<?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>212498</bug_id>
          
          <creation_ts>2020-05-28 15:45:24 -0700</creation_ts>
          <short_desc>Update web-platform-tests/tools from upstream</short_desc>
          <delta_ts>2020-05-29 13:07:26 -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>Tools / Tests</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>clopez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657060</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 15:45:24 -0700</bug_when>
    <thetext>Update web-platform-tests/tools from upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657063</commentid>
    <comment_count>1</comment_count>
      <attachid>400517</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 15:50:12 -0700</bug_when>
    <thetext>Created attachment 400517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657081</commentid>
    <comment_count>2</comment_count>
      <attachid>400522</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 16:35:15 -0700</bug_when>
    <thetext>Created attachment 400522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657114</commentid>
    <comment_count>3</comment_count>
      <attachid>400531</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 17:52:47 -0700</bug_when>
    <thetext>Created attachment 400531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657116</commentid>
    <comment_count>4</comment_count>
      <attachid>400533</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 17:59:11 -0700</bug_when>
    <thetext>Created attachment 400533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657127</commentid>
    <comment_count>5</comment_count>
      <attachid>400538</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-28 19:28:04 -0700</bug_when>
    <thetext>Created attachment 400538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657267</commentid>
    <comment_count>6</comment_count>
      <attachid>400586</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-29 08:29:37 -0700</bug_when>
    <thetext>Created attachment 400586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657314</commentid>
    <comment_count>7</comment_count>
      <attachid>400598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-29 10:28:46 -0700</bug_when>
    <thetext>Created attachment 400598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657317</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-05-29 10:33:45 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657388</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-29 13:06:16 -0700</bug_when>
    <thetext>Committed r262312: &lt;https://trac.webkit.org/changeset/262312&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400598.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657389</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-29 13:07:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/63770438&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400517</attachid>
            <date>2020-05-28 15:50:12 -0700</date>
            <delta_ts>2020-05-28 16:35:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200528155011.patch</filename>
            <type>text/plain</type>
            <size>2311772</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbAppbmRleCA3Y2MyMmEyOGMyMGMw
MWYyYzYwMmI2Yjc5ODE0ZmM2ODQ0MDU0MzA2Li4zZWI4OTNmNGU2NWMzYzBlNTU2NzY4OGJkMzA3
MjViYzIxZWI0MGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNCArMSw1IEBACiBzdWdn
ZXN0ZWRfcmV2aWV3ZXJzOgogICAtIGpncmFoYW0KLSAgLSBnc25lZGRlcnMKLSAgLSBqdWdnbGlu
bWlrZQorICAtIEhleGNsZXMKKyAgLSBzdGVwaGVubWNncnVlcgorICAtIEx1a2VaaWVsaW5za2kK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQppbmRleCAxYTEyMWRmYWM5NTJkZmU4
ODg2YjFiNWU0MWU3YzczMTFkNWYwYjMyLi40NDVhYWUxYjlmYjk3NjBlMzkwZTdlNGQwNDc2YTgw
OGM0ZTNmODBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CkBAIC0xLDMw
ICsxLDMwIEBACi0tLS0tLUJFR0lOIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi1NSUlGSHpC
SkJna3Foa2lHOXcwQkJRMHdQREFiQmdrcWhraUc5dzBCQlF3d0RnUUltaW5IVHprWGhyc0NBZ2dB
Ci1NQjBHQ1dDR1NBRmxBd1FCS2dRUVhWd0pjcVd6ZTZBM1ZZdUFTMEJQZ3dTQ0JOQ1J0dnJvQjZx
cm9RbEY1OEhFCi01U0pIRi9qUVJKUnhmMDUxbHJxK2pmVXhNN2tadWNOTitteVYyemlMb2dhNk9R
TTU3OUQ4dnk4dHFrckxwbnNUCi1jWGtnSHV3dEJKRjQ3dzFZQVBHR0FSZTNLc3YvMkM5c1VWY1B2
bW5WcnpTTVg4NkVzZXJmZnFNM3pmd1oySDNTCi1qeFREU3lJdkpVVSs0WGZ4cldlZ1RpUVFQTnFE
eUxmTzVkQmZhdFQyenRYQ211M0JGaXB1aEdGcHd3Q0ppcktyCi0xeGI2WFBFdVQwUEN6VE5wZVNV
UnBYRktITURNa2NqT2tOQVV5Z0lFdytMZzdldFZmTGNzZ0J1ekVBM1JXd2YzCi1PTVkxbVRCSmx2
eDZ6WnhkWDdhMFFteGVyVURrRFM5WVlBRUdTRmErRng2Y0dXNVB5ZWVmOXh0bEh4WkhpK3BtCi1U
eEN3Y3ZKeVhxZUQ0Z1dtM3MxZ3dPamk1V21Ydm8yRWlyY3hmU0trOFRVd2FweGZDWVFiT2pRSVBh
SG5FR29hCi1DUWhTRWdEWDV1ZndzWEo5L3BTUDZralcreStmMGduaEhWdUtKS3NPQm1qZzZpcXdu
cUVodyt1TkZXS0tsL01vCi1URlQ3Q3JheUpUdm8rOVVkUVRKVjlNQkFzTVVRUzdkK0hIOWtOT0Fu
L2hmbUV6ekdVS1ZUWjB6SWQwZktIMTNwCi1Ubm9ZZ01ZYm0yVXJuME5YQkZPOFJ2elkzS3BLeVJo
TWNPTEt4a1BWVWpLVUE1QnVBdjZyY3ZNZmxJNkhuNXdVCi1xUE0rdUVDU2dkT25OZUltaTFGZitj
VzhkVEdHUmIraWhhK0VuQUJvWDN3UjVPdnpnQ1lIZUVOSmIzMkZVb1ZzCi1JRDJUNU1adFFOQXJr
aXMveFdaN0p5UGJtc1FvMnd5aUZMYXNYOFdnaCs4TWdGeG9scHZqbFgzL1FkVFRKcUVjCi1yb2ZW
R09QT21mb0hvM2VZTkpPbExiYUpUREllOE9ySzQ5UElldTFnbTh6cUIyV1lxbUYvM0FZeTRJQUl3
VVl1Ci1yYlB3VUM5SHljZVJQU1llUE05V2YxeE0ycHJvSzNubXA2YXBkSENSTmpiZDQ2ODlFTG1C
OTBiMmF3Nk5GaWFtCi0zdGFLUG1GTGIvdnQyWXhncU90YWdQclRsYzFRTEhCS3JzbnBnL0JoY0Jq
dXBxUktHRm1YQ0p6aVBJYURLdkFzCi1qdGc0S0RvOGpOSXhtd1FBd0VWNCthSDBoaE11bXhhOHlh
WG9DLzNHNkp4RDJzZG9yYU9wK3ZyVHpqVU1rSW9jCi14THFXbDhHSFZMRjA5ZlpKNFN0SmZJV0lP
bW1waWNTeFcxdkRJQ2FadVUraVB3bE5PekY3c2VQUmtpeGJhckhyCi1pcVRsTEcvLytIdXEvbjlJ
Unhoem1TT3VyNjNXTVhGUnkwc0tXNVcrdVE5eHNuVjhTZGp3Um1BR0x0blpIcTRZCi1OT0NRLyt5
T1JsNHl4a1B2VjAxSHlrQWw0Q1J0UEJHUis0WkM1TktocHloSmJ1NldjcXdpWHlBZWhVL2NQZ0wr
Ci1oOE53RW95UCtPSHJ2RVlkeTRvY0JuSnEvNDM2V3d6ZldpczhuSUc0YlNsRDNEU0VnSkYvUVVt
cTRpL0VVcS9BCi1ENlNmemJGcFBHdFRqM0taNkQ4RFByd1dHNjhPQ0ZzcVJXOVlFdlVJSzhKVDI2
NUJOM016STVpMC8razRDZEFnCi1hU2FpQzk3cWc3cUphVk05YjlFSHNjVVhSL2ZlRnh2TzVRa2tr
WTVDVFUzQnhiMHMxSTRSdzJNWW9BZE1HdGJBCi02bWR6bVJWWW9SdjlOTWR6TDZ6T1RvUFU2b09n
Nm1iakhnWlFnTmQ3dzhHdFRGVytzZnNsTE9YWEM4ZXJ6YkhsCi1CeVFKR2NGR3RLVEJVRCs3Vkha
aHB3TTdiUE9idHp5QTJyMFViUzFReDBJem52dWJkRlZjWHlFN2RJalc3Y0FnCi1JYkJ6S2VpRVJ3
cHUzck1xMmJZVlczREEzM1ZsclRmcGpYdWpoSHYxaVgxNWk2cXNXZDdPdFp3Nng3VGNjSDFaCi1q
ZG1oOVhCOXhEeWRuc3MzdTlEd0dSRU1ZQzlUZFBaWS9udWk2bGdDampPaGFUYXVuTXVpZ0ZCTVdV
QmtEbEliCi11anUrQXR2K1BTQlQ5RG1UeVRRR2hQWlJJdz09Ci0tLS0tLUVORCBFTkNSWVBURUQg
UFJJVkFURSBLRVktLS0tLQorLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0K
K01JSUZIREJPQmdrcWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSUF3c3VaN3lK
eExzQ0FnZ0ENCitNQXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDQ0tSc3dMWHNo
OVBCSUlFeUtPdDQybUxlTDZoDQordVBCaDYzZG9Ib3FKeEI5NXB3cHRSNjNmcXAyUmZ2WlVVemZy
V25JMmRubjB4UnRSY1BtZjUyQlI0c2xpSUpKeg0KK0sraDEwVk80YWlsRzRtTWVQKzJWUEhGdWZs
UW41eGdTQzVWZDdqZWRWMFZleWNNcjBnZloxWGJjTXVWSXJyVzINCit3UVZNL0RiYjNBNk5IVDV5
VUErWlR5YW0zU1loMFZyQkxwOEZRbi8yMnhpdm1qQzVqcVpiRnF2VWwrTm5CRjBIDQordTkrbWRD
bmxZcWNxOXFUMWIyaEMvVlZTZU95aUNaWFZFRThYbjd0ckxHbFNHSWpmZ05XbWRISllhZEw5SnVX
WA0KKy81eEVVMy9NWnRmajdEZmFyWXZKWU9OVjlwbkJFdXVjV1VqUkpnYlBnTXVxWjJzYjdJcC85
L1haSHZnRmdWcnkNCitMSUplc0xpRmxrOEVtZTdrREg4RVBueTRJNVJVdXVmdE9mWHo1c2VtQ09p
UUtxc1Y1aktsQnlQeFlNZGgrQURWDQoramlvMHVFNTVMYjRNR2ZoeFd1emNXRC9Sb3Y2SXdJZzB1
dVhXcEV6aktyMEp5VmwvODR3Z25pNUhxMU85RWdlWQ0KKzA3VkJRT3VpRXptaGxtVkdsa3FpMS9r
RkFaK1BrZE5VU043SlBndm5WQS9WZ2ZpZ3RsY0lKOWFtcHNxYXUyeW0NCitLV2gzYlVLaVYwZUpW
UEEzL3R2RWRCb29Ybis4RFFidDQ0c3lEN1A1Mk1mbC9iUzJMYzV5Nm1QdHRWTy9tRHp1DQorWGc2
Ym9ETnphWEIvSERVRjJUZDhSYWNrdnFySFBLS1hYb0F6OXc4c3hZRkdlOEpWZXVPd2ZPNUhYNkpI
eXNjZA0KK2NLcUVaTk1CTGp4ZWRwTDBFWk16cDcyYnNlMVhjdnZJdi9YQ2habmZLMllmaGZ4Y2wz
UklpVFB4M3M2RmVlSW8NCitUc3JOaVRGOGQvY09MSzExLzAyaEVVZG8ycjVqZzhQSG9abVhsMEE4
bjZhYlhWY09uV2k1TTF0RWpOZHV3S002DQorQVFVUlk3WjlBbFNzUVh3NnhqMno2MHppOCtJd3Uz
dGdENEhQN05xd1pSc0Q5OWxhMDlIZGNJMGNTbWVhRU9URQ0KK0J5clZ5cW5PQnI4WkpWTUx1ZTR5
TTcrQmRsR1VhYlRXKzB1MHF5OVExQXh1ZVF6VW1FNFZGS3RmalJxSVVsQUENCis2SHJmRXNPZTdI
UkxLeG5kY3RKN3VCWEk1Z2h2M3pHZDB1Wm1SeWpYc0VqR3IySnFhWmExSGV4cmFCL0dIWEdEDQor
OVBaVEpXUzFtTDhLRTNvMWhTajF5VGdsaGZoSjdXZi9lcmZCR3pjdFVQS1FCa2twelZxWk1TNlky
QUlIVEI1Rw0KK2Iyd294L2x3dkZBMmNsb2RvVDN0YmVEbWhOSHhJdUdsT25ZdGNQaElMRDdNUmVE
TnVsMVI5SEwvU3NXN0FCNisNCitxNlI1NFBzU2NoTmdGaExTZHowcTZhelhVbGs2bWNGNUJnUk92
Z3lvYSs3R3YwVWxiU1FiVXVWdUxEMGszU01VDQorRG1wci93OU9tcVVzT2N6WWxuUFdvdmgrR2JW
aHplK2VGVE5JR1Yvd1ZOTkpRUkMxUlVOckMvZThhZjRjcC8vcg0KKzZqaVE1ZU5mOHJWQjhWTWVN
WFJVSHhQd1JYdEZWRUN1dVRkTWRQbjRVMlRISm8rNDVaMGJWRzl5dFo2Q1VQMG4NCis1NkRXSDYv
ZEtlSWl2RUZ6L2JZNG9DWm1zSWZrak5lbzU0NUdSZmhGTk5HUmdyZGpDZXZyMHBKdFk0aDVWakky
DQoraVBVTDg1UjB4emU4b0NUMGEvR0hZNlh2cGJuUno1cXJ5MWMyRG9SM0llRFFrcTl5UWpBN1dh
dXRUYnA4VXpDZA0KKzFTN1JYSWtyelBDZzRYQklwUXU1aHN3S0M3Vy9VaUg3SDkycHR5bDJncmlD
N0UwSk9mWi9Ndmd4WnBGaTh1cGUNCit5WThqMUdESWd3cHRmOVFHTGttL2Vwdi9RTTZMMjV3R0VF
OTE2elErM3JrVVhUWFQyb1BJaThqYVFSc2xvWGNpDQorTkkzbDFGRkVRak40VjRpdDNHMnRWbmVn
Y0FRZFg5bnNaOTdwQXErTk9LMjhPaU45a0ROOW9sVitBMExNZTc1aQ0KK0JJQi96UlVmSWVnL1RT
YllpRlYyY1E9PQ0KKy0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCmluZGV4IGUxYjVhZGQ1NGU3OTdkYjFjNmMxZDNl
ZGE5NjFhZjNlNTRiYzdhNzcuLmVlYmE1MjhkMjZkMzU3MzIwYmE0MmY1MTZmMTdlMzI0NDdhODNh
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2VydHMvY2FjZXJ0LnBlbQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KQEAgLTEsMTI1ICsxLDM0
NCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlXNXpDQ0ZjK2dBd0lCQWdJREJi
RkhNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXli
UzEwWlhOMGN6QWVGdzB4T1RFd01UUXhNelE1TWpsYUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQjB4
R3pBWkJnTlZCQU1NRW5kbFlpMXdiR0YwWm05eWJTMTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05B
UUVCCi1CUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2Zq
eDJOV2svV0ZFTG9jCi1EblV2MnpScDVFMjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09u
NE9pL0tOSm5ERTJYZVNqUUgvYXdQCi1NaTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjEr
V1VTYWViSncrOHdITG9KVVdJYmVVN0tMVmdYc2NmCi1oTEdCUUI2cC91UWV3em1tYjFiVWJpekYz
R25iRnhTYkZna0szVHRmOU5wSHFxUnRnVUFhWnRQOWVkYS9rUlA3Ci1qMGlJUW5jQ3lod1VNY0Vn
LzlZc0tlTE9TVUd6TGpVU0NKcU9JdlVMblF3UkJZaklFd3VpMDBxZENocVY4Y2h6Ci1LYmszMmRq
NnZMRnMzdDdQK3hvai9KalpYWmlXUUZUekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdH
Ci1BMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpj
YU1FY0dBMVVkCi1Jd1JBTUQ2QUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1S
c3dHUVlEVlFRRERCSjNaV0l0Ci1jR3hoZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVC
QU1DQWdRd2dnb0ZCZ05WSFI0RWdnbjhNSUlKCi0rS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdGNElWYm05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wTUJlQ0ZYZDNkeTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2haM2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1C
aUNGbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0Ci1j
R3hoZEdadmNtMHVkR1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1C
eUNHbmQzCi1kekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBM
WGRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQnlDR25kM2R6SXVkM2QzCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25k
M2R6RXVkM2QzTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1NQnlDR25kM2R5NTNkM2N4TG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDNkekV1ZDNkM01TNTNaV0l0Ci1jR3hoZEdadmNtMHVk
R1Z6ZERBZGdodDNkM2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCi1kM2Qz
TWk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRj
R3hoCi1kR1p2Y20wdWRHVnpkREFmZ2gxM2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWdnaDUzCi1kM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJ
ZWQzZDNNUzUzZDNjdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2Rt
VXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJSUllZDNkM01pNTNkM2N1Ci1ibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wTUNHQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5S
bGMzUXdJWUlmZDNkM01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkz
Ci1kM2N4TG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNk
M01pNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xu
ZDNkeTUzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtM
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ1NDCi1Jbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdKWUlqZDNkM01pNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXdKWUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1i
M0p0TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3Ci1LSUltZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0tJSW1kM2QzCi1Mbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdLWUluZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNtQ0ozZDNkekl1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQXBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1Ci1iM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCi1ZaTF3
YkdGMFptOXliUzUwWlhOME1DdUNLWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZ
aTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMyQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpz
WVdRdWQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1Ym05MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG5kM2R5NTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNk
M2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJs
YzNRd01JSXVkM2QzTVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCi1aV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQXdnaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4
Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6Ykhk
M2EzSnhhSFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1Ci1kM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRi
aTB0YkhabExUWnNZV1F1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQXpnakY0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1M2QzY3VibTkwTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wTURPQ01YZDNkeTU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNu
Rm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0Ci1i
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05J
SXllRzR0Ci1MVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3Ci1OSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2Qz
TVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1S
ek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3T0lJMmVH
NHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyCi1iR0ZrTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTURpQ05uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6Ci1OVE5z
ZDNkcmNuRm9kakk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZ
V1F1Ci1lRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNRHlDCi1Pbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1V
dE5teGhaQzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNRd1I0SkZlRzR0TFc0NGFqWmtjelV6Ci1iSGQzYTNKeGFIWXlPR0V1
ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1
MFpYTjBNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlD
Ci1FWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZYZDNkeTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2QzZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzCi1MbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDR25kM2R6RXVibTkwTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRH
VnpkSUlhZDNkM01pNTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCi1M
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUliCi1kM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNk
ekl1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUliZDNkM01pNTNkM2N4Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNj
dWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekl1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0Ci1kMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NIbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUll
ZDNkM0xuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXVi
M1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsCi1jM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NIM2QzZHpFdWQzZDNNUzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6
RXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0luaHVMUzFzZG1VdE5teGha
QzUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0Ci1iaTB0YkhabExUWnNZV1F1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0Ci1kMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5
Ci1iUzUwWlhOMGdpTjNkM2N5TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWpkM2QzCi1NUzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kz
aHVMUzFzZG1VdE5teGhaQzUzCi1kM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRi
SFpsTFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1
TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1V
dE5teGhaQzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluCi1kM2QzTWk1NGJp
MHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1Ci1M
UzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5t
eGhaQzUzCi1kM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0
Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMx
dU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SXRlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsCi1ZaTF3YkdGMFptOXli
UzUwWlhOMGdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJz
WVhSbWIzSnRMblJsYzNTQ0xuZDNkekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVk
MlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5kM2R6RXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVM
UzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUw
WlhOMGdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCi1MWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1
Ci1ibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyCi1NamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5Ci1PR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDTW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yCi1aSE0xTTJ4M2QydHljV2gyTWpo
aExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprCi1jelV6YkhkM2Ez
SnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0Ci1i
aTB0YkhabExUWnNZV1F1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lY
Um1iM0p0Ci1MblJsYzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0x
TTJ4M2QydHljV2gyTWpoaExuaHVMUzFzCi1kbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuaHVMUzF1T0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1na1Y0YmkwdGJqaHFO
bVJ6TlROc2QzZHJjbkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0Ci1ZUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlx
MXZBCi14amM4aWozNGk0Yis4aW5WQlZ3VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6
K2RiMzZVNll3SGFrCi1JM0hZaGlwUE1CMVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQ
L1I1azl2dDhBRW0wWm1FV2tOWXRMCi1vcGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4
VnErZnEvT3p3K1lRYlJiVTFLbEhDTmF5aXN2UWE0Ci1UTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFh
NlJuSXdvOHp2Q3FrMFpSUEF4ZXVsZEFlL3UxUHp0ZVhSekVIVEFFCi1ETVZMTXdNNzUyYkxGdWZ2
MUdSQ1pOSEVMWkt5aFVvRnJQMzBBcUU3cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCi11NS90SGVm
UEtEN2JtL1k9Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklD
QVRFLS0tLS0NCitNSUpBR3pDQ1B3T2dBd0lCQWdJREMvT3VNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1C
MHhHekFaQmdOVkJBTU1FbmRsDQorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5
TURJNU5EZGFGdzB6TURBeU1UVXlNREk1TkRkYQ0KK01CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JH
RjBabTl5YlMxMFpYTjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUINCitCUUFEZ2dFUEFEQ0NBUW9D
Z2dFQkFMOTlhV2szZFJpWXhJak5IbHhMelpMTXFhZmEvd0FyRzVROVQyRUx4YjByDQorT2dEa1ZV
TXBpVkJtQTRyV3BHSXU4UmdlL3RIb2EzRk03NnZreHl1M0I2L3NJZlNQV3BuVTdZTi9QUTk0YmpC
NA0KK1dUVUZRUjBMQm5LVUdiWTFYVnhlNUFPMWQxZlkzdEFtejNOSEE0NmlmV3piVnFSUFpTelhw
dU5nNWV0Qm1mSjINCitmWjZyZVl0Z1M5VklxdVVvUFNBRk1LTXQzSjQ2YkQ2VlA4UVBjVkZ6WUlM
MERyblJscWQxb29NRkZCTWl6WHE2DQorOVpTbFkyU1hBK001N2E0bExtdlVUNTFmNVcvQnRCN3Vj
S2JhT254ZVpaTFlBTDkrMCtycDkyMkVlMkRyb0l0Rg0KK01na0FRUWN2Y3VEb3RXUzg2VmdTRjdk
UFRqUTEyRS83ZUgrOW9QUUZTeHNDQXdFQUFhT0NQV0l3Z2oxZU1Bd0cNCitBMVVkRXdRRk1BTUJB
Zjh3SFFZRFZSME9CQllFRlBhNTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc01FY0dBMVVkDQorSXdS
QU1ENkFGUGE1MmhZSEJidHZ5V013eG1kQXl3UFRIcERzb1NHa0h6QWRNUnN3R1FZRFZRUUREQkoz
WldJdA0KK2NHeGhkR1p2Y20wdGRHVnpkSE9DQXd2enJqQUxCZ05WSFE4RUJBTUNBZ1F3Z2g5akJn
TlZIUjRFZ2g5YU1JSWYNCitWcUNDSDFJd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElW
YjNBeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CZUNGVzl3T1M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBWGdoVnZjRGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3RjRJVmIzQXhMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmVDRlc5d015NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRE
QVhnaFZ2Y0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwDQor
Wm05eWJTNTBaWE4wTUJlQ0ZXOXdOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEUXVk
MlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdGNElWYjNBNExuZGxZaTF3YkdGMFptOXliUzUwWlhO
ME1CZUNGWGQzZHk1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGczTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPREF1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJ
V2IzQTVOQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NERTJMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQmlDRm05d05EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNB
eE55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjeUxuZGxZaTF3YkdGMFptOXliUzUw
DQorWlhOME1CaUNGbTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5TXk1M1pX
SXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBWWdoWnZjREk0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUJpQ0ZtOXdNVE11ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpOaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFZZ2hadmNERXhMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlD
Rm05d056a3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMg0KK01TNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQVlnaFp2Y0RRNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3
TVRrdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwTWk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6DQorZERBWWdoWnZjRFEyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNemN1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3R0lJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFZZ2hadmNEWTJMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmlDRm5kM2R6RXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBeU5pNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVln
aFp2Y0RZM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpNdQ0KK2QyVmlMWEJzWVhS
bWIzSnRMblJsYzNRd0dJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitj
RFl5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3DQorR0lJV2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESXlMbmRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNQmlDRm05d01qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdHSUlXZDNkM01pNTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVlnaFp2Y0RFNExuZGxZaTF3
YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJ
SVdiM0E1TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE16TG5kbA0KK1lpMXdiR0Yw
Wm05eWJTNTBaWE4wTUJpQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXoN
CitNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNETTVMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNQmlDDQorRm05d05USXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2REQVlnaFp2Y0RnMUxuZGxZaTF3YkdGMFptOXliUzUwWlhO
ME1CaUNGbTl3TXpRdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0dJSVdiM0F5TVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGN4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJp
Q0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTROQzUzWldJdA0KK2NHeGhk
R1p2Y20wdWRHVnpkREFZZ2hadmNETXhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05U
UXUNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVlnaFp2DQorY0RRMExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRVdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRdw0KK0dJSVdiM0F6TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZERBWWdoWnZjRGMyTG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNVFF1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNUzUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZ
Z2hadmNEZzRMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qQXVkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzUXdHSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RV
eExuZGwNCitZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0dJSVdiM0ExDQorTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREkzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQw0KK0ZtOXdNVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3R0lJV2IzQTNOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTNMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdH
SUlXYjNBNU15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVM0xuZGxZaTF3YkdGMA0K
K1ptOXliUzUwWlhOME1CaUNGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0Ex
TXk1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREk1TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUJpQ0ZtOXdNalV1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NEazNMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQmlDRm05d05ERXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek1pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0Rjd0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1C
aUNGbTl3TmpBdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TWk1M1pXSXRjR3hoZEda
dg0KK2NtMHVkR1Z6ZERBWWdoWnZjRGM0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdP
RGt1ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXhNQzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2hadmNEYzNMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05Ua3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBeA0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQVlnaFp2Y0RZMUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TmpndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERB
WWdoWnZjRGd5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOaTV1YjNRdGQyVmlMWEJz
WVhSbQ0KK2IzSnRMblJsYzNRd0c0SVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWJnaGx2Y0RrdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5d05DNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorRzRJWmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CdUNHVzl3
TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBeExtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFiZ2hsM2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wDQor
TUJ1Q0dXOXdOUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F6TG01dmRDMTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RFExTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrMkxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRGd6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RN
ekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTJMbTV2ZEMxM1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZERBY2docDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RZeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTRMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RRekxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEZzVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl3TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RGt4DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRFk1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RN
eUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETTNMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGs0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emREQWNnaHB2Y0RFNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzINCitM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV6TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1DQorZEdWemREQWNnaHB2Y0RjNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwM2QzY3lMbmQzZHk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcyTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjM0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2do
cHZjRFUxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreQ0KK0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUN
CitkR1Z6ZERBY2docHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0Rr
MExtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTBMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE13TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHAzZDNjeExuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTFM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkwDQorTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpk
REFjZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF4TG01dmRD
MTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeUxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjDQorZ2hwdmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGN5TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJeUxtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2
Y0RZM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3dMbTV2ZEMxMw0KK1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWMNCitnaHB2Y0RNeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXpM
bTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREl6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNMQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNERTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFl6TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNExtNXZkQzEzDQorWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEVTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0K
K2docHZjRFl4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMExtNXZkQzEz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGN3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RFeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNERTFMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkxTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGczTG01dmRDMTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RjNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwM2QzY3UNCitkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd5TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrekxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwM2QzY3VkM2QzTVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
Y2docHZjREl4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjeExtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZERBY2docHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RJMA0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RVNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
UTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0yTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRH
VnpkREFjZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREUzDQor
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjMUxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEZzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
Y2docHZjRFUzTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBZGdodDNkM2N5TG5kM2R6RXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdI
WUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDMNCitkekl1ZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWRnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJt
DQorYjNKdExuUmxjM1F3SDRJZGQzZDNMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdJSUllZDNkMw0KK01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1
TFMxc2RtVXRObXhoWkM1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTNkM2N4TG5kM2R5
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorSUlJZWQzZDNMbmQzZHpFdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQ0NDSG5kM2R5NTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWhnaDkzZDNjeExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUw
WlhOME1DR0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lZSWZk
M2QzDQorTWk1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N5TG5k
M2R6SXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNTQ0luaHVMUzFzZG1VdE5teGha
QzUzZDNjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0pJSWllRzR0TFd4MlpTMDJiR0ZrTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWtnaUozDQorZDNjdWVHNHRMV3gyWlMwMmJHRmtM
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ1dDSTNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUNXQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGwNCitZ
aTF3YkdGMFptOXliUzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JH
RjBabTl5DQorYlM1MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wTUNpQw0KK0puZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNQ2lDSm5odUxTMXMNCitkbVV0Tm14aFpDNTNkM2N1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOME1DbUNKM2QzZHpFdWVHNHRMV3gyDQorWlMwMmJHRmtMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBcGdpZDNkM2N5TG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWJtOTAN
CitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ21DSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01
dmRDMTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQXJnaWw0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXRnaXQ0YmkwdGJIWmxMVFpzWVdR
dWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQytDTFhodUxTMXVP
R28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
dmdpMTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1i
M0p0TG5SbGMzUXdMNEl0ZDNkM0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlp
MXcNCitiR0YwWm05eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4
YUhZeU9HRXVkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1ZDNkM01TNTRiaTB0YmpocU5t
UnpOVE5zZDNkcmNuRm9kakk0WVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3gNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNRENDTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzDQorZHpJdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd01ZSXZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXNkbVV0Tm14aA0KK1pD
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TTRJeGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXkNCitPR0V1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6Z2pGM2QzY3Vl
RzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNRFNDTW5kM2R6RXVlRzR0TFc0NA0KK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDTW5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1do
Mk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDDQorTW5kM2R6SXVl
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0K
K1pYTjBNRFNDTW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRs
WWkxd2JHRjANCitabTl5YlM1MFpYTjBNRGlDTm5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1q
aGhMbmh1TFMxc2RtVXRObXhoDQorWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBNGdqWjRiaTB0
YkhabExUWnNZV1F1ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXdQSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzF1T0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0DQorYmkwdGJq
aHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdG
MA0KK1ptOXliUzUwWlhOME1FT0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVM
UzF1T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUVl
Q1JYaHVMUzF1T0dvMlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBVEJnTlZIU1VFRERB
S0JnZ3JCZ0VGQlFjREFUQ0NIVnNHQTFVZEVRU0NIVkl3Z2gxT2doRjMNCitaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVZiM0F5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEa3VkMlZpDQorTFhC
c1lYUm1iM0p0TG5SbGMzU0NGVzl3Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXhMbmRs
WWkxdw0KK2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZX
OXdOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlWYm05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdoVnZjRFV1ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDRlc5d05DNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVZiM0E0TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hWM2QzY3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdPREF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09UUXVkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TVRZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREF1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d01UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpJ
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d01qTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpndWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdNVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016WXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TVRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdOemt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qRXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TkRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVGt1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05ESXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TkRZdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09UZ3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpZdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01q
WXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TmpjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdOek11ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016Z3VkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3TmpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVGd1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TWpJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d09URXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpNdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016QXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3TXprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEl1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05ETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3T0RVdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelF1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRm05d01qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpFdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1ND
Rm05d09EUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpFdWQyVmlMWEJzWVhSbWIzSnQN
CitMblJsYzNTQ0ZtOXdOVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05Ea3VkMlZpTFhC
c1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TkRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdO
RFV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016VXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NGbTl3TnpZdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFF1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRm05d09ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0Rn
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNakF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxj
M1NDRm05d09UVXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRFdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0ZtOXdPRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UVXVkMlZp
TFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0Zt
OXdNVEl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056VXVkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3TkRjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVFl1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d09UTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TlRjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d05UTXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWprdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdNalV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09ETXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T1RjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdOREV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016SXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TnpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TnpndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGt1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d01UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpjdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01U
VXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpVdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZtOXdOamd1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UQXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3T0RJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0dXOXdOaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdPQzV1YjNRdGQyVmlMWEJzDQorWVhSbWIz
SnRMblJsYzNTQ0dXOXdPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOQzV1YjNR
dA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dYZDMNCitkeTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNaTV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dXOXdNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dYZDNkeTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0dXOXdOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNamN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF3DQorTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NHbTl3T1RZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNExt
NXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE15NXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d016TXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
VTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2QzZDNNUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOakl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdo
cHZjREU0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT0M1dWIzUXRkMlZpDQor
TFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHB2Y0RnNQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk1DNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d09UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTVNUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOREl1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdocHZjREkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0EyT1M1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5
DQorYlM1MFpYTjBnaHB2Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU9D
NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01Ua3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEYzINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIz
QXhNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdOemt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocDNkM2N5TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SWFiM0E0Tmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpjdWJtOTANCitMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhDQorYjNBMU5TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhk
bFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYWIzQTFOQzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRE0wDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWFiM0F6TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbmQzZHpF
dWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlhYjNBMk5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01q
QXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTBNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dt
OXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREV3TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzTWk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMz
U0NHbTl3TWpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVeQ0KK0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBM05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwN
CitjM1NDR205d05qY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3dMbTV2ZEMx
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTROQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV6TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0F5TXk1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3TXpVdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RF
MkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaQ0KK0xYQnNZ
WFJtYjNKdExuUmxjM1NDR205d016Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
VTQNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsDQorYzNTQ0dtOXdNVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGt3TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RFMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk5TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05UQXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JT
NTBaWE4wZ2hwdmNEWTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNR
dGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdocDNkM2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0TWk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RNdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNB
eU1TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056RXVibTkwDQorTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0K
K2IzQTRPQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNalF1Ym05MExYZGxZaTF3
YkdGMFptOXkNCitiUzUwWlhOMGdocHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0EwT1M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d016a3VibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJYWIzQXhOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOelV1Ym05
MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWENCitiM0ExTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJ
dWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RneExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2h0
M2QzY3hMbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMNCitkekl1ZDNkM01pNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUz
ZDNjdQ0KK2JtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0huZDNkekV1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUllZDNkM0xuZDNkekV1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
NTNkM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSDNkM2R6RXVkM2Qz
TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDMNCitNUzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtDQor
YjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJ
bmh1TFMxcw0KK2RtVXRObXhoWkM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMx
c2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRi
SFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NJM2QzZHpFdWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeQ0KK0xuaHVMUzFzZG1VdE5teGha
QzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDMNCitkekl1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0Yw
DQorWm05eWJTNTBaWE4wZ2laM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWeg0KK2RJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSjNkM2R6RXUNCitlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSW5kM2QzTWk1NGJpMHRiSFpsDQorTFRac1lXUXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2lkNGJpMHRiSFpsTFRac1lXUXVkM2QzTVM1dQ0KK2IzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3ho
ZEdadmNtMHVkR1Z6ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZ
WFJtDQorYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpJ
dWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitj
M1NDTG5kM2R6RXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIz
SnRMblJsDQorYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZp
TFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExu
ZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0
YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdqRjRiaTB0YmpocU5t
UnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4w
Z2pGM2QzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjAN
CitabTl5YlM1MFpYTjBnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01
dmRDMTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5T0dFdWQzZDNNUzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekl1ZUc0
dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2pKNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorZDNjeUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVl
RzR0TFd4MlpTMDJiR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJpMHRiSFpsTFRac1lX
UXUNCitlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ09uaHVMUzFzDQorZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlT
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5
Y1doMk1qaGhMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Seg0KK05U
TnNkM2RyY25Gb2RqSTRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJW
aUxYQnMNCitZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUllVHUySXlU
cEFQYlVZQ3hmUjNUNkJxDQorZDVZbW8zVEc4cG5acnNZcXpIdENJdkdvTzgxSkVJSmRoUHlpdGJK
ZC91c2J0a0VUaExoYWZlUWk5Um1pQ1pZdg0KK0NVZXgwSWRVeEhhVzM2Wng0a0l6TkxmMDJ6Y3h3
Qkp0QUZwZi95QXNRZEtJSTBaRk5HUjFXa1JxbmF0Zno1dHkNCitTSy9TNTkzTVk5c083eGR4c1Bj
UW5KN1dQYVhLNjYweU8xR290Ymg0YlJ3cGRMOHVKdkZWcGU2K1VBT1M2NE1rDQorakt5Rkl5M1o5
SGxiK0hQVjB3RkJTODlXcXFFZkFvTGticmYwS0Vqb0JydklsSVhmOC90TG9nVFRVU2JaZDY2Nw0K
K3FmODhTWC8wdFlWTUVZQzYvSVVpeWlnQXgvaE1pdVdDRENTMTBtV0x3WWZQczJKd0RRUmxTSW92
ZU5CcCt3Zz0NCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxh
dGZvcm0udGVzdC5rZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCBiNjJhZjIwOGMzNGNi
MzE2N2FlNjQwMzhjZGZmNjk2ZjA0Nzg5M2ViLi5jZmFjY2NlNDIzZWRlZGRiODkwZDRhODA2ODNj
NzQ3NjkyZTIzZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1w
bGF0Zm9ybS50ZXN0LmtleQpAQCAtMSwyOCArMSwyOCBAQAotLS0tLS1CRUdJTiBQUklWQVRFIEtF
WS0tLS0tCi1NSUlFdmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1NrQWdFQUFvSUJB
UUNyWlhWWG1PUGxxby8rCi0yeGoxNVBnY1pHSEdvL2JvZmlRUTNnbDZKTDFWWDFHcHRZSU5oVHEy
c1VoZk44dENiK2NIeXphcE85b1Vtd3F3Ci1wNVVwN3RKNElwN3VFMS93d1N4VmN2Q2F3RzUvUE41
aUQ3SDJ3c21FcHBIWE9jM0xsMDg1L2d6ZXMrMStObitxCi1BUm1wMWJGL3ZqcGxENlZkSDJyQlcz
c0ozREFvQmFvWGxBTWZlUkFGRHBhcWErOWx4TXJNNVdrVUhuZFErdUVNCi02a1p5ZXZoeXAwMlhE
UDB2THdOQ3RQTEdCMGVtQUFmQzd4cHdSR1ZHU3RFc1VoZi9tYzl5Tk5hS2dxQktJMG5vCi1vVm51
VTNSR2RLSFAxOHZjanRCU1YwbFlnamZnOWEwN09CdTFoZ1FmZmhvZmkyQnlkZmFDcEJBTXpGaGx1
MXV5Ci1zNmFoVmtKcEFnTUJBQUVDZ2dFQWZtdnp4WTBNYkZjR3AyRk1ZL05qM3UxY0FYem5uazJN
cExSaUlTb0FUWHhsCi1hOXhwOVRjVU83VkFRSnVTM1lwVXlyYmx0cVpqRVZmYTVycDFsOXlFZWdC
dllnUUFmRURBUnJibEtnQk9nS09SCi1GSnVuRlBCUVcvdlJEd09mL0UrN0xIZHJYc2t3b0N2cXRx
YmhHeGg0T0ZWRUZVOFpGanNhTDAwZTBBTU5zalpsCi0wT3NFT05sSUg0bkNhN0U2RFRhc0h4YzFW
a0hRcjN1dkJsNS80SGZPYzA1dHIrWktsTVlYekFQV2tMMHNDMjE2Ci1EcXk0QXhKME0wYXg4QllF
WnVvMGdxUW1NQW9uSlRrRW5weW9ENHo4OVM4Nzd2RnA4dzFWUGJHWWtWNDh5alYvCi1JN2ZRNllq
dDN5ZythcytzNGFyR0VzVUIwbCtYQXBCWVlZL0orcWNZVVFLQmdRRGVkN0RPTUpVYzNrUFRGRWNO
Ci1wL0ViU2g5VFh4Uy83NGNJeUdpZDlJRWlSRUpZeFl2OGt6MEtwbEd1Sm9sSVEzL0lrOVJhYzZC
M1R1NFdrVzBnCi1UUGJOdW5ZRXN5ZFpCQW5hUTRlQVZkT2Z2UlE2VjNlQloydkVyc0hKUkZhajVj
T2Nlc1VYeEJaSTZtMnRRRVN4Ci1kQldGRE5HOWt6dHIwSG1hTDZQdXo0elpJd0tCZ1FERk94ZlI3
RmNwR2R3NjF6aVNzWm10dmtmNmVwa0czK291Ci11aFk1MEowVXJUYks3VHVpbWtvUncvWEhlQmU0
ZGIrZWpPT3VMRDlRRS95WHZtdEVXdXlVVFRZT1Z2WitIdU5qCi1ScDNrZGkxR3VXWG42Z1J2ZGxr
ZjlYd1c3akhtZ2twYkE1QSt1RFhzM0VZWWExOEx4UE5mTVN2aHlIZGtGblVHCi1hVHp5WU5wZEF3
S0JnR3YvUU5hbjRRdDFud2x1VTV2K2hsNlFHaXI0QW5PMnpSL25ZbG9qNHppR1dJc053NHBtCi0x
QUJDZzI1K2lMQ0xEQktNS1UrTHlEK0RFclBqLzB6cDcvb3BaYmVjWFNLcWdqbnlCR3E1djVWUlRl
dVFvSlF5Ci1aNi9BZ3BTNVZ6SVRqV1YrZUFXMGpIanpUVEVJL1JBRVlab0lnaDE4eHlEc3dNdW9D
dllZemJCdkFvR0JBTU0yCi1JL053K3l3QkhvdFdyZlh6dHVuU3BpZHk1TGQ3Tkt5ZkhwU0d1SkxZ
aHB6L2hjRUErVUx3TS9vRUVXWlBsU04yCi15M3QrN0FOMFpOUkVjcU1yWTNHOW9qMDdNYW5QSkww
RURnOHNNTkFKZktXNGFEOXlZZkJSNTBwQzVEMEV4RmVsCi1CVVl1eWFEd3ZLZzZ6YzQyVjdQbVZV
cWFRaUZjWU9QQmtjTk12WlRGQW9HQkFMQnRkdDBpSXZ0Qm9wcCtJUWFWCi16Wk1BNVpRSVE1bjV2
MDcxTEthMXM3YXIzK2hJb0RSc1piTTdYa1VJQTh6UWxyd0ZSaGJVNVlGTmNicG9vUVNtCi03ajQr
Zkl1ZGNweGo5dEFNR0FiNXlnODlrMURqVHk3RlVXTDllbEdJZ3ZKTXFnRjZJUTUzK3ZSOHh3R0R5
UUxCCi1zUDVtaXpGMXdpNDdEWVBKUWNEUkN6VSsKLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
Ky0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQ0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFR
RUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQy9mdVlxYkpMWUtvVHcNCitGemF1blNKMzYybXBBN0Jv
V09JTWlURmtHSzF0WkFncHoycnZ6QkQ1c3pOTUlySGFKRi9ETWZIeGUyQ1hzbmtEDQorWFdiYzBj
dUQ3Tk1NNGRLYmZSYmpudHhZM1d5SmQ1aWpETEo4YnRDL1BTd1pvY21Id2dwT3FCNDBxRy9hTFFw
Tg0KK3dMUnhCa2xoNmhyQVpNSFRzSS9BTzRJQktNVG9NWXNIUzdYN1loZE1LZzNlcTg3Y2dHaS9x
eDFGNHFTaUFXb0YNCiszMEhtL2ZpVUx1S2ZwQUZWZmV2QlBUNWhVS0RxTnlyVnh4aE03UFVOT1cx
VTB3UXhSdGdTb0FxQ1kyMkNwSTdXDQorZ2tOaG14MlVtckFkTlFMNHUxVi9qUGNoNG1VMlFxbUxX
QkdRb0h3b1JkaWJpSldhSnVuOVJ3ZURjSXFZR3d0Tw0KK2hJd0d0K0xqQWdNQkFBRUNnZ0VBY0Rl
b0g3SlNkelNyaEpyRjQ1dVhxRmlmS1hsTTlra241cHE3QStKbU54V0kNCitweCt5bGVXckNQalhs
Y1U3SGc5MHdzbFE4K2NPR3JkdXJPY2VNVWNNRVRwR0QyV0NhclhxSk9kaVR2MHE3bi9VDQorUmJC
YUpBczRidWtsSDd3c2drN1doWE9GaCt3dzU5Uy9GZ05ZZW1kcHQyUmQydUx3cHVIdnk0SFQxR1FV
eDgvQw0KKzlxaE51dTkyQk5FdzVZWFpqV2xVWHNYNC9NT2hRczZpYUVmZUdwaG8yMHVoVVJSWmxH
NWt2L3pDcTl5Q1grc2ENCitPNUM1MDR6a1pnWG9qQ3ZlYWhPWGVXTHJoTm5ScDFkdDNESFZwM2NG
MmZ5UDBJUmIrK3l3MFpZZHZjYnljODJzDQorQkhlbmpDM3ZCd25nN2FBOTVRZWh5ZUxRTzNQVlZq
OFFQbmRWQjcyYVFRS0JnUUQ3MXlZMnRCeVh6akhnRFJhRw0KK2RERFlRdGd5VmZ6NGNYK2tTK0JZ
V1d6dUNRbzkvVW9id3VjVVRtVXoxUmMwNC9xdVNrL3A2M2FnMXZicXh5b0cNCitwVnlWMlA2SVk1
K0YzcEVrbFd0ZlhteTdBbnVrOGpVZ1hqZ1MyKzc4Z3hQenk0OU53ZVROVFVjbExBWkpTRmtMDQor
R0FCNm9YVzB0YWVWUnNDWjlnZ3B2MFVTb1FLQmdRRENxSmgrTW10cDA0emNqUm0wZ1VabWY4RXJG
WFlqNnVxcg0KK3JWc0dRTG42d1JSY2M4SnJOQTRYYmxxN3JqZjdCNUQyRHM4SXBvUGVGb0I4R2Er
UEdlNE1RSlpkRzBVbXZRRmcNCitSWHBBaUI2TzduNCs4b2FYU09tRnBGTDVKZDAvQ2RHdXRXRzQ0
Q3dKb3JiQ0JZcVY4ZklGNVVhWUZHaWdKRVVUDQorV3JjUFEwUExBd0tCZ0hSWG5HdkJJVVJ3R1ZK
c09XKzcxYVRTbkpZRWEyMUs0YkRBN005ajRKTEcwbGg0M3ZlYw0KK1BxeCsydm5yQTJHSHdKTXIr
V2NUUkNaaHFJZ2xvaUNYM0FITjBTaW8vVlVXME82WnFKVFNSbURPY05odW5HUnINCitvblB6N3Av
dzNoTE9nMUZrdFpLeWxKOXppeVBuckZzWHA0RC9maVVSbG0yNzFkWktkdEx5YmJLQkFvR0FTUkV2
DQorN0c3UWt2Q3R0enZmb2puRVMwVTVKUXJ4Ulpvd2JEQ3VNaktwbk01TTdrY2xlMGdXNGdTeVdq
Q1RJczg4UXFCYw0KK1prcmF4TXA5Z0JmRUpscjlWK3dHaFB4dmdKTUJxVGxySWozMStvRGJNcFdt
bjdMbXRSdHhhY1Frd0R6WFVGVVYNCitVV2dVSDZuTUlCZ2taUlJrWElJcmRYcHpxMmp4NU1ud1hQ
Skt5REVDZ1lFQTA5UDJad2VCSkU5YTlvb0tHV29pDQorMmlSVjRHQWVJWkdVWHkxc1QvRFdNNmVV
c3B1RnNJRTFkYWswSjVWVktkSWNlN0NWM0lwREU4UFo1UDBpVWZpZQ0KK2dMMTcwS3hmSlJrT2ZJ
NnB4NHdCV0dlL1JNMG5JbldKSUlSNW9HY2lmekJ4N3RWUXFLYnpOY2xMVWtNT2hoZzcNCitlcFpk
UEpKdVpTZ3JpeGFQbzd5bXo0MD0NCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQppbmRleCA1
OTU5MzE2YmI1YjQ4MjVlNjQwYmIxZjdjYWIwOGJjOWY0MDVhNjNhLi42OGE5Yjk2ZjNlZTlkOWNk
YTU3ZGFlYjY3OTZiNWI2NzRkNzVhYzQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBl
bQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQpAQCAtMSwxMzMgKzEsMjM5IEBACi1DZXJ0aWZp
Y2F0ZToKLSAgICBEYXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlh
bCBOdW1iZXI6IDM3MzA2NCAoMHg1YjE0OCkKLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEy
NTZXaXRoUlNBRW5jcnlwdGlvbgotICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0
cwotICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDE0IDEzOjQ5
OjI5IDIwMTkgR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTEgMTM6NDk6MjkgMjAy
OSBHTVQKLSAgICAgICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QKLSAgICAgICAgU3Vi
amVjdCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTog
cnNhRW5jcnlwdGlvbgotICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKLSAg
ICAgICAgICAgICAgICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDphYjo2NTo3NTo1
Nzo5ODplMzplNTphYTo4ZjpmZTpkYjoxODpmNTplNDoKLSAgICAgICAgICAgICAgICAgICAgZjg6
MWM6NjQ6NjE6YzY6YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGJkOjU1OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4OjVmOjM3OgotICAg
ICAgICAgICAgICAgICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpkYToxNDo5YjowYTpi
MDphNzoKLSAgICAgICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6OWU6ZWU6MTM6NWY6
ZjA6YzE6MmM6NTU6NzI6Ci0gICAgICAgICAgICAgICAgICAgIGYwOjlhOmMwOjZlOjdmOjNjOmRl
OjYyOjBmOmIxOmY2OmMyOmM5Ojg0OmE2OgotICAgICAgICAgICAgICAgICAgICA5MTpkNzozOTpj
ZDpjYjo5Nzo0ZjozOTpmZTowYzpkZTpiMzplZDo3ZTozNjoKLSAgICAgICAgICAgICAgICAgICAg
N2Y6YWE6MDE6MTk6YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6Ci0gICAgICAgICAg
ICAgICAgICAgIDZhOmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0OjAzOjFmOjc5Ogot
ICAgICAgICAgICAgICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpjNDpjYTpjYzplNTo2
OToxNDoxZToKLSAgICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6ZWE6NDY6NzI6N2E6
Zjg6NzI6YTc6NGQ6OTc6MGM6Ci0gICAgICAgICAgICAgICAgICAgIGZkOjJmOjJmOjAzOjQyOmI0
OmYyOmM2OjA3OjQ3OmE2OjAwOjA3OmMyOmVmOgotICAgICAgICAgICAgICAgICAgICAxYTo3MDo0
NDo2NTo0Njo0YTpkMToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKLSAgICAgICAgICAgICAgICAg
ICAgZDY6OGE6ODI6YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6NzQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4OjgyOjM3OmUwOmY1
OgotICAgICAgICAgICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDoxZjo3ZToxYToxZjo4
Yjo2MDo3Mjo3NToKLSAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6MGM6Y2M6NTg6NjU6
YmI6NWI6YjI6YjM6YTY6YTE6NTY6Ci0gICAgICAgICAgICAgICAgICAgIDQyOjY5Ci0gICAgICAg
ICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5z
aW9uczoKLSAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCi0gICAgICAgICAg
ICAgICAgQ0E6RkFMU0UKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVy
OiAKLSAgICAgICAgICAgICAgICAyQToxODowQjowOToyMjo2RToyODpEMjpEQjpGRDpDMjoyRDo0
MDpBNjpGMzozODo2Mjo2RTpDNzpDNQotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkg
SWRlbnRpZmllcjogCi0gICAgICAgICAgICAgICAga2V5aWQ6NDE6NDk6RkY6OEM6NjY6NTA6NUY6
ODc6QTE6MDY6QTg6QkI6QUI6OEE6REQ6NzM6MEQ6MEU6Mzc6MUEKLQotICAgICAgICAgICAgWDUw
OXYzIEtleSBVc2FnZTogCi0gICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBS
ZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVybWVudAotICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVk
IEtleSBVc2FnZTogCi0gICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRp
b24KLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IAotICAgICAg
ICAgICAgICAgIEROUzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cxLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dy53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZs
YWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4t
LW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3Jx
aHYyOGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3Jx
aHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cy
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUt
NmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1
M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVz
dAotICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAg
ICAgICBhZjpjMjplYTpjYzo2YTo1ZTo0OTplMDpkYjo3MjoxNDowNTozYzoyMTphMDo4YjpmZjpi
NjoKLSAgICAgICAgIGE5OjcxOjgyOmY3OjYxOmNkOjIzOjJhOjAwOjY2OjkxOmFjOjAxOjk5OjYz
OjM4OjExOjIxOgotICAgICAgICAgODU6YjI6NTc6OTI6MGI6M2Y6Nzk6Njg6ZjU6ZDg6NTk6OGI6
YTc6NzQ6MTk6ZWI6MGI6ZTc6Ci0gICAgICAgICAzZDo4Njo0ZTo2NjpkNDplNjoyZjpmZjplZDo2
Yzo3ZDo5YTo1ZToxMjo0ZTpiZjozOTpmZjoKLSAgICAgICAgIGY3OmQwOmZiOjUyOjUzOmEwOmZi
OmIxOjVjOjlhOjkxOjkyOjM2OjAwOmQ4OmE0OjZmOmY5OgotICAgICAgICAgOWM6MzY6MjE6YjI6
YzI6NWU6MTQ6MTE6Y2E6NTU6ZTc6ODg6MzA6NjA6OGQ6ODY6ZGE6NjU6Ci0gICAgICAgICAyNjpm
ZjplMjo0NTozNjoyYTowOTozZDphNDpiYjozODo2MTo0ZDo1NzplNDpjOTpiNjo1MDoKLSAgICAg
ICAgIDNjOjA2OjJmOjZiOmJmOjA0OjM0OjQyOjU0OmRjOjUzOmI2OjYxOmM1OjRlOjQwOjAwOmQ2
OgotICAgICAgICAgNWU6MTk6MTc6M2E6NTQ6MmM6YzU6MTY6N2E6NmQ6NGE6NzA6NTY6NDU6Y2Q6
OTk6NWE6MmE6Ci0gICAgICAgICBkMTphNzo0ZTozNTo5NzozZDpkODpjOTo5NTo4MDphYjoxNTo0
Mjo4NjpmNjphMDphNjpjMzoKLSAgICAgICAgIDIxOmMxOjlhOjA3OjM0OjQ5OmFkOjYxOjNjOmJj
Ojk0OmIyOjJkOjkyOmY3OjQ0OjgwOjAxOgotICAgICAgICAgNWY6Mjc6YmQ6ODM6ZjU6NTE6MjI6
Mzk6Y2Q6OTg6YjE6Mzk6MjM6Yjg6ZjQ6NWM6MDg6MjA6Ci0gICAgICAgICA5ZTpmZTpmMToyZDo5
YTplOTo5YjpjNzo1ZTpiODozMzo4YjoxNjo3Nzo1MjozZDpjOTo3YToKLSAgICAgICAgIDQzOjll
OjI1OmQwOmM3OjVhOjk2OjA4OjUzOjFhOmRjOjc1OjUzOjc1OjQ0OjYyOjE4OjdjOgotICAgICAg
ICAgZWY6ZmI6NzM6NTIKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJTXNqQ0NDNXFn
QXdJQkFnSURCYkZJTUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkx
d2JHRjBabTl5YlMxMFpYTjBjekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1
TWpsYQotTUJ3eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdr
cWhraUc5dzBCQVFFRgotQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxMlYxVjVqajVhcVAvdHNZOWVUNEhH
Umh4cVAyNkg0a0VONEplaVM5VlY5UgotcWJXQ0RZVTZ0ckZJWHpmTFFtL25COHMycVR2YUZKc0tz
S2VWS2U3U2VDS2U3aE5mOE1Fc1ZYTHdtc0J1Znp6ZQotWWcreDlzTEpoS2FSMXpuTnk1ZFBPZjRN
M3JQdGZqWi9xZ0VacWRXeGY3NDZaUStsWFI5cXdWdDdDZHd3S0FXcQotRjVRREgza1FCUTZXcW12
dlpjVEt6T1ZwRkI1M1VQcmhET3BHY25yNGNxZE5sd3o5THk4RFFyVHl4Z2RIcGdBSAotd3U4YWNF
UmxSa3JSTEZJWC81blBjalRXaW9LZ1NpTko2S0ZaN2xOMFJuU2h6OWZMM0k3UVVsZEpXSUkzNFBX
dAotT3pnYnRZWUVIMzRhSDR0Z2NuWDJncVFRRE14WVpidGJzck9tb1ZaQ2FRSURBUUFCbzRJSitq
Q0NDZll3Q1FZRAotVlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVS2hnTENTSnVLTkxiL2NJdFFLYnpP
R0p1eDhVd0h3WURWUjBqQkJndwotRm9BVVFVbi9qR1pRWDRlaEJxaTdxNHJkY3cwT054b3dDd1lE
VlIwUEJBUURBZ1hnTUJNR0ExVWRKUVFNTUFvRwotQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJ
SmZEQ0NDWGlDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdQotYjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkMwotTVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkMwot
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWegotZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1
Ym05MExYZGxZaTF3YkdGMAotWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWQzZDNNaTUzZDNjdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6
RXVkM2QzTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwMwotZDNjdWQzZDNNUzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBnaHQz
ZDNjeExuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1MwotWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2gxMwotZDNjdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNMbmQzZHpJ
dWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDSG5odQotTFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJZWQzZDNMbmQzZHpFdWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N5
TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkMwotZHpJdWQzZDNNaTV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaQotTFhCc1lY
Um1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
QwotSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2Rt
VXRObXhoWkM1MwotZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0YmkwdGJIWmxM
VFpzWVdRdWQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSTNodQotTFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeUxuaHVMUzFzZG1VdAotTm14aFpDNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWpkM2QzTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCcwotWVhSbWIzSnRM
blJsYzNTQ0kzaHVMUzFzZG1VdE5teGhaQzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAot
Z2laNGJpMHRiSFpsTFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1k
M2QzTG5odQotTFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1
TFMxc2RtVXRObXhoWkM1MwotZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNk
M01pNTRiaTB0YkhabExUWnNZV1F1Ym05MAotTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2Qz
Y3hMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0ozaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXBlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSzNo
dUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
TFhodQotTFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUl0ZUc0dAotTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaTEzZDNjdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpFdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4
YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFNMngzZDJ0
eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdQotZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMx
dQotT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NMM2h1TFMxcwotZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnakY0YmkwdAotYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pGMwotZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2pKM2QzY3hMbmh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXll
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQot
YjNKdExuUmxjM1NDTW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWJtOTBM
WGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5
Y1doMk1qaGhMbTV2ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXVlRzR0TFd4MgotWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnalo0YmkwdGJIWmxMVFpzWVdRdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NAotYmkwdGJqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odQotTFMx
dU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJz
WVhSbQotYjNKdExuUmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMx
dU9HbzJaSE0xTTJ4MwotZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJp
MHRiamhxTm1Sek5UTnNkM2RyY25GbwotZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9k
akk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbAotYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFE
Z2dFQkFLL0M2c3hxWGtuZzIzSVVCVHdob0l2L3RxbHhndmRoelNNcQotQUdhUnJBR1pZemdSSVlX
eVY1SUxQM2xvOWRoWmk2ZDBHZXNMNXoyR1RtYlU1aS8vN1d4OW1sNFNUcjg1Ly9mUQotKzFKVG9Q
dXhYSnFSa2pZQTJLUnYrWncySWJMQ1hoUVJ5bFhuaURCZ2pZYmFaU2IvNGtVMktnazlwTHM0WVUx
WAotNU1tMlVEd0dMMnUvQkRSQ1ZOeFR0bUhGVGtBQTFsNFpGenBVTE1VV2VtMUtjRlpGelpsYUt0
R25UaldYUGRqSgotbFlDckZVS0c5cUNtd3lIQm1nYzBTYTFoUEx5VXNpMlM5MFNBQVY4bnZZUDFV
U0k1elppeE9TTzQ5RndJSUo3KwotOFMyYTZadkhYcmd6aXhaM1VqM0pla09lSmRESFdwWUlVeHJj
ZFZOMVJHSVlmTy83YzFJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorQ2VydGlmaWNhdGU6
DQorICAgIERhdGE6DQorICAgICAgICBWZXJzaW9uOiAzICgweDIpDQorICAgICAgICBTZXJpYWwg
TnVtYmVyOiA3ODMyNzkgKDB4YmYzYWYpDQorICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBz
aGEyNTZXaXRoUlNBRW5jcnlwdGlvbg0KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0t
dGVzdHMNCisgICAgICAgIFZhbGlkaXR5DQorICAgICAgICAgICAgTm90IEJlZm9yZTogRmViIDE4
IDIwOjI5OjQ3IDIwMjAgR01UDQorICAgICAgICAgICAgTm90IEFmdGVyIDogRmViIDE1IDIwOjI5
OjQ3IDIwMzAgR01UDQorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdA0KKyAg
ICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86DQorICAgICAgICAgICAgUHVibGljIEtleSBB
bGdvcml0aG06IHJzYUVuY3J5cHRpb24NCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6
ICgyMDQ4IGJpdCkNCisgICAgICAgICAgICAgICAgTW9kdWx1czoNCisgICAgICAgICAgICAgICAg
ICAgIDAwOmJmOjdlOmU2OjJhOjZjOjkyOmQ4OjJhOjg0OmYwOjE3OjM2OmFlOjlkOg0KKyAgICAg
ICAgICAgICAgICAgICAgMjI6Nzc6ZWI6Njk6YTk6MDM6YjA6Njg6NTg6ZTI6MGM6ODk6MzE6NjQ6
MTg6DQorICAgICAgICAgICAgICAgICAgICBhZDo2ZDo2NDowODoyOTpjZjo2YTplZjpjYzoxMDpm
OTpiMzozMzo0YzoyMjoNCisgICAgICAgICAgICAgICAgICAgIGIxOmRhOjI0OjVmOmMzOjMxOmYx
OmYxOjdiOjYwOjk3OmIyOjc5OjAzOjVkOg0KKyAgICAgICAgICAgICAgICAgICAgNjY6ZGM6ZDE6
Y2I6ODM6ZWM6ZDM6MGM6ZTE6ZDI6OWI6N2Q6MTY6ZTM6OWU6DQorICAgICAgICAgICAgICAgICAg
ICBkYzo1ODpkZDo2Yzo4OTo3Nzo5ODphMzowYzpiMjo3Yzo2ZTpkMDpiZjozZDoNCisgICAgICAg
ICAgICAgICAgICAgIDJjOjE5OmExOmM5Ojg3OmMyOjBhOjRlOmE4OjFlOjM0OmE4OjZmOmRhOjJk
Og0KKyAgICAgICAgICAgICAgICAgICAgMGE6NGQ6YzA6YjQ6NzE6MDY6NDk6NjE6ZWE6MWE6YzA6
NjQ6YzE6ZDM6YjA6DQorICAgICAgICAgICAgICAgICAgICA4ZjpjMDozYjo4MjowMToyODpjNDpl
ODozMTo4YjowNzo0YjpiNTpmYjo2MjoNCisgICAgICAgICAgICAgICAgICAgIDE3OjRjOjJhOjBk
OmRlOmFiOmNlOmRjOjgwOjY4OmJmOmFiOjFkOjQ1OmUyOg0KKyAgICAgICAgICAgICAgICAgICAg
YTQ6YTI6MDE6NmE6MDU6ZGY6NDE6ZTY6ZmQ6Zjg6OTQ6MmU6ZTI6OWY6YTQ6DQorICAgICAgICAg
ICAgICAgICAgICAwMTo1NTo3ZDplYjpjMTozZDozZTo2MTo1MDphMDplYTozNzoyYTpkNTpjNzoN
CisgICAgICAgICAgICAgICAgICAgIDE4OjRjOmVjOmY1OjBkOjM5OjZkOjU0OmQzOjA0OjMxOjQ2
OmQ4OjEyOmEwOg0KKyAgICAgICAgICAgICAgICAgICAgMGE6ODI6NjM6NmQ6ODI6YTQ6OGU6ZDY6
ODI6NDM6NjE6OWI6MWQ6OTQ6OWE6DQorICAgICAgICAgICAgICAgICAgICBiMDoxZDozNTowMjpm
ODpiYjo1NTo3Zjo4YzpmNzoyMTplMjo2NTozNjo0MjoNCisgICAgICAgICAgICAgICAgICAgIGE5
OjhiOjU4OjExOjkwOmEwOjdjOjI4OjQ1OmQ4OjliOjg4Ojk1OjlhOjI2Og0KKyAgICAgICAgICAg
ICAgICAgICAgZTk6ZmQ6NDc6MDc6ODM6NzA6OGE6OTg6MWI6MGI6NGU6ODQ6OGM6MDY6Yjc6DQor
ICAgICAgICAgICAgICAgICAgICBlMjplMw0KKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1
MzcgKDB4MTAwMDEpDQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoNCisgICAgICAgICAgICBY
NTA5djMgQmFzaWMgQ29uc3RyYWludHM6IA0KKyAgICAgICAgICAgICAgICBDQTpGQUxTRQ0KKyAg
ICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAg
ICAgQUU6RDg6MkY6OTk6QkE6QjE6RTg6MDM6RDI6QTU6QzU6MkM6MEQ6QkI6MTY6NUM6OUI6OUY6
Rjc6MDgNCisgICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiANCisg
ICAgICAgICAgICAgICAga2V5aWQ6RjY6Qjk6REE6MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6
Njc6NDA6Q0I6MDM6RDM6MUU6OTA6RUMNCisNCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdl
OiANCisgICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwg
S2V5IEVuY2lwaGVybWVudA0KKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6
IA0KKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbg0KKyAgICAg
ICAgICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IA0KKyAgICAgICAgICAgICAg
ICBETlM6d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDI4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A3OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQ4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDY2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A3My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDYyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQ3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDI5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wODMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDcwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wOTIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgy
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDk2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AxMy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzIud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDky
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDIwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A0MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDY3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A4NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53
d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cx
Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2
ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
MS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZs
YWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bHZlLTZsYWQueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUz
bHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3Jx
aHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3Jx
aHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0t
bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QNCisgICAgU2lnbmF0dXJl
IEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24NCisgICAgICAgICA4OTphNDo0NDo0
MzplZjowZjphNjozNjo3MjozMTo4Nzo0NDo3NTo4NjpiNjo1Yjo1ODoyYzoNCisgICAgICAgICBj
YjoxYzowYToyZTozNTozMjo4Mzo4MDo3MDo3MDoxYzpiNzo0YTpkMTo0NTo0NDo3ODpjNDoNCisg
ICAgICAgICAxNzpkODo3NzozNDo0ZTo0MjpkMjo3MjoyMjpmZTowZDowYTphZTpiODowNjo5NDpk
MDo2ZDoNCisgICAgICAgICA3YToyMTpkODphNDo4MzozMzoxNzpkMzowNDphODo5Mzo2Zjo2Njpm
MDozMzoxOTowNTowNzoNCisgICAgICAgICBiNTozNTo4MzoyODphOTo4Zjo4NToxODoxYTo4Njpk
ZjplODpiZTo4ZDpjZjo2YToyNDpjMToNCisgICAgICAgICAwODoyNjpkZDowMjo5ODoxYzowMTpk
ODo4MTo0YTplNDoyMDoxNDoxOTo3YzplZjo5MTpiNToNCisgICAgICAgICAzZTpkYTo1YTpmNjox
NDo0NToxODo3ZDo0NTo0YjoyODo3NjozMzo1ODpjNTo4YzpjOToyZDoNCisgICAgICAgICBlZjo4
OToxMTo3MDo3ZDplYjo0Nzo5ZToxMjpiMDo4MToxOTpjODowNzpkOTpjYzo4NzpmMToNCisgICAg
ICAgICAxYjpmZTpmMDo4ZjpiMjpjMzpmMTpkYTpmMDo1NTplNTo0YTo5YjpmZjowZDowMTo1Zjo2
NToNCisgICAgICAgICA5NTowNzo5MjpjNjo3Yjo3Mzo5NTo1OTphYTo2YjpjNjo5YzowMTo0ZTph
MjoyYjplYTo3NzoNCisgICAgICAgICBkNDpmNDphYjpkNjplNTo5NDplYjo4MTozNzo1NTo5Yzo5
MDozZjo3MzoyMzoxZDo4NDpjMjoNCisgICAgICAgICA4Mjo0Mjo1Njo5YToxMzo2OTozMzo0ODpk
NjowZDowZTo1ODo4MjphYzo5MDplZjpiMzphMDoNCisgICAgICAgICA2YzpkZTo3OTpmNjoxNzpj
NTpmMDoxZTpmMzozNzo3NDowMTpmMDo0Nzo5Yzo3Nzo5YzphNzoNCisgICAgICAgICBhZjplMDo2
MDpjYTpkNzowMjpkZDo1MDo0ODo2OTpiMToxYjo4Mzo4Nzo1YTo3Yzo3NDo0NDoNCisgICAgICAg
ICBkYTpjNTpkZTpiOA0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSWdpRENDSDND
Z0F3SUJBZ0lEQy9Pdk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZ
aTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1E
STVORGRhDQorTUJ3eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFO
QmdrcWhraUc5dzBCQVFFRg0KK0FBT0NBUThBTUlJQkNnS0NBUUVBdjM3bUtteVMyQ3FFOEJjMnJw
MGlkK3RwcVFPd2FGamlESWt4WkJpdGJXUUkNCitLYzlxNzh3UStiTXpUQ0t4MmlSZnd6SHg4WHRn
bDdKNUExMW0zTkhMZyt6VERPSFNtMzBXNDU3Y1dOMXNpWGVZDQorb3d5eWZHN1F2ejBzR2FISmg4
SUtUcWdlTktodjJpMEtUY0MwY1FaSlllb2F3R1RCMDdDUHdEdUNBU2pFNkRHTA0KK0IwdTErMklY
VENvTjNxdk8zSUJvdjZzZFJlS2tvZ0ZxQmQ5QjV2MzRsQzdpbjZRQlZYM3J3VDArWVZDZzZqY3EN
CisxY2NZVE96MURUbHRWTk1FTVViWUVxQUtnbU50Z3FTTzFvSkRZWnNkbEpxd0hUVUMrTHRWZjR6
M0llSmxOa0twDQoraTFnUmtLQjhLRVhZbTRpVm1pYnAvVWNIZzNDS21Cc0xUb1NNQnJmaTR3SURB
UUFCbzRJZDBEQ0NIY3d3Q1FZRA0KK1ZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVXJ0Z3ZtYnF4NkFQ
U3BjVXNEYnNXWEp1Zjl3Z3dId1lEVlIwakJCZ3cNCitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExB
OU1la093d0N3WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HDQorQ0NzR0FRVUZCd01CTUlJ
ZFd3WURWUjBSQklJZFVqQ0NIVTZDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdg0KK2NESXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIz
QTMNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RFdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZXOXdNeTUzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoVnViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EwTG5kbFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2hWdmNE
Z3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQTROeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0E1TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOaTUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F4Tnk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBMk5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
eE15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQXhNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPQzUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EwTWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBek55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
ZDNkM01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2IzQTJOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJN
aTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0ExTmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBM05DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQXpNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QXpPUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROUzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlXYjNBek5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5
TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRH
VnpkSUlXYjNBMU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQTBOQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F6TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdi
M0E0TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUzWldJdGNHeGgNCitkR1p2Y20w
dWRHVnpkSUlXYjNBeU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZElJV2IzQTFNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5p
NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJV2IzQXlOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0EzTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0E1TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
eU5TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQTVOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1TNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNN
QzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0E1TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBNE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBMU9TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTJOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTRNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdA0KK2NHeGhkR1p2
Y20wdWRHVnpkSUlaYjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXYN
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlaDQorYjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNk
eTUzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlaYjNBeExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlaYjNBekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeQ0KK055NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTANCitaWE4wZ2hwdmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1
YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGd6TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6
TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRZdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlh
YjNBMk1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UZ3VibTkwTFhkbA0KK1lp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTANCitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRGt1Ym05MExYZGxZ
aTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0E1TlM1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpNdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RreExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBME1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qWXVi
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEWTVMbTV2ZEMxM1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZElJYWIzQXpNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNemN1
Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGs0TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F4DQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3
TnpZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RFekxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM09TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1ND
R25kM2R6SXVkM2QzTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2DQorZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Qw0KK0dtOXdNamt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUxTG01dmRDMTNa
V0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0E1TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TkRRdWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMExtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNQ0KK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDR205d016UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNETXdM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNUzUzZDNjdWQyVmlMWEJzDQorWVhS
bWIzSnRMblJsYzNTQ0dtOXdNalV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkw
TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TUM1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0MNCitHbTl3TlRFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RReExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeE1pNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitNaTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQor
WlhOMGdocHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRk
MlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaHB2Y0RnMExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek1TNXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d05UTXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwdmNESXpMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXpO
UzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVFl1Ym05MExYZGwNCitZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRFl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6
DQorT0M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRndWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RZeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlh
YjNBeE5DNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d09UQXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3dMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYWIzQXhNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNVFV1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkxTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1
ZEdWemRJSWFiM0ExTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpndWJtOTBM
WGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBMw0KK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R5NTNk
M2N5TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWIzQTVNeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNk
eTUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREl4TG01dg0KK2RDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0EzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitH
bTl3T1RjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNExtNXZkQzEzWldJdGNH
eGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d05qWXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTENCitPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdORFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE0yTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6T1M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0
TG5SbGMzU0NHbTl3TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFM0xtNXYN
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBM05TNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDDQorR205d09EVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTNM
bTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdPREV1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNk
M2N5TG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpFdWQzZDNNaTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUliZDNkM01pNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBa
WE4wZ2h0M2QzY3hMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0hYZDNkeTUzZDNjdWJt
OTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsDQorYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUllZDNkM01TNTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1
ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5kM2R5NTNkM2N5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTVM1M2QzY3lMbTV2DQorZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJZmQzZDNNUzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkSUlmZDNkM01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTWk1
M2QzY3kNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtM
bmQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaQ0KK2QzZDNMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJamQzZDNNUzU0YmkwdGJIWmwNCitMVFpzWVdRdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3DQorYkdGMFptOXli
UzUwWlhOMGdpTjRiaTB0YkhabExUWnNZV1F1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0K
K2RJSWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKbmQz
ZHk1NGJpMHQNCitiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJp
MHRiSFpsTFRac1lXUXVkM2QzDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2Qz
TVM1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2Qz
Y3lMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NKM2h1
TFMxc2RtVXRObXhoWkM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbmVH
NHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWw0Ymkw
dA0KK2JqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXJl
RzR0TFd4MlpTMDINCitiR0ZrTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSXRlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaTE0YmkwdGJqaHFObVJ6TlROcw0KK2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9k
akk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWQzZDNNaTU0YmkwdGJqaHFObVJ6DQorTlRO
c2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTVM1NGJpMHRiamhx
Tm1Seg0KK05UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExX
NDRhalprY3pVemJIZDMNCithM0p4YUhZeU9HRXVkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSXZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0KK0xTMXNkbVV0Tm14aFpDNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTVhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1q
aGhMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGQzZHk1NGJpMHRiamhxDQor
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNk
ekV1ZUc0dA0KK0xXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2pKNGJpMHQNCitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5DQorZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNk
cmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NNbmh1TFMxdU9HbzJa
SE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhO
MGdqWjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lXUXVkMlZp
DQorTFhCc1lYUm1iM0p0TG5SbGMzU0NObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5U
TnNkM2RyY25Gbw0KK2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUk2ZUc0dExXeDJaUzAy
YkdGa0xuaHVMUzF1T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSTZlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gy
WlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElKQg0KK2VHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NSWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVM
UzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQU5CZ2txaGtpRw0KKzl3MEJBUXNGQUFPQ0FRRUFpYVJFUSs4UHBqWnlNWWRFZFlhMlcxZ3N5
eHdLTGpVeWc0QndjQnkzU3RGRlJIakUNCitGOWgzTkU1QzBuSWkvZzBLcnJnR2xOQnRlaUhZcElN
ekY5TUVxSk52WnZBekdRVUh0VFdES0ttUGhSZ2FodC9vDQordm8zUGFpVEJDQ2JkQXBnY0FkaUJT
dVFnRkJsODc1RzFQdHBhOWhSRkdIMUZTeWgyTTFqRmpNa3Q3NGtSY0gzcg0KK1I1NFNzSUVaeUFm
WnpJZnhHLzd3ajdMRDhkcndWZVZLbS84TkFWOWxsUWVTeG50emxWbXFhOGFjQVU2aUsrcDMNCisx
UFNyMXVXVTY0RTNWWnlRUDNNakhZVENna0pXbWhOcE0waldEUTVZZ3F5UTc3T2diTjU1OWhmRjhC
N3pOM1FCDQorOEVlY2Q1eW5yK0JneXRjQzNWQklhYkViZzRkYWZIUkUyc1hldUE9PQ0KKy0tLS0t
RU5EIENFUlRJRklDQVRFLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvYWZmZWN0ZWRfdGVzdHMueW1sCmluZGV4IDc4MTFiYTk1OTE3YmIzY2M2YjVkMzJlY2JlOWU4
OTUyOTc2MWFkYzMuLjQ5NGZmMWVmYTE5Y2MwMjEzMzM3MDk0ODM4M2U1ZmIyMjE0NGQ0ZmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1s
CkBAIC0xNSw3ICsxNSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1s
CiAtIHRlbXBsYXRlOiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZl
c3QueW1sCi0tIHNjcmlwdDogbm9fcHJveHk9JyonIC4vd3B0IHJ1biAtLXllcyAtLW5vLXBhdXNl
IC0tbm8tZmFpbC1vbi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0tYWZm
ZWN0ZWQgJHt7IHBhcmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQgJChC
dWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13cHRz
Y3JlZW5zaG90ICQoQnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVuc2hv
dC50eHQgLS1jaGFubmVsIHByZXZpZXcgc2FmYXJpCistIHNjcmlwdDogLi93cHQgcnVuIC0teWVz
IC0tbm8tcGF1c2UgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhw
ZWN0ZWQgLS1hZmZlY3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdw
dHJlcG9ydCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29u
IC0tbG9nLXdwdHNjcmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dw
dF9zY3JlZW5zaG90LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKICAgZGlzcGxheU5hbWU6
ICdSdW4gdGVzdHMnCiAtIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCiAgIGRpc3BsYXlO
YW1lOiAnUHVibGlzaCByZXN1bHRzJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBs
aXN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxMjIwODA5NzJjOWY2MzQxMDA2MmVlOGQzM2QwZWQwMjg2YWY4ZjExLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5w
bGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQg
UExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEu
MC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkFsbG93UmVtb3Rl
QXV0b21hdGlvbjwva2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfY2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDZiZDVj
MjMzNGFkNGUzZTRkNWQ2ZmFhZjgwMDVmNGUwYjQ0Y2YxZmUuLmZkNjUwZTgwYWFhZDMwOWM4ZTk4
MzI3NGQyYjgyM2JiYTkxYjFmYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCkBAIC0xLDYgKzEsOSBAQAogc3RlcHM6Ci0jIFRoaXMg
aXMgZXF1aXZhbGVudCB0byBgSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9nb29nbGUt
Y2hyb21lLWRldmAsCi0jIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5n
LgotLSBzY3JpcHQ6IEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwg
aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2st
dmVyc2lvbnMvbWFzdGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisjIFRoZSBjb25mbGlj
dGluZyBnb29nbGUtY2hyb21lIGFuZCBjaHJvbWVkcml2ZXIgY2Fza3MgYXJlIGZpcnN0IHVuaW5z
dGFsbGVkLgorIyBUaGUgcmF3IGdvb2dsZS1jaHJvbWUtZGV2IGNhc2sgVVJMIGlzIHVzZWQgdG8g
YnlwYXNzIGNhY2hpbmcuCistIHNjcmlwdDogfAorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRF
PTEgYnJldyBjYXNrIHVuaW5zdGFsbCBnb29nbGUtY2hyb21lIHx8IHRydWUKKyAgICBIT01FQlJF
V19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayB1bmluc3RhbGwgY2hyb21lZHJpdmVyIHx8IHRy
dWUKKyAgICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBz
Oi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNp
b25zL21hc3Rlci9DYXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgogICBkaXNwbGF5TmFtZTogJ0lu
c3RhbGwgQ2hyb21lIERldicKICAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlh
Ymxlc1snQWdlbnQuT1MnXSwgJ0RhcndpbicpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2Uu
eW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9pbnN0YWxsX2VkZ2UueW1sCmluZGV4IGU0YzQyNWFiN2EwZjAzMjE4ZDkyMmU3MzEw
ZWE5ZDhmZGUwZjUxYWEuLjI5N2I2ZTYwYjI5ZjNhOWJiZDAwYjNlZTAwYjcwNTYzNTEzOGYyY2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9lZGdlLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwK
QEAgLTQsNiArNCwyNiBAQCBwYXJhbWV0ZXJzOgogIyBTaG91bGQgbWF0Y2ggaHR0cHM6Ly93ZWIt
cGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmctdGVzdHMvY2hyb21lLmh0bWwKICMgSnVzdCByZXBs
YWNlIGNocm9tZSB3aXRoIGVkZ2VjaHJvbWl1bQogc3RlcHM6CistICR7eyBpZiBlcShwYXJhbWV0
ZXJzLmNoYW5uZWwsICdzdGFibGUnKSB9fToKKyAgLSBwb3dlcnNoZWxsOiB8CisgICAgICAkZWRn
ZUluc3RhbGxlck5hbWUgPSAnTWljcm9zb2Z0RWRnZVNldHVwLmV4ZScKKyAgICAgICMgTGluayB0
byBTdGFibGUgY2hhbm5lbCBpbnN0YWxsZXIKKyAgICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291
cmNlICdodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjEwODgzNCZDaGFu
bmVsPVN0YWJsZSZsYW5ndWFnZT1lbicgLURlc3RpbmF0aW9uIE1pY3Jvc29mdEVkZ2VTZXR1cC5l
eGUKKyAgICAgIGlmICgtbm90IChUZXN0LVBhdGggJGVkZ2VJbnN0YWxsZXJOYW1lKSkgeworICAg
ICAgICBUaHJvdyAiRmFpbGVkIHRvIGRvd25sb2FkIEVkZ2UgaW5zdGFsbGVyIHRvICRlZGdlSW5z
dGFsbGVyTmFtZS4iCisgICAgICB9CisgICAgICBjbWQgL2MgU1RBUlQgL1dBSVQgJGVkZ2VJbnN0
YWxsZXJOYW1lIC9zaWxlbnQgL2luc3RhbGwKKyAgICAgICRlZGdlUGF0aCA9ICIkZW52OnN5c3Rl
bWRyaXZlXFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb24iCisg
ICAgICBpZiAoVGVzdC1QYXRoICRlZGdlUGF0aCkgeworICAgICAgICBXcml0ZS1Ib3N0ICIjI3Zz
b1t0YXNrLnByZXBlbmRwYXRoXSRlZGdlUGF0aCIKKyAgICAgICAgV3JpdGUtSG9zdCAiRWRnZSBT
dGFibGUgaW5zdGFsbGVkIGF0ICRlZGdlUGF0aC4iCisgICAgICAgIChHZXQtSXRlbSAtUGF0aCAi
JGVkZ2VQYXRoXG1zZWRnZS5leGUiKS5WZXJzaW9uSW5mbyB8IEZvcm1hdC1MaXN0CisgICAgICB9
IGVsc2UgeworICAgICAgICBDb3B5LUl0ZW0gLVBhdGggIiRlbnY6dGVtcFwqZWRnZSoubG9nIiAt
RGVzdGluYXRpb24gJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpICAtRm9yY2UKKyAg
ICAgICAgVGhyb3cgIkZhaWxlZCB0byBpbnN0YWxsIEVkZ2UgYXQgJGVkZ2VQYXRoIgorICAgICAg
fQorICAgIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBFZGdlIFN0YWJsZScKKwogLSAke3sgaWYgZXEo
cGFyYW1ldGVycy5jaGFubmVsLCAnY2FuYXJ5JykgfX06CiAgIC0gcG93ZXJzaGVsbDogfAogICAg
ICAgJGVkZ2VJbnN0YWxsZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IGE4
NjQxNDY1YWM4ZWFlNzAwODZiZDBjZWQ0YTgwZDNhMmRhMzUxMTMuLmQwNjYwZDE1MmJiZGZjODlm
MzA4YmZjMDQ4Y2QyMjIxZTllYTc1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCkBAIC0zLDYgKzMsOSBAQCBwYXJhbWV0ZXJzOgog
CiAjIFNob3VsZCBtYXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10
ZXN0cy9zYWZhcmkuaHRtbAogc3RlcHM6CistIHNjcmlwdDogZGVmYXVsdHMgd3JpdGUgY29tLmFw
cGxlLldlYkRyaXZlciBEaWFnbm9zdGljc0VuYWJsZWQgMQorICBkaXNwbGF5TmFtZTogJ0VuYWJs
ZSBzYWZhcmlkcml2ZXIgZGlhZ25vc3RpY3MnCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydz
YWZhcmlkcml2ZXJfZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hh
bm5lbCwgJ3ByZXZpZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKICAgICAgIEhPTUVCUkVXX05PX0FV
VE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hu
b2xvZ3ktcHJldmlldy5yYgpAQCAtMTIsOSArMTUsNiBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFt
ZTogJ0luc3RhbGwgU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFt
ZXRlcnMuY2hhbm5lbCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgIyBXb3Jr
YXJvdW5kIGZvciBgc3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmc6Ci0gICAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xOTg0
NQotICAgICAgbWtkaXIgLXAgfi9MaWJyYXJ5L1dlYkRyaXZlci8KLSAgICAgIGNwIHRvb2xzL2Np
L2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3Qgfi9MaWJyYXJ5L1dlYkRyaXZlci8KKyAgICAg
IHN1ZG8gc2FmYXJpZHJpdmVyIC0tZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBw
bGUuU2FmYXJpIFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQog
ICAgIGRpc3BsYXlOYW1lOiAnQ29uZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2lu
c3RhbGwueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKaW5kZXggYzg3OTUzNDVmNmJjZjRhOTQzZTA3
YTQ1OTk0N2U3MThhZDZhMGFmYy4uMThkMTg3OWU5NzE2MTM1MzJmYWM1NjczZDlhODA0YWNjMWJj
ODY3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55
bWwKQEAgLTIsMTQgKzIsNSBAQCBwYXJhbWV0ZXJzOgogICBwYWNrYWdlczogJycKIAogc3RlcHM6
Ci0tIHNjcmlwdDogfAotICAgICMgYHN1ZG8gcGlwIGluc3RhbGxgIGlzIG5vdCB1c2VkIGJlY2F1
c2Ugc29tZSBwYWNrYWdlcyAoZS5nLiB0b3gpIGRlcGVuZCBvbgotICAgICMgc3lzdGVtIHBhY2th
Z2VzIChlLmcuIHNldHVwdG9vbHMpIHdoaWNoIGNhbm5vdCBiZSB1cGdyYWRlZCBkdWUgdG8gU3lz
dGVtCi0gICAgIyBJbnRlZ3JpdHkgUHJvdGVjdGlvbiwgc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxv
dy5jb20vYS8zMzAwNDkyMC4KLSAgICBwaXAgaW5zdGFsbCAtLXVzZXIgJHt7IHBhcmFtZXRlcnMu
cGFja2FnZXMgfX0KLSAgICBlY2hvICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXSRIT01FL0xpYnJh
cnkvUHl0aG9uLzIuNy9iaW4iCi0gIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2Fn
ZXMgKG1hY09TKScKLSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1sn
QWdlbnQuT1MnXSwgJ0RhcndpbicpKQogLSBzY3JpcHQ6IHBpcCAtLWRpc2FibGUtcGlwLXZlcnNp
b24tY2hlY2sgaW5zdGFsbCAtLXVwZ3JhZGUgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0KLSAg
ZGlzcGxheU5hbWU6ICdJbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyAoV2luZG93cyknCi0gIGNvbmRp
dGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dz
X05UJykpCisgIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMnCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTQ5Mzk3YTkxYWQ3Y2E0MjQ4NjRjNTMyNmI1ZmU3YjRhMzY4NWE0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvcHVibGlzaF9sb2dzLnltbApAQCAtMCwwICsxLDcgQEAKK3N0ZXBzOgorLSB0YXNrOiBQ
dWJsaXNoQnVpbGRBcnRpZmFjdHNAMQorICBkaXNwbGF5TmFtZTogJ1B1Ymxpc2ggc2FmYXJpZHJp
dmVyIGxvZ3MnCisgIGlucHV0czoKKyAgICBwYXRodG9QdWJsaXNoOiAvVXNlcnMvcnVubmVyL0xp
YnJhcnkvTG9ncy9jb20uYXBwbGUuV2ViRHJpdmVyLworICAgIGFydGlmYWN0TmFtZTogc2FmYXJp
ZHJpdmVyLWxvZ3MKKyAgY29uZGl0aW9uOiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFn
bm9zZSddLCB0cnVlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJi
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9h
enVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCmluZGV4IGIzMjczOWJlNThhNzAyOGQ1
ZmY0YTJkZTliNTZkZmI3ZWEwOTk4MmIuLmVhZTAzNDc0YTQ5ZmY3YmVjZTMyZGFmNDgyMzkwMDI1
YzNjZTllMmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL3NhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcucmIKQEAgLTEsMTAgKzEsMTAgQEAKIGNhc2sg
J3NhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcnIGRvCiAgIGlmIE1hY09TLnZlcnNpb24gPD0gOm1v
amF2ZQotICAgIHZlcnNpb24gJzk2LDA2MS00NDA1Ni0yMDE5MTEyMC1hYzdiYjE5Ni0yNzI0LTQ4
NDAtYmNlOS02YzgzZWNkYmZiMmMnCi0gICAgc2hhMjU2ICdlODBjZWFjZGZmN2U3NTIxODM2NTk5
M2U1YWYxYzgxYzliY2M0Nzg1MjkxYWUwMGFiYmEzZDE0YWM1NjE0MzE3JworICAgIHZlcnNpb24g
JzEwNiwwMDEtMDU5NjYtMjAyMDA1MTMtODY1NzFiZTYtODc4ZS00MTFiLWE1YjktNjVhOTcxNTcz
ZmFlJworICAgIHNoYTI1NiAnODUxOGM4OTE3YTkxNzJhZWI3NWRlZWI2MTA2MGQzNTMyMjk3NjBm
ZDU0ZGM4NWJkMzhhMDg5N2NjMWQxMjEwNScKICAgZWxzZQotICAgIHZlcnNpb24gJzk2LDA2MS00
NzcxOC0yMDE5MTEyMC0wMmJjNzU2OS1lZTZiLTRjMjgtOWVjNC0wY2VlZGEzYzNjM2EnCi0gICAg
c2hhMjU2ICdiYmZjZGMzNmJmOWI1NWFlYzU4MzhkNjZlMzRjNDFkZDNmNmE2NDA5MTQwNmJjMzhm
NDVjODg4MzYwZjE5MWZlJworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU4OTAtMjAyMDA1MTMtMzIx
YTY5YjQtZGU1OC00NDBlLTgxODItOGFjMDNkNjVmNmNlJworICAgIHNoYTI1NiAnZjNjMDczZDli
NjBmZjZkMTFmODJhYmJjNmNjMTMxZTU5MTNlNmQwZjJhMTFmMDk2OGFlNzdkYjFiNTFlMWUzNScK
ICAgZW5kCiAKICAgdXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7
dmVyc2lvbi5hZnRlcl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS90b3hfcHl0ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKaW5kZXggYmM5MzA4MzZk
M2Q3YjY2YmM2M2FjMjM5MmI1MDVmZDk5YWYzZTExZC4uMTJlZDY2YTlhMDIwNmY2ODY2ZmIxMjBl
MjY0YmUzOWRjN2UyOTJlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3Rv
eF9weXRlc3QueW1sCkBAIC0xLDcgKzEsNyBAQAogcGFyYW1ldGVyczoKICAgZGlyZWN0b3J5OiAn
JwogICB0b3hlbnY6ICdBTEwnCi0KKyAgCiBzdGVwczoKIC0gdGVtcGxhdGU6IHBpcF9pbnN0YWxs
LnltbAogICBwYXJhbWV0ZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNj
LWltcG9ydC5sb2cKaW5kZXggNDRmNTQzMTljMmI5ZjAyNGVhOTI1YTZjM2VjN2NlMjBlZTRkNTBk
Mi4uY2U3MDEyZjczMzk5YTYyODZmNzdkNzMxNjIxNDAxNzRiMDljMzI3ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCkBAIC0xOCw3ICsxOCw2IEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvY2xlYW51cF93aW4xMC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9o
b29rLnltbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvaW5zdGFsbF9jZXJ0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbApAQCAt
MjgsNiArMjcsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9p
bnN0YWxsX3NhZmFyaS55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnlt
bAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS90b3hfcHl0ZXN0LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNo
CmluZGV4IDcwOWNjMmFhN2U2ODY3ZjU0OGQ0ZWZkZDYyZDc0YWJjMTg1ZTY1N2IuLmY4YWUzZTYx
YmY3NTZkOTdjNzhlMmQ5NTg5MTIxYjdkNjAxMDY2ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5z
aAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2NpX2J1aWx0X2RpZmYuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQCBtYWluKCkgewogCiAgICAg
I8KgRXhjbHVkZSB0ZXN0cyB0aGF0IHJlbHkgb24gZm9udCByZW5kZXJpbmcKICAgICBleGNsdWRl
ZD0oCi0gICAgICAgICcyZGNvbnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4
dC5kcmF3LmZpbGwuYmFzaWMucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10
by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKLSAgICAg
ICAgJzJkY29udGV4dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmls
bC5ydGwucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZh
cy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1j
YW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAg
ICdvZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKLSAgICAg
ICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycK
KyAgICAgICAgJ2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMv
MmQudGV4dC5kcmF3LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVu
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5s
YXJnZS5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10
aGUtY2FudmFzLzJkLnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZh
cy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5zdHJva2Uu
YmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5k
cmF3LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQv
MmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJworICAgICAgICAnaHRtbC9jYW52
YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAgICAgICAgJ2h0
bWwvY2FudmFzL29mZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwog
ICAgICkKIAogICAgIC4vdXBkYXRlLWJ1aWx0LXRlc3RzLnNoCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5l
cl9pbmZyYXN0cnVjdHVyZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCmluZGV4IDhk
YjA4Nzk0YWRlMjZiZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIuLjg5MjY3YjUwY2I2NDMyYzQ5
NWQ0MjhhMTgwYzU5NjU5YjVjNWE2MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0
dXJlLnNoCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCkBAIC01LDMxICs1LDI1IEBA
IFNDUklQVF9ESVI9JChjZCAkKGRpcm5hbWUgIiQwIikgJiYgcHdkIC1QKQogV1BUX1JPT1Q9JFND
UklQVF9ESVIvLi4vLi4KIGNkICRXUFRfUk9PVAogCi1hZGRfd3B0X2hvc3RzKCkgewotICAgIC4v
d3B0IG1ha2UtaG9zdHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMKLX0KLQogdGVzdF9p
bmZyYXN0cnVjdHVyZSgpIHsKLSAgICBsb2NhbCBBUkdTPSIiOwotICAgIGlmIFsgJFBST0RVQ1Qg
PT0gImZpcmVmb3giIF07IHRoZW4KLSAgICAgICAgQVJHUz0iLS1pbnN0YWxsLWJyb3dzZXIiCi0g
ICAgZWxzZQotICAgICAgICBBUkdTPSQxCi0gICAgZmkKLSAgICBURVJNPWR1bWIgLi93cHQgcnVu
IC0tbG9nLW1hY2ggLSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0
YWRhdGEgaW5mcmFzdHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJP
RFVDVCBpbmZyYXN0cnVjdHVyZS8KKyAgICBQWTNfRkxBRz0iJDIiCisgICAgVEVSTT1kdW1iIC4v
d3B0ICRQWTNfRkxBRyBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01B
TklGRVNULmpzb24gLS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxs
LWZvbnRzICQxICRQUk9EVUNUIGluZnJhc3RydWN0dXJlLwogfQogCiBtYWluKCkgewotICAgIFBS
T0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBpZiBbWyAkIyAtZXEgMSAmJiAiJDEi
ID0gIi0tcHkzIiBdXTsgdGhlbgorICAgICAgICBQUk9EVUNUUz0oICJjaHJvbWUiICkKKyAgICBl
bHNlCisgICAgICAgIFBST0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBmaQogICAg
IC4vd3B0IG1hbmlmZXN0IC0tcmVidWlsZCAtcCB+L21ldGEvTUFOSUZFU1QuanNvbgogICAgIGZv
ciBQUk9EVUNUIGluICIke1BST0RVQ1RTW0BdfSI7IGRvCiAgICAgICAgIGlmIFtbICIkUFJPRFVD
VCIgPT0gImNocm9tZSIgXV07IHRoZW4KLSAgICAgICAgICAgIGFkZF93cHRfaG9zdHMKLSAgICAg
ICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9t
ZS11bnN0YWJsZSkgLS1jaGFubmVsIGRldiIKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1
cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkgLS1jaGFubmVsIGRl
diIgIiQxIgogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlCisg
ICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gv
ZmlyZWZveCIKICAgICAgICAgZmkKICAgICBkb25lCiB9CiAKLW1haW4KK21haW4gJDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvam9icy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvam9icy5weQppbmRleCAzZDgwOWVmYTM3Y2NmZjJjMjU4MzQzYjY0NzkxNzYyZmM1
MDdhOTBmLi43NjI0ZWIwZDUxNmZjMTZhNTcyNGE2NzE0ZDI3NjdiYzRlMTIzMjVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2pvYnMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9qb2JzLnB5CkBAIC0zMywxNSArMzMsMTYgQEAgam9iX3BhdGhfbWFwID0gewog
ICAgICJ3cHRydW5uZXJfdW5pdHRlc3QiOiBbInRvb2xzLyJdLAogICAgICJidWlsZF9jc3MiOiBb
ImNzcy8iXSwKICAgICAidXBkYXRlX2J1aWx0IjogWyJ1cGRhdGUtYnVpbHQtdGVzdHNcXC5zaCIs
Ci0gICAgICAgICAgICAgICAgICAgICAiMmRjb250ZXh0LyIsCiAgICAgICAgICAgICAgICAgICAg
ICAiaW5mcmFzdHJ1Y3R1cmUvIiwKICAgICAgICAgICAgICAgICAgICAgICJodG1sLyIsCi0gICAg
ICAgICAgICAgICAgICAgICAib2Zmc2NyZWVuLWNhbnZhcy8iLAogICAgICAgICAgICAgICAgICAg
ICAgIm1pbWVzbmlmZi8iLAogICAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdWkvIiwKICAg
ICAgICAgICAgICAgICAgICAgICJXZWJJREwiXSwKICAgICAid3B0X2ludGVncmF0aW9uIjogWyJ0
b29scy8iXSwKLSAgICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZyYXN0cnVjdHVy
ZS8iLCAidG9vbHMvIiwgInJlc291cmNlcy8iXSwKKyAgICAid3B0cnVubmVyX2luZnJhc3RydWN0
dXJlIjogWyJpbmZyYXN0cnVjdHVyZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRvb2xzLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2Vz
LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZHJpdmVyL3Rlc3RzL3N1
cHBvcnQiXSwKIH0KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5w
eQppbmRleCAxZTM4OGRmYTc0MTlhMjFiMjA1MDNiMzA3NWMzNmJjMTExMzZkZDdkLi4yMGY5NmQ5
YTNlZWVjNjM5OTc0Y2E0NjFkOWQ0NWY5MWM5NmMwMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxk
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvbWFuaWZlc3RfYnVpbGQucHkKQEAgLTg0LDggKzg0LDcgQEAgZGVmIHJlcXVlc3QodXJs
LCBkZXNjLCBtZXRob2Q9Tm9uZSwgZGF0YT1Ob25lLCBqc29uX2RhdGE9Tm9uZSwgcGFyYW1zPU5v
bmUsIGhlYWQKICAgICB0cnk6CiAgICAgICAgIHJldHVybiByZXNwLmpzb24oKQogICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yOgotICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQg
ZGF0YSB3YXMgbm90IEpTT04gUmVzcG9uc2U6IiAlCi0gICAgICAgICAgICAgICAgICAgICAoZGVz
YywgcmVzcC5zdGF0dXNfY29kZSkpCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgZmFpbGVkOiBS
ZXR1cm5lZCBkYXRhIHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUgZGVzYykKICAgICAgICAgbG9n
Z2VyLmVycm9yKHJlc3AudGV4dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcu
cHkKaW5kZXggYmE3Nzc0NDQ2ZTA4MzZlMzE5YzBkMDcxZDYyNjJlNTYyZmIxNDZlMS4uYmE1OTk3
ZjY4YTYxNWY0OTMyMmFjMDA5YTE1YWViZjBhNWEwNzFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcHJfcHJldmlldy5weQpAQCAtMTIzLDYgKzEyMywyNyBAQCBjbGFzcyBQcm9qZWN0KG9iamVj
dCk6CiAKICAgICAgICAgcmV0dXJuIGRhdGFbJ2l0ZW1zJ10KIAorICAgIEBndWFyZCgnY29yZScp
CisgICAgZGVmIHB1bGxfcmVxdWVzdF9pc19mcm9tX2Zvcmsoc2VsZiwgcHVsbF9yZXF1ZXN0KToK
KyAgICAgICAgcHJfbnVtYmVyID0gcHVsbF9yZXF1ZXN0WydudW1iZXInXQorICAgICAgICB1cmwg
PSAne30vcmVwb3Mve30vcHVsbHMve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX2hvc3Qs
IHNlbGYuX2dpdGh1Yl9wcm9qZWN0LCBwcl9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIGxv
Z2dlci5pbmZvKCdDaGVja2luZyBpZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBw
cl9udW1iZXIpCisKKyAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKworICAg
ICAgICByZXBvX25hbWUgPSBkYXRhWydoZWFkJ11bJ3JlcG8nXVsnZnVsbF9uYW1lJ10KKyAgICAg
ICAgaXNfZm9yayA9IHJlcG9fbmFtZSAhPSBzZWxmLl9naXRodWJfcHJvamVjdAorCisgICAgICAg
IGxvZ2dlci5pbmZvKAorICAgICAgICAgICAgJ1B1bGwgcmVxdWVzdCAlcyBpcyBmcm9tIFwnJXNc
Jy4gSXMgYSBmb3JrOiAlcycsCisgICAgICAgICAgICBwcl9udW1iZXIsIHJlcG9fbmFtZSwgaXNf
Zm9yaworICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGlzX2ZvcmsKKwogICAgIEBndWFyZCgn
Y29yZScpCiAgICAgZGVmIGNyZWF0ZV9yZWYoc2VsZiwgcmVmc3BlYywgcmV2aXNpb24pOgogICAg
ICAgICB1cmwgPSAne30vcmVwb3Mve30vZ2l0L3JlZnMnLmZvcm1hdChzZWxmLl9ob3N0LCBzZWxm
Ll9naXRodWJfcHJvamVjdCkKQEAgLTE4MCw5ICsyMDEsOCBAQCBjbGFzcyBQcm9qZWN0KG9iamVj
dCk6CiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX2RlcGxveW1lbnQoc2VsZiwg
dGFyZ2V0LCBkZXBsb3ltZW50LCBzdGF0ZSwgZGVzY3JpcHRpb249JycpOgogICAgICAgICBpZiBz
dGF0ZSBpbiAoJ3BlbmRpbmcnLCAnc3VjY2VzcycpOgotICAgICAgICAgICAgZW52aXJvbm1lbnRf
dXJsID0gJ3t9L3N1Ym1pc3Npb25zL3t9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0
LCBkZXBsb3ltZW50WydlbnZpcm9ubWVudCddCi0gICAgICAgICAgICApCisgICAgICAgICAgICBw
cl9udW1iZXIgPSBkZXBsb3ltZW50WydlbnZpcm9ubWVudCddW2xlbihERVBMT1lNRU5UX1BSRUZJ
WCk6XQorICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3t9Jy5mb3JtYXQodGFyZ2V0
LCBwcl9udW1iZXIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwg
PSBOb25lCiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97fS9kZXBsb3ltZW50cy97fS9zdGF0dXNl
cycuZm9ybWF0KApAQCAtMjQ2LDEzICsyNjYsMTYgQEAgZGVmIGhhc19taXJyb3JpbmdfbGFiZWwo
cHVsbF9yZXF1ZXN0KToKIAogICAgIHJldHVybiBGYWxzZQogCi1kZWYgc2hvdWxkX2JlX21pcnJv
cmVkKHB1bGxfcmVxdWVzdCk6CitkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxf
cmVxdWVzdCk6CiAgICAgcmV0dXJuICgKLSAgICAgICAgaXNfb3BlbihwdWxsX3JlcXVlc3QpIGFu
ZAotICAgICAgICBwdWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElP
Tl9HSVRIVUJfVVNFUlMgYW5kICgKLSAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fz
c29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TIG9yCi0gICAgICAgICAg
ICBoYXNfbWlycm9yaW5nX2xhYmVsKHB1bGxfcmVxdWVzdCkKLSAgICAgICAgKQorICAgICAgICBp
c19vcGVuKHB1bGxfcmVxdWVzdCkgYW5kICgKKyAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFi
ZWwocHVsbF9yZXF1ZXN0KSBvciAoCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2Vy
J11bJ2xvZ2luJ10gbm90IGluIEFVVE9NQVRJT05fR0lUSFVCX1VTRVJTIGFuZAorICAgICAgICAg
ICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRI
T1JfQVNTT0NJQVRJT05TCisgICAgICAgICAgICApCisgICAgICAgICkgYW5kCisgICAgICAgICMg
UXVlcnkgdGhpcyBsYXN0IGFzIGl0IHJlcXVpcmVzIGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5
CisgICAgICAgIG5vdCBwcm9qZWN0LnB1bGxfcmVxdWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1
ZXN0KQogICAgICkKIAogZGVmIGlzX2RlcGxveWVkKGhvc3QsIGRlcGxveW1lbnQpOgpAQCAtMjkx
LDcgKzMxNCw3IEBAIGRlZiBzeW5jaHJvbml6ZShob3N0LCBnaXRodWJfcHJvamVjdCwgd2luZG93
KToKICAgICAgICAgcmV2aXNpb25fdHJ1c3RlZCA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3Bl
Y190cnVzdGVkKQogICAgICAgICByZXZpc2lvbl9vcGVuID0gcmVtb3RlLmdldF9yZXZpc2lvbihy
ZWZzcGVjX29wZW4pCiAKLSAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVxdWVz
dCk6CisgICAgICAgIGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3Qp
OgogICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1B1bGwgUmVxdWVzdCBzaG91bGQgYmUgbWlycm9y
ZWQnKQogCiAgICAgICAgICAgICBpZiByZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3J1bl90Yy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvcnVuX3RjLnB5CmluZGV4IGY5MDg2YTMxYmQ5M2JhZjcyODE5ZmM0NTBmOTBhMjkw
ZDY1Njc0ZmQuLmE1YThjYTdkYjI5YWI0ODRmZTM5NzQ3NWY5YjVjZmM0MTJkNjUxN2YgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcnVuX3RjLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5CkBAIC0zNiwxMSArMzYsMTUgQEAgdGhlIHNlcmlhbGl6
YXRpb24gb2YgYSBHaXRIdWIgZXZlbnQgcGF5bG9hZC4KICIiIgogCiBpbXBvcnQgYXJncGFyc2UK
K2ltcG9ydCBmbm1hdGNoCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHN5cworaW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRp
bWUKK2ltcG9ydCB6aXBmaWxlCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgU29ja2V0RXJy
b3IgICMgTk9RQTogTjgxMgogaW1wb3J0IGVycm5vCiB0cnk6CkBAIC0xNDcsMTMgKzE1MSwxNCBA
QCBkZWYgaW5zdGFsbF9jaHJvbWUoY2hhbm5lbCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
IlVucmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKICAgICBkZXN0
ID0gb3MucGF0aC5qb2luKCIvdG1wIiwgZGViX2FyY2hpdmUpCi0gICAgcmVzcCA9IHVybG9wZW4o
Imh0dHBzOi8vZGwuZ29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUpCisg
ICAgZGViX3VybCA9ICJodHRwczovL2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRl
Yl9hcmNoaXZlCiAgICAgd2l0aCBvcGVuKGRlc3QsICJ3IikgYXMgZjoKLSAgICAgICAgZi53cml0
ZShyZXNwLnJlYWQoKSkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgZGVi
X3VybCkKIAogICAgIHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQog
ICAgIHJ1bihbInN1ZG8iLCAiZ2RlYmkiLCAiLXFuIiwgIi90bXAvJXMiICUgZGViX2FyY2hpdmVd
KQogCisKIGRlZiBpbnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwp
OgogICAgICMgQ29uZmlndXJlIHdlYmtpdGd0ay5vcmcvZGViaWFuIHJlcG9zaXRvcnkgZm9yICRj
aGFubmVsIGFuZCBwaW4gaXQgd2l0aCBtYXhpbXVtIHByaW9yaXR5CiAgICAgcnVuKFsic3VkbyIs
ICJhcHQta2V5IiwgImFkdiIsICItLWZldGNoLWtleXMiLCAiaHR0cHM6Ly93ZWJraXRndGsub3Jn
L2RlYmlhbi9hcHQua2V5Il0pCkBAIC0xNjksMTUgKzE3NCwxNiBAQCBkZWYgaW5zdGFsbF93ZWJr
aXRndGtfZnJvbV9hcHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICBydW4oWyJzdWRvIiwgImFw
dC1nZXQiLCAiLXFxeSIsICItdCIsICJiaW9uaWMtd3B0LXdlYmtpdC11cGRhdGVzIiwgImluc3Rh
bGwiLCAid2Via2l0Mmd0ay1kcml2ZXIiXSkKIAogCi0jIERvd25sb2FkIGFuIFVSTCBpbiBjaHVu
a3MgYW5kIHNhdmVzIGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0cnVuY2F0aW5nIGl0KQotIyBJ
dCBkb2Vzbid0IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNz
LgotIyBJdCByZXRyaWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8g
bWF4X3JldHJpZXMuCi1kZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4
X3JldHJpZXM9Myk6Ci0gICAgZG93bmxvYWRfc3VjY2VlZCA9IEZhbHNlCi0gICAgaWYgbWF4X3Jl
dHJpZXMgPCAwOgotICAgICAgICBtYXhfcmV0cmllcyA9IDAKLSAgICBmb3IgY3VycmVudF9yZXRy
eSBpbiByYW5nZShtYXhfcmV0cmllcysxKToKK2RlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRv
cihmZCwgdXJsLCBtYXhfcmV0cmllcz01KToKKyAgICAiIiJEb3dubG9hZCBhbiBVUkwgaW4gY2h1
bmtzIGFuZCBzYXZlcyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKKyAg
ICBJdCBkb2Vzbid0IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNj
ZXNzLgorICAgIEl0IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2YgRUNPTk5SRVNFVCB1
cCB0byBtYXhfcmV0cmllcy4iIiIKKyAgICBpZiBtYXhfcmV0cmllcyA8IDE6CisgICAgICAgIG1h
eF9yZXRyaWVzID0gMQorICAgIHdhaXQgPSAyCisgICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFu
Z2UoMSwgbWF4X3JldHJpZXMrMSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJJ
TkZPOiBEb3dubG9hZGluZyAlcyBUcnkgJWQvJWQiICUgKHVybCwgY3VycmVudF9yZXRyeSwgbWF4
X3JldHJpZXMpKQogICAgICAgICAgICAgcmVzcCA9IHVybG9wZW4odXJsKQogICAgICAgICAgICAg
IyBXZSBtYXkgY29tZSBoZXJlIGluIGEgcmV0cnksIGVuc3VyZSB0byB0cnVuY2F0ZSBmZCBiZWZv
cmUgc3RhcnQgd3JpdGluZy4KICAgICAgICAgICAgIGZkLnNlZWsoMCkKQEAgLTE4OCwyMiArMTk0
LDIzIEBAIGRlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBtYXhfcmV0cmll
cz0zKToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgRG93bmxvYWQgZmluaXNoZWQKICAg
ICAgICAgICAgICAgICBmZC53cml0ZShjaHVuaykKICAgICAgICAgICAgIGZkLmZsdXNoKCkKLSAg
ICAgICAgICAgIGRvd25sb2FkX3N1Y2NlZWQgPSBUcnVlCi0gICAgICAgICAgICBicmVhayAgIyBT
dWNlc3MKKyAgICAgICAgICAgICMgU3VjY2VzcworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAg
IGV4Y2VwdCBTb2NrZXRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJu
by5FQ09OTlJFU0VUOgotICAgICAgICAgICAgICAgIHJhaXNlICAjIFVua25vd24gZXJyb3IKLSAg
ICAgICAgICAgIGlmIGN1cnJlbnRfcmV0cnkgPCBtYXhfcmV0cmllczoKLSAgICAgICAgICAgICAg
ICBwcmludCgiRVJST1I6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gUmV0cnlpbmcgLi4uIikK
LSAgICAgICAgICAgICAgICBjb250aW51ZSAgIyBSZXRyeQotICAgIHJldHVybiBkb3dubG9hZF9z
dWNjZWVkCisgICAgICAgICAgICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXMgYW5kIGUu
ZXJybm8gPT0gZXJybm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAjIFJldHJ5CisgICAg
ICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5
aW5nIGFmdGVyICVkcy4uLiIgJSB3YWl0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAod2Fp
dCkKKyAgICAgICAgICAgICAgICB3YWl0ICo9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgIyBNYXhpbXVtIHJldHJpZXMgb3IgdW5rbm93biBlcnJvcgorICAgICAgICAgICAg
ICAgIHJhaXNlCiAKIAogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fdGFyYmFsbF9idW5kbGUo
Y2hhbm5lbCk6CiAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIu
dGFyLnh6IikgYXMgdGVtcF90YXJiYWxsOgogICAgICAgICBkb3dubG9hZF91cmwgPSAiaHR0cHM6
Ly93ZWJraXRndGsub3JnL2J1aWx0LXByb2R1Y3RzL25pZ2h0bHkvd2Via2l0Z3RrLW5pZ2h0bHkt
YnVpbGQtbGFzdC50YXIueHoiCi0gICAgICAgIGlmIG5vdCBkb3dubG9hZF91cmxfdG9fZGVzY3Jp
cHRvcih0ZW1wX3RhcmJhbGwsIGRvd25sb2FkX3VybCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50
aW1lRXJyb3IoIkNhbid0IGRvd25sb2FkICVzLiBBYm9ydGluZyIgJSBkb3dubG9hZF91cmwpCisg
ICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRf
dXJsKQogICAgICAgICBydW4oWyJzdWRvIiwgInRhciIsICJ4ZmEiLCB0ZW1wX3RhcmJhbGwubmFt
ZSwgIi1DIiwgIi8iXSkKICAgICAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgICAgcnVuKFsic3Vk
byIsICJhcHQtZ2V0IiwgIi1xcXkiLCAidXBkYXRlIl0pCkBAIC0yMTgsNiArMjI1LDcgQEAgZGVm
IGluc3RhbGxfd2Via2l0Z3RrKGNoYW5uZWwpOgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoIlVucmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAK
KwogZGVmIHN0YXJ0X3h2ZmIoKToKICAgICBzdGFydChbInN1ZG8iLCAiWHZmYiIsIG9zLmVudmly
b25bIkRJU1BMQVkiXSwgIi1zY3JlZW4iLCAiMCIsCiAgICAgICAgICAgICIlc3glc3glcyIgJSAo
b3MuZW52aXJvblsiU0NSRUVOX1dJRFRIIl0sCkBAIC0yNDYsNyArMjU0LDY3IEBAIGRlZiBzZXRf
dmFyaWFibGVzKGV2ZW50KToKICAgICAgICAgb3MuZW52aXJvblsiR0lUSFVCX0JSQU5DSCJdID0g
YnJhbmNoCiAKIAorZGVmIHRhc2tfdXJsKHRhc2tfaWQpOgorICAgIHJvb3RfdXJsID0gb3MuZW52
aXJvblsnVEFTS0NMVVNURVJfUk9PVF9VUkwnXQorICAgIGlmIHJvb3RfdXJsID09ICdodHRwczov
L3Rhc2tjbHVzdGVyLm5ldCc6CisgICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50
YXNrY2x1c3Rlci5uZXQvdjEvdGFzayIKKyAgICBlbHNlOgorICAgICAgICBxdWV1ZV9iYXNlID0g
cm9vdF91cmwgKyAiL2FwaS9xdWV1ZS92MS90YXNrIgorCisgICAgcmV0dXJuICIlcy8lcyIgJSAo
cXVldWVfYmFzZSwgdGFza19pZCkKKworCitkZWYgZG93bmxvYWRfYXJ0aWZhY3RzKGFydGlmYWN0
cyk6CisgICAgYXJ0aWZhY3RfbGlzdF9ieV90YXNrID0ge30KKyAgICBmb3IgYXJ0aWZhY3QgaW4g
YXJ0aWZhY3RzOgorICAgICAgICBiYXNlX3VybCA9IHRhc2tfdXJsKGFydGlmYWN0WyJ0YXNrIl0p
CisgICAgICAgIGlmIGFydGlmYWN0WyJ0YXNrIl0gbm90IGluIGFydGlmYWN0X2xpc3RfYnlfdGFz
azoKKyAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAg
ICAgICAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgYmFzZV91cmwgKyAiL2Fy
dGlmYWN0cyIpCisgICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgYXJ0
aWZhY3RzX2RhdGEgPSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgIGFydGlmYWN0X2xpc3RfYnlf
dGFza1thcnRpZmFjdFsidGFzayJdXSA9IGFydGlmYWN0c19kYXRhCisKKyAgICAgICAgYXJ0aWZh
Y3RzX2RhdGEgPSBhcnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0aWZhY3RbInRhc2siXV0KKyAgICAg
ICAgcHJpbnQoIkRFQlVHOiBHb3QgYXJ0aWZhY3RzICVzIiAlIGFydGlmYWN0c19kYXRhKQorICAg
ICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gYXJ0aWZhY3RzX2Rh
dGFbImFydGlmYWN0cyJdOgorICAgICAgICAgICAgcHJpbnQoIkRFQlVHOiBjYW5kaWRhdGU6ICVz
IGdsb2I6ICVzIiAlIChjYW5kaWRhdGVbIm5hbWUiXSwgYXJ0aWZhY3RbImdsb2IiXSkpCisgICAg
ICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJn
bG9iIl0pOgorICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIHBy
aW50KCJJTkZPOiBGZXRjaGluZyBhcml0ZmFjdCAlcyBmcm9tIHRhc2sgJXMiICUgKGNhbmRpZGF0
ZVsibmFtZSJdLCBhcnRpZmFjdFsidGFzayJdKSkKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUg
PSBjYW5kaWRhdGVbIm5hbWUiXS5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgICAgIHVy
bCA9IGJhc2VfdXJsICsgIi9hcnRpZmFjdHMvIiArIGNhbmRpZGF0ZVsibmFtZSJdCisgICAgICAg
ICAgICAgICAgZGVzdF9wYXRoID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIs
IGFydGlmYWN0WyJkZXN0Il0sIGZpbGVfbmFtZSkpCisgICAgICAgICAgICAgICAgZGVzdF9kaXIg
PSBvcy5wYXRoLmRpcm5hbWUoZGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhkZXN0X2Rpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRl
c3RfZGlyKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0X3BhdGgsICJ3YiIpIGFzIGY6
CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIHVybCkK
KworICAgICAgICAgICAgICAgIGlmIGFydGlmYWN0LmdldCgiZXh0cmFjdCIpOgorICAgICAgICAg
ICAgICAgICAgICB1bnBhY2soZGVzdF9wYXRoKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAg
ICAgICAgICBwcmludCgiV0FSTklORzogTm8gYXJ0aWZhY3QgZm91bmQgbWF0Y2hpbmcgJXMgaW4g
dGFzayAlcyIgJSAoYXJ0aWZhY3RbImdsb2IiXSwgYXJ0aWZhY3RbInRhc2siXSkpCisKKworZGVm
IHVucGFjayhwYXRoKToKKyAgICBkZXN0ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisgICAgaWYg
dGFyZmlsZS5pc190YXJmaWxlKHBhdGgpOgorICAgICAgICBydW4oWyJ0YXIiLCAiLXhmIiwgcGF0
aF0sIGN3ZD1vcy5wYXRoLmRpcm5hbWUocGF0aCkpCisgICAgZWxpZiB6aXBmaWxlLmlzX3ppcGZp
bGUocGF0aCk6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHBhdGgpIGFzIGFyY2hpdmU6
CisgICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3RhbGwoZGVzdCkKKyAgICBlbHNlOgorICAgICAg
ICBwcmludCgiRVJST1I6IERvbid0IGtub3cgaG93IHRvIGV4dHJhY3QgJXMiICUgcGF0aCkKKyAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uCisKKwogZGVmIHNldHVwX2Vudmlyb25tZW50KGFyZ3MpOgor
ICAgIGlmICJUQVNLX0FSVElGQUNUUyIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJ0aWZhY3Rz
ID0ganNvbi5sb2Fkcyhvcy5lbnZpcm9uWyJUQVNLX0FSVElGQUNUUyJdKQorICAgICAgICBkb3du
bG9hZF9hcnRpZmFjdHMoYXJ0aWZhY3RzKQorCiAgICAgaWYgYXJncy5ob3N0c19maWxlOgogICAg
ICAgICBtYWtlX2hvc3RzX2ZpbGUoKQogCkBAIC0zNjQsMTYgKzQzMiwxMCBAQCBkZWYgZmV0Y2hf
ZXZlbnRfZGF0YSgpOgogICAgICAgICAjIEZvciBleGFtcGxlIHVuZGVyIGxvY2FsIHRlc3RpbmcK
ICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NM
VVNURVJfUk9PVF9VUkwnXQotICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVy
Lm5ldCc6Ci0gICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5u
ZXQvdjEvdGFzayIKLSAgICBlbHNlOgotICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAi
L2FwaS9xdWV1ZS92MS90YXNrIgotCi0KLSAgICByZXNwID0gdXJsb3BlbigiJXMvJXMiICUgKHF1
ZXVlX2Jhc2UsIHRhc2tfaWQpKQotCi0gICAgdGFza19kYXRhID0ganNvbi5sb2FkKHJlc3ApCisg
ICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgZG93bmxvYWRf
dXJsX3RvX2Rlc2NyaXB0b3IoZiwgdGFza191cmwodGFza19pZCkpCisgICAgICAgIGYuc2Vlaygw
KQorICAgICAgICB0YXNrX2RhdGEgPSBqc29uLmxvYWQoZikKICAgICBldmVudF9kYXRhID0gdGFz
a19kYXRhLmdldCgiZXh0cmEiLCB7fSkuZ2V0KCJnaXRodWJfZXZlbnQiKQogICAgIGlmIGV2ZW50
X2RhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGV2ZW50X2RhdGEp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CmluZGV4IGFjNWFi
YzEyYjFmMTdkMmZjOTNjNmFjNTYzNmJmZDZmZTdjYWZhMDQuLmQ4ZTQyY2NlYTIxMTI2OTRjNmQz
YjhiMWFhNmNhNzAzNGVhMjIyODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2Ns
dXN0ZXItcnVuLnB5CkBAIC05LDEwICs5LDE4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQg
c3lzCiAKIGJyb3dzZXJfc3BlY2lmaWNfYXJncyA9IHsKLSAgICAiZmlyZWZveCI6IFsiLS1pbnN0
YWxsLWJyb3dzZXIiXSwKICAgICAic2Vydm8iOiBbIi0taW5zdGFsbC1icm93c2VyIiwgIi0tcHJv
Y2Vzc2VzPTEyIl0KIH0KIAorZGVmIGdldF9icm93c2VyX2FyZ3MocHJvZHVjdCk6CisgICAgaWYg
cHJvZHVjdCA9PSAiZmlyZWZveCI6CisgICAgICAgIGxvY2FsX2JpbmFyeSA9IG9zLnBhdGguZXhw
YW5kdXNlcihvcy5wYXRoLmpvaW4oIn4iLCAiYnVpbGQiLCAiZmlyZWZveCIsICJmaXJlZm94Iikp
CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2FsX2JpbmFyeSk6CisgICAgICAgICAgICBy
ZXR1cm4gWyItLWJpbmFyeT0lcyIgJSBsb2NhbF9iaW5hcnldCisgICAgICAgIHByaW50KCJXQVJO
SU5HOiBMb2NhbCBmaXJlZm94IGJpbmFyeSBub3QgZm91bmQiKQorICAgICAgICByZXR1cm4gWyIt
LWluc3RhbGwtYnJvd3NlciJdCisgICAgcmV0dXJuIGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQo
cHJvZHVjdCwgW10pCisKIAogZGVmIGZpbmRfd3B0cmVwb3J0KGFyZ3MpOgogICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKQEAgLTY2LDcgKzc0LDcgQEAgZGVmIG1haW4ocHJv
ZHVjdCwgY29tbWl0X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgICAgICItLW5vLWhlYWRsZXNzIiwK
ICAgICAgICAgIi0tdmVyaWZ5LWxvZy1mdWxsIgogICAgIF0KLSAgICB3cHRfYXJncyArPSBicm93
c2VyX3NwZWNpZmljX2FyZ3MuZ2V0KHByb2R1Y3QsIFtdKQorICAgIHdwdF9hcmdzICs9IGdldF9i
cm93c2VyX2FyZ3MocHJvZHVjdCkKIAogICAgICMgSGFjayB0byBydW4gc2Vydm8gd2l0aCBvbmUg
cHJvY2VzcyBvbmx5IGZvciB3ZHNwZWMKICAgICBpZiBwcm9kdWN0ID09ICJzZXJ2byIgYW5kICIt
LXRlc3QtdHlwZT13ZHNwZWMiIGluIHdwdF9hcmdzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JF
QURNRS5tZAppbmRleCAxMWYzNjdmOTg2Zjk3ZmRiZmU0MGYwOWIyYWU0MTE0ZjI2MzkxNmY3Li43
ODVjODJjY2EzOWNkZmIxODZmZGEyNDEwM2E1YTZmZDY0OWJlZTVhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURN
RS5tZAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL3RjL1JFQURNRS5tZApAQCAtNDAsNiArNDAsMTQgQEAgdG9wLWxldmVsIHByb3BlcnRp
ZXM6CiAqIGBuYW1lYDogT3B0aW9uYWwgU3RyaW5nLiBOYW1lIHRvIHVzZSBmb3IgdGhlIHRhc2sg
b3ZlcnJpZGluZyB0aGUKICAgcHJvcGVydHkgbmFtZS4gVGhpcyBpcyB1c2VmdWwgaW4gY29tYmlu
YXRpb24gd2l0aCBzdWJzdGl0dXRpb25zCiAgIGRlc2NyaWJlZCBiZWxvdy4KKyogYGRvd25sb2Fk
LWFydGlmYWN0c2A6IE9wdGlvbmFsIE9iamVjdC4gQW4gYXJ0aWZhY3QgdG8gZG93bmxvYWQgZnJv
bQorICBhIHRhc2sgdGhhdCB0aGlzIHRhc2sgZGVwZW5kcyBvbi4gVGhpcyBoYXMgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzOgorICAtIGB0YXNrYCAtIE5hbWUgb2YgdGhlIHRhc2sgcHJvZHVjaW5n
IHRoZSBhcnRpZmFjdAorICAtIGBnbG9iYCAtIEEgZ2xvYiBwYXR0ZXJuIGZvciB0aGUgZmlsZW5h
bWUgb2YgdGhlIGFydGlmYWN0CisgIC0gYGRlc3RgIC0gQSBkaXJlY3RvcnkgcmVsdGl2ZSB0byB0
aGUgaG9tZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UKKyAgICAgICAgICAgICB0aGUgYXJ0
aWZhY3QKKyAgLSBgZXh0cmFjdGAgLSBPcHRpb25hbC4gQSBib29sZWFuIGluZGljYXRpbmcgd2hl
dGhlciBhbiBhcmNoaXZlIGFydGlmYWN0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dHJh
Y3RlZCBpbi1wbGFjZS4KIAogIyMgVGFzayBFeHBhbnNpb25zCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNp
b24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3RjL2RlY2lzaW9uLnB5CmluZGV4IDBjOTM1YjkzZjhlZTg3ZjY2ZGFkZWZkZGQzYTExNjE2
MGVkOWRkM2YuLmY4ZjE4NmY3NDRkODA4Mjc5MGE4YzNiZWM4NjU0ZmExNWNhN2YzZTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvZGVjaXNpb24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weQpAQCAtMTk5LDYgKzE5OSw3IEBAIGRl
ZiBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQsIHRhc2spOgogfi9zdGFydC5zaCBcCiAgICUocmVw
b191cmwpcyBcCiAgICUoZmV0Y2hfcmVmKXM7CitzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6
ZGVhZHNuYWtlcy9wcGEKICUoaW5zdGFsbF9zdHIpcwogY2Qgd2ViLXBsYXRmb3JtLXRlc3RzOwog
Li90b29scy9jaS9ydW5fdGMucHkgJShvcHRpb25zX3N0cilzIC0tICUodGFza19jbWQpczsKQEAg
LTIxMyw3ICsyMTQsNyBAQCBkZWYgZ2V0X293bmVyKGV2ZW50KToKICAgICByZXR1cm4gIndlYi1w
bGF0Zm9ybS10ZXN0c0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20iCiAKIAotZGVmIGNyZWF0ZV90
Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKK2RlZiBj
cmVhdGVfdGNfdGFzayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywg
ZW52X2V4dHJhPU5vbmUpOgogICAgIGNvbW1hbmQgPSBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQs
IHRhc2spCiAgICAgdGFza19pZCA9IHRhc2tjbHVzdGVyLnNsdWdJZCgpCiAgICAgdGFza19kYXRh
ID0gewpAQCAtMjQwLDEyICsyNDEsMjQgQEAgZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNr
LCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKICAgICAgICAgICAgICJnaXRodWJfZXZl
bnQiOiBqc29uLmR1bXBzKGV2ZW50KQogICAgICAgICB9CiAgICAgfQorICAgIGlmIGVudl9leHRy
YToKKyAgICAgICAgdGFza19kYXRhWyJwYXlsb2FkIl1bImVudiJdLnVwZGF0ZShlbnZfZXh0cmEp
CiAgICAgaWYgZGVwZW5kc19vbl9pZHM6CiAgICAgICAgIHRhc2tfZGF0YVsiZGVwZW5kZW5jaWVz
Il0gPSBkZXBlbmRzX29uX2lkcwogICAgICAgICB0YXNrX2RhdGFbInJlcXVpcmVzIl0gPSAiYWxs
LWNvbXBsZXRlZCIKICAgICByZXR1cm4gdGFza19pZCwgdGFza19kYXRhCiAKIAorZGVmIGdldF9h
cnRpZmFjdF9kYXRhKGFydGlmYWN0LCB0YXNrX2lkX21hcCk6CisgICAgdGFza19pZCwgZGF0YSA9
IHRhc2tfaWRfbWFwW2FydGlmYWN0WyJ0YXNrIl1dCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRh
c2siOiB0YXNrX2lkLAorICAgICAgICAiZ2xvYiI6IGFydGlmYWN0WyJnbG9iIl0sCisgICAgICAg
ICJkZXN0IjogYXJ0aWZhY3RbImRlc3QiXSwKKyAgICAgICAgImV4dHJhY3QiOiBhcnRpZmFjdC5n
ZXQoImV4dHJhY3QiLCBGYWxzZSkKKyAgICB9CisKKwogZGVmIGJ1aWxkX3Rhc2tfZ3JhcGgoZXZl
bnQsIGFsbF90YXNrcywgdGFza3MpOgogICAgIHRhc2tfaWRfbWFwID0gT3JkZXJlZERpY3QoKQog
ICAgIHRhc2tncm91cF9pZCA9IG9zLmVudmlyb24uZ2V0KCJUQVNLX0lEIiwgdGFza2NsdXN0ZXIu
c2x1Z0lkKCkpCkBAIC0yNTgsNyArMjcxLDE0IEBAIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50
LCBhbGxfdGFza3MsIHRhc2tzKToKICAgICAgICAgICAgICAgICAgICAgYWRkX3Rhc2soZGVwZW5k
c19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGFza3NbZGVwZW5kc19u
YW1lXSkKICAgICAgICAgICAgICAgICBkZXBlbmRzX29uX2lkcy5hcHBlbmQodGFza19pZF9tYXBb
ZGVwZW5kc19uYW1lXVswXSkKLSAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3Rj
X3Rhc2soZXZlbnQsIHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpCisgICAgICAg
IGVudl9leHRyYSA9IHt9CisgICAgICAgIGlmICJkb3dubG9hZC1hcnRpZmFjdHMiIGluIHRhc2s6
CisgICAgICAgICAgICBlbnZfZXh0cmFbIlRBU0tfQVJUSUZBQ1RTIl0gPSBqc29uLmR1bXBzKAor
ICAgICAgICAgICAgICAgIFtnZXRfYXJ0aWZhY3RfZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXAp
CisgICAgICAgICAgICAgICAgIGZvciBhcnRpZmFjdCBpbiB0YXNrWyJkb3dubG9hZC1hcnRpZmFj
dHMiXV0pCisKKyAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZl
bnQsIHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9leHRyYT1lbnZfZXh0cmEpCiAgICAgICAg
IHRhc2tfaWRfbWFwW3Rhc2tfbmFtZV0gPSAodGFza19pZCwgdGFza19kYXRhKQogCiAgICAgZm9y
IHRhc2tfbmFtZSwgdGFzayBpbiBpdGVyaXRlbXModGFza3MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90
ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvdGMvdGFza3MvdGVzdC55bWwKaW5kZXggZTgwZTc5NDIwM2VkY2EzYzhkNWYxOWVhOTgz
M2E0Zjc5ZTk3OWYwOC4uMzE4NDM3YTgwZWMzMjQwNzIxYTE3Y2M2MjUzZjI0MTEwOTAzOGI2NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy90YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC00LDcgKzQs
NyBAQCBjb21wb25lbnRzOgogICAgIHdvcmtlclR5cGU6IGNpCiAgICAgc2NoZWR1bGVySWQ6IHRh
c2tjbHVzdGVyLWdpdGh1YgogICAgIGRlYWRsaW5lOiAiMjQgaG91cnMiCi0gICAgaW1hZ2U6IGhh
cmpnYW0vd2ViLXBsYXRmb3JtLXRlc3RzOjAuMzQKKyAgICBpbWFnZTogd2VicGxhdGZvcm10ZXN0
cy93cHQ6MC4zNwogICAgIG1heFJ1blRpbWU6IDcyMDAKICAgICBhcnRpZmFjdHM6CiAgICAgICBw
dWJsaWMvcmVzdWx0czoKQEAgLTgyLDYgKzgyLDExIEBAIGNvbXBvbmVudHM6CiAgIGJyb3dzZXIt
ZmlyZWZveDoKICAgICBkZXBlbmRzLW9uOgogICAgICAgLSBkb3dubG9hZC1maXJlZm94LSR7dmFy
cy5jaGFubmVsfQorICAgIGRvd25sb2FkLWFydGlmYWN0czoKKyAgICAgIC0gdGFzazogZG93bmxv
YWQtZmlyZWZveC0ke3ZhcnMuY2hhbm5lbH0KKyAgICAgICAgZ2xvYjogcHVibGljL3Jlc3VsdHMv
ZmlyZWZveC0ke3ZhcnMuY2hhbm5lbH0uKgorICAgICAgICBkZXN0OiBidWlsZC8KKyAgICAgICAg
ZXh0cmFjdDogdHJ1ZQogCiAgIGJyb3dzZXItd2Via2l0Z3RrX21pbmlicm93c2VyOiB7fQogCkBA
IC05OCw4ICsxMDMsMTUgQEAgY29tcG9uZW50czoKICAgICBlbnY6CiAgICAgICBUT1hFTlY6IHB5
MzYKICAgICAgIFBZX0NPTE9SUzogMAorCisgIHRveC1weXRob24zODoKKyAgICBlbnY6CisgICAg
ICBUT1hFTlY6IHB5MzgKKyAgICAgIFBZX0NPTE9SUzogMAogICAgIGluc3RhbGw6Ci0gICAgICAt
IHB5dGhvbjMtcGlwCisgICAgICAtIHB5dGhvbjMuOAorICAgICAgLSBweXRob24zLjgtZGlzdHV0
aWxzCisgICAgICAtIHB5dGhvbjMuOC1kZXYKIAogICB0ZXN0cy1hZmZlY3RlZDoKICAgICBvcHRp
b25zOgpAQCAtMjE4LDYgKzIzMCw3IEBAIHRhc2tzOgogICAgICAgICAgICAgICAtLQogICAgICAg
ICAgICAgICAtLWNoYW5uZWw9JHt2YXJzLmNoYW5uZWx9CiAgICAgICAgICAgICAgIC0tdmVyaWZ5
CisgICAgICAgICAgICAgIC0tdmVyaWZ5LW5vLWNoYW9zLW1vZGUKIAogICAgICAgICAtIHdwdC0k
e3ZhcnMuYnJvd3Nlcn0tJHt2YXJzLmNoYW5uZWx9LXJlc3VsdHM6CiAgICAgICAgICAgICB1c2U6
CkBAIC0yNzIsNyArMjg1LDcgQEAgdGFza3M6CiAgICAgICAgIGRvd25sb2FkLWZpcmVmb3gtJHt2
YXJzLmNoYW5uZWx9OgogICAgICAgICAgIHVzZToKICAgICAgICAgICAgIC0gd3B0LWJhc2UKLSAg
ICAgICAgICBjb21tYW5kOiAiLi93cHQgaW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5h
dGlvbiAvaG9tZS90ZXN0L2FydGlmYWN0cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSBmaXJl
Zm94IGJyb3dzZXIiCisgICAgICAgICAgY29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9h
ZC1vbmx5IC0tZGVzdGluYXRpb24gL2hvbWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3Zh
cnMuY2hhbm5lbH0gIC0tcmVuYW1lPWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJv
d3NlciIKIAogICAtIGxpbnQ6CiAgICAgICB1c2U6CkBAIC0zMDYsOSArMzE5LDkgQEAgdGFza3M6
CiAgICAgICAgIHJ1bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpOgorICAtIHRvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAz
LjYpOgogICAgICAgZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xz
IHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDMsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgICAgVW5p
dCB0ZXN0cyBmb3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42LCBleGNsdWRpbmcgd3B0
cnVubmVyCiAgICAgICB1c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2Vy
LXByCkBAIC0zMjAsNyArMzMzLDIxIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAgICAg
ICAgIC0gdG9vbHNfdW5pdHRlc3QKIAotICAtIHRvb2xzL3dwdC8gdGVzdHM6CisgIC0gdG9vbHMv
IHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAg
VW5pdCB0ZXN0cyBmb3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy44LCBleGNsdWRpbmcg
d3B0cnVubmVyCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmln
Z2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2Np
L2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCisgICAgICBlbnY6CisgICAgICAgIEhZUE9USEVTSVNfUFJP
RklMRTogY2kKKyAgICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAg
IC0gdG9vbHNfdW5pdHRlc3QKKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAyKToKICAg
ICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNv
bW1hbmRzCiAgICAgICB1c2U6CkBAIC0zNDIsNiArMzY5LDUwIEBAIHRhc2tzOgogICAgICAgICBy
dW4tam9iOgogICAgICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKKyAgLSB0b29scy93cHQvIHRl
c3RzIChQeXRob24gMy42KToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3Jh
dGlvbiB0ZXN0cyBmb3Igd3B0IGNvbW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJh
c2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjMKKyAgICAgIGNv
bW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxp
Ym5zczMtdG9vbHMKKyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAg
ICAgICAgYnJvd3NlcjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQor
ICAgICAgICBjaGFubmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAg
ICBob3N0czogdHJ1ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAg
ICAgICAgLSB3cHRfaW50ZWdyYXRpb24KKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAz
LjgpOgorICAgICAgZGVzY3JpcHRpb246ID4tCisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZv
ciB3cHQgY29tbWFuZHMKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAt
IHRyaWdnZXItcHIKKyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNvbW1hbmQ6IC4vdG9v
bHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMK
KyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3Nl
cjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFu
bmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1
ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRf
aW50ZWdyYXRpb24KKwogICAtIHJlc291cmNlcy8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjog
Pi0KICAgICAgICAgVGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiBy
ZXNvdXJjZXMvCkBAIC0zNjIsMTAgKzQzMywxMiBAQCB0YXNrczoKICAgLSBpbmZyYXN0cnVjdHVy
ZS8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAgU21va2V0ZXN0cyBmb3Ig
d3B0cnVubmVyCisgICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CiAgICAgICB1
c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCi0gICAgICAgIC0g
dG94LXB5dGhvbjIKKyAgICAgICAgLSBicm93c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4v
dG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCiAgICAgICBpbnN0YWxsOgog
ICAgICAgICAtIGxpYm5zczMtdG9vbHMKQEAgLTM4MiwzICs0NTUsMjggQEAgdGFza3M6CiAgICAg
ICBzY2hlZHVsZS1pZjoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHdwdHJ1bm5lcl9p
bmZyYXN0cnVjdHVyZQorCisgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMyk6Cisg
ICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisg
ICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CisgICAgICB1c2U6CisgICAgICAg
IC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICBjb21tYW5kOiAuL3Rvb2xz
L2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaCAtLXB5MworICAgICAgaW5zdGFsbDoK
KyAgICAgICAgLSBweXRob24zLXBpcAorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgICAg
LSBsaWJhcHBpbmRpY2F0b3IxCisgICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgorICAgICAgb3B0
aW9uczoKKyAgICAgICAgb29tLWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAg
ICAgIC0gY2hyb21lCisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZi
OiB0cnVlCisgICAgICAgIGhvc3RzOiBmYWxzZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAg
IHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
dGMvdGVzdHMvdGVzdF92YWxpZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQppbmRleCBiMTcwOTI4
YjI5MGEyN2Y3NWVhZGE2NjE2MmVhNDA0YTFkYmFlOWY5Li40N2NiYzJlODdiYjgwNTk3ZGQ5ODBl
OWY5OGJjNDEzYjA0MTZiNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
ZXN0cy90ZXN0X3ZhbGlkLnB5CkBAIC02LDcgKzYsNiBAQCBpbXBvcnQganNvbmUKIGltcG9ydCBt
b2NrCiBpbXBvcnQgcHl0ZXN0CiBpbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKIGltcG9ydCB5
YW1sCiBmcm9tIGpzb25zY2hlbWEgaW1wb3J0IHZhbGlkYXRlCiAKQEAgLTIwLDkgKzE5LDYgQEAg
ZGVmIGRhdGFfcGF0aChmaWxlbmFtZSk6CiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihoZXJlLCAi
Li4iLCAidGVzdGRhdGEiLCBmaWxlbmFtZSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25faW5mby5tYWpvciA9PSAyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idGFza2Ns
dXN0ZXIgbGlicmFyeSBoYXMgYW4gZW5jb2RpbmcgYnVnICIKLSAgICAgICAgICAgICAgICAgICAi
aHR0cHM6Ly9naXRodWIuY29tL3Rhc2tjbHVzdGVyL2pzb24tZS9pc3N1ZXMvMzM4IikKIGRlZiB0
ZXN0X3ZlcmlmeV90YXNrY2x1c3Rlcl95bWwoKToKICAgICAiIiJWZXJpZnkgdGhhdCB0aGUganNv
bi1lIGluIHRoZSAudGFza2NsdXN0ZXIueW1sIGlzIHZhbGlkIiIiCiAgICAgd2l0aCBvcGVuKG9z
LnBhdGguam9pbihyb290LCAiLnRhc2tjbHVzdGVyLnltbCIpLCBlbmNvZGluZz0idXRmOCIpIGFz
IGY6CkBAIC00NiwxMSArNDIsMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAi
IiJWZXJpZnkgdGhhdCB0aGUgZGVjaXNpb24gdGFzayBwcm9kdWNlcyB0YXNrcyB3aXRoIGEgdmFs
aWQgcGF5bG9hZCIiIgogICAgIGZyb20gdG9vbHMuY2kudGMuZGVjaXNpb24gaW1wb3J0IGRlY2lk
ZQogCi0gICAgY3JlYXRlX3Rhc2tfc2NoZW1hID0gcmVxdWVzdHMuZ2V0KAotICAgICAgICAiaHR0
cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tjbHVzdGVyL2Js
b2IvbWFzdGVyL3NlcnZpY2VzL3F1ZXVlL3NjaGVtYXMvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC55
bWwiKQotICAgIGNyZWF0ZV90YXNrX3NjaGVtYSA9IHlhbWwuc2FmZV9sb2FkKGNyZWF0ZV90YXNr
X3NjaGVtYS5jb250ZW50KQorICAgIHIgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vY29tbXVuaXR5
LXRjLnNlcnZpY2VzLm1vemlsbGEuY29tL3NjaGVtYXMvcXVldWUvdjEvY3JlYXRlLXRhc2stcmVx
dWVzdC5qc29uIikKKyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIGNyZWF0ZV90YXNrX3Nj
aGVtYSA9IHIuanNvbigpCiAKLSAgICBwYXlsb2FkX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgiaHR0
cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL2RvY2tlci13b3JrZXIv
bWFzdGVyL3NjaGVtYXMvdjEvcGF5bG9hZC5qc29uIikuanNvbigpCisgICAgIyBUT0RPKEhleGNs
ZXMpOiBDaGFuZ2UgaXQgdG8gaHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5j
b20vcmVmZXJlbmNlcy9zY2hlbWFzL2RvY2tlci13b3JrZXIvdjEvcGF5bG9hZC5qc29uCisgICAg
IyBhZnRlciB0aGUgbmV4dCBDb21tdW5pdHktVEMgcmVsZWFzZSAoc2VlIGh0dHBzOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzk3MzIpLi4KKyAgICByID0gcmVxdWVz
dHMuZ2V0KAorICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tj
bHVzdGVyL3Rhc2tjbHVzdGVyLyIKKyAgICAgICAgIjNlZDUxMWVmOTExOWRhNTRmYzA5M2U5NzZi
N2I1OTU1ODc0YzliNTQvd29ya2Vycy9kb2NrZXItd29ya2VyL3NjaGVtYXMvdjEvcGF5bG9hZC5q
c29uIikKKyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIHBheWxvYWRfc2NoZW1hID0gci5q
c29uKCkKIAogICAgIGpvYnMgPSBbImxpbnQiLAogICAgICAgICAgICAgIm1hbmlmZXN0X3VwbG9h
ZCIsCkBAIC0xMjcsMTIgKzEyOSwxNyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAg
ICAgJ3dwdC1jaHJvbWUtZGV2LWNyYXNodGVzdC0xJywKICAgICAgICdsaW50J30pLAogICAgICgi
cHJfZXZlbnQuanNvbiIsIFRydWUsIHsiLnRhc2tjbHVzdGVyLnltbCIsIi50cmF2aXMueW1sIiwi
dG9vbHMvY2kvc3RhcnQuc2gifSwKLSAgICAgeydsaW50JywKKyAgICAgeydkb3dubG9hZC1maXJl
Zm94LW5pZ2h0bHknLAorICAgICAgJ2xpbnQnLAogICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5
dGhvbiAyKScsCi0gICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpJywKLSAgICAgICd0
b29scy93cHQvIHRlc3RzJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KScs
CisgICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAorICAgICAgJ3Rvb2xzL3dw
dC8gdGVzdHMgKFB5dGhvbiAyKScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMu
NiknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpJywKICAgICAgICdyZXNv
dXJjZXMvIHRlc3RzJywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnfSksCisgICAgICAn
aW5mcmFzdHJ1Y3R1cmUvIHRlc3RzJywKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5
dGhvbiAzKSd9KSwKICAgICAjIE1vcmUgdGVzdHMgYXJlIGFmZmVjdGVkIGluIHRoZSBhY3R1YWwg
UFIgYnV0IGl0IHNob3VsZG4ndCBhZmZlY3QgdGhlIHNjaGVkdWxlZCB0YXNrcwogICAgICgicHJf
ZXZlbnRfdGVzdHNfYWZmZWN0ZWQuanNvbiIsIFRydWUsIHsibGF5b3V0LWluc3RhYmlsaXR5L2Ns
aXAtbmVnYXRpdmUtYm90dG9tLW1hcmdpbi5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImxheW91dC1pbnN0YWJpbGl0eS9jb21wb3NpdGVkLWVsZW1l
bnQtbW92ZW1lbnQuaHRtbCJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rf
am9icy5weQppbmRleCA5NGY3OTk4NzcwY2Y1ZDhiYWQzNmQxODhkZDYzZTI1M2Y5ODE5OWE4Li5h
YTEyNzM4MjA0ZjM2NTJlMmRmOTY0NDQ0NjkzNjhlMGU2MjYxOTIzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rl
c3Rfam9icy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVm
IHRlc3RfYnVpbGRfY3NzKCk6CiAKIAogZGVmIHRlc3RfdXBkYXRlX2J1aWx0KCk6Ci0gICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyIyZGNvbnRleHQvZm9vLmh0bWwiXSwKKyAgICBhc3NlcnQgam9i
cy5nZXRfam9icyhbImh0bWwvY2FudmFzL2VsZW1lbnQvZm9vLmh0bWwiXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWls
dCJ9CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Zvby5odG1sIl0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVf
YnVpbHQifQotICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsib2Zmc2NyZWVuLWNhbnZhcy9mb28u
aHRtbCJdLAorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvb2Zmc2NyZWVu
L2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVf
YnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQogCiAKQEAgLTEzNCwzICsxMzQsNyBAQCBkZWYg
dGVzdF93cHRfaW5mcmFzdHJ1Y3R1cmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlcz1bIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0
cnVjdHVyZSJ9CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJpbmZyYXN0cnVjdHVyZS9hc3N1
bXB0aW9ucy9haGVtLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1b
IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVy
ZSJ9CisKK2RlZiB0ZXN0X3dkc3BlY19zdXBwb3J0KCk6CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pv
YnMoWyJ3ZWJkcml2ZXIvdGVzdHMvc3VwcG9ydC9fX2luaXRfXy5weSJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsi
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKaW5kZXggNjM0ODJmYjE4NGM3ZjE0ZGIwZWJkNDVj
MTg3OTRlM2E5NzcxYzkwYi4uMmQ5OTY2ZmM4Y2Y0MTg3OTEzYWRjZTg2MDllZTc1MGFkZTFiOTc5
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZp
ZXcucHkKQEAgLTExNSw2ICsxMTUsNyBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9i
amVjdCk6CiBjbGFzcyBSZXF1ZXN0cyhvYmplY3QpOgogICAgIGdldF9yYXRlID0gKCdHRVQnLCAn
L3JhdGVfbGltaXQnLCB7fSkKICAgICBzZWFyY2ggPSAoJ0dFVCcsICcvc2VhcmNoL2lzc3Vlcycs
IHt9KQorICAgIHByX2RldGFpbHMgPSAoJ0dFVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBv
L3B1bGxzLzIzJywge30pCiAgICAgcmVmX2NyZWF0ZV9vcGVuID0gKAogICAgICAgICAnUE9TVCcs
ICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidyZWZzL3Bycy1v
cGVuLzIzJ30KICAgICApCkBAIC0zNzYsNiArMzc3LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVf
c3luY19jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwK
KyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAg
ICAoUmVxdWVzdHMuc2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7CkBA
IC0zOTEsNiArMzkzLDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29sbGFib3JhdG9y
KCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAg
ICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rl
c3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3Jl
YXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0
ZWQsICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwg
e30pKSwKQEAgLTQ1Miw2ICs0NjMsNDEgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3Vu
dHJ1c3RlZF9jb250cmlidXRvcigpOgogICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKICAgICBh
c3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCitk
ZWYgdGVzdF9zeW5jaHJvbml6ZV9pZ25vcmVfcHVsbF9yZXF1ZXN0X2Zyb21fZm9yaygpOgorICAg
IGV4cGVjdGVkX3RyYWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9u
c2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9f
bGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAnbGFiZWxzJzogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xv
c2VkX2F0JzogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6
ICdncmFjZSd9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6
ICdDT0xMQUJPUkFUT1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAg
ICAgfQorICAgICAgICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAg
ICAgICdyZXBvJzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICdzb21l
LW90aGVyLW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkpLAorICAgIF0KKworICAgIHJldHVybmNv
ZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3Ry
YWZmaWMpCisKKyAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVt
YmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKwogZGVmIHRlc3Rfc3luY2hy
b25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9
IFsKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLApAQCAt
NDU5LDEyICs1MDUsMTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRy
aWJ1dG9yKCk6CiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0
KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAg
ICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChS
ZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3Rz
LnNlYXJjaCwgKAogICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICdpdGVtcyc6IFsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUg
aXMgYSBjb250cmlidXRvciAodW50cnVzdGVkKSwgYnV0IHRoZSBpc3N1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgIyBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgogICAgICAgICAgICAgICAg
ICAgICAgICAgJ2xhYmVscyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgJ3VzZXInOiB7J2xvZ2luJzogJ0hleGNsZXMnfSwKQEAgLTQ3NCw2ICs1MjMsNjAgQEAg
ZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgICAg
ICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAg
ICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8n
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3Qt
cmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgy
MDAsIHt9KSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9
KSksCisgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKKyAgICAg
ICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCisgICAgXQorCisgICAg
cmV0dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhw
ZWN0ZWRfdHJhZmZpYykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQg
c2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQorCitkZWYgdGVz
dF9zeW5jaHJvbml6ZV9zeW5jX2JvdF93aXRoX2xhYmVsKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZp
YyA9IFsKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAor
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVl
c3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAg
ICAgICAgMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIz
LAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMg
bm9ybWFsbHkgbm90IG1pcnJvcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhl
IGlzc3VlIGhhcyBiZWVuIGxhYmVsbGVkIGFzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAg
ICAnbGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAn
dXNlcic6IHsnbG9naW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAg
ICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICdoZWFkJzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAg
ICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAg
KFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLApAQCAtNDkyLDYgKzU5NSw3IEBA
IGRlZiB0ZXN0X3N5bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMu
Z2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0
ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNw
b25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTUwNiw2ICs2MTAsMTUgQEAg
ZGVmIHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAgICAg
ICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICAp
KSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogewor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8n
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICkpLAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtd
KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAg
ICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCkBAIC01MjgsNiAr
NjQxLDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAo
UmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0
cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgyMDAsCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAtNTQyLDYgKzY1NiwxNSBA
QCBkZWYgdGVzdF9zeW5jaHJvbml6ZV91cGRhdGVfbWVtYmVyKCk6CiAgICAgICAgICAgICAgICAg
J2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAor
ICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW3snc29t
ZSc6ICdkZXBsb3ltZW50J31dKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4s
ICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAs
IHt9KSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCmluZGV4IDBhODQyZGUx
YWI4NTdkMWY2NTViOTM2NWRmNjFmM2ZhOTc4ZTMxYmUuLmYzOTI3ZmQwZDcxY2NmMjkyZDk2OTlk
NTk3YTQ3OTk0NWE4ZTUxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmls
ZQpAQCAtMjUsNiArMjUsOCBAQCBSVU4gYXB0LWdldCAtcXF5IHVwZGF0ZSBcCiAgICAgcHVsc2Vh
dWRpbyBcCiAgICAgcHl0aG9uIFwKICAgICBweXRob24tcGlwIFwKKyAgICBweXRob24zIFwKKyAg
ICBweXRob24zLXBpcCBcCiAgICAgcWVtdS1rdm0gXAogICAgIHR6ZGF0YSBcCiAgICAgc3VkbyBc
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9SRUFETUUubWQKaW5kZXggNDUwOTgxZjY4NmJmYWNl
MmQ5MjQzZTU2MjgwNDBiYjZiMmY2YzRlMC4uOTM0MmFkZWQyOThiZGQwZTVkYWFjMTIyODljNzgx
NjNkMWQ1YmVjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZApAQCAtMSwx
MCArMSwxOCBAQAogVGhpcyBkb2NrZXIgaW1hZ2VzIGlzIHVzZWQgZm9yIHRlc3RpbmcgQ2hyb21l
LCBGaXJlZm94LCBXZWJLaXRHVEsgYW5kIHJ1bm5pbmcKIG90aGVyIHRhc2tzIG9uIFRhc2tjbHVz
dGVyLiBXaGVuIGFueSBvZiB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2hhbmdlLCB0aGUK
LWltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4gVG8gZG8gdGhpcywgYXNzdW1pbmcgeW91
IGhhdmUgZG9ja2VyIGluc3RhbGxlZDoKK2ltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4g
RG9pbmcgdGhpcyByZXF1aXJlcyB5b3UgYmUgcGFydCBvZiB0aGUKKyd3ZWJwbGF0Zm9ybXRlc3Rz
JyBvcmdhbml6YXRpb24gb24gRG9ja2VyIEh1YjsgcGluZyBASGV4Y2xlcyBvciBAc3RlcGhlbm1j
Z3J1ZXIKK2lmIHlvdSBhcmUgbm90IGEgbWVtYmVyLgorCitJbiB0aGlzIGRpcmVjdG9yeSwgcnVu
IHRoZSBmb2xsb3dpbmcsIHdoZXJlIGA8dGFnPmAgaXMgb2YgdGhlIGZvcm0KK2B3ZWJwbGF0Zm9y
bXRlc3RzL3dwdDp7Y3VycmVudC12ZXJzaW9uICsgMC4wMX1gOgogCi1JbiB0aGlzIGRpcmVjdG9y
eSwgcnVuCiBgYGBzaAotZG9ja2VyIGJ1aWxkIC10IDx0YWc+IC4KKyMgLS1wdWxsIGZvcmNlcyBE
b2NrZXIgdG8gZ2V0IHRoZSBuZXdlc3QgYmFzZSBpbWFnZS4KK2RvY2tlciBidWlsZCAtLXB1bGwg
LXQgPHRhZz4gLgogZG9ja2VyIHB1c2ggPHRhZz4KIGBgYAogCitUaGVuIHVwZGF0ZSB0aGUgZm9s
bG93aW5nIFRhc2tjbHVzdGVyIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSB0aGUgbmV3IGltYWdlOgor
KiBgLnRhc2tjbHVzdGVyLnltbGAgKHRoZSBkZWNpc2lvbiB0YXNrKQorKiBgdG9vbHMvY2kvdGMv
dGFza3MvdGVzdC55bWxgIChhbGwgdGhlIG90aGVyIHRhc2tzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRl
bmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2RvY2tlci9mcm9udGVuZC5weQppbmRleCA5NzYxNTZjZjY1YTAwODIxYTExYTMzNTEzMDFiNDdj
MTA3OGM4NDE2Li41OWExY2ZmMmViZDBlZmRhMDZmYWRkMTQ0YTg0YjVkMzViMmQ4MWM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2RvY2tlci9mcm9udGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtOCw2ICs4LDcgQEAgd3B0
X3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3Mu
cGFyZGlyKSkKIGRlZiBidWlsZCgqYXJncywgKiprd2FyZ3MpOgogICAgIHN1YnByb2Nlc3MuY2hl
Y2tfY2FsbChbImRvY2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHVsbCIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLS10YWciLCAid3B0OmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlcmVdKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CmluZGV4IDYxMjZiNzgx
YmZhZGQxNWU4MmI4YTNhM2I5NDk0MDUwOTM5ZWFiNmMuLjVjOGU2ZDc5YzMwMzhkZGZmNDk2ODhk
NGYxZmM3ZTdmMjk0YWQwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CkBA
IC0yMSwyMyArMjEsMjggQEAgZGVmIGl0ZXJfcmFuZ2Uobik6CiAgICAgICAgIGkgKz0gMQogCiAK
K2RlZiBsb2codmFsdWUpOgorICAgIHByaW50KHZhbHVlKQorICAgIHN5cy5zdGRvdXQuZmx1c2go
KQorCisKIGRlZiBtYWluKCk6CiAgICAgYXJncyA9IGdldF9hcmdzKCkucGFyc2VfYXJncygpCiAK
ICAgICBpZiBub3QgYXJncy5jbWQ6Ci0gICAgICAgIHByaW50KCJObyBjb21tYW5kIHN1cHBsaWVk
IikKKyAgICAgICAgbG9nKCJObyBjb21tYW5kIHN1cHBsaWVkIikKICAgICAgICAgc3lzLmV4aXQo
MSkKIAogICAgIHJldGNvZGUgPSBOb25lCiAKICAgICBmb3IgbiBpbiBpdGVyX3JhbmdlKGFyZ3Mu
Y291bnQpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCgiUnVubmluZyAlcyBbdHJ5
ICVkLyVkXSIgJSAoIiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCisgICAg
ICAgICAgICBsb2coIlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0iICUgKCIgIi5qb2luKGFyZ3MuY21k
KSwgKG4rMSksIGFyZ3MuY291bnQpKQogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxs
KGFyZ3MuY21kKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3Ig
YXMgZToKICAgICAgICAgICAgIHJldGNvZGUgPSBlLnJldHVybmNvZGUKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHByaW50KCJDb21tYW5kIHN1Y2NlZWRlZCIpCisgICAgICAgICAgICBsb2co
IkNvbW1hbmQgc3VjY2VlZGVkIikKICAgICAgICAgICAgIHJldGNvZGUgPSAwCiAgICAgICAgICAg
ICBicmVhawogCkBAIC00NiwxMCArNTEsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHdhaXRfdGltZSA9IGFyZ3MuZmFjdG9yKipuICogYXJncy5kZWxheQogICAg
ICAgICBpZiBuIDwgYXJncy5jb3VudCAtIDE6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBm
YWlsZWQsIHdhaXRpbmcgJXMgc2Vjb25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCisgICAgICAg
ICAgICBsb2coIkNvbW1hbmQgZmFpbGVkLCB3YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUg
d2FpdF90aW1lKQogICAgICAgICAgICAgdGltZS5zbGVlcCh3YWl0X3RpbWUpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikK
KyAgICAgICAgICAgIGxvZygiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKIAogICAg
IHN5cy5leGl0KHJldGNvZGUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dp
dGlnbm9yZS5weQppbmRleCBkNWVhNGE2YThmM2Q2NGQ0YWJhM2I4ZGNiZTVmZmU4NDliNzRlOTY5
Li4wZjNkOTQ1MGQxMjM0NDljMGRjYzNmZjNjMDRjYTg2YzgxYjI0YmVmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9y
ZS9naXRpZ25vcmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CkBAIC0yNjksNyArMjY5LDcgQEAg
Y2xhc3MgUGF0aEZpbHRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldC5hcHBlbmQoaXRlbSkKIAogICAgICAgICAgICAgZGlybmFtZXNbOl0gPSBrZWVwX2RpcnMK
LSAgICAgICAgICAgIGFzc2VydCAiLmdpdCIgbm90IGluIGRpcm5hbWVzCisgICAgICAgICAgICBh
c3NlcnQgbm90IGFueSgiLmdpdCIgPT0gbmFtZSBmb3IgbmFtZSwgXyBpbiBkaXJuYW1lcykKICAg
ICAgICAgICAgIHlpZWxkIG9yaWdfZGlycGF0aCwgZGlybmFtZXMsIGtlZXBfZmlsZXMKIAogICAg
IGRlZiBfX2NhbGxfXyhzZWxmLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQppbmRleCBhMDUw
Y2ZhOGE4ZTRlMjY5OWRiNDRjZTllNTJmOGYyMzBhMzRhODY5Li5mYzFhODE2ZjhhYmY4NWVmY2Uz
MWEzYThlNjE0YmE1OTFiNjAwOTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpAQCAt
MjAsNyArMjAsNyBAQCBmcm9tIC4uZ2l0aWdub3JlLmdpdGlnbm9yZSBpbXBvcnQgUGF0aEZpbHRl
cgogZnJvbSAuLndwdCBpbXBvcnQgdGVzdGZpbGVzCiBmcm9tIC4ubWFuaWZlc3QudmNzIGltcG9y
dCB3YWxrCiAKLWZyb20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBq
c19tZXRhX3JlLCBweXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlfdmFyaWFudHMs
IGdldF9kZWZhdWx0X2FueV92YXJpYW50cworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1w
b3J0IFNvdXJjZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywg
Z2V0X2FueV92YXJpYW50cwogZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMs
IGl0ZXJ2YWx1ZXMsIHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UK
IGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KQEAg
LTQxLDcgKzQxLDEyIEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KIAotICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwg
RGljdFtUZXh0LCBTZXRbT3B0aW9uYWxbaW50XV1dXQorICAgICMgVGhlIElnbm9yZWxpc3QgaXMg
YSB0d28gbGV2ZWwgZGljdGlvbmFyeS4gVGhlIHRvcCBsZXZlbCBpcyBpbmRleGVkIGJ5CisgICAg
IyBlcnJvciBuYW1lcyAoZS5nLiAnVFJBSUxJTkcgV0hJVEVTUEFDRScpLiBFYWNoIG9mIHRob3Nl
IHRoZW4gaGFzIGEgbWFwIG9mCisgICAgIyBmaWxlIHBhdHRlcm5zIChlLmcuICdmb28vKicpIHRv
IGEgc2V0IG9mIHNwZWNpZmljIGxpbmUgbnVtYmVycyBmb3IgdGhlCisgICAgIyBleGNlcHRpb24u
IFRoZSBsaW5lIG51bWJlcnMgYXJlIG9wdGlvbmFsOyBpZiBtaXNzaW5nIHRoZSBlbnRpcmUgZmls
ZQorICAgICMgaWdub3JlcyB0aGUgZXJyb3IuCisgICAgSWdub3JlbGlzdCA9IERpY3RbVGV4dCwg
RGljdFtUZXh0LCBTZXRbT3B0aW9uYWxbaW50XV1dXQogCiAKIGxvZ2dlciA9IE5vbmUgICMgdHlw
ZTogT3B0aW9uYWxbbG9nZ2luZy5Mb2dnZXJdCkBAIC03NSwxMiArODAsMTIgQEAgRVJST1JfTVNH
ID0gIiIiWW91IG11c3QgZml4IGFsbCBlcnJvcnM7IGZvciBkZXRhaWxzIG9uIGhvdyB0byBmaXgg
dGhlbSwgc2VlCiBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9s
aW50LXRvb2wuaHRtbAogCiBIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIg
ZXJyb3IsIGl0J3Mgc29tZXRpbWVzCi1PSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRl
bGlzdCBmaWxlIGluIHRoZSByb290IG9mIHRoZQorT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGlu
dC5pZ25vcmUgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUKIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJl
Y3RvcnkgdG8gbWFrZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KIAogRm9yIGV4YW1wbGUsIHRv
IG1ha2UgdGhlIGxpbnQgdG9vbCBpZ25vcmUgYWxsICclcycKIGVycm9ycyBpbiB0aGUgJXMgZmls
ZSwKLXlvdSBjb3VsZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlz
dCBmaWxlLgoreW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQuaWdu
b3JlIGZpbGUuCiAKICVzOiAlcyIiIgogCkBAIC0zMTgsMTQgKzMyMyw1MiBAQCBkZWYgY2hlY2tf
Y3NzX2dsb2JhbGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICByZXR1cm4gZXJyb3Jz
CiAKIAotZGVmIHBhcnNlX3doaXRlbGlzdChmKToKLSAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+
IFR1cGxlW1doaXRlbGlzdCwgU2V0W1RleHRdXQorZGVmIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVz
c19iYXNlbmFtZXMocmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0
cl0pIC0+IExpc3RbcnVsZXMuRXJyb3JdCisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgYWxsIHRl
c3RoYXJuZXNzIGZpbGVzIGhhdmUgdW5pcXVlIGJhc2VuYW1lIHBhdGhzLgorCisgICAgVGhlICdi
YXNlbmFtZSBwYXRoJyByZWZlcnMgdG8gdGhlIGVudGlyZSBwYXRoIGV4Y2x1ZGluZyB0aGUgZXh0
ZW5zaW9uLiBGb3IKKyAgICBleGFtcGxlLCAnZm9vL2Jhci9iYXouaHRtbCcgYW5kICdmb28vYmFy
L2Jhei54aHRtbCcgaGF2ZSB0aGUgc2FtZSBiYXNlbmFtZQorICAgIHBhdGgsIGJ1dCAnZm9vL2Jh
ci9iYXouaHRtbCcgYW5kICdmb28vcXV4L2Jhei5odG1sJyBkbyBub3QuCisKKyAgICBUZXN0aGFy
bmVzcyBmaWxlcyB3aXRoIGlkZW50aWNhbCBiYXNlbmFtZXMgaGF2ZSBjYXVzZWQgaXNzdWVzIGlu
IGRvd25zdHJlYW0KKyAgICBpbmZyYXN0cnVjdHVyZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy83NTcwKSwKKyAgICBhbmQgbWF5IGNhdXNlIGNv
bmZ1c2lvbiBpbiBnZW5lcmFsLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRv
cnkgcm9vdAorICAgIDpwYXJhbSBwYXRoczogbGlzdCBvZiBhbGwgcGF0aHMKKyAgICA6cmV0dXJu
czogYSBsaXN0IG9mIGVycm9ycyBmb3VuZCBpbiBgYHBhdGhzYGAKKyAgICAiIiIKKworICAgIGVy
cm9ycyA9IFtdCisgICAgZmlsZV9kaWN0ID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3IgcGF0
aCBpbiBwYXRoczoKKyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwg
cGF0aCwgIi8iKQorICAgICAgICBpZiBzb3VyY2VfZmlsZS50eXBlICE9ICJ0ZXN0aGFybmVzcyI6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmaWxlX25hbWUsIGZpbGVfZXh0ZW5zaW9u
ID0gb3MucGF0aC5zcGxpdGV4dChwYXRoKQorICAgICAgICBmaWxlX2RpY3RbZmlsZV9uYW1lXS5h
cHBlbmQoZmlsZV9leHRlbnNpb24pCisgICAgZm9yIGssIHYgaW4gZmlsZV9kaWN0Lml0ZW1zKCk6
CisgICAgICAgIGlmIGxlbih2KSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
Y29udGV4dCA9ICgnLCAnLmpvaW4odiksKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHY6Cisg
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLkR1cGxpY2F0ZUJhc2VuYW1lUGF0aC5lcnJv
cihrICsgZXh0ZW5zaW9uLCBjb250ZXh0KSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIHBh
cnNlX2lnbm9yZWxpc3QoZik6CisgICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtJZ25v
cmVsaXN0LCBTZXRbVGV4dF1dCiAgICAgIiIiCi0gICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxl
IGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICBQYXJz
ZSB0aGUgaWdub3JlbGlzdCBmaWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2Vk
IHN0cnVjdHVyZS4KKworICAgIDpyZXR1cm5zOiBhIHR1cGxlIG9mIGFuIElnbm9yZWxpc3QgYW5k
IGEgc2V0IG9mIGZpbGVzIHRoYXQgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgc2tpcHBl
ZCBieSB0aGUgbGludGVyIChpLmUuIGhhdmUgYSAnKicgZW50cnkpLgogICAgICIiIgogCi0gICAg
ZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBXaGl0
ZWxpc3QKLSAgICBpZ25vcmVkX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAg
ZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBJZ25v
cmVsaXN0CisgICAgc2tpcHBlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAg
ICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQpAQCAtMzQ0LDM3
ICszODcsMzcgQEAgZGVmIHBhcnNlX3doaXRlbGlzdChmKToKICAgICAgICAgZmlsZV9tYXRjaCA9
IG9zLnBhdGgubm9ybWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3Jf
dHlwZXM6Ci0gICAgICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQorICAgICAg
ICAgICAgc2tpcHBlZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGZvciBlcnJvcl90eXBlIGluIGVycm9yX3R5cGVzOgogICAgICAgICAgICAgICAgIGRh
dGFbZXJyb3JfdHlwZV1bZmlsZV9tYXRjaF0uYWRkKGxpbmVfbnVtYmVyKQogCi0gICAgcmV0dXJu
IGRhdGEsIGlnbm9yZWRfZmlsZXMKKyAgICByZXR1cm4gZGF0YSwgc2tpcHBlZF9maWxlcwogCiAK
LWRlZiBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgotICAgICMgdHlwZTog
KFdoaXRlbGlzdCwgU2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQor
ZGVmIGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgorICAgICMgdHlwZTog
KElnbm9yZWxpc3QsIFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0K
ICAgICAiIiIKLSAgICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3Rl
ZCBpbiBgZGF0YWAuCisgICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgaWdub3Jl
ZCBpbiBgZGF0YWAuCiAgICAgIiIiCiAKICAgICBpZiBub3QgZXJyb3JzOgogICAgICAgICByZXR1
cm4gW10KIAotICAgIHdoaXRlbGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihl
cnJvcnMpKV0KKyAgICBza2lwcGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJv
cnMpKV0KIAogICAgIGZvciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVt
ZXJhdGUoZXJyb3JzKToKICAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgp
Ci0gICAgICAgICMgQWxsb3cgd2hpdGVsaXN0aW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhl
IElHTk9SRUQgUEFUSCBsaW50LAotICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXgg
aXQgY29ycmVjdGx5IGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZC4KKyAgICAgICAgIyBBbGxvdyBz
a2lwcGluZyBhbGwgbGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVEIFBBVEggbGludCwKKyAg
ICAgICAgIyB3aGljaCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJlY3RseSBhbmQgc2hvdWxk
bid0IGJlIHNraXBwZWQuCiAgICAgICAgIGlmIGVycm9yX3R5cGUgaW4gZGF0YSBhbmQgZXJyb3Jf
dHlwZSAhPSAiSUdOT1JFRCBQQVRIIjoKICAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJv
cl90eXBlXQogICAgICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRl
cml0ZW1zKHdsX2ZpbGVzKToKICAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGlu
ZXMgb3IgbGluZSBpbiBhbGxvd2VkX2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBpZiBmbm1h
dGNoLmZubWF0Y2hjYXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaXRlbGlzdGVkW2ldID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tp
cHBlZFtpXSA9IFRydWUKIAotICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBlbnVtZXJh
dGUoZXJyb3JzKSBpZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisgICAgcmV0dXJuIFtpdGVtIGZvciBp
LCBpdGVtIGluIGVudW1lcmF0ZShlcnJvcnMpIGlmIG5vdCBza2lwcGVkW2ldXQogCiAKIHJlZ2V4
cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluICAjIHR5cGU6IGlnbm9yZQpAQCAtMzkwLDcgKzQzMywx
MCBAQCByZWdleHBzID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKICAgICAg
ICAgICAgIHJ1bGVzLlByaW50UmVnZXhwLAogICAgICAgICAgICAgcnVsZXMuTGF5b3V0VGVzdHNS
ZWdleHAsCiAgICAgICAgICAgICBydWxlcy5NaXNzaW5nRGVwc1JlZ2V4cCwKLSAgICAgICAgICAg
IHJ1bGVzLlNwZWNpYWxQb3dlcnNSZWdleHBdXQorICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBv
d2Vyc1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFRocm93c1JlZ2V4cCwKKyAgICAg
ICAgICAgIHJ1bGVzLlByb21pc2VSZWplY3RzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNz
ZXJ0UHJlY29uZGl0aW9uUmVnZXhwXV0KIAogCiBkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19y
b290LCBwYXRoLCBmKToKQEAgLTQyMSw2ICs0NjcsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9f
cm9vdCwgcGF0aCwgZik6CiAKICAgICAgICAgaWYgKHNvdXJjZV9maWxlLnR5cGUgIT0gInN1cHBv
cnQiIGFuZAogICAgICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFu
ZAorICAgICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfdGVudGF0aXZlIGFuZAogICAg
ICAgICAgICAgbm90IHNvdXJjZV9maWxlLnNwZWNfbGlua3MpOgogICAgICAgICAgICAgcmV0dXJu
IFtydWxlcy5NaXNzaW5nTGluay5lcnJvcihwYXRoKV0KIApAQCAtNTg0LDcgKzYzMSw4IEBAIGFz
dF9jaGVja2VycyA9IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYg
Y2hlY2tfcHl0aG9uX2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICMgdHlwZTogKHN0ciwg
c3RyLCBJT1tieXRlc10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCi0gICAgaWYgbm90IHBhdGguZW5k
c3dpdGgoIi5weSIpOgorICAgICMgKi5xdWljLnB5IGFyZSBQeXRob24gMyBvbmx5IGFuZCBjYW5u
b3QgYmUgcGFyc2VkIGJ5IFB5dGhvbiAyLgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHki
KSBvciBwYXRoLmVuZHN3aXRoKCIucXVpYy5weSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAg
IHRyeToKQEAgLTYwNSwzMCArNjUzLDEyIEBAIGJyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5j
b21waWxlKGJyIiNccypNRVRBOiIpCiAKIGRlZiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUp
OgogICAgICMgdHlwZTogKHN0cikgLT4gSXRlcmFibGVbVHVwbGVbVHlwZVtydWxlcy5SdWxlXSwg
VHVwbGVbQW55LCAuLi5dXV0KLSAgICBnbG9iYWxfdmFsdWVzID0ge2l0ZW0uc3RyaXAoKSBmb3Ig
aXRlbSBpbiB2YWx1ZS5zcGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9Ci0KLSAgICBpbmNsdWRl
ZF92YXJpYW50cyA9IHNldC51bmlvbihnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGdldF9hbnlfdmFyaWFudHModikgZm9yIHYg
aW4gZ2xvYmFsX3ZhbHVlcyBpZiBub3Qgdi5zdGFydHN3aXRoKGIiISIpKSkKKyAgICBnbG9iYWxf
dmFsdWVzID0ge2l0ZW0uc3RyaXAoKS5kZWNvZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiB2YWx1ZS5z
cGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9CiAKKyAgICAjIFRPRE86IHRoaXMgY291bGQgY2hl
Y2sgZm9yIGR1cGxpY2F0ZXMgYW5kIHN1Y2gKICAgICBmb3IgZ2xvYmFsX3ZhbHVlIGluIGdsb2Jh
bF92YWx1ZXM6Ci0gICAgICAgIGlmIGdsb2JhbF92YWx1ZS5zdGFydHN3aXRoKGIiISIpOgotICAg
ICAgICAgICAgZXhjbHVkZWRfdmFsdWUgPSBnbG9iYWxfdmFsdWVbMTpdCi0gICAgICAgICAgICBp
ZiBub3QgZ2V0X2FueV92YXJpYW50cyhleGNsdWRlZF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAg
eWllbGQgKHJ1bGVzLlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCi0KLSAgICAgICAgICAgIGVs
aWYgZXhjbHVkZWRfdmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgICAgICAgICB5aWVs
ZCAocnVsZXMuQnJva2VuR2xvYmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICgo
IkNhbm5vdCBzcGVjaWZ5IGJvdGggJXMgYW5kICVzIiAlIChnbG9iYWxfdmFsdWUsIGV4Y2x1ZGVk
X3ZhbHVlKSksKSkKLQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGNsdWRl
ZF92YXJpYW50cyA9IGdldF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpCi0gICAgICAgICAg
ICAgICAgaWYgbm90IChleGNsdWRlZF92YXJpYW50cyAmIGluY2x1ZGVkX3ZhcmlhbnRzKToKLSAg
ICAgICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVzLkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCgiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90
IGluY2x1ZGVkIiAlIChleGNsdWRlZF92YWx1ZSwpKSwpKQotCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBpZiBub3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgotICAgICAgICAg
ICAgICAgIHlpZWxkIChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQorICAgICAgICBp
ZiBub3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgorICAgICAgICAgICAgeWllbGQg
KHJ1bGVzLlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCiAKIAogZGVmIGNoZWNrX3NjcmlwdF9t
ZXRhZGF0YShyZXBvX3Jvb3QsIHBhdGgsIGYpOgpAQCAtNjU3LDEzICs2ODcsNyBAQCBkZWYgY2hl
Y2tfc2NyaXB0X21ldGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CiAgICAgICAgICAgICAgICAg
aWYgdmFsdWUgIT0gYiJsb25nIjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChy
dWxlcy5Vbmtub3duVGltZW91dE1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
X25vPWlkeCArIDEpKQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAg
ICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAg
ICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAg
ICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVsaWYga2V5
IG5vdCBpbiAoYiJ0aXRsZSIsIGIic2NyaXB0IiwgYiJ2YXJpYW50IiwgYiJxdWljIik6CiAgICAg
ICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3duTWV0YWRhdGEuZXJyb3IocGF0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lX25vPWlkeCArIDEpKQogICAgICAgICBlbHNlOgpAQCAtODI1LDcgKzg0OSw3IEBA
IGRlZiBsaW50X3BhdGhzKGt3YXJncywgd3B0X3Jvb3QpOgogICAgICAgICBmb3JjZV9hbGwgPSBG
YWxzZQogICAgICAgICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhzOgogICAgICAgICAgICAgcGF0
aCA9IHBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICAgICAgaWYgcGF0aCA9
PSAibGludC53aGl0ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKKyAg
ICAgICAgICAgIGlmIHBhdGggPT0gImxpbnQuaWdub3JlIiBvciBwYXRoLnN0YXJ0c3dpdGgoInRv
b2xzL2xpbnQvIik6CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQogICAgICAgICAg
ICAgICAgIGJyZWFrCiAgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90
IGZvcmNlX2FsbCAgIyB0eXBlOiBpZ25vcmUKQEAgLTg0Myw3ICs4NjcsNyBAQCBkZWYgY3JlYXRl
X3BhcnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hY2hpbmUt
cmVhZGFibGUgSlNPTiBmb3JtYXQiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFya2Rv
d24iLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
T3V0cHV0IG1hcmtkb3duIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIs
IGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyIKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyAiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIGlmIHRoZSBsaW50IHNjcmlwdCBleGlzdHMg
b3V0c2lkZSB0aGUgcmVwb3NpdG9yeSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25v
cmUtZ2xvYiIsIGhlbHA9IkFkZGl0aW9uYWwgZmlsZSBnbG9iIHRvIGlnbm9yZS4iKQogICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYg
bm8gcGF0aHMgYXJlIHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKQEAgLTg3OSwxMSAr
OTAzLDExIEBAIGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9y
ZV9nbG9iPXN0cigpKToKICAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGludCkgICMgdHlw
ZTogRGljdFtUZXh0LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAotICAgIHdpdGggb3Blbihvcy5w
YXRoLmpvaW4ocmVwb19yb290LCAibGludC53aGl0ZWxpc3QiKSkgYXMgZjoKLSAgICAgICAgd2hp
dGVsaXN0LCBpZ25vcmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0KGYpCisgICAgd2l0aCBvcGVu
KG9zLnBhdGguam9pbihyZXBvX3Jvb3QsICJsaW50Lmlnbm9yZSIpKSBhcyBmOgorICAgICAgICBp
Z25vcmVsaXN0LCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChmKQogCiAgICAgaWYg
aWdub3JlX2dsb2I6Ci0gICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQorICAg
ICAgICBza2lwcGVkX2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKIAogICAgIG91dHB1dF9lcnJvcnMg
PSB7Impzb24iOiBvdXRwdXRfZXJyb3JzX2pzb24sCiAgICAgICAgICAgICAgICAgICAgICAibWFy
a2Rvd24iOiBvdXRwdXRfZXJyb3JzX21hcmtkb3duLApAQCAtODk5LDcgKzkyMyw3IEBAIGRlZiBs
aW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigpKToK
ICAgICAgICAgICAgICAgICAgIGEgdHVwbGUgb2YgdGhlIGVycm9yIHR5cGUgYW5kIHRoZSBwYXRo
IG90aGVyd2lzZQogICAgICAgICAiIiIKIAotICAgICAgICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVs
aXN0X2Vycm9ycyh3aGl0ZWxpc3QsIGVycm9ycykKKyAgICAgICAgZXJyb3JzID0gZmlsdGVyX2ln
bm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIGVycm9ycykKIAogICAgICAgICBpZiBub3QgZXJy
b3JzOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTkxNiw3ICs5NDAsNyBAQCBkZWYgbGlu
dChyZXBvX3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAg
ICAgICAgICAgICBwYXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAg
ICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9t
YXRjaCBpbiBpZ25vcmVkX2ZpbGVzKToKKyAgICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChw
YXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBza2lwcGVkX2ZpbGVzKToKICAgICAg
ICAgICAgIHBhdGhzLnJlbW92ZShwYXRoKQogICAgICAgICAgICAgY29udGludWUKIApAQCAtOTQy
LDcgKzk2Niw3IEBAIGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGln
bm9yZV9nbG9iPXN0cigpKToKIAogcGF0aF9saW50cyA9IFtjaGVja19maWxlX3R5cGUsIGNoZWNr
X3BhdGhfbGVuZ3RoLCBjaGVja193b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHksCiAg
ICAgICAgICAgICAgIGNoZWNrX2dpdGlnbm9yZV9maWxlXQotYWxsX3BhdGhzX2xpbnRzID0gW2No
ZWNrX2Nzc19nbG9iYWxseV91bmlxdWVdCithbGxfcGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2ds
b2JhbGx5X3VuaXF1ZSwgY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lc10KIGZpbGVf
bGludHMgPSBbY2hlY2tfcmVnZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2Fz
dCwgY2hlY2tfc2NyaXB0X21ldGFkYXRhLAogICAgICAgICAgICAgICBjaGVja19haGVtX3N5c3Rl
bV9mb250XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKaW5kZXggZmFhMjg1ZmQ3Y2Ri
Y2M0MDZmOGMwMmFiMDNlZDZiZWIzNmViMGJlZi4uNjk1ZjZjZDRlNTMyOGNhZjJmMDg1YTExNWQz
MWE5YzBiNGFlMjcxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3J1bGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpAQCAtMzIyLDYg
KzMyMiwxNSBAQCBjbGFzcyBUZXN0aGFybmVzc0luT3RoZXJUeXBlKFJ1bGUpOgogICAgIGRlc2Ny
aXB0aW9uID0gInRlc3RoYXJuZXNzLmpzIGluY2x1ZGVkIGluIGEgJXMgdGVzdCIKIAogCitjbGFz
cyBEdXBsaWNhdGVCYXNlbmFtZVBhdGgoUnVsZSk6CisgICAgbmFtZSA9ICJEVVBMSUNBVEUtQkFT
RU5BTUUtUEFUSCIKKyAgICBkZXNjcmlwdGlvbiA9IGNvbGxhcHNlKCIiIgorICAgICAgICAgICAg
RmlsZSBoYXMgaWRlbnRpY2FsIGJhc2VuYW1lIHBhdGggKHBhdGggZXhjbHVkaW5nIGV4dGVuc2lv
bikgYXMKKyAgICAgICAgICAgIG90aGVyIGZpbGUocykgKGZvdW5kIGV4dGVuc2lvbnM6ICVzKQor
ICAgICIiIikKKyAgICB0b19maXggPSAicmVuYW1lIGZpbGVzIHNvIHRoZXkgaGF2ZSB1bmlxdWUg
YmFzZW5hbWUgcGF0aHMiCisKKwogY2xhc3MgUmVnZXhwKHNpeC53aXRoX21ldGFjbGFzcyhhYmMu
QUJDTWV0YSkpOgogICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgIGRlZiBwYXR0ZXJuKHNl
bGYpOgpAQCAtNDYyLDMgKzQ3MSwyNyBAQCBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAo
UmVnZXhwKToKICAgICBkZXNjcmlwdGlvbiA9ICJXaGl0ZXNwYWNlIGF0IEVPTCIKICAgICBwYXR0
ZXJuID0gYiJbIFx0XGZcdl0kIgogICAgIHRvX2ZpeCA9ICIiIlJlbW92ZSB0cmFpbGluZyB3aGl0
ZXNwYWNlIGZyb20gYWxsIGxpbmVzIGluIHRoZSBmaWxlLiIiIgorCisKK2NsYXNzIEFzc2VydFRo
cm93c1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJbXi5dYXNzZXJ0X3Rocm93c1wo
IgorICAgIG5hbWUgPSAiQVNTRVJUX1RIUk9XUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5o
dG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2Ny
aXB0aW9uID0gIlRlc3QtZmlsZSBsaW5lIGhhcyBhbiBgYXNzZXJ0X3Rocm93cyguLi4pYCBjYWxs
IgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X3Rocm93c19kb21gIG9yIGBh
c3NlcnRfdGhyb3dzX2pzYCBvciBgYXNzZXJ0X3Rocm93c19leGFjdGx5YCIiIgorCisKK2NsYXNz
IFByb21pc2VSZWplY3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyInByb21pc2Vf
cmVqZWN0c1woIgorICAgIG5hbWUgPSAiUFJPTUlTRV9SRUpFQ1RTIgorICAgIGZpbGVfZXh0ZW5z
aW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJd
CisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGEgYHByb21pc2VfcmVqZWN0
cyguLi4pYCBjYWxsIgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBwcm9taXNlX3JlamVj
dHNfZG9tIG9yIHByb21pc2VfcmVqZWN0c19qcyBvciBgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHlg
IiIiCisKKworY2xhc3MgQXNzZXJ0UHJlY29uZGl0aW9uUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0
dGVybiA9IGJyIlteLl1hc3NlcnRfcHJlY29uZGl0aW9uXCgiCisgICAgbmFtZSA9ICJBU1NFUlQt
UFJFQ09ORElUSU9OIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIu
anMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1m
aWxlIGxpbmUgaGFzIGFuIGBhc3NlcnRfcHJlY29uZGl0aW9uKC4uLilgIGNhbGwiCisgICAgdG9f
Zml4ID0gIiIiUmVwbGFjZSB3aXRoIGBhc3NlcnRfaW1wbGVtZW50c2Agb3IgYGFzc2VydF9pbXBs
ZW1lbnRzX29wdGlvbmFsYCIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L2xpbnQuaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0
NWUxMzBkMDE4NzEwZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25v
cmUKQEAgLTAsMCArMSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvbGludC53aGl0ZWxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEw
ZmZkZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2xpbnQud2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKjpicm9r
ZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3
NWUwYWY1ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90
ZXN0cy9kaXIxL2EuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS90ZXN0cy9kaXIxL2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1NWRhYjZhNzdjYjI4MTAzY2MxNThm
ZjBmOWNjZGU5NmI1MjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIx
L2EuanMKQEAgLTAsMCArMSw2IEBACisvLyBUaGlzIGlzIGEgZHVtbXkgSmF2YVNjcmlwdCBmaWxl
LCBtZWFudCB0byBpbmRpY2F0ZSBhICdzdXBwb3J0JyBmaWxlIG9mCisvLyBzb3J0cyB0aGF0IG1h
eSBiZSBpbmNsdWRlZCBieSBzb21lIHRlc3QuCisKK2Z1bmN0aW9uIGhlbGxvV29ybGQoKSB7Cisg
IHJldHVybiAnSGVsbG8sIHdvcmxkISc7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMv
ZGlyMS9hLnhodG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
OGI0Y2MyZTUyMjNhODYyNTVlZmI1MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9i
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2Iw
NDVlZjQ3NWUwYWY1ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS90ZXN0cy9kaXIxL2IuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMjI5OTFkOWJlNmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3Rz
L2RpcjEvYS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVz
dHMvZGlyMS9iLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9hLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4
NjI1NWVmYjUzMWE0ZDVhNDQzMGY5NTFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi9hLnhodG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNjY5
ZTY1M2JmYzIzN2I2Mzc4ZjNhZTllZTY2NzUwYzU1MGJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwppbmRleCA0NjA1NmU2NzEz
ZmQzMTNkZmUyNGIxYjg4MmMyODM4OWNiZWNmYzljLi5mMzRkMTY3MzBmNzAwNGY3NGQyMzRjOWNj
YWRiMmMwZWNlZDJiNTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nCkBAIC0xOCw1ICsxOCw1IEBAIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L2Jyb2tlbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0
bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvZGVwZW5kZW5jeS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKaW5kZXgg
MDhjMDliNmIwOTUwYjJjZjU0OGMzYjVlNDE1MzAzNTk3ZGQ4YzY1NC4uN2RhY2ZhZDYzODBkYzhi
NjY4YTIyZGM3YzRmZTJlNzRkMzc1NDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50
cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC02MzMsNiArNjMzLDggQEAgZGVm
IHRlc3RfbGF0ZV90aW1lb3V0KCk6CiAgICAgICAgICAgICBdCiAKIAorIyBOb3RlOiBUaGlzIHRl
c3QgY2hlY2tzIHRoZSBwcmludCAqc3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBw
eXRob24gMykuCisjICAgICAgIFRoZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVz
dF9wcmludF9mdW5jdGlvbiBiZWxvdy4KIEBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVh
c29uPSJDYW5ub3QgcGFyc2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKIGRlZiB0
ZXN0X3ByaW50X3N0YXRlbWVudCgpOgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMo
YiJkZWYgZm9vKCk6XG4gIHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQpAQCAtNzk0LDYg
Kzc5NiwyMCBAQCBkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgogICAgIF0KIAog
CitkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX3RlbnRhdGl2ZSgpOgorICAgIGNvZGUgPSBiIiIi
XAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisK
KyAgICAjIFRoZSB0ZW50YXRpdmUgZmxhZyBjb3ZlcnMgdGVzdHMgdGhhdCBtYWtlIGFzc2VydGlv
bnMgJ25vdCB5ZXQgcmVxdWlyZWQgYnkKKyAgICAjIGFueSBzcGVjaWZpY2F0aW9uJywgc28gdGhl
eSBuZWVkIG5vdCBoYXZlIGEgc3BlY2lmaWNhdGlvbiBsaW5rLgorICAgIGVycm9ycyA9IGNoZWNr
X2ZpbGVfY29udGVudHMoIiIsICJjc3MvZm9vL2Jhci50ZW50YXRpdmUuaHRtbCIsIHNpeC5CeXRl
c0lPKGNvZGUpKQorICAgIGFzc2VydCBub3QgZXJyb3JzCisKKwogQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJmaWxlbmFtZSIsIFsKICAgICAiZm9vLndvcmtlci5qcyIsCiAgICAgImZvby5hbnku
anMiLApAQCAtODQyLDE3ICs4NTgsMTcgQEAgZGVmIHRlc3Rfc2NyaXB0X21ldGFkYXRhKGZpbGVu
YW1lLCBpbnB1dCwgZXJyb3IpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdsb2JhbHMs
ZXJyb3IiLCBbCiAgICAgKGIiIiwgTm9uZSksCi0gICAgKGIiZGVmYXVsdCIsIE5vbmUpLAotICAg
IChiIiFkZWZhdWx0IiwgTm9uZSksCisgICAgKGIiZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1N
RVRBREFUQSIpLAorICAgIChiIiFkZWZhdWx0IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiks
CiAgICAgKGIid2luZG93IiwgTm9uZSksCi0gICAgKGIiIXdpbmRvdyIsIE5vbmUpLAotICAgIChi
IiFkZWRpY2F0ZWR3b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiQlJP
S0VOLUdMT0JBTC1NRVRBREFUQSIpLAotICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1H
TE9CQUwtTUVUQURBVEEiKSwKLSAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIs
ICJCUk9LRU4tR0xPQkFMLU1FVEFEQVRBIiksCi0gICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29y
a2VyIiwgTm9uZSksCi0gICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsIE5vbmUpLAotICAg
IChiIiF3b3JrZXIiLCBOb25lKSwKKyAgICAoYiIhd2luZG93IiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIiIWRlZGljYXRlZHdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRB
REFUQSIpLAorICAgIChiIndpbmRvdywgIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFU
QSIpLAorICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiks
CisgICAgKGIic2VydmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwt
TUVUQURBVEEiKSwKKyAgICAoYiJ3b3JrZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1H
TE9CQUwtTUVUQURBVEEiKSwKKyAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05P
V04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIiIXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1N
RVRBREFUQSIpLAogICAgIChiImZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAg
IChiIiFmb28iLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKIF0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9saW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCBhZjJiN2QzZDRhYTE5ZjBj
MWQ3MmE1NTc1YjUwMTNjNzg5N2UxZGM0Li4xMGQ5NzI4YjQwNTc1MWJkYjI4ZGI1ZTAxOTMxNjJl
YzdmNmRmNDg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xp
bnQucHkKQEAgLTgsNyArOCw3IEBAIGltcG9ydCBzaXgKIAogZnJvbSAuLi5sb2NhbHBhdGhzIGlt
cG9ydCByZXBvX3Jvb3QKIGZyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKLWZyb20gLi5s
aW50IGltcG9ydCBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50
LCBjcmVhdGVfcGFyc2VyCitmcm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX2lnbm9yZWxpc3RfZXJy
b3JzLCBwYXJzZV9pZ25vcmVsaXN0LCBsaW50LCBjcmVhdGVfcGFyc2VyCiAKIF9kdW1teV9yZXBv
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkdW1teSIpCiAKQEAg
LTE3LDggKzE3LDggQEAgZGVmIF9tb2NrX2xpbnQobmFtZSwgKiprd2FyZ3MpOgogICAgIHJldHVy
biBtb2NrLnBhdGNoKGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9d3JhcHBl
ZCwgKiprd2FyZ3MpCiAKIAotZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoKToKLSAg
ICB3aGl0ZWxpc3QgPSB7CitkZWYgdGVzdF9maWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoKToKKyAg
ICBpZ25vcmVsaXN0ID0gewogICAgICAgICAnQ09OU09MRSc6IHsKICAgICAgICAgICAgICdzdmcv
Kic6IHsxMn0KICAgICAgICAgfSwKQEAgLTI2LDM0ICsyNiwzNCBAQCBkZWYgdGVzdF9maWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycygpOgogICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFsaXNlcyB0aGUgY2FzZS9wYXRo
IG9mIHRoZSBtYXRjaCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIHdoaXRlbGlz
dCA9IHtlOiB7b3MucGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9Ci0g
ICAgICAgICAgICAgICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5pdGVtcygpfQotICAgICMgcGF0
aHMgcGFzc2VkIGludG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMgYXJlIGFsd2F5cyBVbml4IHN0
eWxlCisgICAgIyBwYXJzZV9pZ25vcmVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0
aGUgbWF0Y2ggc3RyaW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAgICBpZ25vcmVsaXN0ID0g
e2U6IHtvcy5wYXRoLm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAg
ICAgICAgICAgICAgZm9yIGUsIHAgaW4gaWdub3JlbGlzdC5pdGVtcygpfQorICAgICMgcGF0aHMg
cGFzc2VkIGludG8gZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHls
ZQogICAgIGZpbHRlcmVkZmlsZSA9ICdzdmcvdGVzdC5odG1sJwogICAgIHVuZmlsdGVyZWRmaWxl
ID0gJ2h0bWwvdGVzdC5odG1sJwogICAgICMgVGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCi0g
ICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAg
IGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAg
IGFzc2VydCBmaWx0ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vy
cm9ycyhpZ25vcmVsaXN0LCBbXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KICAgICAjIFRl
c3RzIGZvciBmaWx0ZXJpbmcgb24gZmlsZSBhbmQgbGluZSBudW1iZXIKLSAgICBmaWx0ZXJlZCA9
IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0
ZXJlZGZpbGUsIDEyXV0pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMo
aWdub3JlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNz
ZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9y
cyh3aGl0ZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAg
ZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snQ09OU09M
RScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1sn
Q09OU09MRScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXQotICAgIGZpbHRlcmVkID0gZmlsdGVy
X3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmls
ZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVs
aXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQgZmls
dGVyZWQgPT0gW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0KICAgICAjIFRlc3Rz
IGZvciBmaWx0ZXJpbmcgb24ganVzdCBmaWxlCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVs
aXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwg
MTJdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0
LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZp
bHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0
ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0
ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFC
UycsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0g
ICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVO
VCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVy
X2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmls
dGVyZWRmaWxlLCAxMV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycs
ICcnLCB1bmZpbHRlcmVkZmlsZSwgMTFdXQogCiAKLWRlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgp
OgorZGVmIHRlc3RfcGFyc2VfaWdub3JlbGlzdCgpOgogICAgIGlucHV0X2J1ZmZlciA9IHNpeC5T
dHJpbmdJTygiIiIKICMgQ29tbWVudAogQ1IgQVQgRU9MOiBzdmcvaW1wb3J0LyoKQEAgLTEwMCwx
MCArMTAwLDEwIEBAIENSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCiAg
ICAgfQogICAgIGV4cGVjdGVkX2RhdGEgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9y
IGssIHYgaW4gcC5pdGVtcygpfQogICAgICAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhw
ZWN0ZWRfZGF0YS5pdGVtcygpfQotICAgIGV4cGVjdGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3Jt
Y2FzZSh4KSBmb3IgeCBpbiB7IioucGRmIiwgInJlc291cmNlcy8qIiwgIioucG5nIn19Ci0gICAg
ZGF0YSwgaWdub3JlZCA9IHBhcnNlX3doaXRlbGlzdChpbnB1dF9idWZmZXIpCisgICAgZXhwZWN0
ZWRfc2tpcHBlZCA9IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVz
b3VyY2VzLyoiLCAiKi5wbmcifX0KKyAgICBkYXRhLCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdu
b3JlbGlzdChpbnB1dF9idWZmZXIpCiAgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQot
ICAgIGFzc2VydCBpZ25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKyAgICBhc3NlcnQgc2tpcHBl
ZF9maWxlcyA9PSBleHBlY3RlZF9za2lwcGVkCiAKIAogZGVmIHRlc3RfbGludF9ub19maWxlcyhj
YXBsb2cpOgpAQCAtMzk4LDYgKzM5OCw2NSBAQCBkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlf
dW5pcXVlX2lnbm9yZWRfZGlyKGNhcGxvZyk6CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIi
CiAKIAorZGVmIHRlc3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lX3NhbWVfYmFz
ZW5hbWUoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHRlc3RoYXJuZXNz
IGZpbGVzIHdpdGggY29uZmxpY3RpbmcgYmFzZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBh
dGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5o
dG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVw
bywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwg
InRlc3RzL2RpcjEvYS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgICMgVGhlcmUgd2ls
bCBiZSBvbmUgZmFpbHVyZSBmb3IgZWFjaCBmaWxlLgorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09
IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIK
KyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50
ID09IDIKKyAgICBhc3NlcnQgIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIiBpbiBjYXBsb2cudGV4
dAorCisKK2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJl
bnRfbmFtZShjYXBsb2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3Ro
YXJuZXNzIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoCisgICAgIyBkaWZmZXJlbnQg
bmFtZXMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVw
bywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3Rz
KG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYi5odG1sJykpCisK
KyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoK
KyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2Vk
X2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8s
IFsidGVzdHMvZGlyMS9hLmh0bWwiLCAidGVzdHMvZGlyMS9iLmh0bWwiXSwgIm5vcm1hbCIpCisg
ICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVj
a19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19m
aWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAi
IgorCisKK2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJl
bnRfZGlyKGNhcGxvZyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0d28gdGVzdGhh
cm5lc3MgZmlsZXMgaW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzCisgICAgIyB3aXRoIHRoZSBzYW1l
IGJhc2VuYW1lLgorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15
X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4
aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIyJywgJ2EueGh0bWwn
KSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19w
YXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlf
cmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIyL2EueGh0bWwiXSwgIm5vcm1h
bCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9j
aGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4
dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9u
b3RfdGVzdGhhcm5lc3MoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIG5v
bi10ZXN0aGFybmVzcyBmaWxlcyB3aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycs
ICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpv
aW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2EuanMnKSkKKworICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIx
L2EuaHRtbCIsICJ0ZXN0cy9kaXIxL2EuanMiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3Nl
cnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291
bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNh
bGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKIGRlZiB0ZXN0
X2lnbm9yZV9nbG9iKGNhcGxvZyk6CiAgICAgIyBMaW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBk
aXJlY3RvcnksIGFuZCBwYXNzIGluIGlnbm9yZV9nbG9iIHRvIG9taXQgb25lCiAgICAgIyBvZiB0
aGVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IGY2ZTI0YjQ4NmQ1OGI3ODhi
OTQ0MTE3NWM1ZTFjODlmOTM4NzRmZWIuLmNlM2I0MWUzMDBjOWYxMTM4MGVhMDY1ZjViMjg4ZDVh
ZWY4MTI1ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbG9jYWxwYXRocy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKQEAgLTYsNyArNiw3IEBA
IHJlcG9fcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGly
KSkKIAogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlKSkKIHN5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgIndwdHNlcnZlIikpCi1zeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJweXdlYnNvY2tldCIpKQorc3lzLnBhdGguaW5zZXJ0KDAs
IG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl3ZWJzb2NrZXQzIikpCiBzeXMu
cGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJhdG9taWN3
cml0ZXMiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3Bh
cnR5IiwgImF0dHJzIiwgInNyYyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbiho
ZXJlLCAidGhpcmRfcGFydHkiLCAiZnVuY3NpZ3MiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94
aHRtbC5kdGQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDQzMDdiMWMyYzQzMzJiMjk0OTk5
YTVmYTMxM2E2YTI4ZWVjNTdmZjYuLjgwNDIzNDgwYmM1OTc1NDI2OTEwMTBhNTBjYTJjMTZmOTQ1
YTcwODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3ho
dG1sLmR0ZApAQCAtMSwyMTI1ICsxLDIxMjUgQEAKLTwhRU5USVRZIFRhYiAiJiN4OTsiPgotPCFF
TlRJVFkgTmV3TGluZSAiJiN4QTsiPgotPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KLTwhRU5USVRZ
IHF1b3QgIiYjeDIyOyI+Ci08IUVOVElUWSBRVU9UICImI3gyMjsiPgotPCFFTlRJVFkgbnVtICIm
I3gyMzsiPgotPCFFTlRJVFkgZG9sbGFyICImI3gyNDsiPgotPCFFTlRJVFkgcGVyY250ICImI3gy
NTsiPgotPCFFTlRJVFkgYW1wICImI3gyNjsjeDI2OyI+Ci08IUVOVElUWSBBTVAgIiYjeDI2OyN4
MjY7Ij4KLTwhRU5USVRZIGFwb3MgIiYjeDI3OyI+Ci08IUVOVElUWSBscGFyICImI3gyODsiPgot
PCFFTlRJVFkgcnBhciAiJiN4Mjk7Ij4KLTwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZ
IG1pZGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Ci08IUVOVElUWSBjb21t
YSAiJiN4MkM7Ij4KLTwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KLTwhRU5USVRZIHNvbCAiJiN4
MkY7Ij4KLTwhRU5USVRZIGNvbG9uICImI3gzQTsiPgotPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij4K
LTwhRU5USVRZIGx0ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiPgot
PCFFTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBlcXVhbHMgIiYj
eDNEOyI+Ci08IUVOVElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGd0ICImI3gz
RTsiPgotPCFFTlRJVFkgR1QgIiYjeDNFOyI+Ci08IUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQy
OyI+Ci08IUVOVElUWSBxdWVzdCAiJiN4M0Y7Ij4KLTwhRU5USVRZIGNvbW1hdCAiJiN4NDA7Ij4K
LTwhRU5USVRZIGxzcWIgIiYjeDVCOyI+Ci08IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Ci08IUVO
VElUWSBic29sICImI3g1QzsiPgotPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KLTwhRU5USVRZIHJi
cmFjayAiJiN4NUQ7Ij4KLTwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KLTwhRU5USVRZIGxvd2JhciAi
JiN4NUY7Ij4KLTwhRU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgotPCFFTlRJVFkgZ3JhdmUgIiYj
eDYwOyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgotPCFFTlRJVFkgZmps
aWcgIiYjeDY2OyYjeDZBOyI+Ci08IUVOVElUWSBsY3ViICImI3g3QjsiPgotPCFFTlRJVFkgbGJy
YWNlICImI3g3QjsiPgotPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgotPCFFTlRJVFkgdmVydCAi
JiN4N0M7Ij4KLTwhRU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KLTwhRU5USVRZIHJjdWIg
IiYjeDdEOyI+Ci08IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Ci08IUVOVElUWSBuYnNwICImI3hB
MDsiPgotPCFFTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KLTwhRU5USVRZIGlleGNs
ICImI3hBMTsiPgotPCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KLTwhRU5USVRZIHBvdW5kICImI3hB
MzsiPgotPCFFTlRJVFkgY3VycmVuICImI3hBNDsiPgotPCFFTlRJVFkgeWVuICImI3hBNTsiPgot
PCFFTlRJVFkgYnJ2YmFyICImI3hBNjsiPgotPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KLTwhRU5U
SVRZIERvdCAiJiN4QTg7Ij4KLTwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KLTwhRU5USVRZIERvdWJs
ZURvdCAiJiN4QTg7Ij4KLTwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KLTwhRU5USVRZIGNvcHkgIiYj
eEE5OyI+Ci08IUVOVElUWSBDT1BZICImI3hBOTsiPgotPCFFTlRJVFkgb3JkZiAiJiN4QUE7Ij4K
LTwhRU5USVRZIGxhcXVvICImI3hBQjsiPgotPCFFTlRJVFkgbm90ICImI3hBQzsiPgotPCFFTlRJ
VFkgc2h5ICImI3hBRDsiPgotPCFFTlRJVFkgcmVnICImI3hBRTsiPgotPCFFTlRJVFkgY2lyY2xl
ZFIgIiYjeEFFOyI+Ci08IUVOVElUWSBSRUcgIiYjeEFFOyI+Ci08IUVOVElUWSBtYWNyICImI3hB
RjsiPgotPCFFTlRJVFkgc3RybnMgIiYjeEFGOyI+Ci08IUVOVElUWSBkZWcgIiYjeEIwOyI+Ci08
IUVOVElUWSBwbHVzbW4gIiYjeEIxOyI+Ci08IUVOVElUWSBwbSAiJiN4QjE7Ij4KLTwhRU5USVRZ
IFBsdXNNaW51cyAiJiN4QjE7Ij4KLTwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Ci08IUVOVElUWSBz
dXAzICImI3hCMzsiPgotPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBEaWFjcml0
aWNhbEFjdXRlICImI3hCNDsiPgotPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Ci08IUVOVElUWSBw
YXJhICImI3hCNjsiPgotPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VudGVy
ZG90ICImI3hCNzsiPgotPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2Vk
aWwgIiYjeEI4OyI+Ci08IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgotPCFFTlRJVFkgc3VwMSAi
JiN4Qjk7Ij4KLTwhRU5USVRZIG9yZG0gIiYjeEJBOyI+Ci08IUVOVElUWSByYXF1byAiJiN4QkI7
Ij4KLTwhRU5USVRZIGZyYWMxNCAiJiN4QkM7Ij4KLTwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij4K
LTwhRU5USVRZIGhhbGYgIiYjeEJEOyI+Ci08IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Ci08IUVO
VElUWSBpcXVlc3QgIiYjeEJGOyI+Ci08IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Ci08IUVOVElU
WSBBYWN1dGUgIiYjeEMxOyI+Ci08IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KLTwhRU5USVRZIEF0
aWxkZSAiJiN4QzM7Ij4KLTwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Ci08IUVOVElUWSBBcmluZyAi
JiN4QzU7Ij4KLTwhRU5USVRZIGFuZ3N0ICImI3hDNTsiPgotPCFFTlRJVFkgQUVsaWcgIiYjeEM2
OyI+Ci08IUVOVElUWSBDY2VkaWwgIiYjeEM3OyI+Ci08IUVOVElUWSBFZ3JhdmUgIiYjeEM4OyI+
Ci08IUVOVElUWSBFYWN1dGUgIiYjeEM5OyI+Ci08IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4KLTwh
RU5USVRZIEV1bWwgIiYjeENCOyI+Ci08IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Ci08IUVOVElU
WSBJYWN1dGUgIiYjeENEOyI+Ci08IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KLTwhRU5USVRZIEl1
bWwgIiYjeENGOyI+Ci08IUVOVElUWSBFVEggIiYjeEQwOyI+Ci08IUVOVElUWSBOdGlsZGUgIiYj
eEQxOyI+Ci08IUVOVElUWSBPZ3JhdmUgIiYjeEQyOyI+Ci08IUVOVElUWSBPYWN1dGUgIiYjeEQz
OyI+Ci08IUVOVElUWSBPY2lyYyAiJiN4RDQ7Ij4KLTwhRU5USVRZIE90aWxkZSAiJiN4RDU7Ij4K
LTwhRU5USVRZIE91bWwgIiYjeEQ2OyI+Ci08IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KLTwhRU5U
SVRZIE9zbGFzaCAiJiN4RDg7Ij4KLTwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KLTwhRU5USVRZ
IFVhY3V0ZSAiJiN4REE7Ij4KLTwhRU5USVRZIFVjaXJjICImI3hEQjsiPgotPCFFTlRJVFkgVXVt
bCAiJiN4REM7Ij4KLTwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KLTwhRU5USVRZIFRIT1JOICIm
I3hERTsiPgotPCFFTlRJVFkgc3psaWcgIiYjeERGOyI+Ci08IUVOVElUWSBhZ3JhdmUgIiYjeEUw
OyI+Ci08IUVOVElUWSBhYWN1dGUgIiYjeEUxOyI+Ci08IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij4K
LTwhRU5USVRZIGF0aWxkZSAiJiN4RTM7Ij4KLTwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Ci08IUVO
VElUWSBhcmluZyAiJiN4RTU7Ij4KLTwhRU5USVRZIGFlbGlnICImI3hFNjsiPgotPCFFTlRJVFkg
Y2NlZGlsICImI3hFNzsiPgotPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgotPCFFTlRJVFkgZWFj
dXRlICImI3hFOTsiPgotPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Ci08IUVOVElUWSBldW1sICIm
I3hFQjsiPgotPCFFTlRJVFkgaWdyYXZlICImI3hFQzsiPgotPCFFTlRJVFkgaWFjdXRlICImI3hF
RDsiPgotPCFFTlRJVFkgaWNpcmMgIiYjeEVFOyI+Ci08IUVOVElUWSBpdW1sICImI3hFRjsiPgot
PCFFTlRJVFkgZXRoICImI3hGMDsiPgotPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgotPCFFTlRJ
VFkgb2dyYXZlICImI3hGMjsiPgotPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgotPCFFTlRJVFkg
b2NpcmMgIiYjeEY0OyI+Ci08IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Ci08IUVOVElUWSBvdW1s
ICImI3hGNjsiPgotPCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgotPCFFTlRJVFkgZGl2ICImI3hG
NzsiPgotPCFFTlRJVFkgb3NsYXNoICImI3hGODsiPgotPCFFTlRJVFkgdWdyYXZlICImI3hGOTsi
PgotPCFFTlRJVFkgdWFjdXRlICImI3hGQTsiPgotPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+Ci08
IUVOVElUWSB1dW1sICImI3hGQzsiPgotPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgotPCFFTlRJ
VFkgdGhvcm4gIiYjeEZFOyI+Ci08IUVOVElUWSB5dW1sICImI3hGRjsiPgotPCFFTlRJVFkgQW1h
Y3IgIiYjeDEwMDsiPgotPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgotPCFFTlRJVFkgQWJyZXZl
ICImI3gxMDI7Ij4KLTwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Ci08IUVOVElUWSBBb2dvbiAi
JiN4MTA0OyI+Ci08IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Ci08IUVOVElUWSBDYWN1dGUgIiYj
eDEwNjsiPgotPCFFTlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KLTwhRU5USVRZIENjaXJjICImI3gx
MDg7Ij4KLTwhRU5USVRZIGNjaXJjICImI3gxMDk7Ij4KLTwhRU5USVRZIENkb3QgIiYjeDEwQTsi
PgotPCFFTlRJVFkgY2RvdCAiJiN4MTBCOyI+Ci08IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiPgot
PCFFTlRJVFkgY2Nhcm9uICImI3gxMEQ7Ij4KLTwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+Ci08
IUVOVElUWSBkY2Fyb24gIiYjeDEwRjsiPgotPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4KLTwh
RU5USVRZIGRzdHJvayAiJiN4MTExOyI+Ci08IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Ci08IUVO
VElUWSBlbWFjciAiJiN4MTEzOyI+Ci08IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KLTwhRU5USVRZ
IGVkb3QgIiYjeDExNzsiPgotPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgotPCFFTlRJVFkgZW9n
b24gIiYjeDExOTsiPgotPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KLTwhRU5USVRZIGVjYXJv
biAiJiN4MTFCOyI+Ci08IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Ci08IUVOVElUWSBnY2lyYyAi
JiN4MTFEOyI+Ci08IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgotPCFFTlRJVFkgZ2JyZXZlICIm
I3gxMUY7Ij4KLTwhRU5USVRZIEdkb3QgIiYjeDEyMDsiPgotPCFFTlRJVFkgZ2RvdCAiJiN4MTIx
OyI+Ci08IUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiPgotPCFFTlRJVFkgSGNpcmMgIiYjeDEyNDsi
PgotPCFFTlRJVFkgaGNpcmMgIiYjeDEyNTsiPgotPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij4K
LTwhRU5USVRZIGhzdHJvayAiJiN4MTI3OyI+Ci08IUVOVElUWSBJdGlsZGUgIiYjeDEyODsiPgot
PCFFTlRJVFkgaXRpbGRlICImI3gxMjk7Ij4KLTwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4KLTwh
RU5USVRZIGltYWNyICImI3gxMkI7Ij4KLTwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KLTwhRU5U
SVRZIGlvZ29uICImI3gxMkY7Ij4KLTwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgotPCFFTlRJVFkg
aW1hdGggIiYjeDEzMTsiPgotPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KLTwhRU5USVRZIElK
bGlnICImI3gxMzI7Ij4KLTwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KLTwhRU5USVRZIEpjaXJj
ICImI3gxMzQ7Ij4KLTwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KLTwhRU5USVRZIEtjZWRpbCAi
JiN4MTM2OyI+Ci08IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgotPCFFTlRJVFkga2dyZWVuICIm
I3gxMzg7Ij4KLTwhRU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Ci08IUVOVElUWSBsYWN1dGUgIiYj
eDEzQTsiPgotPCFFTlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KLTwhRU5USVRZIGxjZWRpbCAiJiN4
MTNDOyI+Ci08IUVOVElUWSBMY2Fyb24gIiYjeDEzRDsiPgotPCFFTlRJVFkgbGNhcm9uICImI3gx
M0U7Ij4KLTwhRU5USVRZIExtaWRvdCAiJiN4MTNGOyI+Ci08IUVOVElUWSBsbWlkb3QgIiYjeDE0
MDsiPgotPCFFTlRJVFkgTHN0cm9rICImI3gxNDE7Ij4KLTwhRU5USVRZIGxzdHJvayAiJiN4MTQy
OyI+Ci08IUVOVElUWSBOYWN1dGUgIiYjeDE0MzsiPgotPCFFTlRJVFkgbmFjdXRlICImI3gxNDQ7
Ij4KLTwhRU5USVRZIE5jZWRpbCAiJiN4MTQ1OyI+Ci08IUVOVElUWSBuY2VkaWwgIiYjeDE0Njsi
PgotPCFFTlRJVFkgTmNhcm9uICImI3gxNDc7Ij4KLTwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI+
Ci08IUVOVElUWSBuYXBvcyAiJiN4MTQ5OyI+Ci08IUVOVElUWSBFTkcgIiYjeDE0QTsiPgotPCFF
TlRJVFkgZW5nICImI3gxNEI7Ij4KLTwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KLTwhRU5USVRZ
IG9tYWNyICImI3gxNEQ7Ij4KLTwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Ci08IUVOVElUWSBv
ZGJsYWMgIiYjeDE1MTsiPgotPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgotPCFFTlRJVFkgb2Vs
aWcgIiYjeDE1MzsiPgotPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KLTwhRU5USVRZIHJhY3V0
ZSAiJiN4MTU1OyI+Ci08IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgotPCFFTlRJVFkgcmNlZGls
ICImI3gxNTc7Ij4KLTwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Ci08IUVOVElUWSByY2Fyb24g
IiYjeDE1OTsiPgotPCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KLTwhRU5USVRZIHNhY3V0ZSAi
JiN4MTVCOyI+Ci08IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Ci08IUVOVElUWSBzY2lyYyAiJiN4
MTVEOyI+Ci08IUVOVElUWSBTY2VkaWwgIiYjeDE1RTsiPgotPCFFTlRJVFkgc2NlZGlsICImI3gx
NUY7Ij4KLTwhRU5USVRZIFNjYXJvbiAiJiN4MTYwOyI+Ci08IUVOVElUWSBzY2Fyb24gIiYjeDE2
MTsiPgotPCFFTlRJVFkgVGNlZGlsICImI3gxNjI7Ij4KLTwhRU5USVRZIHRjZWRpbCAiJiN4MTYz
OyI+Ci08IUVOVElUWSBUY2Fyb24gIiYjeDE2NDsiPgotPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7
Ij4KLTwhRU5USVRZIFRzdHJvayAiJiN4MTY2OyI+Ci08IUVOVElUWSB0c3Ryb2sgIiYjeDE2Nzsi
PgotPCFFTlRJVFkgVXRpbGRlICImI3gxNjg7Ij4KLTwhRU5USVRZIHV0aWxkZSAiJiN4MTY5OyI+
Ci08IUVOVElUWSBVbWFjciAiJiN4MTZBOyI+Ci08IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+Ci08
IUVOVElUWSBVYnJldmUgIiYjeDE2QzsiPgotPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4KLTwh
RU5USVRZIFVyaW5nICImI3gxNkU7Ij4KLTwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KLTwhRU5U
SVRZIFVkYmxhYyAiJiN4MTcwOyI+Ci08IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgotPCFFTlRJ
VFkgVW9nb24gIiYjeDE3MjsiPgotPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgotPCFFTlRJVFkg
V2NpcmMgIiYjeDE3NDsiPgotPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgotPCFFTlRJVFkgWWNp
cmMgIiYjeDE3NjsiPgotPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgotPCFFTlRJVFkgWXVtbCAi
JiN4MTc4OyI+Ci08IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgotPCFFTlRJVFkgemFjdXRlICIm
I3gxN0E7Ij4KLTwhRU5USVRZIFpkb3QgIiYjeDE3QjsiPgotPCFFTlRJVFkgemRvdCAiJiN4MTdD
OyI+Ci08IUVOVElUWSBaY2Fyb24gIiYjeDE3RDsiPgotPCFFTlRJVFkgemNhcm9uICImI3gxN0U7
Ij4KLTwhRU5USVRZIGZub2YgIiYjeDE5MjsiPgotPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPgot
PCFFTlRJVFkgZ2FjdXRlICImI3gxRjU7Ij4KLTwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4KLTwh
RU5USVRZIGNpcmMgIiYjeDJDNjsiPgotPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgotPCFFTlRJ
VFkgSGFjZWsgIiYjeDJDNzsiPgotPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkg
QnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIERpYWNy
aXRpY2FsRG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgotPCFFTlRJVFkg
b2dvbiAiJiN4MkRCOyI+Ci08IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBEaWFj
cml0aWNhbFRpbGRlICImI3gyREM7Ij4KLTwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KLTwhRU5U
SVRZIERpYWNyaXRpY2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgotPCFFTlRJVFkgRG93bkJyZXZl
ICImI3gzMTE7Ij4KLTwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KLTwhRU5USVRZIEJldGEgIiYj
eDM5MjsiPgotPCFFTlRJVFkgR2FtbWEgIiYjeDM5MzsiPgotPCFFTlRJVFkgRGVsdGEgIiYjeDM5
NDsiPgotPCFFTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyI+Ci08IUVOVElUWSBaZXRhICImI3gzOTY7
Ij4KLTwhRU5USVRZIEV0YSAiJiN4Mzk3OyI+Ci08IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+Ci08
IUVOVElUWSBJb3RhICImI3gzOTk7Ij4KLTwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KLTwhRU5U
SVRZIExhbWJkYSAiJiN4MzlCOyI+Ci08IUVOVElUWSBNdSAiJiN4MzlDOyI+Ci08IUVOVElUWSBO
dSAiJiN4MzlEOyI+Ci08IUVOVElUWSBYaSAiJiN4MzlFOyI+Ci08IUVOVElUWSBPbWljcm9uICIm
I3gzOUY7Ij4KLTwhRU5USVRZIFBpICImI3gzQTA7Ij4KLTwhRU5USVRZIFJobyAiJiN4M0ExOyI+
Ci08IUVOVElUWSBTaWdtYSAiJiN4M0EzOyI+Ci08IUVOVElUWSBUYXUgIiYjeDNBNDsiPgotPCFF
TlRJVFkgVXBzaWxvbiAiJiN4M0E1OyI+Ci08IUVOVElUWSBQaGkgIiYjeDNBNjsiPgotPCFFTlRJ
VFkgQ2hpICImI3gzQTc7Ij4KLTwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Ci08IUVOVElUWSBPbWVn
YSAiJiN4M0E5OyI+Ci08IUVOVElUWSBvaG0gIiYjeDNBOTsiPgotPCFFTlRJVFkgYWxwaGEgIiYj
eDNCMTsiPgotPCFFTlRJVFkgYmV0YSAiJiN4M0IyOyI+Ci08IUVOVElUWSBnYW1tYSAiJiN4M0Iz
OyI+Ci08IUVOVElUWSBkZWx0YSAiJiN4M0I0OyI+Ci08IUVOVElUWSBlcHNpICImI3gzQjU7Ij4K
LTwhRU5USVRZIGVwc2lsb24gIiYjeDNCNTsiPgotPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+Ci08
IUVOVElUWSBldGEgIiYjeDNCNzsiPgotPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgotPCFFTlRJ
VFkgaW90YSAiJiN4M0I5OyI+Ci08IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Ci08IUVOVElUWSBs
YW1iZGEgIiYjeDNCQjsiPgotPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgotPCFFTlRJVFkgbnUgIiYj
eDNCRDsiPgotPCFFTlRJVFkgeGkgIiYjeDNCRTsiPgotPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JG
OyI+Ci08IUVOVElUWSBwaSAiJiN4M0MwOyI+Ci08IUVOVElUWSByaG8gIiYjeDNDMTsiPgotPCFF
TlRJVFkgc2lnbWF2ICImI3gzQzI7Ij4KLTwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4KLTwh
RU5USVRZIHNpZ21hZiAiJiN4M0MyOyI+Ci08IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Ci08IUVO
VElUWSB0YXUgIiYjeDNDNDsiPgotPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Ci08IUVOVElUWSB1
cHNpbG9uICImI3gzQzU7Ij4KLTwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Ci08IUVOVElUWSBjaGkg
IiYjeDNDNzsiPgotPCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KLTwhRU5USVRZIG9tZWdhICImI3gz
Qzk7Ij4KLTwhRU5USVRZIHRoZXRhdiAiJiN4M0QxOyI+Ci08IUVOVElUWSB2YXJ0aGV0YSAiJiN4
M0QxOyI+Ci08IUVOVElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Ci08IUVOVElUWSBVcHNpICImI3gz
RDI7Ij4KLTwhRU5USVRZIHVwc2loICImI3gzRDI7Ij4KLTwhRU5USVRZIHN0cmFpZ2h0cGhpICIm
I3gzRDU7Ij4KLTwhRU5USVRZIHBoaXYgIiYjeDNENTsiPgotPCFFTlRJVFkgdmFycGhpICImI3gz
RDU7Ij4KLTwhRU5USVRZIHBpdiAiJiN4M0Q2OyI+Ci08IUVOVElUWSB2YXJwaSAiJiN4M0Q2OyI+
Ci08IUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiPgotPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7Ij4K
LTwhRU5USVRZIGRpZ2FtbWEgIiYjeDNERDsiPgotPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij4K
LTwhRU5USVRZIHZhcmthcHBhICImI3gzRjA7Ij4KLTwhRU5USVRZIHJob3YgIiYjeDNGMTsiPgot
PCFFTlRJVFkgdmFycmhvICImI3gzRjE7Ij4KLTwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4KLTwh
RU5USVRZIHN0cmFpZ2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Ci08IUVOVElUWSB2YXJlcHNpbG9uICIm
I3gzRjU7Ij4KLTwhRU5USVRZIGJlcHNpICImI3gzRjY7Ij4KLTwhRU5USVRZIGJhY2tlcHNpbG9u
ICImI3gzRjY7Ij4KLTwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgotPCFFTlRJVFkgREpjeSAiJiN4
NDAyOyI+Ci08IUVOVElUWSBHSmN5ICImI3g0MDM7Ij4KLTwhRU5USVRZIEp1a2N5ICImI3g0MDQ7
Ij4KLTwhRU5USVRZIERTY3kgIiYjeDQwNTsiPgotPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsiPgot
PCFFTlRJVFkgWUljeSAiJiN4NDA3OyI+Ci08IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgotPCFF
TlRJVFkgTEpjeSAiJiN4NDA5OyI+Ci08IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KLTwhRU5USVRZ
IFRTSGN5ICImI3g0MEI7Ij4KLTwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgotPCFFTlRJVFkgVWJy
Y3kgIiYjeDQwRTsiPgotPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Ci08IUVOVElUWSBBY3kgIiYj
eDQxMDsiPgotPCFFTlRJVFkgQmN5ICImI3g0MTE7Ij4KLTwhRU5USVRZIFZjeSAiJiN4NDEyOyI+
Ci08IUVOVElUWSBHY3kgIiYjeDQxMzsiPgotPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KLTwhRU5U
SVRZIElFY3kgIiYjeDQxNTsiPgotPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Ci08IUVOVElUWSBa
Y3kgIiYjeDQxNzsiPgotPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KLTwhRU5USVRZIEpjeSAiJiN4
NDE5OyI+Ci08IUVOVElUWSBLY3kgIiYjeDQxQTsiPgotPCFFTlRJVFkgTGN5ICImI3g0MUI7Ij4K
LTwhRU5USVRZIE1jeSAiJiN4NDFDOyI+Ci08IUVOVElUWSBOY3kgIiYjeDQxRDsiPgotPCFFTlRJ
VFkgT2N5ICImI3g0MUU7Ij4KLTwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Ci08IUVOVElUWSBSY3kg
IiYjeDQyMDsiPgotPCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KLTwhRU5USVRZIFRjeSAiJiN4NDIy
OyI+Ci08IUVOVElUWSBVY3kgIiYjeDQyMzsiPgotPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4KLTwh
RU5USVRZIEtIY3kgIiYjeDQyNTsiPgotPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Ci08IUVOVElU
WSBDSGN5ICImI3g0Mjc7Ij4KLTwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgotPCFFTlRJVFkgU0hD
SGN5ICImI3g0Mjk7Ij4KLTwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Ci08IUVOVElUWSBZY3kg
IiYjeDQyQjsiPgotPCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KLTwhRU5USVRZIEVjeSAiJiN4
NDJEOyI+Ci08IUVOVElUWSBZVWN5ICImI3g0MkU7Ij4KLTwhRU5USVRZIFlBY3kgIiYjeDQyRjsi
PgotPCFFTlRJVFkgYWN5ICImI3g0MzA7Ij4KLTwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Ci08IUVO
VElUWSB2Y3kgIiYjeDQzMjsiPgotPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KLTwhRU5USVRZIGRj
eSAiJiN4NDM0OyI+Ci08IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KLTwhRU5USVRZIHpoY3kgIiYj
eDQzNjsiPgotPCFFTlRJVFkgemN5ICImI3g0Mzc7Ij4KLTwhRU5USVRZIGljeSAiJiN4NDM4OyI+
Ci08IUVOVElUWSBqY3kgIiYjeDQzOTsiPgotPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KLTwhRU5U
SVRZIGxjeSAiJiN4NDNCOyI+Ci08IUVOVElUWSBtY3kgIiYjeDQzQzsiPgotPCFFTlRJVFkgbmN5
ICImI3g0M0Q7Ij4KLTwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Ci08IUVOVElUWSBwY3kgIiYjeDQz
RjsiPgotPCFFTlRJVFkgcmN5ICImI3g0NDA7Ij4KLTwhRU5USVRZIHNjeSAiJiN4NDQxOyI+Ci08
IUVOVElUWSB0Y3kgIiYjeDQ0MjsiPgotPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KLTwhRU5USVRZ
IGZjeSAiJiN4NDQ0OyI+Ci08IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KLTwhRU5USVRZIHRzY3kg
IiYjeDQ0NjsiPgotPCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Ci08IUVOVElUWSBzaGN5ICImI3g0
NDg7Ij4KLTwhRU5USVRZIHNoY2hjeSAiJiN4NDQ5OyI+Ci08IUVOVElUWSBoYXJkY3kgIiYjeDQ0
QTsiPgotPCFFTlRJVFkgeWN5ICImI3g0NEI7Ij4KLTwhRU5USVRZIHNvZnRjeSAiJiN4NDRDOyI+
Ci08IUVOVElUWSBlY3kgIiYjeDQ0RDsiPgotPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Ci08IUVO
VElUWSB5YWN5ICImI3g0NEY7Ij4KLTwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgotPCFFTlRJVFkg
ZGpjeSAiJiN4NDUyOyI+Ci08IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KLTwhRU5USVRZIGp1a2N5
ICImI3g0NTQ7Ij4KLTwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgotPCFFTlRJVFkgaXVrY3kgIiYj
eDQ1NjsiPgotPCFFTlRJVFkgeWljeSAiJiN4NDU3OyI+Ci08IUVOVElUWSBqc2VyY3kgIiYjeDQ1
ODsiPgotPCFFTlRJVFkgbGpjeSAiJiN4NDU5OyI+Ci08IUVOVElUWSBuamN5ICImI3g0NUE7Ij4K
LTwhRU5USVRZIHRzaGN5ICImI3g0NUI7Ij4KLTwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgotPCFF
TlRJVFkgdWJyY3kgIiYjeDQ1RTsiPgotPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Ci08IUVOVElU
WSBlbnNwICImI3gyMDAyOyI+Ci08IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Ci08IUVOVElUWSBl
bXNwMTMgIiYjeDIwMDQ7Ij4KLTwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgotPCFFTlRJVFkg
bnVtc3AgIiYjeDIwMDc7Ij4KLTwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgotPCFFTlRJVFkg
dGhpbnNwICImI3gyMDA5OyI+Ci08IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KLTwhRU5U
SVRZIGhhaXJzcCAiJiN4MjAwQTsiPgotPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsi
PgotPCFFTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZl
VmVyeVRoaW5TcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYj
eDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5U
SVRZIE5lZ2F0aXZlVGhpY2tTcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgenduaiAiJiN4MjAw
QzsiPgotPCFFTlRJVFkgendqICImI3gyMDBEOyI+Ci08IUVOVElUWSBscm0gIiYjeDIwMEU7Ij4K
LTwhRU5USVRZIHJsbSAiJiN4MjAwRjsiPgotPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+Ci08
IUVOVElUWSBkYXNoICImI3gyMDEwOyI+Ci08IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgotPCFF
TlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ij4KLTwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgotPCFF
TlRJVFkgVmVyYmFyICImI3gyMDE2OyI+Ci08IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Ci08IUVO
VElUWSBsc3F1byAiJiN4MjAxODsiPgotPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7
Ij4KLTwhRU5USVRZIHJzcXVvICImI3gyMDE5OyI+Ci08IUVOVElUWSByc3F1b3IgIiYjeDIwMTk7
Ij4KLTwhRU5USVRZIENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgotPCFFTlRJVFkgbHNxdW9y
ICImI3gyMDFBOyI+Ci08IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgotPCFFTlRJVFkgbGRxdW8g
IiYjeDIwMUM7Ij4KLTwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+Ci08
IUVOVElUWSByZHF1byAiJiN4MjAxRDsiPgotPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+Ci08
IUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIGxkcXVv
ciAiJiN4MjAxRTsiPgotPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KLTwhRU5USVRZIGRhZ2dl
ciAiJiN4MjAyMDsiPgotPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBkZGFn
Z2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBidWxsICImI3gyMDIyOyI+Ci08IUVOVElUWSBidWxs
ZXQgIiYjeDIwMjI7Ij4KLTwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KLTwhRU5USVRZIGhlbGxp
cCAiJiN4MjAyNjsiPgotPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgotPCFFTlRJVFkgcGVybWls
ICImI3gyMDMwOyI+Ci08IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Ci08IUVOVElUWSBwcmlt
ZSAiJiN4MjAzMjsiPgotPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KLTwhRU5USVRZIHRwcmlt
ZSAiJiN4MjAzNDsiPgotPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Ci08IUVOVElUWSBiYWNr
cHJpbWUgIiYjeDIwMzU7Ij4KLTwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgotPCFFTlRJVFkg
cnNhcXVvICImI3gyMDNBOyI+Ci08IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgotPCFFTlRJVFkg
T3ZlckJhciAiJiN4MjAzRTsiPgotPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KLTwhRU5USVRZ
IGh5YnVsbCAiJiN4MjA0MzsiPgotPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KLTwhRU5USVRZ
IGJzZW1pICImI3gyMDRGOyI+Ci08IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KLTwhRU5USVRZ
IE1lZGl1bVNwYWNlICImI3gyMDVGOyI+Ci08IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYj
eDIwMEE7Ij4KLTwhRU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KLTwhRU5USVRZIEFwcGx5RnVu
Y3Rpb24gIiYjeDIwNjE7Ij4KLTwhRU5USVRZIGFmICImI3gyMDYxOyI+Ci08IUVOVElUWSBJbnZp
c2libGVUaW1lcyAiJiN4MjA2MjsiPgotPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KLTwhRU5USVRZ
IEludmlzaWJsZUNvbW1hICImI3gyMDYzOyI+Ci08IUVOVElUWSBpYyAiJiN4MjA2MzsiPgotPCFF
TlRJVFkgZXVybyAiJiN4MjBBQzsiPgotPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgotPCFFTlRJ
VFkgVHJpcGxlRG90ICImI3gyMERCOyI+Ci08IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4KLTwh
RU5USVRZIENvcGYgIiYjeDIxMDI7Ij4KLTwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsiPgot
PCFFTlRJVFkgaW5jYXJlICImI3gyMTA1OyI+Ci08IUVOVElUWSBnc2NyICImI3gyMTBBOyI+Ci08
IUVOVElUWSBoYW1pbHQgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEw
QjsiPgotPCFFTlRJVFkgSHNjciAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGZyICImI3gyMTBDOyI+
Ci08IUVOVElUWSBQb2luY2FyZXBsYW5lICImI3gyMTBDOyI+Ci08IUVOVElUWSBxdWF0ZXJuaW9u
cyAiJiN4MjEwRDsiPgotPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgotPCFFTlRJVFkgcGxhbmNr
aCAiJiN4MjEwRTsiPgotPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Ci08IUVOVElUWSBoYmFy
ICImI3gyMTBGOyI+Ci08IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIGhzbGFz
aCAiJiN4MjEwRjsiPgotPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2xp
bmUgIiYjeDIxMTA7Ij4KLTwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Ci08IUVOVElUWSBJbSAi
JiN4MjExMTsiPgotPCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KLTwhRU5USVRZIElmciAi
JiN4MjExMTsiPgotPCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgotPCFFTlRJVFkgbGFncmFuICIm
I3gyMTEyOyI+Ci08IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Ci08IUVOVElUWSBlbGwg
IiYjeDIxMTM7Ij4KLTwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG5hdHVyYWxz
ICImI3gyMTE1OyI+Ci08IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KLTwhRU5USVRZIGNvcHlz
ciAiJiN4MjExNzsiPgotPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Ci08IUVOVElUWSB3cCAi
JiN4MjExODsiPgotPCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgotPCFFTlRJVFkgcHJpbWVzICIm
I3gyMTE5OyI+Ci08IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KLTwhRU5USVRZIFFvcGYg
IiYjeDIxMUE7Ij4KLTwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWxpbmUg
IiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJlICImI3gy
MTFDOyI+Ci08IUVOVElUWSByZWFscGFydCAiJiN4MjExQzsiPgotPCFFTlRJVFkgUmZyICImI3gy
MTFDOyI+Ci08IUVOVElUWSByZWFscyAiJiN4MjExRDsiPgotPCFFTlRJVFkgUm9wZiAiJiN4MjEx
RDsiPgotPCFFTlRJVFkgcnggIiYjeDIxMUU7Ij4KLTwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+
Ci08IUVOVElUWSBUUkFERSAiJiN4MjEyMjsiPgotPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7
Ij4KLTwhRU5USVRZIFpvcGYgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZIG1obyAiJiN4MjEyNzsiPgot
PCFFTlRJVFkgWmZyICImI3gyMTI4OyI+Ci08IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4KLTwh
RU5USVRZIGlpb3RhICImI3gyMTI5OyI+Ci08IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4KLTwh
RU5USVRZIEJlcm5vdWxsaXMgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJzY3IgIiYjeDIxMkM7Ij4K
LTwhRU5USVRZIENmciAiJiN4MjEyRDsiPgotPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiPgot
PCFFTlRJVFkgZXNjciAiJiN4MjEyRjsiPgotPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgotPCFF
TlRJVFkgZXhwZWN0YXRpb24gIiYjeDIxMzA7Ij4KLTwhRU5USVRZIEZzY3IgIiYjeDIxMzE7Ij4K
LTwhRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIHBobW1hdCAiJiN4MjEz
MzsiPgotPCFFTlRJVFkgTWVsbGludHJmICImI3gyMTMzOyI+Ci08IUVOVElUWSBNc2NyICImI3gy
MTMzOyI+Ci08IUVOVElUWSBvcmRlciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgb3JkZXJvZiAiJiN4
MjEzNDsiPgotPCFFTlRJVFkgb3NjciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgYWxlZnN5bSAiJiN4
MjEzNTsiPgotPCFFTlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KLTwhRU5USVRZIGJldGggIiYjeDIx
MzY7Ij4KLTwhRU5USVRZIGdpbWVsICImI3gyMTM3OyI+Ci08IUVOVElUWSBkYWxldGggIiYjeDIx
Mzg7Ij4KLTwhRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Ci08IUVOVElU
WSBERCAiJiN4MjE0NTsiPgotPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgotPCFF
TlRJVFkgZGQgIiYjeDIxNDY7Ij4KLTwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0NzsiPgot
PCFFTlRJVFkgZXhwb25lbnRpYWxlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBlZSAiJiN4MjE0Nzsi
PgotPCFFTlRJVFkgSW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgaWkgIiYjeDIxNDg7
Ij4KLTwhRU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiPgotPCFFTlRJVFkgZnJhYzIzICImI3gyMTU0
OyI+Ci08IUVOVElUWSBmcmFjMTUgIiYjeDIxNTU7Ij4KLTwhRU5USVRZIGZyYWMyNSAiJiN4MjE1
NjsiPgotPCFFTlRJVFkgZnJhYzM1ICImI3gyMTU3OyI+Ci08IUVOVElUWSBmcmFjNDUgIiYjeDIx
NTg7Ij4KLTwhRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiPgotPCFFTlRJVFkgZnJhYzU2ICImI3gy
MTVBOyI+Ci08IUVOVElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KLTwhRU5USVRZIGZyYWMzOCAiJiN4
MjE1QzsiPgotPCFFTlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Ci08IUVOVElUWSBmcmFjNzggIiYj
eDIxNUU7Ij4KLTwhRU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIGxlZnRhcnJvdyAi
JiN4MjE5MDsiPgotPCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBzbGFy
ciAiJiN4MjE5MDsiPgotPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KLTwhRU5U
SVRZIHVhcnIgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5U
SVRZIFVwQXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsi
PgotPCFFTlRJVFkgcmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5
MjsiPgotPCFFTlRJVFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgc3JhcnIgIiYj
eDIxOTI7Ij4KLTwhRU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkg
ZGFyciAiJiN4MjE5MzsiPgotPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Ci08IUVOVElU
WSBEb3duQXJyb3cgIiYjeDIxOTM7Ij4KLTwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkz
OyI+Ci08IUVOVElUWSBoYXJyICImI3gyMTk0OyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAi
JiN4MjE5NDsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZ
IHZhcnIgIiYjeDIxOTU7Ij4KLTwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Ci08IUVO
VElUWSBVcERvd25BcnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij4K
LTwhRU5USVRZIFVwcGVyTGVmdEFycm93ICImI3gyMTk2OyI+Ci08IUVOVElUWSBud2Fycm93ICIm
I3gyMTk2OyI+Ci08IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgotPCFFTlRJVFkgVXBwZXJSaWdo
dEFycm93ICImI3gyMTk3OyI+Ci08IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Ci08IUVOVElU
WSBzZWFyciAiJiN4MjE5ODsiPgotPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJ
VFkgTG93ZXJSaWdodEFycm93ICImI3gyMTk4OyI+Ci08IUVOVElUWSBzd2FyciAiJiN4MjE5OTsi
PgotPCFFTlRJVFkgc3dhcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgTG93ZXJMZWZ0QXJyb3cg
IiYjeDIxOTk7Ij4KLTwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Ci08IUVOVElUWSBubGVmdGFy
cm93ICImI3gyMTlBOyI+Ci08IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgotPCFFTlRJVFkgbnJp
Z2h0YXJyb3cgIiYjeDIxOUI7Ij4KLTwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Ci08IUVOVElU
WSByaWdodHNxdWlnYXJyb3cgIiYjeDIxOUQ7Ij4KLTwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsm
I3gzMzg7Ij4KLTwhRU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIHR3b2hlYWRsZWZ0
YXJyb3cgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KLTwhRU5USVRZIFJh
cnIgIiYjeDIxQTA7Ij4KLTwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+Ci08
IUVOVElUWSBEYXJyICImI3gyMUExOyI+Ci08IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4KLTwh
RU5USVRZIGxlZnRhcnJvd3RhaWwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIHJhcnJ0bCAiJiN4MjFB
MzsiPgotPCFFTlRJVFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KLTwhRU5USVRZIExlZnRU
ZWVBcnJvdyAiJiN4MjFBNDsiPgotPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgotPCFF
TlRJVFkgVXBUZWVBcnJvdyAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7
Ij4KLTwhRU5USVRZIG1hcCAiJiN4MjFBNjsiPgotPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAiJiN4
MjFBNjsiPgotPCFFTlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Ci08IUVOVElUWSBEb3duVGVlQXJy
b3cgIiYjeDIxQTc7Ij4KLTwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KLTwhRU5USVRZ
IGxhcnJoayAiJiN4MjFBOTsiPgotPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPgot
PCFFTlRJVFkgcmFycmhrICImI3gyMUFBOyI+Ci08IUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4
MjFBQTsiPgotPCFFTlRJVFkgbGFycmxwICImI3gyMUFCOyI+Ci08IUVOVElUWSBsb29wYXJyb3ds
ZWZ0ICImI3gyMUFCOyI+Ci08IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGxv
b3BhcnJvd3JpZ2h0ICImI3gyMUFDOyI+Ci08IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgotPCFF
TlRJVFkgbGVmdHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbmhhcnIgIiYj
eDIxQUU7Ij4KLTwhRU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgotPCFFTlRJVFkg
bHNoICImI3gyMUIwOyI+Ci08IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIHJzaCAi
JiN4MjFCMTsiPgotPCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBsZHNoICImI3gy
MUIyOyI+Ci08IUVOVElUWSByZHNoICImI3gyMUIzOyI+Ci08IUVOVElUWSBjcmFyciAiJiN4MjFC
NTsiPgotPCFFTlRJVFkgY3VsYXJyICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93bGVm
dCAiJiN4MjFCNjsiPgotPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Ci08IUVOVElUWSBjdXJ2
ZWFycm93cmlnaHQgIiYjeDIxQjc7Ij4KLTwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Ci08IUVO
VElUWSBjaXJjbGVhcnJvd2xlZnQgIiYjeDIxQkE7Ij4KLTwhRU5USVRZIG9yYXJyICImI3gyMUJC
OyI+Ci08IUVOVElUWSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Ci08IUVOVElUWSBsaGFy
dSAiJiN4MjFCQzsiPgotPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgotPCFFTlRJVFkg
bGVmdGhhcnBvb251cCAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4KLTwh
RU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiPgotPCFFTlRJVFkgRG93bkxlZnRWZWN0
b3IgIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Ci08IUVOVElUWSB1cGhh
cnBvb25yaWdodCAiJiN4MjFCRTsiPgotPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFCRTsi
PgotPCFFTlRJVFkgdWhhcmwgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYj
eDIxQkY7Ij4KLTwhRU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgotPCFFTlRJVFkgcmhh
cnUgIiYjeDIxQzA7Ij4KLTwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Ci08IUVOVElU
WSByaWdodGhhcnBvb251cCAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7Ij4K
LTwhRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KLTwhRU5USVRZIERvd25SaWdo
dFZlY3RvciAiJiN4MjFDMTsiPgotPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KLTwhRU5USVRZ
IFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25yaWdodCAi
JiN4MjFDMjsiPgotPCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIExlZnREb3du
VmVjdG9yICImI3gyMUMzOyI+Ci08IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7Ij4K
LTwhRU5USVRZIHJsYXJyICImI3gyMUM0OyI+Ci08IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYj
eDIxQzQ7Ij4KLTwhRU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KLTwhRU5U
SVRZIHVkYXJyICImI3gyMUM1OyI+Ci08IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1
OyI+Ci08IUVOVElUWSBscmFyciAiJiN4MjFDNjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3dz
ICImI3gyMUM2OyI+Ci08IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+Ci08
IUVOVElUWSBsbGFyciAiJiN4MjFDNzsiPgotPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIx
Qzc7Ij4KLTwhRU5USVRZIHV1YXJyICImI3gyMUM4OyI+Ci08IUVOVElUWSB1cHVwYXJyb3dzICIm
I3gyMUM4OyI+Ci08IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgotPCFFTlRJVFkgcmlnaHRyaWdo
dGFycm93cyAiJiN4MjFDOTsiPgotPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZ
IGRvd25kb3duYXJyb3dzICImI3gyMUNBOyI+Ci08IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPgot
PCFFTlRJVFkgUmV2ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Ci08IUVOVElUWSBsZWZ0cmln
aHRoYXJwb29ucyAiJiN4MjFDQjsiPgotPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KLTwhRU5U
SVRZIHJpZ2h0bGVmdGhhcnBvb25zICImI3gyMUNDOyI+Ci08IUVOVElUWSBFcXVpbGlicml1bSAi
JiN4MjFDQzsiPgotPCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5MZWZ0YXJy
b3cgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Ci08IUVOVElUWSBuTGVm
dHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ij4KLTwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Ci08IUVO
VElUWSBuUmlnaHRhcnJvdyAiJiN4MjFDRjsiPgotPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPgot
PCFFTlRJVFkgTGVmdGFycm93ICImI3gyMUQwOyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0QXJyb3cg
IiYjeDIxRDA7Ij4KLTwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIFVwYXJyb3cg
IiYjeDIxRDE7Ij4KLTwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KLTwhRU5USVRZ
IHJBcnIgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5U
SVRZIEltcGxpZXMgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIx
RDI7Ij4KLTwhRU5USVRZIGRBcnIgIiYjeDIxRDM7Ij4KLTwhRU5USVRZIERvd25hcnJvdyAiJiN4
MjFEMzsiPgotPCFFTlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBo
QXJyICImI3gyMUQ0OyI+Ci08IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgotPCFF
TlRJVFkgRG91YmxlTGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIGlmZiAiJiN4
MjFENDsiPgotPCFFTlRJVFkgdkFyciAiJiN4MjFENTsiPgotPCFFTlRJVFkgVXBkb3duYXJyb3cg
IiYjeDIxRDU7Ij4KLTwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Ci08IUVO
VElUWSBud0FyciAiJiN4MjFENjsiPgotPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KLTwhRU5U
SVRZIHNlQXJyICImI3gyMUQ4OyI+Ci08IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgotPCFFTlRJ
VFkgbEFhcnIgIiYjeDIxREE7Ij4KLTwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4KLTwh
RU5USVRZIHJBYXJyICImI3gyMURCOyI+Ci08IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsi
PgotPCFFTlRJVFkgemlncmFyciAiJiN4MjFERDsiPgotPCFFTlRJVFkgbGFycmIgIiYjeDIxRTQ7
Ij4KLTwhRU5USVRZIExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgotPCFFTlRJVFkgcmFycmIgIiYj
eDIxRTU7Ij4KLTwhRU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KLTwhRU5USVRZIGR1
YXJyICImI3gyMUY1OyI+Ci08IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+Ci08
IUVOVElUWSBsb2FyciAiJiN4MjFGRDsiPgotPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4KLTwh
RU5USVRZIGhvYXJyICImI3gyMUZGOyI+Ci08IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4KLTwh
RU5USVRZIEZvckFsbCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgotPCFF
TlRJVFkgY29tcGxlbWVudCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPgot
PCFFTlRJVFkgUGFydGlhbEQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYj
eDMzODsiPgotPCFFTlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KLTwhRU5USVRZIEV4aXN0cyAiJiN4
MjIwMzsiPgotPCFFTlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Ci08IUVOVElUWSBOb3RFeGlzdHMg
IiYjeDIyMDQ7Ij4KLTwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KLTwhRU5USVRZIGVtcHR5
ICImI3gyMjA1OyI+Ci08IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgotPCFFTlRJVFkgZW1w
dHl2ICImI3gyMjA1OyI+Ci08IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Ci08IUVOVElU
WSBuYWJsYSAiJiN4MjIwNzsiPgotPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Ci08IUVOVElUWSBp
c2luICImI3gyMjA4OyI+Ci08IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgotPCFFTlRJVFkgRWxl
bWVudCAiJiN4MjIwODsiPgotPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIG5vdGlu
ICImI3gyMjA5OyI+Ci08IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Ci08IUVOVElUWSBu
b3RpbnZhICImI3gyMjA5OyI+Ci08IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFJl
dmVyc2VFbGVtZW50ICImI3gyMjBCOyI+Ci08IUVOVElUWSBuaSAiJiN4MjIwQjsiPgotPCFFTlRJ
VFkgU3VjaFRoYXQgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Ci08IUVO
VElUWSBub3RuaXZhICImI3gyMjBDOyI+Ci08IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4
MjIwQzsiPgotPCFFTlRJVFkgcHJvZCAiJiN4MjIwRjsiPgotPCFFTlRJVFkgUHJvZHVjdCAiJiN4
MjIwRjsiPgotPCFFTlRJVFkgY29wcm9kICImI3gyMjEwOyI+Ci08IUVOVElUWSBDb3Byb2R1Y3Qg
IiYjeDIyMTA7Ij4KLTwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgotPCFFTlRJVFkgU3VtICImI3gy
MjExOyI+Ci08IUVOVElUWSBtaW51cyAiJiN4MjIxMjsiPgotPCFFTlRJVFkgbW5wbHVzICImI3gy
MjEzOyI+Ci08IUVOVElUWSBtcCAiJiN4MjIxMzsiPgotPCFFTlRJVFkgTWludXNQbHVzICImI3gy
MjEzOyI+Ci08IUVOVElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KLTwhRU5USVRZIGRvdHBsdXMgIiYj
eDIyMTQ7Ij4KLTwhRU5USVRZIHNldG1uICImI3gyMjE2OyI+Ci08IUVOVElUWSBzZXRtaW51cyAi
JiN4MjIxNjsiPgotPCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Ci08IUVOVElUWSBzc2V0
bW4gIiYjeDIyMTY7Ij4KLTwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KLTwhRU5U
SVRZIGxvd2FzdCAiJiN4MjIxNzsiPgotPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Ci08IUVO
VElUWSBTbWFsbENpcmNsZSAiJiN4MjIxODsiPgotPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij4K
LTwhRU5USVRZIFNxcnQgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4KLTwh
RU5USVRZIHByb3B0byAiJiN4MjIxRDsiPgotPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFE
OyI+Ci08IUVOVElUWSB2cHJvcCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgdmFycHJvcHRvICImI3gy
MjFEOyI+Ci08IUVOVElUWSBpbmZpbiAiJiN4MjIxRTsiPgotPCFFTlRJVFkgYW5ncnQgIiYjeDIy
MUY7Ij4KLTwhRU5USVRZIGFuZyAiJiN4MjIyMDsiPgotPCFFTlRJVFkgYW5nbGUgIiYjeDIyMjA7
Ij4KLTwhRU5USVRZIG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgotPCFFTlRJVFkgYW5nbXNkICIm
I3gyMjIxOyI+Ci08IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Ci08IUVOVElUWSBh
bmdzcGggIiYjeDIyMjI7Ij4KLTwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgVmVy
dGljYWxCYXIgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZ
IHNob3J0bWlkICImI3gyMjIzOyI+Ci08IUVOVElUWSBubWlkICImI3gyMjI0OyI+Ci08IUVOVElU
WSBOb3RWZXJ0aWNhbEJhciAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij4K
LTwhRU5USVRZIG5zaG9ydG1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgcGFyICImI3gyMjI1OyI+
Ci08IUVOVElUWSBwYXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgRG91YmxlVmVydGljYWxC
YXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNob3J0
cGFyYWxsZWwgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KLTwhRU5USVRZ
IG5wYXJhbGxlbCAiJiN4MjIyNjsiPgotPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYj
eDIyMjY7Ij4KLTwhRU5USVRZIG5zcGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBuc2hvcnRwYXJh
bGxlbCAiJiN4MjIyNjsiPgotPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Ci08IUVOVElUWSB3ZWRn
ZSAiJiN4MjIyNzsiPgotPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KLTwhRU5USVRZIHZlZSAiJiN4
MjIyODsiPgotPCFFTlRJVFkgY2FwICImI3gyMjI5OyI+Ci08IUVOVElUWSBjYXBzICImI3gyMjI5
OyYjeEZFMDA7Ij4KLTwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgotPCFFTlRJVFkgY3VwcyAiJiN4
MjIyQTsmI3hGRTAwOyI+Ci08IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludGVn
cmFsICImI3gyMjJCOyI+Ci08IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KLTwhRU5USVRZIHRpbnQg
IiYjeDIyMkQ7Ij4KLTwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Ci08IUVOVElUWSBjb25pbnQg
IiYjeDIyMkU7Ij4KLTwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbnRvdXJJ
bnRlZ3JhbCAiJiN4MjIyRTsiPgotPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Ci08IUVOVElU
WSBEb3VibGVDb250b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KLTwhRU5USVRZIENjb25pbnQgIiYj
eDIyMzA7Ij4KLTwhRU5USVRZIGN3aW50ICImI3gyMjMxOyI+Ci08IUVOVElUWSBjd2NvbmludCAi
JiN4MjIzMjsiPgotPCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI+
Ci08IUVOVElUWSBhd2NvbmludCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgQ291bnRlckNsb2Nrd2lz
ZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI+
Ci08IUVOVElUWSB0aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIFRoZXJlZm9yZSAiJiN4
MjIzNDsiPgotPCFFTlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Ci08IUVOVElUWSBiZWNhdXNlICIm
I3gyMjM1OyI+Ci08IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Ci08IUVOVElUWSByYXRpbyAi
JiN4MjIzNjsiPgotPCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIFByb3BvcnRp
b24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgotPCFFTlRJVFkgZG90
bWludXMgIiYjeDIyMzg7Ij4KLTwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Ci08IUVOVElUWSBo
b210aHQgIiYjeDIyM0I7Ij4KLTwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgVGls
ZGUgIiYjeDIyM0M7Ij4KLTwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhp
Y2tzaW0gIiYjeDIyM0M7Ij4KLTwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4KLTwh
RU5USVRZIGJzaW0gIiYjeDIyM0Q7Ij4KLTwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4KLTwh
RU5USVRZIHJhY2UgIiYjeDIyM0Q7JiN4MzMxOyI+Ci08IUVOVElUWSBhYyAiJiN4MjIzRTsiPgot
PCFFTlRJVFkgbXN0cG9zICImI3gyMjNFOyI+Ci08IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMz
OyI+Ci08IUVOVElUWSBhY2QgIiYjeDIyM0Y7Ij4KLTwhRU5USVRZIHdyZWF0aCAiJiN4MjI0MDsi
PgotPCFFTlRJVFkgVmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgotPCFFTlRJVFkgd3IgIiYjeDIy
NDA7Ij4KLTwhRU5USVRZIG5zaW0gIiYjeDIyNDE7Ij4KLTwhRU5USVRZIE5vdFRpbGRlICImI3gy
MjQxOyI+Ci08IUVOVElUWSBlc2ltICImI3gyMjQyOyI+Ci08IUVOVElUWSBFcXVhbFRpbGRlICIm
I3gyMjQyOyI+Ci08IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgTm90RXF1YWxU
aWxkZSAiJiN4MjI0MjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsi
PgotPCFFTlRJVFkgc2ltZSAiJiN4MjI0MzsiPgotPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0
MzsiPgotPCFFTlRJVFkgc2ltZXEgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIG5zaW1lICImI3gyMjQ0
OyI+Ci08IUVOVElUWSBuc2ltZXEgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRXF1YWwg
IiYjeDIyNDQ7Ij4KLTwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIFRpbGRlRnVs
bEVxdWFsICImI3gyMjQ1OyI+Ci08IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgotPCFFTlRJVFkg
bmNvbmcgIiYjeDIyNDc7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI+
Ci08IUVOVElUWSBhc3ltcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4KLTwh
RU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwcHJveCAiJiN4MjI0ODsi
PgotPCFFTlRJVFkgdGhrYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gy
MjQ4OyI+Ci08IUVOVElUWSBuYXAgIiYjeDIyNDk7Ij4KLTwhRU5USVRZIE5vdFRpbGRlVGlsZGUg
IiYjeDIyNDk7Ij4KLTwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KLTwhRU5USVRZIGFwZSAi
JiN4MjI0QTsiPgotPCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KLTwhRU5USVRZIGFwaWQg
IiYjeDIyNEI7Ij4KLTwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgotPCFFTlRJVFkg
YmNvbmcgIiYjeDIyNEM7Ij4KLTwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Ci08IUVOVElU
WSBhc3ltcGVxICImI3gyMjREOyI+Ci08IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KLTwhRU5U
SVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsiPgot
PCFFTlRJVFkgSHVtcERvd25IdW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBCdW1wZXEgIiYjeDIy
NEU7Ij4KLTwhRU5USVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5U
SVRZIG5idW1wICImI3gyMjRFOyYjeDMzODsiPgotPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij4K
LTwhRU5USVRZIEh1bXBFcXVhbCAiJiN4MjI0RjsiPgotPCFFTlRJVFkgYnVtcGVxICImI3gyMjRG
OyI+Ci08IUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RIdW1w
RXF1YWwgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgotPCFF
TlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+Ci08
IUVOVElUWSBuZWRvdCAiJiN4MjI1MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVEb3QgIiYjeDIyNTE7
Ij4KLTwhRU5USVRZIGRvdGVxZG90ICImI3gyMjUxOyI+Ci08IUVOVElUWSBlZkRvdCAiJiN4MjI1
MjsiPgotPCFFTlRJVFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgotPCFFTlRJVFkgZXJEb3Qg
IiYjeDIyNTM7Ij4KLTwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgotPCFFTlRJVFkg
Y29sb25lICImI3gyMjU0OyI+Ci08IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Ci08IUVOVElU
WSBBc3NpZ24gIiYjeDIyNTQ7Ij4KLTwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJ
VFkgZXFjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgotPCFFTlRJ
VFkgZXFjaXJjICImI3gyMjU2OyI+Ci08IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Ci08IUVOVElU
WSBjaXJjZXEgIiYjeDIyNTc7Ij4KLTwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgotPCFFTlRJ
VFkgdmVlZXEgIiYjeDIyNUE7Ij4KLTwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KLTwhRU5USVRZ
IHRyaWFuZ2xlcSAiJiN4MjI1QzsiPgotPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Ci08IUVO
VElUWSBxdWVzdGVxICImI3gyMjVGOyI+Ci08IUVOVElUWSBuZSAiJiN4MjI2MDsiPgotPCFFTlRJ
VFkgTm90RXF1YWwgIiYjeDIyNjA7Ij4KLTwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Ci08IUVO
VElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ij4KLTwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4
MjBFNTsiPgotPCFFTlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Ci08IUVOVElUWSBOb3RDb25ncnVl
bnQgIiYjeDIyNjI7Ij4KLTwhRU5USVRZIGxlICImI3gyMjY0OyI+Ci08IUVOVElUWSBsZXEgIiYj
eDIyNjQ7Ij4KLTwhRU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgZ2Ug
IiYjeDIyNjU7Ij4KLTwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgotPCFFTlRJVFkg
Z2VxICImI3gyMjY1OyI+Ci08IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KLTwhRU5U
SVRZIGxFICImI3gyMjY2OyI+Ci08IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+Ci08
IUVOVElUWSBsZXFxICImI3gyMjY2OyI+Ci08IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4OyI+
Ci08IUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdFICImI3gyMjY3
OyI+Ci08IUVOVElUWSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Ci08IUVOVElUWSBnZXFx
ICImI3gyMjY3OyI+Ci08IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBu
Z2VxcSAiJiN4MjI2NzsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYj
eDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGxuZXFx
ICImI3gyMjY4OyI+Ci08IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IGx2ZXJ0bmVxcSAiJiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBnbkUgIiYjeDIyNjk7Ij4K
LTwhRU5USVRZIGduZXFxICImI3gyMjY5OyI+Ci08IUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZF
MDA7Ij4KLTwhRU5USVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08IUVOVElUWSBM
dCAiJiN4MjI2QTsiPgotPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KLTwhRU5U
SVRZIGxsICImI3gyMjZBOyI+Ci08IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgotPCFF
TlRJVFkgTm90TGVzc0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Ci08IUVOVElUWSBuTHQgIiYjeDIy
NkE7JiN4MjBEMjsiPgotPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIE5lc3RlZEdy
ZWF0ZXJHcmVhdGVyICImI3gyMjZCOyI+Ci08IUVOVElUWSBnZyAiJiN4MjI2QjsiPgotPCFFTlRJ
VFkgbkd0diAiJiN4MjI2QjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVyICIm
I3gyMjZCOyYjeDMzODsiPgotPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KLTwhRU5U
SVRZIHR3aXh0ICImI3gyMjZDOyI+Ci08IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Ci08IUVO
VElUWSBOb3RDdXBDYXAgIiYjeDIyNkQ7Ij4KLTwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgotPCFF
TlRJVFkgTm90TGVzcyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4KLTwh
RU5USVRZIG5ndCAiJiN4MjI2RjsiPgotPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2RjsiPgot
PCFFTlRJVFkgbmd0ciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Ci08IUVO
VElUWSBOb3RMZXNzRXF1YWwgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5sZXEgIiYjeDIyNzA7Ij4K
LTwhRU5USVRZIG5nZSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gy
MjcxOyI+Ci08IUVOVElUWSBuZ2VxICImI3gyMjcxOyI+Ci08IUVOVElUWSBsc2ltICImI3gyMjcy
OyI+Ci08IUVOVElUWSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KLTwhRU5USVRZIGxlc3NzaW0gIiYj
eDIyNzI7Ij4KLTwhRU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KLTwhRU5USVRZIGd0cnNpbSAiJiN4
MjI3MzsiPgotPCFFTlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Ci08IUVOVElUWSBubHNp
bSAiJiN4MjI3NDsiPgotPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Ci08IUVOVElU
WSBuZ3NpbSAiJiN4MjI3NTsiPgotPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI+
Ci08IUVOVElUWSBsZyAiJiN4MjI3NjsiPgotPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiPgot
PCFFTlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGdsICImI3gyMjc3OyI+
Ci08IUVOVElUWSBndHJsZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4
MjI3NzsiPgotPCFFTlRJVFkgbnRsZyAiJiN4MjI3ODsiPgotPCFFTlRJVFkgTm90TGVzc0dyZWF0
ZXIgIiYjeDIyNzg7Ij4KLTwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIE5vdEdy
ZWF0ZXJMZXNzICImI3gyMjc5OyI+Ci08IUVOVElUWSBwciAiJiN4MjI3QTsiPgotPCFFTlRJVFkg
UHJlY2VkZXMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZ
IHNjICImI3gyMjdCOyI+Ci08IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgotPCFFTlRJVFkg
c3VjYyAiJiN4MjI3QjsiPgotPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiPgotPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIy
N0M7Ij4KLTwhRU5USVRZIHNjY3VlICImI3gyMjdEOyI+Ci08IUVOVElUWSBTdWNjZWVkc1NsYW50
RXF1YWwgIiYjeDIyN0Q7Ij4KLTwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Ci08IUVO
VElUWSBwcnNpbSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgotPCFF
TlRJVFkgUHJlY2VkZXNUaWxkZSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgc2NzaW0gIiYjeDIyN0Y7
Ij4KLTwhRU5USVRZIHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzVGlsZGUg
IiYjeDIyN0Y7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyI+
Ci08IUVOVElUWSBucHIgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+Ci08
IUVOVElUWSBOb3RQcmVjZWRlcyAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnNjICImI3gyMjgxOyI+
Ci08IUVOVElUWSBuc3VjYyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIy
ODE7Ij4KLTwhRU5USVRZIHN1YiAiJiN4MjI4MjsiPgotPCFFTlRJVFkgc3Vic2V0ICImI3gyMjgy
OyI+Ci08IUVOVElUWSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBuc3Vic2V0
ICImI3gyMjgyOyYjeDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gyMEQy
OyI+Ci08IUVOVElUWSBzdXAgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHN1cHNldCAiJiN4MjI4Mzsi
PgotPCFFTlRJVFkgU3VwZXJzZXQgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHZuc3VwICImI3gyMjgz
OyYjeDIwRDI7Ij4KLTwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJ
VFkgTm90U3VwZXJzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YiAiJiN4MjI4
NDsiPgotPCFFTlRJVFkgbnN1cCAiJiN4MjI4NTsiPgotPCFFTlRJVFkgc3ViZSAiJiN4MjI4Njsi
PgotPCFFTlRJVFkgU3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1YnNldGVxICIm
I3gyMjg2OyI+Ci08IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Ci08IUVOVElUWSBzdXBzZXRlcSAi
JiN4MjI4NzsiPgotPCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgotPCFFTlRJVFkg
bnN1YmUgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgotPCFFTlRJ
VFkgTm90U3Vic2V0RXF1YWwgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdXBlICImI3gyMjg5OyI+
Ci08IUVOVElUWSBuc3Vwc2V0ZXEgIiYjeDIyODk7Ij4KLTwhRU5USVRZIE5vdFN1cGVyc2V0RXF1
YWwgIiYjeDIyODk7Ij4KLTwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Ci08IUVOVElUWSBzdWJz
ZXRuZXEgIiYjeDIyOEE7Ij4KLTwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+Ci08
IUVOVElUWSB2YXJzdWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbmUg
IiYjeDIyOEI7Ij4KLTwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgdnN1
cG5lICImI3gyMjhCOyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4Qjsm
I3hGRTAwOyI+Ci08IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KLTwhRU5USVRZIHVwbHVzICIm
I3gyMjhFOyI+Ci08IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIHNxc3Vi
ICImI3gyMjhGOyI+Ci08IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZ
IHNxc3Vic2V0ICImI3gyMjhGOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7
JiN4MzM4OyI+Ci08IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgU3F1YXJlU3Vw
ZXJzZXQgIiYjeDIyOTA7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Ci08IUVOVElU
WSBOb3RTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3ViZSAi
JiN4MjI5MTsiPgotPCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KLTwhRU5U
SVRZIHNxc3Vic2V0ZXEgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiPgot
PCFFTlRJVFkgU3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FzdXBz
ZXRlcSAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KLTwhRU5USVRZIFNx
dWFyZUludGVyc2VjdGlvbiAiJiN4MjI5MzsiPgotPCFFTlRJVFkgc3FjYXBzICImI3gyMjkzOyYj
eEZFMDA7Ij4KLTwhRU5USVRZIHNxY3VwICImI3gyMjk0OyI+Ci08IUVOVElUWSBTcXVhcmVVbmlv
biAiJiN4MjI5NDsiPgotPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KLTwhRU5U
SVRZIG9wbHVzICImI3gyMjk1OyI+Ci08IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+Ci08
IUVOVElUWSBvbWludXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2
OyI+Ci08IUVOVElUWSBvdGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIENpcmNsZVRpbWVzICIm
I3gyMjk3OyI+Ci08IUVOVElUWSBvc29sICImI3gyMjk4OyI+Ci08IUVOVElUWSBvZG90ICImI3gy
Mjk5OyI+Ci08IUVOVElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIG9jaXIgIiYj
eDIyOUE7Ij4KLTwhRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Ci08IUVOVElUWSBvYXN0
ICImI3gyMjlCOyI+Ci08IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Ci08IUVOVElUWSBv
ZGFzaCAiJiN4MjI5RDsiPgotPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KLTwhRU5U
SVRZIHBsdXNiICImI3gyMjlFOyI+Ci08IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Ci08IUVO
VElUWSBtaW51c2IgIiYjeDIyOUY7Ij4KLTwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+Ci08
IUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIGJveHRpbWVzICImI3gyMkEwOyI+
Ci08IUVOVElUWSBzZG90YiAiJiN4MjJBMTsiPgotPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkEx
OyI+Ci08IUVOVElUWSB2ZGFzaCAiJiN4MjJBMjsiPgotPCFFTlRJVFkgUmlnaHRUZWUgIiYjeDIy
QTI7Ij4KLTwhRU5USVRZIGRhc2h2ICImI3gyMkEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlICImI3gy
MkEzOyI+Ci08IUVOVElUWSB0b3AgIiYjeDIyQTQ7Ij4KLTwhRU5USVRZIERvd25UZWUgIiYjeDIy
QTQ7Ij4KLTwhRU5USVRZIGJvdHRvbSAiJiN4MjJBNTsiPgotPCFFTlRJVFkgYm90ICImI3gyMkE1
OyI+Ci08IUVOVElUWSBwZXJwICImI3gyMkE1OyI+Ci08IUVOVElUWSBVcFRlZSAiJiN4MjJBNTsi
PgotPCFFTlRJVFkgbW9kZWxzICImI3gyMkE3OyI+Ci08IUVOVElUWSB2RGFzaCAiJiN4MjJBODsi
PgotPCFFTlRJVFkgRG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KLTwhRU5USVRZIFZkYXNoICIm
I3gyMkE5OyI+Ci08IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KLTwhRU5USVRZIFZEYXNoICIm
I3gyMkFCOyI+Ci08IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KLTwhRU5USVRZIG52RGFzaCAi
JiN4MjJBRDsiPgotPCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Ci08IUVOVElUWSBuVkRhc2gg
IiYjeDIyQUY7Ij4KLTwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgotPCFFTlRJVFkgdmx0cmkg
IiYjeDIyQjI7Ij4KLTwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgotPCFFTlRJ
VFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyI+Ci08IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiPgot
PCFFTlRJVFkgdmFydHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgotPCFFTlRJVFkgUmlnaHRUcmlh
bmdsZSAiJiN4MjJCMzsiPgotPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIHRy
aWFuZ2xlbGVmdGVxICImI3gyMkI0OyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4
MjJCNDsiPgotPCFFTlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Ci08IUVOVElUWSBy
dHJpZSAiJiN4MjJCNTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+Ci08
IUVOVElUWSBSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIG52cnRyaWUg
IiYjeDIyQjU7JiN4MjBEMjsiPgotPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Ci08IUVOVElU
WSBpbW9mICImI3gyMkI3OyI+Ci08IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkg
bXVsdGltYXAgIiYjeDIyQjg7Ij4KLTwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgotPCFFTlRJ
VFkgaW50Y2FsICImI3gyMkJBOyI+Ci08IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgotPCFF
TlRJVFkgdmVlYmFyICImI3gyMkJCOyI+Ci08IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4KLTwh
RU5USVRZIGFuZ3J0dmIgIiYjeDIyQkU7Ij4KLTwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+Ci08
IUVOVElUWSB4d2VkZ2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+Ci08
IUVOVElUWSBiaWd3ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsiPgot
PCFFTlRJVFkgVmVlICImI3gyMkMxOyI+Ci08IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4KLTwh
RU5USVRZIHhjYXAgIiYjeDIyQzI7Ij4KLTwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsi
PgotPCFFTlRJVFkgYmlnY2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSB4Y3VwICImI3gyMkMzOyI+
Ci08IUVOVElUWSBVbmlvbiAiJiN4MjJDMzsiPgotPCFFTlRJVFkgYmlnY3VwICImI3gyMkMzOyI+
Ci08IUVOVElUWSBkaWFtICImI3gyMkM0OyI+Ci08IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI+
Ci08IUVOVElUWSBEaWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBzZG90ICImI3gyMkM1OyI+
Ci08IUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIFN0YXIgIiYjeDIyQzY7Ij4K
LTwhRU5USVRZIGRpdm9ueCAiJiN4MjJDNzsiPgotPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4
MjJDNzsiPgotPCFFTlRJVFkgYm93dGllICImI3gyMkM4OyI+Ci08IUVOVElUWSBsdGltZXMgIiYj
eDIyQzk7Ij4KLTwhRU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgotPCFFTlRJVFkgbHRocmVlICIm
I3gyMkNCOyI+Ci08IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgotPCFFTlRJVFkg
cnRocmVlICImI3gyMkNDOyI+Ci08IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7Ij4K
LTwhRU5USVRZIGJzaW1lICImI3gyMkNEOyI+Ci08IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7
Ij4KLTwhRU5USVRZIGN1dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXJseXZlZSAiJiN4MjJD
RTsiPgotPCFFTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KLTwhRU5USVRZIGN1cmx5d2VkZ2UgIiYj
eDIyQ0Y7Ij4KLTwhRU5USVRZIFN1YiAiJiN4MjJEMDsiPgotPCFFTlRJVFkgU3Vic2V0ICImI3gy
MkQwOyI+Ci08IUVOVElUWSBTdXAgIiYjeDIyRDE7Ij4KLTwhRU5USVRZIFN1cHNldCAiJiN4MjJE
MTsiPgotPCFFTlRJVFkgQ2FwICImI3gyMkQyOyI+Ci08IUVOVElUWSBDdXAgIiYjeDIyRDM7Ij4K
LTwhRU5USVRZIGZvcmsgIiYjeDIyRDQ7Ij4KLTwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsi
PgotPCFFTlRJVFkgZXBhciAiJiN4MjJENTsiPgotPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7Ij4K
LTwhRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGd0ZG90ICImI3gyMkQ3OyI+
Ci08IUVOVElUWSBndHJkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIExsICImI3gyMkQ4OyI+Ci08
IUVOVElUWSBuTGwgIiYjeDIyRDg7JiN4MzM4OyI+Ci08IUVOVElUWSBHZyAiJiN4MjJEOTsiPgot
PCFFTlRJVFkgZ2dnICImI3gyMkQ5OyI+Ci08IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4OyI+
Ci08IUVOVElUWSBsZWcgIiYjeDIyREE7Ij4KLTwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYj
eDIyREE7Ij4KLTwhRU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzZyAi
JiN4MjJEQTsmI3hGRTAwOyI+Ci08IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KLTwhRU5USVRZIGd0
cmVxbGVzcyAiJiN4MjJEQjsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJEQjsi
PgotPCFFTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Ci08IUVOVElUWSBjdWVwciAiJiN4
MjJERTsiPgotPCFFTlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KLTwhRU5USVRZIGN1ZXNj
ICImI3gyMkRGOyI+Ci08IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgotPCFFTlRJVFkg
bnByY3VlICImI3gyMkUwOyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIy
RTA7Ij4KLTwhRU5USVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNT
bGFudEVxdWFsICImI3gyMkUxOyI+Ci08IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Ci08IUVO
VElUWSBOb3RTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgotPCFFTlRJVFkgbnNxc3VwZSAi
JiN4MjJFMzsiPgotPCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPgot
PCFFTlRJVFkgbG5zaW0gIiYjeDIyRTY7Ij4KLTwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+Ci08
IUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyI+
Ci08IUVOVElUWSBzY25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5
OyI+Ci08IUVOVElUWSBubHRyaSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdCAi
JiN4MjJFQTsiPgotPCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Ci08IUVOVElU
WSBucnRyaSAiJiN4MjJFQjsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ij4K
LTwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIG5sdHJpZSAi
JiN4MjJFQzsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Ci08IUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiPgotPCFFTlRJVFkgbnJ0cmllICImI3gy
MkVEOyI+Ci08IUVOVElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Ci08IUVOVElUWSBO
b3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIHZlbGxpcCAiJiN4MjJF
RTsiPgotPCFFTlRJVFkgY3Rkb3QgIiYjeDIyRUY7Ij4KLTwhRU5USVRZIHV0ZG90ICImI3gyMkYw
OyI+Ci08IUVOVElUWSBkdGRvdCAiJiN4MjJGMTsiPgotPCFFTlRJVFkgZGlzaW4gIiYjeDIyRjI7
Ij4KLTwhRU5USVRZIGlzaW5zdiAiJiN4MjJGMzsiPgotPCFFTlRJVFkgaXNpbnMgIiYjeDIyRjQ7
Ij4KLTwhRU5USVRZIGlzaW5kb3QgIiYjeDIyRjU7Ij4KLTwhRU5USVRZIG5vdGluZG90ICImI3gy
MkY1OyYjeDMzODsiPgotPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgotPCFFTlRJVFkgbm90
aW52YiAiJiN4MjJGNzsiPgotPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KLTwhRU5USVRZIG5v
dGluRSAiJiN4MjJGOTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KLTwhRU5U
SVRZIHhuaXMgIiYjeDIyRkI7Ij4KLTwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgotPCFFTlRJVFkg
bm90bml2YyAiJiN4MjJGRDsiPgotPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgotPCFFTlRJ
VFkgYmFyd2VkICImI3gyMzA1OyI+Ci08IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgotPCFF
TlRJVFkgQmFyd2VkICImI3gyMzA2OyI+Ci08IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4MjMw
NjsiPgotPCFFTlRJVFkgbGNlaWwgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIExlZnRDZWlsaW5nICIm
I3gyMzA4OyI+Ci08IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgotPCFFTlRJVFkgUmlnaHRDZWls
aW5nICImI3gyMzA5OyI+Ci08IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KLTwhRU5USVRZIExl
ZnRGbG9vciAiJiN4MjMwQTsiPgotPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Ci08IUVOVElU
WSBSaWdodEZsb29yICImI3gyMzBCOyI+Ci08IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4KLTwh
RU5USVRZIGRsY3JvcCAiJiN4MjMwRDsiPgotPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+Ci08
IUVOVElUWSB1bGNyb3AgIiYjeDIzMEY7Ij4KLTwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4KLTwh
RU5USVRZIHByb2ZsaW5lICImI3gyMzEyOyI+Ci08IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMxMzsi
PgotPCFFTlRJVFkgdGVscmVjICImI3gyMzE1OyI+Ci08IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7
Ij4KLTwhRU5USVRZIHVsY29ybiAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdWxjb3JuZXIgIiYjeDIz
MUM7Ij4KLTwhRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiPgotPCFFTlRJVFkgdXJjb3JuZXIgIiYj
eDIzMUQ7Ij4KLTwhRU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgotPCFFTlRJVFkgbGxjb3JuZXIg
IiYjeDIzMUU7Ij4KLTwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgotPCFFTlRJVFkgbHJjb3Ju
ZXIgIiYjeDIzMUY7Ij4KLTwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Ci08IUVOVElUWSBzZnJv
d24gIiYjeDIzMjI7Ij4KLTwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Ci08IUVOVElUWSBzc21p
bGUgIiYjeDIzMjM7Ij4KLTwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgotPCFFTlRJVFkgcHJv
ZmFsYXIgIiYjeDIzMkU7Ij4KLTwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgotPCFFTlRJVFkg
b3ZiYXIgIiYjeDIzM0Q7Ij4KLTwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgotPCFFTlRJVFkg
YW5nemFyciAiJiN4MjM3QzsiPgotPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Ci08IUVOVElU
WSBsbW91c3RhY2hlICImI3gyM0IwOyI+Ci08IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4KLTwh
RU5USVRZIHJtb3VzdGFjaGUgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHRicmsgIiYjeDIzQjQ7Ij4K
LTwhRU5USVRZIE92ZXJCcmFja2V0ICImI3gyM0I0OyI+Ci08IUVOVElUWSBiYnJrICImI3gyM0I1
OyI+Ci08IUVOVElUWSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIGJicmt0YnJr
ICImI3gyM0I2OyI+Ci08IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KLTwhRU5U
SVRZIFVuZGVyUGFyZW50aGVzaXMgIiYjeDIzREQ7Ij4KLTwhRU5USVRZIE92ZXJCcmFjZSAiJiN4
MjNERTsiPgotPCFFTlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgotPCFFTlRJVFkgdHJwZXpp
dW0gIiYjeDIzRTI7Ij4KLTwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Ci08IUVOVElUWSBi
bGFuayAiJiN4MjQyMzsiPgotPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGNpcmNs
ZWRTICImI3gyNEM4OyI+Ci08IUVOVElUWSBib3hoICImI3gyNTAwOyI+Ci08IUVOVElUWSBIb3Jp
em9udGFsTGluZSAiJiN4MjUwMDsiPgotPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgotPCFFTlRJ
VFkgYm94ZHIgIiYjeDI1MEM7Ij4KLTwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Ci08IUVOVElU
WSBib3h1ciAiJiN4MjUxNDsiPgotPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KLTwhRU5USVRZ
IGJveHZyICImI3gyNTFDOyI+Ci08IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgotPCFFTlRJVFkg
Ym94aGQgIiYjeDI1MkM7Ij4KLTwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Ci08IUVOVElUWSBi
b3h2aCAiJiN4MjUzQzsiPgotPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgotPCFFTlRJVFkgYm94
ViAiJiN4MjU1MTsiPgotPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KLTwhRU5USVRZIGJveERy
ICImI3gyNTUzOyI+Ci08IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgotPCFFTlRJVFkgYm94ZEwg
IiYjeDI1NTU7Ij4KLTwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Ci08IUVOVElUWSBib3hETCAi
JiN4MjU1NzsiPgotPCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KLTwhRU5USVRZIGJveFVyICIm
I3gyNTU5OyI+Ci08IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgotPCFFTlRJVFkgYm94dUwgIiYj
eDI1NUI7Ij4KLTwhRU5USVRZIGJveFVsICImI3gyNTVDOyI+Ci08IUVOVElUWSBib3hVTCAiJiN4
MjU1RDsiPgotPCFFTlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KLTwhRU5USVRZIGJveFZyICImI3gy
NTVGOyI+Ci08IUVOVElUWSBib3hWUiAiJiN4MjU2MDsiPgotPCFFTlRJVFkgYm94dkwgIiYjeDI1
NjE7Ij4KLTwhRU5USVRZIGJveFZsICImI3gyNTYyOyI+Ci08IUVOVElUWSBib3hWTCAiJiN4MjU2
MzsiPgotPCFFTlRJVFkgYm94SGQgIiYjeDI1NjQ7Ij4KLTwhRU5USVRZIGJveGhEICImI3gyNTY1
OyI+Ci08IUVOVElUWSBib3hIRCAiJiN4MjU2NjsiPgotPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7
Ij4KLTwhRU5USVRZIGJveGhVICImI3gyNTY4OyI+Ci08IUVOVElUWSBib3hIVSAiJiN4MjU2OTsi
PgotPCFFTlRJVFkgYm94dkggIiYjeDI1NkE7Ij4KLTwhRU5USVRZIGJveFZoICImI3gyNTZCOyI+
Ci08IUVOVElUWSBib3hWSCAiJiN4MjU2QzsiPgotPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij4K
LTwhRU5USVRZIGxoYmxrICImI3gyNTg0OyI+Ci08IUVOVElUWSBibG9jayAiJiN4MjU4ODsiPgot
PCFFTlRJVFkgYmxrMTQgIiYjeDI1OTE7Ij4KLTwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+Ci08
IUVOVElUWSBibGszNCAiJiN4MjU5MzsiPgotPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Ci08IUVO
VElUWSBzcXVhcmUgIiYjeDI1QTE7Ij4KLTwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgotPCFF
TlRJVFkgc3F1ZiAiJiN4MjVBQTsiPgotPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Ci08IUVO
VElUWSBibGFja3NxdWFyZSAiJiN4MjVBQTsiPgotPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1
YXJlICImI3gyNUFBOyI+Ci08IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsi
PgotPCFFTlRJVFkgcmVjdCAiJiN4MjVBRDsiPgotPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI+
Ci08IUVOVElUWSBmbHRucyAiJiN4MjVCMTsiPgotPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ij4K
LTwhRU5USVRZIGJpZ3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIHV0cmlmICImI3gy
NUI0OyI+Ci08IUVOVElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Ci08IUVOVElUWSB1dHJp
ICImI3gyNUI1OyI+Ci08IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgotPCFFTlRJVFkgcnRy
aWYgIiYjeDI1Qjg7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPgot
PCFFTlRJVFkgcnRyaSAiJiN4MjVCOTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVC
OTsiPgotPCFFTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ij4KLTwhRU5USVRZIGJpZ3RyaWFuZ2xlZG93
biAiJiN4MjVCRDsiPgotPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGJsYWNr
dHJpYW5nbGVkb3duICImI3gyNUJFOyI+Ci08IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Ci08IUVO
VElUWSB0cmlhbmdsZWRvd24gIiYjeDI1QkY7Ij4KLTwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI+
Ci08IUVOVElUWSBibGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgotPCFFTlRJVFkgbHRyaSAi
JiN4MjVDMzsiPgotPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Ci08IUVOVElUWSBs
b3ogIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGNp
ciAiJiN4MjVDQjsiPgotPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Ci08IUVOVElUWSB4Y2ly
YyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgdWx0
cmkgIiYjeDI1Rjg7Ij4KLTwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Ci08IUVOVElUWSBsbHRy
aSAiJiN4MjVGQTsiPgotPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgotPCFF
TlRJVFkgRmlsbGVkU21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KLTwhRU5USVRZIHN0YXJmICImI3gy
NjA1OyI+Ci08IUVOVElUWSBiaWdzdGFyICImI3gyNjA1OyI+Ci08IUVOVElUWSBzdGFyICImI3gy
NjA2OyI+Ci08IUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiPgotPCFFTlRJVFkgZmVtYWxlICImI3gy
NjQwOyI+Ci08IUVOVElUWSBtYWxlICImI3gyNjQyOyI+Ci08IUVOVElUWSBzcGFkZXMgIiYjeDI2
NjA7Ij4KLTwhRU5USVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgotPCFFTlRJVFkgY2x1YnMgIiYj
eDI2NjM7Ij4KLTwhRU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Ci08IUVOVElUWSBoZWFydHMg
IiYjeDI2NjU7Ij4KLTwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgotPCFFTlRJVFkgZGlh
bXMgIiYjeDI2NjY7Ij4KLTwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Ci08IUVOVElU
WSBzdW5nICImI3gyNjZBOyI+Ci08IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Ci08IUVOVElUWSBu
YXR1ciAiJiN4MjY2RTsiPgotPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgotPCFFTlRJVFkg
c2hhcnAgIiYjeDI2NkY7Ij4KLTwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Ci08IUVOVElUWSBj
aGVja21hcmsgIiYjeDI3MTM7Ij4KLTwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Ci08IUVOVElU
WSBtYWx0ICImI3gyNzIwOyI+Ci08IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Ci08IUVOVElU
WSBzZXh0ICImI3gyNzM2OyI+Ci08IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1ODsi
PgotPCFFTlRJVFkgbGJicmsgIiYjeDI3NzI7Ij4KLTwhRU5USVRZIHJiYnJrICImI3gyNzczOyI+
Ci08IUVOVElUWSBic29saHN1YiAiJiN4MjdDODsiPgotPCFFTlRJVFkgc3VwaHNvbCAiJiN4MjdD
OTsiPgotPCFFTlRJVFkgbG9icmsgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIExlZnREb3VibGVCcmFj
a2V0ICImI3gyN0U2OyI+Ci08IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgotPCFFTlRJVFkgUmln
aHREb3VibGVCcmFja2V0ICImI3gyN0U3OyI+Ci08IUVOVElUWSBsYW5nICImI3gyN0U4OyI+Ci08
IUVOVElUWSBMZWZ0QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Ci08IUVOVElUWSBsYW5nbGUgIiYj
eDI3RTg7Ij4KLTwhRU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIFJpZ2h0QW5nbGVC
cmFja2V0ICImI3gyN0U5OyI+Ci08IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KLTwhRU5USVRZ
IExhbmcgIiYjeDI3RUE7Ij4KLTwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KLTwhRU5USVRZIGxv
YW5nICImI3gyN0VDOyI+Ci08IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgotPCFFTlRJVFkgeGxh
cnIgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5U
SVRZIExvbmdMZWZ0QXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIHhyYXJyICImI3gyN0Y2OyI+
Ci08IUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgTG9uZ1JpZ2h0
QXJyb3cgIiYjeDI3RjY7Ij4KLTwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Ci08IUVOVElUWSBs
b25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ij4KLTwhRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJv
dyAiJiN4MjdGNzsiPgotPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIExvbmds
ZWZ0YXJyb3cgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYjeDI3
Rjg7Ij4KLTwhRU5USVRZIHhyQXJyICImI3gyN0Y5OyI+Ci08IUVOVElUWSBMb25ncmlnaHRhcnJv
dyAiJiN4MjdGOTsiPgotPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7Ij4K
LTwhRU5USVRZIHhoQXJyICImI3gyN0ZBOyI+Ci08IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cg
IiYjeDI3RkE7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsi
PgotPCFFTlRJVFkgeG1hcCAiJiN4MjdGQzsiPgotPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdG
QzsiPgotPCFFTlRJVFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KLTwhRU5USVRZIG52bEFyciAiJiN4
MjkwMjsiPgotPCFFTlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Ci08IUVOVElUWSBudkhhcnIgIiYj
eDI5MDQ7Ij4KLTwhRU5USVRZIE1hcCAiJiN4MjkwNTsiPgotPCFFTlRJVFkgbGJhcnIgIiYjeDI5
MEM7Ij4KLTwhRU5USVRZIHJiYXJyICImI3gyOTBEOyI+Ci08IUVOVElUWSBia2Fyb3cgIiYjeDI5
MEQ7Ij4KLTwhRU5USVRZIGxCYXJyICImI3gyOTBFOyI+Ci08IUVOVElUWSByQmFyciAiJiN4Mjkw
RjsiPgotPCFFTlRJVFkgZGJrYXJvdyAiJiN4MjkwRjsiPgotPCFFTlRJVFkgUkJhcnIgIiYjeDI5
MTA7Ij4KLTwhRU5USVRZIGRyYmthcm93ICImI3gyOTEwOyI+Ci08IUVOVElUWSBERG90cmFoZCAi
JiN4MjkxMTsiPgotPCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgotPCFFTlRJVFkgRG93
bkFycm93QmFyICImI3gyOTEzOyI+Ci08IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KLTwhRU5U
SVRZIGxhdGFpbCAiJiN4MjkxOTsiPgotPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Ci08IUVO
VElUWSBsQXRhaWwgIiYjeDI5MUI7Ij4KLTwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgotPCFF
TlRJVFkgbGFycmZzICImI3gyOTFEOyI+Ci08IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4KLTwh
RU5USVRZIGxhcnJiZnMgIiYjeDI5MUY7Ij4KLTwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ij4K
LTwhRU5USVRZIG53YXJoayAiJiN4MjkyMzsiPgotPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI+
Ci08IUVOVElUWSBzZWFyaGsgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1
OyI+Ci08IUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIGhrc3dhcm93ICImI3gy
OTI2OyI+Ci08IUVOVElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KLTwhRU5USVRZIG5lc2VhciAiJiN4
MjkyODsiPgotPCFFTlRJVFkgdG9lYSAiJiN4MjkyODsiPgotPCFFTlRJVFkgc2Vzd2FyICImI3gy
OTI5OyI+Ci08IUVOVElUWSB0b3NhICImI3gyOTI5OyI+Ci08IUVOVElUWSBzd253YXIgIiYjeDI5
MkE7Ij4KLTwhRU5USVRZIHJhcnJjICImI3gyOTMzOyI+Ci08IUVOVElUWSBucmFycmMgIiYjeDI5
MzM7JiN4MzM4OyI+Ci08IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Ci08IUVOVElUWSBsZGNh
ICImI3gyOTM2OyI+Ci08IUVOVElUWSByZGNhICImI3gyOTM3OyI+Ci08IUVOVElUWSBjdWRhcnJs
ICImI3gyOTM4OyI+Ci08IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KLTwhRU5USVRZIGN1cmFy
cm0gIiYjeDI5M0M7Ij4KLTwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KLTwhRU5USVRZIHJh
cnJwbCAiJiN4Mjk0NTsiPgotPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgotPCFFTlRJVFkg
VWFycm9jaXIgIiYjeDI5NDk7Ij4KLTwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Ci08IUVO
VElUWSBsZHJ1c2hhciAiJiN4Mjk0QjsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICImI3gy
OTRFOyI+Ci08IUVOVElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgotPCFFTlRJVFkg
RG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiPgotPCFFTlRJVFkgTGVmdFVwRG93blZlY3Rv
ciAiJiN4Mjk1MTsiPgotPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgotPCFFTlRJ
VFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIg
IiYjeDI5NTQ7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgotPCFF
TlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KLTwhRU5USVRZIERvd25SaWdodFZl
Y3RvckJhciAiJiN4Mjk1NzsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyI+
Ci08IUVOVElUWSBMZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgotPCFFTlRJVFkgTGVmdFRl
ZVZlY3RvciAiJiN4Mjk1QTsiPgotPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ij4K
LTwhRU5USVRZIFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KLTwhRU5USVRZIFJpZ2h0RG93
blRlZVZlY3RvciAiJiN4Mjk1RDsiPgotPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYjeDI5
NUU7Ij4KLTwhRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgotPCFFTlRJVFkg
TGVmdFVwVGVlVmVjdG9yICImI3gyOTYwOyI+Ci08IUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAi
JiN4Mjk2MTsiPgotPCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgotPCFFTlRJVFkgdUhhciAiJiN4
Mjk2MzsiPgotPCFFTlRJVFkgckhhciAiJiN4Mjk2NDsiPgotPCFFTlRJVFkgZEhhciAiJiN4Mjk2
NTsiPgotPCFFTlRJVFkgbHVydWhhciAiJiN4Mjk2NjsiPgotPCFFTlRJVFkgbGRyZGhhciAiJiN4
Mjk2NzsiPgotPCFFTlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgotPCFFTlRJVFkgcmRsZGhhciAi
JiN4Mjk2OTsiPgotPCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Ci08IUVOVElUWSBsbGhhcmQg
IiYjeDI5NkI7Ij4KLTwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgotPCFFTlRJVFkgbHJoYXJk
ICImI3gyOTZEOyI+Ci08IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgVXBFcXVp
bGlicml1bSAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KLTwhRU5USVRZ
IFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyI+Ci08IUVOVElUWSBSb3VuZEltcGxpZXMg
IiYjeDI5NzA7Ij4KLTwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Ci08IUVOVElUWSBzaW1yYXJy
ICImI3gyOTcyOyI+Ci08IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Ci08IUVOVElUWSByYXJy
c2ltICImI3gyOTc0OyI+Ci08IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KLTwhRU5USVRZIGx0
bGFyciAiJiN4Mjk3NjsiPgotPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Ci08IUVOVElUWSBz
dWJyYXJyICImI3gyOTc5OyI+Ci08IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Ci08IUVOVElU
WSBsZmlzaHQgIiYjeDI5N0M7Ij4KLTwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgotPCFFTlRJ
VFkgdWZpc2h0ICImI3gyOTdFOyI+Ci08IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KLTwhRU5U
SVRZIGxvcGFyICImI3gyOTg1OyI+Ci08IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgotPCFFTlRJ
VFkgbGJya2UgIiYjeDI5OEI7Ij4KLTwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Ci08IUVOVElU
WSBsYnJrc2x1ICImI3gyOThEOyI+Ci08IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Ci08IUVO
VElUWSBsYnJrc2xkICImI3gyOThGOyI+Ci08IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+Ci08
IUVOVElUWSBsYW5nZCAiJiN4Mjk5MTsiPgotPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4KLTwh
RU5USVRZIGxwYXJsdCAiJiN4Mjk5MzsiPgotPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+Ci08
IUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ij4KLTwhRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiPgot
PCFFTlRJVFkgdnppZ3phZyAiJiN4Mjk5QTsiPgotPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI+
Ci08IUVOVElUWSBhbmdydHZiZCAiJiN4Mjk5RDsiPgotPCFFTlRJVFkgYW5nZSAiJiN4MjlBNDsi
PgotPCFFTlRJVFkgcmFuZ2UgIiYjeDI5QTU7Ij4KLTwhRU5USVRZIGR3YW5nbGUgIiYjeDI5QTY7
Ij4KLTwhRU5USVRZIHV3YW5nbGUgIiYjeDI5QTc7Ij4KLTwhRU5USVRZIGFuZ21zZGFhICImI3gy
OUE4OyI+Ci08IUVOVElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgotPCFFTlRJVFkgYW5nbXNkYWMg
IiYjeDI5QUE7Ij4KLTwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Ci08IUVOVElUWSBhbmdt
c2RhZSAiJiN4MjlBQzsiPgotPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KLTwhRU5USVRZ
IGFuZ21zZGFnICImI3gyOUFFOyI+Ci08IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgotPCFF
TlRJVFkgYmVtcHR5diAiJiN4MjlCMDsiPgotPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPgot
PCFFTlRJVFkgY2VtcHR5diAiJiN4MjlCMjsiPgotPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7
Ij4KLTwhRU5USVRZIGxhZW1wdHl2ICImI3gyOUI0OyI+Ci08IUVOVElUWSBvaGJhciAiJiN4MjlC
NTsiPgotPCFFTlRJVFkgb21pZCAiJiN4MjlCNjsiPgotPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsi
PgotPCFFTlRJVFkgb3BlcnAgIiYjeDI5Qjk7Ij4KLTwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5QkI7
Ij4KLTwhRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiPgotPCFFTlRJVFkgb2xjaXIgIiYjeDI5QkU7
Ij4KLTwhRU5USVRZIG9mY2lyICImI3gyOUJGOyI+Ci08IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij4K
LTwhRU5USVRZIG9ndCAiJiN4MjlDMTsiPgotPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiPgot
PCFFTlRJVFkgY2lyRSAiJiN4MjlDMzsiPgotPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgotPCFF
TlRJVFkgYnNvbGIgIiYjeDI5QzU7Ij4KLTwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgotPCFF
TlRJVFkgdHJpc2IgIiYjeDI5Q0Q7Ij4KLTwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+Ci08
IUVOVElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlh
bmdsZUJhciAiJiN4MjlDRjsmI3gzMzg7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIgIiYj
eDI5RDA7Ij4KLTwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI+
Ci08IUVOVElUWSBpaW5maW4gIiYjeDI5REM7Ij4KLTwhRU5USVRZIGluZmludGllICImI3gyOURE
OyI+Ci08IUVOVElUWSBudmluZmluICImI3gyOURFOyI+Ci08IUVOVElUWSBlcGFyc2wgIiYjeDI5
RTM7Ij4KLTwhRU5USVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Ci08IUVOVElUWSBlcXZwYXJzbCAi
JiN4MjlFNTsiPgotPCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgotPCFFTlRJVFkgYmxhY2tsb3pl
bmdlICImI3gyOUVCOyI+Ci08IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgotPCFFTlRJ
VFkgZHNvbCAiJiN4MjlGNjsiPgotPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZ
IGJpZ29kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJ
VFkgYmlnb3BsdXMgIiYjeDJBMDE7Ij4KLTwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgotPCFF
TlRJVFkgYmlnb3RpbWVzICImI3gyQTAyOyI+Ci08IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ij4K
LTwhRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyI+Ci08IUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7
Ij4KLTwhRU5USVRZIGJpZ3NxY3VwICImI3gyQTA2OyI+Ci08IUVOVElUWSBxaW50ICImI3gyQTBD
OyI+Ci08IUVOVElUWSBpaWlpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGZwYXJ0aW50ICImI3gy
QTBEOyI+Ci08IUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiPgotPCFFTlRJVFkgYXdpbnQgIiYj
eDJBMTE7Ij4KLTwhRU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Ci08IUVOVElUWSBzY3BvbGlu
dCAiJiN4MkExMzsiPgotPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgotPCFFTlRJVFkgcG9p
bnRpbnQgIiYjeDJBMTU7Ij4KLTwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KLTwhRU5USVRZ
IGludGxhcmhrICImI3gyQTE3OyI+Ci08IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Ci08IUVO
VElUWSBwbHVzYWNpciAiJiN4MkEyMzsiPgotPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsiPgot
PCFFTlRJVFkgcGx1c2R1ICImI3gyQTI1OyI+Ci08IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI+
Ci08IUVOVElUWSBwbHVzdHdvICImI3gyQTI3OyI+Ci08IUVOVElUWSBtY29tbWEgIiYjeDJBMjk7
Ij4KLTwhRU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ij4KLTwhRU5USVRZIGxvcGx1cyAiJiN4MkEy
RDsiPgotPCFFTlRJVFkgcm9wbHVzICImI3gyQTJFOyI+Ci08IUVOVElUWSBDcm9zcyAiJiN4MkEy
RjsiPgotPCFFTlRJVFkgdGltZXNkICImI3gyQTMwOyI+Ci08IUVOVElUWSB0aW1lc2JhciAiJiN4
MkEzMTsiPgotPCFFTlRJVFkgc21hc2hwICImI3gyQTMzOyI+Ci08IUVOVElUWSBsb3RpbWVzICIm
I3gyQTM0OyI+Ci08IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Ci08IUVOVElUWSBvdGltZXNh
cyAiJiN4MkEzNjsiPgotPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Ci08IUVOVElUWSBvZGl2
ICImI3gyQTM4OyI+Ci08IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Ci08IUVOVElUWSB0cmlt
aW51cyAiJiN4MkEzQTsiPgotPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgotPCFFTlRJVFkg
aXByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZ
IGFtYWxnICImI3gyQTNGOyI+Ci08IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KLTwhRU5USVRZ
IG5jdXAgIiYjeDJBNDI7Ij4KLTwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KLTwhRU5USVRZIGNh
cGFuZCAiJiN4MkE0NDsiPgotPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KLTwhRU5USVRZIGN1
cGNhcCAiJiN4MkE0NjsiPgotPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Ci08IUVOVElUWSBj
dXBicmNhcCAiJiN4MkE0ODsiPgotPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KLTwhRU5U
SVRZIGN1cGN1cCAiJiN4MkE0QTsiPgotPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Ci08IUVO
VElUWSBjY3VwcyAiJiN4MkE0QzsiPgotPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KLTwhRU5U
SVRZIGNjdXBzc20gIiYjeDJBNTA7Ij4KLTwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgotPCFFTlRJ
VFkgT3IgIiYjeDJBNTQ7Ij4KLTwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgotPCFFTlRJVFkg
b3JvciAiJiN4MkE1NjsiPgotPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgotPCFFTlRJVFkg
YW5kc2xvcGUgIiYjeDJBNTg7Ij4KLTwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KLTwhRU5USVRZ
IG9ydiAiJiN4MkE1QjsiPgotPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgotPCFFTlRJVFkgb3Jk
ICImI3gyQTVEOyI+Ci08IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KLTwhRU5USVRZIHNkb3Rl
ICImI3gyQTY2OyI+Ci08IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KLTwhRU5USVRZIGNvbmdk
b3QgIiYjeDJBNkQ7Ij4KLTwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgotPCFF
TlRJVFkgZWFzdGVyICImI3gyQTZFOyI+Ci08IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4KLTwh
RU5USVRZIGFwRSAiJiN4MkE3MDsiPgotPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ij4K
LTwhRU5USVRZIGVwbHVzICImI3gyQTcxOyI+Ci08IUVOVElUWSBwbHVzZSAiJiN4MkE3MjsiPgot
PCFFTlRJVFkgRXNpbSAiJiN4MkE3MzsiPgotPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+Ci08
IUVOVElUWSBFcXVhbCAiJiN4MkE3NTsiPgotPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4KLTwh
RU5USVRZIGRkb3RzZXEgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ij4K
LTwhRU5USVRZIGx0Y2lyICImI3gyQTc5OyI+Ci08IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPgot
PCFFTlRJVFkgbHRxdWVzdCAiJiN4MkE3QjsiPgotPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3Qzsi
PgotPCFFTlRJVFkgbGVzICImI3gyQTdEOyI+Ci08IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4
MkE3RDsiPgotPCFFTlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIG5sZXMgIiYj
eDJBN0Q7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsmI3gz
Mzg7Ij4KLTwhRU5USVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGdl
cyAiJiN4MkE3RTsiPgotPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4KLTwh
RU5USVRZIGdlcXNsYW50ICImI3gyQTdFOyI+Ci08IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMz
ODsiPgotPCFFTlRJVFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+Ci08
IUVOVElUWSBuZ2Vxc2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBsZXNkb3QgIiYj
eDJBN0Y7Ij4KLTwhRU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgotPCFFTlRJVFkgbGVzZG90byAi
JiN4MkE4MTsiPgotPCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgotPCFFTlRJVFkgbGVzZG90
b3IgIiYjeDJBODM7Ij4KLTwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Ci08IUVOVElUWSBs
YXAgIiYjeDJBODU7Ij4KLTwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KLTwhRU5USVRZ
IGdhcCAiJiN4MkE4NjsiPgotPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Ci08IUVOVElU
WSBsbmUgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGdu
ZSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgbG5hcCAi
JiN4MkE4OTsiPgotPCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KLTwhRU5USVRZIGduYXAg
IiYjeDJBOEE7Ij4KLTwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Ci08IUVOVElUWSBsRWcg
IiYjeDJBOEI7Ij4KLTwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KLTwhRU5USVRZIGdF
bCAiJiN4MkE4QzsiPgotPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgotPCFFTlRJVFkg
bHNpbWUgIiYjeDJBOEQ7Ij4KLTwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Ci08IUVOVElUWSBs
c2ltZyAiJiN4MkE4RjsiPgotPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KLTwhRU5USVRZIGxn
RSAiJiN4MkE5MTsiPgotPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Ci08IUVOVElUWSBsZXNnZXMg
IiYjeDJBOTM7Ij4KLTwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgotPCFFTlRJVFkgZWxzICIm
I3gyQTk1OyI+Ci08IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgotPCFFTlRJVFkgZWdz
ICImI3gyQTk2OyI+Ci08IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Ci08IUVOVElUWSBl
bHNkb3QgIiYjeDJBOTc7Ij4KLTwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgotPCFFTlRJVFkg
ZWwgIiYjeDJBOTk7Ij4KLTwhRU5USVRZIGVnICImI3gyQTlBOyI+Ci08IUVOVElUWSBzaW1sICIm
I3gyQTlEOyI+Ci08IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Ci08IUVOVElUWSBzaW1sRSAiJiN4
MkE5RjsiPgotPCFFTlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KLTwhRU5USVRZIExlc3NMZXNzICIm
I3gyQUExOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRH
cmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdsaiAiJiN4MkFBNDsi
PgotPCFFTlRJVFkgZ2xhICImI3gyQUE1OyI+Ci08IUVOVElUWSBsdGNjICImI3gyQUE2OyI+Ci08
IUVOVElUWSBndGNjICImI3gyQUE3OyI+Ci08IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgotPCFF
TlRJVFkgZ2VzY2MgIiYjeDJBQTk7Ij4KLTwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgotPCFFTlRJ
VFkgbGF0ICImI3gyQUFCOyI+Ci08IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Ci08IUVOVElUWSBz
bXRlcyAiJiN4MkFBQzsmI3hGRTAwOyI+Ci08IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Ci08IUVO
VElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyI+Ci08IUVOVElUWSBidW1wRSAiJiN4MkFBRTsi
PgotPCFFTlRJVFkgcHJlICImI3gyQUFGOyI+Ci08IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij4K
LTwhRU5USVRZIFByZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIG5wcmUgIiYjeDJB
QUY7JiN4MzM4OyI+Ci08IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgotPCFFTlRJ
VFkgTm90UHJlY2VkZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNjZSAiJiN4
MkFCMDsiPgotPCFFTlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Ci08IUVOVElUWSBTdWNjZWVkc0Vx
dWFsICImI3gyQUIwOyI+Ci08IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJ
VFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwg
IiYjeDJBQjA7JiN4MzM4OyI+Ci08IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KLTwhRU5USVRZIHNj
RSAiJiN4MkFCNDsiPgotPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgcHJlY25l
cXEgIiYjeDJBQjU7Ij4KLTwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHN1Y2Nu
ZXFxICImI3gyQUI2OyI+Ci08IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Ci08IUVOVElUWSBwcmVj
YXBwcm94ICImI3gyQUI3OyI+Ci08IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Ci08IUVOVElUWSBz
dWNjYXBwcm94ICImI3gyQUI4OyI+Ci08IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgotPCFFTlRJ
VFkgcHJlY25hcHByb3ggIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+Ci08
IUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiPgotPCFFTlRJVFkgUHIgIiYjeDJBQkI7Ij4K
LTwhRU5USVRZIFNjICImI3gyQUJDOyI+Ci08IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4KLTwh
RU5USVRZIHN1cGRvdCAiJiN4MkFCRTsiPgotPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiPgot
PCFFTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiPgotPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFDMTsi
PgotPCFFTlRJVFkgc3VwbXVsdCAiJiN4MkFDMjsiPgotPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFD
MzsiPgotPCFFTlRJVFkgc3VwZWRvdCAiJiN4MkFDNDsiPgotPCFFTlRJVFkgc3ViRSAiJiN4MkFD
NTsiPgotPCFFTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Ci08IUVOVElUWSBuc3ViRSAiJiN4
MkFDNTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+Ci08
IUVOVElUWSBzdXBFICImI3gyQUM2OyI+Ci08IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ij4K
LTwhRU5USVRZIG5zdXBFICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1cHNldGVxcSAi
JiN4MkFDNjsmI3gzMzg7Ij4KLTwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgotPCFFTlRJVFkg
c3Vwc2ltICImI3gyQUM4OyI+Ci08IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgotPCFFTlRJVFkg
c3Vic2V0bmVxcSAiJiN4MkFDQjsiPgotPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7
Ij4KLTwhRU5USVRZIHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkg
c3VwbkUgIiYjeDJBQ0M7Ij4KLTwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KLTwhRU5U
SVRZIHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXFxICIm
I3gyQUNDOyYjeEZFMDA7Ij4KLTwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KLTwhRU5USVRZIGNz
dXAgIiYjeDJBRDA7Ij4KLTwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Ci08IUVOVElUWSBjc3Vw
ZSAiJiN4MkFEMjsiPgotPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Ci08IUVOVElUWSBzdXBz
dWIgIiYjeDJBRDQ7Ij4KLTwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgotPCFFTlRJVFkgc3Vw
c3VwICImI3gyQUQ2OyI+Ci08IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Ci08IUVOVElUWSBz
dXBkc3ViICImI3gyQUQ4OyI+Ci08IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgotPCFFTlRJVFkg
dG9wZm9yayAiJiN4MkFEQTsiPgotPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgotPCFFTlRJVFkg
RGFzaHYgIiYjeDJBRTQ7Ij4KLTwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4KLTwh
RU5USVRZIFZkYXNobCAiJiN4MkFFNjsiPgotPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgotPCFF
TlRJVFkgdkJhciAiJiN4MkFFODsiPgotPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KLTwhRU5U
SVRZIFZiYXIgIiYjeDJBRUI7Ij4KLTwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgotPCFFTlRJVFkg
Yk5vdCAiJiN4MkFFRDsiPgotPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KLTwhRU5USVRZIGNp
cm1pZCAiJiN4MkFFRjsiPgotPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Ci08IUVOVElUWSB0
b3BjaXIgIiYjeDJBRjE7Ij4KLTwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Ci08IUVOVElUWSBw
YXJzaW0gIiYjeDJBRjM7Ij4KLTwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Ci08IUVOVElUWSBu
cGFyc2wgIiYjeDJBRkQ7JiN4MjBFNTsiPgotPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4KLTwh
RU5USVRZIGZpbGlnICImI3hGQjAxOyI+Ci08IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgotPCFF
TlRJVFkgZmZpbGlnICImI3hGQjAzOyI+Ci08IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4KLTwh
RU5USVRZIEFzY3IgIiYjeDFENDlDOyI+Ci08IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgotPCFF
TlRJVFkgRHNjciAiJiN4MUQ0OUY7Ij4KLTwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Ci08IUVO
VElUWSBKc2NyICImI3gxRDRBNTsiPgotPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KLTwhRU5U
SVRZIE5zY3IgIiYjeDFENEE5OyI+Ci08IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgotPCFFTlRJ
VFkgUHNjciAiJiN4MUQ0QUI7Ij4KLTwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Ci08IUVOVElU
WSBTc2NyICImI3gxRDRBRTsiPgotPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KLTwhRU5USVRZ
IFVzY3IgIiYjeDFENEIwOyI+Ci08IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgotPCFFTlRJVFkg
V3NjciAiJiN4MUQ0QjI7Ij4KLTwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Ci08IUVOVElUWSBZ
c2NyICImI3gxRDRCNDsiPgotPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KLTwhRU5USVRZIGFz
Y3IgIiYjeDFENEI2OyI+Ci08IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgotPCFFTlRJVFkgY3Nj
ciAiJiN4MUQ0Qjg7Ij4KLTwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Ci08IUVOVElUWSBmc2Ny
ICImI3gxRDRCQjsiPgotPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KLTwhRU5USVRZIGlzY3Ig
IiYjeDFENEJFOyI+Ci08IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgotPCFFTlRJVFkga3NjciAi
JiN4MUQ0QzA7Ij4KLTwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Ci08IUVOVElUWSBtc2NyICIm
I3gxRDRDMjsiPgotPCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KLTwhRU5USVRZIHBzY3IgIiYj
eDFENEM1OyI+Ci08IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgotPCFFTlRJVFkgcnNjciAiJiN4
MUQ0Qzc7Ij4KLTwhRU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Ci08IUVOVElUWSB0c2NyICImI3gx
RDRDOTsiPgotPCFFTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KLTwhRU5USVRZIHZzY3IgIiYjeDFE
NENCOyI+Ci08IUVOVElUWSB3c2NyICImI3gxRDRDQzsiPgotPCFFTlRJVFkgeHNjciAiJiN4MUQ0
Q0Q7Ij4KLTwhRU5USVRZIHlzY3IgIiYjeDFENENFOyI+Ci08IUVOVElUWSB6c2NyICImI3gxRDRD
RjsiPgotPCFFTlRJVFkgQWZyICImI3gxRDUwNDsiPgotPCFFTlRJVFkgQmZyICImI3gxRDUwNTsi
PgotPCFFTlRJVFkgRGZyICImI3gxRDUwNzsiPgotPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPgot
PCFFTlRJVFkgRmZyICImI3gxRDUwOTsiPgotPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgotPCFF
TlRJVFkgSmZyICImI3gxRDUwRDsiPgotPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgotPCFFTlRJ
VFkgTGZyICImI3gxRDUwRjsiPgotPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgotPCFFTlRJVFkg
TmZyICImI3gxRDUxMTsiPgotPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgotPCFFTlRJVFkgUGZy
ICImI3gxRDUxMzsiPgotPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgotPCFFTlRJVFkgU2ZyICIm
I3gxRDUxNjsiPgotPCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgotPCFFTlRJVFkgVWZyICImI3gx
RDUxODsiPgotPCFFTlRJVFkgVmZyICImI3gxRDUxOTsiPgotPCFFTlRJVFkgV2ZyICImI3gxRDUx
QTsiPgotPCFFTlRJVFkgWGZyICImI3gxRDUxQjsiPgotPCFFTlRJVFkgWWZyICImI3gxRDUxQzsi
PgotPCFFTlRJVFkgYWZyICImI3gxRDUxRTsiPgotPCFFTlRJVFkgYmZyICImI3gxRDUxRjsiPgot
PCFFTlRJVFkgY2ZyICImI3gxRDUyMDsiPgotPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgotPCFF
TlRJVFkgZWZyICImI3gxRDUyMjsiPgotPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgotPCFFTlRJ
VFkgZ2ZyICImI3gxRDUyNDsiPgotPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgotPCFFTlRJVFkg
aWZyICImI3gxRDUyNjsiPgotPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgotPCFFTlRJVFkga2Zy
ICImI3gxRDUyODsiPgotPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgotPCFFTlRJVFkgbWZyICIm
I3gxRDUyQTsiPgotPCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgotPCFFTlRJVFkgb2ZyICImI3gx
RDUyQzsiPgotPCFFTlRJVFkgcGZyICImI3gxRDUyRDsiPgotPCFFTlRJVFkgcWZyICImI3gxRDUy
RTsiPgotPCFFTlRJVFkgcmZyICImI3gxRDUyRjsiPgotPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsi
PgotPCFFTlRJVFkgdGZyICImI3gxRDUzMTsiPgotPCFFTlRJVFkgdWZyICImI3gxRDUzMjsiPgot
PCFFTlRJVFkgdmZyICImI3gxRDUzMzsiPgotPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgotPCFF
TlRJVFkgeGZyICImI3gxRDUzNTsiPgotPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgotPCFFTlRJ
VFkgemZyICImI3gxRDUzNzsiPgotPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KLTwhRU5USVRZ
IEJvcGYgIiYjeDFENTM5OyI+Ci08IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgotPCFFTlRJVFkg
RW9wZiAiJiN4MUQ1M0M7Ij4KLTwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Ci08IUVOVElUWSBH
b3BmICImI3gxRDUzRTsiPgotPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KLTwhRU5USVRZIEpv
cGYgIiYjeDFENTQxOyI+Ci08IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgotPCFFTlRJVFkgTG9w
ZiAiJiN4MUQ1NDM7Ij4KLTwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Ci08IUVOVElUWSBPb3Bm
ICImI3gxRDU0NjsiPgotPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KLTwhRU5USVRZIFRvcGYg
IiYjeDFENTRCOyI+Ci08IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgotPCFFTlRJVFkgVm9wZiAi
JiN4MUQ1NEQ7Ij4KLTwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Ci08IUVOVElUWSBYb3BmICIm
I3gxRDU0RjsiPgotPCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KLTwhRU5USVRZIGFvcGYgIiYj
eDFENTUyOyI+Ci08IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgotPCFFTlRJVFkgY29wZiAiJiN4
MUQ1NTQ7Ij4KLTwhRU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Ci08IUVOVElUWSBlb3BmICImI3gx
RDU1NjsiPgotPCFFTlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KLTwhRU5USVRZIGdvcGYgIiYjeDFE
NTU4OyI+Ci08IUVOVElUWSBob3BmICImI3gxRDU1OTsiPgotPCFFTlRJVFkgaW9wZiAiJiN4MUQ1
NUE7Ij4KLTwhRU5USVRZIGpvcGYgIiYjeDFENTVCOyI+Ci08IUVOVElUWSBrb3BmICImI3gxRDU1
QzsiPgotPCFFTlRJVFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KLTwhRU5USVRZIG1vcGYgIiYjeDFENTVF
OyI+Ci08IUVOVElUWSBub3BmICImI3gxRDU1RjsiPgotPCFFTlRJVFkgb29wZiAiJiN4MUQ1NjA7
Ij4KLTwhRU5USVRZIHBvcGYgIiYjeDFENTYxOyI+Ci08IUVOVElUWSBxb3BmICImI3gxRDU2Mjsi
PgotPCFFTlRJVFkgcm9wZiAiJiN4MUQ1NjM7Ij4KLTwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI+
Ci08IUVOVElUWSB0b3BmICImI3gxRDU2NTsiPgotPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ij4K
LTwhRU5USVRZIHZvcGYgIiYjeDFENTY3OyI+Ci08IUVOVElUWSB3b3BmICImI3gxRDU2ODsiPgot
PCFFTlRJVFkgeG9wZiAiJiN4MUQ1Njk7Ij4KLTwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+Ci08
IUVOVElUWSB6b3BmICImI3gxRDU2QjsiPgorPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgorPCEt
LUVOVElUWSBOZXdMaW5lICImI3hBOyItLT4KKzwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgor
PCEtLUVOVElUWSBxdW90ICImI3gyMjsiLS0+Cis8IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4K
KzwhLS1FTlRJVFkgbnVtICImI3gyMzsiLS0+Cis8IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0t
PgorPCEtLUVOVElUWSBwZXJjbnQgIiYjeDI1OyItLT4KKzwhLS1FTlRJVFkgYW1wICImI3gyNjsj
eDI2OyItLT4KKzwhLS1FTlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KKzwhLS1FTlRJVFkgYXBv
cyAiJiN4Mjc7Ii0tPgorPCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Cis8IS0tRU5USVRZIHJw
YXIgIiYjeDI5OyItLT4KKzwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIG1p
ZGFzdCAiJiN4MkE7Ii0tPgorPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Cis8IS0tRU5USVRZ
IGNvbW1hICImI3gyQzsiLS0+Cis8IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgorPCEtLUVO
VElUWSBzb2wgIiYjeDJGOyItLT4KKzwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KKzwhLS1F
TlRJVFkgc2VtaSAiJiN4M0I7Ii0tPgorPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Cis8
IS0tRU5USVRZIExUICImI3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gz
QzsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Cis8IS0tRU5USVRZ
IGJuZSAiJiN4M0Q7JiN4MjBFNTsiLS0+Cis8IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Cis8IS0t
RU5USVRZIEdUICImI3gzRTsiLS0+Cis8IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0t
PgorPCEtLUVOVElUWSBxdWVzdCAiJiN4M0Y7Ii0tPgorPCEtLUVOVElUWSBjb21tYXQgIiYjeDQw
OyItLT4KKzwhLS1FTlRJVFkgbHNxYiAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2sgIiYj
eDVCOyItLT4KKzwhLS1FTlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgorPCEtLUVOVElUWSByc3FiICIm
I3g1RDsiLS0+Cis8IS0tRU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgorPCEtLUVOVElUWSBIYXQg
IiYjeDVFOyItLT4KKzwhLS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIFVu
ZGVyQmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5U
SVRZIERpYWNyaXRpY2FsR3JhdmUgIiYjeDYwOyItLT4KKzwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2
OyYjeDZBOyItLT4KKzwhLS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSBsYnJh
Y2UgIiYjeDdCOyItLT4KKzwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Cis8IS0tRU5USVRZ
IHZlcnQgIiYjeDdDOyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Cis8
IS0tRU5USVRZIHJjdWIgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+
Cis8IS0tRU5USVRZIG5ic3AgIiYjeEEwOyItLT4KKzwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFj
ZSAiJiN4QTA7Ii0tPgorPCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgorPCEtLUVOVElUWSBj
ZW50ICImI3hBMjsiLS0+Cis8IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Cis8IS0tRU5USVRZ
IGN1cnJlbiAiJiN4QTQ7Ii0tPgorPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KKzwhLS1FTlRJ
VFkgYnJ2YmFyICImI3hBNjsiLS0+Cis8IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KKzwhLS1F
TlRJVFkgRG90ICImI3hBODsiLS0+Cis8IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgorPCEtLUVO
VElUWSBEb3VibGVEb3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Cis8
IS0tRU5USVRZIGNvcHkgIiYjeEE5OyItLT4KKzwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgor
PCEtLUVOVElUWSBvcmRmICImI3hBQTsiLS0+Cis8IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+
Cis8IS0tRU5USVRZIG5vdCAiJiN4QUM7Ii0tPgorPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4K
KzwhLS1FTlRJVFkgcmVnICImI3hBRTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsi
LS0+Cis8IS0tRU5USVRZIFJFRyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBtYWNyICImI3hBRjsi
LS0+Cis8IS0tRU5USVRZIHN0cm5zICImI3hBRjsiLS0+Cis8IS0tRU5USVRZIGRlZyAiJiN4QjA7
Ii0tPgorPCEtLUVOVElUWSBwbHVzbW4gIiYjeEIxOyItLT4KKzwhLS1FTlRJVFkgcG0gIiYjeEIx
OyItLT4KKzwhLS1FTlRJVFkgUGx1c01pbnVzICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHN1cDIg
IiYjeEIyOyItLT4KKzwhLS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgorPCEtLUVOVElUWSBhY3V0
ZSAiJiN4QjQ7Ii0tPgorPCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Cis8
IS0tRU5USVRZIG1pY3JvICImI3hCNTsiLS0+Cis8IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4K
KzwhLS1FTlRJVFkgbWlkZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4
Qjc7Ii0tPgorPCEtLUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJVFkgY2Vk
aWwgIiYjeEI4OyItLT4KKzwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgorPCEtLUVOVElU
WSBzdXAxICImI3hCOTsiLS0+Cis8IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KKzwhLS1FTlRJ
VFkgcmFxdW8gIiYjeEJCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Cis8IS0t
RU5USVRZIGZyYWMxMiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Cis8
IS0tRU5USVRZIGZyYWMzNCAiJiN4QkU7Ii0tPgorPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyIt
LT4KKzwhLS1FTlRJVFkgQWdyYXZlICImI3hDMDsiLS0+Cis8IS0tRU5USVRZIEFhY3V0ZSAiJiN4
QzE7Ii0tPgorPCEtLUVOVElUWSBBY2lyYyAiJiN4QzI7Ii0tPgorPCEtLUVOVElUWSBBdGlsZGUg
IiYjeEMzOyItLT4KKzwhLS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgorPCEtLUVOVElUWSBBcmlu
ZyAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBB
RWxpZyAiJiN4QzY7Ii0tPgorPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KKzwhLS1FTlRJ
VFkgRWdyYXZlICImI3hDODsiLS0+Cis8IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgorPCEt
LUVOVElUWSBFY2lyYyAiJiN4Q0E7Ii0tPgorPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Cis8
IS0tRU5USVRZIElncmF2ZSAiJiN4Q0M7Ii0tPgorPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyIt
LT4KKzwhLS1FTlRJVFkgSWNpcmMgIiYjeENFOyItLT4KKzwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7
Ii0tPgorPCEtLUVOVElUWSBFVEggIiYjeEQwOyItLT4KKzwhLS1FTlRJVFkgTnRpbGRlICImI3hE
MTsiLS0+Cis8IS0tRU5USVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgorPCEtLUVOVElUWSBPYWN1dGUg
IiYjeEQzOyItLT4KKzwhLS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KKzwhLS1FTlRJVFkgT3Rp
bGRlICImI3hENTsiLS0+Cis8IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KKzwhLS1FTlRJVFkg
dGltZXMgIiYjeEQ3OyItLT4KKzwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Cis8IS0tRU5U
SVRZIFVncmF2ZSAiJiN4RDk7Ii0tPgorPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KKzwh
LS1FTlRJVFkgVWNpcmMgIiYjeERCOyItLT4KKzwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgor
PCEtLUVOVElUWSBZYWN1dGUgIiYjeEREOyItLT4KKzwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyIt
LT4KKzwhLS1FTlRJVFkgc3psaWcgIiYjeERGOyItLT4KKzwhLS1FTlRJVFkgYWdyYXZlICImI3hF
MDsiLS0+Cis8IS0tRU5USVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgorPCEtLUVOVElUWSBhY2lyYyAi
JiN4RTI7Ii0tPgorPCEtLUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KKzwhLS1FTlRJVFkgYXVt
bCAiJiN4RTQ7Ii0tPgorPCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgorPCEtLUVOVElUWSBh
ZWxpZyAiJiN4RTY7Ii0tPgorPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KKzwhLS1FTlRJ
VFkgZWdyYXZlICImI3hFODsiLS0+Cis8IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgorPCEt
LUVOVElUWSBlY2lyYyAiJiN4RUE7Ii0tPgorPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Cis8
IS0tRU5USVRZIGlncmF2ZSAiJiN4RUM7Ii0tPgorPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyIt
LT4KKzwhLS1FTlRJVFkgaWNpcmMgIiYjeEVFOyItLT4KKzwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7
Ii0tPgorPCEtLUVOVElUWSBldGggIiYjeEYwOyItLT4KKzwhLS1FTlRJVFkgbnRpbGRlICImI3hG
MTsiLS0+Cis8IS0tRU5USVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgorPCEtLUVOVElUWSBvYWN1dGUg
IiYjeEYzOyItLT4KKzwhLS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KKzwhLS1FTlRJVFkgb3Rp
bGRlICImI3hGNTsiLS0+Cis8IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KKzwhLS1FTlRJVFkg
ZGl2aWRlICImI3hGNzsiLS0+Cis8IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgorPCEtLUVOVElU
WSBvc2xhc2ggIiYjeEY4OyItLT4KKzwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Cis8IS0t
RU5USVRZIHVhY3V0ZSAiJiN4RkE7Ii0tPgorPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgor
PCEtLUVOVElUWSB1dW1sICImI3hGQzsiLS0+Cis8IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0t
PgorPCEtLUVOVElUWSB0aG9ybiAiJiN4RkU7Ii0tPgorPCEtLUVOVElUWSB5dW1sICImI3hGRjsi
LS0+Cis8IS0tRU5USVRZIEFtYWNyICImI3gxMDA7Ii0tPgorPCEtLUVOVElUWSBhbWFjciAiJiN4
MTAxOyItLT4KKzwhLS1FTlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgorPCEtLUVOVElUWSBhYnJl
dmUgIiYjeDEwMzsiLS0+Cis8IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgorPCEtLUVOVElU
WSBhb2dvbiAiJiN4MTA1OyItLT4KKzwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgorPCEt
LUVOVElUWSBjYWN1dGUgIiYjeDEwNzsiLS0+Cis8IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0t
PgorPCEtLUVOVElUWSBjY2lyYyAiJiN4MTA5OyItLT4KKzwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBB
OyItLT4KKzwhLS1FTlRJVFkgY2RvdCAiJiN4MTBCOyItLT4KKzwhLS1FTlRJVFkgQ2Nhcm9uICIm
I3gxMEM7Ii0tPgorPCEtLUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Cis8IS0tRU5USVRZIERj
YXJvbiAiJiN4MTBFOyItLT4KKzwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgorPCEtLUVO
VElUWSBEc3Ryb2sgIiYjeDExMDsiLS0+Cis8IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4K
KzwhLS1FTlRJVFkgRW1hY3IgIiYjeDExMjsiLS0+Cis8IS0tRU5USVRZIGVtYWNyICImI3gxMTM7
Ii0tPgorPCEtLUVOVElUWSBFZG90ICImI3gxMTY7Ii0tPgorPCEtLUVOVElUWSBlZG90ICImI3gx
MTc7Ii0tPgorPCEtLUVOVElUWSBFb2dvbiAiJiN4MTE4OyItLT4KKzwhLS1FTlRJVFkgZW9nb24g
IiYjeDExOTsiLS0+Cis8IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KKzwhLS1FTlRJVFkg
ZWNhcm9uICImI3gxMUI7Ii0tPgorPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KKzwhLS1F
TlRJVFkgZ2NpcmMgIiYjeDExRDsiLS0+Cis8IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4K
KzwhLS1FTlRJVFkgZ2JyZXZlICImI3gxMUY7Ii0tPgorPCEtLUVOVElUWSBHZG90ICImI3gxMjA7
Ii0tPgorPCEtLUVOVElUWSBnZG90ICImI3gxMjE7Ii0tPgorPCEtLUVOVElUWSBHY2VkaWwgIiYj
eDEyMjsiLS0+Cis8IS0tRU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgorPCEtLUVOVElUWSBoY2ly
YyAiJiN4MTI1OyItLT4KKzwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgorPCEtLUVOVElU
WSBoc3Ryb2sgIiYjeDEyNzsiLS0+Cis8IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KKzwh
LS1FTlRJVFkgaXRpbGRlICImI3gxMjk7Ii0tPgorPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyIt
LT4KKzwhLS1FTlRJVFkgaW1hY3IgIiYjeDEyQjsiLS0+Cis8IS0tRU5USVRZIElvZ29uICImI3gx
MkU7Ii0tPgorPCEtLUVOVElUWSBpb2dvbiAiJiN4MTJGOyItLT4KKzwhLS1FTlRJVFkgSWRvdCAi
JiN4MTMwOyItLT4KKzwhLS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Cis8IS0tRU5USVRZIGlu
b2RvdCAiJiN4MTMxOyItLT4KKzwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Cis8IS0tRU5U
SVRZIGlqbGlnICImI3gxMzM7Ii0tPgorPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KKzwh
LS1FTlRJVFkgamNpcmMgIiYjeDEzNTsiLS0+Cis8IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyIt
LT4KKzwhLS1FTlRJVFkga2NlZGlsICImI3gxMzc7Ii0tPgorPCEtLUVOVElUWSBrZ3JlZW4gIiYj
eDEzODsiLS0+Cis8IS0tRU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KKzwhLS1FTlRJVFkgbGFj
dXRlICImI3gxM0E7Ii0tPgorPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Cis8IS0tRU5U
SVRZIGxjZWRpbCAiJiN4MTNDOyItLT4KKzwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgor
PCEtLUVOVElUWSBsY2Fyb24gIiYjeDEzRTsiLS0+Cis8IS0tRU5USVRZIExtaWRvdCAiJiN4MTNG
OyItLT4KKzwhLS1FTlRJVFkgbG1pZG90ICImI3gxNDA7Ii0tPgorPCEtLUVOVElUWSBMc3Ryb2sg
IiYjeDE0MTsiLS0+Cis8IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KKzwhLS1FTlRJVFkg
TmFjdXRlICImI3gxNDM7Ii0tPgorPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Cis8IS0t
RU5USVRZIE5jZWRpbCAiJiN4MTQ1OyItLT4KKzwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0t
PgorPCEtLUVOVElUWSBOY2Fyb24gIiYjeDE0NzsiLS0+Cis8IS0tRU5USVRZIG5jYXJvbiAiJiN4
MTQ4OyItLT4KKzwhLS1FTlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Cis8IS0tRU5USVRZIEVORyAi
JiN4MTRBOyItLT4KKzwhLS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgorPCEtLUVOVElUWSBPbWFj
ciAiJiN4MTRDOyItLT4KKzwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Cis8IS0tRU5USVRZ
IE9kYmxhYyAiJiN4MTUwOyItLT4KKzwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgorPCEt
LUVOVElUWSBPRWxpZyAiJiN4MTUyOyItLT4KKzwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+
Cis8IS0tRU5USVRZIFJhY3V0ZSAiJiN4MTU0OyItLT4KKzwhLS1FTlRJVFkgcmFjdXRlICImI3gx
NTU7Ii0tPgorPCEtLUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Cis8IS0tRU5USVRZIHJjZWRp
bCAiJiN4MTU3OyItLT4KKzwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgorPCEtLUVOVElU
WSByY2Fyb24gIiYjeDE1OTsiLS0+Cis8IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KKzwh
LS1FTlRJVFkgc2FjdXRlICImI3gxNUI7Ii0tPgorPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyIt
LT4KKzwhLS1FTlRJVFkgc2NpcmMgIiYjeDE1RDsiLS0+Cis8IS0tRU5USVRZIFNjZWRpbCAiJiN4
MTVFOyItLT4KKzwhLS1FTlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgorPCEtLUVOVElUWSBTY2Fy
b24gIiYjeDE2MDsiLS0+Cis8IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KKzwhLS1FTlRJ
VFkgVGNlZGlsICImI3gxNjI7Ii0tPgorPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Cis8
IS0tRU5USVRZIFRjYXJvbiAiJiN4MTY0OyItLT4KKzwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7
Ii0tPgorPCEtLUVOVElUWSBUc3Ryb2sgIiYjeDE2NjsiLS0+Cis8IS0tRU5USVRZIHRzdHJvayAi
JiN4MTY3OyItLT4KKzwhLS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgorPCEtLUVOVElUWSB1
dGlsZGUgIiYjeDE2OTsiLS0+Cis8IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgorPCEtLUVO
VElUWSB1bWFjciAiJiN4MTZCOyItLT4KKzwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgor
PCEtLUVOVElUWSB1YnJldmUgIiYjeDE2RDsiLS0+Cis8IS0tRU5USVRZIFVyaW5nICImI3gxNkU7
Ii0tPgorPCEtLUVOVElUWSB1cmluZyAiJiN4MTZGOyItLT4KKzwhLS1FTlRJVFkgVWRibGFjICIm
I3gxNzA7Ii0tPgorPCEtLUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Cis8IS0tRU5USVRZIFVv
Z29uICImI3gxNzI7Ii0tPgorPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KKzwhLS1FTlRJ
VFkgV2NpcmMgIiYjeDE3NDsiLS0+Cis8IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgorPCEt
LUVOVElUWSBZY2lyYyAiJiN4MTc2OyItLT4KKzwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+
Cis8IS0tRU5USVRZIFl1bWwgIiYjeDE3ODsiLS0+Cis8IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5
OyItLT4KKzwhLS1FTlRJVFkgemFjdXRlICImI3gxN0E7Ii0tPgorPCEtLUVOVElUWSBaZG90ICIm
I3gxN0I7Ii0tPgorPCEtLUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgorPCEtLUVOVElUWSBaY2Fy
b24gIiYjeDE3RDsiLS0+Cis8IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KKzwhLS1FTlRJ
VFkgZm5vZiAiJiN4MTkyOyItLT4KKzwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Cis8IS0t
RU5USVRZIGdhY3V0ZSAiJiN4MUY1OyItLT4KKzwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+
Cis8IS0tRU5USVRZIGNpcmMgIiYjeDJDNjsiLS0+Cis8IS0tRU5USVRZIGNhcm9uICImI3gyQzc7
Ii0tPgorPCEtLUVOVElUWSBIYWNlayAiJiN4MkM3OyItLT4KKzwhLS1FTlRJVFkgYnJldmUgIiYj
eDJEODsiLS0+Cis8IS0tRU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgorPCEtLUVOVElUWSBkb3Qg
IiYjeDJEOTsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgorPCEt
LUVOVElUWSByaW5nICImI3gyREE7Ii0tPgorPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgor
PCEtLUVOVElUWSB0aWxkZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxk
ZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZ
IERpYWNyaXRpY2FsRG91YmxlQWN1dGUgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERvd25CcmV2
ZSAiJiN4MzExOyItLT4KKzwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Cis8IS0tRU5USVRZ
IEJldGEgIiYjeDM5MjsiLS0+Cis8IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgorPCEtLUVO
VElUWSBEZWx0YSAiJiN4Mzk0OyItLT4KKzwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4K
KzwhLS1FTlRJVFkgWmV0YSAiJiN4Mzk2OyItLT4KKzwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0t
PgorPCEtLUVOVElUWSBUaGV0YSAiJiN4Mzk4OyItLT4KKzwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5
OyItLT4KKzwhLS1FTlRJVFkgS2FwcGEgIiYjeDM5QTsiLS0+Cis8IS0tRU5USVRZIExhbWJkYSAi
JiN4MzlCOyItLT4KKzwhLS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Cis8IS0tRU5USVRZIE51ICIm
I3gzOUQ7Ii0tPgorPCEtLUVOVElUWSBYaSAiJiN4MzlFOyItLT4KKzwhLS1FTlRJVFkgT21pY3Jv
biAiJiN4MzlGOyItLT4KKzwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Cis8IS0tRU5USVRZIFJo
byAiJiN4M0ExOyItLT4KKzwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Cis8IS0tRU5USVRZ
IFRhdSAiJiN4M0E0OyItLT4KKzwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KKzwhLS1F
TlRJVFkgUGhpICImI3gzQTY7Ii0tPgorPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Cis8IS0t
RU5USVRZIFBzaSAiJiN4M0E4OyItLT4KKzwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Cis8
IS0tRU5USVRZIG9obSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+
Cis8IS0tRU5USVRZIGJldGEgIiYjeDNCMjsiLS0+Cis8IS0tRU5USVRZIGdhbW1hICImI3gzQjM7
Ii0tPgorPCEtLUVOVElUWSBkZWx0YSAiJiN4M0I0OyItLT4KKzwhLS1FTlRJVFkgZXBzaSAiJiN4
M0I1OyItLT4KKzwhLS1FTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KKzwhLS1FTlRJVFkgemV0
YSAiJiN4M0I2OyItLT4KKzwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgorPCEtLUVOVElUWSB0
aGV0YSAiJiN4M0I4OyItLT4KKzwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KKzwhLS1FTlRJ
VFkga2FwcGEgIiYjeDNCQTsiLS0+Cis8IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KKzwh
LS1FTlRJVFkgbXUgIiYjeDNCQzsiLS0+Cis8IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgorPCEt
LUVOVElUWSB4aSAiJiN4M0JFOyItLT4KKzwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4K
KzwhLS1FTlRJVFkgcGkgIiYjeDNDMDsiLS0+Cis8IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4K
KzwhLS1FTlRJVFkgc2lnbWF2ICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4
M0MyOyItLT4KKzwhLS1FTlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdt
YSAiJiN4M0MzOyItLT4KKzwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgorPCEtLUVOVElUWSB1
cHNpICImI3gzQzU7Ii0tPgorPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgorPCEtLUVO
VElUWSBwaGkgIiYjeDNDNjsiLS0+Cis8IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KKzwhLS1F
TlRJVFkgcHNpICImI3gzQzg7Ii0tPgorPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KKzwh
LS1FTlRJVFkgdGhldGF2ICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0Qx
OyItLT4KKzwhLS1FTlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZIFVwc2kg
IiYjeDNEMjsiLS0+Cis8IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgorPCEtLUVOVElUWSBz
dHJhaWdodHBoaSAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KKzwh
LS1FTlRJVFkgdmFycGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+
Cis8IS0tRU5USVRZIHZhcnBpICImI3gzRDY7Ii0tPgorPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNE
QzsiLS0+Cis8IS0tRU5USVRZIGdhbW1hZCAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkgZGlnYW1t
YSAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgorPCEtLUVOVElU
WSB2YXJrYXBwYSAiJiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KKzwh
LS1FTlRJVFkgdmFycmhvICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyIt
LT4KKzwhLS1FTlRJVFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSB2
YXJlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KKzwh
LS1FTlRJVFkgYmFja2Vwc2lsb24gIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZIElPY3kgIiYjeDQw
MTsiLS0+Cis8IS0tRU5USVRZIERKY3kgIiYjeDQwMjsiLS0+Cis8IS0tRU5USVRZIEdKY3kgIiYj
eDQwMzsiLS0+Cis8IS0tRU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgorPCEtLUVOVElUWSBEU2N5
ICImI3g0MDU7Ii0tPgorPCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KKzwhLS1FTlRJVFkg
WUljeSAiJiN4NDA3OyItLT4KKzwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgorPCEtLUVO
VElUWSBMSmN5ICImI3g0MDk7Ii0tPgorPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgorPCEt
LUVOVElUWSBUU0hjeSAiJiN4NDBCOyItLT4KKzwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4K
KzwhLS1FTlRJVFkgVWJyY3kgIiYjeDQwRTsiLS0+Cis8IS0tRU5USVRZIERaY3kgIiYjeDQwRjsi
LS0+Cis8IS0tRU5USVRZIEFjeSAiJiN4NDEwOyItLT4KKzwhLS1FTlRJVFkgQmN5ICImI3g0MTE7
Ii0tPgorPCEtLUVOVElUWSBWY3kgIiYjeDQxMjsiLS0+Cis8IS0tRU5USVRZIEdjeSAiJiN4NDEz
OyItLT4KKzwhLS1FTlRJVFkgRGN5ICImI3g0MTQ7Ii0tPgorPCEtLUVOVElUWSBJRWN5ICImI3g0
MTU7Ii0tPgorPCEtLUVOVElUWSBaSGN5ICImI3g0MTY7Ii0tPgorPCEtLUVOVElUWSBaY3kgIiYj
eDQxNzsiLS0+Cis8IS0tRU5USVRZIEljeSAiJiN4NDE4OyItLT4KKzwhLS1FTlRJVFkgSmN5ICIm
I3g0MTk7Ii0tPgorPCEtLUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Cis8IS0tRU5USVRZIExjeSAi
JiN4NDFCOyItLT4KKzwhLS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgorPCEtLUVOVElUWSBOY3kg
IiYjeDQxRDsiLS0+Cis8IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KKzwhLS1FTlRJVFkgUGN5
ICImI3g0MUY7Ii0tPgorPCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Cis8IS0tRU5USVRZIFNj
eSAiJiN4NDIxOyItLT4KKzwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgorPCEtLUVOVElUWSBV
Y3kgIiYjeDQyMzsiLS0+Cis8IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KKzwhLS1FTlRJVFkg
S0hjeSAiJiN4NDI1OyItLT4KKzwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KKzwhLS1FTlRJ
VFkgQ0hjeSAiJiN4NDI3OyItLT4KKzwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KKzwhLS1F
TlRJVFkgU0hDSGN5ICImI3g0Mjk7Ii0tPgorPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+
Cis8IS0tRU5USVRZIFljeSAiJiN4NDJCOyItLT4KKzwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7
Ii0tPgorPCEtLUVOVElUWSBFY3kgIiYjeDQyRDsiLS0+Cis8IS0tRU5USVRZIFlVY3kgIiYjeDQy
RTsiLS0+Cis8IS0tRU5USVRZIFlBY3kgIiYjeDQyRjsiLS0+Cis8IS0tRU5USVRZIGFjeSAiJiN4
NDMwOyItLT4KKzwhLS1FTlRJVFkgYmN5ICImI3g0MzE7Ii0tPgorPCEtLUVOVElUWSB2Y3kgIiYj
eDQzMjsiLS0+Cis8IS0tRU5USVRZIGdjeSAiJiN4NDMzOyItLT4KKzwhLS1FTlRJVFkgZGN5ICIm
I3g0MzQ7Ii0tPgorPCEtLUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgorPCEtLUVOVElUWSB6aGN5
ICImI3g0MzY7Ii0tPgorPCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Cis8IS0tRU5USVRZIGlj
eSAiJiN4NDM4OyItLT4KKzwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgorPCEtLUVOVElUWSBr
Y3kgIiYjeDQzQTsiLS0+Cis8IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KKzwhLS1FTlRJVFkg
bWN5ICImI3g0M0M7Ii0tPgorPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Cis8IS0tRU5USVRZ
IG9jeSAiJiN4NDNFOyItLT4KKzwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgorPCEtLUVOVElU
WSByY3kgIiYjeDQ0MDsiLS0+Cis8IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KKzwhLS1FTlRJ
VFkgdGN5ICImI3g0NDI7Ii0tPgorPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Cis8IS0tRU5U
SVRZIGZjeSAiJiN4NDQ0OyItLT4KKzwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KKzwhLS1F
TlRJVFkgdHNjeSAiJiN4NDQ2OyItLT4KKzwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KKzwh
LS1FTlRJVFkgc2hjeSAiJiN4NDQ4OyItLT4KKzwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0t
PgorPCEtLUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiLS0+Cis8IS0tRU5USVRZIHljeSAiJiN4NDRC
OyItLT4KKzwhLS1FTlRJVFkgc29mdGN5ICImI3g0NEM7Ii0tPgorPCEtLUVOVElUWSBlY3kgIiYj
eDQ0RDsiLS0+Cis8IS0tRU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Cis8IS0tRU5USVRZIHlhY3kg
IiYjeDQ0RjsiLS0+Cis8IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Cis8IS0tRU5USVRZIGRq
Y3kgIiYjeDQ1MjsiLS0+Cis8IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Cis8IS0tRU5USVRZ
IGp1a2N5ICImI3g0NTQ7Ii0tPgorPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgorPCEtLUVO
VElUWSBpdWtjeSAiJiN4NDU2OyItLT4KKzwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KKzwh
LS1FTlRJVFkganNlcmN5ICImI3g0NTg7Ii0tPgorPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0t
PgorPCEtLUVOVElUWSBuamN5ICImI3g0NUE7Ii0tPgorPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVC
OyItLT4KKzwhLS1FTlRJVFkga2pjeSAiJiN4NDVDOyItLT4KKzwhLS1FTlRJVFkgdWJyY3kgIiYj
eDQ1RTsiLS0+Cis8IS0tRU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Cis8IS0tRU5USVRZIGVuc3Ag
IiYjeDIwMDI7Ii0tPgorPCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KKzwhLS1FTlRJVFkg
ZW1zcDEzICImI3gyMDA0OyItLT4KKzwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KKzwh
LS1FTlRJVFkgbnVtc3AgIiYjeDIwMDc7Ii0tPgorPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7
Ii0tPgorPCEtLUVOVElUWSB0aGluc3AgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBUaGluU3Bh
Y2UgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgorPCEtLUVO
VElUWSBWZXJ5VGhpblNwYWNlICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgWmVyb1dpZHRoU3Bh
Y2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIw
MEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0t
RU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdh
dGl2ZVRoaWNrU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyIt
LT4KKzwhLS1FTlRJVFkgendqICImI3gyMDBEOyItLT4KKzwhLS1FTlRJVFkgbHJtICImI3gyMDBF
OyItLT4KKzwhLS1FTlRJVFkgcmxtICImI3gyMDBGOyItLT4KKzwhLS1FTlRJVFkgaHlwaGVuICIm
I3gyMDEwOyItLT4KKzwhLS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Cis8IS0tRU5USVRZIG5k
YXNoICImI3gyMDEzOyItLT4KKzwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgorPCEtLUVO
VElUWSBob3JiYXIgIiYjeDIwMTU7Ii0tPgorPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0t
PgorPCEtLUVOVElUWSBWZXJ0ICImI3gyMDE2OyItLT4KKzwhLS1FTlRJVFkgbHNxdW8gIiYjeDIw
MTg7Ii0tPgorPCEtLUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Cis8IS0tRU5U
SVRZIHJzcXVvICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4K
KzwhLS1FTlRJVFkgQ2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgbHNx
dW9yICImI3gyMDFBOyItLT4KKzwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgorPCEtLUVO
VElUWSBsZHF1byAiJiN4MjAxQzsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3Rl
ICImI3gyMDFDOyItLT4KKzwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElU
WSByZHF1b3IgIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUg
IiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgorPCEtLUVOVElU
WSBiZHF1byAiJiN4MjAxRTsiLS0+Cis8IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Cis8
IS0tRU5USVRZIERhZ2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIw
MjE7Ii0tPgorPCEtLUVOVElUWSBidWxsICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgYnVsbGV0
ICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Cis8IS0tRU5USVRZ
IGhlbGxpcCAiJiN4MjAyNjsiLS0+Cis8IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgorPCEt
LUVOVElUWSBwZXJtaWwgIiYjeDIwMzA7Ii0tPgorPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMx
OyItLT4KKzwhLS1FTlRJVFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgorPCEtLUVOVElUWSBQcmltZSAi
JiN4MjAzMzsiLS0+Cis8IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Cis8IS0tRU5USVRZ
IGJwcmltZSAiJiN4MjAzNTsiLS0+Cis8IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+
Cis8IS0tRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiLS0+Cis8IS0tRU5USVRZIHJzYXF1byAiJiN4
MjAzQTsiLS0+Cis8IS0tRU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgT3Zl
ckJhciAiJiN4MjAzRTsiLS0+Cis8IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KKzwhLS1F
TlRJVFkgaHlidWxsICImI3gyMDQzOyItLT4KKzwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0t
PgorPCEtLUVOVElUWSBic2VtaSAiJiN4MjA0RjsiLS0+Cis8IS0tRU5USVRZIHFwcmltZSAiJiN4
MjA1NzsiLS0+Cis8IS0tRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KKzwhLS1FTlRJ
VFkgVGhpY2tTcGFjZSAiJiN4MjA1RjsmI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgTm9CcmVhayAi
JiN4MjA2MDsiLS0+Cis8IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgorPCEt
LUVOVElUWSBhZiAiJiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gy
MDYyOyItLT4KKzwhLS1FTlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2li
bGVDb21tYSAiJiN4MjA2MzsiLS0+Cis8IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KKzwhLS1F
TlRJVFkgZXVybyAiJiN4MjBBQzsiLS0+Cis8IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgor
PCEtLUVOVElUWSBUcmlwbGVEb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBEb3REb3QgIiYj
eDIwREM7Ii0tPgorPCEtLUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgY29t
cGxleGVzICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KKzwh
LS1FTlRJVFkgZ3NjciAiJiN4MjEwQTsiLS0+Cis8IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsi
LS0+Cis8IS0tRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhz
Y3IgIiYjeDIxMEI7Ii0tPgorPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElU
WSBQb2luY2FyZXBsYW5lICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYj
eDIxMEQ7Ii0tPgorPCEtLUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KKzwhLS1FTlRJVFkgcGxh
bmNraCAiJiN4MjEwRTsiLS0+Cis8IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Cis8IS0t
RU5USVRZIGhiYXIgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0t
PgorPCEtLUVOVElUWSBoc2xhc2ggIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBJc2NyICImI3gy
MTEwOyItLT4KKzwhLS1FTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBp
bWFnZSAiJiN4MjExMTsiLS0+Cis8IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KKzwhLS1FTlRJ
VFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgor
PCEtLUVOVElUWSBMc2NyICImI3gyMTEyOyItLT4KKzwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEy
OyItLT4KKzwhLS1FTlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGVs
bCAiJiN4MjExMzsiLS0+Cis8IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElU
WSBuYXR1cmFscyAiJiN4MjExNTsiLS0+Cis8IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+
Cis8IS0tRU5USVRZIGNvcHlzciAiJiN4MjExNzsiLS0+Cis8IS0tRU5USVRZIHdlaWVycCAiJiN4
MjExODsiLS0+Cis8IS0tRU5USVRZIHdwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgUG9wZiAi
JiN4MjExOTsiLS0+Cis8IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Cis8IS0tRU5USVRZ
IHJhdGlvbmFscyAiJiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgor
PCEtLUVOVElUWSBSc2NyICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjEx
QjsiLS0+Cis8IS0tRU5USVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSBSZSAiJiN4
MjExQzsiLS0+Cis8IS0tRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkg
UmZyICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgorPCEtLUVO
VElUWSBSb3BmICImI3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgorPCEt
LUVOVElUWSB0cmFkZSAiJiN4MjEyMjsiLS0+Cis8IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyIt
LT4KKzwhLS1FTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBab3BmICIm
I3gyMTI0OyItLT4KKzwhLS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KKzwhLS1FTlRJVFkgWmZy
ICImI3gyMTI4OyItLT4KKzwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KKzwhLS1FTlRJ
VFkgaWlvdGEgIiYjeDIxMjk7Ii0tPgorPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgor
PCEtLUVOVElUWSBCZXJub3VsbGlzICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQnNjciAiJiN4
MjEyQzsiLS0+Cis8IS0tRU5USVRZIENmciAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIENheWxl
eXMgIiYjeDIxMkQ7Ii0tPgorPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KKzwhLS1FTlRJ
VFkgRXNjciAiJiN4MjEzMDsiLS0+Cis8IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyIt
LT4KKzwhLS1FTlRJVFkgRnNjciAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIEZvdXJpZXJ0cmYg
IiYjeDIxMzE7Ii0tPgorPCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElU
WSBNZWxsaW50cmYgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4K
KzwhLS1FTlRJVFkgb3JkZXIgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvcmRlcm9mICImI3gy
MTM0OyItLT4KKzwhLS1FTlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5USVRZIGFsZWZz
eW0gIiYjeDIxMzU7Ii0tPgorPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Cis8IS0tRU5U
SVRZIGJldGggIiYjeDIxMzY7Ii0tPgorPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Cis8
IS0tRU5USVRZIGRhbGV0aCAiJiN4MjEzODsiLS0+Cis8IS0tRU5USVRZIENhcGl0YWxEaWZmZXJl
bnRpYWxEICImI3gyMTQ1OyItLT4KKzwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgorPCEtLUVO
VElUWSBEaWZmZXJlbnRpYWxEICImI3gyMTQ2OyItLT4KKzwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7
Ii0tPgorPCEtLUVOVElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBl
eHBvbmVudGlhbGUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Cis8
IS0tRU5USVRZIEltYWdpbmFyeUkgIiYjeDIxNDg7Ii0tPgorPCEtLUVOVElUWSBpaSAiJiN4MjE0
ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Cis8IS0tRU5USVRZIGZyYWMy
MyAiJiN4MjE1NDsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Cis8IS0tRU5U
SVRZIGZyYWMyNSAiJiN4MjE1NjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+
Cis8IS0tRU5USVRZIGZyYWM0NSAiJiN4MjE1ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNiAiJiN4
MjE1OTsiLS0+Cis8IS0tRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Cis8IS0tRU5USVRZIGZy
YWMxOCAiJiN4MjE1QjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Cis8IS0t
RU5USVRZIGZyYWM1OCAiJiN4MjE1RDsiLS0+Cis8IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsi
LS0+Cis8IS0tRU5USVRZIGxhcnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJyb3cg
IiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVO
VElUWSBzbGFyciAiJiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gy
MTkwOyItLT4KKzwhLS1FTlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHVwYXJy
b3cgIiYjeDIxOTE7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1F
TlRJVFkgU2hvcnRVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgcmFyciAiJiN4MjE5
MjsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBS
aWdodEFycm93ICImI3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgor
PCEtLUVOVElUWSBTaG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBkYXJy
ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KKzwhLS1F
TlRJVFkgRG93bkFycm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cg
IiYjeDIxOTM7Ii0tPgorPCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkg
bGVmdHJpZ2h0YXJyb3cgIiYjeDIxOTQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAi
JiN4MjE5NDsiLS0+Cis8IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSB1
cGRvd25hcnJvdyAiJiN4MjE5NTsiLS0+Cis8IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1
OyItLT4KKzwhLS1FTlRJVFkgbndhcnIgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBVcHBlckxl
ZnRBcnJvdyAiJiN4MjE5NjsiLS0+Cis8IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgor
PCEtLUVOVElUWSBuZWFyciAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJv
dyAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgorPCEtLUVO
VElUWSBzZWFyciAiJiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0t
PgorPCEtLUVOVElUWSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBz
d2FyciAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEt
LUVOVElUWSBMb3dlckxlZnRBcnJvdyAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIG5sYXJyICIm
I3gyMTlBOyItLT4KKzwhLS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Cis8IS0tRU5U
SVRZIG5yYXJyICImI3gyMTlCOyItLT4KKzwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7
Ii0tPgorPCEtLUVOVElUWSByYXJydyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0c3F1
aWdhcnJvdyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBMYXJyICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZGxl
ZnRhcnJvdyAiJiN4MjE5RTsiLS0+Cis8IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgorPCEt
LUVOVElUWSBSYXJyICImI3gyMUEwOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cg
IiYjeDIxQTA7Ii0tPgorPCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KKzwhLS1FTlRJVFkg
bGFycnRsICImI3gyMUEyOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsi
LS0+Cis8IS0tRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJy
b3d0YWlsICImI3gyMUEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyIt
LT4KKzwhLS1FTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Cis8IS0tRU5USVRZIFVwVGVl
QXJyb3cgIiYjeDIxQTU7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Cis8
IS0tRU5USVRZIG1hcCAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYj
eDIxQTY7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBE
b3duVGVlQXJyb3cgIiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3
OyItLT4KKzwhLS1FTlRJVFkgbGFycmhrICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgaG9va2xl
ZnRhcnJvdyAiJiN4MjFBOTsiLS0+Cis8IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Cis8
IS0tRU5USVRZIGhvb2tyaWdodGFycm93ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgbGFycmxw
ICImI3gyMUFCOyItLT4KKzwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Cis8
IS0tRU5USVRZIHJhcnJscCAiJiN4MjFBQzsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0
ICImI3gyMUFDOyItLT4KKzwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgorPCEtLUVOVElU
WSBsZWZ0cmlnaHRzcXVpZ2Fycm93ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbmhhcnIgIiYj
eDIxQUU7Ii0tPgorPCEtLUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgorPCEt
LUVOVElUWSBsc2ggIiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgor
PCEtLUVOVElUWSByc2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0t
PgorPCEtLUVOVElUWSBsZHNoICImI3gyMUIyOyItLT4KKzwhLS1FTlRJVFkgcmRzaCAiJiN4MjFC
MzsiLS0+Cis8IS0tRU5USVRZIGNyYXJyICImI3gyMUI1OyItLT4KKzwhLS1FTlRJVFkgY3VsYXJy
ICImI3gyMUI2OyItLT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgor
PCEtLUVOVElUWSBjdXJhcnIgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93cmln
aHQgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Cis8IS0tRU5U
SVRZIGNpcmNsZWFycm93bGVmdCAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIG9yYXJyICImI3gy
MUJCOyItLT4KKzwhLS1FTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Cis8IS0t
RU5USVRZIGxoYXJ1ICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFC
QzsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElU
WSBsaGFyZCAiJiN4MjFCRDsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFC
RDsiLS0+Cis8IS0tRU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KKzwhLS1FTlRJ
VFkgdWhhcnIgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFC
RTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElU
WSB1aGFybCAiJiN4MjFCRjsiLS0+Cis8IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7
Ii0tPgorPCEtLUVOVElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSBy
aGFydSAiJiN4MjFDMDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4K
KzwhLS1FTlRJVFkgcmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaGFy
ZCAiJiN4MjFDMTsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0t
PgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElUWSBk
aGFyciAiJiN4MjFDMjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsi
LS0+Cis8IS0tRU5USVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgorPCEtLUVOVElU
WSBkaGFybCAiJiN4MjFDMzsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMz
OyItLT4KKzwhLS1FTlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KKzwhLS1FTlRJ
VFkgcmxhcnIgIiYjeDIxQzQ7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIx
QzQ7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KKzwh
LS1FTlRJVFkgdWRhcnIgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93
ICImI3gyMUM1OyItLT4KKzwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElU
WSBsZWZ0cmlnaHRhcnJvd3MgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdo
dEFycm93ICImI3gyMUM2OyItLT4KKzwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgorPCEt
LUVOVElUWSBsZWZ0bGVmdGFycm93cyAiJiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIHV1YXJyICIm
I3gyMUM4OyItLT4KKzwhLS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Cis8IS0tRU5U
SVRZIHJyYXJyICImI3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4
MjFDOTsiLS0+Cis8IS0tRU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgZG93
bmRvd25hcnJvd3MgIiYjeDIxQ0E7Ii0tPgorPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+
Cis8IS0tRU5USVRZIFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZ
IGxlZnRyaWdodGhhcnBvb25zICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgcmxoYXIgIiYjeDIx
Q0M7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Cis8IS0t
RU5USVRZIEVxdWlsaWJyaXVtICImI3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgbmxBcnIgIiYjeDIx
Q0Q7Ii0tPgorPCEtLUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KKzwhLS1FTlRJVFkg
bmhBcnIgIiYjeDIxQ0U7Ii0tPgorPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7
Ii0tPgorPCEtLUVOVElUWSBuckFyciAiJiN4MjFDRjsiLS0+Cis8IS0tRU5USVRZIG5SaWdodGFy
cm93ICImI3gyMUNGOyItLT4KKzwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Cis8IS0tRU5U
SVRZIExlZnRhcnJvdyAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAi
JiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBV
cGFycm93ICImI3gyMUQxOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsi
LS0+Cis8IS0tRU5USVRZIHJBcnIgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBSaWdodGFycm93
ICImI3gyMUQyOyItLT4KKzwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Cis8IS0tRU5U
SVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBkQXJyICImI3gy
MUQzOyItLT4KKzwhLS1FTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkg
RG91YmxlRG93bkFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsi
LS0+Cis8IS0tRU5USVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkg
RG91YmxlTGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ii0tPgorPCEtLUVOVElUWSBpZmYgIiYjeDIx
RDQ7Ii0tPgorPCEtLUVOVElUWSB2QXJyICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgVXBkb3du
YXJyb3cgIiYjeDIxRDU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFE
NTsiLS0+Cis8IS0tRU5USVRZIG53QXJyICImI3gyMUQ2OyItLT4KKzwhLS1FTlRJVFkgbmVBcnIg
IiYjeDIxRDc7Ii0tPgorPCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Cis8IS0tRU5USVRZ
IHN3QXJyICImI3gyMUQ5OyItLT4KKzwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgorPCEt
LUVOVElUWSBMbGVmdGFycm93ICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkgckFhcnIgIiYjeDIx
REI7Ii0tPgorPCEtLUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZ
IHppZ3JhcnIgIiYjeDIxREQ7Ii0tPgorPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Cis8
IS0tRU5USVRZIExlZnRBcnJvd0JhciAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIHJhcnJiICIm
I3gyMUU1OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Cis8IS0t
RU5USVRZIGR1YXJyICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAi
JiN4MjFGNTsiLS0+Cis8IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KKzwhLS1FTlRJVFkg
cm9hcnIgIiYjeDIxRkU7Ii0tPgorPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Cis8IS0t
RU5USVRZIGZvcmFsbCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsi
LS0+Cis8IS0tRU5USVRZIGNvbXAgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBjb21wbGVtZW50
ICImI3gyMjAxOyItLT4KKzwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZ
IFBhcnRpYWxEICImI3gyMjAyOyItLT4KKzwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4
OyItLT4KKzwhLS1FTlRJVFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBFeGlzdHMg
IiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElU
WSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyIt
LT4KKzwhLS1FTlRJVFkgZW1wdHkgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBlbXB0eXNldCAi
JiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZ
IHZhcm5vdGhpbmcgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+
Cis8IS0tRU5USVRZIERlbCAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7
Ii0tPgorPCEtLUVOVElUWSBpc2ludiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIEVsZW1lbnQg
IiYjeDIyMDg7Ii0tPgorPCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIG5v
dGluICImI3gyMjA5OyItLT4KKzwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Cis8
IS0tRU5USVRZIG5vdGludmEgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7
Ii0tPgorPCEtLUVOVElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZ
IG5pICImI3gyMjBCOyItLT4KKzwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgorPCEt
LUVOVElUWSBub3RuaSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7
Ii0tPgorPCEtLUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Cis8IS0tRU5U
SVRZIHByb2QgIiYjeDIyMEY7Ii0tPgorPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4K
KzwhLS1FTlRJVFkgY29wcm9kICImI3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgQ29wcm9kdWN0ICIm
I3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgU3Vt
ICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgorPCEtLUVOVElU
WSBtbnBsdXMgIiYjeDIyMTM7Ii0tPgorPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Cis8IS0t
RU5USVRZIE1pbnVzUGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIx
NDsiLS0+Cis8IS0tRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgorPCEtLUVOVElUWSBzZXRt
biAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KKzwhLS1F
TlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2
OyItLT4KKzwhLS1FTlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZ
IGxvd2FzdCAiJiN4MjIxNzsiLS0+Cis8IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Cis8
IS0tRU5USVRZIFNtYWxsQ2lyY2xlICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgcmFkaWMgIiYj
eDIyMUE7Ii0tPgorPCEtLUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KKzwhLS1FTlRJVFkgcHJv
cCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5U
SVRZIFByb3BvcnRpb25hbCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHZwcm9wICImI3gyMjFE
OyItLT4KKzwhLS1FTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgaW5m
aW4gIiYjeDIyMUU7Ii0tPgorPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Cis8IS0tRU5U
SVRZIGFuZyAiJiN4MjIyMDsiLS0+Cis8IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KKzwh
LS1FTlRJVFkgbmFuZyAiJiN4MjIyMDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkICIm
I3gyMjIxOyItLT4KKzwhLS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Cis8IS0t
RU5USVRZIGFuZ3NwaCAiJiN4MjIyMjsiLS0+Cis8IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+
Cis8IS0tRU5USVRZIFZlcnRpY2FsQmFyICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc21pZCAi
JiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJ
VFkgbm1pZCAiJiN4MjIyNDsiLS0+Cis8IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0
OyItLT4KKzwhLS1FTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc2hvcnRt
aWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElU
WSBwYXJhbGxlbCAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICIm
I3gyMjI1OyItLT4KKzwhLS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIHNo
b3J0cGFyYWxsZWwgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4K
KzwhLS1FTlRJVFkgbnBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgTm90RG91Ymxl
VmVydGljYWxCYXIgIiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+
Cis8IS0tRU5USVRZIG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgYW5k
ICImI3gyMjI3OyItLT4KKzwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElU
WSBvciAiJiN4MjIyODsiLS0+Cis8IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Cis8IS0tRU5U
SVRZIGNhcCAiJiN4MjIyOTsiLS0+Cis8IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsi
LS0+Cis8IS0tRU5USVRZIGN1cCAiJiN4MjIyQTsiLS0+Cis8IS0tRU5USVRZIGN1cHMgIiYjeDIy
MkE7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZ
IEludGVncmFsICImI3gyMjJCOyItLT4KKzwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KKzwh
LS1FTlRJVFkgdGludCAiJiN4MjIyRDsiLS0+Cis8IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyIt
LT4KKzwhLS1FTlRJVFkgY29uaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgb2ludCAiJiN4
MjIyRTsiLS0+Cis8IS0tRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Cis8IS0t
RU5USVRZIENvbmludCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRl
Z3JhbCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgorPCEt
LUVOVElUWSBjd2ludCAiJiN4MjIzMTsiLS0+Cis8IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMy
OyItLT4KKzwhLS1FTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4K
KzwhLS1FTlRJVFkgYXdjb25pbnQgIiYjeDIyMzM7Ii0tPgorPCEtLUVOVElUWSBDb3VudGVyQ2xv
Y2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgdGhlcmU0ICIm
I3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJ
VFkgVGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyIt
LT4KKzwhLS1FTlRJVFkgYmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIEJlY2F1c2Ug
IiYjeDIyMzU7Ii0tPgorPCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Cis8IS0tRU5USVRZ
IENvbG9uICImI3gyMjM3OyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+
Cis8IS0tRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiLS0+Cis8IS0tRU5USVRZIGRvdG1pbnVzICIm
I3gyMjM4OyItLT4KKzwhLS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgorPCEtLUVOVElUWSBo
b210aHQgIiYjeDIyM0I7Ii0tPgorPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVO
VElUWSBUaWxkZSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+
Cis8IS0tRU5USVRZIHRoaWNrc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgbnZzaW0gIiYj
eDIyM0M7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVO
VElUWSBiYWNrc2ltICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gz
MzE7Ii0tPgorPCEtLUVOVElUWSBhYyAiJiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIG1zdHBvcyAi
JiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgorPCEtLUVO
VElUWSBhY2QgIiYjeDIyM0Y7Ii0tPgorPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSBWZXJ0aWNhbFRpbGRlICImI3gyMjQwOyItLT4KKzwhLS1FTlRJVFkgd3IgIiYj
eDIyNDA7Ii0tPgorPCEtLUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgTm90
VGlsZGUgIiYjeDIyNDE7Ii0tPgorPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KKzwhLS1F
TlRJVFkgRXF1YWxUaWxkZSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIGVxc2ltICImI3gyMjQy
OyItLT4KKzwhLS1FTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEt
LUVOVElUWSBuZXNpbSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzaW1lICImI3gy
MjQzOyItLT4KKzwhLS1FTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZ
IHNpbWVxICImI3gyMjQzOyItLT4KKzwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgorPCEt
LUVOVElUWSBuc2ltZXEgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICIm
I3gyMjQ0OyItLT4KKzwhLS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIFRp
bGRlRnVsbEVxdWFsICImI3gyMjQ1OyItLT4KKzwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0t
PgorPCEtLUVOVElUWSBuY29uZyAiJiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlRnVs
bEVxdWFsICImI3gyMjQ3OyItLT4KKzwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgorPCEt
LUVOVElUWSBhcCAiJiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7
Ii0tPgorPCEtLUVOVElUWSBhcHByb3ggIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSB0aGthcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1F
TlRJVFkgbmFwICImI3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0
OTsiLS0+Cis8IS0tRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBhcGUg
IiYjeDIyNEE7Ii0tPgorPCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5U
SVRZIGFwaWQgIiYjeDIyNEI7Ii0tPgorPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBiY29uZyAiJiN4MjI0QzsiLS0+Cis8IS0tRU5USVRZIGJhY2tjb25n
ICImI3gyMjRDOyItLT4KKzwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Cis8IS0tRU5U
SVRZIEN1cENhcCAiJiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBIdW1wRG93
bkh1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgorPCEt
LUVOVElUWSBOb3RIdW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkg
bmJ1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0t
PgorPCEtLUVOVElUWSBIdW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBidW1wZXEg
IiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgTm90SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVz
ZG90ICImI3gyMjUwOyItLT4KKzwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgorPCEt
LUVOVElUWSBkb3RlcSAiJiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgorPCEtLUVOVElUWSBkb3Rl
cWRvdCAiJiN4MjI1MTsiLS0+Cis8IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KKzwhLS1F
TlRJVFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGVyRG90ICImI3gy
MjUzOyItLT4KKzwhLS1FTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KKzwhLS1FTlRJ
VFkgY29sb25lICImI3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+
Cis8IS0tRU5USVRZIEFzc2lnbiAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGVjb2xvbiAiJiN4
MjI1NTsiLS0+Cis8IS0tRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgorPCEtLUVOVElUWSBl
Y2lyICImI3gyMjU2OyItLT4KKzwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KKzwhLS1F
TlRJVFkgY2lyZSAiJiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+
Cis8IS0tRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiLS0+Cis8IS0tRU5USVRZIHZlZWVxICImI3gy
MjVBOyItLT4KKzwhLS1FTlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIHRyaWFu
Z2xlcSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Cis8IS0t
RU5USVRZIHF1ZXN0ZXEgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+
Cis8IS0tRU5USVRZIE5vdEVxdWFsICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgZXF1aXYgIiYj
eDIyNjE7Ii0tPgorPCEtLUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgorPCEtLUVOVElU
WSBibmVxdWl2ICImI3gyMjYxOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIy
NjI7Ii0tPgorPCEtLUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgorPCEtLUVOVElU
WSBsZSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5U
SVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGdlICImI3gyMjY1OyIt
LT4KKzwhLS1FTlRJVFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgZ2Vx
ICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KKzwh
LS1FTlRJVFkgbEUgIiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gy
MjY2OyItLT4KKzwhLS1FTlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIG5sRSAi
JiN4MjI2NjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBnRSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1
YWwgIiYjeDIyNjc7Ii0tPgorPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KKzwhLS1FTlRJ
VFkgbmdFICImI3gyMjY3OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4
OyItLT4KKzwhLS1FTlRJVFkgbG5FICImI3gyMjY4OyItLT4KKzwhLS1FTlRJVFkgbG5lcXEgIiYj
eDIyNjg7Ii0tPgorPCEtLUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVO
VElUWSBsdmVydG5lcXEgIiYjeDIyNjg7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGduRSAiJiN4
MjI2OTsiLS0+Cis8IS0tRU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ3Zu
RSAiJiN4MjI2OTsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIE5lc3Rl
ZExlc3NMZXNzICImI3gyMjZBOyItLT4KKzwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgorPCEt
LUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NMZXNz
ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyIt
LT4KKzwhLS1FTlRJVFkgR3QgIiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVy
R3JlYXRlciAiJiN4MjI2QjsiLS0+Cis8IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KKzwhLS1F
TlRJVFkgbkd0diAiJiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyR3Jl
YXRlciAiJiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIHR3aXh0ICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgYmV0d2Vl
biAiJiN4MjI2QzsiLS0+Cis8IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Cis8IS0t
RU5USVRZIG5sdCAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0t
PgorPCEtLUVOVElUWSBubGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5ndCAiJiN4MjI2
RjsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBu
Z3RyICImI3gyMjZGOyItLT4KKzwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KKzwhLS1FTlRJ
VFkgTm90TGVzc0VxdWFsICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsi
LS0+Cis8IS0tRU5USVRZIG5nZSAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJF
cXVhbCAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgorPCEtLUVO
VElUWSBsc2ltICImI3gyMjcyOyItLT4KKzwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyIt
LT4KKzwhLS1FTlRJVFkgbGVzc3NpbSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIGdzaW0gIiYj
eDIyNzM7Ii0tPgorPCEtLUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBH
cmVhdGVyVGlsZGUgIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+
Cis8IS0tRU5USVRZIE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZIG5nc2lt
ICImI3gyMjc1OyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4K
KzwhLS1FTlRJVFkgbGcgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2
OyItLT4KKzwhLS1FTlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBn
bCAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVO
VElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7
Ii0tPgorPCEtLUVOVElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZ
IG50Z2wgIiYjeDIyNzk7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsi
LS0+Cis8IS0tRU5USVRZIHByICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXMgIiYj
eDIyN0E7Ii0tPgorPCEtLUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgc2Mg
IiYjeDIyN0I7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2MgIiYjeDIyN0I7Ii0tPgorPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Cis8
IS0tRU5USVRZIFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHBy
ZWNjdXJseWVxICImI3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgor
PCEtLUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBz
dWNjY3VybHllcSAiJiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4K
KzwhLS1FTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzVGls
ZGUgIiYjeDIyN0U7Ii0tPgorPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2NzaW0gIiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gy
MjdGOyItLT4KKzwhLS1FTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBucHIgIiYjeDIyODA7Ii0tPgorPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4
MDsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkg
bnNjICImI3gyMjgxOyItLT4KKzwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdWNjZWVkcyAiJiN4MjI4MTsiLS0+Cis8IS0tRU5USVRZIHN1YiAiJiN4MjI4Mjsi
LS0+Cis8IS0tRU5USVRZIHN1YnNldCAiJiN4MjI4MjsiLS0+Cis8IS0tRU5USVRZIHZuc3ViICIm
I3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7
Ii0tPgorPCEtLUVOVElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5U
SVRZIHN1cCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Cis8
IS0tRU5USVRZIFN1cGVyc2V0ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgdm5zdXAgIiYjeDIy
ODM7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+
Cis8IS0tRU5USVRZIE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBuc3ViICImI3gyMjg0OyItLT4KKzwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Cis8IS0t
RU5USVRZIHN1YmUgIiYjeDIyODY7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4
NjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3Vw
ZSAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KKzwhLS1F
TlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIG5zdWJlICImI3gy
Mjg4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkg
Tm90U3Vic2V0RXF1YWwgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsi
LS0+Cis8IS0tRU5USVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1
cGVyc2V0RXF1YWwgIiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+
Cis8IS0tRU5USVRZIHN1YnNldG5lcSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZIHZzdWJuZSAi
JiN4MjI4QTsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHN1
cHNldG5lcSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEt
LUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ii0tPgorPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsi
LS0+Cis8IS0tRU5USVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5USVRZIHNxc3Vi
ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KKzwh
LS1FTlRJVFkgc3FzdWJzZXQgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJz
ZXQgIiYjeDIyOEY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgor
PCEtLUVOVElUWSBTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIHNxc3Vw
c2V0ICImI3gyMjkwOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkg
U3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldGVxICIm
I3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KKzwhLS1FTlRJVFkg
U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ZXEg
IiYjeDIyOTI7Ii0tPgorPCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZ
IFNxdWFyZUludGVyc2VjdGlvbiAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIHNxY2FwcyAiJiN4
MjI5MzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgorPCEtLUVO
VElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5
NDsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElU
WSBDaXJjbGVQbHVzICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyIt
LT4KKzwhLS1FTlRJVFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBvdGlt
ZXMgIiYjeDIyOTc7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Cis8
IS0tRU5USVRZIG9zb2wgIiYjeDIyOTg7Ii0tPgorPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyIt
LT4KKzwhLS1FTlRJVFkgQ2lyY2xlRG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJVFkgb2NpciAi
JiN4MjI5QTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KKzwhLS1F
TlRJVFkgb2FzdCAiJiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7
Ii0tPgorPCEtLUVOVElUWSBvZGFzaCAiJiN4MjI5RDsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRk
YXNoICImI3gyMjlEOyItLT4KKzwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgorPCEtLUVO
VElUWSBib3hwbHVzICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyIt
LT4KKzwhLS1FTlRJVFkgYm94bWludXMgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2Ig
IiYjeDIyQTA7Ii0tPgorPCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Cis8IS0tRU5U
SVRZIHNkb3RiICImI3gyMkExOyItLT4KKzwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyIt
LT4KKzwhLS1FTlRJVFkgdmRhc2ggIiYjeDIyQTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZSAi
JiN4MjJBMjsiLS0+Cis8IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkg
TGVmdFRlZSAiJiN4MjJBMzsiLS0+Cis8IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Cis8IS0t
RU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7
Ii0tPgorPCEtLUVOVElUWSBib3QgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBwZXJwICImI3gy
MkE1OyItLT4KKzwhLS1FTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBtb2Rl
bHMgIiYjeDIyQTc7Ii0tPgorPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Cis8IS0tRU5U
SVRZIERvdWJsZVJpZ2h0VGVlICImI3gyMkE4OyItLT4KKzwhLS1FTlRJVFkgVmRhc2ggIiYjeDIy
QTk7Ii0tPgorPCEtLUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgorPCEtLUVOVElUWSBWRGFz
aCAiJiN4MjJBQjsiLS0+Cis8IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Cis8IS0tRU5U
SVRZIG52RGFzaCAiJiN4MjJBRDsiLS0+Cis8IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+
Cis8IS0tRU5USVRZIG5WRGFzaCAiJiN4MjJBRjsiLS0+Cis8IS0tRU5USVRZIHBydXJlbCAiJiN4
MjJCMDsiLS0+Cis8IS0tRU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgdmFy
dHJpYW5nbGVsZWZ0ICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gy
MkIyOyItLT4KKzwhLS1FTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSB2YXJ0
cmlhbmdsZXJpZ2h0ICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4
MjJCMzsiLS0+Cis8IS0tRU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgdHJp
YW5nbGVsZWZ0ZXEgIiYjeDIyQjQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAi
JiN4MjJCNDsiLS0+Cis8IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Cis8
IS0tRU5USVRZIHJ0cmllICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVx
ICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyIt
LT4KKzwhLS1FTlRJVFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkg
b3JpZ29mICImI3gyMkI2OyItLT4KKzwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Cis8IS0t
RU5USVRZIG11bWFwICImI3gyMkI4OyItLT4KKzwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7
Ii0tPgorPCEtLUVOVElUWSBoZXJjb24gIiYjeDIyQjk7Ii0tPgorPCEtLUVOVElUWSBpbnRjYWwg
IiYjeDIyQkE7Ii0tPgorPCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5U
SVRZIHZlZWJhciAiJiN4MjJCQjsiLS0+Cis8IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+
Cis8IS0tRU5USVRZIGFuZ3J0dmIgIiYjeDIyQkU7Ii0tPgorPCEtLUVOVElUWSBscnRyaSAiJiN4
MjJCRjsiLS0+Cis8IS0tRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIFdl
ZGdlICImI3gyMkMwOyItLT4KKzwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEt
LUVOVElUWSB4dmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4K
KzwhLS1FTlRJVFkgYmlndmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgeGNhcCAiJiN4MjJD
MjsiLS0+Cis8IS0tRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZ
IGJpZ2NhcCAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgorPCEt
LUVOVElUWSBVbmlvbiAiJiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsi
LS0+Cis8IS0tRU5USVRZIGRpYW0gIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kICIm
I3gyMkM0OyItLT4KKzwhLS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Cis8IS0tRU5USVRZ
IHNkb3QgIiYjeDIyQzU7Ii0tPgorPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgorPCEt
LUVOVElUWSBTdGFyICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyIt
LT4KKzwhLS1FTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Cis8IS0tRU5USVRZIGJv
d3RpZSAiJiN4MjJDODsiLS0+Cis8IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Cis8IS0t
RU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiLS0+Cis8IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsi
LS0+Cis8IS0tRU5USVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkg
cnRocmVlICImI3gyMkNDOyItLT4KKzwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkND
OyItLT4KKzwhLS1FTlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2lt
ZXEgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5U
SVRZIGN1cmx5dmVlICImI3gyMkNFOyItLT4KKzwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0t
PgorPCEtLUVOVElUWSBjdXJseXdlZGdlICImI3gyMkNGOyItLT4KKzwhLS1FTlRJVFkgU3ViICIm
I3gyMkQwOyItLT4KKzwhLS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KKzwhLS1FTlRJVFkg
U3VwICImI3gyMkQxOyItLT4KKzwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KKzwhLS1F
TlRJVFkgQ2FwICImI3gyMkQyOyItLT4KKzwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KKzwh
LS1FTlRJVFkgZm9yayAiJiN4MjJENDsiLS0+Cis8IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJE
NDsiLS0+Cis8IS0tRU5USVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgorPCEtLUVOVElUWSBsdGRvdCAi
JiN4MjJENjsiLS0+Cis8IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgorPCEtLUVOVElU
WSBndGRvdCAiJiN4MjJENzsiLS0+Cis8IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Cis8
IS0tRU5USVRZIExsICImI3gyMkQ4OyItLT4KKzwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMz
ODsiLS0+Cis8IS0tRU5USVRZIEdnICImI3gyMkQ5OyItLT4KKzwhLS1FTlRJVFkgZ2dnICImI3gy
MkQ5OyItLT4KKzwhLS1FTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZ
IGxlZyAiJiN4MjJEQTsiLS0+Cis8IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7
Ii0tPgorPCEtLUVOVElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgorPCEtLUVOVElUWSBsZXNn
ICImI3gyMkRBOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgorPCEt
LUVOVElUWSBndHJlcWxlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxM
ZXNzICImI3gyMkRCOyItLT4KKzwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4K
KzwhLS1FTlRJVFkgY3VlcHIgIiYjeDIyREU7Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxcHJlYyAi
JiN4MjJERTsiLS0+Cis8IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkg
Y3VybHllcXN1Y2MgIiYjeDIyREY7Ii0tPgorPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0t
PgorPCEtLUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgorPCEtLUVO
VElUWSBuc2NjdWUgIiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1
YWwgIiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KKzwhLS1F
TlRJVFkgTm90U3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgorPCEtLUVOVElUWSBuc3Fz
dXBlICImI3gyMkUzOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4
MjJFMzsiLS0+Cis8IS0tRU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KKzwhLS1FTlRJVFkgZ25z
aW0gIiYjeDIyRTc7Ii0tPgorPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVO
VElUWSBwcmVjbnNpbSAiJiN4MjJFODsiLS0+Cis8IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsi
LS0+Cis8IS0tRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgbmx0cmkg
IiYjeDIyRUE7Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KKzwh
LS1FTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmkg
IiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Cis8
IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBubHRy
aWUgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0t
PgorPCEtLUVOVElUWSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Cis8IS0tRU5U
SVRZIG5ydHJpZSAiJiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYj
eDIyRUQ7Ii0tPgorPCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0t
PgorPCEtLUVOVElUWSB2ZWxsaXAgIiYjeDIyRUU7Ii0tPgorPCEtLUVOVElUWSBjdGRvdCAiJiN4
MjJFRjsiLS0+Cis8IS0tRU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KKzwhLS1FTlRJVFkgZHRk
b3QgIiYjeDIyRjE7Ii0tPgorPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Cis8IS0tRU5U
SVRZIGlzaW5zdiAiJiN4MjJGMzsiLS0+Cis8IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4K
KzwhLS1FTlRJVFkgaXNpbmRvdCAiJiN4MjJGNTsiLS0+Cis8IS0tRU5USVRZIG5vdGluZG90ICIm
I3gyMkY1OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgorPCEt
LUVOVElUWSBub3RpbnZiICImI3gyMkY3OyItLT4KKzwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7
Ii0tPgorPCEtLUVOVElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkg
bmlzZCAiJiN4MjJGQTsiLS0+Cis8IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgorPCEtLUVO
VElUWSBuaXMgIiYjeDIyRkM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4K
KzwhLS1FTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZCAiJiN4
MjMwNTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkg
QmFyd2VkICImI3gyMzA2OyItLT4KKzwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7
Ii0tPgorPCEtLUVOVElUWSBsY2VpbCAiJiN4MjMwODsiLS0+Cis8IS0tRU5USVRZIExlZnRDZWls
aW5nICImI3gyMzA4OyItLT4KKzwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgorPCEtLUVO
VElUWSBSaWdodENlaWxpbmcgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIz
MEE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEtLUVOVElUWSBy
Zmxvb3IgIiYjeDIzMEI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4K
KzwhLS1FTlRJVFkgZHJjcm9wICImI3gyMzBDOyItLT4KKzwhLS1FTlRJVFkgZGxjcm9wICImI3gy
MzBEOyItLT4KKzwhLS1FTlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KKzwhLS1FTlRJVFkgdWxj
cm9wICImI3gyMzBGOyItLT4KKzwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Cis8IS0tRU5U
SVRZIHByb2ZsaW5lICImI3gyMzEyOyItLT4KKzwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7
Ii0tPgorPCEtLUVOVElUWSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgorPCEtLUVOVElUWSB0YXJnZXQg
IiYjeDIzMTY7Ii0tPgorPCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElU
WSB1bGNvcm5lciAiJiN4MjMxQzsiLS0+Cis8IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+
Cis8IS0tRU5USVRZIHVyY29ybmVyICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgZGxjb3JuICIm
I3gyMzFFOyItLT4KKzwhLS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElU
WSBkcmNvcm4gIiYjeDIzMUY7Ii0tPgorPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+
Cis8IS0tRU5USVRZIGZyb3duICImI3gyMzIyOyItLT4KKzwhLS1FTlRJVFkgc2Zyb3duICImI3gy
MzIyOyItLT4KKzwhLS1FTlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBzc21p
bGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgorPCEtLUVO
VElUWSBwcm9mYWxhciAiJiN4MjMyRTsiLS0+Cis8IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsi
LS0+Cis8IS0tRU5USVRZIG92YmFyICImI3gyMzNEOyItLT4KKzwhLS1FTlRJVFkgc29sYmFyICIm
I3gyMzNGOyItLT4KKzwhLS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Cis8IS0tRU5USVRZ
IGxtb3VzdCAiJiN4MjNCMDsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0t
PgorPCEtLUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSBybW91c3RhY2hl
ICImI3gyM0IxOyItLT4KKzwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZ
IE92ZXJCcmFja2V0ICImI3gyM0I0OyItLT4KKzwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+
Cis8IS0tRU5USVRZIFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZIGJicmt0
YnJrICImI3gyM0I2OyItLT4KKzwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyIt
LT4KKzwhLS1FTlRJVFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Cis8IS0tRU5USVRZ
IE92ZXJCcmFjZSAiJiN4MjNERTsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7
Ii0tPgorPCEtLUVOVElUWSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Cis8IS0tRU5USVRZIGVsaW50
ZXJzICImI3gyM0U3OyItLT4KKzwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgorPCEtLUVO
VElUWSBvUyAiJiN4MjRDODsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4K
KzwhLS1FTlRJVFkgYm94aCAiJiN4MjUwMDsiLS0+Cis8IS0tRU5USVRZIEhvcml6b250YWxMaW5l
ICImI3gyNTAwOyItLT4KKzwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Cis8IS0tRU5USVRZ
IGJveGRyICImI3gyNTBDOyItLT4KKzwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgorPCEt
LUVOVElUWSBib3h1ciAiJiN4MjUxNDsiLS0+Cis8IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyIt
LT4KKzwhLS1FTlRJVFkgYm94dnIgIiYjeDI1MUM7Ii0tPgorPCEtLUVOVElUWSBib3h2bCAiJiN4
MjUyNDsiLS0+Cis8IS0tRU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KKzwhLS1FTlRJVFkgYm94
aHUgIiYjeDI1MzQ7Ii0tPgorPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Cis8IS0tRU5U
SVRZIGJveEggIiYjeDI1NTA7Ii0tPgorPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KKzwh
LS1FTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ii0tPgorPCEtLUVOVElUWSBib3hEciAiJiN4MjU1Mzsi
LS0+Cis8IS0tRU5USVRZIGJveERSICImI3gyNTU0OyItLT4KKzwhLS1FTlRJVFkgYm94ZEwgIiYj
eDI1NTU7Ii0tPgorPCEtLUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Cis8IS0tRU5USVRZIGJv
eERMICImI3gyNTU3OyItLT4KKzwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgorPCEtLUVO
VElUWSBib3hVciAiJiN4MjU1OTsiLS0+Cis8IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4K
KzwhLS1FTlRJVFkgYm94dUwgIiYjeDI1NUI7Ii0tPgorPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1
QzsiLS0+Cis8IS0tRU5USVRZIGJveFVMICImI3gyNTVEOyItLT4KKzwhLS1FTlRJVFkgYm94dlIg
IiYjeDI1NUU7Ii0tPgorPCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Cis8IS0tRU5USVRZ
IGJveFZSICImI3gyNTYwOyItLT4KKzwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgorPCEt
LUVOVElUWSBib3hWbCAiJiN4MjU2MjsiLS0+Cis8IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyIt
LT4KKzwhLS1FTlRJVFkgYm94SGQgIiYjeDI1NjQ7Ii0tPgorPCEtLUVOVElUWSBib3hoRCAiJiN4
MjU2NTsiLS0+Cis8IS0tRU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KKzwhLS1FTlRJVFkgYm94
SHUgIiYjeDI1Njc7Ii0tPgorPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Cis8IS0tRU5U
SVRZIGJveEhVICImI3gyNTY5OyItLT4KKzwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgor
PCEtLUVOVElUWSBib3hWaCAiJiN4MjU2QjsiLS0+Cis8IS0tRU5USVRZIGJveFZIICImI3gyNTZD
OyItLT4KKzwhLS1FTlRJVFkgdWhibGsgIiYjeDI1ODA7Ii0tPgorPCEtLUVOVElUWSBsaGJsayAi
JiN4MjU4NDsiLS0+Cis8IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KKzwhLS1FTlRJVFkg
YmxrMTQgIiYjeDI1OTE7Ii0tPgorPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Cis8IS0t
RU5USVRZIGJsazM0ICImI3gyNTkzOyItLT4KKzwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4K
KzwhLS1FTlRJVFkgc3F1YXJlICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlICImI3gy
NUExOyItLT4KKzwhLS1FTlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIHNxdWFy
ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KKzwh
LS1FTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkg
RW1wdHlWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUI7Ii0tPgorPCEtLUVOVElUWSByZWN0ICImI3gy
NUFEOyItLT4KKzwhLS1FTlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KKzwhLS1FTlRJVFkgZmx0
bnMgIiYjeDI1QjE7Ii0tPgorPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Cis8IS0tRU5U
SVRZIGJpZ3RyaWFuZ2xldXAgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVC
NDsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgorPCEtLUVOVElU
WSB1dHJpICImI3gyNUI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgor
PCEtLUVOVElUWSBydHJpZiAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVy
aWdodCAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgorPCEtLUVO
VElUWSB0cmlhbmdsZXJpZ2h0ICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1
QkQ7Ii0tPgorPCEtLUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgorPCEtLUVO
VElUWSBkdHJpZiAiJiN4MjVCRTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICIm
I3gyNUJFOyItLT4KKzwhLS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIHRy
aWFuZ2xlZG93biAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4K
KzwhLS1FTlRJVFkgYmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBs
dHJpICImI3gyNUMzOyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4K
KzwhLS1FTlRJVFkgbG96ICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVD
QTsiLS0+Cis8IS0tRU5USVRZIGNpciAiJiN4MjVDQjsiLS0+Cis8IS0tRU5USVRZIHRyaWRvdCAi
JiN4MjVFQzsiLS0+Cis8IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkg
YmlnY2lyYyAiJiN4MjVFRjsiLS0+Cis8IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KKzwh
LS1FTlRJVFkgdXJ0cmkgIiYjeDI1Rjk7Ii0tPgorPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsi
LS0+Cis8IS0tRU5USVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgorPCEtLUVOVElU
WSBGaWxsZWRTbWFsbFNxdWFyZSAiJiN4MjVGQzsiLS0+Cis8IS0tRU5USVRZIHN0YXJmICImI3gy
NjA1OyItLT4KKzwhLS1FTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Cis8IS0tRU5USVRZIHN0
YXIgIiYjeDI2MDY7Ii0tPgorPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Cis8IS0tRU5U
SVRZIGZlbWFsZSAiJiN4MjY0MDsiLS0+Cis8IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgor
PCEtLUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ii0tPgorPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYj
eDI2NjA7Ii0tPgorPCEtLUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGNs
dWJzdWl0ICImI3gyNjYzOyItLT4KKzwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KKzwh
LS1FTlRJVFkgaGVhcnRzdWl0ICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2
NjY7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZ
IHN1bmcgIiYjeDI2NkE7Ii0tPgorPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KKzwhLS1F
TlRJVFkgbmF0dXIgIiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyIt
LT4KKzwhLS1FTlRJVFkgc2hhcnAgIiYjeDI2NkY7Ii0tPgorPCEtLUVOVElUWSBjaGVjayAiJiN4
MjcxMzsiLS0+Cis8IS0tRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Cis8IS0tRU5USVRZ
IGNyb3NzICImI3gyNzE3OyItLT4KKzwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Cis8IS0t
RU5USVRZIG1hbHRlc2UgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyIt
LT4KKzwhLS1FTlRJVFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgorPCEtLUVOVElU
WSBsYmJyayAiJiN4Mjc3MjsiLS0+Cis8IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KKzwh
LS1FTlRJVFkgYnNvbGhzdWIgIiYjeDI3Qzg7Ii0tPgorPCEtLUVOVElUWSBzdXBoc29sICImI3gy
N0M5OyItLT4KKzwhLS1FTlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0
RG91YmxlQnJhY2tldCAiJiN4MjdFNjsiLS0+Cis8IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KKzwhLS1FTlRJ
VFkgbGFuZyAiJiN4MjdFODsiLS0+Cis8IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3
RTg7Ii0tPgorPCEtLUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSByYW5n
ICImI3gyN0U5OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0t
PgorPCEtLUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBMYW5nICImI3gy
N0VBOyItLT4KKzwhLS1FTlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Cis8IS0tRU5USVRZIGxvYW5n
ICImI3gyN0VDOyItLT4KKzwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgorPCEtLUVOVElU
WSB4bGFyciAiJiN4MjdGNTsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7
Ii0tPgorPCEtLUVOVElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkg
eHJhcnIgIiYjeDI3RjY7Ii0tPgorPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsi
LS0+Cis8IS0tRU5USVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkg
eGhhcnIgIiYjeDI3Rjc7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3
Rjc7Ii0tPgorPCEtLUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEt
LUVOVElUWSB4bEFyciAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYj
eDI3Rjg7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4K
KzwhLS1FTlRJVFkgeHJBcnIgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSBMb25ncmlnaHRhcnJv
dyAiJiN4MjdGOTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5
OyItLT4KKzwhLS1FTlRJVFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVm
dHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0
QXJyb3cgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KKzwhLS1F
TlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGR6aWdyYXJyICImI3gy
N0ZGOyItLT4KKzwhLS1FTlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KKzwhLS1FTlRJVFkgbnZy
QXJyICImI3gyOTAzOyItLT4KKzwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KKzwhLS1F
TlRJVFkgTWFwICImI3gyOTA1OyItLT4KKzwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgor
PCEtLUVOVElUWSByYmFyciAiJiN4MjkwRDsiLS0+Cis8IS0tRU5USVRZIGJrYXJvdyAiJiN4Mjkw
RDsiLS0+Cis8IS0tRU5USVRZIGxCYXJyICImI3gyOTBFOyItLT4KKzwhLS1FTlRJVFkgckJhcnIg
IiYjeDI5MEY7Ii0tPgorPCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KKzwhLS1FTlRJ
VFkgUkJhcnIgIiYjeDI5MTA7Ii0tPgorPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+
Cis8IS0tRU5USVRZIEREb3RyYWhkICImI3gyOTExOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0Jh
ciAiJiN4MjkxMjsiLS0+Cis8IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Cis8
IS0tRU5USVRZIFJhcnJ0bCAiJiN4MjkxNjsiLS0+Cis8IS0tRU5USVRZIGxhdGFpbCAiJiN4Mjkx
OTsiLS0+Cis8IS0tRU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Cis8IS0tRU5USVRZIGxBdGFp
bCAiJiN4MjkxQjsiLS0+Cis8IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Cis8IS0tRU5U
SVRZIGxhcnJmcyAiJiN4MjkxRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+
Cis8IS0tRU5USVRZIGxhcnJiZnMgIiYjeDI5MUY7Ii0tPgorPCEtLUVOVElUWSByYXJyYmZzICIm
I3gyOTIwOyItLT4KKzwhLS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KKzwhLS1FTlRJVFkg
bmVhcmhrICImI3gyOTI0OyItLT4KKzwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KKzwh
LS1FTlRJVFkgaGtzZWFyb3cgIiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5
MjY7Ii0tPgorPCEtLUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIG53
bmVhciAiJiN4MjkyNzsiLS0+Cis8IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Cis8IS0t
RU5USVRZIHRvZWEgIiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0t
PgorPCEtLUVOVElUWSB0b3NhICImI3gyOTI5OyItLT4KKzwhLS1FTlRJVFkgc3dud2FyICImI3gy
OTJBOyItLT4KKzwhLS1FTlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgorPCEtLUVOVElUWSBucmFy
cmMgIiYjeDI5MzM7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+
Cis8IS0tRU5USVRZIGxkY2EgIiYjeDI5MzY7Ii0tPgorPCEtLUVOVElUWSByZGNhICImI3gyOTM3
OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Cis8IS0tRU5USVRZIGxhcnJw
bCAiJiN4MjkzOTsiLS0+Cis8IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgorPCEtLUVO
VElUWSBjdWxhcnJwICImI3gyOTNEOyItLT4KKzwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyIt
LT4KKzwhLS1FTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiLS0+Cis8IS0tRU5USVRZIFVhcnJvY2ly
ICImI3gyOTQ5OyItLT4KKzwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgorPCEtLUVO
VElUWSBsZHJ1c2hhciAiJiN4Mjk0QjsiLS0+Cis8IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAi
JiN4Mjk0RTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4K
KzwhLS1FTlRJVFkgRG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Cis8IS0tRU5USVRZ
IExlZnRVcERvd25WZWN0b3IgIiYjeDI5NTE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFy
ICImI3gyOTUyOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgor
PCEtLUVOVElUWSBSaWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KKzwhLS1FTlRJVFkgUmln
aHREb3duVmVjdG9yQmFyICImI3gyOTU1OyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JC
YXIgIiYjeDI5NTY7Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7
Ii0tPgorPCEtLUVOVElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgorPCEtLUVOVElU
WSBMZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVWZWN0
b3IgIiYjeDI5NUE7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+
Cis8IS0tRU5USVRZIFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodERvd25UZWVWZWN0b3IgIiYjeDI5NUQ7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFRlZVZl
Y3RvciAiJiN4Mjk1RTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1
RjsiLS0+Cis8IS0tRU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Cis8IS0tRU5U
SVRZIExlZnREb3duVGVlVmVjdG9yICImI3gyOTYxOyItLT4KKzwhLS1FTlRJVFkgbEhhciAiJiN4
Mjk2MjsiLS0+Cis8IS0tRU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgorPCEtLUVOVElUWSBySGFy
ICImI3gyOTY0OyItLT4KKzwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Cis8IS0tRU5USVRZ
IGx1cnVoYXIgIiYjeDI5NjY7Ii0tPgorPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4K
KzwhLS1FTlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiLS0+Cis8IS0tRU5USVRZIHJkbGRoYXIgIiYj
eDI5Njk7Ii0tPgorPCEtLUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgorPCEtLUVOVElUWSBs
bGhhcmQgIiYjeDI5NkI7Ii0tPgorPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgorPCEt
LUVOVElUWSBscmhhcmQgIiYjeDI5NkQ7Ii0tPgorPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsi
LS0+Cis8IS0tRU5USVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgorPCEtLUVOVElUWSBk
dWhhciAiJiN4Mjk2RjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gy
OTZGOyItLT4KKzwhLS1FTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KKzwhLS1FTlRJ
VFkgZXJhcnIgIiYjeDI5NzE7Ii0tPgorPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4K
KzwhLS1FTlRJVFkgbGFycnNpbSAiJiN4Mjk3MzsiLS0+Cis8IS0tRU5USVRZIHJhcnJzaW0gIiYj
eDI5NzQ7Ii0tPgorPCEtLUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgorPCEtLUVOVElUWSBs
dGxhcnIgIiYjeDI5NzY7Ii0tPgorPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgorPCEt
LUVOVElUWSBzdWJyYXJyICImI3gyOTc5OyItLT4KKzwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3
QjsiLS0+Cis8IS0tRU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Cis8IS0tRU5USVRZIHJmaXNo
dCAiJiN4Mjk3RDsiLS0+Cis8IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Cis8IS0tRU5U
SVRZIGRmaXNodCAiJiN4Mjk3RjsiLS0+Cis8IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4K
KzwhLS1FTlRJVFkgcm9wYXIgIiYjeDI5ODY7Ii0tPgorPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4
QjsiLS0+Cis8IS0tRU5USVRZIHJicmtlICImI3gyOThDOyItLT4KKzwhLS1FTlRJVFkgbGJya3Ns
dSAiJiN4Mjk4RDsiLS0+Cis8IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgorPCEtLUVO
VElUWSBsYnJrc2xkICImI3gyOThGOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsi
LS0+Cis8IS0tRU5USVRZIGxhbmdkICImI3gyOTkxOyItLT4KKzwhLS1FTlRJVFkgcmFuZ2QgIiYj
eDI5OTI7Ii0tPgorPCEtLUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgorPCEtLUVOVElUWSBy
cGFyZ3QgIiYjeDI5OTQ7Ii0tPgorPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgorPCEt
LUVOVElUWSBsdHJQYXIgIiYjeDI5OTY7Ii0tPgorPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlB
OyItLT4KKzwhLS1FTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2
YmQgIiYjeDI5OUQ7Ii0tPgorPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KKzwhLS1FTlRJ
VFkgcmFuZ2UgIiYjeDI5QTU7Ii0tPgorPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4K
KzwhLS1FTlRJVFkgdXdhbmdsZSAiJiN4MjlBNzsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFhICIm
I3gyOUE4OyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgorPCEtLUVOVElU
WSBhbmdtc2RhYyAiJiN4MjlBQTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyIt
LT4KKzwhLS1FTlRJVFkgYW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2Rh
ZiAiJiN4MjlBRDsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KKzwhLS1F
TlRJVFkgYW5nbXNkYWggIiYjeDI5QUY7Ii0tPgorPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIw
OyItLT4KKzwhLS1FTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Cis8IS0tRU5USVRZIGNlbXB0
eXYgIiYjeDI5QjI7Ii0tPgorPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Cis8IS0t
RU5USVRZIGxhZW1wdHl2ICImI3gyOUI0OyItLT4KKzwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7
Ii0tPgorPCEtLUVOVElUWSBvbWlkICImI3gyOUI2OyItLT4KKzwhLS1FTlRJVFkgb3BhciAiJiN4
MjlCNzsiLS0+Cis8IS0tRU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KKzwhLS1FTlRJVFkgb2xj
cm9zcyAiJiN4MjlCQjsiLS0+Cis8IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Cis8IS0t
RU5USVRZIG9sY2lyICImI3gyOUJFOyItLT4KKzwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0t
PgorPCEtLUVOVElUWSBvbHQgIiYjeDI5QzA7Ii0tPgorPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7
Ii0tPgorPCEtLUVOVElUWSBjaXJzY2lyICImI3gyOUMyOyItLT4KKzwhLS1FTlRJVFkgY2lyRSAi
JiN4MjlDMzsiLS0+Cis8IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgorPCEtLUVOVElUWSBi
c29sYiAiJiN4MjlDNTsiLS0+Cis8IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Cis8IS0t
RU5USVRZIHRyaXNiICImI3gyOUNEOyItLT4KKzwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7
Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgorPCEtLUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgUmln
aHRUcmlhbmdsZUJhciAiJiN4MjlEMDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVC
YXIgIiYjeDI5RDA7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4K
KzwhLS1FTlRJVFkgaW5maW50aWUgIiYjeDI5REQ7Ii0tPgorPCEtLUVOVElUWSBudmluZmluICIm
I3gyOURFOyItLT4KKzwhLS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KKzwhLS1FTlRJVFkg
c21lcGFyc2wgIiYjeDI5RTQ7Ii0tPgorPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+
Cis8IS0tRU5USVRZIGxvemYgIiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBibGFja2xvemVuZ2Ug
IiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Cis8IS0t
RU5USVRZIGRzb2wgIiYjeDI5RjY7Ii0tPgorPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+
Cis8IS0tRU5USVRZIGJpZ29kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVOVElUWSB4b3BsdXMgIiYj
eDJBMDE7Ii0tPgorPCEtLUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZ
IHhvdGltZSAiJiN4MkEwMjsiLS0+Cis8IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+
Cis8IS0tRU5USVRZIHh1cGx1cyAiJiN4MkEwNDsiLS0+Cis8IS0tRU5USVRZIGJpZ3VwbHVzICIm
I3gyQTA0OyItLT4KKzwhLS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkg
Ymlnc3FjdXAgIiYjeDJBMDY7Ii0tPgorPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KKzwh
LS1FTlRJVFkgaWlpaW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJB
MEQ7Ii0tPgorPCEtLUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Cis8IS0tRU5USVRZIGF3
aW50ICImI3gyQTExOyItLT4KKzwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgorPCEt
LUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsiLS0+Cis8IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJB
MTQ7Ii0tPgorPCEtLUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Cis8IS0tRU5USVRZIHF1
YXRpbnQgIiYjeDJBMTY7Ii0tPgorPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Cis8
IS0tRU5USVRZIHBsdXNjaXIgIiYjeDJBMjI7Ii0tPgorPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4
MkEyMzsiLS0+Cis8IS0tRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgorPCEtLUVOVElUWSBw
bHVzZHUgIiYjeDJBMjU7Ii0tPgorPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KKzwh
LS1FTlRJVFkgcGx1c3R3byAiJiN4MkEyNzsiLS0+Cis8IS0tRU5USVRZIG1jb21tYSAiJiN4MkEy
OTsiLS0+Cis8IS0tRU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgorPCEtLUVOVElUWSBsb3Bs
dXMgIiYjeDJBMkQ7Ii0tPgorPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgorPCEtLUVO
VElUWSBDcm9zcyAiJiN4MkEyRjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+
Cis8IS0tRU5USVRZIHRpbWVzYmFyICImI3gyQTMxOyItLT4KKzwhLS1FTlRJVFkgc21hc2hwICIm
I3gyQTMzOyItLT4KKzwhLS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Cis8IS0tRU5USVRZ
IHJvdGltZXMgIiYjeDJBMzU7Ii0tPgorPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+
Cis8IS0tRU5USVRZIE90aW1lcyAiJiN4MkEzNzsiLS0+Cis8IS0tRU5USVRZIG9kaXYgIiYjeDJB
Mzg7Ii0tPgorPCEtLUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KKzwhLS1FTlRJVFkgdHJp
bWludXMgIiYjeDJBM0E7Ii0tPgorPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KKzwh
LS1FTlRJVFkgaXByb2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTND
OyItLT4KKzwhLS1FTlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgorPCEtLUVOVElUWSBjYXBkb3Qg
IiYjeDJBNDA7Ii0tPgorPCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KKzwhLS1FTlRJVFkg
bmNhcCAiJiN4MkE0MzsiLS0+Cis8IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Cis8IS0t
RU5USVRZIGN1cG9yICImI3gyQTQ1OyItLT4KKzwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyIt
LT4KKzwhLS1FTlRJVFkgY2FwY3VwICImI3gyQTQ3OyItLT4KKzwhLS1FTlRJVFkgY3VwYnJjYXAg
IiYjeDJBNDg7Ii0tPgorPCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Cis8IS0tRU5U
SVRZIGN1cGN1cCAiJiN4MkE0QTsiLS0+Cis8IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+
Cis8IS0tRU5USVRZIGNjdXBzICImI3gyQTRDOyItLT4KKzwhLS1FTlRJVFkgY2NhcHMgIiYjeDJB
NEQ7Ii0tPgorPCEtLUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KKzwhLS1FTlRJVFkgQW5k
ICImI3gyQTUzOyItLT4KKzwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgorPCEtLUVOVElUWSBh
bmRhbmQgIiYjeDJBNTU7Ii0tPgorPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KKzwhLS1F
TlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiLS0+Cis8IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4
OyItLT4KKzwhLS1FTlRJVFkgYW5kdiAiJiN4MkE1QTsiLS0+Cis8IS0tRU5USVRZIG9ydiAiJiN4
MkE1QjsiLS0+Cis8IS0tRU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgorPCEtLUVOVElUWSBvcmQg
IiYjeDJBNUQ7Ii0tPgorPCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgorPCEtLUVOVElU
WSBzZG90ZSAiJiN4MkE2NjsiLS0+Cis8IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Cis8
IS0tRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7Ii0tPgorPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4
MkE2RDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgorPCEtLUVO
VElUWSBhcGFjaXIgIiYjeDJBNkY7Ii0tPgorPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgor
PCEtLUVOVElUWSBuYXBFICImI3gyQTcwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVwbHVzICIm
I3gyQTcxOyItLT4KKzwhLS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgorPCEtLUVOVElUWSBF
c2ltICImI3gyQTczOyItLT4KKzwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KKzwhLS1F
TlRJVFkgRXF1YWwgIiYjeDJBNzU7Ii0tPgorPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+
Cis8IS0tRU5USVRZIGRkb3RzZXEgIiYjeDJBNzc7Ii0tPgorPCEtLUVOVElUWSBlcXVpdkREICIm
I3gyQTc4OyItLT4KKzwhLS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgorPCEtLUVOVElUWSBn
dGNpciAiJiN4MkE3QTsiLS0+Cis8IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgorPCEt
LUVOVElUWSBndHF1ZXN0ICImI3gyQTdDOyItLT4KKzwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyIt
LT4KKzwhLS1FTlRJVFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBs
ZXFzbGFudCAiJiN4MkE3RDsiLS0+Cis8IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyIt
LT4KKzwhLS1FTlRJVFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgbmxlcXNsYW50ICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdlcyAi
JiN4MkE3RTsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4K
KzwhLS1FTlRJVFkgZ2Vxc2xhbnQgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBuZ2VzICImI3gy
QTdFOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdF
OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgor
PCEtLUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJB
ODA7Ii0tPgorPCEtLUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KKzwhLS1FTlRJVFkgZ2Vz
ZG90byAiJiN4MkE4MjsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KKzwh
LS1FTlRJVFkgZ2VzZG90b2wgIiYjeDJBODQ7Ii0tPgorPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7
Ii0tPgorPCEtLUVOVElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KKzwhLS1FTlRJVFkgZ2Fw
ICImI3gyQTg2OyItLT4KKzwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KKzwhLS1F
TlRJVFkgbG5lICImI3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Cis8
IS0tRU5USVRZIGduZSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0t
PgorPCEtLUVOVElUWSBsbmFwICImI3gyQTg5OyItLT4KKzwhLS1FTlRJVFkgbG5hcHByb3ggIiYj
eDJBODk7Ii0tPgorPCEtLUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KKzwhLS1FTlRJVFkgZ25h
cHByb3ggIiYjeDJBOEE7Ii0tPgorPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgorPCEtLUVO
VElUWSBsZXNzZXFxZ3RyICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyIt
LT4KKzwhLS1FTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Cis8IS0tRU5USVRZIGxzaW1l
ICImI3gyQThEOyItLT4KKzwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgorPCEtLUVOVElU
WSBsc2ltZyAiJiN4MkE4RjsiLS0+Cis8IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KKzwh
LS1FTlRJVFkgbGdFICImI3gyQTkxOyItLT4KKzwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4K
KzwhLS1FTlRJVFkgbGVzZ2VzICImI3gyQTkzOyItLT4KKzwhLS1FTlRJVFkgZ2VzbGVzICImI3gy
QTk0OyItLT4KKzwhLS1FTlRJVFkgZWxzICImI3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZXFzbGFu
dGxlc3MgIiYjeDJBOTU7Ii0tPgorPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgorPCEtLUVO
VElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3
OyItLT4KKzwhLS1FTlRJVFkgZWdzZG90ICImI3gyQTk4OyItLT4KKzwhLS1FTlRJVFkgZWwgIiYj
eDJBOTk7Ii0tPgorPCEtLUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Cis8IS0tRU5USVRZIHNpbWwg
IiYjeDJBOUQ7Ii0tPgorPCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KKzwhLS1FTlRJVFkg
c2ltbEUgIiYjeDJBOUY7Ii0tPgorPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Cis8IS0t
RU5USVRZIExlc3NMZXNzICImI3gyQUExOyItLT4KKzwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xl
c3MgIiYjeDJBQTE7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJB
QTI7Ii0tPgorPCEtLUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBnbGogIiYjeDJBQTQ7Ii0tPgorPCEtLUVOVElUWSBnbGEgIiYj
eDJBQTU7Ii0tPgorPCEtLUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KKzwhLS1FTlRJVFkgZ3Rj
YyAiJiN4MkFBNzsiLS0+Cis8IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KKzwhLS1FTlRJ
VFkgZ2VzY2MgIiYjeDJBQTk7Ii0tPgorPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgorPCEt
LUVOVElUWSBsYXQgIiYjeDJBQUI7Ii0tPgorPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4K
KzwhLS1FTlRJVFkgc210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGxhdGUg
IiYjeDJBQUQ7Ii0tPgorPCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KKzwh
LS1FTlRJVFkgYnVtcEUgIiYjeDJBQUU7Ii0tPgorPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0t
PgorPCEtLUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc0Vx
dWFsICImI3gyQUFGOyItLT4KKzwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgor
PCEtLUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2NlICImI3gyQUIw
OyItLT4KKzwhLS1FTlRJVFkgc3VjY2VxICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgU3VjY2Vl
ZHNFcXVhbCAiJiN4MkFCMDsiLS0+Cis8IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyIt
LT4KKzwhLS1FTlRJVFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBO
b3RTdWNjZWVkc0VxdWFsICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHByRSAiJiN4
MkFCMzsiLS0+Cis8IS0tRU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Cis8IS0tRU5USVRZIHBybkUg
IiYjeDJBQjU7Ii0tPgorPCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5U
SVRZIHNjbkUgIiYjeDJBQjY7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+
Cis8IS0tRU5USVRZIHByYXAgIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBwcmVjYXBwcm94ICIm
I3gyQUI3OyItLT4KKzwhLS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHN1
Y2NhcHByb3ggIiYjeDJBQjg7Ii0tPgorPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Cis8
IS0tRU5USVRZIHByZWNuYXBwcm94ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgc2NuYXAgIiYj
eDJBQkE7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5U
SVRZIFByICImI3gyQUJCOyItLT4KKzwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgorPCEtLUVO
VElUWSBzdWJkb3QgIiYjeDJBQkQ7Ii0tPgorPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0t
PgorPCEtLUVOVElUWSBzdWJwbHVzICImI3gyQUJGOyItLT4KKzwhLS1FTlRJVFkgc3VwcGx1cyAi
JiN4MkFDMDsiLS0+Cis8IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgorPCEtLUVOVElU
WSBzdXBtdWx0ICImI3gyQUMyOyItLT4KKzwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+
Cis8IS0tRU5USVRZIHN1cGVkb3QgIiYjeDJBQzQ7Ii0tPgorPCEtLUVOVElUWSBzdWJFICImI3gy
QUM1OyItLT4KKzwhLS1FTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KKzwhLS1FTlRJVFkg
bnN1YkUgIiYjeDJBQzU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFD
NTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkg
c3Vwc2V0ZXFxICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4
OyItLT4KKzwhLS1FTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBzdWJzaW0gIiYjeDJBQzc7Ii0tPgorPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0t
PgorPCEtLUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldG5lcXEg
IiYjeDJBQ0I7Ii0tPgorPCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8
IS0tRU5USVRZIHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZ
IHN1cG5FICImI3gyQUNDOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+
Cis8IS0tRU5USVRZIHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFy
c3Vwc2V0bmVxcSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3N1YiAiJiN4MkFD
RjsiLS0+Cis8IS0tRU5USVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgorPCEtLUVOVElUWSBjc3ViZSAi
JiN4MkFEMTsiLS0+Cis8IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KKzwhLS1FTlRJVFkg
c3Vic3VwICImI3gyQUQzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KKzwh
LS1FTlRJVFkgc3Vic3ViICImI3gyQUQ1OyItLT4KKzwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2
OyItLT4KKzwhLS1FTlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Cis8IS0tRU5USVRZIHN1cGRz
dWIgIiYjeDJBRDg7Ii0tPgorPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Cis8IS0tRU5U
SVRZIHRvcGZvcmsgIiYjeDJBREE7Ii0tPgorPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4K
KzwhLS1FTlRJVFkgRGFzaHYgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVl
ICImI3gyQUU0OyItLT4KKzwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KKzwhLS1FTlRJ
VFkgQmFydiAiJiN4MkFFNzsiLS0+Cis8IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgorPCEt
LUVOVElUWSB2QmFydiAiJiN4MkFFOTsiLS0+Cis8IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0t
PgorPCEtLUVOVElUWSBOb3QgIiYjeDJBRUM7Ii0tPgorPCEtLUVOVElUWSBiTm90ICImI3gyQUVE
OyItLT4KKzwhLS1FTlRJVFkgcm5taWQgIiYjeDJBRUU7Ii0tPgorPCEtLUVOVElUWSBjaXJtaWQg
IiYjeDJBRUY7Ii0tPgorPCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgorPCEtLUVOVElU
WSB0b3BjaXIgIiYjeDJBRjE7Ii0tPgorPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Cis8
IS0tRU5USVRZIHBhcnNpbSAiJiN4MkFGMzsiLS0+Cis8IS0tRU5USVRZIHBhcnNsICImI3gyQUZE
OyItLT4KKzwhLS1FTlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElU
WSBmZmxpZyAiJiN4RkIwMDsiLS0+Cis8IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KKzwh
LS1FTlRJVFkgZmxsaWcgIiYjeEZCMDI7Ii0tPgorPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7
Ii0tPgorPCEtLUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgorPCEtLUVOVElUWSBBc2NyICIm
I3gxRDQ5QzsiLS0+Cis8IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KKzwhLS1FTlRJVFkg
RHNjciAiJiN4MUQ0OUY7Ii0tPgorPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Cis8IS0t
RU5USVRZIEpzY3IgIiYjeDFENEE1OyItLT4KKzwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0t
PgorPCEtLUVOVElUWSBOc2NyICImI3gxRDRBOTsiLS0+Cis8IS0tRU5USVRZIE9zY3IgIiYjeDFE
NEFBOyItLT4KKzwhLS1FTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgorPCEtLUVOVElUWSBRc2Ny
ICImI3gxRDRBQzsiLS0+Cis8IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KKzwhLS1FTlRJ
VFkgVHNjciAiJiN4MUQ0QUY7Ii0tPgorPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Cis8
IS0tRU5USVRZIFZzY3IgIiYjeDFENEIxOyItLT4KKzwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7
Ii0tPgorPCEtLUVOVElUWSBYc2NyICImI3gxRDRCMzsiLS0+Cis8IS0tRU5USVRZIFlzY3IgIiYj
eDFENEI0OyItLT4KKzwhLS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgorPCEtLUVOVElUWSBh
c2NyICImI3gxRDRCNjsiLS0+Cis8IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KKzwhLS1F
TlRJVFkgY3NjciAiJiN4MUQ0Qjg7Ii0tPgorPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+
Cis8IS0tRU5USVRZIGZzY3IgIiYjeDFENEJCOyItLT4KKzwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0
QkQ7Ii0tPgorPCEtLUVOVElUWSBpc2NyICImI3gxRDRCRTsiLS0+Cis8IS0tRU5USVRZIGpzY3Ig
IiYjeDFENEJGOyItLT4KKzwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgorPCEtLUVOVElU
WSBsc2NyICImI3gxRDRDMTsiLS0+Cis8IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KKzwh
LS1FTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ii0tPgorPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsi
LS0+Cis8IS0tRU5USVRZIHFzY3IgIiYjeDFENEM2OyItLT4KKzwhLS1FTlRJVFkgcnNjciAiJiN4
MUQ0Qzc7Ii0tPgorPCEtLUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Cis8IS0tRU5USVRZIHRz
Y3IgIiYjeDFENEM5OyItLT4KKzwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgorPCEtLUVO
VElUWSB2c2NyICImI3gxRDRDQjsiLS0+Cis8IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4K
KzwhLS1FTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ii0tPgorPCEtLUVOVElUWSB5c2NyICImI3gxRDRD
RTsiLS0+Cis8IS0tRU5USVRZIHpzY3IgIiYjeDFENENGOyItLT4KKzwhLS1FTlRJVFkgQWZyICIm
I3gxRDUwNDsiLS0+Cis8IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgorPCEtLUVOVElUWSBE
ZnIgIiYjeDFENTA3OyItLT4KKzwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Cis8IS0tRU5U
SVRZIEZmciAiJiN4MUQ1MDk7Ii0tPgorPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KKzwh
LS1FTlRJVFkgSmZyICImI3gxRDUwRDsiLS0+Cis8IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0t
PgorPCEtLUVOVElUWSBMZnIgIiYjeDFENTBGOyItLT4KKzwhLS1FTlRJVFkgTWZyICImI3gxRDUx
MDsiLS0+Cis8IS0tRU5USVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgorPCEtLUVOVElUWSBPZnIgIiYj
eDFENTEyOyItLT4KKzwhLS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Cis8IS0tRU5USVRZIFFm
ciAiJiN4MUQ1MTQ7Ii0tPgorPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KKzwhLS1FTlRJ
VFkgVGZyICImI3gxRDUxNzsiLS0+Cis8IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgorPCEt
LUVOVElUWSBWZnIgIiYjeDFENTE5OyItLT4KKzwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+
Cis8IS0tRU5USVRZIFhmciAiJiN4MUQ1MUI7Ii0tPgorPCEtLUVOVElUWSBZZnIgIiYjeDFENTFD
OyItLT4KKzwhLS1FTlRJVFkgYWZyICImI3gxRDUxRTsiLS0+Cis8IS0tRU5USVRZIGJmciAiJiN4
MUQ1MUY7Ii0tPgorPCEtLUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KKzwhLS1FTlRJVFkgZGZy
ICImI3gxRDUyMTsiLS0+Cis8IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgorPCEtLUVOVElU
WSBmZnIgIiYjeDFENTIzOyItLT4KKzwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Cis8IS0t
RU5USVRZIGhmciAiJiN4MUQ1MjU7Ii0tPgorPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4K
KzwhLS1FTlRJVFkgamZyICImI3gxRDUyNzsiLS0+Cis8IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7
Ii0tPgorPCEtLUVOVElUWSBsZnIgIiYjeDFENTI5OyItLT4KKzwhLS1FTlRJVFkgbWZyICImI3gx
RDUyQTsiLS0+Cis8IS0tRU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgorPCEtLUVOVElUWSBvZnIg
IiYjeDFENTJDOyItLT4KKzwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Cis8IS0tRU5USVRZ
IHFmciAiJiN4MUQ1MkU7Ii0tPgorPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KKzwhLS1F
TlRJVFkgc2ZyICImI3gxRDUzMDsiLS0+Cis8IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgor
PCEtLUVOVElUWSB1ZnIgIiYjeDFENTMyOyItLT4KKzwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsi
LS0+Cis8IS0tRU5USVRZIHdmciAiJiN4MUQ1MzQ7Ii0tPgorPCEtLUVOVElUWSB4ZnIgIiYjeDFE
NTM1OyItLT4KKzwhLS1FTlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Cis8IS0tRU5USVRZIHpmciAi
JiN4MUQ1Mzc7Ii0tPgorPCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Cis8IS0tRU5USVRZ
IEJvcGYgIiYjeDFENTM5OyItLT4KKzwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgorPCEt
LUVOVElUWSBFb3BmICImI3gxRDUzQzsiLS0+Cis8IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyIt
LT4KKzwhLS1FTlRJVFkgR29wZiAiJiN4MUQ1M0U7Ii0tPgorPCEtLUVOVElUWSBJb3BmICImI3gx
RDU0MDsiLS0+Cis8IS0tRU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KKzwhLS1FTlRJVFkgS29w
ZiAiJiN4MUQ1NDI7Ii0tPgorPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Cis8IS0tRU5U
SVRZIE1vcGYgIiYjeDFENTQ0OyItLT4KKzwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgor
PCEtLUVOVElUWSBTb3BmICImI3gxRDU0QTsiLS0+Cis8IS0tRU5USVRZIFRvcGYgIiYjeDFENTRC
OyItLT4KKzwhLS1FTlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgorPCEtLUVOVElUWSBWb3BmICIm
I3gxRDU0RDsiLS0+Cis8IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KKzwhLS1FTlRJVFkg
WG9wZiAiJiN4MUQ1NEY7Ii0tPgorPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Cis8IS0t
RU5USVRZIGFvcGYgIiYjeDFENTUyOyItLT4KKzwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0t
PgorPCEtLUVOVElUWSBjb3BmICImI3gxRDU1NDsiLS0+Cis8IS0tRU5USVRZIGRvcGYgIiYjeDFE
NTU1OyItLT4KKzwhLS1FTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgorPCEtLUVOVElUWSBmb3Bm
ICImI3gxRDU1NzsiLS0+Cis8IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KKzwhLS1FTlRJ
VFkgaG9wZiAiJiN4MUQ1NTk7Ii0tPgorPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Cis8
IS0tRU5USVRZIGpvcGYgIiYjeDFENTVCOyItLT4KKzwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7
Ii0tPgorPCEtLUVOVElUWSBsb3BmICImI3gxRDU1RDsiLS0+Cis8IS0tRU5USVRZIG1vcGYgIiYj
eDFENTVFOyItLT4KKzwhLS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgorPCEtLUVOVElUWSBv
b3BmICImI3gxRDU2MDsiLS0+Cis8IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KKzwhLS1F
TlRJVFkgcW9wZiAiJiN4MUQ1NjI7Ii0tPgorPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+
Cis8IS0tRU5USVRZIHNvcGYgIiYjeDFENTY0OyItLT4KKzwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1
NjU7Ii0tPgorPCEtLUVOVElUWSB1b3BmICImI3gxRDU2NjsiLS0+Cis8IS0tRU5USVRZIHZvcGYg
IiYjeDFENTY3OyItLT4KKzwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgorPCEtLUVOVElU
WSB4b3BmICImI3gxRDU2OTsiLS0+Cis8IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KKzwh
LS1FTlRJVFkgem9wZiAiJiN4MUQ1NkI7Ii0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvZG93bmxvYWQucHkKaW5kZXggMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUz
ZGIzMC4uZjhiZTAzZWZiMjc1MGFkNzU0YzYwMzhmNzM0MWE5NzYxMjkxZGYyMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9kb3dubG9hZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGlm
IE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCiAgICAgZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5
cGluZyBpbXBvcnQgVGV4dAogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCkBA
IC01MCw5ICs1MSw5IEBAIGRlZiBzaG91bGRfZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWls
ZF90aW1lPXRpbWVkZWx0YShkYXlzPTUpKToKIAogCiBkZWYgbWVyZ2VfcHJfdGFncyhyZXBvX3Jv
b3QsIG1heF9jb3VudD01MCk6Ci0gICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3Rbc3RyXQor
ICAgICMgdHlwZTogKHN0ciwgaW50KSAtPiBMaXN0W1RleHRdCiAgICAgZ2l0ZnVuYyA9IGdpdChy
ZXBvX3Jvb3QpCi0gICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHRhZ3MgPSBb
XSAgIyB0eXBlOiBMaXN0W1RleHRdCiAgICAgaWYgZ2l0ZnVuYyBpcyBOb25lOgogICAgICAgICBy
ZXR1cm4gdGFncwogICAgIGZvciBsaW5lIGluIGdpdGZ1bmMoImxvZyIsICItLWZvcm1hdD0lRCIs
ICItLW1heC1jb3VudD0lcyIgJSBtYXhfY291bnQpLnNwbGl0KCJcbiIpOgpAQCAtNzksNyArODAs
NyBAQCBkZWYgc2NvcmVfbmFtZShuYW1lKToKIAogCiBkZWYgZ2l0aHViX3VybCh0YWdzKToKLSAg
ICAjIHR5cGU6IChMaXN0W3N0cl0pIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAjIHR5cGU6
IChMaXN0W1RleHRdKSAtPiBPcHRpb25hbFtMaXN0W1RleHRdXQogICAgIGZvciB0YWcgaW4gdGFn
czoKICAgICAgICAgdXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdC9yZWxlYXNlcy90YWdzLyVzIiAlIHRhZwogICAgICAgICB0cnk6CkBAIC0x
MTEsOCArMTEyLDggQEAgZGVmIGdpdGh1Yl91cmwodGFncyk6CiAKIGRlZiBkb3dubG9hZF9tYW5p
ZmVzdCgKICAgICAgICAgbWFuaWZlc3RfcGF0aCwgICMgdHlwZTogc3RyCi0gICAgICAgIHRhZ3Nf
ZnVuYywgICMgdHlwZTogQ2FsbGFibGVbW10sIExpc3Rbc3RyXV0KLSAgICAgICAgdXJsX2Z1bmMs
ICAjIHR5cGU6IENhbGxhYmxlW1tMaXN0W3N0cl1dLCBPcHRpb25hbFtMaXN0W3N0cl1dXQorICAg
ICAgICB0YWdzX2Z1bmMsICAjIHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W1RleHRdXQorICAgICAg
ICB1cmxfZnVuYywgICMgdHlwZTogQ2FsbGFibGVbW0xpc3RbVGV4dF1dLCBPcHRpb25hbFtMaXN0
W1RleHRdXV0KICAgICAgICAgZm9yY2U9RmFsc2UgICMgdHlwZTogYm9vbAogKToKICAgICAjIHR5
cGU6ICguLi4pIC0+IGJvb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRl
eCAxYzQwMzRhZDA1Zjk5YTI2MzE1OTAxYTE4YzhmNDAyZDVmYTY0YzEwLi5lZTA3ZjBkMWQ3OTcx
NzUzNzRiMTY5YTQ2OGI0YzJjODUwNTc5NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9pdGVtLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBjb3B5IGltcG9ydCBjb3B5CitpbXBvcnQg
b3MucGF0aAogZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiBmcm9tIHNpeCBpbXBvcnQg
aXRlcml0ZW1zLCB3aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luLCB1cmxwYXJzZQpAQCAtNjEsNiArNjEsMTEgQEAgY2xhc3MgTWFuaWZlc3RJ
dGVtKHdpdGhfbWV0YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKICAgICAgICAgIiIiVGhlIGl0
ZW0ncyB0eXBlIiIiCiAgICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXRo
X3BhcnRzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAg
ICAgICAgcmV0dXJuIHR1cGxlKHNlbGYucGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBk
ZWYga2V5KHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIi
IkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCkBAIC0xMDQsMTQgKzEwOSwxNCBA
QCBjbGFzcyBVUkxNYW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAg
dGVzdHNfcm9vdCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBl
OiBUZXh0CiAgICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAg
ICAgICAgICAgIHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5
cGU6IE9wdGlvbmFsW1RleHRdCiAgICAgICAgICAgICAgICAgICoqZXh0cmFzICAjIHR5cGU6IEFu
eQogICAgICAgICAgICAgICAgICApOgogICAgICAgICAjIHR5cGU6ICguLi4pIC0+IE5vbmUKICAg
ICAgICAgc3VwZXIoVVJMTWFuaWZlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19yb290LCBw
YXRoKQogICAgICAgICBhc3NlcnQgdXJsX2Jhc2VbMF0gPT0gIi8iCiAgICAgICAgIHNlbGYudXJs
X2Jhc2UgPSB1cmxfYmFzZQotICAgICAgICBhc3NlcnQgdXJsWzBdICE9ICIvIgorICAgICAgICBh
c3NlcnQgdXJsIGlzIE5vbmUgb3IgdXJsWzBdICE9ICIvIgogICAgICAgICBzZWxmLl91cmwgPSB1
cmwKICAgICAgICAgc2VsZi5fZXh0cmFzID0gZXh0cmFzCiAKQEAgLTEyMywyMCArMTI4LDI4IEBA
IGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiB1cmwoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAorICAgICAgICByZWxf
dXJsID0gc2VsZi5fdXJsIG9yIHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKQog
ICAgICAgICAjIHdlIGNhbiBvdXRwZXJmb3JtIHVybGpvaW4sIGJlY2F1c2Ugd2Uga25vdyB3ZSBq
dXN0IGhhdmUgcGF0aCByZWxhdGl2ZSBVUkxzCiAgICAgICAgIGlmIHNlbGYudXJsX2Jhc2UgPT0g
Ii8iOgotICAgICAgICAgICAgcmV0dXJuICIvIiArIHNlbGYuX3VybAotICAgICAgICByZXR1cm4g
dXJsam9pbihzZWxmLnVybF9iYXNlLCBzZWxmLl91cmwpCisgICAgICAgICAgICByZXR1cm4gIi8i
ICsgcmVsX3VybAorICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLCByZWxfdXJs
KQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6
ICgpIC0+IGJvb2wKICAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgu
cnNwbGl0KCIvIiwgMSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICgiaHR0
cHMiIGluIGZsYWdzIG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICAgICAgcmV0dXJu
ICJodHRwcyIgaW4gZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgaDIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAg
ICAgICBmbGFncyA9IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsx
XS5zcGxpdCgiLiIpWzE6LTFdKQorICAgICAgICByZXR1cm4gImgyIiBpbiBmbGFncwogCiAgICAg
ZGVmIHRvX2pzb24oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGlj
dFtBbnksIEFueV1dCi0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwge30pICAjIHR5cGU6IFR1cGxl
W1RleHQsIERpY3RbQW55LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlv
bmFsW1RleHRdLCBEaWN0W0FueSwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2Vs
Zi5fdXJsID09IHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKSBlbHNlIHNlbGYu
X3VybAorICAgICAgICBydiA9IChyZWxfdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxb
VGV4dF0sIERpY3RbQW55LCBBbnldXQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21l
dGhvZApAQCAtMTc3LDEzICsxOTAsMTggQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlm
ZXN0SXRlbSk6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAg
cmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQoImpzc2hlbGwiKQogCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIHF1aWMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQoInF1aWMiKQorCiAgICAgQHByb3BlcnR5CiAg
ICAgZGVmIHNjcmlwdF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRp
b25hbFtUZXh0XQogICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgic2NyaXB0X21ldGFk
YXRhIikKIAogICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1
cGxlW1RleHQsIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtP
cHRpb25hbFtUZXh0XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVyKFRlc3Ro
YXJuZXNzVGVzdCwgc2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBu
b3QgTm9uZToKICAgICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBA
IC0xOTEsMjMgKzIwOSwyNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVt
KToKICAgICAgICAgICAgIHJ2Wy0xXVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAg
ICAgICAgIGlmIHNlbGYuanNzaGVsbDoKICAgICAgICAgICAgIHJ2Wy0xXVsianNzaGVsbCJdID0g
VHJ1ZQorICAgICAgICBpZiBzZWxmLnF1aWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBydlst
MV1bInF1aWMiXSA9IHNlbGYucXVpYwogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToK
LSAgICAgICAgICAgIHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBzZWxmLnNjcmlwdF9tZXRh
ZGF0YQorICAgICAgICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IFsoaywgdikgZm9y
IChrLHYpIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhXQogICAgICAgICByZXR1cm4gcnYKIAogCi1j
bGFzcyBSZWZUZXN0QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgorY2xhc3MgUmVmVGVzdChVUkxNYW5p
ZmVzdEl0ZW0pOgogICAgIF9fc2xvdHNfXyA9ICgicmVmZXJlbmNlcyIsKQogCisgICAgaXRlbV90
eXBlID0gInJlZnRlc3QiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAg
ICAgdGVzdHNfcm9vdCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0
eXBlOiBUZXh0CiAgICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAg
ICAgICAgICAgICAgIHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAj
IHR5cGU6IE9wdGlvbmFsW1RleHRdCiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9Tm9uZSwg
ICMgdHlwZTogT3B0aW9uYWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgICAgICAg
ICAgICoqZXh0cmFzICAjIHR5cGU6IEFueQogICAgICAgICAgICAgICAgICApOgotICAgICAgICBz
dXBlcihSZWZUZXN0QmFzZSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jh
c2UsIHVybCwgKipleHRyYXMpCisgICAgICAgIHN1cGVyKFJlZlRlc3QsIHNlbGYpLl9faW5pdF9f
KHRlc3RzX3Jvb3QsIHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0cmFzKQogICAgICAgICBpZiBy
ZWZlcmVuY2VzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlZmVyZW5jZXMgPSBbXSAgIyB0
eXBlOiBMaXN0W1R1cGxlW1RleHQsIFRleHRdXQogICAgICAgICBlbHNlOgpAQCAtMjQ3LDggKzI2
OSw5IEBAIGNsYXNzIFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVy
biBydgogCiAgICAgZGVmIHRvX2pzb24oc2VsZik6ICAjIHR5cGU6IGlnbm9yZQotICAgICAgICAj
IHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1Rl
eHQsIEFueV1dCi0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkg
ICMgdHlwZTogVHVwbGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwg
QW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5v
bmUgaWYgc2VsZi5fdXJsID09IHNlbGYucGF0aCBlbHNlIHNlbGYuX3VybAorICAgICAgICBydiA9
IChyZWxfdXJsLCBzZWxmLnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtU
ZXh0XSwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAg
ZXh0cmFzID0gcnZbLTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIGV4dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0yNjYsNyArMjg5
LDcgQEAgY2xhc3MgUmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAg
ICAgIHBhdGgsICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgIG9iaiAgIyB0eXBlOiBU
dXBsZVtUZXh0LCBMaXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtBbnksIEFueV1dCiAgICAg
ICAgICAgICAgICAgICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFJlZlRlc3RCYXNlCisg
ICAgICAgICMgdHlwZTogKC4uLikgLT4gUmVmVGVzdAogICAgICAgICB0ZXN0c19yb290ID0gbWFu
aWZlc3QudGVzdHNfcm9vdAogICAgICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBub3QgTm9uZQog
ICAgICAgICBwYXRoID0gdG9fb3NfcGF0aChwYXRoKQpAQCAtMjc4LDM4ICszMDEsNiBAQCBjbGFz
cyBSZWZUZXN0QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgKipleHRyYXMpCiAKLSAgICBkZWYgdG9fUmVmVGVz
dChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Ci0gICAgICAgIGlmIHR5cGUo
c2VsZikgPT0gUmVmVGVzdDoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJl
ZlRlc3QpCi0gICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikK
LSAgICAgICAgcnYuX19jbGFzc19fID0gUmVmVGVzdAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShydiwgUmVmVGVzdCkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgdG9fUmVmVGVzdE5v
ZGUoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdE5vZGUKLSAgICAgICAgaWYg
dHlwZShzZWxmKSA9PSBSZWZUZXN0Tm9kZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNl
KHNlbGYsIFJlZlRlc3ROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYg
PSBjb3B5KHNlbGYpCi0gICAgICAgIHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3ROb2RlCi0gICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHJ2LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0K
LQotY2xhc3MgUmVmVGVzdE5vZGUoUmVmVGVzdEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0K
LSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdF9ub2RlIgotCi0KLWNsYXNzIFJlZlRlc3QoUmVmVGVz
dEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIK
LQogCiBjbGFzcyBNYW51YWxUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0g
KCkKQEAgLTM1MSw3ICszNDIsNyBAQCBjbGFzcyBXZWJEcml2ZXJTcGVjVGVzdChVUkxNYW5pZmVz
dEl0ZW0pOgogICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAKICAg
ICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBE
aWN0W1RleHQsIEFueV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4
dF0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVz
dCwgc2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToK
ICAgICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCAyYWQ3ZmNjZjQ4Njc1YmRjYzdi
NTQ0NzQ3ZTFkMTgyNGE1OTg1NDJmLi4zNDVlZWI2ZDJiMGJlZWIzY2UzYzEzOTA5NDljYjllMmQx
OWE0MzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKQEAg
LTEsMTUgKzEsMjUgQEAKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGpzb24K
IGltcG9ydCBvcwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIGRlZmF1
bHRkaWN0Ci1mcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywg
c3RyaW5nX3R5cGVzLCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCitmcm9tIGNvcHkgaW1wb3J0IGRl
ZXBjb3B5Citmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbCwgY3B1X2NvdW50Citmcm9t
IHNpeCBpbXBvcnQgKAorICAgIFBZMywKKyAgICBiaW5hcnlfdHlwZSwKKyAgICBlbnN1cmVfdGV4
dCwKKyAgICBpdGVyaXRlbXMsCisgICAgaXRlcnZhbHVlcywKKyAgICBzdHJpbmdfdHlwZXMsCisg
ICAgdGV4dF90eXBlLAorKQogCiBmcm9tIC4gaW1wb3J0IHZjcwotZnJvbSAuaXRlbSBpbXBvcnQg
KENvbmZvcm1hbmNlQ2hlY2tlclRlc3QsIE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVz
dCwgUmVmVGVzdE5vZGUsCi0gICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIFRlc3RoYXJu
ZXNzVGVzdCwgVmlzdWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKK2Zyb20g
Lml0ZW0gaW1wb3J0IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVh
bFRlc3QsIFJlZlRlc3QsIFN1cHBvcnRGaWxlLAorICAgICAgICAgICAgICAgICAgIFRlc3RoYXJu
ZXNzVGVzdCwgVmlzdWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKIGZyb20g
LmxvZyBpbXBvcnQgZ2V0X2xvZ2dlcgogZnJvbSAuc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmls
ZQotZnJvbSAudXRpbHMgaW1wb3J0IGZyb21fb3NfcGF0aCwgdG9fb3NfcGF0aAorZnJvbSAudHlw
ZWRhdGEgaW1wb3J0IFR5cGVEYXRhCiAKIE1ZUFkgPSBGYWxzZQogaWYgTVlQWToKQEAgLTE5LDE2
ICsyOSwxNCBAQCBpZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWluZXIKICAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgRGljdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJTwotICAg
IGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVy
YXRvcgotICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IEl0ZXJhYmxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IFNldAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IFR1cGxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5
cGluZyBpbXBvcnQgVW5pb24KLSAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAogCiB0cnk6CiAg
ICAgaW1wb3J0IHVqc29uCkBAIC0zNiw3ICs0NCw3IEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKICAgICBmYXN0X2pzb24gPSBqc29uICAjIHR5cGU6IGlnbm9yZQogCi1DVVJSRU5UX1ZFUlNJ
T04gPSA3CitDVVJSRU5UX1ZFUlNJT04gPSA4ICAjIHR5cGU6IGludAogCiAKIGNsYXNzIE1hbmlm
ZXN0RXJyb3IoRXhjZXB0aW9uKToKQEAgLTQ5LDcgKzU3LDYgQEAgY2xhc3MgTWFuaWZlc3RWZXJz
aW9uTWlzbWF0Y2goTWFuaWZlc3RFcnJvcik6CiAKIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5l
c3MiOiBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBSZWZUZXN0
LAotICAgICAgICAgICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKICAgICAgICAg
ICAgICAgICAiY3Jhc2h0ZXN0IjogQ3Jhc2hUZXN0LAogICAgICAgICAgICAgICAgICJtYW51YWwi
OiBNYW51YWxUZXN0LAogICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZWJEcml2ZXJTcGVjVGVz
dCwKQEAgLTU4LDE1NiArNjUsMTIgQEAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRl
c3RoYXJuZXNzVGVzdCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IFN1cHBvcnRGaWxlfSAg
IyB0eXBlOiBEaWN0W3N0ciwgVHlwZVtNYW5pZmVzdEl0ZW1dXQogCiAKLWlmIE1ZUFk6Ci0gICAg
VHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi1l
bHNlOgotICAgIFR5cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCi0KLWNsYXNzIFR5cGVEYXRh
KFR5cGVEYXRhVHlwZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmlmZXN0LCB0eXBlX2Ns
cyk6Ci0gICAgICAgICMgdHlwZTogKE1hbmlmZXN0LCBUeXBlW01hbmlmZXN0SXRlbV0pIC0+IE5v
bmUKLSAgICAgICAgIiIiRGljdC1saWtlIG9iamVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMg
Zm9yIGVhY2ggdGVzdCB0eXBlLgotCi0gICAgICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xh
c3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vzc2FyaWx5Ci0gICAgICAgIHNsb3csIHNvIHRoaXMg
Y2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAotICAgICAgICBpdGVtcy4gV2hl
biB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSByYXcganNvbgotICAgICAgICBj
b3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCi0g
ICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJl
bWFpbgotICAgICAgICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBv
biBnZXR0aW5nIGFuIEl0ZW0KLSAgICAgICAgZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBs
b2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGluZwotICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIK
LSAgICAgICAgc2VsZi5tYW5pZmVzdCA9IG1hbmlmZXN0Ci0gICAgICAgIHNlbGYudHlwZV9jbHMg
PSB0eXBlX2NscwotICAgICAgICBzZWxmLmpzb25fZGF0YSA9IHt9ICAjIHR5cGU6IE9wdGlvbmFs
W0RpY3RbVGV4dCwgTGlzdFtBbnldXV0KLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gTm9uZSAg
IyB0eXBlOiBPcHRpb25hbFtzdHJdCi0gICAgICAgIHNlbGYuZGF0YSA9IHt9ICAjIHR5cGU6IERp
Y3RbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwg
a2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W01hbmlmZXN0SXRlbV0KLSAgICAg
ICAgaWYga2V5IG5vdCBpbiBzZWxmLmRhdGEgYW5kIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5sb2FkKGtleSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtr
ZXldCi0KLSAgICBkZWYgX19ub256ZXJvX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
Ym9vbAotICAgICAgICByZXR1cm4gYm9vbChzZWxmLmRhdGEpIG9yIGJvb2woc2VsZi5qc29uX2Rh
dGEpCi0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQK
LSAgICAgICAgcnYgPSBsZW4oc2VsZi5kYXRhKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHJ2ICs9IGxlbihzZWxmLmpzb25fZGF0YSkKLSAgICAg
ICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAg
IyB0eXBlOiAoVGV4dCkgLT4gTm9uZQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAg
ICAgICAgICAgZGVsIHNlbGYuZGF0YVtrZXldCi0gICAgICAgIGVsaWYgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbZnJvbV9vc19wYXRo
KGtleSldCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcgotCi0gICAg
ZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0
LCBTZXRbTWFuaWZlc3RJdGVtXSkgLT4gTm9uZQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAg
ICAgICAgaWYgcGF0aCBpbiBzZWxmLmpzb25fZGF0YToKLSAgICAgICAgICAgICAgICBkZWwgc2Vs
Zi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQotCi0gICAg
ZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJv
b2wKLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5k
YXRhCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gSXRl
cmF0b3JbVGV4dF0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBzZWxm
LmRhdGEuX19pdGVyX18oKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMg
dHlwZTogKCkgLT4gSXRlcmF0b3JbU2V0W01hbmlmZXN0SXRlbV1dCi0gICAgICAgIHNlbGYubG9h
ZF9hbGwoKQotICAgICAgICByZXR1cm4gaXRlcnZhbHVlcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYg
aXRlcml0ZW1zKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1Rl
eHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAg
IHJldHVybiBpdGVyaXRlbXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0W1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICByZXR1
cm4gbGlzdChzZWxmLml0ZXJ2YWx1ZXMoKSkKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAg
ICAgIyB0eXBlOiAoKSAtPiBMaXN0W1R1cGxlW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAg
ICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKLQotICAgIGRlZiBsb2FkKHNlbGYs
IGtleSk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBh
IHNwZWNpZmljIEl0ZW0gZ2l2ZW4gYSBwYXRoIiIiCi0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRh
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YSA9IHNldCgpCi0gICAgICAgICAgICBwYXRo
ID0gZnJvbV9vc19wYXRoKGtleSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9k
YXRhLmdldChwYXRoLCBbXSk6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYu
dHlwZV9jbHMuZnJvbV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAg
ICAgICAgZGF0YS5hZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlF
cnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9
IGRhdGEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLQotICAg
IGRlZiBsb2FkX2FsbChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCi0gICAgICAg
ICIiIkxvYWQgYWxsIHRlc3QgaXRlbXMgaW4gdGhpcyBjbGFzcyIiIgotICAgICAgICBpZiBzZWxm
Lmpzb25fZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBwYXRoLCB2YWx1ZSBpbiBp
dGVyaXRlbXMoc2VsZi5qc29uX2RhdGEpOgotICAgICAgICAgICAgICAgIGtleSA9IHRvX29zX3Bh
dGgocGF0aCkKLSAgICAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAg
ICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRoLCBbXSk6Ci0gICAg
ICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xzLmZyb21fanNvbihz
ZWxmLm1hbmlmZXN0LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBkYXRhLmFkZCht
YW5pZmVzdF9pdGVtKQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAg
ICAgICAgICAgc2VsZi5qc29uX2RhdGEgPSBOb25lCi0KLSAgICBkZWYgc2V0X2pzb24oc2VsZiwg
dGVzdHNfcm9vdCwgZGF0YSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnld
KSAtPiBOb25lCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgotICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigiR290IGEgJXMgZXhwZWN0ZWQgYSBkaWN0IiAlICh0eXBl
KGRhdGEpKSkKLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAotICAgICAgICBz
ZWxmLmpzb25fZGF0YSA9IGRhdGEKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAj
IHR5cGU6ICgpIC0+IERpY3RbVGV4dCwgQW55XQotICAgICAgICBkYXRhID0gewotICAgICAgICAg
ICAgZnJvbV9vc19wYXRoKHBhdGgpOgotICAgICAgICAgICAgW3QgZm9yIHQgaW4gc29ydGVkKHRl
c3QudG9fanNvbigpIGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAgICAgIGZvciBwYXRoLCB0
ZXN0cyBpbiBpdGVyaXRlbXMoc2VsZi5kYXRhKQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgc2Vs
Zi5qc29uX2RhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAg
ICAgICAgICAgICAjIGF2b2lkIGNvcHlpbmcgaWYgdGhlcmUncyBub3RoaW5nIGhlcmUgeWV0Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuanNvbl9kYXRhCi0gICAgICAgICAgICBkYXRhLnVw
ZGF0ZShzZWxmLmpzb25fZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHBh
dGhzKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0XQotICAgICAgICAiIiJH
ZXQgYSBsaXN0IG9mIGFsbCBwYXRocyBjb250YWluaW5nIGl0ZW1zIG9mIHRoaXMgdHlwZSwKLSAg
ICAgICAgd2l0aG91dCBhY3R1YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgotICAg
ICAgICBydiA9IHNldChpdGVya2V5cyhzZWxmLmRhdGEpKQotICAgICAgICBpZiBzZWxmLmpzb25f
ZGF0YToKLSAgICAgICAgICAgIHJ2IHw9IHt0b19vc19wYXRoKGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJrZXlzKHNlbGYuanNvbl9kYXRhKX0KLSAgICAgICAgcmV0dXJuIHJ2Ci0KK2RlZiBjb21wdXRl
X21hbmlmZXN0X2l0ZW1zKHNvdXJjZV9maWxlKToKKyAgICAjIHR5cGU6IChTb3VyY2VGaWxlKSAt
PiBUdXBsZVtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF0K
KyAgICByZWxfcGF0aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgbmV3
X3R5cGUsIG1hbmlmZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQorICAg
IGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2gKKyAgICByZXR1cm4gcmVsX3BhdGhfcGFydHMs
IG5ld190eXBlLCBzZXQobWFuaWZlc3RfaXRlbXMpLCBmaWxlX2hhc2gKIAogaWYgTVlQWToKICAg
ICBNYW5pZmVzdERhdGFUeXBlID0gRGljdFtBbnksIFR5cGVEYXRhXQpAQCAtMjM3LDE3ICsxMDAs
MjUgQEAgY2xhc3MgTWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0YVR5cGUpOgogICAgICAgICB3aXRo
b3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCiAgICAgICAgIHJ2ID0g
c2V0KCkgICMgdHlwZTogU2V0W1RleHRdCiAgICAgICAgIGZvciBpdGVtX2RhdGEgaW4gaXRlcnZh
bHVlcyhzZWxmKToKLSAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0aHMoKSkKKyAg
ICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydi5hZGQo
b3MucGF0aC5zZXAuam9pbihpdGVtKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgdHlw
ZV9ieV9wYXRoKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVHVwbGVbVGV4dCwg
Li4uXSwgc3RyXQorICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBpdGVtX3R5cGUsIGl0ZW1f
ZGF0YSBpbiBpdGVyaXRlbXMoc2VsZik6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtX2Rh
dGE6CisgICAgICAgICAgICAgICAgcnZbaXRlbV0gPSBpdGVtX3R5cGUKKyAgICAgICAgcmV0dXJu
IHJ2CisKKwogCiBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0ZXN0c19yb290PU5vbmUsIHVybF9iYXNlPSIvIik6CiAgICAgICAgICMgdHlwZTogKE9wdGlv
bmFsW3N0cl0sIFRleHQpIC0+IE5vbmUKICAgICAgICAgYXNzZXJ0IHVybF9iYXNlIGlzIG5vdCBO
b25lCi0gICAgICAgIHNlbGYuX3BhdGhfaGFzaCA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgVHVw
bGVbVGV4dCwgVGV4dF1dCiAgICAgICAgIHNlbGYuX2RhdGEgPSBNYW5pZmVzdERhdGEoc2VsZikg
ICMgdHlwZTogTWFuaWZlc3REYXRhCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJs
ID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRl
c3ROb2RlXV1dCiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTog
T3B0aW9uYWxbc3RyXQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UgICMgdHlwZTog
VGV4dAogCkBAIC0yNTgsNDcgKzEyOSwzNCBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAg
IGRlZiBpdGVydHlwZXMoc2VsZiwgKnR5cGVzKToKICAgICAgICAgIyB0eXBlOiAoKnN0cikgLT4g
SXRlcmF0b3JbVHVwbGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCiAgICAgICAgIGZv
ciBpdGVtX3R5cGUgaW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMoKSkpOgotICAg
ICAgICAgICAgZm9yIHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBlXSk6CisgICAg
ICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl9kYXRhW2l0ZW1fdHlwZV06CisgICAgICAgICAgICAg
ICAgc3RyX3BhdGggPSBvcy5zZXAuam9pbihwYXRoKQogICAgICAgICAgICAgICAgIHRlc3RzID0g
c2VsZi5fZGF0YVtpdGVtX3R5cGVdW3BhdGhdCi0gICAgICAgICAgICAgICAgeWllbGQgaXRlbV90
eXBlLCBwYXRoLCB0ZXN0cworICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgc3RyX3Bh
dGgsIHRlc3RzCiAKICAgICBkZWYgaXRlcnBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgICMgdHlw
ZTogKFRleHQpIC0+IEl0ZXJhdG9yW01hbmlmZXN0SXRlbV0KKyAgICAgICAgIyB0eXBlOiAoVGV4
dCkgLT4gSXRlcmFibGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKHBhdGgu
c3BsaXQob3MucGF0aC5zZXApKQorCiAgICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2Rh
dGEudmFsdWVzKCk6Ci0gICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQocGF0aCwgc2V0KCkp
CisgICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQodHBhdGgsIHNldCgpKQogICAgICAgICAg
ICAgYXNzZXJ0IGkgaXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciB0ZXN0IGluIGk6CiAgICAg
ICAgICAgICAgICAgeWllbGQgdGVzdAogCiAgICAgZGVmIGl0ZXJkaXIoc2VsZiwgZGlyX25hbWUp
OgotICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCi0gICAg
ICAgIGlmIG5vdCBkaXJfbmFtZS5lbmRzd2l0aChvcy5wYXRoLnNlcCk6Ci0gICAgICAgICAgICBk
aXJfbmFtZSA9IGRpcl9uYW1lICsgb3MucGF0aC5zZXAKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkg
LT4gSXRlcmFibGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKGRpcl9uYW1l
LnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICAgICAgdHBhdGhfbGVuID0gbGVuKHRwYXRoKQorCiAg
ICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6Ci0gICAgICAgICAg
ICBmb3IgcGF0aCwgdGVzdHMgaW4gdHlwZV90ZXN0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAg
ICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoZGlyX25hbWUpOgorICAgICAgICAgICAgZm9yIHBhdGgs
IHRlc3RzIGluIGl0ZXJpdGVtcyh0eXBlX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBwYXRo
Wzp0cGF0aF9sZW5dID09IHRwYXRoOgogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0
ZXN0czoKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAotICAgIEBwcm9wZXJ0
eQotICAgIGRlZiByZWZ0ZXN0X25vZGVzX2J5X3VybChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV0KLSAgICAgICAgaWYg
c2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIGJ5X3VybCA9
IHt9Ci0gICAgICAgICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJp
dGVtcyhzZWxmLl9kYXRhWyJyZWZ0ZXN0Il0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0p
KToKLSAgICAgICAgICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKLSAgICAg
ICAgICAgICAgICAgICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKLSAgICAgICAgICAgIHNlbGYu
X3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gYnlfdXJsCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWZ0
ZXN0X25vZGVzX2J5X3VybAotCi0gICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKLSAg
ICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQotICAgICAgICBy
ZXR1cm4gc2VsZi5yZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQotCi0gICAgZGVmIHVwZGF0
ZShzZWxmLCB0cmVlKToKLSAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291
cmNlRmlsZSwgYnl0ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHRy
ZWUsIHBhcmFsbGVsPVRydWUpOgorICAgICAgICAjIHR5cGU6IChJdGVyYWJsZVtUdXBsZVtVbmlv
bltTb3VyY2VGaWxlLCBieXRlc10sIGJvb2xdXSwgYm9vbCkgLT4gYm9vbAogICAgICAgICAiIiJV
cGRhdGUgdGhlIG1hbmlmZXN0IGdpdmVuIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIHRoYXQgbWFrZSB1
cCB0aGUgdXBkYXRlZCBtYW5pZmVzdC4KIAogICAgICAgICBUaGUgaXRlcmFibGUgbXVzdCBlaXRo
ZXIgZ2VuZXJhdGUgdHVwbGVzIG9mIHRoZSBmb3JtIChTb3VyY2VGaWxlLCBUcnVlKSBmb3IgcGF0
aHMKQEAgLTMwNiwxNzAgKzE2NCwxMjcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAg
ICAgdW51c3VhbCBBUEkgaXMgZGVzaWduZWQgYXMgYW4gb3B0aW1pc3RhaW9uIG1lYW5pbmcgdGhh
dCBTb3VyY2VGaWxlIGl0ZW1zIG5lZWQgbm90IGJlCiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRo
ZSBjYXNlIHdlIGFyZSBub3QgdXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4g
aXRlbSBmcm9tCiAgICAgICAgIHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVm
dW5jdCBlbnRyaWVzIGZyb20gdGhlIG1hbmlmZXN0LiIiIgotICAgICAgICBhbGxfcmVmdGVzdF9u
b2RlcyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbTWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAg
ICAgc2Vlbl9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgICAgIGNoYW5n
ZWQgPSBGYWxzZQotICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBGYWxzZQogCiAgICAgICAgICMg
Q3JlYXRlIGxvY2FsIHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZv
aWQgdGhlCiAgICAgICAgICMgYXR0cmlidXRlIGFjY2VzcyBpbiB0aGUgaG90IGxvb3AgYmVsb3cK
LSAgICAgICAgcGF0aF9oYXNoID0gc2VsZi5fcGF0aF9oYXNoICAjIHR5cGU6IERpY3RbVGV4dCwg
VHVwbGVbVGV4dCwgVGV4dF1dCiAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhCiAKLSAgICAgICAg
cHJldl9maWxlcyA9IGRhdGEucGF0aHMoKSAgIyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgdHlw
ZXMgPSBkYXRhLnR5cGVfYnlfcGF0aCgpCisgICAgICAgIGRlbGV0ZWQgPSBzZXQodHlwZXMpCiAK
LSAgICAgICAgcmVmdGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorICAg
ICAgICB0b191cGRhdGUgPSBbXQogCi0gICAgICAgIGZvciBzb3VyY2VfZmlsZSwgdXBkYXRlIGlu
IHRyZWU6CisgICAgICAgIGZvciBzb3VyY2VfZmlsZV9vcl9wYXRoLCB1cGRhdGUgaW4gdHJlZToK
ICAgICAgICAgICAgIGlmIG5vdCB1cGRhdGU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2Uoc291cmNlX2ZpbGUsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKLSAgICAgICAgICAg
ICAgICByZWxfcGF0aCA9IHNvdXJjZV9maWxlICAjIHR5cGU6IFRleHQKLSAgICAgICAgICAgICAg
ICBzZWVuX2ZpbGVzLmFkZChyZWxfcGF0aCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVsX3Bh
dGggaW4gcGF0aF9oYXNoCi0gICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0
aF9oYXNoW3JlbF9wYXRoXSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBUZXh0XQotICAgICAgICAgICAg
ICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIG1h
bmlmZXN0X2l0ZW1zID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdICAjIHR5cGU6IEl0ZXJhYmxl
W01hbmlmZXN0SXRlbV0KLSAgICAgICAgICAgICAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMuZXh0
ZW5kKChpdGVtLCBvbGRfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90
eXBlLCB0ZXh0X3R5cGUpKQorICAgICAgICAgICAgICAgIHBhdGggPSBlbnN1cmVfdGV4dChzb3Vy
Y2VfZmlsZV9vcl9wYXRoKQorICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHR1cGxlKHBh
dGguc3BsaXQob3MucGF0aC5zZXApKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCBieXRlcykKLSAgICAgICAgICAg
ICAgICByZWxfcGF0aCA9IHNvdXJjZV9maWxlLnJlbF9wYXRoCi0gICAgICAgICAgICAgICAgc2Vl
bl9maWxlcy5hZGQocmVsX3BhdGgpCi0KLSAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3Vy
Y2VfZmlsZS5oYXNoICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlz
aW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKQor
ICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gc291cmNlX2ZpbGVfb3JfcGF0aAorICAgICAg
ICAgICAgICAgIHJlbF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3BhdGhfcGFydHMKKyAg
ICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZWxfcGF0aF9wYXJ0cywgdHVwbGUpCiAK
LSAgICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aCBub3QgaW4gcGF0aF9oYXNoICAjIHR5
cGU6IGJvb2wKKyAgICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aF9wYXJ0cyBub3QgaW4g
ZGVsZXRlZCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gRmFs
c2UgICMgdHlwZTogYm9vbAogCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAg
ICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQor
ICAgICAgICAgICAgICAgICAgICBkZWxldGVkLnJlbW92ZShyZWxfcGF0aF9wYXJ0cykKKyAgICAg
ICAgICAgICAgICAgICAgb2xkX3R5cGUgPSB0eXBlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAg
ICAgICAgICAgICAgb2xkX2hhc2ggPSBkYXRhW29sZF90eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFy
dHNdCisgICAgICAgICAgICAgICAgICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMg
dHlwZTogVGV4dAogICAgICAgICAgICAgICAgICAgICBpZiBvbGRfaGFzaCAhPSBmaWxlX2hhc2g6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3Vy
Y2VfZmlsZS5tYW5pZmVzdF9pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2No
YW5nZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSAhPSBvbGRf
dHlwZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVs
X3BhdGhdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVz
dF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2Vz
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3X3R5cGUgPSBvbGRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5
cGUgaW4gcmVmdGVzdF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVz
dF9pdGVtcyA9IGRhdGFbb2xkX3R5cGVdW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgICAgIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9m
aWxlLm1hbmlmZXN0X2l0ZW1zKCkKLQotICAgICAgICAgICAgICAgIGlmIG5ld190eXBlIGluIHJl
ZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVu
ZCgoaXRlbSwgZmlsZV9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVzdF9pdGVtcykKLSAgICAgICAg
ICAgICAgICAgICAgaWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZnRlc3RfY2hhbmdlcyA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzX25l
dyBvciBoYXNoX2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3Jl
bF9wYXRoXSA9IHNldChtYW5pZmVzdF9pdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
bCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICAgICAgICAgIGlmIGlz
X25ldyBvciBoYXNoX2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfaGFzaFtyZWxf
cGF0aF0gPSAoZmlsZV9oYXNoLCBuZXdfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLmFwcGVuZChzb3VyY2VfZmls
ZSkKKworICAgICAgICBpZiB0b191cGRhdGU6CisgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQor
CisgICAgICAgIGlmIHBhcmFsbGVsIGFuZCBsZW4odG9fdXBkYXRlKSA+IDI1IGFuZCBjcHVfY291
bnQoKSA+IDE6CisgICAgICAgICAgICAjIDI1IGRlcml2ZWQgZXhwZXJpbWVudGFsbHkgKDIwMjAt
MDEpIHRvIGJlIGFwcHJveGltYXRlbHkKKyAgICAgICAgICAgICMgdGhlIHBvaW50IGF0IHdoaWNo
IGl0IGlzIHF1aWNrZXIgdG8gY3JlYXRlIFBvb2wgYW5kCisgICAgICAgICAgICAjIHBhcmFsbGVs
aXplIHRoaXMKKyAgICAgICAgICAgIHBvb2wgPSBQb29sKCkKKworICAgICAgICAgICAgIyBjaHVu
a3NpemUgc2V0ID4gMSB3aGVuIG1vcmUgdGhhbiAxMDAwMCB0ZXN0cywgYmVjYXVzZQorICAgICAg
ICAgICAgIyBjaHVua2luZyBpcyBhIG5ldC1nYWluIG9uY2Ugd2UgZ2V0IHRvIHZlcnkgbGFyZ2Ug
bnVtYmVycworICAgICAgICAgICAgIyBvZiBpdGVtcyAoYWdhaW4sIGV4cGVyaW1lbnRhbGx5LCAy
MDIwLTAxKQorICAgICAgICAgICAgcmVzdWx0cyA9IHBvb2wuaW1hcF91bm9yZGVyZWQoY29tcHV0
ZV9tYW5pZmVzdF9pdGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvX3VwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNodW5rc2l6ZT1tYXgoMSwgbGVuKHRvX3VwZGF0ZSkgLy8gMTAwMDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAjIHR5cGU6IEl0ZXJhdG9yW1R1cGxlW1R1
cGxlW1RleHQsIC4uLl0sIFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dLCBUZXh0XV0KKyAgICAgICAg
ZWxpZiBQWTM6CisgICAgICAgICAgICByZXN1bHRzID0gbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRl
bXMsIHRvX3VwZGF0ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBpdGVy
dG9vbHMuaW1hcChjb21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCisKKyAgICAgICAg
Zm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMsIG5ld190
eXBlLCBtYW5pZmVzdF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0CisgICAgICAgICAgICBkYXRh
W25ld190eXBlXVtyZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9pdGVtcworICAgICAgICAgICAg
ZGF0YVtuZXdfdHlwZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9IGZpbGVfaGFzaAogCi0gICAg
ICAgIGRlbGV0ZWQgPSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcwogICAgICAgICBpZiBkZWxldGVk
OgogICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgIGZvciByZWxfcGF0aCBp
biBkZWxldGVkOgotICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKLSAg
ICAgICAgICAgICAgICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAg
IGRlbCBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Rh
dGEgaW4gaXRlcnZhbHVlcyhkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9w
YXRoIGluIHRlc3RfZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9k
YXRhW3JlbF9wYXRoXQotCi0gICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKLSAgICAgICAgICAg
IHJlZnRlc3RzLCByZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVf
cmVmdGVzdHMoYWxsX3JlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBk
YXRhWyJyZWZ0ZXN0Il0KLSAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCi0gICAgICAg
ICAgICBmb3IgcGF0aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKLSAgICAgICAgICAg
ICAgICBpZiBNWVBZOgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBj
YXN0KFNldFtNYW5pZmVzdEl0ZW1dLCBpdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcwotCi0gICAgICAgICAg
ICByZWZ0ZXN0X25vZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCi0gICAgICAgICAgICBy
ZWZ0ZXN0X25vZGVfZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2Rl
X2l0ZW1zIGluIGl0ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKLSAgICAgICAgICAgICAgICBpZiBN
WVBZOgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0g
Y2FzdChTZXRbTWFuaWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKLSAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9k
ZV9pdGVtcwotCi0gICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVzKQor
ICAgICAgICAgICAgZm9yIHJlbF9wYXRoX3BhcnRzIGluIGRlbGV0ZWQ6CisgICAgICAgICAgICAg
ICAgZm9yIHRlc3RfZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgorICAgICAgICAgICAgICAgICAg
ICBpZiByZWxfcGF0aF9wYXJ0cyBpbiB0ZXN0X2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRoX3BhcnRzXQogCiAgICAgICAgIHJldHVybiBjaGFuZ2Vk
CiAKLSAgICBkZWYgX2NvbXB1dGVfcmVmdGVzdHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVmdGVzdF9ub2RlcyAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4
dF1dCi0gICAgICAgICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikg
LT4gVHVwbGVbRGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dLCBEaWN0W1RleHQsIFNldFtSZWZUZXN0
Tm9kZV1dLCBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXV0KLSAgICAgICAgc2VsZi5fcmVm
dGVzdF9ub2Rlc19ieV91cmwgPSB7fQotICAgICAgICBoYXNfaW5ib3VuZCA9IHNldCgpCi0gICAg
ICAgIGZvciBpdGVtLCBfIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgZm9yIHJl
Zl91cmwsIHJlZl90eXBlIGluIGl0ZW0ucmVmZXJlbmNlczoKLSAgICAgICAgICAgICAgICBoYXNf
aW5ib3VuZC5hZGQocmVmX3VybCkKLQotICAgICAgICByZWZ0ZXN0cyA9IGRlZmF1bHRkaWN0KHNl
dCkgICMgdHlwZTogRGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dCi0gICAgICAgIHJlZmVyZW5jZXMg
PSBkZWZhdWx0ZGljdChzZXQpICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0K
LSAgICAgICAgY2hhbmdlZF9oYXNoZXMgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1Rl
eHQsIFRleHRdXQotCi0gICAgICAgIGZvciBpdGVtLCBmaWxlX2hhc2ggaW4gcmVmdGVzdF9ub2Rl
czoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVm
VGVzdCkpCi0gICAgICAgICAgICBpZiBpdGVtLnVybCBpbiBoYXNfaW5ib3VuZDoKLSAgICAgICAg
ICAgICAgICAjIFRoaXMgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKGl0ZW0sIFJlZlRlc3QpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19S
ZWZUZXN0Tm9kZSgpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0
aF0gPSAoZmlsZV9oYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGl0ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3Rh
bmNlKGl0ZW0sIFJlZlRlc3ROb2RlKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5w
YXRoXS5hZGQoaXRlbSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShpdGVtLCBSZWZUZXN0Tm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBp
dGVtLnRvX1JlZlRlc3QoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVt
LnBhdGhdID0gKGZpbGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCBSZWZUZXN0KQotICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0
aF0uYWRkKGl0ZW0pCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVz
dE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxb
aXRlbS51cmxdID0gaXRlbQotCi0gICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywg
Y2hhbmdlZF9oYXNoZXMKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6
ICgpIC0+IERpY3RbVGV4dCwgQW55XQorICAgIGRlZiB0b19qc29uKHNlbGYsIGNhbGxlcl9vd25z
X29iaj1UcnVlKToKKyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCisg
ICAgICAgICIiIkR1bXAgYSBtYW5pZmVzdCBpbnRvIGEgb2JqZWN0IHdoaWNoIGNhbiBiZSBzZXJp
YWxpemVkIGFzIEpTT04KKworICAgICAgICBJZiBjYWxsZXJfb3duc19vYmogaXMgRmFsc2UsIHRo
ZW4gdGhlIHJldHVybiB2YWx1ZSByZW1haW5zCisgICAgICAgIG93bmVkIGJ5IHRoZSBtYW5pZmVz
dDsgaXQgaXMgX3ZpdGFsbHkgaW1wb3J0YW50XyB0aGF0IF9ub18KKyAgICAgICAgKGV2ZW4gcmVh
ZCkgb3BlcmF0aW9uIGlzIGRvbmUgb24gdGhlIG1hbmlmZXN0LCBhcyBvdGhlcndpc2UKKyAgICAg
ICAgb2JqZWN0cyB3aXRoaW4gdGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQgdGhlIHJldHVybiB2
YWx1ZSBjYW4KKyAgICAgICAgYmUgbXV0YXRlZC4gVGhpcyBlc3NlbnRpYWxseSBtYWtlcyB0aGlz
IG1vZGUgdmVyeSBkYW5nZXJvdXMKKyAgICAgICAgYW5kIG9ubHkgdG8gYmUgdXNlZCB1bmRlciBl
eHRyZW1lIGNhcmUuCisKKyAgICAgICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAg
ICAgICAgIHRlc3RfdHlwZTogdHlwZV9wYXRocy50b19qc29uKCkKICAgICAgICAgICAgIGZvciB0
ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0
aHMKICAgICAgICAgfQorCisgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKKyAgICAgICAgICAg
IG91dF9pdGVtcyA9IGRlZXBjb3B5KG91dF9pdGVtcykKKwogICAgICAgICBydiA9IHsidXJsX2Jh
c2UiOiBzZWxmLnVybF9iYXNlLAotICAgICAgICAgICAgICAicGF0aHMiOiB7ZnJvbV9vc19wYXRo
KGspOiB2IGZvciBrLCB2IGluIGl0ZXJpdGVtcyhzZWxmLl9wYXRoX2hhc2gpfSwKICAgICAgICAg
ICAgICAgIml0ZW1zIjogb3V0X2l0ZW1zLAogICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJF
TlRfVkVSU0lPTn0gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgog
CiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9i
aiwgdHlwZXM9Tm9uZSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBP
cHRpb25hbFtDb250YWluZXJbVGV4dF1dKSAtPiBNYW5pZmVzdAorICAgIGRlZiBmcm9tX2pzb24o
Y2xzLCB0ZXN0c19yb290LCBvYmosIHR5cGVzPU5vbmUsIGNhbGxlZV9vd25zX29iaj1GYWxzZSk6
CisgICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250YWlu
ZXJbVGV4dF1dLCBib29sKSAtPiBNYW5pZmVzdAorICAgICAgICAiIiJMb2FkIGEgbWFuaWZlc3Qg
ZnJvbSBhIEpTT04gb2JqZWN0CisKKyAgICAgICAgVGhpcyBsb2FkcyBhIG1hbmlmZXN0IGZvciBh
IGdpdmVuIGxvY2FsIHRlc3Rfcm9vdCBwYXRoIGZyb20gYW4KKyAgICAgICAgb2JqZWN0IG9iaiwg
cG90ZW50aWFsbHkgcGFydGlhbGx5IGxvYWRpbmcgaXQgdG8gb25seSBsb2FkIHRoZQorICAgICAg
ICB0eXBlcyBnaXZlbiBieSB0eXBlcy4KKworICAgICAgICBJZiBjYWxsZWVfb3duc19vYmogaXMg
VHJ1ZSwgdGhlbiBvd25lcnNoaXAgb2Ygb2JqIHRyYW5zZmVycworICAgICAgICB0byB0aGlzIGZ1
bmN0aW9uIHdoZW4gY2FsbGVkLCBhbmQgdGhlIGNhbGxlciBtdXN0IG5ldmVyIG11dGF0ZQorICAg
ICAgICB0aGUgb2JqIG9yIGFueXRoaW5nIHJlZmVycmVkIHRvIGluIHRoZSBvYmplY3QgZ3JhcGgg
cm9vdGVkIGF0CisgICAgICAgIG9iai4KKworICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9
IG9iai5nZXQoInZlcnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lP
TjoKICAgICAgICAgICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKICAgICAgICAg
c2VsZiA9IGNscyh0ZXN0c19yb290LCB1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikp
Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIikgYW5kIGhhc2F0dHIob2JqLCAi
cGF0aHMiKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKToKICAgICAgICAg
ICAgIHJhaXNlIE1hbmlmZXN0RXJyb3IKIAotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7dG9f
b3NfcGF0aChrKTogdiBmb3IgaywgdiBpbiBpdGVyaXRlbXMob2JqWyJwYXRocyJdKX0KLQogICAg
ICAgICBmb3IgdGVzdF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0p
OgogICAgICAgICAgICAgaWYgdGVzdF90eXBlIG5vdCBpbiBpdGVtX2NsYXNzZXM6CiAgICAgICAg
ICAgICAgICAgcmFpc2UgTWFuaWZlc3RFcnJvcgpAQCAtNDc3LDcgKzI5MiwxMCBAQCBjbGFzcyBN
YW5pZmVzdChvYmplY3QpOgogICAgICAgICAgICAgaWYgdHlwZXMgYW5kIHRlc3RfdHlwZSBub3Qg
aW4gdHlwZXM6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2VsZi5f
ZGF0YVt0ZXN0X3R5cGVdLnNldF9qc29uKHRlc3RzX3Jvb3QsIHR5cGVfcGF0aHMpCisgICAgICAg
ICAgICBpZiBub3QgY2FsbGVlX293bnNfb2JqOgorICAgICAgICAgICAgICAgIHR5cGVfcGF0aHMg
PSBkZWVwY29weSh0eXBlX3BhdGhzKQorCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlw
ZV0uc2V0X2pzb24odHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC01MTEs
MTAgKzMyOSwxMSBAQCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0
ICVzIiAlIG1hbmlmZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFu
aWZlc3QsICJyYiIpIGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLm9wZW4obWFuaWZlc3QsICJy
IiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBydiA9IE1hbmlmZXN0
LmZyb21fanNvbih0ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhc3RfanNvbi5sb2FkKGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxlZV9vd25zX29iaj1UcnVlKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAg
ICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTIzLDcg
KzM0Miw4IEBAIGRlZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgIGVsc2U6CiAg
ICAgICAgIHJ2ID0gTWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsZWVfb3duc19vYmo9VHJ1ZSkKIAogICAgIGlmIGFsbG93X2NhY2hlZDoKICAgICAgICAgX19s
b2FkX2NhY2hlW21hbmlmZXN0X3BhdGhdID0gcnYKQEAgLTU0MCw3ICszNjAsOCBAQCBkZWYgbG9h
ZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAgICAgICAgICAgICAgICAg
ICAgIHdvcmtpbmdfY29weT1UcnVlLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAg
IHR5cGVzPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KICAgICAgICAg
ICAgICAgICAgICAgd3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAotICAgICAgICAg
ICAgICAgICAgICBhbGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAg
ICAgICAgIGFsbG93X2NhY2hlZD1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAg
ICAgIHBhcmFsbGVsPVRydWUgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICApOgog
ICAgICMgdHlwZTogKC4uLikgLT4gTWFuaWZlc3QKICAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkK
QEAgLTU2OCw3ICszODksNyBAQCBkZWYgbG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5
cGU6IGJ5dGVzCiAgICAgaWYgcmVidWlsZCBvciB1cGRhdGU6CiAgICAgICAgIHRyZWUgPSB2Y3Mu
Z2V0X3RyZWUodGVzdHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNhY2hlX3Jvb3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAg
ICAgICBjaGFuZ2VkID0gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgICAgIGNoYW5nZWQgPSBt
YW5pZmVzdC51cGRhdGUodHJlZSwgcGFyYWxsZWwpCiAgICAgICAgIGlmIHdyaXRlX21hbmlmZXN0
IGFuZCBjaGFuZ2VkOgogICAgICAgICAgICAgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgp
CiAgICAgICAgIHRyZWUuZHVtcF9jYWNoZXMoKQpAQCAtNTgxLDkgKzQwMiw5IEBAIGRlZiB3cml0
ZShtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCk6CiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5h
bWUobWFuaWZlc3RfcGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgog
ICAgICAgICBvcy5tYWtlZGlycyhkaXJfbmFtZSkKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0
aCwgIndiIikgYXMgZjoKKyAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInciKSBhcyBmOgog
ICAgICAgICAjIFVzZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0
byBwcmV2ZW50IHRyYWlsaW5nCiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9u
Lm9yZy8yL2xpYnJhcnkvanNvbi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFu
aWZlc3QudG9fanNvbigpLCBmLAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihj
YWxsZXJfb3duc19vYmo9VHJ1ZSksIGYsCiAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1
ZSwgaW5kZW50PTEsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCiAgICAgICAgIGYud3JpdGUoIlxu
IikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQppbmRleCBi
OWRjYzhmNTM2MzZkM2RiODBlNDUxOGY3ZDgzODAyN2YwOThhOGQ3Li4yOTlhZDIxMmY3NjgwZTc1
MTc1MDU2NjdjNmUwOWJkNjBlZDBiN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9zb3VyY2VmaWxlLnB5CkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgaGFzaGxpYgogaW1wb3J0
IHJlCiBpbXBvcnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHNpeCBp
bXBvcnQgYmluYXJ5X3R5cGUsIFBZMworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBlbnN1
cmVfdGV4dCwgaXRlcml0ZW1zLCB0ZXh0X3R5cGUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJz
ZSBpbXBvcnQgdXJsam9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTMzLDcg
KzMzLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogaW1wb3J0IGh0bWw1bGliCiAKIGZyb20gLiBp
bXBvcnQgWE1MUGFyc2VyCi1mcm9tIC5pdGVtIGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxU
ZXN0LCBXZWJEcml2ZXJTcGVjVGVzdCwgUmVmVGVzdE5vZGUsIFRlc3RoYXJuZXNzVGVzdCwKK2Zy
b20gLml0ZW0gaW1wb3J0IChNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNU
ZXN0LCBSZWZUZXN0LCBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgU3VwcG9y
dEZpbGUsIENyYXNoVGVzdCwgQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgVmlzdWFsVGVzdCkKIGZy
b20gLnV0aWxzIGltcG9ydCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hlZF9wcm9wZXJ0eQog
CkBAIC01Niw5ICs1Niw5IEBAIGRlZiByZXBsYWNlX2VuZChzLCBvbGQsIG5ldyk6CiAKIAogZGVm
IHJlYWRfc2NyaXB0X21ldGFkYXRhKGYsIHJlZ2V4cCk6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8s
IFBhdHRlcm5bYnl0ZXNdKSAtPiBJdGVyYWJsZVtUdXBsZVtieXRlcywgYnl0ZXNdXQorICAgICMg
dHlwZTogKEJpbmFyeUlPLCBQYXR0ZXJuW2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbVGV4dCwg
VGV4dF1dCiAgICAgIiIiCi0gICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0
cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAorICAgIFlpZWxkcyBhbnkgbWV0
YWRhdGEgKHBhaXJzIG9mIHN0cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAog
ICAgIGFzIHNwZWNpZmllZCBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCiAKICAgICBg
cmVnZXhwYCAtIFJlZ2V4cCBjb250YWluaW5nIHR3byBncm91cHMgY29udGFpbmluZyB0aGUgbWV0
YWRhdGEgbmFtZSBhbmQKQEAgLTcwLDI3ICs3MCwyNSBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRh
dGEoZiwgcmVnZXhwKToKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBicmVhawogCi0g
ICAgICAgIHlpZWxkIChtLmdyb3VwcygpWzBdLCBtLmdyb3VwcygpWzFdKQorICAgICAgICB5aWVs
ZCAobS5ncm91cHMoKVswXS5kZWNvZGUoInV0ZjgiKSwgbS5ncm91cHMoKVsxXS5kZWNvZGUoInV0
ZjgiKSkKIAogCiBfYW55X3ZhcmlhbnRzID0gewotICAgIGIiZGVmYXVsdCI6IHsibG9uZ2hhbmQi
OiB7YiJ3aW5kb3ciLCBiImRlZGljYXRlZHdvcmtlciJ9fSwKLSAgICBiIndpbmRvdyI6IHsic3Vm
Zml4IjogIi5hbnkuaHRtbCJ9LAotICAgIGIic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMi
OiBUcnVlfSwKLSAgICBiInNoYXJlZHdvcmtlciI6IHt9LAotICAgIGIiZGVkaWNhdGVkd29ya2Vy
IjogeyJzdWZmaXgiOiAiLmFueS53b3JrZXIuaHRtbCJ9LAotICAgIGIid29ya2VyIjogeyJsb25n
aGFuZCI6IHtiImRlZGljYXRlZHdvcmtlciIsIGIic2hhcmVkd29ya2VyIiwgYiJzZXJ2aWNld29y
a2VyIn19LAotICAgIGIianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKLX0gICMgdHlw
ZTogRGljdFtieXRlcywgRGljdFtzdHIsIEFueV1dCisgICAgIndpbmRvdyI6IHsic3VmZml4Ijog
Ii5hbnkuaHRtbCJ9LAorICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9
LAorICAgICJzaGFyZWR3b3JrZXIiOiB7fSwKKyAgICAiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZm
aXgiOiAiLmFueS53b3JrZXIuaHRtbCJ9LAorICAgICJ3b3JrZXIiOiB7ImxvbmdoYW5kIjogeyJk
ZWRpY2F0ZWR3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIifX0sCisgICAg
Impzc2hlbGwiOiB7InN1ZmZpeCI6ICIuYW55LmpzIn0sCit9ICAjIHR5cGU6IERpY3RbVGV4dCwg
RGljdFtUZXh0LCBBbnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgotICAgICMg
dHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1Rl
eHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3Mp
IGRlZmluZWQgYnkgdGhlIGdpdmVuIGtleXdvcmQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJp
YW50cyAoc3RyaW5ncykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KICAgICAiIiIKLSAg
ICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCBiaW5hcnlfdHlwZSksIGl0ZW0KLSAgICBhc3NlcnQg
bm90IGl0ZW0uc3RhcnRzd2l0aChiIiEiKSwgaXRlbQorICAgIGFzc2VydCBpc2luc3RhbmNlKGl0
ZW0sIHRleHRfdHlwZSksIGl0ZW0KIAogICAgIHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzLmdldChp
dGVtLCBOb25lKQogICAgIGlmIHZhcmlhbnQgaXMgTm9uZToKQEAgLTEwMCw0OCArOTgsNDYgQEAg
ZGVmIGdldF9hbnlfdmFyaWFudHMoaXRlbSk6CiAKIAogZGVmIGdldF9kZWZhdWx0X2FueV92YXJp
YW50cygpOgotICAgICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKCkgLT4g
U2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0
cmluZ3MpIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCisgICAgUmV0dXJucyBhIHNldCBv
ZiB2YXJpYW50cyAoc3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KICAgICAi
IiIKLSAgICByZXR1cm4gc2V0KF9hbnlfdmFyaWFudHNbYiJkZWZhdWx0Il1bImxvbmdoYW5kIl0p
CisgICAgcmV0dXJuIHNldCh7IndpbmRvdyIsICJkZWRpY2F0ZWR3b3JrZXIifSkKIAogCiBkZWYg
cGFyc2VfdmFyaWFudHModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNd
CisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBh
IHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgYSBjb21tYS1zZXBhcmF0
ZWQgdmFsdWUuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5ncykgZGVmaW5l
ZCBieSBhIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0
YW5jZSh2YWx1ZSwgYmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHZh
bHVlLCB0ZXh0X3R5cGUpLCB2YWx1ZQogCi0gICAgZ2xvYmFscyA9IGdldF9kZWZhdWx0X2FueV92
YXJpYW50cygpCisgICAgaWYgdmFsdWUgPT0gIiI6CisgICAgICAgIHJldHVybiBnZXRfZGVmYXVs
dF9hbnlfdmFyaWFudHMoKQogCi0gICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIik6Cisg
ICAgZ2xvYmFscyA9IHNldCgpCisgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoIiwiKToKICAg
ICAgICAgaXRlbSA9IGl0ZW0uc3RyaXAoKQotICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoYiIh
Iik6Ci0gICAgICAgICAgICBnbG9iYWxzIC09IGdldF9hbnlfdmFyaWFudHMoaXRlbVsxOl0pCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRl
bSkKLQorICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKICAgICByZXR1
cm4gZ2xvYmFscwogCiAKIGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgotICAgICMgdHlwZTog
KGJ5dGVzKSAtPiBTZXRbVHVwbGVbYnl0ZXMsIGJvb2xdXQorICAgICMgdHlwZTogKFRleHQpIC0+
IFNldFtUdXBsZVtUZXh0LCBib29sXV0KICAgICAiIiIKICAgICBZaWVsZHMgdHVwbGVzIG9mIHRo
ZSByZWxldmFudCBmaWxlbmFtZSBzdWZmaXggKGEgc3RyaW5nKSBhbmQgd2hldGhlciB0aGUKICAg
ICB2YXJpYW50IGlzIGludGVuZGVkIHRvIHJ1biBpbiBhIEpTIHNoZWxsLCBmb3IgdGhlIHZhcmlh
bnRzIGRlZmluZWQgYnkgdGhlCiAgICAgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAg
ICIiIgotICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKICAgICBydiA9
IHNldCgpCiAKICAgICBnbG9iYWxfdHlwZXMgPSBwYXJzZV92YXJpYW50cyh2YWx1ZSkKICAgICBm
b3IgZ2xvYmFsX3R5cGUgaW4gZ2xvYmFsX3R5cGVzOgogICAgICAgICB2YXJpYW50ID0gX2FueV92
YXJpYW50c1tnbG9iYWxfdHlwZV0KLSAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZp
eCIsICIuYW55LiVzLmh0bWwiICUgZ2xvYmFsX3R5cGUuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAg
ICBydi5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gYiJqc3NoZWxsIikpCisgICAgICAgIHN1
ZmZpeCA9IHZhcmlhbnQuZ2V0KCJzdWZmaXgiLCAiLmFueS4lcy5odG1sIiAlIGdsb2JhbF90eXBl
KQorICAgICAgICBydi5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gImpzc2hlbGwiKSkKIAog
ICAgIHJldHVybiBydgogCkBAIC0xNTYsNiArMTUyLDggQEAgZGVmIGdsb2JhbF92YXJpYW50X3Vy
bCh1cmwsIHN1ZmZpeCk6CiAgICAgIyB0aGUgZm9ybSAuaHR0cHMuYW55LmpzCiAgICAgaWYgIi5o
dHRwcy4iIGluIHVybCBhbmQgc3VmZml4LnN0YXJ0c3dpdGgoIi5odHRwcy4iKToKICAgICAgICAg
dXJsID0gdXJsLnJlcGxhY2UoIi5odHRwcy4iLCAiLiIpCisgICAgZWxpZiAiLmgyLiIgaW4gdXJs
IGFuZCBzdWZmaXguc3RhcnRzd2l0aCgiLmgyLiIpOgorICAgICAgICB1cmwgPSB1cmwucmVwbGFj
ZSgiLmgyLiIsICIuIikKICAgICByZXR1cm4gcmVwbGFjZV9lbmQodXJsLCAiLmpzIiwgc3VmZml4
KQogCiAKQEAgLTE5MiwyNCArMTkwLDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFyY2hpdmUiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMgdHlwZTogU2V0W1R1cGxl
W2J5dGVzLCAuLi5dXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9w
YXRoLCB1cmxfYmFzZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToKLSAgICAgICAgIyB0eXBl
OiAoQW55U3RyLCBBbnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNd
KSAtPiBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoX3N0
ciwgdXJsX2Jhc2UsIGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6CisgICAgICAgICMgdHlwZTog
KEFueVN0ciwgQW55U3RyLCBUZXh0LCBPcHRpb25hbFtUZXh0XSwgT3B0aW9uYWxbYnl0ZXNdKSAt
PiBOb25lCiAgICAgICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291cmNl
IHRyZWUuCiAKICAgICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBhdGggdG8gdGhlIHJvb3Qgb2Yg
dGhlIHNvdXJjZSB0cmVlCi0gICAgICAgIDpwYXJhbSByZWxfcGF0aDogRmlsZSBwYXRoIHJlbGF0
aXZlIHRvIHRlc3RzX3Jvb3QKKyAgICAgICAgOnBhcmFtIHJlbF9wYXRoX3N0cjogRmlsZSBwYXRo
IHJlbGF0aXZlIHRvIHRlc3RzX3Jvb3QKICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIFVS
TCB1c2VkIHdoZW4gY29udmVydGluZyBmaWxlIHBhdGhzIHRvIHVybHMKICAgICAgICAgOnBhcmFt
IGNvbnRlbnRzOiBCeXRlIGFycmF5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBgYE5v
bmVgYC4KICAgICAgICAgIiIiCiAKKyAgICAgICAgcmVsX3BhdGggPSBlbnN1cmVfdGV4dChyZWxf
cGF0aF9zdHIpCiAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5pc2FicyhyZWxfcGF0aCksIHJl
bF9wYXRoCi0KICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgIyBkbyBz
bGFzaCBub3JtYWxpemF0aW9uIG9uIFdpbmRvd3MKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
cmVsX3BhdGgsIGJpbmFyeV90eXBlKToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHJlbF9w
YXRoLnJlcGxhY2UoYiIvIiwgYiJcXCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHJlbF9wYXRoID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKKyAgICAgICAgICAg
IHJlbF9wYXRoID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAogICAgICAgICBkaXJf
cGF0aCwgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQogICAgICAgICBuYW1lLCBl
eHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQpAQCAtMjIwLDEzICsyMTUsMTMgQEAgY2xh
c3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0
KCIuIilbMTpdCiAKLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdCAgIyB0eXBl
OiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5yZWxfcGF0aCA9IHJlbF9wYXRoICAj
IHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmRpcl9wYXRoID0gZGlyX3Bh
dGggICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBm
aWxlbmFtZSAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5uYW1lID0g
bmFtZSAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5leHQgPSBleHQg
ICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlw
ZV9mbGFnICAjIHR5cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0XV0KKyAgICAgICAgc2Vs
Zi50ZXN0c19yb290ID0gZW5zdXJlX3RleHQodGVzdHNfcm9vdCkgICMgdHlwZTogVGV4dAorICAg
ICAgICBzZWxmLnJlbF9wYXRoID0gcmVsX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxm
LmRpcl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmZpbGVuYW1l
ID0gZmlsZW5hbWUgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5
cGU6IFRleHQKKyAgICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVGV4dAorICAgICAgICBz
ZWxmLnR5cGVfZmxhZyA9IHR5cGVfZmxhZyAgIyB0eXBlOiBPcHRpb25hbFtUZXh0XQogICAgICAg
ICBzZWxmLm1ldGFfZmxhZ3MgPSBtZXRhX2ZsYWdzICAjIHR5cGU6IFVuaW9uW0xpc3RbYnl0ZXNd
LCBMaXN0W1RleHRdXQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKICAgICAgICAg
c2VsZi5jb250ZW50cyA9IGNvbnRlbnRzCkBAIC0yNDAsOSArMjM1LDcgQEAgY2xhc3MgU291cmNl
RmlsZShvYmplY3QpOgogCiAgICAgICAgIGlmICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHJ2
OgogICAgICAgICAgICAgY2FjaGVkX3Byb3BlcnRpZXMgPSBydlsiX19jYWNoZWRfcHJvcGVydGll
c19fIl0KLSAgICAgICAgICAgIGZvciBrZXkgaW4gcnYua2V5cygpOgotICAgICAgICAgICAgICAg
IGlmIGtleSBpbiBjYWNoZWRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHJ2
W2tleV0KKyAgICAgICAgICAgIHJ2ID0ge2tleTp2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVy
aXRlbXMocnYpIGlmIGtleSBub3QgaW4gY2FjaGVkX3Byb3BlcnRpZXN9CiAgICAgICAgICAgICBk
ZWwgcnZbIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyJdCiAgICAgICAgIHJldHVybiBydgogCkBAIC0y
NzksOSArMjcyLDE0IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgIGZp
bGVfb2JqID0gb3BlbihzZWxmLnBhdGgsICdyYicpCiAgICAgICAgIHJldHVybiBmaWxlX29iagog
CisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiByZWxfcGF0aF9wYXJ0cyhzZWxmKToKKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJldHVybiB0dXBs
ZShzZWxmLnJlbF9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKwogICAgIEBjYWNoZWRfcHJvcGVy
dHkKICAgICBkZWYgcGF0aChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBVbmlvbltieXRl
cywgVGV4dF0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CiAgICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oc2VsZi50ZXN0c19yb290LCBzZWxmLnJlbF9wYXRoKQogCiAgICAgQGNhY2hlZF9w
cm9wZXJ0eQpAQCAtMjk3LDE3ICsyOTUsMTMgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgog
CiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgotICAgICAgICAjIHR5
cGU6ICgpIC0+IGJ5dGVzCisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBpZiBu
b3Qgc2VsZi5faGFzaDoKICAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKCkgYXMgZjoKICAgICAg
ICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKIAogICAgICAgICAgICAgZGF0YSA9IGIiIi5q
b2luKChiImJsb2IgIiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKLSAg
ICAgICAgICAgIGhhc2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5
cGU6IHN0cgotICAgICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2gg
PSBoYXNoX3N0ci5lbmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5faGFzaCA9IGhhc2hfc3RyCisgICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4
dF90eXBlKGhhc2hsaWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSkKIAogICAgICAgICByZXR1cm4g
c2VsZi5faGFzaAogCkBAIC0zMTYsMTggKzMxMCwxNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVj
dCk6CiAgICAgICAgIGlmIHNlbGYuZGlyX3BhdGggPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQogCi0gICAgICAgIHBhcnRzID0gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkK
KyAgICAgICAgcGFydHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCiAKICAgICAgICAgaWYgKHBhcnRz
WzBdIGluIHNlbGYucm9vdF9kaXJfbm9uX3Rlc3Qgb3IKICAgICAgICAgICAgIGFueShpdGVtIGlu
IHNlbGYuZGlyX25vbl90ZXN0IGZvciBpdGVtIGluIHBhcnRzKSBvcgotICAgICAgICAgICAgYW55
KHBhcnRzWzpsZW4ocGF0aCldID09IGxpc3QocGF0aCkgZm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0
aF9ub25fdGVzdCkpOgorICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4ocGF0aCldID09IHBhdGgg
Zm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0aF9ub25fdGVzdCkpOgogICAgICAgICAgICAgcmV0dXJu
IFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaW5fY29uZm9ybWFuY2VfY2hl
Y2tlcl9kaXIoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICByZXR1
cm4gKHNlbGYuZGlyX3BhdGggPT0gImNvbmZvcm1hbmNlLWNoZWNrZXJzIiBvcgotICAgICAgICAg
ICAgICAgIHNlbGYuZGlyX3BhdGguc3RhcnRzd2l0aCgiY29uZm9ybWFuY2UtY2hlY2tlcnMiICsg
b3MucGF0aC5zZXApKQorICAgICAgICByZXR1cm4gc2VsZi5yZWxfcGF0aF9wYXJ0c1swXSA9PSAi
Y29uZm9ybWFuY2UtY2hlY2tlcnMiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19u
b25fdGVzdChzZWxmKToKQEAgLTMzOSw2ICszMzIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9PSAiTUVUQS55bWwiIG9yCiAgICAg
ICAgICAgICAgICAgc2VsZi5maWxlbmFtZS5zdGFydHN3aXRoKCIuIikgb3IKICAgICAgICAgICAg
ICAgICBzZWxmLmZpbGVuYW1lLmVuZHN3aXRoKCIuaGVhZGVycyIpIG9yCisgICAgICAgICAgICAg
ICAgc2VsZi5maWxlbmFtZS5lbmRzd2l0aCgiLmluaSIpIG9yCiAgICAgICAgICAgICAgICAgc2Vs
Zi5pbl9ub25fdGVzdF9kaXIoKSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzk0LDEwICszODgsMTAg
QEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICBiZSBhIHdlYmRyaXZlciBzcGVj
IHRlc3QgZmlsZSIiIgogICAgICAgICAjIHdkc3BlYyB0ZXN0cyBhcmUgaW4gc3ViZGlyZWN0b3Jp
ZXMgb2YgL3dlYmRyaXZlciBleGNsdWRpbmcgX19pbml0X18ucHkKICAgICAgICAgIyBmaWxlcy4K
LSAgICAgICAgcmVsX2Rpcl90cmVlID0gc2VsZi5yZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkK
LSAgICAgICAgcmV0dXJuICgoKHJlbF9kaXJfdHJlZVswXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVu
KHJlbF9kaXJfdHJlZSkgPiAxKSBvcgotICAgICAgICAgICAgICAgICAocmVsX2Rpcl90cmVlWzoy
XSA9PSBbImluZnJhc3RydWN0dXJlIiwgIndlYmRyaXZlciJdIGFuZAotICAgICAgICAgICAgICAg
ICAgbGVuKHJlbF9kaXJfdHJlZSkgPiAyKSkgYW5kCisgICAgICAgIHJlbF9wYXRoX3BhcnRzID0g
c2VsZi5yZWxfcGF0aF9wYXJ0cworICAgICAgICByZXR1cm4gKCgocmVsX3BhdGhfcGFydHNbMF0g
PT0gIndlYmRyaXZlciIgYW5kIGxlbihyZWxfcGF0aF9wYXJ0cykgPiAxKSBvcgorICAgICAgICAg
ICAgICAgICAocmVsX3BhdGhfcGFydHNbOjJdID09ICgiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJp
dmVyIikgYW5kCisgICAgICAgICAgICAgICAgICBsZW4ocmVsX3BhdGhfcGFydHMpID4gMikpIGFu
ZAogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgbm90IGluICgiX19pbml0X18ucHkiLCAi
Y29uZnRlc3QucHkiKSBhbmQKICAgICAgICAgICAgICAgICBmbm1hdGNoKHNlbGYuZmlsZW5hbWUs
IHdkX3BhdHRlcm4pKQogCkBAIC00MTMsNiArNDA3LDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2Jq
ZWN0KToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiBzZWxmLnR5
cGVfZmxhZyA9PSAiY3Jhc2giIG9yICJjcmFzaHRlc3RzIiBpbiBzZWxmLmRpcl9wYXRoLnNwbGl0
KG9zLnBhdGguc2VwKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWVfaXNfdGVudGF0aXZl
KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgIiIiQ2hlY2sgaWYg
dGhlIGZpbGUgbmFtZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0byBiZSBh
CisgICAgICAgIHRlbnRhdGl2ZSBmaWxlLgorCisgICAgICAgIFNlZSBodHRwczovL3dlYi1wbGF0
Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9maWxlLW5hbWVzLmh0bWwjdGVzdC1mZWF0dXJl
cyIiIgorICAgICAgICByZXR1cm4gInRlbnRhdGl2ZSIgaW4gc2VsZi5tZXRhX2ZsYWdzCisKICAg
ICBAcHJvcGVydHkKICAgICBkZWYgbWFya3VwX3R5cGUoc2VsZik6CiAgICAgICAgICMgdHlwZTog
KCkgLT4gT3B0aW9uYWxbVGV4dF0KQEAgLTQ2NSw3ICs0NjgsNyBAQCBjbGFzcyBTb3VyY2VGaWxl
KG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNjcmlwdF9tZXRhZGF0
YShzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW2J5dGVz
LCBieXRlc11dXQorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4
dCwgVGV4dF1dXQogICAgICAgICBpZiBzZWxmLm5hbWVfaXNfd29ya2VyIG9yIHNlbGYubmFtZV9p
c19tdWx0aV9nbG9iYWwgb3Igc2VsZi5uYW1lX2lzX3dpbmRvdzoKICAgICAgICAgICAgIHJlZ2V4
cCA9IGpzX21ldGFfcmUKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfd2ViZHJpdmVyOgpAQCAt
NDgyLDcgKzQ4NSw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgIiIiVGhl
IHRpbWVvdXQgb2YgYSB0ZXN0IG9yIHJlZmVyZW5jZSBmaWxlLiAibG9uZyIgaWYgdGhlIGZpbGUg
aGFzIGFuIGV4dGVuZGVkIHRpbWVvdXQKICAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UiIiIKICAg
ICAgICAgaWYgc2VsZi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICBpZiBhbnkobSA9PSAo
YiJ0aW1lb3V0IiwgYiJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGEpOgorICAg
ICAgICAgICAgaWYgYW55KG0gPT0gKCJ0aW1lb3V0IiwgImxvbmciKSBmb3IgbSBpbiBzZWxmLnNj
cmlwdF9tZXRhZGF0YSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJsb25nIgogCiAgICAgICAg
IGlmIHNlbGYucm9vdCBpcyBOb25lOgpAQCAtNjQ0LDggKzY0Nyw4IEBAIGNsYXNzIFNvdXJjZUZp
bGUob2JqZWN0KToKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAg
ICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBrZXkgPT0gYiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBw
ZW5kKHZhbHVlLmRlY29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBpZiBrZXkgPT0gInZh
cmlhbnQiOgorICAgICAgICAgICAgICAgICAgICBydi5hcHBlbmQodmFsdWUpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLnZhcmlhbnRfbm9kZXM6CiAgICAg
ICAgICAgICAgICAgaWYgImNvbnRlbnQiIGluIGVsZW1lbnQuYXR0cmliOgpAQCAtNjc3LDYgKzY4
MCwzNiBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9u
ZQogICAgICAgICByZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCiAKKyAgICBAY2Fj
aGVkX3Byb3BlcnR5CisgICAgZGVmIHF1aWNfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gTGlzdFtFbGVtZW50VHJlZS5FbGVtZW50XQorICAgICAgICAiIiJMaXN0IG9mIEVsZW1l
bnRUcmVlIEVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKKyAg
ICAgICAgc3BlY2lmeSB3aGV0aGVyIGl0IG5lZWRzIFFVSUMgc2VydmVyLiIiIgorICAgICAgICBh
c3NlcnQgc2VsZi5yb290IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmlu
ZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ncXVpYydd
IikKKworICAgIEBjYWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBPcHRpb25hbFtib29sXQorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRp
bmcgd2hldGhlciBhIHRlc3QgcmVxdWlyZXMgUVVJQyBzZXJ2ZXIKKworICAgICAgICBEZXRlcm1p
bmVkIGJ5IDxtZXRhPiBlbGVtZW50cyAoYHF1aWNfbm9kZXMoKWApIGFuZCAiLy8gTUVUQSIgY29t
bWVudHMKKyAgICAgICAgKGBzY3JpcHRfbWV0YWRhdGEoKWApLgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgc2VsZi5zY3JpcHRfbWV0YWRhdGE6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInF1
aWMiLCAidHJ1ZSIpIGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBzZWxmLnF1aWNfbm9kZXM6CisgICAgICAg
ICAgICBxdWljX3N0ciA9IHNlbGYucXVpY19ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50Iiwg
ImZhbHNlIikgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgaWYgcXVpY19zdHIubG93ZXIoKSA9
PSAidHJ1ZSI6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4g
Tm9uZQorCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYp
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KQEAgLTc4
NCw2ICs4MTcsOCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYu
aXRlbXNfY2FjaGU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCisgICAg
ICAgIGRyb3BfY2FjaGVkID0gInJvb3QiIG5vdCBpbiBzZWxmLl9fZGljdF9fCisKICAgICAgICAg
aWYgc2VsZi5uYW1lX2lzX25vbl90ZXN0OgogICAgICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFsK
ICAgICAgICAgICAgICAgICBTdXBwb3J0RmlsZSgKQEAgLTgzNSwxMSArODcwLDExIEBAIGNsYXNz
IFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICApXQogCiAgICAgICAgIGVsaWYg
c2VsZi5uYW1lX2lzX211bHRpX2dsb2JhbDoKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAg
ICAgICAgICAgIGdsb2JhbHMgPSB1IiIKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNl
bGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlz
IG5vdCBOb25lCiAgICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0
YToKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAg
IGlmIGtleSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVl
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTg1MSw2ICs4ODYsNyBAQCBjbGFzcyBT
b3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF92YXJpYW50X3Vy
bChzZWxmLnJlbF91cmwsIHN1ZmZpeCkgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0PXNlbGYudGltZW91dCwKICAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxs
LAorICAgICAgICAgICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAg
ICAgc2NyaXB0X21ldGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgICAgIGZvciAoc3VmZml4LCBqc3NoZWxsKSBpbiBzb3J0ZWQoZ2xvYmFs
X3N1ZmZpeGVzKGdsb2JhbHMpKQpAQCAtODY3LDYgKzkwMyw3IEBAIGNsYXNzIFNvdXJjZUZpbGUo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAg
ICAgICAgICAgdGVzdF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0
PXNlbGYudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3Rf
dmFyaWFudHMKQEAgLTg4Miw2ICs5MTksNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHRl
c3RfdXJsICsgdmFyaWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVv
dXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAg
ICAgICBzY3JpcHRfbWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCkBA
IC05MTgsMTkgKzk1NiwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAg
ICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAg
IHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2
ZXIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRh
ZGF0YQogICAgICAgICAgICAgICAgICkpCiAKICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNf
cmVmX25vZGU6Ci0gICAgICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWwotICAg
ICAgICAgICAgICAgIFJlZlRlc3ROb2RlKAorICAgICAgICAgICAgcnYgPSBSZWZUZXN0Lml0ZW1f
dHlwZSwgWworICAgICAgICAgICAgICAgIFJlZlRlc3QoCiAgICAgICAgICAgICAgICAgICAgIHNl
bGYudGVzdHNfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZWxfdXJsLAogICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPXNlbGYucmVmZXJlbmNlcywK
ICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAg
ICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXpl
PXNlbGYudmlld3BvcnRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAog
ICAgICAgICAgICAgICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CkBAIC05NTYsNCArOTk2LDExIEBA
IGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgICAgICBzZWxmLml0ZW1zX2NhY2hlID0g
cnYKIAorICAgICAgICBpZiBkcm9wX2NhY2hlZCBhbmQgIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIg
aW4gc2VsZi5fX2RpY3RfXzoKKyAgICAgICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gc2VsZi5f
X2RpY3RfX1siX19jYWNoZWRfcHJvcGVydGllc19fIl0KKyAgICAgICAgICAgIGZvciBwcm9wIGlu
IGNhY2hlZF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIGlmIHByb3AgaW4gc2VsZi5fX2Rp
Y3RfXzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bcHJvcF0KKyAgICAg
ICAgICAgIGRlbCBzZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorCiAgICAg
ICAgIHJldHVybiBydgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cy90ZXN0X21hbmlmZXN0LnB5CmluZGV4IDczM2NhZmRjYmU5ZGM5Y2UwN2NiM2U4NDNiZDk1
NmQwMmM2ZmQyZmUuLmI2MThkNzVlYzFlZDJlOTU1ZTI3Zjc2MzQ0NmMxYjBmYzM5ODdmMWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFu
aWZlc3QucHkKQEAgLTUsNyArNSw3IEBAIGltcG9ydCBtb2NrCiBpbXBvcnQgaHlwb3RoZXNpcyBh
cyBoCiBpbXBvcnQgaHlwb3RoZXNpcy5zdHJhdGVnaWVzIGFzIGhzCiAKLWltcG9ydCBweXRlc3QK
K2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLiBpbXBvcnQgbWFuaWZlc3QsIHNv
dXJjZWZpbGUsIGl0ZW0sIHV0aWxzCiAKQEAgLTE4LDcgKzE4LDEwIEBAIGlmIE1ZUFk6CiAKIGRl
ZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAgICAgIyB0
eXBlOiAoc3RyLCBzdHIsIFR5cGVbaXRlbS5NYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNl
ZmlsZS5Tb3VyY2VGaWxlCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhh
c2gpCisgICAgcmVsX3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkK
KyAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxf
cGF0aF9wYXJ0cz1yZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkK
ICAgICBpZiBjbHMgPT0gaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNscygiL2Zv
b2JhciIsIHBhdGgpCiAgICAgZWxzZToKQEAgLTI5LDUxICszMiw4MyBAQCBkZWYgU291cmNlRmls
ZVdpdGhUZXN0KHBhdGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogCiBkZWYgU291cmNlRmlsZVdp
dGhUZXN0cyhwYXRoLCBoYXNoLCBjbHMsIHZhcmlhbnRzKToKICAgICAjIHR5cGU6IChzdHIsIHN0
ciwgVHlwZVtpdGVtLlVSTE1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJj
ZUZpbGUKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICBy
ZWxfcGF0aF9wYXJ0cyA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIHMgPSBt
b2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRz
PXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogICAgIHRlc3Rz
ID0gW2NscygiL2Zvb2JhciIsIHBhdGgsICIvIiwgaXRlbVswXSwgKippdGVtWzFdKSBmb3IgaXRl
bSBpbiB2YXJpYW50c10KICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92
YWx1ZT0oY2xzLml0ZW1fdHlwZSwgdGVzdHMpKQogICAgIHJldHVybiBzICAjIHR5cGU6IGlnbm9y
ZQogCiAKLUBocy5jb21wb3NpdGUKLWRlZiByZWxfZGlyX2ZpbGVfcGF0aChkcmF3KToKLSAgICBs
ZW5ndGggPSBkcmF3KGhzLmludGVnZXJzKG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MjApKQotICAg
IGlmIGxlbmd0aCA9PSAxOgotICAgICAgICByZXR1cm4gImEiCi0gICAgZWxzZToKLSAgICAgICAg
cmVtYWluaW5nID0gbGVuZ3RoIC0gMgotICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGgu
c2VwCi0gICAgICAgIG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3Np
emU9cmVtYWluaW5nLCBtYXhfc2l6ZT1yZW1haW5pbmcpKQotICAgICAgICByZXR1cm4gb3MucGF0
aC5ub3JtY2FzZSgiYSIgKyBtaWQgKyAiYSIpCi0KLQogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJj
ZWZpbGVfc3RyYXRlZ3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5l
c3NUZXN0LCBpdGVtLlJlZlRlc3ROb2RlLAorICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3Ro
YXJuZXNzVGVzdCwgaXRlbS5SZWZUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLk1hbnVh
bFRlc3QsIGl0ZW0uV2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0u
Q29uZm9ybWFuY2VDaGVja2VyVGVzdCwgaXRlbS5TdXBwb3J0RmlsZV0KICAgICBjbHMgPSBkcmF3
KGhzLnNhbXBsZWRfZnJvbShpdGVtX2NsYXNzZXMpKQogCi0gICAgcGF0aCA9IGRyYXcocmVsX2Rp
cl9maWxlX3BhdGgoKSkKLSAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PSIwMTIzNDU2
Nzg5YWJjZGVmIiwgbWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkKLSAgICBzID0gbW9jay5Nb2Nr
KHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoID0gdSJhIgorICAgIHJlbF9wYXRo
X3BhcnRzID0gdHVwbGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgaGFzaCA9IGRyYXco
aHMudGV4dChhbHBoYWJldD11IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3Np
emU9NDApKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAg
ICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFz
aD1oYXNoKQogCi0gICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdE5vZGU6Ci0gICAgICAgIHJlZl9w
YXRoID0gZHJhdyhyZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgICAgICBoLmFzc3VtZShwYXRoICE9
IHJlZl9wYXRoKQorICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3Q6CisgICAgICAgIHJlZl9wYXRo
ID0gdSJiIgogICAgICAgICByZWZfZXEgPSBkcmF3KGhzLnNhbXBsZWRfZnJvbShbIj09IiwgIiE9
Il0pKQogICAgICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9t
X29zX3BhdGgocGF0aCksIHJlZmVyZW5jZXM9Wyh1dGlscy5mcm9tX29zX3BhdGgocmVmX3BhdGgp
LCByZWZfZXEpXSkKICAgICBlbGlmIGNscyBpcyBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAgICB0
ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICB0ZXN0ID0gY2xz
KCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0aCkpCisgICAgICAg
IHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIsICJmb29iYXIiKQogCiAgICAgcy5tYW5p
ZmVzdF9pdGVtcyA9IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0
XSkpCiAgICAgcmV0dXJuIHMKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0
ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCBtYXhfc2l6ZT0xMDAwLCB1bmlx
dWVfYnk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGhzLmNvbXBvc2l0ZQorZGVmIG1hbmlmZXN0
X3RyZWUoZHJhdyk6CisgICAgbmFtZXMgPSBocy50ZXh0KGFscGhhYmV0PWhzLmNoYXJhY3RlcnMo
YmxhY2tsaXN0X2NoYXJhY3RlcnM9dSJcMC9cXDoqXCI/PD58IiksIG1pbl9zaXplPTEpCisgICAg
dHJlZSA9IGhzLnJlY3Vyc2l2ZShzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBsYW1iZGEgY2hpbGRyZW46IGhzLmRpY3Rpb25hcmllcyhuYW1lcywgY2hpbGRy
ZW4sIG1pbl9zaXplPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlYXZlcz0xMCkK
KworICAgIGdlbmVyYXRlZF9yb290ID0gZHJhdyh0cmVlKQorICAgIGguYXNzdW1lKGlzaW5zdGFu
Y2UoZ2VuZXJhdGVkX3Jvb3QsIGRpY3QpKQorCisgICAgcmVmdGVzdF91cmxzID0gW10KKyAgICBv
dXRwdXQgPSBbXQorICAgIHN0YWNrID0gWygoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMo
Z2VuZXJhdGVkX3Jvb3QpXQorICAgIHdoaWxlIHN0YWNrOgorICAgICAgICBwYXRoLCBub2RlID0g
c3RhY2sucG9wKCkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAg
ICAgIHN0YWNrLmV4dGVuZCgocGF0aCArIChrLCksIHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhu
b2RlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5zZXAu
am9pbihwYXRoKQorICAgICAgICAgICAgbm9kZS5yZWxfcGF0aCA9IHJlbF9wYXRoCisgICAgICAg
ICAgICBub2RlLnJlbF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aCkKKyAgICAgICAgICAgIGZvciB0
ZXN0X2l0ZW0gaW4gbm9kZS5tYW5pZmVzdF9pdGVtcy5yZXR1cm5fdmFsdWVbMV06CisgICAgICAg
ICAgICAgICAgdGVzdF9pdGVtLnBhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodGVzdF9pdGVtLCBpdGVtLlJlZlRlc3QpOgorICAgICAgICAgICAgICAgICAgICBp
ZiByZWZ0ZXN0X3VybHM6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzID0g
aHMuc2FtcGxlZF9mcm9tKHJlZnRlc3RfdXJscykgfCBuYW1lcworICAgICAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IG5hbWVzCisg
ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IGhzLnR1cGxlcyhocy5zYW1wbGVkX2Zyb20o
W3UiPT0iLCB1IiE9Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9zc2libGVfdXJscykKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyA9IGhzLmxp
c3RzKHJlZmVyZW5jZSwgbWluX3NpemU9MSwgdW5pcXVlPVRydWUpCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RfaXRlbS5yZWZlcmVuY2VzID0gZHJhdyhyZWZlcmVuY2VzKQorICAgICAgICAgICAg
ICAgICAgICByZWZ0ZXN0X3VybHMuYXBwZW5kKHRlc3RfaXRlbS51cmwpCisgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKG5vZGUpCisKKyAgICByZXR1cm4gb3V0cHV0CisKKworQGguZ2l2ZW4obWFu
aWZlc3RfdHJlZSgpKQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVz
c19oZWFsdGhfY2hlY2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1Nv
dXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0
KV0pCiBkZWYgdGVzdF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5p
ZmVzdCgpCkBAIC04OCwxMCArMTIzLDExIEBAIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6
CiAgICAgYXNzZXJ0IGxvYWRlZC50b19qc29uKCkgPT0ganNvbl9zdHIKIAogCi1AaC5naXZlbiho
cy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6
ZT0xLCB1bmlxdWVfYnk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGguZ2l2ZW4obWFuaWZlc3Rf
dHJlZSgpKQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFs
dGhfY2hlY2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZp
bGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXSkKLUBoLmV4YW1w
bGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvYWEiLCAiPT0iKV0pXSkKK0BoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVz
dCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSld
KQogZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFu
aWZlc3QoKQogCkBAIC0xMDcsMTkxICsxNDMsNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBv
dGVudChzKToKIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fZm9yd2FyZHNsYXNoKCk6CiAgICAg
bSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEv
YiIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUo
WyhzLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAg
ICAgICdwYXRocyc6IHsKLSAgICAgICAgICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAg
ICAndmVyc2lvbic6IDcsCi0gICAgICAgICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1z
JzogewotICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2In
OiBbKCdhL2InLCB7fSldCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotQHB5
dGVzdC5tYXJrLnNraXBpZihvcy5zZXAgIT0gIlxcIiwgcmVhc29uPSJiYWNrc2xhc2ggcGF0aCIp
Ci1kZWYgdGVzdF9tYW5pZmVzdF90b19qc29uX2JhY2tzbGFzaCgpOgotICAgIG0gPSBtYW5pZmVz
dC5NYW5pZmVzdCgpCi0KLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhXFxiIiwgIjAiKjQw
LCBpdGVtLlRlc3RoYXJuZXNzVGVzdCkKKyAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhIiAr
IG9zLnBhdGguc2VwICsgImIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQogCiAgICAg
YXNzZXJ0IG0udXBkYXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBhc3NlcnQgbS50b19q
c29uKCkgPT0gewotICAgICAgICAncGF0aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAg
ICAgICAgfSwKLSAgICAgICAgJ3ZlcnNpb24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycs
Ci0gICAgICAgICdpdGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAg
ICAgICAgICAgICAnYS9iJzogWygnYS9iJywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0KLWRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKLSAg
ICBqc29uX29iaiA9IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2FcXGInOiAo
JzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3Mn
KQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6IDcsCisgICAgICAgICd2ZXJzaW9uJzog
OCwKICAgICAgICAgJ3VybF9iYXNlJzogJy8nLAogICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAg
ICAgICAndGVzdGhhcm5lc3MnOiB7Ci0gICAgICAgICAgICAgICAgJ2FcXGInOiBbWydhL2InLCB7
fV1dCi0gICAgICAgICAgICB9CisgICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7J2EnOiB7J2In
OiBbCisgICAgICAgICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAnLAorICAgICAgICAgICAgICAgIChOb25lLCB7fSkKKyAgICAgICAgICAgIF19fSwKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAg
ICAgICAgbWFuaWZlc3QuTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwganNvbl9vYmopCiAKIAogZGVm
IHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbigpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5p
ZmVzdCgpCiAKLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0
ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09
IildKQorICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5S
ZWZUZXN0LCByZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAogICAgIG0udXBkYXRlKFso
czEsIFRydWUpLCAoczIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMo
KVsxXVswXQogICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgYXNz
ZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0
KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRo
LCB7dGVzdDJ9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0
ZV9hZGQoKToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczIgPSBTb3VyY2VG
aWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2Vz
PVsoIi90ZXN0MyIsICI9PSIpXSkKLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1b
MF0KLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFz
c2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVz
dCgpfSldCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0
ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHRlc3Qx
ID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5jaGFu
Z2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBub2RlCi0gICAgYXNzZXJ0IG0u
dXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxp
c3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVz
dDJ9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9yZW1v
dmUoKToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxl
V2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVso
Ii90ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAi
MCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQot
Ci0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQot
Ci0gICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5t
YW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0
IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAg
ICAgICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgIyBzMidz
IGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIG5vZGUgdG8gYSB0ZXN0
Ci0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mi50b19SZWZUZXN0KCl9
KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV90ZXN0X3R5
cGUoKToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxl
V2l0aFRlc3QoInRlc3QiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9Wygi
L3Rlc3QtcmVmIiwgIj09IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpXSkg
aXMgVHJ1ZQotCi0gICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBh
c3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRl
c3QoKX0pXQotCi0gICAgIyB0ZXN0IGJlY29tZXMgYSB0ZXN0aGFybmVzcyB0ZXN0IChoYXNoIGNo
YW5nZSBiZWNhdXNlIHRoYXQgaXMgZGV0ZXJtaW5lZAotICAgICMgYmFzZWQgb24gdGhlIGZpbGUg
Y29udGVudHMpLiBUaGUgdXBkYXRlZCBtYW5pZmVzdCBzaG91bGQgbm90IGluY2x1ZGVzIHRoZQot
ICAgICMgb2xkIHJlZnRlc3QuCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QiLCAi
MSIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBU
cnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQot
Ci0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0Mi5wYXRoLCB7dGVz
dDJ9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2Rl
X2NoYW5nZSgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJj
ZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5j
ZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0
MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0i
KV0pCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBU
cnVlCi0KLSAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9
IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJl
ZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICAj
dGVzdDIgY2hhbmdlcyB0byBzdXBwb3J0IHR5cGUKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDIiLCAiMSIqNDAsIGl0ZW0uU3VwcG9ydEZpbGUpCi0KLSAgICBhc3NlcnQgbS51cGRh
dGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0gICAgdGVzdDMgPSBzMi5tYW5p
ZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0Iiwg
dGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAg
ICAoInN1cHBvcnQiLCB0ZXN0My5wYXRoLCB7dGVzdDN9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0
X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZV9wYXJ0aWFsKCk6Ci0gICAgbSA9
IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0
MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0i
KV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJl
ZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBt
LnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0g
czEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMo
KVsxXVswXQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgs
IHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0
X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhU
ZXN0KCJ0ZXN0MiIsICIxIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVz
dDMiLCAiPT0iKV0pCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2Up
LCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVz
dCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQg
bGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICgicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAKIGRlZiB0
ZXN0X2l0ZXJwYXRoKCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHNvdXJj
ZXMgPSBbU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9k
ZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICBzb3VyY2VzID0gW1Nv
dXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNl
cz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKICAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRo
VGVzdHMoInRlc3QyIiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5o
dG1sIiwge30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAg
ICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVz
dGhhcm5lc3NUZXN0KV0KQEAgLTMwMiwyNCArMTg5LDYgQEAgZGVmIHRlc3RfaXRlcnBhdGgoKToK
ICAgICBhc3NlcnQgc2V0KG0uaXRlcnBhdGgoIm1pc3NpbmciKSkgPT0gc2V0KCkKIAogCi1kZWYg
dGVzdF9yZWZ0ZXN0X25vZGVfYnlfdXJsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkK
LQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZU
ZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VG
aWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2Vz
PVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRy
dWUpXSkKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3Qy
ID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rl
c19ieV91cmwgPT0geyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLSAgICBtLl9yZWZ0ZXN0
X25vZGVzX2J5X3VybCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9
PSB7Ii90ZXN0MSI6IHRlc3QxLnRvX1JlZlRlc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi90ZXN0MiI6IHRlc3QyfQotCi0KIGRlZiB0ZXN0X25vX3VwZGF0ZSgp
OgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTM1NCw5ICsyMjMsNyBAQCBkZWYg
dGVzdF9ub191cGRhdGVfZGVsZXRlKCk6CiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1z
KClbMV1bMF0KIAotICAgIHMxXzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQw
LCBpdGVtLk1hbnVhbFRlc3QpCi0KLSAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNl
KV0pCisgICAgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpXSkKIAogICAgIGFzc2VydCBs
aXN0KG0pID09IFsoInRlc3RoYXJuZXNzIiwgdGVzdDEucGF0aCwge3Rlc3QxfSldCiAKQEAgLTM5
NCw5ICsyNjEsMTAgQEAgZGVmIHRlc3RfdXBkYXRlX2Zyb21fanNvbl9tb2RpZmllZCgpOgogICAg
IG0udXBkYXRlKFsoczIsIFRydWUpXSkKICAgICBqc29uX3N0ciA9IG0udG9fanNvbigpCiAgICAg
YXNzZXJ0IGpzb25fc3RyID09IHsKLSAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsn
dGVzdDEnOiBbKCd0ZXN0MScsIHsidGltZW91dCI6ICJsb25nIn0pXX19LAotICAgICAgICAncGF0
aHMnOiB7J3Rlc3QxJzogKCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MnKX0sCisgICAgICAg
ICdpdGVtcyc6IHsndGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzogWworICAgICAgICAgICAgIjEiKjQw
LAorICAgICAgICAgICAgKE5vbmUsIHsndGltZW91dCc6ICdsb25nJ30pCisgICAgICAgIF19fSwK
ICAgICAgICAgJ3VybF9iYXNlJzogJy8nLAotICAgICAgICAndmVyc2lvbic6IDcKKyAgICAgICAg
J3ZlcnNpb24nOiA4CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQppbmRleCAwYTdhMWNhMGI0MWE5YzFiOTVm
Y2VhMzA5NTRjZWZmNGJjYzc0YWQ4Li44YjBmYjk0NGVhNTY3NGE3ZDIxYjhkZGFhYzg5MDg1NjRk
NDQ0MWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rl
c3RzL3Rlc3Rfc291cmNlZmlsZS5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSBzaXggaW1wb3J0IEJ5
dGVzSU8KIGZyb20gLi4ubGludC5saW50IGltcG9ydCBjaGVja19nbG9iYWxfbWV0YWRhdGEKIGZy
b20gLi5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCByZWFkX3NjcmlwdF9tZXRhZGF0YSwg
anNfbWV0YV9yZSwgcHl0aG9uX21ldGFfcmUKIAorCiBkZWYgY3JlYXRlKGZpbGVuYW1lLCBjb250
ZW50cz1iIiIpOgogICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcykKICAgICBy
ZXR1cm4gU291cmNlRmlsZSgiLyIsIGZpbGVuYW1lLCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpA
QCAtMzYsNiArMzcsNyBAQCBkZWYgaXRlbXMocyk6CiAgICAgImZvby9yZXNvdXJjZXMvdGVzdC5o
dG1sIiwKICAgICAiZm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKICAgICAiZm9vL2Zvby1tYW51YWwu
aHRtbC5oZWFkZXJzIiwKKyAgICAiY3Jhc2h0ZXN0cy9mb28uaHRtbC5pbmkiLAogICAgICJjc3Mv
Y29tbW9uL3Rlc3QuaHRtbCIsCiAgICAgImNzcy9DU1MyL2FyY2hpdmUvdGVzdC5odG1sIiwKIF0p
CkBAIC0xMDYsOCArMTA4LDggQEAgZGVmIHRlc3RfbmFtZV9pc192aXN1YWwocmVsX3BhdGgpOgog
ICAgICJjc3MyMS9mbG9hdHMvZmxvYXRzLXBsYWNlbWVudC12ZXJ0aWNhbC0wMDQtcmVmMi54aHQi
LAogICAgICJjc3MyMS9ib3gvcnRsLWxpbmVicmVhay1ub3RyZWYxLnhodCIsCiAgICAgImNzczIx
L2JveC9ydGwtbGluZWJyZWFrLW5vdHJlZjIueGh0IiwKLSAgICAiMmRjb250ZXh0L2RyYXdpbmct
aW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYuaHRtbCIsCi0g
ICAgIjJkY29udGV4dC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAorICAgICJodG1sL2Nh
bnZhcy9lbGVtZW50L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxf
aW1hZ2VfNV9yZWYuaHRtbCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvbGluZS1zdHlsZXMv
bGluZXRvX3JlZi5odG1sIiwKICAgICAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1l
bnRzL3RoZS1maWVsZHNldC1lbGVtZW50LTAvcmVmLmh0bWwiCiBdKQogZGVmIHRlc3RfbmFtZV9p
c19yZWZlcmVuY2UocmVsX3BhdGgpOgpAQCAtMTIwLDYgKzEyMiwxNCBAQCBkZWYgdGVzdF9uYW1l
X2lzX3JlZmVyZW5jZShyZWxfcGF0aCk6CiAgICAgYXNzZXJ0IGl0ZW1zKHMpID09IFtdCiAKIAor
ZGVmIHRlc3RfbmFtZV9pc190ZW50YXRpdmUoKToKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVp
L2FwcGVhcmFuY2UtcmV2ZXJ0LTAwMS50ZW50YXRpdmUuaHRtbCIpCisgICAgYXNzZXJ0IHMubmFt
ZV9pc190ZW50YXRpdmUKKworICAgIHMgPSBjcmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1y
ZXZlcnQtMDAxLmh0bWwiKQorICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisK
IGRlZiB0ZXN0X3dvcmtlcigpOgogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC53b3JrZXIuanMi
KQogICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX25vbl90ZXN0CkBAIC0xNDMsNiArMTUzLDggQEAg
ZGVmIHRlc3Rfd29ya2VyKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVj
dGVkX3VybHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2Vy
dCBpdGVtLnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUK
KwogCiBkZWYgdGVzdF93aW5kb3coKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93
LmpzIikKQEAgLTE2Nyw2ICsxNzksNyBAQCBkZWYgdGVzdF93aW5kb3coKToKICAgICBmb3IgaXRl
bSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVt
LnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAg
IGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3dvcmtlcl9sb25nX3RpbWVv
dXQoKToKQEAgLTE3NSw3ICsxODgsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzJykKIHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0
X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0
YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0g
WygidGltZW91dCIsICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2Vy
LmpzIiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193b3JrZXIKQEAg
LTE5Miw3ICsyMDUsNyBAQCBkZWYgdGVzdF93aW5kb3dfbG9uZ190aW1lb3V0KCk6CiB0ZXN0KCki
IiIKIAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNv
bnRlbnRzKSwganNfbWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0
IiwgYiJsb25nIildCisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIp
XQogCiAgICAgcyA9IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIsIGNvbnRlbnRzPWNvbnRl
bnRzKQogICAgIGFzc2VydCBzLm5hbWVfaXNfd2luZG93CkBAIC0yMzIsNiArMjQ1LDcgQEAgdGVz
dCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgog
ICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVv
dXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVz
dF93aW5kb3dfd2l0aF92YXJpYW50cygpOgpAQCAtMjYyLDYgKzI3Niw3IEBAIHRlc3QoKSIiIgog
ICAgIGZvciBpdGVtLCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAg
YXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5v
bmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfcHl0aG9u
X2xvbmdfdGltZW91dCgpOgpAQCAtMjcxLDcgKzI4Niw3IEBAIGRlZiB0ZXN0X3B5dGhvbl9sb25n
X3RpbWVvdXQoKToKIAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShC
eXRlc0lPKGNvbnRlbnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHl0aG9uX21ldGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIs
IGIibG9uZyIpXQorICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0K
IAogICAgIHMgPSBjcmVhdGUoIndlYmRyaXZlci90ZXN0LnB5IiwgY29udGVudHM9Y29udGVudHMp
CiAgICAgYXNzZXJ0IHMubmFtZV9pc193ZWJkcml2ZXIKQEAgLTMwNiw2ICszMjEsNyBAQCBkZWYg
dGVzdF9tdWx0aV9nbG9iYWwoKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhw
ZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNz
ZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9u
ZQogCiAKIGRlZiB0ZXN0X211bHRpX2dsb2JhbF9sb25nX3RpbWVvdXQoKToKQEAgLTMxNCw3ICsz
MzAsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykKIHRlc3Qo
KSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8o
Y29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVv
dXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25n
IildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVu
dHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc19tdWx0aV9nbG9iYWwKQEAgLTMyNywyNSArMzQzLDEw
IEBAIHRlc3QoKSIiIgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0
ZWQiLCBbCi0gICAgKGIiIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChi
ImRlZmF1bHQiLCB7ImRlZGljYXRlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZmF1
bHQiLCB7fSksCi0gICAgKGIiIWRlZmF1bHQsd2luZG93IiwgeyJ3aW5kb3cifSksCi0gICAgKGIi
d2luZG93LCFkZWZhdWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LGRlZGljYXRlZHdvcmtlciIs
IHsiZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiImRlZGljYXRlZHdvcmtlciwhZGVmYXVsdCIs
IHt9KSwKLSAgICAoYiIhZGVmYXVsdCx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2
aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZmF1bHQiLCB7
InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIiFkZWRpY2F0ZWR3b3Jr
ZXIiLCB7IndpbmRvdyJ9KSwKLSAgICAoYiIhd29ya2VyIiwgeyJ3aW5kb3cifSksCi0gICAgKGIi
IXdpbmRvdyIsIHsiZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiIiF3aW5kb3csd29ya2VyIiwg
eyJkZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0g
ICAgKGIid29ya2VyLCFkZWRpY2F0ZWR3b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVk
d29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyLHdvcmtlciIsIHsi
ZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRv
dyJ9KSwKLSAgICAoYiJ3b3JrZXIsIXNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwg
InNlcnZpY2V3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiIiFzaGFyZWR3b3JrZXIsd29ya2Vy
IiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAi
d2luZG93In0pLAotICAgIChiInNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNo
YXJlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3Jr
ZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCisgICAgKGIid2luZG93IiwgeyJ3aW5kb3cifSksCisgICAgKGIic2hhcmVk
d29ya2VyIiwgeyJzaGFyZWR3b3JrZXIifSksCisgICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3
b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAorICAgIChiIndvcmtl
ciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0p
LAogXSkKIGRlZiB0ZXN0X211bHRpX2dsb2JhbF93aXRoX2N1c3RvbV9nbG9iYWxzKGlucHV0LCBl
eHBlY3RlZCk6CiAgICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPSVzCkBAIC0zODAs
MTAgKzM4MSwxMSBAQCB0ZXN0KCkiIiIgJSBpbnB1dAogICAgICAgICBhc3NlcnQgaXRlbS51cmwg
PT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgaXMgRmFsc2UKICAgICAgICAgYXNz
ZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9u
ZQogCiAKIGRlZiB0ZXN0X211bHRpX2dsb2JhbF93aXRoX2pzc2hlbGxfZ2xvYmFscygpOgotICAg
IGNvbnRlbnRzID0gYiIiIi8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisgICAgY29udGVudHMgPSBi
IiIiLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogdGVzdCgp
IiIiCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVu
dHMpCkBAIC00MTAsNiArNDEyLDcgQEAgdGVzdCgpIiIiCiAgICAgICAgIGFzc2VydCBpdGVtLnVy
bCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCA9PSBqc3NoZWxsCiAgICAgICAg
IGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlz
IE5vbmUKIAogCiBkZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF92YXJpYW50cygpOgpAQCAtNDQ4
LDE3ICs0NTEsMTggQEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMs
IGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAg
IGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlz
IE5vbmUKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwot
ICAgIChiIiIiLy9NRVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAg
KGIiIiIvLyBNRVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIi
IiIvLyAgTUVUQTogZm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIi
Ly9NRVRBOiBmb289YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVU
QTogZm9vPWJhclxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vICBNRVRBOiBm
b289YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiXG4vLyBNRVRBOiBmb289
YmFyXG4iIiIsIFtdKSwKICAgICAoYiIiIiAvLyBNRVRBOiBmb289YmFyXG4iIiIsIFtdKSwKLSAg
ICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28i
LCBiImJhciIpLCAoYiJiYXoiLCBiInF1dXgiKV0pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJh
clxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChi
IiIiLy8gTUVUQTogZm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1x
dXV4XG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFy
XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIiksICgiYmF6IiwgInF1dXgi
KV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIi
LCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIFN0YXJ0
IG9mIHRoZSB0ZXN0XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwK
ICAgICAoYiIiIi8vIE1FVEE6XG4iIiIsIFtdKSwKICAgICAoYiIiIi8vIE1FVEE6IGZvb2Jhclxu
IiIiLCBbXSksCiBdKQpAQCAtNjU3LDcgKzY2MSwzNiBAQCBkZWYgdGVzdF9yZWxhdGl2ZV90ZXN0
ZHJpdmVyKGV4dCk6CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0bSIs
ICJodG1sIl0pCi1kZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0KToKK2RlZiB0ZXN0X3F1aWNfaHRt
bChleHQpOgorICAgIGZpbGVuYW1lID0gImh0bWwvdGVzdC4iICsgZXh0CisKKyAgICBjb250ZW50
ID0gYic8bWV0YSBuYW1lPSJxdWljIiBjb250ZW50PSJ0cnVlIj4nCisgICAgcyA9IGNyZWF0ZShm
aWxlbmFtZSwgY29udGVudCkKKyAgICBhc3NlcnQgcy5xdWljCisKKyAgICBjb250ZW50ID0gYic8
bWV0YSBuYW1lPSJxdWljIiBjb250ZW50PSJmYWxzZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5h
bWUsIGNvbnRlbnQpCisgICAgYXNzZXJ0IHMucXVpYyBpcyBOb25lCisKKworZGVmIHRlc3RfcXVp
Y19qcygpOgorICAgIGZpbGVuYW1lID0gImh0bWwvdGVzdC5hbnkuanMiCisKKyAgICBjb250ZW50
ID0gYiIvLyBNRVRBOiBxdWljPXRydWUiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVu
dCkKKyAgICBfLCBpdGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVtIGluIGl0
ZW1zOgorICAgICAgICBhc3NlcnQgaXRlbS5xdWljCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRB
OiBxdWljPWZhbHNlIgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgXywg
aXRlbXMgPSBzLm1hbmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAg
ICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJleHQiLCBbImh0bSIsICJodG1sIl0pCitkZWYgdGVzdF9yZWZ0ZXN0KGV4dCk6CiAgICAgY29u
dGVudCA9IGIiPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+IgogCiAgICAgZmlsZW5hbWUg
PSAiZm9vL3Rlc3QuIiArIGV4dApAQCAtNjczLDcgKzcwNiw3IEBAIGRlZiB0ZXN0X3JlZnRlc3Rf
bm9kZShleHQpOgogCiAgICAgYXNzZXJ0IHMuY29udGVudF9pc19yZWZfbm9kZQogCi0gICAgYXNz
ZXJ0IGl0ZW1zKHMpID09IFsoInJlZnRlc3Rfbm9kZSIsICIvIiArIGZpbGVuYW1lKV0KKyAgICBh
c3NlcnQgaXRlbXMocykgPT0gWygicmVmdGVzdCIsICIvIiArIGZpbGVuYW1lKV0KIAogCiBAcHl0
ZXN0Lm1hcmsucGFyYW1ldHJpemUoImV4dCIsIFsieGh0IiwgImh0bWwiLCAieGh0bWwiLCAiaHRt
IiwgInhtbCIsICJzdmciXSkKQEAgLTgzMSw0ICs4NjQsNCBAQCBkZWYgdGVzdF9yZWZ0ZXN0X2Z1
enp5X211bHRpKGZ1enp5LCBleHBlY3RlZCk6CiAKIGRlZiB0ZXN0X2hhc2goKToKICAgICBzID0g
U291cmNlRmlsZSgiLyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIpCi0g
ICAgYXNzZXJ0IGIiYjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0g
cy5oYXNoCisgICAgYXNzZXJ0ICJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMwMjUzNjdiNzIx
Njg0IiA9PSBzLmhhc2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEzYTA0MWU1NGMzZTI0MGUyNmRiODNjMThhMWY1ODllMDVjZGM4NTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0wLDAgKzEsMzQyIEBACitmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZh
bHVlcywgaXRlcml0ZW1zCisKKworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBp
cyBzZXQgdG8gVHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBBbnkKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBJdGVyYXRvcgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcg
aW1wb3J0IE9wdGlvbmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworICAgICMg
YXZvaWQgYWN0dWFsbHkgaW1wb3J0aW5nIHRoZXNlLCB0aGV5J3JlIG9ubHkgdXNlZCBieSB0eXBl
IGNvbW1lbnRzCisgICAgZnJvbSAuIGltcG9ydCBpdGVtCisgICAgZnJvbSAuIGltcG9ydCBtYW5p
ZmVzdAorCisKK2lmIE1ZUFk6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVHVw
bGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXV0KKyAgICBQYXRoSGFzaFR5cGUg
PSBNdXRhYmxlTWFwcGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQorZWxzZToKKyAgICBUeXBl
RGF0YVR5cGUgPSBNdXRhYmxlTWFwcGluZworICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBw
aW5nCisKKworY2xhc3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbSwgdHlwZV9jbHMpOgorICAgICAgICAjIHR5cGU6IChtYW5pZmVzdC5NYW5pZmVzdCwg
VHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0pIC0+IE5vbmUKKyAgICAgICAgIiIiRGljdC1saWtlIG9i
amVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVzdCB0eXBlLgorCisgICAg
ICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vz
c2FyaWx5CisgICAgICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBv
ZiB0aGUgdGVzdAorICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdl
IHN0b3JlIHRoZSByYXcganNvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5
cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCisgICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRl
c3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJlbWFpbgorICAgICAgICBBUEktY29tcGF0aWJs
ZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFuIEl0ZW0KKyAgICAgICAg
ZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGlu
ZworICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBt
CisgICAgICAgIHNlbGYuX3R5cGVfY2xzID0gdHlwZV9jbHMgICMgdHlwZTogVHlwZVtpdGVtLk1h
bmlmZXN0SXRlbV0KKyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ge30gICMgdHlwZTogRGljdFtU
ZXh0LCBBbnldCisgICAgICAgIHNlbGYuX2RhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFu
eV0KKyAgICAgICAgc2VsZi5faGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUdXBsZVtUZXh0LCAu
Li5dLCBUZXh0XQorICAgICAgICBzZWxmLmhhc2hlcyA9IFBhdGhIYXNoKHNlbGYpCisKKyAgICBk
ZWYgX2RlbGV0ZV9ub2RlKHNlbGYsIGRhdGEsIGtleSk6CisgICAgICAgICMgdHlwZTogKERpY3Rb
VGV4dCwgQW55XSwgVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICAiIiJkZWxldGUg
YSBwYXRoIGZyb20gYSBEaWN0IGRhdGEgd2l0aCBhIGdpdmVuIGtleSIiIgorICAgICAgICBwYXRo
ID0gW10KKyAgICAgICAgbm9kZSA9IGRhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5Wzot
MV06CisgICAgICAgICAgICBwYXRoLmFwcGVuZCgobm9kZSwgcGF0aHNlZykpCisgICAgICAgICAg
ICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9k
ZSwgZGljdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAg
IGRlbCBub2RlW2tleVstMV1dCisgICAgICAgIHdoaWxlIHBhdGg6CisgICAgICAgICAgICBub2Rl
LCBwYXRoc2VnID0gcGF0aC5wb3AoKQorICAgICAgICAgICAgaWYgbGVuKG5vZGVbcGF0aHNlZ10p
ID09IDA6CisgICAgICAgICAgICAgICAgZGVsIG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBr
ZXkpOgorICAgICAgICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBTZXRbaXRlbS5NYW5p
ZmVzdEl0ZW1dCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IFVuaW9uW0RpY3Rb
VGV4dCwgQW55XSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSwgTGlzdFtBbnldXQorICAgICAgICBm
b3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGRpY3Qp
IGFuZCBwYXRoc2VnIGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNl
Z10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgc2V0KToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbm9kZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBL
ZXlFcnJvcihrZXkpCisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pzb25fZGF0YQorICAgICAgICBm
b3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2Uobm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAg
ICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisKKyAg
ICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIGxpc3QpOgorICAgICAgICAgICAgcmFpc2Ug
S2V5RXJyb3Ioa2V5KQorCisgICAgICAgIHNlbGYuX2hhc2hlc1trZXldID0gbm9kZVswXQorCisg
ICAgICAgIGRhdGEgPSBzZXQoKQorICAgICAgICBwYXRoID0gIi8iLmpvaW4oa2V5KQorICAgICAg
ICBmb3IgdGVzdCBpbiBub2RlWzE6XToKKyAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxm
Ll90eXBlX2Nscy5mcm9tX2pzb24oc2VsZi5fbWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAg
ICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVtKQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRh
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGZvciBwYXRo
c2VnIGluIGtleVs6LTFdOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVmYXVsdChwYXRo
c2VnLCB7fSkKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAg
ICAgIGFzc2VydCBrZXlbLTFdIG5vdCBpbiBub2RlCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSBk
YXRhCisKKyAgICAgICAgc2VsZi5fZGVsZXRlX25vZGUoc2VsZi5fanNvbl9kYXRhLCBrZXkpCisK
KyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZh
bHVlKToKKyAgICAgICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZl
c3RJdGVtXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9kZWxldGVf
bm9kZShzZWxmLl9qc29uX2RhdGEsIGtleSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAg
ICAgICAgICAgcGFzcworCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBp
LCBwYXRoc2VnIGluIGVudW1lcmF0ZShrZXlbOi0xXSk6CisgICAgICAgICAgICBub2RlID0gbm9k
ZS5zZXRkZWZhdWx0KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVyIGlzIGEgY2hp
bGQgb2YgYSB0ZXN0ICglcikiICUgKGtleSwga2V5WzppKzFdKSkKKyAgICAgICAgbm9kZVtrZXlb
LTFdXSA9IHZhbHVlCisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAg
IyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwg
a2V5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRl
bCBzZWxmLl9oYXNoZXNba2V5XQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAg
ICAgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBJdGVyYXRvcltUdXBsZVtUZXh0LCAuLi5dXQorICAgICAgICAiIiJJdGVyYXRvciBv
dmVyIGtleXMgaW4gdGhlIFR5cGVEYXRhIGluIGNvZGVwb2ludCBvcmRlciIiIgorICAgICAgICBk
YXRhX25vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55XV0K
KyAgICAgICAganNvbl9ub2RlID0gc2VsZi5fanNvbl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0Rp
Y3RbVGV4dCwgQW55XV0KKyAgICAgICAgcGF0aCA9IHR1cGxlKCkgICMgdHlwZTogVHVwbGVbVGV4
dCwgLi4uXQorICAgICAgICBzdGFjayA9IFsoZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhdGgpXQor
ICAgICAgICB3aGlsZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFfbm9kZSwganNvbl9ub2RlLCBw
YXRoID0gc3RhY2sucG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YV9ub2RlLCBz
ZXQpIG9yIGlzaW5zdGFuY2UoanNvbl9ub2RlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgZGF0YV9ub2RlIGlzIE5vbmUgb3IganNvbl9ub2RlIGlzIE5vbmUKKyAgICAgICAgICAgICAg
ICB5aWVsZCBwYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBk
YXRhX25vZGUgaXMgTm9uZSBvciBpc2luc3RhbmNlKGRhdGFfbm9kZSwgZGljdCkKKyAgICAgICAg
ICAgICAgICBhc3NlcnQganNvbl9ub2RlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShqc29uX25vZGUs
IGRpY3QpCisKKyAgICAgICAgICAgICAgICBrZXlzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRd
CisgICAgICAgICAgICAgICAgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgICAgICBrZXlzIHw9IHNldChpdGVyKGRhdGFfbm9kZSkpCisgICAgICAgICAgICAgICAgaWYg
anNvbl9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlzIHw9IHNldChp
dGVyKGpzb25fbm9kZSkpCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChrZXlz
LCByZXZlcnNlPVRydWUpOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoKGRhdGFf
bm9kZS5nZXQoa2V5KSBpZiBkYXRhX25vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25fbm9kZS5nZXQoa2V5KSBpZiBqc29uX25v
ZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdGggKyAoa2V5LCkpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gaW50CisgICAgICAgIGNvdW50ID0gMAorCisgICAgICAgIHN0YWNrID0gW3Nl
bGYuX2RhdGFdCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBv
cCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAg
Y291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFjay5leHRl
bmQoaXRlcnZhbHVlcyh2KSkKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9qc29uX2RhdGFdCisg
ICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHYsIGxpc3QpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2YWx1
ZXModikpCisKKyAgICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgX19ub256ZXJvX18oc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gYm9vbChzZWxm
Ll9kYXRhKSBvciBib29sKHNlbGYuX2pzb25fZGF0YSkKKworICAgIF9fYm9vbF9fID0gX19ub256
ZXJvX18KKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBl
OiAoQW55KSAtPiBib29sCisgICAgICAgICMgd2UgcHJvdmlkZSBvdXIgb3duIGltcGwgb2YgdGhp
cyB0byBhdm9pZCBjYWxsaW5nIF9fZ2V0aXRlbV9fIGFuZCBnZW5lcmF0aW5nIGl0ZW1zIGZvcgor
ICAgICAgICAjIHRob3NlIGluIHNlbGYuX2pzb25fZGF0YQorICAgICAgICBub2RlID0gc2VsZi5f
ZGF0YQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRoc2Vn
IGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiBib29sKGlzaW5zdGFuY2Uobm9kZSwgc2V0KSkKKworICAgICAgICBub2RlID0g
c2VsZi5fanNvbl9kYXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAg
IGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2Vn
XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBsaXN0KSkKKworICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBOb25lCisgICAgICAgICMgbXVjaCwgbXVjaCBzaW1wbGVyL3F1aWNrZXIgdGhhbiB0
aGF0IGRlZmluZWQgaW4gTXV0YWJsZU1hcHBpbmcKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhLmNs
ZWFyKCkKKyAgICAgICAgc2VsZi5fZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuX2hhc2hlcy5j
bGVhcigpCisKKyAgICBkZWYgc2V0X2pzb24oc2VsZiwganNvbl9kYXRhKToKKyAgICAgICAgIyB0
eXBlOiAoRGljdFtUZXh0LCBBbnldKSAtPiBOb25lCisgICAgICAgICIiIlByb3ZpZGUgdGhlIG9i
amVjdCB3aXRoIGEgcmF3IEpTT04gYmxvYgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVj
dCBncmFwaCBpcyBhc3N1bWVkIHRvIGJlIG93bmVkIGJ5IHRoZSBUeXBlRGF0YQorICAgICAgICBv
YmplY3QgYWZ0ZXIgdGhlIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QgbXV0YXRlIGFueSBw
YXJ0IG9mIHRoZQorICAgICAgICBncmFwaC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYu
X2pzb25fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldF9qc29uIGNhbGwg
d2hlbiBKU09OIGRhdGEgaXMgbm90IGVtcHR5IikKKworICAgICAgICBzZWxmLl9qc29uX2RhdGEg
PSBqc29uX2RhdGEKKworICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgp
IC0+IERpY3RbVGV4dCwgQW55XQorICAgICAgICAiIiJDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGEg
dG8gSlNPTgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgb2JqZWN0IG1heSBjb250
YWluIHJlZmVyZW5jZXMgdG8gdGhlIGludGVybmFsCisgICAgICAgIGRhdGEgc3RydWN0dXJlcywg
YW5kIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgbmV4dAorICAgICAg
ICBfX2dldGl0ZW1fXywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fIGNhbGwsIHNvIHRoZSBjYWxs
ZXIgbXVzdCBub3QKKyAgICAgICAgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZSByZXR1cm5lZCBvYmpl
Y3QgZ3JhcGguCisKKyAgICAgICAgIiIiCisgICAgICAgIGpzb25fcnYgPSBzZWxmLl9qc29uX2Rh
dGEuY29weSgpCisKKyAgICAgICAgZGVmIHNhZmVfc29ydGVyKGVsZW1lbnQpOgorICAgICAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbc3RyLHN0cl0pIC0+IFR1cGxlW3N0cixzdHJdCisgICAgICAgICAg
ICAiIiIga2V5IGZ1bmN0aW9uIHRvIHNvcnQgbGlzdHMgd2l0aCBOb25lIHZhbHVlcy4KKworICAg
ICAgICAgICAgUHl0aG9uMyBpcyBtb3JlIHN0cmljdCB0eXBld2lzZS4gQ29tcGFyaW5nIE5vbmUg
YW5kIHN0ciBmb3IgZXhhbXBsZSBpcyB2YWxpZAorICAgICAgICAgICAgaW4gcHl0aG9uMiBidXQg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBweXRob24zLgorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBpZiBlbGVtZW50IGFuZCBub3QgZWxlbWVudFswXToKKyAgICAgICAgICAgICAgICByZXR1
cm4gKCIiLCBlbGVtZW50WzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudAorCisgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBqc29uX3J2LCB0
dXBsZSgpKV0gICMgdHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERpY3RbVGV4dCwg
QW55XSwgVHVwbGVbVGV4dCwgLi4uXV1dCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAg
ICAgZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBvcCgpCisgICAg
ICAgICAgICBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAgICAgICAgICAg
ICBmdWxsX2tleSA9IHBhcl9mdWxsX2tleSArIChrLCkKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBrIG5vdCBpbiBqc29u
X25vZGUKKyAgICAgICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0gW3NlbGYuX2hhc2hlcy5n
ZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2tleSldICsgW3QgZm9yIHQgaW4gc29y
dGVkKCh0ZXN0LnRvX2pzb24oKSBmb3IgdGVzdCBpbiB2KSwga2V5PXNhZmVfc29ydGVyKV0KKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10gPSBq
c29uX25vZGUuZ2V0KGssIHt9KS5jb3B5KCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBw
ZW5kKCh2LCBqc29uX25vZGVba10sIGZ1bGxfa2V5KSkKKworICAgICAgICByZXR1cm4ganNvbl9y
dgorCisKK2NsYXNzIFBhdGhIYXNoKFBhdGhIYXNoVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGRhdGEpOgorICAgICAgICAjIHR5cGU6IChUeXBlRGF0YSkgLT4gTm9uZQorICAgICAgICBz
ZWxmLl9kYXRhID0gZGF0YQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgICAg
ICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBUZXh0CisgICAgICAgIGlmIGsgbm90IGlu
IHNlbGYuX2RhdGE6CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAgICAgIGlmIGsg
aW4gc2VsZi5fZGF0YS5faGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEuX2hh
c2hlc1trXQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAgICAgICAg
Zm9yIHBhdGhzZWcgaW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAg
ICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG5vZGVb
MF0gICMgdHlwZTogaWdub3JlCisKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAidW5yZWFjaGFibGUi
CisgICAgICAgIHJhaXNlIEtleUVycm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywg
dik6CisgICAgICAgICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFRleHQpIC0+IE5vbmUKKyAg
ICAgICAgaWYgayBub3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9y
CisKKyAgICAgICAgaWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICBzZWxm
Ll9kYXRhLl9oYXNoZXNba10gPSB2CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pzb25f
ZGF0YQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNlZyBp
biBub2RlOgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBub2RlWzBdID0gdiAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIHNlbGYuX2RhdGEuX2hhc2hlc1trXSA9IHYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxm
LCBrKToKKyAgICAgICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJrZXlzIGhlcmUgbXVzdCBtYXRjaCB1bmRlcmx5aW5nIGRhdGEi
KQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJh
dG9yW1R1cGxlW1RleHQsIC4uLl1dCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisK
KyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAg
ICAgcmV0dXJuIGxlbihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Vw
ZGF0ZS5weQppbmRleCBiZmJhYWY4OTcxMjZkOGVlY2E2OWRjZWY5NGJiMzEzMDg4OTdmZGUyLi4y
OTY1MzNhNmJhYmYxNzZlNDUxNGJjZjNmMjllMTYzZmRmOWE5ZmRmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Vw
ZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQpAQCAtMjYsNyArMjYsOCBAQCBkZWYgdXBkYXRlKHRl
c3RzX3Jvb3QsICAjIHR5cGU6IHN0cgogICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAj
IHR5cGU6IE9wdGlvbmFsW3N0cl0KICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5
cGU6IGJvb2wKICAgICAgICAgICAgY2FjaGVfcm9vdD1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtz
dHJdCi0gICAgICAgICAgIHJlYnVpbGQ9RmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICAgICBy
ZWJ1aWxkPUZhbHNlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgIHBhcmFsbGVsPVRydWUgICMg
dHlwZTogYm9vbAogICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbAogICAg
IGxvZ2dlci53YXJuaW5nKCJEZXByZWNhdGVkOyB1c2UgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRl
IGluc3RlYWQiKQpAQCAtMzQsNyArMzUsNyBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5
cGU6IHN0cgogCiAgICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwg
bWFuaWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtp
bmdfY29weSwgcmVidWlsZCkKLSAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAg
cmV0dXJuIG1hbmlmZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKIAogCiBkZWYgdXBkYXRlX2Zy
b21fY2xpKCoqa3dhcmdzKToKQEAgLTUxLDcgKzUyLDggQEAgZGVmIHVwZGF0ZV9mcm9tX2NsaSgq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sidXJsX2Jhc2Ui
XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPVRydWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1aWxkIl0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsPWt3YXJnc1sicGFyYWxsZWwi
XSkKIAogCiBkZWYgYWJzX3BhdGgocGF0aCk6CkBAIC03OCw2ICs4MCw5IEBAIGRlZiBjcmVhdGVf
cGFyc2VyKCk6CiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi0tY2FjaGUtcm9v
dCIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PW9zLnBhdGguam9pbih3cHRfcm9vdCwgIi53cHRj
YWNoZSIpLAogICAgICAgICBoZWxwPSJQYXRoIGluIHdoaWNoIHRvIHN0b3JlIGFueSBjYWNoZXMg
KGRlZmF1bHQgPHRlc3RzX3Jvb3Q+Ly53cHRjYWNoZS8pIikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KAorICAgICAgICAiLS1uby1wYXJhbGxlbCIsIGRlc3Q9InBhcmFsbGVsIiwgYWN0aW9uPSJz
dG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0iRG8gbm90IHBhcmFsbGVs
aXplIGJ1aWxkaW5nIHRoZSBtYW5pZmVzdCIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IDJlZWQ3OWY0Mjc5ZDBlYzc4YzY5
M2Y2MzJiOTZlMzZjZTNjOTZmYTkuLmFlZmMyYzk0ZjQwZTFhZTI5ZDM2NTdmZTQxMTRmNzlmOTc1
NjhiYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtNTUsMTYg
KzU1LDE2IEBAIGRlZiB0b19vc19wYXRoKHBhdGgpOgogCiAKIGRlZiBnaXQocGF0aCk6Ci0gICAg
IyB0eXBlOiAoYnl0ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwgYnl0ZXNdXQorICAgICMg
dHlwZTogKGJ5dGVzKSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIFRleHRdXQogICAgIGRlZiBn
aXRmdW5jKGNtZCwgKmFyZ3MpOgotICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBi
eXRlcworICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBUZXh0CiAgICAgICAgIGZ1
bGxfY21kID0gWyJnaXQiLCBjbWRdICsgbGlzdChhcmdzKQogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5j
aGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQp
LmRlY29kZSgndXRmOCcpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAg
ICAgIGlmIHBsYXRmb3JtLnVuYW1lKClbMF0gPT0gIldpbmRvd3MiIGFuZCBpc2luc3RhbmNlKGUs
IFdpbmRvd3NFcnJvcik6CiAgICAgICAgICAgICAgICAgZnVsbF9jbWRbMF0gPSAiZ2l0LmJhdCIK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQs
IGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoJ3V0ZjgnKQogICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICByYWlzZQogCkBAIC0xMDMsNCArMTAzLDUgQEAgY2xhc3MgY2FjaGVkX3Byb3Bl
cnR5KEdlbmVyaWNbVF0pOgogICAgICAgICAjIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgYXNzaWdu
IGFzIG5leHQgdGltZSB0aGlzIHdvbid0IGJlIGNhbGxlZAogICAgICAgICBhc3NlcnQgc2VsZi5u
YW1lIG5vdCBpbiBvYmouX19kaWN0X18KICAgICAgICAgcnYgPSBvYmouX19kaWN0X19bc2VsZi5u
YW1lXSA9IHNlbGYuZnVuYyhvYmopCisgICAgICAgIG9iai5fX2RpY3RfXy5zZXRkZWZhdWx0KCJf
X2NhY2hlZF9wcm9wZXJ0aWVzX18iLCBzZXQoKSkuYWRkKHNlbGYubmFtZSkKICAgICAgICAgcmV0
dXJuIHJ2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CmluZGV4IGQ0ZjQ3ZjZiZjBh
YjM1YzlkYTUxNGVkYjRjNGI3Nzk2NDRmZjkwZGQuLjdjMGZlZWI4MTY0Nzk5NzUyNzViMWExYzRk
ODRmMTIxNWZhYzE0MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CkBAIC0z
Myw3ICszMyw3IEBAIGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3Rf
cGF0aCwgY2FjaGVfcm9vdCwKICAgICAjIHR5cGU6IChieXRlcywgTWFuaWZlc3QsIE9wdGlvbmFs
W2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdLCBib29sLCBib29sKSAtPiBGaWxlU3lzdGVtCiAgICAg
dHJlZSA9IE5vbmUKICAgICBpZiBjYWNoZV9yb290IGlzIE5vbmU6Ci0gICAgICAgIGNhY2hlX3Jv
b3QgPSBvcy5wYXRoLmpvaW4odGVzdHNfcm9vdCwgYiIud3B0Y2FjaGUiKQorICAgICAgICBjYWNo
ZV9yb290ID0gb3MucGF0aC5qb2luKHRlc3RzX3Jvb3QsICIud3B0Y2FjaGUiKQogICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhjYWNoZV9yb290KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
b3MubWFrZWRpcnMoY2FjaGVfcm9vdCkKQEAgLTU4LDIxICs1OCwyMSBAQCBjbGFzcyBHaXRIYXNo
ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkKIAogICAgIGRlZiBfbG9j
YWxfY2hhbmdlcyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAg
ICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCiAgICAgICAgICIiImdldCBhIHNldCBvZiBmaWxl
cyB3aGljaCBoYXZlIGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHkiIiIKICAg
ICAgICAgYXNzZXJ0IHNlbGYuZ2l0IGlzIG5vdCBOb25lCiAgICAgICAgICMgbm90ZSB0aGF0IGdp
dCBydW5zIHRoZSBjb21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGljaCBtYXkK
ICAgICAgICAgIyBub3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4g
YSBicm93c2VyIHJlcG8pCi0gICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0tcmVsYXRp
dmUiLCBiIi0tbm8tcmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFEIl0KKyAg
ICAgICAgY21kID0gWyJkaWZmLWluZGV4IiwgIi0tcmVsYXRpdmUiLCAiLS1uby1yZW5hbWVzIiwg
Ii0tbmFtZS1vbmx5IiwgIi16IiwgIkhFQUQiXQogICAgICAgICBkYXRhID0gc2VsZi5naXQoKmNt
ZCkKLSAgICAgICAgcmV0dXJuIHNldChkYXRhLnNwbGl0KGIiXDAiKSkKKyAgICAgICAgcmV0dXJu
IHNldChkYXRhLnNwbGl0KCJcMCIpKQogCiAgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6Ci0gICAg
ICAgICMgdHlwZTogKCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAj
IHR5cGU6ICgpIC0+IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAgICAgICAgICIiIgogICAg
ICAgICBBIGRpY3Qgb2YgcmVsX3BhdGggLT4gY3VycmVudCBnaXQgb2JqZWN0IGlkIGlmIHRoZSB3
b3JraW5nIHRyZWUgbWF0Y2hlcyBIRUFEIGVsc2UgTm9uZQogICAgICAgICAiIiIKLSAgICAgICAg
aGFzaF9jYWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAg
ICAgICAgaGFzaF9jYWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1d
CiAKICAgICAgICAgaWYgc2VsZi5naXQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBoYXNo
X2NhY2hlCkBAIC04MSw5ICs4MSw5IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAg
ICAjIG5vdCBiZSB0aGUgcm9vdCBvZiB0aGUgZ2l0IHJlcG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dz
ZXIgcmVwbykKICAgICAgICAgY21kID0gWyJscy10cmVlIiwgIi1yIiwgIi16IiwgIkhFQUQiXQog
ICAgICAgICBsb2NhbF9jaGFuZ2VzID0gc2VsZi5fbG9jYWxfY2hhbmdlcygpCi0gICAgICAgIGZv
ciByZXN1bHQgaW4gc2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6IGJ5
dGVzCi0gICAgICAgICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIsIDEp
Ci0gICAgICAgICAgICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4g
bG9jYWxfY2hhbmdlcyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKyAgICAgICAgZm9yIHJl
c3VsdCBpbiBzZWxmLmdpdCgqY21kKS5zcGxpdCgiXDAiKVs6LTFdOiAgIyB0eXBlOiBUZXh0Cisg
ICAgICAgICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoIlx0IiwgMSkKKyAgICAg
ICAgICAgIGhhc2hfY2FjaGVbcmVsX3BhdGhdID0gTm9uZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9j
aGFuZ2VzIGVsc2UgZGF0YS5zcGxpdCgiICIsIDMpWzJdCiAKICAgICAgICAgcmV0dXJuIGhhc2hf
Y2FjaGUKIApAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFz
cyhhYmMuQUJDTWV0YSkpOgogCiAKIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToKLSAgICBm
aWxlX25hbWUgPSBiIm10aW1lLmpzb24iCisgICAgZmlsZV9uYW1lID0gIm10aW1lLmpzb24iCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgbWFuaWZlc3Rf
cGF0aCwgcmVidWlsZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKGJ5dGVzLCBieXRlcywgYnl0
ZXMsIGJvb2wpIC0+IE5vbmUKQEAgLTIyMiwxNiArMjIyLDE2IEBAIGNsYXNzIE10aW1lQ2FjaGUo
Q2FjaGVGaWxlKToKIAogCiBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVN
YXBwaW5nKTogICMgdHlwZTogaWdub3JlCi0gICAgZmlsZV9uYW1lID0gYiJnaXRpZ25vcmUuanNv
biIKKyAgICBmaWxlX25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCiAKICAgICBkZWYgY2hlY2tfdmFs
aWQoc2VsZiwgZGF0YSk6CiAgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBBbnldKSAtPiBEaWN0
W0FueSwgQW55XQotICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3Rz
X3Jvb3QsIGIiLmdpdGlnbm9yZSIpCisgICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0aC5qb2lu
KHNlbGYudGVzdHNfcm9vdCwgIi5naXRpZ25vcmUiKQogICAgICAgICBtdGltZSA9IG9zLnBhdGgu
Z2V0bXRpbWUoaWdub3JlX3BhdGgpCi0gICAgICAgIGlmIGRhdGEuZ2V0KGIiL2dpdGlnbm9yZV9m
aWxlIikgIT0gW2lnbm9yZV9wYXRoLCBtdGltZV06CisgICAgICAgIGlmIGRhdGEuZ2V0KCIvZ2l0
aWdub3JlX2ZpbGUiKSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKICAgICAgICAgICAgIHNlbGYu
bW9kaWZpZWQgPSBUcnVlCiAgICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGRhdGFb
YiIvZ2l0aWdub3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgICAgICBk
YXRhWyIvZ2l0aWdub3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCiAgICAgICAgIHJl
dHVybiBkYXRhCiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CkBAIC0yODYsNyAr
Mjg2LDcgQEAgZGVmIHdhbGsocm9vdCk6CiAgICAgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAog
CiAgICAgcm9vdCA9IG9zLnBhdGguYWJzcGF0aChyb290KQotICAgIHN0YWNrID0gZGVxdWUoWyhy
b290LCBiIiIpXSkKKyAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgIiIpXSkKIAogICAgIHdoaWxl
IHN0YWNrOgogICAgICAgICBkaXJfcGF0aCwgcmVsX3BhdGggPSBzdGFjay5wb3BsZWZ0KCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCmluZGV4IGEwMTU0
MjY4N2IxYTAxNmRmYjQ3NTI1ZTBhZTJlZDRhYTJiMjE3ZjguLjM4OGZiYjExZWQ5ZDhkYTAxNDNm
ODJlZGMwMmQxMGM5NzliZTM3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC93M2MtaW1wb3J0LmxvZwpAQCAtMjMsNiArMjMsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFu
aWZlc3QucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEu
cHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3VwZGF0ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5p
bmkKaW5kZXggYWM4ZWRkMzdkM2FjMjkwNDEzM2ExMmVlOWU3NTUwZGQ1YTQ4NzIzOC4uYjk0M2I2
ZDA4OWE0YjhmODFlOWI2ZTIzYzc2ODgwZmI5M2NmNjY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5p
CkBAIC0xLDEyICsxLDEzIEBACiBbbXlweV0KICNjaGVja191bnR5cGVkX2RlZnMgPSBUcnVlCi1k
aXNhbGxvd191bnR5cGVkX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVl
CiBkaXNhbGxvd19pbmNvbXBsZXRlX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19zdWJjbGFzc2luZ19h
bnkgPSBUcnVlCiBkaXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQogZGlzYWxsb3dfdW50eXBl
ZF9kZWNvcmF0b3JzID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQogbm9faW1w
bGljaXRfb3B0aW9uYWwgPSBUcnVlCitzdHJpY3RfZXF1YWxpdHkgPSBUcnVlCiB3YXJuX3JlZHVu
ZGFudF9jYXN0cyA9IFRydWUKIHdhcm5fcmV0dXJuX2FueSA9IFRydWUKIHdhcm5fdW51c2VkX2Nv
bmZpZ3MgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmluZGV4IDk5MzI0
YjJhYWQxNGQ5MjFmNDY5ZjUyOTM0ZjdmZjkzNzRhMWQ5ZWUuLmRkNmNlYjZmZWE0Yjk3M2MwMTI0
ZGY0MzgyZjlmMWEzYTlkNWEwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5p
CkBAIC0yMiw2ICsyMiw3IEBAIGlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1
LEUzMDIsRTMwMyxFMzA1LEU0MDIsRTczMSxXNTA0LFc2MDEsVzYwNSxXCiBleGNsdWRlID0KICAg
ICAudG94LAogICAgIHB5d2Vic29ja2V0LAorICAgIHF1aWMsCiAgICAgdGhpcmRfcGFydHksCiAg
ICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAogICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC9pbnZhbGlkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNGNjMWRjNmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weTMtZmxha2U4LmluaQpAQCAtMCwwICsxLDI3IEBACitbZmxha2U4XQorc2VsZWN0ID0gRSxX
LEYsTgorIyBFMTI4OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFs
IGluZGVudAorIyBFMTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQg
YXMgbmV4dCBsb2dpY2FsIGxpbmUKKyMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBh
cml0aG1ldGljIG9wZXJhdG9yCisjIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs
4oCZLCDigJg74oCZLCBvciDigJg64oCZCisjIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3Vu
ZCBrZXl3b3JkIC8gcGFyYW1ldGVyIGVxdWFscworIyBFMjY1OiBibG9jayBjb21tZW50IHNob3Vs
ZCBzdGFydCB3aXRoIOKAmCMg4oCYCisjIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZv
dW5kIDAKKyMgRTMwMzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCisjIEUzMDU6IGV4cGVjdGVk
IDIgYmxhbmsgbGluZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCisjIEU0MDI6IG1v
ZHVsZSBsZXZlbCBpbXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCisjIEU3MzE6IGRvIG5vdCBhc3Np
Z24gYSBsYW1iZGEgZXhwcmVzc2lvbiwgdXNlIGEgZGVmCisjIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0
ZXIgYmluYXJ5IG9wZXJhdG9yCisjIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisjIE44
MDE6IGNsYXNzIG5hbWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgorIyBOODAyOiBm
dW5jdGlvbiBuYW1lIHNob3VsZCBiZSBsb3dlcmNhc2UKKyMgTjgwNjogdmFyaWFibGUgaW4gZnVu
Y3Rpb24gc2hvdWxkIGJlIGxvd2VyY2FzZQoraWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxF
MjUxLEUyNjUsRTMwMixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgw
NgorZXhjbHVkZSA9CisgICAgLnRveCwKKyAgICBweXdlYnNvY2tldCwKKyAgICB0aGlyZF9wYXJ0
eSwKKyAgICB3cHRydW5uZXIsCisgICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAorICAgIHdwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CittYXgtbGluZS1sZW5ndGgg
PSAxNDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHkzNi1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5YTAyM2IuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKysr
IC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1bZmxha2U4XQotc2VsZWN0ID0gRSxXLEYsTgot
IyBFMTI4OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVu
dAotIyBFMTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4
dCBsb2dpY2FsIGxpbmUKLSMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1l
dGljIG9wZXJhdG9yCi0jIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDi
gJg74oCZLCBvciDigJg64oCZCi0jIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3
b3JkIC8gcGFyYW1ldGVyIGVxdWFscwotIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFy
dCB3aXRoIOKAmCMg4oCYCi0jIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAK
LSMgRTMwMzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCi0jIEUzMDU6IGV4cGVjdGVkIDIgYmxh
bmsgbGluZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCi0jIEU0MDI6IG1vZHVsZSBs
ZXZlbCBpbXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCi0jIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBs
YW1iZGEgZXhwcmVzc2lvbiwgdXNlIGEgZGVmCi0jIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmlu
YXJ5IG9wZXJhdG9yCi0jIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCi0jIE44MDE6IGNs
YXNzIG5hbWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlv
biBuYW1lIHNob3VsZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24g
c2hvdWxkIGJlIGxvd2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUy
NjUsRTMwMixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgotZXhj
bHVkZSA9Ci0gICAgLnRveCwKLSAgICBweXdlYnNvY2tldCwKLSAgICB0aGlyZF9wYXJ0eSwKLSAg
ICB3cHRydW5uZXIsCi0gICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAotICAgIHdwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5Ci1tYXgtbGluZS1sZW5ndGggPSAxNDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNjRiNzAxY2ZiODU5
MDBjMjE5NDYzNjI0ZTZhZmEyOTlhMzgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCkBA
IC0wLDAgKzEsMzAgQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCitbUVVJQ10oaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9v
bHMuCisKKyMgUXVpY1RyYW5zcG9ydAorW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWlj
X3RyYW5zcG9ydF9zZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKK1tRdWljVHJhbnNwb3J0
XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWlj
KSBzZXJ2ZXIKK2ZvciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5j
b20vYWlvcnRjL2Fpb3F1aWMvKSwgYW5kIHRlc3QKK2F1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0
b20gaGFuZGxlcnMgYnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgorW3dwdC93ZWJ0cmFuc3Bv
cnQvcXVpYy9oYW5kbGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCisK
KyMjIEN1c3RvbSBIYW5kbGVycworVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rp
b25zIGRlZmluZWQgaW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KKworIC0gaGFuZGxlX2NsaWVudF9p
bmRpY2F0aW9uIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3Mu
CisgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRocmVlIGFyZ3VtZW50czoKKyAgIAor
ICAgLSBjb25uZWN0aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAor
ICAgLSBvcmlnaW46IHN0ciBUaGUgb3JpZ2luIG9mIHRoZSBpbml0aWF0b3IuCisgICAtIHF1ZXJ5
OiBEaWN0W3N0ciwgc3RyXSBUaGUgZGljdGlvbmFyeSBvZiBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRo
ZSBVUkwgb2YgdGhlCisgICAgICAgICAgICBjb25uZWN0aW9uLgorCisgICBBIGhhbmRsZXIgY2Fu
IGFib3J0IHRoZSBjbGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzIGVpdGhlciBieSByYWlzaW5nIGFu
CisgICBleGNlcHRpb24gb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbi4KKwkgICAgCisgLSBoYW5k
bGVfZXZlbnQgaXMgY2FsbGVkIHdoZW4gYSBRdWljRXZlbnQgYXJyaXZlcy4KKyAgIC0gY29ubmVj
dGlvbjogYWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gZXZlbnQ6
IGFpb3F1aWMucXVpYy5ldmVudHMuUXVpY0V2ZW50CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90
IGNhbGxlZCB1bnRpbCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBmaW5pc2hlcworICAg
c3VjY2Vzc2Z1bGx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFE
TUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjE2Y2YxM2ZmZmMxYmJhODdkNjEwZTIyY2Y2MGUxMTA0M2Y1Mzkx
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKQEAgLTAsMCArMSwxMiBAQAorVG8g
Z2VuZXJhdGUgY2VydC5rZXkgYW5kIGNlcnQucGVtOgorCisgMS4gUmVtb3ZlIHdlYi1wbGF0Zm9y
bS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluIC4uLy4uL2NlcnRzLgorIDEu
IEZyb20gdGhlIHJvb3QsIHJ1bgorICAgIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29scy9xdWlj
L2NlcnRzL2NvbmZpZy5qc29uYCBhbmQgdGVybWluYXRlIGl0CisgICAgYWZ0ZXIgaXQgaGFzIHN0
YXJ0ZWQgdXAuCisgMS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkgdG8g
dG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleS4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0
Zm9ybS50ZXN0LnBlbSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQucGVtLgorIDEuIFJlY292ZXIg
dGhlIG9yaWdpbmFsIHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3Qu
cGVtIGluCisgICAgLi4vLi4vY2VydHMuCisKK1NlZSBhbHNvOiAuLi8uLi9jZXJ0cy9SRUFETUUu
bWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMv
Y2VydHMvY2VydC5rZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkzY2RmYTU0MzcyOGI2MzY5YjA1ZWVmZTIwODEx
Y2Q2NjYyYjcxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpAQCAtMCwwICsxLDI4
IEBACistLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV3QUlCQURBTkJna3Foa2lHOXcw
QkFRRUZBQVNDQktvd2dnU21BZ0VBQW9JQkFRRGJ5UHVpQkdweGhhdkYKKzNqN3BJNmcrQTBnQzRC
VExUcU1PYktTVGtRV3NqcTFHT2QyTEExbHdUUExPYndydmhJVUZ6YndvSWJPd29QTWUKK01ranNz
RkNIRzNGTWo1NmNLaUFRMkRGSTZkSzVQakdVVk5TUnhrL0Y0SGgyWng5RFRFTmwvRWIvY1JUMnl1
dSsKK1c5SEN1L0JXZmJXd2x3d041dnh5bmVDb2g1Y0JCL2pkMUtUT1JndVlwdWF0SGI4NUFENUJS
aFlMWHdIRjd5VkgKK05WeEhldUdsSzMxeXVZQ0hOS3ZCSERnWkY1VHA4RnFLWG5WVStQbEtYQ1NV
NTYwMmMyVTV4SElGdktUeWlabE0KK2NZWE5TVXAwbGNOdy9pVFNWdHNQRTRrMXN0dTZxa1dkVDdI
L3VVK0dVQithTHFPK3N2QS9zOUdHWDhIWmd0K3IKK3ZTRkU4bElKQWdNQkFBRUNnZ0VCQUpBOTZE
OWRqSW95Z3hoYUVvbXBtQ29TdHprRDNVSE11eUNsVnFGdVJQNEoKK3FWaDBjNXhmTjF5SGM3YmRr
NXk4S1IwMDk2NlM1NzRjODFHM0NMc2x2OFBiMDlDK1ZRY0Njb2I3aStUaGFDV2cKKzFxTVZ4V2hp
Y1VwWlZsWEd1ZkxONDFIVWJyZ0lmQXk0QWwydEh3NGhqOHNEdDdGTWdHSERYWnpQVm5qa2U4cjEK
K085WWlKbDFReDRMN3ZNV3J1R2E5UVdqRmdIbkcrdWhhS2pzTDJ2N0pRT0d5NXQ4YWJvVnliN2g4
ckdnL21DK2UKK0hJWU91Y1YxYUVNZ1lWYUFuaEdzS01Ia3g1QTF4V3BYQlNydUcrR1JCeC9rWFda
K2tDTmNrTFh1VmRyaHE0SEkKK0FkYnhJenFRVFBNWHBPM1JBdWp5cnhrSGFiRU5NUEEvRkdINHN6
bWRMb0VDZ1lFQTl6OHBlNy92U2xXZ2Zoc0YKK3o1UW53V0h5RmpydWhnRC8yc2E0TEIvY213VFFk
R3c4RTVUTkhEYkNnbVM0OTlEWlVYSVp1Qk9UZWtkRVZEUWEKK25nOFZ5TDNvN0Rtcys1aVBpNWNx
c2NwMUtrakxFTXlQcHFzNEpUdWl4UnBqbU1meWNkeFZUcFhoY3VxbkpwVEwKK1FDOXBSNU4velpj
QU1EbEJ2MEZ6YzhUNzhYa0NnWUVBNDVEdWVXR0hWZjJ1NHVNWXlXeHlaaGFORGFnbDEzeXgKKy9v
U1NVVHpvTHZTcEdReEtrditmeFNOcUwzbnU1SWE2dUQ0R3U1TnViUDRIci9WZVNLUmZta1QxbHV2
RmNWZkMKK2tuOHI4YnNzWnE4NTVBVkp4WGE1SzFhdVdqQ3VGSGowcFlmNTZzZmhrUHhwWTBSUUVn
a3Z1RTNpb3NRMTJnRlgKK3Z3MTQ3RnRRVVJFQ2dZRUE4NVJwVlA0NVMzMWlPUHA4VmcxNndSeXll
RTRrc1NZSTZrcitKSkpiTHVtbVNCeGQKK2Ixa1lYU1JocWo1NnI4STBadlhHK3I5bWVuLzloQXMw
OGVTZ3JIelVITzJSU3VqNCtpZTZLeC92SC9KSkJFclQKK2R2cVZ2TENzNGd2bWRSeis4RWVHVDM1
L2RreFEwa1NpbktCWTB1Z3diNlhFekwyTDFWVXczYXdDSGRrQ2dZRUEKK3F0UUlnT3Y2dVUybmRF
REFRYXg4TURDcmtGM3lrbEhVR0ZrU3NaTkVSTU43RVFlT0Q4MSs5WEZCYkFSZmxnT2gKK3RWOHls
S3IzRVRDZE9yUzZJMVBwUkppUnQ4cWp2Qk1DU0JEWlB5eWdCekZ4QnNBRmdncytzODd0TVYwcndN
aVAKKzlwY2R2K1p1YVBWaWM1YzdlRjZYQ1FiR3BDTWd2ZGVXTkNCNzd3b1pQOUVDZ1lFQWxvYmtQ
R0RZQ3kvUmFWaVUKK0ZicTVHbzZ3MHBNVm5MellibjRHaDFBSlBlUUtJU3FYdEpaN3RxcGRXK2k3
cXprTHc3NEVMYVlDQlIyWkVscmoKK0VWZTVhUk94NlRGTjlSbmprRm55djlMZXlZTCtZUGM4QUl3
VlVDZVNQaWtTR0xGcEpmYS9qd0RtV2gzdkhtbUEKK05SVVA0MHdidEJpNDJDMnVkclR4VVdzSHhx
Yz0KKy0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUz
NjdjODlmZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCkBAIC0wLDAgKzEsMjQw
IEBACitDZXJ0aWZpY2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAzICgweDIpCisg
ICAgICAgIFNlcmlhbCBOdW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKKyAgICAgICAgU2lnbmF0dXJl
IEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDTj13
ZWItcGxhdGZvcm0tdGVzdHMKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZv
cmU6IEFwciAyMCAxMToyMDo1NiAyMDIwIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXBy
IDE4IDExOjIwOjU2IDIwMzAgR01UCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50
ZXN0CisgICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGlj
IEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBSU0EgUHVibGlj
LUtleTogKDIwNDggYml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAg
ICAgICAgIDAwOmRiOmM4OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgorICAg
ICAgICAgICAgICAgICAgICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5
Mzo5MToKKyAgICAgICAgICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6
NzA6NGM6ZjI6Y2U6NmY6CisgICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJj
OjI4OjIxOmIzOmIwOmEwOmYzOjFlOjMyOgorICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1
MDo4NzoxYjo3MTo0Yzo4Zjo5ZTo5YzoyYToyMDoxMDpkODoKKyAgICAgICAgICAgICAgICAgICAg
MzE6NDg6ZTk6ZDI6Yjk6M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6CisgICAgICAgICAg
ICAgICAgICAgIDc4Ojc2OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgor
ICAgICAgICAgICAgICAgICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5Nzow
YzowZDplNjoKKyAgICAgICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6
Zjg6ZGQ6ZDQ6YTQ6Y2U6NDY6CisgICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFk
OmJmOjM5OjAwOjNlOjQxOjQ2OjE2OjBiOjVmOgorICAgICAgICAgICAgICAgICAgICAwMTpjNTpl
ZjoyNTo0NzozNTo1Yzo0Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKKyAgICAgICAgICAgICAgICAg
ICAgODA6ODc6MzQ6YWI6YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6CisgICAgICAg
ICAgICAgICAgICAgIDc1OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0
OgorICAgICAgICAgICAgICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0
OTo0YTo3NDo5NToKKyAgICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6
MTM6ODk6MzU6YjI6ZGI6YmE6YWE6CisgICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZm
OmI5OjRmOjg2OjUwOjFmOjlhOjJlOmEzOmJlOmIyOgorICAgICAgICAgICAgICAgICAgICBmMDoz
ZjpiMzpkMTo4Njo1ZjpjMTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKKyAgICAgICAgICAgICAg
ICAgICAgNTI6MDkKKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisg
ICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0
cmFpbnRzOiAKKyAgICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1
YmplY3QgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdD
OjQxOjJCOjNCOjlGOjFCOjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCisgICAgICAgICAgICBY
NTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpG
NjpCOTpEQToxNjowNzowNTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpF
QworCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBEaWdp
dGFsIFNpZ25hdHVyZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAg
ICAgICBYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2Vi
IFNlcnZlciBBdXRoZW50aWNhdGlvbgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJu
YXRpdmUgTmFtZTogCisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AyNC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDc5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNTkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDI4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNzMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AxMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDYzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
OTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A5Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDEzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNjQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDYyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMjUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDgzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMjAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
OTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMw
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1
My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMjQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A3OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
OTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDI2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQ2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1
MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMzUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A1Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AyMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDE4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDg4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFk
Lnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFk
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUt
NmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2
ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFo
djI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZl
LTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1
M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0CisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVu
Y3J5cHRpb24KKyAgICAgICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1
OmQ1OmRjOjk5OjlmOjNmOgorICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6
NGU6Yzg6ZDQ6YWE6MzQ6OTU6ZTQ6OWU6CisgICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMToz
MTo2NzplNTphNjpkYTo4NTo2YjowZjpkNzo2NDpiNzoKKyAgICAgICAgIGU3OmViOmZlOjA5OmI2
Ojg4OmUxOjc0OjFkOjBjOjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgorICAgICAgICAgN2M6YmE6
ZTY6ZmI6NTI6MWQ6NTg6Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6CisgICAgICAg
ICA0MTo3MTo5OTphMzoxYTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoK
KyAgICAgICAgIGE5OmQ4OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAx
Ojk5OjdhOgorICAgICAgICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6
ZWM6NzU6YjI6Nzc6MTE6CisgICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpm
ZDphOTowYjphMjplZDoyZDoxYzo2ZToKKyAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEw
OmNhOmU4OmU2OmUwOjdhOmE5OmY0OjI2Ojk0OjZiOgorICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6
M2U6ZTA6ZWY6ZDI6YmU6MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6CisgICAgICAgICAwYzoyNDo4
Mzo3MjplMjplNDo2ZjoyNTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKKyAgICAgICAg
IGMzOmQ2OjA2OmFlOjFkOmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgor
ICAgICAgICAgMTc6ODc6MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6
NGQ6MDQ6CisgICAgICAgICBmZjo2MDpmZTplMworLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t
CitNSUlndkRDQ0g2U2dBd0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdO
VkJBTU1FbmRsCitZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3
MHpNREEwTVRneE1USXdOVFphCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGCitBQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1Jx
Y1lXcnhkNCs2U09vUGdOSUF1QVV5MDZqRG15a2s1RUZySTZ0CitSam5kaXdOWmNFenl6bThLNzRT
RkJjMjhLQ0d6c0tEekhqSkk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4CitsRlRVa2NaUHhl
QjRkbWNmUTB4RFpmeEcvM0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0Cisz
ZFNremtZTG1LYm1yUjIvT1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdS
ZVU2ZkJhCitpbDUxVlBqNVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGsw
bGJiRHhPSk5iTGJ1cXBGCituVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpT
Q1FJREFRQUJvNEllQkRDQ0hnQXdDUVlECitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZO
OFFTczdueHNOMXFtNHQwL21ZVnd3SHdZRFZSMGpCQmd3CitGb0FVOXJuYUZnY0Z1Mi9KWXpER1ow
RExBOU1la093d0N3WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCitDQ3NHQVFVRkJ3TUJN
SUlkandZRFZSMFJCSUlkaGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2CitjRGd1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0E1CitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZXNXZkQzEzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hWdmNETXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlWYjNBeExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBNE9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EwTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
Mk1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0EzTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0EzTnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1p
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5
Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0E1TkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0F6TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBMk1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0ExTWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0E0Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeE1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E0TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBeE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6
Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EyTWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0F5TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBek9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F5TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0E1Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
MU15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBME9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxt
NXZkQzEzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpiM0ExCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6CitkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlaYjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSVpiM0EwTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVk
R1Z6ZElJWmIzQTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2CitkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDCitHbTl3TlRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEz
WldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TXpFdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0duZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEY3pMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNK
dExuUmxjM1NDR205d01qRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDCitHbTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xt
NXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3TmpVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1
ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1NDR205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
Y3lMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDCitHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RRNUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TnprdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGd5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCitMbmQzZHpFdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4w
Z2hwdmNETTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlM
WEJzCitZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEVTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RZeUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjREk1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitPQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
CitaWE4wZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNETTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0ExTkM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitO
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwCitaWE4wZ2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVO
aTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
ek5TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3T1RrdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFi
M0EyTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCitZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0ExCitOUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQXpOQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhYjNBNU15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbmQzZHpFdWQzZDNMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdW
emRJSWFiM0F4TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRs
CitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0F5CitOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYWIzQXhOUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpndWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2Citj
bTB1ZEdWemRJSWFiM0EyTmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQz
ZDNMbmRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWFiM0EzCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d01U
QXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2CitkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaHQz
ZDNjeUxuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2gxM2QzY3VkM2QzCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDSG5kM2R5NTNkM2N5CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJZWQzZDNNaTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N1
ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCitNaTV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJt
CitiM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0gzZDNkekV1CitkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2Rt
VXRObXhoWkM1M2QzY3VkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGha
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0CitMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCitaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0CitM
blJsYzNTQ0kzZDNkekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdp
WjRiaTB0CitiSFpsTFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1k
M2QzTG5odUxTMXNkbVV0CitObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1
TFMxc2RtVXRObXhoWkM1M2QzY3hMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNk
M01pNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2lkM2Qz
Y3hMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCitlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVM
UzFzCitkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
TFhkM2R5NTRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUl0ZUc0dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaTE0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4
YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0
eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0x
CitNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJ
dWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NMM2h1TFMxc2RtVXRObXhoCitaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnakYzZDNjdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxCitObVJ6TlROc2QzZHJjbkZvZGpJ
NFlTNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0CitiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5Citk
M2QzTVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsCitjM1NDTW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBM
WGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0
WVM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXVlRzR0TFd4MlpTMDJiR0ZrCitMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnalo0YmkwdGJIWmxMVFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCithM0p4YUhZeU9HRXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamho
TG5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNk
bVV0CitObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsCitjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMx
dU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJp
MHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9k
akk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCitLb1pJaHZjTkFRRUxCUUFE
Z2dFQkFBdUxWV3EwWmFncU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCitOSlhrbmt2
a2RPVEU3QkV4WitXbTJvVnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpO
CithS05Wakp0WHU0a3lFRUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRm
ZUhRR1plazl5CitSMm1jbUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1
RUYxRENtWkFRUXl1am00SHFwCis5Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1
RzhscU83RkVvblozWStDRk1QV0JxNGR1M3M4CisvSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5
Nk5DNkJtOU5CUDlnL3VNPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2Nl
cnRzL2NvbmZpZy5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTZkMDUyOWZi
OTQ0OWM0YmZiMGM5MzU0NmE3OTYyYTVhYmQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29u
ZmlnLmpzb24KQEAgLTAsMCArMSwxNyBAQAoreworICAgICJwb3J0cyI6IHsKKyAgICAgICAgImh0
dHAiOiBbXSwKKyAgICAgICAgImh0dHBzIjogWyJhdXRvIl0sCisgICAgICAgICJ3cyI6IFtdLAor
ICAgICAgICAid3NzIjogW10KKyAgICB9LAorICAgICJjaGVja19zdWJkb21haW5zIjogZmFsc2Us
CisgICAgInNzbCI6IHsKKyAgICAgICAgInR5cGUiOiAib3BlbnNzbCIsCisgICAgICAgICJvcGVu
c3NsIjogeworICAgICAgICAgICAgImR1cmF0aW9uIjogMzY1MCwKKyAgICAgICAgICAgICJmb3Jj
ZV9yZWdlbmVyYXRlIjogZmFsc2UsCisgICAgICAgICAgICAiYmFzZV9wYXRoIjogInRvb2xzL2Nl
cnRzIgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWlj
L2NlcnRzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZmM1YTE5ZjNjYjlkNjQzM2FlNDM0
MzUxM2U4NDQ1ZGU4NDg4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cK
QEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAor
CitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcXVpYy9jZXJ0cy9jb25maWcuanNvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMv
Y29tbWFuZHMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDQzMjJlZWQzYmFmNDY3YzZkODA5ZmMyNmFjOTU4
NTk4OTQyMzExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KQEAgLTAsMCArMSwxMyBA
QAoreworICAic2VydmVxdWljIjogeworICAgICJwYXRoIjogInNlcnZlLnB5IiwKKyAgICAic2Ny
aXB0IjogInJ1biIsCisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAicHkzb25seSI6
IHRydWUsCisgICAgImhlbHAiOiAiU3RhcnQgdGhlIFFVSUMgc2VydmVyIiwKKyAgICAidmlydHVh
bGVudiI6IHRydWUsCisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICJyZXF1aXJlbWVudHMu
dHh0IgorICAgIF0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9x
dWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNGFkMTdmMTk1YzZlNWQyMzNl
ODRhOWIyMzkwNGNjY2ZlY2NkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2
ZXIucHkKQEAgLTAsMCArMSwyNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdXJsbGliLnBhcnNlCitmcm9t
IHR5cGluZyBpbXBvcnQgRGljdCwgT3B0aW9uYWwKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1w
b3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25m
aWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuY29u
bmVjdGlvbiBpbXBvcnQgRU5EX1NUQVRFUworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9y
dCBTdHJlYW1EYXRhUmVjZWl2ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
U2Vzc2lvblRpY2tldAorCitTRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5zcG9ydCcKKworaGFu
ZGxlcnNfcGF0aCA9IE5vbmUKKworCitjbGFzcyBFdmVudEhhbmRsZXI6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGNvbm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0
OiBEaWN0KToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBz
ZWxmLmdsb2JhbF9kaWN0ID0gZ2xvYmFsX2RpY3QKKworICAgIGRlZiBoYW5kbGVfY2xpZW50X2lu
ZGljYXRpb24oCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgb3JpZ2luOiBzdHIsCisg
ICAgICAgICAgICBxdWVyeTogRGljdFtzdHIsIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIG5hbWUg
PSAnaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uJworICAgICAgICBpZiBuYW1lIGluIHNlbGYuZ2xv
YmFsX2RpY3Q6CisgICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25hbWVdKHNlbGYuY29ubmVj
dGlvbiwgb3JpZ2luLCBxdWVyeSkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6
IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfZXZlbnQnCisgICAg
ICAgIGlmIG5hbWUgaW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFs
X2RpY3RbbmFtZV0oc2VsZi5jb25uZWN0aW9uLCBldmVudCkKKworCitjbGFzcyBRdWljVHJhbnNw
b3J0UHJvdG9jb2woUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygq
YXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuc3RyZWFtcyA9IGRpY3QoKQorICAgICAgICBz
ZWxmLnBlbmRpbmdfZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9m
aW5pc2hlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZGF0YSA9IGIn
JworICAgICAgICBzZWxmLmhhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNl
aXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBwcmVmaXggPSAn
ISEnCisgICAgICAgIGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ1FVSUMgZXZlbnQ6ICVzJyAl
IHR5cGUoZXZlbnQpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuY2xp
ZW50X2luZGljYXRpb25fZmluaXNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFu
Y2UoZXZlbnQsIFN0cmVhbURhdGFSZWNlaXZlZCkgYW5kCisgICAgICAgICAgICAgICAgICAgIGV2
ZW50LnN0cmVhbV9pZCA9PSAyKToKKyAgICAgICAgICAgICAgICAjIGNsaWVudCBpbmRpY2F0aW9u
IHByb2Nlc3MKKyAgICAgICAgICAgICAgICBwcmVmaXggPSAnQ2xpZW50IGluZGljYXRpb24gZXJy
b3I6ICcKKyAgICAgICAgICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgKz0gZXZl
bnQuZGF0YQorICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2Rh
dGEpID4gNjU1MzU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndG9vIGxh
cmdlIGRhdGEgZm9yIGNsaWVudCBpbmRpY2F0aW9uJykKKyAgICAgICAgICAgICAgICBpZiBldmVu
dC5lbmRfc3RyZWFtOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfY2xpZW50X2lu
ZGljYXRpb24oKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xv
c2VkKCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAg
ICAgcHJlZml4ID0gJ0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCisgICAgICAgICAgICAgICAgICAg
IGZvciBlIGluIHNlbGYucGVuZGluZ19ldmVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmhhbmRsZXIuaGFuZGxlX2V2ZW50KGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVu
ZGluZ19ldmVudHMuY2xlYXIoKQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5jbGllbnRfaW5k
aWNhdGlvbl9maW5pc2hlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFw
cGVuZChldmVudCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5kbGVyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAg
ICAgICAgICAgIHNlbGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZlbnQpCisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKyAgICAg
ICAgICAgIGxvZ2dpbmcubG9nKGxvZ2dpbmcuV0FSTiwgcHJlZml4ICsgc3RyKGUpKQorICAgICAg
ICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2Vs
ZiwgYnMpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAga2V5X2IgPSBicy5yZWFk
KDIpCisgICAgICAgICAgICBpZiBsZW4oa2V5X2IpID09IDA6CisgICAgICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgICAgICBsZW5ndGhfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxl
bihrZXlfYikgIT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0
byBnZXQgIktleSIgZmllbGQnKQorICAgICAgICAgICAgaWYgbGVuKGxlbmd0aF9iKSAhPSAyOgor
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiTGVuZ3RoIiBm
aWVsZCcpCisgICAgICAgICAgICBrZXkgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGtleV9iKVswXQor
ICAgICAgICAgICAgbGVuZ3RoID0gc3RydWN0LnVucGFjaygnIUgnLCBsZW5ndGhfYilbMF0KKyAg
ICAgICAgICAgIHZhbHVlID0gYnMucmVhZChsZW5ndGgpCisgICAgICAgICAgICBpZiBsZW4odmFs
dWUpICE9IGxlbmd0aDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RydW5jYXRl
ZCAiVmFsdWUiIGZpZWxkJykKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQorCisgICAg
ZGVmIHByb2Nlc3NfY2xpZW50X2luZGljYXRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgb3Jp
Z2luID0gTm9uZQorICAgICAgICBvcmlnaW5fc3RyaW5nID0gTm9uZQorICAgICAgICBwYXRoID0g
Tm9uZQorICAgICAgICBwYXRoX3N0cmluZyA9IE5vbmUKKyAgICAgICAgS0VZX09SSUdJTiA9IDAK
KyAgICAgICAgS0VZX1BBVEggPSAxCisgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5w
YXJzZV9jbGllbnRfaW5kaWNhdGlvbigKKyAgICAgICAgICAgICAgICBpby5CeXRlc0lPKHNlbGYu
Y2xpZW50X2luZGljYXRpb25fZGF0YSkpOgorICAgICAgICAgICAgaWYga2V5ID09IEtFWV9PUklH
SU46CisgICAgICAgICAgICAgICAgb3JpZ2luX3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAg
ICAgICAgICAgICAgb3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKG9yaWdpbl9zdHJpbmcp
CisgICAgICAgICAgICBlbGlmIGtleSA9PSBLRVlfUEFUSDoKKyAgICAgICAgICAgICAgICBwYXRo
X3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5w
YXJzZS51cmxwYXJzZShwYXRoX3N0cmluZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgIyBXZSBtdXN0IGlnbm9yZSB1bnJlY29nbml6ZWQgZmllbGRzLgorICAgICAgICAgICAg
ICAgIHBhc3MKKyAgICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLAorICAgICAgICAgICAg
ICAgICAgICAnb3JpZ2luID0gJXMsIHBhdGggPSAlcycgJSAob3JpZ2luX3N0cmluZywgcGF0aF9z
dHJpbmcpKQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTm8gb3JpZ2luIGlzIGdpdmVuJykKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgor
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBwYXRoIGlzIGdpdmVuJykKKyAgICAgICAg
aWYgb3JpZ2luLnNjaGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1lICE9ICdodHRwJzoK
KyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9yaWdp
bl9zdHJpbmcpCisgICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5nKQorCisg
ICAgICAgICMgVG8gbWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2NlcHQgb25seSBzaW1w
bGUgcGF0aCBzdHJpbmdzLgorICAgICAgICBtID0gcmUuY29tcGlsZSgnXi8oW2EtekEtWjAtOVwu
X1wtXSspJCcpLm1hdGNoKHBhdGgucGF0aCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICVzJyAlIHBhdGhfc3RyaW5nKQor
CisgICAgICAgIGhhbmRsZXJfbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgcXVlcnkgPSBkaWN0
KHVybGxpYi5wYXJzZS5wYXJzZV9xc2wocGF0aC5xdWVyeSkpCisgICAgICAgIHNlbGYuaGFuZGxl
ciA9IHNlbGYuY3JlYXRlX2V2ZW50X2hhbmRsZXIoaGFuZGxlcl9uYW1lKQorICAgICAgICBzZWxm
LmhhbmRsZXIuaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uKG9yaWdpbl9zdHJpbmcsIHF1ZXJ5KQor
ICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IFRydWUKKyAgICAg
ICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLCAnQ2xpZW50IGluZGljYXRpb24gZmluaXNoZWQn
KQorCisgICAgZGVmIGNyZWF0ZV9ldmVudF9oYW5kbGVyKHNlbGYsIGhhbmRsZXJfbmFtZTogc3Ry
KSAtPiBOb25lOgorICAgICAgICBnbG9iYWxfZGljdCA9IHt9CisgICAgICAgIHdpdGggb3Blbiho
YW5kbGVyc19wYXRoICsgJy8nICsgaGFuZGxlcl9uYW1lKSBhcyBmOgorICAgICAgICAgICAgZXhl
YyhmLnJlYWQoKSwgZ2xvYmFsX2RpY3QpCisgICAgICAgIHJldHVybiBFdmVudEhhbmRsZXIoc2Vs
ZiwgZ2xvYmFsX2RpY3QpCisKKyAgICBkZWYgaXNfY2xvc2luZ19vcl9jbG9zZWQoc2VsZikgLT4g
Ym9vbDoKKyAgICAgICAgaWYgc2VsZi5fcXVpYy5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX3F1aWMuX3N0YXRlIGluIEVORF9TVEFURVM6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFz
cyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgJycnCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9y
ZSBmb3Igc2Vzc2lvbiB0aWNrZXRzLgorICAgICcnJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tl
dF0gPSB7fQorCisgICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5v
bmU6CisgICAgICAgIHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAg
ZGVmIHBvcChzZWxmLCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgor
ICAgICAgICByZXR1cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2Vy
KGRlc2NyaXB0aW9uPSdRVUlDIHNlcnZlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy1jJywKKyAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICB0eXBlPXN0ciwK
KyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExTIGNlcnRp
ZmljYXRlIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgJy0taG9zdCcsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBk
ZWZhdWx0PSc6OicsCisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJl
c3MgKGRlZmF1bHRzIHRvIDo6KScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICctLXBvcnQnLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMz
LAorICAgICAgICBoZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0
byA0NDMzKScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctaycs
CisgICAgICAgICctLXByaXZhdGUta2V5JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJl
cXVpcmVkPVRydWUsCisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9t
IHRoZSBzcGVjaWZpZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICctLWhhbmRsZXJzLXBhdGgnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVx
dWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNUcmFu
c3BvcnQgZXZlbnQgaGFuZGxlcnMnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAnLXYnLAorICAgICAgICAnLS12ZXJib3NlJywKKyAgICAgICAgYWN0aW9uPSdzdG9y
ZV90cnVlJywKKyAgICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCisgICAg
KQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29u
ZmlnKAorICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMg
JShtZXNzYWdlKXMnLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9z
ZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsnd3EtdnZ2LTAxJ10gKyBbJ3Np
ZHVjayddLAorICAgICAgICBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9m
cmFtZV9zaXplPTY1NTM2LAorICAgICkKKworICAgIGhhbmRsZXJzX3BhdGggPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5leHBhbmR1c2VyKGFyZ3MuaGFuZGxlcnNfcGF0aCkpCisgICAgbG9nZ2lu
Zy5sb2cobG9nZ2luZy5JTkZPLCAncG9ydCA9ICVzJyAlIGFyZ3MucG9ydCkKKyAgICBsb2dnaW5n
LmxvZyhsb2dnaW5nLklORk8sICdoYW5kbGVycyBwYXRoID0gJXMnICUgaGFuZGxlcnNfcGF0aCkK
KworICAgICMgbG9hZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQorICAgIGNvbmZpZ3VyYXRpb24u
bG9hZF9jZXJ0X2NoYWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3MucHJpdmF0ZV9rZXkpCisKKyAg
ICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgbG9vcCA9IGFzeW5j
aW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICBzZXJ2ZSgKKyAgICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAgICAgIGFyZ3MucG9ydCwK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNy
ZWF0ZV9wcm90b2NvbD1RdWljVHJhbnNwb3J0UHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9u
X3RpY2tldF9mZXRjaGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAgICBzZXNzaW9uX3Rp
Y2tldF9oYW5kbGVyPXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICkKKyAgICApCisgICAgdHJ5
OgorICAgICAgICBsb29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1
cHQ6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50
cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTY1MjYwYzc4ZjdhYzg1NzliZDkxMWJjZjljY2U2MzY0NWM4MGU0
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEgQEAKK2Fpb3F1
aWM9PTAuOC43CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5M2Yy
NWUyN2JkYjNhZmQ0YmYzOTkyMWU5NmFiZGNjNDIzM2Y5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2
ZS5weQpAQCAtMCwwICsxLDI4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IHN5cworCisKK2RlZiBnZXRfcGFyc2VyKCk6CisgICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVy
Ym9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJ0dXJuIG9uIHZlcmJvc2UgbG9nZ2luZyIpCisgICAgcmV0dXJuIHBh
cnNlcgorCisKK2RlZiBydW4odmVudiwgKiprd2FyZ3MpOgorICAgICMgVE9ETyhIZXhjbGVzKTog
UmVwbGFjZSB0aGlzIHdpdGggYWN0dWFsIGltcGxlbWVudGF0aW9uLgorICAgIHByaW50KHN5cy52
ZXJzaW9uKQorICAgIGFzc2VydCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBpbXBv
cnQgYWlvcXVpYworICAgIHByaW50KCdhaW9xdWljOiAnICsgYWlvcXVpYy5fX3ZlcnNpb25fXykK
KworCitkZWYgbWFpbigpOgorICAgIGt3YXJncyA9IHZhcnMoZ2V0X3BhcnNlcigpLnBhcnNlX2Fy
Z3MoKSkKKyAgICByZXR1cm4gcnVuKE5vbmUsICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWlt
cG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdkNTQ1OWUxNTFmMmU0MjkzOWRlOTk1N2I1MTUzM2FiYTZh
MGRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBACitU
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgor
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBm
aWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvUkVBRE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRf
c2VydmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2Zs
YWtlOC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3JlcXVpcmVtZW50c19mbGFrZTgudHh0CmluZGV4IDBhNDUyMjQwMTY0MTdjZGRiZjU5MjA5
MTk2MzgwY2NlMGEwODllZGYuLmFlMTZiZTM5NTVmYmYzZDVmYTk2NDg5NjdjNmM4ZDM5NzUxOTAx
M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dApA
QCAtMSw0ICsxLDQgQEAKLWZsYWtlOD09My43LjkKLXB5Y29kZXN0eWxlPT0yLjUuMAotcHlmbGFr
ZXM9PTIuMS4xCi1wZXA4LW5hbWluZz09MC45LjEKK2ZsYWtlOD09My44LjIKK3B5Y29kZXN0eWxl
PT0yLjYuMAorcHlmbGFrZXM9PTIuMi4wCitwZXA4LW5hbWluZz09MC4xMC4wCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVp
cmVtZW50c19teXB5LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDE5NGY0Mjg0YjI2OTAzYjFm
YWY5NjliNmFiNWQzMGY1YzQ4ZWI1NjIuLjk4OGZmZTg0ODE3NGY3MjE1Mjc4YzJjNDAxOWY5MjRi
ZWQzYTYxZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0
CkBAIC0xLDMgKzEsMyBAQAotbXlweT09MC43NTAKK215cHk9PTAuNzcwCiBteXB5LWV4dGVuc2lv
bnM9PTAuNC4zCi10eXBlZC1hc3Q9PTEuNC4wCit0eXBlZC1hc3Q9PTEuNC4xCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5l
ci9yZXBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKaW5kZXggNWViOGQ2N2M3ZjZkYTljNWZkMDFkZThkZTQw
ZjVjYzkyYzExYmU5MC4uZTk5ODZmZGIzOTgyNWNkNWU0OWY4ZDRhMTU4Yzc5NDhhZDUyODFlNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9ydW5uZXIvcmVwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQpAQCAtNSwxMCArNSwxMSBAQCBm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgYXJncGFyc2UKIGlt
cG9ydCBqc29uCiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKKwogZnJvbSBjZ2kgaW1wb3J0IGVz
Y2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLQotaW1wb3J0IHR5cGVz
Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIAogZGVmIGh0bWxfZXNjYXBlKGl0ZW0sIGVz
Y2FwZV9xdW90ZT1GYWxzZSk6CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIE5vZGUob2JqZWN0KToK
ICAgICAgICAgICAgIGF0dHJzX3VuaWNvZGUgPSAiICIgKyAiICIuam9pbigiJXM9XCIlc1wiIiAl
IChodG1sX2VzY2FwZShrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0bWxfZXNjYXBlKHZhbHVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVz
Y2FwZV9xdW90ZT1UcnVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJp
dGVtcyhzZWxmLmF0dHJzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dHJzX3VuaWNv
ZGUgPSAiIgogICAgICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2VsZi5uYW1lLApA
QCAtMTU3LDcgKzE1OCw3IEBAIGRlZiB0ZXN0X2lkKGlkKToKIAogZGVmIGFsbF90ZXN0cyhkYXRh
KToKICAgICB0ZXN0cyA9IGRlZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4g
ZGF0YS5pdGVyaXRlbXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEp
OgogICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAg
IGlkID0gdGVzdF9pZChyZXN1bHRbInRlc3QiXSkKICAgICAgICAgICAgIHRlc3RzW2lkXSB8PSB7
c3VidGVzdFsibmFtZSJdIGZvciBzdWJ0ZXN0IGluIHJlc3VsdFsic3VidGVzdHMiXX0KQEAgLTE4
NSw3ICsxODYsNyBAQCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKIAogICAgIHJlc3VsdHNfYnlf
dGVzdCA9IGRlZmF1bHRkaWN0KHJlc3VsdCkKIAotICAgIGZvciBVQSwgcmVzdWx0cyBpbiBkYXRh
Lml0ZXJpdGVtcygpOgorICAgIGZvciBVQSwgcmVzdWx0cyBpbiBpdGVyaXRlbXMoZGF0YSk6CiAg
ICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gcmVzdWx0c1sicmVzdWx0cyJdOgogICAgICAgICAgICAg
aWQgPSB0ZXN0X2lkKHRlc3RfZGF0YVsidGVzdCJdKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVz
dWx0c19ieV90ZXN0W2lkXQpAQCAtMjMwLDEwICsyMzEsMTAgQEAgZGVmIHRlc3RfbGluayh0ZXN0
X2lkLCBzdWJ0ZXN0PU5vbmUpOgogZGVmIHN1bW1hcnkoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgog
ICAgICIiIlJlbmRlciB0aGUgaW1wbGVtZW50YXRpb24gcmVwb3J0IHN1bW1hcnkiIiIKICAgICBu
b3RfcGFzc2luZyA9IFtdCi0gICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gcmVzdWx0c19ieV90ZXN0
Lml0ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRz
X2J5X3Rlc3QpOgogICAgICAgICBpZiBub3QgYW55KGl0ZW1bMF0gaW4gKCJQQVNTIiwgIk9LIikg
Zm9yIGl0ZW0gaW4gcmVzdWx0c1siaGFybmVzcyJdLnZhbHVlcygpKToKICAgICAgICAgICAgIG5v
dF9wYXNzaW5nLmFwcGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUs
IHN1YnRlc3RfcmVzdWx0cyBpbiByZXN1bHRzWyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAg
ICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0X3Jlc3VsdHMgaW4gaXRlcml0ZW1zKHJlc3Vs
dHNbInN1YnRlc3RzIl0pOgogICAgICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdID09ICJQQVNT
IiBmb3IgaXRlbSBpbiBzdWJ0ZXN0X3Jlc3VsdHMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAg
IG5vdF9wYXNzaW5nLmFwcGVuZCgodGVzdCwgc3VidGVzdF9uYW1lKSkKICAgICBpZiBub3RfcGFz
c2luZzoKQEAgLTI2MCw3ICsyNjEsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1
bHQpOgogICAgICAgICBjbGFzc189InRlc3QiCiAgICAgKQogCi0gICAgZm9yIG5hbWUsIHN1YnRl
c3RfcmVzdWx0IGluIHNvcnRlZChyZXN1bHRbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCkpOgorICAg
IGZvciBuYW1lLCBzdWJ0ZXN0X3Jlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdFsic3Vi
dGVzdHMiXSkpOgogICAgICAgICB5aWVsZCBoLnRyKAogICAgICAgICAgICAgaC50ZChuYW1lKSwK
ICAgICAgICAgICAgIFtzdGF0dXNfY2VsbChzdGF0dXMsIG1lc3NhZ2UpCkBAIC0yNzEsNyArMjcy
LDcgQEAgZGVmIHJlc3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKIAogZGVmIHJlc3VsdF9i
b2RpZXMoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgogICAgIHJldHVybiBbaC50Ym9keShyZXN1bHRf
cm93cyhVQXMsIHRlc3QsIHJlc3VsdCkpCi0gICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGlu
IHNvcnRlZChyZXN1bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCkpXQorICAgICAgICAgICAgZm9yIHRl
c3QsIHJlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCkpXQogCiAKIGRl
ZiBnZW5lcmF0ZV9odG1sKFVBcywgcmVzdWx0c19ieV90ZXN0KToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5l
ci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cnVubmVyL3J1bm5lci5qcwppbmRleCBkYWFmOWQ0NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1
MmQwMDM1Li4yNzk0NmUxMzliOWFhM2I4MDZhMWFkMjQ1MTUzOTg4Y2Y3OGY3NDQyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1
bm5lci9ydW5uZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzCkBAIC0xNiwyMiArMTYsNiBAQCBNYW5pZmVz
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZ2VuZXJhdGUobG9hZGVkX2NhbGxiYWNrKTsK
ICAgICB9LAogCi0gICAgZG9fbG9hZDogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7Ci0gICAg
ICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRl
ICE9PSA0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCEoeGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCAiICsgdGhpcy5wYXRoICsg
IiBmYWlsZWQgdG8gbG9hZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kYXRh
ID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGxvYWRlZF9jYWxs
YmFjaygpOwotICAgICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCB0
aGlzLnBhdGgpOwotICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9LAotCiAgICAgZ2VuZXJh
dGU6IGZ1bmN0aW9uKGxvYWRlZF9jYWxsYmFjaykgewogICAgICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlv
bigpIHsKQEAgLTQxLDcgKzI1LDggQEAgTWFuaWZlc3QucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWYgKCEoeGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7CiAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCBnZW5lcmF0aW9uIGZhaWxlZCIp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kb19sb2FkKGxvYWRlZF9jYWxsYmFj
ayk7CisgICAgICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQp
OworICAgICAgICAgICAgbG9hZGVkX2NhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKTsK
ICAgICAgICAgeGhyLm9wZW4oIlBPU1QiLCAidXBkYXRlX21hbmlmZXN0LnB5Iik7CiAgICAgICAg
IHhoci5zZW5kKG51bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRl
X21hbmlmZXN0LnB5CmluZGV4IDcxNGQyYjUzYjM5YTk4OWQ0ZjMzY2UxZDU4N2Q2MzRkMjBhNjFk
NDQuLjFhMjRlMTQzNDc4ZWFjYzBmNjI0MzBiNWJiY2IyMzNjYzY1MDI0YTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVy
L3VwZGF0ZV9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKQEAgLTcsMjEgKzcs
MzAgQEAgbG9jYWxwYXRocyA9IGltcC5sb2FkX3NvdXJjZSgibG9jYWxwYXRocyIsIG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MKIAogcm9vdCA9IGxvY2FscGF0aHMucmVwb19y
b290CiAKLWZyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK2Zyb20gbWFuaWZl
c3QgaW1wb3J0IG1hbmlmZXN0CiAKIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICBw
YXRoID0gb3MucGF0aC5qb2luKHJvb3QsICJNQU5JRkVTVC5qc29uIikKIAotICAgIG1hbmlmZXN0
X2ZpbGUgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3Qu
bG9hZChyb290LCBwYXRoKQotICAgIGV4Y2VwdCBtYW5pZmVzdC5NYW5pZmVzdFZlcnNpb25NaXNt
YXRjaDoKLSAgICAgICAgcGFzcwotICAgIGlmIG1hbmlmZXN0X2ZpbGUgaXMgTm9uZToKLSAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCIvIikKLQotICAgIHVwZGF0ZS51
cGRhdGUocm9vdCwgbWFuaWZlc3RfZmlsZSkKLQotICAgIG1hbmlmZXN0LndyaXRlKG1hbmlmZXN0
X2ZpbGUsIHBhdGgpCi0KLSAgICByZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2pzb24iKV0sIGpzb24uZHVtcHMoeyJ1cmwiOiAiL01BTklGRVNULmpzb24ifSkKKyAgICAjIFRP
RE8gbWFrZSB0aGlzIGRvd25sb2FkIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcgZnJvbSBzY3JhdGNo
IHdoZW4gcG9zc2libGUKKyAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZF9hbmRfdXBk
YXRlKHJvb3QsIHBhdGgsICIvIiwgcGFyYWxsZWw9RmFsc2UpCisKKyAgICBzdXBwb3J0ZWRfdHlw
ZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAibWFudWFsIl0KKyAgICBkYXRhID0geyJp
dGVtcyI6IHt9LAorICAgICAgICAgICAgInVybF9iYXNlIjogIi8ifQorICAgIGZvciBpdGVtX3R5
cGUgaW4gc3VwcG9ydGVkX3R5cGVzOgorICAgICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0g
PSB7fQorICAgIGZvciBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2ZpbGUuaXRl
cnR5cGVzKCpzdXBwb3J0ZWRfdHlwZXMpOgorICAgICAgICB0ZXN0c19kYXRhID0gW10KKyAgICAg
ICAgZm9yIGl0ZW0gaW4gdGVzdHM6CisgICAgICAgICAgICB0ZXN0X2RhdGEgPSBbaXRlbS51cmxb
MTpdXQorICAgICAgICAgICAgaWYgaXRlbV90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAg
ICAgICB0ZXN0X2RhdGEuYXBwZW5kKGl0ZW0ucmVmZXJlbmNlcykKKyAgICAgICAgICAgIHRlc3Rf
ZGF0YS5hcHBlbmQoe30pCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgIT0gIm1hbnVhbCI6Cisg
ICAgICAgICAgICAgICAgdGVzdF9kYXRhWy0xXVsidGltZW91dCJdID0gaXRlbS50aW1lb3V0Cisg
ICAgICAgICAgICB0ZXN0c19kYXRhLmFwcGVuZCh0ZXN0X2RhdGEpCisgICAgICAgIGFzc2VydCBw
YXRoIG5vdCBpbiBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0KKyAgICAgICAgZGF0YVsiaXRlbXMi
XVtpdGVtX3R5cGVdW3BhdGhdID0gdGVzdHNfZGF0YQorCisgICAgcmV0dXJuIFsoIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIildLCBqc29uLmR1bXBzKGRhdGEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZl
L3NlcnZlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zZXJ2ZS9zZXJ2ZS5weQppbmRleCAxODY4YjFhMzZlNTFjMTg3NDkxZDczYWEyNzA4NDg0
ZGE4ODIwNDJmLi40M2ZmN2JkMGRmYmFjNWVhZTc0Y2JlNDMyMzVmMDE2YzRmZTE0ZDM1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NlcnZlL3NlcnZlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IHN0YW5kYWxvbmUgYXMgcHl3ZWJzb2NrZXQKIAogCiBFRElUX0hP
U1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1YmRvbWFp
bnMgIgotICAgICAgICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2aWNl
IGluIC9ldGMvaG9zdHMuICIKLSAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0I3J1bm5pbmctdGhlLXRlc3RzICIKKyAgICAgICAg
ICAgICAgICAgICAiYXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3Rz
LlxuIgorICAgICAgICAgICAgICAgICAgICJTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMu
b3JnL3J1bm5pbmctdGVzdHMvZnJvbS1sb2NhbC1zeXN0ZW0uaHRtbCNzeXN0ZW0tc2V0dXAgIgog
ICAgICAgICAgICAgICAgICAgICJmb3IgaW5zdHJ1Y3Rpb25zLiIpCiAKIApAQCAtMTc4LDkgKzE3
OCw5IEBAIGNsYXNzIEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAKICAgICBk
ZWYgY2hlY2tfZXhwb3N1cmUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHNlbGYuZ2xvYmFs
X3R5cGU6Ci0gICAgICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAgICBnbG9iYWxzID0g
dSIiCiAgICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYuX2dldF9tZXRhZGF0YShy
ZXF1ZXN0KToKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAg
ICAgICAgIGlmIGtleSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9
IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE4OSwyMyArMTg5LDIzIEBA
IGNsYXNzIEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdsb2JhbF90eXBlKQogCiAgICAgZGVmIF9tZXRh
X3JlcGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJ0aW1l
b3V0IjoKLSAgICAgICAgICAgIGlmIHZhbHVlID09IGIibG9uZyI6CisgICAgICAgIGlmIGtleSA9
PSAidGltZW91dCI6CisgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibG9uZyI6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuICc8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4nCi0gICAg
ICAgIGlmIGtleSA9PSBiInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2Rl
KCd1dGYtOCcpLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICAg
ICAgICBpZiBrZXkgPT0gInRpdGxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFj
ZSgiJiIsICImYW1wOyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgICAgICAgICByZXR1cm4g
Jzx0aXRsZT4lczwvdGl0bGU+JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBk
ZWYgX3NjcmlwdF9yZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5
ID09IGIic2NyaXB0IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRm
LTgnKS5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQorICAgICAg
ICBpZiBrZXkgPT0gInNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBs
YWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQogICAgICAgICAgICAgcmV0
dXJuICc8c2NyaXB0IHNyYz0iJXMiPjwvc2NyaXB0PicgJSBhdHRyaWJ1dGUKICAgICAgICAgcmV0
dXJuIE5vbmUKIAogCiBjbGFzcyBXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgot
ICAgIGdsb2JhbF90eXBlID0gYiJkZWRpY2F0ZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5cGUgPSAi
ZGVkaWNhdGVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkud29ya2VyLmh0bWwi
LCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpLAogICAgICAgICAgICAgICAgICAgICAoIi53
b3JrZXIuaHRtbCIsICIud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBo
dG1sPgpAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFdpbmRvd0hhbmRsZXIoSHRtbFdyYXBwZXJI
YW5kbGVyKToKIAogCiBjbGFzcyBBbnlIdG1sSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgot
ICAgIGdsb2JhbF90eXBlID0gYiJ3aW5kb3ciCisgICAgZ2xvYmFsX3R5cGUgPSAid2luZG93Igog
ICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIildCiAgICAgd3JhcHBl
ciA9ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTI1NCw3ICsy
NTQsNyBAQCBzZWxmLkdMT0JBTCA9IHsKIAogCiBjbGFzcyBTaGFyZWRXb3JrZXJzSGFuZGxlcihI
dG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzaGFyZWR3b3JrZXIiCisg
ICAgZ2xvYmFsX3R5cGUgPSAic2hhcmVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5h
bnkuc2hhcmVkd29ya2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAg
IHdyYXBwZXIgPSAiIiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0y
NjksNyArMjY5LDcgQEAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigi
JShwYXRoKXMlKHF1ZXJ5KXMiKSk7CiAKIAogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0
bWxXcmFwcGVySGFuZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiInNlcnZpY2V3b3JrZXIiCisg
ICAgZ2xvYmFsX3R5cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIu
YW55LnNlcnZpY2V3b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCiAg
ICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAg
LTMwNywxMSArMzA3LDExIEBAIGRvbmUoKTsKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRl
ZiBfc2NyaXB0X3JlcGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkg
PT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUuZGVjb2RlKCd1dGYt
OCcpLnJlcGxhY2UoIlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlm
IGtleSA9PSAic2NyaXB0IjoKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLnJlcGxhY2Uo
IlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ2lt
cG9ydFNjcmlwdHMoIiVzIiknICUgYXR0cmlidXRlCi0gICAgICAgIGlmIGtleSA9PSBiInRpdGxl
IjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIlxc
IiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUi
OgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFj
ZSgnIicsICdcXCInKQogICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFfVElUTEUgPSAiJXMi
OycgJSB2YWx1ZQogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNTEsNyArMzUxLDcgQEAgY2xh
c3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAg
ICAgICAgICAgICBoZWFkZXJzID0ge30KICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzLlN0YXRp
Y0hhbmRsZXIocGF0aCwgZm9ybWF0X2FyZ3MsIGNvbnRlbnRfdHlwZSwgKipoZWFkZXJzKQotICAg
ICAgICBzZWxmLmFkZF9oYW5kbGVyKGIiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKKyAgICAg
ICAgc2VsZi5hZGRfaGFuZGxlcigiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKIAogICAgIGRl
ZiBhZGRfbW91bnRfcG9pbnQoc2VsZiwgdXJsX2Jhc2UsIHBhdGgpOgogICAgICAgICB1cmxfYmFz
ZSA9ICIvJXMvIiAlIHVybF9iYXNlLnN0cmlwKCIvIikgaWYgdXJsX2Jhc2UgIT0gIi8iIGVsc2Ug
Ii8iCkBAIC0zNjYsNiArMzY2LDcgQEAgY2xhc3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAg
ICAgICAgICAgKCJHRVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2VydmljZVdvcmtl
cnNIYW5kbGVyKSwKICAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIsIEFueVdv
cmtlckhhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hc2lzIiwgaGFuZGxlcnMuQXNJ
c0hhbmRsZXIpLAorICAgICAgICAgICAgKCJHRVQiLCAiLy53ZWxsLWtub3duL29yaWdpbi1wb2xp
Y3kiLCBoYW5kbGVycy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAgICAgICAgICAgICgiKiIsICIq
LnB5IiwgaGFuZGxlcnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIs
ICIqIiwgaGFuZGxlcnMuRmlsZUhhbmRsZXIpCiAgICAgICAgIF0KQEAgLTQxOCwxMCArNDE5LDEw
IEBAIGNsYXNzIFNlcnZlclByb2Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
c2VsZi5kYWVtb24gPSBpbml0X2Z1bmMoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgot
ICAgICAgICAgICAgcHJpbnQoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVzIiAlIHBvcnQsIGZpbGU9
c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU29ja2V0IGVycm9yIG9u
IHBvcnQgJXMiICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgcmFpc2UKICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3Jt
YXRfZXhjKCksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCh0
cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBz
ZWxmLmRhZW1vbjoKQEAgLTUxNSw3ICs1MTYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBw
b3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAg
ICAgICAgYXNzZXJ0IGxlbihwb3J0cykgPT0geyJodHRwIjogMn0uZ2V0KHNjaGVtZSwgMSkKIAog
ICAgICAgICAjIElmIHRyeWluZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBh
dGliaWxpdHkKLSAgICAgICAgaWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21w
YXRpYmxlKCk6CisgICAgICAgIGlmIHNjaGVtZSA9PSAnaDInIGFuZCBub3QgaHR0cDJfY29tcGF0
aWJsZSgpOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdDYW5ub3Qgc3RhcnQgSFRUUC8yLjAg
c2VydmVyIGFzIHRoZSBlbnZpcm9ubWVudCBpcyBub3QgY29tcGF0aWJsZS4gJyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1JlcXVpcmVzIFB5dGhvbiAyLjcuMTArICg8IDMuMCkgYW5kIE9w
ZW5TU0wgMS4wLjIrJykKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MjUsNyArNTI2LDcgQEAg
ZGVmIHN0YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVz
cywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAg
ICAgIGluaXRfZnVuYyA9IHsiaHR0cCI6IHN0YXJ0X2h0dHBfc2VydmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICJodHRwcyI6IHN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAiaHR0cDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyIjogc3RhcnRfaHR0cDJfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3cyI6IHN0YXJ0X3dzX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3Nz
Ijogc3RhcnRfd3NzX3NlcnZlcn1bc2NoZW1lXQogCkBAIC01MzcsNTAgKzUzOCw2OCBAQCBkZWYg
c3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBj
b25maWcsICoqa3dhcmdzKToKICAgICByZXR1cm4gc2VydmVycwogCiAKK2RlZiBzdGFydHVwX2Zh
aWxlZChsb2c9VHJ1ZSk6CisgICAgIyBMb2c9RmFsc2UgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICBp
ZiBsb2c6CisgICAgICAgIGxvZ2dlci5jcml0aWNhbChFRElUX0hPU1RTX0hFTFApCisgICAgZWxz
ZToKKyAgICAgICAgcHJpbnQoIkNSSVRJQ0FMICVzIiAlIEVESVRfSE9TVFNfSEVMUCwgZmlsZT1z
eXMuc3RkZXJyKQorICAgIHN5cy5leGl0KDEpCisKKwogZGVmIHN0YXJ0X2h0dHBfc2VydmVyKGhv
c3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6
Ci0gICAgcmV0dXJuIHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJpbmRfYWRkcmVzcz1iaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXNlX3NzbD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxl
PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJs
YXRlbmN5IikpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBk
KGhvc3Q9aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBv
cnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNb
ImRvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVz
PXJvdXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1y
ZXdyaXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJl
c3M9YmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZz1jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3Nz
bD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1O
b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPU5v
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3Mu
Z2V0KCJsYXRlbmN5IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9m
YWlsZWQoKQogCiAKIGRlZiBzdGFydF9odHRwc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2Vy
dmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvcnQ9cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290
PXBhdGhzWyJkb2Nfcm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91
dGVzPXJvdXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJl
d3JpdGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJp
bmRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25m
aWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1si
a2V5X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRl
PWNvbmZpZy5zc2xfY29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlw
dF9hZnRlcl9jb25uZWN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRl
bmN5PWt3YXJncy5nZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRz
ZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpbmRfYWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V5X2ZpbGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdb
ImNlcnRfcGF0aCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5
cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3Mu
Z2V0KCJsYXRlbmN5IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9m
YWlsZWQoKQogCiAKIGRlZiBzdGFydF9odHRwMl9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2Vy
dmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvcnQ9cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJf
Y2xzPXdwdHNlcnZlLkh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZV9zc2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
eV9maWxlPWNvbmZpZy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0
PWNvbmZpZy5zc2xfY29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICB0cnk6CisgICAg
ICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVyX2Nscz13cHRzZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0
SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1w
YXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3Jp
dGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRf
YWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2Zp
bGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29u
bmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAg
ICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogY2xhc3Mg
V2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CkBAIC01OTEsMjEgKzYxMCw5IEBAIGNsYXNzIFdlYlNv
Y2tldERhZW1vbihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiLXciLCBoYW5kbGVyc19y
b290XQogCiAgICAgICAgIGlmIHNzbF9jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAj
IFRoaXMgaXMgdXN1YWxseSBkb25lIHRocm91Z2ggcHl3ZWJzb2NrZXQubWFpbiwgaG93ZXZlciB3
ZSdyZQotICAgICAgICAgICAgIyB3b3JraW5nIGFyb3VuZCB0aGF0IHRvIGdldCB0aGUgc2VydmVy
IGluc3RhbmNlIGFuZCBtYW51YWxseQotICAgICAgICAgICAgIyBzZXR1cCB0aGUgd3NzIHNlcnZl
ci4KLSAgICAgICAgICAgIGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAg
ICAgICAgdGxzX21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfU1RBTkRBUkRfTU9EVUxFCi0g
ICAgICAgICAgICBlbGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAg
ICAgICAgICAgdGxzX21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfUFlPUEVOU1NMCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCJObyBTU0wgbW9kdWxlIGF2YWls
YWJsZSIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAgICAgY21kX2Fy
Z3MgKz0gWyItLXRscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHJpdmF0ZS1rZXki
LCBzc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICItLWNl
cnRpZmljYXRlIiwgc3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIi0tdGxzLW1vZHVsZSIsIHRsc19tb2R1bGVdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIi0tY2VydGlmaWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXV0KIAogICAgICAgICBp
ZiAoYmluZF9hZGRyZXNzKToKICAgICAgICAgICAgIGNtZF9hcmdzID0gWyItSCIsIGhvc3RdICsg
Y21kX2FyZ3MKQEAgLTYxNCw2ICs2MjEsMTIgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVj
dCk6CiAgICAgICAgIG9wdHMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCiAgICAgICAgIHNl
bGYuc2VydmVyID0gcHl3ZWJzb2NrZXQuV2ViU29ja2V0U2VydmVyKG9wdHMpCiAgICAgICAgIHBv
cnRzID0gW2l0ZW1bMF0uZ2V0c29ja25hbWUoKVsxXSBmb3IgaXRlbSBpbiBzZWxmLnNlcnZlci5f
c29ja2V0c10KKyAgICAgICAgaWYgbm90IHBvcnRzOgorICAgICAgICAgICAgIyBUT0RPOiBGaXgg
dGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpbiBXZWJTb2NrZXRzIHByb2Nlc3NlcworICAgICAg
ICAgICAgIyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNz
dWVzLzIyNzE5CisgICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIHN0YXJ0IHdlYnNvY2tldCBz
ZXJ2ZXIgb24gcG9ydCAlcywgIgorICAgICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJl
YWR5IHVzaW5nIHRoYXQgcG9ydD8iICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAg
ICAgcmFpc2UgT1NFcnJvcigpCiAgICAgICAgIGFzc2VydCBhbGwoaXRlbSA9PSBwb3J0c1swXSBm
b3IgaXRlbSBpbiBwb3J0cykKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydHNbMF0KICAgICAgICAg
c2VsZi5zdGFydGVkID0gRmFsc2UKQEAgLTY2MiwxMiArNjc1LDE1IEBAIGRlZiBzdGFydF93c19z
ZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoq
a3dhcmdzKToKICAgICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9h
ZF9tb2R1bGUobG9nZ2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4g
V2ViU29ja2V0RGFlbW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9y
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBz
c2xfY29uZmlnPU5vbmUpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9u
KGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNzbF9jb25maWc9Tm9uZSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFy
dHVwX2ZhaWxlZChsb2c9RmFsc2UpCiAKIAogZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9zdCwgcG9y
dCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKQEAgLTY3
NSwxMiArNjkxLDE1IEBAIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCBy
b3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBpbiB0aGUgbG9n
Z2luZyBtb2R1bGUgdW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcpCiAgICAgcmVs
ZWFzZV9tb3psb2dfbG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwb19yb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhz
WyJ3c19kb2Nfcm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNzbF9jb25maWcpCisgICAgdHJ5
OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNb
IndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRy
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQor
ICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkK
IAogCiBkZWYgc3RhcnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKQEAgLTcwNSw4ICs3MjQs
MTEgQEAgZGVmIGl0ZXJfcHJvY3Moc2VydmVycyk6CiBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRl
X3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogICAgIHJ2ID0gQ29uZmlnQnVpbGRlcigpCiAKLSAgICBp
ZiBrd2FyZ3MuZ2V0KCJoMiIpOgotICAgICAgICBydi5fZGVmYXVsdFsicG9ydHMiXVsiaHR0cDIi
XSA9IFs5MDAwXQorICAgIGVuYWJsZV9odHRwMiA9IGt3YXJncy5nZXQoImgyIikKKyAgICBpZiBl
bmFibGVfaHR0cDIgaXMgTm9uZToKKyAgICAgICAgZW5hYmxlX2h0dHAyID0gVHJ1ZQorICAgIGlm
IGVuYWJsZV9odHRwMjoKKyAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImgyIl0gPSBbOTAw
MF0KIAogICAgIGlmIG92ZXJyaWRlX3BhdGggYW5kIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3Bh
dGgpOgogICAgICAgICB3aXRoIG9wZW4ob3ZlcnJpZGVfcGF0aCkgYXMgZjoKQEAgLTczOSw2ICs3
NjEsOSBAQCBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgog
ZGVmIF9tYWtlX3N1YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKICAgICByZXR1cm4ge3Ui
LiIuam9pbih4KSBmb3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGlu
IHJhbmdlKDEsIGRlcHRoKzEpKSl9CiAKK2RlZiBfbWFrZV9vcmlnaW5fcG9saWN5X3N1YmRvbWFp
bnMobGltaXQpOgorICAgIHJldHVybiB7dSJvcCVkIiAlIHggZm9yIHggaW4gcmFuZ2UoMSxsaW1p
dCsxKX0KKwogCiBfc3ViZG9tYWlucyA9IHt1Ind3dyIsCiAgICAgICAgICAgICAgICB1Ind3dzEi
LApAQCAtNzUwLDYgKzc3NSwxMiBAQCBfbm90X3N1YmRvbWFpbnMgPSB7dSJub25leGlzdGVudCJ9
CiAKIF9zdWJkb21haW5zID0gX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9zdWJkb21haW5zKQog
CisjIE9yaWdpbiBwb2xpY3kgc3ViZG9tYWlucyBuZWVkIHRvIG5vdCBiZSByZXVzZWQgYnkgYW55
IG90aGVyIHRlc3RzLCBzaW5jZSBvcmlnaW4gcG9saWNpZXMgaGF2ZQorIyBvcmlnaW4td2lkZSBp
bXBhY3RzIGxpa2UgaW5zdGFsbGluZyBhIENTUCBvciBGZWF0dXJlIFBvbGljeSB0aGF0IGNvdWxk
IGludGVyZmVyZSB3aXRoIGZlYXR1cmVzCisjIHVuZGVyIHRlc3QuCisjIFNlZSBodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3JmY3MvcHVsbC80NC4KK19zdWJkb21haW5zIHw9
IF9tYWtlX29yaWdpbl9wb2xpY3lfc3ViZG9tYWlucyg5OSkKKwogX25vdF9zdWJkb21haW5zID0g
X21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9ub3Rfc3ViZG9tYWlucykKIAogCkBAIC04NDUsOSAr
ODc2LDEwIEBAIGRlZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJQYXRoIHRvIFdlYlNvY2tldHMgZG9jdW1lbnQgcm9vdC4gT3ZlcnJpZGVzIGNvbmZpZy4iKQog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tYWxpYXNfZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCBk
ZXN0PSJhbGlhc19maWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGUgd2l0
aCBlbnRyaWVzIGZvciBhbGlhc2VzL211bHRpcGxlIGRvYyByb290cy4gSW4gZm9ybSBvZiBgL0FM
SUFTX05BTUUvLCBET0NfUk9PVFxcbmAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJoMiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJGbGFnIGZvciBlbmFibGluZyB0aGUgSFRUUC8yLjAgc2VydmVyIikKLSAgICBwYXJz
ZXIuc2V0X2RlZmF1bHRzKGgyPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgiLS1uby1oMiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoMiIsIGRlZmF1
bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIEhUVFAv
Mi4wIHNlcnZlciIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKQEAgLTg5MCwxNiArOTIyLDIyIEBA
IGRlZiBydW4oKiprd2FyZ3MpOgogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lH
VEVSTSwgaGFuZGxlX3NpZ25hbCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJ
R0lOVCwgaGFuZGxlX3NpZ25hbCkKIAotICAgICAgICAgICAgd2hpbGUgYWxsKGl0ZW0uaXNfYWxp
dmUoKSBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQgbm90IHJlY2VpdmVkX3Np
Z25hbC5pc19zZXQoKToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNl
cnZlcnMpOgotICAgICAgICAgICAgICAgICAgICBpdGVtLmpvaW4oMSkKLSAgICAgICAgICAgIGV4
aXRlZCA9IFtpdGVtIGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykgaWYgbm90IGl0ZW0u
aXNfYWxpdmUoKV0KLSAgICAgICAgICAgIHN1YmplY3QgPSAic3VicHJvY2VzcyIgaWYgbGVuKGV4
aXRlZCkgPT0gMSBlbHNlICJzdWJwcm9jZXNzZXMiCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZv
KCIlcyAlcyBleGl0ZWQ6IiAlIChsZW4oZXhpdGVkKSwgc3ViamVjdCkpCi0KLSAgICAgICAgICAg
IGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2Vy
LmluZm8oIlN0YXR1cyBvZiAlczpcdCVzIiAlIChpdGVtLm5hbWUsICJydW5uaW5nIiBpZiBpdGVt
LmlzX2FsaXZlKCkgZWxzZSAibm90IHJ1bm5pbmciKSkKKyAgICAgICAgICAgIHdoaWxlIChhbGwo
c3VicHJvYy5pc19hbGl2ZSgpIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFu
ZAorICAgICAgICAgICAgICAgICAgIG5vdCByZWNlaXZlZF9zaWduYWwuaXNfc2V0KCkpOgorICAg
ICAgICAgICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAg
ICAgICAgICAgICAgIHN1YnByb2Muam9pbigxKQorCisgICAgICAgICAgICBmYWlsZWRfc3VicHJv
YyA9IDAKKyAgICAgICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6Cisg
ICAgICAgICAgICAgICAgaWYgc3VicHJvYy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAg
ICBsb2dnZXIuaW5mbygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogcnVubmluZycgJSBzdWJw
cm9jLm5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYg
c3VicHJvYy5leGl0Y29kZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmlu
Zm8oJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGV4aXRlZCBjb3JyZWN0bHknICUgc3VicHJv
Yy5uYW1lKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZ2VyLndhcm5pbmcoJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGZhaWxlZC4gRXhp
dCB3aXRoIG5vbi16ZXJvIHN0YXR1czogJWQnICUgKHN1YnByb2MubmFtZSwgc3VicHJvYy5leGl0
Y29kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyArPSAxCisgICAg
ICAgICAgICByZXR1cm4gZmFpbGVkX3N1YnByb2MKIAogCiBkZWYgbWFpbigpOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2
ZS90ZXN0X3NlcnZlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZlLnB5CmluZGV4IGQ2YzA4MmE5NzAzNTdmNDc3ZTgy
Y2QyNWExYzA5NTJlZTc0NGRiNTQuLmQ5MDI0NzkzY2FmZGExYmIzNjNiNWQzYTM5OWFhOTNhNGQ2
OTExMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2VydmUvdGVzdF9zZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKQEAgLTgy
LDcgKzgyLDcgQEAgZGVmIHRlc3RfY29uZmlnX2pzb25fbGVuZ3RoKCk6CiAgICAgIyB3ZSBzZXJp
YWxpemUgdGhlIGNvbmZpZyBhcyBKU09OIGZvciBweXRlc3RydW5uZXIgYW5kIHB1dCBpdCBpbiBh
biBlbnYKICAgICAjIHZhcmlhYmxlLCB3aGljaCBvbiBXaW5kb3dzIG11c3QgaGF2ZSBhIGxlbmd0
aCA8PSAweDdGRkYgKGludDE2KQogICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6Ci0gICAg
ICAgIGRhdGEgPSBqc29uLmR1bXBzKGMuYXNfZGljdCgpKQorICAgICAgICBkYXRhID0ganNvbi5k
dW1wcyhjLmFzX2RpY3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogICAgIGFzc2VydCBsZW4oZGF0
YSkgPD0gMHg3RkZGCiAKIGRlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X3Vuc3BlY2lmaWVkKCk6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTliMjFk
NzQ1ODhlMGI1MTdkNmU5N2U0N2M2YWVjNmZhZWYwNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApAQCAtMCwwICsxLDEyOCBAQAor
bmFtZTogdGVzdHMKKworb246IFtwdXNoLCBwdWxsX3JlcXVlc3RdCisKK2pvYnM6CisKKyAgbGlu
dDoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6
IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25A
djEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAt
IG5hbWU6IEluc3RhbGwgcGFja2FnZXMKKyAgICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBm
bGFrZTggaXNvcnQgbXlweQorICAgICAgLSBuYW1lOiBSdW4gbGludGVycworICAgICAgICBydW46
IHwKKyAgICAgICAgICBmbGFrZTggZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgaXNvcnQg
LWMgLWRmIC1yYyBleGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBibGFjayAtLWNoZWNrIC0t
ZGlmZiBleGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBteXB5IGV4YW1wbGVzIHNyYworCisg
IHRlc3Q6CisgICAgcnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAgIHN0cmF0ZWd5OgorICAg
ICAgZmFpbC1mYXN0OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1s
YXRlc3QsIG1hY29zLWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgICAgIHB5dGhvbjogWzMu
OCwgMy43LCAzLjZdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRA
djIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoK
KyAgICAgICAgICBweXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAgIC0g
bmFtZTogRGlzYWJsZSBmaXJld2FsbCBhbmQgY29uZmlndXJlIGNvbXBpbGVyCisgICAgICAgIGlm
OiBtYXRyaXgub3MgPT0gJ21hY29zLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAg
c3VkbyAvdXNyL2xpYmV4ZWMvQXBwbGljYXRpb25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNl
dGdsb2JhbHN0YXRlIG9mZgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNf
U0tJUF9URVNUUzo6Y2hhY2hhMjAiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZM
QUdTOjotSS91c3IvbG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6
OnNldC1lbnYgbmFtZT1MREZMQUdTOjotTC91c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgorICAg
ICAgLSBuYW1lOiBJbnN0YWxsIE9wZW5TU0wKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2lu
ZG93cy1sYXRlc3QnCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNob2NvIGluc3RhbGwgb3Bl
bnNzbCAtLW5vLXByb2dyZXNzCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9J
QzpcUHJvZ3JhfjFcT3BlblNTTC1XaW42NFxpbmNsdWRlIgorICAgICAgICAgIGVjaG8gIjo6c2V0
LWVudiBuYW1lPUxJTks6Oi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgor
ICAgICAgLSBuYW1lOiBSdW4gdGVzdHMKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcGlwIGlu
c3RhbGwgLVUgcGlwIHNldHVwdG9vbHMgd2hlZWwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjb3Zl
cmFnZQorICAgICAgICAgIHBpcCBpbnN0YWxsIC4KKyAgICAgICAgICBjb3ZlcmFnZSBydW4gLW0g
dW5pdHRlc3QgZGlzY292ZXIgLXYKKyAgICAgICAgICBjb3ZlcmFnZSB4bWwKKyAgICAgICAgc2hl
bGw6IGJhc2gKKyAgICAgIC0gbmFtZTogVXBsb2FkIGNvdmVyYWdlIHJlcG9ydAorICAgICAgICB1
c2VzOiBjb2RlY292L2NvZGVjb3YtYWN0aW9uQHYxCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9u
ICE9ICdweXB5MycKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMu
Q09ERUNPVl9UT0tFTiB9fQorCisgIHBhY2thZ2Utc291cmNlOgorICAgIHJ1bnMtb246IHVidW50
dS1sYXRlc3QKKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2Mgor
ICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAg
ICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTogQnVpbGQgc291cmNlIHBh
Y2thZ2UKKyAgICAgICAgcnVuOiBweXRob24gc2V0dXAucHkgc2Rpc3QKKyAgICAgIC0gbmFtZTog
VXBsb2FkIHNvdXJjZSBwYWNrYWdlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlm
YWN0QHYxCisgICAgICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBh
dGg6IGRpc3QvCisKKyAgcGFja2FnZS13aGVlbDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9z
IH19CisgICAgc3RyYXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbdWJ1bnR1LWxh
dGVzdCwgbWFjb3MtbGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICBzdGVwczoKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5
dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAg
ICAgIC0gbmFtZTogSW5zdGFsbCBuYXNtCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRv
d3MtbGF0ZXN0JworICAgICAgICBydW46IGNob2NvIGluc3RhbGwgLXkgbmFzbQorICAgICAgLSBu
YW1lOiBJbnN0YWxsIG5tYWtlCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0
ZXN0JworICAgICAgICBydW46IHwKKyAgICAgICAgICAmICJDOlxQcm9ncmFtIEZpbGVzICh4ODYp
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXEluc3RhbGxlclx2c19pbnN0YWxsZXIuZXhlIiBtb2Rp
ZnkgYAorICAgICAgICAgICAtLWluc3RhbGxQYXRoICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXDIwMTlcRW50ZXJwcmlzZSIgYAorICAgICAgICAgICAtLWFk
ZCBNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLkNvbXBvbmVudC5WQy5Ub29scy54ODYueDY0IC0tcGFz
c2l2ZSAtLW5vcmVzdGFydAorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgLSBuYW1l
OiBCdWlsZCB3aGVlbHMKKyAgICAgICAgZW52OgorICAgICAgICAgIENJQldfQkVGT1JFX0JVSUxE
OiBzY3JpcHRzL2J1aWxkLW9wZW5zc2wgL3RtcC92ZW5kb3IKKyAgICAgICAgICBDSUJXX0JFRk9S
RV9CVUlMRF9XSU5ET1dTOiBzY3JpcHRzXGJ1aWxkLW9wZW5zc2wuYmF0IEM6XGNpYndcdmVuZG9y
CisgICAgICAgICAgQ0lCV19FTlZJUk9OTUVOVDogQUlPUVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9z
cyBDRkxBR1M9LUkvdG1wL3ZlbmRvci9pbmNsdWRlIExERkxBR1M9LUwvdG1wL3ZlbmRvci9saWIK
KyAgICAgICAgICBDSUJXX0VOVklST05NRU5UX1dJTkRPV1M6IEFJT1FVSUNfU0tJUF9URVNUUz1p
cHY2LGxvc3MgQ0w9Ii9JQzpcY2lid1x2ZW5kb3JcaW5jbHVkZSIgTElOSz0iL0xJQlBBVEg6Qzpc
Y2lid1x2ZW5kb3JcbGliIgorICAgICAgICAgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0
LSogY3AzNS0qIHBwMjctKgorICAgICAgICAgIENJQldfVEVTVF9DT01NQU5EOiBweXRob24gLW0g
dW5pdHRlc3QgZGlzY292ZXIgLXQge3Byb2plY3R9IC1zIHtwcm9qZWN0fS90ZXN0cworICAgICAg
ICBydW46IHwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKKyAgICAgICAgICBj
aWJ1aWxkd2hlZWwgLS1vdXRwdXQtZGlyIGRpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHdoZWVs
cworICAgICAgICB1c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRo
OgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0LworCisgIHB1Ymxp
c2g6CisgICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIG5lZWRzOiBbbGludCwgdGVzdCwg
cGFja2FnZS1zb3VyY2UsIHBhY2thZ2Utd2hlZWxdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6
IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9kb3dubG9hZC1hcnRp
ZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBw
YXRoOiBkaXN0LworICAgICAgLSBuYW1lOiBQdWJsaXNoIHRvIFB5UEkKKyAgICAgICAgaWY6IGdp
dGh1Yi5ldmVudF9uYW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYs
ICdyZWZzL3RhZ3MvJykKKyAgICAgICAgdXNlczogcHlwYS9naC1hY3Rpb24tcHlwaS1wdWJsaXNo
QG1hc3RlcgorICAgICAgICB3aXRoOgorICAgICAgICAgIHVzZXI6IF9fdG9rZW5fXworICAgICAg
ICAgIHBhc3N3b3JkOiAke3sgc2VjcmV0cy5QWVBJX1RPS0VOIH19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
LmdpdGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JjMGFlOTliMjBm
NDg5ZWU3N2E4NTU5ZTUyYWM3OTQ1MzRkYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitU
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgor
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBm
aWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA0OTkyNGE1YWEwODM5ODZkMGJkNzA2OWVkYzZlZGRlYWI3Y2UwYWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQg
KGMpIDIwMTkgSmVyZW15IExhaW7DqS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMg
bWF5CisgICAgICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTVlMDkwM2FmOTk0ZTM0YzM1ZDhiMmVlZTIwYjRiYjNiNzY5ZGUyMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUg
TElDRU5TRQorcmVjdXJzaXZlLWluY2x1ZGUgZG9jcyAqLnB5ICoucnN0IE1ha2VmaWxlCityZWN1
cnNpdmUtaW5jbHVkZSBleGFtcGxlcyAqLmh0bWwgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVz
dHMgKi5iaW4gKi5wZW0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3Qg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzIyMDQyYzI0ZGQyNjZkZWEx
YjcyODQzNjRlOWE1Y2NlYjY2YTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JF
QURNRS5yc3QKQEAgLTAsMCArMSwxNjQgQEAKK2Fpb3F1aWMKKz09PT09PT0KKworfHJ0ZHwgfHB5
cGktdnwgfHB5cGktcHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwgfGJsYWNr
fAorCisuLiB8cnRkfCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2Fp
b3F1aWMvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9haW9xdWlj
LnJlYWR0aGVkb2NzLmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVs
ZHMuaW8vcHlwaS92L2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhv
bi5vcmcvcHlwaS9haW9xdWljCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6
Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0
OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1h
Z2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGlt
YWdlOjogaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9i
YWRnZS5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMv
YWN0aW9ucworCisuLiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2Nv
ZGVjb3YvYy9naXRodWIvYWlvcnRjL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9j
b2RlY292LmlvL2doL2Fpb3J0Yy9haW9xdWljCisKKy4uIHxibGFja3wgaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCisgICAg
OnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9ibGFjaworCitXaGF0IGlzIGBgYWlv
cXVpY2BgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5
IGZvciB0aGUgUVVJQyBuZXR3b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMKK2Eg
bWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uLCBhIFFVSUMgc3RhY2sgYW5kIGFuIEhUVFAv
MyBzdGFjay4KKworUVVJQyBzdGFuZGFyZGlzYXRpb24gaXMgbm90IGZpbmFsaXNlZCB5ZXQsIGJ1
dCBgYGFpb3F1aWNgYCBjbG9zZWx5IHRyYWNrcyB0aGUKK3NwZWNpZmljYXRpb24gZHJhZnRzIGFu
ZCBpcyByZWd1bGFybHkgdGVzdGVkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGFnYWluc3Qgb3RoZXIK
K2BRVUlDIGltcGxlbWVudGF0aW9uc2BfLgorCitUbyBsZWFybiBtb3JlIGFib3V0IGBgYWlvcXVp
Y2BgIHBsZWFzZSBgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbmBfLgorCitXaHkgc2hvdWxkIEkgdXNl
IGBgYWlvcXVpY2BgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWlj
YGAgaGFzIGJlZW4gZGVzaWduZWQgdG8gYmUgZW1iZWRkZWQgaW50byBQeXRob24gY2xpZW50IGFu
ZCBzZXJ2ZXIKK2xpYnJhcmllcyB3aXNoaW5nIHRvIHN1cHBvcnQgUVVJQyBhbmQgLyBvciBIVFRQ
LzMuIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgYQorY29tbW9uIGNvZGViYXNlIGZvciBQeXRob24g
bGlicmFyaWVzIGluIHRoZSBob3BlIG9mIGF2b2lkaW5nIGR1cGxpY2F0ZWQgZWZmb3J0LgorCitC
b3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSAiYnJpbmcgeW91ciBv
d24gSS9PIiBwYXR0ZXJuLAorbGVhdmluZyBhY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQ
SSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50YWdlcyBpbmNsdWRp
bmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRo
CitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgorCitGZWF0dXJlcworLS0tLS0tLS0KKwor
LSBRVUlDIHN0YWNrIGNvbmZvcm1pbmcgd2l0aCBkcmFmdC0yNworLSBIVFRQLzMgc3RhY2sgY29u
Zm9ybWluZyB3aXRoIGRyYWZ0LTI3CistIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbgor
LSBJUHY0IGFuZCBJUHY2IHN1cHBvcnQKKy0gY29ubmVjdGlvbiBtaWdyYXRpb24gYW5kIE5BVCBy
ZWJpbmRpbmcKKy0gbG9nZ2luZyBUTFMgdHJhZmZpYyBzZWNyZXRzCistIGxvZ2dpbmcgUVVJQyBl
dmVudHMgaW4gUUxPRyBmb3JtYXQKKy0gSFRUUC8zIHNlcnZlciBwdXNoIHN1cHBvcnQKKworUmVx
dWlyZW1lbnRzCistLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgcmVxdWlyZXMgUHl0aG9uIDMu
NiBvciBiZXR0ZXIsIGFuZCB0aGUgT3BlblNTTCBkZXZlbG9wbWVudCBoZWFkZXJzLgorCitMaW51
eAorLi4uLi4KKworT24gRGViaWFuL1VidW50dSBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25z
b2xlCisKKyAgICQgc3VkbyBhcHQgaW5zdGFsbCBsaWJzc2wtZGV2IHB5dGhvbjMtZGV2CisKK09u
IEFscGluZSBMaW51eCB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIGZvbGxvd2luZzoKKworLi4gY29k
ZS1ibG9jazo6IGNvbnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGJzZC1jb21wYXQtaGVh
ZGVycyBsaWJmZmktZGV2CisKK09TIFgKKy4uLi4KKworT24gT1MgWCBydW46CisKKy4uIGNvZGUt
YmxvY2s6OiBjb25zb2xlCisKKyAgICQgYnJldyBpbnN0YWxsIG9wZW5zc2wKKworWW91IHdpbGwg
bmVlZCB0byBzZXQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBhZ2FpbnN0IE9w
ZW5TU0w6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgZXhwb3J0IENGTEFHUz0t
SS91c3IvbG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZQorICAgJCBleHBvcnQgTERGTEFHUz0tTC91
c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliCisKK1dpbmRvd3MKKy4uLi4uLi4KKworT24gV2luZG93
cyB0aGUgZWFzaWVzdCB3YXkgdG8gaW5zdGFsbCBPcGVuU1NMIGlzIHRvIHVzZSBgQ2hvY29sYXRl
eWBfLgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICA+IGNob2NvIGluc3RhbGwgb3Bl
bnNzbAorCitZb3Ugd2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0
byBsaW5rIGFnYWluc3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICA+
ICRFbnY6Q0wgPSAiL0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgID4gJEVu
djpMSU5LID0gIi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorCitSdW5u
aW5nIHRoZSBleGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgY2hlY2tpbmcg
b3V0IHRoZSBjb2RlIHVzaW5nIGdpdCB5b3UgY2FuIHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNv
bnNvbGUKKworICAgJCBwaXAgaW5zdGFsbCAtZSAuCisgICAkIHBpcCBpbnN0YWxsIGFpb2ZpbGVz
IGFzZ2lyZWYgaHR0cGJpbiBzdGFybGV0dGUgd3Nwcm90bworCitIVFRQLzMgc2VydmVyCisuLi4u
Li4uLi4uLi4uCisKK1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIHNlcnZlciwgd2hpY2ggaGFuZGxl
cyBib3RoIEhUVFAvMC45IGFuZCBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgICQgcHl0aG9uIGV4YW1wbGVzL2h0dHAzX3NlcnZlci5weSAtLWNlcnRpZmljYXRlIHRlc3Rz
L3NzbF9jZXJ0LnBlbSAtLXByaXZhdGUta2V5IHRlc3RzL3NzbF9rZXkucGVtCisKK0hUVFAvMyBj
bGllbnQKKy4uLi4uLi4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgY2xpZW50IHRv
IHBlcmZvcm0gYW4gSFRUUC8zIHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHlj
YWNlcnQucGVtIGh0dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK0FsdGVybmF0aXZlbHkgeW91IGNh
biBwZXJmb3JtIGFuIEhUVFAvMC45IHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xl
CisKKyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMv
cHljYWNlcnQucGVtIC0tbGVnYWN5LWh0dHAgaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworWW91
IGNhbiBhbHNvIG9wZW4gYSBXZWJTb2NrZXQgb3ZlciBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6
OiBjb25zb2xlCisKKyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2Vy
dHMgdGVzdHMvcHljYWNlcnQucGVtIHdzczovL2xvY2FsaG9zdDo0NDMzL3dzCisKK0xpY2Vuc2UK
Ky0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5z
ZWBfLgorCisuLiBfcmVhZCB0aGUgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9haW9xdWljLnJlYWR0
aGVkb2NzLmlvL2VuL2xhdGVzdC8KKy4uIF9RVUlDIGltcGxlbWVudGF0aW9uczogaHR0cHM6Ly9n
aXRodWIuY29tL3F1aWN3Zy9iYXNlLWRyYWZ0cy93aWtpL0ltcGxlbWVudGF0aW9ucworLi4gX2Ny
eXB0b2dyYXBoeTogaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfQ2hvY29sYXRleTogaHR0
cHM6Ly9jaG9jb2xhdGV5Lm9yZy8KKy4uIF9CU0QgbGljZW5zZTogaHR0cHM6Ly9haW9xdWljLnJl
YWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9saWNlbnNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9kb2NzL01ha2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2NiNzM4Yjk2MTdmYjJkOWRkMDY2ODRiZDIyNGYwYWQwM2UwNmEwNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgTWlu
aW1hbCBtYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNl
dCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorU1BISU5YT1BUUyAgICA9
CitTUEhJTlhCVUlMRCAgID0gc3BoaW54LWJ1aWxkCitTUEhJTlhQUk9KICAgID0gYWlvcXVpYwor
U09VUkNFRElSICAgICA9IC4KK0JVSUxERElSICAgICAgPSBfYnVpbGQKKworIyBQdXQgaXQgZmly
c3Qgc28gdGhhdCAibWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBsaWtlICJtYWtlIGhlbHAiLgor
aGVscDoKKwlAJChTUEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJ
UikiICQoU1BISU5YT1BUUykgJChPKQorCisuUEhPTlk6IGhlbHAgTWFrZWZpbGUKKworIyBDYXRj
aC1hbGwgdGFyZ2V0OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0
aGUgbmV3CisjICJtYWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1
dCBmb3IgJChTUEhJTlhPUFRTKS4KKyU6IE1ha2VmaWxlCisJQCQoU1BISU5YQlVJTEQpIC1NICRA
ICIkKFNPVVJDRURJUikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNp
by5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWM1Njgw
OTAxNDYwYjAzMjgzYTRhYzZjZjY1NGU4YzJhYWM2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKQEAgLTAsMCArMSwzMiBAQAorYXN5bmNpbyBBUEkK
Kz09PT09PT09PT09CisKK1RoZSBhc3luY2lvIEFQSSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgUVVJ
QyBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLAorUHl0aG9uJ3Mgc3RhbmRhcmQg
YXN5bmNocm9ub3VzIEkvTyBmcmFtZXdvcmsuCisKK2BgYWlvcXVpY2BgIGNvbWVzIHdpdGggYSBz
ZWxlY3Rpb24gb2YgZXhhbXBsZXMsIGluY2x1ZGluZzoKKworLSBhbiBIVFRQLzMgY2xpZW50Cist
IGFuIEhUVFAvMyBzZXJ2ZXIKKworVGhlIGV4YW1wbGVzIGNhbiBiZSBicm93c2VkIG9uIEdpdEh1
YjoKKworaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3RyZWUvbWFzdGVyL2V4YW1w
bGVzCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmFzeW5jaW8KKworQ2xpZW50CistLS0tLS0K
KworICAgIC4uIGF1dG9mdW5jdGlvbjo6IGNvbm5lY3QKKworU2VydmVyCistLS0tLS0KKworICAg
IC4uIGF1dG9mdW5jdGlvbjo6IHNlcnZlCisKK0NvbW1vbgorLS0tLS0tCisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBRdWljQ29ubmVjdGlvblByb3RvY29sCisgICAgICAgIDptZW1iZXJzOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjg5MDYyYWM5NzUzMjZhNDdmODhlZGFlNGQ4ZDM0M2NmZTc2MGMwYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwy
MDUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisj
CisjIGFpb3F1aWMgZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0
ZWQgYnkKKyMgc3BoaW54LXF1aWNrc3RhcnQgb24gVGh1IEZlYiAgOCAxNzoyMjoxNCAyMDE4Lgor
IworIyBUaGlzIGZpbGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkg
c2V0IHRvIGl0cworIyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9z
c2libGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2Vu
ZXJhdGVkIGZpbGUuCisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVs
dDsgdmFsdWVzIHRoYXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVm
YXVsdC4KKworaW1wb3J0IHN5cywgb3MKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRv
IGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQg
dGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyBy
ZWxhdGl2ZSB0byB0aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRo
IHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2VydCgw
LCBvcy5wYXRoLmFic3BhdGgoJy4uJykpCisKKworY2xhc3MgTW9ja0J1ZmZlcjoKKyAgICBCdWZm
ZXIgPSBOb25lCisgICAgQnVmZmVyUmVhZEVycm9yID0gTm9uZQorICAgIEJ1ZmZlcldyaXRlRXJy
b3IgPSBOb25lCisKKworY2xhc3MgTW9ja0NyeXB0bzoKKyAgICBBRUFEID0gTm9uZQorICAgIENy
eXB0b0Vycm9yID0gVmFsdWVFcnJvcgorICAgIEhlYWRlclByb3RlY3Rpb24gPSBOb25lCisKKwor
Y2xhc3MgTW9ja1B5bHNxcGFjazoKKyAgICBEZWNvZGVyID0gTm9uZQorICAgIEVuY29kZXIgPSBO
b25lCisgICAgU3RyZWFtQmxvY2tlZCA9IE5vbmUKKworCitzeXMubW9kdWxlcy51cGRhdGUoewor
ICAgICJhaW9xdWljLl9idWZmZXIiOiBNb2NrQnVmZmVyKCksCisgICAgImFpb3F1aWMuX2NyeXB0
byI6IE1vY2tDcnlwdG8oKSwKKyAgICAicHlsc3FwYWNrIjogTW9ja1B5bHNxcGFjaygpLAorfSkK
KworIyAtLSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEg
bWluaW1hbCBTcGhpbnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KKyMKKyMgbmVlZHNfc3BoaW54
ID0gJzEuMCcKKworIyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUs
IGFzIHN0cmluZ3MuIFRoZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgY29taW5nIHdpdGggU3BoaW54
IChuYW1lZCAnc3BoaW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20KKyMgb25lcy4KK2V4dGVuc2lv
bnMgPSBbCisgICAgJ3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJz
cGhpbngnLAorICAgICdzcGhpbnhfYXV0b2RvY190eXBlaGludHMnLAorICAgICdzcGhpbnhjb250
cmliLmFzeW5jaW8nLAorXQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAnY3J5cHRvZ3Jh
cGh5JzogKCdodHRwczovL2NyeXB0b2dyYXBoeS5pby9lbi9sYXRlc3QnLCBOb25lKSwKKyAgICAn
cHl0aG9uJzogKCdodHRwczovL2RvY3MucHl0aG9uLm9yZy8zJywgTm9uZSksCit9CisKKyMgQWRk
IGFueSBwYXRocyB0aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMg
ZGlyZWN0b3J5LgordGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZm
aXgoZXMpIG9mIHNvdXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBz
dWZmaXggYXMgYSBsaXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcs
ICcubWQnXQorc291cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBk
b2N1bWVudC4KK21hc3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgcHJvamVjdC4KK3Byb2plY3QgPSAnYWlvcXVpYycKK2NvcHlyaWdodCA9IHUnMjAx
OSwgSmVyZW15IExhaW7DqScKK2F1dGhvciA9IHUnSmVyZW15IExhaW7DqScKKworIyBUaGUgdmVy
c2lvbiBpbmZvIGZvciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVw
bGFjZW1lbnQgZm9yCisjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFy
aW91cyBvdGhlciBwbGFjZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIwor
IyBUaGUgc2hvcnQgWC5ZIHZlcnNpb24uCit2ZXJzaW9uID0gJycKKyMgVGhlIGZ1bGwgdmVyc2lv
biwgaW5jbHVkaW5nIGFscGhhL2JldGEvcmMgdGFncy4KK3JlbGVhc2UgPSAnJworCisjIFRoZSBs
YW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9j
dW1lbnRhdGlvbgorIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjCisjIFRo
aXMgaXMgYWxzbyB1c2VkIGlmIHlvdSBkbyBjb250ZW50IHRyYW5zbGF0aW9uIHZpYSBnZXR0ZXh0
IGNhdGFsb2dzLgorIyBVc3VhbGx5IHlvdSBzZXQgImxhbmd1YWdlIiBmcm9tIHRoZSBjb21tYW5k
IGxpbmUgZm9yIHRoZXNlIGNhc2VzLgorbGFuZ3VhZ2UgPSBOb25lCisKKyMgTGlzdCBvZiBwYXR0
ZXJucywgcmVsYXRpdmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQK
KyMgZGlyZWN0b3JpZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgor
IyBUaGlzIHBhdHRlcm5zIGFsc28gZWZmZWN0IHRvIGh0bWxfc3RhdGljX3BhdGggYW5kIGh0bWxf
ZXh0cmFfcGF0aAorZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJywgJ1RodW1icy5kYicsICcu
RFNfU3RvcmUnXQorCisjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdo
dGluZykgc3R5bGUgdG8gdXNlLgorcHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JworCisjIElmIHRy
dWUsIGB0b2RvYCBhbmQgYHRvZG9MaXN0YCBwcm9kdWNlIG91dHB1dCwgZWxzZSB0aGV5IHByb2R1
Y2Ugbm90aGluZy4KK3RvZG9faW5jbHVkZV90b2RvcyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25z
IGZvciBIVE1MIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyMgVGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2Vz
LiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMu
CisjCitodG1sX3RoZW1lID0gJ2FsYWJhc3RlcicKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVt
ZS1zcGVjaWZpYyBhbmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMg
ZnVydGhlci4gIEZvciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUs
IHNlZSB0aGUKKyMgZG9jdW1lbnRhdGlvbi4KKyMKK2h0bWxfdGhlbWVfb3B0aW9ucyA9IHsKKyAg
ICAnZGVzY3JpcHRpb24nOiAnQSBsaWJyYXJ5IGZvciBRVUlDIGluIFB5dGhvbi4nLAorICAgICdn
aXRodWJfYnV0dG9uJzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAnYWlvcnRjJywKKyAgICAn
Z2l0aHViX3JlcG8nOiAnYWlvcXVpYycsCit9CisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRh
aW4gY3VzdG9tIHN0YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJl
bGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0
aW4gc3RhdGljIGZpbGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92
ZXJ3cml0ZSB0aGUgYnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsn
X3N0YXRpYyddCisKKyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtdXN0IGJlIGEgZGljdGlv
bmFyeSB0aGF0IG1hcHMgZG9jdW1lbnQgbmFtZXMKKyMgdG8gdGVtcGxhdGUgbmFtZXMuCisjCisj
IFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBhbGFiYXN0ZXIgdGhlbWUKKyMgcmVmczogaHR0cDov
L2FsYWJhc3Rlci5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5zdGFsbGF0aW9uLmh0bWwjc2lk
ZWJhcnMKK2h0bWxfc2lkZWJhcnMgPSB7CisgICAgJyoqJzogWworICAgICAgICAnYWJvdXQuaHRt
bCcsCisgICAgICAgICduYXZpZ2F0aW9uLmh0bWwnLAorICAgICAgICAncmVsYXRpb25zLmh0bWwn
LAorICAgICAgICAnc2VhcmNoYm94Lmh0bWwnLAorICAgIF0KK30KKworCisjIC0tIE9wdGlvbnMg
Zm9yIEhUTUxIZWxwIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworIyBPdXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgor
aHRtbGhlbHBfYmFzZW5hbWUgPSAnYWlvcXVpY2RvYycKKworCisjIC0tIE9wdGlvbnMgZm9yIExh
VGVYIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworbGF0ZXhfZWxlbWVudHMgPSB7CisgICAgIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVy
JyBvciAnYTRwYXBlcicpLgorICAgICMKKyAgICAjICdwYXBlcnNpemUnOiAnbGV0dGVycGFwZXIn
LAorCisgICAgIyBUaGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgorICAg
ICMKKyAgICAjICdwb2ludHNpemUnOiAnMTBwdCcsCisKKyAgICAjIEFkZGl0aW9uYWwgc3R1ZmYg
Zm9yIHRoZSBMYVRlWCBwcmVhbWJsZS4KKyAgICAjCisgICAgIyAncHJlYW1ibGUnOiAnJywKKwor
ICAgICMgTGF0ZXggZmlndXJlIChmbG9hdCkgYWxpZ25tZW50CisgICAgIworICAgICMgJ2ZpZ3Vy
ZV9hbGlnbic6ICdodGJwJywKK30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRv
IExhVGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdl
dCBuYW1lLCB0aXRsZSwKKyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwg
b3Igb3duIGNsYXNzXSkuCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdh
aW9xdWljLnRleCcsICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdtYW51
YWwnKSwKK10KKworCisjIC0tIE9wdGlvbnMgZm9yIG1hbnVhbCBwYWdlIG91dHB1dCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVh
bCBwYWdlLiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2Ny
aXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKG1h
c3Rlcl9kb2MsICdhaW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRo
b3JdLCAxKQorXQorCisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1
bWVudCB0cmVlIGludG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBz
dGFydCBmaWxlLCB0YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5
LCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAobWFz
dGVyX2RvYywgJ2Fpb3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9y
LCAnYWlvcXVpYycsICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0LicsCisgICAgICdN
aXNjZWxsYW5lb3VzJyksCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24u
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI5ZTc2MmY1
YTYzNGUyYTM1NzkxZTQ2NWI5MDQ5YmE0YmU2MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvZGVzaWduLnJzdApAQCAtMCwwICsxLDM3IEBACitEZXNpZ24KKz09PT09PQor
CitTYW5zLUlPIEFQSXMKKy4uLi4uLi4uLi4uLgorCitCb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRU
UC8zIEFQSXMgZm9sbG93IHRoZSBgc2FucyBJL09gXyBwYXR0ZXJuLCBsZWF2aW5nCithY3R1YWwg
SS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJl
ciBvZgorYWR2YW50YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBh
bGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgor
CitUTFMgYW5kIGVuY3J5cHRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLgorCitUTFMgMS4zCisrKysr
KysrCisKK2BgYWlvcXVpY2BgIGZlYXR1cmVzIGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0
aW9uIGJ1aWx0IHVwb24gdGhlCitgY3J5cHRvZ3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNh
dXNlIFFVSUMgcmVxdWlyZXMgc29tZSBBUElzIHdoaWNoIGFyZQorY3VycmVudGx5IHVuYXZhaWxh
YmxlIGluIG1haW5zdHJlYW0gVExTIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6CisK
Ky0gdGhlIGFiaWxpdHkgdG8gZXh0cmFjdCB0cmFmZmljIHNlY3JldHMKKworLSB0aGUgYWJpbGl0
eSB0byBvcGVyYXRlIGRpcmVjdGx5IG9uIFRMUyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUg
VExTCisgIHJlY29yZCBsYXllcgorCitIZWFkZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNy
eXB0aW9uCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1FVSUMg
bWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVj
dCBRVUlDIHBhY2tldAoraGVhZGVycyBhbmQgZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNl
IG9wZXJhdGlvbnMgb2NjdXIgZm9yIGV2ZXJ5IHNpbmdsZQorcGFja2V0IGFuZCBhcmUgYSBkZXRl
cm1pbmluZyBmYWN0b3IgZm9yIHBlcmZvcm1hbmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKK2Fy
ZSBpbXBsZW1lbnRlZCBhcyBhIEMgZXh0ZW5zaW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgorCisu
LiBfc2FucyBJL086IGh0dHBzOi8vc2Fucy1pby5yZWFkdGhlZG9jcy5pby8KKy4uIF9jcnlwdG9n
cmFwaHk6IGh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3
Lm9wZW5zc2wub3JnLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvaDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZTIyMDFjNDNkNDZiMGNiYjJiYWMy
OGRmY2Y1OTIwYTAxMjkxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9o
My5yc3QKQEAgLTAsMCArMSw0NCBAQAorSFRUUC8zIEFQSQorPT09PT09PT09PQorCitUaGUgSFRU
UC8zIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBB
UEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgSFRUUC8zIGluIGFueSBQeXRo
b24gYXBwbGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3Ug
YXJlIHVzaW5nLgorCitDb25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBh
aW9xdWljLmgzLmNvbm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6IEgzQ29ubmVjdGlvbgor
ICAgICAgICA6bWVtYmVyczoKKworCitFdmVudHMKKy0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjog
YWlvcXVpYy5oMy5ldmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXZlbnQKKyAgICAgICAg
Om1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBEYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1l
bWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBIZWFkZXJzUmVjZWl2ZWQKKyAgICAgICAgOm1l
bWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBQdXNoUHJvbWlzZVJlY2VpdmVkCisgICAgICAg
IDptZW1iZXJzOgorCisKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6
IGFpb3F1aWMuaDMuZXhjZXB0aW9ucworCisgICAgLi4gYXV0b2NsYXNzOjogSDNFcnJvcgorICAg
ICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IE5vQXZhaWxhYmxlUHVzaElERXJy
b3IKKyAgICAgICAgOm1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRl
eC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0MTU2MWEy
MjQwNDBiYzFhOGFjZTI2NmFkMDE1NjhmNjg0MTdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL2luZGV4LnJzdApAQCAtMCwwICsxLDM5IEBACithaW9xdWljCis9PT09PT09
CisKK3xweXBpLXZ8IHxweXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8
CisKKy4uIHxweXBpLXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlv
cXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1
aWMKKworLi4gfHB5cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlv
L3B5cGkvcHl2ZXJzaW9ucy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5w
eXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1n
LnNoaWVsZHMuaW8vcHlwaS9sL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBp
LnB5dGhvbi5vcmcvcHlwaS9haW9xdWljCisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dp
dGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0
YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxj
b2RlY292fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9h
aW9ydGMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlv
cnRjL2Fpb3F1aWMKKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJQyBuZXR3
b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMgc2V2ZXJhbAorQVBJczoKKworLSBh
IFFVSUMgQVBJIGZvbGxvd2luZyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwgc3Vp
dGFibGUgZm9yCisgIGVtYmVkZGluZyBpbiBhbnkgZnJhbWV3b3JrLAorCistIGFuIEhUVFAvMyBB
UEkgd2hpY2ggYWxzbyBmb2xsb3dzIHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLAor
CistIGEgUVVJQyBjb252ZW5pZW5jZSBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9g
LCBQeXRob24ncyBzdGFuZGFyZCBhc3luY2hyb25vdXMKKyAgSS9PIGZyYW1ld29yay4KKworLi4g
dG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBxdWljCisgICBoMwor
ICAgYXN5bmNpbworICAgbGljZW5zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGlj
ZW5zZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJk
M2IwN2ZjOTNmNjQ3ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCist
LS0tLS0tCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvcXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MGViZWZiNDlkNTE0YTQ1MTVjMjIzY2RjODQzNjljZDE2YTEyYjczCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKQEAgLTAsMCArMSw1MSBAQAor
UVVJQyBBUEkKKz09PT09PT09CisKK1RoZSBRVUlDIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRz
IG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBp
bnRlZ3JhdGUgUVVJQyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mCit0
aGUgY29uY3VycmVuY3kgbW9kZWwgeW91IGFyZSB1c2luZy4KKworQ29ubmVjdGlvbgorLS0tLS0t
LS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24KKworICAgIC4u
IGF1dG9jbGFzczo6IFF1aWNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0NvbmZp
Z3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5j
b25maWd1cmF0aW9uCisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWljQ29uZmlndXJhdGlvbgorICAg
ICAgICA6bWVtYmVyczoKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5sb2dnZXIKKwor
ICAgIC4uIGF1dG9jbGFzczo6IFF1aWNMb2dnZXIKKyAgICAgICAgOm1lbWJlcnM6CisKK0V2ZW50
cworLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuZXZlbnRzCisKKyAgICAu
LiBhdXRvY2xhc3M6OiBRdWljRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBDb25uZWN0aW9uVGVybWluYXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4u
IGF1dG9jbGFzczo6IEhhbmRzaGFrZUNvbXBsZXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAg
IC4uIGF1dG9jbGFzczo6IFBpbmdBY2tub3dsZWRnZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBTdHJlYW1EYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBTdHJlYW1SZXNldAorICAgICAgICA6bWVtYmVyczoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgwZTc5OTkwNDNkMjk3NDFhMTM0OTE2Njc4
ZDU0MDQ5OTJhOTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjQgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01h
a2VmaWxlCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9j
cy9jb25mLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdAorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9k
b2NzL2gzLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9k
b2NzL2xpY2Vuc2UucnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2Rl
bW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5CkBAIC0w
LDAgKzEsMTA5IEBACisjCisjIGRlbW8gYXBwbGljYXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQor
IworCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0
IHVybGVuY29kZQorCitpbXBvcnQgaHR0cGJpbgorZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdz
Z2lUb0FzZ2kKK2Zyb20gc3RhcmxldHRlLmFwcGxpY2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCitm
cm9tIHN0YXJsZXR0ZS5yZXNwb25zZXMgaW1wb3J0IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25z
ZQorZnJvbSBzdGFybGV0dGUuc3RhdGljZmlsZXMgaW1wb3J0IFN0YXRpY0ZpbGVzCitmcm9tIHN0
YXJsZXR0ZS50ZW1wbGF0aW5nIGltcG9ydCBKaW5qYTJUZW1wbGF0ZXMKK2Zyb20gc3RhcmxldHRl
LndlYnNvY2tldHMgaW1wb3J0IFdlYlNvY2tldERpc2Nvbm5lY3QKKworUk9PVCA9IG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykKK1NUQVRJQ19ST09UID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19S
T09UIiwgb3MucGF0aC5qb2luKFJPT1QsICJodGRvY3MiKSkKK1NUQVRJQ19VUkwgPSAiLyIKK0xP
R1NfUEFUSCA9IG9zLnBhdGguam9pbihTVEFUSUNfUk9PVCwgImxvZ3MiKQorUVZJU19VUkwgPSAi
aHR0cHM6Ly9xdmlzLmVkbS51aGFzc2VsdC5iZS8iCisKK3RlbXBsYXRlcyA9IEppbmphMlRlbXBs
YXRlcyhkaXJlY3Rvcnk9b3MucGF0aC5qb2luKFJPT1QsICJ0ZW1wbGF0ZXMiKSkKK2FwcCA9IFN0
YXJsZXR0ZSgpCisKKworQGFwcC5yb3V0ZSgiLyIpCithc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVz
dCk6CisgICAgIiIiCisgICAgU2ltcGxlIGhvbWVwYWdlLgorICAgICIiIgorICAgIGF3YWl0IHJl
cXVlc3Quc2VuZF9wdXNoX3Byb21pc2UoIi9zdHlsZS5jc3MiKQorICAgIHJldHVybiB0ZW1wbGF0
ZXMuVGVtcGxhdGVSZXNwb25zZSgiaW5kZXguaHRtbCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQor
CisKK0BhcHAucm91dGUoIi9lY2hvIiwgbWV0aG9kcz1bIlBPU1QiXSkKK2FzeW5jIGRlZiBlY2hv
KHJlcXVlc3QpOgorICAgICIiIgorICAgIEhUVFAgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAg
ICBjb250ZW50ID0gYXdhaXQgcmVxdWVzdC5ib2R5KCkKKyAgICBtZWRpYV90eXBlID0gcmVxdWVz
dC5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIikKKyAgICByZXR1cm4gUmVzcG9uc2UoY29udGVu
dCwgbWVkaWFfdHlwZT1tZWRpYV90eXBlKQorCisKK0BhcHAucm91dGUoIi9sb2dzLz8iKQorYXN5
bmMgZGVmIGxvZ3MocmVxdWVzdCk6CisgICAgIiIiCisgICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxP
RyBmaWxlcy4KKyAgICAiIiIKKyAgICBsb2dzID0gW10KKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0
ZGlyKExPR1NfUEFUSCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5xbG9nIik6CisgICAg
ICAgICAgICBzID0gb3Muc3RhdChvcy5wYXRoLmpvaW4oTE9HU19QQVRILCBuYW1lKSkKKyAgICAg
ICAgICAgIGZpbGVfdXJsID0gImh0dHBzOi8vIiArIHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsg
Ii9sb2dzLyIgKyBuYW1lCisgICAgICAgICAgICBsb2dzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJkYXRlIjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJv
bXRpbWVzdGFtcChzLnN0X210aW1lKS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIlWS0lbS0lZCAlSDolTTolUyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgImZpbGVfdXJsIjogZmlsZV91cmwsCisgICAgICAgICAgICAgICAgICAgICJuYW1l
IjogbmFtZVs6LTVdLAorICAgICAgICAgICAgICAgICAgICAicXZpc191cmwiOiBRVklTX1VSTAor
ICAgICAgICAgICAgICAgICAgICArICI/IgorICAgICAgICAgICAgICAgICAgICArIHVybGVuY29k
ZSh7ImZpbGUiOiBmaWxlX3VybH0pCisgICAgICAgICAgICAgICAgICAgICsgIiMvc2VxdWVuY2Ui
LAorICAgICAgICAgICAgICAgICAgICAic2l6ZSI6IHMuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICApCisgICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNl
KAorICAgICAgICAibG9ncy5odG1sIiwKKyAgICAgICAgeworICAgICAgICAgICAgImxvZ3MiOiBz
b3J0ZWQobG9ncywga2V5PWxhbWJkYSB4OiB4WyJkYXRlIl0sIHJldmVyc2U9VHJ1ZSksCisgICAg
ICAgICAgICAicmVxdWVzdCI6IHJlcXVlc3QsCisgICAgICAgIH0sCisgICAgKQorCisKK0BhcHAu
cm91dGUoIi97c2l6ZTppbnR9IikKK2RlZiBwYWRkaW5nKHJlcXVlc3QpOgorICAgICIiIgorICAg
IER5bmFtaWNhbGx5IGdlbmVyYXRlZCBkYXRhLCBtYXhpbXVtIDUwTUIuCisgICAgIiIiCisgICAg
c2l6ZSA9IG1pbig1MDAwMDAwMCwgcmVxdWVzdC5wYXRoX3BhcmFtc1sic2l6ZSJdKQorICAgIHJl
dHVybiBQbGFpblRleHRSZXNwb25zZSgiWiIgKiBzaXplKQorCisKK0BhcHAud2Vic29ja2V0X3Jv
dXRlKCIvd3MiKQorYXN5bmMgZGVmIHdzKHdlYnNvY2tldCk6CisgICAgIiIiCisgICAgV2ViU29j
a2V0IGVjaG8gZW5kcG9pbnQuCisgICAgIiIiCisgICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5z
Y29wZVsic3VicHJvdG9jb2xzIl06CisgICAgICAgIHN1YnByb3RvY29sID0gImNoYXQiCisgICAg
ZWxzZToKKyAgICAgICAgc3VicHJvdG9jb2wgPSBOb25lCisgICAgYXdhaXQgd2Vic29ja2V0LmFj
Y2VwdChzdWJwcm90b2NvbD1zdWJwcm90b2NvbCkKKworICAgIHRyeToKKyAgICAgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0
KCkKKyAgICAgICAgICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kX3RleHQobWVzc2FnZSkKKyAgICBl
eGNlcHQgV2ViU29ja2V0RGlzY29ubmVjdDoKKyAgICAgICAgcGFzcworCisKK2FwcC5tb3VudCgi
L2h0dHBiaW4iLCBXc2dpVG9Bc2dpKGh0dHBiaW4uYXBwKSkKKworYXBwLm1vdW50KFNUQVRJQ19V
UkwsIFN0YXRpY0ZpbGVzKGRpcmVjdG9yeT1TVEFUSUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWFhMGJkZWFhY2U2
MzcyYTdlYjEzMDEwZmQxNjY2YzY1NTQ2ODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL2V4YW1wbGVzL2h0ZG9jcy9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMiBAQAorVXNlci1hZ2Vu
dDogKgorRGlzYWxsb3c6IC9sb2dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHRkb2NzL3N0eWxlLmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxNTIzZGI4YWQ4ZDE2Zjc1MjYwYzU4MTdhYjQ4ZTg5ZTIxZWJiZDUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpA
QCAtMCwwICsxLDEwIEBACitib2R5IHsKKyAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2Vy
aWY7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRo
OiA0MGVtOworfQorCit0YWJsZS5sb2dzIHsKKyAgICB3aWR0aDogMTAwJTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NjgyMGRm
MGRmODA5YzdjOTg5OTI3YThiOGIzMjhlMDQ5NTZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAK
K1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
CitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9m
IGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAz
X2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTg4OGEzNmVhN2ViYTI3ZjM2YTVkZDQwYjBjNzZhMDQy
NDlkYzI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2Ns
aWVudC5weQpAQCAtMCwwICsxLDQ1NSBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNp
bworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUK
K2ltcG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQor
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWws
IFVuaW9uLCBjYXN0Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworaW1wb3J0
IHdzcHJvdG8KK2ltcG9ydCB3c3Byb3RvLmV2ZW50cworCitpbXBvcnQgYWlvcXVpYworZnJvbSBh
aW9xdWljLmFzeW5jaW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNp
by5wcm90b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgw
LmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgz
LmNvbm5lY3Rpb24gaW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgz
LmV2ZW50cyBpbXBvcnQgKAorICAgIERhdGFSZWNlaXZlZCwKKyAgICBIM0V2ZW50LAorICAgIEhl
YWRlcnNSZWNlaXZlZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBhaW9xdWlj
LnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVp
Yy5xdWljLmV2ZW50cyBpbXBvcnQgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIg
aW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQK
KwordHJ5OgorICAgIGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxv
b3AgPSBOb25lCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCitIdHRw
Q29ubmVjdGlvbiA9IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitVU0VSX0FH
RU5UID0gImFpb3F1aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBVUkw6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybDogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXJzZWQg
PSB1cmxwYXJzZSh1cmwpCisKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBwYXJzZWQubmV0bG9j
CisgICAgICAgIHNlbGYuZnVsbF9wYXRoID0gcGFyc2VkLnBhdGgKKyAgICAgICAgaWYgcGFyc2Vk
LnF1ZXJ5OgorICAgICAgICAgICAgc2VsZi5mdWxsX3BhdGggKz0gIj8iICsgcGFyc2VkLnF1ZXJ5
CisgICAgICAgIHNlbGYuc2NoZW1lID0gcGFyc2VkLnNjaGVtZQorCisKK2NsYXNzIEh0dHBSZXF1
ZXN0OgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbWV0aG9kOiBzdHIsIHVybDog
VVJMLCBjb250ZW50OiBieXRlcyA9IGIiIiwgaGVhZGVyczogRGljdCA9IHt9CisgICAgKSAtPiBO
b25lOgorICAgICAgICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIHNlbGYuaGVhZGVy
cyA9IGhlYWRlcnMKKyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51
cmwgPSB1cmwKKworCitjbGFzcyBXZWJTb2NrZXQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAg
ICBzZWxmLCBodHRwOiBIdHRwQ29ubmVjdGlvbiwgc3RyZWFtX2lkOiBpbnQsIHRyYW5zbWl0OiBD
YWxsYWJsZVtbXSwgTm9uZV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaHR0cCA9IGh0
dHAKKyAgICAgICAgc2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtzdHJdID0gYXN5bmNpby5RdWV1
ZSgpCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3Vi
cHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0
cmFuc21pdAorICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlvbih3c3By
b3RvLkNvbm5lY3Rpb25UeXBlLkNMSUVOVCkKKworICAgIGFzeW5jIGRlZiBjbG9zZShzZWxmLCBj
b2RlPTEwMDAsIHJlYXNvbj0iIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFBlcmZv
cm0gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHNl
bGYud2Vic29ja2V0LnNlbmQoCisgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5l
Y3Rpb24oY29kZT1jb2RlLCByZWFzb249cmVhc29uKQorICAgICAgICApCisgICAgICAgIHNlbGYu
aHR0cC5zZW5kX2RhdGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9z
dHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBkZWYgcmVj
dihzZWxmKSAtPiBzdHI6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIHRoZSBuZXh0IG1l
c3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQo
KQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgU2VuZCBhIG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShtZXNzYWdlLCBzdHIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vi
c29ja2V0LnNlbmQod3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlKSkKKyAg
ICAgICAgc2VsZi5odHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9
ZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBk
ZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAg
IGZvciBoZWFkZXIsIHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYg
aGVhZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuc3VicHJvdG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICBlbGlmIGlzaW5zdGFu
Y2UoZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldC5yZWNl
aXZlX2RhdGEoZXZlbnQuZGF0YSkKKworICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJz
b2NrZXQuZXZlbnRzKCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZl
ZCh3c19ldmVudCkKKworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZl
bnQ6IHdzcHJvdG8uZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNl
KGV2ZW50LCB3c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1
ZXVlLnB1dF9ub3dhaXQoZXZlbnQuZGF0YSkKKworCitjbGFzcyBIdHRwQ2xpZW50KFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3Mp
IC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisg
ICAgICAgIHNlbGYucHVzaGVzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAg
ICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2V2ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAg
ICAgIHNlbGYuX3JlcXVlc3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVb
SDNFdmVudF1dXSA9IHt9CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHM6IERpY3RbaW50LCBXZWJT
b2NrZXRdID0ge30KKworICAgICAgICBpZiBzZWxmLl9xdWljLmNvbmZpZ3VyYXRpb24uYWxwbl9w
cm90b2NvbHNbMF0uc3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICBzZWxmLl9odHRwID0g
SDBDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
Ll9odHRwID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisKKyAgICBhc3luYyBkZWYgZ2V0KHNl
bGYsIHVybDogc3RyLCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAg
ICAgICAiIiIKKyAgICAgICAgUGVyZm9ybSBhIEdFVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAg
ICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVz
dChtZXRob2Q9IkdFVCIsIHVybD1VUkwodXJsKSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICAp
CisKKyAgICBhc3luYyBkZWYgcG9zdChzZWxmLCB1cmw6IHN0ciwgZGF0YTogYnl0ZXMsIGhlYWRl
cnM6IERpY3QgPSB7fSkgLT4gRGVxdWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQ
ZXJmb3JtIGEgUE9TVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0
IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IlBPU1QiLCB1
cmw9VVJMKHVybCksIGNvbnRlbnQ9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisK
KyAgICBhc3luYyBkZWYgd2Vic29ja2V0KHNlbGYsIHVybDogc3RyLCBzdWJwcm90b2NvbHM6IExp
c3Rbc3RyXSA9IFtdKSAtPiBXZWJTb2NrZXQ6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIGEg
V2ViU29ja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IEh0dHBSZXF1ZXN0KG1l
dGhvZD0iQ09OTkVDVCIsIHVybD1VUkwodXJsKSkKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5f
cXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2Vic29ja2V0ID0g
V2ViU29ja2V0KAorICAgICAgICAgICAgaHR0cD1zZWxmLl9odHRwLCBzdHJlYW1faWQ9c3RyZWFt
X2lkLCB0cmFuc21pdD1zZWxmLnRyYW5zbWl0CisgICAgICAgICkKKworICAgICAgICBzZWxmLl93
ZWJzb2NrZXRzW3N0cmVhbV9pZF0gPSB3ZWJzb2NrZXQKKworICAgICAgICBoZWFkZXJzID0gWwor
ICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiQ09OTkVDVCIpLAorICAgICAgICAgICAgKGIiOnNj
aGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1ZXN0LnVy
bC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVy
bC5mdWxsX3BhdGguZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnByb3RvY29sIiwgYiJ3ZWJz
b2NrZXQiKSwKKyAgICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgp
KSwKKyAgICAgICAgICAgIChiInNlYy13ZWJzb2NrZXQtdmVyc2lvbiIsIGIiMTMiKSwKKyAgICAg
ICAgXQorICAgICAgICBpZiBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICBoZWFkZXJzLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwgIiwgIi5qb2lu
KHN1YnByb3RvY29scykuZW5jb2RlKCkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2h0
dHAuc2VuZF9oZWFkZXJzKHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKwor
ICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4gd2Vic29ja2V0CisKKyAg
ICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2Vp
dmVkKSk6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAg
ICAgIGlmIHN0cmVhbV9pZCBpbiBzZWxmLl9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAg
ICAjIGh0dHAKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tldmVudC5zdHJl
YW1faWRdLmFwcGVuZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1fZW5k
ZWQ6CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5fcmVxdWVzdF93
YWl0ZXIucG9wKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIu
c2V0X3Jlc3VsdChzZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkKKworICAgICAg
ICAgICAgZWxpZiBzdHJlYW1faWQgaW4gc2VsZi5fd2Vic29ja2V0czoKKyAgICAgICAgICAgICAg
ICAjIHdlYnNvY2tldAorICAgICAgICAgICAgICAgIHdlYnNvY2tldCA9IHNlbGYuX3dlYnNvY2tl
dHNbc3RyZWFtX2lkXQorICAgICAgICAgICAgICAgIHdlYnNvY2tldC5odHRwX2V2ZW50X3JlY2Vp
dmVkKGV2ZW50KQorCisgICAgICAgICAgICBlbGlmIGV2ZW50LnB1c2hfaWQgaW4gc2VsZi5wdXNo
ZXM6CisgICAgICAgICAgICAgICAgIyBwdXNoCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoZXNb
ZXZlbnQucHVzaF9pZF0uYXBwZW5kKGV2ZW50KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShl
dmVudCwgUHVzaFByb21pc2VSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVu
dC5wdXNoX2lkXSA9IGRlcXVlKCkKKyAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hf
aWRdLmFwcGVuZChldmVudCkKKworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2
ZW50OiBRdWljRXZlbnQpIC0+IE5vbmU6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBI
VFRQIGxheWVyCisgICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAg
ICAgICAgICAgICAgc2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKyAgICBh
c3luYyBkZWYgX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdDogSHR0cFJlcXVlc3QpOgorICAgICAgICBz
dHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAg
ICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9k
IiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUi
LCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjphdXRo
b3JpdHkiLCByZXF1ZXN0LnVybC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAg
IChiIjpwYXRoIiwgcmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAg
ICAgICAoYiJ1c2VyLWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAgICAgICAgICBd
CisgICAgICAgICAgICArIFsoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkgZm9yIChrLCB2KSBpbiBy
ZXF1ZXN0LmhlYWRlcnMuaXRlbXMoKV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5z
ZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LmNvbnRlbnQsIGVuZF9z
dHJlYW09VHJ1ZSkKKworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUo
KQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAg
ICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNl
bGYudHJhbnNtaXQoKQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0
ZXIpCisKKworYXN5bmMgZGVmIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgIGNsaWVudDogSHR0
cENsaWVudCwgdXJsOiBzdHIsIGRhdGE6IHN0ciwgaW5jbHVkZTogYm9vbCwgb3V0cHV0X2Rpcjog
T3B0aW9uYWxbc3RyXSwKKykgLT4gTm9uZToKKyAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgIHN0
YXJ0ID0gdGltZS50aW1lKCkKKyAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBodHRw
X2V2ZW50cyA9IGF3YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgdXJsLAorICAgICAgICAg
ICAgZGF0YT1kYXRhLmVuY29kZSgpLAorICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlw
ZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgKQorICAg
IGVsc2U6CisgICAgICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisgICAg
ZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICMgcHJpbnQgc3BlZWQKKyAgICBv
Y3RldHMgPSAwCisgICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgIGlm
IGlzaW5zdGFuY2UoaHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIG9jdGV0
cyArPSBsZW4oaHR0cF9ldmVudC5kYXRhKQorICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAiUmVj
ZWl2ZWQgJWQgYnl0ZXMgaW4gJS4xZiBzICglLjNmIE1icHMpIgorICAgICAgICAlIChvY3RldHMs
IGVsYXBzZWQsIG9jdGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICApCisKKyAgICAj
IG91dHB1dCByZXNwb25zZQorICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAg
IG91dHB1dF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3V0cHV0X2Rpciwgb3Mu
cGF0aC5iYXNlbmFtZSh1cmxwYXJzZSh1cmwpLnBhdGgpIG9yICJpbmRleC5odG1sIgorICAgICAg
ICApCisgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgIndiIikgYXMgb3V0cHV0X2ZpbGU6
CisgICAgICAgICAgICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGluY2x1
ZGU6CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBiIiIKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIGssIHYgaW4gaHR0cF9ldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycyArPSBrICsgYiI6ICIgKyB2ICsgYiJcclxuIgorICAgICAgICAgICAgICAgICAg
ICBpZiBoZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUo
aGVhZGVycyArIGIiXHJcbiIpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGh0dHBf
ZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndy
aXRlKGh0dHBfZXZlbnQuZGF0YSkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQ6
IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMg
aW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAg
aXMgcmVjZWl2ZWQuCisgICAgIiIiCisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tl
dCByZWNlaXZlZCIpCisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBv
cGVuKGFyZ3Muc2Vzc2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xl
LmR1bXAodGlja2V0LCBmcCkKKworCithc3luYyBkZWYgcnVuKAorICAgIGNvbmZpZ3VyYXRpb246
IFF1aWNDb25maWd1cmF0aW9uLAorICAgIHVybHM6IExpc3Rbc3RyXSwKKyAgICBkYXRhOiBzdHIs
CisgICAgaW5jbHVkZTogYm9vbCwKKyAgICBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorICAg
IGxvY2FsX3BvcnQ6IGludCwKKykgLT4gTm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNl
ZCA9IHVybHBhcnNlKHVybHNbMF0pCisgICAgYXNzZXJ0IHBhcnNlZC5zY2hlbWUgaW4gKAorICAg
ICAgICAiaHR0cHMiLAorICAgICAgICAid3NzIiwKKyAgICApLCAiT25seSBodHRwczovLyBvciB3
c3M6Ly8gVVJMcyBhcmUgc3VwcG9ydGVkLiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoK
KyAgICAgICAgaG9zdCwgcG9ydF9zdHIgPSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAg
ICAgcG9ydCA9IGludChwb3J0X3N0cikKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2Vk
Lm5ldGxvYworICAgICAgICBwb3J0ID0gNDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisg
ICAgICAgIGhvc3QsCisgICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbiwKKyAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgICAgIHNl
c3Npb25fdGlja2V0X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgbG9jYWxf
cG9ydD1sb2NhbF9wb3J0LAorICAgICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0
KEh0dHBDbGllbnQsIGNsaWVudCkKKworICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICJ3c3Mi
OgorICAgICAgICAgICAgd3MgPSBhd2FpdCBjbGllbnQud2Vic29ja2V0KHVybHNbMF0sIHN1YnBy
b3RvY29scz1bImNoYXQiLCAic3VwZXJjaGF0Il0pCisKKyAgICAgICAgICAgICMgc2VuZCBzb21l
IG1lc3NhZ2VzIGFuZCByZWNlaXZlIHJlcGx5CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgy
KToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkhlbGxvIHt9LCBXZWJTb2NrZXQhIi5mb3Jt
YXQoaSkKKyAgICAgICAgICAgICAgICBwcmludCgiPiAiICsgbWVzc2FnZSkKKyAgICAgICAgICAg
ICAgICBhd2FpdCB3cy5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0g
YXdhaXQgd3MucmVjdigpCisgICAgICAgICAgICAgICAgcHJpbnQoIjwgIiArIG1lc3NhZ2UpCisK
KyAgICAgICAgICAgIGF3YWl0IHdzLmNsb3NlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgcGVyZm9ybSByZXF1ZXN0CisgICAgICAgICAgICBjb3JvcyA9IFsKKyAgICAgICAgICAgICAg
ICBwZXJmb3JtX2h0dHBfcmVxdWVzdCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50PWNsaWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICAgICAgZGF0
YT1kYXRhLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlPWluY2x1ZGUsCisgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9kaXI9b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgZm9yIHVybCBpbiB1cmxzCisgICAgICAgICAgICBdCisgICAgICAgICAgICBh
d2FpdCBhc3luY2lvLmdhdGhlcigqY29yb3MpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKKyAgICBkZWZhdWx0cyA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorCisg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBj
bGllbnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ1cmwiLCB0eXBlPXN0
ciwgbmFyZ3M9IisiLCBoZWxwPSJ0aGUgVVJMIHRvIHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBl
PXN0ciwgaGVscD0ibG9hZCBDQSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUi
CisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEi
LCB0eXBlPXN0ciwgaGVscD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVl
c3QiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItaSIsCisgICAg
ICAgICItLWluY2x1ZGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBo
ZWxwPSJpbmNsdWRlIHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgaW4gdGhlIG91dHB1dCIsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1kYXRhIiwKKyAg
ICAgICAgdHlwZT1pbnQsCisgICAgICAgIGhlbHA9ImNvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRy
b2wgbGltaXQgKGRlZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfZGF0YSwKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tbWF4LXN0cmVhbS1kYXRhIiwKKyAgICAg
ICAgdHlwZT1pbnQsCisgICAgICAgIGhlbHA9InBlci1zdHJlYW0gZmxvdyBjb250cm9sIGxpbWl0
IChkZWZhdWx0OiAlZCkiICUgZGVmYXVsdHMubWF4X3N0cmVhbV9kYXRhLAorICAgICkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1pbnNlY3VyZSIs
CisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRvIG5vdCB2YWxp
ZGF0ZSBzZXJ2ZXIgY2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCItLWxlZ2FjeS1odHRwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0idXNlIEhUVFAvMC45
IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgdHlw
ZT1zdHIsIGhlbHA9IndyaXRlIGRvd25sb2FkZWQgZmlsZXMgdG8gdGhpcyBkaXJlY3RvcnkiLAor
ICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxv
ZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9y
bWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAg
ICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJs
b2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9u
LXRpY2tldCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0
ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tbG9jYWwtcG9ydCIsIHR5cGU9aW50LCBk
ZWZhdWx0PTAsIGhlbHA9ImxvY2FsIHBvcnQgdG8gYmluZCBmb3IgY29ubmVjdGlvbnMiLAorICAg
ICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2lj
Q29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1l
KXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVy
Ym9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBpZiBhcmdzLm91dHB1dF9kaXIg
aXMgbm90IE5vbmUgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0cHV0X2Rpcik6CisgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGFyZ3Mub3V0cHV0
X2RpcikKKworICAgICMgcHJlcGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9
IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2Nv
bHM9SDBfQUxQTiBpZiBhcmdzLmxlZ2FjeV9odHRwIGVsc2UgSDNfQUxQTgorICAgICkKKyAgICBp
ZiBhcmdzLmNhX2NlcnRzOgorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0
aW9ucyhhcmdzLmNhX2NlcnRzKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNvbmZp
Z3VyYXRpb24udmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5tYXhfZGF0
YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfZGF0YSA9IGFyZ3MubWF4X2RhdGEKKyAgICBp
ZiBhcmdzLm1heF9zdHJlYW1fZGF0YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfc3RyZWFt
X2RhdGEgPSBhcmdzLm1heF9zdHJlYW1fZGF0YQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdz
LnNlY3JldHNfbG9nOgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBv
cGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0Ogor
ICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwg
InJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tl
dCA9IHBpY2tsZS5sb2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6Cisg
ICAgICAgICAgICBwYXNzCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2
bG9vcC5pbnN0YWxsKCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAg
dHJ5OgorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bigK
KyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAg
ICAgICAgdXJscz1hcmdzLnVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWFyZ3MuZGF0YSwKKyAg
ICAgICAgICAgICAgICBpbmNsdWRlPWFyZ3MuaW5jbHVkZSwKKyAgICAgICAgICAgICAgICBvdXRw
dXRfZGlyPWFyZ3Mub3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICBsb2NhbF9wb3J0PWFyZ3Mu
bG9jYWxfcG9ydCwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAg
ICAgIGlmIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICB3aXRoIG9wZW4oYXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAg
ICAgICAganNvbi5kdW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dn
ZXJfZnAsIGluZGVudD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAz
X3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjE1YjA0YjAzYzE1NDNmMzYwZDA0Njg4Njk4MzUzNmNlMjVlYWE3YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKQEAgLTAsMCAr
MSw0ODQgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbXBvcnRs
aWIKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQor
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IGZv
cm1hdGRhdGUKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3Qs
IE9wdGlvbmFsLCBVbmlvbiwgY2FzdAorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8u
ZXZlbnRzCisKK2ltcG9ydCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVp
Y0Nvbm5lY3Rpb25Qcm90b2NvbCwgc2VydmUKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGlt
cG9ydCBIMF9BTFBOLCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGlt
cG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0
IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMu
ZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1
aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBQcm90b2NvbE5lZ290aWF0
ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2Vy
LCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQK
KwordHJ5OgorICAgIGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxv
b3AgPSBOb25lCisKK0FzZ2lBcHBsaWNhdGlvbiA9IENhbGxhYmxlCitIdHRwQ29ubmVjdGlvbiA9
IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitTRVJWRVJfTkFNRSA9ICJhaW9x
dWljLyIgKyBhaW9xdWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgSHR0cFJlcXVlc3RIYW5kbGVy
OgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAg
YXV0aG9yaXR5OiBieXRlcywKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisg
ICAgICAgIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgICAgICBzY29wZTog
RGljdCwKKyAgICAgICAgc3RyZWFtX2VuZGVkOiBib29sLAorICAgICAgICBzdHJlYW1faWQ6IGlu
dCwKKyAgICAgICAgdHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuYXV0aG9yaXR5ID0gYXV0aG9yaXR5CisgICAgICAgIHNlbGYuY29ubmVj
dGlvbiA9IGNvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAg
ICAgIHNlbGYucXVldWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAg
ICAgICAgc2VsZi5zY29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFt
X2lkCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorCisgICAgICAgIGlmIHN0cmVh
bV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAiaHR0
cC5yZXF1ZXN0In0pCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
SDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImh0dHAucmVxdWVzdCIsCisgICAgICAg
ICAgICAgICAgICAgICJib2R5IjogZXZlbnQuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIm1v
cmVfYm9keSI6IG5vdCBldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZl
ZCkgYW5kIGV2ZW50LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25v
d2FpdCgKKyAgICAgICAgICAgICAgICB7InR5cGUiOiAiaHR0cC5yZXF1ZXN0IiwgImJvZHkiOiBi
IiIsICJtb3JlX2JvZHkiOiBGYWxzZX0KKyAgICAgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBy
dW5fYXNnaShzZWxmLCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgYXdh
aXQgYXBwbGljYXRpb24oc2VsZi5zY29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisKKyAg
ICBhc3luYyBkZWYgcmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gYXdhaXQg
c2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogRGlj
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNl
LnN0YXJ0IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCisgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhl
YWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgc3RyKG1lc3NhZ2VbInN0
YXR1cyJdKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZF
Ul9OQU1FLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRh
dGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgICAgICsgWyhrLCB2KSBmb3IgaywgdiBpbiBtZXNzYWdlWyJoZWFkZXJz
Il1dLAorICAgICAgICAgICAgKQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0
cC5yZXNwb25zZS5ib2R5IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgIGRhdGE9bWVzc2FnZS5nZXQoImJvZHkiLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09bm90IG1lc3NhZ2UuZ2V0KCJtb3JlX2JvZHkiLCBGYWxzZSksCisgICAgICAgICAgICAp
CisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnB1c2giIGFu
ZCBpc2luc3RhbmNlKAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb24K
KyAgICAgICAgKToKKyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IFsKKyAgICAgICAgICAg
ICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwg
YiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzZWxmLmF1dGhvcml0
eSksCisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBtZXNzYWdlWyJwYXRoIl0uZW5jb2RlKCkp
LAorICAgICAgICAgICAgXSArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJd
XQorCisgICAgICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgcHVzaF9zdHJlYW1faWQgPSBzZWxmLmNvbm5lY3Rpb24uc2VuZF9wdXNo
X3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwg
aGVhZGVycz1yZXF1ZXN0X2hlYWRlcnMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBl
eGNlcHQgTm9BdmFpbGFibGVQdXNoSURFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICAgICAgIyBmYWtlIHJlcXVlc3QKKyAgICAgICAgICAgIGNhc3QoSHR0cFNlcnZlclBy
b3RvY29sLCBzZWxmLnByb3RvY29sKS5odHRwX2V2ZW50X3JlY2VpdmVkKAorICAgICAgICAgICAg
ICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1yZXF1ZXN0
X2hlYWRlcnMsIHN0cmVhbV9lbmRlZD1UcnVlLCBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQor
CisKK2NsYXNzIFdlYlNvY2tldEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBz
ZWxmLAorICAgICAgICAqLAorICAgICAgICBjb25uZWN0aW9uOiBIdHRwQ29ubmVjdGlvbiwKKyAg
ICAgICAgc2NvcGU6IERpY3QsCisgICAgICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFu
c21pdDogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5j
bG9zZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAg
ICAgIHNlbGYuaHR0cF9ldmVudF9xdWV1ZTogRGVxdWVbRGF0YVJlY2VpdmVkXSA9IGRlcXVlKCkK
KyAgICAgICAgc2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFzeW5jaW8uUXVldWUo
KQorICAgICAgICBzZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBz
dHJlYW1faWQKKyAgICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYu
d2Vic29ja2V0OiBPcHRpb25hbFt3c3Byb3RvLkNvbm5lY3Rpb25dID0gTm9uZQorCisgICAgZGVm
IGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLmNsb3Nl
ZDoKKyAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIHNlbGYud2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAg
ICAgICAgICAgZm9yIHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBkZWxheSBldmVudCBwcm9jZXNzaW5n
IHVudGlsIHdlIGdldCBgd2Vic29ja2V0LmFjY2VwdGAKKyAgICAgICAgICAgICAgICAjIGZyb20g
dGhlIEFTR0kgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcXVl
dWUuYXBwZW5kKGV2ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9yZWNlaXZlZChzZWxm
LCBldmVudDogd3Nwcm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAgICAgICAgICAgIHNl
bGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAid2Vic29ja2V0LnJlY2VpdmUiLCAidGV4dCI6
IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZl
bnRzLk1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6
ICJ3ZWJzb2NrZXQucmVjZWl2ZSIsICJieXRlcyI6IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlm
IGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbik6CisgICAg
ICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5kaXNjb25u
ZWN0IiwgImNvZGUiOiBldmVudC5jb2RlfSkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxm
LCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXRf
bm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQuY29ubmVjdCJ9KQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGF3YWl0IGFwcGxpY2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2Vs
Zi5zZW5kKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2Vk
OgorICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuc2VuZCh7InR5cGUiOiAid2Vic29ja2V0LmNs
b3NlIiwgImNvZGUiOiAxMDAwfSkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERp
Y3Q6CisgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBk
ZWYgc2VuZChzZWxmLCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBkYXRhID0gYiIi
CisgICAgICAgIGVuZF9zdHJlYW0gPSBGYWxzZQorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0g
PT0gIndlYnNvY2tldC5hY2NlcHQiOgorICAgICAgICAgICAgc3VicHJvdG9jb2wgPSBtZXNzYWdl
LmdldCgic3VicHJvdG9jb2wiKQorCisgICAgICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJv
dG8uQ29ubmVjdGlvbih3c3Byb3RvLkNvbm5lY3Rpb25UeXBlLlNFUlZFUikKKworICAgICAgICAg
ICAgaGVhZGVycyA9IFsKKyAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAg
ICAgICAgICAgICAgICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5lbmNvZGUoKSksCisgICAgICAg
ICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5l
bmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJzZWMtd2Vic29ja2V0
LXByb3RvY29sIiwgc3VicHJvdG9jb2wuZW5jb2RlKCkpKQorICAgICAgICAgICAgc2VsZi5jb25u
ZWN0aW9uLnNlbmRfaGVhZGVycyhzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9aGVh
ZGVycykKKworICAgICAgICAgICAgIyBjb25zdW1lIGJhY2tsb2cKKyAgICAgICAgICAgIHdoaWxl
IHNlbGYuaHR0cF9ldmVudF9xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRf
cmVjZWl2ZWQoc2VsZi5odHRwX2V2ZW50X3F1ZXVlLnBvcGxlZnQoKSkKKworICAgICAgICBlbGlm
IG1lc3NhZ2VbInR5cGUiXSA9PSAid2Vic29ja2V0LmNsb3NlIjoKKyAgICAgICAgICAgIGlmIHNl
bGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndl
YnNvY2tldC5zZW5kKAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNv
bm5lY3Rpb24oY29kZT1tZXNzYWdlWyJjb2RlIl0pCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9
WyhiIjpzdGF0dXMiLCBiIjQwMyIpXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVu
ZF9zdHJlYW0gPSBUcnVlCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2Nr
ZXQuc2VuZCI6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmdldCgidGV4dCIpIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAgICAg
ICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShkYXRhPW1lc3NhZ2VbInRleHQi
XSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbGlmIG1lc3NhZ2UuZ2V0KCJieXRl
cyIpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5z
ZW5kKAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5NZXNzYWdlKGRhdGE9bWVz
c2FnZVsiYnl0ZXMiXSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZGF0YToKKyAg
ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbQor
ICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5j
bG9zZWQgPSBUcnVlCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK0hhbmRsZXIgPSBVbmlv
bltIdHRwUmVxdWVzdEhhbmRsZXIsIFdlYlNvY2tldEhhbmRsZXJdCisKKworY2xhc3MgSHR0cFNl
cnZlclByb3RvY29sKFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18o
KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLl9oYW5kbGVyczogRGljdFtpbnQsIEhhbmRs
ZXJdID0ge30KKyAgICAgICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0g
Tm9uZQorCisgICAgZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQp
IC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkg
YW5kIGV2ZW50LnN0cmVhbV9pZCBub3QgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAgICBh
dXRob3JpdHkgPSBOb25lCisgICAgICAgICAgICBoZWFkZXJzID0gW10KKyAgICAgICAgICAgIGh0
dHBfdmVyc2lvbiA9ICIwLjkiIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDBDb25uZWN0aW9u
KSBlbHNlICIzIgorICAgICAgICAgICAgcmF3X3BhdGggPSBiIiIKKyAgICAgICAgICAgIG1ldGhv
ZCA9ICIiCisgICAgICAgICAgICBwcm90b2NvbCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBoZWFk
ZXIsIHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09
IGIiOmF1dGhvcml0eSI6CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IHZhbHVlCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKChiImhvc3QiLCB2YWx1ZSkpCisgICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXIgPT0gYiI6bWV0aG9kIjoKKyAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kID0gdmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9
PSBiIjpwYXRoIjoKKyAgICAgICAgICAgICAgICAgICAgcmF3X3BhdGggPSB2YWx1ZQorICAgICAg
ICAgICAgICAgIGVsaWYgaGVhZGVyID09IGIiOnByb3RvY29sIjoKKyAgICAgICAgICAgICAgICAg
ICAgcHJvdG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVy
IGFuZCBub3QgaGVhZGVyLnN0YXJ0c3dpdGgoYiI6Iik6CisgICAgICAgICAgICAgICAgICAgIGhl
YWRlcnMuYXBwZW5kKChoZWFkZXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgYiI/IiBpbiBy
YXdfcGF0aDoKKyAgICAgICAgICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdf
cGF0aC5zcGxpdChiIj8iLCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aCwgYiIiCisgICAgICAg
ICAgICBwYXRoID0gcGF0aF9ieXRlcy5kZWNvZGUoKQorCisgICAgICAgICAgICAjIEZJWE1FOiBh
ZGQgYSBwdWJsaWMgQVBJIHRvIHJldHJpZXZlIHBlZXIgYWRkcmVzcworICAgICAgICAgICAgY2xp
ZW50X2FkZHIgPSBzZWxmLl9odHRwLl9xdWljLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIKKyAgICAg
ICAgICAgIGNsaWVudCA9IChjbGllbnRfYWRkclswXSwgY2xpZW50X2FkZHJbMV0pCisKKyAgICAg
ICAgICAgIGhhbmRsZXI6IEhhbmRsZXIKKyAgICAgICAgICAgIHNjb3BlOiBEaWN0CisgICAgICAg
ICAgICBpZiBtZXRob2QgPT0gIkNPTk5FQ1QiIGFuZCBwcm90b2NvbCA9PSAid2Vic29ja2V0IjoK
KyAgICAgICAgICAgICAgICBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtdCisgICAgICAgICAg
ICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgaGVhZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJwcm90b2NvbHMgPSBbeC5zdHJpcCgpIGZvciB4IGluIHZhbHVlLmRl
Y29kZSgpLnNwbGl0KCIsIildCisgICAgICAgICAgICAgICAgc2NvcGUgPSB7CisgICAgICAgICAg
ICAgICAgICAgICJjbGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJz
IjogaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVy
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAg
ICAgICAgICAgInBhdGgiOiBwYXRoLAorICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5n
IjogcXVlcnlfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgInJvb3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAg
ICAgICAic2NoZW1lIjogIndzcyIsCisgICAgICAgICAgICAgICAgICAgICJzdWJwcm90b2NvbHMi
OiBzdWJwcm90b2NvbHMsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIndlYnNvY2tldCIs
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBXZWJTb2NrZXRI
YW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAg
ICAgICAgICAgICAgICAgIHNjb3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRy
YW5zbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9uczogRGljdFtzdHIsIERpY3RdID0ge30KKyAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHNlbGYuX2h0dHAsIEgzQ29ubmVjdGlvbik6CisgICAgICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnNbImh0dHAucmVzcG9uc2UucHVzaCJdID0ge30KKyAgICAgICAgICAgICAg
ICBzY29wZSA9IHsKKyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgImV4dGVuc2lvbnMiOiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAg
ICAgICAiaGVhZGVycyI6IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNp
b24iOiBodHRwX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2Qs
CisgICAgICAgICAgICAgICAgICAgICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAg
InF1ZXJ5X3N0cmluZyI6IHF1ZXJ5X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19w
YXRoIjogcmF3X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAg
ICAgICAgICAgICAgICAgICAgInNjaGVtZSI6ICJodHRwcyIsCisgICAgICAgICAgICAgICAgICAg
ICJ0eXBlIjogImh0dHAiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5k
bGVyID0gSHR0cFJlcXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHk9
YXV0aG9yaXR5LAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisg
ICAgICAgICAgICAgICAgICAgIHByb3RvY29sPXNlbGYsCisgICAgICAgICAgICAgICAgICAgIHNj
b3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9ZXZlbnQuc3RyZWFt
X2VuZGVkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAor
ICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0gPSBoYW5k
bGVyCisgICAgICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaGFuZGxlci5ydW5fYXNnaShh
cHBsaWNhdGlvbikpCisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5jZShldmVu
dCwgKERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIGFuZCBldmVu
dC5zdHJlYW1faWQgaW4gc2VsZi5faGFuZGxlcnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGhh
bmRsZXIgPSBzZWxmLl9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdCisgICAgICAgICAgICBoYW5k
bGVyLmh0dHBfZXZlbnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNl
aXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3Rh
bmNlKGV2ZW50LCBQcm90b2NvbE5lZ290aWF0ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuYWxw
bl9wcm90b2NvbC5zdGFydHN3aXRoKCJoMy0iKToKKyAgICAgICAgICAgICAgICBzZWxmLl9odHRw
ID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgICAgICBlbGlmIGV2ZW50LmFscG5f
cHJvdG9jb2wuc3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9
IEgwQ29ubmVjdGlvbihzZWxmLl9xdWljKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQs
IERhdGFncmFtRnJhbWVSZWNlaXZlZCk6CisgICAgICAgICAgICBpZiBldmVudC5kYXRhID09IGIi
cXVhY2siOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShi
InF1YWNrLWFjayIpCisKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIK
KyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBodHRw
X2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAg
ICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitjbGFzcyBTZXNzaW9u
VGlja2V0U3RvcmU6CisgICAgIiIiCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vz
c2lvbiB0aWNrZXRzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQor
CisgICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAg
ICAgIHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChz
ZWxmLCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICBy
ZXR1cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitjbGFzcyBRdWljTG9nZ2Vy
Q3VzdG9tKFF1aWNMb2dnZXIpOgorICAgICIiIgorICAgIEN1c3RvbSBRVUlDIGxvZ2dlciB3aGlj
aCB3cml0ZXMgb25lIHRyYWNlIHBlciBmaWxlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhdGg6IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIo
cGF0aCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJRVUlDIGxvZyBvdXRwdXQgZGly
ZWN0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0g
cGF0aAorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIGRlZiBlbmRfdHJhY2Uoc2Vs
ZiwgdHJhY2U6IFF1aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKKyAgICAgICAgdHJhY2VfZGljdCA9
IHRyYWNlLnRvX2RpY3QoKQorICAgICAgICB0cmFjZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAg
ICAgICAgICAgc2VsZi5wYXRoLCB0cmFjZV9kaWN0WyJjb21tb25fZmllbGRzIl1bIk9EQ0lEIl0g
KyAiLnFsb2ciCisgICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX3BhdGgsICJ3Iikg
YXMgbG9nZ2VyX2ZwOgorICAgICAgICAgICAganNvbi5kdW1wKHsicWxvZ192ZXJzaW9uIjogImRy
YWZ0LTAxIiwgInRyYWNlcyI6IFt0cmFjZV9kaWN0XX0sIGxvZ2dlcl9mcCkKKyAgICAgICAgc2Vs
Zi5fdHJhY2VzLnJlbW92ZSh0cmFjZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgor
ICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJRVUlDIHNl
cnZlciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImFwcCIsCisgICAgICAg
IHR5cGU9c3RyLAorICAgICAgICBuYXJncz0iPyIsCisgICAgICAgIGRlZmF1bHQ9ImRlbW86YXBw
IiwKKyAgICAgICAgaGVscD0idGhlIEFTR0kgYXBwbGljYXRpb24gYXMgPG1vZHVsZT46PGF0dHJp
YnV0ZT4iLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWMiLAor
ICAgICAgICAiLS1jZXJ0aWZpY2F0ZSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1
aXJlZD1UcnVlLAorICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0
aGUgc3BlY2lmaWVkIGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAg
ICAgICAiLS1ob3N0IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Ijo6IiwK
KyAgICAgICAgaGVscD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMg
dG8gOjopIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tcG9y
dCIsCisgICAgICAgIHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhl
bHA9Imxpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0t
cHJpdmF0ZS1rZXkiLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmll
ZCBmaWxlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwK
KyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVs
cD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICAp
CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0
eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAgICAg
Ii0tc3RhdGVsZXNzLXJldHJ5IiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAg
ICAgaGVscD0ic2VuZCBhIHN0YXRlbGVzcyByZXRyeSBmb3IgbmV3IGNvbm5lY3Rpb25zIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5Igor
ICAgICkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNp
Y0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFt
ZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZl
cmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBpbXBvcnQgQVNHSSBhcHBs
aWNhdGlvbgorICAgIG1vZHVsZV9zdHIsIGF0dHJfc3RyID0gYXJncy5hcHAuc3BsaXQoIjoiLCBt
YXhzcGxpdD0xKQorICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9z
dHIpCisgICAgYXBwbGljYXRpb24gPSBnZXRhdHRyKG1vZHVsZSwgYXR0cl9zdHIpCisKKyAgICAj
IGNyZWF0ZSBRVUlDIGxvZ2dlcgorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIHF1aWNf
bG9nZ2VyID0gUXVpY0xvZ2dlckN1c3RvbShhcmdzLnF1aWNfbG9nKQorICAgIGVsc2U6CisgICAg
ICAgIHF1aWNfbG9nZ2VyID0gTm9uZQorCisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlm
IGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Mu
c2VjcmV0c19sb2csICJhIikKKyAgICBlbHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0g
Tm9uZQorCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBh
bHBuX3Byb3RvY29scz1IM19BTFBOICsgSDBfQUxQTiArIFsic2lkdWNrIl0sCisgICAgICAgIGlz
X2NsaWVudD1GYWxzZSwKKyAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisg
ICAgICAgIHF1aWNfbG9nZ2VyPXF1aWNfbG9nZ2VyLAorICAgICAgICBzZWNyZXRzX2xvZ19maWxl
PXNlY3JldHNfbG9nX2ZpbGUsCisgICAgKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBh
bmQga2V5CisgICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0
ZSwgYXJncy5wcml2YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRT
dG9yZSgpCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0
YWxsKCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5f
dW50aWxfY29tcGxldGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAor
ICAgICAgICAgICAgYXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uLAorICAgICAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBTZXJ2ZXJQcm90b2NvbCwK
KyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAg
ICAgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAg
ICAgICAgIHN0YXRlbGVzc19yZXRyeT1hcmdzLnN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgKQor
ICAgICkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBL
ZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9j
bGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMy
OTk5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGll
bnQucHkKQEAgLTAsMCArMSwyMTMgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8K
K2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwor
aW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBp
bXBvcnQgRGVxdWUsIERpY3QsIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJz
ZQorCitmcm9tIGh0dHB4IGltcG9ydCBBc3luY0NsaWVudAorZnJvbSBodHRweC5jb25maWcgaW1w
b3J0IFRpbWVvdXQKK2Zyb20gaHR0cHguZGlzcGF0Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRj
aGVyCitmcm9tIGh0dHB4Lm1vZGVscyBpbXBvcnQgUmVxdWVzdCwgUmVzcG9uc2UKKworZnJvbSBh
aW9xdWljLmFzeW5jaW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNp
by5wcm90b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgz
LmNvbm5lY3Rpb24gaW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgz
LmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKK2Zy
b20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitm
cm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1
aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJjbGllbnQiKQorCisKK2NsYXNzIEgzRGlzcGF0Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29s
LCBBc3luY0Rpc3BhdGNoZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAg
ICBzZWxmLl9odHRwID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIHNlbGYuX3Jl
cXVlc3RfZXZlbnRzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2Vs
Zi5fcmVxdWVzdF93YWl0ZXI6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50
XV1dID0ge30KKworICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRp
bWVvdXQ6IFRpbWVvdXQgPSBOb25lKSAtPiBSZXNwb25zZToKKyAgICAgICAgc3RyZWFtX2lkID0g
c2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKworICAgICAgICAjIHBy
ZXBhcmUgcmVxdWVzdAorICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAg
ICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAg
ICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAg
ICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzdHIocmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGgu
ZW5jb2RlKCkpLAorICAgICAgICAgICAgXQorICAgICAgICAgICAgKyBbCisgICAgICAgICAgICAg
ICAgKGsuZW5jb2RlKCksIHYuZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBp
biByZXF1ZXN0LmhlYWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIGsgbm90IGluICgi
Y29ubmVjdGlvbiIsICJob3N0IikKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5faHR0cC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJl
YWQoKSwgZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAgICMgdHJhbnNtaXQgcmVxdWVzdAorICAg
ICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9y
ZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0
X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisg
ICAgICAgICMgcHJvY2VzcyByZXNwb25zZQorICAgICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRd
ID0gYXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorICAgICAgICBjb250ZW50ID0gYiIiCisg
ICAgICAgIGhlYWRlcnMgPSBbXQorICAgICAgICBzdGF0dXNfY29kZSA9IE5vbmUKKyAgICAgICAg
Zm9yIGV2ZW50IGluIGV2ZW50czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhl
YWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZl
bnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUo
KSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBoZWFkZXJbMDoxXSAhPSBiIjoiOgorICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUu
ZGVjb2RlKCkpKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2
ZWQpOgorICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gZXZlbnQuZGF0YQorCisgICAgICAgIHJl
dHVybiBSZXNwb25zZSgKKyAgICAgICAgICAgIHN0YXR1c19jb2RlPXN0YXR1c19jb2RlLAorICAg
ICAgICAgICAgaHR0cF92ZXJzaW9uPSJIVFRQLzMiLAorICAgICAgICAgICAgaGVhZGVycz1oZWFk
ZXJzLAorICAgICAgICAgICAgY29udGVudD1jb250ZW50LAorICAgICAgICAgICAgcmVxdWVzdD1y
ZXF1ZXN0LAorICAgICAgICApCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogSDNFdmVudCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVj
ZWl2ZWQsIERhdGFSZWNlaXZlZCkpOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3Ry
ZWFtX2lkCisgICAgICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6
CisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5h
cHBlbmQoZXZlbnQpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBv
cChzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1
bHQoc2VsZi5fcmVxdWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICBkZWYgcXVpY19l
dmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKKyAgICAgICAgIyDCoHBhc3Mg
ZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50
KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9l
dmVudCkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICIiIgorICAg
IENhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBz
ZXNzaW9uIHRpY2tldAorICAgIGlzIHJlY2VpdmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZv
KCJOZXcgc2Vzc2lvbiB0aWNrZXQgcmVjZWl2ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNr
ZXQ6CisgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoK
KyAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bihj
b25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbiwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4g
Tm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKyAgICBh
c3NlcnQgcGFyc2VkLnNjaGVtZSA9PSAiaHR0cHMiLCAiT25seSBodHRwczovLyBVUkxzIGFyZSBz
dXBwb3J0ZWQuIgorICAgIGlmICI6IiBpbiBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBw
b3J0X3N0ciA9IHBhcnNlZC5uZXRsb2Muc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBv
cnRfc3RyKQorICAgIGVsc2U6CisgICAgICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAg
IHBvcnQgPSA0NDMKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAg
ICAgICAgcG9ydCwKKyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAg
ICBjcmVhdGVfcHJvdG9jb2w9SDNEaXNwYXRjaGVyLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyPXNhdmVfc2Vzc2lvbl90aWNrZXQsCisgICAgKSBhcyBkaXNwYXRjaDoKKyAgICAgICAg
Y2xpZW50ID0gQXN5bmNDbGllbnQoZGlzcGF0Y2g9Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3Bh
dGNoKSkKKworICAgICAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgICAgICBzdGFydCA9IHRpbWUu
dGltZSgpCisgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25z
ZSA9IGF3YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAg
ICAgICBkYXRhPWRhdGEuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgaGVhZGVycz17ImNvbnRl
bnQtdHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50
LmdldCh1cmwpCisKKyAgICAgICAgZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAg
ICAgICAjIHByaW50IHNwZWVkCisgICAgICAgIG9jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50
KQorICAgICAgICBsb2dnZXIuaW5mbygKKyAgICAgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBp
biAlLjFmIHMgKCUuM2YgTWJwcykiCisgICAgICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9j
dGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICAgICAgKQorCisgICAgICAgICMgcHJp
bnQgcmVzcG9uc2UKKyAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVy
cy5pdGVtcygpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsg
dmFsdWUgKyAiXHJcbiIpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlxyXG4iKQorICAgICAg
ICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShyZXNwb25zZS5jb250ZW50KQorICAgICAgICBzeXMu
c3Rkb3V0LmJ1ZmZlci5mbHVzaCgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAg
ICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNs
aWVudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRo
ZSBVUkwgdG8gcXVlcnkgKG11c3QgYmUgSFRUUFMpIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNp
ZmllZCBkYXRhIGluIGEgUE9TVCByZXF1ZXN0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJ
QyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAg
ICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1
c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAg
ICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisgICAgICAgIHR5cGU9c3Ry
LAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBz
cGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAg
ICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBs
b2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUp
cyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9n
Z2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisg
ICAgIyBwcmVwYXJlIGNvbmZpZ3VyYXRpb24KKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZp
Z3VyYXRpb24oaXNfY2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4pCisgICAgaWYg
YXJncy5xdWljX2xvZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNM
b2dnZXIoKQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
c2VjcmV0c19sb2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFy
Z3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbihh
cmdzLnNlc3Npb25fdGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1
cmF0aW9uLnNlc3Npb25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBG
aWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGxvb3AgPSBhc3luY2lv
LmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBs
ZXRlKAorICAgICAgICAgICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFy
Z3MudXJsLCBkYXRhPWFyZ3MuZGF0YSkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAg
IGlmIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3
aXRoIG9wZW4oYXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAg
ICAganNvbi5kdW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJf
ZnAsIGluZGVudD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3Au
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmFkMjBi
NjZiNGI3NTEzZWNlYTZiYTMzZDM3NGE0OTVlNGU1MmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkKQEAgLTAsMCArMSw1MzIgQEAKKyMKKyMgISEh
IFdBUk5JTkcgISEhCisjCisjIFRoaXMgZXhhbXBsZSB1c2VzIHNvbWUgcHJpdmF0ZSBBUElzLgor
IworCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGRhdGFjbGFzc2VzIGltcG9y
dCBkYXRhY2xhc3MsIGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEZsYWcKK2Zyb20gdHlwaW5nIGlt
cG9ydCBPcHRpb25hbCwgY2FzdAorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCB1cmxsaWIzCitm
cm9tIGh0dHAzX2NsaWVudCBpbXBvcnQgSHR0cENsaWVudAorCitmcm9tIGFpb3F1aWMuYXN5bmNp
byBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FM
UE4KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rp
b24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1Jl
Y2VpdmVkLCBQdXNoUHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0
aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyCisKKworY2xhc3MgUmVzdWx0KEZsYWcpOgorICAgIFYgPSAweDAwMDAw
MQorICAgIEggPSAweDAwMDAwMgorICAgIEQgPSAweDAwMDAwNAorICAgIEMgPSAweDAwMDAwOAor
ICAgIFIgPSAweDAwMDAxMAorICAgIFogPSAweDAwMDAyMAorICAgIFMgPSAweDAwMDA0MAorICAg
IFEgPSAweDAwMDA4MAorCisgICAgTSA9IDB4MDAwMTAwCisgICAgQiA9IDB4MDAwMjAwCisgICAg
QSA9IDB4MDAwNDAwCisgICAgVSA9IDB4MDAwODAwCisgICAgUCA9IDB4MDAxMDAwCisgICAgRSA9
IDB4MDAyMDAwCisgICAgTCA9IDB4MDA0MDAwCisgICAgVCA9IDB4MDA4MDAwCisKKyAgICB0aHJl
ZSA9IDB4MDEwMDAwCisgICAgZCA9IDB4MDIwMDAwCisgICAgcCA9IDB4MDQwMDAwCisKKyAgICBk
ZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBzb3J0ZWQoCisgICAgICAgICAgICBt
YXAoCisgICAgICAgICAgICAgICAgbGFtYmRhIHg6IGdldGF0dHIoUmVzdWx0LCB4KSwKKyAgICAg
ICAgICAgICAgICBmaWx0ZXIobGFtYmRhIHg6IG5vdCB4LnN0YXJ0c3dpdGgoIl8iKSwgZGlyKFJl
c3VsdCkpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogeC52YWx1
ZSwKKyAgICAgICAgKQorICAgICAgICByZXN1bHRfc3RyID0gIiIKKyAgICAgICAgZm9yIGZsYWcg
aW4gZmxhZ3M6CisgICAgICAgICAgICBpZiBzZWxmICYgZmxhZzoKKyAgICAgICAgICAgICAgICBy
ZXN1bHRfc3RyICs9IGZsYWcubmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICByZXN1bHRfc3RyICs9ICItIgorICAgICAgICByZXR1cm4gcmVzdWx0X3N0cgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFNlcnZlcjoKKyAgICBuYW1lOiBzdHIKKyAgICBob3N0OiBzdHIKKyAgICBw
b3J0OiBpbnQgPSA0NDMzCisgICAgaHR0cDM6IGJvb2wgPSBUcnVlCisgICAgcmV0cnlfcG9ydDog
T3B0aW9uYWxbaW50XSA9IDQ0MzQKKyAgICBwYXRoOiBzdHIgPSAiLyIKKyAgICBwdXNoX3BhdGg6
IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgcmVzdWx0OiBSZXN1bHQgPSBmaWVsZChkZWZhdWx0
X2ZhY3Rvcnk9bGFtYmRhOiBSZXN1bHQoMCkpCisgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3RydWN0dXJlZF9sb2dnaW5nOiBib29sID0gRmFs
c2UKKyAgICB0aHJvdWdocHV0X2ZpbGVfc3VmZml4OiBzdHIgPSAiIgorICAgIHZlcmlmeV9tb2Rl
OiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK1NFUlZFUlMgPSBbCisgICAgU2VydmVyKCJha2Ft
YWlxdWljIiwgImlldGYuYWthcXVpYy5jb20iLCBwb3J0PTQ0MywgdmVyaWZ5X21vZGU9c3NsLkNF
UlRfTk9ORSksCisgICAgU2VydmVyKAorICAgICAgICAiYWlvcXVpYyIsICJxdWljLmFpb3J0Yy5v
cmciLCBwb3J0PTQ0MywgcHVzaF9wYXRoPSIvIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAg
ICApLAorICAgIFNlcnZlcigiYXRzIiwgInF1aWMub2dyZS5jb20iKSwKKyAgICBTZXJ2ZXIoImY1
IiwgImY1cXVpYy5jb20iLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZlcigiaGFza2VsbCIs
ICJtZXcub3JnIiwgcmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImdxdWljIiwgInF1aWMu
cm9ja3MiLCByZXRyeV9wb3J0PU5vbmUpLAorICAgIFNlcnZlcigibHNxdWljIiwgImh0dHAzLXRl
c3QubGl0ZXNwZWVkdGVjaC5jb20iLCBwdXNoX3BhdGg9Ii8yMDA/cHVzaD0vMTAwIiksCisgICAg
U2VydmVyKAorICAgICAgICAibXNxdWljIiwKKyAgICAgICAgInF1aWMud2VzdHVzLmNsb3VkYXBw
LmF6dXJlLmNvbSIsCisgICAgICAgIHBvcnQ9NDQzMywKKyAgICAgICAgc2Vzc2lvbl9yZXN1bXB0
aW9uX3BvcnQ9NDQzMywKKyAgICAgICAgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUsCisgICAgICAg
IHRocm91Z2hwdXRfZmlsZV9zdWZmaXg9Ii50eHQiLAorICAgICAgICB2ZXJpZnlfbW9kZT1zc2wu
Q0VSVF9OT05FLAorICAgICksCisgICAgU2VydmVyKAorICAgICAgICAibXZmc3QiLCAiZmIubXZm
c3QubmV0IiwgcG9ydD00NDMsIHB1c2hfcGF0aD0iL3B1c2giLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9
VHJ1ZQorICAgICksCisgICAgU2VydmVyKCJuZ3RjcDIiLCAibmdodHRwMi5vcmciLCBwdXNoX3Bh
dGg9Ii8/cHVzaD0vMTAwIiksCisgICAgU2VydmVyKCJuZ3hfcXVpYyIsICJjbG91ZGZsYXJlLXF1
aWMuY29tIiwgcG9ydD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInBhbmRvcmEi
LCAicGFuZG9yYS5jbS5pbi50dW0uZGUiLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAg
ICBTZXJ2ZXIoInBpY29xdWljIiwgInRlc3QucHJpdmF0ZW9jdG9wdXMuY29tIiwgc3RydWN0dXJl
ZF9sb2dnaW5nPVRydWUpLAorICAgIFNlcnZlcigicXVhbnQiLCAicXVhbnQuZWdnZXJ0Lm9yZyIs
IGh0dHAzPUZhbHNlKSwKKyAgICBTZXJ2ZXIoInF1aWMtZ28iLCAicXVpYy5zZWVtYW5uLmlvIiwg
cG9ydD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInF1aWNoZSIsICJxdWljLnRl
Y2giLCBwb3J0PTg0NDMsIHJldHJ5X3BvcnQ9ODQ0NCksCisgICAgU2VydmVyKCJxdWljbHkiLCAi
cXVpYy5leGFtcDFlLm5ldCIpLAorICAgIFNlcnZlcigicXVpbm4iLCAicmFsaXRoLmNvbSIpLAor
XQorCisKK2FzeW5jIGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb24oc2VydmVyOiBTZXJ2ZXIs
IGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICAjIGZvcmNlIHZlcnNpb24g
bmVnb3RpYXRpb24KKyAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQo
MCwgMHgxQTJBM0E0QSkKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVy
Lmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFz
IHByb3RvY29sOgorICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNo
ZWNrIGxvZworICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25m
aWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisg
ICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAg
IGNhdGVnb3J5ID09ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJw
YWNrZXRfcmVjZWl2ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0g
PT0gInZlcnNpb25fbmVnb3RpYXRpb24iCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAg
IHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlYKKworCithc3luYyBkZWYgdGVzdF9oYW5kc2hha2Vf
YW5kX2Nsb3NlKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
bik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVy
LnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6Cisg
ICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5ICisgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQworCisKK2FzeW5jIGRlZiB0ZXN0
X3N0YXRlbGVzc19yZXRyeShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZp
Z3VyYXRpb24pOgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3Qs
IHNlcnZlci5yZXRyeV9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFz
IHByb3RvY29sOgorICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNo
ZWNrIGxvZworICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25m
aWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisg
ICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAg
IGNhdGVnb3J5ID09ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJw
YWNrZXRfcmVjZWl2ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0g
PT0gInJldHJ5IgorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0
IHw9IFJlc3VsdC5TCisKKworYXN5bmMgZGVmIHRlc3RfcXVhbnR1bV9yZWFkaW5lc3Moc2VydmVy
OiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBjb25maWd1
cmF0aW9uLnF1YW50dW1fcmVhZGluZXNzX3Rlc3QgPSBUcnVlCisgICAgYXN5bmMgd2l0aCBjb25u
ZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29u
ZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBp
bmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5RCisKKworYXN5bmMgZGVmIHRl
c3RfaHR0cF8wKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
bik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBj
b25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgIGFzeW5jIHdpdGggY29u
bmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAg
ICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1I
dHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2FzdChI
dHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0Cisg
ICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRwczov
L3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQor
ICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIEhl
YWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ECisK
KworYXN5bmMgZGVmIHRlc3RfaHR0cF8zKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBR
dWljQ29uZmlndXJhdGlvbik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuCisKKyAgICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAg
IGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZl
ci5wb3J0LAorICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNy
ZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHBy
b3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0g
SFRUUCByZXF1ZXN0CisgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAg
ICAgICAgICJodHRwczovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQs
IHNlcnZlci5wYXRoKQorICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5j
ZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0
IHw9IFJlc3VsdC5ECisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC50aHJlZQor
CisgICAgICAgICMgcGVyZm9ybSBtb3JlIEhUVFAgcmVxdWVzdHMgdG8gdXNlIFFQQUNLIGR5bmFt
aWMgdGFibGVzCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgZXZlbnRz
ID0gYXdhaXQgcHJvdG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30i
LmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICAg
ICAgKQorICAgICAgICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJz
UmVjZWl2ZWQpOgorICAgICAgICAgICAgaHR0cCA9IGNhc3QoSDNDb25uZWN0aW9uLCBwcm90b2Nv
bC5faHR0cCkKKyAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAg
ICAgICAgICAgICAiUVBBQ0sgZGVjb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAg
ICAgICAgaHR0cC5fZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRw
Ll9kZWNvZGVyX2J5dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2Nv
bC5fcXVpYy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgIlFQQUNLIGVuY29kZXIgYnl0
ZXMgUlggJWQgVFggJWQiLAorICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVj
ZWl2ZWQsCisgICAgICAgICAgICAgICAgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50LAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJf
Ynl0ZXNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZGVjb2Rlcl9ieXRlc19z
ZW50CisgICAgICAgICAgICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQKKyAg
ICAgICAgICAgICAgICBhbmQgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50CisgICAgICAgICAgICAp
OgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LmQKKworICAgICAgICAj
IGNoZWNrIHB1c2ggc3VwcG9ydAorICAgICAgICBpZiBzZXJ2ZXIucHVzaF9wYXRoIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgcHJvdG9jb2wucHVzaGVzLmNsZWFyKCkKKyAgICAgICAgICAgIGF3
YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3Jt
YXQoc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucHVzaF9wYXRoKQorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjUpCisgICAgICAgICAgICBm
b3IgcHVzaF9pZCwgZXZlbnRzIGluIHByb3RvY29sLnB1c2hlcy5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgbGVuKGV2ZW50cykgPj0gMworICAgICAg
ICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIFB1c2hQcm9taXNlUmVjZWl2
ZWQpCisgICAgICAgICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1sxXSwgSGVhZGVy
c1JlY2VpdmVkKQorICAgICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMl0s
IERhdGFSZWNlaXZlZCkKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBw
cm90b2NvbC5fcXVpYy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAiUHVz
aCBwcm9taXNlICVkIGZvciAlcyByZWNlaXZlZCAoc3RhdHVzICVzKSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGljdChldmVudHNb
MF0uaGVhZGVycylbYiI6cGF0aCJdLmRlY29kZSgiYXNjaWkiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGludChkaWN0KGV2ZW50c1sxXS5oZWFkZXJzKVtiIjpzdGF0dXMiXSksCisgICAgICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5wCisKKworYXN5bmMgZGVmIHRlc3Rfc2Vzc2lvbl9yZXN1bXB0aW9uKHNlcnZlcjogU2Vy
dmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgcG9ydCA9IHNlcnZl
ci5zZXNzaW9uX3Jlc3VtcHRpb25fcG9ydCBvciBzZXJ2ZXIucG9ydAorICAgIHNhdmVkX3RpY2tl
dCA9IE5vbmUKKworICAgIGRlZiBzZXNzaW9uX3RpY2tldF9oYW5kbGVyKHRpY2tldCk6CisgICAg
ICAgIG5vbmxvY2FsIHNhdmVkX3RpY2tldAorICAgICAgICBzYXZlZF90aWNrZXQgPSB0aWNrZXQK
KworICAgICMgY29ubmVjdCBhIGZpcnN0IHRpbWUsIHJlY2VpdmUgYSB0aWNrZXQKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBwb3J0LAorICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2hhbmRsZXI9c2Vzc2lvbl90aWNrZXRfaGFuZGxlciwKKyAgICApIGFzIHByb3RvY29sOgorICAg
ICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHNvbWUgc2VydmVycyBkb24n
dCBzZW5kIHRoZSB0aWNrZXQgaW1tZWRpYXRlbHkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVl
cCgxKQorCisgICAgIyBjb25uZWN0IGEgc2Vjb25kIHRpbWUsIHdpdGggdGhlIHRpY2tldAorICAg
IGlmIHNhdmVkX3RpY2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXNz
aW9uX3RpY2tldCA9IHNhdmVkX3RpY2tldAorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2Vy
dmVyLmhvc3QsIHBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikgYXMgcHJvdG9jb2w6
CisgICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAgICAgIyBjaGVj
ayBzZXNzaW9uIHdhcyByZXN1bWVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMu
c2Vzc2lvbl9yZXN1bWVkOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0
LlIKKworICAgICAgICAgICAgIyBjaGVjayBlYXJseSBkYXRhIHdhcyBhY2NlcHRlZAorICAgICAg
ICAgICAgaWYgcHJvdG9jb2wuX3F1aWMudGxzLmVhcmx5X2RhdGFfYWNjZXB0ZWQ6CisgICAgICAg
ICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuWgorCisKK2FzeW5jIGRlZiB0ZXN0X2tl
eV91cGRhdGUoc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9u
KToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIu
cG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAg
ICAgICAgIyBjYXVzZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygp
CisKKyAgICAgICAgIyByZXF1ZXN0IGtleSB1cGRhdGUKKyAgICAgICAgcHJvdG9jb2wucmVxdWVz
dF9rZXlfdXBkYXRlKCkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBh
d2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5V
CisKKworYXN5bmMgZGVmIHRlc3RfbWlncmF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0
aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAg
ICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAg
IGF3YWl0IHByb3RvY29sLnBpbmcoKQorCisgICAgICAgICMgY2hhbmdlIGNvbm5lY3Rpb24gSUQg
YW5kIHJlcGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLmNoYW5nZV9jb25uZWN0aW9u
X2lkKCkKKyAgICAgICAgcHJvdG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0
IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2Fk
ZHI9KCI6OiIsIDApKQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3
YWl0IHByb3RvY29sLnBpbmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGRjaWRz
ID0gc2V0KCkKKyAgICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29u
ZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgor
ICAgICAgICBdWzBdWyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAg
ICBjYXRlZ29yeSA9PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAi
cGFja2V0X3JlY2VpdmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJd
ID09ICIxUlRUIgorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBkY2lkcy5hZGQoZGF0
YVsiaGVhZGVyIl1bImRjaWQiXSkKKyAgICAgICAgaWYgbGVuKGRjaWRzKSA9PSAyOgorICAgICAg
ICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuTQorCisKK2FzeW5jIGRlZiB0ZXN0X3JlYmlu
ZGluZyhzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgor
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0
LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAg
ICAjIGNhdXNlIHNvbWUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKwor
ICAgICAgICAjIHJlcGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQu
Y2xvc2UoKQorICAgICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1i
ZGE6IHByb3RvY29sLCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKKworICAgICAgICAjIGNhdXNlIG1v
cmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2
ZXIucmVzdWx0IHw9IFJlc3VsdC5CCisKKworYXN5bmMgZGVmIHRlc3Rfc3Bpbl9iaXQoc2VydmVy
OiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3
aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJh
dGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoNSk6CisgICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAj
IGNoZWNrIGxvZworICAgICAgICBzcGluX2JpdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAs
IGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2Rp
Y3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAg
ICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gImNvbm5lY3Rpdml0eSIgYW5kIGV2ZW50ID09ICJzcGlu
X2JpdF91cGRhdGVkIjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdHMuYWRkKGRhdGFbInN0YXRl
Il0pCisgICAgICAgIGlmIGxlbihzcGluX2JpdHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIu
cmVzdWx0IHw9IFJlc3VsdC5QCisKKworYXN5bmMgZGVmIHRlc3RfdGhyb3VnaHB1dChzZXJ2ZXI6
IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGZhaWx1cmVz
ID0gMAorCisgICAgZm9yIHNpemUgaW4gWzUwMDAwMDAsIDEwMDAwMDAwXToKKyAgICAgICAgcHJp
bnQoIlRlc3RpbmcgJWQgYnl0ZXMgZG93bmxvYWQiICUgc2l6ZSkKKyAgICAgICAgcGF0aCA9ICIv
JWQlcyIgJSAoc2l6ZSwgc2VydmVyLnRocm91Z2hwdXRfZmlsZV9zdWZmaXgpCisKKyAgICAgICAg
IyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFRDUAorICAgICAgICBzdGFydCA9IHRpbWUudGlt
ZSgpCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovLyIgKyBzZXJ2ZXIu
aG9zdCArIHBhdGgsIHZlcmlmeT1GYWxzZSkKKyAgICAgICAgdGNwX29jdGV0cyA9IGxlbihyZXNw
b25zZS5jb250ZW50KQorICAgICAgICB0Y3BfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQK
KyAgICAgICAgYXNzZXJ0IHRjcF9vY3RldHMgPT0gc2l6ZSwgIkhUVFAvVENQIHJlc3BvbnNlIHNp
emUgbWlzbWF0Y2giCisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFFVSUMK
KyAgICAgICAgaWYgc2VydmVyLmh0dHAzOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBu
X3Byb3RvY29scyA9IEgzX0FMUE4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24uYWxwbl9wcm90b2NvbHMgPSBIMF9BTFBOCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1l
KCkKKyAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgc2VydmVyLmhvc3Qs
CisgICAgICAgICAgICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29u
ZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAg
ICAgICApIGFzIHByb3RvY29sOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGll
bnQsIHByb3RvY29sKQorCisgICAgICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IHByb3RvY29s
LmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBwYXRoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcXVpY19l
bGFwc2VkID0gdGltZS50aW1lKCkgLSBzdGFydAorICAgICAgICAgICAgcXVpY19vY3RldHMgPSAw
CisgICAgICAgICAgICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAg
ICAgICAgICAgIHF1aWNfb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgICAgIGFz
c2VydCBxdWljX29jdGV0cyA9PSBzaXplLCAiSFRUUC9RVUlDIHJlc3BvbnNlIHNpemUgbWlzbWF0
Y2giCisKKyAgICAgICAgcHJpbnQoIiAtIEhUVFAvVENQICBjb21wbGV0ZWQgaW4gJS4zZiBzIiAl
IHRjcF9lbGFwc2VkKQorICAgICAgICBwcmludCgiIC0gSFRUUC9RVUlDIGNvbXBsZXRlZCBpbiAl
LjNmIHMiICUgcXVpY19lbGFwc2VkKQorCisgICAgICAgIGlmIHF1aWNfZWxhcHNlZCA+IDEuMSAq
IHRjcF9lbGFwc2VkOgorICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQorICAgICAgICAgICAgcHJp
bnQoIiA9PiBGQUlMIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCIgPT4gUEFT
UyIpCisKKyAgICBpZiBmYWlsdXJlcyA9PSAwOgorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5UCisKKworZGVmIHByaW50X3Jlc3VsdChzZXJ2ZXI6IFNlcnZlcikgLT4gTm9uZToKKyAg
ICByZXN1bHQgPSBzdHIoc2VydmVyLnJlc3VsdCkucmVwbGFjZSgidGhyZWUiLCAiMyIpCisgICAg
cmVzdWx0ID0gcmVzdWx0WzA6OF0gKyAiICIgKyByZXN1bHRbODoxNl0gKyAiICIgKyByZXN1bHRb
MTY6XQorICAgIHByaW50KCIlcyVzJXMiICUgKHNlcnZlci5uYW1lLCAiICIgKiAoMjAgLSBsZW4o
c2VydmVyLm5hbWUpKSwgcmVzdWx0KSkKKworCithc3luYyBkZWYgcnVuKHNlcnZlcnMsIHRlc3Rz
LCBxdWljX2xvZz1GYWxzZSwgc2VjcmV0c19sb2dfZmlsZT1Ob25lKSAtPiBOb25lOgorICAgIGZv
ciBzZXJ2ZXIgaW4gc2VydmVyczoKKyAgICAgICAgaWYgc2VydmVyLnN0cnVjdHVyZWRfbG9nZ2lu
ZzoKKyAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkwKKyAgICAgICAgZm9yIHRl
c3RfbmFtZSwgdGVzdF9mdW5jIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQoIlxuPT09ICVz
ICVzID09PVxuIiAlIChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3Rv
Y29scz1IM19BTFBOICsgSDBfQUxQTiwKKyAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksCisgICAgICAgICAgICAg
ICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAgICAgICAgICAgIHZl
cmlmeV9tb2RlPXNlcnZlci52ZXJpZnlfbW9kZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGlmIHRlc3RfbmFtZSA9PSAidGVzdF90aHJvdWdocHV0IjoKKyAgICAgICAgICAgICAgICB0aW1l
b3V0ID0gNjAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDEw
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0X2Zv
cigKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9mdW5jKHNlcnZlciwgY29uZmlndXJhdGlvbiks
IHRpbWVvdXQ9dGltZW91dAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgICAgIHByaW50KGV4YykKKworICAgICAgICAg
ICAgaWYgcXVpY19sb2c6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIlcy0lcy5xbG9nIiAl
IChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAg
ICAgICAgICAgIGpzb24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwg
bG9nZ2VyX2ZwLCBpbmRlbnQ9NCkKKworICAgICAgICBwcmludCgiIikKKyAgICAgICAgcHJpbnRf
cmVzdWx0KHNlcnZlcikKKworICAgICMgcHJpbnQgc3VtbWFyeQorICAgIGlmIGxlbihzZXJ2ZXJz
KSA+IDE6CisgICAgICAgIHByaW50KCJTVU1NQVJZIikKKyAgICAgICAgZm9yIHNlcnZlciBpbiBz
ZXJ2ZXJzOgorICAgICAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZlcikKKworCitpZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRl
c2NyaXB0aW9uPSJRVUlDIGludGVyb3AgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLXEiLAorICAgICAgICAiLS1xdWljLWxvZyIsCisgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4g
UUxPRyBmb3JtYXQiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LS1zZXJ2ZXIiLCB0eXBlPXN0ciwgaGVscD0ib25seSBydW4gYWdhaW5zdCB0aGUgc3BlY2lmaWVk
IHNlcnZlci4iCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGVzdCIsIHR5cGU9
c3RyLCBoZWxwPSJvbmx5IHJ1biB0aGUgc3BlY2lmZWQgdGVzdC4iKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAg
ICAgdHlwZT1zdHIsCisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVz
ZSB3aXRoIFdpcmVzaGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAg
ICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFz
ZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3Rp
bWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9
bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQor
CisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAg
ICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBl
bHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAgIyBkZXRlcm1pbmUg
d2hhdCB0byBydW4KKyAgICBzZXJ2ZXJzID0gU0VSVkVSUworICAgIHRlc3RzID0gbGlzdChmaWx0
ZXIobGFtYmRhIHg6IHhbMF0uc3RhcnRzd2l0aCgidGVzdF8iKSwgZ2xvYmFscygpLml0ZW1zKCkp
KQorICAgIGlmIGFyZ3Muc2VydmVyOgorICAgICAgICBzZXJ2ZXJzID0gbGlzdChmaWx0ZXIobGFt
YmRhIHg6IHgubmFtZSA9PSBhcmdzLnNlcnZlciwgc2VydmVycykpCisgICAgaWYgYXJncy50ZXN0
OgorICAgICAgICB0ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdID09IGFyZ3MudGVz
dCwgdGVzdHMpKQorCisgICAgIyBkaXNhYmxlIHJlcXVlc3RzIFNTTCB3YXJuaW5ncworICAgIHVy
bGxpYjMuZGlzYWJsZV93YXJuaW5ncyh1cmxsaWIzLmV4Y2VwdGlvbnMuSW5zZWN1cmVSZXF1ZXN0
V2FybmluZykKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb29w
LnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2VydmVycz1z
ZXJ2ZXJzLAorICAgICAgICAgICAgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBxdWljX2xvZz1h
cmdzLnF1aWNfbG9nLAorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19m
aWxlLAorICAgICAgICApCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L3NpZHVja19jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYjZhNWI3NmUwZTcwMTgyODI2N2MzMzNmMzM4NDc2ZDViMGU3MjJhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkK
QEAgLTAsMCArMSwxMDAgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9y
dCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHNzbAorZnJvbSB0eXBpbmcgaW1wb3J0IE9w
dGlvbmFsLCBjYXN0CisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVj
dAorZnJvbSBhaW9xdWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wKK2Zyb20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1
cmF0aW9uCitmcm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNl
aXZlZCwgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dn
ZXIKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgU2lk
dWNrQ2xpZW50KFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3
YXJncykKKyAgICAgICAgc2VsZi5fYWNrX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVb
Tm9uZV1dID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHF1YWNrKHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgIGFzc2VydCBzZWxmLl9hY2tfd2FpdGVyIGlzIE5vbmUsICJPbmx5IG9uZSBxdWFjayBhdCBh
IHRpbWUuIgorICAgICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjayIp
CisKKyAgICAgICAgd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAg
c2VsZi5fYWNrX3dhaXRlciA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAg
ICAgICByZXR1cm4gYXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisgICAgZGVmIHF1aWNf
ZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAg
aWYgc2VsZi5fYWNrX3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UoZXZlbnQsIERhdGFncmFtRnJhbWVSZWNlaXZlZCkgYW5kIGV2ZW50LmRhdGEgPT0gYiJxdWFj
ay1hY2siOgorICAgICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Fja193YWl0ZXIKKyAgICAg
ICAgICAgICAgICBzZWxmLl9hY2tfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHdhaXRl
ci5zZXRfcmVzdWx0KE5vbmUpCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWlj
Q29uZmlndXJhdGlvbiwgaG9zdDogc3RyLCBwb3J0OiBpbnQpIC0+IE5vbmU6CisgICAgYXN5bmMg
d2l0aCBjb25uZWN0KAorICAgICAgICBob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3Vy
YXRpb24sIGNyZWF0ZV9wcm90b2NvbD1TaWR1Y2tDbGllbnQKKyAgICApIGFzIGNsaWVudDoKKyAg
ICAgICAgY2xpZW50ID0gY2FzdChTaWR1Y2tDbGllbnQsIGNsaWVudCkKKyAgICAgICAgbG9nZ2Vy
LmluZm8oInNlbmRpbmcgcXVhY2siKQorICAgICAgICBhd2FpdCBjbGllbnQucXVhY2soKQorICAg
ICAgICBsb2dnZXIuaW5mbygicmVjZWl2ZWQgcXVhY2stYWNrIikKKworCitpZiBfX25hbWVfXyA9
PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2Ny
aXB0aW9uPSJTaURVQ0sgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiaG9zdCIsIHR5cGU9c3RyLCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBob3N0IG5hbWUgb3Ig
SVAgYWRkcmVzcyIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicG9ydCIsIHR5cGU9
aW50LCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAg
ICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2Vy
dmVyIGNlcnRpZmljYXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRv
IGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0
ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2ly
ZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12Iiwg
Ii0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcg
dmVyYm9zaXR5IgorICAgICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAg
ICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2
ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRF
QlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25m
aWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsi
c2lkdWNrIl0sIGlzX2NsaWVudD1UcnVlLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02NTUzNgor
ICAgICkKKyAgICBpZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlm
eV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNv
bmZpZ3VyYXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3Jl
dHNfbG9nOgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFy
Z3Muc2VjcmV0c19sb2csICJhIikKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29w
KCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAg
ICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgaG9zdD1hcmdzLmhvc3QsIHBvcnQ9
YXJncy5wb3J0KQorICAgICAgICApCisgICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJh
dGlvbi5xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3Blbihhcmdz
LnF1aWNfbG9nLCAidyIpIGFzIGxvZ2dlcl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAo
Y29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDA4NTQ4N2U4NDA4MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbApAQCAtMCwwICsx
LDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCIvPgorICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+CisgICAg
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+CisgICAg
ICAgIDxwPgorICAgICAgICAgICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCisgICAgICAgICAg
ICBhIFFVSUMgYW5kIEhUVFAvMyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KKyAg
ICAgICAgPC9wPgoreyUgaWYgcmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9
CisgICAgICAgIDxwPgorICAgICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRo
aXMgcGFnZSB1c2luZyBIVFRQLzMhCisgICAgICAgIDwvcD4KK3slIGVuZGlmICV9CisgICAgICAg
IDxoMj5BdmFpbGFibGUgZW5kcG9pbnRzPC9oMj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAg
PGxpPjxzdHJvbmc+R0VUIC88L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgorICAg
ICAgICAgICAgPGxpPjxzdHJvbmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5
dGVzIG9mIHBsYWluIHRleHQ8L2xpPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNo
bzwvc3Ryb25nPiByZXR1cm5zIHRoZSByZXF1ZXN0IGRhdGE8L2xpPgorICAgICAgICAgICAgPGxp
PgorICAgICAgICAgICAgICAgIDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdl
YlNvY2tldCBlY2hvIHNlcnZpY2UuCisgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8
ZW0+OnByb3RvY29sPC9lbT4gcHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4K
KyAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBo
cmVmPSIvaHR0cGJpbi8iPmh0dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+CisgICAgICAgIDwvdWw+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L3RlbXBsYXRlcy9sb2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xv
Z3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MDk5ZjY3ZGNhMjJjNTdmYmM5MWQ4ZDE5YTBkNmE4OGYzYzFi
OWY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9s
b2dzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFp
b3F1aWMgLSBsb2dzPC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIvc3R5bGUuY3NzIi8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+UUxP
RyBmaWxlczwvaDE+CisgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9ncyI+CisgICAgICAgIDx0cj4K
KyAgICAgICAgICAgIDx0aD5uYW1lPC90aD4KKyAgICAgICAgICAgIDx0aD5kYXRlIChVVEMpPC90
aD4KKyAgICAgICAgICAgIDx0aD5zaXplPC90aD4KKyAgICAgICAgPC90cj4KK3slIGZvciBsb2cg
aW4gbG9ncyAlfQorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgor
ICAgICAgICAgICAgICAgIDxhIGhyZWY9Int7IGxvZy5maWxlX3VybCB9fSI+e3sgbG9nLm5hbWUg
fX08L2E+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLnF2aXNfdXJsIH19Ij5bcXZp
c108L2E+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJkYXRlIj57
eyBsb2cuZGF0ZSB9fTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPnt7IGxvZy5z
aXplIH19PC90ZD4KKyAgICAgICAgPC90cj4KK3slIGVuZGZvciAlfQorICAgICAgICA8L3RhYmxl
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy90ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxh
dGVzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YmI5ZDM2NGQ3Y2RjMDJmMjY0M2UzZDdi
ZGQ3NDgyMWJmNDQ2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
dGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjhmMjIwNGFkNDFlNDhmZjFkZjRiNWI0NzMxNjFkZGU2ZTgyN2ZjYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpAQCAt
MCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1Ro
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHR0cDNfc2VydmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1w
bGVzL3NpZHVja19jbGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVu
dHMvZG9jLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YzMzYTM5Nzg3NGM2NTNjOTFhMjBhMGI5MjU2NzNkNWM0OWM3Yjg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CkBAIC0wLDAgKzEsMyBAQAor
Y3J5cHRvZ3JhcGh5CitzcGhpbnhfYXV0b2RvY190eXBlaGludHMKK3NwaGlueGNvbnRyaWItYXN5
bmNpbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWVlMjJlNzRiZDIxYTk0NjdjZjE2NmQ5NDA0YzYyNjlhMDlkNWEwYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwx
NyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Nj
cmlwdHMvYnVpbGQtb3BlbnNzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGRlZDcyYzE3MjRiYjAwNDMyMzI4YzVl
MjI5YmE3Mzc2MmM1ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMv
YnVpbGQtb3BlbnNzbApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2Rl
c3RkaXI9JDEKK2NhY2hlZGlyPSQxLiRQWVRIT05fQVJDSAorCitmb3IgZCBpbiBvcGVuc3NsICRk
ZXN0ZGlyOyBkbworICAgIGlmIFsgLWUgJGQgXTsgdGhlbgorICAgICAgICBybSAtcmYgJGQKKyAg
ICBmaQorZG9uZQorCitpZiBbICEgLWUgJGNhY2hlZGlyIF07IHRoZW4KKyAgICAjIGJ1aWxkIG9w
ZW5zc2wKKyAgICBta2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5vcGVuc3Ns
Lm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjEuMWYudGFyLmd6IHwgdGFyIHh6IC1DIG9wZW5zc2wgLS1z
dHJpcC1jb21wb25lbnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICAuL2NvbmZpZyBuby1jb21w
IG5vLXNoYXJlZCBuby10ZXN0cworICAgIG1ha2UKKworICAgIG1rZGlyICRjYWNoZWRpcgorICAg
IG1rZGlyICRjYWNoZWRpci9saWIKKyAgICBjcCAtUiBpbmNsdWRlICRjYWNoZWRpcgorICAgIGNw
IGxpYmNyeXB0by5hIGxpYnNzbC5hICRjYWNoZWRpci9saWIKK2ZpCisKK2NwIC1SICRjYWNoZWRp
ciAkZGVzdGRpcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNz
bC5iYXQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MTAwNzlkZGY4MzIwZjc1NGJkOTQyMjE1N2U2NTQzOTQ2ZDYwMGU1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKQEAgLTAsMCArMSwz
OSBAQAorc2V0IGRlc3RkaXI9JTEKK3NldCBjYWNoZWRpcj0lMS4lUFlUSE9OX0FSQ0glCisKK2Zv
ciAlJWQgaW4gKG9wZW5zc2wgJWRlc3RkaXIlKSBkbyAoCisgICAgaWYgZXhpc3QgJSVkICgKKyAg
ICAgICAgcm1kaXIgL3MgL3EgJSVkCisgICAgKQorKQorCitpZiAlUFlUSE9OX0FSQ0glID09IDY0
ICgKKyAgIHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU42NEEKKyAgIHNldCBWQ19BUkNIPXg2NAor
KSBlbHNlICgKKyAgIHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU4zMgorICAgc2V0IFZDX0FSQ0g9
eDg2CispCisKK2NhbGwgIkM6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cMjAxOVxFbnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiAl
VkNfQVJDSCUKK1NFVCBQQVRIPSVQQVRIJTtDOlxQcm9ncmFtIEZpbGVzXE5BU00KKworaWYgbm90
IGV4aXN0ICVjYWNoZWRpciUgKAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0dHBz
Oi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogLW8gb3BlbnNz
bC50YXIuZ3oKKyAgICB0YXIgeHpmIG9wZW5zc2wudGFyLmd6IC1DIG9wZW5zc2wgLS1zdHJpcC1j
b21wb25lbnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICBwZXJsIENvbmZpZ3VyZSBuby1jb21w
IG5vLXNoYXJlZCBuby10ZXN0cyAlT1BFTlNTTF9DT05GSUclCisgICAgbm1ha2UKKworICAgIG1r
ZGlyICVjYWNoZWRpciUKKyAgICBta2RpciAlY2FjaGVkaXIlXGluY2x1ZGUKKyAgICBta2RpciAl
Y2FjaGVkaXIlXGxpYgorICAgIHhjb3B5IGluY2x1ZGUgJWNhY2hlZGlyJVxpbmNsdWRlXCAvRQor
ICAgIGNvcHkgbGliY3J5cHRvLmxpYiAlY2FjaGVkaXIlXGxpYlwKKyAgICBjb3B5IGxpYnNzbC5s
aWIgJWNhY2hlZGlyJVxsaWJcCispCisKK21rZGlyICVkZXN0ZGlyJQoreGNvcHkgJWNhY2hlZGly
JSAlZGVzdGRpciUgL0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTQ3ZjkzOWQ0MjhmNzEwNjk0MzQ3NTMzN2FiZDgyODBkZjBmMTk0ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAK
K1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
CitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9m
IGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Nl
dHVwLmNmZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMDI1YWQwZjcz
M2IzOGJiOTRmOGJiOGViMDQ3ODVkYTNiNGY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zZXR1cC5jZmcKQEAgLTAsMCArMSwyMSBAQAorW2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9
IGFpb3F1aWMKKworW2ZsYWtlOF0KK2lnbm9yZT1FMjAzLFc1MDMKK21heC1saW5lLWxlbmd0aD0x
NTAKKworW2lzb3J0XQorZGVmYXVsdF9zZWN0aW9uID0gVEhJUkRQQVJUWQoraW5jbHVkZV90cmFp
bGluZ19jb21tYSA9IFRydWUKK2tub3duX2ZpcnN0X3BhcnR5ID0gYWlvcXVpYworbGluZV9sZW5n
dGggPSA4OAorbXVsdGlfbGluZV9vdXRwdXQgPSAzCisKK1tteXB5XQorZGlzYWxsb3dfdW50eXBl
ZF9jYWxscyA9IFRydWUKK2Rpc2FsbG93X3VudHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK2lnbm9y
ZV9taXNzaW5nX2ltcG9ydHMgPSBUcnVlCitzdHJpY3Rfb3B0aW9uYWwgPSBGYWxzZQord2Fybl9y
ZWR1bmRhbnRfY2FzdHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gVHJ1ZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE1YzVlYTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKQEAgLTAsMCArMSw2OSBAQAoraW1wb3J0
IG9zLnBhdGgKK2ltcG9ydCBzeXMKKworaW1wb3J0IHNldHVwdG9vbHMKKworcm9vdF9kaXIgPSBv
cy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworYWJvdXQgPSB7fQor
YWJvdXRfZmlsZSA9IG9zLnBhdGguam9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFi
b3V0LnB5IikKK3dpdGggb3BlbihhYm91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoK
KyAgICBleGVjKGZwLnJlYWQoKSwgYWJvdXQpCisKK3JlYWRtZV9maWxlID0gb3MucGF0aC5qb2lu
KHJvb3RfZGlyLCAiUkVBRE1FLnJzdCIpCit3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5n
PSJ1dGYtOCIpIGFzIGY6CisgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCisKK2lmIHN5
cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCisgICAg
bGlicmFyaWVzID0gWyJsaWJjcnlwdG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIs
ICJ1c2VyMzIiLCAid3MyXzMyIl0KK2Vsc2U6CisgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyIt
c3RkPWM5OSJdCisgICAgbGlicmFyaWVzID0gWyJjcnlwdG8iXQorCitzZXR1cHRvb2xzLnNldHVw
KAorICAgIG5hbWU9YWJvdXRbIl9fdGl0bGVfXyJdLAorICAgIHZlcnNpb249YWJvdXRbIl9fdmVy
c2lvbl9fIl0sCisgICAgZGVzY3JpcHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCisgICAgbG9u
Z19kZXNjcmlwdGlvbj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD1hYm91dFsiX191cmlfXyJd
LAorICAgIGF1dGhvcj1hYm91dFsiX19hdXRob3JfXyJdLAorICAgIGF1dGhvcl9lbWFpbD1hYm91
dFsiX19lbWFpbF9fIl0sCisgICAgbGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKKyAgICBp
bmNsdWRlX3BhY2thZ2VfZGF0YT1UcnVlLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRl
dmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YSIsCisgICAgICAgICJFbnZpcm9ubWVudCA6OiBX
ZWIgRW52aXJvbm1lbnQiLAorICAgICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVy
cyIsCisgICAgICAgICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisg
ICAgICAgICJPcGVyYXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50IiwKKyAgICAgICAgIlBy
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5n
dWFnZSA6OiBQeXRob24gOjogMyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMy42IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6
OiAzLjciLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIs
CisgICAgICAgICJUb3BpYyA6OiBJbnRlcm5ldCA6OiBXV1cvSFRUUCIsCisgICAgXSwKKyAgICBl
eHRfbW9kdWxlcz1bCisgICAgICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAgICAg
ImFpb3F1aWMuX2J1ZmZlciIsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFf
Y29tcGlsZV9hcmdzLAorICAgICAgICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIu
YyJdLAorICAgICAgICApLAorICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAg
ICAgICJhaW9xdWljLl9jcnlwdG8iLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4
dHJhX2NvbXBpbGVfYXJncywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAg
ICAgICAgICBzb3VyY2VzPVsic3JjL2Fpb3F1aWMvX2NyeXB0by5jIl0sCisgICAgICAgICksCisg
ICAgXSwKKyAgICBwYWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKKyAgICBwYWNrYWdlX2RhdGE9eyJh
aW9xdWljIjogWyJweS50eXBlZCIsICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKKyAg
ICBwYWNrYWdlcz1bImFpb3F1aWMiLCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAi
YWlvcXVpYy5oMyIsICJhaW9xdWljLnF1aWMiXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAg
ICAgICAgImNlcnRpZmkiLAorICAgICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCisgICAgICAg
ICdkYXRhY2xhc3NlczsgcHl0aG9uX3ZlcnNpb24gPCAiMy43IicsCisgICAgICAgICJweWxzcXBh
Y2sgPj0gMC4zLjMsIDwgMC40LjAiLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRhY2ViZWVmODNlYTQxODliZmFlNGNhOWYwODBkMjNkODc3
YThiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRf
Xy5weQpAQCAtMCwwICsxLDMgQEAKKyMgZmxha2U4OiBub3FhCisKK2Zyb20gLmFib3V0IGltcG9y
dCBfX3ZlcnNpb25fXwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZm
ZXIuYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVm
YzRkYjgxNzU5MGJlOGQ3MzZiMzI2NDZkNGNmZjQxYzlmNjQ2OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKQEAgLTAsMCArMSw0NDAgQEAKKyNk
ZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2J1ZmZlciIKKworc3Rh
dGljIFB5T2JqZWN0ICpCdWZmZXJSZWFkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlcldy
aXRlRXJyb3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWlu
dDhfdCAqYmFzZTsKKyAgICB1aW50OF90ICplbmQ7CisgICAgdWludDhfdCAqcG9zOworfSBCdWZm
ZXJPYmplY3Q7CisKKyNkZWZpbmUgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKSBcCisgICAg
aWYgKGxlbiA8IDAgfHwgc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOyBc
CisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1dSSVRFX0JP
VU5EUyhzZWxmLCBsZW4pIFwKKyAgICBpZiAoc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7
IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEJ1ZmZlcldyaXRlRXJyb3IsICJXcml0ZSBvdXQg
b2YgYm91bmRzIik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKK3N0YXRpYyBp
bnQKK0J1ZmZlcl9pbml0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2Jq
ZWN0ICprd2FyZ3MpCit7CisgICAgY29uc3QgY2hhciAqa3dsaXN0W10gPSB7ImNhcGFjaXR5Iiwg
ImRhdGEiLCBOVUxMfTsKKyAgICBpbnQgY2FwYWNpdHkgPSAwOworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmRhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4gPSAwOworCisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGl5IyIsIChj
aGFyKiopa3dsaXN0LCAmY2FwYWNpdHksICZkYXRhLCAmZGF0YV9sZW4pKQorICAgICAgICByZXR1
cm4gLTE7CisKKyAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmJhc2UgPSBt
YWxsb2MoZGF0YV9sZW4pOworICAgICAgICBzZWxmLT5lbmQgPSBzZWxmLT5iYXNlICsgZGF0YV9s
ZW47CisgICAgICAgIG1lbWNweShzZWxmLT5iYXNlLCBkYXRhLCBkYXRhX2xlbik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhjYXBhY2l0eSk7CisgICAgICAgIHNl
bGYtPmVuZCA9IHNlbGYtPmJhc2UgKyBjYXBhY2l0eTsKKyAgICB9CisgICAgc2VsZi0+cG9zID0g
c2VsZi0+YmFzZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0J1ZmZlcl9kZWFs
bG9jKEJ1ZmZlck9iamVjdCAqc2VsZikKK3sKKyAgICBmcmVlKHNlbGYtPmJhc2UpOworfQorCitz
dGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX2RhdGFfc2xpY2UoQnVmZmVyT2JqZWN0ICpzZWxmLCBQ
eU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc3RhcnQsIHN0b3A7CisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlKGFyZ3MsICJpaSIsICZzdGFydCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIGlmIChzdGFydCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0YXJ0ID4gc2VsZi0+ZW5k
IHx8CisgICAgICAgIHN0b3AgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdG9wID4gc2VsZi0+ZW5kIHx8
CisgICAgICAgIHN0b3AgPCBzdGFydCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVy
UmVhZEVycm9yLCAiUmVhZCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFy
Kikoc2VsZi0+YmFzZSArIHN0YXJ0KSwgKHN0b3AgLSBzdGFydCkpOworfQorCitzdGF0aWMgUHlP
YmplY3QgKgorQnVmZmVyX2VvZihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQor
eworICAgIGlmIChzZWxmLT5wb3MgPT0gc2VsZi0+ZW5kKQorICAgICAgICBQeV9SRVRVUk5fVFJV
RTsKKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJf
cHVsbF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlu
dCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmxlbikpCisgICAg
ICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKTsKKwor
ICAgIFB5T2JqZWN0ICpvID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciop
c2VsZi0+cG9zLCBsZW4pOworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgcmV0dXJuIG87Cit9
CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50OChCdWZmZXJPYmplY3QgKnNl
bGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDEpCisK
KyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoCisgICAgICAgICh1aW50OF90KSgq
KHNlbGYtPnBvcysrKSkKKyAgICApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1
bGxfdWludDE2KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hF
Q0tfUkVBRF9CT1VORFMoc2VsZiwgMikKKworICAgIHVpbnQxNl90IHZhbHVlID0gKHVpbnQxNl90
KSgqKHNlbGYtPnBvcykpIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgq
KHNlbGYtPnBvcyArIDEpKTsKKyAgICBzZWxmLT5wb3MgKz0gMjsKKyAgICByZXR1cm4gUHlMb25n
X0Zyb21VbnNpZ25lZExvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVy
X3B1bGxfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAg
Q0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgNCkKKworICAgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQz
Ml90KSgqKHNlbGYtPnBvcykpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJf
dCkoKihzZWxmLT5wb3MgKyAxKSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQz
Ml90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
MzJfdCkoKihzZWxmLT5wb3MgKyAzKSk7CisgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgcmV0dXJu
IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoK
K0J1ZmZlcl9wdWxsX3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQor
eworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDgpCisKKyAgICB1aW50NjRfdCB2YWx1ZSA9
ICh1aW50NjRfdCkoKihzZWxmLT5wb3MpKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgICAgICAo
dWludDY0X3QpKCooc2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAgICAg
ICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAgICAgICAgICAgICAg
ICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAg
ICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAg
ICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAg
ICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDYpKSA8PCA4IHwKKyAgICAgICAgICAg
ICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7CisgICAgc2VsZi0+cG9zICs9
IDg7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisK
K3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50X3ZhcihCdWZmZXJPYmplY3QgKnNl
bGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAgIENIRUNLX1JF
QURfQk9VTkRTKHNlbGYsIDEpCisgICAgc3dpdGNoICgqKHNlbGYtPnBvcykgPj4gNikgeworICAg
IGNhc2UgMDoKKyAgICAgICAgdmFsdWUgPSAqKHNlbGYtPnBvcysrKSAmIDB4M0Y7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMikK
KyAgICAgICAgdmFsdWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDggfAor
ICAgICAgICAgICAgICAgICh1aW50MTZfdCkoKihzZWxmLT5wb3MgKyAxKSk7CisgICAgICAgIHNl
bGYtPnBvcyArPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIENIRUNL
X1JFQURfQk9VTkRTKHNlbGYsIDQpCisgICAgICAgIHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYt
PnBvcykgJiAweDNGKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDEpKSA8PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBv
cyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsg
MykpOworICAgICAgICBzZWxmLT5wb3MgKz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKyAgICAgICAgdmFsdWUgPSAo
dWludDY0X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDU2IHwKKyAgICAgICAgICAgICAgICAo
dWludDY0X3QpKCooc2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAodWlu
dDY0X3QpKCooc2VsZi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgMykpIDw8IDMyIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3Qp
KCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgNSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2Vs
Zi0+cG9zICsgNikpIDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5w
b3MgKyA3KSk7CisgICAgICAgIHNlbGYtPnBvcyArPSA4OworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0
YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5
T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlf
c3NpemVfdCBkYXRhX2xlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjIiwg
JmRhdGEsICZkYXRhX2xlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJ
VEVfQk9VTkRTKHNlbGYsIGRhdGFfbGVuKQorCisgICAgbWVtY3B5KHNlbGYtPnBvcywgZGF0YSwg
ZGF0YV9sZW4pOworICAgIHNlbGYtPnBvcyArPSBkYXRhX2xlbjsKKyAgICBQeV9SRVRVUk5fTk9O
RTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX3VpbnQ4KEJ1ZmZlck9iamVj
dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdWludDhfdCB2YWx1ZTsKKyAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkIiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAxKQorCisgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoK
K0J1ZmZlcl9wdXNoX3VpbnQxNihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQor
eworICAgIHVpbnQxNl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
SCIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9V
TkRTKHNlbGYsIDIpCisKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAq
KHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMg
UHlPYmplY3QgKgorQnVmZmVyX3B1c2hfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmpl
Y3QgKmFyZ3MpCit7CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1
cGxlKGFyZ3MsICJJIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVD
S19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAy
NCk7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9z
KyspID0gKHZhbHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlf
UkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50NjQo
QnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1
ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAg
ICByZXR1cm4gTlVMTDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICoo
c2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDU2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1
ZSA+PiA0OCk7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICooc2Vs
Zi0+cG9zKyspID0gKHZhbHVlID4+IDMyKTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+
PiAyNCk7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+
cG9zKyspID0gKHZhbHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAg
UHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50
X3ZhcihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90
IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCisg
ICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZhbHVlIDw9IDB4M0YpIHsKKyAgICAgICAg
Q0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDEpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFs
dWU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgz
RkZGKSB7CisgICAgICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAyKQorICAgICAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KSB8IDB4NDA7CisgICAgICAgICooc2VsZi0+cG9zKysp
ID0gdmFsdWU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUg
PD0gMHgzRkZGRkZGRikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAg
ICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMjQpIHwgMHg4MDsKKyAgICAgICAgKihz
ZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2
YWx1ZSA+PiA4KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlf
UkVUVVJOX05PTkU7CisgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkYp
IHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgICooc2VsZi0+
cG9zKyspID0gKHZhbHVlID4+IDU2KSB8IDB4QzA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDQ4KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOwor
ICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAzMik7CisgICAgICAgICooc2VsZi0+
cG9zKyspID0gKHZhbHVlID4+IDI0KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUg
Pj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAgICAg
KihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnRlZ2Vy
IGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3NlZWsoQnVm
ZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9zOworICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZwb3MpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIGlmIChwb3MgPCAwIHx8IHNlbGYtPmJhc2UgKyBwb3MgPiBzZWxmLT5lbmQpIHsK
KyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlNlZWsgb3V0IG9mIGJv
dW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5wb3MgPSBz
ZWxmLT5iYXNlICsgcG9zOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmpl
Y3QgKgorQnVmZmVyX3RlbGwoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sK
KyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOwor
fQorCitzdGF0aWMgUHlNZXRob2REZWYgQnVmZmVyX21ldGhvZHNbXSA9IHsKKyAgICB7ImRhdGFf
c2xpY2UiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX2RhdGFfc2xpY2UsIE1FVEhfVkFSQVJHUywgIiJ9
LAorICAgIHsiZW9mIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9lb2YsIE1FVEhfVkFSQVJHUywgIiJ9
LAorICAgIHsicHVsbF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF9ieXRlcywgTUVU
SF9WQVJBUkdTLCAiUHVsbCBieXRlcy4ifSwKKyAgICB7InB1bGxfdWludDgiLCAoUHlDRnVuY3Rp
b24pQnVmZmVyX3B1bGxfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1bGwgYW4gOC1iaXQgdW5zaWdu
ZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9w
dWxsX3VpbnQxNiwgTUVUSF9WQVJBUkdTLCAiUHVsbCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2Vy
LiJ9LAorICAgIHsicHVsbF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDMy
LCBNRVRIX1ZBUkFSR1MsICJQdWxsIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAg
eyJwdWxsX3VpbnQ2NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50NjQsIE1FVEhfVkFS
QVJHUywgIlB1bGwgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWlu
dF92YXIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludF92YXIsIE1FVEhfVkFSQVJHUywg
IlB1bGwgYSBRVUlDIHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVzaF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF9ieXRlcywgTUVUSF9WQVJBUkdT
LCAiUHVzaCBieXRlcy4ifSwKKyAgICB7InB1c2hfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVy
X3B1c2hfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1c2ggYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdl
ci4ifSwKKyAgICB7InB1c2hfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQx
NiwgTUVUSF9WQVJBUkdTLCAiUHVzaCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAg
IHsicHVzaF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDMyLCBNRVRIX1ZB
UkFSR1MsICJQdXNoIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3Vp
bnQ2NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1
c2ggYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfdWludF92YXIiLCAo
UHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSBR
VUlDIHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsic2VlayIsIChQ
eUNGdW5jdGlvbilCdWZmZXJfc2VlaywgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJ0ZWxsIiwg
KFB5Q0Z1bmN0aW9uKUJ1ZmZlcl90ZWxsLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeU9iamVjdCoKK0J1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIoQnVmZmVyT2Jq
ZWN0KiBzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVf
dChzZWxmLT5lbmQgLSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVy
X2RhdGFfZ2V0dGVyKEJ1ZmZlck9iamVjdCogc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJl
dHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5iYXNlLCBz
ZWxmLT5wb3MgLSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIEJ1ZmZlcl9n
ZXRzZXRbXSA9IHsKKyAgICB7ImNhcGFjaXR5IiwgKGdldHRlcikgQnVmZmVyX2NhcGFjaXR5X2dl
dHRlciwgTlVMTCwgIiIsIE5VTEwgfSwKKyAgICB7ImRhdGEiLCAoZ2V0dGVyKSBCdWZmZXJfZGF0
YV9nZXR0ZXIsIE5VTEwsICIiLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlU
eXBlT2JqZWN0IEJ1ZmZlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEws
IDApCisgICAgTU9EVUxFX05BTUUgIi5CdWZmZXIiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAq
LworICAgIHNpemVvZihCdWZmZXJPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6
ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1z
aXplICovCisgICAgKGRlc3RydWN0b3IpQnVmZmVyX2RlYWxsb2MsICAgICAgICAgLyogdHBfZGVh
bGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3By
aW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0
YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Nl
dGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9y
ZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9h
c19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAg
ICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQnVmZmVyIG9iamVjdHMiLCAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJ1ZmZlcl9tZXRob2RzLCAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQnVmZmVyX2dldHNldCwgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJ1
ZmZlcl9pbml0LCAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1
Y3QgUHlNb2R1bGVEZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwK
KyAgICBNT0RVTEVfTkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAg
ICAiQSBmYXN0ZXIgYnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0x
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJ
TklUX0ZVTkMKK1B5SW5pdF9fYnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAg
ICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisg
ICAgICAgIHJldHVybiBOVUxMOworCisgICAgQnVmZmVyUmVhZEVycm9yID0gUHlFcnJfTmV3RXhj
ZXB0aW9uKE1PRFVMRV9OQU1FICIuQnVmZmVyUmVhZEVycm9yIiwgUHlFeGNfVmFsdWVFcnJvciwg
TlVMTCk7CisgICAgUHlfSU5DUkVGKEJ1ZmZlclJlYWRFcnJvcik7CisgICAgUHlNb2R1bGVfQWRk
T2JqZWN0KG0sICJCdWZmZXJSZWFkRXJyb3IiLCBCdWZmZXJSZWFkRXJyb3IpOworCisgICAgQnVm
ZmVyV3JpdGVFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkJ1ZmZlcldy
aXRlRXJyb3IiLCBQeUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVy
V3JpdGVFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCdWZmZXJXcml0ZUVycm9y
IiwgQnVmZmVyV3JpdGVFcnJvcik7CisKKyAgICBCdWZmZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9H
ZW5lcmljTmV3OworICAgIGlmIChQeVR5cGVfUmVhZHkoJkJ1ZmZlclR5cGUpIDwgMCkKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZCdWZmZXJUeXBlKTsKKyAgICBQeU1vZHVs
ZV9BZGRPYmplY3QobSwgIkJ1ZmZlciIsIChQeU9iamVjdCAqKSZCdWZmZXJUeXBlKTsKKworICAg
IHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZm
ZXIucHlpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE2ZTQzY2NhM2E1MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKQEAgLTAsMCArMSwyNyBA
QAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKK2NsYXNzIEJ1ZmZlclJlYWRFcnJvcihW
YWx1ZUVycm9yKTogLi4uCitjbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4K
KworY2xhc3MgQnVmZmVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9u
YWxbaW50XSA9IDAsIGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgZGF0YShzZWxmKSAtPiBieXRlczogLi4uCisgICAgZGVmIGRhdGFfc2xpY2Uoc2Vs
Ziwgc3RhcnQ6IGludCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW9mKHNlbGYp
IC0+IGJvb2w6IC4uLgorICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4K
KyAgICBkZWYgdGVsbChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYs
IGxlbmd0aDogaW50KSAtPiBieXRlczogLi4uCisgICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4g
aW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYg
cHVsbF91aW50MzIoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50NjQoc2VsZikg
LT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgorICAg
IGRlZiBwdXNoX2J5dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCisgICAgZGVm
IHB1c2hfdWludDgoc2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hf
dWludDE2KHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQz
MihzZWxmLCB2OiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2
OiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBp
bnQpIC0+IE5vbmU6IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19j
cnlwdG8uYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUxNTU0ZDRiMjEzY2QwN2ZjZWRmOGEzOTMwNGNkNjIwMDQ0ZjE2NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKQEAgLTAsMCArMSw0NTUgQEAK
KyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVk
ZSA8b3BlbnNzbC9lcnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisjZGVmaW5lIE1P
RFVMRV9OQU1FICJhaW9xdWljLl9jcnlwdG8iCisKKyNkZWZpbmUgQUVBRF9LRVlfTEVOR1RIX01B
WCAzMgorI2RlZmluZSBBRUFEX05PTkNFX0xFTkdUSCAxMgorI2RlZmluZSBBRUFEX1RBR19MRU5H
VEggMTYKKworI2RlZmluZSBQQUNLRVRfTEVOR1RIX01BWCAxNTAwCisjZGVmaW5lIFBBQ0tFVF9O
VU1CRVJfTEVOR1RIX01BWCA0CisjZGVmaW5lIFNBTVBMRV9MRU5HVEggMTYKKworI2RlZmluZSBD
SEVDS19SRVNVTFQoZXhwcikgXAorICAgIGlmICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2Ns
ZWFyX2Vycm9yKCk7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3Bl
blNTTCBjYWxsIGZhaWxlZCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisj
ZGVmaW5lIENIRUNLX1JFU1VMVF9DVE9SKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisg
ICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlw
dG9FcnJvciwgIk9wZW5TU0wgY2FsbCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gLTE7IFwK
KyAgICB9CisKK3N0YXRpYyBQeU9iamVjdCAqQ3J5cHRvRXJyb3I7CisKKy8qIEFFQUQgKi8KKwor
dHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAq
ZGVjcnlwdF9jdHg7CisgICAgRVZQX0NJUEhFUl9DVFggKmVuY3J5cHRfY3R4OworICAgIHVuc2ln
bmVkIGNoYXIgYnVmZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGtl
eVtBRUFEX0tFWV9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGl2W0FFQURfTk9OQ0Vf
TEVOR1RIXTsKKyAgICB1bnNpZ25lZCBjaGFyIG5vbmNlW0FFQURfTk9OQ0VfTEVOR1RIXTsKK30g
QUVBRE9iamVjdDsKKworc3RhdGljIEVWUF9DSVBIRVJfQ1RYICoKK2NyZWF0ZV9jdHgoY29uc3Qg
RVZQX0NJUEhFUiAqY2lwaGVyLCBpbnQga2V5X2xlbmd0aCwgaW50IG9wZXJhdGlvbikKK3sKKyAg
ICBFVlBfQ0lQSEVSX0NUWCAqY3R4OworICAgIGludCByZXM7CisKKyAgICBjdHggPSBFVlBfQ0lQ
SEVSX0NUWF9uZXcoKTsKKyAgICBDSEVDS19SRVNVTFQoY3R4ICE9IDApOworCisgICAgcmVzID0g
RVZQX0NpcGhlckluaXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIG9wZXJhdGlv
bik7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJf
Q1RYX3NldF9rZXlfbGVuZ3RoKGN0eCwga2V5X2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJl
cyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9D
Q01fU0VUX0lWTEVOLCBBRUFEX05PTkNFX0xFTkdUSCwgTlVMTCk7CisgICAgQ0hFQ0tfUkVTVUxU
KHJlcyAhPSAwKTsKKworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbnQKK0FFQURfaW5p
dChBRUFET2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sK
KyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpr
ZXksICppdjsKKyAgICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbiwgaXZfbGVu
OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjeSMiLCAmY2lwaGVyX25h
bWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuLCAmaXYsICZpdl9sZW4pKQorICAg
ICAgICByZXR1cm4gLTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVSICpldnBfY2lwaGVyID0gRVZQ
X2dldF9jaXBoZXJieW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlmIChldnBfY2lwaGVyID09IDAp
IHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAiSW52YWxpZCBjaXBoZXIgbmFt
ZTogJXMiLCBjaXBoZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYg
KGtleV9sZW4gPiBBRUFEX0tFWV9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhDcnlwdG9FcnJvciwgIkludmFsaWQga2V5IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorICAgIGlmIChpdl9sZW4gPiBBRUFEX05PTkNFX0xFTkdUSCkgeworICAgICAgICBQ
eUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGl2IGxlbmd0aCIpOworICAgICAg
ICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtY3B5KHNlbGYtPmtleSwga2V5LCBrZXlfbGVu
KTsKKyAgICBtZW1jcHkoc2VsZi0+aXYsIGl2LCBpdl9sZW4pOworCisgICAgc2VsZi0+ZGVjcnlw
dF9jdHggPSBjcmVhdGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDApOworICAgIENIRUNLX1JF
U1VMVF9DVE9SKHNlbGYtPmRlY3J5cHRfY3R4ICE9IDApOworCisgICAgc2VsZi0+ZW5jcnlwdF9j
dHggPSBjcmVhdGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDEpOworICAgIENIRUNLX1JFU1VM
VF9DVE9SKHNlbGYtPmVuY3J5cHRfY3R4ICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0
YXRpYyB2b2lkCitBRUFEX2RlYWxsb2MoQUVBRE9iamVjdCAqc2VsZikKK3sKKyAgICBFVlBfQ0lQ
SEVSX0NUWF9mcmVlKHNlbGYtPmRlY3J5cHRfY3R4KTsKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVl
KHNlbGYtPmVuY3J5cHRfY3R4KTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQUVBRF9kZWNyeXB0
KEFFQURPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmRhdGEsICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4sIGFzc29j
aWF0ZWRfbGVuOworICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAgICB1aW50NjRfdCBw
bjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0siLCAmZGF0YSwgJmRh
dGFfbGVuLCAmYXNzb2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQorICAgICAgICByZXR1
cm4gTlVMTDsKKworICAgIGlmIChkYXRhX2xlbiA8IEFFQURfVEFHX0xFTkdUSCB8fCBkYXRhX2xl
biA+IFBBQ0tFVF9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9F
cnJvciwgIkludmFsaWQgcGF5bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorCisgICAgbWVtY3B5KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5H
VEgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5v
bmNlW0FFQURfTk9OQ0VfTEVOR1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7
CisgICAgfQorCisgICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3RybChzZWxmLT5kZWNyeXB0X2N0
eCwgRVZQX0NUUkxfQ0NNX1NFVF9UQUcsIEFFQURfVEFHX0xFTkdUSCwgKHZvaWQqKShkYXRhICsg
KGRhdGFfbGVuIC0gQUVBRF9UQUdfTEVOR1RIKSkpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0g
MCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVM
TCwgTlVMTCwgc2VsZi0+a2V5LCBzZWxmLT5ub25jZSwgMCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJl
cyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgs
IE5VTEwsICZvdXRsZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRfbGVuKTsKKyAgICBDSEVDS19S
RVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5kZWNy
eXB0X2N0eCwgc2VsZi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBkYXRhX2xlbiAtIEFFQURfVEFH
X0xFTkdUSCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9D
aXBoZXJGaW5hbF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIGlm
IChyZXMgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJQYXls
b2FkIGRlY3J5cHRpb24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor
ICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5i
dWZmZXIsIG91dGxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZW5jcnlwdChBRUFE
T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpkYXRhLCAqYXNzb2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVk
X2xlbjsKKyAgICBpbnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisK
KyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xl
biwgJmFzc29jaWF0ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisKKyAgICBpZiAoZGF0YV9sZW4gPiBQQUNLRVRfTEVOR1RIX01BWCkgeworICAgICAgICBQ
eUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2Vs
Zi0+aXYsIEFFQURfTk9OQ0VfTEVOR1RIKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsr
aSkgeworICAgICAgICBzZWxmLT5ub25jZVtBRUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAo
dWludDhfdCkocG4gPj4gOCAqIGkpOworICAgIH0KKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0
X2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNl
LCAxKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
clVwZGF0ZShzZWxmLT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNz
b2NpYXRlZF9sZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBF
VlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4s
IGRhdGEsIGRhdGFfbGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVz
ID0gRVZQX0NpcGhlckZpbmFsX2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVuMik7
CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwICYmIG91dGxlbjIgPT0gMCk7CisKKyAgICByZXMg
PSBFVlBfQ0lQSEVSX0NUWF9jdHJsKHNlbGYtPmVuY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fR0VU
X1RBRywgQUVBRF9UQUdfTEVOR1RILCBzZWxmLT5idWZmZXIgKyBvdXRsZW4pOworICAgIENIRUNL
X1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6
ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBvdXRsZW4gKyBBRUFEX1RBR19MRU5HVEgpOwor
fQorCitzdGF0aWMgUHlNZXRob2REZWYgQUVBRF9tZXRob2RzW10gPSB7CisgICAgeyJkZWNyeXB0
IiwgKFB5Q0Z1bmN0aW9uKUFFQURfZGVjcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJl
bmNyeXB0IiwgKFB5Q0Z1bmN0aW9uKUFFQURfZW5jcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisK
KyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQUVBRFR5cGUgPSB7CisgICAg
UHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5BRUFEIiwg
ICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihBRUFET2JqZWN0KSwgICAg
ICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQUVBRF9k
ZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlf
VFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQUVB
RCBvYmplY3RzIiwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAq
LworICAgIEFFQURfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJz
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9z
ZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0
b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUFFQURfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBf
aW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Fs
bG9jICovCit9OworCisvKiBIZWFkZXJQcm90ZWN0aW9uICovCisKK3R5cGVkZWYgc3RydWN0IHsK
KyAgICBQeU9iamVjdF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAgICBpbnQgaXNf
Y2hhY2hhMjA7CisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOwor
ICAgIHVuc2lnbmVkIGNoYXIgbWFza1szMV07CisgICAgdW5zaWduZWQgY2hhciB6ZXJvWzVdOwor
fSBIZWFkZXJQcm90ZWN0aW9uT2JqZWN0OworCitzdGF0aWMgaW50CitIZWFkZXJQcm90ZWN0aW9u
X2luaXQoSGVhZGVyUHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2Jq
ZWN0ICprd2FyZ3MpCit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3Qg
dW5zaWduZWQgY2hhciAqa2V5OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVuLCBrZXlf
bGVuOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkj
eSMiLCAmY2lwaGVyX25hbWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuKSkKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVW
UF9nZXRfY2lwaGVyYnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAw
KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5h
bWU6ICVzIiwgY2lwaGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAg
bWVtc2V0KHNlbGYtPm1hc2ssIDAsIHNpemVvZihzZWxmLT5tYXNrKSk7CisgICAgbWVtc2V0KHNl
bGYtPnplcm8sIDAsIHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgc2VsZi0+aXNfY2hhY2hhMjAg
PSBjaXBoZXJfbmFtZV9sZW4gPT0gOCAmJiBtZW1jbXAoY2lwaGVyX25hbWUsICJjaGFjaGEyMCIs
IDgpID09IDA7CisKKyAgICBzZWxmLT5jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKyAgICBD
SEVDS19SRVNVTFRfQ1RPUihzZWxmLT5jdHggIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVy
SW5pdF9leChzZWxmLT5jdHgsIGV2cF9jaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIDEpOworICAg
IENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RY
X3NldF9rZXlfbGVuZ3RoKHNlbGYtPmN0eCwga2V5X2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUX0NU
T1IocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4LCBO
VUxMLCBOVUxMLCBrZXksIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAw
KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorSGVhZGVyUHJvdGVjdGlvbl9k
ZWFsbG9jKEhlYWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9D
VFhfZnJlZShzZWxmLT5jdHgpOworfQorCitzdGF0aWMgaW50IEhlYWRlclByb3RlY3Rpb25fbWFz
ayhIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzYW1w
bGUpCit7CisgICAgaW50IG91dGxlbjsKKyAgICBpZiAoc2VsZi0+aXNfY2hhY2hhMjApIHsKKyAg
ICAgICAgcmV0dXJuIEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVMTCwgTlVM
TCwgc2FtcGxlLCAxKSAmJgorICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5j
dHgsIHNlbGYtPm1hc2ssICZvdXRsZW4sIHNlbGYtPnplcm8sIHNpemVvZihzZWxmLT56ZXJvKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4
LCBzZWxmLT5tYXNrLCAmb3V0bGVuLCBzYW1wbGUsIFNBTVBMRV9MRU5HVEgpOworICAgIH0KK30K
Kworc3RhdGljIFB5T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9hcHBseShIZWFkZXJQcm90ZWN0
aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpoZWFkZXIsICpwYXlsb2FkOworICAgIFB5X3NzaXplX3QgaGVhZGVyX2xlbiwgcGF5bG9h
ZF9sZW47CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
eSN5IyIsICZoZWFkZXIsICZoZWFkZXJfbGVuLCAmcGF5bG9hZCwgJnBheWxvYWRfbGVuKSkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKGhlYWRlclswXSAmIDB4
MDMpICsgMTsKKyAgICBpbnQgcG5fb2Zmc2V0ID0gaGVhZGVyX2xlbiAtIHBuX2xlbmd0aDsKKwor
ICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYXlsb2FkICsgUEFDS0VUX05V
TUJFUl9MRU5HVEhfTUFYIC0gcG5fbGVuZ3RoKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDAp
OworCisgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwgaGVhZGVyLCBoZWFkZXJfbGVuKTsKKyAgICBt
ZW1jcHkoc2VsZi0+YnVmZmVyICsgaGVhZGVyX2xlbiwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOwor
CisgICAgaWYgKHNlbGYtPmJ1ZmZlclswXSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVy
WzBdIF49IHNlbGYtPm1hc2tbMF0gJiAweDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYt
PmJ1ZmZlclswXSBePSBzZWxmLT5tYXNrWzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHBuX2xlbmd0aDsgKytpKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9v
ZmZzZXQgKyBpXSBePSBzZWxmLT5tYXNrWzEgKyBpXTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlC
eXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBoZWFkZXJf
bGVuICsgcGF5bG9hZF9sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0
aW9uX3JlbW92ZShIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CisgICAgUHlfc3NpemVfdCBwYWNr
ZXRfbGVuOworICAgIGludCBwbl9vZmZzZXQsIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VU
dXBsZShhcmdzLCAieSNJIiwgJnBhY2tldCwgJnBhY2tldF9sZW4sICZwbl9vZmZzZXQpKQorICAg
ICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxm
LCBwYWNrZXQgKyBwbl9vZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworICAgIENI
RUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBwYWNrZXQs
IHBuX29mZnNldCArIFBBQ0tFVF9OVU1CRVJfTEVOR1RIX01BWCk7CisKKyAgICBpZiAoc2VsZi0+
YnVmZmVyWzBdICYgMHg4MCkgeworICAgICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFz
a1swXSAmIDB4MEY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNl
bGYtPm1hc2tbMF0gJiAweDFGOworICAgIH0KKworICAgIGludCBwbl9sZW5ndGggPSAoc2VsZi0+
YnVmZmVyWzBdICYgMHgwMykgKyAxOworICAgIHVpbnQzMl90IHBuX3RydW5jYXRlZCA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5i
dWZmZXJbcG5fb2Zmc2V0ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgICAgIHBuX3Ry
dW5jYXRlZCA9IHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSB8IChwbl90cnVuY2F0ZWQgPDwg
OCk7CisgICAgfQorCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInkjaSIsIHNlbGYtPmJ1ZmZl
ciwgcG5fb2Zmc2V0ICsgcG5fbGVuZ3RoLCBwbl90cnVuY2F0ZWQpOworfQorCitzdGF0aWMgUHlN
ZXRob2REZWYgSGVhZGVyUHJvdGVjdGlvbl9tZXRob2RzW10gPSB7CisgICAgeyJhcHBseSIsIChQ
eUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX2FwcGx5LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAg
ICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZSwgTUVUSF9W
QVJBUkdTLCAiIn0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEhlYWRl
clByb3RlY3Rpb25UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQor
ICAgIE1PRFVMRV9OQU1FICIuSGVhZGVyUHJvdGVjdGlvbiIsICAgIC8qIHRwX25hbWUgKi8KKyAg
ICBzaXplb2YoSGVhZGVyUHJvdGVjdGlvbk9iamVjdCksICAgICAvKiB0cF9iYXNpY3NpemUgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAq
LworICAgIChkZXN0cnVjdG9yKUhlYWRlclByb3RlY3Rpb25fZGVhbGxvYywgICAvKiB0cF9kZWFs
bG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJp
bnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRh
dHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0
YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jl
c2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf
cmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Fz
X251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAg
ICAgICAvKiB0cF9mbGFncyAqLworICAgICJIZWFkZXJQcm90ZWN0aW9uIG9iamVjdHMiLCAgICAg
ICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgSGVhZGVyUHJvdGVjdGlvbl9tZXRo
b2RzLCAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpSGVh
ZGVyUHJvdGVjdGlvbl9pbml0LCAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKworc3RhdGljIHN0cnVj
dCBQeU1vZHVsZURlZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAor
ICAgIE1PRFVMRV9OQU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAg
ICJBIGZhc3RlciBidWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KKyAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklU
X0ZVTkMKK1B5SW5pdF9fY3J5cHRvKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBt
ID0gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAg
ICAgIHJldHVybiBOVUxMOworCisgICAgQ3J5cHRvRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24o
TU9EVUxFX05BTUUgIi5DcnlwdG9FcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAg
IFB5X0lOQ1JFRihDcnlwdG9FcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDcnlw
dG9FcnJvciIsIENyeXB0b0Vycm9yKTsKKworICAgIEFFQURUeXBlLnRwX25ldyA9IFB5VHlwZV9H
ZW5lcmljTmV3OworICAgIGlmIChQeVR5cGVfUmVhZHkoJkFFQURUeXBlKSA8IDApCisgICAgICAg
IHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmQUVBRFR5cGUpOworICAgIFB5TW9kdWxlX0Fk
ZE9iamVjdChtLCAiQUVBRCIsIChQeU9iamVjdCAqKSZBRUFEVHlwZSk7CisKKyAgICBIZWFkZXJQ
cm90ZWN0aW9uVHlwZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKKyAgICBpZiAoUHlUeXBl
X1JlYWR5KCZIZWFkZXJQcm90ZWN0aW9uVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICBQeV9JTkNSRUYoJkhlYWRlclByb3RlY3Rpb25UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRP
YmplY3QobSwgIkhlYWRlclByb3RlY3Rpb24iLCAoUHlPYmplY3QgKikmSGVhZGVyUHJvdGVjdGlv
blR5cGUpOworCisgICAgLy8gZW5zdXJlIHJlcXVpcmVkIGNpcGhlcnMgYXJlIGluaXRpYWxpc2Vk
CisgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOworICAgIEVWUF9hZGRfY2lw
aGVyKEVWUF9hZXNfMTI4X2djbSgpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9l
Y2IoKSk7CisgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworCisgICAgcmV0
dXJuIG07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5w
eWkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJj
NTIzMGQ5OTJlN2YyMTljOTNiZWMzY2I0NTcyMTRjMjUxOGM3NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQpAQCAtMCwwICsxLDE3IEBACitm
cm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKKworY2xhc3MgQUVBRDoKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzLCBpdjogYnl0ZXMpOiAuLi4KKyAg
ICBkZWYgZGVjcnlwdCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0
YTogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorICAgIGRl
ZiBlbmNyeXB0KAorICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRhOiBi
eXRlcywgcGFja2V0X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczogLi4uCisKK2NsYXNzIENy
eXB0b0Vycm9yKFZhbHVlRXJyb3IpOiAuLi4KKworY2xhc3MgSGVhZGVyUHJvdGVjdGlvbjoKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzKTogLi4u
CisgICAgZGVmIGFwcGx5KHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHByb3RlY3RlZF9wYXls
b2FkOiBieXRlcykgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiByZW1vdmUoc2VsZiwgcGFja2V0OiBi
eXRlcywgZW5jcnlwdGVkX29mZnNldDogaW50KSAtPiBUdXBsZVtieXRlcywgaW50XTogLi4uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjZDhmMzNkNjVkY2JmMjM5N2Qx
MmM4M2M2NTFjYzg5OWU5MTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hYm91dC5weQpAQCAtMCwwICsxLDcgQEAKK19fYXV0aG9yX18gPSAiSmVyZW15IExh
aW7DqSIKK19fZW1haWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKK19fbGljZW5zZV9fID0g
IkJTRCIKK19fc3VtbWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhUVFAv
MyIKK19fdGl0bGVfXyA9ICJhaW9xdWljIgorX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5jb20v
YWlvcnRjL2Fpb3F1aWMiCitfX3ZlcnNpb25fXyA9ICIwLjguNyIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYTY5ZDg5OTM0ZThm
ODdhMjFjNWI5OGU5N2ExMTQ5MTJiZThjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSAu
Y2xpZW50IGltcG9ydCBjb25uZWN0ICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWlj
Q29ubmVjdGlvblByb3RvY29sICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgc2VydmUgICMg
bm9xYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQyOTM3ZTllODkyYmZlNzZjZDJjMmZjN2NiM2E2ZTRmZjczOTMzZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKQEAgLTAs
MCArMSw5NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBzb2Nr
ZXQKK2ltcG9ydCBzeXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBc3luY0dlbmVyYXRvciwgQ2FsbGFi
bGUsIE9wdGlvbmFsLCBjYXN0CisKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1
aWNDb25maWd1cmF0aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWljQ29ubmVj
dGlvbgorZnJvbSAuLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldEhhbmRsZXIKK2Zyb20gLmNvbXBh
dCBpbXBvcnQgYXN5bmNjb250ZXh0bWFuYWdlcgorZnJvbSAucHJvdG9jb2wgaW1wb3J0IFF1aWND
b25uZWN0aW9uUHJvdG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18gPSBbImNvbm5l
Y3QiXQorCisKK0Bhc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgY29ubmVjdCgKKyAgICBo
b3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJhdGlvbjogT3B0
aW9uYWxbUXVpY0NvbmZpZ3VyYXRpb25dID0gTm9uZSwKKyAgICBjcmVhdGVfcHJvdG9jb2w6IE9w
dGlvbmFsW0NhbGxhYmxlXSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAg
ICBzdHJlYW1faGFuZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwKKyAg
ICB3YWl0X2Nvbm5lY3RlZDogYm9vbCA9IFRydWUsCisgICAgbG9jYWxfcG9ydDogaW50ID0gMCwK
KykgLT4gQXN5bmNHZW5lcmF0b3JbUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgTm9uZV06CisgICAg
IiIiCisgICAgQ29ubmVjdCB0byBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9zdGAgYW5k
IGBwb3J0YC4KKworICAgIDptZXRoOmBjb25uZWN0KClgIHJldHVybnMgYW4gYXdhaXRhYmxlLiBB
d2FpdGluZyBpdCB5aWVsZHMgYQorICAgIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29u
bmVjdGlvblByb3RvY29sYCB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBzdHJlYW1z
LgorCisgICAgOmZ1bmM6YGNvbm5lY3RgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlv
bmFsIGFyZ3VtZW50czoKKworICAgICogYGBjb25maWd1cmF0aW9uYGAgaXMgYSA6Y2xhc3M6YH5h
aW9xdWljLnF1aWMuY29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICAgIGNvbmZp
Z3VyYXRpb24gb2JqZWN0LgorICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9t
aXppbmcgdGhlIDpjbGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMg
dGhlIGNvbm5lY3Rpb24uIEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGlu
ZyB0aGUgc2FtZQorICAgICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5R
dWljQ29ubmVjdGlvblByb3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBv
ZiA6Y2xhc3M6YH5haW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBz
dWJjbGFzcy4KKyAgICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sg
d2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIG5ldyBzZXNz
aW9uIHRpY2tldCBpcyByZWNlaXZlZC4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBhIGNh
bGxiYWNrIHdoaWNoIGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNyZWF0
ZWQuIEl0IG11c3QgYWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0cmVh
bVJlYWRlcmAKKyAgICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgorICAg
ICogYGBsb2NhbF9wb3J0YGAgaXMgdGhlIFVEUCBwb3J0IG51bWJlciB0aGF0IHRoaXMgY2xpZW50
IHdhbnRzIHRvIGJpbmQuCisgICAgIiIiCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xv
b3AoKQorICAgIGxvY2FsX2hvc3QgPSAiOjoiCisKKyAgICAjIGlmIGhvc3QgaXMgbm90IGFuIElQ
IGFkZHJlc3MsIHBhc3MgaXQgdG8gZW5hYmxlIFNOSQorICAgIHRyeToKKyAgICAgICAgaXBhZGRy
ZXNzLmlwX2FkZHJlc3MoaG9zdCkKKyAgICAgICAgc2VydmVyX25hbWUgPSBOb25lCisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHNlcnZlcl9uYW1lID0gaG9zdAorCisgICAgIyBsb29r
dXAgcmVtb3RlIGFkZHJlc3MKKyAgICBpbmZvcyA9IGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9z
dCwgcG9ydCwgdHlwZT1zb2NrZXQuU09DS19ER1JBTSkKKyAgICBhZGRyID0gaW5mb3NbMF1bNF0K
KyAgICBpZiBsZW4oYWRkcikgPT0gMjoKKyAgICAgICAgIyBkZXRlcm1pbmUgYmVoYXZpb3VyIGZv
ciBJUHY0CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAg
IyBvbiBXaW5kb3dzLCB3ZSBtdXN0IHVzZSBhbiBJUHY0IHNvY2tldCB0byByZWFjaCBhbiBJUHY0
IGhvc3QKKyAgICAgICAgICAgIGxvY2FsX2hvc3QgPSAiMC4wLjAuMCIKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zIHN1cHBvcnQgZHVhbC1zdGFjayBzb2NrZXRz
CisgICAgICAgICAgICBhZGRyID0gKCI6OmZmZmY6IiArIGFkZHJbMF0sIGFkZHJbMV0sIDAsIDAp
CisKKyAgICAjIHByZXBhcmUgUVVJQyBjb25uZWN0aW9uCisgICAgaWYgY29uZmlndXJhdGlvbiBp
cyBOb25lOgorICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgaWYgc2VydmVyX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZp
Z3VyYXRpb24uc2VydmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgIGNvbm5lY3Rpb24gPSBRdWlj
Q29ubmVjdGlvbigKKyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzZXNzaW9u
X3RpY2tldF9oYW5kbGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICApCisKKyAgICAjIGNv
bm5lY3QKKyAgICBfLCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBv
aW50KAorICAgICAgICBsYW1iZGE6IGNyZWF0ZV9wcm90b2NvbChjb25uZWN0aW9uLCBzdHJlYW1f
aGFuZGxlcj1zdHJlYW1faGFuZGxlciksCisgICAgICAgIGxvY2FsX2FkZHI9KGxvY2FsX2hvc3Qs
IGxvY2FsX3BvcnQpLAorICAgICkKKyAgICBwcm90b2NvbCA9IGNhc3QoUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCwgcHJvdG9jb2wpCisgICAgcHJvdG9jb2wuY29ubmVjdChhZGRyKQorICAgIGlmIHdh
aXRfY29ubmVjdGVkOgorICAgICAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nvbm5lY3RlZCgpCisg
ICAgdHJ5OgorICAgICAgICB5aWVsZCBwcm90b2NvbAorICAgIGZpbmFsbHk6CisgICAgICAgIHBy
b3RvY29sLmNsb3NlKCkKKyAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nsb3NlZCgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxZTYyZjZk
OTQyOTYxOTMzZmI2ZmUwNzJhZTBmMjdlNjQzYjRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpAQCAtMCwwICsxLDMzIEBACitm
cm9tIGNvbnRleHRsaWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKK2Zyb20gZnVuY3Rvb2xzIGlt
cG9ydCB3cmFwcworCit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBhc3luY2NvbnRl
eHRtYW5hZ2VyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9
IE5vbmUKKworCitjbGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihDb250ZXh0RGVj
b3JhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJncywga3dkcyk6CisgICAg
ICAgIHNlbGYuZ2VuID0gZnVuYygqYXJncywgKiprd2RzKQorICAgICAgICBzZWxmLmZ1bmMsIHNl
bGYuYXJncywgc2VsZi5rd2RzID0gZnVuYywgYXJncywga3dkcworICAgICAgICBzZWxmLl9fZG9j
X18gPSBmdW5jLl9fZG9jX18KKworICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAg
ICAgICByZXR1cm4gYXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKKworICAgIGFzeW5jIGRlZiBf
X2FleGl0X18oc2VsZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgaWYgdHlwIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRocm93KHR5cCwgdmFsdWUs
IHRyYWNlYmFjaykKKworCitkZWYgX2FzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CisgICAgQHdy
YXBzKGZ1bmMpCisgICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgcmV0dXJu
IF9Bc3luY0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCisKKyAgICBy
ZXR1cm4gaGVscGVyCisKKworaWYgYXN5bmNjb250ZXh0bWFuYWdlciBpcyBOb25lOgorICAgIGFz
eW5jY29udGV4dG1hbmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAwNDMzNWI4ZmZm
ZjlkNzAyNWQzNjVlY2FhOTMxZjc3NDcyMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkKQEAgLTAsMCArMSwyNDAgQEAKK2lt
cG9ydCBhc3luY2lvCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgT3B0
aW9uYWwsIFRleHQsIFR1cGxlLCBVbmlvbiwgY2FzdAorCitmcm9tIC4ucXVpYyBpbXBvcnQgZXZl
bnRzCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nv
bm5lY3Rpb24KKworUXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBDYWxsYWJsZVtbYnl0ZXNdLCBO
b25lXQorUXVpY1N0cmVhbUhhbmRsZXIgPSBDYWxsYWJsZVtbYXN5bmNpby5TdHJlYW1SZWFkZXIs
IGFzeW5jaW8uU3RyZWFtV3JpdGVyXSwgTm9uZV0KKworCitjbGFzcyBRdWljQ29ubmVjdGlvblBy
b3RvY29sKGFzeW5jaW8uRGF0YWdyYW1Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKAorICAg
ICAgICBzZWxmLCBxdWljOiBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFs
W1F1aWNTdHJlYW1IYW5kbGVyXSA9IE5vbmUKKyAgICApOgorICAgICAgICBsb29wID0gYXN5bmNp
by5nZXRfZXZlbnRfbG9vcCgpCisKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gYXN5bmNpby5FdmVu
dCgpCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nvbm5l
Y3RlZF93YWl0ZXI6IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5fbG9vcCA9IGxvb3AKKyAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzOiBEaWN0W2lu
dCwgYXN5bmNpby5GdXR1cmVbTm9uZV1dID0ge30KKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMK
KyAgICAgICAgc2VsZi5fc3RyZWFtX3JlYWRlcnM6IERpY3RbaW50LCBhc3luY2lvLlN0cmVhbVJl
YWRlcl0gPSB7fQorICAgICAgICBzZWxmLl90aW1lcjogT3B0aW9uYWxbYXN5bmNpby5UaW1lckhh
bmRsZV0gPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBO
b25lCisgICAgICAgIHNlbGYuX3RyYW5zbWl0X3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uSGFuZGxl
XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFn
cmFtVHJhbnNwb3J0XSA9IE5vbmUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxm
Ll9jb25uZWN0aW9uX2lkX2lzc3VlZF9oYW5kbGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9
IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5k
bGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNl
bGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZF9oYW5kbGVyOiBDYWxsYWJsZVtbXSwgTm9uZV0gPSBs
YW1iZGE6IE5vbmUKKyAgICAgICAgaWYgc3RyZWFtX2hhbmRsZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IGxhbWJkYSByLCB3OiBOb25l
CisKKyAgICBkZWYgY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIENoYW5nZSB0aGUgY29ubmVjdGlvbiBJRCB1c2VkIHRvIGNvbW11bmljYXRl
IHdpdGggdGhlIHBlZXIuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gSUQgd2ls
bCBiZSByZXRpcmVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jaGFuZ2VfY29u
bmVjdGlvbl9pZCgpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNsb3NlKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4K
KyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoKQorICAgICAgICBzZWxmLnRy
YW5zbWl0KCkKKworICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2Uu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFu
ZCBhIHNpbmdsZSB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jb25uZWN0
KGFkZHIsIG5vdz1zZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisK
KyAgICBhc3luYyBkZWYgY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgaXNfdW5pZGlyZWN0
aW9uYWw6IGJvb2wgPSBGYWxzZQorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIs
IGFzeW5jaW8uU3RyZWFtV3JpdGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFV
SUMgc3RyZWFtIGFuZCByZXR1cm4gYSBwYWlyIG9mIChyZWFkZXIsIHdyaXRlcikgb2JqZWN0cy4K
KworICAgICAgICBUaGUgcmV0dXJuZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0cyBhcmUgaW5z
dGFuY2VzIG9mIDpjbGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICAgIGFuZCA6Y2xh
c3M6YGFzeW5jaW8uU3RyZWFtV3JpdGVyYCBjbGFzc2VzLgorICAgICAgICAiIiIKKyAgICAgICAg
c3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKAorICAg
ICAgICAgICAgaXNfdW5pZGlyZWN0aW9uYWw9aXNfdW5pZGlyZWN0aW9uYWwKKyAgICAgICAgKQor
ICAgICAgICByZXR1cm4gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisKKyAgICBkZWYg
cmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBS
ZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5fcXVpYy5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICBzZWxmLnRyYW5z
bWl0KCkKKworICAgIGFzeW5jIGRlZiBwaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgor
ICAgICAgICBQaW5nIHRoZSBwZWVyIGFuZCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAg
ICIiIgorICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAg
ICB1aWQgPSBpZCh3YWl0ZXIpCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyc1t1aWRdID0gd2Fp
dGVyCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9waW5nKHVpZCkKKyAgICAgICAgc2VsZi50cmFu
c21pdCgpCisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiB0
cmFuc21pdChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBwZW5kaW5n
IGRhdGFncmFtcyB0byB0aGUgcGVlciBhbmQgYXJtIHRoZSB0aW1lciBpZiBuZWVkZWQuCisgICAg
ICAgICIiIgorICAgICAgICBzZWxmLl90cmFuc21pdF90YXNrID0gTm9uZQorCisgICAgICAgICMg
c2VuZCBkYXRhZ3JhbXMKKyAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VsZi5fcXVpYy5kYXRh
Z3JhbXNfdG9fc2VuZChub3c9c2VsZi5fbG9vcC50aW1lKCkpOgorICAgICAgICAgICAgc2VsZi5f
dHJhbnNwb3J0LnNlbmR0byhkYXRhLCBhZGRyKQorCisgICAgICAgICMgcmUtYXJtIHRpbWVyCisg
ICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fcXVpYy5nZXRfdGltZXIoKQorICAgICAgICBpZiBzZWxm
Ll90aW1lciBpcyBub3QgTm9uZSBhbmQgc2VsZi5fdGltZXJfYXQgIT0gdGltZXJfYXQ6CisgICAg
ICAgICAgICBzZWxmLl90aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBO
b25lCisgICAgICAgIGlmIHNlbGYuX3RpbWVyIGlzIE5vbmUgYW5kIHRpbWVyX2F0IGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBzZWxmLl9sb29wLmNhbGxfYXQodGltZXJf
YXQsIHNlbGYuX2hhbmRsZV90aW1lcikKKyAgICAgICAgc2VsZi5fdGltZXJfYXQgPSB0aW1lcl9h
dAorCisgICAgYXN5bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBXYWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQuCisgICAgICAg
ICIiIgorICAgICAgICBhd2FpdCBzZWxmLl9jbG9zZWQud2FpdCgpCisKKyAgICBhc3luYyBkZWYg
d2FpdF9jb25uZWN0ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQg
Zm9yIHRoZSBUTFMgaGFuZHNoYWtlIHRvIGNvbXBsZXRlLgorICAgICAgICAiIiIKKyAgICAgICAg
YXNzZXJ0IHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgaXMgTm9uZSwgImFscmVhZHkgYXdhaXRpbmcg
Y29ubmVjdGVkIgorICAgICAgICBpZiBub3Qgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAg
c2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAg
ICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZChzZWxmLl9jb25uZWN0ZWRfd2FpdGVyKQorCisg
ICAgIyBhc3luY2lvLlRyYW5zcG9ydAorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0
cmFuc3BvcnQ6IGFzeW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5f
dHJhbnNwb3J0ID0gY2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisK
KyAgICBkZWYgZGF0YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0ZXMsIFRleHRd
LCBhZGRyOiBOZXR3b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5yZWNl
aXZlX2RhdGFncmFtKGNhc3QoYnl0ZXMsIGRhdGEpLCBhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1l
KCkpCisgICAgICAgIHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21p
dCgpCisKKyAgICAjIG92ZXJyaWRhYmxlCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChz
ZWxmLCBldmVudDogZXZlbnRzLlF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAg
ICAgIENhbGxlZCB3aGVuIGEgUVVJQyBldmVudCBpcyByZWNlaXZlZC4KKworICAgICAgICBSZWlt
cGxlbWVudCB0aGlzIGluIHlvdXIgc3ViY2xhc3MgdG8gaGFuZGxlIHRoZSBldmVudHMuCisgICAg
ICAgICIiIgorICAgICAgICAjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBzdWJjbGFzcworICAgICAg
ICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQpOgorICAg
ICAgICAgICAgZm9yIHJlYWRlciBpbiBzZWxmLl9zdHJlYW1fcmVhZGVycy52YWx1ZXMoKToKKyAg
ICAgICAgICAgICAgICByZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgcmVhZGVyID0g
c2VsZi5fc3RyZWFtX3JlYWRlcnMuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAg
ICAgIGlmIHJlYWRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0g
c2VsZi5fY3JlYXRlX3N0cmVhbShldmVudC5zdHJlYW1faWQpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3RyZWFtX2hhbmRsZXIocmVhZGVyLCB3cml0ZXIpCisgICAgICAgICAgICByZWFkZXIuZmVl
ZF9kYXRhKGV2ZW50LmRhdGEpCisgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFtOgorICAg
ICAgICAgICAgICAgIHJlYWRlci5mZWVkX2VvZigpCisKKyAgICAjIHByaXZhdGUKKworICAgIGRl
ZiBfY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+
IFR1cGxlW2FzeW5jaW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06CisgICAg
ICAgIGFkYXB0ZXIgPSBRdWljU3RyZWFtQWRhcHRlcihzZWxmLCBzdHJlYW1faWQpCisgICAgICAg
IHJlYWRlciA9IGFzeW5jaW8uU3RyZWFtUmVhZGVyKCkKKyAgICAgICAgd3JpdGVyID0gYXN5bmNp
by5TdHJlYW1Xcml0ZXIoYWRhcHRlciwgTm9uZSwgcmVhZGVyLCBzZWxmLl9sb29wKQorICAgICAg
ICBzZWxmLl9zdHJlYW1fcmVhZGVyc1tzdHJlYW1faWRdID0gcmVhZGVyCisgICAgICAgIHJldHVy
biByZWFkZXIsIHdyaXRlcgorCisgICAgZGVmIF9oYW5kbGVfdGltZXIoc2VsZikgLT4gTm9uZToK
KyAgICAgICAgbm93ID0gbWF4KHNlbGYuX3RpbWVyX2F0LCBzZWxmLl9sb29wLnRpbWUoKSkKKyAg
ICAgICAgc2VsZi5fdGltZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gTm9uZQor
ICAgICAgICBzZWxmLl9xdWljLmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBzZWxmLl9w
cm9jZXNzX2V2ZW50cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIF9wcm9j
ZXNzX2V2ZW50cyhzZWxmKSAtPiBOb25lOgorICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4
dF9ldmVudCgpCisgICAgICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcihldmVudC5jb25uZWN0
aW9uX2lkKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVj
dGlvbklkUmV0aXJlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRp
cmVkX2hhbmRsZXIoZXZlbnQuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9jb25uZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcigpCisKKyAgICAgICAgICAgICAg
ICAjIGFib3J0IGNvbm5lY3Rpb24gd2FpdGVyCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29u
bmVjdGVkX3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0g
c2VsZi5fY29ubmVjdGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0
ZWRfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlv
bihDb25uZWN0aW9uRXJyb3IpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IHBpbmcgd2FpdGVy
cworICAgICAgICAgICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fcGluZ193YWl0ZXJzLnZhbHVl
cygpOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9u
RXJyb3IpCisgICAgICAgICAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzLmNsZWFyKCkKKworICAg
ICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZC5zZXQoKQorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGV2ZW50LCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICB3YWl0ZXIgPSBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX2Nvbm5lY3RlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVk
X3dhaXRlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9u
ZSkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlBpbmdBY2tub3ds
ZWRnZWQpOgorICAgICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX3Bpbmdfd2FpdGVycy5wb3Ao
ZXZlbnQudWlkLCBOb25lKQorICAgICAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAg
IHNlbGYucXVpY19ldmVudF9yZWNlaXZlZChldmVudCkKKyAgICAgICAgICAgIGV2ZW50ID0gc2Vs
Zi5fcXVpYy5uZXh0X2V2ZW50KCkKKworICAgIGRlZiBfdHJhbnNtaXRfc29vbihzZWxmKSAtPiBO
b25lOgorICAgICAgICBpZiBzZWxmLl90cmFuc21pdF90YXNrIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl90cmFuc21pdF90YXNrID0gc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi50cmFuc21p
dCkKKworCitjbGFzcyBRdWljU3RyZWFtQWRhcHRlcihhc3luY2lvLlRyYW5zcG9ydCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzdHJl
YW1faWQ6IGludCk6CisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBz
ZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisgICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZikg
LT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhz
ZWxmLCBuYW1lOiBzdHIsIGRlZmF1bHQ6IEFueSA9IE5vbmUpIC0+IEFueToKKyAgICAgICAgIiIi
CisgICAgICAgIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBRVUlDIHN0cmVh
bS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5hbWUgPT0gInN0cmVhbV9pZCI6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5zdHJlYW1faWQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToK
KyAgICAgICAgc2VsZi5wcm90b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFt
X2lkLCBkYXRhKQorICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKKworICAg
IGRlZiB3cml0ZV9lb2Yoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9z
dHJlYW1fZGF0YShzZWxmLnN0cmVhbV9pZCwgYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAg
IHNlbGYucHJvdG9jb2wuX3RyYW5zbWl0X3Nvb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MGVlNDYwYjZlZDY2ZTA5NDUzODVmMWY1
NDg1OGNjMGVmOTE4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYXN5bmNpby9zZXJ2ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKK2ltcG9ydCBhc3luY2lvCitp
bXBvcnQgb3MKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBv
cnQgQ2FsbGFibGUsIERpY3QsIE9wdGlvbmFsLCBUZXh0LCBVbmlvbiwgY2FzdAorCitmcm9tIC4u
YnVmZmVyIGltcG9ydCBCdWZmZXIKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1
aWNDb25maWd1cmF0aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRk
cmVzcywgUXVpY0Nvbm5lY3Rpb24KK2Zyb20gLi5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBB
Q0tFVF9UWVBFX0lOSVRJQUwsCisgICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1
aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorKQorZnJvbSAu
LnF1aWMucmV0cnkgaW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorZnJvbSAuLnRscyBpbXBv
cnQgU2Vzc2lvblRpY2tldEZldGNoZXIsIFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5wcm90
b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKwor
X19hbGxfXyA9IFsic2VydmUiXQorCisKK2NsYXNzIFF1aWNTZXJ2ZXIoYXN5bmNpby5EYXRhZ3Jh
bVByb3RvY29sKToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICos
CisgICAgICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgICAgICBjcmVh
dGVfcHJvdG9jb2w6IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAg
c2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0g
Tm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRp
Y2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICAgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFs
c2UsCisgICAgICAgIHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0g
PSBOb25lLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNv
bmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5fY3JlYXRlX3Byb3RvY29sID0gY3JlYXRlX3Byb3Rv
Y29sCisgICAgICAgIHNlbGYuX2xvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAg
ICAgc2VsZi5fcHJvdG9jb2xzOiBEaWN0W2J5dGVzLCBRdWljQ29ubmVjdGlvblByb3RvY29sXSA9
IHt9CisgICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tl
dF9mZXRjaGVyCisgICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9u
X3RpY2tldF9oYW5kbGVyCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNp
by5EYXRhZ3JhbVRyYW5zcG9ydF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRs
ZXIgPSBzdHJlYW1faGFuZGxlcgorCisgICAgICAgIGlmIHN0YXRlbGVzc19yZXRyeToKKyAgICAg
ICAgICAgIHNlbGYuX3JldHJ5ID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYuX3JldHJ5ID0gTm9uZQorCisgICAgZGVmIGNsb3NlKHNlbGYp
OgorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gc2V0KHNlbGYuX3Byb3RvY29scy52YWx1ZXMoKSk6
CisgICAgICAgICAgICBwcm90b2NvbC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3Byb3RvY29scy5j
bGVhcigpCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5jbG9zZSgpCisKKyAgICBkZWYgY29ubmVj
dGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25l
OgorICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3Bv
cnQsIHRyYW5zcG9ydCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBV
bmlvbltieXRlcywgVGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAg
ICBkYXRhID0gY2FzdChieXRlcywgZGF0YSkKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0
YSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVy
KAorICAgICAgICAgICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRp
b24uY29ubmVjdGlvbl9pZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHZlcnNpb24gbmVnb3Rp
YXRpb24KKyAgICAgICAgaWYgKAorICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5v
bmUKKyAgICAgICAgICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJh
dGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuX3Ry
YW5zcG9ydC5zZW5kdG8oCisgICAgICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdv
dGlhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1oZWFkZXIuZGVzdGluYXRp
b25fY2lkLAorICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJj
ZV9jaWQsCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9jb25m
aWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIGFkZHIsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICBwcm90b2NvbCA9IHNlbGYuX3Byb3RvY29scy5nZXQoaGVhZGVyLmRlc3RpbmF0aW9uX2Np
ZCwgTm9uZSkKKyAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNd
ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBwcm90b2NvbCBpcyBOb25lCisgICAg
ICAgICAgICBhbmQgbGVuKGRhdGEpID49IDEyMDAKKyAgICAgICAgICAgIGFuZCBoZWFkZXIucGFj
a2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICApOgorICAgICAgICAgICAg
IyBzdGF0ZWxlc3MgcmV0cnkKKyAgICAgICAgICAgIGlmIHNlbGYuX3JldHJ5IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgIGlmIG5vdCBoZWFkZXIudG9rZW46CisgICAgICAgICAgICAgICAg
ICAgICMgY3JlYXRlIGEgcmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJh
bnNwb3J0LnNlbmR0bygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aGVhZGVyLnZlcnNpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1vcy51cmFuZG9tKDgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2Np
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9
aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRy
eV90b2tlbj1zZWxmLl9yZXRyeS5jcmVhdGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZHIsIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB2
YWxpZGF0ZSByZXRyeSB0b2tlbgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcmV0cnkudmFsaWRh
dGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLnRva2Vu
CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAg
ICMgY3JlYXRlIG5ldyBjb25uZWN0aW9uCisgICAgICAgICAgICBjb25uZWN0aW9uID0gUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5l
Y3Rpb25faWQgb3IgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBvcmln
aW5hbF9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQsCisgICAgICAgICAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAor
ICAgICAgICAgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2VsZi5fc2Vzc2lvbl90aWNr
ZXRfaGFuZGxlciwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sID0gc2VsZi5f
Y3JlYXRlX3Byb3RvY29sKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHN0cmVhbV9oYW5k
bGVyPXNlbGYuX3N0cmVhbV9oYW5kbGVyCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90
b2NvbC5jb25uZWN0aW9uX21hZGUoc2VsZi5fdHJhbnNwb3J0KQorCisgICAgICAgICAgICAjIHJl
Z2lzdGVyIGNhbGxiYWNrcworICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfaXNz
dWVkX2hhbmRsZXIgPSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25f
aWRfaXNzdWVkLCBwcm90b2NvbD1wcm90b2NvbAorICAgICAgICAgICAgKQorICAgICAgICAgICAg
cHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyID0gcGFydGlhbCgKKyAgICAg
ICAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWQsIHByb3RvY29sPXByb3RvY29s
CisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl90ZXJtaW5h
dGVkX2hhbmRsZXIgPSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25f
dGVybWluYXRlZCwgcHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKworICAgICAgICAg
ICAgc2VsZi5fcHJvdG9jb2xzW2hlYWRlci5kZXN0aW5hdGlvbl9jaWRdID0gcHJvdG9jb2wKKyAg
ICAgICAgICAgIHNlbGYuX3Byb3RvY29sc1tjb25uZWN0aW9uLmhvc3RfY2lkXSA9IHByb3RvY29s
CisKKyAgICAgICAgaWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2Nv
bC5kYXRhZ3JhbV9yZWNlaXZlZChkYXRhLCBhZGRyKQorCisgICAgZGVmIF9jb25uZWN0aW9uX2lk
X2lzc3VlZChzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2Nv
bCk6CisgICAgICAgIHNlbGYuX3Byb3RvY29sc1tjaWRdID0gcHJvdG9jb2wKKworICAgIGRlZiBf
Y29ubmVjdGlvbl9pZF9yZXRpcmVkKAorICAgICAgICBzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2Nv
bDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0
IHNlbGYuX3Byb3RvY29sc1tjaWRdID09IHByb3RvY29sCisgICAgICAgIGRlbCBzZWxmLl9wcm90
b2NvbHNbY2lkXQorCisgICAgZGVmIF9jb25uZWN0aW9uX3Rlcm1pbmF0ZWQoc2VsZiwgcHJvdG9j
b2w6IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgICAgICBmb3IgY2lkLCBwcm90byBpbiBs
aXN0KHNlbGYuX3Byb3RvY29scy5pdGVtcygpKToKKyAgICAgICAgICAgIGlmIHByb3RvID09IHBy
b3RvY29sOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQorCisKK2Fz
eW5jIGRlZiBzZXJ2ZSgKKyAgICBob3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisg
ICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgY3JlYXRlX3Byb3RvY29s
OiBDYWxsYWJsZSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRf
ZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICBzZXNz
aW9uX3RpY2tldF9oYW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25l
LAorICAgIHN0YXRlbGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAgIHN0cmVhbV9oYW5kbGVy
OiBRdWljU3RyZWFtSGFuZGxlciA9IE5vbmUsCispIC0+IFF1aWNTZXJ2ZXI6CisgICAgIiIiCisg
ICAgU3RhcnQgYSBRVUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAuCisK
KyAgICA6ZnVuYzpgc2VydmVgIHJlcXVpcmVzIGEgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmNvbmZp
Z3VyYXRpb24uUXVpY0NvbmZpZ3VyYXRpb25gCisgICAgY29udGFpbmluZyBUTFMgY2VydGlmaWNh
dGUgYW5kIHByaXZhdGUga2V5IGFzIHRoZSBgYGNvbmZpZ3VyYXRpb25gYCBhcmd1bWVudC4KKwor
ICAgIDpmdW5jOmBzZXJ2ZWAgYWxzbyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJn
dW1lbnRzOgorCisgICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFsbG93cyBjdXN0b21pemluZyB0
aGUgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgdGhhdAorICAgICAgbWFuYWdlcyB0aGUgY29u
bmVjdGlvbi4gSXQgc2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBz
YW1lCisgICAgICBhcmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25u
ZWN0aW9uUHJvdG9jb2xgIGFuZCByZXR1cm5pbmcKKyAgICAgIGFuIGluc3RhbmNlIG9mIDpjbGFz
czpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sYCBvciBhIHN1YmNsYXNz
LgorICAgICogYGBzZXNzaW9uX3RpY2tldF9mZXRjaGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBp
cyBpbnZva2VkIGJ5IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgc2Vzc2lvbiB0aWNrZXQg
aXMgcHJlc2VudGVkIGJ5IHRoZSBwZWVyLiBJdCBzaG91bGQgcmV0dXJuCisgICAgICB0aGUgc2Vz
c2lvbiB0aWNrZXQgd2l0aCB0aGUgc3BlY2lmaWVkIElEIG9yIGBOb25lYCBpZiBpdCBpcyBub3Qg
Zm91bmQuCisgICAgKiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lv
biB0aWNrZXQgaXMgaXNzdWVkLiBJdCBzaG91bGQgc3RvcmUgdGhlIHNlc3Npb24KKyAgICAgIHRp
Y2tldCBmb3IgZnV0dXJlIGxvb2t1cC4KKyAgICAqIGBgc3RhdGVsZXNzX3JldHJ5YGAgc3BlY2lm
aWVzIHdoZXRoZXIgYSBzdGF0ZWxlc3MgcmV0cnkgc2hvdWxkIGJlCisgICAgICBwZXJmb3JtZWQg
cHJpb3IgdG8gaGFuZGxpbmcgbmV3IGNvbm5lY3Rpb25zLgorICAgICogYGBzdHJlYW1faGFuZGxl
cmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcwor
ICAgICAgY3JlYXRlZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFz
eW5jaW8uU3RyZWFtUmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdy
aXRlcmAuCisgICAgIiIiCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisK
KyAgICBfLCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAor
ICAgICAgICBsYW1iZGE6IFF1aWNTZXJ2ZXIoCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNv
bmZpZ3VyYXRpb24sCisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29s
LAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZXNzaW9uX3RpY2tldF9mZXRj
aGVyLAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9o
YW5kbGVyLAorICAgICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PXN0YXRlbGVzc19yZXRyeSwKKyAg
ICAgICAgICAgIHN0cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyLAorICAgICAgICApLAorICAg
ICAgICBsb2NhbF9hZGRyPShob3N0LCBwb3J0KSwKKyAgICApCisgICAgcmV0dXJuIGNhc3QoUXVp
Y1NlcnZlciwgcHJvdG9jb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lv
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4
OGYxZWIxNTkyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3lu
Y2lvL2NvbXBhdC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29s
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2J1ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E0Mjk4Zjk1NGMyMmU1Mzg5YTEyOWEx
ZWU2NzVlOGVmZWQ4N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2J1ZmZlci5weQpAQCAtMCwwICsxLDI5IEBACitmcm9tIC5fYnVmZmVyIGltcG9ydCBCdWZm
ZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciAgIyBub3FhCisKK1VJTlRfVkFS
X01BWCA9IDB4M0ZGRkZGRkZGRkZGRkZGRgorCisKK2RlZiBlbmNvZGVfdWludF92YXIodmFsdWU6
IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgRW5jb2RlIGEgdmFyaWFibGUtbGVuZ3RoIHVu
c2lnbmVkIGludGVnZXIuCisgICAgIiIiCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisg
ICAgYnVmLnB1c2hfdWludF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVm
IHNpemVfdWludF92YXIodmFsdWU6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJldHVybiB0
aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUKKyAg
ICBhcyBhIFFVSUMgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuCisgICAgIiIiCisg
ICAgaWYgdmFsdWUgPD0gMHgzRjoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHZhbHVlIDw9
IDB4M0ZGRjoKKyAgICAgICAgcmV0dXJuIDIKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRkZGRkY6
CisgICAgICAgIHJldHVybiA0CisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkY6
CisgICAgICAgIHJldHVybiA4CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
SW50ZWdlciBpcyB0b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2
YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxl
IGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1
bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2gwL2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIx
ZWU0ZTdkNmIxOGQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9jb25uZWN0aW9uLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBE
aWN0LCBMaXN0CisKK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwg
SDNFdmVudCwgSGVhZGVycywgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25u
ZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGlt
cG9ydCBRdWljRXZlbnQsIFN0cmVhbURhdGFSZWNlaXZlZAorCitIMF9BTFBOID0gWyJocS0yNyIs
ICJocS0yNiIsICJocS0yNSJdCisKKworY2xhc3MgSDBDb25uZWN0aW9uOgorICAgICIiIgorICAg
IEFuIEhUVFAvMC45IGNvbm5lY3Rpb24gb2JqZWN0LgorICAgICIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHF1aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5faGVhZGVyc19y
ZWNlaXZlZDogRGljdFtpbnQsIGJvb2xdID0ge30KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0g
cXVpYy5jb25maWd1cmF0aW9uLmlzX2NsaWVudAorICAgICAgICBzZWxmLl9xdWljID0gcXVpYwor
CisgICAgZGVmIGhhbmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gz
RXZlbnRdOgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAg
ICAgaWYgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0
cmVhbV9pZCAlIDQpID09IDA6CisgICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQorICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwg
RmFsc2UpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
ICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0
cmVhbV9lbmRlZD1GYWxzZSwgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxp
dChiIiAiLCAxKQorICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bKGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCld
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgIGRhdGEgPSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVk
W2V2ZW50LnN0cmVhbV9pZF0gPSBUcnVlCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRh
dGE9ZGF0YSwgc3RyZWFtX2VuZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5z
dHJlYW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0
dXJuIGh0dHBfZXZlbnRzCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50
LCBkYXRhOiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5f
cXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKKworICAg
IGRlZiBzZW5kX2hlYWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJz
OiBIZWFkZXJzLCBlbmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3Qo
aGVhZGVycykKKyAgICAgICAgICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBi
IiAiICsgaGVhZGVyc19kaWN0W2IiOnBhdGgiXSArIGIiXHJcbiIKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGRhdGEgPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjM2MWVhNDA1NTFiNjI4NmIzZTFlZTVmMjlh
Nzc3NGFlNjA3MGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2gwL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC9jb25uZWN0aW9uLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAt
MCwwICsxIEBACisjIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZjhj
NTQyODNjZDc3YzdmOWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDc3NiBA
QAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSB0
eXBpbmcgaW1wb3J0IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKKworaW1wb3J0IHB5bHNxcGFj
aworCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwg
ZW5jb2RlX3VpbnRfdmFyCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0
YVJlY2VpdmVkLAorICAgIEgzRXZlbnQsCisgICAgSGVhZGVycywKKyAgICBIZWFkZXJzUmVjZWl2
ZWQsCisgICAgUHVzaFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5oMy5leGNlcHRp
b25zIGltcG9ydCBOb0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5jb25u
ZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCitm
cm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2Vp
dmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorCits
b2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaHR0cDMiKQorCitIM19BTFBOID0gWyJoMy0yNyIs
ICJoMy0yNiIsICJoMy0yNSJdCisKKworY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgorICAgIEhU
VFBfTk9fRVJST1IgPSAweDEwMAorICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4
MTAxCisgICAgSFRUUF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCisgICAgSFRUUF9TVFJFQU1fQ1JF
QVRJT05fRVJST1IgPSAweDEwMworICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4
MTA0CisgICAgSFRUUF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKKyAgICBIVFRQX0ZSQU1FX0VS
Uk9SID0gMHgxMDYKKyAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKKyAgICBIVFRQX0lE
X0VSUk9SID0gMHgxMDgKKyAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKKyAgICBIVFRQ
X01JU1NJTkdfU0VUVElOR1MgPSAweDEwQQorICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4
MTBCCisgICAgSFRUUF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCisgICAgSFRUUF9SRVFVRVNU
X0lOQ09NUExFVEUgPSAweDEwRAorICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQorICAg
IEhUVFBfQ09OTkVDVF9FUlJPUiA9IDB4MTBGCisgICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0g
MHgxMTAKKyAgICBIVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKKyAgICBI
VFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKKyAgICBIVFRQX1FQQUNLX0RF
Q09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDIKKworCitjbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6
CisgICAgREFUQSA9IDB4MAorICAgIEhFQURFUlMgPSAweDEKKyAgICBQUklPUklUWSA9IDB4Mgor
ICAgIENBTkNFTF9QVVNIID0gMHgzCisgICAgU0VUVElOR1MgPSAweDQKKyAgICBQVVNIX1BST01J
U0UgPSAweDUKKyAgICBHT0FXQVkgPSAweDcKKyAgICBNQVhfUFVTSF9JRCA9IDB4RAorICAgIERV
UExJQ0FURV9QVVNIID0gMHhFCisKKworY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgorICAgIElO
SVRJQUwgPSAwCisgICAgQUZURVJfSEVBREVSUyA9IDEKKyAgICBBRlRFUl9UUkFJTEVSUyA9IDIK
KworCitjbGFzcyBTZXR0aW5nKEludEVudW0pOgorICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lU
WSA9IDEKKyAgICBTRVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKKyAgICBRUEFDS19C
TE9DS0VEX1NUUkVBTVMgPSA3CisgICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKKwor
CitjbGFzcyBTdHJlYW1UeXBlKEludEVudW0pOgorICAgIENPTlRST0wgPSAwCisgICAgUFVTSCA9
IDEKKyAgICBRUEFDS19FTkNPREVSID0gMgorICAgIFFQQUNLX0RFQ09ERVIgPSAzCisKKworY2xh
c3MgUHJvdG9jb2xFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9y
IHByb3RvY29sIGVycm9ycy4KKworICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8g
dGhlIEFQSSB1c2VyLCB0aGV5IGFyZSBoYW5kbGVkCisgICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlv
bi5oYW5kbGVfZXZlbnRgLgorICAgICIiIgorCisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5I
VFRQX0dFTkVSQUxfUFJPVE9DT0xfRVJST1IKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFz
b25fcGhyYXNlOiBzdHIgPSAiIik6CisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNv
bl9waHJhc2UKKworCitjbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJv
cik6CisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05f
RkFJTEVECisKKworY2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6
CisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VS
Uk9SCisKKworY2xhc3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6Cisg
ICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9S
CisKKworY2xhc3MgU3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKKyAgICBlcnJv
cl9jb2RlID0gRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCisKKworY2xhc3Mg
RnJhbWVVbmV4cGVjdGVkKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNv
ZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVECisKKworZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBl
OiBpbnQsIGZyYW1lX2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKKyAgICBmcmFtZV9sZW5ndGggPSBs
ZW4oZnJhbWVfZGF0YSkKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsg
MTYpCisgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKKyAgICBidWYucHVzaF91aW50
X3ZhcihmcmFtZV9sZW5ndGgpCisgICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKKyAgICBy
ZXR1cm4gYnVmLmRhdGEKKworCitkZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2lu
dCwgaW50XSkgLT4gYnl0ZXM6CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAg
Zm9yIHNldHRpbmcsIHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6CisgICAgICAgIGJ1Zi5wdXNo
X3VpbnRfdmFyKHNldHRpbmcpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAg
IHJldHVybiBidWYuZGF0YQorCisKK2RlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykg
LT4gaW50OgorICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgbWF4X3B1c2hfaWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBtYXhf
cHVzaF9pZAorCisKK2RlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQs
IGludF06CisgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICBzZXR0aW5ncyA9IFtdCisg
ICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKyAgICAgICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHNldHRp
bmdzLmFwcGVuZCgoc2V0dGluZywgdmFsdWUpKQorICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQor
CisKK2RlZiBxbG9nX2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9p
ZDogaW50KSAtPiBEaWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0
cihieXRlX2xlbmd0aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0s
CisgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworZGVmIHFs
b2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKKyAgICBy
ZXR1cm4gWworICAgICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBo
WzFdLmRlY29kZSgidXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCisgICAgXQorCisKK2RlZiBxbG9n
X2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhl
YWRlcnMsIHN0cmVhbV9pZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAg
ImJ5dGVfbGVuZ3RoIjogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFt
ZV90eXBlIjogImhlYWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVy
cyl9LAorICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2Rl
ZiBxbG9nX2VuY29kZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6IGludCwg
aGVhZGVyczogSGVhZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAorKSAtPiBEaWN0
OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCks
CisgICAgICAgICJmcmFtZSI6IHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJv
bWlzZSIsCisgICAgICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVy
cyksCisgICAgICAgICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKKyAgICAgICAgfSwKKyAg
ICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitjbGFzcyBIM1N0
cmVhbToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYmxvY2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9z
aXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgorICAg
ICAgICBzZWxmLmVuZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBO
b25lCisgICAgICAgIHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFk
ZXJzU3RhdGUuSU5JVElBTAorICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVy
c1N0YXRlID0gSGVhZGVyc1N0YXRlLklOSVRJQUwKKyAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAg
ICAgICBzZWxmLnN0cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK2NsYXNzIEgz
Q29ubmVjdGlvbjoKKyAgICAiIiIKKyAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBv
YmplY3QuCisKKyAgICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb25gIGluc3RhbmNlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHF1aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFj
aXR5ID0gNDA5NgorICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgorCisgICAgICAg
IHNlbGYuX2lzX2NsaWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAg
c2VsZi5faXNfZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVp
Y19sb2dnZXIKKyAgICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAorICAg
ICAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMK
KyAgICAgICAgKQorICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAorICAg
ICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXIg
PSBweWxzcXBhY2suRW5jb2RlcigpCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2
ZWQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtOiBEaWN0W2ludCwgSDNTdHJlYW1dID0ge30KKworICAgICAgICBzZWxmLl9tYXhf
cHVzaF9pZDogT3B0aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQor
ICAgICAgICBzZWxmLl9uZXh0X3B1c2hfaWQ6IGludCA9IDAKKworICAgICAgICBzZWxmLl9sb2Nh
bF9jb250cm9sX3N0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5f
bG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX2xvY2FsX2VuY29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAg
ICAgIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisg
ICAgICAgIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBO
b25lCisKKyAgICAgICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKKworICAgIGRlZiBoYW5kbGVf
ZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAg
IiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRU
UCBldmVudHMuCisKKyAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5k
bGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRh
UmVjZWl2ZWQpIGFuZCBub3Qgc2VsZi5faXNfZG9uZToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IGV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0
ZV9zdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlm
IHN0cmVhbV9pZCAlIDQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
Y2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW0sIGV2ZW50LmRhdGEsIGV2ZW50LmVuZF9zdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3Vu
aSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5k
X3N0cmVhbQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUHJvdG9j
b2xFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPWV4Yy5lcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBzZW5kX3B1c2hf
cHJvbWlzZShzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50Ogor
ICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBz
cGVjaWZpZWQgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGlj
aCBoZWFkZXJzIGFuZCBkYXRhIGNhbiBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1f
aWQ6IFRoZSBzdHJlYW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBh
cmFtIGhlYWRlcnM6IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgorICAg
ICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZl
cnMgbWF5IHNlbmQgYSBwdXNoIHByb21pc2UuIgorICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9p
ZCBpcyBOb25lIG9yIHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKKyAg
ICAgICAgICAgIHJhaXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKworICAgICAgICAjIHNlbmQg
cHVzaCBwcm9taXNlCisgICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKKyAgICAg
ICAgc2VsZi5fbmV4dF9wdXNoX2lkICs9IDEKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVh
bV9kYXRhKAorICAgICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2RlX2ZyYW1l
KAorICAgICAgICAgICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICAg
ICAgZW5jb2RlX3VpbnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFt
X2lkLCBoZWFkZXJzKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIMKg
Y3JlYXRlIHB1c2ggc3RyZWFtCisgICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRl
X3VuaV9zdHJlYW0oU3RyZWFtVHlwZS5QVVNIKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3Ry
ZWFtX2RhdGEocHVzaF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKKworICAg
ICAgICByZXR1cm4gcHVzaF9zdHJlYW1faWQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3Ry
ZWFtX2lkOiBpbnQsIGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAg
ICAgVG8gcmV0cmlldmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5l
dHdvcmsgY2FsbCB0aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWlj
LmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1l
dGhvZC4KKworICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNo
IHRvIHNlbmQgdGhlIGRhdGEuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5k
LgorICAgICAgICA6cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4K
KyAgICAgICAgIiIiCisgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAg
ICAgIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAg
ICAgaWYgc3RyZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVB
REVSUzoKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBu
b3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisg
ICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAgICAgICAgIGRh
dGE9cWxvZ19lbmNvZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9p
ZD1zdHJlYW1faWQpLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9z
dHJlYW1fZGF0YSgKKyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlw
ZS5EQVRBLCBkYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgc2VuZF9oZWFk
ZXJzKAorICAgICAgICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5k
X3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgU2VuZCBoZWFkZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmll
dmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0
aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhl
IGhlYWRlcnMuCisgICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNl
bmQuCisgICAgICAgIDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQK
KyAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQor
ICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRF
Ul9UUkFJTEVSUzoKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBm
cmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICBmcmFtZV9kYXRh
ID0gc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNh
dGVnb3J5PSJodHRwIiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisg
ICAgICAgICAgICAgICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAg
ICAgICAgICAgICBieXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywg
c3RyZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisK
KyAgICAgICAgIyB1cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycworICAgICAgICBpZiBzdHJl
YW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgorICAgICAgICAg
ICAgc3RyZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJT
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0g
SGVhZGVyc1N0YXRlLkFGVEVSX1RSQUlMRVJTCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJl
YW1fZGF0YSgKKyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5I
RUFERVJTLCBmcmFtZV9kYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgX2Ny
ZWF0ZV91bmlfc3RyZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVu
IHR5cGUuCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9u
ZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAg
c2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0
cmVhbV90eXBlKSkKKyAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIF9kZWNvZGVf
aGVhZGVycyhzZWxmLCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNd
KSAtPiBIZWFkZXJzOgorICAgICAgICAiIiIKKyAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9j
ayBhbmQgc2VuZCBkZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgorCisgICAg
ICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVj
b21lcyB1bmJsb2NrZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBp
ZiBmcmFtZV9kYXRhIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9
IHNlbGYuX2RlY29kZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRf
aGVhZGVyKHN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2RlY29kZXJf
Ynl0ZXNfc2VudCArPSBsZW4oZGVjb2RlcikKKyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9z
dHJlYW1fZGF0YShzZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKKyAgICAg
ICAgZXhjZXB0IHB5bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKKyAgICAgICAg
ICAgIHJhaXNlIFFwYWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCisKKyAgICAgICAg
cmV0dXJuIGhlYWRlcnMKKworICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lk
OiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAgICAgICAg
RW5jb2RlIGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVu
Y29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9
IHNlbGYuX2VuY29kZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKKyAgICAgICAgc2VsZi5f
ZW5jb2Rlcl9ieXRlc19zZW50ICs9IGxlbihlbmNvZGVyKQorICAgICAgICBzZWxmLl9xdWljLnNl
bmRfc3RyZWFtX2RhdGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCisg
ICAgICAgIHJldHVybiBmcmFtZV9kYXRhCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFt
KHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBIM1N0cmVhbToKKyAgICAgICAgaWYgc3RyZWFtX2lk
IG5vdCBpbiBzZWxmLl9zdHJlYW06CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lk
XSA9IEgzU3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJl
YW1faWRdCisKKyAgICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6
IGludCwgZnJhbWVfZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBmcmFtZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6Cisg
ICAgICAgICAgICBzZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCisgICAgICAg
ICAgICBlbmNvZGVyID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKKyAgICAgICAgICAg
ICAgICBtYXhfdGFibGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RB
QkxFX0NBUEFDSVRZLCAwKSwKKyAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGlu
Z3MuZ2V0KFNldHRpbmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNv
ZGVyX3N0cmVhbV9pZCwgZW5jb2RlcikKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1l
VHlwZS5NQVhfUFVTSF9JRDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAg
ICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBN
QVhfUFVTSF9JRCIpCisgICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9w
dXNoX2lkKGZyYW1lX2RhdGEpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCisgICAgICAg
ICAgICBGcmFtZVR5cGUuREFUQSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5E
VVBMSUNBVEVfUFVTSCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBl
Y3RlZCgiSW52YWxpZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKKworICAgIGRlZiBf
aGFuZGxlX3JlcXVlc3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJh
bWVfdHlwZTogaW50LAorICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCisgICAg
ICAgIHN0cmVhbTogSDNTdHJlYW0sCisgICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICAp
IC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFtZSBy
ZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAg
ICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgZnJhbWVfdHlw
ZSA9PSBGcmFtZVR5cGUuREFUQToKKyAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBh
bGxvd2VkCisgICAgICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9IRUFERVJTOgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBl
Y3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAg
ICAgICAgaWYgc3RyZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6CisgICAgICAgICAgICAgICAgaHR0
cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6CisgICAg
ICAgICAgICAjIGNoZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICAgICAgaWYg
c3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6
CisgICAgICAgICAgICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlz
IG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICAgICAjIHRyeSB0byBkZWNv
ZGUgSEVBREVSUywgbWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCisgICAgICAgICAg
ICBoZWFkZXJzID0gc2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVf
ZGF0YSkKKworICAgICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2Vy
LmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAg
ICAgICAgICAgICAgICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
Ynl0ZV9sZW5ndGg9c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgZnJhbWVfZGF0YSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGxlbihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVy
cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyB1cGRhdGUgc3RhdGUgYW5kIGVtaXQgaGVhZGVycworICAgICAgICAgICAgaWYgc3RyZWFtLmhl
YWRlcnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgICAg
ICBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9z
dGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICAgICAgaHR0cF9ldmVu
dHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0
cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgc3RyZWFtLmZyYW1l
X3R5cGUgPT0gRnJhbWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9u
ZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAg
cmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNF
IikKKyAgICAgICAgICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCisgICAg
ICAgICAgICBwdXNoX2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAg
aGVhZGVycyA9IHNlbGYuX2RlY29kZV9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbS5z
dHJlYW1faWQsIGZyYW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQorICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2
ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAg
ICAgICAgIGV2ZW50PSJmcmFtZV9wYXJzZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXFs
b2dfZW5jb2RlX3B1c2hfcHJvbWlzZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5
dGVfbGVuZ3RoPWxlbihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnM9aGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbWl0
IGV2ZW50CisgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJz
LCBwdXNoX2lkPXB1c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlBSSU9SSVRZLAorICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNF
TF9QVVNILAorICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCisgICAg
ICAgICAgICBGcmFtZVR5cGUuTUFYX1BVU0hfSUQsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQ
TElDQVRFX1BVU0gsCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0
ZWQoCisgICAgICAgICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVh
bSIKKyAgICAgICAgICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCisgICAgICAgICAg
ICAgICAgZWxzZSAiSW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgorICAgICAgICAg
ICAgKQorCisgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9pbml0X2Nvbm5l
Y3Rpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncworICAgICAg
ICBzZWxmLl9sb2NhbF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFt
KFN0cmVhbVR5cGUuQ09OVFJPTCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRh
KAorICAgICAgICAgICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCisgICAgICAgICAg
ICBlbmNvZGVfZnJhbWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAg
ICAgICAgICAgICAgIGVuY29kZV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNl
bGYuX21heF90YWJsZV9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcu
UVBBQ0tfQkxPQ0tFRF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
IGVuY29kZV9mcmFtZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxm
Ll9tYXhfcHVzaF9pZCkpLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgY3JlYXRlIGVuY29k
ZXIgYW5kIGRlY29kZXIgc3RyZWFtcworICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVh
bV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAgICAgICAgU3RyZWFtVHlwZS5R
UEFDS19FTkNPREVSCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJl
YW1faWQgPSBzZWxmLl9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUu
UVBBQ0tfREVDT0RFUgorICAgICAgICApCisKKyAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9w
dXNoX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBz
dHJlYW1fZW5kZWQ6IGJvb2wKKyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgor
ICAgICAgICBIYW5kbGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0u
CisgICAgICAgICIiIgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisK
KyAgICAgICAgc3RyZWFtLmJ1ZmZlciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoK
KyAgICAgICAgICAgIHN0cmVhbS5lbmRlZCA9IFRydWUKKyAgICAgICAgaWYgc3RyZWFtLmJsb2Nr
ZWQ6CisgICAgICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIHNob3J0Y3V0
IGZvciBEQVRBIGZyYW1lIGZyYWdtZW50cworICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJl
YW0uZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgYW5kIHN0cmVhbS5m
cmFtZV9zaXplIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIp
IDwgc3RyZWFtLmZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIGh0dHBfZXZlbnRz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgIGRhdGE9c3RyZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJl
YW0ucHVzaF9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1f
aWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBs
ZW4oc3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKKyAgICAg
ICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgICAgICMgaGFuZGxlIGxvbmUgRklOCisg
ICAgICAgIGlmIHN0cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6CisgICAgICAgICAg
ICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgICAgICBkYXRhPWIiIiwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1z
dHJlYW0ucHVzaF9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cwor
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1
bWVkID0gMAorCisgICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZl
dGNoIG5leHQgZnJhbWUgaGVhZGVyCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFt
LmZyYW1lX3R5cGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIHN0
cmVhbS5mcmFtZV9zaXplID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4
Y2VwdCBCdWZmZXJSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVp
Y19sb2dnZXIgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFt
ZV90eXBlID09IEZyYW1lVHlwZS5EQVRBCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAg
ICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZy
YW1lX3BhcnNlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2Rh
dGFfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFt
LmZyYW1lX3NpemUsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sg
aG93IG11Y2ggZGF0YSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4o
c3RyZWFtLmZyYW1lX3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQorICAgICAgICAgICAg
aWYgc3RyZWFtLmZyYW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBz
dHJlYW0uZnJhbWVfc2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAj
IHJlYWQgYXZhaWxhYmxlIGRhdGEKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9i
eXRlcyhjaHVua19zaXplKQorICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAg
ICAgICAgICAgICMgZGV0ZWN0IGVuZCBvZiBmcmFtZQorICAgICAgICAgICAgc3RyZWFtLmZyYW1l
X3NpemUgLT0gY2h1bmtfc2l6ZQorICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXpl
OgorICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lX2RhdGE9ZnJhbWVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmVhbT1zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3Ry
ZWFtLmVuZGVkIGFuZCBidWYuZW9mKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6Cisg
ICAgICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc3Ry
ZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQorICAgICAgICAgICAgICAg
IGJyZWFrCisKKyAgICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAg
ICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAg
IHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgK
KyAgICAgICAgc2VsZiwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRl
ZDogYm9vbAorICAgICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgaHR0cF9ldmVudHM6IExp
c3RbSDNFdmVudF0gPSBbXQorCisgICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAg
ICBpZiBzdHJlYW1fZW5kZWQ6CisgICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgY29uc3VtZWQg
PSAwCisgICAgICAgIHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCisKKyAgICAg
ICAgd2hpbGUgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVm
LmVvZigpOgorICAgICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9u
YWwgc3RyZWFtcworICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5
cGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJl
YWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25z
dW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQorICAg
ICAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6
CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVy
cm9yKCJPbmx5IG9uZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNL
X0RFQ09ERVI6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJl
YW1faWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1D
cmVhdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFD
SyBkZWNvZGVyIHN0cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFt
LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0
cmVhbVR5cGUuUVBBQ0tfRU5DT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVl
cl9lbmNvZGVyX3N0cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJhaXNlIFN0cmVhbUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik9ubHkgb25lIFFQQUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJl
YW1faWQgPSBzdHJlYW0uc3RyZWFtX2lkCisKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0
IGZyYW1lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5n
dGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEg
PSBidWYucHVsbF9ieXRlcyhmcmFtZV9sZW5ndGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1
ZmZlclJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9j
b250cm9sX2ZyYW1lKGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbGlmIHN0
cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6CisgICAgICAgICAgICAgICAgIyBm
ZXRjaCBwdXNoIGlkCisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
LnB1c2hfaWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dCBCdWZmZXJSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMg
cmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgICAgICAgICAgc3RyZWFt
LmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVh
bV9lbmRlZCkKKyAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5
cGUuUVBBQ0tfREVDT0RFUjoKKyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0
byBkZWNvZGVyCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBh
Y2l0eSAtIGJ1Zi50ZWxsKCkpCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgp
CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVy
LmZlZWRfZGVjb2RlcihkYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVj
b2RlclN0cmVhbUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tE
ZWNvZGVyU3RyZWFtRXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2RlY29k
ZXJfYnl0ZXNfcmVjZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5z
dHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAg
IyBmZWVkIHVuZnJhbWVkIGRhdGEgdG8gZW5jb2RlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBi
dWYucHVsbF9ieXRlcyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQorICAgICAgICAgICAgICAg
IGNvbnN1bWVkID0gYnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICAgICAgdW5ibG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNv
ZGVyKGRhdGEpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVh
bUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3Ry
ZWFtRXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNf
cmVjZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICMgdW5rbm93biBzdHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCisgICAgICAgICAgICAgICAgYnVm
LnNlZWsoYnVmLmNhcGFjaXR5KQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwo
KQorCisgICAgICAgICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAg
IHN0cmVhbS5idWZmZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAjIHBy
b2Nlc3MgdW5ibG9ja2VkIHN0cmVhbXMKKyAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2Nr
ZWRfc3RyZWFtczoKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRd
CisKKyAgICAgICAgICAgICMgcmVzdW1lIGhlYWRlcnMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRz
LmV4dGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAor
ICAgICAgICAgICAgICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
IHN0cmVhbT1zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0u
ZW5kZWQgYW5kIG5vdCBzdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0
cmVhbS5ibG9ja2VkX2ZyYW1lX3NpemUgPSBOb25lCisKKyAgICAgICAgICAgICMgcmVzdW1lIHBy
b2Nlc3NpbmcKKyAgICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICAgICAg
aHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3Jl
cXVlc3Rfb3JfcHVzaF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCisgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMy9ldmVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QyMWM1YWJjNDI3MGMyZThmMWJlNThhMDA5YWU3
NTI4MTJkMWExNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
My9ldmVudHMucHkKQEAgLTAsMCArMSw2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0
YWNsYXNzCitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK0hlYWRl
cnMgPSBMaXN0W1R1cGxlW2J5dGVzLCBieXRlc11dCisKKworY2xhc3MgSDNFdmVudDoKKyAgICAi
IiIKKyAgICBCYXNlIGNsYXNzIGZvciBIVFRQLzMgZXZlbnRzLgorICAgICIiIgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIERhdGFSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0
YVJlY2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYSBz
dHJlYW0gZnJvbQorICAgIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5
dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBzdHJlYW1faWQ6
IGludAorICAgICJUaGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9y
LiIKKworICAgIHN0cmVhbV9lbmRlZDogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJh
bWUgaGFkIHRoZSBGSU4gYml0IHNldC4iCisKKyAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICJUaGUgUHVzaCBJRCBvciBgTm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIK
KworCitAZGF0YWNsYXNzCitjbGFzcyBIZWFkZXJzUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIEhlYWRlcnNSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBoZWFkZXJz
IGFyZSByZWNlaXZlZC4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhlYWRlcnMKKyAgICAiVGhl
IGhlYWRlcnMuIgorCisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJl
YW0gdGhlIGhlYWRlcnMgd2VyZSByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBi
b29sCisgICAgIldoZXRoZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIK
KworICAgIHB1c2hfaWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9y
IGBOb25lYCBpZiB0aGlzIGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFB1
c2hQcm9taXNlUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFB1c2hlZFN0cmVh
bVJlY2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcHVzaGVkIHN0cmVhbSBoYXMgYmVl
bgorICAgIHJlY2VpdmVkIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICIiIgorCisgICAgaGVh
ZGVyczogSGVhZGVycworICAgICJUaGUgcmVxdWVzdCBoZWFkZXJzLiIKKworICAgIHB1c2hfaWQ6
IGludAorICAgICJUaGUgUHVzaCBJRCBvZiB0aGUgcHVzaCBwcm9taXNlLiIKKworICAgIHN0cmVh
bV9pZDogaW50CisgICAgIlRoZSBTdHJlYW0gSUQgb2YgdGhlIHN0cmVhbSB0aGF0IHRoZSBwdXNo
IGlzIHJlbGF0ZWQgdG8uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gz
L2V4Y2VwdGlvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNTIwMGMxZDYxZmE1YjNhMTE1YjQzNDY0ZDU2N2VhM2FhMjg1NzZmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMu
cHkKQEAgLTAsMCArMSwxMCBAQAorY2xhc3MgSDNFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgor
ICAgIEJhc2UgY2xhc3MgZm9yIEhUVFAvMyBleGNlcHRpb25zLgorICAgICIiIgorCisKK2NsYXNz
IE5vQXZhaWxhYmxlUHVzaElERXJyb3IoSDNFcnJvcik6CisgICAgIiIiCisgICAgVGhlcmUgYXJl
IG5vIGF2YWlsYWJsZSBwdXNoIElEcyBsZWZ0LgorICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2gzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzYzZTliNjA4MGIwZWYzZThi
ZDY4YWE1MzMwMjQ5ZGZmMTIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitE
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZl
bnRzLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9weS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTY0MmY3OWYyMWQ4NzJmMDEwOTc5ZGNm
NmYwYzRhNDE1YWNjMTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3B5LnR5cGVkCkBAIC0wLDAgKzEgQEAKK01hcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcXVpYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvY29uZmlndXJhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L2NvbmZpZ3VyYXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3
ZjNlYTYxZDBkYTA3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL2NvbmZpZ3VyYXRpb24ucHkKQEAgLTAsMCArMSwxMjQgQEAKK2Zyb20gZGF0YWNsYXNz
ZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCitmcm9t
IHR5cGluZyBpbXBvcnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4dElPLCBVbmlvbgorCitmcm9t
IC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9wcml2YXRlX2tleSwgbG9hZF9w
ZW1feDUwOV9jZXJ0aWZpY2F0ZXMKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJv
bSAucGFja2V0IGltcG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCisKKworQGRhdGFjbGFzcworY2xh
c3MgUXVpY0NvbmZpZ3VyYXRpb246CisgICAgIiIiCisgICAgQSBRVUlDIGNvbmZpZ3VyYXRpb24u
CisgICAgIiIiCisKKyAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5v
bmUKKyAgICAiIiIKKyAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFMUE4gcHJvdG9jb2xzLgorICAg
ICIiIgorCisgICAgY29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9IDgKKyAgICAiIiIKKyAgICBU
aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24gSURzLgorICAgICIiIgorCisg
ICAgaWRsZV90aW1lb3V0OiBmbG9hdCA9IDYwLjAKKyAgICAiIiIKKyAgICBUaGUgaWRsZSB0aW1l
b3V0IGluIHNlY29uZHMuCisKKyAgICBUaGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkIGlmIG5v
dGhpbmcgaXMgcmVjZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KKyAgICAiIiIKKworICAg
IGlzX2NsaWVudDogYm9vbCA9IFRydWUKKyAgICAiIiIKKyAgICBXaGV0aGVyIHRoaXMgaXMgdGhl
IGNsaWVudCBzaWRlIG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBtYXhf
ZGF0YTogaW50ID0gMTA0ODU3NgorICAgICIiIgorICAgIENvbm5lY3Rpb24td2lkZSBmbG93IGNv
bnRyb2wgbGltaXQuCisgICAgIiIiCisKKyAgICBtYXhfc3RyZWFtX2RhdGE6IGludCA9IDEwNDg1
NzYKKyAgICAiIiIKKyAgICBQZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIK
KworICAgIHF1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyXSA9IE5vbmUKKyAgICAiIiIK
KyAgICBUaGUgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5RdWljTG9nZ2VyYCBpbnN0YW5j
ZSB0byBsb2cgZXZlbnRzIHRvLgorICAgICIiIgorCisgICAgc2VjcmV0c19sb2dfZmlsZTogVGV4
dElPID0gTm9uZQorICAgICIiIgorICAgIEEgZmlsZS1saWtlIG9iamVjdCBpbiB3aGljaCB0byBs
b2cgdHJhZmZpYyBzZWNyZXRzLgorCisgICAgVGhpcyBpcyB1c2VmdWwgdG8gYW5hbHl6ZSB0cmFm
ZmljIGNhcHR1cmVzIHdpdGggV2lyZXNoYXJrLgorICAgICIiIgorCisgICAgc2VydmVyX25hbWU6
IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgIiIiCisgICAgVGhlIHNlcnZlciBuYW1lIHRvIHNl
bmQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgor
CisgICAgLi4gbm90ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNsaWVudHMuCisgICAgIiIiCisK
KyAgICBzZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAg
IiIiCisgICAgVGhlIFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3Ig
c2Vzc2lvbiByZXN1bXB0aW9uLgorICAgICIiIgorCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRl
c10gPSBOb25lCisgICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNhcGF0aDog
T3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0ZTogQW55ID0gTm9uZQorICAgIGNl
cnRpZmljYXRlX2NoYWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkK
KyAgICBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBw
cml2YXRlX2tleTogQW55ID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzX3Rlc3Q6IGJvb2wg
PSBGYWxzZQorICAgIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdID0gZmllbGQoCisgICAg
ICAgIGRlZmF1bHRfZmFjdG9yeT1sYW1iZGE6IFsKKyAgICAgICAgICAgIFF1aWNQcm90b2NvbFZl
cnNpb24uRFJBRlRfMjcsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI2
LAorICAgICAgICAgICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICAgICAgXQor
ICAgICkKKyAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBs
b2FkX2NlcnRfY2hhaW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNlcnRmaWxlOiBQYXRoTGlr
ZSwKKyAgICAgICAga2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2VdID0gTm9uZSwKKyAgICAgICAg
cGFzc3dvcmQ6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9IE5vbmUsCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29y
cmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3Blbihj
ZXJ0ZmlsZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBsb2FkX3Bl
bV94NTA5X2NlcnRpZmljYXRlcyhmcC5yZWFkKCkpCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGUg
PSBjZXJ0aWZpY2F0ZXNbMF0KKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbiA9IGNlcnRp
ZmljYXRlc1sxOl0KKworICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgd2l0aCBvcGVuKGtleWZpbGUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNlbGYu
cHJpdmF0ZV9rZXkgPSBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAg
ZnAucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZC5lbmNvZGUo
InV0ZjgiKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhc3N3b3JkLCBzdHIp
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgKQor
CisgICAgZGVmIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucygKKyAgICAgICAgc2VsZiwKKyAgICAgICAg
Y2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtz
dHJdID0gTm9uZSwKKyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmlj
YXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvCisgICAgICAgIHZhbGlk
YXRlIG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxm
LmNhZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLmNhcGF0aCA9IGNhcGF0aAorICAgICAgICBz
ZWxmLmNhZGF0YSA9IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5l
Y3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYxZGY0ZmMxOTE2ZmRhM2VmYjQ2MWU2NjczNGVjMzU5YWUw
YzMyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nv
bm5lY3Rpb24ucHkKQEAgLTAsMCArMSwyNjUyIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgb3MKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGRh
dGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorZnJvbSB0
eXBpbmcgaW1wb3J0IEFueSwgRGVxdWUsIERpY3QsIEZyb3plblNldCwgTGlzdCwgT3B0aW9uYWws
IFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uIGltcG9ydCB0bHMKK2Zyb20gLi5idWZmZXIgaW1w
b3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIHNpemVfdWludF92YXIK
K2Zyb20gLiBpbXBvcnQgZXZlbnRzCitmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29u
ZmlndXJhdGlvbgorZnJvbSAuY3J5cHRvIGltcG9ydCBDcnlwdG9FcnJvciwgQ3J5cHRvUGFpciwg
S2V5VW5hdmFpbGFibGVFcnJvcgorZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UK
K2Zyb20gLnBhY2tldCBpbXBvcnQgKAorICAgIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVT
LAorICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAor
ICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFD
S0VUX1RZUEVfWkVST19SVFQsCisgICAgUFJPQklOR19GUkFNRV9UWVBFUywKKyAgICBSRVRSWV9J
TlRFR1JJVFlfVEFHX1NJWkUsCisgICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBl
LAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisgICAgUXVpY1N0cmVhbUZyYW1lLAorICAgIFF1
aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAg
IGdldF9zcGluX2JpdCwKKyAgICBpc19sb25nX2hlYWRlciwKKyAgICBwdWxsX2Fja19mcmFtZSwK
KyAgICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVy
cywKKyAgICBwdXNoX2Fja19mcmFtZSwKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRl
cnMsCispCitmcm9tIC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgKAorICAgIFBBQ0tFVF9NQVhfU0la
RSwKKyAgICBRdWljRGVsaXZlcnlTdGF0ZSwKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAgICBR
dWljUGFja2V0QnVpbGRlclN0b3AsCispCitmcm9tIC5yZWNvdmVyeSBpbXBvcnQgS19HUkFOVUxB
UklUWSwgUXVpY1BhY2tldFJlY292ZXJ5LCBRdWljUGFja2V0U3BhY2UKK2Zyb20gLnN0cmVhbSBp
bXBvcnQgUXVpY1N0cmVhbQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicXVpYyIpCisK
K0VQT0NIX1NIT1JUQ1VUUyA9IHsKKyAgICAiSSI6IHRscy5FcG9jaC5JTklUSUFMLAorICAgICJI
IjogdGxzLkVwb2NoLkhBTkRTSEFLRSwKKyAgICAiMCI6IHRscy5FcG9jaC5aRVJPX1JUVCwKKyAg
ICAiMSI6IHRscy5FcG9jaC5PTkVfUlRULAorfQorTUFYX0VBUkxZX0RBVEEgPSAweEZGRkZGRkZG
CitTRUNSRVRTX0xBQkVMUyA9IFsKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlD
X0NMSUVOVF9FQVJMWV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NMSUVOVF9IQU5E
U0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNS
RVRfMCIsCisgICAgXSwKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgIE5vbmUsCisgICAg
ICAgICJRVUlDX1NFUlZFUl9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJ
Q19TRVJWRVJfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAgXSwKK10KK1NUUkVBTV9GTEFHUyA9IDB4
MDcKKworTmV0d29ya0FkZHJlc3MgPSBBbnkKKworIyBmcmFtZSBzaXplcworQUNLX0ZSQU1FX0NB
UEFDSVRZID0gNjQgICMgRklYTUU6IHRoaXMgaXMgYXJiaXRyYXJ5IQorQVBQTElDQVRJT05fQ0xP
U0VfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCitIQU5EU0hB
S0VfRE9ORV9GUkFNRV9DQVBBQ0lUWSA9IDEKK01BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSAr
IDgKK01BWF9TVFJFQU1fREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOAorTkVXX0NPTk5F
Q1RJT05fSURfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyAxICsgMjAgKyAxNgorUEFUSF9D
SEFMTEVOR0VfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOAorUEFUSF9SRVNQT05TRV9GUkFNRV9DQVBB
Q0lUWSA9IDEgKyA4CitQSU5HX0ZSQU1FX0NBUEFDSVRZID0gMQorUkVUSVJFX0NPTk5FQ1RJT05f
SURfQ0FQQUNJVFkgPSAxICsgOAorU1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZID0gMSArIDgKK1RS
QU5TUE9SVF9DTE9TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDggICMgKyByZWFzb24g
bGVuZ3RoCisKKworZGVmIEVQT0NIUyhzaG9ydGN1dDogc3RyKSAtPiBGcm96ZW5TZXRbdGxzLkVw
b2NoXToKKyAgICByZXR1cm4gZnJvemVuc2V0KEVQT0NIX1NIT1JUQ1VUU1tpXSBmb3IgaSBpbiBz
aG9ydGN1dCkKKworCitkZWYgZHVtcF9jaWQoY2lkOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVy
biBiaW5hc2NpaS5oZXhsaWZ5KGNpZCkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIGdldF9lcG9j
aChwYWNrZXRfdHlwZTogaW50KSAtPiB0bHMuRXBvY2g6CisgICAgaWYgcGFja2V0X3R5cGUgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5JTklUSUFMCisg
ICAgZWxpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9aRVJPX1JUVDoKKyAgICAgICAgcmV0
dXJuIHRscy5FcG9jaC5aRVJPX1JUVAorICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZ
UEVfSEFORFNIQUtFOgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgIGVs
c2U6CisgICAgICAgIHJldHVybiB0bHMuRXBvY2guT05FX1JUVAorCisKK2RlZiBzdHJlYW1faXNf
Y2xpZW50X2luaXRpYXRlZChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBS
ZXR1cm5zIFRydWUgaWYgdGhlIHN0cmVhbSBpcyBjbGllbnQgaW5pdGlhdGVkLgorICAgICIiIgor
ICAgIHJldHVybiBub3QgKHN0cmVhbV9pZCAmIDEpCisKKworZGVmIHN0cmVhbV9pc191bmlkaXJl
Y3Rpb25hbChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRy
dWUgaWYgdGhlIHN0cmVhbSBpcyB1bmlkaXJlY3Rpb25hbC4KKyAgICAiIiIKKyAgICByZXR1cm4g
Ym9vbChzdHJlYW1faWQgJiAyKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uRXJyb3IoRXhjZXB0
aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBl
OiBpbnQsIHJlYXNvbl9waHJhc2U6IHN0cik6CisgICAgICAgIHNlbGYuZXJyb3JfY29kZSA9IGVy
cm9yX2NvZGUKKyAgICAgICAgc2VsZi5mcmFtZV90eXBlID0gZnJhbWVfdHlwZQorICAgICAgICBz
ZWxmLnJlYXNvbl9waHJhc2UgPSByZWFzb25fcGhyYXNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KSAtPiBzdHI6CisgICAgICAgIHMgPSAiRXJyb3I6ICVkLCByZWFzb246ICVzIiAlIChzZWxmLmVy
cm9yX2NvZGUsIHNlbGYucmVhc29uX3BocmFzZSkKKyAgICAgICAgaWYgc2VsZi5mcmFtZV90eXBl
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcyArPSAiLCBmcmFtZV90eXBlOiAlcyIgJSBzZWxm
LmZyYW1lX3R5cGUKKyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkFk
YXB0ZXIobG9nZ2luZy5Mb2dnZXJBZGFwdGVyKToKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBtc2c6
IHN0ciwga3dhcmdzOiBBbnkpIC0+IFR1cGxlW3N0ciwgQW55XToKKyAgICAgICAgcmV0dXJuICJb
JXNdICVzIiAlIChzZWxmLmV4dHJhWyJpZCJdLCBtc2cpLCBrd2FyZ3MKKworCitAZGF0YWNsYXNz
CitjbGFzcyBRdWljQ29ubmVjdGlvbklkOgorICAgIGNpZDogYnl0ZXMKKyAgICBzZXF1ZW5jZV9u
dW1iZXI6IGludAorICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMgPSBiIiIKKyAgICB3
YXNfc2VudDogYm9vbCA9IEZhbHNlCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25TdGF0ZShFbnVt
KToKKyAgICBGSVJTVEZMSUdIVCA9IDAKKyAgICBDT05ORUNURUQgPSAxCisgICAgQ0xPU0lORyA9
IDIKKyAgICBEUkFJTklORyA9IDMKKyAgICBURVJNSU5BVEVEID0gNAorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIFF1aWNOZXR3b3JrUGF0aDoKKyAgICBhZGRyOiBOZXR3b3JrQWRkcmVzcworICAgIGJ5
dGVzX3JlY2VpdmVkOiBpbnQgPSAwCisgICAgYnl0ZXNfc2VudDogaW50ID0gMAorICAgIGlzX3Zh
bGlkYXRlZDogYm9vbCA9IEZhbHNlCisgICAgbG9jYWxfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRl
c10gPSBOb25lCisgICAgcmVtb3RlX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQor
CisgICAgZGVmIGNhbl9zZW5kKHNlbGYsIHNpemU6IGludCkgLT4gYm9vbDoKKyAgICAgICAgcmV0
dXJuIHNlbGYuaXNfdmFsaWRhdGVkIG9yIChzZWxmLmJ5dGVzX3NlbnQgKyBzaXplKSA8PSAzICog
c2VsZi5ieXRlc19yZWNlaXZlZAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNSZWNlaXZlQ29u
dGV4dDoKKyAgICBlcG9jaDogdGxzLkVwb2NoCisgICAgaG9zdF9jaWQ6IGJ5dGVzCisgICAgbmV0
d29ya19wYXRoOiBRdWljTmV0d29ya1BhdGgKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlv
bmFsW0xpc3RbQW55XV0KKyAgICB0aW1lOiBmbG9hdAorCisKK0VORF9TVEFURVMgPSBmcm96ZW5z
ZXQoCisgICAgWworICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcsCisgICAgICAg
IFF1aWNDb25uZWN0aW9uU3RhdGUuRFJBSU5JTkcsCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3Rh
dGUuVEVSTUlOQVRFRCwKKyAgICBdCispCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb246CisgICAg
IiIiCisgICAgQSBRVUlDIGNvbm5lY3Rpb24uCisKKyAgICBUaGUgc3RhdGUgbWFjaGluZSBpcyBk
cml2ZW4gYnkgdGhyZWUga2luZHMgb2Ygc291cmNlczoKKworICAgIC0gdGhlIEFQSSB1c2VyIHJl
cXVlc3RpbmcgZGF0YSB0byBiZSBzZW5kIG91dCAoc2VlIDptZXRoOmBjb25uZWN0YCwKKyAgICAg
IDptZXRoOmBzZW5kX3BpbmdgLCA6bWV0aDpgc2VuZF9kYXRhZ3JhbV9kYXRhYCBhbmQgOm1ldGg6
YHNlbmRfc3RyZWFtX2RhdGFgKQorICAgIC0gZGF0YSBiZWluZyByZWNlaXZlZCBmcm9tIHRoZSBu
ZXR3b3JrIChzZWUgOm1ldGg6YHJlY2VpdmVfZGF0YWdyYW1gKQorICAgIC0gYSB0aW1lciBmaXJp
bmcgKHNlZSA6bWV0aDpgaGFuZGxlX3RpbWVyYCkKKworICAgIDpwYXJhbSBjb25maWd1cmF0aW9u
OiBUaGUgUVVJQyBjb25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjog
UXVpY0NvbmZpZ3VyYXRpb24sCisgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkOiBPcHRpb25h
bFtieXRlc10gPSBOb25lLAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25h
bFtieXRlc10gPSBOb25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25h
bFt0bHMuU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNr
ZXRfaGFuZGxlcjogT3B0aW9uYWxbdGxzLlNlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudDoKKyAgICAg
ICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBp
cyBOb25lCisgICAgICAgICAgICApLCAiQ2Fubm90IHNldCBvcmlnaW5hbF9jb25uZWN0aW9uX2lk
IGZvciBhIGNsaWVudCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZSBpcyBub3QgTm9uZQorICAgICAg
ICAgICAgKSwgIlNTTCBjZXJ0aWZpY2F0ZSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisgICAg
ICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9r
ZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICksICJTU0wgcHJpdmF0ZSBrZXkgaXMgcmVxdWly
ZWQgZm9yIGEgc2VydmVyIgorCisgICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxm
Ll9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9pc19jbGllbnQg
PSBjb25maWd1cmF0aW9uLmlzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Fja19kZWxheSA9IEtf
R1JBTlVMQVJJVFkKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5v
bmUKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQ6IE9wdGlvbmFsW2V2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZF0gPSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fY3J5cHRvczogRGljdFt0bHMuRXBvY2gsIENyeXB0b1BhaXJdID0ge30K
KyAgICAgICAgc2VsZi5fY3J5cHRvX2J1ZmZlcnM6IERpY3RbdGxzLkVwb2NoLCBCdWZmZXJdID0g
e30KKyAgICAgICAgc2VsZi5fY3J5cHRvX3N0cmVhbXM6IERpY3RbdGxzLkVwb2NoLCBRdWljU3Ry
ZWFtXSA9IHt9CisgICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbZXZlbnRzLlF1aWNFdmVudF0g
PSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSA9IEZhbHNlCisgICAg
ICAgIHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ob3N0
X2NpZHMgPSBbCisgICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAg
IGNpZD1vcy51cmFuZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAg
ICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj0wLAorICAgICAgICAgICAgICAgIHN0YXRlbGVz
c19yZXNldF90b2tlbj1vcy51cmFuZG9tKDE2KSwKKyAgICAgICAgICAgICAgICB3YXNfc2VudD1U
cnVlLAorICAgICAgICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBz
ZWxmLl9ob3N0X2NpZHNbMF0uY2lkCisgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSA9IDEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9s
b2NhbF9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9IDgKKyAgICAgICAgc2VsZi5fbG9jYWxf
bWF4X2RhdGEgPSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21h
eF9kYXRhX3NlbnQgPSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2Fs
X21heF9kYXRhX3VzZWQgPSAwCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9i
aWRpX2xvY2FsID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gY29uZmlndXJhdGlvbi5tYXhfc3Ry
ZWFtX2RhdGEKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IGNvbmZp
Z3VyYXRpb24ubWF4X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1z
X2JpZGkgPSAxMjgKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pID0gMTI4Cisg
ICAgICAgIHNlbGYuX2xvc3NfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5fbmV0d29ya19wYXRoczogTGlzdFtRdWljTmV0d29ya1BhdGhdID0gW10KKyAgICAgICAgc2Vs
Zi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAg
ICAgc2VsZi5fcGFjaW5nX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYu
X3BhY2tldF9udW1iZXIgPSAwCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBG
YWxzZQorICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IG9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5j
b25uZWN0aW9uX2lkX2xlbmd0aCkKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6IExpc3RbUXVp
Y0Nvbm5lY3Rpb25JZF0gPSBbXQorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gYiIiCisgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZQor
ICAgICAgICBzZWxmLl9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxm
Ll9yZW1vdGVfYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAwCisgICAgICAgIHNlbGYuX3Jl
bW90ZV9pZGxlX3RpbWVvdXQgPSAwLjAgICMgc2Vjb25kcworICAgICAgICBzZWxmLl9yZW1vdGVf
bWF4X2RhdGEgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkID0gMAorICAg
ICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0g
PSBOb25lCisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCA9
IDAKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IDAK
KyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkgPSAwCisgICAgICAgIHNl
bGYuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4
X3N0cmVhbXNfdW5pID0gMAorICAgICAgICBzZWxmLl9zcGFjZXM6IERpY3RbdGxzLkVwb2NoLCBR
dWljUGFja2V0U3BhY2VdID0ge30KKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBGYWxzZQorICAg
ICAgICBzZWxmLl9zcGluX2hpZ2hlc3RfcG4gPSAwCisgICAgICAgIHNlbGYuX3N0YXRlID0gUXVp
Y0Nvbm5lY3Rpb25TdGF0ZS5GSVJTVEZMSUdIVAorICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0
cnlfY291bnQgPSAwCisgICAgICAgIHNlbGYuX3N0cmVhbXM6IERpY3RbaW50LCBRdWljU3RyZWFt
XSA9IHt9CisgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOiBMaXN0W1F1aWNTdHJl
YW1dID0gW10KKyAgICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaTogTGlzdFtRdWljU3Ry
ZWFtXSA9IFtdCisgICAgICAgIHNlbGYuX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisK
KyAgICAgICAgIyBsb2dnaW5nCisgICAgICAgIGlmIGxvZ2dlcl9jb25uZWN0aW9uX2lkIGlzIE5v
bmU6CisgICAgICAgICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisg
ICAgICAgIHNlbGYuX2xvZ2dlciA9IFF1aWNDb25uZWN0aW9uQWRhcHRlcigKKyAgICAgICAgICAg
IGxvZ2dlciwgeyJpZCI6IGR1bXBfY2lkKGxvZ2dlcl9jb25uZWN0aW9uX2lkKX0KKyAgICAgICAg
KQorICAgICAgICBpZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyOgorICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIgPSBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnN0YXJ0X3RyYWNlKAor
ICAgICAgICAgICAgICAgIGlzX2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9
bG9nZ2VyX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvc3MgcmVj
b3ZlcnkKKyAgICAgICAgc2VsZi5fbG9zcyA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAg
ICAgIGlzX2NsaWVudF93aXRob3V0XzFydHQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAg
cXVpY19sb2dnZXI9c2VsZi5fcXVpY19sb2dnZXIsCisgICAgICAgICAgICBzZW5kX3Byb2JlPXNl
bGYuX3NlbmRfcHJvYmUsCisgICAgICAgICkKKworICAgICAgICAjIHRoaW5ncyB0byBzZW5kCisg
ICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXNfcGVuZGluZzogRGVxdWVbYnl0ZXNdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9oYW5kc2hh
a2VfZG9uZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nOiBMaXN0
W2ludF0gPSBbXQorICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAg
c2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzOiBMaXN0W2ludF0gPSBbXQorICAgICAgICBzZWxm
Ll9zdHJlYW1zX2Jsb2NrZWRfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxsYmFja3MK
KyAgICAgICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2Zl
dGNoZXIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlj
a2V0X2hhbmRsZXIKKworICAgICAgICAjIGZyYW1lIGhhbmRsZXJzCisgICAgICAgIHNlbGYuX19m
cmFtZV9oYW5kbGVycyA9IHsKKyAgICAgICAgICAgIDB4MDA6IChzZWxmLl9oYW5kbGVfcGFkZGlu
Z19mcmFtZSwgRVBPQ0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMTogKHNlbGYuX2hhbmRs
ZV9waW5nX2ZyYW1lLCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAweDAyOiAoc2VsZi5f
aGFuZGxlX2Fja19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDAzOiAoc2Vs
Zi5faGFuZGxlX2Fja19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA0OiAo
c2VsZi5faGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAg
ICAgIDB4MDU6IChzZWxmLl9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lLCBFUE9DSFMoIjAxIikp
LAorICAgICAgICAgICAgMHgwNjogKHNlbGYuX2hhbmRsZV9jcnlwdG9fZnJhbWUsIEVQT0NIUygi
SUgxIikpLAorICAgICAgICAgICAgMHgwNzogKHNlbGYuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUs
IEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MDg6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2Zy
YW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwOTogKHNlbGYuX2hhbmRsZV9zdHJl
YW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBBOiAoc2VsZi5faGFuZGxl
X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEI6IChzZWxmLl9o
YW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQzogKHNl
bGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBE
OiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAg
IDB4MEU6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICAgICAgMHgwRjogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisg
ICAgICAgICAgICAweDEwOiAoc2VsZi5faGFuZGxlX21heF9kYXRhX2ZyYW1lLCBFUE9DSFMoIjAx
IikpLAorICAgICAgICAgICAgMHgxMTogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJh
bWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEyOiAoc2VsZi5faGFuZGxlX21heF9z
dHJlYW1zX2JpZGlfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEzOiAoc2Vs
Zi5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAg
ICAgIDB4MTQ6IChzZWxmLl9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikp
LAorICAgICAgICAgICAgMHgxNTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2Zy
YW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxNjogKHNlbGYuX2hhbmRsZV9zdHJl
YW1zX2Jsb2NrZWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE3OiAoc2Vs
Zi5faGFuZGxlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAg
ICAgIDB4MTg6IChzZWxmLl9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygi
MDEiKSksCisgICAgICAgICAgICAweDE5OiAoc2VsZi5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9u
X2lkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQTogKHNlbGYuX2hhbmRs
ZV9wYXRoX2NoYWxsZW5nZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUI6
IChzZWxmLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAg
ICAgICAgIDB4MUM6IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hT
KCJJSDEiKSksCisgICAgICAgICAgICAweDFEOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xv
c2VfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MUU6IChzZWxmLl9oYW5kbGVf
aGFuZHNoYWtlX2RvbmVfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MzA6IChz
ZWxmLl9oYW5kbGVfZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDMxOiAoc2VsZi5faGFuZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICB9CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29uZmlndXJhdGlvbihzZWxmKSAtPiBRdWlj
Q29uZmlndXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZ3VyYXRpb24KKworICAg
IGRlZiBjaGFuZ2VfY29ubmVjdGlvbl9pZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU3dpdGNoIHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBjb25uZWN0aW9uIElEIGFuZCByZXRp
cmUKKyAgICAgICAgdGhlIHByZXZpb3VzIG9uZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRo
aXMgbWV0aG9kIGNhbGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRh
CisgICAgICAgIHdoaWNoIG5lZWRzIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorICAgICAgICBp
ZiBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6CisgICAgICAgICAgICAjIHJldGlyZSBwcmV2aW91
cyBDSUQKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAi
UmV0aXJpbmcgQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3Bl
ZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5l
Y3Rpb25faWRzLmFwcGVuZChzZWxmLl9wZWVyX2NpZF9zZXEpCisKKyAgICAgICAgICAgICMgYXNz
aWduIG5ldyBDSUQKKyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZF9h
dmFpbGFibGUucG9wKDApCisgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSBjb25uZWN0
aW9uX2lkLnNlcXVlbmNlX251bWJlcgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBjb25u
ZWN0aW9uX2lkLmNpZAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAg
ICAgICAgICJTd2l0Y2hpbmcgdG8gQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2Np
ZCksIHNlbGYuX3BlZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKAor
ICAgICAgICBzZWxmLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQgPSBRdWljRXJyb3JDb2RlLk5P
X0VSUk9SLAorICAgICAgICBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAg
ICAgcmVhc29uX3BocmFzZTogc3RyID0gIiIsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgQ2xvc2UgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgOnBhcmFtIGVycm9yX2Nv
ZGU6IEFuIGVycm9yIGNvZGUgaW5kaWNhdGluZyB3aHkgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGNsb3NlZC4KKyAgICAgICAgOnBhcmFtIHJlYXNv
bl9waHJhc2U6IEEgaHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2Ygd2h5IHRoZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAg
ICAgICAgIHNlbGYuX2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFz
b25fcGhyYXNlLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGlu
ZyA9IFRydWUKKworICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBu
b3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRM
UyBoYW5kc2hha2UuCisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZv
ciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0aW1lLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhp
cyBtZXRob2QgY2FsbCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEK
KyAgICAgICAgd2hpY2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gYWRkcjog
VGhlIG5ldHdvcmsgYWRkcmVzcyBvZiB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgIDpwYXJhbSBu
b3c6IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgKAorICAg
ICAgICAgICAgc2VsZi5faXNfY2xpZW50IGFuZCBub3Qgc2VsZi5fY29ubmVjdF9jYWxsZWQKKyAg
ICAgICAgKSwgImNvbm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEg
c2luZ2xlIHRpbWUiCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gVHJ1ZQorCisgICAg
ICAgIHNlbGYuX25ldHdvcmtfcGF0aHMgPSBbUXVpY05ldHdvcmtQYXRoKGFkZHIsIGlzX3ZhbGlk
YXRlZD1UcnVlKV0KKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24u
c3VwcG9ydGVkX3ZlcnNpb25zWzBdCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKwor
ICAgIGRlZiBkYXRhZ3JhbXNfdG9fc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBMaXN0W1R1cGxl
W2J5dGVzLCBOZXR3b3JrQWRkcmVzc11dOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEg
bGlzdCBvZiBgKGRhdGEsIGFkZHIpYCB0dXBsZXMgb2YgZGF0YWdyYW1zIHdoaWNoIG5lZWQgdG8g
YmUKKyAgICAgICAgc2VudCwgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MgdG8gd2hpY2ggdGhleSBu
ZWVkIHRvIGJlIHNlbnQuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxs
IDptZXRoOmBnZXRfdGltZXJgIHRvIGtub3cgd2hlbiB0aGUgbmV4dAorICAgICAgICB0aW1lciBu
ZWVkcyB0byBiZSBzZXQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4K
KyAgICAgICAgIiIiCisgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX25ldHdvcmtfcGF0aHNb
MF0KKworICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAg
cmV0dXJuIFtdCisKKyAgICAgICAgIyBidWlsZCBkYXRhZ3JhbXMKKyAgICAgICAgYnVpbGRlciA9
IFF1aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9c2VsZi5ob3N0X2NpZCwK
KyAgICAgICAgICAgIGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBwYWNr
ZXRfbnVtYmVyPXNlbGYuX3BhY2tldF9udW1iZXIsCisgICAgICAgICAgICBwZWVyX2NpZD1zZWxm
Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIHBlZXJfdG9rZW49c2VsZi5fcGVlcl90b2tlbiwKKyAg
ICAgICAgICAgIHF1aWNfbG9nZ2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc3Bp
bl9iaXQ9c2VsZi5fc3Bpbl9iaXQsCisgICAgICAgICAgICB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24s
CisgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAg
IGZvciBlcG9jaCwgcGFja2V0X3R5cGUgaW4gKAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2gu
T05FX1JUVCwgUEFDS0VUX1RZUEVfT05FX1JUVCksCisgICAgICAgICAgICAgICAgKHRscy5FcG9j
aC5IQU5EU0hBS0UsIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSksCisgICAgICAgICAgICAgICAgKHRs
cy5FcG9jaC5JTklUSUFMLCBQQUNLRVRfVFlQRV9JTklUSUFMKSwKKyAgICAgICAgICAgICk6Cisg
ICAgICAgICAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAg
ICAgICBpZiBjcnlwdG8uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgICAgICAgICBidWls
ZGVyLnN0YXJ0X3BhY2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl93cml0ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlcj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29k
ZT1zZWxmLl9jbG9zZV9ldmVudC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1zZWxmLl9jbG9zZV9ldmVudC5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhc29uX3BocmFzZT1zZWxmLl9jbG9zZV9ldmVudC5yZWFzb25fcGhyYXNlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3Bl
bmRpbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2Vs
Zi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9yPVRydWUsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgYnVpbGRlci5t
YXhfZmxpZ2h0X2J5dGVzID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuY29uZ2VzdGlv
bl93aW5kb3cgLSBzZWxmLl9sb3NzLmJ5dGVzX2luX2ZsaWdodAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgc2VsZi5fcHJvYmVfcGVuZGluZyBhbmQgYnVpbGRlci5tYXhfZmxpZ2h0X2J5
dGVzIDwgUEFDS0VUX01BWF9TSVpFOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdo
dF9ieXRlcyA9IFBBQ0tFVF9NQVhfU0laRQorCisgICAgICAgICAgICAjIGxpbWl0IGRhdGEgb24g
dW4tdmFsaWRhdGVkIG5ldHdvcmsgcGF0aHMKKyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3Bh
dGguaXNfdmFsaWRhdGVkOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVz
ID0gKAorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKiAz
IC0gbmV0d29ya19wYXRoLmJ5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1l
ZDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGVwb2NoIGluIFt0bHMuRXBvY2guSU5JVElBTCwg
dGxzLkVwb2NoLkhBTkRTSEFLRV06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9oYW5kc2hha2UoYnVpbGRlciwgZXBvY2gsIG5vdykKKyAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9hcHBsaWNhdGlvbihidWlsZGVyLCBuZXR3b3JrX3BhdGgsIG5vdykKKyAgICAgICAgICAg
IGV4Y2VwdCBRdWljUGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgcGFzcworCisg
ICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorCisgICAgICAgIGlm
IGRhdGFncmFtczoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgPSBidWlsZGVyLnBh
Y2tldF9udW1iZXIKKworICAgICAgICAgICAgIyByZWdpc3RlciBwYWNrZXRzCisgICAgICAgICAg
ICBzZW50X2hhbmRzaGFrZSA9IEZhbHNlCisgICAgICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tl
dHM6CisgICAgICAgICAgICAgICAgcGFja2V0LnNlbnRfdGltZSA9IG5vdworICAgICAgICAgICAg
ICAgIHNlbGYuX2xvc3Mub25fcGFja2V0X3NlbnQoCisgICAgICAgICAgICAgICAgICAgIHBhY2tl
dD1wYWNrZXQsIHNwYWNlPXNlbGYuX3NwYWNlc1twYWNrZXQuZXBvY2hdCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgIGlmIHBhY2tldC5lcG9jaCA9PSB0bHMuRXBvY2guSEFORFNI
QUtFOgorICAgICAgICAgICAgICAgICAgICBzZW50X2hhbmRzaGFrZSA9IFRydWUKKworICAgICAg
ICAgICAgICAgICMgbG9nIHBhY2tldAorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5s
b2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfc2VudCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0
X3R5cGUiOiBzZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFja2V0LnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXQucGFj
a2V0X251bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6
ZSI6IHBhY2tldC5zZW50X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2NpZCI6IGR1bXBfY2lkKHNlbGYuaG9zdF9jaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGlzX2xvbmdfaGVhZGVyKHBhY2tldC5wYWNrZXRfdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRjaWQiOiBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcGFj
a2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBjYW4gZGlzY2Fy
ZCBpbml0aWFsIGtleXMKKyAgICAgICAgICAgIGlmIHNlbnRfaGFuZHNoYWtlIGFuZCBzZWxmLl9p
c19jbGllbnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2gu
SU5JVElBTCkKKworICAgICAgICAjIHJldHVybiBkYXRhZ3JhbXMgdG8gc2VuZCBhbmQgdGhlIGRl
c3RpbmF0aW9uIG5ldHdvcmsgYWRkcmVzcworICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3Ig
ZGF0YWdyYW0gaW4gZGF0YWdyYW1zOgorICAgICAgICAgICAgYnl0ZV9sZW5ndGggPSBsZW4oZGF0
YWdyYW0pCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudCArPSBieXRlX2xlbmd0
aAorICAgICAgICAgICAgcmV0LmFwcGVuZCgoZGF0YWdyYW0sIG5ldHdvcmtfcGF0aC5hZGRyKSkK
KworICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAg
ICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFn
cmFtc19zZW50IiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogYnl0
ZV9sZW5ndGgsICJjb3VudCI6IDF9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJu
IHJldAorCisgICAgZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5p
ZGlyZWN0aW9uYWw9RmFsc2UpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0
aGUgc3RyZWFtIElEIGZvciB0aGUgbmV4dCBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGVuZHBvaW50
LgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0gKGludChpc191bmlkaXJlY3Rpb25h
bCkgPDwgMSkgfCBpbnQobm90IHNlbGYuX2lzX2NsaWVudCkKKyAgICAgICAgd2hpbGUgc3RyZWFt
X2lkIGluIHNlbGYuX3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW1faWQgKz0gNAorICAgICAg
ICByZXR1cm4gc3RyZWFtX2lkCisKKyAgICBkZWYgZ2V0X3RpbWVyKHNlbGYpIC0+IE9wdGlvbmFs
W2Zsb2F0XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0
aGUgdGltZXIgc2hvdWxkIGZpcmUgb3IgTm9uZSBpZiBubyB0aW1lciBpcyBuZWVkZWQuCisgICAg
ICAgICIiIgorICAgICAgICB0aW1lcl9hdCA9IHNlbGYuX2Nsb3NlX2F0CisgICAgICAgIGlmIHNl
bGYuX3N0YXRlIG5vdCBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgIyBhY2sgdGltZXIKKyAg
ICAgICAgICAgIGZvciBzcGFjZSBpbiBzZWxmLl9sb3NzLnNwYWNlczoKKyAgICAgICAgICAgICAg
ICBpZiBzcGFjZS5hY2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8IHRpbWVyX2F0
OgorICAgICAgICAgICAgICAgICAgICB0aW1lcl9hdCA9IHNwYWNlLmFja19hdAorCisgICAgICAg
ICAgICAjIGxvc3MgZGV0ZWN0aW9uIHRpbWVyCisgICAgICAgICAgICBzZWxmLl9sb3NzX2F0ID0g
c2VsZi5fbG9zcy5nZXRfbG9zc19kZXRlY3Rpb25fdGltZSgpCisgICAgICAgICAgICBpZiBzZWxm
Ll9sb3NzX2F0IGlzIG5vdCBOb25lIGFuZCBzZWxmLl9sb3NzX2F0IDwgdGltZXJfYXQ6CisgICAg
ICAgICAgICAgICAgdGltZXJfYXQgPSBzZWxmLl9sb3NzX2F0CisKKyAgICAgICAgICAgICMgcGFj
aW5nIHRpbWVyCisgICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90IE5vbmUgYW5k
IHNlbGYuX3BhY2luZ19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0g
c2VsZi5fcGFjaW5nX2F0CisKKyAgICAgICAgcmV0dXJuIHRpbWVyX2F0CisKKyAgICBkZWYgaGFu
ZGxlX3RpbWVyKHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBIYW5kbGUgdGhlIHRpbWVyLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2Qg
Y2FsbCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAg
d2hpY2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVu
dCB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgIyBlbmQgb2YgY2xvc2luZyBwZXJpb2Qgb3Ig
aWRsZSB0aW1lb3V0CisgICAgICAgIGlmIG5vdyA+PSBzZWxmLl9jbG9zZV9hdDoKKyAgICAgICAg
ICAgIGlmIHNlbGYuX2Nsb3NlX2V2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5f
Y2xvc2VfZXZlbnQgPSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAg
ICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPSJJZGxlIHRpbWVvdXQiLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGxvc3MgZGV0
ZWN0aW9uIHRpbWVvdXQKKyAgICAgICAgaWYgc2VsZi5fbG9zc19hdCBpcyBub3QgTm9uZSBhbmQg
bm93ID49IHNlbGYuX2xvc3NfYXQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkxv
c3MgZGV0ZWN0aW9uIHRyaWdnZXJlZCIpCisgICAgICAgICAgICBzZWxmLl9sb3NzLm9uX2xvc3Nf
ZGV0ZWN0aW9uX3RpbWVvdXQobm93PW5vdykKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpIC0+
IE9wdGlvbmFsW2V2ZW50cy5RdWljRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0cmll
dmUgdGhlIG5leHQgZXZlbnQgZnJvbSB0aGUgZXZlbnQgYnVmZmVyLgorCisgICAgICAgIFJldHVy
bnMgYE5vbmVgIGlmIHRoZXJlIGFyZSBubyBidWZmZXJlZCBldmVudHMuCisgICAgICAgICIiIgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcGxlZnQoKQor
ICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICBkZWYgcmVjZWl2ZV9kYXRhZ3JhbShzZWxmLCBkYXRhOiBieXRlcywgYWRkcjogTmV0d29ya0Fk
ZHJlc3MsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUg
YW4gaW5jb21pbmcgZGF0YWdyYW0uCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhv
ZCBjYWxsIDptZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAg
ICB3aGljaCBuZWVkcyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0
YWdyYW0gd2hpY2ggd2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdv
cmsgYWRkcmVzcyBmcm9tIHdoaWNoIHRoZSBkYXRhZ3JhbSB3YXMgcmVjZWl2ZWQuCisgICAgICAg
IDpwYXJhbSBub3c6IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIHN0
b3AgaGFuZGxpbmcgcGFja2V0cyB3aGVuIGNsb3NpbmcKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUg
aW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9n
X2V2ZW50KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAg
ICAgICAgIGV2ZW50PSJkYXRhZ3JhbXNfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9
eyJieXRlX2xlbmd0aCI6IGxlbihkYXRhKSwgImNvdW50IjogMX0sCisgICAgICAgICAgICApCisK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5l
b2YoKToKKyAgICAgICAgICAgIHN0YXJ0X29mZiA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAg
ICAgICAgICAgICBidWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5l
Y3Rpb25faWRfbGVuZ3RoCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hlY2sg
ZGVzdGluYXRpb24gQ0lEIG1hdGNoZXMKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXE6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBz
ZWxmLl9ob3N0X2NpZHM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlc3RpbmF0aW9uX2Np
ZCA9PSBjb25uZWN0aW9uX2lkLmNpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25f
Y2lkX3NlcSA9IGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIGRlc3RpbmF0aW9u
X2NpZF9zZXEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2
ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YT17InRyaWdnZXIiOiAidW5rbm93bl9jb25uZWN0aW9uX2lkIn0sCisg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAg
ICAgIyBjaGVjayBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAg
ICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3N0YXRlID09
IFF1aWNDb25uZWN0aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgICAgICAgICBhbmQgaGVh
ZGVyLnZlcnNpb24gPT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTgorICAgICAgICAg
ICAgKToKKyAgICAgICAgICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAg
ICAgICB2ZXJzaW9ucyA9IFtdCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToK
KyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKGJ1Zi5wdWxsX3VpbnQzMigpKQor
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50PSJwYWNrZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInZlcnNpb25fbmVn
b3RpYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJj
ZV9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lk
KGhlYWRlci5kZXN0aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNv
bW1vbiA9IHNldChzZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucykuaW50ZXJz
ZWN0aW9uKAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucworICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICAgICBpZiBub3QgY29tbW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24i
KQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vy
cm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNvdWxkIG5v
dCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xW
ZXJzaW9uKG1heChjb21tb24pKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJS
ZXRyeWluZyB3aXRoICVzIiwgc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9j
b25uZWN0KG5vdz1ub3cpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlm
ICgKKyAgICAgICAgICAgICAgICBoZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAg
ICAgICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBw
b3J0ZWRfdmVyc2lvbnMKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgIyB1bnN1cHBv
cnRlZCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eyJ0cmlnZ2VyIjogInVuc3VwcG9ydGVkX3ZlcnNpb24ifSwKKyAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBz
ZWxmLl9pc19jbGllbnQgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRS
WToKKyAgICAgICAgICAgICAgICAjIGNhbGN1bGF0ZSBzdGF0ZWxlc3MgcmV0cnkgaW50ZWdyaXR5
IHRhZworICAgICAgICAgICAgICAgIGludGVncml0eV90YWcgPSBnZXRfcmV0cnlfaW50ZWdyaXR5
X3RhZygKKyAgICAgICAgICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uoc3RhcnRfb2ZmLCBidWYu
dGVsbCgpIC0gUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYg
KAorICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IHNlbGYuaG9z
dF9jaWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGhlYWRlci5pbnRlZ3JpdHlfdGFnID09IGlu
dGVncml0eV90YWcKKyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zdGF0ZWxlc3Nf
cmV0cnlfY291bnQKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInJldHJ5IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3Bl
ZXJfY2lkCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJj
ZV9jaWQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGhlYWRlci50b2tl
bgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgKz0gMQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUGVyZm9ybWluZyBzdGF0ZWxl
c3MgcmV0cnkiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYu
X2ZpbmRfbmV0d29ya19wYXRoKGFkZHIpCisKKyAgICAgICAgICAgICMgc2VydmVyIGluaXRpYWxp
emF0aW9uCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9zdGF0
ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIGFz
c2VydCAoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRf
VFlQRV9JTklUSUFMCisgICAgICAgICAgICAgICAgKSwgImZpcnN0IHBhY2tldCBtdXN0IGJlIElO
SVRJQUwiCisgICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtuZXR3b3JrX3Bh
dGhdCisgICAgICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24o
aGVhZGVyLnZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZShoZWFkZXIu
ZGVzdGluYXRpb25fY2lkKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBjcnlwdG8gYW5kIHBh
Y2tldCBzcGFjZQorICAgICAgICAgICAgZXBvY2ggPSBnZXRfZXBvY2goaGVhZGVyLnBhY2tldF90
eXBlKQorICAgICAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAg
ICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5aRVJPX1JUVDoKKyAgICAgICAgICAgICAgICBzcGFj
ZSA9IHNlbGYuX3NwYWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgICAg
ICMgZGVjcnlwdCBwYWNrZXQKKyAgICAgICAgICAgIGVuY3J5cHRlZF9vZmYgPSBidWYudGVsbCgp
IC0gc3RhcnRfb2ZmCisgICAgICAgICAgICBlbmRfb2ZmID0gYnVmLnRlbGwoKSArIGhlYWRlci5y
ZXN0X2xlbmd0aAorICAgICAgICAgICAgYnVmLnNlZWsoZW5kX29mZikKKworICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0
X251bWJlciA9IGNyeXB0by5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZGF0
YVtzdGFydF9vZmY6ZW5kX29mZl0sIGVuY3J5cHRlZF9vZmYsIHNwYWNlLmV4cGVjdGVkX3BhY2tl
dF9udW1iZXIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgS2V5VW5hdmFp
bGFibGVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4
YykKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAg
ICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YT17InRyaWdnZXIiOiAia2V5X3VuYXZhaWxhYmxlIn0sCisgICAgICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IENyeXB0b0Vycm9y
IGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
PSJwYWNrZXRfZHJvcHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dl
ciI6ICJwYXlsb2FkX2RlY3J5cHRfZXJyb3IifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgY2hlY2sgcmVzZXJ2ZWQgYml0
cworICAgICAgICAgICAgaWYgaGVhZGVyLmlzX2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAg
IHJlc2VydmVkX21hc2sgPSAweDBDCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IHJlc2VydmVkX21hc2sgPSAweDE4CisgICAgICAgICAgICBpZiBwbGFpbl9oZWFkZXJbMF0gJiBy
ZXNlcnZlZF9tYXNrOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAg
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyByYWlzZSBleHBlY3Rl
ZCBwYWNrZXQgbnVtYmVyCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UuZXhw
ZWN0ZWRfcGFja2V0X251bWJlcjoKKyAgICAgICAgICAgICAgICBzcGFjZS5leHBlY3RlZF9wYWNr
ZXRfbnVtYmVyID0gcGFja2V0X251bWJlciArIDEKKworICAgICAgICAgICAgIyBsb2cgcGFja2V0
CisgICAgICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0g
Tm9uZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgcXVpY19sb2dnZXJfZnJhbWVzID0gW10KKyAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0
cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2VpdmVkIiwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAicGFj
a2V0X3R5cGUiOiBzZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXIucGFja2V0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldF9udW1iZXIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IGVuZF9vZmYgLSBzdGFydF9vZmYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVz
dGluYXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBf
Y2lkKGhlYWRlci5zb3VyY2VfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkaXNj
YXJkIGluaXRpYWwga2V5cyBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5faXNfY2xpZW50IGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwpCisKKyAgICAgICAg
ICAgICMgdXBkYXRlIHN0YXRlCisgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NpZF9zZXEgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lk
CisgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gMAorCisgICAgICAgICAgICBp
ZiBzZWxmLl9zdGF0ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkK
KworICAgICAgICAgICAgIyB1cGRhdGUgc3BpbiBiaXQKKyAgICAgICAgICAgIGlmIG5vdCBoZWFk
ZXIuaXNfbG9uZ19oZWFkZXIgYW5kIHBhY2tldF9udW1iZXIgPiBzZWxmLl9zcGluX2hpZ2hlc3Rf
cG46CisgICAgICAgICAgICAgICAgc3Bpbl9iaXQgPSBnZXRfc3Bpbl9iaXQocGxhaW5faGVhZGVy
WzBdKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBub3Qgc3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAg
ICAgICAgICAgc2VsZi5fc3Bpbl9oaWdoZXN0X3BuID0gcGFja2V0X251bWJlcgorCisgICAgICAg
ICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhdGVnb3J5PSJjb25uZWN0aXZpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQ9InNwaW5fYml0X3VwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InN0
YXRlIjogc2VsZi5fc3Bpbl9iaXR9LAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgICMgaGFuZGxlIHBheWxvYWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBRdWljUmVjZWl2ZUNv
bnRleHQoCisgICAgICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICAgICAgaG9z
dF9jaWQ9aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3Bh
dGg9bmV0d29ya19wYXRoLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1xdWlj
X2xvZ2dlcl9mcmFtZXMsCisgICAgICAgICAgICAgICAgdGltZT1ub3csCisgICAgICAgICAgICAp
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNf
cHJvYmluZyA9IHNlbGYuX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHBsYWluX3BheWxvYWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNl
cHQgUXVpY0Nvbm5lY3Rpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLndhcm5pbmcoZXhjKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lX3R5cGU9ZXhjLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9w
aHJhc2U9ZXhjLnJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
aWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRFUyBvciBzZWxmLl9jbG9zZV9wZW5kaW5nOgorICAg
ICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIHVwZGF0ZSBpZGxlIHRpbWVvdXQK
KyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5p
ZGxlX3RpbWVvdXQKKworICAgICAgICAgICAgIyBoYW5kbGUgbWlncmF0aW9uCisgICAgICAgICAg
ICBpZiAoCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAg
ICAgIGFuZCBjb250ZXh0Lmhvc3RfY2lkICE9IHNlbGYuaG9zdF9jaWQKKyAgICAgICAgICAgICAg
ICBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLk9ORV9SVFQKKyAgICAgICAgICAgICk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBz
d2l0Y2hpbmcgdG8gQ0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChj
b250ZXh0Lmhvc3RfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3Nl
cSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NpZCA9IGNv
bnRleHQuaG9zdF9jaWQKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZV9jb25uZWN0aW9uX2lk
KCkKKworICAgICAgICAgICAgIyB1cGRhdGUgbmV0d29yayBwYXRoCisgICAgICAgICAgICBpZiBu
b3QgbmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRT
SEFLRToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAg
ICAgICAgICJOZXR3b3JrIHBhdGggJXMgdmFsaWRhdGVkIGJ5IGhhbmRzaGFrZSIsIG5ldHdvcmtf
cGF0aC5hZGRyCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0
aC5pc192YWxpZGF0ZWQgPSBUcnVlCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVj
ZWl2ZWQgKz0gZW5kX29mZiAtIHN0YXJ0X29mZgorICAgICAgICAgICAgaWYgbmV0d29ya19wYXRo
IG5vdCBpbiBzZWxmLl9uZXR3b3JrX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdv
cmtfcGF0aHMuYXBwZW5kKG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlkeCA9IHNlbGYuX25l
dHdvcmtfcGF0aHMuaW5kZXgobmV0d29ya19wYXRoKQorICAgICAgICAgICAgaWYgaWR4IGFuZCBu
b3QgaXNfcHJvYmluZyBhbmQgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRf
cGFja2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRo
ICVzIHByb21vdGVkIiwgbmV0d29ya19wYXRoLmFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5f
bmV0d29ya19wYXRocy5wb3AoaWR4KQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0
aHMuaW5zZXJ0KDAsIG5ldHdvcmtfcGF0aCkKKworICAgICAgICAgICAgIyByZWNvcmQgcGFja2V0
IGFzIHJlY2VpdmVkCisgICAgICAgICAgICBpZiBub3Qgc3BhY2UuZGlzY2FyZGVkOgorICAgICAg
ICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tl
dDoKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSBw
YWNrZXRfbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRf
dGltZSA9IG5vdworICAgICAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5hZGQocGFja2V0X251
bWJlcikKKyAgICAgICAgICAgICAgICBpZiBpc19hY2tfZWxpY2l0aW5nIGFuZCBzcGFjZS5hY2tf
YXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UuYWNrX2F0ID0gbm93ICsgc2Vs
Zi5fYWNrX2RlbGF5CisKKyAgICBkZWYgcmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBSZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlv
biBrZXlzLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2hhbmRzaGFrZV9jb21w
bGV0ZSwgImNhbm5vdCBjaGFuZ2Uga2V5IGJlZm9yZSBoYW5kc2hha2UgY29tcGxldGVzIgorICAg
ICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXS51cGRhdGVfa2V5KCkKKworICAg
IGRlZiBzZW5kX3Bpbmcoc2VsZiwgdWlkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBTZW5kIGEgUElORyBmcmFtZSB0byB0aGUgcGVlci4KKworICAgICAgICA6cGFyYW0gdWlk
OiBBIHVuaXF1ZSBJRCBmb3IgdGhpcyBQSU5HLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
cGluZ19wZW5kaW5nLmFwcGVuZCh1aWQpCisKKyAgICBkZWYgc2VuZF9kYXRhZ3JhbV9mcmFtZShz
ZWxmLCBkYXRhOiBieXRlcykgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBE
QVRBR1JBTSBmcmFtZS4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2Vu
dC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLmFwcGVuZChk
YXRhKQorCisgICAgZGVmIHNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbV9p
ZDogaW50LCBkYXRhOiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBzcGVjaWZpYyBzdHJl
YW0uCisKKyAgICAgICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSdzIElELgorICAgICAg
ICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAgOnBhcmFtIGVuZF9z
dHJlYW06IElmIHNldCB0byBgVHJ1ZWAsIHRoZSBGSU4gYml0IHdpbGwgYmUgc2V0LgorICAgICAg
ICAiIiIKKyAgICAgICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSAh
PSBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYu
X3N0cmVhbXM6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQg
ZGF0YSBvbiB1bmtub3duIHBlZXItaW5pdGlhdGVkIHN0cmVhbSIpCisgICAgICAgICAgICBpZiBz
dHJlYW1faXNfdW5pZGlyZWN0aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNlbmQgZGF0YSBvbiBw
ZWVyLWluaXRpYXRlZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iCisgICAgICAgICAgICAgICAgKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFt
X2lkXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVf
c3RyZWFtKHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9z
dHJlYW1zW3N0cmVhbV9pZF0KKyAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEsIGVuZF9zdHJlYW09
ZW5kX3N0cmVhbSkKKworICAgICMgUHJpdmF0ZQorCisgICAgZGVmIF9hbHBuX2hhbmRsZXIoc2Vs
ZiwgYWxwbl9wcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2Fs
bGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIEFMUE4gbmVnb3Rp
YXRpb24gY29tcGxldGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVu
ZChldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKGFscG5fcHJvdG9jb2w9YWxwbl9wcm90b2NvbCkp
CisKKyAgICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgZnJhbWVfdHlwZTog
aW50LCBzdHJlYW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNr
IHRoZSBzcGVjaWZpZWQgc3RyZWFtIGNhbiByZWNlaXZlIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nv
bm5lY3Rpb25FcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1f
Y2FuX3JlY2VpdmUoc3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9u
RXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9T
VEFURV9FUlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAg
ICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHNlbmQtb25seSIsCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgZnJhbWVfdHlw
ZTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENo
ZWNrIHRoZSBzcGVjaWZpZWQgc3RyZWFtIGNhbiBzZW5kIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nv
bm5lY3Rpb25FcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1f
Y2FuX3NlbmQoc3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJy
b3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFU
RV9FUlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAg
ICAgICAgICAgcmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHJlY2VpdmUtb25seSIsCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX2Nsb3NlX2JlZ2luKHNlbGYsIGlzX2luaXRpYXRvcjogYm9vbCwg
bm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEJlZ2luIHRoZSBjbG9z
ZSBwcm9jZWR1cmUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyAr
IDMgKiBzZWxmLl9sb3NzLmdldF9wcm9iZV90aW1lb3V0KCkKKyAgICAgICAgaWYgaXNfaW5pdGlh
dG9yOgorICAgICAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xP
U0lORykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29u
bmVjdGlvblN0YXRlLkRSQUlOSU5HKQorCisgICAgZGVmIF9jbG9zZV9lbmQoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgIiIiCisgICAgICAgIEVuZCB0aGUgY2xvc2UgcHJvY2VkdXJlLgorICAgICAg
ICAiIiIKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBOb25lCisgICAgICAgIGZvciBlcG9jaCBp
biBzZWxmLl9zcGFjZXMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaChl
cG9jaCkKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChzZWxmLl9jbG9zZV9ldmVudCkKKyAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRFRCkKKwor
ICAgICAgICAjIHNpZ25hbCBsb2cgZW5kCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5l
bmRfdHJhY2Uoc2VsZi5fcXVpY19sb2dnZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ciA9IE5vbmUKKworICAgIGRlZiBfY29ubmVjdChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgor
ICAgICAgICAiIiIKKyAgICAgICAgU3RhcnQgdGhlIGNsaWVudCBoYW5kc2hha2UuCisgICAgICAg
ICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5faXNfY2xpZW50CisKKyAgICAgICAgc2VsZi5fY2xv
c2VfYXQgPSBub3cgKyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorICAgICAgICBz
ZWxmLl9pbml0aWFsaXplKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgIHNlbGYudGxzLmhhbmRs
ZV9tZXNzYWdlKGIiIiwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgIHNlbGYuX3B1c2hf
Y3J5cHRvX2RhdGEoKQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9pZDog
aW50KSAtPiBRdWljU3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgUVVJQyBz
dHJlYW0gaW4gb3JkZXIgdG8gc2VuZCBkYXRhIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAg
ICAgICAgIyBkZXRlcm1pbmUgbGltaXRzCisgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rp
b25hbChzdHJlYW1faWQpOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gMAor
ICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3Ry
ZWFtX2RhdGFfdW5pCisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhf
c3RyZWFtc191bmkKKyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNf
YmxvY2tlZF91bmkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9s
b2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAg
ICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9i
aWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0
cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19i
bG9ja2VkX2JpZGkKKworICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAgICAgICAgc3RyZWFtID0g
c2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWw9bWF4X3N0
cmVhbV9kYXRhX2xvY2FsLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhf
c3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICApCisKKyAgICAgICAgIyBtYXJrIHN0cmVhbSBh
cyBibG9ja2VkIGlmIG5lZWRlZAorICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3Ry
ZWFtczoKKyAgICAgICAgICAgIHN0cmVhbS5pc19ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAg
c3RyZWFtc19ibG9ja2VkLmFwcGVuZChzdHJlYW0pCisgICAgICAgICAgICBzZWxmLl9zdHJlYW1z
X2Jsb2NrZWRfcGVuZGluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBk
ZWYgX2Rpc2NhcmRfZXBvY2goc2VsZiwgZXBvY2g6IHRscy5FcG9jaCkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJEaXNjYXJkaW5nIGVwb2NoICVzIiwgZXBvY2gpCisgICAg
ICAgIHNlbGYuX2NyeXB0b3NbZXBvY2hdLnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5fbG9zcy5k
aXNjYXJkX3NwYWNlKHNlbGYuX3NwYWNlc1tlcG9jaF0pCisgICAgICAgIHNlbGYuX3NwYWNlc1tl
cG9jaF0uZGlzY2FyZGVkID0gVHJ1ZQorCisgICAgZGVmIF9maW5kX25ldHdvcmtfcGF0aChzZWxm
LCBhZGRyOiBOZXR3b3JrQWRkcmVzcykgLT4gUXVpY05ldHdvcmtQYXRoOgorICAgICAgICAjIGNo
ZWNrIGV4aXN0aW5nIG5ldHdvcmsgcGF0aHMKKyAgICAgICAgZm9yIGlkeCwgbmV0d29ya19wYXRo
IGluIGVudW1lcmF0ZShzZWxmLl9uZXR3b3JrX3BhdGhzKToKKyAgICAgICAgICAgIGlmIG5ldHdv
cmtfcGF0aC5hZGRyID09IGFkZHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtfcGF0
aAorCisgICAgICAgICMgbmV3IG5ldHdvcmsgcGF0aAorICAgICAgICBuZXR3b3JrX3BhdGggPSBR
dWljTmV0d29ya1BhdGgoYWRkcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3Jr
IHBhdGggJXMgZGlzY292ZXJlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICByZXR1cm4g
bmV0d29ya19wYXRoCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIGZyYW1l
X3R5cGU6IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgor
ICAgICAgICBHZXQgb3IgY3JlYXRlIGEgc3RyZWFtIGluIHJlc3BvbnNlIHRvIGEgcmVjZWl2ZWQg
ZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zLmdldChz
dHJlYW1faWQsIE5vbmUpCisgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgorICAgICAgICAgICAg
IyBjaGVjayBpbml0aWF0b3IKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlh
dGVkKHN0cmVhbV9pZCkgPT0gc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNl
IFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVp
Y0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1l
X3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iV3Jv
bmcgc3RyZWFtIGluaXRpYXRvciIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGRldGVybWluZSBsaW1pdHMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25h
bChzdHJlYW1faWQpOgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNl
bGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gMAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9j
YWxfbWF4X3N0cmVhbXNfdW5pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1h
eF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3Jl
bW90ZQorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1v
dGVfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFt
cyA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGkKKworICAgICAgICAgICAgIyBjaGVjayBt
YXggc3RyZWFtcworICAgICAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6
CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUiwKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICByZWFzb25fcGhyYXNlPSJUb28gbWFueSBzdHJlYW1zIG9wZW4iLAorICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoIlN0cmVhbSAlZCBjcmVhdGVkIGJ5IHBlZXIiICUgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgK
KyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1h
eF9zdHJlYW1fZGF0YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICAg
ICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAg
ICAgICAgKQorICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2hhbmRsZV9zZXNzaW9u
X3RpY2tldChzZWxmLCBzZXNzaW9uX3RpY2tldDogdGxzLlNlc3Npb25UaWNrZXQpIC0+IE5vbmU6
CisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRh
X3NpemUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5tYXhfZWFy
bHlfZGF0YV9zaXplICE9IE1BWF9FQVJMWV9EQVRBCisgICAgICAgICk6CisgICAgICAgICAgICBy
YWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVp
Y0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlw
ZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJ
bnZhbGlkIG1heF9lYXJseV9kYXRhIHZhbHVlICVzIgorICAgICAgICAgICAgICAgICUgc2Vzc2lv
bl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlcihzZXNzaW9uX3RpY2tldCkKKworICAgIGRlZiBfaW5p
dGlhbGl6ZShzZWxmLCBwZWVyX2NpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICMgVExTCisg
ICAgICAgIHNlbGYudGxzID0gdGxzLkNvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29s
cz1zZWxmLl9jb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRh
PXNlbGYuX2NvbmZpZ3VyYXRpb24uY2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2Nv
bmZpZ3VyYXRpb24uY2FmaWxlLAorICAgICAgICAgICAgY2FwYXRoPXNlbGYuX2NvbmZpZ3VyYXRp
b24uY2FwYXRoLAorICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKKyAgICAg
ICAgICAgIGxvZ2dlcj1zZWxmLl9sb2dnZXIsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0YT1O
b25lIGlmIHNlbGYuX2lzX2NsaWVudCBlbHNlIE1BWF9FQVJMWV9EQVRBLAorICAgICAgICAgICAg
c2VydmVyX25hbWU9c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAg
IHZlcmlmeV9tb2RlPXNlbGYuX2NvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUsCisgICAgICAgICkK
KyAgICAgICAgc2VsZi50bHMuY2VydGlmaWNhdGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRp
ZmljYXRlCisgICAgICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX2NoYWluID0gc2VsZi5fY29uZmln
dXJhdGlvbi5jZXJ0aWZpY2F0ZV9jaGFpbgorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9w
cml2YXRlX2tleSA9IHNlbGYuX2NvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2Vs
Zi50bHMuaGFuZHNoYWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAg
ICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAg
ICAgICAgICAgICBzZWxmLl9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoKSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgXQorCisgICAgICAgICMgVExTIHNlc3Npb24gcmVzdW1wdGlvbgor
ICAgICAgICBzZXNzaW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNr
ZXQKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAg
ICBhbmQgc2Vzc2lvbl90aWNrZXQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9u
X3RpY2tldC5pc192YWxpZAorICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LnNlcnZlcl9u
YW1lID09IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUKKyAgICAgICAgKToKKyAgICAg
ICAgICAgIHNlbGYudGxzLnNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNz
aW9uX3RpY2tldAorCisgICAgICAgICAgICAjIHBhcnNlIHNhdmVkIFFVSUMgdHJhbnNwb3J0IHBh
cmFtZXRlcnMgLSBmb3IgMC1SVFQKKyAgICAgICAgICAgIGlmIHNlc3Npb25fdGlja2V0Lm1heF9l
YXJseV9kYXRhX3NpemUgPT0gTUFYX0VBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZm9yIGV4
dF90eXBlLCBleHRfZGF0YSBpbiBzZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAg
ICAgICAgICAgICAgICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RS
QU5TUE9SVF9QQVJBTUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2Vf
dHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2Rh
dGEsIGZyb21fc2Vzc2lvbl90aWNrZXQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRMUyBjYWxsYmFja3MK
KyAgICAgICAgc2VsZi50bHMuYWxwbl9jYiA9IHNlbGYuX2FscG5faGFuZGxlcgorICAgICAgICBp
ZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
c2VsZi50bHMuZ2V0X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0
Y2hlcgorICAgICAgICBpZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi50bHMubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5faGFu
ZGxlX3Nlc3Npb25fdGlja2V0CisgICAgICAgIHNlbGYudGxzLnVwZGF0ZV90cmFmZmljX2tleV9j
YiA9IHNlbGYuX3VwZGF0ZV90cmFmZmljX2tleQorCisgICAgICAgICMgcGFja2V0IHNwYWNlcwor
ICAgICAgICBzZWxmLl9jcnlwdG9zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6
IENyeXB0b1BhaXIoKSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5aRVJPX1JUVDogQ3J5cHRvUGFp
cigpLAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQ3J5cHRvUGFpcigpLAorICAg
ICAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgfQorICAg
ICAgICBzZWxmLl9jcnlwdG9fYnVmZmVycyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklU
SUFMOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNI
QUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JU
VDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0
b19zdHJlYW1zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNTdHJlYW0o
KSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNTdHJlYW0oKSwKKyAgICAg
ICAgICAgIHRscy5FcG9jaC5PTkVfUlRUOiBRdWljU3RyZWFtKCksCisgICAgICAgIH0KKyAgICAg
ICAgc2VsZi5fc3BhY2VzID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNQ
YWNrZXRTcGFjZSgpLAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVpY1BhY2tl
dFNwYWNlKCksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogUXVpY1BhY2tldFNwYWNl
KCksCisgICAgICAgIH0KKworICAgICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5JTklUSUFM
XS5zZXR1cF9pbml0aWFsKAorICAgICAgICAgICAgY2lkPXBlZXJfY2lkLCBpc19jbGllbnQ9c2Vs
Zi5faXNfY2xpZW50LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorCisgICAgICAg
IHNlbGYuX2xvc3Muc3BhY2VzID0gbGlzdChzZWxmLl9zcGFjZXMudmFsdWVzKCkpCisgICAgICAg
IHNlbGYuX3BhY2tldF9udW1iZXIgPSAwCisKKyAgICBkZWYgX2hhbmRsZV9hY2tfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhbiBBQ0sgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBhY2tfcmFuZ2VzZXQsIGFja19k
ZWxheV9lbmNvZGVkID0gcHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBpZiBmcmFtZV90eXBl
ID09IFF1aWNGcmFtZVR5cGUuQUNLX0VDTjoKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGJ1Zi5wdWxs
X3VpbnRfdmFyKCkKKyAgICAgICAgYWNrX2RlbGF5ID0gKGFja19kZWxheV9lbmNvZGVkIDw8IHNl
bGYuX3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQpIC8gMTAwMDAwMAorCisgICAgICAgICMgbG9n
IGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoYWNrX3Jhbmdlc2V0LCBhY2tfZGVs
YXkpCisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5vbl9hY2tfcmVjZWl2ZWQo
CisgICAgICAgICAgICBzcGFjZT1zZWxmLl9zcGFjZXNbY29udGV4dC5lcG9jaF0sCisgICAgICAg
ICAgICBhY2tfcmFuZ2VzZXQ9YWNrX3Jhbmdlc2V0LAorICAgICAgICAgICAgYWNrX2RlbGF5PWFj
a19kZWxheSwKKyAgICAgICAgICAgIG5vdz1jb250ZXh0LnRpbWUsCisgICAgICAgICkKKworICAg
IGRlZiBfaGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENPTk5FQ1RJT05fQ0xP
U0UgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBlcnJvcl9jb2RlID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JU
X0NMT1NFOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBOb25lCisgICAgICAgIHJlYXNv
bl9sZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHJlYXNvbl9waHJhc2UgPSBidWYucHVsbF9ieXRlcyhyZWFzb25fbGVuZ3RoKS5kZWNvZGUoInV0
ZjgiKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmVh
c29uX3BocmFzZSA9ICIiCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9
ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAor
ICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAor
ICAgICAgICAgICAgIkNvbm5lY3Rpb24gY2xvc2UgY29kZSAweCVYLCByZWFzb24gJXMiLCBlcnJv
cl9jb2RlLCByZWFzb25fcGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZl
bnQgPSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICBlcnJvcl9jb2Rl
PWVycm9yX2NvZGUsIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwgcmVhc29uX3BocmFzZT1yZWFzb25f
cGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9y
PUZhbHNlLCBub3c9Y29udGV4dC50aW1lKQorCisgICAgZGVmIF9oYW5kbGVfY3J5cHRvX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBDUllQVE8gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBvZmZzZXQgPSBidWYu
cHVsbF91aW50X3ZhcigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAg
ICAgICAgaWYgb2Zmc2V0ICsgbGVuZ3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFp
c2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNF
cnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlw
ZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxl
bmd0aCBjYW5ub3QgZXhjZWVkIDJeNjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJh
bWUgPSBRdWljU3RyZWFtRnJhbWUob2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhs
ZW5ndGgpKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9f
ZnJhbWUoZnJhbWUpCisgICAgICAgICAgICApCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fY3J5
cHRvX3N0cmVhbXNbY29udGV4dC5lcG9jaF0KKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2Zy
YW1lKGZyYW1lKQorICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMg
cGFzcyBkYXRhIHRvIFRMUyBsYXllcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IHNlbGYudGxzLmhhbmRsZV9tZXNzYWdlKGV2ZW50LmRhdGEsIHNlbGYuX2NyeXB0b19idWZmZXJz
KQorICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEoKQorICAgICAgICAgICAg
ZXhjZXB0IHRscy5BbGVydCBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5l
Y3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LkNSWVBUT19FUlJPUiArIGludChleGMuZGVzY3JpcHRpb24pLAorICAgICAgICAgICAgICAgICAg
ICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJh
c2U9c3RyKGV4YyksCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHBhcnNlIHRy
YW5zcG9ydCBwYXJhbWV0ZXJzCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgbm90
IHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgc2VsZi50bHMu
cmVjZWl2ZWRfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICBmb3IgZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlbGYudGxzLnJlY2VpdmVkX2V4dGVu
c2lvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25U
eXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJzZV90cmFuc3BvcnRfcGFyYW1ldGVycyhleHRfZGF0YSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICApLCAiTm8g
UVVJQyB0cmFuc3BvcnQgcGFyYW1ldGVycyByZWNlaXZlZCIKKworICAgICAgICAgICAgIyB1cGRh
dGUgY3VycmVudCBlcG9jaAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb21w
bGV0ZSBhbmQgc2VsZi50bHMuc3RhdGUgaW4gWworICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5D
TElFTlRfUE9TVF9IQU5EU0hBS0UsCisgICAgICAgICAgICAgICAgdGxzLlN0YXRlLlNFUlZFUl9Q
T1NUX0hBTkRTSEFLRSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgc2VsZi5faGFu
ZHNoYWtlX2NvbXBsZXRlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBmb3Igc2VydmVycywg
dGhlIGhhbmRzaGFrZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgICAgICAgICAgaWYgbm90IHNl
bGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0
bHMuRXBvY2guSEFORFNIQUtFKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
Y29uZmlybWVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9u
ZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5pc19jbGllbnRf
d2l0aG91dF8xcnR0ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29u
bmVjdGlvbl9pZHMoKQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBhbHBuX3Byb3RvY29sPXNlbGYudGxzLmFscG5fbmVnb3RpYXRlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVhcmx5X2RhdGFfYWNjZXB0ZWQ9c2VsZi50bHMuZWFybHlfZGF0
YV9hY2NlcHRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fcmVzdW1lZD1zZWxm
LnRscy5zZXNzaW9uX3Jlc3VtZWQsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVj
dGlvbmFsPUZhbHNlKQorICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191
bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAor
ICAgICAgICAgICAgICAgICAgICAiQUxQTiBuZWdvdGlhdGVkIHByb3RvY29sICVzIiwgc2VsZi50
bHMuYWxwbl9uZWdvdGlhdGVkCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVf
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNv
bnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgICIiIgorICAgICAgICBIYW5kbGUgYSBEQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIi
IgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKGxpbWl0PWxpbWl0KQor
ICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAg
IHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6
IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERB
VEFHUkFNIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnQgPSBidWYudGVsbCgpCisg
ICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdU
SDoKKyAgICAgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGxlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIHN0YXJ0CisgICAgICAgIGRh
dGEgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19s
b2dnZXIuZW5jb2RlX2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICAp
CisKKyAgICAgICAgIyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIGlmICgKKyAgICAg
ICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgaXMgTm9u
ZQorICAgICAgICAgICAgb3IgYnVmLnRlbGwoKSAtIHN0YXJ0ID49IHNlbGYuX2NvbmZpZ3VyYXRp
b24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNl
IFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJy
b3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBEQVRB
R1JBTSBmcmFtZSIsCisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVu
ZChldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9ZGF0YSkpCisKKyAgICBkZWYgX2hh
bmRsZV9oYW5kc2hha2VfZG9uZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNo
YWtlX2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9p
c19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAg
ICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisg
ICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJl
YXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMi
LAorICAgICAgICAgICAgKQorCisgICAgICAgICMgwqBmb3IgY2xpZW50cywgdGhlIGhhbmRzaGFr
ZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmly
bWVkOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFORFNIQUtF
KQorICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IFRydWUKKworICAgIGRl
ZiBfaGFuZGxlX21heF9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBNQVhfREFUQSBmcmFtZS4KKworICAgICAg
ICBUaGlzIGFkanVzdHMgdGhlIHRvdGFsIGFtb3VudCBvZiB3ZSBjYW4gc2VuZCB0byB0aGUgcGVl
ci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQor
CisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZSht
YXhpbXVtPW1heF9kYXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9kYXRhID4g
c2VsZi5fcmVtb3RlX21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJS
ZW1vdGUgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgbWF4X2RhdGEpCisgICAgICAgICAgICBzZWxm
Ll9yZW1vdGVfbWF4X2RhdGEgPSBtYXhfZGF0YQorCisgICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVh
bV9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhp
cyBhZGp1c3RzIHRoZSBhbW91bnQgb2YgZGF0YSB3ZSBjYW4gc2VuZCBvbiBhIHNwZWNpZmljIHN0
cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUo
CisgICAgICAgICAgICAgICAgICAgIG1heGltdW09bWF4X3N0cmVhbV9kYXRhLCBzdHJlYW1faWQ9
c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9z
ZW5kKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRf
b3JfY3JlYXRlX3N0cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG1heF9z
dHJlYW1fZGF0YSA+IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlOgorICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgcmVtb3RlIG1h
eF9zdHJlYW1fZGF0YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCwK
KyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGEsCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YQorCisg
ICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29u
dGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisg
ICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNf
QklESSBmcmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgYmlkaXJlY3Rpb25h
bCBzdHJlYW1zIHdlIGNhbiBpbml0aWF0ZSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAg
ICAgIG1heF9zdHJlYW1zID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBz
ZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygiUmVtb3RlIG1heF9zdHJlYW1zX2JpZGkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMp
CisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSA9IG1heF9zdHJlYW1z
CisgICAgICAgICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFs
c2UpCisKKyAgICBkZWYgX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgIHNl
bGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1
ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9T
VFJFQU1TX1VOSSBmcmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgdW5pZGly
ZWN0aW9uYWwgc3RyZWFtcyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIi
IgorICAgICAgICBtYXhfc3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAg
ICAgICAgICAgICAgIGlzX3VuaWRpcmVjdGlvbmFsPVRydWUsIG1heGltdW09bWF4X3N0cmVhbXMK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVh
bXMgPiBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pOgorICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCJSZW1vdGUgbWF4X3N0cmVhbXNfdW5pIHJhaXNlZCB0byAlZCIsIG1heF9zdHJl
YW1zKQorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSA9IG1heF9zdHJl
YW1zCisgICAgICAgICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9
VHJ1ZSkKKworICAgIGRlZiBfaGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAg
ICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVm
OiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBO
RVdfQ09OTkVDVElPTl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251
bWJlciA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gYnVm
LnB1bGxfdWludF92YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAg
ICAgIGNvbm5lY3Rpb25faWQgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisgICAgICAgIHN0YXRl
bGVzc19yZXNldF90b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAg
ICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAgICAgICAg
ICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUu
YXBwZW5kKAorICAgICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBj
aWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVu
Y2VfbnVtYmVyLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxl
c3NfcmVzZXRfdG9rZW4sCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiBfaGFu
ZGxlX25ld190b2tlbl9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVD
b250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTkVXX1RPS0VOIGZyYW1lLgorICAgICAgICAiIiIK
KyAgICAgICAgbGVuZ3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0b2tlbiA9IGJ1
Zi5wdWxsX2J5dGVzKGxlbmd0aCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfbmV3X3Rva2VuX2ZyYW1lKHRva2VuPXRva2VuKQorICAgICAgICAgICAgKQorCisgICAg
ICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVj
dGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9U
T0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAor
ICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdf
VE9LRU4gZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3BhZGRpbmdf
ZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVf
dHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAg
ICAgIEhhbmRsZSBhIFBBRERJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGNvbnN1
bWUgcGFkZGluZworICAgICAgICBwb3MgPSBidWYudGVsbCgpCisgICAgICAgIGZvciBieXRlIGlu
IGJ1Zi5kYXRhX3NsaWNlKHBvcywgYnVmLmNhcGFjaXR5KToKKyAgICAgICAgICAgIGlmIGJ5dGU6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGJ1
Zi5zZWVrKHBvcykKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJh
bWVzLmFwcGVuZChzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpKQorCisg
ICAgZGVmIF9oYW5kbGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBBVEhfQ0hBTExFTkdF
IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisK
KyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2Zy
YW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBjb250ZXh0Lm5ldHdvcmtf
cGF0aC5yZW1vdGVfY2hhbGxlbmdlID0gZGF0YQorCisgICAgZGVmIF9oYW5kbGVfcGF0aF9yZXNw
b25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgUEFUSF9SRVNQT05TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIGRhdGEgPSBidWYucHVsbF9ieXRlcyg4KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAg
ICkKKworICAgICAgICBpZiBkYXRhICE9IGNvbnRleHQubmV0d29ya19wYXRoLmxvY2FsX2NoYWxs
ZW5nZToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAg
ICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iUmVzcG9uc2UgZG9lcyBub3QgbWF0Y2ggY2hhbGxlbmdlIiwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIk5ldHdvcmsgcGF0
aCAlcyB2YWxpZGF0ZWQgYnkgY2hhbGxlbmdlIiwgY29udGV4dC5uZXR3b3JrX3BhdGguYWRkcgor
ICAgICAgICApCisgICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRy
dWUKKworICAgIGRlZiBfaGFuZGxlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6
IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBJTkcgZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZChzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9o
YW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVNFVF9TVFJFQU0gZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAg
IGVycm9yX2NvZGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGZpbmFsX3NpemUgPSBi
dWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2Vs
Zi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9n
Z2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5j
b2RlX3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1l
cnJvcl9jb2RlLCBmaW5hbF9zaXplPWZpbmFsX3NpemUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0g
ZGlyZWN0aW9uCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVf
dHlwZSwgc3RyZWFtX2lkKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAg
ICAgIlN0cmVhbSAlZCByZXNldCBieSBwZWVyIChlcnJvciBjb2RlICVkLCBmaW5hbCBzaXplICVk
KSIsCisgICAgICAgICAgICBzdHJlYW1faWQsCisgICAgICAgICAgICBlcnJvcl9jb2RlLAorICAg
ICAgICAgICAgZmluYWxfc2l6ZSwKKyAgICAgICAgKQorICAgICAgICAjIHN0cmVhbSA9IHNlbGYu
X2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKyAgICAgICAgc2Vs
Zi5fZXZlbnRzLmFwcGVuZCgKKyAgICAgICAgICAgIGV2ZW50cy5TdHJlYW1SZXNldChlcnJvcl9j
b2RlPWVycm9yX2NvZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICkKKworICAgIGRl
ZiBfaGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVRJUkVfQ09OTkVD
VElPTl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1
Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dn
ZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNv
ZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgZmluZCB0aGUgY29ubmVjdGlvbiBJRCBieSBzZXF1ZW5jZSBudW1i
ZXIKKyAgICAgICAgZm9yIGluZGV4LCBjb25uZWN0aW9uX2lkIGluIGVudW1lcmF0ZShzZWxmLl9o
b3N0X2NpZHMpOgorICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIg
PT0gc2VxdWVuY2VfbnVtYmVyOgorICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuY2lk
ID09IGNvbnRleHQuaG9zdF9jaWQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25u
ZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJv
ckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVf
dHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
Q2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiLAorICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAg
ICAgICAiUGVlciByZXRpcmluZyBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgIGR1
bXBfY2lkKGNvbm5lY3Rpb25faWQuY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv
bl9pZC5zZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IGRlbCBzZWxmLl9ob3N0X2NpZHNbaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQo
Y29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIGlzc3VlIGEgbmV3IGNvbm5lY3Rpb24gSUQK
KyAgICAgICAgc2VsZi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25faWRzKCkKKworICAgIGRlZiBfaGFu
ZGxlX3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2Vp
dmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgor
ICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgU1RPUF9TRU5ESU5HIGZyYW1lLgorICAgICAg
ICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBl
cnJvcl9jb2RlID0gYnVmLnB1bGxfdWludF92YXIoKSAgIyBhcHBsaWNhdGlvbiBlcnJvciBjb2Rl
CisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0b3Bfc2VuZGluZ19m
cmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBzdHJlYW1f
aWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAg
ICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nh
bl9zZW5kKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3Jl
YXRlX3N0cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJl
YW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJh
bWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisg
ICAgICAgIEhhbmRsZSBhIFNUUkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVh
bV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDQ6Cisg
ICAgICAgICAgICBvZmZzZXQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBvZmZzZXQgPSAwCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiAyOgorICAgICAg
ICAgICAgbGVuZ3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBpZiBvZmZz
ZXQgKyBsZW5ndGggPiBVSU5UX1ZBUl9NQVg6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVj
dGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFN
RV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUs
CisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBl
eGNlZWQgMl42MiAtIDEiLAorICAgICAgICAgICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJl
YW1GcmFtZSgKKyAgICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMo
bGVuZ3RoKSwgZmluPWJvb2woZnJhbWVfdHlwZSAmIDEpCisgICAgICAgICkKKworICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKGZyYW1lLCBzdHJlYW1f
aWQ9c3RyZWFtX2lkKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRp
cmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5
cGUsIHN0cmVhbV9pZCkKKworICAgICAgICAjIGNoZWNrIGZsb3ctY29udHJvbCBsaW1pdHMKKyAg
ICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3Ry
ZWFtX2lkKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBzdHJlYW0ubWF4X3N0cmVhbV9k
YXRhX2xvY2FsOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAg
ICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SLAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgbmV3bHlfcmVjZWl2ZWQgPSBtYXgoMCwgb2Zmc2V0ICsgbGVuZ3RoIC0gc3RyZWFtLl9y
ZWN2X2hpZ2hlc3QpCisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKyBuZXds
eV9yZWNlaXZlZCA+IHNlbGYuX2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgcmFpc2UgUXVp
Y0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNv
ZGUuRkxPV19DT05UUk9MX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJPdmVyIGNvbm5lY3Rpb24gZGF0
YSBsaW1pdCIsCisgICAgICAgICAgICApCisKKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2Zy
YW1lKGZyYW1lKQorICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX2V2ZW50cy5hcHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Vz
ZWQgKz0gbmV3bHlfcmVjZWl2ZWQKKworICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2Nr
ZWRfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJh
bWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisg
ICAgICAgIEhhbmRsZSBhIFNUUkVBTV9EQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxpbWl0ID0g
YnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNl
bGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xv
Z2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVu
Y29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBsaW1p
dD1saW1pdCwgc3RyZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICkKKworICAgICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5f
YXNzZXJ0X3N0cmVhbV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAg
ICAgc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisg
ICAgZGVmIF9oYW5kbGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVFJFQU1TX0JMT0NL
RUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9j
a2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90
eXBlID09IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAg
ICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIF9vbl9hY2tfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVs
aXZlcnlTdGF0ZSwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgaGlnaGVzdF9hY2tlZDogaW50Cisg
ICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhbiBBQ0sg
ZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBk
ZWxpdmVyeSA9PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNwYWNlLmFj
a19xdWV1ZS5zdWJ0cmFjdCgwLCBoaWdoZXN0X2Fja2VkICsgMSkKKworICAgIGRlZiBfb25faGFu
ZHNoYWtlX2RvbmVfZGVsaXZlcnkoc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIEhBTkRTSEFLRV9E
T05FIGZyYW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAg
aWYgZGVsaXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxm
Ll9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9vbl9tYXhfZGF0YV9k
ZWxpdmVyeShzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAg
ICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX0RBVEEgZnJhbWUgaXMgYWNrbm93
bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWlj
RGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Nl
bnQgPSAwCisKKyAgICBkZWYgX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSgKKyAgICAgICAg
c2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX1NU
UkVBTV9EQVRBIGZyYW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgZGVsaXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAg
ICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSAwCisKKyAgICBkZWYgX29uX25l
d19jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0Rl
bGl2ZXJ5U3RhdGUsIGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTkVXX0NPTk5FQ1RJT05f
SUQgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBp
ZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb25faWQud2FzX3NlbnQgPSBGYWxzZQorCisgICAgZGVmIF9vbl9waW5nX2RlbGl2ZXJ5KAor
ICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHVpZHM6IFNlcXVlbmNl
W2ludF0KKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVu
IGEgUElORyBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAg
ICAgIGlmIGRlbGl2ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCJSZWNlaXZlZCBQSU5HJXMgcmVzcG9uc2UiLCAiIiBpZiB1aWRz
IGVsc2UgIiAocHJvYmUpIikKKyAgICAgICAgICAgIGZvciB1aWQgaW4gdWlkczoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKHVpZD11
aWQpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmV4dGVu
ZCh1aWRzKQorCisgICAgZGVmIF9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSgKKyAg
ICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzZXF1ZW5jZV9udW1iZXI6
IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4g
YSBSRVRJUkVfQ09OTkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VE
OgorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFwcGVuZChzZXF1ZW5j
ZV9udW1iZXIpCisKKyAgICBkZWYgX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsIGNv
bnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgcGxhaW46IGJ5dGVzCisgICAgKSAtPiBUdXBsZVti
b29sLCBib29sXToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgcGFja2V0IHBh
eWxvYWQuCisgICAgICAgICIiIgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1wbGFpbikKKwor
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gRmFsc2UKKyAgICAgICAgaXNfcHJvYmluZyA9IE5v
bmUKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgdHlwZSBp
cyBrbm93bgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIs
IGZyYW1lX2Vwb2NocyA9IHNlbGYuX19mcmFtZV9oYW5kbGVyc1tmcmFtZV90eXBlXQorICAgICAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5rbm93biBmcmFtZSB0
eXBlIiwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgaXMg
YWxsb3dlZCBmb3IgdGhlIGVwb2NoCisgICAgICAgICAgICBpZiBjb250ZXh0LmVwb2NoIG5vdCBp
biBmcmFtZV9lcG9jaHM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJv
cigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09M
X1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAor
ICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIGZyYW1lIHR5cGUi
LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGZyYW1lCisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlcihjb250ZXh0LCBm
cmFtZV90eXBlLCBidWYpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAg
ICByZWFzb25fcGhyYXNlPSJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiLAorICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgIyB1cGRhdGUgQUNLIG9ubHkgLyBwcm9iaW5nIGZsYWdzCisgICAg
ICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBF
UzoKKyAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorCisgICAgICAgICAg
ICBpZiBmcmFtZV90eXBlIG5vdCBpbiBQUk9CSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAg
ICAgIGlzX3Byb2JpbmcgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBpc19wcm9iaW5nIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgaXNfcHJvYmluZyA9IFRydWUKKworICAgICAgICByZXR1cm4g
aXNfYWNrX2VsaWNpdGluZywgYm9vbChpc19wcm9iaW5nKQorCisgICAgZGVmIF9yZXBsZW5pc2hf
Y29ubmVjdGlvbl9pZHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVy
YXRlIG5ldyBjb25uZWN0aW9uIElEcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGxlbihz
ZWxmLl9ob3N0X2NpZHMpIDwgbWluKDgsIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9p
ZF9saW1pdCk6CisgICAgICAgICAgICBzZWxmLl9ob3N0X2NpZHMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgIFF1aWNDb25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgICAgIGNpZD1vcy51cmFu
ZG9tKHNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAg
ICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VsZi5faG9zdF9jaWRfc2VxLAorICAgICAgICAg
ICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRfc2Vx
ICs9IDEKKworICAgIGRlZiBfcHVzaF9jcnlwdG9fZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAg
ICBmb3IgZXBvY2gsIGJ1ZiBpbiBzZWxmLl9jcnlwdG9fYnVmZmVycy5pdGVtcygpOgorICAgICAg
ICAgICAgc2VsZi5fY3J5cHRvX3N0cmVhbXNbZXBvY2hdLndyaXRlKGJ1Zi5kYXRhKQorICAgICAg
ICAgICAgYnVmLnNlZWsoMCkKKworICAgIGRlZiBfc2VuZF9wcm9iZShzZWxmKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9wYXJzZV90cmFu
c3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGZyb21fc2Vzc2lv
bl90aWNrZXQ6IGJvb2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgcXVpY190cmFu
c3BvcnRfcGFyYW1ldGVycyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAg
ICAgICAgIEJ1ZmZlcihkYXRhPWRhdGEpLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24K
KyAgICAgICAgKQorCisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNf
bG9nZ2VyIGlzIG5vdCBOb25lIGFuZCBub3QgZnJvbV9zZXNzaW9uX3RpY2tldDoKKyAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29y
eT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAor
ICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9w
YXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgICAgICBvd25lcj0icmVtb3RlIiwgcGFyYW1ldGVy
cz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICkKKworICAgICAgICAjIHZhbGlkYXRlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIG5vdCBmcm9t
X3Nlc3Npb25fdGlja2V0CisgICAgICAgICAgICBhbmQgKAorICAgICAgICAgICAgICAgIHF1aWNf
dHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAg
ICAgICE9IHNlbGYuX29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAg
ICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlRSQU5TUE9SVF9QQVJBTUVURVJfRVJST1Is
CisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGRvZXMgbm90
IG1hdGNoIiwKKyAgICAgICAgICAgICkKKworICAgICAgICAjIHN0b3JlIHJlbW90ZSBwYXJhbWV0
ZXJzCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWNrX2RlbGF5X2V4cG9u
ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBv
bmVudCA9IHNlbGYuX3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQKKyAgICAgICAgaWYgcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9
ICgKKyAgICAgICAgICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25u
ZWN0aW9uX2lkX2xpbWl0CisgICAgICAgICAgICApCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0
X3BhcmFtZXRlcnMuaWRsZV90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
cmVtb3RlX2lkbGVfdGltZW91dCA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuaWRsZV90aW1l
b3V0IC8gMTAwMC4wCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fj
a19kZWxheSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvc3MubWF4X2Fja19kZWxh
eSA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSAvIDEwMDAuMAorICAg
ICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgPSAoCisgICAgICAgICAg
ICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplCisgICAg
ICAgICkKKyAgICAgICAgZm9yIHBhcmFtIGluIFsKKyAgICAgICAgICAgICJtYXhfZGF0YSIsCisg
ICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwiLAorICAgICAgICAgICAgIm1h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRh
X3VuaSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbXNfYmlkaSIsCisgICAgICAgICAgICAibWF4
X3N0cmVhbXNfdW5pIiwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihx
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLCAiaW5pdGlhbF8iICsgcGFyYW0pCisgICAgICAgICAg
ICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJf
cmVtb3RlXyIgKyBwYXJhbSwgdmFsdWUpCisKKyAgICBkZWYgX3NlcmlhbGl6ZV90cmFuc3BvcnRf
cGFyYW1ldGVycyhzZWxmKSAtPiBieXRlczoKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgYWNrX2RlbGF5X2V4
cG9uZW50PXNlbGYuX2xvY2FsX2Fja19kZWxheV9leHBvbmVudCwKKyAgICAgICAgICAgIGFjdGl2
ZV9jb25uZWN0aW9uX2lkX2xpbWl0PXNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0LAorICAgICAgICAgICAgaWRsZV90aW1lb3V0PWludChzZWxmLl9jb25maWd1cmF0aW9uLmlk
bGVfdGltZW91dCAqIDEwMDApLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT1zZWxmLl9s
b2NhbF9tYXhfZGF0YSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlf
bG9jYWw9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwsCisgICAgICAgICAg
ICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT1zZWxmLl9sb2NhbF9tYXhfc3Ry
ZWFtX2RhdGFfYmlkaV9yZW1vdGUsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0
YV91bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSwKKyAgICAgICAgICAgIGluaXRp
YWxfbWF4X3N0cmVhbXNfYmlkaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpLAorICAgICAg
ICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5p
LAorICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAgIG1heF9kYXRhZ3Jh
bV9mcmFtZV9zaXplPXNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUs
CisgICAgICAgICAgICBxdWFudHVtX3JlYWRpbmVzcz1iIlEiICogMTIwMAorICAgICAgICAgICAg
aWYgc2VsZi5fY29uZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190ZXN0CisgICAgICAgICAg
ICBlbHNlIE5vbmUsCisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoK
KyAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlv
bl9pZCA9ICgKKyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisg
ICAgICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcXVp
Y19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2df
ZXZlbnQoCisgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAg
ICAgICAgZXZlbnQ9InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYu
X3F1aWNfbG9nZ2VyLmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAg
ICAgICAgb3duZXI9ImxvY2FsIiwgcGFyYW1ldGVycz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9MyAqIFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBxdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorICAgICAgICBy
ZXR1cm4gYnVmLmRhdGEKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0YXRlOiBRdWljQ29u
bmVjdGlvblN0YXRlKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIiVzIC0+
ICVzIiwgc2VsZi5fc3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisK
KyAgICBkZWYgX3N0cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9v
bDoKKyAgICAgICAgcmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAg
ICAgc3RyZWFtX2lkCisgICAgICAgICkgIT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1f
aXNfdW5pZGlyZWN0aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF9zdHJlYW1fY2FuX3NlbmQo
c2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzdHJlYW1faXNf
Y2xpZW50X2luaXRpYXRlZCgKKyAgICAgICAgICAgIHN0cmVhbV9pZAorICAgICAgICApID09IHNl
bGYuX2lzX2NsaWVudCBvciBub3Qgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCkK
KworICAgIGRlZiBfdW5ibG9ja19zdHJlYW1zKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29s
KSAtPiBOb25lOgorICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAgICAgIG1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaQor
ICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pCisg
ICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5f
cmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVh
bXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19i
bG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkKKworICAgICAgICB3aGlsZSBzdHJl
YW1zX2Jsb2NrZWQgYW5kIHN0cmVhbXNfYmxvY2tlZFswXS5zdHJlYW1faWQgLy8gNCA8IG1heF9z
dHJlYW1zOgorICAgICAgICAgICAgc3RyZWFtID0gc3RyZWFtc19ibG9ja2VkLnBvcCgwKQorICAg
ICAgICAgICAgc3RyZWFtLmlzX2Jsb2NrZWQgPSBGYWxzZQorICAgICAgICAgICAgc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisKKyAgICAgICAg
aWYgbm90IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpIGFuZCBub3Qgc2VsZi5fc3RyZWFtc19i
bG9ja2VkX3VuaToKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0g
RmFsc2UKKworICAgIGRlZiBfdXBkYXRlX3RyYWZmaWNfa2V5KAorICAgICAgICBzZWxmLAorICAg
ICAgICBkaXJlY3Rpb246IHRscy5EaXJlY3Rpb24sCisgICAgICAgIGVwb2NoOiB0bHMuRXBvY2gs
CisgICAgICAgIGNpcGhlcl9zdWl0ZTogdGxzLkNpcGhlclN1aXRlLAorICAgICAgICBzZWNyZXQ6
IGJ5dGVzLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBuZXcgdHJhZmZpYyBrZXlzIGFy
ZQorICAgICAgICBhdmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICBzZWNyZXRzX2xvZ19m
aWxlID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlCisgICAgICAgIGlmIHNl
Y3JldHNfbG9nX2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYWJlbF9yb3cgPSBzZWxm
Ll9pc19jbGllbnQgPT0gKGRpcmVjdGlvbiA9PSB0bHMuRGlyZWN0aW9uLkRFQ1JZUFQpCisgICAg
ICAgICAgICBsYWJlbCA9IFNFQ1JFVFNfTEFCRUxTW2xhYmVsX3Jvd11bZXBvY2gudmFsdWVdCisg
ICAgICAgICAgICBzZWNyZXRzX2xvZ19maWxlLndyaXRlKAorICAgICAgICAgICAgICAgICIlcyAl
cyAlc1xuIiAlIChsYWJlbCwgc2VsZi50bHMuY2xpZW50X3JhbmRvbS5oZXgoKSwgc2VjcmV0Lmhl
eCgpKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZS5mbHVzaCgp
CisKKyAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgaWYgZGly
ZWN0aW9uID09IHRscy5EaXJlY3Rpb24uRU5DUllQVDoKKyAgICAgICAgICAgIGNyeXB0by5zZW5k
LnNldHVwKAorICAgICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsIHNlY3Jl
dD1zZWNyZXQsIHZlcnNpb249c2VsZi5fdmVyc2lvbgorICAgICAgICAgICAgKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgY3J5cHRvLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lw
aGVyX3N1aXRlPWNpcGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJz
aW9uCisgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2FwcGxpY2F0aW9uKAorICAgICAg
ICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgbmV0d29ya19wYXRoOiBRdWljTmV0
d29ya1BhdGgsIG5vdzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0b19zdHJl
YW06IE9wdGlvbmFsW1F1aWNTdHJlYW1dID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9jcnlwdG9z
W3Rscy5FcG9jaC5PTkVfUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8g
PSBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgY3J5cHRvX3N0
cmVhbSA9IHNlbGYuX2NyeXB0b19zdHJlYW1zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAg
ICAgcGFja2V0X3R5cGUgPSBQQUNLRVRfVFlQRV9PTkVfUlRUCisgICAgICAgIGVsaWYgc2VsZi5f
Y3J5cHRvc1t0bHMuRXBvY2guWkVST19SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAg
IGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLlpFUk9fUlRUXQorICAgICAgICAgICAg
cGFja2V0X3R5cGUgPSBQQUNLRVRfVFlQRV9aRVJPX1JUVAorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVf
UlRUXQorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIGFwcGx5IHBhY2luZywg
ZXhjZXB0IGlmIHdlIGhhdmUgQUNLcyB0byBzZW5kCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tf
YXQgaXMgTm9uZSBvciBzcGFjZS5hY2tfYXQgPj0gbm93OgorICAgICAgICAgICAgICAgIHNlbGYu
X3BhY2luZ19hdCA9IHNlbGYuX2xvc3MuX3BhY2VyLm5leHRfc2VuZF90aW1lKG5vdz1ub3cpCisg
ICAgICAgICAgICAgICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0
X3R5cGUsIGNyeXB0bykKKworICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRl
OgorICAgICAgICAgICAgICAgICMgQUNLCisgICAgICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0
IGlzIG5vdCBOb25lIGFuZCBzcGFjZS5hY2tfYXQgPD0gbm93OgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgbm93
PW5vdykKKworICAgICAgICAgICAgICAgICMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9oYW5kc2hha2VfZG9uZV9mcmFtZShidWlsZGVyPWJ1aWxkZXIpCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorCisgICAg
ICAgICAgICAgICAgIyBQQVRIIENIQUxMRU5HRQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAg
ICAgICAgICAgICAgICAgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQKKyAgICAgICAgICAg
ICAgICAgICAgYW5kIG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgaXMgTm9uZQorICAgICAg
ICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA9IG9zLnVyYW5kb20o
OCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUo
CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5nZT1jaGFs
bGVuZ2UKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3Jr
X3BhdGgubG9jYWxfY2hhbGxlbmdlID0gY2hhbGxlbmdlCisKKyAgICAgICAgICAgICAgICAjIFBB
VEggUkVTUE9OU0UKKyAgICAgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxs
ZW5nZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9y
ZXNwb25zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwg
Y2hhbGxlbmdlPW5ldHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2Ug
PSBOb25lCisKKyAgICAgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lECisgICAgICAgICAg
ICAgICAgZm9yIGNvbm5lY3Rpb25faWQgaW4gc2VsZi5faG9zdF9jaWRzOgorICAgICAgICAgICAg
ICAgICAgICBpZiBub3QgY29ubmVjdGlvbl9pZC53YXNfc2VudDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9u
X2lkCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIFJFVElS
RV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmV0aXJlX2Nvbm5l
Y3Rpb25faWRzOgorICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBzZWxmLl9y
ZXRpcmVfY29ubmVjdGlvbl9pZHMucG9wKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dy
aXRlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRlcj1idWlsZGVyLCBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyCisgICAgICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICMgU1RSRUFNU19CTE9DS0VECisgICAg
ICAgICAgICAgICAgaWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmc6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX0JJREksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2Jp
ZGksCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3N0cmVhbXNfYmxvY2tlZF91bmk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRlcj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
UXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbWl0PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9w
ZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgICAgICMgTUFYX0RBVEEKKyAgICAgICAgICAg
ICAgICBzZWxmLl93cml0ZV9jb25uZWN0aW9uX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNl
PXNwYWNlKQorCisgICAgICAgICAgICAjIHN0cmVhbS1sZXZlbCBsaW1pdHMKKyAgICAgICAgICAg
IGZvciBzdHJlYW0gaW4gc2VsZi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9zdHJlYW1fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0
cmVhbT1zdHJlYW0pCisKKyAgICAgICAgICAgICMgUElORyAodXNlci1yZXF1ZXN0KQorICAgICAg
ICAgICAgaWYgc2VsZi5fcGluZ19wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRl
X3BpbmdfZnJhbWUoYnVpbGRlciwgc2VsZi5fcGluZ19wZW5kaW5nKQorICAgICAgICAgICAgICAg
IHNlbGYuX3BpbmdfcGVuZGluZy5jbGVhcigpCisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUp
CisgICAgICAgICAgICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNl
bGYuX3dyaXRlX3BpbmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0icHJvYmUiKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIENSWVBU
TworICAgICAgICAgICAgaWYgY3J5cHRvX3N0cmVhbSBpcyBub3QgTm9uZSBhbmQgbm90IGNyeXB0
b19zdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNw
YWNlPXNwYWNlLCBzdHJlYW09Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBEQVRBR1JBTQorICAgICAgICAgICAgd2hpbGUgc2VsZi5fZGF0YWdyYW1zX3Bl
bmRpbmc6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVp
bGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fZGF0YWdyYW1zX3BlbmRp
bmdbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUu
REFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmcucG9wbGVmdCgpCisgICAgICAgICAgICAg
ICAgZXhjZXB0IFF1aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKworICAgICAgICAgICAgIyBTVFJFQU0KKyAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gc2Vs
Zi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyZWFtLmlzX2Js
b2NrZWQgYW5kIG5vdCBzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkICs9IHNlbGYuX3dyaXRlX3N0cmVhbV9m
cmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vZmZzZXQ9bWluKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKyBzZWxmLl9yZW1vdGVfbWF4X2RhdGEKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBp
ZiBidWlsZGVyLnBhY2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLl9wYWNlci51cGRhdGVfYWZ0
ZXJfc2VuZChub3c9bm93KQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2UoCisgICAgICAgIHNl
bGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBlcG9jaDogdGxzLkVwb2NoLCBub3c6IGZs
b2F0CisgICAgKSAtPiBOb25lOgorICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2No
XQorICAgICAgICBpZiBub3QgY3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGNyeXB0b19zdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9j
aF0KKyAgICAgICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5JTklUSUFMOgorICAgICAg
ICAgICAgICAgIHBhY2tldF90eXBlID0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0hBTkRTSEFL
RQorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykK
KworICAgICAgICAgICAgIyBBQ0sKKyAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWls
ZGVyLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAg
ICAgICAgIGlmIG5vdCBjcnlwdG9fc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAg
ICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5n
ID0gRmFsc2UKKworICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nCisgICAgICAgICAgICAgICAgYW5k
IGVwb2NoID09IHRscy5FcG9jaC5IQU5EU0hBS0UKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNl
bGYuX2hhbmRzaGFrZV9jb21wbGV0ZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9waW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAg
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgaWYgYnVp
bGRlci5wYWNrZXRfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBf
d3JpdGVfYWNrX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRl
ciwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIyBjYWxjdWxhdGUgQUNLIGRlbGF5CisgICAgICAgIGFja19kZWxheSA9IG5vdyAtIHNw
YWNlLmxhcmdlc3RfcmVjZWl2ZWRfdGltZQorICAgICAgICBhY2tfZGVsYXlfZW5jb2RlZCA9IGlu
dChhY2tfZGVsYXkgKiAxMDAwMDAwKSA+PiBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQK
KworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5BQ0ssCisgICAgICAgICAgICBjYXBhY2l0eT1BQ0tfRlJBTUVfQ0FQQUNJVFksCisg
ICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX2Fja19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhh
bmRsZXJfYXJncz0oc3BhY2UsIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0KSwKKyAgICAg
ICAgKQorICAgICAgICByYW5nZXMgPSBwdXNoX2Fja19mcmFtZShidWYsIHNwYWNlLmFja19xdWV1
ZSwgYWNrX2RlbGF5X2VuY29kZWQpCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5vbmUKKworICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKAorICAgICAgICAg
ICAgICAgICAgICByYW5nZXM9c3BhY2UuYWNrX3F1ZXVlLCBkZWxheT1hY2tfZGVsYXkKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBuZWVk
IHRvIHRyaWdnZXIgYW4gQUNLLW9mLUFDSworICAgICAgICBpZiByYW5nZXMgPiAxIGFuZCBidWls
ZGVyLnBhY2tldF9udW1iZXIgJSA4ID09IDA6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5n
X2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9IkFDSy1vZi1BQ0sgdHJpZ2dlciIpCisKKyAgICBkZWYg
X3dyaXRlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1
aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQsCisgICAg
ICAgIGZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0sCisgICAgICAgIHJlYXNvbl9waHJhc2U6IHN0
ciwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHJlYXNvbl9ieXRlcyA9IHJlYXNvbl9waHJhc2Uu
ZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGxlbihyZWFzb25fYnl0ZXMp
CisKKyAgICAgICAgaWYgZnJhbWVfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnVmID0gYnVp
bGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FU
SU9OX0NMT1NFLAorICAgICAgICAgICAgICAgIGNhcGFjaXR5PUFQUExJQ0FUSU9OX0NMT1NFX0ZS
QU1FX0NBUEFDSVRZICsgcmVhc29uX2xlbmd0aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGVycm9yX2NvZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50
X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5
dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFt
ZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAg
ICAgICAgICAgICBjYXBhY2l0eT1UUkFOU1BPUlRfQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFz
b25fbGVuZ3RoLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIo
ZXJyb3JfY29kZSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisg
ICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5dGVzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRl
ci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9jb2RlPWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhy
YXNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVf
Y29ubmVjdGlvbl9saW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWls
ZGVyLCBzcGFjZTogUXVpY1BhY2tldFNwYWNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgUmFpc2UgTUFYX0RBVEEgaWYgbmVlZGVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aWYgc2VsZi5fbG9jYWxfbWF4X2RhdGFfdXNlZCAqIDIgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToK
KyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhICo9IDIKKyAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygiTG9jYWwgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgc2VsZi5fbG9jYWxf
bWF4X2RhdGEpCisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgIT0gc2VsZi5f
bG9jYWxfbWF4X2RhdGE6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAor
ICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAgICAgICAgICAg
Y2FwYWNpdHk9TUFYX0RBVEFfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICAgICAgaGFuZGxl
cj1zZWxmLl9vbl9tYXhfZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAgc2Vs
Zi5fbG9jYWxfbWF4X2RhdGFfc2VudCA9IHNlbGYuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9m
cmFtZShzZWxmLl9sb2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYg
X3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1
aWxkZXIsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkg
LT4gYm9vbDoKKyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAzICsgc2l6ZV91aW50X3ZhcihzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCkKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKGJ1
aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkKQorICAgICAgICBp
ZiBmcmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAg
ICAgY2FwYWNpdHk9ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJl
YW0ub25fZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1l
Lm9mZnNldCwgZnJhbWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNldCkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDApCisgICAgICAgICAgICBi
dWYucHVzaF9ieXRlcyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAg
ICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZyYW1lKQorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgX3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVy
OiBRdWljUGFja2V0QnVpbGRlciwgZGF0YTogYnl0ZXMsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5
cGUKKyAgICApIC0+IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIERBVEFHUkFN
IGZyYW1lLgorCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnJhbWUgd2FzIHByb2Nlc3Nl
ZCwgRmFsc2Ugb3RoZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGZyYW1lX3R5
cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSAorICAgICAgICBsZW5ndGgg
PSBsZW4oZGF0YSkKKyAgICAgICAgZnJhbWVfc2l6ZSA9IDEgKyBzaXplX3VpbnRfdmFyKGxlbmd0
aCkgKyBsZW5ndGgKKworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKGZyYW1lX3R5
cGUsIGNhcGFjaXR5PWZyYW1lX3NpemUpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbmd0
aCkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZGF0YSkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1
aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0aCkKKyAgICAgICAg
ICAgICkKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2Vf
ZG9uZV9mcmFtZShzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlcikgLT4gTm9uZToKKyAg
ICAgICAgYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFO
RFNIQUtFX0RPTkUsCisgICAgICAgICAgICBjYXBhY2l0eT1IQU5EU0hBS0VfRE9ORV9GUkFNRV9D
QVBBQ0lUWSwKKyAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25faGFuZHNoYWtlX2RvbmVfZGVs
aXZlcnksCisgICAgICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dn
ZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNv
ZGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0
ZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1Bh
Y2tldEJ1aWxkZXIsIGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5v
bmU6CisgICAgICAgIHJldGlyZV9wcmlvcl90byA9IDAgICMgRklYTUUKKworICAgICAgICBidWYg
PSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09O
TkVDVElPTl9JRCwKKyAgICAgICAgICAgIGNhcGFjaXR5PU5FV19DT05ORUNUSU9OX0lEX0ZSQU1F
X0NBUEFDSVRZLAorICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9uZXdfY29ubmVjdGlvbl9p
ZF9kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oY29ubmVjdGlvbl9pZCwpLAor
ICAgICAgICApCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGNvbm5lY3Rpb25faWQuc2VxdWVu
Y2VfbnVtYmVyKQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZXRpcmVfcHJpb3JfdG8pCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihjb25uZWN0aW9uX2lkLmNpZCkpCisgICAgICAgIGJ1
Zi5wdXNoX2J5dGVzKGNvbm5lY3Rpb25faWQuY2lkKQorICAgICAgICBidWYucHVzaF9ieXRlcyhj
b25uZWN0aW9uX2lkLnN0YXRlbGVzc19yZXNldF90b2tlbikKKworICAgICAgICBjb25uZWN0aW9u
X2lkLndhc19zZW50ID0gVHJ1ZQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5D
b25uZWN0aW9uSWRJc3N1ZWQoY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkpCisKKyAg
ICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lk
LAorICAgICAgICAgICAgICAgICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAor
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9Y29ubmVjdGlvbl9pZC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1jb25u
ZWN0aW9uX2lkLnN0YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAg
ICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAg
ICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuUEFUSF9DSEFMTEVOR0UsIGNhcGFjaXR5PVBBVEhfQ0hBTExFTkdF
X0ZSQU1FX0NBUEFDSVRZCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY2hhbGxl
bmdlKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxs
ZW5nZV9mcmFtZShkYXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3Jp
dGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tl
dEJ1aWxkZXIsIGNoYWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9
IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVT
UE9OU0UsIGNhcGFjaXR5PVBBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUK
KyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBi
dWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5f
cXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1jaGFsbGVuZ2UpCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYs
IGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCB1aWRzOiBMaXN0W2ludF0gPSBbXSwgY29tbWVu
dD0iIgorICAgICk6CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlBJTkcsCisgICAgICAgICAgICBjYXBhY2l0eT1QSU5HX0ZSQU1FX0NBUEFD
SVRZLAorICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9waW5nX2RlbGl2ZXJ5LAorICAgICAg
ICAgICAgaGFuZGxlcl9hcmdzPSh0dXBsZSh1aWRzKSwpLAorICAgICAgICApCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICJTZW5kaW5nIFBJTkclcyBpbiBwYWNrZXQg
JWQiLAorICAgICAgICAgICAgIiAoJXMpIiAlIGNvbW1lbnQgaWYgY29tbWVudCBlbHNlICIiLAor
ICAgICAgICAgICAgYnVpbGRlci5wYWNrZXRfbnVtYmVyLAorICAgICAgICApCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2VsZi5fcXVpY19s
b2dnZXIuZW5jb2RlX3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfd3JpdGVfcmV0aXJlX2Nvbm5l
Y3Rpb25faWRfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVy
LCBzZXF1ZW5jZV9udW1iZXI6IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVp
bGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5F
Q1RJT05fSUQsCisgICAgICAgICAgICBjYXBhY2l0eT1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBB
Q0lUWSwKKyAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRf
ZGVsaXZlcnksCisgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHNlcXVlbmNlX251bWJlciwpLAor
ICAgICAgICApCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNlcXVlbmNlX251bWJlcikKKwor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25f
aWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0
ZV9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQYWNr
ZXRCdWlsZGVyLAorICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBzdHJl
YW06IFF1aWNTdHJlYW0sCisgICAgICAgIG1heF9vZmZzZXQ6IGludCwKKyAgICApIC0+IGludDoK
KyAgICAgICAgIyB0aGUgZnJhbWUgZGF0YSBzaXplIGlzIGNvbnN0cmFpbmVkIGJ5IG91ciBwZWVy
J3MgTUFYX0RBVEEgYW5kCisgICAgICAgICMgdGhlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgY3Vy
cmVudCBwYWNrZXQKKyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAoCisgICAgICAgICAgICAzCisg
ICAgICAgICAgICArIHNpemVfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAgICAg
ICsgKHNpemVfdWludF92YXIoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQpIGlmIHN0cmVhbS5uZXh0
X3NlbmRfb2Zmc2V0IGVsc2UgMCkKKyAgICAgICAgKQorICAgICAgICBwcmV2aW91c19zZW5kX2hp
Z2hlc3QgPSBzdHJlYW0uX3NlbmRfaGlnaGVzdAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRf
ZnJhbWUoCisgICAgICAgICAgICBidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFt
ZV9vdmVyaGVhZCwgbWF4X29mZnNldAorICAgICAgICApCisKKyAgICAgICAgaWYgZnJhbWUgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1f
QkFTRSB8IDIgICMgbGVuZ3RoCisgICAgICAgICAgICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAg
ICAgICAgICAgZnJhbWVfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAg
ICAgICAgICAgICAgZnJhbWVfdHlwZSB8PSAxCisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAg
Y2FwYWNpdHk9ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0u
b25fZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9m
ZnNldCwgZnJhbWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAg
ICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJh
bWUub2Zmc2V0KQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8
IDB4NDAwMCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAg
ICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1f
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc3RyZWFtX2lkPXN0cmVhbS5z
dHJlYW1faWQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgcmV0dXJuIHN0cmVhbS5fc2VuZF9oaWdoZXN0IC0gcHJldmlvdXNfc2VuZF9oaWdo
ZXN0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF93cml0
ZV9zdHJlYW1fbGltaXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRl
ciwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFpc2UgTUFYX1NUUkVBTV9EQVRBIGlmIG5lZWRl
ZC4KKworICAgICAgICBUaGUgb25seSBjYXNlIHdoZXJlIGBzdHJlYW0ubWF4X3N0cmVhbV9kYXRh
X2xvY2FsYCBpcyB6ZXJvIGlzIGZvcgorICAgICAgICBsb2NhbGx5IGNyZWF0ZWQgdW5pZGlyZWN0
aW9uYWwgc3RyZWFtcy4gV2Ugc2tpcCBzdWNoIHN0cmVhbXMgdG8gYXZvaWQKKyAgICAgICAgc3B1
cmlvdXMgbG9nZ2luZy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uX3JlY3Zf
aGlnaGVzdCAqIDIgPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICk6Cisg
ICAgICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsICo9IDIKKyAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIGxvY2FsIG1h
eF9zdHJlYW1fZGF0YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgaWYgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50
ICE9IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVB
TV9EQVRBLAorICAgICAgICAgICAgICAgIGNhcGFjaXR5PU1BWF9TVFJFQU1fREFUQV9GUkFNRV9D
QVBBQ0lUWSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9zdHJlYW1fZGF0
YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHN0cmVhbSwpLAorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVhbV9p
ZCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFf
bG9jYWwpCisgICAgICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBz
dHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisg
ICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhpbXVtPXN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWws
IHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAg
ICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGZyYW1lX3R5cGU6IFF1aWNG
cmFtZVR5cGUsIGxpbWl0OiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxk
ZXIuc3RhcnRfZnJhbWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9U1RSRUFNU19CTE9DS0VEX0NBUEFD
SVRZKQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihsaW1pdCkKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAg
ICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUu
U1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNk
MzU4NzM0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9jcnlwdG8ucHkKQEAgLTAsMCArMSwxOTYgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwg
Q3J5cHRvRXJyb3IsIEhlYWRlclByb3RlY3Rpb24KK2Zyb20gLi50bHMgaW1wb3J0IENpcGhlclN1
aXRlLCBjaXBoZXJfc3VpdGVfaGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAor
ZnJvbSAucGFja2V0IGltcG9ydCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIK
KworQ0lQSEVSX1NVSVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6
IChiImFlcy0xMjgtZWNiIiwgYiJhZXMtMTI4LWdjbSIpLAorICAgIENpcGhlclN1aXRlLkFFU18y
NTZfR0NNX1NIQTM4NDogKGIiYWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCisgICAgQ2lw
aGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hh
MjAtcG9seTEzMDUiKSwKK30KK0lOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVT
XzEyOF9HQ01fU0hBMjU2CitJTklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVm
NzEyYzcyZWJiNWExMWE3ZDI0MzJiYjQ2MzY1YmVmOWY1MDIiKQorU0FNUExFX1NJWkUgPSAxNgor
CisKK2NsYXNzIEtleVVuYXZhaWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgorICAgIHBhc3MKKwor
CitkZWYgZGVyaXZlX2tleV9pdl9ocCgKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBz
ZWNyZXQ6IGJ5dGVzCispIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgorICAgIGFsZ29y
aXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICBpZiBjaXBoZXJfc3Vp
dGUgaW4gWworICAgICAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAg
IENpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICBdOgorICAgICAgICBr
ZXlfc2l6ZSA9IDMyCisgICAgZWxzZToKKyAgICAgICAga2V5X3NpemUgPSAxNgorICAgIHJldHVy
biAoCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMg
a2V5IiwgYiIiLCBrZXlfc2l6ZSksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRo
bSwgc2VjcmV0LCBiInF1aWMgaXYiLCBiIiIsIDEyKSwKKyAgICAgICAgaGtkZl9leHBhbmRfbGFi
ZWwoYWxnb3JpdGhtLCBzZWNyZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAorICAgICkK
KworCitjbGFzcyBDcnlwdG9Db250ZXh0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhh
c2U6IGludCA9IDApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0g
PSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0g
PSBOb25lCisgICAgICAgIHNlbGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9u
ZQorICAgICAgICBzZWxmLmtleV9waGFzZSA9IGtleV9waGFzZQorICAgICAgICBzZWxmLnNlY3Jl
dDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFs
W2ludF0gPSBOb25lCisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBh
Y2tldDogYnl0ZXMsIGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJl
cjogaW50CisgICAgKSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06CisgICAgICAg
IGlmIHNlbGYuYWVhZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVF
cnJvcigiRGVjcnlwdGlvbiBrZXkgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgIyBoZWFk
ZXIgcHJvdGVjdGlvbgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxm
LmhwLnJlbW92ZShwYWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQpCisgICAgICAgIGZpcnN0X2J5dGUg
PSBwbGFpbl9oZWFkZXJbMF0KKworICAgICAgICAjIHBhY2tldCBudW1iZXIKKyAgICAgICAgcG5f
bGVuZ3RoID0gKGZpcnN0X2J5dGUgJiAweDAzKSArIDEKKyAgICAgICAgcGFja2V0X251bWJlciA9
IGRlY29kZV9wYWNrZXRfbnVtYmVyKAorICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVu
Z3RoICogOCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgIyBk
ZXRlY3Qga2V5IHBoYXNlIGNoYW5nZQorICAgICAgICBjcnlwdG8gPSBzZWxmCisgICAgICAgIGlm
IG5vdCBpc19sb25nX2hlYWRlcihmaXJzdF9ieXRlKToKKyAgICAgICAgICAgIGtleV9waGFzZSA9
IChmaXJzdF9ieXRlICYgNCkgPj4gMgorICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYu
a2V5X3BoYXNlOgorICAgICAgICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYp
CisKKyAgICAgICAgIyBwYXlsb2FkIHByb3RlY3Rpb24KKyAgICAgICAgcGF5bG9hZCA9IGNyeXB0
by5hZWFkLmRlY3J5cHQoCisgICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0s
IHBsYWluX2hlYWRlciwgcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJu
IHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKKwor
ICAgIGRlZiBlbmNyeXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRl
cywgcGxhaW5fcGF5bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0
ZXM6CisgICAgICAgIGFzc2VydCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBu
b3QgYXZhaWxhYmxlIgorCisgICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHBy
b3RlY3RlZF9wYXlsb2FkID0gc2VsZi5hZWFkLmVuY3J5cHQoCisgICAgICAgICAgICBwbGFpbl9w
YXlsb2FkLCBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAg
ICMgaGVhZGVyIHByb3RlY3Rpb24KKyAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5f
aGVhZGVyLCBwcm90ZWN0ZWRfcGF5bG9hZCkKKworICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCisKKyAgICBkZWYgc2V0
dXAoc2VsZiwgY2lwaGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lv
bjogaW50KSAtPiBOb25lOgorICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFt
ZSA9IENJUEhFUl9TVUlURVNbY2lwaGVyX3N1aXRlXQorCisgICAgICAgIGtleSwgaXYsIGhwID0g
ZGVyaXZlX2tleV9pdl9ocChjaXBoZXJfc3VpdGUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hZWFk
ID0gQUVBRChhZWFkX2NpcGhlcl9uYW1lLCBrZXksIGl2KQorICAgICAgICBzZWxmLmNpcGhlcl9z
dWl0ZSA9IGNpcGhlcl9zdWl0ZQorICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbiho
cF9jaXBoZXJfbmFtZSwgaHApCisgICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0CisgICAgICAg
IHNlbGYudmVyc2lvbiA9IHZlcnNpb24KKworICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLmFlYWQgPSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0g
Tm9uZQorICAgICAgICBzZWxmLmhwID0gTm9uZQorICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUK
KworCitkZWYgYXBwbHlfa2V5X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5
cHRvQ29udGV4dCkgLT4gTm9uZToKKyAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAorICAgIHNl
bGYua2V5X3BoYXNlID0gY3J5cHRvLmtleV9waGFzZQorICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRv
LnNlY3JldAorCisKK2RlZiBuZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBD
cnlwdG9Db250ZXh0OgorICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lw
aGVyX3N1aXRlKQorCisgICAgY3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5v
dCBzZWxmLmtleV9waGFzZSkpCisgICAgY3J5cHRvLnNldHVwKAorICAgICAgICBjaXBoZXJfc3Vp
dGU9c2VsZi5jaXBoZXJfc3VpdGUsCisgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgK
KyAgICAgICAgICAgIGFsZ29yaXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxn
b3JpdGhtLmRpZ2VzdF9zaXplCisgICAgICAgICksCisgICAgICAgIHZlcnNpb249c2VsZi52ZXJz
aW9uLAorICAgICkKKyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3MgQ3J5cHRvUGFpcjoKKyAg
ICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXpl
ID0gMTYKKyAgICAgICAgc2VsZi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYu
c2VuZCA9IENyeXB0b0NvbnRleHQoKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3Rl
ZCA9IEZhbHNlCisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tl
dDogYnl0ZXMsIGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjog
aW50CisgICAgKSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludF06CisgICAgICAgIHBsYWluX2hl
YWRlciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNy
eXB0X3BhY2tldCgKKyAgICAgICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0
ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisgICAgICAgIGlmIHVwZGF0ZV9rZXk6CisgICAg
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwg
cGF5bG9hZCwgcGFja2V0X251bWJlcgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAg
ICBzZWxmLCBwbGFpbl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0
X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tl
eV9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0
dXJuIHNlbGYuc2VuZC5lbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIpCisKKyAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVz
LCBpc19jbGllbnQ6IGJvb2wsIHZlcnNpb246IGludCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNf
Y2xpZW50OgorICAgICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGlu
IiwgYiJjbGllbnQgaW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBz
ZW5kX2xhYmVsID0gYiJjbGllbnQgaW4iLCBiInNlcnZlciBpbiIKKworICAgICAgICBhbGdvcml0
aG0gPSBjaXBoZXJfc3VpdGVfaGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKKyAgICAgICAgaW5p
dGlhbF9zZWNyZXQgPSBoa2RmX2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkK
KyAgICAgICAgc2VsZi5yZWN2LnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJ
QUxfQ0lQSEVSX1NVSVRFLAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAor
ICAgICAgICAgICAgICAgIGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIi
IiwgYWxnb3JpdGhtLmRpZ2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVy
c2lvbj12ZXJzaW9uLAorICAgICAgICApCisgICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKKyAgICAg
ICAgICAgIGNpcGhlcl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNl
Y3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRp
YWxfc2VjcmV0LCBzZW5kX2xhYmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgKQorCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigp
CisgICAgICAgIHNlbGYuc2VuZC50ZWFyZG93bigpCisKKyAgICBkZWYgdXBkYXRlX2tleShzZWxm
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgorICAgICAgICBp
ZiBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHJldHVybiBpbnQobm90
IHNlbGYucmVjdi5rZXlfcGhhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5yZWN2LmtleV9waGFzZQorCisgICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6
CisgICAgICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYu
cmVjdikpCisgICAgICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNl
KHNlbGYuc2VuZCkpCisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMwNjkz
OTM2YzE4ODE2YWUxMTgzMjZkMmEyMjUxMjk1MjQ1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitm
cm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRp
b25hbAorCisKK2NsYXNzIFF1aWNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBR
VUlDIGV2ZW50cy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBD
b25uZWN0aW9uSWRJc3N1ZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9uX2lkOiBieXRlcwor
CisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25JZFJldGlyZWQoUXVpY0V2ZW50KToKKyAg
ICBjb25uZWN0aW9uX2lkOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25U
ZXJtaW5hdGVkKFF1aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIENvbm5lY3Rpb25UZXJtaW5h
dGVkIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIFFVSUMgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVk
LgorICAgICIiIgorCisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHdo
aWNoIHdhcyBzcGVjaWZpZWQgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiIKKworICAgIGZy
YW1lX3R5cGU6IE9wdGlvbmFsW2ludF0KKyAgICAiVGhlIGZyYW1lIHR5cGUgd2hpY2ggY2F1c2Vk
IHRoZSBjb25uZWN0aW9uIHRvIGJlIGNsb3NlZCwgb3IgYE5vbmVgLiIKKworICAgIHJlYXNvbl9w
aHJhc2U6IHN0cgorICAgICJUaGUgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB3aGljaCB0aGUg
Y29ubmVjdGlvbiB3YXMgY2xvc2VkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBEYXRhZ3JhbUZy
YW1lUmVjZWl2ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YWdyYW1GcmFtZVJl
Y2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW4gYSBEQVRBR1JBTSBmcmFtZSBpcyByZWNlaXZlZC4K
KyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNl
aXZlZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgSGFuZHNoYWtlQ29tcGxldGVkKFF1aWNFdmVu
dCk6CisgICAgIiIiCisgICAgVGhlIEhhbmRzaGFrZUNvbXBsZXRlZCBldmVudCBpcyBmaXJlZCB3
aGVuIHRoZSBUTFMgaGFuZHNoYWtlIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJv
dG9jb2w6IE9wdGlvbmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlh
dGVkIHVzaW5nIEFMUE4sIG9yIGBOb25lYC4iCisKKyAgICBlYXJseV9kYXRhX2FjY2VwdGVkOiBi
b29sCisgICAgIldoZXRoZXIgZWFybHkgKDAtUlRUKSBkYXRhIHdhcyBhY2NlcHRlZCBieSB0aGUg
cmVtb3RlIHBlZXIuIgorCisgICAgc2Vzc2lvbl9yZXN1bWVkOiBib29sCisgICAgIldoZXRoZXIg
YSBUTFMgc2Vzc2lvbiB3YXMgcmVzdW1lZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUGluZ0Fj
a25vd2xlZGdlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrbm93bGVkZ2Vk
IGV2ZW50IGlzIGZpcmVkIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZC4KKyAgICAi
IiIKKworICAgIHVpZDogaW50CisgICAgIlRoZSB1bmlxdWUgSUQgb2YgdGhlIFBJTkcuIgorCisK
K0BkYXRhY2xhc3MKK2NsYXNzIFByb3RvY29sTmVnb3RpYXRlZChRdWljRXZlbnQpOgorICAgICIi
IgorICAgIFRoZSBQcm90b2NvbE5lZ290aWF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBBTFBOIG5l
Z290aWF0aW9uIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlv
bmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFM
UE4sIG9yIGBOb25lYC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgU3RyZWFtRGF0YVJlY2VpdmVk
KFF1aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFN0cmVhbURhdGFSZWNlaXZlZCBldmVudCBp
cyBmaXJlZCB3aGVuZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEKKyAgICBzdHJlYW0uCisgICAg
IiIiCisKKyAgICBkYXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQu
IgorCisgICAgZW5kX3N0cmVhbTogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUg
aGFkIHRoZSBGSU4gYml0IHNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQg
b2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworCitAZGF0YWNsYXNz
CitjbGFzcyBTdHJlYW1SZXNldChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1S
ZXNldCBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSByZW1vdGUgcGVlciByZXNldHMgYSBzdHJlYW0u
CisgICAgIiIiCisKKyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAiVGhlIGVycm9yIGNvZGUgdGhh
dCB0cmlnZ2VyZWQgdGhlIHJlc2V0LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJ
RCBvZiB0aGUgc3RyZWFtIHRoYXQgd2FzIHJlc2V0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2xvZ2dlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDk3NWJkNTkyZTFjMDg3ODI1Y2Q5NWM2MDNjNjkw
NmE3NDNkYjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvbG9nZ2VyLnB5CkBAIC0wLDAgKzEsMjY2IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0
aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFu
eSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5wYWNrZXQgaW1w
b3J0ICgKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElB
TCwKKyAgICBQQUNLRVRfVFlQRV9NQVNLLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAg
UEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQsCisgICAgUXVpY1N0
cmVhbUZyYW1lLAorICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorKQorZnJvbSAucmFuZ2Vz
ZXQgaW1wb3J0IFJhbmdlU2V0CisKK1BBQ0tFVF9UWVBFX05BTUVTID0geworICAgIFBBQ0tFVF9U
WVBFX0lOSVRJQUw6ICJpbml0aWFsIiwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6ICJoYW5k
c2hha2UiLAorICAgIFBBQ0tFVF9UWVBFX1pFUk9fUlRUOiAiMFJUVCIsCisgICAgUEFDS0VUX1RZ
UEVfT05FX1JUVDogIjFSVFQiLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZOiAicmV0cnkiLAorfQor
CisKK2RlZiBoZXhkdW1wKGRhdGE6IGJ5dGVzKSAtPiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lp
LmhleGxpZnkoZGF0YSkuZGVjb2RlKCJhc2NpaSIpCisKKworY2xhc3MgUXVpY0xvZ2dlclRyYWNl
OgorICAgICIiIgorICAgIEEgUVVJQyBldmVudCB0cmFjZS4KKworICAgIEV2ZW50cyBhcmUgbG9n
Z2VkIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2VlOiBo
dHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFsb2ct
ZXZlbnQtZGVmaW5pdGlvbnMtcXVpYy1oMy5odG1sCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgKiwgaXNfY2xpZW50OiBib29sLCBvZGNpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAg
ICAgIHNlbGYuX29kY2lkID0gb2RjaWQKKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtUdXBs
ZVtmbG9hdCwgc3RyLCBzdHIsIERpY3Rbc3RyLCBBbnldXV0gPSBkZXF1ZSgpCisgICAgICAgIHNl
bGYuX3ZhbnRhZ2VfcG9pbnQgPSB7CisgICAgICAgICAgICAibmFtZSI6ICJhaW9xdWljIiwKKyAg
ICAgICAgICAgICJ0eXBlIjogImNsaWVudCIgaWYgaXNfY2xpZW50IGVsc2UgInNlcnZlciIsCisg
ICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfYWNrX2ZyYW1lKHNlbGYsIHJhbmdlczogUmFuZ2VT
ZXQsIGRlbGF5OiBmbG9hdCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICJhY2tfZGVsYXkiOiBzdHIoc2VsZi5lbmNvZGVfdGltZShkZWxheSkpLAorICAgICAgICAgICAg
ImFja2VkX3JhbmdlcyI6IFtbc3RyKHguc3RhcnQpLCBzdHIoeC5zdG9wIC0gMSldIGZvciB4IGlu
IHJhbmdlc10sCisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJhY2siLAorICAgICAgICB9CisK
KyAgICBkZWYgZW5jb2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGVy
cm9yX2NvZGU6IGludCwgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwgcmVhc29uX3BocmFzZTog
c3RyCisgICAgKSAtPiBEaWN0OgorICAgICAgICBhdHRycyA9IHsKKyAgICAgICAgICAgICJlcnJv
cl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJlcnJvcl9zcGFjZSI6ICJhcHBsaWNh
dGlvbiIgaWYgZnJhbWVfdHlwZSBpcyBOb25lIGVsc2UgInRyYW5zcG9ydCIsCisgICAgICAgICAg
ICAiZnJhbWVfdHlwZSI6ICJjb25uZWN0aW9uX2Nsb3NlIiwKKyAgICAgICAgICAgICJyYXdfZXJy
b3JfY29kZSI6IGVycm9yX2NvZGUsCisgICAgICAgICAgICAicmVhc29uIjogcmVhc29uX3BocmFz
ZSwKKyAgICAgICAgfQorICAgICAgICBpZiBmcmFtZV90eXBlIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgYXR0cnNbInRyaWdnZXJfZnJhbWVfdHlwZSJdID0gZnJhbWVfdHlwZQorCisgICAgICAg
IHJldHVybiBhdHRycworCisgICAgZGVmIGVuY29kZV9jcnlwdG9fZnJhbWUoc2VsZiwgZnJhbWU6
IFF1aWNTdHJlYW1GcmFtZSkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICJmcmFtZV90eXBlIjogImNyeXB0byIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGZyYW1l
LmRhdGEpLAorICAgICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAorICAgICAg
ICB9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBsaW1pdDogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFfYmxvY2tlZCIs
ICJsaW1pdCI6IHN0cihsaW1pdCl9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFncmFtX2ZyYW1lKHNl
bGYsIGxlbmd0aDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjog
ImRhdGFncmFtIiwgImxlbmd0aCI6IGxlbmd0aH0KKworICAgIGRlZiBlbmNvZGVfaGFuZHNoYWtl
X2RvbmVfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6
ICJoYW5kc2hha2VfZG9uZSJ9CisKKyAgICBkZWYgZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYs
IG1heGltdW06IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJt
YXhfZGF0YSIsICJtYXhpbXVtIjogc3RyKG1heGltdW0pfQorCisgICAgZGVmIGVuY29kZV9tYXhf
c3RyZWFtX2RhdGFfZnJhbWUoc2VsZiwgbWF4aW11bTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4g
RGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogIm1heF9z
dHJlYW1fZGF0YSIsCisgICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAg
ICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVm
IGVuY29kZV9tYXhfc3RyZWFtc19mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCwg
bWF4aW11bTogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZy
YW1lX3R5cGUiOiAibWF4X3N0cmVhbXMiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4
aW11bSksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlmIGlz
X3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAg
ICBjb25uZWN0aW9uX2lkOiBieXRlcywKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvOiBpbnQsCisg
ICAgICAgIHNlcXVlbmNlX251bWJlcjogaW50LAorICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9r
ZW46IGJ5dGVzLAorICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICJjb25uZWN0aW9uX2lkIjogaGV4ZHVtcChjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJm
cmFtZV90eXBlIjogIm5ld19jb25uZWN0aW9uX2lkIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBs
ZW4oY29ubmVjdGlvbl9pZCksCisgICAgICAgICAgICAicmVzZXRfdG9rZW4iOiBoZXhkdW1wKHN0
YXRlbGVzc19yZXNldF90b2tlbiksCisgICAgICAgICAgICAicmV0aXJlX3ByaW9yX3RvIjogc3Ry
KHJldGlyZV9wcmlvcl90byksCisgICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNl
cXVlbmNlX251bWJlciksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X3Rva2VuX2Zy
YW1lKHNlbGYsIHRva2VuOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICJmcmFtZV90eXBlIjogIm5ld190b2tlbiIsCisgICAgICAgICAgICAibGVuZ3RoIjog
bGVuKHRva2VuKSwKKyAgICAgICAgICAgICJ0b2tlbiI6IGhleGR1bXAodG9rZW4pLAorICAgICAg
ICB9CisKKyAgICBkZWYgZW5jb2RlX3BhZGRpbmdfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJwYWRkaW5nIn0KKworICAgIGRlZiBlbmNvZGVfcGF0
aF9jaGFsbGVuZ2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJl
dHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJwYXRoX2NoYWxsZW5n
ZSJ9CisKKyAgICBkZWYgZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0
ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJh
bWVfdHlwZSI6ICJwYXRoX3Jlc3BvbnNlIn0KKworICAgIGRlZiBlbmNvZGVfcGluZ19mcmFtZShz
ZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBpbmcifQorCisg
ICAgZGVmIGVuY29kZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2Nv
ZGU6IGludCwgZmluYWxfc2l6ZTogaW50LCBzdHJlYW1faWQ6IGludAorICAgICkgLT4gRGljdDoK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwK
KyAgICAgICAgICAgICJmaW5hbF9zaXplIjogc3RyKGZpbmFsX3NpemUpLAorICAgICAgICAgICAg
ImZyYW1lX3R5cGUiOiAicmVzZXRfc3RyZWFtIiwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBz
dHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9yZXRpcmVfY29ubmVj
dGlvbl9pZF9mcmFtZShzZWxmLCBzZXF1ZW5jZV9udW1iZXI6IGludCkgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInJldGlyZV9jb25uZWN0aW9u
X2lkIiwKKyAgICAgICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVy
KSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1l
KHNlbGYsIGxpbWl0OiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtX2RhdGFfYmxvY2tlZCIsCisg
ICAgICAgICAgICAibGltaXQiOiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6
IHN0cihzdHJlYW1faWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0b3Bfc2VuZGlu
Z19mcmFtZShzZWxmLCBlcnJvcl9jb2RlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0Ogor
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RvcF9zZW5kaW5n
IiwKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9z
dHJlYW1fZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSwgc3RyZWFtX2lkOiBpbnQp
IC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZmluIjogZnJhbWUuZmlu
LAorICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtIiwKKyAgICAgICAgICAgICJsZW5n
dGgiOiBsZW4oZnJhbWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9m
ZnNldCksCisgICAgICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAg
IH0KKworICAgIGRlZiBlbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKHNlbGYsIGlzX3VuaWRp
cmVjdGlvbmFsOiBib29sLCBsaW1pdDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtc19ibG9ja2VkIiwKKyAgICAgICAgICAg
ICJsaW1pdCI6IHN0cihsaW1pdCksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGly
ZWN0aW9uYWwiIGlmIGlzX3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAg
ICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3RpbWUoc2VsZiwgc2Vjb25kczogZmxvYXQpIC0+IGlu
dDoKKyAgICAgICAgIiIiCisgICAgICAgIENvbnZlcnQgYSB0aW1lIHRvIGludGVnZXIgbWljcm9z
ZWNvbmRzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWNvbmRzICogMTAwMDAw
MCkKKworICAgIGRlZiBlbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgIHNlbGYs
IG93bmVyOiBzdHIsIHBhcmFtZXRlcnM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzCisgICAgKSAt
PiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgZGF0YTogRGljdFtzdHIsIEFueV0gPSB7Im93bmVy
Ijogb3duZXJ9CisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBwYXJhbWV0
ZXJzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtX3Zh
bHVlLCBib29sKToKKyAgICAgICAgICAgICAgICBkYXRhW3BhcmFtX25hbWVdID0gcGFyYW1fdmFs
dWUKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYnl0ZXMpOgorICAg
ICAgICAgICAgICAgIGRhdGFbcGFyYW1fbmFtZV0gPSBoZXhkdW1wKHBhcmFtX3ZhbHVlKQorICAg
ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBpbnQpOgorICAgICAgICAgICAg
ICAgIGRhdGFbcGFyYW1fbmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICByZXR1cm4gZGF0YQor
CisgICAgZGVmIGxvZ19ldmVudChzZWxmLCAqLCBjYXRlZ29yeTogc3RyLCBldmVudDogc3RyLCBk
YXRhOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCh0aW1lLnRp
bWUoKSwgY2F0ZWdvcnksIGV2ZW50LCBkYXRhKSkKKworICAgIGRlZiBwYWNrZXRfdHlwZShzZWxm
LCBwYWNrZXRfdHlwZTogaW50KSAtPiBzdHI6CisgICAgICAgIHJldHVybiBQQUNLRVRfVFlQRV9O
QU1FUy5nZXQocGFja2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLLCAiMVJUVCIpCisKKyAgICBk
ZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAg
IFJldHVybiB0aGUgdHJhY2UgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFz
IEpTT04uCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9ldmVudHM6CisgICAgICAgICAg
ICByZWZlcmVuY2VfdGltZSA9IHNlbGYuX2V2ZW50c1swXVswXQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmVmZXJlbmNlX3RpbWUgPSAwLjAKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAgICAi
Y29tbW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAiT0RDSUQiOiBoZXhkdW1wKHNlbGYu
X29kY2lkKSwKKyAgICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiBzdHIoc2VsZi5lbmNv
ZGVfdGltZShyZWZlcmVuY2VfdGltZSkpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJl
dmVudF9maWVsZHMiOiBbInJlbGF0aXZlX3RpbWUiLCAiY2F0ZWdvcnkiLCAiZXZlbnRfdHlwZSIs
ICJkYXRhIl0sCisgICAgICAgICAgICAiZXZlbnRzIjogbGlzdCgKKyAgICAgICAgICAgICAgICBt
YXAoCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBldmVudDogKAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyKHNlbGYuZW5jb2RlX3RpbWUoZXZlbnRbMF0gLSByZWZlcmVuY2VfdGltZSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRbMV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBldmVudFsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzNdLAorICAgICAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMsCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJ2YW50YWdlX3BvaW50
Ijogc2VsZi5fdmFudGFnZV9wb2ludCwKKyAgICAgICAgfQorCisKK2NsYXNzIFF1aWNMb2dnZXI6
CisgICAgIiIiCisgICAgQSBRVUlDIGV2ZW50IGxvZ2dlci4KKworICAgIFNlcnZlcyBhcyBhIGNv
bnRhaW5lciBmb3IgdHJhY2VzIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAx
LgorCisgICAgU2VlOiBodHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9k
cmFmdC1tYXJ4LXFsb2ctbWFpbi1zY2hlbWEuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYWNlczogTGlzdFtRdWljTG9nZ2Vy
VHJhY2VdID0gW10KKworICAgIGRlZiBzdGFydF90cmFjZShzZWxmLCBpc19jbGllbnQ6IGJvb2ws
IG9kY2lkOiBieXRlcykgLT4gUXVpY0xvZ2dlclRyYWNlOgorICAgICAgICB0cmFjZSA9IFF1aWNM
b2dnZXJUcmFjZShpc19jbGllbnQ9aXNfY2xpZW50LCBvZGNpZD1vZGNpZCkKKyAgICAgICAgc2Vs
Zi5fdHJhY2VzLmFwcGVuZCh0cmFjZSkKKyAgICAgICAgcmV0dXJuIHRyYWNlCisKKyAgICBkZWYg
ZW5kX3RyYWNlKHNlbGYsIHRyYWNlOiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAg
IGFzc2VydCB0cmFjZSBpbiBzZWxmLl90cmFjZXMsICJRdWljTG9nZ2VyVHJhY2UgZG9lcyBub3Qg
YmVsb25nIHRvIFF1aWNMb2dnZXIiCisKKyAgICBkZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0
ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdHJhY2VzIGFzIGEgZGlj
dGlvbmFyeSB3aGljaCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgorICAgICAgICAiIiIKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLAorICAg
ICAgICAgICAgInRyYWNlcyI6IFt0cmFjZS50b19kaWN0KCkgZm9yIHRyYWNlIGluIHNlbGYuX3Ry
YWNlc10sCisgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL3BhY2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYwYmNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CkBA
IC0wLDAgKzEsNTA4IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9y
dCBvcworZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0
IEludEVudW0KK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJv
bSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNH
Q00KKworZnJvbSAuLmJ1ZmZlciBpbXBvcnQgQnVmZmVyCitmcm9tIC4udGxzIGltcG9ydCBwdWxs
X2Jsb2NrLCBwdXNoX2Jsb2NrCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFD
S0VUX0xPTkdfSEVBREVSID0gMHg4MAorUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKK1BBQ0tFVF9T
UElOX0JJVCA9IDB4MjAKKworUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURF
UiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDAwCitQQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tF
VF9MT05HX0hFQURFUiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCitQQUNLRVRfVFlQRV9IQU5E
U0hBS0UgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAorUEFD
S0VUX1RZUEVfUkVUUlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwg
MHgzMAorUEFDS0VUX1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKK1BBQ0tFVF9UWVBF
X01BU0sgPSAweEYwCisKK0NPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAorUEFDS0VUX05VTUJF
Ul9NQVhfU0laRSA9IDQKK1JFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMy
ZWNkYjJhMjEzM2M4NDFlNDA0M2RmMjdkNDQzMCIpCitSRVRSWV9BRUFEX05PTkNFID0gYmluYXNj
aWkudW5oZXhsaWZ5KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQorUkVUUllfSU5URUdSSVRZ
X1RBR19TSVpFID0gMTYKKworCitjbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgorICAgIE5P
X0VSUk9SID0gMHgwCisgICAgSU5URVJOQUxfRVJST1IgPSAweDEKKyAgICBTRVJWRVJfQlVTWSA9
IDB4MgorICAgIEZMT1dfQ09OVFJPTF9FUlJPUiA9IDB4MworICAgIFNUUkVBTV9MSU1JVF9FUlJP
UiA9IDB4NAorICAgIFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQorICAgIEZJTkFMX1NJWkVfRVJS
T1IgPSAweDYKKyAgICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NworICAgIFRSQU5TUE9SVF9Q
QVJBTUVURVJfRVJST1IgPSAweDgKKyAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5
CisgICAgUFJPVE9DT0xfVklPTEFUSU9OID0gMHhBCisgICAgSU5WQUxJRF9UT0tFTiA9IDB4Qgor
ICAgIENSWVBUT19CVUZGRVJfRVhDRUVERUQgPSAweEQKKyAgICBDUllQVE9fRVJST1IgPSAweDEw
MAorCisKK2NsYXNzIFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6CisgICAgTkVHT1RJQVRJ
T04gPSAwCisgICAgRFJBRlRfMjUgPSAweEZGMDAwMDE5CisgICAgRFJBRlRfMjYgPSAweEZGMDAw
MDFBCisgICAgRFJBRlRfMjcgPSAweEZGMDAwMDFCCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVp
Y0hlYWRlcjoKKyAgICBpc19sb25nX2hlYWRlcjogYm9vbAorICAgIHZlcnNpb246IE9wdGlvbmFs
W2ludF0KKyAgICBwYWNrZXRfdHlwZTogaW50CisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcwor
ICAgIHNvdXJjZV9jaWQ6IGJ5dGVzCisgICAgdG9rZW46IGJ5dGVzID0gYiIiCisgICAgaW50ZWdy
aXR5X3RhZzogYnl0ZXMgPSBiIiIKKyAgICByZXN0X2xlbmd0aDogaW50ID0gMAorCisKK2RlZiBk
ZWNvZGVfcGFja2V0X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0
ZWQ6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZy
b20gYSB0cnVuY2F0ZWQgcGFja2V0IG51bWJlci4KKworICAgIFNlZTogQXBwZW5kaXggQSAtIFNh
bXBsZSBQYWNrZXQgTnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQorICAgICIiIgorICAgIHdpbmRv
dyA9IDEgPDwgbnVtX2JpdHMKKyAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCisgICAgY2Fu
ZGlkYXRlID0gKGV4cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKKyAgICBpZiBj
YW5kaWRhdGUgPD0gZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwg
NjIpIC0gd2luZG93OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93CisgICAgZWxp
ZiBjYW5kaWRhdGUgPiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2lu
ZG93OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93CisgICAgZWxzZToKKyAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZQorCisKK2RlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAg
ICBwYWNrZXRfd2l0aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5
dGVzCispIC0+IGJ5dGVzOgorICAgICIiIgorICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRh
ZyBmb3IgYSBSRVRSWSBwYWNrZXQuCisgICAgIiIiCisgICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8g
cGFja2V0CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGlu
YXRpb25fY2lkKSArIGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQorICAgIGJ1Zi5wdXNoX3VpbnQ4
KGxlbihvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdp
bmFsX2Rlc3RpbmF0aW9uX2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90
YWcpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorCisgICAgIyBydW4gQUVTLTEyOC1HQ00KKyAgICBh
ZWFkID0gQUVTR0NNKFJFVFJZX0FFQURfS0VZKQorICAgIGludGVncml0eV90YWcgPSBhZWFkLmVu
Y3J5cHQoUkVUUllfQUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKKyAgICBhc3NlcnQgbGVuKGlu
dGVncml0eV90YWcpID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQorICAgIHJldHVybiBpbnRl
Z3JpdHlfdGFnCisKKworZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6
CisgICAgcmV0dXJuIGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKKworCitkZWYg
aXNfbG9uZ19oZWFkZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJldHVybiBib29s
KGZpcnN0X2J5dGUgJiBQQUNLRVRfTE9OR19IRUFERVIpCisKKworZGVmIHB1bGxfcXVpY19oZWFk
ZXIoYnVmOiBCdWZmZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+
IFF1aWNIZWFkZXI6CisgICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKworICAgIGlu
dGVncml0eV90YWcgPSBiIiIKKyAgICB0b2tlbiA9IGIiIgorICAgIGlmIGlzX2xvbmdfaGVhZGVy
KGZpcnN0X2J5dGUpOgorICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAorICAgICAgICB2ZXJz
aW9uID0gYnVmLnB1bGxfdWludDMyKCkKKworICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludDgoKQorICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4g
Q09OTkVDVElPTl9JRF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisg
ICAgICAgICAgICAgICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAl
IGRlc3RpbmF0aW9uX2NpZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZGVzdGluYXRp
b25fY2lkID0gYnVmLnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKKworICAgICAg
ICBzb3VyY2VfY2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgc291cmNl
X2NpZF9sZW5ndGggPiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiU291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9j
aWRfbGVuZ3RoKQorICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2Np
ZF9sZW5ndGgpCisKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5F
R09USUFUSU9OOgorICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAg
ICBwYWNrZXRfdHlwZSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFj
aXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IChmaXJz
dF9ieXRlICYgUEFDS0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAgICAgICAgICAgcGFja2V0X3R5
cGUgPSBmaXJzdF9ieXRlICYgUEFDS0VUX1RZUEVfTUFTSworICAgICAgICAgICAgaWYgcGFja2V0
X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5n
dGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVs
bF9ieXRlcyh0b2tlbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYu
cHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9U
WVBFX1JFVFJZOgorICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAt
IGJ1Zi50ZWxsKCkgLSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICAgICAgICAgICAgICB0
b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBpbnRl
Z3JpdHlfdGFnID0gYnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQorICAg
ICAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXN0X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICByZXR1
cm4gUXVpY0hlYWRlcigKKyAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCisgICAgICAg
ICAgICB2ZXJzaW9uPXZlcnNpb24sCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlw
ZSwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCisgICAgICAg
ICAgICBzb3VyY2VfY2lkPXNvdXJjZV9jaWQsCisgICAgICAgICAgICB0b2tlbj10b2tlbiwKKyAg
ICAgICAgICAgIGludGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKKyAgICAgICAgICAgIHJlc3Rf
bGVuZ3RoPXJlc3RfbGVuZ3RoLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgIyBzaG9y
dCBoZWFkZXIgcGFja2V0CisgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhF
RF9CSVQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBp
cyB6ZXJvIikKKworICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQ
RV9NQVNLCisgICAgICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lk
X2xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCisgICAgICAgICAgICBpc19sb25n
X2hlYWRlcj1GYWxzZSwKKyAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKKyAgICAgICAgICAgIHBh
Y2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3Rp
bmF0aW9uX2NpZCwKKyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAorICAgICAgICAgICAgdG9r
ZW49YiIiLAorICAgICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwo
KSwKKyAgICAgICAgKQorCisKK2RlZiBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICB2ZXJzaW9uOiBp
bnQsCisgICAgc291cmNlX2NpZDogYnl0ZXMsCisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywK
KyAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAorICAgIHJldHJ5X3Rva2VuOiBi
eXRlcywKKykgLT4gYnl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBjYXBhY2l0eT03
CisgICAgICAgICsgbGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4oc291cmNlX2Np
ZCkKKyAgICAgICAgKyBsZW4ocmV0cnlfdG9rZW4pCisgICAgICAgICsgUkVUUllfSU5URUdSSVRZ
X1RBR19TSVpFCisgICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQor
ICAgIGJ1Zi5wdXNoX3VpbnQzMih2ZXJzaW9uKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0
aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAgICBi
dWYucHVzaF91aW50OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291cmNl
X2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKKyAgICBidWYucHVzaF9ieXRl
cyhnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25f
Y2lkKSkKKyAgICBhc3NlcnQgYnVmLmVvZigpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVm
IGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgc291cmNlX2NpZDogYnl0ZXMs
IGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCisp
IC0+IGJ5dGVzOgorICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAg
ICArIGxlbihkZXN0aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAg
ICAgICsgNCAqIGxlbihzdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgKQorICAgIGJ1Zi5wdXNoX3Vp
bnQ4KG9zLnVyYW5kb20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCisgICAgYnVmLnB1c2hf
dWludDMyKFF1aWNQcm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgYnVmLnB1c2hfdWlu
dDgobGVuKGRlc3RpbmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25f
Y2lkKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYucHVzaF9i
eXRlcyhzb3VyY2VfY2lkKQorICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoK
KyAgICAgICAgYnVmLnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisK
KworIyBUTFMgRVhURU5TSU9OCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1ByZWZlcnJlZEFk
ZHJlc3M6CisgICAgaXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAg
aXB2Nl9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgY29ubmVjdGlvbl9p
ZDogYnl0ZXMKKyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCisKKworQGRhdGFjbGFz
cworY2xhc3MgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgb3JpZ2luYWxfY29ubmVjdGlv
bl9pZDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxb
aW50XSA9IE5vbmUKKyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9
IE5vbmUKKyAgICBtYXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5p
dGlhbF9tYXhfZGF0YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJl
YW1fZGF0YV9iaWRpX2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4
X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRp
YWxfbWF4X3N0cmVhbV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFs
X21heF9zdHJlYW1zX2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhf
c3RyZWFtc191bmk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgYWNrX2RlbGF5X2V4cG9uZW50
OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0g
PSBOb25lCisgICAgZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZh
bHNlCisgICAgcHJlZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNz
XSA9IE5vbmUKKyAgICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBxdWFudHVtX3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisKK1BBUkFN
UyA9IHsKKyAgICAwOiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCisgICAgMTog
KCJpZGxlX3RpbWVvdXQiLCBpbnQpLAorICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwg
Ynl0ZXMpLAorICAgIDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKKyAgICA0OiAoImluaXRp
YWxfbWF4X2RhdGEiLCBpbnQpLAorICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9sb2NhbCIsIGludCksCisgICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3Jl
bW90ZSIsIGludCksCisgICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQp
LAorICAgIDg6ICgiaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKKyAgICA5OiAoImlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pIiwgaW50KSwKKyAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25l
bnQiLCBpbnQpLAorICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAorICAgIDEyOiAoImRp
c2FibGVfYWN0aXZlX21pZ3JhdGlvbiIsIGJvb2wpLAorICAgIDEzOiAoInByZWZlcnJlZF9hZGRy
ZXNzIiwgUXVpY1ByZWZlcnJlZEFkZHJlc3MpLAorICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9u
X2lkX2xpbWl0IiwgaW50KSwKKyAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGlu
dCksCisgICAgMzEyNzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKK30KKworCitkZWYg
cHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICBpcHY0X2FkZHJlc3MgPSBOb25lCisgICAgaXB2NF9ob3N0ID0gYnVmLnB1
bGxfYnl0ZXMoNCkKKyAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlw
djRfaG9zdCAhPSBieXRlcyg0KToKKyAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJl
c3MuSVB2NEFkZHJlc3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKKworICAgIGlwdjZfYWRkcmVz
cyA9IE5vbmUKKyAgICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKKyAgICBpcHY2X3Bv
cnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6Cisg
ICAgICAgIGlwdjZfYWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9z
dCkpLCBpcHY2X3BvcnQpCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3Vp
bnQ4KCkKKyAgICBjb25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9s
ZW5ndGgpCisgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisK
KyAgICByZXR1cm4gUXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgIGlwdjRfYWRkcmVzcz1p
cHY0X2FkZHJlc3MsCisgICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCisgICAgICAg
IGNvbm5lY3Rpb25faWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rv
a2VuPXN0YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICApCisKKworZGVmIHB1c2hfcXVpY19wcmVm
ZXJyZWRfYWRkcmVzcygKKyAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQ
cmVmZXJyZWRBZGRyZXNzCispIC0+IE5vbmU6CisgICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2
NF9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3Mu
SVB2NEFkZHJlc3MocHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0p
CisgICAgZWxzZToKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCisKKyAgICBpZiBw
cmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5w
dXNoX2J5dGVzKGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2Fk
ZHJlc3NbMF0pLnBhY2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRy
ZXNzLmlwdjZfYWRkcmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhi
eXRlcygxOCkpCisKKyAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29u
bmVjdGlvbl9pZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVj
dGlvbl9pZCkKKyAgICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3Nf
cmVzZXRfdG9rZW4pCisKKworZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAg
ICBidWY6IEJ1ZmZlciwgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzOgorICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKKworICAg
IGlmIHByb3RvY29sX3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgorICAg
ICAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6CisgICAgICAgICAgICBlbmQg
PSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5k
OgorICAgICAgICAgICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAg
ICAgICAgICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgICAgIHBh
cmFtX3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBB
UkFNUzoKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0K
KyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIo
KSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5
dGVzKHBhcmFtX2xlbikpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBR
dWljUHJlZmVycmVkQWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lLCBUcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBi
dWYucHVsbF9ieXRlcyhwYXJhbV9sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxs
KCkgPT0gcGFyYW1fc3RhcnQgKyBwYXJhbV9sZW4KKyAgICBlbHNlOgorICAgICAgICB3aGlsZSBu
b3QgYnVmLmVvZigpOgorICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3Zhcigp
CisgICAgICAgICAgICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAg
ICBwYXJhbV9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBB
UkFNUzoKKyAgICAgICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgorICAgICAgICAg
ICAgICAgIHBhcmFtX25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldGF0
dHIocGFyYW1zLCBwYXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAg
ICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0
cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCisgICAgICAg
ICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAg
ICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZl
cnJlZF9hZGRyZXNzKGJ1ZikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAg
ICAgIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgIGFzc2VydCBidWYudGVs
bCgpID09IHBhcmFtX3N0YXJ0ICsgcGFyYW1fbGVuCisKKyAgICByZXR1cm4gcGFyYW1zCisKKwor
ZGVmIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZlciwgcGFy
YW1zOiBRdWljVHJhbnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+
IE5vbmU6CisgICAgaWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJB
RlRfMjc6CisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgZm9y
IHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6Cisg
ICAgICAgICAgICAgICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkK
KyAgICAgICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFs
dWUgaXMgbm90IEZhbHNlOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFy
YW1faWQpCisgICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFy
YW1fdmFsdWUpCisgICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwg
cGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbV92YWx1ZSA9
IGdldGF0dHIocGFyYW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUg
aXMgbm90IE5vbmUgYW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAg
ICBwYXJhbV9idWYgPSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCisgICAgICAgICAgICAgICAgaWYg
cGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3Vp
bnRfdmFyKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBi
eXRlczoKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFs
dWUpCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRy
ZXNzOgorICAgICAgICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFy
YW1fYnVmLCBwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3Zhcihw
YXJhbV9pZCkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVs
bCgpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQorCisK
KyMgRlJBTUVTCisKKworY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKKyAgICBQQURESU5H
ID0gMHgwMAorICAgIFBJTkcgPSAweDAxCisgICAgQUNLID0gMHgwMgorICAgIEFDS19FQ04gPSAw
eDAzCisgICAgUkVTRVRfU1RSRUFNID0gMHgwNAorICAgIFNUT1BfU0VORElORyA9IDB4MDUKKyAg
ICBDUllQVE8gPSAweDA2CisgICAgTkVXX1RPS0VOID0gMHgwNworICAgIFNUUkVBTV9CQVNFID0g
MHgwOAorICAgIE1BWF9EQVRBID0gMHgxMAorICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKKyAg
ICBNQVhfU1RSRUFNU19CSURJID0gMHgxMgorICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKKyAg
ICBEQVRBX0JMT0NLRUQgPSAweDE0CisgICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKKyAg
ICBTVFJFQU1TX0JMT0NLRURfQklESSA9IDB4MTYKKyAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0g
MHgxNworICAgIE5FV19DT05ORUNUSU9OX0lEID0gMHgxOAorICAgIFJFVElSRV9DT05ORUNUSU9O
X0lEID0gMHgxOQorICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQorICAgIFBBVEhfUkVTUE9OU0Ug
PSAweDFCCisgICAgVFJBTlNQT1JUX0NMT1NFID0gMHgxQworICAgIEFQUExJQ0FUSU9OX0NMT1NF
ID0gMHgxRAorICAgIEhBTkRTSEFLRV9ET05FID0gMHgxRQorICAgIERBVEFHUkFNID0gMHgzMAor
ICAgIERBVEFHUkFNX1dJVEhfTEVOR1RIID0gMHgzMQorCisKK05PTl9BQ0tfRUxJQ0lUSU5HX0ZS
QU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ss
CisgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5Q
QURESU5HLAorICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAg
UXVpY0ZyYW1lVHlwZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCitOT05fSU5fRkxJR0hU
X0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5B
Q0ssCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5UUkFOU1BPUlRfQ0xPU0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xP
U0UsCisgICAgXQorKQorCitQUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsK
KyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKKyAgICAgICAgUXVpY0ZyYW1l
VHlwZS5QQVRIX1JFU1BPTlNFLAorICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAg
ICAgIFF1aWNGcmFtZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCisgICAgXQorKQorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFF1aWNTdHJlYW1GcmFtZToKKyAgICBkYXRhOiBieXRlcyA9IGIiIgorICAg
IGZpbjogYm9vbCA9IEZhbHNlCisgICAgb2Zmc2V0OiBpbnQgPSAwCisKKworZGVmIHB1bGxfYWNr
X2ZyYW1lKGJ1ZjogQnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKKyAgICByYW5nZXNl
dCA9IFJhbmdlU2V0KCkKKyAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3Qg
YWNrbm93bGVkZ2VkCisgICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNrX3Jh
bmdlX2NvdW50ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19jb3VudCA9IGJ1Zi5wdWxs
X3VpbnRfdmFyKCkgICMgZmlyc3QgYWNrIHJhbmdlCisgICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFj
a19jb3VudCwgZW5kICsgMSkKKyAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgZm9yIF8gaW4gcmFu
Z2UoYWNrX3JhbmdlX2NvdW50KToKKyAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkg
KyAyCisgICAgICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmFu
Z2VzZXQuYWRkKGVuZCAtIGFja19jb3VudCwgZW5kICsgMSkKKyAgICAgICAgZW5kIC09IGFja19j
b3VudAorICAgIHJldHVybiByYW5nZXNldCwgZGVsYXkKKworCitkZWYgcHVzaF9hY2tfZnJhbWUo
YnVmOiBCdWZmZXIsIHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgorICAg
IHJhbmdlcyA9IGxlbihyYW5nZXNldCkKKyAgICBpbmRleCA9IHJhbmdlcyAtIDEKKyAgICByID0g
cmFuZ2VzZXRbaW5kZXhdCisgICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKKyAgICBi
dWYucHVzaF91aW50X3ZhcihkZWxheSkKKyAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKKyAg
ICBidWYucHVzaF91aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKKyAgICBzdGFydCA9IHIu
c3RhcnQKKyAgICB3aGlsZSBpbmRleCA+IDA6CisgICAgICAgIGluZGV4IC09IDEKKyAgICAgICAg
ciA9IHJhbmdlc2V0W2luZGV4XQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIu
c3RvcCAtIDEpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAx
KQorICAgICAgICBzdGFydCA9IHIuc3RhcnQKKyAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
ODM3YzJjMzMwNDkyMDY0NDVmYzlmYjgxNDczYWNmY2JmNGI2NWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCww
ICsxLDM2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJv
bSBlbnVtIGltcG9ydCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGlj
dCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uYnVmZmVyIGltcG9y
dCBCdWZmZXIsIHNpemVfdWludF92YXIKK2Zyb20gLi50bHMgaW1wb3J0IEVwb2NoCitmcm9tIC5j
cnlwdG8gaW1wb3J0IENyeXB0b1BhaXIKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRy
YWNlCitmcm9tIC5wYWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9U
WVBFUywKKyAgICBOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tFVF9OVU1CRVJf
TUFYX1NJWkUsCisgICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgUEFDS0VUX1RZUEVfTUFTSywKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGlz
X2xvbmdfaGVhZGVyLAorKQorCitQQUNLRVRfTUFYX1NJWkUgPSAxMjgwCitQQUNLRVRfTEVOR1RI
X1NFTkRfU0laRSA9IDIKK1BBQ0tFVF9OVU1CRVJfU0VORF9TSVpFID0gMgorCisKK1F1aWNEZWxp
dmVyeUhhbmRsZXIgPSBDYWxsYWJsZVsuLi4sIE5vbmVdCisKKworY2xhc3MgUXVpY0RlbGl2ZXJ5
U3RhdGUoRW51bSk6CisgICAgQUNLRUQgPSAwCisgICAgTE9TVCA9IDEKKyAgICBFWFBJUkVEID0g
MgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNTZW50UGFja2V0OgorICAgIGVwb2NoOiBFcG9j
aAorICAgIGluX2ZsaWdodDogYm9vbAorICAgIGlzX2Fja19lbGljaXRpbmc6IGJvb2wKKyAgICBp
c19jcnlwdG9fcGFja2V0OiBib29sCisgICAgcGFja2V0X251bWJlcjogaW50CisgICAgcGFja2V0
X3R5cGU6IGludAorICAgIHNlbnRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgIHNl
bnRfYnl0ZXM6IGludCA9IDAKKworICAgIGRlbGl2ZXJ5X2hhbmRsZXJzOiBMaXN0W1R1cGxlW1F1
aWNEZWxpdmVyeUhhbmRsZXIsIEFueV1dID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRfZmFjdG9y
eT1saXN0CisgICAgKQorICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogTGlzdFtEaWN0XSA9IGZpZWxk
KGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2NsYXNzIFF1aWNQYWNrZXRCdWlsZGVyU3RvcChF
eGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlcjoKKyAgICAi
IiIKKyAgICBIZWxwZXIgZm9yIGJ1aWxkaW5nIFFVSUMgcGFja2V0cy4KKyAgICAiIiIKKworICAg
IGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdF9j
aWQ6IGJ5dGVzLAorICAgICAgICBwZWVyX2NpZDogYnl0ZXMsCisgICAgICAgIHZlcnNpb246IGlu
dCwKKyAgICAgICAgaXNfY2xpZW50OiBib29sLAorICAgICAgICBwYWNrZXRfbnVtYmVyOiBpbnQg
PSAwLAorICAgICAgICBwZWVyX3Rva2VuOiBieXRlcyA9IGIiIiwKKyAgICAgICAgcXVpY19sb2dn
ZXI6IE9wdGlvbmFsW1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICAgICBzcGluX2JpdDog
Ym9vbCA9IEZhbHNlLAorICAgICk6CisgICAgICAgIHNlbGYubWF4X2ZsaWdodF9ieXRlczogT3B0
aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdG90YWxfYnl0ZXM6IE9wdGlvbmFs
W2ludF0gPSBOb25lCisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtM
aXN0W0RpY3RdXSA9IE5vbmUKKworICAgICAgICBzZWxmLl9ob3N0X2NpZCA9IGhvc3RfY2lkCisg
ICAgICAgIHNlbGYuX2lzX2NsaWVudCA9IGlzX2NsaWVudAorICAgICAgICBzZWxmLl9wZWVyX2Np
ZCA9IHBlZXJfY2lkCisgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBwZWVyX3Rva2VuCisgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc3Bpbl9i
aXQgPSBzcGluX2JpdAorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorCisgICAgICAg
ICMgYXNzZW1ibGVkIGRhdGFncmFtcyBhbmQgcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXM6IExpc3RbYnl0ZXNdID0gW10KKyAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVz
ID0gMAorICAgICAgICBzZWxmLl9kYXRhZ3JhbV9pbml0ID0gVHJ1ZQorICAgICAgICBzZWxmLl9w
YWNrZXRzOiBMaXN0W1F1aWNTZW50UGFja2V0XSA9IFtdCisgICAgICAgIHNlbGYuX2ZsaWdodF9i
eXRlcyA9IDAKKyAgICAgICAgc2VsZi5fdG90YWxfYnl0ZXMgPSAwCisKKyAgICAgICAgIyBjdXJy
ZW50IHBhY2tldAorICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5f
cGFja2V0OiBPcHRpb25hbFtRdWljU2VudFBhY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3Bh
Y2tldF9jcnlwdG86IE9wdGlvbmFsW0NyeXB0b1BhaXJdID0gTm9uZQorICAgICAgICBzZWxmLl9w
YWNrZXRfbG9uZ19oZWFkZXIgPSBGYWxzZQorICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0g
cGFja2V0X251bWJlcgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSAwCisgICAgICAgIHNl
bGYuX3BhY2tldF90eXBlID0gMAorCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlcihQQUNL
RVRfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IFBBQ0tFVF9NQVhf
U0laRQorICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZXRfaXNfZW1wdHkoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYFRydWVgIGlmIHRoZSBjdXJyZW50IHBhY2tldCBp
cyBlbXB0eS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9wYWNrZXQgaXMgbm90
IE5vbmUKKyAgICAgICAgcGFja2V0X3NpemUgPSBzZWxmLl9idWZmZXIudGVsbCgpIC0gc2VsZi5f
cGFja2V0X3N0YXJ0CisgICAgICAgIHJldHVybiBwYWNrZXRfc2l6ZSA8PSBzZWxmLl9oZWFkZXJf
c2l6ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9udW1iZXIoc2VsZikgLT4gaW50
OgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGFja2V0IG51bWJlciBmb3IgdGhl
IG5leHQgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tldF9u
dW1iZXIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfYnVmZmVyX3NwYWNlKHNl
bGYpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBu
dW1iZXIgb2YgYnl0ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQg
cGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlcl9jYXBhY2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVsbCgpCisgICAg
ICAgICAgICAtIHNlbGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICApCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVtYWluaW5nX2ZsaWdodF9zcGFjZShzZWxmKSAtPiBp
bnQ6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9m
IGJ5dGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4K
KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRf
Y2FwYWNpdHkKKyAgICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAg
LSBzZWxmLl9wYWNrZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgZGVm
IGZsdXNoKHNlbGYpIC0+IFR1cGxlW0xpc3RbYnl0ZXNdLCBMaXN0W1F1aWNTZW50UGFja2V0XV06
CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBhc3NlbWJsZWQgZGF0YWdyYW1zLgor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fZW5kX3BhY2tldCgpCisgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0
YWdyYW0oKQorCisgICAgICAgIGRhdGFncmFtcyA9IHNlbGYuX2RhdGFncmFtcworICAgICAgICBw
YWNrZXRzID0gc2VsZi5fcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXMgPSBbXQorICAg
ICAgICBzZWxmLl9wYWNrZXRzID0gW10KKyAgICAgICAgcmV0dXJuIGRhdGFncmFtcywgcGFja2V0
cworCisgICAgZGVmIHN0YXJ0X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBmcmFtZV90
eXBlOiBpbnQsCisgICAgICAgIGNhcGFjaXR5OiBpbnQgPSAxLAorICAgICAgICBoYW5kbGVyOiBP
cHRpb25hbFtRdWljRGVsaXZlcnlIYW5kbGVyXSA9IE5vbmUsCisgICAgICAgIGhhbmRsZXJfYXJn
czogU2VxdWVuY2VbQW55XSA9IFtdLAorICAgICkgLT4gQnVmZmVyOgorICAgICAgICAiIiIKKyAg
ICAgICAgU3RhcnRzIGEgbmV3IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5y
ZW1haW5pbmdfYnVmZmVyX3NwYWNlIDwgY2FwYWNpdHkgb3IgKAorICAgICAgICAgICAgZnJhbWVf
dHlwZSBub3QgaW4gTk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUworICAgICAgICAgICAgYW5kIHNl
bGYucmVtYWluaW5nX2ZsaWdodF9zcGFjZSA8IGNhcGFjaXR5CisgICAgICAgICk6CisgICAgICAg
ICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAgICBzZWxmLl9idWZmZXIu
cHVzaF91aW50X3ZhcihmcmFtZV90eXBlKQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBO
T05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5p
c19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05f
SU5fRkxJR0hUX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdo
dCA9IFRydWUKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkNSWVBUTzoK
KyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFja2V0ID0gVHJ1ZQorICAgICAg
ICBpZiBoYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmRlbGl2
ZXJ5X2hhbmRsZXJzLmFwcGVuZCgoaGFuZGxlciwgaGFuZGxlcl9hcmdzKSkKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2J1ZmZlcgorCisgICAgZGVmIHN0YXJ0X3BhY2tldChzZWxmLCBwYWNrZXRfdHlw
ZTogaW50LCBjcnlwdG86IENyeXB0b1BhaXIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBTdGFydHMgYSBuZXcgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5f
YnVmZmVyCisKKyAgICAgICAgIyBmaW5pc2ggcHJldmlvdXMgZGF0YWdyYW0KKyAgICAgICAgaWYg
c2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZW5kX3BhY2tldCgp
CisKKyAgICAgICAgIyBpZiB0aGVyZSBpcyB0b28gbGl0dGxlIHNwYWNlIHJlbWFpbmluZywgc3Rh
cnQgYSBuZXcgZGF0YWdyYW0KKyAgICAgICAgIyBGSVhNRTogdGhlIGxpbWl0IGlzIGFyYml0cmFy
eSEKKyAgICAgICAgcGFja2V0X3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBpZiBzZWxmLl9i
dWZmZXJfY2FwYWNpdHkgLSBwYWNrZXRfc3RhcnQgPCAxMjg6CisgICAgICAgICAgICBzZWxmLl9m
bHVzaF9jdXJyZW50X2RhdGFncmFtKCkKKyAgICAgICAgICAgIHBhY2tldF9zdGFydCA9IDAKKwor
ICAgICAgICAjIGluaXRpYWxpemUgZGF0YWdyYW0gaWYgbmVlZGVkCisgICAgICAgIGlmIHNlbGYu
X2RhdGFncmFtX2luaXQ6CisgICAgICAgICAgICBpZiBzZWxmLm1heF90b3RhbF9ieXRlcyBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZW1haW5pbmdfdG90YWxfYnl0ZXMgPSBzZWxmLm1h
eF90b3RhbF9ieXRlcyAtIHNlbGYuX3RvdGFsX2J5dGVzCisgICAgICAgICAgICAgICAgaWYgcmVt
YWluaW5nX3RvdGFsX2J5dGVzIDwgc2VsZi5fYnVmZmVyX2NhcGFjaXR5OgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9idWZmZXJfY2FwYWNpdHkgPSByZW1haW5pbmdfdG90YWxfYnl0ZXMKKwor
ICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gc2VsZi5fYnVmZmVyX2NhcGFjaXR5
CisgICAgICAgICAgICBpZiBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgcmVtYWluaW5nX2ZsaWdodF9ieXRlcyA9IHNlbGYubWF4X2ZsaWdodF9ieXRl
cyAtIHNlbGYuX2ZsaWdodF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ19mbGln
aHRfYnl0ZXMgPCBzZWxmLl9mbGlnaHRfY2FwYWNpdHk6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX2ZsaWdodF9jYXBhY2l0eSA9IHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAg
IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2luaXQgPSBGYWxzZQorCisgICAgICAgICMgY2FsY3VsYXRlIGhlYWRlciBzaXplCisgICAg
ICAgIHBhY2tldF9sb25nX2hlYWRlciA9IGlzX2xvbmdfaGVhZGVyKHBhY2tldF90eXBlKQorICAg
ICAgICBpZiBwYWNrZXRfbG9uZ19oZWFkZXI6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDEx
ICsgbGVuKHNlbGYuX3BlZXJfY2lkKSArIGxlbihzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAg
IGlmIChwYWNrZXRfdHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJ
QUw6CisgICAgICAgICAgICAgICAgdG9rZW5fbGVuZ3RoID0gbGVuKHNlbGYuX3BlZXJfdG9rZW4p
CisgICAgICAgICAgICAgICAgaGVhZGVyX3NpemUgKz0gc2l6ZV91aW50X3Zhcih0b2tlbl9sZW5n
dGgpICsgdG9rZW5fbGVuZ3RoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXJfc2l6
ZSA9IDMgKyBsZW4oc2VsZi5fcGVlcl9jaWQpCisKKyAgICAgICAgIyBjaGVjayB3ZSBoYXZlIGVu
b3VnaCBzcGFjZQorICAgICAgICBpZiBwYWNrZXRfc3RhcnQgKyBoZWFkZXJfc2l6ZSA+PSBzZWxm
Ll9idWZmZXJfY2FwYWNpdHk6CisgICAgICAgICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0
b3AKKworICAgICAgICAjIGRldGVybWluZSBhY2sgZXBvY2gKKyAgICAgICAgaWYgcGFja2V0X3R5
cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSU5J
VElBTAorICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRToK
KyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSEFORFNIQUtFCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBlcG9jaCA9IEVwb2NoLk9ORV9SVFQKKworICAgICAgICBzZWxmLl9oZWFkZXJfc2l6
ZSA9IGhlYWRlcl9zaXplCisgICAgICAgIHNlbGYuX3BhY2tldCA9IFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICBpbl9mbGlnaHQ9RmFsc2UsCisg
ICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251
bWJlciwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG8gPSBjcnlwdG8KKyAgICAgICAgc2VsZi5fcGFja2V0
X2xvbmdfaGVhZGVyID0gcGFja2V0X2xvbmdfaGVhZGVyCisgICAgICAgIHNlbGYuX3BhY2tldF9z
dGFydCA9IHBhY2tldF9zdGFydAorICAgICAgICBzZWxmLl9wYWNrZXRfdHlwZSA9IHBhY2tldF90
eXBlCisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gc2VsZi5fcGFja2V0LnF1aWNf
bG9nZ2VyX2ZyYW1lcworCisgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHNl
bGYuX2hlYWRlcl9zaXplKQorCisgICAgZGVmIF9lbmRfcGFja2V0KHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgICIiIgorICAgICAgICBFbmRzIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIi
CisgICAgICAgIGJ1ZiA9IHNlbGYuX2J1ZmZlcgorICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50
ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAgICAgaWYgcGFja2V0X3NpemUgPiBzZWxm
Ll9oZWFkZXJfc2l6ZToKKyAgICAgICAgICAgICMgcGFkIGluaXRpYWwgZGF0YWdyYW0KKyAgICAg
ICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAg
ICAgICBhbmQgc2VsZi5fcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAg
ICAgICAgICAgIGFuZCBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldAorICAgICAgICAgICAg
KToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2U6CisgICAg
ICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKHNlbGYucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSkpCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplID0gYnVmLnRlbGwoKSAt
IHNlbGYuX3BhY2tldF9zdGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5f
ZmxpZ2h0ID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRp
bmdfZnJhbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHdy
aXRlIGhlYWRlcgorICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVyOgorICAg
ICAgICAgICAgICAgIGxlbmd0aCA9ICgKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUK
KyAgICAgICAgICAgICAgICAgICAgLSBzZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAg
ICAgICArIFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2Vs
Zi5fcGFja2V0X2NyeXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQ4KHNlbGYuX3BhY2tldF90eXBlIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9T
SVpFIC0gMSkpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDMyKHNlbGYuX3ZlcnNpb24p
CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX3BlZXJfY2lkKSkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAg
ICAgICBidWYucHVzaF91aW50OChsZW4oc2VsZi5faG9zdF9jaWQpKQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX2J5dGVzKHNlbGYuX2hvc3RfY2lkKQorICAgICAgICAgICAgICAgIGlmIChzZWxm
Ll9wYWNrZXRfdHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6
CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbihzZWxmLl9wZWVyX3Rv
a2VuKSkKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl90b2tl
bikKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYobGVuZ3RoIHwgMHg0MDAwKQorICAg
ICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNrZXRfbnVtYmVyICYgMHhGRkZG
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNr
ZXRfc3RhcnQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3Nw
aW5fYml0IDw8IDUpCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3BhY2tldF9jcnlwdG8u
a2V5X3BoYXNlIDw8IDIpCisgICAgICAgICAgICAgICAgICAgIHwgKFBBQ0tFVF9OVU1CRVJfU0VO
RF9TSVpFIC0gMSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hf
Ynl0ZXMoc2VsZi5fcGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNl
bGYuX3BhY2tldF9udW1iZXIgJiAweEZGRkYpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHdo
ZXRoZXIgd2UgbmVlZCBwYWRkaW5nCisgICAgICAgICAgICAgICAgcGFkZGluZ19zaXplID0gKAor
ICAgICAgICAgICAgICAgICAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpFCisgICAgICAgICAgICAg
ICAgICAgIC0gUEFDS0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgKyBz
ZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHBhY2tldF9zaXplCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIHBhZGRpbmdfc2l6ZSA+IDA6CisgICAg
ICAgICAgICAgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHBhY2tldF9zaXpl
KQorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhwYWRkaW5nX3NpemUp
KQorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZSArPSBwYWRkaW5nX3NpemUKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKworICAgICAgICAg
ICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tl
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbmNyeXB0IGluIHBsYWNlCisgICAgICAgICAg
ICBwbGFpbiA9IGJ1Zi5kYXRhX3NsaWNlKHNlbGYuX3BhY2tldF9zdGFydCwgc2VsZi5fcGFja2V0
X3N0YXJ0ICsgcGFja2V0X3NpemUpCisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRf
c3RhcnQpCisgICAgICAgICAgICBidWYucHVzaF9ieXRlcygKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wYWNrZXRfY3J5cHRvLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgICAgICAgICBwbGFp
blswIDogc2VsZi5faGVhZGVyX3NpemVdLAorICAgICAgICAgICAgICAgICAgICBwbGFpbltzZWxm
Ll9oZWFkZXJfc2l6ZSA6IHBhY2tldF9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGFja2V0X251bWJlciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLl9wYWNrZXQuc2VudF9ieXRlcyA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9wYWNrZXRf
c3RhcnQKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldHMuYXBwZW5kKHNlbGYuX3BhY2tldCkKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3BhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzICs9IHNlbGYuX3BhY2tldC5zZW50X2J5dGVzCisKKyAg
ICAgICAgICAgICMgc2hvcnQgaGVhZGVyIHBhY2tldHMgY2Fubm90IGJlIGNvYWxsZXNjZWQsIHdl
IG5lZWQgYSBuZXcgZGF0YWdyYW0KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYWNrZXRfbG9u
Z19oZWFkZXI6CisgICAgICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3VycmVudF9kYXRhZ3JhbSgp
CisKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgKz0gMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgIyAiY2FuY2VsIiB0aGUgcGFja2V0CisgICAgICAgICAgICBidWYuc2Vlayhz
ZWxmLl9wYWNrZXRfc3RhcnQpCisKKyAgICAgICAgc2VsZi5fcGFja2V0ID0gTm9uZQorICAgICAg
ICBzZWxmLnF1aWNfbG9nZ2VyX2ZyYW1lcyA9IE5vbmUKKworICAgIGRlZiBfZmx1c2hfY3VycmVu
dF9kYXRhZ3JhbShzZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhZ3JhbV9ieXRlcyA9IHNlbGYu
X2J1ZmZlci50ZWxsKCkKKyAgICAgICAgaWYgZGF0YWdyYW1fYnl0ZXM6CisgICAgICAgICAgICBz
ZWxmLl9kYXRhZ3JhbXMuYXBwZW5kKHNlbGYuX2J1ZmZlci5kYXRhKQorICAgICAgICAgICAgc2Vs
Zi5fZmxpZ2h0X2J5dGVzICs9IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcworICAgICAgICAg
ICAgc2VsZi5fdG90YWxfYnl0ZXMgKz0gZGF0YWdyYW1fYnl0ZXMKKyAgICAgICAgICAgIHNlbGYu
X2RhdGFncmFtX2luaXQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9idWZmZXIuc2VlaygwKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjA4
NmM5Yzc0Zjc3NTYwMzIwODY5MDA3NmJlZTk2MzgxNDYxMWI5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKQEAgLTAsMCArMSw5OCBA
QAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55LCBJdGVyYWJsZSwgTGlzdCwgT3B0aW9uYWwKKworCitjbGFzcyBSYW5nZVNldChTZXF1
ZW5jZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhbmdlczogSXRlcmFibGVbcmFuZ2VdID0g
W10pOgorICAgICAgICBzZWxmLl9fcmFuZ2VzOiBMaXN0W3JhbmdlXSA9IFtdCisgICAgICAgIGZv
ciByIGluIHJhbmdlczoKKyAgICAgICAgICAgIGFzc2VydCByLnN0ZXAgPT0gMQorICAgICAgICAg
ICAgc2VsZi5hZGQoci5zdGFydCwgci5zdG9wKQorCisgICAgZGVmIGFkZChzZWxmLCBzdGFydDog
aW50LCBzdG9wOiBPcHRpb25hbFtpbnRdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc3Rv
cCBpcyBOb25lOgorICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMQorICAgICAgICBhc3NlcnQg
c3RvcCA+IHN0YXJ0CisKKyAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKHNlbGYuX19yYW5n
ZXMpOgorICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYmVmb3JlIGN1
cnJlbnQgaXRlbSwgaW5zZXJ0IGhlcmUKKyAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0YXJ0Ogor
ICAgICAgICAgICAgICAgIHNlbGYuX19yYW5nZXMuaW5zZXJ0KGksIHJhbmdlKHN0YXJ0LCBzdG9w
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFu
Z2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAgICAgICAg
ICAgIGlmIHN0YXJ0ID4gci5zdG9wOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICMgdGhlIGFkZGVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbSwgbWVyZ2Ug
aXQKKyAgICAgICAgICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCByLnN0YXJ0KQorICAgICAgICAgICAg
c3RvcCA9IG1heChzdG9wLCByLnN0b3ApCisgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYu
X19yYW5nZXMpIC0gMSBhbmQgc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RhcnQgPD0gc3RvcDoKKyAg
ICAgICAgICAgICAgICBzdG9wID0gbWF4KHNlbGYuX19yYW5nZXNbaSArIDFdLnN0b3AsIHN0b3Ap
CisgICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSArIDEpCisgICAgICAgICAgICBz
ZWxmLl9fcmFuZ2VzW2ldID0gcmFuZ2Uoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICAjIHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBhbGwgZXhpc3Rp
bmcgaXRlbXMsIGFwcGVuZCBpdAorICAgICAgICBzZWxmLl9fcmFuZ2VzLmFwcGVuZChyYW5nZShz
dGFydCwgc3RvcCkpCisKKyAgICBkZWYgYm91bmRzKHNlbGYpIC0+IHJhbmdlOgorICAgICAgICBy
ZXR1cm4gcmFuZ2Uoc2VsZi5fX3Jhbmdlc1swXS5zdGFydCwgc2VsZi5fX3Jhbmdlc1stMV0uc3Rv
cCkKKworICAgIGRlZiBzaGlmdChzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X19yYW5nZXMucG9wKDApCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgc3RhcnQ6IGludCwgc3Rv
cDogaW50KSAtPiBOb25lOgorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0CisKKyAgICAgICAg
aSA9IDAKKyAgICAgICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2VzKToKKyAgICAgICAgICAg
IHIgPSBzZWxmLl9fcmFuZ2VzW2ldCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2Ug
aXMgZW50aXJlbHkgYmVmb3JlIGN1cnJlbnQgaXRlbSwgc3RvcCBoZXJlCisgICAgICAgICAgICBp
ZiBzdG9wIDw9IHIuc3RhcnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAg
ICMgdGhlIHJlbW92ZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVw
IGxvb2tpbmcKKyAgICAgICAgICAgIGlmIHN0YXJ0ID49IHIuc3RvcDoKKyAgICAgICAgICAgICAg
ICBpICs9IDEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoZSBy
ZW1vdmVkIHJhbmdlIGNvbXBsZXRlbHkgY292ZXJzIHRoZSBjdXJyZW50IGl0ZW0sIHJlbW92ZSBp
dAorICAgICAgICAgICAgaWYgc3RhcnQgPD0gci5zdGFydCBhbmQgc3RvcCA+PSByLnN0b3A6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJl
bnQgaXRlbQorICAgICAgICAgICAgaWYgc3RhcnQgPiByLnN0YXJ0OgorICAgICAgICAgICAgICAg
IHNlbGYuX19yYW5nZXNbaV0gPSByYW5nZShyLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgICAgICAg
ICBpZiBzdG9wIDwgci5zdG9wOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLmlu
c2VydChpICsgMSwgcmFuZ2Uoc3RvcCwgci5zdG9wKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgc2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHN0b3AsIHIuc3RvcCkKKworICAg
ICAgICAgICAgaSArPSAxCisKKyAgICBkZWYgX19ib29sX18oc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxm
LCB2YWw6IEFueSkgLT4gYm9vbDoKKyAgICAgICAgZm9yIHIgaW4gc2VsZi5fX3JhbmdlczoKKyAg
ICAgICAgICAgIGlmIHZhbCBpbiByOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAt
PiBib29sOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUmFuZ2VTZXQpOgorICAg
ICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19y
YW5nZXMgPT0gb3RoZXIuX19yYW5nZXMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6
IEFueSkgLT4gcmFuZ2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzW2tleV0KKworICAg
IGRlZiBfX2xlbl9fKHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9fcmFu
Z2VzKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJS
YW5nZVNldCh7fSkiLmZvcm1hdChyZXByKHNlbGYuX19yYW5nZXMpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvcXVpYy9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJlYjFlY2Y1NjYxZjcxYzkz
ZTc3YmY3ZmE2MmE3MTYyZjM4NzBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkKQEAgLTAsMCArMSw0OTcgQEAKK2ltcG9ydCBtYXRo
Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0LCBPcHRp
b25hbAorCitmcm9tIC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0
X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAorZnJvbSAu
cmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKKyMgbG9zcyBkZXRlY3Rpb24KK0tfUEFDS0VUX1RI
UkVTSE9MRCA9IDMKK0tfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcworS19HUkFOVUxBUklU
WSA9IDAuMDAxICAjIHNlY29uZHMKK0tfVElNRV9USFJFU0hPTEQgPSA5IC8gOAorS19NSUNST19T
RUNPTkQgPSAwLjAwMDAwMQorS19TRUNPTkQgPSAxLjAKKworIyBjb25nZXN0aW9uIGNvbnRyb2wK
K0tfTUFYX0RBVEFHUkFNX1NJWkUgPSAxMjgwCitLX0lOSVRJQUxfV0lORE9XID0gMTAgKiBLX01B
WF9EQVRBR1JBTV9TSVpFCitLX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFHUkFNX1NJ
WkUKK0tfTE9TU19SRURVQ1RJT05fRkFDVE9SID0gMC41CisKKworY2xhc3MgUXVpY1BhY2tldFNw
YWNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFja19h
dDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLmFja19xdWV1ZSA9IFJhbmdl
U2V0KCkKKyAgICAgICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmV4cGVj
dGVkX3BhY2tldF9udW1iZXIgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF9wYWNr
ZXQgPSAtMQorICAgICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9uYWxbZmxv
YXRdID0gTm9uZQorCisgICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCisgICAgICAgIHNl
bGYuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9hY2tl
ZF9wYWNrZXQgPSAwCisgICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBO
b25lCisgICAgICAgIHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQYWNrZXRd
ID0ge30KKworCitjbGFzcyBRdWljUGFja2V0UGFjZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKKyAgICAgICAg
c2VsZi5idWNrZXRfdGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5ldmFsdWF0aW9uX3Rp
bWU6IGZsb2F0ID0gMC4wCisgICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFsW2Zsb2F0
XSA9IE5vbmUKKworICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0KSAtPiBm
bG9hdDoKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2VsZi5idWNr
ZXRfdGltZSA8PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBhY2tldF90
aW1lCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX2FmdGVyX3NlbmQoc2Vs
Ziwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAg
ICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6CisgICAgICAgICAg
ICAgICAgc2VsZi5idWNrZXRfdGltZSA9IDAuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBzZWxmLmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKKworICAgIGRlZiB1
cGRhdGVfYnVja2V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdyA+
IHNlbGYuZXZhbHVhdGlvbl90aW1lOgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IG1p
bigKKyAgICAgICAgICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYuZXZhbHVh
dGlvbl90aW1lKSwgc2VsZi5idWNrZXRfbWF4CisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmV2YWx1YXRpb25fdGltZSA9IG5vdworCisgICAgZGVmIHVwZGF0ZV9yYXRlKHNlbGYsIGNv
bmdlc3Rpb25fd2luZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6CisgICAg
ICAgIHBhY2luZ19yYXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRfcnR0LCBL
X01JQ1JPX1NFQ09ORCkKKyAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKKyAgICAgICAg
ICAgIEtfTUlDUk9fU0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2luZ19yYXRl
LCBLX1NFQ09ORCkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYnVja2V0X21heCA9ICgKKyAg
ICAgICAgICAgIG1heCgKKyAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1fU0laRSwK
KyAgICAgICAgICAgICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBLX01BWF9E
QVRBR1JBTV9TSVpFKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIC8gcGFjaW5nX3JhdGUK
KyAgICAgICAgKQorICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNrZXRfbWF4
OgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAorCisKK2Ns
YXNzIFF1aWNDb25nZXN0aW9uQ29udHJvbDoKKyAgICAiIiIKKyAgICBOZXcgUmVubyBjb25nZXN0
aW9uIGNvbnRyb2wuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToK
KyAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPSBLX0lOSVRJQUxfV0lORE9XCisgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVj
b3Zlcnlfc3RhcnRfdGltZSA9IDAuMAorICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoID0g
MAorICAgICAgICBzZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKyAgICAgICAg
c2VsZi5zc3RocmVzaDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBvbl9wYWNrZXRf
YWNrZWQoc2VsZiwgcGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgICAgICAjIGRvbid0
IGluY3JlYXNlIHdpbmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5CisgICAgICAgIGlmIHBhY2tl
dC5zZW50X3RpbWUgPD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIG9yIHNl
bGYuY29uZ2VzdGlvbl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgorICAgICAgICAgICAgIyBzbG93
IHN0YXJ0CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tldC5zZW50
X2J5dGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZvaWRhbmNl
CisgICAgICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50X2J5dGVz
CisgICAgICAgICAgICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2VsZi5jb25n
ZXN0aW9uX3dpbmRvdworICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29uZ2VzdGlvbl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKyAg
ICAgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19NQVhfREFU
QUdSQU1fU0laRQorCisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDogUXVpY1Nl
bnRQYWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9IHBhY2tl
dC5zZW50X2J5dGVzCisKKyAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBhY2tldHM6
IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSkgLT4gTm9uZToKKyAgICAgICAgZm9yIHBhY2tldCBp
biBwYWNrZXRzOgorICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNl
bnRfYnl0ZXMKKworICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czogSXRlcmFi
bGVbUXVpY1NlbnRQYWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBsb3N0X2xh
cmdlc3RfdGltZSA9IDAuMAorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAg
ICAgICBzZWxmLmJ5dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAgICAg
ICAgbG9zdF9sYXJnZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgIyBzdGFy
dCBhIG5ldyBjb25nZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0aGUKKyAg
ICAgICAgIyBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBwZXJpb2Qu
CisgICAgICAgIGlmIGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVy
eV9zdGFydF90aW1lOgorICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFy
dF90aW1lID0gbm93CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0gbWF4KAor
ICAgICAgICAgICAgICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NTX1JFRFVD
VElPTl9GQUNUT1IpLCBLX01JTklNVU1fV0lORE9XCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLnNzdGhyZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisgICAgICAgICMgVE9E
TyA6IGNvbGxhcHNlIGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2VzdGlvbgor
CisgICAgZGVmIG9uX3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9hdCwgbm93
OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3VsZCBleGl0
IHNsb3cgc3RhcnQKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBzZWxmLl9y
dHRfbW9uaXRvci5pc19ydHRfaW5jcmVhc2luZygKKyAgICAgICAgICAgIGxhdGVzdF9ydHQsIG5v
dworICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cKKworCitjbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6CisgICAgIiIiCisgICAgUGFj
a2V0IGxvc3MgYW5kIGNvbmdlc3Rpb24gY29udHJvbGxlci4KKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dDog
Ym9vbCwKKyAgICAgICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICAgICBx
dWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisgICAgKSAtPiBO
b25lOgorICAgICAgICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGllbnRfd2l0
aG91dF8xcnR0CisgICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1CisgICAgICAgIHNl
bGYuc3BhY2VzOiBMaXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQorCisgICAgICAgICMgY2FsbGJh
Y2tzCisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2Vs
Zi5fc2VuZF9wcm9iZSA9IHNlbmRfcHJvYmUKKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uCisg
ICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVk
ID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAorICAgICAgICBzZWxmLl9y
dHRfbWluID0gbWF0aC5pbmYKKyAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4wCisgICAg
ICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDAuMAorICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rf
c2VudF9hY2tfZWxpY2l0aW5nX3BhY2tldCA9IDAuMAorCisgICAgICAgICMgY29uZ2VzdGlvbiBj
b250cm9sCisgICAgICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkKKyAgICAg
ICAgc2VsZi5fcGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIGJ5dGVzX2luX2ZsaWdodChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9j
Yy5ieXRlc19pbl9mbGlnaHQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25nZXN0aW9uX3dp
bmRvdyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0aW9uX3dp
bmRvdworCisgICAgZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFj
ZSkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCisKKyAgICAg
ICAgc2VsZi5fY2Mub25fcGFja2V0c19leHBpcmVkKAorICAgICAgICAgICAgZmlsdGVyKGxhbWJk
YSB4OiB4LmluX2ZsaWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQorICAgICAgICAp
CisgICAgICAgIHNwYWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCisKKyAgICAgICAgc3BhY2UuYWNr
X2F0ID0gTm9uZQorICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAg
ICAgICAgc3BhY2UubG9zc190aW1lID0gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgp
CisKKyAgICBkZWYgZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9uYWxbUXVp
Y1BhY2tldFNwYWNlXToKKyAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKKyAgICAgICAgZm9yIHNw
YWNlIGluIHNlbGYuc3BhY2VzOgorICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIG5v
dCBOb25lIGFuZCAoCisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9yIHNwYWNl
Lmxvc3NfdGltZSA8IGxvc3Nfc3BhY2UubG9zc190aW1lCisgICAgICAgICAgICApOgorICAgICAg
ICAgICAgICAgIGxvc3Nfc3BhY2UgPSBzcGFjZQorICAgICAgICByZXR1cm4gbG9zc19zcGFjZQor
CisgICAgZGVmIGdldF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0OgorICAgICAg
ICAjIGxvc3MgdGltZXIKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2VhcmxpZXN0X2xv
c3Nfc3BhY2UoKQorICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcmV0dXJuIGxvc3Nfc3BhY2UubG9zc190aW1lCisKKyAgICAgICAgIyBwYWNrZXQgdGltZXIK
KyAgICAgICAgaWYgKAorICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0Cisg
ICAgICAgICAgICBvciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9yIHNwYWNl
IGluIHNlbGYuc3BhY2VzKSA+IDAKKyAgICAgICAgKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9ydHRfaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBLX0lOSVRJ
QUxfUlRUICogKDIgKiogc2VsZi5fcHRvX2NvdW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIgKiogc2Vs
Zi5fcHRvX2NvdW50KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50
X2Fja19lbGljaXRpbmdfcGFja2V0ICsgdGltZW91dAorCisgICAgICAgIHJldHVybiBOb25lCisK
KyAgICBkZWYgZ2V0X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHJldHVy
biAoCisgICAgICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQKKyAgICAgICAgICAgICsgbWF4KDQg
KiBzZWxmLl9ydHRfdmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCisgICAgICAgICAgICArIHNlbGYu
bWF4X2Fja19kZWxheQorICAgICAgICApCisKKyAgICBkZWYgb25fYWNrX3JlY2VpdmVkKAorICAg
ICAgICBzZWxmLAorICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBhY2tf
cmFuZ2VzZXQ6IFJhbmdlU2V0LAorICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAorICAgICAgICBu
b3c6IGZsb2F0LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSBt
ZXRyaWNzIGFzIHRoZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgorICAgICAgICAi
IiIKKyAgICAgICAgaXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGxhcmdlc3RfYWNr
ZWQgPSBhY2tfcmFuZ2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKKyAgICAgICAgbGFyZ2VzdF9uZXds
eV9hY2tlZCA9IE5vbmUKKyAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCisKKyAgICAg
ICAgaWYgbGFyZ2VzdF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0OgorICAgICAg
ICAgICAgc3BhY2UubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCisKKyAgICAg
ICAgZm9yIHBhY2tldF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5rZXlzKCkp
OgorICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNrX3Jhbmdl
c2V0OgorICAgICAgICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNvdW50ZXJz
CisgICAgICAgICAgICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChwYWNrZXRf
bnVtYmVyKQorICAgICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAg
ICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICAgICAgICAg
ICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCisgICAgICAgICAgICAgICAg
aWYgcGFja2V0LmluX2ZsaWdodDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFj
a2V0X2Fja2VkKHBhY2tldCkKKyAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0g
cGFja2V0X251bWJlcgorICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gcGFja2V0
LnNlbnRfdGltZQorCisgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcworICAgICAg
ICAgICAgICAgIGZvciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5kbGVyczoK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgKmFy
Z3MpCisKKyAgICAgICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXdseSBhY2tl
ZCBwYWNrZXRzCisgICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2VzdF9uZXds
eV9hY2tlZCBhbmQgaXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIGxhdGVzdF9ydHQgPSBu
b3cgLSBsYXJnZXN0X3NlbnRfdGltZQorICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUKKworICAg
ICAgICAgICAgIyBsaW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQorICAgICAgICAgICAg
YWNrX2RlbGF5ID0gbWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQorCisgICAgICAg
ICAgICAjIHVwZGF0ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMKKyAgICAg
ICAgICAgIHNlbGYuX3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCisgICAgICAg
ICAgICBpZiBzZWxmLl9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKKyAgICAgICAgICAgICAg
ICBzZWxmLl9ydHRfbWluID0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgaWYgc2VsZi5f
cnR0X2xhdGVzdCA+IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6CisgICAgICAgICAgICAgICAg
c2VsZi5fcnR0X2xhdGVzdCAtPSBhY2tfZGVsYXkKKworICAgICAgICAgICAgaWYgbm90IHNlbGYu
X3J0dF9pbml0aWFsaXplZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQg
PSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0X3J0dCAv
IDIKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0CisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDMgLyA0
ICogc2VsZi5fcnR0X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3J0dF9taW4gLSBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgIHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKKyAgICAgICAgICAgICAgICAgICAg
NyAvIDggKiBzZWxmLl9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRlc3QKKyAg
ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJv
bGxlcgorICAgICAgICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVzdF9ydHQs
IG5vdz1ub3cpCisgICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAg
ICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAg
ICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAg
ICAgKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UKKworICAg
ICAgICBzZWxmLl9kZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKKworICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNz
X3VwZGF0ZWQobG9nX3J0dD1sb2dfcnR0KQorCisgICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAK
KworICAgIGRlZiBvbl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxvYXQpIC0+
IE5vbmU6CisgICAgICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNl
KCkKKyAgICAgICAgaWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYu
X2RldGVjdF9sb3NzKGxvc3Nfc3BhY2UsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9wdG9fY291bnQgKz0gMQorCisgICAgICAgICAgICAjIHJlc2NoZWR1bGUgc29t
ZSBkYXRhCisgICAgICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fb25fcGFja2V0c19sb3N0KAorICAgICAgICAgICAgICAgICAgICB0dXBsZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYW1iZGEgaTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tldHMudmFs
dWVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAgICAgICAgICAgIG5v
dz1ub3csCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLl9zZW5kX3Byb2Jl
KCkKKworICAgIGRlZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0
LCBzcGFjZTogUXVpY1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBzcGFjZS5zZW50X3Bh
Y2tldHNbcGFja2V0LnBhY2tldF9udW1iZXJdID0gcGFja2V0CisKKyAgICAgICAgaWYgcGFja2V0
LmlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2Zs
aWdodCArPSAxCisgICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICBpZiBw
YWNrZXQuaXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lX29mX2xh
c3Rfc2VudF9hY2tfZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKKworICAgICAg
ICAgICAgIyBhZGQgcGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAorICAgICAgICAgICAgc2VsZi5f
Y2Mub25fcGFja2V0X3NlbnQocGFja2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRh
dGVkKCkKKworICAgIGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFj
ZSwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHdoZXRo
ZXIgYW55IHBhY2tldHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCisgICAgICAgICIiIgorICAg
ICAgICBsb3NzX2RlbGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKKyAgICAgICAgICAgIG1heChz
ZWxmLl9ydHRfbGF0ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCisgICAgICAgICAgICBpZiBzZWxm
Ll9ydHRfaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAorICAgICAg
ICApCisgICAgICAgIHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tl
dCAtIEtfUEFDS0VUX1RIUkVTSE9MRAorICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5vdyAtIGxv
c3NfZGVsYXkKKworICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQorICAgICAgICBzcGFjZS5sb3Nz
X3RpbWUgPSBOb25lCisgICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4gc3BhY2Uu
c2VudF9wYWNrZXRzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3Bh
Y2UubGFyZ2VzdF9hY2tlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICAgICAgaWYgcGFja2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tldC5zZW50
X3RpbWUgPD0gdGltZV90aHJlc2hvbGQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzLmFw
cGVuZChwYWNrZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF9s
b3NzX3RpbWUgPSBwYWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQorICAgICAgICAgICAgICAg
IGlmIHNwYWNlLmxvc3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBhY2tldF9s
b3NzX3RpbWU6CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBhY2tldF9s
b3NzX3RpbWUKKworICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNrZXRzLCBz
cGFjZT1zcGFjZSwgbm93PW5vdykKKworICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRlZChzZWxm
LCBsb2dfcnR0PUZhbHNlKSAtPiBOb25lOgorICAgICAgICBkYXRhID0geworICAgICAgICAgICAg
ImJ5dGVzX2luX2ZsaWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKKyAgICAgICAgICAg
ICJjd25kIjogc2VsZi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgIH0KKyAgICAgICAg
aWYgc2VsZi5fY2Muc3N0aHJlc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyJzc3Ro
cmVzaCJdID0gc2VsZi5fY2Muc3N0aHJlc2gKKworICAgICAgICBpZiBsb2dfcnR0OgorICAgICAg
ICAgICAgZGF0YS51cGRhdGUoCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAibGF0ZXN0X3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9s
YXRlc3QpLAorICAgICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90aW1lKHNlbGYuX3J0dF9taW4pLAorICAgICAgICAgICAgICAgICAgICAic21vb3Ro
ZWRfcnR0Ijogc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Ntb290aGVk
KSwKKyAgICAgICAgICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90aW1lKHNlbGYuX3J0dF92YXJpYW5jZSksCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAg
ICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQiLCBkYXRh
PWRhdGEKKyAgICAgICAgKQorCisgICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgIHNl
bGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQYWNrZXRT
cGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9wYWNrZXRzX2Nj
ID0gW10KKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgZGVsIHNw
YWNlLnNlbnRfcGFja2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KKworICAgICAgICAgICAgaWYg
cGFja2V0LmluX2ZsaWdodDoKKyAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2MuYXBwZW5k
KHBhY2tldCkKKworICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6CisgICAg
ICAgICAgICAgICAgc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorCisgICAgICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJyZWNvdmVyeSIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9zdCIsCisg
ICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUi
OiBzZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9u
dW1iZXIpLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAgICAgICAgICAgIyB0
cmlnZ2VyIGNhbGxiYWNrcworICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0
LmRlbGl2ZXJ5X2hhbmRsZXJzOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5
U3RhdGUuTE9TVCwgKmFyZ3MpCisKKyAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBjb250cm9s
bGVyCisgICAgICAgIGlmIGxvc3RfcGFja2V0c19jYzoKKyAgICAgICAgICAgIHNlbGYuX2NjLm9u
X3BhY2tldHNfbG9zdChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCisgICAgICAgICAgICBzZWxm
Ll9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1z
ZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9
c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJp
Y3NfdXBkYXRlZCgpCisKKworY2xhc3MgUXVpY1J0dE1vbml0b3I6CisgICAgIiIiCisgICAgUm91
bmR0cmlwIHRpbWUgbW9uaXRvciBmb3IgSHlTdGFydC4KKyAgICAiIiIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAg
IHNlbGYuX2xhc3RfdGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQorICAg
ICAgICBzZWxmLl9zaXplID0gNQorCisgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjogT3B0aW9u
YWxbZmxvYXRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAg
IHNlbGYuX3NhbXBsZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5f
c2FtcGxlX21pbjogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zYW1wbGVf
dGltZSA9IDAuMAorICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiByYW5nZShz
ZWxmLl9zaXplKV0KKworICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+IE5vbmU6
CisgICAgICAgIHNlbGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKKyAgICAgICAg
c2VsZi5fc2FtcGxlX2lkeCArPSAxCisKKyAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lkeCA+PSBz
ZWxmLl9zaXplOgorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKKyAgICAgICAgICAg
IHNlbGYuX3JlYWR5ID0gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAg
ICAgc2VsZi5fc2FtcGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAgICAgIHNlbGYu
X3NhbXBsZV9taW4gPSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBmb3Igc2FtcGxlIGlu
IHNlbGYuX3NhbXBsZXNbMTpdOgorICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNlbGYuX3Nh
bXBsZV9taW46CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBzYW1wbGUK
KyAgICAgICAgICAgICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKKworICAgIGRlZiBpc19ydHRf
aW5jcmVhc2luZyhzZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgorICAgICAg
ICBpZiBub3cgPiBzZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6CisgICAgICAgICAg
ICBzZWxmLmFkZF9ydHQocnR0KQorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSBub3cK
KworICAgICAgICAgICAgaWYgc2VsZi5fcmVhZHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5f
ZmlsdGVyZWRfbWluIGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5fc2FtcGxl
X21heDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2VsZi5fc2Ft
cGxlX21heAorCisgICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWluIC0gc2Vs
Zi5fZmlsdGVyZWRfbWluCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNlbGYuX2Zp
bHRlcmVkX21pbjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9IDEKKyAg
ICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVs
dGEgPiAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAg
IHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMv
cmV0cnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNDVjM2E1YzU1YzlhMzk1ODkzOThjOTdjZWU5NjVjMmIzNzA2NjU2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKQEAgLTAsMCAr
MSwzOSBAQAoraW1wb3J0IGlwYWRkcmVzcworCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFj
a2VuZHMgaW1wb3J0IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnBy
aW1pdGl2ZXMgaW1wb3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2
ZXMuYXN5bW1ldHJpYyBpbXBvcnQgcGFkZGluZywgcnNhCisKK2Zyb20gLmNvbm5lY3Rpb24gaW1w
b3J0IE5ldHdvcmtBZGRyZXNzCisKKworZGVmIGVuY29kZV9hZGRyZXNzKGFkZHI6IE5ldHdvcmtB
ZGRyZXNzKSAtPiBieXRlczoKKyAgICByZXR1cm4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoYWRkclsw
XSkucGFja2VkICsgYnl0ZXMoW2FkZHJbMV0gPj4gOCwgYWRkclsxXSAmIDB4RkZdKQorCisKK2Ns
YXNzIFF1aWNSZXRyeVRva2VuSGFuZGxlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5fa2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAg
ICAgICAgcHVibGljX2V4cG9uZW50PTY1NTM3LCBrZXlfc2l6ZT0xMDI0LCBiYWNrZW5kPWRlZmF1
bHRfYmFja2VuZCgpCisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfdG9rZW4oc2VsZiwgYWRk
cjogTmV0d29ya0FkZHJlc3MsIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMpIC0+IGJ5dGVzOgorICAg
ICAgICByZXRyeV9tZXNzYWdlID0gZW5jb2RlX2FkZHJlc3MoYWRkcikgKyBiInwiICsgZGVzdGlu
YXRpb25fY2lkCisgICAgICAgIHJldHVybiBzZWxmLl9rZXkucHVibGljX2tleSgpLmVuY3J5cHQo
CisgICAgICAgICAgICByZXRyeV9tZXNzYWdlLAorICAgICAgICAgICAgcGFkZGluZy5PQUVQKAor
ICAgICAgICAgICAgICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVzLlNIQTI1NigpKSwgYWxnb3Jp
dGhtPWhhc2hlcy5TSEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHZhbGlkYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCB0
b2tlbjogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9tZXNzYWdlID0gc2VsZi5fa2V5
LmRlY3J5cHQoCisgICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgK
KyAgICAgICAgICAgICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29y
aXRobT1oYXNoZXMuU0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAg
ICkKKyAgICAgICAgZW5jb2RlZF9hZGRyLCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gcmV0cnlf
bWVzc2FnZS5zcGxpdChiInwiLCBtYXhzcGxpdD0xKQorICAgICAgICBpZiBlbmNvZGVkX2FkZHIg
IT0gZW5jb2RlX2FkZHJlc3MoYWRkcik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJS
ZW1vdGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMv
c3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE2MjM2ODZmNWQ2YmNkNmY5MGI0ZTUzZjM3MTRmM2JmOWI2ZjYxNjcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKQEAgLTAs
MCArMSwyMTQgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitmcm9tIC4gaW1wb3J0
IGV2ZW50cworZnJvbSAucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gLnBhY2tl
dF9idWlsZGVyIGltcG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0
IFJhbmdlU2V0CisKKworY2xhc3MgUXVpY1N0cmVhbToKKyAgICBkZWYgX19pbml0X18oCisgICAg
ICAgIHNlbGYsCisgICAgICAgIHN0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAg
ICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbDogaW50ID0gMCwKKyAgICAgICAgbWF4X3N0cmVhbV9k
YXRhX3JlbW90ZTogaW50ID0gMCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfYmxv
Y2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gbWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQg
PSBtYXhfc3RyZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFfcmVt
b3RlID0gbWF4X3N0cmVhbV9kYXRhX3JlbW90ZQorICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lz
X2VtcHR5ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyID0gYnl0ZWFycmF5KCkK
KyAgICAgICAgc2VsZi5fcmVjdl9idWZmZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAg
ICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0
YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAgICAgc2VsZi5fcmVjdl9oaWdoZXN0ID0gMCAgIyB0aGUg
aGlnaGVzdCBvZmZzZXQgZXZlciBzZWVuCisgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzID0gUmFu
Z2VTZXQoKQorCisgICAgICAgIHNlbGYuX3NlbmRfYWNrZWQgPSBSYW5nZVNldCgpCisgICAgICAg
IHNlbGYuX3NlbmRfYnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZm
ZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9z
dGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAg
ICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0b3Ag
b2YgdGhlIGJ1ZmZlcgorICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSAwCisgICAgICAgIHNl
bGYuX3NlbmRfcGVuZGluZyA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5n
X2VvZiA9IEZhbHNlCisKKyAgICAgICAgc2VsZi5fX3N0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmVhbV9pZChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgor
ICAgICAgICByZXR1cm4gc2VsZi5fX3N0cmVhbV9pZAorCisgICAgIyByZWFkZXIKKworICAgIGRl
ZiBhZGRfZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSkgLT4gT3B0aW9uYWxbZXZl
bnRzLlN0cmVhbURhdGFSZWNlaXZlZF06CisgICAgICAgICIiIgorICAgICAgICBBZGQgYSBmcmFt
ZSBvZiByZWNlaXZlZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcG9zID0gZnJhbWUub2Zm
c2V0IC0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQKKyAgICAgICAgY291bnQgPSBsZW4oZnJhbWUu
ZGF0YSkKKyAgICAgICAgZnJhbWVfZW5kID0gZnJhbWUub2Zmc2V0ICsgY291bnQKKworICAgICAg
ICAjIHdlIHNob3VsZCByZWNlaXZlIG5vIG1vcmUgZGF0YSBiZXlvbmQgRklOIQorICAgICAgICBp
ZiBzZWxmLl9yZWN2X2J1ZmZlcl9maW4gaXMgbm90IE5vbmUgYW5kIGZyYW1lX2VuZCA+IHNlbGYu
X3JlY3ZfYnVmZmVyX2ZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRGF0YSByZWNl
aXZlZCBiZXlvbmQgRklOIikKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfZmluID0gZnJhbWVfZW5kCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IHNl
bGYuX3JlY3ZfaGlnaGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IGZyYW1l
X2VuZAorCisgICAgICAgICMgZmFzdCBwYXRoOiBuZXcgaW4tb3JkZXIgY2h1bmsKKyAgICAgICAg
aWYgcG9zID09IDAgYW5kIGNvdW50IGFuZCBub3Qgc2VsZi5fcmVjdl9idWZmZXI6CisgICAgICAg
ICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydCArPSBjb3VudAorICAgICAgICAgICAgcmV0dXJu
IGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1mcmFtZS5k
YXRhLCBlbmRfc3RyZWFtPWZyYW1lLmZpbiwgc3RyZWFtX2lkPXNlbGYuX19zdHJlYW1faWQKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIGRpc2NhcmQgZHVwbGljYXRlIGRhdGEKKyAgICAgICAg
aWYgcG9zIDwgMDoKKyAgICAgICAgICAgIGZyYW1lLmRhdGEgPSBmcmFtZS5kYXRhWy1wb3M6XQor
ICAgICAgICAgICAgZnJhbWUub2Zmc2V0IC09IHBvcworICAgICAgICAgICAgcG9zID0gMAorCisg
ICAgICAgICMgbWFya2VkIHJlY2VpdmVkIHJhbmdlCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IGZy
YW1lLm9mZnNldDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzLmFkZChmcmFtZS5vZmZz
ZXQsIGZyYW1lX2VuZCkKKworICAgICAgICAjIGFkZCBuZXcgZGF0YQorICAgICAgICBnYXAgPSBw
b3MgLSBsZW4oc2VsZi5fcmVjdl9idWZmZXIpCisgICAgICAgIGlmIGdhcCA+IDA6CisgICAgICAg
ICAgICBzZWxmLl9yZWN2X2J1ZmZlciArPSBieXRlYXJyYXkoZ2FwKQorICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcltwb3MgOiBwb3MgKyBjb3VudF0gPSBmcmFtZS5kYXRhCisKKyAgICAgICAgIyBy
ZXR1cm4gZGF0YSBmcm9tIHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGRhdGEgPSBz
ZWxmLl9wdWxsX2RhdGEoKQorICAgICAgICBlbmRfc3RyZWFtID0gc2VsZi5fcmVjdl9idWZmZXJf
c3RhcnQgPT0gc2VsZi5fcmVjdl9idWZmZXJfZmluCisgICAgICAgIGlmIGRhdGEgb3IgZW5kX3N0
cmVhbToKKyAgICAgICAgICAgIHJldHVybiBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9
c2VsZi5fX3N0cmVhbV9pZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHVsbF9kYXRhKHNlbGYpIC0+IGJ5dGVzOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmVtb3ZlIGRhdGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZl
ci4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3Jl
YWQgPSBzZWxmLl9yZWN2X3Jhbmdlc1swXS5zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFy
dAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3Jl
YWQgPSBGYWxzZQorICAgICAgICBpZiBub3QgaGFzX2RhdGFfdG9fcmVhZDoKKyAgICAgICAgICAg
IHJldHVybiBiIiIKKworICAgICAgICByID0gc2VsZi5fcmVjdl9yYW5nZXMuc2hpZnQoKQorICAg
ICAgICBwb3MgPSByLnN0b3AgLSByLnN0YXJ0CisgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9y
ZWN2X2J1ZmZlcls6cG9zXSkKKyAgICAgICAgZGVsIHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdCisg
ICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ID0gci5zdG9wCisgICAgICAgIHJldHVybiBk
YXRhCisKKyAgICAjIHdyaXRlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5leHRfc2VuZF9v
ZmZzZXQoc2VsZikgLT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIG9mZnNldCBmb3Ig
dGhlIG5leHQgZnJhbWUgdG8gc2VuZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJt
aW5lIHRoZSBzcGFjZSBuZWVkZWQgZm9yIHRoZSBmcmFtZSdzIGBvZmZzZXRgIGZpZWxkLgorICAg
ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfcGVu
ZGluZ1swXS5zdGFydAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wCisKKyAgICBkZWYgZ2V0X2ZyYW1lKAorICAgICAg
ICBzZWxmLCBtYXhfc2l6ZTogaW50LCBtYXhfb2Zmc2V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQor
ICAgICkgLT4gT3B0aW9uYWxbUXVpY1N0cmVhbUZyYW1lXToKKyAgICAgICAgIiIiCisgICAgICAg
IEdldCBhIGZyYW1lIG9mIGRhdGEgdG8gc2VuZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgZ2V0
IHRoZSBmaXJzdCBwZW5kaW5nIGRhdGEgcmFuZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ciA9IHNlbGYuX3NlbmRfcGVuZGluZ1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3NlbmRfcGVuZGluZ19lb2Y6CisgICAgICAgICAgICAgICAgIyBG
SU4gb25seQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBGYWxzZQor
ICAgICAgICAgICAgICAgIHJldHVybiBRdWljU3RyZWFtRnJhbWUoZmluPVRydWUsIG9mZnNldD1z
ZWxmLl9zZW5kX2J1ZmZlcl9maW4pCisKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNf
ZW1wdHkgPSBUcnVlCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYXBwbHkg
ZmxvdyBjb250cm9sCisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgICAgICBzdG9wID0gbWlu
KHIuc3RvcCwgc3RhcnQgKyBtYXhfc2l6ZSkKKyAgICAgICAgaWYgbWF4X29mZnNldCBpcyBub3Qg
Tm9uZSBhbmQgc3RvcCA+IG1heF9vZmZzZXQ6CisgICAgICAgICAgICBzdG9wID0gbWF4X29mZnNl
dAorICAgICAgICBpZiBzdG9wIDw9IHN0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICAjIGNyZWF0ZSBmcmFtZQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgK
KyAgICAgICAgICAgIGRhdGE9Ynl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZm
ZXJbCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0IC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQg
OiBzdG9wIC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQKKyAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgb2Zmc2V0PXN0YXJ0LAorICAgICAgICApCisgICAgICAg
IHNlbGYuX3NlbmRfcGVuZGluZy5zdWJ0cmFjdChzdGFydCwgc3RvcCkKKworICAgICAgICAjIHRy
YWNrIHRoZSBoaWdoZXN0IG9mZnNldCBldmVyIHNlbnQKKyAgICAgICAgaWYgc3RvcCA+IHNlbGYu
X3NlbmRfaGlnaGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9IHN0b3AKKwor
ICAgICAgICAjIGlmIHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIEVPRiB3YXMgd3JpdHRlbiwgc2V0
IHRoZSBGSU4gYml0CisgICAgICAgIGlmIHNlbGYuX3NlbmRfYnVmZmVyX2ZpbiA9PSBzdG9wOgor
ICAgICAgICAgICAgZnJhbWUuZmluID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5k
aW5nX2VvZiA9IEZhbHNlCisKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgb25fZGF0
YV9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBz
dGFydDogaW50LCBzdG9wOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBDYWxsYmFjayB3aGVuIHNlbnQgZGF0YSBpcyBBQ0snZC4KKyAgICAgICAgIiIiCisgICAgICAg
IHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICBpZiBkZWxpdmVyeSA9
PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoK
KyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLmFkZChzdGFydCwgc3RvcCkKKyAgICAg
ICAgICAgICAgICBmaXJzdF9yYW5nZSA9IHNlbGYuX3NlbmRfYWNrZWRbMF0KKyAgICAgICAgICAg
ICAgICBpZiBmaXJzdF9yYW5nZS5zdGFydCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydDoKKyAg
ICAgICAgICAgICAgICAgICAgc2l6ZSA9IGZpcnN0X3JhbmdlLnN0b3AgLSBmaXJzdF9yYW5nZS5z
dGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLnNoaWZ0KCkKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgKz0gc2l6ZQorICAgICAgICAg
ICAgICAgICAgICBkZWwgc2VsZi5fc2VuZF9idWZmZXJbOnNpemVdCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBpZiBzdG9wID4gc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9w
ZW5kaW5nLmFkZChzdGFydCwgc3RvcCkKKyAgICAgICAgICAgIGlmIHN0b3AgPT0gc2VsZi5fc2Vu
ZF9idWZmZXJfZmluOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfZW1wdHkgPSBG
YWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCisKKyAg
ICBkZWYgd3JpdGUoc2VsZiwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZSkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0
aGUgUVVJQyBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fc2VuZF9i
dWZmZXJfZmluIGlzIE5vbmUsICJjYW5ub3QgY2FsbCB3cml0ZSgpIGFmdGVyIEZJTiIKKyAgICAg
ICAgc2l6ZSA9IGxlbihkYXRhKQorCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBzZWxm
LnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVu
ZGluZy5hZGQoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCwgc2VsZi5f
c2VuZF9idWZmZXJfc3RvcCArIHNpemUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
X3NlbmRfYnVmZmVyICs9IGRhdGEKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3Ag
Kz0gc2l6ZQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1
ZmZlcl9pc19lbXB0eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9maW4g
PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdf
ZW9mID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0Lmxv
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41OGI4YzI2ZmE0YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9y
dC5sb2cKQEAgLTAsMCArMSwyOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1
cmF0aW9uLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L2xvZ2dlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcXVpYy9yZWNvdmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3Rscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGI2OWZmMmQzMjI3NDE2ZTcxNWRmZTE4YjgwMjY5ZTBi
MWMyNTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5w
eQpAQCAtMCwwICsxLDE5MjggQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBvcworaW1wb3J0IHNzbAoraW1wb3J0IHN0cnVjdAorZnJvbSBjb250ZXh0bGliIGltcG9y
dCBjb250ZXh0bWFuYWdlcgorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVs
ZAorZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQg
cGFydGlhbAorZnJvbSB0eXBpbmcgaW1wb3J0ICgKKyAgICBBbnksCisgICAgQ2FsbGFibGUsCisg
ICAgRGljdCwKKyAgICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBT
ZXF1ZW5jZSwKKyAgICBUdXBsZSwKKyAgICBUeXBlVmFyLAorICAgIFVuaW9uLAorKQorCitpbXBv
cnQgY2VydGlmaQorZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3Jh
cGh5LmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRTaWduYXR1cmUKK2Zyb20gY3J5cHRvZ3JhcGh5
Lmhhem1hdC5iYWNrZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBo
eS5oYXptYXQuYmluZGluZ3Mub3BlbnNzbC5iaW5kaW5nIGltcG9ydCBCaW5kaW5nCitmcm9tIGNy
eXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBobWFjLCBzZXJpYWxp
emF0aW9uCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGlt
cG9ydCAoCisgICAgZHNhLAorICAgIGVjLAorICAgIHBhZGRpbmcsCisgICAgcnNhLAorICAgIHg0
NDgsCisgICAgeDI1NTE5LAorKQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMu
a2RmLmhrZGYgaW1wb3J0IEhLREZFeHBhbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmlt
aXRpdmVzLnNlcmlhbGl6YXRpb24gaW1wb3J0IEVuY29kaW5nLCBQdWJsaWNGb3JtYXQKKworZnJv
bSAuYnVmZmVyIGltcG9ydCBCdWZmZXIKKworYmluZGluZyA9IEJpbmRpbmcoKQorYmluZGluZy5p
bml0X3N0YXRpY19sb2NrcygpCitmZmkgPSBiaW5kaW5nLmZmaQorbGliID0gYmluZGluZy5saWIK
KworVExTX1ZFUlNJT05fMV8yID0gMHgwMzAzCitUTFNfVkVSU0lPTl8xXzMgPSAweDAzMDQKK1RM
U19WRVJTSU9OXzFfM19EUkFGVF8yOCA9IDB4N0YxQworVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3
ID0gMHg3RjFCCitUTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYgPSAweDdGMUEKKworVCA9IFR5cGVW
YXIoIlQiKQorCisjIGZhY2lsaXRhdGUgbW9ja2luZyBmb3IgdGhlIHRlc3Qgc3VpdGUKK3V0Y25v
dyA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdworCisKK2NsYXNzIEFsZXJ0RGVzY3JpcHRpb24o
SW50RW51bSk6CisgICAgY2xvc2Vfbm90aWZ5ID0gMAorICAgIHVuZXhwZWN0ZWRfbWVzc2FnZSA9
IDEwCisgICAgYmFkX3JlY29yZF9tYWMgPSAyMAorICAgIHJlY29yZF9vdmVyZmxvdyA9IDIyCisg
ICAgaGFuZHNoYWtlX2ZhaWx1cmUgPSA0MAorICAgIGJhZF9jZXJ0aWZpY2F0ZSA9IDQyCisgICAg
dW5zdXBwb3J0ZWRfY2VydGlmaWNhdGUgPSA0MworICAgIGNlcnRpZmljYXRlX3Jldm9rZWQgPSA0
NAorICAgIGNlcnRpZmljYXRlX2V4cGlyZWQgPSA0NQorICAgIGNlcnRpZmljYXRlX3Vua25vd24g
PSA0NgorICAgIGlsbGVnYWxfcGFyYW1ldGVyID0gNDcKKyAgICB1bmtub3duX2NhID0gNDgKKyAg
ICBhY2Nlc3NfZGVuaWVkID0gNDkKKyAgICBkZWNvZGVfZXJyb3IgPSA1MAorICAgIGRlY3J5cHRf
ZXJyb3IgPSA1MQorICAgIHByb3RvY29sX3ZlcnNpb24gPSA3MAorICAgIGluc3VmZmljaWVudF9z
ZWN1cml0eSA9IDcxCisgICAgaW50ZXJuYWxfZXJyb3IgPSA4MAorICAgIGluYXBwcm9wcmlhdGVf
ZmFsbGJhY2sgPSA4NgorICAgIHVzZXJfY2FuY2VsZWQgPSA5MAorICAgIG1pc3NpbmdfZXh0ZW5z
aW9uID0gMTA5CisgICAgdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uID0gMTEwCisgICAgdW5yZWNvZ25p
emVkX25hbWUgPSAxMTIKKyAgICBiYWRfY2VydGlmaWNhdGVfc3RhdHVzX3Jlc3BvbnNlID0gMTEz
CisgICAgdW5rbm93bl9wc2tfaWRlbnRpdHkgPSAxMTUKKyAgICBjZXJ0aWZpY2F0ZV9yZXF1aXJl
ZCA9IDExNgorICAgIG5vX2FwcGxpY2F0aW9uX3Byb3RvY29sID0gMTIwCisKKworY2xhc3MgQWxl
cnQoRXhjZXB0aW9uKToKKyAgICBkZXNjcmlwdGlvbjogQWxlcnREZXNjcmlwdGlvbgorCisKK2Ns
YXNzIEFsZXJ0QmFkQ2VydGlmaWNhdGUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnRE
ZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGUKKworCitjbGFzcyBBbGVydENlcnRpZmljYXRlRXhw
aXJlZChBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmNlcnRpZmlj
YXRlX2V4cGlyZWQKKworCitjbGFzcyBBbGVydERlY3J5cHRFcnJvcihBbGVydCk6CisgICAgZGVz
Y3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3IKKworCitjbGFzcyBBbGVy
dEhhbmRzaGFrZUZhaWx1cmUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlw
dGlvbi5oYW5kc2hha2VfZmFpbHVyZQorCisKK2NsYXNzIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcihB
bGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1l
dGVyCisKKworY2xhc3MgQWxlcnRJbnRlcm5hbEVycm9yKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlv
biA9IEFsZXJ0RGVzY3JpcHRpb24uaW50ZXJuYWxfZXJyb3IKKworCitjbGFzcyBBbGVydFByb3Rv
Y29sVmVyc2lvbihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnBy
b3RvY29sX3ZlcnNpb24KKworCitjbGFzcyBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlKEFsZXJ0KToK
KyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlCisK
KworY2xhc3MgRGlyZWN0aW9uKEVudW0pOgorICAgIERFQ1JZUFQgPSAwCisgICAgRU5DUllQVCA9
IDEKKworCitjbGFzcyBFcG9jaChFbnVtKToKKyAgICBJTklUSUFMID0gMAorICAgIFpFUk9fUlRU
ID0gMQorICAgIEhBTkRTSEFLRSA9IDIKKyAgICBPTkVfUlRUID0gMworCisKK2NsYXNzIFN0YXRl
KEVudW0pOgorICAgIENMSUVOVF9IQU5EU0hBS0VfU1RBUlQgPSAwCisgICAgQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8gPSAxCisgICAgQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9O
UyA9IDIKKyAgICBDTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNB
VEUgPSAzCisgICAgQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9DRVJUSUZJQ0FURSA9IDQKKyAg
ICBDTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1ZFUklGWSA9IDUKKyAgICBDTElFTlRfRVhQRUNU
X0ZJTklTSEVEID0gNgorICAgIENMSUVOVF9QT1NUX0hBTkRTSEFLRSA9IDcKKworICAgIFNFUlZF
Ul9FWFBFQ1RfQ0xJRU5UX0hFTExPID0gOAorICAgIFNFUlZFUl9FWFBFQ1RfRklOSVNIRUQgPSA5
CisgICAgU0VSVkVSX1BPU1RfSEFORFNIQUtFID0gMTAKKworCitkZWYgaGtkZl9sYWJlbChsYWJl
bDogYnl0ZXMsIGhhc2hfdmFsdWU6IGJ5dGVzLCBsZW5ndGg6IGludCkgLT4gYnl0ZXM6CisgICAg
ZnVsbF9sYWJlbCA9IGIidGxzMTMgIiArIGxhYmVsCisgICAgcmV0dXJuICgKKyAgICAgICAgc3Ry
dWN0LnBhY2soIiFIQiIsIGxlbmd0aCwgbGVuKGZ1bGxfbGFiZWwpKQorICAgICAgICArIGZ1bGxf
bGFiZWwKKyAgICAgICAgKyBzdHJ1Y3QucGFjaygiIUIiLCBsZW4oaGFzaF92YWx1ZSkpCisgICAg
ICAgICsgaGFzaF92YWx1ZQorICAgICkKKworCitkZWYgaGtkZl9leHBhbmRfbGFiZWwoCisgICAg
YWxnb3JpdGhtOiBoYXNoZXMuSGFzaEFsZ29yaXRobSwKKyAgICBzZWNyZXQ6IGJ5dGVzLAorICAg
IGxhYmVsOiBieXRlcywKKyAgICBoYXNoX3ZhbHVlOiBieXRlcywKKyAgICBsZW5ndGg6IGludCwK
KykgLT4gYnl0ZXM6CisgICAgcmV0dXJuIEhLREZFeHBhbmQoCisgICAgICAgIGFsZ29yaXRobT1h
bGdvcml0aG0sCisgICAgICAgIGxlbmd0aD1sZW5ndGgsCisgICAgICAgIGluZm89aGtkZl9sYWJl
bChsYWJlbCwgaGFzaF92YWx1ZSwgbGVuZ3RoKSwKKyAgICAgICAgYmFja2VuZD1kZWZhdWx0X2Jh
Y2tlbmQoKSwKKyAgICApLmRlcml2ZShzZWNyZXQpCisKKworZGVmIGhrZGZfZXh0cmFjdCgKKyAg
ICBhbGdvcml0aG06IGhhc2hlcy5IYXNoQWxnb3JpdGhtLCBzYWx0OiBieXRlcywga2V5X21hdGVy
aWFsOiBieXRlcworKSAtPiBieXRlczoKKyAgICBoID0gaG1hYy5ITUFDKHNhbHQsIGFsZ29yaXRo
bSwgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSkKKyAgICBoLnVwZGF0ZShrZXlfbWF0ZXJpYWwp
CisgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisKK2RlZiBsb2FkX3BlbV9wcml2YXRlX2tleSgK
KyAgICBkYXRhOiBieXRlcywgcGFzc3dvcmQ6IE9wdGlvbmFsW2J5dGVzXQorKSAtPiBVbmlvbltk
c2EuRFNBUHJpdmF0ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2
YXRlS2V5XToKKyAgICAiIiIKKyAgICBMb2FkIGEgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkuCisg
ICAgIiIiCisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb24ubG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisg
ICAgICAgIGRhdGEsIHBhc3N3b3JkPXBhc3N3b3JkLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgp
CisgICAgKQorCisKK2RlZiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhkYXRhOiBieXRlcykg
LT4gTGlzdFt4NTA5LkNlcnRpZmljYXRlXToKKyAgICAiIiIKKyAgICBMb2FkIGEgY2hhaW4gb2Yg
UEVNLWVuY29kZWQgWDUwOSBjZXJ0aWZpY2F0ZXMuCisgICAgIiIiCisgICAgYm91bmRhcnkgPSBi
Ii0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS1cbiIKKyAgICBjZXJ0aWZpY2F0ZXMgPSBbXQorICAg
IGZvciBjaHVuayBpbiBkYXRhLnNwbGl0KGJvdW5kYXJ5KToKKyAgICAgICAgaWYgY2h1bms6Cisg
ICAgICAgICAgICBjZXJ0aWZpY2F0ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHg1MDkubG9h
ZF9wZW1feDUwOV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgKyBib3Vu
ZGFyeSwgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKyAgICByZXR1cm4gY2VydGlmaWNhdGVzCisKKworZGVmIG9wZW5zc2xfYXNzZXJ0
KG9rOiBib29sLCBmdW5jOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgbm90IG9rOgorICAgICAgICBs
aWIuRVJSX2NsZWFyX2Vycm9yKCkKKyAgICAgICAgcmFpc2UgQWxlcnRJbnRlcm5hbEVycm9yKCJP
cGVuU1NMIGNhbGwgdG8gJXMgZmFpbGVkIiAlIGZ1bmMpCisKKworZGVmIG9wZW5zc2xfZGVjb2Rl
X3N0cmluZyhjaGFycCkgLT4gc3RyOgorICAgIHJldHVybiBmZmkuc3RyaW5nKGNoYXJwKS5kZWNv
ZGUoInV0Zi04IikgaWYgY2hhcnAgZWxzZSAiIgorCisKK2RlZiBvcGVuc3NsX2VuY29kZV9wYXRo
KHM6IE9wdGlvbmFsW3N0cl0pIC0+IEFueToKKyAgICBpZiBzIGlzIG5vdCBOb25lOgorICAgICAg
ICByZXR1cm4gb3MuZnNlbmNvZGUocykKKyAgICByZXR1cm4gZmZpLk5VTEwKKworCitkZWYgY2Vy
dF94NTA5X3B0cihjZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSkgLT4gQW55OgorICAgICIi
IgorICAgIEFjY2Vzc29yIGZvciBwcml2YXRlIGF0dHJpYnV0ZS4KKyAgICAiIiIKKyAgICByZXR1
cm4gZ2V0YXR0cihjZXJ0aWZpY2F0ZSwgIl94NTA5IikKKworCitkZWYgdmVyaWZ5X2NlcnRpZmlj
YXRlKAorICAgIGNlcnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRlLAorICAgIGNoYWluOiBMaXN0
W3g1MDkuQ2VydGlmaWNhdGVdID0gW10sCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0g
PSBOb25lLAorICAgIGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICBjYWZpbGU6
IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUs
CispIC0+IE5vbmU6CisgICAgIyB2ZXJpZnkgZGF0ZXMKKyAgICBub3cgPSB1dGNub3coKQorICAg
IGlmIG5vdyA8IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmU6CisgICAgICAgIHJhaXNlIEFs
ZXJ0Q2VydGlmaWNhdGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKyAg
ICBpZiBub3cgPiBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXI6CisgICAgICAgIHJhaXNlIEFs
ZXJ0Q2VydGlmaWNhdGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIgdmFsaWQiKQor
CisgICAgIyB2ZXJpZnkgc3ViamVjdAorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgor
ICAgICAgICBzdWJqZWN0ID0gW10KKyAgICAgICAgc3ViamVjdEFsdE5hbWU6IExpc3RbVHVwbGVb
c3RyLCBzdHJdXSA9IFtdCisgICAgICAgIGZvciBhdHRyIGluIGNlcnRpZmljYXRlLnN1YmplY3Q6
CisgICAgICAgICAgICBpZiBhdHRyLm9pZCA9PSB4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUU6Cisg
ICAgICAgICAgICAgICAgc3ViamVjdC5hcHBlbmQoKCgiY29tbW9uTmFtZSIsIGF0dHIudmFsdWUp
LCkpCisgICAgICAgIGZvciBleHQgaW4gY2VydGlmaWNhdGUuZXh0ZW5zaW9uczoKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXh0LnZhbHVlLCB4NTA5LlN1YmplY3RBbHRlcm5hdGl2ZU5hbWUp
OgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGV4dC52YWx1ZToKKyAgICAgICAgICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCB4NTA5LkROU05hbWUpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgc3ViamVjdEFsdE5hbWUuYXBwZW5kKCgiRE5TIiwgbmFtZS52YWx1ZSkpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lKAorICAgICAgICAgICAg
ICAgIHsic3ViamVjdCI6IHR1cGxlKHN1YmplY3QpLCAic3ViamVjdEFsdE5hbWUiOiB0dXBsZShz
dWJqZWN0QWx0TmFtZSl9LAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lLAorICAgICAgICAg
ICAgKQorICAgICAgICBleGNlcHQgc3NsLkNlcnRpZmljYXRlRXJyb3IgYXMgZXhjOgorICAgICAg
ICAgICAgcmFpc2UgQWxlcnRCYWRDZXJ0aWZpY2F0ZSgiXG4iLmpvaW4oZXhjLmFyZ3MpKSBmcm9t
IGV4YworCisgICAgIyB2ZXJpZnkgY2VydGlmaWNhdGUgY2hhaW4KKyAgICBzdG9yZSA9IGxpYi5Y
NTA5X1NUT1JFX25ldygpCisgICAgb3BlbnNzbF9hc3NlcnQoc3RvcmUgIT0gZmZpLk5VTEwsICJY
NTA5X3N0b3JlX25ldyIpCisgICAgc3RvcmUgPSBmZmkuZ2Moc3RvcmUsIGxpYi5YNTA5X1NUT1JF
X2ZyZWUpCisKKyAgICAjIGxvYWQgZGVmYXVsdCBDQXMKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAg
ICAgICAgbGliLlg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMoc3RvcmUpLCAiWDUwOV9TVE9S
RV9zZXRfZGVmYXVsdF9wYXRocyIKKyAgICApCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAg
IGxpYi5YNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zKAorICAgICAgICAgICAgc3RvcmUsIG9wZW5z
c2xfZW5jb2RlX3BhdGgoY2VydGlmaS53aGVyZSgpKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChOb25l
KSwKKyAgICAgICAgKSwKKyAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAorICAg
ICkKKworICAgICMgbG9hZCBleHRyYSBDQXMKKyAgICBpZiBjYWRhdGEgaXMgbm90IE5vbmU6Cisg
ICAgICAgIGZvciBjZXJ0IGluIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGNhZGF0YSk6Cisg
ICAgICAgICAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgICAgICBsaWIuWDUwOV9TVE9S
RV9hZGRfY2VydChzdG9yZSwgY2VydF94NTA5X3B0cihjZXJ0KSksCisgICAgICAgICAgICAgICAg
Ilg1MDlfU1RPUkVfYWRkX2NlcnQiLAorICAgICAgICAgICAgKQorCisgICAgaWYgY2FmaWxlIGlz
IG5vdCBOb25lIG9yIGNhcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQo
CisgICAgICAgICAgICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAg
ICAgICBzdG9yZSwgb3BlbnNzbF9lbmNvZGVfcGF0aChjYWZpbGUpLCBvcGVuc3NsX2VuY29kZV9w
YXRoKGNhcGF0aCkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAiWDUwOV9TVE9SRV9sb2Fk
X2xvY2F0aW9ucyIsCisgICAgICAgICkKKworICAgIGNoYWluX3N0YWNrID0gbGliLnNrX1g1MDlf
bmV3X251bGwoKQorICAgIG9wZW5zc2xfYXNzZXJ0KGNoYWluX3N0YWNrICE9IGZmaS5OVUxMLCAi
c2tfWDUwOV9uZXdfbnVsbCIpCisgICAgY2hhaW5fc3RhY2sgPSBmZmkuZ2MoY2hhaW5fc3RhY2ss
IGxpYi5za19YNTA5X2ZyZWUpCisgICAgZm9yIGNlcnQgaW4gY2hhaW46CisgICAgICAgIG9wZW5z
c2xfYXNzZXJ0KAorICAgICAgICAgICAgbGliLnNrX1g1MDlfcHVzaChjaGFpbl9zdGFjaywgY2Vy
dF94NTA5X3B0cihjZXJ0KSksICJza19YNTA5X3B1c2giCisgICAgICAgICkKKworICAgIHN0b3Jl
X2N0eCA9IGxpYi5YNTA5X1NUT1JFX0NUWF9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3Jl
X2N0eCAhPSBmZmkuTlVMTCwgIlg1MDlfU1RPUkVfQ1RYX25ldyIpCisgICAgc3RvcmVfY3R4ID0g
ZmZpLmdjKHN0b3JlX2N0eCwgbGliLlg1MDlfU1RPUkVfQ1RYX2ZyZWUpCisgICAgb3BlbnNzbF9h
c3NlcnQoCisgICAgICAgIGxpYi5YNTA5X1NUT1JFX0NUWF9pbml0KAorICAgICAgICAgICAgc3Rv
cmVfY3R4LCBzdG9yZSwgY2VydF94NTA5X3B0cihjZXJ0aWZpY2F0ZSksIGNoYWluX3N0YWNrCisg
ICAgICAgICksCisgICAgICAgICJYNTA5X1NUT1JFX0NUWF9pbml0IiwKKyAgICApCisKKyAgICBy
ZXMgPSBsaWIuWDUwOV92ZXJpZnlfY2VydChzdG9yZV9jdHgpCisgICAgaWYgbm90IHJlczoKKyAg
ICAgICAgZXJyID0gbGliLlg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihzdG9yZV9jdHgpCisgICAg
ICAgIGVycl9zdHIgPSBvcGVuc3NsX2RlY29kZV9zdHJpbmcobGliLlg1MDlfdmVyaWZ5X2NlcnRf
ZXJyb3Jfc3RyaW5nKGVycikpCisgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoZXJy
X3N0cikKKworCitjbGFzcyBDaXBoZXJTdWl0ZShJbnRFbnVtKToKKyAgICBBRVNfMTI4X0dDTV9T
SEEyNTYgPSAweDEzMDEKKyAgICBBRVNfMjU2X0dDTV9TSEEzODQgPSAweDEzMDIKKyAgICBDSEFD
SEEyMF9QT0xZMTMwNV9TSEEyNTYgPSAweDEzMDMKKyAgICBFTVBUWV9SRU5FR09USUFUSU9OX0lO
Rk9fU0NTViA9IDB4MDBGRgorCisKK2NsYXNzIENvbXByZXNzaW9uTWV0aG9kKEludEVudW0pOgor
ICAgIE5VTEwgPSAwCisKKworY2xhc3MgRXh0ZW5zaW9uVHlwZShJbnRFbnVtKToKKyAgICBTRVJW
RVJfTkFNRSA9IDAKKyAgICBTVEFUVVNfUkVRVUVTVCA9IDUKKyAgICBTVVBQT1JURURfR1JPVVBT
ID0gMTAKKyAgICBTSUdOQVRVUkVfQUxHT1JJVEhNUyA9IDEzCisgICAgQUxQTiA9IDE2CisgICAg
Q09NUFJFU1NfQ0VSVElGSUNBVEUgPSAyNworICAgIFBSRV9TSEFSRURfS0VZID0gNDEKKyAgICBF
QVJMWV9EQVRBID0gNDIKKyAgICBTVVBQT1JURURfVkVSU0lPTlMgPSA0MworICAgIENPT0tJRSA9
IDQ0CisgICAgUFNLX0tFWV9FWENIQU5HRV9NT0RFUyA9IDQ1CisgICAgS0VZX1NIQVJFID0gNTEK
KyAgICBRVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTID0gNjU0NDUKKyAgICBFTkNSWVBURURfU0VS
VkVSX05BTUUgPSA2NTQ4NgorCisKK2NsYXNzIEdyb3VwKEludEVudW0pOgorICAgIFNFQ1AyNTZS
MSA9IDB4MDAxNworICAgIFNFQ1AzODRSMSA9IDB4MDAxOAorICAgIFNFQ1A1MjFSMSA9IDB4MDAx
OQorICAgIFgyNTUxOSA9IDB4MDAxRAorICAgIFg0NDggPSAweDAwMUUKKyAgICBHUkVBU0UgPSAw
eEFBQUEKKworCitjbGFzcyBIYW5kc2hha2VUeXBlKEludEVudW0pOgorICAgIENMSUVOVF9IRUxM
TyA9IDEKKyAgICBTRVJWRVJfSEVMTE8gPSAyCisgICAgTkVXX1NFU1NJT05fVElDS0VUID0gNAor
ICAgIEVORF9PRl9FQVJMWV9EQVRBID0gNQorICAgIEVOQ1JZUFRFRF9FWFRFTlNJT05TID0gOAor
ICAgIENFUlRJRklDQVRFID0gMTEKKyAgICBDRVJUSUZJQ0FURV9SRVFVRVNUID0gMTMKKyAgICBD
RVJUSUZJQ0FURV9WRVJJRlkgPSAxNQorICAgIEZJTklTSEVEID0gMjAKKyAgICBLRVlfVVBEQVRF
ID0gMjQKKyAgICBDT01QUkVTU0VEX0NFUlRJRklDQVRFID0gMjUKKyAgICBNRVNTQUdFX0hBU0gg
PSAyNTQKKworCitjbGFzcyBQc2tLZXlFeGNoYW5nZU1vZGUoSW50RW51bSk6CisgICAgUFNLX0tF
ID0gMAorICAgIFBTS19ESEVfS0UgPSAxCisKKworY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtKElu
dEVudW0pOgorICAgIEVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYgPSAweDA0MDMKKyAgICBFQ0RTQV9T
RUNQMzg0UjFfU0hBMzg0ID0gMHgwNTAzCisgICAgRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiA9IDB4
MDYwMworICAgIEVEMjU1MTkgPSAweDA4MDcKKyAgICBFRDQ0OCA9IDB4MDgwOAorICAgIFJTQV9Q
S0NTMV9TSEEyNTYgPSAweDA0MDEKKyAgICBSU0FfUEtDUzFfU0hBMzg0ID0gMHgwNTAxCisgICAg
UlNBX1BLQ1MxX1NIQTUxMiA9IDB4MDYwMQorICAgIFJTQV9QU1NfUFNTX1NIQTI1NiA9IDB4MDgw
OQorICAgIFJTQV9QU1NfUFNTX1NIQTM4NCA9IDB4MDgwQQorICAgIFJTQV9QU1NfUFNTX1NIQTUx
MiA9IDB4MDgwQgorICAgIFJTQV9QU1NfUlNBRV9TSEEyNTYgPSAweDA4MDQKKyAgICBSU0FfUFNT
X1JTQUVfU0hBMzg0ID0gMHgwODA1CisgICAgUlNBX1BTU19SU0FFX1NIQTUxMiA9IDB4MDgwNgor
CisgICAgIyBsZWdhY3kKKyAgICBSU0FfUEtDUzFfU0hBMSA9IDB4MDIwMQorICAgIFNIQTFfRFNB
ID0gMHgwMjAyCisgICAgRUNEU0FfU0hBMSA9IDB4MDIwMworCisKKyMgQkxPQ0tTCisKKworQGNv
bnRleHRtYW5hZ2VyCitkZWYgcHVsbF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkg
LT4gR2VuZXJhdG9yOgorICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgYiBpbiBidWYucHVsbF9ieXRl
cyhjYXBhY2l0eSk6CisgICAgICAgIGxlbmd0aCA9IChsZW5ndGggPDwgOCkgfCBiCisgICAgZW5k
ID0gYnVmLnRlbGwoKSArIGxlbmd0aAorICAgIHlpZWxkIGxlbmd0aAorICAgIGFzc2VydCBidWYu
dGVsbCgpID09IGVuZAorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfYmxvY2soYnVmOiBC
dWZmZXIsIGNhcGFjaXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICAiIiIKKyAgICBDb250ZXh0
IG1hbmFnZXIgdG8gcHVzaCBhIHZhcmlhYmxlLWxlbmd0aCBibG9jaywgd2l0aCBgY2FwYWNpdHlg
IGJ5dGVzCisgICAgdG8gd3JpdGUgdGhlIGxlbmd0aC4KKyAgICAiIiIKKyAgICBzdGFydCA9IGJ1
Zi50ZWxsKCkgKyBjYXBhY2l0eQorICAgIGJ1Zi5zZWVrKHN0YXJ0KQorICAgIHlpZWxkCisgICAg
ZW5kID0gYnVmLnRlbGwoKQorICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0CisgICAgd2hpbGUgY2Fw
YWNpdHk6CisgICAgICAgIGJ1Zi5zZWVrKHN0YXJ0IC0gY2FwYWNpdHkpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQ4KChsZW5ndGggPj4gKDggKiAoY2FwYWNpdHkgLSAxKSkpICYgMHhGRikKKyAgICAg
ICAgY2FwYWNpdHkgLT0gMQorICAgIGJ1Zi5zZWVrKGVuZCkKKworCisjIExJU1RTCisKKworZGVm
IHB1bGxfbGlzdChidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW10s
IFRdKSAtPiBMaXN0W1RdOgorICAgICIiIgorICAgIFB1bGwgYSBsaXN0IG9mIGl0ZW1zLgorICAg
ICIiIgorICAgIGl0ZW1zID0gW10KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkg
YXMgbGVuZ3RoOgorICAgICAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgIHdo
aWxlIGJ1Zi50ZWxsKCkgPCBlbmQ6CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoZnVuYygpKQor
ICAgIHJldHVybiBpdGVtcworCisKK2RlZiBwdXNoX2xpc3QoCisgICAgYnVmOiBCdWZmZXIsIGNh
cGFjaXR5OiBpbnQsIGZ1bmM6IENhbGxhYmxlW1tUXSwgTm9uZV0sIHZhbHVlczogU2VxdWVuY2Vb
VF0KKykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAi
IiIKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGZvciB2YWx1
ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmdW5jKHZhbHVlKQorCisKK2RlZiBwdWxsX29wYXF1
ZShidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgUHVs
bCBhbiBvcGFxdWUgdmFsdWUgcHJlZml4ZWQgYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0
aCBwdWxsX2Jsb2NrKGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKKyAgICAgICAgcmV0dXJuIGJ1
Zi5wdWxsX2J5dGVzKGxlbmd0aCkKKworCitkZWYgcHVzaF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNh
cGFjaXR5OiBpbnQsIHZhbHVlOiBieXRlcykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGFu
IG9wYXF1ZSB2YWx1ZSBwcmVmaXggYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdXNo
X2Jsb2NrKGJ1ZiwgY2FwYWNpdHkpOgorICAgICAgICBidWYucHVzaF9ieXRlcyh2YWx1ZSkKKwor
CitAY29udGV4dG1hbmFnZXIKK2RlZiBwdXNoX2V4dGVuc2lvbihidWY6IEJ1ZmZlciwgZXh0ZW5z
aW9uX3R5cGU6IGludCkgLT4gR2VuZXJhdG9yOgorICAgIGJ1Zi5wdXNoX3VpbnQxNihleHRlbnNp
b25fdHlwZSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgeWllbGQKKwor
CisjIEtleVNoYXJlRW50cnkKKworCitLZXlTaGFyZUVudHJ5ID0gVHVwbGVbaW50LCBieXRlc10K
KworCitkZWYgcHVsbF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIpIC0+IEtleVNoYXJlRW50cnk6Cisg
ICAgZ3JvdXAgPSBidWYucHVsbF91aW50MTYoKQorICAgIGRhdGEgPSBwdWxsX29wYXF1ZShidWYs
IDIpCisgICAgcmV0dXJuIChncm91cCwgZGF0YSkKKworCitkZWYgcHVzaF9rZXlfc2hhcmUoYnVm
OiBCdWZmZXIsIHZhbHVlOiBLZXlTaGFyZUVudHJ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3Vp
bnQxNih2YWx1ZVswXSkKKyAgICBwdXNoX29wYXF1ZShidWYsIDIsIHZhbHVlWzFdKQorCisKKyMg
QUxQTgorCisKK2RlZiBwdWxsX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIpIC0+IHN0cjoKKyAg
ICByZXR1cm4gcHVsbF9vcGFxdWUoYnVmLCAxKS5kZWNvZGUoImFzY2lpIikKKworCitkZWYgcHVz
aF9hbHBuX3Byb3RvY29sKGJ1ZjogQnVmZmVyLCBwcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAg
IHB1c2hfb3BhcXVlKGJ1ZiwgMSwgcHJvdG9jb2wuZW5jb2RlKCJhc2NpaSIpKQorCisKKyMgUFJF
IFNIQVJFRCBLRVkKKworUHNrSWRlbnRpdHkgPSBUdXBsZVtieXRlcywgaW50XQorCisKK2RlZiBw
dWxsX3Bza19pZGVudGl0eShidWY6IEJ1ZmZlcikgLT4gUHNrSWRlbnRpdHk6CisgICAgaWRlbnRp
dHkgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgb2JmdXNjYXRlZF90aWNrZXRfYWdlID0gYnVm
LnB1bGxfdWludDMyKCkKKyAgICByZXR1cm4gKGlkZW50aXR5LCBvYmZ1c2NhdGVkX3RpY2tldF9h
Z2UpCisKKworZGVmIHB1c2hfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyLCBlbnRyeTogUHNrSWRl
bnRpdHkpIC0+IE5vbmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVswXSkKKyAgICBi
dWYucHVzaF91aW50MzIoZW50cnlbMV0pCisKKworZGVmIHB1bGxfcHNrX2JpbmRlcihidWY6IEJ1
ZmZlcikgLT4gYnl0ZXM6CisgICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKworCitkZWYg
cHVzaF9wc2tfYmluZGVyKGJ1ZjogQnVmZmVyLCBiaW5kZXI6IGJ5dGVzKSAtPiBOb25lOgorICAg
IHB1c2hfb3BhcXVlKGJ1ZiwgMSwgYmluZGVyKQorCisKKyMgTUVTU0FHRVMKKworRXh0ZW5zaW9u
ID0gVHVwbGVbaW50LCBieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBPZmZlcmVkUHNrczoK
KyAgICBpZGVudGl0aWVzOiBMaXN0W1Bza0lkZW50aXR5XQorICAgIGJpbmRlcnM6IExpc3RbYnl0
ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgQ2xpZW50SGVsbG86CisgICAgcmFuZG9tOiBieXRl
cworICAgIHNlc3Npb25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlczogTGlzdFtpbnRdCisg
ICAgY29tcHJlc3Npb25fbWV0aG9kczogTGlzdFtpbnRdCisKKyAgICAjIGV4dGVuc2lvbnMKKyAg
ICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICBlYXJseV9k
YXRhOiBib29sID0gRmFsc2UKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVF
bnRyeV1dID0gTm9uZQorICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10g
PSBOb25lCisgICAgcHNrX2tleV9leGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9
IE5vbmUKKyAgICBzZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBzaWduYXR1
cmVfYWxnb3JpdGhtczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRf
Z3JvdXBzOiBPcHRpb25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHN1cHBvcnRlZF92ZXJzaW9u
czogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKworICAgIG90aGVyX2V4dGVuc2lvbnM6IExp
c3RbRXh0ZW5zaW9uXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxs
X2NsaWVudF9oZWxsbyhidWY6IEJ1ZmZlcikgLT4gQ2xpZW50SGVsbG86CisgICAgYXNzZXJ0IGJ1
Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KKyAgICB3aXRoIHB1
bGxfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRM
U19WRVJTSU9OXzFfMgorICAgICAgICBjbGllbnRfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIp
CisKKyAgICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1jbGll
bnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAor
ICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1wdWxsX2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50
MTYpLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1wdWxsX2xpc3QoYnVmLCAxLCBi
dWYucHVsbF91aW50OCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAg
ICAgYWZ0ZXJfcHNrID0gRmFsc2UKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBO
b25lOgorICAgICAgICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAg
ICAgIG5vbmxvY2FsIGFmdGVyX3BzaworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhZnRlcl9wc2sK
KworICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAg
ICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBp
ZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAg
ICAgICBoZWxsby5rZXlfc2hhcmUgPSBwdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfa2V5
X3NoYXJlLCBidWYpKQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNp
b25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0
ZWRfdmVyc2lvbnMgPSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50MTYpCisgICAgICAg
ICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09S
SVRITVM6CisgICAgICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBwdWxs
X2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lv
bl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUzoKKyAgICAgICAgICAgICAg
ICBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzID0gcHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWlu
dDE2KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBT
S19LRVlfRVhDSEFOR0VfTU9ERVM6CisgICAgICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNo
YW5nZV9tb2RlcyA9IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KQorICAgICAgICAg
ICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FOgorICAg
ICAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSAwCisgICAgICAgICAgICAgICAgICAgIGhlbGxv
LnNlcnZlcl9uYW1lID0gcHVsbF9vcGFxdWUoYnVmLCAyKS5kZWNvZGUoImFzY2lpIikKKyAgICAg
ICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAg
ICAgICAgICAgIGhlbGxvLmFscG5fcHJvdG9jb2xzID0gcHVsbF9saXN0KAorICAgICAgICAgICAg
ICAgICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRydWUK
KyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVfU0hB
UkVEX0tFWToKKyAgICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IE9mZmVyZWRQ
c2tzKAorICAgICAgICAgICAgICAgICAgICBpZGVudGl0aWVzPXB1bGxfbGlzdChidWYsIDIsIHBh
cnRpYWwocHVsbF9wc2tfaWRlbnRpdHksIGJ1ZikpLAorICAgICAgICAgICAgICAgICAgICBiaW5k
ZXJzPXB1bGxfbGlzdChidWYsIDIsIHBhcnRpYWwocHVsbF9wc2tfYmluZGVyLCBidWYpKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYWZ0ZXJfcHNrID0gVHJ1ZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhl
eHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0
KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVz
aF9jbGllbnRfaGVsbG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBDbGllbnRIZWxsbykgLT4gTm9uZToK
KyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTykKKyAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9O
XzFfMikKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorICAgICAgICBwdXNo
X29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAgICAgIHB1c2hfbGlzdChidWYs
IDIsIGJ1Zi5wdXNoX3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRlcykKKyAgICAgICAgcHVzaF9s
aXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDgsIGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMpCisK
KyAgICAgICAgIyBleHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgor
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NI
QVJFKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1c2hfa2V5
X3NoYXJlLCBidWYpLCBoZWxsby5rZXlfc2hhcmUpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9l
eHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAg
ICAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0
ZWRfdmVyc2lvbnMpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRl
bnNpb25UeXBlLlNJR05BVFVSRV9BTEdPUklUSE1TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoYnVmLCAyLCBidWYucHVzaF91aW50MTYsIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zKQor
CisgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQ
T1JURURfR1JPVVBTKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYucHVz
aF91aW50MTYsIGhlbGxvLnN1cHBvcnRlZF9ncm91cHMpCisKKyAgICAgICAgICAgIGlmIGhlbGxv
LnBza19rZXlfZXhjaGFuZ2VfbW9kZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0
aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RF
Uyk6CisgICAgICAgICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQ4
LCBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzKQorCisgICAgICAgICAgICBpZiBoZWxsby5z
ZXJ2ZXJfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5z
aW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSk6CisgICAgICAgICAgICAgICAgICAg
IHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnB1
c2hfdWludDgoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
aGVsbG8uc2VydmVyX25hbWUuZW5jb2RlKCJhc2NpaSIpKQorCisgICAgICAgICAgICBpZiBoZWxs
by5hbHBuX3Byb3RvY29scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hf
ZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAg
cHVzaF9saXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1c2hf
YWxwbl9wcm90b2NvbCwgYnVmKSwgaGVsbG8uYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1
ZSBpbiBoZWxsby5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9l
eHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5w
dXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkKKworICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlf
ZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9u
VHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAg
ICAjIHByZV9zaGFyZWRfa2V5IE1VU1QgYmUgbGFzdAorICAgICAgICAgICAgaWYgaGVsbG8ucHJl
X3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVu
c2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAg
ICAgICBwdXNoX2xpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX3Bz
a19pZGVudGl0eSwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFy
ZWRfa2V5LmlkZW50aXRpZXMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaF9saXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9w
c2tfYmluZGVyLCBidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJl
ZF9rZXkuYmluZGVycywKKyAgICAgICAgICAgICAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2Ns
YXNzIFNlcnZlckhlbGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBzZXNzaW9uX2lkOiBieXRl
cworICAgIGNpcGhlcl9zdWl0ZTogaW50CisgICAgY29tcHJlc3Npb25fbWV0aG9kOiBpbnQKKwor
ICAgICMgZXh0ZW5zaW9ucworICAgIGtleV9zaGFyZTogT3B0aW9uYWxbS2V5U2hhcmVFbnRyeV0g
PSBOb25lCisgICAgcHJlX3NoYXJlZF9rZXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3Vw
cG9ydGVkX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9u
czogTGlzdFtUdXBsZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkK
KworCitkZWYgcHVsbF9zZXJ2ZXJfaGVsbG8oYnVmOiBCdWZmZXIpIC0+IFNlcnZlckhlbGxvOgor
ICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hFTExP
CisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91
aW50MTYoKSA9PSBUTFNfVkVSU0lPTl8xXzIKKyAgICAgICAgc2VydmVyX3JhbmRvbSA9IGJ1Zi5w
dWxsX2J5dGVzKDMyKQorCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAg
ICByYW5kb209c2VydmVyX3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFx
dWUoYnVmLCAxKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwK
KyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAorICAgICAg
ICApCisKKyAgICAgICAgIyBleHRlbnNpb25zCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigp
IC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigp
CisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJ
T05TOgorICAgICAgICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlw
ZS5LRVlfU0hBUkU6CisgICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlf
c2hhcmUoYnVmKQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLlBSRV9TSEFSRURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5
ID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
aGVsbG8ub3RoZXJfZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRl
bnNpb25fdHlwZSwgYnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisg
ICAgcmV0dXJuIGhlbGxvCisKKworZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBo
ZWxsbzogU2VydmVySGVsbG8pIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtl
VHlwZS5TRVJWRVJfSEVMTE8pCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihUTFNfVkVSU0lPTl8xXzIpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGhlbGxvLnJhbmRvbSkKKworICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Np
b25faWQpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5jaXBoZXJfc3VpdGUpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQ4KGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCkKKworICAgICAgICAj
IGV4dGVuc2lvbnMKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAg
ICBpZiBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lP
TlMpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uc3VwcG9ydGVk
X3ZlcnNpb24pCisKKyAgICAgICAgICAgIGlmIGhlbGxvLmtleV9zaGFyZSBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5L
RVlfU0hBUkUpOgorICAgICAgICAgICAgICAgICAgICBwdXNoX2tleV9zaGFyZShidWYsIGhlbGxv
LmtleV9zaGFyZSkKKworICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lv
blR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50
MTYoaGVsbG8ucHJlX3NoYXJlZF9rZXkpCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlw
ZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAg
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xh
c3MKK2NsYXNzIE5ld1Nlc3Npb25UaWNrZXQ6CisgICAgdGlja2V0X2xpZmV0aW1lOiBpbnQgPSAw
CisgICAgdGlja2V0X2FnZV9hZGQ6IGludCA9IDAKKyAgICB0aWNrZXRfbm9uY2U6IGJ5dGVzID0g
YiIiCisgICAgdGlja2V0OiBieXRlcyA9IGIiIgorCisgICAgIyBleHRlbnNpb25zCisgICAgbWF4
X2Vhcmx5X2RhdGFfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNp
b25zOiBMaXN0W1R1cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0
KQorCisKK2RlZiBwdWxsX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlcikgLT4gTmV3U2Vz
c2lvblRpY2tldDoKKyAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KCkK
KworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJ
T05fVElDS0VUCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIG5ld19zZXNz
aW9uX3RpY2tldC50aWNrZXRfbGlmZXRpbWUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQgPSBidWYucHVsbF91aW50MzIoKQorICAg
ICAgICBuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlID0gcHVsbF9vcGFxdWUoYnVmLCAx
KQorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0ID0gcHVsbF9vcGFxdWUoYnVmLCAy
KQorCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBl
eHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25f
bGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBl
ID09IEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lv
bl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5vdGhlcl9leHRl
bnNpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYu
cHVsbF9ieXRlcyhleHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gbmV3X3Nl
c3Npb25fdGlja2V0CisKKworZGVmIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZjogQnVmZmVy
LCBuZXdfc2Vzc2lvbl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgYnVm
LnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQpCisgICAgd2l0aCBw
dXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90
aWNrZXQudGlja2V0X2xpZmV0aW1lKQorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldF9hZ2VfYWRkKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIG5l
d19zZXNzaW9uX3RpY2tldC50aWNrZXRfbm9uY2UpCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1Ziwg
MiwgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCkKKworICAgICAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAyKToKKyAgICAgICAgICAgIGlmIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0
YV9zaXplIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24o
YnVmLCBFeHRlbnNpb25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBidWYu
cHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUpCisKKyAg
ICAgICAgICAgIGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIG5ld19zZXNz
aW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9l
eHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5w
dXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBFbmNyeXB0
ZWRFeHRlbnNpb25zOgorICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisg
ICAgZWFybHlfZGF0YTogYm9vbCA9IEZhbHNlCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0
W1R1cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2Rl
ZiBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVmZmVyKSAtPiBFbmNyeXB0ZWRFeHRl
bnNpb25zOgorICAgIGV4dGVuc2lvbnMgPSBFbmNyeXB0ZWRFeHRlbnNpb25zKCkKKworICAgIGFz
c2VydCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lP
TlMKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAzKToKKworICAgICAgICBkZWYgcHVsbF9leHRl
bnNpb24oKSAtPiBOb25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91
aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigp
CisgICAgICAgICAgICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFMUE46Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sID0gcHVsbF9saXN0KAorICAg
ICAgICAgICAgICAgICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYp
CisgICAgICAgICAgICAgICAgKVswXQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9
PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
YXJseV9kYXRhID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRl
bnNpb25zLm90aGVyX2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0
ZW5zaW9uX3R5cGUsIGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKwor
ICAgIHJldHVybiBleHRlbnNpb25zCisKKworZGVmIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMo
YnVmOiBCdWZmZXIsIGV4dGVuc2lvbnM6IEVuY3J5cHRlZEV4dGVuc2lvbnMpIC0+IE5vbmU6Cisg
ICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5FTkNSWVBURURfRVhURU5TSU9OUykKKyAg
ICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Mik6CisgICAgICAgICAgICBpZiBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUu
QUxQTik6CisgICAgICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJ0aWFsKHB1c2hfYWxwbl9wcm90b2NvbCwgYnVmKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFtleHRlbnNpb25zLmFscG5fcHJvdG9jb2xdLAorICAgICAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbnMuZWFybHlfZGF0YToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToK
KyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5
cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBleHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAg
ICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0Nl
cnRpZmljYXRlRW50cnkgPSBUdXBsZVtieXRlcywgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xh
c3MgQ2VydGlmaWNhdGU6CisgICAgcmVxdWVzdF9jb250ZXh0OiBieXRlcyA9IGIiIgorICAgIGNl
cnRpZmljYXRlczogTGlzdFtDZXJ0aWZpY2F0ZUVudHJ5XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9y
eT1saXN0KQorCisKK2RlZiBwdWxsX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZp
Y2F0ZToKKyAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKCkKKworICAgIGFzc2VydCBidWYu
cHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUKKyAgICB3aXRoIHB1bGxf
YmxvY2soYnVmLCAzKToKKyAgICAgICAgY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0ID0gcHVs
bF9vcGFxdWUoYnVmLCAxKQorCisgICAgICAgIGRlZiBwdWxsX2NlcnRpZmljYXRlX2VudHJ5KGJ1
ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZUVudHJ5OgorICAgICAgICAgICAgZGF0YSA9IHB1bGxf
b3BhcXVlKGJ1ZiwgMykKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX29wYXF1ZShidWYs
IDIpCisgICAgICAgICAgICByZXR1cm4gKGRhdGEsIGV4dGVuc2lvbnMpCisKKyAgICAgICAgY2Vy
dGlmaWNhdGUuY2VydGlmaWNhdGVzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBw
YXJ0aWFsKHB1bGxfY2VydGlmaWNhdGVfZW50cnksIGJ1ZikKKyAgICAgICAgKQorCisgICAgcmV0
dXJuIGNlcnRpZmljYXRlCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGUoYnVmOiBCdWZmZXIsIGNl
cnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5k
c2hha2VUeXBlLkNFUlRJRklDQVRFKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAg
ICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCkKKwor
ICAgICAgICBkZWYgcHVzaF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZlciwgZW50cnk6IENl
cnRpZmljYXRlRW50cnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDMs
IGVudHJ5WzBdKQorICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVsxXSkKKwor
ICAgICAgICBwdXNoX2xpc3QoCisgICAgICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVzaF9jZXJ0
aWZpY2F0ZV9lbnRyeSwgYnVmKSwgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzCisgICAgICAgICkK
KworCitAZGF0YWNsYXNzCitjbGFzcyBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhbGdvcml0aG06
IGludAorICAgIHNpZ25hdHVyZTogYnl0ZXMKKworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJp
ZnkoYnVmOiBCdWZmZXIpIC0+IENlcnRpZmljYXRlVmVyaWZ5OgorICAgIGFzc2VydCBidWYucHVs
bF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZCisgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFsZ29yaXRobSA9IGJ1Zi5wdWxsX3VpbnQxNigp
CisgICAgICAgIHNpZ25hdHVyZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAgIHJldHVybiBD
ZXJ0aWZpY2F0ZVZlcmlmeShhbGdvcml0aG09YWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0dXJl
KQorCisKK2RlZiBwdXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlciwgdmVyaWZ5OiBD
ZXJ0aWZpY2F0ZVZlcmlmeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VU
eXBlLkNFUlRJRklDQVRFX1ZFUklGWSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAg
ICAgICAgYnVmLnB1c2hfdWludDE2KHZlcmlmeS5hbGdvcml0aG0pCisgICAgICAgIHB1c2hfb3Bh
cXVlKGJ1ZiwgMiwgdmVyaWZ5LnNpZ25hdHVyZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBGaW5p
c2hlZDoKKyAgICB2ZXJpZnlfZGF0YTogYnl0ZXMgPSBiIiIKKworCitkZWYgcHVsbF9maW5pc2hl
ZChidWY6IEJ1ZmZlcikgLT4gRmluaXNoZWQ6CisgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgpCisK
KyAgICBhc3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkZJTklTSEVECisg
ICAgZmluaXNoZWQudmVyaWZ5X2RhdGEgPSBwdWxsX29wYXF1ZShidWYsIDMpCisKKyAgICByZXR1
cm4gZmluaXNoZWQKKworCitkZWYgcHVzaF9maW5pc2hlZChidWY6IEJ1ZmZlciwgZmluaXNoZWQ6
IEZpbmlzaGVkKSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRklO
SVNIRUQpCisgICAgcHVzaF9vcGFxdWUoYnVmLCAzLCBmaW5pc2hlZC52ZXJpZnlfZGF0YSkKKwor
CisjIENPTlRFWFQKKworCitjbGFzcyBLZXlTY2hlZHVsZToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY2lwaGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSk6CisgICAgICAgIHNlbGYuYWxnb3JpdGhtID0g
Y2lwaGVyX3N1aXRlX2hhc2goY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0
ZSA9IGNpcGhlcl9zdWl0ZQorICAgICAgICBzZWxmLmdlbmVyYXRpb24gPSAwCisgICAgICAgIHNl
bGYuaGFzaCA9IGhhc2hlcy5IYXNoKHNlbGYuYWxnb3JpdGhtLCBkZWZhdWx0X2JhY2tlbmQoKSkK
KyAgICAgICAgc2VsZi5oYXNoX2VtcHR5X3ZhbHVlID0gc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6
ZSgpCisgICAgICAgIHNlbGYuc2VjcmV0ID0gYnl0ZXMoc2VsZi5hbGdvcml0aG0uZGlnZXN0X3Np
emUpCisKKyAgICBkZWYgY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZiwgY29udGV4dF9zdHJp
bmc6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJuIGIiICIgKiA2NCArIGNvbnRleHRf
c3RyaW5nICsgYiJceDAwIiArIHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorCisgICAgZGVm
IGZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYsIHNlY3JldDogYnl0ZXMpIC0+IGJ5dGVzOgorICAg
ICAgICBobWFjX2tleSA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGht
PXNlbGYuYWxnb3JpdGhtLAorICAgICAgICAgICAgc2VjcmV0PXNlY3JldCwKKyAgICAgICAgICAg
IGxhYmVsPWIiZmluaXNoZWQiLAorICAgICAgICAgICAgaGFzaF92YWx1ZT1iIiIsCisgICAgICAg
ICAgICBsZW5ndGg9c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAg
ICAgICBoID0gaG1hYy5ITUFDKGhtYWNfa2V5LCBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sIGJh
Y2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCkpCisgICAgICAgIGgudXBkYXRlKHNlbGYuaGFzaC5jb3B5
KCkuZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisgICAgZGVmIGRl
cml2ZV9zZWNyZXQoc2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJu
IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGht
LAorICAgICAgICAgICAgc2VjcmV0PXNlbGYuc2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9bGFi
ZWwsCisgICAgICAgICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKSwK
KyAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAg
KQorCisgICAgZGVmIGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10g
PSBOb25lKSAtPiBOb25lOgorICAgICAgICBpZiBrZXlfbWF0ZXJpYWwgaXMgTm9uZToKKyAgICAg
ICAgICAgIGtleV9tYXRlcmlhbCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQor
CisgICAgICAgIGlmIHNlbGYuZ2VuZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc2VjcmV0ID0g
aGtkZl9leHBhbmRfbGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLAorICAgICAgICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgICAg
ICBsYWJlbD1iImRlcml2ZWQiLAorICAgICAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNo
X2VtcHR5X3ZhbHVlLAorICAgICAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdl
c3Rfc2l6ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdlbmVyYXRpb24gKz0gMQor
ICAgICAgICBzZWxmLnNlY3JldCA9IGhrZGZfZXh0cmFjdCgKKyAgICAgICAgICAgIGFsZ29yaXRo
bT1zZWxmLmFsZ29yaXRobSwgc2FsdD1zZWxmLnNlY3JldCwga2V5X21hdGVyaWFsPWtleV9tYXRl
cmlhbAorICAgICAgICApCisKKyAgICBkZWYgdXBkYXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuaGFzaC51cGRhdGUoZGF0YSkKKworCitjbGFzcyBLZXlT
Y2hlZHVsZVByb3h5OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGVzOiBMaXN0
W0NpcGhlclN1aXRlXSk6CisgICAgICAgIHNlbGYuX19zY2hlZHVsZXMgPSBkaWN0KG1hcChsYW1i
ZGEgYzogKGMsIEtleVNjaGVkdWxlKGMpKSwgY2lwaGVyX3N1aXRlcykpCisKKyAgICBkZWYgZXh0
cmFjdChzZWxmLCBrZXlfbWF0ZXJpYWw6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6
CisgICAgICAgIGZvciBrIGluIHNlbGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAg
ICBrLmV4dHJhY3Qoa2V5X21hdGVyaWFsKQorCisgICAgZGVmIHNlbGVjdChzZWxmLCBjaXBoZXJf
c3VpdGU6IENpcGhlclN1aXRlKSAtPiBLZXlTY2hlZHVsZToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X19zY2hlZHVsZXNbY2lwaGVyX3N1aXRlXQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRh
dGE6IGJ5dGVzKSAtPiBOb25lOgorICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZh
bHVlcygpOgorICAgICAgICAgICAgay51cGRhdGVfaGFzaChkYXRhKQorCisKK0NJUEhFUl9TVUlU
RVMgPSB7CisgICAgQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiBoYXNoZXMuU0hBMjU2
LAorICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogaGFzaGVzLlNIQTM4NCwKKyAg
ICBDaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IGhhc2hlcy5TSEEyNTYsCit9
CisKK1NJR05BVFVSRV9BTEdPUklUSE1TOiBEaWN0ID0geworICAgIFNpZ25hdHVyZUFsZ29yaXRo
bS5FQ0RTQV9TRUNQMjU2UjFfU0hBMjU2OiAoTm9uZSwgaGFzaGVzLlNIQTI1NiksCisgICAgU2ln
bmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AzODRSMV9TSEEzODQ6IChOb25lLCBoYXNoZXMuU0hB
Mzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMjogKE5v
bmUsIGhhc2hlcy5TSEE1MTIpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hB
MTogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEExKSwKKyAgICBTaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTI1NjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEEyNTYpLAor
ICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0OiAocGFkZGluZy5QS0NTMXYx
NSwgaGFzaGVzLlNIQTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1
MTI6IChwYWRkaW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBMjU2KSwK
KyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NDogKHBhZGRpbmcuUFNT
LCBoYXNoZXMuU0hBMzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NI
QTUxMjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBNTEyKSwKK30KKworR1JPVVBfVE9fQ1VSVkU6
IERpY3QgPSB7CisgICAgR3JvdXAuU0VDUDI1NlIxOiBlYy5TRUNQMjU2UjEsCisgICAgR3JvdXAu
U0VDUDM4NFIxOiBlYy5TRUNQMzg0UjEsCisgICAgR3JvdXAuU0VDUDUyMVIxOiBlYy5TRUNQNTIx
UjEsCit9CitDVVJWRV9UT19HUk9VUCA9IGRpY3QoKHYsIGspIGZvciBrLCB2IGluIEdST1VQX1RP
X0NVUlZFLml0ZW1zKCkpCisKKworZGVmIGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZTog
Q2lwaGVyU3VpdGUpIC0+IGhhc2hlcy5IYXNoQWxnb3JpdGhtOgorICAgIHJldHVybiBDSVBIRVJf
U1VJVEVTW2NpcGhlcl9zdWl0ZV0oKQorCisKK2RlZiBkZWNvZGVfcHVibGljX2tleSgKKyAgICBr
ZXlfc2hhcmU6IEtleVNoYXJlRW50cnksCispIC0+IFVuaW9uW2VjLkVsbGlwdGljQ3VydmVQdWJs
aWNLZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleSwgTm9uZV06
CisgICAgaWYga2V5X3NoYXJlWzBdID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgcmV0dXJuIHgy
NTUxOS5YMjU1MTlQdWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAg
IGVsaWYga2V5X3NoYXJlWzBdID09IEdyb3VwLlg0NDg6CisgICAgICAgIHJldHVybiB4NDQ4Llg0
NDhQdWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5
X3NoYXJlWzBdIGluIEdST1VQX1RPX0NVUlZFOgorICAgICAgICByZXR1cm4gZWMuRWxsaXB0aWND
dXJ2ZVB1YmxpY0tleS5mcm9tX2VuY29kZWRfcG9pbnQoCisgICAgICAgICAgICBHUk9VUF9UT19D
VVJWRVtrZXlfc2hhcmVbMF1dKCksIGtleV9zaGFyZVsxXQorICAgICAgICApCisgICAgZWxzZToK
KyAgICAgICAgcmV0dXJuIE5vbmUKKworCitkZWYgZW5jb2RlX3B1YmxpY19rZXkoCisgICAgcHVi
bGljX2tleTogVW5pb25bCisgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUx
OS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgIF0KKykgLT4gS2V5U2hh
cmVFbnRyeToKKyAgICBpZiBpc2luc3RhbmNlKHB1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJs
aWNLZXkpOgorICAgICAgICByZXR1cm4gKEdyb3VwLlgyNTUxOSwgcHVibGljX2tleS5wdWJsaWNf
Ynl0ZXMoRW5jb2RpbmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkKKyAgICBlbGlmIGlzaW5zdGFu
Y2UocHVibGljX2tleSwgeDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgcmV0dXJuIChHcm91
cC5YNDQ4LCBwdWJsaWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1h
dC5SYXcpKQorICAgIHJldHVybiAoCisgICAgICAgIENVUlZFX1RPX0dST1VQW3B1YmxpY19rZXku
Y3VydmUuX19jbGFzc19fXSwKKyAgICAgICAgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2Rp
bmcuWDk2MiwgUHVibGljRm9ybWF0LlVuY29tcHJlc3NlZFBvaW50KSwKKyAgICApCisKKworZGVm
IG5lZ290aWF0ZSgKKyAgICBzdXBwb3J0ZWQ6IExpc3RbVF0sIG9mZmVyZWQ6IE9wdGlvbmFsW0xp
c3RbQW55XV0sIGV4YzogT3B0aW9uYWxbQWxlcnRdID0gTm9uZQorKSAtPiBUOgorICAgIGlmIG9m
ZmVyZWQgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBjIGluIHN1cHBvcnRlZDoKKyAgICAgICAg
ICAgIGlmIGMgaW4gb2ZmZXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYworCisgICAgaWYg
ZXhjIGlzIG5vdCBOb25lOgorICAgICAgICByYWlzZSBleGMKKyAgICByZXR1cm4gTm9uZQorCisK
K2RlZiBzaWduYXR1cmVfYWxnb3JpdGhtX3BhcmFtcygKKyAgICBzaWduYXR1cmVfYWxnb3JpdGht
OiBpbnQsCispIC0+IFVuaW9uW1R1cGxlW2VjLkVDRFNBXSwgVHVwbGVbcGFkZGluZy5Bc3ltbWV0
cmljUGFkZGluZywgaGFzaGVzLkhhc2hBbGdvcml0aG1dXToKKyAgICBwYWRkaW5nX2NscywgYWxn
b3JpdGhtX2NscyA9IFNJR05BVFVSRV9BTEdPUklUSE1TW3NpZ25hdHVyZV9hbGdvcml0aG1dCisg
ICAgYWxnb3JpdGhtID0gYWxnb3JpdGhtX2NscygpCisgICAgaWYgcGFkZGluZ19jbHMgaXMgTm9u
ZToKKyAgICAgICAgcmV0dXJuIChlYy5FQ0RTQShhbGdvcml0aG0pLCkKKyAgICBlbGlmIHBhZGRp
bmdfY2xzID09IHBhZGRpbmcuUFNTOgorICAgICAgICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xz
KAorICAgICAgICAgICAgbWdmPXBhZGRpbmcuTUdGMShhbGdvcml0aG0pLCBzYWx0X2xlbmd0aD1h
bGdvcml0aG0uZGlnZXN0X3NpemUKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHBhZGRp
bmdfb2JqID0gcGFkZGluZ19jbHMoKQorICAgIHJldHVybiBwYWRkaW5nX29iaiwgYWxnb3JpdGht
CisKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgcHVzaF9tZXNzYWdlKAorICAgIGtleV9zY2hlZHVs
ZTogVW5pb25bS2V5U2NoZWR1bGUsIEtleVNjaGVkdWxlUHJveHldLCBidWY6IEJ1ZmZlcgorKSAt
PiBHZW5lcmF0b3I6CisgICAgaGFzaF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICB5aWVsZAorICAg
IGtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYuZGF0YV9zbGljZShoYXNoX3N0YXJ0LCBidWYu
dGVsbCgpKSkKKworCisjIGNhbGxiYWNrIHR5cGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgU2Vz
c2lvblRpY2tldDoKKyAgICAiIiIKKyAgICBBIFRMUyBzZXNzaW9uIHRpY2tldCBmb3Igc2Vzc2lv
biByZXN1bXB0aW9uLgorICAgICIiIgorCisgICAgYWdlX2FkZDogaW50CisgICAgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZQorICAgIG5vdF92YWxpZF9hZnRlcjogZGF0ZXRpbWUuZGF0ZXRpbWUK
KyAgICBub3RfdmFsaWRfYmVmb3JlOiBkYXRldGltZS5kYXRldGltZQorICAgIHJlc3VtcHRpb25f
c2VjcmV0OiBieXRlcworICAgIHNlcnZlcl9uYW1lOiBzdHIKKyAgICB0aWNrZXQ6IGJ5dGVzCisK
KyAgICBtYXhfZWFybHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVy
X2V4dGVuc2lvbnM6IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0
b3J5PWxpc3QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9v
bDoKKyAgICAgICAgbm93ID0gdXRjbm93KCkKKyAgICAgICAgcmV0dXJuIG5vdyA+PSBzZWxmLm5v
dF92YWxpZF9iZWZvcmUgYW5kIG5vdyA8PSBzZWxmLm5vdF92YWxpZF9hZnRlcgorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIG9iZnVzY2F0ZWRfYWdlKHNlbGYpIC0+IGludDoKKyAgICAgICAgYWdl
ID0gaW50KCh1dGNub3coKSAtIHNlbGYubm90X3ZhbGlkX2JlZm9yZSkudG90YWxfc2Vjb25kcygp
KQorICAgICAgICByZXR1cm4gKGFnZSArIHNlbGYuYWdlX2FkZCkgJSAoMSA8PCAzMikKKworCitB
bHBuSGFuZGxlciA9IENhbGxhYmxlW1tzdHJdLCBOb25lXQorU2Vzc2lvblRpY2tldEZldGNoZXIg
PSBDYWxsYWJsZVtbYnl0ZXNdLCBPcHRpb25hbFtTZXNzaW9uVGlja2V0XV0KK1Nlc3Npb25UaWNr
ZXRIYW5kbGVyID0gQ2FsbGFibGVbW1Nlc3Npb25UaWNrZXRdLCBOb25lXQorCisKK2NsYXNzIENv
bnRleHQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGll
bnQ6IGJvb2wsCisgICAgICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0g
Tm9uZSwKKyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICAgICBj
YWZpbGU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYXBhdGg6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgICAgICBsb2dnZXI6IE9wdGlvbmFsW1VuaW9uW2xvZ2dpbmcuTG9nZ2Vy
LCBsb2dnaW5nLkxvZ2dlckFkYXB0ZXJdXSA9IE5vbmUsCisgICAgICAgIG1heF9lYXJseV9kYXRh
OiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgICAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisg
ICAgKToKKyAgICAgICAgIyBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2FscG5fcHJvdG9j
b2xzID0gYWxwbl9wcm90b2NvbHMKKyAgICAgICAgc2VsZi5fY2FkYXRhID0gY2FkYXRhCisgICAg
ICAgIHNlbGYuX2NhZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLl9jYXBhdGggPSBjYXBhdGgK
KyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBO
b25lCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0
ZV0gPSBbXQorICAgICAgICBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5OiBPcHRpb25hbFsK
KyAgICAgICAgICAgIFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJp
dmF0ZUtleSwgcnNhLlJTQVByaXZhdGVLZXldCisgICAgICAgIF0gPSBOb25lCisgICAgICAgIHNl
bGYuaGFuZHNoYWtlX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IFtdCisgICAgICAgIHNl
bGYuX21heF9lYXJseV9kYXRhID0gbWF4X2Vhcmx5X2RhdGEKKyAgICAgICAgc2VsZi5zZXNzaW9u
X3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3Nl
cnZlcl9uYW1lID0gc2VydmVyX25hbWUKKyAgICAgICAgaWYgdmVyaWZ5X21vZGUgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHZlcmlmeV9tb2RlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVE
IGlmIGlzX2NsaWVudCBlbHNlIHNzbC5DRVJUX05PTkUKKworICAgICAgICAjIGNhbGxiYWNrcwor
ICAgICAgICBzZWxmLmFscG5fY2I6IE9wdGlvbmFsW0FscG5IYW5kbGVyXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5nZXRfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRj
aGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFs
W1Nlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZp
Y19rZXlfY2I6IENhbGxhYmxlWworICAgICAgICAgICAgW0RpcmVjdGlvbiwgRXBvY2gsIENpcGhl
clN1aXRlLCBieXRlc10sIE5vbmUKKyAgICAgICAgXSA9IGxhbWJkYSBkLCBlLCBjLCBzOiBOb25l
CisKKyAgICAgICAgIyBzdXBwb3J0ZWQgcGFyYW1ldGVycworICAgICAgICBzZWxmLl9jaXBoZXJf
c3VpdGVzID0gWworICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAor
ICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAg
Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICBdCisgICAgICAg
IHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XSA9IFtDb21wcmVzc2lvbk1ldGhv
ZC5OVUxMXQorICAgICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBMaXN0W2ludF0g
PSBbUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgIHNlbGYuX3NpZ25hdHVy
ZV9hbGdvcml0aG1zOiBMaXN0W2ludF0gPSBbCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5F
Q0RTQV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJT
QV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1Mx
X1NIQTEsCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3VwcyA9IFtHcm91
cC5TRUNQMjU2UjFdCisgICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLngyNTUxOV9zdXBwb3J0
ZWQoKToKKyAgICAgICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgy
NTUxOSkKKyAgICAgICAgaWYgZGVmYXVsdF9iYWNrZW5kKCkueDQ0OF9zdXBwb3J0ZWQoKToKKyAg
ICAgICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlg0NDgpCisgICAg
ICAgIHNlbGYuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFtUTFNfVkVSU0lPTl8xXzNdCisKKyAgICAg
ICAgIyBzdGF0ZQorICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZDogT3B0aW9uYWxbc3RyXSA9
IE5vbmUKKyAgICAgICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5rZXlfc2NoZWR1bGU6IE9wdGlvbmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAg
c2VsZi5yZWNlaXZlZF9leHRlbnNpb25zOiBPcHRpb25hbFtMaXN0W0V4dGVuc2lvbl1dID0gTm9u
ZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0g
PSBOb25lCisgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eTogT3B0aW9uYWxbS2V5U2No
ZWR1bGVQcm94eV0gPSBOb25lCisgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldDogT3B0
aW9uYWxbTmV3U2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlm
aWNhdGU6IE9wdGlvbmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAgICAgICBzZWxmLl9w
ZWVyX2NlcnRpZmljYXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10KKyAgICAg
ICAgc2VsZi5fcmVjZWl2ZV9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1
bWVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZW5jX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9u
ZQorICAgICAgICBzZWxmLl9kZWNfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAg
IHNlbGYuX19sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleTog
T3B0aW9uYWxbZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxm
Ll94MjU1MTlfcHJpdmF0ZV9rZXk6IE9wdGlvbmFsW3gyNTUxOS5YMjU1MTlQcml2YXRlS2V5XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleTogT3B0aW9uYWxbeDQ0OC5YNDQ4
UHJpdmF0ZUtleV0gPSBOb25lCisKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAgICAgICAgICAg
c2VsZi5jbGllbnRfcmFuZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNlbGYuc2Vz
c2lvbl9pZCA9IG9zLnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUu
Q0xJRU5UX0hBTkRTSEFLRV9TVEFSVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5j
bGllbnRfcmFuZG9tID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQor
ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExP
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXN1bWVkKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2Vzc2lvbiByZXN1bXB0aW9u
IHdhcyBzdWNjZXNzZnVsbHkgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxm
Ll9zZXNzaW9uX3Jlc3VtZWQKKworICAgIGRlZiBoYW5kbGVfbWVzc2FnZSgKKyAgICAgICAgc2Vs
ZiwgaW5wdXRfZGF0YTogYnl0ZXMsIG91dHB1dF9idWY6IERpY3RbRXBvY2gsIEJ1ZmZlcl0KKyAg
ICApIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0hBTkRT
SEFLRV9TVEFSVDoKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudF9zZW5kX2hlbGxvKG91dHB1dF9i
dWZbRXBvY2guSU5JVElBTF0pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9y
ZWNlaXZlX2J1ZmZlciArPSBpbnB1dF9kYXRhCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9yZWNl
aXZlX2J1ZmZlcikgPj0gNDoKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIG1lc3NhZ2UgbGVuZ3Ro
CisgICAgICAgICAgICBtZXNzYWdlX3R5cGUgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclswXQorICAg
ICAgICAgICAgbWVzc2FnZV9sZW5ndGggPSAwCisgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLl9y
ZWNlaXZlX2J1ZmZlclsxOjRdOgorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoID0gKG1l
c3NhZ2VfbGVuZ3RoIDw8IDgpIHwgYgorICAgICAgICAgICAgbWVzc2FnZV9sZW5ndGggKz0gNAor
CisgICAgICAgICAgICAjIGNoZWNrIG1lc3NhZ2UgaXMgY29tcGxldGUKKyAgICAgICAgICAgIGlm
IGxlbihzZWxmLl9yZWNlaXZlX2J1ZmZlcikgPCBtZXNzYWdlX2xlbmd0aDoKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfYnVmZmVyWzpt
ZXNzYWdlX2xlbmd0aF0KKyAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyID0gc2VsZi5f
cmVjZWl2ZV9idWZmZXJbbWVzc2FnZV9sZW5ndGg6XQorCisgICAgICAgICAgICBpbnB1dF9idWYg
PSBCdWZmZXIoZGF0YT1tZXNzYWdlKQorCisgICAgICAgICAgICAjIGNsaWVudCBzdGF0ZXMKKwor
ICAgICAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9I
RUxMTzoKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5T
RVJWRVJfSEVMTE86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfaGVs
bG8oaW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdKQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZ
UFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5k
c2hha2VUeXBlLkVOQ1JZUFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jbGllbnRfaGFuZGxlX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRN
ZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVD
VF9DRVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgIGlm
IG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFOgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgY2Vy
dGlmaWNhdGUgcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0
ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VY
UEVDVF9DRVJUSUZJQ0FURV9WRVJJRlk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBl
ID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1dF9idWYpCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVj
dGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9F
WFBFQ1RfRklOSVNIRUQ6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRz
aGFrZVR5cGUuRklOSVNIRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5k
bGVfZmluaXNoZWQoaW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFLRV0pCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVj
dGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNo
YWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Ns
aWVudF9oYW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdl
CisKKyAgICAgICAgICAgICMgc2VydmVyIHN0YXRlcworCisgICAgICAgICAgICBlbGlmIHNlbGYu
c3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE86CisgICAgICAgICAgICAg
ICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPOgorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICAgICAgICAg
ICAgICAgICAgaW5wdXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZltF
cG9jaC5JTklUSUFMXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2gu
SEFORFNIQUtFXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guT05F
X1JUVF0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAg
ICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAg
ICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYs
IG91dHB1dF9idWZbRXBvY2guT05FX1JUVF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAg
ZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRToKKyAgICAgICAg
ICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAgICAgIGFzc2Vy
dCBpbnB1dF9idWYuZW9mKCkKKworICAgIGRlZiBfYnVpbGRfc2Vzc2lvbl90aWNrZXQoCisgICAg
ICAgIHNlbGYsIG5ld19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldAorICAgICkgLT4g
U2Vzc2lvblRpY2tldDoKKyAgICAgICAgcmVzdW1wdGlvbl9tYXN0ZXJfc2VjcmV0ID0gc2VsZi5r
ZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJlcyBtYXN0ZXIiKQorICAgICAgICByZXN1bXB0
aW9uX3NlY3JldCA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNl
bGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1yZXN1bXB0aW9u
X21hc3Rlcl9zZWNyZXQsCisgICAgICAgICAgICBsYWJlbD1iInJlc3VtcHRpb24iLAorICAgICAg
ICAgICAgaGFzaF92YWx1ZT1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlLAorICAgICAg
ICAgICAgbGVuZ3RoPXNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAg
ICAgICAgKQorCisgICAgICAgIHRpbWVzdGFtcCA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBT
ZXNzaW9uVGlja2V0KAorICAgICAgICAgICAgYWdlX2FkZD1uZXdfc2Vzc2lvbl90aWNrZXQudGlj
a2V0X2FnZV9hZGQsCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5rZXlfc2NoZWR1bGUu
Y2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1uZXdfc2Vzc2lv
bl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgIG5vdF92YWxpZF9hZnRl
cj10aW1lc3RhbXAKKyAgICAgICAgICAgICsgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bmV3
X3Nlc3Npb25fdGlja2V0LnRpY2tldF9saWZldGltZSksCisgICAgICAgICAgICBub3RfdmFsaWRf
YmVmb3JlPXRpbWVzdGFtcCwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5k
c2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0PXJlc3VtcHRp
b25fc2VjcmV0LAorICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisg
ICAgICAgICAgICB0aWNrZXQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCwKKyAgICAgICAgKQor
CisgICAgZGVmIF9jbGllbnRfc2VuZF9oZWxsbyhzZWxmLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+
IE5vbmU6CisgICAgICAgIGtleV9zaGFyZTogTGlzdFtLZXlTaGFyZUVudHJ5XSA9IFtdCisgICAg
ICAgIHN1cHBvcnRlZF9ncm91cHM6IExpc3RbaW50XSA9IFtdCisKKyAgICAgICAgZm9yIGdyb3Vw
IGluIHNlbGYuX3N1cHBvcnRlZF9ncm91cHM6CisgICAgICAgICAgICBpZiBncm91cCA9PSBHcm91
cC5TRUNQMjU2UjE6CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgPSBlYy5n
ZW5lcmF0ZV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVb
R3JvdXAuU0VDUDI1NlIxXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJsaWNfa2V5KHNlbGYu
X2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVk
X2dyb3Vwcy5hcHBlbmQoR3JvdXAuU0VDUDI1NlIxKQorICAgICAgICAgICAgZWxpZiBncm91cCA9
PSBHcm91cC5YMjU1MTk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5
ID0geDI1NTE5LlgyNTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIGtl
eV9zaGFyZS5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIGVuY29kZV9wdWJsaWNfa2V5KHNl
bGYuX3gyNTUxOV9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAg
ICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAuWDQ0ODoKKyAgICAgICAgICAgICAgICBzZWxm
Ll94NDQ4X3ByaXZhdGVfa2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAg
ICAgICAgICAgICAga2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl94NDQ4
X3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dy
b3Vwcy5hcHBlbmQoR3JvdXAuWDQ0OCkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAu
R1JFQVNFOgorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoKEdyb3VwLkdSRUFTRSwg
YiJceDAwIikpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3JvdXAu
R1JFQVNFKQorCisgICAgICAgIGFzc2VydCBsZW4oa2V5X3NoYXJlKSwgIm5vIGtleSBzaGFyZSBl
bnRyaWVzIgorCisgICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5k
b209c2VsZi5jbGllbnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNlc3Np
b25faWQsCisgICAgICAgICAgICBjaXBoZXJfc3VpdGVzPVtpbnQoeCkgZm9yIHggaW4gc2VsZi5f
Y2lwaGVyX3N1aXRlc10sCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXNlbGYuX2Nv
bXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBu
X3Byb3RvY29scywKKyAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCisgICAgICAgICAg
ICBwc2tfa2V5X2V4Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAg
ICAgICAgICAgIGlmIChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlj
a2V0X2NiIGlzIG5vdCBOb25lKQorICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAg
c2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICBzaWduYXR1cmVfYWxn
b3JpdGhtcz1zZWxmLl9zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIHN1cHBvcnRl
ZF9ncm91cHM9c3VwcG9ydGVkX2dyb3VwcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9u
cz1zZWxmLl9zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25z
PXNlbGYuaGFuZHNoYWtlX2V4dGVuc2lvbnMsCisgICAgICAgICkKKworICAgICAgICAjIFBTSwor
ICAgICAgICBpZiBzZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0Lmlz
X3ZhbGlkOgorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxl
KHNlbGYuc2Vzc2lvbl90aWNrZXQuY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5fa2V5
X3NjaGVkdWxlX3Bzay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNy
ZXQpCisgICAgICAgICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJp
dmVfc2VjcmV0KGIicmVzIGJpbmRlciIpCisgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2Vs
Zi5fa2V5X3NjaGVkdWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAg
IyB1cGRhdGUgaGVsbG8KKyAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vh
cmx5X2RhdGFfc2l6ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9k
YXRhID0gVHJ1ZQorICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNr
cygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKHNl
bGYuc2Vzc2lvbl90aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRf
YWdlKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMo
YmluZGVyX2xlbmd0aCldLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlcmlhbGl6
ZSBoZWxsbyB3aXRob3V0IGJpbmRlcgorICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT0xMDI0KQorICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8p
CisKKyAgICAgICAgICAgICMgY2FsY3VsYXRlIGJpbmRlcgorICAgICAgICAgICAgaGFzaF9vZmZz
ZXQgPSB0bXBfYnVmLnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICBzZWxm
Ll9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNo
X29mZnNldCkpCisgICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZp
bmlzaGVkX3ZlcmlmeV9kYXRhKGJpbmRlcl9rZXkpCisgICAgICAgICAgICBoZWxsby5wcmVfc2hh
cmVkX2tleS5iaW5kZXJzWzBdID0gYmluZGVyCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKAorICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZSho
YXNoX29mZnNldCwgaGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgaWYgaGVs
bG8uZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2No
ZWR1bGVfcHNrLmRlcml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAg
c2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgIERpcmVjdGlv
bi5FTkNSWVBULAorICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCisgICAgICAg
ICAgICAgICAgICAgIGVhcmx5X2tleSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2Vs
Zi5fa2V5X3NjaGVkdWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3Vp
dGVzKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQorCisg
ICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0
X2J1Zik6CisgICAgICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykK
KworICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVM
TE8pCisKKyAgICBkZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZm
ZXIsIG91dHB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1
bGxfc2VydmVyX2hlbGxvKGlucHV0X2J1ZikKKworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdv
dGlhdGUoCisgICAgICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgW3Bl
ZXJfaGVsbG8uY2lwaGVyX3N1aXRlXSwKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVy
ZSgiVW5zdXBwb3J0ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0
IHBlZXJfaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2NvbXByZXNzaW9uX21ldGhv
ZHMKKyAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaW4gc2VsZi5f
c3VwcG9ydGVkX3ZlcnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAg
ICAgIGlmIHBlZXJfaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayBpcyBOb25lCisg
ICAgICAgICAgICAgICAgb3IgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSAhPSAwCisgICAgICAg
ICAgICAgICAgb3IgY2lwaGVyX3N1aXRlICE9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVy
X3N1aXRlCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SWxsZWdh
bFBhcmFtZXRlcgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2No
ZWR1bGVfcHNrCisgICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IHNlbGYuX2tleV9zY2hl
ZHVsZV9wcm94eS5zZWxlY3QoY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrID0gTm9uZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBOb25lCisK
KyAgICAgICAgIyBwZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwZWVyX3B1YmxpY19rZXkg
PSBkZWNvZGVfcHVibGljX2tleShwZWVyX2hlbGxvLmtleV9zaGFyZSkKKyAgICAgICAgc2hhcmVk
X2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBp
c2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSkKKyAgICAg
ICAgICAgIGFuZCBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAg
KToKKyAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhj
aGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5z
dGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpCisgICAgICAgICAgICBh
bmQgc2VsZi5feDQ0OF9wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICApOgorICAgICAg
ICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9w
dWJsaWNfa2V5LCBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNl
bGYuX2VjX3ByaXZhdGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fZWNf
cHJpdmF0ZV9rZXkucHVibGljX2tleSgpLmN1cnZlLl9fY2xhc3NfXworICAgICAgICAgICAgPT0g
cGVlcl9wdWJsaWNfa2V5LmN1cnZlLl9fY2xhc3NfXworICAgICAgICApOgorICAgICAgICAgICAg
c2hhcmVkX2tleSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVl
cl9wdWJsaWNfa2V5KQorICAgICAgICBhc3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisg
ICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAgICAgICAgc2Vs
Zi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZ
UFQsIEVwb2NoLkhBTkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkKKworICAgICAg
ICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9O
UykKKworICAgIGRlZiBfY2xpZW50X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmLCBp
bnB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZW5jcnlwdGVkX2V4dGVuc2lvbnMg
PSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLmFs
cG5fbmVnb3RpYXRlZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmFscG5fcHJvdG9jb2wKKyAgICAg
ICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuZWFybHlf
ZGF0YQorICAgICAgICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBlbmNyeXB0ZWRfZXh0ZW5z
aW9ucy5vdGhlcl9leHRlbnNpb25zCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAg
ICAgIHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLl9z
ZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwg
RXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIGlm
IHRoZSBzZXJ2ZXIgYWNjZXB0ZWQgb3VyIFBTSyB3ZSBhcmUgZG9uZSwgb3RoZXIgd2Ugd2FudCBp
dHMgY2VydGlmaWNhdGUKKyAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkOgorICAgICAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVD
VF9DRVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFKQorCisgICAgZGVmIF9jbGllbnRf
aGFuZGxlX2NlcnRpZmljYXRlKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSA9IHB1bGxfY2VydGlmaWNhdGUoaW5wdXRfYnVmKQorCisgICAgICAg
IHNlbGYuX3BlZXJfY2VydGlmaWNhdGUgPSB4NTA5LmxvYWRfZGVyX3g1MDlfY2VydGlmaWNhdGUo
CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbMF1bMF0sIGJhY2tlbmQ9ZGVm
YXVsdF9iYWNrZW5kKCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRl
X2NoYWluID0gWworICAgICAgICAgICAgeDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAor
ICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1tpXVswXSwgYmFja2VuZD1k
ZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFu
Z2UoMSwgbGVuKGNlcnRpZmljYXRlLmNlcnRpZmljYXRlcykpCisgICAgICAgIF0KKworICAgICAg
ICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAg
ICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkp
CisKKyAgICBkZWYgX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYsIGlucHV0
X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRl
X3ZlcmlmeShpbnB1dF9idWYpCisKKyAgICAgICAgYXNzZXJ0IHZlcmlmeS5hbGdvcml0aG0gaW4g
c2VsZi5fc2lnbmF0dXJlX2FsZ29yaXRobXMKKworICAgICAgICAjIGNoZWNrIHNpZ25hdHVyZQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlLnB1YmxpY19r
ZXkoKS52ZXJpZnkoCisgICAgICAgICAgICAgICAgdmVyaWZ5LnNpZ25hdHVyZSwKKyAgICAgICAg
ICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAg
ICAgICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJh
bXModmVyaWZ5LmFsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBJbnZh
bGlkU2lnbmF0dXJlOgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAg
ICAgICAjIGNoZWNrIGNlcnRpZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3ZlcmlmeV9tb2RlICE9
IHNzbC5DRVJUX05PTkU6CisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FkYXRhPXNlbGYuX2NhZGF0YSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9c2Vs
Zi5fY2FmaWxlLAorICAgICAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jYXBhdGgsCisgICAgICAg
ICAgICAgICAgY2VydGlmaWNhdGU9c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAg
ICAgICBjaGFpbj1zZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluLAorICAgICAgICAgICAgICAg
IHNlcnZlcl9uYW1lPXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorCisgICAgICAg
IHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAg
IHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVm
IF9jbGllbnRfaGFuZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRf
YnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChp
bnB1dF9idWYpCisKKyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBleHBlY3Rl
ZF92ZXJpZnlfZGF0YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNl
bGYuX2RlY19rZXkpCisgICAgICAgIGlmIGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IGV4cGVjdGVk
X3ZlcmlmeV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKyAgICAg
ICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAg
ICAgIyBwcmVwYXJlIHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1
bGUuZ2VuZXJhdGlvbiA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9u
ZSkKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAg
RGlyZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAg
ICApCisgICAgICAgIG5leHRfZW5jX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNy
ZXQoYiJjIGFwIHRyYWZmaWMiKQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3
aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgb3V0cHV0X2J1Zik6CisgICAgICAg
ICAgICBwdXNoX2ZpbmlzaGVkKAorICAgICAgICAgICAgICAgIG91dHB1dF9idWYsCisgICAgICAg
ICAgICAgICAgRmluaXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYu
a2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNvbW1pdCB0cmFmZmljIGtl
eQorICAgICAgICBzZWxmLl9lbmNfa2V5ID0gbmV4dF9lbmNfa2V5CisgICAgICAgIHNlbGYudXBk
YXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAg
ICAgICAgICBFcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lw
aGVyX3N1aXRlLAorICAgICAgICAgICAgc2VsZi5fZW5jX2tleSwKKyAgICAgICAgKQorCisgICAg
ICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYsIGlucHV0X2J1ZjogQnVm
ZmVyKSAtPiBOb25lOgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNz
aW9uX3RpY2tldChpbnB1dF9idWYpCisKKyAgICAgICAgIyBub3RpZnkgYXBwbGljYXRpb24KKyAg
ICAgICAgaWYgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICB0aWNrZXQgPSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChuZXdfc2Vzc2lvbl90aWNr
ZXQpCisgICAgICAgICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAg
ICBkZWYgX3NlcnZlcl9oYW5kbGVfaGVsbG8oCisgICAgICAgIHNlbGYsCisgICAgICAgIGlucHV0
X2J1ZjogQnVmZmVyLAorICAgICAgICBpbml0aWFsX2J1ZjogQnVmZmVyLAorICAgICAgICBoYW5k
c2hha2VfYnVmOiBCdWZmZXIsCisgICAgICAgIG9uZXJ0dF9idWY6IEJ1ZmZlciwKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHBlZXJfaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhpbnB1dF9idWYp
CisKKyAgICAgICAgIyBkZXRlcm1pbmUgYXBwbGljYWJsZSBzaWduYXR1cmUgYWxnb3JpdGhtcwor
ICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtczogTGlzdFtTaWduYXR1cmVBbGdvcml0aG1dID0g
W10KKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LCBy
c2EuUlNBUHJpdmF0ZUtleSk6CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFsK
KyAgICAgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwK
KyAgICAgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAg
ICAgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY2VydGlm
aWNhdGVfcHJpdmF0ZV9rZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5CisgICAgICAgICkg
YW5kIGlzaW5zdGFuY2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleS5jdXJ2ZSwgZWMuU0VD
UDI1NlIxKToKKyAgICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zID0gW1NpZ25hdHVyZUFs
Z29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hBMjU2XQorCisgICAgICAgICMgbmVnb3RpYXRlIHBh
cmFtZXRlcnMKKyAgICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAg
c2VsZi5fY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY2lwaGVyX3N1aXRl
cywKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNpcGhl
ciBzdWl0ZSIpLAorICAgICAgICApCisgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZCA9IG5lZ290
aWF0ZSgKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAg
ICBwZWVyX2hlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBBbGVydEhhbmRz
aGFrZUZhaWx1cmUoIk5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwKKyAgICAgICAg
KQorICAgICAgICBwc2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCisgICAgICAgICAg
ICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19rZXlfZXhjaGFu
Z2VfbW9kZXMKKyAgICAgICAgKQorICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtID0gbmVnb3Rp
YXRlKAorICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBwZWVy
X2hlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VG
YWlsdXJlKCJObyBzdXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAorICAgICAgICApCisg
ICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5f
c3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBwb3J0ZWRfdmVy
c2lvbnMsCisgICAgICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3VwcG9ydGVkIHBy
b3RvY29sIHZlcnNpb24iKSwKKyAgICAgICAgKQorCisgICAgICAgICMgbmVnb3RpYXRlIEFMUE4K
KyAgICAgICAgaWYgc2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBzZWxmLmFscG5fbmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgICAgICBzZWxm
Ll9hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFscG5fcHJvdG9j
b2xzLAorICAgICAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gY29tbW9uIEFM
UE4gcHJvdG9jb2xzIiksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoK
KyAgICAgICAgICAgIHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAg
ICBzZWxmLmNsaWVudF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQorICAgICAgICBzZWxmLnNl
cnZlcl9yYW5kb20gPSBvcy51cmFuZG9tKDMyKQorICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBw
ZWVyX2hlbGxvLnNlc3Npb25faWQKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0g
cGVlcl9oZWxsby5vdGhlcl9leHRlbnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVk
dWxlCisgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAg
ICAgICBzZWxmLmdldF9zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZQorICAgICAgICAgICAg
YW5kIHBza19rZXlfZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBl
ZXJfaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4o
cGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleS5pZGVudGl0aWVzKSA9PSAxCisgICAgICAgICAgICBh
bmQgbGVuKHBlZXJfaGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVycykgPT0gMQorICAgICAgICAp
OgorICAgICAgICAgICAgIyBhc2sgYXBwbGljYXRpb24gdG8gZmluZCBzZXNzaW9uIHRpY2tldAor
ICAgICAgICAgICAgaWRlbnRpdHkgPSBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRp
ZXNbMF0KKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5nZXRfc2Vzc2lvbl90aWNr
ZXRfY2IoaWRlbnRpdHlbMF0pCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgc2Vzc2lvbiB0aWNr
ZXQKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldCBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192YWxpZAorICAg
ICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUgPT0gY2lwaGVyX3N1
aXRlCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0g
S2V5U2NoZWR1bGUoY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVk
dWxlLmV4dHJhY3Qoc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisKKyAgICAgICAg
ICAgICAgICBiaW5kZXJfa2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJl
cyBiaW5kZXIiKQorICAgICAgICAgICAgICAgIGJpbmRlcl9sZW5ndGggPSBzZWxmLmtleV9zY2hl
ZHVsZS5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0
ID0gaW5wdXRfYnVmLnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICAgICAg
YmluZGVyID0gaW5wdXRfYnVmLmRhdGFfc2xpY2UoCisgICAgICAgICAgICAgICAgICAgIGhhc2hf
b2Zmc2V0ICsgMywgaGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aAorICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlu
cHV0X2J1Zi5kYXRhX3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZF9iaW5kZXIgPSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShiaW5k
ZXJfa2V5KQorCisgICAgICAgICAgICAgICAgaWYgYmluZGVyICE9IGV4cGVjdGVkX2JpbmRlcjoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJQU0sgdmFs
aWRhdGlvbiBmYWlsZWQiKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBk
YXRlX2hhc2goCisgICAgICAgICAgICAgICAgICAgIGlucHV0X2J1Zi5kYXRhX3NsaWNlKGhhc2hf
b2Zmc2V0LCBoYXNoX29mZnNldCArIDMgKyBiaW5kZXJfbGVuZ3RoKQorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisKKyAgICAg
ICAgICAgICAgICAjIGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgICAgIGlm
IHBlZXJfaGVsbG8uZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0g
c2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gVHJ1ZQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIERpcmVjdGlvbi5ERUNSWVBULAorICAgICAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVS
T19SVFQsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJf
c3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gMAorCisgICAgICAg
ICMgaWYgUFNLIGlzIG5vdCB1c2VkLCBpbml0aWFsaXplIGtleSBzY2hlZHVsZQorICAgICAgICBp
ZiBwcmVfc2hhcmVkX2tleSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUg
PSBLZXlTY2hlZHVsZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZS5leHRyYWN0KE5vbmUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFz
aChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAg
ICAgIHB1YmxpY19rZXk6IFVuaW9uWworICAgICAgICAgICAgZWMuRWxsaXB0aWNDdXJ2ZVB1Ymxp
Y0tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5CisgICAgICAg
IF0KKyAgICAgICAgc2hhcmVkX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBm
b3Iga2V5X3NoYXJlIGluIHBlZXJfaGVsbG8ua2V5X3NoYXJlOgorICAgICAgICAgICAgcGVlcl9w
dWJsaWNfa2V5ID0gZGVjb2RlX3B1YmxpY19rZXkoa2V5X3NoYXJlKQorICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShwZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUxOS5YMjU1MTlQcml2
YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDI1
NTE5X3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkg
PSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGVlcl9wdWJs
aWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3g0NDhf
cHJpdmF0ZV9rZXkgPSB4NDQ4Llg0NDhQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAg
ICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAg
ICAgICAgICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5leGNoYW5n
ZShwZWVyX3B1YmxpY19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVs
aWYgaXNpbnN0YW5jZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkp
OgorICAgICAgICAgICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVfcHJp
dmF0ZV9rZXkoCisgICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVsw
XV0oKSwgZGVmYXVsdF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgcHVibGljX2tleSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAg
ICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5F
Q0RIKCksIHBlZXJfcHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBh
c3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisgICAgICAgICMgc2VuZCBoZWxsbworICAg
ICAgICBoZWxsbyA9IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYuc2VydmVy
X3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgY2lwaGVyX3N1aXRlPWNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9u
X21ldGhvZD1jb21wcmVzc2lvbl9tZXRob2QsCisgICAgICAgICAgICBrZXlfc2hhcmU9ZW5jb2Rl
X3B1YmxpY19rZXkocHVibGljX2tleSksCisgICAgICAgICAgICBwcmVfc2hhcmVkX2tleT1wcmVf
c2hhcmVkX2tleSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXN1cHBvcnRlZF92ZXJz
aW9uLAorICAgICAgICApCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVk
dWxlLCBpbml0aWFsX2J1Zik6CisgICAgICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhpbml0aWFs
X2J1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tl
eSkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAg
ICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAg
ICAgICBEaXJlY3Rpb24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIK
KyAgICAgICAgKQorCisgICAgICAgICMgc2VuZCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucworICAgICAg
ICB3aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6Cisg
ICAgICAgICAgICBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGhh
bmRzaGFrZV9idWYsCisgICAgICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAg
ICAgICAgICAgICAgICAgYWxwbl9wcm90b2NvbD1zZWxmLmFscG5fbmVnb3RpYXRlZCwKKyAgICAg
ICAgICAgICAgICAgICAgZWFybHlfZGF0YT1zZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQsCisgICAg
ICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9u
cywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHByZV9z
aGFyZWRfa2V5IGlzIE5vbmU6CisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUKKyAgICAg
ICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVm
KToKKyAgICAgICAgICAgICAgICBwdXNoX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAg
ICBoYW5kc2hha2VfYnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfY29udGV4dD1iIiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjZXJ0aWZpY2F0ZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB1
YmxpY19ieXRlcyhFbmNvZGluZy5ERVIpLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHggaW4gW3NlbGYuY2VydGlmaWNhdGVdICsgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbgor
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAg
ICAgICAgICAgIHNpZ25hdHVyZSA9IHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuc2lnbigK
KyAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0
YSgKKyAgICAgICAgICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJp
ZnkiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29y
aXRobV9wYXJhbXMoc2lnbmF0dXJlX2FsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICB3aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6
CisgICAgICAgICAgICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoCisgICAgICAgICAgICAg
ICAgICAgIGhhbmRzaGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlVmVy
aWZ5KAorICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNpZ25hdHVyZV9hbGdvcml0
aG0sIHNpZ25hdHVyZT1zaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9t
ZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1
c2hfZmluaXNoZWQoCisgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAg
ICAgICBGaW5pc2hlZCgKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X2RhdGE9c2VsZi5rZXlf
c2NoZWR1bGUuZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZW5jX2tleSkKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgcHJlcGFyZSB0cmFmZmljIGtleXMK
KyAgICAgICAgYXNzZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVyYXRpb24gPT0gMgorICAgICAg
ICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAgICAgIHNlbGYuX3NldHVwX3Ry
YWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5P
TkVfUlRULCBiInMgYXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9uZXh0X2Rl
Y19rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBhcCB0cmFmZmljIikK
KworICAgICAgICAjIGFudGljaXBhdGUgY2xpZW50J3MgRklOSVNIRUQgYXMgd2UgZG9uJ3QgdXNl
IGNsaWVudCBhdXRoCisgICAgICAgIHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5r
ZXlfc2NoZWR1bGUuZmluaXNoZWRfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICBzZWxmLl9kZWNf
a2V5CisgICAgICAgICkKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTY0KQorICAgICAg
ICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgRmluaXNoZWQodmVyaWZ5X2RhdGE9c2VsZi5fZXhwZWN0ZWRf
dmVyaWZ5X2RhdGEpKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYu
ZGF0YSkKKworICAgICAgICAjIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgICAgICBp
ZiBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZSBhbmQgcHNrX2tleV9leGNo
YW5nZV9tb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbmV3X3Nlc3Npb25fdGlj
a2V0ID0gTmV3U2Vzc2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9
ODY0MDAsCisgICAgICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9c3RydWN0LnVucGFjaygiSSIs
IG9zLnVyYW5kb20oNCkpWzBdLAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1iIiIsCisg
ICAgICAgICAgICAgICAgdGlja2V0PW9zLnVyYW5kb20oNjQpLAorICAgICAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhX3NpemU9c2VsZi5fbWF4X2Vhcmx5X2RhdGEsCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgc2VuZCBtZXNzc2FnZQorICAgICAgICAgICAgcHVzaF9uZXdfc2Vzc2lv
bl90aWNrZXQob25lcnR0X2J1Ziwgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorCisgICAgICAg
ICAgICAjIG5vdGlmeSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgdGlja2V0ID0gc2VsZi5fYnVp
bGRfc2Vzc2lvbl90aWNrZXQoc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICAgICAg
c2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgICAgIHNlbGYuX3NldF9z
dGF0ZShTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9zZXJ2ZXJfaGFu
ZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIp
IC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisK
KyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlf
ZGF0YSAhPSBzZWxmLl9leHBlY3RlZF92ZXJpZnlfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFs
ZXJ0RGVjcnlwdEVycm9yCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAgICAg
c2VsZi5fZGVjX2tleSA9IHNlbGYuX25leHRfZGVjX2tleQorICAgICAgICBzZWxmLl9uZXh0X2Rl
Y19rZXkgPSBOb25lCisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAg
ICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICBFcG9jaC5PTkVfUlRULAorICAg
ICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgc2Vs
Zi5fZGVjX2tleSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5T
RVJWRVJfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBkZWYgX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlv
bigKKyAgICAgICAgc2VsZiwgZGlyZWN0aW9uOiBEaXJlY3Rpb24sIGVwb2NoOiBFcG9jaCwgbGFi
ZWw6IGJ5dGVzCisgICAgKSAtPiBOb25lOgorICAgICAgICBrZXkgPSBzZWxmLmtleV9zY2hlZHVs
ZS5kZXJpdmVfc2VjcmV0KGxhYmVsKQorCisgICAgICAgIGlmIGRpcmVjdGlvbiA9PSBEaXJlY3Rp
b24uRU5DUllQVDoKKyAgICAgICAgICAgIHNlbGYuX2VuY19rZXkgPSBrZXkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYuX2RlY19rZXkgPSBrZXkKKworICAgICAgICBzZWxmLnVwZGF0
ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgIGRpcmVjdGlvbiwgZXBvY2gsIHNlbGYua2V5
X3NjaGVkdWxlLmNpcGhlcl9zdWl0ZSwga2V5CisgICAgICAgICkKKworICAgIGRlZiBfc2V0X3N0
YXRlKHNlbGYsIHN0YXRlOiBTdGF0ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fX2xvZ2dl
cjoKKyAgICAgICAgICAgIHNlbGYuX19sb2dnZXIuZGVidWcoIlRMUyAlcyAtPiAlcyIsIHNlbGYu
c3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiMGNlZTQ2NjEzNDJmZWU0ZWMw
MzFjMDYyZjkzNTc0NzBjNWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjUgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9f
YnVmZmVyLmMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5jCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19j
cnlwdG8ucHlpCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50
eXBlZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAg
KzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMg
ZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvaW5pdGlhbF9jbGllbnQuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2I3MDU1Y2RhYWNhOTVl
ZmZiOTNlNTE5ZWNlNWUzZWQ1M2NkNWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyODAKemNt
VitiMV5AY1l7e1IzUDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5sO0toPTl1PWkla0IkRSUt
RVliZ3djCnpvNm5YcC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1RT1FVzJTMGMyZWdPRVlO
UXJIUiRHI01TJk5TO1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+WnpJbyNmMVY9T3I9RHM2
MldoQUJHUWFeQlpfYm5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYwUTxUOzZRenI4e24leiln
LTA+QFd7PGRBJnAmV3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8dUshfXYycF54fk14QHxU
PzJnc3BkNnJeflpJKlo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdAKm4lfgp6WSZrWU8ycn1C
cyl8VXI8aTIjNk0mcSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVKc1lNNykyMCZ1NHo3P1IK
enM8JDtSdHYjTD1YfU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2hoUEp1VFRwbFQrKj9gdzY+
c1pqc2V0c1M3CnowYnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRmb1NaYEh5VGkjO3FYVGEr
dFJAfENSJG1PYkFZWnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1WkArI253eC1NNypmcHkj
byo3PG0rIWNsaj5IWFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCReVk07N3h+dGY1ZiRfeCoz
TiR3WGFlQ0lxR1VUflF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7SnxJXiV8PVZCT3FwbHJm
d2ZWRDc4SWBtNzxlXkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/I0FKJml6Tgp6clojU0U4
QUFIIyVKdXApN3RvRmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7Vmo/NlhFQlptKVU1PEZT
QUwKej1hbjJZJDBSQ01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFpPD1iIXhTfksleGtZTGBz
ZlBNbG58OTh5PWNqCno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJGcl5MVlFQR1RecG80O1Ym
NDsjTWhDYFlROGhudzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdIdDUlNl9TKXRGOVVqN08j
QTJTT0plR0VmY0I3NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05XcUtHYEQ8Zi18anFGKCVR
SU57NjElcjArSn5YJTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5eCnpWdkkqUF9LeGBZdmlU
fHhRYEl3enArR0FlOFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRLckVVU3hoX31saAp6dUg/
YndGViU2OXshe0lyQkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9SKSNweiNJSy1WX0dDfCZe
Tn1nbkkKenRuSnMmJnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFqZFIoS3M+e2t9P2EmfCZf
MV47KEplQE0+XnV2aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7SFkpVH4kc1NgZSRUXy1a
QEp3KTF4fmkyclIkbFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYqRi08eDFobklBNil9bWJJ
bGFCWG1pVHRPKGpIKTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwlVHdsNU5TOWkmWXw5QD1H
KW9NcCVsaitkUW1IJCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhvNzwjCnp2N20kfXBRYWRn
RntHKUMqKnJTbzdoVktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6TX1Hbys/KDIqOW4xKwp6
RUhwejl5YHt7ZFE8P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZXVCEzSXwqQDRVST93JnQ/
SEBjQ3N4NmUKcSl5Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVDKjlSY1ZjTk95N0wjSTxB
YjYzekh8b3cKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9z
ZXJ2ZXIuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YmJiOWMwYWZmODk0NzRmZDcwMjFmNmUxYjQ0ZTA1YmEx
YTFjNDcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDIwMgp6Y21WOyowNSQpP3t7UjNQMDA8ZGVY
ZiNlSilPaTN2eFZxWVBxdDxHPWVzV0tQbnxBdVNWSz82eXdSNWUwVT11PDMKekZyI0VVOXV7bjxX
QlAoT0U/ZXlObDcmRm5MQ1dhZlUwcGBHS29WTTtPV1RLc1l+IzJ9OWZDZnJEZXRGUDk8SEl8Cnpl
YzREfmtjelJnJFV2PWdZPX56UjliYE9VWD90X2hBeyVBZzxGVyZIKCE4ITYmP15fdXF3bElBeGZa
N1Y2P0smegp6KVBKSlI0dnxGPDdpVyp0Z0tyPTB1XkhTTlVPT0Yjdn1LUW9nJCglbkZFMXRYcn44
JEl1b0UqNFF2dkcjRmVHPmIKRWNlNzdsSk9CVXkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvcHljYWNlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMTUwYzk2MGYzNTgxNGRlZjJjMmJjNWZh
ZjdiZGZlYjhkYWIzMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHlj
YWNlcnQucGVtCkBAIC0wLDAgKzEsOTkgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAg
ICAgIFZlcnNpb246IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAg
IGNiOjJkOjgwOjk5OjVhOjY5OjUyOjViCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2
V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAg
ICAgICAgICBOb3QgQmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKKyAgICAgICAgICAg
IE5vdCBBZnRlciA6IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAorICAgICAgICBTdWJqZWN0OiBD
PVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisg
ICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBB
bGdvcml0aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3
MiBiaXQpCisgICAgICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6
OTc6ZWQ6NTU6NDE6YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6CisgICAgICAgICAgICAg
ICAgICAgIGFjOjU4OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgorICAg
ICAgICAgICAgICAgICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4
ZTpkZjoKKyAgICAgICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6
YzY6ZWM6NzA6YjA6M2E6CisgICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2
OjRjOmM0OmE3OjgxOmU3OmI2OjI0OjY4OgorICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZToz
NTowNzoyZjphMDo1YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKKyAgICAgICAgICAgICAgICAgICAg
MTE6ZmU6Y2E6MWE6M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6CisgICAgICAgICAg
ICAgICAgICAgIGUxOmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgor
ICAgICAgICAgICAgICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1Zjoz
NjpmMjo3ODoKKyAgICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6
MWI6OGQ6ZmE6MjU6ZmU6ZDQ6CisgICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVm
OmVhOjE3OmNiOjU0OmM4OjI3Ojk5OjgwOmNiOgorICAgICAgICAgICAgICAgICAgICAzYzo0NTpm
MToyYzo1MjoxYzpkZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKKyAgICAgICAgICAgICAgICAg
ICAgNTc6NzM6MWI6NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6CisgICAgICAg
ICAgICAgICAgICAgIDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4
OgorICAgICAgICAgICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5
ZTo5NTpjZTo0YzoKKyAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6
MzU6NTc6Y2U6MDI6ZGM6ZWM6Y2E6CisgICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5
OmNiOjE2OjIwOjE1OjAzOjI0OjYxOjZjOmY0OjdhOgorICAgICAgICAgICAgICAgICAgICBmYzpi
Njo0ODplNTo1OToxMDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKKyAgICAgICAgICAgICAg
ICAgICAgZTk6Njg6OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6CisgICAg
ICAgICAgICAgICAgICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBi
OjY4OgorICAgICAgICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoy
ODo5NDo5Nzo3MTo1NDoKKyAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6
YzU6ZGM6MWI6OWU6ODk6NmQ6MDk6YWM6CisgICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNi
OjZkOmYxOjk3OjMxOmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgorICAgICAgICAgICAgICAgICAgICBh
MDplMDpkYzo2OToxMTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKKyAgICAgICAgICAg
ICAgICAgICAgYTc6MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6Cisg
ICAgICAgICAgICAgICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCisgICAgICAg
ICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5z
aW9uczoKKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAg
ICAgICAgICAgICBERDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoy
ODpGMjozNTpCNjo0OAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmll
cjogCisgICAgICAgICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6
MjE6Q0E6NkY6OUE6MDg6Mjg6RjI6MzU6QjY6NDgKKworICAgICAgICAgICAgWDUwOXYzIEJhc2lj
IENvbnN0cmFpbnRzOiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFs
Z29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIDMzOjZhOjU0OmQzOjZi
OmMwOmQ3OjAxOjVmOjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgorICAgICAgICAgYjc6MTg6
ZTk6YjA6MWU6NGE6YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6CisgICAgICAg
ICAxNToxMzplNDpkZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToK
KyAgICAgICAgIDdkOjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3Ojgw
OjlhOjYzOgorICAgICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6
Yjc6NGQ6YTc6ODQ6Y2E6CisgICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpk
ZjpkNzo5OTphYjoxYjplZTo4YjozMDoKKyAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFl
Ojk3OmJmOmU0OjdiOmZkOjBmOmE3OmI0Ojg1Ojc5OgorICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6
YmY6MWY6Mjk6NDU6MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6CisgICAgICAgICBlYzoyYjo0
Mjo2YTplNTpiYjpjODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKKyAgICAgICAg
IGI4OmJmOmQ1OmY3OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3Ogor
ICAgICAgICAgODc6YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6
NDM6ZDM6CisgICAgICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3Njpm
Nzo3NjoxZjpiMzpmZToKKyAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVl
OjA4OmQ4OmY0OmZmOjVhOmRjOjI1OgorICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6
NTA6NzM6NzY6MjU6MzU6ZmM6YjY6MjU6MjY6MTU6CisgICAgICAgICBjYjplYjpjNDoyYjo2MTow
YzoxYzplNzplZToyZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKKyAgICAgICAgIGQyOmFmOmRl
OmU0OjFiOjI0OjE0OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgorICAgICAgICAg
MGE6ZTA6OGQ6ZDc6NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6Cisg
ICAgICAgICBjNDo5Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTow
MTowNToKKyAgICAgICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3
OmFjOmViOjRiOjdkOgorICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6
Yzc6Zjk6NmE6NDA6ZTE6Yjg6NjQ6CisgICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3
ZDo1ODo3ZDo2NDo3OTplNTphNDowOTphYzoxZToKKyAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4
CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdK
bGFhVkpiTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURW
UVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVF
QXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgK
K05ESXpNVFphTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjlt
ZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25a
bGNqQ0NBYUl3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5o
ZVYyM0VjMCtGaHJGaHo0OGFXenlzZnVBajEKK25VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJW
NEhKa25QTUFNYnNjTEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KKzRxQitOUWN2b0Z2NVJVYjNIdkJH
RWY3S0dqeFE4U2FwWDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKK3J5WDQrRUozTFcx
Zk52SjRIbjFLaDJoamJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKKzNS
OVJSU0JRSGw2clYzTWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZ
eGwvcnIKK3JGT2VsYzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9M
Wkk1VmtRWEVuUUk1LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVV
d3RvM25mNlJlZjRrYzE0elNpVWwzRlUKKys4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhW
VENBenYzVktvT0RjYVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lzV3FHOGdtaWlYblpwK2xhaG92ZkYr
RHhuaFBId0lEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKK05MbzNkU0hLYjVvSUtQ
STF0a2d3SHdZRFZSMGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKK0RBWURW
UjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRnda
Tm0KK2tGRFF0eGpwc0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxm
VEpmNi95cGF3ZjMKK1NZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcr
c1FWcDU5L1htYXNiN29zd3pQZjgKKzU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENP
VGRyN0FoeDNlN0N0Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xD
T1hoNlUxalNiVEdrZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKK0RFcDJkdmQySDdQK3YwZXcv
Q3BXZ2VIUzNlNEkyUFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKK0syRU1IT2Z1
THhlYjdQRFVvWVRuMHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkK
K1Q0c0R4SmFmN1B0SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhs
eWY1ZGFraFYKK2p1VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCist
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
cmV0cnkuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjNi
ZDQ5ODFhNGE2NTk2YjUwZWM2NWVkYmQ1MWIwYjRjYTNiZWU0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAxMjUKemNtVi1AMER9TVV7e1IzUDI8ZyNBKndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtE
QSUrTF4qbWopfGZkdzZINXJHCnpHSU14WV5oVlJGLTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhS
UT1fREVYKnJNUz1QMnc5N2tGIWg+Y1dnKW5wKQpmbkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+
bXFwTFphQ1g5fWhaPwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRf
aGVhZGVyLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODM2ODNkMmQ1YjU1NWQ5YjAyMzE5OTkwMmZjZWU1N2Qx
YjU5MzdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRl
ci5iaW4KQEAgLTAsMCArMSBAQAorXfRap7WcDhrW5mj1MEzU/R+zeZMnClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBl
bSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3MTI3YTRi
MDI1YWEyMzMyMzE5M2YwNmNmMTc3M2E1NjBlMzgxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KQEAgLTAsMCArMSwzNCBAQAorLS0tLS1CRUdJTiBD
RVJUSUZJQ0FURS0tLS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FH
U0liM0RRRUJDd1VBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0
Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExY
TmxjblpsY2pBZUZ3MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhD
ekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VH
QTFVRUNnd2FVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1D
V3h2CitZMkZzYUc5emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dC
QUo4b0x6ZEI3MzlrCitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdP
cW5rTHBCNXRuTTgyNTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VS
aHpHRGQzZGtqVWVCalh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBq
cjU4S3FpbnorWHh4NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllv
K01kZ1pPY3krN2pFak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6
ME9CbWg0d2VRcG00K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpD
CitXWXhIQUZwQlFzNnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JO
ekV6STZiNHpVCitOc3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJl
MnE3WVoxd3lkUjUyM1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFI
N2dGd1pZQ29kNldIWXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlq
WVd4b2IzTjBNQTRHQTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFj
REFRWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6
TmNBQmF6aTI5cmI5Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCiti
NW9JS1BJMXRraWhVYVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2Iy
NGdVMjltCitkSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhM
WE5sY25abGNvSUpBTXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lC
QlFVSE1BS0dNR2gwZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdO
aEwzQjVZMkZqWlhKMExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallT
NXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRv
RGFnTklZeWFIUjBjRG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2
Y21WMmIyTmhkR2x2Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5L
QUMvCit1bzE3RXdQeEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitm
UjdzS0trMjJaSFNZCitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1Zw
VXlGZkxzR1VERnVJUEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURm
cFNFTG4rdjUzT005bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JX
Ym53cmwra0g4eEt4TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kv
QzBIY1FqMGdQdXkzbFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3
QXR5ZlRaU1FvRnlNbU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJ
CitBWTY1Q2xUVSt6UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0
YWVUUEIxQVV2CitTdFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29t
T29pdz09CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnRfd2l0aF9jaGFpbi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwYWQ0MTY4N2UyYWZkN2EwZjk0ZDE1
NjFhYmRlYTFlNWRkNDM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9z
c2xfY2VydF93aXRoX2NoYWluLnBlbQpAQCAtMCwwICsxLDYwIEBACistLS0tLUJFR0lOIENFUlRJ
RklDQVRFLS0tLS0KK01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1zdGdKbGFhVkpjTUEwR0NTcUdTSWIz
RFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5
bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNu
WmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBM01EY3gKK05ESXpNVFphTUY4eEN6QUpC
Z05WQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVF
Q2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYK
K1kyRnNhRzl6ZERDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSjhv
THpkQjczOWsKK1l4WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9zRHoxTVQ3RGxqY1pMQkx5N09xbmtM
cEI1dG5NODI1NkR3ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZCVzJINWNNQ296N1gxN2tvZVJoekdE
ZDNka2pVZUJqWHZSNXFSb3NHOHdNM2xRdWcKK1U3QWl6WSszQXphajF5TjNtWjlLNWEyMGpyNThL
cWlueitYeHg2c2IySmZZWWZmMm5lSmJCYWhObTVpZDBBRDIKK3BpL1R0aFpxTzVEVVJKWW8rTWRn
Wk9jeSs3akVqT0pzTFdaZDNZenE3OGlNMDdxRGpicElvVnBFTlpDVEhUV0EKK2hYOExJcXowT0Jt
aDR3ZVFwbTQrcGxVN0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0QUJXTzduOWZXeVNtZjlRWkMKK1dZ
eEhBRnBCUXM2elVWcUFEN25oRmRUcXBROWJSaWFFbmpFNEhpQWNjUFcrTUFvU3hGbnYvck56RXpJ
NmI0elUKK05zcEZNZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5UEp5a3FFWDRQWmwzTGExQmUycTdZ
WjF3eWRSNTIzWGQrZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZSdmliMTc1TDRyMldWMUNYUUg3Z0Z3
WllDb2Q2V0hZcTVUUUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hv
YjNOME1BNEdBMVVkRHdFQi93UUVBd0lGb0RBZEJnTlYKK0hTVUVGakFVQmdnckJnRUZCUWNEQVFZ
SUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEUKK0ZnUVVqK29kNHpOY0FC
YXppMjlyYjlOTXk3WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNiL0sydWJSTkxvM2RTSEsKK2I1b0lL
UEkxdGtpaFVhUlBNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1Uy
OW0KK2RIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxj
blpsY29JSkFNc3QKK2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFjQkFRUjNNSFV3UEFZSUt3WUJCUVVI
TUFLR01HaDBkSEE2THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNC
NVkyRmpaWEowTG1ObGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBhSFIwY0RvdkwzUmxjM1JqWVM1d2VY
Um9iMjUwWlhOMExtNWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3WUQKK1ZSMGZCRHd3T2pBNG9EYWdO
SVl5YUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjAKK1kyRXZjbVYy
YjJOaGRHbHZiaTVqY213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFDZjFqRmtROU1ibktBQy8K
K3VvMTdFd1B4SEtaZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJSNVpXY2hEQ3BWN2tDT2haK2ZSN3NL
S2syMlpIU1kKK29IK3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdXdklkM0p2YXBwZFZXa0MvVnBVeUZm
THNHVURGdUlQQURtWlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4Sy8xbVY2R3E5TVJyUnFpRGZwU0VM
bit2NTNPTTltR3Nwd1crTloxQ0lyYkN1VzAKK0t4Wi90UGtxbjhQU2Q5Zk5aUjcwYkI3cldibndy
bCtrSDh4S3hMbDZxZGxyTW1nNzRXV3doTGVReEs3KzlEZFAKK0lhRGVuenF4NWN3V0JHWS9DMEhj
UWowZ1B1eTNsU3MxVi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3WFM3NWlSQXIKKytVRkdUendBdHlm
VFpTUW9GeU1tTVVMcWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExXRXN0VTFOSUIxSy9DUkk3Z0kKK0FZ
NjVDbFRVK3pSUy90bEY4SUE3dHNGdmd0RWY4anNJOWthbWxpZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQ
QjFBVXYKK1N0UFlRa0tOTStOanl0V0hsNXROdUJvRE5Mc2MwZ0kvV1NQaUk0Q0lZOEx3b21Pb2l3
PT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0t
LQorTUlJRWJUQ0NBdFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1F
MHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdS
bTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4
T0RBNE1qa3hOREl6TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxo
Wk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFU
RVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJC
UUFEZ2dHUEFEQ0NBWW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQor
blV0THh6RDJ1QXV6VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVw
NEhudGlSbworNHFCK05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVa
TDF5UUFSZHVmajU5eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9X
bEY3SHY2aGZMVk1nbm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1J
VTJXSGwyb05KaHlCdXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFW
ODRDM096S2FmaUtXam5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtB
SjdZL1RMSFoyMk4vWjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgv
d045N0pKc1hjRzU2SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3
cHhEWQoraXNXcUc4Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0
RUZnUVUzYi9LMnViUgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1
YlJOTG8zZFNIS2I1b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJB
UXNGQUFPQ0FZRUFNMnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0
RlZReEZSUGszbjVPRE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6
RFFMeVAxQ3JhUHRIdUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2
Nlh2K1I3L1ErbnRJVjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6
WQorZlUzUnVML1Y5eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpw
azV5aUQwY1NOdgorREVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdI
UEpRYzNZbE5meTJKU1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09y
S1ZoR29ObkFDdUNOMTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdF
Rml2T1NDdDJKYkplaHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdT
bWxYODk5V0gxa2VlV2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy9zc2xfa2V5LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGZkZWMxMDFjOGQ2NzRjNTIwN2QxMDBmNzRi
NmE3MjQyNGNiNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9r
ZXkucGVtCkBAIC0wLDAgKzEsNDAgQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJ
Ry9RSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCdWN3Z2diakFnRUFBb0lCZ1FDZktDODNRZTkv
WkdNVworWWhicEFSUmlLY282bUpJOUNOTmVhZjdBODlURSt3NVkzR1N3Uzh1enFwNUM2UWViWnpQ
TnVlZzhIWW9Ud044NQorWjN4TTAzNi9RdzlLaFFWdGgrWERBcU0rMTllNUtIa1ljeGczZDNaSTFI
Z1kxNzBlYWthTEJ2TURONVVMb0ZPdworSXMyUHR3TTJvOWNqZDVtZlN1V3R0STYrZkNxb3A4L2w4
Y2VyRzlpWDJHSDM5cDNpV3dXb1RadVluZEFBOXFZdgorMDdZV2FqdVExRVNXS1BqSFlHVG5NdnU0
eEl6aWJDMW1YZDJNNnUvSWpOTzZnNDI2U0tGYVJEV1FreDAxZ0lWLworQ3lLczlEZ1pvZU1Ia0ta
dVBxWlZPeE9LK0EvTnJtcnFIRnNQSXNyczV3azdRQVZqdTUvWDFza3BuL1VHUWxtTQorUndCYVFV
TE9zMUZhZ0ErNTRSWFU2cVVQVzBZbWhKNHhPQjRnSEhEMXZqQUtFc1JaNy82emN4TXlPbStNMURi
SworUlRINE5XalZXcG5ZOFhhVkdkUmh0VHBIOU1qeWNwS2hGK0QyWmR5MnRRWHRxdTJHZGNNblVl
ZHQxM2ZuOXhEdQorUDRQb3BoRTBpcC9JTWduK2tiNG05ZStTK0s5bGxkUWwwQis0QmNHV0FxSGVs
aDJLdVUwQ0F3RUFBUUtDQVlFQQorbEtpV0lZam15UmpkTEtVR1BURVM5dldOdk5tUmpvelYwUlEw
TGNvU2JNTUxEWmtlTzBVd3lXcU9WSFVROCtpYgorakljZkVqZU5KeEk1N29ab3BlSE9PNXZKaHBO
bEZIK2c3bHRpVzJxRVJxQTFLODhsU1htOTlCenc2Rk5xaENSRQorSzh1YjVOOWZ5ZkpBK1A0by94
bTBXSzhFWGs1eUlVVjE3cC85ekpKeHpnS2d2MmpzVlRpM1FHMk9aR3ZuNE91ZworQnlvbU1aRUdI
a0JEemR4ejhjL2NQMVRsazFSRnV3U2dld3MxNzhrMnhxN0FZU00vczBZbUhpN2IvUlN2cHRYNgor
MXY4UDhrWE5VZTRBd1RhTnlybHZGMmx3SWFkWjhoMWhBN3RDRTJuNDRiN2E3S2ZoQWt3Y2JyMVQ1
OWlvWWg2UAorenhzeVBUNjc4dUQ1MWRidEQvRFhKQ2NvZWVGT2I4dXprUjJLTmNyblF6WnBDSm5S
cTRHcDV5Ynh3c3h4dXpwcgorZ3owZ2JObGh1V3RFN0VvU3ptSUs5dCtXVFM3SU0yQ3ZaeW1kNi9P
QWgxRnV3NkFRaFNwNjRYUnAzT2ZNTUFBQworSWUyRVB0S2o0aXNsV0dUOFZvVWp1UllHbWRSaDRk
dUFIMWRraUFYT1dBM1I3eTVhMS95L2lFOEtFOEJ0eG9jQgorQW9IQkFNOGFpVVJncHUxRnMwT3F6
Nml6ZWM3S1NMTDNsOGhtVytNS1VPZmsvWWJuZzZGclRGc0w1WXR6UitBcAord1c0d3dXbm5JS0Vj
MUpMaVo3ZzhhZ1JFVEs4aHI1UHdGWFVuL0dTV0MwU01zYXpMSlRveVNRUzVMT1YwdEx6Swora0oz
anROVTd0bmxER05rQ0hUSFNvVkwyVC84dCtJa1pJL2g1WjZ3amxZUHZVMkl1MG5WSVh0aUcrYWx2
NEE2TQorSHJoOWw1b3I0bWpCNnJHblZYZVlvaExrQ202cy9XOTdhaFZ4TE1jRWRic0JvMXBybTJK
cUduU29pUi90RUZDLworUUhRbmJRS0J3UURFdTdrVzBZZzlzWjg5UXRZdFZRMVlwaXhGWk9SYVVl
UklSTG5wRXMxdzdMMW1DYk9aMkxqOQorSkh4c0gwNWNZQWM3SEpmUHd3eHYzKzNhR0FJQy9kZnU0
VlN3RUZ0YXRBelVwemxoektTNStIUUNXQjRKVU5OVQorTVEzK0Z3SzJ4UVg0UGg4dCtPenJGaVlj
SzJnMEFuNVV4V01hMkhXSUFXVU9oblRPeWRBVnNvSDZ5UDMxY1ZtNAorMGh4b0FCQ3dmbGFOTE5H
alJVeWZCcExUQWNOdS9ZdGNFK0tSRXk3WUFBZ1hYcmhSU080WHBMc1NYd0xuTFQ3LworWU9rb0JX
RGNUV0VDZ2NCUFduU1VEWkNJUTNlZml0aE1aSkJjaXFkMlkyWDE5RHBxOE8zMUhJbUQ0anRPWTBW
NworY1VCL3dTa2VIQUd3amQvZUN5QTJlMHg4QjJJRWRxbU1mdnIrODZKSnhla0MzZEpZWENGdkg1
V0loc0g1M1lDYQorM2JUMUtsV0NMUDlpYi9nKzU4VlFDMFIvQ2M5VDRzZkxlUE5IN0Q1WmtaZDF3
bGJWMzBDUHIraThLd0theTZNRAoreGh2dEx4K2prMDdHRStFOXdtamJDTW83VGNseXJMb1ZFT2xx
Wk1BcXNoZ0FwVCtwOWV5Q1BldHdYdURId2EzbgorV3hoSGNsY1pDVjdSNHJVQ2djQWtkR1NueGN2
cElyRFBPVU5Xd3h2bUFXVFN0dzlaYlROUDhPeENOQ205Y3lEbAorZDRiQVMxaDhEL2ErVWs3Qzcw
aG51N1NsMnc3QzdFdTJ6aHdSVWRoaGUzK2w0R0lOUEsvajk5aTZOcUdQbEdwcQoreE1sTUVKNFlT
NzY4QnFlS0ZwZzBsODVQUm9FZ1RzcGhEZW9ST1NVUHNFUGRCWjlCeElCbFlLVGtiS0VTWkRHUgor
dHd6WUhsangxbjFOQ0RZUGZsbXJiMUtwWG40RU9jT2JOZ2h3MktxcU5VVVdmT2VCUHdCQTFGeHpN
NEJyQVN0cAorREJJTnBHUzREYzBtalZpVmVnRUNnY0EzaFR0bTgyWGR4UVhqOUxRbWIvRTNsS3gv
N0g4N1hJT2VOTW12all1WgoraVM5d0tya0YrdTQydnlvRHhjS01DbnhQNTA1NndwZFNUNHA1NnIr
U0J3VlRIY2MzbEdCU0djTVRJZndSWHJqMwordGhPQTJvdXIybjRvdU5Jc1l5VGxjc1FTemlmd21w
Um1WTVJQeGw5ZllWZEVXVWdCODNGZ0hUMEQ5YXZ2Wm5GOQordDlPY2NuR0pYU2hBSVpJQkFEaFZq
L0p3RzRGYmFYNDJOaWpENVBOcFZMazFZMTdPVjBJNTc2VDlTZmFRb0JqSgorYUgxTS96QzRhVmFT
MERZQi9HeHE3djg9CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
YXN5bmNpby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDll
Y2Q1Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNp
by5weQpAQCAtMCwwICsxLDM3NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBiaW5hc2NpaQor
aW1wb3J0IHJhbmRvbQoraW1wb3J0IHNvY2tldAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENh
c2UsIHNraXBJZgorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0
b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorCitmcm9tIGFp
b3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5hc3luY2lv
LnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitmcm9tIGFpb3F1aWMuYXN5
bmNpby5zZXJ2ZXIgaW1wb3J0IHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
IGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9y
dCBRdWljTG9nZ2VyCisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJ
TEUsCisgICAgU0VSVkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIFNLSVBf
VEVTVFMsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgcnVuLAorKQorCityZWFs
X3NlbmR0byA9IHNvY2tldC5zb2NrZXQuc2VuZHRvCisKKworZGVmIHNlbmR0b193aXRoX2xvc3Mo
c2VsZiwgZGF0YSwgYWRkcj1Ob25lKToKKyAgICAiIiIKKyAgICBTaW11bGF0ZSAyNSUgcGFja2V0
IGxvc3MuCisgICAgIiIiCisgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC4yNToKKyAgICAgICAg
cmVhbF9zZW5kdG8oc2VsZiwgZGF0YSwgYWRkcikKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3Rv
cmU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQor
CisgICAgZGVmIGFkZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0
LnRpY2tldF0gPSB0aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICBy
ZXR1cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgaGFuZGxlX3N0cmVh
bShyZWFkZXIsIHdyaXRlcik6CisgICAgYXN5bmMgZGVmIHNlcnZlKCk6CisgICAgICAgIGRhdGEg
PSBhd2FpdCByZWFkZXIucmVhZCgpCisgICAgICAgIHdyaXRlci53cml0ZShieXRlcyhyZXZlcnNl
ZChkYXRhKSkpCisgICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgYXN5bmNpby5lbnN1
cmVfZnV0dXJlKHNlcnZlKCkpCisKKworY2xhc3MgSGlnaExldmVsVGVzdChUZXN0Q2FzZSk6Cisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKKyAgICAgICAg
c2VsZi5zZXJ2ZXJfaG9zdCA9ICJsb2NhbGhvc3QiCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQg
PSA0NDMzCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorCisgICAgYXN5
bmMgZGVmIHJ1bl9jbGllbnQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGhvc3Q9Tm9uZSwKKyAg
ICAgICAgcG9ydD1Ob25lLAorICAgICAgICBjYWRhdGE9Tm9uZSwKKyAgICAgICAgY2FmaWxlPVNF
UlZFUl9DQUNFUlRGSUxFLAorICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgIHJl
cXVlc3Q9YiJwaW5nIiwKKyAgICAgICAgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBpZiBob3N0
IGlzIE5vbmU6CisgICAgICAgICAgICBob3N0ID0gc2VsZi5zZXJ2ZXJfaG9zdAorICAgICAgICBp
ZiBwb3J0IGlzIE5vbmU6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXJfcG9ydAorICAg
ICAgICBpZiBjb25maWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNvbmZpZ3VyYXRp
b24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1jYWRhdGEsIGNhZmlsZT1jYWZpbGUpCisg
ICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sICoqa3dhcmdzKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAjIHdhaXRpbmcgZm9y
IGNvbm5lY3RlZCB3aGVuIGNvbm5lY3RlZCByZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgICAg
ICBhd2FpdCBjbGllbnQud2FpdF9jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZWFkZXIsIHdy
aXRlciA9IGF3YWl0IGNsaWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwod3JpdGVyLmNhbl93cml0ZV9lb2YoKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwod3JpdGVyLmdldF9leHRyYV9pbmZvKCJzdHJlYW1faWQiKSwgMCkKKworICAg
ICAgICAgICAgd3JpdGVyLndyaXRlKHJlcXVlc3QpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVf
ZW9mKCkKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAg
ICAgICAgIyB3YWl0aW5nIGZvciBjbG9zZWQgd2hlbiBjbG9zZWQgcmV0dXJucyBpbW1lZGlhdGVs
eQorICAgICAgICBhd2FpdCBjbGllbnQud2FpdF9jbG9zZWQoKQorCisgICAgICAgIHJldHVybiBy
ZXNwb25zZQorCisgICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1O
b25lLCBob3N0PSI6OiIsICoqa3dhcmdzKToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpcyBO
b25lOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2Ns
aWVudD1GYWxzZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNF
UlZFUl9DRVJURklMRSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyID0gYXdh
aXQgc2VydmUoCisgICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICBwb3J0PXNlbGYu
c2VydmVyX3BvcnQsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisg
ICAgICAgICAgICBzdHJlYW1faGFuZGxlcj1oYW5kbGVfc3RyZWFtLAorICAgICAgICAgICAgKipr
d2FyZ3MKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlKHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVy
KCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVj
dF9hbmRfc2VydmVfaXB2NChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihob3N0
PSIwLjAuMC4wIikpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0
PSIxMjcuMC4wLjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlw
IikKKworICAgIEBza2lwSWYoImlwdjYiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBJUHY2IHRl
c3RzIikKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY2KHNlbGYpOgorICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKGhvc3Q9Ijo6IikpCisgICAgICAgIHJlc3BvbnNlID0gcnVu
KHNlbGYucnVuX2NsaWVudChob3N0PSI6OjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2Nl
cnRpZmljYXRlKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5l
cmF0ZV9lY19jZXJ0aWZpY2F0ZShjb21tb25fbmFtZT0ibG9jYWxob3N0IikKKworICAgICAgICBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNh
dGU9Y2VydGlmaWNhdGUsIHByaXZhdGVfa2V5PXByaXZhdGVfa2V5LCBpc19jbGllbnQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAg
cmVzcG9uc2UgPSBydW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAg
ICAgICAgY2FkYXRhPWNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29k
aW5nLlBFTSksCisgICAgICAgICAgICAgICAgY2FmaWxlPU5vbmUsCisgICAgICAgICAgICApCisg
ICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQor
CisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfbGFyZ2Uoc2VsZik6CisgICAgICAgICIi
IgorICAgICAgICBUcmFuc2ZlciBlbm91Z2ggZGF0YSB0byByZXF1aXJlIHJhaXNpbmcgTUFYX0RB
VEEgYW5kIE1BWF9TVFJFQU1fREFUQS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloi
ICogMjA5NzE1MgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3Bv
bnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChyZXF1ZXN0PWRhdGEpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2Vy
dmVfd2l0aG91dF9jbGllbnRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVm
IHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29u
bmVjdChzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0KSBhcyBjbGllbnQ6CisgICAg
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9z
ZXJ2ZXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3Ip
OgorICAgICAgICAgICAgcnVuKHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKSkKKworICAgIGRl
ZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIGFzeW5j
IGRlZiBydW5fY2xpZW50X3dyaXRlbGluZXMoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24g
PSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAg
ICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZl
cl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAg
ICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0g
YXdhaXQgY2xpZW50LmNyZWF0ZV9zdHJlYW0oKQorICAgICAgICAgICAgICAgIGFzc2VydCB3cml0
ZXIuY2FuX3dyaXRlX2VvZigpIGlzIFRydWUKKworICAgICAgICAgICAgICAgIHdyaXRlci53cml0
ZWxpbmVzKFtiIjAxMjM0NTY3IiwgYiI4OTAxMjM0NSJdKQorICAgICAgICAgICAgICAgIHdyaXRl
ci53cml0ZV9lb2YoKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFk
KCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0g
cnVuKHJ1bl9jbGllbnRfd3JpdGVsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiIjU0MzIxMDk4NzY1NDMyMTAiKQorCisgICAgQHNraXBJZigibG9zcyIgaW4gU0tJ
UF9URVNUUywgIlNraXBwaW5nIGxvc3MgdGVzdHMiKQorICAgIEBwYXRjaCgic29ja2V0LnNvY2tl
dC5zZW5kdG8iLCBuZXdfY2FsbGFibGU9bGFtYmRhOiBzZW5kdG9fd2l0aF9sb3NzKQorICAgIGRl
ZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfcGFja2V0X2xvc3Moc2VsZiwgbW9ja19zZW5k
dG8pOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1
Y2Nlc3MgYW5kIHN0cmVhbSBkYXRhIGlzIHN1Y2Nlc3NmdWxseSBzZW50CisgICAgICAgIGFuZCBy
ZWNlaXZlZCBpbiB0aGUgcHJlc2VuY2Ugb2YgcGFja2V0IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGlu
IGVhY2ggZGlyZWN0aW9uKS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogNjU1
MzYKKworICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAor
ICAgICAgICAgICAgaXNfY2xpZW50PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAg
ICAgICAgKQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VS
VkVSX0NFUlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZl
cihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKSkKKworICAgICAgICByZXNwb25z
ZSA9IHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBpc19j
bGllbnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICByZXF1ZXN0PWRhdGEsCisgICAgICAgICAgICApCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0
X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgICMg
c3RhcnQgc2VydmVyCisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHN0b3Jl
ID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKKworICAgICAgICBkZWYgc2F2ZV90aWNrZXQodCk6Cisg
ICAgICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlj
a2V0ID0gdAorCisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAg
ICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcj1zdG9yZS5hZGQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAg
ICAgICMgZmlyc3QgcmVxdWVzdAorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGll
bnQoc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zYXZlX3RpY2tldCksKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3RO
b25lKGNsaWVudF90aWNrZXQpCisKKyAgICAgICAgIyBzZWNvbmQgcmVxdWVzdAorICAgICAgICBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50
PVRydWUsIHNlc3Npb25fdGlja2V0PWNsaWVudF90aWNrZXQKKyAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2UsIGIiZ25pcCIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRl
bGVzc19yZXRyeShzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAg
ICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZl
X3dpdGhfc3RhdGVsZXNzX3JldHJ5X2JhZF9vcmlnaW5hbF9jb25uZWN0aW9uX2lkKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgSWYgdGhlIHNlcnZlcidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJz
IGRvIG5vdCBoYXZlIHRoZSBjb3JyZWN0CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQg
dGhlIGNvbm5lY3Rpb24gZmFpbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9w
cm90b2NvbCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBRdWljQ29u
bmVjdGlvblByb3RvY29sKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHByb3RvY29sLl9x
dWljLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHBy
b3RvY29sCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3Jl
YXRlX3Byb3RvY29sLCBzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bihzZWxmLnJ1bl9j
bGllbnQoKSkKKworICAgIEBwYXRjaCgiYWlvcXVpYy5xdWljLnJldHJ5LlF1aWNSZXRyeVRva2Vu
SGFuZGxlci52YWxpZGF0ZV90b2tlbiIpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
d2l0aF9zdGF0ZWxlc3NfcmV0cnlfYmFkKHNlbGYsIG1vY2tfdmFsaWRhdGUpOgorICAgICAgICBt
b2NrX3ZhbGlkYXRlLnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigiRGVjcnlwdGlvbiBmYWlsZWQu
IikKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKHN0YXRlbGVzc19yZXRyeT1UcnVlKSkK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAg
ICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwg
aWRsZV90aW1lb3V0PTQuMCksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF92ZXJzaW9uX25lZ290aWF0aW9uKHNl
bGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisKKyAgICAgICAgIyBmb3JjZSB2
ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJh
dGlvbihpc19jbGllbnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpKQorICAgICAgICBj
b25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0QSkKKwor
ICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikK
KworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAorICAgICAg
ICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgcG9ydD00NDAw
LAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlLCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0X25vX3dhaXRfY29ubmVjdGVk
KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZChj
b25maWd1cmF0aW9uKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9j
YXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAg
ICAgIDQ0MDAsCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAor
ICAgICAgICAgICAgICAgIHdhaXRfY29ubmVjdGVkPUZhbHNlLAorICAgICAgICAgICAgKSBhcyBj
bGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigK
KyAgICAgICAgICAgICAgICBydW5fY2xpZW50X25vX3dhaXRfY29ubmVjdGVkKAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
LCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF9sb2NhbF9wb3J0KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChsb2Nh
bF9wb3J0PTM0NTYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAi
KQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIGFz
eW5jIGRlZiBydW5fY2xpZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCk6CisgICAgICAgICAgICBj
b25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAg
ICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NB
Q0VSVEZJTEUpCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uCisgICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2Fp
dCBjbGllbnQucGluZygpCisgICAgICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9u
X2lkKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVu
KHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9jaGFuZ2VfY29ubmVj
dGlvbl9pZCgpKQorCisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXN5
bmMgZGVmIHJ1bl9jbGllbnRfa2V5X3VwZGF0ZSgpOgorICAgICAgICAgICAgY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQor
ICAgICAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2Vy
dmVyX2hvc3QsIHNlbGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBp
bmcoKQorICAgICAgICAgICAgICAgIGNsaWVudC5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAg
ICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2Vy
dmVyKCkpCisgICAgICAgIHJ1bihydW5fY2xpZW50X2tleV91cGRhdGUoKSkKKworICAgIGRlZiB0
ZXN0X3Bpbmcoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1
ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAg
ICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQu
cGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVu
X2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9waW5nX3BhcmFsbGVsKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25m
aWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUp
CisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5z
ZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
CisgICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBjb3JvcyA9IFtjbGll
bnQucGluZygpIGZvciB4IGluIHJhbmdlKDE2KV0KKyAgICAgICAgICAgICAgICBhd2FpdCBhc3lu
Y2lvLmdhdGhlcigqY29yb3MpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAg
ICAgICBydW4ocnVuX2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2
ZXNfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gcnVuKHNlbGYucnVuX3NlcnZlcigp
KQorICAgICAgICBzZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJj
MDAwMDAwMDAwODAiKSwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNlcnZlci5jbG9zZSgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
NmRiZjUxMTI0Y2RiNjMyYWRhMzBiNjZjM2YyZTQ0NmVmYmMyY2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4
IEBACitpbXBvcnQgYXN5bmNpbworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJv
bSBhaW9xdWljLmFzeW5jaW8uY29tcGF0IGltcG9ydCBfYXN5bmNjb250ZXh0bWFuYWdlcgorCitm
cm9tIC51dGlscyBpbXBvcnQgcnVuCisKKworQF9hc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBk
ZWYgc29tZV9jb250ZXh0KCk6CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorICAgIHlpZWxk
CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorCisKK2NsYXNzIEFzeW5jaW9Db21wYXRUZXN0
KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRl
c3QoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAg
ICAgICAgcGFzcworCisgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9l
eGNlcHRpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBh
c3luYyB3aXRoIHNvbWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcigic29tZSByZWFzb24iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVu
dGltZUVycm9yKToKKyAgICAgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlz
ZV9leGNlcHRpb25fdHlwZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAg
ICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJy
b3IpOgorICAgICAgICAgICAgcnVuKHRlc3QoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X2J1ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MWRiYzQ0ZDBkZDI2ZjFlZjY4NTY4MjRkNTViYjg4MDk5Mjg4NzU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAg
KzEsMjAxIEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMu
YnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciwg
c2l6ZV91aW50X3ZhcgorCisKK2NsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0
ZXN0X2RhdGFfc2xpY2Uoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4
MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
Zi5kYXRhX3NsaWNlKDAsIDgpLCBiIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YV9zbGljZSgxLCAzKSwgYiJceDA3XHgw
NiIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgor
ICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2UoLTEsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAs
IDkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAg
ICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDEsIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVz
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0
XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygz
KSwgYiJceDA4XHgwN1x4MDYiKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc19uZWdhdGl2ZShz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4
MDNceDAyXHgwMSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX2J5dGVzKC0xKQorCisgICAgZGVmIHRlc3RfcHVs
bF9ieXRlc190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0w
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAg
ICAgICAgICBidWYucHVsbF9ieXRlcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3plcm8oc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDApLCBiIiIpCisKKyAgICBk
ZWYgdGVzdF9wdWxsX3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4
MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWYucHVsbF91aW50OCgpLCAweDA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ4X3RydW5jYXRlZChzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ4KCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVs
bF91aW50MTYoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2
XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxs
X3VpbnQxNigpLCAweDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwg
MikKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDE2X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
QnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWlu
dDMyKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVc
eDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50
MzIoKSwgMHgwODA3MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0
KQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MzJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBi
dWYgPSBCdWZmZXIoY2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhC
dWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50
NjQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ2
NCgpLCAweDA4MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRl
bGwoKSwgOCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0X3RydW5jYXRlZChzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ2NCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1
c2hfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAg
ICBidWYucHVzaF9ieXRlcyhiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDdceDA2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYudGVsbCgpLCAzKQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc190cnVuY2F0ZWQoc2VsZik6
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEJ1ZmZlcldyaXRlRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMo
YiJceDA4XHgwN1x4MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgp
LCAwKQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoY2FwYWNpdHk9MykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiIiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDgoc2VsZik6CisgICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICBidWYucHVzaF91aW50OCgweDA4
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDgiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQx
NihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTIpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQxNigweDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIi
XHgwOFx4MDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAg
ICBkZWYgdGVzdF9wdXNoX3VpbnQzMihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFj
aXR5PTQpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMigweDA4MDcwNjA1KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ2NChz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQ2NCgweDA4MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVm
LmRhdGEsIGIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKyAgICBkZWYgdGVzdF9zZWVrKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShidWYuZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwg
MCkKKworICAgICAgICBidWYuc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5l
b2YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgICAg
IGJ1Zi5zZWVrKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2VlaygtMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2Vlayg5KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKworY2xhc3MgVWludFZh
clRlc3QoVGVzdENhc2UpOgorICAgIGRlZiByb3VuZHRyaXAoc2VsZiwgZGF0YSwgdmFsdWUpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5wdWxsX3VpbnRfdmFyKCksIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
Zi50ZWxsKCksIGxlbihkYXRhKSkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkK
KyAgICAgICAgYnVmLnB1c2hfdWludF92YXIodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF91aW50X3ZhcihzZWxmKToKKyAgICAg
ICAgIyAxIGJ5dGUKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDAwIiwgMCkKKyAgICAgICAg
c2VsZi5yb3VuZHRyaXAoYiJceDAxIiwgMSkKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDI1
IiwgMzcpCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHgzZiIsIDYzKQorCisgICAgICAgICMg
MiBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4N2JceGJkIiwgMTUyOTMpCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHg3Zlx4ZmYiLCAxNjM4MykKKworICAgICAgICAjIDQgYnl0
ZXMKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDlkXHg3Zlx4M2VceDdkIiwgNDk0ODc4MzMz
KQorICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YmZceGZmXHhmZlx4ZmYiLCAxMDczNzQxODIz
KQorCisgICAgICAgICMgOCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YzJceDE5
XHg3Y1x4NWVceGZmXHgxNFx4ZThceDhjIiwgMTUxMjg4ODA5OTQxOTUyNjUyKQorICAgICAgICBz
ZWxmLnJvdW5kdHJpcChiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwgNDYxMTY4
NjAxODQyNzM4NzkwMykKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludF92YXJfdHJ1bmNhdGVkKHNl
bGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWlu
dF92YXIoKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhmZiIpCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludF92YXJfdG9vX2JpZyhzZWxm
KToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBidWYucHVzaF91aW50
X3Zhcig0NjExNjg2MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFy
aWFibGUtbGVuZ3RoIGludGVnZXIiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NpemVfdWlu
dF92YXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig2Myks
IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxNjM4MyksIDIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxMDczNzQxODIzKSwgNCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDMp
LCA4KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICBzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVn
ZXIgaXMgdG9vIGJpZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYTVjZGM1OGY1
OWM2ZTk5OGIwZDM5NDlhYTc0Zjc3ZDIxNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90ZXN0X2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxODAwIEBACitpbXBvcnQg
YXN5bmNpbworaW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitp
bXBvcnQgdGltZQorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWlj
IGltcG9ydCB0bHMKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVm
ZmVyLCBlbmNvZGVfdWludF92YXIKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKK2Zy
b20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitm
cm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgUXVpY0Nvbm5lY3Rpb24s
CisgICAgUXVpY0Nvbm5lY3Rpb25FcnJvciwKKyAgICBRdWljTmV0d29ya1BhdGgsCisgICAgUXVp
Y1JlY2VpdmVDb250ZXh0LAorKQorZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlw
dG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20g
YWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisg
ICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGVuY29kZV9xdWljX3Jl
dHJ5LAorICAgIGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCispCitmcm9tIGFpb3F1
aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNr
ZXRCdWlsZGVyCitmcm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBh
Y2VyCisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAg
U0VSVkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAorICAgIFNF
UlZFUl9LRVlGSUxFLAorKQorCitDTElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCisKK1NF
UlZFUl9BRERSID0gKCIyLjMuNC41IiwgNDQzMykKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3Rv
cmU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQor
CisgICAgZGVmIGFkZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0
LnRpY2tldF0gPSB0aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICBy
ZXR1cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQsIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRUKToKKyAgICByZXR1cm4g
UXVpY1JlY2VpdmVDb250ZXh0KAorICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgaG9zdF9j
aWQ9Y2xpZW50Lmhvc3RfY2lkLAorICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3Jr
X3BhdGhzWzBdLAorICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9W10sCisgICAgICAgIHRpbWU9
YXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnRpbWUoKSwKKyAgICApCisKKworZGVmIGNvbnN1bWVf
ZXZlbnRzKGNvbm5lY3Rpb24pOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV2ZW50ID0gY29u
bmVjdGlvbi5uZXh0X2V2ZW50KCkKKyAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAg
ICAgIGJyZWFrCisKKworZGVmIGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVu
dF9vcHRpb25zKToKKyAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgY29uZmln
dXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBx
dWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICAgICAgKQorICAg
ICkKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKworICAgICMga2ljay1vZmYgaGFuZHNoYWtl
CisgICAgY2xpZW50LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICBz
ZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIHJldHVybiBjbGllbnQKKwor
CitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGNsaWVudF9hbmRfc2VydmVyKAorICAg
IGNsaWVudF9rd2FyZ3M9e30sCisgICAgY2xpZW50X29wdGlvbnM9e30sCisgICAgY2xpZW50X3Bh
dGNoPWxhbWJkYSB4OiBOb25lLAorICAgIGhhbmRzaGFrZT1UcnVlLAorICAgIHNlcnZlcl9rd2Fy
Z3M9e30sCisgICAgc2VydmVyX2NlcnRmaWxlPVNFUlZFUl9DRVJURklMRSwKKyAgICBzZXJ2ZXJf
a2V5ZmlsZT1TRVJWRVJfS0VZRklMRSwKKyAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKKyAgICBzZXJ2
ZXJfcGF0Y2g9bGFtYmRhIHg6IE5vbmUsCispOgorICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0g
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1R
dWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICApCisgICAgY2xpZW50X2NvbmZpZ3Vy
YXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKwor
ICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3Vy
YXRpb24sICoqY2xpZW50X2t3YXJncykKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKyAgICBk
aXNhYmxlX3BhY2tldF9wYWNpbmcoY2xpZW50KQorICAgIGNsaWVudF9wYXRjaChjbGllbnQpCisK
KyAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBp
c19jbGllbnQ9RmFsc2UsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9u
cworICAgICkKKyAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVy
X2NlcnRmaWxlLCBzZXJ2ZXJfa2V5ZmlsZSkKKworICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9u
KGNvbmZpZ3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKKyAg
ICBzZXJ2ZXIuX2Fja19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVy
KQorICAgIHNlcnZlcl9wYXRjaChzZXJ2ZXIpCisKKyAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCisg
ICAgaWYgaGFuZHNoYWtlOgorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlcikKKworICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCisKKyAg
ICAjIGNsb3NlCisgICAgY2xpZW50LmNsb3NlKCkKKyAgICBzZXJ2ZXIuY2xvc2UoKQorCisKK2Rl
ZiBkaXNhYmxlX3BhY2tldF9wYWNpbmcoY29ubmVjdGlvbik6CisgICAgY2xhc3MgRHVtbXlQYWNr
ZXRQYWNlcihRdWljUGFja2V0UGFjZXIpOgorICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2Vs
Ziwgbm93KToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBjb25uZWN0aW9uLl9sb3Nz
Ll9wYWNlciA9IER1bW15UGFja2V0UGFjZXIoKQorCisKK2RlZiBzZXF1ZW5jZV9udW1iZXJzKGNv
bm5lY3Rpb25faWRzKToKKyAgICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2Vf
bnVtYmVyLCBjb25uZWN0aW9uX2lkcykpCisKKworZGVmIGRyb3Aoc2VuZGVyKToKKyAgICAiIiIK
KyAgICBEcm9wIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJgLgorICAgICIiIgorICAgIHJldHVybiBs
ZW4oc2VuZGVyLmRhdGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCisKKworZGVmIHJv
dW5kdHJpcChzZW5kZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFtcyBm
cm9tIGBzZW5kZXJgIHRvIGByZWNlaXZlcmAgYW5kIGJhY2suCisgICAgIiIiCisgICAgcmV0dXJu
ICh0cmFuc2ZlcihzZW5kZXIsIHJlY2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikp
CisKKworZGVmIHRyYW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAgIFNlbmQg
ZGF0YWdyYW1zIGZyb20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYC4KKyAgICAiIiIKKyAgICBkYXRh
Z3JhbXMgPSAwCisgICAgZnJvbV9hZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGll
bnQgZWxzZSBTRVJWRVJfQUREUgorICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICBkYXRhZ3JhbXMgKz0gMQorICAg
ICAgICByZWNlaXZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUu
dGltZSgpKQorICAgIHJldHVybiBkYXRhZ3JhbXMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvblRl
c3QoVGVzdENhc2UpOgorICAgIGRlZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2
ZXIsIGFscG5fcHJvdG9jb2w9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBoYW5k
c2hha2UgY29tcGxldGVkLgorICAgICAgICAiIiIKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4
dF9ldmVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Q
cm90b2NvbE5lZ290aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9w
cm90b2NvbCwgYWxwbl9wcm90b2NvbCkKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVu
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hh
a2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2Nv
bCwgYWxwbl9wcm90b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9k
YXRhX2FjY2VwdGVkLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNz
aW9uX3Jlc3VtZWQsIEZhbHNlKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNv
bm5lY3Rpb25JZElzc3VlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRf
ZXZlbnQoKSkKKworICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3Rv
Y29sKQorICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQor
ICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3Qoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
Y2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVk
CisgICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9
c2VydmVyKQorCisgICAgICAgICAgICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJs
ZSBjb25uZWN0aW9uIElEcyBmb3IgdGhlIHBlZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2
YWlsYWJsZSksIFsxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNl
cnZlci5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAg
ICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgorICAg
ICAgICAgICAgY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJh
bnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rp
b24gY2xvc2VzIG9uIHRoZSBjbGllbnQgc2lkZQorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90
aW1lcihjbGllbnQuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0
X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50
cy5Db25uZWN0aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnQuZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dElzTm9uZShjbGllbnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5l
Y3Rpb24gY2xvc2VzIG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICAgICAgc2VydmVyLmhhbmRs
ZV90aW1lcihzZXJ2ZXIuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5u
ZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2
ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydElzTm9uZShzZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNs
aWVudCBsb2cKKyAgICAgICAgICAgIGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4o
Y2xpZW50X2xvZ1sidHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICAgICAgICAgICMg
Y2hlY2sgc2VydmVyIGxvZworICAgICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1
cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVh
dGVyKGxlbihzZXJ2ZXJfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKKworICAgIGRl
ZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKAorICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsi
aDMtMjUiLCAiaHEtMjUiXX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJv
dG9jb2xzIjogWyJocS0yNSJdfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNo
ZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29s
PSJocS0yNSIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6
CisgICAgICAgIGNsaWVudF9sb2dfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VydmVy
X2xvZ19maWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KAorICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50
X2xvZ19maWxlfSwKKyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmls
ZSI6IHNlcnZlcl9sb2dfZmlsZX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAg
ICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5j
aGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgICAgICAg
ICAgIyBjaGVjayBzZWNyZXRzIHdlcmUgbG9nZ2VkCisgICAgICAgICAgICBjbGllbnRfbG9nID0g
Y2xpZW50X2xvZ19maWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2
ZXJfbG9nX2ZpbGUuZ2V0dmFsdWUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnRfbG9nLCBzZXJ2ZXJfbG9nKQorICAgICAgICAgICAgbGFiZWxzID0gW10KKyAgICAgICAgICAg
IGZvciBsaW5lIGluIGNsaWVudF9sb2cuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGxh
YmVscy5hcHBlbmQobGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBsYWJlbHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICAiUVVJQ19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAg
ICAgICAgICAgICAgICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisg
ICAgICAgICAgICAgICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAg
ICAgICAgICAgICAgICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2Vy
dF9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2Vy
dGZpbGU9U0VSVkVSX0NFUlRGSUxFX1dJVEhfQ0hBSU4pIGFzICgKKyAgICAgICAgICAgIGNsaWVu
dCwKKyAgICAgICAgICAgIHNlcnZlciwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgY2hlY2sg
aGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xp
ZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9s
b3NzXzEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVz
dGFibGlzaGVkIGV2ZW4gaW4gdGhlIGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1zKToKKyAgICAgICAgICAgIHJl
dHVybiBbbGVuKHhbMF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAgICAgIGNsaWVudF9jb25maWd1
cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNsaWVu
dF9jb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VS
VEZJTEUpCisKKyAgICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1j
bGllbnRfY29uZmlndXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAg
ICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9
RmFsc2UpCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJW
RVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9IFF1aWNDb25u
ZWN0aW9uKGNvbmZpZ3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pCisgICAgICAgIHNlcnZl
ci5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKKyAgICAg
ICAgbm93ID0gMC4wCisgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93
KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQorCisgICAgICAg
ICMgSU5JVElBTCBpcyBsb3N0CisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBjbGllbnQuaGFu
ZGxlX3RpbWVyKG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMTI4MF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAzLjApCisKKyAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElB
TCArIEhBTkRTSEFLRQorICAgICAgICBub3cgPSAxLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVf
ZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVt
cyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMi4xKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNr
ZXRzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50
KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBu
b3JtYWxseQorICAgICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdy
YW0oaXRlbXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVj
ZWl2ZV9kYXRhZ3JhbShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAg
IGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5h
c3NlcnRBbG1vc3RFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5l
Z290aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQor
CisgICAgICAgIG5vdyA9IDEuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVt
c1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRh
dGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdy
YW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChz
ZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMu
SGFuZHNoYWtlQ29tcGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVy
Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93
ID0gMS40CisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJW
RVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3Nl
bmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVt
cyksIFszMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1l
cigpLCA2MS40KSAgIyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9s
b3NzXzIoc2VsZik6CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAg
ICAgICByZXR1cm4gW2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRf
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICBjbGllbnRfY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFKQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3Vy
YXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0g
MAorCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PUZhbHNlKQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hh
aW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBR
dWljQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAg
ICBzZXJ2ZXIuX2Fja19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFM
CisgICAgICAgIG5vdyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwg
bm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5v
dykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgw
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKwor
ICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNI
QUtFIGJ1dCBzZWNvbmQgZGF0YWdyYW0gaXMgbG9zdAorICAgICAgICBub3cgPSAwLjEKKyAgICAg
ICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9
bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEw
NjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRf
cGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5z
cGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2Vp
dmVzIGZpcnN0IGRhdGFncmFtIGFuZCBzZW5kcyBBQ0tTCisgICAgICAgIG5vdyA9IDAuMgorICAg
ICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5v
dz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQor
ICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZl
bnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50
Lm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORwor
ICAgICAgICBub3cgPSBjbGllbnQuZ2V0X3RpbWVyKCkgICMgfjAuNjI1CisgICAgICAgIGNsaWVu
dC5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1z
X3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXpl
cyhpdGVtcyksIFs0NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50Lmdl
dF90aW1lcigpLCAxLjg3NSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNj
YXJkcyBJTklUSUFMIGFuZCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC43MjUKKyAgICAgICAg
c2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93
KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tl
dHMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2Vz
WzFdLnNlbnRfcGFja2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2
ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIEFDS3MgYXJl
IGxvc3QsIHNlcnZlciByZXRyYW5zbWl0cyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gc2VydmVy
LmdldF90aW1lcigpCisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQorICAgICAg
ICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0
cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNb
MV0uc2VudF9wYWNrZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5l
eHRfZXZlbnQoKSkKKworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKKyAg
ICAgICAgbm93ID0gMS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBd
WzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdy
YW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNs
aWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzMyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0
RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAyLjQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVy
LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAg
ICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNl
bGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNo
YWtlQ29tcGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRf
ZXZlbnQoKSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40
CisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQURE
Uiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93
PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsz
Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2
MS40KSAgIyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMo
c2VsZik6CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICBy
ZXR1cm4gW2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmln
dXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGll
bnRfY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNF
UlRGSUxFKQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249
Y2xpZW50X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisg
ICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50
PUZhbHNlKQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VS
VkVSX0NFUlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29u
bmVjdGlvbihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2
ZXIuX2Fja19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAg
ICAgIG5vdyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5v
dykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAg
ICAjIHNlcnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisg
ICAgICAgIG5vdyA9IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1sw
XVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFn
cmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1f
c2l6ZXMoaXRlbXMpLCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyLmdldF90aW1lcigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZl
ci5fbG9zcy5zcGFjZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAg
ICAgICMgY2xpZW50IHJlY2VpdmVzIElOSVRJQUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0g
MC4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJf
QUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50
LmdldF90aW1lcigpLCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVu
dC5uZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VD
b21wbGV0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBjb21w
bGV0ZXMgaGFuZHNoYWtlCisgICAgICAgIG5vdyA9IDAuMworICAgICAgICBzZXJ2ZXIucmVjZWl2
ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0
ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9w
YWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2
ZW50KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZl
bnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQ
SU5HCisgICAgICAgIG5vdyA9IDAuODI1CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkK
KworICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKKyAgICAgICAgbm93
ID0gMC45CisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJW
RVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3Nl
bmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVt
cyksIFszMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1l
cigpLCAwLjgyNSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRz
IEhBTkRTSEFLRV9ET05FCisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHNlcnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VydmVyLnJlY2Vp
dmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAgICAgICBp
dGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHNlcnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjRdKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF93aXRoX3F1YW50dW1fcmVhZGluZXNzKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVu
dF9hbmRfc2VydmVyKGNsaWVudF9vcHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRy
dWV9LCkgYXMgKAorICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAg
ICAgICApOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAo
Y2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQor
ICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5u
ZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMu
U3RyZWFtRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVu
dC5kYXRhCisgICAgICAgICAgICAgICAgZWxpZiBldmVudCBpcyBOb25lOgorICAgICAgICAgICAg
ICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBi
ImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgorICAgICAg
ICBjbGllbnRfdGlja2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlj
a2V0U3RvcmUoKQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6Cisg
ICAgICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlj
a2V0ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAg
ICAgIGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9u
X3RpY2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFu
ZGxlciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAg
ICAgICAgICAgIGNsaWVudF9vcHRpb25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0
fSwKKyAgICAgICAgICAgIHNlcnZlcl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjog
dGlja2V0X3N0b3JlLnBvcH0sCisgICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCisgICAgICAg
ICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZF
Ul9BRERSLCBub3c9dGltZS50aW1lKCkpCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQu
Z2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9z
dHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgyLCAxKSkKKworICAgICAgICAgICAg
ZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoZXZlbnQpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorCisgICAgICAgICAgICBl
dmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHlwZShldmVudCksIGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV2ZW50LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVj
dF93aXRoXzBydHRfYmFkX21heF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnRfdGlj
a2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgICAgIGRlZiBwYXRjaChzZXJ2ZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICBQYXRjaCBzZXJ2ZXIncyBUTFMgaW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKKyAg
ICAgICAgICAgIG1heF9lYXJseV9kYXRhIHZhbHVlLgorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICByZWFsX2luaXRpYWxpemUgPSBzZXJ2ZXIuX2luaXRpYWxpemUKKworICAgICAgICAgICAg
ZGVmIHBhdGNoZWRfaW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAg
IHJlYWxfaW5pdGlhbGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9t
YXhfZWFybHlfZGF0YSA9IDEyMzQ1CisKKyAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9
IHBhdGNoZWRfaW5pdGlhbGl6ZQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRp
Y2tldCk6CisgICAgICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBj
bGllbnRfdGlja2V0ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigK
KyAgICAgICAgICAgIGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2
ZV9zZXNzaW9uX3RpY2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90
aWNrZXRfaGFuZGxlciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICAgICAgc2VydmVyX3Bh
dGNoPXBhdGNoLAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNoZWNrIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRf
ZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCisKKyAgICBkZWYg
dGVzdF9jaGFuZ2VfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5k
X3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9h
dmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xp
ZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZh
aWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgdGhlIHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGll
bnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdf
Y29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBb
MSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUg
Y2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9j
b25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xp
ZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIs
IDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZl
ciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhj
bGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQK
KyAgICAgICAgICAgIHNlcnZlci5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAg
ICAgICAgICAgICAgUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFd
CisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNl
cnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsy
LCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdl
X2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJl
cnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlv
biBJRCwgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LmNo
YW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChj
bGllbnQpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAg
ICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQs
IDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJ
T05fSUQgaXMgcmV0cmFuc21pdHRlZAorICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29u
bmVjdGlvbl9pZF9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAg
ICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVy
cyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAg
ICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChz
ZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZl
cik6CisgICAgICAgICAgICAjIGNsaWVudAorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50
LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW1faWQsIDApCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShz
dHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbV9pZCwgNCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVh
bV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMikKKyAgICAgICAgICAgIGNsaWVudC5zZW5k
X3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9p
ZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFs
PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKKyAgICAg
ICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAg
ICAgICAgICAgICMgc2VydmVyCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25l
eHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbV9pZCwgMSkKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9p
ZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9h
dmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFt
X2lkLCA1KQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBi
ImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWls
YWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCAzKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFt
X2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2Vy
dmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQorICAgICAgICAgICAg
c2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgIGRlZiB0
ZXN0X2RhdGFncmFtX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KAorICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6
IDY1NTM2fSwKKyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1l
X3NpemUiOiA2NTUzNn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19o
YW5kc2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25l
KQorCisgICAgICAgICAgICAjIHNlbmQgZGF0YWdyYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5k
X2RhdGFncmFtX2ZyYW1lKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVy
Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwg
ZXZlbnRzLkRhdGFncmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZGF0YSwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8y
KHNlbGYpOgorICAgICAgICAjIHBheWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUg
cGFja2V0CisgICAgICAgIHBheWxvYWQgPSBiIloiICogMTI1MAorCisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3Jh
bV9mcmFtZV9zaXplIjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhf
ZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAg
ICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBu
X3Byb3RvY29sPU5vbmUpCisKKyAgICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCisgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZSgyMCk6CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRf
ZGF0YWdyYW1fZnJhbWUocGF5bG9hZCkKKworICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkg
MTEgZGF0YWdyYW1zIGFyZSBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKKyAgICAg
ICAgICAgIGZvciBpIGluIHJhbmdlKDExKToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgICAgICAgICAgIyBzZXJ2ZXIg
c2VuZHMgQUNLCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwg
Y2xpZW50KSwgMSkKKworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFn
cmFtcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZl
ciksIDkpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg5KToKKyAgICAgICAgICAgICAgICBl
dmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHR5cGUoZXZlbnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgIGRlZiB0
ZXN0X2RlY3J5cHRpb25fZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlw
dGlvbiBrZXkKKyAgICAgICAgICAgIHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0u
c2VuZC5zZXR1cCgKKyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRl
LkFFU18xMjhfR0NNX1NIQTI1NiwKKyAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAor
ICAgICAgICAgICAgICAgIHZlcnNpb249c2VydmVyLl92ZXJzaW9uLAorICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAjIHNlcnZlciBzZW5kcyBjbG9zZQorICAgICAgICAgICAgc2VydmVyLmNs
b3NlKGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIGZvciBk
YXRhLCBhZGRyIGluIHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgor
ICAgICAgICAgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERS
LCBub3c9dGltZS50aW1lKCkpCisKKyAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6CisgICAg
ICAgIGRlZiBwYXRjaChjbGllbnQpOgorICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xp
ZW50Ll9pbml0aWFsaXplCisKKyAgICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVl
cl9jaWQ6IGJ5dGVzKToKKyAgICAgICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQp
CisgICAgICAgICAgICAgICAgY2xpZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5U
TFNfVkVSU0lPTl8xXzNfRFJBRlRfMjhdCisKKyAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6
ZSA9IHBhdGNoZWRfaW5pdGlhbGl6ZQorCisgICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIodGltZXJfYXQpCisKKyAgICAgICAgICAgIGV2
ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2RlLCAzMjYpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVk
IHByb3RvY29sIHZlcnNpb24iKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJi
YWdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2Vs
ZikKKworICAgICAgICBkYXRhZ3JhbSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgw
IikKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERS
LCBub3c9dGltZS50aW1lKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2Vy
dmVkX2JpdHNfbm9uX3plcm8oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFs
b25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigK
KyAgICAgICAgICAgIGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19j
bGllbnQ9RmFsc2UsCisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAg
ICAgICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBjcnlw
dG8gPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9w
ZWVyX2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAg
ICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKKwor
ICAgICAgICBkZWYgZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBw
YWNrZXRfbnVtYmVyKToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKKyAg
ICAgICAgICAgIHBsYWluX2hlYWRlciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkg
KyBwbGFpbl9oZWFkZXJbMTpdCisgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFj
a2V0X3JlYWwoCisgICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBw
YWNrZXRfbnVtYmVyCisgICAgICAgICAgICApCisKKyAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFj
a2V0ID0gZW5jcnlwdF9wYWNrZXQKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNL
RVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBp
biBidWlsZGVyLmZsdXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3Jh
bShkYXRhZ3JhbSwgU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjbGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5l
Y3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29k
ZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAor
ICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJv
IiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0
YWdyYW1fd3JvbmdfdmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5k
YWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVy
KAorICAgICAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIGlz
X2NsaWVudD1GYWxzZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAg
ICAgICAgICAgIHZlcnNpb249MHhGRjAwMDAxMSwgICMgRFJBRlRfMTYKKyAgICAgICAgKQorICAg
ICAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwo
Y2xpZW50Ll9wZWVyX2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lv
bikKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5
cHRvKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFE
RElORykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxp
Z2h0X3NwYWNlKSkKKworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBd
OgorICAgICAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9B
RERSLCBub3c9dGltZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGll
bnQpLCAwKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgK
KyAgICAgICAgICAgICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgICAgICAg
ICBzb3VyY2VfY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAorICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAg
ICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAg
ICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgZGVmIHRl
c3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6Cisg
ICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAg
IGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnko
CisgICAgICAgICAgICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAg
ICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNm
ZThmNWYwZmY0IiksCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNs
aWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93
PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChj
bGllbnQpLCAwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6Cisg
ICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAg
IGNsaWVudC5faGFuZGxlX2Fja19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2Nv
bnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAg
ICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAorICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1R
dWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Imls
bGVnYWwgQUNLIGZyYW1lIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisg
ICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAg
ICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9u
X2Nsb3NlX2ZyYW1lX2FwcChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigp
IGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29k
ZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDAp
KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVu
dC5fY2xvc2VfZXZlbnQsCisgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJS
T1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT0iZ29vZGJ5ZSIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2Fw
cF9ub3RfdXRmOChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xp
ZW50KHNlbGYpCisKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFt
ZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICBCdWZmZXIo
ZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAorICAgICAg
ICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xv
c2VfZXZlbnQsCisgICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBl
PU5vbmUsIHJlYXNvbl9waHJhc2U9IiIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfY3J5cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEK
KyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikg
YXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3Zh
cigxKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5G
UkFNRV9FTkNPRElOR19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEi
CisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1l
KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2Vy
dmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUK
KyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5EQVRBX0JMT0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9
ZW5jb2RlX3VpbnRfdmFyKDEyMzQ1KSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfZGF0YWdyYW1fZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFu
ZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAg
IGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwK
KyAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVu
dHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAg
ICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9m
cmFtZV9zaXplPU5vbmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29u
bmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFt
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgICAg
IEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9W
SU9MQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5
cGUsIFF1aWNGcmFtZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6CisgICAg
ICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1f
ZnJhbWVfc2l6ZT01KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5l
Y3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9m
cmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1iImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklP
TEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBl
LCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4
Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6CisgICAg
ICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1f
ZnJhbWVfc2l6ZT03KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAor
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiXHgwNWhlbGxvanVuayIpLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZy
YW1lUmVjZWl2ZWQoZGF0YT1iImhlbGxvIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFu
ZGxlX2RhdGFncmFtX2ZyYW1lX3dpdGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgorICAgICAg
ICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2Zy
YW1lX3NpemU9Tm9uZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25u
ZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1f
ZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAor
ICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNF
cnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RI
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
VW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdy
YW1fZnJhbWVfd2l0aF9sZW5ndGhfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBj
cmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikK
KworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFz
IGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAg
ICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgQnVm
ZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFt
ZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRB
R1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2Fs
bG93ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUg
ZnJhbWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25F
cnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2Rv
bmVfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2Vy
dmVyKSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiIiKSwKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBR
dWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RP
TkUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4
Y2VwdGlvbi5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90
IHNlbmQgSEFORFNIQUtFX0RPTkUgZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2hhbmRsZV9tYXhfZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5k
X3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNsaWVudC5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNs
aWVudCByZWNlaXZlcyBNQVhfREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQu
X2hhbmRsZV9tYXhfZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwK
KyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90
ZV9tYXhfZGF0YSwgMTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2Rh
dGFfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFs
IHN0cmVhbSAwCisgICAgICAgICAgICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkPTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFt
X2RhdGFfcmVtb3RlLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBN
QVhfU1RSRUFNX0RBVEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVf
bWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2Nv
bnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1f
REFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRf
dmFyKDEwNDg1NzcpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAgICAgICAgICAg
ICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1i
Ilx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1NzUpKSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEw
NDg1NzcpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2Vp
dmVfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFs
IHN0cmVhbSAzCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9
MywgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NU
UkVBTV9EQVRBOiAzLCAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21h
eF9zdHJlYW1fZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9T
VFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIp
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0Zy
YW1lVHlwZS5NQVhfU1RSRUFNX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkK
KworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5n
IGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1l
KAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAg
ICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAg
ICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRp
LCAxMjkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkg
bG93ZXJpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2Jp
ZGlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKKyAgICAg
ICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI3KSksCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJl
YW1zX2JpZGksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJh
bWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhf
c3RyZWFtc191bmksIDEyOCkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NU
UkVBTVNfVU5JIHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9z
dHJlYW1zX3VuaV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0
KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkks
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9t
YXhfc3RyZWFtc191bmksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFY
X1NUUkVBTVNfVU5JIHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19V
TkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90
ZV9tYXhfc3RyZWFtc191bmksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5f
ZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAg
ICAgICAgICBjbGllbnQuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTkVXX1RPS0VOLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVu
aGV4bGlmeSgiMDgwMTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfaGFuZGxlX25ld190b2tlbl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIHNlcnZlciByZWNlaXZlcyBORVdfVE9LRU4KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2Vy
dmVyLl9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRf
cmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuTkVXX1RPS0VOLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51
bmhleGxpZnkoIjA4MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVh
c29uX3BocmFzZSwgIkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgorICAg
ICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNl
bGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVy
KToKKyAgICAgICAgICAgICMgY2xpZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBk
YXRhCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikK
KyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFt
KGRhdGEsICgiMS4yLjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1lKCkpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgcGF0aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5f
bmV0d29ya19wYXRocyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5f
bmV0d29ya19wYXRoc1swXS5hZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIs
ICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5f
bmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNl
bmRzIFBBVEhfQ0hBTExFTkdFIGFuZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCisgICAgICAgICAg
ICBmb3IgZGF0YSwgYWRkciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGlt
ZSgpKToKKyAgICAgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJW
RVJfQUREUiwgbm93PXRpbWUudGltZSgpKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4g
Y2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAg
ICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10
aW1lLnRpbWUoKSkKKworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40Iiwg
MjM0NSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhz
WzBdLmlzX3ZhbGlkYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9u
ZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgdW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKKyAgICAgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Cisg
ICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAg
ICAgIEJ1ZmZlcihkYXRhPWIiXHgxMVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5
cGUuUEFUSF9SRVNQT05TRSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNl
bGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKwor
ICAgICAgICAjIG5vIG1vcmUgcGFkZGluZworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIp
CisgICAgICAgIGNsaWVudC5faGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ICAgICMgcGFkZGluZyB1bnRpbCBlbmQKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMo
MTApKQorICAgICAgICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1
ZgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisK
KyAgICAgICAgIyBwYWRkaW5nIHRoZW4gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9Ynl0ZXMoMTApICsgYiJceDAxIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFk
ZGluZ19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwg
UXVpY0ZyYW1lVHlwZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi50ZWxsKCksIDEwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVh
bV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwg
c3RyZWFtIDAKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0w
LCBkYXRhPWIiaGVsbG8iKQorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAgICAgIGNs
aWVudC5faGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRf
cmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5S
RVNFVF9TVFJFQU0sCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KCIwMDAxMDAiKSksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGV2ZW50ID0gY2xp
ZW50Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50
KSwgZXZlbnRzLlN0cmVhbVJlc2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dC5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChldmVudC5zdHJlYW1faWQsIDApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfcmVzZXRfc3RyZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGll
bnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVu
dCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGllbnQuc2Vu
ZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAg
IyBjbGllbnQgcmVjZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNs
aWVudC5faGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJh
bWVUeXBlLlJFU0VUX1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9Ymlu
YXNjaWkudW5oZXhsaWZ5KCIwMjExMDAiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29k
ZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4
Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0g
aXMgc2VuZC1vbmx5IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9p
ZF9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMg
UkVUSVJFX0NPTk5FQ1RJT05fSUQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9j
b25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNU
SU9OX0lELAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhd
CisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25f
aWRfZnJhbWVfY3VycmVudF9jaWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAs
IDEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xp
ZW50IHJlY2VpdmVzIFJFVElSRV9DT05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKKyAg
ICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMg
Y206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRf
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9J
RCwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLCAiQ2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwg
N10KKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVh
bSAwCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0
YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5H
CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAg
ICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiXHgwMFx4MTEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9w
X3NlbmRpbmdfZnJhbWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9h
bmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNy
ZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNs
aWVudCByZWNlaXZlcyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRf
cmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNc
eDExIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlNUT1BfU0VORElORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0g
MQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2
CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVu
dC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAg
ICAgICAgICAgICAgICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVu
Y29kZV91aW50X3ZhcihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29k
ZV91aW50X3ZhcihVSU5UX1ZBUl9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29k
ZV91aW50X3ZhcigxKQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0
aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1l
X3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNh
bm5vdCBleGNlZWQgMl42MiAtIDEiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmlj
aWFsbHkgcmFpc2UgcmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xv
Y2FsX21heF9kYXRhX3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAg
ICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9
IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAx
CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3Ip
IGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAg
ICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0
YT1lbmNvZGVfdWludF92YXIoc3RyZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
Ik92ZXIgY29ubmVjdGlvbiBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJl
YW1fZnJhbWVfb3Zlcl9tYXhfc3RyZWFtX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQg
cmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSB8IDQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Cisg
ICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsgZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9k
YXRhX2JpZGlfcmVtb3RlICsgMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9j
b2RlLCBRdWljRXJyb3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBz
dHJlYW0gZGF0YSBsaW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292
ZXJfbWF4X3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBh
cyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFN
IGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAor
ICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAg
ICAgICAgICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91
aW50X3ZhcihjbGllbnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKKyAgICAg
ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9M
SU1JVF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZy
YW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBv
cGVuIikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYp
OgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToK
KyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAg
ICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVs
bG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFN
X1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1v
bmx5IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9y
KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2Vy
dmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToK
KyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAg
ICAgICAgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgQnVm
ZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1f
U1RBVEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0
aWF0b3IiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAw
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1i
ImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxP
Q0tFRAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFt
ZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAg
ICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MDEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAg
ICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxv
IikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBh
cyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tF
RCwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVy
cm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5T
VFJFQU1fREFUQV9CTE9DS0VEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNl
cHRpb24ucmVhc29uX3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX3N0cmVhbXNfYmxvY2tlZF91bmlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGgg
Y2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBj
bGllbnQgcmVjZWl2ZXMgU1RSRUFNU19CTE9DS0VEX1VOSTogMAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNU
UkVBTVNfQkxPQ0tFRF9VTkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiks
CisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdf
b25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKKyAg
ICAgICAgICAgIGlzX2Fja19lbGljaXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRf
cmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LCBiIlx4MDAiICogMTIwMAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShpc19hY2tfZWxpY2l0aW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3By
b2JpbmcpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29u
dGV4dChjbGllbnQpLCBiIlx4MWYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFG
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFz
ZSwgIlVua25vd24gZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVk
X3VuZXhwZWN0ZWRfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZ
UFRPIGZyYW1lIGluIDAtUlRUCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9h
ZF9yZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQsIGVwb2NoPXRscy5FcG9jaC5aRVJPX1JUVCksIGIiXHgwNiIKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IlVuZXhwZWN0ZWQgZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVk
X21hbGZvcm1lZF9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigp
IGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxm
b3JtZWQgVFJBTlNQT1JUX0NMT1NFIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVu
dC5fcGF5bG9hZF9yZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLCBiIlx4MWNceDAwXHgwMSIKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5l
cnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBl
LCAweDFDKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIkZhaWxlZCB0byBwYXJzZSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21h
eF9kYXRhX2Jsb2NrZWRfYnlfY2Moc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9u
IGNvbnRyb2wKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVz
X2luX2ZsaWdodCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3Nz
LmNvbmdlc3Rpb25fd2luZG93LCAxNDMwMykKKworICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkg
cmFpc2UgcmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21h
eF9kYXRhX3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAg
ICAjIGFydGlmaWNpYWxseSByYWlzZSBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIGNsaWVu
dC5fbG9zcy5fY2MuYnl0ZXNfaW5fZmxpZ2h0ID0gMTQzMDMKKworICAgICAgICAgICAgIyBNQVhf
REFUQSBpcyBub3Qgc2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWF4
X2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigp
IGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSBy
ZWNlaXZlZCBkYXRhIGNvdW50ZXIKKyAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFf
dXNlZCA9IGNsaWVudC5fbG9jYWxfbWF4X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLl9yZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFY
X0RBVEEgaXMgc2VudCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9w
KGNsaWVudCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxf
bWF4X2RhdGFfc2VudCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyLl9yZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEg
aXMgcmV0cmFuc21pdHRlZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2Rh
dGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2xpZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAwKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9tYXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAg
ICAgIHN0cmVhbSA9IGNsaWVudC5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAg
ICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3Nl
bnQsIDEwNDg1NzYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwg
anVzdCBiZWZvcmUgcmFpc2luZyBNQVhfU1RSRUFNX0RBVEEKKyAgICAgICAgICAgIHNlcnZlci5z
ZW5kX3N0cmVhbV9kYXRhKDAsIGIiWiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgorICAgICAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2
ZXIsIGNsaWVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJl
YW1fZGF0YV9sb2NhbCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAj
IHNlcnZlciBzZW5kcyBvbmUgbW9yZSBieXRlCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJl
YW1fZGF0YSgwLCBiIloiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zlcihz
ZXJ2ZXIsIGNsaWVudCksIDEpCisKKyAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNl
bnQgYW5kIGxvc3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAx
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsLCAyMDk3MTUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0
cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBjbGllbnQuX29uX21h
eF9zdHJlYW1fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWws
IDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFt
X2RhdGFfbG9jYWxfc2VudCwgMCkKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5z
bWl0dGVkIGFuZCBhY2tlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAo
Y2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3Nl
cnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhj
bGllbnQpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAg
ICAgICAgICAjIGNoZWNrIGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2
ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Q
aW5nQWNrbm93bGVkZ2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQs
IDEyMzQ1KQorCisgICAgZGVmIHRlc3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5k
cyBhbm90aGVyIHBpbmcsIFBJTkcgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LnNlbmRfcGlu
Zyh1aWQ9MTIzNDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwg
MSkKKworICAgICAgICAgICAgIyBQSU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAg
ICAgICAgICBjbGllbnQuX29uX3BpbmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
KDEyMzQ1LCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQs
IHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjaGVjayBldmVudAorICAgICAgICAg
ICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHR5cGUoZXZlbnQpLCBldmVudHMuUGluZ0Fja25vd2xlZGdlZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXZlbnQudWlkLCAxMjM0NSkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3Ry
ZWFtX2RhdGFfb3Zlcl9tYXhfc3RyZWFtc19iaWRpKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVu
dF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRl
IHN0cmVhbXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkID0gaSAqIDQKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1f
ZGF0YShzdHJlYW1faWQsIGIiIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNs
aWVudC5fc3RyZWFtc1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDAp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgwLCAwKSkKKworICAgICAgICAgICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNf
QkxPQ0tFRAorICAgICAgICAgICAgc3RyZWFtX2lkID0gMTI4ICogNAorICAgICAgICAgICAgY2xp
ZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAx
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2Nr
ZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVu
dCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJl
YW1zCisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9j
a2VkKQorCisgICAgZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3Vu
aShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICAjIGNyZWF0ZSBzdHJlYW1zCisgICAgICAgICAgICBmb3IgaSBp
biByYW5nZSgxMjgpOgorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgorICAg
ICAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0u
aXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3Ry
ZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
Y2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAj
IGNyZWF0ZSBvbmUgdG9vIG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJl
YW1faWQgPSAxMjggKiA0ICsgMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEo
c3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQor
CisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50
X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUu
TUFYX1NUUkVBTVNfVU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50
X3ZhcigxMjkpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
Y2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKworICAgIGRlZiB0ZXN0X3Nl
bmRfc3RyZWFtX2RhdGFfcGVlcl9pbml0aWF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIg
Y3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3Ry
ZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChzZXJ2ZXIsIGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgY3Jl
YXRlcyB1bmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVh
bV9kYXRhKDMsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRy
aXAoc2VydmVyLCBjbGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0
ZXMgYmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9k
YXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAo
Y2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRh
dGEgb24gc2VydmVyLWluaXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAg
ICAgIyBjbGllbnQgY3JlYXRlIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xp
ZW50LnNlbmRfc3RyZWFtX2RhdGEoMiwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAg
IyBjbGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlv
bmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9y
KSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhl
bGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3Ry
KGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVl
ci1pbml0aWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIiwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjbGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWlu
aXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9z
dHJlYW1fZGF0YSg1LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVu
a25vd24gcGVlci1pbml0aWF0ZWQgc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRl
c3Rfc3RyZWFtX2RpcmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4
XToKKyAgICAgICAgICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUo
b2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2Fu
X3NlbmQob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJl
YW1fY2FuX3JlY2VpdmUob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLl9zdHJlYW1fY2FuX3NlbmQob2ZmKSkKKworICAgICAgICAgICAgICAgICMgU2VydmVyLUlu
aXRpYXRlZCwgQmlkaXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShj
bGllbnQuX3N0cmVhbV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEp
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2Vu
ZChvZmYgKyAxKSkKKworICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGly
ZWN0aW9uYWwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFt
X2Nhbl9yZWNlaXZlKG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShj
bGllbnQuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkK
KworICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUo
b2ZmICsgMykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVh
bV9jYW5fc2VuZChvZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
cnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKKworICAgIGRlZiB0
ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb25fZmFpbChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3Jl
YXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBubyBjb21tb24gdmVyc2lv
biwgbm8gcmV0cnkKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAg
ICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJj
ZV9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9
Y2xpZW50Lmhvc3RfY2lkLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhG
RjAwMDAxMV0sICAjIERSQUZUXzE2CisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVS
X0FERFIsCisgICAgICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICAgICAgZXZlbnQgPSBjbGll
bnQubmV4dF9ldmVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2
ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dC5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBldmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQg
YSBjb21tb24gcHJvdG9jb2wgdmVyc2lvbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVy
c2lvbl9uZWdvdGlhdGlvbl9vayhzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5k
YWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCBy
ZXRyeQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29k
ZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICAgICAgc291cmNlX2NpZD1j
bGllbnQuX3BlZXJfY2lkLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQu
aG9zdF9jaWQsCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3Zl
cnNpb25dLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAg
ICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZHJvcChjbGllbnQpLCAxKQorCisKK2NsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2Nhbl9zZW5kKHNlbGYpOgorICAgICAgICBwYXRoID0gUXVpY05l
dHdvcmtQYXRoKCgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBh
dGguaXNfdmFsaWRhdGVkKQorCisgICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkg
ZGF0YQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQorCisgICAgICAgICMgcmVjZWl2ZSBz
b21lIGRhdGEKKyAgICAgICAgcGF0aC5ieXRlc19yZWNlaXZlZCArPSAxCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0
aC5jYW5fc2VuZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHBhdGguY2FuX3NlbmQoNCkpCisKKyAgICAgICAgIyBzZW5kIHNvbWUgZGF0
YQorICAgICAgICBwYXRoLmJ5dGVzX3NlbnQgKz0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5k
KDEpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNGU0ZGNmNWUxOGU0
NzAyNDUwZDFiZWJmNDlkZmZjMjEzZTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKQEAgLTAsMCArMSwzMTkgQEAKK2ltcG9ydCBiaW5hc2Np
aQorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgorCitmcm9tIGFpb3F1aWMu
YnVmZmVyIGltcG9ydCBCdWZmZXIKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgKAor
ICAgIElOSVRJQUxfQ0lQSEVSX1NVSVRFLAorICAgIENyeXB0b0Vycm9yLAorICAgIENyeXB0b1Bh
aXIsCisgICAgZGVyaXZlX2tleV9pdl9ocCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBp
bXBvcnQgUEFDS0VUX0ZJWEVEX0JJVCwgUXVpY1Byb3RvY29sVmVyc2lvbgorZnJvbSBhaW9xdWlj
LnRscyBpbXBvcnQgQ2lwaGVyU3VpdGUKKworZnJvbSAudXRpbHMgaW1wb3J0IFNLSVBfVEVTVFMK
KworUFJPVE9DT0xfVkVSU0lPTiA9IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKworQ0hB
Q0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIgPSAyCitDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVB
REVSID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJlMWZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1
MjRiMDg1MGZjMmEyOGUyNDBmZDc2NDAxNzAwMDIiCispCitDSEFDSEEyMF9DTElFTlRfUExBSU5f
UEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDIwMTAwMDAwMCIpCitDSEFDSEEyMF9DTElF
TlRfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZThmZjAwMDAx
NjA4ODBiNTdjN2I3MGQ4NTI0YjA4NTBmYzJhMjhlMjQwZmQ3NjQwMTc4MzEzYjA0YmU5ODQ0OSIK
KyAgICAiZWIxMDU2N2UyNWNlOTMwMzgxZjJhNWI3ZGEyZGI4ZGIiCispCisKK0xPTkdfQ0xJRU5U
X1BBQ0tFVF9OVU1CRVIgPSAyCitMT05HX0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51
bmhleGxpZnkoCisgICAgImMzZmYwMDAwMTcwODgzOTRjOGYwM2U1MTU3MDgwMDAwNDQ5ZTAwMDAw
MDAyIgorKQorTE9OR19DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgK
KyAgICAiMDYwMDQwYzQwMTAwMDBjMDAzMDM2NjYwMjYxZmY5NDdjZWE0OWNjZTZjZmFkNjg3ZjQ1
N2NmMWIxNDUzMWJhMSIKKyAgICAiNDEzMWEwZThmMzA5YTFkMGI5YzQwMDAwMDYxMzAxMTMwMzEz
MDIwMTAwMDA5MTAwMDAwMDBiMDAwOTAwMDAwNiIKKyAgICAiNzM2NTcyNzY2NTcyZmYwMTAwMDEw
MDAwMGEwMDE0MDAxMjAwMWQwMDE3MDAxODAwMTkwMTAwMDEwMTAxMDIwMSIKKyAgICAiMDMwMTA0
MDAyMzAwMDAwMDMzMDAyNjAwMjQwMDFkMDAyMDRjZmRmY2QxNzhiNzg0YmYzMjhjYWU3OTNiMTM2
ZiIKKyAgICAiMmFlZGNlMDA1ZmYxODNkN2JiMTQ5NTIwNzIzNjY0NzAzNzAwMmIwMDAzMDIwMzA0
MDAwZDAwMjAwMDFlMDQwMyIKKyAgICAiMDUwMzA2MDMwMjAzMDgwNDA4MDUwODA2MDQwMTA1MDEw
NjAxMDIwMTA0MDIwNTAyMDYwMjAyMDIwMDJkMDAwMiIKKyAgICAiMDEwMTAwMWMwMDAyNDAwMSIK
KykgKyBieXRlcyg5NjIpCitMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICJjMGZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUzYjM0
M2FhODUzNTA2NGE0MjY4YTBkOWQ3YjFjIgorICAgICI5ZDI1MGFlMzU1MTYyMjc2ZTliMWUzMDEx
ZWY2YmJjMGFiNDhhZDViY2MyNjgxZTk1Mzg1N2NhNjJiZWNkNzUyIgorICAgICI0ZGFhYzQ3M2U2
OGQ3NDA1ZmJiYTRlOWVlNjE2Yzg3MDM4YmRiZTkwOGMwNmQ5NjA1ZDlhYzQ5MDMwMzU5ZWVjIgor
ICAgICJiMWQwNWExNGUxMTdkYjhjZWRlMmJiMDlkMGRiYmZlZTI3MWNiMzc0ZDhmMTBhYmVjODJk
MGY1OWExZGVlMjlmIgorICAgICJlOTU2MzhlZDhkZDQxZGEwNzQ4NzQ2ODc5MWI3MTljNTVjNDY5
NjhlYjNiNTQ2ODAwMzcxMDJhMjhlNTNkYzFkIgorICAgICIxMjkwM2RiMGFmNTgyMTc5NGI0MWM0
YTkzMzU3ZmE1OWNlNjljZmU3ZjZiZGZhNjI5ZWVmNzg2MTY0NDdlMWQ2IgorICAgICIxMWM0YmFm
NzFiZjMzZmViY2IwMzEzN2MyYzc1ZDI1MzE3ZDNlMTNiNjg0MzcwZjY2ODQxMWMwZjAwMzA0YjUw
IgorICAgICIxYzhmZDQyMmJkOWI5YWQ4MWQ2NDNiMjBkYTg5Y2EwNTI1ZDI0ZDJiMTQyMDQxY2Fl
MGFmMjA1MDkyZTQzMDA4IgorICAgICIwY2Q4NTU5ZWE0YzVjNmU0ZmEzZjY2MDgyYjdkMzAzZTUy
Y2UwMTYyYmFhOTU4NTMyYjBiYmMyYmM3ODU2ODFmIgorICAgICJjZjM3NDg1ZGZmNjU5NWUwMWU3
MzljOGFjOWVmYmEzMWI5ODVkNWY2NTZjYzA5MjQzMmQ3ODFkYjk1MjIxNzI0IgorICAgICI4NzY0
MWM0ZDNhYjhlY2UwMWUzOWJjODViMTU0MzY2MTQ3NzVhOThiYThmYTEyZDQ2ZjliMzVlMmE1NWVi
NzJkIgorICAgICI3Zjg1MTgxYTM2NjY2MzM4N2RkYzIwNTUxODA3ZTAwNzY3M2JkN2UyNmJmOWIy
OWI1YWIxMGExY2E4N2NiYjdhIgorICAgICJkOTdlOTllYjY2OTU5YzJhOWJjM2NiZGU0NzA3ZmY3
NzIwYjExMGZhOTUzNTQ2NzRlMzk1ODEyZTQ3YTBhZTUzIgorICAgICJiNDY0ZGNiMmQxZjM0NWRm
MzYwZGMyMjcyNzBjNzUwNjc2ZjY3MjRlYjQ3OWYwZDJmYmI2MTI0NDI5OTkwNDU3IgorICAgICJh
YzZjOTE2N2Y0MGFhYjczOTk5OGYzOGI5ZWNjYjI0ZmQ0N2M4NDEwMTMxYmY2NWE1MmFmODQxMjc1
ZDViM2QxIgorICAgICI4ODBiMTk3ZGYyYjVkZWEzZTZkZTU2ZWJjZTNmZmI2ZTkyNzdhODIwODJm
OGQ5Njc3YTY3NjcwODliNjcxZWJkIgorICAgICIyNDRjMjE0ZjBiZGU5NWMyYmViMDJjZDExNzJk
NThiZGYzOWRjZTU2ZmY2OGViMzVhYjM5YjQ5YjRlYWM3YzgxIgorICAgICI1ZWE2MDQ1MWQ2ZTZh
YjgyMTE5MTE4ZGYwMmE1ODY4NDRhOWZmZTE2MmJhMDA2ZDA2NjllZjU3NjY4Y2FiMzhiIgorICAg
ICI2MmY3MWEyNTIzYTA4NDg1MmNkMWQwNzliMzY1OGRjMmYzZTg3OTQ5YjU1MGJhYjNlMTc3Y2Zj
NDllZDE5MGRmIgorICAgICJmMDYzMGU0MzA3N2MzMGRlOGY2YWUwODE1MzdmMWU4M2RhNTM3ZGE5
ODBhZmE2NjhlN2I3ZmIyNTMwMWNmNzQxIgorICAgICI1MjRiZTNjNDk4ODRiNDI4MjFmMTc1NTJm
YmQxOTMxYTgxMzAxN2I2YjY1OTBhNDFlYTE4YjZiYTQ5Y2Q0OGE0IgorICAgICI0MGJkOWEzMzQ2
YTc2MjNmYjRiYTM0YTNlZTU3MWUzYzczMWYzNWE3YTNjZjI1YjU1MWE2ODBmYTY4NzYzNTA3Igor
ICAgICJiN2ZkZTNhYWYwMjNjNTBiOWQyMmRhNjg3NmJhMzM3ZWI1ZTlkZDllYzNkYWY5NzAyNDJi
NmM1YWFiM2FhNGIyIgorICAgICI5NmFkOGI5ZjY4MzJmNjg2ZWY3MGZhOTM4YjMxYjRlNWRkZDcz
NjQ0NDJkM2VhNzJlNzNkNjY4ZmIwOTM3Nzk2IgorICAgICJmNDYyOTIzYTgxYTQ3ZTFjZWU3NDI2
ZmY2ZDkyMjEyNjliNWE2MmVjMDNkNmVjOTRkMTI2MDZjYjQ4NTU2MGJhIgorICAgICJiNTc0ODE2
MDA5ZTk2NTA0MjQ5Mzg1YmI2MWE4MTliZTA0ZjYyYzIwNjYyMTRkODM2MGEyMDIyYmViMzE2MjQw
IgorICAgICJiNmM3ZDc4YmJlNTZjMTMwODJlMGNhMjcyNjYxMjEwYWJmMDIwYmYzYjU3ODNmMTQy
NjQzNmNmOWZmNDE4NDA1IgorICAgICI5M2E1ZDA2MzhkMzJmYzUxYzVjNjVmZjI5MWEzYTdhNTJm
ZDY3NzVlNjIzYTQ0MzljYzA4ZGQyNTU4MmZlYmM5IgorICAgICI0NGVmOTJkOGRiZDMyOWM5MWRl
M2U5Yzk1ODJlNDFmMTdmM2QxODZmMTA0YWQzZjkwOTk1MTE2YzY4MmEyYTE0IgorICAgICJhM2I0
YjFmNTQ3YzMzNWYwYmU3MTBmYzlmYzAzZTBlNTg3YjhjZGEzMWNlNjViOTY5ODc4YTRhZDQyODNl
NmQ1IgorICAgICJiMDM3M2Y0M2RhODZlOWUwZmZlMWFlMGZkZGQzNTE2MjU1YmQ3NDU2NmYzNmEz
ODcwM2Q1ZjM0MjQ5ZGVkMWY2IgorICAgICI2YjNkOWI0NWI5YWYyY2NmZWZlOTg0ZTEzMzc2YjFi
MmM2NDA0YWE0OGM4MDI2MTMyMzQzZGEzZjNhMzM2NTllIgorICAgICJjMWIzZTk1MDgwNTQwYjI4
YjdmM2ZjZDM1ZmE1ZDg0M2I1NzlhODRjMDg5MTIxYTYwZDhjMTc1NDkxNWMzNDRlIgorICAgICJl
YWY0NWE5YmYyN2RjMGMxZTc4NDE2MTY5MTIyMDkxMzEzZWIwZTg3NTU1YWJkNzA2NjI2ZTU1N2Zj
MzZhMDRmIgorICAgICJjZDE5MWE1ODgyOTEwNGQ2MDc1YzU1OTRmNjI3Y2E1MDZiZjE4MWRhZWM5
NDBmNGE0ZjNhZjAwNzRlZWU4OWRhIgorICAgICJhY2RlNjc1ODMxMjYyMmQ0ZmE2NzViMzlmNzI4
ZTA2MmQyYmVlNjgwZDhmNDFhNTk3YzI2MjY0OGJiMThiY2ZjIgorICAgICIxM2M4YjNkOTdiMWE3
N2IyYWMzYWY3NDVkNjFhMzRjYzQ3MDk4NjViYWM4MjRhOTRiYjE5MDU4MDE1ZTRlNDJkIgorICAg
ICJjOWJlNmM3ODAzNTY3MzIxODI5ZGQ4NTg1MzM5NjI2OSIKKykKKworTE9OR19TRVJWRVJfUEFD
S0VUX05VTUJFUiA9IDEKK0xPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAiYzFmZjAwMDAxNzAwMDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MDAwMSIKKykK
K0xPTkdfU0VSVkVSX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjBk
MDAwMDAwMDAxODQxMGEwMjAwMDA1NjAzMDNlZWZjZTdmN2IzN2JhMWQxNjMyZTk2Njc3ODI1ZGRm
NzM5ODgiCisgICAgImNmYzc5ODI1ZGY1NjZkYzU0MzBiOWEwNDVhMTIwMDEzMDEwMDAwMmUwMDMz
MDAyNDAwMWQwMDIwOWQzYzk0MGQiCisgICAgIjg5NjkwYjg0ZDA4YTYwOTkzYzE0NGVjYTY4NGQx
MDgxMjg3YzgzNGQ1MzExYmNmMzJiYjlkYTFhMDAyYjAwMDIiCisgICAgIjAzMDQiCispCitMT05H
X1NFUlZFUl9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjOWZm
MDAwMDE3MDAwOGYwNjdhNTUwMmE0MjYyYjUwMDQwNzQxNjhiZjIyYjcwMDI1OTZmOTlhZTY3YWJm
NjVhIgorICAgICI1ODUyZjU0ZjU4YzM3YzgwODY4MmUyZTQwNDkyZDhhMzg5OWZiMDRmYzBhZmU5
YWFiYzg3NjdiMThhMGFhNDkzIgorICAgICI1Mzc0MjYzNzNiNDhkNTAyMjE0ZGQ4NTZkNjNiNzhj
ZWUzN2JjNjY0YjNmZTg2ZDQ4N2FjN2E3N2M1MzAzOGEzIgorICAgICJjZDMyZjBiNTAwNGQ5ZjU3
NTRjNGY3ZjJkMWYzNWNmM2Y3MTE2MzUxYzkyYjljZjliYjZkMDkxZGRmYzhiMzJkIgorICAgICI0
MzIzNDhhMmM0MTMiCispCisKK1NIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMworU0hPUlRf
U0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNDFiMDFmZDI0YTU4NmE5
Y2YzMDAwMyIpCitTSE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAiMDYwMDM5MDQwMDAwMzUwMDAxNTE4MDVhNGJlYmY1MDAwMDIwYjA5OGM4ZGM0MTgz
ZTRjMTgyNTcyZTEwYWMzZSIKKyAgICAiMmI4ODg5N2UwNTI0Yzg0NjE4NDc1NDhiZDJkZmZhMmMw
YWU2MDAwODAwMmEwMDA0ZmZmZmZmZmYiCispCitTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tF
VCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiNWRiMDFmZDI0YTU4NmE5Y2YzM2RlYzA5NGFh
ZWM2ZDZiNGI3YTVlMTVmNWEzZjA1ZDA2Y2YxYWQwMzU1YzE5ZCIKKyAgICAiY2NlMDgwN2VlY2Y3
YmYxYzg0NGE2NmUxZWNkMWY3NGIyYTJkNjliZmQyNWQyMTc4MzNlZGQ5NzMyNDY1OTdiZCIKKyAg
ICAiNTEwN2VhMTVjYjFlMjEwMDQ1Mzk2YWZhNjAyZmUyMzQzMmY0YWIyNGNlMjUxYiIKKykKKwor
CitjbGFzcyBDcnlwdG9UZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZlY3RvcnMg
ZnJvbToKKworICAgIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMt
dGxzLTE4I2FwcGVuZGl4LUEKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfY3J5cHRvKHNlbGYs
IGlzX2NsaWVudCk6CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5z
ZXR1cF9pbml0aWFsKAorICAgICAgICAgICAgY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4
ZjAzZTUxNTcwOCIpLAorICAgICAgICAgICAgaXNfY2xpZW50PWlzX2NsaWVudCwKKyAgICAgICAg
ICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorICAgICAgICByZXR1cm4g
cGFpcgorCisgICAgZGVmIHRlc3RfZGVyaXZlX2tleV9pdl9ocChzZWxmKToKKyAgICAgICAgIyBj
bGllbnQKKyAgICAgICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjhhMzUxNWExNGFlM2MzMWI5YzJkNmQ1YmM1ODUzOGNhNWNkMmJhYTExOTA4NzE0M2U2MDg4NzQy
OGRjYjUyZjYiCisgICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2
X2hwKElOSVRJQUxfQ0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoa2V5LCBiaW5hc2NpaS51bmhleGxpZnkoIjk4YjBkN2U1ZTdhNDAyYzY3YzMzZjM1MGZhNjVl
YTU0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgi
MTllOTQzODc4MDVlYjBiNDZjMDNhNzg4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAs
IGJpbmFzY2lpLnVuaGV4bGlmeSgiMGVkZDk4MmE2YWM1MjdmMmVkZGNiYjczNDhkZWE1ZDciKSkK
KworICAgICAgICAjIHNlcnZlcgorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxpZnko
CisgICAgICAgICAgICAiNDdiMmVhZWE2YzI2NmUzMmMwNjk3YTllMmE4OThiZGY1YzRmYjNlNWFj
MzRmMGU1NDliZjJjNTg1ODFhMzgxMSIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBocCA9
IGRlcml2ZV9rZXlfaXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWE4YmU5MDJhOWJkZDkx
ZDE2MDY0Y2ExMTgwNDVmYjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmluYXNj
aWkudW5oZXhsaWZ5KCIwYTgyMDg2ZDMyMjA1YmEyMjI0MWQ4ZGMiKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChocCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5NGI5NDUyZDJiM2M3YzdmNmRhN2Zk
ZDg1OTM1MzdmZCIpKQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJT
a2lwcGluZyBjaGFjaGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZGVjcnlwdF9jaGFjaGEyMChz
ZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0
dXAoCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEz
MDVfU0hBMjU2LAorICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAg
ICAgICAgICAgICAiYjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFh
MzMwZjg3ODY0Y2IyODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9u
PVBST1RPQ09MX1ZFUlNJT04sCisgICAgICAgICkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBs
YWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDI1LCAwCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIENIQUNIQTIwX0NMSUVOVF9Q
TEFJTl9IRUFERVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgQ0hB
Q0hBMjBfQ0xJRU5UX1BMQUlOX1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFj
a2V0X251bWJlciwgQ0hBQ0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVz
dF9kZWNyeXB0X2xvbmdfY2xpZW50KHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVf
Y3J5cHRvKGlzX2NsaWVudD1GYWxzZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3Bh
eWxvYWQsIHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAg
TE9OR19DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBsYWluX2hlYWRlciwgTE9OR19DTElFTlRfUExBSU5fSEVBREVSKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfQ0xJRU5UX1BMQUlO
X1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19D
TElFTlRfUEFDS0VUX05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19zZXJ2ZXIo
c2VsZik6CisgICAgICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUp
CisKKyAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0g
cGFpci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9Q
QUNLRVQsIDE4LCAwCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9o
ZWFkZXIsIExPTkdfU0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwbGFpbl9wYXlsb2FkLCBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhY2tldF9udW1iZXIsIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisK
KyAgICBkZWYgdGVzdF9kZWNyeXB0X25vX2tleShzZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0
b1BhaXIoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENyeXB0b0Vycm9yKToKKyAg
ICAgICAgICAgIHBhaXIuZGVjcnlwdF9wYWNrZXQoTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tF
VCwgMTgsIDApCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAg
ICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBz
ZWNyZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhj
MWMxYzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAg
ICAgKQorCisgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJl
ciA9IHBhaXIuZGVjcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfRU5DUllQ
VEVEX1BBQ0tFVCwgOSwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxh
aW5faGVhZGVyLCBTSE9SVF9TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBsYWluX3BheWxvYWQsIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldF9udW1iZXIsIFNIT1JUX1NFUlZFUl9QQUNLRVRfTlVN
QkVSKQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBj
aGFjaGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZW5jcnlwdF9jaGFjaGEyMChzZWxmKToKKyAg
ICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2
LAorICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAiYjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0
Y2IyODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09M
X1ZFUlNJT04sCisgICAgICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFj
a2V0KAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAg
ICAgIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgQ0hBQ0hBMjBf
Q0xJRU5UX1BBQ0tFVF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYWNrZXQsIENIQUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRl
c3RfZW5jcnlwdF9sb25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRl
X2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRf
cGFja2V0KAorICAgICAgICAgICAgTE9OR19DTElFTlRfUExBSU5fSEVBREVSLAorICAgICAgICAg
ICAgTE9OR19DTElFTlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BB
Q0tFVF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQs
IExPTkdfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xv
bmdfc2VydmVyKHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2Ns
aWVudD1GYWxzZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAg
ICAgICAgICAgTE9OR19TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19TRVJW
RVJfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfU0VSVkVS
X0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X3Nob3J0X3NlcnZlcihz
ZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0
dXAoCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAg
ICAgICAgICBzZWNyZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAy
ODE5NzdjYjhjMWMxYzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNh
MTAwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lP
TiwKKyAgICAgICAgKQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisg
ICAgICAgICAgICBTSE9SVF9TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgU0hPUlRf
U0VSVkVSX1BMQUlOX1BBWUxPQUQsCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfUEFDS0VUX05V
TUJFUiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgU0hPUlRf
U0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlbGYp
OgorICAgICAgICBwYWlyMSA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKyAg
ICAgICAgcGFpcjIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAg
ICAgIGRlZiBjcmVhdGVfcGFja2V0KGtleV9waGFzZSwgcGFja2V0X251bWJlcik6CisgICAgICAg
ICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwKQorICAgICAgICAgICAgYnVmLnB1c2hfdWlu
dDgoUEFDS0VUX0ZJWEVEX0JJVCB8IGtleV9waGFzZSA8PCAyIHwgMSkKKyAgICAgICAgICAgIGJ1
Zi5wdXNoX2J5dGVzKGJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIpKQorICAg
ICAgICAgICAgYnVmLnB1c2hfdWludDE2KHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICByZXR1
cm4gYnVmLmRhdGEsIGIiXHgwMFx4MDFceDAyXHgwMyIKKworICAgICAgICBkZWYgc2VuZChzZW5k
ZXIsIHJlY2VpdmVyLCBwYWNrZXRfbnVtYmVyPTApOgorICAgICAgICAgICAgcGxhaW5faGVhZGVy
LCBwbGFpbl9wYXlsb2FkID0gY3JlYXRlX3BhY2tldCgKKyAgICAgICAgICAgICAgICBrZXlfcGhh
c2U9c2VuZGVyLmtleV9waGFzZSwgcGFja2V0X251bWJlcj1wYWNrZXRfbnVtYmVyCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBlbmNyeXB0ZWQgPSBzZW5kZXIuZW5jcnlwdF9wYWNrZXQoCisg
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICApCisgICAgICAgICAgICByZWNvdl9oZWFkZXIsIHJlY292X3BheWxvYWQs
IHJlY292X3BhY2tldF9udW1iZXIgPSByZWNlaXZlci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAg
ICAgICAgICBlbmNyeXB0ZWQsIGxlbihwbGFpbl9oZWFkZXIpIC0gMiwgMAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9oZWFkZXIsIHBsYWluX2hlYWRl
cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGF5bG9hZCwgcGxhaW5fcGF5
bG9hZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGFja2V0X251bWJlciwg
cGFja2V0X251bWJlcikKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIx
LCBwYWlyMiwgMCkKKyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGFpcjEua2V5X3BoYXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhaXIyLmtleV9waGFzZSwgMCkKKworICAgICAgICAjIHBhaXIgMSBrZXkgdXBkYXRlCisgICAg
ICAgIHBhaXIxLnVwZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNl
bmQocGFpcjEsIHBhaXIyLCAxKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFpcjIua2V5X3BoYXNlLCAxKQorCisgICAgICAgICMgcGFpciAyIGtleSB1cGRh
dGUKKyAgICAgICAgcGFpcjIudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAg
ICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDIpCisgICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwYWlyMi5rZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEg
a2V5IC0gdXBkYXRlLCBidXQgbm90IG5leHQgdG8gc2VuZAorICAgICAgICBwYWlyMS51cGRhdGVf
a2V5KCkKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwg
MykKKyAgICAgICAgc2VuZChwYWlyMSwgcGFpcjIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFpcjEua2V5X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtl
eV9waGFzZSwgMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjY2Y2NWUxMTc0OThj
ZmRkNWIwN2JlZGUxZjA3NjNkMWNhMjBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2gwLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitmcm9tIHVuaXR0ZXN0IGltcG9y
dCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwg
SDBDb25uZWN0aW9uCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQs
IEhlYWRlcnNSZWNlaXZlZAorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVudF9h
bmRfc2VydmVyLCB0cmFuc2ZlcgorCisKK2RlZiBoMF9jbGllbnRfYW5kX3NlcnZlcigpOgorICAg
IHJldHVybiBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBu
X3Byb3RvY29scyI6IEgwX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJv
dG9jb2xzIjogSDBfQUxQTn0sCisgICAgKQorCisKK2RlZiBoMF90cmFuc2ZlcihxdWljX3NlbmRl
ciwgaDBfcmVjZWl2ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoMF9yZWNlaXZlci5fcXVpYwor
ICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNz
IFFVSUMgZXZlbnRzCisgICAgaHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNl
aXZlci5uZXh0X2V2ZW50KCkKKyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAg
aHR0cF9ldmVudHMuZXh0ZW5kKGgwX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAg
ICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9l
dmVudHMKKworCitjbGFzcyBIMENvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVz
dF9jb25uZWN0KHNlbGYpOgorICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMg
KHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoMF9jbGllbnQgPSBIMENv
bm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rp
b24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkK
KyAgICAgICAgICAgIGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBi
ImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBoMF9jbGllbnQuc2Vu
ZF9kYXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisK
KyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoMF90
cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5z
dGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRob2Qi
LCBiIkdFVCIpLCAoYiI6cGF0aCIsIGIiLyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNl
aXZlZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVh
bV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRl
ZCwgVHJ1ZSkKKworICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9z
ZXJ2ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQs
CisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0
dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5Pmhl
bGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAg
ICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJl
Y2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIi
PGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0
X2hlYWRlcnNfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigp
IGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0g
SDBDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25u
ZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAg
ICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9p
ZCgpCisgICAgICAgICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiks
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAg
ICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVy
cywgWyhiIjptZXRob2QiLCBiIkhFQUQiKSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3Ry
ZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2Vu
ZGVkLCBGYWxzZSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZl
bnRzWzFdLCBEYXRhUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMV0uZGF0YSwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0u
c3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1sxXS5zdHJlYW1fZW5kZWQsIFRydWUpCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQor
ICAgICAgICAgICAgaDBfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29u
dGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoMF90
cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5z
dGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9oMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMwOTRmZTk4
OThjNTQzMTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMu
cHkKQEAgLTAsMCArMSwxMjkyIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1w
b3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3Zh
cgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAgICBIM19BTFBOLAorICAg
IEVycm9yQ29kZSwKKyAgICBGcmFtZVR5cGUsCisgICAgRnJhbWVVbmV4cGVjdGVkLAorICAgIEgz
Q29ubmVjdGlvbiwKKyAgICBTdHJlYW1UeXBlLAorICAgIGVuY29kZV9mcmFtZSwKKykKK2Zyb20g
YWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQ
dXNoUHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9B
dmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBv
cnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3Ry
ZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dn
ZXIKKworZnJvbSAudGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJh
bnNmZXIKKworCitkZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4gY2xpZW50
X2FuZF9zZXJ2ZXIoCisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBI
M19BTFBOfSwKKyAgICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FM
UE59LAorICAgICkKKworCitkZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVy
KToKKyAgICBxdWljX3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKKyAgICBpZiBoYXNhdHRy
KHF1aWNfc2VuZGVyLCAic3RyZWFtX3F1ZXVlIik6CisgICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2
ZW50cy5leHRlbmQocXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQorICAgICAgICBxdWljX3NlbmRl
ci5zdHJlYW1fcXVldWUuY2xlYXIoKQorICAgIGVsc2U6CisgICAgICAgIHRyYW5zZmVyKHF1aWNf
c2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCisgICAg
aHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkK
KyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5k
KGgzX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0gcXVpY19y
ZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitjbGFzcyBG
YWtlUXVpY0Nvbm5lY3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24p
OgorICAgICAgICBzZWxmLmNsb3NlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCisgICAgICAg
IHNlbGYuX2V2ZW50cyA9IFtdCisgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlm
IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVh
bV91bmkgPSAyIGlmIGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMworICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKKyAgICAgICAgICAgIGlz
X2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCisgICAgICAgICkKKwor
ICAgIGRlZiBjbG9zZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKKyAgICAgICAg
c2VsZi5jbG9zZWQgPSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKKworICAgIGRlZiBnZXRf
bmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToK
KyAgICAgICAgaWYgaXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBz
ZWxmLl9uZXh0X3N0cmVhbV91bmkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSAr
PSA0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0
cmVhbV9iaWRpCisgICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKKyAgICAg
ICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIG5leHRfZXZlbnQoc2VsZik6CisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCisgICAgICAgIGV4
Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZW5k
X3N0cmVhbV9kYXRhKHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6Cisg
ICAgICAgICMgY2hvcCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcworICAgICAgICBmb3Ig
YyBpbiBkYXRhOgorICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1i
eXRlcyhbY10pLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAg
ICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0cmVhbURh
dGFSZWNlaXZlZChkYXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3Ry
ZWFtX2lkKQorICAgICAgICAgICAgKQorCisKK2NsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENh
c2UpOgorICAgIG1heERpZmYgPSBOb25lCisKKyAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBo
M19jbGllbnQsIGgzX3NlcnZlcik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9x
dWljCisgICAgICAgIHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCisKKyAgICAgICAgIyBz
ZW5kIHJlcXVlc3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAg
ICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAg
ICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNj
aGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2Nh
bGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAg
ICAgIChiIngtZm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAg
ICAgICAgaDNfY2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwg
ZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2
ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsK
KyAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVk
PUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVk
KGRhdGE9YiIiLCBzdHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAg
IGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIi
MjAwIiksCisgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisg
ICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgZGF0YT1iIjxodG1s
Pjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVl
LAorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgIGV2ZW50
cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNv
bnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
MiwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRS
T0wpCisgICAgICAgICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIi
IiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQs
ICJJbnZhbGlkIGZyYW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIo
c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUg
TUFYX1BVU0hfSUQgb24gdGhlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAg
cXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAg
IGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGll
bnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKFN0cmVhbVR5cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShG
cmFtZVR5cGUuTUFYX1BVU0hfSUQsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29k
ZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hf
SUQiKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1
cGxpY2F0ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZl
IGEgc2luZ2xlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2
ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2
ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmly
c3QgY29udHJvbCBzdHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9Miwg
ZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxz
ZQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25k
IGNvbnRyb2wgc3RyZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAg
ICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAg
ICAgIEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAiT25seSBvbmUgY29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90
eXBlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBT
RVRUSU5HUyBvbiBhIHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGll
bnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxl
X2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJl
YW1UeXBlLlBVU0gpCisgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVz
aCBJRAorICAgICAgICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywg
YiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2Ns
aWVudC5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RF
RCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVy
IHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25u
ZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19j
bGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24o
cXVpY19jbGllbnQpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0K
KyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAg
ZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAg
ICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAg
ICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVu
dC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgc3RyZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAg
ICAgICAgICAgICAiT25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCisg
ICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVj
b2Rlcl9zdHJlYW1fZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZpbmcg
Z2FyYmFnZSBvbiB0aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9u
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1U
cnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2Ns
aWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3Ry
ZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsg
YiJceDAwIiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAg
KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWlj
X2NsaWVudC5jbG9zZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJP
UiwgIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1
cGxpY2F0ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZl
IGEgc2luZ2xlIFFQQUNLIGVuY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVp
Y19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9u
PVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUg
YSBmaXJzdCBlbmNvZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD0xMSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQ
QUNLX0VOQ09ERVIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAg
ICAgICApCisgICAgICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBz
dHJlYW0KKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAg
ICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFN
X0NSRUFUSU9OX0VSUk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVy
IHN0cmVhbSBpcyBhbGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVh
bSB0cmlnZ2VycyBhbiBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVu
dCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50
ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVf
ZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPTcsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFt
VHlwZS5RUEFDS19FTkNPREVSKSArIGIiXHgwMCIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBB
Q0tfRU5DT0RFUl9TVFJFQU1fRVJST1IsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcmVxdWVzdF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAg
ICAgIFdlIHNob3VsZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVk
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNv
ZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcXVpY19zZXJ2ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lP
Tl9GQUlMRUQsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9m
cmFtZV9kYXRhX2JlZm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ug
c2hvdWxkIG5vdCByZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgorICAgICAg
ICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAg
ICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisK
KyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUo
RnJhbWVUeXBlLkRBVEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQ
X0ZSQU1FX1VORVhQRUNURUQsCisgICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFs
bG93ZWQgaW4gdGhpcyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYp
OgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0
ZXIgcmVjZWl2aW5nIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVy
ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29u
ZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGll
bnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVh
ZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAg
ICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3Jp
dHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisg
ICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMo
CisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJh
aWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgKQorICAgICAgICBoM190
cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5k
bGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIp
LCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAor
ICAgICAgICAgICAgICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3Rh
dGUiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jl
cXVlc3RfZnJhbWVfcHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgQSBzZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJl
cXVlc3Qgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
MCwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9N
SVNFLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAg
ICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1
aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVY
UEVDVEVELCAiQ2xpZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAorICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNl
bGYpOgorICAgICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICApCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKwor
ICAgICAgICBoM19zZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJl
Y2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRh
dGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAgICAgICAgICAg
ICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAg
ICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlw
ZSBvbiByZXF1ZXN0IHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0
KHNlbGYpOgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xp
ZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24o
cXVpY19jbGllbnQpCisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0CisgICAgICAgICAgICBz
ZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMg
bWFrZSBzZWNvbmQgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2Ns
aWVudCwgaDNfc2VydmVyKQorCisgICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBk
eW5hbWljIHRhYmxlCisgICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBo
M19zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKKyAg
ICAgICAgd2l0aCBoM19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19z
ZXJ2ZXIpOgorICAgICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50
KQorICAgICAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisg
ICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19j
bGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGll
bnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2Qi
LCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAg
ICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgIChi
IngtZm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZl
IHJlcXVlc3QKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBo
M19zZXJ2ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25z
ZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
Y29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIHJlY2VpdmUgcmVzcG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1
aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNl
cnZlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2Vs
Zik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAg
ICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAg
ICAgKQorICAgICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICApCisKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
ICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAg
IyBzZW5kIHJlcXVlc3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRf
YXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIi
OnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJs
b2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAg
ICAgICAgIChiIngtZm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkK
KyAgICAgICAgaDNfY2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIi
aGVsbG8iLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAg
ICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhl
YWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRh
UmVjZWl2ZWQoZGF0YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAg
ICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFt
X2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBz
dHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVj
ZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAg
ICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2Vu
ZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVh
bV9pZD0wLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgz
X3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwg
YiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAg
ICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAg
IChiIjpwYXRoIiwgYiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKKworICAgICAgICAjIHNl
bmQgcmVzcG9uc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
IHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5
cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNl
bmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1
ZSkKKworICAgICAgICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKKyAgICAgICAgaDNfc2VydmVy
LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKKyAg
ICAgICAgICAgIGhlYWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUi
LCBiInRleHQvcGxhaW4iKV0sCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lk
LCBkYXRhPWIidGV4dCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcHVz
aCBwcm9taXNlIC8gcmVwb25zZQorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ZXZlbnRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2
ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIs
IGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2Fw
cC50eHQiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgcHVz
aF9pZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMi
LCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNl
aXZlZChkYXRhPWIiaCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAg
ICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5k
ZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVh
bV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZl
ZChkYXRhPWIibCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAg
ICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1U
cnVlKSwKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgIGhlYWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRl
eHQvcGxhaW4iKV0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwdXNo
X2lkPTAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQo
ZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwK
KyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0
cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2
ZWQoZGF0YT1iIngiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0w
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUs
IHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVj
ZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9
MCksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dp
dGhfc2VydmVyX3B1c2goc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAg
ICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1f
aWQoKQorICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiks
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAg
ICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1l
IiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHki
LCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAg
ICAgIHB1c2hfc3RyZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpw
YXRoIiwgYiIvYXBwLmNzcyIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCisKKyAg
ICAgICAgICAgIHB1c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNl
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCisK
KyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRf
aGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAi
KSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9k
YXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAg
ICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyDCoGZ1
bGZpbGwgcHVzaCBwcm9taXNlcworICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygK
KyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBi
InRleHQvY3NzIildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgZGF0YT1iImJv
ZHkgeyBjb2xvcjogcGluayB9IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAg
IGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAg
ICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZh
bHNlLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgn
aG93ZGVlJyk7IiwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSBwdXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKKwor
ICAgICAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAor
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnBhdGgiLCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdF
VCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
X2lkPTEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48
L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQt
dHlwZSIsIGIidGV4dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXB1c2hfc3RyZWFtX2lkX2NzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFk
ZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkPTEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1f
aWRfanMsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1wdXNoX3N0cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4
X3B1c2hfaWQoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29u
bmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlv
bihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAg
IHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQor
ICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNj
aGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIi
bG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAg
ICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVu
dHMgPSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9k
IiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJo
dHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxv
Y2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiks
CisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGZv
ciBpIGluIHJhbmdlKDAsIDgpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hf
cHJvbWlzZSgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1h
dChpKS5lbmNvZGUoImFzY2lpIikpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQorICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKKyAgICAgICAg
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLzguY3NzIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYp
OgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJh
aWxlcnMuCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVj
dGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1
aWNfY2xpZW50KQorCisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAg
ICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9j
YWxob3N0IiksCisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJm
b28iKV0sIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEZyYW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9k
YXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2Up
CisKKyAgICBkZWYgdGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVk
KToKKyAgICAgICAgICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwg
ZGF0YT1iImhlbGxvIiwgZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfaGVh
ZGVyc19hZnRlcl90cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3Vs
ZCBub3Qgc2VuZCBIRUFERVJTIGFmdGVyIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAg
cXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAg
IGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1f
aWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQs
CisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAg
ICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2Ns
aWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFk
ZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCisgICAg
ICAgICkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgor
ICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJh
aWxlciIsIGIiZm9vIildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAg
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKKyAgICAgICAg
cXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0
aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAg
IGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGll
bnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5o
ZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2
NDA5MTA0MGJjYzAwMDAwMDBmYWNlYjAwYyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZChzdHJlYW1faWQ9NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICAp
CisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoc3RyZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5h
c2NpaS51bmhleGxpZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAg
ICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwK
KyAgICAgICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgIjAwNDA4ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJj
MjA3MjY1NjE2MzY4MjAiCisgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYy
MDY1NmU2NDcwNmY2OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAg
ICAgICAgICAgICAiNjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIz
ZTIwNjU2ZTY0NzA2ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYx
MjA3NjYxNzI2OTYxNjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCisgICAg
ICAgICAgICAgICAgICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAgICAgICAg
ICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIzZmUx
MDFjNjk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAg
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdN
VCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3Qu
bmV0LCByZWFjaCB0aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGIiZWNobyByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZh
cmlhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJh
bmRvbSBieXRlcyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVz
dF9ibG9ja2VkX3N0cmVhbV90cmFpbGVyKHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZh
a2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3Vy
YXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDND
b25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPTMsCisgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAg
ICAgICAgICAgICAgICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAw
MGZhY2ViMDBjIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFu
ZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBk
YXRhPWIiXHgwMiIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1f
aWQ9MTEsIGRhdGE9YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50
KAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KAorICAgICAgICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0
Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJz
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVj
ZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIw
MDQwOGQ3OTZmNzUyMDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYx
NjM2ODIwIgorICAgICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2
ZTY0NzA2ZjY5NmU3NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCisgICAgICAgICAgICAg
ICAgICAgICAgICAiNjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIz
ZTIwNjU2ZTY0NzA2ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2Zjcy
MjA2MTIwNzY2MTcyNjk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3Igor
ICAgICAgICAgICAgICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTcz
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFt
PUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRh
PSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFj
aCB0aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIi
ZWNobyByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRl
cyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAg
ICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwg
ZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFtdLAorICAgICAg
ICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5o
YW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5h
c2NpaS51bmhleGxpZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKKyAgICAgICAg
ICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIp
XSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAg
IHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRl
c3RfdW5pX3N0cmVhbV9ncmVhc2Uoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX3Nl
cnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgcXVpY19jbGll
bnQuc2VuZF9zdHJlYW1fZGF0YSgKKyAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3Nl
cnZlciksIFtdKQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgor
ICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWlj
X3NlcnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGll
bnQpCisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisK
KyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKKyAgICAgICAgICAgIHN0
cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAg
ICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVt
ZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9j
YWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29t
ZS10cmFpbGVyIiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAor
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAg
ICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVt
ZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5
IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngt
c29tZS10cmFpbGVyIiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIu
c2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBi
IjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgz
X3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9p
ZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIild
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFu
c2ZlcihxdWljX3NlcnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9
YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngt
c29tZS10cmFpbGVyIiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBo
M19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAg
ICAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAg
ICAgICAjIHVua25vd24gc3RyZWFtIHR5cGUgOQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1U
cnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAg
ICAgICBxdWljX2NsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3Nl
cnZlciksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5f
c3RyZWFtLmtleXMoKSksIFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2Vy
dmVyLl9zdHJlYW1bMl0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGgzX3NlcnZlci5fc3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorCisgICAgICAgICAgICAjIHVu
a25vd24gc3RyZWFtIHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQorICAgICAgICAgICAgc3Ry
ZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlk
aXJlY3Rpb25hbD1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQs
IDYpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lk
LCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwg
YiJceDQwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1b
Nl0uc3RyZWFtX3R5cGUsIE5vbmUpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIs
IGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0u
c3RyZWFtX3R5cGUsIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzZdLmJ1ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19z
ZXJ2ZXIuX3N0cmVhbVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmI3YzUyMDkzOGUyY2YyNGFlYjc2YjkxOWQ5NjdhZmJjNmM2ZWVlMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQpAQCAt
MCwwICsxLDM3IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1
aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBRdWljTG9nZ2VyVGVz
dChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIGxvZ2dlciA9
IFF1aWNMb2dnZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci50b19kaWN0KCks
IHsicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwgInRyYWNlcyI6IFtdfSkKKworICAgIGRlZiB0
ZXN0X2VtcHR5X3RyYWNlKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAg
ICAgICAgdHJhY2UgPSBsb2dnZXIuc3RhcnRfdHJhY2UoaXNfY2xpZW50PVRydWUsIG9kY2lkPWJ5
dGVzKDgpKQorICAgICAgICBsb2dnZXIuZW5kX3RyYWNlKHRyYWNlKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgbG9nZ2VyLnRvX2RpY3QoKSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAg
ICAgICAidHJhY2VzIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAiY29tbW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
T0RDSUQiOiAiMDAwMDAwMDAwMDAwMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InJlZmVyZW5jZV90aW1lIjogIjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0s
CisgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRfZmllbGRzIjogWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZWxhdGl2ZV90aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2F0ZWdvcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF90eXBl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyI6IFtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgInZhbnRhZ2VfcG9pbnQiOiB7Im5hbWUiOiAiYWlvcXVpYyIsICJ0
eXBlIjogImNsaWVudCJ9LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X3BhY2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNjliN2FhOWE2MTk3NjdhN2Y1YzAzNWY3NzMwZmYzNzFkN2Q1Zjc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CkBAIC0wLDAg
KzEsNTEzIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yCitm
cm9tIGFpb3F1aWMucXVpYyBpbXBvcnQgcGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQg
aW1wb3J0ICgKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZ
LAorICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNzLAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisg
ICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMsCisgICAgZGVjb2RlX3BhY2tldF9udW1iZXIsCisg
ICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBnZXRfcmV0cnlfaW50ZWdy
aXR5X3RhZywKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY19wcmVmZXJyZWRf
YWRkcmVzcywKKyAgICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAgcHVzaF9x
dWljX3ByZWZlcnJlZF9hZGRyZXNzLAorICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVy
cywKKykKKworZnJvbSAudXRpbHMgaW1wb3J0IGxvYWQKKworCitjbGFzcyBQYWNrZXRUZXN0KFRl
c3RDYXNlKToKKyAgICBkZWYgdGVzdF9kZWNvZGVfcGFja2V0X251bWJlcihzZWxmKToKKyAgICAg
ICAgIyBleHBlY3RlZCA9IDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0
ZWQ9MCksIGkpCisKKyAgICAgICAgIyBleHBlY3RlZCA9IDEyOAorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKDAsIDgsIGV4cGVjdGVkPTEyOCksIDI1NikKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI4KSwgaSkKKworICAgICAg
ICAjIGV4cGVjdGVkID0gMTI5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tl
dF9udW1iZXIoMCwgOCwgZXhwZWN0ZWQ9MTI5KSwgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKDEsIDgsIGV4cGVjdGVkPTEyOSksIDI1NykKKyAgICAg
ICAgZm9yIGkgaW4gcmFuZ2UoMiwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI5KSwgaSkKKworICAgICAgICAj
IGV4cGVjdGVkID0gMjU2CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDEyOCk6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVk
PTI1NiksIDI1NiArIGkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOSwgMjU2KToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0
ZWQ9MjU2KSwgaSkKKworICAgIGRlZiB0ZXN0X3B1bGxfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZm
ZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lk
X2xlbmd0aD04KQorCisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX2NsaWVudChzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9jbGllbnQuYmluIikpCisgICAg
ICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8y
NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9U
WVBFX0lOSVRJQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9u
X2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCI4NThiMzkzNjhiOGUzYzZlIikpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIiIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWFkZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIuaW50ZWdyaXR5X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5y
ZXN0X2xlbmd0aCwgMTI2MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAx
OCkKKworICAgIGRlZiB0ZXN0X3B1bGxfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoImluaXRpYWxfc2VydmVyLmJpbiIpKQorICAgICAgICBoZWFk
ZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklU
SUFMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWku
dW5oZXhsaWZ5KCIxOTVjNjgzNDRlMjhkNDc5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVhZGVyLnRva2VuLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVn
cml0eV90YWcsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5n
dGgsIDE4NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAg
IGRlZiB0ZXN0X3B1bGxfcmV0cnkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxv
YWQoInJldHJ5LmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1Ziwg
aG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9u
Z19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQ
cm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImU5ZDE0NmQ4ZDE0
Y2IyOGUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5z
b3VyY2VfY2lkLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KCIwYjBhMjA1YTY0OGZj
ZjgyZDg1ZjEyOGI2N2JiZTA4MDUzZTYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgaGVhZGVyLnRva2VuLAorICAgICAgICAgICAgYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI0NDM5N2EzNWQ2OTgzOTNjMTM0YjA4YTkzMjcz
Nzg1OWY0NDZkM2FhZGQwMGVkODE1NDBjOGQ4ZGUxNzIiCisgICAgICAgICAgICAgICAgIjkwNmQz
ZTdhMTExYjUwM2Y5NzI5Yjg5MjhlNzUyOGY5YTg2YTQ1ODFmOWViYjRjYjNiNTNjMjgzNjYxZSIK
KyAgICAgICAgICAgICAgICAiODUzMDc0MWE5OTE5MmVlNTY5MTRjNTYyNjk5OGVjMGYiCisgICAg
ICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWFkZXIuaW50ZWdyaXR5X3RhZywgYmluYXNjaWkudW5oZXhsaWZ5KCJlMWEzYzgwYzc5
N2VhNDAxYzA4ZmM5YzM0MmEyZDkwZCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVm
LnRlbGwoKSwgMTI1KQorCisgICAgICAgICMgY2hlY2sgaW50ZWdyaXR5CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAg
ICAgICAgICAgICBidWYuZGF0YV9zbGljZSgwLCAxMDkpLCBiaW5hc2NpaS51bmhleGxpZnkoImZi
YmQyMTliNzM2M2I2NGIiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBoZWFkZXIuaW50
ZWdyaXR5X3RhZywKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVsbF92ZXJzaW9uX25lZ290
aWF0aW9uKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ2ZXJzaW9uX25l
Z290aWF0aW9uLmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1Ziwg
aG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9u
Z19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVh
ZGVyLnBhY2tldF90eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5k
ZXN0aW5hdGlvbl9jaWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51bmhl
eGxpZnkoImY5MmY0MzM2ZmE5NTFiYTEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5
X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyMykKKworICAgIGRlZiB0
ZXN0X3B1bGxfbG9uZ19oZWFkZXJfZGNpZF90b29fbG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKAorICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAgICAgImM2ZmYwMDAwMTYxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDA0IgorICAgICAgICAgICAgICAgICIwMWM1MTRmOTllYzRiYmYxZjdhMzBmOWIwYzk0
ZmVmNzE3ZjFjMWQwN2ZlYzI0Yzk5YTg2NGRhN2VkZSIKKyAgICAgICAgICAgICkKKyAgICAgICAg
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGVzdGluYXRpb24gQ0lEIGlz
IHRvbyBsb25nICgyMSBieXRlcykiKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9z
Y2lkX3Rvb19sb25nKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBk
YXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYzJmZjAwMDAxNjAwMTUw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAg
ICAgICAgIjAxY2ZjZWU5OWVjNGJiZjFmN2EzMGY5YjBjOTQxN2I4YzI2M2NkZDhjYzk3MmE0NDM5
ZDY4YTQ2MzIwIgorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVh
ZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KGNtLmV4Y2VwdGlvbiksICJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICgyMSBieXRlcykiKQorCisg
ICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHg4MFx4ZmZceDAwXHgwMFx4MTFceDAwXHgwMCIpCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAg
ICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8i
KQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl90b29fc2hvcnQoc2VsZik6CisgICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhjMFx4MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVy
KGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hlYWRl
cihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgic2hvcnRfaGVhZGVyLmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBOb25lKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgMHg1MCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY0
NWFhN2I1OWMwZTFhZDYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNl
X2NpZCwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA5KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9o
ZWFkZXJfbm9fZml4ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4
MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgor
ICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJp
dCBpcyB6ZXJvIikKKworICAgIGRlZiB0ZXN0X2VuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRp
b24oc2VsZik6CisgICAgICAgIGRhdGEgPSBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9u
KAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVh
NDliYTg3YTg0OSIpLAorICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnko
ImY5MmY0MzM2ZmE5NTFiYTEiKSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHg0
NTQ3NDcxNiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNV0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhWzE6XSwgbG9hZCgidmVyc2lvbl9uZWdvdGlhdGlvbi5i
aW4iKVsxOl0pCisKKworY2xhc3MgUGFyYW1zVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9
IE5vbmUKKworICAgIGRlZiB0ZXN0X3BhcmFtcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFz
Y2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMTAyNjcxMDAyMTBjYzJmZDZlN2Q5N2E1M2Fi
NWJlODViMjhkNzVjODAwODAzMDI0N2U0MDQwNDgwMDVmZmYiCisgICAgICAgICAgICAiYTA1MDQ4
MDAwZmZmZjA2MDQ4MDAwZmZmZjA4MDEwNjBhMDEwMzBiMDExOSIKKyAgICAgICAgKQorCisgICAg
ICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFy
YW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBw
cm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAg
ICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0
PTEwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhk
Nlx4ZTdceGQ5elNceGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBt
YXhfcGFja2V0X3NpemU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5
MzIxMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2Fs
PTY1NTM1LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlPTY1NTM1LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1O
b25lLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAg
YWNrX2RlbGF5X2V4cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVy
c2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9w
YXJhbXNfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgIjAwNDcwMDAyMDAxMGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4
MDAwODAwMDEwNjAwMDEwMDAyNiIKKyAgICAgICAgICAgICI3MTAwMDA2MDAwNDgwMDBmZmZmMDAw
NTAwMDQ4MDAwZmZmZjAwMDQwMDA0ODAwNWZmZmEwMDBhMDAwMTAzMDAiCisgICAgICAgICAgICAi
MGIwMDAxMTkwMDAzMDAwMjQ3ZTQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1R
dWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwKKyAgICAgICAg
ICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhkOXpTXHhhYltc
eGU4WyhceGQ3XFxceDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTIw
MjAsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisgICAgICAgICAg
ICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwKKyAgICAgICAg
ICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUzNSwKKyAgICAg
ICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAgICAgICAgICAg
ICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAgICBpbml0aWFs
X21heF9zdHJlYW1zX3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVu
dD0zLAorICAgICAgICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNh
cGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29s
VmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGJ1Zi5kYXRhKSwgbGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2Rpc2FibGVfYWN0
aXZlX21pZ3JhdGlvbihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgi
MGMwMCIpCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRh
KQorICAgICAgICBwYXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAg
ICAgICAgICBidWYsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8y
NworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNw
b3J0UGFyYW1ldGVycyhkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAg
IyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAg
ICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBw
YXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBk
ZWYgdGVzdF9wYXJhbXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uX2xlZ2FjeShzZWxmKToKKyAg
ICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwNDAwMGMwMDAwIikKKworICAgICAg
ICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFt
cyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJv
dG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRp
c2FibGVfYWN0aXZlX21pZ3JhdGlvbj1UcnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAg
ICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNf
dHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19w
cmVmZXJyZWRfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICIwZDNiOGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZm
ZmU2OWE0NTQxMTUzMTI2MmM0NTE4ZDYiCisgICAgICAgICAgICAiMzAxM2YwYzI4N2VkMzU3M2Vm
YTkwOTU2MDM3NDZiMmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKwor
ICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAg
IHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1
ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAg
ICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIHByZWZlcnJl
ZF9hZGRyZXNzPVF1aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpcHY0
X2FkZHJlc3M9KCIxMzkuMTYyLjEyMy4xMzQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAg
aXB2Nl9hZGRyZXNzPSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisg
ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+
XHhkM1c+XHhmYVx4OTBceDk1YDciLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW49YiJGXHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlh
bGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwMCkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfcHJlZmVycmVkX2FkZHJlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwM2YwMDBkMDAzYjhiYTI3Yjg2MTE1MzI0MDA4
OTAyMDAwMDAwMDBmMDNjOTFmZmZlNjlhNDU0MTE1MzEyNiIKKyAgICAgICAgICAgICIyYzQ1MThk
NjMwMTNmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDgi
CisgICAgICAgICAgICAiZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1
aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBh
cmFtZXRlcnMoCisgICAgICAgICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJl
ZEFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIz
LjEzNCIsIDQ0MzUpLAorICAgICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5
MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbl9pZD1iImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIs
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1F
SFx4MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQ
cm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd24oc2VsZik6
CisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjgwMDBmZjAwMDEwMCIpCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBw
YXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYs
IHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cygpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd25fbGVnYWN5KHNlbGYpOgorICAgICAg
ICAjIGZiLm12ZnN0Lm5ldCBzZW5kcyBhIHByb3ByaWV0YXJ5IHBhcmFtZXRlciA2NTI4MAorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwNjQwMDA1MDAw
NDgwMDEwNDAwMDAwNjAwMDQ4MDAxMDQwMDAwMDcwMDA0ODAwMTA0MDAwMDA0MDAwNDgwMSIKKyAg
ICAgICAgICAgICIwMDAwMDAwMDgwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDkwMDA4YzAwMDAwMDBm
ZmZmZmZmZjAwMDEwMDA0ODAiCisgICAgICAgICAgICAiMDBlYTYwMDAwYTAwMDEwMzAwMDMwMDAy
NTAwMDAwMDIwMDEwNjE2MTYxNjE2MjYyNjI2MjYzNjM2MzYzNjQ2IgorICAgICAgICAgICAgIjQ2
NDY0ZmYwMDAwMDEwMCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90
b2NvbFZlcnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRl
cnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTYwMDAwLAorICAgICAgICAgICAgICAg
IHN0YXRlbGVzc19yZXNldF90b2tlbj1iImFhYWFiYmJiY2NjY2RkZGQiLAorICAgICAgICAgICAg
ICAgIG1heF9wYWNrZXRfc2l6ZT00MDk2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2Rh
dGE9MTA0ODU3NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRp
X2xvY2FsPTY2NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2Jp
ZGlfcmVtb3RlPTY2NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRh
X3VuaT02NjU2MCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NDI5
NDk2NzI5NSwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT00Mjk0OTY3
Mjk1LAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2NF9vbmx5
KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjhiYTI3Yjg2MTE1MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyNjJjNDUx
OGQ2MzAxMyIKKyAgICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0
ODBiYTY2NDNlNWM2ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9
IHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1aWNQcmVm
ZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIz
LjEzNCIsIDQ0MzUpLAorICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz1Ob25lLAorICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhm
YVx4OTBceDk1YDciLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZc
eGIyXHhlMC1FSFx4MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNp
dHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmLCBw
cmVmZXJyZWRfYWRkcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0
YSkKKworICAgIGRlZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjZfb25seShzZWxmKToKKyAg
ICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDAwMDAwMDAw
MDAyNDAwODkwMjAwMDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNjMwMTMiCisg
ICAgICAgICAgICAiZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVj
NmU3ZDQ4ZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1aWNf
cHJlZmVycmVkX2FkZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcHJlZmVycmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRkcmVz
cygKKyAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBp
cHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNX
Plx4ZmFceDkwXHg5NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49
YiJGXHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNh
cGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1
ZiwgcHJlZmVycmVkX2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGRhdGEpCisKKworY2xhc3MgRnJhbWVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hY2tf
ZnJhbWUoc2VsZik6CisgICAgICAgIGRhdGEgPSBiIlx4MDBceDAyXHgwMFx4MDAiCisKKyAgICAg
ICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5n
ZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFt
ZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZShzZWxmKToK
KyAgICAgICAgZGF0YSA9IGIiXHgwMlx4MDJceDAxXHgwMFx4MDBceDAwIgorCisgICAgICAgICMg
cGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQs
IGRlbGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKV0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hf
YWNrX2ZyYW1lKGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3Jhbmdl
XzIoc2VsZik6CisgICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAwXHgwMyIKKwor
ICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAg
IHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KSwgcmFuZ2UoNSwgNild
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFs
aXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBh
Y2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRo
X29uZV9yYW5nZV8zKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgw
MVx4MDIiCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRh
KQorICAgICAgICByYW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyksIHJh
bmdlKDUsIDYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAg
ICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQor
ICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tf
ZnJhbWVfd2l0aF90d29fcmFuZ2VzKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA0XHgwMlx4
MDJceDAwXHgwMFx4MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxs
X2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCks
IFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyksIHJhbmdlKDQsIDUpXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYg
PSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJh
bWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRh
dGEsIGRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVp
bGRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQzZTIzMTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVjNmY3Y2FkODkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpAQCAt
MCwwICsxLDU2OSBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9x
dWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5wYWNr
ZXQgaW1wb3J0ICgKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVf
SU5JVElBTCwKKyAgICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFF1aWNGcmFtZVR5cGUsCisg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbiwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWls
ZGVyIGltcG9ydCAoCisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tldEJ1aWxk
ZXJTdG9wLAorICAgIFF1aWNTZW50UGFja2V0LAorKQorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
RXBvY2gKKworCitkZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKKyAgICByZXR1
cm4gUXVpY1BhY2tldEJ1aWxkZXIoCisgICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAorICAgICAg
ICBpc19jbGllbnQ9aXNfY2xpZW50LAorICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAg
IHBlZXJfY2lkPWJ5dGVzKDgpLAorICAgICAgICBwZWVyX3Rva2VuPWIiIiwKKyAgICAgICAgc3Bp
bl9iaXQ9RmFsc2UsCisgICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8y
NSwKKyAgICApCisKKworZGVmIGNyZWF0ZV9jcnlwdG8oKToKKyAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKKyAgICBjcnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRydWUs
IHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICByZXR1cm4gY3J5cHRv
CisKKworY2xhc3MgUXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVz
dF9sb25nX2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWls
ZGVyKCkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRl
ci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMg
Y2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1
c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRl
cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKwor
ICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIg
PSBjcmVhdGVfYnVpbGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRl
X2NyeXB0bygpCisKKyAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKKyAgICAgICAgYnVp
bGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5Cisg
ICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAg
ICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxk
ZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBv
Y2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
bnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWls
ZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQor
CisgICAgZGVmIHRlc3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKKyAgICAg
ICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjcnlw
dG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisg
ICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2Us
IDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5D
UllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2Zs
aWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNf
ZW1wdHkpCisKKyAgICAgICAgIyBJTklUSUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0
KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxk
ZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKGJ5dGVzKDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0
YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZGF0YWdyYW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1Nl
bnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElB
TCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAgIGRlZiB0ZXN0
X2xvbmdfaGVhZGVyX2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3Jl
YXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAg
ICAjIElOSVRJQUwKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5J
VElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShR
dWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAg
ICAgICAjIElOSVRJQUwsIGVtcHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tF
VF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIu
cGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRh
dGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXNbMF0pLCAxNDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBw
YWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAg
ICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGlu
Zz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFj
a2V0X3R5cGU9UEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9i
eXRlcz0xNDUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQor
CisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxk
ZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fc2hv
cnRfaGVhZGVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAg
ICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwg
bGVuZ3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUws
IGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5w
YWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWls
ZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9S
VFQsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGVtcHR5
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0
bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisg
ICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1
aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9
RXBvY2guSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAg
ICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVt
YmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJ
QUwsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAg
ICBlcG9jaD1FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAg
ICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBw
YWNrZXRfbnVtYmVyPTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9U
WVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hl
Y2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJl
ciwgMikKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2VsZik6
CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNy
ZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0
X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYg
PSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhieXRlcygxOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIu
cGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgSEFORFNIQUtFCisgICAgICAgIGJ1aWxkZXIu
c3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQorICAgICAg
ICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAg
ICBidWYucHVzaF9ieXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1
aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgT05FX1JUVAorICAgICAgICBidWls
ZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCisgICAg
ICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
YnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAg
ICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtc1swXSksIDkxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQ
YWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tf
ZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAg
ICBzZW50X2J5dGVzPTI0NCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIFF1
aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hBS0Us
CisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19w
YWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAg
ICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MzQzLAorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2No
Lk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAg
ICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlz
X2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0y
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAor
ICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTMyNywKKyAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKKworICAgIGRl
ZiB0ZXN0X3Nob3J0X2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0
ZV9idWlsZGVyKCkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAg
ICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxk
ZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWls
ZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQor
CisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxk
ZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQor
CisgICAgICAgICMgT05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNo
ZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNo
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2No
Lk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAg
ICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlz
X2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0w
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAor
ICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRl
ZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgorICAgICAgICAiIiIK
KyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhf
ZmxpZ2h0X2J5dGVzID0gMTAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQor
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0
bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UsIDk3MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBl
LkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdf
ZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9p
c19lbXB0eSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWls
ZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9P
TkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFt
ZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXNbMF0pLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFj
a2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAg
ICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAg
ICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0
ZXM9MTAwMCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQor
CisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxk
ZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxp
Z2h0X2J5dGVzX3plcm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5
dGVzID0gMCBvbmx5IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgorCisgICAgICAg
IENoZWNrIENSWVBUTyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxk
ZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9
IDAKKworICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWls
ZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgICAg
ICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMg
Y2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1
c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorCisgICAg
ICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFj
a2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5
dGVzX3plcm9fYWNrKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRl
cyA9IDAgb25seSBhbGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBD
aGVjayBBQ0sgaXMgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVh
dGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAg
ICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIu
c3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5BQ0spCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5
dGVzKDY0KSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWls
ZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9P
TkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFt
ZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXNbMF0pLCA5MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tl
dHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAg
ICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAg
IGluX2ZsaWdodD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5
dGVzPTkyLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisK
KyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRl
ci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3Rh
bF9ieXRlc18xKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGRv
ZXNuJ3QgYWxsb3cgYW55IHBhY2tldHMuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0g
Y3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDExCisK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5z
dGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hl
Y2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2go
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVm
IHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KKyAgICAgICAg
IiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIu
bWF4X3RvdGFsX2J5dGVzID0gODAwCisKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygp
CisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5
cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9z
cGFjZSwgNzczKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5
cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmlu
Z19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1
aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBk
YXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zWzBdKSwgODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
cGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgK
KyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAg
ICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRp
bmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRf
Ynl0ZXM9ODAwLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkK
KworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWls
ZGVyLnBhY2tldF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3Rv
dGFsX2J5dGVzXzMoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisg
ICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAorCisgICAgICAgIGNyeXB0byA9
IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9U
WVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJl
bWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRf
ZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVz
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAj
IGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZs
dXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05F
X1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1F
cG9jaC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1i
ZXI9MSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JU
VCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDA4YzhhYzZjNTIzNmQxMzYz
NDhhZDI0YWJmOWZhNmQ4NTkzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yYW5nZXNldC5weQpAQCAtMCwwICsxLDIzNyBAQAorZnJvbSB1bml0dGVzdCBpbXBv
cnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0
CisKKworY2xhc3MgUmFuZ2VTZXRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRfc2lu
Z2xlX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAg
ICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5n
ZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICBk
ZWYgdGVzdF9hZGRfc2luZ2xlX29yZGVyZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFu
Z2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwg
MildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3Npbmds
ZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCks
IFtyYW5nZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQor
CisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9yZXZl
cnNlKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5n
ZXNldC5hZGQoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jh
bmdlKDIsIDMpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDMpXSkKKworICAgICAgICByYW5nZXNl
dC5hZGQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jhbmdl
KDAsIDMpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vcmRlcmVkKHNlbGYpOgorICAgICAg
ICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKwor
ICAgICAgICByYW5nZXNldC5hZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDQpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkK
KworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQg
PSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFu
Z2VzZXQuYWRkKDMsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCks
IFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCAz
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNSld
KQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdl
c2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAg
IHJhbmdlc2V0LmFkZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2Vz
ZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQo
MSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAs
IDUpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwXzIoc2VsZik6CisgICAgICAg
IHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAg
ICAgICByYW5nZXNldC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEwLCAxMikKKyAg
ICAgICAgcmFuZ2VzZXQuYWRkKDE2LCAxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgpLCByYW5n
ZSgxMCwgMTIpLCByYW5nZSgxNiwgMTgpXQorICAgICAgICApCisKKyAgICAgICAgcmFuZ2VzZXQu
YWRkKDEsIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFu
Z2UoMSwgMTUpLCByYW5nZSgxNiwgMTgpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9yZXZl
cnNlKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5n
ZXNldC5hZGQoNiwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDYsIDgpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0p
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkK
KworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfY29udGlndW91cyhzZWxmKToKKyAg
ICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0p
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNCwgNildKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgyLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQp
LCBbcmFuZ2UoMCwgNildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9zcGFy
c2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdl
c2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDYsIDgpXSkK
KworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQor
CisgICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgy
MCwgMzApCisKKyAgICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDEwKSwgcmFuZ2UoMjAsIDMwKV0p
CisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdF9ub19jaGFuZ2Uoc2VsZik6CisgICAgICAgIHJhbmdl
c2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoNSwgMTApCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxNSwgMjApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyNSwgMzApCisKKyAgICAg
ICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMwKV0p
CisKKyAgICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMTAsIDE1KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjApLCByYW5n
ZSgyNSwgMzApXSkKKworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X292ZXJsYXAoc2VsZik6CisgICAg
ICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMSwgNCkKKyAg
ICAgICAgcmFuZ2VzZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMjApCisg
ICAgICAgIHJhbmdlc2V0LmFkZCgzMCwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDQpLCByYW5nZSg2LCA4KSwgcmFu
Z2UoMTAsIDIwKSwgcmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0
LnN1YnRyYWN0KDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwg
cmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDMs
IDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwg
MyksIHJhbmdlKDExLCAyMCksIHJhbmdlKDMwLCA0MCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJh
Y3Rfc3BsaXQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICBy
YW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDIsIDUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2Uo
NSwgMTApXSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBib29sKFJhbmdl
U2V0KCkpCisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQg
PSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiByYW5nZXNldCkKKwor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgwIGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4g
cmFuZ2VzZXQpCisKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSksIHJh
bmdlKDMsIDYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgyIGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiByYW5nZXNl
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDQgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSg1IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4g
cmFuZ2VzZXQpCisKKyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgcjAgPSBSYW5nZVNl
dChbcmFuZ2UoMCwgMSldKQorICAgICAgICByMSA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFu
Z2UoMywgNCldKQorICAgICAgICByMiA9IFJhbmdlU2V0KFtyYW5nZSgzLCA0KSwgcmFuZ2UoMSwg
MildKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMCA9PSByMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShyMCA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMCA9PSAwKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMSA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShyMSA9PSByMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIyKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHIxID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIy
ID09IHIyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocjIgPT0gcjEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocjIgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjIgPT0gMCkK
KworICAgIGRlZiB0ZXN0X2xlbihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdlc2V0KSwgMCkKKworICAgICAgICBy
YW5nZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHJhbmdlc2V0KSwgMSkKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAg
cmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAgICAg
ciA9IHJhbmdlc2V0LnNoaWZ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCByYW5nZSgx
LCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMs
IDQpXSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFu
Z2VTZXQoW3JhbmdlKDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVwcihyYW5nZXNldCksICJSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSki
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzEzZjhmYzhhNGM0
MGZiNjQzMTE0NGI4YzBmYmJkYjdhODBiYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKQEAgLTAsMCArMSwyMjcgQEAKK2ltcG9ydCBtYXRo
Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRs
cworZnJvbSBhaW9xdWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfVFlQRV9JTklUSUFMLCBQ
QUNLRVRfVFlQRV9PTkVfUlRUCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBv
cnQgUXVpY1NlbnRQYWNrZXQKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5n
ZVNldAorZnJvbSBhaW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0
UGFjZXIsCisgICAgUXVpY1BhY2tldFJlY292ZXJ5LAorICAgIFF1aWNQYWNrZXRTcGFjZSwKKyAg
ICBRdWljUnR0TW9uaXRvciwKKykKKworCitkZWYgc2VuZF9wcm9iZSgpOgorICAgIHBhc3MKKwor
CitjbGFzcyBRdWljUGFja2V0UGFjZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2Vs
Zik6CisgICAgICAgIHNlbGYucGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgZGVmIHRl
c3Rfbm9fbWVhc3VyZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYu
cGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRl
X2FmdGVyX3NlbmQobm93PTAuMCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBh
Y2VyLm5leHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9h
ZnRlcl9zZW5kKG5vdz0wLjApCisKKyAgICBkZWYgdGVzdF93aXRoX21lYXN1cmVtZW50KHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0wLjApCisK
KyAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfcmF0ZShjb25nZXN0aW9uX3dpbmRvdz0xMjgwMDAw
LCBzbW9vdGhlZF9ydHQ9MC4wNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2Vy
LmJ1Y2tldF9tYXgsIDAuMDAwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2Vy
LmJ1Y2tldF90aW1lLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5w
YWNrZXRfdGltZSwgMC4wMDAwNSkKKworICAgICAgICAjIDE2IHBhY2tldHMKKyAgICAgICAgZm9y
IGkgaW4gcmFuZ2UoMTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNl
ci5uZXh0X3NlbmRfdGltZShub3c9MS4wKSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRl
X2FmdGVyX3NlbmQobm93PTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxm
LnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjApLCAxLjAwMDA1KQorCisgICAgICAgICMgMiBw
YWNrZXRzCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAwNSkpCisgICAgICAg
ICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDA1KQorICAgICAgICBz
ZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAw
MDUpLCAxLjAwMDEpCisKKyAgICAgICAgIyAxIHBhY2tldAorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDEpKQorICAgICAgICBzZWxm
LnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0
QWxtb3N0RXF1YWwoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSwgMS4wMDAx
NSkKKworICAgICAgICAjIDIgcGFja2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93
PTEuMDAwMTUpKQorICAgICAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9
MS4wMDAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRf
c2VuZF90aW1lKG5vdz0xLjAwMDE1KSwgMS4wMDAyKQorCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNv
dmVyeVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5J
TklUSUFMX1NQQUNFID0gUXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5IQU5EU0hBS0Vf
U1BBQ0UgPSBRdWljUGFja2V0U3BhY2UoKQorICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0UgPSBR
dWljUGFja2V0U3BhY2UoKQorCisgICAgICAgIHNlbGYucmVjb3ZlcnkgPSBRdWljUGFja2V0UmVj
b3ZlcnkoCisgICAgICAgICAgICBpc19jbGllbnRfd2l0aG91dF8xcnR0PUZhbHNlLCBzZW5kX3By
b2JlPXNlbmRfcHJvYmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLnJlY292ZXJ5LnNwYWNlcyA9
IFsKKyAgICAgICAgICAgIHNlbGYuSU5JVElBTF9TUEFDRSwKKyAgICAgICAgICAgIHNlbGYuSEFO
RFNIQUtFX1NQQUNFLAorICAgICAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFLAorICAgICAgICBd
CisKKyAgICBkZWYgdGVzdF9kaXNjYXJkX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLnJlY292
ZXJ5LmRpc2NhcmRfc3BhY2Uoc2VsZi5JTklUSUFMX1NQQUNFKQorCisgICAgZGVmIHRlc3Rfb25f
YWNrX3JlY2VpdmVkX2Fja19lbGljaXRpbmcoc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNT
ZW50UGFja2V0KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9ORV9SVFQsCisgICAgICAg
ICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwK
KyAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRf
bnVtYmVyPTAsCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAor
ICAgICAgICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwK
KyAgICAgICAgKQorICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAg
ICMgwqBwYWNrZXQgc2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBh
Y2tldCwgc3BhY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRl
c19pbl9mbGlnaHQsIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2Vs
aWNpdGluZ19pbl9mbGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNl
LnNlbnRfcGFja2V0cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2Vs
Zi5yZWNvdmVyeS5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdl
c2V0PVJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9m
bGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19p
bl9mbGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFj
a2V0cyksIDApCisKKyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlbGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9taW4sIDEwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAxMC4wKQorCisgICAgZGVmIHRlc3Rfb25f
YWNrX3JlY2VpdmVkX25vbl9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBR
dWljU2VudFBhY2tldCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAg
ICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZh
bHNlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBh
Y2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9S
VFQsCisgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9
MTIzLjQ1LAorICAgICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNFCisK
KyAgICAgICAgIyDCoHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFja2V0
X3NlbnQocGFja2V0LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292
ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFj
ZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBhY2snZAorICAg
ICAgICBzZWxmLnJlY292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlLCBh
Y2tfcmFuZ2VzZXQ9UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5vdz0x
MC4wCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5
dGVzX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxp
Y2l0aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uu
c2VudF9wYWNrZXRzKSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHNlbGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAwLjApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgbWF0aC5pbmYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAwLjApCisKKyAgICBk
ZWYgdGVzdF9vbl9wYWNrZXRfbG9zdF9jcnlwdG8oc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1
aWNTZW50UGFja2V0KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLklOSVRJQUwsCisgICAg
ICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1
ZSwKKyAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgIHBhY2tl
dF9udW1iZXI9MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUws
CisgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MC4w
LAorICAgICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5JTklUSUFMX1NQQUNFCisKKyAgICAg
ICAgc2VsZi5yZWNvdmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAxKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisg
ICAgICAgIHNlbGYucmVjb3ZlcnkuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9MS4wKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisK
K2NsYXNzIFF1aWNSdHRNb25pdG9yVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbW9uaXRv
cihzZWxmKToKKyAgICAgICAgbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKworICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwLCBub3c9MTAw
MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAs
IDAuMCwgMC4wLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5
KQorCisgICAgICAgICMgbm90IHRha2VuIGludG8gYWNjb3VudAorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4w
LCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5v
dz0xMDAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAs
IDExLCAwLjAsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9y
ZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTEyLCBub3c9MTAwMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
c2FtcGxlcywgWzEwLCAxMSwgMTIsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShtb25pdG9yLl9yZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNf
cnR0X2luY3JlYXNpbmcocnR0PTEzLCBub3c9MTAwMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAwLjBdKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgICMgd2Ugbm93IGhhdmUgZW5v
dWdoIHNhbXBsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNy
ZWFzaW5nKHJ0dD0xNCwgbm93PTEwMDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0
b3IuX3NhbXBsZXMsIFsxMCwgMTEsIDEyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUobW9uaXRvci5fcmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlz
X3J0dF9pbmNyZWFzaW5nKHJ0dD0yMCwgbm93PTEwMDUpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1v
bml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTMwLCBub3c9MTAwNikpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NDAsIG5vdz0xMDA3KSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD01MCwgbm93PTEwMDgp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTYwLCBu
b3c9MTAwOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAx
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhy
dHQ9NzAsIG5vdz0xMDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNy
ZWFzZXMsIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNy
ZWFzaW5nKHJ0dD04MCwgbm93PTEwMTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0
b3IuX2luY3JlYXNlcywgMykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNf
cnR0X2luY3JlYXNpbmcocnR0PTkwLCBub3c9MTAxMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobW9uaXRvci5faW5jcmVhc2VzLCA0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25p
dG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0xMDAsIG5vdz0xMDEzKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3NmYwMjNiZjkzZGE0YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpAQCAtMCww
ICsxLDMwIEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMu
cXVpYy5yZXRyeSBpbXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCisKKworY2xhc3MgUXVpY1Jl
dHJ5VG9rZW5IYW5kbGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmV0cnlfdG9rZW4o
c2VsZik6CisgICAgICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQpCisgICAgICAgIGNpZCA9
IGIiXHgwOFx4MDdceDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKKworICAgICAgICBoYW5kbGVyID0g
UXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKworICAgICAgICAjIGNyZWF0ZSB0b2tlbgorICAgICAg
ICB0b2tlbiA9IGhhbmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vdE5vbmUodG9rZW4pCisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIG9rCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCB0b2tl
biksIGNpZCkKKworICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1wdHkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRs
ZXIudmFsaWRhdGVfdG9rZW4oYWRkciwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0IGxlbmd0aCBtdXN0IGJl
IGVxdWFsIHRvIGtleSBzaXplLiIKKyAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9r
ZW4gLSB3cm9uZyBhZGRyZXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvcikgYXMgY206CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRlX3Rva2VuKCgiMS4yLjMu
NCIsIDEyMzQ1KSwgdG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2Vw
dGlvbiksICJSZW1vdGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
c3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MzdhZTJlZDEyYjZmNmMwNDJkMDk5MDRlY2ZiNGYwYzJk
ZjU3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0u
cHkKQEAgLTAsMCArMSw0NDYgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zy
b20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFp
b3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFtZQorZnJvbSBhaW9xdWljLnF1
aWMucGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9tIGFpb3F1aWMu
cXVpYy5zdHJlYW0gaW1wb3J0IFF1aWNTdHJlYW0KKworCitjbGFzcyBRdWljU3RyZWFtVGVzdChU
ZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmVjdl9lbXB0eShzZWxmKToKKyAgICAgICAgc3RyZWFt
ID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0w
LCBkYXRhPWIiIikpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVh
bS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJl
YW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9y
ZWN2X2J1ZmZlcl9zdGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3JkZXJlZChzZWxmKToK
KyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFk
ZCBkYXRhIGF0IHN0YXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBz
dHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3
IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVu
ZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFk
ZCBtb3JlIGRhdGEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVh
bS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSks
CisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0
cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgICAgICAjIGFkZCBk
YXRhIGFuZCBmaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVh
bS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0xNiwgZGF0YT1iIjY3ODkwMTIzIiwg
ZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiNjc4OTAx
MjMiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMjQpCisKKyAgICBk
ZWYgdGVzdF9yZWN2X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJl
YW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLCBOb25lCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVjdl9i
dWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwODkwMTIzNDUiCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMp
LCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3Zf
YnVmZmVyX3N0YXJ0LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0
cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJl
YW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNl
LCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVmIHRlc3RfcmVjdl9vZmZzZXRf
b25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKwor
ICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciks
IGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMp
LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0
LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1i
IiIpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVz
KHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
IgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3Zf
cmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZl
cl9zdGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9mdWxseV9jb25zdW1lZChz
ZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAg
ICAjIGFkZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1i
IjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIz
NDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAg
ICAgICAjIGFkZCBkYXRhIGFnYWluIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9
MCwgZGF0YT1iIjAxMjM0NTY3IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICBkZWYgdGVzdF9y
ZWN2X2FscmVhZHlfcGFydGlhbGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBR
dWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1i
IjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIz
NDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNT
dHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiKSksCisgICAgICAg
ICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxz
ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0
ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluKHNl
bGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJl
YW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFt
RGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0
NSIsIGZpbj1UcnVlKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5
MDEyMzQ1IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3JlY3ZfZmluX291dF9vZl9vcmRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0g
UXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4
IHdpdGggRklOCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0u
YWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmlu
PVRydWUpKSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICkKKworICAgICAgICAjIGFkZCBk
YXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBz
dHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3
IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEy
MzQ1IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3JlY3ZfZmluX3RoZW5fZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTAsIGRhdGE9YiIiLCBmaW49VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIkRhdGEgcmVjZWl2ZWQgYmV5b25kIEZJ
TiIpCisKKyAgICBkZWYgdGVzdF9yZWN2X2Zpbl90d2ljZShzZWxmKToKKyAgICAgICAgc3RyZWFt
ID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRh
PWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAx
MjM0NTY3IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNT
dHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRy
dWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwg
ZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZChkYXRhPWIiIiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfZmluX3dpdGhvdXRfZGF0YShzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBk
YXRhPWIiIiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRh
PWIiIiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3NlbmRfZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAg
ICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdy
aXRlIGRhdGEKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgw
LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdl
dF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1
NjciKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlz
dChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBh
bm90aGVyIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5v
ZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zm
c2V0LCAxNikKKworICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQor
CisgICAgICAgICMgZmlyc3QgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFt
Lm9uX2RhdGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDAsIDgpCisKKyAgICAg
ICAgIyBzZWNvbmQgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2Rh
dGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDgsIDE2KQorCisgICAgZGVmIHRl
c3Rfc2VuZF9kYXRhX2FuZF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0o
KQorCisgICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVh
bS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAg
ICAgIyB3cml0ZSBkYXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4
OTAxMjM0NSIsIGVuZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEg
Y2h1bmsKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoZnJhbWUuZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwg
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkK
KworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5n
ZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEy
MzQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNl
bmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3Nl
bmRfb2Zmc2V0LCAxNikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0KHNlbGYpOgorICAg
ICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5
ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAg
IHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgw
LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1i
IjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKwor
ICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4
OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBub3Ro
aW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2Zy
YW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRp
bmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAgICAgICBzdHJlYW0ub25f
ZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwLCA4KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgOCldKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisg
ICAgICAgICMgc2VuZCBjaHVuayBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIz
NDU2NyIsIGZpbj1GYWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9kYXRhX2xvc3RfZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKwor
ICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMg
d3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIz
NDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJl
YW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5r
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1l
KDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9
MCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5k
X3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuawor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4
KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3Bl
bmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29m
ZnNldCwgMTYpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxm
LmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdl
dHMgbG9zdAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0
ZS5MT1NULCA4LCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2Vu
ZF9wZW5kaW5nKSwgW3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgp
LCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zm
c2V0LCAxNikKKworICAgIGRlZiB0ZXN0X3NlbmRfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbSgpCisgICAgICAgIG1heF9vZmZzZXQgPSAxMgorCisgICAgICAgICMg
bm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwg
bWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMg
d3JpdGUgZGF0YSwgc2VuZCBhIGNodW5rCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3
ODkwMTIzNDUiKQorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zm
c2V0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRp
bmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4
dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgaXMgbGltaXRlZCBieSBwZWVyCisg
ICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoZnJhbWUuZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3Nl
bmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHVuYWJsZSB0byBzZW5kLCBibG9ja2VkCisgICAg
ICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxm
LmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVh
bS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHdyaXRlIG1vcmUg
ZGF0YSwgc3RpbGwgYmxvY2tlZAorICAgICAgICBzdHJlYW0ud3JpdGUoYiJhYmNkZWZnaCIpCisg
ICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0
cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAyNCldKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHBlZXIgcmFp
c2VzIGxpbWl0LCBzZW5kIHNvbWUgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIyMzQ1YWJjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoZnJhbWUuZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwg
MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyks
IFtyYW5nZSgyMCwgMjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9z
ZW5kX29mZnNldCwgMjApCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCBhZ2Fpbiwgc2Vu
ZCByZW1haW5pbmcgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUg
PSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUuZGF0YSwgYiJlZmdoIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5m
aW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAyMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDI0KQorCisgICAgICAg
ICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1l
KDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9maW5fb25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bSgpCisKKyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFt
LmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAg
ICAjIHdyaXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQor
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMg
bm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2Vu
ZF9idWZmZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRf
ZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9z
ZW5kX2Zpbl9vbmx5X2Rlc3BpdGVfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVp
Y1N0cmVhbSgpCisKKyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0g
c3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKwor
ICAgICAgICAjIHdyaXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFt
PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2Vt
cHR5KQorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFt
ZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAg
ICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJl
YW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVh
bS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF90bHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJkZDU2ZGViOGJhZWFjOTZmY2QxYTNmZTBiYjVmOTQzNWQ3
YzBjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpA
QCAtMCwwICsxLDE0MDAgQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQgc3NsCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdC5tb2Nr
IGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBVbnN1
cHBvcnRlZEFsZ29yaXRobQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1w
b3J0IHNlcmlhbGl6YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFz
eW1tZXRyaWMgaW1wb3J0IGVjCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1
aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9xdWljLnF1
aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy50
bHMgaW1wb3J0ICgKKyAgICBDZXJ0aWZpY2F0ZSwKKyAgICBDZXJ0aWZpY2F0ZVZlcmlmeSwKKyAg
ICBDbGllbnRIZWxsbywKKyAgICBDb250ZXh0LAorICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMsCisg
ICAgRmluaXNoZWQsCisgICAgTmV3U2Vzc2lvblRpY2tldCwKKyAgICBTZXJ2ZXJIZWxsbywKKyAg
ICBTdGF0ZSwKKyAgICBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcywKKyAgICBwdWxsX2Jsb2Nr
LAorICAgIHB1bGxfY2VydGlmaWNhdGUsCisgICAgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisg
ICAgcHVsbF9jbGllbnRfaGVsbG8sCisgICAgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAg
ICBwdWxsX2ZpbmlzaGVkLAorICAgIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1bGxf
c2VydmVyX2hlbGxvLAorICAgIHB1c2hfY2VydGlmaWNhdGUsCisgICAgcHVzaF9jZXJ0aWZpY2F0
ZV92ZXJpZnksCisgICAgcHVzaF9jbGllbnRfaGVsbG8sCisgICAgcHVzaF9lbmNyeXB0ZWRfZXh0
ZW5zaW9ucywKKyAgICBwdXNoX2ZpbmlzaGVkLAorICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0
LAorICAgIHB1c2hfc2VydmVyX2hlbGxvLAorICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSwKKykKKwor
ZnJvbSAudXRpbHMgaW1wb3J0ICgKKyAgICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJf
Q0VSVEZJTEUsCisgICAgU0VSVkVSX0tFWUZJTEUsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNh
dGUsCisgICAgbG9hZCwKKykKKworQ0VSVElGSUNBVEVfREFUQSA9IGxvYWQoInRsc19jZXJ0aWZp
Y2F0ZS5iaW4iKVsxMTotMl0KK0NFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUgPSBsb2FkKCJ0
bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbiIpWy0zODQ6XQorCitDTElFTlRfUVVJQ19UUkFOU1BP
UlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDExMDAzMTAw
MDUwMDA0ODAxMDAwMDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4MDEwMDAwMDAwMCIKKyAgICBi
IjQwMDA0ODEwMDAwMDAwMDAxMDAwMjQyNTgwMDA4MDAwMjQwNjQwMDBhMDAwMTBhIgorKQorCitT
RVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICBiImZmMDAwMDExMDRmZjAwMDAxMTAwNDUwMDA1MDAwNDgwMTAwMDAwMDAwNjAwMDQ4MDEwMDAw
MDAwMDcwMDA0OCIKKyAgICBiIjAxMDAwMDAwMDA0MDAwNDgxMDAwMDAwMDAwMTAwMDI0MjU4MDAw
MjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKyAgICBiIjAwMDAwMDAwMDAwMDAwMDgwMDAyNDA2
NDAwMGEwMDAxMGEiCispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIgPSBi
aW5hc2NpaS51bmhleGxpZnkoCisgICAgYiIwMDU3MDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAw
MGZmZmYwMDAyMDAxMGM1YWM0MTBmYmRkNGZlNmUyYzEiCisgICAgYiI0MjI3OWYyMzFlOGUwMDAw
YTAwMDEwMzAwMDQwMDA0ODAwNWZmZmEwMDBiMDAwMTE5MDAwMTAwMDI2NzEwZmYiCisgICAgYiI0
MjAwMGM1YzA2N2YyN2UzOTMyMWM2M2UyOGU3YzkwMDAzMDAwMjQ3ZTQwMDA4MDAwMTA2IgorKQor
CitTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18zID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgIGIiMDA1NDAwMDIwMDEwMGRjYjUwYTQ0MjUxMzI5NWI0Njc5YmFmMDRjYjVlZmZmZjhh
MDAwOWM4YWZlNzJhNjM5NyIKKyAgICBiIjI1NTQwNzAwMDYwMDA0ODAwMGZmZmYwMDA4MDAwMTA2
MDAwNDAwMDQ4MDA1ZmZmYTAwMDUwMDA0ODAwMGZmZmYiCisgICAgYiIwMDAzMDAwMjQ3ZTQwMDBh
MDAwMTAzMDAwMTAwMDI2NzEwMDAwYjAwMDExOSIKKykKKworCitjbGFzcyBCdWZmZXJUZXN0KFRl
c3RDYXNlKToKKyAgICBkZWYgdGVzdF9wdWxsX2Jsb2NrX3RydW5jYXRlZChzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDEp
OgorICAgICAgICAgICAgICAgIHBhc3MKKworCitkZWYgY3JlYXRlX2J1ZmZlcnMoKToKKyAgICBy
ZXR1cm4geworICAgICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVmZmVyKGNhcGFjaXR5PTQwOTYp
LAorICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisg
ICAgICAgIHRscy5FcG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgfQor
CisKK2RlZiBtZXJnZV9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIHJldHVybiBiIiIuam9pbih4LmRh
dGEgZm9yIHggaW4gYnVmZmVycy52YWx1ZXMoKSkKKworCitkZWYgcmVzZXRfYnVmZmVycyhidWZm
ZXJzKToKKyAgICBmb3IgayBpbiBidWZmZXJzLmtleXMoKToKKyAgICAgICAgYnVmZmVyc1trXS5z
ZWVrKDApCisKKworY2xhc3MgQ29udGV4dFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVf
Y2xpZW50KAorICAgICAgICBzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lLCBjYWRhdGE9Tm9uZSwg
Y2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLCAqKmt3YXJncworICAgICk6CisgICAgICAgIGNsaWVu
dCA9IENvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywK
KyAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsCisgICAgICAgICAgICBjYWZpbGU9Y2FmaWxlLAor
ICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAg
ICApCisgICAgICAgIGNsaWVudC5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTLAorICAgICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJT
LAorICAgICAgICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUKQorICAgICAgICByZXR1cm4g
Y2xpZW50CisKKyAgICBkZWYgY3JlYXRlX3NlcnZlcihzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25l
KToKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRG
SUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBDb250ZXh0KAorICAgICAg
ICAgICAgYWxwbl9wcm90b2NvbHM9YWxwbl9wcm90b2NvbHMsIGlzX2NsaWVudD1GYWxzZSwgbWF4
X2Vhcmx5X2RhdGE9MHhGRkZGRkZGRgorICAgICAgICApCisgICAgICAgIHNlcnZlci5jZXJ0aWZp
Y2F0ZSA9IGNvbmZpZ3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VydmVyLmNlcnRpZmlj
YXRlX3ByaXZhdGVfa2V5ID0gY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQorICAgICAgICBzZXJ2
ZXIuaGFuZHNoYWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAg
ICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICkK
KyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUu
U0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE8pCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAg
IGRlZiB0ZXN0X2NsaWVudF91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUu
Q0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRVbmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxl
X21lc3NhZ2UoYiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAg
ICBjbGllbnQuc3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJT05T
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3Nh
Z2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgw
MCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJ
RU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9i
dWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9D
RVJUSUZJQ0FURV9WRVJJRlkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxl
cnRVbmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2Uo
YiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQu
c3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xp
ZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkp
CisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2Up
OgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIs
IGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2NlcnRpZmljYXRl
X3ZlcmlmeV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2Vu
ZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hF
TExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisg
ICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGll
bnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNl
cnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2Fn
ZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRf
aW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMo
c2VydmVyX2J1ZikKKworICAgICAgICAjIG1lc3Mgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAg
ICAgICAgY2xpZW50X2lucHV0ID0gY2xpZW50X2lucHV0WzotNTZdICsgYnl0ZXMoNCkgKyBjbGll
bnRfaW5wdXRbLTUyOl0KKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRl
ZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6Cisg
ICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVm
KQorCisgICAgZGVmIHRlc3RfY2xpZW50X2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmKToK
KyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVyID0g
c2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAg
ICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5oYW5kbGVf
bWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVy
X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJz
KGNsaWVudF9idWYpCisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICMg
c2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2Vy
dGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2
ZXJfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VS
VkVSX0VYUEVDVF9GSU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVy
cyhzZXJ2ZXJfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAg
ICAgIyBtZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgY2xpZW50X2lucHV0
ID0gY2xpZW50X2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2
ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0
RGVjcnlwdEVycm9yKToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRf
aW5wdXQsIGNsaWVudF9idWYpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5leHBlY3RlZF9tZXNz
YWdlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAg
ICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgor
ICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNy
ZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VY
UEVDVF9GSU5JU0hFRAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVu
ZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4
MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0
ZSA9IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5o
YW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisg
ICAgZGVmIF9zZXJ2ZXJfZmFpbF9oZWxsbyhzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICMgc2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJz
KCkKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VS
VkVSX0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9i
dWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRs
ZSBjbGllbnQgaGVsbG8KKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAg
ICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKwor
ICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF9jaXBoZXJfc3VpdGUoc2VsZik6CisgICAg
ICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fY2lwaGVy
X3N1aXRlcyA9IFt0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2XQorCisgICAgICAg
IHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5fY2lwaGVyX3N1
aXRlcyA9IFt0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0XQorCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206Cisg
ICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBjaXBo
ZXIgc3VpdGUiKQorCisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3NpZ25hdHVyZV9h
bGdvcml0aG0oc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisg
ICAgICAgIGNsaWVudC5fc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5FRDQ0OF0KKworICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkg
YXMgY206CisgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZl
cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBv
cnRlZCBzaWduYXR1cmUgYWxnb3JpdGhtIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBv
cnRlZF92ZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJT05f
MV8yXQorCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRQcm90b2NvbFZlcnNpb24pIGFzIGNtOgor
ICAgICAgICAgICAgc2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgcHJv
dG9jb2wgdmVyc2lvbiIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfYmFkX2ZpbmlzaGVkX3Zlcmlm
eV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGll
bnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAg
IHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVs
bG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNl
cnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9i
dWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2
ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0
YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQg
PSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVy
X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNp
b25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAj
IHNlbmQgZmluaXNoZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1
dCwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0
YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2Vf
YnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisK
KyAgICAgICAgIyBtZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgc2VydmVy
X2lucHV0ID0gc2VydmVyX2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxl
IGZpbmlzaGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlw
dEVycm9yKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQs
IHNlcnZlcl9idWYpCisKKyAgICBkZWYgX2hhbmRzaGFrZShzZWxmLCBjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0
ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1
ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9F
WFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJz
KGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJf
aW5wdXQpLCAyMTMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5w
dXQpLCAzNTgpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAj
IGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlw
dGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVk
LCAoc2Vzc2lvbiB0aWNrZXQpCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygp
CisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQ
RUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZl
cl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbGllbnRfaW5wdXQp
LCA2MDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAy
MzE2KQorCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAjIGhh
bmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2Vy
dGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZCwgKHNlc3Npb24gdGlja2V0KQorICAgICAgICAjIHNl
bmQgZmluaXNoZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwg
Y2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRl
LkNMSUVOVF9QT1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVm
ZmVycyhjbGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5w
dXQpLCA1MikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMg
aGFuZGxlIGZpbmlzaGVkCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfUE9TVF9IQU5EU0hBS0UpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdl
X2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50
X2lucHV0KSwgMCkKKworICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAg
ICAjIGNoZWNrIGNpcGhlciBzdWl0ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2xpZW50LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMjU2X0dDTV9TSEEzODQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc2VydmVyLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJT
dWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZHNo
YWtlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAg
ICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFr
ZShjbGllbnQsIHNlcnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9uZSkKKworICAgIGRl
ZiB0ZXN0X2hhbmRzaGFrZV9lY2RzYV9zZWNwMjU2cjEoc2VsZik6CisgICAgICAgIHNlcnZlciA9
IHNlbGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSwgc2VydmVy
LmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAg
ICAgICAgICBjb21tb25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAg
ICAgICAgKQorCisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgKKyAgICAgICAg
ICAgIGNhZGF0YT1zZXJ2ZXIuY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24u
RW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICApCisKKyAg
ICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sg
QUxQTiBtYXRjaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3Rp
YXRlZCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlh
dGVkLCBOb25lKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfYWxwbihzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAi
XSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsi
aHEtMjAiLCAiaDMtMjAiXSkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2
ZXIpCisKKyAgICAgICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuYWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlcnZlci5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisKKyAgICBkZWYgdGVzdF9o
YW5kc2hha2Vfd2l0aF9hbHBuX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudChhbHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcihhbHBuX3Byb3RvY29scz1bImgzLTIwIl0pCisKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAg
ICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIGNvbW1vbiBBTFBOIHByb3RvY29scyIp
CisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF9yc2FfcGtjczFfc2hhMjU2X3NpZ25hdHVy
ZShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAg
Y2xpZW50Ll9zaWduYXR1cmVfYWxnb3JpdGhtcyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJT
QV9QS0NTMV9TSEEyNTZdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisK
KyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
aGFuZHNoYWtlX3dpdGhfY2VydGlmaWNhdGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsaWVudCA9
IHNlbGYuY3JlYXRlX2NsaWVudChjYWZpbGU9Tm9uZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5j
cmVhdGVfc2VydmVyKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVy
dEJhZENlcnRpZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGll
bnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwg
InVuYWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIikKKworICAgIGRlZiB0ZXN0
X2hhbmRzaGFrZV93aXRoX2NlcnRpZmljYXRlX25vX3ZlcmlmeShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lLCB2ZXJpZnlfbW9kZT1zc2wuQ0VS
VF9OT05FKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAg
IHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFr
ZV93aXRoX2dyZWFzZV9ncm91cChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVf
Y2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5H
UkVBU0UsIHRscy5Hcm91cC5TRUNQMjU2UjFdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisg
ICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfeDI1NTE5KHNlbGYpOgorICAgICAgICBjbGllbnQg
PSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMg
PSBbdGxzLkdyb3VwLlgyNTUxOV0KKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBz
ZXJ2ZXIpCisgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZEFsZ29yaXRobSBhcyBleGM6CisgICAg
ICAgICAgICBzZWxmLnNraXBUZXN0KHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtl
X3dpdGhfeDQ0OChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkK
KyAgICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5YNDQ4XQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVu
c3VwcG9ydGVkQWxnb3JpdGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3Ry
KGV4YykpCisKKyAgICBkZWYgdGVzdF9zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgY2xp
ZW50X3RpY2tldHMgPSBbXQorICAgICAgICBzZXJ2ZXJfdGlja2V0cyA9IFtdCisKKyAgICAgICAg
ZGVmIGNsaWVudF9uZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBjbGllbnRfdGlja2V0
cy5hcHBlbmQodGlja2V0KQorCisgICAgICAgIGRlZiBzZXJ2ZXJfZ2V0X3RpY2tldChsYWJlbCk6
CisgICAgICAgICAgICBmb3IgdCBpbiBzZXJ2ZXJfdGlja2V0czoKKyAgICAgICAgICAgICAgICBp
ZiB0LnRpY2tldCA9PSBsYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgZGVmIHNlcnZlcl9uZXdfdGlja2V0KHRpY2tl
dCk6CisgICAgICAgICAgICBzZXJ2ZXJfdGlja2V0cy5hcHBlbmQodGlja2V0KQorCisgICAgICAg
IGRlZiBmaXJzdF9oYW5kc2hha2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudCgpCisgICAgICAgICAgICBjbGllbnQubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gY2xp
ZW50X25ld190aWNrZXQKKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKyAgICAgICAgICAgIHNlcnZlci5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfbmV3
X3RpY2tldAorCisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisK
KyAgICAgICAgICAgICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBub3QgdXNlZAorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAgICAg
ICAgICAjIGNoZWNrIHRpY2tldHMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNsaWVudF90aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlcl90aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
X3RpY2tldHNbMF0udGlja2V0LCBzZXJ2ZXJfdGlja2V0c1swXS50aWNrZXQpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudF90aWNrZXRzWzBdLnJl
c3VtcHRpb25fc2VjcmV0LCBzZXJ2ZXJfdGlja2V0c1swXS5yZXN1bXB0aW9uX3NlY3JldAorICAg
ICAgICAgICAgKQorCisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlKCk6CisgICAgICAgICAg
ICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Np
b25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2Vs
Zi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRf
Y2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxv
IHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVm
ZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVO
VF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2Vf
YnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwo
bGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFs
KGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVu
dF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAg
ICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVy
LmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVE
KQorICAgICAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAg
ICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRs
ZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlm
aWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAg
ICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRSkKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMo
Y2xpZW50X2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1
dCksIDUyKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAg
ICAgICAjIGhhbmRsZSBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIG5ld19zZXNzaW9uX3Rp
Y2tldAorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2Vy
dmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0
ZS5TRVJWRVJfUE9TVF9IQU5EU0hBS0UpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAwKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQor
CisgICAgICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2xpZW50Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9kZWNfa2V5KQorCisgICAgICAg
ICAgICAjIGNoZWNrIHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgdXNlZAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGNsaWVudC5zZXNzaW9uX3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VydmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICBkZWYgc2Vjb25kX2hh
bmRzaGFrZV9iYWRfYmluZGVyKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9j
bGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tl
dHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAg
ICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAor
CisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAg
ICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGll
bnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMp
CisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMg
dGFtcGVyIHdpdGggYmluZGVyCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5w
dXRbOi00XSArIGJ5dGVzKDQpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbwor
ICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZp
bmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBh
cyBjbToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0
LCBzZXJ2ZXJfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0
aW9uKSwgIlBTSyB2YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5k
c2hha2VfYmFkX3ByZV9zaGFyZWRfa2V5KCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNy
ZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50
X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkK
KyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3Rp
Y2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9r
ZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAg
ICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hF
TExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCks
IDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQp
LCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAg
ICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxs
bywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVm
ID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNl
cnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgICAgICAgICAj
IHRhbXBlciB3aXRoIHByZV9zaGFyZV9rZXkgaW5kZXgKKyAgICAgICAgICAgIGJ1ZiA9IHNlcnZl
cl9idWZbdGxzLkVwb2NoLklOSVRJQUxdCisgICAgICAgICAgICBidWYuc2VlayhidWYudGVsbCgp
IC0gMSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDEpCisgICAgICAgICAgICBjbGllbnRf
aW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJz
KHNlcnZlcl9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbyBhbmQgYm9t
YgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbGxlZ2FsUGFy
YW1ldGVyKToKKyAgICAgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lu
cHV0LCBjbGllbnRfYnVmKQorCisgICAgICAgIGZpcnN0X2hhbmRzaGFrZSgpCisgICAgICAgIHNl
Y29uZF9oYW5kc2hha2UoKQorICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKQor
ICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9wcmVfc2hhcmVkX2tleSgpCisKKworY2xhc3Mg
VGxzVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG8oc2VsZik6
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZh
YmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZj
MWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2Rz
LCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNm
ZmE4MjQwNWEyMTFiNjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiOTNjNzY2NWE1NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFm
OThhMWU4NGYxNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hh
bmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsIE5vbmUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3Jp
dGhtcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFs
Z29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWdu
YXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2ln
bmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXSwKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsIFt0bHMu
R3JvdXAuU0VDUDI1NlIxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuVExTX1ZFUlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8x
XzNfRFJBRlRfMjgsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8y
NywKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BP
UlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JU
X1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9hbHBuKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5i
aW4iKSkKKyAgICAgICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGhlbGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgK
KyAgICAgICAgICAgICAgICAiZWQ1NzVjNmZiZDU5OWM0ZGZhYWJkMDAzZGNhNmU4NjBjY2RiMGUx
NzgyYzFhZjAyZTU3YmYyN2NiNjQ3OWI3NiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXNzaW9uX2lkLCBiIiIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwK
KyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2
LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5FTVBUWV9SRU5FR09USUFUSU9OX0lO
Rk9fU0NTViwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5V
TExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhl
bGxvLmFscG5fcHJvdG9jb2xzLCBbImgzLTE5Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVsbG8uZWFybHlfZGF0YSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAg
ICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4
ODQyMzE1YzQzN2JiMGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGVi
YjBkNCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5
MTU1ODY2ZTI2NGM5ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgorICAgICAgICAgICAgICAg
ICAgICAgICAgIjIyIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFu
Z2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWxsby5zZXJ2ZXJfbmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9T
RUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0u
RUNEU0FfU0VDUDM4NFIxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLkVDRFNBX1NFQ1A1MjFSMV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25h
dHVyZUFsZ29yaXRobS5FRDI1NTE5LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uRUQ0NDgsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UFNTX1BTU19TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5S
U0FfUFNTX1BTU19TSEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRo
bS5SU0FfUFNTX1BTU19TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVB
bGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0
dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNp
Z25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5T
aWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMu
U2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCisgICAgICAgICAgICBdLAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfZ3JvdXBzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5Hcm91cC5T
RUNQMjU2UjEsCisgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKKyAgICAgICAgICAg
ICAgICB0bHMuR3JvdXAuU0VDUDM4NFIxLAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQ
NTIxUjEsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCisKKyAg
ICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1
c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGJ1Zi5kYXRhKSwgbGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIp
KQorICAgICAgICBoZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKKyAgICAgICAgICAgIHRs
cy5PZmZlcmVkUHNrcygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBl
NjAxNTkxYTc1MGI4MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJjNDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBh
NGJmZTQwMmQ2YTA2YTAwNTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUy
MDg1MjMzYjY5ZDBkZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFi
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJm
NGE5OTRmY2E3NGVlN2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCisgICAgICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1b
CisgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIxNzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3
ZGEzMjgxMWI1YmFlNGU3OCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5Yjcx
Mzg3MmYyYmIyODgxOGNhMWE2YjAxIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoYnVmLmVvZigpKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcigxMDAwKQorICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhf
cHNrLmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0
aF9zbmkuYmluIikpCisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5Zjdm
NjE5NjNkN2I2NDA0ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCisgICAgICAgICAgICApLAorICAgICAg
ICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9u
X2lkLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIy
NmIxOWJkZDMwZGJmNzUxMDE1YTNhMTZlMTNiZDU5MDAyZGZlNDIwYjc5OWQyYTVjZDVlMTFiOGZh
N2JjYjY2IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAg
ICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAg
ICAgICAgdGxzLkNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVz
c2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMg
ZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xz
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5
X3NoYXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAgICAgIjA0YjYyZDcwZjkwN2M4MTRjZDY1
ZDBmNzNiOGI5OTFmMDZiNzBjNzcxNTNmNTQ4NDEwYTE5MWQyYjE5NzY0YTIiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZWNjMDYwNjVhNDgwZWZhOWUxZjEwYzhkYTZlNzM3ZDViZmMwNGJlM2Y3
NzNlMjBhMGM5OTdmNTFiNTYyMTI4MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI0MCIKKyAg
ICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5w
c2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tF
XQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUs
ICJjbG91ZGZsYXJlLXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAg
ICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hB
MjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NI
QTEsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVsbG8uc3VwcG9ydGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAor
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAg
ICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAg
ICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNf
VkVSU0lPTl8xXzNfRFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMs
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0
bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAg
ICAgICAgICBDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAg
ICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1Ziwg
aGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGll
bnRfaGVsbG9fd2l0aF9zbmkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX2NsaWVudF9oZWxs
byhzZWxmKToKKyAgICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRv
bT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1
MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVh
NTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY2lwaGVy
X3N1aXRlcz1bCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NI
QTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2
LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEy
NTYsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1bdGxz
LkNvbXByZXNzaW9uTWV0aG9kLk5VTExdLAorICAgICAgICAgICAga2V5X3NoYXJlPVsKKyAgICAg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisg
ICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICIwNDdiZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFl
YjhkMWQ5NDRlNjdhZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2Qw
MzJjZmFmMjJhNzNkYTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCisgICAg
ICAgICAgICAgICAgICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2Vf
bW9kZXM9W3Rscy5Qc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0sCisgICAgICAgICAgICBz
aWduYXR1cmVfYWxnb3JpdGhtcz1bCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVB
bGdvcml0aG0uRUNEU0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2ln
bmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNp
Z25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICBzdXBwb3J0ZWRfZ3JvdXBzPVt0bHMuR3JvdXAuU0VDUDI1NlIxXSwKKyAgICAgICAgICAg
IHN1cHBvcnRlZF92ZXJzaW9ucz1bCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFf
MywKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAorICAgICAg
ICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICBvdGhlcl9leHRlbnNpb25zPVsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
ICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAg
ICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZm
ZXIoMTAwMCkKKyAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsby5iaW4iKSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorICAgICAgICBoZWxsbyA9
IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2Yo
KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9t
LAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4
NTI3MWQxOTY4MGM2MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4
MjgwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAw
NGExYTQzOGFkMDQ4NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRscy5D
aXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAg
ICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIy
N2QwMjgyMjQyZDg0YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmEx
ODkiCisgICAgICAgICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2
ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAi
YjIiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgTm9uZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9O
XzFfMykKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfcHNrKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNr
LmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgICAgICJjY2JhYWYwNGZjMWJkNTE0M2IyY2M2Yjk3NTIwY2YzN2Q5MTQ3
MGRiZmM4MTI3MTMxYTdiZjBmOTQxZTNhMTM3IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwK
KyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTQ4M2U3
ZTg5NWQwZjRjZWMxNzA4NmIwODQ5NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFi
MCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWxsby5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29t
cHJlc3Npb25NZXRob2QuTlVMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMu
R3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAgICAgIjA0ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQw
NTZiMTY0YTI3Zjc3MDJjYTMxOGMxNmU0ODgiCisgICAgICAgICAgICAgICAgICAgICIxOGI2NDA5
NTkzYjE1YzY2NDlkNmY0NTkzODdhNTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYy
IgorICAgICAgICAgICAgICAgICAgICAiNzYiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hh
cmVkX2tleSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVy
c2lvbiwgdGxzLlRMU19WRVJTSU9OXzFfMykKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxs
bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9o
ZWxsb193aXRoX3Bzay5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dp
dGhfdW5rbm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxv
YWQoInRsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLAorICAgICAgICAgICAgU2VydmVySGVsbG8oCisgICAgICAgICAgICAgICAgcmFuZG9tPWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYx
NWVhNzMzNjUxOWUzZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRh
MWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NI
QTM4NCwKKyAgICAgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTEwsCisgICAgICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAgICAgICAg
ICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0Yjdm
Y2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJj
YTE5NThkN2YzODczMTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMiIKKyAg
ICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IHN1cHBvcnRlZF92ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
b3RoZXJfZXh0ZW5zaW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkK
KyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0
ZW5zaW9uLmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVzaF9zZXJ2ZXJfaGVsbG8oc2VsZik6Cisg
ICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1MTll
M2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHNlc3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAg
ICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVj
MTMyYTIzMjM1IgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMu
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgY29tcHJlc3Npb25f
bWV0aG9kPXRscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMLAorICAgICAgICAgICAga2V5X3NoYXJl
PSgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAg
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQy
ZDg0YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAg
ICAgICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2
YmNhMTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVy
c2lvbj10bHMuVExTX1ZFUlNJT05fMV8zLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVm
ZmVyKDEwMDApCisgICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikp
CisKKyAgICBkZWYgdGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4iKSkKKyAg
ICAgICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQor
ICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25U
aWNrZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAg
ICAgICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0
X25vbmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3
ZDkwNjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICks
CisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIo
MTAwKQorICAgICAgICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3Rp
Y2tldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX25ld19z
ZXNzaW9uX3RpY2tldC5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlj
a2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWxvYWQoInRsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5i
aW4iKSkKKyAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNr
ZXQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5l
d1Nlc3Npb25UaWNrZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAor
ICAgICAgICAgICAgICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAg
ICAgdGlja2V0X25vbmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5o
ZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBk
MDJiMzUwMjQ3ZDkwNjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAg
ICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcigxMDApCisgICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Np
b25fdGlja2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnVmLmRh
dGEsIGxvYWQoInRsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5i
aW4iKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxm
KToKKyAgICAgICAgZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9ucy5iaW4iKQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVs
bF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25l
KGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAg
ICBFbmNyeXB0ZWRFeHRlbnNpb25zKAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9
WworICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICB0bHMuRXh0
ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAg
ICAgICAgU0VSVkVSX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAg
ICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAg
ICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0
ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4oc2VsZik6CisgICAgICAgIGRhdGEgPSBsb2FkKCJ0bHNf
ZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWRhdGEpCisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNp
b25zKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lv
bnMoCisgICAgICAgICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEtMjAiLAorICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lv
blR5cGUuU0VSVkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRF
UlMsCisgICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1F
VEVSU18yLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVm
ID0gQnVmZmVyKDExNSkKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4
dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYg
dGVzdF9wdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YShz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2VuY3J5cHRlZF9leHRl
bnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4iKSkKKyAgICAgICAgZXh0ZW5zaW9u
cyA9IHB1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElz
Tm90Tm9uZShleHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAg
ICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3Rv
Y29sPSJocS0yMCIsCisgICAgICAgICAgICAgICAgZWFybHlfZGF0YT1UcnVlLAorICAgICAgICAg
ICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVu
c2lvblR5cGUuU0VSVkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFN
RVRFUlMsCisgICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFS
QU1FVEVSU18zLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAg
YnVmID0gQnVmZmVyKDExNikKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYs
IGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBk
ZWYgdGVzdF9wdWxsX2NlcnRpZmljYXRlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0
YT1sb2FkKCJ0bHNfY2VydGlmaWNhdGUuYmluIikpCisgICAgICAgIGNlcnRpZmljYXRlID0gcHVs
bF9jZXJ0aWZpY2F0ZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMsIFso
Q0VSVElGSUNBVEVfREFUQSwgYiIiKV0pCisKKyAgICBkZWYgdGVzdF9wdXNoX2NlcnRpZmljYXRl
KHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKAorICAgICAgICAgICAg
cmVxdWVzdF9jb250ZXh0PWIiIiwgY2VydGlmaWNhdGVzPVsoQ0VSVElGSUNBVEVfREFUQSwgYiIi
KV0KKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxNjAwKQorICAgICAgICBwdXNo
X2NlcnRpZmljYXRlKGJ1ZiwgY2VydGlmaWNhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVmLmRhdGEsIGxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1
bGxfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1s
b2FkKCJ0bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbiIpKQorICAgICAgICB2ZXJpZnkgPSBwdWxs
X2NlcnRpZmljYXRlX3ZlcmlmeShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9m
KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuYWxnb3JpdGhtLCB0bHMuU2ln
bmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodmVyaWZ5LnNpZ25hdHVyZSwgQ0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSkKKwor
ICAgIGRlZiB0ZXN0X3B1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICB2ZXJp
ZnkgPSBDZXJ0aWZpY2F0ZVZlcmlmeSgKKyAgICAgICAgICAgIGFsZ29yaXRobT10bHMuU2lnbmF0
dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBzaWduYXR1cmU9
Q0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSwKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcig0MDApCisgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZiwgdmVyaWZ5
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9maW5pc2hlZChzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQorICAgICAg
ICBmaW5pc2hlZCA9IHB1bGxfZmluaXNoZWQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
YnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBmaW5p
c2hlZC52ZXJpZnlfZGF0YSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAg
ICAgICAgICAgICAiZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBj
NDI3NmY5YWYyNjhmNDA4ZWM2OCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3B1c2hfZmluaXNoZWQoc2VsZik6CisgICAgICAgIGZpbmlzaGVkID0gRmluaXNoZWQo
CisgICAgICAgICAgICB2ZXJpZnlfZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAgICAgImYxNTc5MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZm
OWFmMjY4ZjQwOGVjNjgiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBidWYg
PSBCdWZmZXIoMTI4KQorICAgICAgICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgZmluaXNoZWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkK
KworCitjbGFzcyBWZXJpZnlDZXJ0aWZpY2F0ZVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0
X3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFNFUlZF
Ul9DRVJURklMRSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZSA9IGxvYWRf
cGVtX3g1MDlfY2VydGlmaWNhdGVzKGZwLnJlYWQoKSlbMF0KKworICAgICAgICB3aXRoIHBhdGNo
KCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tf
dXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKworICAg
ICAgICAgICAgIyBmYWlsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydEJhZENlcnRpZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlm
aWNhdGUoY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhj
ZXB0aW9uKSwgInVuYWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIgorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNh
dGUoCisgICAgICAgICAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAorICAgICAgICAg
ICAgICAgIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgIHNlcnZlcl9u
YW1lPSJsb2NhbGhvc3QiLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2Nl
cnRpZmljYXRlX2NoYWluX3NlbGZfc2lnbmVkKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwg
XyA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9Imxv
Y2FsaG9zdCIsIGN1cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBw
YXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBt
b2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisK
KyAgICAgICAgICAgICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0
bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2Nl
cnRpZmljYXRlKGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0
IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJzZWxm
IHNpZ25lZCBjZXJ0aWZpY2F0ZSIpCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAgIHZl
cmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVi
bGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9j
YWxob3N0IiwKKyAgICAgICAgICAgICkKKworICAgIEBwYXRjaCgiYWlvcXVpYy50bHMubGliLlg1
MDlfU1RPUkVfbmV3IikKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5faW50
ZXJuYWxfZXJyb3Ioc2VsZiwgbW9ja19zdG9yZV9uZXcpOgorICAgICAgICBtb2NrX3N0b3JlX25l
dy5yZXR1cm5fdmFsdWUgPSB0bHMuZmZpLk5VTEwKKworICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9
IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2Fs
aG9zdCIsIGN1cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbnRlcm5hbEVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
IHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUu
cHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0i
bG9jYWxob3N0IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
Y20uZXhjZXB0aW9uKSwgIk9wZW5TU0wgY2FsbCB0byBYNTA5X3N0b3JlX25ldyBmYWlsZWQiKQor
CisgICAgZGVmIHRlc3RfdmVyaWZ5X2RhdGVzKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwg
XyA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4
YW1wbGUuY29tIiwgY3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKyAgICAgICAgY2FkYXRh
ID0gY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQor
CisgICAgICAgICMgwqB0b28gZWFybHkKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMu
dXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5f
dmFsdWUgPSAoCisgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZSAt
IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICApCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJlZCkgYXMg
Y206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAg
ICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9
ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikK
KworICAgICAgICAjIHZhbGlkCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25v
dyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVl
ID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRp
ZmljYXRlKAorICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRp
ZmljYXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAg
ICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAg
ICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRf
YWZ0ZXIKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBj
YWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1w
bGUuY29tIgorICAgICAgICAgICAgKQorCisgICAgICAgICMgdG9vIGxhdGUKKyAgICAgICAgd2l0
aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAg
ICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIg
KyBkYXRldGltZS50aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgc2Vjb25kcz0xCisgICAgICAg
ICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRp
ZmljYXRlRXhwaXJlZCkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRl
KAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZp
Y2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBp
cyBubyBsb25nZXIgdmFsaWQiKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Qoc2VsZik6
CisgICAgICAgIGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAg
ICAgICAgICBjb21tb25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAg
ICAgICAgKQorICAgICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFs
aXphdGlvbi5FbmNvZGluZy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMu
dXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5f
dmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFs
aWQKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRh
dGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUu
Y29tIgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgor
ICAgICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAg
Y2FkYXRhPWNhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIiwK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAn
dGVzdC5leGFtcGxlLmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIiwKKyAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAor
ICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0
ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJo
b3N0bmFtZSAnYWNtZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIKKyAgICAgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0X3dpdGhfc3ViamFsdG5hbWUoc2Vs
Zik6CisgICAgICAgIGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisg
ICAgICAgICAgICBhbHRlcm5hdGl2ZV9uYW1lcz1bIiouZXhhbXBsZS5jb20iLCAiZXhhbXBsZS5j
b20iXSwKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsCisgICAgICAgICAg
ICBjdXJ2ZT1lYy5TRUNQMjU2UjEsCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlm
aWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAg
IHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAg
ICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2Jl
Zm9yZQorCisgICAgICAgICAgICAjIHZhbGlkCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNh
dGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsIHNlcnZlcl9uYW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0
aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iCisgICAg
ICAgICAgICApCisKKyAgICAgICAgICAgICMgaW52YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAg
ICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2Fk
YXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICdhY21l
LmNvbScgZG9lc24ndCBtYXRjaCBlaXRoZXIgb2YgJyouZXhhbXBsZS5jb20nLCAnZXhhbXBsZS5j
b20nIiwKKyAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNf
Y2VydGlmaWNhdGUuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3NmFjZDdjOQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTUzOAp6Y21kO1BWRXhDeSExe31VXntZVj4+cW1ub21kRkxu
T3BIdVNvRDhSUjgpaW1qMkVgY2d2VDxzKWQ5OzEhV258PUwKeldpYXFIPFRsYEJWLTk2dTZLMEJ0
RyptTkMwZGNyXldDSlFvR1Y9MmpnN2VjIyRgZ3hINzJOVm1eSExIXkdKI153CnpqKXIwZUF8UTNs
SmlQZyhNWV9wfXkyWXRRV3ZOOTVhXmsjKDc2dWtabVdDIXEjKWY4NTs9RCF7MklkQ2xQXzk4ZAp6
cyYoUTlxOTl8fmRIOT9ZaSVXNys2JiYrUUdLdnhfNDMhTk9BP31kRT9HOGdCMHxBSTVJQ0p1bzZM
VHsxaSVTZmUKejcjQVVYayYlXnd4cndvIzBWditaKVdxMXhGa2VJOC0wXipWTzBybXoqaEB4e0Ir
WE0rR2JZKGBUI24yOWNpezd0CnpCZnQzfj94YncrS0R+TD5KZzFsSnYodF53P3RFYiorYS1NOXpH
WnJpJippJVAmaXIxanRod3peND5LKmN5TUJHQQp6TXh7aXRnbjQ8SCRDVjArPndEJDArYDhGNUdu
LUg0VUokJU4+MV9YWVgweWZEbUNJKyZfajxaXk9XKGQ0dHJnNDkKekttQi1vd2UqZVlIeGo+cG9C
SnI1YiVwUWo4Rk1jJWR8UmV9ZDdEXzReQEotZig9PmhAUGVeJWdebjFzVm88fSpsCnpYfFo+RVVj
RW9qYjlxO0Q/PUZ2cFE3KXp2Q2QtO093QU9QZ3RAJmFoeCRyVWpna15ibCVSO1MleU1GTVdVNj1K
cgp6Q1lvUkEpU0tzPSkoKSk2eVhSbE9jMmFaeFMybX19OShSVClOMmhhfTFFVSlGY1JtIW9AQGdy
NnczfU1YSlZPZ1AKejEofH1jYHdYfipqenFyeXg0QnJAJFNTfCppckZidyF5bCNAU0VGWCRfKmdi
b0A9REBYRUI3eGFKezMoYERFe0RFCno+WVome1M+TFhEK2c1czVKQDkkJV80NFE2MT5WXj16Z1Er
eyhsITV0NSRDXiZgXyNVXnBZJnNXPmVNVCQ3dnkpYQp6OS1QTHNAWkwxcHVBUlAyJSF+fC1pPD1r
XjBBcGtpSTEkTVR2aFcma0h6Q0MjQTIzI0JgNTc3aXYjPkJUdWBWIT4KejFAVG9gS3h2TGNufmps
YG03U1JwJlNFbSkwWjl2a2xydEdIS29zK19oX1EoRHptazF5OUsjXkN4alIyUXxGWH5OCnp0KjJ7
MzRRZkcobTA4TFJOKllBJj9tdTx3KityOUc9QjB8S0BASHtxZEB8a1V1YHFDbktiMTJANkZtMXQ4
I0ZlPAp6OUx+dGRRZl5SY1U8MmJERnRyKEVsI349JD5GYnhJN01DT14+SkAtPEFjJil2bXMkYzkp
aTA8X1BFMVpNRCR4VEgKejJCdlZgakJUMzQ9Kn58ckYzPmt7MV9ncFZpO2FQbWZ5RHh8MXR4N3Ej
T04oYkVkeXBWUHpqKXlUJEY+SCVZWCQ1CnpGcWJ0bHNESkg9NiE+IU54ZHl9alVBQCk5JXBZWnoj
Y3lUe1U4MXp9X05KP0RkJXlHQ2I8VyNUblZQUTFxWlJ0agp6cHw1clJlRH5kNFRFNSMtTkBnc21V
dzd4RC1mZ0ZIaTNnP0tZTmk+NzlwN2YzQ0A7Iy1uaVUoRyRARGlXPFY1KUMKejRYTW14a042b1pY
UW5OZi03IzdHUUl1fF9ZNWVyP2lYLWQ0Jld2a1llT1lqPSlGUiRySz58RGY/Vm8kal8tNU90CnpJ
YnVKcW0yITA1PTZicUNUZGFQfFBwJGNmRk9eP0VuPTFEdU5BN2p4JkpYTTJtJmwqLUk8bThCPDtg
clA0Q3t4Zgp6OChPd2NJSWB+RjdqdThiMV40RCNaRzN1MGozdiNVK3dxUSp0JUJXfj9OaFopISst
Nm8tKTZQemx6K3MoUWFnQEwKem90X1BgZE90ZV93MH1DZmBQKHBUU0hHTzlxOUx4Vlg2Vz4pJlRz
T1E+V3ErNl5XOHFiKk04WmB2JGJXQFJhMjlPCnpRdGJ+RG0zTUczX1UrXmZ4JEBnMj0tKkEoNC1N
QWE0KDJ5cWw+Y1BTQHklYDdIMSRPOTIlez1LKn5wX1ZZdlpJVQp6alNwVTcpJVV1NSFeeEBGXztL
Pjd0TEBXZ2B8Z2xwSHJYdzZpT0RgdmBIXnglTkFqVCRpO2BEI0djVylFVUxyfTQKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlm
aWNhdGVfdmVyaWZ5LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVy
aWZ5LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZjA4Mzk1MGI1MzhjMTIzZWI5ZWRjOGZjYmVkOTJlMTkzMjk1
NzM1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzOTIKemNtVjszMGVBaW4wMEQjdTFPYjQ4ck91
PTljT2QwQXZ2MyU5QzI9bSU3PXIqIyE8YiZhPld7JUclfFdDT0BgclZhCnpsOzhHemVsQDVzJlZp
WDc2eDs7flJXJjdeeiVBenUpZil6bEdDK0k2Tz9wY3MhfTxtKDNBWG0qYmhucVgoIS1HWgp6byE0
fkJYUmAkWXpHUD1UZSZofD5UP2UjVDxJZFdobzVeMEBoZlh3RFU3OUJweUFSM0peP2FAQngzIUB+
QkprTTUKekgxPUFEJjEhRGZ4MnJ4Yz1mJl9qZCpmJTRsLVZsbUUyNkV4dkUqYWImcE5ONzE+bHlD
P1hsO2xOTDx1V0Q2fGUzCnpgRj5FNHZ1MkE5NUA3YSpkKkp8V0BtJkI3c0xublFyen5zKHQ7TGlQ
PDI9PTEkfX0yZExNPTE4P28mM2IrPmI/dgp6MV5fRn4jbXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQq
UGFKNzdUeFhkYXwwQmRsMzY+ajFDQzBhVE9iOzg4cVpDNSgKemFiSTNZS21FalpxSHxTMVZGWmJJ
QVl+S0heeyVZZW5gVT9TJlgob1dtNUR8UU0jc2JIR0Z3XyRveTh7UTNfX0JYCm07e2A+ejg+UFNH
OGpXVGAwISV5bjgmSFd+dEhDJihaKCRFdHlVTVFBUTJ8QDhYVEFGWAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8u
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjExNDBhZWNmYzY5ZmI4NGQ1YmVkNmIxYWFjOTE2MmVjMTNhMDQ2ODYKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDI1OAp6Y21aUSVWRUQoKEVVe15tXzIoenZ1fGE0NFJsVjYwfEl1Jmw7bWUtQ19C
WiR6ZW9TM2dfV1l7Q3Rhblh8RjE4JiEKelpNMGJQPUFDfkdVUSo2bzdkKWJaa0xeRG5kZUNUKmt0
cVk0RnExSCZGZiRfcSErSGl8MjZxTm0yNXw7UW1nO3x0CnpVRUU0ZFMpRyElJEclVEV8RXRMJU4+
TXVGO19GYDdEU3FrZWVvUWB8NzhPIV8hUlkqWXJSQkRaYG5JZShePzxTTgp6cUg2Zm9POEZUSlUt
Kmt8Vjk7alo8WH5wMG0jTFNvbXR4PiQ7OX10NVV9MGZxVlBzK2l2Uk4zSWZWU3V8RmZsVXoKeVUm
PihxcE1nUDshSHxLS2Z1JXUhZnF7VnlPMHo/MDc2ejZecGZDZD8xQ3Z0KDB8eF8+TGtpRmdNbEp4
JEkjR0g2CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEzYTNlNzVlMTRk
NmQ5MjkwZjVkYTQyOWEzMjUwMmQ3YzRjMjZjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDYK
emNtWlElVkFOd35lajZUPnpjK0dAQDJ9TXRuQ35vbWsjT2NWcExvOzNeLU5FektoPG49cEl5ZWx6
IyteaSVwfWFyCnpAU2wtXjtxVSpZNDVrZG00NkY8KzRKLUB7M35XJUU5Wkl0UlgjdD0oMkxtR2Ax
MUFITUxrYV5VUD43K18wNE9OSQp6QWpaSFRvU2MoaW52I34yU2ReKztTZWx1dm16PHg9enxGd0kl
KXJSUnp5KlhINEJgeTNLKCYkIyUwTjg9S3QzQzUKemhPd0BwQn1nfD1qKTglZkw1QEwmZ18pSV5q
aFRhO2dNKSpVZ051V2tnTjF7WWdOPW9lbTY0NStMN1JiQGlKNjUjCnptd15mQjN9WGcmMjNNZClO
MHRzSiF4LW80NGQqbTlQbCl8e14zdiV8JShtTkUqfFdiWFdpV1FVLWYoNEcoNmI0fgppLV5KUWlG
YGhtP0Z8O2pEJjFiJnhtI0JyPXl1U24lRExyMTZzUlJJKyhNTV9rCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193
aXRoX3Bzay5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bz
ay5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2Y2OTVjM2E3YjM3YzI3MDE5YWZhNTFhNjA1MjVjYmJjMTA5NjZi
OApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIj
R21yQXV6Y3NxTkdFaXtCe29KK1I2Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+
OWx4WGAmWSQ7I3p4R2VkOFV7OURDU2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlX
S2R7VzlgUy1QfV9XM1YqWTkwJTBzKExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5
eDNBCnopJShsLVVIT3xHKW1YTmNMN1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/
XjZnK00+KEEjS18zTgp6eiN6alEjbFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERU
Njd7VTkxYyY0RlcqNVkqM21WTzB6SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9A
XkhlRWV2KFBIczdoT3syYUhgWnF8SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEz
ZUcpdEA1NXtrb1ZPanBNZE1xaT1QRWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+
QDNIbz50Kl4+UUNnP1NIJVktVms/dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3
RWhuJXp0V3JSR2F6RVZsWHJpP154Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYk
YT4jTnFNClN1R311JXVDS2tSTCprVEZIWHtJQ0FGQGdTCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Nu
aS5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjU2OGE4NjE2N2ZmMTYxODMxZjNlOTc5ZTc0NTAyYzMwM2UxNmE1ZQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2CnpjbVpRJVYzY0JKbz5BTHJCRXJxKGJTQmk1VUVZM3Zl
ZDA5Uj5KKm1PPXt+KnQwP2stVnZLNz1lJmMxN0tgK0ZjYAp6bCRGPis+I0d4KD9tdG8zS0ooSmp2
dkdudWVwUjFOVl8qfHo1QHItO1dAS1BFJjB4Jm4mZnYtKiZmdihoT31GNEQKemB3NVk9c1RhT21j
aDhoKCtzOyFpWTlHPWZ1eUVwfmpuaCpXeSpaR094fUBSIyU3LTYkZFkzJm56cTxjYF92NyF5Cnpr
R09iZCkoMzcpNV44V0AmfVFKfFV9bVk4c2g2Jm9WJkctcVYmTEZsVlBSJXJXTVR4ZVNzMGpydyYq
ZjJGI0BlKwp6a1lFc0ZVPVU4dSR1Q1Z3JVNrTHMpaCNUfE94OD16Jjs3clkhVGRpMWdDSyg7MTFr
ZWRnOCkhMTg8Yns7KGt1KXQKWGpYK0ByTWd9SVEybkclWUNXalFEYEhXbHUxfENyVAoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNy
eXB0ZWRfZXh0ZW5zaW9ucy5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9l
eHRlbnNpb25zLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3
Mzk3NTUzZWE2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MAp6Y21kO0pVPGhMZmBNO0RROzZE
UntBUGIwS2FBamErVX0rRndVfD9XXygoRiowZ0BMNkpEOXBnZnp+bUljentDSmoKUWc5PG5wbT5n
MFZ4RUw2QDA0fVR1KiNIMGwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZDg0MzZhN2IzMzgzMDc3ZjRhMzlhZDMxOGE1OGIyOGUzYmQzNTcyCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwx
LTg2cHxOOFEyKEQ4V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUz
KjErNCNuRj5vXzVOLXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5
dlFWMVFSCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5i
aW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxw
bl9hbmRfZWFybHlfZGF0YS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5MDY5ZjZiZTNkMmU0NTdlNjNjOTQy
ZmM5ZjA1NGNkYmFjNGE5MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE2CnpjbWQ7SlU/XmI3
ViptakcxYFktYCl7SGAzQkxmQzQyOFJEajhOd0pzNz8+Q1ljdXhsYGFTQWs9eCtRKH5kWTAzMQp6
fE5uT31hR3FISVRxfTlIWTZ2PzY4dnshTiF+ZyQ0JjVTQE1raStgXzdYdkYpa2VQd1d7UnNtWDEw
eXA3QkxoPnEKSzAwVER6cWEqLW9fOFo2bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGxzX2ZpbmlzaGVkLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0
YWI3OTRmMzllZjc3NmZkNWZhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNgp1Y21WKzwwTmVp
KjAwMUVJU0NUUmB8QyZpNXNAcENPJEZaWGkmVTU+b3p7RHFTbih9RCQyPCZKYU5ELVI9CgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25l
d19zZXNzaW9uX3RpY2tldC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9u
X3RpY2tldC5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQzOWI0NzMxZTA0YjNiNmQ2ZDNhNjE1ZmMzM2RlNWRm
NzQ2Y2Y1YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkmfENm
Z1RuMStBRDM1RTlCfDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZFR1JP
MER3anFKXiVtIQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5i
aW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25v
d25fZXh0ZW5zaW9uLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzc5Mjg5MGFjZTc1MTNjZmI1YWExOGEzNzNh
OTQ5ZjQxZGI4Y2NmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NAp6Y21aUSFWNmI2ZTN+Vl5e
WSZ8Q2ZnVG4xK0FEMzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUViQ1lAPHkKVDtBaFpj
VkVHUk8yOV54V1k1RG04RjtmfSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGE2YzUxZmU1NjAyOTUxM2I4
MzhjNmQyNDMxOWNlNWM4ZmZkYmY0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTUKemNtVjtN
MEEmOUgwMDVUKjFGZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ayc0VBSTJmRlBSZ2Z9
K3VlCnohT0pxRURjUmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMihfRCp5cm0xT1BKdE1G
MUI3Sz9JOEAmP3E4OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFsaUNvR1lQJkBFOWlw
RzxDSEF4Wj9afVRNKENjTDRRamVqX0UKSjdSV20wJiQxTipLe0B+YwoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9f
d2l0aF9wc2suYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9w
c2suYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRlY2NkZjU5YWI5NWU4OWU0MDRjZTIzNGRiM2Y4MWQxOGRlMWUw
ZWIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3QjAwNWw+MUkpVXcxcEZK
LTZndz0meHBnNFZIYHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQKel52PU8+aE9tVHwwbDtH
PlYkRjY9ZnshbldGSEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdLP0hAQCZkY2xrCnpSRkI0
Mnpmcmo4K0pxYFZSPFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NTdlkhQTV7bmk9YyYqNGw3
bi1kQgpQKGBATm9Wcy0jMjAwSUMyNkkoO2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91
bmtub3duX2V4dGVuc2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlNWI3MDczZmRiZTNjYjdiZmZiNzE4
YjE0NmRlMjUxMDgzYmVkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYyCnpjbVY7VDBBMnFB
MDA1bz8xRmZpMWFuWTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6
IU9KcUVEY1JpcTA3QER8aXFKP31RXnZvflJsemMlR0JwemQwMDM0MUQqeXJtMU9QSnRNRjFCN0s/
SThAJj9xODgKeipoXyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hB
eFo/Wn1UTShDY0w0UWplal9FClE3UldtMCYkMkslMDBVLWtafFJkbF95N09eCgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiYWIyYjY4YTI0OGZiYzUz
NDBmMjNlMmE3OTc2NzA1MGE1ZjVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy91dGlscy5weQpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGRh
dGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gY3J5
cHRvZ3JhcGh5IGltcG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMg
aW1wb3J0IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2
ZXMgaW1wb3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5
bW1ldHJpYyBpbXBvcnQgZWMKKworCitkZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9u
X25hbWUsIGN1cnZlPWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgorICAgIGtl
eSA9IGVjLmdlbmVyYXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1
cnZlPWN1cnZlKQorCisgICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKKyAgICAgICAg
W3g1MDkuTmFtZUF0dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1l
KV0KKyAgICApCisKKyAgICBidWlsZGVyID0gKAorICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVp
bGRlcigpCisgICAgICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgLmlzc3Vlcl9u
YW1lKGlzc3VlcikKKyAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKKyAgICAg
ICAgLnNlcmlhbF9udW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAgICAu
bm90X3ZhbGlkX2JlZm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKKyAgICAgICAgLm5v
dF92YWxpZF9hZnRlcihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVk
ZWx0YShkYXlzPTEwKSkKKyAgICApCisgICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6CisgICAgICAg
IGJ1aWxkZXIgPSBidWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAgICB4NTA5LlN1Ympl
Y3RBbHRlcm5hdGl2ZU5hbWUoCisgICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBm
b3IgbmFtZSBpbiBhbHRlcm5hdGl2ZV9uYW1lc10KKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICBjcml0aWNhbD1GYWxzZSwKKyAgICAgICAgKQorICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5
LCBoYXNoZXMuU0hBMjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQorICAgIHJldHVybiBjZXJ0LCBr
ZXkKKworCitkZWYgbG9hZChuYW1lKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksIG5hbWUpCisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZw
OgorICAgICAgICByZXR1cm4gZnAucmVhZCgpCisKKworZGVmIHJ1bihjb3JvKToKKyAgICByZXR1
cm4gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQorCisK
K1NFUlZFUl9DQUNFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICJweWNhY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFX1dJ
VEhfQ0hBSU4gPSBvcy5wYXRoLmpvaW4oCisgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
InNzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtIgorKQorU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKK1NLSVBfVEVTVFMg
PSBmcm96ZW5zZXQob3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxp
dCgiLCIpKQorCitpZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgorICAgIGxvZ2dp
bmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKKworaWYgKAorICAgIHN5cy5wbGF0
Zm9ybSA9PSAid2luMzIiCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMworICAg
IGFuZCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yID09IDgKKyk6CisgICAgIyBQeXRob24gMy44IHVz
ZXMgUHJvYWN0b3JFdmVudExvb3AgYnkgZGVmYXVsdCwKKyAgICAjIHdoaWNoIGJyZWFrcyBVRFAg
LyBJUHY2IHN1cHBvcnQsIHNlZToKKyAgICAjCisgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9y
Zy9pc3N1ZTM5MTQ4CisKKyAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lv
LldpbmRvd3NTZWxlY3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTA5YzkwOTljZWE4YWVlMjhkZWZm
YjU1MDYyZDM5M2QxYzNiYTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxCmxjbWFGRzAwYlBm
KTxrKmtZRzJ7V0BsKVR+P0FLSzNnfDY9SVYqZVEhQm11SUozaitXRQoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGYxM2UxYjJj
Mzc1M2UyODY5M2ZhZTIzODI1MmFmNjdhNzg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSw1NyBAQAorVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitE
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxf
Y2xpZW50LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJp
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3NzbF9jZXJ0LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWlu
LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2FzeW5jaW8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBh
dC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X2Nvbm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2gzLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0
X2J1aWxkZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
cmV0cnkucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF90bHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRl
LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxz
X2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVu
dF9oZWxsb193aXRoX3NuaS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9l
eHRlbnNpb25zLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lv
bnNfd2l0aF9hbHBuLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVu
c2lvbnNfd2l0aF9hbHBuX2FuZF9lYXJseV9kYXRhLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
bHNfZmluaXNoZWQuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNr
ZXQuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91
bmtub3duX2V4dGVuc2lvbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxs
by5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4K
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5z
aW9uLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy92ZXJzaW9uX25lZ290aWF0aW9uLmJpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNGVj
OTVjOWExNjE2N2NjM2VjMGMzMTczNTMyYzU0MDBjMTE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitE
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL0xJQ0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvUkVBRE1FLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0
dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc1YmUxMjZmYjQ1ODljODY1
OTk0YzU5ZDYxM2UzZDQxYTdhOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvQ09OVFJJQlVUSU5HCkBAIC0wLDAgKzEsMzAgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKwor
V2UnZCBsb3ZlIHRvIGFjY2VwdCB5b3VyIHBhdGNoZXMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhp
cyBwcm9qZWN0LiBUaGVyZSBhcmUKK2p1c3QgYSBmZXcgc21hbGwgZ3VpZGVsaW5lcyB5b3UgbmVl
ZCB0byBmb2xsb3cuCisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50CisKK0NvbnRy
aWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBDb250cmli
dXRvciBMaWNlbnNlCitBZ3JlZW1lbnQuIFlvdSAob3IgeW91ciBlbXBsb3llcikgcmV0YWluIHRo
ZSBjb3B5cmlnaHQgdG8geW91ciBjb250cmlidXRpb247Cit0aGlzIHNpbXBseSBnaXZlcyB1cyBw
ZXJtaXNzaW9uIHRvIHVzZSBhbmQgcmVkaXN0cmlidXRlIHlvdXIgY29udHJpYnV0aW9ucyBhcwor
cGFydCBvZiB0aGUgcHJvamVjdC4gSGVhZCBvdmVyIHRvIDxodHRwczovL2NsYS5kZXZlbG9wZXJz
Lmdvb2dsZS5jb20vPiB0byBzZWUKK3lvdXIgY3VycmVudCBhZ3JlZW1lbnRzIG9uIGZpbGUgb3Ig
dG8gc2lnbiBhIG5ldyBvbmUuCisKK1lvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1pdCBh
IENMQSBvbmNlLCBzbyBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCisoZXZlbiBpZiBp
dCB3YXMgZm9yIGEgZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0
byBkbyBpdAorYWdhaW4uCisKKyMjIENvZGUgcmV2aWV3cworCitBbGwgc3VibWlzc2lvbnMsIGlu
Y2x1ZGluZyBzdWJtaXNzaW9ucyBieSBwcm9qZWN0IG1lbWJlcnMsIHJlcXVpcmUgcmV2aWV3LiBX
ZQordXNlIEdpdEh1YiBwdWxsIHJlcXVlc3RzIGZvciB0aGlzIHB1cnBvc2UuIENvbnN1bHQKK1tH
aXRIdWIgSGVscF0oaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvYWJvdXQtcHVsbC1y
ZXF1ZXN0cy8pIGZvciBtb3JlCitpbmZvcm1hdGlvbiBvbiB1c2luZyBwdWxsIHJlcXVlc3RzLgor
Rm9yIGluc3RydWN0aW9ucyBmb3IgY29udHJpYnV0aW5nIGNvZGUsIHBsZWFzZSByZWFkOgoraHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9weXdlYnNvY2tldC93aWtpL0NvZGVSZXZpZXdJbnN0cnVj
dGlvbgorCisjIyBDb21tdW5pdHkgR3VpZGVsaW5lcworCitUaGlzIHByb2plY3QgZm9sbG93cwor
W0dvb2dsZSdzIE9wZW4gU291cmNlIENvbW11bml0eSBHdWlkZWxpbmVzXShodHRwczovL29wZW5z
b3VyY2UuZ29vZ2xlL2NvbmR1Y3QvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJ
Q0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWJlYTkwMjU0
Mjg3NzllMTY0NDU5YzJhMTIwZTFhMDdhYTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9MSUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDIwLCBHb29n
bGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitk
aXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgz
Nzk5NzllNjNlNGEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklG
RVNULmluCkBAIC0wLDAgKzEsNiBAQAoraW5jbHVkZSBDT1BZSU5HCitpbmNsdWRlIE1BTklGRVNU
LmluCitpbmNsdWRlIFJFQURNRQorcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5CityZWN1
cnNpdmUtaW5jbHVkZSBtb2RfcHl3ZWJzb2NrZXQgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVz
dCAqLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3Y2JlNTUwYzA2NTc4MmIwZTMxNWRl
MDQ2NTFjOWUwNjhjYjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JF
QURNRS5tZApAQCAtMCwwICsxLDM2IEBACisKKyMgcHl3ZWJzb2NrZXQzICMKKworVGhlIHB5d2Vi
c29ja2V0IHByb2plY3QgYWltcyB0byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY0NTUpIHN0YW5kYWxvbmUgc2VydmVyLgorCitweXdlYnNvY2tl
dCBpcyBpbnRlbmRlZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBlcmltZW50YWwqKiBwdXJwb3Nl
cy4KKworUnVuIHRoaXMgdG8gcmVhZCB0aGUgZ2VuZXJhbCBkb2N1bWVudDoKK2BgYAorJCBweWRv
YyBtb2RfcHl3ZWJzb2NrZXQKK2BgYAorCitQbGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBm
b3IgbW9yZSBkZXRhaWxzLgorCisjIElOU1RBTEwgIworCitUbyBpbnN0YWxsIHRoaXMgcGFja2Fn
ZSB0byB0aGUgc3lzdGVtLCBydW4gdGhpczoKK2BgYAorJCBweXRob24gc2V0dXAucHkgYnVpbGQK
KyQgc3VkbyBweXRob24gc2V0dXAucHkgaW5zdGFsbAorYGBgCisKK1RvIGluc3RhbGwgdGhpcyBw
YWNrYWdlIGFzIGEgbm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6CisKK2BgYAorJCBweXRo
b24gc2V0dXAucHkgYnVpbGQKKyQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCitgYGAK
KyMgTEFVTkNIICMKKworVG8gdXNlIHB5d2Vic29ja2V0IGFzIHN0YW5kYWxvbmUgc2VydmVyLCBy
dW4gdGhpcyB0byByZWFkIHRoZSBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJzb2Nr
ZXQuc3RhbmRhbG9uZQorYGBgCisjIERpc2NsYWltZXIgIworVGhpcyBpcyBub3QgYW4gb2ZmaWNp
YWxseSBzdXBwb3J0ZWQgR29vZ2xlIHByb2R1Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjcxOWNhODk3MzcxMDU3
MTljNzFjMmE0MmVhZmYwZDQ2NDQ3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisKK2RlZiB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbigKKyAgICAgICAgIkFib3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UiKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgcGFzcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2Fib3J0X3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGMyNDBiZjJjMWNiMGJkNTM4ZWMzN2JmNTUxYzEx
MjU2Mzk2YjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9h
Ym9ydF93c2gucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgaGFuZHNoYWtlCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAi
QWJvcnRlZCBpbiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9i
ZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVu
Y2htYXJrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY5Y2Q3ZTFlZTY1M2Q1OWYwNGI4MDJmZjM0YzhkMDgx
MzE3Y2E4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJy
YXlidWZmZXJfYmVuY2htYXJrLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdo
dCAyMDEzLCBHb29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Citt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCitpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKK0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIGJl
bmNobWFyazwvdGl0bGU+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgordmFyIFBSSU5UX1NJWkUgPSB0cnVlOworCisvLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgor
dmFyIFNUQVJUX1NJWkUgPSAxMCAqIDEwMjQ7CisvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUg
c2l6ZSBvZiBhbiBhcnJheSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgordmFyIFNUT1BfVEhSRVNI
T0xEID0gMTAwMDAwICogMTAyNDsKKy8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21h
bGwsIHdyaXRlL3JlYWQgdGhlIGFycmF5IG11bHRpcGxlIHRpbWVzCisvLyB1bnRpbCB0aGUgc3Vt
IG9mIHNpemVzIHJlYWNoZXMgdGhpcyB0aHJlc2hvbGQuCit2YXIgTUlOX1RPVEFMID0gMTAwMDAw
ICogMTAyNDsKK3ZhciBNVUxUSVBMSUVSUyA9IFs1LCAyXTsKKworLy8gUmVwZWF0IGJlbmNobWFy
ayBmb3Igc2V2ZXJhbCB0aW1lcyB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAor
Ly8gKHN1Y2ggYXMgSklUKSBydW4uCit2YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOworCitmdW5j
dGlvbiB3cml0ZUJlbmNobWFyayhzaXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0g
MDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAgLy8gV3JpdGUgJ2Ency4KKyAgICBmaWxs
QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIsIDB4NjEpOworCisgICAgdG90YWxTaXplICs9IHNpemU7
CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworZnVuY3Rpb24gcmVhZEJlbmNobWFyayhz
aXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6
ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNp
emUpOworCisgICAgaWYgKCF2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsK
KyAgICAgIHF1ZXVlTG9nKCdWZXJpZmljYXRpb24gZmFpbGVkJyk7CisgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6
ZTsKK30KKworZnVuY3Rpb24gcnVuQmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9s
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBtaW5Ub3RhbCwKKyAgICAgICAgICAgICAgICAgICAg
ICBtdWx0aXBsaWVycywKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsK
KyAgd2hpbGUgKHNpemUgPD0gc3RvcFRocmVzaG9sZCkgeworICAgIHZhciBtYXhTcGVlZCA9IDA7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKKyAg
ICAgIHZhciBzdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgICAgIHZhciB0b3Rh
bFNpemUgPSBiZW5jaG1hcmtGdW5jdGlvbihzaXplLCBtaW5Ub3RhbCk7CisKKyAgICAgIG1heFNw
ZWVkID0gTWF0aC5tYXgobWF4U3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1
bGF0ZVNwZWVkSW5LQih0b3RhbFNpemUsIHN0YXJ0VGltZUluTXMpKTsKKyAgICB9CisgICAgcXVl
dWVMb2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKKwor
ICAgIHNpemUgKj0gbXVsdGlwbGllcnNbbXVsdGlwbGllckluZGV4XTsKKyAgICBtdWx0aXBsaWVy
SW5kZXggPSAobXVsdGlwbGllckluZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7CisgIH0K
K30KKworZnVuY3Rpb24gcnVuQmVuY2htYXJrcygpIHsKKyAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6
ZSBpbiBLaUIsIFNwZWVkIGluIGtCL3MnKTsKKworICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJr
Jyk7CisgIHJ1bkJlbmNobWFyaygKKyAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBT
VE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIHF1ZXVlTG9nKCdG
aW5pc2hlZCcpOworCisgIHF1ZXVlTG9nKCdSZWFkIGJlbmNobWFyaycpOworICBydW5CZW5jaG1h
cmsoCisgICAgICByZWFkQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlO
X1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIGFkZFRvTG9nKCdGaW5pc2hlZCcpOworfQorCitm
dW5jdGlvbiBpbml0KCkgeworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9n
Jyk7CisKKyAgcXVldWVMb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2Uo
KSk7CisKKyAgYWRkVG9Mb2coJ1N0YXJ0ZWQuLi4nKTsKKworICBzZXRUaW1lb3V0KHJ1bkJlbmNo
bWFya3MsIDApOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgp
Ij4KKzx0ZXh0YXJlYQorICAgIGlkPSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUi
IHJlYWRvbmx5PjwvdGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvYmVuY2hfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZjUwZTc3ZGIyNzZjY2ExZGU0NzIwNTlh
MDc0MDcxYjgxYTkzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2JlbmNoX3dzaC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAyMDExLCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkEg
c2ltcGxlIGxvYWQgdGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KKworQSBjbGllbnQgcHJv
Z3JhbSBzZW5kcyBhIG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2Fn
ZT4iIHRvCit0aGlzIGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8
Y291bnQ+IFdlYlNvY2tldCBtZXNzYWdlcworY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRp
bWU+IHNlY29uZHMuIDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAordmFsdWUuIDxjb3Vu
dD4gbXVzdCBiZSBhbiBpbnRlZ2VyIHZhbHVlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdGltZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJh
bmdlCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAg
IHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgorICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2Uo
KQorICAgIHBhcnRzID0gbGluZS5zcGxpdCgnICcpCisgICAgaWYgbGVuKHBhcnRzKSAhPSAzOgor
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgcGFyYW1ldGVyIGZvcm1hdCcpCisgICAgd2Fp
dCA9IGZsb2F0KHBhcnRzWzBdKQorICAgIGNvdW50ID0gaW50KHBhcnRzWzFdKQorICAgIG1lc3Nh
Z2UgPSBwYXJ0c1syXQorICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKKyAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHRpbWUuc2xlZXAod2Fp
dCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvYmVuY2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNo
bWFyay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxZTVjOTdiM2E3MWJjZjllYmRlN2M0ZmNhZjE1Mzc1Mzg5
YjFjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNo
bWFyay5odG1sCkBAIC0wLDAgKzEsMTc1IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywgR29vZ2xl
IEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
bWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlz
dHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCist
LT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgYmVuY2htYXJrPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InV0aWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgordmFyIGFkZHJlc3NCb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRDb25maWcoKSB7Cisg
IHJldHVybiB7CisgICAgcHJlZml4VXJsOiBhZGRyZXNzQm94LnZhbHVlLAorICAgIHByaW50U2l6
ZTogZ2V0Qm9vbEZyb21DaGVja0JveCgncHJpbnRzaXplJyksCisgICAgbnVtU29ja2V0czogZ2V0
SW50RnJvbUlucHV0KCdudW1zb2NrZXRzJyksCisgICAgLy8gSW5pdGlhbCBzaXplIG9mIG1lc3Nh
Z2VzLgorICAgIG51bUl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtaXRlcmF0aW9ucycp
LAorICAgIG51bVdhcm1VcEl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtd2FybXVwaXRl
cmF0aW9ucycpLAorICAgIHN0YXJ0U2l6ZTogZ2V0SW50RnJvbUlucHV0KCdzdGFydHNpemUnKSwK
KyAgICAvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBtZXNzYWdlIGV4Y2VlZHMg
dGhpcyB0aHJlc2hvbGQuCisgICAgc3RvcFRocmVzaG9sZDogZ2V0SW50RnJvbUlucHV0KCdzdG9w
dGhyZXNob2xkJyksCisgICAgLy8gSWYgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlIGlzIHNtYWxs
LCBzZW5kL3JlY2VpdmUgbXVsdGlwbGUgbWVzc2FnZXMKKyAgICAvLyB1bnRpbCB0aGUgc3VtIG9m
IHNpemVzIHJlYWNoZXMgdGhpcyB0aHJlc2hvbGQuCisgICAgbWluVG90YWw6IGdldEludEZyb21J
bnB1dCgnbWludG90YWwnKSwKKyAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1
dCgnbXVsdGlwbGllcnMnKSwKKyAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2
ZXJpZnlkYXRhJyksCisgICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTog
YWRkVG9TdW1tYXJ5LAorICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAorICAgIG5vdGlm
eUFib3J0OiBub3RpZnlBYm9ydAorICB9OworfQorCitmdW5jdGlvbiBvblNlbmRCZW5jaG1hcmso
KSB7CisgIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRC
b29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ3NlbmRCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rp
b24gb25SZWNlaXZlQmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Cisg
IGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZl
QmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7CisgIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ2JhdGNoQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3RvcCgp
IHsKKyAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcsIGdldEJv
b2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAnc3RvcCcpOworfQorCitmdW5jdGlvbiBpbml0KCkg
eworICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAg
bG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisgIHN1bW1hcnlCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOworCisgIHZhciBzY2hlbWUgPSB3
aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7
CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsg
Jy9iZW5jaG1hcmtfaGVscGVyJzsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJl
c3M7CisKKyAgYWRkVG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2Uo
KSk7CisgIGFkZFRvU3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2Fz
ZSgpKTsKKworICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2co
J1dlYlNvY2tldCBpcyBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBpbml0V29ya2VyKCcnKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8ZGl2IGlk
PSJiZW5jaG1hcmtfZGl2Ij4KKyAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIg
c2l6ZT0iNDAiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0i
b25TZW5kQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2
ZSIgb25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9u
IiB2YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0
eXBlPSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+CisKKyAgPGJyLz4K
KworICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+CisgIDxs
YWJlbCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFi
ZWw+CisgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+Cisg
IDxsYWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KKyAgPGlucHV0IHR5
cGU9ImNoZWNrYm94IiBpZD0id29ya2VyIj4KKyAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24g
d29ya2VyPC9sYWJlbD4KKworICA8YnIvPgorCisgIFBhcmFtZXRlcnM6CisKKyAgPGJyLz4KKwor
ICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KKyAgICAgIDx0
ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgorICAg
IDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KKyAg
ICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48
L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0
ZXJhdGlvbnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVw
aXRlcmF0aW9ucyIgdmFsdWU9IjAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8
dGQ+U3RhcnQgc2l6ZTwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFy
dHNpemUiIHZhbHVlPSIxMDI0MCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0
ZD5TdG9wIHRocmVzaG9sZDwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJz
dG9wdGhyZXNob2xkIiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRy
PgorICAgICAgPHRkPk1pbmltdW0gdG90YWw8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0ibWludG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+CisgICAgPC90cj4KKyAg
ICA8dHI+CisgICAgICA8dGQ+TXVsdGlwbGllcnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBl
PSJ0ZXh0IiBpZD0ibXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgorICAgIDwvdHI+Cisg
IDwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYQorICAg
ICAgaWQ9ImxvZyIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0
YXJlYT4KKzwvZGl2PgorPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgorICBTdW1tYXJ5CisgIDx0ZXh0
YXJlYQorICAgICAgaWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJl
YWRvbmx5PjwvdGV4dGFyZWE+Cis8L2Rpdj4KKworTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3Qg
ZWxpbWluYXRlZC4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNobWFyay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzAxNDcyYTRmYWFjNDQ2YjFjOGJkMjQ1NmYyNzFlOTM0
ZGI1NzFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5j
aG1hcmsuanMKQEAgLTAsMCArMSwyMzggQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5j
LgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCitpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmlu
ZWQiKSB7CisgIC8vIFJ1bm5pbmcgb24gYSB3b3JrZXIKKyAgaW1wb3J0U2NyaXB0cygndXRpbC5q
cycsICd1dGlsX3dvcmtlci5qcycpOworfQorCisvLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xv
YmFscy4KK3ZhciBiZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07CisKK3ZhciBzb2NrZXRz
ID0gW107Cit2YXIgbnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKwordmFyIHRpbWVySUQgPSBu
dWxsOworCitmdW5jdGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgeworICBzb2NrZXQub25vcGVu
ID0gbnVsbDsKKyAgc29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7CisgIHNvY2tldC5vbmVycm9yID0g
bnVsbDsKKyAgc29ja2V0Lm9uY2xvc2UgPSBudWxsOworICBzb2NrZXQuY2xvc2UoKTsKK30KKwor
ZnVuY3Rpb24gZGVzdHJveUFsbFNvY2tldHMoKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc29j
a2V0cy5sZW5ndGg7ICsraSkgeworICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7CisgIH0K
KyAgc29ja2V0cyA9IFtdOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBj
b25maWcsIGlzV2FybVVwKSB7CisgIHRpbWVySUQgPSBudWxsOworCisgIHZhciB0b3RhbFNpemUg
PSAwOworICB2YXIgdG90YWxSZXBsaWVkID0gMDsKKworICB2YXIgb25NZXNzYWdlSGFuZGxlciA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmln
LCBldmVudC5kYXRhLCBzaXplKSkgeworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAg
IGNvbmZpZy5ub3RpZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFs
UmVwbGllZCArPSBzaXplOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgewor
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcs
IHNpemUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2Fy
bVVwKTsKKworICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNb
aV07CisgICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICB2
YXIgZGF0YUFycmF5ID0gW107CisKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3Rh
bCkgeworICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBmaWxs
QXJyYXlCdWZmZXIoYnVmZmVyLCAweDYxKTsKKworICAgIGRhdGFBcnJheS5wdXNoKGJ1ZmZlcik7
CisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cyA9IGdldFRpbWVTdGFtcCgpOworCisgIHRvdGFsU2l6ZSA9IDA7CisKKyAgdmFyIHNvY2tldElu
ZGV4ID0gMDsKKyAgdmFyIGRhdGFJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25m
aWcubWluVG90YWwpIHsKKyAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOworICAgIGNvbW1hbmQu
cHVzaChjb25maWcudmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7CisgICAgc29ja2V0c1tzb2NrZXRJ
bmRleF0uc2VuZChjb21tYW5kLmpvaW4oJyAnKSk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0u
c2VuZChkYXRhQXJyYXlbZGF0YUluZGV4XSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5k
ZXggKyAxKSAlIHNvY2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgICAg
KytkYXRhSW5kZXg7CisgIH0KK30KKworZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0ZXAoc2l6
ZSwgY29uZmlnLCBpc1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxT
aXplID0gMDsKKyAgdmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRs
ZXIgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0
YS5ieXRlTGVuZ3RoOworICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKKyAgICAgIGNv
bmZpZy5hZGRUb0xvZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCisg
ICAgICAgICAgYnl0ZXNSZWNlaXZlZCArICdCJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygp
OworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVudC5kYXRh
LCAweDYxKSkgeworICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmljYXRpb24g
ZmFpbGVkJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlm
eUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IGJ5
dGVzUmVjZWl2ZWQ7CisKKyAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7CisgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6
ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKKyAgICAgICAgaXNXYXJtVXAp
OworCisgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKKyAgfTsKKworICBmb3IgKHZhciBpID0gMDsg
aSA8IHNvY2tldHMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsK
KyAgICBzb2NrZXQuYmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7CisgICAgc29ja2V0Lm9ubWVz
c2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cyA9IGdldFRpbWVTdGFtcCgpOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7CisgIHdoaWxlICh0
b3RhbFNpemUgPCBjb25maWcubWluVG90YWwpIHsKKyAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5z
ZW5kKCdyZWNlaXZlICcgKyBzaXplKTsKKyAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCAr
IDEpICUgc29ja2V0cy5sZW5ndGg7CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorfQor
CitmdW5jdGlvbiBjcmVhdGVTb2NrZXQoY29uZmlnKSB7CisgIC8vIFRPRE8odHlvc2hpbm8pOiBB
ZGQgVENQIHdhcm0gdXAuCisgIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOworCisgIGNvbmZp
Zy5hZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsKTsKKworICB2YXIgc29ja2V0ID0gbmV3IFdlYlNv
Y2tldCh1cmwpOworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBj
b25maWcuYWRkVG9Mb2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRpbmcuJyk7
CisgIH07CisgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRv
TG9nKCdFcnJvcicpOworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgY29uZmlnLmFkZFRvTG9nKCdDbG9zZWQnKTsKKyAgICBjb25maWcubm90aWZ5QWJvcnQo
KTsKKyAgfTsKKyAgcmV0dXJuIHNvY2tldDsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmso
Y29uZmlnKSB7CisgIGNsZWFyVGltZW91dCh0aW1lcklEKTsKKyAgZGVzdHJveUFsbFNvY2tldHMo
KTsKKworICBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOworCisgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29uZmlnLm51bVNvY2tldHM7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2Nr
ZXQoY29uZmlnKTsKKyAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICBjb25m
aWcuYWRkVG9Mb2coJ09wZW5lZCcpOworCisgICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsK
KworICAgICAgaWYgKG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgewor
ICAgICAgICBydW5OZXh0VGFzayhjb25maWcpOworICAgICAgfQorICAgIH07CisgICAgc29ja2V0
cy5wdXNoKHNvY2tldCk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZp
ZykgeworICByZXR1cm4gJyhXZWJTb2NrZXQnICsKKyAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRT
Y3JpcHRzICE9PSAidW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCisgICAgJywgbnVt
U29ja2V0cz0nICsgY29uZmlnLm51bVNvY2tldHMgKworICAgICcsIG51bUl0ZXJhdGlvbnM9JyAr
IGNvbmZpZy5udW1JdGVyYXRpb25zICsKKyAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVy
aWZ5RGF0YSArCisgICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCisgICAgJywg
bnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKworICAg
ICcpJzsKK30KKworZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5h
ZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2Vu
ZFN0cmluZyhjb25maWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7
CisgIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBv
cnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29u
ZmlnKSk7CisgIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOworICBhZGRS
ZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKworICAgICAg
Z2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOworICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQor
CitmdW5jdGlvbiBjbGVhbnVwKCkgeworICBkZXN0cm95QWxsU29ja2V0cygpOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmMxNzUzMzMzNTRjYzljODg1NjJjZjZmYzgxZWYzMjYwOTM3Mjk4NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gu
cHkKQEAgLTAsMCArMSw4NCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJIYW5kbGVyIGZvciBiZW5j
aG1hcmsuaHRtbC4iIiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgc2l4CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgICMgVHVybiBvZmYgY29tcHJlc3Npb24uCisgICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29ycyA9IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBkYXRhID0gYicnCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjb21tYW5kID0g
cmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgY29tbWFuZCBp
cyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uo
Y29tbWFuZCwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJ
bnZhbGlkIGNvbW1hbmQgZGF0YTonICsgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZHMgPSBjb21t
YW5kLnNwbGl0KCcgJykKKyAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA9PSAwOgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6ICcgKyBjb21tYW5kKQor
CisgICAgICAgIGlmIGNvbW1hbmRzWzBdID09ICdyZWNlaXZlJzoKKyAgICAgICAgICAgIGlmIGxl
bihjb21tYW5kcykgIT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAg
ICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNv
bW1hbmQnICsgY29tbWFuZCkKKyAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0pCisK
KyAgICAgICAgICAgICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGlmIGxl
bihkYXRhKSAhPSBzaXplOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiJ2EnICogc2l6ZQorICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVl
KQorICAgICAgICBlbGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKKyAgICAgICAgICAgIGlmIGxl
bihjb21tYW5kcykgIT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAg
ICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWNlaXZl
IGNvbW1hbmQnICsKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKKyAgICAgICAgICAgIHZl
cmlmeV9kYXRhID0gY29tbWFuZHNbMV0gPT0gJzEnCisKKyAgICAgICAgICAgIGRhdGEgPSByZXF1
ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBO
b25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgbm90IHJlY2Vp
dmVkJykKKyAgICAgICAgICAgIHNpemUgPSBsZW4oZGF0YSkKKworICAgICAgICAgICAgaWYgdmVy
aWZ5X2RhdGE6CisgICAgICAgICAgICAgICAgaWYgZGF0YSAhPSBiJ2EnICogc2l6ZToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmljYXRpb24gZmFp
bGVkJykKKworICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHN0cihz
aXplKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFs
aWQgY29tbWFuZDogJyArIGNvbW1hbmRzWzBdKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9leGFtcGxlL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjAwMDVmZmVhOTkw
NWQ2YzE5N2MwZjRkZDU5M2MwNmZmNDM3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw3MCBAQAorIyBDb3B5cmln
aHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
c3RydWN0CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2Rh
dGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nf
c3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5lLnNwbGl0KCcgJywgMSkK
KyAgICAgICAgaWYgY29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oaW50KGNv
ZGUpLCByZWFzb24pCisgICAgICAgICMgY2xvc2VfY29ubmVjdGlvbigpIGluaXRpYXRlcyBjbG9z
aW5nIGhhbmRzaGFrZS4gSXQgdmFsaWRhdGVzIGNvZGUKKyAgICAgICAgIyBhbmQgcmVhc29uLiBJ
ZiB5b3Ugd2FudCB0byBzZW5kIGEgYnJva2VuIGNsb3NlIGZyYW1lIGZvciBhIHRlc3QsCisgICAg
ICAgICMgZm9sbG93aW5nIGNvZGUgd2lsbCBiZSB1c2VmdWwuCisgICAgICAgICMgPiBkYXRhID0g
c3RydWN0LnBhY2soJyFIJywgaW50KGNvZGUpKSArIHJlYXNvbi5lbmNvZGUoJ1VURi04JykKKyAg
ICAgICAgIyA+IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2Nsb3NlX2Zy
YW1lKGRhdGEpKQorICAgICAgICAjID4gIyBTdXBwcmVzcyB0byByZS1yZXNwb25kIGNsaWVudCBy
ZXNwb25kaW5nIGNsb3NlIGZyYW1lLgorICAgICAgICAjID4gcmFpc2UgRXhjZXB0aW9uKCJjdXN0
b21pemVkIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UiKQorCisKK2RlZiB3ZWJf
c29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBTaW1wbHkg
ZWNobyBhIGNsb3NlIHN0YXR1cyBjb2RlCisgICAgY29kZSwgcmVhc29uID0gcmVxdWVzdC53c19j
bG9zZV9jb2RlLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisgICAgIyBweXdlYnNvY2tldCBz
ZXRzIHBzZXVkbyBjb2RlIGZvciByZWNlaXZpbmcgYW4gZW1wdHkgYm9keSBjbG9zZSBmcmFtZS4K
KyAgICBpZiBjb2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEOgorICAgICAg
ICBjb2RlID0gTm9uZQorICAgICAgICByZWFzb24gPSAnJworICAgIHJldHVybiBjb2RlLCByZWFz
b24KKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvY29uc29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4MzQxMWRkZDBi
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5o
dG1sCkBAIC0wLDAgKzEsMzE3IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
K0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0Ogor
CisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0
aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKwor
PCEtLQorQSBzaW1wbGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2NrZXQgc2VydmVyLgorCitU
eXBlIGFuIGFkZHJlc3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5kIGNsaWNrIGNvbm5lY3Qg
dG8gZXN0YWJsaXNoCitXZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBtZXNzYWdlIGludG8gdGhl
IGJvdHRvbSB0ZXh0IGlucHV0IGFuZCBjbGljayBzZW5kCit0byBzZW5kIHRoZSBtZXNzYWdlLiBS
ZWNlaXZlZC9zZW50IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRlIHdpbGwgYmUgc2hvd24K
K29uIHRoZSBtaWRkbGUgdGV4dGFyZWEuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5X
ZWJTb2NrZXQgY29uc29sZTwvdGl0bGU+Cis8c2NyaXB0PgordmFyIHNvY2tldCA9IG51bGw7CisK
K3ZhciBzaG93VGltZVN0YW1wID0gZmFsc2U7CisKK3ZhciBhZGRyZXNzQm94ID0gbnVsbDsKK3Zh
ciBwcm90b2NvbHNCb3ggPSBudWxsOwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgbWVzc2FnZUJv
eCA9IG51bGw7Cit2YXIgZmlsZUJveCA9IG51bGw7Cit2YXIgY29kZUJveCA9IG51bGw7Cit2YXIg
cmVhc29uQm94ID0gbnVsbDsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICByZXR1cm4g
bmV3IERhdGUoKS5nZXRUaW1lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBp
ZiAoc2hvd1RpbWVTdGFtcCkgeworICAgIGxvZ0JveC52YWx1ZSArPSAnWycgKyBnZXRUaW1lU3Rh
bXAoKSArICddICc7CisgIH0KKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdcbicKKyAgLy8gTGFy
Z2UgZW5vdWdoIHRvIGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3NhZ2UuCisgIGxvZ0JveC5z
Y3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5jdGlvbiBzZXRiaW5hcnl0eXBlKGJpbmFyeVR5
cGUpIHsKKyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOwor
ICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5iaW5hcnlUeXBlID0gYmluYXJ5VHlwZTsKKyAg
YWRkVG9Mb2coJ1NldCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBlKTsKK30KKworZnVuY3Rp
b24gc2VuZCgpIHsKKyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3Rl
ZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKG1lc3NhZ2VCb3gudmFsdWUp
OworICBhZGRUb0xvZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7CisgIG1lc3NhZ2VCb3gudmFs
dWUgPSAnJzsKK30KKworZnVuY3Rpb24gc2VuZGZpbGUoKSB7CisgIGlmICghc29ja2V0KSB7Cisg
ICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIg
ZmlsZXMgPSBmaWxlQm94LmZpbGVzOworCisgIGlmIChmaWxlcy5sZW5ndGggPT0gMCkgeworICAg
IGFkZFRvTG9nKCdGaWxlIG5vdCBzZWxlY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNv
Y2tldC5zZW5kKGZpbGVzWzBdKTsKKyAgYWRkVG9Mb2coJz4gU2VuZCAnICsgZmlsZXNbMF0ubmFt
ZSk7Cit9CisKK2Z1bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc1RleHQpIHsKKyAgdmFy
IHByb3RvY29scyA9IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKKyAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwcm90b2NvbHMubGVuZ3RoOyArK2kpIHsKKyAgICBwcm90b2NvbHNbaV0gPSBwcm90b2Nv
bHNbaV0udHJpbSgpOworICB9CisKKyAgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMCkgeworICAg
IC8vIERvbid0IHBhc3MuCisgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgfSBlbHNlIGlmIChwcm90
b2NvbHMubGVuZ3RoID09IDEpIHsKKyAgICBpZiAocHJvdG9jb2xzWzBdLmxlbmd0aCA9PSAwKSB7
CisgICAgICAvLyBEb24ndCBwYXNzLgorICAgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgICB9IGVs
c2UgeworICAgICAgLy8gUGFzcyBhcyBhIHN0cmluZy4KKyAgICAgIHByb3RvY29scyA9IHByb3Rv
Y29sc1swXTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitmdW5jdGlv
biBjb25uZWN0KCkgeworICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1ZTsKKyAgdmFyIHByb3Rv
Y29scyA9IHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7CisKKyAgaWYgKCdXZWJT
b2NrZXQnIGluIHdpbmRvdykgeworICAgIGlmIChwcm90b2NvbHMpIHsKKyAgICAgIHNvY2tldCA9
IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbHMpOworICAgIH0gZWxzZSB7CisgICAgICBzb2Nr
ZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldHVybjsK
KyAgfQorCisgIHNvY2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGV4dHJhSW5m
byA9IFtdOworICAgIGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYmIHNvY2tldC5wcm90b2Nv
bCkgeworICAgICAgZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyArIHNvY2tldC5wcm90b2Nv
bCk7CisgICAgfQorICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tldCkgJiYgc29ja2V0LmV4
dGVuc2lvbnMpIHsKKyAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNpb25zID0gJyArIHNvY2tl
dC5leHRlbnNpb25zKTsKKyAgICB9CisKKyAgICB2YXIgbG9nTWVzc2FnZSA9ICdPcGVuZWQnOwor
ICAgIGlmIChleHRyYUluZm8ubGVuZ3RoID4gMCkgeworICAgICAgbG9nTWVzc2FnZSArPSAnICgn
ICsgZXh0cmFJbmZvLmpvaW4oJywgJykgKyAnKSc7CisgICAgfQorICAgIGFkZFRvTG9nKGxvZ01l
c3NhZ2UpOworICB9OworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgaWYgKCgnQXJyYXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2Vv
ZiBBcnJheUJ1ZmZlcikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGFuIEFycmF5QnVm
ZmVyIG9mICcgKyBldmVudC5kYXRhLmJ5dGVMZW5ndGggKworICAgICAgICAgICAgICAgJyBieXRl
cycpCisgICAgfSBlbHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5z
dGFuY2VvZiBCbG9iKSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYSBCbG9iIG9mICcg
KyBldmVudC5kYXRhLnNpemUgKyAnIGJ5dGVzJykKKyAgICB9IGVsc2UgeworICAgICAgYWRkVG9M
b2coJzwgJyArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBm
dW5jdGlvbiAoKSB7CisgICAgYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNs
b3NlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnQ2xvc2VkICgn
OworICAgIGlmICgoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Nsb3NlRXZlbnQnIGluIHdp
bmRvdykgJiYKKyAgICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VFdmVudCkpIHsKKyAgICAg
IGxvZ01lc3NhZ2UgKz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0NsZWFuOworICAgICAgLy8g
Y29kZSBhbmQgcmVhc29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCisgICAgICAvLyBkcmFmdC1pZXRm
LWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCisgICAgICBpZiAoJ2NvZGUn
IGluIGV2ZW50KSB7CisgICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29kZSA9ICcgKyBldmVudC5j
b2RlOworICAgICAgfQorICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50KSB7CisgICAgICAgIGxv
Z01lc3NhZ2UgKz0gJywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsKKyAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBpcyBub3QgYXZhaWxhYmxl
JzsKKyAgICB9CisgICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7CisgIH07CisKKyAgaWYg
KHByb3RvY29scykgeworICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwgKyAnIChwcm90b2Nv
bHMgPSAnICsgcHJvdG9jb2xzICsgJyknKTsKKyAgfSBlbHNlIHsKKyAgICBhZGRUb0xvZygnQ29u
bmVjdCAnICsgdXJsKTsKKyAgfQorfQorCitmdW5jdGlvbiBjbG9zZVNvY2tldCgpIHsKKyAgaWYg
KCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsK
KyAgfQorCisgIGlmIChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52YWx1ZSkgeworICAgIHNv
Y2tldC5jbG9zZShjb2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUpOworICB9IGVsc2Ugewor
ICAgIHNvY2tldC5jbG9zZSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3RhdGUoKSB7Cisg
IGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1
cm47CisgIH0KKworICBhZGRUb0xvZygKKyAgICAgICd1cmwgPSAnICsgc29ja2V0LnVybCArCisg
ICAgICAnLCByZWFkeVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRlICsKKyAgICAgICcsIGJ1
ZmZlcmVkQW1vdW50ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7Cit9CisKK2Z1bmN0aW9u
IGluaXQoKSB7CisgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0
dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVt
ZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKKworICBhZGRyZXNzQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgcHJvdG9jb2xzQm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3RvY29scycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbG9nJyk7CisgIG1lc3NhZ2VCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbWVzc2FnZScpOworICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUn
KTsKKyAgY29kZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CisgIHJlYXNv
bkJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsKKworICBhZGRyZXNzQm94
LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7CisKKyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93
KSkgeworICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9Cit9
Cis8L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citmb3JtIHsKKyAgbWFyZ2luOiAw
cHg7Cit9CisKKyNjb25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2RpdiwgI3NlbmRmaWxlX2Rp
diwgI2Nsb3NlX2RpdiwgI3ByaW50c3RhdGVfZGl2IHsKKyAgcGFkZGluZzogNXB4OworICBtYXJn
aW46IDVweDsKKyAgYm9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4OworICBib3JkZXItc3R5
bGU6IHNvbGlkOworICBib3JkZXItY29sb3I6IHNpbHZlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+CisKKzxkaXY+CisKKzxkaXYgaWQ9ImNvbm5lY3RfZGl2
Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgpOyByZXR1cm4gZmFsc2U7
Ij4KKyAgICB1cmwgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+Cisg
ICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgorICAgIDxici8+CisgICAg
cHJvdG9jb2xzIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xzIiBzaXplPSIyMCI+Cisg
IDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4KKyAgPHRleHRhcmVhIGlkPSJs
b2ciIHJvd3M9IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAgPGJyLz4KKyAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IgorICAgICAgICAgbmFtZT0ic2hvd3RpbWVzdGFtcCIKKyAg
ICAgICAgIHZhbHVlPSJzaG93dGltZXN0YW1wIgorICAgICAgICAgb25jbGljaz0ic2hvd1RpbWVT
dGFtcCA9IHRoaXMuY2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCis8L2Rpdj4KKworPGRpdiBpZD0i
c2VuZF9kaXYiPgorICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kKCk7IHJldHVybiBm
YWxzZTsiPgorICAgIGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJtZXNzYWdlIiBzaXplPSI0
MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQiPgorICA8L2Zvcm0+Cis8
L2Rpdj4KKworPGRpdiBpZD0ic2VuZGZpbGVfZGl2Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1
Ym1pdD0ic2VuZGZpbGUoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgPGlucHV0IHR5cGU9ImZpbGUi
IGlkPSJmaWxlIiBzaXplPSI0MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNl
bmQgZmlsZSI+CisgIDwvZm9ybT4KKworICBTZXQgYmluYXJ5VHlwZQorICA8aW5wdXQgdHlwZT0i
cmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImJsb2Ii
CisgICAgICAgICBvbmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJykiIGNoZWNrZWQ+YmxvYgor
ICA8aW5wdXQgdHlwZT0icmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAg
ICAgdmFsdWU9ImFycmF5YnVmZmVyIgorICAgICAgICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgn
YXJyYXlidWZmZXInKSI+YXJyYXlidWZmZXIKKzwvZGl2PgorCis8ZGl2IGlkPSJjbG9zZV9kaXYi
PgorICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tldCgpOyByZXR1cm4gZmFs
c2U7Ij4KKyAgICBjb2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29kZSIgc2l6ZT0iMTAiPgor
ICAgIHJlYXNvbiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIgc2l6ZT0iMjAiPgorICAg
IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+CisgIDwvZm9ybT4KKzwvZGl2Pgor
Cis8ZGl2IGlkPSJwcmludHN0YXRlX2RpdiI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVl
PSJwcmludCBzdGF0ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Cis8L2Rpdj4KKworPC9kaXY+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvY29va2llX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MTUyMDk2OTRlM2ZmMjMyMGY1NjgzZWUwNTk2YWUzNDQyOGIxNWViCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5
CkBAIC0wLDAgKzEsNTQgQEAKKyMgQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCisKKworZGVmIF9h
ZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCB2YWx1ZSk6CisgICAgcmVxdWVzdC5leHRyYV9oZWFkZXJz
LmFwcGVuZCgoJ1NldC1Db29raWUnLCB2YWx1ZSkpCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIGNvbXBvbmVudHMgPSB1cmxsaWIucGFyc2UudXJs
cGFyc2UocmVxdWVzdC51cmkpCisgICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KKworICAgIE9O
RV9EQVlfTElGRSA9ICdNYXgtQWdlPTg2NDAwJworCisgICAgaWYgY29tbWFuZCA9PSAnc2V0JzoK
KyAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBP
TkVfREFZX0xJRkVdKSkKKyAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6CisgICAg
ICAgIF9hZGRfc2V0X2Nvb2tpZSgKKyAgICAgICAgICAgIHJlcXVlc3QsICc7ICcuam9pbihbJ2h0
dHBPbmx5Rm9vPWJhcicsIE9ORV9EQVlfTElGRSwgJ2h0dHBPbmx5J10pKQorICAgIGVsaWYgY29t
bWFuZCA9PSAnY2xlYXInOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2Zvbz0w
OyBNYXgtQWdlPTAnKQorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2h0dHBPbmx5
Rm9vPTA7IE1heC1BZ2U9MCcpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Vj
aG9fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNDQ1OWExOWJjNjhjNzg3OWExNzRmNTcyMTIyMzgyOTE0ZTZmN2RkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpA
QCAtMCwwICsxLDY5NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyIiIlNpbXBsZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVj
YXVzZSBvZiBoaXN0b3JpY2FsIHJlYXNvbi4KKworbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBt
dXN0IGJlIGluIFBZVEhPTlBBVEguCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2VydmVyIHNldHVw
CisgJSBjZCAkcHl3ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9k
X3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3ZC9zcmMvZXhh
bXBsZQorCisjIHJ1biBjbGllbnQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3Jj
L2V4YW1wbGUvZWNob19jbGllbnQucHkgLXAgODg4MCBcCisgICAgIC1zIGxvY2FsaG9zdCBcCisg
ICAgIC1vIGh0dHA6Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAorIiIiCisKK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHBy
aW50X2Z1bmN0aW9uCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgY29kZWNzCitmcm9tIGhhc2hsaWIg
aW1wb3J0IHNoYTEKK2ltcG9ydCBsb2dnaW5nCitmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25Q
YXJzZXIKK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2l4Citp
bXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4
dGVuc2lvbnMgaW1wb3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCitmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfUGVyTWVzc2FnZURlZmxhdGVGcmFt
ZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9wYXJzZV93aW5kb3df
Yml0cworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9k
X3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IHV0aWwKKworX1RJTUVPVVRfU0VDID0gMTAKK19VTkRFRklORURfUE9SVCA9
IC0xCisKK19VUEdSQURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCisjIFNwZWNpYWwgbWVz
c2FnZSB0aGF0IHRlbGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFr
ZQorX0dPT0RCWUVfTUVTU0FHRSA9ICdHb29kYnllJworCitfUFJPVE9DT0xfVkVSU0lPTl9IWUJJ
MTMgPSAnaHliaTEzJworCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6
CisgICAgcGFzcworCisKK2RlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJl
dHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfb3JpZ2luX2hl
YWRlcihoZWFkZXIsIG9yaWdpbik6CisgICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhl
IHN0cmluZyAiT3JpZ2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKKyAgICAjIGFuZCB0
aGUgL29yaWdpbi8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVs
ZHMvLgorICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkK
KworCitkZWYgX2Zvcm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgorICAgICMg
NC4xIDkuIExldCAvaG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAjIDQuMSAxMC4g
QXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRv
CisgICAgIyAvaG9zdHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKKyAgICAjIDQu
MSAxMS4gSWYgL3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAv
c2VjdXJlLworICAgICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVu
ZCBhIFUrMDAzQSBDT0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFs
dWUgb2YgL3BvcnQvLCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAorICAgICMgdG8g
L2hvc3Rwb3J0LworICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVM
VF9XRUJfU09DS0VUX1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IGNv
bW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQg
Kz0gJzonICsgc3RyKHBvcnQpCisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0
cmluZyAiSG9zdDoiLCBhIFUrMDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rw
b3J0LywgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChjb21tb24uSE9T
VF9IRUFERVIsIGhvc3Rwb3J0KQorCisKK2RlZiBfcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0
aCk6CisgICAgcmVjdl9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0gbGVuZ3RoCisgICAgd2hp
bGUgcmVtYWluaW5nID4gMDoKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihy
ZW1haW5pbmcpCisgICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJh
aXNlIElPRXJyb3IoCisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSBy
ZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQg
JWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAg
KGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjdl9ieXRlcy5hcHBlbmQo
cmVjZWl2ZWRfYnl0ZXMpCisgICAgICAgIHJlbWFpbmluZyAtPSBsZW4ocmVjZWl2ZWRfYnl0ZXMp
CisgICAgcmV0dXJuIGInJy5qb2luKHJlY3ZfYnl0ZXMpCisKKworZGVmIF9nZXRfbWFuZGF0b3J5
X2hlYWRlcihmaWVsZHMsIG5hbWUpOgorICAgICIiIkdldHMgdGhlIHZhbHVlIG9mIHRoZSBoZWFk
ZXIgc3BlY2lmaWVkIGJ5IG5hbWUgZnJvbSBmaWVsZHMuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4
cGVjdHMgdGhhdCB0aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFt
ZQorICAgIGluIGZpZWxkcy4gT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJy
b3IuCisgICAgIiIiCisKKyAgICB2YWx1ZXMgPSBmaWVsZHMuZ2V0KG5hbWUubG93ZXIoKSkKKyAg
ICBpZiB2YWx1ZXMgaXMgTm9uZSBvciBsZW4odmFsdWVzKSA9PSAwOgorICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcignJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZh
bHVlcykpCisgICAgaWYgbGVuKHZhbHVlcykgPiAxOgorICAgICAgICByYWlzZSBDbGllbnRIYW5k
c2hha2VFcnJvcignTXVsdGlwbGUgJXMgaGVhZGVycyBmb3VuZDogJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlcykpCisgICAgcmV0dXJuIHZhbHVl
c1swXQorCisKK2RlZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
X3NlbnNpdGl2ZT1GYWxzZSk6CisgICAgIiIiR2V0cyBhbmQgdmFsaWRhdGVzIHRoZSB2YWx1ZSBv
ZiB0aGUgaGVhZGVyIHNwZWNpZmllZCBieSBuYW1lIGZyb20KKyAgICBmaWVsZHMuCisKKyAgICBJ
ZiBleHBlY3RlZF92YWx1ZSBpcyBzcGVjaWZpZWQsIGNvbXBhcmVzIGV4cGVjdGVkIHZhbHVlIGFu
ZCBhY3R1YWwgdmFsdWUKKyAgICBhbmQgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yIG9u
IGZhaWx1cmUuIFlvdSBjYW4gc3BlY2lmeSBjYXNlCisgICAgc2Vuc2l0aXZlbmVzcyBpbiB0aGlz
IGNvbXBhcmlzb24gYnkgY2FzZV9zZW5zaXRpdmUgcGFyYW1ldGVyLiBUaGlzIGZ1bmN0aW9uCisg
ICAgZXhwZWN0cyB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmll
ZCBuYW1lIGluIGZpZWxkcy4KKyAgICBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hh
a2VFcnJvci4KKyAgICAiIiIKKworICAgIHZhbHVlID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZp
ZWxkcywgbmFtZSkKKworICAgIGlmICgoY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlICE9IGV4cGVj
dGVkX3ZhbHVlKSBvcgorICAgICAgICAobm90IGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZS5sb3dl
cigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCkpKToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAl
ciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAobmFtZSwgZXhwZWN0
ZWRfdmFsdWUsIHZhbHVlKSkKKworCitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIi
V3JhcHBlciBmb3IgYSBUTFMgY29ubmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cmF3X3NvY2tldCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3
X3NvY2tldCkKKworICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBk
b25lIG9uIHdyYXBfc29ja2V0IGNhbGwuCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJDaXBo
ZXI6ICVzIiwgc2VsZi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKKworICAgIGRlZiBzZW5kKHNlbGYs
IGRhdGEpOgorICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC53cml0ZShkYXRhKQorCisg
ICAgZGVmIHNlbmRhbGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29j
a2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LmNsb3NlKCkKKworICAgIGRlZiBn
ZXRwZWVybmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuZ2V0cGVl
cm5hbWUoKQorCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUJhc2Uob2JqZWN0KToKKyAgICAiIiJB
IGJhc2UgY2xhc3MgZm9yIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZv
ciBlYWNoCisgICAgcHJvdG9jb2wgdmVyc2lvbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxm
KQorCisgICAgZGVmIF9yZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAv
ZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5Lgor
ICAgICAgICBmaWVsZHMgPSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAg
ICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFy
cmF5cworICAgICAgICAgICAgbmFtZSA9IGInJworICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAg
ICAgICAgICAgICMgNC4xIDM0LiByZWFkIC9uYW1lLworICAgICAgICAgICAgbmFtZSA9IHNlbGYu
X3JlYWRfbmFtZSgpCisgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICMgNC4xIDM1LiByZWFkIHNwYWNlcworICAgICAgICAgICAg
IyBUT0RPKHR5b3NoaW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhl
IHNwZWMuCisgICAgICAgICAgICBjaCA9IHNlbGYuX3NraXBfc3BhY2VzKCkKKyAgICAgICAgICAg
ICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fcmVhZF92
YWx1ZShjaCkKKyAgICAgICAgICAgICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2
ZXIKKyAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAg
ICAgICAgICAgaWYgY2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1
dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCisgICAgICAgICAgICAgICAg
ICAgICdoZWFkZXIgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCisgICAgICAgICAgICAjIDQu
MSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBu
YW1lCisgICAgICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJw
cmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0
cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICMgb2J0
YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBi
eXRlCisgICAgICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0
KG5hbWUuZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
LmFwcGVuZCh2YWx1ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICAgICAjIDQuMSAzOS4gcmV0
dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisg
ICAgZGVmIF9yZWFkX25hbWUoc2VsZik6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJl
IGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1
ZToKKyAgICAgICAgICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAg
ICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAg
ICAgaWYgY2ggPT0gYidccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3Rl
ZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgICAgIGVs
aWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxvd2Vy
KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSArPSBjaAorCisgICAg
ZGVmIF9za2lwX3NwYWNlcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZy
b20gdGhlIHNlcnZlcgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBfcmVj
ZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJyAnOiAg
IyAweDIwCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybiBjaAor
CisgICAgZGVmIF9yZWFkX3ZhbHVlKHNlbGYsIGNoKToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAv
dmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAg
ICMgNC4xIDM2LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlCisgICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAg
ICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAg
ICdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKworCitkZWYgX2dldF9wZXJt
ZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6CisgICAgIiIiVmFsaWRh
dGUgdGhlIHJlc3BvbnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBwYXJh
bWV0ZXJzIGluCisgICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCB0
aGUgc2VydmVyXy4qIHBhcmFtZXRlcnMuCisgICAgIiIiCisKKyAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzID0gTm9uZQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQorCisg
ICAgY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAg
ICBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFS
QU0pCisKKyAgICAjIFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgorICAg
ICMgSGFuZGxlIHRob3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVz
cG9uc2UuCisKKyAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50
X21heF93aW5kb3dfYml0c19uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3df
Yml0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignTXVsdGlwbGUgJXMgZm91bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCisKKyAgICAgICAgICAg
IHBhcnNlZF92YWx1ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKKyAgICAgICAg
ICAgIGlmIHBhcnNlZF92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVu
dEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFkICVzOiAlcicgJSAoY2xp
ZW50X21heF93aW5kb3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCisgICAgICAgICAgICBjbGll
bnRfbWF4X3dpbmRvd19iaXRzID0gcGFyc2VkX3ZhbHVlCisgICAgICAgIGVsaWYgcGFyYW1fbmFt
ZSA9PSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgorICAgICAgICAgICAgaWYgY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ011bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXJfbmFtZSkKKworICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgICdCYWQgJXM6IEhhcyB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAgICAoY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICBpZiBjbGllbnRfbm9fY29udGV4
dF90YWtlb3ZlciBpcyBOb25lOgorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9
IEZhbHNlCisKKyAgICByZXR1cm4gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKGNsaWVudF9tYXhf
d2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRf
bm9fY29udGV4dF90YWtlb3ZlcikKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3Io
Q2xpZW50SGFuZHNoYWtlQmFzZSk6CisgICAgIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtl
IHByb2Nlc3NvcgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlv
bnMpOgorICAgICAgICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5p
dF9fKCkKKworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5fb3B0
aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZv
cm1zIG9wZW5pbmcgaGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorCisgICAgICAg
IFJhaXNlczoKKyAgICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFp
bGVkLgorICAgICAgICAiIiIKKworICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9k
X2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kYWxsKHJlcXVlc3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzID0g
W10KKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFk
ZXIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKKyAgICAgICAgZmllbGRzLmFwcGVuZChf
VVBHUkFERV9IRUFERVIpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVS
KQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgX29yaWdpbl9oZWFkZXIoY29tbW9u
Lk9SSUdJTl9IRUFERVIsIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5h
bF9rZXkgPSBvcy51cmFuZG9tKDE2KQorICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5j
b2RlKG9yaWdpbmFsX2tleSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVz
KScsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9rZXksIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCisgICAgICAgIGZp
ZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgKGNv
bW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleS5kZWNvZGUoJ1VURi04Jykp
KQorCisgICAgICAgIGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVkXHJcbicgJQor
ICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLCBjb21tb24u
VkVSU0lPTl9IWUJJX0xBVEVTVCkpCisKKyAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0g
W10KKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6Cisg
ICAgICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAg
ICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICAg
ICAgIyBBY2NlcHQgdGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRl
ciBieSBkZWZhdWx0LgorICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCisgICAg
ICAgICAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCisgICAgICAg
ICAgICAgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sIE5vbmUpCisgICAgICAgICAg
ICBleHRlbnNpb25zX3RvX3JlcXVlc3QuYXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBpZiBs
ZW4oZXh0ZW5zaW9uc190b19yZXF1ZXN0KSAhPSAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVu
ZCgnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19X
RUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21tb24uZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190b19yZXF1ZXN0KSkpCisKKyAgICAg
ICAgZm9yIGZpZWxkIGluIGZpZWxkczoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxs
KGZpZWxkLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChi
J1xyXG4nKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3Bl
bmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmllbGRzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVz
LUxpbmUnKQorCisgICAgICAgIHN0YXR1c19saW5lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6
CisgICAgICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAg
ICAgICAgIHN0YXR1c19saW5lICs9IGNoCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xuJzoKKyAg
ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIG0gPSByZS5tYXRjaChiJ0hUVFAvXFxkK1wu
XFxkKyAoXFxkXFxkXFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkKKyAgICAgICAgaWYgbSBpcyBO
b25lOgorICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ1dyb25nIHN0YXR1
cyBsaW5lIGZvcm1hdDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXR1c19saW5lKQorICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAg
ICAgaWYgc3RhdHVzX2NvZGUgIT0gYicxMDEnOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICVzIHdpdGggZm9s
bG93aW5nIGhlYWRlcnM6ICVyJywKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgc2VsZi5f
cmVhZF9maWVsZHMoKSkKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAor
ICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQg
JXInICUgc3RhdHVzX2NvZGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZl
ZCB2YWxpZCBTdGF0dXMtTGluZScpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3RhcnQg
cmVhZGluZyBoZWFkZXJzIHVudGlsIHdlIHNlZSBhbiBlbXB0eSBsaW5lJykKKworICAgICAgICBm
aWVsZHMgPSBzZWxmLl9yZWFkX2ZpZWxkcygpCisKKyAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRl
cyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhw
ZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAn
CisgICAgICAgICAgICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczog
JXInLCBmaWVsZHMpCisKKyAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRz
LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFLCBGYWxzZSkKKworICAgICAgICBfdmFs
aWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVD
VElPTl9UWVBFLCBGYWxzZSkKKworICAgICAgICBhY2NlcHQgPSBfZ2V0X21hbmRhdG9yeV9oZWFk
ZXIoZmllbGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9u
LlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICAjIFZhbGlkYXRlCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFj
Y2VwdCkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRz
aGFrZUVycm9yKCdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURF
UiwgYWNjZXB0KSkKKworICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6CisgICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRGVj
b2RlZCB2YWx1ZSBvZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCisgICAgICAgICAgICAgICAg
Y29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ1Jlc3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywgYWNjZXB0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCisKKyAg
ICAgICAgYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoc2VsZi5fa2V5ICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJ
RCkuZGlnZXN0KCkKKyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShi
aW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhw
ZWN0ZWQgcmVzcG9uc2UgZm9yIGNoYWxsZW5nZTogJXIgKCVzKScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1
dGlsLmhleGlmeShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQg
IT0gZXhwZWN0ZWRfYWNjZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjog
JXIgKGV4cGVjdGVkOiAlcyknICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NL
RVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCA9IEZhbHNlCisKKyAgICAgICAgZXh0ZW5zaW9uc19o
ZWFkZXIgPSBmaWVsZHMuZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhU
RU5TSU9OU19IRUFERVIubG93ZXIoKSkKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtd
CisgICAgICAgIGlmIGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5z
aW9uc19oZWFkZXIpICE9IDA6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29t
bW9uLnBhcnNlX2V4dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCisKKyAgICAgICAgZm9y
IGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgZXh0ZW5zaW9u
X25hbWUgPSBleHRlbnNpb24ubmFtZSgpCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUg
PT0gY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04KKyAgICAgICAgICAgICAgICAg
ICAgYW5kIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6CisgICAgICAgICAg
ICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQorCisgICAgICAgICAgICAg
ICAgZnJhbWVyID0gX2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKKyAg
ICAgICAgICAgICAgICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkK
KyAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBm
cmFtZXIKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcignVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lKQorCisgICAgICAgIGlm
IChzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAgICAgICAgICAgICBh
bmQgbm90IHBlcm1lc3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCk6CisgICAgICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkICVzLCBidXQg
dGhlIHNlcnZlciByZWplY3RlZCBpdCcgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNT
QUdFX0RFRkxBVEVfRVhURU5TSU9OKQorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRs
ZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRs
ZSBDb29raWUsIGV0Yy4KKworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uKG9iamVjdCk6CisgICAg
IiIiQSB3cmFwcGVyIGZvciBzb2NrZXQgb2JqZWN0IHRvIHByb3ZpZGUgdGhlIG1wX2Nvbm4gaW50
ZXJmYWNlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgorICAgICAg
ICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIG4p
OgorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKKworICAgIGRlZiBnZXRfcmVt
b3RlX2FkZHIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUo
KQorCisgICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisKKworY2xh
c3MgQ2xpZW50UmVxdWVzdChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBqdXN0IHRv
IG1ha2UgaXQgYWJsZSB0byBwYXNzIGEgc29ja2V0IG9iamVjdCB0bworICAgIGZ1bmN0aW9ucyB0
aGF0IGV4cGVjdCBhIG1wX3JlcXVlc3Qgb2JqZWN0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCisgICAgICAgIHNlbGYud3Nf
dmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisKKworY2xhc3MgRWNob0NsaWVu
dChvYmplY3QpOgorICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGls
LmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICIi
IlJ1biB0aGUgY2xpZW50LgorCisgICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBz
ZW5kaW5nIG1lc3NhZ2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KKyAgICAgICAgIiIiCisKKyAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuX3NvY2tl
dC5zZXR0aW1lb3V0KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jb25uZWN0KAorICAgICAgICAgICAgICAgIChzZWxm
Ll9vcHRpb25zLnNlcnZlcl9ob3N0LCBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKKyAgICAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9z
b2NrZXQgPSBfVExTU29ja2V0KHNlbGYuX3NvY2tldCkKKworICAgICAgICAgICAgc2VsZi5faGFu
ZHNoYWtlID0gQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yKHNlbGYuX3NvY2tldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zKQorCisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKKworICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAg
ICAgICAgICByZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAg
ICAgIHN0cmVhbV9vcHRpb24gPSBTdHJlYW1PcHRpb25zKCkKKyAgICAgICAgICAgIHN0cmVhbV9v
cHRpb24ubWFza19zZW5kID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtX29wdGlvbi51bm1hc2tf
cmVjZWl2ZSA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1l
c3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVyID0gc2Vs
Zi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgZnJhbWVy
LnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb24pCisKKyAgICAgICAgICAgIHNlbGYu
X3N0cmVhbSA9IFN0cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBm
b3IgbGluZSBpbiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDog
JXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJl
Y2VpdmVkID0gc2VsZi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnQoJ1JlY3Y6ICVzJyAlIHJlY2VpdmVkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3Nl
OgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQorICAgICAg
ICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRz
aGFrZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2Uo
KQorCisgICAgZGVmIF9kb19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVy
Zm9ybSBjbG9zaW5nIGhhbmRzaGFrZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUu
IiIiCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09
IF9HT09EQllFX01FU1NBR0U6CisgICAgICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlh
dGVkIGNsb3NpbmcgaGFuZHNoYWtlLCBzbworICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2lu
ZyBoYW5kc2hha2UgbWVzc2FnZSBmcm9tIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdXYWl0IGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAg
ICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAg
ICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmVjdiBj
bG9zZScpCisgICAgICAgICAgICAgICAgcHJpbnQoJ1NlbmQgYWNrJykKKyAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQg
YWNrJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2Un
KQorICAgICAgICBzZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5pbmZvKCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgcHJpbnQoJ1Jl
Y3YgYWNrJykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCisKKwor
ZGVmIG1haW4oKToKKyAgICBpZiBzaXguUFkyOgorICAgICAgICBzeXMuc3Rkb3V0ID0gY29kZWNz
LmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rkb3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFy
c2VyKCkKKyAgICAjIFdlIGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdo
aWNoIGlzIHRoZSBzYW1lIGFzIEdvb2dsZQorICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNv
bW1vbiAtLWNvbW1hbmQtbGluZS1mbGFnIHN0eWxlIGZsYWdzLgorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctcycsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZXN0PSdzZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1wb3J0JywKKyAgICAgICAgICAgICAg
ICAgICAgICAnLS1zZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2Vy
dmVyX3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nc2VydmVyIHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsCisgICAg
ICAgICAgICAgICAgICAgICAgJy0tb3JpZ2luJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSdvcmlnaW4nLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
J29yaWdpbicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1yZXNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVzb3VyY2Un
LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdD0nL2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jlc291
cmNlIHBhdGgnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tbWVzc2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWVzc2FnZScs
CisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgnY29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBm
cm9tIHNlcnZlci4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNT
QUdFKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAg
ICctLXF1aWV0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3Mg
bWVzc2FnZXMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tdGxzJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfdGxzJywKKyAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIFRM
UyAod3NzOi8vKS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0tc29ja2V0LXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNv
Y2tldF90aW1lb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91
dCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PV9USU1FT1VUX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdU
aW1lb3V0KHNlYykgZm9yIHNvY2tldHMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXVzZS1w
ZXJtZXNzYWdlLWRlZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXVzZV9wZXJtZXNz
YWdlX2RlZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdl
X2RlZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdVc2UgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uJykKKyAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxv
Z19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdp
bmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdMb2cgbGV2ZWwuJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJz
ZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcu
Z2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQorCisgICAgIyBEZWZhdWx0
IHBvcnQgbnVtYmVyIGRlcGVuZHMgb24gd2hldGhlciBUTFMgaXMgdXNlZC4KKyAgICBpZiBvcHRp
b25zLnNlcnZlcl9wb3J0ID09IF9VTkRFRklORURfUE9SVDoKKyAgICAgICAgaWYgb3B0aW9ucy51
c2VfdGxzOgorICAgICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlv
bnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworICAgICMg
b3B0cGFyc2UgZG9lc24ndCBzZWVtIHRvIGhhbmRsZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMu
CisgICAgIyBTZXQgZGVmYXVsdCBtZXNzYWdlIGhlcmUuCisgICAgaWYgbm90IG9wdGlvbnMubWVz
c2FnZToKKyAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAj
ICJKYXBhbiIgaW4gSmFwYW5lc2UKKworICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViYTUwMzIyMThkMjY5OTU4YmY3NTFiZjYwOGJiYjUyNTU2YzZmNzYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CkBA
IC0wLDAgKzEsNjIgQEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc2l4CisKK19HT09EQllF
X01FU1NBR0UgPSB1J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBo
ZWFkZXIgdmFsdWUgaXMgcGFyc2VkIGludG8KKyAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRl
bnNpb25zLiBweXdlYnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgorICAgIHByb2Nlc3NvcnMgdXNp
bmcgaXQgYmVmb3JlIGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBp
dAorICAgIGFmdGVyIHRoZSBjYWxsLgorCisgICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNp
b25zLCBjbGVhciB0aGUgcHJvY2Vzc29yIGxpc3QuCisgICAgIiIiCisKKyAgICByZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgorICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHkuIiIiCisKKyAg
ICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9t
ZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICBy
ZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAg
ICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvZWNob193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2M2YzUzMTFiYmI5OWYzMzRm
MzM1N2Q4MDFhMmY0MjA1NjAwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvZWNob193c2gucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQgMjAxMSwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBzaXgKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUaGlzIGV4YW1wbGUg
aGFuZGxlciBhY2NlcHRzIGFueSByZXF1ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3Ig
aG93CisgICAgIyB0byByZWplY3QgYWNjZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQg
b24gb3JpZ2luIHZhbHVlLgorCisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlm
IGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNl
KGxpbmUsIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2Vu
ZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dP
T0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1
ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5k
bGVyX21hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1OTkwNTg2Nzg0
MmFlYjg2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFu
ZGxlcl9tYXAudHh0CkBAIC0wLDAgKzEsMTEgQEAKKyMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZp
bGUsIHVzZWQgYnkgc3RhbmRhbG9uZS5weSAtbSBvcHRpb24uCisjIEEgbGluZSBzdGFydGluZyB3
aXRoICcjJyBpcyBhIGNvbW1lbnQgbGluZS4KKyMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlh
c19yZXNvdXJjZV9wYXRoJyBhbmQgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnCisjIHNlcGFyYXRl
ZCBieSBzcGFjZXMuCisjIEFsaWFzaW5nIGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhl
IGJvdHRvbSBvZiB0aGUgbGluZSwgYW5kCisjICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0
IGV4aXN0IGJlZm9yZSBpdCBpcyBhbGlhc2VkLgorIyBGb3IgZXhhbXBsZSwKKyMgIC8gL2VjaG8K
KyMgbWVhbnMgdGhhdCBhIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVy
cyBmb3IgJy9lY2hvJy4KKy8gL2VjaG8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9oc3RzX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTg2MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkK
QEAgLTAsMCArMSw0MCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBl
bmQoCisgICAgICAgICgnU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAw
JykpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9p
bnRlcm5hbF9lcnJvcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFs
X2Vycm9yX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGFhNjg0MjgzYTYwM2Y1YjMzZGRhNTI2MzAxOTk5
YjQ0NzkyZGRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9p
bnRlcm5hbF9lcnJvcl93c2gucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgbXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KToKKyAgICByYWlzZSBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50
aW9uYWwnKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTc2N2FiOTMyZmI1ODI4MjRh
YWYxYTU3ZDkyNDljMzA0YmQ1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMgVGhpcyBleGFtcGxlIGlzIGRlcml2ZWQgZnJvbSB0ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL29yaWdpbl9jaGVja193c2gucHkuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8v
ZXhhbXBsZS5jb20nOgorICAgICAgICByZXR1cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFj
Y2VwdGFibGUgb3JpZ2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
ZSgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90
b2NvbCkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4
YjJjMDhmNmEyMjU0YTFmOWQ3NjUwNzkwMmMxYTZiNWFlZTg4YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDM3IEBACis8IS0tCitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgor
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0Eg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCFET0NU
WVBFIGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJwZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
MDQwOWFhNmViNWZkMWExMWFlMmQ1YmExNTZiYjhhYWMyZmNhYWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCkBA
IC0wLDAgKzEsODYgQEAKKy8vIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworZnVuY3Rpb24gcGVyZlRlc3RBZGRUb0xvZyh0ZXh0KSB7CisgIHBhcmVudC5wb3N0TWVz
c2FnZSh7J2NvbW1hbmQnOiAnbG9nJywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Cit9CisKK2Z1bmN0
aW9uIHBlcmZUZXN0QWRkVG9TdW1tYXJ5KHRleHQpIHsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RN
ZWFzdXJlVmFsdWUodmFsdWUpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdt
ZWFzdXJlVmFsdWUnLCAndmFsdWUnOiB2YWx1ZX0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZU
ZXN0Tm90aWZ5QWJvcnQoKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90
aWZ5QWJvcnQnfSwgJyonKTsKK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VU
ZXN0KGRhdGFUeXBlLCBhc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJpZnlEYXRhLCBudW1JdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bVdhcm1VcEl0ZXJhdGlvbnMpIHsKKworICByZXR1cm4geworICAgIHByZWZp
eFVybDogJ3dzOi8vJyArIGxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInLAorICAg
IHByaW50U2l6ZTogdHJ1ZSwKKyAgICBudW1Tb2NrZXRzOiAxLAorICAgIC8vICsgMSBpcyBmb3Ig
YSB3YXJtdXAgaXRlcmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgorICAgIG51bUl0
ZXJhdGlvbnM6IG51bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKKyAgICBu
dW1XYXJtVXBJdGVyYXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAorICAgIG1pblRvdGFsOiAx
MDI0MDAwMCwKKyAgICBzdGFydFNpemU6IDEwMjQwMDAwLAorICAgIHN0b3BUaHJlc2hvbGQ6IDEw
MjQwMDAwLAorICAgIG11bHRpcGxpZXJzOiBbMl0sCisgICAgdmVyaWZ5RGF0YTogdmVyaWZ5RGF0
YSwKKyAgICBkYXRhVHlwZTogZGF0YVR5cGUsCisgICAgYXN5bmM6IGFzeW5jLAorICAgIGFkZFRv
TG9nOiBwZXJmVGVzdEFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRUb1N1
bW1hcnksCisgICAgbWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKKyAgICBub3Rp
ZnlBYm9ydDogcGVyZlRlc3ROb3RpZnlBYm9ydAorICB9OworfQorCit2YXIgZGF0YTsKK29ubWVz
c2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgdmFyIGFjdGlvbjsKKyAgaWYgKG1lc3NhZ2Uu
ZGF0YS5jb21tYW5kID09PSAnc3RhcnQnKSB7CisgICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKKyAg
ICBpbml0V29ya2VyKCdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QpOworICAgIGFjdGlvbiA9IGRh
dGEuYmVuY2htYXJrTmFtZTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rpb24gPSAnc3RvcCc7CisgIH0K
KworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGEuZGF0YVR5
cGUsIGRhdGEuYXN5bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YS52ZXJpZnlEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEubnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICBkb0FjdGlvbihjb25m
aWcsIGRhdGEuaXNXb3JrZXIsIGFjdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwM2NiNzQwMWI3ODdhYzZlMTFj
Njc0NmM2ODQyZTU3ZDM4MDk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jp
bi9weXRob24KKworIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZQorIyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3Ig
YXQKKyMgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMv
YnNkCisiIiJDR0kgc2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRUUCBoZWFk
ZXJzIG9uIHRoZSBvcmlnaW4gcGFnZS4KKworTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRvbid0IHdv
cmsgb24gdGhlIHN0YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKK21vZGUuCisi
IiIKKworcHJpbnQgIiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKK0NvbnRlbnQtU2VjdXJpdHkt
UG9saWN5OiBjb25uZWN0LXNyYyBzZWxmCisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0
KCJ3czovL2V4YW1wbGUuY29tIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4iIiIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTAxNjBjYjQwYzRjNzgwMGNkOWU3
NjMwMDE0MGI5YmZlOWYxNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsLmpzCkBAIC0wLDAgKzEsMzIzIEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29v
Z2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxp
Y2F0aW9ucyAoZm9yIGJvdGggbWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCisKK3ZhciByZXN1bHRz
ID0ge307CisKK2Z1bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIERhdGUubm93KCk7
Cit9CisKK2Z1bmN0aW9uIGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5N
cywgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zLAorICAgIHNwZWVkLCBwcmludFNpemUpIHsKKyAg
aWYgKHByaW50U2l6ZSkgeworICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKKyAgICAgICAgJ1x0
JyArIHRpbWVQZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpICsKKyAgICAgICAgKHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5NcyA9PSAtMSA/CisgICAgICAgICAgICAnJyA6CisgICAgICAgICAgICAnXHQn
ICsgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKKyAgICAgICAgJ1x0JyAr
IHNwZWVkLnRvRml4ZWQoMyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5n
KCk7CisgIH0KK30KKworZnVuY3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKKyAgcmVzdWx0cyA9
IHt9OworfQorCitmdW5jdGlvbiByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKKyAgY29uZmln
LmFkZFRvU3VtbWFyeSgKKyAgICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRl
diB0aW1lW21zXVx0U3BlZWRbS0Ivc10nKTsKKyAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7
CisgICAgdmFyIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90
IC8gcmVzdWx0c1tzaXplXS5uOworICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihz
aXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zKTsKKyAgICAvLyBDYWxjdWxhdGUgc2FtcGxl
IHN0YW5kYXJkIGRldmlhdGlvbgorICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBN
YXRoLnNxcnQoCisgICAgICAgIChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0u
biAtCisgICAgICAgICAgICBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQ
ZXJNZXNzYWdlSW5NcykgKgorICAgICAgICByZXN1bHRzW3NpemVdLm4gLworICAgICAgICAocmVz
dWx0c1tzaXplXS5uIC0gMSkpOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0
SW5LaUIoCisgICAgICAgIHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRp
bWVQZXJNZXNzYWdlSW5Ncywgc3BlZWQsCisgICAgICAgIHRydWUpKTsKKyAgfQorfQorCitmdW5j
dGlvbiBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgeworICByZXR1cm4g
TWF0aC5yb3VuZChzaXplIC8gdGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKK30KKworZnVu
Y3Rpb24gY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5Ncywg
dG90YWxTaXplLAorICAgIGlzV2FybVVwKSB7CisgIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGlt
ZVN0YW1wKCkgLSBzdGFydFRpbWVJbk1zOworICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZElu
S0IodG90YWxTaXplLCB0aW1lU3BlbnRJbk1zKTsKKyAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9
IHRpbWVTcGVudEluTXMgLyAodG90YWxTaXplIC8gc2l6ZSk7CisgIGlmICghaXNXYXJtVXApIHsK
KyAgICBjb25maWcubWVhc3VyZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgaWYgKCFy
ZXN1bHRzW3NpemVdKSB7CisgICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBz
dW1fdDI6IDB9OworICAgIH0KKyAgICByZXN1bHRzW3NpemVdLm4gKys7CisgICAgcmVzdWx0c1tz
aXplXS5zdW1fdCArPSB0aW1lUGVyTWVzc2FnZUluTXM7CisgICAgcmVzdWx0c1tzaXplXS5zdW1f
dDIgKz0gdGltZVBlck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOworICB9CisgIGNv
bmZpZy5hZGRUb0xvZyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMs
IC0xLCBzcGVlZCwKKyAgICAgIGNvbmZpZy5wcmludFNpemUpKTsKK30KKworZnVuY3Rpb24gcmVw
ZWF0U3RyaW5nKHN0ciwgY291bnQpIHsKKyAgdmFyIGRhdGEgPSAnJzsKKyAgdmFyIGV4cENodW5r
ID0gc3RyOworICB2YXIgcmVtYWluID0gY291bnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYg
KHJlbWFpbiAlIDIpIHsKKyAgICAgIGRhdGEgKz0gZXhwQ2h1bms7CisgICAgICByZW1haW4gPSAo
cmVtYWluIC0gMSkgLyAyOworICAgIH0gZWxzZSB7CisgICAgICByZW1haW4gLz0gMjsKKyAgICB9
CisKKyAgICBpZiAocmVtYWluID09IDApCisgICAgICBicmVhazsKKworICAgIGV4cENodW5rID0g
ZXhwQ2h1bmsgKyBleHBDaHVuazsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24g
ZmlsbEFycmF5QnVmZmVyKGJ1ZmZlciwgYykgeworICB2YXIgaTsKKworICB2YXIgdTMyQ29udGVu
dCA9IGMgKiAweDAxMDEwMTAxOworCisgIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZl
ci5ieXRlTGVuZ3RoIC8gNCk7CisgIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZl
ciwgMCwgdTMyQmxvY2tzKTsKKyAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9t
ZS4gRG9uJ3QgdXNlIGl0IGZvciBsb29wIGNvbmRpdGlvbi4KKyAgZm9yIChpID0gMDsgaSA8IHUz
MkJsb2NrczsgKytpKSB7CisgICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7CisgIH0KKworICAv
LyBGcmFjdGlvbgorICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2Nr
cyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAq
IDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAgICB1
OFZpZXdbaV0gPSBjOworICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZl
ciwgZXhwZWN0ZWRDaGFyKSB7CisgIHZhciBpOworCisgIHZhciBleHBlY3RlZFUzMlZhbHVlID0g
ZXhwZWN0ZWRDaGFyICogMHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9v
cihidWZmZXIuYnl0ZUxlbmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJh
eShidWZmZXIsIDAsIHUzMkJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsr
aSkgeworICAgIGlmICh1MzJWaWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxl
bmd0aCAtIHUzMkJsb2NrcyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZm
ZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tz
OyArK2kpIHsKKyAgICBpZiAodThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgeworICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB2
ZXJpZnlCbG9iKGNvbmZpZywgYmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKKyAg
dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKGJsb2IpOworICByZWFkZXIub25lcnJvciA9IGZ1
bmN0aW9uKCkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJl
YWRlci5lcnJvci5tZXNzYWdlKTsKKyAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7
CisgIH0KKyAgcmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQg
PSB2ZXJpZnlBcnJheUJ1ZmZlcihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOworICAgIGRv
bmVDYWxsYmFjayhibG9iLnNpemUsIHJlc3VsdCk7CisgIH0KKyAgcmVhZGVyLnJlYWRBc0FycmF5
QnVmZmVyKGJsb2IpOworfQorCitmdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmln
LCBtZXNzYWdlLCBzaXplKSB7CisgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgewor
ICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdl
KTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1l
c3NhZ2UpOworICBpZiAoaXNOYU4ocGFyc2VkQWNrKSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygn
SW52YWxpZCBhY2sgdmFsdWU6ICcgKyBtZXNzYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K
KyAgaWYgKHBhcnNlZEFjayAhPSBzaXplKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKAorICAgICAg
ICAnRXhwZWN0ZWQgYWNrIGZvciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcg
KyBwYXJzZWRBY2sgKworICAgICAgICAnQicpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisg
IHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKKyAgdmFyIG5l
d09iaiA9IHt9OworICBmb3IgKGtleSBpbiBvYmopIHsKKyAgICBuZXdPYmpba2V5XSA9IG9ialtr
ZXldOworICB9CisgIHJldHVybiBuZXdPYmo7Cit9CisKK3ZhciB0YXNrcyA9IFtdOworCitmdW5j
dGlvbiBydW5OZXh0VGFzayhjb25maWcpIHsKKyAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOwor
ICBpZiAodGFzayA9PSB1bmRlZmluZWQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVk
Jyk7CisgICAgY2xlYW51cCgpOworICAgIHJldHVybjsKKyAgfQorICB0aW1lcklEID0gc2V0VGlt
ZW91dCh0YXNrLCAwKTsKK30KKworZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7
CisgIHZhciBsZWdlbmQgPSAnJworICBpZiAoY29uZmlnLnByaW50U2l6ZSkKKyAgICBsZWdlbmQg
PSAnTWVzc2FnZSBzaXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOworICBsZWdlbmQg
Kz0gJ1NwZWVkIGluIGtCL3MnOworICByZXR1cm4gbGVnZW5kOworfQorCitmdW5jdGlvbiBhZGRU
YXNrcyhjb25maWcsIHN0ZXBGdW5jKSB7CisgIGZvciAodmFyIGkgPSAwOworICAgICAgaSA8IGNv
bmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgewor
ICAgIHZhciBtdWx0aXBsaWVySW5kZXggPSAwOworICAgIGZvciAodmFyIHNpemUgPSBjb25maWcu
c3RhcnRTaXplOworICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKKyAgICAg
ICAgICsrbXVsdGlwbGllckluZGV4KSB7CisgICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQo
CisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBzaXplLAorICAgICAgICAgIGNvbmZpZywKKyAg
ICAgICAgICBpIDwgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICAgICAgdGFza3MucHVz
aCh0YXNrKTsKKyAgICAgIHZhciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWworICAg
ICAgICBtdWx0aXBsaWVySW5kZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKKyAgICAg
IGlmIChtdWx0aXBsaWVyIDw9IDEpIHsKKyAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlk
IG11bHRpcGxpZXIgJyArIG11bHRpcGxpZXIpOworICAgICAgICBjb25maWcubm90aWZ5QWJvcnQo
KTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOworICAgICAg
fQorICAgICAgc2l6ZSA9IE1hdGguY2VpbChzaXplICogbXVsdGlwbGllcik7CisgICAgfQorICB9
Cit9CisKK2Z1bmN0aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgewor
ICB0YXNrcy5wdXNoKGZ1bmN0aW9uKCl7CisgICAgICB0aW1lcklEID0gbnVsbDsKKyAgICAgIGNv
bmZpZy5hZGRUb1N1bW1hcnkodGl0bGUpOworICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmln
KTsKKyAgICAgIGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7
CisgIH0pOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcu
YWRkVG9Mb2coJ1NlbmQgYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2Vu
ZFN0cmluZyhjb25maWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7
CisgIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBv
cnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29u
ZmlnKSk7CisgIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVC
ZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsn
KTsKKyAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRh
c2tzID0gW107CisgIGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNl
aXZlQmVuY2htYXJrU3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAorICAg
ICAgJ1JlY2VpdmUgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0
YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoY29uZmlnKSB7CisgIGNs
ZWFyVGltZW91dCh0aW1lcklEKTsKKyAgdGltZXJJRCA9IG51bGw7CisgIHRhc2tzID0gW107Cisg
IGNvbmZpZy5hZGRUb0xvZygnU3RvcHBlZCcpOworICBjbGVhbnVwKCk7Cit9CisKK3ZhciB3b3Jr
ZXI7CisKK2Z1bmN0aW9uIGluaXRXb3JrZXIob3JpZ2luKSB7CisgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIob3JpZ2luICsgJy9iZW5jaG1hcmsuanMnKTsKK30KKworZnVuY3Rpb24gZG9BY3Rpb24oY29u
ZmlnLCBpc1dpbmRvd1RvV29ya2VyLCBhY3Rpb24pIHsKKyAgaWYgKGlzV2luZG93VG9Xb3JrZXIp
IHsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9Mb2csIGFkZFRvU3VtbWFy
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZVZhbHVlLCBub3RpZnlB
Ym9ydCwgbWVzc2FnZSkgeworICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9M
b2cnKQorICAgICAgICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlm
IChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCisgICAgICAgIGFkZFRvU3Vt
bWFyeShtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlw
ZSA9PT0gJ21lYXN1cmVWYWx1ZScpCisgICAgICAgIG1lYXN1cmVWYWx1ZShtZXNzYWdlLmRhdGEu
ZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ25vdGlmeUFib3J0
JykKKyAgICAgICAgbm90aWZ5QWJvcnQoKTsKKyAgICB9LmJpbmQodW5kZWZpbmVkLCBjb25maWcu
YWRkVG9Mb2csIGNvbmZpZy5hZGRUb1N1bW1hcnksCisgICAgICAgICAgIGNvbmZpZy5tZWFzdXJl
VmFsdWUsIGNvbmZpZy5ub3RpZnlBYm9ydCk7CisgICAgY29uZmlnLmFkZFRvTG9nID0gdW5kZWZp
bmVkOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm1l
YXN1cmVWYWx1ZSA9IHVuZGVmaW5lZDsKKyAgICBjb25maWcubm90aWZ5QWJvcnQgPSB1bmRlZmlu
ZWQ7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24sIGNvbmZpZzogY29uZmln
fSk7CisgIH0gZWxzZSB7CisgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRCZW5jaG1hcmsnKQorICAg
ICAgc2VuZEJlbmNobWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlY2Vp
dmVCZW5jaG1hcmsnKQorICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOworICAgIGVsc2Ug
aWYgKGFjdGlvbiA9PT0gJ2JhdGNoQmVuY2htYXJrJykKKyAgICAgIGJhdGNoQmVuY2htYXJrKGNv
bmZpZyk7CisgICAgZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCisgICAgICBzdG9wKGNvbmZp
Zyk7CisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9t
YWluLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21haW4uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzhhZGQ0ODczMWY4OGZlODVlZWVhNDBlNmUwMTljZjE3Y2NjZTNjOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCkBAIC0wLDAgKzEs
ODkgQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisv
LyBVdGlsaXRpZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFk
IG9ubHkpLgorCit2YXIgbG9nQm94ID0gbnVsbDsKK3ZhciBxdWV1ZWRMb2cgPSAnJzsKKwordmFy
IHN1bW1hcnlCb3ggPSBudWxsOworCitmdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKKyAgcXVldWVk
TG9nICs9IGxvZyArICdcbic7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBsb2dC
b3gudmFsdWUgKz0gcXVldWVkTG9nOworICBxdWV1ZWRMb2cgPSAnJzsKKyAgbG9nQm94LnZhbHVl
ICs9IGxvZyArICdcbic7CisgIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5j
dGlvbiBhZGRUb1N1bW1hcnkobG9nKSB7CisgIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xu
JzsKKyAgc3VtbWFyeUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCisvLyB2YWx1ZTogZXhl
Y3V0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzLgorLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBp
bnRlbmRlZCB0byBiZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgorLy8gRG8gbm90aGluZyBo
ZXJlIGluIG5vbi1QZXJmb3JtYW5jZVRlc3QuCitmdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUp
IHsKK30KKworLy8gY29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1h
cmsgZmFpbGVkIGFuZCBhYm9ydGVkLCBhbmQKKy8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVy
Zm9ybWFuY2UgVGVzdHMuCisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVz
dC4KK2Z1bmN0aW9uIG5vdGlmeUFib3J0KCkgeworfQorCitmdW5jdGlvbiBnZXRJbnRGcm9tSW5w
dXQoaWQpIHsKKyAgcmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52
YWx1ZSk7Cit9CisKK2Z1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7CisgIHZh
ciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07
CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICBpZiAobGlzdC5p
dGVtKGkpLmNoZWNrZWQpCisgICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOworICByZXR1
cm4gdW5kZWZpbmVkOworfQorZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgeworICBy
ZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Cit9CisKK2Z1bmN0aW9u
IGdldEludEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFw
KGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOworfQorCitmdW5j
dGlvbiBnZXRGbG9hdEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJy
YXkubWFwKHBhcnNlRmxvYXQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS91dGlsX3dvcmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3Jr
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGQ5MDQ0OWE5MGE3ZDc4MmI5NzAyM2U4ZDlkNWE3YWFlZTk0YTMy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3Jr
ZXIuanMKQEAgLTAsMCArMSw0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisv
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZv
ciB0aGUgd29ya2VyIHRocmVhZHMgb25seSkuCisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNz
YWdlKSB7CisgIHZhciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmlnOworICBjb25maWcuYWRk
VG9Mb2cgPSBmdW5jdGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRv
TG9nJywgZGF0YTogdGV4dH0pOyB9OworICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gZnVuY3Rpb24o
dGV4dCkgeworICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1bW1hcnknLCBkYXRhOiB0
ZXh0fSk7IH07CisgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAg
ICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOyB9Owor
ICBjb25maWcubm90aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdu
b3RpZnlBYm9ydCd9KTsgfTsKKworICBkb0FjdGlvbihjb25maWcsIGZhbHNlLCBtZXNzYWdlLmRh
dGEudHlwZSk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmY0M2QzOGUyYWI2MmZhNzYxZTU0MWMzZTQ3YjUxNTY0ZDkxMzFhYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKQEAg
LTAsMCArMSwzOSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitU
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9o
YW5kc2hha2Vfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2JlbmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5j
aG1hcmsuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3No
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2NvbnNvbGUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
Y29va2llX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
aGFuZGxlcl9tYXAudHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcworL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
dXRpbC5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDVmNTk1MGYzNDc1MzFi
OTI2MmMzMWI3N2QwYzI5ZDQyNmU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMgQ29w
eXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorIiIiIEEgU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5n
IHB1cnBvc2VzCisKK21vZF9weXdlYnNvY2tldCBpcyBhbiBBUEkgdGhhdCBwcm92aWRlcyBXZWJT
b2NrZXQgZnVuY3Rpb25hbGl0aWVzIHdpdGgKK2Egc3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVy
LiBJdCBpcyBpbnRlbmRlZCBmb3IgdGVzdGluZyBvcgorZXhwZXJpbWVudGFsIHB1cnBvc2VzLgor
CitJbnN0YWxsYXRpb24KKz09PT09PT09PT09PQorMS4gRm9sbG93IHN0YW5kYWxvbmUgc2VydmVy
IGRvY3VtZW50YXRpb24gdG8gc3RhcnQgcnVubmluZyB0aGUKK3N0YW5kYWxvbmUgc2VydmVyLiBJ
dCBjYW4gYmUgcmVhZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICQg
cHlkb2MgbW9kX3B5d2Vic29ja2V0LnN0YW5kYWxvbmUKKworMi4gT25jZSB0aGUgc3RhbmRhbG9u
ZSBzZXJ2ZXIgaXMgbGF1bmNoZWQgdmVyaWZ5IGl0IGJ5IGFjY2Vzc2luZworaHR0cDovL2xvY2Fs
aG9zdFs6cG9ydF0vY29uc29sZS5odG1sLiBJbmNsdWRlIHRoZSBwb3J0IG51bWJlciB3aGVuCitz
cGVjaWZpZWQgb24gbGF1bmNoLiBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgY29ycmVjdGx5LCB5
b3UKK3dpbGwgc2VlIGEgc2ltcGxlIGVjaG8gY29uc29sZS4KKworCitXcml0aW5nIFdlYlNvY2tl
dCBoYW5kbGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBhIFdlYlNvY2tl
dCByZXF1ZXN0IGNvbWVzIGluLCB0aGUgcmVzb3VyY2UgbmFtZQorc3BlY2lmaWVkIGluIHRoZSBo
YW5kc2hha2UgaXMgY29uc2lkZXJlZCBhcyBpZiBpdCBpcyBhIGZpbGUgcGF0aCB1bmRlcgorPHdl
YnNvY2tfaGFuZGxlcnM+IGFuZCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5k
bGVycz4vPHJlc291cmNlX25hbWU+X3dzaC5weSBpcyBpbnZva2VkLgorCitGb3IgZXhhbXBsZSwg
aWYgdGhlIHJlc291cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hhdCwgdGhlIGhhbmRsZXIgZGVmaW5l
ZCBpbgorPHdlYnNvY2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hhdF93c2gucHkgaXMgaW52b2tlZC4K
KworQSBXZWJTb2NrZXQgaGFuZGxlciBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHRocmVl
IGZ1bmN0aW9uczoKKworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
CisgICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJlcXVlc3Q6
IG1vZF9weXRob24gcmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMg
Y2FsbGVkIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUgc3VjY2Vz
c2Z1bGx5IHBhcnNlZCBhbmQgV2ViU29ja2V0IHByb3BlcnRpZXMgKHdzX29yaWdpbiwKK2FuZCB3
c19yZXNvdXJjZSkgYXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0
aGUgcmVxdWVzdCBieSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworQSByZXF1ZXN0IG9iamVjdCBo
YXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQor
ZXh0cmEgaGFuZHNoYWtlICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CistIHdzX3Jl
c291cmNlCistIHdzX29yaWdpbgorLSB3c192ZXJzaW9uCistIHdzX2V4dGVuc2lvbnMKKy0gd3Nf
ZGVmbGF0ZQorLSB3c19wcm90b2NvbAorLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzCisKK1RoZSBs
YXN0IHR3byBhcmUgYSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlvbi4KKworCitT
dWJwcm90b2NvbCBOZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKword3NfcHJv
dG9jb2wgaXMgYWx3YXlzIHNldCB0byBOb25lIHdoZW4KK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlIGlzIGNhbGxlZC4gSWYgd3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKK05vbmUs
IHlvdSBtdXN0IGNob29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBp
dCB0bword3NfcHJvdG9jb2wuCisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKword2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBs
ZXRlZAorc3VjY2Vzc2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBm
cm9tL3RvIHRoZSBjbGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGls
IG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRyYW5zZmVyLgorCitZb3UgY2Fu
IHJlY2VpdmUgYSBtZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgbWVz
c2FnZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKK1RoaXMgY2FsbCBi
bG9ja3MgdW50aWwgYW55IGNvbXBsZXRlIHRleHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXls
b2FkIGRhdGEKK29mIHRoZSBpbmNvbWluZyBmcmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3Nh
Z2UuIFdoZW4geW91J3JlIHVzaW5nIElFVEYKK0h5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJl
Y2VpdmVfbWVzc2FnZSgpIHdpbGwgcmV0dXJuIE5vbmUgb24gcmVjZWl2aW5nCitjbGllbnQtaW5p
dGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlLiBXaGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVf
bWVzc2FnZSgpCit3aWxsIHJhaXNlIHNvbWUgZXhjZXB0aW9uLgorCitZb3UgY2FuIHNlbmQgYSBt
ZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgcmVxdWVzdC53c19zdHJl
YW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisKKworQ2xvc2luZyBDb25uZWN0aW9uCistLS0tLS0t
LS0tLS0tLS0tLS0KKworRXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3Qg
cmV0dXJuLWluZyBmcm9tCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlv
biBjbG9zZS4KKworICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorCitj
bG9zZV9jb25uZWN0aW9uIHdpbGwgd2FpdAorZm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xl
ZGdlbWVudCBjb21pbmcgZnJvbSB0aGUgY2xpZW50LiBXaGVuIGl0Citjb3VsZG4ndCByZWNlaXZl
IGEgdmFsaWQgYWNrbm93bGVkZ2VtZW50LCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCit3ZWJfc29j
a2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIg
cmVjZWl2ZXMKK2luY29taW5nIGNsb3NpbmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1t
ZWRpYXRlbHkuIFlvdSBjYW4gc3BlY2lmeQorY29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1
ZXMuIFRoZXkgYXJlIHNlbnQgYXMgYSBvdXRnb2luZyBjbG9zaW5nIGZyYW1lCitmcm9tIHRoZSBz
ZXJ2ZXIuIEEgcmVxdWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0
IHlvdSBjYW4KK3VzZSBpbiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCist
IHdzX2Nsb3NlX2NvZGUKKy0gd3NfY2xvc2VfcmVhc29uCisKKworVGhyZWFkaW5nCistLS0tLS0t
LS0KKworQSBXZWJTb2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGUgc3RhbmRh
bG9uZQorc2VydmVyIHVzZXMgdGhyZWFkcyBieSBkZWZhdWx0LgorCisKK0NvbmZpZ3VyaW5nIFdl
YlNvY2tldCBFeHRlbnNpb24gUHJvY2Vzc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK1NlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29j
a2V0IGV4dGVuc2lvbnMuIE5vdGUgdGhhdCB0aGV5IGFyZQordW5zdGFibGUgYW5kIHRoZWlyIEFQ
SXMgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCisKK0EgcmVxdWVzdCBvYmpl
Y3QgaGFzIHRoZXNlIGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KKwor
LSB3c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJz
IHJlY2VpdmVkIGZyb20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hh
a2UuCisgIFlvdSBzaG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgorCistIHdzX2V4dGVuc2lv
bnM6CisKKyAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJl
cHJlc2VudGluZyBleHRlbnNpb24KKyAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNs
aWVudCBpbiB0aGUgc2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBzaG91bGRuJ3Qg
dG91Y2ggaXQgZGlyZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KKyAg
cHJvY2Vzc29ycy4KKworLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKKworICBBIGxpc3Qgb2Yg
bG9hZGVkIGV4dGVuc2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQor
ICBleHRlbnNpb24geW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBt
ZXRob2RzLgorIiIiCisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjQ3ODc4YmM0YTM3OWI1YWQ4YzQyM2E4ZTM4ZGY0MDVhOTZjY2JmNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4
Y2VwdGlvbnMucHkKQEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdHJlYW0g
RXhjZXB0aW9ucy4KKyIiIgorCisjIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFk
IGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorIyBtb2RfcHl0aG9uIGRvY3Vt
ZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgorIyBo
YW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhh
bXBsZSwKKyMgcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5
IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMKKyMgd3JpdGluZy9yZWFkaW5nLgorCisKKyMg
RXhjZXB0aW9ucworY2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9u
KToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlv
biBpcyB0ZXJtaW5hdGVkCisgICAgdW5leHBlY3RlZGx5LgorICAgICIiIgorCisgICAgcGFzcwor
CisKK2NsYXNzIEludmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNl
aXZlZCBhbiBpbnZhbGlkIGZyYW1lIHdlCisgICAgY2Fubm90IHBhcnNlLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAg
ICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMg
Y2FsbGVkIG9uCisgICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21l
c3NhZ2UoKSBpcyBjYWxsZWQgb24KKyAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgor
ICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24o
RXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdl
IHJlY2VpdmUgYSBmcmFtZSB3aXRoIGZsYWcsIG9wY29kZQorICAgIHdlIGNhbm5vdCBoYW5kbGUu
IEhhbmRsZXJzIGNhbiBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCisg
ICAgY2FsbCByZWNlaXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRo
ZSBuZXh0IGZyYW1lLgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRVVEY4
RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlz
ZWQgd2hlbiB3ZSByZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAorICAgIGNvbnRhaW5zIGludmFs
aWQgVVRGLTggc3RyaW5ncy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9jb21t
b24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjljYjExZjE1Y2IyZjU4MmU2YzI5ZTY5OGVlNWZmZjJhZmRlOGE3NjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CkBA
IC0wLDAgKzEsMjczIEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBtdXN0IG5vdCBk
ZXBlbmQgb24gYW55IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgor
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisjIEFkZGl0aW9uYWwgbG9nIGxl
dmVsIGRlZmluaXRpb25zLgorTE9HTEVWRUxfRklORSA9IDkKKworIyBDb25zdGFudHMgaW5kaWNh
dGluZyBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lvbi4KK1ZFUlNJT05fSFlCSTEzID0gMTMKK1ZF
UlNJT05fSFlCSTE0ID0gMTMKK1ZFUlNJT05fSFlCSTE1ID0gMTMKK1ZFUlNJT05fSFlCSTE2ID0g
MTMKK1ZFUlNJT05fSFlCSTE3ID0gMTMKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgbGF0ZXN0IHZlcnNpb24uCitWRVJTSU9OX0hZQklfTEFURVNUID0gVkVSU0lP
Tl9IWUJJMTMKKworIyBQb3J0IG51bWJlcnMKK0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAK
K0RFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIFNjaGVtZXMKK1dFQl9T
T0NLRVRfU0NIRU1FID0gJ3dzJworV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycKKwor
IyBGcmFtZSBvcGNvZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCitPUENPREVfQ09OVElOVUFUSU9O
ID0gMHgwCitPUENPREVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorT1BDT0RFX0NM
T1NFID0gMHg4CitPUENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKKworIyBVVUlE
IGZvciB0aGUgb3BlbmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tpbmcuCitXRUJTT0NLRVRf
QUNDRVBUX1VVSUQgPSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKwor
IyBPcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5kIGV4cGVjdGVkIHZhbHVlcy4KK1VQ
R1JBREVfSEVBREVSID0gJ1VwZ3JhZGUnCitXRUJTT0NLRVRfVVBHUkFERV9UWVBFID0gJ3dlYnNv
Y2tldCcKK0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCitVUEdSQURFX0NPTk5FQ1RJ
T05fVFlQRSA9ICdVcGdyYWRlJworSE9TVF9IRUFERVIgPSAnSG9zdCcKK09SSUdJTl9IRUFERVIg
PSAnT3JpZ2luJworU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5
JworU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0Jwor
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCitT
RUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJwor
U0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMnCisKKyMgRXh0ZW5zaW9ucworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJt
ZXNzYWdlLWRlZmxhdGUnCisKKyMgU3RhdHVzIGNvZGVzCisjIENvZGUgU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRCwgU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUsIGFuZAorIyBTVEFUVVNfVExTX0hB
TkRTSEFLRSBhcmUgcHNldWRvIGNvZGVzIHRvIGluZGljYXRlIHNwZWNpZmljIGVycm9yIGNhc2Vz
LgorIyBDb3VsZCBub3QgYmUgdXNlZCBmb3IgY29kZXMgaW4gYWN0dWFsIGNsb3NpbmcgZnJhbWVz
LgorIyBBcHBsaWNhdGlvbiBsZXZlbCBlcnJvcnMgbXVzdCB1c2UgY29kZXMgaW4gdGhlIHJhbmdl
CisjIFNUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01B
WC4gVGhlIGNvZGVzIGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0Ug
dG8gU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9NQVggYXJlIG1hbmFnZWQKKyMgYnkgSUFOQS4gVXN1
YWxseSBhcHBsaWNhdGlvbiBtdXN0IGRlZmluZSB1c2VyIHByb3RvY29sIGxldmVsIGVycm9ycyBp
biB0aGUKKyMgcmFuZ2UgU1RBVFVTX1VTRVJfUFJJVkFURV9CQVNFIHRvIFNUQVRVU19VU0VSX1BS
SVZBVEVfTUFYLgorU1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FX
QVkgPSAxMDAxCitTVEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JU
RURfREFUQSA9IDEwMDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNf
QUJOT1JNQUxfQ0xPU1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFU
QSA9IDEwMDcKK1NUQVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0Vf
VE9PX0JJRyA9IDEwMDkKK1NUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OID0gMTAxMAorU1RBVFVT
X0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAx
MDE1CitTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCitTVEFUVVNfVVNFUl9SRUdJ
U1RFUkVEX01BWCA9IDM5OTkKK1NUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSA9IDQwMDAKK1NUQVRV
U19VU0VSX1BSSVZBVEVfTUFYID0gNDk5OQorIyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGFs
aWFzZXMgdG8ga2VlcCBjb21wYXRpYmlsaXR5LiBBcHBsaWNhdGlvbnMgbXVzdAorIyBub3QgdXNl
IHRoZXNlIG9ic29sZXRlZCBkZWZpbml0aW9ucyBhbnltb3JlLgorU1RBVFVTX05PUk1BTCA9IFNU
QVRVU19OT1JNQUxfQ0xPU1VSRQorU1RBVFVTX1VOU1VQUE9SVEVEID0gU1RBVFVTX1VOU1VQUE9S
VEVEX0RBVEEKK1NUQVRVU19DT0RFX05PVF9BVkFJTEFCTEUgPSBTVEFUVVNfTk9fU1RBVFVTX1JF
Q0VJVkVECitTVEFUVVNfQUJOT1JNQUxfQ0xPU0UgPSBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRQor
U1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRCA9IFNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxP
QURfREFUQQorU1RBVFVTX01BTkRBVE9SWV9FWFQgPSBTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lP
TgorCisjIEhUVFAgc3RhdHVzIGNvZGVzCitIVFRQX1NUQVRVU19CQURfUkVRVUVTVCA9IDQwMAor
SFRUUF9TVEFUVVNfRk9SQklEREVOID0gNDAzCitIVFRQX1NUQVRVU19OT1RfRk9VTkQgPSA0MDQK
KworCitkZWYgaXNfY29udHJvbF9vcGNvZGUob3Bjb2RlKToKKyAgICByZXR1cm4gKG9wY29kZSA+
PiAzKSA9PSAxCisKKworY2xhc3MgRXh0ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CisgICAgIiIi
VGhpcyBpcyBleGNoYW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGluIG9wZW5pbmcgaGFu
ZHNoYWtlLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5f
bmFtZSA9IG5hbWUKKyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0
cnVjdHVyZSB0byBtb3JlIGVmZmljaWVudCBvbmUgc3VjaAorICAgICAgICAjIGFzIGRpY3Qgd2hl
biB0aGUgc3BlYyBjaGFuZ2VzIHRvIHNheSBsaWtlCisgICAgICAgICMgLSBQYXJhbWV0ZXIgbmFt
ZXMgbXVzdCBiZSB1bmlxdWUKKyAgICAgICAgIyAtIFRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlz
IG5vdCBzaWduaWZpY2FudAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gW10KKworICAgIGRl
ZiBuYW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dGVuc2lvbiBuYW1lLiIiIgor
ICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwg
bmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJBZGQgYSBwYXJhbWV0ZXIuIiIiCisgICAgICAgIHNl
bGYuX3BhcmFtZXRlcnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgZ2V0X3BhcmFt
ZXRlcnMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIi
IgorICAgICAgICByZXR1cm4gW25hbWUgZm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9w
YXJhbWV0ZXJzXQorCisgICAgZGVmIGhhc19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6CisgICAgICAg
ICIiIlRlc3QgaWYgYSBwYXJhbWV0ZXIgZXhpc3RzLiIiIgorICAgICAgICBmb3IgcGFyYW1fbmFt
ZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBhcmFt
X25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAg
ICAgICAiIiJHZXQgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgcGFyYW1ldGVyLiIiIgorICAgICAg
ICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAg
ICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFy
YW1fdmFsdWUKKworCitjbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6
CisgICAgIiIiRXhjZXB0aW9uIHRvIGhhbmRsZSBlcnJvcnMgaW4gZXh0ZW5zaW9uIHBhcnNpbmcu
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcihFeHRlbnNp
b25QYXJzaW5nRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorCisKK2RlZiBfcGFyc2Vf
ZXh0ZW5zaW9uX3BhcmFtKHN0YXRlLCBkZWZpbml0aW9uKToKKyAgICBwYXJhbV9uYW1lID0gaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQorCisgICAgaWYgcGFyYW1fbmFtZSBp
cyBOb25lOgorICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxp
ZCBwYXJhbWV0ZXIgbmFtZSBmb3VuZCcpCisKKyAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
bHdzZXMoc3RhdGUpCisKKyAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmlu
ZyhzdGF0ZSwgJz0nKToKKyAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25h
bWUsIE5vbmUpCisgICAgICAgIHJldHVybgorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1l
X2x3c2VzKHN0YXRlKQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRh
dGUgdGhhdCBwYXJzZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KKyAgICBwYXJhbV92YWx1ZSA9IGh0
dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQorICAg
IGlmIHBhcmFtX3ZhbHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24oCisgICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9u
IHRoZSByaWdodC1oYW5kIHNpZGUgb2YgJworICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBw
YXJhbV9uYW1lKQorCisgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBh
cmFtX3ZhbHVlKQorCisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKKyAgICBleHRlbnNp
b25fdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgaWYg
ZXh0ZW5zaW9uX3Rva2VuIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBleHRl
bnNpb24gPSBFeHRlbnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQorCisgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisg
ICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycp
OgorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
bHdzZXMoc3RhdGUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lv
bl9wYXJhbShzdGF0ZSwgZXh0ZW5zaW9uKQorICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIg
KCVyKScgJSAoZXh0ZW5zaW9uX3Rva2VuLCBlKSkKKworICAgIHJldHVybiBleHRlbnNpb24KKwor
CitkZWYgcGFyc2VfZXh0ZW5zaW9ucyhkYXRhKToKKyAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgaGVhZGVyIHZhbHVlLgorCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5z
aW9uUGFyYW1ldGVyIG9iamVjdHMuCisgICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQu
CisgICAgIiIiCisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRh
KQorCisgICAgZXh0ZW5zaW9uX2xpc3QgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV4
dGVuc2lvbiA9IF9wYXJzZV9leHRlbnNpb24oc3RhdGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24p
CisKKyAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAg
ICAgIGlmIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAg
IGJyZWFrCisKKyAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmco
c3RhdGUsICcsJyk6CisgICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNp
b25zIGhlYWRlcjogJworICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3Vu
ZCAlcicgJSBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVh
ZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbihleHRlbnNpb25fbGlz
dCkgPT0gMDoKKyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFs
aWQgZXh0ZW5zaW9uIGVudHJ5IGZvdW5kJykKKworICAgIHJldHVybiBleHRlbnNpb25fbGlzdAor
CisKK2RlZiBmb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6CisgICAgIiIiRm9ybWF0IGFuIEV4
dGVuc2lvblBhcmFtZXRlciBvYmplY3QuIiIiCisgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRl
bnNpb24ubmFtZSgpXQorICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNp
b24uZ2V0X3BhcmFtZXRlcnMoKToKKyAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAg
ICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lm
X25lY2Vzc2FyeShwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBw
ZW5kKCclcz0lcycgJSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKKyAgICByZXR1cm4gJzsg
Jy5qb2luKGZvcm1hdHRlZF9wYXJhbXMpCisKKworZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVu
c2lvbl9saXN0KToKKyAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBv
YmplY3RzLiIiIgorICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCisgICAgZm9yIGV4
dGVuc2lvbiBpbiBleHRlbnNpb25fbGlzdDoKKyAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9s
aXN0LmFwcGVuZChmb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCisgICAgcmV0dXJuICcsICcu
am9pbihmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGVlOTQzYTViODBhZmRjMGJkYTk1M2FhMmE3MzE5OGI5OWE0NTliMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpAQCAt
MCwwICsxLDM4NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJEaXNwYXRjaCBXZWJTb2NrZXQgcmVx
dWVzdC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgdXRpbAorCitfU09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dzaFwu
cHkkJykKK19TT1VSQ0VfU1VGRklYID0gJ193c2gucHknCitfRE9fRVhUUkFfSEFORFNIQUtFX0hB
TkRMRVJfTkFNRSA9ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKK19UUkFOU0ZFUl9E
QVRBX0hBTkRMRVJfTkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCitfUEFTU0lWRV9D
TE9TSU5HX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUgPSAoCisgICAgJ3dlYl9zb2NrZXRfcGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZScpCisKKworY2xhc3MgRGlzcGF0Y2hFeGNlcHRpb24oRXhjZXB0
aW9uKToKKyAgICAiIiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViU29ja2V0IHJlcXVlc3Qu
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFU
VVNfTk9UX0ZPVU5EKToKKyAgICAgICAgc3VwZXIoRGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9f
aW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworZGVmIF9kZWZh
dWx0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KToKKyAgICAiIiJE
ZWZhdWx0IHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgor
CisgICAgcmV0dXJuIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICcnCisKKworZGVmIF9u
b3JtYWxpemVfcGF0aChwYXRoKToKKyAgICAiIiJOb3JtYWxpemUgcGF0aC4KKworICAgIEFyZ3M6
CisgICAgICAgIHBhdGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KKworICAgIFBhdGggaXMgY29u
dmVydGVkIHRvIHRoZSBhYnNvbHV0ZSBwYXRoLgorICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2Ug
ZWl0aGVyICdcXCcgb3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCisgICAgVGhlIG5vcm1hbGl6ZWQg
cGF0aCBhbHdheXMgdXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCisgICAgIiIi
CisKKyAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQorICAgIHBhdGgg
PSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAn
LycpCisgICAgcmV0dXJuIHBhdGgKKworCitkZWYgX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2Nv
bnZlcnRlcihiYXNlX2Rpcik6CisgICAgIiIiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVy
dHMgdGhlIHBhdGggb2YgYSBXZWJTb2NrZXQgaGFuZGxlciBzb3VyY2UKKyAgICBmaWxlIHRvIGEg
cmVzb3VyY2Ugc3RyaW5nIGJ5IHJlbW92aW5nIHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9y
eSBmcm9tCisgICAgaXRzIGhlYWQsIHJlbW92aW5nIF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRh
aWwsIGFuZCByZXBsYWNpbmcgcGF0aAorICAgIHNlcGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCisK
KyAgICBBcmdzOgorICAgICAgICBiYXNlX2RpcjogdGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0
b3J5LgorICAgICIiIgorCisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIp
CisKKyAgICBiYXNlX2xlbiA9IGxlbihiYXNlX2RpcikKKyAgICBzdWZmaXhfbGVuID0gbGVuKF9T
T1VSQ0VfU1VGRklYKQorCisgICAgZGVmIGNvbnZlcnRlcihwYXRoKToKKyAgICAgICAgaWYgbm90
IHBhdGguZW5kc3dpdGgoX1NPVVJDRV9TVUZGSVgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgIyBfbm9ybWFsaXplX3BhdGggbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29s
dmluZyBzeW1saW5rIGJyZWFrcworICAgICAgICAjIGZvbGxvd2luZyBwYXRoIGNoZWNrLgorICAg
ICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgaWYgbm90IHBhdGgu
c3RhcnRzd2l0aChiYXNlX2Rpcik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBy
ZXR1cm4gcGF0aFtiYXNlX2xlbjotc3VmZml4X2xlbl0KKworICAgIHJldHVybiBjb252ZXJ0ZXIK
KworCitkZWYgX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAi
IiJSZXR1cm5zIGEgZ2VuZXJhdG9yIHRoYXQgZW51bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBz
b3VyY2UgZmlsZSBuYW1lcworICAgIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCisgICAgIiIiCisK
KyAgICBmb3Igcm9vdCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToK
KyAgICAgICAgZm9yIGJhc2UgaW4gZmlsZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5q
b2luKHJvb3QsIGJhc2UpCisgICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFy
Y2gocGF0aCk6CisgICAgICAgICAgICAgICAgeWllbGQgcGF0aAorCisKK2NsYXNzIF9IYW5kbGVy
U3VpdGUob2JqZWN0KToKKyAgICAiIiJBIGhhbmRsZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGEs
CisgICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgorICAgICAgICBz
ZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICBzZWxm
LnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCisgICAgICAgIHNlbGYucGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKKworCitkZWYgX3NvdXJj
ZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToKKyAgICAiIiJTb3VyY2UgYSBoYW5k
bGVyIGRlZmluaXRpb24gc3RyaW5nLgorCisgICAgQXJnczoKKyAgICAgICAgaGFuZGxlcl9kZWZp
bml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVmaW5l
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCisgICAgIiIi
CisKKyAgICBnbG9iYWxfZGljID0ge30KKyAgICB0cnk6CisgICAgICAgICMgVGhpcyBzdGF0ZW1l
bnQgaXMgZ3JhbWF0aWNhbGx5IGRpZmZlcmVudCBpbiBweXRob24gMiBhbmQgMy4KKyAgICAgICAg
IyBIZW5jZSwgeWFwZiB3aWxsIGNvbXBsYWluIGFib3V0IHRoaXMuIFRvIG92ZXJjb21lIHRoaXMs
IHdlIGRpc2FibGUKKyAgICAgICAgIyB5YXBmIGZvciB0aGlzIGxpbmUuCisgICAgICAgIGV4ZWMo
aGFuZGxlcl9kZWZpbml0aW9uLCBnbG9iYWxfZGljKSAjIHlhcGY6IGRpc2FibGUKKyAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4g
c291cmNpbmcgaGFuZGxlcjonICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
Y2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRs
ZXIgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hh
bmRsZXIgPSBfZXh0cmFjdF9oYW5kbGVyKAorICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJ
VkVfQ0xPU0lOR19IQU5EU0hBS0VfSEFORExFUl9OQU1FKQorICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKKyAgICAgICAg
ICAgIF9kZWZhdWx0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKKyAgICByZXR1
cm4gX0hhbmRsZXJTdWl0ZSgKKyAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBf
RE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSksCisgICAgICAgIF9leHRyYWN0X2hhbmRs
ZXIoZ2xvYmFsX2RpYywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKKyAgICAgICAgcGFz
c2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyKQorCisKK2RlZiBfZXh0cmFjdF9oYW5kbGVy
KGRpYywgbmFtZSk6CisgICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZp
ZWQgbmFtZSBmcm9tIHRoZSBnaXZlbiBkaWN0aW9uYXJ5CisgICAgZGljLgorICAgICIiIgorCisg
ICAgaWYgbmFtZSBub3QgaW4gZGljOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbign
JXMgaXMgbm90IGRlZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRpY1tuYW1lXQorICAg
IGlmIG5vdCBjYWxsYWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJyVzIGlzIG5vdCBjYWxsYWJsZS4nICUgbmFtZSkKKyAgICByZXR1cm4gaGFuZGxlcgorCisK
K2NsYXNzIERpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCBy
ZXF1ZXN0cy4KKworICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2Ug
bmFtZSB0byBoYW5kbGVycy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAg
ICAgICAgICAgICAgcm9vdF9kaXIsCisgICAgICAgICAgICAgICAgIHNjYW5fZGlyPU5vbmUsCisg
ICAgICAgICAgICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6Cisg
ICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAg
ICAgICAgcm9vdF9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZp
bGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5f
ZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAg
ICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9y
eSB1bmRlciByb290X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9k
aXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBy
b290X2RpciBpcyB1c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCisgICAg
ICAgICAgICAgICAgICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRh
aW5zIG1hbnkKKyAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAg
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmlsZXMg
ZXZlbiBpZiB0aGVpcgorICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlzIG5v
dCB1bmRlciByb290X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0
ZV9tYXAgPSB7fQorICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQorICAgICAgICBp
ZiBzY2FuX2RpciBpcyBOb25lOgorICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2RpcgorICAg
ICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKKyAgICAg
ICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6CisgICAgICAgICAgICByYWlz
ZSBEaXNwYXRjaEV4Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRl
ciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMuJyAl
IChzY2FuX2Rpciwgcm9vdF9kaXIpKQorICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9maWxl
c19pbl9kaXIocm9vdF9kaXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKworICAgIGRl
ZiBhZGRfcmVzb3VyY2VfcGF0aF9hbGlhcyhzZWxmLCBhbGlhc19yZXNvdXJjZV9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKKyAg
ICAgICAgIiIiQWRkIHJlc291cmNlIHBhdGggYWxpYXMuCisKKyAgICAgICAgT25jZSBhZGRlZCwg
cmVxdWVzdCB0byBhbGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKKyAgICAg
ICAgaGFuZGxlciByZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJj
ZSBwYXRoCisgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNv
dXJjZSBwYXRoCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVy
X3N1aXRlID0gc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0K
KyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhd
ID0gaGFuZGxlcl9zdWl0ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBy
YWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAg
ZGVmIHNvdXJjZV93YXJuaW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGlu
IHNvdXJjaW5nIGhhbmRsZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2Fy
bmluZ3MKKworICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAg
ICAgICIiIkRvIGV4dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICAg
ICAgU2VsZWN0IGEgaGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKKyAg
ICAgICAgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCisKKyAgICAgICAg
QXJnczoKKyAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAg
ICBSYWlzZXM6CisgICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdh
cyBub3QgZm91bmQKKyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNl
ciBoYW5kbGVyIGFib3J0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlv
bjogd2hlbiBvcGVuaW5nIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAg
aGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJj
ZSkKKyAgICAgICAgaWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ug
RGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291
cmNlKQorICAgICAgICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRy
YV9oYW5kc2hha2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtl
XyhyZXF1ZXN0KQorICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRo
aXMgZnVuY3Rpb24gdG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRo
b3V0IHNlbmRpbmcgYW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCcl
cycsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90
b19leGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVz
OiAnICUKKyAgICAgICAgICAgICAgICAoX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUs
IHJlcXVlc3Qud3NfcmVzb3VyY2UpLCBlKQorICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlLkhh
bmRzaGFrZUV4Y2VwdGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVOKQorCisgICAg
ZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkxldCBhIGhhbmRs
ZXIgdHJhbnNmZXJfZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KKworICAgICAgICBTZWxl
Y3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNhbGwgaXRzCisg
ICAgICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIFJh
aXNlczoKKyAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2FzIG5v
dCBmb3VuZAorICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2VyIGhh
bmRsZXIgYWJvcnQgY29ubmVjdGlvbgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlv
c2hpbm8pOiBUZXJtaW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4K
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRs
ZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXJfc3Vp
dGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8g
aGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFu
ZGxlcl9zdWl0ZS50cmFuc2Zlcl9kYXRhCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyhyZXF1
ZXN0KQorCisgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAg
ICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAg
ICAgIyBDYXRjaCBub24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUgaGFuZGxlciBkaWRuJ3QgaGFu
ZGxlLgorICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFjZWJhY2suZm9ybWF0
X2V4YygpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgZSkKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAg
ICAgICAgZXhjZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAg
ICAgICAjIEludmFsaWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBiZWZvcmUKKyAgICAg
ICAgICAgICMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBjYXRjaGVzIEludmFs
aWRGcmFtZUV4Y2VwdGlvbi4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBl
KQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24u
U1RBVFVTX1BST1RPQ09MX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5VbnN1cHBvcnRl
ZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgZSkKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29t
bW9uLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorICAgICAgICBleGNlcHQgc3RyZWFtLkludmFs
aWRVVEY4RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVz
JywgZSkKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkK
KyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICBleGNl
cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIEFueSBvdGhlciBleGNlcHRpb25zIGFy
ZSBmb3J3YXJkZWQgdG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAgICAgICAjIGZ1bmN0aW9u
LgorICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAg
ICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisgICAgICAgICAgICAg
ICAgKF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUp
CisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uo
c2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciBy
ZXNwb25kaW5nIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZworICAgICAgICBoYW5kc2hha2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1
aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtl
X2hhbmRsZXIocmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQorCisgICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNl
bGYsIHJlc291cmNlKToKKyAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZv
ciBleHRyYSBoYW5kc2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQorICAgICAgICBmb3IgZGF0YSB0
cmFuc2ZlcikgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhZ21lbnQgPSBOb25lCisgICAgICAgIGlmICcjJyBp
biByZXNvdXJjZToKKyAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNw
bGl0KCcjJywgMSkKKyAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVz
b3VyY2UgPSByZXNvdXJjZS5zcGxpdCgnPycsIDEpWzBdCisgICAgICAgIGhhbmRsZXJfc3VpdGUg
PSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRs
ZXJfc3VpdGUgYW5kIGZyYWdtZW50OgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oCisgICAgICAgICAgICAgICAgJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVz
ZWQgb24gV2ViU29ja2V0IFVSSXMnLAorICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKKworICAgIGRlZiBf
c291cmNlX2hhbmRsZXJfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2RpciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRl
X3Jvb3RfZGlyKToKKyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmls
ZXMgaW4gdGhlIHNjYW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0
aCBpcyBkZXRlcm1pbmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAg
ICAgICAjIFdlIGJ1aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3Vt
aW5nIHRoYXQgdGhlcmUncworICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0
byBzY2FuX2RpciBhbmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5CisgICAgICAgICMgY29tcGFyaW5n
IHJlYWxwYXRoIG9mIHRoZW0uCisKKyAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0
aC4gU2VlCisgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNjAzCisKKyAgICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252
ZXJ0ZXIocm9vdF9kaXIpCisgICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRo
KHNjYW5fZGlyKQorICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290
X2RpcikKKyAgICAgICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMo
c2Nhbl9yZWFscGF0aCk6CisgICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNp
ZGVfcm9vdF9kaXIgYW5kCisgICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBh
dGgpLnN0YXJ0c3dpdGgocm9vdF9yZWFscGF0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBp
cyBub3QgdW5kZXIgcm9vdCBkaXJlY3RvcnknICUgcGF0aCkKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBh
cyBoYW5kbGVyX2ZpbGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBfc291
cmNlX2hhbmRsZXJfZmlsZShoYW5kbGVyX2ZpbGUucmVhZCgpKQorICAgICAgICAgICAgZXhjZXB0
IERpc3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dh
cm5pbmdzLmFwcGVuZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgcmVzb3VyY2UgPSBjb252ZXJ0KHBhdGgpCisgICAgICAgICAgICBp
ZiByZXNvdXJjZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
UGF0aCB0byByZXNvdXJjZSBjb252ZXJzaW9uIG9uICVzIGZhaWxlZCcgJQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJf
c3VpdGUKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0NTM5ZjZmY2UxNGJlZTY1
ZDdmYTdhNTgzYWNiYjY1ZjAyM2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CkBAIC0wLDAgKzEsNDczIEBACisjIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5odHRwX2hlYWRlcl91dGlsIGltcG9ydCBx
dW90ZV9pZl9uZWNlc3NhcnkKKworIyBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2VydmVyIHNpZGUg
ZXh0ZW5zaW9uIHByb2Nlc3NvciBjbGFzc2VzLgorX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30K
KworCitjbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0
X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Cisg
ICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKKworICAgIGRlZiByZXF1ZXN0KHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9j
ZXNzb3JzKHNlbGYsIHByb2Nlc3NvcnMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0X2Fj
dGl2ZShzZWxmLCBhY3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUKKworICAg
IGRlZiBpc19hY3RpdmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAg
IGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5fYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdF
eHRlbnNpb24gJXMgaXMgZGVhY3RpdmF0ZWQnLCBzZWxmLm5hbWUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlX2ludGVybmFsKCkKKyAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAg
IHNlbGYuX2FjdGl2ZSA9IEZhbHNlCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVm
IF9zZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1f
b3B0aW9ucyk6CisgICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3Nl
dHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQorCisKK2RlZiBfbG9n
X291dGdvaW5nX2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRl
cmVkX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9y
YXRpbyk6CisgICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAg
IHJhdGlvID0gZmxvYXQoJ2luZicpCisgICAgaWYgb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAg
ICAgcmF0aW8gPSBmbG9hdChmaWx0ZXJlZF9ieXRlcykgLyBvcmlnaW5hbF9ieXRlcworCisgICAg
bG9nZ2VyLmRlYnVnKCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVm
KScgJQorICAgICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBf
bG9nX2luY29taW5nX2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZp
bHRlcmVkX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFn
ZV9yYXRpbyk6CisgICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgor
ICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCisgICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKKyAg
ICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcworCisg
ICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6
ICVmKScgJQorICAgICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2Rl
ZiBfcGFyc2Vfd2luZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2Vy
IHZhbHVlIGlmZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAgIGdyYW1tYXIg
b2YgdGhlIHdpbmRvdyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAg
aWYgYml0cyBpcyBOb25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1
aXJlZCcpCisKKyAgICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZh
bHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0cykKKworICAg
ICMgRmlyc3QgY29uZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgi
LgorICAgIGlmIGJpdHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2Jp
dHMgPiAxNToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUg
Yml0cykKKworICAgIHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdlUmF0aW9DYWxj
dWxhdG9yKG9iamVjdCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFu
ZCByZXN1bHQgZGF0YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3VsdCAvIG9yaWdp
bmFsIHJhdGlvLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9i
eXRlcyA9IDAKKworICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAg
ICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGFkZF9y
ZXN1bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0
ZXMgKz0gdmFsdWUKKworICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKKyAgICAgICAg
aWYgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiAo
ZmxvYXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAvCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0
dXJuIGZsb2F0KCdpbmYnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIicGVybWVzc2FnZS1k
ZWZsYXRlIGV4dGVuc2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAgIGh0
dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXBy
ZXNzaW9uLTA4CisgICAgIiIiCisKKyAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9
ICdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJworICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZF
Ul9QQVJBTSA9ICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQ0xJRU5UX01BWF9X
SU5ET1dfQklUU19QQVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJworICAgIF9DTElFTlRf
Tk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLiIiIgorCisgICAgICAgIEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBz
ZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxm
Ll9wcmVmZXJyZWRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5f
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6
CisgICAgICAgICMgVGhpcyBtZXRob2QgcmV0dXJucyAiZGVmbGF0ZSIgKG5vdCAicGVybWVzc2Fn
ZS1kZWZsYXRlIikgZm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgcmV0dXJu
ICdkZWZsYXRlJworCisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNl
bGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFt
ZXMoKToKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0KKyAgICAgICAgICAgIF06Cisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFtZXRlcjogJXIn
LCBuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX21h
eF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1l
dGVyKHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgc2Vy
dmVyX21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgK
KyAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBf
cGFyc2Vfd2luZG93X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93
X2JpdHMpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BB
UkFNLCBlKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAg
ICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKKyAgICAgICAgaWYg
KHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0
ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9W
RVJfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
JXMgcGFyYW1ldGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVy
KQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93
X2JpdHMgZnJvbSBhIGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgorICAg
ICAgICAjIGFjY2VwdCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90
LgorICAgICAgICBjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3Qu
aGFzX3BhcmFtZXRlcigKKyAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNf
UEFSQU0pCisgICAgICAgIGlmIChjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAg
ICAgICAgICAgIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pIGlzIG5vdCBO
b25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
JXMgcGFyYW1ldGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKKyAgICAgICAgICAgICAg
ICAnY2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgc2Vs
Zi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICBjbGllbnRf
Y2xpZW50X21heF93aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAg
ICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVy
KQorCisgICAgICAgICMgTm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2Vz
IGNvbXByZXNzZWQgd2l0aCB3aW5kb3cKKyAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVz
cyBvZiB0aGUgY2xpZW50X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQorICAgICAgICAjIHNl
bnQgdG8gdGhlIGNsaWVudC4KKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwu
X1JGQzE5NzlJbmZsYXRlcigpCisKKyAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VE
ZWZsYXRlRnJhbWVyKHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikK
KyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCisgICAgICAgIHNlbGYuX2Zy
YW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgICAgIHJlc3Bv
bnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKwor
ICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BB
UkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX21heF93
aW5kb3dfYml0cykpCisKKyAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI6Cisg
ICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9OT19DT05URVhU
X1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25l
KQorCisgICAgICAgIGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbm90IGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19i
aXRzOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAg
ICAgICAgJ1Byb2Nlc3NvciBpcyBjb25maWd1cmVkIHRvIHVzZSAlcyBidXQgJworICAgICAgICAg
ICAgICAgICAgICAndGhlIGNsaWVudCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9D
TElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQorCisg
ICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAg
cmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9Q
QVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIs
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNwb25zZTogY2xpZW50X21heF93aW5k
b3dfYml0cz0lczsgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyPSVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Jl
cXVlc3QubmFtZSgpLCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKSkK
KworICAgICAgICByZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlv
bnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgc2V0X2NsaWVu
dF9tYXhfd2luZG93X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlv
biBpcyBzcGVjaWZpZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgY2xpZW50X21heF93
aW5kb3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2Us
CisgICAgICAgIGJ1dCBkb2Vzbid0IHJlZHVjZSB0aGUgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXpl
IG9mIGl0cyBpbmZsYXRlci4KKyAgICAgICAgSS5lLiwgeW91IGNhbiB1c2UgdGhpcyBmb3IgdGVz
dGluZyBjbGllbnQgaW1wbGVtZW50YXRpb24gYnV0IGNhbm5vdAorICAgICAgICByZWR1Y2UgbWVt
b3J5IHVzYWdlIG9mIHRoaXMgY2xhc3MuCisKKyAgICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJl
ZW4gY2FsbGVkIHdpdGggVHJ1ZSBhbmQgYW4gb2ZmZXIgd2l0aG91dCB0aGUKKyAgICAgICAgY2xp
ZW50X21heF93aW5kb3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIGlzIHJlY2VpdmVkLAorICAg
ICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24p
IHRoaXMgcHJvY2Vzc29yCisgICAgICAgICAgZGVjbGluZXMgdGhlIHJlcXVlc3QuCisgICAgICAg
IC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24pIHRo
aXMgcHJvY2Vzc29yCisgICAgICAgICAgYWNjZXB0cyB0aGUgcmVxdWVzdC4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSB2YWx1
ZQorCisgICAgZGVmIHNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6
CisgICAgICAgICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRz
IHRoZQorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBleHRlbnNpb24gcGFyYW1l
dGVyIHRvIHRoZSBoYW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlc2V0
IGluZmxhdGVyIGZvciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBjYW4KKyAgICAgICAgdXNlIHRo
aXMgZm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QgcmVkdWNlIG1l
bW9yeQorICAgICAgICB1c2FnZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICAiIiIKKworICAgICAg
ICBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBkZWYgc2V0
X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZh
bHVlKQorCisgICAgZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAg
ICAgc2VsZi5fZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisKKyAg
ICBkZWYgZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5f
ZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZhbHNlKQorCisKK2NsYXNzIF9Q
ZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEgZnJhbWVyIGZvciBleHRl
bnNpb25zIHdpdGggcGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rh
a2VvdmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZs
YXRlcigKKyAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2Nv
bnRleHRfdGFrZW92ZXIpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwu
X1JGQzE5NzlJbmZsYXRlcigpCisKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKKworICAg
ICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKKworICAgICAgICAj
IFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9uIGlzIG9uZ29p
bmcuCisgICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQorCisgICAgICAgICMg
Q2FsY3VsYXRlcworICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQg
dG8gdGhpcyBmaWx0ZXIpIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhl
IG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX291dGdv
aW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkK
KworICAgICAgICAjIENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2Vp
dmVkIGZyb20gdGhlIG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5
dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9p
bmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRv
cigpCisKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2Jm
aW5hbCA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoc2Vs
ZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gdmFs
dWUKKworICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGRl
Y29tcHJlc3MpOgorICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKKyAgICAgICAgICAgIHJldHVy
biBtZXNzYWdlCisKKyAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2Up
CisgICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVz
dWx0X2J5dGVzKAorICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAg
IG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAg
ICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9p
bmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAg
ICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIF9sb2dfaW5jb21pbmdf
Y29tcHJlc3Npb25fcmF0aW8oCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIsIHJlY2VpdmVkX3Bh
eWxvYWRfc2l6ZSwgZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgc2VsZi5faW5j
b21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAg
ICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAg
ICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGlm
IG5vdCBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKKworICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkK
KyAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmln
aW5hbF9ieXRlcygKKyAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKKworICAgICAg
ICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIobWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1lbmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmluYWw9c2VsZi5f
YmZpbmFsKQorCisgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQor
ICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3Vs
dF9ieXRlcygKKyAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBf
bG9nX291dGdvaW5nX2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LCBvcmlnaW5hbF9wYXlsb2FkX3NpemUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAg
ICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9y
YXRpbygpKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgorICAgICAg
ICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQor
ICAgICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5nID0gbm90IGVuZAorICAgICAgICByZXR1cm4g
bWVzc2FnZQorCisgICAgZGVmIF9wcm9jZXNzX2luY29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToK
KyAgICAgICAgaWYgZnJhbWUucnN2MSA9PSAxIGFuZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bj
b2RlKGZyYW1lLm9wY29kZSk6CisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2Zp
bHRlci5kZWNvbXByZXNzX25leHRfbWVzc2FnZSgpCisgICAgICAgICAgICBmcmFtZS5yc3YxID0g
MAorCisgICAgZGVmIF9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVz
c2lvbl9iaXQpOgorICAgICAgICBpZiAobm90IGNvbXByZXNzaW9uX2JpdCBvciBjb21tb24uaXNf
Y29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICBmcmFtZS5yc3YxID0gMQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYs
IHN0cmVhbV9vcHRpb25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRo
ZW0gdG8gdGhlIFN0cmVhbU9wdGlvbnMuIiIiCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3Nh
Z2VGaWx0ZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQp
OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBk
ZWYgZmlsdGVyKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSgK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgY2xh
c3MgX0luY29taW5nTWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50
CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQor
CisgICAgICAgICAgICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAg
ICAgICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAg
ICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9
IHNlbGYuX3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlLCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRl
ciA9IF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdf
bWVzc2FnZV9maWx0ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0
cmVhbV9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAg
ICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMu
aW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29t
aW5nX21lc3NhZ2VfZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVy
KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9z
ZXRfY29tcHJlc3Npb25fYml0ID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldF9jb21wcmVz
c2lvbl9iaXQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2Jp
dCA9IFRydWUKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKGZyYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
ZXRfY29tcHJlc3Npb25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lv
bl9iaXQgPSBGYWxzZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVj
dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5n
X2ZyYW1lKGZyYW1lKQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9P
dXRnb2luZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2Zp
bHRlciA9IF9JbmNvbWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29p
bmdfZnJhbWVfZmlsdGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9m
aWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikK
KworICAgICAgICBzdHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBG
YWxzZQorCisKK19hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTl0gPSAoCisgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Ip
CisKKworZGVmIGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToKKyAg
ICAiIiJHaXZlbiBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVuc2lv
biBvZmZlciByZWNlaXZlZAorICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJldHVy
bnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBleHRlbnNpb24gcHJvY2Vz
c29yIGNsYXNzLgorICAgICIiIgorCisgICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJsZV9w
cm9jZXNzb3JzLmdldChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCisgICAgaWYgcHJvY2Vzc29y
X2NsYXNzIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHByb2Nlc3Nv
cl9jbGFzcyhleHRlbnNpb25fcmVxdWVzdCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZGFhZDI3ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5p
CkBAIC0wLDAgKzEsOTggQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCislbW9kdWxlIGZhc3RfbWFza2luZworCislaW5jbHVkZSAiY3N0cmluZy5pIgor
CisleworI2luY2x1ZGUgPGNzdHJpbmc+CisKKyNpZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVt
bWludHJpbi5oPgorI2VuZGlmCislfQorCislYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdU
SCkgeworICAgIChjb25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAorICAg
IChjb25zdCBjaGFyKiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKKyVj
c3RyaW5nX291dHB1dF9hbGxvY2F0ZV9zaXplKAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVz
dWx0X2xlbmd0aCwgZGVsZXRlIFtdICokMSk7CisKKyVpbmxpbmUgJXsKKwordm9pZCBtYXNrKAor
ICAgIGNvbnN0IGNoYXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKKyAgICBjb25zdCBj
aGFyKiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKKyAgICBpbnQgbWFza2lu
Z19rZXlfaW5kZXgsCisgICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7Cisg
ICpyZXN1bHQgPSBuZXcgY2hhcltwYXlsb2FkX2xlbmd0aF07CisgICpyZXN1bHRfbGVuZ3RoID0g
cGF5bG9hZF9sZW5ndGg7CisgIG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0
aCk7CisKKyAgY2hhciogY3Vyc29yID0gKnJlc3VsdDsKKyAgY2hhciogY3Vyc29yX2VuZCA9ICpy
ZXN1bHQgKyAqcmVzdWx0X2xlbmd0aDsKKworI2lmZGVmIF9fU1NFMl9fCisgIHdoaWxlICgoY3Vy
c29yIDwgY3Vyc29yX2VuZCkgJiYKKyAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4o
Y3Vyc29yKSAmIDB4ZikpIHsKKyAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5
X2luZGV4XTsKKyAgICArK2N1cnNvcjsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5n
X2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisgIGlmIChjdXJzb3Ig
PT0gY3Vyc29yX2VuZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGludCBrQmxvY2tT
aXplID0gMTY7CisgIF9fbTEyOGkgbWFza2luZ19rZXlfYmxvY2s7CisgIGZvciAoaW50IGkgPSAw
OyBpIDwga0Jsb2NrU2l6ZTsgKytpKSB7CisgICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigm
bWFza2luZ19rZXlfYmxvY2spICsgaSkgPQorICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF07CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAx
KSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorCisgIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tT
aXplIDw9IGN1cnNvcl9lbmQpIHsKKyAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQorICAgICAg
ICBfbW1fbG9hZF9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKKyAg
ICBfbW1fc3RyZWFtX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCisg
ICAgICAgICAgICAgICAgICAgICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdf
a2V5X2Jsb2NrKSk7CisgICAgY3Vyc29yICs9IGtCbG9ja1NpemU7CisgIH0KKyNlbmRpZgorCisg
IHdoaWxlIChjdXJzb3IgPCBjdXJzb3JfZW5kKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tl
eVttYXNraW5nX2tleV9pbmRleF07CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5k
ZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQor
fQorCislfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hh
bmRzaGFrZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiZTVhZTlmZGZkNDZkMTg5NzBiZjk5
MmNjMWFkZWEyNWFjYzVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4g
VGhpcyBjbGFzcyB0cnkgdG8gYXBwbHkgYXZhaWxhYmxlCitvcGVuaW5nIGhhbmRzaGFrZSBwcm9j
ZXNzb3JzIGZvciBlYWNoIHByb3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCitz
dWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaQor
IyBFeHBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgSGFuZHNoYWtlRXhjZXB0aW9uLCBhbmQg
VmVyc2lvbkV4Y2VwdGlvbgorIyBzeW1ib2wgZnJvbSB0aGlzIG1vZHVsZS4KK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lv
bkV4Y2VwdGlvbgorCitfTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKwor
ZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAiIiJQZXJmb3JtcyBX
ZWJTb2NrZXQgaGFuZHNoYWtlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5
dGhvbiByZXF1ZXN0LgorICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5E
aXNwYXRjaGVyKS4KKworICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFz
IHdzX3Jlc291cmNlIGluIHBlcmZvcm1pbmcKKyAgICBoYW5kc2hha2UuCisgICAgIiIiCisKKyAg
ICBfTE9HR0VSLmRlYnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgcmVzb3VyY2U6ICVy
JywgcmVxdWVzdC51cmkpCisgICAgIyBUbyBwcmludCBtaW1ldG9vbHMuTWVzc2FnZSBhcyBlc2Nh
cGVkIG9uZS1saW5lIHN0cmluZywgd2UgY29udmVydHMKKyAgICAjIGhlYWRlcnNfaW4gdG8gZGlj
dCBvYmplY3QuIFdpdGhvdXQgY29udmVyc2lvbiwgaWYgd2UgdXNlICVyLCBpdCBqdXN0CisgICAg
IyBwcmludHMgdGhlIHR5cGUgYW5kIGFkZHJlc3MsIGFuZCBpZiB3ZSB1c2UgJXMsIGl0IHByaW50
cyB0aGUgb3JpZ2luYWwKKyAgICAjIGhlYWRlciBzdHJpbmcgYXMgbXVsdGlwbGUgbGluZXMuCisg
ICAgIworICAgICMgQm90aCBtaW1ldG9vbHMuTWVzc2FnZSBhbmQgTXBUYWJsZV9UeXBlIG9mIG1v
ZF9weXRob24gY2FuIGJlCisgICAgIyBjb252ZXJ0ZWQgdG8gZGljdC4KKyAgICAjCisgICAgIyBt
aW1ldG9vbHMuTWVzc2FnZS5fX3N0cl9fIHJldHVybnMgdGhlIG9yaWdpbmFsIGhlYWRlciBzdHJp
bmcuCisgICAgIyBkaWN0KG1pbWV0b29scy5NZXNzYWdlIG9iamVjdCkgcmV0dXJucyB0aGUgbWFw
IGZyb20gaGVhZGVyIG5hbWVzIHRvCisgICAgIyBoZWFkZXIgdmFsdWVzLiBXaGlsZSBNcFRhYmxl
X1R5cGUgZG9lc24ndCBoYXZlIHN1Y2ggX19zdHJfXyBidXQganVzdAorICAgICMgX19yZXByX18g
d2hpY2ggZm9ybWF0cyBpdHNlbGYgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgICBf
TE9HR0VSLmRlYnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAor
ICAgICAgICAgICAgICAgICAgZGljdChyZXF1ZXN0LmhlYWRlcnNfaW4pKQorCisgICAgaGFuZHNo
YWtlcnMgPSBbXQorICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgoJ1JGQyA2NDU1JywgaHliaS5IYW5k
c2hha2VyKHJlcXVlc3QsIGRpc3BhdGNoZXIpKSkKKworICAgIGZvciBuYW1lLCBoYW5kc2hha2Vy
IGluIGhhbmRzaGFrZXJzOgorICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wg
dmVyc2lvbiAlcycsIG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRzaGFrZXIu
ZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVz
IHByb3RvY29sKScsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEhh
bmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHBy
b3RvY29sOiAlcicsCisgICAgICAgICAgICAgICAgbmFtZSwgZSkKKyAgICAgICAgICAgIGlmIGUu
c3RhdHVzOgorICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZXhjZXB0IEFib3J0ZWRC
eVVzZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBW
ZXJzaW9uRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorCisgICAgIyBUT0RPKHRv
eW9zaGltKTogQWRkIGEgdGVzdCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFp
bC4KKyAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICdGYWlsZWQgdG8gY29t
cGxldGUgb3BlbmluZyBoYW5kc2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKKyAg
ICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1OGRkOGQ0OTdkOWQ4OWRkOWMxMDQzMmJj
ZGJhM2U5MDNlMWI2MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CkBAIC0wLDAgKzEsMTc5IEBACisjIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIkNvbW1vbiBmdW5jdGlvbnMgYW5kIGV4Y2VwdGlvbnMgdXNlZCBieSBXZWJT
b2NrZXQgb3BlbmluZyBoYW5kc2hha2UKK3Byb2Nlc3NvcnMuCisiIiIKKworZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBj
b21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKwor
Y2xhc3MgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlv
biBmb3IgYWJvcnRpbmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFsbHkuCisKKyAgICBJZiB0aGlz
IGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBj
b25uZWN0aW9uCisgICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBI
VFRQKFMpIGhhbmRsZXIgd2lsbCBiZSBpbnZva2VkLgorCisgICAgSWYgdGhpcyBleGNlcHRpb24g
aXMgcmFpc2VkIGluIHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAor
ICAgIGJlIGNsb3NlZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2Nr
ZXQgb3IgSFRUUChTKSBoYW5kbGVyCisgICAgd2lsbCBiZSBpbnZva2VkLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIi
IlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hp
bGUgcHJvY2Vzc2luZworICAgIFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KKyAgICAiIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc3RhdHVzPU5vbmUpOgorICAgICAgICBzdXBl
cihIYW5kc2hha2VFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYu
c3RhdHVzID0gc3RhdHVzCisKKworY2xhc3MgVmVyc2lvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgor
ICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSB2ZXJzaW9uIG9mIGNs
aWVudCByZXF1ZXN0IGRvZXMgbm90CisgICAgbWF0Y2ggd2l0aCB2ZXJzaW9uIHRoZSBzZXJ2ZXIg
c3VwcG9ydHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cHBvcnRl
ZF92ZXJzaW9ucz0nJyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEgc3RyIG9iamVjdCB0
byBzaG93IHN1cHBvcnRlZCBoeWJpIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChlLmcuICcxMycpCisgICAgICAgICIiIgorICAgICAgICBzdXBlcihWZXJzaW9uRXhj
ZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN1cHBvcnRlZF92ZXJz
aW9ucyA9IHN1cHBvcnRlZF92ZXJzaW9ucworCisKK2RlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3Nl
Y3VyZSk6CisgICAgaWYgaXNfc2VjdXJlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRf
V0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBjb21tb24u
REVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworCitkZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3Vi
cHJvdG9jb2wpOgorICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQt
UHJvdG9jb2wgZmllbGQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQg
NC4zLiBvZiBSRkMgNjQ1NS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBzdWJwcm90b2NvbDoKKyAg
ICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29sIG5hbWU6
IGVtcHR5JykKKworICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4u
CisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShzdWJwcm90b2NvbCkK
KyAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICBy
ZXN0ID0gaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQorICAgICMgSWYgfHJlc3R8IGlzIG5v
dCBOb25lLCB8c3VicHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3IgaW52YWxpZC4gSWYKKyAg
ICAjIHxyZXN0fCBpcyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3Vi
cHJvdG9jb2x8IGlzCisgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBh
bmQgaXMgbm90IE5vbmUuCisgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9j
b2wgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJlc3Qp
CisKKworZGVmIHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgorICAgIGZpZWxkcyA9IHJlcXVl
c3QuaGVhZGVyc19pbltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKKyAgICBpZiBs
ZW4oZmllbGRzKSA9PSAxOgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9w
b3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVsZHNb
MF0sIGludChmaWVsZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAg
cmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXIn
ICUgZSkKKworCitkZWYgZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSk6CisgICAgcmV0dXJuIHUn
JXM6ICVzXHJcbicgJSAobmFtZSwgdmFsdWUpCisKKworZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVy
KHJlcXVlc3QsIGtleSk6CisgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkK
KyAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24o
J0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgcmV0dXJuIHZhbHVlCisKKwor
ZGVmIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1
ZSwgZmFpbF9zdGF0dXM9Tm9uZSk6CisgICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihy
ZXF1ZXN0LCBrZXkpCisKKyAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxv
d2VyKCk6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdF
eHBlY3RlZCAlciBmb3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSkn
ICUKKyAgICAgICAgICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksCisgICAgICAgICAg
ICBzdGF0dXM9ZmFpbF9zdGF0dXMpCisKKworZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0
KToKKyAgICAjIDUuMSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4K
KyAgICAjIDUuMSAyLiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgy
MCBieXRlKS4KKyAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSB1J0dFVCc6CisgICAgICAgIHJhaXNl
IEhhbmRzaGFrZUV4Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0
aG9kKQorCisgICAgaWYgcmVxdWVzdC5wcm90b2NvbCAhPSB1J0hUVFAvMS4xJzoKKyAgICAgICAg
cmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCisKKwor
ZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6CisgICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVl
IHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKKyAgICBh
cyBhIGxpc3Qgb2Ygc3RyaW5ncy4KKworICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVk
LgorICAgICIiIgorCisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShk
YXRhKQorCisgICAgdG9rZW5fbGlzdCA9IFtdCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0
b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICAgICAgaWYg
dG9rZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikK
KworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAg
ICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgorICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhz
dGF0ZSwgJywnKToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRXhwZWN0
ZWQgYSBjb21tYSBidXQgZm91bmQgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVh
ZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbih0b2tlbl9saXN0KSA9
PSAwOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ05vIHZhbGlkIHRva2VuIGZv
dW5kJykKKworICAgIHJldHVybiB0b2tlbl9saXN0CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5
YmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5Ymku
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZkNjNlYjYzZWRkMWY0YWNmODg3ZGYzNWQ0YmRjM2I2ZTEzOTkxNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5k
c2hha2UvaHliaS5weQpAQCAtMCwwICsxLDM5NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlz
IGZpbGUgcHJvdmlkZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldAorcHJvdG9jb2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBv
cworaW1wb3J0IHJlCitmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKKworZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBv
cnQgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgY2hlY2tfcmVxdWVzdF9saW5lCitmcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UuX2Jhc2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9t
IG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QK
K2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFu
ZGF0b3J5X2hlYWRlcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCB2YWxpZGF0ZV9zdWJwcm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0g
aW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1P
cHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMg
aW1wb3J0IG1hcAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKyMgVXNlZCB0byB2YWxp
ZGF0ZSB0aGUgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4g
UkZDIDQ2NDgKKyMgZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIg
cmlnaHQgYmVmb3JlID09IG11c3QgYmUgYW55IG9mCisjIEEsIFEsIGcgYW5kIHcuCitfU0VDX1dF
QlNPQ0tFVF9LRVlfUkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109
PSQnKQorCisjIERlZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitf
VkVSU0lPTl9MQVRFU1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFU
RVNUX1NUUklORyA9IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0g
WworICAgIF9WRVJTSU9OX0xBVEVTVCwKK10KKworCitkZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToK
KyAgICAiIiJDb21wdXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRl
ciBmcm9tIHZhbHVlIG9mIHRoZQorICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAi
IiIKKworICAgIGFjY2VwdF9iaW5hcnkgPSBzaGExKGtleSArIGNvbW1vbi5XRUJTT0NLRVRfQUND
RVBUX1VVSUQpLmRpZ2VzdCgpCisgICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2NlcHRf
YmluYXJ5KQorCisgICAgcmV0dXJuIGFjY2VwdAorCisKK2RlZiBjb21wdXRlX2FjY2VwdF9mcm9t
X3VuaWNvZGUodW5pY29kZV9rZXkpOgorICAgICIiIkEgd3JhcHBlciBmdW5jdGlvbiBmb3IgY29t
cHV0ZV9hY2NlcHQgd2hpY2ggdGFrZXMgYSB1bmljb2RlIHN0cmluZyBhcyBhbgorICAgIGFyZ3Vt
ZW50LCBhbmQgZW5jb2RlcyBpdCB0byBieXRlIHN0cmluZy4gSXQgdGhlbiBwYXNzZXMgaXQgb24g
dG8KKyAgICBjb21wdXRlX2FjY2VwdC4KKyAgICAiIiIKKworICAgIGtleSA9IHVuaWNvZGVfa2V5
LmVuY29kZSgnVVRGLTgnKQorICAgIHJldHVybiBjb21wdXRlX2FjY2VwdChrZXkpCisKKworY2xh
c3MgSGFuZHNoYWtlcihvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nv
ciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRj
aC5EaXNwYXRjaGVyKS4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMg
c3VjaCBhcyB3c19yZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKworICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAg
ICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlz
cGF0Y2hlcgorCisgICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKKyAg
ICAgICAgY29ubmVjdGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uQ09OTkVDVElP
Tl9IRUFERVIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMg
PSBwYXJzZV90b2tlbl9saXN0KGNvbm5lY3Rpb24pCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VF
eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRmFp
bGVkIHRvIHBhcnNlICVzOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGUpKQorCisgICAgICAgIGNvbm5lY3Rpb25f
aXNfdmFsaWQgPSBGYWxzZQorICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6
CisgICAgICAgICAgICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJ
T05fVFlQRS5sb3dlcigpOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBU
cnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNf
dmFsaWQ6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJyVzIGhlYWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKKyAgICAgICAgICAgICAg
ICAoY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZ
UEUpKQorCisgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVz
dC53c19jbG9zZV9jb2RlID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3Jl
YXNvbiA9IE5vbmUKKworICAgICAgICAjIFBhcnNpbmcuCisKKyAgICAgICAgY2hlY2tfcmVxdWVz
dF9saW5lKHNlbGYuX3JlcXVlc3QpCisKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cihzZWxmLl9yZXF1ZXN0LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCisKKyAgICAg
ICAgc2VsZi5fdmFsaWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoKQorCisgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVzb3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIHVudXNlZF9o
b3N0ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgY29tbW9uLkhPU1RfSEVB
REVSKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3Zl
cnNpb24oKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQor
ICAgICAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNl
X2V4dGVuc2lvbnMoKQorCisgICAgICAgICAgICAjIEtleSB2YWxpZGF0aW9uLCByZXNwb25zZSBn
ZW5lcmF0aW9uLgorCisgICAgICAgICAgICBrZXkgPSBzZWxmLl9nZXRfa2V5KCkKKyAgICAgICAg
ICAgIGFjY2VwdCA9IGNvbXB1dGVfYWNjZXB0KGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnJXM6ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkpKQor
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgUkZD
IDY0NTUnKQorCisgICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorCisg
ICAgICAgICAgICBwcm9jZXNzb3JzID0gW10KKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9y
IGV4dGVuc2lvbl9yZXF1ZXN0IGluIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lv
bnM6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9IGdldF9leHRlbnNpb25fcHJvY2Vz
c29yKGV4dGVuc2lvbl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0
ZW5zaW9uIHJlcXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIGlm
IHByb2Nlc3NvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nv
cnMuYXBwZW5kKHByb2Nlc3NvcikKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9uX3Byb2Nlc3NvcnMgPSBwcm9jZXNzb3JzCisKKyAgICAgICAgICAgICMgTGlzdCBvZiBleHRy
YSBoZWFkZXJzLiBUaGUgZXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IGFkZCBoZWFkZXIKKyAg
ICAgICAgICAgICMgZGF0YSBhcyBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3
ZWJzb2NrZXQgYXBwZW5kcworICAgICAgICAgICAgIyB0aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFu
ZHNoYWtlLgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFkZXJzID0gW10KKwor
ICAgICAgICAgICAgIyBFeHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBw
cm9jZXNzb3JzLgorICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hh
a2Uoc2VsZi5fcmVxdWVzdCkKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAg
ICAgICAgcHJvY2Vzc29yCisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBzZWxmLl9y
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vz
c29yIGlzIG5vdCBOb25lCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgICMgQXNrIGVhY2gg
cHJvY2Vzc29yIGlmIHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdoaWNoCisg
ICAgICAgICAgICAjIGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRlZCBvdGhl
ciBwcm9jZXNzb3JzIGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0LCB0aGUg
cHJvY2Vzc29yIG1hcmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMgImluYWN0
aXZlIi4gVGhlIGZpcnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0bworICAg
ICAgICAgICAgIyBtYWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHByb2Nlc3Nv
ciBpbiByZXZlcnNlZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3Iu
aXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19jb25zaXN0
ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzb3JzKQorICAgICAgICAgICAgcHJvY2Vzc29ycyA9IFsKKyAgICAgICAgICAgICAgICBwcm9j
ZXNzb3IgZm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUo
KQorICAgICAgICAgICAgXQorCisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10K
KworICAgICAgICAgICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKworICAgICAg
ICAgICAgZm9yIGluZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAg
ICAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBw
cm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgICAgICAgICAgaWYgZXh0
ZW5zaW9uX3Jlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgUmVqZWN0ZWQu
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBhY2NlcHRl
ZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25fcmVzcG9uc2UpCisKKyAgICAgICAgICAgICAg
ICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICAg
ICAgICAgICAgICAjIEluYWN0aXZhdGUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcHJlc3Npb24g
ZXh0ZW5zaW9ucy4KKyAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpbmRleCArIDEsIGxl
bihwcm9jZXNzb3JzKSk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2Fj
dGl2ZShGYWxzZSkKKworICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4g
MDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRl
ZF9leHRlbnNpb25zCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgICAgICAgICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAg
ICAgICBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRl
bnNpb25zKSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfZXh0ZW5zaW9ucyA9IE5vbmUKKworICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19z
dHJlYW0gPSBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAg
ICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAnZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2Nv
bCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xz
IGFuZCBzZXQgaXQgdG8gd3NfcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1
YnByb3RvY29sKHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9j
b2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUg
d2hlbiB0aGUgY2xpZW50IGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVl
c3QgYW55IHN1YnByb3RvY29sJykKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2Uo
YWNjZXB0KQorICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAg
ICAgICBpZiBub3QgZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAg
YmFkIHJlcXVlc3QgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1v
bi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVAorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgZGVm
IF9nZXRfb3JpZ2luKHNlbGYpOgorICAgICAgICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJ
Tl9IRUFERVIKKyAgICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChv
cmlnaW5faGVhZGVyKQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnQ2xpZW50IHJlcXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVh
ZGVyJykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmlnaW4KKworICAgIGRl
ZiBfY2hlY2tfdmVyc2lvbihzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlf
aGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUikKKyAgICAgICAgaWYgdmVy
c2lvbiA9PSBfVkVSU0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJT
SU9OX0xBVEVTVAorCisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxl
IHZlcnNpb25zICglcikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAg
ICAgICAgICAodmVyc2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAor
ICAgICAgICAgICAgICAgIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisg
ICAgICAgIHJhaXNlIFZlcnNpb25FeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9y
IGhlYWRlciAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBj
b21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQorCisg
ICAgZGVmIF9zZXRfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJv
dG9jb2wgPSBOb25lCisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5o
ZWFkZXJzX2luLmdldCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09M
X0hFQURFUikKKworICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29s
cyA9IHBhcnNlX3Rva2VuX2xpc3QoCisgICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9j
b2xzKQorCisgICAgZGVmIF9wYXJzZV9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBleHRlbnNp
b25zX2hlYWRlciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCisgICAgICAgICAgICBj
b21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUikKKyAgICAgICAgaWYgbm90IGV4
dGVuc2lvbnNfaGVhZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRf
ZXh0ZW5zaW9ucyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24u
cGFyc2VfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAg
ICAgICAgZXhjZXB0IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxl
ZCB0byBwYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVl
c3RlZDogJXInLAorICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX3ZhbGlkYXRlX2tleShz
ZWxmLCBrZXkpOgorICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBs
aW5lcyBvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5z
IGlsbGVnYWwgY2hhcmFjdGVyIFwnLFwnOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisg
ICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVm
b3JlIHBhcnNpbmcgYnkgYmFzZTY0CisgICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNl
NjQgbW9kdWxlIHNraXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQorICAgICAgICAgICAg
IyB0byBkbyB0aGlzIGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWpl
Y3QgaWxsZWdhbAorICAgICAgICAgICAgIyBrZXlzLgorICAgICAgICAgICAgaWYgX1NFQ19XRUJT
T0NLRVRfS0VZX1JFR0VYLm1hdGNoKGtleSk6CisgICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkg
PSBiYXNlNjQuYjY0ZGVjb2RlKGtleSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9r
ZXkpID09IDE2OgorICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCisgICAg
ICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBp
ZiBub3Qga2V5X2lzX3ZhbGlkOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KCdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSkp
CisKKyAgICAgICAgcmV0dXJuIGRlY29kZWRfa2V5CisKKyAgICBkZWYgX2dldF9rZXkoc2VsZik6
CisgICAgICAgIGtleSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9I
RUFERVIpCisKKyAgICAgICAgZGVjb2RlZF9rZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQor
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9LRVlfSEVBREVSLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls
LmhleGlmeShkZWNvZGVkX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGtleS5lbmNvZGUoJ1VURi04
JykKKworICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAg
ICAgIHJldHVybiBTdHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICBk
ZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKKyAgICAgICAgcmVz
cG9uc2UgPSBbXQorCisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J0hUVFAvMS4xIDEwMSBTd2l0
Y2hpbmcgUHJvdG9jb2xzXHJcbicpCisKKyAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycworICAg
ICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNvbW1vbi5V
UEdSQURFX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tF
VF9VUEdSQURFX1RZUEUpKQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBm
b3JtYXRfaGVhZGVyKGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKyAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKAorICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tF
VF9BQ0NFUFRfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQuZGVjb2Rl
KCdVVEYtOCcpKSkKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3Jt
YXRfaGVhZGVyKGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQorICAgICAg
ICBpZiAoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAgICAg
ICAgICAgYW5kIGxlbihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKAorICAgICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoCisg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVS
LAorICAgICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBm
b3IgV2ViU29ja2V0CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4
dHJhX2hlYWRlcnM6CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihu
YW1lLCB2YWx1ZSkpCisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUnXHJcbicpCisKKyAgICAg
ICAgcmV0dXJuIHUnJy5qb2luKHJlc3BvbnNlKQorCisgICAgZGVmIF9zZW5kX2hhbmRzaGFrZShz
ZWxmLCBhY2NlcHQpOgorICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNo
YWtlX3Jlc3BvbnNlKGFjY2VwdCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKHJhd19yZXNwb25zZS5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtl
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1OThmNTcwZjJkYzFlZTAxNjJkOTk2ZDY4ODVj
YTBiZDZhYjdmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJf
dXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91
dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRlZDkwYjI0N2I4ZGVkOWYyNTRkYWJhNzA5MDljYmM4ZmYzYzgy
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aHR0cF9oZWFkZXJfdXRpbC5weQpAQCAtMCwwICsxLDI1NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisi
IiJVdGlsaXRpZXMgZm9yIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVhZGVycyB0aGF0IGZvbGxv
dyB0aGUgZ3JhbW1hciBkZWZpbmVkCitpbiBIVFRQIFJGQyBodHRwOi8vd3d3LmlldGYub3JnL3Jm
Yy9yZmMyNjE2LnR4dC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydAoraW1wb3J0IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UKKworX1NFUEFSQVRPUlMgPSAnKCk8
PkAsOzpcXCIvW10/PXt9IFx0JworCisKK2RlZiBfaXNfY2hhcihjKToKKyAgICAiIiJSZXR1cm5z
IHRydWUgaWZmIGMgaXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCisKKyAg
ICByZXR1cm4gb3JkKGMpIDw9IDEyNworCisKK2RlZiBfaXNfY3RsKGMpOgorICAgICIiIlJldHVy
bnMgdHJ1ZSBpZmYgYyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisg
ICAgcmV0dXJuIG9yZChjKSA8PSAzMSBvciBvcmQoYykgPT0gMTI3CisKKworY2xhc3MgUGFyc2lu
Z1N0YXRlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBz
ZWxmLmRhdGEgPSBkYXRhCisgICAgICAgIHNlbGYuaGVhZCA9IDAKKworCitkZWYgcGVlayhzdGF0
ZSwgcG9zPTApOgorICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20gdGhlIGhl
YWQgb2YgZGF0YS4iIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0YXRlLmRh
dGEpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgcmV0dXJuIHN0YXRlLmRhdGFbc3RhdGUu
aGVhZCArIHBvc10KKworCitkZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgorICAgICIiIkNv
bnN1bWVzIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQgcmV0dXJu
cyB0aGUKKyAgICBjb25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5dGVzIHRv
IGNvbnN1bWUsIHJldHVybnMgTm9uZS4KKyAgICAiIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBh
bW91bnQgPiBsZW4oc3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXN1
bHQgPSBzdGF0ZS5kYXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KKyAgICBzdGF0
ZS5oZWFkID0gc3RhdGUuaGVhZCArIGFtb3VudAorICAgIHJldHVybiByZXN1bHQKKworCitkZWYg
Y29uc3VtZV9zdHJpbmcoc3RhdGUsIGV4cGVjdGVkKToKKyAgICAiIiJHaXZlbiBhIHBhcnNpbmcg
c3RhdGUgYW5kIGEgZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZyb20KKyAg
ICB0aGUgaGVhZC4gUmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3
aXNlLCByZXR1cm5zCisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBwb3MgPSAwCisKKyAgICBm
b3IgYyBpbiBleHBlY3RlZDoKKyAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3MpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHBvcyArPSAxCisKKyAgICBjb25zdW1lKHN0
YXRlLCBwb3MpCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3Moc3RhdGUpOgor
ICAgICIiIkNvbnN1bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBpZiBhbnkg
TFdTIGlzIGNvbnN1bWVkLgorICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KKworICAgIExX
UyA9IFtDUkxGXSAxKiggU1AgfCBIVCApCisgICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0g
c3RhdGUuaGVhZAorCisgICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKKworICAgIHBv
cyA9IDAKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisg
ICAgICAgIGlmIGMgPT0gJyAnIG9yIGMgPT0gJ1x0JzoKKyAgICAgICAgICAgIHBvcyArPSAxCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBwb3MgPT0gMDoKKyAgICAgICAgICAgICAgICBz
dGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3NlcyhzdGF0ZSk6
CisgICAgIiIiQ29uc3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgorCisgICAgd2hpbGUgY29u
c3VtZV9sd3Moc3RhdGUpOgorICAgICAgICBwYXNzCisKKworZGVmIGNvbnN1bWVfdG9rZW4oc3Rh
dGUpOgorICAgICIiIkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJucyB0aGUg
dG9rZW4gb3IgTm9uZSBpZiBubyB0b2tlbgorICAgIHdhcyBmb3VuZC4KKyAgICAiIiIKKworICAg
IHBvcyA9IDAKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3Mp
CisgICAgICAgIGlmIGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykg
b3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3RhdGUsIHBv
cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcyArPSAxCisKKworZGVmIGNvbnN1bWVf
dG9rZW5fb3JfcXVvdGVkX3N0cmluZyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBv
ciBhIHF1b3RlZC1zdHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3RlZAorICAg
IHN0cmluZy4gSWYgbm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJldHVybnMg
Tm9uZS4KKyAgICAiIiIKKworICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBp
ZiBub3QgY29uc3VtZV9zdHJpbmcoc3RhdGUsICciJyk6CisgICAgICAgIHJldHVybiBjb25zdW1l
X3Rva2VuKHN0YXRlKQorCisgICAgcmVzdWx0ID0gW10KKworICAgIGV4cGVjdF9xdW90ZWRfcGFp
ciA9IEZhbHNlCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBub3QgZXhwZWN0X3F1b3Rl
ZF9wYWlyIGFuZCBjb25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgJykKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYyA9IGNvbnN1bWUoc3RhdGUp
CisgICAgICAgIGlmIGMgaXMgTm9uZToKKyAgICAgICAgICAgICMgcXVvdGVkLXN0cmluZyBpcyBu
b3QgZW5jbG9zZWQgd2l0aCBkb3VibGUgcXVvdGF0aW9uCisgICAgICAgICAgICBzdGF0ZS5oZWFk
ID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBl
eHBlY3RfcXVvdGVkX3BhaXI6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxz
ZQorICAgICAgICAgICAgaWYgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChjKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vbiBDSEFSIGNo
YXJhY3RlciBmb3VuZCBpbiBxdW90ZWQtcGFpcgorICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQg
PSBvcmlnaW5hbF9oZWFkCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxp
ZiBjID09ICdcXCc6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVlCisgICAg
ICAgIGVsaWYgYyA9PSAnIic6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisg
ICAgICAgIGVsaWYgX2lzX2N0bChjKToKKyAgICAgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXIg
JXIgZm91bmQgaW4gcWR0ZXh0CisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVh
ZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoYykKKworCitkZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgorICAgICIiIlF1
b3RlcyBhcmJpdHJhcnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKKworICAgIHF1b3Rl
ID0gRmFsc2UKKyAgICBpZiBzID09ICcnOgorICAgICAgICByZXR1cm4gJyIiJworCisgICAgcmVz
dWx0ID0gW10KKyAgICBmb3IgYyBpbiBzOgorICAgICAgICBpZiBjID09ICciJyBvciBjIGluIF9T
RVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAg
cXVvdGUgPSBUcnVlCisKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcJyArIGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGMpCisKKyAgICBpZiBxdW90ZToKKyAgICAgICAgcmV0dXJuICciJyAr
ICcnLmpvaW4ocmVzdWx0KSArICciJworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2lu
KHJlc3VsdCkKKworCitkZWYgcGFyc2VfdXJpKHVyaSk6CisgICAgIiIiUGFyc2UgYWJzb2x1dGUg
VVJJIHRoZW4gcmV0dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgorCisgICAgcGFyc2Vk
ID0gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmkpCisgICAgaWYgcGFyc2VkLnNj
aGVtZSAhPSAnd3NzJyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgorICAgICAgICAjIHx1cml8
IG11c3QgYmUgYSByZWxhdGl2ZSBVUkkuCisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IFNob3Vs
ZCB2YWxpZGF0ZSB8dXJpfC4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVyaQorCisgICAg
aWYgcGFyc2VkLmhvc3RuYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBO
b25lCisKKyAgICBwb3J0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcG9ydCA9IHBhcnNlZC5w
b3J0CisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICMgVGhlIHBvcnQgcHJvcGVydHkg
Y2F1c2UgVmFsdWVFcnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbnMKKyAgICAg
ICAgIyBsaWtlICd3czovL2hvc3Q6SU5WQUxJRF9QT1JUL3BhdGgnLCB3aGVyZSB0aGUgYXNzaWdu
ZWQgcG9ydCBpcyBub3QKKyAgICAgICAgIyAqRElHSVQuIEZvciBweXRob24gMy42IGFuZCBsYXRl
ciwgVmFsdWVFcnJvciBhbHNvIHJhaXNlcyB3aGVuCisgICAgICAgICMgYXNzaWduaW5nIGludmFs
aWQgcG9ydCBudW1iZXJzIHN1Y2ggYXMgJ3dzOi8vaG9zdDotMS9wYXRoJy4gRWFybGllcgorICAg
ICAgICAjIHZlcnNpb25zIHNpbXBseSByZXR1cm4gTm9uZSBhbmQgaWdub3JlIGludmFsaWQgcG9y
dCBhdHRyaWJ1dGVzLgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgaWYg
cG9ydCBpcyBOb25lOgorICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICd3cyc6CisgICAgICAg
ICAgICBwb3J0ID0gODAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcnQgPSA0NDMKKwor
ICAgIHBhdGggPSBwYXJzZWQucGF0aAorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoICs9
ICcvJworICAgIGlmIHBhcnNlZC5xdWVyeToKKyAgICAgICAgcGF0aCArPSAnPycgKyBwYXJzZWQu
cXVlcnkKKyAgICBpZiBwYXJzZWQuZnJhZ21lbnQ6CisgICAgICAgIHBhdGggKz0gJyMnICsgcGFy
c2VkLmZyYWdtZW50CisKKyAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lLCBwb3J0LCBwYXRoCisK
KworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1Mzk2NzYxODQ3YTY4NDA0
NjQ4NDBiMGU3MmViYzdiYTE1MGU0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDk5IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTWVtb3JpemluZyBm
aWxlLgorCitBIG1lbW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5l
cyByZWFkIGJ5IHJlYWRsaW5lLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1
dGVfaW1wb3J0CitpbXBvcnQgc3lzCisKKworY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToK
KyAgICAiIiJNZW1vcml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyBy
ZWFkIGJ5IHJlYWRsaW5lLgorCisgICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBieSBvdGhlciBtZXRo
b2RzIGFyZSBub3QgbWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCisgICAgaXMgZ29vZCBlbm91Z2gg
Zm9yIG1lbW9yaXppbmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBiZWZvcmUKKyAgICB0
aGUgY29udHJvbCByZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgorICAgICIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlXywgbWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4c2l6
ZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAg
bWF4X21lbW9yaXplZF9saW5lczogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9y
aXplLgorICAgICAgICAgICAgICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMg
YXJlIG1lbW9yaXplZC4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgorICAg
ICAgICAiIiIKKyAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCisgICAgICAgIHNlbGYuX21lbW9y
aXplZF9saW5lcyA9IFtdCisgICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhf
bWVtb3JpemVkX2xpbmVzCisgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5fYnVmZmVyZWRfbGluZSA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNl
bGYsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KKyAgICAgICAg
CisgICAgICAgIFJldHVybnMgdGhlIHZhbHVlIG92ZXJyaWRkZW4gYnkgdGhpcyBjbGFzcyBmb3Ig
c29tZSBhdHRyaWJ1dGVzLAorICAgICAgICBhbmQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gX2ZpbGUg
Zm9yIHRoZSBvdGhlciBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSBp
biAoJ19maWxlJywgJ19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAor
ICAgICAgICAgICAgICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3JlYWRs
aW5lJywKKyAgICAgICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAgICAg
ICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYgcmVh
ZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUg
YW5kIG1lbW9yaXplIHRoZSBsaW5lIHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGV2ZW4gaWYg
c2l6ZSBpcyBzcGVjaWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKKyAgICAgICAg
dGhlIHdob2xlIGxpbmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBvYmpl
Y3QgYnkKKyAgICAgICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIHNlbGYuX2J1ZmZlcmVkOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZl
cmVkX2xpbmUKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAg
IGlmIGxpbmUgYW5kIGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21lbW9y
aXplZF9saW5lczoKKyAgICAgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMuYXBwZW5k
KGxpbmUpCisgICAgICAgIGlmIHNpemUgPj0gMCBhbmQgc2l6ZSA8IGxlbihsaW5lKToKKyAgICAg
ICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWRf
bGluZSA9IGxpbmVbc2l6ZTpdCisgICAgICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKyAgICAg
ICAgcmV0dXJuIGxpbmUKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAg
ICAgICAiIiJHZXQgbGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX21lbW9yaXplZF9saW5lcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThjYTc4ZTE0
YWQyNWU3YTQ0ZDFhYjI2MmU3YmQzNWNlYWVhNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKQEAgLTAsMCArMSwyMTQgQEAK
KyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorIiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KKworTm90ZTog
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2
ZW4gdGhvdWdoCittb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1
c2VkIG9ubHkgaW4gY29ubmVjdGlvbgoraGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUg
bm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCityZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5v
dCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdworYnl0ZXMgd3Jp
dGluZy9yZWFkaW5nLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0CitpbXBvcnQgc2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCisKKyMgRXhwb3J0
IEV4Y2VwdGlvbiBzeW1ib2xzIGZyb20gbXNndXRpbCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0
eQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0
aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNl
cHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0
Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVF
eGNlcHRpb24KKworCisjIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2ViU29j
a2V0IG1lc3NhZ2VzLgorZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgIiIiQ2xv
c2UgY29ubmVjdGlvbi4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKyAgICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9u
KCkKKworCitkZWYgc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRydWUs
IGJpbmFyeT1GYWxzZSk6CisgICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBtZXNz
YWdlKS4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4K
KyAgICAgICAgcGF5bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBzZW5k
LgorICAgICAgICBlbmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KKyAgICAgICAgICAg
ICBGYWxzZSB0byBzZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0IGlz
IHRvIGJlCisgICAgICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRfbWVz
c2FnZSBjYWxsIHdpdGggZW5kPVRydWUuCisgICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2FkX2Rh
dGEgYXMgYmluYXJ5IGZyYW1lKHMpLgorICAgIFJhaXNlczoKKyAgICAgICAgQmFkT3BlcmF0aW9u
RXhjZXB0aW9uOiB3aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkp
CisKKworZGVmIHJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKKyAgICAiIiJSZWNlaXZlIGEgV2Vi
U29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisgICAgdW5p
Y29kZSBvciBhIGJpbmFyeSBpbiBzdHIuCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBt
b2RfcHl0aG9uIHJlcXVlc3QuCisgICAgUmFpc2VzOgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNl
cHRpb246ICAgICB3aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCisgICAgICAgIFVuc3Vw
cG9ydGVkRnJhbWVFeGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJhbWUg
ZS5nLiBzb21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2VydmVk
IGJpdCBpcyBzZXQgYnV0IG5vIGV4dGVuc2lvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjb2duaXplIGl0LgorICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlvbjog
ICAgICB3aGVuIGNsaWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMg
Y2xvc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRseS4K
KyAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFkeSB0
ZXJtaW5hdGVkLgorICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZl
X21lc3NhZ2UoKQorCisKK2RlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keSk6CisgICAgcmVxdWVz
dC53c19zdHJlYW0uc2VuZF9waW5nKGJvZHkpCisKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRo
cmVhZGluZy5UaHJlYWQpOgorICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJv
bSB0aGUgY2xpZW50LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJl
Y2VpdmUgbWVzc2FnZXM6IGJsb2NraW5nLAorICAgIG5vbi1ibG9ja2luZywgYW5kIHZpYSBjYWxs
YmFjay4gQ2FsbGJhY2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCisKKyAgICBOb3RlOiBU
aGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBm
b3Igd3NzCisgICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBh
IGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxl
IHRocmVhZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVz
c2FnZT1Ob25lKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAg
ICAgICBvbm1lc3NhZ2U6IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlz
IHJlY2VpdmVkLgorICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5v
bmUsIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5v
dGhlciB0aHJlYWQuIEluIHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUg
dXNlbGVzcworICAgICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciBy
ZXR1cm4gYW55IG1lc3NhZ2VzLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAg
ICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5f
b25tZXNzYWdlID0gb25tZXNzYWdlCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFs
c2UKKyAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisK
KyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qg
c2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVf
bWVzc2FnZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2Fn
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3Nh
Z2UpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYu
X3JlcXVlc3QpCisKKyAgICBkZWYgcmVjZWl2ZShzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUg
YSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6
CisgICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgICIiIgor
ICAgICAgICByZXR1cm4gc2VsZi5fcXVldWUuZ2V0KCkKKworICAgIGRlZiByZWNlaXZlX25vd2Fp
dChzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWws
IG5vbi1ibG9ja2luZy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbWVzc2FnZSBh
cyBhIHVuaWNvZGUgc3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCisgICAgICAg
ICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0
X25vd2FpdCgpCisgICAgICAgIGV4Y2VwdCBzaXgubW92ZXMucXVldWUuRW1wdHk6CisgICAgICAg
ICAgICBtZXNzYWdlID0gTm9uZQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIHN0
b3Aoc2VsZik6CisgICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgorCisg
ICAgICAgIFRoZSBpbnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBu
ZXh0IG1lc3NhZ2UuCisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWws
IGJ1dCB0aGVyZSBpcyBubyBjbGVhbiB3YXkKKyAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVs
bHkgc3RvcCBhIHJ1bm5pbmcgdGhyZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQgPSBUcnVlCisKKworY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhy
ZWFkKToKKyAgICAiIiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisK
KyAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91
cyB3YXlzIHRvIHNlbmQKKyAgICBtZXNzYWdlcy4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hv
dWxkIG5vdCBiZSB1c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBi
ZWNhdXNlIHB5T3BlblNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3Ig
aWYgdGhlIHNvY2tldAorICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAg
ICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0
cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDog
bW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkaW5nLlRocmVh
ZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAg
ICBzZWxmLl9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2V0
RGFlbW9uKFRydWUpCisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToK
KyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNl
bGYuX3F1ZXVlLmdldCgpCisgICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAg
ICAgICBzZW5kX21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgIGNv
bmRpdGlvbi5ub3RpZnkoKQorICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAg
ZGVmIHNlbmQoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9j
a2luZy4iIiIKKworICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAg
ICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3Nh
Z2UsIGNvbmRpdGlvbikpCisgICAgICAgIGNvbmRpdGlvbi53YWl0KCkKKworICAgIGRlZiBzZW5k
X25vd2FpdChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1i
bG9ja2luZy4iIiIKKworICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGlu
Zy5Db25kaXRpb24oKSkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMDM4ZDlmNDNhY2QzN2JmNWExYjEwYTBjZTU1ODViZDUxZWQ2MDJkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5w
eQpAQCAtMCwwICsxLDMxOSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSZXF1ZXN0IEhhbmRsZXIg
YW5kIFJlcXVlc3QvQ29ubmVjdGlvbiBjbGFzc2VzIGZvciBzdGFuZGFsb25lIHNlcnZlci4KKyIi
IgorCitpbXBvcnQgb3MKKworZnJvbSBzaXgubW92ZXMgaW1wb3J0IENHSUhUVFBTZXJ2ZXIKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBodHRwX2hlYWRlcl91dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3Jp
emluZ2ZpbGUKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKyMgMTAyNCBpcyBw
cmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxp
bmVzLgorX01BWF9NRU1PUklaRURfTElORVMgPSAxMDI0CisKKworY2xhc3MgX1N0YW5kYWxvbmVD
b25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIpOgorICAgICAgICAiIiJDb25z
dHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3Rf
aGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisKKyAg
ICBkZWYgZ2V0X2xvY2FsX2FkZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBt
cF9jb25uLmxvY2FsX2FkZHIuIiIiCisKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZXF1ZXN0X2hh
bmRsZXIuc2VydmVyLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Rf
aGFuZGxlci5zZXJ2ZXIuc2VydmVyX3BvcnQpCisKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHko
Z2V0X2xvY2FsX2FkZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAg
ICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KKworICAgICAgICBTZXR0
aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVl
c3QKKyAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgorCisg
ICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKKworICAg
IHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVmIHdyaXRl
KHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQorCisg
ICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi5yZWFk
KCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5yZWFk
KGxlbmd0aCkKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAi
IiJHZXQgbWVtb3JpemVkIGxpbmVzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0
X2hhbmRsZXIucmZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisKKworY2xhc3MgX1N0YW5kYWxv
bmVSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgorICAgICAg
ICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg
IHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAg
ICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2Vy
KHNlbGYpCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVy
CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0
X2hhbmRsZXIpCisgICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCisgICAgICAgIHNlbGYu
aGVhZGVyc19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKKyAgICBkZWYgZ2V0X3VyaShz
ZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgorCisgICAgICAg
IFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0
IG9mIHRoZQorICAgICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRo
ZSByZXF1ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCisgICAgICAgIHJldHVybnMgdGhlIHBhdGgg
cG9ydGlvbiBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAg
ICAgICBrZXB0IGZvciBjb21wYXRpYmlsaXR5LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1
cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKKworICAgIHVyaSA9IHByb3BlcnR5KGdldF91
cmkpCisKKyAgICBkZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVy
IHRvIG1pbWljIHJlcXVlc3QudW5wYXJzZWRfdXJpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxm
Ll9yZXF1ZXN0X2hhbmRsZXIucGF0aAorCisgICAgdW5wYXJzZWRfdXJpID0gcHJvcGVydHkoZ2V0
X3VucGFyc2VkX3VyaSkKKworICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgorICAgICAgICAiIiJH
ZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC5tZXRob2QuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3JlcXVlc3RfaGFuZGxlci5jb21tYW5kCisKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0
aG9kKQorCisgICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRv
IG1pbWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVl
c3RfaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KKworICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0
X3Byb3RvY29sKQorCisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pYyBy
ZXF1ZXN0LmlzX2h0dHBzKCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKKwor
CitjbGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlcik6CisgICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZv
ciBXZWJTb2NrZXQuIiIiCisKKyAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQg
b2YgbWltZXRvb2xzLk1lc3NhZ2UuCisgICAgTWVzc2FnZUNsYXNzID0gaHR0cF9jbGllbnQuSFRU
UE1lc3NhZ2UKKworICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29j
a2V0U2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAgcmZpbGUKKyAgICAg
ICAgd2l0aCBNZW1vcml6aW5nRmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNh
bGxlZCBieSBCYXNlUmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICBiZWZvcmUg
Y2FsbGluZyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KKyAgICAgICAgQmFzZUhUVFBS
ZXF1ZXN0SGFuZGxlci5oYW5kbGUgd2lsbCBjYWxsCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhh
bmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKKyAgICAgICAgV2ViU29j
a2V0UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
IyBDYWxsIHN1cGVyY2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3ZmlsZSwgZXRjLiBT
ZWUgc2V0dXAKKyAgICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNsYXNzIFNvY2tldFNl
cnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlciB0bworICAgICAgICAjIHVuZGVyc3RhbmQgd2hhdCB0
aGlzIGRvZXMuCisgICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnNl
dHVwKHNlbGYpCisKKyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXpp
bmdGaWxlKAorICAgICAgICAgICAgc2VsZi5yZmlsZSwgbWF4X21lbW9yaXplZF9saW5lcz1fTUFY
X01FTU9SSVpFRF9MSU5FUykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGll
bnRfYWRkcmVzcywgc2VydmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2Nr
ZXRfc2VydmVyX29wdGlvbnMKKworICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVx
dWVzdEhhbmRsZXIuY2dpX2RpcmVjdG9yaWVzLgorICAgICAgICBzZWxmLmNnaV9kaXJlY3Rvcmll
cyA9IHNlbGYuX29wdGlvbnMuY2dpX2RpcmVjdG9yaWVzCisgICAgICAgICMgUmVwbGFjZSBDR0lI
VFRQUmVxdWVzdEhhbmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLmlzX2V4ZWN1dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCisK
KyAgICAgICAgIyBUaGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRf
Xy4KKyAgICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18o
c2VsZiwgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X2FkZHJlc3MsIHNlcnZlcikKKworICAgIGRlZiBwYXJzZV9yZXF1
ZXN0KHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJl
cXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisKKyAgICAgICAgUmV0dXJuIFRydWUgdG8gY29u
dGludWUgcHJvY2Vzc2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgICAg
IFNlZSBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hp
Y2ggY2FsbHMKKyAgICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVy
biB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorCisgICAgICAgICMgV2UgaG9v
ayBwYXJzZV9yZXF1ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKKyAgICAg
ICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJl
dHVybiBGYWxzZSwKKyAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9y
ZXF1ZXN0IGNvbnRpbnVlcyBwcm9jZXNzaW5nIGFuZAorICAgICAgICAjIGl0IG5lZWRzIHZhcmlh
YmxlcyBzZXQgYnkgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAg
ICMKKyAgICAgICAgIyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1
c2VkIGJ5IFdlYlNvY2tldCByZXF1ZXN0CisgICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwg
c2VsZi5jb21tYW5kLCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCisgICAgICAgICMg
aG93IF9TdGFuZGFsb25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRo
ZXNlCisgICAgICAgICMgYXR0cmlidXRlcykuCisgICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVy
LkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoK
KyAgICAgICAgICAgIGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9u
JykKKyAgICAgICAgICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRl
bnRpYWw6CisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMSkKKyAgICAgICAg
ICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdCYXNpYyByZWFsbT0iUHl3ZWJzb2NrZXQiJykKKyAgICAg
ICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnUmVxdWVzdCBiYXNpYyBhdXRoZW50aWNhdGlvbicpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRl
cl91dGlsLnBhcnNlX3VyaShzZWxmLnBhdGgpCisgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBVUkk6ICVyJywgc2VsZi5w
YXRoKQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBS
ZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZXJ2ZXJf
b3B0aW9ucyA9IHNlbGYuc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworICAgICAgICBp
ZiBob3N0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0ID0gc2VydmVy
X29wdGlvbnMudmFsaWRhdGlvbl9ob3N0CisgICAgICAgICAgICBpZiB2YWxpZGF0aW9uX2hvc3Qg
aXMgbm90IE5vbmUgYW5kIGhvc3QgIT0gdmFsaWRhdGlvbl9ob3N0OgorICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCdJbnZhbGlkIGhvc3Q6ICVyIChleHBlY3RlZDogJXIpJywgaG9z
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1
ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgcG9y
dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRp
b25zLnZhbGlkYXRpb25fcG9ydAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5v
dCBOb25lIGFuZCBwb3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuaW5mbygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIHBvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhh
bmRsZXInKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHNlbGYucGF0aCA9
IHJlc291cmNlCisKKyAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChzZWxmLCBz
ZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYWxs
YmFjayB0byBkZWZhdWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gK
KyAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgorICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShzZWxm
LnBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5kbGVyIGZv
ciByZXNvdXJjZTogJXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKyAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZv
ciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3
aXRob3V0IGV4Y2VwdCBjbGF1c2Ugc2V0dXAgKGluY2x1ZGluZworICAgICAgICAjIERpc3BhdGNo
RXhjZXB0aW9uKSBpcyByYWlzZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQK
KyAgICAgICAgIyBhbmQgbG9nZ2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KKworICAgICAgICB0cnk6
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFr
ZShyZXF1ZXN0LCBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIpCisgICAgICAgICAgICBleGNlcHQg
aGFuZHNoYWtlLlZlcnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBlKQor
ICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNfQkFE
X1JFUVVFU1QpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUuc3VwcG9ydGVkX3ZlcnNpb25zKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMo
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IGhhbmRz
aGFrZS5IYW5kc2hha2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAjIEhhbmRzaGFr
ZSBmb3Igd3MocykgZmFpbGVkLgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdI
YW5kc2hha2UgZmFpbGVkIGZvciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYu
c2VuZF9lcnJvcihlLnN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
ICAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcgor
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVz
dCkKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRlZDogJXMnLCBlKQorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxmLCBjb2RlPSctJywgc2l6
ZT0nLScpOgorICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfcmVxdWVzdC4i
IiIKKworICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAlcyAlcycsIHNlbGYucmVxdWVz
dGxpbmUsIHN0cihjb2RlKSwgc3RyKHNpemUpKQorCisgICAgZGVmIGxvZ19lcnJvcihzZWxmLCAq
YXJncyk6CisgICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIK
KworICAgICAgICAjIERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5n
cyB0aGFuIGZvciBlcnJvcnMuCisgICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNv
ZGUgaXMgbG9nZ2VkIGJ5IHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9sb2dnZXIud2Fybmlu
ZygnJXMgLSAlcycsIHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnc1swXSAlIGFyZ3NbMTpdKQorCisgICAgZGVmIGlzX2NnaShzZWxmKToKKyAg
ICAgICAgIiIiVGVzdCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3Jp
cHQuCisKKyAgICAgICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29u
dGFpbnMgLi4KKyAgICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUg
ZmlsZSBvciBub3QuCisgICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBp
cyBoYW5kbGVkIGFzIHN0YXRpYyBmaWxlIG9yIGRpcgorICAgICAgICByYXRoZXIgdGhhbiBhIENH
SSBzY3JpcHQuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRU
UFJlcXVlc3RIYW5kbGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2Vs
Zi5wYXRoOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJp
cCBxdWVyeSBwYXJhbWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNl
X25hbWUgPSBzZWxmLnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0
IHJlc291cmNlX25hbWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAg
ICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAg
ICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUo
c2NyaXB0ZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRp
bC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZjllMjczZTk3NzA4NDRiN2NiNDQ2MTZlYmY5ODI1ODg2YmY0NGU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3NlcnZlcl91
dGlsLnB5CkBAIC0wLDAgKzEsODcgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2VydmVyIHJlbGF0
ZWQgdXRpbGl0aWVzLiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGxvZ2dpbmcuaGFuZGxl
cnMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKworZGVm
IF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3MoYyk6CisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCclcy4lcycgJSAoYy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKKworCitkZWYgY29uZmlndXJl
X2xvZ2dpbmcob3B0aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxPR0xF
VkVMX0ZJTkUsICdGSU5FJykKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAg
ICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwu
dXBwZXIoKSkpCisgICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKKyAgICAgICAgaGFuZGxlciA9IGxv
Z2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihvcHRpb25zLmxvZ19maWxlLCAnYScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucy5sb2dfbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhh
bmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcu
Rm9ybWF0dGVyKAorICAgICAgICAnWyUoYXNjdGltZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1l
KXM6ICUobWVzc2FnZSlzJykKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisg
ICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKworICAgIGRlZmxhdGVfbG9nX2xldmVsX25h
bWUgPSBsb2dnaW5nLmdldExldmVsTmFtZSgKKyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19s
ZXZlbC51cHBlcigpKQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIp
LnNldExldmVsKGRlZmxhdGVfbG9nX2xldmVsX25hbWUpCisgICAgX2dldF9sb2dnZXJfZnJvbV9j
bGFzcyh1dGlsLl9JbmZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKwor
CitjbGFzcyBUaHJlYWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRhZW1vbiA9IFRy
dWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgorICAgICAgICB0
aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3InKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAg
ICAgIHNlbGYuX2ludGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYworCisgICAgZGVmIHJ1
bihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRocmVhZF9uYW1lX2xp
c3QgPSBbXQorICAgICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCk6
CisgICAgICAgICAgICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5hbWUpCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiJWQgYWN0aXZlIHRocmVhZHM6ICVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkK
KyAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3Rh
bmRhbG9uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDQyYzQ5NmM1OGEyM2I2Y2U0YzIzZWVlMGJhNDYyMDk1
NDUyNjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkKQEAgLTAsMCArMSw0NzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCisK
K1VzZSB0aGlzIGZpbGUgdG8gbGF1bmNoIHB5d2Vic29ja2V0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2
ZXIuCisKKworQkFTSUMgVVNBR0UKKz09PT09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0
b3J5IGFuZCBydW4KKworICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBb
LXAgPHdzX3BvcnQ+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
LXcgPHdlYnNvY2tfaGFuZGxlcnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQorCis8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVt
YmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KKworPGRvY3VtZW50X3Jvb3Q+IGlzIHRo
ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgorCis8d2Vic29ja19o
YW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBo
YW5kbGVycy4KK0lmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQu
IFNlZSBfX2luaXRfXy5weSAob3IKK3J1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhv
dyB0byB3cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCisKK0ZvciBtb3JlIGRldGFpbCBhbmQgb3Ro
ZXIgb3B0aW9ucywgcnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUu
cHkgLS1oZWxwCisKK29yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCisK
K0ZvciB0cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBo
ZWxwIHlvdS4KKworCitUUlkgREVNTworPT09PT09PT0KKworR28gdG8gdGhlIHNyYyBkaXJlY3Rv
cnkgYW5kIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKK2RvY3Vt
ZW50IHJvb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhh
bmRsZXJzIGxpa2UgdGhpczoKKworICAkIGNkIHNyYworICAkIFBZVEhPTlBBVEg9LiBweXRob24g
bW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQorCit0byBsYXVuY2ggcHl3
ZWJzb2NrZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3Bl
bgoraHR0cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRv
biwgdHlwZSBzb21ldGhpbmcgaW50bwordGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0
dG9uIGFuZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKK2lzIHdvcmtpbmcs
IHlvdSdsbCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgor
CisKK1VTSU5HIFRMUworPT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIg
d2l0aCBUTFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKK29wdGlvbnMuIFdo
ZW4gVExTIGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExT
IGNvbm5lY3Rpb24uCisKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhl
IGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9uIHNpbGVudGx5
IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCitFeGFtcGxlOgorCisg
ICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCisg
ICAgICAgIC1kIGV4YW1wbGUgXAorICAgICAgICAtcCAxMDQ0MyBcCisgICAgICAgIC10IFwKKyAg
ICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKKyAgICAgICAgLWsgLi4vdGVzdC9jZXJ0
L2tleS5wZW0gXAorCitOb3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAt
YyBhbmQgLWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCit1c2luZyB0aGUgZG9jdW1lbnQg
cm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCisKKworVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FU
SU9OCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gcnVuIHRoZSBzdGFuZGFsb25l
IHNlcnZlciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdp
dGgKKy0tdGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRp
dGlvbiB0byBvbmVzIHJlcXVpcmVkIGZvcgorVExTIHN1cHBvcnQuCisKK0V4YW1wbGU6CisKKyAg
JCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4
YW1wbGUgLXAgMTA0NDMgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsg
Li4vdGVzdC9jZXJ0L2tleS5wZW0gXAorICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCisgICAg
ICAgIC0tdGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorCitOb3RlIHRoYXQg
d2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBp
dCB3aWxsIGJlCityZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMg
dGhlIGJhc2UuCisKKworQ09ORklHVVJBVElPTiBGSUxFCis9PT09PT09PT09PT09PT09PT0KKwor
WW91IGNhbiBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3Bl
Y2lmeWluZyB0aGUgcGF0aCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBv
cHRpb24uIFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorZm9sbG93aW5nIHRoZSBk
b2N1bWVudGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2Yg
ZWFjaAorZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4g
dG8gc2V0IGxvZyBsZXZlbCB0byBkZWJ1ZywKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK2xv
Z19sZXZlbD1kZWJ1ZworCitGb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBs
ZWFzZSBhZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgorLS10bHMgb3B0aW9uLCBhZGQgdGhl
IGZvbGxvd2luZyBsaW5lOgorCit0bHM9VHJ1ZQorCitOb3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5h
YmxlZCBldmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKK2Zh
a2UuCisKK1doZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0
aW9uIGZpbGUgZW50cnkgYXJlIHNldCBmb3IKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwg
dGhlIGNvbW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKK2NvbmZpZ3Vy
YXRpb24gZmlsZS4KKworCitUSFJFQURJTkcKKz09PT09PT09PQorCitUaGlzIHNlcnZlciBpcyBk
ZXJpdmVkIGZyb20gU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBp
cwordXNlZCBmb3IgZWFjaCByZXF1ZXN0LgorCisKK1NFQ1VSSVRZIFdBUk5JTkcKKz09PT09PT09
PT09PT09PT0KKworVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMg
bm90IHNlY3VyZS4KK0l0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRl
cm5hbCBwcm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQordXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwu
CisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4
Lm1vdmVzIGltcG9ydCBjb25maWdwYXJzZXIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFj
aworCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHNlcnZlcl91dGls
Citmcm9tIG1vZF9weXdlYnNvY2tldC53ZWJzb2NrZXRfc2VydmVyIGltcG9ydCBXZWJTb2NrZXRT
ZXJ2ZXIKKworX0RFRkFVTFRfTE9HX01BWF9CWVRFUyA9IDEwMjQgKiAyNTYKK19ERUZBVUxUX0xP
R19CQUNLVVBfQ09VTlQgPSA1CisKK19ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAor
CisKK2RlZiBfYnVpbGRfb3B0aW9uX3BhcnNlcigpOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcigpCisKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J2NvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAg
ICB0eXBlPSdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNl
ZSB0aGUgZmlsZSBjb21tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhl
IHRvcCBvZiB0aGlzIGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZmlsZSBmb3JtYXQnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLUgn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAg
ICAgICAgICAnLS1zZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2Vy
dmVyX2hvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCisgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1WJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9u
LWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRpb25faG9zdCcsCisgICAg
ICAgICAgICAgICAgICAgICAgZGVzdD0ndmFsaWRhdGlvbl9ob3N0JywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVy
IGhvc3RuYW1lIHRvIHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRk
X29wdGlvbignLXAnLAorICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVMVF9XRUJfU09D
S0VUX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBsaXN0ZW4gdG8n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctUCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
dmFsaWRhdGlvbi1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX3Bv
cnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsCisgICAg
ICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFs
aWRhdGUgaW4gYWJzb2x1dGUgcGF0aC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsCisg
ICAgICAgICAgICAgICAgICAgICAgJy0td2Vic29jay1oYW5kbGVycycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0td2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nd2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nLics
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBXZWJT
b2NrZXQgaGFuZGxlciBmaWxlcy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0
aGUgcGF0aCBpcyByZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdhcyB0aGUgYmFzZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLW0nLAorICAgICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZp
bGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgnV2ViU29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRo
IGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3Bh
dGgsIHNlcGFyYXRlZCBieSBzcGFjZXMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS1zY2FuLWRpcicsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tc2Nhbl9kaXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NjYW5fZGlyJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0oJ011c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBk
aXJlY3RvcnkgYXJlIHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQg
cmVnaXN0ZXJlZCB0byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1VzZWZ1bCBmb3Igc2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxl
cyB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZp
bGUgb3IgYXJlIGhhbmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RvblwndCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCisgICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcicsCisgICAgICAg
ICAgICAgICAgICAgICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2Rpcics
CisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdT
Y2FucyBXZWJTb2NrZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxl
cnMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywKKyAgICAgICAgICAgICAgICAgICAg
ICAnLS1kb2N1bWVudC1yb290JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVudF9y
b290JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdEb2N1bWVudCByb290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcs
CisgICAgICAgICAgICAgICAgICAgICAgJy0tY2dpLXBhdGhzJywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1jZ2lfcGF0aHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NnaV9wYXRo
cycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9o
dGJpbikgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVu
dF9yb290L2NnaV9wYXRoIGFyZSBoYW5kbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnYXMgQ0dJIHByb2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy10JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLWsnLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGUta2V5JywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS1wcml2YXRlX2tleScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ncHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
JycsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykK
KyAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLAorICAgICAgICAgICAgICAgICAgICAgICctLWNl
cnRpZmljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZXJ0aWZpY2F0ZScsCisg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRs
cy1jbGllbnQtYXV0aCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9h
dXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nUmVxdWVzdHMgVExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQg
Y2VydGlmaWNhdGUgb3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdUTFMgY2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10bHMtY2xpZW50LWNhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNf
Y2xpZW50X2NhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBh
IHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBj
ZXJ0aWZpY2F0ZXMgd2hpY2ggYXJlIHVzZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd2YWxpZGF0ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQorICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLWJhc2ljLWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3VzZV9iYXNpY19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3Jl
X3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRpb24uJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdD0ndGVzdDp0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdT
cGVjaWZpZXMgdGhlIGNyZWRlbnRpYWwgb2YgYmFzaWMgYXV0aGVudGljYXRpb24gJworICAgICAg
ICAgICAgICAgICAgICAgICdieSB1c2VybmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVz
dCkuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWwnLAorICAgICAgICAgICAgICAgICAgICAg
ICctLWxvZy1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfZmlsZScsCisgICAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nbG9nX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGZpbGUuJykKKyAg
ICAjIEN1c3RvbSBsb2cgbGV2ZWw6CisgICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFj
aCBmcmFtZSBwcm9jZXNzaW5nIHN0ZXAKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2
ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2df
bGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAg
ICAgICAgICAgICAgIGNob2ljZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZScs
ICdkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjcml0aWNhbCcKKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKAorICAgICAgICAnLS1kZWZsYXRlLWxvZy1sZXZlbCcsCisgICAgICAgICctLWRlZmxhdGVf
bG9nX2xldmVsJywKKyAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nZGVmbGF0
ZV9sb2dfbGV2ZWwnLAorICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgY2hvaWNlcz1b
J2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10s
CisgICAgICAgIGhlbHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykK
KyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3Nl
YycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxf
aW5fc2VjJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9LTEsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lmIHBv
c2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0aHJlYWQgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhy
ZWFkcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZGljYWxseSBpbiB0aGUg
c3BlY2lmaWVkIGludGV2YWwgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNv
bmQuIElmIG5vbi1wb3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdkaXNhYmxlIHRoZSB0aHJlYWQgbW9uaXRvci4nKSkKKyAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1sb2ctbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2df
bWF4JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbWF4JywKKyAgICAgICAgICAg
ICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RF
RkFVTFRfTE9HX01BWF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4
aW11bSBieXRlcycpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICAnLS1sb2dfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J2xvZ19jb3VudCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy1xJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWV1ZScsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXplJywKKyAgICAgICAgICAgICAg
ICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFV
TFRfUkVRVUVTVF9RVUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVl
c3QgcXVldWUgc2l6ZScpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIF9wYXJzZV9hcmdz
X2FuZF9jb25maWcoYXJncyk6CisgICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJzZXIoKQor
CisgICAgIyBGaXJzdCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZmlsZS4K
KyAgICB0ZW1wb3Jhcnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJn
cyhhcmdzPWFyZ3MpCisgICAgaWYgdGVtcG9yYXJ5X2FyZ3M6CisgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoJ1VucmVjb2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJXInLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlbXBvcmFyeV9hcmdzKQorICAgICAgICBzeXMuZXhpdCgxKQorCisg
ICAgaWYgdGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGNvbmZpZ19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdy
JykKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoJ0ZhaWxlZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgZSkK
KyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgY29uZmlnX3BhcnNlciA9IGNvbmZp
Z3BhcnNlci5TYWZlQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgY29uZmlnX3BhcnNlci5yZWFkZnAo
Y29uZmlnX2ZwKQorICAgICAgICBjb25maWdfZnAuY2xvc2UoKQorCisgICAgICAgIGFyZ3NfZnJv
bV9jb25maWcgPSBbXQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnX3BhcnNlci5p
dGVtcygncHl3ZWJzb2NrZXQnKToKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5k
KCctLScgKyBuYW1lKQorICAgICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQodmFsdWUp
CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21f
Y29uZmlnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZp
ZyArIGFyZ3MKKyAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAg
ICBlbHNlOgorICAgICAgICByZXR1cm4gdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdz
CisKKworZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSB5b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRo
aXMgZnVuY3Rpb24gaGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIg
cHJvZ3JhbS4gRm9yCisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBp
biB0aGlzIG1ldGhvZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4K
KyAgICAiIiIKKworICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFy
Z3M9YXJncykKKworICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIHNl
cnZlcl91dGlsLmNvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCisKKyAgICAjIFRPRE8odHlvc2hp
bm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUg
c29tZQorICAgICMgb2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNz
IGlmIGl0J3MgYmV0dGVyLgorICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gW10KKyAgICBv
cHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gTm9uZQorICAgIGlmIG9wdGlvbnMuY2dpX3Bh
dGhzOgorICAgICAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhz
LnNwbGl0KCcsJykKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMy
Jyk6CisgICAgICAgICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKKyAgICAgICAgICAgICMgRm9yIFdp
bjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAorICAgICAgICAgICAg
IyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgorICAgICAgICAgICAg
IyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJ
Tl9QQVRIIHRvCisgICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4v
YmluLgorICAgICAgICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAg
ICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQorICAgICAg
ICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAg
ICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisKKyAgICAg
ICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAorCisg
ICAgaWYgb3B0aW9ucy51c2VfdGxzOgorICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wg
bW9kdWxlJykKKworICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qgb3B0
aW9ucy5jZXJ0aWZpY2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAgICAg
ICAgICAgICAgJ1RvIHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRl
LicpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIChvcHRpb25zLnRsc19j
bGllbnRfY2VydF9vcHRpb25hbCBhbmQgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAg
ICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJl
IGVuYWJsZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNf
Y2xpZW50X2NlcnRfb3B0aW9uYWwnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNl
OgorICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlv
bi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19j
bGllbnRfY2VydF9vcHRpb25hbDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBt
dXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAgICAgICAg
c3lzLmV4aXQoMSkKKworICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgorICAgICAgICBvcHRp
b25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCisKKyAgICBpZiBvcHRpb25z
LnVzZV9iYXNpY19hdXRoOgorICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9
ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZSgKKyAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNf
YXV0aF9jcmVkZW50aWFsLmVuY29kZSgnVVRGLTgnKSkuZGVjb2RlKCkKKworICAgIHRyeToKKyAg
ICAgICAgaWYgb3B0aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMgPiAwOgorICAg
ICAgICAgICAgIyBSdW4gYSB0aHJlYWQgbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2Vy
dmVyIHRocmVhZHMgZm9yCisgICAgICAgICAgICAjIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNl
cnZlcl91dGlsLlRocmVhZE1vbml0b3IoCisgICAgICAgICAgICAgICAgb3B0aW9ucy50aHJlYWRf
bW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMpLnN0YXJ0KCkKKworICAgICAgICBzZXJ2ZXIgPSBXZWJT
b2NrZXRTZXJ2ZXIob3B0aW9ucykKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5
d2Vic29ja2V0OiAlcycgJSBlKQorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJz
b2NrZXQ6ICVzJyAlIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgIHN5cy5leGl0KDEp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbihzeXMuYXJndlsxOl0p
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9zdHJlYW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMzOTlmMmE4NWI5ZmU2YzUyZWM1NjkwZjU4MGQwNmIy
MjJlNDc0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9zdHJlYW0ucHkKQEAgLTAsMCArMSw5NTAgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhp
cyBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcv
YnVpbGRpbmcgZnJhbWVzCitvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCisK
K1NwZWNpZmljYXRpb246CitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIK
KworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc2l4
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMg
aW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52
YWxpZFVURjhFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9u
cyBpbXBvcnQgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCitfTk9PUF9NQVNLRVIgPSB1dGls
Lk5vb3BNYXNrZXIoKQorCisKK2NsYXNzIEZyYW1lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsCisgICAgICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICByc3YxPTAs
CisgICAgICAgICAgICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mz0wLAorICAg
ICAgICAgICAgICAgICBvcGNvZGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGF5bG9hZD1iJycp
OgorICAgICAgICBzZWxmLmZpbiA9IGZpbgorICAgICAgICBzZWxmLnJzdjEgPSByc3YxCisgICAg
ICAgIHNlbGYucnN2MiA9IHJzdjIKKyAgICAgICAgc2VsZi5yc3YzID0gcnN2MworICAgICAgICBz
ZWxmLm9wY29kZSA9IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCisKKwor
IyBIZWxwZXIgZnVuY3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQgZm9yIHdyaXRpbmcgdW5p
dHRlc3RzIGZvciBXZWJTb2NrZXQKKyMgY2xpZW50cy4KKworCitkZWYgY3JlYXRlX2xlbmd0aF9o
ZWFkZXIobGVuZ3RoLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgbGVuZ3RoIGhlYWRlci4KKwor
ICAgIEFyZ3M6CisgICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBNdXN0IGJlIGxlc3MgdGhh
biAyXjYzLgorICAgICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBib29sZWFuLgorCisgICAg
UmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVuLgorICAg
ICIiIgorCisgICAgaWYgbWFzazoKKyAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICBlbHNl
OgorICAgICAgICBtYXNrX2JpdCA9IDAKKworICAgIGlmIGxlbmd0aCA8IDA6CisgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyJykKKyAg
ICBlbGlmIGxlbmd0aCA8PSAxMjU6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0ZShtYXNr
X2JpdCB8IGxlbmd0aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKKyAgICAgICAgcmV0
dXJuIHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIGxl
bmd0aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKKyAgICAgICAgcmV0dXJuIHV0aWwu
cGFja19ieXRlKG1hc2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAg
ICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9y
IG9uZSBmcmFtZScpCisKKworZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0
aCwgZmluLCByc3YxLCByc3YyLCByc3YzLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgZnJhbWUg
aGVhZGVyLgorCisgICAgUmFpc2VzOgorICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEg
aXMgZ2l2ZW4uCisgICAgIiIiCisKKyAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToK
KyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCisKKyAgICBp
ZiBwYXlsb2FkX2xlbmd0aCA8IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQorCisg
ICAgaWYgKGZpbiB8IHJzdjEgfCByc3YyIHwgcnN2MykgJiB+MToKKyAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignRklOIGJpdCBhbmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3Ig
MScpCisKKyAgICBoZWFkZXIgPSBiJycKKworICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQor
ICAgICAgICAgICAgICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwg
NCkKKyAgICAgICAgICAgICAgICAgIHwgb3Bjb2RlKQorICAgIGhlYWRlciArPSB1dGlsLnBhY2tf
Ynl0ZShmaXJzdF9ieXRlKQorICAgIGhlYWRlciArPSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXls
b2FkX2xlbmd0aCwgbWFzaykKKworICAgIHJldHVybiBoZWFkZXIKKworCitkZWYgX2J1aWxkX2Zy
YW1lKGhlYWRlciwgYm9keSwgbWFzayk6CisgICAgaWYgbm90IG1hc2s6CisgICAgICAgIHJldHVy
biBoZWFkZXIgKyBib2R5CisKKyAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQorICAg
IG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgIHJl
dHVybiBoZWFkZXIgKyBtYXNraW5nX25vbmNlICsgbWFza2VyLm1hc2soYm9keSkKKworCitkZWYg
X2ZpbHRlcl9hbmRfZm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVy
cyk6CisgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFt
ZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFt
ZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAg
ICByZXR1cm4gX2J1aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitk
ZWYgY3JlYXRlX2JpbmFyeV9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlu
PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXNrPUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5h
cnkgZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGZyYW1l
ID0gRnJhbWUoZmluPWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQorICAgIHJl
dHVybiBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9m
aWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfdGV4dF9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgZmluPTEsCisgICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIHRl
eHQgZnJhbWUgd2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGVuY29k
ZWRfbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGNyZWF0ZV9i
aW5hcnlfZnJhbWUoZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBwYXJzZV9mcmFt
ZShyZWNlaXZlX2J5dGVzLAorICAgICAgICAgICAgICAgIGxvZ2dlcj1Ob25lLAorICAgICAgICAg
ICAgICAgIHdzX3ZlcnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCisgICAgICAgICAg
ICAgICAgdW5tYXNrX3JlY2VpdmU9VHJ1ZSk6CisgICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVy
bnMgYSB0dXBsZSBjb250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAorICAgIHBheWxvYWQu
CisKKyAgICBBcmdzOgorICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVh
ZHMgZnJhbWUgZGF0YSBmcm9tIGEgc3RyZWFtIG9yCisgICAgICAgICAgICBzb21ldGhpbmcgc2lt
aWxhci4gVGhlIGZ1bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKKyAgICAg
ICAgICAgIHJlYWQuIFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVk
RXhjZXB0aW9uIGlmCisgICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUg
cmVhZC4KKyAgICAgICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgorICAgICAgICB3c192ZXJz
aW9uOiB0aGUgdmVyc2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCisgICAgICAgIHVubWFza19y
ZWNlaXZlOiB1bm1hc2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCisg
ICAgICAgICAgICBmcmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KKworICAgIFJh
aXNlczoKKyAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2
ZV9ieXRlcyByYWlzZXMgaXQuCisgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0
aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgorICAgICIiIgorCisgICAgaWYgbm90IGxv
Z2dlcjoKKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgbG9nZ2Vy
LmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9m
IGEgZnJhbWUnKQorCisgICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAg
IGZpbiA9IChmaXJzdF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2
KSAmIDEKKyAgICByc3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisgICAgcnN2MyA9IChmaXJz
dF9ieXRlID4+IDQpICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKKworICAgIHNl
Y29uZF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0
ZSA+PiA3KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisg
ICAgbG9nZ2VyLmxvZygKKyAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU49JXMsIFJT
VjE9JXMsIFJTVjI9JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAgICAgICAnTWFzaz0lcywg
UGF5bG9hZF9sZW5ndGg9JXMnLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywK
KyAgICAgICAgcGF5bG9hZF9sZW5ndGgpCisKKyAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tf
cmVjZWl2ZToKKyAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAg
ICAgJ01hc2sgYml0IG9uIHRoZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcg
JworICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCisKKyAg
ICAjIFRoZSBIeUJpIGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4g
MHgwLTB4RkZGRgorICAgICMgaW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0
aCBmaWVsZCAob3IgMHgwLTB4RkQgaW4KKyAgICAjIDItb2N0ZXQgZmllbGQpLgorICAgIHZhbGlk
X2xlbmd0aF9lbmNvZGluZyA9IFRydWUKKyAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCisg
ICAgaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI3OgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5M
T0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5k
ZWQgcGF5bG9hZCBsZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0g
cmVjZWl2ZV9ieXRlcyg4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2so
JyFRJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVu
Z3RoID4gMHg3RkZGRkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKCdFeHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICAgICAgaWYg
d3NfdmVyc2lvbiA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAwOgorICAgICAgICAg
ICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNv
ZGluZ19ieXRlcyA9IDgKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LCAnRGVjb2RlZF9wYXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9h
ZF9sZW5ndGgpCisgICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGxvZ2dl
ci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUg
Mi1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRfcGF5
bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0g
c3RydWN0LnVucGFjaygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAg
aWYgd3NfdmVyc2lvbiA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6CisgICAgICAgICAg
ICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAgICAgICAgbGVuZ3RoX2VuY29k
aW5nX2J5dGVzID0gMgorCisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUs
ICdEZWNvZGVkX3BheWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2Fk
X2xlbmd0aCkKKworICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CisgICAgICAgIGxv
Z2dlci53YXJuaW5nKAorICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVk
IHVzaW5nIHRoZSBtaW5pbWFsIG51bWJlciBvZiAnCisgICAgICAgICAgICAnYnl0ZXMgKCVkIGlz
IGVuY29kZWQgdXNpbmcgJWQgYnl0ZXMpJywgcGF5bG9hZF9sZW5ndGgsCisgICAgICAgICAgICBs
ZW5ndGhfZW5jb2RpbmdfYnl0ZXMpCisKKyAgICBpZiBtYXNrID09IDE6CisgICAgICAgIGxvZ2dl
ci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQorCisgICAgICAgIG1h
c2tpbmdfbm9uY2UgPSByZWNlaXZlX2J5dGVzKDQpCisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVw
ZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1v
bi5MT0dMRVZFTF9GSU5FLCAnTWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCisgICAgZWxzZToKKyAg
ICAgICAgbWFza2VyID0gX05PT1BfTUFTS0VSCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dM
RVZFTF9GSU5FLCAnUmVjZWl2ZSBwYXlsb2FkIGRhdGEnKQorICAgIGlmIGxvZ2dlci5pc0VuYWJs
ZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGlt
ZS50aW1lKCkKKworICAgIHJhd19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2Fk
X2xlbmd0aCkKKworICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJ
TkUpOgorICAgICAgICBsb2dnZXIubG9nKAorICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJ
TkUsICdEb25lIHJlY2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAg
ICBwYXlsb2FkX2xlbmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAv
IDEwMDApCisgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXls
b2FkIGRhdGEnKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxf
RklORSk6CisgICAgICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICB1bm1hc2tl
ZF9ieXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAgaWYgbG9nZ2Vy
LmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2co
Y29tbW9uLkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5n
IHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xl
bmd0aCAvICh0aW1lLnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKKworICAg
IHJldHVybiBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKKwor
CitjbGFzcyBGcmFnbWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6CisgICAgIiIiQSBzdGF0ZWZ1
bCBjbGFzcyB0byBzZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG1hc2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgorICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgorCisgICAgICAgIHNlbGYuX21hc2sg
PSBtYXNrCisgICAgICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCisgICAg
ICAgICMgVGhpcyBpcyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0
ZXh0IHR5cGUgZnJhbWVzCisgICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAg
IHNlbGYuX2VuY29kZV91dGY4ID0gZW5jb2RlX3V0ZjgKKworICAgICAgICBzZWxmLl9zdGFydGVk
ID0gRmFsc2UKKworICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBt
ZXNzYWdlcyB0byB2ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKKyAgICAgICAgIyBmcmFtZXMgaW4gdGhl
IG1lc3NhZ2UgYXJlIGFsbCB0aGUgc2FtZS4KKyAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9u
Lk9QQ09ERV9URVhUCisKKyAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJp
bmFyeSk6CisgICAgICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21t
b24uT1BDT0RFX0JJTkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9
IGNvbW1vbi5PUENPREVfVEVYVAorICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgorICAgICAgICAg
ICAgaWYgc2VsZi5fb3Bjb2RlICE9IGZyYW1lX3R5cGU6CisgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignTWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQorICAg
ICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgICAgIHNlbGYuX29w
Y29kZSA9IGZyYW1lX3R5cGUKKworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9z
dGFydGVkID0gRmFsc2UKKyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAg
ICAgaWYgYmluYXJ5IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKKyAgICAgICAgICAgIHJldHVy
biBjcmVhdGVfYmluYXJ5X2ZyYW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9m
aWx0ZXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2Zy
YW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykKKworCitkZWYgX2Ny
ZWF0ZV9jb250cm9sX2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycyk6Cisg
ICAgZnJhbWUgPSBGcmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkpCisKKyAgICBmb3Ig
ZnJhbWVfZmlsdGVyIGluIGZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0
ZXIoZnJhbWUpCisKKyAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6CisgICAgICAgIHJh
aXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6
ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNzJykKKworICAgIGhl
YWRlciA9IGNyZWF0ZV9oZWFkZXIoZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUucGF5bG9hZCksIGZy
YW1lLmZpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJz
djIsIGZyYW1lLnJzdjMsIG1hc2spCisgICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIsIGZy
YW1lLnBheWxvYWQsIG1hc2spCisKKworZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1hc2s9
RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJh
bWUoY29tbW9uLk9QQ09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2Rl
ZiBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToK
KyAgICByZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9k
eSwgbWFzaywgZnJhbWVfZmlsdGVycykKKworCitkZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJvZHks
IG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRy
b2xfZnJhbWUoY29tbW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zaW5n
X2hhbmRzaGFrZV9ib2R5KGNvZGUsIHJlYXNvbik6CisgICAgYm9keSA9IGInJworICAgIGlmIGNv
ZGUgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BS
SVZBVEVfTUFYCisgICAgICAgICAgICAgICAgb3IgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFM
X0NMT1NVUkUpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0
dXMgY29kZSBpcyBvdXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RB
VFVTX05PX1NUQVRVU19SRUNFSVZFRAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9u
LlNUQVRVU19BQk5PUk1BTF9DTE9TVVJFCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21t
b24uU1RBVFVTX1RMU19IQU5EU0hBS0UpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9u
RXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2RlJykKKyAgICAgICAgZW5jb2RlZF9yZWFz
b24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygn
IUgnLCBjb2RlKSArIGVuY29kZWRfcmVhc29uCisgICAgcmV0dXJuIGJvZHkKKworCitjbGFzcyBT
dHJlYW1PcHRpb25zKG9iamVjdCk6CisgICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25m
aWd1cmUgU3RyZWFtIG9iamVjdHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICAiIiJDb25zdHJ1Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAgIyBGaWx0ZXJzIGFw
cGxpZWQgdG8gZnJhbWVzLgorICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBb
XQorICAgICAgICBzZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorCisgICAgICAgICMg
RmlsdGVycyBhcHBsaWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVj
dGVkIGJ5IHRoZW0uCisgICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10K
KyAgICAgICAgc2VsZi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQorCisgICAgICAgIHNl
bGYuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQorICAgICAgICBzZWxmLm1hc2tf
c2VuZCA9IEZhbHNlCisgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCisKKworY2xh
c3MgU3RyZWFtKG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBm
cmFtZXMgb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbAorICAgIChSRkMgNjQ1NSkuCisgICAgIiIi
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgorICAgICAgICAiIiJD
b25zdHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisKKyAgICAgICAg
c2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Jl
cXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZHMgYm9keSBv
ZiByZWNlaXZlZCBmcmFnbWVudHMuCisgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9
IFtdCisgICAgICAgICMgSG9sZHMgdGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCisg
ICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSA9IE5vbmUKKworICAgICAgICBzZWxmLl93cml0
ZXIgPSBGcmFnbWVudGVkRnJhbWVCdWlsZGVyKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5t
YXNrX3NlbmQsIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKKyAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4KQorCisgICAgICAg
IHNlbGYuX3BpbmdfcXVldWUgPSBkZXF1ZSgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3Ro
KToKKyAgICAgICAgIiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2Fz
ZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVz
cyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorCisgICAgICAgIFJh
aXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJl
YWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJlYWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5n
dGgpCisgICAgICAgICAgICBpZiBub3QgcmVhZF9ieXRlczoKKyAgICAgICAgICAgICAgICByYWlz
ZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1Jl
Y2VpdmluZyAlZCBieXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCisg
ICAgICAgICAgICAgICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVt
b3RlX2FkZHIsICkpKQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhj
ZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgQWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJl
Y2F1c2UgbW9kX3B5dGhvbiB0aHJvd3MgaXQuCisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUg
ZmFpbGVkLiBJT0Vycm9yICglcykgb2NjdXJyZWQnICUKKyAgICAgICAgICAgICAgICAobGVuZ3Ro
LCBlKSkKKworICAgIGRlZiBfd3JpdGUoc2VsZiwgYnl0ZXNfdG9fd3JpdGUpOgorICAgICAgICAi
IiJXcml0ZXMgZ2l2ZW4gYnl0ZXMgdG8gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkg
ZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0
aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3Jp
dGUpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwucHJl
cGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNl
bmQgbWVzc2FnZSB0byAlcjogJyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi5yZW1vdGVfYWRkciwgKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYg
cmVjZWl2ZV9ieXRlcyhzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWNlaXZlcyBtdWx0aXBs
ZSBieXRlcy4gUmV0cmllcyByZWFkIHdoZW4gd2UgY291bGRuJ3QgcmVjZWl2ZSB0aGUKKyAgICAg
ICAgc3BlY2lmaWVkIGFtb3VudC4gVGhpcyBtZXRob2QgcmV0dXJucyBieXRlIHN0cmluZ3MuCisK
KyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRp
b246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgcmVhZF9ieXRlcyA9IFtdCisgICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6CisgICAgICAgICAg
ICBuZXdfcmVhZF9ieXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQorICAgICAgICAgICAgcmVhZF9i
eXRlcy5hcHBlbmQobmV3X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICBsZW5ndGggLT0gbGVuKG5l
d19yZWFkX2J5dGVzKQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVhZF9ieXRlcykKKworICAg
IGRlZiBfcmVhZF91bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKKyAgICAgICAgIiIiUmVhZHMgYnl0
ZXMgdW50aWwgd2UgZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKKyAg
ICAgICAgY29udGFpbiBkZWxpbV9jaGFyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAg
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBz
dHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQorICAgICAgICB3
aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCisgICAgICAgICAgICBp
ZiBjaCA9PSBkZWxpbV9jaGFyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBy
ZWFkX2J5dGVzLmFwcGVuZChjaCkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMp
CisKKyAgICBkZWYgX3JlY2VpdmVfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEg
ZnJhbWUgYW5kIHJldHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcK
KyAgICAgICAgZWFjaCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KKworICAg
ICAgICBSYWlzZXM6CisgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjog
d2hlbiByZWFkIHJldHVybnMgZW1wdHkKKyAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAg
ICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFs
aWQgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgp
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCisKKyAgICAg
ICAgcmV0dXJuIHBhcnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFz
a19yZWNlaXZlKQorCisgICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxm
KToKKyAgICAgICAgb3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3Yz
ID0gc2VsZi5fcmVjZWl2ZV9mcmFtZSgpCisKKyAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4s
CisgICAgICAgICAgICAgICAgICAgICByc3YxPXJzdjEsCisgICAgICAgICAgICAgICAgICAgICBy
c3YyPXJzdjIsCisgICAgICAgICAgICAgICAgICAgICByc3YzPXJzdjMsCisgICAgICAgICAgICAg
ICAgICAgICBvcGNvZGU9b3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD11bm1h
c2tlZF9ieXRlcykKKworICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1l
c3NhZ2UgZmlsdGVycy4KKyAgICAgICAgVGhlIGZyYW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0
aXNmeSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZy
YWdtZW50ZWQuCisgICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBC
SU5BUlkuCisKKyAgICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3Rp
bmcgcHVycG9zZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZl
X2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAg
ICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1Nl
Z21lbnRlZCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAg
ICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKKyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAh
PSBjb21tb24uT1BDT0RFX1RFWFQKKyAgICAgICAgICAgICAgICBhbmQgZnJhbWUub3Bjb2RlICE9
IGNvbW1vbi5PUENPREVfQklOQVJZKToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVj
ZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykK
KworICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJh
bWVfZmlsdGVyczoKKyAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAg
ICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2Vf
ZmlsdGVyczoKKyAgICAgICAgICAgIGZyYW1lLnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0
ZXIoZnJhbWUucGF5bG9hZCkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAi
IiJTZW5kIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IHRl
eHQgaW4gdW5pY29kZSBvciBiaW5hcnkgaW4gc3RyIHRvIHNlbmQuCisgICAgICAgICAgICBiaW5h
cnk6IHNlbmQgbWVzc2FnZSBhcyBiaW5hcnkgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAg
ICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10
ZXJtaW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNv
bnNpc3RlbnQgbWVzc2FnZSB0eXBlIG9yCisgICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRl
ci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWlu
YXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAg
ICAgICAgICAnUmVxdWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3Np
bmcgaGFuZHNoYWtlJykKKworICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2Fn
ZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRp
b24oCisgICAgICAgICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IG5vdCBi
ZSBpbnN0YW5jZSBvZiBVbmljb2RlJykKKworICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4g
c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIg
dG8gbGltaXQgbWF4aW11bSBzaXplIG9mIGRhdGEgaW4KKyAgICAgICAgICAgICMgcGF5bG9hZCBk
YXRhIG9mIGVhY2ggZnJhbWUuCisgICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAt
MQorCisgICAgICAgICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5h
cnkpKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBieXRlc193cml0dGVu
ID0gMAorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBlbmRfZm9yX3Ro
aXNfZnJhbWUgPSBlbmQKKyAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNz
YWdlKSAtIGJ5dGVzX3dyaXR0ZW4KKyAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFU
QV9TSVpFID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5dGVzX3RvX3dyaXRlID4g
TUFYX1BBWUxPQURfREFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlz
X2ZyYW1lID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBNQVhf
UEFZTE9BRF9EQVRBX1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fd3JpdGVy
LmJ1aWxkKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46Ynl0ZXNf
d3JpdHRlbiArIGJ5dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90
aGlzX2ZyYW1lLCBiaW5hcnkpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisK
KyAgICAgICAgICAgICAgICBieXRlc193cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAg
ICAgICAgICAgICAjIFRoaXMgaWYgbXVzdCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGls
ZSBibG9jaykgc28gdGhhdAorICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlz
IHNlbnQuCisgICAgICAgICAgICAgICAgaWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFz
IGU6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oZSkKKworICAgIGRl
ZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkdldHMg
YSBtZXNzYWdlIGZyb20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdt
ZW50ZWQKKyAgICAgICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdt
ZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9kCisgICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xl
IG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0CisgICAgICAgIGZyYWdtZW50
ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBt
YXRjaCBkZWZyYWdtZW50YXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJh
bWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBmcmFt
ZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZp
bjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZy
YWdtZW50YXRpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJh
bWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJt
ZWRpYXRlIGZyYW1lIGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlv
biBub3Qgc3RhcnRlZCcpCisKKyAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAg
ICAgICAjIEVuZCBvZiBmcmFnbWVudGF0aW9uIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSBiJycuam9pbihzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1
cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVk
aWF0ZSBmcmFtZQorICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBl
bmQoZnJhbWUucGF5bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgaWYgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAg
ICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZy
YW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJh
Z21lbnRlZCBmcmFtZSB3aXRob3V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5h
dGluZyBleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAnTmV3IGZyYWdtZW50YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0
aW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykK
KworICAgICAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVu
dGVkIGZyYW1lCisKKyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFt
ZS5vcGNvZGUKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUK
KworICAgICAgICAgICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNv
ZGUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21l
bnRlZCcpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5v
cGNvZGUKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZy
YW1lLnBheWxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHJv
Y2Vzc19jbG9zZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMg
Y2xvc2UgbWVzc2FnZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogY2xv
c2UgbWVzc2FnZS4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVF
eGNlcHRpb246IHdoZW4gdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgIiIiCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICAj
IFN0YXR1cyBjb2RlIGlzIG9wdGlvbmFsLiBXZSBjYW4gaGF2ZSBzdGF0dXMgcmVhc29uIG9ubHkg
aWYgd2UKKyAgICAgICAgIyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBl
bXB0eSBzdHJpbmcuIFNvLAorICAgICAgICAjIGFsbG93ZWQgY2FzZXMgYXJlCisgICAgICAgICMg
LSBubyBhcHBsaWNhdGlvbiBkYXRhOiBubyBjb2RlIG5vIHJlYXNvbgorICAgICAgICAjIC0gMiBv
Y3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCisgICAgICAg
ICMgLSAzIG9yIG1vcmUgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogYm90aCBjb2RlIGFuZCBy
ZWFzb24KKyAgICAgICAgaWYgbGVuKG1lc3NhZ2UpID09IDA6CisgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRAorICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdJZiBhIGNsb3Nl
IGZyYW1lIGhhcyBzdGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAg
J3N0YXR1cyBjb2RlIG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2Up
ID49IDI6CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3Qu
dW5wYWNrKCchSCcsIG1lc3NhZ2VbMDoyXSlbMF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfY2xvc2VfcmVhc29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1
dGYtOCcsICdyZXBsYWNlJykKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2
ZWQgY2xvc2UgZnJhbWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgICAg
ICAjIEFzIHdlJ3ZlIHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21p
bmcgb3ZlciB0aGUKKyAgICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRo
ZSBzb2NrZXQgd2l0aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAjIFJTVCBzZW5kaW5nLgor
CisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Ig
c2VydmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQg
Y2xvc2luZyBoYW5kc2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1B
TF9DTE9TVVJFCisgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5f
cmVxdWVzdCwgJ19kaXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5f
cmVxdWVzdC5fZGlzcGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hl
ci5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBp
ZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAw
OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAg
ICAgICAnSGFuZGxlciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykK
KyAgICAgICAgICAgICAgICByZWFzb24gPSAnJworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9z
aW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygK
KyAgICAgICAgICAgICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5
IHRoZSBwZWVyICcKKyAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJl
YXNvbikKKworICAgIGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Cisg
ICAgICAgICIiIlByb2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCisg
ICAgICAgICAgICBpZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVx
dWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEF0
dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5kX3Bvbmco
bWVzc2FnZSkKKworICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6
CisgICAgICAgICIiIlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAg
ICAgICAgICAgIG1lc3NhZ2U6IHBvbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
IyBUT0RPKHR5b3NoaW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5kbGluZy4KKworICAgICAgICBp
bmZsaWdodF9waW5ncyA9IGRlcXVlKCkKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkgPSBzZWxmLl9waW5nX3F1ZXVl
LnBvcGxlZnQoKQorICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToK
KyAgICAgICAgICAgICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBjb250YWlucyBwaW5ncyBpZ25v
cmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAjIG90aGVyIHBlZXIuIEp1c3QgZm9yZ2V0
IHRoZW0uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdQaW5nICVyIGlzIGFja2VkICglZCBwaW5ncyB3ZXJlIGlnbm9yZWQp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHksIGxlbihpbmZsaWdodF9w
aW5ncykpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBwZW5kKGV4cGVjdGVkX2JvZHkp
CisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSBy
ZWNlaXZlZCBwb25nIHdhcyB1bnNvbGljaXRlZCBwb25nLiBLZWVwIHRoZQorICAgICAgICAgICAg
ICAgICMgcGluZyBxdWV1ZSBhcyBpcy4KKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVl
ID0gaW5mbGlnaHRfcGluZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jl
Y2VpdmVkIGEgdW5zb2xpY2l0ZWQgcG9uZycpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9wb25nX2hh
bmRsZXIKKyAgICAgICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAgaGFuZGxlcihz
ZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Cisg
ICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAg
ICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMg
YSB0ZXh0IGluCisgICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgorCisgICAgICAg
IFJldHVybnM6CisgICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCisgICAgICAg
ICAgICAtIGFzIHVuaWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQorICAgICAg
ICAgICAgLSBhcyBzdHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCisgICAgICAg
ICAgICBvciBOb25lIGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBh
IGNsaWVudC10ZXJtaW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAg
ICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0
eQorICAgICAgICAgICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAorICAgICAgICAgICAgICAgIGRh
dGEuCisgICAgICAgICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNl
aXZlZCBmcmFtZSBoYXMKKyAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBo
YW5kbGUuIFlvdSBjYW4gaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5k
IGNvbnRpbnVlIHJlY2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHJhaXNl
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2Vp
dmVfbWVzc2FnZSBhZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKKyAgICAgICAgICAgICAgICAn
aGFuZHNoYWtlJykKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBtcF9jb25u
LnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgICAg
ICBmcmFtZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKworICAgICAg
ICAgICAgIyBDaGVjayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250
cm9sIGZyYW1lcworICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUg
ZnJhbWUuCisgICAgICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NTUjc2VjdGlvbi01LjUKKyAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9v
cGNvZGUoZnJhbWUub3Bjb2RlKQorICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKGZyYW1lLnBh
eWxvYWQpID4gMTI1KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRp
b24oCisgICAgICAgICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZy
YW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykK
KworICAgICAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5n
X2ZyYW1lX2ZpbHRlcnM6CisgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFt
ZSkKKworICAgICAgICAgICAgaWYgZnJhbWUucnN2MSBvciBmcmFtZS5yc3YyIG9yIGZyYW1lLnJz
djM6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMgc2V0IChyc3YgPSAlZCVkJWQp
JyAlCisgICAgICAgICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5y
c3YzKSkKKworICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2dldF9tZXNzYWdlX2Zyb21fZnJh
bWUoZnJhbWUpCisgICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29w
dGlvbnMuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
PSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICAgICAgaWYgc2VsZi5f
b3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfVEVYVDoKKyAgICAgICAgICAgICAgICAj
IFRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgc2VjdGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxp
ZAorICAgICAgICAgICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStm
ZmZkIFJFUExBQ0VNRU5UCisgICAgICAgICAgICAgICAgIyBDSEFSQUNURVIuCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5kZWNvZGUoJ3V0
Zi04JykKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6Cisg
ICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uKGUpCisgICAgICAg
ICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9v
cmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DTE9TRToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wcm9jZXNzX2Nsb3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9u
Lk9QQ09ERV9QSU5HOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdl
KG1lc3NhZ2UpCisgICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21t
b24uT1BDT0RFX1BPTkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3Nh
Z2UobWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbignT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdp
bmFsX29wY29kZSkKKworICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2Rl
LCByZWFzb24pOgorICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHko
Y29kZSwgcmVhc29uKQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKKyAgICAg
ICAgICAgIGJvZHksCisgICAgICAgICAgICBtYXNrPXNlbGYuX29wdGlvbnMubWFza19zZW5kLAor
ICAgICAgICAgICAgZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2Zp
bHRlcnMpCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUK
KworICAgICAgICBzZWxmLl93cml0ZShmcmFtZSkKKworICAgIGRlZiBjbG9zZV9jb25uZWN0aW9u
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1jb21tb24uU1RBVFVTX05PUk1B
TF9DTE9TVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgorICAgICAgICAiIiJDbG9zZXMg
YSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGJsb2NrcyB1bnRp
bAorICAgICAgICBpdCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8gdGhlIGNsb3NpbmcgaGFu
ZHNoYWtlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBm
b3IgY2xvc2UgZnJhbWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQorICAgICAgICAgICAgICAg
IGZyYW1lIHdpdGggZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCisgICAgICAgICAgICByZWFzb246
IHN0cmluZyByZXByZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNw
b25zZTogVHJ1ZSB3aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgorICAgICAg
ICBSYWlzZXM6CisgICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29u
IGlzIHNwZWNpZmllZCB3aXRoIGNvZGUgTm9uZQorICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5v
dCBhbiBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KKyAgICAgICAgIiIiCisKKyAg
ICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5l
Y3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgY2FsbCBf
cHJvY2Vzc19jbG9zZV9tZXNzYWdlKCkuCisgICAgICAgICMgX3Byb2Nlc3NfY2xvc2VfbWVzc2Fn
ZSgpIGltbWVkaWF0ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXItaW5p
dGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90ZXJtaW5hdGVkIHRvCisg
ICAgICAgICMgVHJ1ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHdlIGhhdmVuJ3QgcmVj
ZWl2ZWQgYW55IGNsb3NlCisgICAgICAgICMgZnJhbWUuIFdlJ3JlIGluaXRpYXRpbmcgYSBjbG9z
aW5nIGhhbmRzaGFrZS4KKworICAgICAgICBpZiBjb2RlIGlzIE5vbmU6CisgICAgICAgICAgICBp
ZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAgICAgICAgICAg
ICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9z
ZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCisgICAgICAg
ICAgICByZWFzb24gPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UocmVhc29uLCBieXRlcykgYW5kIG5vdCBpc2luc3RhbmNlKAorICAgICAgICAgICAgICAg
ICAgICByZWFzb24sIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIGJ5dGVzIG9yIHVuaWNvZGUnKQorCisgICAgICAgIHNlbGYuX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0luaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLCByZWFzb24pCisKKyAgICAgICAgaWYg
KGNvZGUgPT0gY29tbW9uLlNUQVRVU19HT0lOR19BV0FZCisgICAgICAgICAgICAgICAgb3IgY29k
ZSA9PSBjb21tb24uU1RBVFVTX1BST1RPQ09MX0VSUk9SKSBvciBub3Qgd2FpdF9yZXNwb25zZToK
KyAgICAgICAgICAgICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2Ug
ZnJhbWUgaWYgdGhlIHJlYXNvbiBpcworICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvciBvciB0
aGF0IHRoZSBzZXJ2ZXIgaXMgZ29pbmcgYXdheS4gRm9yIHNvbWUgb2YKKyAgICAgICAgICAgICMg
b3RoZXIgcmVhc29ucywgaXQgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9z
ZSBmcmFtZSwKKyAgICAgICAgICAgICMgYnV0IGl0J3Mgbm90IGNsZWFyLCB5ZXQuCisgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9j
bGllbnQgdGVybWluYXRlZC8gZmxhZyBoYXMgYmVlbiBzZXQsCisgICAgICAgICMgb3IgdW50aWwg
YSBzZXJ2ZXItZGVmaW5lZCB0aW1lb3V0IGV4cGlyZXMuCisgICAgICAgICMKKyAgICAgICAgIyBG
b3Igbm93LCB3ZSBleHBlY3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVy
IHNlbmRpbmcKKyAgICAgICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIG1lc3Nh
Z2UgPSBzZWxmLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2luZyBoYW5k
c2hha2UnKQorICAgICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlv
bi4KKyAgICAgICAgIyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4pIGRvZXNu
J3QgaGF2ZSBjbG9zZSBtZXRob2QuCisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHksIGJp
bmFyeT1GYWxzZSk6CisgICAgICAgIGlmIG5vdCBiaW5hcnkgYW5kIGlzaW5zdGFuY2UoYm9keSwg
c2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ1VURi04JykK
KyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25zLm1h
c2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
Lm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisg
ICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRfcG9u
ZyhzZWxmLCBib2R5KToKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBz
ZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dy
aXRlKGZyYW1lKQorCisgICAgZGVmIGdldF9sYXN0X3JlY2VpdmVkX29wY29kZShzZWxmKToKKyAg
ICAgICAgIiIiUmV0dXJucyB0aGUgb3Bjb2RlIG9mIHRoZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGlj
aCB0aGUgbGFzdCByZWNlaXZlZAorICAgICAgICBmcmFtZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJu
IHZhbHVlIGlzIHZhbGlkIGlmZiBpbW1lZGlhdGVseSBhZnRlcgorICAgICAgICByZWNlaXZlX21l
c3NhZ2UgY2FsbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFs
X29wY29kZQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTY0ZTZiOGU0NjgyNDY3MTg3ZmMzODk0YjFj
YTc5ZWM4MmE0MTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkKQEAgLTAsMCArMSw0MDUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIi
V2ViU29ja2V0IHV0aWxpdGllcy4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQKK2ltcG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaXgKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAK
K2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVj
dAoraW1wb3J0IHpsaWIKKwordHJ5OgorICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBm
YXN0X21hc2tpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKKworZGVmIHByZXBl
bmRfbWVzc2FnZV90b19leGNlcHRpb24obWVzc2FnZSwgZXhjKToKKyAgICAiIiJQcmVwZW5kIG1l
c3NhZ2UgdG8gdGhlIGV4Y2VwdGlvbi4iIiIKKyAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3Ry
KGV4YyksICkKKyAgICByZXR1cm4KKworCitkZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwg
Y3lnd2luX3BhdGgpOgorICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBX
aW4zMiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCisgICAgKGUuZy4gcGVybCkuICBOb3Rl
IHRoYXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKKyAgICB3
aGljaCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0
ZW4uCisgICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2Yg
Y3lnd2luIGJpbmFyaWVzLgorCisgICAgQXJnczoKKyAgICAgIGludGVycDogaW50ZXJwIGNvbW1h
bmQgbGluZQorICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5h
cnksIG9yIE5vbmUKKyAgICBSZXR1cm5zOgorICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFu
ZCBsaW5lLgorICAgICIiIgorICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKKyAgICAgICAgcmV0dXJu
IGludGVycAorICAgIG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnAp
CisgICAgaWYgbToKKyAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdy
b3VwKDEpKQorICAgICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQorICAgIHJldHVybiBpbnRl
cnAKKworCitkZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5v
bmUpOgorICAgIHIiIiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNj
cmlwdC4KKworICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0
aG9uIGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAorICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4v
cGVybCAtd1QgaGVsbG8ucGwiLgorICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4g
aW4gQ2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAorICAgICIvdXNyL2Jpbi9wZXJsIiB0
byAiPGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCisKKyAgICBBcmdzOgorICAgICAgc2NyaXB0X3Bh
dGg6IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3Rvcnkg
bmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgICMhLWlu
dGVycHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0Lgor
ICAgICIiIgorICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkKKyAgICBsaW5lID0gZnAucmVhZGxp
bmUoKQorICAgIGZwLmNsb3NlKCkKKyAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQor
ICAgIGlmIG06CisgICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwg
Y3lnd2luX3BhdGgpCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd3JhcF9wb3BlbjNfZm9yX3dp
bihjeWd3aW5fcGF0aCk6CisgICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQg
b24gV2luZG93cy4KKworICAgIEFyZ3M6CisgICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5
Z3dpbiBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQorICAgICAgICAgICAg
ICAgICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KKyAg
ICAiIiIKKyAgICBfX29yaWdfcG9wZW4zID0gb3MucG9wZW4zCisKKyAgICBkZWYgX193cmFwX3Bv
cGVuMyhjbWQsIG1vZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAgICAgY21kbGluZSA9IGNtZC5z
cGxpdCgnICcpCisgICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0s
IGN5Z3dpbl9wYXRoKQorICAgICAgICBpZiBpbnRlcnA6CisgICAgICAgICAgICBjbWQgPSBpbnRl
cnAgKyAnICcgKyBjbWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBi
dWZzaXplKQorCisgICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMworCisKK2RlZiBoZXhpZnko
cyk6CisgICAgcmV0dXJuICcgJy5qb2luKFsnJTAyeCcgJSB4IGZvciB4IGluIHNpeC5pdGVyYnl0
ZXMocyldKQorCisKK2RlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgorICAgICIiIlJldHVybiB0aGUg
bG9nZ2luZyBjbGFzcyBpbmZvcm1hdGlvbi4iIiIKKyAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dn
ZXIoJyVzLiVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvLl9fY2xhc3NfXy5f
X21vZHVsZV9fLCBvLl9fY2xhc3NfXy5fX25hbWVfXykpCisKKworZGVmIHBhY2tfYnl0ZShiKToK
KyAgICAiIiJQYWNrIGFuIGludGVnZXIgdG8gbmV0d29yay1vcmRlcmVkIGJ5dGUiIiIKKyAgICBy
ZXR1cm4gc3RydWN0LnBhY2soJyFCJywgYikKKworCitjbGFzcyBOb29wTWFza2VyKG9iamVjdCk6
CisgICAgIiIiQSBOb09wIG1hc2tpbmcgb2JqZWN0LgorCisgICAgVGhpcyBoYXMgdGhlIHNhbWUg
aW50ZXJmYWNlIGFzIFJlcGVhdGVkWG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKKyAgICB0aGUg
c3RyaW5nIHBhc3NlZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgorICAgICIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgIiIiTm9PcC4iIiIKKyAgICAgICAgcGFzcwor
CisgICAgZGVmIG1hc2soc2VsZiwgcyk6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHJl
dHVybiBzCisKKworY2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIG1h
c2tpbmcgb2JqZWN0IHRoYXQgYXBwbGllcyBYT1Igb24gdGhlIHN0cmluZy4KKworICAgIEFwcGxp
ZXMgWE9SIG9uIHRoZSBieXRlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhvZCB3aXRoIHRoZSBt
YXNraW5nIGJ5dGVzCisgICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJlcGVhdGVkbHkuIFRo
aXMgb2JqZWN0IHJlbWVtYmVycyB0aGUgcG9zaXRpb24KKyAgICBpbiB0aGUgbWFza2luZyBieXRl
cyB0aGUgbGFzdCBtYXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVzIGZyb20KKyAgICB0
aGF0IHBvaW50IG9uIHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCisgICAgIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG1hc2tpbmdfa2V5KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkg
PSBtYXNraW5nX2tleQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9IDAKKworICAg
IGRlZiBfbWFza191c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBt
YXNrIHZpYSBTV0lHLiIiIgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3RfbWFza2luZy5tYXNr
KHMsIHNlbGYuX21hc2tpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4KQorICAgICAgICBzZWxmLl9tYXNraW5nX2tl
eV9pbmRleCA9ICgoc2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKKyAgICAg
ICAgcmV0dXJuIG1hc2tlZF9kYXRhCisKKyAgICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwg
cyk6CisgICAgICAgICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIHB5dGhvbi4iIiIKKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAnTWFza2luZyBPcGVyYXRpb24gc2hvdWxkIG5vdCBwcm9j
ZXNzIHVuaWNvZGUgc3RyaW5ncycpCisKKyAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KHMpCisK
KyAgICAgICAgIyBVc2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhl
IGNvc3QgdG8gYWNjZXNzCisgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICBtYXNraW5nX2tl
eSA9IFtjIGZvciBjIGluIHNpeC5pdGVyYnl0ZXMoc2VsZi5fbWFza2luZ19rZXkpXQorICAgICAg
ICBtYXNraW5nX2tleV9zaXplID0gbGVuKG1hc2tpbmdfa2V5KQorICAgICAgICBtYXNraW5nX2tl
eV9pbmRleCA9IHNlbGYuX21hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgZm9yIGkgaW4gcmFu
Z2UobGVuKHJlc3VsdCkpOgorICAgICAgICAgICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21h
c2tpbmdfa2V5X2luZGV4XQorICAgICAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2lu
Z19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X3NpemUKKworICAgICAgICBzZWxmLl9tYXNr
aW5nX2tleV9pbmRleCA9IG1hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgcmV0dXJuIGJ5dGVz
KHJlc3VsdCkKKworICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAg
bWFzayA9IF9tYXNrX3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tf
dXNpbmdfYXJyYXkKKworCisjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNh
biBzdXBwcmVzcyBDTUYvRkxHICgyIG9jdGV0KSBhbmQKKyMgQURMRVIzMiAoNCBvY3RldCkgZmll
bGRzIG9mIHpsaWIgc28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKKyMgZGVm
bGF0ZSBsaWJyYXJ5LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNl
dCBkaWN0aW9uYXJ5LgorIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3Ro
IGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgorIyBGb3IgZGVjb21wcmVzc2lvbiwgd2Ug
Y2FuIGp1c3QgdXNlIDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKKyMgY29tcHJl
c3Npb24sIHdlIHVzZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KKyMKKyMgQ29tcHJl
c3Npb24gbGV2ZWwgaXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1h
dGNoIGxldmVsCisjIHRvIGRlY29kZS4KKyMKKyMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGlu
ZmxhdGUuY2Mgb2YgemxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCisjIFB5dGhvbi4g
U2VlIGFsc28gUkZDMTk1MCAoWkxJQiAzLjMpLgorCisKK2NsYXNzIF9EZWZsYXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICAjIFVzaW5nIHRoZSBzbWFs
bGVzdCB3aW5kb3cgYml0cyBvZiA5IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KKyAgICAg
ICAgIyBPbiBXZWJTb2NrZXQgc3BlYywgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXQgaXMgOC4gSG93
ZXZlciwgemxpYiBkb2VzCisgICAgICAgICMgbm90IGFjY2VwdCB3aW5kb3dfYml0ID0gOC4KKyAg
ICAgICAgIworICAgICAgICAjIEJlY2F1c2Ugb2YgYSB6bGliIGRlZmxhdGUgcXVpcmssIGJhY2st
cmVmZXJlbmNlcyB3aWxsIG5vdCB1c2UgdGhlCisgICAgICAgICMgZW50aXJlIHJhbmdlIG9mIDEg
PDwgd2luZG93X2JpdHMsIGJ1dCB3aWxsIGluc3RlYWQgdXNlIGEgcmVzdHJpY3RlZAorICAgICAg
ICAjIHJhbmdlIG9mICgxIDw8IHdpbmRvd19iaXRzKSAtIDI2Mi4gV2l0aCBhbiBpbmNyZWFzZWQg
d2luZG93X2JpdHMgPSA5LAorICAgICAgICAjIGJhY2stcmVmZXJlbmNlcyB3aWxsIGJlIHdpdGhp
biBhIHJhbmdlIG9mIDI1MC4gVGhlc2UgY2FuIHN0aWxsIGJlCisgICAgICAgICMgZGVjb21wcmVz
c2VkIHdpdGggd2luZG93X2JpdHMgPSA4IGFuZCB0aGUgMjU2LWJ5dGUgd2luZG93IHVzZWQgdGhl
cmUuCisgICAgICAgICMKKyAgICAgICAgIyBTaW1pbGFyIGRpc3NjdXNzaW9ucyBjYW4gYmUgZm91
bmQgaW4gaHR0cHM6Ly9jcmJ1Zy5jb20vNjkxMDc0CisgICAgICAgIHdpbmRvd19iaXRzID0gbWF4
KHdpbmRvd19iaXRzLCA5KQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC13aW5kb3dfYml0cykKKworICAgIGRl
ZiBjb21wcmVzcyhzZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxm
Ll9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdD
b21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Nv
bXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21w
cmVzc2VkX2J5dGVzCisKKyAgICBkZWYgY29tcHJlc3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToK
KyAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVz
KQorICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0
ICVyJywgYnl0ZXMpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0
ICVyJywgY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMK
KworICAgIGRlZiBjb21wcmVzc19hbmRfZmluaXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29t
cHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBj
b21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2Vk
X2J5dGVzKQorICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcworCisKK2NsYXNzIF9JbmZs
YXRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAgICAgICAgc2VsZi5f
d2luZG93X2JpdHMgPSB3aW5kb3dfYml0cworCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBi
JycKKworICAgICAgICBzZWxmLnJlc2V0KCkKKworICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIHNp
emUpOgorICAgICAgICBpZiBub3QgKHNpemUgPT0gLTEgb3Igc2l6ZSA+IDApOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdzaXplIG11c3QgYmUgLTEgb3IgcG9zaXRpdmUnKQorCisgICAg
ICAgIGRhdGEgPSBiJycKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSAr
PSBzZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzaXplIC0gbGVu
KGRhdGEpKSkKKyAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNz
LnVuY29uc3VtZWRfdGFpbAorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRf
ZGF0YToKKyAgICAgICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBh
IGJsb2NrIHdpdGggQkZJTkFMID0gMSkgYW5kCisgICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5l
dyBzdHJlYW0gKHVudXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQorICAgICAgICAg
ICAgICAgICMgemxpYi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0
ZSBhIG5ldworICAgICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVz
cyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBJdCdz
IGZpbmUgdG8gaWdub3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKKyAg
ICAgICAgICAgICAgICAjIGVtcHR5LgorICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQg
PSBzZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhCisgICAgICAgICAgICAgICAgc2VsZi5yZXNl
dCgpCisgICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToK
KyAgICAgICAgICAgICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXBy
ZXNzIGFnYWluLgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVz
cyB0byB0cnkgdG8gZGVjb21wcmVzcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFi
bGUgYnl0ZXMgYmVmb3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCisgICAgICAg
ICAgICAgICAgICAgICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBIZXJl
LCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMK
KyAgICAgICAgICAgICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBh
cmUgYWxyZWFkeSBpbiBkYXRhLiBXZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAi
Y29udGludWUiIGhlcmUuCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBkYXRh
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRh
KQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCisgICAgICAgIHNl
bGYuX3VuY29uc3VtZWQgKz0gZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0JykKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHps
aWIuZGVjb21wcmVzc29iaigtc2VsZi5fd2luZG93X2JpdHMpCisKKworIyBDb21wcmVzc2VzL2Rl
Y29tcHJlc3NlcyBnaXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJG
QzE5NzkuCisKKworY2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgorICAgICIiIkEgY29t
cHJlc3NvciBjbGFzcyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNl
IGFuZAorICAgIGZsdXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJG
QzE5Nzkgc2VjdGlvbiAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRv
d19iaXRzLCBub19jb250ZXh0X3Rha2VvdmVyKToKKyAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBO
b25lCisgICAgICAgIGlmIHdpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICB3aW5kb3df
Yml0cyA9IHpsaWIuTUFYX1dCSVRTCisgICAgICAgIHNlbGYuX3dpbmRvd19iaXRzID0gd2luZG93
X2JpdHMKKyAgICAgICAgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciA9IG5vX2NvbnRleHRfdGFr
ZW92ZXIKKworICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGVuZD1UcnVlLCBiZmluYWw9RmFs
c2UpOgorICAgICAgICBpZiBzZWxmLl9kZWZsYXRlciBpcyBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fZGVmbGF0ZXIgPSBfRGVmbGF0ZXIoc2VsZi5fd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYg
YmZpbmFsOgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5k
X2ZpbmlzaChieXRlcykKKyAgICAgICAgICAgICMgQWRkIGEgcGFkZGluZyBibG9jayB3aXRoIEJG
SU5BTCA9IDAgYW5kIEJUWVBFID0gMC4KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHBh
Y2tfYnl0ZSgwKQorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJl
c3NfYW5kX2ZsdXNoKGJ5dGVzKQorICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICAjIFN0cmlw
IGxhc3QgNCBvY3RldHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAgICAg
ICAgICMgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAg
ICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6LTRdCisKKyAgICAgICAgaWYgc2VsZi5fbm9fY29udGV4
dF90YWtlb3ZlciBhbmQgZW5kOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKK2NsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0
KToKKyAgICAiIiJBIGRlY29tcHJlc3NvciBjbGFzcyBhIGxhIFJGQzE5NzkuCisKKyAgICBBIGRl
Y29tcHJlc3NvciBjbGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVk
IGZvbGxvd2luZworICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNl
Y3Rpb24gMi4xLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cz16
bGliLk1BWF9XQklUUyk6CisgICAgICAgIHNlbGYuX2luZmxhdGVyID0gX0luZmxhdGVyKHdpbmRv
d19iaXRzKQorCisgICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcyk6CisgICAgICAgICMgUmVzdG9y
ZSBzdHJpcHBlZCBMRU4gYW5kIE5MRU4gZmllbGQgb2YgYSBub24tY29tcHJlc3NlZCBibG9jayBh
ZGRlZAorICAgICAgICAjIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgIHNlbGYuX2luZmxhdGVy
LmFwcGVuZChieXRlcyArIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIHJldHVybiBzZWxm
Ll9pbmZsYXRlci5kZWNvbXByZXNzKC0xKQorCisKK2NsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0
KToKKyAgICAiIiJBIHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0
IHNlbmQgYW5kIHJlY3YgdG8gcGVyZm9ybQorICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRl
Y29tcHJlc3Npb24gdHJhbnNwYXJlbnRseS4KKyAgICAiIiIKKworICAgICMgU2l6ZSBvZiB0aGUg
YnVmZmVyIHBhc3NlZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgorICAgIF9S
RUNWX1NJWkUgPSA0MDk2CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAg
ICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2Ns
YXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHps
aWIuTUFYX1dCSVRTKQorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1B
WF9XQklUUykKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgorICAgICAgICAiIiJSZWNlaXZl
cyBkYXRhIGZyb20gdGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAor
ICAgICAgICB0byB0aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxl
LCByZXR1cm5zIGl0IGV2ZW4KKyAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNp
ZmllZCBzaXplLgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxv
dyBjYWxsIHdpdGggc2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55CisgICAgICAgICMg
ZGVjb21wcmVzc2VkIGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiBzaXplIDw9IDA6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCisg
ICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVj
b21wcmVzcyhzaXplKQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0
LnJlY3YoRGVmbGF0ZVNvY2tldC5fUkVDVl9TSVpFKQorICAgICAgICAgICAgaWYgbm90IHJlYWRf
ZGF0YToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBzZWxmLl9pbmZs
YXRlci5hcHBlbmQocmVhZF9kYXRhKQorCisgICAgZGVmIHNlbmRhbGwoc2VsZiwgYnl0ZXMpOgor
ICAgICAgICBzZWxmLnNlbmQoYnl0ZXMpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6Cisg
ICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9m
bHVzaChieXRlcykpCisgICAgICAgIHJldHVybiBsZW4oYnl0ZXMpCisKKworIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDYxNDI1ZTExNGQxNGQ4NmY4MWJjZDE0MWY2MmY3N2Q2NjRiOWNj
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93
M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDMxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvX3N0cmVhbV9leGNlcHRpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L2NvbW1vbi5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9k
aXNwYXRjaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25z
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvc2VydmVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0
X3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRf
c2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmOGNkMzkzYzdlZTgwNjk2NzU3MTM2NjVkODViZTdkOTc2
NTdiNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2Nr
ZXQvd2Vic29ja2V0X3NlcnZlci5weQpAQCAtMCwwICsxLDI4NSBAQAorIyBDb3B5cmlnaHQgMjAy
MCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJTdGFuZGFsb25lIFdlYnNvY2tldFNlcnZlcgorCitUaGlzIGZpbGUgZGVhbHMgd2l0aCB0
aGUgbWFpbiBtb2R1bGUgb2Ygc3RhbmRhbG9uZSBzZXJ2ZXIuIEFsdGhvdWdoIGl0IGlzIGZpbmUK
K3RvIGltcG9ydCB0aGlzIGZpbGUgZGlyZWN0bHkgdG8gdXNlIFdlYlNvY2tldFNlcnZlciwgaXQg
aXMgc3Ryb25nbHkgcmVjb21tZW5kZWQKK3RvIHVzZSBzdGFuZGFsb25lLnB5LCBzaW5jZSBpdCBp
cyBpbnRlbmRlZCB0byBhY3QgYXMgYSBza2VsZXRvbiBvZiB0aGlzIG1vZHVsZS4KKyIiIgorCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1w
b3J0IEJhc2VIVFRQU2VydmVyCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgc29ja2V0c2VydmVyCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0Citp
bXBvcnQgc3NsCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0LnJlcXVlc3RfaGFuZGxlciBpbXBvcnQgV2ViU29j
a2V0UmVxdWVzdEhhbmRsZXIKKworCitkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpOgorICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBp
biB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIGRpc3BhdGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKKyAgICAgICAg
d2Vic29ja19oYW5kbGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQorICAgICIiIgorCisgICAg
d2l0aCBvcGVuKHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpIGFzIGY6CisgICAgICAgIGZvciBs
aW5lIGluIGY6CisgICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2Uo
KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCco
XFMrKVxzKyhcUyspJCcsIGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAg
ICAgICBsb2dnaW5nLndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAgZmlsZTonICsgbGluZSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGRpc3BhdGNoZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMobS5ncm91cCgxKSwgbS5ncm91
cCgyKSkKKyAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBl
OgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQorCisKK2NsYXNzIFdlYlNv
Y2tldFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIpOgorICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4i
IiIKKworICAgICMgT3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi5kYWVtb25f
dGhyZWFkcworICAgIGRhZW1vbl90aHJlYWRzID0gVHJ1ZQorICAgICMgT3ZlcnJpZGVzIEJhc2VI
VFRQU2VydmVyLkhUVFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcworICAgIGFsbG93X3JldXNl
X2FkZHJlc3MgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAg
ICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18gdG8gc2V0IFNT
TCBlbmFibGVkCisgICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2NrZXQgYmVmb3JlIHNl
cnZlcl9iaW5kIGFuZCBzZXJ2ZXJfYWN0aXZhdGUsCisgICAgICAgIGlmIG5lY2Vzc2FyeS4KKyAg
ICAgICAgIiIiCisKKyAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1vbmcgcmVxdWVzdCBo
YW5kbGVycyB0byBzYXZlIHRpbWUgZm9yCisgICAgICAgICMgaW5zdGFudGlhdGlvbi4gIERpc3Bh
dGNoZXIgY2FuIGJlIHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZlLgorICAgICAgICBv
cHRpb25zLmRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAorICAgICAgICAgICAgb3B0
aW9ucy53ZWJzb2NrX2hhbmRsZXJzLCBvcHRpb25zLnNjYW5fZGlyLAorICAgICAgICAgICAgb3B0
aW9ucy5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQorICAgICAgICBpZiBvcHRpb25z
LndlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGU6CisgICAgICAgICAgICBfYWxpYXNfaGFuZGxlcnMo
b3B0aW9ucy5kaXNwYXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMu
d2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkKKyAgICAgICAgd2FybmluZ3MgPSBvcHRpb25zLmRp
c3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgaWYgd2FybmluZ3M6CisgICAgICAg
ICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndh
cm5pbmcoJ1dhcm5pbmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCisKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAg
c2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAg
ICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAg
c2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQorCisgICAgICAgIHNvY2tldHNlcnZlci5CYXNlU2Vy
dmVyLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChvcHRpb25zLnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcikKKworICAg
ICAgICAjIEV4cG9zZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFuZGxlciBvYmplY3Rz
IGFjY2VzcyBpdC4gV2UgbmFtZQorICAgICAgICAjIGl0IHdpdGggd2Vic29ja2V0XyBwcmVmaXgg
dG8gYXZvaWQgY29uZmxpY3QuCisgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25z
ID0gb3B0aW9ucworCisgICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkKKyAgICAgICAgc2Vs
Zi5zZXJ2ZXJfYmluZCgpCisgICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRl
ZiBfY3JlYXRlX3NvY2tldHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX25hbWUsIHNlbGYu
c2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzCisgICAgICAgIHNlbGYuX3NvY2tldHMg
PSBbXQorICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgICMgT24g
cGxhdGZvcm1zIHRoYXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJzdCBiaW5kIGZhaWxz
LgorICAgICAgICAgICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJUHY2CisgICAgICAg
ICAgICAjIC0gSWYgaXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNhbGwgd2l0aCBBRl9J
TkVUNiwgdGhlCisgICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVkcyBhbmQgdGhlIHNl
Y29uZCBmYWlscyAod2UnbGwgc2VlICdBZGRyZXNzCisgICAgICAgICAgICAjICAgYWxyZWFkeSBp
biB1c2UnIGVycm9yKS4KKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBvbmx5IElQdjYgb24g
Y2FsbCB3aXRoIEFGX0lORVQ2LCBib3RoIGNhbGwgYXJlCisgICAgICAgICAgICAjICAgZXhwZWN0
ZWQgdG8gc3VjY2VlZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KKyAgICAgICAgICAgIGFkZHJp
bmZvX2FycmF5ID0gWyhzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycs
ICcnKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0
LmdldGFkZHJpbmZvKHNlbGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BFQywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NU
UkVBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
Y2tldC5JUFBST1RPX1RDUCkKKyAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywg
YWRkcmluZm8pCisgICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1l
LCBzb2NrYWRkciA9IGFkZHJpbmZvCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
c29ja2V0XyA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
U2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAg
ICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgaWYg
c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICBpZiBz
ZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNF
UlRfUkVRVUlSRUQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBj
bGllbnRfY2VydF8gPSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNz
bC53cmFwX3NvY2tldCgKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0XywKKyAgICAgICAgICAg
ICAgICAgICAga2V5ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKKyAgICAgICAgICAg
ICAgICAgICAgY2VydGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisgICAgICAgICAg
ICAgICAgICAgIGNhX2NlcnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAg
ICAgICAgICAgICAgIGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCisgICAgICAgICAgICBzZWxmLl9z
b2NrZXRzLmFwcGVuZCgoc29ja2V0XywgYWRkcmluZm8pKQorCisgICAgZGVmIHNlcnZlcl9iaW5k
KHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZl
cl9iaW5kIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGJpbmQuCisgICAgICAg
ICIiIgorCisgICAgICAgIGZhaWxlZF9zb2NrZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0
aW5mbyBpbiBzZWxmLl9zb2NrZXRzOgorICAgICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBz
b2NrZXRpbmZvCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQmluZCBvbjogJXInLCBh
ZGRyaW5mbykKKyAgICAgICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfYWRkcmVzczoKKyAgICAg
ICAgICAgICAgICBzb2NrZXRfLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5T
T19SRVVTRUFERFIsIDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0
Xy5iaW5kKHNlbGYuc2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVy
ZTogJXInLCBlKQorICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAg
ICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQorICAgICAgICAgICAgaWYgc2Vs
Zi5zZXJ2ZXJfYWRkcmVzc1sxXSA9PSAwOgorICAgICAgICAgICAgICAgICMgVGhlIG9wZXJhdGlu
ZyBzeXN0ZW0gYXNzaWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBwb3J0CisgICAgICAg
ICAgICAgICAgIyBudW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFuZCBsYXRlciBzb2Nr
ZXRzIHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBvcnQgbnVtYmVyLiBB
bHNvIHNlbGYuc2VydmVyX3BvcnQgaXMgcmV3cml0dGVuCisgICAgICAgICAgICAgICAgIyBiZWNh
dXNlIGl0IGlzIGV4cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVybmFsIGNvZGUuCisg
ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IChzZWxmLnNlcnZlcl9uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Xy5nZXRzb2NrbmFt
ZSgpWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9h
ZGRyZXNzWzFdCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMg
YXNzaWduZWQnLCBzZWxmLnNlcnZlcl9wb3J0KQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGlu
IGZhaWxlZF9zb2NrZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0
aW5mbykKKworICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6CisgICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0
aXBsZQorICAgICAgICBzb2NrZXRzIGxpc3Rlbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFp
bGVkX3NvY2tldHMgPSBbXQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tl
dHM6CisgICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1
ZXVlX3NpemUpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQorICAgICAg
ICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRz
LmFwcGVuZChzb2NrZXRpbmZvKQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9z
b2NrZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKwor
ICAgICAgICBpZiBsZW4oc2VsZi5fc29ja2V0cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5jcml0aWNhbCgKKyAgICAgICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVz
ZSBpbmZvIGxvZyBsZXZlbCB0byBzZWUgdGhlIHJlYXNvbi4nKQorCisgICAgZGVmIHNlcnZlcl9j
bG9zZShzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5z
ZXJ2ZXJfY2xvc2UgdG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgY2xvc2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Cisg
ICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdDbG9zZSBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIHNv
Y2tldF8uY2xvc2UoKQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJp
ZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5maWxlbm8uIiIiCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmNyaXRpY2FsKCdOb3Qgc3VwcG9ydGVkOiBmaWxlbm8nKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fc29ja2V0c1swXVswXS5maWxlbm8oKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCBy
ZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZl
ci5oYW5kbGVfZXJyb3IuIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKCdFeGNlcHRp
b24gaW4gcHJvY2Vzc2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnRfYWRkcmVzcywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAg
ICAgIyBOb3RlOiBjbGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgorCisgICAgZGVmIGdldF9yZXF1
ZXN0KHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QuIiIi
CisKKyAgICAgICAgYWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0
LmFjY2VwdCgpCisKKyAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2
ZXJfb3B0aW9ucworICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAg
ICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiBhY2NlcHQuCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2Nr
ZXQuY2lwaGVyKCkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0
OiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0Lmdl
dHBlZXJjZXJ0KCkpCisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2Fk
ZHJlc3MKKworICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWw9MC41KToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZl
ci4iIiIKKworICAgICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IFRydWUKKyAgICAgICAgc2VsZi5f
X3dzX2lzX3NodXRfZG93bi5jbGVhcigpCisgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5o
YW5kbGVfcmVxdWVzdAorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaGFuZGxlX3JlcXVlc3Rf
bm9ibG9jaycpOgorICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxmLl9oYW5kbGVfcmVx
dWVzdF9ub2Jsb2NrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2Fy
bmluZygnRmFsbGJhY2sgdG8gYmxvY2tpbmcgcmVxdWVzdCBoYW5kbGVyJykKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fX3dzX3NlcnZpbmc6CisgICAgICAgICAgICAgICAg
ciwgdywgZSA9IHNlbGVjdC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIFtzb2NrZXRfWzBd
IGZvciBzb2NrZXRfIGluIHNlbGYuX3NvY2tldHNdLCBbXSwgW10sCisgICAgICAgICAgICAgICAg
ICAgIHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgZm9yIHNvY2tldF8gaW4gcjoKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXRfCisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uc2V0
KCkKKworICAgIGRlZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0
U2VydmVyLkJhc2VTZXJ2ZXIuc2h1dGRvd24uIiIiCisKKyAgICAgICAgc2VsZi5fX3dzX3NlcnZp
bmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLndhaXQoKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U5NDI4ZDY5MWQ3NTZj
ZjNkNjg3ZTc1NmI3MzgxNGNjZDNiZTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvc2V0dXAucHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4K
KyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1
cCwgRXh0ZW5zaW9uCitpbXBvcnQgc3lzCisKK19QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29j
a2V0JworCisjIEJ1aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBmYXN0ZXIgbWFza2lu
Zy4gU1dJRyBpcyByZXF1aXJlZC4KK19VU0VfRkFTVF9NQVNLSU5HID0gRmFsc2UKKworIyBUaGlz
IGlzIHVzZWQgc2luY2UgcHl0aG9uX3JlcXVpcmVzIGZpZWxkIGlzIG5vdCByZWNvZ25pemVkIHdp
dGgKKyMgcGlwIHZlcnNpb24gOS4wLjAgYW5kIGVhcmxpZXIKK2lmIHN5cy52ZXJzaW9uIDwgJzIu
Nyc6CisgICAgcHJpbnQoJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjcgb3IgbGF0ZXIuJyAlIF9QQUNL
QUdFX05BTUUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitpZiBfVVNFX0ZB
U1RfTUFTS0lORzoKKyAgICBzZXR1cChleHRfbW9kdWxlcz1bCisgICAgICAgIEV4dGVuc2lvbign
bW9kX3B5d2Vic29ja2V0L19mYXN0X21hc2tpbmcnLAorICAgICAgICAgICAgICAgICAgWydtb2Rf
cHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmknXSwKKyAgICAgICAgICAgICAgICAgIHN3aWdfb3B0
cz1bJy1jKysnXSkKKyAgICBdKQorCitzZXR1cCgKKyAgICBhdXRob3I9J1l1em8gRnVqaXNoaW1h
JywKKyAgICBhdXRob3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3JnJywKKyAgICBkZXNjcmlwdGlv
bj0nU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLicsCisg
ICAgbG9uZ19kZXNjcmlwdGlvbj0oJ21vZF9weXdlYnNvY2tldCBpcyBhIHN0YW5kYWxvbmUgc2Vy
dmVyIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wg
KFJGQyA2NDU1KS4gJworICAgICAgICAgICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0
L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4nKSwKKyAgICBsaWNlbnNlPSdTZWUgTElDRU5T
RScsCisgICAgbmFtZT1fUEFDS0FHRV9OQU1FLAorICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1F
LCBfUEFDS0FHRV9OQU1FICsgJy5oYW5kc2hha2UnXSwKKyAgICBweXRob25fcmVxdWlyZXM9Jz49
Mi43JywKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgI1RPRE8oc3V6dWtpa2Vp
dGEpOiBVcGRhdGUgdGhpcyB0byBuZXcgR2l0aHViIFVSTAorICAgIHVybD0naHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL3B5d2Vic29ja2V0LycsCisgICAgdmVyc2lvbj0nMy4wLjAnLAorKQorCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19p
bml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMg
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5
IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2NhY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2Nk
M2JmMDhjMjI2Zjg1NTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jYWNlcnQucGVtCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNB
VEUtLS0tLQorTUlJQ3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNEUUVC
QlFVQU1Fa3hDekFKQmdOVgorQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFV
RUNoTUxjSGwzWldKemIyTnJaWFF4RkRBUworQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0WERU
RXlNRFl3TmpBM01qUXpNMW9YRFRNNU1UQXlNekEzTWpRegorTTFvd1NURUxNQWtHQTFVRUJoTUNT
bEF4RGpBTUJnTlZCQWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAorWW5OdlkydGxkREVV
TUJJR0ExVUVBeE1MY0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAorZ1kw
QU1JR0pBb0dCQUtvU0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWprQ1lp
YWhYVwordTJDYlRUaGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0VU5x
dFFPaFFhcXFLK0NaOQorTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytxVWYy
TWpoNC8rU3p4QkROUDdBZ01CQUFHagorZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5aHdh
WmVhYjZCb1RobzMrK2J6TUhrR0ExVWRJd1J5TUhDQQorRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8z
Kytiem9VMmtTekJKTVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQorQ0JNRlZHOXJlVzh4RkRB
U0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgorWTJ0bGRJ
SUpBS3FWZ2hrR0YxclNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lF
QQorZ3NNSTFXRVlxTncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJrUThi
Q3I2eFkrS3c3cworWnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJMbytl
dDk4c2VsWnlkcEhlbUYzREpKMworZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2RjZW
NGpVMDdoUT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2Vy
dC9jZXJ0LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTM3OWE3MmIwZGFjNWY0MTk3OWM4MDJjNjYzZGY4Yjg4
ZGVhODI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2Nl
cnQucGVtCkBAIC0wLDAgKzEsNjEgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAg
IFZlcnNpb246IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQorICAgICAg
ICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNz
dWVyOiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAgICAg
ICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEy
IEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCisg
ICAgICAgIFN1YmplY3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNv
Y2tldAorICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1Ymxp
YyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICBSU0EgUHVibGljIEtl
eTogKDEwMjQgYml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKyAgICAg
ICAgICAgICAgICAgICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6
MWE6CisgICAgICAgICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2
Ojg5OjAzOmEyOjIxOgorICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjoz
NToyNzozYTphMjo5Mjo4ZToxMjo2MjoKKyAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6
Nzg6ZGY6YjY6OTQ6Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6CisgICAgICAgICAgICAgICAgICAgIDVj
OjA4OmYwOjA5OjNlOmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgorICAgICAgICAgICAg
ICAgICAgICBlNTpmYjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKKyAg
ICAgICAgICAgICAgICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6
MDc6OWE6CisgICAgICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5Ojgy
OjgzOmRiOjY4OmJmOmI4OgorICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1
NDo3Mzo3YgorICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAg
ICAgWDUwOXYzIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWlu
dHM6IAorICAgICAgICAgICAgICAgIENBOkZBTFNFCisgICAgICAgICAgICBOZXRzY2FwZSBDZXJ0
IFR5cGU6IAorICAgICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKKyAgICAgICAgICAgIE5ldHNjYXBl
IENvbW1lbnQ6IAorICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl
CisgICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAg
ICAgICAgODI6QTE6NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6
RTk6MDY6MDAKKyAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAor
ICAgICAgICAgICAgICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZG
OkEwOjY4OjRFOjFBOjM3OkZCOkU2OkYzCisKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEx
V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6
ZDc6N2Y6YTA6MWU6MGQ6MWE6ZWI6MmY6CisgICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1Ojhj
OjFiOmYwOjUxOmQ2OjUyOmU3OjhkOjg0OjNiOjlmOgorICAgICAgICBkODplZDoyMjo5YzphYTpi
ZDplZTo5Yjo5MDoxZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKKyAgICAgICAgYmE6Zjc6MTU6
Y2U6ZGE6NWY6ZGI6OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6CisgICAgICAgIGQz
OmYxOmJlOjUyOjRmOmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgorICAg
ICAgICBmOTowNTo1MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpk
NToKKyAgICAgICAgOTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6
MzQ6NjA6YjE6CisgICAgICAgIGNiOmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01J
SUNtRENDQWdHZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdK
S1VERU8KK01Bd0dBMVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1S
UXdFZ1lEVlFRREV3dHcKK2VYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpP
VEV3TWpNd056STFNRGhhTUVreEN6QUoKK0JnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1
YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXgKK0ZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5
amEyVjBNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKK2dRRGVFTTQ2V2dTa0hD
bVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKK0gvUjQz
N2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEy
ZHYKK0JJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJv
NEdQTUlHTU1Ba0cKK0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NH
U0FHRytFSUJEUVFmRmgxUGNHVnUKK1UxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRB
ZEJnTlZIUTRFRmdRVWdxRnppeFlNZk9UVFJwVVQKK2xSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0Zv
QVU2eFozRUpLN0tIQnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKK2h2Y05BUUVGQlFBRGdZRUFh
N05HS1FMZnNNaU94TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKKzJPMGluS3E5
N3B1UUhZU2pUQXZMNjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoK
K1l6dFI3YWVCK1FWUmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4
eTY0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
Y2VydC9jbGllbnRfY2VydC5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMx
YWYxMTM0OTlkNmE1YThiMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4Mgp6Y21ZK0ZYSCpq
aTdLTWAjMHRCZzJxekZpdFAhZjxQSEEtKk5Mb0BWX2djZjB0OFdCKCNJP3slWVJGeCp1YCUpeUoK
ejFuRyFLMzVicWhYclg3QWI5USVqZjg2dWx4JVp2LT4lSF5BYVpwd2VrUDQyWW59ZzZ2I091WUE4
R3RtdlZqU0lqCnpGcGg1VSgoWiVmQVN3U3VrWVhHcD1GKkEpMFJmaTxgJWVPZF5GcEJpLWYjczdm
aXI/PjJjVyRUIzsyKkdBUF9BZQp6MV8jbHJuMkUoZUtPTUo2TjI2WUpuZV9AaHB9U0tQWFVCN0ZN
ZXJffjV8MXFnQ3tUcW5uQnV2MSRrcHA1T0J6JUAKejxteVN3Kz9ZPl5qQVo0I1hBLX0qIVFzYnVP
aFcoc084MzY2KCQ7KDFBPm1vKE8tJXgoaG4oPXlaO3l+TkcjUVgxCnpnSGtTaV5eOGN2NFRUU0w5
dm41cVIoPl9EM2Ymb2MqandQZ0kjS0BRI0FzTClEO0JEJldiMmQrSTFeSjduPn1ZWgp6YkNYbzlm
T0BnIUBkV1lhMlYlfTspIXs8ekRjfChwdkpJYXhXN05kTyVPNmY+ciZhT3JwSGt7b19SOW1RNDd1
b2IKej9sPjl8bnxYM2BhZ3BeRztMd1hSNTwobHIrUjxjTDVqVFEoP15EPGtSbyFIX1QjcD95M2R9
XnRDWVYhOFJeTj99CnpDKiVYbTlMZWY+ajdobHItP2pIbHB8d2ZBJl5uLXM7PCF6JHFEMXhQcSE4
S1ExfX5kdXB3fkJNMWdzfkBBbztDcQp6d1JnVXwyXmR9Ti1nVjtAYVlrdThJJX18PGw2UU0/PWR+
RllwYkdGSDkmdk5nS1oqU3ljSVN8bWN1T1I/bCZDT3cKenN7emQ1em1lbHhxTjFEUXl7fVBnQj11
I2Z6SU5Qa0Iwb04qY2szdmArMXshWVhQfntFVkk3VnFoKn51YVdfflVDCnpsUjMzUlowNUhoa0Mt
MWVJcCktQFleeXZjLXxSJSEqOWR3N25mVyl5amNISVlmNnI9YUN0KFVoaS1GSm0ybntfKQp6JXt1
bEJVWFJgMjw+bHh9ZUdtU21SSj41b3RrQCgrcGpzUHE7NGhaNkZJS2wje254UCFBTCEyOF9fQVlm
bGBWZ3sKemxSUmFBUnxWbXkxX2BeYmJqWnJ6QXtRJGxZZWpJWWReQSRaPlcmanluTT1LYFRsNHdW
KTN3QGQxSmNgLTUtQ0dKCnp4cV5AOF8oITxaRjJxbGhfWn19bnI/UyY1KnorRkApdihaMUVJcztI
bX0hMX5NVEwhajFAYyRaSExSfVYoPTtebwp6ZFVwZnk/bz55em9sX3NpPDxVRUI9dChlZUJ6Z0pe
V1l3c0hDRzkzNHMkZClAcXFId2deeVpNe2BeakohOTt0cjYKemVvVWF5JiQrQnlHfE5eX3pvQUhe
dFlJZz5oYVl3fEB8YzMxXncoblVkN2soWW1FSjc2Vlk3OSsoQyhfJDsxTXNVCnpoaU5pK0I1Z1Ny
RGp8OT48QD82UiY4emJtOGJyP0MtTm4xY2soKzxOSyU3KTZ2LXdXcTQ9TV9UYnQxOTR6VSp5Rgp6
aDxvdDxIQldub3hCJTFrOShNMG88TmcpUmdIUygjP2VkRVFCIV58RmstXyhhYGJVQkxBSypofmF6
fiFfeHU9VDQKejZHNUstYVhKb3RIUWxFQzhDVTV8UnlNUnVRa1hFKT9edjYoaT1NdSk9JF5vJTAh
eXM1R1ZSYVhaMlMySDRJODNMCnpxKWJgfFB4eyg4OVczMnpxNHNxekgrQkFLUDl1YURFcEQ4SUlB
OUQtSDQ1QyVWVD9KSiNNYStCQGk5TVBkRi0jIwp6TnhGNVR1fWl6X2h6JFNLWjBfXyYhWXAxeWFk
VnpvY0BFeStCZWZKQ3RDU1ZkNShKeSg8QzZJY0NXfURtSHdDOFQKelJ7a3F2UkA/M3J6TEcyJFpk
Y3gtNXZGUkBkJFEjREQrfntkaEBtZF9lYEJCNipVWTZSKzReI1UlejRsdHg5QiU7CnpOVjh6KntH
Y0dNO2dxMlJ0eWRqe0gwUzBwI3o8NiU3bTMhJXs/TVF1YTxgQGU1Yk90YmQhRWM/R151eGY0Z3hj
SQp6LUY3U1RZaX52RGJtdkNaM05EY2ZIajg+QzlGVjZqZDF9KHBTd3JnR2sqUVo5UnI0KTYhc1Nr
VFVxYnhiYWVhMnUKendTYCR5b3NRKWViJW9fdkpPKiFBYGRSO1k0az4mcVl6dWEtWk5FPDNGRT1J
K2VTVTt4IXB0XkEzNT5vSW9QYEpxCnpabH4pckM2MEwra1N4QWdvUEV8ckdqVkA/MkF5KlhiPSRj
YGNfTDM9RXpoakJVRD1oMV80JWVCQ2ZsaiZFSFptTwp6c3sxYnxOdXg2KztLI0tCPVRrX3xpa3x7
KjAxZGskOUthNmBjUlU9TWNZaU4hay1hKTJQRDMxaDxjVHMla1Bob1oKek8pMndfVDktOHcyTk0m
JnEycGw0XktxfUNQZT1sOWhxJFc0IXQ7SkQlfFVKKDI4dkRiTSpMPlZGN2JXX1h7YjE0CnpHTnco
dz5FX1M5YDw7eFFsUGBAc2Q+Nm0zbjIpTCkwcCFYUnJEIzI1aUlrUkRzKTF1ak4lU3N5dyM2MnZk
diZBbAp6Y2RqLVlsIzYrQGEwV3NjVTwzYGd2VyQydy0oXkhmRVJ5eHNOc3E2bUswZDg7PzBMU2VO
aCVORWUwQllKNElMKGEKeiRXWG5kKVBCVzxBVGt7eSUyUzlHUGEycXlKVyReSkpfY29fWFAxbTlF
fWopUT9ebCQjKk1EeFA1fG1ZMXpjcTN5CnpiPUB6eUNYdWd3ZHtOang/aTI3ait6WE80KlY+fVpl
LXpCUXgpSHlud0xgTmooITl0KTU0ZE87elRWfi1PIztVOwp6TXdwMFBVLXVVTD8jIzhMLSkmdm1i
bkFtbiNAJmE+dj1jUH1FVVFKVndhRHc5VjwtSXdZdGlUOXcoVE1lYTIlRHkKenxBNDAkTjV1b2lR
RV5fe1MxLWlgcTVsdHRwZz5TRDRwYWZoZmxCfDZQRT4hPnNoV2tvRW1aaGcrfjBIcDwzS1RACno5
amskcU1DPTAmQmJrXmZSbzRmMzhKfmlXQ3x4R1AwYHdaM0YjazhnKklkTlkkR0YtQXg4XjxEckJe
ajI4WGI2cwp6Unw7VnZhciU8fFRaS34+MzBrRDMpVyRBRCModHRgI0B4N1E4T1lhcFRfSnlNMXZU
P2xieC0rX0YoSkYleVMwTyQKenBTI2x9dyowaj5ifU0zZTs0ST57cE1NPnMlYD9mU0FFX1FiYEFu
Pl9WIWtpfSQ5d01OOShmVTF1SkdtME1pN2hLCnpBNWwwZTF3VmNeJHFsPzVnbT44RXZCcFNhV2Y1
VElnM1pTYnVKaHA7YSUoWitrY3tjZHYxUHVYJGUyR0FOP0pmOAp6V0tOZ1M8KE0yRk5VYFJ4ZEJH
fWY9UzFyblEqZVIxMnFGX0MmJnBuQGB5JUN+TDleUV9aOWxoJkc9WHZHQyE0MTAKenluKTVvPSl4
MmlKWSteP15FTGpudEhIYH1LKXphP0k9fHYhJGhMMG4mR3p5cHphTHdOZGVNPU9qV3wtLT1tUl9q
Cnp5dD9+VnhfXzlCRXZjaEw/OWh1VW9iLTVuK3IxPzx4QGNnfTVhfFZ8RmNGUU8qZUlwd1pFbn5W
R0xlcXZTQFdrMgp6KSErRDMtO3s0QE9PKWIrYlFPIz0tRStCZU9AZiEzPGlUMG1iMnBiMzg4e0dJ
UmFyamRuVGklQD80cXd5I3E2MFkKenFpQXx7dDZvNDlFTTE4SiZ3OERBI3dRRERzRndOJEhHKk1U
TDIxQlFqKVlSYFc1TDtaZk1NPCpyTD1GSWd8MGJKCnpUOXI3RmxCTExeclYlMVVPITN8R0RFYU0h
akhQTHI/NVFCdUNDIVcpPmRyZl5SQ2BgN1lSWVooSz5pZTA+cEpkXgp6SldfSHslKV5jITY+bHw5
UDg/Yz1qKEI1N1lKejg/WHlRekU5dUdhfWRWMFBUcDMhO3AhU0YpfXQtaT5DPEVkSCsKek1LQVNu
ViMhJlNXZmR9MGRsalhzeVFmenNANmkwK2RxU0hKTH5GN35vdHwkSHdmK0YqMGpDSyp3NVdvRkBR
OWhOCnpobGslU3toNkM1N0NJMl81Ujk7ZjM7cC0xPkRVbipVXmVvR2pocW87KlIqJGtWRTAxSj5U
SlFSc3Y5b3omayEzegp6a1dUOyowUWUwTTNVQ0x3MEQ9SitmR2ZjRnZKVXxgVWRzS18zNHRUdkh7
ZiYtWThXRkdoP15QIVg1O3k9Rlp1RHMKZmZyV2swJU0oT0duVE1OPGgmcUB5TGREVV8mTWNBZj98
MWtNZWpVTm8KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tl
eS5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmFlODU4MzE4ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMx
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVt
CkBAIC0wLDAgKzEsMTUgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNY
Z0lCQUFLQmdRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNm
czEKK0p6cWlrbzRTWWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJ
Nm5pMXNrOWx2b0IKK2lONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkv
dUVzTGk1TVJ1RlJ6ZXdJREFRQUIKK0FvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4
VGxkYWZhNlh2YXdFWVVUUDBTNzd2LzFsbGcxWXYKK1VJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMv
WjNlMWZzb3Q1dERZc3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKK1FTbzdZRkNhanVIdEUrVy9n
ekYrVUhiZHp6WElEalFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKKzNVUjhmOG9l
a0VSd3NtRU1mOURINVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EK
K29nQU0rNE5YNFFKQkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0
YmxNSlE1T3EKK1FkT0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQ
eWxHM3VyY0MybWZReEJra1cKK1pDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0
OVVObXFjME4wZnBlMmZBZWhqM1VFQ1FRQ20KK0ZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6
M2Nia0I0QjNGY2hEbGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKK1FEazF0VUtvcnR4dlFaSmFBRDRC
QWtFQWhHT0hRcVBkNmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKK0NsUmlNbjJnOFNB
TGlJTDNCRGdHWEtjS0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQorLS0tLS1FTkQgUlNBIFBSSVZB
VEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OTA0NDE5MGY1OGJlNzc0NTYxNTIzYjNhN2ViOWNkZGFiYTgyMzg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9n
CkBAIC0wLDAgKzEsMjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
KworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUK
K1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9j
YWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2Ns
aWVudF9mb3JfdGVzdGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90
ZXN0aW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MGE2YWNkNTM3NjIyM2M2MDNhYmUyNjRiOTY3Nzk2ODMy
ZmI1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9m
b3JfdGVzdGluZy5weQpAQCAtMCwwICsxLDcxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGlu
Zy4KKworVGhpcyBtb2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcg
aGFuZHNoYWtlLCBmcmFtZQorc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50
LgorCitUaGlzIGlzIGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMg
Y29kZSBpbmRlcGVuZGVudCBmcm9tCittb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcu
IFN0cmVhbSBjbGFzcyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKK3Rlc3RpbmcuIFVzaW5nIHV0
aWwuaGV4aWZ5LCBldGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3Np
bmcKK2lzIGFsbG93ZWQuCisKK05vdGU6CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBl
LmcuLCB3ZSBjdXQgY29ybmVycyBpbiBoYW5kc2hha2UuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBlcnJubworaW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQg
c29ja2V0CitpbXBvcnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBoYXNobGliIGltcG9ydCBz
aGExCitmcm9tIHNpeCBpbXBvcnQgaXRlcmJ5dGVzCitmcm9tIHNpeCBpbXBvcnQgaW5kZXhieXRl
cworCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KKworREVGQVVMVF9QT1JUID0gODAKK0RFRkFVTFRfU0VDVVJFX1BP
UlQgPSA0NDMKKworIyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUg
bmV3IGZyYW1pbmcgZm9ybWF0CitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENPREVfQ0xP
U0UgPSAweDgKK09QQ09ERV9QSU5HID0gMHg5CitPUENPREVfUE9ORyA9IDB4YQorT1BDT0RFX1RF
WFQgPSAweDEKK09QQ09ERV9CSU5BUlkgPSAweDIKKworIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRz
aGFrZQorX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCitfQ09OTkVD
VElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKK1dFQlNPQ0tFVF9BQ0NF
UFRfVVVJRCA9IGInMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJworCisjIFN0
YXR1cyBjb2RlcworU1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FX
QVkgPSAxMDAxCitTVEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JU
RURfREFUQSA9IDEwMDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNf
QUJOT1JNQUxfQ0xPU1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFU
QSA9IDEwMDcKK1NUQVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0Vf
VE9PX0JJRyA9IDEwMDkKK1NUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAorU1RBVFVTX0lOVEVS
TkFMX0VORFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CisK
KyMgRXh0ZW5zaW9uIHRva2VucworX1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVy
bWVzc2FnZS1kZWZsYXRlJworCisKK2RlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJl
dHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfc2VjX29yaWdp
bl9oZWFkZXIob3JpZ2luKToKKyAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xy
XG4nICUgb3JpZ2luLmxvd2VyKCkKKworCitkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKKyAg
ICAjIDQuMSAxMy4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAw
MjAgU1BBQ0UgY2hhcmFjdGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVy
dGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICdPcmlnaW46
ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhv
c3QsIHBvcnQsIHNlY3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1w
dHkgc3RyaW5nLgorICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVy
dGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9y
dCA9IGhvc3QubG93ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5k
IC9wb3J0LyBpcyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3Bv
cnQvIGlzIG5vdCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAg
ICMgKDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJh
c2UtdGVuIGludGVnZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJl
IGFuZCBwb3J0ICE9IERFRkFVTFRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1cmUgYW5kIHBv
cnQgIT0gREVGQVVMVF9TRUNVUkVfUE9SVCkpOgorICAgICAgICBob3N0cG9ydCArPSAnOicgKyBz
dHIocG9ydCkKKyAgICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0
OiIsIGEgVSswMDIwIFNQQUNFCisgICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAv
ZmllbGRzLy4KKyAgICByZXR1cm4gJ0hvc3Q6ICVzXHJcbicgJSBob3N0cG9ydAorCisKKyMgVE9E
Tyh0eW9zaGlubyk6IERlZmluZSBhIGJhc2UgY2xhc3MgYW5kIG1vdmUgdGhlc2Ugc2hhcmVkIG1l
dGhvZHMgdG8gdGhhdC4KKworCitkZWYgcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6Cisg
ICAgcmVjZWl2ZWRfYnl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxl
IHJlbWFpbmluZyA+IDA6CisgICAgICAgIG5ld19yZWNlaXZlZF9ieXRlcyA9IHNvY2tldC5yZWN2
KHJlbWFpbmluZykKKyAgICAgICAgaWYgbm90IG5ld19yZWNlaXZlZF9ieXRlczoKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQg
YmVmb3JlIHJlY2VpdmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAnKHJl
cXVlc3RlZCAlZCBieXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUKKyAgICAgICAg
ICAgICAgICAobGVuZ3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICByZWNlaXZlZF9i
eXRlcy5hcHBlbmQobmV3X3JlY2VpdmVkX2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVu
KG5ld19yZWNlaXZlZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWRfYnl0ZXMp
CisKKworIyBUT0RPKHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xhc3Mg
ZGl2ZXJ0cyB0aGVzZSBtZXRob2RzLiBXZQorIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNlciBh
cyBzcGVjaWZpZWQgaW4gUkZDIDY0NTUuCisKKworZGVmIF9yZWFkX2ZpZWxkcyhzb2NrZXQpOgor
ICAgICMgNC4xIDMyLiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMs
IGluaXRpYWxseSBlbXB0eS4KKyAgICBmaWVsZHMgPSB7fQorICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGFuZCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlz
CisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgIyA0LjEg
MzQuIHJlYWQgL25hbWUvCisgICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKKyAgICAg
ICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyA0LjEgMzUu
IHJlYWQgc3BhY2VzCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3Bh
Y2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgorICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhz
b2NrZXQpCisgICAgICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgdmFsdWUgPSBf
cmVhZF92YWx1ZShzb2NrZXQsIGNoKQorICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJv
bSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisgICAg
ICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5n
IHZhbHVlICVyIGZvciBoZWFkZXIgJworICAgICAgICAgICAgICAgICclcicgJSAoY2gsIG5hbWUs
IHZhbHVlKSkKKyAgICAgICAgIyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxk
cy8gbGlzdCB0aGF0IGhhcyB0aGUgbmFtZQorICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcg
b2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAjIGFycmF5
IGFzIGEgVVRGLTggc3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZworICAg
ICAgICAjIG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFz
IGEgVVRGLTggYnl0ZQorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgZmllbGRzLnNldGRlZmF1
bHQobmFtZS5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5h
cHBlbmQodmFsdWUuZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRv
IHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKKyAgICByZXR1cm4gZmllbGRzCisKKworZGVmIF9yZWFk
X25hbWUoc29ja2V0KToKKyAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFy
cmF5cworICAgIG5hbWUgPSBiJycKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQuMSAzNC4g
cmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpCisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1l
ICVyJyAlIG5hbWUpCisgICAgICAgIGVsaWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAg
ICAgcmV0dXJuIG5hbWUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSAr
PSBjaAorCisKK2RlZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKKyAgICAjIDQuMSAzNS4gcmVhZCBh
IGJ5dGUgZnJvbSB0aGUgc2VydmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2ggPSByZWNl
aXZlX2J5dGVzKHNvY2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAorICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIGNoCisKKworZGVmIF9yZWFkX3ZhbHVl
KHNvY2tldCwgY2gpOgorICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFy
cmF5cworICAgIHZhbHVlID0gYicnCisgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2Vy
dmVyLgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgw
QQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGlu
ZyBoZWFkZXIgdmFsdWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgIGNoID0gcmVj
ZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisKKworZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6
CisKKyAgICBmaXJzdF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkKKyAgICBm
aW4gPSAoZmlyc3RfYnl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikg
JiAxCisgICAgcnN2MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3Rf
Ynl0ZSA+PiA0KSAmIDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNv
bmRfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgbWFzayA9IChzZWNv
bmRfYnl0ZSA+PiA3KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3
ZgorCisgICAgaWYgbWFzayAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ01hc2sgYml0
IG11c3QgYmUgMCBmb3IgZnJhbWVzIGNvbWluZyBmcm9tIHNlcnZlcicpCisKKyAgICBpZiBwYXls
b2FkX2xlbmd0aCA9PSAxMjc6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVj
ZWl2ZV9ieXRlcyhzb2NrZXQsIDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVu
cGFjaygnIVEnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPiAweDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQorICAgIGVsaWYgcGF5bG9hZF9s
ZW5ndGggPT0gMTI2OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVf
Ynl0ZXMoc29ja2V0LCAyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2so
JyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisKKyAgICByZXR1cm4gZmluLCByc3Yx
LCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCisKKworY2xhc3MgX1RMU1NvY2tl
dChvYmplY3QpOgorICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhd19zb2NrZXQpOgorICAgICAgICBzZWxmLl9zc2wgPSBzb2Nr
ZXQuc3NsKHJhd19zb2NrZXQpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAg
IHJldHVybiBzZWxmLl9zc2wud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXpl
PS0xKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xv
c2Uoc2VsZik6CisgICAgICAgICMgTm90aGluZyB0byBkby4KKyAgICAgICAgcGFzcworCisKK2Ns
YXNzIEh0dHBTdGF0dXNFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlv
biB3aWxsIGJlIHJhaXNlZCB3aGVuIHVuZXhwZWN0ZWQgaHR0cCBzdGF0dXMgY29kZSB3YXMKKyAg
ICByZWNlaXZlZCBhcyBhIHJlc3VsdCBvZiBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cyk6CisgICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNl
cHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVz
CisKKworY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBo
YW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSku
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucworCisgICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgorICAgICAgICAi
IiJIYW5kc2hha2UgV2ViU29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEV4
Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNl
bGYuX29wdGlvbnMucmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3Blbmlu
ZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKKyAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAg
ICBmaWVsZHMgPSBbXQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAg
ICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCisKKyAgICAgICAgZmllbGRz
LmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0aW9ucy5z
ZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy51c2VfdGxzKSkKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoK
KyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlv
bnMub3JpZ2luKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29y
aWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorCisgICAgICAgIG9yaWdpbmFsX2tl
eSA9IG9zLnVyYW5kb20oMTYpCisgICAgICAgIGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2lu
YWxfa2V5KQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlYy1XZWJTb2NrZXQtS2V5OiAl
cyAoJXMpJywga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3Jp
Z2luYWxfa2V5KSkKKyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2NrZXQtS2V5OiAl
c1xyXG4nICUga2V5LmRlY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMuYXBwZW5kKHUn
U2VjLVdlYlNvY2tldC1WZXJzaW9uOiAlZFxyXG4nICUgc2VsZi5fb3B0aW9ucy52ZXJzaW9uKQor
CisgICAgICAgICMgU2V0dGluZyB1cCBleHRlbnNpb25zLgorICAgICAgICBpZiBsZW4oc2VsZi5f
b3B0aW9ucy5leHRlbnNpb25zKSA+IDA6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2Vj
LVdlYlNvY2tldC1FeHRlbnNpb25zOiAlc1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJywgJy5qb2luKHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCisKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmll
bGRzKQorCisgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9z
b2NrZXQuc2VuZGFsbChmaWVsZC5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX3NvY2tl
dC5zZW5kYWxsKGInXHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3Bl
bmluZyBoYW5kc2hha2UgcmVxdWVzdCcpCisKKyAgICAgICAgZmllbGQgPSBiJycKKyAgICAgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQs
IDEpCisgICAgICAgICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6
CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09w
ZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCisKKyAgICAgICAgIyBX
aWxsIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yIHdoZW4gdGhlIGRlY29kZSBmYWlscworICAg
ICAgICBpZiBsZW4oZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoYidcclxuJyk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcycgJSBmaWVs
ZC5kZWNvZGUoJ0xhdGluLTEnKSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKGInW14gXSogKFteIF0q
KSAuKicsIGZpZWxkKQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ05vIEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpCisg
ICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCByZS5tYXRjaChiJ1swLTld
WzAtOV1bMC05XSQnLCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnSFRUUCBzdGF0dXMgY29kZSAlcyBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3Rh
dHVzIGxpbmU6ICVzJyAlCisgICAgICAgICAgICAgICAgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyks
IGZpZWxkLmRlY29kZSgnTGF0aW4tMScpKSkKKyAgICAgICAgaWYgY29kZSAhPSBiJzEwMSc6Cisg
ICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdF
eHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXMgaW4gc3RhdHVzIGxpbmU6
ICcKKyAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxk
LmRlY29kZSgnTGF0aW4tMScpKSwKKyAgICAgICAgICAgICAgICBpbnQoY29kZSkpCisgICAgICAg
IGZpZWxkcyA9IF9yZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCisgICAgICAgIGNoID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBB
CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXIn
ICUgY2gpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBy
ZXNwb25zZSBoZWFkZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICAjIENoZWNrIC9maWVsZHMv
CisgICAgICAgIGlmIGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1sndXBncmFkZSddKQorICAgICAgICBpZiBs
ZW4oZmllbGRzWydjb25uZWN0aW9uJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ011bHRpcGxlIENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKKyAgICAgICAgaWYgZmllbGRz
Wyd1cGdyYWRlJ11bMF0gIT0gJ3dlYnNvY2tldCc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ1VuZXhwZWN0ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVzJyAlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGRzWyd1cGdyYWRlJ11bMF0pCisgICAgICAgIGlmIGZpZWxkc1sn
Y29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQorCisgICAg
ICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6CisgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRl
cnMgZm91bmQ6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydzZWMt
d2Vic29ja2V0LWFjY2VwdCddKQorCisgICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNv
Y2tldC1hY2NlcHQnXVswXQorCisgICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgZGVjb2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKAorICAgICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdl
YlNvY2tldC1BY2NlcHQ6ICcgKyBhY2NlcHQpCisKKyAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNj
ZXB0KSAhPSAyMDoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3Qg
MjAtYnl0ZSBsb25nJykKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMt
V2ViU29ja2V0LUFjY2VwdDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHV0aWwuaGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkKKworICAgICAgICBvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQgPSBzaGExKGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0
KCkKKyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBT
ZWMtV2ViU29ja2V0LUFjY2VwdDogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlm
eShvcmlnaW5hbF9leHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIGlmIGFjY2VwdCAhPSBleHBl
Y3RlZF9hY2NlcHQuZGVjb2RlKCdVVEYtOCcpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjog
JXIgKGV4cGVjdGVkKSAhPSAlciAnCisgICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2Nl
cHQsIGV4cGVjdGVkX2FjY2VwdCkpCisKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVy
ID0gZmllbGRzLmdldCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgYWNjZXB0
ZWRfZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFy
c2VfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lv
bnNfaGVhZGVyKSkKKworICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8g
Y2hlY2sgaWYgdGhlcmUgaXMgYW55IHVucmVjb2duaXplZAorICAgICAgICAjIGV4dGVuc2lvbnMg
b3IgZXh0ZW5zaW9ucyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCisgICAgICAg
ICMgZXh0ZW5zaW9ucyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJz
LiBUaGV5IHdpbGwgYmUKKyAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgor
ICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAgICAgICAg
ICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OOgor
ICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZQorICAgICAgICAgICAgICAgIGlmIGNoZWNrZXI6CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrZXIoZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246
ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKKwor
CitjbGFzcyBXZWJTb2NrZXRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJGcmFtZSBwcm9jZXNzb3Ig
Zm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgc29ja2V0LCBoYW5kc2hha2UpOgorICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBo
YW5kc2hha2UKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgIyBGaWx0
ZXJzIGFwcGxpZWQgdG8gYXBwbGljYXRpb24gZGF0YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgorICAg
ICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2lu
Y29taW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUKKworICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0g
RmFsc2UKKworICAgIGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgorICAgICAgICAjIFRPRE8odHlv
c2hpbm8pOiBvcy51cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJ
ZgorICAgICAgICAjIHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGli
cmFyeSBjYWxsIHRoYXQgZ2VuZXJhdGVzCisgICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIHBzZXVkbyByYW5kb20gbnVtYmVyIHNlcXVlbmNlLgorICAgICAgICBtYXNraW5nX25vbmNl
ID0gb3MudXJhbmRvbSg0KQorICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KKyAgICAg
ICAgY291bnQgPSAwCisgICAgICAgIGZvciBjIGluIGl0ZXJieXRlcyhzKToKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQodXRpbC5wYWNrX2J5dGUoYyBeIGluZGV4Ynl0ZXMobWFza2luZ19ub25j
ZSwgY291bnQpKSkKKyAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2lu
Z19ub25jZSkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlc3VsdCkKKworICAgIGRlZiBzZW5k
X2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCisKKyAg
ICBkZWYgc2VuZF9kYXRhKHNlbGYsCisgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAg
ICAgICAgICAgICAgZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgbWFzaz1UcnVlLAorICAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAg
ICAgICAgICAgICAgICAgcnN2Mj0wLAorICAgICAgICAgICAgICAgICAgcnN2Mz0wKToKKyAgICAg
ICAgaWYgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcGF5bG9hZCA9IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkK
KworICAgICAgICBpZiBzZWxmLl9mcmFnbWVudGVkOgorICAgICAgICAgICAgb3Bjb2RlID0gT1BD
T0RFX0NPTlRJTlVBVElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJh
bWVfdHlwZQorCisgICAgICAgIGlmIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQg
PSBGYWxzZQorICAgICAgICAgICAgZmluID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi5fZnJhZ21lbnRlZCA9IFRydWUKKyAgICAgICAgICAgIGZpbiA9IDAKKworICAgICAgICBp
ZiBtYXNrOgorICAgICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIG1hc2tfYml0ID0gMAorCisgICAgICAgIGhlYWRlciA9IHV0aWwucGFja19ieXRl
KGZpbiA8PCA3IHwgcnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgb3Bjb2RlKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9
IGxlbihwYXlsb2FkKQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6CisgICAgICAg
ICAgICBoZWFkZXIgKz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkK
KyAgICAgICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6CisgICAgICAgICAgICBoZWFk
ZXIgKz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soCisgICAg
ICAgICAgICAgICAgJyFIJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsaWYgcGF5bG9hZF9s
ZW5ndGggPCAxIDw8IDYzOgorICAgICAgICAgICAgaGVhZGVyICs9IHV0aWwucGFja19ieXRlKG1h
c2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICchUScsIHBheWxv
YWRfbGVuZ3RoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdU
b28gbG9uZyBwYXlsb2FkICglZCBieXRlKScgJSBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgaWYg
bWFzazoKKyAgICAgICAgICAgIHBheWxvYWQgPSBzZWxmLl9tYXNrX2h5YmkocGF5bG9hZCkKKyAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoaGVhZGVyICsgcGF5bG9hZCkKKworICAgIGRlZiBz
ZW5kX2JpbmFyeShzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAg
c2VsZi5zZW5kX2RhdGEocGF5bG9hZCwgT1BDT0RFX0JJTkFSWSwgZW5kLCBtYXNrKQorCisgICAg
ZGVmIHNlbmRfdGV4dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAg
ICAgc2VsZi5zZW5kX2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIE9QQ09ERV9URVhULCBl
bmQsIG1hc2spCisKKyAgICBkZWYgX2Fzc2VydF9yZWNlaXZlX2RhdGEoc2VsZiwgcGF5bG9hZCwg
b3Bjb2RlLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMpOgorICAgICAgICAoYWN0dWFsX2ZpbiwgYWN0
dWFsX3JzdjEsIGFjdHVhbF9yc3YyLCBhY3R1YWxfcnN2MywgYWN0dWFsX29wY29kZSwKKyAgICAg
ICAgIHBheWxvYWRfbGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVhZGVyKHNlbGYuX3NvY2tldCkKKwor
ICAgICAgICBpZiBhY3R1YWxfb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignVW5leHBlY3RlZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkK
KworICAgICAgICBpZiBhY3R1YWxfZmluICE9IGZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignVW5leHBlY3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmluLCBhY3R1YWxfZmluKSkKKworICAgICAgICBp
ZiByc3YxIGlzIE5vbmU6CisgICAgICAgICAgICByc3YxID0gMAorCisgICAgICAgIGlmIHJzdjIg
aXMgTm9uZToKKyAgICAgICAgICAgIHJzdjIgPSAwCisKKyAgICAgICAgaWYgcnN2MyBpcyBOb25l
OgorICAgICAgICAgICAgcnN2MyA9IDAKKworICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSByc3Yx
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBl
Y3RlZCkgdnMgJXIgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2
MSwgYWN0dWFsX3JzdjEpKQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJzdjI6CisgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2
cyAlciAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1
YWxfcnN2MikpCisKKyAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2MzoKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChh
Y3R1YWwpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3Yz
KSkKKworICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXls
b2FkX2xlbmd0aCkKKworICAgICAgICBpZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2Zp
bHRlci5maWx0ZXIocmVjZWl2ZWQpCisKKyAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4o
cGF5bG9hZCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAg
J1VuZXhwZWN0ZWQgcGF5bG9hZCBsZW5ndGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAobGVuKHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKKworICAg
ICAgICBpZiBwYXlsb2FkICE9IHJlY2VpdmVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMg
JXIgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQorCisg
ICAgZGVmIGFzc2VydF9yZWNlaXZlX2JpbmFyeShzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1P
UENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3Yz
PU5vbmUpOgorICAgICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29k
ZSwgZmluLCByc3YxLCByc3YyLCByc3YzKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQo
c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wY29kZT1PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJzdjM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEo
cGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgX2J1aWxkX2Nsb3Nl
X2ZyYW1lKHNlbGYsIGNvZGUsIHJlYXNvbiwgbWFzayk6CisgICAgICAgIGZyYW1lID0gdXRpbC5w
YWNrX2J5dGUoMSA8PCA3IHwgT1BDT0RFX0NMT1NFKQorCisgICAgICAgIGlmIGNvZGUgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFz
b24uZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBib2R5ID0gYicn
CisgICAgICAgIGlmIG1hc2s6CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZSgx
IDw8IDcgfCBsZW4oYm9keSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZShsZW4oYm9keSkpICsgYm9keQor
ICAgICAgICByZXR1cm4gZnJhbWUKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJl
YXNvbik6CisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2J1aWxkX2Nsb3NlX2Zy
YW1lKGNvZGUsIHJlYXNvbiwgVHJ1ZSkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uo
c2VsZiwgY29kZSwgcmVhc29uKToKKyAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWls
ZF9jbG9zZV9mcmFtZShjb2RlLCByZWFzb24sIEZhbHNlKQorICAgICAgICBhY3R1YWxfZnJhbWUg
PSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKKyAgICAg
ICAgaWYgYWN0dWFsX2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAo
ZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2Zy
YW1lLCBhY3R1YWxfZnJhbWUpKQorCisKK2NsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKKyAg
ICAiIiJIb2xkcyBvcHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4i
IiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCisg
ICAgICAgIHNlbGYuc2VydmVyX2hvc3QgPSAnJworICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCisg
ICAgICAgIHNlbGYucmVzb3VyY2UgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEK
KyAgICAgICAgc2VsZi5zb2NrZXRfdGltZW91dCA9IDEwMDAKKyAgICAgICAgc2VsZi51c2VfdGxz
ID0gRmFsc2UKKyAgICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KKworCitkZWYgY29ubmVjdF9z
b2NrZXRfd2l0aF9yZXRyeShob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VfdGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0cnk9MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGVlcF9zZWM9MC4xKToK
KyAgICByZXRyeV9jb3VudCA9IDAKKyAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgorICAg
ICAgICB0cnk6CisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBz
LnNldHRpbWVvdXQodGltZW91dCkKKyAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkp
CisgICAgICAgICAgICBpZiB1c2VfdGxzOgorICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29j
a2V0KHMpCisgICAgICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
IGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKKyAg
ICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
ZXRyeV9jb3VudCA9IHJldHJ5X2NvdW50ICsgMQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAo
c2xlZXBfc2VjKQorCisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBDbGllbnQob2JqZWN0KToK
KyAgICAiIiJXZWJTb2NrZXQgY2xpZW50LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRp
b25zLCBoYW5kc2hha2UsIHN0cmVhbV9jbGFzcyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0
aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCisgICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9oYW5kc2hh
a2UgPSBoYW5kc2hha2UKKyAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNz
CisKKyAgICBkZWYgY29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVj
dF9zb2NrZXRfd2l0aF9yZXRyeShzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2Vy
dmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAg
ICAgc2VsZi5faGFuZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtID0gc2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNo
YWtlKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVk
JykKKworICAgIGRlZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIs
IGJvZHkpOgorICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0
ZXMoaGVhZGVyLCBib2R5KQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLAorICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICAgYmluYXJ5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcmF3
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKToKKyAgICAgICAgaWYgYmlu
YXJ5OgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwg
bWFzaykKKyAgICAgICAgZWxpZiByYXc6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9k
YXRhKG1lc3NhZ2UsIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF90ZXh0KG1lc3NhZ2UsIGVuZCwgbWFzaykKKworICAg
IGRlZiBhc3NlcnRfcmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgorICAgICAg
ICBpZiBiaW5hcnk6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmlu
YXJ5KHBheWxvYWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNz
ZXJ0X3JlY2VpdmVfdGV4dChwYXlsb2FkKQorCisgICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29k
ZT1TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0cmVh
bS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9z
ZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAgICAgICAg
c2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRl
ZiBjbG9zZV9zb2NrZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCisKKyAg
ICBkZWYgYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAg
ICAgICAgICByZWFkX2RhdGEgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCisg
ICAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJl
cXVlc3RlZCBsZW5ndGggJworICAgICAgICAgICAgKSA9PSAwOgorICAgICAgICAgICAgICAgIHJl
dHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVz
c2FnZSA9IGUKKyAgICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQn
LCAnV1NBRUNPTk5SRVNFVCddOgorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBp
biBkaXIoZXJybm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX251bWJl
ciA9PSBnZXRhdHRyKGVycm5vLCBlcnJvcl9uYW1lKSk6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBlCisg
ICAgICAgICAgICByYWlzZSBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25uZWN0aW9u
IGlzIG5vdCBjbG9zZWQgKFJlYWQ6ICVyKScgJSByZWFkX2RhdGEpCisKKworZGVmIGNyZWF0ZV9j
bGllbnQob3B0aW9ucyk6CisgICAgcmV0dXJuIENsaWVudChvcHRpb25zLCBXZWJTb2NrZXRIYW5k
c2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWFlZjUyZWNmMDE5N2Y3ZTU3ZjM0NmE3
MTU0ODI1MmEzODYxZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC9tb2NrLnB5CkBAIC0wLDAgKzEsMjI3IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1vY2tzIGZv
ciB0ZXN0aW5nLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
CitpbXBvcnQgc2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0
CitpbXBvcnQgc2l4CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0g
aW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1P
cHRpb25zCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitjbGFzcyBfTW9ja0Nvbm5C
YXNlKG9iamVjdCk6CisgICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5h
cGFjaGUubXBfY29ubi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlz
IHdyaXR0ZW4gdG8gYSAobW9jaykgbXBfY29ubi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQorICAgICAgICBzZWxmLnJlbW90
ZV9hZGRyID0gYidmYWtlX2FkZHJlc3MnCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Cisg
ICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuCisKKyAg
ICAgICAgZGF0YSBzaG91bGQgYmUgYnl0ZXMgd2hlbiB0b3VjaGluZyB0aGlzIG1ldGhvZCBtYW51
YWxseS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0
YSkKKworICAgIGRlZiB3cml0dGVuX2RhdGEoc2VsZik6CisgICAgICAgICIiIkdldCBieXRlcyB3
cml0dGVuIHRvIHRoaXMgbW9jay4iIiIKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5f
d3JpdGVfZGF0YSkKKworCitjbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJN
b2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRl
c3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4g
YXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRhKToKKyAgICAgICAgIiIiQ29uc3RydWN0
cyBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVhZF9kYXRhOiBi
eXRlcyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCisgICAg
ICAgICAgICBjYWxsZWQuCisgICAgICAgICIiIgorCisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19p
bml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCisgICAgICAg
IHNlbGYuX3JlYWRfcG9zID0gMAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAi
IiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgorCisgICAg
ICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAg
ICAgcmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZChi
J1xuJywgc2VsZi5fcmVhZF9wb3MpICsgMQorICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAg
ICAgICAgICAgZW5kX2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlYWRfdXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3Ro
KToKKyAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIi
IgorCisgICAgICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgor
ICAgICAgICAgICAgcmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYu
X3JlYWRfZGF0YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fcmVhZF91cF90byhlbmRfaW5kZXgpCisKKyAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5k
X2luZGV4KToKKyAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3Bvczpl
bmRfaW5kZXhdCisgICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4CisgICAgICAgIHJl
dHVybiBsaW5lCisKKworY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAg
ICAiIiJCbG9ja2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAg
VGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEg
KG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0
byBpdC4KKyAgICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBp
cyBubyBieXRlcyBhdmFpbGFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3F1ZXVl
ID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAg
ICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIK
KyAgICAgICAgbGluZSA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAg
ICAgICBjID0gc2VsZi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpCisg
ICAgICAgICAgICBpZiBjID09IG9yZChiJ1xuJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5
dGVzKGxpbmUpCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVy
cmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9
IGJ5dGVhcnJheSgpCisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAg
ICAgICAgIGRhdGEuYXBwZW5kKHNlbGYuX3F1ZXVlLmdldCgpKQorCisgICAgICAgIHJldHVybiBi
eXRlcyhkYXRhKQorCisgICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIi
IlB1dCBieXRlcyB0byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBieXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgZm9yIGJ5dGUgaW4gc2l4Lml0ZXJieXRlcyhieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9x
dWV1ZS5wdXQoYnl0ZSkKKworCitjbGFzcyBNb2NrVGFibGUoZGljdCk6CisgICAgIiIiTW9jayB0
YWJsZS4KKworICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBv
bmx5IHRoZSBtZXRob2RzIHVzZWQgYnkKKyAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KKyAgICAi
IiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShjb3B5X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29weV9mcm9tID0gbGlzdChj
b3B5X2Zyb20uaXRlbXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgor
ICAgICAgICAgICAgc2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZ2V0
aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYp
Ll9fZ2V0aXRlbV9fKGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtl
eSwgdmFsdWUpOgorICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtl
eS5sb3dlcigpLCB2YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9u
ZSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIo
KSwgZGVmX3ZhbHVlKQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTW9j
ayByZXF1ZXN0LgorCisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIi
IgorICAgIGRlZiBfX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICB1cmk9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgaGVhZGVyc19pbj17fSwKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlv
bj1Ob25lLAorICAgICAgICAgICAgICAgICBtZXRob2Q9J0dFVCcsCisgICAgICAgICAgICAgICAg
IHByb3RvY29sPSdIVFRQLzEuMScsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoK
KyAgICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVy
c19pbjogUmVxdWVzdCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlv
biB1c2VkIGZvciB0aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRo
b2QuCisgICAgICAgICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuCisKKyAgICAgICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9y
IGRldGFpbHMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBz
ZWxmLnVucGFyc2VkX3VyaSA9IHVyaQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0
aW9uCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19p
bikKKyAgICAgICAgIyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20g
dGVzdHMuICBUbyBhdm9pZCBuYW1lCisgICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0
dHBzKCksIGl0IGlzIG5hbWVkIGFzIHN1Y2guCisgICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNf
aHR0cHMKKyAgICAgICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW0oc2VsZiwgU3RyZWFtT3B0aW9u
cygpKQorICAgICAgICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYud3Nf
Y2xvc2VfcmVhc29uID0gTm9uZQorICAgICAgICBzZWxmLndzX3ZlcnNpb24gPSBjb21tb24uVkVS
U0lPTl9IWUJJX0xBVEVTVAorICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQorCisgICAg
ZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVl
c3QgaXMgb3ZlciBTU0wuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXworCisKK2Ns
YXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6CisgICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlz
cGF0Y2hlci4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9fZXh0
cmFfaGFuZHNoYWtlX2NhbGxlZCA9IEZhbHNlCisKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2Nh
bGxlZCA9IFRydWUKKworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6
CisgICAgICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVu
X2FsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNjIyMDE1NTM5ZTQ3ZmRmNTE4ODc1MTU4ZjZiZDZmMzY5OTRm
YWJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5
CkBAIC0wLDAgKzEsODcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJSdW4gYWxsIHRlc3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworVGhpcyBzdWl0
ZSBpcyBleHBlY3RlZCB0byBiZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5
LCBpLmUuIHRoZQorZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBl
dGMuCisKK1RvIGNoYW5nZSBsb2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVs
IG9wdGlvbi4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1Zwor
CitUbyBwYXNzIGFueSBvcHRpb24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBv
cHRpb25zIGFmdGVyICctLScuIEZvcgorZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUg
dGVzdCBydW5uZXIgdmVyYm9zZS4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1s
ZXZlbCBkZWJ1ZyAtLSAtdgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9y
dCByZQoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK19URVNUX01PRFVMRV9QQVRURVJO
ID0gcmUuY29tcGlsZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9k
dWxlcyhkaXJlY3RvcnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1l
IGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVf
UEFUVEVSTi5zZWFyY2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAg
bW9kdWxlX25hbWVzLmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25h
bWVzCisKKworZGVmIF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIo
KQorICAgIHJldHVybiBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICBfbGlzdF90
ZXN0X21vZHVsZXMob3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLicp
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IG9wdHBhcnNl
Lk9wdGlvblBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWxvZy1s
ZXZlbCcsCisgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisg
ICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnLAorICAg
ICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3In
LCAnY3JpdGljYWwnXSkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQor
ICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9u
cy5sb2dfbGV2ZWwudXBwZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUo
bGV2ZWxuYW1lKXMgJShhc2N0aW1lKXMgJworICAgICAgICAgICAgICAgICAgICAgICAgJyUoZmls
ZW5hbWUpczolKGxpbmVubylkXSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdl
KXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQorICAgIHVu
aXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBdXSArIGFy
Z3MpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9zZXRfc3lzX3BhdGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0
aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZmNlN2IzNGI2NzUxZDYzNWRjZGE2ZTBkNGE1NzExOTUxYTBhMzNi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgu
cHkKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb25maWd1cmF0aW9uIGZv
ciB0ZXN0aW5nLgorCitUZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBtb2R1bGUgYmVmb3Jl
IG1vZF9weXdlYnNvY2tldC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKKyMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0
b3J5IHRvIHN5cy5wYXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgorc3lz
LnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwg
Jy4uJykpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rp
c3BhdGNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNjM5ODBmMjU4MWY5ZjYxMzZlODVkYzE2YmI2NGNjYmUz
NzNkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlz
cGF0Y2gucHkKQEAgLTAsMCArMSwyOTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRl
c3QKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1v
ZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNw
YXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSB0ZXN0IGlt
cG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlwCisKK19URVNUX0hBTkRMRVJTX0RJ
UiA9IG9zLnBhdGguam9pbigKKyAgICBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3Rk
YXRhJywgJ2hhbmRsZXJzJykKKworX1RFU1RfSEFORExFUlNfU1VCX0RJUiA9IG9zLnBhdGguam9p
bihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInKQorCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkaXNwYXRjaCBtb2R1bGUu
IiIiCisgICAgZGVmIHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdc
XCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgn
L2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxp
emVfcGF0aCgnXFxhXFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAg
ICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdc
XCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQor
CisgICAgZGVmIHRlc3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZXIgPSBkaXNw
YXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAgICAgICAg
IyBQeXRob24gYnVpbHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlh
IHJlYWxwYXRoKCkuCisgICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3Zp
ZGVkIHBhdGggdXNpbmcgcmVhbHBhdGgoKSBhbmQgdXNlcworICAgICAgICAjIHRoZSBwYXRoIGlu
Y2x1ZGluZyBhIGRyaXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCisgICAgICAgIG9zX3Jv
b3QgPSBvcy5wYXRoLnJlYWxwYXRoKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gn
LCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnL2MvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gu
cHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dz
aC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19y
ZXNvdXJjZV9jb252ZXJ0ZXIoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9w
YXRoKCdhL2IvaF93c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2Ny
ZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnL2gnLCBjb252ZXJ0ZXIoZGlz
cGF0Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9iLy4uL2IvaF93c2gucHknKSkpCisKKyAgICAgICAg
Y29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigK
KyAgICAgICAgICAgICcvYS8uLi9hL2IvLi4vYi8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNv
bnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidc
YVxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCAr
IHInYVxiXGhfd3NoLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVy
dGVyKG9zX3Jvb3QgKyByJ2EvYi9oX3dzaC5weScpKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRl
X2hhbmRsZXJfZmlsZV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBsaXN0KAorICAgICAg
ICAgICAgZGlzcGF0Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExF
UlNfRElSKSkKKyAgICAgICAgcGF0aHMuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
OCwgbGVuKHBhdGhzKSkKKyAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwK
KyAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gu
cHknKSwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmln
aW5fY2hlY2tfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExF
UlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3Ry
YW5zZmVyX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJT
X0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAorICAgICAg
ICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCisgICAgICAgICAg
ICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICBdCisgICAg
ICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVm
IHRlc3Rfc291cmNlX2hhbmRsZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnZGVmJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2Zp
bGUoCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KTpwYXNzXG4nCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEocmVxdWVzdCk6cGFzc1xuJykpCisKKyAgICBkZWYgdGVzdF9zb3VyY2Vfd2FybmluZ3Mo
c2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hB
TkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgd2FybmluZ3MgPSBkaXNwYXRjaGVyLnNvdXJjZV93
YXJuaW5ncygpCisgICAgICAgIHdhcm5pbmdzLnNvcnQoKQorICAgICAgICBleHBlY3RlZF93YXJu
aW5ncyA9IFsKKyAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihfVEVT
VF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSkKKyAgICAgICAgICAgICArICc6IHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAg
KG9zLnBhdGgucmVhbHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hB
TkRMRVJTX0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpCisgICAgICAgICAgICAg
KyAnOiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisg
ICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAnOiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAg
IChvcy5wYXRoLnJlYWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9I
QU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jvbmdf
dHJhbnNmZXJfc2lnX3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoNCwgbGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwg
aW4gemlwKGV4cGVjdGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5k
c2hha2Uoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9U
RVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVl
c3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAg
ICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKKyAgICAgICAgZGlz
cGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhj
ZXB0aW9uLgorCisgICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBs
ZS5jb20nCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBI
YW5kc2hha2VFeGNlcHRpb24gd2l0aCA0MDMgc3RhdHVzJykKKyAgICAgICAgZXhjZXB0IGhhbmRz
aGFrZS5IYW5kc2hha2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNDAzLCBlLnN0YXR1cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKKworICAgIGRl
ZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9
IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBy
ZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2Ug
PSAnL2Fib3J0X2J5X3VzZXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5B
Ym9ydGVkQnlVc2VyRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRj
aGVyLmRvX2V4dHJhX2hhbmRzaGFrZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVy
X2RhdGEoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9U
RVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVx
dWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgw
M1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwor
ICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AxJworICAgICAgICBkaXNwYXRjaGVyLnRy
YW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIGInb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAx
JworICAgICAgICAgICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAg
ICAgICAgICAgY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQor
ICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCisgICAgICAgIHJlcXVl
c3Qud3NfcHJvdG9jb2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxh
aW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKKyAgICAgICAgICAgIGIn
XHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKwor
ICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rp
b249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluPycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9
IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2Fs
bGVkIGZvciAvc3ViL3BsYWluPywgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhl
OCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1ZXN0
ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29u
bihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcv
c3ViL3BsYWluP3E9dicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluP3E9diwgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfbm9faGFuZGxlcihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3Bh
dGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4g
WworICAgICAgICAgICAgICAgICcvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLCAnL3N1Yi9u
b193c2hfYXRfdGhlX2VuZCcsCisgICAgICAgICAgICAgICAgJy9kb2VzL25vdC9leGlzdCcKKyAg
ICAgICAgXToKKyAgICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rp
b249bW9jay5Nb2NrQ29ubihiJycpKQorICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9
IHJlc291cmNlCisgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJworICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1
ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgICAgICBleGNlcHQgZGlz
cGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc3RyKGUpLmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKKyAgICAgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0
X3RyYW5zZmVyX2RhdGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGRpc3BhdGNo
ZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAg
ICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGIn
JykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJh
bnNmZXInCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAg
ICAgc2VsZi5mYWlsKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgICAgIHN0cihlKS5maW5kKCdJbnRlbnRp
b25hbCcpICE9IC0xLAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMn
ICUgZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6CisgICAgICAg
IGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9u
ZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0
LndzX3Jlc291cmNlID0gJy9hYm9ydF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rf
c2Nhbl9kaXIoc2VsZik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNU
X0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5f
Y2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoCisgICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGlu
IGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNl
bGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19E
SVIsIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
L29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4g
ZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1Yi9w
bGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVzdF9zY2FuX3N1
Yl9kaXJfYXNfcm9vdChzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIo
X1RFU1RfSEFORExFUlNfU1VCX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX1RFU1RfSEFORExFUlNfU1VCX0RJUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBs
ZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcv
b3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgKKyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4g
ZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9zdWIv
cGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJy9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9t
YXApCisKKyAgICBkZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6CisgICAg
ICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCisgICAgICAgIGRp
c3BhdGNoLkRpc3BhdGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSworICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guRGlzcGF0Y2hl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EvYi9jJywgJ2EvYicpCisKKyAgICBkZWYg
dGVzdF9yZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2gu
RGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIGRpc3AuYWRkX3Jl
c291cmNlX3BhdGhfYWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoNSwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3Ry
YW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCcvc3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25v
dC1leGlzdCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5k
dG9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ1ZDI5YzY3ZGRmMDdiM2YxMjMyNDU5NzdmOTVjZmUwMTQ4
YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0
b2VuZC5weQpAQCAtMCwwICsxLDYzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBz
dGFuZGFsb25lLnB5LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29j
a2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1
bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2Nh
dGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9y
X3Rlc3RpbmcKKworIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIg
dG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKK19HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScK
KworX1NFUlZFUl9XQVJNVVBfSU5fU0VDID0gMC4yCisKKworIyBUZXN0IGJvZHkgZnVuY3Rpb25z
CitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3Qo
KQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlKCd0ZXN0JykKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKKyAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQorCisgICAgY2xpZW50LnNlbmRf
Y2xvc2UoKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfYmluYXJ5KGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50
LnNlbmRfbWVzc2FnZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5hc3NlcnRf
cmVjZWl2ZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2Uo
YidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoYidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKwor
ICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2Uo
KQorCisgICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hv
X2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVj
dCgpCisKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAgICBjbGllbnQuYXNzZXJ0
X3JlY2VpdmUoJ3Rlc3QnKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZShfR09PREJZRV9NRVNT
QUdFKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShfR09PREJZRV9NRVNTQUdFKQorCisgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisK
KyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hl
Y2tfcHJvY2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uKGNsaWVudCwgY29kZSwgcmVhc29uKToK
KyAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9jbG9zZShjb2RlLCByZWFz
b24pCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAg
IGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfdW5tYXNrZWRfZnJh
bWVfY2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAg
Y2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcsIG1hc2s9RmFsc2UpCisgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1Is
ICcnKQorCisgICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworY2xhc3Mg
RW5kVG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBm
b3IgZW5kLXRvLWVuZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCisg
ICAgc2VydmVyIGFzIGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUg
Y2xpZW50X2Zvcl90ZXN0aW5nCisgICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBi
ZWhhdmVzIGNvcnJlY3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKKyAgICBoYW5kc2hha2UgYW5k
IGZyYW1lcyBvdmVyIGEgVENQIGNvbm5lY3Rpb24uCisgICAgIiIiCisgICAgZGVmIHNldFVwKHNl
bGYpOgorICAgICAgICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCisgICAgICAgIHNlbGYudG9w
X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKKyAg
ICAgICAgb3MucHV0ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBh
dGgpKQorICAgICAgICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxm
LnRvcF9kaXIsICdtb2RfcHl3ZWJzb2NrZXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3RhbmRhbG9uZS5weScpCisgICAgICAgIHNlbGYuZG9jdW1l
bnRfcm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFtcGxlJykKKyAgICAgICAg
cyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAg
ICAgICAgKF8sIHNlbGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBzLmNs
b3NlKCkKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVu
dE9wdGlvbnMoKQorICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9z
dCcKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKKyAg
ICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKKworICAgICAgICBzZWxmLl9v
cHRpb25zLnNlcnZlcl9wb3J0ID0gc2VsZi50ZXN0X3BvcnQKKworICAgICMgVE9ETyh0eW9zaGlu
byk6IFVzZSB0ZWFyRG93biB0byBraWxsIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX3J1bl9weXRo
b25fY29tbWFuZChzZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToK
KyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1h
bmRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN0ZG91dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKKworICAgIGRlZiBfcnVuX3Nl
cnZlcihzZWxmKToKKyAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgIHNlbGYuc3RhbmRhbG9u
ZV9jb21tYW5kLCAnLUgnLCAnbG9jYWxob3N0JywgJy1WJywgJ2xvY2FsaG9zdCcsCisgICAgICAg
ICAgICAnLXAnLAorICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1QJywKKyAgICAg
ICAgICAgIHN0cihzZWxmLnRlc3RfcG9ydCksICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdAorICAg
ICAgICBdCisKKyAgICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9n
Z2VyIGJ5IHRlc3QgcnVubmVyLgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkKKyAgICAgICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwo
KQorICAgICAgICBpZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6CisgICAgICAgICAgICBh
cmdzLmFwcGVuZCgnLS1sb2ctbGV2ZWwnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2lu
Zy5nZXRMZXZlbE5hbWUobG9nX2xldmVsKS5sb3dlcigpKQorCisgICAgICAgIHJldHVybiBzZWxm
Ll9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3RkZXJyPXNlbGYuc2VydmVyX3N0ZGVycikKKwor
ICAgIGRlZiBfY2xvc2Vfc2VydmVyKHNlbGYsIHNlcnZlcik6CisgICAgICAgICIiIgorCisgICAg
ICAgIFRoaXMgbWV0aG9kIG1pbWljcyBQb3Blbi5fX2V4aXRfXyB0byBncmFjZWZ1bGx5IGtpbGwg
dGhlIHNlcnZlciBwcm9jZXNzLgorICAgICAgICBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIG1haW50
YWluIGNvbXB0YWliaWxpdHkgYmV0d2VlbiBweXRob24gMiBhbmQgMywKKyAgICAgICAgc2luY2Ug
UG9wZW4gaW4gcHl0aG9uIDIgZG9lcyBub3QgaGF2ZSBfX2V4aXRfXyBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgIiIiCisgICAgICAgIHNlcnZlci5raWxsKCkKKworICAgICAgICBpZiBzZXJ2ZXIuc3Rk
b3V0OgorICAgICAgICAgICAgc2VydmVyLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZl
ci5zdGRlcnI6CisgICAgICAgICAgICBzZXJ2ZXIuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgaWYg
c2VydmVyLnN0ZGluOgorICAgICAgICAgICAgc2VydmVyLnN0ZGluLmNsb3NlKCkKKworICAgICAg
ICBzZXJ2ZXIud2FpdCgpCisKKworY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RC
YXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0
VXAoc2VsZikKKworICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0
ZXN0X2Z1bmN0aW9uLCBvcHRpb25zKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZl
cigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21l
IGxvZ2ljIHRvIHBvbGwgdGhlIHNlcnZlciB1bnRpbCBpdAorICAgICAgICAgICAgIyBiZWNvbWVz
IHJlYWR5CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0
aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3Nl
X3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2
ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKKyAg
ICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBz
ZWxmLl9vcHRpb25zKQorCisgICAgZGVmIF9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qoc2Vs
Ziwgb2ZmZXIsIHJlc3BvbnNlX2NoZWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdF9mdW5jdGlvbik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2
ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQ
X0lOX1NFQykKKworICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zICs9IG9mZmVy
CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZSA9IHJl
c3BvbnNlX2NoZWNrZXIKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5j
cmVhdGVfY2xpZW50KHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0X2Z1bmN0
aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCkKKworICAgICAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQor
ICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0
KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2
ZXIpCisKKyAgICBkZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYs
IHRlc3RfZnVuY3Rpb24sIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFzb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9T
RUMpCisKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xp
ZW50KHNlbGYuX29wdGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbihjbGllbnQsIGNvZGUsIHJlYXNvbikKKyAgICAgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5faHR0
cF9mYWxsYmFja190ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6CisgICAgICAgIHNlcnZlciA9
IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVw
KF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zv
cl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdD
b3VsZCBub3QgY2F0Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCisgICAgICAgICAgICBleGNlcHQg
Y2xpZW50X2Zvcl90ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4
cGVjdGVkIGV4Y2VwdGlvbicpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAg
IGNsaWVudC5jbG9zZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2Vs
Zi5fY2xvc2Vfc2VydmVyKHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAg
ICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0
X2VjaG9fYmluYXJ5KHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9iaW5hcnkpCisKKyAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShz
ZWxmKToKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhf
Z29vZGJ5ZSkKKworICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgorICAgICAgICBz
ZWxmLl9ydW5fdGVzdChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQorCisgICAgZGVm
IHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBz
cGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4
YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVz
c2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9i
aW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAg
ICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAg
IHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hl
Y2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2Fn
ZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9w
ZXJtZXNzYWdlX2RlZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9m
dW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFt
ZXMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAg
ICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xpZW50Ll9z
dHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kPUZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNl
bmRfZGF0YShiJ1x4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKKyAgICAgICAgICAgIGNs
aWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4
ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisg
ICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0
X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRl
cik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBw
YXJhbWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1l
dGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisg
ICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgor
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRo
ZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRf
ZGF0YShiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGll
bnQuX3N0cmVhbS5zZW5kX2RhdGEoYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAg
ICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAg
ICBiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29k
ZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0x
KQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAg
ICAgICAgICAgICAgIGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgIG9w
Y29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2
MT0xKQorCisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2Vy
KHBhcmFtZXRlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
XSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1l
c3NhZ2VfZGVmbGF0ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0
aW9uKQorCisgICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
KGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgor
ICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4
YzlceDA3XHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4
ZjJceDAwXHgxMVx4MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0
X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcsCisgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENP
REVfVEVYVCwKKyAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4
Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90
ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAg
ICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
X2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVy
Lm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXInLCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9f
Y29udGV4dF90YWtlb3ZlciddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9m
dW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3ByZWZlcmVu
Y2Uoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAg
ICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNs
aWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBj
bGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xp
ZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3Nl
KCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUo
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1l
dGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAg
ICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwgcmVzcG9u
c2VfY2hlY2tlciwKKyAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9l
Y2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVz
IGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhc
eGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0
YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRf
cmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAg
ICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAg
ICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAg
ICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVz
cG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
cGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJz
KCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsKKyAgICAg
ICAgICAgICdwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcK
KyAgICAgICAgICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICAgICAgXSwgcmVz
cG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVz
c2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAg
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9j
bG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAg
ICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQor
CisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAg
IFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwK
KyAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYg
dGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19i
aXRzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAg
ICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
X2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVz
c2FnZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rl
c3QoCisgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3df
Yml0cz0zMDAwMDAwJ10sCisgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0
aW9uKQorCisgICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmlu
ZWRfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ug
b2YgcGVybWVzc2FnZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9k
ZWZsYXRlX3Rlc3QoWydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVu
Y3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNl
bGYpOgorICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAg
c2VsZi5fcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBf
ZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5z
dW5zdW4nKQorCisgICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6
CisgICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJworICAgICAgICBzZWxm
Ll9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKKyAgICAgICAgICAgIF9lY2hv
X2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCisKKyAgICBk
ZWYgdGVzdF9jbG9zZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMg
dGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJvciBz
dGF0dXMKKyAgICAgICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNvbWUg
cHJvdG9jb2wgZXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgorICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAjIElu
dGVybWVkaWF0ZSBmcmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRh
dGlvbgorICAgICAgICAgICAgIyBmcmFtZS4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1l
X29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4ODBceDgwJywgJycpCisgICAgICAgICAgICBjbGllbnQu
YXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
LlNUQVRVU19QUk9UT0NPTF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1
bmN0aW9uKQorCisgICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6
CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdp
dGggdW5zdXBwb3J0ZWQgb3BlcmF0aW9uCisgICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNs
aWVudCBzZW5kcyBkYXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCisgICAgICAgIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KKyAgICAgICAgICAgIGNs
aWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4OTFceDgwJywgJycpCisgICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlk
X2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBj
bG9zZSBmcmFtZSB3aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAorICAgICAgICBkYXRhIHN0YXR1
cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFp
bmluZworICAgICAgICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KKyAgICAgICAgIiIiCisgICAg
ICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVj
dCgpCisKKyAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5n
LgorICAgICAgICAgICAgY2xpZW50LnNlbmRfbWVzc2FnZShiJ1x4ODAnLCByYXc9VHJ1ZSkKKyAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBj
bGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBKQorCisg
ICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9z
ZV9vbl9pbnRlcm5hbF9lbmRwb2ludF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhh
dCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRwb2ludAor
ICAgICAgICBlcnJvciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJh
dGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcv
aW50ZXJuYWxfZXJyb3InCisKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAg
ICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVj
ZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lO
VEVSTkFMX0VORFBPSU5UX0VSUk9SKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVu
Y3Rpb24pCisKKyAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFs
aWQgYWJzb2x1dGUgdXJpIGhhbmRsaW5nIGxpa2UKKyAgICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1
bm1hdGNoIGFuZCBpbnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBvcnQKKyAg
ICAjIG51bWJlcikuCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAg
ICIiIlRlc3RzIGFic29sdXRlIHVyaSByZXF1ZXN0LiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBz
ZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6
JWQvZWNobycgJSBvcHRpb25zLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYuX3J1bl90ZXN0X3dp
dGhfY2xpZW50X29wdGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQorCisgICAg
ZGVmIHRlc3Rfb3JpZ2luX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBodHRwIGZhbGxi
YWNrIG9uIG9yaWdpbiBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9v
cHRpb25zCisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAg
ICAgIyBTZXJ2ZXIgc2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxsYmFjay4g
VGhpcyB3YXJuaW5nCisgICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxvd2luZyBw
aXBlIGRpc3Bvc2VzIHdhcm5pbmcgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVy
ciA9IHN1YnByb2Nlc3MuUElQRQorICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0
KG9wdGlvbnMsIDQwMykKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6CisgICAg
ICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIiIgorCisg
ICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9
IDk5CisgICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAwKQor
CisKK2NsYXNzIEVuZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgor
ICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxm
KQorCisgICAgZGVmIF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBl
Y3RlZCwgc3Rkb3V0ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycmRhdGEpOgorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRm
LTgiKQorICAgICAgICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ1VuZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAg
ICAgaWYgc3RkZXJyZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignVW5leHBlY3RlZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKKworICAgIGRlZiB0
ZXN0X2V4YW1wbGVfZWNob19jbGllbnQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhl
IGVjaG9fY2xpZW50LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgorCisg
ICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xp
ZW50X2NvbW1hbmQgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWNob19jbGllbnQucHknKQor
CisgICAgICAgICAgICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMu
CisgICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQgY2xvc2VcbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdSZWN2IGFja1xuJykKKworICAgICAgICAg
ICAgYXJncyA9IFtjbGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVy
X3BvcnQpXQorICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFy
Z3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRl
cnJkYXRhID0gY2xpZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4
YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRl
cnJkYXRhKQorCisgICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2gg
ZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggaXMgdXNlZC4KKyAgICAgICAgICAgICMgVG8gaGFuZGxl
IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCisg
ICAgICAgICAgICAjIGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBp
cyBjb3JyZWN0bHkgc2V0LgorICAgICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0Cisg
ICAgICAgICAgICBhcmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAn
LAorICAgICAgICAgICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy1tJywg
YmlnX21lc3NhZ2UKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1
bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAg
ICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAg
ICAgICBleHBlY3RlZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5SZWN2IGFj
a1xuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19tZXNzYWdl
KSkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGV4
cGVjdGVkLCBzdGRvdXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkZXJyZGF0YSkKKworICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJt
ZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAg
ICAgICAgICBjbGllbnRfY29tbWFuZCwgJy1wJywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCksICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnCisgICAgICAg
ICAgICBdCisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJn
cywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVy
cmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhh
bXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3RhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVy
cmRhdGEpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIo
c2VydmVyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFp
bigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X2V4dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0
ZW5zaW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWExMTE4ODhiZTkwMDViZDdiNjg0MzY2YWViZmQxZDkx
NGY0YTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4
dGVuc2lvbnMucHkKQEAgLTAsMCArMSwxOTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIwor
IyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCisKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2lt
cG9ydCB6bGliCisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxv
Y2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZXh0ZW5zaW9ucworCisKK2Ns
YXNzIEV4dGVuc2lvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0
IGZvciBub24tY2xhc3MgbWV0aG9kcyBpbiBleHRlbnNpb25zLnB5IiIiCisgICAgZGVmIHRlc3Rf
cGFyc2Vfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywg
J2Zvb2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnIDggJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3df
Yml0cywgJzAwMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0
ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykK
KworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJzkuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKKworICAgICAgICBzZWxm
LmFzc2VydFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnLTgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnMTYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
JzEwMDAwMDAwJykKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
clBhcnNpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBj
aGVja2luZyB0aGF0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcwor
ICAgIGdpdmVuIGV4dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRl
ZiB0ZXN0X3JlZ2lzdHJ5KHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdl
dF9leHRlbnNpb25fcHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5j
ZShwcm9jZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfbWluaW1h
bF9vZmZlcihzZWxmKToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJv
Y2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoemxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92
ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKKyAg
ICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1k
ZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2lu
ZG93X2JpdHMnLCAnMTAnKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3Nh
Z2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICByZXNwb25z
ZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRv
d19iaXRzKQorCisgICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRv
d19iaXRzKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignc2VydmVyX21heF93aW5kb3dfYml0cycsICcwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKSkKKworICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRf
dmFsdWUoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVy
KCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKSkKKworICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxm
KToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9u
cy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcics
IE5vbmUpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVy
cygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0
ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2Nv
bnRleHRfdGFrZW92ZXJfd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFy
YW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2Jh
cicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93
aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0
ZXIuYWRkX3BhcmFtZXRlcignZm9vJywgJ2JhcicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVu
c2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCisKKworY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGlu
Z1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5n
IHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCisgICAgYSBy
ZXNwb25zZSBiYXNlZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCisgICAgIiIiCisg
ICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAg
IHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19i
aXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisgICAgICAgIHByb2Nlc3Nvci5zZXRf
Y2xpZW50X21heF93aW5kb3dfYml0cygxMCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVy
bWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRlZiB0ZXN0X3Jlc3Bv
bnNlX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2VsZik6
CisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IoCisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJt
ZXNzYWdlLWRlZmxhdGUnKSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRv
d19iaXRzKDEwKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKKworICAgIGRl
ZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToK
KyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIoVHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0
ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2Ns
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93
aXRoX2ZhbHNlX2Zvcl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAg
ICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykp
CisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihGYWxz
ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9u
c2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRf
cGFyYW1ldGVycygpKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0
ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZTIyNzhkZmU2NTAxOWQ3NjU5NDg5YjUzOGZj
Yzg1YWQ1N2Q0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlLnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUu
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5p
dHRlc3QKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRl
IG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBp
bXBvcnQgRXh0ZW5zaW9uUGFyYW1ldGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1w
b3J0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1v
biBpbXBvcnQgZm9ybWF0X2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBp
bXBvcnQgcGFyc2VfZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKKworCitjbGFzcyBWYWxpZGF0
ZVN1YnByb3RvY29sVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBm
b3IgdmFsaWRhdGVfc3VicHJvdG9jb2wgbWV0aG9kLiIiIgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRl
X3N1YnByb3RvY29sKHNlbGYpOgorICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgorICAgICAgICB2
YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9j
b2woJ1NhbXBsZScpCisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJv
dG9jb2wnKQorCisgICAgICAgICMgU2hvdWxkIGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJw
cm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVf
c3VicHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9j
b2wnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlk
YXRlX3N1YnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnBy
b3RvY29sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBIYW5kc2hh
a2VFeGNlcHRpb24sCisgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAg
ICAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQorICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQor
CisKK19URVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vJywgWygnZm9vJywg
W10pXSksCisgICAgKCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAg
ICAoJ2ZvbzsgYmFyPWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdm
b287IGJhcj1iYXo7IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywg
J2NkcicpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLCBbKCdmb28nLCBbKCdi
YXInLCAnYmF6JyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXInLCBb
KCdjZHInLCBOb25lKV0pXSksCisgICAgKCdhLCBiLCBjLCBkJywgWygnYScsIFtdKSwgKCdiJywg
W10pLCAoJ2MnLCBbXSksICgnZCcsIFtdKV0pLAorXQorCitfVEVTVF9RVU9URURfRVhURU5TSU9O
X0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSks
CisgICAgKCdmb287IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0p
LAorICAgICgnZm9vOyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSld
KSwKKyAgICAoJ2ZvbzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJc
bmJheicpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywg
JyJiYXonKV0pXSksCisgICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXIn
LCAnXHhiYmJheicpXSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9E
QVRBID0gWworICAgICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAorICAgICgnZm9vOyBcclxu
IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPVxyXG4g
XHJcbiBiYXonLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vIDtiYXIg
PSBiYXogJywgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyxiYXIsLGJh
eicsIFsoJ2ZvbycsIFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCitdCisKK19URVNU
X1JFRFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iXHJc
biBcclxuIGJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCitdCisKKworY2xh
c3MgRXh0ZW5zaW9uc1BhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAg
ICAgICAgIiIiVmVyaWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1
YWxfbGlzdCBoYXZlIHRoZQorICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmlu
aXRpb25zIGluIGV4cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgorICAgICAgICBkZWZpbml0aW9uIHVz
ZWQgaW4gdGhpcyB0ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQorICAg
ICAgICBwYXJhbWV0ZXIgZGljdGlvbmFyeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAg
IGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6
CisgICAgICAgICAgICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBhcmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKKworICAgIGRlZiB0ZXN0
X3BhcnNlKHNlbGYpOgorICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBp
biBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9l
eHRlbnNpb25fbGlzdChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYg
dGVzdF9wYXJzZV9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJp
bmcsIGRlZmluaXRpb24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAg
ICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3Ry
aW5nKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgorICAgICAg
ICBmb3IgKGZvcm1hdHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RF
U1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9y
IChmb3JtYXR0ZWRfc3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JF
RFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlf
ZXh0ZW5zaW9uX2xpc3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVm
IHRlc3RfcGFyc2VfYmFkX2RhdGEoc2VsZik6CisgICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05f
REFUQSA9IFsKKyAgICAgICAgICAgICgnZm9vOyA7ICcpLAorICAgICAgICAgICAgKCdmb287IGEg
YScpLAorICAgICAgICAgICAgKCdmb28gZm9vJyksCisgICAgICAgICAgICAoJywsLCcpLAorICAg
ICAgICAgICAgKCdmb287IGJhcj0nKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwK
KyAgICAgICAgICAgICgnZm9vOyBiYXI9ImFcciInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9
IlxcXHhmZiInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCisgICAgICAgIF0KKwor
ICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6
CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
LCBwYXJzZV9leHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
dGVkX3N0cmluZykKKworCitjbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGZv
ciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05f
REFUQToKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICAgICAgZm9yIGRlZmlu
aXRpb24gaW4gZGVmaW5pdGlvbnM6CisgICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMp
ID0gZGVmaW5pdGlvbgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFt
ZXRlcihuYW1lKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFt
ZXRlcnMKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNp
b25zKGV4dGVuc2lvbnMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5p
dHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ODQxZjFmNzlmYTg5ZjAz
ZjBlMDIxOWUwNmIyMTNjMzRmNWYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKQEAgLTAsMCArMSw0MjIgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNo
YWtlIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQK
K2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0
aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuaGFuZHNoYWtlLmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKKworZnJvbSB0ZXN0IGltcG9ydCBt
b2NrCisKKworY2xhc3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNz
IGZvciBob2xkaW5nIGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJp
bmdzIGZvcgorICAgIHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAg
ICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgorICAg
ICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAg
ICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCisKKworZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpOgorICAgIHJldHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKKyAgICAgICAgJ0dFVCcsICcvZGVt
bycsIHsKKyAgICAgICAgICAgICdIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCisgICAgICAg
ICAgICAnVXBncmFkZSc6ICd3ZWJzb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAn
VXBncmFkZScsCisgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJz
WlNCdWIyNWpaUT09JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMn
LAorICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIH0p
CisKKworZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2su
TW9ja0Nvbm4oYicnKQorICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KG1ldGhvZD1yZXF1ZXN0
X2RlZi5tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVm
LnVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVm
LmhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQor
CisKK2RlZiBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6CisgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgIHJldHVybiBoYW5k
c2hha2VyCisKKworY2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToK
KyAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRo
ZSBpLXRoIHN1YnByb3RvY29sCisgICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wg
d2hlcmUgaSBpcyBnaXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKKyAgICBhcmd1bWVudC4g
SWYgaW5kZXggaXMgbmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJv
dG9jb2wuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3Zh
bHVlPU5vbmUpOgorICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5kZWZh
dWx0X3ZhbHVlID0gZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShz
ZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6CisgICAgICAg
ICAgICBjb25uX2NvbnRleHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVk
X3Byb3RvY29sc1sKKyAgICAgICAgICAgICAgICBzZWxmLmluZGV4XQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgY29ubl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVl
CisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBw
YXNzCisKKworY2xhc3MgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAg
IHBhc3MKKworCitjbGFzcyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRp
c3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9u
IGluCisgICAgZG9fZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAi
IiIKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWpl
Y3QgdGhlIHJlcXVlc3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250
ZXh0KToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9i
amVjdCk6CisgICAgIiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIg
cmFpc2VzIGFuCisgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hh
a2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5k
c2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbignQW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCisKKyAgICBkZWYgdHJh
bnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworX0VYUEVD
VEVEX1JFU1BPTlNFID0gKAorICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNc
clxuJworICAgIGInVXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBiJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJworICAgIGInU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6
emhaUmJLK3hPbz1cclxuXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJz
b2NrZXRwcm90b2NvbC0wNiBhbmQgbGF0ZXIKKyAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgorICAg
ICIiIgorICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSkKKyAgICAgICAgZGlz
cGF0Y2hlciA9IG1vY2suTW9ja0Rpc3BhdGNoZXIoKQorICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFu
ZHNoYWtlX2NhbGxlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQ
T05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNp
b24pCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYp
OgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAg
ICAgICMgQWRkIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNo
YWtlLgorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCisKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtl
ciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5k
c2hha2Vfd2l0aF9jYXBpdGFsaXplZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
Wyd1cGdyYWRlJ10gPSAnV0VCU09DS0VUJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFr
ZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VQ
R1JBREUnCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
KyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VY
UEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAg
ICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhz
ZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQor
ICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2Vl
cC1hbGl2ZSwgLCAnCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQor
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
CisKKyAgICBkZWYgdGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGhhbmRz
aGFrZXIgPSBIYW5kc2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hl
cigpKQorICAgICAgICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBD
aGVjayB0aGF0IGl0J3Mgbm90IGNhdWdodCBieQorICAgICAgICAjIGRvX2hhbmRzaGFrZS4KKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90
b2NvbChzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29s
J10gPSAnY2hhdCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3Qs
IFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKDApKQorICAgICAgICBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSgpCisKKyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAg
ICBiJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGIn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFk
ZVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5
a1lHenpoWlJiSyt4T289XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bDogY2hhdFxyXG5cclxuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JF
U1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3Rf
ZG9faGFuZHNoYWtlX3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxm
KToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5k
c2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdWJwcm90b2NvbENob29zaW5nRGlzcGF0Y2hlcigtMSwgJ2Zvb2JhcicpKQorICAgICAg
ICAjIE5vIHJlcXVlc3QgaGFzIGJlZW4gbWFkZSBidXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5k
c2hha2VFeGNlcHRpb24KKyAgICAgICAgIyBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkK
KworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3Nl
bGVjdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVz
dF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3Rv
Y29sJ10gPSAnY2hhdCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFr
ZXIocmVxdWVzdCkKKyAgICAgICAgIyB3c19wcm90b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VF
eGNlcHRpb24gbXVzdCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRz
aGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNb
J1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKQorCisgICAgICAgIEVYUEVDVEVE
X1JFU1BPTlNFID0gKAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3Rv
Y29sc1xyXG4nCisgICAgICAgICAgICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgICAg
ICAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgICAgICAgICAgYidTZWMtV2ViU29j
a2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCisgICAgICAgICAg
ICBiJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJworICAgICAgICAgICAgYidwZXJtZXNzYWdl
LWRlZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKKyAgICAgICAgICAgIGIn
XHJcbicpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
KyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQ
RUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAgICAg
ICAgZXh0ZW5zaW9uID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sIGV4dGVuc2lvbi5u
YW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVy
X25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBl
eHRlbnNpb24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29ycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLCByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hh
bmRzaGFrZV93aXRoX3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRl
cnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZSwgLCAnCisgICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBt
YT0iXHJcbiAgICAgIFxcXHJmICAiOyBwdj1ucnQnKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hh
bmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNp
b25zKSkKKyAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0
ZW5zaW9uc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUn
LCBmaXJzdF9leHRlbnNpb24ubmFtZSgpKQorICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVx
dWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCd1bmtub3duJywgc2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWydlJywgJ21hJywgJ3B2J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25k
X2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ21jXjInLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJh
bWV0ZXJfdmFsdWUoJ21hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29u
ZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgncHYnKSkKKworICAgIGRlZiB0ZXN0X2Rv
X2hhbmRzaGFrZV93aXRoX29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snRW1wdHlWYWx1ZSddID0gJycKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtl
eSddID0gJ0FWYWx1ZScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVl
c3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3Qp
CisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnQVZhbHVlJywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQorCisgICAg
ZGVmIHRlc3RfYWJvcnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2Vy
ID0gSGFuZHNoYWtlcihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hl
cigpKQorICAgICAgICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbi4gQ2hlY2sgdGhhdCBpdCdzCisgICAgICAgICMgbm90IGNhdWdodCBieSBkb19o
YW5kc2hha2UuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3Rz
KHNlbGYpOgorICAgICAgICBiYWRfY2FzZXMgPSBbCisgICAgICAgICAgICAoJ0hUVFAgcmVxdWVz
dCcsCisgICAgICAgICAgICAgUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgICdH
RVQnLCAnL2RlbW8nLCB7CisgICAgICAgICAgICAgICAgICAgICAnSG9zdCc6CisgICAgICAgICAg
ICAgICAgICAgICAnd3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgJ1VzZXIt
QWdlbnQnOgorICAgICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7
IEludGVsIE1hYyBPUyBYIDEwLjU7JworICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6
MS45LjEuMykgR2Vja28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKKyAgICAgICAgICAgICAgICAg
ICAgICcgR1RCNiBHVEJBJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOgorICAgICAg
ICAgICAgICAgICAgICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRp
b24veG1sO3E9MC45LCcKKyAgICAgICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAorICAgICAg
ICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAn
ZW4tdXMsZW47cT0wLjUnLAorICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6
CisgICAgICAgICAgICAgICAgICAgICAnZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICAgICAg
ICAgICdBY2NlcHQtQ2hhcnNldCc6CisgICAgICAgICAgICAgICAgICAgICAnSVNPLTg4NTktMSx1
dGYtODtxPTAuNywqO3E9MC43JywKKyAgICAgICAgICAgICAgICAgICAgICdLZWVwLUFsaXZlJzoK
KyAgICAgICAgICAgICAgICAgICAgICczMDAnLAorICAgICAgICAgICAgICAgICAgICAgJ0Nvbm5l
Y3Rpb24nOgorICAgICAgICAgICAgICAgICAgICAgJ2tlZXAtYWxpdmUnCisgICAgICAgICAgICAg
ICAgIH0pLCBOb25lLCBUcnVlKQorICAgICAgICBdCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAn
UE9TVCcKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3Rf
ZGVmLCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KKyAg
ICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25l
LCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQn
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYs
IE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKKyAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQor
ICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9k
ZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0g
J0Rvd25ncmFkZScKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24n
LCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3Jl
YXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBT
ZWMtV2ViU29ja2V0LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhO
aGJYQnNaU0J1YjI1alpRPT1nYXJiYWdlJykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAn
YScKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdl
YlNvY2tldC1LZXkgKGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCisgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3Rl
ciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KKyAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdBUUlEQkFVR0J3Z0pD
Z3NNRFE0UEVDPT0nCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtS2V5IChwYWRkaW5nIGJpdHMgYXJlIG5vdCB6ZXJvKScsCisgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydTZWMtV2ViU29ja2V0LUtleSddID0gKAorICAgICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnVi
MjVqWlE9PSxkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0nKQorICAgICAgICBiYWRfY2FzZXMuYXBw
ZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1
ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQorICAgICAgICBiYWRfY2Fz
ZXMuYXBwZW5kKAorICAgICAgICAgICAgKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbics
IHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1X
ZWJTb2NrZXQtVmVyc2lvbiddID0gJzMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAg
ICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25l
LCBGYWxzZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24n
XSA9ICcxMywgMTMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29j
a2V0LVZlcnNpb24gKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdpbGxlZ2FsXHgwOXByb3RvY29sJworICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgKCdJbGxlZ2FsIFNlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICcnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisg
ICAgICAgICAgICAoJ0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0X2RlZiwg
NDAwLCBUcnVlKSkKKworICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVj
dGVkX3N0YXR1cywKKyAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4g
YmFkX2Nhc2VzOgorICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKKyAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2su
TW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNl
cHRpb24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCisgICAgICAgICAgICBl
eGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKKyAgICAgICAgICAgIGV4Y2Vw
dCBWZXJzaW9uRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWNlMDFlZjI4MzkxM2UzZmM4Nzc1YjNiMjczMTFmNjE5NWM1N2JlNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0w
LDAgKzEsOTMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisi
IiJUZXN0cyBmb3IgaHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKwor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworCitjbGFzcyBV
bml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgaHR0cF9o
ZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisgICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNl
bGYpOgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFy
c2VfdXJpKCcvd3MvdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcvd3MvdGVzdCcsIHJlc291cmNlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1
dGVfdXJpKHNlbGYpOgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVy
X3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rl
c3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEwMDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcvd3MvdGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0g
aHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNv
bS93cy90ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcvd3MvdGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291
cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzczovL2V4YW1wbGUuY29tLycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCg0NDMsIHBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCBy
ZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0
aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCg4MDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVz
b3VyY2UpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKKyAgICAgICAg
aG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8v
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBo
b3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAg
ICAgICAgJ3dzOi8vbG9jYWxob3N0OklOVkFMSURfUE9SVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgcmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBo
dHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDot
MS93cycpCisgICAgICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzJywg
cmVzb3VyY2UpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfbWVtb3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyODhjNTEwYjg5YmIyODkzMWRmZjlh
Nzc5MTgzYTQ5OTE3NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmls
ZSBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzaXgKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRh
dGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBt
b2R1bGUuIiIiCisgICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQs
IGV4cGVjdGVkX2xpc3QpOgorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToK
KyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGFjdHVhbF9s
aXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAg
ICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0
KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAg
IGRlZiBjaGVja193aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4
cGVjdGVkX2xpc3QpOgorICAgICAgICByZWFkX2xpc3QgPSBbXQorICAgICAgICByZWFkX2xpbmUg
PSAnJworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdf
ZmlsZS5yZWFkbGluZShyZWFkX3NpemUpCisgICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihs
aW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6
ZSkKKyAgICAgICAgICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6CisgICAgICAgICAgICAgICAgaWYg
cmVhZF9saW5lICE9ICcnOgorICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJl
YWRfbGluZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9saW5lICs9
IGxpbmUKKyAgICAgICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgorICAg
ICAgICAgICAgICAgIHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAg
IHJlYWRfbGluZSA9ICcnCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdl
dF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3Rl
ZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZXhwZWN0ZWRfbGlzdCksIGxlbihyZWFkX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFj
dHVhbCwgcmVhZCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVhZCkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGlu
ZXMoc2VsZik6CisgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9y
aXppbmdGaWxlKAorICAgICAgICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNv
bWUnKSkKKyAgICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbics
ICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGlu
ZXNfbGltaXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUg
PSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJ
TygnSGVsbG9cbldvcmxkXG5XZWxjb21lJyksIDIpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3Jp
emluZ19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQorCisgICAgZGVmIHRlc3RfZ2V0
X21lbW9yaXplZF9saW5lc19lbXB0eV9maWxlKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2Zp
bGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShzaXguU3RyaW5nSU8oJycpKQorICAg
ICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQorCisgICAgZGVmIHRlc3Rf
Z2V0X21lbW9yaXplZF9saW5lc193aXRoX3NpemUoc2VsZik6CisgICAgICAgIGZvciBzaXplIGlu
IHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdm
aWxlLk1lbW9yaXppbmdGaWxlKAorICAgICAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9c
bldvcmxkXG5XZWxjb21lJykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1v
cml6aW5nX2ZpbGUsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hl
bGxvXG4nLCAnV29ybGRcbicsICdXZWxjb21lJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3Mzg3M2RkZTk3ZGYwM2YyMGRmNWFj
OTcyMmY2YWQ2NWRkMDJlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RfbW9jay5weQpAQCAtMCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVl
dWUKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
KworZnJvbSB0ZXN0IGltcG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKKyAg
ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKGIn
QUJDXHJcbkRFRkdcclxuXHJcbkhJSksnKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGlu
ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInREVGR1xyXG4nLCBzZWxmLl9jb25uLnJl
YWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuJywgc2VsZi5fY29ubi5y
ZWFkbGluZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSElKSycsIHNlbGYuX2Nvbm4u
cmVhZGxpbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVh
ZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYidBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChiJ0VGR1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYicnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorCisgICAgZGVmIHRlc3RfcmVh
ZF9hbmRfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxu
RCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VGR1xy
XG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
clxuSElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
JycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgor
ICAgICAgICBzZWxmLl9jb25uLndyaXRlKGInSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29u
bi53cml0ZShiJ1dvcmxkXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidIZWxsb1xy
XG5Xb3JsZFxyXG4nLCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQorCisKK2NsYXNzIE1vY2tC
bG9ja2luZ0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZv
ciBNb2NrQmxvY2tpbmdDb25uIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6Cisg
ICAgICAgICIiIlRlc3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRf
Ynl0ZXMgbWV0aG9kIGNhbiBiZQorICAgICAgICByZWFkIGZyb20gaXQuCisgICAgICAgICIiIgor
ICAgICAgICBjbGFzcyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAg
IiIiQSB0ZXN0IGNsYXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9u
IHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUg
cmVhZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHF1ZXVlLgorICAgICAgICAg
ICAgIiIiCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgorICAg
ICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAg
ICAgICBzZWxmLl9xdWV1ZSA9IHF1ZXVlCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNv
bm4KKyAgICAgICAgICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAg
IHNlbGYuc3RhcnQoKQorCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb25uLnJl
YWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEpCisKKyAg
ICAgICAgY29ubiA9IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCisgICAgICAgIHF1ZXVlID0gc2l4
Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBx
dWV1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHF1ZXVlLmVtcHR5KCkpCisgICAgICAgIGNv
bm4ucHV0X2J5dGVzKGInRm9vIGJhclxyXG4nKQorICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0ZvbyBiYXJcclxuJywgcmVhZCkKKworCitjbGFz
cyBNb2NrVGFibGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZv
ciBNb2NrVGFibGUgY2xhc3MuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxm
KToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAgZGVmIHRlc3Rf
Y3JlYXRlX2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShb
KCdLZXknLCAnVmFsdWUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFi
bGUuZ2V0KCdLRVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsn
a2V5J10pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwgKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X3NldF9hbmRf
Z2V0KHNlbGYpOgorICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICB0YWJsZVsnS2V5
J10gPSAnVmFsdWUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0
KCdLZXknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tl
eScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS0VZJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tc2d1dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2YyMWI4ZDI5NzY2
ODc3MGNiOTFjNTAxYzJiMmZjODI1OGI5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDkxNiBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtc2d1dGlsIG1v
ZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
ZGl2aXNpb24KK2ltcG9ydCBhcnJheQoraW1wb3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHJh
bmRvbQoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitpbXBv
cnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29j
a2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCitmcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
c3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSB0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKKwor
IyBXZSB1c2Ugb25lIGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3Jh
cGhpY2FsbHkgc2VjdXJlIFBSTkcuCitfTUFTS0lOR19OT05DRSA9IGInQUJDRCcKKworCitkZWYg
X21hc2tfaHliaShmcmFtZSk6CisgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgc2l4LnRleHRfdHlw
ZSk6CisgICAgICAgIEV4Y2VwdGlvbignbWFza2luZyBkb2VzIG5vdCBhY2NlcHQgVGV4dHMnKQor
CisgICAgZnJhbWVfa2V5ID0gbGlzdChpdGVyYnl0ZXMoX01BU0tJTkdfTk9OQ0UpKQorICAgIGZy
YW1lX2tleV9sZW4gPSBsZW4oZnJhbWVfa2V5KQorICAgIHJlc3VsdCA9IGJ5dGVhcnJheShmcmFt
ZSkKKyAgICBjb3VudCA9IDAKKworICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXN1bHQpKToKKyAg
ICAgICAgcmVzdWx0W2ldIF49IGZyYW1lX2tleVtjb3VudF0KKyAgICAgICAgY291bnQgPSAoY291
bnQgKyAxKSAlIGZyYW1lX2tleV9sZW4KKworICAgIHJldHVybiBfTUFTS0lOR19OT05DRSArIGJ5
dGVzKHJlc3VsdCkKKworCitkZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNz
b3IsIHJlcXVlc3QsIHN0cmVhbV9vcHRpb25zKToKKyAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5n
ZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorICAg
ICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisK
KworZGVmIF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhLCBwZXJtZXNzYWdl
X2RlZmxhdGVfcmVxdWVzdD1Ob25lKToKKyAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5l
Y3Rpb249bW9jay5Nb2NrQ29ubihyZWFkX2RhdGEpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29t
bW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKKyAgICByZXEud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMg
PSBbXQorCisgICAgcHJvY2Vzc29yID0gTm9uZQorICAgIGlmIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0IGlzIG5vdCBOb25lOgorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1
ZXN0KQorCisgICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICBpZiBwcm9j
ZXNzb3IgaXMgbm90IE5vbmU6CisgICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3Io
cHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJlcS53c19zdHJlYW0gPSBTdHJl
YW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKKworICAgIHJldHVybiByZXEKKworCitkZWYgX2NyZWF0
ZV9yZXF1ZXN0KCpmcmFtZXMpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0
YSBnaXZlbiBhcyBmcmFtZXMuCisKKyAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxs
aW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAorICAgIGlzIE1vY2tS
ZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICAgIiIiCisKKyAgICByZWFkX2Rh
dGEgPSBbXQorICAgIGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6CisgICAgICAgIHJlYWRf
ZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKKworICAgIHJldHVybiBfY3Jl
YXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKGInJy5qb2luKHJlYWRfZGF0YSkpCisKKworZGVmIF9j
cmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QuCisK
KyAgICBEYXRhIHdyaXR0ZW4gdG8gYSBNb2NrUmVxdWVzdCBjYW4gYmUgcmVhZCBvdXQgYnkgY2Fs
bGluZworICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKS4KKyAgICAiIiIKKwor
ICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nv
bm4oKSkKKyAgICByZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisg
ICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICByZXEud3Nfc3RyZWFtID0g
U3RyZWFtKHJlcSwgc3RyZWFtX29wdGlvbnMpCisgICAgcmV0dXJuIHJlcQorCisKK2NsYXNzIEJh
c2ljTWVzc2FnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2ljIHRlc3RzIGZv
ciBTdHJlYW0uIiIiCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ0hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVs
bG8nLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcGF5bG9h
ZCA9ICdhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChiJ1x4ODFceDdkJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQg
PSAnYScgKiAxMjYKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYidceDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKKworICAgICAgICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCisgICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCBwYXlsb2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2VceGZm
XHhmZicgKyBwYXlsb2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5k
X2xhcmdlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBiJ1x4ODFceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsK
KyAgICAgICAgICAgIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxm
KToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHUnXHU2NWU1JykKKyAgICAgICAgIyBVKzY1ZTUgaXMgZW5j
b2RlZCBhcyBlNiw5NyxhNSBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4
MVx4MDNceGU2XHg5N1x4YTUnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFn
bWVudHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKKyAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICchJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4MDFceDA1SGVsbG9ceDAwXHgwMSBceDAwXHgwNVdvcmxkXHg4MFx4MDEhJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisK
KyAgICBkZWYgdGVzdF9zZW5kX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJtaW5hdGlvbihz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbyBXb3JsZCEnLCBGYWxzZSkKKyAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYidceDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoKGInXHg4MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGInXHg4MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKKworICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZkJywgcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGF5bG9hZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZl
X21lZGl1bV9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNgorICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHgwMFx4N2UnLCBwYXls
b2FkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKKworICAgICAgICBwYXlsb2FkID0gYidhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9h
ZCA9IGInYScgKiAoMSA8PCAxNikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgK
KyAgICAgICAgICAgIChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAn
LCBwYXlsb2FkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRG
LTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5n
X21pbmltYWxfbnVtYmVyX29mX2J5dGVzKHNlbGYpOgorICAgICAgICAjIExvZyB3YXJuaW5nIG9u
IHJlY2VpdmluZyBiYWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQorICAg
ICAgICAjIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgor
CisgICAgICAgIHBheWxvYWQgPSBiJ2EnCisgICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNl
bnRlZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBheWxvYWQuZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9t
ZXNzYWdlX3VuaWNvZGUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
KGInXHg4MVx4ODMnLCBiJ1x4ZTZceDljXHhhYycpKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNv
ZGVkIGFzIGU2LDljLGFjIGluIFVURi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3
MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFu
ZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KChiJ1x4ODFceDgyJywgYidceDgwXHg4MScpKQorICAgICAgICAjIEludmFsaWQgY2hh
cmFjdGVycyBzaG91bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSW52YWxpZFVURjhFeGNlcHRpb24sIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVj
ZWl2ZV9mcmFnbWVudHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
KGInXHgwMVx4ODUnLCBiJ0hlbGxvJyksIChiJ1x4MDBceDgxJywgYicgJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGInXHgwMFx4ODUnLCBiJ1dvcmxkJyksIChiJ1x4ODBc
eDgxJywgYichJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9m
cmFnbWVudHNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBVVEYtOCBlbmNvZGVzIFUrNmYyMiBp
bnRvIGU2YmNhMiBhbmQgVSs1YjU3IGludG8gZTVhZDk3LgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4MDFceDgyJywgYidceGU2XHhiYycpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChiJ1x4MDBceDgyJywgYidceGEyXHhlNScpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODBceDgyJywgYidceGFkXHg5NycpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHUnXHU2ZjIyXHU1YjU3JywgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbW1lZGlh
dGVfemVyb190ZXJtaW5hdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgoYidceDAxXHg4YycsIGInSGVsbG8gV29ybGQhJyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGInXHg4MFx4ODAnLCBiJycpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdIZWxsbyBXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAxXHg4NScsIGInV29ybGQn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCBy
ZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1
dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDAwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFn
bWVudHNfZW5kX2J1dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgoYidceDgwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX2Rpc2NhcmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoCisgICAgICAgICAgICAoYidceDhmXHg4NicsIGInSUdOT1JFJyksIChiJ1x4ODFc
eDg1JywgYidIZWxsbycpLAorICAgICAgICAgICAgKGInXHg4Zlx4ODknLCBiJ0RJU1JFR0FSRCcp
LCAoYidceDgxXHg4NicsIGInV29ybGQhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1z
Z3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceDhhJywg
c3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2RlKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZWFzb24gPSAn
YScgKiAxMjMKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAg
IChiJ1x4ODhceGZkJywgc3RydWN0LnBhY2soJyFIJywgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xP
U1VSRSkgKworICAgICAgICAgICAgIHJlYXNvbi5lbmNvZGUoJ1VURi04JykpKQorICAgICAgICBy
ZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfTk9STUFMX0NM
T1NVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29u
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgY29tbW9u
LlNUQVRVU19OT1JNQUxfQ0xPU1VSRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0
LndzX2Nsb3NlX3JlYXNvbiwgcmVhc29uKQorCisgICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV90b29f
bG9uZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwgcmVxdWVzdC53c19z
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NM
T1NVUkUsICdhJyAqIDEyNCkKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfaW5jb25zaXN0ZW50
X2NvZGVfYW5kX3JlYXNvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgpCisgICAgICAgICMgcmVhc29uIHBhcmFtZXRlciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hl
biBjb2RlIGlzIE5vbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbiwgcmVxdWVzdC53c19zdHJlYW0sIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhJykKKworICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVl
c3QsICdIZWxsbyBXb3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MGNI
ZWxsbyBXb3JsZCEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYp
OgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX3BpbmcocmVxdWVzdCwgJ2EnICogMTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
XHg4OVx4N2QnICsgYidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfdG9v
X2xvbmcoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwgbXNndXRp
bC5zZW5kX3BpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsICdhJyAqIDEy
NikKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMg
cmVjZWl2aW5nIGEgcGluZyBjb250cm9sIGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihy
ZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisg
ICAgICAgICMgU3RyZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3
aXRob3V0IGFueSBhY3Rpb24KKyAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDA1SGVsbG8nLCBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgcmVxdWVz
dC5vbl9waW5nX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dv
cmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZXF1ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9w
aW5nKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZk
JywgYidhJyAqIDEyNSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4
MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidceDhhXHg3ZCcgKyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGlu
Z190b29fbG9uZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidc
eDg5XHhmZVx4MDBceDdlJywgYidhJyAqIDEyNikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2Vp
dmVfcG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9s
IGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAg
ICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoKGInXHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25f
cG9uZ19oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0
LCAnSGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgIyBWYWxpZCBwb25nIGlz
IHJlY2VpdmVkLCBidXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCisgICAgICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJl
Y2VpdmVfbWVzc2FnZSBjYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVI
ZWxsbycsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICBzZWxm
LmFzc2VydFRydWUocmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29s
aWNpdGVkX3Bvbmcoc2VsZik6CisgICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2Vk
IGZyb20gSHlCaSAwNy4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhh
XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidc
eDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4OGFceDg1Jywg
YidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1
JywgYidXb3JsZCcpKQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSnVtYm8n
KQorICAgICAgICAjIEJvZHkgbWlzbWF0Y2guCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpCisKKyAgICBkZWYgdGVzdF9waW5nX2Nhbm5vdF9iZV9mcmFnbWVudGVkKHNl
bGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDlceDg1JywgYidI
ZWxsbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4
Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UsIHJlcXVlc3QpCisKKyAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDFc
eDAwJywgYidhJyAqIDI1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUg
ZXh0ZW5zaW9uLiIiIgorICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6Cisg
ICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAg
ICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAg
ICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5z
aW9uKQorICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZl
cl9ub19jb250ZXh0X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBOb25lLCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcicpKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lP
TikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2Jp
dHMnLCBOb25lKQorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihleHRlbnNpb24pCisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4
X3dpbmRvd19iaXRzKDgpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXIoVHJ1ZSkKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnOCcs
IHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2NsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBOb25lLCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9fY29udGV4
dF90YWtlb3ZlcicpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2Rl
ZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsICdIZWxsbycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHps
aWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBi
J1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29t
cHJlc3NlZF9oZWxsbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X21l
c3NhZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNv
bXByZXNzZWQgY29ycmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VY
VEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEo
CisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KworICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICAj
IFBheWxvYWQgaW4gYmluYXJ5OiAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAg
ICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUg
KG5vIGNvbXByZXNzaW9uKQorICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChiJ1x4YzFceDAxXHgwMCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV93aXRoX251bGxfY2hhcmFj
dGVyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYSBzaW1wbGUgcGF5bG9hZCAob25lIG51
bGwpIGlzIGZyYW1lZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxB
VEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3
ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5z
aW9uKQorCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKKwor
ICAgICAgICAjIFBheWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAw
MDAwMAorICAgICAgICAjIEZyb20gTFNCLAorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgw
KQorICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZt
YW4pCisgICAgICAgICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQg
aXMgdGhlIGNvZGUgZm9yIHRoZSBsaXRlcmFsCisgICAgICAgICMgICBhbHBoYWJldCAweDAwKQor
ICAgICAgICAjIC0gNyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRo
ZSBjb2RlIGZvciB0aGUKKyAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKKyAgICAgICAgIyAtIDEg
Yml0IG9mIEJGSU5BTCAoMCkKKyAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJl
c3Npb24pCisgICAgICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGInXHhjMVx4MDNceDYyXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRf
dHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAg
ICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQor
CisgICAgICAgIGV4cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAl
IGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hl
bGxvCisKKyAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGInV29y
bGQnKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6
LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxk
KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0
ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnR29vZGJ5ZScsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ1dvcmxkJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhw
ZWN0ZWQgPSBiJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgPSBjb21w
cmVzcy5jb21wcmVzcyhiJ0dvb2RieWUnKQorICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkICs9IGIn
XHgwMCVjJyAlIGxlbihjb21wcmVzc2VkX2dvb2RieWUpCisgICAgICAgIGV4cGVjdGVkICs9IGNv
bXByZXNzZWRfZ29vZGJ5ZQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29t
cHJlc3MoYidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVz
c2VkX3dvcmxkWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXBy
ZXNzZWRfd29ybGQpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmly
c3RfZnJhbWUoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAg
ICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMp
CisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
CisgICAgICAgIGV4cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisg
ICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9l
bXB0eSA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2Vt
cHR5ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVz
c2VkX2VtcHR5ID0gY29tcHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGIn
XHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21w
cmVzc2VkX2VtcHR5CisgICAgICAgIHByaW50KCclcicgJSBleHBlY3RlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFt
ZShzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigK
KyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGIn
JywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAg
ICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1w
dHkgPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfZW1w
dHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMn
ICUgbGVuKGNvbXByZXNzZWRfZW1wdHkpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRf
ZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3Nt
YWxsX3dpbmRvdyhzZWxmKToKKyAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXonCisgICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICog
MzAwMDAgKyBjb21tb25fcGFydAorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVO
U0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93
X2JpdHMnLCAnOCcpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkK
KworICAgICAgICBleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCisgICAgICAgIGV4
cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUgPSA5MQorCisgICAgICAgIGFjdHVhbF9mcmFt
ZSA9IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplICsgZXhw
ZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIGxlbihhY3R1YWxfZnJh
bWUpKQorICAgICAgICBhY3R1YWxfaGVhZGVyID0gYWN0dWFsX2ZyYW1lWzA6ZXhwZWN0ZWRfd2Vi
c29ja2V0X2hlYWRlcl9zaXplXQorICAgICAgICBhY3R1YWxfcGF5bG9hZCA9IGFjdHVhbF9mcmFt
ZVtleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemU6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYidceGMxJWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfaGVhZGVyKQorICAgICAgICBkZWNvbXByZXNzID0g
emxpYi5kZWNvbXByZXNzb2JqKC04KQorICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSA9IGRl
Y29tcHJlc3MuZGVjb21wcmVzcyhhY3R1YWxfcGF5bG9hZCArCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMFx4MDBceGZmXHhmZicpCisg
ICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3NhZ2UuZGVj
b2RlKCdVVEYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNz
LnVudXNlZF9kYXRhKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVz
cy51bmNvbnN1bWVkX3RhaWwpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRl
eHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFU
RV9FWFRFTlNJT04pCisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9f
Y29udGV4dF90YWtlb3ZlcicsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1leHRlbnNpb24pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPVRydWUpCisK
KyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29t
cHJlc3MoYidIZWxsbycpCisgICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihmaXJz
dF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gZmlyc3RfaGVsbG8KKyAgICAgICAgc2Vjb25k
X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIHNlY29uZF9oZWxs
byArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2Vjb25kX2hl
bGxvID0gc2Vjb25kX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUg
bGVuKHNlY29uZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgor
ICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAg
ICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNz
YWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQorICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLnNldF9iZmluYWwoVHJ1ZSkKKyAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBlbmQ9VHJ1ZSkKKworICAgICAg
ICBleHBlY3RlZCA9IGInJworCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAg
ICAgZXhwZWN0ZWQgKz0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAg
IGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAg
ICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAg
ICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIHN0cnVjdC5wYWNrKCch
QicsIDApCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dv
cmxkKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwg
emxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGli
Lk1BWF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJl
c3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2Vk
X2hlbGxvWzotNF0KKyAgICAgICAgZGF0YSA9IGInXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9o
ZWxsbykgfCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxs
bykKKworICAgICAgICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScg
KyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3Nh
Z2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAg
ICAiIiJUZXN0IHRoYXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMg
b2YgY2h1bmtzIGlzCisgICAgICAgIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisg
ICAgICAgICAgICBbc3RydWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9y
IGkgaW4gcmFuZ2UoMTAwMCldKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJl
c3NlZF9wYXlsb2FkID0gY29tcHJlc3MuY29tcHJlc3MocGF5bG9hZCkKKyAgICAgICAgY29tcHJl
c3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAg
ICBjb21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorCisgICAgICAg
ICMgRnJhZ21lbnQgdGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgor
ICAgICAgICBieXRlc19jaHVua2VkID0gMAorICAgICAgICBkYXRhID0gYicnCisgICAgICAgIGZy
YW1lX2NvdW50ID0gMAorCisgICAgICAgIGNodW5rX3NpemVzID0gW10KKworICAgICAgICB3aGls
ZSBieXRlc19jaHVua2VkIDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAgICAj
IE1ha2Ugc3VyZSB0aGF0CisgICAgICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJl
IGVxdWFsIG9yIGxlc3MgdGhhbiAxMjUgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgICMgICB1
c2UgMSBvY3RldCBsZW5ndGggaGVhZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KKyAgICAgICAg
ICAgICMgLSBhdCBsZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICBjaHVu
a19zaXplID0gcmFuZG9tLnJhbmRpbnQoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAg
ICAgICBtaW4oMTI1LAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJlc3NlZF9wYXlsb2Fk
KSAvLyAxMCwKKyAgICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLSBi
eXRlc19jaHVua2VkKSkKKyAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXpl
KQorICAgICAgICAgICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRbYnl0ZXNfY2h1bmtlZDpi
eXRlc19jaHVua2VkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
dW5rX3NpemVdCisgICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAg
ICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0g
MDoKKyAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0MgorICAg
ICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToKKyAg
ICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAorCisgICAgICAg
ICAgICBkYXRhICs9IGInJWMlYycgJSAoZmlyc3Rfb2N0ZXQsIGNodW5rX3NpemUgfCAweDgwKQor
ICAgICAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNodW5rKQorCisgICAgICAgICAgICBmcmFt
ZV9jb3VudCArPSAxCisKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19z
aXplcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKwor
ICAgICAgICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFz
a19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAg
ZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2Fk
LCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0gemxp
Yi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKwor
ICAgICAgICBkYXRhID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNz
LmNvbXByZXNzKGInSGVsbG9XZWJTb2NrZXQnKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCisgICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVu
KGNvbXByZXNzZWRfaGVsbG8pIC8vIDIKKyAgICAgICAgZGF0YSArPSBiJ1x4NDElYycgJSAoc3Bs
aXRfcG9zaXRpb24gfCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3Nl
ZF9oZWxsb1s6c3BsaXRfcG9zaXRpb25dKQorCisgICAgICAgIGRhdGEgKz0gYidceDgwJWMnICUg
KChsZW4oY29tcHJlc3NlZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQorICAgICAg
ICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQor
CisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJl
c3MuY29tcHJlc3MoYidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBj
b21wcmVzc2VkX3dvcmxkWzotNF0KKyAgICAgICAgZGF0YSArPSBiJ1x4YzElYycgJSAobGVuKGNv
bXByZXNzZWRfd29ybGQpIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXBy
ZXNzZWRfd29ybGQpCisKKyAgICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGIn
XHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBi
eWUnKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRh
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0hlbGxvV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9taXhlZF9idHlwZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21w
cmVzc2VkIHVzaW5nIGxvdHMgb2YgREVGTEFURSBibG9ja3Mgd2l0aAorICAgICAgICB2YXJpb3Vz
IGZsdXNoIG1vZGUgaXMgY29ycmVjdGx5IHJlY2VpdmVkLgorICAgICAgICAiIiIKKworICAgICAg
ICByYW5kb20uc2VlZChhPTApCisgICAgICAgIHBheWxvYWQgPSBiJycuam9pbigKKyAgICAgICAg
ICAgIFtzdHJ1Y3QucGFjaygnIUInLCByYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiBy
YW5nZSgxMDAwKV0pCisKKyAgICAgICAgY29tcHJlc3MgPSBOb25lCisKKyAgICAgICAgIyBGcmFn
bWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCisgICAgICAg
IGJ5dGVzX2NodW5rZWQgPSAwCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGInJworCisg
ICAgICAgIGNodW5rX3NpemVzID0gW10KKyAgICAgICAgbWV0aG9kcyA9IFtdCisgICAgICAgIHN5
bmNfdXNlZCA9IEZhbHNlCisgICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKKworICAgICAgICB3
aGlsZSBieXRlc19jaHVua2VkIDwgbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1
cmUgYXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6
ZSA9IHJhbmRvbS5yYW5kaW50KDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWluKDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuKHBheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXpl
cy5hcHBlbmQoY2h1bmtfc2l6ZSkKKyAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19j
aHVua2VkOmJ5dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQorCisgICAgICAgICAgICBieXRlc19j
aHVua2VkICs9IGNodW5rX3NpemUKKworICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKKworICAgICAgICAgICAgaWYgYnl0
ZXNfY2h1bmtlZCA9PSBsZW4ocGF5bG9hZCk6CisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9w
YXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgIGNvbXBy
ZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5kb20ucmFuZGlu
dCgwLCAxKQorICAgICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkKKyAgICAgICAg
ICAgICAgICBpZiBtZXRob2QgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9w
YXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisg
ICAgICAgICAgICAgICAgICAgIHN5bmNfdXNlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29t
cHJlc3MoY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVz
cyA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVlCisKKyAgICAg
ICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKyAgICAgICAgcHJpbnQoIk1ldGhvZHM6
ICVyIiAlIG1ldGhvZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeW5jX3VzZWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5pc2hfdXNlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRy
dWUoMTI1IDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSA8IDY1NTM2KQorICAgICAgICBkYXRhID0gYidceGMy
XHhmZScgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAg
ICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKKworICAgICAgICAjIENs
b3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNl
aXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xh
c3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgorICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVj
ZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKKworICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsgX21hc2tfaHliaShiJ0hl
bGxvIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNl
aXZlKCkpCisKKyAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2Fn
ZV9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIG9ubWVzc2Fn
ZV9oYW5kbGVyKG1lc3NhZ2UpOgorICAgICAgICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNz
YWdlKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAg
ICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2Fn
ZV9oYW5kbGVyKQorCisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgx
XHg4NicgKyBfbWFza19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0hlbGxvIScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKKworCitjbGFzcyBNZXNzYWdlU2VuZGVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1
c2luZyBNZXNzYWdlU2VuZGVyLiIiIgorICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICBzZW5kZXIgPSBt
c2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5kZXIuc2VuZCgnV29y
bGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNl
bGYpOgorICAgICAgICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5
IE1lc3NhZ2VTZW5kZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpIGNhbm5vdCBiZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VTZW5kZXIg
cnVucyBpbiBhIHNlcGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IHNpeC5tb3Zl
cy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAg
IHNlbmRfcXVldWUucHV0KGJ5dGVzKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2Nr
aW5nX3JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQor
CisgICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAg
ICAgIHNlbmRlci5zZW5kX25vd2FpdCgnSGVsbG8nKQorICAgICAgICBzZW5kZXIuc2VuZF9ub3dh
aXQoJ1dvcmxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCBz
ZW5kX3F1ZXVlLmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3Js
ZCcsIHNlbmRfcXVldWUuZ2V0KCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X3N0cmVhbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTM4OTlkMjA1MzNlYjRjZjBhOTgxNmM4YjNi
MmJjOGM1MDU0OGJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90
ZXN0X3N0cmVhbS5weQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KKworCitjbGFzcyBTdHJlYW1UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgor
ICAgIGRlZiB0ZXN0X2NyZWF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgICMgbW9yZSwgcnN2MSwg
Li4uLCByc3Y0IGFyZSBhbGwgdHJ1ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hl
YWRlcihjb21tb24uT1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYidceGYxXHg4MScsIGhlYWRlcikKKworICAgICAgICAjIE1heGltdW0gcGF5
bG9hZCBzaXplCisgICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5P
UENPREVfVEVYVCwgKDEgPDwgNjMpIC0gMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFc
eDdmXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCisKKyAgICAgICAg
IyBJbnZhbGlkIG9wY29kZSAweDEwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIHN0cmVhbS5jcmVhdGVfaGVhZGVyLCAweDEwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwKQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZSAweGYgcGFzc2Vk
IHRvIG1vcmUgcGFyYW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IHN0cmVhbS5jcmVhdGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDB4ZiwgMCwgMCwgMCwgMCkKKworICAgICAgICAjIFRvbyBsb25nIHBh
eWxvYWRfbGVuZ3RoCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVh
bS5jcmVhdGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEgPDwgNjMsIDAsIDAsIDAsIDAsIDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQ3OTQxMDUxNDU1ZWJlZTU4ODIz
YjRiMGJlOTM3NjI5MTJiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RfdXRpbC5weQpAQCAtMCwwICsxLDE5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cwor
aW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMg
VXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdl
Citmcm9tIHNpeCBpbXBvcnQgUFkzCitmcm9tIHNpeCBpbXBvcnQgaW50MmJ5dGUKKworX1RFU1Rf
REFUQV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0
ZGF0YScpCisKKworY2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEg
dW5pdHRlc3QgZm9yIHV0aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3ByZXBlbmRfbWVzc2Fn
ZV90b19leGNlcHRpb24oc2VsZik6CisgICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29ybGQnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQorICAgICAgICB1dGls
LnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2dl
dF9zY3JpcHRfaW50ZXJwKHNlbGYpOgorICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxcY3lnd2lu
XFxiaW4nCisgICAgICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCAn
cGVybCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCB1dGls
LmdldF9zY3JpcHRfaW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRUFETUUnKSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLAorICAgICAgICAg
ICAgdXRpbC5nZXRfc2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdS
RUFETUUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy91c3IvYmluL3Blcmwg
LXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9U
RVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjeWd3aW5fcGVybCArICcgLXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3Nj
cmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorCisgICAgZGVm
IHRlc3RfaGV4aWZ5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1
YSAzMCAzOSAyMCAwOSAwZCAwYSAwMCBmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRp
bC5oZXhpZnkoYidhekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkKKworCitjbGFzcyBSZXBlYXRlZFhv
ck1hc2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIFJl
cGVhdGVkWG9yTWFza2VyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X21hc2soc2VsZik6CisgICAg
ICAgICMgU2FtcGxlIGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYtOAorICAgICAgICBt
YXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKGInXHhmZlx4ZmZceGZmXHhmZicpCisgICAg
ICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChiJ1x4MTlceDY4XHg1YScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1
dGlsLlJlcGVhdGVkWG9yTWFza2VyKGInXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHJlc3Vs
dCA9IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4ZTZceDk3XHhhNScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVh
dGVkWG9yTWFza2VyKGInXHhlNlx4OTdceGE1XHgyMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tl
ci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBc
eDAwXHgwMCcsIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6CisgICAg
ICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHg3Zlx4ZmZceDIwJykK
KyAgICAgICAgIyBtYXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2VkLgorICAgICAgICBy
ZXN1bHQgPSBtYXNrZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQorICAgICAgICAj
IG1hc2tbMl0sIG1hc2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCisg
ICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCByZXN1bHQpCisK
KyAgICBkZWYgdGVzdF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6CisgICAgICAgIG1hc2tlciA9IHV0
aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidtQVNrJykKKyAgICAgICAgb3JpZ2luYWwgPSBiJycuam9p
bihbdXRpbC5wYWNrX2J5dGUoaSAlIDI1NikgZm9yIGkgaW4gcmFuZ2UoMTAwMCldKQorICAgICAg
ICByZXN1bHQgPSBtYXNrZXIubWFzayhvcmlnaW5hbCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycu
am9pbihbCisgICAgICAgICAgICB1dGlsLnBhY2tfYnl0ZSgoaSAlIDI1NikgXiBvcmQoJ21BU2sn
W2kgJSA0XSkpIGZvciBpIGluIHJhbmdlKDEwMDApCisgICAgICAgIF0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJl
cGVhdGVkWG9yTWFza2VyKGInTWFTaycpCisgICAgICAgIGZpcnN0X3BhcnQgPSBiJ1RoZSBXZWJT
b2NrZXQgUHJvdG9jb2wgZW5hYmxlcyB0d28td2F5IGNvbW11bmljYXRpb24uJworICAgICAgICBy
ZXN1bHQgPSBtYXNrZXIubWFzayhmaXJzdF9wYXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgYidceDE5XHQ2S1x4MWFceDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJc
eDE1PFx4MDgiXHJzXHgwZSMnCisgICAgICAgICAgICBiJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgw
ZX5ceDFjLFx4MThzXHgwOCJceDBjPlx4MWUjXHgwODBcbjknCisgICAgICAgICAgICBiJ1x4MDg8
XHgwNWMnLCByZXN1bHQpCisgICAgICAgIHNlY29uZF9wYXJ0ID0gYidJdCBoYXMgdHdvIHBhcnRz
OiBhIGhhbmRzaGFrZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJworICAgICAgICByZXN1bHQgPSBt
YXNrZXIubWFzayhzZWNvbmRfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGIiKCdLJVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlceDEyO1xu
Jlx4MDRzXG4jIgorICAgICAgICAgICAgYiJceDA1c1x4MWYlXHgwNHNceDBmLFx4MTUySzlceDEz
Mlx4MDU+XHgwNzZceDE5YyIsIHJlc3VsdCkKKworCitkZWYgZ2V0X3JhbmRvbV9zZWN0aW9uKHNv
dXJjZSwgbWluX251bV9jaHVua3MpOgorICAgIGNodW5rcyA9IFtdCisgICAgYnl0ZXNfY2h1bmtl
ZCA9IDAKKworICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291cmNlKToKKyAgICAgICAg
Y2h1bmtfc2l6ZSA9IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgMSwgbWluKGxlbihzb3Vy
Y2UpIC8gbWluX251bV9jaHVua3MsCisgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZSkgLSBi
eXRlc19jaHVua2VkKSkKKyAgICAgICAgY2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRl
c19jaHVua2VkICsgY2h1bmtfc2l6ZV0KKyAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKKyAg
ICAgICAgYnl0ZXNfY2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICByZXR1cm4gY2h1bmtzCisK
KworY2xhc3MgSW5mbGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIi
IkEgdW5pdHRlc3QgZm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgorICAgIGRl
ZiB0ZXN0X2luZmxhdGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBpbnB1dCA9IGIn
aGVsbG8nICsgYictJyAqIDMwMDAwICsgYidoZWxsbycKKyAgICAgICAgaW5mbGF0ZXIxNSA9IHV0
aWwuX0luZmxhdGVyKDE1KQorICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVmbGF0ZXIoMTUp
CisgICAgICAgIGluZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCisgICAgICAgIGRlZmxhdGVy
OCA9IHV0aWwuX0RlZmxhdGVyKDgpCisKKyAgICAgICAgY29tcHJlc3NlZDE1ID0gZGVmbGF0ZXIx
NS5jb21wcmVzc19hbmRfZmluaXNoKGlucHV0KQorICAgICAgICBjb21wcmVzc2VkOCA9IGRlZmxh
dGVyOC5jb21wcmVzc19hbmRfZmluaXNoKGlucHV0KQorCisgICAgICAgIGluZmxhdGVyMTUuYXBw
ZW5kKGNvbXByZXNzZWQxNSkKKyAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21wcmVzc2VkOCkK
KworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29tcHJlc3NlZDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVjb21wcmVzcygt
MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5kZWNvbXByZXNz
KC0xKSkKKworICAgIGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICByYW5k
b20uc2VlZChhPTApCisgICAgICAgIHNvdXJjZSA9IGInJy5qb2luKAorICAgICAgICAgICAgW2lu
dDJieXRlKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMCAqIDEwMjQp
XSkKKworICAgICAgICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwg
MTApCisgICAgICAgIHByaW50KCJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3Ig
YyBpbiBjaHVua2VkX2lucHV0XSkKKworICAgICAgICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVy
KDE1KQorICAgICAgICBjb21wcmVzc2VkID0gW10KKyAgICAgICAgZm9yIGNodW5rIGluIGNodW5r
ZWRfaW5wdXQ6CisgICAgICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVz
cyhjaHVuaykpCisgICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2Fu
ZF9maW5pc2goYicnKSkKKworICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRv
bV9zZWN0aW9uKHNvdXJjZSwgMTApCisgICAgICAgIHByaW50KCJFeHBlY3RhdGlvbiBjaHVuayBz
aXplczogJXIiICUKKyAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2V4cGVj
dGF0aW9uXSkKKworICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxhdGVyKDE1KQorICAgICAg
ICBpbmZsYXRlci5hcHBlbmQoYicnLmpvaW4oY29tcHJlc3NlZCkpCisgICAgICAgIGZvciBjaHVu
ayBpbiBjaHVua2VkX2V4cGVjdGF0aW9uOgorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5m
bGF0ZXIuZGVjb21wcmVzcyhsZW4oY2h1bmspKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjaHVuaywgZGVjb21wcmVzc2VkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBp
bmZsYXRlci5kZWNvbXByZXNzKC0xKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0ZGF0YS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMWFhNTU5NWNkZDEzNDA3ZjU3Mjhl
Y2Q1MzJhNWQxMjI2M2VmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdGRhdGEvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1Rlc3QgZGF0YSBkaXJlY3RvcnkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRf
YnlfdXNlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2Fib3J0X2J5X3VzZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2I1NDFiYjdlYzQwNDQ3NDU3OThh
Yjk3YWU3Y2NiYTU3ZTA0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDEg
QEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNo
YWtlCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAg
IHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIp
CisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBo
YW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzk4ZTk2Nzc4ZDhmNzVjOGQ3
NDI0YzI3YjQwYzFmYWQ5OTE4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMCBAQAor
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9j
aGVja193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY2NDQyZTY1Yjk5ZGQ3ZDQ1NWNiMDlhMGFmYzlkNDk1
OGRmMDQxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHly
aWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CisgICAgaWYgcmVxdWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAg
ICAgIHJldHVybgorICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVy
JyAlIHJlcXVlc3Qud3Nfb3JpZ2luKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6CisgICAgbWVzc2FnZSA9ICdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBm
b3IgJXMsICVzJyAlICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19w
cm90b2NvbCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VU
Ri04JykpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0
aW9uX2luX3RyYW5zZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDM5MDk5NGQ3MTJkZmU4ZjFlNGRm
ZGQ5NGZmNTZhYmU2NjczZDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpA
QCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEoKS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlv
biBmb3IgJXMsICVzJyAlCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNl
LCByZXF1ZXN0LndzX3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9h
dF90aGVfZW5kLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9z
dWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmZGRiNzQ0OTVlZWYxZDFmMzUx
ZTMzNGFjNDg1MDQ3M2VkMTY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CkBAIC0wLDAg
KzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBm
aWxlIG5hbWUuCisiIiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6CisgICAgbWVzc2FnZSA9ICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZv
ciAlcywgJXMnICUgKAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3By
b3RvY29sKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRG
LTgnKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3No
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhZmNmYTk3YTk1NGEyYmU2OTZjMTQ4ZGQxZjU1MzYyOGYxMjFlYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0
IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTm9uLWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisKK3dlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlID0gVHJ1ZQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQorCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdkYjFlNWFjMzI2
ZGY1MWM2OGUzZWQyNjkwYmUyYTAzYzg3M2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CkBAIC0wLDAg
KzEsNDEgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVk
IGZvciAlcywgJXMnICUgKHJlcXVlc3Qud3NfcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29s
KQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTM2NWRiZTMyYWFjOTEyMjkxYTM2M2E4YzgzZWJlOGUwZmVkNjBlOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBv
cnQubG9nCkBAIC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9j
YWxsYWJsZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L3N1Yi9wbGFpbl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25n
X2hhbmRzaGFrZV9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViYjBk
YTFhYjZiMGJkZDA3N2I4MzMyODEzNzZjMWE4MTE1NTBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFr
ZV9zaWdfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgorIiIiCisKKworZGVmIG5v
X3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitk
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3Vi
L3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZDI3ZDZiY2ZlZWFmMDJhOTQyYThiMzBiN2QzMzQwZmIyMGQyMzMwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9z
dWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldyb25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KKyIi
IgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBw
YXNzCisKKworZGVmIG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBt
ZXNzYWdlID0gJ3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMs
ICVzJyAlICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2Nv
bCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04Jykp
CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjMGY2
NTcyYjEyZmMxYjE0NjY2M2ZmZWFkNThjNDgyNWMyMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpAQCAt
MCwwICsxLDE5IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1Ro
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzZiOGUxOTIwZGMzYmVj
YTZlZTUwZGQzMjJiZDYwYTU4Y2M0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5ZWVhMTkxNGI5MWQ2ZjU1ZTU0Njdk
YjkwODE1MWQ2ODdlOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDMyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9y
X3Rlc3RpbmcucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3J1bl9hbGwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNf
cGF0aC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9leHRlbnNpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRp
bC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YmZkYmMxZjYxODk5NDZkYWViYzhlZjBjNWRjNTI3NThmY2E5NDQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvTElDRU5TRQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvUkVBRE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L0NIQU5HRVMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCmluZGV4IGIzOTk4ODI1NjFl
YzI5NWQ4ZGVmY2FkYmUxYjliOTk1YjFlYjllMTEuLmZmYTcwMjYwMWI2NTA5YjI1ZmJkNjc4N2Qx
ZTc2ODJlNWFjMzkzNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvQ0hBTkdFUwpAQCAtMyw2ICszLDI4IEBAIENoYW5nZWxvZyBmb3Igc2l4CiAKIFRoaXMgZmls
ZSBsaXN0cyB0aGUgY2hhbmdlcyBpbiBlYWNoIHNpeCB2ZXJzaW9uLgogCisxLjEzLjAKKy0tLS0t
LQorCistIElzc3VlICMyOTgsIHB1bGwgcmVxdWVzdCAjMjk5OiBBZGQgYHNpeC5tb3Zlcy5kYm1f
bmRibWAuCisKKy0gSXNzdWUgIzE1NTogQWRkIGBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjYCwg
d2hpY2ggYWxpYXNlcyB0aGUgYGNvbGxlY3Rpb25zYAorICBtb2R1bGUgb24gUHl0aG9uIDItMy4y
IGFuZCB0aGUgYGNvbGxlY3Rpb25zLmFiY2Agb24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlci4KKwor
LSBQdWxsIHJlcXVlc3QgIzMwNDogUmUtYWRkIGRpc3R1dGlscyBmYWxsYmFjayBpbiBgc2V0dXAu
cHlgLgorCistIFB1bGwgcmVxdWVzdCAjMzA1OiBPbiBQeXRob24gMy43LCBgd2l0aF9tZXRhY2xh
c3NgIHN1cHBvcnRzIGNsYXNzZXMgdXNpbmcgUEVQCisgIDU2MCBmZWF0dXJlcy4KKworMS4xMi4w
CistLS0tLS0KKworLSBJc3N1ZSAjMjU5LCBwdWxsIHJlcXVlc3QgIzI2MDogYHNpeC5hZGRfbWV0
YWNsYXNzYCBub3cgcHJlc2VydmVzCisgIGBfX3F1YWxuYW1lX19gIGZyb20gdGhlIG9yaWdpbmFs
IGNsYXNzLgorCistIFB1bGwgcmVxdWVzdCAjMjA0OiBBZGQgYHNpeC5lbnN1cmVfYmluYXJ5YCwg
YHNpeC5lbnN1cmVfdGV4dGAsIGFuZAorICBgc2l4LmVuc3VyZV9zdHJgLgorCiAxLjExLjAKIC0t
LS0tLQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQpp
bmRleCBmMzA2OGJmZDllMGNkODZkZTZiMmNlNWY1ZmE3ZmFmMzhjNjhlNWNlLi40YjA1YTU0NTI2
MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNF
TlNFCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1Db3B5cmlnaHQgKGMp
IDIwMTAtMjAxNyBCZW5qYW1pbiBQZXRlcnNvbgorQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVu
amFtaW4gUGV0ZXJzb24KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwgaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNWZmNGJiOGU0ZmEwYTFjYWY2ZDNkZjUy
OGFiYzIwYjNkZjVhZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1N
ZXRhZGF0YS1WZXJzaW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5
OiBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRw
Oi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgot
QXV0aG9yLWVtYWlsOiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0
aW9uOiAuLiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAg
ICAgICAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAg
ICAKLSAgICAgICAgLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3Np
eC5zdmc/YnJhbmNoPW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMt
Y2kub3JnL2JlbmphbWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDov
L2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6
dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNF
TlNFCi0gICAgICAgIAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmls
aXR5IGxpYnJhcnkuICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Ig
c21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9u
cyB3aXRoIHRoZSBnb2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBj
b21wYXRpYmxlIG9uIGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1
bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAg
ICAgIAotICAgICAgICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42
LiAgSXQgaXMgY29udGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBp
dCBjYW4gYmUgZWFzaWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQg
YW5kIGxpY2Vuc2UKLSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAK
LSAgICAgICAgT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4K
LSAgICAgICAgCi0gICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHVi
LmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQg
dGhlcmUuCi0gICAgICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0
aW5nIGluIGdlbmVyYWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAg
IGxpc3Q6IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBv
cnRpbmcKLSAgICAgICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1p
bmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1
YWdlIDo6IFB5dGhvbiA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZl
bG9wZXJzCi1DbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5z
ZQotQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVz
Ci1DbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JF
QURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9SRUFETUUucnN0CmluZGV4IGMxN2Q4ZDczMmFmODU5ZGUyYzQ2
YWJhZDAwNjQ0MzRhODRkYzE2MGEuLmE5OWU2ZjU1ODVhOTE4YjhhNjhjZWFiYWNlMmZiNmUzNGU5
MjE4M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVB
RE1FLnJzdApAQCAtMSwxMSArMSwxOCBAQAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMu
aW8vcHlwaS92L3NpeC5zdmcKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvc2l4CisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcK
KyAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6YWx0OiBzaXgg
b24gUHlQSQogCiAuLiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4
LnN2Zz9icmFuY2g9bWFzdGVyCi0gICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jl
bmphbWlucC9zaXgKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAv
c2l4CisgICA6YWx0OiBzaXggb24gVHJhdmlzQ0kKIAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNo
aWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCisuLiBpbWFnZTo6IGh0dHBzOi8v
cmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0
YXJnZXQ6IGh0dHBzOi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1l
bnRhdGlvbiBvbiBSZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbi5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9iZW5qYW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBM
aWNlbnNlIGJhZGdlCiAKIFNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGli
cmFyeS4gIEl0IHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCiBmb3Igc21vb3RoaW5nIG92ZXIg
dGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2Fs
IG9mCkBAIC0xNiw3ICsyMyw3IEBAIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBz
aW5jZSAyLjYuICBJdCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCiBmaWxlLCBzbyBp
dCBjYW4gYmUgZWFzaWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQg
YW5kIGxpY2Vuc2UKIG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKIAotT25saW5lIGRvY3VtZW50
YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KK09ubGluZSBkb2N1bWVudGF0aW9uIGlz
IGF0IGh0dHBzOi8vc2l4LnJlYWR0aGVkb2NzLmlvLy4KIAogQnVncyBjYW4gYmUgcmVwb3J0ZWQg
dG8gaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwog
YmUgZm91bmQgdGhlcmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKaW5kZXggYWQ5MjVjMWMxZDFlODM2
MTQ5MzcwNzJiYmU5NGU2YzMwNTZkMTg4ZC4uYjNkMTMyOGFkYzJhNDJhZmRlNzE5MTUxOTMwNjA0
MzM1MDRjZTIwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMzMsNyArMzMsNyBAQCBtYXN0
ZXJfZG9jID0gImluZGV4IgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2pl
Y3QuCiBwcm9qZWN0ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNywgQmVuamFtaW4g
UGV0ZXJzb24iCitjb3B5cmlnaHQgPSB1IjIwMTAtMjAxOSwgQmVuamFtaW4gUGV0ZXJzb24iCiAK
IHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikp
KQogZnJvbSBzaXggaW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRp
b24vaW5kZXgucnN0CmluZGV4IGRkMGRjNmUzYmRlOGM0NThkYzRmMTEzMzFlZjdiZTEyZWQ2N2Fi
YTguLmI3ZWMyNzU0ZWNmODNkNWEyOTFjMTM5ODg3MzhmZWY2MjA0NWM5ODYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50
YXRpb24vaW5kZXgucnN0CkBAIC0xMyw3ICsxMyw3IEBAIFB5dGhvbiAzLiAgSXQgaXMgaW50ZW5k
ZWQgdG8gc3VwcG9ydCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMK
IHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBm
aWxlLCBzbyBpdCBpcyBwYWlubGVzcwogdG8gY29weSBpbnRvIGEgcHJvamVjdC4KIAotU2l4IGNh
biBiZSBkb3dubG9hZGVkIG9uIGBQeVBpIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3Np
eC8+YF8uICBJdHMgYnVnCitTaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UEkgPGh0dHBzOi8v
cHlwaS5vcmcvcHJvamVjdC9zaXgvPmBfLiAgSXRzIGJ1ZwogdHJhY2tlciBhbmQgY29kZSBob3N0
aW5nIGlzIG9uIGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4PmBfLgog
CiBUaGUgbmFtZSwgInNpeCIsIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCAyKjMgZXF1YWxzIDYu
ICBXaHkgbm90IGFkZGl0aW9uPwpAQCAtNTAsOCArNTAsOSBAQCBTaXggcHJvdmlkZXMgY29uc3Rh
bnRzIHRoYXQgbWF5IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5n
CiAKIC4uIGRhdGE6OiBjbGFzc190eXBlcwogCi0gICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIElu
IFB5dGhvbiAyLCB0aGlzIGVuY29tcGFzc2VzIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlCi0gICBj
bGFzc2VzLiAgSW4gUHl0aG9uIDMsIHRoaXMgaXMganVzdCBuZXctc3R5bGVzLgorICAgUG9zc2li
bGUgY2xhc3MgdHlwZXMuICBJbiBQeXRob24gMiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUK
KyAgIDpkYXRhOmBweTI6dHlwZXMuQ2xhc3NUeXBlYCBhbmQgbmV3LXN0eWxlIGBgdHlwZWBgIGNs
YXNzZXMuICBJbiBQeXRob24gMywKKyAgIHRoaXMgaXMganVzdCBgYHR5cGVgYC4KIAogCiAuLiBk
YXRhOjogaW50ZWdlcl90eXBlcwpAQCAtNzUsNyArNzYsOSBAQCBTaXggcHJvdmlkZXMgY29uc3Rh
bnRzIHRoYXQgbWF5IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5n
CiAuLiBkYXRhOjogYmluYXJ5X3R5cGUKIAogICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFy
eSBkYXRhLiAgVGhpcyBpcyA6ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVu
YzpgcHkzOmJ5dGVzYCBpbiBQeXRob24gMy4KKyAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhv
biAzLiAgUHl0aG9uIDIuNiBhbmQgMi43IGluY2x1ZGUgYGBieXRlc2BgIGFzIGEKKyAgIGJ1aWx0
aW4gYWxpYXMgb2YgYGBzdHJgYCwgc28gc2l44oCZcyB2ZXJzaW9uIGlzIG9ubHkgbmVjZXNzYXJ5
IGZvciBQeXRob24gMi41CisgICBjb21wYXRpYmlsaXR5LgogCiAKIC4uIGRhdGE6OiBNQVhTSVpF
CkBAIC0zNzEsNyArMzc0LDcgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4K
IC4uIGZ1bmN0aW9uOjogYihkYXRhKQogCiAgICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRh
dGEqIHNob3VsZCBhbHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0
aG9uIDIsIDpmdW5jOmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpk
YXRhKiBpcyBlbmNvZGVkCisgICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYW4gOC1iaXQg
c3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBsYXRp
bi0xIGVuY29kaW5nIHRvIGJ5dGVzLgogCiAKQEAgLTQzMyw2ICs0MzYsMjQgQEAgc3RyaW5nIGRh
dGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4KICAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGlu
IFB5dGhvbiAzLgogCiAKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0n
dXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YGJpbmFy
eV90eXBlYC4gKmVuY29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpg
cHkzOnN0ci5lbmNvZGVgCisKKworLi4gZnVuY3Rpb246OiBlbnN1cmVfc3RyKHMsIGVuY29kaW5n
PSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byBgYHN0cmBgLiAq
ZW5jb2RpbmcqLCAqZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVu
Y29kZWAKKworCisuLiBmdW5jdGlvbjo6IGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcs
IGVycm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byA6ZGF0YTpgdGV4dF90eXBlYC4g
KmVuY29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5l
bmNvZGVgCisKKwogLi4gZGF0YTo6IFN0cmluZ0lPCiAKICAgIFRoaXMgaXMgYSBmYWtlIGZpbGUg
b2JqZWN0IGZvciB0ZXh0dWFsIGRhdGEuICBJdCdzIGFuIGFsaWFzIGZvcgpAQCAtNTAzLDcgKzUy
NCw3IEBAIFB5dGhvbiAyIG9yIDMsIHdyaXRlOjoKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCBo
dG1sX3BhcnNlcgogCiBTaW1pbGFybHksIHRvIGdldCB0aGUgZnVuY3Rpb24gdG8gcmVsb2FkIG1v
ZHVsZXMsIHdoaWNoIHdhcyBtb3ZlZCBmcm9tIHRoZQotYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBg
aW1wYGAgbW9kdWxlLCB1c2U6OgorYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wb3J0bGliYGAg
bW9kdWxlLCB1c2U6OgogCiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmVsb2FkX21vZHVsZQog
CkBAIC01NjMsNyArNTg0LDExIEBAIFN1cHBvcnRlZCByZW5hbWVzOgogKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBjU3RyaW5nSU9gYCAg
ICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6Y1N0cmluZ0lPLlN0cmluZ0lPYCAgICAgIHwgOmNs
YXNzOmBweTM6aW8uU3RyaW5nSU9gICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRibV9nbnVgYCAgICAgICAg
ICAgICAgICAgIHwgOmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6
YHB5MzpkYm0uZ251YCAgICAgICAgICAgICAgICAgIHwKK3wgYGBjb2xsZWN0aW9uc19hYmNgYCAg
ICAgICAgICB8IDptb2Q6YHB5Mjpjb2xsZWN0aW9uc2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkz
OmNvbGxlY3Rpb25zLmFiY2AgKDMuMyspICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAg
ICAgIHwgOm1vZDpgcHkyOmdkYm1gICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJt
LmdudWAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGJtX25kYm1gYCAgICAgICAgICAgICAgICAg
fCA6bW9kOmBweTI6ZGJtYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpkYm0ubmRi
bWAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBfZHVtbXlfdGhyZWFkYGAgICAgICAgICAgICB8IDpt
b2Q6YHB5MjpkdW1teV90aHJlYWRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOl9kdW1teV90aHJl
YWRgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2V0dXAuY2ZnCmluZGV4IGUxMjA2OGM1NzNjNmY2ZWZkM2E5Mzc5NmU2ZGNlZWFlMTg4YjM1
Y2QuLjMxN2UwMTZjOGNjMDRkMDk3YjNiNjk2Mzk3MTAzNTdkZWIxYzk3MmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NldHVwLmNmZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKQEAgLTUsMTcgKzUs
MTYgQEAgdW5pdmVyc2FsID0gMQogbWF4LWxpbmUtbGVuZ3RoID0gMTAwCiBpZ25vcmUgPSBGODIx
CiAKLVt0b29sOnB5dGVzdF0KLW1pbnZlcnNpb24gPSAyLjIuMAotcGVwOGlnbm9yZSA9IAotCWRv
Y3VtZW50YXRpb24vKi5weSBBTEwKLQl0ZXN0X3NpeC5weSBBTEwKLWZsYWtlcy1pZ25vcmUgPSAK
LQlkb2N1bWVudGF0aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi0Jc2l4LnB5IFVuZGVm
aW5lZE5hbWUKK1ttZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKIAotW2VnZ19pbmZv
XQotdGFnX2J1aWxkID0gCi10YWdfZGF0ZSA9IDAKK1t0b29sOnB5dGVzdF0KK21pbnZlcnNpb249
Mi4yLjAKK3BlcDhpZ25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0ZXN0
X3NpeC5weSBBTEwKIAorZmxha2VzLWlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8qLnB5IEFM
TAorICAgIHRlc3Rfc2l4LnB5IEFMTAorICAgIHNpeC5weSBVbmRlZmluZWROYW1lCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmluZGV4IGNhNDRlMTAw
ZTQyN2VjZjU0MjRiYWNiODRkNWViNmY1YzcxMmYyMzEuLjk3YzY4NWI1YTUwYmQ5NzY5ODA0ODYx
ZjRhZDdhODM5NjIxNWQyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L3NldHVwLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAx
NyBCZW5qYW1pbiBQZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQ
ZXRlcnNvbgogIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
CkBAIC0zMSw2ICszMSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBzaXgKIAogc2l4
X2NsYXNzaWZpZXJzID0gWworICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rp
b24vU3RhYmxlIiwKICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIiLAog
ICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCiAgICAgIkludGVuZGVk
IEF1ZGllbmNlIDo6IERldmVsb3BlcnMiLApAQCAtNDYsMTEgKzQ3LDEyIEBAIHNldHVwKG5hbWU9
InNpeCIsCiAgICAgICB2ZXJzaW9uPXNpeC5fX3ZlcnNpb25fXywKICAgICAgIGF1dGhvcj0iQmVu
amFtaW4gUGV0ZXJzb24iLAogICAgICAgYXV0aG9yX2VtYWlsPSJiZW5qYW1pbkBweXRob24ub3Jn
IiwKLSAgICAgIHVybD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iLAorICAgICAg
dXJsPSJodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeCIsCiAgICAgICB0ZXN0c19yZXF1
aXJlPVsicHl0ZXN0Il0sCiAgICAgICBweV9tb2R1bGVzPVsic2l4Il0sCiAgICAgICBkZXNjcmlw
dGlvbj0iUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMiLAogICAgICAgbG9u
Z19kZXNjcmlwdGlvbj1zaXhfbG9uZ19kZXNjcmlwdGlvbiwKICAgICAgIGxpY2Vuc2U9Ik1JVCIs
Ci0gICAgICBjbGFzc2lmaWVycz1zaXhfY2xhc3NpZmllcnMKKyAgICAgIGNsYXNzaWZpZXJzPXNp
eF9jbGFzc2lmaWVycywKKyAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjYsICE9My4wLiosICE9
My4xLioiLAogICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWlu
Zm8vSU5TVEFMTEVSIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmExYjU4OWUzOGEzMjA0MWU0OTMzMmU1ZTgxYzJkMzYzZGM0MThkNjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKQEAg
LTAsMCArMSBAQAorcGlwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5m
by9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YjA1YTU0NTI2MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpAQCAtMCwwICsx
LDE4IEBACitDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgorCitQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5IG9mCit0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgordGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0
cyB0bwordXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YKK3RoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKK3N1
YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh
bGwKK2NvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1JTIE9SCitDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKK0lOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCitDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURB
VEEgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MGM4ZjUxZTFmMzY2MTM4ZDM4MTZhYmUwZGRiM2VmZWU0MTc1YzNjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKQEAgLTAsMCArMSw1MiBA
QAorTWV0YWRhdGEtVmVyc2lvbjogMi4xCitOYW1lOiBzaXgKK1ZlcnNpb246IDEuMTMuMAorU3Vt
bWFyeTogUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKK0hvbWUtcGFnZTog
aHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJz
b24KK0F1dGhvci1lbWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZworTGljZW5zZTogTUlUCitQbGF0
Zm9ybTogVU5LTk9XTgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9k
dWN0aW9uL1N0YWJsZQorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9u
IDo6IDIKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitD
bGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBM
aWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogVG9waWMg
OjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6
OiBVdGlsaXRpZXMKK1JlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4wLiosICE9My4xLioKKwor
Li4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkK
KworLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJh
bmNoPW1hc3RlcgorICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9z
aXgKKyAgIDphbHQ6IHNpeCBvbiBUcmF2aXNDSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRo
ZWRvY3Mub3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlv
biBvbiBSZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9i
YWRnZS9saWNlbnNlLU1JVC1ncmVlbi5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9iZW5qYW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNl
IGJhZGdlCisKK1NpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4g
IEl0IHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCitmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRp
ZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCit3
cml0aW5nIFB5dGhvbiBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJz
aW9ucy4gIFNlZSB0aGUKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hh
dCBpcyBwcm92aWRlZC4KKworU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNl
IDIuNi4gIEl0IGlzIGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KK2ZpbGUsIHNvIGl0IGNh
biBiZSBlYXNpbHkgY29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhlIGNvcHlyaWdodCBhbmQg
bGljZW5zZQorbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQorCitPbmxpbmUgZG9jdW1lbnRhdGlv
biBpcyBhdCBodHRwczovL3NpeC5yZWFkdGhlZG9jcy5pby8uCisKK0J1Z3MgY2FuIGJlIHJlcG9y
dGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFs
c28KK2JlIGZvdW5kIHRoZXJlLgorCitGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5n
IGluIGdlbmVyYWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCitsaXN0OiBodHRw
czovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JEIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NzY2NWM5OTY0MjU1
ZDE3MDJmMDE2YzhiZDExZGFlZGU1MTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9z
aXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQKQEAgLTAsMCArMSw4IEBACitzaXgtMS4xMy4wLmRp
c3QtaW5mby9JTlNUQUxMRVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJB
UDd6ZU51d3ZGUWcsNA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2Jq
QWNYR25pb3cyd3lnNUJWS09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KK3NpeC0xLjEzLjAu
ZGlzdC1pbmZvL01FVEFEQVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEz
bWtfeGtuWjhSVjR3LDE5NDANCitzaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KK3NpeC0x
LjEzLjAuZGlzdC1pbmZvL1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BD
R21FUEhjLWdwQ3E1QlJnLDExMA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQs
c2hhMjU2PV9pVkhfaVlFdEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KK3Np
eC5weSxzaGEyNTY9bzlXSE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywz
MzA1MQ0KK3NpeC5weWMsLA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1dIRUVMIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTAwMTIzNTUzMzNlMDY2NGZhYzMxMjM4YWEwNDIxNmZmNTM2MjIxNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCkBAIC0wLDAgKzEsNiBA
QAorV2hlZWwtVmVyc2lvbjogMS4wCitHZW5lcmF0b3I6IGJkaXN0X3doZWVsICgwLjMyLjEpCitS
b290LUlzLVB1cmVsaWI6IHRydWUKK1RhZzogcHkyLW5vbmUtYW55CitUYWc6IHB5My1ub25lLWFu
eQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZmUyZmNlNDk4OTU1YjYyODAxNDYxOGIyOGM2YmNmMTUyNDY2YTRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApAQCAt
MCwwICsxIEBACitzaXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZv
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzVlMWQyMmNiODYzMGNjZDIwYzIwM2Q2Mzg5YTVhZTYyNTAwYWY5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAu
ZGlzdC1pbmZvL0lOU1RBTExFUgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VO
U0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Np
eC0xLjEzLjAuZGlzdC1pbmZvL1JFQ09SRAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZv
L1dIRUVMCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5CmluZGV4IDZiZjRmZDM4
MTA0NjIwN2E0Nzk0YWVlMTdiZTZkMjJkYjIzN2YzMGEuLmQwYWVjZTg5ZmE0YWFlOTQ4ZDc1ZThl
ZjIyNzdjZTI0OTUxZWJiMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9zaXgucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJl
bmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVy
c29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAg
LTI5LDcgKzI5LDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAKIF9fYXV0aG9yX18gPSAi
QmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IgotX192ZXJzaW9uX18gPSAi
MS4xMS4wIgorX192ZXJzaW9uX18gPSAiMS4xMy4wIgogCiAKICMgVXNlZnVsIGZvciB2ZXJ5IGNv
YXJzZSB2ZXJzaW9uIGRpZmZlcmVudGlhdGlvbi4KQEAgLTI1NSw4ICsyNTUsMTAgQEAgX21vdmVk
X2F0dHJpYnV0ZXMgPSBbCiAgICAgTW92ZWRBdHRyaWJ1dGUoInppcF9sb25nZXN0IiwgIml0ZXJ0
b29scyIsICJpdGVydG9vbHMiLCAiaXppcF9sb25nZXN0IiwgInppcF9sb25nZXN0IiksCiAgICAg
TW92ZWRNb2R1bGUoImJ1aWx0aW5zIiwgIl9fYnVpbHRpbl9fIiksCiAgICAgTW92ZWRNb2R1bGUo
ImNvbmZpZ3BhcnNlciIsICJDb25maWdQYXJzZXIiKSwKKyAgICBNb3ZlZE1vZHVsZSgiY29sbGVj
dGlvbnNfYWJjIiwgImNvbGxlY3Rpb25zIiwgImNvbGxlY3Rpb25zLmFiYyIgaWYgc3lzLnZlcnNp
b25faW5mbyA+PSAoMywgMykgZWxzZSAiY29sbGVjdGlvbnMiKSwKICAgICBNb3ZlZE1vZHVsZSgi
Y29weXJlZyIsICJjb3B5X3JlZyIpLAogICAgIE1vdmVkTW9kdWxlKCJkYm1fZ251IiwgImdkYm0i
LCAiZGJtLmdudSIpLAorICAgIE1vdmVkTW9kdWxlKCJkYm1fbmRibSIsICJkYm0iLCAiZGJtLm5k
Ym0iKSwKICAgICBNb3ZlZE1vZHVsZSgiX2R1bW15X3RocmVhZCIsICJkdW1teV90aHJlYWQiLCAi
X2R1bW15X3RocmVhZCIpLAogICAgIE1vdmVkTW9kdWxlKCJodHRwX2Nvb2tpZWphciIsICJjb29r
aWVsaWIiLCAiaHR0cC5jb29raWVqYXIiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVz
IiwgIkNvb2tpZSIsICJodHRwLmNvb2tpZXMiKSwKQEAgLTYzNyw2ICs2MzksNyBAQCBpZiBQWTM6
CiAgICAgaW1wb3J0IGlvCiAgICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwogICAgIEJ5dGVzSU8g
PSBpby5CeXRlc0lPCisgICAgZGVsIGlvCiAgICAgX2Fzc2VydENvdW50RXF1YWwgPSAiYXNzZXJ0
Q291bnRFcXVhbCIKICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzFdIDw9IDE6CiAgICAgICAgIF9h
c3NlcnRSYWlzZXNSZWdleCA9ICJhc3NlcnRSYWlzZXNSZWdleHAiCkBAIC04MjQsNyArODI3LDE1
IEBAIGRlZiB3aXRoX21ldGFjbGFzcyhtZXRhLCAqYmFzZXMpOgogICAgIGNsYXNzIG1ldGFjbGFz
cyh0eXBlKToKIAogICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQp
OgotICAgICAgICAgICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisgICAgICAgICAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywgNyk6CisgICAgICAgICAgICAgICAgIyBUaGlz
IHZlcnNpb24gaW50cm9kdWNlZCBQRVAgNTYwIHRoYXQgcmVxdWlyZXMgYSBiaXQKKyAgICAgICAg
ICAgICAgICAjIG9mIGV4dHJhIGNhcmUgKHdlIG1pbWljIHdoYXQgaXMgZG9uZSBieSBfX2J1aWxk
X2NsYXNzX18pLgorICAgICAgICAgICAgICAgIHJlc29sdmVkX2Jhc2VzID0gdHlwZXMucmVzb2x2
ZV9iYXNlcyhiYXNlcykKKyAgICAgICAgICAgICAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3Qg
YmFzZXM6CisgICAgICAgICAgICAgICAgICAgIGRbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcwor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IGJhc2Vz
CisgICAgICAgICAgICByZXR1cm4gbWV0YShuYW1lLCByZXNvbHZlZF9iYXNlcywgZCkKIAogICAg
ICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKGNscywgbmFtZSwgdGhp
c19iYXNlcyk6CkBAIC04NDQsMTMgKzg1NSw3NCBAQCBkZWYgYWRkX21ldGFjbGFzcyhtZXRhY2xh
c3MpOgogICAgICAgICAgICAgICAgIG9yaWdfdmFycy5wb3Aoc2xvdHNfdmFyKQogICAgICAgICBv
cmlnX3ZhcnMucG9wKCdfX2RpY3RfXycsIE5vbmUpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19f
d2Vha3JlZl9fJywgTm9uZSkKKyAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX3F1YWxuYW1lX18n
KToKKyAgICAgICAgICAgIG9yaWdfdmFyc1snX19xdWFsbmFtZV9fJ10gPSBjbHMuX19xdWFsbmFt
ZV9fCiAgICAgICAgIHJldHVybiBtZXRhY2xhc3MoY2xzLl9fbmFtZV9fLCBjbHMuX19iYXNlc19f
LCBvcmlnX3ZhcnMpCiAgICAgcmV0dXJuIHdyYXBwZXIKIAogCitkZWYgZW5zdXJlX2JpbmFyeShz
LCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIiIkNvZXJjZSAqKnMq
KiB0byBzaXguYmluYXJ5X3R5cGUuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmlj
b2RlYCAtPiBlbmNvZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisKKyAgICBG
b3IgUHl0aG9uIDM6CisgICAgICAtIGBzdHJgIC0+IGVuY29kZWQgdG8gYGJ5dGVzYAorICAgICAg
LSBgYnl0ZXNgIC0+IGBieXRlc2AKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRf
dHlwZSk6CisgICAgICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVs
aWYgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxz
ZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0
eXBlKHMpKQorCisKK2RlZiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0n
c3RyaWN0Jyk6CisgICAgIiIiQ29lcmNlICpzKiB0byBgc3RyYC4KKworICAgIEZvciBQeXRob24g
MjoKKyAgICAgIC0gYHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAg
LT4gYHN0cmAKKworICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAg
ICAgIC0gYGJ5dGVzYCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgbm90IGlz
aW5zdGFuY2UocywgKHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorICAgIGlmIFBZMiBh
bmQgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2Rp
bmcsIGVycm9ycykKKyAgICBlbGlmIFBZMyBhbmQgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6
CisgICAgICAgIHMgPSBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIHJldHVybiBzCisK
KworZGVmIGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6
CisgICAgIiIiQ29lcmNlICpzKiB0byBzaXgudGV4dF90eXBlLgorCisgICAgRm9yIFB5dGhvbiAy
OgorICAgICAgLSBgdW5pY29kZWAgLT4gYHVuaWNvZGVgCisgICAgICAtIGBzdHJgIC0+IGB1bmlj
b2RlYAorCisgICAgRm9yIFB5dGhvbiAzOgorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorICAgICAg
LSBgYnl0ZXNgIC0+IGRlY29kZWQgdG8gYHN0cmAKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNl
KHMsIGJpbmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJv
cnMpCisgICAgZWxpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBz
CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUg
JyVzJyIgJSB0eXBlKHMpKQorCisKKwogZGVmIHB5dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZShr
bGFzcyk6CiAgICAgIiIiCi0gICAgQSBkZWNvcmF0b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9f
IGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCisgICAgQSBjbGFzcyBkZWNvcmF0
b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0
aG9uIDIuCiAgICAgVW5kZXIgUHl0aG9uIDMgaXQgZG9lcyBub3RoaW5nLgogCiAgICAgVG8gc3Vw
cG9ydCBQeXRob24gMiBhbmQgMyB3aXRoIGEgc2luZ2xlIGNvZGUgYmFzZSwgZGVmaW5lIGEgX19z
dHJfXyBtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
dGVzdF9zaXgucHkKaW5kZXggNDNlNzQyNmRlYTEyNDFiYmQzNzFkMmYyNGY2M2Y1MTA0MjdhNTE5
Zi4uM2VlZmNlMzdjMzI4ZDdiMTViMjNlZTgzZGQ4OThjNGIzZTU3NjMzZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvdGVzdF9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkKQEAgLTEsNCAr
MSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENv
cHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTIyLDggKzIyLDkgQEAgaW1wb3J0
IG9wZXJhdG9yCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1w
b3J0IGFiYwogCi1pbXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKIAogaW1wb3J0IHNpeAogCkBAIC04
MCw3ICs4MSw3IEBAIGRlZiB0ZXN0X01BWFNJWkUoKToKICAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6CiAgICAgICAgICMgQmVmb3JlIFB5dGhvbiAyLjYuCiAgICAgICAgIHBhc3MKLSAgICBweS50
ZXN0LnJhaXNlcygKKyAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAoVmFsdWVFcnJvciwgT3Zl
cmZsb3dFcnJvciksCiAgICAgICAgIG9wZXJhdG9yLm11bCwgW05vbmVdLCBzaXguTUFYU0laRSAr
IDEpCiAKQEAgLTExMiw3ICsxMTMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXhjZXB0
IEltcG9ydEVycm9yOgogICAgICAgICBoYXZlX2dkYm0gPSBGYWxzZQogCi1AcHkudGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVt
X25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGlu
IHNpeC5fbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6
CiAgICAgIiIiRW5zdXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0x
MjIsMzYgKzEyMywzNiBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgICAg
ICAgICBfX2ltcG9ydF9fKCJzaXgubW92ZXMuIiArIGl0ZW1fbmFtZSkKICAgICBleGNlcHQgQXR0
cmlidXRlRXJyb3I6CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAiemlwX2xvbmdlc3QiIGFuZCBz
eXMudmVyc2lvbl9pbmZvIDwgKDIsIDYpOgotICAgICAgICAgICAgcHkudGVzdC5za2lwKCJ6aXBf
bG9uZ2VzdCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJ6aXBfbG9uZ2VzdCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKICAgICBleGNlcHQgSW1wb3J0
RXJyb3I6CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAid2lucmVnIiBhbmQgbm90IHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCJ3aW4iKToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiV2luZG93
cyBvbmx5IG1vZHVsZSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1v
ZHVsZSIpCiAgICAgICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJ0a2ludGVyIik6CiAgICAg
ICAgICAgICBpZiBub3QgaGF2ZV90a2ludGVyOgotICAgICAgICAgICAgICAgIHB5LnRlc3Quc2tp
cCgicmVxdWlyZXMgdGtpbnRlciIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVp
cmVzIHRraW50ZXIiKQogICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ0a2ludGVyX3R0ayIg
YW5kIHN5cy52ZXJzaW9uX2luZm9bOjJdIDw9ICgyLCA2KToKLSAgICAgICAgICAgICAgICBweS50
ZXN0LnNraXAoInR0ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKKyAgICAgICAgICAgICAgICBw
eXRlc3Quc2tpcCgidHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogICAgICAgICBpZiBpdGVt
X25hbWUuc3RhcnRzd2l0aCgiZGJtX2dudSIpIGFuZCBub3QgaGF2ZV9nZGJtOgotICAgICAgICAg
ICAgcHkudGVzdC5za2lwKCJyZXF1aXJlcyBnZGJtIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJyZXF1aXJlcyBnZGJtIikKICAgICAgICAgcmFpc2UKICAgICBpZiBzeXMudmVyc2lvbl9pbmZv
WzoyXSA+PSAoMiwgNik6CiAgICAgICAgIGFzc2VydCBpdGVtX25hbWUgaW4gZGlyKHNpeC5tb3Zl
cykKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5t
YXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBb
aXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3BhcnNlX21vdmVkX2F0dHJpYnV0ZXNd
KQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcGFyc2UoaXRlbV9uYW1lKToKICAgICAiIiJF
bnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKICAgICBpZiBpdGVtX25h
bWUgPT0gIlBhcnNlUmVzdWx0IiBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgyLCA1KToKLSAgICAg
ICAgcHkudGVzdC5za2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZvdW5kIG9uIDIuNSsiKQorICAg
ICAgICBweXRlc3Quc2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKICAg
ICBpZiBpdGVtX25hbWUgaW4gKCJwYXJzZV9xcyIsICJwYXJzZV9xc2wiKSBhbmQgc3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KToKLSAgICAgICAgcHkudGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBu
ZXcgaW4gMi42IikKKyAgICAgICAgcHl0ZXN0LnNraXAoInBhcnNlX3FzW2xdIGlzIG5ldyBpbiAy
LjYiKQogICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNz
ZXJ0IGl0ZW1fbmFtZSBpbiBkaXIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSkKICAgICBnZXRhdHRy
KHNpeC5tb3Zlcy51cmxsaWIucGFyc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25h
bWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNp
eC5fdXJsbGliX2Vycm9yX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191
cmxsaWJfZXJyb3IoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxv
YWRzIGNvcnJlY3RseS4iIiIKQEAgLTE2MCw3ICsxNjEsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1z
X3VybGxpYl9lcnJvcihpdGVtX25hbWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5l
cnJvciwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFt
ZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVxdWVzdF9t
b3ZlZF9hdHRyaWJ1dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JlcXVlc3QoaXRl
bV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4i
IiIKQEAgLTE2OSw3ICsxNzAsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0
KGl0ZW1fbmFtZSk6CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlcXVlc3QsIGl0ZW1f
bmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVz
dC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3Jlc3BvbnNlX21vdmVkX2F0dHJp
YnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToK
ICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE3
OCw3ICsxNzksNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNwb25zZShpdGVtX25h
bWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZSwgaXRlbV9uYW1lKQog
CiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVt
Lm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcm9ib3RwYXJzZXJfbW92ZWRfYXR0cmlidXRl
c10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yb2JvdHBhcnNlcihpdGVtX25hbWUpOgog
ICAgICIiIkVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMjQz
LDcgKzI0NCw3IEBAIGRlZiB0ZXN0X3ppcCgpOgogICAgIGFzc2VydCBzaXguYWR2YW5jZV9pdGVy
YXRvcih6aXAocmFuZ2UoMiksIHJhbmdlKDIpKSkgPT0gKDAsIDApCiAKIAotQHB5LnRlc3QubWFy
ay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm8gPCAoMiwgNikiKQorQHB5dGVzdC5tYXJrLnNraXBp
Zigic3lzLnZlcnNpb25faW5mbyA8ICgyLCA2KSIpCiBkZWYgdGVzdF96aXBfbG9uZ2VzdCgpOgog
ICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCB6aXBfbG9uZ2VzdAogICAgIGl0ID0gemlwX2xvbmdl
c3QocmFuZ2UoMiksIHJhbmdlKDEpKQpAQCAtMzIxLDcgKzMyMiw3IEBAIGNsYXNzIFRlc3RDdXN0
b21pemVkTW92ZXM6CiAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3JlbW92ZShzZWxmKToKLSAgICAg
ICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5yZW1vdmVfbW92ZSwgImVnZ3Mi
KQorICAgICAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUs
ICJlZ2dzIikKIAogCiBkZWYgdGVzdF9nZXRfdW5ib3VuZF9mdW5jdGlvbigpOgpAQCAtMzM3LDcg
KzMzOCw3IEBAIGRlZiB0ZXN0X2dldF9tZXRob2Rfc2VsZigpOgogICAgICAgICAgICAgcGFzcwog
ICAgIHggPSBYKCkKICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2Rfc2VsZih4Lm0pIGlzIHgKLSAg
ICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIp
CisgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwg
NDIpCiAKIAogZGVmIHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgpAQCAtMzQ2LDcgKzM0Nyw3
IEBAIGRlZiB0ZXN0X2dldF9tZXRob2RfZnVuY3Rpb24oKToKICAgICAgICAgICAgIHBhc3MKICAg
ICB4ID0gWCgpCiAgICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uKHgubSkgaXMgWC5f
X2RpY3RfX1sibSJdCi0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRf
bWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJy
b3IsIHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dldF9m
dW5jdGlvbl9jbG9zdXJlKCk6CkBAIC0zNjQsNyArMzY1LDcgQEAgZGVmIHRlc3RfZ2V0X2Z1bmN0
aW9uX2NvZGUoKToKICAgICAgICAgcGFzcwogICAgIGFzc2VydCBpc2luc3RhbmNlKHNpeC5nZXRf
ZnVuY3Rpb25fY29kZShmKSwgdHlwZXMuQ29kZVR5cGUpCiAgICAgaWYgbm90IGhhc2F0dHIoc3lz
LCAicHlweV92ZXJzaW9uX2luZm8iKToKLSAgICAgICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRl
RXJyb3IsIHNpeC5nZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKKyAgICAgICAgcHl0ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQogCiAK
IGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9kZWZhdWx0cygpOgpAQCAtNDA0LDcgKzQwNSw3IEBAIGRl
ZiB0ZXN0X2RpY3Rpb25hcnlfaXRlcmF0b3JzKG1vbmtleXBhdGNoKToKICAgICAgICAgaXQgPSBt
ZXRoKGQpCiAgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpdCwgbGlzdCkKICAgICAgICAg
YXNzZXJ0IGxpc3QoaXQpID09IGxpc3QoZ2V0YXR0cihkLCBuYW1lKSgpKQotICAgICAgICBweS50
ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaXguYWR2YW5jZV9pdGVyYXRvciwgaXQpCisgICAg
ICAgIHB5dGVzdC5yYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0
KQogICAgICAgICByZWNvcmQgPSBbXQogICAgICAgICBkZWYgd2l0aF9rdygqYXJncywgKiprdyk6
CiAgICAgICAgICAgICByZWNvcmQuYXBwZW5kKGt3WyJrdyJdKQpAQCAtNDE2LDE3ICs0MTcsOSBA
QCBkZWYgdGVzdF9kaWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIG1v
bmtleXBhdGNoLnVuZG8oKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9p
bmZvWzoyXSA8ICgyLCA3KSIsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSIsCiAgICAgICAgICAgICAgICAgcmVhc29uPSJ2aWV3IG1ldGhvZHMgb24g
ZGljdGlvbmFyaWVzIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogZGVmIHRlc3RfZGljdGlvbmFy
eV92aWV3cygpOgotICAgIGRlZiBzdG9ja19tZXRob2RfbmFtZSh2aWV3d2hhdCk6Ci0gICAgICAg
ICIiIkdpdmVuIGEgbWV0aG9kIHN1ZmZpeCBsaWtlICJrZXlzIiBvciAidmFsdWVzIiwgcmV0dXJu
IHRoZSBuYW1lCi0gICAgICAgIG9mIHRoZSBkaWN0IG1ldGhvZCB0aGF0IGRlbGl2ZXJzIHRob3Nl
IG9uIHRoZSB2ZXJzaW9uIG9mIFB5dGhvbgotICAgICAgICB3ZSdyZSBydW5uaW5nIGluLiIiIgot
ICAgICAgICBpZiBzaXguUFkzOgotICAgICAgICAgICAgcmV0dXJuIHZpZXd3aGF0Ci0gICAgICAg
IHJldHVybiAndmlldycgKyB2aWV3d2hhdAotCiAgICAgZCA9IGRpY3QoemlwKHJhbmdlKDEwKSwg
KHJhbmdlKDExLCAyMCkpKSkKICAgICBmb3IgbmFtZSBpbiAia2V5cyIsICJ2YWx1ZXMiLCAiaXRl
bXMiOgogICAgICAgICBtZXRoID0gZ2V0YXR0cihzaXgsICJ2aWV3IiArIG5hbWUpCkBAIC00NDAs
OCArNDMzLDggQEAgZGVmIHRlc3RfYWR2YW5jZV9pdGVyYXRvcigpOgogICAgIGl0ID0gaXRlcihs
KQogICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gMQogICAgIGFzc2VydCBzaXgubmV4dChpdCkg
PT0gMgotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKLSAg
ICBweS50ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0
LnJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfaXRlcmF0b3IoKToKQEAg
LTQ4OSw3ICs0ODIsNyBAQCBkZWYgdGVzdF9jcmVhdGVfdW5ib3VuZF9tZXRob2QoKToKICAgICBk
ZWYgZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKICAgICB1ID0gc2l4LmNyZWF0ZV91bmJv
dW5kX21ldGhvZChmLCBYKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKKyAgICBw
eXRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKICAgICBpZiBzaXguUFkyOgogICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZSh1LCB0eXBlcy5NZXRob2RUeXBlKQogICAgIHggPSBYKCkKQEAgLTUzNywx
MyArNTMwLDEzIEBAIGRlZiB0ZXN0X3VuaWNocigpOgogCiBkZWYgdGVzdF9pbnQyYnl0ZSgpOgog
ICAgIGFzc2VydCBzaXguaW50MmJ5dGUoMykgPT0gc2l4LmIoIlx4MDMiKQotICAgIHB5LnRlc3Qu
cmFpc2VzKEV4Y2VwdGlvbiwgc2l4LmludDJieXRlLCAyNTYpCisgICAgcHl0ZXN0LnJhaXNlcyhF
eGNlcHRpb24sIHNpeC5pbnQyYnl0ZSwgMjU2KQogCiAKIGRlZiB0ZXN0X2J5dGUyaW50KCk6CiAg
ICAgYXNzZXJ0IHNpeC5ieXRlMmludChzaXguYigiXHgwMyIpKSA9PSAzCiAgICAgYXNzZXJ0IHNp
eC5ieXRlMmludChzaXguYigiXHgwM1x4MDQiKSkgPT0gMwotICAgIHB5LnRlc3QucmFpc2VzKElu
ZGV4RXJyb3IsIHNpeC5ieXRlMmludCwgc2l4LmIoIiIpKQorICAgIHB5dGVzdC5yYWlzZXMoSW5k
ZXhFcnJvciwgc2l4LmJ5dGUyaW50LCBzaXguYigiIikpCiAKIAogZGVmIHRlc3RfYnl0ZXNpbmRl
eCgpOgpAQCAtNTU0LDcgKzU0Nyw3IEBAIGRlZiB0ZXN0X2J5dGVzaXRlcigpOgogICAgIGl0ID0g
c2l4Lml0ZXJieXRlcyhzaXguYigiaGkiKSkKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9y
ZCgiaCIpCiAgICAgYXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImkiKQotICAgIHB5LnRlc3Qu
cmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0
b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVzdF9TdHJpbmdJTygpOgpAQCAt
Njg5LDcgKzY4Miw3IEBAIGRlZiB0ZXN0X3ByaW50XygpOgogICAgIGFzc2VydCBvdXQuZmx1c2hl
ZAogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwg
NikiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYp
IikKIGRlZiB0ZXN0X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICAjIEZvb2wgdGhl
IHR5cGUgY2hlY2tpbmcgaW4gcHJpbnRfLgogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2l4LCAi
ZmlsZSIsIHNpeC5CeXRlc0lPLCByYWlzaW5nPUZhbHNlKQpAQCAtNzAxLDE2ICs2OTQsMTYgQEAg
ZGVmIHRlc3RfcHJpbnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gpOgogICAgIG91dCA9IHNpeC5CeXRl
c0lPKCkKICAgICBvdXQuZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgb3V0LmVycm9ycyA9ICJzdHJp
Y3QiCi0gICAgcHkudGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgucHJpbnRfLCBz
aXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQorICAgIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVuY29k
ZUVycm9yLCBzaXgucHJpbnRfLCBzaXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQogICAgIG91dC5l
cnJvcnMgPSAiYmFja3NsYXNocmVwbGFjZSIKICAgICBzaXgucHJpbnRfKHNpeC51KCJcdTA1M2Mi
KSwgZW5kPSIiLCBmaWxlPW91dCkKICAgICBhc3NlcnQgb3V0LmdldHZhbHVlKCkgPT0gc2l4LmIo
IlxcdTA1M2MiKQogCiAKIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbnMoKToKLSAgICBweS50ZXN0
LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIHg9MykKLSAgICBweS50ZXN0LnJhaXNlcyhU
eXBlRXJyb3IsIHNpeC5wcmludF8sIGVuZD0zKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJv
ciwgc2l4LnByaW50Xywgc2VwPTQyKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgu
cHJpbnRfLCB4PTMpCisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIGVu
ZD0zKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCiAK
IAogZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3MoKToKQEAgLTc0NCw3ICs3MzcsNTQgQEAgZGVmIHRl
c3Rfd2l0aF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgWS5fX21yb19fID09IChZLCBYLCBvYmpl
Y3QpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMs
IDApIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcp
IikKK2RlZiB0ZXN0X3dpdGhfbWV0YWNsYXNzX3R5cGluZygpOgorICAgIHRyeToKKyAgICAgICAg
aW1wb3J0IHR5cGluZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNr
aXAoInR5cGluZyBtb2R1bGUgcmVxdWlyZWQiKQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAg
ICAgIHBhc3MKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KToKKyAgICAgICAg
IyBHZW5lcmljcyB3aXRoIGN1c3RvbSBtZXRhY2xhc3NlcyB3ZXJlIGJyb2tlbiBvbiBvbGRlciB2
ZXJzaW9ucy4KKyAgICAgICAgY2xhc3MgTWV0YShNZXRhLCB0eXBpbmcuR2VuZXJpY01ldGEpOgor
ICAgICAgICAgICAgcGFzcworICAgIFQgPSB0eXBpbmcuVHlwZVZhcignVCcpCisgICAgY2xhc3Mg
RyhzaXgud2l0aF9tZXRhY2xhc3MoTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0pKToKKyAgICAgICAg
cGFzcworICAgIGNsYXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSwgdHlwaW5n
LkdlbmVyaWNbVF0pKToKKyAgICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1l
dGEpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBH
W2ludF0gaXMgbm90IEdbR1tpbnRdXQorICAgIGFzc2VydCBHQVtpbnRdIGlzIG5vdCBHQVtHQVtp
bnRdXQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWMsKQorICAgIGFz
c2VydCBHLl9fb3JpZ19iYXNlc19fID09ICh0eXBpbmcuR2VuZXJpY1tUXSwpCisKKworQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykiKQorZGVmIHRlc3Rf
d2l0aF9tZXRhY2xhc3NfcGVwXzU2MCgpOgorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAg
IHBhc3MKKyAgICBjbGFzcyBBOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgQjoKKyAgICAgICAg
cGFzcworICAgIGNsYXNzIEZha2U6CisgICAgICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwg
YmFzZXMpOgorICAgICAgICAgICAgcmV0dXJuIChBLCBCKQorICAgIGZha2UgPSBGYWtlKCkKKyAg
ICBjbGFzcyBHKHNpeC53aXRoX21ldGFjbGFzcyhNZXRhLCBmYWtlKSk6CisgICAgICAgIHBhc3MK
KyAgICBjbGFzcyBHQShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIGZha2UpKToKKyAg
ICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNzZXJ0IGlz
aW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAoQSwg
QikKKyAgICBhc3NlcnQgRy5fX29yaWdfYmFzZXNfXyA9PSAoZmFrZSwpCisKKworQHB5dGVzdC5t
YXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMCkiKQogZGVmIHRlc3Rfd2l0
aF9tZXRhY2xhc3NfcHJlcGFyZSgpOgogICAgICIiIlRlc3QgdGhhdCB3aXRoX21ldGFjbGFzcyBj
YXVzZXMgTWV0YS5fX3ByZXBhcmVfXyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1
bWVudHMuIiIiCiAKQEAgLTg1Nyw3ICs4OTcsNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6
CiAgICAgYXNzZXJ0IE15U2xvdHMuX19zbG90c19fID09IFsiYSIsICJiIl0KICAgICBpbnN0YW5j
ZSA9IE15U2xvdHMoKQogICAgIGluc3RhbmNlLmEgPSAiZm9vIgotICAgIHB5LnRlc3QucmFpc2Vz
KEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKKyAgICBweXRl
c3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikK
IAogICAgICMgVGVzdCBhIGNsYXNzIHdpdGggc3RyaW5nIGZvciBzbG90cy4KICAgICBjbGFzcyBN
eVN0cmluZ1Nsb3RzKG9iamVjdCk6CkBAIC04NjYsOCArOTA2LDggQEAgZGVmIHRlc3RfYWRkX21l
dGFjbGFzcygpOgogICAgIGFzc2VydCBNeVN0cmluZ1Nsb3RzLl9fc2xvdHNfXyA9PSAiYWIiCiAg
ICAgaW5zdGFuY2UgPSBNeVN0cmluZ1Nsb3RzKCkKICAgICBpbnN0YW5jZS5hYiA9ICJmb28iCi0g
ICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIs
ICJiYXoiKQotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0
YW5jZSwgImIiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRh
dHRyLCBpbnN0YW5jZSwgImEiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImIiLCAiYmF6IikKIAogICAgIGNsYXNzIE15U2xvdHNX
ZWFrcmVmKG9iamVjdCk6CiAgICAgICAgIF9fc2xvdHNfXyA9ICJfX3dlYWtyZWZfXyIsCkBAIC04
NzUsNyArOTE1LDI3IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgdHlw
ZShNeVNsb3RzV2Vha3JlZikgaXMgTWV0YQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMs
IDApLCAoMywgMSkpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJd
IDwgKDMsIDMpIikKK2RlZiB0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkKCk6CisgICAgIyBSZWdy
ZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2lzc3Vlcy8y
NTkKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBBOgor
ICAgICAgICBjbGFzcyBCOiBwYXNzCisKKyAgICBleHBlY3RlZCA9ICd0ZXN0X2FkZF9tZXRhY2xh
c3NfbmVzdGVkLjxsb2NhbHM+LkEuQicKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09
IGV4cGVjdGVkCisKKyAgICBjbGFzcyBBOgorICAgICAgICBAc2l4LmFkZF9tZXRhY2xhc3MoTWV0
YSkKKyAgICAgICAgY2xhc3MgQjogcGFzcworCisgICAgYXNzZXJ0IEEuQi5fX3F1YWxuYW1lX18g
PT0gZXhwZWN0ZWQKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkpIikK
IGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0Q291bnRF
cXVhbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtODg3
LDcgKzk0Nyw3IEBAIGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBUZXN0QXNzZXJ0
Q291bnRFcXVhbCgndGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVy
c2lvbl9pbmZvWzoyXSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIGNs
YXNzIFRlc3RBc3NlcnRSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0
KHNlbGYpOgpAQCAtODk5LDcgKzk1OSw3IEBAIGRlZiB0ZXN0X2Fzc2VydFJlZ2V4KCk6CiAgICAg
VGVzdEFzc2VydFJlZ2V4KCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYo
InN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2VydFJhaXNlc1JlZ2V4
KCk6CiAgICAgY2xhc3MgVGVzdEFzc2VydFJhaXNlc1JlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CkBAIC05MzIsMyArOTkyLDYxIEBAIGRlZiB0ZXN0X3B5
dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZSgpOgogICAgICAgICBhc3NlcnQgc3RyKG15X3Rlc3Qp
ID09IHNpeC51KCJoZWxsbyIpCiAKICAgICBhc3NlcnQgZ2V0YXR0cihzaXgubW92ZXMuYnVpbHRp
bnMsICdieXRlcycsIHN0cikobXlfdGVzdCkgPT0gc2l4LmIoImhlbGxvIikKKworCitjbGFzcyBF
bnN1cmVUZXN0czoKKworICAgICMgZ3Jpbm5pbmcgZmFjZSBlbW9qaQorICAgIFVOSUNPREVfRU1P
SkkgPSBzaXgudSgiXFUwMDAxRjYwMCIpCisgICAgQklOQVJZX0VNT0pJID0gYiJceGYwXHg5Zlx4
OThceDgwIgorCisgICAgZGVmIHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZV90eXBlX2Vycm9yKHNl
bGYpOgorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAg
IHNpeC5lbnN1cmVfc3RyKDgpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfYW5kX2VuY29kaW5nKHNl
bGYpOgorICAgICAgICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29k
aW5nPSdsYXRpbi0xJywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNl
bGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J3N0cmljdCcpCisK
KyAgICBkZWYgdGVzdF9lbnN1cmVfYmluYXJ5X3JhaXNlKHNlbGYpOgorICAgICAgICBjb252ZXJ0
ZWRfdW5pY29kZSA9IHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rp
bmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0g
c2l4LmVuc3VyZV9iaW5hcnkoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVy
cm9ycz0nc3RyaWN0JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1
bmljb2RlIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNl
bGYuQklOQVJZX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisg
ICAgICAgICAgICAjIFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRl
ZF9iaW5hcnkgPT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2Jp
bmFyeSwgc3RyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBieXRl
cworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VN
T0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBieXRlcykKKyAgICAgICAgICAg
ICMgUFkzOiBieXRlcyAtPiBieXRlcworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5h
cnkgPT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwg
Ynl0ZXMpCisKKyAgICBkZWYgdGVzdF9lbnN1cmVfc3RyKHNlbGYpOgorICAgICAgICBjb252ZXJ0
ZWRfdW5pY29kZSA9IHNpeC5lbnN1cmVfc3RyKHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9
J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4
LmVuc3VyZV9zdHIoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0n
c3RyaWN0JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2Rl
IC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklO
QVJZX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAg
ICAgICAjIFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5h
cnkgPT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwg
c3RyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAgICAg
ICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5k
IGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkzOiBi
eXRlcyAtPiBzdHIKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYu
VU5JQ09ERV9FTU9KSSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorCisg
ICAgZGVmIHRlc3RfZW5zdXJlX3RleHQoc2VsZik6CisgICAgICAgIGNvbnZlcnRlZF91bmljb2Rl
ID0gc2l4LmVuc3VyZV90ZXh0KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV90
ZXh0KHNlbGYuQklOQVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcp
CisgICAgICAgIGlmIHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiB1bmlj
b2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RF
X0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1bmljb2RlKQorICAgICAg
ICAgICAgIyBQWTI6IHN0ciAtPiB1bmljb2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVk
X2JpbmFyeSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3Vu
aWNvZGUsIHVuaWNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzogc3RyIC0+
IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09E
RV9FTU9KSSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAg
ICAgIyBQWTM6IGJ5dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5h
cnkgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2Rl
LCBzdHIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCmluZGV4IDcwOTRkZjgyMzQyMmVkNDgzMjAzZDU2N2EwN2I1YjhhNDIxMTkz
MWQuLmYwZjIyY2EyZDZjMzRjMzVhMzM4YWUxN2EyNzEyNDIxYTM1NWVjZDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCkBA
IC0xNyw3ICsxNyw2IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwogL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvUkVBRE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZwogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RveC5pbmkKaW5kZXggZTg2NzNkYjBhNjlhZTQ2OTVlN2IxZmExNTJjNTMz
YWExYjBmOThkMS4uYmJlYzFhZmJiNmRkMmZkNmMwNDIyZWQ4OTNlMDlhYTJmYzlmMzhjMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90b3guaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdG94LmluaQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxw
eTM1LHB5MzYscHkzNyxweXB5LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkz
NixweTM3fS1teXB5CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5
MzUscHkzNixweTM3LHB5Mzh9LWZsYWtlOCx7cHkzNSxweTM2LHB5MzcscHkzOH0tbXlweQogc2tp
cHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVu
dl0KIGRlcHMgPQpAQCAtMTQsNyArMTUsNyBAQCBkZXBzID0KICAganNvbi1lCiAgIGpzb25zY2hl
bWEKIAotY29tbWFuZHMgPSBweXRlc3Qge3Bvc2FyZ3N9Citjb21tYW5kcyA9IHB5dGVzdCAtLWNv
dj10b29scyAtLWNvdi1yZXBvcnQ9dGVybSB7cG9zYXJnc30KIAogcGFzc2VudiA9CiAgIEhZUE9U
SEVTSVNfUFJPRklMRQpAQCAtMjcsMTUgKzI4LDE5IEBAIGNvbW1hbmRzID0gZmxha2U4IC0tYXBw
ZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTI3LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0
ZW52OnB5MzUtZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1h
bmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkg
e3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0v
cHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzYtZmxha2U4XQogZGVwcyA9
IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNv
bmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZs
YWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9
CiAKIFt0ZXN0ZW52OnB5MzctZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50
eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZs
YWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3Rv
eGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CisKK1t0ZXN0ZW52OnB5MzgtZmxha2U4
XQorZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKK2NvbW1hbmRzID0gZmxha2U4IC0t
YXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rl
c3RlbnY6cHkzNS1teXB5XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC01NCwz
ICs1OSw5IEBAIGRlcHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAogY2hhbmdlZGlyID0ge3Rv
eGluaWRpcn0vLi4KIGNvbW1hbmRzID0KICAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9
L215cHkuaW5pIC0tbm8taW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9v
bHMubGludCAtcCB0b29scy5naXRpZ25vcmUKKworW3Rlc3RlbnY6cHkzOC1teXB5XQorZGVwcyA9
IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29t
bWFuZHMgPQorICBteXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1p
bmNyZW1lbnRhbCAtLXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xz
LmdpdGlnbm9yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKaW5kZXggYzRjMWJjMjVj
OGZkNDg5MzQ2M2I0ZTEzYmQ4YjU0N2U2N2ZjZWM2Ny4uYzY3MjI5NDA2YmFhMjczZTQ3YzhmOGU0
ZWNiZTc0NDlhY2Q5ZjljNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCkBAIC0y
MCw3ICsyMCw3IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtl
OC5pbmkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5My1mbGFrZTguaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXRlc3QuaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVu
dC5weQppbmRleCAwYzViYmZmNTYyOTg2OGZkYzQ4YTFhNDFjZjg4MmZhYmU1NjE3YzFiLi42NThl
ZDBlMDBmOGEzNDQ5NDE2NzNlZWQ2NzFiYTlkZTMxNzg1OGE5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJk
cml2ZXIvY2xpZW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKQEAgLTM3MywxMCAr
MzczLDggQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICBwb3J0LAog
ICAgICAgICAgICAgICAgICB1cmxfcHJlZml4PSIvIiwKICAgICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAg
ICAgICAgZXh0ZW5zaW9uPU5vbmUpOgotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9y
dC5IVFRQV2lyZVByb3RvY29sKAotICAgICAgICAgICAgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCwg
dGltZW91dD10aW1lb3V0KQorICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQ
V2lyZVByb3RvY29sKGhvc3QsIHBvcnQsIHVybF9wcmVmaXgpCiAgICAgICAgIHNlbGYucmVxdWVz
dGVkX2NhcGFiaWxpdGllcyA9IGNhcGFiaWxpdGllcwogICAgICAgICBzZWxmLmNhcGFiaWxpdGll
cyA9IE5vbmUKICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNDQ2LDcgKzQ0NCw3
IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAg
IHNlbGYuc2Vzc2lvbl9pZCA9IE5vbmUKIAotICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0
aG9kLCB1cmwsIGJvZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBtZXRob2Qs
IHVybCwgYm9keT1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2Vu
ZCBhIGNvbW1hbmQgdG8gdGhlIHJlbW90ZSBlbmQgYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgog
CkBAIC00NjcsNyArNDY1LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICByZXNw
b25zZSA9IHNlbGYudHJhbnNwb3J0LnNlbmQoCiAgICAgICAgICAgICBtZXRob2QsIHVybCwgYm9k
eSwKICAgICAgICAgICAgIGVuY29kZXI9cHJvdG9jb2wuRW5jb2RlciwgZGVjb2Rlcj1wcm90b2Nv
bC5EZWNvZGVyLAotICAgICAgICAgICAgc2Vzc2lvbj1zZWxmKQorICAgICAgICAgICAgc2Vzc2lv
bj1zZWxmLCB0aW1lb3V0PXRpbWVvdXQpCiAKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9
IDIwMDoKICAgICAgICAgICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCkBA
IC00OTUsNyArNDkzLDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHJldHVy
biB2YWx1ZQogCi0gICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJp
LCBib2R5PU5vbmUpOgorICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2Qs
IHVyaSwgYm9keT1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2Vu
ZCBhIGNvbW1hbmQgdG8gYW4gZXN0YWJsaXNoZWQgc2Vzc2lvbiBhbmQgdmFsaWRhdGUgaXRzIHN1
Y2Nlc3MuCiAKQEAgLTUxMiw3ICs1MTAsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAg
ICAgICAgICBhbiBlcnJvci4KICAgICAgICAgIiIiCiAgICAgICAgIHVybCA9IHVybHBhcnNlLnVy
bGpvaW4oInNlc3Npb24vJXMvIiAlIHNlbGYuc2Vzc2lvbl9pZCwgdXJpKQotICAgICAgICByZXR1
cm4gc2VsZi5zZW5kX2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHkpCisgICAgICAgIHJldHVybiBz
ZWxmLnNlbmRfY29tbWFuZChtZXRob2QsIHVybCwgYm9keSwgdGltZW91dCkKIAogICAgIEBwcm9w
ZXJ0eQogICAgIEBjb21tYW5kCkBAIC03MzcsNiArNzM1LDEwIEBAIGNsYXNzIEVsZW1lbnQob2Jq
ZWN0KToKICAgICBkZWYgc2VsZWN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRf
ZWxlbWVudF9jb21tYW5kKCJHRVQiLCAic2VsZWN0ZWQiKQogCisgICAgQGNvbW1hbmQKKyAgICBk
ZWYgc2NyZWVuc2hvdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2Nv
bW1hbmQoIkdFVCIsICJzY3JlZW5zaG90IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJp
YnV0ZShzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1h
bmQoIkdFVCIsICJhdHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci9wcm90b2NvbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCAxOGEzZDUyYzhh
M2I1MzdiYTc1ZDQ4N2ZkN2Y2YzVjZGUyMDZlYzNlLi5jODExZjZmMjZkYjc5MDhjYWU1MjhkMDRk
MjVkNjg4Mjc4NGU3NGExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJk
cml2ZXIvd2ViZHJpdmVyL3Byb3RvY29sLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQganNvbgog
CiBpbXBvcnQgd2ViZHJpdmVyCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKKwogCiAiIiJX
ZWJEcml2ZXIgd2lyZSBwcm90b2NvbCBjb2RlY3MuIiIiCiAKQEAgLTM5LDUgKzQxLDUgQEAgY2xh
c3MgRGVjb2Rlcihqc29uLkpTT05EZWNvZGVyKToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBh
eWxvYWQsIGRpY3QpIGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoK
ICAgICAgICAgICAgIHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBz
ZWxmLnNlc3Npb24pCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAg
ICAgICAgICAgIHJldHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBwYXls
b2FkLml0ZXJpdGVtcygpfQorICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29r
KHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhwYXlsb2FkKX0KICAgICAgICAgcmV0dXJuIHBheWxv
YWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIv
dHJhbnNwb3J0LnB5CmluZGV4IDMyYmEzMWEyYWU5YTk5NmE1YzU3ZmQwNDA2MTI5M2YzMTdlNWJm
MDQuLmY4MTdlYzgxYTk2ZmI5M2NjNWM2MDE1NGYwNTdkNzJlOTgzNzU2OTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5w
eQpAQCAtMSwxMiArMSwxMiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzZWxlY3QKKworZnJvbSBz
aXggaW1wb3J0IHRleHRfdHlwZSwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBv
cnQgSFRUUENvbm5lY3Rpb24KIGZyb20gc2l4Lm1vdmVzLnVybGxpYiBpbXBvcnQgcGFyc2UgYXMg
dXJscGFyc2UKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudCBhcyBodHRwbGliCiAK
IGZyb20gLiBpbXBvcnQgZXJyb3IKIAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCiAiIiJJ
bXBsZW1lbnRzIEhUVFAgdHJhbnNwb3J0IGZvciB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wu
IiIiCiAKIApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6
CiAgICAgICAgICMgPT4gd2ViZHJpdmVyLkVsZW1lbnQKICAgICAiIiIKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0LCB1cmxfcHJlZml4PSIvIiwgdGltZW91dD1Ob25lKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIpOgogICAgICAg
ICAiIiIKICAgICAgICAgQ29uc3RydWN0IGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRo
IHRoZSByZW1vdGUgc2VydmVyLgogCkBAIC04NSw5ICs4NSw4IEBAIGNsYXNzIEhUVFBXaXJlUHJv
dG9jb2wob2JqZWN0KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYudXJsX3ByZWZpeCA9IHVybF9wcmVmaXgKLQogICAgICAg
ICBzZWxmLl9jb25uID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dAorICAg
ICAgICBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAKICAgICBkZWYgX19k
ZWxfXyhzZWxmKToKICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMDIsMTEgKzEwMSwxMSBAQCBj
bGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICIiIkdldHMgdGhlIGN1cnJl
bnQgSFRUUCBjb25uZWN0aW9uLCBvciBsYXppbHkgY3JlYXRlcyBvbmUuIiIiCiAgICAgICAgIGlm
IG5vdCBzZWxmLl9jb25uOgogICAgICAgICAgICAgY29ubl9rd2FyZ3MgPSB7fQotICAgICAgICAg
ICAgaWYgc2VsZi5fdGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjb25uX2t3
YXJnc1sidGltZW91dCJdID0gc2VsZi5fdGltZW91dAotCi0gICAgICAgICAgICBzZWxmLl9jb25u
ID0gaHR0cGxpYi5IVFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNl
bGYucG9ydCwgc3RyaWN0PVRydWUsICoqY29ubl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBub3Qg
UFkzOgorICAgICAgICAgICAgICAgIGNvbm5fa3dhcmdzWyJzdHJpY3QiXSA9IFRydWUKKyAgICAg
ICAgICAgICMgV2UgYXJlIG5vdCBzZXR0aW5nIGFuIEhUVFAgdGltZW91dCBvdGhlciB0aGFuIHRo
ZSBkZWZhdWx0IHdoZW4gdGhlCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gaXRzIGNyZWF0ZWQu
IFRoZSBzZW5kIG1ldGhvZCBoYXMgYSB0aW1lb3V0IHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAg
ICAgIHNlbGYuX2Nvbm4gPSBIVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QsIHNlbGYucG9ydCwgKipj
b25uX2t3YXJncykKIAogICAgICAgICByZXR1cm4gc2VsZi5fY29ubgogCkBAIC0xMjQsNiArMTIz
LDcgQEAgY2xhc3MgSFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgIGhlYWRl
cnM9Tm9uZSwKICAgICAgICAgICAgICBlbmNvZGVyPWpzb24uSlNPTkVuY29kZXIsCiAgICAgICAg
ICAgICAgZGVjb2Rlcj1qc29uLkpTT05EZWNvZGVyLAorICAgICAgICAgICAgIHRpbWVvdXQ9Tm9u
ZSwKICAgICAgICAgICAgICAqKmNvZGVjX2t3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBT
ZW5kIGEgY29tbWFuZCB0byB0aGUgcmVtb3RlLgpAQCAtMTcyLDEwICsxNzIsMTggQEAgY2xhc3Mg
SFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoIkZhaWxlZCB0byBlbmNvZGUgcmVxdWVzdCBib2R5IGFzIEpTT046XG4iCiAgICAgICAgICAg
ICAgICAgICAgICIlcyIgJSBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKIAotICAgICAgICBy
ZXNwb25zZSA9IHNlbGYuX3JlcXVlc3QobWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnMpCisg
ICAgICAgICMgV2hlbiB0aGUgdGltZW91dCB0cmlnZ2VycywgdGhlIFRlc3RSdW5uZXJNYW5hZ2Vy
IHRocmVhZCB3aWxsIHJldXNlCisgICAgICAgICMgdGhpcyBjb25uZWN0aW9uIHRvIGNoZWNrIGlm
IHRoZSBXZWJEcml2ZXIgaXRzIGFsaXZlIGFuZCB3ZSBtYXkgZW5kCisgICAgICAgICMgcmFpc2lu
ZyBhbiBodHRwbGliLkNhbm5vdFNlbmRSZXF1ZXN0IGV4Y2VwdGlvbiBpZiB0aGUgV2ViRHJpdmVy
IGlzCisgICAgICAgICMgbm90IHJlc3BvbmRpbmcgYW5kIHRoaXMgaHR0cGxpYi5yZXF1ZXN0KCkg
Y2FsbCBpcyBibG9ja2VkIG9uIHRoZQorICAgICAgICAjIHJ1bm5lciB0aHJlYWQuIFdlIHVzZSB0
aGUgYm9vbGVhbiBiZWxvdyB0byBjaGVjayBmb3IgdGhhdCBhbmQgcmVzdGFydAorICAgICAgICAj
IHRoZSBjb25uZWN0aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1ZXN0
X2lzX2Jsb2NrZWQgPSBUcnVlCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRo
b2QsIHVyaSwgcGF5bG9hZCwgaGVhZGVycywgdGltZW91dD1Ob25lKQorICAgICAgICBzZWxmLl9s
YXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAgICAgICAgIHJldHVybiBSZXNwb25zZS5m
cm9tX2h0dHAocmVzcG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipjb2RlY19rd2FyZ3MpCiAKLSAg
ICBkZWYgX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnM9Tm9uZSk6
CisgICAgZGVmIF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5v
bmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90
eXBlKToKICAgICAgICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCkBA
IC0xODUsMTAgKzE5MywyMyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAKICAg
ICAgICAgdXJsID0gc2VsZi51cmwodXJpKQogCi0gICAgICAgIGlmIHNlbGYuX2hhc191bnJlYWRf
ZGF0YSgpOgorICAgICAgICBpZiBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCBvciBzZWxm
Ll9oYXNfdW5yZWFkX2RhdGEoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgICAg
IHNlbGYuY29ubmVjdGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBwYXlsb2FkLCBoZWFkZXJzKQot
ICAgICAgICByZXR1cm4gc2VsZi5jb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKKworICAgICAgICAj
IHRpbWVvdXQgZm9yIHJlcXVlc3QgaGFzIHRvIGJlIHNldCBqdXN0IGJlZm9yZSBjYWxsaW5nIGh0
dHBsaWIuZ2V0cmVzcG9uc2UoKQorICAgICAgICAjIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgcmVz
dG9yZWQganVzdCBhZnRlciB0aGF0LCBldmVuIG9uIGV4Y2VwdGlvbiByYWlzZWQKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c190
aW1lb3V0ID0gc2VsZi5fY29ubi5nZXR0aW1lb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLl9j
b25uLnNldHRpbWVvdXQodGltZW91dCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5jb25u
ZWN0aW9uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRp
bWVvdXQ6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0aW1lb3V0KHByZXZpb3VzX3Rp
bWVvdXQpCisKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgX2hhc191bnJlYWRf
ZGF0YShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4gYW5kIHNlbGYuX2Nvbm4uc29j
ayBhbmQgc2VsZWN0LnNlbGVjdChbc2VsZi5fY29ubi5zb2NrXSwgW10sIFtdLCAwKVswXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L2FuZHJvaWQucHkKaW5kZXggNTFkZWI3MWUzMTY1MzgxNDhlMDZiMTQ2
YmNhNzU1NWZiN2IwNDZkZi4uNzQ0ZTEzNGQzODI2ZWFmZmViYTYzODc3MTNhMmNiMTMyYWUxYTlk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvYW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CkBAIC04OSw4ICs4OSw4IEBAIGRl
ZiBpbnN0YWxsX2FuZHJvaWRfcGFja2FnZXMobG9nZ2VyLCBzZGtfcGF0aCwgbm9fcHJvbXB0PUZh
bHNlKToKIAogICAgICNUT0RPOiBOb3Qgc3VyZSB3aGF0J3MgcmVhbGx5IG5lZWRlZCBoZXJlCiAg
ICAgcGFja2FnZXMgPSBbInBsYXRmb3JtLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAiYnVpbGQt
dG9vbHM7MjguMC4zIiwKLSAgICAgICAgICAgICAgICAicGxhdGZvcm1zO2FuZHJvaWQtMjgiLAor
ICAgICAgICAgICAgICAgICJidWlsZC10b29sczsyOS4wLjMiLAorICAgICAgICAgICAgICAgICJw
bGF0Zm9ybXM7YW5kcm9pZC0yOSIsCiAgICAgICAgICAgICAgICAgImVtdWxhdG9yIl0KIAogICAg
ICMgVE9ETzogbWFrZSB0aGlzIHdvcmsgbm9uLWludGVybmFjdGl2ZWx5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93
c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvYnJvd3Nlci5weQppbmRleCAzZWU5OGQ5NTllYzViZWZjNThiODg0ZTBlYzUzODVkNTU0
YmM4NzI1Li4zNjZkYzc4MWQ5MGVlMjFiODIwYjkzMzRjNjllZGUyYzQ1MWNiNGI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC9icm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkKQEAgLTYsMjAgKzYsMTkgQEAgaW1wb3J0IHN0YXQK
IGltcG9ydCBlcnJubwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0
IHVybHBhcnNlCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20g
ZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gZGlzdHV0aWxzLnNwYXdu
IGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKIAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxzcGxpdAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gdXRpbHMgaW1wb3J0IGNhbGws
IGdldCwgdW50YXIsIHVuemlwCitmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwg
dW56aXAKIAogdW5hbWUgPSBwbGF0Zm9ybS51bmFtZSgpCiAKICMgdGhlIHJvb3RVcmwgZm9yIHRo
ZSBmaXJlZm94LWNpIGRlcGxveW1lbnQgb2YgVGFza2NsdXN0ZXIKLSMgKGFmdGVyIE5vdmVtYmVy
IDksIGh0dHBzOi8vZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5tb3ppbGxhLmNvbS8pCi1GSVJFRk9Y
X0NJX1JPT1RfVVJMID0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JworRklSRUZPWF9DSV9ST09U
X1VSTCA9ICdodHRwczovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20nCiAKIAog
ZGVmIF9nZXRfZmlsZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CkBAIC00MSw2ICs0MCwy
MyBAQCBkZWYgaGFuZGxlX3JlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBleGMpOgogICAgICAg
ICByYWlzZQogCiAKK2RlZiBnZXRfZXh0KGZpbGVuYW1lKToKKyAgICAiIiJHZXQgdGhlIGV4dGVu
c2lvbiBmcm9tIGEgZmlsZW5hbWUgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciAudGFyLmZvbyIi
IgorICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgaWYgbmFt
ZS5lbmRzd2l0aCgiLnRhciIpOgorICAgICAgICBleHQgPSAiLnRhciVzIiAlIGV4dAorICAgIHJl
dHVybiBleHQKKworCitkZWYgZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KGluZGV4LCBwYXRoKToK
KyAgICBUQ19JTkRFWF9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL2luZGV4L3Yx
LyIKKworICAgIHJlc3AgPSBnZXQoVENfSU5ERVhfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8l
cyIgJSAoaW5kZXgsIHBhdGgpKQorICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisKKyAgICBy
ZXR1cm4gcmVzcAorCisKIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICBfX21ldGFjbGFzc19f
ID0gQUJDTWV0YQogCkBAIC00OCw4ICs2NCwxMyBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBk
ZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgotICAgICAgICAiIiJE
b3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlciIiIgorICAgIGRl
ZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgor
ICAgICAgICAiIiJEb3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3Nl
cgorICAgICAgICA6cGFyYW0gZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHB1dCB0aGUgZG93
bG9hZGVkIHBhY2thZ2UKKyAgICAgICAgOnBhcmFtIGNoYW5uZWw6IEJyb3dzZXIgY2hhbm5lbCB0
byBkb3dubG9hZAorICAgICAgICA6cGFyYW0gcmVuYW1lOiBPcHRpb25hbCBuYW1lIGZvciB0aGUg
ZG93bmxvYWRlZCBwYWNrYWdlOyB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgICAg
ZXh0ZW5zaW9uIGlzIHByZXNlcnZlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBOb3RJ
bXBsZW1lbnRlZAogCiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0xMzMsNyArMTU0LDcgQEAgY2xh
c3MgRmlyZWZveChCcm93c2VyKToKIAogICAgICAgICByZXR1cm4gZGVzdAogCi0gICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3du
bG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAg
ICAgICAgIHByb2R1Y3QgPSB7CiAgICAgICAgICAgICAibmlnaHRseSI6ICJmaXJlZm94LW5pZ2h0
bHktbGF0ZXN0LXNzbCIsCiAgICAgICAgICAgICAiYmV0YSI6ICJmaXJlZm94LWJldGEtbGF0ZXN0
LXNzbCIsCkBAIC0xNjEsNyArMTgyLDcgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAg
ICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQubW96aWxsYS5vcmcvP3Byb2R1Y3Q9JXMmb3M9JXMm
bGFuZz1lbi1VUyIgJSAocHJvZHVjdFtjaGFubmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Nf
YnVpbGRzW29zX2tleV0pCiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIEZp
cmVmb3ggZnJvbSAlcyIgJSB1cmwpCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsKQor
ICAgICAgICByZXNwID0gZ2V0KHVybCkKIAogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKIApAQCAt
MTcyLDExICsxOTMsMTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgICAgICAg
ICBmaWxlbmFtZSA9IGZpbGVuYW1lc1swXQogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAg
ICAgICAgICAgIGZpbGVuYW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNw
bGl0KCIvIiwgMSlbMV0KKyAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsc3BsaXQocmVzcC51cmwp
LnBhdGgucnNwbGl0KCIvIiwgMSlbMV0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6CiAgICAg
ICAgICAgICBmaWxlbmFtZSA9ICJmaXJlZm94LnRhci5iejIiCiAKKyAgICAgICAgaWYgcmVuYW1l
OgorICAgICAgICAgICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAocmVuYW1lLCBnZXRfZXh0KGZpbGVu
YW1lKSkKKwogICAgICAgICBpbnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxl
bmFtZSkKIAogICAgICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CkBA
IC0zNjMsMTQgKzM4NywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICB0YWdz
ID0gY2FsbCgiZ2l0IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAiLS1yZWZzIiwKICAgICAgICAg
ICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyLmdpdCIp
CiAgICAgICAgIHJlbGVhc2VfcmUgPSByZS5jb21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4o
XGQrKVwuKFxkKykiKQotICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IDAKKyAgICAgICAgbGF0ZXN0
X3JlbGVhc2UgPSAoMCwwLDApCiAgICAgICAgIGZvciBpdGVtIGluIHRhZ3Muc3BsaXQoIlxuIik6
CiAgICAgICAgICAgICBtID0gcmVsZWFzZV9yZS5tYXRjaChpdGVtKQogICAgICAgICAgICAgaWYg
bToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdy
b3VwcygpXQorICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShpbnQoaXRlbSkgZm9yIGl0
ZW0gaW4gbS5ncm91cHMoKSkKICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID4gbGF0ZXN0X3Jl
bGVhc2U6CiAgICAgICAgICAgICAgICAgICAgIGxhdGVzdF9yZWxlYXNlID0gdmVyc2lvbgotICAg
ICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2UgIT0gMAorICAgICAgICBhc3NlcnQgbGF0ZXN0X3Jl
bGVhc2UgIT0gKDAsMCwwKQogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIo
aXRlbSkgZm9yIGl0ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKICAgICBkZWYgaW5zdGFsbF93ZWJk
cml2ZXIoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUp
OgpAQCAtMzk3LDMyICs0MjEsMzIgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAg
cmV0dXJuIGZpbmRfZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyIikp
CiAKICAgICBkZWYgaW5zdGFsbF9nZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgotICAg
ICAgICBpbXBvcnQgdGFyZmlsZQotICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKICAgICAgICAg
c2VsZi5sb2dnZXIuaW5mbygiQXR0ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5p
Z2h0bHkiKQorCisgICAgICAgIHBsYXRmb3JtX2JpdHMgPSAoIjY0IiBpZiB1bmFtZVs0XSA9PSAi
eDg2XzY0IiBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgKCIzMiIgaWYgc2VsZi5wbGF0
Zm9ybSA9PSAid2luIiBlbHNlICIiKSkKKyAgICAgICAgdGNfcGxhdGZvcm0gPSAiJXMlcyIgJSAo
c2VsZi5wbGF0Zm9ybSwgcGxhdGZvcm1fYml0cykKKworICAgICAgICBhcmNoaXZlX2V4dCA9ICIu
emlwIiBpZiB1bmFtZVswXSA9PSAiV2luZG93cyIgZWxzZSAiLnRhci5neiIKKyAgICAgICAgYXJj
aGl2ZV9uYW1lID0gInB1YmxpYy9nZWNrb2RyaXZlciVzIiAlIGFyY2hpdmVfZXh0CisKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcyA9IG1vemRvd25sb2FkLkRhaWx5U2NyYXBlcihicmFuY2g9
Im1vemlsbGEtY2VudHJhbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbj0iY29tbW9uLnRlc3RzLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uPWRlc3QpCi0gICAgICAgICAgICBwYWNr
YWdlX3BhdGggPSBzLmRvd25sb2FkKCkKLSAgICAgICAgZXhjZXB0IG1vemRvd25sb2FkLmVycm9y
cy5Ob3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rlcl9hcnRp
ZmFjdCgKKyAgICAgICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5n
ZWNrb2RyaXZlci4lcyIgJSB0Y19wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICBhcmNoaXZlX25h
bWUpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5p
bmZvKCJHZWNrb2RyaXZlciBkb3dubG9hZCBmYWlsZWQiKQogICAgICAgICAgICAgcmV0dXJuCiAK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhlX3N1ZmZpeCA9ICIuZXhlIiBpZiB1bmFtZVsw
XSA9PSAiV2luZG93cyIgZWxzZSAiIgotICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4ocGFj
a2FnZV9wYXRoLCAiciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgICAgICBtZW1iZXIgPSBmLmdldG1lbWJlcigiYmluJXNnZWNrb2RyaXZlciVzIiAlIChvcy5w
YXRoLnNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlX3N1ZmZpeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtl
eUVycm9yOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAjIFJl
bW92ZSBiaW4vIGZyb20gdGhlIHBhdGguCi0gICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgPSBv
cy5wYXRoLmJhc2VuYW1lKG1lbWJlci5uYW1lKQotICAgICAgICAgICAgICAgIGYuZXh0cmFjdGFs
bChtZW1iZXJzPVttZW1iZXJdLCBwYXRoPWRlc3QpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9z
LnBhdGguam9pbihkZXN0LCBtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmlu
Zm8oIkV4dHJhY3RlZCBnZWNrb2RyaXZlciB0byAlcyIgJSBwYXRoKQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgb3MudW5saW5rKHBhY2thZ2VfcGF0aCkKKyAgICAgICAgaWYgYXJjaGl2
ZV9leHQgPT0gIi56aXAiOgorICAgICAgICAgICAgdW56aXAocmVzcC5yYXcsIGRlc3QpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICB1bnRhcihyZXNwLnJhdywgZGVzdCkKKworICAgICAgICBl
eGVfZXh0ID0gIi5leGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisgICAgICAg
IHBhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyJXMiICUgZXhlX2V4dCkKKwor
ICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJFeHRyYWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUg
cGF0aCkKIAogICAgICAgICByZXR1cm4gcGF0aAogCkBAIC00NDEsMzAgKzQ2NSwxOSBAQCBjbGFz
cyBGaXJlZm94QW5kcm9pZChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImZpcmVmb3hfYW5kcm9p
ZCIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IgogCi0gICAg
ZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93
bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAg
ICAgaWYgZGVzdCBpcyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAogCi0gICAgICAg
IGlmIEZJUkVGT1hfQ0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAg
ICAgICAgICAgICMgTk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgTm92
ZW1iZXIgOSwgMjAxOQotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJodHRwczovL3F1ZXVl
LnRhc2tjbHVzdGVyLm5ldC92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gImh0dHBz
Oi8vaW5kZXgudGFza2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IFRDX1FVRVVFX0JBU0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvcXVldWUvdjEvIgot
ICAgICAgICAgICAgVENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9p
bmRleC92MS8iCi0KLQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX0lOREVYX0JBU0Ug
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYyLm1vemlsbGEtY2Vu
dHJhbC5sYXRlc3QubW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCi0gICAgICAgIHJlc3AucmFp
c2VfZm9yX3N0YXR1cygpCi0gICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkKLSAgICAgICAgdGFz
a19pZCA9IGluZGV4WyJ0YXNrSWQiXQogCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQoVENf
UVVFVUVfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh0YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5h
cGsiKSkKLSAgICAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICAgICAgcmVzcCA9IGdl
dF90YXNrY2x1c3Rlcl9hcnRpZmFjdCgKKyAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxhLWNl
bnRyYWwubGF0ZXN0Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiLAorICAgICAgICAgICAgInB1
YmxpYy9idWlsZC9nZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKIAotICAgICAgICBhcGtfcGF0
aCA9IG9zLnBhdGguam9pbihkZXN0LCAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCisgICAg
ICAgIGZpbGVuYW1lID0gImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiCisgICAgICAgIGlmIHJl
bmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChm
aWxlbmFtZSlbMV0pCisgICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGZpbGVu
YW1lKQogCiAgICAgICAgIHdpdGggb3BlbihhcGtfcGF0aCwgIndiIikgYXMgZjoKICAgICAgICAg
ICAgIGYud3JpdGUocmVzcC5jb250ZW50KQpAQCAtNTAwLDcgKzUxMyw3IEBAIGNsYXNzIENocm9t
ZShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX2Nocm9tZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC02NTgsNyArNjcxLDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJhc2UoQnJvd3Nlcik6CiAgICAg
ICAgIHN1cGVyKENocm9tZUFuZHJvaWRCYXNlLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAg
ICAgIHNlbGYuZGV2aWNlX3NlcmlhbCA9IE5vbmUKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9u
ZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
KToKQEAgLTc2Niw3ICs3NzksNyBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3Nlcik6CiAgICAgcHJv
ZHVjdCA9ICJjaHJvbWVfaW9zIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hy
b21lX2lvcy50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVs
PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwg
cmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04MDIsNyArODE1
LDcgQEAgY2xhc3MgT3BlcmEoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IlVuYWJsZSB0byBmaW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQogICAgICAgICByZXR1cm4gTm9u
ZQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAg
ICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25l
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODc0LDcgKzg4Nyw3IEBAIGNsYXNz
IEVkZ2VDaHJvbWl1bShCcm93c2VyKToKICAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJp
dmVyIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04ODgsMTEgKzkwMSwxMyBAQCBjbGFz
cyBFZGdlQ2hyb21pdW0oQnJvd3Nlcik6CiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAg
ICAgICAgICAgICAgICMgVXNlIHBhdGhzIGZyb20gZGlmZmVyZW50IEVkZ2UgY2hhbm5lbHMgc3Rh
cnRpbmcgd2l0aCBSZWxlYXNlXEJldGFcRGV2XENhbmFyeQogICAgICAgICAgICAgICAgIHdpbnBh
dGhzID0gW29zLnBhdGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxc
RWRnZVxcQXBwbGljYXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdl
XFxBcHBsaWNhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhw
YW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2UgQmV0
YVxcQXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4
cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIERl
dlxcQXBwbGljYXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4
cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxF
ZGdlXFxBcHBsaWNhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgu
ZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnRc
XEVkZ2UgQmV0YVxcQXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cy5wYXRoLmV4cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0XFxFZGdlIERldlxcQXBwbGljYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcy5wYXRoLmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcTG9jYWxcXE1pY3Jvc29mdFxcRWRn
ZSBTeFNcXEFwcGxpY2F0aW9uIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0
aC5leHBhbmR1c2VyKCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBw
bGljYXRpb24iKV0KICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKGJpbmFy
eW5hbWUsIG9zLnBhdGhzZXAuam9pbih3aW5wYXRocykpCiAgICAgICAgIGlmIHNlbGYucGxhdGZv
cm0gPT0gIm1hY29zIjoKICAgICAgICAgICAgIGJpbmFyeW5hbWUgPSAiTWljcm9zb2Z0IEVkZ2Ug
Q2FuYXJ5IgpAQCAtOTczLDcgKzk4OCw3IEBAIGNsYXNzIEVkZ2UoQnJvd3Nlcik6CiAgICAgcHJv
ZHVjdCA9ICJlZGdlIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZS50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMDA3LDcgKzEwMjIsNyBAQCBjbGFz
cyBJbnRlcm5ldEV4cGxvcmVyKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiaWUiCiAgICAgcmVx
dWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19pZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2Vs
ZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0
PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9
Tm9uZSk6CkBAIC0xMDM1LDcgKzEwNTAsNyBAQCBjbGFzcyBTYWZhcmkoQnJvd3Nlcik6CiAgICAg
cHJvZHVjdCA9ICJzYWZhcmkiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYWZh
cmkudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
KToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFt
ZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGlu
c3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTEwNSwxNCArMTEyMCwx
NSBAQCBjbGFzcyBTZXJ2byhCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxv
YWQuc2Vydm8ub3JnL25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRl
bnNpb24pCiAgICAgICAgIHJldHVybiBnZXQodXJsKQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRl
c3QgaXMgTm9uZToKICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAogICAgICAgICByZXNwID0g
c2VsZi5fZ2V0KGRlc3QsIGNoYW5uZWwpCiAgICAgICAgIF8sIGV4dGVuc2lvbiwgXyA9IHNlbGYu
cGxhdGZvcm1fY29tcG9uZW50cygpCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihk
ZXN0LCAic2Vydm8tbGF0ZXN0JXMiICUgKGV4dGVuc2lvbiwpKSwgInciKSBhcyBmOgorICAgICAg
ICBmaWxlbmFtZSA9IHJlbmFtZSBpZiByZW5hbWUgaXMgbm90IE5vbmUgZWxzZSAic2Vydm8tbGF0
ZXN0IgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICIlcyVzIiAlIChmaWxl
bmFtZSwgZXh0ZW5zaW9uLCkpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHJlc3Au
Y29udGVudCkKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmln
aHRseSIpOgpAQCAtMTE1OSw3ICsxMTc1LDcgQEAgY2xhc3MgU2F1Y2UoQnJvd3Nlcik6CiAgICAg
cHJvZHVjdCA9ICJzYXVjZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhdWNl
LnR4dCIKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6
CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9
Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0
YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExODQsNyArMTIwMCw3IEBA
IGNsYXNzIFdlYktpdChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1
aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSk6CkBAIC0xMjUwLDcgKzEyNjYsNyBAQCBjbGFzcyBFcGlwaGFueShCcm93c2VyKToK
ICAgICBwcm9kdWN0ID0gImVwaXBoYW55IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVu
dHNfZXBpcGhhbnkudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hh
bm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5v
bmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAg
ICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
Y29tbWFuZHMuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L2NvbW1hbmRzLmpzb24KaW5kZXggNjBmZTE2MjFhZjBkZWNkMGZhYTQzNGYy
NmRjYmE5OTUxNTQxNzNlNy4uYTQ3YWI0MGQ3Mjg0N2Q1ZjUzNmUwYWMyZTAyZWIzZmUwZmVhMjMz
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvY29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCkBAIC01Miw3ICs1Miw2
IEBACiAgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKICAgICAiaGVscCI6ICJJbnN0YWxsIGJy
b3dzZXIgY29tcG9uZW50cyIsCiAgICAgImluc3RhbGwiOiBbCi0gICAgICAibW96ZG93bmxvYWQi
LAogICAgICAgIm1vemluc3RhbGwiCiAgICAgXQogICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2lu
c3RhbGwucHkKaW5kZXggMjQ5MTVmMGM5OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4Yy4u
NmViNTlmODE0YmYwOGQxMzlkNTk3YTRiNGIyNmE3ZDdhYTkyMGZkNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFs
bC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9pbnN0YWxsLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGFyZ3BhcnNlCi1pbXBv
cnQgYnJvd3NlcgogaW1wb3J0IHN5cwotCitmcm9tIC4gaW1wb3J0IGJyb3dzZXIKIAogbGF0ZXN0
X2NoYW5uZWxzID0gewogICAgICdmaXJlZm94JzogJ25pZ2h0bHknLApAQCAtNDQsNiArNDMsOSBA
QCBkZWYgZ2V0X3BhcnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93
c2VyIHJlbGVhc2Ugb24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctLWRvd25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQg
ZG9uJ3QgaW5zdGFsbCBpdCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZW5hbWUnLCBh
Y3Rpb249InN0b3JlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRmlsZW5hbWUsIGV4Y2x1ZGluZyBleHRlbnNpb24gZm9yIGRvd25sb2FkZWQgYXJjaGl2ZSAi
CisgICAgICAgICAgICAgICAgICAgICAgICAiKG9ubHkgd2l0aCAtLWRvd25sb2FkLW9ubHkpIikK
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLWRlc3RpbmF0aW9uJywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGVzeXN0ZW0gZGlyZWN0b3J5IHRvIHBsYWNlIHRoZSBj
b21wb25lbnQnKQogICAgIHJldHVybiBwYXJzZXIKQEAgLTc2LDEwICs3OCwxMSBAQCBkZWYgcnVu
KHZlbnYsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk5vIC0tZGVzdGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52
aXJvbm1lbnQiKQogCiAgICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBk
ZXN0aW5hdGlvbiwgY2hhbm5lbCwKLSAgICAgICAgICAgIGRvd25sb2FkX29ubHk9a3dhcmdzWyJk
b3dubG9hZF9vbmx5Il0pCisgICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxv
YWRfb25seSJdLCByZW5hbWU9a3dhcmdzWyJyZW5hbWUiXSkKIAogCi1kZWYgaW5zdGFsbChuYW1l
LCBjb21wb25lbnQsIGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUs
IGRvd25sb2FkX29ubHk9RmFsc2UpOgorZGVmIGluc3RhbGwobmFtZSwgY29tcG9uZW50LCBkZXN0
aW5hdGlvbiwgY2hhbm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9hZF9vbmx5PUZh
bHNlLAorICAgICAgICAgICAgcmVuYW1lPU5vbmUpOgogICAgIGlmIGxvZ2dlciBpcyBOb25lOgog
ICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cigiaW5zdGFsbCIpCkBAIC05MSw2ICs5NCw5IEBAIGRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVu
dCwgZGVzdGluYXRpb24sIGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvCiAK
ICAgICBzdWJjbGFzcyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5cy5z
dGRvdXQud3JpdGUoJ05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBvbmVu
dCkpCi0gICAgcGF0aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRl
c3RpbmF0aW9uLCBjaGFubmVsPWNoYW5uZWwpCisgICAga3dhcmdzID0ge30KKyAgICBpZiBkb3du
bG9hZF9vbmx5IGFuZCByZW5hbWU6CisgICAgICAgIGt3YXJnc1sicmVuYW1lIl0gPSByZW5hbWUK
KyAgICBwYXRoID0gZ2V0YXR0cihzdWJjbGFzcyhsb2dnZXIpLCBtZXRob2QpKGRlc3Q9ZGVzdGlu
YXRpb24sIGNoYW5uZWw9Y2hhbm5lbCwgKiprd2FyZ3MpCiAgICAgaWYgcGF0aDoKICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBk
b3dubG9hZF9vbmx5IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0
aHMKaW5kZXggMzU4NjdjNGNjYmZlOTVjNGU3MWE4ZDcxY2U5MGE3YjM3ODk1MWZkNS4uNmIwOWNj
OGJkYWJlYzljNmEzNmVlMjU3MjkzYmU5MDJjNzk4YjE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0
aHMKQEAgLTIsNSArMiw2IEBAIHRvb2xzL2NpLwogdG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8K
IHRvb2xzL21hbmlmZXN0LwordG9vbHMvcXVpYy8KIHRvb2xzL3NlcnZlLwogdG9vbHMvd3B0Lwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKaW5kZXggNTY2MDgzY2I2
YmU4OWEwM2U0OGNjNWMxYTBhODhmYzVjZTUzYTg1My4uM2JhZWZhNTBlYTk4MTk3NGJlNjZiNmUy
MjZlMDUwZTU5ZTAzNGMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVu
dHMudHh0CkBAIC0xICsxLDIgQEAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3RzPT0yLjIzLjAK
K21vemluZm89PTEuMi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjEyMjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CmluZGV4IGM0Y2Jj
Mjk0M2I3Y2UwMmVmMmE1OGY2NWQzNGFiNzE3YmZiMGM5ODEuLjE4OTNmZGVmYTgzNDZlOGY5Njll
NDE3ODlkZjZlM2RkZDg1NDA2MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQpA
QCAtMTA2LDExICsxMDYsMTQgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU9aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWF4aW11bSBu
dW1iZXIgb2YgcmV2aXNpb25zIHRvIGJlIHJldHVybmVkIGJ5ICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRoZSBjb21tYW5kIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJkZWJ1ZyBsb2dnaW5nIikKICAgICBy
ZXR1cm4gcGFyc2VyCiAKIAogZGVmIHJ1bl9yZXZfbGlzdCgqKmt3YXJncyk6CiAgICAgIyB0eXBl
OiAoKipBbnkpIC0+IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KCd2ZXJib3NlJyk6CisgICAgICAg
IGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQogICAgICMgImVwb2NoX3RocmVzaG9sZCIg
aXMgYSBzYWZldHkgbWFyZ2luLiBBZnRlciB0aGlzIHRpbWUgaXQgaXMgZmluZSB0bwogICAgICMg
YXNzdW1lIHRoYXQgYW55IHRhZ3MgYXJlIGNyZWF0ZWQgYW5kIHB1c2hlZC4KICAgICBlcG9jaF90
aHJlc2hvbGQgPSA2MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCAwYzczMmU3YWU4YWVl
N2Q0NDEwMTU2NDJiYThmMmZjYmQ3ZTY2ZTBlLi5hOWZkZWFkYTFlYzc4MGE1MDA5M2YyMjE2NzNj
ZjQwNjg2NGUzNmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0xODMsNiArMTgzLDE2
IEBAIGNsYXNzIEJyb3dzZXJTZXR1cChvYmplY3QpOgogICAgIGRlZiBzZXR1cChzZWxmLCBrd2Fy
Z3MpOgogICAgICAgICBzZWxmLnNldHVwX2t3YXJncyhrd2FyZ3MpCiAKK2RlZiBzYWZlX3Vuc2V0
ZW52KGVudl92YXIpOgorICAgICIiIlNhZmVseSByZW1vdmUgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUuCisKKyAgICBQeXRob24zIGRvZXMgbm90IHN1cHBvcnQgb3MudW5zZXRlbnYgaW4gV2luZG93
cyBmb3IgcHl0aG9uPDMuOSwgc28gd2UgYmV0dGVyCisgICAgcmVtb3ZlIHRoZSB2YXJpYWJsZSBk
aXJlY3RseSBmcm9tIG9zLmVudmlyb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBkZWwg
b3MuZW52aXJvbltlbnZfdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwog
CiBjbGFzcyBGaXJlZm94KEJyb3dzZXJTZXR1cCk6CiAgICAgbmFtZSA9ICJmaXJlZm94IgpAQCAt
MjQzLDkgKzI1Myw5IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlhIHlvdXIgT1Mg
cGFja2FnZSBtYW5hZ2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGxvZ2dlci5pbmZv
KCJSdW5uaW5nIGluIGhlYWRsZXNzIG1vZGUsIHBhc3MgLS1uby1oZWFkbGVzcyB0byBkaXNhYmxl
IikKIAogICAgICAgICAjIFR1cm4gb2ZmIEZpcmVmb3ggV2ViUlRDIElDRSBsb2dnaW5nIG9uIFdQ
VCAodHVybmVkIG9uIGJ5IG1venJ1bm5lcikKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0xF
VkVMJykKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKLSAgICAgICAg
b3MudW5zZXRlbnYoJ1JfTE9HX1ZFUkJPU0UnKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xP
R19MRVZFTCcpCisgICAgICAgIHNhZmVfdW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKKyAg
ICAgICAgc2FmZV91bnNldGVudignUl9MT0dfVkVSQk9TRScpCiAKICAgICAgICAgIyBBbGxvdyBX
ZWJSVEMgdGVzdHMgdG8gY2FsbCBnZXRVc2VyTWVkaWEuCiAgICAgICAgIGt3YXJnc1siZXh0cmFf
cHJlZnMiXS5hcHBlbmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCkBAIC03
MDUsOCArNzE1LDkgQEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1O
b25lLCBmb3JtYXR0ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVu
diwgcHJvbXB0PVRydWUsIGluc3RhbGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgogICAgIGZy
b20gd3B0cnVubmVyIGltcG9ydCB3cHRjb21tYW5kbGluZQorICAgIGZyb20gc2l4IGltcG9ydCBp
dGVyaXRlbXMKIAotICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhrd2FyZ3MuaXRlcml0ZW1zKCkp
CisgICAga3dhcmdzID0gdXRpbHMuS3dhcmdzKGl0ZXJpdGVtcyhrd2FyZ3MpKQogCiAgICAgcHJv
ZHVjdF9wYXJ0cyA9IGt3YXJnc1sicHJvZHVjdCJdLnNwbGl0KCI6IikKICAgICBrd2FyZ3NbInBy
b2R1Y3QiXSA9IHByb2R1Y3RfcGFydHNbMF0ucmVwbGFjZSgiLSIsICJfIikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RmaWxlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RmaWxlcy5weQppbmRleCBjZjEyYTU5YzhlNjhhNzBmNzgyNTYzYTgxYzE1
MTEyNDI5NjJlZGYzLi5mMjk2MGU4ZjUxZTQ0NWUzZjZmNTNiYThlN2MwMTQ1YWE1MDcyMDM4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC90ZXN0ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAg
ZGVmIGFmZmVjdGVkX3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtU
ZXh0XQogICAgIG5vbnRlc3RzX2NoYW5nZWQgPSBzZXQoZmlsZXNfY2hhbmdlZCkKICAgICB3cHRf
bWFuaWZlc3QgPSBsb2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIG1hbmlmZXN0X3VwZGF0ZSkK
IAotICAgIHRlc3RfdHlwZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0K
KyAgICB0ZXN0X3R5cGVzID0gWyJjcmFzaHRlc3QiLCAidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIs
ICJ3ZHNwZWMiXQogICAgIHN1cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBw
YXRoKQogICAgICAgICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0
Lml0ZXJ0eXBlcygic3VwcG9ydCIpfQogICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGgu
am9pbih3cHRfcm9vdCwgcGF0aCkKQEAgLTI3OCw4ICsyNzgsOCBAQCBkZWYgYWZmZWN0ZWRfdGVz
dGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgICAgICAg
ICBmdWxsX3BhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHJlcG9fcGF0aFsxOl0ucmVwbGFj
ZSgiLyIsIG9zLnBhdGguc2VwKSkKICAgICAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzLmFkZCgo
ZnVsbF9wYXRoLCByZXBvX3BhdGgpKQogCi0gICAgaW50ZXJmYWNlX25hbWUgPSBsYW1iZGEgeDog
b3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHgpKVswXQotICAgIGludGVyZmFjZXNf
Y2hhbmdlZF9uYW1lcyA9IG1hcChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlc19jaGFuZ2VkKQor
ICAgIGludGVyZmFjZXNfY2hhbmdlZF9uYW1lcyA9IFtvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGgu
YmFzZW5hbWUoaW50ZXJmYWNlKSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIGludGVyZmFjZSBpbiBpbnRlcmZhY2VzX2NoYW5nZWRdCiAKICAgICBkZWYgYWZmZWN0ZWRf
Ynlfd2RzcGVjKHRlc3QpOgogICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKQEAgLTMyNCw5
ICszMjQsOSBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6
IEl0ZXJhYmxlW1RleHRdCiAKICAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwg
InJiIikgYXMgZmg6CiAgICAgICAgICAgICAgICAgcmF3X2ZpbGVfY29udGVudHMgPSBmaC5yZWFk
KCkgICMgdHlwZTogYnl0ZXMKLSAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5z
dGFydHN3aXRoKCJceGZlXHhmZiIpOgorICAgICAgICAgICAgICAgIGlmIHJhd19maWxlX2NvbnRl
bnRzLnN0YXJ0c3dpdGgoYiJceGZlXHhmZiIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2Nv
bnRlbnRzID0gcmF3X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikg
ICMgdHlwZTogVGV4dAotICAgICAgICAgICAgICAgIGVsaWYgcmF3X2ZpbGVfY29udGVudHMuc3Rh
cnRzd2l0aCgiXHhmZlx4ZmUiKToKKyAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRl
bnRzLnN0YXJ0c3dpdGgoYiJceGZmXHhmZSIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2Nv
bnRlbnRzID0gcmF3X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikK
ICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRz
ID0gcmF3X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQpAQCAtMzk2LDcg
KzM5Niw3IEBAIGRlZiBydW5fY2hhbmdlZF9maWxlcygqKmt3YXJncyk6CiAgICAgc2VwYXJhdG9y
ID0gIlwwIiBpZiBrd2FyZ3NbIm51bGwiXSBlbHNlICJcbiIKIAogICAgIGZvciBpdGVtIGluIHNv
cnRlZChjaGFuZ2VkKToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvcy5wYXRoLnJlbHBhdGgo
aXRlbS5lbmNvZGUoInV0ZjgiKSwgd3B0X3Jvb3QpICsgc2VwYXJhdG9yKQorICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKG9zLnBhdGgucmVscGF0aChzaXguZW5zdXJlX3N0cihpdGVtKSwgd3B0X3Jv
b3QpICsgc2VwYXJhdG9yKQogCiAKIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4
IDI1YjY2ZTdkOTIyZjU0ZWRmMTk3YmFhYWY0MmMyNmM5ZmNlMDQ2MjEuLmU3YzMyYTM2MjExODYw
ODYxMDJkNWI0NGFhZGUzYzdmMTc1ZjA3YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90ZXN0cy90ZXN0X2Jyb3dzZXIucHkKQEAgLTE1LDExICsxNSwxMSBAQCBkZWYgdGVzdF9z
YWZhcmlfdmVyc2lvbihtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBzYWZhcmkgPSBicm93c2Vy
LlNhZmFyaShsb2dnZXIpCiAKICAgICAjIFNhZmFyaQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQu
cmV0dXJuX3ZhbHVlID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJwor
ICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNh
ZmFyaSAxMi4xICgxNDYwNy4xLjExKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJp
dmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgPT0gJzEyLjEgKDE0NjA3LjEuMTEpJwogCiAgICAg
IyBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3Ci0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1
cm5fdmFsdWUgPSAnSW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxl
YXNlIDY3LCAxMzYwNy4xLjkuMC4xKScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92
YWx1ZSA9IGInSW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNl
IDY3LCAxMzYwNy4xLjkuMC4xKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVy
X2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgPT0gJ1RlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2
NywgMTM2MDcuMS45LjAuMSknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1
dCcpCkBAIC0zMCwxMSArMzAsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3ZlcnNpb25fZXJyb3JzKG1v
Y2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbigpIGlzIE5vbmUK
IAogICAgICMgYHNhZmFyaWRyaXZlciAtLXZlcnNpb25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBt
b2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2dpYmJlcmlzaCcKICAgICBhc3NlcnQgc2Fm
YXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCiAg
ICAgIyBgc2FmYXJpZHJpdmVyIC0tdmVyc2lvbmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIFNhZmFy
aSA8PTEyLjApCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZHVtbXkn
CisgICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15JwogICAgIG1v
Y2tlZF9jaGVja19vdXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NF
cnJvcigxLCAnY21kJykKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFy
eT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCkBAIC00NCwxMSArNDQsMTEgQEAgZGVmIHRlc3Rf
d2Via2l0Z3RrX21pbmlicm93c2VyX3ZlcnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAg
d2Via2l0Z3RrX21pbmlicm93c2VyID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3Nlcihsb2dn
ZXIpCiAKICAgICAjIHN0YWJsZSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1
cm5fdmFsdWUgPSAnV2ViS2l0R1RLIDIuMjYuMVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQu
cmV0dXJuX3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNi4xXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0
a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNi4xJwog
CiAgICAgIyBuaWdodGx5IHZlcnNpb24KLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92
YWx1ZSA9ICdXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJworICAgIG1vY2tlZF9jaGVja19v
dXRwdXQucmV0dXJuX3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJwogICAg
IGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2Vy
JykgPT0gJzIuMjcuMSAocjI1MDgyMyknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNr
X291dHB1dCcpCkBAIC01OSwxMSArNTksMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmlicm93
c2VyX3ZlcnNpb25fZXJyb3JzKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCB3ZWJr
aXRndGtfbWluaWJyb3dzZXIudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2Vy
IC0tdmVyc2lvbmAgcmV0dXJuIGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0
dXJuX3ZhbHVlID0gJ2dpYmJlcmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92
YWx1ZSA9IGInZ2liYmVyaXNoJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVy
c2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgaXMgTm9uZQogCiAgICAgIyBgTWluaUJyb3dzZXIg
LS12ZXJzaW9uYCBmYWlscyAoYXMgaXQgZG9lcyBmb3IgTWluaUJyb3dzZXIgPD0gMi4yNi4wKQot
ICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1vY2tl
ZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnNpZGVfZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2Nt
ZCcpCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWlu
aUJyb3dzZXInKSBpcyBOb25lCiAKQEAgLTkzLDExICs5MywxMSBAQCBkZWYgdGVzdF93ZWJraXRn
dGtfbWluaWJyb3dzZXJfZmluZF9iaW5hcnkobW9ja2VkX29zX3BhdGhfaXNmaWxlKToKICAgICAj
IEZvdW5kIG9uIHRoZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBTUQ2NCAoZ2NjIGF2YWlsYWJs
ZSBidXQgZ2l2ZXMgYW4gZXJyb3IpCiAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQg
PSAnL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicK
ICAgICBtb2NrZWRfb3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgcGF0aDogcGF0
aCBpbiBbZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQsICcvdXNyL2Jpbi9nY2MnXQotICAg
IHdpdGggbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUg
PSAnZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEs
ICdjbWQnKSk6CisgICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcs
IHJldHVybl92YWx1ZSA9IGInZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVk
UHJvY2Vzc0Vycm9yKDEsICdjbWQnKSk6CiAgICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIuZmluZF9iaW5hcnkoKSA9PSBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NAogCiAg
ICAgICAgICMgRm91bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFSTTY0IChnY2Mg
YXZhaWxhYmxlKQogICAgICAgICBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCA9ICcvdXNy
L2xpYi9hYXJjaDY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICAg
ICAgbW9ja2VkX29zX3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGgg
aW4gW2RlYmlhbl9taW5pYnJvd3Nlcl9wYXRoX2FybTY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICAg
ICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1
ZSA9ICdhYXJjaDY0LWxpbnV4LWdudScpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidhYXJjaDY0LWxpbnV4LWdudScp
OgogICAgICAgICAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgp
ID09IGRlYmlhbl9taW5pYnJvd3Nlcl9wYXRoX2FybTY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21h
cmtkb3duLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5YWQ5YzQ4OTA2
NzY2NjI0ZWM1OTRjOTk0ZDUyZTcwYzk2ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9t
YXJrZG93bi5weQpAQCAtMCwwICsxLDM1IEBACitmcm9tIHRvb2xzLndwdCBpbXBvcnQgbWFya2Rv
d24KKworZGVmIHRlc3RfZm9ybWF0X2NvbW1lbnRfdGl0bGUoKToKKyAgICBhc3NlcnQgJyMgQnJv
d3NlciAjJyA9PSBtYXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgiYnJvd3NlciIpCisgICAg
YXNzZXJ0ICcjIEJyb3dzZXIgKGNoYW5uZWwpICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50
X3RpdGxlKCJicm93c2VyOmNoYW5uZWwiKQorCitkZWYgdGVzdF9tYXJrZG93bl9hZGp1c3QoKToK
KyAgICBhc3NlcnQgdSdcXHQnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHQnKQorICAg
IGFzc2VydCB1J1xccicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdccicpCisgICAgYXNz
ZXJ0IHUnXFxuJyA9PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1xuJykKKyAgICBhc3NlcnQg
dScnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnYCcpCisgICAgYXNzZXJ0IHUnXFx8JyA9
PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ3wnKQorICAgIGFzc2VydCB1J1xcdFxcclxcblxc
fCcgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdcdFxyXG5gfCcpCisKK3Jlc3VsdCA9ICcn
CitkZWYgbG9nKHRleHQpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICByZXN1bHQgKz0gdGV4dAor
CitkZWYgdGVzdF90YWJsZSgpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICBoZWFkaW5ncyA9IFsn
aDEnLCdoMiddCisgICAgZGF0YSA9IFtbJzAnLCAnMSddXQorICAgIG1hcmtkb3duLnRhYmxlKGhl
YWRpbmdzLCBkYXRhLCBsb2cpCisgICAgYXNzZXJ0ICgifCBoMSB8IGgyIHwiCisgICAgICAgICAg
ICAifC0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICB8IDEgIHwiKSA9PSByZXN1bHQKKwor
ICAgIHJlc3VsdCA9ICcnCisgICAgZGF0YS5hcHBlbmQoWydhYWEnLCAnYmInXSkKKyAgICBtYXJr
ZG93bi50YWJsZShoZWFkaW5ncywgZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgIGgxIHwgaDIg
fCIKKyAgICAgICAgICAgICJ8LS0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICAgfCAxICB8
IgorICAgICAgICAgICAgInwgYWFhIHwgYmIgfCIpID09IHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF9yZXZsaXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0LnB5CmluZGV4IGVjMmE2Yjg5OWQ1ZDFh
OTI3ZGNhZDFmOWE3NTgzZjk4N2EzYWQ5NDcuLjMwMjA4ZjRjZjY4ZDc5NTk2NmU3ODU4ZGFhMDcz
MGI2OGZhM2U5MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0
X3Jldmxpc3QucHkKQEAgLTExLDEwICsxMSwxMyBAQCBkZWYgdGVzdF9jYWxjdWxhdGVfY3V0b2Zm
X2RhdGUoKToKIAogCiBkZWYgdGVzdF9wYXJzZV9lcG9jaCgpOgotICAgIGFzc2VydCByZXZsaXN0
LnBhcnNlX2Vwb2NoKGIiMTBoIikgPT0gMzYwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9l
cG9jaChiIjEwZCIpID09IDg2NDAwMAotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIi
MTB3IikgPT0gNjA0ODAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGgiKSA9
PSAzNjAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGQiKSA9PSA4NjQwMDAK
KyAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaCgiMTB3IikgPT0gNjA0ODAwMAogCitkZWYg
Y2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6Cisg
ICAgZm9yIHRhZ2dlZCwgZXhwZWN0ZWQgaW4gemlwKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVk
X3JldmlzaW9ucyk6CisgICAgICAgIGFzc2VydCB0YWdnZWQgPT0gZXhwZWN0ZWQKIAogQG1vY2su
cGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfb3V0cHV0JykKIGRlZiB0ZXN0X2dldF9lcG9jaF9yZXZp
c2lvbnMobW9ja2VkX2NoZWNrX291dHB1dCk6CkBAIC01MCwxNiArNTMsOSBAQCBtZXJnZV9wcl9D
IEMgNDc1MjAwIF90dWVfCiBtZXJnZV9wcl9CIEIgNDUzNjAwIF90dWVfCiBtZXJnZV9wcl9BIEEg
Mzg4ODAwIF9tb25fCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9j
aF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA4KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdOJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdNJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdLJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdKJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4
dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAg
IGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCB0YWdnZWRf
cmV2aXNvbnMubmV4dCgpID09ICdBJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNv
bnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0g
cmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgOCkKKyAgICBjaGVja19y
ZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydOJywgJ00nLCAnSycsICdKJywgJ0cnLCAnRics
ICdDJywgJ0EnXSkKKyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAg
ICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBl
bm91Z2ggY2FuZGlkYXRlIGl0ZW1zIGluIHRoZSByZXZpc2lvbiBsaXN0CkBAIC04MiwxMyArNzgs
OSBAQCBtZXJnZV9wcl9EIEQgNjQ4MDAwIF90aHVfCiBtZXJnZV9wcl9DIEMgNTYxNjAwIF93ZWRf
CiBtZXJnZV9wcl9CIEIgNDc1MjAwIF90aHVfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSBy
ZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdGJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdFJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdEJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2
aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25z
ID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVj
a19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnLCAnRScsICdEJywgJ0MnXSkK
KyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9y
IGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBsZXNzIHJldHVybmVk
IGNhbmRpZGF0ZXMgaXRlbXMgdGhhbiB0aGUgbmVlZGVkCkBAIC0xMDcsMTAgKzk5LDkgQEAgbWVy
Z2VfcHJfSCBIIDk5MzYwMCBfbW9uXwogbWVyZ2VfcHJfRyBHIDkwNzIwMCBfc3VuXwogbWVyZ2Vf
cHJfRiBGIDgyMDgwMCBfc2F0XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jl
dmlzb25zLm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9
PSAnRicKLSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5l
cmF0b3IgZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2No
X3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9y
ZXZpc2lvbnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lv
bnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogaW5pdGlh
bCB1bnRpbCB2YWx1ZSBpcyBvbiBhbiBlcG9jaCBib3VuZGFyeQpAQCAtMTM0LDEwICsxMjUsOSBA
QCBtZXJnZV9wcl9IIEggMTI5NjAwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1MDQwMCBfbW9uXwog
bWVyZ2VfcHJfRiBGIDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2
bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKLSAgICBhc3NlcnQgdGFn
Z2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5l
eHQoKSA9PSAnRicKLSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAg
IyBnZW5lcmF0b3IgZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0
X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDMpCisgICAgY2hlY2tfcmV2aXNpb25zKHRh
Z2dlZF9yZXZpc2lvbnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9y
ZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazog
dW50aWwgYWxpZ25lZCB3aXRoIE1vbmRheSwgNSBKYW51YXJ5IDE5NzAgMDowMDowMCAoMzQ1NjAw
KQpAQCAtMTU4LDYgKzE0OCw2IEBAIG1lcmdlX3ByX0ggSCAxMTgwODAwIF93ZWRfCiBtZXJnZV9w
cl9HIEcgOTUwNDAwIF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0
YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGls
LCAxKQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2Vy
dCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQK
KyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2No
LCB1bnRpbCwgMSkKKyAgICBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydGJ10p
CisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRv
ciBleGhhdXN0ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90
ZXN0ZmlsZXMucHkKaW5kZXggMzMxMzVkZmRjMmQ1YjVhZTBjNzIyZGNlMzRmMzViNTgxMjdiZjMz
OS4uOWZkNmM2ZjliODUxNTM3ZGYwNDQyODYxMjNiYTY0YzliM2UxOWU4NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF90ZXN0ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKQEAgLTEsNSAr
MSw3IEBACitpbXBvcnQgb3MucGF0aAogZnJvbSBtb2NrIGltcG9ydCBwYXRjaAogCitmcm9tIHRv
b2xzLm1hbmlmZXN0Lm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAogZnJvbSB0b29scy53cHQgaW1w
b3J0IHRlc3RmaWxlcwogCiAKQEAgLTExLDMgKzEzLDM0IEBAIGRlZiB0ZXN0X2dldHJldmlzaF9r
d2FyZygpOgogZGVmIHRlc3RfZ2V0cmV2aXNoX2ltcGxpY2l0KCk6CiAgICAgd2l0aCBwYXRjaCgi
dG9vbHMud3B0LnRlc3RmaWxlcy5icmFuY2hfcG9pbnQiLCByZXR1cm5fdmFsdWU9dSJiYXNlIik6
CiAgICAgICAgIGFzc2VydCB0ZXN0ZmlsZXMuZ2V0X3JldmlzaCgpID09IGIiYmFzZS4uSEVBRCIK
KworCitkZWYgdGVzdF9hZmZlY3RlZF90ZXN0ZmlsZXMoKToKKyAgICBtYW5pZmVzdF9qc29uID0g
eworICAgICAgICAiaXRlbXMiOiB7CisgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogeworICAgICAg
ICAgICAgICAgICJhIjogeworICAgICAgICAgICAgICAgICAgICAiYiI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJjIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28tY3Jh
c2guaHRtbCI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjZGVmZ2gxMjM0
NTYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bGwiLCB7fV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAidXJsX2Jhc2UiOiAiLyIsCisgICAgICAgICJ2ZXJzaW9uIjogOCwK
KyAgICB9CisgICAgbWFuaWZlc3QgPSBNYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBtYW5pZmVzdF9q
c29uKQorICAgIHdpdGggcGF0Y2goInRvb2xzLndwdC50ZXN0ZmlsZXMubG9hZF9tYW5pZmVzdCIs
IHJldHVybl92YWx1ZT1tYW5pZmVzdCk6CisgICAgICAgICMgRGVwZW5kZW50IGFmZmVjdGVkIHRl
c3RzIGFyZSBkZXRlcm1pbmVkIGJ5IHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0sCisgICAgICAgICMg
d2hpY2ggZG9lc24ndCB3b3JrIGluIG91ciB0ZXN0IHNldHVwLiBXZSB3b3VsZCBuZWVkIHRvIHJl
ZmFjdG9yCisgICAgICAgICMgdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyBvciBoYXZlIGEg
bW9yZSBjb21wbGV4IHRlc3Qgc2V0dXAgdG8KKyAgICAgICAgIyBzdXBwb3J0IHRlc3RpbmcgdGhv
c2UuCisgICAgICAgIGZ1bGxfdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAg
dGVzdGZpbGVzLndwdF9yb290LCAiYSIsICJiIiwgImMiLCAiZm9vLWNyYXNoLmh0bWwiKQorICAg
ICAgICB0ZXN0c19jaGFuZ2VkLCBfID0gdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyhbZnVs
bF90ZXN0X3BhdGhdKQorICAgICAgICBhc3NlcnQgdGVzdHNfY2hhbmdlZCA9PSBzZXQoW2Z1bGxf
dGVzdF9wYXRoXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkK
aW5kZXggNjU2OTU4MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4Ni4uZjg5N2I2ODhh
ZDZmNjgyYmU5ZDc2OWRhOTg1NzljNzg4NTA1YzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdGVzdHMvdGVzdF93cHQucHkKQEAgLTEsMTIgKzEsMTggQEAKIGltcG9ydCBlcnJubwog
aW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQK
IGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0
aW1lCi1pbXBvcnQgdXJsbGliMgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBv
cnQgdXJsb3BlbgorICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvcgorZXhjZXB0
IEltcG9ydEVycm9yOgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgVVJMRXJyb3IK
IAogaW1wb3J0IHB5dGVzdAogCkBAIC0zOCw2ICs0NCw5IEBAIGRlZiBnZXRfcGVyc2lzdGVudF9t
YW5pZmVzdF9wYXRoKCk6CiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3Vz
ZT1UcnVlKQogZGVmIGluaXRfbWFuaWZlc3QoKToKKyAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5j
b20vcHlwYS92aXJ0dWFsZW52L2lzc3Vlcy8xNzEwCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1sw
XSA+PSAzIGFuZCBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgIHB5dGVz
dC54ZmFpbChyZWFzb249InZpcnR1YWxlbnYgYWN0aXZhdGlvbiBmYWlscyBpbiBXaW5kb3dzIGZv
ciBweXRob24zIikKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5m
bzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1bIm1hbmlmZXN0IiwgIi0tbm8tZG93bmxvYWQiLAog
ICAgICAgICAgICAgICAgICAgICAgICAiLS1wYXRoIiwgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3Rf
cGF0aCgpXSkKQEAgLTIzMyw5ICsyNDIsOSBAQCBkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxl
KHRlbXBfdGVzdCk6CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKIGRlZiB0ZXN0X2luc3Rh
bGxfY2hyb21lZHJpdmVyKCk6CiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAg
ICAgIGNocm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9f
cm9vdCwgIl92ZW52IiwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVyLmV4ZSIpCisgICAgICAgIGNo
cm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwg
d3B0LnZlbnZfZGlyKCksICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQogICAgIGVsc2U6
Ci0gICAgICAgIGNocm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhz
LnJlcG9fcm9vdCwgIl92ZW52IiwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQorICAgICAgICBjaHJv
bWVkcml2ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdw
dC52ZW52X2RpcigpLCAiYmluIiwgImNocm9tZWRyaXZlciIpCiAgICAgaWYgb3MucGF0aC5leGlz
dHMoY2hyb21lZHJpdmVyX3BhdGgpOgogICAgICAgICBvcy51bmxpbmsoY2hyb21lZHJpdmVyX3Bh
dGgpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CkBAIC0y
NTEsOSArMjYwLDkgQEAgZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICAgICAg
ICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0L2lzc3Vlcy8xNzA3NCIpCiBkZWYgdGVzdF9pbnN0YWxsX2ZpcmVmb3goKToKICAgICBpZiBz
eXMucGxhdGZvcm0gPT0gImRhcndpbiI6Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4o
d3B0LmxvY2FscGF0aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIs
ICJGaXJlZm94IE5pZ2h0bHkuYXBwIikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3
cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2RpcigpLCAiYnJvd3NlcnMiLCAibmln
aHRseSIsICJGaXJlZm94IE5pZ2h0bHkuYXBwIikKICAgICBlbHNlOgotICAgICAgICBmeF9wYXRo
ID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dz
ZXJzIiwgIm5pZ2h0bHkiLCAiZmlyZWZveCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpv
aW4od3B0LmxvY2FscGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwg
Im5pZ2h0bHkiLCAiZmlyZWZveCIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhfcGF0aCk6CiAg
ICAgICAgIHNodXRpbC5ybXRyZWUoZnhfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lz
dGVtRXhpdCkgYXMgZXhjaW5mbzoKQEAgLTM4OCw5ICszOTcsOSBAQCBkZWYgdGVzdF9zZXJ2ZSgp
OgogICAgICAgICAgICAgaWYgdGltZS50aW1lKCkgLSBzdGFydCA+IDYwOgogICAgICAgICAgICAg
ICAgIGFzc2VydCBGYWxzZSwgInNlcnZlciBkaWQgbm90IHN0YXJ0IHJlc3BvbmRpbmcgd2l0aGlu
IDYwcyIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwID0gdXJsbGliMi51
cmxvcGVuKCJodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCisgICAgICAgICAgICAgICAg
cmVzcCA9IHVybG9wZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKICAgICAgICAg
ICAgICAgICBwcmludChyZXNwKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3I6
CisgICAgICAgICAgICBleGNlcHQgVVJMRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIlVS
TEVycm9yIikKICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBlbHNl
OgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwppbmRl
eCA1YzQzZjNjYTZiMjZhYTYwNTY2YWNmZmMzMGU4ZWM4ZWEyYjk2NGUzLi41YmYyNTk5OTIyYWFk
NTYzMzRjYzFiYWRhMTY5YmJjY2ZkODYxYjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0Lmxv
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwpAQCAtMTYsNiArMTYsNyBAQCBOb25lCiBMaXN0IG9m
IGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3Rlc3RzL2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0CiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2Vy
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rf
cnVuLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCmlu
ZGV4IDZhMDQ0NDczYTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIuLjhlM2UyNmUxMzVi
NGQzNzZhNDkyYWVhNWFkYmQyNDI3OTdiMDNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94Lmlu
aQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNworZW52bGlzdCA9IHB5Mjcs
cHkzNSxweTM2LHB5MzcscHkzOAogc2tpcHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnBy
ZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGls
cy5weQppbmRleCAyZDQyNzcxM2U0ZTgyNDg0NWI2ZDc4NzFiNjFjZDZmMTFlYzI1MWY2Li45YTZj
MDY0NjcxMjA2NGUxODNmMzY2ZGZkNTYyOWExYjUyZTgxMTllIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC91dGlscy5weQpAQCAtNDYsNyArNDYsNyBAQCBkZWYgY2FsbCgqYXJncyk6CiAgICAgIiIiCiAg
ICAgbG9nZ2VyLmRlYnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJu
IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNz
LmNoZWNrX291dHB1dChhcmdzKS5kZWNvZGUoJ3V0ZjgnKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNz
LkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiVzIGV4
aXRlZCB3aXRoIHJldHVybiBjb2RlICVpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5j
bWQsIGUucmV0dXJuY29kZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQpp
bmRleCA0MDBkZWJjODhlNDY5MTBkMjY0MWU3MjhmYzRhZGI4NmE4ODU2OGUwLi4xOGVkY2MwNGZi
NGQ1MjhlNjU2NmRhMTA5MDJhOWFjOTY0YjQyYTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3ZpcnR1YWxlbnYucHkKQEAgLTMyLDcgKzMyLDkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3Qp
OgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGV4aXN0cyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IG9zLnBhdGguaXNkaXIoc2VsZi5wYXRoKQorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgYWxz
byBmb3IgbGliX3BhdGggYmVjYXVzZSBkaWZmZXJlbnQgcHl0aG9uIHZlcnNpb25zCisgICAgICAg
ICMgY3JlYXRlIGRpZmZlcmVudCBsaWJyYXJ5IHBhdGhzLgorICAgICAgICByZXR1cm4gb3MucGF0
aC5pc2RpcihzZWxmLnBhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYubGliX3BhdGgpCiAKICAg
ICBAcHJvcGVydHkKICAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93
cHQucHkKaW5kZXggOTMzMDFkZDg2YjRmZmUyMDI5MDJhNDkyMjA0ZWJhNjUzN2ZiNTBkNS4uMzk1
ZGIwMzk0ZGE2N2NhYThiZGMxYWQ5ZTY4OWU1ODMxNzUxOTJiMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3dwdC5weQpAQCAtMzEsNiArMzEsNyBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAg
ICAgICAgICAgICAic2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAg
ICAicGFyc2VyIjogcHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBh
cnNlX2tub3duIjogcHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKKyAgICAgICAgICAg
ICAgICAgICAgInB5M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAg
ICAgICAgICAgICAgICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAg
ICAgICJ2aXJ0dWFsZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAg
ICAgICAgICAgICAgICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNDAs
MTMgKzQxLDE0IEBAIGRlZiBsb2FkX2NvbW1hbmRzKCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVm
IHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHMpOgorZGVmIHBhcnNlX2FyZ3MoYXJndiwgY29tbWFu
ZHM9bG9hZF9jb21tYW5kcygpKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cigpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhl
bHA9IlBhdGggdG8gYW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4g
TXVzdCBzZXQgLS12ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVi
dWciLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ug
b2YgYW4gZXhjZXB0aW9uIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXB5MyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlJ1biB3aXRoIHB5dGhvbjMiKQogICAgIHN1YnBhcnNlcnMg
PSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIpCiAgICAgZm9yIGNvbW1hbmQs
IHByb3BzIGluIGl0ZXJpdGVtcyhjb21tYW5kcyk6CiAgICAgICAgIHN1YnBhcnNlcnMuYWRkX3Bh
cnNlcihjb21tYW5kLCBoZWxwPXByb3BzWyJoZWxwIl0sIGFkZF9oZWxwPUZhbHNlKQpAQCAtOTMs
NyArOTUsOCBAQCBkZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigpOgogICAgIGZvciBjb21tYW5k
IGluIGNvbW1hbmRzOgogICAgICAgICBwcm9wcyA9IGNvbW1hbmRzW2NvbW1hbmRdCiAKLSAgICAg
ICAgaWYgcHJvcHNbInZpcnR1YWxlbnYiXToKKyAgICAgICAgaWYgKHByb3BzWyJ2aXJ0dWFsZW52
Il0gYW5kCisgICAgICAgICAgICAobm90IHByb3BzWyJweTNvbmx5Il0gb3Igc3lzLnZlcnNpb25f
aW5mby5tYWpvciA9PSAzKSk6CiAgICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KE5vbmUsIEZh
bHNlLCBwcm9wcykKIAogICAgICAgICBzdWJwYXJzZXIgPSBpbXBvcnRfY29tbWFuZCgnd3B0Jywg
Y29tbWFuZCwgcHJvcHMpWzFdCkBAIC0xMDgsMTIgKzExMSwxNiBAQCBkZWYgY3JlYXRlX2NvbXBs
ZXRlX3BhcnNlcigpOgogICAgIHJldHVybiBwYXJzZXIKIAogCitkZWYgdmVudl9kaXIoKToKKyAg
ICByZXR1cm4gIl92ZW52IiArIHN0cihzeXMudmVyc2lvbl9pbmZvWzBdKQorCisKIGRlZiBzZXR1
cF92aXJ0dWFsZW52KHBhdGgsIHNraXBfdmVudl9zZXR1cCwgcHJvcHMpOgogICAgIGlmIHNraXBf
dmVudl9zZXR1cCBhbmQgcGF0aCBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJN
dXN0IHNldCAtLXZlbnYgd2hlbiAtLXNraXAtdmVudi1zZXR1cCBpcyB1c2VkIikKICAgICBzaG91
bGRfc2tpcF9zZXR1cCA9IHBhdGggaXMgbm90IE5vbmUgYW5kIHNraXBfdmVudl9zZXR1cAogICAg
IGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwg
Il92ZW52IikKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgdmVudl9kaXIo
KSkKICAgICB2ZW52ID0gdmlydHVhbGVudi5WaXJ0dWFsZW52KHBhdGgsIHNob3VsZF9za2lwX3Nl
dHVwKQogICAgIGlmIG5vdCBzaG91bGRfc2tpcF9zZXR1cDoKICAgICAgICAgdmVudi5zdGFydCgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCisr
KyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0K
LWh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5zZS5o
dG1sCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9u
cyBvZiB3b3JrcyBtdXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwKLSAg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQot
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdp
bmFsIGNvcHlyaWdodAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUKLSAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgd29yayB3aXRob3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQot
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHMudHh0CmluZGV4IDNjZDAxNDQ2ZTI1YmNlYjRkYWRlZjQ4MjU5MTE3
YmQwNTdlYTZmNDguLjUzMTA3MjFiYmI5MGZhOTRiOTBiNGMxMGQyMDJmYzVhMTNjMDRkNTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApA
QCAtMSw4ICsxLDkgQEAKIGh0bWw1bGliPT0xLjAuMQotbW96aW5mbz09MS4xLjAKLW1vemxvZz09
NS4wCi1tb3pkZWJ1Zz09MC4xLjEKLXBpbGxvdz09Ni4yLjEKLXVybGxpYjNbc2VjdXJlXT09MS4y
NS43Ci1yZXF1ZXN0cz09Mi4yMi4wCi1zaXg9PTEuMTMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0
cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgorbW96bG9n
PT02LjAKK21vemRlYnVnPT0wLjIKKyMgUGlsbG93IDcgcmVxdWlyZXMgUHl0aG9uIDMKK3BpbGxv
dz09Ni4yLjIgICMgcHl1cDogPDcuMAordXJsbGliM1tzZWN1cmVdPT0xLjI1LjkKK3JlcXVlc3Rz
PT0yLjIzLjAKK3NpeD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZv
eC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQKaW5kZXggNGNiYjdhNWVjMDI5M2Vm
ZjFlZjE5OGEyMWVjZGM5MGZlY2Y0MTQxMS4uMTc2NzA1ZjNhZjUwOGFjYjMxMTdkNzNkNWFiNGYw
YzMwNjAyNDY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3JlcXVpcmVtZW50c19maXJlZm94LnR4dApAQCAtMSwxMSArMSwxMCBAQAogbWFyaW9uZXR0
ZV9kcml2ZXI9PTMuMC4wCi1tb3pjcmFzaD09MS4xLjAKLW1vemRvd25sb2FkPT0xLjI2LjAKK21v
emNyYXNoPT0yLjAuMAogbW96aW5zdGFsbD09Mi4wLjAKIG1vemxlYWs9PTAuMgotbW96bmV0d29y
az09MC4yNworbW96bmV0d29yaz09MS4xLjAKIG1venByb2Nlc3M9PTEuMC4wCi1tb3pwcm9maWxl
PT0yLjQuMAotbW96cnVubmVyPT03LjcuMAotbW96dmVyc2lvbj09Mi4yLjAKLXBzdXRpbD09NS42
LjcKK21venByb2ZpbGU9PTIuNS4wCittb3pydW5uZXI9PTcuOC4wCittb3p2ZXJzaW9uPT0yLjMu
MAorcHN1dGlsPT01LjcuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQKaW5kZXggMzJiNWY2NGQxNGZkMDNkZjRlZWFjYjU3
ODM5MjEwYTI2YTI4M2ZhNy4uZTllOTc2NDc3OTZlN2Y5NDBmMmVlZjk4YzcyYjE5ODcxZDMyM2M3
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHNfc2F1Y2UudHh0CkBAIC0xLDMgKzEsMyBAQAogbW96cHJvY2Vzcz09MS4wLjAKIHNlbGVu
aXVtPT0zLjE0MS4wCi1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKaW5kZXggOGYzMjNhMzM4NmM5
OTdjYmNmYTAxM2U2NTg1MDg2NDcxZGRmYTIwOC4uNDJlN2FiYmJhYjQ5MDkyMzcwNjVjYjAxMjVk
YjcxMWExODYwNzg5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KLWltcG9ydCBDb25maWdQYXJzZXIKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBp
bXBvcnQgc3lzCkBAIC03LDYgKzYsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIG1vemxvZyBpbXBvcnQg
c3RydWN0dXJlZGxvZwogZnJvbSBtb3psb2cuaGFuZGxlcnMgaW1wb3J0IEJhc2VIYW5kbGVyLCBT
dHJlYW1IYW5kbGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBNYWNoRm9ybWF0dGVy
Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCitmcm9tIHNpeC5tb3Zlcy5jb25maWdwYXJzZXIg
aW1wb3J0IENvbmZpZ1BhcnNlcgogZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5l
LCB3cHRydW5uZXIKIAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pKQpAQCAtNTgsNyArNTksNyBAQCBkZWYgdGVzdF9zZXR0aW5ncygpOgogICAgIH0KIAog
ZGVmIHJlYWRfY29uZmlnKCk6Ci0gICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyLkNvbmZpZ1BhcnNl
cigpCisgICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyKCkKICAgICBwYXJzZXIucmVhZCgidGVzdC5j
ZmciKQogCiAgICAgcnYgPSB7ImdlbmVyYWwiOnt9LApAQCAtODMsNyArODQsNyBAQCBkZWYgcnVu
X3Rlc3RzKHByb2R1Y3QsIGt3YXJncyk6CiAKIGRlZiBzZXR0aW5nc190b19hcmd2KHNldHRpbmdz
KToKICAgICBydiA9IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVt
cygpOgorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgogICAgICAg
ICBrZXkgPSAiLS0lcyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAg
IHJ2LmFwcGVuZChrZXkpCkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3Mp
OgogCiAgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3Qs
IHByb2R1Y3Rfc2V0dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZXJpdGVtcygpOgorICAg
IGZvciBwcm9kdWN0LCBwcm9kdWN0X3NldHRpbmdzIGluIGl0ZXJpdGVtcyhjb25maWdbInByb2R1
Y3RzIl0pOgogICAgICAgICBpZiBhcmdzLnByb2R1Y3QgYW5kIHByb2R1Y3Qgbm90IGluIGFyZ3Mu
cHJvZHVjdDoKICAgICAgICAgICAgIGNvbnRpbnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90b3guaW5pCmluZGV4IGFkMzUwMmUwMmE5ZTgxMDE2OTQwYzhmMzlmNTY1NDBmNWFiMWYy
NmQuLmM1NDRkYTdhOTVkMmE5ODJjYWI4YjY4YWY1Mzc0NDBiNzFmYTA5NmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdG94LmluaQpAQCAtMiw4ICsyLDggQEAKIHhmYWlsX3N0cmlj
dD10cnVlCiAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94
LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2Vy
LGVwaXBoYW55fSxweTM2LWJhc2UKLXNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCitl
bnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxz
YXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNSxw
eTM2LHB5MzcscHkzOH0tYmFzZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAK
IFt0ZXN0ZW52XQogZGVwcyA9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3cz
Yy1pbXBvcnQubG9nCmluZGV4IDQwNmE1ZmFlMjU2NDI3MjI4NGFjNTcwMGNjMDQ2ZmIwYjY3YzFm
NmEuLjU4ZTk3MGEwZWRmNmVkZmMxNjA3Yzc2NmE3NjNiZjk1MTUwZjYzZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3ICsxNCw2
IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5p
bgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL1JFQURNRS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CmluZGV4IDkzZjRkNmI2MzBkMjg4Yzc1Zjg4OGNiNzMw
NGJiZjhhNDE5NWRiNmMuLmY3NTU4N2Q4MzlmZmZjZjAzOTAxNzc5YTBiNjUxMjYxOTBiOWQ0ODEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CkBAIC0xMjQsNyAr
MTI0LDcgQEAgY2xhc3MgV2VibGF5ZXJTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0
byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBh
bmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgog
ICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZl
CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51
cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9p
ZF93ZWJ2aWV3LnB5CmluZGV4IGRjNjg3YjQ4ZWQ3YTlkZGU4MjczMzRhZThiNTkwOTZjYzU4ZDI0
ZDcuLjg3OTA1Njc3MDdlOTU3YTdiNjVkN2RjMTViYWFkNWUzMTkwYjhiYmQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2Vidmlldy5weQpAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNz
IFN5c3RlbVdlYlZpZXdTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMg
b25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24n
dCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAj
IGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAg
IHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToK
ICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9i
YXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggNjU1MzQ0NTgxOTcz
YzE1YjY1NzcyOWZlYjczNmRkMjA3M2Q3OWEzMC4uYTAyN2NmMzI2MTBhNDllNjFmNDE0MWJmYjVm
Y2U1ZDA1MTM4NWIzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKQEAgLTMsNiArMyw3IEBAIGltcG9y
dCBwbGF0Zm9ybQogaW1wb3J0IHNvY2tldAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3Ry
YWN0bWV0aG9kCiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9tIHNpeCBpbXBvcnQgaXRl
cml0ZW1zCiAKIGZyb20gLi53cHRjb21tYW5kbGluZSBpbXBvcnQgcmVxdWlyZV9hcmcgICMgbm9x
YTogRjQwMQogCkBAIC0xNDcsMTAgKzE0OCw2IEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAg
ICAgICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyb3dzZXIgcHJvY2VzcyBp
cyBzdGlsbCBydW5uaW5nIiIiCiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR1cF9zc2woc2Vs
ZiwgaG9zdHMpOgotICAgICAgICAiIiJSZXR1cm4gYSBjZXJ0aWZpY2F0ZSB0byB1c2UgZm9yIHRl
c3RzIHJlcXVpcmluZyBzc2wgdGhhdCB3aWxsIGJlIHRydXN0ZWQgYnkgdGhlIGJyb3dzZXIiIiIK
LSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3NsIHRlc3Rpbmcgbm90IHN1cHBv
cnRlZCIpCi0KICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiQnJvd3Nlci1zcGVj
aWZpYyBjbGVhbnVwIHRoYXQgaXMgcnVuIGFmdGVyIHRoZSB0ZXN0cnVuIGlzIGZpbmlzaGVkIiIi
CiAgICAgICAgIHBhc3MKQEAgLTE5OSw1ICsxOTYsNSBAQCBjbGFzcyBFeGVjdXRvckJyb3dzZXIo
b2JqZWN0KToKICAgICB1cCB0aGUgYnJvd3NlciBmcm9tIHRoZSBydW5uZXIgcHJvY2Vzcy4KICAg
ICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBmb3Igaywg
diBpbiBrd2FyZ3MuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhr
d2FyZ3MpOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJv
bWUucHkKaW5kZXggNTEzZmQ1ZjQyNDkyZmNhNGY2MTE1NmU1NDU5NTc2ZDFjODQ2Njk4YS4uYmFj
MWFmZmQzNjUwZTI0YzRiOTZlZmM2NWU2YjQ2OTJjOWIyYjI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hy
b21lLnB5CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToK
ICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBh
bGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBh
IGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNl
bGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgp
CiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weQppbmRleCBiNGVkYzA1MGQwYzcwOWNmYTQ2N2E0
M2I2ZTZhNDEyMDBhYTA0YzczLi5jZDhjNDBmYWIxZmViMDYyOWE4MTRiMmJiYTY4ZWRlY2FhM2Vl
OGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xMTQsNyAr
MTE0LDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMg
VE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAg
ICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNl
c3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5p
c19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVm
IGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvY2hyb21lX2lvcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJv
bWVfaW9zLnB5CmluZGV4IGEwNDI5NjY1YzliYzU3ZTI3YzAyY2U4MWE3ZGViOTA5YjhmYTAwZjUu
LjZkYjAxODhlNTVlYmZmOGQzYTQwZjlhMTVkYzcxNDQxOWVkYWNiZWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9jaHJvbWVfaW9zLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIENocm9tZWlPU0Jyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRo
ZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFi
b3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAg
ICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2
ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3Rv
cCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9lZGdlLnB5CmluZGV4IGQ5ZDBhZjExNWNjOWU5YzY0ZTkyN2IxNWNkZDI5
MWYzMTRiMDdhZTUuLjE4YTFlZDc4MTE4OWNjYTIzZGYyYTRlMWI1YjVkY2E4MzBiZDBlYTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9lZGdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgRWRnZUJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBz
ZXJ2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0
IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAg
IHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIu
aXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1bS5weQppbmRleCA2MzY4MGI2Nzc0YTI3NTky
NDkxZTY3MWY1M2YxNDBiNjVlMTcwNDJiLi41YzUxZjA2NmYwNDQxMzIxNjYwY2FiOTZmNmRlNTFh
Zjg2OGQzMTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVt
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBjbGFzcyBFZGdlQ2hyb21pdW1Ccm93c2VyKEJyb3dzZXIpOgogICAgICAgICAj
IFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLA0KICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbg0KICAgICAgICAgIyBpcyBhY3RpdmUuDQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2
ZXIuaXNfYWxpdmUNCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQogDQog
ICAgIGRlZiBjbGVhbnVwKHNlbGYpOg0KICAgICAgICAgc2VsZi5zdG9wKCkNCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZXBpcGhhbnkucHkKaW5kZXggOGEwZTVmNTc4YjJmZWI4NzFkZGQ1MGFiMDgxNjhjNmI5ZDQ1
ZTRiMC4uZjZjNGM2MDJhMzhjMDQzNjM3Y2Y5ZGJjOGJiYjUzNTBlYzk0NTI3ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9lcGlwaGFueS5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0
X3RpbWVvdXRfbXVsdGlwbGllciwgbWF5YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9s
aXMKIGZyb20gLndlYmtpdCBpbXBvcnQgV2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBp
bXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhl
Y3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVj
dXRvciwgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRv
ciwgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkRyaXZlckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhl
Y3V0b3JzLmV4ZWN1dG9yd2Via2l0IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAg
IyBub3FhOiBGNDAxCiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZXBpcGhhbnkiLApA
QCAtMTEsNyArMTIsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwK
ICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAg
ICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0
aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0
IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9y
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVy
Q3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6
ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZf
ZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKaW5kZXggMGY4MDc1MzM3ODEzNzgzYzc2ZTRiZTRkZWM5
Y2M5MzFhNDI1MmM0MS4uMmRlN2RmMzk2YmQyYTQ4Yjc4NjRhNjZhZWU0YjYyY2ZhMWZiMzY3NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBwbGF0Zm9y
bQogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2Zyb20gYWJj
IGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBpbXBvcnQgbW96aW5mbwogaW1wb3J0
IG1vemxlYWsKQEAgLTI1LDYgKzI2LDcgQEAgZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcm1hcmlv
bmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm8KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvciwgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXJpb25ldHRlV2RzcGVjRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVz
dEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYK
IAogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQpAQCAt
NjMsNiArNjUsOCBAQCBkZWYgZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9p
bmZvX2RhdGEsICoqa3dhcmdzKToKICAgICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTE1Mzg3MjUKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0g
IndpbiIgYW5kIHJ1bl9pbmZvX2RhdGFbInByb2Nlc3NvciJdID09ICJhYXJjaDY0IjoKICAgICAg
ICAgcmV0dXJuIDQKKyAgICBlbGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CisgICAgICAg
IHJldHVybiAyCiAgICAgcmV0dXJuIDEKIAogCkBAIC04Miw2ICs4Niw3IEBAIGRlZiBicm93c2Vy
X2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAg
ICAgICAgICAgImNhX2NlcnRpZmljYXRlX3BhdGgiOiBjb25maWcuc3NsX2NvbmZpZ1siY2FfY2Vy
dF9wYXRoIl0sCiAgICAgICAgICAgICAiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAogICAg
ICAgICAgICAgImVuYWJsZV93ZWJyZW5kZXIiOiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSwK
KyAgICAgICAgICAgICJlbmFibGVfZmlzc2lvbiI6IGt3YXJnc1siZW5hYmxlX2Zpc3Npb24iXSwK
ICAgICAgICAgICAgICJzdGFja2ZpeF9kaXIiOiBrd2FyZ3NbInN0YWNrZml4X2RpciJdLAogICAg
ICAgICAgICAgImJpbmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJdLAogICAgICAgICAg
ICAgInRpbWVvdXRfbXVsdGlwbGllciI6IGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBl
LApAQCAtOTMsNyArOTgsOCBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5m
b19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdz
Ijoga3dhcmdzWyJjaGFvc19tb2RlX2ZsYWdzIl0sCiAgICAgICAgICAgICAiY29uZmlnIjogY29u
ZmlnLAogICAgICAgICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9jaGFu
bmVsIl0sCi0gICAgICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CisgICAg
ICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAicHJl
bG9hZF9icm93c2VyIjoga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXX0KIAogCiBkZWYgZXhlY3V0
b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2lu
Zm9fZGF0YSwKQEAgLTE2OCwxNyArMTc0LDEzIEBAIGRlZiBydW5faW5mb19leHRyYXMoKiprd2Fy
Z3MpOgogICAgICAgICAgICJ3YXNtIjoga3dhcmdzLmdldCgid2FzbSIsIFRydWUpLAogICAgICAg
ICAgICJ2ZXJpZnkiOiBrd2FyZ3NbInZlcmlmeSJdLAogICAgICAgICAgICJoZWFkbGVzcyI6IGt3
YXJncy5nZXQoImhlYWRsZXNzIiwgRmFsc2UpIG9yICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmly
b24sCi0gICAgICAgICAgImZpc3Npb24iOiBnZXRfYm9vbF9wcmVmKCJmaXNzaW9uLmF1dG9zdGFy
dCIpfQorICAgICAgICAgICJzdy1lMTBzIjogVHJ1ZSwKKyAgICAgICAgICAiZmlzc2lvbiI6IGt3
YXJncy5nZXQoImVuYWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRv
c3RhcnQiKX0KIAogICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0
aGVyIHRoZSAicGFyZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJs
ZWQgZm9yIHRoZSBjdXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLAogICAgICMgY2Fu
IGJlIG92ZXJyaWRkZW4gYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwcmVmIHdpdGggdGhlIGAt
LXNldHByZWZgIENMSQotICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLiBJZiBub3Qg
c3VwcGxpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgIyBgc3ctZTEwc2Agd2lsbCBiZSBm
aWxsZWQgaW4gaW4gYFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCi0gICAgIwotICAgICMgV2UgY2Fu
J3QgY2FwdHVyZSB0aGUgZGVmYXVsdCB2YWx1ZSByaWdodCBub3cgYmVjYXVzZSAoY3VycmVudGx5
KSwgaXQKLSAgICAjIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbmlnaHRseV9idWlsZGAsIHdo
aWNoIGlzbid0IGtub3duIHVudGlsCi0gICAgIyBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KKyAg
ICAjIGZsYWcsIHdoaWNoIGlzIGNoZWNrZWQgaGVyZS4KICAgICBzd19lMTBzX292ZXJyaWRlID0g
Z2V0X2Jvb2xfcHJlZl9pZl9leGlzdHMoImRvbS5zZXJ2aWNlV29ya2Vycy5wYXJlbnRfaW50ZXJj
ZXB0IikKICAgICBpZiBzd19lMTBzX292ZXJyaWRlIGlzIG5vdCBOb25lOgogICAgICAgICBydlsi
c3ctZTEwcyJdID0gc3dfZTEwc19vdmVycmlkZQpAQCAtMjAzLDc5ICsyMDUsNjAgQEAgZGVmIHVw
ZGF0ZV9wcm9wZXJ0aWVzKCk6CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9j
ZXNzb3IiOiBbImJpdHMiXX0pCiAKIAotY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0g
ICAgaW5pdF90aW1lb3V0ID0gNzAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKK2NsYXNzIEZp
cmVmb3hJbnN0YW5jZU1hbmFnZXIob2JqZWN0KToKKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0
YQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0
ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxf
YmluYXJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwg
ZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGlyPU5vbmUsCi0g
ICAgICAgICAgICAgICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25l
LCBsZWFrX2NoZWNrPUZhbHNlLCBhc2FuPUZhbHNlLAotICAgICAgICAgICAgICAgICBzdHlsb190
aHJlYWRzPTEsIGNoYW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJyb3dzZXJfY2hh
bm5lbD0ibmlnaHRseSIsIGhlYWRsZXNzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQnJvd3Nl
ci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBiaW5hcnlfYXJncywgcHJvZmlsZV9jcmVhdG9yLCBkZWJ1Z19pbmZvLAorICAgICAg
ICAgICAgICAgICBjaGFvc19tb2RlX2ZsYWdzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwg
c3R5bG9fdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgbGVha19jaGVjaywgc3RhY2tmaXhfZGly
LCBzeW1ib2xzX3BhdGgsIGFzYW4pOgorICAgICAgICAiIiJPYmplY3QgdGhhdCBtYW5hZ2VzIHN0
YXJ0aW5nIGFuZCBzdG9wcGluZyBpbnN0YW5jZXMgb2YgRmlyZWZveC4iIiIKKyAgICAgICAgc2Vs
Zi5sb2dnZXIgPSBsb2dnZXIKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKLSAgICAgICAg
c2VsZi5wcmVmc19yb290ID0gcHJlZnNfcm9vdAotICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRl
c3RfdHlwZQotICAgICAgICBzZWxmLmV4dHJhX3ByZWZzID0gZXh0cmFfcHJlZnMKLSAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYucnVubmVyID0gTm9uZQor
ICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAgICAgc2VsZi5iYXNl
X3Byb2ZpbGUgPSBwcm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvID0gZGVidWdfaW5mbwotICAgICAgICBzZWxmLnByb2ZpbGUgPSBOb25lCi0gICAgICAgIHNl
bGYuc3ltYm9sc19wYXRoID0gc3ltYm9sc19wYXRoCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2Jp
bmFyeSA9IHN0YWNrd2Fsa19iaW5hcnkKLSAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRo
ID0gY2FfY2VydGlmaWNhdGVfcGF0aAotICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNl
cnR1dGlsX2JpbmFyeQotICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuY2hh
b3NfbW9kZV9mbGFncyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5oZWFkbGVzcyA9
IGhlYWRsZXNzCiAgICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5k
ZXIKLSAgICAgICAgc2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCi0gICAgICAgIHNlbGYu
Y29uZmlnID0gY29uZmlnCi0gICAgICAgIGlmIHN0YWNrZml4X2RpcjoKLSAgICAgICAgICAgIHNl
bGYuc3RhY2tfZml4ZXIgPSBnZXRfc3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLnN5bWJvbHNfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RhY2tf
Zml4ZXIgPSBOb25lCisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMK
KyAgICAgICAgc2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLnN0YWNr
Zml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJv
bHNfcGF0aAorICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCiAKLSAgICAgICAgaWYgdGltZW91dF9t
dWx0aXBsaWVyOgotICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGlt
ZW91dCAqIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQor
ICAgICAgICBzZWxmLmN1cnJlbnQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5hc2FuID0gYXNhbgot
ICAgICAgICBzZWxmLmxzYW5fYWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5sc2FuX21heF9z
dGFja19kZXB0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCi0g
ICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0gTm9uZQotICAgICAgICBzZWxmLmxlYWtf
Y2hlY2sgPSBsZWFrX2NoZWNrCi0gICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUK
LSAgICAgICAgc2VsZi5sc2FuX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3R5bG9fdGhy
ZWFkcyA9IHN0eWxvX3RocmVhZHMKLSAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hh
b3NfbW9kZV9mbGFncwotICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hh
bm5lbAotICAgICAgICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKKyAgICBAYWJzdHJhY3RtZXRo
b2QKKyAgICBkZWYgdGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBwYXNzCiAK
LSAgICBkZWYgc2V0dGluZ3Moc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJldHVybiB7ImNoZWNrX2xl
YWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAg
ICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2FuX2FsbG93ZWQsCi0gICAgICAgICAgICAgICAgImxz
YW5fbWF4X3N0YWNrX2RlcHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKLSAgICAgICAg
ICAgICAgICAibW96bGVha19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxl
YWtfYWxsb3dlZCwKLSAgICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5s
ZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorICAgIEBhYnN0cmFjdG1ldGhv
ZAorICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgICIiIkdldCBhIEJyb3dzZXJJbnN0YW5jZSBm
b3IgYSBydW5uaW5nIEZpcmVmb3guCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRh
dGE9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgot
ICAgICAgICAgICAgZ3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBUaGlzIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbmNlIHBlciBpbnN0YW5jZSwgYW5kIGJldHdlZW4gY2FsbHMgc3RvcF9jdXJyZW50
KCkKKyAgICAgICAgbXVzdCBiZSBjYWxsZWQuIiIiCisgICAgICAgIHBhc3MKIAotICAgICAgICBz
ZWxmLmdyb3VwX21ldGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEKLSAgICAgICAgc2VsZi5sc2FuX2Fs
bG93ZWQgPSBrd2FyZ3MuZ2V0KCJsc2FuX2FsbG93ZWQiKQotICAgICAgICBzZWxmLmxzYW5fbWF4
X3N0YWNrX2RlcHRoID0ga3dhcmdzLmdldCgibHNhbl9tYXhfc3RhY2tfZGVwdGgiKQotICAgICAg
ICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IGt3YXJncy5nZXQoIm1vemxlYWtfYWxsb3dlZCIpCi0g
ICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0ga3dhcmdzLmdldCgibW96bGVha190aHJl
c2hvbGRzIikKKyAgICBkZWYgc3RvcF9jdXJyZW50KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAg
ICAgIiIiU2h1dGRvd24gdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgRmlyZWZveC4KIAotICAgICAg
ICBpZiBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5tYXJp
b25ldHRlX3BvcnQgPSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgVGhlIEJyb3dzZXJJbnN0YW5j
ZSByZW1haW5zIGF2YWlsYWJsZSB0aHJvdWdoIHNlbGYucHJldmlvdXMsIHNpbmNlIHNvbWUKKyAg
ICAgICAgb3BlcmF0aW9ucyBoYXBwZW4gYWZ0ZXIgc2h1dGRvd24uIiIiCisgICAgICAgIGlmIG5v
dCBzZWxmLmN1cnJlbnQ6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmFz
YW46Ci0gICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsuTFNBTkxlYWtzKHNl
bGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY29wZT1ncm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5f
YWxsb3dlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKKyAgICAg
ICAgc2VsZi5jdXJyZW50LnN0b3AoZm9yY2UpCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxm
LmN1cnJlbnQKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNl
bGYpOgorICAgICAgICAiIiJTdGFydCBhbiBpbnN0YW5jZSBvZiBGaXJlZm94LCByZXR1cm5pbmcg
YSBCcm93c2VySW5zdGFuY2UgaGFuZGxlIiIiCisgICAgICAgIHByb2ZpbGUgPSBzZWxmLmJhc2Vf
cHJvZmlsZS5jbG9uZShzZWxmLmJhc2VfcHJvZmlsZS5wcm9maWxlKQorCisgICAgICAgIG1hcmlv
bmV0dGVfcG9ydCA9IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJl
bmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IG1hcmlvbmV0dGVfcG9ydH0pCiAKICAgICAgICAgZW52
ID0gdGVzdF9lbnZpcm9ubWVudCh4cmVQYXRoPW9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9c2VsZi5kZWJ1Z19pbmZv
IGlzIG5vdCBOb25lLApAQCAtMjkyLDQwICsyNzUsNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihC
cm93c2VyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJd
ID0gIjAiCiAKLSAgICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQotCi0gICAg
ICAgIHNlbGYucHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2Vz
KQotICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJt
YXJpb25ldHRlLnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKLSAgICAgICAgICAgICJuZXR3
b3JrLmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCks
Ci0gICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCi0gICAgICAgICAg
ICAjIFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChC
dWcgOTA1NDA0KQotICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCi0gICAgICAg
ICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAgICAgIm5ldHdv
cmsucHJlbG9hZCI6IFRydWUsCi0gICAgICAgIH0pCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAg
ICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVt
b3RlLmF1dG9zdGFydCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJy
ZWZ0ZXN0IjoKLSAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXlv
dXQuaW50ZXJydXB0aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKLQotICAgICAgICBpZiBz
ZWxmLmxlYWtfY2hlY2s6Ci0gICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5w
YXRoLmpvaW4oc2VsZi5wcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ciICUg
b3MuZ2V0cGlkKCkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmxlYWtfcmVw
b3J0X2ZpbGUpOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmxlYWtfcmVwb3J0X2Zp
bGUpCi0gICAgICAgICAgICBlbnZbIlhQQ09NX01FTV9CTE9BVF9MT0ciXSA9IHNlbGYubGVha19y
ZXBvcnRfZmlsZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9m
aWxlID0gTm9uZQotCi0gICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEwcywgZGlzYWJs
ZSBod2FjY2VsCi0gICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpIGlu
ICgiV2luZG93cyIsICJNaWNyb3NvZnQiKSBhbmQKLSAgICAgICAgICAgICc1LjEnIGluIHBsYXRm
b3JtLnZlcnNpb24oKSk6Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2Vz
KHsibGF5ZXJzLmFjY2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNl
bGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0
dXBfc3NsKCkKLQogICAgICAgICBhcmdzID0gc2VsZi5iaW5hcnlfYXJnc1s6XSBpZiBzZWxmLmJp
bmFyeV9hcmdzIGVsc2UgW10KICAgICAgICAgYXJncyArPSBbY21kX2FyZygibWFyaW9uZXR0ZSIp
LCAiYWJvdXQ6YmxhbmsiXQogCkBAIC0zMzMsNjAgKzI4MiwxMDEgQEAgY2xhc3MgRmlyZWZveEJy
b3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5k
ZWJ1Z19pbmZvKQogCi0gICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxl
PXNlbGYucHJvZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFy
eT1jbWRbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNt
ZFsxOl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFu
ZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJncz17
InByb2Nlc3NPdXRwdXRMaW5lIjogW3NlbGYub25fb3V0cHV0XX0pCisgICAgICAgIGlmIHNlbGYu
bGVha19jaGVjazoKKyAgICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4o
cHJvZmlsZS5wcm9maWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBpZCgpKQor
ICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGVha19yZXBvcnRfZmlsZSk6CisgICAgICAg
ICAgICAgICAgb3MucmVtb3ZlKGxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgICAgICBlbnZbIlhQ
Q09NX01FTV9CTE9BVF9MT0ciXSA9IGxlYWtfcmVwb3J0X2ZpbGUKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBOb25lCisKKyAgICAgICAgb3V0cHV0X2hhbmRs
ZXIgPSBPdXRwdXRIYW5kbGVyKHNlbGYubG9nZ2VyLCBzZWxmLnN0YWNrZml4X2Rpciwgc2VsZi5z
eW1ib2xzX3BhdGgsIHNlbGYuYXNhbikKKyAgICAgICAgcnVubmVyID0gRmlyZWZveFJ1bm5lcihw
cm9maWxlPXByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PWNt
ZFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0
TGluZSI6IFtvdXRwdXRfaGFuZGxlcl19KQorICAgICAgICBpbnN0YW5jZSA9IEJyb3dzZXJJbnN0
YW5jZShzZWxmLmxvZ2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9oYW5kbGVyLCBsZWFrX3JlcG9ydF9maWxlKQog
CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBGaXJlZm94IikKLQotICAgICAg
ICBzZWxmLnJ1bm5lci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVyYWN0aXZlPXNl
bGYuZGVidWdfaW5mbyBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQorICAgICAgICBy
dW5uZXIuc3RhcnQoZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVn
X2luZm8gYW5kIHNlbGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIkZpcmVmb3ggU3RhcnRlZCIpCiAKLSAgICBkZWYgbG9hZF9wcmVmcyhzZWxmKToK
LSAgICAgICAgcHJlZnMgPSBQcmVmZXJlbmNlcygpCi0KLSAgICAgICAgcHJlZl9wYXRocyA9IFtd
Ci0KLSAgICAgICAgcHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJv
ZmlsZXMuanNvbicpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKLSAgICAg
ICAgICAgIHdpdGggb3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBm
b3IgbmFtZSBpbiBqc29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAgICAg
ICAgICAgICAgICAgaWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4o
c2VsZi5wcmVmc19yb290LCBuYW1lLCAndXNlci5qcycpKQotICAgICAgICAgICAgICAgICAgICBl
bGlmIG5hbWUgIT0gJ3VuaXR0ZXN0LWZlYXR1cmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1
c2VyLmpzJykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZp
bGVzIHVzZWQgYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hl
biBubyBsb25nZXIgc3VwcG9ydGVkKQotICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAo
Ci0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZzX2dl
bmVyYWwuanMnKSwgICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKLSAgICAgICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMnKSwg
ICMgVXNlZCBpbiBGaXJlZm94IDYxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBmb3IgcGF0
aCBpbiBsZWdhY3lfcHJlZl9wYXRoczoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmls
ZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkKLQot
ICAgICAgICBmb3IgcGF0aCBpbiBwcmVmX3BhdGhzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJlYWRf
cHJlZnMocGF0aCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9n
Z2VyLndhcm5pbmcoIkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBwYXRo
KQotCi0gICAgICAgICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKLSAgICAgICAgcHJlZnMu
YWRkKHNlbGYuZXh0cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNl
CisKKworY2xhc3MgU2luZ2xlSW5zdGFuY2VNYW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIp
OgorICAgICIiIkZpcmVmb3hJbnN0YW5jZU1hbmFnZXIgdGhhdCBtYW5hZ2VzIGEgc2luZ2xlIEZp
cmVmb3ggaW5zdGFuY2UiIiIKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90
IHNlbGYuY3VycmVudCwgKCJUcmllZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0
aGF0IGhhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5n
IGluc3RhbmNlIikKKyAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYu
cHJldmlvdXMuY2xlYW51cCgpCisgICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAg
ICAgICBzZWxmLmN1cnJlbnQgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3Vy
cmVudAorCisgICAgZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9y
IGluc3RhbmNlIGluIFtzZWxmLnByZXZpb3VzLCBzZWxmLmN1cnJlbnRdOgorICAgICAgICAgICAg
aWYgaW5zdGFuY2U6CisgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSkKKyAgICAg
ICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBQcmVsb2FkSW5zdGFuY2VN
YW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQg
a2VlcHMgb25jZSBGaXJlZm94IGluc3RhbmNlIHByZWxvYWRlZAorICAgICAgICB0byBhbGxvdyBy
YXBpZCByZXN1bXB0aW9uIGFmdGVyIGFuIGluc3RhbmNlIHNodXRzIGRvd24uIiIiCisgICAgICAg
IHN1cGVyKFByZWxvYWRJbnN0YW5jZU1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3
YXJncykKKyAgICAgICAgc2VsZi5wZW5kaW5nID0gTm9uZQorCisgICAgZGVmIGdldChzZWxmKToK
KyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmN1cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBv
biBJbnN0YW5jZU1hbmFnZXIgdGhhdCBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhbiBleGlzdGluZyBpbnN0YW5jZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6
CisgICAgICAgICAgICBzZWxmLnByZXZpb3VzLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5w
cmV2aW91cyA9IE5vbmUKKyAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZzoKKyAgICAgICAgICAg
IHNlbGYucGVuZGluZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBzZWxm
LnBlbmRpbmcKKyAgICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJl
dHVybiBzZWxmLmN1cnJlbnQKKworICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6
CisgICAgICAgIGZvciBpbnN0YW5jZSwgc2tpcF9tYXJpb25ldHRlIGluIFsoc2VsZi5wcmV2aW91
cywgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl
bGYuY3VycmVudCwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHNlbGYucGVuZGluZywgVHJ1ZSldOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6Cisg
ICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSwgc2tpcF9tYXJpb25ldHRlPXNraXBf
bWFyaW9uZXR0ZSkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFz
cyBCcm93c2VySW5zdGFuY2Uob2JqZWN0KToKKyAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKIAot
ICAgICAgICByZXR1cm4gcHJlZnMoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHJ1
bm5lciwgbWFyaW9uZXR0ZV9wb3J0LCBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSk6
CisgICAgICAgICIiIkhhbmRsZSB0byBhIHJ1bm5pbmcgRmlyZWZveCBpbnN0YW5jZSIiIgorICAg
ICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgor
ICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0dGVfcG9ydAorICAgICAgICBz
ZWxmLm91dHB1dF9oYW5kbGVyID0gb3V0cHV0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5sZWFrX3Jl
cG9ydF9maWxlID0gbGVha19yZXBvcnRfZmlsZQogCi0gICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9
RmFsc2UpOgorICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlLCBza2lwX21hcmlvbmV0dGU9
RmFsc2UpOgorICAgICAgICAiIiJTdG9wIEZpcmVmb3giIiIKICAgICAgICAgaWYgc2VsZi5ydW5u
ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBGaXJlZm94ICVzIiAlIHNlbGYucGlkKCkpCisg
ICAgICAgICAgICBzaHV0ZG93bl9tZXRob2RzID0gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVy
LndhaXQoc2VsZi5zaHV0ZG93bl90aW1lb3V0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdURVJNKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1
bm5lci5zdG9wKHNpZ25hbC5TSUdLSUxMKSldCisgICAgICAgICAgICBpZiBza2lwX21hcmlvbmV0
dGU6CisgICAgICAgICAgICAgICAgc2h1dGRvd25fbWV0aG9kcyA9IHNodXRkb3duX21ldGhvZHNb
MTpdCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBGb3IgRmlyZWZveCB3ZSBh
c3N1bWUgdGhhdCBzdG9wcGluZyB0aGUgcnVubmVyIHByb21wdHMgdGhlCiAgICAgICAgICAgICAg
ICAgIyBicm93c2VyIHRvIHNodXQgZG93bi4gVGhpcyBhbGxvd3MgdGhlIGxlYWsgbG9nIHRvIGJl
IHdyaXR0ZW4KLSAgICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBbKFRydWUsIGxh
bWJkYTogc2VsZi5ydW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVy
LnN0b3Aoc2lnbmFsLlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV06
CisgICAgICAgICAgICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gc2h1dGRvd25fbWV0aG9kczoK
ICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZvcmNlIG9yIG5vdCBjbGVhbjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldGNvZGUgPSBzdG9wX2YoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgcmV0Y29kZSBpcyBub3QgTm9uZToKQEAgLTM5NSwyMyArMzg1LDggQEAgY2xhc3MgRmly
ZWZveEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAg
ICAgICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBvbiBXaW5kb3dzIGlmIHRoZSBwcm9jZXNzIGlz
IGFscmVhZHkgZGVhZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5wcm9jZXNz
X2xlYWtzKCkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQotCi0gICAgZGVm
IHByb2Nlc3NfbGVha3Moc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlBST0NFU1Mg
TEVBS1MgJXMiICUgc2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAgICAgICBpZiBzZWxmLmxzYW5f
aGFuZGxlcjoKLSAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyLnByb2Nlc3MoKQotICAgICAg
ICBpZiBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtb3ps
ZWFrLnByb2Nlc3NfbGVha19sb2coCi0gICAgICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9m
aWxlLAotICAgICAgICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNo
b2xkcywKLSAgICAgICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0s
Ci0gICAgICAgICAgICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNr
X2ZpeGVyPXNlbGYuc3RhY2tfZml4ZXIsCi0gICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5ncm91
cF9tZXRhZGF0YS5nZXQoInNjb3BlIiksCi0gICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLm1v
emxlYWtfYWxsb3dlZAotICAgICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc2tpcF9tYXJpb25l
dHRlOgorICAgICAgICAgICAgc2VsZi5vdXRwdXRfaGFuZGxlci5hZnRlcl9zdG9wKCkKIAogICAg
IGRlZiBwaWQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBp
cyBOb25lOgpAQCAtNDIyLDQ0ICszOTcsMjA4IEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dz
ZXIpOgogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4g
Tm9uZQogCi0gICAgZGVmIG9uX291dHB1dChzZWxmLCBsaW5lKToKKyAgICBkZWYgaXNfYWxpdmUo
c2VsZik6CisgICAgICAgIGlmIHNlbGYucnVubmVyOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cnVubmVyLmlzX3J1bm5pbmcoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVh
bnVwKHNlbGYpOgorICAgICAgICAjIG1venByb2ZpbGUgaGFuZGxlcyBkZWxldGluZyB0aGUgcHJv
ZmlsZSB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIDAKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBO
b25lCisKKworY2xhc3MgT3V0cHV0SGFuZGxlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIHN0YWNrZml4X2Rpciwgc3ltYm9sc19wYXRoLCBhc2FuKToKKyAgICAgICAg
IiIiRmlsdGVyIGZvciBoYW5kbGluZyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAg
IFRoaXMgcmVjZWl2ZXMgRmlyZWZveCBwcm9jZXNzIG91dHB1dCBpbiB0aGUgX19jYWxsX18gZnVu
Y3Rpb24sIGRvZXMKKyAgICAgICAgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aGF0J3MgcmVx
dWlyZWQsIGFuZCBkZWNpZGVzIHdoZXRoZXIgdG8gbG9nCisgICAgICAgIHRoZSBvdXRwdXQuIEJl
Y2F1c2UgdGhlIEZpcmVmb3ggcHJvY2VzcyBjYW4gYmUgc3RhcnRlZCBiZWZvcmUgd2Uga25vdwor
ICAgICAgICB3aGljaCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgd2UgYnVmZmVy
IGFsbCBvdXRwdXQgdW50aWwKKyAgICAgICAgc2V0dXAoKSBpcyBjYWxsZWQuIFRoaXMgaXMgcmVz
cG9uc2libGUgZm9yIGRvaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uCisgICAgICAgIG9mIHRo
ZSBvdXRwdXQgaGFuZGxlcnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCisgICAgICAgICMgVGhlc2UgYXJlIGZpbGxlZCBpbiBhZnRlciBzZXR1cCgpIGlzIGNh
bGxlZAorICAgICAgICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3ltYm9s
c19wYXRoID0gc3ltYm9sc19wYXRoCisgICAgICAgIGlmIHN0YWNrZml4X2RpcjoKKyAgICAgICAg
ICAgICMgV2UgaGlkZSBlcnJvcnMgYmVjYXVzZSB0aGV5IGNhdXNlIGRpc2NvbmNlcnRpbmcgYENS
SVRJQ0FMYAorICAgICAgICAgICAgIyB3YXJuaW5ncyBpbiB3ZWIgcGxhdGZvcm0gdGVzdCBvdXRw
dXQuCisgICAgICAgICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0
aW9uKHN0YWNrZml4X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcnM9VHJ1ZSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25lCisgICAgICAg
IHNlbGYuYXNhbiA9IGFzYW4KKworICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKKyAg
ICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCisgICAgICAgIHNlbGYubW96bGVha190
aHJlc2hvbGRzID0gTm9uZQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0ge30KKworICAg
ICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBGYWxz
ZQorCisgICAgZGVmIHNldHVwKHNlbGYsIGluc3RhbmNlPU5vbmUsIGdyb3VwX21ldGFkYXRhPU5v
bmUsIGxzYW5fZGlzYWJsZWQ9RmFsc2UsCisgICAgICAgICAgICAgIGxzYW5fYWxsb3dlZD1Ob25l
LCBsc2FuX21heF9zdGFja19kZXB0aD1Ob25lLCBtb3psZWFrX2FsbG93ZWQ9Tm9uZSwKKyAgICAg
ICAgICAgICAgbW96bGVha190aHJlc2hvbGRzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIi
Q29uZmlndXJlIHRoZSBvdXRwdXQgaGFuZGxlciIiIgorICAgICAgICBzZWxmLmluc3RhbmNlID0g
aW5zdGFuY2UKKworICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgorICAgICAgICAg
ICAgZ3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0gZ3Jv
dXBfbWV0YWRhdGEKKworICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IG1vemxlYWtfYWxs
b3dlZAorICAgICAgICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IG1vemxlYWtfdGhyZXNob2xk
cworCisgICAgICAgIGlmIHNlbGYuYXNhbjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVy
ID0gbW96bGVhay5MU0FOTGVha3Moc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2Nv
cGUiLCAiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbGxvd2VkPWxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9bHNhbl9tYXhfc3RhY2tf
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbG93QWxsPWxzYW5fZGlzYWJsZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
LmxzYW5faGFuZGxlciA9IE5vbmUKKworICAgICAgICBzZWxmLnNldHVwX3JhbiA9IFRydWUKKwor
ICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfYnVmZmVyOgorICAgICAgICAgICAgc2VsZi5f
X2NhbGxfXyhsaW5lKQorICAgICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKworICAgIGRlZiBh
ZnRlcl9zdG9wKHNlbGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtT
ICVzIiAlIHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSkKKyAgICAgICAgaWYgc2VsZi5s
c2FuX2hhbmRsZXI6CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKKyAg
ICAgICAgaWYgc2VsZi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgIyBXZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5nIGxlYWtzIGluIHRoZSB0YWIgYmVj
YXVzZSBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlCisgICAgICAgICAgICAjIGNvbnRlbnQgcHJvY2Vz
cyBjcmFzaGVkIGFuZCBpbiB0aGF0IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBmYWls
LgorICAgICAgICAgICAgIyBJZGVhbGx5IHdlIHdvdWxkIHJlY29yZCB3aGljaCBjb250ZW50IHBy
b2Nlc3MgY3Jhc2hlZCBhbmQganVzdCBza2lwIHRob3NlLgorICAgICAgICAgICAgbW96bGVhay5w
cm9jZXNzX2xlYWtfbG9nKAorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UubGVha19yZXBv
cnRfZmlsZSwKKyAgICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3Ro
cmVzaG9sZHMsCisgICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJ0YWIiLCAi
Z21wbHVnaW4iXSwKKyAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCisgICAgICAgICAg
ICAgICAgc3RhY2tfZml4ZXI9c2VsZi5zdGFja19maXhlciwKKyAgICAgICAgICAgICAgICBzY29w
ZT1zZWxmLmdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiKSwKKyAgICAgICAgICAgICAgICBhbGxv
d2VkPXNlbGYubW96bGVha19hbGxvd2VkKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGxpbmUp
OgogICAgICAgICAiIiJXcml0ZSBhIGxpbmUgb2Ygb3V0cHV0IGZyb20gdGhlIGZpcmVmb3ggcHJv
Y2VzcyB0byB0aGUgbG9nIiIiCi0gICAgICAgIGlmICJHTGliLUdPYmplY3QtQ1JJVElDQUwiIGlu
IGxpbmU6CisgICAgICAgIGlmIGIiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgogICAg
ICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5zZXR1cF9yYW46CisgICAgICAgICAgICAgICAgc2VsZi5saW5lX2J1ZmZlci5hcHBlbmQobGlu
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRhdGEgPSBsaW5lLmRlY29k
ZSgidXRmOCIsICJyZXBsYWNlIikKICAgICAgICAgICAgIGlmIHNlbGYuc3RhY2tfZml4ZXI6CiAg
ICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3RhY2tfZml4ZXIoZGF0YSkKICAgICAgICAgICAg
IGlmIHNlbGYubHNhbl9oYW5kbGVyOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmxzYW5f
aGFuZGxlci5sb2coZGF0YSkKICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5waWQoKSwKKyAgICAg
ICAgICAgICAgICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLmluc3RhbmNlIGFuZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2Uu
cnVubmVyLnByb2Nlc3NfaGFuZGxlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIucGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0iICIuam9pbihzZWxm
LnJ1bm5lci5jb21tYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPSIgIi5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLmNvbW1hbmQpKQogCi0g
ICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLnJ1bm5lci5pc19ydW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNl
CiAKLSAgICBkZWYgY2xlYW51cChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc3Rv
cChmb3JjZSkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZz
LCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVs
LCBiaW5hcnksIGNlcnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAg
IHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jv
b3QKKyAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKKyAgICAgICAgc2VsZi50ZXN0X3R5cGUg
PSB0ZXN0X3R5cGUKKyAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCisgICAg
ICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfZmlzc2lvbiA9IGVuYWJs
ZV9maXNzaW9uCisgICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVs
CisgICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgK
KyAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5h
cnkgPSBjZXJ0dXRpbF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0g
Y2FfY2VydGlmaWNhdGVfcGF0aAogCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0g
ICAgICAgIGFzc2VydCBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBub3QgTm9uZQotICAgICAgICBy
ZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0
ZV9wb3J0fQorICAgIGRlZiBjcmVhdGUoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSBhIEZpcmVm
b3ggcHJvZmlsZSBhbmQgcmV0dXJuIHRoZSBtb3pwcm9maWxlIFByb2ZpbGUgb2JqZWN0IHBvaW50
aW5nIGF0IHRoYXQKKyAgICAgICAgcHJvZmlsZSIiIgorICAgICAgICBwcmVmZXJlbmNlcyA9IHNl
bGYuX2xvYWRfcHJlZnMoKQogCi0gICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRl
c3QpOgotICAgICAgICBkdW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmls
ZSwgIm1pbmlkdW1wcyIpCisgICAgICAgIHByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJl
bmNlcz1wcmVmZXJlbmNlcykKKyAgICAgICAgc2VsZi5fc2V0X3JlcXVpcmVkX3ByZWZzKHByb2Zp
bGUpCisgICAgICAgIGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuX3NldHVwX3NzbChwcm9maWxlKQorCisgICAgICAgIHJldHVybiBwcm9m
aWxlCisKKyAgICBkZWYgX2xvYWRfcHJlZnMoc2VsZik6CisgICAgICAgIHByZWZzID0gUHJlZmVy
ZW5jZXMoKQorCisgICAgICAgIHByZWZfcGF0aHMgPSBbXQogCi0gICAgICAgIHJldHVybiBib29s
KG1vemNyYXNoLmxvZ19jcmFzaGVzKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3Rh
Y2t3YWxrX2JpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzcz1wcm9jZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0PXRlc3QpKQorICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxmLnByZWZz
X3Jvb3QsICdwcm9maWxlcy5qc29uJykKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocHJvZmls
ZXMpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgorICAgICAg
ICAgICAgICAgIGZvciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10ZXN0cydd
OgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAoTm9uZSwg
J25pZ2h0bHknKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9z
LnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCisgICAgICAgICAg
ICAgICAgICAgIGVsaWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9v
dCwgbmFtZSwgJ3VzZXIuanMnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT2xkIHBy
ZWZlcmVuY2UgZmlsZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVzLmpzb24g
KHJlbW92ZSB3aGVuIG5vIGxvbmdlciBzdXBwb3J0ZWQpCisgICAgICAgICAgICBsZWdhY3lfcHJl
Zl9wYXRocyA9ICgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290
LCAncHJlZnNfZ2VuZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBiZWxvdwor
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21tb24nLCAn
dXNlci5qcycpLCAgIyBVc2VkIGluIEZpcmVmb3ggNjEKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGZvciBwYXRoIGluIGxlZ2FjeV9wcmVmX3BhdGhzOgorICAgICAgICAgICAgICAgIGlmIG9z
LnBhdGguaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVu
ZChwYXRoKQorCisgICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6CisgICAgICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBwcmVmcy5hZGQoUHJlZmVy
ZW5jZXMucmVhZF9wcmVmcyhwYXRoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc2VsZi5sb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBmaWxlIGlu
ICVzIiAlIHBhdGgpCiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYpOgorICAgICAgICAjIEFkZCBh
bnkgY3VzdG9tIHByZWZlcmVuY2VzCisgICAgICAgIHByZWZzLmFkZChzZWxmLmV4dHJhX3ByZWZz
LCBjYXN0PVRydWUpCisKKyAgICAgICAgcmV0dXJuIHByZWZzKCkKKworICAgIGRlZiBfc2V0X3Jl
cXVpcmVkX3ByZWZzKHNlbGYsIHByb2ZpbGUpOgorICAgICAgICAiIiJTZXQgcHJlZmVyZW5jZXMg
cmVxdWlyZWQgZm9yIHdwdHJ1bm5lciB0byBmdW5jdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQg
dGhpcyBkb2Vzbid0IHNldCB0aGUgbWFyaW9uZXR0ZSBwb3J0LCBzaW5jZSB3ZSBkb24ndCBhbHdh
eXMKKyAgICAgICAga25vdyB0aGF0IGF0IHByb2ZpbGUgY3JlYXRpb24gdGltZS4gU28gdGhlIGNh
bGxlciBpcyByZXNwb25pc2JsZSBmb3IKKyAgICAgICAgc2V0dGluZyB0aGF0IG9uY2UgaXQncyBh
dmFpbGFibGUuIiIiCisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAg
ICAgICJuZXR3b3JrLmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21h
aW5zX3NldCksCisgICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCisg
ICAgICAgICAgICAjIFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMg
c3RhYmxlIChCdWcgOTA1NDA0KQorICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAs
CisgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAorICAgICAgICAg
ICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUsCisgICAgICAgIH0pCisgICAgICAgIGlmIHNlbGYu
ZTEwczoKKyAgICAgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJz
LnJlbW90ZS5hdXRvc3RhcnQiOiBUcnVlfSkKKworICAgICAgICBpZiBzZWxmLmVuYWJsZV9maXNz
aW9uOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJmaXNzaW9uLmF1dG9z
dGFydCI6IFRydWV9KQorCisgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoK
KyAgICAgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVycnVwdGli
bGUtcmVmbG93LmVuYWJsZWQiOiBGYWxzZX0pCisKKyAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lu
eHAgKyBlMTBzLCBkaXNhYmxlIGh3YWNjZWwKKyAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxh
dGZvcm0uc3lzdGVtKCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAorICAgICAgICAg
ICAgIjUuMSIgaW4gcGxhdGZvcm0udmVyc2lvbigpKToKKyAgICAgICAgICAgIHNlbGYucHJvZmls
ZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0p
CisKKyAgICBkZWYgX3NldHVwX3NzbChzZWxmLCBwcm9maWxlKToKICAgICAgICAgIiIiQ3JlYXRl
IGEgY2VydGlmaWNhdGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMg
aXMgY29uZmlndXJlZAogICAgICAgICB0byB0cnVzdCB0aGUgQ0EgQ2VydGlmaWNhdGUgdGhhdCBo
YXMgc2lnbmVkIHRoZSB3ZWItcGxhdGZvcm0udGVzdCBzZXJ2ZXIKICAgICAgICAgY2VydGlmaWNh
dGUuIiIiCkBAIC00OTAsMTYgKzYyOSwxNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2Vy
KToKICAgICAgICAgICAgIGNtZCA9IFtzZWxmLmNlcnR1dGlsX2JpbmFyeV0gKyBsaXN0KGFyZ3Mp
CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dCgiY2VydHV0aWwiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRw
dXQoY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgIi5qb2luKGNtZCkpCiAKLSAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9p
bihzZWxmLnByb2ZpbGUucHJvZmlsZSwgIi5jcnRkYnB3IikKKyAgICAgICAgcHdfcGF0aCA9IG9z
LnBhdGguam9pbihwcm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCiAgICAgICAgIHdpdGggb3Bl
bihwd19wYXRoLCAidyIpIGFzIGY6CiAgICAgICAgICAgICAjIFVzZSBlbXB0eSBwYXNzd29yZCBm
b3IgY2VydGlmaWNhdGUgZGIKICAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgICAgICBj
ZXJ0X2RiX3BhdGggPSBzZWxmLnByb2ZpbGUucHJvZmlsZQorICAgICAgICBjZXJ0X2RiX3BhdGgg
PSBwcm9maWxlLnByb2ZpbGUKIAogICAgICAgICAjIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBk
YgogICAgICAgICBjZXJ0dXRpbCgiLU4iLCAiLWQiLCBjZXJ0X2RiX3BhdGgsICItZiIsIHB3X3Bh
dGgpCkBAIC01MTAsMyArNjQ5LDEwNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToK
IAogICAgICAgICAjIExpc3QgYWxsIGNlcnRzIGluIHRoZSBkYXRhYmFzZQogICAgICAgICBjZXJ0
dXRpbCgiLUwiLCAiLWQiLCBjZXJ0X2RiX3BhdGgpCisKKworCitjbGFzcyBGaXJlZm94QnJvd3Nl
cihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSA3MAorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5v
bmUsIGRlYnVnX2luZm89Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUs
IHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAg
ICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJl
bmRlcj1GYWxzZSwgZW5hYmxlX2Zpc3Npb249RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0YWNr
Zml4X2Rpcj1Ob25lLCBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwg
bGVha19jaGVjaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgYXNhbj1GYWxzZSwgc3R5bG9fdGhy
ZWFkcz0xLCBjaGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLAorICAgICAgICAgICAg
ICAgICBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFkbGVzcz1Ob25lLCBwcmVsb2FkX2Jy
b3dzZXI9RmFsc2UsICoqa3dhcmdzKToKKyAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBs
b2dnZXIpCisKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBpZiB0aW1l
b3V0X211bHRpcGxpZXI6CisgICAgICAgICAgICBzZWxmLmluaXRfdGltZW91dCA9IHNlbGYuaW5p
dF90aW1lb3V0ICogdGltZW91dF9tdWx0aXBsaWVyCisKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9
IE5vbmUKKworICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAg
ICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAgICAgICBzZWxmLnN0YWNrd2Fs
a19iaW5hcnkgPSBzdGFja3dhbGtfYmluYXJ5CisKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgor
ICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisKKyAgICAgICAgcHJvZmlsZV9j
cmVhdG9yID0gUHJvZmlsZUNyZWF0b3IobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUxMHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9m
aXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2Vy
X2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFy
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmlu
YXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZp
Y2F0ZV9wYXRoKQorCisgICAgICAgIGlmIHByZWxvYWRfYnJvd3NlcjoKKyAgICAgICAgICAgIGlu
c3RhbmNlX21hbmFnZXJfY2xzID0gUHJlbG9hZEluc3RhbmNlTWFuYWdlcgorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBTaW5nbGVJbnN0YW5jZU1hbmFn
ZXIKKyAgICAgICAgc2VsZi5pbnN0YW5jZV9tYW5hZ2VyID0gaW5zdGFuY2VfbWFuYWdlcl9jbHMo
bG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJpbmFyeV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlX2NyZWF0b3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxh
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRsZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbmFibGVfd2VicmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFrX2NoZWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5
bWJvbHNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXNhbikKKworCisgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgorICAgICAg
ICByZXR1cm4geyJjaGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVh
a3MsCisgICAgICAgICAgICAgICAgImxzYW5fZGlzYWJsZWQiOiB0ZXN0LmxzYW5fZGlzYWJsZWQs
CisgICAgICAgICAgICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAg
ICAgICAgICAgICAgICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tf
ZGVwdGgsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVj
ayBhbmQgdGVzdC5tb3psZWFrX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhy
ZXNob2xkcyI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKwor
ICAgIGRlZiBzdGFydChzZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAg
ICAgIHNlbGYuaW5zdGFuY2UgPSBzZWxmLmluc3RhbmNlX21hbmFnZXIuZ2V0KCkKKyAgICAgICAg
c2VsZi5pbnN0YW5jZS5vdXRwdXRfaGFuZGxlci5zZXR1cChzZWxmLmluc3RhbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCisgICAg
ZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFn
ZXIuc3RvcF9jdXJyZW50KGZvcmNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3RvcHBl
ZCIpCisKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5w
aWQoKQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0
YW5jZSBhbmQgc2VsZi5pbnN0YW5jZS5pc19hbGl2ZSgpCisKKyAgICBkZWYgY2xlYW51cChzZWxm
LCBmb3JjZT1GYWxzZSk6CisgICAgICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlci50ZWFyZG93bihm
b3JjZSkKKworICAgIGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICBhc3NlcnQg
c2VsZi5pbnN0YW5jZSBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2Vy
LCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYuaW5zdGFuY2UubWFyaW9uZXR0ZV9wb3J0fQorCisg
ICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgorICAgICAgICBkdW1wX2Rp
ciA9IG9zLnBhdGguam9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9maWxlLnByb2ZpbGUsICJt
aW5pZHVtcHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBib29sKG1vemNy
YXNoLmxvZ19jcmFzaGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZHVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNl
bGYuc3RhY2t3YWxrX2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2Nlc3M9cHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAg
ICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiTG9va2luZyBmb3IgY3Jhc2ggZHVtcCBmaWxl
cyBmYWlsZWQiKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2ZpcmVmb3hfYW5kcm9pZC5weQppbmRleCAzM2I1ZDUxZTU0ZTgyYWRiNmNkYmU0NjEyMjYzYmMz
MDg4M2RkMTA4Li5hNmNiOGYwZGQzZTBmNjY5ZDQ3YjRhOWE0YTcyOGQ5OWZjNjQ4OTg4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKQEAgLTEsMjYgKzEsMzAgQEAK
IGltcG9ydCBvcwogCiBpbXBvcnQgbW96bmV0d29yawotZnJvbSBtb3pwcm9maWxlIGltcG9ydCBG
aXJlZm94UHJvZmlsZQogZnJvbSBtb3pydW5uZXIgaW1wb3J0IEZlbm5lY0VtdWxhdG9yUnVubmVy
CiAKIGZyb20gLmJhc2UgaW1wb3J0IChnZXRfZnJlZV9wb3J0LAogICAgICAgICAgICAgICAgICAg
IGNtZF9hcmcsCiAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jb21tYW5kKQogZnJvbSAuLmV4
ZWN1dG9ycy5leGVjdXRvcm1hcmlvbmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NF
eGVjdXRvciwgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitm
cm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKK2Zyb20gLmJhc2UgaW1wb3J0IChCcm93c2Vy
LAorICAgICAgICAgICAgICAgICAgIEV4ZWN1dG9yQnJvd3NlcikKIGZyb20gLmZpcmVmb3ggaW1w
b3J0IChnZXRfdGltZW91dF9tdWx0aXBsaWVyLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAg
ICAgICAgICAgcnVuX2luZm9fZXh0cmFzIGFzIGZ4X3J1bl9pbmZvX2V4dHJhcywKICAgICAgICAg
ICAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGllcywgICMgbm9xYTogRjQwMQogICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWN1dG9yX2t3YXJncywgICMgbm9xYTogRjQwMQotICAgICAgICAgICAg
ICAgICAgICAgIEZpcmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAg
ICAgICAgUHJvZmlsZUNyZWF0b3IgYXMgRmlyZWZveFByb2ZpbGVDcmVhdG9yKQogCiAKIF9fd3B0
cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZmlyZWZveF9hbmRyb2lkIiwKICAgICAgICAgICAgICAg
ICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIsCiAgICAgICAgICAgICAgICAgICJicm93c2Vy
IjogIkZpcmVmb3hBbmRyb2lkQnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6
IHsidGVzdGhhcm5lc3MiOiAiTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RFeGVj
dXRvciJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9u
ZXR0ZVJlZlRlc3RFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogIk1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAg
ICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJl
bnZfZXh0cmFzIjogImVudl9leHRyYXMiLApAQCAtNTEsNiArNTUsNyBAQCBkZWYgYnJvd3Nlcl9r
d2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAg
ICAgICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3Rf
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyksCisgICAgICAgICAgICAiZTEwcyI6IHJ1
bl9pbmZvX2RhdGFbImUxMHMiXSwKICAgICAgICAgICAgICMgZGVza3RvcCBvbmx5CiAgICAgICAg
ICAgICAibGVha19jaGVjayI6IEZhbHNlLAogICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBr
d2FyZ3NbInN0eWxvX3RocmVhZHMiXSwKQEAgLTgwLDQwICs4NSwxNSBAQCBkZWYgZW52X29wdGlv
bnMoKToKICAgICAgICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9CiAKIAotY2xhc3Mg
RmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQg
PSAzMDAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNjAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBsb2dnZXIsIHByZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxs
YS5nZWNrb3ZpZXcudGVzdCIsCi0gICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxh
dG9yLTU0NDQiLCAqKmt3YXJncyk6Ci0gICAgICAgIEZpcmVmb3hCcm93c2VyLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgTm9uZSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCAqKmt3YXJncykKLSAgICAg
ICAgc2VsZi5wYWNrYWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vf
c2VyaWFsID0gZGV2aWNlX3NlcmlhbAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBrd2FyZ3Nb
InRlc3RzX3Jvb3QiXQotICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBrd2FyZ3NbImluc3Rh
bGxfZm9udHMiXQotICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBrd2FyZ3NbInN0YWNr
d2Fsa19iaW5hcnkiXQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAg
aWYgc2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9u
ZXR0ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgZW52ID0ge30KLSAgICAgICAg
ZW52WyJNT1pfQ1JBU0hSRVBPUlRFUiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0NSQVNIUkVQ
T1JURVJfU0hVVERPV04iXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FM
X0NPTk5FQ1RJT05TIl0gPSAiMSIKLSAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIo
c2VsZi5zdHlsb190aHJlYWRzKQotICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNo
YW9zX21vZGVfZmxhZ3MpCi0gICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKLSAgICAg
ICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjEiCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBlbnZbIk1PWl9XRUJSRU5ERVIiXSA9ICIwIgotCi0gICAgICAgIHByZWZlcmVuY2VzID0g
c2VsZi5sb2FkX3ByZWZzKCkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3Jl
YXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmln
LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVf
Zmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRl
X3BhdGgpOgorICAgICAgICBzdXBlcihQcm9maWxlQ3JlYXRvciwgc2VsZikuX19pbml0X18obG9n
Z2VyLCBwcmVmc19yb290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLCBlbmFibGVfZmlzc2lv
biwgYnJvd3Nlcl9jaGFubmVsLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCi0g
ICAgICAgIHNlbGYucHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVu
Y2VzKQotICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAg
ICJtYXJpb25ldHRlLnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKKyAgICBkZWYgX3NldF9y
ZXF1aXJlZF9wcmVmcyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoewogICAgICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2lu
KHNlbGYuY29uZmlnLmRvbWFpbnNfc2V0KSwKICAgICAgICAgICAgICJkb20uZGlzYWJsZV9vcGVu
X2R1cmluZ19sb2FkIjogRmFsc2UsCiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxl
ZCI6IEZhbHNlLApAQCAtMTIxLDkgKzEwMSwxMiBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dz
ZXIoRmlyZWZveEJyb3dzZXIpOgogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUs
CiAgICAgICAgIH0pCiAKKyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmls
ZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9
KQorCiAgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmluZm8oIlNldHRpbmcgYW5kcm9pZCByZWZ0ZXN0IHByZWZlcmVuY2VzIikK
LSAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeworICAgICAgICAgICAg
cHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoewogICAgICAgICAgICAgICAgICJicm93c2VyLnZpZXdw
b3J0LmRlc2t0b3BXaWR0aCI6IDgwMCwKICAgICAgICAgICAgICAgICAjIERpc2FibGUgaGlnaCBE
UEkKICAgICAgICAgICAgICAgICAibGF5b3V0LmNzcy5kZXZQaXhlbHNQZXJQeCI6ICIxLjAiLApA
QCAtMTM1LDYgKzExOCw3MyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJy
b3dzZXIpOgogICAgICAgICAgICAgICAgICJsYXlvdXQudGVzdGluZy5vdmVybGF5LXNjcm9sbGJh
cnMuYWx3YXlzLXZpc2libGUiOiBUcnVlLAogICAgICAgICAgICAgfSkKIAorCisKK2NsYXNzIEZp
cmVmb3hBbmRyb2lkQnJvd3NlcihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSAzMDAKKyAg
ICBzaHV0ZG93bl90aW1lb3V0ID0gNjAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHByZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3Zp
ZXcudGVzdCIsCisgICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQi
LCBleHRyYV9wcmVmcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5
bWJvbHNfcGF0aD1Ob25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1O
b25lLAorICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFs
c2UsIGVuYWJsZV93ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAg
ICAgICAgICBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19j
aGVjaz1GYWxzZSwgYXNhbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0x
LCBjaGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5p
Z2h0bHkiLAorICAgICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290
PU5vbmUsICoqa3dhcmdzKToKKworICAgICAgICBzdXBlcihGaXJlZm94QW5kcm9pZEJyb3dzZXIs
IHNlbGYpLl9faW5pdF9fKGxvZ2dlcikKKyAgICAgICAgc2VsZi5wcmVmc19yb290ID0gcHJlZnNf
cm9vdAorICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLnBh
Y2thZ2VfbmFtZSA9IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBk
ZXZpY2Vfc2VyaWFsCisgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KKyAgICAg
ICAgc2VsZi5zeW1ib2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dh
bGtfYmluYXJ5ID0gc3RhY2t3YWxrX2JpbmFyeQorICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFy
eSA9IGNlcnR1dGlsX2JpbmFyeQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBj
YV9jZXJ0aWZpY2F0ZV9wYXRoCisgICAgICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2Vs
Zi5lbmFibGVfd2VicmVuZGVyID0gZW5hYmxlX3dlYnJlbmRlcgorICAgICAgICBzZWxmLnN0YWNr
Zml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5
X2FyZ3MKKyAgICAgICAgc2VsZi50aW1lb3V0X211bHRpcGxpZXIgPSB0aW1lb3V0X211bHRpcGxp
ZXIKKyAgICAgICAgc2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLmFz
YW4gPSBhc2FuCisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAg
ICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAgICBz
ZWxmLmNvbmZpZyA9IGNvbmZpZworICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dz
ZXJfY2hhbm5lbAorICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBpbnN0YWxsX2ZvbnRzCisg
ICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKworICAgICAgICBzZWxmLnByb2Zp
bGVfY3JlYXRvciA9IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgp
CisKKyAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYucHJv
ZmlsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKyAgICBkZWYgc2V0dGlu
Z3Moc2VsZiwgdGVzdCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFr
X2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2Vk
IjogdGVzdC5sc2FuX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2Rl
cHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVh
a19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAg
ICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0
ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToK
KyAgICAgICAgaWYgc2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHNl
bGYubWFyaW9uZXR0ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgc2VsZi5wcm9m
aWxlID0gc2VsZi5wcm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5wcm9maWxl
LnNldF9wcmVmZXJlbmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0
fSkKKwogICAgICAgICBpZiBzZWxmLmluc3RhbGxfZm9udHM6CiAgICAgICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiQ29weWluZyBBaGVtIGZvbnQgdG8gcHJvZmlsZSIpCiAgICAgICAgICAgICBm
b250X2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgImZvbnRzIikKQEAg
LTE0NiwxOCArMTk2LDI3IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJv
d3Nlcik6CiAKICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogCi0gICAgICAg
IGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNl
bGYuc2V0dXBfc3NsKCkKLQogICAgICAgICBkZWJ1Z19hcmdzLCBjbWQgPSBicm93c2VyX2NvbW1h
bmQoc2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmJpbmFyeV9hcmdzIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXSArCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY21kX2FyZygibWFyaW9u
ZXR0ZSIpLCAiYWJvdXQ6YmxhbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZGVidWdfaW5mbykKIAorICAgICAgICBlbnYgPSB7fQorICAgICAgICBl
bnZbIk1PWl9DUkFTSFJFUE9SVEVSIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBP
UlRFUl9TSFVURE9XTiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxf
Q09OTkVDVElPTlMiXSA9ICIxIgorICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihz
ZWxmLnN0eWxvX3RocmVhZHMpCisgICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hh
b3NfbW9kZV9mbGFncykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAg
ICAgICAgZW52WyJNT1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCisKICAgICAgICAgc2VsZi5ydW5uZXIgPSBG
ZW5uZWNFbXVsYXRvclJ1bm5lcihhcHA9c2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZT1zZWxmLnByb2ZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRo
PXNlbGYuc3ltYm9sc19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcmlhbD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIK
QEAgLTE5Niw2ICsyNTUsMjYgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hC
cm93c2VyKToKICAgICAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQogICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1Zygic3RvcHBlZCIpCiAKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLnByb2Nl
c3NfaGFuZGxlci5waWQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2Vs
Zi5ydW5uZXI6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2Up
OgorICAgICAgICBzZWxmLnN0b3AoZm9yY2UpCisKKyAgICBkZWYgZXhlY3V0b3JfYnJvd3Nlcihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQi
OiBzZWxmLm1hcmlvbmV0dGVfcG9ydH0KKwogICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9j
ZXNzLCB0ZXN0KToKICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCJNSU5JRFVNUF9TVEFD
S1dBTEsiLCAiIikgYW5kIHNlbGYuc3RhY2t3YWxrX2JpbmFyeToKICAgICAgICAgICAgIG9zLmVu
dmlyb25bIk1JTklEVU1QX1NUQUNLV0FMSyJdID0gc2VsZi5zdGFja3dhbGtfYmluYXJ5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvaWUucHkKaW5kZXggNjM1ZTgyN2MyOTViNWIxMTkyODIyZjUxZDkzYTRiMDllMzc2NDE5Mi4u
NzhjMjJiOTA5YWNmNDEwMDM4ZmYwNjc2OTM2NjY2MmFiMGM1ODlhMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5w
eQpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2Vy
KToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBp
cyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhl
ciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJu
IHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2
ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9vcGVyYS5weQppbmRleCA1NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2MmNlNDBkNzQ5ZGRhY2I2
YTgzLi44MDVmZWRlZTYzNmNkMjIxNTVlZDE0M2NmMTE0OGYzYzJmNWQ5OGU3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL29wZXJhLnB5CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2Vy
KToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBp
cyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhl
ciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJu
IHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2
ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvc2FmYXJpLnB5CmluZGV4IGY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5NTA2OTQ2Yjk1
MzhiNjcuLmNiMmIxNzVkNGRmYmMzMTY2ZTRhZDVhNmFmZTE3NGZmZGJjNmZmOGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhZmFyaS5weQpAQCAtMyw3ICszLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3Rp
bWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIg
aW1wb3J0IFNhZmFyaURyaXZlclNlcnZlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0
b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTog
RjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yc2FmYXJpIGltcG9ydCBTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAx
CiAKIApAQCAtMTIsNyArMTMsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogInNhZmFy
aSIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAogICAgICAg
ICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJu
ZXNzRXhlY3V0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAi
V2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFz
aHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJv
d3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1
dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMi
LApAQCAtNzksNyArODEsNyBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgICAg
ICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAog
ICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3Nl
ciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2
ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAg
IGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNl
LnB5CmluZGV4IDMzMDFjNzViMjEwMDRhNTU0ZjkxZDQ3NjdiODU2MGZjNDAyMTQ0MTIuLmZlODM2
ODJmNWZjMTZmNGIyZGE2NjRiOGU2Y2E0ZGJjOGRkYzUwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Uu
cHkKQEAgLTksMTAgKzksMTEgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiBp
bXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCi1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5n
SU8gYXMgQ1N0cmluZ0lPCiAKIGltcG9ydCByZXF1ZXN0cwogCitmcm9tIHNpeC5tb3ZlcyBpbXBv
cnQgY1N0cmluZ0lPIGFzIFN0cmluZ0lPCisKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4
ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0
X211bHRpcGxpZXIgICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1
dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTI0LDcgKzEyNSw3IEBAIGRl
ZiBlbnZfb3B0aW9ucygpOgogZGVmIGdldF90YXIodXJsLCBkZXN0KToKICAgICByZXNwID0gcmVx
dWVzdHMuZ2V0KHVybCwgc3RyZWFtPVRydWUpCiAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkK
LSAgICB3aXRoIHRhcmZpbGUub3BlbihmaWxlb2JqPUNTdHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkp
KSBhcyBmOgorICAgIHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9U3RyaW5nSU8ocmVzcC5yYXcu
cmVhZCgpKSkgYXMgZjoKICAgICAgICAgZi5leHRyYWN0YWxsKHBhdGg9ZGVzdCkKIAogCkBAIC0x
NzgsNyArMTc5LDcgQEAgY2xhc3MgU2F1Y2VDb25uZWN0KCk6CiAKICAgICAgICAgdG90X3dhaXQg
PSAwCiAgICAgICAgIHdoaWxlIG5vdCBvcy5wYXRoLmV4aXN0cygnLi9zYXVjZV9pc19yZWFkeScp
IGFuZCBzZWxmLnNjX3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiB0b3Rf
d2FpdCA+PSBzZWxmLnNhdWNlX2luaXRfdGltZW91dDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LnNhdWNlX2luaXRfdGltZW91dCBvciAodG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3RpbWVv
dXQpOgogICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCiAKICAgICAgICAgICAgICAgICByYWlz
ZSBTYXVjZUV4Y2VwdGlvbigiU2F1Y2UgQ29ubmVjdCBQcm94eSB3YXMgbm90IHJlYWR5IGFmdGVy
ICVkIHNlY29uZHMiICUgdG90X3dhaXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvc2Vydm9kcml2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkK
aW5kZXggMjk1M2RlMTgxNzRlZjc1ZDUwNWRiMGI4ZDUxOGZlMzMzOWY3MDY1ZS4uMDJiNzk2Yjc1
NjAzODVjZDAwOTAyYmJmYzFiMzYxYTU0MjI0OWY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2
b2RyaXZlci5weQpAQCAtMTEsNiArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91
dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVj
dXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhl
Y3V0b3JzZXJ2b2RyaXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRv
ciwgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20g
Li5wcm9jZXNzIGltcG9ydCBjYXN0X2VudgogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
c3BsaXQoX19maWxlX18pWzBdKQogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBTZXJ2b1dl
YkRyaXZlckJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRlYnVnX2luZm8g
b3Igbm90IHNlbGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJv
YyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAg
ICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9j
ID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBz
ZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVu
dikpCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZvIFN0YXJ0ZWQiKQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3dlYmtpdC5weQppbmRleCBhYTI4NjIxMzk0NTBmNjgyZTYwNTFjNWY2MTdhYjhjYWYx
OTYwNzg0Li5kYTkzY2YxNjQzOTk1ZDk1YjhkNmRlMWY3MGM3NzMxYjU1NTk3NjhiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy93ZWJraXQucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dz
ZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90
aW1lb3V0X211bHRpcGxpZXIsIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEK
IGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9y
X2t3YXJncwogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRy
aXZlclRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5v
cWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJE
cml2ZXJSZWZUZXN0RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9x
YTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJp
dmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIg
aW1wb3J0IFdlYktpdERyaXZlclNlcnZlcgogCkBAIC0xMyw3ICsxNCw4IEBAIF9fd3B0cnVubmVy
X18gPSB7InByb2R1Y3QiOiAid2Via2l0IiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dh
cmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0
ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldk
c3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjog
IldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAg
ICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAg
ICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVu
dl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKQEAgLTk5LDcgKzEwMSw3IEBAIGNsYXNzIFdlYktp
dEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNh
dGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRo
aW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUu
Ci0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2Vs
Zi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNl
bGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21p
bmlicm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nl
ci5weQppbmRleCBkNzM1ZjNjMDc5MmE2MzU2YzYyNzAxNDMyMDVjNTViN2MwMmVlZjQ3Li5kOGI5
NzQ0YmQ3NDNlMzljZTE5ZjAwOGU3ZjQwY2JjODBlODAxMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTIsNyArMiw4IEBAIGZyb20g
LmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0
aWZpY2F0ZV9kb21haW5fbGlzCiBmcm9tIC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZy
b20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3
YXJncwogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZl
clRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6
IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2
ZXJSZWZUZXN0RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTog
RjQwMQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVy
V2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0
IjogIndlYmtpdGd0a19taW5pYnJvd3NlciIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVy
X18gPSB7InByb2R1Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKICAgICAgICAgICAgICAg
ICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAg
ImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9y
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJl
ZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjog
IldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0
b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2Fy
Z3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAg
ICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQpp
bmRleCBlNzlhZTM3NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4Li5mNzY4MzZlYTY2
YjU5YmIxNmYyZDM3OTI0NTFiY2YyOGVjYjJmYjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZW52aXJvbm1lbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC01LDYg
KzUsNyBAQCBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQg
dGltZQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgZ2V0
X2RlZmF1bHRfbG9nZ2VyLCBoYW5kbGVycywgcHJveHkKIApAQCAtNTIsNyArNTMsOSBAQCBjbGFz
cyBUZXN0RW52aXJvbm1lbnRFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgVGVzdEVudmlyb25tZW50
KG9iamVjdCk6CiAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdGVzdCBlbnZp
cm9ubWVudCBpLmUuIHRoZSBodHRwIGFuZAogICAgIHdlYnNvY2tldHMgc2VydmVycyIiIgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1lb3V0X211bHRp
cGxlciwgcGF1c2VfYWZ0ZXJfdGVzdCwgZGVidWdfaW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywg
ZW52X2V4dHJhcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJu
ZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0
LCBkZWJ1Z19pbmZvLCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAg
ICAgICAgICBlbmFibGVfcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRl
c3RfcGF0aHMKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmln
X2N0eCA9IE5vbmUKQEAgLTY4LDYgKzcxLDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVj
dCk6CiAgICAgICAgIHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5l
bnZfZXh0cmFzX2NtcyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZp
ZworICAgICAgICBzZWxmLmVuYWJsZV9xdWljID0gZW5hYmxlX3F1aWMKIAogICAgIGRlZiBfX2Vu
dGVyX18oc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IHNlbGYuYnVpbGRfY29uZmln
KCkKQEAgLTkxLDYgKzk1LDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAKICAg
ICAgICAgc2VsZi5zZXJ2ZXJzID0gc2VydmUuc3RhcnQoc2VsZi5jb25maWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3JvdXRlcygpKQorCiAgICAgICAgIGlm
IHNlbGYub3B0aW9ucy5nZXQoInN1cHBvcnRzX2RlYnVnZ2VyIikgYW5kIHNlbGYuZGVidWdfaW5m
byBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAgICAgICAgICAgc2VsZi5pZ25v
cmVfaW50ZXJydXB0cygpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC05OCw3ICsxMDMsNyBAQCBj
bGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhj
X3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRz
KCkKIAotICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2
ZXJzKToKICAgICAgICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAg
ICAgICAgICBzZXJ2ZXIua2lsbCgpCiAgICAgICAgIGZvciBjbSBpbiBzZWxmLmVudl9leHRyYXNf
Y21zOgpAQCAtMTI2LDcgKzEzMSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToK
ICAgICAgICAgICAgICJodHRwcyI6IFs4NDQzXSwKICAgICAgICAgICAgICJ3cyI6IFs4ODg4XSwK
ICAgICAgICAgICAgICJ3c3MiOiBbODg4OV0sCisgICAgICAgICAgICAiaDIiOiBbOTAwMF0sCiAg
ICAgICAgIH0KKyAgICAgICAgaWYgc2VsZi5lbmFibGVfcXVpYzoKKyAgICAgICAgICAgIGNvbmZp
Zy5wb3J0c1sicXVpYyJdID0gWzEwMDAwXQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG92
ZXJyaWRlX3BhdGgpOgogICAgICAgICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6
CkBAIC0xOTEsMTAgKzE5OSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAg
ICAgICAgICAgIGRhdGEgKz0gZnAucmVhZCgpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpv
aW4oaGVyZSwgInRlc3Rkcml2ZXItZXh0cmEuanMiKSwgInJiIikgYXMgZnA6CiAgICAgICAgICAg
ICBkYXRhICs9IGZwLnJlYWQoKQotICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKGIi
R0VUIiwgYiIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiLAorICAgICAgICByb3V0ZV9idWlsZGVy
LmFkZF9oYW5kbGVyKCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFz
Y3JpcHQiKSkKIAotICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRo
cy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMo
c2VsZi50ZXN0X3BhdGhzKToKICAgICAgICAgICAgIGlmIHVybF9iYXNlID09ICIvIjoKICAgICAg
ICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfbW91bnRf
cG9pbnQodXJsX2Jhc2UsIHBhdGhzWyJ0ZXN0c19wYXRoIl0pCkBAIC0yMTAsOCArMjE4LDEwIEBA
IGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBlYWNoX3NsZWVwX3NlY3Mg
PSAwLjUKICAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MK
ICAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKLSAgICAgICAgICAgIGZhaWxl
ZCA9IHNlbGYudGVzdF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CisgICAg
ICAgICAgICBmYWlsZWQsIHBlbmRpbmcgPSBzZWxmLnRlc3Rfc2VydmVycygpCisgICAgICAgICAg
ICBpZiBmYWlsZWQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBw
ZW5kaW5nOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdGltZS5zbGVlcChl
YWNoX3NsZWVwX3NlY3MpCiAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXJyb3IoIlNlcnZlcnMg
ZmFpbGVkIHRvIHN0YXJ0OiAlcyIgJQpAQCAtMjE5LDE5ICsyMjksMjMgQEAgY2xhc3MgVGVzdEVu
dmlyb25tZW50KG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzKHNlbGYpOgogICAgICAg
ICBmYWlsZWQgPSBbXQorICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYu
Y29uZmlnWyJzZXJ2ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2Vs
Zi5zZXJ2ZXJzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0
ZXJpdGVtcyhzZWxmLnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBz
ZXJ2ZXJzOgotICAgICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAg
ICAgICAgICAgICBpZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAg
IGZhaWxlZC5hcHBlbmQoKHNjaGVtZSwgcG9ydCkpCisKKyAgICAgICAgaWYgbm90IGZhaWxlZCBh
bmQgc2VsZi50ZXN0X3NlcnZlcl9wb3J0OgorICAgICAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVy
cyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCwg
c2VydmVyIGluIHNlcnZlcnM6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0
KCkKICAgICAgICAgICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMSkKICAgICAgICAgICAgICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0
KSkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGVuZGluZy5hcHBlbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAg
ICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLSAgICAgICAg
ICAgICAgICBpZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZh
aWxlZC5hcHBlbmQoKHNjaGVtZSwgcG9ydCkpCi0gICAgICAgIHJldHVybiBmYWlsZWQKKyAgICAg
ICAgcmV0dXJuIGZhaWxlZCwgcGVuZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9hY3Rpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjNDNkZDY2NWEyZjNiYzU1NzZjYjUzNWYyOWQ0OWFiYmM5NTkzZmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKQEAgLTAsMCArMSwx
ODQgQEAKKworY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImNsaWNrIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2Fk
WyJzZWxlY3RvciJdCisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVt
ZW50X2J5X3NlbGVjdG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xp
Y2tpbmcgZWxlbWVudDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xp
Y2suZWxlbWVudChlbGVtZW50KQorCisKK2NsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6Cisg
ICAgbmFtZSA9ICJzZW5kX2tleXMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAga2V5cyA9IHBheWxv
YWRbImtleXMiXQorICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVu
dF9ieV9zZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRp
bmcga2V5cyB0byBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAgc2VsZi5wcm90b2Nv
bC5zZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2Vx
dWVuY2VBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImFjdGlvbl9zZXF1ZW5jZSIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dn
ZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYg
X19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgICMgVE9ETzogc29tZSBzb3J0IG9mIHNo
YWxsb3cgZXJyb3IgY2hlY2tpbmcKKyAgICAgICAgYWN0aW9ucyA9IHBheWxvYWRbImFjdGlvbnMi
XQorICAgICAgICBmb3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9uczoKKyAgICAgICAgICAgIGlm
IGFjdGlvblNlcXVlbmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgorICAgICAgICAgICAgICAgIGZv
ciBhY3Rpb24gaW4gYWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGFjdGlvblsidHlwZSJdID09ICJwb2ludGVyTW92ZSIgYW5kCisgICAgICAgICAgICAg
ICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0sIGRpY3QpKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxmLmdldF9lbGVtZW50KGFjdGlv
blsib3JpZ2luIl1bInNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUiXVsiZnJhbWUiXSkKKyAgICAg
ICAgc2VsZi5wcm90b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9hY3Rpb25zKHsiYWN0aW9ucyI6
IGFjdGlvbnN9KQorCisgICAgZGVmIGdldF9lbGVtZW50KHNlbGYsIGVsZW1lbnRfc2VsZWN0b3Is
IGZyYW1lKToKKyAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRf
Ynlfc2VsZWN0b3IoZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIHJldHVybiBlbGVt
ZW50CisKK2NsYXNzIEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUg
PSAiZ2VuZXJhdGVfdGVzdF9yZXBvcnQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYu
cHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgor
ICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBz
ZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1l
c3NhZ2UpCisKK2NsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0g
InNldF9wZXJtaXNzaW9uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAg
cGVybWlzc2lvbl9wYXJhbXMgPSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCisgICAgICAg
IGRlc2NyaXB0b3IgPSBwZXJtaXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCisgICAgICAgIG5h
bWUgPSBkZXNjcmlwdG9yWyJuYW1lIl0KKyAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFt
c1sic3RhdGUiXQorICAgICAgICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9u
ZVJlYWxtIiwgRmFsc2UpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1p
c3Npb24gJXMgdG8gJXMsIG9uZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkK
KyAgICAgICAgc2VsZi5wcm90b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNj
cmlwdG9yLCBzdGF0ZSwgb25lX3JlYWxtKQorCitjbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRv
ckFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2Vs
Zi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAg
ICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVn
KCJBZGRpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9yIikKKyAgICAgICAgY29uZmlnID0gcGF5bG9h
ZFsiY29uZmlnIl0KKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmly
dHVhbF9hdXRoZW50aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQorICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKKwor
Y2xhc3MgUmVtb3ZlVmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1l
ID0gInJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgorICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRv
cl9pZCJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0dWFsIGF1dGhl
bnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3Io
YXV0aGVudGljYXRvcl9pZCkKKworCitjbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6
CisgICAgbmFtZSA9ICJhZGRfY3JlZGVudGlhbCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAg
c2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9h
ZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lk
Il0KKyAgICAgICAgY3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQorICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50aWNh
dG9yICVzICIgJSBhdXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2Nv
bC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwg
Y3JlZGVudGlhbCkKKworY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBu
YW1lID0gImdldF9jcmVkZW50aWFscyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5w
cm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Cisg
ICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0dWFs
IGF1dGhlbnRpY2F0b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBz
ZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0aGVu
dGljYXRvcl9pZCkKKworY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAg
IG5hbWUgPSAicmVtb3ZlX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQp
OgorICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJd
CisgICAgICAgIGNyZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KKyAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50
aWNhdG9yICVzIiAlIChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKKyAgICAgICAg
cmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50
aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCisKK2NsYXNzIFJlbW92ZUFsbENy
ZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfYWxsX2NyZWRlbnRp
YWxzIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRv
cl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygiUmVtb3ZpbmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSBh
dXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IucmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitj
bGFzcyBTZXRVc2VyVmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF91c2Vy
X3ZlcmlmaWVkIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgor
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJv
dG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVu
dGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBh
eWxvYWRbInV2Il0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0
dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0
aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2Vs
Zi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVu
dGljYXRvcl9pZCwgdXYpCisKKworYWN0aW9ucyA9IFtDbGlja0FjdGlvbiwKKyAgICAgICAgICAg
U2VuZEtleXNBY3Rpb24sCisgICAgICAgICAgIEFjdGlvblNlcXVlbmNlQWN0aW9uLAorICAgICAg
ICAgICBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24sCisgICAgICAgICAgIFNldFBlcm1pc3Npb25B
Y3Rpb24sCisgICAgICAgICAgIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAorICAgICAg
ICAgICBSZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgQWRkQ3Jl
ZGVudGlhbEFjdGlvbiwKKyAgICAgICAgICAgR2V0Q3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAg
ICAgIFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUFsbENyZWRlbnRp
YWxzQWN0aW9uLAorICAgICAgICAgICBTZXRVc2VyVmVyaWZpZWRBY3Rpb25dCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2Jhc2UucHkKaW5kZXggM2Q4YWY0ZGU0ODY4ZTlkYTg2YjM4ZDFjOWQ3YjMyZWQwYmZkMjY1Yi4u
Yzc1YThlZjMyMGYyZDE0OTIwNmM5YWI4MmNlNTViYjc1NGRkYmI2OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
YmFzZS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBoYXNobGliCi1m
cm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KIGltcG9ydCBp
bwogaW1wb3J0IGpzb24KIGltcG9ydCBvcwpAQCAtOCwxMCArNywxMyBAQCBpbXBvcnQgdGhyZWFk
aW5nCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0
CiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUKK2Zyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVj
dGlvbgorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxp
dCwgdXJsdW5zcGxpdAogCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorZnJvbSAuYWN0
aW9ucyBpbXBvcnQgYWN0aW9ucwogZnJvbSAucHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNl
UHJvdG9jb2xQYXJ0CiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXQpAQCAtMTYy
LDE0ICsxNjQsMTggQEAgY2xhc3MgVGltZWRSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgIiVzLnJ1bl9mdW5jIGRp
ZG4ndCBzZXQgYSByZXN1bHQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIG1lc3NhZ2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMgbWF5
IGluZGljYXRlIGEgaGFuZylcbiIKLSAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBm
b3IgdGhlIGN1cnJlbnQgc3RhY2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVu
dF9mcmFtZXMoKVtleGVjdXRvci5pZGVudF0pKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0
ID0gRmFsc2UsICgiRVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAg
aWYgc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gIkV4ZWN1dG9yIGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0ZSBhIGhh
bmcpXG4iCisgICAgICAgICAgICAgICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3Vy
cmVudCBzdGFjayBvZiB0aGUgZXhlY3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFt
ZXMoKVtleGVjdXRvci5pZGVudF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9
IEZhbHNlLCAoIkVYVEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJl
c3BvbmRpbmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJDUkFTSCIsIE5vbmUpCiAgICAgICAgIGVsaWYgc2VsZi5y
ZXN1bHRbMV0gaXMgTm9uZToKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCBhbnkgZGF0YSBi
YWNrIGZyb20gdGhlIHRlc3QsIHNvIGNoZWNrIGlmIHRoZQogICAgICAgICAgICAgIyBicm93c2Vy
IGlzIHN0aWxsIHJlc3BvbnNpdmUKLSAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmU6CisgICAgICAgICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CiAgICAgICAgICAg
ICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIE5vbmUpCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIg
bm90IHJlc3BvbmRpbmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKQEAgLTIxMCw4ICsyMTYs
OSBAQCBjbGFzcyBUZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBleHRyYV90aW1lb3V0ID0gNSAg
IyBzZWNvbmRzCiAKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAg
ICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCiAgICAgICAgIHNlbGYucnVubmVyID0gTm9uZQogICAgICAgICBzZWxmLmJyb3dz
ZXIgPSBicm93c2VyCiAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZyA9IHNlcnZlcl9jb25maWcK
QEAgLTIyMSwxMiArMjI4LDYgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZnMiOiB7fX0KICAgICAgICAgc2VsZi5wcm90
b2NvbCA9IE5vbmUgICMgVGhpcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzCiAKLSAgICBAcHJv
cGVydHkKLSAgICBkZWYgbG9nZ2VyKHNlbGYpOgotICAgICAgICAiIiJTdHJ1Y3R1cmVkTG9nZ2Vy
IGZvciB0aGlzIGV4ZWN1dG9yIiIiCi0gICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmxvZ2dlcgotCiAgICAgZGVmIHNldHVw
KHNlbGYsIHJ1bm5lcik6CiAgICAgICAgICIiIlJ1biBzdGVwcyBuZWVkZWQgYmVmb3JlIHRlc3Rz
IGNhbiBiZSBzdGFydGVkIGUuZy4gY29ubmVjdGluZyB0bwogICAgICAgICBicm93c2VyIGluc3Rh
bmNlCkBAIC0yNTUsOCArMjU2LDkgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZG9fdGVzdCh0ZXN0KQogICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1
bHRfZnJvbV9leGNlcHRpb24odGVzdCwgZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9zdHJpbmcg
PSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KGV4Y2VwdGlvbl9zdHJpbmcpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9t
X2V4Y2VwdGlvbih0ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKQogCiAgICAgICAgIGlmIHJlc3Vs
dCBpcyBTdG9wOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjcwLDcgKzI3Miw4IEBA
IGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bm5lci5zZW5kX21l
c3NhZ2UoInRlc3RfZW5kZWQiLCB0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2VydmVyX3VybChz
ZWxmLCBwcm90b2NvbCk6Ci0gICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAocHJvdG9jb2ws
CisgICAgICAgIHNjaGVtZSA9ICJodHRwcyIgaWYgcHJvdG9jb2wgPT0gImgyIiBlbHNlIHByb3Rv
Y29sCisgICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAoc2NoZW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1siYnJvd3Nlcl9ob3N0Il0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJd
W3Byb3RvY29sXVswXSkKIApAQCAtMjg4LDE1ICsyOTEsMTUgQEAgY2xhc3MgVGVzdEV4ZWN1dG9y
KG9iamVjdCk6CiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJv
bm1lbnQpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNl
bGYsIHRlc3QsIGUpOgorICAgIGRlZiByZXN1bHRfZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwg
ZSwgZXhjZXB0aW9uX3N0cmluZyk6CiAgICAgICAgIGlmIGhhc2F0dHIoZSwgInN0YXR1cyIpIGFu
ZCBlLnN0YXR1cyBpbiB0ZXN0LnJlc3VsdF9jbHMuc3RhdHVzZXM6CiAgICAgICAgICAgICBzdGF0
dXMgPSBlLnN0YXR1cwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RhdHVzID0gIklOVEVS
TkFMLUVSUk9SIgotICAgICAgICBtZXNzYWdlID0gdW5pY29kZShnZXRhdHRyKGUsICJtZXNzYWdl
IiwgIiIpKQorICAgICAgICBtZXNzYWdlID0gdGV4dF90eXBlKGdldGF0dHIoZSwgIm1lc3NhZ2Ui
LCAiIikpCiAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIK
LSAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICBtZXNz
YWdlICs9IGV4Y2VwdGlvbl9zdHJpbmcKICAgICAgICAgcmV0dXJuIHRlc3QucmVzdWx0X2Nscyhz
dGF0dXMsIG1lc3NhZ2UpLCBbXQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0zMTAsOSArMzEz
LDkgQEAgY2xhc3MgVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogY2xhc3MgUmVm
VGVzdEV4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSByZWZ0ZXN0
X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRp
bWVvdXRfbXVsdGlwbGllcj0xLCBzY3JlZW5zaG90X2NhY2hlPU5vbmUsCiAgICAgICAgICAgICAg
ICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RXhlY3V0b3IuX19p
bml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9y
Ll9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxp
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8p
CiAKQEAgLTQ5NiwxMSArNDk5LDExIEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRv
cik6CiAgICAgY29udmVydF9yZXN1bHQgPSBweXRlc3RfcmVzdWx0X2NvbnZlcnRlcgogICAgIHBy
b3RvY29sX2NscyA9IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB3ZWJkcml2ZXJfYmluYXJ5LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAg
ICAgICAgIHdlYmRyaXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVz
PU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAg
ICAgICBzZWxmLmRvX2RlbGF5ZWRfaW1wb3J0cygpCi0gICAgICAgIFRlc3RFeGVjdXRvci5fX2lu
aXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0RXhlY3V0b3Iu
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGll
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykK
ICAgICAgICAgc2VsZi53ZWJkcml2ZXJfYmluYXJ5ID0gd2ViZHJpdmVyX2JpbmFyeQpAQCAtNTEw
LDcgKzUxMyw3IEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAg
IHNlbGYucHJvdG9jb2wgPSBzZWxmLnByb3RvY29sX2NscyhzZWxmLCBicm93c2VyKQogCiAgICAg
ZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2
ZQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25f
ZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MK
QEAgLTU3Myw3ICs1NzYsNyBAQCBjbGFzcyBXZHNwZWNSdW4ob2JqZWN0KToKICAgICAgICAgICAg
IG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6
CiAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9
IHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJO
QUwtRVJST1IiLCBtZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5y
ZXN1bHRfZmxhZy5zZXQoKQpAQCAtNjM2LDEwICs2MzksOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90
b2NvbChQcm90b2NvbCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToK
LSAgICAgICAgaWYgc2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2Fs
aXZlOgorICAgICAgICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQgc2VsZi5zZXJ2ZXIu
aXNfYWxpdmUoKToKICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCi0gICAgQHByb3Bl
cnR5CiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGNv
bm5lY3Rpb24gaXMgc3RpbGwgYWxpdmUuCiAKQEAgLTY3NSwyMCArNjc3LDcgQEAgY2xhc3MgQ2Fs
bGJhY2tIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgICAgICAiY29tcGxldGUiOiBzZWxmLnByb2Nl
c3NfY29tcGxldGUKICAgICAgICAgfQogCi0gICAgICAgIHNlbGYuYWN0aW9ucyA9IHsKLSAgICAg
ICAgICAgICJjbGljayI6IENsaWNrQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwK
LSAgICAgICAgICAgICJzZW5kX2tleXMiOiBTZW5kS2V5c0FjdGlvbihzZWxmLmxvZ2dlciwgc2Vs
Zi5wcm90b2NvbCksCi0gICAgICAgICAgICAiYWN0aW9uX3NlcXVlbmNlIjogQWN0aW9uU2VxdWVu
Y2VBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdlbmVy
YXRlX3Rlc3RfcmVwb3J0IjogR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKHNlbGYubG9nZ2VyLCBz
ZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJzZXRfcGVybWlzc2lvbiI6IFNldFBlcm1pc3Np
b25BY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF92
aXJ0dWFsX2F1dGhlbnRpY2F0b3IiOiBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxm
LmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCi0gICAgICAgICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0
aGVudGljYXRvciI6IFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2Vy
LCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJhZGRfY3JlZGVudGlhbCI6IEFkZENyZWRl
bnRpYWxBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdl
dF9jcmVkZW50aWFscyI6IEdldENyZWRlbnRpYWxzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnBy
b3RvY29sKSwKLSAgICAgICAgICAgICJyZW1vdmVfY3JlZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRp
YWxBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92
ZV9hbGxfY3JlZGVudGlhbHMiOiBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dl
ciwgc2VsZi5wcm90b2NvbCksCi0gICAgICAgICAgICAic2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRV
c2VyVmVyaWZpZWRBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICB9
CisgICAgICAgIHNlbGYuYWN0aW9ucyA9IHtjbHMubmFtZTogY2xzKHNlbGYubG9nZ2VyLCBzZWxm
LnByb3RvY29sKSBmb3IgY2xzIGluIGFjdGlvbnN9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwg
cmVzdWx0KToKICAgICAgICAgdXJsLCBjb21tYW5kLCBwYXlsb2FkID0gcmVzdWx0CkBAIC03Mjks
MTUwICs3MTgsMyBAQCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKIAogICAgIGRlZiBf
c2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBtZXNzYWdlPU5vbmUpOgog
ICAgICAgICBzZWxmLnByb3RvY29sLnRlc3Rkcml2ZXIuc2VuZF9tZXNzYWdlKG1lc3NhZ2VfdHlw
ZSwgc3RhdHVzLCBtZXNzYWdlPW1lc3NhZ2UpCi0KLQotY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNl
bGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0g
ICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxv
YWRbInNlbGVjdG9yIl0KLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVs
ZW1lbnRfYnlfc2VsZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJD
bGlja2luZyBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5j
bGljay5lbGVtZW50KGVsZW1lbnQpCi0KLQotY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYu
bG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAg
ZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRb
InNlbGVjdG9yIl0KLSAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQotICAgICAgICBlbGVt
ZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikK
LSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBlbGVtZW50OiAlcyIg
JSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMuc2VuZF9rZXlzKGVs
ZW1lbnQsIGtleXMpCi0KLQotY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBz
aGFsbG93IGVycm9yIGNoZWNraW5nCi0gICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25z
Il0KLSAgICAgICAgZm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBp
ZiBhY3Rpb25TZXF1ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKLSAgICAgICAgICAgICAgICBm
b3IgYWN0aW9uIGluIGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhY3Rpb25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAotICAgICAgICAgICAg
ICAgICAgICAgICAgaXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rp
b25bIm9yaWdpbiJdWyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMi
OiBhY3Rpb25zfSkKLQotICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9y
LCBmcmFtZSk6Ci0gICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50
X2J5X3NlbGVjdG9yKGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQotICAgICAgICByZXR1cm4gZWxl
bWVudAotCi1jbGFzcyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJd
Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIg
JSBtZXNzYWdlKQotICAgICAgICBzZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0Lmdl
bmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCi0KLWNsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24o
b2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAg
ICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2Nv
bAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBwZXJtaXNzaW9u
X3BhcmFtcyA9IHBheWxvYWRbInBlcm1pc3Npb25fcGFyYW1zIl0KLSAgICAgICAgZGVzY3JpcHRv
ciA9IHBlcm1pc3Npb25fcGFyYW1zWyJkZXNjcmlwdG9yIl0KLSAgICAgICAgbmFtZSA9IGRlc2Ny
aXB0b3JbIm5hbWUiXQotICAgICAgICBzdGF0ZSA9IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJd
Ci0gICAgICAgIG9uZV9yZWFsbSA9IHBlcm1pc3Npb25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBG
YWxzZSkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0
byAlcywgb25lUmVhbG09JXMiICUgKG5hbWUsIHN0YXRlLCBvbmVfcmVhbG0pKQotICAgICAgICBz
ZWxmLnByb3RvY29sLnNldF9wZXJtaXNzaW9uLnNldF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0
YXRlLCBvbmVfcmVhbG0pCi0KLWNsYXNzIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9i
amVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
LQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcoIkFkZGluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQotICAgICAgICBjb25maWcgPSBw
YXlsb2FkWyJjb25maWciXQotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2Nv
bC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcp
Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJ
RCAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9p
ZAotCi1jbGFzcyBSZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dn
ZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYg
X19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXls
b2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92
aW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAg
ICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1
YWxfYXV0aGVudGljYXRvcihhdXRoZW50aWNhdG9yX2lkKQotCi0KLWNsYXNzIEFkZENyZWRlbnRp
YWxBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIGNy
ZWRlbnRpYWwgPSBwYXlsb2FkWyJjcmVkZW50aWFsIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoIkFkZGluZyBjcmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0
aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRo
ZW50aWNhdG9yLmFkZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCi0K
LWNsYXNzIEdldENyZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAg
ICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBw
YXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0
b3JfaWQiXQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBm
cm9tIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50
aWFscyhhdXRoZW50aWNhdG9yX2lkKQotCi1jbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9i
amVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
LQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRv
cl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFsX2lk
ID0gcGF5bG9hZFsiY3JlZGVudGlhbF9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJS
ZW1vdmluZyBjcmVkZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlh
bF9pZCwgYXV0aGVudGljYXRvcl9pZCkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZp
cnR1YWxfYXV0aGVudGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBj
cmVkZW50aWFsX2lkKQotCi1jbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2Vs
Zi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAg
ICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQg
PSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
IlJlbW92aW5nIGFsbCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVu
dGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50
aWNhdG9yLnJlbW92ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKLQotY2xhc3Mg
U2V0VXNlclZlcmlmaWVkQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxv
Z2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBz
ZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2Fk
KToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQi
XQotICAgICAgICB1diA9IHBheWxvYWRbInV2Il0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAiU2V0dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRv
ciAlcyB0byAlcyIgJSAoYXV0aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQot
ICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3Vz
ZXJfdmVyaWZpZWQoYXV0aGVudGljYXRvcl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2V4ZWN1dG9ybWFyaW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CmluZGV4IDU5ZjdlODY1YTViODcxMWZhNzFjOWM4OTU1
ZWNhNzMxZTAwNDhjM2YuLjJlYWYyNTgwMWRmNTAyNzZmMmIwMjQ0N2Q2OGEzZmM5OGM1YzM3N2Ug
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0z
LDkgKzMsMTEgQEAgaW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1w
b3J0IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAogCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luCisKIGVycm9ycyA9IE5vbmUKIG1hcmlvbmV0dGUgPSBOb25lCiBweXRlc3Ry
dW5uZXIgPSBOb25lCkBAIC0xMTMsOCArMTE1LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90
b2NvbFBhcnQoQmFzZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoK
ICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU29ja2V0IGNsb3NlZCIpCiAgICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAg
ICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxv
Z2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgYnJl
YWsKIAogCkBAIC0xMzIsMTcgKzEzNCwxNiBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQ
cm90b2NvbFBhcnQoVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgICAgICAjIENoZWNrIGlm
IHdlIHByZXZpb3VzbHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBtYWtl
IHN1cmUgaXQncyBjbG9zZWQKICAgICAgICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAg
ICAgICAgc2VsZi5fY2xvc2Vfd2luZG93cygpCi0gICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpv
aW4oc2VsZi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAg
ICAgICB1cmwgPSB1cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3By
b3RvY29sKSwgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2Vs
Zi5kaXNtaXNzX2FsZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCi0g
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKAogICAgICAgICAgICAgICAgICJMb2Fk
aW5nIGluaXRpYWwgcGFnZSAlcyBmYWlsZWQuIEVuc3VyZSB0aGF0IHRoZSAiCiAgICAgICAgICAg
ICAgICAgInRoZXJlIGFyZSBubyBvdGhlciBwcm9ncmFtcyBib3VuZCB0byB0aGlzIHBvcnQgYW5k
ICIKICAgICAgICAgICAgICAgICAidGhhdCB5b3VyIGZpcmV3YWxsIHJ1bGVzIG9yIG5ldHdvcmsg
c2V0dXAgZG9lcyBub3QgIgotICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIg
JSAodXJsLCB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkpCisgICAgICAgICAgICAgICAgciJwcmV2
ZW50IGFjY2Vzcy5cZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQogICAgICAg
ICAgICAgcmFpc2UKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi5tYXJpb25ldHRl
LmN1cnJlbnRfd2luZG93X2hhbmRsZQogICAgICAgICBmb3JtYXRfbWFwID0geyJ0aXRsZSI6IHRo
cmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUucmVwbGFjZSgiJyIsICciJyl9CkBAIC01OTIs
NyArNTkzLDYgQEAgY2xhc3MgTWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKICAgICAgICAg
ICAgIGRlbCBzZWxmLm1hcmlvbmV0dGUKICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVByb3RvY29s
LCBzZWxmKS50ZWFyZG93bigpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2Vs
Zik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50X3dp
bmRvd19oYW5kbGUKQEAgLTYwMiwxNCArNjAyLDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2Nv
bChQcm90b2NvbCk6CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9l
bnZpcm9ubWVudCwgbmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xk
IHByZWZzCi0gICAgICAgIGZvciBuYW1lIGluIG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwg
e30pLml0ZXJrZXlzKCk6CisgICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9u
bWVudC5nZXQoInByZWZzIiwge30pKToKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5leGVjdXRv
ci5vcmlnaW5hbF9wcmVmX3ZhbHVlc1tuYW1lXQogICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9u
ZToKICAgICAgICAgICAgICAgICBzZWxmLnByZWZzLmNsZWFyKG5hbWUpCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCi0gICAg
ICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5p
dGVyaXRlbXMoKToKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52
aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLm9y
aWdpbmFsX3ByZWZfdmFsdWVzW25hbWVdID0gc2VsZi5wcmVmcy5nZXQobmFtZSkKICAgICAgICAg
ICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCkBAIC02NTksNyArNjU5LDcgQEAgY2xh
c3MgRXhlY3V0ZUFzeW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gZ2V0YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgICAgIGlmIG1l
c3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLmxv
Z2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICBzZWxmLnJl
c3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxs
eToKQEAgLTY2OSwxMSArNjY5LDExIEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1l
ZFJ1bm5lcik6CiBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVz
c0V4ZWN1dG9yKToKICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0x
LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcs
IHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25l
PVRydWUsIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAgICAgICAgICAg
ICAgIGRlYnVnPUZhbHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlv
bmV0dGUtYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTY5OCw3ICs2OTgsNyBA
QCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9y
KToKICAgICAgICAgc2VsZi5wcm90b2NvbC50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmxh
c3RfZW52aXJvbm1lbnRbInByb3RvY29sIl0pCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnByb3RvY29sLmlzX2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
ZiwgbmV3X2Vudmlyb25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVu
dF9jaGFuZ2Uoc2VsZi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC03NjUs
MTMgKzc2NSwxNCBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFy
bmVzc0V4ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRl
c3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAg
ICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAg
ICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAog
ICAgICAgICAgICAgICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZh
bHNlLAogICAgICAgICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9
Tm9uZSwgZGVidWc9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNl
ZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5p
dF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTc5OCw3ICs3OTks
NyBAQCBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAg
ICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5lcik6Ci0gICAgICAgIHN1
cGVyKHNlbGYuX19jbGFzc19fLCBzZWxmKS5zZXR1cChydW5uZXIpCisgICAgICAgIHN1cGVyKE1h
cmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsIHNlbGYpLnNldHVwKHJ1bm5lcikKICAgICAgICAgc2Vs
Zi5pbXBsZW1lbnRhdGlvbi5zZXR1cCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAg
ICAgZGVmIHRlYXJkb3duKHNlbGYpOgpAQCAtODA4LDE3ICs4MDksMTcgQEAgY2xhc3MgTWFyaW9u
ZXR0ZVJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIGhh
bmRsZXMgPSBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAg
ICAgICAgICBpZiBoYW5kbGVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1h
cmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICAgICAgc3VwZXIo
c2VsZi5fX2NsYXNzX18sIHNlbGYpLnRlYXJkb3duKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgorICAgICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2Vs
ZikudGVhcmRvd24oKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJ
Z25vcmUgZXJyb3JzIGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2Fy
bmluZygiRXhjZXB0aW9uIGR1cmluZyByZWZ0ZXN0IHRlYXJkb3duOlxuJXMiICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKICAgICBk
ZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKipzZWxm
LmltcGxlbWVudGF0aW9uX2t3YXJncykKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBu
ZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTg5Myw4ICs4
OTQsOSBAQCBjbGFzcyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVt
ZW50YXRpb24pOgogICAgIGRlZiBzZXR1cChzZWxmLCBzY3JlZW5zaG90PSJ1bmV4cGVjdGVkIik6
CiAgICAgICAgIGRhdGEgPSB7InNjcmVlbnNob3QiOiBzY3JlZW5zaG90fQogICAgICAgICBpZiBz
ZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0
YVsidXJsQ291bnQiXSA9IHt1cmxwYXJzZS51cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3Vy
bChrZXlbMF0pLCBrZXlbMV0pOnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBrZXksIHZhbHVlIGluIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxf
Y291bnQiLCB7fSkuaXRlcml0ZW1zKCkKKyAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7
dXJsam9pbihzZWxmLmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRl
bXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdy
b3VwX21ldGFkYXRhLmdldCgidXJsX2NvdW50Iiwge30pKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiB2YWx1ZSA+IDF9CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wu
bWFyaW9uZXR0ZS5zZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUu
Q09OVEVYVF9DSFJPTUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0
ZS5fc2VuZF9tZXNzYWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKQEAgLTkzNCw5ICs5MzYsOSBA
QCBjbGFzcyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRp
b24pOgogICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1h
cmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBoYW5kbGVzOgogICAg
ICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNo
X3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVy
aW5nIHRlYXJkb3duCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2su
Zm9ybWF0X2V4YygpKQogCiAKIGNsYXNzIEdlY2tvRHJpdmVyUHJvdG9jb2woV2ViRHJpdmVyUHJv
dG9jb2wpOgpAQCAtOTQ4LDExICs5NTAsMTEgQEAgY2xhc3MgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1
dG9yKFdkc3BlY0V4ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0
b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwK
ICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWc9RmFsc2UsCiAgICAgICAgICAgICAgICAgIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToKICAgICAg
ICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMi
IiIKLSAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2Vy
dmVyX2NvbmZpZywKKyAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAg
IHNlbGYucHJvdG9jb2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTk3Miw3ICs5NzQs
NyBAQCBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3Ip
OgogICAgICAgICAgICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAogICAgIGRlZiBpc19hbGl2ZShz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0
dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vu
dmlyb25tZW50X2NoYW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkK
QEAgLTk5MSwxNSArOTkzLDE2IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihD
cmFzaHRlc3RFeGVjdXRvcik6CiAgICAgICAgIGlmIG5vdCBzdWNjZXNzOgogICAgICAgICAgICAg
c3RhdHVzID0gZGF0YVswXQogCisgICAgICAgIGV4dHJhID0gTm9uZQogICAgICAgICBpZiBzZWxm
LmRlYnVnIGFuZCAoc3VjY2VzcyBvciBzdGF0dXMgbm90IGluICgiQ1JBU0giLCAiSU5URVJOQUwt
RVJST1IiKSk6CiAgICAgICAgICAgICBhc3NlcnRpb25fY291bnQgPSBzZWxmLnByb3RvY29sLmFz
c2VydHMuZ2V0KCkKICAgICAgICAgICAgIGlmIGFzc2VydGlvbl9jb3VudCBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICBkYXRhWyJleHRyYSJdID0geyJhc3NlcnRpb25fY291bnQiOiBhc3Nl
cnRpb25fY291bnR9CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7ImFzc2VydGlvbl9jb3VudCI6
IGFzc2VydGlvbl9jb3VudH0KIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0
dXJuIHNlbGYuY29udmVydF9yZXN1bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRl
c3QucmVzdWx0X2NscygqKmRhdGEpLCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9j
bHMoZXh0cmE9ZXh0cmEsICpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYs
IHByb3RvY29sLCB1cmwsIHRpbWVvdXQpOgogICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVy
YWdlLmlzX2VuYWJsZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1
dG9yc2VsZW5pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0u
cHkKaW5kZXggY2VjYTgxMjExZTExNDA1NzdjYzNhNWYxNjNmZmUxN2M3M2RkNTZhMy4uOTYzMTJm
M2Y5Zjk1NDJmZWRlNjA5ZTZmOTllZjkzMTI3ZjEyMmQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVuaXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvZXhlY3V0b3JzZWxlbml1bS5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9y
dCBzb2NrZXQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNr
Ci1pbXBvcnQgdXJscGFyc2UKIGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFy
c2UgaW1wb3J0IHVybGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwK
ICAgICAgICAgICAgICAgICAgICBSZWZUZXN0RXhlY3V0b3IsCkBAIC03Miw4ICs3Myw4IEBAIGNs
YXNzIFNlbGVuaXVtQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAg
ICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVvdXQsIGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0
aW9uLAogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLkVycm9ySW5SZXNwb25zZUV4Y2Vw
dGlvbiwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAg
ICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAg
ICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTg3LDggKzg4LDggQEAgY2xhc3MgU2VsZW5pdW1U
ZXN0aGFybmVzc1Byb3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVm
IGxvYWRfcnVubmVyKHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVy
X2hhbmRsZToKICAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3aXRjaF90b193aW5kb3coc2Vs
Zi5ydW5uZXJfaGFuZGxlKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYucGFy
ZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJsID0g
dXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCisg
ICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAg
IHNlbGYubG9nZ2VyLmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJk
cml2ZXIuZ2V0KHVybCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi53ZWJkcml2
ZXIuY3VycmVudF93aW5kb3dfaGFuZGxlCkBAIC0yNjEsNyArMjYyLDcgQEAgY2xhc3MgU2VsZW5p
dW1SdW4oVGltZWRSdW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUs
ICJtZXNzYWdlIiwgIiIpKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAg
ICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1h
dF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQog
ICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3Nh
Z2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgp
CkBAIC0yNzAsMTEgKzI3MSwxMSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiBj
bGFzcyBTZWxlbml1bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAg
ICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRp
cGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmls
aXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19l
YWdlcl9wYWdlbG9hZD1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlNlbGVuaXVtLWJhc2Vk
IGV4ZWN1dG9yIGZvciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFybmVz
c0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRf
bXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3RvY29s
ID0gU2VsZW5pdW1Qcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMpCkBAIC0zNTUs
MTEgKzM1NiwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikgewogCiAK
IGNsYXNzIFNlbGVuaXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGll
cj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2Nh
Y2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdf
aW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxl
bml1bSBXZWJEcml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJl
ZlRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2Fj
aGUsCkBAIC0zNzEsOCArMzczLDggQEAgY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVm
VGVzdEV4ZWN1dG9yKToKICAgICAgICAgc2VsZi5jbG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0
ZXJfZG9uZQogICAgICAgICBzZWxmLmhhc193aW5kb3cgPSBGYWxzZQogCi0gICAgICAgIHdpdGgg
b3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifSkpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5y
ZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0Lmpz
IikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNs
YXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAg
ICBzZWxmLmltcGxlbWVudGF0aW9uLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3JzZXJ2by5weQppbmRleCA5Y2VmMWZiMmQ3Zjc4ZTg3MjllNTFmZjQwMGIzZGYyNDAyYTJlOTRl
Li5mODNmMDExNWUwMDY4MTE0YmI2MmE4MDRiMzA1NWNiNTEwODE0YjE1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CkBAIC03LDYgKzcsNyBAQCBpbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCitmcm9t
IHNpeCBpbXBvcnQgZW5zdXJlX3N0ciwgaXRlcml0ZW1zCiAKIGZyb20gbW96cHJvY2VzcyBpbXBv
cnQgUHJvY2Vzc0hhbmRsZXIKIApAQCAtMjIsOCArMjMsMTAgQEAgZnJvbSAuYmFzZSBpbXBvcnQg
KENvbm5lY3Rpb25sZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUHJv
dG9jb2wpCiBmcm9tIC5wcm9jZXNzIGltcG9ydCBQcm9jZXNzVGVzdEV4ZWN1dG9yCiBmcm9tIC4u
YnJvd3NlcnMuYmFzZSBpbXBvcnQgYnJvd3Nlcl9jb21tYW5kCitmcm9tIC4ucHJvY2VzcyBpbXBv
cnQgY2FzdF9lbnYKIGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBTZXJ2b0RyaXZlclNl
cnZlcgogCisKIHB5dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZlciA9IE5vbmUKIApAQCAtNDUs
NyArNDgsNyBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3VybF9mdW5jLCBi
cm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiAgICAgICAgIGFyZ3MgKz0gWyItWiIs
IGRlYnVnX29wdHNdCiAgICAgZm9yIHN0eWxlc2hlZXQgaW4gYnJvd3Nlci51c2VyX3N0eWxlc2hl
ZXRzOgogICAgICAgICBhcmdzICs9IFsiLS11c2VyLXN0eWxlc2hlZXQiLCBzdHlsZXNoZWV0XQot
ICAgIGZvciBwcmVmLCB2YWx1ZSBpbiB0ZXN0LmVudmlyb25tZW50LmdldCgncHJlZnMnLCB7fSku
aXRlcml0ZW1zKCk6CisgICAgZm9yIHByZWYsIHZhbHVlIGluIGl0ZXJpdGVtcyh0ZXN0LmVudmly
b25tZW50LmdldCgncHJlZnMnLCB7fSkpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVz
PSVzIiAlIChwcmVmLCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRo
OgogICAgICAgICBhcmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0
aWZpY2F0ZV9wYXRoXQpAQCAtNjIsOSArNjUsOSBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0
ZXN0LCB0ZXN0X3VybF9mdW5jLCBicm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiBj
bGFzcyBTZXJ2b1Rlc3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAg
Y29udmVydF9yZXN1bHQgPSB0ZXN0aGFybmVzc19yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVy
PTEsIGRlYnVnX2luZm89Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93
c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25l
LAogICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLCAqKmt3YXJncyk6Ci0g
ICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVy
X2NvbmZpZywKKyAgICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAg
ICAgIHNlbGYucGF1c2VfYWZ0ZXJfdGVzdCA9IHBhdXNlX2FmdGVyX3Rlc3QKQEAgLTEwMCwxMSAr
MTAzLDExIEBAIGNsYXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1
dG9yKToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFu
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRM
aW5lPVtzZWxmLm9uX291dHB1dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvbkZpbmlzaD1zZWxmLm9uX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JlT3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNl
bGYuY29tbWFuZCwgZW52PWVudikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3Mu
UG9wZW4oc2VsZi5jb21tYW5kLCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICB0aW1lb3V0ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxp
ZXIKQEAgLTE3OSwxMCArMTgyLDExIEBAIGNsYXNzIFRlbXBGaWxlbmFtZShvYmplY3QpOgogY2xh
c3MgU2Vydm9SZWZUZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVy
dF9yZXN1bHQgPSByZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBs
aWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2Nv
bmZpZywgYmluYXJ5PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAg
ICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVz
dD1GYWxzZSwKICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBQcm9jZXNzVGVz
dEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9
dGltZW91dF9tdWx0aXBsaWVyLApAQCAtMjMxLDcgKzIzNSw3IEBAIGNsYXNzIFNlcnZvUmVmVGVz
dEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYu
aW50ZXJhY3RpdmU6CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIo
c2VsZi5jb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSkKIAogCiAgICAgICAgICAgICAg
ICAgdHJ5OgpAQCAtMjQzLDcgKzI0Nyw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFBy
b2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNl
bGYuY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnY9Y2FzdF9lbnYoZW52KSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAg
ICAgIHJ2ID0gc2VsZi5wcm9jLndhaXQoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2Fy
ZEludGVycnVwdDoKQEAgLTI1NywxMCArMjYxLDEwIEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1
dG9yKFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgcnYgIT0gMCBvciBub3Qg
b3MucGF0aC5leGlzdHMob3V0cHV0X3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZSwgKCJDUkFTSCIsIE5vbmUpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCkg
YXMgZjoKKyAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgInJiIikgYXMgZjoKICAg
ICAgICAgICAgICAgICAjIE1pZ2h0IG5lZWQgdG8gc3RyaXAgdmFyaWFibGUgaGVhZGVycyBvciBz
b21ldGhpbmcgaGVyZQogICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlLCBiYXNlNjQuYjY0ZW5jb2RlKGRhdGEpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUsIGVuc3VyZV9zdHIoYmFzZTY0LmI2NGVuY29kZShkYXRhKSkKIAogICAg
IGRlZiBkb190ZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmltcGxlbWVu
dGF0aW9uLnJ1bl90ZXN0KHRlc3QpCkBAIC0zMDUsMTAgKzMwOSwxMSBAQCBjbGFzcyBTZXJ2b1Rp
bWVkUnVubmVyKFRpbWVkUnVubmVyKToKIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJv
Y2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBjcmFzaHRlc3RfcmVzdWx0
X2NvbnZlcnRlcgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIGJpbmFyeT1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91
dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAg
ICAqKmt3YXJncyk6CiAgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0z
MjksNiArMzM0LDggQEAgY2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4
ZWN1dG9yKToKICAgICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICBzdWNjZXNzLCBkYXRh
ID0gU2Vydm9UaW1lZFJ1bm5lcihzZWxmLmxvZ2dlciwgc2VsZi5kb19jcmFzaHRlc3QsIHNlbGYu
cHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
dXJsLCB0aW1lb3V0LCBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCisgICAgICAgICMgRW5zdXJl
IHRoYXQgbm8gcHJvY2Vzc2VzIGhhbmcgYXJvdW5kIGlmIHRoZXkgdGltZW91dC4KKyAgICAgICAg
c2VsZi5wcm9jLmtpbGwoKQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQpAQCAtMzUwLDExICszNTcsMTEgQEAg
Y2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKIAogICAg
ICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFBy
b2Nlc3NIYW5kbGVyKGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBl
bnY9ZW52KQorICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5k
LCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICBzZWxmLnByb2Mud2FpdCgpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQppbmRleCAwMmVjYzc1
NjY0NzY1NmU2YjIwZTA2MzcxZDI4NzY3ZmEwZWIwMGYxLi4wNjgwYzRlZDIyOTkwMzUxNDZjMmIx
ZTQ3OGY0YjNmYTFjMzAxMTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4
ZWN1dG9yc2Vydm9kcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRv
cnNlcnZvZHJpdmVyLnB5CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJQ
cm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhj
ZXB0IChzb2NrZXQudGltZW91dCwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZv
cm1hdF9leGMoKSkKICAgICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNz
YWdlID0gZ2V0YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgaWYgbWVzc2FnZToK
ICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0g
dHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNr
LmZvcm1hdF9leGMoKQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5B
TC1FUlJPUiIsIGUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9m
bGFnLnNldCgpCkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihU
aW1lZFJ1bm5lcik6CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVz
dGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRp
cGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0
ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAg
ICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0
X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisg
ICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUpCiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBTZXJ2b1dlYkRyaXZlclByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1j
YXBhYmlsaXRpZXMpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3Ro
YXJuZXNzX3NlcnZvZHJpdmVyLmpzIikpIGFzIGY6CkBAIC0yMjEsMTEgKzIyMSwxMiBAQCBjbGFz
cyBUaW1lb3V0RXJyb3IoRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRl
c3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93
c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxp
ZXI9MSwKICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjYXBhYmlsaXRp
ZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAg
ICAgICAgICIiIlNlbGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMi
IiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2Nv
bmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9
c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTIzNSw4ICsyMzYsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZl
clJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKQogICAg
ICAgICBzZWxmLmltcGxlbWVudGF0aW9uID0gUmVmVGVzdEltcGxlbWVudGF0aW9uKHNlbGYpCiAg
ICAgICAgIHNlbGYudGltZW91dCA9IE5vbmUKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bihoZXJlLCAicmVmdGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgotICAgICAgICAgICAg
c2VsZi53YWl0X3NjcmlwdCA9IGYucmVhZCgpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpv
aW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi53YWl0X3Nj
cmlwdCA9IGYucmVhZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13YWl0In0KIAogICAgIGRl
ZiByZXNldChzZWxmKToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCkBAIC0y
NTYsNyArMjU3LDcgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVz
dEV4ZWN1dG9yKToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpCiAgICAgICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0g
IlxuIgotICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAg
ICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBy
ZXR1cm4gdGVzdC5yZXN1bHRfY2xzKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpLCBbXQogCiAg
ICAgZGVmIHNjcmVlbnNob3Qoc2VsZiwgdGVzdCwgdmlld3BvcnRfc2l6ZSwgZHBpKToKQEAgLTI3
Nyw3ICsyNzgsNyBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0
RXhlY3V0b3IpOgogCiAgICAgICAgIHJldHVybiBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X3VybCh0ZXN0KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcndlYmRyaXZlci5weQppbmRleCA5YjVmMzk3NjQwMjVlYmQ5MTJmOWZkMDgwYWQw
NWRkMGRlZWE4MjdjLi5jNWYyOTY1ZWMxODU4NjEzMWJjMjBkMzk0ZjU2Yjc4ODI3YzEwMmVjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKQEAgLTEsMTEg
KzEsMTIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQg
anNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dGltZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJv
bSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1w
b3J0IChDYWxsYmFja0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0
b3IsCkBAIC02NiwxMyArNjcsMjAgQEAgY2xhc3MgV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydChC
YXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToK
ICAgICAgICAgICAgICAgICBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCgiIikK
LSAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sIGNsaWVudC5TY3Jp
cHRUaW1lb3V0RXhjZXB0aW9uKToKKyAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRF
eGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhjZXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9u
KToKKyAgICAgICAgICAgICAgICAjIEEgSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uIHdpbGwgaGFw
cGVuIHdoZW4gd2UgbmF2aWdhdGU7CisgICAgICAgICAgICAgICAgIyBieSBpZ25vcmluZyBpdCBp
dCdzIHBvc3NpYmxlIHRvIHJlbG9hZCB0aGUgdGVzdCB3aGlsc3QgdGhlCisgICAgICAgICAgICAg
ICAgIyBoYXJuZXNzIHJlbWFpbnMgcGF1c2VkCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAg
ICAgICAgZXhjZXB0IChzb2NrZXQudGltZW91dCwgY2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgSU9F
cnJvcik6CisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAg
ICAgICAgICBjbGllbnQuTm9TdWNoV2luZG93RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBJT0Vy
cm9yKToKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3Jt
YXRfZXhjKGUpKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAg
ICAgIGJyZWFrCiAKIApAQCAtODYsOCArOTQsOCBAQCBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVz
c1Byb3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVu
bmVyKHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToK
ICAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGUgPSBzZWxmLnJ1bm5lcl9o
YW5kbGUKLSAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRv
ci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2Vs
Zi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAgICAg
ICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1ZygiTG9hZGluZyAlcyIgJSB1cmwpCiAKICAgICAgICAgc2VsZi53ZWJkcml2ZXIudXJs
ID0gdXJsCkBAIC0yODgsMTUgKzI5NiwxOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90
b2NvbCk6CiAgICAgICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAi
IikpCiAgICAgICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0g
IlxuIgotICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAg
ICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZyhtZXNzYWdlKQogICAgICAgICBzZWxmLndlYmRyaXZlciA9IE5vbmUK
IAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBH
ZXQgYSBzaW1wbGUgcHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXIud2luZG93X2hhbmRsZQotICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0
LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgR2V0IGEgc2lt
cGxlIHByb3BlcnR5IG92ZXIgdGhlIGNvbm5lY3Rpb24sIHdpdGggMiBzZWNvbmRzIG9mIHRpbWVv
dXQKKyAgICAgICAgICAgICMgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBjaGVj
ayBpZiB0aGUgV2ViRHJpdmVyIGl0cworICAgICAgICAgICAgIyBzdGlsbCBhbGl2ZSwgYW5kIGFs
bG93cyB0byBjb21wbGV0ZSB0aGUgY2hlY2sgd2l0aGluIHRoZSB0ZXN0cnVubmVyCisgICAgICAg
ICAgICAjIDUgc2Vjb25kcyBvZiBleHRyYV90aW1lb3V0IHdlIGhhdmUgYXMgbWF4aW11bSB0byBl
bmQgdGhlIHRlc3QgYmVmb3JlCisgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCB0aW1lb3V0IGZy
b20gdGVzdHJ1bm5lciB0cmlnZ2Vycy4KKyAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnNlbmRf
c2Vzc2lvbl9jb21tYW5kKCJHRVQiLCAid2luZG93IiwgdGltZW91dD0yKQorICAgICAgICBleGNl
cHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLCBjbGllbnQu
SW52YWxpZFNlc3Npb25JZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAg
ICAgICAgcmV0dXJuIFRydWUKIApAQCAtMzI5LDcgKzM0MSw3IEBAIGNsYXNzIFdlYkRyaXZlclJ1
bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUs
ICJtZXNzYWdlIiwgIiIpKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJh
Y2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklO
VEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNl
bGYucmVzdWx0X2ZsYWcuc2V0KCkKQEAgLTMzOCwxMSArMzUwLDExIEBAIGNsYXNzIFdlYkRyaXZl
clJ1bihUaW1lZFJ1bm5lcik6CiBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRl
c3RoYXJuZXNzRXhlY3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0
aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVy
X2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2Fm
dGVyX2RvbmU9VHJ1ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAg
ICAgICAgICAgICAgc3VwcG9ydHNfZWFnZXJfcGFnZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAg
ICAgICAiIiJXZWJEcml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3Rz
IiIiCi0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwg
c2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxm
LCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8p
CiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBXZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2Vy
LCBjYXBhYmlsaXRpZXMpCkBAIC00MzcsMTEgKzQ0OSwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9
PT0gImFib3V0OmJsYW5rIikgewogCiAKIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihS
ZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAg
ICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUs
CiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoq
a3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0
cyIiIgogICAgICAgICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf
Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNo
ZT1zY3JlZW5zaG90X2NhY2hlLApAQCAtNTA1LDExICs1MTgsMTIgQEAgY2xhc3MgV2ViRHJpdmVy
UmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKIAogY2xhc3MgV2ViRHJpdmVyQ3Jh
c2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211
bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9z
ZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2Fw
YWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4
ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRf
XyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTUzNSw3
ICs1NDksNyBAQCBjbGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVj
dXRvcik6CiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252
ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQogCi0gICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xz
KCoqZGF0YSksIFtdKQorICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqZGF0YSksIFtd
KQogCiAgICAgZGVmIGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToK
ICAgICAgICAgcHJvdG9jb2wuYmFzZS5sb2FkKHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29s
LnB5CmluZGV4IDk1ZmRlYzdjOTgxNjg4YWE5OWNhMTNlZWFmNGM3YjZjNDA1MmM5MTcuLjRlY2Rk
NTFhMGVmNWVjYTgxNTNmZmI4NDhmMDI1M2VlYjZkN2Y3MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9w
cm90b2NvbC5weQpAQCAtMzIsNyArMzIsNiBAQCBjbGFzcyBQcm90b2NvbChvYmplY3QpOgogICAg
ICAgICAiIiI6cmV0dXJuczogQ3VycmVudCBsb2dnZXIiIiIKICAgICAgICAgcmV0dXJuIHNlbGYu
ZXhlY3V0b3IubG9nZ2VyCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6
CiAgICAgICAgICIiIklzIHRoZSBicm93c2VyIGNvbm5lY3Rpb24gc3RpbGwgYWN0aXZlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQppbmRleCBjMTkz
NmViOTY2Zjc4ODM0ZDgzOWM3OTQwOTMyMmIwYTk2YWYxMjg0Li4zZDMyOTE3NjU5YjM5MDBmOWU0
NjQ2NzBkMmNkYzM5YjhmZjE4MGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L3B5dGVzdHJ1bm5lci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRl
c3RydW5uZXIvcnVubmVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBydW4ocGF0aCwgc2VydmVy
X2NvbmZpZywgc2Vzc2lvbl9jb25maWcsIHRpbWVvdXQ9MCk6CiAgICAgb3MuZW52aXJvblsiV0Rf
SE9TVCJdID0gc2Vzc2lvbl9jb25maWdbImhvc3QiXQogICAgIG9zLmVudmlyb25bIldEX1BPUlQi
XSA9IHN0cihzZXNzaW9uX2NvbmZpZ1sicG9ydCJdKQogICAgIG9zLmVudmlyb25bIldEX0NBUEFC
SUxJVElFUyJdID0ganNvbi5kdW1wcyhzZXNzaW9uX2NvbmZpZ1siY2FwYWJpbGl0aWVzIl0pCi0g
ICAgb3MuZW52aXJvblsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29u
ZmlnLmFzX2RpY3QoKSkKKyAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29u
LmR1bXBzKHNlcnZlcl9jb25maWcuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAKICAg
ICBoYXJuZXNzID0gSGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKICAgICBzdWJ0ZXN0cyA9IFN1YnRl
c3RSZXN1bHRSZWNvcmRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rl
c3Qtd2FpdC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCmluZGV4IDhh
N2VkYjc5ZDYyMjU2ZWVmNjNjNzFlYWJkNDUwZDQyYmNlN2M0ZDIuLmFkMDhhZDdkNzZmYjAyOTlh
YWRlZGI1NzIxOTNjMzhjNTA1NWU2NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvdGVzdC13YWl0LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0Lmpz
CkBAIC0zMiw3ICszMiw4IEBAIGZ1bmN0aW9uIHdhaXRfcGFpbnRzKCkgewogfQogCiBmdW5jdGlv
biBzY3JlZW5zaG90X2lmX3JlYWR5KCkgewotICBpZiAocm9vdC5jbGFzc0xpc3QuY29udGFpbnMo
IiUoY2xhc3NuYW1lKXMiKSAmJgorICBpZiAocm9vdCAmJgorICAgICAgcm9vdC5jbGFzc0xpc3Qu
Y29udGFpbnMoIiUoY2xhc3NuYW1lKXMiKSAmJgogICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsK
ICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKICAgICBv
YnNlcnZlci5vYnNlcnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy93M2MtaW1wb3J0LmxvZwppbmRleCA1ZDliNjk4ZjNjYTM1YWJhN2ZkZTAyNTI1Yjg1ODU5
OTU4ZDIzOGFhLi42MTE2OGEyMDdiZmI0MDc2MzY4ZDZkNGQxOTE5MWJiZGNkNTZmNzczIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9ydC5sb2cKQEAgLTE1LDYgKzE1LDcgQEAgTm9uZQog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
X19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9y
Y2hyb21lLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2UucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0
ZWR0cmVlLnB5CmluZGV4IDRkNTA1MDg2YmQ4ZDk5MWM5NTNjMzRkMzhkOGUxZmEwY2I5MjBmOTku
Ljc1MjFmMjViMTM0NGY1YzUwYjgxODJhMmI3YTY4Mjc4ODU4ZjliNDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJl
ZS5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gbWF0aCBpbXBvcnQgbG9nCiBmcm9tIGNvbGxlY3Rp
b25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZh
bHVlcwogCiBjbGFzcyBOb2RlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3As
IHZhbHVlKToKQEAgLTMzLDcgKzM0LDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBy
ZXN1bHRfY291bnRzID0gZGVmYXVsdGRpY3QoaW50KQogICAgIHRvdGFsID0gZmxvYXQobGVuKHJl
c3VsdHMpKQotICAgIGZvciB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6CisgICAgZm9y
IHZhbHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMg
aXMgcmlnaHQsIHBvc3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAg
ICAgICMgZGlzdGluY3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAg
Zm9yIHZhbHVlIGluIHZhbHVlczoKQEAgLTQxLDcgKzQyLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0
cyk6CiAKICAgICBlbnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291
bnRzLml0ZXJ2YWx1ZXMoKToKKyAgICBmb3IgY291bnQgaW4gaXRlcnZhbHVlcyhyZXN1bHRfY291
bnRzKToKICAgICAgICAgcHJvcCA9IGZsb2F0KGNvdW50KSAvIHRvdGFsCiAgICAgICAgIGVudHJv
cHlfc3VtIC09IHByb3AgKiBsb2cocHJvcCwgMikKIApAQCAtNTIsNyArNTMsNyBAQCBkZWYgc3Bs
aXRfcmVzdWx0cyhwcm9wLCByZXN1bHRzKToKICAgICAiIiJTcGxpdCBhIGRpY3Rpb25hcnkgb2Yg
cmVzdWx0cyBpbnRvIGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMgd2hlcmUKICAgICBlYWNo
IHN1Yi1kaWN0aW9uYXJ5IGhhcyBhIHNwZWNpZmljIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0
eSIiIgogICAgIGJ5X3Byb3AgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgIGZvciBydW5faW5mbywg
dmFsdWUgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGlu
IGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYnlfcHJvcFtydW5faW5mb1twcm9wXV1bcnVu
X2luZm9dID0gdmFsdWUKIAogICAgIHJldHVybiBieV9wcm9wCkBAIC03NywxMyArNzgsMTMgQEAg
ZGVmIGJ1aWxkX3RyZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVl
PU5vbmUpOgogICAgIHByb3BfaW5kZXggPSB7cHJvcDogaSBmb3IgaSwgcHJvcCBpbiBlbnVtZXJh
dGUocHJvcGVydGllcyl9CiAKICAgICBhbGxfcmVzdWx0cyA9IGRlZmF1bHRkaWN0KGludCkKLSAg
ICBmb3IgcmVzdWx0X3ZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgZm9y
IHJlc3VsdF92YWx1ZSwgY291bnQgaW4gcmVzdWx0X3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICBm
b3IgcmVzdWx0X3ZhbHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgorICAgICAgICBmb3IgcmVz
dWx0X3ZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMocmVzdWx0X3ZhbHVlcyk6CiAgICAgICAgICAg
ICBhbGxfcmVzdWx0c1tyZXN1bHRfdmFsdWVdICs9IGNvdW50CiAKICAgICAjIElmIHRoZXJlIGlz
IG9ubHkgb25lIHJlc3VsdCB3ZSBhcmUgZG9uZQogICAgIGlmIG5vdCBwcm9wZXJ0aWVzIG9yIGxl
bihhbGxfcmVzdWx0cykgPT0gMToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBhbGxfcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMo
YWxsX3Jlc3VsdHMpOgogICAgICAgICAgICAgdHJlZS5yZXN1bHRfdmFsdWVzW3ZhbHVlXSArPSBj
b3VudAogICAgICAgICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1bHRzLmtleXMoKSkKICAgICAg
ICAgcmV0dXJuIHRyZWUKQEAgLTk5LDcgKzEwMCw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRp
ZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgIG5ld19lbnRyb3B5ID0gMC4KICAgICAgICAgcmVzdWx0c19zZXRzX2Vu
dHJvcHkgPSBbXQotICAgICAgICBmb3IgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCBpbiByZXN1bHRf
c2V0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4g
aXRlcml0ZW1zKHJlc3VsdF9zZXRzKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5
LmFwcGVuZCgoZW50cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAg
ICAgICAgICAgICBuZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihy
ZXN1bHRzKSkgKiByZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTA5LDcgKzExMCw3
IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywg
dHJlZT1Ob25lKToKIAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRp
dGlvbiB0aGUgc3BhY2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBm
b3IgdmFsdWUsIGNvdW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
dmFsdWUsIGNvdW50IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVl
LnJlc3VsdF92YWx1ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0g
c2V0KHJlc3VsdHMua2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2ZvbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQppbmRleCA2NjQ3YTg1ODBi
ZTdhYjQwNTBiYmQzNzU5M2IyZTY1OTViYzNhYzcyLi42MjI2ZmM2NmZlZGYyYWZjOTZiNTExMGYz
NTI0YjAwZDE4NWNjNTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZm9udC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBjdHlwZXMKLWltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHBsaXN0bGliCkBA
IC0xMiw3ICsxMSw4IEBAIFNZU1RFTSA9IHBsYXRmb3JtLnN5c3RlbSgpLmxvd2VyKCkKIAogCiBj
bGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbnRf
ZGlyPU5vbmUsICoqZm9udHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGZvbnRf
ZGlyPU5vbmUsICoqZm9udHMpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAg
ICBzZWxmLmZvbnRfZGlyID0gZm9udF9kaXIKICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMg
PSBGYWxzZQogICAgICAgICBzZWxmLmNyZWF0ZWRfZGlyID0gRmFsc2UKQEAgLTI2LDE0ICsyNiwx
MyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUg
PSBmb250X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIGluc3RhbGwgPSBnZXRhdHRy
KHNlbGYsICdpbnN0YWxsXyVzX2ZvbnQnICUgU1lTVEVNLCBOb25lKQogICAgICAgICAgICAgaWYg
bm90IGluc3RhbGw6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IGluc3Rh
bGxhdGlvbiBub3Qgc3VwcG9ydGVkIG9uICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1lTVEVNKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQg
aW5zdGFsbGF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgaWYgaW5zdGFsbChmb250X25hbWUsIGZvbnRf
cGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBUcnVlCi0gICAg
ICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdJbnN0YWxsZWQgZm9udDogJXMnLCBmb250X25hbWUp
CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJyAl
IGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53
YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycg
JSBmb250X25hbWUpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWws
IGV4Y190Yik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmluc3RhbGxlZF9mb250czoKQEAgLTQzLDEy
ICs0MiwxMiBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250
X25hbWUgPSBmb250X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIHJlbW92ZSA9IGdl
dGF0dHIoc2VsZiwgJ3JlbW92ZV8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAg
IGlmIG5vdCByZW1vdmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IHJl
bW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycsIFNZU1RFTSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCdGb250IHJlbW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNU
RU0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiByZW1vdmUo
Zm9udF9uYW1lLCBmb250X3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnUmVt
b3ZlZCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5p
bmZvKCdSZW1vdmVkIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdVbmFibGUgdG8gcmVtb3ZlIGZvbnQ6ICVz
JywgZm9udF9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJs
ZSB0byByZW1vdmUgZm9udDogJXMnICUgZm9udF9uYW1lKQogCiAgICAgZGVmIGluc3RhbGxfbGlu
dXhfZm9udChzZWxmLCBmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxm
LmZvbnRfZGlyOgpAQCAtNjIsNyArNjEsNyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6
CiAgICAgICAgICAgICBmY19jYWNoZV9yZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAg
ICAgICAgICAgcmV0dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBP
U0Vycm9yOiAgIyBJZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAg
ICAgICAgICAgbG9nZ2luZy5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMg
TGludXggc3lzdGVtLicpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZp
ZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKIAogICAgIGRlZiBpbnN0YWxsX2Rhcndpbl9mb250KHNlbGYsIGZvbnRfbmFtZSwg
Zm9udF9wYXRoKToKQEAgLTc5LDcgKzc4LDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0
KToKICAgICAgICAgIyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9y
ZXN1bHRzLWNvbGxlY3Rpb24vaXNzdWVzLzIxOAogICAgICAgICAjIGluc3RhbGxpbmcgQWhlbSBv
biBtYWNPUyBpcyBmbGFreSwgc28gY2hlY2sgaWYgaXQgYWN0dWFsbHkgaW5zdGFsbGVkCiAgICAg
ICAgIGZvbnRzID0gY2hlY2tfb3V0cHV0KFsnL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlcicsICct
eG1sJywgJ1NQRm9udHNEYXRhVHlwZSddKQotICAgICAgICBmb250cyA9IHBsaXN0bGliLnJlYWRQ
bGlzdEZyb21TdHJpbmcoZm9udHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgcHkz
CisgICAgICAgICAgICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9t
Qnl0ZXMKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmVhZFBs
aXN0RnJvbUJ5dGVzID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZworICAgICAgICBmb250
cyA9IHJlYWRQbGlzdEZyb21CeXRlcyhmb250cykKICAgICAgICAgYXNzZXJ0IGxlbihmb250cykg
PT0gMQogICAgICAgICBmb3IgZm9udCBpbiBmb250c1swXVsnX2l0ZW1zJ106CiAgICAgICAgICAg
ICBpZiBmb250WydwYXRoJ10gPT0gaW5zdGFsbGVkX2ZvbnRfcGF0aDoKQEAgLTExMCw3ICsxMTQs
NyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmY19jYWNoZV9y
ZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0dXJuIG5vdCBmY19j
YWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJZiBmb250Y29uZmln
IGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9nZ2luZy5lcnJvcign
Zm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCisgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMg
TGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiByZW1v
dmVfZGFyd2luX2ZvbnQoc2VsZiwgZm9udF9uYW1lLCBfKToKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9mb3JtYXR0ZXJzL2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hy
b21pdW0ucHkKaW5kZXggNTY0MzVlYWJmNGJiZWFkYmVlN2FmYTI5NGUzZTBiYjFlNzY4NWI5OS4u
MDg2NTYwYjZhODczY2RjOWZlZmQzYjhiOGI3YTUzYjAxNzNiMzg3MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1h
dHRlcnMvY2hyb21pdW0ucHkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0
ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgOnBhcmFtIHN0ciB0ZXN0OiB0aGUgbmFt
ZSBvZiB0aGUgdGVzdAogICAgICAgICA6cGFyYW0gc3RyIHN1YnRlc3Q6IHRoZSBuYW1lIG9mIHRo
ZSBzdWJ0ZXN0IHdpdGggdGhlIG1lc3NhZ2UKICAgICAgICAgOnBhcmFtIHN0ciBzdGF0dXM6IHRo
ZSBzdWJ0ZXN0IHN0YXR1cwotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiB0aGUgZXhwZWN0
ZWQgc3VidGVzdCBzdGF0dXMKKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVj
dGVkIHN1YnRlc3Qgc3RhdHVzZXMKICAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB0aGUgc3Ry
aW5nIHRvIGFwcGVuZCB0byB0aGUgbWVzc2FnZSBmb3IgdGhpcyB0ZXN0CiAKICAgICAgICAgSGVy
ZSdzIGFuIGV4YW1wbGUgb2YgYSBtZXNzYWdlOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDaHJv
bWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuCiAg
ICAgICAgICMgQWRkIHRoZSBwcmVmaXgsIHdpdGggdGhlIHRlc3Qgc3RhdHVzIGFuZCBzdWJ0ZXN0
IG5hbWUgKGlmIGF2YWlsYWJsZSkKICAgICAgICAgcHJlZml4ID0gIlslcyIgJSBzdGF0dXMKLSAg
ICAgICAgaWYgZXhwZWN0ZWQgYW5kIGV4cGVjdGVkICE9IHN0YXR1czoKKyAgICAgICAgaWYgZXhw
ZWN0ZWQgYW5kIHN0YXR1cyBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBwcmVmaXggKz0g
IiBleHBlY3RlZCAlc10gIiAlIGV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBw
cmVmaXggKz0gIl0gIgpAQCAtNTUsMTMgKzU1LDI4IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVy
KGJhc2UuQmFzZUZvcm1hdHRlcik6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiVzOiAiICUgc3Vi
dGVzdAogICAgICAgICBzZWxmLm1lc3NhZ2VzW3Rlc3RdICs9IHByZWZpeCArIG1lc3NhZ2UgKyAi
XG4iCiAKLSAgICBkZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhw
ZWN0ZWQsIG1lc3NhZ2UpOgorICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0
LCBhcnRpZmFjdF9uYW1lLCBhcnRpZmFjdF92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBB
cHBlbmRzIGFydGlmYWN0cyB0byB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkuCisgICAgICAgIDpw
YXJhbSBkaWN0IGN1cl9kaWN0OiB0aGUgdGVzdCBsZWFmIGRpY3Rpb25hcnkgdG8gYXBwZW5kIHRv
CisgICAgICAgIDpwYXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlm
YWN0CisgICAgICAgIDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUg
YXJ0aWZhY3QKKyAgICAgICAgIiIiCisgICAgICAgIGlmICJhcnRpZmFjdHMiIG5vdCBpbiBjdXJf
ZGljdC5rZXlzKCk6CisgICAgICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7fQorICAg
ICAgICAjIEFydGlmYWN0cyBhcmUgYWxsIGV4cGVjdGVkIHRvIGJlIGxpc3RzLCBzbyBldmVuIHRo
b3VnaCB3ZSBvbmx5IGhhdmUgYQorICAgICAgICAjIHNpbmdsZSB8YXJ0aWZhY3RfdmFsdWV8IHdl
IHN0aWxsIHB1dCBpdCBpbiBhIGxpc3QuCisgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVth
cnRpZmFjdF9uYW1lXSA9IFthcnRpZmFjdF92YWx1ZV0KKworICAgIGRlZiBfc3RvcmVfdGVzdF9y
ZXN1bHQoc2VsZiwgbmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgd3B0X2FjdHVhbCwg
c3VidGVzdF9mYWlsdXJlKToKICAgICAgICAgIiIiCiAgICAgICAgIFN0b3JlcyB0aGUgcmVzdWx0
IG9mIGEgc2luZ2xlIHRlc3QgaW4gfHNlbGYudGVzdHN8CiAgICAgICAgIDpwYXJhbSBzdHIgbmFt
ZTogbmFtZSBvZiB0aGUgdGVzdC4KICAgICAgICAgOnBhcmFtIHN0ciBhY3R1YWw6IGFjdHVhbCBz
dGF0dXMgb2YgdGhlIHRlc3QuCi0gICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVk
IHN0YXR1cyBvZiB0aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogZXhwZWN0
ZWQgc3RhdHVzZXMgb2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGVz
dCBvdXRwdXQsIHN1Y2ggYXMgc3RhdHVzLCBzdWJ0ZXN0LCBlcnJvcnMgZXRjLgorICAgICAgICA6
cGFyYW0gc3RyIHdwdF9hY3R1YWw6IGFjdHVhbCBzdGF0dXMgcmVwb3J0ZWQgYnkgd3B0LCBtYXkg
ZGlmZmVyIGZyb20gfGFjdHVhbHwuCisgICAgICAgIDpwYXJhbSBib29sIHN1YnRlc3RfZmFpbHVy
ZTogd2hldGhlciB0aGlzIHRlc3QgZmFpbGVkIGJlY2F1c2Ugb2Ygc3VidGVzdHMKICAgICAgICAg
IiIiCiAgICAgICAgICMgVGhlIHRlc3QgbmFtZSBjYW4gY29udGFpbiBhIGxlYWRpbmcgLyB3aGlj
aCB3aWxsIHByb2R1Y2UgYW4gZW1wdHkKICAgICAgICAgIyBzdHJpbmcgaW4gdGhlIGZpcnN0IHBv
c2l0aW9uIG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5IHNwbGl0LiBXZSB1c2UKQEAgLTcyLDEzICs4
NywxNyBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAg
ICAgICAgICAgY3VyX2RpY3QgPSBjdXJfZGljdC5zZXRkZWZhdWx0KG5hbWVfcGFydCwge30pCiAg
ICAgICAgIGN1cl9kaWN0WyJhY3R1YWwiXSA9IGFjdHVhbAogICAgICAgICBjdXJfZGljdFsiZXhw
ZWN0ZWQiXSA9IGV4cGVjdGVkCisgICAgICAgIGlmIHN1YnRlc3RfZmFpbHVyZToKKyAgICAgICAg
ICAgIHNlbGYuX2FwcGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUi
LCAidHJ1ZSIpCisgICAgICAgIGlmIHdwdF9hY3R1YWwgIT0gYWN0dWFsOgorICAgICAgICAgICAg
c2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9zdGF0dXMiLCB3cHRf
YWN0dWFsKQogICAgICAgICBpZiBtZXNzYWdlICE9ICIiOgotICAgICAgICAgICAgY3VyX2RpY3Rb
ImFydGlmYWN0cyJdID0geyJsb2ciOiBtZXNzYWdlfQorICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X2FydGlmYWN0KGN1cl9kaWN0LCAibG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIEZpZ3VyZSBv
dXQgaWYgdGhlcmUgd2FzIGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIHN0YXR1cy4gVGhpcyBv
bmx5CiAgICAgICAgICMgaGFwcGVucyBmb3IgdGVzdHMgdGhhdCB3ZXJlIHJ1bgogICAgICAgICBp
ZiBhY3R1YWwgIT0gIlNLSVAiOgotICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgor
ICAgICAgICAgICAgaWYgYWN0dWFsIG5vdCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgICAgICBj
dXJfZGljdFsiaXNfdW5leHBlY3RlZCJdID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGFjdHVh
bCAhPSAiUEFTUyI6CiAgICAgICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc19yZWdyZXNzaW9u
Il0gPSBUcnVlCkBAIC0xMDMsNyArMTIyLDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFz
ZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgICAgIHJldHVybiAiU0tJUCIKICAgICAgICAgaWYg
c3RhdHVzID09ICJFWFRFUk5BTC1USU1FT1VUIjoKICAgICAgICAgICAgIHJldHVybiAiVElNRU9V
VCIKLSAgICAgICAgaWYgc3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giKToKKyAgICAgICAgaWYg
c3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giLCAiUFJFQ09ORElUSU9OX0ZBSUxFRCIpOgogICAg
ICAgICAgICAgIyBDUkFTSCBpbiBXUFQgbWVhbnMgYSBicm93c2VyIGNyYXNoLCB3aGljaCBDaHJv
bWl1bSB0cmVhdHMgYXMgYQogICAgICAgICAgICAgIyB0ZXN0IGZhaWx1cmUuCiAgICAgICAgICAg
ICByZXR1cm4gIkZBSUwiCkBAIC0xMTYsNyArMTM1LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0
ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKIAogICAgIGRlZiBfZ2V0X2V4cGVjdGVkX3N0YXR1c19m
cm9tX2RhdGEoc2VsZiwgYWN0dWFsX3N0YXR1cywgZGF0YSk6CiAgICAgICAgICIiIgotICAgICAg
ICBHZXRzIHRoZSBleHBlY3RlZCBzdGF0dXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgorICAg
ICAgICBHZXRzIHRoZSBleHBlY3RlZCBzdGF0dXNlcyBmcm9tIGEgfGRhdGF8IGRpY3Rpb25hcnku
CiAKICAgICAgICAgSWYgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgc3RhdHVzIGluIGRhdGEsIHRoZSBh
Y3R1YWwgc3RhdHVzIGlzIHJldHVybmVkLgogICAgICAgICBUaGlzIGlzIGJlY2F1c2UgbW96bG9n
IHdpbGwgZGVsZXRlICJleHBlY3RlZCIgZnJvbSB8ZGF0YXwgaWYgaXQgaXMgdGhlCkBAIC0xMjUs
NDcgKzE0NCw2MSBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIp
OgogICAgICAgICBpcyBleHBlY3RlZC4gU28gd2UgdXNlIHRoZSAiZXhwZWN0ZWQiIHN0YXR1cyBp
ZiBpdCdzIHRoZXJlIG9yIGZhbGwgYmFjawogICAgICAgICB0byB0aGUgYWN0dWFsIHN0YXR1cyBp
ZiBpdCdzIG5vdC4KIAorICAgICAgICBJZiB0aGUgdGVzdCBoYXMgbXVsdGlwbGUgc3RhdHVzZXMs
IGl0IHdpbGwgaGF2ZSBvdGhlciBzdGF0dXNlcyBsaXN0ZWQgYXMKKyAgICAgICAgImtub3duX2lu
dGVybWl0dGVudCIgaW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFwcGVu
ZGVkIHRvCisgICAgICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vl
bi4KKwogICAgICAgICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVz
IG9mIHRoZSB0ZXN0CiAgICAgICAgIDpwYXJhbSBkYXRhOiBhIGRhdGEgZGljdGlvbmFyeSB0byBl
eHRyYWN0IGV4cGVjdGVkIHN0YXR1cyBmcm9tCi0gICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhw
ZWN0ZWQgc3RhdHVzCisgICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMg
YXMgYSBzdHJpbmcKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbImV4cGVjdGVkIl0pCi0gICAgICAgICAgICAgICAgaWYgImV4cGVjdGVkIiBp
biBkYXRhIGVsc2UgYWN0dWFsX3N0YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBz
ZWxmLl9tYXBfc3RhdHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkgaWYgImV4cGVjdGVkIiBpbiBk
YXRhIGVsc2UgYWN0dWFsX3N0YXR1cworICAgICAgICBpZiBkYXRhLmdldCgia25vd25faW50ZXJt
aXR0ZW50Iik6CisgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyArPSAiICIgKyAiICIuam9p
bigKKyAgICAgICAgICAgICAgICBbc2VsZi5fbWFwX3N0YXR1c19uYW1lKG90aGVyX3N0YXR1cykg
Zm9yIG90aGVyX3N0YXR1cyBpbiBkYXRhWyJrbm93bl9pbnRlcm1pdHRlbnQiXV0pCisgICAgICAg
IHJldHVybiBleHBlY3RlZF9zdGF0dXNlcwogCiAgICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRh
dGEpOgotICAgICAgICBzZWxmLnN0YXJ0X3RpbWVzdGFtcF9zZWNvbmRzID0gKGRhdGFbInRpbWUi
XSBpZiAidGltZSIgaW4gZGF0YQorICAgICAgICAjIHxkYXRhfCBjb250YWlucyBhIHRpbWVzdGFt
cCBpbiBtaWNyb3NlY29uZHMsIHdoaWxlIHRpbWUudGltZSgpIGdpdmVzCisgICAgICAgICMgaXQg
aW4gc2Vjb25kcy4KKyAgICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChmbG9h
dChkYXRhWyJ0aW1lIl0pIC8gMTAwMCBpZiAidGltZSIgaW4gZGF0YQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGltZS50aW1lKCkpCiAKICAgICBkZWYgdGVz
dF9zdGF0dXMoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFbInRlc3QiXQot
ICAgICAgICBpc191bmV4cGVjdGVkID0gTm9uZQogICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2Vs
Zi5fbWFwX3N0YXR1c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBleHBlY3RlZF9zdGF0
dXMgPSBzZWxmLl9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBk
YXRhKQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0
dXNfZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAKLSAgICAgICAgaXNfdW5leHBlY3Rl
ZCA9IGFjdHVhbF9zdGF0dXMgIT0gZXhwZWN0ZWRfc3RhdHVzCisgICAgICAgIGlzX3VuZXhwZWN0
ZWQgPSBhY3R1YWxfc3RhdHVzIG5vdCBpbiBleHBlY3RlZF9zdGF0dXNlcwogICAgICAgICBpZiBp
c191bmV4cGVjdGVkIGFuZCB0ZXN0X25hbWUgbm90IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0
X2ZhaWxzOgogICAgICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMuYWRkKHRl
c3RfbmFtZSkKICAgICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxm
Ll9hcHBlbmRfdGVzdF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3VidGVzdCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9z
dGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbIm1lc3Nh
Z2UiXSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBk
YXRhWyJzdWJ0ZXN0Il0sIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJt
ZXNzYWdlIl0pCiAKICAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3Rf
bmFtZSA9IGRhdGFbInRlc3QiXQotICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0
YXR1c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQ
QVNTIiBhbmQgdGVzdF9uYW1lIGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgotICAg
ICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0ZXN0cywg
c28gd2UgZmxpcCB0aGUgc3RhdHVzCi0gICAgICAgICAgICAjIHRvIEZBSUwuCi0gICAgICAgICAg
ICBhY3R1YWxfc3RhdHVzID0gIkZBSUwiCisgICAgICAgICMgU2F2ZSB0aGUgc3RhdHVzIHJlcG9y
dGVkIGJ5IFdQVCBzaW5jZSB3ZSBtaWdodCBjaGFuZ2UgaXQgd2hlbiByZXBvcnRpbmcKKyAgICAg
ICAgIyB0byBDaHJvbWl1bS4KKyAgICAgICAgd3B0X2FjdHVhbF9zdGF0dXMgPSBkYXRhWyJzdGF0
dXMiXQorICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKHdwdF9h
Y3R1YWxfc3RhdHVzKQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBl
Y3RlZF9zdGF0dXNfZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIHN1YnRl
c3RfZmFpbHVyZSA9IEZhbHNlCisgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dp
dGhfc3VidGVzdF9mYWlsczoKKyAgICAgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9IFRydWUKICAg
ICAgICAgICAgICMgQ2xlYW4gdXAgdGhlIHRlc3QgbGlzdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcg
dG9vIG1hbnkuCiAgICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscy5yZW1v
dmUodGVzdF9uYW1lKQorICAgICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMg
ZmFpbGluZyBzdWJ0ZXN0cy4gU2luY2Ugd2UgY2FuIG9ubHkKKyAgICAgICAgICAgICMgcmVwb3J0
IGEgc2luZ2xlIHN0YXR1cyB0byBDaHJvbWl1bSwgd2UgY2hvb3NlIEZBSUwgdG8gaW5kaWNhdGUK
KyAgICAgICAgICAgICMgdGhhdCBzb21ldGhpbmcgYWJvdXQgdGhpcyB0ZXN0IGRpZCBub3QgcnVu
IGNvcnJlY3RseS4KKyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGF0dXMgPT0gIlBBU1MiOgorICAg
ICAgICAgICAgICAgIGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKIAotICAgICAgICBleHBlY3RlZF9z
dGF0dXMgPSBzZWxmLl9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVz
LCBkYXRhKQogICAgICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToKICAgICAgICAgICAgIHNlbGYu
X2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBOb25lLCBhY3R1YWxfc3RhdHVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMsIGRhdGFb
Im1lc3NhZ2UiXSkKLSAgICAgICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBh
Y3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYubWVzc2FnZXNbdGVzdF9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAg
ICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVzLCBleHBl
Y3RlZF9zdGF0dXNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNz
YWdlc1t0ZXN0X25hbWVdLCB3cHRfYWN0dWFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VidGVzdF9mYWlsdXJlKQogCiAgICAgICAgICMgUmVtb3ZlIHRoZSB0ZXN0
IGZyb20gbWVzc2FnZXMgZGljdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAgICAg
ICAgIHNlbGYubWVzc2FnZXMucG9wKHRlc3RfbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0
dGVycy90ZXN0cy90ZXN0X2Nocm9taXVtLnB5CmluZGV4IDgzYzEyOGFjNWNiNDZhNjUzNzNhMmZl
YTAwOGM2YmE2MDM1MGZkOGYuLjJhNWQzZTc5MjgwY2I1NTYzNzQ3YmVjZGRhNGFmZTE4OGQzYjYw
ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21p
dW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5w
eQpAQCAtMTU2LDEyICsxNTYsMTMgQEAgZGVmIHRlc3Rfc3VidGVzdF9tZXNzYWdlcyhjYXBmZCk6
CiAgICAgb3V0cHV0LnNlZWsoMCkKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQp
CiAKLSAgICB0MV9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXVsiYXJ0aWZhY3RzIl1b
ImxvZyJdCi0gICAgYXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTog
dDFfYV9tZXNzYWdlXG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFf
Yl9tZXNzYWdlXG4iCi0KLSAgICB0Ml9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsi
YXJ0aWZhY3RzIl1bImxvZyJdCi0gICAgYXNzZXJ0IHQyX2xvZyA9PSAiW1RJTUVPVVQgZXhwZWN0
ZWQgUEFTU10gdDJfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0
ZXN0cyJdWyJ0MSJdWyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJd
ID09IFsiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
XQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRy
dWUiXQorICAgIHQyX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRp
ZmFjdHMiXQorICAgIGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsiW1RJTUVPVVQgZXhw
ZWN0ZWQgUEFTU10gdDJfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgIndwdF9zdWJ0ZXN0X2ZhaWx1
cmUiIG5vdCBpbiB0Ml9hcnRpZmFjdHMua2V5cygpCiAKIAogZGVmIHRlc3Rfc3VidGVzdF9mYWls
dXJlKGNhcGZkKToKQEAgLTIwMiwxMyArMjAzLDE3IEBAIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVy
ZShjYXBmZCk6CiAgICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCiAgICAgdGVz
dF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9IHRlc3Rfb2Jq
WyJhcnRpZmFjdHMiXVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBlY3Rl
ZCBQQVNTXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQ
QVNTXSB0MV9iOiB0MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1F
T1VUIGV4cGVjdGVkIFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0
cyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJd
ID09IFsiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBlY3RlZCBQ
QVNTXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0
X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0
ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLAot
ICAgICMgZGVzcGl0ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQu
CisgICAgIyBkZXNwaXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0IHRoZSB0ZXN0IHBhc3Nl
ZC4gQnV0IHRoZSBoYXJuZXNzIHN0YXR1cworICAgICMgaXMgbG9nZ2VkIGFzIGFuIGFydGlmYWN0
LgorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNT
Il0KICAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0
ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFTUyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhl
IGZvcm1hdHRlciBjbGVhbmVkIHVwIGl0cyBpbnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEi
IG5vdCBpbiBmb3JtYXR0ZXIudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTI1MywxMiAr
MjU4LDEzIEBAIGRlZiB0ZXN0X2V4cGVjdGVkX3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAKICAg
ICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfbG9nID0gdGVz
dF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMXSB0
MV9hOiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9i
OiB0MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9j
OiB0MV9jX21lc3NhZ2VcbiIKKyAgICBhc3NlcnQgdDFfbG9nID09IFsiW0ZBSUxdIHQxX2E6IHQx
X2FfbWVzc2FnZVxuIgorICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9t
ZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21l
c3NhZ2VcbiJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMg
YSBwYXNzIGJlY2F1c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVj
dGVkLgogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0
IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgogCiAKIGRlZiB0ZXN0X3VuZXhwZWN0ZWRf
c3VidGVzdF9wYXNzKGNhcGZkKToKQEAgLTI5NiwxMCArMzAyLDE0IEBAIGRlZiB0ZXN0X3VuZXhw
ZWN0ZWRfc3VidGVzdF9wYXNzKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChv
dXRwdXQpCiAKICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAg
dDFfbG9nID0gdGVzdF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cg
PT0gIltQQVNTIGV4cGVjdGVkIEZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgotICAgICMgU2lu
Y2UgdGhlIHN1YnRlc3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuCisg
ICAgdDFfYXJ0aWZhY3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQxX2Fy
dGlmYWN0c1sibG9nIl0gPT0gWyJbUEFTUyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3Nh
Z2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09
IFsidHJ1ZSJdCisgICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwg
d2UgZmFpbCB0aGUgdGVzdC4gQnV0IHdlIHJlcG9ydAorICAgICMgd3B0X2FjdHVhbF9zdGF0dXMg
YXMgYW4gYXJ0aWZhY3QKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1
cyJdID09IFsiUEFTUyJdCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIK
KyAgICBhc3NlcnQgdGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVu
c3VyZSB0aGF0IHRoZSBmb3JtYXR0ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAg
ICBhc3NlcnQgInQxIiBub3QgaW4gZm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwog
CkBAIC0zNjcsNiArMzc3LDE0NCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3Rlc3RfZmFpbChjYXBm
ZCk6CiAgICAgIyBPSy0+UEFTUwogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZB
SUwiCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgotICAgICMgLi5h
bmQgdGhpcyB0ZXN0IHNob3VsZCBub3QgYmUgYSByZWdyZXNzaW9uIG5vciB1bmV4cGVjdGVkCisg
ICAgIyAuLmFuZCB0aGlzIHRlc3Qgc2hvdWxkIGJlIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3Rl
ZAorICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3Nl
cnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3RfZmxha3lf
dGVzdF9leHBlY3RlZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRo
IG11bHRpcGxlIHBvc3NpYmxlIHN0YXR1c2VzIGlzIHNlZW4gYXMKKyAgICAjIGV4cGVjdGVkIGlm
IGl0cyBhY3R1YWwgc3RhdHVzIGlzIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMg
c2V0IHVwIHRoZSBoYW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIg
PSBzdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFk
ZF9oYW5kbGVyKGhhbmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRl
cigpKSkKKworICAgICMgUnVuIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAg
bG9nZ2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxv
Z2dlci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0i
RVJST1IiLCBleHBlY3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJFUlJPUiIsICJUSU1F
T1VUIl0pCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290
IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRz
IGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBj
YXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNz
ZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBv
ZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpz
b24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0
MSJdCisgICAgIyBUaGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBF
UlJPUi0+RkFJTCBhbmQgT0stPlBBU1MKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09
ICJGQUlMIgorICAgICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVk
IHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJd
ID09ICJQQVNTIEZBSUwgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lv
biBvciB1bmV4cGVjdGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCisgICAgIyBv
ZiB0aGUgZXhwZWN0ZWQgb25lcworICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRl
c3Rfb2JqCisgICAgYXNzZXJ0ICJpc191bmV4cGVjdGVkIiBub3QgaW4gdGVzdF9vYmoKKworCitk
ZWYgdGVzdF9mbGFreV90ZXN0X3VuZXhwZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBh
IGZsYWt5IHRlc3Qgd2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisg
ICAgIyB1bmV4cGVjdGVkIGlmIGl0cyBhY3R1YWwgc3RhdHVzIGlzIE5PVCBvbmUgb2YgdGhlIHBv
c3NpYmxlIG9uZXMuCisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBT
dHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0
ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91
dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBr
bm93biB0byBiZSBmbGFreQorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZv
PXt9LCB0aW1lPTEyMykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50
ZXN0X2VuZCgidDEiLCBzdGF0dXM9IkVSUk9SIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJt
aXR0ZW50PVsiVElNRU9VVCJdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVj
ayBub3RoaW5nIGdvdCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBt
b3psb2cgb3V0cHV0cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAg
IGNhcHR1cmVkID0gY2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9
PSAiIgorICAgIGFzc2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFj
dHVhbCBvdXRwdXQgb2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0
cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNv
blsidGVzdHMiXVsidDEiXQorICAgICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBl
ZCwgY2hhbmdpbmcgRVJST1ItPkZBSUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2Jq
WyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJl
IGNvbmNhdGVuYXRlZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29i
alsiZXhwZWN0ZWQiXSA9PSAiUEFTUyBUSU1FT1VUIgorICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jl
c3Npb24gYW5kIHVuZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKKyAg
ICAjIG9uZSBvZiB0aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVn
cmVzc2lvbiJdIGlzIFRydWUKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBp
cyBUcnVlCisKKworZGVmIHRlc3RfcHJlY29uZGl0aW9uX2ZhaWxlZChjYXBmZCk6CisgICAgIyBD
aGVjayB0aGF0IGEgZmFpbGVkIHByZWNvbmRpdGlvbiBnZXRzIHByb3Blcmx5IGhhbmRsZWQuCisK
KyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAg
bG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxv
Z2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1G
b3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3Qgd2l0aCBhIHByZWNvbmRpdGlvbiBmYWls
dXJlCisgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIz
KQorICAgIGxvZ2dlci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIs
IHN0YXR1cz0iUFJFQ09ORElUSU9OX0ZBSUxFRCIsIGV4cGVjdGVkPSJPSyIpCisgICAgbG9nZ2Vy
LnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQv
c3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5n
IGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkK
KyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9
PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisg
ICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisK
KyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgcHJl
Y29uZGl0aW9uIGZhaWx1cmUgc2hvdWxkIG1hcCB0byBGQUlMIHN0YXR1cywgYnV0IHdlIHNob3Vs
ZCBhbHNvCisgICAgIyBoYXZlIGFuIGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIFBS
RUNPTkRJVElPTl9GQUlMRUQgc3RhdHVzLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0g
PT0gIkZBSUwiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2FjdHVhbF9z
dGF0dXMiXSA9PSBbIlBSRUNPTkRJVElPTl9GQUlMRUQiXQorICAgICMgLi4udGhpcyBpcyBhbiB1
bmV4cGVjdGVkIHJlZ3Jlc3Npb24gYmVjYXVzZSB3ZSBleHBlY3RlZCBhIHBhc3MgYnV0IGZhaWxl
ZAorICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3Nl
cnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3Rfa25vd25f
aW50ZXJtaXR0ZW50X2VtcHR5KGNhcGZkKToKKyAgICAjIElmIHRoZSBrbm93bl9pbnRlcm1pdHRl
bnQgbGlzdCBpcyBlbXB0eSwgd2Ugd2FudCB0byBlbnN1cmUgd2UgZG9uJ3QgYXBwZW5kCisgICAg
IyBhbnkgZXh0cmFuZW91cyBjaGFyYWN0ZXJzIHRvIHRoZSBvdXRwdXQuCisKKyAgICAjIHNldCB1
cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3Ry
dWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFu
ZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkp
CisKKyAgICAjIFJ1biBhIHRlc3QgYW5kIGluY2x1ZGUgYW4gZW1wdHkga25vd25faW50ZXJtaXR0
ZW50IGxpc3QKKyAgICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGlt
ZT0xMjMpCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQo
InQxIiwgc3RhdHVzPSJPSyIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1bXSkK
KyAgICBsb2dnZXIuc3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0
IHRvIHN0ZG91dC9zdGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMgZXhjZXB0
aW9ucyBkdXJpbmcgaGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNhcGZkLnJl
YWRvdXRlcnIoKQorICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3NlcnQgY2Fw
dHVyZWQuZXJyID09ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBm
b3JtYXR0ZXIKKyAgICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5sb2Fk
KG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAg
ICAjIEJvdGggYWN0dWFsIGFuZCBleHBlY3RlZCBzdGF0dXNlcyBnZXQgbWFwcGVkIHRvIFBhc3Mu
IE5vIGV4dHJhIHdoaXRlc3BhY2UKKyAgICAjIGFueXdoZXJlLgorICAgIGFzc2VydCB0ZXN0X29i
alsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09
ICJQQVNTIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2luc3RydW1lbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODdjZjRmZGE3MjQyNmI4OTIxM2Nj
NDAzN2Y3NDVjZTUyMzI5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1
bWVudHMucHkKQEAgLTAsMCArMSwxMTcgQEAKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5n
Citmcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKKworIiIiSW5zdHJ1bWVudGF0aW9u
IGZvciBtZWFzdXJpbmcgaGlnaC1sZXZlbCB0aW1lIHNwZW50IG9uIHZhcmlvdXMgdGFza3MgaW5z
aWRlIHRoZSBydW5uZXIuCisKK1RoaXMgaXMgbG93ZXIgZmlkZWxpdHkgdGhhbiBhbiBhY3R1YWwg
cHJvZmlsZSwgYnV0IGFsbG93cyBjdXN0b20gZGF0YSB0byBiZSBjb25zaWRlcmVkLAorc28gdGhh
dCB3ZSBjYW4gc2VlIHRoZSB0aW1lIHNwZW50IGluIHNwZWNpZmljIHRlc3RzIGFuZCB0ZXN0IGRp
cmVjdG9yaWVzLgorCisKK0luc3RydW1lbnRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGNv
bnRleHQgbWFuYWdlcnMgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIF9fZW50ZXJfXworY29udGFp
bmluZyB0aGUgdXNlci1mYWNpbmcgQVBJIGUuZy4KKword2l0aCBJbnN0cnVtZW50KCphcmdzKSBh
cyByZWNvcmRpbmc6CisgICAgcmVjb3JkaW5nLnNldChbImluaXQiXSkKKyAgICBkb19pbml0KCkK
KyAgICByZWNvcmRpbmcucGF1c2UoKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRzOgor
ICAgICAgIHRocmVhZC5zdGFydChyZWNvcmRpbmcsICphcmdzKQorICAgIGZvciB0aHJlYWQgaW4g
dGVzdF90aHJlYWRzOgorICAgICAgIHRocmVhZC5qb2luKCkKKyAgICByZWNvcmRpbmcuc2V0KFsi
dGVhcmRvd24iXSkgICAjIHVuLXBhdXNlcyB0aGUgSW5zdHJ1bWVudAorICAgIGRvX3RlYXJkb3du
KCkKKyIiIgorCitjbGFzcyBOdWxsSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBzZXQoc2Vs
Ziwgc3RhY2spOgorICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgdGFzayB0byBzdGFjaworCisg
ICAgICAgIDpwYXJhbSBzdGFjazogQSBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIGN1cnJl
bnQgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgaW50ZXJwcmV0ZWQgbGlr
ZSBhIHN0YWNrIHRyYWNlIHNvIHRoYXQgWyJmb28iXSBhbmQKKyAgICAgICAgICAgICAgICAgICAg
ICBbImZvbyIsICJiYXIiXSBib3RoIHNob3cgdXAgYXMgZGVzY2VuZGFudHMgb2YgImZvbyIKKyAg
ICAgICAgIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAg
IiIiU3RvcCByZWNvcmRpbmcgYSB0YXNrIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gVGhpcyBpcyB1
c2VmdWwgaWYgdGhlIHRocmVhZAorICAgICAgICBpcyBwdXJlbHkgd2FpdGluZyBvbiB0aGUgcmVz
dWx0cyBvZiBvdGhlciB0aHJlYWRzIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVy
X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgSW5zdHJ1bWVudFdy
aXRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6CisgICAgICAgIHNl
bGYucXVldWUgPSBxdWV1ZQorCisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgIHN0
YWNrLmluc2VydCgwLCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQorICAgICAgICBz
dGFjayA9IHNlbGYuX2NoZWNrX3N0YWNrKHN0YWNrKQorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgo
InNldCIsIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgc3Rh
Y2spKQorCisgICAgZGVmIHBhdXNlKHNlbGYpOgorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInBh
dXNlIiwgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQsIHRpbWUudGltZSgpLCBOb25l
KSkKKworICAgIGRlZiBfY2hlY2tfc3RhY2soc2VsZiwgc3RhY2spOgorICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShzdGFjaywgKHR1cGxlLCBsaXN0KSkKKyAgICAgICAgcmV0dXJuIFtpdGVtLnJl
cGxhY2UoIiAiLCAiXyIpIGZvciBpdGVtIGluIHN0YWNrXQorCisKK2NsYXNzIEluc3RydW1lbnQo
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIi
SW5zdHJ1bWVudCB0aGF0IGNvbGxlY3RzIGRhdGEgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBz
dW1zIHRoZSB0aW1lIGluIGVhY2gKKyAgICAgICAgdGhyZWFkLiBUaGUgb3V0cHV0IGlzIGluIHRo
ZSBmb3JtYXQgcmVxdWlyZWQgYnkgZmxhbWVncmFwaC5wbCB0byBlbmFibGUgdmlzdWFsaXNhdGlv
bgorICAgICAgICBvZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHRhc2suCisKKyAgICAgICAgOnBh
cmFtIGZpbGVfcGF0aDogLSBUaGUgcGF0aCBvbiB3aGljaCB0byB3cml0ZSBpbnN0cnVtZW50IG91
dHB1dC4gQW55IGV4aXN0aW5nIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0
aGUgcGF0aCB3aWxsIGJlIG92ZXJ3cml0dGVuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBh
dGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5j
dXJyZW50ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNl
bGYudGhyZWFkID0gTm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgYXNz
ZXJ0IHNlbGYudGhyZWFkIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucXVldWUgaXMgTm9u
ZQorICAgICAgICBzZWxmLnF1ZXVlID0gUXVldWUoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRo
cmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYucnVuKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFy
dCgpCisgICAgICAgIHJldHVybiBJbnN0cnVtZW50V3JpdGVyKHNlbGYucXVldWUpCisKKyAgICBk
ZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5xdWV1ZS5w
dXQoKCJzdG9wIiwgTm9uZSwgdGltZS50aW1lKCksIE5vbmUpKQorICAgICAgICBzZWxmLnRocmVh
ZC5qb2luKCkKKyAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYucXVldWUg
PSBOb25lCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBrbm93bl9jb21tYW5kcyA9IHsi
c3RvcCIsICJwYXVzZSIsICJzZXQifQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAidyIp
IGFzIGY6CisgICAgICAgICAgICB0aHJlYWRfZGF0YSA9IHt9CisgICAgICAgICAgICB3aGlsZSBU
cnVlOgorICAgICAgICAgICAgICAgIGNvbW1hbmQsIHRocmVhZCwgdGltZV9zdGFtcCwgc3RhY2sg
PSBzZWxmLnF1ZXVlLmdldCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaW4ga25v
d25fY29tbWFuZHMKKworICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIGRvbmUgcmVjb3JkaW5n
LCBkdW1wIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGFsbCB0aHJlYWRzIHRvIHRoZSBmaWxlCisgICAg
ICAgICAgICAgICAgIyBiZWZvcmUgZXhpdGluZy4gT3RoZXJ3aXNlIGZvciBlaXRoZXIgJ3NldCcg
b3IgJ3BhdXNlJyB3ZSBvbmx5IG5lZWQgdG8gZHVtcAorICAgICAgICAgICAgICAgICMgaW5mb3Jt
YXRpb24gZnJvbSB0aGUgY3VycmVudCBzdGFjayAoaWYgYW55KSB0aGF0IHdhcyByZWNvcmRpbmcg
b24gdGhlIHJlcG9ydGluZworICAgICAgICAgICAgICAgICMgdGhyZWFkIChhcyB0aGF0IHN0YWNr
IGlzIG5vIGxvbmdlciBhY3RpdmUpLgorICAgICAgICAgICAgICAgIGl0ZW1zID0gW10KKyAgICAg
ICAgICAgICAgICBpZiBjb21tYW5kID09ICJzdG9wIjoKKyAgICAgICAgICAgICAgICAgICAgaXRl
bXMgPSB0aHJlYWRfZGF0YS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGVsaWYgdGhyZWFkIGlu
IHRocmVhZF9kYXRhOgorICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQodGhyZWFkX2Rh
dGEucG9wKHRocmVhZCkpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9zdGFjaywgc3RhcnRf
dGltZSBpbiBpdGVtczoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJWRcbiIgJSAo
IjsiLmpvaW4ob3V0cHV0X3N0YWNrKSwgaW50KDEwMDAgKiAodGltZV9zdGFtcCAtIHN0YXJ0X3Rp
bWUpKSkpCisKKyAgICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICJzZXQiOgorICAgICAgICAg
ICAgICAgICAgICB0aHJlYWRfZGF0YVt0aHJlYWRdID0gKHN0YWNrLCB0aW1lX3N0YW1wKQorICAg
ICAgICAgICAgICAgIGVsaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IGVhZTg1YjFmNjY2MWE2N2RmZjU5
ZWY3OGE5ZWQ2MjdlM2UzNjAzZDguLjMxYzU3ZTljYjczNGY3NDFlNDI3NWU3NGU4ZmNmN2NkMGFk
NGVlMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0xLDYgKzEsOCBAQAogaW1wb3J0
IG9zCi1mcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29s
bGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzLCB0ZXh0
X3R5cGUKK2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorCiAKIGZy
b20gLndwdG1hbmlmZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0
LmJhY2tlbmRzLmJhc2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtMTUsNiArMTcsNyBAQCBFYWNo
IFRlc3ROb2RlIGhhcyB6ZXJvIG9yIG1vcmUgU3VidGVzdE5vZGUgY2hpbGRyZW4sIG9uZSBmb3Ig
ZWFjaAoga25vd24gc3VidGVzdCBvZiB0aGUgdGVzdC4KICIiIgogCisKIGRlZiBkYXRhX2Nsc19n
ZXR0ZXIob3V0cHV0X25vZGUsIHZpc2l0ZWRfbm9kZSk6CiAgICAgIyB2aXNpdGVkX25vZGUgaXMg
aW50ZW50aW9uYWxseSB1bnVzZWQKICAgICBpZiBvdXRwdXRfbm9kZSBpcyBOb25lOgpAQCAtMjks
NyArMzIsNyBAQCBkZWYgZGF0YV9jbHNfZ2V0dGVyKG91dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUp
OgogZGVmIGJvb2xfcHJvcChuYW1lLCBub2RlKToKICAgICAiIiJCb29sZWFuIHByb3BlcnR5IiIi
CiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gbm9kZS5nZXQobmFtZSkKKyAgICAgICAgcmV0dXJu
IGJvb2wobm9kZS5nZXQobmFtZSkpCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1
cm4gTm9uZQogCkBAIC00NiwxOCArNDksMjggQEAgZGVmIGxpc3RfcHJvcChuYW1lLCBub2RlKToK
ICAgICAiIiJMaXN0IHByb3BlcnR5IiIiCiAgICAgdHJ5OgogICAgICAgICBsaXN0X3Byb3AgPSBu
b2RlLmdldChuYW1lKQotICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgYmFzZXN0cmlu
Zyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgogICAg
ICAgICAgICAgcmV0dXJuIFtsaXN0X3Byb3BdCiAgICAgICAgIHJldHVybiBsaXN0KGxpc3RfcHJv
cCkKICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgIHJldHVybiBbXQogCiAKK2RlZiBzdHJf
cHJvcChuYW1lLCBub2RlKToKKyAgICB0cnk6CisgICAgICAgIHByb3AgPSBub2RlLmdldChuYW1l
KQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICByZXR1cm4gcHJvcAorICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCiBkZWYgdGFncyhub2RlKToKICAgICAi
IiJTZXQgb2YgdGFncyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAg
dHJ5OgogICAgICAgICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0
YW5jZSh2YWx1ZSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVl
LCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZX0KICAgICAgICAgcmV0dXJu
IHNldCh2YWx1ZSkKICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC02Niw3ICs3OSw3IEBAIGRlZiB0
YWdzKG5vZGUpOgogCiBkZWYgcHJlZnMobm9kZSk6CiAgICAgZGVmIHZhbHVlKGluaV92YWx1ZSk6
Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAg
ICAgIGlmIGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0
dXJuIHR1cGxlKHByZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUu
c3BsaXQoJzonLCAxKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdGhpcyBzaG91bGQg
YmUgdGhpbmdzIGxpa2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3Qn
CkBAIC03NCw3ICs4Nyw3IEBAIGRlZiBwcmVmcyhub2RlKToKIAogICAgIHRyeToKICAgICAgICAg
bm9kZV9wcmVmcyA9IG5vZGUuZ2V0KCJwcmVmcyIpCi0gICAgICAgIGlmIHR5cGUobm9kZV9wcmVm
cykgaW4gKHN0ciwgdW5pY29kZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9wcmVmcywg
dGV4dF90eXBlKToKICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShub2RlX3ByZWZzKSkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShpdGVtKSBmb3IgaXRlbSBp
biBub2RlX3ByZWZzKQpAQCAtODYsNyArOTksNyBAQCBkZWYgcHJlZnMobm9kZSk6CiBkZWYgc2V0
X3Byb3AobmFtZSwgbm9kZSk6CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5n
ZXQobmFtZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmljb2Rl
KSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAgICAg
ICAgICAgIHJ2ID0ge25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9
IHNldChub2RlX2l0ZW1zKQpAQCAtOTksNyArMTEyLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5v
ZGUpOgogICAgIHJ2ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdl
dCgibGVhay10aHJlc2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChz
dHIsIHVuaWNvZGUpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0ZXh0X3R5
cGUpOgogICAgICAgICAgICAgbm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQogICAgICAgICBmb3Ig
aXRlbSBpbiBub2RlX2l0ZW1zOgogICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJz
cGxpdCgiOiIsIDEpCkBAIC0xNTYsNyArMTY5LDcgQEAgZGVmIGZ1enp5X3Byb3Aobm9kZSk6CiAg
ICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICB2YWx1ZSA9IFt2YWx1
ZV0KICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRl
bSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0ZXh0
X3R5cGUpOgogICAgICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICBwYXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTI3OSw2ICsyOTIsMTAg
QEAgY2xhc3MgRXhwZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhz
ZWxmKToKICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgbHNhbl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1k
aXNhYmxlZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0z
MDcsNiArMzI0LDEwIEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAg
ICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICByZXR1cm4gbGlzdF9wcm9w
KCJleHBlY3RlZCIsIHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGltcGxlbWVu
dGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBsZW1lbnRh
dGlvbi1zdGF0dXMiLCBzZWxmKQorCiAKIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0
SXRlbSk6CiAgICAgQHByb3BlcnR5CkBAIC0zMzcsNiArMzU4LDEwIEBAIGNsYXNzIERpcmVjdG9y
eU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gcHJlZnMoc2VsZikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVk
KHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikK
KwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZXRfcHJvcCgibHNhbi1hbGxvd2VkIiwgc2VsZikKQEAgLTM1Nyw2ICszODIsMTAgQEAg
Y2xhc3MgRGlyZWN0b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgZnV6enkoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgaW1wbGVtZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3By
b3AoImltcGxlbWVudGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgVGVzdE5vZGUoTWFu
aWZlc3RJdGVtKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgpAQCAt
NDE0LDYgKzQ0MywxMCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBw
cmVmcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgbHNhbl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgi
bHNhbi1kaXNhYmxlZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxv
d2VkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYp
CkBAIC00NDIsNiArNDc1LDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAgICAg
ZGVmIGtub3duX2ludGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgi
ZXhwZWN0ZWQiLCBzZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRh
dGlvbl9zdGF0dXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRp
b24tc3RhdHVzIiwgc2VsZikKKwogICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6CiAgICAgICAg
ICIiIkFkZCBhIHN1YnRlc3QgdG8gdGhlIGN1cnJlbnQgdGVzdAogCkBAIC00NzgsNyArNTE1LDcg
QEAgZGVmIGdldF9tYW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBy
dW5faW5mbyk6CiAgICAgIiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVk
X3BhdGgobWV0YWRhdGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBv
cGVuKG1hbmlmZXN0X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRo
LCAicmIiKSBhcyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWRhdGFfY2xzX2dldHRlciwKQEAgLTQ5
Nyw3ICs1MzQsNyBAQCBkZWYgZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLCBydW5faW5mbyk6CiAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMgc2hvdWxkIGJlIGNvbXB1dGVkLgogICAgICIiIgogICAg
IHRyeToKLSAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3Blbihw
YXRoLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IERpcmVjdG9y
eU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggZDMwMjgzMWE1N2FiYmFhZGQ3
NWZlNDllMDk0NDgyZGMxNDIyM2VhMy4uNzliNWIxOWIzYTNmNjE3ZTVkZDQwMTE4MDQyZGEwYjNl
YThlNDExNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDYgKzYsNyBAQCBiZSBpbmNs
dWRlZCBvciBleGNsdWRlZC4KICIiIgogaW1wb3J0IGdsb2IKIGltcG9ydCBvcworZnJvbSBzaXgg
aW1wb3J0IGl0ZXJpdGVtcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxw
YXJzZSwgdXJsc3BsaXQKIAogZnJvbSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUK
QEAgLTk0LDcgKzk1LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAg
ICAgICAgIGlmIHBhdGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBwYXRoczoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVz
dF9tYW5pZmVzdHMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBk
YXRhIGluIGl0ZXJpdGVtcyh0ZXN0X21hbmlmZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBh
dGgocGF0aCwgZGF0YVsidGVzdHNfcGF0aCJdKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRv
ciA9IG1hbmlmZXN0Lml0ZXJwYXRoIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGVsc2UgbWFuaWZl
c3QuaXRlcmRpcgpAQCAtMTUwLDUgKzE1MSw1IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5p
ZmVzdEl0ZW0pOgogCiAKIGRlZiBnZXRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCk6Ci0gICAgd2l0
aCBvcGVuKG1hbmlmZXN0X3BhdGgpIGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgs
ICJyYiIpIGFzIGY6CiAgICAgICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxlKGYsIGRhdGFf
Y2xzX2dldHRlcj1sYW1iZGEgeCwgeTogSW5jbHVkZU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRl
LnB5CmluZGV4IGFmOWFmMThkOTA3MTVkNDNiYmNkMmFlNDdjZTc2Mjc1YmIwZTE1NzcuLjEyOTQ1
N2IzZmQxMjcwZGM2NjAyOWQzZWE4NzNkMzUzNzE0YWE2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9tYW5pZmVzdHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUu
cHkKQEAgLTMsNyArMyw3IEBAIGltcG9ydCBvcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNl
IGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0
dXBsZSwgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4
IGltcG9ydCBpdGVya2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQg
aW50ZWdlcl90eXBlcywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcywgc3RyaW5nX3R5
cGVzLCB0ZXh0X3R5cGUKIAogZnJvbSAud3B0bWFuaWZlc3QgaW1wb3J0IHNlcmlhbGl6ZQogZnJv
bSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJp
bmFyeUV4cHJlc3Npb25Ob2RlLApAQCAtNDExLDcgKzQxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBk
YXRlKG9iamVjdCk6CiAgICAgICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICAgICAgIGlmIGRp
c2FibGVfaW50ZXJtaXR0ZW50OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5j
aGlsZHJlblswXSBpZiBlLmNvbmQgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbXNnID0gZGlz
YWJsZV9pbnRlcm1pdHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0
ciwgdW5pY29kZSkpIGVsc2UgInVuc3RhYmxlIgorICAgICAgICAgICAgICAgIG1zZyA9IGRpc2Fi
bGVfaW50ZXJtaXR0ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIHN0cmlu
Z190eXBlcysodGV4dF90eXBlLCkpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNl
bGYubm9kZS5zZXQoImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAg
c2VsZi5ub2RlLm5ld19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC01MTMs
NyArNTEzLDcgQEAgY2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgIHRv
cF9sZXZlbF9wcm9wcywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5ub2RlLnJvb3QucnVuX2luZm9f
cHJvcGVydGllcwogICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVs
X3Byb3BzKQogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJv
cHMpOgotICAgICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChkZXBlbmRlbnRf
cHJvcHMpCisgICAgICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAg
ICAgICAgICAgICBmb3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAg
ICAgICAgICBpZiAoKG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9w
ZXJ0aWVzKSBhbmQKICAgICAgICAgICAgICAgICAgICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRp
b25bY29uZGl0aW9uXSkpOgpAQCAtNzc0LDcgKzc3NCw3IEBAIGNsYXNzIEFwcGVuZE9ubHlMaXN0
VXBkYXRlKFByb3BlcnR5VXBkYXRlKToKICAgICAgICAgZm9yIGl0ZW0gaW4gbmV3OgogICAgICAg
ICAgICAgaWYgaXRlbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICAgICAgcnYuYWRk
KGl0ZW0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAg
LTg5NywxMCArODk3LDEwIEBAIGRlZiBtYWtlX2V4cHIocHJvcF9zZXQsIHJocyk6CiAKIAogZGVm
IG1ha2Vfbm9kZSh2YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxv
bmcpOgorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgog
ICAgICAgICBub2RlID0gTnVtYmVyTm9kZSh2YWx1ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGlu
IChzdHIsIHVuaWNvZGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh1bmljb2RlKHZhbHVl
KSkKKyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUg
PSBTdHJpbmdOb2RlKHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAi
X19pdGVyX18iKToKICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0g
aW4gdmFsdWU6CkBAIC05MDksMTAgKzkwOSwxMCBAQCBkZWYgbWFrZV9ub2RlKHZhbHVlKToKIAog
CiBkZWYgbWFrZV92YWx1ZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBpbiAoaW50
LCBmbG9hdCwgbG9uZyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90eXBlcyso
ZmxvYXQsKSk6CiAgICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBl
KHZhbHVlKSBpbiAoc3RyLCB1bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh1bmlj
b2RlKHZhbHVlKSkKKyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAg
ICAgIG5vZGUgPSBWYWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIo
dmFsdWUsICJfX2l0ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAgICBm
b3IgaXRlbSBpbiB2YWx1ZToKQEAgLTkzMSw3ICs5MzEsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1l
dGFkYXRhX3Jvb3QsIHRlc3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVw
ZGF0ZQogICAgIDpwYXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3Rz
IGluIHRoaXMgbWFuaWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0
ZWRfcGF0aChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgotICAgICAgICB3aXRo
IG9wZW4obWFuaWZlc3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3Bh
dGgsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBydiA9IGNvbXBpbGUoZiwgdGVzdF9wYXRoLCB1
cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19wcm9wZXJ0aWVzLCB1
cGRhdGVfaW50ZXJtaXR0ZW50LCByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgIGV4Y2VwdCBJT0Vy
cm9yOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L21ldGFkYXRhLnB5CmluZGV4IGMzMjhkY2VmYTcyNTNkZGVhOTUyNTQ5YzcwMjcyM2U5OGI0Y2Fk
YzQuLmRmMzFhYzQwZGU4YjhlZTcwODEzYzNiMmUwM2QxODY1ZjY3MmUyOWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9tZXRhZGF0YS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkK
QEAgLTEsMTAgKzEsMTIgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24K
IGltcG9ydCBhcnJheQogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0
dXJlZGxvZwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IGludGVybgorZnJvbSBzaXggaW1wb3J0IGVu
c3VyZV9zdHIsIGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0
ZXh0X3R5cGUKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCiAKIGZyb20gLiBp
bXBvcnQgbWFuaWZlc3R1cGRhdGUKIGZyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgpAQCAtNDMsMTEg
KzQ1LDExIEBAIGNsYXNzIFJ1bkluZm8ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuY2Fu
b25pY2FsX3JlcHIgPT0gb3RoZXIuY2Fub25pY2FsX3JlcHIKIAogICAgIGRlZiBpdGVyaXRlbXMo
c2VsZik6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToK
KyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CiAgICAgICAg
ICAgICB5aWVsZCBrZXksIHZhbHVlCiAKICAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBsaXN0KHNlbGYuaXRlcml0ZW1zKCkpCisgICAgICAgIHJldHVybiBsaXN0KGl0ZXJpdGVt
cyhzZWxmKSkKIAogCiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3Qs
IGxvZ19maWxlX25hbWVzLApAQCAtMTI3LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5n
ZXMobWFuaWZlc3RzLCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hh
bmdlZCA9IHNldChmaWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAg
ICBmb3IgbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICBmb3Ig
bWFuaWZlc3QsIHBhdGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgogICAgICAgICBpZiBwYXRo
c1sidXJsX2Jhc2UiXSA9PSAiLyI6CiAgICAgICAgICAgICByb290X21hbmlmZXN0ID0gbWFuaWZl
c3QKICAgICAgICAgICAgIGJyZWFrCkBAIC0xOTgsNyArMjAwLDcgQEAgY2xhc3MgSW50ZXJuZWRE
YXRhKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxm
KToKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CisgICAg
ICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CiAgICAgICAgICAgICB5
aWVsZCBzZWxmLmdldChpKQogCiAKQEAgLTIzOCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQo
ZGF0YSk6CiBkZWYgdW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEs
IGludCk6CiAgICAgICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0g
ICAgaWYgaXNpbnN0YW5jZShkYXRhLCB1bmljb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEs
IHRleHRfdHlwZSk6CiAgICAgICAgIHJldHVybiAoZGF0YSwgTm9uZSkKICAgICAjIFVucGFjayBt
dWx0aXBsZSBzdGF0dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNlZCBpbiB0aGUgUmVzdWx0cyBu
YW1lZCB0dXBsZSBiZWxvdywKICAgICAjIHNlcGFyYXRpbmcgYHN0YXR1c2AgYW5kIGBrbm93bl9p
bnRlcm1pdHRlbnRgLgpAQCAtMjU3LDcgKzI1OSw3IEBAIGRlZiBsb2FkX3Rlc3RfZGF0YSh0ZXN0
X3BhdGhzKToKICAgICBtYW5pZmVzdHMgPSBtYW5pZmVzdF9sb2FkZXIubG9hZCgpCiAKICAgICBp
ZF90ZXN0X21hcCA9IHt9Ci0gICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0
cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1z
KG1hbmlmZXN0cyk6CiAgICAgICAgIGlkX3Rlc3RfbWFwLnVwZGF0ZShjcmVhdGVfdGVzdF90cmVl
KHBhdGhzWyJtZXRhZGF0YV9wYXRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfbWFuaWZlc3QpKQogICAgIHJldHVybiBpZF90ZXN0X21hcApAQCAt
Mjg1LDEwICsyODcsMTAgQEAgZGVmIHVwZGF0ZV9yZXN1bHRzKGlkX3Rlc3RfbWFwLAogICAgICAg
ICAgICAgICAgICAgIGRpc2FibGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVu
dCk6Ci0gICAgdGVzdF9maWxlX2l0ZW1zID0gc2V0KGlkX3Rlc3RfbWFwLml0ZXJ2YWx1ZXMoKSkK
KyAgICB0ZXN0X2ZpbGVfaXRlbXMgPSBzZXQoaXRlcnZhbHVlcyhpZF90ZXN0X21hcCkpCiAKICAg
ICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3Rf
Y2xzIGluIHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRl
c3RfdHlwZSwgdGVzdF9jbHMgaW4gaXRlcml0ZW1zKHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMp
OgogICAgICAgICBpZiB0ZXN0X2Nscy5yZXN1bHRfY2xzOgogICAgICAgICAgICAgZGVmYXVsdF9l
eHBlY3RlZF9ieV90eXBlWyh0ZXN0X3R5cGUsIEZhbHNlKV0gPSB0ZXN0X2Nscy5yZXN1bHRfY2xz
LmRlZmF1bHRfZXhwZWN0ZWQKICAgICAgICAgaWYgdGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xz
OgpAQCAtMzI0LDggKzMyNiwxMSBAQCBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRhX3Bh
dGgsIGV4cGVjdGVkKToKICAgICAgICAgdG1wX3BhdGggPSBwYXRoICsgIi50bXAiCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHdpdGggb3Blbih0bXBfcGF0aCwgIndiIikgYXMgZjoKLSAgICAg
ICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0cikKLSAgICAgICAgICAgIG9zLnJlbmFtZSh0
bXBfcGF0aCwgcGF0aCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0ci5lbmNv
ZGUoInV0ZjgiKSkKKyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgor
ICAgICAgICAgICAgICAgIG9zLnJlcGxhY2UodG1wX3BhdGgsIHBhdGgpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0aCkKICAgICAgICAg
ZXhjZXB0IChFeGNlcHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgIHRyeToK
ICAgICAgICAgICAgICAgICBvcy51bmxpbmsodG1wX3BhdGgpCkBAIC00MjYsNyArNDMxLDcgQEAg
Y2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJs
c2FuX2xlYWsiXShpdGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3ps
ZWFrIiwge30pCi0gICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBtb3psZWFrX2RhdGEu
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMo
bW96bGVha19kYXRhKToKICAgICAgICAgICAgIGZvciBrZXksIGFjdGlvbiBpbiBbKCJvYmplY3Rz
IiwgIm1vemxlYWtfb2JqZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgi
dG90YWwiLCAibW96bGVha190b3RhbCIpXToKICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBz
Y29wZV9kYXRhLmdldChrZXksIFtdKToKQEAgLTQzOCw3ICs0NDMsNyBAQCBjbGFzcyBFeHBlY3Rl
ZFVwZGF0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVy
bi5zdG9yZShSdW5JbmZvKGRhdGFbInJ1bl9pbmZvIl0pKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQo
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29k
ZSgidXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVz
dCJdKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5pZF90ZXN0X21hcFt0ZXN0X2lk
XQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00NDgsOCArNDUzLDggQEAgY2xhc3MgRXhw
ZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lk
XSA9IHNldCgpCiAKICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRl
c3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQotICAgICAgICBzdWJ0
ZXN0ID0gaW50ZXJuKGRhdGFbInN1YnRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVz
dF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCisgICAgICAgIHN1YnRlc3Qg
PSBpbnRlcm4oZW5zdXJlX3N0cihkYXRhWyJzdWJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEg
PSBzZWxmLmlkX3Rlc3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMg
Tm9uZToKICAgICAgICAgICAgIHJldHVybgpAQCAtNDY2LDcgKzQ3MSw3IEBAIGNsYXNzIEV4cGVj
dGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICBpZiBkYXRhWyJzdGF0dXMiXSA9PSAiU0tJUCI6
CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRl
c3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3Ry
KGRhdGFbInRlc3QiXSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0
KHRlc3RfaWQpCiAgICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0
dXJuCkBAIC00NzksNyArNDg0LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAg
ICAgICAgIGRlbCBzZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0KIAogICAgIGRlZiBhc3NlcnRp
b25fY291bnQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVz
dCJdLmVuY29kZSgidXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIo
ZGF0YVsidGVzdCJdKSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5pZF90ZXN0X21hcC5nZXQo
dGVzdF9pZCkKICAgICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1
cm4KQEAgLTQ5MCwxMiArNDk1LDE1IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgog
CiAgICAgZGVmIHRlc3RfZm9yX3Njb3BlKHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9
IGRhdGEuZ2V0KCJzY29wZSIsICIvIikKLSAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGgu
am9pbihkaXJfcGF0aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29k
ZSgidXRmOCIpKQorICAgICAgICBkaXJfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihvcy5wYXRoLmpv
aW4oZGlyX3BhdGgsICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkpCiAgICAg
ICAgIGlmIGRpcl9pZC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICBkaXJfaWQgPSBkaXJf
aWRbMTpdCiAgICAgICAgIHJldHVybiBkaXJfaWQsIHNlbGYuaWRfdGVzdF9tYXBbZGlyX2lkXQog
CiAgICAgZGVmIGxzYW5fbGVhayhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUi
XSA9PSAiLyI6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIGxzYW4g
YW5ub3RhdGlvbnMgZm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAg
IGRpcl9pZCwgdGVzdF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICB0
ZXN0X2RhdGEuc2V0KGRpcl9pZCwgTm9uZSwgImxzYW4iLAogICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucnVuX2luZm8sIChkYXRhWyJmcmFtZXMiXSwgZGF0YS5nZXQoImFsbG93ZWRfbWF0Y2gi
KSkpCkBAIC01MDMsNiArNTExLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICB0ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96
bGVha19vYmplY3Qoc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8i
OgorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90
YXRpb25zIGZvciByb290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJf
aWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9k
YXRhLnNldChkaXJfaWQsIE5vbmUsICJsZWFrLW9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5ydW5faW5mbywgKCIlczolcyIsIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbIm5hbWUi
XSksCkBAIC01MTEsNiArNTIyLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICB0ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96
bGVha190b3RhbChzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6
CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIG1vemxlYWsgYW5ub3Rh
dGlvbnMgZm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRh
dGFbImJ5dGVzIl06CiAgICAgICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9m
b3Jfc2NvcGUoZGF0YSkKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAi
bGVhay10aHJlc2hvbGQiLApAQCAtNTI5LDMxICs1NDMsMzAgQEAgZGVmIGNyZWF0ZV90ZXN0X3Ry
ZWUobWV0YWRhdGFfcGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgYXNzZXJ0IGFsbF90eXBlcyA+
IGV4Y2x1ZGVfdHlwZXMKICAgICBpbmNsdWRlX3R5cGVzID0gYWxsX3R5cGVzIC0gZXhjbHVkZV90
eXBlcwogICAgIGZvciBpdGVtX3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gdGVzdF9tYW5pZmVz
dC5pdGVydHlwZXMoKmluY2x1ZGVfdHlwZXMpOgotICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRl
c3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihpdGVtX3R5cGUu
ZW5jb2RlKCJ1dGY4IikpLAorICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShp
bnRlcm4oZW5zdXJlX3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihlbnN1cmVfc3RyKGl0ZW1fdHlwZSkpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQogICAgICAgICBmb3IgdGVzdCBpbiB0
ZXN0czoKLSAgICAgICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybih0ZXN0LmlkLmVuY29kZSgidXRm
OCIpKV0gPSB0ZXN0X2ZpbGVfZGF0YQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKGVu
c3VyZV9zdHIodGVzdC5pZCkpXSA9IHRlc3RfZmlsZV9kYXRhCiAKLSAgICAgICAgZGlyX3BhdGgg
PSBvcy5wYXRoLnNwbGl0KHRlc3RfcGF0aClbMF0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQor
ICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCiAgICAgICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBkaXJfcGF0aDoKLSAgICAgICAgICAgICAgICBkaXJf
aWQgPSBkaXJfcGF0aCArICIvX19kaXJfXyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgZGlyX2lkID0gIl9fZGlyX18iCi0gICAgICAgICAgICBkaXJfaWQgPSBpbnRlcm4oKHRl
c3RfbWFuaWZlc3QudXJsX2Jhc2UgKyBkaXJfaWQpLmxzdHJpcCgiLyIpLmVuY29kZSgidXRmOCIp
KQotICAgICAgICAgICAgaWYgZGlyX2lkIG5vdCBpbiBpZF90ZXN0X21hcDoKLSAgICAgICAgICAg
ICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51
cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbXSkKLSAgICAgICAgICAgICAgICBpZF90ZXN0X21hcFtkaXJfaWRdID0g
dGVzdF9maWxlX2RhdGEKLSAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aCBvciBkaXJfcGF0aCBp
biBpZF90ZXN0X21hcDoKKyAgICAgICAgICAgIGRpcl9tZXRhX3BhdGggPSBvcy5wYXRoLmpvaW4o
ZGlyX3BhdGgsICJfX2Rpcl9fIikKKyAgICAgICAgICAgIGRpcl9pZCA9ICh0ZXN0X21hbmlmZXN0
LnVybF9iYXNlICsgZGlyX21ldGFfcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpKS5sc3Ry
aXAoIi8iKQorICAgICAgICAgICAgaWYgZGlyX2lkIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRh
KGludGVybihlbnN1cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlyX21ldGFfcGF0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGly
X2lkXSA9IHRlc3RfZmlsZV9kYXRhCisgICAgICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGly
bmFtZShkaXJfcGF0aCkKKyAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aDoKICAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICAgICAgZGlyX3BhdGggPSBkaXJfcGF0aC5yc3BsaXQoIi8iLCAx
KVswXSBpZiAiLyIgaW4gZGlyX3BhdGggZWxzZSAiIgogCiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFw
CiAKQEAgLTYxNCw3ICs2MjcsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAg
ICAgc2VsZi5pdGVtX3R5cGUgPSBpdGVtX3R5cGUKICAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0
ZXN0X3BhdGgKICAgICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFfcGF0aAotICAg
ICAgICBzZWxmLnRlc3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIpKSBmb3IgaXRl
bSBpbiB0ZXN0c30KKyAgICAgICAgc2VsZi50ZXN0cyA9IHtpbnRlcm4oZW5zdXJlX3N0cihpdGVt
LmlkKSkgZm9yIGl0ZW0gaW4gdGVzdHN9CiAgICAgICAgIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZSA9
IEZhbHNlCiAgICAgICAgIHNlbGYuZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRp
Y3QoUGFja2VkUmVzdWx0TGlzdCkpCiAKQEAgLTY1NSwxMSArNjY4LDExIEBAIGNsYXNzIFRlc3RG
aWxlRGF0YShvYmplY3QpOgogICAgICAgICAjIFJldHVybiBzdWJ0ZXN0IG5vZGVzIHByZXNlbnQg
aW4gdGhlIGV4cGVjdGVkIGZpbGUsIGJ1dCBtaXNzaW5nIGZyb20gdGhlIGRhdGEKICAgICAgICAg
cnYgPSBbXQogCi0gICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBzZWxmLmRhdGEuaXRl
cml0ZW1zKCk6Ci0gICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZC5k
ZWNvZGUoInV0ZjgiKSkKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVt
cyhzZWxmLmRhdGEpOgorICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KGVuc3Vy
ZV90ZXh0KHRlc3RfaWQpKQogICAgICAgICAgICAgaWYgbm90IHRlc3Q6CiAgICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNvZGUo
InV0ZjgiKSBmb3IgaXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90IE5v
bmUpCisgICAgICAgICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGVuc3VyZV90ZXh0KGl0ZW0pIGZv
ciBpdGVtIGluIGl0ZXJrZXlzKHN1YnRlc3RzKSBpZiBpdGVtIGlzIG5vdCBOb25lKQogICAgICAg
ICAgICAgbWlzc2luZ19zdWJ0ZXN0cyA9IHNldCh0ZXN0LnN1YnRlc3RzLmtleXMoKSkgLSBzZWVu
X3N1YnRlc3RzCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtaXNzaW5nX3N1YnRlc3RzOgogICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX3N1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KGl0ZW0pCkBA
IC02NzMsNiArNjg2LDI5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAg
IHJldHVybiBydgogCisgICAgZGVmIGZpbHRlcl91bmtub3duX3Byb3BzKHNlbGYsIHVwZGF0ZV9w
cm9wZXJ0aWVzLCBzdWJ0ZXN0cyk6CisgICAgICAgICMgUmVtb3ZlIHN1YnRlc3RzIHdoaWNoIGhh
dmUgc29tZSBjb25kaXRpb25zIHRoYXQgYXJlbid0IGluIHVwZGF0ZV9wcm9wZXJ0aWVzCisgICAg
ICAgICMgc2luY2UgcmVtb3ZpbmcgdGhlc2UgbWF5IGJlIGluYXBwcm9wcmlhdGUKKyAgICAgICAg
dG9wX2xldmVsX3Byb3BzLCBkZXBlbmRlbnRfcHJvcHMgPSB1cGRhdGVfcHJvcGVydGllcworICAg
ICAgICBhbGxfcHJvcGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCisgICAgICAgIGZvciBp
dGVtIGluIGl0ZXJ2YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKKyAgICAgICAgICAgIGFsbF9wcm9w
ZXJ0aWVzIHw9IHNldChpdGVtKQorCisgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgZm9y
IHN1YnRlc3QgaW4gc3VidGVzdHM6CisgICAgICAgICAgICBpbmNsdWRlID0gVHJ1ZQorICAgICAg
ICAgICAgZm9yIGtleSwgXyBpbiBzdWJ0ZXN0Lml0ZXJfcHJvcGVydGllcygpOgorICAgICAgICAg
ICAgICAgIGNvbmRpdGlvbnMgPSBzdWJ0ZXN0LmdldF9jb25kaXRpb25zKGtleSkKKyAgICAgICAg
ICAgICAgICBmb3IgY29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KGFsbF9wcm9wZXJ0aWVzKToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgaW5jbHVkZToKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGluY2x1ZGU6CisgICAgICAgICAgICAgICAg
ZmlsdGVyZWQuYXBwZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCiAgICAg
ZGVmIHVwZGF0ZShzZWxmLCBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUsIHVwZGF0ZV9wcm9wZXJ0
aWVzLAogICAgICAgICAgICAgICAgZnVsbF91cGRhdGU9RmFsc2UsIGRpc2FibGVfaW50ZXJtaXR0
ZW50PU5vbmUsIHVwZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsCiAgICAgICAgICAgICAgICByZW1v
dmVfaW50ZXJtaXR0ZW50PUZhbHNlKToKQEAgLTY4Nyw2ICs3MjMsNyBAQCBjbGFzcyBUZXN0Rmls
ZURhdGEob2JqZWN0KToKIAogICAgICAgICBpZiBmdWxsX3VwZGF0ZToKICAgICAgICAgICAgIG9y
cGhhbnMgPSBzZWxmLm9ycGhhbl9zdWJ0ZXN0cyhleHBlY3RlZCkKKyAgICAgICAgICAgIG9ycGhh
bnMgPSBzZWxmLmZpbHRlcl91bmtub3duX3Byb3BzKHVwZGF0ZV9wcm9wZXJ0aWVzLCBvcnBoYW5z
KQogCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBvcnBo
YW5zOgogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtNzA0LDkgKzc0MSw5IEBAIGNsYXNzIFRl
c3RGaWxlRGF0YShvYmplY3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVk
LmdldF90ZXN0KHRlc3RfaWQpCiAgICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRd
ID0gdGVzdF9leHBlY3RlZAogCi0gICAgICAgIGZvciB0ZXN0X2lkLCB0ZXN0X2RhdGEgaW4gc2Vs
Zi5kYXRhLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgdGVzdF9pZCA9IHRlc3RfaWQuZGVjb2Rl
KCJ1dGY4IikKLSAgICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gdGVz
dF9kYXRhLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIGl0
ZXJpdGVtcyhzZWxmLmRhdGEpOgorICAgICAgICAgICAgdGVzdF9pZCA9IGVuc3VyZV9zdHIodGVz
dF9pZCkKKyAgICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gaXRlcml0
ZW1zKHRlc3RfZGF0YSk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZvLCB2YWx1
ZSBpbiByZXN1bHRzX2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGRp
cmVjdG9yeSBtZXRhZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5v
bmUgYW5kIHRlc3RfaWQuZW5kc3dpdGgoIl9fZGlyX18iKToKQEAgLTcyMiw4ICs3NTksNyBAQCBj
bGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVz
dF9pZCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRl
c3RfZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc3VidGVzdF9pZCwgc3RyKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3VidGVzdF9pZCA9IGVuc3VyZV90ZXh0KHN1YnRlc3RfaWQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZC5nZXRf
c3VidGVzdChzdWJ0ZXN0X2lkKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHByb3AgPT0gInN0
YXR1cyI6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9wcm9jZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMmI4OTRjYjc0ZDRlYzA5MTkzMWJmNDE3YzkyZDVi
ZWEwNzFjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQpAQCAt
MCwwICsxLDExIEBACitpbXBvcnQgc3lzCisKK2ltcG9ydCBzaXgKKworCitkZWYgY2FzdF9lbnYo
ZW52KToKKyAgICAiIiJFbmNvZGUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgYXMgdGhlIGFw
cHJvcHJpYXRlIHR5cGUgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24KKyAgICBUaGlzIGFzc3VtZXMg
dGhhdCBhbGwgdGhlIGRhdGEgaXMgb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIFVURjgiIiIKKwor
ICAgIGVudl90eXBlID0gc2l4LmVuc3VyZV9iaW5hcnkgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8
IDMgZWxzZSBzaXguZW5zdXJlX3N0cgorICAgIHJldHVybiB7ZW52X3R5cGUoa2V5KTogZW52X3R5
cGUodmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHNpeC5pdGVyaXRlbXMoZW52KX0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQpp
bmRleCBlMzExNzA0MjcwOWY5OWY0ZTA0NDNkYzBkZmFmNTYxYWQwYjU0OGIwLi5hYmQ4NDA5NGJi
MzNkYmQxM2IzNTk0YTdhY2JlODQ2NzUxMmE5OWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
cHJvZHVjdHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDUgKzEsNiBA
QAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVt
cwogCiBmcm9tIC5icm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ0LDcgKzQ1LDcg
QEAgY2xhc3MgUHJvZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRp
cGxpZXIgPSBnZXRhdHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAg
ICAgICAgc2VsZi5leGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwg
Y2xzX25hbWUgaW4gZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRl
c3RfdHlwZSwgY2xzX25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgogICAgICAg
ICAgICAgY2xzID0gZ2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQogICAgICAgICAgICAgc2VsZi5l
eGVjdXRvcl9jbGFzc2VzW3Rlc3RfdHlwZV0gPSBjbHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggYzA2Zjdl
NWU5ZDZiMTBiNGU2MTljOTVhNjI0MTdlNTJhNTk2YmU1My4uM2Y4OTg5NzI5ZmRlMGVlNDVjZjc4
M2JjNjk4MzA3ZTM4Yzg0NGQ5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBvcnQg
aW8KIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1
bHRkaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzaXggaW1wb3J0IGl0
ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0
ZXJzIGltcG9ydCBKU09ORm9ybWF0dGVyCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vz
c19yZXN1bHRzKGxvZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQog
ICAgIHJlYWRlci5oYW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVz
dWx0cyA9IGhhbmRsZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0
cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1
bHRzKToKICAgICAgICAgaWYgaXNfaW5jb25zaXN0ZW50KHRlc3RbInN0YXR1cyJdLCBpdGVyYXRp
b25zKToKICAgICAgICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgTm9uZSwg
dGVzdFsic3RhdHVzIl0sIFtdKSkKLSAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBp
biB0ZXN0WyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3VidGVzdF9uYW1l
LCBzdWJ0ZXN0IGluIGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKICAgICAgICAgICAgIGlm
IGlzX2luY29uc2lzdGVudChzdWJ0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAgICAgICAg
ICAgICAgICAgaW5jb25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHN1
YnRlc3RbInN0YXR1cyJdLCBzdWJ0ZXN0WyJtZXNzYWdlcyJdKSkKIApAQCAtMjA4LDcgKzIwOSw3
IEBAIGRlZiB3cml0ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVy
PU5vbmUsIHVzZV9kZXRhaWxzPUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3RzIiBpZiBsZW4ocmVzdWx0cykgPiAxCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRlc3QiKSkK
IAotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBm
b3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYmFzZXVy
bCA9ICJodHRwOi8vdzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMi
IGluIG9zLnBhdGguc3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAg
ICAgICAgIGJhc2V1cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0y
MzYsNyArMjM3LDcgQEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVyYXRpb25z
LCBwcl9udW1iZXI9Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogCiAKIGRlZiBydW5fc3RlcChs
b2dnZXIsIGl0ZXJhdGlvbnMsIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFz
LCAqKmt3YXJncyk6Ci0gICAgaW1wb3J0IHdwdHJ1bm5lcgorICAgIGZyb20gLiBpbXBvcnQgd3B0
cnVubmVyCiAgICAga3dhcmdzID0gY29weS5kZWVwY29weShrd2FyZ3MpCiAKICAgICBpZiByZXN0
YXJ0X2FmdGVyX2l0ZXJhdGlvbjoKQEAgLTI3OCw3ICsyNzksNyBAQCBkZWYgZ2V0X3N0ZXBzKGxv
Z2dlciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBrd2FyZ3NfZXh0cmFzKToKICAgICBm
b3Iga3dhcmdzX2V4dHJhIGluIGt3YXJnc19leHRyYXM6CiAgICAgICAgIGlmIGt3YXJnc19leHRy
YToKICAgICAgICAgICAgIGZsYWdzX3N0cmluZyA9ICIgd2l0aCBmbGFncyAlcyIgJSAiICIuam9p
bigKLSAgICAgICAgICAgICAgICAiJXM9JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBrd2FyZ3NfZXh0
cmEuaXRlcml0ZW1zKCkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0g
aW4gaXRlcml0ZW1zKGt3YXJnc19leHRyYSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBm
bGFnc19zdHJpbmcgPSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IGZhNTRjYTM2MTU3NjMxOGNiMzVl
YzcxNmExYTE1OWJkYjUzMmU2YzguLjNhMjZlZmM1NTQyMTFhNTI0OGE3OTA5MDlkOTk4OTNhZmU5
ZmY2NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0bG9hZGVyLnB5CkBAIC01LDYgKzUsOCBAQCBmcm9tIGFiYyBpbXBvcnQgQUJD
TWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQog
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJv
Y2Vzc2luZyBpbXBvcnQgUXVldWUKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfYmluYXJ5LCBpdGVy
aXRlbXMKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1hbmlm
ZXN0aW5jbHVkZQogZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCkBAIC0xNSw2ICsxNyw3
IEBAIG1hbmlmZXN0ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93bmxvYWRfZnJv
bV9naXRodWIgPSBOb25lCiAKKwogZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogICAgICMgVGhp
cyByZWxpZXMgb24gYW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIGhhdmluZyBzZXQgdGhlIHN5cy5w
YXRoIGNvcnJlY3RseSA6KAogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBk
b3dubG9hZF9mcm9tX2dpdGh1YgpAQCAtMjQsMTIgKzI3LDEzIEBAIGRlZiBkb19kZWxheWVkX2lt
cG9ydHMoKToKIAogCiBjbGFzcyBUZXN0Q2h1bmtlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0b3RhbF9jaHVua3MsIGNodW5rX251bWJlcik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRvdGFsX2NodW5rcywgY2h1bmtfbnVtYmVyLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYu
dG90YWxfY2h1bmtzID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYuY2h1bmtfbnVtYmVyID0g
Y2h1bmtfbnVtYmVyCiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rX251bWJlciA8PSBzZWxmLnRv
dGFsX2NodW5rcwogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRf
bG9nZ2VyKCkKICAgICAgICAgYXNzZXJ0IHNlbGYubG9nZ2VyCisgICAgICAgIHNlbGYua3dhcmdz
ID0ga3dhcmdzCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFVuY2h1bmtl
ZChUZXN0Q2h1bmtlcik6CiAgICAgICAgIFRlc3RDaHVua2VyLl9faW5pdF9fKHNlbGYsICphcmdz
LCAqKmt3YXJncykKICAgICAgICAgYXNzZXJ0IHNlbGYudG90YWxfY2h1bmtzID09IDEKIAotICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBtYW5pZmVzdCk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1h
bmlmZXN0LCAqKmt3YXJncyk6CiAgICAgICAgIGZvciBpdGVtIGluIG1hbmlmZXN0OgogICAgICAg
ICAgICAgeWllbGQgaXRlbQogCkBAIC00OSw3ICs1Myw3IEBAIGNsYXNzIEhhc2hDaHVua2VyKFRl
c3RDaHVua2VyKToKICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBj
aHVua19pbmRleCA9IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQogICAgICAgICBmb3IgdGVzdF90eXBl
LCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNo
bGliLm1kNSh0ZXN0X3BhdGgpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGggPSBpbnQo
aGFzaGxpYi5tZDUoZW5zdXJlX2JpbmFyeSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAg
ICAgICAgICAgICBpZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAg
ICAgICAgICAgICAgeWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTYyLDgg
KzY2LDEzIEBAIGNsYXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToKICAgICAi
IiIKICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRl
eCA9IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQorICAgICAgICBkZXB0aCA9IHNlbGYua3dhcmdzLmdl
dCgiZGVwdGgiKQogICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1h
bmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShvcy5wYXRoLmRpcm5hbWUo
dGVzdF9wYXRoKSkuaGV4ZGlnZXN0KCksIDE2KQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAg
ICAgICAgICAgICAgaGFzaF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihvcy5wYXRoLmRpcm5hbWUo
dGVzdF9wYXRoKS5zcGxpdChvcy5wYXRoLnNlcCwgZGVwdGgpWzpkZXB0aF0pCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0
X3BhdGgpCisgICAgICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1KGVuc3VyZV9iaW5hcnkoaGFz
aF9wYXRoKSkuaGV4ZGlnZXN0KCksIDE2KQogICAgICAgICAgICAgaWYgaCAlIHNlbGYudG90YWxf
Y2h1bmtzID09IGNodW5rX2luZGV4OgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwg
dGVzdF9wYXRoLCB0ZXN0cwogCkBAIC0xMjQsNyArMTMzLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2Fk
ZXIob2JqZWN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAg
ICAgIGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgor
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMp
OgogICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSA9IHNlbGYubG9hZF9tYW5pZmVzdCh1cmxfYmFz
ZT11cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKipwYXRocykKICAgICAgICAgICAgIHBhdGhfZGF0YSA9IHsidXJsX2Jhc2UiOiB1cmxfYmFz
ZX0KQEAgLTE1OSw3ICsxNjgsMTAgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAg
ICAgICAgICAgICB0b3RhbF9jaHVua3M9MSwKICAgICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVy
PTEsCiAgICAgICAgICAgICAgICAgIGluY2x1ZGVfaHR0cHM9VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgc2tpcF90aW1lb3V0PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9xdWljPUZh
bHNlLAorICAgICAgICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgIHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNo
dW5rZXJfa3dhcmdzPU5vbmUpOgogCiAgICAgICAgIHNlbGYudGVzdF90eXBlcyA9IHRlc3RfdHlw
ZXMKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvCkBAIC0xNzAsMTYgKzE4MiwyMSBA
QCBjbGFzcyBUZXN0TG9hZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHMgPSBOb25lCiAg
ICAgICAgIHNlbGYuZGlzYWJsZWRfdGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYuaW5jbHVkZV9o
dHRwcyA9IGluY2x1ZGVfaHR0cHMKKyAgICAgICAgc2VsZi5pbmNsdWRlX3F1aWMgPSBpbmNsdWRl
X3F1aWMKICAgICAgICAgc2VsZi5za2lwX3RpbWVvdXQgPSBza2lwX3RpbWVvdXQKKyAgICAgICAg
c2VsZi5za2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyA9IHNraXBfaW1wbGVtZW50YXRpb25fc3Rh
dHVzCiAKICAgICAgICAgc2VsZi5jaHVua190eXBlID0gY2h1bmtfdHlwZQogICAgICAgICBzZWxm
LnRvdGFsX2NodW5rcyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9
IGNodW5rX251bWJlcgogCisgICAgICAgIGlmIGNodW5rZXJfa3dhcmdzIGlzIE5vbmU6CisgICAg
ICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuY2h1bmtlciA9IHsibm9u
ZSI6IFVuY2h1bmtlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNoIjogSGFzaENodW5r
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2hhc2giOiBEaXJlY3RvcnlIYXNoQ2h1
bmtlcn1bY2h1bmtfdHlwZV0odG90YWxfY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJl
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaHVua19udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjaHVua2VyX2t3
YXJncykKIAogICAgICAgICBzZWxmLl90ZXN0X2lkcyA9IE5vbmUKIApAQCAtMjA2LDcgKzIyMyw3
IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICBkZWYgbG9hZF9kaXJfbWV0YWRhdGEo
c2VsZiwgdGVzdF9tYW5pZmVzdCwgbWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKToKICAgICAgICAg
cnYgPSBbXQogICAgICAgICBwYXRoX3BhcnRzID0gb3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0aCku
c3BsaXQob3MucGF0aC5zZXApCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocGF0aF9wYXJ0
cykgKyAxKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6CiAg
ICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIG9zLnBhdGguc2Vw
LmpvaW4ocGF0aF9wYXJ0c1s6aV0pLCAiX19kaXJfXy5pbmkiKQogICAgICAgICAgICAgaWYgcGF0
aCBub3QgaW4gc2VsZi5kaXJlY3RvcnlfbWFuaWZlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYu
ZGlyZWN0b3J5X21hbmlmZXN0c1twYXRoXSA9IG1hbmlmZXN0ZXhwZWN0ZWQuZ2V0X2Rpcl9tYW5p
ZmVzdChwYXRoLApAQCAtMjM2LDcgKzI1Myw3IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToK
ICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1z
KQogCiAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3Rf
aXRlbXM6Ci0gICAgICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNl
W2l0ZXIodGVzdHMpLm5leHQoKS51cmxfYmFzZV0KKyAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUg
PSBtYW5pZmVzdHNfYnlfdXJsX2Jhc2VbbmV4dChpdGVyKHRlc3RzKSkudXJsX2Jhc2VdCiAgICAg
ICAgICAgICBtZXRhZGF0YV9wYXRoID0gc2VsZi5tYW5pZmVzdHNbbWFuaWZlc3RfZmlsZV1bIm1l
dGFkYXRhX3BhdGgiXQogCiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFk
YXRhID0gc2VsZi5sb2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFkYXRhX3BhdGgsIHRl
c3RfcGF0aCkKQEAgLTI1Miw4ICsyNjksMTIgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgog
ICAgICAgICAgICAgZW5hYmxlZCA9IG5vdCB0ZXN0LmRpc2FibGVkKCkKICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLmluY2x1ZGVfaHR0cHMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0g
PT0gImh0dHBzIjoKICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLmluY2x1ZGVfcXVpYyBhbmQgdGVzdC5lbnZpcm9ubWVudFsicXVpYyJdOgor
ICAgICAgICAgICAgICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5za2lw
X3RpbWVvdXQgYW5kIHRlc3QuZXhwZWN0ZWQoKSA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAg
ICAgZW5hYmxlZCA9IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLnNraXBfaW1wbGVtZW50YXRp
b25fc3RhdHVzIGFuZCB0ZXN0LmltcGxlbWVudGF0aW9uX3N0YXR1cygpIGluIHNlbGYuc2tpcF9p
bXBsZW1lbnRhdGlvbl9zdGF0dXM6CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAg
ICAgICAgICAgICBrZXkgPSAiZW5hYmxlZCIgaWYgZW5hYmxlZCBlbHNlICJkaXNhYmxlZCIKICAg
ICAgICAgICAgIHRlc3RzW2tleV1bdGVzdF90eXBlXS5hcHBlbmQodGVzdCkKIApAQCAtMjg0LDYg
KzMwNSwxMCBAQCBjbGFzcyBUZXN0U291cmNlKG9iamVjdCk6CiAgICAgZGVmIG1ha2VfcXVldWUo
Y2xzLCB0ZXN0cywgKiprd2FyZ3MpOiAgIyBub3FhOiBOODA1CiAgICAgICAgIHBhc3MKIAorICAg
IEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3
YXJncyk6ICAjIG5vcWE6IE44MDUKKyAgICAgICAgcGFzcworCiAgICAgQGNsYXNzbWV0aG9kCiAg
ICAgZGVmIGdyb3VwX21ldGFkYXRhKGNscywgc3RhdGUpOgogICAgICAgICByZXR1cm4geyJzY29w
ZSI6ICIvIn0KQEAgLTMyMiwxNCArMzQ3LDI1IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNv
dXJjZSk6CiAgICAgICAgICAgICB0ZXN0X3F1ZXVlLnB1dChpdGVtKQogICAgICAgICByZXR1cm4g
dGVzdF9xdWV1ZQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3VwKGNs
cywgdGVzdHMsICoqa3dhcmdzKToKKyAgICAgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkK
KyAgICAgICAgc3RhdGUgPSB7fQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICBmb3Ig
dGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGNscy5uZXdfZ3JvdXAoc3RhdGUsIHRlc3Qs
ICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2xzLmdyb3VwX21ldGFkYXRh
KHN0YXRlKVsnc2NvcGUnXQorICAgICAgICAgICAgZ3JvdXBzW2N1cnJlbnRdLmFwcGVuZCh0ZXN0
LmlkKQorICAgICAgICByZXR1cm4gZ3JvdXBzCisKIAogY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShU
ZXN0U291cmNlKToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRl
c3RzLCAqKmt3YXJncyk6CiAgICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHBy
b2Nlc3NlcyA9IGt3YXJnc1sicHJvY2Vzc2VzIl0KLSAgICAgICAgcXVldWVzID0gW2RlcXVlKFtd
KSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KLSAgICAgICAgbWV0YWRhdGFzID0gW2Nscy5n
cm91cF9tZXRhZGF0YShOb25lKSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAg
cXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQorICAgICAgICBt
ZXRhZGF0YXMgPSBbY2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nl
c3NlcyldCiAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgaWR4ID0gaGFz
aCh0ZXN0LmlkKSAlIHByb2Nlc3NlcwogICAgICAgICAgICAgZ3JvdXAgPSBxdWV1ZXNbaWR4XQpA
QCAtMzQyLDYgKzM3OCwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgog
CiAgICAgICAgIHJldHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
dGVzdHNfYnlfZ3JvdXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4ge2Ns
cy5ncm91cF9tZXRhZGF0YShOb25lKVsnc2NvcGUnXTogW3QuaWQgZm9yIHQgaW4gdGVzdHNdfQor
CiAKIGNsYXNzIFBhdGhHcm91cGVkU291cmNlKEdyb3VwZWRTb3VyY2UpOgogICAgIEBjbGFzc21l
dGhvZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdGVzdHJ1bm5lci5weQppbmRleCA3YjZiZjU3ZDE1OTkyOWNkY2E4N2U5Y2EzMjE2MTA0MDFi
MzcxNjZhLi40OWEzNTI1ZTg4M2QxNWEwNTkwMjJhNTQ5MTFlZWNmNTMxZDgzNmZmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1
bm5lci5weQpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IucnVuX3Rlc3QodGVz
dCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNy
aXRpY2FsKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5l
cnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRl
ZiB3YWl0KHNlbGYpOgpAQCAtMTU4LDcgKzE1OCw3IEBAIGRlZiBzdGFydF9ydW5uZXIocnVubmVy
X2NvbW1hbmRfcXVldWUsIHJ1bm5lcl9yZXN1bHRfcXVldWUsCiAgICAgd2l0aCBjYXB0dXJlLkNh
cHR1cmVJTyhsb2dnZXIsIGNhcHR1cmVfc3RkaW8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICBicm93c2VyID0gZXhlY3V0b3JfYnJvd3Nlcl9jbHMoKipleGVjdXRvcl9icm93c2VyX2t3YXJn
cykKLSAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGJyb3dzZXIsICoqZXhlY3V0
b3Jfa3dhcmdzKQorICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMobG9nZ2VyLCBi
cm93c2VyLCAqKmV4ZWN1dG9yX2t3YXJncykKICAgICAgICAgICAgIHdpdGggVGVzdFJ1bm5lcihs
b2dnZXIsIHJ1bm5lcl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRv
cikgYXMgcnVubmVyOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAg
cnVubmVyLnJ1bigpCkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIo
dGhyZWFkaW5nLlRocmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHRl
c3RfcXVldWUsIHRlc3Rfc291cmNlX2NscywgYnJvd3Nlcl9jbHMsIGJyb3dzZXJfa3dhcmdzLAog
ICAgICAgICAgICAgICAgICBleGVjdXRvcl9jbHMsIGV4ZWN1dG9yX2t3YXJncywgc3RvcF9mbGFn
LCByZXJ1bj0xLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICBwYXVz
ZV9vbl91bmV4cGVjdGVkPUZhbHNlLCByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdf
aW5mbz1Ob25lLAotICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgorICAgICAg
ICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUsIHJlY29yZGluZz1Ob25lKToKICAgICAgICAg
IiIiVGhyZWFkIHRoYXQgb3ducyBhIHNpbmdsZSBUZXN0UnVubmVyIHByb2Nlc3MgYW5kIGFueSBw
cm9jZXNzZXMgcmVxdWlyZWQKICAgICAgICAgYnkgdGhlIFRlc3RSdW5uZXIgKGUuZy4gdGhlIEZp
cmVmb3ggYmluYXJ5KS4KIApAQCAtMzE4LDYgKzMxOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5h
Z2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19p
bmZvCiAKICAgICAgICAgc2VsZi5tYW5hZ2VyX251bWJlciA9IG5leHRfbWFuYWdlcl9udW1iZXIo
KQorICAgICAgICBhc3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYucmVj
b3JkaW5nID0gcmVjb3JkaW5nCiAKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUo
KQogICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKQEAgLTM1MCw2ICszNTIsNyBA
QCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgbWF5
IGFsc28gaGF2ZSBhIHN0b3AgZmxhZyBzZXQgYnkgdGhlIG1haW4gdGhyZWFkIGluZGljYXRpbmcK
ICAgICAgICAgdGhhdCB0aGUgbWFuYWdlciBzaG91bGQgc2h1dCBkb3duIHRoZSBuZXh0IHRpbWUg
dGhlIGV2ZW50IGxvb3AKICAgICAgICAgc3BpbnMuIiIiCisgICAgICAgIHNlbGYucmVjb3JkaW5n
LnNldChbInRlc3RydW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0
cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCiAgICAgICAgIHdp
dGggc2VsZi5icm93c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBh
cyBicm93c2VyOgogICAgICAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nlck1hbmFnZXIoc2Vs
Zi5sb2dnZXIsCkBAIC0zOTAsOCArMzkzLDggQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhy
ZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXdfc3RhdGUKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIm5ldyBzdGF0ZTogJXMiICUgc2VsZi5zdGF0ZS5fX2NsYXNz
X18uX19uYW1lX18pCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAg
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVy
cm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAg
ICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3RS
dW5uZXJNYW5hZ2VyIG1haW4gbG9vcCB0ZXJtaW5hdGluZywgc3RhcnRpbmcgY2xlYW51cCIpCkBA
IC00NjcsNiArNDcwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAKICAgICBkZWYgc3RhcnRfaW5pdChzZWxmKToKICAgICAgICAgdGVzdCwgdGVzdF9ncm91
cCwgZ3JvdXBfbWV0YWRhdGEgPSBzZWxmLmdldF9uZXh0X3Rlc3QoKQorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgImluaXQiXSkKICAgICAgICAgaWYgdGVzdCBpcyBO
b25lOgogICAgICAgICAgICAgcmV0dXJuIFJ1bm5lck1hbmFnZXJTdGF0ZS5zdG9wKCkKICAgICAg
ICAgZWxzZToKQEAgLTU1Niw2ICs1NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJl
YWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLnN0YXRlLnRlc3RfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZS5ncm91cF9tZXRhZGF0YSkKIAorICAg
ICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInRlc3QiXSArIHNlbGYuc3Rh
dGUudGVzdC5pZC5zcGxpdCgiLyIpWzE6XSkKICAgICAgICAgc2VsZi5sb2dnZXIudGVzdF9zdGFy
dChzZWxmLnN0YXRlLnRlc3QuaWQpCiAgICAgICAgIGlmIHNlbGYucmVydW4gPiAxOgogICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUnVuICVkLyVkIiAlIChzZWxmLnJ1bl9jb3VudCwgc2Vs
Zi5yZXJ1bikpCkBAIC02NzIsNiArNjc3LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhy
ZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdWJ0ZXN0
X3VuZXhwZWN0ZWQgb3IgaXNfdW5leHBlY3RlZCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYucmVzdGFydF9vbl91bmV4cGVjdGVkKSkKIAorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgImFmdGVyLXRlc3QiXSkKICAgICAgICAgaWYgKG5v
dCBmaWxlX3Jlc3VsdC5zdGF0dXMgPT0gIkNSQVNIIiBhbmQKICAgICAgICAgICAgIHNlbGYucGF1
c2VfYWZ0ZXJfdGVzdCBvcgogICAgICAgICAgICAgKHNlbGYucGF1c2Vfb25fdW5leHBlY3RlZCBh
bmQgKHN1YnRlc3RfdW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSkpOgpAQCAtNzIwLDYgKzcy
Niw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAg
ZGVmIHN0b3BfcnVubmVyKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIiIiU3RvcCB0aGUg
VGVzdFJ1bm5lciBhbmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIiIgorICAgICAgICBzZWxmLnJlY29y
ZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInN0b3BfcnVubmVyIl0pCiAgICAgICAgIGlmIHNlbGYu
dGVzdF9ydW5uZXJfcHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTczOCw2
ICs3NDUsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAg
ICAgICAgc2VsZi5yZW1vdGVfcXVldWUuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVl
dWUgPSBOb25lCiAgICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gTm9uZQorICAgICAgICBzZWxm
LnJlY29yZGluZy5wYXVzZSgpCiAKICAgICBkZWYgZW5zdXJlX3J1bm5lcl9zdG9wcGVkKHNlbGYp
OgogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiZW5zdXJlX3J1bm5lcl9zdG9wcGVkIikKQEAg
LTgyNSw3ICs4MzMsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgcGF1c2Vfb25fdW5leHBlY3RlZD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcmVzdGFy
dF9vbl91bmV4cGVjdGVkPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwK
LSAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAgICAg
Y2FwdHVyZV9zdGRpbz1UcnVlLAorICAgICAgICAgICAgICAgICByZWNvcmRpbmc9Tm9uZSk6CiAg
ICAgICAgIHNlbGYuc3VpdGVfbmFtZSA9IHN1aXRlX25hbWUKICAgICAgICAgc2VsZi5zaXplID0g
c2l6ZQogICAgICAgICBzZWxmLnRlc3Rfc291cmNlX2NscyA9IHRlc3Rfc291cmNlX2NscwpAQCAt
ODQwLDYgKzg0OSw4IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3QpOgogICAgICAgICBzZWxm
LmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCiAgICAgICAgIHNlbGYucmVydW4gPSByZXJ1bgogICAg
ICAgICBzZWxmLmNhcHR1cmVfc3RkaW8gPSBjYXB0dXJlX3N0ZGlvCisgICAgICAgIHNlbGYucmVj
b3JkaW5nID0gcmVjb3JkaW5nCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUK
IAogICAgICAgICBzZWxmLnBvb2wgPSBzZXQoKQogICAgICAgICAjIEV2ZW50IHRoYXQgaXMgcG9s
bGVkIGJ5IHRocmVhZHMgc28gdGhhdCB0aGV5IGNhbiBncmFjZWZ1bGx5IGV4aXQgaW4gdGhlIGZh
Y2UKQEAgLTg3Nyw3ICs4ODgsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0
X29uX3VuZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5kZWJ1Z19pbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuY2FwdHVyZV9zdGRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmNhcHR1cmVfc3RkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjb3JkaW5nPXNlbGYucmVjb3JkaW5nKQogICAgICAgICAgICAgbWFuYWdlci5z
dGFydCgpCiAgICAgICAgICAgICBzZWxmLnBvb2wuYWRkKG1hbmFnZXIpCiAgICAgICAgIHNlbGYu
d2FpdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVj
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5CmluZGV4IDA2
YTU2NDFkNTBmYmJhZWQ0ZGU5ZGY1MTFjNTY3NzUzZWYxYTMyNmQuLmUxZTE4ZWM1ZTljZDIxZGFh
ODlmOTE3NjkwYWQxMjg1MmY5YTI4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9i
cm93c2Vycy90ZXN0X3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90
ZXN0X3NhdWNlLnB5CkBAIC0xLDkgKzEsMTAgQEAKIGltcG9ydCBzeXMKLWZyb20gb3MucGF0aCBp
bXBvcnQgam9pbiwgZGlybmFtZQogCiBpbXBvcnQgbW9jawogaW1wb3J0IHB5dGVzdAogCitmcm9t
IG9zLnBhdGggaW1wb3J0IGpvaW4sIGRpcm5hbWUKKwogc3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4o
ZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIsICIuLiIpKQogCiBzYXVjZSA9IHB5dGVzdC5p
bXBvcnRvcnNraXAoIndwdHJ1bm5lci5icm93c2Vycy5zYXVjZSIpCkBAIC05NSw3ICs5Niw2IEBA
IGRlZiB0ZXN0X3NhdWNlY29ubmVjdF9jbGVhbnVwKCk6CiAKICAgICAgICAgc2xlZXAuYXNzZXJ0
X2NhbGxlZCgpCiAKLQogZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfbmV2ZXJfcmVhZHko
KToKICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLlNhdWNlQ29ubmVjdCwgInVwbG9h
ZF9wcmVydW5fZXhlYyIpLFwKICAgICAgICAgICAgIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLnN1
YnByb2Nlc3MsICJQb3BlbiIpIGFzIFBvcGVuLFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVj
dGVkdHJlZS5weQppbmRleCAyMzA4YmU5NTkwZTkwMDRmNDFhNDkyNjgyZDE4N2E3YjRmYzU3MjMx
Li5kNzEyMzdhNDJkYWQ1OGM2OWI2ODZlNjA0MGI2NWY0MDA2NGM5NDM3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3RfZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDcgKzEsMyBAQAotaW1wb3J0IHN5cwot
Ci1pbXBvcnQgcHl0ZXN0Ci0KIGZyb20gLi4gaW1wb3J0IGV4cGVjdGVkdHJlZSwgbWV0YWRhdGEK
IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTMyLDggKzI4LDYgQEAg
ZGVmIHJlc3VsdHNfb2JqZWN0KHJlc3VsdHMpOgogICAgIHJldHVybiByZXN1bHRzX29iagogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1
aWxkX3RyZWVfMCgpOgogICAgICMgUGFzcyBpZiBkZWJ1ZwogICAgIHJlc3VsdHMgPSBbKHsib3Mi
OiAibGludXgiLCAidmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiRkFJTCIpLApA
QCAtNTMsOCArNDcsNiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzAoKToKICAgICBhc3NlcnQgZHVt
cF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgIyBQYXNzIGlm
IGxpbnV4IG9yIHdpbmRvd3MgMTAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZl
cnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTc3LDggKzY5LDYg
QEAgZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9
PSBleHBlY3RlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkz
IikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMigpOgogICAgICMgRmFpbHMgaW4gYSBzcGVjaWZpYyBj
b25maWd1cmF0aW9uCiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjog
IjE4LjA0IiwgImRlYnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC0xMDQsOCArOTQsNiBAQCBkZWYg
dGVzdF9idWlsZF90cmVlXzIoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUpID09IGV4cGVj
dGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAg
ICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVm
IHRlc3RfYnVpbGRfdHJlZV8zKCk6CiAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4Iiwg
InZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBUcnVlLCAidW51c2VkIjogRmFsc2V9LCAiUEFT
UyIpLApAQCAtMTE4LDggKzEwNiw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMygpOgogICAgIGFz
c2VydCBkdW1wX3RyZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzQoKToKICAgICAj
IENoZWNrIGNvdW50cyBmb3IgbXVsdGlwbGUgc3RhdHVzZXMKICAgICByZXN1bHRzID0gWyh7Im9z
IjogImxpbnV4IiwgInZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBGYWxzZX0sICJGQUlMIiks
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA3MmYzYTU5MWFkN2Y5MDUz
MjY3MWNjYjg5N2RmY2IxNjFiYzhmNDVkLi42MGIxYjBhNWE4NzhjZGE5YzUwMGVhYWUyNWYzZmU4
OWVhZGY4MTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAgLTcsNiAr
Nyw3IEBAIGltcG9ydCBtb2NrCiBmcm9tIG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVy
ZWRsb2cKIAogZnJvbSAuLmZvcm1hdHRlcnMgaW1wb3J0IHdwdHJlcG9ydAorZnJvbSAuLmZvcm1h
dHRlcnMud3B0c2NyZWVuc2hvdCBpbXBvcnQgV3B0c2NyZWVuc2hvdEZvcm1hdHRlcgogZnJvbSAu
LmZvcm1hdHRlcnMud3B0cmVwb3J0IGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKIAogCkBAIC0x
NjYsMyArMTY3LDI2IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9rbm93bl9pbnRlcm1pdHRlbnQoY2Fw
ZmQpOgogICAgIHN1YnRlc3QgPSB0ZXN0WyJzdWJ0ZXN0cyJdWzBdCiAgICAgYXNzZXJ0IHN1YnRl
c3RbImV4cGVjdGVkIl0gPT0gdSJQQVNTIgogICAgIGFzc2VydCBzdWJ0ZXN0WyJrbm93bl9pbnRl
cm1pdHRlbnQiXSA9PSBbdSdGQUlMJ10KKworCitkZWYgdGVzdF93cHRzY3JlZW5zaG90X3Rlc3Rf
ZW5kKGNhcGZkKToKKyAgICBmb3JtYXR0ZXIgPSBXcHRzY3JlZW5zaG90Rm9ybWF0dGVyKCkKKwor
ICAgICMgRW1wdHkKKyAgICBkYXRhID0ge30KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5k
KGRhdGEpIGlzIE5vbmUKKworICAgICMgTm8gaXRlbXMKKyAgICBkYXRhWydleHRyYSddID0geyJy
ZWZ0ZXN0X3NjcmVlbnNob3RzIjogW119CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChk
YXRhKSBpcyBOb25lCisKKyAgICAjIEludmFsaWQgaXRlbQorICAgIGRhdGFbJ2V4dHJhJ11bJ3Jl
ZnRlc3Rfc2NyZWVuc2hvdHMnXSA9IFsibm8gZGljdCBpdGVtIl0KKyAgICBhc3NlcnQgZm9ybWF0
dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5vbmUKKworICAgICMgUmFuZG9tIGhhc2gKKyAgICBkYXRh
WydleHRyYSddWydyZWZ0ZXN0X3NjcmVlbnNob3RzJ10gPSBbeyJoYXNoIjogIkhBU0giLCAic2Ny
ZWVuc2hvdCI6ICJEQVRBIn1dCisgICAgYXNzZXJ0ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsREFU
QVxuJyA9PSBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkKKworICAgICMgQWxyZWFkeSBjYWNoZWQg
aGFzaAorICAgIGFzc2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggNTI1OTE1ZDE4MzJh
YzhhZjE5NTdhNzk5NjE1OTY5ZTA1OGVlZmNhNS4uZjNlNGNlNzk2YTQ1YzQ3MmE4OGZlMDIyMjc3
ZTAzNDdiNGU5ODk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZl
c3RleHBlY3RlZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVj
dGVkLnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJ
TwogCiBpbXBvcnQgcHl0ZXN0CkBAIC02LDggKzUsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4u
IGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29u
ZnVzaW9uIGluIHB5MyIpCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3Rl
ZCIsIFsKICAgICAoYiJyZWYuaHRtbDoxOzIwMCIsIFsoInJlZi5odG1sIiwgKCgxLCAxKSwgKDIw
MCwgMjAwKSkpXSksCiAgICAgKGIicmVmLmh0bWw6MC0xOzEwMC0yMDAiLCBbKCJyZWYuaHRtbCIs
ICgoMCwgMSksICgxMDAsIDIwMCkpKV0pLApAQCAtMjUsNyArMjIsNyBAQCBmcm9tIC4uIGltcG9y
dCBtYW5pZmVzdGV4cGVjdGVkCiAgICAgICAoKHUidGVzdC5odG1sIiwgdSJyZWYxLmh0bWwiLCAi
PT0iKSwgKCg1LDEwKSwgKDEwMCwgMTAwKSkpXSksCiBdKQogZGVmIHRlc3RfZnV6enkoZnV6enks
IGV4cGVjdGVkKToKLSAgICBkYXRhID0gIiIiCisgICAgZGF0YSA9IGIiIiIKIFt0ZXN0Lmh0bWxd
CiAgIGZ1enp5OiAlcyIiIiAlIGZ1enp5CiAgICAgZiA9IEJ5dGVzSU8oZGF0YSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy90ZXN0X3N0YWJpbGl0eS5weQppbmRleCA0NzQwNTZkZGU2YzY3YmIwYWFkMjEwMDYxM2U2
Y2EzMzE5NjIzOTYyLi45YThmY2NmOTM1YTEzNmM2MDUwZTg1MmY5YTU3MDQxMzhiMGQzZjQxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CkBAIC0xLDUgKzEsNSBAQAogZnJvbSAu
LiBpbXBvcnQgc3RhYmlsaXR5Ci0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0
LCBkZWZhdWx0ZGljdAogCiBkZWYgdGVzdF9pc19pbmNvbnNpc3RlbnQoKToKICAgICBhc3NlcnQg
c3RhYmlsaXR5LmlzX2luY29uc2lzdGVudCh7IlBBU1MiOiAxMH0sIDEwKSBpcyBGYWxzZQpAQCAt
MjksMyArMjksMTE0IEBAIGRlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKICAgICAgICAgInRp
bWVvdXQiOiAxMDB9KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgc3RhYmlsaXR5LmZpbmRfc2xvd19z
dGF0dXMoewogICAgICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiU0tJUCI6IDB9fSkgaXMgTm9u
ZQorCisKK2RlZiB0ZXN0X2dldF9zdGVwcygpOgorICAgIGxvZ2dlciA9IE5vbmUKKworICAgIHN0
ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFtdKQorICAgIGFzc2VydCBs
ZW4oc3RlcHMpID09IDAKKworICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIs
IDAsIDAsIFt7fV0pCisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgcmVwZWF0X2xv
b3AgPSAxCisgICAgZmxhZ19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICd5JworICAg
IHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCAwLCBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkK
KyAgICBhc3NlcnQgbGVuKHN0ZXBzKSA9PSAxCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJS
dW5uaW5nIHRlc3RzIGluIGEgbG9vcCAlZCB0aW1lcyB3aXRoIGZsYWdzICVzPSVzIiAlICgKKyAg
ICAgICAgcmVwZWF0X2xvb3AsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkKKworICAgIHJlcGVhdF9s
b29wID0gMAorICAgIHJlcGVhdF9yZXN0YXJ0ID0gMQorICAgIGZsYWdfbmFtZSA9ICdmbGFnJwor
ICAgIGZsYWdfdmFsdWUgPSAnbicKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9n
Z2VyLCByZXBlYXRfbG9vcCwgcmVwZWF0X3Jlc3RhcnQsIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2ZsYWdfbmFtZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3Rl
cHMpID09IDEKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBs
b29wIHdpdGggcmVzdGFydHMgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAg
IHJlcGVhdF9yZXN0YXJ0LCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9v
cCA9IDEwCisgICAgcmVwZWF0X3Jlc3RhcnQgPSA1CisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0
X3N0ZXBzKGxvZ2dlciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbe31dKQorICAgIGFz
c2VydCBsZW4oc3RlcHMpID09IDIKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcg
dGVzdHMgaW4gYSBsb29wICVkIHRpbWVzIiAlIHJlcGVhdF9sb29wCisgICAgYXNzZXJ0IHN0ZXBz
WzFdWzBdID09ICgKKyAgICAgICAgIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVzdGFy
dHMgJWQgdGltZXMiICUgcmVwZWF0X3Jlc3RhcnQpCisKKworZGVmIHRlc3RfbG9nX2hhbmRsZXIo
KToKKyAgICBoYW5kbGVyID0gc3RhYmlsaXR5LkxvZ0hhbmRsZXIoKQorICAgIGRhdGEgPSBPcmRl
cmVkRGljdCgpCisgICAgZGF0YVsidGVzdCJdID0gInRlc3RfbmFtZSIKKyAgICB0ZXN0ID0gaGFu
ZGxlci5maW5kX29yX2NyZWF0ZV90ZXN0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN1YnRlc3Rz
Il0gPT0gT3JkZXJlZERpY3QoKQorICAgIGFzc2VydCB0ZXN0WyJzdGF0dXMiXSA9PSBkZWZhdWx0
ZGljdChpbnQpCisgICAgYXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXSA9PSBkZWZhdWx0
ZGljdChmbG9hdCkKKyAgICBhc3NlcnQgdGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rl
c3QoZGF0YSkKKworICAgIHN0YXJ0X3RpbWUgPSAxMDAKKyAgICBkYXRhWyJ0aW1lIl0gPSBzdGFy
dF90aW1lCisgICAgaGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN0
YXJ0X3RpbWUiXSA9PSBzdGFydF90aW1lCisKKyAgICBkYXRhWyJzdWJ0ZXN0Il0gPSAic3VidGVz
dF9uYW1lIgorICAgIHN1YnRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0
YSkKKyAgICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50KQorICAg
IGFzc2VydCBzdWJ0ZXN0WyJtZXNzYWdlcyJdID09IHNldCgpCisgICAgYXNzZXJ0IHN1YnRlc3Qg
PT0gaGFuZGxlci5maW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisKKyAgICBkYXRhWyJzdGF0
dXMiXSA9IDAKKyAgICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09
IDAKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0
YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRh
KQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMgorICAg
IGRhdGFbInN0YXR1cyJdID0gMQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJz
dGF0dXMiXV0gPT0gMAorICAgIG1lc3NhZ2UgPSAidGVzdCBtZXNzYWdlIgorICAgIGRhdGFbIm1l
c3NhZ2UiXSA9IG1lc3NhZ2UKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNz
ZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgYXNzZXJ0IGxl
bihzdWJ0ZXN0WyJtZXNzYWdlcyJdKSA9PSAxCisgICAgYXNzZXJ0IG1lc3NhZ2UgaW4gc3VidGVz
dFsibWVzc2FnZXMiXQorCisgICAgdGVzdF9kdXJhdGlvbiA9IDEwCisgICAgZGF0YVsidGltZSJd
ID0gZGF0YVsidGltZSJdICsgdGVzdF9kdXJhdGlvbgorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0
YSkKKyAgICBhc3NlcnQgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9
PSB0ZXN0X2R1cmF0aW9uCisgICAgYXNzZXJ0ICJ0aW1lb3V0IiBub3QgaW4gdGVzdAorCisgICAg
ZGF0YVsidGVzdDIiXSA9ICJ0ZXN0X25hbWVfMiIKKyAgICB0aW1lb3V0ID0gNQorICAgIGRhdGFb
ImV4dHJhIl0gPSB7fQorICAgIGRhdGFbImV4dHJhIl1bInRlc3RfdGltZW91dCJdID0gdGltZW91
dAorICAgIGhhbmRsZXIudGVzdF9zdGFydChkYXRhKQorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0
YSkKKyAgICBhc3NlcnQgdGVzdFsidGltZW91dCJdID09IHRpbWVvdXQgKiAxMDAwCisKKworZGVm
IHRlc3RfZXJyX3N0cmluZygpOgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnT0snOiAxLCB1J0ZBSUwnOiAxfSwgMSkgPT0gdSIqKkR1cGxpY2F0ZSBzdWJ0ZXN0
IG5hbWUqKiIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09L
JzogMiwgdSdGQUlMJzogMX0sIDIpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioiCisg
ICAgYXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKHt1J1NLSVAnOiAxfSwgMCkgPT0gdSJEdXBs
aWNhdGUgc3VidGVzdCBuYW1lIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnU0tJUCc6IDEsIHUnT0snOiAxfSwgMSkgPT0gdSJEdXBsaWNhdGUgc3VidGVzdCBu
YW1lIgorCisgICAgYXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlM
JzogMX0sIDIpID09IHUiKipGQUlMOiAxLzIsIE1JU1NJTkc6IDEvMioqIgorICAgIGFzc2VydCBz
dGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnT0snOiAxfSwgMykg
PT0gdSIqKkZBSUw6IDEvMywgT0s6IDEvMywgTUlTU0lORzogMS8zKioiCisKKyAgICBhc3NlcnQg
c3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMSwgdSdGQUlMJzogMX0sIDIp
ID09IHUiKipGQUlMOiAxLzIsIE9LOiAxLzIqKiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJy
X3N0cmluZygKKyAgICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxfSwgNCkg
PT0gdSJGQUlMOiAxLzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIKKyAgICBhc3NlcnQgc3RhYmlsaXR5
LmVycl9zdHJpbmcoCisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxLCB1J09LJzogMn0s
IDQpID09IHUiRkFJTDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rl
c3RfdGVzdGxvYWRlci5weQppbmRleCBlODU3Y2Q0M2RiNmQyODFmOTU0MTQyMzBmNTJjOTg0YWFk
OTE1MTE4Li44MzYwMDNkMTA2MDM4YWI0MzAzMDM1ZWVjY2EzMTc3NGM5YTI2Y2UxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkKQEAgLTIwLDggKzIwLDYgQEAgc2tpcDogdHJ1
ZQogCiBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVk
IG9uIFdpbjMyIikKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0g
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF9maWx0ZXJfdW5pY29kZSgpOgogICAgIHRlc3RzID0gbWFrZV9t
b2NrX21hbmlmZXN0KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rz
L3Rlc3RfdXBkYXRlLnB5CmluZGV4IDVkOTAwYTNkNmM5Y2QyMzY5NmZlMGQyYjdjMjBkOGZmNTE0
MmI5ZTUuLjZkYzA0Y2VkZjM0YzdhOGZiNjY3M2YxYzVmNDc3ZDA1NjFlYjFmZmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF91cGRhdGUucHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBtb3psb2cgaW1wb3J0
IHN0cnVjdHVyZWRsb2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKIGhlcmUgPSBvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsIG9z
LnBhcmRpciwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFu
aWZlc3QsIGl0ZW0gYXMgbWFuaWZlc3RfaXRlbQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZl
c3QsIGl0ZW0gYXMgbWFuaWZlc3RfaXRlbSwgdXRpbHMKIAogCiBkZWYgcmVsX3BhdGhfdG9fdGVz
dF91cmwocmVsX3BhdGgpOgpAQCAtMjEsNyArMjEsOSBAQCBkZWYgcmVsX3BhdGhfdG9fdGVzdF91
cmwocmVsX3BhdGgpOgogCiAKIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xz
LCAqYXJncyk6Ci0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisg
ICAgcGF0aF9wYXJ0cyA9IHR1cGxlKHBhdGguc3BsaXQoIi8iKSkKKyAgICBwYXRoID0gdXRpbHMu
dG9fb3NfcGF0aChwYXRoKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgcmVsX3Bh
dGhfcGFydHM9cGF0aF9wYXJ0cywgaGFzaD1oYXNoKQogICAgIHRlc3QgPSBjbHMoIi9mb29iYXIi
LCBwYXRoLCAiLyIsIHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHBhdGgpLCAqYXJncykKICAgICBzLm1h
bmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0ZW1fdHlwZSwgW3Rl
c3RdKSkKICAgICByZXR1cm4gcwpAQCAtMjksNyArMzEsNiBAQCBkZWYgU291cmNlRmlsZVdpdGhU
ZXN0KHBhdGgsIGhhc2gsIGNscywgKmFyZ3MpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJu
ZXNzIjogbWFuaWZlc3RfaXRlbS5UZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJl
ZnRlc3QiOiBtYW5pZmVzdF9pdGVtLlJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rf
bm9kZSI6IG1hbmlmZXN0X2l0ZW0uUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAgIm1hbnVh
bCI6IG1hbmlmZXN0X2l0ZW0uTWFudWFsVGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjog
bWFuaWZlc3RfaXRlbS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAgICAgICAgICAiY29uZm9y
bWFuY2VjaGVja2VyIjogbWFuaWZlc3RfaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LApAQCAt
NjcsMTEgKzY4LDEyIEBAIGRlZiB1cGRhdGUodGVzdHMsICpsb2dzLCAqKmt3YXJncyk6CiAgICAg
ICAgIHVwZGF0ZXIudXBkYXRlX2Zyb21fbG9nKGxvZykKIAogICAgIHVwZGF0ZV9wcm9wZXJ0aWVz
ID0gKFsiZGVidWciLCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQor
ICAgICAgICAgICAgICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6
IFsiYml0cyJdfSkKIAogICAgIGV4cGVjdGVkX2RhdGEgPSB7fQogICAgIG1ldGFkYXRhLmxvYWRf
ZXhwZWN0ZWQgPSBsYW1iZGEgXywgX18sIHRlc3RfcGF0aCwgKmFyZ3M6IGV4cGVjdGVkX2RhdGEu
Z2V0KHRlc3RfcGF0aCkKICAgICBmb3IgdGVzdF9wYXRoLCB0ZXN0X2lkcywgdGVzdF90eXBlLCBt
YW5pZmVzdF9zdHIgaW4gdGVzdHM6CisgICAgICAgIHRlc3RfcGF0aCA9IHV0aWxzLnRvX29zX3Bh
dGgodGVzdF9wYXRoKQogICAgICAgICBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0gPSBtYW5pZmVz
dHVwZGF0ZS5jb21waWxlKEJ5dGVzSU8obWFuaWZlc3Rfc3RyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i
LApAQCAtMTA5LDcgKzExMSw3IEBAIGRlZiBjcmVhdGVfbG9nKGVudHJpZXMpOgogICAgICAgICAg
ICAgZ2V0YXR0cihsb2dnZXIsIGFjdGlvbikoKiprd2FyZ3MpCiAgICAgICAgIGxvZ2dlci5yZW1v
dmVfaGFuZGxlcihoYW5kbGVyKQogICAgIGVsc2U6Ci0gICAgICAgIGpzb24uZHVtcChlbnRyaWVz
LCBkYXRhKQorICAgICAgICBkYXRhLndyaXRlKGpzb24uZHVtcHMoZW50cmllcykuZW5jb2RlKCkp
CiAgICAgZGF0YS5zZWVrKDApCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtMTMzLDExICsxMzUsOSBA
QCBkZWYgY3JlYXRlX3Rlc3RfbWFuaWZlc3QodGVzdHMsIHVybF9iYXNlPSIvIik6CiAgICAgcmV0
dXJuIG0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAg
ICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwi
IiIpXQogCkBAIC0xNTUsMTEgKzE1NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgYXNz
ZXJ0IHVwZGF0ZWRbMF1bMV0uaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfMSgpOgogICAgIHRlc3RzID0gWygi
cGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAg
ICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFd
CiAgICAgZXhwZWN0ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTc4LDExICsxNzYsOSBAQCBkZWYgdGVz
dF91cGRhdGVfMSgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCku
Y2hpbGRyZW5bMF0uZ2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9rbm93bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rl
c3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhw
ZWN0ZWQ6IFBBU1MiIiIpXQogCkBAIC0yMTksMTEgKzIxNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9r
bm93bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9p
bmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTI0NCwxMSAr
MjM4LDkgQEAgZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGlu
Z19rbm93bl9pbnRlcm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0K
KyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBb
UEFTUywgRkFJTF0iIiIpXQogCkBAIC0yODcsMTEgKzI3OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9l
eGlzdGluZ19rbm93bl9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVs
dF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVf
cHJldmlvdXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1d
CisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDog
W1BBU1MsIEZBSUxdIiIiKV0KIApAQCAtMzM1LDggKzMyNSw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9y
ZW1vdmVfcHJldmlvdXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1
bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJFUlJPUiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWls
KHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFk
YXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhf
aW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBOb25lKV0KIApAQCAtMzc0LDggKzM2Miw2IEBAIGRlZiB0ZXN0
X3VwZGF0ZV9uZXdfdGVzdF93aXRoX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQi
LCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJr
LnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249
Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2V4cGVjdGVk
X3RpZV9yZXNvbHV0aW9uKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rl
c3RfaWRdLCAidGVzdGhhcm5lc3MiLCBOb25lKV0KIApAQCAtNDAzLDExICszODksOSBAQCBkZWYg
dGVzdF91cGRhdGVfZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICAgICAgImV4cGVjdGVk
IiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVy
X2V4cGVjdGVkKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxd
IiIiKV0KIApAQCAtNDQ2LDEwICs0MzAsOCBAQCBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBl
Y3RlZCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwi
LCAiUEFTUyJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJt
aXR0ZW50KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAg
aWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0KQEAgLTQ4OSwxMSArNDcxLDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50
KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3Vw
ZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKICAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
Ci0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0
bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC01MTQs
MTAgKzQ5NCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29u
ZV9leHBlY3RlZF9zdGF0dXMoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5m
bykgPT0gIkVSUk9SIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAi
MyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQg
cHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFu
ZHJvaWQiOiBbUEFTUywgRkFJTF0iIiIpXQpAQCAtNTQ5LDEwICs1MjcsOCBAQCBkZWYgdGVzdF91
cGRhdGVfaW50ZXJtaXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQi
LCBydW5faW5mb18xKSA9PSBbIlBBU1MiLCAiVElNRU9VVCIsICJGQUlMIl0KIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5k
X3JlbW92ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIK
IFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywg
RkFJTF0iIiIpXQpAQCAtNTg0LDExICs1NjAsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92
ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1
bl9pbmZvXzEpID09IFsiUEFTUyIsICJUSU1FT1VUIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1
bGwoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIi
Ilt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1h
YyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNjI0LDExICs1OTgsOSBAQCBkZWYgdGVzdF91cGRhdGVf
aW50ZXJtaXR0ZW50X2Z1bGwoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5m
bykgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAg
ICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQog
ICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJ
TUVPVVQsIFBBU1NdCkBAIC02NzUsMTEgKzY0Nyw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1p
dHRlbnRfZnVsbF9yZW1vdmUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5m
bykgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfZnVsbF91cGRhdGUoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0
Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVj
dGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNzE1LDExICs2
ODUsOSBAQCBkZWYgdGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZh
dWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9mdWxsX29ycGhhbigpOgogICAgIHRlc3RzID0gWygi
cGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAg
ICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFd
CiAgICAgZXhwZWN0ZWQ6IEZBSUwKICAgICBbc3Vic3ViIHRlc3RdCkBAIC03NDgsMTEgKzcxNiw5
IEBAIGRlZiB0ZXN0X2Z1bGxfb3JwaGFuKCk6CiAgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3Qu
Z2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW4pID09IDEKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3Rl
ZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAg
ICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAg
ICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtODA5LDExICs3NzUsOSBAQCBk
ZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICAg
ICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3Nr
aXBfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04
MjksMTAgKzc5Myw4IEBAIGRlZiB0ZXN0X3NraXBfMCgpOgogICAgIGFzc2VydCBub3QgdXBkYXRl
ZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X25ld19zdWJ0ZXN0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rl
c3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQog
ICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04NTQsMTAgKzgxNiw4IEBA
IGRlZiB0ZXN0X25ld19zdWJ0ZXN0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVz
dCh0ZXN0X2lkKS5jaGlsZHJlblsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykg
PT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIi
IiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTg5
MywxMCArODUzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICAgICAgImV4
cGVjdGVkIiwgeyJkZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1d
CiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTkzNywxMCArODk1LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVu
X2luZm9fMykgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKLSAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0
bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIild
CiAKQEAgLTk3NywxMCArOTMzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKICAg
ICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRp
cGxlXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDoKICAgICAgIGlmIGRlYnVnOiBGQUlMCkBAIC0xMDE5LDEwICs5NzMsOCBA
QCBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5f
aW5mb18yKSA9PSAiVElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJb
dGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAg
ICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTA2MSw4ICsxMDEzLDYgQEAgZGVmIHRlc3RfdXBk
YXRlX2lnbm9yZV9leGlzdGluZygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9
PSAiTk9UUlVOIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkz
IikKIGRlZiB0ZXN0X3VwZGF0ZV9uZXdfdGVzdCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTEwODUsMTAg
KzEwMzUsOCBAQCBkZWYgdGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICAgICAgImV4cGVjdGVk
IiwgcnVuX2luZm9fMSkgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgotICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExMDcsMTAg
KzEwNTUsOCBAQCBkZWYgdGVzdF91cGRhdGVfZHVwbGljYXRlKCk6CiAgICAgICAgICJleHBlY3Rl
ZCIsIHJ1bl9pbmZvXzEpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQo
KToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQog
CkBAIC0xMTI5LDEwICsxMDc1LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0
ZW50KCk6CiAgICAgICAgICJkaXNhYmxlZCIsIHJ1bl9pbmZvXzEpID09ICJTb21lIG1lc3NhZ2Ui
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX3N0YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgotICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExNjUsMTAg
KzExMDksOCBAQCBkZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmls
aXR5KCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0
ZV9mdWxsKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFd
CiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTIxNywxMCArMTE1
OSw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9p
bmZvXzIpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5o
dG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBp
ZiByZWxlYXNlX29yX2JldGE6IEVSUk9SCkBAIC0xMjYwLDExICsxMjAwLDI5IEBAIGRlZiB0ZXN0
X3VwZGF0ZV9mdWxsX3Vua25vd24oKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikg
PT0gIkVSUk9SIgogCiAKK2RlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd25fbWlzc2luZygpOgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIlt0ZXN0Lmh0bV0KKyAgW3N1YnRlc3RfZGVsZXRlZF0KKyAgICBleHBlY3RlZDoKKyAg
ICAgIGlmIHJlbGVhc2Vfb3JfYmV0YTogRVJST1IKKyAgICAgIEZBSUwKKyIiIildCisKKyAgICBs
b2dfMCA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNT
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAi
UEFTUyJ9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRl
c3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJP
SyJ9KV0sCisgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAi
cmVsZWFzZV9vcl9iZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywg
bG9nXzAsIGZ1bGxfdXBkYXRlPVRydWUpCisgICAgYXNzZXJ0IGxlbih1cGRhdGVkKSA9PSAwCisK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2RlZmF1bHQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAg
IFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBGQUlMCkBAIC0x
Mjk0LDEwICsxMjUyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHQoKToKICAgICBhc3NlcnQg
bmV3X21hbmlmZXN0LmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgotICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBi
IiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VU
CkBAIC0xMzI2LDEwICsxMjgyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8y
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3Mg
PT0gIm1hYyI6IFRJTUVPVVQKQEAgLTEzNTgsMTAgKzEzMTIsOCBAQCBkZWYgdGVzdF91cGRhdGVf
ZGVmYXVsdF8yKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VU
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIi
Ilt0ZXN0Lmh0bV0KICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBA
IC0xMzgyLDEwICsxMzM0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6
CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3Nl
cnRzIikgPT0gIjIiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8xKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5o
dG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czog
MgogIiIiKV0KQEAgLTE0MDYsMTAgKzEzNTYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9u
X2NvdW50XzEoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhh
c19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIo
KToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0
CiAgIG1pbi1hc3NlcnRzOiAyCiAiIiIpXQpAQCAtMTQyNiwxMCArMTM3NCw4IEBAIGRlZiB0ZXN0
X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMigpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3Vw
ZGF0ZV9hc3NlcnRpb25fY291bnRfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0
bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDYw
LDEwICsxNDA2LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6CiAgICAg
YXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikg
PT0gIjIiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dIiIi
KV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsIGIiIiJbdGVzdC5odG1dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRl
c3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAgICgi
YXNzZXJ0aW9uX2NvdW50IiwgeyJ0ZXN0IjogdGVzdF9pZCwKQEAgLTE0OTEsMTEgKzE0MzUsOSBA
QCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKICAgICBhc3NlcnQgbmV3X21h
bmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UK
IAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVz
dF91cGRhdGVfbHNhbl8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rl
c3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGly
X18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0
bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgv
dG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9s
b2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSkKQEAgLTE1
MDgsMTEgKzE0NTAsOSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNzZXJ0IG5l
d19tYW5pZmVzdC5nZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIiCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rp
cl9pZF0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNTI4
LDEzICsxNDY4LDExIEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdf
bWFuaWZlc3QuZ2V0KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9f
X2Rpcl9fIl0sIE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvX19kaXJf
XyIsIFsicGF0aC9fX2Rpcl9fIl0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIp
LAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0K
KyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQog
CiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3Rv
LyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZv
byIsICJiYXIiXSwKQEAgLTE1NTAsMTEgKzE0ODgsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIi
KSwKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoi
XQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sc2FuXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19k
aXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0
aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRl
X2xvZyhbKCJsc2FuX2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSldLApAQCAt
MTU3MiwxMSArMTUwOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzMoKToKICAgICBhc3NlcnQg
bmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfd3B0cmVwb3J0XzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIi
KV0KIApAQCAtMTU5NCwxMSArMTUyOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgp
OgogICAgIGFzc2VydCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nID0geyJydW5faW5mbyI6IGRlZmF1bHRfcnVu
X2luZm8uY29weSgpLAogICAgICAgICAgICAicmVzdWx0cyI6IFtdLApAQCAtMTYxMSwxMSArMTU0
Myw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgogICAgIGFzc2VydCB1cGRhdGVk
WzBdWzFdLmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFs
XzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRd
LCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwg
W2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFr
X3RvdGFsIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicHJvY2VzcyI6ICJkZWZhdWx0IiwKQEAgLTE2MzAsMTEgKzE1NjAs
OSBAQCBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5p
ZmVzdC5nZXQoImxlYWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0OjUxMjAwJ10KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVf
bGVha190b3RhbF8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18i
LCBbZGlyX2lkXSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8v
X19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2co
WygibW96bGVha190b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjQ2
LDExICsxNTc0LDkgQEAgZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgogICAgIGFzc2Vy
dCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAi
MyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQg
cHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzIoKToKLSAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAg
ICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9
IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisg
ICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVh
ay10b3RhbDogMTEwIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90
YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2NjMsMTEgKzE1ODksOSBAQCBsZWFrLXRv
dGFsOiAxMTAiIiIpXQogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFs
XzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRd
LCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBb
ZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTAwIiIiKV0KIAogICAgIGxvZ18wID0g
c3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2
ODMsMTEgKzE2MDcsOSBAQCBsZWFrLXRvdGFsOiAxMDAiIiIpXQogICAgIGFzc2VydCBuZXdfbWFu
aWZlc3QuZ2V0KCJsZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRl
X2xlYWtfdG90YWxfNCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0
X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9f
IiwgW2Rpcl9pZF0sIE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8v
X19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAg
ICAgbG9nXzAgPSBzdWl0ZV9sb2coWwpAQCAtMTcxNiw4ICsxNjM4LDYgQEAgY2xhc3MgVXBkYXRl
UnVubmVyKFN0ZXBSdW5uZXIpOgogICAgIHN0ZXBzID0gW1Rlc3RTdGVwXQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJ1cGRhdGUuc3RhdGUgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVf
cGlja2xlKCk6CiAgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJl
eHBlY3RlZF90ZXN0IikKICAgICBhcmdzID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3Rfd3B0dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkK
aW5kZXggOWJiM2UxZmQzNGUzN2M0NDMwZjc1MmI4N2U0YmI0ZTNiZmE3Zjk1OS4uZGJjY2Q5MGUz
Mzk1ODBhOGQ1ZmExMDA1YmUwNDM0MDk1YzQ2ODI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3Rfd3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0
ZXN0LnB5CkBAIC0xLDM1ICsxLDM0IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBmcm9t
IGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIG1vY2sgaW1wb3J0IE1vY2sKIAogZnJvbSBtYW5pZmVz
dCBpbXBvcnQgbWFuaWZlc3QgYXMgd3B0bWFuaWZlc3QKLWZyb20gbWFuaWZlc3QuaXRlbSBpbXBv
cnQgVGVzdGhhcm5lc3NUZXN0Citmcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNz
VGVzdCwgUmVmVGVzdAorZnJvbSBtYW5pZmVzdC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aAogZnJv
bSAuLiBpbXBvcnQgbWFuaWZlc3RleHBlY3RlZCwgd3B0dGVzdAogCi1kaXJfaW5pXzAgPSAiIiJc
CitkaXJfaW5pXzAgPSBiIiIiXAogcHJlZnM6IFthOmJdCiAiIiIKIAotZGlyX2luaV8xID0gIiIi
XAorZGlyX2luaV8xID0gYiIiIlwKIHByZWZzOiBbQFJlc2V0LCBiOmNdCiBtYXgtYXNzZXJ0czog
MgogbWluLWFzc2VydHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKLWRpcl9pbmlfMiA9ICIiIlwK
K2Rpcl9pbmlfMiA9IGIiIiJcCiBsc2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0
XzAgPSAiIiJcCit0ZXN0XzAgPSBiIiIiXAogWzAuaHRtbF0KICAgcHJlZnM6IFtjOmRdCiAgIG1h
eC1hc3NlcnRzOiAzCiAgIHRhZ3M6IFthLCBAUmVzZXRdCiAiIiIKIAotdGVzdF8xID0gIiIiXAor
dGVzdF8xID0gYiIiIlwKIFsxLmh0bWxdCiAgIHByZWZzOgogICAgIGlmIG9zID09ICd3aW4nOiBb
YTpiLCBjOmRdCkBAIC0zNywxMiArMzYsMTIgQEAgdGVzdF8xID0gIiIiXAogICAgIGlmIG9zID09
ICd3aW4nOiBGQUlMCiAiIiIKIAotdGVzdF8yID0gIiIiXAordGVzdF8yID0gYiIiIlwKIFsyLmh0
bWxdCiAgIGxzYW4tbWF4LXN0YWNrLWRlcHRoOiA0MgogIiIiCiAKLXRlc3RfMyA9ICIiIlwKK3Rl
c3RfMyA9IGIiIiJcCiBbMy5odG1sXQogICBbc3VidGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNT
LCBGQUlMXQpAQCAtNTQsMzIgKzUzLDMyIEBAIHRlc3RfMyA9ICIiIlwKICAgICBleHBlY3RlZDog
RkFJTAogIiIiCiAKLXRlc3RfNCA9ICIiIlwKK3Rlc3RfNCA9IGIiIiJcCiBbNC5odG1sXQogICBl
eHBlY3RlZDogRkFJTAogIiIiCiAKLXRlc3RfNSA9ICIiIlwKK3Rlc3RfNSA9IGIiIiJcCiBbNS5o
dG1sXQogIiIiCiAKLXRlc3RfNiA9ICIiIlwKK3Rlc3RfNiA9IGIiIiJcCiBbNi5odG1sXQogICBl
eHBlY3RlZDogW09LLCBGQUlMXQogIiIiCiAKLXRlc3RfNyA9ICIiIlwKK3Rlc3RfNyA9IGIiIiJc
CiBbNy5odG1sXQogICBibGlua19leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOiB5ZXAKICIiIgog
Ci10ZXN0X2Z1enp5ID0gIiIiXAordGVzdF9mdXp6eSA9IGIiIiJcCiBbZnV6enkuaHRtbF0KICAg
ZnV6enk6IGZ1enp5LXJlZi5odG1sOjE7MjAwCiAiIiIKIAogCi10ZXN0aGFybmVzc190ZXN0ID0g
IiIiPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgordGVz
dGhhcm5lc3NfdGVzdCA9IGIiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+IiIiCiAKIApAQCAtMTE3LDggKzExNiw2IEBAIGRlZiBtYWtlX3Rlc3Rfb2Jq
ZWN0KHRlc3RfbmFtZSwKICAgICByZXR1cm4gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3RzLCB0
ZXN0LCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
bWV0YWRhdGFfaW5oZXJpdCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRl
c3QiLCAiYS9iIiwgMTApLCAoInRlc3QiLCAiYyIsIDEwKV0KICAgICBpbmhlcml0X21ldGFkYXRh
ID0gWwpAQCAtMTM2LDggKzEzMyw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKICAg
ICBhc3NlcnQgdGVzdF9vYmoudGFncyA9PSB7ImEiLCAiZGlyOmEifQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfY29uZGl0aW9uYWwoKToK
ICAgICBpdGVtcyA9IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0
ZXN0IiwgImMiLCAxMCldCiAKQEAgLTE0Nyw4ICsxNDIsNiBAQCBkZWYgdGVzdF9jb25kaXRpb25h
bCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFf
bHNhbl9zdGFja19kZXB0aCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRl
c3QiLCAiYS9iIiwgMTApXQogCkBAIC0xNzIsOCArMTY1LDYgQEAgZGVmIHRlc3RfbWV0YWRhdGFf
bHNhbl9zdGFja19kZXB0aCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5sc2FuX21heF9zdGFja19k
ZXB0aCA9PSA0MgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMi
KQogZGVmIHRlc3Rfc3VidGVzdHMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3Qo
dGVzdF8zLCAiYS8zLmh0bWwiLCAzLCAoInRlc3QiLCAiYSIsIDQpLCBOb25lLCBGYWxzZSkKICAg
ICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoInN1YnRlc3QxIikgPT0gIlBBU1MiCkBAIC0xODQs
NTcgKzE3NSw1MCBAQCBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIGFzc2VydCB0ZXN0X29iai5r
bm93bl9pbnRlcm1pdHRlbnQoInN1YnRlc3QzIikgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0
ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWwoKToKICAg
ICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF80LCAiYS80Lmh0bWwiLCA0LCAoInRl
c3QiLCAiYSIsIDUpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQo
KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0g
W10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0
ZXN0X25vX2V4cGVjdGVkKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3Rf
NSwgImEvNS5odG1sIiwgNSwgKCJ0ZXN0IiwgImEiLCA2KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93
bl9pbnRlcm1pdHRlbnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lv
blswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1
c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdF9v
YmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNiwgImEvNi5odG1sIiwgNiwgKCJ0ZXN0IiwgImEi
LCA3KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9L
IgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbIkZBSUwiXQog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
ZXhwZWN0X2FueV9zdWJ0ZXN0X3N0YXR1cygpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29i
amVjdCh0ZXN0XzcsICJhLzcuaHRtbCIsIDcsICgidGVzdCIsICJhIiwgOCksIE5vbmUsIEZhbHNl
KQogICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0X2FueV9zdWJ0ZXN0X3N0YXR1cygpIGlzIFRydWUKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2Z1enp5
KCk6Ci0gICAgbWFuaWZlc3RfZGF0YSA9IHsKLSAgICAgICAgIml0ZW1zIjogeyJyZWZ0ZXN0Ijog
eyJhL2Z1enp5Lmh0bWwiOiBbWyJhL2Z1enp5Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImZ1enp5
IjogW1tbIi9hL2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb
MiwgM10sIFsxMCwgMTVdXV1dfV1dfX0sCi0gICAgICAgICJwYXRocyI6IHsiYS9mdXp6eS5odG1s
IjogWyIwIio0MCwgInJlZnRlc3QiXX0sCi0gICAgICAgICJ2ZXJzaW9uIjogNywKLSAgICAgICAg
InVybF9iYXNlIjogIi8ifQotICAgIG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QuZnJv
bV9qc29uKCIuIiwgbWFuaWZlc3RfZGF0YSkKKyAgICBpdGVtID0gUmVmVGVzdCgiLiIsICJhL2Z1
enp5Lmh0bWwiLCAiLyIsICJhL2Z1enp5Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXM9W1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCisgICAgICAgICAgICAgICAgICAg
ZnV6enk9W1tbIi9hL2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwgMTVdXV1dKQorICAgIHMgPSBN
b2NrKHJlbF9wYXRoPSJhL2Z1enp5Lmh0bWwiLCByZWxfcGF0aF9wYXJ0cz0oImEiLCAiZnV6enku
aHRtbCIpLCBoYXNoPSIwIio0MCkKKyAgICBzLm1hbmlmZXN0X2l0ZW1zID0gTW9jayhyZXR1cm5f
dmFsdWU9KGl0ZW0uaXRlbV90eXBlLCBbaXRlbV0pKQorCisKKyAgICBtYW5pZmVzdCA9IHdwdG1h
bmlmZXN0Lk1hbmlmZXN0KCkKKworICAgIGFzc2VydCBtYW5pZmVzdC51cGRhdGUoWyhzLCBUcnVl
KV0pIGlzIFRydWUKKwogICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRp
Yy5jb21waWxlKEJ5dGVzSU8odGVzdF9mdXp6eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0ZXhwZWN0
ZWQuZGF0YV9jbHNfZ2V0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIpCiAKLSAg
ICB0ZXN0ID0gbWFuaWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQorICAgIHRl
c3QgPSBuZXh0KG1hbmlmZXN0Lml0ZXJwYXRoKHRvX29zX3BhdGgoImEvZnV6enkuaHRtbCIpKSkK
ICAgICB0ZXN0X29iaiA9IHdwdHRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdCwgdGVzdCwgW10s
IHRlc3RfbWV0YWRhdGEuZ2V0X3Rlc3QodGVzdC5pZCkpCiAKICAgICBhc3NlcnQgdGVzdF9vYmou
ZnV6enkgPT0geygnL2EvZnV6enkuaHRtbCcsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PScpOiBb
WzIsIDNdLCBbMTAsIDE1XV19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5p
dF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCAyNjI2MTgzZmM4
MGRiYzc1ZDNkMjg1ZGU3OWE3ZDM4NmY1M2NlNmUzLi43OGNkYTljMmQ2NTVmNDJkNjgxMTNmNzkx
MDdlMjRhZTQxN2FmZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9f
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcg
QEAgZGVmIHJlbW92ZV9sb2dnaW5nX2FyZ3MoYXJncyk6CiAKICAgICA6cGFyYW0gYXJnczogRGlj
dGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgogICAgICIiIgotICAgIGZvciBuYW1l
IGluIGFyZ3Mua2V5cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlzKCkpOgogICAg
ICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFyZ3MucG9wKG5h
bWUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3N0YXRlLnB5CmluZGV4IDY0ZGJmMTE4MDYwNGNkOGRmN2E0NjhlMDM2NDQ3
Zjk1YjgwMzcxYjAuLmY4YTgzNTI1Y2JkNDcwNmJkZmJjOTlhNTE4ZDJiYWMxMjNkMzRlOTYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3VwZGF0ZS9zdGF0ZS5weQpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBCYXNlU3RhdGUob2JqZWN0
KToKICAgICAgICAgICAgIHJldHVybiBydgogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gZXhp
c3Rpbmcgc3RhdGUgZm91bmQiKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCBs
b2dnZXIpCisgICAgICAgIHJldHVybiBzdXBlcihCYXNlU3RhdGUsIGNscykuX19uZXdfXyhjbHMp
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyKToKICAgICAgICAgIiIiT2JqZWN0IGNv
bnRhaW5pbmcgc3RhdGUgdmFyaWFibGVzIGNyZWF0ZWQgd2hlbiBydW5uaW5nIFN0ZXBzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0
ZS9zeW5jLnB5CmluZGV4IDBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYu
LjBhNDFmNzA2ZWJjMzc2MDcyOWQ5YmE1NTMwNzZmZTBkN2UwYjQwYjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMu
cHkKQEAgLTEwLDM3ICsxMCw2IEBAIGZyb20gLnRyZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0g
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQogCi1ic2RfbGljZW5z
ZSA9ICIiIlczQyAzLWNsYXVzZSBCU0QgTGljZW5zZQotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLW1ldDoKLQotKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9y
aWdpbmFsIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKLSAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLUlTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi1JTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIi
IgotCiAKIGRlZiBjb3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1
ZGVzPU5vbmUpOgogICAgICIiIkNvcHkgdGhlIHdvcmtpbmcgY29weSBvZiBhIFRyZWUgdG8gYSBk
ZXN0aW5hdGlvbiBkaXJlY3RvcnkuCkBAIC04NCwxNiArNTMsNiBAQCBkZWYgY29weV93cHRfdHJl
ZSh0cmVlLCBkZXN0LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25lKToKICAgICAgICAgZGVz
dF9wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGRlc3RpbmF0aW9uLCBvcy5wYXRoLnNwbGl0KHNv
dXJjZSlbMV0pCiAgICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQog
Ci0gICAgYWRkX2xpY2Vuc2UoZGVzdCkKLQotCi1kZWYgYWRkX2xpY2Vuc2UoZGVzdCk6Ci0gICAg
IiIiV3JpdGUgdGhlIGJzZCBsaWNlbnNlIHN0cmluZyB0byBhIExJQ0VOU0UgZmlsZS4KLQotICAg
IDpwYXJhbSBkZXN0OiBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIExJQ0VOU0UgZmls
ZS4iIiIKLSAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICJMSUNFTlNFIiksICJ3Iikg
YXMgZjoKLSAgICAgICAgZi53cml0ZShic2RfbGljZW5zZSkKLQogCiBjbGFzcyBVcGRhdGVDaGVj
a291dChTdGVwKToKICAgICAiIiJQdWxsIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBpbnRvIHRoZSBs
b2NhbCBzeW5jIHRyZWUuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkKaW5kZXggOTAwNmRmNjcxOTMzMmFlNTky
ZWUzODYxNDg1ZDgyYzIxMjQyM2I0OC4uZjM2Mjc3MGZmMTZkMzBlNDQ5ZGU4NTNmNjg3NDY3Mjk3
YjBlZDA3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvdHJlZS5weQpAQCAtMyw2ICszLDggQEAgaW1wb3J0IHJlCiBpbXBv
cnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBy
YW5nZQorCiBmcm9tIC4uIGltcG9ydCB2Y3MKIGZyb20gLi52Y3MgaW1wb3J0IGdpdCwgaGcKIApA
QCAtMTYsNyArMTgsNyBAQCBkZWYgZ2V0X3VuaXF1ZV9uYW1lKGV4aXN0aW5nLCBpbml0aWFsKToK
ICAgICA6cGFyYW0gaW5pdGlhbDogTmFtZSwgb3IgbmFtZSBwcmVmaXgsIHRvIHVzZSIiIgogICAg
IGlmIGluaXRpYWwgbm90IGluIGV4aXN0aW5nOgogICAgICAgICByZXR1cm4gaW5pdGlhbAotICAg
IGZvciBpIGluIHhyYW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CisgICAgZm9yIGkgaW4gcmFuZ2Uo
bGVuKGV4aXN0aW5nKSArIDEpOgogICAgICAgICB0ZXN0ID0gIiVzXyVzIiAlIChpbml0aWFsLCBp
ICsgMSkKICAgICAgICAgaWYgdGVzdCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICByZXR1
cm4gdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQppbmRleCA5NjMwMmVlMjY3ZTkwNWFhOGE0OGFmMTJi
NjU5NzhlMDI1ZWJkNDkyLi44MGU1MDlkZDM4M2IzOGVmNGEzMzdlZjEzMDc1ZjU4ODI2Y2Y4MTg1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3VwZGF0ZS5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwogaW1wb3J0
IHN5cwogCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcworCiBmcm9tIC5tZXRhZGF0YSBpbXBv
cnQgTWV0YWRhdGFVcGRhdGVSdW5uZXIKIGZyb20gLnN5bmMgaW1wb3J0IFN5bmNGcm9tVXBzdHJl
YW1SdW5uZXIKIGZyb20gLnRyZWUgaW1wb3J0IEdpdFRyZWUsIEhnVHJlZSwgTm9WQ1NUcmVlCkBA
IC0xMDksNyArMTExLDcgQEAgY2xhc3MgUmVtb3ZlT2Jzb2xldGUoU3RlcCk6CiAgICAgICAgIHN0
YXRlLnRlc3RzX3BhdGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KICAgICAgICAg
c3RhdGUubWV0YWRhdGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3BhdGgiXQog
Ci0gICAgICAgIGZvciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAgICAgICBm
b3IgdXJsX3BhdGhzIGluIGl0ZXJ2YWx1ZXMocGF0aHMpOgogICAgICAgICAgICAgdGVzdHNfcGF0
aCA9IHVybF9wYXRoc1sidGVzdHNfcGF0aCJdCiAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoID0g
dXJsX3BhdGhzWyJtZXRhZGF0YV9wYXRoIl0KICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJu
YW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0aCk6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cK
aW5kZXggYWIwNmM0MWFmOThmNWMyYzg4Y2I4OWVlNThiYjdhYTIzNGU5MDI0My4uZmFhZjg2ZmVk
NmE2MzhkZGI1MTg0NDY3YThlMDcwODIzN2E0NjllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMjAs
MTAgKzIwLDEyIEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5CiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2luc3RydW1lbnRzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQu
cHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlm
ZXN0dXBkYXRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3By
b2Nlc3MucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmls
aXR5LnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rkcml2ZXItZXh0cmEuanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93ZWJkcml2ZXJfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9z
ZXJ2ZXIucHkKaW5kZXggMTYyZmZhZTNmYzkzYWVlYjI5YTI1MzVlODI5YWY0NWI5ZTE1YzFmMy4u
MThiZTY4MDYwNzRkYTg2ODVjZDM5Mjg2MTk0NTVlZDI3NWJmZThlZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZl
cl9zZXJ2ZXIucHkKQEAgLTgsNiArOCw4IEBAIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IG1v
enByb2Nlc3MKIAorZnJvbSAucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKKwogCiBfX2FsbF9fID0g
WyJTZWxlbml1bVNlcnZlciIsICJDaHJvbWVEcml2ZXJTZXJ2ZXIiLCAiQ1dUQ2hyb21lRHJpdmVy
U2VydmVyIiwKICAgICAgICAgICAgIkVkZ2VDaHJvbWl1bURyaXZlclNlcnZlciIsICJPcGVyYURy
aXZlclNlcnZlciIsICJHZWNrb0RyaXZlclNlcnZlciIsCkBAIC01NSw3ICs1Nyw3IEBAIGNsYXNz
IFdlYkRyaXZlclNlcnZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcm9jID0gbW96cHJvY2Vz
cy5Qcm9jZXNzSGFuZGxlcigKICAgICAgICAgICAgIHNlbGYuX2NtZCwKICAgICAgICAgICAgIHBy
b2Nlc3NPdXRwdXRMaW5lPXNlbGYub25fb3V0cHV0LAotICAgICAgICAgICAgZW52PXNlbGYuZW52
LAorICAgICAgICAgICAgZW52PWNhc3RfZW52KHNlbGYuZW52KSwKICAgICAgICAgICAgIHN0b3Jl
T3V0cHV0PUZhbHNlKQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBXZWJE
cml2ZXI6ICVzIiAlICcgJy5qb2luKHNlbGYuX2NtZCkpCkBAIC04MiwxNCArODQsMTMgQEAgY2xh
c3MgV2ViRHJpdmVyU2VydmVyKG9iamVjdCk6CiAKICAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1G
YWxzZSk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBXZWJEcml2ZXIiKQot
ICAgICAgICBpZiBzZWxmLmlzX2FsaXZlOgorICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6CiAg
ICAgICAgICAgICBraWxsX3Jlc3VsdCA9IHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgICBp
ZiBmb3JjZSBhbmQga2lsbF9yZXN1bHQgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fcHJvYy5raWxsKDkpCiAgICAgICAgICAgICByZXR1cm4ga2lsbF9yZXN1bHQKLSAgICAgICAg
cmV0dXJuIG5vdCBzZWxmLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2
ZSgpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJl
dHVybiBoYXNhdHRyKHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlz
IE5vbmUKIApAQCAtMTg0LDcgKzE4NSwxMSBAQCBjbGFzcyBHZWNrb0RyaXZlclNlcnZlcihXZWJE
cml2ZXJTZXJ2ZXIpOgogICAgICAgICAgICAgICAgICBob3N0PSIxMjcuMC4wLjEiLCBwb3J0PU5v
bmUsIGFyZ3M9Tm9uZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAg
IGVudlsiUlVTVF9CQUNLVFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52
LCBhcmdzPWFyZ3MpCisgICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIGJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9y
dCA9IG1hcmlvbmV0dGVfcG9ydAogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxmKToKQEAgLTIw
OSw3ICsyMTQsMTEgQEAgY2xhc3MgU2Vydm9Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToK
ICAgICAgICAgICAgICAgICAgcG9ydD1Ob25lLCBhcmdzPU5vbmUpOgogICAgICAgICBlbnYgPSBv
cy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBlbnZbIlJVU1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAg
ICAgICAgV2ViRHJpdmVyU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0
PWhvc3QsIHBvcnQ9cG9ydCwgZW52PWVudiwgYXJncz1hcmdzKQorICAgICAgICBXZWJEcml2ZXJT
ZXJ2ZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3J0PXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9l
bnYoZW52KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncykKICAg
ICAgICAgc2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCiAKICAgICBkZWYgbWFrZV9jb21t
YW5kKHNlbGYpOgpAQCAtMjY0LDcgKzI3Myw3IEBAIGRlZiB3YWl0X2Zvcl9zZXJ2aWNlKGFkZHIs
IHRpbWVvdXQ9NjApOgogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAg
ICBwYXNzCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlm
IGVbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBl
cnJuby5FQ09OTlJFRlVTRUQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29t
bWFuZGxpbmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggOTIzYmRh
YTU1ODU3ZTc5M2U4ZDZlOGM1ODcxNjczNjBhZWQ0YWU5NC4uOTYyMjdiYjQ2OTA1ZTE2OGQ2OTFl
MzUwOTQ2ZGJmYmE2ODA5ODI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRs
aW5lLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSw0ICsxLDQg
QEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNl
CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTE2LDkgKzE2LDkgQEAgZGVmIGFic19wYXRoKHBh
dGgpOgogCiAKIGRlZiB1cmxfb3JfcGF0aChwYXRoKToKLSAgICBpbXBvcnQgdXJscGFyc2UKKyAg
ICBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAKLSAgICBwYXJz
ZWQgPSB1cmxwYXJzZS51cmxwYXJzZShwYXRoKQorICAgIHBhcnNlZCA9IHVybHBhcnNlKHBhdGgp
CiAgICAgaWYgbGVuKHBhcnNlZC5zY2hlbWUpID4gMjoKICAgICAgICAgcmV0dXJuIHBhdGgKICAg
ICBlbHNlOgpAQCAtMzcsNyArMzcsNyBAQCBkZWYgcmVxdWlyZV9hcmcoa3dhcmdzLCBuYW1lLCB2
YWx1ZV9mdW5jPU5vbmUpOgogZGVmIGNyZWF0ZV9wYXJzZXIocHJvZHVjdF9jaG9pY2VzPU5vbmUp
OgogICAgIGZyb20gbW96bG9nIGltcG9ydCBjb21tYW5kbGluZQogCi0gICAgaW1wb3J0IHByb2R1
Y3RzCisgICAgZnJvbSAuIGltcG9ydCBwcm9kdWN0cwogCiAgICAgaWYgcHJvZHVjdF9jaG9pY2Vz
IGlzIE5vbmU6CiAgICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnLmxvYWQoKQpAQCAtMTM3LDYg
KzEzNywxNCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgbGlzdGluZyB0ZXN0cyB0
byBpbmNsdWRlIikKICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2tp
cC10aW1lb3V0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byB0aW1l
IG91dCIpCisgICAgdGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtaW1w
bGVtZW50YXRpb24tc3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uPSJhcHBlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaG9pY2VzPVsibm90LWltcGxlbWVudGluZyIsICJiYWNrbG9nIiwgImltcGxlbWVudGluZyJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3Rz
IHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24gc3RhdHVzIikKKyAgICAjIFRPRE86
IFJlbW92ZSB0aGlzIHdoZW4gUVVJQyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgdGVzdF9z
ZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1xdWljIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0iRW5hYmxlIHRlc3RzIHRoYXQgcmVxdWlyZSBRVUlDIHNlcnZlciAoZGVmYXVs
dDogZmFsc2UpIikKKwogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10
YWciLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRl
IGluIHRoZSBydW4uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTGFiZWxzIHN0YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVj
dG9yaWVzLiIpCkBAIC0yMTAsMTMgKzIxOCwxNyBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxl
IikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rp
b249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1O
b25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxsb3cgdGhlIHdwdHJ1
bm5lciB0byBpbnN0YWxsIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9Ikluc3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91
ciBzeXN0ZW0iKQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8taW5zdGFsbC1m
b250cyIsIGRlc3Q9Imluc3RhbGxfZm9udHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBpbnN0YWxsIGFkZGl0aW9uYWwg
c3lzdGVtIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLWZvbnQtZGlyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImZv
bnRfZGlyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbG9j
YWwgZm9udCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZp
Z19ncm91cC5hZGRfYXJndW1lbnQoIi0taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX3RydWUiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJyb3dzZXIgaW4gaGVhZGxl
c3MgbW9kZSIsIGRlZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCIt
LW5vLWhlYWRsZXNzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImhlYWRsZXNzIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJ1biBicm93c2VyIGluIGhl
YWRsZXNzIG1vZGUiKQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5zdHJ1bWVu
dC10by1maWxlIiwgYWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJQYXRoIHRvIHdyaXRlIGluc3RydW1lbnRhdGlvbiBsb2dzIHRvIikKIAogICAgIGJ1
aWxkX3R5cGUgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgYnVp
bGRfdHlwZS5hZGRfYXJndW1lbnQoIi0tZGVidWctYnVpbGQiLCBkZXN0PSJkZWJ1ZyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCkBAIC0yNTUsMTIgKzI2NywyMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9y
dC4iIiIpCiAgICAgZ2Vja29fZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZWNr
by1zcGVjaWZpYyIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXByZWZzLXJvb3Qi
LCBkZXN0PSJwcmVmc19yb290IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGZvbGRlciBjb250YWlu
aW5nIGJyb3dzZXIgcHJlZnMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVs
b2FkLWJyb3dzZXIiLCBkZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IlByZWxv
YWQgYSBnZWNrbyBpbnN0YW5jZSBmb3IgZmFzdGVyIHJlc3RhcnRzIikKKyAgICBnZWNrb19ncm91
cC5hZGRfYXJndW1lbnQoIi0tbm8tcHJlbG9hZC1icm93c2VyIiwgZGVzdD0icHJlbG9hZF9icm93
c2VyIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9Tm9uZSwgaGVscD0iRG9uJ3QgcHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBm
YXN0ZXIgcmVzdGFydHMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxl
LWUxMHMiLCBkZXN0PSJnZWNrb19lMTBzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9
VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGhv
dXQgZWxlY3Ryb2x5c2lzIHByZWZlcmVuY2VzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tZW5hYmxlLXdlYnJlbmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9IkVuYWJsZSB0aGUgV2ViUmVuZGVyIGNvbXBvc2l0b3IgaW4gR2Vja28gKGRlZmF1bHRz
IHRvIGRpc2FibGVkKS4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFi
bGUtd2VicmVuZGVyIiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfZmFs
c2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBXZWJS
ZW5kZXIgY29tcG9zaXRvciBpbiBHZWNrby4iKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVu
dCgiLS1lbmFibGUtZmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNzaW9uIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJFbmFibGUgZmlzc2lvbiBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAg
Z2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5h
YmxlX2Zpc3Npb24iLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iRGlzYWJsZSBmaXNzaW9uIGluIEdlY2tvLiIpCiAgICAgZ2Vja29fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLXN0YWNrZml4LWRpciIsIGRlc3Q9InN0YWNrZml4X2RpciIsIGFj
dGlvbj0ic3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRv
IGRpcmVjdG9yeSBjb250YWluaW5nIGFzc2VydGlvbiBzdGFjayBmaXhpbmcgc2NyaXB0cyIpCiAg
ICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNldHByZWYiLCBkZXN0PSJleHRyYV9wcmVm
cyIsIGFjdGlvbj0nYXBwZW5kJywKQEAgLTUzNCw5ICs1NTQsNiBAQCBkZWYgY2hlY2tfYXJncyhr
d2FyZ3MpOgogICAgICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJdID0gcGF0aAogCiAgICAg
aWYga3dhcmdzWydleHRyYV9wcmVmcyddOgotICAgICAgICAjIElmIGEgc2luZ2xlIHByZWYgaXMg
cGFzc2VkIGluIGFzIGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAotICAgICAgICBpZiB0eXBlKGt3
YXJnc1snZXh0cmFfcHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICBrd2Fy
Z3NbJ2V4dHJhX3ByZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcyddXQogICAgICAgICBtaXNz
aW5nID0gYW55KCc9JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBpbiBrd2FyZ3NbJ2V4dHJh
X3ByZWZzJ10pCiAgICAgICAgIGlmIG1pc3Npbmc6CiAgICAgICAgICAgICBwcmludCgiUHJlZmVy
ZW5jZXMgdmlhIC0tc2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5
cy5zdGRlcnIpCkBAIC01NTMsNiArNTcwLDEwIEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAg
ICAgaWYga3dhcmdzWyJlbmFibGVfd2VicmVuZGVyIl0gaXMgTm9uZToKICAgICAgICAga3dhcmdz
WyJlbmFibGVfd2VicmVuZGVyIl0gPSBGYWxzZQogCisgICAgaWYga3dhcmdzWyJwcmVsb2FkX2Jy
b3dzZXIiXSBpcyBOb25lOgorICAgICAgICAjIERlZmF1bHQgdG8gcHJlbG9hZGluZyBhIGdlY2tv
IGluc3RhbmNlIGlmIHdlJ3JlIG9ubHkgcnVubmluZyBhIHNpbmdsZSBwcm9jZXNzCisgICAgICAg
IGt3YXJnc1sicHJlbG9hZF9icm93c2VyIl0gPSBrd2FyZ3NbInByb2Nlc3NlcyJdID09IDEKKwog
ICAgIHJldHVybiBrd2FyZ3MKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2lu
Zy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CmluZGV4IDY5Y2VlNzQ0ODc5ZWI2Nzgw
Y2I5OWVjOTMxMjM5MjJlMTY2ZDllMTYuLjQ0NGQxZDk2MmQyNTg3MzEwOTk3N2I5MzdkOTZjODZj
YjI5M2NkOGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBzZXR1cChhcmdz
LCBkZWZhdWx0cywgZm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0ZXJfZGVm
YXVsdHMpCiAgICAgc2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKLSAgICBmb3IgbmFtZSBpbiBhcmdz
LmtleXMoKToKKyAgICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYg
bmFtZS5zdGFydHN3aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CmluZGV4IDQ1ZTIxNDdmYzRj
YTUwOWE5ZGUyOGZjZGNiYjcwN2Q4MjM0NTk3MTEuLmM1MzlkNDM2N2U5NGE1ZTUyNWM1ZDhkOGU5
ZWRjMzExNmU4YWZmZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNr
ZW5kcy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNl
LnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IGFiYworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVt
cywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9y
CiBmcm9tIC4ucGFyc2VyIGltcG9ydCBwYXJzZQpAQCAtMTg2LDIxICsxODcsMjEgQEAgY2xhc3Mg
TWFuaWZlc3RJdGVtKG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBy
diA9IHt9CiAgICAgICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAg
ICAgZm9yIG5hbWUsIHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAg
ICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAg
ICAgIGlmIG5hbWUgbm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZh
bHVlCiAgICAgICAgIHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAg
ICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBpdGVyaXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0
ZW0KIAogICAgIGRlZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5f
ZmxhdHRlbigpLml0ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYu
X2ZsYXR0ZW4oKSk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcnZhbHVl
cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJ2YWx1ZXMo
KToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLl9mbGF0dGVuKCkpOgogICAg
ICAgICAgICAgeWllbGQgaXRlbQogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBjaGlsZCk6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKaW5kZXgg
YWFjZDc4NTcwNzJmNDIwYTIwOWFlZWZmNTU5ZWMyYWUyOTQxNzBiYS4uM2IxMWU4MzAxMmFiNTBm
ZTBlYTI0MGFlMDU2ZDAyYzg5NjhiNmE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5p
ZmVzdC9iYWNrZW5kcy9jb25kaXRpb25hbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcGVy
YXRvcgorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCB0
ZXh0X3R5cGUKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29u
ZGl0aW9uYWxOb2RlLCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4
cHJlc3Npb25Ob2RlLCBWYXJpYWJsZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBA
IC00Miw5ICs0Myw3IEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIHNlbGYuY29uZGl0aW9uX2Z1bmMocnVuX2luZm8pCiAKICAgICBkZWYgc2V0X3ZhbHVl
KHNlbGYsIHZhbHVlKToKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChzdHIsIHVuaWNv
ZGUpOgotICAgICAgICAgICAgdmFsdWUgPSB1bmljb2RlKHZhbHVlKQotICAgICAgICBzZWxmLnZh
bHVlID0gdmFsdWUKKyAgICAgICAgc2VsZi52YWx1ZSA9IGVuc3VyZV90ZXh0KHZhbHVlKQogCiAg
ICAgZGVmIHZhbHVlX2FzKHNlbGYsIHR5cGVfZnVuYyk6CiAgICAgICAgICIiIkdldCB2YWx1ZSBh
bmQgY29udmVydCB0byBhIGdpdmVuIHR5cGUuCkBAIC0zMDEsOSArMzAwLDkgQEAgY2xhc3MgTWFu
aWZlc3RJdGVtKG9iamVjdCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgog
ICAgICAgICAgICAgdmFsdWVfbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgICAgIGZvciBpdGVt
IGluIHZhbHVlOgotICAgICAgICAgICAgICAgIHZhbHVlX25vZGUuYXBwZW5kKFZhbHVlTm9kZSh1
bmljb2RlKGl0ZW0pKSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5v
ZGUodGV4dF90eXBlKGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25v
ZGUgPSBWYWx1ZU5vZGUodW5pY29kZSh2YWx1ZSkpCisgICAgICAgICAgICB2YWx1ZV9ub2RlID0g
VmFsdWVOb2RlKHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgQ29uZGl0aW9u
YWxOb2RlKToKICAgICAgICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxO
b2RlKCkKQEAgLTM2OSwxOSArMzY4LDIzIEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgog
ICAgIGRlZiBfZmxhdHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3Igbm9k
ZSBpbiBbc2VsZiwgc2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBu
b2RlLl9kYXRhLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0
ZXJpdGVtcyhub2RlLl9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoK
ICAgICAgICAgICAgICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYK
IAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2Zs
YXR0ZW4oKS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKHNlbGYu
X2ZsYXR0ZW4oKSk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMo
c2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVya2V5cygpOgor
ICAgICAgICBmb3IgaXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAg
ICAgeWllbGQgaXRlbQogCisgICAgZGVmIGl0ZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGl0ZW0sIHNlbGYuX2Rh
dGFbaXRlbV0KKwogICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAg
ICAgIGlmIGtleSBub3QgaW4gc2VsZi5fZGF0YToKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3Qvbm9kZS5weQppbmRleCA3N2IxN2E1MDMyNWM3NzA2NzM5MWFiNjYzOWQwZTAyOWUz
Mzk1MDQ3Li4wZjgyZDcwMDZiNjllZDBlNDg1MjkwMzg3YjY1NzY4Yjg1OWE4NzAwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0bWFuaWZlc3Qvbm9kZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9y
dCB4cmFuZ2UKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBjbGFzcyBOb2RlVmlzaXRv
cihvYmplY3QpOgogICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKQEAgLTU5LDcgKzU5LDcgQEAg
Y2xhc3MgRGF0YU5vZGUoTm9kZSk6CiAgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLmNoaWxk
cmVuKQogICAgICAgICAgICAgd2hpbGUgaW5kZXggPiAwIGFuZCBpc2luc3RhbmNlKHNlbGYuY2hp
bGRyZW5baW5kZXggLSAxXSwgRGF0YU5vZGUpOgogICAgICAgICAgICAgICAgIGluZGV4IC09IDEK
LSAgICAgICAgICAgIGZvciBpIGluIHhyYW5nZShpbmRleCk6CisgICAgICAgICAgICBmb3IgaSBp
biByYW5nZShpbmRleCk6CiAgICAgICAgICAgICAgICAgaWYgb3RoZXIuZGF0YSA9PSBzZWxmLmNo
aWxkcmVuW2ldLmRhdGE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkR1
cGxpY2F0ZSBrZXkgJXMiICUgc2VsZi5jaGlsZHJlbltpXS5kYXRhKQogICAgICAgICAgICAgc2Vs
Zi5jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIG90aGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdG1hbmlmZXN0L3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIu
cHkKaW5kZXggNjJjNWY3ZDNhNDY3OWNhOWFlYTk2MWFmZWNjNjNmMjVlN2E1NDk2Mi4uOTExZWZh
YzgwZjI3ZWU5MmRmN2ZiZWE1NzdjNDE0NjkxODk5Nzc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
cGFyc2VyLnB5CkBAIC0xNCw4ICsxNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5p
Y29kZV9saXRlcmFscwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwg
Qnl0ZXNJTwotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXggaW1wb3J0IGJp
bmFyeV90eXBlLCB0ZXh0X3R5cGUsIEJ5dGVzSU8sIHVuaWNocgorZnJvbSBzaXgubW92ZXMgaW1w
b3J0IHJhbmdlCiAKIGZyb20gLm5vZGUgaW1wb3J0IChOb2RlLCBBdG9tTm9kZSwgQmluYXJ5RXhw
cmVzc2lvbk5vZGUsIEJpbmFyeU9wZXJhdG9yTm9kZSwKICAgICAgICAgICAgICAgICAgICBDb25k
aXRpb25hbE5vZGUsIERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUs
CkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICBzZWxm
LnN0YXRlID0gc2VsZi5saW5lX3N0YXJ0X3N0YXRlCiAgICAgICAgIHNlbGYubmV4dF9zdGF0ZSA9
IHNlbGYuZGF0YV9saW5lX3N0YXRlCiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSAwCisgICAg
ICAgIHNlbGYuZmlsZW5hbWUgPSAiIgogCiAgICAgZGVmIHRva2VuaXplKHNlbGYsIHN0cmVhbSk6
CiAgICAgICAgIHNlbGYucmVzZXQoKQpAQCAtMTM2LDkgKzEzNywxMCBAQCBjbGFzcyBUb2tlbml6
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5hcHBlbmQoc2VsZi5p
bmRleCkKICAgICAgICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9zdGFydCwgTm9uZSkK
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVu
dF9sZXZlbHNbLTFdOgotICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQot
ICAgICAgICAgICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCisgICAg
ICAgICAgICBpZiBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAg
ICAgICAgICB3aGlsZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbmRlbnRfbGV2ZWxzLnBvcCgpCisgICAgICAgICAgICAgICAg
ICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCiAgICAgICAgICAgICAgICAg
IyBUaGlzIGlzIHRlcnJpYmxlOyBpZiB3ZSB3ZXJlIHBhcnNpbmcgYW4gZXhwcmVzc2lvbgogICAg
ICAgICAgICAgICAgICMgdGhlbiB0aGUgbmV4dF9zdGF0ZSB3aWxsIGJlIGV4cHJfb3JfdmFsdWUg
YnV0IHdoZW4gd2UgZGVpbmRlbnQKICAgICAgICAgICAgICAgICAjIGl0IG11c3QgYWx3YXlzIGJl
IGEgaGVhZGluZyBvciBrZXkgbmV4dCBzbyB3ZSBnbyBiYWNrIHRvIGRhdGFfbGluZV9zdGF0ZQpA
QCAtMzAzLDcgKzMwNSw4IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogCiAgICAgZGVmIHZh
bHVlX3N0YXRlKHNlbGYpOgogICAgICAgICBzZWxmLnNraXBfd2hpdGVzcGFjZSgpCi0gICAgICAg
IGlmIHNlbGYuY2hhcigpIGluICgiJyIsICciJyk6CisgICAgICAgIGMgPSBzZWxmLmNoYXIoKQor
ICAgICAgICBpZiBjIGluICgiJyIsICciJyk6CiAgICAgICAgICAgICBxdW90ZV9jaGFyID0gc2Vs
Zi5jaGFyKCkKICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICB5aWVsZCAo
dG9rZW5fdHlwZXMuc3RyaW5nLCBzZWxmLmNvbnN1bWVfc3RyaW5nKHF1b3RlX2NoYXIpKQpAQCAt
MzExLDEwICszMTQsMTIgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgc2VsZi5zdGF0ZSA9IHNlbGYuY29tbWVudF9zdGF0ZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5saW5lX2VuZF9zdGF0ZQotICAgICAgICBl
bGlmIHNlbGYuY2hhcigpID09ICJAIjoKKyAgICAgICAgZWxpZiBjID09ICJAIjoKICAgICAgICAg
ICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICBmb3IgXywgdmFsdWUgaW4gc2VsZi52YWx1
ZV9pbm5lcl9zdGF0ZSgpOgogICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuX3R5cGVzLmF0b20s
IHZhbHVlCisgICAgICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBzZWxmLnN0YXRlID0g
c2VsZi5saXN0X3N0YXJ0X3N0YXRlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0
YXRlID0gc2VsZi52YWx1ZV9pbm5lcl9zdGF0ZQogCkBAIC00OTQsNyArNDk5LDcgQEAgY2xhc3Mg
VG9rZW5pemVyKG9iamVjdCk6CiAKICAgICBkZWYgZGVjb2RlX2VzY2FwZShzZWxmLCBsZW5ndGgp
OgogICAgICAgICB2YWx1ZSA9IDAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbmd0aCk6Cisg
ICAgICAgIGZvciBpIGluIHJhbmdlKGxlbmd0aCk6CiAgICAgICAgICAgICBjID0gc2VsZi5jaGFy
KCkKICAgICAgICAgICAgIHZhbHVlICo9IDE2CiAgICAgICAgICAgICB2YWx1ZSArPSBzZWxmLmVz
Y2FwZV92YWx1ZShjKQpAQCAtNTk2LDYgKzYwMSw5IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgog
ICAgICAgICAgICAgc2VsZi5leHByZXNzaW9uX3ZhbHVlcygpCiAgICAgICAgICAgICBpZiBzZWxm
LnRva2VuWzBdID09IHRva2VuX3R5cGVzLnN0cmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnZh
bHVlKCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5saXN0
X3N0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCisgICAgICAgICAgICAgICAg
c2VsZi5saXN0X3ZhbHVlKCkKICAgICAgICAgICAgIHNlbGYuZW9mX29yX2VuZF9ncm91cCgpCiAg
ICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5hdG9tOgogICAgICAgICAg
ICAgc2VsZi5hdG9tKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJp
YWxpemVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKaW5kZXgg
M2IyOWM5OWVkZTdjYWM1OGVkZTVkNDgyMzc2OTZlMzBjOWQ4NTZjNy4uZWM4ZDgwZWQ2ZjcxNTFi
MjkxM2Y5NzVkZjBmYzM4N2ExMjdkZTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L3NlcmlhbGl6ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Nlcmlh
bGl6ZXIucHkKQEAgLTEsNyArMSwxMCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2Rl
X2xpdGVyYWxzCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQKKwogZnJvbSAubm9kZSBpbXBv
cnQgTm9kZVZpc2l0b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2Rl
CiBmcm9tIC5wYXJzZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMgPSB7
djoiQCVzIiAlIGsgZm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CithdG9tX25hbWVzID0ge3Y6
ICJAJXMiICUgayBmb3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAogbmFtZWRfZXNjYXBlcyA9
IHsiXGEiLCAiXGIiLCAiXGYiLCAiXG4iLCAiXHIiLCAiXHQiLCAiXHYifQogCkBAIC0xMCw3ICsx
Myw3IEBAIGRlZiBlc2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgIHJ2ID0gIiIKICAgICBm
b3IgYyBpbiBzdHJpbmc6CiAgICAgICAgIGlmIGMgaW4gbmFtZWRfZXNjYXBlczoKLSAgICAgICAg
ICAgIHJ2ICs9IGMuZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICBydiArPSBj
LmVuY29kZSgidW5pY29kZV9lc2NhcGUiKS5kZWNvZGUoKQogICAgICAgICBlbGlmIGMgPT0gIlxc
IjoKICAgICAgICAgICAgIHJ2ICs9ICJcXFxcIgogICAgICAgICBlbGlmIGMgPCAnXHgyMCc6CkBA
IC0xOSwxMCArMjIsNyBAQCBkZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICAgICAg
ICAgIHJ2ICs9ICJcXCIgKyBjCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiArPSBjCi0g
ICAgaWYgaXNpbnN0YW5jZShydiwgdW5pY29kZSk6Ci0gICAgICAgIHJldHVybiBydi5lbmNvZGUo
InV0ZjgiKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBydgorICAgIHJldHVybiBlbnN1cmVf
dGV4dChydikKIAogCiBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgpAQCAt
NzQsMTAgKzc0LDcgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAg
ICAgICAgcmV0dXJuIFsiIi5qb2luKHJ2KV0KIAogICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2Vs
Ziwgbm9kZSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUuZGF0YSwgKHN0ciwgdW5p
Y29kZSkpOgotICAgICAgICAgICAgZGF0YSA9IHVuaWNvZGUobm9kZS5kYXRhKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZGF0YSA9IG5vZGUuZGF0YQorICAgICAgICBkYXRhID0gZW5zdXJl
X3RleHQobm9kZS5kYXRhKQogICAgICAgICBpZiAoIiMiIGluIGRhdGEgb3IKICAgICAgICAgICAg
IGRhdGEuc3RhcnRzd2l0aCgiaWYgIikgb3IKICAgICAgICAgICAgIChpc2luc3RhbmNlKG5vZGUu
cGFyZW50LCBMaXN0Tm9kZSkgYW5kCkBAIC0xMDMsNyArMTAwLDcgQEAgY2xhc3MgTWFuaWZlc3RT
ZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdmlz
aXRfTnVtYmVyTm9kZShzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRh
KV0KKyAgICAgICAgcmV0dXJuIFtlbnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZp
c2l0X1ZhcmlhYmxlTm9kZShzZWxmLCBub2RlKToKICAgICAgICAgcnYgPSBlc2NhcGUobm9kZS5k
YXRhKQpAQCAtMTM3LDEwICsxMzQsMTAgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVW
aXNpdG9yKToKICAgICAgICAgcmV0dXJuIFsiICIuam9pbihjaGlsZHJlbildCiAKICAgICBkZWYg
dmlzaXRfVW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3Ry
KG5vZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAog
ICAgIGRlZiB2aXNpdF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJl
dHVybiBbc3RyKG5vZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5k
YXRhKV0KIAogCiBkZWYgc2VyaWFsaXplKHRyZWUsICphcmdzLCAqKmt3YXJncyk6CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CmluZGV4
IGZiYzc1ZWM4MzkwZmEzNGFiN2UzY2FhMzkxYzNlNmU3ODM3YTU1NGQuLmFmNGQ5OTYwMzIyYzdl
OGRmY2NiMDc2YTJlNDY2MTI1NDU3ZDE4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CkBAIC0xLDE5ICsxLDE1IEBACi1pbXBv
cnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLmJhY2tlbmRz
IGltcG9ydCBjb25kaXRpb25hbAogZnJvbSAuLm5vZGUgaW1wb3J0IEJpbmFyeUV4cHJlc3Npb25O
b2RlLCBCaW5hcnlPcGVyYXRvck5vZGUsIFZhcmlhYmxlTm9kZSwgTnVtYmVyTm9kZQogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFz
cyBUZXN0Q29uZGl0aW9uYWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNl
bGYsIGlucHV0X3RleHQpOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShpbnB1
dF90ZXh0KQogCiAgICAgZGVmIHRlc3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIK
KyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI1LDE5
ICsyMSwxOSBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUo
ZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAi
dmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2
YWx1ZSIpCiAgICAgICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1hbmlmZXN0
Lml0ZXJjaGlsZHJlbigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hpbGRyZW4p
LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAgICAgICAg
IHNlY3Rpb24gPSBjaGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9u
Lm5hbWUsICJIZWFkaW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24ubmFt
ZSwgIkhlYWRpbmcgMSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQo
Im90aGVyX2tleSIsIHsiYSI6IDF9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSks
ICJ2YWx1ZV8zIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIp
LCAidmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9r
ZXkiLCB7ImEiOiAxfSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0
aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMi
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikK
IAogICAgIGRlZiB0ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAg
IGRhdGEgPSBiIiIiCiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MiwxMSArNDgsMTEg
QEAga2V5OiB2YWx1ZQogICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBt
YW5pZmVzdC5pdGVyY2hpbGRyZW4oKSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6
ICIxIn0pLCAidmFsdWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0
KCJvdGhlcl9rZXkiLCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0p
LCAidmFsdWVfMyIpCiAKICAgICBkZWYgdGVzdF9nZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9
ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhWzFdID09ICJiIjogdmFsdWVf
MQogICBpZiBhWzFdID09IDI6IHZhbHVlXzIKQEAgLTY1LDExICs2MSwxMSBAQCBrZXk6CiAKICAg
ICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0p
LCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYWIifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5p
ZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVz
dF9nZXRfMyhzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgog
a2V5OgogICBpZiBhWzFdID09ICJhYiJbMV06IHZhbHVlXzEKICAgaWYgYVsxXSA9PSAyOiB2YWx1
ZV8yCkBAIC03OCwxMSArNzQsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5j
b21waWxlKGRhdGEpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJr
ZXkiLCB7ImEiOiAiYWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
bWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0pLCAidmFsdWVf
MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBb
MSwgMl19KSwgInZhbHVlXzIiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzAoc2VsZik6Ci0gICAgICAg
IGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6IHZh
bHVlXzEKICAgaWYgYSA9PSAiYiI6IHZhbHVlXzIKQEAgLTkyLDEwICs4OCwxMCBAQCBrZXk6CiAK
ICAgICAgICAgbWFuaWZlc3Quc2V0KCJuZXdfa2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJuZXdfa2V5IiksICJ2YWx1ZV9uZXciKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVf
bmV3IikKIAogICAgIGRlZiB0ZXN0X3NldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisg
ICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEg
PT0gImIiOiB2YWx1ZV8yCkBAIC0xMDYsMTEgKzEwMiwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFu
aWZlc3Quc2V0KCJrZXkiLCAidmFsdWVfbmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2
YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X3NldF8yKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIi
CisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlm
IGEgPT0gImIiOiB2YWx1ZV8yCkBAIC0xMjUsMTEgKzEyMSwxMSBAQCBrZXk6CiAKICAgICAgICAg
bWFuaWZlc3Quc2V0KCJrZXkiLCAidmFsdWVfbmV3IiwgZXhwcikKIAotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSks
ICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIs
IHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZl
c3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBp
XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToK
ICAgaWYgYSA9PSAxLjU6IHZhbHVlXzEKICAgdmFsdWVfMgpAQCAtMTM4LDggKzEzNCw4IEBAIGtl
eV8xOiBvdGhlcl92YWx1ZQogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRy
dWUobWFuaWZlc3QuaGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSht
YW5pZmVzdC5oYXNfa2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNl
dChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggODA1
ZTQ3YjM3MWY1YTczMDc2NWYzZTVkMWFjNWY2Yzk0ZGMzZTk5Ny4uMjNiZWIyYmVmMjA4YTIxMTA3
YjEwODYyMGZkNTRmMWVjNTY1NGQ4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90
ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtMTgsOSArMTgsOSBAQCBjbGFzcyBUZXN0RXhwcmVzc2lv
bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWQsIGFjdHVh
bCkKIAogICAgIGRlZiBtYXRjaChzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9f
Y2xhc3NfXy5fX25hbWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9k
ZVsxXSwgYWN0dWFsX25vZGUuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGV4
cGVjdGVkX25vZGVbMl0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25h
bWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxf
bm9kZS5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9ub2RlWzJd
KSwgbGVuKGFjdHVhbF9ub2RlLmNoaWxkcmVuKSkKICAgICAgICAgZm9yIGV4cGVjdGVkX2NoaWxk
LCBhY3R1YWxfY2hpbGQgaW4gemlwKGV4cGVjdGVkX25vZGVbMl0sIGFjdHVhbF9ub2RlLmNoaWxk
cmVuKToKICAgICAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGls
ZCkKIApAQCAtMTA1LDYgKzEwNSw0NSBAQCBrZXk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMocGFyc2VyLlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTog
QHRydWUiKQogCisgICAgZGVmIHRlc3RfbGlzdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLmNv
bXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTogW2FdCisgIFtiXSIi
IiwKKyAgICAgICAgICAgIFsiRGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZh
bHVlTm9kZSIsICJrZXkiLAorICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9u
ZSwKKyAgICAgICAgICAgICAgICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAg
ICAgICAgICAgICAgICAgIFtbIkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAg
ICAgICAgICAgICAgICAgWyJWYXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgWyJOdW1iZXJOb2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0s
CisgICAgICAgICAgICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBbWyJWYWx1ZU5vZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV0s
CisgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtb
IlZhbHVlTm9kZSIsICJiIiwgW11dXV1dXV1dKQorCisgICAgZGVmIHRlc3RfbGlzdF9oZWFkaW5n
KHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6Cisg
IGlmIHggPT0gMTogW2FdCitbYl0iIiIsCisgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwK
KyAgICAgICAgICAgICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKKyAgICAgICAgICAgICAgIFtb
IkNvbmRpdGlvbmFsTm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJl
c3Npb25Ob2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5v
ZGUiLCAiPT0iLCBbXV0sCisgICAgICAgICAgICAgICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngi
LCBbXV0sCisgICAgICAgICAgICAgICAgICAgICAgIFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisg
ICAgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIs
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwK
KyAgICAgICAgICAgICAgICAgIF1dXV0sCisgICAgICAgICAgICAgIFsiRGF0YU5vZGUiLCAiYiIs
IFtdXV1dKQorCiAgICAgZGVmIHRlc3RfaWZfMShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGIi
a2V5OiBpZiBmb28iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc2VyaWFsaXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0
X3NlcmlhbGl6ZXIucHkKaW5kZXggN2ZlN2FjODVjYjhhMTRmMDUxMTNjYmZkNDgzYjhkMDQyYTA3
Yjk4OS4uYjI0Nzg1NTgwMWVhYzY1ODlhZWJkNDU1NWM2ZDllODY1M2UxMmU0ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC02
LDggKzYsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBwYXJzZXIsIHNlcmlhbGl6
ZXIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNl
dFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyLk1hbmlmZXN0
U2VyaWFsaXplcigpCkBAIC0xOCwyNiArMTYsMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbnB1dF9zdHIsIGV4cGVj
dGVkPU5vbmUpOgogICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lOgotICAgICAgICAgICAgZXhw
ZWN0ZWQgPSBpbnB1dF9zdHIKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5lbmNvZGUoInV0
ZjgiKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnB1dF9zdHIuZGVjb2RlKCJ1dGYtOCIpCiAg
ICAgICAgIGFjdHVhbCA9IHNlbGYuc2VyaWFsaXplKGlucHV0X3N0cikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChh
Y3R1YWwsIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5j
b21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVl
CiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYg
dGVzdF8xKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAg
ICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToK
ICAgICBpZiBhIG9yIGI6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8yKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9y
IGI6IG90aGVyX3ZhbHVlCkBAIC00NSw3ICs0Miw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMyhzZWxmKToKLSAgICAgICAg
c2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6
IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAxOiBvdGhlcl92
YWx1ZQpAQCAtNTMsNyArNTAsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFy
ZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hl
YWRpbmcgMV0KICAgb3RoZXJfa2V5OgogICAgIGlmIGEgPT0gIjEiOiBvdGhlcl92YWx1ZQpAQCAt
NjEsNyArNTgsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIi
IikKIAogICAgIGRlZiB0ZXN0XzUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6
IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0K
ICAgb3RoZXJfa2V5OgogICAgIGlmIGEgPT0gImFiYyJbMV06IG90aGVyX3ZhbHVlCkBAIC02OSw3
ICs2Niw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQog
CiAgICAgZGVmIHRlc3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFs
dWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBv
dGhlcl9rZXk6CiAgICAgaWYgYSA9PSAiYWJjIltjXTogb3RoZXJfdmFsdWUKQEAgLTc3LDcgKzc0
LDcgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAg
ICBkZWYgdGVzdF83KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQor
ICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVy
X2tleToKICAgICBpZiAoYSBvciBiKSBhbmQgYzogb3RoZXJfdmFsdWUKQEAgLTkxLDcgKzg4LDcg
QEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBk
ZWYgdGVzdF84KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAg
ICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tl
eToKICAgICBpZiBhIG9yIChiIGFuZCBjKTogb3RoZXJfdmFsdWUKQEAgLTk5LDcgKzk2LDcgQEAg
Y2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYg
dGVzdF85KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAg
ICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToK
ICAgICBpZiBub3QgKGEgYW5kIGIpOiBvdGhlcl92YWx1ZQpAQCAtMTA3LDcgKzEwNCw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAg
IHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgc29tZV9rZXk6IHNv
bWVfdmFsdWUKIApAQCAtMTE2LDEyMSArMTEzLDEyNSBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzExKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUoIiIia2V5OgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleToKICAg
aWYgbm90IGEgYW5kIGIgYW5kIGMgYW5kIGQ6IHRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0XzEy
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIiW0hlYWRpbmcgMV0KKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGIiIiJbSGVhZGluZyAxXQogICBrZXk6IFthOjEsIGI6Ml0KICIiIikKIAogICAg
IGRlZiB0ZXN0XzEzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbYToxLCAi
YjojIl0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthOjEsICJiOiMiXQogIiIiKQog
CiAgICAgZGVmIHRlc3RfMTQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsi
LCJdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBbIiwiXQogIiIiKQogCiAgICAgZGVm
IHRlc3RfMTUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6ICwKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6ICwKICIiIikKIAogICAgIGRlZiB0ZXN0XzE2KHNlbGYpOgot
ICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbIl0iLCBiXQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogWyJdIiwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE3KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5
OiBdCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJl
KHIiIiJrZXk6IFxdCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXF0KICAgICAgICAg
IiIiLCAiIiJrZXk6IF0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8wKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCisgICAgICAg
IHNlbGYuY29tcGFyZShiciIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCiAgICAgICAgICAg
ICAgICAgICAgICByIiIia1x0XDp5OiBceDA3XHgwOFx4MGNcblxyXHRceDBiCiAiIiIpCiAKICAg
ICBkZWYgdGVzdF9lc2NhcGVfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHgw
MDogXHgxMkFceDQ1IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHgwMDogXHgxMkFc
eDQ1IiIiLAogICAgICAgICAgICAgICAgICAgICAgciIiImtceDAwOiBceDEyQUUKICIiIikKIAog
ICAgIGRlZiB0ZXN0X2VzY2FwZV8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtc
dTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHUw
MDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrRXk6IFx1
MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8zKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBz
ZWxmLmNvbXBhcmUoYnIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAg
ICAgICAgICAgIHUiIiJrRXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2Vz
Y2FwZV80KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogJ1x1MTIzNEFcdUFC
YzYnIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIi
IiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAog
ICAgIGRlZiB0ZXN0X2VzY2FwZV81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtl
eTogW1x1MTIzNEFcdUFCYzZdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtc
dTEyMzRBXHVBQmM2XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFtcdTEyMzRB
XHVhYmM2XQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzYoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKKyAgICAgICAgc2VsZi5j
b21wYXJlKGJyIiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKICAgICAgICAgICAgICAgICAg
ICAgIHUiIiJrZXk6IFsiXHUxMjM0QVx1YWJjNiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNj
YXBlXzcoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBbXCxcXVwjXSIiIiwK
KyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBbXCxcXVwjXSIiIiwKICAgICAgICAgICAg
ICAgICAgICAgIHIiIiJrZXk6IFsiLF0jIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV84
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXCMiIiIsCisgICAgICAgIHNl
bGYuY29tcGFyZShiciIiImtleTogXCMiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia2V5
OiAiIyIKICIiIikKIAogICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMubWF4dW5pY29kZSA9PSAw
eEZGRkYsIHJlYXNvbj0ibmFycm93IHVuaWNvZGUiKQogICAgIGRlZiB0ZXN0X2VzY2FwZV85KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXFUxMEZGRkZhYmMiIiIsCisgICAg
ICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXFUxMEZGRkZhYmMiIiIsCiAgICAgICAgICAgICAg
ICAgICAgICB1IiIia2V5OiBcVTAwMTBGRkZGYWJjCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2Nh
cGVfMTAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcdTEwRkZhYiIiIiwK
KyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBcdTEwRkZhYiIiIiwKICAgICAgICAgICAg
ICAgICAgICAgIHUiIiJrZXk6IFx1MTBGRmFiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVf
MTEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcXGFiCisgICAgICAgIHNl
bGYuY29tcGFyZShiciIiImtleTogXFxhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8xKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogQFRydWUKKyAgICAgICAgc2VsZi5j
b21wYXJlKGJyIiIia2V5OiBAVHJ1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8yKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogQEZhbHNlCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogQEZhbHNlCiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzMoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBAUmVzZXQKKyAgICAgICAgc2VsZi5jb21w
YXJlKGJyIiIia2V5OiBAUmVzZXQKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fNChzZWxmKToK
LSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCisgICAgICAgIHNl
bGYuY29tcGFyZShiciIiImtleTogW2EsIEBSZXNldCwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0
X2NvbmRpdGlvbmFsXzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286CisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQogCiAg
ICAgZGVmIHRlc3RfaWZfc3RyaW5nXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJm
b286ICJpZiBiYXIiCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOiAiaWYgYmFyIgorIiIi
KQorCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpXzEoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIiW1x4ZjBceDlmXHg5OVx4ODRdCiAiIiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZl
c3QvdGVzdHMvdGVzdF9zdGF0aWMucHkKaW5kZXggYWFmODQ2NTkxNTI0NmFhYzU4YTA2OGRjZmMw
Njk3YjhjOWFmNDE4MS4uZTgxMWEyYjQyYjQ1NTBjY2VjMWNkYTlmNmIxYTJiOWJiMjcwZmFjZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAt
MSw1ICsxLDMgQEAKLWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIC4uYmFja2VuZHMgaW1wb3J0IHN0YXRpYwpAQCAtOCwxNCArNiwxMiBAQCBmcm9tIC4u
YmFja2VuZHMgaW1wb3J0IHN0YXRpYwogIyB1c2UgdGVzdF9zZXJpYWxpemVyIGZvciB0aGUgbWFq
b3JpdHkgb2YgY2FzZXMKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogY2xhc3MgVGVzdFN0YXRpYyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIGNvbXBpbGUoc2VsZiwgaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSk6CiAgICAgICAgIHJl
dHVybiBzdGF0aWMuY29tcGlsZShpbnB1dF90ZXh0LCBpbnB1dF9kYXRhKQogCiAgICAgZGVmIHRl
c3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIK
IGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI3LDE3ICsyMywxNyBAQCBrZXk6IHZhbHVl
CiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMn0pCiAKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQogICAg
ICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRy
ZW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9uID0g
Y2hpbGRyZW5bMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAiSGVh
ZGluZyAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFkaW5n
IDEiKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXki
KSwgInZhbHVlXzIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgia2V5
IiksICJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVy
X2tleSIpLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQo
ImtleSIpLCAidmFsdWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRh
dGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0K
QEAgLTUwLDMyICs0NiwzMiBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0
KGl0ZW0gZm9yIGl0ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rp
b24gPSBjaGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgi
b3RoZXJfa2V5IiksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYg
YSA9PSAiMSI6IHZhbHVlXzEKICAgaWYgYVswXSA9PSAiYWIiWzBdOiB2YWx1ZV8yCiAiIiIKICAg
ICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogIjEifSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAg
ICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAiYWMifSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAg
IGRlZiB0ZXN0X2dldF80KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBk
YXRhID0gYiIiImtleToKICAgaWYgbm90IGE6IHZhbHVlXzEKICAgdmFsdWVfMgogIiIiCiAgICAg
ICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IFRydWV9KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQogCiAgICAg
ICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IEZhbHNlfSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAg
IGRlZiB0ZXN0X2FwaShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0
YSA9IGIiIiJrZXk6CiAgIGlmIGEgPT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKIGtleV8xOiBv
dGhlcl92YWx1ZQpAQCAtODMsMTUgKzc5LDE1IEBAIGtleV8xOiBvdGhlcl92YWx1ZQogICAgICAg
ICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAxLjV9KQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNf
a2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5p
dGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
c2V0KG1hbmlmZXN0Lml0ZXJ2YWx1ZXMoKSksIHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXki
LCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcnZh
bHVlcygpKSwgeyJ2YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIn0pCiAKICAgICBkZWYgdGVzdF9pc19l
bXB0eV8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBb
U2VjdGlvbl0KICAgW1N1YnNlY3Rpb25dCiAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CmluZGV4IGNhYzE3MmE1OTQw
ZWM2OTZlM2EzYjI3OTE3MGY5NzEyYWFmNDY2OGQuLmQwY2MxOTQ4MWRiZGVkYzQ1ZWRmZWU5NjA4
ZDgyZGViNGExOTY1NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weQpAQCAtMywxOSArMywyMSBAQCBmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNv
bgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVy
dmFsdWVzCiAKIGZyb20gd3B0c2VydmUgaW1wb3J0IHNzbHV0aWxzCiAKLWltcG9ydCBlbnZpcm9u
bWVudCBhcyBlbnYKLWltcG9ydCBwcm9kdWN0cwotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3
cHRjb21tYW5kbGluZQotaW1wb3J0IHdwdGxvZ2dpbmcKLWltcG9ydCB3cHR0ZXN0Citmcm9tIC4g
aW1wb3J0IGVudmlyb25tZW50IGFzIGVudgorZnJvbSAuIGltcG9ydCBpbnN0cnVtZW50cworZnJv
bSAuIGltcG9ydCBwcm9kdWN0cworZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCitmcm9tIC4gaW1w
b3J0IHdwdGNvbW1hbmRsaW5lCitmcm9tIC4gaW1wb3J0IHdwdGxvZ2dpbmcKK2Zyb20gLiBpbXBv
cnQgd3B0dGVzdAogZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCi1mcm9tIGZv
bnQgaW1wb3J0IEZvbnRJbnN0YWxsZXIKLWZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdy
b3VwCi1mcm9tIGJyb3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCitmcm9tIC5mb250IGlt
cG9ydCBGb250SW5zdGFsbGVyCitmcm9tIC50ZXN0cnVubmVyIGltcG9ydCBNYW5hZ2VyR3JvdXAK
K2Zyb20gLmJyb3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCiAKIGhlcmUgPSBvcy5wYXRo
LnNwbGl0KF9fZmlsZV9fKVswXQogCkBAIC00Myw3ICs0NSw3IEBAIGRlZiBzZXR1cF9sb2dnaW5n
KCphcmdzLCAqKmt3YXJncyk6CiAgICAgcmV0dXJuIGxvZ2dlcgogCiAKLWRlZiBnZXRfbG9hZGVy
KHRlc3RfcGF0aHMsIHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAq
Kmt3YXJncyk6CitkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25l
LCBydW5faW5mb19leHRyYXM9Tm9uZSwgY2h1bmtlcl9rd2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgog
ICAgIGlmIHJ1bl9pbmZvX2V4dHJhcyBpcyBOb25lOgogICAgICAgICBydW5faW5mb19leHRyYXMg
PSB7fQogCkBAIC03Niw3ICs3OCwxMCBAQCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9k
dWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz1rd2FyZ3NbInRv
dGFsX2NodW5rcyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
dW5rX251bWJlcj1rd2FyZ3NbInRoaXNfY2h1bmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlX2h0dHBzPXNzbF9lbmFibGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGlt
ZW91dCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVf
cXVpYz1rd2FyZ3NbImVuYWJsZV9xdWljIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2tpcF90aW1lb3V0PWt3YXJnc1sic2tpcF90aW1lb3V0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0
dXM9a3dhcmdzWyJza2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzKQog
ICAgIHJldHVybiBydW5faW5mbywgdGVzdF9sb2FkZXIKIAogCkBAIC0xMDIsNyArMTA3LDcgQEAg
ZGVmIGxpc3RfZGlzYWJsZWQodGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgIHJ1
bl9pbmZvLCB0ZXN0X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1ydW5f
aW5mb19leHRyYXMsICoqa3dhcmdzKQogCi0gICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVz
dF9sb2FkZXIuZGlzYWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwg
dGVzdHMgaW4gaXRlcml0ZW1zKHRlc3RfbG9hZGVyLmRpc2FibGVkX3Rlc3RzKToKICAgICAgICAg
Zm9yIHRlc3QgaW4gdGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5p
ZCwgInJlYXNvbiI6IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwg
aW5kZW50PTIpKQpAQCAtMTI3LDcgKzEzMiw3IEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0
ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgdGVzdHMgPSB0ZXN0X2xvYWRlci50ZXN0
cwotICAgICAgICBpc19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRl
bSBpbiB0ZXN0cy5pdGVydmFsdWVzKCkpID09IDEgYW5kCisgICAgICAgIGlzX3NpbmdsZV90ZXN0
aGFybmVzcyA9IChzdW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9
PSAxIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgi
dGVzdGhhcm5lc3MiLCBbXSkpID09IDEpCiAgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0g
MSBhbmQga3dhcmdzWyJyZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xMzgsNyArMTQzLDEyIEBAIGRlZiBnZXRfcGF1c2Vf
YWZ0ZXJfdGVzdCh0ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogZGVmIHJ1bl90ZXN0cyhjb25maWcs
IHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAiIiJTZXQgdXAgdGhlIHRlc3Qg
ZW52aXJvbm1lbnQsIGxvYWQgdGhlIGxpc3Qgb2YgdGVzdHMgdG8gYmUgZXhlY3V0ZWQsIGFuZAog
ICAgIGludm9rZSB0aGUgcmVtYWluZGVyIG9mIHRoZSBjb2RlIHRvIGV4ZWN1dGUgdGVzdHMiIiIK
LSAgICB3aXRoIGNhcHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2FwdHVy
ZV9zdGRpbyJdKToKKyAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6
CisgICAgICAgIHJlY29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQorICAgIGVs
c2U6CisgICAgICAgIHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImlu
c3RydW1lbnRfdG9fZmlsZSJdKQorICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0
dXJlLkNhcHR1cmVJTyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6Cisg
ICAgICAgIHJlY29yZGluZy5zZXQoWyJzdGFydHVwIl0pCiAgICAgICAgIGVudi5kb19kZWxheWVk
X2ltcG9ydHMobG9nZ2VyLCB0ZXN0X3BhdGhzKQogCiAgICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0
cy5sb2FkX3Byb2R1Y3QoY29uZmlnLCBwcm9kdWN0LCBsb2FkX2Nscz1UcnVlKQpAQCAtMTQ5LDIy
ICsxNTksMjkgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoq
a3dhcmdzKToKIAogICAgICAgICBpZiBrd2FyZ3NbImluc3RhbGxfZm9udHMiXToKICAgICAgICAg
ICAgIGVudl9leHRyYXMuYXBwZW5kKEZvbnRJbnN0YWxsZXIoCisgICAgICAgICAgICAgICAgbG9n
Z2VyLAogICAgICAgICAgICAgICAgIGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKICAgICAg
ICAgICAgICAgICBhaGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgi
XSwgImZvbnRzL0FoZW0udHRmIikKICAgICAgICAgICAgICkpCiAKLSAgICAgICAgcnVuX2luZm8s
IHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5m
b19leHRyYXMoKiprd2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoqa3dhcmdzKQorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJsb2Fk
X3Rlc3RzIl0pCiAKICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBr
d2FyZ3NbInByb2Nlc3NlcyJdfQorICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAg
IGlmIGt3YXJnc1sicnVuX2J5X2RpciJdIGlzIEZhbHNlOgogICAgICAgICAgICAgdGVzdF9zb3Vy
Y2VfY2xzID0gdGVzdGxvYWRlci5TaW5nbGVUZXN0U291cmNlCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAjIEEgdmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgaW5maW5pdGUgZGVwdGgKICAgICAg
ICAgICAgIHRlc3Rfc291cmNlX2NscyA9IHRlc3Rsb2FkZXIuUGF0aEdyb3VwZWRTb3VyY2UKICAg
ICAgICAgICAgIHRlc3Rfc291cmNlX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2Rp
ciJdCisgICAgICAgICAgICBjaHVua2VyX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5
X2RpciJdCisKKyAgICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0
X3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1
Y3QubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5f
aW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKiprd2FyZ3MpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJf
a3dhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQorCiAKICAgICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nICVpIGNsaWVudCBwcm9jZXNzZXMi
ICUga3dhcmdzWyJwcm9jZXNzZXMiXSkKIApAQCAtMTg4LDE5ICsyMDUsMjQgQEAgZGVmIHJ1bl90
ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICB0
ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciA9IHByb2R1Y3QuZ2V0X3RpbWVvdXRfbXVsdGlw
bGllcigidGVzdGhhcm5lc3MiLCBydW5faW5mbywgKiprd2FyZ3MpCiAKKyAgICAgICAgcmVjb3Jk
aW5nLnNldChbInN0YXJ0dXAiLCAic3RhcnRfZW52aXJvbm1lbnQiXSkKICAgICAgICAgd2l0aCBl
bnYuVGVzdEVudmlyb25tZW50KHRlc3RfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LmVudl9vcHRpb25zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3NsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudl9leHRyYXMpIGFzIHRlc3RfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga3dhcmdzWyJlbmFibGVfcXVpYyJdKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAg
ICAgICAgcmVjb3JkaW5nLnNldChbInN0YXJ0dXAiLCAiZW5zdXJlX2Vudmlyb25tZW50Il0pCiAg
ICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5lbnN1cmVf
c3RhcnRlZCgpCiAgICAgICAgICAgICBleGNlcHQgZW52LlRlc3RFbnZpcm9ubWVudEVycm9yIGFz
IGU6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJFcnJvciBzdGFydGluZyB0ZXN0
IGVudmlyb25tZW50OiAlcyIgJSBlLm1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAor
ICAgICAgICAgICAgcmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKKwogICAgICAgICAgICAgcmVw
ZWF0ID0ga3dhcmdzWyJyZXBlYXQiXQogICAgICAgICAgICAgcmVwZWF0X2NvdW50ID0gMAogICAg
ICAgICAgICAgcmVwZWF0X3VudGlsX3VuZXhwZWN0ZWQgPSBrd2FyZ3NbInJlcGVhdF91bnRpbF91
bmV4cGVjdGVkIl0KQEAgLTIxNCw3ICsyMzYsMTIgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRl
c3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICAgICAgICAgIHRlc3RfY291
bnQgPSAwCiAgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCA9IDAKLSAgICAgICAgICAg
ICAgICBsb2dnZXIuc3VpdGVfc3RhcnQodGVzdF9sb2FkZXIudGVzdF9pZHMsCisKKyAgICAgICAg
ICAgICAgICB0ZXN0cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0
X2xvYWRlci50ZXN0X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQodGVz
dF9sb2FkZXIudGVzdHNbdGVzdF90eXBlXSkKKworICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0
ZV9zdGFydCh0ZXN0X3NvdXJjZV9jbHMudGVzdHNfYnlfZ3JvdXAodGVzdHMsICoqdGVzdF9zb3Vy
Y2Vfa3dhcmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nd2Vi
LXBsYXRmb3JtLXRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5f
aW5mbz1ydW5faW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9
eyJydW5fYnlfZGlyIjoga3dhcmdzWyJydW5fYnlfZGlyIl19KQpAQCAtMjY2LDYgKzI5Myw3IEBA
IGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVz
dHMgPSB0ZXN0X2xvYWRlci50ZXN0cwogCisgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZy5w
YXVzZSgpCiAgICAgICAgICAgICAgICAgICAgIHdpdGggTWFuYWdlckdyb3VwKCJ3ZWItcGxhdGZv
cm0tdGVzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3Nb
InByb2Nlc3NlcyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X3NvdXJjZV9jbHMsCkBAIC0yNzksNyArMzA3LDggQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRl
c3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga3dhcmdzWyJwYXVzZV9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sicmVzdGFydF9vbl91bmV4cGVjdGVkIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5m
byJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJu
b19jYXB0dXJlX3N0ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPXJlY29yZGluZykgYXMg
bWFuYWdlcl9ncm91cDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5hZ2VyX2dyb3VwLnJ1bih0ZXN0X3R5cGUsIHJ1bl90ZXN0cykK
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKQEAgLTI4
OCw3ICszMTcsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudGVzdF9jb3VudCgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAu
dW5leHBlY3RlZF9jb3VudCgpCi0KKyAgICAgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsiYWZ0
ZXItZW5kIl0pCiAgICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAg
ICAgICAgICAgbG9nZ2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBl
Y3RlZF9jb3VudCkKQEAgLTMxNyw3ICszNDYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVz
dF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogCiAKIGRlZiBjaGVja19zdGFiaWxpdHkoKipr
d2FyZ3MpOgotICAgIGltcG9ydCBzdGFiaWxpdHkKKyAgICBmcm9tIC4gaW1wb3J0IHN0YWJpbGl0
eQogICAgIGlmIGt3YXJnc1sic3RhYmlsaXR5Il06CiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCIt
LXN0YWJpbGl0eSBpcyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIC0tdmVyaWZ5IGluc3RlYWQhIikK
ICAgICAgICAga3dhcmdzWyd2ZXJpZnlfbWF4X3RpbWUnXSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKaW5kZXggMWQx
NGY0ZWZlZWFlMjc5YzJjMzYwZmJhMTM4OGVhNWYzYTQzODc3Zi4uNmIwZmFiNmVlYmFmNTA1ZmZk
MjA3MTBlMWEyY2E0NmUzZDZmNTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3Qu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQg
b3MKIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIu
cGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0
Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKIAogZnJvbSAud3B0bWFu
aWZlc3QucGFyc2VyIGltcG9ydCBhdG9tcwogCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIFJ1bklu
Zm8oZGljdCk6CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9tb3ppbmZvKG1ldGFkYXRhX3Jvb3QpCiAg
ICAgICAgIHNlbGYudXBkYXRlKG1vemluZm8uaW5mbykKIAotICAgICAgICBmcm9tIHVwZGF0ZS50
cmVlIGltcG9ydCBHaXRUcmVlCisgICAgICAgIGZyb20gLnVwZGF0ZS50cmVlIGltcG9ydCBHaXRU
cmVlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgR2l0VHJlZS5fX2luaXRfXyB0aHJvd3Mg
aWYgd2UgYXJlIG5vdCBpbiBhIGdpdCB0cmVlLgogICAgICAgICAgICAgcmV2ID0gR2l0VHJlZShs
b2dfZXJyb3I9RmFsc2UpLnJldgpAQCAtMTAxLDYgKzEwMyw3IEBAIGNsYXNzIFJ1bkluZm8oZGlj
dCk6CiAgICAgICAgIGlmIHJldjoKICAgICAgICAgICAgIHNlbGZbInJldmlzaW9uIl0gPSByZXYK
IAorICAgICAgICBzZWxmWyJweXRob25fdmVyc2lvbiJdID0gc3lzLnZlcnNpb25faW5mby5tYWpv
cgogICAgICAgICBzZWxmWyJwcm9kdWN0Il0gPSBwcm9kdWN0CiAgICAgICAgIGlmIGRlYnVnIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZlsiZGVidWciXSA9IGRlYnVnCkBAIC0xMTgsMjIg
KzEyMSw5IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIGlmIGV4dHJhcyBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIHNlbGYudXBkYXRlKGV4dHJhcykKIAotICAgICAgICAjIFVudGls
IHRoZSB0ZXN0IGhhcm5lc3MgY2FuIHVuZGVyc3RhbmQgZGVmYXVsdCBwcmVmIHZhbHVlcywKLSAg
ICAgICAgIyAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3
NzkxMikgdGhpcyB2YWx1ZQotICAgICAgICAjIHNob3VsZCBieSBzeW5jaHJvbml6ZWQgd2l0aCB0
aGUgZGVmYXVsdCBwcmVmIHZhbHVlIGluZGljYXRlZCBpbgotICAgICAgICAjIFN0YXRpY1ByZWZM
aXN0LnlhbWwuCi0gICAgICAgICMKLSAgICAgICAgIyBDdXJyZW50bHkgZm9yIGF1dG9tYXRpb24s
IHRoZSBwcmVmIChhbmQgYHN3LWUxMHNgKSBkZWZhdWx0cyB0byB0cnVlIGluCi0gICAgICAgICMg
bmlnaHRseSBidWlsZHMgYW5kIGZhbHNlIG90aGVyd2lzZSBidXQgY2FuIGJlIG92ZXJyaWRkZW4g
d2l0aAotICAgICAgICAjIGAtLXNldHByZWZgLiBJZiBvdmVycmlkZGVuLCB0aGUgdmFsdWUgd291
bGQgYmUgaW5pdGlhbGl6ZWQgaW4KLSAgICAgICAgIyBgcnVuX2luZm9fZXh0cmFzYCBhbmQgYmUg
c3VwcGxpZWQgaW4gdGhlIGBleHRyYXNgIHBhcmFtZXRlci4KLSAgICAgICAgaWYgInN3LWUxMHMi
IG5vdCBpbiBzZWxmOgotICAgICAgICAgICAgc2VsZlsic3ctZTEwcyJdID0gc2VsZi5nZXQoIm5p
Z2h0bHlfYnVpbGQiLCBGYWxzZSkKLQogICAgICAgICBzZWxmWyJoZWFkbGVzcyJdID0gZXh0cmFz
LmdldCgiaGVhZGxlc3MiLCBGYWxzZSkKICAgICAgICAgc2VsZlsid2VicmVuZGVyIl0gPSBlbmFi
bGVfd2VicmVuZGVyCiAKLQogICAgIGRlZiBfdXBkYXRlX21vemluZm8oc2VsZiwgbWV0YWRhdGFf
cm9vdCk6CiAgICAgICAgICIiIkFkZCBleHRyYSBidWlsZCBpbmZvcm1hdGlvbiBmcm9tIGEgbW96
aW5mby5qc29uIGZpbGUgaW4gYSBwYXJlbnQKICAgICAgICAgZGlyZWN0b3J5IiIiCkBAIC0xNTAs
NiArMTQwLDE0IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIG1vemluZm8uZmluZF9h
bmRfdXBkYXRlX2Zyb21fanNvbigqZGlycykKIAogCitkZWYgc2VydmVyX3Byb3RvY29sKG1hbmlm
ZXN0X2l0ZW0pOgorICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImgyIikgYW5kIG1hbmlm
ZXN0X2l0ZW0uaDI6CisgICAgICAgIHJldHVybiAiaDIiCisgICAgaWYgaGFzYXR0cihtYW5pZmVz
dF9pdGVtLCAiaHR0cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwczoKKyAgICAgICAgcmV0dXJu
ICJodHRwcyIKKyAgICByZXR1cm4gImh0dHAiCisKKwogY2xhc3MgVGVzdChvYmplY3QpOgogCiAg
ICAgcmVzdWx0X2NscyA9IE5vbmUKQEAgLTE2MCwxNCArMTU4LDE0IEBAIGNsYXNzIFRlc3Qob2Jq
ZWN0KToKICAgICBsb25nX3RpbWVvdXQgPSA2MCAgIyBzZWNvbmRzCiAKICAgICBkZWYgX19pbml0
X18oc2VsZiwgdGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRh
LAotICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgcHJvdG9jb2w9Imh0
dHAiKToKKyAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29s
PSJodHRwIiwgcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jv
b3QKICAgICAgICAgc2VsZi51cmwgPSB1cmwKICAgICAgICAgc2VsZi5faW5oZXJpdF9tZXRhZGF0
YSA9IGluaGVyaXRfbWV0YWRhdGEKICAgICAgICAgc2VsZi5fdGVzdF9tZXRhZGF0YSA9IHRlc3Rf
bWV0YWRhdGEKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCBpZiB0aW1lb3V0IGlzIG5v
dCBOb25lIGVsc2Ugc2VsZi5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgc2VsZi5wYXRoID0gcGF0
aAotICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAicHJl
ZnMiOiBzZWxmLnByZWZzfQorICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6
IHByb3RvY29sLCAicHJlZnMiOiBzZWxmLnByZWZzLCAicXVpYyI6IHF1aWN9CiAKICAgICBkZWYg
X19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRl
c3QpOgpAQCAtMTg2LDE0ICsxODQsMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfZmlsZSwgbWFuaWZl
c3RfaXRlbSwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIHRpbWVv
dXQgPSBjbHMubG9uZ190aW1lb3V0IGlmIG1hbmlmZXN0X2l0ZW0udGltZW91dCA9PSAibG9uZyIg
ZWxzZSBjbHMuZGVmYXVsdF90aW1lb3V0Ci0gICAgICAgIHByb3RvY29sID0gImh0dHBzIiBpZiBo
YXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVs
c2UgImh0dHAiCiAgICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAog
ICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAg
IGluaGVyaXRfbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgcGF0
aD1vcy5wYXRoLmpvaW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBh
dGgpLAotICAgICAgICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQorICAgICAgICAgICAg
ICAgICAgIHByb3RvY29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVtKSkKIAogICAgIEBw
cm9wZXJ0eQogICAgIGRlZiBpZChzZWxmKToKQEAgLTI2Miw2ICsyNTksMTMgQEAgY2xhc3MgVGVz
dChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBjb3VudAogICAgICAgICByZXR1cm4g
MAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAg
IGZvciBtZXRhIGluIHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGlmIG1ldGEubHNhbl9k
aXNhYmxlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0YS5sc2FuX2Rp
c2FibGVkCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxz
YW5fYWxsb3dlZChzZWxmKToKICAgICAgICAgbHNhbl9hbGxvd2VkID0gc2V0KCkKQEAgLTI5NSw3
ICsyOTksNyBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAg
Zm9yIG1ldGEgaW4gc2VsZi5pdGVybWV0YShOb25lKToKICAgICAgICAgICAgIHRocmVzaG9sZCA9
IG1ldGEubGVha190aHJlc2hvbGQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHRocmVz
aG9sZC5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVt
cyh0aHJlc2hvbGQpOgogICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcnY6CiAgICAgICAg
ICAgICAgICAgICAgIHJ2W2tleV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKQEAgLTMzNyw3
ICszNDEsNyBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgZXhwZWN0ZWQgPSBtZXRhZGF0YS5nZXQoImV4cGVjdGVkIikKLSAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoZXhwZWN0ZWQsIChiYXNlc3RyaW5nKSk6CisgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKGV4cGVjdGVkLCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBl
Y3RlZAogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToKICAgICAg
ICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRbMF0KQEAgLTM0Niw2ICszNTAsMTYgQEAgY2xhc3Mg
VGVzdChvYmplY3QpOgogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1
cm4gZGVmYXVsdAogCisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAg
ICAgaW1wbGVtZW50YXRpb25fc3RhdHVzID0gTm9uZQorICAgICAgICBmb3IgbWV0YSBpbiBzZWxm
Lml0ZXJtZXRhKCk6CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBtZXRhLmlt
cGxlbWVudGF0aW9uX3N0YXR1cworICAgICAgICAgICAgaWYgaW1wbGVtZW50YXRpb25fc3RhdHVz
OgorICAgICAgICAgICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMKKworICAgICAg
ICAjIGFzc3VtaW5nIG5vIHNwZWNpZmljIGNhc2UsIHdlIGFyZSBpbXBsZW1lbnRpbmcgaXQKKyAg
ICAgICAgcmV0dXJuICJpbXBsZW1lbnRpbmciCisKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50
KHNlbGYsIHN1YnRlc3Q9Tm9uZSk6CiAgICAgICAgIG1ldGFkYXRhID0gc2VsZi5fZ2V0X21ldGFk
YXRhKHN1YnRlc3QpCiAgICAgICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6CkBAIC0zODEsOSArMzk1
LDkgQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRlc3RzX3Jvb3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKICAg
ICAgICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwg
dGVzdGRyaXZlcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0
cz1Ob25lKToKKyAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lLCBx
dWljPUZhbHNlKToKICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmws
IGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgcGF0aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJv
dG9jb2wsIHF1aWMpCiAKICAgICAgICAgc2VsZi50ZXN0ZHJpdmVyID0gdGVzdGRyaXZlcgogICAg
ICAgICBzZWxmLmpzc2hlbGwgPSBqc3NoZWxsCkBAIC0zOTIsMjIgKzQwNiwyMyBAQCBjbGFzcyBU
ZXN0aGFybmVzc1Rlc3QoVGVzdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFu
aWZlc3QoY2xzLCBtYW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRh
LCB0ZXN0X21ldGFkYXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYg
bWFuaWZlc3RfaXRlbS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQK
LSAgICAgICAgcHJvdG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0
dHBzIikgYW5kIG1hbmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRy
aXZlciA9IG1hbmlmZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0s
ICJ0ZXN0ZHJpdmVyIikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRl
bS5qc3NoZWxsIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNl
CisgICAgICAgIHF1aWMgPSBtYW5pZmVzdF9pdGVtLnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF9p
dGVtLCAicXVpYyIpIGVsc2UgRmFsc2UKICAgICAgICAgc2NyaXB0X21ldGFkYXRhID0gbWFuaWZl
c3RfaXRlbS5zY3JpcHRfbWV0YWRhdGEgb3IgW10KLSAgICAgICAgc2NyaXB0cyA9IFt2IGZvciAo
aywgdikgaW4gc2NyaXB0X21ldGFkYXRhIGlmIGsgPT0gYiJzY3JpcHQiXQorICAgICAgICBzY3Jp
cHRzID0gW3YgZm9yIChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAg
ICBpZiBrID09ICJzY3JpcHQiXQogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVz
dHNfcm9vdCwKICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAg
ICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0
YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAg
ICAgICAgIHBhdGg9b3MucGF0aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZl
c3RfaXRlbS5wYXRoKSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSks
CiAgICAgICAgICAgICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAgICAgICAgICAg
ICAgICAgIGpzc2hlbGw9anNzaGVsbCwKLSAgICAgICAgICAgICAgICAgICBzY3JpcHRzPXNjcmlw
dHMKLSAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3Jp
cHRzLAorICAgICAgICAgICAgICAgICAgIHF1aWM9cXVpYykKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpZChzZWxmKToKQEAgLTQyMywxMyArNDM4LDI0IEBAIGNsYXNzIE1hbnVhbFRlc3QoVGVz
dCk6CiAKIAogY2xhc3MgUmVmdGVzdFRlc3QoVGVzdCk6CisgICAgIiIiQSByZWZ0ZXN0CisKKyAg
ICBBIHJlZnRlc3Qgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gcGFzcyBpZiBvbmUgb2YgaXRzIHJl
ZmVyZW5jZXMgbWF0Y2hlcyAoc2VlIGJlbG93KSAqYW5kKiB0aGUKKyAgICByZWZlcmVuY2UgcGFz
c2VzIGlmIGl0IGhhcyBhbnkgcmVmZXJlbmNlcyByZWN1cnNpdmVseS4KKworICAgIEF0dHJpYnV0
ZXM6CisgICAgICAgIHJlZmVyZW5jZXMgKExpc3RbVHVwbGVbc3RyLCBzdHJdXSk6IGEgbGlzdCBv
ZiBhbHRlcm5hdGUgcmVmZXJlbmNlcywgd2hlcmUgb25lIG11c3QgbWF0Y2ggZm9yIHRoZSB0ZXN0
IHRvIHBhc3MKKyAgICAgICAgdmlld3BvcnRfc2l6ZSAoT3B0aW9uYWxbVHVwbGVbaW50LCBpbnRd
XSk6IHNpemUgb2YgdGhlIHZpZXdwb3J0IGZvciB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0Cisg
ICAgICAgIGRwaSAoT3B0aW9uYWxbaW50XSk6IGRwaSB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhp
cyB0ZXN0LCBpZiBub3QgZGVmYXVsdAorCisgICAgIiIiCiAgICAgcmVzdWx0X2NscyA9IFJlZnRl
c3RSZXN1bHQKICAgICB0ZXN0X3R5cGUgPSAicmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJl
ZmVyZW5jZXMsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3
cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0cCIpOgor
ICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6ZT1O
b25lLCBkcGk9Tm9uZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToK
ICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMp
CiAKICAgICAgICAgZm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBp
ZiByZWZfdHlwZSBub3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNDQ1LDE2ICs0NzEsMTAgQEAgY2xh
c3MgUmVmdGVzdFRlc3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZmls
ZSwKICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgIGluaGVyaXRfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRh
ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICBub2Rlcz1Ob25lLAotICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZXNfc2Vlbj1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X21ldGFkYXRhKToKIAogICAgICAgICB0aW1lb3V0ID0gY2xzLmxvbmdfdGltZW91dCBpZiBtYW5p
ZmVzdF90ZXN0LnRpbWVvdXQgPT0gImxvbmciIGVsc2UgY2xzLmRlZmF1bHRfdGltZW91dAotCi0g
ICAgICAgIGlmIG5vZGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlcyA9IHt9Ci0gICAgICAg
IGlmIHJlZmVyZW5jZXNfc2VlbiBpcyBOb25lOgotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVu
ID0gc2V0KCkKKyAgICAgICAgcXVpYyA9IG1hbmlmZXN0X3Rlc3QucXVpYyBpZiBoYXNhdHRyKG1h
bmlmZXN0X3Rlc3QsICJxdWljIikgZWxzZSBGYWxzZQogCiAgICAgICAgIHVybCA9IG1hbmlmZXN0
X3Rlc3QudXJsCiAKQEAgLTQ2Nyw0MSArNDg3LDYwIEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3Qp
OgogICAgICAgICAgICAgICAgICAgIHBhdGg9bWFuaWZlc3RfdGVzdC5wYXRoLAogICAgICAgICAg
ICAgICAgICAgIHZpZXdwb3J0X3NpemU9bWFuaWZlc3RfdGVzdC52aWV3cG9ydF9zaXplLAogICAg
ICAgICAgICAgICAgICAgIGRwaT1tYW5pZmVzdF90ZXN0LmRwaSwKLSAgICAgICAgICAgICAgICAg
ICBwcm90b2NvbD0iaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBzIikgYW5k
IG1hbmlmZXN0X3Rlc3QuaHR0cHMgZWxzZSAiaHR0cCIsCi0gICAgICAgICAgICAgICAgICAgZnV6
enk9bWFuaWZlc3RfdGVzdC5mdXp6eSkKKyAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2
ZXJfcHJvdG9jb2wobWFuaWZlc3RfdGVzdCksCisgICAgICAgICAgICAgICAgICAgZnV6enk9bWFu
aWZlc3RfdGVzdC5mdXp6eSwKKyAgICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKLSAgICAg
ICAgbm9kZXNbdXJsXSA9IG5vZGUKKyAgICAgICAgcmVmc19ieV90eXBlID0gZGVmYXVsdGRpY3Qo
bGlzdCkKIAogICAgICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gbWFuaWZlc3RfdGVzdC5y
ZWZlcmVuY2VzOgotICAgICAgICAgICAgY29tcGFyaXNvbl9rZXkgPSAocmVmX3R5cGUsKSArIHR1
cGxlKHNvcnRlZChbdXJsLCByZWZfdXJsXSkpCi0gICAgICAgICAgICBpZiByZWZfdXJsIGluIG5v
ZGVzOgotICAgICAgICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSByZWZfdXJsCi0gICAgICAgICAg
ICAgICAgaWYgY29tcGFyaXNvbl9rZXkgaW4gcmVmZXJlbmNlc19zZWVuOgotICAgICAgICAgICAg
ICAgICAgICAjIFdlIGhhdmUgcmVhY2hlZCBhIGN5Y2xlIHNvIHN0b3AgaGVyZQotICAgICAgICAg
ICAgICAgICAgICAjIE5vdGUgdGhhdCBqdXN0IHNlZWluZyBhIG5vZGUgZm9yIHRoZSBzZWNvbmQg
dGltZSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IGEgY3lj
bGUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIEEgIT0gQiAhPSBDICE9IEEgbXVzdCBp
bmNsdWRlIEMgIT0gQQotICAgICAgICAgICAgICAgICAgICAjIGJ1dCBBID09IEIgPT0gQSBzaG91
bGQgbm90IGluY2x1ZGUgdGhlIHJlZHVuZGFudCBCID09IEEuCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2Vlbi5hZGQoY29tcGFyaXNvbl9r
ZXkpCi0KLSAgICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSBtYW5pZmVzdF9maWxlLmdldF9yZWZl
cmVuY2UocmVmX3VybCkKLSAgICAgICAgICAgIGlmIG1hbmlmZXN0X25vZGU6Ci0gICAgICAgICAg
ICAgICAgcmVmZXJlbmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdF9maWxl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWFuaWZlc3Rfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxl
LnRlc3RzX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVm
X3VybCwKKyAgICAgICAgICAgIHJlZnNfYnlfdHlwZVtyZWZfdHlwZV0uYXBwZW5kKHJlZl91cmwp
CisKKyAgICAgICAgIyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGFsbCB0aGUgbWlzbWF0Y2hlcywgd2hl
cmUgd2UgZW5kIHVwIHdpdGggbWlzbWF0Y2hfMSAhPSB1cmwgIT0KKyAgICAgICAgIyBtaXNtYXRj
aF8yICE9IHVybCAhPSBtaXNtYXRjaF8zIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIFBlciB0
aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1p
c21hdGNoZXMgcHJvdmlkZWQgbWF0Y2gsCisgICAgICAgIG1pc21hdGNoX3dhbGsgPSBOb25lCisg
ICAgICAgIGlmIHJlZnNfYnlfdHlwZVsiIT0iXToKKyAgICAgICAgICAgIG1pc21hdGNoX3dhbGsg
PSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVmc19ieV90eXBlWyIhPSJdWzBdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW10pCi0KLSAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZmVy
ZW5jZSwgcmVmX3R5cGUpKQorICAgICAgICAgICAgY21wX3JlZiA9IG1pc21hdGNoX3dhbGsKKyAg
ICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiIT0iXVsxOl06CisgICAgICAg
ICAgICAgICAgY21wX3NlbGYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbXSkKKyAgICAgICAgICAgICAgICBjbXBfcmVmLnJlZmVyZW5jZXMuYXBwZW5kKChjbXBf
c2VsZiwgIiE9IikpCisgICAgICAgICAgICAgICAgY21wX3JlZiA9IFJlZnRlc3RUZXN0KG1hbmlm
ZXN0X2ZpbGUudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVmX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9zZWxmLnJl
ZmVyZW5jZXMuYXBwZW5kKChjbXBfcmVmLCAiIT0iKSkKKworICAgICAgICBpZiBtaXNtYXRjaF93
YWxrIGlzIE5vbmU6CisgICAgICAgICAgICBtaXNtYXRjaF9yZWZzID0gW10KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIG1pc21hdGNoX3JlZnMgPSBbKG1pc21hdGNoX3dhbGssICIhPSIpXQor
CisgICAgICAgIGlmIHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAgICAgICAgICMgRm9yIGVhY2gg
PT0gcmVmLCBhZGQgYSByZWZlcmVuY2UgdG8gdGhpcyBub2RlIHdob3NlIHRhaWwgaXMgdGhlIG1p
c21hdGNoIGxpc3QuCisgICAgICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92
ZSwgdGhpcyBtZWFucyBhbnkgb25lIG9mIHRoZSBtYXRjaGVzIG11c3QgcGFzcyBwbHVzIGFsbCB0
aGUgbWlzbWF0Y2hlcy4KKyAgICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsi
PT0iXToKKyAgICAgICAgICAgICAgICByZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRl
c3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1p
c21hdGNoX3JlZnMpCisgICAgICAgICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmFwcGVuZCgocmVm
LCAiPT0iKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBqdXN0
IGFkZCB0aGUgbWlzbWF0Y2hlcyBkaXJlY3RseSBhcyB3ZSBhcmUgaW1tZWRpYXRlbHkgaW50byB0
aGUKKyAgICAgICAgICAgICMgbWlzbWF0Y2ggY2hhaW4gd2l0aCBubyBhbHRlcm5hdGVzLgorICAg
ICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmV4dGVuZChtaXNtYXRjaF9yZWZzKQogCiAgICAgICAg
IHJldHVybiBub2RlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3
MmUxMGE1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1c2UgQlNE
IExpY2Vuc2UKLQotaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJz
ZC1saWNlbnNlLmh0bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSogUmVk
aXN0cmlidXRpb25zIG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQg
bm90aWNlLAotICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotCi0qIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgb3JpZ2luYWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQot
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzIG1heSBiZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvc2V0dXAucHkKaW5kZXggYzljMzY0YjhiYWNjNzJhNmZmNzdmOWQwYzgxMWIyZDdkMTgx
MGQxMy4uNzU5Y2I0OGQxZjY1ZjUyZjY1MDBlZDJiODcxYzdlZjQzMDUxOGFiNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS9zZXR1cC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3NldHVwLnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSBzZXR1
cHRvb2xzIGltcG9ydCBzZXR1cAogCi1QQUNLQUdFX1ZFUlNJT04gPSAnMi4wJworUEFDS0FHRV9W
RVJTSU9OID0gJzMuMCcKIGRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCiAKIHNldHVw
KG5hbWU9J3dwdHNlcnZlJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nv
b2tpZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDJlMmQw
ZDY3NzFiYTI2YTFmYmU3ZThmYzhiYjJlMjU5OGJjMzQyMjMuLjY0ZWFiMmQ4MDZiNTJkZTkzM2Iy
OGQ1ODQxNmI2OWQzNmJkY2IyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0
X2Nvb2tpZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAt
MTAsNyArMTAsNyBAQCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVy
KToKICAgICBkZWYgdGVzdF9uYW1lX3ZhbHVlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFu
ZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0g
ICAgICAgICAgICByZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAg
ICAgIHJlc3BvbnNlLnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCiAgICAgICAgICAgICBy
ZXR1cm4gIlRlc3QiCiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9uYW1lX3ZhbHVl
IiwgaGFuZGxlcikKQEAgLTIyLDggKzIyLDggQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2ll
KFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3RfdW5zZXQoc2VsZik6CiAgICAgICAgIEB3
cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJl
c3BvbnNlKToKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAidmFsdWUi
KQotICAgICAgICAgICAgcmVzcG9uc2UudW5zZXRfY29va2llKCJuYW1lIikKKyAgICAgICAgICAg
IHJlc3BvbnNlLnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCisgICAgICAgICAgICByZXNw
b25zZS51bnNldF9jb29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAog
ICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Vuc2V0IiwgaGFuZGxlcikKQEAgLTM1LDcg
KzM1LDcgQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAg
ICAgZGVmIHRlc3RfZGVsZXRlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFu
ZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAg
ICByZXNwb25zZS5kZWxldGVfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLmRl
bGV0ZV9jb29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAg
ICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L2RlbGV0ZSIsIGhhbmRsZXIpCkBAIC00NywxOCArNDcs
MjAgQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0c1sibmFtZSJdLCAiIikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJ0c1siUGF0aCJdLCAiLyIpCi0gICAgICAgICNTaG91bGQgYWxzbyBjaGVj
ayB0aGF0IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKyAgICAgICAgIyBUT0RPOiBTaG91bGQgYWxz
byBjaGVjayB0aGF0IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKwogCiBjbGFzcyBUZXN0UmVxdWVz
dENvb2tpZXMoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zZXRfY29va2llKHNlbGYp
OgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxl
cihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVz
WyJuYW1lIl0udmFsdWUKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvb2tpZXNbYiJuYW1l
Il0udmFsdWUKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3NldF9jb29raWUiLCBo
YW5kbGVyKQogICAgICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAg
ICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBoZWFkZXJzPXsiQ29va2llIjogIm5h
bWU9dmFsdWUifSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJ2YWx1
ZSIpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZDhkNjRkNTRjY2M3OGEzYzZkZWJh
MjFiNzM0MjhlNzFhZWIxYmU2MC4uNmU5NDdlNDc4ZDllMTRlMzM2NzZjYmQ2MmJiYmFkYTJmMTE4
ZWM3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTEgQEAK
LWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgogZnJv
bSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeCBpbXBvcnQgY3Jl
YXRlX2JvdW5kX21ldGhvZAorZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZ
MworZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0
c2VydmUgPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9y
dCBUZXN0VXNpbmdTZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMTY3LDcg
KzE2Nyw2IEBAIGNsYXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBz
ZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICBzZWxmLnJlcXVlc3Qo
cm91dGVbMV0pCiAKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAo
MywpLCByZWFzb249InB5MyB1cmxsaWIgZG9lc24ndCBoYW5kbGUgaW52YWxpZCBIVFRQIHZlcnkg
d2VsbCIpCiAgICAgZGVmIHRlc3Rfd3JpdGVfcmF3X2NvbnRlbnRzX2ludmFsaWRfaHR0cChzZWxm
KToKICAgICAgICAgcmVzcF9jb250ZW50ID0gYiJJTlZBTElEIEhUVFAiCiAKQEAgLTE3Nyw5ICsx
NzYsMTQgQEAgY2xhc3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAg
cm91dGUgPSAoIkdFVCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikK
ICAgICAgICAgc2VsZi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKLSAgICAgICAgcmVz
cCA9IHNlbGYucmVxdWVzdChyb3V0ZVsxXSkKLSAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09
IHJlc3BfY29udGVudAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJl
cXVlc3Qocm91dGVbMV0pCisgICAgICAgICAgICBhc3NlcnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9j
b250ZW50CisgICAgICAgIGV4Y2VwdCBCYWRTdGF0dXNMaW5lIGFzIGU6CisgICAgICAgICAgICAj
IEluIFB5dGhvbjMsIGFuIGludmFsaWQgSFRUUCByZXF1ZXN0IHNob3VsZCB0aHJvdyBCYWRTdGF0
dXNMaW5lLgorICAgICAgICAgICAgYXNzZXJ0IFBZMworICAgICAgICAgICAgYXNzZXJ0IHN0cihl
KSA9PSByZXNwX2NvbnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNl
KFRlc3RVc2luZ0gyU2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19z
dHJlYW0oc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDMwOWRkOWU1NzdhMDMz
NWI3YTU2OTkyYzgyYTQ4YjQzYTI1OWEyOGQuLjFjNGM5YWQ5MzNhMzc3NDY2MjNhMDE5NWY1NTNh
ZDhjZmU3MDY4OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CkBAIC0xOCwxMCArMTgsMTAg
QEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAg
IEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3Qs
IHJlc3BvbnNlKToKICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKLSAg
ICAgICAgICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0
KCJpZCIpLCByZXF1ZXN0LlBPU1QuZmlyc3QoImRhdGEiKSkKKyAgICAgICAgICAgICAgICByZXF1
ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KGIiaWQiKSwgcmVxdWVzdC5Q
T1NULmZpcnN0KGIiZGF0YSIpKQogICAgICAgICAgICAgICAgIGRhdGEgPSAiT0siCiAgICAgICAg
ICAgICBlbGlmIHJlcXVlc3QubWV0aG9kID09ICJHRVQiOgotICAgICAgICAgICAgICAgIGRhdGEg
PSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KCJpZCIpKQorICAg
ICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VU
LmZpcnN0KGIiaWQiKSkKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAiTk9UIEZPVU5EIgogICAgICAgICAgICAgcmV0dXJuIGRhdGEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVl
c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODY5ZDNkNDYwNDQwOTQxMTk4NGNiNDlmY2Q0MGViN2U5NzFiM2M1
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEs
NzggQEAKK2ltcG9ydCBtb2NrCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKKworZnJvbSB3
cHRzZXJ2ZS5yZXF1ZXN0IGltcG9ydCBSZXF1ZXN0LCBSZXF1ZXN0SGVhZGVycworCisKK2NsYXNz
IE1vY2tIVFRQTWVzc2FnZShkaWN0KToKKyAgICAiIiJBIG1pbmltdW0gKGFuZCBub3QgY29tcGxl
dGVseSBjb3JyZWN0bHkpIG1vY2sgb2YgSFRUUE1lc3NhZ2UgZm9yIHRlc3RpbmcuCisKKyAgICBD
b25zdHJ1Y3RpbmcgSFRUUE1lc3NhZ2UgaXMgYW5ub3lpbmcgYW5kIGRpZmZlcmVudCBpbiBQeXRo
b24gMiBhbmQgMy4gVGhpcworICAgIG9ubHkgaW1wbGVtZW50cyB0aGUgcGFydHMgdXNlZCBieSBS
ZXF1ZXN0SGVhZGVycy4KKworICAgIFJlcXVpcmVtZW50cyBmb3IgY29uc3RydWN0aW9uOgorICAg
ICogS2V5cyBhcmUgaGVhZGVyIG5hbWVzIGFuZCBNVVNUIGJlIGxvd2VyLWNhc2UuCisgICAgKiBW
YWx1ZXMgYXJlIGxpc3RzIG9mIGhlYWRlciB2YWx1ZXMgKGV2ZW4gaWYgdGhlcmUncyBvbmx5IG9u
ZSkuCisgICAgKiBLZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzIHRvIG1h
dGNoIHN0ZGxpYidzIGJlaGF2aW91cnMuCisgICAgIiIiCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNl
bGYsIGtleSk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgc3RyKQorICAgICAgICB2
YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQorICAgICAgICBhc3Nl
cnQgaXNpbnN0YW5jZSh2YWx1ZXMsIGxpc3QpCisgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKwor
ICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAg
ICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBkZWYgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKHNl
bGYsIGtleSk6CisgICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxv
d2VyKCkpCisgICAgICAgIHJldHVybiBbInt9OiB7fVxuIi5mb3JtYXQoa2V5LCB2KSBmb3IgdiBp
biB2YWx1ZXNdCisKKworZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2dldCgpOgorICAgIHJhd19o
ZWFkZXJzID0gTW9ja0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwKKyAg
ICAgICAgJ3gtYmFyJzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMgPSBS
ZXF1ZXN0SGVhZGVycyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaGVhZGVyc1sneC1mb28nXSA9
PSBiJ2ZvbycKKyAgICBhc3NlcnQgaGVhZGVyc1snWC1CYXInXSA9PSBiJ2JhcjEsIGJhcjInCisg
ICAgYXNzZXJ0IGhlYWRlcnMuZ2V0KCd4LWJhcicpID09IGInYmFyMSwgYmFyMicKKworCitkZWYg
dGVzdF9yZXF1ZXN0X2hlYWRlcnNfZW5jb2RpbmcoKToKKyAgICByYXdfaGVhZGVycyA9IE1vY2tI
VFRQTWVzc2FnZSh7CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4LWJhcic6
IFsnYmFyMScsICdiYXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhlYWRlcnMo
cmF3X2hlYWRlcnMpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1mb28nXSwgYmlu
YXJ5X3R5cGUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1iYXInXSwgYmluYXJ5
X3R5cGUpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVycy5nZXRfbGlzdCgneC1iYXInKVsw
XSwgYmluYXJ5X3R5cGUpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJvbV9zZXJ2ZXJfYWRk
cmVzcygpOgorICAgIHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAgcmVxdWVzdF9o
YW5kbGVyLnNlcnZlci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVy
LnNlcnZlcl9hZGRyZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVxdWVzdF9oYW5k
bGVyLnBhdGggPSAnL2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMgPSBNb2NrSFRU
UE1lc3NhZ2UoKQorCisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAg
IGFzc2VydCByZXF1ZXN0LnVybCA9PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RlbW8nCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UocmVxdWVzdC51cmwsIHN0cikKKworCitkZWYgdGVzdF9yZXF1ZXN0
X3VybF9mcm9tX2hvc3RfaGVhZGVyKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2Nr
KCkKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVl
c3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykK
KyAgICByZXF1ZXN0X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIu
aGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSh7J2hvc3QnOiBbJ3dlYi1wbGF0Zm9ybS50ZXN0Ojgw
MDEnXX0pCisKKyAgICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1ZXN0X2hhbmRsZXIpCisgICAgYXNz
ZXJ0IHJlcXVlc3QudXJsID09ICdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMS9kZW1vJwor
ICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL3Rlc3Rfc3Rhc2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMWVhOTljMDYw
OWY1YmVkODU5NjUxMjg0ZWIzZGE4MGE0Y2RkZjczNy4uMzFhZjE1NThiMGNjNWMwNDY4NDNlMGU5
NjU2OWRiNDJjNDY3Y2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvdGVzdF9zdGFzaC5weQpAQCAtNCw2ICs0LDcgQEAgaW1wb3J0IHRocmVhZGluZwog
ZnJvbSBtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9y
dCBweXRlc3QKK2Zyb20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jz
a2lwKCJ3cHRzZXJ2ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTU3LDcgKzU4LDggQEAgZGVmIHJ1bihw
cm9jZXNzX3F1ZXVlLCByZXF1ZXN0X2xvY2ssIHJlc3BvbnNlX2xvY2spOgogICAgIHByb2Nlc3Nf
cXVldWUucHV0KHRocmVhZF9xdWV1ZS5nZXQoKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnBsYXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5n
ZXRfc3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249
Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIp
CiBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0
IGRlbGF5cyBpbiBwcm94aWVkIExvY2sgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0aApA
QCAtOTYsNyArOTgsOCBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAg
ICAgICAiYm90aCBpbnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJv
Y2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAg
ICByZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vl
cy8xNjkzOCIpCiBkZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVu
c3VyZSB0aGF0IGRlbGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVy
ZmVyZSB3aXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93
M2MtaW1wb3J0LmxvZwppbmRleCBlZjlkNmE4MGFhNmFjMTQyM2Y1NDg1YmIyNWJkMzM2OTc1ZDlh
YjU3Li41ZjllYjZiMzhiNjUxNDlmZGU3ZGFkMTliODA1NmYzY2M1YmYxMzYyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAg
LTE2LDQgKzE2LDUgQEAgTm9uZQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmln
LnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcGxhY2VtZW50X3Rva2VuaXplci5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9yZXF1ZXN0LnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93M2MtaW1wb3J0LmxvZwppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYx
OWQ5MDZlNDVkOGQ3OTAzM2MxLi5mYWFhZjY3ZTk4NThhMTA3ZGM4M2E5NTI4NWYyYjkzOTQ3ZmIw
MTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cK
QEAgLTE0LDcgKzE0LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CiBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFCiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS9NQU5JRkVTVC5pbgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvUkVBRE1FLm1kCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQppbmRleCBlMTFjYWUxMzdi
OWM1MWQ4Njc3NDAwMWVhZDcxOTM4ZmQ1NWMwNTU1Li43NzY2NTY1ZmU0ZmQxNzU1OThiOGI2Y2Nl
MGU0ZmY0YjQwZjEwZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL2NvbmZpZy5weQpAQCAtNjksNiArNjksMzEgQEAgY2xhc3MgQ29uZmlnKE1hcHBp
bmcpOgogICAgIGRlZiBhc19kaWN0KHNlbGYpOgogICAgICAgICByZXR1cm4ganNvbl90eXBlcyhz
ZWxmLl9fZGljdF9fKQogCisgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGxpbWl0ZWQg
aW4gc2l6ZSBzbyB3ZSBuZWVkIHRvIHBydW5lIHRoZSBtb3N0IGVncmVnaW91cyBjb250cmlidXRv
cnMKKyAgICAjIHRvIHNpemUsIHRoZSBvcmlnaW4gcG9saWN5IHN1YmRvbWFpbnMuCisgICAgZGVm
IGFzX2RpY3RfZm9yX3dkX2Vudl92YXJpYWJsZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2Vs
Zi5hc19kaWN0KCkKKworICAgICAgICBmb3Iga2V5IGluIFsKKyAgICAgICAgICAgICgic3ViZG9t
YWlucyIsKSwKKyAgICAgICAgICAgICgiZG9tYWlucyIsICJhbHQiKSwKKyAgICAgICAgICAgICgi
ZG9tYWlucyIsICIiKSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiYWx0IiksCisgICAg
ICAgICAgICAoImFsbF9kb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJkb21haW5zX3NldCIs
KSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnNfc2V0IiwpCisgICAgICAgIF06CisgICAgICAg
ICAgICB0YXJnZXQgPSByZXN1bHQKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIGtleVs6LTFdOgor
ICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldFtwYXJ0XQorICAgICAgICAgICAgdmFsdWUg
PSB0YXJnZXRba2V5Wy0xXV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3Qp
OgorICAgICAgICAgICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIGl0
ZXJpdGVtcyh2YWx1ZSkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUg
aWYgbm90IHguc3RhcnRzd2l0aCgib3AiKV0KKworICAgICAgICByZXR1cm4gcmVzdWx0CisKIAog
ZGVmIGpzb25fdHlwZXMob2JqKToKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQpp
bmRleCBjYTUxMTgwMDljZmM5YzQ3NjNmOTllMmE2Mjk2ZDc4NGE2NTM5MjE2Li5mZWExMjc3YjBk
MWNiNWNhYzhjYTQ0NWFiMDU5OTQ3NDEyNjY5YWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hh
bmRsZXJzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsNCArMSwzIEBACi1p
bXBvcnQgY2dpCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0xNCw2ICsx
MywxMSBAQCBmcm9tIC5yZXF1ZXN0IGltcG9ydCBBdXRoZW50aWNhdGlvbgogZnJvbSAucmVzcG9u
c2UgaW1wb3J0IE11bHRpcGFydENvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0
aW9uCiAKK3RyeToKKyAgICBmcm9tIGh0bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVy
cm9yOgorICAgIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKKwogX19hbGxfXyA9IFsiZmlsZV9oYW5k
bGVyIiwgInB5dGhvbl9zY3JpcHRfaGFuZGxlciIsCiAgICAgICAgICAgICJGdW5jdGlvbkhhbmRs
ZXIiLCAiaGFuZGxlciIsICJqc29uX2hhbmRsZXIiLAogICAgICAgICAgICAiYXNfaXNfaGFuZGxl
ciIsICJFcnJvckhhbmRsZXIiLCAiQmFzaWNBdXRoSGFuZGxlciJdCkBAIC03Niw3ICs4MCw3IEBA
IGNsYXNzIERpcmVjdG9yeUhhbmRsZXIob2JqZWN0KToKIDx1bD4KICUoaXRlbXMpcwogPC91bD4K
LSIiIiAlIHsicGF0aCI6IGNnaS5lc2NhcGUodXJsX3BhdGgpLAorIiIiICUgeyJwYXRoIjogZXNj
YXBlKHVybF9wYXRoKSwKICAgICAgICAiaXRlbXMiOiAiXG4iLmpvaW4oc2VsZi5saXN0X2l0ZW1z
KHVybF9wYXRoLCBwYXRoKSl9ICAjIG5vcWE6IEUxMjIKIAogICAgIGRlZiBsaXN0X2l0ZW1zKHNl
bGYsIGJhc2VfcGF0aCwgcGF0aCk6CkBAIC05MiwxNSArOTYsMjkgQEAgY2xhc3MgRGlyZWN0b3J5
SGFuZGxlcihvYmplY3QpOgogICAgICAgICAgICAgbGluayA9IHVybGpvaW4oYmFzZV9wYXRoLCAi
Li4iKQogICAgICAgICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iZGlyIj48YSBocmVmPSIlKGxp
bmspcyI+JShuYW1lKXM8L2E+PC9saT4iIiIgJQogICAgICAgICAgICAgICAgICAgIHsibGluayI6
IGxpbmssICJuYW1lIjogIi4uIn0pCisgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgcHJldl9p
dGVtID0gTm9uZQogICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSk6
Ci0gICAgICAgICAgICBsaW5rID0gY2dpLmVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAg
IGlmIHByZXZfaXRlbSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgorICAgICAg
ICAgICAgICAgIGl0ZW1zWy0xXVsxXSA9IGl0ZW0KKyAgICAgICAgICAgICAgICBwcmV2X2l0ZW0g
PSBOb25lCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVu
ZChbaXRlbSwgTm9uZV0pCisgICAgICAgICAgICBwcmV2X2l0ZW0gPSBpdGVtCisgICAgICAgIGZv
ciBpdGVtLCBkb3RfaGVhZGVycyBpbiBpdGVtczoKKyAgICAgICAgICAgIGxpbmsgPSBlc2NhcGUo
cXVvdGUoaXRlbSkpCisgICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAiIgorICAgICAg
ICAgICAgaWYgZG90X2hlYWRlcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90X2hl
YWRlcnNfbWFya3VwID0gKCIiIiAoPGEgaHJlZj0iJShsaW5rKXMiPi5oZWFkZXJzPC9hPikiIiIg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBlc2NhcGUo
cXVvdGUoZG90X2hlYWRlcnMpKX0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBh
dGguam9pbihwYXRoLCBpdGVtKSk6CiAgICAgICAgICAgICAgICAgbGluayArPSAiLyIKICAgICAg
ICAgICAgICAgICBjbGFzc18gPSAiZGlyIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgICBjbGFzc18gPSAiZmlsZSIKLSAgICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9IiUo
Y2xhc3MpcyI+PGEgaHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPjwvbGk+IiIiICUKLSAgICAg
ICAgICAgICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGNnaS5lc2NhcGUoaXRlbSksICJj
bGFzcyI6IGNsYXNzX30pCisgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNz
KXMiPjxhIGhyZWY9IiUobGluaylzIj4lKG5hbWUpczwvYT4lKGhlYWRlcnMpczwvbGk+IiIiICUK
KyAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGVzY2FwZShpdGVtKSwg
ImNsYXNzIjogY2xhc3NfLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGRvdF9oZWFk
ZXJzX21hcmt1cH0pCiAKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwgcmVzcG9u
c2UpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMu
cHkKaW5kZXggY2ViMzRjYzNmNGY5OTRlZDA0OTkxNWM3Nzg0ZjdjNjljNzEyYWJjYS4uYmJmMjVl
NmZlMTExMmUxODFkYTVhN2I2YTljNmVlMmI3NTYzYWJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2
ZS9waXBlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJv
bSBjZ2kgaW1wb3J0IGVzY2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGltcG9y
dCBiYXNlNjQKIGltcG9ydCBnemlwIGFzIGd6aXBfbW9kdWxlCkBAIC03LDEwICs2LDE1IEBAIGlt
cG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgdGltZQogaW1wb3J0IHV1aWQKLWZyb20gc2l4Lm1v
dmVzIGltcG9ydCBTdHJpbmdJTwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KIGZy
b20gc2l4IGltcG9ydCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCiAKK3RyeToKKyAgICBmcm9tIGh0
bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY2dpIGltcG9y
dCBlc2NhcGUKKwogZGVmIHJlc29sdmVfY29udGVudChyZXNwb25zZSk6CiAgICAgcmV0dXJuIGIi
Ii5qb2luKGl0ZW0gZm9yIGl0ZW0gaW4gcmVzcG9uc2UuaXRlcl9jb250ZW50KHJlYWRfZmlsZT1U
cnVlKSkKIApAQCAtMzE2LDYgKzMyMCw4IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgog
CiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGtleSA9
IGtleS5lbmNvZGUoJ2lzby04ODU5LTEnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1z
LmZpcnN0KGtleSkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJu
ICIiCkBAIC0zOTMsOCArMzk5LDggQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAgICAg
ZGVmIHV1aWQocmVxdWVzdCk6CiAgICAgICAgIHJldHVybiBzdHIodXVpZC51dWlkNCgpKQogCi0g
ICAgIyBNYWludGFpbiBhIHdoaXRlbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJp
Y3RlZCB0byB0aG9zZSB0aGF0Ci0gICAgIyBhcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMg
WzFdLiBUaGlzIGVuc3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CisgICAgIyBNYWludGFp
biBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdGhh
dCBhcmUKKyAgICAjIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhpcyBlbnN1cmVz
IHRoYXQgdGVzdCBhdXRob3JzIGRvIG5vdAogICAgICMgdW5rbm93aW5nbHkgaW50cm9kdWNlIHBs
YXRmb3JtLXNwZWNpZmljIHRlc3RzLgogICAgICMKICAgICAjIFsxXSBodHRwczovL2RvY3MucHl0
aG9uLm9yZy8yL2xpYnJhcnkvaGFzaGxpYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jl
cXVlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkKaW5kZXggYTgwYmMwYzgzMDBhY2ZjZjc2
NjUxMmI4OWVjZmVlMzM4YmFjMjI5NS4uN2M0ZDAyZDZkZTZmMWEwYjBlY2NjMDVhYjAzMDRjZmZi
YzEwZjk1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2Vy
dmUvcmVxdWVzdC5weQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNn
aQotZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNp
eCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1zLCBQWTMK
IGltcG9ydCB0ZW1wZmlsZQogCitmcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUs
IGl0ZXJpdGVtcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VD
b29raWUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxz
cGxpdAogCiBmcm9tIC4gaW1wb3J0IHN0YXNoCi1mcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2Vw
dGlvbgorZnJvbSAudXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZW5jb2Rl
LCBpc29tb3JwaGljX2RlY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIApAQCAtMjE5LDIyICsy
MTksMjMgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgIE11bHRpRGljdCByZXByZXNlbnRp
bmcgdGhlIHBhcmFtZXRlcnMgc3VwcGxpZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICBOb3RlIHRo
YXQgdGhlc2UgbWF5IGJlIHByZXNlbnQgb24gbm9uLUdFVCByZXF1ZXN0czsgdGhlIG5hbWUgaXMK
ICAgICBjaG9zZW4gdG8gYmUgZmFtaWxpYXIgdG8gdXNlcnMgb2Ygb3RoZXIgc3lzdGVtcyBzdWNo
IGFzIFBIUC4KKyAgICBCb3RoIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCiAK
ICAgICAuLiBhdHRyaWJ1dGU6OiBQT1NUCiAKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRo
ZSByZXF1ZXN0IGJvZHkgcGFyYW1ldGVycy4gTW9zdCBwYXJhbWV0ZXJzCiAgICAgYXJlIHByZXNl
bnQgYXMgc3RyaW5nIHZhbHVlcywgYnV0IGZpbGUgdXBsb2FkcyBoYXZlIGZpbGUtbGlrZQotICAg
IHZhbHVlcy4KKyAgICB2YWx1ZXMuIEFsbCBzdHJpbmcgdmFsdWVzIChpbmNsdWRpbmcga2V5cykg
aGF2ZSBiaW5hcnkgdHlwZS4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IGNvb2tpZXMKIAotICAgIENv
b2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVzdCB3
aXRoIGEKKyAgICBBIENvb2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0
aCB0aGUgcmVxdWVzdCB3aXRoIGEKICAgICBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlLgogCiAg
ICAgLi4gYXR0cmlidXRlOjogYXV0aAogCi0gICAgT2JqZWN0IHdpdGggdXNlcm5hbWUgYW5kIHBh
c3N3b3JkIHByb3BlcnRpZXMgcmVwcmVzZW50aW5nIGFueQotICAgIGNyZWRlbnRpYWxzIHN1cHBs
aWVkIHVzaW5nIEhUVFAgYXV0aGVudGljYXRpb24uCisgICAgQW4gaW5zdGFuY2Ugb2YgQXV0aGVu
dGljYXRpb24gd2l0aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcworICAgIHJlcHJl
c2VudGluZyBhbnkgY3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlv
bi4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IHNlcnZlcgogCkBAIC0yNDgsOCArMjQ5LDEyIEBAIGNs
YXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID0gcmVx
dWVzdF9oYW5kbGVyLnByb3RvY29sX3ZlcnNpb24KICAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1
ZXN0X2hhbmRsZXIuY29tbWFuZAogCisgICAgICAgICMgS2V5cyBhbmQgdmFsdWVzIGluIHJhdyBo
ZWFkZXJzIGFyZSBuYXRpdmUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUK
KyAgICAgICAgc2VsZi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKICAg
ICAgICAgc2NoZW1lID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUKLSAgICAgICAgaG9z
dCA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzLmdldCgiSG9zdCIpCisgICAgICAgIGhvc3QgPSBz
ZWxmLnJhd19oZWFkZXJzLmdldCgiSG9zdCIpCiAgICAgICAgIHBvcnQgPSByZXF1ZXN0X2hhbmRs
ZXIuc2VydmVyLnNlcnZlcl9hZGRyZXNzWzFdCiAKICAgICAgICAgaWYgaG9zdCBpcyBOb25lOgpA
QCAtMjYyLDIyICsyNjcsMTcgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxm
LnVybF9iYXNlID0gIi8iCiAKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3BhdGguc3RhcnRzd2l0
aChzY2hlbWUgKyAiOi8vIik6Ci0gICAgICAgICAgICBzZWxmLnVybCA9IHJlcXVlc3RfaGFuZGxl
ci5wYXRoCisgICAgICAgICAgICBzZWxmLnVybCA9IHNlbGYucmVxdWVzdF9wYXRoCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnVybCA9ICIlczovLyVzOiVzJXMiICUgKHNjaGVtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3BhdGgpCisgICAgICAgICAgICAjIFRPRE8oIzIz
MzYyKTogU3RvcCB1c2luZyBuYXRpdmUgc3RyaW5ncyBmb3IgVVJMcy4KKyAgICAgICAgICAgIHNl
bGYudXJsID0gIiVzOi8vJXM6JXMlcyIgJSAoCisgICAgICAgICAgICAgICAgc2NoZW1lLCBob3N0
LCBwb3J0LCBzZWxmLnJlcXVlc3RfcGF0aCkKICAgICAgICAgc2VsZi51cmxfcGFydHMgPSB1cmxz
cGxpdChzZWxmLnVybCkKIAotICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5k
bGVyLmhlYWRlcnMKLQogICAgICAgICBzZWxmLnJlcXVlc3RfbGluZSA9IHJlcXVlc3RfaGFuZGxl
ci5yYXdfcmVxdWVzdGxpbmUKIAotICAgICAgICBzZWxmLl9oZWFkZXJzID0gTm9uZQotCiAgICAg
ICAgIHNlbGYucmF3X2lucHV0ID0gSW5wdXRGaWxlKHJlcXVlc3RfaGFuZGxlci5yZmlsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaGVhZGVycy5nZXQoIkNv
bnRlbnQtTGVuZ3RoIiwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQoc2VsZi5yYXdfaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiwgMCkpKQogCiAgICAgICAg
IHNlbGYuX2JvZHkgPSBOb25lCiAKQEAgLTI5NywxOSArMjk3LDI0IEBAIGNsYXNzIFJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5x
dWVyeSwga2VlcF9ibGFua192YWx1ZXM9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX0dFVCA9IE11
bHRpRGljdCgpCiAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fR0VULmFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYu
X0dFVC5hZGQoaXNvbW9ycGhpY19lbmNvZGUoa2V5KSwgaXNvbW9ycGhpY19lbmNvZGUodmFsdWUp
KQogICAgICAgICByZXR1cm4gc2VsZi5fR0VUCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgUE9T
VChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fUE9TVCBpcyBOb25lOgotICAgICAgICAgICAgI1dv
cmsgb3V0IHRoZSBwb3N0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICMgV29yayBvdXQgdGhlIHBv
c3QgcGFyYW1ldGVycwogICAgICAgICAgICAgcG9zID0gc2VsZi5yYXdfaW5wdXQudGVsbCgpCiAg
ICAgICAgICAgICBzZWxmLnJhd19pbnB1dC5zZWVrKDApCi0gICAgICAgICAgICBmcyA9IGNnaS5G
aWVsZFN0b3JhZ2UoZnA9c2VsZi5yYXdfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW52aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdfaGVhZGVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQor
ICAgICAgICAgICAga3dhcmdzID0geworICAgICAgICAgICAgICAgICJmcCI6IHNlbGYucmF3X2lu
cHV0LAorICAgICAgICAgICAgICAgICJlbnZpcm9uIjogeyJSRVFVRVNUX01FVEhPRCI6IHNlbGYu
bWV0aG9kfSwKKyAgICAgICAgICAgICAgICAiaGVhZGVycyI6IHNlbGYucmF3X2hlYWRlcnMsCisg
ICAgICAgICAgICAgICAgImtlZXBfYmxhbmtfdmFsdWVzIjogVHJ1ZSwKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIFBZMzoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0g
PSAiaXNvLTg4NTktMSIKKyAgICAgICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZSgqKmt3YXJn
cykKICAgICAgICAgICAgIHNlbGYuX1BPU1QgPSBNdWx0aURpY3QuZnJvbV9maWVsZF9zdG9yYWdl
KGZzKQogICAgICAgICAgICAgc2VsZi5yYXdfaW5wdXQuc2Vlayhwb3MpCiAgICAgICAgIHJldHVy
biBzZWxmLl9QT1NUCkBAIC0zMTcsMTQgKzMyMiwxMiBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6
CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvb2tpZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYu
X2Nvb2tpZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQorICAg
ICAgICAgICAgcGFyc2VyID0gQmluYXJ5Q29va2llUGFyc2VyKCkKICAgICAgICAgICAgIGNvb2tp
ZV9oZWFkZXJzID0gc2VsZi5oZWFkZXJzLmdldCgiY29va2llIiwgYiIiKQotICAgICAgICAgICAg
aWYgUFkzOgotICAgICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0gY29va2llX2hlYWRlcnMu
ZGVjb2RlKCJpc28tODg1OS0xIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFk
ZXJzKQogICAgICAgICAgICAgY29va2llcyA9IENvb2tpZXMoKQogICAgICAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gaXRlcml0ZW1zKHBhcnNlcik6Ci0gICAgICAgICAgICAgICAgY29va2llc1tr
ZXldID0gQ29va2llVmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgY29va2llc1tpc29tb3Jw
aGljX2VuY29kZShrZXkpXSA9IENvb2tpZVZhbHVlKHZhbHVlKQogICAgICAgICAgICAgc2VsZi5f
Y29va2llcyA9IGNvb2tpZXMKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvb2tpZXMKIApAQCAtMzU3
LDI0ICszNjAsNiBAQCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVzdCk6CiAgICAgICAgIHN1cGVyKEgy
UmVxdWVzdCwgc2VsZikuX19pbml0X18ocmVxdWVzdF9oYW5kbGVyKQogCiAKLWRlZiBfbWF5YmVf
ZW5jb2RlKHMpOgotICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5
IGRhdGEgdXNpbmcgaXNvLTg4NTktMS4KLQotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIg
YW5kIGBieXRlc2AgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYg
dGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuCi0gICAgIiIiCi0gICAgaWYg
aXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzCi0KLSAgICAjIFB5
dGhvbiAzIGFzc3VtZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNpbmcgaGVhZGVycywgd2hpY2ggd2ls
bCBnYXJibGUgdGV4dAotICAgICMgd2l0aCBub24gQVNDSUkgY2hhcmFjdGVycy4gV2UgdHJ5IHRv
IGVuY29kZSB0aGUgdGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNv
bS9weXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQw
MzJmYjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRf
dHlwZSk6Ci0gICAgICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCi0KLSAgICByYWlz
ZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVxdWVzdEhlYWRlcnM6ICVyIiAlIHMp
Ci0KLQogY2xhc3MgUmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiUmVhZC1vbmx5IGRpY3Rp
b25hcnktbGlrZSBBUEkgZm9yIGFjY2Vzc2luZyByZXF1ZXN0IGhlYWRlcnMuCiAKQEAgLTM4NCw3
ICszNjksNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAiIiIKICAgICBkZWYg
X19pbml0X18oc2VsZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVhZGVyIGluIGl0ZW1zLmtleXMo
KToKLSAgICAgICAgICAgIGtleSA9IF9tYXliZV9lbmNvZGUoaGVhZGVyKS5sb3dlcigpCisgICAg
ICAgICAgICBrZXkgPSBpc29tb3JwaGljX2VuY29kZShoZWFkZXIpLmxvd2VyKCkKICAgICAgICAg
ICAgICMgZ2V0IGFsbCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICAgICAgdmFs
dWVzID0gaXRlbXMuZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKGhlYWRlcikKICAgICAgICAgICAgIGlm
IGxlbih2YWx1ZXMpID4gMToKQEAgLTM5NCwyMiArMzc5LDIxIEBAIGNsYXNzIFJlcXVlc3RIZWFk
ZXJzKGRpY3QpOgogICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CiAgICAgICAg
ICAgICAgICAgICAgICMgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzIHJldHVybnMgcmF3IGhlYWRlciBs
aW5lcywgc28KICAgICAgICAgICAgICAgICAgICAgIyBzcGxpdCB0byBnZXQgbmFtZSwgdmFsdWUK
LSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVzLmFwcGVuZChfbWF5YmVfZW5jb2RlKHZhbHVl
KS5zcGxpdChiJzonLCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBs
ZXMuYXBwZW5kKGlzb21vcnBoaWNfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzonLCAxKVsxXS5zdHJp
cCgpKQogICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBtdWx0aXBsZXMKICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgaGVhZGVycyA9IFtfbWF5YmVfZW5jb2RlKGl0ZW1zW2hlYWRl
cl0pXQorICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBbaXNvbW9ycGhpY19lbmNvZGUoaXRlbXNb
aGVhZGVyXSldCiAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgaGVhZGVy
cykKIAotCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIkdldCBh
bGwgaGVhZGVycyBvZiBhIGNlcnRhaW4gKGNhc2UtaW5zZW5zaXRpdmUpIG5hbWUuIElmIHRoZXJl
IGlzCiAgICAgICAgIG1vcmUgdGhhbiBvbmUsIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGNvbW1h
IHNlcGFyYXRlZCIiIgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAg
a2V5ID0gaXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0
aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgog
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlc1swXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmV0dXJuICIsICIuam9pbih2YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gYiIsICIuam9pbih2
YWx1ZXMpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAg
ICByYWlzZSBFeGNlcHRpb24KQEAgLTQzMCw3ICs0MTQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVy
cyhkaWN0KToKICAgICBkZWYgZ2V0X2xpc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgog
ICAgICAgICAiIiJHZXQgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgZmll
bGQgbmFtZSBhcwogICAgICAgICBhIGxpc3QiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29k
ZShrZXkpCisgICAgICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkp
CiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0MCw3ICs0MjQsNyBAQCBjbGFzcyBSZXF1
ZXN0SGVhZGVycyhkaWN0KToKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fY29u
dGFpbnNfXyhzZWxmLCBrZXkpOgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAg
ICAgICAga2V5ID0gaXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICByZXR1cm4gZGljdC5f
X2NvbnRhaW5zX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYp
OgpAQCAtNDUxLDYgKzQzNSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAg
ICBmb3IgaXRlbSBpbiBzZWxmOgogICAgICAgICAgICAgeWllbGQgc2VsZltpdGVtXQogCisKIGNs
YXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAgICAgIiIiUmVwcmVzZW50YXRpb24gb2YgY29va2ll
cy4KIApAQCAtNTI0LDkgKzUwOSw4IEBAIGNsYXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAKIAog
Y2xhc3MgTXVsdGlEaWN0KGRpY3QpOgotICAgICIiIkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRz
IG11bHRpcGxlIHZhbHVlcyBmb3IgZWFjaAotICAgIGtleSIiIgotICAgICNUT0RPOiB0aGlzIHNo
b3VsZCBwZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKKyAgICAiIiJEaWN0aW9uYXJ5IHR5cGUg
dGhhdCBob2xkcyBtdWx0aXBsZSB2YWx1ZXMgZm9yIGVhY2gga2V5IiIiCisgICAgIyBUT0RPOiB0
aGlzIHNob3VsZCBwZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKICAgICBkZWYgX19pbml0X18o
c2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtNTQxLDcgKzUyNSw2IEBAIGNsYXNzIE11bHRpRGlj
dChkaWN0KToKIAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJH
ZXQgdGhlIGZpcnN0IHZhbHVlIHdpdGggYSBnaXZlbiBrZXkiIiIKLSAgICAgICAgI1RPRE86IHNo
b3VsZCB0aGlzIGluc3RlYWQgYmUgdGhlIGxhc3QgdmFsdWU/CiAgICAgICAgIHJldHVybiBzZWxm
LmZpcnN0KGtleSkKIAogICAgIGRlZiBmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlzc2luZyk6
CkBAIC01ODQsNiArNTY3LDEwIEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBmcm9tX2ZpZWxkX3N0b3JhZ2UoY2xzLCBmcyk6CisgICAgICAgICIi
IkNvbnN0cnVjdCBhIE11bHRpRGljdCBmcm9tIGEgY2dpLkZpZWxkU3RvcmFnZQorCisgICAgICAg
IE5vdGUgdGhhdCBhbGwga2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5ncy4KKyAgICAg
ICAgIiIiCiAgICAgICAgIHNlbGYgPSBjbHMoKQogICAgICAgICBpZiBmcy5saXN0IGlzIE5vbmU6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZgpAQCAtNTk0LDEzICs1ODEsNDYgQEAgY2xhc3MgTXVs
dGlEaWN0KGRpY3QpOgogCiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAg
ICAgICAgICAgIGlmIG5vdCB2YWx1ZS5maWxlbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS52YWx1ZQotICAgICAgICAgICAgICAgIHNlbGYuYWRkKGtleSwgdmFsdWUpCisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUudmFsdWUp
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UodmFsdWUsIGNnaS5GaWVsZFN0b3JhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hZGQo
aXNvbW9ycGhpY19lbmNvZGUoa2V5KSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBzZWxmCiAKIAor
Y2xhc3MgQmluYXJ5Q29va2llUGFyc2VyKEJhc2VDb29raWUpOgorICAgICIiIkEgc3ViY2xhc3Mg
b2YgQmFzZUNvb2tpZSB0aGF0IHJldHVybnMgdmFsdWVzIGluIGJpbmFyeSBzdHJpbmdzCisKKyAg
ICBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0byBzdG9yZSB0aGUgY29va2llczsgdXNlIENvb2tpZXMg
aW5zdGVhZC4KKyAgICAiIiIKKyAgICBkZWYgdmFsdWVfZGVjb2RlKHNlbGYsIHZhbCk6CisgICAg
ICAgICIiIkRlY29kZSB2YWx1ZSBmcm9tIG5ldHdvcmsgdG8gKHJlYWxfdmFsdWUsIGNvZGVkX3Zh
bHVlKS4KKworICAgICAgICBPdmVycmlkZSBCYXNlQ29va2llLnZhbHVlX2RlY29kZS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZSh2YWwpLCB2YWwKKworICAg
IGRlZiB2YWx1ZV9lbmNvZGUoc2VsZiwgdmFsKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcignQmluYXJ5Q29va2llUGFyc2VyIGlzIG5vdCBmb3Igc2V0dGluZyBjb29raWVzJykK
KworICAgIGRlZiBsb2FkKHNlbGYsIHJhd2RhdGEpOgorICAgICAgICAiIiJMb2FkIGNvb2tpZXMg
ZnJvbSBhIGJpbmFyeSBzdHJpbmcuCisKKyAgICAgICAgVGhpcyBvdmVycmlkZXMgYW5kIGNhbGxz
IEJhc2VDb29raWUubG9hZC4gVW5saWtlIEJhc2VDb29raWUubG9hZCwgaXQKKyAgICAgICAgZG9l
cyBub3QgYWNjZXB0IGRpY3Rpb25hcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKHJhd2RhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBpZiBQWTM6CisgICAgICAg
ICAgICAjIEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZywgd2hpY2ggaW4g
UHl0aG9uIDMgaXMgdGV4dC4KKyAgICAgICAgICAgIHJhd2RhdGEgPSBpc29tb3JwaGljX2RlY29k
ZShyYXdkYXRhKQorICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQo
cmF3ZGF0YSkKKworCiBjbGFzcyBDb29raWVzKE11bHRpRGljdCk6Ci0gICAgIiIiTXVsdGlEaWN0
IHNwZWNpYWxpc2VkIGZvciBDb29raWUgdmFsdWVzIiIiCisgICAgIiIiTXVsdGlEaWN0IHNwZWNp
YWxpc2VkIGZvciBDb29raWUgdmFsdWVzCisKKyAgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFy
eSBzdHJpbmdzLgorICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFz
cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNw
b25zZS5weQppbmRleCAzYTYwYzJiYWJiMzlkOGQ3Nzk5OTAyMmE3ZmI0ZDE4NGNiMDE5YWE4Li5i
NmYyNzQ0NzQ1MTk4NDZkMjk4YTI5ZGEwYjNkYjM5NjE5OTliMjRmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3Jlc3BvbnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKQEAgLTEsMTkg
KzEsMjIgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tp
ZXMgaW1wb3J0IEJhc2VDb29raWUsIE1vcnNlbAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1w
b3J0IGpzb24KLWltcG9ydCB1dWlkCiBpbXBvcnQgc29ja2V0Ci1mcm9tIC5jb25zdGFudHMgaW1w
b3J0IHJlc3BvbnNlX2NvZGVzLCBoMl9oZWFkZXJzCi1mcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9s
b2dnZXIKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KK2ltcG9ydCB1dWlkCiAKLWZyb20gc2l4IGlt
cG9ydCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQ
WTMKLWZyb20gaHlwZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUs
IENvbnRpbnVhdGlvbkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUK
K2Zyb20gaHlwZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENv
bnRpbnVhdGlvbkZyYW1lCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwg
aW50ZWdlcl90eXBlcywgaXRlcnZhbHVlcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tp
ZXMgaW1wb3J0IEJhc2VDb29raWUsIE1vcnNlbAorCitmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJl
c3BvbnNlX2NvZGVzLCBoMl9oZWFkZXJzCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIK
K2Zyb20gLnV0aWxzIGltcG9ydCBpc29tb3JwaGljX2RlY29kZSwgaXNvbW9ycGhpY19lbmNvZGUK
IAogbWlzc2luZyA9IG9iamVjdCgpCiAKKwogY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAi
IiJPYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBhIEhUVFAgcmVxdWVzdAogCkBA
IC03OSw3ICs4Miw2IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVh
ZGVycyA9IFJlc3BvbnNlSGVhZGVycygpCiAgICAgICAgIHNlbGYuY29udGVudCA9IFtdCiAKLQog
ICAgIEBwcm9wZXJ0eQogICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9zdGF0dXMKQEAgLTk5LDggKzEwMSw4IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAg
ICAgICIiIlNldCBhIGNvb2tpZSB0byBiZSBzZW50IHdpdGggYSBTZXQtQ29va2llIGhlYWRlciBp
biB0aGUKICAgICAgICAgcmVzcG9uc2UKIAotICAgICAgICA6cGFyYW0gbmFtZTogU3RyaW5nIG5h
bWUgb2YgdGhlIGNvb2tpZQotICAgICAgICA6cGFyYW0gdmFsdWU6IFN0cmluZyB2YWx1ZSBvZiB0
aGUgY29va2llCisgICAgICAgIDpwYXJhbSBuYW1lOiBuYW1lIG9mIHRoZSBjb29raWUgKGEgYmlu
YXJ5IHN0cmluZykKKyAgICAgICAgOnBhcmFtIHZhbHVlOiB2YWx1ZSBvZiB0aGUgY29va2llIChh
IGJpbmFyeSBzdHJpbmcsIG9yIE5vbmUpCiAgICAgICAgIDpwYXJhbSBtYXhfYWdlOiBkYXRldGlt
ZS50aW1lZGVsdGEgaW50IHJlcHJlc2VudGluZyB0aGUgdGltZSAoaW4gc2Vjb25kcykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHVudGlsIHRoZSBjb29raWUgZXhwaXJlcwogICAgICAgICA6cGFy
YW0gcGF0aDogU3RyaW5nIHBhdGggdG8gd2hpY2ggdGhlIGNvb2tpZSBhcHBsaWVzCkBAIC0xMTMs
MTQgKzExNSwyMCBAQCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgdGltZSBvciBpbnRlcnZhbCBmcm9tIG5vdyB3aGVuIHRoZSBjb29raWUgZXhwaXJlcwog
CiAgICAgICAgICIiIgorICAgICAgICAjIFRPRE8oUHl0aG9uIDMpOiBDb252ZXJ0IG90aGVyIHBh
cmFtZXRlcnMgKGUuZy4gcGF0aCkgdG8gYnl0ZXMsIHRvby4KKyAgICAgICAgaWYgdmFsdWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAgICBtYXhfYWdlID0gMAor
ICAgICAgICAgICAgZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQorCisgICAgICAgIGlmIFBZ
MzoKKyAgICAgICAgICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICAg
ICAgdmFsdWUgPSBpc29tb3JwaGljX2RlY29kZSh2YWx1ZSkKKwogICAgICAgICBkYXlzID0ge2kr
MTogbmFtZSBmb3IgaSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIs
ICJtYXkiLCAianVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAianVsIiwgImF1ZyIsICJzZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvY3QiLCAibm92IiwgImRlYyJdKX0KLSAgICAg
ICAgaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAg
IG1heF9hZ2UgPSAwCi0gICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBpcmVzLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAg
ZXhwaXJlcyA9IGRhdGV0aW1lLnV0Y25vdygpICsgZXhwaXJlcwpAQCAtMTU0LDExICsxNjIsMTQg
QEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKIAogICAgIGRlZiB1bnNldF9jb29raWUoc2VsZiwg
bmFtZSk6CiAgICAgICAgICIiIlJlbW92ZSBhIGNvb2tpZSBmcm9tIHRob3NlIHRoYXQgYXJlIGJl
aW5nIHNlbnQgd2l0aCB0aGUgcmVzcG9uc2UiIiIKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAg
ICAgbmFtZSA9IGlzb21vcnBoaWNfZGVjb2RlKG5hbWUpCiAgICAgICAgIGNvb2tpZXMgPSBzZWxm
LmhlYWRlcnMuZ2V0KCJTZXQtQ29va2llIikKICAgICAgICAgcGFyc2VyID0gQmFzZUNvb2tpZSgp
CiAgICAgICAgIGZvciBjb29raWUgaW4gY29va2llczoKICAgICAgICAgICAgIGlmIFBZMzoKLSAg
ICAgICAgICAgICAgICBjb29raWUgPSBjb29raWUuZGVjb2RlKCJpc28tODg1OS0xIikKKyAgICAg
ICAgICAgICAgICAjIEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgdGV4dCBzdHJpbmcuCisgICAg
ICAgICAgICAgICAgY29va2llID0gaXNvbW9ycGhpY19kZWNvZGUoY29va2llKQogICAgICAgICAg
ICAgcGFyc2VyLmxvYWQoY29va2llKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMo
KToKQEAgLTIyMyw5ICsyMzQsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAg
c2VsZi53cml0ZV9zdGF0dXNfaGVhZGVycygpCiAgICAgICAgIHNlbGYud3JpdGVfY29udGVudCgp
CiAKLSAgICBkZWYgc2V0X2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9IiIpOgotICAgICAgICAi
IiJTZXQgdGhlIHJlc3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCBib2R5IHRvIGluZGljYXRlIGFu
Ci0gICAgICAgIGVycm9yIiIiCisgICAgZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdl
PXUiIik6CisgICAgICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIHJl
dHVybiBhIEpTT04gZXJyb3Igb2JqZWN0OgorCisgICAgICAgIHsiZXJyb3IiOiB7ImNvZGUiOiBj
b2RlLCAibWVzc2FnZSI6IG1lc3NhZ2V9fQorICAgICAgICBjb2RlIGlzIGFuIGludCAoSFRUUCBz
dGF0dXMgY29kZSksIGFuZCBtZXNzYWdlIGlzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICIiIgog
ICAgICAgICBlcnIgPSB7ImNvZGUiOiBjb2RlLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiBt
ZXNzYWdlfQogICAgICAgICBkYXRhID0ganNvbi5kdW1wcyh7ImVycm9yIjogZXJyfSkKQEAgLTI5
NywyNCArMzExLDEwIEBAIGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKIAogCiBkZWYgX21h
eWJlX2VuY29kZShzKToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJp
bmFyeSBkYXRhIHVzaW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhv
biAyIGFuZCBgYnl0ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAg
IGlmIHRoZSBhcmd1bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAg
IGlmIGlzaW5zdGFuY2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAg
IyBQeXRob24gMyBhc3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNo
IHdpbGwgZ2FyYmxlIHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRy
eSB0byBlbmNvZGUgdGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1
Yi5jb20vcHl0aG9uL2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4
NzFkMDMyZmI4L0xpYi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0
ZXh0X3R5cGUpOgotICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCisgICAg
IiIiRW5jb2RlIGEgc3RyaW5nIG9yIGFuIGludCBpbnRvIGJpbmFyeSBkYXRhIHVzaW5nIGlzb21v
cnBoaWNfZW5jb2RlKCkuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShzLCBpbnRlZ2VyX3R5cGVzKToK
ICAgICAgICAgcmV0dXJuIGIiJWkiICUgKHMsKQotCi0gICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4
cGVjdGVkIHZhbHVlIGluIFJlc3BvbnNlSGVhZGVyczogJXIiICUgcykKKyAgICByZXR1cm4gaXNv
bW9ycGhpY19lbmNvZGUocykKIAogCiBjbGFzcyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKaW5k
ZXggYzAzNzczMmE2YmFlZjMxZDU4YjNkZmY5MjdiMDc0ZGZjZmFiYjRmZi4uYzI0OThjNGVlMWU4
ZjQ1ZGU2MDRmNzEzOTRjM2Q2ZmVlZjgyYWVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2
ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTY0LDEyICs2NCw2IEBAIGhhbmRs
ZXIgcmV0dXJucywgb3IgZm9yIGRpcmVjdGx5IHdyaXRpbmcgdG8gdGhlIG91dHB1dCBzdHJlYW0u
CiAiIiIKIAogCi1FRElUX0hPU1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNl
c3NhcnkgV1BUIHN1YmRvbWFpbnMgIgotICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8g
YSBsb29wYmFjayBkZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgIlNl
ZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10
ZXN0cyAiCi0gICAgICAgICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQotCi0KIGNsYXNz
IFJlcXVlc3RSZXdyaXRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6
CiAgICAgICAgICIiIk9iamVjdCBmb3IgcmV3cml0aW5nIHRoZSByZXF1ZXN0IHBhdGguCkBAIC02
NzYsNyArNjcwLDggQEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAg
IF9ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLmh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgi
RmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRfSE9TVFNfSEVMUCkp
CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAg
c2VydmVyIG9uIHBvcnQgJXM7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
cyBzb21ldGhpbmcgYWxyZWFkeSB1c2luZyB0aGF0IHBvcnQ/IiAlIHBvcnQpCiAgICAgICAgICAg
ICByYWlzZQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIGJsb2NrPUZhbHNlKToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3Bl
bnNzbC5weQppbmRleCBhZWExYzczODBiMTc5Y2VkMTM2NmI2NjE3MDU3NTc4YjM1ZDllMTRiLi42
NGY2ZDVmYjJkYjI3OTU4ZjMzZGQzNmI1N2I3YzE3NGRmMGJkN2U5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVu
c3NsLnB5CkBAIC00MDIsNiArNDAyLDggQEAgY2xhc3MgT3BlblNTTEVudmlyb25tZW50KG9iamVj
dCk6CiAKICAgICBkZWYgX2dlbmVyYXRlX2hvc3RfY2VydChzZWxmLCBob3N0cyk6CiAgICAgICAg
IGhvc3QgPSBob3N0c1swXQorICAgICAgICBpZiBub3Qgc2VsZi5mb3JjZV9yZWdlbmVyYXRlOgor
ICAgICAgICAgICAgc2VsZi5fbG9hZF9jYV9jZXJ0KCkKICAgICAgICAgaWYgc2VsZi5fY2Ffa2V5
X3BhdGggaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKGhvc3RzKQogICAg
ICAgICBjYV9rZXlfcGF0aCA9IHNlbGYuX2NhX2tleV9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL3N0YXNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQppbmRleCA4YjZmZDM0ZjAyYzBlOWI3
MDczZDBjOTQwMTE3MDdlYWE0ZTVhMWYxLi42YjM1MTg0NzQ5MWJmZWUxZjhlMTdhNDIxMjdjODhi
ZTk3YTYyOTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2Vy
dmUvc3Rhc2gucHkKQEAgLTQsNyArNCw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHV1aWQKIGltcG9y
dCB0aHJlYWRpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJl
clByb3h5LCBCYXNlTWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBl
Citmcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQorCitmcm9tIC51dGlscyBp
bXBvcnQgaXNvbW9ycGhpY19lbmNvZGUKIAogCiBjbGFzcyBTZXJ2ZXJEaWN0TWFuYWdlcihCYXNl
TWFuYWdlcik6CkBAIC0xNDUsOSArMTQ3LDEyIEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAg
ICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzZWxmLmRlZmF1bHRfcGF0
aAogICAgICAgICAjIFRoaXMga2V5IGZvcm1hdCBpcyByZXF1aXJlZCB0byBzdXBwb3J0IHVzaW5n
IHRoZSBwYXRoLiBTaW5jZSB0aGUgZGF0YQotICAgICAgICAjIHBhc3NlZCBpbnRvIHRoZSBzdGFz
aCBjYW4gYmUgYSBEaWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0IGNoYW5nZXMKLSAgICAg
ICAgIyB3aGVuIHdyaXRpbmcgdG8gYSBzdWJkaWN0LgotICAgICAgICByZXR1cm4gKHN0cihwYXRo
KSwgc3RyKHV1aWQuVVVJRChrZXkpKSkKKyAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2gg
Y2FuIGJlIGEgRGljdFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdAorICAgICAgICAjIGNoYW5n
ZXMgd2hlbiB3cml0aW5nIHRvIGEgc3ViZGljdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXks
IGJpbmFyeV90eXBlKToKKyAgICAgICAgICAgICMgVVVJRHMgYXJlIHdpdGhpbiB0aGUgQVNDSUkg
Y2hhcnNldC4KKyAgICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAg
cmV0dXJuIChpc29tb3JwaGljX2VuY29kZShwYXRoKSwgdXVpZC5VVUlEKGtleSkuYnl0ZXMpCiAK
ICAgICBkZWYgcHV0KHNlbGYsIGtleSwgdmFsdWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIlBs
YWNlIGEgdmFsdWUgaW4gdGhlIHNoYXJlZCBzdGFzaC4KQEAgLTE2Miw3ICsxNjcsNyBAQCBjbGFz
cyBTdGFzaChvYmplY3QpOgogICAgICAgICBpZiBpbnRlcm5hbF9rZXkgaW4gc2VsZi5kYXRhOgog
ICAgICAgICAgICAgcmFpc2UgU3Rhc2hFcnJvcigiVHJpZWQgdG8gb3ZlcndyaXRlIGV4aXN0aW5n
IHNoYXJlZCBzdGFzaCB2YWx1ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Ig
a2V5ICVzIChvbGQgdmFsdWUgd2FzICVzLCBuZXcgdmFsdWUgaXMgJXMpIiAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYuZGF0YVtzdHIoaW50ZXJuYWxf
a2V5KV0sIHZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tl
eSwgc2VsZi5kYXRhW2ludGVybmFsX2tleV0sIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIHNlbGYuZGF0YVtpbnRlcm5hbF9rZXldID0gdmFsdWUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93
cHRzZXJ2ZS91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggNjRiMDhhMjdhYThi
MzNkNGNlYTg2NzdiMzBkMzMwOTZjYWUyMTJkNS4uYjAwNWI0MTdkNzQzZjIwZjA2NWMxOTVlNzQz
ZDhhYmNmYjA0YWRmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL3V0aWxzLnB5CkBAIC0xLDYgKzEsNDUgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBz
eXMKIAorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKKworCitkZWYgaXNv
bW9ycGhpY19kZWNvZGUocyk6CisgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBh
IHRleHQgc3RyaW5nIHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGB1bmljb2RlYCBp
biBQeXRob24gMiBhbmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCisgICAg
bm8tb3AgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0x
IGlzIGNob3NlbiBiZWNhdXNlCisgICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29k
ZSBwb2ludHMgcmFuZ2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCisgICAgdmFsdWVzIGFyZSB0
aGUgc2FtZSBhcyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJp
bmcgY2FuCisgICAgYmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3
aXRob3V0IGFueSBlcnJvcnMgb3IgZGF0YQorICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBp
c28tODg1OS0xIChvciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIGh0dHBzOi8v
Z2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4
OGViMTg3MWQwMzJmYjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICAiIiIKKyAgICBpZiBp
c2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2lu
c3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCJpc28tODg1
OS0xIikKKworICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5n
IHN0cmluZy1saWtlKTogJXIiICUgcykKKworCitkZWYgaXNvbW9ycGhpY19lbmNvZGUocyk6Cisg
ICAgIiIiRW5jb2RlcyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBp
c28tODg1OS0xLgorCisgICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBp
biBQeXRob24gMy4gVGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKKyAgICBpZiB0aGUgYXJndW1lbnQg
YWxyZWFkeSBoYXMgYSBiaW5hcnkgdHlwZS4gVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgb2YKKyAg
ICBpc29tb3JwaGljX2RlY29kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFy
eV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90
eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKworICAgIHJhaXNl
IFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtlKTogJXIi
ICUgcykKKworCiBkZWYgaW52ZXJ0X2RpY3QoZGljdCk6CiAgICAgcnYgPSB7fQogICAgIGZvciBr
ZXksIHZhbHVlcyBpbiBkaWN0Lml0ZW1zKCk6CkBAIC0yNSw2ICs2NCw3IEBAIGRlZiBfb3Blbl9z
b2NrZXQoaG9zdCwgcG9ydCk6CiAgICAgc29jay5saXN0ZW4oNSkKICAgICByZXR1cm4gc29jawog
CisKIGRlZiBpc19iYWRfcG9ydChwb3J0KToKICAgICAiIiIKICAgICBCYWQgcG9ydCBhcyBwZXIg
aHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3BvcnQtYmxvY2tpbmcKQEAgLTk5LDYgKzEz
OSw3IEBAIGRlZiBpc19iYWRfcG9ydChwb3J0KToKICAgICAgICAgNjY5NywgICMgaXJjK3Rscwog
ICAgIF0KIAorCiBkZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgaG9zdCA9IGhvc3Qgb3IgJzEy
Ny4wLjAuMScKICAgICBwb3J0ID0gMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400522</attachid>
            <date>2020-05-28 16:35:15 -0700</date>
            <delta_ts>2020-05-28 17:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200528163514.patch</filename>
            <type>text/plain</type>
            <size>2387722</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
cmVzb3VyY2VzL2ltcG9ydC1leHBlY3RhdGlvbnMuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uCmluZGV4IDNhZDk5ODk1ZjJm
YjQxOTk2M2IyMDUyN2UwMzRjZGE4ZGNjYzM3YjguLmI5MDA3NDBjOWY3MjI4M2U3NDUzYTUwZDli
MzlmNjM3MzAwN2Q1OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNv
dXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvaW1wb3J0LWV4cGVjdGF0aW9ucy5qc29uCkBAIC0xODcsNiArMTg3LDcg
QEAKICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2ZlYXR1cmUtcG9saWN5L3Jlc291cmNlcy8iOiAi
aW1wb3J0IiwgCiAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaCI6ICJpbXBvcnQiLCAKICAg
ICAid2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaSI6ICJpbXBvcnQiLCAKKyAgICAid2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYyI6ICJpbXBvcnQiLCAKICAgICAid2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzIjogImltcG9ydCIsIAogICAgICJ3ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlZGlyZWN0IjogImltcG9ydCIsIAogICAgICJ3ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3Jlc291cmNlcyI6ICJpbXBvcnQiLCAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1w
b2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jvc3MtaW4tc2Ft
ZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2Zy
YW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4
dAppbmRleCAxNjAwY2EyMmFkNDYyMDdjMTExNDk3ZTVhMGQzZDEzNGM5YTk0MDZmLi4zYTUyNzE2
M2E5MDUzYjFmMTc4ZjllOTk3MWEyMGExZWZlMTVlNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9u
ZS1ibG9jay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CkBAIC0xLDQgKzEsNCBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93
d3cxLmxvY2FsaG9zdDo4ODAxL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9zdXBwb3J0L2ZyYW1lLWFuY2VzdG9ycy5zdWIuaHRtbD9wb2xpY3k9JTI3bm9uZSUyNworQmxv
Y2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAxL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9zdXBwb3J0L2ZyYW1lLWFuY2Vz
dG9ycy5zdWIuaHRtbD9wb2xpY3k9JiN4Mjc7bm9uZSYjeDI3OwogCiAKIEZBSUwgQSAnZnJhbWUt
YW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2YWx1ZSAnbm9uZScgc2hvdWxkIGJsb2Nr
IHJlbmRlcmluZyBpbiBuZXN0ZWQgZnJhbWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJh
bWUgbXNnOiBUaGUgSUZyYW1lIHNob3VsZCBoYXZlIGJlZW4gYmxvY2tlZCAob3IgY3Jvc3Mtb3Jp
Z2luKS4gSXQgd2Fzbid0LiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jvc3MtaW4t
c2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3Jz
L2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVk
LnR4dAppbmRleCBiZDViMzA4MTM0YmM1NjU0NjU0MDE1YWVjOGFkNDQxMDFiNjg0NDY3Li5kZTNm
NWIxYWQ1ODFlNDE0NTk5Zjk4ZGQ1N2MwY2IyYTBkMjNhZGVjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUt
c2VsZi1ibG9jay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMv
ZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNCBAQAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6
Ly93d3cxLmxvY2FsaG9zdDo4ODAxL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2Vz
dG9ycy9zdXBwb3J0L2ZyYW1lLWFuY2VzdG9ycy5zdWIuaHRtbD9wb2xpY3k9JTI3c2VsZiUyNwor
QmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAx
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9zdXBwb3J0L2ZyYW1lLWFu
Y2VzdG9ycy5zdWIuaHRtbD9wb2xpY3k9JiN4Mjc7c2VsZiYjeDI3OwogCiAKIEZBSUwgQSAnZnJh
bWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJs
b2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJhbWVzLiBhc3NlcnRfdW5yZWFjaGVk
OiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3VsZCBoYXZlIGJlZW4gYmxvY2tlZCAo
b3IgY3Jvc3Mtb3JpZ2luKS4gSXQgd2Fzbid0LiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0
ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFt
ZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1zYW1lLWluLXNhbWUtc2VsZi1hbGxv
dy1leHBlY3RlZC50eHQKaW5kZXggY2EzNTNhODQ3MDE3YWJiNjlhYTdlNDY4Yzg1ZWU3OTliZjEz
YjMwZi4uMTllYjkxZjM3ODI1YTI0Yzk0NzE1MmE0MDFiNjU2MzY1ZTYyZmEyOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1zYW1l
LWluLXNhbWUtc2VsZi1hbGxvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1h
bmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1zYW1lLWluLXNhbWUtc2VsZi1hbGxvdy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiAKIAotUEFTUyBBICdmcmFtZS1hbmNlc3RvcnMn
IENTUCBkaXJlY3RpdmUgd2l0aCBhIHZhbHVlICdzYW1lJyBzaG91bGQgYmxvY2sgcmVuZGVyIGlu
IHNhbWUtb3JpZ2luIG5lc3RlZCBmcmFtZXMuIAorRkFJTCBBICdmcmFtZS1hbmNlc3RvcnMnIENT
UCBkaXJlY3RpdmUgd2l0aCBhIHZhbHVlICdzYW1lJyBzaG91bGQgYmxvY2sgcmVuZGVyIGluIHNh
bWUtb3JpZ2luIG5lc3RlZCBmcmFtZXMuIGFzc2VydF91bnJlYWNoZWQ6IElubmVyIElGcmFtZSBt
c2c6IFRoZSBJRnJhbWUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYmxvY2tlZC4gSXQgd2FzLiBSZWFj
aGVkIHVucmVhY2hhYmxlIGNvZGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9u
L2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5oZXJpdHMtY3NwLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9uLWluaGVyaXRzLWNz
cC1leHBlY3RlZC50eHQKaW5kZXggYTFiYzNiNjQ0MmU2ZjVmOWI2YWNjNTllZDk1MjJkNDc1MzA5
OTY0Yi4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5oZXJp
dHMtY3NwLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24vamF2YXNjcmlw
dC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEgQEAK
IAotRkFJTCBWaW9sYXRpb24gcmVwb3J0IHN0YXR1cyBPSy4gYXNzZXJ0X3RydWU6IHZpb2xhdGVk
LWRpcmVjdGl2ZSB2YWx1ZSBvZiAgImRlZmF1bHQtc3JjICdub25lJyIgZGlkIG5vdCBtYXRjaCBm
cmFtZS1zcmMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2Vycm9y
LWFmdGVyLXJlc3BvbnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9lcnJvci1hZnRlci1yZXNwb25zZS5odG1sCmluZGV4
IDU3MDFkNmQ3ODY2YjU3NWRjMTYyYjI3ZjcwYTMzNjk2N2M3MDkxMWYuLjhkYjM0MjkzMjRhZjE2
OTY5ZDA3NmMxYzRkYjAzYjhiNjg0OTZiZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2Vycm9yLWFmdGVyLXJl
c3BvbnNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvYmFzaWMvZXJyb3ItYWZ0ZXItcmVzcG9uc2UuaHRtbApAQCAtMiw2ICsy
LDcgQEAKIDxodG1sPgogICA8aGVhZD4KICAgICA8dGl0bGU+RmV0Y2g6IG5ldHdvcmsgdGltZW91
dCBhZnRlciByZWNlaXZpbmcgdGhlIEhUVFAgcmVzcG9uc2UgaGVhZGVyczwvdGl0bGU+CisgICAg
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+CiAgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3V0aWxzLmpzIj48L3NjcmlwdD4KQEAgLTEzLDcgKzE0LDcgQEAgZnVuY3Rp
b24gY2hlY2tSZWFkZXIodGVzdCwgcmVhZGVyLCBwcm9taXNlVG9UZXN0KQogewogICAgIHJldHVy
biByZWFkZXIucmVhZCgpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAgICAgIHZhbGlkYXRlQnVmZmVy
RnJvbVN0cmluZyh2YWx1ZS52YWx1ZSwgIlRFU1RfQ0hVTksiLCAiU2hvdWxkIHJlY2VpdmUgZmly
c3QgY2h1bmsiKTsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlw
ZUVycm9yKCksIHByb21pc2VUb1Rlc3QocmVhZGVyKSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBwcm9taXNlVG9UZXN0KHJlYWRlcikpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9oZWFkZXItdmFsdWUtbnVsbC1ieXRlLmFueS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jh
c2ljL2hlYWRlci12YWx1ZS1udWxsLWJ5dGUuYW55LmpzCmluZGV4IDljMjIzNzQwYzc4MDdiNDNh
NjU5NWJhODFlZjRmNWIzYzc0YzYwYjQuLjc0MWQ4M2JmN2FhYTU1Y2JhNTJkNjkyOTdkNjFiNzBm
N2IzYTVjZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hlYWRlci12YWx1ZS1udWxsLWJ5dGUuYW55LmpzCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL2hlYWRlci12YWx1ZS1udWxsLWJ5dGUuYW55LmpzCkBAIC0xLDUgKzEsNSBAQAogLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIKIAogcHJvbWlzZV90ZXN0KHQgPT4gewotICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2goIi4uLy4uLy4uL3ho
ci9yZXNvdXJjZXMvcGFyc2UtaGVhZGVycy5weT9teS1jdXN0b20taGVhZGVyPSIrZW5jb2RlVVJJ
Q29tcG9uZW50KCJ4XDB4IikpKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBl
RXJyb3IsIGZldGNoKCIuLi8uLi8uLi94aHIvcmVzb3VyY2VzL3BhcnNlLWhlYWRlcnMucHk/bXkt
Y3VzdG9tLWhlYWRlcj0iK2VuY29kZVVSSUNvbXBvbmVudCgieFwweCIpKSk7CiB9LCAiRW5zdXJl
IGZldGNoKCkgcmVqZWN0cyBudWxsIGJ5dGVzIGluIGhlYWRlcnMiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L2hpc3RvcmljYWwuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hpc3RvcmljYWwuYW55LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NTc0MWIyNzc3OThhNWI0YzVkZmViOGNhMDg3YWExYjlhMjI1ZGFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvaGlzdG9yaWNhbC5hbnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNSBAQAorCitQQVNTIEhlYWRlcnMgb2JqZWN0IG5vIGxvbmdlciBoYXMgYSBnZXRBbGwo
KSBtZXRob2QgCitQQVNTICd0eXBlJyBnZXR0ZXIgc2hvdWxkIG5vdCBleGlzdCBvbiBSZXF1ZXN0
IG9iamVjdHMgCitQQVNTIFJlc3BvbnNlIG9iamVjdCBubyBsb25nZXIgaGFzIGEgdHJhaWxlciBn
ZXR0ZXIgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hpc3RvcmljYWwuYW55Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9oaXN0b3Jp
Y2FsLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9oaXN0b3JpY2FsLmFueS5odG1sCkBAIC0w
LDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hpc3RvcmljYWwuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvaGlzdG9y
aWNhbC5hbnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVhNDE4NGFjOGJjYTBjODIwY2JmMmQ4MjJjYzM4MTI1
ZjUxMmU5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hpc3RvcmljYWwuYW55LmpzCkBAIC0wLDAg
KzEsMTUgQEAKK3Rlc3QoKCkgPT4geworICBhc3NlcnRfZmFsc2UoImdldEFsbCIgaW4gbmV3IEhl
YWRlcnMoKSk7CisgIGFzc2VydF9mYWxzZSgiZ2V0QWxsIiBpbiBIZWFkZXJzLnByb3RvdHlwZSk7
Cit9LCAiSGVhZGVycyBvYmplY3Qgbm8gbG9uZ2VyIGhhcyBhIGdldEFsbCgpIG1ldGhvZCIpOwor
Cit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X2ZhbHNlKCJ0eXBlIiBpbiBuZXcgUmVxdWVzdCgiYWJv
dXQ6YmxhbmsiKSk7CisgIGFzc2VydF9mYWxzZSgidHlwZSIgaW4gUmVxdWVzdC5wcm90b3R5cGUp
OworfSwgIid0eXBlJyBnZXR0ZXIgc2hvdWxkIG5vdCBleGlzdCBvbiBSZXF1ZXN0IG9iamVjdHMi
KTsKKworLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvZmV0Y2gvcHVsbC85NzkgZm9y
IHRoZSByZW1vdmFsCit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X2ZhbHNlKCJ0cmFpbGVyIiBpbiBu
ZXcgUmVzcG9uc2UoKSk7CisgIGFzc2VydF9mYWxzZSgidHJhaWxlciIgaW4gUmVzcG9uc2UucHJv
dG90eXBlKTsKK30sICJSZXNwb25zZSBvYmplY3Qgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsZXIgZ2V0
dGVyIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9oaXN0b3JpY2FsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvaGlzdG9yaWNhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTc0
MWIyNzc3OThhNWI0YzVkZmViOGNhMDg3YWExYjlhMjI1ZGFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFz
aWMvaGlzdG9yaWNhbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKwor
UEFTUyBIZWFkZXJzIG9iamVjdCBubyBsb25nZXIgaGFzIGEgZ2V0QWxsKCkgbWV0aG9kIAorUEFT
UyAndHlwZScgZ2V0dGVyIHNob3VsZCBub3QgZXhpc3Qgb24gUmVxdWVzdCBvYmplY3RzIAorUEFT
UyBSZXNwb25zZSBvYmplY3Qgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsZXIgZ2V0dGVyIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9oaXN0b3JpY2FsLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hpc3RvcmljYWwuYW55
Lndvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5
ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9oaXN0b3JpY2FsLmFueS53b3JrZXIuaHRt
bApAQCAtMCwwICsxIEBACis8IS0tIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jh
c2ljL2ludGVncml0eS5zdWIuYW55LmpzCmluZGV4IGQ0ODdjMzczOGFjNDk4ZjRiOTM2ZTI2OWMw
OTNjYTJiYWQ1ODFjYjAuLjU2ZGJkNDkwOWY2YTQzZTQ4OWVlNWI2YzUwMDU0ZDJiNDRkMDcwOWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5z
dWIuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgor
Ly8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBN
RVRBOiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3V0aWxzLmpzCiAKIGZ1bmN0aW9uIGludGVncml0eShk
ZXNjLCB1cmwsIGludGVncml0eSwgaW5pdFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CkBAIC0y
MCw3ICsyMCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIGludGVncml0eSwgaW5p
dFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CiAgICAgfSwgZGVzYyk7CiAgIH0gZWxzZSB7CiAg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwsIGZldGNoUmVxdWVzdEluaXQp
KTsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRj
aCh1cmwsIGZldGNoUmVxdWVzdEluaXQpKTsKICAgICB9LCBkZXNjKTsKICAgfQogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMva2VlcGFsaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2tlZXBhbGl2ZS1leHBlY3RlZC50
eHQKaW5kZXggZjJhZWE4NWZkMDVjNGIzZmNlYjQyZDAzYzMxNWQ1ZGNmNDQ2YWQyZi4uN2Y3NTQ4
OTVhNGRjOWFhNWUxMzFmYjNjOGFjZTRmODZiNzViOGVjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMva2VlcGFs
aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9rZWVwYWxpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDMg
KzEsOCBAQAogCi1QQVNTIEZldGNoIEFQSToga2VlcGFsaXZlIGhhbmRsaW5nIAorUEFTUyBzYW1l
LW9yaWdpbjsgc2V0dGluZyB1cCAKK1BBU1MgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0OyBzZXR0aW5n
IHVwIAorUEFTUyBjcm9zcy1vcmlnaW4gcmVkaXJlY3Qgd2l0aCBwcmVmbGlnaHQ7IHNldHRpbmcg
dXAgCitQQVNTIHNhbWUtb3JpZ2luIAorUEFTUyBjcm9zcy1vcmlnaW4gcmVkaXJlY3QgCitQQVNT
IGNyb3NzLW9yaWdpbiByZWRpcmVjdCB3aXRoIHByZWZsaWdodCAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMv
a2VlcGFsaXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9iYXNpYy9rZWVwYWxpdmUuaHRtbAppbmRleCA1MzE2NDEwMDA0YTc4ODBm
ZjRkMjQyMzRkNDUwODY4MGMyOWE2NzIwLi40NDdlZjJkZGZlY2Q3YTYyYzRiZjlmM2QxOWFmNGUz
MWU5ZmU2OGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9rZWVwYWxpdmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9rZWVwYWxp
dmUuaHRtbApAQCAtNywyNSArNyw4NSBAQAogPHNjcmlwdCBzcmM9Ii9jb21tb24vZ2V0LWhvc3Qt
aW5mby5zdWIuanMiPjwvc2NyaXB0PgogPGJvZHk+CiA8c2NyaXB0PgorZnVuY3Rpb24gZ2V0VXJs
KG9yaWdpbjEsIG9yaWdpbjIsIHdpdGhIZWFkZXJzKSB7CisgIGNvbnN0IGZyYW1lT3JpZ2luID0g
aG9zdF9pbmZvLkhUVFBfTk9UU0FNRVNJVEVfT1JJR0lOOworICByZXR1cm4gYCR7ZnJhbWVPcmln
aW59L2ZldGNoL2FwaS9yZXNvdXJjZXMva2VlcGFsaXZlLWlmcmFtZS5odG1sP2AgKworICAgIGBv
cmlnaW4xPSR7b3JpZ2luMX0mYCArCisgICAgYG9yaWdpbjI9JHtvcmlnaW4yfSZgICsKKyAgICAo
d2l0aEhlYWRlcnMgPyBgd2l0aC1oZWFkZXJzYCA6IGBgKTsKK30KKworYXN5bmMgZnVuY3Rpb24g
Z2V0VG9rZW4oKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7CisgICAgICByZXNv
bHZlKGV2ZW50LmRhdGEpOworICAgIH0sIHtvbmNlOiB0cnVlfSk7CisgIH0pOworfQorCithc3lu
YyBmdW5jdGlvbiBxdWVyeVRva2VuKHRva2VuKSB7CisgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2goYC4uL3Jlc291cmNlcy9zdGFzaC10YWtlLnB5P2tleT0ke3Rva2VufWApOworICBjb25z
dCBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOworICByZXR1cm4ganNvbjsKK30KKworLy8g
SW4gb3JkZXIgdG8gcGFyYWxsZWxpemUgdGhlIHdvcmssIHdlIGFyZSBnb2luZyB0byBoYXZlIGFu
IGFzeW5jX3Rlc3QKKy8vIGZvciB0aGUgcmVzdCBvZiB0aGUgd29yay4gTm90ZSB0aGF0IHdlIHdh
bnQgdGhlIHNlcmlhbGl6ZWQgYmVoYXZpb3IKKy8vIGZvciB0aGUgc3RlcHMgc28gZmFyLCBzbyB3
ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIGVudGlyZSB0ZXN0IGNhc2UKKy8vIGFuIGFzeW5jX3Rl
c3QuCitmdW5jdGlvbiBjaGVja1Rva2VuKHRlc3ROYW1lLCB0b2tlbikgeworICBhc3luY190ZXN0
KCh0ZXN0KSA9PiB7CisgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHRlc3Quc3RlcF90aW1l
b3V0KHJlc29sdmUsIDEwMDApKS50aGVuKCgpID0+IHsKKyAgICAgIHJldHVybiBxdWVyeVRva2Vu
KHRva2VuKTsKKyAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LCAnb24nKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgIHRlc3QuZG9uZSgpOwor
ICAgIH0pLmNhdGNoKHRlc3Quc3RlcF9mdW5jKChlKSA9PiB7CisgICAgICBhc3NlcnRfdW5yZWFj
aGVkKGUpOworICAgIH0pKTsKKyAgfSwgdGVzdE5hbWUpOworfQorCiBjb25zdCBob3N0X2luZm8g
PSBnZXRfaG9zdF9pbmZvKCk7CiBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgY29u
c3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7Ci0gIGlmcmFtZS5z
cmMgPSBob3N0X2luZm8uSFRUUF9SRU1PVEVfT1JJR0lOICsKLSAgICAnL2ZldGNoL2FwaS9yZXNv
dXJjZXMva2VlcGFsaXZlLWlmcmFtZS5odG1sJzsKKyAgaWZyYW1lLnNyYyA9IGdldFVybCgnJywg
JycsIGZhbHNlKTsKICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwotICBjb25z
dCB1dWlkX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewotICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7Ci0gICAgICByZXNvbHZlKGV2
ZW50LmRhdGEpOwotICAgIH0pOwotICB9KTsKKyAgY29uc3QgdG9rZW5Qcm9taXNlID0gZ2V0VG9r
ZW4oKTsKICAgYXdhaXQgKG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBpZnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIHJlc29sdmUpKSk7Ci0gIGNvbnN0IHV1aWQgPSBhd2FpdCB1dWlkX3By
b21pc2U7CisgIGNvbnN0IHRva2VuID0gYXdhaXQgdG9rZW5Qcm9taXNlOwogICBpZnJhbWUucmVt
b3ZlKCk7Ci0gIGF3YWl0IChuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gdGVzdC5zdGVwX3RpbWVv
dXQocmVzb2x2ZSwgMTAwMCkpKTsKLSAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgLi4v
cmVzb3VyY2VzL3N0YXNoLXRha2UucHk/a2V5PSR7dXVpZH1gKTsKLSAgY29uc3QganNvbiA9IGF3
YWl0IHJlc3BvbnNlLmpzb24oKTsKLSAgYXNzZXJ0X2VxdWFscyhqc29uLCAnb24nKTsKLX0pOwor
CisgIGNoZWNrVG9rZW4oJ3NhbWUtb3JpZ2luJywgdG9rZW4pOworfSwgJ3NhbWUtb3JpZ2luOyBz
ZXR0aW5nIHVwJyk7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICBjb25zdCBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgaWZyYW1lLnNyYyA9
IGdldFVybChob3N0X2luZm8uSFRUUF9SRU1PVEVfT1JJR0lOLAorICAgICAgICAgICAgICAgICAg
ICAgIGhvc3RfaW5mby5IVFRQX1JFTU9URV9PUklHSU5fV0lUSF9ESUZGRVJFTlRfUE9SVCwgZmFs
c2UpOworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgIGNvbnN0IHRva2Vu
UHJvbWlzZSA9IGdldFRva2VuKCk7CisgIGF3YWl0IChuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
aWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZXNvbHZlKSkpOworICBjb25zdCB0b2tl
biA9IGF3YWl0IHRva2VuUHJvbWlzZTsKKyAgaWZyYW1lLnJlbW92ZSgpOworCisgIGNoZWNrVG9r
ZW4oJ2Nyb3NzLW9yaWdpbiByZWRpcmVjdCcsIHRva2VuKTsKK30sICdjcm9zcy1vcmlnaW4gcmVk
aXJlY3Q7IHNldHRpbmcgdXAnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
IGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICBpZnJh
bWUuc3JjID0gZ2V0VXJsKGhvc3RfaW5mby5IVFRQX1JFTU9URV9PUklHSU4sCisgICAgICAgICAg
ICAgICAgICAgICAgaG9zdF9pbmZvLkhUVFBfUkVNT1RFX09SSUdJTl9XSVRIX0RJRkZFUkVOVF9Q
T1JULCB0cnVlKTsKKyAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICBjb25z
dCB0b2tlblByb21pc2UgPSBnZXRUb2tlbigpOworICBhd2FpdCAobmV3IFByb21pc2UoKHJlc29s
dmUpID0+IGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcmVzb2x2ZSkpKTsKKyAgY29u
c3QgdG9rZW4gPSBhd2FpdCB0b2tlblByb21pc2U7CisgIGlmcmFtZS5yZW1vdmUoKTsKKworICBj
aGVja1Rva2VuKCdjcm9zcy1vcmlnaW4gcmVkaXJlY3Qgd2l0aCBwcmVmbGlnaHQnLCB0b2tlbik7
Cit9LCAnY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IHdpdGggcHJlZmxpZ2h0OyBzZXR0aW5nIHVwJyk7
CisKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbWVkaWFzb3Vy
Y2Uud2luZG93LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvYmFzaWMvbWVkaWFzb3VyY2Uud2luZG93LmpzCmluZGV4IGZmNThhNTI5NWZm
NzlkYjI4Mjk2ZWM0ZmU0MWJiMTNiNjljOTBjOWIuLjFmODk1OTUzOTNkYTQxMDkxYmMyNDgwMDVk
ZWRmMGVmZGQ0ZTk1YjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21lZGlhc291cmNlLndpbmRvdy5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9i
YXNpYy9tZWRpYXNvdXJjZS53aW5kb3cuanMKQEAgLTEsNSArMSw1IEBACiBwcm9taXNlX3Rlc3Qo
dCA9PiB7CiAgIGNvbnN0IG1lZGlhU291cmNlID0gbmV3IE1lZGlhU291cmNlKCksCiAgICAgICAg
IG1lZGlhU291cmNlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChtZWRpYVNvdXJjZSk7Ci0gIHJl
dHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaChtZWRpYVNvdXJj
ZVVSTCkpOworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0Y2go
bWVkaWFTb3VyY2VVUkwpKTsKIH0sICJDYW5ub3QgZmV0Y2ggYmxvYjogVVJMIGZyb20gYSBNZWRp
YVNvdXJjZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbW9kZS1zYW1lLW9yaWdpbi5hbnkuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9t
b2RlLXNhbWUtb3JpZ2luLmFueS5qcwppbmRleCA1YmQxNTZmNDMyMzM1ODdmYzEwYWUwYzcyN2Nl
ZjcxNTdmZDljNzcyLi4xNDU3NzAyZjFiMTYzYjljZWFhOTA1OGU5ZjZmMWRiMTAyZmZjZmM0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9iYXNpYy9tb2RlLXNhbWUtb3JpZ2luLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9tb2RlLXNhbWUt
b3JpZ2luLmFueS5qcwpAQCAtOSw3ICs5LDcgQEAgZnVuY3Rpb24gZmV0Y2hTYW1lT3JpZ2luKHVy
bCwgc2hvdWxkUGFzcykgewogICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3AudHlwZSwgImJhc2lj
IiwgInJlc3BvbnNlIHR5cGUgaXMgYmFzaWMiKTsKICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvciwgZmV0Y2godXJsLCB7
bW9kZTogInNhbWUtb3JpZ2luIn0pKTsKKyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
dGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1cmwsIHttb2RlOiAic2FtZS1vcmlnaW4ifSkpOwogICB9
LCAiRmV0Y2ggIisgdXJsICsgIiB3aXRoIHNhbWUtb3JpZ2luIG1vZGUiKTsKIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvcmVxdWVzdC1oZWFkLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZC5hbnkuanMKaW5k
ZXggZTQ2Y2UzNjE3ZGNjMTQ4ZDUzYjhhNjE4MzYwODEwMmI5MWQzODFlNS4uZGM0MzViZjBkNmRm
OTQzYmMwMjQwNmVhNDZlYzBjY2U0MTM0YzRkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFk
LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWQuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAogcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgdmFyIHJlcXVlc3RJbml0ID0geyJtZXRob2Qi
OiAiSEVBRCIsICJib2R5IjogInRlc3QifTsKLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0
LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKCIuIiwgcmVxdWVzdEluaXQpKTsKKyAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIGZldGNoKCIuIiwgcmVxdWVzdEluaXQp
KTsKIH0sICJGZXRjaCB3aXRoIEhFQUQgd2l0aCBib2R5Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1
ZXN0LXVwbG9hZC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC11cGxvYWQuYW55LWV4cGVj
dGVkLnR4dAppbmRleCA2ZWFiYzBlNjM4YmE1YmM0NjMzOGE5MjViMjFkODhlMTU0NWQ0NzFiLi4z
YmZkYzdlZWIzZTY2MjY0YzZlMmJjN2EyYzk3ZmU1MjQyYmRiM2IyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9y
ZXF1ZXN0LXVwbG9hZC5hbnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtdXBsb2FkLmFu
eS1leHBlY3RlZC50eHQKQEAgLTEwLDEwICsxMCwyMCBAQCBQQVNTIEZldGNoIHdpdGggUE9TVCB3
aXRoIEZsb2F0MzJBcnJheSBib2R5CiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0NjRB
cnJheSBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBEYXRhVmlldyBib2R5IAogUEFT
UyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgd2l0aCBtaW1lIHR5cGUgCi1GQUlMIEZl
dGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3RyZWFtIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJUZXN0IiBidXQgZ290ICIiCi1GQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIGNvbnRhaW5pbmcgU3RyaW5nIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdwcm9taXNlLnRoZW4nKQotRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0
cmVhbSBjb250YWluaW5nIG51bGwgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3Byb21pc2UudGhlbicpCi1GQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIGNvbnRhaW5pbmcgbnVtYmVyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdwcm9taXNlLnRoZW4nKQotRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0
cmVhbSBjb250YWluaW5nIEFycmF5QnVmZmVyIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdwcm9taXNlLnRoZW4nKQotRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFk
YWJsZVN0cmVhbSBjb250YWluaW5nIEJsb2IgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3Byb21pc2UudGhlbicpCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRh
YmxlU3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBSZWFkYWJsZVN0cmVhbSB1cGxvYWRpbmcgaXMgbm90
IHN1cHBvcnRlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gY29u
dGFpbmluZyBTdHJpbmcgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkg
eyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFJlYWRhYmxlU3Ry
ZWFtIHVwbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhw
ZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBb
bmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRo
IFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgbnVsbCBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogUmVhZGFibGVTdHJlYW0gdXBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgRmV0
Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gY29udGFpbmluZyBudW1iZXIgcHJvbWlz
ZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFJlYWRhYmxlU3RyZWFtIHVwbG9hZGluZyBpcyBub3Qg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5
cGVFcnJvciIpCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRh
aW5pbmcgQXJyYXlCdWZmZXIgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFJlYWRhYmxl
U3RyZWFtIHVwbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAg
ICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitGQUlMIEZldGNoIHdpdGggUE9TVCB3
aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgQmxvYiBwcm9taXNlX3JlamVjdHNfanM6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogUmVhZGFibGVTdHJlYW0gdXBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiICgiTm90
U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24g
VHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvYmFzaWMvcmVxdWVzdC11cGxvYWQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC11cGxvYWQuYW55
LmpzCmluZGV4IDAxZjkyY2NkNjVhNTU0OTdmODE3N2RkYmQ0NjM0MzdjMDlkYTIxMDIuLjE0ZjRh
MDdhNDk4N2U0MjRlZTQyYTIzYWMwMjE4YWNjNzdhNDJiNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVl
c3QtdXBsb2FkLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LXVwbG9hZC5hbnkuanMKQEAgLTEsMTEg
KzEsMTIgQEAKIC8vIE1FVEE6IHNjcmlwdD0uLi9yZXNvdXJjZXMvdXRpbHMuanMKIAogZnVuY3Rp
b24gdGVzdFVwbG9hZChkZXNjLCB1cmwsIG1ldGhvZCwgY3JlYXRlQm9keSwgZXhwZWN0ZWRCb2R5
KSB7Ci0gIHZhciByZXF1ZXN0SW5pdCA9IHsibWV0aG9kIjogbWV0aG9kfQorICBjb25zdCByZXF1
ZXN0SW5pdCA9IHsibWV0aG9kIjogbWV0aG9kfQogICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVz
dCl7Ci0gICAgbGV0IGJvZHkgPSBjcmVhdGVCb2R5KCk7Ci0gICAgaWYgKGJvZHkpCisgICAgY29u
c3QgYm9keSA9IGNyZWF0ZUJvZHkoKTsKKyAgICBpZiAoYm9keSkgewogICAgICAgcmVxdWVzdElu
aXRbImJvZHkiXSA9IGJvZHk7CisgICAgfQogICAgIHJldHVybiBmZXRjaCh1cmwsIHJlcXVlc3RJ
bml0KS50aGVuKGZ1bmN0aW9uKHJlc3ApIHsKICAgICAgIHJldHVybiByZXNwLnRleHQoKS50aGVu
KCh0ZXh0KT0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCBleHBlY3RlZEJvZHkpOwpA
QCAtMTYsMTUgKzE3LDE2IEBAIGZ1bmN0aW9uIHRlc3RVcGxvYWQoZGVzYywgdXJsLCBtZXRob2Qs
IGNyZWF0ZUJvZHksIGV4cGVjdGVkQm9keSkgewogCiBmdW5jdGlvbiB0ZXN0VXBsb2FkRmFpbHVy
ZShkZXNjLCB1cmwsIG1ldGhvZCwgY3JlYXRlQm9keSkgewogICBjb25zdCByZXF1ZXN0SW5pdCA9
IHsibWV0aG9kIjogbWV0aG9kfTsKLSAgcHJvbWlzZV90ZXN0KHRlc3QgPT4gewotICAgIGxldCBi
b2R5ID0gY3JlYXRlQm9keSgpOwotICAgIGlmIChib2R5KQorICBwcm9taXNlX3Rlc3QodCA9PiB7
CisgICAgY29uc3QgYm9keSA9IGNyZWF0ZUJvZHkoKTsKKyAgICBpZiAoYm9keSkgewogICAgICAg
cmVxdWVzdEluaXRbImJvZHkiXSA9IGJvZHk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyhu
ZXcgVHlwZUVycm9yKCksIGZldGNoKHVybCwgcmVxdWVzdEluaXQpKTsKKyAgICB9CisgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGZldGNoKHVybCwgcmVxdWVzdElu
aXQpKTsKICAgfSwgZGVzYyk7CiB9CiAKLXZhciB1cmwgPSBSRVNPVVJDRVNfRElSICsgImVjaG8t
Y29udGVudC5weSIKK2NvbnN0IHVybCA9IFJFU09VUkNFU19ESVIgKyAiZWNoby1jb250ZW50LnB5
IgogCiB0ZXN0VXBsb2FkKCJGZXRjaCB3aXRoIFBVVCB3aXRoIGJvZHkiLCB1cmwsCiAgICJQVVQi
LApAQCAtNzMsNyArNzUsNyBAQCB0ZXN0VXBsb2FkKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9i
IGJvZHkgd2l0aCBtaW1lIHR5cGUiLCB1cmwsCiB0ZXN0VXBsb2FkKCJGZXRjaCB3aXRoIFBPU1Qg
d2l0aCBSZWFkYWJsZVN0cmVhbSIsIHVybCwKICAgIlBPU1QiLAogICAoKSA9PiB7Ci0gICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHtzdGFydDogY29udHJvbGxlciA9PiB7CisgICAgcmV0dXJuIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IGNvbnRyb2xsZXIgPT4gewogICAgICAgY29uc3QgZW5jb2Rl
ciA9IG5ldyBUZXh0RW5jb2RlcigpOwogICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIu
ZW5jb2RlKCJUZXN0IikpOwogICAgICAgY29udHJvbGxlci5jbG9zZSgpOwpAQCAtODMsNyArODUs
NyBAQCB0ZXN0VXBsb2FkKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0cmVhbSIsIHVy
bCwKIHRlc3RVcGxvYWRGYWlsdXJlKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0cmVh
bSBjb250YWluaW5nIFN0cmluZyIsIHVybCwKICAgIlBPU1QiLAogICAoKSA9PiB7Ci0gICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHtzdGFydDogY29udHJvbGxlciA9PiB7CisgICAgcmV0dXJuIG5ldyBS
ZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IGNvbnRyb2xsZXIgPT4gewogICAgICAgY29udHJvbGxlci5l
bnF1ZXVlKCJUZXN0Iik7CiAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgfX0pCkBAIC05
MSw3ICs5Myw3IEBAIHRlc3RVcGxvYWRGYWlsdXJlKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFk
YWJsZVN0cmVhbSBjb250YWluaW5nIFN0cmluZyIsIHVybCwKIHRlc3RVcGxvYWRGYWlsdXJlKCJG
ZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0cmVhbSBjb250YWluaW5nIG51bGwiLCB1cmws
CiAgICJQT1NUIiwKICAgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IGNv
bnRyb2xsZXIgPT4geworICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OiBjb250
cm9sbGVyID0+IHsKICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShudWxsKTsKICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKICAgICB9fSkKQEAgLTk5LDcgKzEwMSw3IEBAIHRlc3RVcGxvYWRGYWls
dXJlKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0cmVhbSBjb250YWluaW5nIG51bGwi
LCB1cmwsCiB0ZXN0VXBsb2FkRmFpbHVyZSgiRmV0Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVT
dHJlYW0gY29udGFpbmluZyBudW1iZXIiLCB1cmwsCiAgICJQT1NUIiwKICAgKCkgPT4gewotICAg
IG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IGNvbnRyb2xsZXIgPT4geworICAgIHJldHVybiBu
ZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OiBjb250cm9sbGVyID0+IHsKICAgICAgIGNvbnRyb2xs
ZXIuZW5xdWV1ZSg5OSk7CiAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgfX0pCkBAIC0x
MDcsNyArMTA5LDcgQEAgdGVzdFVwbG9hZEZhaWx1cmUoIkZldGNoIHdpdGggUE9TVCB3aXRoIFJl
YWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgbnVtYmVyIiwgdXJsLAogdGVzdFVwbG9hZEZhaWx1cmUo
IkZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgQXJyYXlCdWZm
ZXIiLCB1cmwsCiAgICJQT1NUIiwKICAgKCkgPT4gewotICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
c3RhcnQ6IGNvbnRyb2xsZXIgPT4geworICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0
YXJ0OiBjb250cm9sbGVyID0+IHsKICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgQXJyYXlC
dWZmZXIoKSk7CiAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgfX0pCkBAIC0xMTUsNyAr
MTE3LDcgQEAgdGVzdFVwbG9hZEZhaWx1cmUoIkZldGNoIHdpdGggUE9TVCB3aXRoIFJlYWRhYmxl
U3RyZWFtIGNvbnRhaW5pbmcgQXJyYXlCdWZmZXIiLAogdGVzdFVwbG9hZEZhaWx1cmUoIkZldGNo
IHdpdGggUE9TVCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgQmxvYiIsIHVybCwKICAg
IlBPU1QiLAogICAoKSA9PiB7Ci0gICAgbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDogY29udHJv
bGxlciA9PiB7CisgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IGNvbnRyb2xs
ZXIgPT4gewogICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBCbG9iKCkpOwogICAgICAgY29u
dHJvbGxlci5jbG9zZSgpOwogICAgIH19KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC11cGxvYWQu
YW55Lndvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LXVwbG9hZC5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dAppbmRleCA2ZWFiYzBlNjM4YmE1YmM0NjMzOGE5MjViMjFkODhlMTU0NWQ0NzFi
Li4zYmZkYzdlZWIzZTY2MjY0YzZlMmJjN2EyYzk3ZmU1MjQyYmRiM2IyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNp
Yy9yZXF1ZXN0LXVwbG9hZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0
LXVwbG9hZC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMTAsMTAgKzEwLDIwIEBAIFBBU1Mg
RmV0Y2ggd2l0aCBQT1NUIHdpdGggRmxvYXQzMkFycmF5IGJvZHkKIFBBU1MgRmV0Y2ggd2l0aCBQ
T1NUIHdpdGggRmxvYXQ2NEFycmF5IGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIERh
dGFWaWV3IGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSB3aXRoIG1p
bWUgdHlwZSAKLUZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIlRlc3QiIGJ1dCBnb3QgIiIKLUZBSUwgRmV0Y2ggd2l0aCBQT1NU
IHdpdGggUmVhZGFibGVTdHJlYW0gY29udGFpbmluZyBTdHJpbmcgdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb21pc2UudGhlbicpCi1GQUlMIEZldGNoIHdpdGggUE9T
VCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgbnVsbCB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAncHJvbWlzZS50aGVuJykKLUZBSUwgRmV0Y2ggd2l0aCBQT1NU
IHdpdGggUmVhZGFibGVTdHJlYW0gY29udGFpbmluZyBudW1iZXIgdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb21pc2UudGhlbicpCi1GQUlMIEZldGNoIHdpdGggUE9T
VCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgQXJyYXlCdWZmZXIgdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb21pc2UudGhlbicpCi1GQUlMIEZldGNoIHdp
dGggUE9TVCB3aXRoIFJlYWRhYmxlU3RyZWFtIGNvbnRhaW5pbmcgQmxvYiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAncHJvbWlzZS50aGVuJykKK0ZBSUwgRmV0Y2ggd2l0
aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IFJlYWRhYmxlU3RyZWFt
IHVwbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBS
ZWFkYWJsZVN0cmVhbSBjb250YWluaW5nIFN0cmluZyBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogUmVhZGFibGVTdHJlYW0gdXBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgRmV0
Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gY29udGFpbmluZyBudWxsIHByb21pc2Vf
cmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiBSZWFkYWJsZVN0cmVhbSB1cGxvYWRpbmcgaXMgbm90IHN1
cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJUeXBl
RXJyb3IiKQorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBSZWFkYWJsZVN0cmVhbSBjb250YWlu
aW5nIG51bWJlciBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRo
cm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogUmVhZGFibGVTdHJlYW0g
dXBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRp
dmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggUmVh
ZGFibGVTdHJlYW0gY29udGFpbmluZyBBcnJheUJ1ZmZlciBwcm9taXNlX3JlamVjdHNfanM6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogUmVhZGFibGVTdHJlYW0gdXBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiICgiTm90
U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24g
VHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iICgiVHlwZUVycm9yIikKK0ZBSUwg
RmV0Y2ggd2l0aCBQT1NUIHdpdGggUmVhZGFibGVTdHJlYW0gY29udGFpbmluZyBCbG9iIHByb21p
c2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBSZWFkYWJsZVN0cmVhbSB1cGxvYWRpbmcgaXMgbm90
IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1
bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2ZSBjb2RlXQorfSIgKCJU
eXBlRXJyb3IiKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYWJvdXQuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2No
ZW1lLWFib3V0LmFueS5qcwppbmRleCBhYWU3MTQ2YTVhMTdiOTk2ZTM4ZWMwOGY1NjY5MWE4ODA0
NmJiYTczLi5lYjg5MmQzMmZmZjlmM2JmNjkzODUzZDJkZjE1ZjE3OWQ0Mjk0Y2I1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9iYXNpYy9zY2hlbWUtYWJvdXQuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3NjaGVtZS1hYm91dC5hbnkuanMK
QEAgLTUsNyArNSw3IEBAIGZ1bmN0aW9uIGNoZWNrTmV0d29ya0Vycm9yKHVybCwgbWV0aG9kKSB7
CiAgIGNvbnN0IGRlc2MgPSAiRmV0Y2hpbmcgIiArIHVybC5zdWJzdHJpbmcoMCwgNDUpICsgIiB3
aXRoIG1ldGhvZCAiICsgbWV0aG9kICsgIiBpcyBLTyIKICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKICAgICB2YXIgcHJvbWlzZSA9IGZldGNoKHVybCwgeyBtZXRob2Q6IG1ldGhvZCB9
KTsKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgcHJv
bWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHBy
b21pc2UpOwogICB9LCBkZXNjKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2NoZW1lLWJsb2Iuc3Vi
LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55LWV4cGVjdGVkLnR4dApp
bmRleCBhNzY5ZWM2MzUwODNjNmYxZWRkZTg3NzEwNWY5NmQyNTMxZGVhNjg4Li43NTJkMTNkMGYz
ZjlkNzRmNTBjZDc0NjQxZDdjNjYwZmFjN2JkMDgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxv
Yi5zdWIuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55LWV4cGVj
dGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAogUEFTUyBGZXRjaGluZyBbR0VUXSBVUkwuY3JlYXRl
T2JqZWN0VVJMKGJsb2IpIGlzIE9LIAotUEFTUyBGZXRjaGluZyBbR0VUXSBibG9iOmh0dHA6Ly93
d3cubG9jYWxob3N0Ojg4MDAvIGlzIEtPIAorUEFTUyBGZXRjaGluZyBbR0VUXSBibG9iOmh0dHA6
Ly8xMjcuMC4wLjE6ODgwMC8gaXMgS08gCiBQQVNTIEZldGNoaW5nIFtQT1NUXSBVUkwuY3JlYXRl
T2JqZWN0VVJMKGJsb2IpIGlzIEtPIAogUEFTUyBGZXRjaGluZyBbT1BUSU9OU10gVVJMLmNyZWF0
ZU9iamVjdFVSTChibG9iKSBpcyBLTyAKIFBBU1MgRmV0Y2hpbmcgW0hFQURdIFVSTC5jcmVhdGVP
YmplY3RVUkwoYmxvYikgaXMgS08gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvc2NoZW1lLWJsb2Iuc3ViLmFueS5qcwppbmRleCBmYjEzNTdlYWYyOTRiODk3M2Y0
NGFmMzBjMmZhZmM0MDEwMGQ4ZWFmLi5jNDRmMDNjYTgyNzkzZDYzNmNkNmE5NWM5ZmIxYWE3MDc5
ZjQ3NzJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55LmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3Nj
aGVtZS1ibG9iLnN1Yi5hbnkuanMKQEAgLTIyLDEzICsyMiwxMyBAQCBjaGVja0ZldGNoUmVzcG9u
c2UoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgIkJsb2IncyBkYXRhIiwgInRleHQvcGxhaW4i
LCAgYmxvYgogZnVuY3Rpb24gY2hlY2tLb1VybCh1cmwsIG1ldGhvZCwgZGVzYykgewogICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIHZhciBwcm9taXNlID0gZmV0Y2godXJsLCB7
Im1ldGhvZCI6IG1ldGhvZH0pOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3
IFR5cGVFcnJvcigpLCBwcm9taXNlKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRl
c3QsIFR5cGVFcnJvciwgcHJvbWlzZSk7CiAgIH0sIGRlc2MpOwogfQogCiB2YXIgYmxvYjIgPSBu
ZXcgQmxvYihbIkJsb2IncyBkYXRhIl0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOwotY2hl
Y2tLb1VybCgiYmxvYjpodHRwOi8ve3tkb21haW5zW3d3d119fTp7e3BvcnRzW2h0dHBdWzBdfX0v
IiwgIkdFVCIsCi0gICAgICAgICAgIkZldGNoaW5nIFtHRVRdIGJsb2I6aHR0cDovL3t7ZG9tYWlu
c1t3d3ddfX06e3twb3J0c1todHRwXVswXX19LyBpcyBLTyIpOworY2hlY2tLb1VybCgiYmxvYjpo
dHRwOi8ve3tob3N0c1thbHRdW119fTp7e3BvcnRzW2h0dHBdWzBdfX0vIiwgIkdFVCIsCisgICAg
ICAgICAgIkZldGNoaW5nIFtHRVRdIGJsb2I6aHR0cDovL3t7aG9zdHNbYWx0XVtdfX06e3twb3J0
c1todHRwXVswXX19LyBpcyBLTyIpOwogCiB2YXIgaW52YWxpZFJlcXVlc3RNZXRob2RzID0gWwog
ICAiUE9TVCIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55Lndvcmtlci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9iYXNpYy9zY2hlbWUtYmxvYi5zdWIuYW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5k
ZXggYTc2OWVjNjM1MDgzYzZmMWVkZGU4NzcxMDVmOTZkMjUzMWRlYTY4OC4uNzUyZDEzZDBmM2Y5
ZDc0ZjUwY2Q3NDY0MWQ3YzY2MGZhYzdiZDA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2NoZW1lLWJsb2Iu
c3ViLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3NjaGVtZS1ibG9iLnN1Yi5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAogUEFTUyBGZXRjaGluZyBbR0VU
XSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpIGlzIE9LIAotUEFTUyBGZXRjaGluZyBbR0VUXSBi
bG9iOmh0dHA6Ly93d3cubG9jYWxob3N0Ojg4MDAvIGlzIEtPIAorUEFTUyBGZXRjaGluZyBbR0VU
XSBibG9iOmh0dHA6Ly8xMjcuMC4wLjE6ODgwMC8gaXMgS08gCiBQQVNTIEZldGNoaW5nIFtQT1NU
XSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpIGlzIEtPIAogUEFTUyBGZXRjaGluZyBbT1BUSU9O
U10gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSBpcyBLTyAKIFBBU1MgRmV0Y2hpbmcgW0hFQURd
IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikgaXMgS08gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUt
ZGF0YS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9iYXNpYy9zY2hlbWUtZGF0YS5hbnkuanMKaW5kZXggMmZmMjU0NWNjNjQ2M2Y4
NTVkNmY4YWQxNjU3NDA3Yzg1MzQzYTdlNy4uZTRhODgwNzE5ZDM0MTBhNzdiNjg2ZTdlMTk0M2Ni
YWY1NWQ0MzcyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2NoZW1lLWRhdGEuYW55LmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3Nj
aGVtZS1kYXRhLmFueS5qcwpAQCAtMzUsNyArMzUsNyBAQCBmdW5jdGlvbiBjaGVja0tvVXJsKHVy
bCwgbWV0aG9kLCBkZXNjKSB7CiAgIHZhciBjdXQgPSAodXJsLmxlbmd0aCA+PSA0MCkgPyAiWy4u
Ll0iIDogIiI7CiAgIGRlc2MgPSAiRmV0Y2hpbmcgWyIgKyBtZXRob2QgKyAiXSAiICsgdXJsLnN1
YnN0cmluZygwLCA0NSkgKyBjdXQgKyAiIGlzIEtPIgogICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dGVzdCkgewotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigp
LCBmZXRjaCh1cmwsIHsibWV0aG9kIjogbWV0aG9kfSkpOworICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1cmwsIHsibWV0aG9kIjogbWV0aG9kfSkp
OwogICB9LCBkZXNjKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2NoZW1lLW90aGVycy5zdWIuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvc2NoZW1lLW90aGVycy5zdWIuYW55LmpzCmluZGV4IDVmOTg0OGZmNGMyOTdkNjYy
YTgyYWE5ZTg0N2Y1NDgzNzFjMzNkMTkuLjljM2NhZDE3MDI4NTI0YTJkMmQ2NWUzYjRmZGU3OWQw
NjYyYjAzN2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3NjaGVtZS1vdGhlcnMuc3ViLmFueS5qcworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNp
Yy9zY2hlbWUtb3RoZXJzLnN1Yi5hbnkuanMKQEAgLTUsNyArNSw3IEBAIGZ1bmN0aW9uIGNoZWNr
S29VcmwodXJsLCBkZXNjKSB7CiAgICAgZGVzYyA9ICJGZXRjaGluZyAiICsgdXJsLnN1YnN0cmlu
ZygwLCA0NSkgKyAiIGlzIEtPIgogICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAg
IHZhciBwcm9taXNlID0gZmV0Y2godXJsKTsKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRl
c3QsIG5ldyBUeXBlRXJyb3IoKSwgcHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHByb21pc2UpOwogICB9LCBkZXNjKTsKIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3Jl
YXRpb24uYW55LmpzCmluZGV4IDE4MGQzMzg2NTkwMjFmZWQzZDI5ZTA4Y2NlYTQxNWNjNTg1MmZl
ZDIuLjM3YzgyMWNlNzNmMjVjNWUyYzVkMDJhNjg3ZDZhODAwNmVmNTA2MGMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jh
c2ljL3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zdHJlYW0tc2FmZS1jcmVh
dGlvbi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9d29ya2VyCisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LHdvcmtlcgogCiAvLyBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBz
dHJlYW0gY3JlYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8KIC8vIE9iamVjdC5w
cm90b3R5cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3czYy1pbXBvcnQu
bG9nCmluZGV4IDIxM2I1OTNmOWM5ZTA2OTA5ZWFjZWM1ZGNhM2QxNmQ5NjM1MjZkNjIuLmJiMGUz
NTMzYzc4ZGFkODZhMjcxYjUzZDY0YTlhOTI3NjI1OGI0YmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3czYy1p
bXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL2Jhc2ljL3czYy1pbXBvcnQubG9nCkBAIC0yMCw2ICsyMCw3IEBAIExpc3Qg
b2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvYmFzaWMvZXJyb3ItYWZ0ZXItcmVzcG9uc2UuaHRtbAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2hlYWRlci12YWx1
ZS1jb21iaW5pbmcuYW55LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvaGVhZGVyLXZhbHVlLW51bGwtYnl0ZS5hbnkuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNp
Yy9oaXN0b3JpY2FsLmFueS5qcwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCiAvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMva2VlcGFs
aXZlLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9iYXNpYy9tZWRpYXNvdXJjZS53aW5kb3cuanMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCmlu
ZGV4IDdjYzIyYTI4YzIwYzAxZjJjNjAyYjZiNzk4MTRmYzY4NDQwNTQzMDYuLjNlYjg5M2Y0ZTY1
YzNjMGU1NTY3Njg4YmQzMDcyNWJjMjFlYjQwY2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbApAQCAt
MSw0ICsxLDUgQEAKIHN1Z2dlc3RlZF9yZXZpZXdlcnM6CiAgIC0gamdyYWhhbQotICAtIGdzbmVk
ZGVycwotICAtIGp1Z2dsaW5taWtlCisgIC0gSGV4Y2xlcworICAtIHN0ZXBoZW5tY2dydWVyCisg
IC0gTHVrZVppZWxpbnNraQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CmluZGV4
IDFhMTIxZGZhYzk1MmRmZTg4ODZiMWI1ZTQxZTdjNzMxMWQ1ZjBiMzIuLjQ0NWFhZTFiOWZiOTc2
MGUzOTBlN2U0ZDA0NzZhODA4YzRlM2Y4MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2Nh
Y2VydC5rZXkKQEAgLTEsMzAgKzEsMzAgQEAKLS0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUg
S0VZLS0tLS0KLU1JSUZIekJKQmdrcWhraUc5dzBCQlEwd1BEQWJCZ2txaGtpRzl3MEJCUXd3RGdR
SW1pbkhUemtYaHJzQ0FnZ0EKLU1CMEdDV0NHU0FGbEF3UUJLZ1FRWFZ3SmNxV3plNkEzVll1QVMw
QlBnd1NDQk5DUnR2cm9CNnFyb1FsRjU4SEUKLTVTSkhGL2pRUkpSeGYwNTFscnEramZVeE03a1p1
Y05OK215VjJ6aUxvZ2E2T1FNNTc5RDh2eTh0cWtyTHBuc1QKLWNYa2dIdXd0QkpGNDd3MVlBUEdH
QVJlM0tzdi8yQzlzVVZjUHZtblZyelNNWDg2RXNlcmZmcU0zemZ3WjJIM1MKLWp4VERTeUl2SlVV
KzRYZnhyV2VnVGlRUVBOcUR5TGZPNWRCZmF0VDJ6dFhDbXUzQkZpcHVoR0Zwd3dDSmlyS3IKLTF4
YjZYUEV1VDBQQ3pUTnBlU1VScFhGS0hNRE1rY2pPa05BVXlnSUV3K0xnN2V0VmZMY3NnQnV6RUEz
Uld3ZjMKLU9NWTFtVEJKbHZ4NnpaeGRYN2EwUW14ZXJVRGtEUzlZWUFFR1NGYStGeDZjR1c1UHll
ZWY5eHRsSHhaSGkrcG0KLVR4Q3djdkp5WHFlRDRnV20zczFnd09qaTVXbVh2bzJFaXJjeGZTS2s4
VFV3YXB4ZkNZUWJPalFJUGFIbkVHb2EKLUNRaFNFZ0RYNXVmd3NYSjkvcFNQNmtqVyt5K2YwZ25o
SFZ1S0pLc09CbWpnNmlxd25xRWh3K3VORldLS2wvTW8KLVRGVDdDcmF5SlR2bys5VWRRVEpWOU1C
QXNNVVFTN2QrSEg5a05PQW4vaGZtRXp6R1VLVlRaMHpJZDBmS0gxM3AKLVRub1lnTVlibTJVcm4w
TlhCRk84UnZ6WTNLcEt5UmhNY09MS3hrUFZVaktVQTVCdUF2NnJjdk1mbEk2SG41d1UKLXFQTSt1
RUNTZ2RPbk5lSW1pMUZmK2NXOGRUR0dSYitpaGErRW5BQm9YM3dSNU92emdDWUhlRU5KYjMyRlVv
VnMKLUlEMlQ1TVp0UU5Bcmtpcy94V1o3SnlQYm1zUW8yd3lpRkxhc1g4V2doKzhNZ0Z4b2xwdmps
WDMvUWRUVEpxRWMKLXJvZlZHT1BPbWZvSG8zZVlOSk9sTGJhSlRESWU4T3JLNDlQSWV1MWdtOHpx
QjJXWXFtRi8zQVl5NElBSXdVWXUKLXJiUHdVQzlIeWNlUlBTWWVQTTlXZjF4TTJwcm9LM25tcDZh
cGRIQ1JOamJkNDY4OUVMbUI5MGIyYXc2TkZpYW0KLTN0YUtQbUZMYi92dDJZeGdxT3RhZ1ByVGxj
MVFMSEJLcnNucGcvQmhjQmp1cHFSS0dGbVhDSnppUElhREt2QXMKLWp0ZzRLRG84ak5JeG13UUF3
RVY0K2FIMGhoTXVteGE4eWFYb0MvM0c2SnhEMnNkb3JhT3ArdnJUempVTWtJb2MKLXhMcVdsOEdI
VkxGMDlmWko0U3RKZklXSU9tbXBpY1N4VzF2RElDYVp1VStpUHdsTk96RjdzZVBSa2l4YmFySHIK
LWlxVGxMRy8vK0h1cS9uOUlSeGh6bVNPdXI2M1dNWEZSeTBzS1c1Vyt1UTl4c25WOFNkandSbUFH
THRuWkhxNFkKLU5PQ1EvK3lPUmw0eXhrUHZWMDFIeWtBbDRDUnRQQkdSKzRaQzVOS2hweWhKYnU2
V2Nxd2lYeUFlaFUvY1BnTCsKLWg4TndFb3lQK09IcnZFWWR5NG9jQm5KcS80MzZXd3pmV2lzOG5J
RzRiU2xEM0RTRWdKRi9RVW1xNGkvRVVxL0EKLUQ2U2Z6YkZwUEd0VGozS1o2RDhEUHJ3V0c2OE9D
RnNxUlc5WUV2VUlLOEpUMjY1Qk4zTXpJNWkwLytrNENkQWcKLWFTYWlDOTdxZzdxSmFWTTliOUVI
c2NVWFIvZmVGeHZPNVFra2tZNUNUVTNCeGIwczFJNFJ3Mk1Zb0FkTUd0YkEKLTZtZHptUlZZb1J2
OU5NZHpMNnpPVG9QVTZvT2c2bWJqSGdaUWdOZDd3OEd0VEZXK3Nmc2xMT1hYQzhlcnpiSGwKLUJ5
UUpHY0ZHdEtUQlVEKzdWSFpocHdNN2JQT2J0enlBMnIwVWJTMVF4MEl6bnZ1YmRGVmNYeUU3ZElq
VzdjQWcKLUliQnpLZWlFUndwdTNyTXEyYllWVzNEQTMzVmxyVGZwalh1amhIdjFpWDE1aTZxc1dk
N090Wnc2eDdUY2NIMVoKLWpkbWg5WEI5eER5ZG5zczN1OUR3R1JFTVlDOVRkUFpZL251aTZsZ0Nq
ak9oYVRhdW5NdWlnRkJNV1VCa0RsSWIKLXVqdStBdHYrUFNCVDlEbVR5VFFHaFBaUkl3PT0KLS0t
LS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIEVOQ1JZUFRFRCBQ
UklWQVRFIEtFWS0tLS0tDQorTUlJRkhEQk9CZ2txaGtpRzl3MEJCUTB3UVRBcEJna3Foa2lHOXcw
QkJRd3dIQVFJQXdzdVo3eUp4THNDQWdnQQ0KK01Bd0dDQ3FHU0liM0RRSUpCUUF3RkFZSUtvWklo
dmNOQXdjRUNDS1Jzd0xYc2g5UEJJSUV5S090NDJtTGVMNmgNCit1UEJoNjNkb0hvcUp4Qjk1cHdw
dFI2M2ZxcDJSZnZaVVV6ZnJXbkkyZG5uMHhSdFJjUG1mNTJCUjRzbGlJSkp6DQorSytoMTBWTzRh
aWxHNG1NZVArMlZQSEZ1ZmxRbjV4Z1NDNVZkN2plZFYwVmV5Y01yMGdmWjFYYmNNdVZJcnJXMg0K
K3dRVk0vRGJiM0E2TkhUNXlVQStaVHlhbTNTWWgwVnJCTHA4RlFuLzIyeGl2bWpDNWpxWmJGcXZV
bCtObkJGMEgNCit1OSttZENubFlxY3E5cVQxYjJoQy9WVlNlT3lpQ1pYVkVFOFhuN3RyTEdsU0dJ
amZnTldtZEhKWWFkTDlKdVdYDQorLzV4RVUzL01adGZqN0RmYXJZdkpZT05WOXBuQkV1dWNXVWpS
SmdiUGdNdXFaMnNiN0lwLzkvWFpIdmdGZ1ZyeQ0KK0xJSmVzTGlGbGs4RW1lN2tESDhFUG55NEk1
UlV1dWZ0T2ZYejVzZW1DT2lRS3FzVjVqS2xCeVB4WU1kaCtBRFYNCitqaW8wdUU1NUxiNE1HZmh4
V3V6Y1dEL1JvdjZJd0lnMHV1WFdwRXpqS3IwSnlWbC84NHdnbmk1SHExTzlFZ2VZDQorMDdWQlFP
dWlFem1obG1WR2xrcWkxL2tGQVorUGtkTlVTTjdKUGd2blZBL1ZnZmlndGxjSUo5YW1wc3FhdTJ5
bQ0KK0tXaDNiVUtpVjBlSlZQQTMvdHZFZEJvb1huKzhEUWJ0NDRzeUQ3UDUyTWZsL2JTMkxjNXk2
bVB0dFZPL21EenUNCitYZzZib0ROemFYQi9IRFVGMlRkOFJhY2t2cXJIUEtLWFhvQXo5dzhzeFlG
R2U4SlZldU93Zk81SFg2Skh5c2NkDQorY0txRVpOTUJManhlZHBMMEVaTXpwNzJic2UxWGN2dkl2
L1hDaFpuZksyWWZoZnhjbDNSSWlUUHgzczZGZWVJbw0KK1Rzck5pVEY4ZC9jT0xLMTEvMDJoRVVk
bzJyNWpnOFBIb1ptWGwwQThuNmFiWFZjT25XaTVNMXRFak5kdXdLTTYNCitBUVVSWTdaOUFsU3NR
WHc2eGoyejYwemk4K0l3dTN0Z0Q0SFA3TnF3WlJzRDk5bGEwOUhkY0kwY1NtZWFFT1RFDQorQnly
Vnlxbk9CcjhaSlZNTHVlNHlNNytCZGxHVWFiVFcrMHUwcXk5UTFBeHVlUXpVbUU0VkZLdGZqUnFJ
VWxBQQ0KKzZIcmZFc09lN0hSTEt4bmRjdEo3dUJYSTVnaHYzekdkMHVabVJ5alhzRWpHcjJKcWFa
YTFIZXhyYUIvR0hYR0QNCis5UFpUSldTMW1MOEtFM28xaFNqMXlUZ2xoZmhKN1dmL2VyZkJHemN0
VVBLUUJra3B6VnFaTVM2WTJBSUhUQjVHDQorYjJ3b3gvbHd2RkEyY2xvZG9UM3RiZURtaE5IeEl1
R2xPbll0Y1BoSUxEN01SZUROdWwxUjlITC9Tc1c3QUI2Kw0KK3E2UjU0UHNTY2hOZ0ZoTFNkejBx
NmF6WFVsazZtY0Y1QmdST3ZneW9hKzdHdjBVbGJTUWJVdVZ1TEQwazNTTVUNCitEbXByL3c5T21x
VXNPY3pZbG5QV292aCtHYlZoemUrZUZUTklHVi93Vk5OSlFSQzFSVU5yQy9lOGFmNGNwLy9yDQor
NmppUTVlTmY4clZCOFZNZU1YUlVIeFB3Ulh0RlZFQ3V1VGRNZFBuNFUyVEhKbys0NVowYlZHOXl0
WjZDVVAwbg0KKzU2RFdINi9kS2VJaXZFRnovYlk0b0NabXNJZmtqTmVvNTQ1R1JmaEZOTkdSZ3Jk
akNldnIwcEp0WTRoNVZqSTINCitpUFVMODVSMHh6ZThvQ1QwYS9HSFk2WHZwYm5SejVxcnkxYzJE
b1IzSWVEUWtxOXlRakE3V2F1dFRicDhVekNkDQorMVM3UlhJa3J6UENnNFhCSXBRdTVoc3dLQzdX
L1VpSDdIOTJwdHlsMmdyaUM3RTBKT2ZaL012Z3hacEZpOHVwZQ0KK3lZOGoxR0RJZ3dwdGY5UUdM
a20vZXB2L1FNNkwyNXdHRUU5MTZ6USszcmtVWFRYVDJvUElpOGphUVJzbG9YY2kNCitOSTNsMUZG
RVFqTjRWNGl0M0cydFZuZWdjQVFkWDluc1o5N3BBcStOT0syOE9pTjlrRE45b2xWK0EwTE1lNzVp
DQorQklCL3pSVWZJZWcvVFNiWWlGVjJjUT09DQorLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUg
S0VZLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KaW5kZXggZTFiNWFk
ZDU0ZTc5N2RiMWM2YzFkM2VkYTk2MWFmM2U1NGJjN2E3Ny4uZWViYTUyOGQyNmQzNTczMjBiYTQy
ZjUxNmYxN2UzMjQ0N2E4M2FkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LnBl
bQpAQCAtMSwxMjUgKzEsMzQ0IEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSVc1
ekNDRmMrZ0F3SUJBZ0lEQmJGSE1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVu
ZGwKLVlpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHhPVEV3TVRReE16UTVNamxhRncweU9URXdN
VEV4TXpRNU1qbGEKLU1CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBabTl5YlMxMFpYTjBjekND
QVNJd0RRWUpLb1pJaHZjTkFRRUIKLUJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5RSTEwdnl0UE41Rzht
NmNXZVBaTEhZZ0JJSnNXZmp4Mk5Xay9XRkVMb2MKLURuVXYyelJwNUUyN0FoeEVKSjZjNkpHdSsz
V2pUN2wrZkd5a29LMVJ3T240T2kvS05KbkRFMlhlU2pRSC9hd1AKLU1pMmowaEFpdlR2Q1hub21U
WG4zY3FjVGtyYXBjRFhWMStXVVNhZWJKdys4d0hMb0pVV0liZVU3S0xWZ1hzY2YKLWhMR0JRQjZw
L3VRZXd6bW1iMWJVYml6RjNHbmJGeFNiRmdrSzNUdGY5TnBIcXFSdGdVQWFadFA5ZWRhL2tSUDcK
LWowaUlRbmNDeWh3VU1jRWcvOVlzS2VMT1NVR3pMalVTQ0pxT0l2VUxuUXdSQllqSUV3dWkwMHFk
Q2hxVjhjaHoKLUtiazMyZGo2dkxGczN0N1AreG9qL0pqWlhaaVdRRlR6RlNWanBTNUE3TUVDQXdF
QUFhT0NGQzR3Z2hRcU1Bd0cKLUExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGRUZKLzR4bVVG
K0hvUWFvdTZ1SzNYTU5EamNhTUVjR0ExVWQKLUl3UkFNRDZBRkVGSi80eG1VRitIb1Fhb3U2dUsz
WE1ORGpjYW9TR2tIekFkTVJzd0dRWURWUVFEREJKM1pXSXQKLWNHeGhkR1p2Y20wdGRHVnpkSE9D
QXdXeFJ6QUxCZ05WSFE4RUJBTUNBZ1F3Z2dvRkJnTlZIUjRFZ2duOE1JSUoKLStLQ0NDZlF3RTRJ
UmQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwWm05eWJTNTAKLVpY
TjBNQmVDRlhkM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFozZDNjeExuZGxZaTF3YkdG
MFptOXkKLWJTNTBaWE4wTUJpQ0ZuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RzRJWmQz
ZDNMbTV2ZEMxM1pXSXQKLWNHeGhkR1p2Y20wdWRHVnpkREFiZ2hsM2QzY3VkM2QzTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJ5Q0duZDMKLWR6SXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUJ5Q0duZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXkKLWJTNTBaWE4wTUJ5Q0duZDNkeTUzZDNj
eUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpJdWQzZDMKLUxuZGxZaTF3YkdGMFpt
OXliUzUwWlhOME1CeUNHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjAKLU1CeUNH
bmQzZHk1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6RXVkM2QzTVM1M1pX
SXQKLWNHeGhkR1p2Y20wdWRHVnpkREFkZ2h0M2QzY3hMbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0hZSWIKLWQzZDNNaTUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CMkNHM2Qz
ZHpJdWQzZDNNUzUzWldJdGNHeGgKLWRHWnZjbTB1ZEdWemREQWZnaDEzZDNjdWQzZDNMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTMKLWQzY3VkM2QzTWk1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXdJSUllZDNkM01TNTNkM2N1Ym05MExYZGwKLVlpMXdiR0YwWm05eWJTNTBa
WE4wTUNDQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnoKLWREQWdnaDUz
ZDNjdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lJSWVkM2QzTWk1M2QzY3UK
LWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ0dDSDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm0KLWIzSnRMblJsYzNRd0lZSWZkM2QzTWk1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBaGdoOTMKLWQzY3hMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQ0dDSDNkM2R6RXVkM2QzTWk1dWIzUXQKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0pJSWll
RzR0TFd4MlpTMDJiR0ZrTG5kM2R5NTNaV0l0Y0d4aGRHWnYKLWNtMHVkR1Z6ZERBa2dpSjNkM2N1
ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1DU0MKLUluaHVMUzFzZG1V
dE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0pZSWplRzR0TFd4MlpTMDIKLWJH
RmtMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0pZSWpkM2QzTWk1NGJpMHRiSFpsTFRa
c1lXUXUKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0pZSWpkM2QzTVM1NGJpMHRiSFpsTFRac1lX
UXVkMlZpTFhCc1lYUm0KLWIzSnRMblJsYzNRd0pZSWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6SXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcKLUtJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3S0lJbWQzZDMKLUxuaHVMUzFzZG1VdE5teGhaQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tZSW5lRzR0TFd4MlpTMDIKLWJHRmtMbmQzZHpFdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ21DSjNkM2R6SXVlRzR0TFd4MlpTMDIKLWJHRmtM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBcGdpZDNkM2N4TG5odUxTMXNkbVV0Tm14aFpD
NXUKLWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUluZUc0dExXeDJaUzAyYkdGa0xuZDNk
ekl1Ym05MExYZGwKLVlpMXdiR0YwWm05eWJTNTBaWE4wTUN1Q0tYaHVMUzF1T0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG5kbFlpMXcKLWJHRjBabTl5YlM1MFpYTjBNQzJDSzNodUxTMXNkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnMKLVlYUm1iM0p0TG5SbGMzUXdMNEl0ZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXcKLWJHRjBabTl5YlM1MFpYTjBN
QytDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHk1M1pXSXQKLWNHeGhkR1p2
Y20wdWRHVnpkREF2Z2kxM2QzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmkK
LUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWQzZDNNUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNTMKLVpXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0YmpocU5tUnpOVE5zZDNk
cmNuRm9kakk0WVM1M2QzY3gKLUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1EQ0NMbmQzZHpJdWVH
NHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkKLU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdN
SUl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUKLWQzZDNNaTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREF4Z2k5NGJpMHRiSFpsTFRac1lXUXVlRzR0TFd4MlpTMDIKLWJHRmtMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBemdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm8KLWRq
STRZUzUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRE9DTVhkM2R5NTRiaTB0Ympo
cU5tUnoKLU5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05J
SXlkM2QzTVM1NGJpMHQKLWJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3TklJeWVHNHQKLUxXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2Qz
TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcKLU5JSXllRzR0TFc0NGFqWmtjelV6Ykhk
M2EzSnhhSFl5T0dFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnQKLUxuUmxjM1F3TklJeWQz
ZDNNaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnMKLVlYUm1i
M0p0TG5SbGMzUXdPSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVlRzR0TFd4MlpT
MDIKLWJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRGlDTm5odUxTMXNkbVV0Tm14aFpDNTRi
aTB0YmpocU5tUnoKLU5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREE4
Z2pwNGJpMHRiSFpsTFRac1lXUXUKLWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1EeUMKLU9uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnMKLVlYUm1iM0p0TG5SbGMzUXdR
NEpCZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVlRzR0TFc0NGFqWmsKLWN6VXpiSGQz
YTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3UjRKRmVHNHRMVzQ0YWpaa2N6VXoK
LWJIZDNhM0p4YUhZeU9HRXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRs
WWkxd2JHRjAKLVptOXliUzUwWlhOME1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUJNSUlKaFFZ
RFZSMFJCSUlKZkRDQ0NYaUMKLUVYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRlhkM2R5NTMKLVpXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2QzZDNN
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkM01pNTMKLVpXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDMKLUxuZDNkeTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKLWMz
U0NHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNaTUzWldJ
dGNHeGgKLWRHWnZjbTB1ZEdWemRJSWFkM2QzTWk1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NHbmQzZHpFdWQzZDMKLUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWIKLWQzZDNNUzUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdodDNkM2N4TG5kM2R6SXVkMlZpTFhCc1lYUm0KLWIzSnRMblJsYzNTQ0czZDNkekl1ZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTWk1M2QzY3gKLUxuZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoMTNkM2N1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnoKLWRJSWVk
M2QzTG5kM2R6SXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2g1M2QzY3hMbmQzZHk1dWIz
UXQKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnoKLWRJSWVkM2QzTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2g1M2QzY3lMbmQzZHk1dWIzUXQKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNk
M01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKLWMzU0NIM2QzZHpJdWQzZDNNUzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1ZDNkM01TNXUKLWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NIM2QzZHpFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnQKLUxuUmxjM1ND
SW5odUxTMXNkbVV0Tm14aFpDNTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5kM2R5NTQK
LWJpMHRiSFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXho
WkM1dWIzUXQKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5teGhaQzUzZDNj
eExuZGxZaTF3YkdGMFptOXkKLWJTNTBaWE4wZ2lOM2QzY3lMbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJamQzZDMKLU1TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTMKLWQzY3lMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaVo0YmkwdGJIWmxMVFpzWVdRdWQzZDNMbTV2ZEMxM1pXSXQKLWNHeGhkR1p2Y20w
dWRHVnpkSUltZDNkM0xuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnQKLUxu
UmxjM1NDSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSW4KLWQzZDNNaTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaWQzZDNjeExuaHUKLUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDSjNodUxTMXNkbVV0Tm14aFpDNTMKLWQzY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkKLU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NLM2h1TFMxc2RtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXUKLWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTMKLVpXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM0xu
ZGwKLVlpMXdiR0YwWm05eWJTNTBaWE4wZ2kxM2QzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5T0dFdWQyVmkKLUxYQnNZWFJtYjNKdExuUmxjM1NDTG5kM2R6RXVlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmkKLUxYQnNZWFJtYjNKdExuUmxjM1NDTG5odUxTMXVPR28yWkhN
MU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWQyVmkKLUxYQnNZWFJtYjNKdExuUmxjM1NDTG5kM2R6
SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmkKLUxYQnNZWFJtYjNKdExuUmxj
M1NDTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWQyVmkKLUxYQnNZWFJt
YjNKdExuUmxjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGwK
LVlpMXdiR0YwWm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUz
ZDNjdWJtOTAKLUxYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqRjNkM2N1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXUKLWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnakozZDNjeExu
aHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDIKLU1qaGhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJeWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkKLU9HRXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHkKLWNXaDJNamhoTG5k
M2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3lMbmh1TFMxdU9HbzIKLVpI
TTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSTJlRzR0TFc0
NGFqWmsKLWN6VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdqWjQKLWJpMHRiSFpsTFRac1lXUXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5T0dFdWQyVmlMWEJzWVhSbWIzSnQKLUxuUmxjM1NDT25odUxTMXNkbVV0Tm14aFpDNTRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXQKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q09uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxTMXMKLWRtVXRObXhoWkM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHkKLWNXaDJN
amhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjAKLWdrVjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTQKLVlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSktvWklodmNO
QVFFTEJRQURnZ0VCQUhYaXExdkEKLXhqYzhpajM0aTRiKzhpblZCVndUV3lIdGN6bFpuSVFUQ3hx
SkNEazgzcHo4UUZIR3lIWXorZGIzNlU2WXdIYWsKLUkzSFloaXBQTUIxVm5sSGtNQTZ4RnVaTC9h
Rld5d0xOVTluVG1hQVYwZlAvUjVrOXZ0OEFFbTBabUVXa05ZdEwKLW9wY3kwcnFqQWFYVElXZXM5
MU9aZm5pVEZRREhNaXVySzhWcStmcS9PencrWVFiUmJVMUtsSENOYXlpc3ZRYTQKLVRMTytEak1S
MGh6RFQzREhFd1BKTFBZYWE2Um5Jd284enZDcWswWlJQQXhldWxkQWUvdTFQenRlWFJ6RUhUQUUK
LURNVkxNd003NTJiTEZ1ZnYxR1JDWk5IRUxaS3loVW9GclAzMEFxRTdyM3Bud1FSVzhLZGlkMzhJ
TW83dTlEZW0KLXU1L3RIZWZQS0Q3Ym0vWT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKy0t
LS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSkFHekNDUHdPZ0F3SUJBZ0lEQy9PdU1BMEdD
U3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZaTF3YkdGMFptOXliUzEwWlhO
MGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1ESTVORGRhDQorTUIweEd6QVpC
Z05WQkFNTUVuZGxZaTF3YkdGMFptOXliUzEwWlhOMGN6Q0NBU0l3RFFZSktvWklodmNOQVFFQg0K
K0JRQURnZ0VQQURDQ0FRb0NnZ0VCQUw5OWFXazNkUmlZeElqTkhseEx6WkxNcWFmYS93QXJHNVE5
VDJFTHhiMHINCitPZ0RrVlVNcGlWQm1BNHJXcEdJdThSZ2UvdEhvYTNGTTc2dmt4eXUzQjYvc0lm
U1BXcG5VN1lOL1BROTRiakI0DQorV1RVRlFSMExCbktVR2JZMVhWeGU1QU8xZDFmWTN0QW16M05I
QTQ2aWZXemJWcVJQWlN6WHB1Tmc1ZXRCbWZKMg0KK2ZaNnJlWXRnUzlWSXF1VW9QU0FGTUtNdDNK
NDZiRDZWUDhRUGNWRnpZSUwwRHJuUmxxZDFvb01GRkJNaXpYcTYNCis5WlNsWTJTWEErTTU3YTRs
TG12VVQ1MWY1Vy9CdEI3dWNLYmFPbnhlWlpMWUFMOSswK3JwOTIyRWUyRHJvSXRGDQorTWdrQVFR
Y3ZjdURvdFdTODZWZ1NGN2RQVGpRMTJFLzdlSCs5b1BRRlN4c0NBd0VBQWFPQ1BXSXdnajFlTUF3
Rw0KK0ExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGUGE1MmhZSEJidHZ5V013eG1kQXl3UFRI
cERzTUVjR0ExVWQNCitJd1JBTUQ2QUZQYTUyaFlIQmJ0dnlXTXd4bWRBeXdQVEhwRHNvU0drSHpB
ZE1Sc3dHUVlEVlFRRERCSjNaV0l0DQorY0d4aGRHWnZjbTB0ZEdWemRIT0NBd3Z6cmpBTEJnTlZI
UThFQkFNQ0FnUXdnaDlqQmdOVkhSNEVnaDlhTUlJZg0KK1ZxQ0NIMUl3RTRJUmQyVmlMWEJzWVhS
bWIzSnRMblJsYzNRd0Y0SVZiM0F5TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJlQ0ZXOXdP
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEY3VkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzUXdGNElWYjNBeExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CZUNGVzl3TXk1M1pXSXRjR3ho
ZEdadg0KK2NtMHVkR1Z6ZERBWGdoVnZjRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RjRJVmJt
OTBMWGRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmVDRlc5d05TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVhnaFZ2Y0RRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0Y0SVZiM0E0TG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wTUJlQ0ZYZDNkeTUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkREFZ
Z2hadmNEZzNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d09EQXUNCitkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXdHSUlXYjNBNU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2DQor
Y0RFMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRBdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRdw0KK0dJSVdiM0F4Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGN5TG5k
bFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3R0lJV2IzQXlNeTUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNESTRMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01UTXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdH
SUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RFeExuZGwNCitZaTF3YkdG
MFptOXliUzUwWlhOME1CaUNGbTl3TnprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0Ey
DQorTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRFE0TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUJpQw0KK0ZtOXdNVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTBNaTUz
WldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTJMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQmlDRm05d016Y3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBNU9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZMkxuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1C
aUNGbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5Tmk1M1pXSXQNCitjR3ho
ZEdadmNtMHVkR1Z6ZERBWWdoWnZjRFkzTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdO
ek11DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpPQzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2hadg0KK2NEWXlMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05UZ3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQVlnaFp2Y0RJeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TWpRdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNRd0dJSVdkM2QzTWk1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERB
WWdoWnZjREU0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOelF1ZDJWaUxYQnMNCitZ
WFJtYjNKdExuUmxjM1F3R0lJV2IzQTVNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNE
TXpMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05qa3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdHSUlXYjNBeg0KK01DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RNNUxu
ZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TlRJdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd0dJSVdiM0EwTXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRGcxTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3
R0lJV2IzQXlNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEY3hMbmRsWWkxd2JHRjAN
CitabTl5YlM1MFpYTjBNQmlDRm05d05UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNB
NE5DNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RNeExuZGxZaTF3YkdGMFptOXli
UzUwWlhOME1CaUNGbTl3TlRRdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwT1M1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRFEwTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdORFV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJV2IzQXpOUzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEYzJMbmRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBN
QmlDRm05d01UUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBNE1TNTNaV0l0Y0d4aGRH
WnYNCitjbTB1ZEdWemREQVlnaFp2Y0RnNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3
TWpBdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TlM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBWWdoWnZjRFV4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPRFl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTENCitOUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNESTNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQorRm05d01USXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RE
QVlnaFp2Y0RRM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T1RZdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNRd0dJSVdiM0E1TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZj
RFUzTG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1F3R0lJV2IzQTFNeTUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESTVM
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qVXUNCitkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBNE15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2DQorY0RrM0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRdw0K
K0dJSVdiM0F6TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGN3TG5kbFlpMXdiR0Yw
Wm05eWJTNTANCitaWE4wTUJpQ0ZtOXdOakF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2Iz
QTVNaTUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNEYzRMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmlDRm05d09Ea3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBeE1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjM0xuZGwNCitZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TlRrdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F4DQorTlM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRFkxTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJp
Qw0KK0ZtOXdOamd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTVNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnoNCitkREFZZ2hadmNEZ3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5
d05pNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1F3RzRJWmIzQTRMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBYmdobHZjRGt1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhO
ME1CdUNHVzl3TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHNElaYjNBM0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFiZ2hsM2QzY3VkM2QzTG5kbFlpMXdiR0YwDQorWm05
eWJTNTBaWE4wTUJ1Q0dXOXdNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F4
TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWJnaGwzZDNjdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjANCitNQnVDR1c5d05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3
RzRJWmIzQXpMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREkzTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RRdw0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2do
cHZjRGsyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJNExtNXZkQzEzDQor
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBYw0KK2docHZjRE16TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RV
MkxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3hMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFl5DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RFNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEUTRM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF6TG01dmRDMTMNCitaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RnNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
DQorZ2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGsxTG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RjekxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEa3gNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRFF5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RJMkxtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTVMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRE15TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2
Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEazRMbTV2ZEMxM1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREU1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RjMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERXpM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRGM1TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxuZDNkeTUzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEZzJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRGMzTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEVTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGt5DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RRMExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEVTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGswTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RNMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETXdMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docDNkM2N4TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemREQWNnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTAN
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREl3TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RVeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEUXhMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV5TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RFd0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEY3lMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
Y2docHZjREl5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RVeQ0KK0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHUNCitkR1Z6ZERBY2docHZjRFkzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0Rnd0xtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzBMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE14TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RVekxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
SXpMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRE0xDQorTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkREFjZ2hwdmNEWXpMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRE00TG01
dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RVNExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEWXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
Y2docHZjREUwTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0Rrd0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEY3cNCitMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBY2docHZjREV4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNn
aHB2Y0RFMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTFMbTV2ZEMxMw0K
K1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWMNCitnaHB2Y0RZNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
ZzNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjRGM0TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjdQ0KK2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFjZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRGt6
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjdWQzZDNNUzUzDQorWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNESXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
Yw0KK2docHZjRGN4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrM0xtNXZk
QzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBY2docHZjREkwDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNn
aHB2Y0RZMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEUTVMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFU1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZj
bTB1ZEdWemREQWNnaHB2Y0RRMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hw
dmNETTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRE01TG01dmRDMTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RRM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFjZ2hwdmNERTMNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGMx
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RnMUxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTNMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZERBY2docDNkM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RneExt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFkZ2h0M2QzY3lMbmQzZHpFdWQyVmlMWEJzDQor
WVhSbWIzSnRMblJsYzNRd0hZSWJkM2QzTVM1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
QjJDRzNkMw0KK2R6SXVkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNkM2N4TG5k
M2R6RXVkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzUXdINElkZDNkM0xuZDNkeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNRd0lJSWVkM2QzDQorTWk1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNDQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpk
REFnZ2g1M2QzY3hMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitJSUllZDNk
M0xuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmQzZHk1M2QzY3lMbTV2
DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N4TG5kM2R6SXVibTkwTFhkbFlp
MXdiR0YwWm05eQ0KK2JTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3SVlJZmQzZDMNCitNaTUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFoZ2g5M2QzY3lMbmQzZHpJdWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQ1ND
SW5odUxTMXNkbVV0Tm14aFpDNTNkM2N1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3SklJaWVH
NHRMV3gyWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBa2dpSjMNCitkM2N1
ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1DV0NJM2QzZHpFdWVHNHRM
V3gyDQorWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ1dDSTNkM2R6SXVlRzR0TFd4
MlpTMDJiR0ZrTG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNXQ0kzaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxuZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1
M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ2lDDQorSm5kM2R5NTRiaTB0YkhabExUWnNZ
V1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DaUNKbmh1TFMxcw0KK2RtVXRObXhoWkM1
M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNtQ0ozZDNkekV1ZUc0dExXeDINCita
UzAyYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFwZ2lkM2QzY3lMbmh1TFMxc2Rt
VXRObXhoDQorWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUluZUc0dExXeDJaUzAy
YkdGa0xuZDNkekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DbUNKM2h1TFMxc2Rt
VXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBcmdpbDRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBdGdp
dDRiaTB0YkhabExUWnNZV1F1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1DK0NMWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkREF2Z2kxNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNj
dWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0w0SXRkM2QzTG5odUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbmRsWWkxdw0KK2JHRjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNRd01JSXVk
M2QzTVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorWldJdGNHeGhkR1p2Y20w
dWRHVnpkREF3Z2k1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeA0KK0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1EQ0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExu
ZDMNCitkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TVlJdmVHNHRMV3gyWlMwMmJHRmtMbmh1
TFMxc2RtVXRObXhoDQorWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdNNEl4ZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQXpnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXoNCitiSGQzYTNKeGFIWXlPR0V1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOME1EU0NNbmQzZHpFdWVHNHRMVzQ0DQorYWpaa2N6VXpiSGQz
YTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1EU0NNbmh1TFMxdQ0KK09H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
ME1EU0MNCitNbmQzZHpJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05MExYZGxZ
aTF3YkdGMFptOXliUzUwDQorWlhOME1EU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpo
aExuZDNkekl1Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1EaUNObmh1TFMxdU9HbzJa
SE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGgNCitaQzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREE0Z2paNGJpMHRiSFpsTFRac1lXUXVlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhh
SFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd1BJSTZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0K
K0xTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZERBOGdqcDQNCitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lX
UXVibTkwTFhkbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUVPQ1FYaHVMUzF1T0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMQ0KK00yeDNkMnR5Y1doMk1qaGhMbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNRWVDUlhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1qaGhMbmh1
TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRH
VnpkREFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQVRDQ0hWc0dBMVVkRVFTQ0hWSXdnaDFPZ2hG
Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXlMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aFZ2Y0RrdWQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlWYjNBeExuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdoVnZjRE11ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRlc5d05pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVZibTkwTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEVXVkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NG
Vzl3TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTRMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBnaFYzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGN1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d09EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T1RRdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d05EQXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRjdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdOekl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05qUXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdNamd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01UTXVkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TXpZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVEV1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d056a3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TmpF
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdORGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d01Ua3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TkRJdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdORFl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016Y3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T1RndWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdOall1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TWpZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOamN1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056TXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TXpndWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d05UZ3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRZdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZtOXdNakl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01q
UXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdNVGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d056UXVkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3T1RFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNek11ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05qa3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TXpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemt1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm05d05USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TkRNdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRFV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d016UXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpFdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UQXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3T0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNekV1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05UUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3TkRrdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdORFF1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRm05d05EVXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TXpVdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOell1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1ND
Rm05d01UUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RFdWQyVmlMWEJzWVhSbWIzSnQN
CitMblJsYzNTQ0ZtOXdPRGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qQXVkMlZpTFhC
c1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T1RVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdO
VEV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EWXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NGbTl3TlRVdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNamN1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRm05d01USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpV
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxj
M1NDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T1RNdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0ZtOXdOVGN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qTXVkMlZp
TFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0Zt
OXdNamt1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qVXVkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3T0RNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVGN1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d05ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TXpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOekF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d05qQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T1RJdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOemd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09Ea3Vk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRBdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdOemN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05Ua3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TVRVdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOalV1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qZ3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3T1RBdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPREl1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDR1c5d05pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR1c5d09DNXViM1F0
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR1c5d09TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR1c5d05DNXViM1F0DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR1c5d055NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR1hkMw0KK2R5NTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR1c5d01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR1c5d01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR1hkM2R5NXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExu
UmxjM1NDR1c5d05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR1c5d015NXViM1F0ZDJW
aQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01qY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdPVFl1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdocHZjREk0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0TXk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpNdWJtOTANCitMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RVMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorZDNk
M01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qSXVibTkwTFhkbFlpMXdiR0Yw
Wm05eQ0KK2JTNTBaWE4wZ2hwdmNERTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIz
QTBPQzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORE11Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGc1DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0EyTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RVdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RjekxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRH
VnpkSUlhYjNBNU1TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05ESXVibTkwDQor
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYQ0KK2IzQTJPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05
MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjRE0zTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWFiM0E1T0M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRr
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RjMg0KK0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBeE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205
d056a3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwM2QzY3lMbmQzZHk1M1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZElJYWIzQTROaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dt
OXdOemN1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0ExTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NHbTl3T1RJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RRMExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMU5DNXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExu
UmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNETTANCitMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsDQorYzNTQ0duZDNkekV1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREkxTG01
dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EyTkM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3TWpBdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RV
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBME1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d01USXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hw
dmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTNNaTV1YjNRdGQyVmkNCitM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNakl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRFV5DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzTkM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3TmpjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0Rnd0xtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE5DNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d016RXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEVXpMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQXlNeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNelV1Ym05MExYZGxZaTF3YkdGMFptOXkN
CitiUzUwWlhOMGdocHZjREUyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTXk1
dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpndWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RVNA0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mk1TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d01UUXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
YWIzQTNNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEV1Ym05MA0KK0xYZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjREUxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWENCitiM0EyTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRBdWJtOTBMWGRs
WWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RZNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBNE55NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDR205d056Z3VibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwM2QzY3UNCitkM2QzTWk1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTRNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdPVE11
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01TNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSWFiM0F5TVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpF
dWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RrM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhDQorYjNBNE9DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d01qUXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNEWTJMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBPUzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdOVGt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFEyDQorTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6Tmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0K
K2MzU0NHbTl3TXprdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRM0xtNXZkQzEz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBeE55NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR205d056VXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzFMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTFOeTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0duZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjRGd4
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTWk1M2QzY3hMbmRsDQorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNk
Mw0KK2R6SXVkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYmQzZDNNUzUzZDNjeExuZGxZ
aTF3YkdGMFptOXkNCitiUzUwWlhOMGdoMTNkM2N1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUllZDNkM01pNTNkM2N1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTRi
aTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSG5kM2R6RXVkM2QzTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVkM2QzTG5kM2R6RXUNCitibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2g1M2QzY3VkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NIM2QzZHpFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1
ZDNkMw0KK01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTVM1dWIz
UXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzDQorZG1VdE5teGhaQzUzZDNjdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0kz
ZDNkekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpTjNkM2N5DQor
TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWplRzR0TFd4MlpTMDJi
R0ZrTG5kMw0KK2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1
M2QzY3hMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBnaVozZDNjdWVHNHRMV3gyWlMwMmJHRmtM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2QzZHpFdQ0KK2VHNHRMV3gyWlMwMmJHRmtM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJbmQzZDNNaTU0YmkwdGJIWmwNCitMVFpzWVdR
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWQ0YmkwdGJIWmxMVFpzWVdRdWQzZDNNUzV1
DQorYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNjeUxt
NXZkQzEzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkSUlwZUc0dExXNDRhalprY3pVemJIZDNhM0p4
YUhZeU9HRXVkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NLM2h1TFMxc2RtVXRObXhoWkM1NGJp
MHRiSFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0x
TTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUl0ZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4w
Z2kxM2QzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRM
blJsDQorYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpFdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlP
R0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1do
Mk1qaGhMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0xuaHVMUzF1T0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMM2h1TFMx
c2RtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCita
WE4wZ2pGNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjdWJtOTBMWGRsWWkxd2JH
RjBabTl5DQorYlM1MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1
Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOMGdqSjNkM2N4TG5odUxTMXVPR28yWkhNMU0y
eDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZElJeWVHNHRMVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01TNXViM1F0DQorZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDTW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdQ0KK2JtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnako0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTMN
CitkM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSTJlRzR0TFc0NGFqWmtjelV6Ykhk
M2EzSnhhSFl5DQorT0dFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
alo0YmkwdGJIWmxMVFpzWVdRdQ0KK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXMNCitkbVV0Tm14aFpDNTRiaTB0YmpocU5tUnpO
VE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NPbmh1TFMx
dU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdA0KK2QyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxT
MXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBna1Y0
YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdEUVlKS29aSWh2Y05BUUVM
QlFBRGdnRUJBSWVUdTJJeVRwQVBiVVlDeGZSM1Q2QnENCitkNVltbzNURzhwblpyc1lxekh0Q0l2
R29PODFKRUlKZGhQeWl0YkpkL3VzYnRrRVRoTGhhZmVRaTlSbWlDWll2DQorQ1VleDBJZFV4SGFX
MzZaeDRrSXpOTGYwMnpjeHdCSnRBRnBmL3lBc1FkS0lJMFpGTkdSMVdrUnFuYXRmejV0eQ0KK1NL
L1M1OTNNWTlzTzd4ZHhzUGNRbko3V1BhWEs2NjB5TzFHb3RiaDRiUndwZEw4dUp2RlZwZTYrVUFP
UzY0TWsNCitqS3lGSXkzWjlIbGIrSFBWMHdGQlM4OVdxcUVmQW9Ma2JyZjBLRWpvQnJ2SWxJWGY4
L3RMb2dUVFVTYlpkNjY3DQorcWY4OFNYLzB0WVZNRVlDNi9JVWl5aWdBeC9oTWl1V0NEQ1MxMG1X
THdZZlBzMkp3RFFSbFNJb3ZlTkJwK3dnPQ0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5Cmlu
ZGV4IGI2MmFmMjA4YzM0Y2IzMTY3YWU2NDAzOGNkZmY2OTZmMDQ3ODkzZWIuLmNmYWNjY2U0MjNl
ZGVkZGI4OTBkNGE4MDY4M2M3NDc2OTJlMjNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRl
c3Qua2V5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5CkBAIC0xLDI4ICsxLDI4IEBACi0tLS0t
LUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVND
Qktnd2dnU2tBZ0VBQW9JQkFRQ3JaWFZYbU9QbHFvLysKLTJ4ajE1UGdjWkdIR28vYm9maVFRM2ds
NkpMMVZYMUdwdFlJTmhUcTJzVWhmTjh0Q2IrY0h5emFwTzlvVW13cXcKLXA1VXA3dEo0SXA3dUUx
L3d3U3hWY3ZDYXdHNS9QTjVpRDdIMndzbUVwcEhYT2MzTGwwODUvZ3plcysxK05uK3EKLUFSbXAx
YkYvdmpwbEQ2VmRIMnJCVzNzSjNEQW9CYW9YbEFNZmVSQUZEcGFxYSs5bHhNck01V2tVSG5kUSt1
RU0KLTZrWnlldmh5cDAyWERQMHZMd05DdFBMR0IwZW1BQWZDN3hwd1JHVkdTdEVzVWhmL21jOXlO
TmFLZ3FCS0kwbm8KLW9WbnVVM1JHZEtIUDE4dmNqdEJTVjBsWWdqZmc5YTA3T0J1MWhnUWZmaG9m
aTJCeWRmYUNwQkFNekZobHUxdXkKLXM2YWhWa0pwQWdNQkFBRUNnZ0VBZm12enhZME1iRmNHcDJG
TVkvTmozdTFjQVh6bm5rMk1wTFJpSVNvQVRYeGwKLWE5eHA5VGNVTzdWQVFKdVMzWXBVeXJibHRx
WmpFVmZhNXJwMWw5eUVlZ0J2WWdRQWZFREFScmJsS2dCT2dLT1IKLUZKdW5GUEJRVy92UkR3T2Yv
RSs3TEhkclhza3dvQ3ZxdHFiaEd4aDRPRlZFRlU4WkZqc2FMMDBlMEFNTnNqWmwKLTBPc0VPTmxJ
SDRuQ2E3RTZEVGFzSHhjMVZrSFFyM3V2Qmw1LzRIZk9jMDV0citaS2xNWVh6QVBXa0wwc0MyMTYK
LURxeTRBeEowTTBheDhCWUVadW8wZ3FRbU1Bb25KVGtFbnB5b0Q0ejg5Uzg3N3ZGcDh3MVZQYkdZ
a1Y0OHlqVi8KLUk3ZlE2WWp0M3lnK2FzK3M0YXJHRXNVQjBsK1hBcEJZWVkvSitxY1lVUUtCZ1FE
ZWQ3RE9NSlVjM2tQVEZFY04KLXAvRWJTaDlUWHhTLzc0Y0l5R2lkOUlFaVJFSll4WXY4a3owS3Bs
R3VKb2xJUTMvSWs5UmFjNkIzVHU0V2tXMGcKLVRQYk51bllFc3lkWkJBbmFRNGVBVmRPZnZSUTZW
M2VCWjJ2RXJzSEpSRmFqNWNPY2VzVVh4QlpJNm0ydFFFU3gKLWRCV0ZETkc5a3p0cjBIbWFMNlB1
ejR6Wkl3S0JnUURGT3hmUjdGY3BHZHc2MXppU3NabXR2a2Y2ZXBrRzMrb3UKLXVoWTUwSjBVclRi
SzdUdWlta29Sdy9YSGVCZTRkYitlak9PdUxEOVFFL3lYdm10RVd1eVVUVFlPVnZaK0h1TmoKLVJw
M2tkaTFHdVdYbjZnUnZkbGtmOVh3VzdqSG1na3BiQTVBK3VEWHMzRVlZYTE4THhQTmZNU3ZoeUhk
a0ZuVUcKLWFUenlZTnBkQXdLQmdHdi9RTmFuNFF0MW53bHVVNXYraGw2UUdpcjRBbk8yelIvblls
b2o0emlHV0lzTnc0cG0KLTFBQkNnMjUraUxDTERCS01LVStMeUQrREVyUGovMHpwNy9vcFpiZWNY
U0txZ2pueUJHcTV2NVZSVGV1UW9KUXkKLVo2L0FncFM1VnpJVGpXVitlQVcwakhqelRURUkvUkFF
WVpvSWdoMTh4eURzd011b0N2WVl6YkJ2QW9HQkFNTTIKLUkvTncreXdCSG90V3JmWHp0dW5TcGlk
eTVMZDdOS3lmSHBTR3VKTFlocHovaGNFQStVTHdNL29FRVdaUGxTTjIKLXkzdCs3QU4wWk5SRWNx
TXJZM0c5b2owN01hblBKTDBFRGc4c01OQUpmS1c0YUQ5eVlmQlI1MHBDNUQwRXhGZWwKLUJVWXV5
YUR3dktnNnpjNDJWN1BtVlVxYVFpRmNZT1BCa2NOTXZaVEZBb0dCQUxCdGR0MGlJdnRCb3BwK0lR
YVYKLXpaTUE1WlFJUTVuNXYwNzFMS2ExczdhcjMraElvRFJzWmJNN1hrVUlBOHpRbHJ3RlJoYlU1
WUZOY2Jwb29RU20KLTdqNCtmSXVkY3B4ajl0QU1HQWI1eWc4OWsxRGpUeTdGVVdMOWVsR0lndkpN
cWdGNklRNTMrdlI4eHdHRHlRTEIKLXNQNW1pekYxd2k0N0RZUEpRY0RSQ3pVKwotLS0tLS1FTkQg
UFJJVkFURSBLRVktLS0tLQorLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQorTUlJRXZRSUJB
REFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDL2Z1WXFiSkxZS29Udw0K
K0Z6YXVuU0ozNjJtcEE3Qm9XT0lNaVRGa0dLMXRaQWdwejJydnpCRDVzek5NSXJIYUpGL0RNZkh4
ZTJDWHNua0QNCitYV2JjMGN1RDdOTU00ZEtiZlJiam50eFkzV3lKZDVpakRMSjhidEMvUFN3Wm9j
bUh3Z3BPcUI0MHFHL2FMUXBODQord0xSeEJrbGg2aHJBWk1IVHNJL0FPNElCS01Ub01Zc0hTN1g3
WWhkTUtnM2VxODdjZ0dpL3F4MUY0cVNpQVdvRg0KKzMwSG0vZmlVTHVLZnBBRlZmZXZCUFQ1aFVL
RHFOeXJWeHhoTTdQVU5PVzFVMHdReFJ0Z1NvQXFDWTIyQ3BJN1cNCitna05obXgyVW1yQWROUUw0
dTFWL2pQY2g0bVUyUXFtTFdCR1FvSHdvUmRpYmlKV2FKdW45UndlRGNJcVlHd3RPDQoraEl3R3Qr
TGpBZ01CQUFFQ2dnRUFjRGVvSDdKU2R6U3JoSnJGNDV1WHFGaWZLWGxNOWtrbjVwcTdBK0ptTnhX
SQ0KK3B4K3lsZVdyQ1BqWGxjVTdIZzkwd3NsUTgrY09HcmR1ck9jZU1VY01FVHBHRDJXQ2FyWHFK
T2RpVHYwcTduL1UNCitSYkJhSkFzNGJ1a2xIN3dzZ2s3V2hYT0ZoK3d3NTlTL0ZnTlllbWRwdDJS
ZDJ1THdwdUh2eTRIVDFHUVV4OC9DDQorOXFoTnV1OTJCTkV3NVlYWmpXbFVYc1g0L01PaFFzNmlh
RWZlR3BobzIwdWhVUlJabEc1a3YvekNxOXlDWCtzYQ0KK081QzUwNHprWmdYb2pDdmVhaE9YZVdM
cmhOblJwMWR0M0RIVnAzY0YyZnlQMElSYisreXcwWllkdmNieWM4MnMNCitCSGVuakMzdkJ3bmc3
YUE5NVFlaHllTFFPM1BWVmo4UVBuZFZCNzJhUVFLQmdRRDcxeVkydEJ5WHpqSGdEUmFHDQorZERE
WVF0Z3lWZno0Y1gra1MrQllXV3p1Q1FvOS9Vb2J3dWNVVG1VejFSYzA0L3F1U2svcDYzYWcxdmJx
eHlvRw0KK3BWeVYyUDZJWTUrRjNwRWtsV3RmWG15N0FudWs4alVnWGpnUzIrNzhneFB6eTQ5Tndl
VE5UVWNsTEFaSlNGa0wNCitHQUI2b1hXMHRhZVZSc0NaOWdncHYwVVNvUUtCZ1FEQ3FKaCtNbXRw
MDR6Y2pSbTBnVVptZjhFckZYWWo2dXFyDQorclZzR1FMbjZ3UlJjYzhKck5BNFhibHE3cmpmN0I1
RDJEczhJcG9QZUZvQjhHYStQR2U0TVFKWmRHMFVtdlFGZw0KK1JYcEFpQjZPN240KzhvYVhTT21G
cEZMNUpkMC9DZEd1dFdHNDRDd0pvcmJDQllxVjhmSUY1VWFZRkdpZ0pFVVQNCitXcmNQUTBQTEF3
S0JnSFJYbkd2QklVUndHVkpzT1crNzFhVFNuSllFYTIxSzRiREE3TTlqNEpMRzBsaDQzdmVjDQor
UHF4KzJ2bnJBMkdId0pNcitXY1RSQ1pocUlnbG9pQ1gzQUhOMFNpby9WVVcwTzZacUpUU1JtRE9j
Tmh1bkdScg0KK29uUHo3cC93M2hMT2cxRmt0Wkt5bEo5eml5UG5yRnNYcDREL2ZpVVJsbTI3MWRa
S2R0THliYktCQW9HQVNSRXYNCis3RzdRa3ZDdHR6dmZvam5FUzBVNUpRcnhSWm93YkRDdU1qS3Bu
TTVNN2tjbGUwZ1c0Z1N5V2pDVElzODhRcUJjDQorWmtyYXhNcDlnQmZFSmxyOVYrd0doUHh2Z0pN
QnFUbHJJajMxK29EYk1wV21uN0xtdFJ0eGFjUWt3RHpYVUZVVg0KK1VXZ1VINm5NSUJna1pSUmtY
SUlyZFhwenEyang1TW53WFBKS3lERUNnWUVBMDlQMlp3ZUJKRTlhOW9vS0dXb2kNCisyaVJWNEdB
ZUlaR1VYeTFzVC9EV002ZVVzcHVGc0lFMWRhazBKNVZWS2RJY2U3Q1YzSXBERThQWjVQMGlVZmll
DQorZ0wxNzBLeGZKUmtPZkk2cHg0d0JXR2UvUk0wbkluV0pJSVI1b0djaWZ6Qng3dFZRcUtiek5j
bExVa01PaGhnNw0KK2VwWmRQSkp1WlNncml4YVBvN3ltejQwPQ0KKy0tLS0tRU5EIFBSSVZBVEUg
S0VZLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3Jt
LnRlc3QucGVtCmluZGV4IDU5NTkzMTZiYjViNDgyNWU2NDBiYjFmN2NhYjA4YmM5ZjQwNWE2M2Eu
LjY4YTliOTZmM2VlOWQ5Y2RhNTdkYWViNjc5NmI1YjY3NGQ3NWFjNDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2Vi
LXBsYXRmb3JtLnRlc3QucGVtCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtCkBAIC0xLDEzMyAr
MSwyMzkgQEAKLUNlcnRpZmljYXRlOgotICAgIERhdGE6Ci0gICAgICAgIFZlcnNpb246IDMgKDB4
MikKLSAgICAgICAgU2VyaWFsIE51bWJlcjogMzczMDY0ICgweDViMTQ4KQotICAgIFNpZ25hdHVy
ZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIElzc3VlcjogQ049
d2ViLXBsYXRmb3JtLXRlc3RzCi0gICAgICAgIFZhbGlkaXR5Ci0gICAgICAgICAgICBOb3QgQmVm
b3JlOiBPY3QgMTQgMTM6NDk6MjkgMjAxOSBHTVQKLSAgICAgICAgICAgIE5vdCBBZnRlciA6IE9j
dCAxMSAxMzo0OToyOSAyMDI5IEdNVAotICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0u
dGVzdAotICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKLSAgICAgICAgICAgIFB1Ymxp
YyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCi0gICAgICAgICAgICAgICAgUHVibGljLUtl
eTogKDIwNDggYml0KQotICAgICAgICAgICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAg
ICAgIDAwOmFiOjY1Ojc1OjU3Ojk4OmUzOmU1OmFhOjhmOmZlOmRiOjE4OmY1OmU0OgotICAgICAg
ICAgICAgICAgICAgICBmODoxYzo2NDo2MTpjNjphMzpmNjplODo3ZToyNDoxMDpkZTowOTo3YToy
NDoKLSAgICAgICAgICAgICAgICAgICAgYmQ6NTU6NWY6NTE6YTk6YjU6ODI6MGQ6ODU6M2E6YjY6
YjE6NDg6NWY6Mzc6Ci0gICAgICAgICAgICAgICAgICAgIGNiOjQyOjZmOmU3OjA3OmNiOjM2OmE5
OjNiOmRhOjE0OjliOjBhOmIwOmE3OgotICAgICAgICAgICAgICAgICAgICA5NToyOTplZTpkMjo3
ODoyMjo5ZTplZToxMzo1ZjpmMDpjMToyYzo1NTo3MjoKLSAgICAgICAgICAgICAgICAgICAgZjA6
OWE6YzA6NmU6N2Y6M2M6ZGU6NjI6MGY6YjE6ZjY6YzI6Yzk6ODQ6YTY6Ci0gICAgICAgICAgICAg
ICAgICAgIDkxOmQ3OjM5OmNkOmNiOjk3OjRmOjM5OmZlOjBjOmRlOmIzOmVkOjdlOjM2OgotICAg
ICAgICAgICAgICAgICAgICA3ZjphYTowMToxOTphOTpkNTpiMTo3ZjpiZTozYTo2NTowZjphNTo1
ZDoxZjoKLSAgICAgICAgICAgICAgICAgICAgNmE6YzE6NWI6N2I6MDk6ZGM6MzA6Mjg6MDU6YWE6
MTc6OTQ6MDM6MWY6Nzk6Ci0gICAgICAgICAgICAgICAgICAgIDEwOjA1OjBlOjk2OmFhOjZiOmVm
OjY1OmM0OmNhOmNjOmU1OjY5OjE0OjFlOgotICAgICAgICAgICAgICAgICAgICA3Nzo1MDpmYTpl
MTowYzplYTo0Njo3Mjo3YTpmODo3MjphNzo0ZDo5NzowYzoKLSAgICAgICAgICAgICAgICAgICAg
ZmQ6MmY6MmY6MDM6NDI6YjQ6ZjI6YzY6MDc6NDc6YTY6MDA6MDc6YzI6ZWY6Ci0gICAgICAgICAg
ICAgICAgICAgIDFhOjcwOjQ0OjY1OjQ2OjRhOmQxOjJjOjUyOjE3OmZmOjk5OmNmOjcyOjM0Ogot
ICAgICAgICAgICAgICAgICAgICBkNjo4YTo4MjphMDo0YToyMzo0OTplODphMTo1OTplZTo1Mzo3
NDo0Njo3NDoKLSAgICAgICAgICAgICAgICAgICAgYTE6Y2Y6ZDc6Y2I6ZGM6OGU6ZDA6NTI6NTc6
NDk6NTg6ODI6Mzc6ZTA6ZjU6Ci0gICAgICAgICAgICAgICAgICAgIGFkOjNiOjM4OjFiOmI1Ojg2
OjA0OjFmOjdlOjFhOjFmOjhiOjYwOjcyOjc1OgotICAgICAgICAgICAgICAgICAgICBmNjo4Mjph
NDoxMDowYzpjYzo1ODo2NTpiYjo1YjpiMjpiMzphNjphMTo1NjoKLSAgICAgICAgICAgICAgICAg
ICAgNDI6NjkKLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAg
ICAgIFg1MDl2MyBleHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFp
bnRzOiAKLSAgICAgICAgICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgWDUwOXYzIFN1Ympl
Y3QgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIDJBOjE4OjBCOjA5OjIyOjZFOjI4
OkQyOkRCOkZEOkMyOjJEOjQwOkE2OkYzOjM4OjYyOjZFOkM3OkM1Ci0gICAgICAgICAgICBYNTA5
djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAgICAgICBrZXlpZDo0MTo0
OTpGRjo4Qzo2Njo1MDo1Rjo4NzpBMTowNjpBODpCQjpBQjo4QTpERDo3MzowRDowRTozNzoxQQot
Ci0gICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiAKLSAgICAgICAgICAgICAgICBEaWdpdGFs
IFNpZ25hdHVyZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50Ci0gICAgICAgICAg
ICBYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlOiAKLSAgICAgICAgICAgICAgICBUTFMgV2ViIFNl
cnZlciBBdXRoZW50aWNhdGlvbgotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRp
dmUgTmFtZTogCi0gICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFk
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0t
bHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02
bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1
M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4t
LWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3a3Jx
aHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNsd3drcnFo
djI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53
d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3
dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4
YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0t
bHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUz
bHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZk
czUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3
a3JxaHYyOGEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0Ci0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJT
QUVuY3J5cHRpb24KLSAgICAgICAgIGFmOmMyOmVhOmNjOjZhOjVlOjQ5OmUwOmRiOjcyOjE0OjA1
OjNjOjIxOmEwOjhiOmZmOmI2OgotICAgICAgICAgYTk6NzE6ODI6Zjc6NjE6Y2Q6MjM6MmE6MDA6
NjY6OTE6YWM6MDE6OTk6NjM6Mzg6MTE6MjE6Ci0gICAgICAgICA4NTpiMjo1Nzo5MjowYjozZjo3
OTo2ODpmNTpkODo1OTo4YjphNzo3NDoxOTplYjowYjplNzoKLSAgICAgICAgIDNkOjg2OjRlOjY2
OmQ0OmU2OjJmOmZmOmVkOjZjOjdkOjlhOjVlOjEyOjRlOmJmOjM5OmZmOgotICAgICAgICAgZjc6
ZDA6ZmI6NTI6NTM6YTA6ZmI6YjE6NWM6OWE6OTE6OTI6MzY6MDA6ZDg6YTQ6NmY6Zjk6Ci0gICAg
ICAgICA5YzozNjoyMTpiMjpjMjo1ZToxNDoxMTpjYTo1NTplNzo4ODozMDo2MDo4ZDo4NjpkYTo2
NToKLSAgICAgICAgIDI2OmZmOmUyOjQ1OjM2OjJhOjA5OjNkOmE0OmJiOjM4OjYxOjRkOjU3OmU0
OmM5OmI2OjUwOgotICAgICAgICAgM2M6MDY6MmY6NmI6YmY6MDQ6MzQ6NDI6NTQ6ZGM6NTM6YjY6
NjE6YzU6NGU6NDA6MDA6ZDY6Ci0gICAgICAgICA1ZToxOToxNzozYTo1NDoyYzpjNToxNjo3YTo2
ZDo0YTo3MDo1Njo0NTpjZDo5OTo1YToyYToKLSAgICAgICAgIGQxOmE3OjRlOjM1Ojk3OjNkOmQ4
OmM5Ojk1OjgwOmFiOjE1OjQyOjg2OmY2OmEwOmE2OmMzOgotICAgICAgICAgMjE6YzE6OWE6MDc6
MzQ6NDk6YWQ6NjE6M2M6YmM6OTQ6YjI6MmQ6OTI6Zjc6NDQ6ODA6MDE6Ci0gICAgICAgICA1Zjoy
NzpiZDo4MzpmNTo1MToyMjozOTpjZDo5ODpiMTozOToyMzpiODpmNDo1YzowODoyMDoKLSAgICAg
ICAgIDllOmZlOmYxOjJkOjlhOmU5OjliOmM3OjVlOmI4OjMzOjhiOjE2Ojc3OjUyOjNkOmM5Ojdh
OgotICAgICAgICAgNDM6OWU6MjU6ZDA6Yzc6NWE6OTY6MDg6NTM6MWE6ZGM6NzU6NTM6NzU6NDQ6
NjI6MTg6N2M6Ci0gICAgICAgICBlZjpmYjo3Mzo1MgotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCi1NSUlNc2pDQ0M1cWdBd0lCQWdJREJiRklNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFa
QmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB4T1RFd01UUXhNelE1TWps
YUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGCi1BQU9DQVE4QU1JSUJDZ0tDQVFFQXEyVjFW
NWpqNWFxUC90c1k5ZVQ0SEdSaHhxUDI2SDRrRU40SmVpUzlWVjlSCi1xYldDRFlVNnRyRklYemZM
UW0vbkI4czJxVHZhRkpzS3NLZVZLZTdTZUNLZTdoTmY4TUVzVlhMd21zQnVmenplCi1ZZyt4OXNM
SmhLYVIxem5OeTVkUE9mNE0zclB0ZmpaL3FnRVpxZFd4Zjc0NlpRK2xYUjlxd1Z0N0Nkd3dLQVdx
Ci1GNVFESDNrUUJRNldxbXZ2WmNUS3pPVnBGQjUzVVByaERPcEdjbnI0Y3FkTmx3ejlMeThEUXJU
eXhnZEhwZ0FICi13dThhY0VSbFJrclJMRklYLzVuUGNqVFdpb0tnU2lOSjZLRlo3bE4wUm5TaHo5
ZkwzSTdRVWxkSldJSTM0UFd0Ci1PemdidFlZRUgzNGFINHRnY25YMmdxUVFETXhZWmJ0YnNyT21v
VlpDYVFJREFRQUJvNElKK2pDQ0NmWXdDUVlECi1WUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVLaGdM
Q1NKdUtOTGIvY0l0UUtiek9HSnV4OFV3SHdZRFZSMGpCQmd3Ci1Gb0FVUVVuL2pHWlFYNGVoQnFp
N3E0cmRjdzBPTnhvd0N3WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCi1DQ3NHQVFVRkJ3
TUJNSUlKaFFZRFZSMFJCSUlKZkRDQ0NYaUNFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ1Ci1i
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRlhkM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdkM2QzCi1NUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkM01pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpkM2QzCi1MbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbmQz
ZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUlhZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1MFpYTjBnaHAzZDNjdWQz
ZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhZDNkM01pNTNkM2N1Ci1kMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHAzCi1kM2N1
ZDNkM01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBa
bTl5Ci1iUzUwWlhOMGdodDNkM2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2Qz
ZHpJdWQzZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTWk1M2QzY3hMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDEzCi1kM2N1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wZ2g1M2QzY3hM
bmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIbmh1Ci1MUzFzZG1VdE5teGhaQzUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM0xuZDNkekV1Ym05MExYZGxZaTF3Ci1iR0YwWm05
eWJTNTBaWE4wZ2g1M2QzY3lMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2Qz
Ci1kekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTVM1
dWIzUXRkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1ZDNkM01TNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDCi1IM2QzZHpFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzU0NJbmh1TFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJM2h1Ci1MUzFzZG1VdE5t
eGhaQzUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpTjNkM2N5TG5odUxTMXNkbVV0Ci1O
bXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJamQzZDNNUzU0YmkwdGJIWmxMVFpzWVdRdWQy
VmlMWEJzCi1ZWFJtYjNKdExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wCi1naVo0YmkwdGJIWmxMVFpzWVdRdWQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1Ci1MUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N4TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSW5kM2QzTWk1NGJpMHRiSFpsTFRac1lXUXVibTkwCi1MWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzCi1ZWFJt
YjNKdExuUmxjM1NDSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1Ci1kR1Z6ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDCi1LM2h1TFMxc2RtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NMWGh1Ci1MUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0Ci1MVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlP
R0V1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNkM2N1Ci1lRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekV1Ci1lRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1
Ci1PR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0xuZDNkekl1Ci1lRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0xuaHVMUzF1Ci1PR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzCi1kbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0Ci1iamhxTm1Sek5UTnNkM2RyY25G
b2RqSTRZUzUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnakYzCi1kM2N1ZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1n
akozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1Ci1kR1Z6ZElJeWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXVi
M1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuZDNkekV1Ym05MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3lMbmh1TFMx
dU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
STJlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyCi1aUzAyYkdGa0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdqWjRiaTB0YkhabExUWnNZV1F1ZUc0dExXNDRhalprCi1jelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFzZG1VdE5teGha
QzU0Ci1iaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NPbmh1Ci1MUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxTMXNkbVV0Tm14
aFpDNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzCi1kMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBna1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1NGJpMHRiamhx
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1F3RFFZ
SktvWklodmNOQVFFTEJRQURnZ0VCQUsvQzZzeHFYa25nMjNJVUJUd2hvSXYvdHFseGd2ZGh6U01x
Ci1BR2FSckFHWll6Z1JJWVd5VjVJTFAzbG85ZGhaaTZkMEdlc0w1ejJHVG1iVTVpLy83V3g5bWw0
U1RyODUvL2ZRCi0rMUpUb1B1eFhKcVJrallBMktSditadzJJYkxDWGhRUnlsWG5pREJnalliYVpT
Yi80a1UyS2drOXBMczRZVTFYCi01TW0yVUR3R0wydS9CRFJDVk54VHRtSEZUa0FBMWw0WkZ6cFVM
TVVXZW0xS2NGWkZ6WmxhS3RHblRqV1hQZGpKCi1sWUNyRlVLRzlxQ213eUhCbWdjMFNhMWhQTHlV
c2kyUzkwU0FBVjhudllQMVVTSTV6Wml4T1NPNDlGd0lJSjcrCi04UzJhNlp2SFhyZ3ppeFozVWoz
SmVrT2VKZERIV3BZSVV4cmNkVk4xUkdJWWZPLzdjMUk9Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0t
LS0tCitDZXJ0aWZpY2F0ZToNCisgICAgRGF0YToNCisgICAgICAgIFZlcnNpb246IDMgKDB4MikN
CisgICAgICAgIFNlcmlhbCBOdW1iZXI6IDc4MzI3OSAoMHhiZjNhZikNCisgICAgICAgIFNpZ25h
dHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uDQorICAgICAgICBJc3N1ZXI6
IENOPXdlYi1wbGF0Zm9ybS10ZXN0cw0KKyAgICAgICAgVmFsaWRpdHkNCisgICAgICAgICAgICBO
b3QgQmVmb3JlOiBGZWIgMTggMjA6Mjk6NDcgMjAyMCBHTVQNCisgICAgICAgICAgICBOb3QgQWZ0
ZXIgOiBGZWIgMTUgMjA6Mjk6NDcgMjAzMCBHTVQNCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1w
bGF0Zm9ybS50ZXN0DQorICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoNCisgICAgICAg
ICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbg0KKyAgICAgICAgICAgICAg
ICBSU0EgUHVibGljLUtleTogKDIwNDggYml0KQ0KKyAgICAgICAgICAgICAgICBNb2R1bHVzOg0K
KyAgICAgICAgICAgICAgICAgICAgMDA6YmY6N2U6ZTY6MmE6NmM6OTI6ZDg6MmE6ODQ6ZjA6MTc6
MzY6YWU6OWQ6DQorICAgICAgICAgICAgICAgICAgICAyMjo3NzplYjo2OTphOTowMzpiMDo2ODo1
ODplMjowYzo4OTozMTo2NDoxODoNCisgICAgICAgICAgICAgICAgICAgIGFkOjZkOjY0OjA4OjI5
OmNmOjZhOmVmOmNjOjEwOmY5OmIzOjMzOjRjOjIyOg0KKyAgICAgICAgICAgICAgICAgICAgYjE6
ZGE6MjQ6NWY6YzM6MzE6ZjE6ZjE6N2I6NjA6OTc6YjI6Nzk6MDM6NWQ6DQorICAgICAgICAgICAg
ICAgICAgICA2NjpkYzpkMTpjYjo4MzplYzpkMzowYzplMTpkMjo5Yjo3ZDoxNjplMzo5ZToNCisg
ICAgICAgICAgICAgICAgICAgIGRjOjU4OmRkOjZjOjg5Ojc3Ojk4OmEzOjBjOmIyOjdjOjZlOmQw
OmJmOjNkOg0KKyAgICAgICAgICAgICAgICAgICAgMmM6MTk6YTE6Yzk6ODc6YzI6MGE6NGU6YTg6
MWU6MzQ6YTg6NmY6ZGE6MmQ6DQorICAgICAgICAgICAgICAgICAgICAwYTo0ZDpjMDpiNDo3MTow
Njo0OTo2MTplYToxYTpjMDo2NDpjMTpkMzpiMDoNCisgICAgICAgICAgICAgICAgICAgIDhmOmMw
OjNiOjgyOjAxOjI4OmM0OmU4OjMxOjhiOjA3OjRiOmI1OmZiOjYyOg0KKyAgICAgICAgICAgICAg
ICAgICAgMTc6NGM6MmE6MGQ6ZGU6YWI6Y2U6ZGM6ODA6Njg6YmY6YWI6MWQ6NDU6ZTI6DQorICAg
ICAgICAgICAgICAgICAgICBhNDphMjowMTo2YTowNTpkZjo0MTplNjpmZDpmODo5NDoyZTplMjo5
ZjphNDoNCisgICAgICAgICAgICAgICAgICAgIDAxOjU1OjdkOmViOmMxOjNkOjNlOjYxOjUwOmEw
OmVhOjM3OjJhOmQ1OmM3Og0KKyAgICAgICAgICAgICAgICAgICAgMTg6NGM6ZWM6ZjU6MGQ6Mzk6
NmQ6NTQ6ZDM6MDQ6MzE6NDY6ZDg6MTI6YTA6DQorICAgICAgICAgICAgICAgICAgICAwYTo4Mjo2
Mzo2ZDo4MjphNDo4ZTpkNjo4Mjo0Mzo2MTo5YjoxZDo5NDo5YToNCisgICAgICAgICAgICAgICAg
ICAgIGIwOjFkOjM1OjAyOmY4OmJiOjU1OjdmOjhjOmY3OjIxOmUyOjY1OjM2OjQyOg0KKyAgICAg
ICAgICAgICAgICAgICAgYTk6OGI6NTg6MTE6OTA6YTA6N2M6Mjg6NDU6ZDg6OWI6ODg6OTU6OWE6
MjY6DQorICAgICAgICAgICAgICAgICAgICBlOTpmZDo0NzowNzo4Mzo3MDo4YTo5ODoxYjowYjo0
ZTo4NDo4YzowNjpiNzoNCisgICAgICAgICAgICAgICAgICAgIGUyOmUzDQorICAgICAgICAgICAg
ICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkNCisgICAgICAgIFg1MDl2MyBleHRlbnNpb25z
Og0KKyAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogDQorICAgICAgICAgICAg
ICAgIENBOkZBTFNFDQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6
IA0KKyAgICAgICAgICAgICAgICBBRTpEODoyRjo5OTpCQTpCMTpFODowMzpEMjpBNTpDNToyQzow
RDpCQjoxNjo1Qzo5Qjo5RjpGNzowOA0KKyAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5
IElkZW50aWZpZXI6IA0KKyAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjowNzowNTpC
Qjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQw0KKw0KKyAgICAgICAgICAg
IFg1MDl2MyBLZXkgVXNhZ2U6IA0KKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVyZSwg
Tm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50DQorICAgICAgICAgICAgWDUwOXYzIEV4
dGVuZGVkIEtleSBVc2FnZTogDQorICAgICAgICAgICAgICAgIFRMUyBXZWIgU2VydmVyIEF1dGhl
bnRpY2F0aW9uDQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTog
DQorICAgICAgICAgICAgICAgIEROUzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDczLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNjIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDI0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc0LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzMud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A0My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODUud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUwLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A4NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDU0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDE0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3
NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTcu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI1Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzgud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDg5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNzcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AxNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDY4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wODIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjcubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A0MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ni5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDEzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzkubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU1Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wOTIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDMwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AyNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY0Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMjAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A1Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc0Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AxNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1
OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MC5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDcwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY1Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMjQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ni5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTkubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDM2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzkubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE3Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1s
dmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZs
YWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4t
LW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cy
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cyLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUt
NmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1
M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVz
dA0KKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbg0KKyAg
ICAgICAgIDg5OmE0OjQ0OjQzOmVmOjBmOmE2OjM2OjcyOjMxOjg3OjQ0Ojc1Ojg2OmI2OjViOjU4
OjJjOg0KKyAgICAgICAgIGNiOjFjOjBhOjJlOjM1OjMyOjgzOjgwOjcwOjcwOjFjOmI3OjRhOmQx
OjQ1OjQ0Ojc4OmM0Og0KKyAgICAgICAgIDE3OmQ4Ojc3OjM0OjRlOjQyOmQyOjcyOjIyOmZlOjBk
OjBhOmFlOmI4OjA2Ojk0OmQwOjZkOg0KKyAgICAgICAgIDdhOjIxOmQ4OmE0OjgzOjMzOjE3OmQz
OjA0OmE4OjkzOjZmOjY2OmYwOjMzOjE5OjA1OjA3Og0KKyAgICAgICAgIGI1OjM1OjgzOjI4OmE5
OjhmOjg1OjE4OjFhOjg2OmRmOmU4OmJlOjhkOmNmOjZhOjI0OmMxOg0KKyAgICAgICAgIDA4OjI2
OmRkOjAyOjk4OjFjOjAxOmQ4OjgxOjRhOmU0OjIwOjE0OjE5OjdjOmVmOjkxOmI1Og0KKyAgICAg
ICAgIDNlOmRhOjVhOmY2OjE0OjQ1OjE4OjdkOjQ1OjRiOjI4Ojc2OjMzOjU4OmM1OjhjOmM5OjJk
Og0KKyAgICAgICAgIGVmOjg5OjExOjcwOjdkOmViOjQ3OjllOjEyOmIwOjgxOjE5OmM4OjA3OmQ5
OmNjOjg3OmYxOg0KKyAgICAgICAgIDFiOmZlOmYwOjhmOmIyOmMzOmYxOmRhOmYwOjU1OmU1OjRh
OjliOmZmOjBkOjAxOjVmOjY1Og0KKyAgICAgICAgIDk1OjA3OjkyOmM2OjdiOjczOjk1OjU5OmFh
OjZiOmM2OjljOjAxOjRlOmEyOjJiOmVhOjc3Og0KKyAgICAgICAgIGQ0OmY0OmFiOmQ2OmU1Ojk0
OmViOjgxOjM3OjU1OjljOjkwOjNmOjczOjIzOjFkOjg0OmMyOg0KKyAgICAgICAgIDgyOjQyOjU2
OjlhOjEzOjY5OjMzOjQ4OmQ2OjBkOjBlOjU4OjgyOmFjOjkwOmVmOmIzOmEwOg0KKyAgICAgICAg
IDZjOmRlOjc5OmY2OjE3OmM1OmYwOjFlOmYzOjM3Ojc0OjAxOmYwOjQ3OjljOjc3OjljOmE3Og0K
KyAgICAgICAgIGFmOmUwOjYwOmNhOmQ3OjAyOmRkOjUwOjQ4OjY5OmIxOjFiOjgzOjg3OjVhOjdj
Ojc0OjQ0Og0KKyAgICAgICAgIGRhOmM1OmRlOmI4DQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tDQorTUlJZ2lEQ0NIM0NnQXdJQkFnSURDL092TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pB
WkJnTlZCQU1NRW5kbA0KK1lpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNREF5TVRneU1ESTVO
RGRhRncwek1EQXlNVFV5TURJNU5EZGENCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGDQorQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2
MzdtS215UzJDcUU4QmMycnAwaWQrdHBxUU93YUZqaURJa3haQml0YldRSQ0KK0tjOXE3OHdRK2JN
elRDS3gyaVJmd3pIeDhYdGdsN0o1QTExbTNOSExnK3pURE9IU20zMFc0NTdjV04xc2lYZVkNCitv
d3l5Zkc3UXZ6MHNHYUhKaDhJS1RxZ2VOS2h2MmkwS1RjQzBjUVpKWWVvYXdHVEIwN0NQd0R1Q0FT
akU2REdMDQorQjB1MSsySVhUQ29OM3F2TzNJQm92NnNkUmVLa29nRnFCZDlCNXYzNGxDN2luNlFC
VlgzcndUMCtZVkNnNmpjcQ0KKzFjY1lUT3oxRFRsdFZOTUVNVWJZRXFBS2dtTnRncVNPMW9KRFla
c2RsSnF3SFRVQytMdFZmNHozSWVKbE5rS3ANCitpMWdSa0tCOEtFWFltNGlWbWlicC9VY0hnM0NL
bUJzTFRvU01CcmZpNHdJREFRQUJvNElkMERDQ0hjd3dDUVlEDQorVlIwVEJBSXdBREFkQmdOVkhR
NEVGZ1FVcnRndm1icXg2QVBTcGNVc0Ric1dYSnVmOXdnd0h3WURWUjBqQkJndw0KK0ZvQVU5cm5h
RmdjRnUyL0pZekRHWjBETEE5TWVrT3d3Q3dZRFZSMFBCQVFEQWdYZ01CTUdBMVVkSlFRTU1Bb0cN
CitDQ3NHQVFVRkJ3TUJNSUlkV3dZRFZSMFJCSUlkVWpDQ0hVNkNFWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaFZ2DQorY0RJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdPUzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlWYjNBMw0KK0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjREV1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRlc5d015NTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5S
bGMzU0NGVzl3TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTBMbmRsWWkxdw0KK2JHRjBa
bTl5YlM1MFpYTjBnaFZ2Y0RndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0
TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTVOQzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBeE5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EwTUM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQXhOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM01p
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQXlNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU9DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpOaTUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0EzT1M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTJNUzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBME9DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4T1M1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBNaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
ME5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk5pNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOaTUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXpPQzUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBMk1pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
YjNBeU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TkM1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE9DNTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVN
UzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBek15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EyT1M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXpNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBek9TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0ExTWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBNeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBNE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQXlNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM01TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTROQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBPUzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0Ew
TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRH
VnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TkM1M1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJV2IzQTRNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQTVOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0E0Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTFOUzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdi
M0F4TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNOUzUzWldJdGNHeGgNCitkR1p2Y20w
dWRHVnpkSUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1Tmk1M1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZElJV2IzQTVNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU55
NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EyTXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJV2IzQTFNeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0F5TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTRNeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0EwTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpNaTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBM01DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTUM1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTVNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
M09DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXhNQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM055NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0ExT1M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0EyT0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVNQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0EyTG01dmRD
MTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVpiM0E1TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0EwTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVoNCitiM0EzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemRJSVpiM0F5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F4TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0ExTG01dmRDMTMN
CitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0F5DQorTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRBdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RRMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBNU5pNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d01qZ3Vi
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3pMbTV2DQorZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWIzQXpNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdO
VFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRH
WnYNCitjbTB1ZEdWemRJSWFiM0EyTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3
TVRndWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNExtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBMA0KK015NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d09Ea3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNEWXdMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOUzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJs
YzNTQ0dtOXdOek11Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dg0KK2RD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0MNCitHbTl3TWpZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZNUxtNXZk
QzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBek1pNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDR205d016Y3VibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEazRM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXgNCitPUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOell1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZj
REV6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzT1M1dWIzUXRkMlZpTFhCcw0K
K1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RnMkxtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBM055NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEVTFMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQTVNaTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORFF1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1DQorTkM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1
MA0KK1pYTjBnaHB2Y0RNd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhZDNkM01TNTNk
M2N1ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d01qVXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwdmNEWTBMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlN
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdOVEV1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRFF4TG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFi
M0F4TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRBdWJtOTBMWGRsDQorWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlh
YjNBeQ0KK01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05USXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNEYzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYWIzQTJOeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dtOXdPREF1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGcwTG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0F6TVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRNdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJekxtNXZkQzEzWldJdGNHeGhkR1p2DQor
Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UWXVi
bTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEWXpMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWIzQXoNCitPQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdO
VGd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRFl4TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0F4TkM1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NH
bTl3T1RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rjd0xtNXYNCitkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE1TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
DQorR205d01UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEWTFMbTV2ZEMxM1pX
SXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQTFNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdOamd1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGczTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzDQorT0M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RneUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXViM1F0ZDJWaUxYQnMNCitZWFJt
YjNKdExuUmxjM1NDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNESXhM
bTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTNNUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQw0KK0dtOXdPVGN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
RGc0TG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpZdWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHB2Y0RRNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMQ0KK09TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05EWXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCita
WE4wZ2hwdmNETTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpPUzV1YjNRdGQy
VmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dtOXdORGN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjREUzTG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzTlM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3T0RVdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09ERXVibTkwTFhkbA0KK1lpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2h0M2QzY3lMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMN
CitkekV1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTWk1M2QzY3lMbmRsWWkx
d2JHRjBabTl5DQorYlM1MFpYTjBnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDSFhkM2R5NTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5k
M2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5odUxTMXNkbVV0Tm14aFpDNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVkM2QzTVM1M2QzY3VibTkwDQorTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NI
bmQzZHk1M2QzY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZmQzZDNNUzUzZDNjeUxt
NXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlmZDNkM01TNTNkM2N4TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1DQorZEdWemRJSWZkM2QzTWk1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJZmQzZDNNaTUzZDNjeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlp
ZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlpZUc0dExX
eDJaUzAyYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlpDQorZDNkM0xuaHVMUzFz
ZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlqZDNkM01TNTRiaTB0YkhabA0KK0xU
WnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0TFd4MlpTMDJiR0ZrTG5k
bFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2lONGJpMHRiSFpsTFRac1lXUXVkM2QzTWk1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6DQorZElJamVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0puZDNkeTU0YmkwdA0KK2JIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaVo0YmkwdGJIWmxMVFpzWVdRdWQzZDMNCitMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJbmQzZDNNUzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsDQorWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaWQzZDNjeUxuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbQ0K
K2IzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnoNCitkSUluZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdpbDRiaTB0DQorYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJcmVHNHRMV3gyWlMwMg0KK2JHRmtMbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXoNCitiSGQzYTNKeGFIWXlPR0V1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpMTRiaTB0YmpocU5tUnpOVE5zDQorZDNkcmNu
Rm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGQzZHk1NGJpMHRiamhxTm1S
eg0KK05UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZDNkM01pNTRi
aTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
dWQzZDNNUzU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSXVlRzR0TFc0NGFqWmtjelV6YkhkMw0KK2EzSnhhSFl5T0dFdWQzZDNNUzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExXNDRhalprY3pVemJIZDMNCithM0p4YUhZeU9HRXVk
M2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdmVHNHRMV3gyWlMwMmJHRmtMbmh1DQorTFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGh1TFMxdU9HbzJaSE0x
TTJ4Mw0KK2QydHljV2gyTWpoaExuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01Y
ZDNkeTU0YmkwdGJqaHENCitObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDTW5kM2R6RXVlRzR0DQorTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnako0YmkwdA0KK2JqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXkNCitkM2QzTWk1NGJp
MHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQor
YzNTQ01uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6SXVibTkwTFhkbFlpMXdi
R0YwWm05eQ0KK2JTNTBaWE4wZ2paNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzU0Ymkw
dGJIWmxMVFpzWVdRdWQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ05uaHVMUzFzZG1VdE5teGha
QzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvDQorZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSTZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXVPR28yWkhNMQ0KK00yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJNmVHNHRMVzQ0YWpaa2N6VXoNCitiSGQzYTNK
eGFIWXlPR0V1ZUc0dExXeDJaUzAyYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUpC
DQorZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVlRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5T0dFdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ1JYaHVMUzF1T0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBTkJna3Foa2lHDQorOXcwQkFRc0ZBQU9DQVFFQWlhUkVRKzhQ
cGpaeU1ZZEVkWWEyVzFnc3l4d0tMalV5ZzRCd2NCeTNTdEZGUkhqRQ0KK0Y5aDNORTVDMG5JaS9n
MEtycmdHbE5CdGVpSFlwSU16RjlNRXFKTnZadkF6R1FVSHRUV0RLS21QaFJnYWh0L28NCit2bzNQ
YWlUQkNDYmRBcGdjQWRpQlN1UWdGQmw4NzVHMVB0cGE5aFJGR0gxRlN5aDJNMWpGak1rdDc0a1Jj
SDNyDQorUjU0U3NJRVp5QWZaeklmeEcvN3dqN0xEOGRyd1ZlVkttLzhOQVY5bGxRZVN4bnR6bFZt
cWE4YWNBVTZpSytwMw0KKzFQU3IxdVdVNjRFM1ZaeVFQM01qSFlUQ2drSldtaE5wTTBqV0RRNVln
cXlRNzdPZ2JONTU5aGZGOEI3ek4zUUINCis4RWVjZDV5bnIrQmd5dGNDM1ZCSWFiRWJnNGRhZkhS
RTJzWGV1QT09DQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZm
ZWN0ZWRfdGVzdHMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKaW5kZXggNzgxMWJhOTU5MTdi
YjNjYzZiNWQzMmVjYmU5ZTg5NTI5NzYxYWRjMy4uNDk0ZmYxZWZhMTljYzAyMTMzMzcwOTQ4Mzgz
ZTVmYjIyMTQ0ZDRmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9h
ZmZlY3RlZF90ZXN0cy55bWwKQEAgLTE1LDcgKzE1LDcgQEAgc3RlcHM6CiAtIHRlbXBsYXRlOiBp
bnN0YWxsX3NhZmFyaS55bWwKIC0gdGVtcGxhdGU6IHVwZGF0ZV9ob3N0cy55bWwKIC0gdGVtcGxh
dGU6IHVwZGF0ZV9tYW5pZmVzdC55bWwKLS0gc2NyaXB0OiBub19wcm94eT0nKicgLi93cHQgcnVu
IC0teWVzIC0tbm8tcGF1c2UgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9u
LXVuZXhwZWN0ZWQgLS1hZmZlY3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0t
bG9nLXdwdHJlcG9ydCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9y
dC5qc29uIC0tbG9nLXdwdHNjcmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3Rv
cnkpL3dwdF9zY3JlZW5zaG90LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKKy0gc2NyaXB0
OiAuL3dwdCBydW4gLS15ZXMgLS1uby1wYXVzZSAtLW5vLWZhaWwtb24tdW5leHBlY3RlZCAtLW5v
LXJlc3RhcnQtb24tdW5leHBlY3RlZCAtLWFmZmVjdGVkICR7eyBwYXJhbWV0ZXJzLmFmZmVjdGVk
UmFuZ2UgfX0gLS1sb2ctd3B0cmVwb3J0ICQoQnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5
KS93cHRfcmVwb3J0Lmpzb24gLS1sb2ctd3B0c2NyZWVuc2hvdCAkKEJ1aWxkLkFydGlmYWN0U3Rh
Z2luZ0RpcmVjdG9yeSkvd3B0X3NjcmVlbnNob3QudHh0IC0tY2hhbm5lbCBwcmV2aWV3IHNhZmFy
aQogICBkaXNwbGF5TmFtZTogJ1J1biB0ZXN0cycKIC0gdGFzazogUHVibGlzaEJ1aWxkQXJ0aWZh
Y3RzQDEKICAgZGlzcGxheU5hbWU6ICdQdWJsaXNoIHJlc3VsdHMnCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Nv
bS5hcHBsZS5TYWZhcmkucGxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMjA4MDk3MmM5ZjYzNDEwMDYyZWU4ZDMzZDBlZDAyODZh
ZjhmMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9j
b20uYXBwbGUuU2FmYXJpLnBsaXN0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJ
QyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFRE
cy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0Pgot
CTxrZXk+QWxsb3dSZW1vdGVBdXRvbWF0aW9uPC9rZXk+Ci0JPHRydWUvPgotPC9kaWN0PgotPC9w
bGlzdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2Nocm9t
ZS55bWwKaW5kZXggNmJkNWMyMzM0YWQ0ZTNlNGQ1ZDZmYWFmODAwNWY0ZTBiNDRjZjFmZS4uZmQ2
NTBlODBhYWFkMzA5YzhlOTgzMjc0ZDJiODIzYmJhOTFiMWZiMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2Nocm9tZS55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2Nocm9tZS55bWwKQEAgLTEsNiArMSw5IEBA
CiBzdGVwczoKLSMgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBIb21lYnJldy9ob21lYnJldy1jYXNr
LXZlcnNpb25zL2dvb2dsZS1jaHJvbWUtZGV2YCwKLSMgYnV0IHRoZSByYXcgVVJMIGlzIHVzZWQg
dG8gYnlwYXNzIGNhY2hpbmcuCi0tIHNjcmlwdDogSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBi
cmV3IGNhc2sgaW5zdGFsbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vSG9tZWJy
ZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9tYXN0ZXIvQ2Fza3MvZ29vZ2xlLWNocm9tZS1kZXYu
cmIKKyMgVGhlIGNvbmZsaWN0aW5nIGdvb2dsZS1jaHJvbWUgYW5kIGNocm9tZWRyaXZlciBjYXNr
cyBhcmUgZmlyc3QgdW5pbnN0YWxsZWQuCisjIFRoZSByYXcgZ29vZ2xlLWNocm9tZS1kZXYgY2Fz
ayBVUkwgaXMgdXNlZCB0byBieXBhc3MgY2FjaGluZy4KKy0gc2NyaXB0OiB8CisgICAgSE9NRUJS
RVdfTk9fQVVUT19VUERBVEU9MSBicmV3IGNhc2sgdW5pbnN0YWxsIGdvb2dsZS1jaHJvbWUgfHwg
dHJ1ZQorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIHVuaW5zdGFsbCBj
aHJvbWVkcml2ZXIgfHwgdHJ1ZQorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBj
YXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hv
bWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCiAg
IGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBDaHJvbWUgRGV2JwogICBjb25kaXRpb246IGFuZChzdWNj
ZWVkZWQoKSwgZXEodmFyaWFibGVzWydBZ2VudC5PUyddLCAnRGFyd2luJykpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfZWRnZS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwKaW5kZXggZTRjNDI1YWI3
YTBmMDMyMThkOTIyZTczMTBlYTlkOGZkZTBmNTFhYS4uMjk3YjZlNjBiMjlmM2E5YmJkMDBiM2Vl
MDBiNzA1NjM1MTM4ZjJjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9lZGdlLnltbApAQCAtNCw2ICs0LDI2IEBAIHBhcmFtZXRlcnM6CiAjIFNob3VsZCBt
YXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9jaHJvbWUu
aHRtbAogIyBKdXN0IHJlcGxhY2UgY2hyb21lIHdpdGggZWRnZWNocm9taXVtCiBzdGVwczoKKy0g
JHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3N0YWJsZScpIH19OgorICAtIHBvd2Vyc2hl
bGw6IHwKKyAgICAgICRlZGdlSW5zdGFsbGVyTmFtZSA9ICdNaWNyb3NvZnRFZGdlU2V0dXAuZXhl
JworICAgICAgIyBMaW5rIHRvIFN0YWJsZSBjaGFubmVsIGluc3RhbGxlcgorICAgICAgU3RhcnQt
Qml0c1RyYW5zZmVyIC1Tb3VyY2UgJ2h0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP2xp
bmtpZD0yMTA4ODM0JkNoYW5uZWw9U3RhYmxlJmxhbmd1YWdlPWVuJyAtRGVzdGluYXRpb24gTWlj
cm9zb2Z0RWRnZVNldHVwLmV4ZQorICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAkZWRnZUluc3Rh
bGxlck5hbWUpKSB7CisgICAgICAgIFRocm93ICJGYWlsZWQgdG8gZG93bmxvYWQgRWRnZSBpbnN0
YWxsZXIgdG8gJGVkZ2VJbnN0YWxsZXJOYW1lLiIKKyAgICAgIH0KKyAgICAgIGNtZCAvYyBTVEFS
VCAvV0FJVCAkZWRnZUluc3RhbGxlck5hbWUgL3NpbGVudCAvaW5zdGFsbAorICAgICAgJGVkZ2VQ
YXRoID0gIiRlbnY6c3lzdGVtZHJpdmVcUHJvZ3JhbSBGaWxlcyAoeDg2KVxNaWNyb3NvZnRcRWRn
ZVxBcHBsaWNhdGlvbiIKKyAgICAgIGlmIChUZXN0LVBhdGggJGVkZ2VQYXRoKSB7CisgICAgICAg
IFdyaXRlLUhvc3QgIiMjdnNvW3Rhc2sucHJlcGVuZHBhdGhdJGVkZ2VQYXRoIgorICAgICAgICBX
cml0ZS1Ib3N0ICJFZGdlIFN0YWJsZSBpbnN0YWxsZWQgYXQgJGVkZ2VQYXRoLiIKKyAgICAgICAg
KEdldC1JdGVtIC1QYXRoICIkZWRnZVBhdGhcbXNlZGdlLmV4ZSIpLlZlcnNpb25JbmZvIHwgRm9y
bWF0LUxpc3QKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIENvcHktSXRlbSAtUGF0aCAiJGVudjp0
ZW1wXCplZGdlKi5sb2ciIC1EZXN0aW5hdGlvbiAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVj
dG9yeSkgIC1Gb3JjZQorICAgICAgICBUaHJvdyAiRmFpbGVkIHRvIGluc3RhbGwgRWRnZSBhdCAk
ZWRnZVBhdGgiCisgICAgICB9CisgICAgZGlzcGxheU5hbWU6ICdJbnN0YWxsIEVkZ2UgU3RhYmxl
JworCiAtICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWwsICdjYW5hcnknKSB9fToKICAgLSBw
b3dlcnNoZWxsOiB8CiAgICAgICAkZWRnZUluc3RhbGxlck5hbWUgPSAnTWljcm9zb2Z0RWRnZVNl
dHVwLmV4ZScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3Nh
ZmFyaS55bWwKaW5kZXggYTg2NDE0NjVhYzhlYWU3MDA4NmJkMGNlZDRhODBkM2EyZGEzNTExMy4u
ZDA2NjBkMTUyYmJkZmM4OWYzMDhiZmMwNDhjZDIyMjFlOWVhNzUyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9p
bnN0YWxsX3NhZmFyaS55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFyaS55bWwKQEAgLTMsNiArMyw5
IEBAIHBhcmFtZXRlcnM6CiAKICMgU2hvdWxkIG1hdGNoIGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRl
c3RzLm9yZy9ydW5uaW5nLXRlc3RzL3NhZmFyaS5odG1sCiBzdGVwczoKKy0gc2NyaXB0OiBkZWZh
dWx0cyB3cml0ZSBjb20uYXBwbGUuV2ViRHJpdmVyIERpYWdub3N0aWNzRW5hYmxlZCAxCisgIGRp
c3BsYXlOYW1lOiAnRW5hYmxlIHNhZmFyaWRyaXZlciBkaWFnbm9zdGljcycKKyAgY29uZGl0aW9u
OiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFnbm9zZSddLCB0cnVlKQogLSAke3sgaWYg
ZXEocGFyYW1ldGVycy5jaGFubmVsLCAncHJldmlldycpIH19OgogICAtIHNjcmlwdDogfAogICAg
ICAgSE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3IGNhc2sgaW5zdGFsbCB0b29scy9jaS9h
enVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCkBAIC0xMiw5ICsxNSw2IEBAIHN0ZXBz
OgogICAgIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3Jwog
LSAke3sgaWYgZXEocGFyYW1ldGVycy5jaGFubmVsLCAnc3RhYmxlJykgfX06CiAgIC0gc2NyaXB0
OiB8Ci0gICAgICAjIFdvcmthcm91bmQgZm9yIGBzdWRvIHNhZmFyZHJpdmVyIC0tZW5hYmxlYCBu
b3Qgd29ya2luZzoKLSAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzE5ODQ1Ci0gICAgICBta2RpciAtcCB+L0xpYnJhcnkvV2ViRHJpdmVyLwot
ICAgICAgY3AgdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdCB+L0xpYnJhcnkv
V2ViRHJpdmVyLworICAgICAgc3VkbyBzYWZhcmlkcml2ZXIgLS1lbmFibGUKICAgICAgIGRlZmF1
bHRzIHdyaXRlIGNvbS5hcHBsZS5TYWZhcmkgV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseSAxCiAgICAgZGlzcGxheU5hbWU6ICdDb25maWd1cmUgU2FmYXJpJwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAppbmRleCBjODc5
NTM0NWY2YmNmNGE5NDNlMDdhNDU5OTQ3ZTcxOGFkNmEwYWZjLi4xOGQxODc5ZTk3MTYxMzUzMmZh
YzU2NzNkOWE4MDRhY2MxYmM4NjczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL3BpcF9pbnN0YWxsLnltbApAQCAtMiwxNCArMiw1IEBAIHBhcmFtZXRlcnM6CiAgIHBhY2th
Z2VzOiAnJwogCiBzdGVwczoKLS0gc2NyaXB0OiB8Ci0gICAgIyBgc3VkbyBwaXAgaW5zdGFsbGAg
aXMgbm90IHVzZWQgYmVjYXVzZSBzb21lIHBhY2thZ2VzIChlLmcuIHRveCkgZGVwZW5kIG9uCi0g
ICAgIyBzeXN0ZW0gcGFja2FnZXMgKGUuZy4gc2V0dXB0b29scykgd2hpY2ggY2Fubm90IGJlIHVw
Z3JhZGVkIGR1ZSB0byBTeXN0ZW0KLSAgICAjIEludGVncml0eSBQcm90ZWN0aW9uLCBzZWUgaHR0
cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzMzMDA0OTIwLgotICAgIHBpcCBpbnN0YWxsIC0tdXNl
ciAke3sgcGFyYW1ldGVycy5wYWNrYWdlcyB9fQotICAgIGVjaG8gIiMjdnNvW3Rhc2sucHJlcGVu
ZHBhdGhdJEhPTUUvTGlicmFyeS9QeXRob24vMi43L2JpbiIKLSAgZGlzcGxheU5hbWU6ICdJbnN0
YWxsIFB5dGhvbiBwYWNrYWdlcyAobWFjT1MpJwotICBjb25kaXRpb246IGFuZChzdWNjZWVkZWQo
KSwgZXEodmFyaWFibGVzWydBZ2VudC5PUyddLCAnRGFyd2luJykpCiAtIHNjcmlwdDogcGlwIC0t
ZGlzYWJsZS1waXAtdmVyc2lvbi1jaGVjayBpbnN0YWxsIC0tdXBncmFkZSAke3sgcGFyYW1ldGVy
cy5wYWNrYWdlcyB9fQotICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgUHl0aG9uIHBhY2thZ2VzIChX
aW5kb3dzKScKLSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdl
bnQuT1MnXSwgJ1dpbmRvd3NfTlQnKSkKKyAgZGlzcGxheU5hbWU6ICdJbnN0YWxsIFB5dGhvbiBw
YWNrYWdlcycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dz
LnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDkzOTdhOTFhZDdjYTQyNDg2NGM1MzI2YjVmZTdiNGEzNjg1YTQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS9wdWJsaXNoX2xvZ3MueW1sCkBAIC0wLDAgKzEsNyBAQAor
c3RlcHM6CistIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCisgIGRpc3BsYXlOYW1lOiAn
UHVibGlzaCBzYWZhcmlkcml2ZXIgbG9ncycKKyAgaW5wdXRzOgorICAgIHBhdGh0b1B1Ymxpc2g6
IC9Vc2Vycy9ydW5uZXIvTGlicmFyeS9Mb2dzL2NvbS5hcHBsZS5XZWJEcml2ZXIvCisgICAgYXJ0
aWZhY3ROYW1lOiBzYWZhcmlkcml2ZXItbG9ncworICBjb25kaXRpb246IGVxKHZhcmlhYmxlc1sn
c2FmYXJpZHJpdmVyX2RpYWdub3NlJ10sIHRydWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcucmIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcucmIKaW5kZXgg
YjMyNzM5YmU1OGE3MDI4ZDVmZjRhMmRlOWI1NmRmYjdlYTA5OTgyYi4uZWFlMDM0NzRhNDlmZjdi
ZWNlMzJkYWY0ODIzOTAwMjVjM2NlOWUyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9n
eS1wcmV2aWV3LnJiCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgpAQCAtMSwx
MCArMSwxMCBAQAogY2FzayAnc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldycgZG8KICAgaWYgTWFj
T1MudmVyc2lvbiA8PSA6bW9qYXZlCi0gICAgdmVyc2lvbiAnOTYsMDYxLTQ0MDU2LTIwMTkxMTIw
LWFjN2JiMTk2LTI3MjQtNDg0MC1iY2U5LTZjODNlY2RiZmIyYycKLSAgICBzaGEyNTYgJ2U4MGNl
YWNkZmY3ZTc1MjE4MzY1OTkzZTVhZjFjODFjOWJjYzQ3ODUyOTFhZTAwYWJiYTNkMTRhYzU2MTQz
MTcnCisgICAgdmVyc2lvbiAnMTA2LDAwMS0wNTk2Ni0yMDIwMDUxMy04NjU3MWJlNi04NzhlLTQx
MWItYTViOS02NWE5NzE1NzNmYWUnCisgICAgc2hhMjU2ICc4NTE4Yzg5MTdhOTE3MmFlYjc1ZGVl
YjYxMDYwZDM1MzIyOTc2MGZkNTRkYzg1YmQzOGEwODk3Y2MxZDEyMTA1JwogICBlbHNlCi0gICAg
dmVyc2lvbiAnOTYsMDYxLTQ3NzE4LTIwMTkxMTIwLTAyYmM3NTY5LWVlNmItNGMyOC05ZWM0LTBj
ZWVkYTNjM2MzYScKLSAgICBzaGEyNTYgJ2JiZmNkYzM2YmY5YjU1YWVjNTgzOGQ2NmUzNGM0MWRk
M2Y2YTY0MDkxNDA2YmMzOGY0NWM4ODgzNjBmMTkxZmUnCisgICAgdmVyc2lvbiAnMTA2LDAwMS0w
NTg5MC0yMDIwMDUxMy0zMjFhNjliNC1kZTU4LTQ0MGUtODE4Mi04YWMwM2Q2NWY2Y2UnCisgICAg
c2hhMjU2ICdmM2MwNzNkOWI2MGZmNmQxMWY4MmFiYmM2Y2MxMzFlNTkxM2U2ZDBmMmExMWYwOTY4
YWU3N2RiMWI1MWUxZTM1JwogICBlbmQKIAogICB1cmwgImh0dHBzOi8vc2VjdXJlLWFwcGxkbmxk
LmFwcGxlLmNvbS9TVFAvI3t2ZXJzaW9uLmFmdGVyX2NvbW1hfS9TYWZhcmlUZWNobm9sb2d5UHJl
dmlldy5kbWciCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0Lnlt
bAppbmRleCBiYzkzMDgzNmQzZDdiNjZiYzYzYWMyMzkyYjUwNWZkOTlhZjNlMTFkLi4xMmVkNjZh
OWEwMjA2ZjY4NjZmYjEyMGUyNjRiZTM5ZGM3ZTI5MmU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRl
c3QueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKQEAgLTEsNyArMSw3IEBACiBwYXJhbWV0ZXJz
OgogICBkaXJlY3Rvcnk6ICcnCiAgIHRveGVudjogJ0FMTCcKLQorICAKIHN0ZXBzOgogLSB0ZW1w
bGF0ZTogcGlwX2luc3RhbGwueW1sCiAgIHBhcmFtZXRlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZwppbmRleCA0NGY1NDMxOWMyYjlmMDI0ZWE5MjVh
NmMzZWM3Y2UyMGVlNGQ1MGQyLi5jZTcwMTJmNzMzOTlhNjI4NmY3N2Q3MzE2MjE0MDE3NGIwOWMz
MjdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cK
QEAgLTE4LDcgKzE4LDYgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbAog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvY2hlY2tvdXQueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9jbGVhbnVwX3dpbjEwLnltbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFy
aS5wbGlzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvZnlpX2hvb2sueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2NlcnRzLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFs
bF9jaHJvbWUueW1sCkBAIC0yOCw2ICsyNyw3IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxs
X3B5dGhvbi55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9wdWJsaXNoX2xvZ3MueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9z
eXN0ZW1faW5mby55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2RpZmYu
c2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2NpX2J1aWx0X2RpZmYuc2gKaW5kZXggNzA5Y2MyYWE3ZTY4NjdmNTQ4ZDRlZmRkNjJkNzRhYmMx
ODVlNjU3Yi4uZjhhZTNlNjFiZjc1NmQ5N2M3OGUyZDk1ODkxMjFiN2Q2MDEwNjZmYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9jaV9idWlsdF9kaWZmLnNoCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaApAQCAtMTIsMTQgKzEyLDE0IEBA
IG1haW4oKSB7CiAKICAgICAjwqBFeGNsdWRlIHRlc3RzIHRoYXQgcmVseSBvbiBmb250IHJlbmRl
cmluZwogICAgIGV4Y2x1ZGVkPSgKLSAgICAgICAgJzJkY29udGV4dC9kcmF3aW5nLXRleHQtdG8t
dGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5iYXNpYy5wbmcnCi0gICAgICAgICcyZGNvbnRl
eHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
bGFyZ2UucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCi0gICAgICAgICcyZGNvbnRleHQvZHJhd2luZy10
ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LnN0cm9rZS5iYXNpYy5wbmcnCi0gICAgICAg
ICdvZmZzY3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwuYmFzaWMucG5nJwotICAg
ICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxh
cmdlLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuZmls
bC5ydGwucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5z
dHJva2UuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRl
eHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5iYXNpYy5wbmcnCisgICAgICAgICdo
dG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJh
dy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL2VsZW1lbnQv
ZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAg
ICAgICAgJ2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQu
dGV4dC5kcmF3LnN0cm9rZS5iYXNpYy5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9vZmZzY3Jl
ZW4vdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5iYXNpYy5wbmcnCisgICAgICAgICdodG1sL2NhbnZh
cy9vZmZzY3JlZW4vdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCisg
ICAgICAgICdodG1sL2NhbnZhcy9vZmZzY3JlZW4vdGV4dC8yZC50ZXh0LmRyYXcuZmlsbC5ydGwu
cG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LnN0
cm9rZS5iYXNpYy5wbmcnCiAgICAgKQogCiAgICAgLi91cGRhdGUtYnVpbHQtdGVzdHMuc2gKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1
Y3R1cmUuc2gKaW5kZXggOGRiMDg3OTRhZGUyNmJlZjg5OWYwNWM0ODkwYzJiODhlNjhkZjI5Mi4u
ODkyNjdiNTBjYjY0MzJjNDk1ZDQyOGExODBjNTk2NTliNWM1YTYwYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRy
dW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gK
QEAgLTUsMzEgKzUsMjUgQEAgU0NSSVBUX0RJUj0kKGNkICQoZGlybmFtZSAiJDAiKSAmJiBwd2Qg
LVApCiBXUFRfUk9PVD0kU0NSSVBUX0RJUi8uLi8uLgogY2QgJFdQVF9ST09UCiAKLWFkZF93cHRf
aG9zdHMoKSB7Ci0gICAgLi93cHQgbWFrZS1ob3N0cy1maWxlIHwgc3VkbyB0ZWUgLWEgL2V0Yy9o
b3N0cwotfQotCiB0ZXN0X2luZnJhc3RydWN0dXJlKCkgewotICAgIGxvY2FsIEFSR1M9IiI7Ci0g
ICAgaWYgWyAkUFJPRFVDVCA9PSAiZmlyZWZveCIgXTsgdGhlbgotICAgICAgICBBUkdTPSItLWlu
c3RhbGwtYnJvd3NlciIKLSAgICBlbHNlCi0gICAgICAgIEFSR1M9JDEKLSAgICBmaQotICAgIFRF
Uk09ZHVtYiAuL3dwdCBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01B
TklGRVNULmpzb24gLS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxs
LWZvbnRzICRBUkdTICRQUk9EVUNUIGluZnJhc3RydWN0dXJlLworICAgIFBZM19GTEFHPSIkMiIK
KyAgICBURVJNPWR1bWIgLi93cHQgJFBZM19GTEFHIHJ1biAtLWxvZy1tYWNoIC0gLS15ZXMgLS1t
YW5pZmVzdCB+L21ldGEvTUFOSUZFU1QuanNvbiAtLW1ldGFkYXRhIGluZnJhc3RydWN0dXJlL21l
dGFkYXRhLyAtLWluc3RhbGwtZm9udHMgJDEgJFBST0RVQ1QgaW5mcmFzdHJ1Y3R1cmUvCiB9CiAK
IG1haW4oKSB7Ci0gICAgUFJPRFVDVFM9KCAiZmlyZWZveCIgImNocm9tZSIgKQorICAgIGlmIFtb
ICQjIC1lcSAxICYmICIkMSIgPSAiLS1weTMiIF1dOyB0aGVuCisgICAgICAgIFBST0RVQ1RTPSgg
ImNocm9tZSIgKQorICAgIGVsc2UKKyAgICAgICAgUFJPRFVDVFM9KCAiZmlyZWZveCIgImNocm9t
ZSIgKQorICAgIGZpCiAgICAgLi93cHQgbWFuaWZlc3QgLS1yZWJ1aWxkIC1wIH4vbWV0YS9NQU5J
RkVTVC5qc29uCiAgICAgZm9yIFBST0RVQ1QgaW4gIiR7UFJPRFVDVFNbQF19IjsgZG8KICAgICAg
ICAgaWYgW1sgIiRQUk9EVUNUIiA9PSAiY2hyb21lIiBdXTsgdGhlbgotICAgICAgICAgICAgYWRk
X3dwdF9ob3N0cwotICAgICAgICAgICAgdGVzdF9pbmZyYXN0cnVjdHVyZSAiLS1iaW5hcnk9JCh3
aGljaCBnb29nbGUtY2hyb21lLXVuc3RhYmxlKSAtLWNoYW5uZWwgZGV2IgorICAgICAgICAgICAg
dGVzdF9pbmZyYXN0cnVjdHVyZSAiLS1iaW5hcnk9JCh3aGljaCBnb29nbGUtY2hyb21lLXVuc3Rh
YmxlKSAtLWNoYW5uZWwgZGV2IiAiJDEiCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3Rf
aW5mcmFzdHJ1Y3R1cmUKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5
PX4vYnVpbGQvZmlyZWZveC9maXJlZm94IgogICAgICAgICBmaQogICAgIGRvbmUKIH0KIAotbWFp
bgorbWFpbiAkMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5CmluZGV4IDNkODA5ZWZhMzdjY2ZmMmMy
NTgzNDNiNjQ3OTE3NjJmYzUwN2E5MGYuLjc2MjRlYjBkNTE2ZmMxNmE1NzI0YTY3MTRkMjc2N2Jj
NGUxMjMyNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvam9icy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKQEAgLTMzLDE1ICszMywxNiBAQCBq
b2JfcGF0aF9tYXAgPSB7CiAgICAgIndwdHJ1bm5lcl91bml0dGVzdCI6IFsidG9vbHMvIl0sCiAg
ICAgImJ1aWxkX2NzcyI6IFsiY3NzLyJdLAogICAgICJ1cGRhdGVfYnVpbHQiOiBbInVwZGF0ZS1i
dWlsdC10ZXN0c1xcLnNoIiwKLSAgICAgICAgICAgICAgICAgICAgICIyZGNvbnRleHQvIiwKICAg
ICAgICAgICAgICAgICAgICAgICJpbmZyYXN0cnVjdHVyZS8iLAogICAgICAgICAgICAgICAgICAg
ICAgImh0bWwvIiwKLSAgICAgICAgICAgICAgICAgICAgICJvZmZzY3JlZW4tY2FudmFzLyIsCiAg
ICAgICAgICAgICAgICAgICAgICAibWltZXNuaWZmLyIsCiAgICAgICAgICAgICAgICAgICAgICAi
Y3NzL2Nzcy11aS8iLAogICAgICAgICAgICAgICAgICAgICAgIldlYklETCJdLAogICAgICJ3cHRf
aW50ZWdyYXRpb24iOiBbInRvb2xzLyJdLAotICAgICJ3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUi
OiBbImluZnJhc3RydWN0dXJlLyIsICJ0b29scy8iLCAicmVzb3VyY2VzLyJdLAorICAgICJ3cHRy
dW5uZXJfaW5mcmFzdHJ1Y3R1cmUiOiBbImluZnJhc3RydWN0dXJlLyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidG9vbHMvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZXNvdXJjZXMvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3
ZWJkcml2ZXIvdGVzdHMvc3VwcG9ydCJdLAogfQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZlc3RfYnVpbGQu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L21hbmlmZXN0X2J1aWxkLnB5CmluZGV4IDFlMzg4ZGZhNzQxOWEyMWIyMDUwM2IzMDc1YzM2YmMx
MTEzNmRkN2QuLjIwZjk2ZDlhM2VlZWM2Mzk5NzRjYTQ2MWQ5ZDQ1ZjkxYzk2YzAxNzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvbWFuaWZlc3RfYnVpbGQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQpAQCAtODQsOCArODQsNyBA
QCBkZWYgcmVxdWVzdCh1cmwsIGRlc2MsIG1ldGhvZD1Ob25lLCBkYXRhPU5vbmUsIGpzb25fZGF0
YT1Ob25lLCBwYXJhbXM9Tm9uZSwgaGVhZAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHJlc3Au
anNvbigpCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiJXMg
ZmFpbGVkOiBSZXR1cm5lZCBkYXRhIHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUKLSAgICAgICAg
ICAgICAgICAgICAgIChkZXNjLCByZXNwLnN0YXR1c19jb2RlKSkKKyAgICAgICAgbG9nZ2VyLmVy
cm9yKCIlcyBmYWlsZWQ6IFJldHVybmVkIGRhdGEgd2FzIG5vdCBKU09OIFJlc3BvbnNlOiIgJSBk
ZXNjKQogICAgICAgICBsb2dnZXIuZXJyb3IocmVzcC50ZXh0KQogCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJl
dmlldy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvcHJfcHJldmlldy5weQppbmRleCBiYTc3NzQ0NDZlMDgzNmUzMTljMGQwNzFkNjI2MmU1
NjJmYjE0NmUxLi5iYTU5OTdmNjhhNjE1ZjQ5MzIyYWMwMDlhMTVhZWJmMGE1YTA3MWYzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CkBAIC0xMjMsNiArMTIzLDI3IEBAIGNs
YXNzIFByb2plY3Qob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gZGF0YVsnaXRlbXMnXQogCisg
ICAgQGd1YXJkKCdjb3JlJykKKyAgICBkZWYgcHVsbF9yZXF1ZXN0X2lzX2Zyb21fZm9yayhzZWxm
LCBwdWxsX3JlcXVlc3QpOgorICAgICAgICBwcl9udW1iZXIgPSBwdWxsX3JlcXVlc3RbJ251bWJl
ciddCisgICAgICAgIHVybCA9ICd7fS9yZXBvcy97fS9wdWxscy97fScuZm9ybWF0KAorICAgICAg
ICAgICAgc2VsZi5faG9zdCwgc2VsZi5fZ2l0aHViX3Byb2plY3QsIHByX251bWJlcgorICAgICAg
ICApCisKKyAgICAgICAgbG9nZ2VyLmluZm8oJ0NoZWNraW5nIGlmIHB1bGwgcmVxdWVzdCAlcyBp
cyBmcm9tIGEgZm9yaycsIHByX251bWJlcikKKworICAgICAgICBkYXRhID0gZ2hfcmVxdWVzdCgn
R0VUJywgdXJsKQorCisgICAgICAgIHJlcG9fbmFtZSA9IGRhdGFbJ2hlYWQnXVsncmVwbyddWydm
dWxsX25hbWUnXQorICAgICAgICBpc19mb3JrID0gcmVwb19uYW1lICE9IHNlbGYuX2dpdGh1Yl9w
cm9qZWN0CisKKyAgICAgICAgbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAnUHVsbCByZXF1ZXN0
ICVzIGlzIGZyb20gXCclc1wnLiBJcyBhIGZvcms6ICVzJywKKyAgICAgICAgICAgIHByX251bWJl
ciwgcmVwb19uYW1lLCBpc19mb3JrCisgICAgICAgICkKKworICAgICAgICByZXR1cm4gaXNfZm9y
aworCiAgICAgQGd1YXJkKCdjb3JlJykKICAgICBkZWYgY3JlYXRlX3JlZihzZWxmLCByZWZzcGVj
LCByZXZpc2lvbik6CiAgICAgICAgIHVybCA9ICd7fS9yZXBvcy97fS9naXQvcmVmcycuZm9ybWF0
KHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1Yl9wcm9qZWN0KQpAQCAtMTgwLDkgKzIwMSw4IEBAIGNs
YXNzIFByb2plY3Qob2JqZWN0KToKICAgICBAZ3VhcmQoJ2NvcmUnKQogICAgIGRlZiB1cGRhdGVf
ZGVwbG95bWVudChzZWxmLCB0YXJnZXQsIGRlcGxveW1lbnQsIHN0YXRlLCBkZXNjcmlwdGlvbj0n
Jyk6CiAgICAgICAgIGlmIHN0YXRlIGluICgncGVuZGluZycsICdzdWNjZXNzJyk6Ci0gICAgICAg
ICAgICBlbnZpcm9ubWVudF91cmwgPSAne30vc3VibWlzc2lvbnMve30nLmZvcm1hdCgKLSAgICAg
ICAgICAgICAgICB0YXJnZXQsIGRlcGxveW1lbnRbJ2Vudmlyb25tZW50J10KLSAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHByX251bWJlciA9IGRlcGxveW1lbnRbJ2Vudmlyb25tZW50J11bbGVu
KERFUExPWU1FTlRfUFJFRklYKTpdCisgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwgPSAne30v
e30nLmZvcm1hdCh0YXJnZXQsIHByX251bWJlcikKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IGVudmlyb25tZW50X3VybCA9IE5vbmUKICAgICAgICAgdXJsID0gJ3t9L3JlcG9zL3t9L2RlcGxv
eW1lbnRzL3t9L3N0YXR1c2VzJy5mb3JtYXQoCkBAIC0yNDYsMTMgKzI2NiwxNiBAQCBkZWYgaGFz
X21pcnJvcmluZ19sYWJlbChwdWxsX3JlcXVlc3QpOgogCiAgICAgcmV0dXJuIEZhbHNlCiAKLWRl
ZiBzaG91bGRfYmVfbWlycm9yZWQocHVsbF9yZXF1ZXN0KToKK2RlZiBzaG91bGRfYmVfbWlycm9y
ZWQocHJvamVjdCwgcHVsbF9yZXF1ZXN0KToKICAgICByZXR1cm4gKAotICAgICAgICBpc19vcGVu
KHB1bGxfcmVxdWVzdCkgYW5kCi0gICAgICAgIHB1bGxfcmVxdWVzdFsndXNlciddWydsb2dpbidd
IG5vdCBpbiBBVVRPTUFUSU9OX0dJVEhVQl9VU0VSUyBhbmQgKAotICAgICAgICAgICAgcHVsbF9y
ZXF1ZXN0WydhdXRob3JfYXNzb2NpYXRpb24nXSBpbiBUUlVTVEVEX0FVVEhPUl9BU1NPQ0lBVElP
TlMgb3IKLSAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1ZXN0KQotICAg
ICAgICApCisgICAgICAgIGlzX29wZW4ocHVsbF9yZXF1ZXN0KSBhbmQgKAorICAgICAgICAgICAg
aGFzX21pcnJvcmluZ19sYWJlbChwdWxsX3JlcXVlc3QpIG9yICgKKyAgICAgICAgICAgICAgICBw
dWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElPTl9HSVRIVUJfVVNF
UlMgYW5kCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0WydhdXRob3JfYXNzb2NpYXRpb24n
XSBpbiBUUlVTVEVEX0FVVEhPUl9BU1NPQ0lBVElPTlMKKyAgICAgICAgICAgICkKKyAgICAgICAg
KSBhbmQKKyAgICAgICAgIyBRdWVyeSB0aGlzIGxhc3QgYXMgaXQgcmVxdWlyZXMgYW5vdGhlciBB
UEkgY2FsbCB0byB2ZXJpZnkKKyAgICAgICAgbm90IHByb2plY3QucHVsbF9yZXF1ZXN0X2lzX2Zy
b21fZm9yayhwdWxsX3JlcXVlc3QpCiAgICAgKQogCiBkZWYgaXNfZGVwbG95ZWQoaG9zdCwgZGVw
bG95bWVudCk6CkBAIC0yOTEsNyArMzE0LDcgQEAgZGVmIHN5bmNocm9uaXplKGhvc3QsIGdpdGh1
Yl9wcm9qZWN0LCB3aW5kb3cpOgogICAgICAgICByZXZpc2lvbl90cnVzdGVkID0gcmVtb3RlLmdl
dF9yZXZpc2lvbihyZWZzcGVjX3RydXN0ZWQpCiAgICAgICAgIHJldmlzaW9uX29wZW4gPSByZW1v
dGUuZ2V0X3JldmlzaW9uKHJlZnNwZWNfb3BlbikKIAotICAgICAgICBpZiBzaG91bGRfYmVfbWly
cm9yZWQocHVsbF9yZXF1ZXN0KToKKyAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2pl
Y3QsIHB1bGxfcmVxdWVzdCk6CiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUHVsbCBSZXF1ZXN0
IHNob3VsZCBiZSBtaXJyb3JlZCcpCiAKICAgICAgICAgICAgIGlmIHJldmlzaW9uX3RydXN0ZWQg
aXMgTm9uZToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9ydW5fdGMucHkKaW5kZXggZjkwODZhMzFiZDkzYmFm
NzI4MTlmYzQ1MGY5MGEyOTBkNjU2NzRmZC4uYTVhOGNhN2RiMjlhYjQ4NGZlMzk3NDc1ZjliNWNm
YzQxMmQ2NTE3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9ydW5fdGMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9ydW5fdGMucHkKQEAgLTM2LDExICszNiwx
NSBAQCB0aGUgc2VyaWFsaXphdGlvbiBvZiBhIEdpdEh1YiBldmVudCBwYXlsb2FkLgogIiIiCiAK
IGltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGZubWF0Y2gKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MK
IGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgdGFyZmlsZQogaW1wb3J0IHRl
bXBmaWxlCitpbXBvcnQgdGltZQoraW1wb3J0IHppcGZpbGUKIGZyb20gc29ja2V0IGltcG9ydCBl
cnJvciBhcyBTb2NrZXRFcnJvciAgIyBOT1FBOiBOODEyCiBpbXBvcnQgZXJybm8KIHRyeToKQEAg
LTE0NywxMyArMTUxLDE0IEBAIGRlZiBpbnN0YWxsX2Nocm9tZShjaGFubmVsKToKICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigiVW5yZWNvZ25pemVkIHJlbGVhc2UgY2hhbm5lbDogJXMiICUgY2hh
bm5lbCkKIAogICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oIi90bXAiLCBkZWJfYXJjaGl2ZSkKLSAg
ICByZXNwID0gdXJsb3BlbigiaHR0cHM6Ly9kbC5nb29nbGUuY29tL2xpbnV4L2RpcmVjdC8lcyIg
JSBkZWJfYXJjaGl2ZSkKKyAgICBkZWJfdXJsID0gImh0dHBzOi8vZGwuZ29vZ2xlLmNvbS9saW51
eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUKICAgICB3aXRoIG9wZW4oZGVzdCwgInciKSBhcyBm
OgotICAgICAgICBmLndyaXRlKHJlc3AucmVhZCgpKQorICAgICAgICBkb3dubG9hZF91cmxfdG9f
ZGVzY3JpcHRvcihmLCBkZWJfdXJsKQogCiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0IiwgIi1x
cXkiLCAidXBkYXRlIl0pCiAgICAgcnVuKFsic3VkbyIsICJnZGViaSIsICItcW4iLCAiL3RtcC8l
cyIgJSBkZWJfYXJjaGl2ZV0pCiAKKwogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fYXB0X3Jl
cG9zaXRvcnkoY2hhbm5lbCk6CiAgICAgIyBDb25maWd1cmUgd2Via2l0Z3RrLm9yZy9kZWJpYW4g
cmVwb3NpdG9yeSBmb3IgJGNoYW5uZWwgYW5kIHBpbiBpdCB3aXRoIG1heGltdW0gcHJpb3JpdHkK
ICAgICBydW4oWyJzdWRvIiwgImFwdC1rZXkiLCAiYWR2IiwgIi0tZmV0Y2gta2V5cyIsICJodHRw
czovL3dlYmtpdGd0ay5vcmcvZGViaWFuL2FwdC5rZXkiXSkKQEAgLTE2OSwxNSArMTc0LDE2IEBA
IGRlZiBpbnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwpOgogICAg
IHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgIi10IiwgImJpb25pYy13cHQtd2Via2l0
LXVwZGF0ZXMiLCAiaW5zdGFsbCIsICJ3ZWJraXQyZ3RrLWRyaXZlciJdKQogCiAKLSMgRG93bmxv
YWQgYW4gVVJMIGluIGNodW5rcyBhbmQgc2F2ZXMgaXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IgKHRy
dW5jYXRpbmcgaXQpCi0jIEl0IGRvZXNuJ3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IsIGJ1dCBmbHVz
aGVzIGl0IG9uIHN1Y2Nlc3MuCi0jIEl0IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2Yg
RUNPTk5SRVNFVCB1cCB0byBtYXhfcmV0cmllcy4KLWRlZiBkb3dubG9hZF91cmxfdG9fZGVzY3Jp
cHRvcihmZCwgdXJsLCBtYXhfcmV0cmllcz0zKToKLSAgICBkb3dubG9hZF9zdWNjZWVkID0gRmFs
c2UKLSAgICBpZiBtYXhfcmV0cmllcyA8IDA6Ci0gICAgICAgIG1heF9yZXRyaWVzID0gMAotICAg
IGZvciBjdXJyZW50X3JldHJ5IGluIHJhbmdlKG1heF9yZXRyaWVzKzEpOgorZGVmIGRvd25sb2Fk
X3VybF90b19kZXNjcmlwdG9yKGZkLCB1cmwsIG1heF9yZXRyaWVzPTUpOgorICAgICIiIkRvd25s
b2FkIGFuIFVSTCBpbiBjaHVua3MgYW5kIHNhdmVzIGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0
cnVuY2F0aW5nIGl0KQorICAgIEl0IGRvZXNuJ3QgY2xvc2UgdGhlIGRlc2NyaXB0b3IsIGJ1dCBm
bHVzaGVzIGl0IG9uIHN1Y2Nlc3MuCisgICAgSXQgcmV0cmllcyB0aGUgZG93bmxvYWQgaW4gY2Fz
ZSBvZiBFQ09OTlJFU0VUIHVwIHRvIG1heF9yZXRyaWVzLiIiIgorICAgIGlmIG1heF9yZXRyaWVz
IDwgMToKKyAgICAgICAgbWF4X3JldHJpZXMgPSAxCisgICAgd2FpdCA9IDIKKyAgICBmb3IgY3Vy
cmVudF9yZXRyeSBpbiByYW5nZSgxLCBtYXhfcmV0cmllcysxKToKICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgcHJpbnQoIklORk86IERvd25sb2FkaW5nICVzIFRyeSAlZC8lZCIgJSAodXJsLCBj
dXJyZW50X3JldHJ5LCBtYXhfcmV0cmllcykpCiAgICAgICAgICAgICByZXNwID0gdXJsb3Blbih1
cmwpCiAgICAgICAgICAgICAjIFdlIG1heSBjb21lIGhlcmUgaW4gYSByZXRyeSwgZW5zdXJlIHRv
IHRydW5jYXRlIGZkIGJlZm9yZSBzdGFydCB3cml0aW5nLgogICAgICAgICAgICAgZmQuc2Vlaygw
KQpAQCAtMTg4LDIyICsxOTQsMjMgQEAgZGVmIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGZk
LCB1cmwsIG1heF9yZXRyaWVzPTMpOgogICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBEb3du
bG9hZCBmaW5pc2hlZAogICAgICAgICAgICAgICAgIGZkLndyaXRlKGNodW5rKQogICAgICAgICAg
ICAgZmQuZmx1c2goKQotICAgICAgICAgICAgZG93bmxvYWRfc3VjY2VlZCA9IFRydWUKLSAgICAg
ICAgICAgIGJyZWFrICAjIFN1Y2VzcworICAgICAgICAgICAgIyBTdWNjZXNzCisgICAgICAgICAg
ICByZXR1cm4KICAgICAgICAgZXhjZXB0IFNvY2tldEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBp
ZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVTRVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgICMg
VW5rbm93biBlcnJvcgotICAgICAgICAgICAgaWYgY3VycmVudF9yZXRyeSA8IG1heF9yZXRyaWVz
OgotICAgICAgICAgICAgICAgIHByaW50KCJFUlJPUjogQ29ubmVjdGlvbiByZXNldCBieSBwZWVy
LiBSZXRyeWluZyAuLi4iKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIFJldHJ5Ci0gICAg
cmV0dXJuIGRvd25sb2FkX3N1Y2NlZWQKKyAgICAgICAgICAgIGlmIGN1cnJlbnRfcmV0cnkgPCBt
YXhfcmV0cmllcyBhbmQgZS5lcnJubyA9PSBlcnJuby5FQ09OTlJFU0VUOgorICAgICAgICAgICAg
ICAgICMgUmV0cnkKKyAgICAgICAgICAgICAgICBwcmludCgiRVJST1I6IENvbm5lY3Rpb24gcmVz
ZXQgYnkgcGVlci4gUmV0cnlpbmcgYWZ0ZXIgJWRzLi4uIiAlIHdhaXQpCisgICAgICAgICAgICAg
ICAgdGltZS5zbGVlcCh3YWl0KQorICAgICAgICAgICAgICAgIHdhaXQgKj0gMgorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE1heGltdW0gcmV0cmllcyBvciB1bmtub3duIGVy
cm9yCisgICAgICAgICAgICAgICAgcmFpc2UKIAogCiBkZWYgaW5zdGFsbF93ZWJraXRndGtfZnJv
bV90YXJiYWxsX2J1bmRsZShjaGFubmVsKToKICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9y
YXJ5RmlsZShzdWZmaXg9Ii50YXIueHoiKSBhcyB0ZW1wX3RhcmJhbGw6CiAgICAgICAgIGRvd25s
b2FkX3VybCA9ICJodHRwczovL3dlYmtpdGd0ay5vcmcvYnVpbHQtcHJvZHVjdHMvbmlnaHRseS93
ZWJraXRndGstbmlnaHRseS1idWlsZC1sYXN0LnRhci54eiIKLSAgICAgICAgaWYgbm90IGRvd25s
b2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRfdXJsKToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3QgZG93bmxvYWQgJXMuIEFib3J0aW5nIiAl
IGRvd25sb2FkX3VybCkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IodGVtcF90
YXJiYWxsLCBkb3dubG9hZF91cmwpCiAgICAgICAgIHJ1bihbInN1ZG8iLCAidGFyIiwgInhmYSIs
IHRlbXBfdGFyYmFsbC5uYW1lLCAiLUMiLCAiLyJdKQogICAgICMgSW5zdGFsbCBkZXBlbmRlbmNp
ZXMKICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFxeSIsICJ1cGRhdGUiXSkKQEAgLTIx
OCw2ICsyMjUsNyBAQCBkZWYgaW5zdGFsbF93ZWJraXRndGsoY2hhbm5lbCk6CiAgICAgZWxzZToK
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5yZWNvZ25pemVkIHJlbGVhc2UgY2hhbm5lbDog
JXMiICUgY2hhbm5lbCkKIAorCiBkZWYgc3RhcnRfeHZmYigpOgogICAgIHN0YXJ0KFsic3VkbyIs
ICJYdmZiIiwgb3MuZW52aXJvblsiRElTUExBWSJdLCAiLXNjcmVlbiIsICIwIiwKICAgICAgICAg
ICAgIiVzeCVzeCVzIiAlIChvcy5lbnZpcm9uWyJTQ1JFRU5fV0lEVEgiXSwKQEAgLTI0Niw3ICsy
NTQsNjcgQEAgZGVmIHNldF92YXJpYWJsZXMoZXZlbnQpOgogICAgICAgICBvcy5lbnZpcm9uWyJH
SVRIVUJfQlJBTkNIIl0gPSBicmFuY2gKIAogCitkZWYgdGFza191cmwodGFza19pZCk6CisgICAg
cm9vdF91cmwgPSBvcy5lbnZpcm9uWydUQVNLQ0xVU1RFUl9ST09UX1VSTCddCisgICAgaWYgcm9v
dF91cmwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKKyAgICAgICAgcXVldWVfYmFzZSA9
ICJodHRwczovL3F1ZXVlLnRhc2tjbHVzdGVyLm5ldC92MS90YXNrIgorICAgIGVsc2U6CisgICAg
ICAgIHF1ZXVlX2Jhc2UgPSByb290X3VybCArICIvYXBpL3F1ZXVlL3YxL3Rhc2siCisKKyAgICBy
ZXR1cm4gIiVzLyVzIiAlIChxdWV1ZV9iYXNlLCB0YXNrX2lkKQorCisKK2RlZiBkb3dubG9hZF9h
cnRpZmFjdHMoYXJ0aWZhY3RzKToKKyAgICBhcnRpZmFjdF9saXN0X2J5X3Rhc2sgPSB7fQorICAg
IGZvciBhcnRpZmFjdCBpbiBhcnRpZmFjdHM6CisgICAgICAgIGJhc2VfdXJsID0gdGFza191cmwo
YXJ0aWZhY3RbInRhc2siXSkKKyAgICAgICAgaWYgYXJ0aWZhY3RbInRhc2siXSBub3QgaW4gYXJ0
aWZhY3RfbGlzdF9ieV90YXNrOgorICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlG
aWxlKCkgYXMgZjoKKyAgICAgICAgICAgICAgICBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihm
LCBiYXNlX3VybCArICIvYXJ0aWZhY3RzIikKKyAgICAgICAgICAgICAgICBmLnNlZWsoMCkKKyAg
ICAgICAgICAgICAgICBhcnRpZmFjdHNfZGF0YSA9IGpzb24ubG9hZChmKQorICAgICAgICAgICAg
YXJ0aWZhY3RfbGlzdF9ieV90YXNrW2FydGlmYWN0WyJ0YXNrIl1dID0gYXJ0aWZhY3RzX2RhdGEK
KworICAgICAgICBhcnRpZmFjdHNfZGF0YSA9IGFydGlmYWN0X2xpc3RfYnlfdGFza1thcnRpZmFj
dFsidGFzayJdXQorICAgICAgICBwcmludCgiREVCVUc6IEdvdCBhcnRpZmFjdHMgJXMiICUgYXJ0
aWZhY3RzX2RhdGEpCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIGNhbmRpZGF0
ZSBpbiBhcnRpZmFjdHNfZGF0YVsiYXJ0aWZhY3RzIl06CisgICAgICAgICAgICBwcmludCgiREVC
VUc6IGNhbmRpZGF0ZTogJXMgZ2xvYjogJXMiICUgKGNhbmRpZGF0ZVsibmFtZSJdLCBhcnRpZmFj
dFsiZ2xvYiJdKSkKKyAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChjYW5kaWRhdGVbIm5h
bWUiXSwgYXJ0aWZhY3RbImdsb2IiXSk6CisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisg
ICAgICAgICAgICAgICAgcHJpbnQoIklORk86IEZldGNoaW5nIGFyaXRmYWN0ICVzIGZyb20gdGFz
ayAlcyIgJSAoY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJ0YXNrIl0pKQorICAgICAgICAg
ICAgICAgIGZpbGVfbmFtZSA9IGNhbmRpZGF0ZVsibmFtZSJdLnJzcGxpdCgiLyIsIDEpWzFdCisg
ICAgICAgICAgICAgICAgdXJsID0gYmFzZV91cmwgKyAiL2FydGlmYWN0cy8iICsgY2FuZGlkYXRl
WyJuYW1lIl0KKyAgICAgICAgICAgICAgICBkZXN0X3BhdGggPSBvcy5wYXRoLmV4cGFuZHVzZXIo
b3MucGF0aC5qb2luKCJ+IiwgYXJ0aWZhY3RbImRlc3QiXSwgZmlsZV9uYW1lKSkKKyAgICAgICAg
ICAgICAgICBkZXN0X2RpciA9IG9zLnBhdGguZGlybmFtZShkZXN0X3BhdGgpCisgICAgICAgICAg
ICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RfZGlyKToKKyAgICAgICAgICAgICAgICAg
ICAgb3MubWFrZWRpcnMoZGVzdF9kaXIpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRlc3Rf
cGF0aCwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rl
c2NyaXB0b3IoZiwgdXJsKQorCisgICAgICAgICAgICAgICAgaWYgYXJ0aWZhY3QuZ2V0KCJleHRy
YWN0Iik6CisgICAgICAgICAgICAgICAgICAgIHVucGFjayhkZXN0X3BhdGgpCisgICAgICAgIGlm
IG5vdCBmb3VuZDoKKyAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBObyBhcnRpZmFjdCBmb3Vu
ZCBtYXRjaGluZyAlcyBpbiB0YXNrICVzIiAlIChhcnRpZmFjdFsiZ2xvYiJdLCBhcnRpZmFjdFsi
dGFzayJdKSkKKworCitkZWYgdW5wYWNrKHBhdGgpOgorICAgIGRlc3QgPSBvcy5wYXRoLmRpcm5h
bWUocGF0aCkKKyAgICBpZiB0YXJmaWxlLmlzX3RhcmZpbGUocGF0aCk6CisgICAgICAgIHJ1bihb
InRhciIsICIteGYiLCBwYXRoXSwgY3dkPW9zLnBhdGguZGlybmFtZShwYXRoKSkKKyAgICBlbGlm
IHppcGZpbGUuaXNfemlwZmlsZShwYXRoKToKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUo
cGF0aCkgYXMgYXJjaGl2ZToKKyAgICAgICAgICAgIGFyY2hpdmUuZXh0cmFjdGFsbChkZXN0KQor
ICAgIGVsc2U6CisgICAgICAgIHByaW50KCJFUlJPUjogRG9uJ3Qga25vdyBob3cgdG8gZXh0cmFj
dCAlcyIgJSBwYXRoKQorICAgICAgICByYWlzZSBFeGNlcHRpb24KKworCiBkZWYgc2V0dXBfZW52
aXJvbm1lbnQoYXJncyk6CisgICAgaWYgIlRBU0tfQVJUSUZBQ1RTIiBpbiBvcy5lbnZpcm9uOgor
ICAgICAgICBhcnRpZmFjdHMgPSBqc29uLmxvYWRzKG9zLmVudmlyb25bIlRBU0tfQVJUSUZBQ1RT
Il0pCisgICAgICAgIGRvd25sb2FkX2FydGlmYWN0cyhhcnRpZmFjdHMpCisKICAgICBpZiBhcmdz
Lmhvc3RzX2ZpbGU6CiAgICAgICAgIG1ha2VfaG9zdHNfZmlsZSgpCiAKQEAgLTM2NCwxNiArNDMy
LDEwIEBAIGRlZiBmZXRjaF9ldmVudF9kYXRhKCk6CiAgICAgICAgICMgRm9yIGV4YW1wbGUgdW5k
ZXIgbG9jYWwgdGVzdGluZwogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgcm9vdF91cmwgPSBv
cy5lbnZpcm9uWydUQVNLQ0xVU1RFUl9ST09UX1VSTCddCi0gICAgaWYgcm9vdF91cmwgPT0gJ2h0
dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAgICAgICAgcXVldWVfYmFzZSA9ICJodHRwczovL3F1
ZXVlLnRhc2tjbHVzdGVyLm5ldC92MS90YXNrIgotICAgIGVsc2U6Ci0gICAgICAgIHF1ZXVlX2Jh
c2UgPSByb290X3VybCArICIvYXBpL3F1ZXVlL3YxL3Rhc2siCi0KLQotICAgIHJlc3AgPSB1cmxv
cGVuKCIlcy8lcyIgJSAocXVldWVfYmFzZSwgdGFza19pZCkpCi0KLSAgICB0YXNrX2RhdGEgPSBq
c29uLmxvYWQocmVzcCkKKyAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKSBhcyBmOgor
ICAgICAgICBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmLCB0YXNrX3VybCh0YXNrX2lkKSkK
KyAgICAgICAgZi5zZWVrKDApCisgICAgICAgIHRhc2tfZGF0YSA9IGpzb24ubG9hZChmKQogICAg
IGV2ZW50X2RhdGEgPSB0YXNrX2RhdGEuZ2V0KCJleHRyYSIsIHt9KS5nZXQoImdpdGh1Yl9ldmVu
dCIpCiAgICAgaWYgZXZlbnRfZGF0YSBpcyBub3QgTm9uZToKICAgICAgICAgcmV0dXJuIGpzb24u
bG9hZHMoZXZlbnRfZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90YXNrY2x1c3Rlci1y
dW4ucHkKaW5kZXggYWM1YWJjMTJiMWYxN2QyZmM5M2M2YWM1NjM2YmZkNmZlN2NhZmEwNC4uZDhl
NDJjY2VhMjExMjY5NGM2ZDNiOGIxYWE2Y2E3MDM0ZWEyMjI4MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90YXNrY2x1c3Rl
ci1ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS90YXNrY2x1c3Rlci1ydW4ucHkKQEAgLTksMTAgKzksMTggQEAgaW1wb3J0IHN1
YnByb2Nlc3MKIGltcG9ydCBzeXMKIAogYnJvd3Nlcl9zcGVjaWZpY19hcmdzID0gewotICAgICJm
aXJlZm94IjogWyItLWluc3RhbGwtYnJvd3NlciJdLAogICAgICJzZXJ2byI6IFsiLS1pbnN0YWxs
LWJyb3dzZXIiLCAiLS1wcm9jZXNzZXM9MTIiXQogfQogCitkZWYgZ2V0X2Jyb3dzZXJfYXJncyhw
cm9kdWN0KToKKyAgICBpZiBwcm9kdWN0ID09ICJmaXJlZm94IjoKKyAgICAgICAgbG9jYWxfYmlu
YXJ5ID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIsICJidWlsZCIsICJmaXJl
Zm94IiwgImZpcmVmb3giKSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxfYmluYXJ5
KToKKyAgICAgICAgICAgIHJldHVybiBbIi0tYmluYXJ5PSVzIiAlIGxvY2FsX2JpbmFyeV0KKyAg
ICAgICAgcHJpbnQoIldBUk5JTkc6IExvY2FsIGZpcmVmb3ggYmluYXJ5IG5vdCBmb3VuZCIpCisg
ICAgICAgIHJldHVybiBbIi0taW5zdGFsbC1icm93c2VyIl0KKyAgICByZXR1cm4gYnJvd3Nlcl9z
cGVjaWZpY19hcmdzLmdldChwcm9kdWN0LCBbXSkKKwogCiBkZWYgZmluZF93cHRyZXBvcnQoYXJn
cyk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpAQCAtNjYsNyArNzQs
NyBAQCBkZWYgbWFpbihwcm9kdWN0LCBjb21taXRfcmFuZ2UsIHdwdF9hcmdzKToKICAgICAgICAg
Ii0tbm8taGVhZGxlc3MiLAogICAgICAgICAiLS12ZXJpZnktbG9nLWZ1bGwiCiAgICAgXQotICAg
IHdwdF9hcmdzICs9IGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQocHJvZHVjdCwgW10pCisgICAg
d3B0X2FyZ3MgKz0gZ2V0X2Jyb3dzZXJfYXJncyhwcm9kdWN0KQogCiAgICAgIyBIYWNrIHRvIHJ1
biBzZXJ2byB3aXRoIG9uZSBwcm9jZXNzIG9ubHkgZm9yIHdkc3BlYwogICAgIGlmIHByb2R1Y3Qg
PT0gInNlcnZvIiBhbmQgIi0tdGVzdC10eXBlPXdkc3BlYyIgaW4gd3B0X2FyZ3M6CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3RjL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvUkVBRE1FLm1kCmluZGV4IDExZjM2N2Y5ODZmOTdmZGJmZTQwZjA5YjJh
ZTQxMTRmMjYzOTE2ZjcuLjc4NWM4MmNjYTM5Y2RmYjE4NmZkYTI0MTAzYTVhNmZkNjQ5YmVlNWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvUkVBRE1FLm1kCkBAIC00MCw2ICs0MCwxNCBAQCB0
b3AtbGV2ZWwgcHJvcGVydGllczoKICogYG5hbWVgOiBPcHRpb25hbCBTdHJpbmcuIE5hbWUgdG8g
dXNlIGZvciB0aGUgdGFzayBvdmVycmlkaW5nIHRoZQogICBwcm9wZXJ0eSBuYW1lLiBUaGlzIGlz
IHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3aXRoIHN1YnN0aXR1dGlvbnMKICAgZGVzY3JpYmVkIGJl
bG93LgorKiBgZG93bmxvYWQtYXJ0aWZhY3RzYDogT3B0aW9uYWwgT2JqZWN0LiBBbiBhcnRpZmFj
dCB0byBkb3dubG9hZCBmcm9tCisgIGEgdGFzayB0aGF0IHRoaXMgdGFzayBkZXBlbmRzIG9uLiBU
aGlzIGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgIC0gYHRhc2tgIC0gTmFtZSBvZiB0
aGUgdGFzayBwcm9kdWNpbmcgdGhlIGFydGlmYWN0CisgIC0gYGdsb2JgIC0gQSBnbG9iIHBhdHRl
cm4gZm9yIHRoZSBmaWxlbmFtZSBvZiB0aGUgYXJ0aWZhY3QKKyAgLSBgZGVzdGAgLSBBIGRpcmVj
dG9yeSByZWx0aXZlIHRvIHRoZSBob21lIGRpcmVjdG9yeSBpbiB3aGljaCB0byBwbGFjZQorICAg
ICAgICAgICAgIHRoZSBhcnRpZmFjdAorICAtIGBleHRyYWN0YCAtIE9wdGlvbmFsLiBBIGJvb2xl
YW4gaW5kaWNhdGluZyB3aGV0aGVyIGFuIGFyY2hpdmUgYXJ0aWZhY3QKKyAgICAgICAgICAgICAg
ICBzaG91bGQgYmUgZXh0cmFjdGVkIGluLXBsYWNlLgogCiAjIyBUYXNrIEV4cGFuc2lvbnMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kZWNpc2lvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKaW5kZXggMGM5MzViOTNmOGVlODdm
NjZkYWRlZmRkZDNhMTE2MTYwZWQ5ZGQzZi4uZjhmMTg2Zjc0NGQ4MDgyNzkwYThjM2JlYzg2NTRm
YTE1Y2E3ZjNlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lzaW9uLnB5CkBAIC0x
OTksNiArMTk5LDcgQEAgZGVmIGJ1aWxkX2Z1bGxfY29tbWFuZChldmVudCwgdGFzayk6CiB+L3N0
YXJ0LnNoIFwKICAgJShyZXBvX3VybClzIFwKICAgJShmZXRjaF9yZWYpczsKK3N1ZG8gYWRkLWFw
dC1yZXBvc2l0b3J5IHBwYTpkZWFkc25ha2VzL3BwYQogJShpbnN0YWxsX3N0cilzCiBjZCB3ZWIt
cGxhdGZvcm0tdGVzdHM7CiAuL3Rvb2xzL2NpL3J1bl90Yy5weSAlKG9wdGlvbnNfc3RyKXMgLS0g
JSh0YXNrX2NtZClzOwpAQCAtMjEzLDcgKzIxNCw3IEBAIGRlZiBnZXRfb3duZXIoZXZlbnQpOgog
ICAgIHJldHVybiAid2ViLXBsYXRmb3JtLXRlc3RzQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbSIK
IAogCi1kZWYgY3JlYXRlX3RjX3Rhc2soZXZlbnQsIHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5k
c19vbl9pZHMpOgorZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBfaWQs
IGRlcGVuZHNfb25faWRzLCBlbnZfZXh0cmE9Tm9uZSk6CiAgICAgY29tbWFuZCA9IGJ1aWxkX2Z1
bGxfY29tbWFuZChldmVudCwgdGFzaykKICAgICB0YXNrX2lkID0gdGFza2NsdXN0ZXIuc2x1Z0lk
KCkKICAgICB0YXNrX2RhdGEgPSB7CkBAIC0yNDAsMTIgKzI0MSwyNCBAQCBkZWYgY3JlYXRlX3Rj
X3Rhc2soZXZlbnQsIHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpOgogICAgICAg
ICAgICAgImdpdGh1Yl9ldmVudCI6IGpzb24uZHVtcHMoZXZlbnQpCiAgICAgICAgIH0KICAgICB9
CisgICAgaWYgZW52X2V4dHJhOgorICAgICAgICB0YXNrX2RhdGFbInBheWxvYWQiXVsiZW52Il0u
dXBkYXRlKGVudl9leHRyYSkKICAgICBpZiBkZXBlbmRzX29uX2lkczoKICAgICAgICAgdGFza19k
YXRhWyJkZXBlbmRlbmNpZXMiXSA9IGRlcGVuZHNfb25faWRzCiAgICAgICAgIHRhc2tfZGF0YVsi
cmVxdWlyZXMiXSA9ICJhbGwtY29tcGxldGVkIgogICAgIHJldHVybiB0YXNrX2lkLCB0YXNrX2Rh
dGEKIAogCitkZWYgZ2V0X2FydGlmYWN0X2RhdGEoYXJ0aWZhY3QsIHRhc2tfaWRfbWFwKToKKyAg
ICB0YXNrX2lkLCBkYXRhID0gdGFza19pZF9tYXBbYXJ0aWZhY3RbInRhc2siXV0KKyAgICByZXR1
cm4geworICAgICAgICAidGFzayI6IHRhc2tfaWQsCisgICAgICAgICJnbG9iIjogYXJ0aWZhY3Rb
Imdsb2IiXSwKKyAgICAgICAgImRlc3QiOiBhcnRpZmFjdFsiZGVzdCJdLAorICAgICAgICAiZXh0
cmFjdCI6IGFydGlmYWN0LmdldCgiZXh0cmFjdCIsIEZhbHNlKQorICAgIH0KKworCiBkZWYgYnVp
bGRfdGFza19ncmFwaChldmVudCwgYWxsX3Rhc2tzLCB0YXNrcyk6CiAgICAgdGFza19pZF9tYXAg
PSBPcmRlcmVkRGljdCgpCiAgICAgdGFza2dyb3VwX2lkID0gb3MuZW52aXJvbi5nZXQoIlRBU0tf
SUQiLCB0YXNrY2x1c3Rlci5zbHVnSWQoKSkKQEAgLTI1OCw3ICsyNzEsMTQgQEAgZGVmIGJ1aWxk
X3Rhc2tfZ3JhcGgoZXZlbnQsIGFsbF90YXNrcywgdGFza3MpOgogICAgICAgICAgICAgICAgICAg
ICBhZGRfdGFzayhkZXBlbmRzX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bF90YXNrc1tkZXBlbmRzX25hbWVdKQogICAgICAgICAgICAgICAgIGRlcGVuZHNfb25faWRzLmFw
cGVuZCh0YXNrX2lkX21hcFtkZXBlbmRzX25hbWVdWzBdKQotICAgICAgICB0YXNrX2lkLCB0YXNr
X2RhdGEgPSBjcmVhdGVfdGNfdGFzayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRz
X29uX2lkcykKKyAgICAgICAgZW52X2V4dHJhID0ge30KKyAgICAgICAgaWYgImRvd25sb2FkLWFy
dGlmYWN0cyIgaW4gdGFzazoKKyAgICAgICAgICAgIGVudl9leHRyYVsiVEFTS19BUlRJRkFDVFMi
XSA9IGpzb24uZHVtcHMoCisgICAgICAgICAgICAgICAgW2dldF9hcnRpZmFjdF9kYXRhKGFydGlm
YWN0LCB0YXNrX2lkX21hcCkKKyAgICAgICAgICAgICAgICAgZm9yIGFydGlmYWN0IGluIHRhc2tb
ImRvd25sb2FkLWFydGlmYWN0cyJdXSkKKworICAgICAgICB0YXNrX2lkLCB0YXNrX2RhdGEgPSBj
cmVhdGVfdGNfdGFzayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2V4dHJhPWVu
dl9leHRyYSkKICAgICAgICAgdGFza19pZF9tYXBbdGFza19uYW1lXSA9ICh0YXNrX2lkLCB0YXNr
X2RhdGEpCiAKICAgICBmb3IgdGFza19uYW1lLCB0YXNrIGluIGl0ZXJpdGVtcyh0YXNrcyk6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbAppbmRleCBlODBlNzk0MjAz
ZWRjYTNjOGQ1ZjE5ZWE5ODMzYTRmNzllOTc5ZjA4Li4zMTg0MzdhODBlYzMyNDA3MjFhMTdjYzYy
NTNmMjQxMTA5MDM4YjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFza3MvdGVz
dC55bWwKQEAgLTQsNyArNCw3IEBAIGNvbXBvbmVudHM6CiAgICAgd29ya2VyVHlwZTogY2kKICAg
ICBzY2hlZHVsZXJJZDogdGFza2NsdXN0ZXItZ2l0aHViCiAgICAgZGVhZGxpbmU6ICIyNCBob3Vy
cyIKLSAgICBpbWFnZTogaGFyamdhbS93ZWItcGxhdGZvcm0tdGVzdHM6MC4zNAorICAgIGltYWdl
OiB3ZWJwbGF0Zm9ybXRlc3RzL3dwdDowLjM3CiAgICAgbWF4UnVuVGltZTogNzIwMAogICAgIGFy
dGlmYWN0czoKICAgICAgIHB1YmxpYy9yZXN1bHRzOgpAQCAtODIsNiArODIsMTEgQEAgY29tcG9u
ZW50czoKICAgYnJvd3Nlci1maXJlZm94OgogICAgIGRlcGVuZHMtb246CiAgICAgICAtIGRvd25s
b2FkLWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9CisgICAgZG93bmxvYWQtYXJ0aWZhY3RzOgorICAg
ICAgLSB0YXNrOiBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFubmVsfQorICAgICAgICBnbG9i
OiBwdWJsaWMvcmVzdWx0cy9maXJlZm94LSR7dmFycy5jaGFubmVsfS4qCisgICAgICAgIGRlc3Q6
IGJ1aWxkLworICAgICAgICBleHRyYWN0OiB0cnVlCiAKICAgYnJvd3Nlci13ZWJraXRndGtfbWlu
aWJyb3dzZXI6IHt9CiAKQEAgLTk4LDggKzEwMywxNSBAQCBjb21wb25lbnRzOgogICAgIGVudjoK
ICAgICAgIFRPWEVOVjogcHkzNgogICAgICAgUFlfQ09MT1JTOiAwCisKKyAgdG94LXB5dGhvbjM4
OgorICAgIGVudjoKKyAgICAgIFRPWEVOVjogcHkzOAorICAgICAgUFlfQ09MT1JTOiAwCiAgICAg
aW5zdGFsbDoKLSAgICAgIC0gcHl0aG9uMy1waXAKKyAgICAgIC0gcHl0aG9uMy44CisgICAgICAt
IHB5dGhvbjMuOC1kaXN0dXRpbHMKKyAgICAgIC0gcHl0aG9uMy44LWRldgogCiAgIHRlc3RzLWFm
ZmVjdGVkOgogICAgIG9wdGlvbnM6CkBAIC0yMTgsNiArMjMwLDcgQEAgdGFza3M6CiAgICAgICAg
ICAgICAgIC0tCiAgICAgICAgICAgICAgIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0KICAgICAg
ICAgICAgICAgLS12ZXJpZnkKKyAgICAgICAgICAgICAgLS12ZXJpZnktbm8tY2hhb3MtbW9kZQog
CiAgICAgICAgIC0gd3B0LSR7dmFycy5icm93c2VyfS0ke3ZhcnMuY2hhbm5lbH0tcmVzdWx0czoK
ICAgICAgICAgICAgIHVzZToKQEAgLTI3Miw3ICsyODUsNyBAQCB0YXNrczoKICAgICAgICAgZG93
bmxvYWQtZmlyZWZveC0ke3ZhcnMuY2hhbm5lbH06CiAgICAgICAgICAgdXNlOgogICAgICAgICAg
ICAgLSB3cHQtYmFzZQotICAgICAgICAgIGNvbW1hbmQ6ICIuL3dwdCBpbnN0YWxsIC0tZG93bmxv
YWQtb25seSAtLWRlc3RpbmF0aW9uIC9ob21lL3Rlc3QvYXJ0aWZhY3RzLyAtLWNoYW5uZWw9JHt2
YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJvd3NlciIKKyAgICAgICAgICBjb21tYW5kOiAiLi93cHQg
aW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5hdGlvbiAvaG9tZS90ZXN0L2FydGlmYWN0
cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSAgLS1yZW5hbWU9ZmlyZWZveC0ke3ZhcnMuY2hh
bm5lbH0gZmlyZWZveCBicm93c2VyIgogCiAgIC0gbGludDoKICAgICAgIHVzZToKQEAgLTMwNiw5
ICszMTksOSBAQCB0YXNrczoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHRvb2xzX3Vu
aXR0ZXN0CiAKLSAgLSB0b29scy8gdW5pdHRlc3RzIChQeXRob24gMyk6CisgIC0gdG9vbHMvIHVu
aXR0ZXN0cyAoUHl0aG9uIDMuNik6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KLSAgICAgICAgVW5p
dCB0ZXN0cyBmb3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMywgZXhjbHVkaW5nIHdwdHJ1
bm5lcgorICAgICAgICBVbml0IHRlc3RzIGZvciB0b29scyBydW5uaW5nIHVuZGVyIFB5dGhvbiAz
LjYsIGV4Y2x1ZGluZyB3cHRydW5uZXIKICAgICAgIHVzZToKICAgICAgICAgLSB3cHQtYmFzZQog
ICAgICAgICAtIHRyaWdnZXItcHIKQEAgLTMyMCw3ICszMzMsMjEgQEAgdGFza3M6CiAgICAgICAg
IHJ1bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMvd3B0LyB0
ZXN0czoKKyAgLSB0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy44KToKKyAgICAgIGRlc2NyaXB0
aW9uOiA+LQorICAgICAgICBVbml0IHRlc3RzIGZvciB0b29scyBydW5uaW5nIHVuZGVyIFB5dGhv
biAzLjgsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFz
ZQorICAgICAgICAtIHRyaWdnZXItcHIKKyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNv
bW1hbmQ6IC4vdG9vbHMvY2kvY2lfdG9vbHNfdW5pdHRlc3Quc2gKKyAgICAgIGVudjoKKyAgICAg
ICAgSFlQT1RIRVNJU19QUk9GSUxFOiBjaQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1
bi1qb2I6CisgICAgICAgICAgLSB0b29sc191bml0dGVzdAorCisgIC0gdG9vbHMvd3B0LyB0ZXN0
cyAoUHl0aG9uIDIpOgogICAgICAgZGVzY3JpcHRpb246ID4tCiAgICAgICAgIEludGVncmF0aW9u
IHRlc3RzIGZvciB3cHQgY29tbWFuZHMKICAgICAgIHVzZToKQEAgLTM0Miw2ICszNjksNTAgQEAg
dGFza3M6CiAgICAgICAgIHJ1bi1qb2I6CiAgICAgICAgICAgLSB3cHRfaW50ZWdyYXRpb24KIAor
ICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjYpOgorICAgICAgZGVzY3JpcHRpb246ID4t
CisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZvciB3cHQgY29tbWFuZHMKKyAgICAgIHVzZToK
KyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIKKyAgICAgICAgLSB0b3gt
cHl0aG9uMworICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV93cHQuc2gKKyAgICAgIGluc3Rh
bGw6CisgICAgICAgIC0gbGlibnNzMy10b29scworICAgICAgb3B0aW9uczoKKyAgICAgICAgb29t
LWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gZmlyZWZveAorICAg
ICAgICAgIC0gY2hyb21lCisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4
dmZiOiB0cnVlCisgICAgICAgIGhvc3RzOiB0cnVlCisgICAgICBzY2hlZHVsZS1pZjoKKyAgICAg
ICAgcnVuLWpvYjoKKyAgICAgICAgICAtIHdwdF9pbnRlZ3JhdGlvbgorCisgIC0gdG9vbHMvd3B0
LyB0ZXN0cyAoUHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgSW50
ZWdyYXRpb24gdGVzdHMgZm9yIHdwdCBjb21tYW5kcworICAgICAgdXNlOgorICAgICAgICAtIHdw
dC1iYXNlCisgICAgICAgIC0gdHJpZ2dlci1wcgorICAgICAgICAtIHRveC1weXRob24zOAorICAg
ICAgY29tbWFuZDogLi90b29scy9jaS9jaV93cHQuc2gKKyAgICAgIGluc3RhbGw6CisgICAgICAg
IC0gbGlibnNzMy10b29scworICAgICAgb3B0aW9uczoKKyAgICAgICAgb29tLWtpbGxlcjogdHJ1
ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gZmlyZWZveAorICAgICAgICAgIC0gY2hy
b21lCisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZiOiB0cnVlCisg
ICAgICAgIGhvc3RzOiB0cnVlCisgICAgICBzY2hlZHVsZS1pZjoKKyAgICAgICAgcnVuLWpvYjoK
KyAgICAgICAgICAtIHdwdF9pbnRlZ3JhdGlvbgorCiAgIC0gcmVzb3VyY2VzLyB0ZXN0czoKICAg
ICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICAgICBUZXN0cyBmb3IgdGVzdGhhcm5lc3MuanMgYW5k
IG90aGVyIGZpbGVzIGluIHJlc291cmNlcy8KQEAgLTM2MiwxMCArNDMzLDEyIEBAIHRhc2tzOgog
ICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0czoKICAgICAgIGRlc2NyaXB0aW9uOiA+LQogICAgICAg
ICBTbW9rZXRlc3RzIGZvciB3cHRydW5uZXIKKyAgICAgIHZhcnM6CisgICAgICAgIGNoYW5uZWw6
IG5pZ2h0bHkKICAgICAgIHVzZToKICAgICAgICAgLSB3cHQtYmFzZQogICAgICAgICAtIHRyaWdn
ZXItcHIKLSAgICAgICAgLSB0b3gtcHl0aG9uMgorICAgICAgICAtIGJyb3dzZXItZmlyZWZveAog
ICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gK
ICAgICAgIGluc3RhbGw6CiAgICAgICAgIC0gbGlibnNzMy10b29scwpAQCAtMzgyLDMgKzQ1NSwy
OCBAQCB0YXNrczoKICAgICAgIHNjaGVkdWxlLWlmOgogICAgICAgICBydW4tam9iOgogICAgICAg
ICAgIC0gd3B0cnVubmVyX2luZnJhc3RydWN0dXJlCisKKyAgLSBpbmZyYXN0cnVjdHVyZS8gdGVz
dHMgKFB5dGhvbiAzKToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBTbW9rZXRlc3Rz
IGZvciB3cHRydW5uZXIKKyAgICAgIHZhcnM6CisgICAgICAgIGNoYW5uZWw6IG5pZ2h0bHkKKyAg
ICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIKKyAgICAg
IGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoIC0tcHkz
CisgICAgICBpbnN0YWxsOgorICAgICAgICAtIHB5dGhvbjMtcGlwCisgICAgICAgIC0gbGlibnNz
My10b29scworICAgICAgICAtIGxpYmFwcGluZGljYXRvcjEKKyAgICAgICAgLSBmb250cy1saWJl
cmF0aW9uCisgICAgICBvcHRpb25zOgorICAgICAgICBvb20ta2lsbGVyOiB0cnVlCisgICAgICAg
IGJyb3dzZXI6CisgICAgICAgICAgLSBjaHJvbWUKKyAgICAgICAgY2hhbm5lbDogZXhwZXJpbWVu
dGFsCisgICAgICAgIHh2ZmI6IHRydWUKKyAgICAgICAgaG9zdHM6IGZhbHNlCisgICAgICBzY2hl
ZHVsZS1pZjoKKyAgICAgICAgcnVuLWpvYjoKKyAgICAgICAgICAtIHdwdHJ1bm5lcl9pbmZyYXN0
cnVjdHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlk
LnB5CmluZGV4IGIxNzA5MjhiMjkwYTI3Zjc1ZWFkYTY2MTYyZWE0MDRhMWRiYWU5ZjkuLjQ3Y2Jj
MmU4N2JiODA1OTdkZDk4MGU5Zjk4YmM0MTNiMDQxNmI1NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKQEAgLTYsNyArNiw2IEBAIGltcG9y
dCBqc29uZQogaW1wb3J0IG1vY2sKIGltcG9ydCBweXRlc3QKIGltcG9ydCByZXF1ZXN0cwotaW1w
b3J0IHN5cwogaW1wb3J0IHlhbWwKIGZyb20ganNvbnNjaGVtYSBpbXBvcnQgdmFsaWRhdGUKIApA
QCAtMjAsOSArMTksNiBAQCBkZWYgZGF0YV9wYXRoKGZpbGVuYW1lKToKICAgICByZXR1cm4gb3Mu
cGF0aC5qb2luKGhlcmUsICIuLiIsICJ0ZXN0ZGF0YSIsIGZpbGVuYW1lKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJ0YXNrY2x1c3RlciBsaWJyYXJ5IGhhcyBhbiBlbmNvZGluZyBidWcgIgotICAg
ICAgICAgICAgICAgICAgICJodHRwczovL2dpdGh1Yi5jb20vdGFza2NsdXN0ZXIvanNvbi1lL2lz
c3Vlcy8zMzgiKQogZGVmIHRlc3RfdmVyaWZ5X3Rhc2tjbHVzdGVyX3ltbCgpOgogICAgICIiIlZl
cmlmeSB0aGF0IHRoZSBqc29uLWUgaW4gdGhlIC50YXNrY2x1c3Rlci55bWwgaXMgdmFsaWQiIiIK
ICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJvb3QsICIudGFza2NsdXN0ZXIueW1sIiksIGVu
Y29kaW5nPSJ1dGY4IikgYXMgZjoKQEAgLTQ2LDExICs0MiwxNyBAQCBkZWYgdGVzdF92ZXJpZnlf
cGF5bG9hZCgpOgogICAgICIiIlZlcmlmeSB0aGF0IHRoZSBkZWNpc2lvbiB0YXNrIHByb2R1Y2Vz
IHRhc2tzIHdpdGggYSB2YWxpZCBwYXlsb2FkIiIiCiAgICAgZnJvbSB0b29scy5jaS50Yy5kZWNp
c2lvbiBpbXBvcnQgZGVjaWRlCiAKLSAgICBjcmVhdGVfdGFza19zY2hlbWEgPSByZXF1ZXN0cy5n
ZXQoCi0gICAgICAgICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFza2NsdXN0
ZXIvdGFza2NsdXN0ZXIvYmxvYi9tYXN0ZXIvc2VydmljZXMvcXVldWUvc2NoZW1hcy92MS9jcmVh
dGUtdGFzay1yZXF1ZXN0LnltbCIpCi0gICAgY3JlYXRlX3Rhc2tfc2NoZW1hID0geWFtbC5zYWZl
X2xvYWQoY3JlYXRlX3Rhc2tfc2NoZW1hLmNvbnRlbnQpCisgICAgciA9IHJlcXVlc3RzLmdldCgi
aHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5jb20vc2NoZW1hcy9xdWV1ZS92
MS9jcmVhdGUtdGFzay1yZXF1ZXN0Lmpzb24iKQorICAgIHIucmFpc2VfZm9yX3N0YXR1cygpCisg
ICAgY3JlYXRlX3Rhc2tfc2NoZW1hID0gci5qc29uKCkKIAotICAgIHBheWxvYWRfc2NoZW1hID0g
cmVxdWVzdHMuZ2V0KCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFza2NsdXN0
ZXIvZG9ja2VyLXdvcmtlci9tYXN0ZXIvc2NoZW1hcy92MS9wYXlsb2FkLmpzb24iKS5qc29uKCkK
KyAgICAjIFRPRE8oSGV4Y2xlcyk6IENoYW5nZSBpdCB0byBodHRwczovL2NvbW11bml0eS10Yy5z
ZXJ2aWNlcy5tb3ppbGxhLmNvbS9yZWZlcmVuY2VzL3NjaGVtYXMvZG9ja2VyLXdvcmtlci92MS9w
YXlsb2FkLmpzb24KKyAgICAjIGFmdGVyIHRoZSBuZXh0IENvbW11bml0eS1UQyByZWxlYXNlIChz
ZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTczMiku
LgorICAgIHIgPSByZXF1ZXN0cy5nZXQoCisgICAgICAgICJodHRwczovL3Jhdy5naXRodWJ1c2Vy
Y29udGVudC5jb20vdGFza2NsdXN0ZXIvdGFza2NsdXN0ZXIvIgorICAgICAgICAiM2VkNTExZWY5
MTE5ZGE1NGZjMDkzZTk3NmI3YjU5NTU4NzRjOWI1NC93b3JrZXJzL2RvY2tlci13b3JrZXIvc2No
ZW1hcy92MS9wYXlsb2FkLmpzb24iKQorICAgIHIucmFpc2VfZm9yX3N0YXR1cygpCisgICAgcGF5
bG9hZF9zY2hlbWEgPSByLmpzb24oKQogCiAgICAgam9icyA9IFsibGludCIsCiAgICAgICAgICAg
ICAibWFuaWZlc3RfdXBsb2FkIiwKQEAgLTEyNywxMiArMTI5LDE3IEBAIGRlZiB0ZXN0X3Zlcmlm
eV9wYXlsb2FkKCk6CiAgICAgICAnd3B0LWNocm9tZS1kZXYtY3Jhc2h0ZXN0LTEnLAogICAgICAg
J2xpbnQnfSksCiAgICAgKCJwcl9ldmVudC5qc29uIiwgVHJ1ZSwgeyIudGFza2NsdXN0ZXIueW1s
IiwiLnRyYXZpcy55bWwiLCJ0b29scy9jaS9zdGFydC5zaCJ9LAotICAgICB7J2xpbnQnLAorICAg
ICB7J2Rvd25sb2FkLWZpcmVmb3gtbmlnaHRseScsCisgICAgICAnbGludCcsCiAgICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDIpJywKLSAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRo
b24gMyknLAotICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMnLAorICAgICAgJ3Rvb2xzLyB1bml0dGVz
dHMgKFB5dGhvbiAzLjYpJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy44KScs
CisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDIpJywKKyAgICAgICd0b29scy93cHQv
IHRlc3RzIChQeXRob24gMy42KScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMu
OCknLAogICAgICAgJ3Jlc291cmNlcy8gdGVzdHMnLAotICAgICAgJ2luZnJhc3RydWN0dXJlLyB0
ZXN0cyd9KSwKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnLAorICAgICAgJ2luZnJhc3Ry
dWN0dXJlLyB0ZXN0cyAoUHl0aG9uIDMpJ30pLAogICAgICMgTW9yZSB0ZXN0cyBhcmUgYWZmZWN0
ZWQgaW4gdGhlIGFjdHVhbCBQUiBidXQgaXQgc2hvdWxkbid0IGFmZmVjdCB0aGUgc2NoZWR1bGVk
IHRhc2tzCiAgICAgKCJwcl9ldmVudF90ZXN0c19hZmZlY3RlZC5qc29uIiwgVHJ1ZSwgeyJsYXlv
dXQtaW5zdGFiaWxpdHkvY2xpcC1uZWdhdGl2ZS1ib3R0b20tbWFyZ2luLmh0bWwiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5b3V0LWluc3RhYmlsaXR5
L2NvbXBvc2l0ZWQtZWxlbWVudC1tb3ZlbWVudC5odG1sIn0sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rf
am9icy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvdGVzdHMvdGVzdF9qb2JzLnB5CmluZGV4IDk0Zjc5OTg3NzBjZjVkOGJhZDM2ZDE4OGRk
NjNlMjUzZjk4MTk5YTguLmFhMTI3MzgyMDRmMzY1MmUyZGY5NjQ0NDQ2OTM2OGUwZTYyNjE5MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGVzdHMvdGVzdF9qb2JzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9qb2JzLnB5CkBAIC0xMTQs
MTEgKzExNCwxMSBAQCBkZWYgdGVzdF9idWlsZF9jc3MoKToKIAogCiBkZWYgdGVzdF91cGRhdGVf
YnVpbHQoKToKLSAgICBhc3NlcnQgam9icy5nZXRfam9icyhbIjJkY29udGV4dC9mb28uaHRtbCJd
LAorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvZWxlbWVudC9mb28uaHRt
bCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsidXBkYXRlX2J1aWx0Il0p
ID09IHsidXBkYXRlX2J1aWx0In0KICAgICBhc3NlcnQgam9icy5nZXRfam9icyhbImh0bWwvZm9v
Lmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bInVwZGF0ZV9idWls
dCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9Ci0gICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJvZmZz
Y3JlZW4tY2FudmFzL2Zvby5odG1sIl0sCisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1s
L2NhbnZhcy9vZmZzY3JlZW4vZm9vLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9CiAKIApAQCAtMTM0
LDMgKzEzNCw3IEBAIGRlZiB0ZXN0X3dwdF9pbmZyYXN0cnVjdHVyZSgpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsi
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlIn0KICAgICBhc3NlcnQgam9icy5nZXRfam9icyhbImlu
ZnJhc3RydWN0dXJlL2Fzc3VtcHRpb25zL2FoZW0uaHRtbCJdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVu
bmVyX2luZnJhc3RydWN0dXJlIn0KKworZGVmIHRlc3Rfd2RzcGVjX3N1cHBvcnQoKToKKyAgICBh
c3NlcnQgam9icy5nZXRfam9icyhbIndlYmRyaXZlci90ZXN0cy9zdXBwb3J0L19faW5pdF9fLnB5
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ3cHRydW5uZXJfaW5mcmFz
dHJ1Y3R1cmUiXSkgPT0geyJ3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUifQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0
cy90ZXN0X3ByX3ByZXZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQppbmRleCA2MzQ4MmZi
MTg0YzdmMTRkYjBlYmQ0NWMxODc5NGUzYTk3NzFjOTBiLi4yZDk5NjZmYzhjZjQxODc5MTNhZGNl
ODYwOWVlNzUwYWRlMWI5Nzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rl
c3RzL3Rlc3RfcHJfcHJldmlldy5weQpAQCAtMTE1LDYgKzExNSw3IEBAIGNsYXNzIE1vY2tTZXJ2
ZXIoSFRUUFNlcnZlciwgb2JqZWN0KToKIGNsYXNzIFJlcXVlc3RzKG9iamVjdCk6CiAgICAgZ2V0
X3JhdGUgPSAoJ0dFVCcsICcvcmF0ZV9saW1pdCcsIHt9KQogICAgIHNlYXJjaCA9ICgnR0VUJywg
Jy9zZWFyY2gvaXNzdWVzJywge30pCisgICAgcHJfZGV0YWlscyA9ICgnR0VUJywgJy9yZXBvcy90
ZXN0LW9yZy90ZXN0LXJlcG8vcHVsbHMvMjMnLCB7fSkKICAgICByZWZfY3JlYXRlX29wZW4gPSAo
CiAgICAgICAgICdQT1NUJywgJy9yZXBvcy90ZXN0LW9yZy90ZXN0LXJlcG8vZ2l0L3JlZnMnLCB7
J3JlZic6J3JlZnMvcHJzLW9wZW4vMjMnfQogICAgICkKQEAgLTM3Niw2ICszNzcsNyBAQCBkZWYg
dGVzdF9zeW5jaHJvbml6ZV9zeW5jX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAoUmVxdWVzdHMu
Z2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0
ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNw
b25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5u
b19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKICAgICAgICAgICAgIDIwMCwK
ICAgICAgICAgICAgIHsKQEAgLTM5MSw2ICszOTMsMTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVf
c3luY19jb2xsYWJvcmF0b3IoKToKICAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRz
JzogRmFsc2UKICAgICAgICAgICAgIH0KICAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5w
cl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFkJzog
eworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAgICAg
KFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3Rz
LnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxv
eW1lbnRfZ2V0LCAoMjAwLCB7fSkpLApAQCAtNDUyLDYgKzQ2Myw0MSBAQCBkZWYgdGVzdF9zeW5j
aHJvbml6ZV9pZ25vcmVfdW50cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgYXNzZXJ0IHJldHVy
bmNvZGUgPT0gMAogICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0
dWFsX3RyYWZmaWMpCiAKK2RlZiB0ZXN0X3N5bmNocm9uaXplX2lnbm9yZV9wdWxsX3JlcXVlc3Rf
ZnJvbV9mb3JrKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKKyAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKKyAg
ICAgICAgICAgIDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaXRlbXMnOiBb
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXIn
OiAyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAg
J3VzZXInOiB7J2xvZ2luJzogJ2dyYWNlJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXV0
aG9yX2Fzc29jaWF0aW9uJzogJ0NPTExBQk9SQVRPUicKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6
IEZhbHNlCisgICAgICAgICAgICB9CisgICAgICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJf
ZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsK
KyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAn
ZnVsbF9uYW1lJzogJ3NvbWUtb3RoZXItb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAg
XQorCisgICAgcmV0dXJuY29kZSwgYWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hy
b25pemUoZXhwZWN0ZWRfdHJhZmZpYykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAg
ICBhc3NlcnQgc2FtZV9tZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQor
CiBkZWYgdGVzdF9zeW5jaHJvbml6ZV9zeW5jX3RydXN0ZWRfY29udHJpYnV0b3IoKToKICAgICBl
eHBlY3RlZF90cmFmZmljID0gWwogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNl
cy5ub19saW1pdCksCkBAIC00NTksMTIgKzUwNSwxNSBAQCBkZWYgdGVzdF9zeW5jaHJvbml6ZV9z
eW5jX3RydXN0ZWRfY29udHJpYnV0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBS
ZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNl
cy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAog
ICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwogICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAjIHVzZXIgaGVyZSBpcyBhIGNvbnRyaWJ1dG9yICh1bnRydXN0ZWQpLCBidXQgdGhlIGlz
c3VlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGhhcyBiZWVuIGxhYmVsbGVkIGFzIHNhZmUu
CiAgICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzogW3snbmFtZSc6ICdzYWZlIGZvciBw
cmV2aWV3J31dLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6IE5vbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnSGV4Y2xlcyd9LApAQCAt
NDc0LDYgKzUyMyw2MCBAQCBkZWYgdGVzdF9zeW5jaHJvbml6ZV9zeW5jX3RydXN0ZWRfY29udHJp
YnV0b3IoKToKICAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKICAg
ICAgICAgICAgIH0KICAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAo
MjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFkJzogeworICAgICAgICAg
ICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsX25hbWUn
OiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnJl
Zl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKKyAgICAgICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVf
dHJ1c3RlZCwgKDIwMCwge30pKSwKKyAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAo
MjAwLCBbXSkpLAorICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9jcmVhdGUsICgyMDAsIHt9
KSkKKyAgICBdCisKKyAgICByZXR1cm5jb2RlLCBhY3R1YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMg
PSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljKQorCisgICAgYXNzZXJ0IHJldHVybmNvZGUg
PT0gMAorICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhwZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3Ry
YWZmaWMpCisKK2RlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfYm90X3dpdGhfbGFiZWwoKToKKyAg
ICBleHBlY3RlZF90cmFmZmljID0gWworICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQp
LAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMu
c2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAgICAgICAjIHVzZXIgaGVyZSBp
cyBhIGJvdCB3aGljaCBpcyBub3JtYWxseSBub3QgbWlycm9yZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAjIGJ1dCB0aGUgaXNzdWUgaGFzIGJlZW4gbGFiZWxsZWQgYXMgc2FmZS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICdsYWJlbHMnOiBbeyduYW1lJzogJ3NhZmUgZm9yIHByZXZpZXcn
fV0sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6ICdjaHJvbWl1bS13cHQtZXhwb3J0LWJv
dCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xM
QUJPUkFUT1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAgICAgfQor
ICAgICAgICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdy
ZXBvJzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV9vcGVu
LCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAw
LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCkBA
IC00OTIsNiArNTk1LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRv
cigpOgogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFy
Y2gsICgyMDAsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAt
NTA2LDYgKzYxMCwxNSBAQCBkZWYgdGVzdF9zeW5jaHJvbml6ZV91cGRhdGVfY29sbGFib3JhdG9y
KCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAg
ICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rl
c3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3lt
ZW50X2dldCwgKDIwMCwgW10pKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl91cGRhdGVfb3Blbiwg
KDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl91cGRhdGVfdHJ1c3RlZCwgKDIwMCwg
e30pKSwKQEAgLTUyOCw2ICs2NDEsNyBAQCBkZWYgdGVzdF9zeW5jaHJvbml6ZV91cGRhdGVfbWVt
YmVyKCk6CiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwK
ICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAg
ICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1
ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNl
YXJjaCwgKDIwMCwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAnaXRlbXMnOiBbCkBA
IC01NDIsNiArNjU2LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3VwZGF0ZV9tZW1iZXIoKToK
ICAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKICAgICAgICAgICAg
IH0KICAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFkJzogeworICAgICAgICAgICAgICAgICAg
ICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1v
cmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRf
Z2V0LCAoMjAwLCBbeydzb21lJzogJ2RlcGxveW1lbnQnfV0pKSwKICAgICAgICAgKFJlcXVlc3Rz
LnJlZl91cGRhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLnJlZl91cGRh
dGVfdHJ1c3RlZCwgKDIwMCwge30pKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZp
bGUKaW5kZXggMGE4NDJkZTFhYjg1N2QxZjY1NWI5MzY1ZGY2MWYzZmE5NzhlMzFiZS4uZjM5Mjdm
ZDBkNzFjY2YyOTJkOTY5OWQ1OTdhNDc5OTQ1YThlNTExNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmls
ZQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2RvY2tlci9Eb2NrZXJmaWxlCkBAIC0yNSw2ICsyNSw4IEBAIFJVTiBhcHQtZ2V0IC1xcXkgdXBk
YXRlIFwKICAgICBwdWxzZWF1ZGlvIFwKICAgICBweXRob24gXAogICAgIHB5dGhvbi1waXAgXAor
ICAgIHB5dGhvbjMgXAorICAgIHB5dGhvbjMtcGlwIFwKICAgICBxZW11LWt2bSBcCiAgICAgdHpk
YXRhIFwKICAgICBzdWRvIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZAppbmRl
eCA0NTA5ODFmNjg2YmZhY2UyZDkyNDNlNTYyODA0MGJiNmIyZjZjNGUwLi45MzQyYWRlZDI5OGJk
ZDBlNWRhYWMxMjI4OWM3ODE2M2QxZDViZWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9SRUFETUUubWQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIv
UkVBRE1FLm1kCkBAIC0xLDEwICsxLDE4IEBACiBUaGlzIGRvY2tlciBpbWFnZXMgaXMgdXNlZCBm
b3IgdGVzdGluZyBDaHJvbWUsIEZpcmVmb3gsIFdlYktpdEdUSyBhbmQgcnVubmluZwogb3RoZXIg
dGFza3Mgb24gVGFza2NsdXN0ZXIuIFdoZW4gYW55IG9mIHRoZSBmaWxlcyBpbiB0aGlzIGRpcmVj
dG9yeSBjaGFuZ2UsIHRoZQotaW1hZ2VzIG11c3QgYmUgdXBkYXRlZCBhcyB3ZWxsLiBUbyBkbyB0
aGlzLCBhc3N1bWluZyB5b3UgaGF2ZSBkb2NrZXIgaW5zdGFsbGVkOgoraW1hZ2VzIG11c3QgYmUg
dXBkYXRlZCBhcyB3ZWxsLiBEb2luZyB0aGlzIHJlcXVpcmVzIHlvdSBiZSBwYXJ0IG9mIHRoZQor
J3dlYnBsYXRmb3JtdGVzdHMnIG9yZ2FuaXphdGlvbiBvbiBEb2NrZXIgSHViOyBwaW5nIEBIZXhj
bGVzIG9yIEBzdGVwaGVubWNncnVlcgoraWYgeW91IGFyZSBub3QgYSBtZW1iZXIuCisKK0luIHRo
aXMgZGlyZWN0b3J5LCBydW4gdGhlIGZvbGxvd2luZywgd2hlcmUgYDx0YWc+YCBpcyBvZiB0aGUg
Zm9ybQorYHdlYnBsYXRmb3JtdGVzdHMvd3B0OntjdXJyZW50LXZlcnNpb24gKyAwLjAxfWA6CiAK
LUluIHRoaXMgZGlyZWN0b3J5LCBydW4KIGBgYHNoCi1kb2NrZXIgYnVpbGQgLXQgPHRhZz4gLgor
IyAtLXB1bGwgZm9yY2VzIERvY2tlciB0byBnZXQgdGhlIG5ld2VzdCBiYXNlIGltYWdlLgorZG9j
a2VyIGJ1aWxkIC0tcHVsbCAtdCA8dGFnPiAuCiBkb2NrZXIgcHVzaCA8dGFnPgogYGBgCiAKK1Ro
ZW4gdXBkYXRlIHRoZSBmb2xsb3dpbmcgVGFza2NsdXN0ZXIgY29uZmlndXJhdGlvbnMgdG8gdXNl
IHRoZSBuZXcgaW1hZ2U6CisqIGAudGFza2NsdXN0ZXIueW1sYCAodGhlIGRlY2lzaW9uIHRhc2sp
CisqIGB0b29scy9jaS90Yy90YXNrcy90ZXN0LnltbGAgKGFsbCB0aGUgb3RoZXIgdGFza3MpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9mcm9udGVuZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2Zyb250ZW5kLnB5CmluZGV4IDk3NjE1NmNmNjVhMDA4
MjFhMTFhMzM1MTMwMWI0N2MxMDc4Yzg0MTYuLjU5YTFjZmYyZWJkMGVmZGEwNmZhZGQxNDRhODRi
NWQzNWIyZDgxYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2Zyb250ZW5kLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2Zyb250ZW5kLnB5CkBA
IC04LDYgKzgsNyBAQCB3cHRfcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVy
ZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQogZGVmIGJ1aWxkKCphcmdzLCAqKmt3YXJncyk6CiAg
ICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsiZG9ja2VyIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJidWlsZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1wdWxsIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItLXRhZyIsICJ3cHQ6bG9jYWwiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVyZV0pCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvcmV0cnku
cHkKaW5kZXggNjEyNmI3ODFiZmFkZDE1ZTgyYjhhM2EzYjk0OTQwNTA5MzllYWI2Yy4uNWM4ZTZk
NzljMzAzOGRkZmY0OTY4OGQ0ZjFmYzdlN2YyOTRhZDA3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvcmV0cnkucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9k
b2NrZXIvcmV0cnkucHkKQEAgLTIxLDIzICsyMSwyOCBAQCBkZWYgaXRlcl9yYW5nZShuKToKICAg
ICAgICAgaSArPSAxCiAKIAorZGVmIGxvZyh2YWx1ZSk6CisgICAgcHJpbnQodmFsdWUpCisgICAg
c3lzLnN0ZG91dC5mbHVzaCgpCisKKwogZGVmIG1haW4oKToKICAgICBhcmdzID0gZ2V0X2FyZ3Mo
KS5wYXJzZV9hcmdzKCkKIAogICAgIGlmIG5vdCBhcmdzLmNtZDoKLSAgICAgICAgcHJpbnQoIk5v
IGNvbW1hbmQgc3VwcGxpZWQiKQorICAgICAgICBsb2coIk5vIGNvbW1hbmQgc3VwcGxpZWQiKQog
ICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgcmV0Y29kZSA9IE5vbmUKIAogICAgIGZvciBuIGlu
IGl0ZXJfcmFuZ2UoYXJncy5jb3VudCk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHByaW50
KCJSdW5uaW5nICVzIFt0cnkgJWQvJWRdIiAlICgiICIuam9pbihhcmdzLmNtZCksIChuKzEpLCBh
cmdzLmNvdW50KSkKKyAgICAgICAgICAgIGxvZygiUnVubmluZyAlcyBbdHJ5ICVkLyVkXSIgJSAo
IiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCiAgICAgICAgICAgICBzdWJw
cm9jZXNzLmNoZWNrX2NhbGwoYXJncy5jbWQpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNh
bGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgcmV0Y29kZSA9IGUucmV0dXJuY29k
ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkNvbW1hbmQgc3VjY2VlZGVkIikK
KyAgICAgICAgICAgIGxvZygiQ29tbWFuZCBzdWNjZWVkZWQiKQogICAgICAgICAgICAgcmV0Y29k
ZSA9IDAKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTQ2LDEwICs1MSwxMCBAQCBkZWYgbWFpbigp
OgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgd2FpdF90aW1lID0gYXJncy5mYWN0b3IqKm4g
KiBhcmdzLmRlbGF5CiAgICAgICAgIGlmIG4gPCBhcmdzLmNvdW50IC0gMToKLSAgICAgICAgICAg
IHByaW50KCJDb21tYW5kIGZhaWxlZCwgd2FpdGluZyAlcyBzZWNvbmRzIHRvIHJldHJ5IiAlIHdh
aXRfdGltZSkKKyAgICAgICAgICAgIGxvZygiQ29tbWFuZCBmYWlsZWQsIHdhaXRpbmcgJXMgc2Vj
b25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCiAgICAgICAgICAgICB0aW1lLnNsZWVwKHdhaXRf
dGltZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJDb21tYW5kIGZhaWxlZCwg
b3V0IG9mIHJldHJpZXMiKQorICAgICAgICAgICAgbG9nKCJDb21tYW5kIGZhaWxlZCwgb3V0IG9m
IHJldHJpZXMiKQogCiAgICAgc3lzLmV4aXQocmV0Y29kZSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0
aWdub3JlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CmluZGV4IGQ1ZWE0YTZhOGYzZDY0ZDRhYmEzYjhk
Y2JlNWZmZTg0OWI3NGU5NjkuLjBmM2Q5NDUwZDEyMzQ0OWMwZGNjM2ZmM2MwNGNhODZjODFiMjRi
ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkKQEAg
LTI2OSw3ICsyNjksNyBAQCBjbGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZChpdGVtKQogCiAgICAgICAgICAgICBkaXJuYW1l
c1s6XSA9IGtlZXBfZGlycwotICAgICAgICAgICAgYXNzZXJ0ICIuZ2l0IiBub3QgaW4gZGlybmFt
ZXMKKyAgICAgICAgICAgIGFzc2VydCBub3QgYW55KCIuZ2l0IiA9PSBuYW1lIGZvciBuYW1lLCBf
IGluIGRpcm5hbWVzKQogICAgICAgICAgICAgeWllbGQgb3JpZ19kaXJwYXRoLCBkaXJuYW1lcywg
a2VlcF9maWxlcwogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9s
aW50LnB5CmluZGV4IGEwNTBjZmE4YThlNGUyNjk5ZGI0NGNlOWU1MmY4ZjIzMGEzNGE4NjkuLmZj
MWE4MTZmOGFiZjg1ZWZjZTMxYTNhOGU2MTRiYTU5MWI2MDA5NTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC9saW50LnB5CkBAIC0yMCw3ICsyMCw3IEBAIGZyb20gLi5naXRpZ25vcmUuZ2l0aWdub3Jl
IGltcG9ydCBQYXRoRmlsdGVyCiBmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMKIGZyb20gLi5t
YW5pZmVzdC52Y3MgaW1wb3J0IHdhbGsKIAotZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1w
b3J0IFNvdXJjZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywg
Z2V0X2FueV92YXJpYW50cywgZ2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzCitmcm9tIC4ubWFuaWZl
c3Quc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZSwganNfbWV0YV9yZSwgcHl0aG9uX21ldGFf
cmUsIHNwYWNlX2NoYXJzLCBnZXRfYW55X3ZhcmlhbnRzCiBmcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIGl0ZXJpdGVtcywgaXRlcnZhbHVlcywgd2l0aF9tZXRhY2xhc3MKIGZyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxz
cGxpdCwgdXJsam9pbgpAQCAtNDEsNyArNDEsMTIgQEAgaWYgTVlQWToKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVHlwZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgogCi0gICAgV2hpdGVs
aXN0ID0gRGljdFtUZXh0LCBEaWN0W1RleHQsIFNldFtPcHRpb25hbFtpbnRdXV1dCisgICAgIyBU
aGUgSWdub3JlbGlzdCBpcyBhIHR3byBsZXZlbCBkaWN0aW9uYXJ5LiBUaGUgdG9wIGxldmVsIGlz
IGluZGV4ZWQgYnkKKyAgICAjIGVycm9yIG5hbWVzIChlLmcuICdUUkFJTElORyBXSElURVNQQUNF
JykuIEVhY2ggb2YgdGhvc2UgdGhlbiBoYXMgYSBtYXAgb2YKKyAgICAjIGZpbGUgcGF0dGVybnMg
KGUuZy4gJ2Zvby8qJykgdG8gYSBzZXQgb2Ygc3BlY2lmaWMgbGluZSBudW1iZXJzIGZvciB0aGUK
KyAgICAjIGV4Y2VwdGlvbi4gVGhlIGxpbmUgbnVtYmVycyBhcmUgb3B0aW9uYWw7IGlmIG1pc3Np
bmcgdGhlIGVudGlyZSBmaWxlCisgICAgIyBpZ25vcmVzIHRoZSBlcnJvci4KKyAgICBJZ25vcmVs
aXN0ID0gRGljdFtUZXh0LCBEaWN0W1RleHQsIFNldFtPcHRpb25hbFtpbnRdXV1dCiAKIAogbG9n
Z2VyID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtsb2dnaW5nLkxvZ2dlcl0KQEAgLTc1LDEyICs4
MCwxMiBAQCBFUlJPUl9NU0cgPSAiIiJZb3UgbXVzdCBmaXggYWxsIGVycm9yczsgZm9yIGRldGFp
bHMgb24gaG93IHRvIGZpeCB0aGVtLCBzZWUKIGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9y
Zy93cml0aW5nLXRlc3RzL2xpbnQtdG9vbC5odG1sCiAKIEhvd2V2ZXIsIGluc3RlYWQgb2YgZml4
aW5nIGEgcGFydGljdWxhciBlcnJvciwgaXQncyBzb21ldGltZXMKLU9LIHRvIGFkZCBhIGxpbmUg
dG8gdGhlIGxpbnQud2hpdGVsaXN0IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlCitPSyB0byBhZGQg
YSBsaW5lIHRvIHRoZSBsaW50Lmlnbm9yZSBmaWxlIGluIHRoZSByb290IG9mIHRoZQogd2ViLXBs
YXRmb3JtLXRlc3RzIGRpcmVjdG9yeSB0byBtYWtlIHRoZSBsaW50IHRvb2wgaWdub3JlIGl0Lgog
CiBGb3IgZXhhbXBsZSwgdG8gbWFrZSB0aGUgbGludCB0b29sIGlnbm9yZSBhbGwgJyVzJwogZXJy
b3JzIGluIHRoZSAlcyBmaWxlLAoteW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8g
dGhlIGxpbnQud2hpdGVsaXN0IGZpbGUuCit5b3UgY291bGQgYWRkIHRoZSBmb2xsb3dpbmcgbGlu
ZSB0byB0aGUgbGludC5pZ25vcmUgZmlsZS4KIAogJXM6ICVzIiIiCiAKQEAgLTMxOCwxNCArMzIz
LDUyIEBAIGRlZiBjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMpOgog
ICAgIHJldHVybiBlcnJvcnMKIAogCi1kZWYgcGFyc2Vfd2hpdGVsaXN0KGYpOgotICAgICMgdHlw
ZTogKElPW2J5dGVzXSkgLT4gVHVwbGVbV2hpdGVsaXN0LCBTZXRbVGV4dF1dCitkZWYgY2hlY2tf
dW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lcyhyZXBvX3Jvb3QsIHBhdGhzKToKKyAgICAjIHR5
cGU6IChzdHIsIExpc3Rbc3RyXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KKyAgICAiIiIKKyAgICBD
aGVja3MgdGhhdCBhbGwgdGVzdGhhcm5lc3MgZmlsZXMgaGF2ZSB1bmlxdWUgYmFzZW5hbWUgcGF0
aHMuCisKKyAgICBUaGUgJ2Jhc2VuYW1lIHBhdGgnIHJlZmVycyB0byB0aGUgZW50aXJlIHBhdGgg
ZXhjbHVkaW5nIHRoZSBleHRlbnNpb24uIEZvcgorICAgIGV4YW1wbGUsICdmb28vYmFyL2Jhei5o
dG1sJyBhbmQgJ2Zvby9iYXIvYmF6LnhodG1sJyBoYXZlIHRoZSBzYW1lIGJhc2VuYW1lCisgICAg
cGF0aCwgYnV0ICdmb28vYmFyL2Jhei5odG1sJyBhbmQgJ2Zvby9xdXgvYmF6Lmh0bWwnIGRvIG5v
dC4KKworICAgIFRlc3RoYXJuZXNzIGZpbGVzIHdpdGggaWRlbnRpY2FsIGJhc2VuYW1lcyBoYXZl
IGNhdXNlZCBpc3N1ZXMgaW4gZG93bnN0cmVhbQorICAgIGluZnJhc3RydWN0dXJlIChzZWUgaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzc1NzApLAorICAg
IGFuZCBtYXkgY2F1c2UgY29uZnVzaW9uIGluIGdlbmVyYWwuCisKKyAgICA6cGFyYW0gcmVwb19y
b290OiB0aGUgcmVwb3NpdG9yeSByb290CisgICAgOnBhcmFtIHBhdGhzOiBsaXN0IG9mIGFsbCBw
YXRocworICAgIDpyZXR1cm5zOiBhIGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgcGF0aHNgYAor
ICAgICIiIgorCisgICAgZXJyb3JzID0gW10KKyAgICBmaWxlX2RpY3QgPSBkZWZhdWx0ZGljdChs
aXN0KQorICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICBzb3VyY2VfZmlsZSA9IFNvdXJj
ZUZpbGUocmVwb19yb290LCBwYXRoLCAiLyIpCisgICAgICAgIGlmIHNvdXJjZV9maWxlLnR5cGUg
IT0gInRlc3RoYXJuZXNzIjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZpbGVfbmFt
ZSwgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCisgICAgICAgIGZpbGVf
ZGljdFtmaWxlX25hbWVdLmFwcGVuZChmaWxlX2V4dGVuc2lvbikKKyAgICBmb3IgaywgdiBpbiBm
aWxlX2RpY3QuaXRlbXMoKToKKyAgICAgICAgaWYgbGVuKHYpID09IDE6CisgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICBjb250ZXh0ID0gKCcsICcuam9pbih2KSwpCisgICAgICAgIGZvciBl
eHRlbnNpb24gaW4gdjoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuRHVwbGljYXRl
QmFzZW5hbWVQYXRoLmVycm9yKGsgKyBleHRlbnNpb24sIGNvbnRleHQpKQorICAgIHJldHVybiBl
cnJvcnMKKworCitkZWYgcGFyc2VfaWdub3JlbGlzdChmKToKKyAgICAjIHR5cGU6IChJT1tieXRl
c10pIC0+IFR1cGxlW0lnbm9yZWxpc3QsIFNldFtUZXh0XV0KICAgICAiIiIKLSAgICBQYXJzZSB0
aGUgd2hpdGVsaXN0IGZpbGUgZ2l2ZW4gYnkgYGZgLCBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgc3Ry
dWN0dXJlLgorICAgIFBhcnNlIHRoZSBpZ25vcmVsaXN0IGZpbGUgZ2l2ZW4gYnkgYGZgLCBhbmQg
cmV0dXJuIHRoZSBwYXJzZWQgc3RydWN0dXJlLgorCisgICAgOnJldHVybnM6IGEgdHVwbGUgb2Yg
YW4gSWdub3JlbGlzdCBhbmQgYSBzZXQgb2YgZmlsZXMgdGhhdCBhcmUgY29tcGxldGVseQorICAg
ICAgICAgICAgICBza2lwcGVkIGJ5IHRoZSBsaW50ZXIgKGkuZS4gaGF2ZSBhICcqJyBlbnRyeSku
CiAgICAgIiIiCiAKLSAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNl
dCkpICAjIHR5cGU6IFdoaXRlbGlzdAotICAgIGlnbm9yZWRfZmlsZXMgPSBzZXQoKSAgIyB0eXBl
OiBTZXRbVGV4dF0KKyAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNl
dCkpICAjIHR5cGU6IElnbm9yZWxpc3QKKyAgICBza2lwcGVkX2ZpbGVzID0gc2V0KCkgICMgdHlw
ZTogU2V0W1RleHRdCiAKICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICBsaW5lID0gbGluZS5z
dHJpcCgpCkBAIC0zNDQsMzcgKzM4NywzNyBAQCBkZWYgcGFyc2Vfd2hpdGVsaXN0KGYpOgogICAg
ICAgICBmaWxlX21hdGNoID0gb3MucGF0aC5ub3JtY2FzZShmaWxlX21hdGNoKQogCiAgICAgICAg
IGlmICIqIiBpbiBlcnJvcl90eXBlczoKLSAgICAgICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGZp
bGVfbWF0Y2gpCisgICAgICAgICAgICBza2lwcGVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIGVycm9yX3R5cGUgaW4gZXJyb3JfdHlwZXM6CiAg
ICAgICAgICAgICAgICAgZGF0YVtlcnJvcl90eXBlXVtmaWxlX21hdGNoXS5hZGQobGluZV9udW1i
ZXIpCiAKLSAgICByZXR1cm4gZGF0YSwgaWdub3JlZF9maWxlcworICAgIHJldHVybiBkYXRhLCBz
a2lwcGVkX2ZpbGVzCiAKIAotZGVmIGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9y
cyk6Ci0gICAgIyB0eXBlOiAoV2hpdGVsaXN0LCBTZXF1ZW5jZVtydWxlcy5FcnJvcl0pIC0+IExp
c3RbcnVsZXMuRXJyb3JdCitkZWYgZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9y
cyk6CisgICAgIyB0eXBlOiAoSWdub3JlbGlzdCwgU2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBM
aXN0W3J1bGVzLkVycm9yXQogICAgICIiIgotICAgIEZpbHRlciBvdXQgdGhvc2UgZXJyb3JzIHRo
YXQgYXJlIHdoaXRlbGlzdGVkIGluIGBkYXRhYC4KKyAgICBGaWx0ZXIgb3V0IHRob3NlIGVycm9y
cyB0aGF0IGFyZSBpZ25vcmVkIGluIGBkYXRhYC4KICAgICAiIiIKIAogICAgIGlmIG5vdCBlcnJv
cnM6CiAgICAgICAgIHJldHVybiBbXQogCi0gICAgd2hpdGVsaXN0ZWQgPSBbRmFsc2UgZm9yIGl0
ZW0gaW4gcmFuZ2UobGVuKGVycm9ycykpXQorICAgIHNraXBwZWQgPSBbRmFsc2UgZm9yIGl0ZW0g
aW4gcmFuZ2UobGVuKGVycm9ycykpXQogCiAgICAgZm9yIGksIChlcnJvcl90eXBlLCBtc2csIHBh
dGgsIGxpbmUpIGluIGVudW1lcmF0ZShlcnJvcnMpOgogICAgICAgICBub3JtcGF0aCA9IG9zLnBh
dGgubm9ybWNhc2UocGF0aCkKLSAgICAgICAgIyBBbGxvdyB3aGl0ZWxpc3RpbmcgYWxsIGxpbnQg
ZXJyb3JzIGV4Y2VwdCB0aGUgSUdOT1JFRCBQQVRIIGxpbnQsCi0gICAgICAgICMgd2hpY2ggZXhw
bGFpbnMgaG93IHRvIGZpeCBpdCBjb3JyZWN0bHkgYW5kIHNob3VsZG4ndCBiZSBpZ25vcmVkLgor
ICAgICAgICAjIEFsbG93IHNraXBwaW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhlIElHTk9S
RUQgUEFUSCBsaW50LAorICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXggaXQgY29y
cmVjdGx5IGFuZCBzaG91bGRuJ3QgYmUgc2tpcHBlZC4KICAgICAgICAgaWYgZXJyb3JfdHlwZSBp
biBkYXRhIGFuZCBlcnJvcl90eXBlICE9ICJJR05PUkVEIFBBVEgiOgogICAgICAgICAgICAgd2xf
ZmlsZXMgPSBkYXRhW2Vycm9yX3R5cGVdCiAgICAgICAgICAgICBmb3IgZmlsZV9tYXRjaCwgYWxs
b3dlZF9saW5lcyBpbiBpdGVyaXRlbXMod2xfZmlsZXMpOgogICAgICAgICAgICAgICAgIGlmIE5v
bmUgaW4gYWxsb3dlZF9saW5lcyBvciBsaW5lIGluIGFsbG93ZWRfbGluZXM6CiAgICAgICAgICAg
ICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaGNhc2Uobm9ybXBhdGgsIGZpbGVfbWF0Y2gpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0ZWRbaV0gPSBUcnVlCisgICAgICAgICAg
ICAgICAgICAgICAgICBza2lwcGVkW2ldID0gVHJ1ZQogCi0gICAgcmV0dXJuIFtpdGVtIGZvciBp
LCBpdGVtIGluIGVudW1lcmF0ZShlcnJvcnMpIGlmIG5vdCB3aGl0ZWxpc3RlZFtpXV0KKyAgICBy
ZXR1cm4gW2l0ZW0gZm9yIGksIGl0ZW0gaW4gZW51bWVyYXRlKGVycm9ycykgaWYgbm90IHNraXBw
ZWRbaV1dCiAKIAogcmVnZXhwcyA9IFtpdGVtKCkgZm9yIGl0ZW0gaW4gICMgdHlwZTogaWdub3Jl
CkBAIC0zOTAsNyArNDMzLDEwIEBAIHJlZ2V4cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluICAjIHR5
cGU6IGlnbm9yZQogICAgICAgICAgICAgcnVsZXMuUHJpbnRSZWdleHAsCiAgICAgICAgICAgICBy
dWxlcy5MYXlvdXRUZXN0c1JlZ2V4cCwKICAgICAgICAgICAgIHJ1bGVzLk1pc3NpbmdEZXBzUmVn
ZXhwLAotICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBvd2Vyc1JlZ2V4cF1dCisgICAgICAgICAg
ICBydWxlcy5TcGVjaWFsUG93ZXJzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNzZXJ0VGhy
b3dzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuUHJvbWlzZVJlamVjdHNSZWdleHAsCisgICAg
ICAgICAgICBydWxlcy5Bc3NlcnRQcmVjb25kaXRpb25SZWdleHBdXQogCiAKIGRlZiBjaGVja19y
ZWdleHBfbGluZShyZXBvX3Jvb3QsIHBhdGgsIGYpOgpAQCAtNDIxLDYgKzQ2Nyw3IEBAIGRlZiBj
aGVja19wYXJzZWQocmVwb19yb290LCBwYXRoLCBmKToKIAogICAgICAgICBpZiAoc291cmNlX2Zp
bGUudHlwZSAhPSAic3VwcG9ydCIgYW5kCiAgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFt
ZV9pc19yZWZlcmVuY2UgYW5kCisgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFtZV9pc190
ZW50YXRpdmUgYW5kCiAgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUuc3BlY19saW5rcyk6CiAg
ICAgICAgICAgICByZXR1cm4gW3J1bGVzLk1pc3NpbmdMaW5rLmVycm9yKHBhdGgpXQogCkBAIC01
ODQsNyArNjMxLDggQEAgYXN0X2NoZWNrZXJzID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiBbT3Blbk1v
ZGVDaGVja11dCiAKIGRlZiBjaGVja19weXRob25fYXN0KHJlcG9fcm9vdCwgcGF0aCwgZik6CiAg
ICAgIyB0eXBlOiAoc3RyLCBzdHIsIElPW2J5dGVzXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KLSAg
ICBpZiBub3QgcGF0aC5lbmRzd2l0aCgiLnB5Iik6CisgICAgIyAqLnF1aWMucHkgYXJlIFB5dGhv
biAzIG9ubHkgYW5kIGNhbm5vdCBiZSBwYXJzZWQgYnkgUHl0aG9uIDIuCisgICAgaWYgbm90IHBh
dGguZW5kc3dpdGgoIi5weSIpIG9yIHBhdGguZW5kc3dpdGgoIi5xdWljLnB5Iik6CiAgICAgICAg
IHJldHVybiBbXQogCiAgICAgdHJ5OgpAQCAtNjA1LDMwICs2NTMsMTIgQEAgYnJva2VuX3B5dGhv
bl9tZXRhZGF0YSA9IHJlLmNvbXBpbGUoYnIiI1xzKk1FVEE6IikKIAogZGVmIGNoZWNrX2dsb2Jh
bF9tZXRhZGF0YSh2YWx1ZSk6CiAgICAgIyB0eXBlOiAoc3RyKSAtPiBJdGVyYWJsZVtUdXBsZVtU
eXBlW3J1bGVzLlJ1bGVdLCBUdXBsZVtBbnksIC4uLl1dXQotICAgIGdsb2JhbF92YWx1ZXMgPSB7
aXRlbS5zdHJpcCgpIGZvciBpdGVtIGluIHZhbHVlLnNwbGl0KGIiLCIpIGlmIGl0ZW0uc3RyaXAo
KX0KLQotICAgIGluY2x1ZGVkX3ZhcmlhbnRzID0gc2V0LnVuaW9uKGdldF9kZWZhdWx0X2FueV92
YXJpYW50cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooZ2V0X2FueV92
YXJpYW50cyh2KSBmb3IgdiBpbiBnbG9iYWxfdmFsdWVzIGlmIG5vdCB2LnN0YXJ0c3dpdGgoYiIh
IikpKQorICAgIGdsb2JhbF92YWx1ZXMgPSB7aXRlbS5zdHJpcCgpLmRlY29kZSgidXRmOCIpIGZv
ciBpdGVtIGluIHZhbHVlLnNwbGl0KGIiLCIpIGlmIGl0ZW0uc3RyaXAoKX0KIAorICAgICMgVE9E
TzogdGhpcyBjb3VsZCBjaGVjayBmb3IgZHVwbGljYXRlcyBhbmQgc3VjaAogICAgIGZvciBnbG9i
YWxfdmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgaWYgZ2xvYmFsX3ZhbHVlLnN0YXJ0
c3dpdGgoYiIhIik6Ci0gICAgICAgICAgICBleGNsdWRlZF92YWx1ZSA9IGdsb2JhbF92YWx1ZVsx
Ol0KLSAgICAgICAgICAgIGlmIG5vdCBnZXRfYW55X3ZhcmlhbnRzKGV4Y2x1ZGVkX3ZhbHVlKToK
LSAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuVW5rbm93bkdsb2JhbE1ldGFkYXRhLCAoKSkK
LQotICAgICAgICAgICAgZWxpZiBleGNsdWRlZF92YWx1ZSBpbiBnbG9iYWxfdmFsdWVzOgotICAg
ICAgICAgICAgICAgIHlpZWxkIChydWxlcy5Ccm9rZW5HbG9iYWxNZXRhZGF0YSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgKCgiQ2Fubm90IHNwZWNpZnkgYm90aCAlcyBhbmQgJXMiICUgKGdsb2Jh
bF92YWx1ZSwgZXhjbHVkZWRfdmFsdWUpKSwpKQotCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIGV4Y2x1ZGVkX3ZhcmlhbnRzID0gZ2V0X2FueV92YXJpYW50cyhleGNsdWRlZF92
YWx1ZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgKGV4Y2x1ZGVkX3ZhcmlhbnRzICYgaW5jbHVk
ZWRfdmFyaWFudHMpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuQnJva2VuR2xv
YmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJDYW5ub3QgZXhjbHVk
ZSAlcyBpZiBpdCBpcyBub3QgaW5jbHVkZWQiICUgKGV4Y2x1ZGVkX3ZhbHVlLCkpLCkpCi0KLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG5vdCBnZXRfYW55X3ZhcmlhbnRzKGdsb2JhbF92
YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25vd25HbG9iYWxNZXRhZGF0
YSwgKCkpCisgICAgICAgIGlmIG5vdCBnZXRfYW55X3ZhcmlhbnRzKGdsb2JhbF92YWx1ZSk6Cisg
ICAgICAgICAgICB5aWVsZCAocnVsZXMuVW5rbm93bkdsb2JhbE1ldGFkYXRhLCAoKSkKIAogCiBk
ZWYgY2hlY2tfc2NyaXB0X21ldGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CkBAIC02NTcsMTMg
KzY4Nyw3IEBAIGRlZiBjaGVja19zY3JpcHRfbWV0YWRhdGEocmVwb19yb290LCBwYXRoLCBmKToK
ICAgICAgICAgICAgICAgICBpZiB2YWx1ZSAhPSBiImxvbmciOgogICAgICAgICAgICAgICAgICAg
ICBlcnJvcnMuYXBwZW5kKHJ1bGVzLlVua25vd25UaW1lb3V0TWV0YWRhdGEuZXJyb3IocGF0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmVfbm89aWR4ICsgMSkpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSBi
InRpdGxlIjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIGtleSA9PSBi
InNjcmlwdCI6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBrZXkgPT0g
YiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgZWxpZiBrZXkgbm90IGluIChiInRpdGxlIiwgYiJzY3JpcHQiLCBiInZhcmlhbnQi
LCBiInF1aWMiKToKICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLlVua25vd25N
ZXRhZGF0YS5lcnJvcihwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbm89aWR4ICsgMSkpCiAgICAgICAgIGVsc2U6CkBA
IC04MjUsNyArODQ5LDcgQEAgZGVmIGxpbnRfcGF0aHMoa3dhcmdzLCB3cHRfcm9vdCk6CiAgICAg
ICAgIGZvcmNlX2FsbCA9IEZhbHNlCiAgICAgICAgIGZvciBwYXRoIGluIGNoYW5nZWRfcGF0aHM6
CiAgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpCi0gICAg
ICAgICAgICBpZiBwYXRoID09ICJsaW50LndoaXRlbGlzdCIgb3IgcGF0aC5zdGFydHN3aXRoKCJ0
b29scy9saW50LyIpOgorICAgICAgICAgICAgaWYgcGF0aCA9PSAibGludC5pZ25vcmUiIG9yIHBh
dGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKICAgICAgICAgICAgICAgICBmb3JjZV9hbGwg
PSBUcnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgcGF0aHMgPSAobGlzdChjaGFu
Z2VkX3BhdGhzKSBpZiBub3QgZm9yY2VfYWxsICAjIHR5cGU6IGlnbm9yZQpAQCAtODQzLDcgKzg2
Nyw3IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJPdXRwdXQgbWFjaGluZS1yZWFkYWJsZSBKU09OIGZvcm1hdCIpCiAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgiLS1tYXJrZG93biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJPdXRwdXQgbWFya2Rvd24iKQotICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoIi0tcmVwby1yb290IiwgaGVscD0iVGhlIFdQVCBkaXJlY3RvcnkuIFVzZSB0aGlzIgorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcmVwby1yb290IiwgaGVscD0iVGhlIFdQVCBkaXJlY3Rv
cnkuIFVzZSB0aGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gaWYgdGhlIGxp
bnQgc2NyaXB0IGV4aXN0cyBvdXRzaWRlIHRoZSByZXBvc2l0b3J5IikKICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCItLWlnbm9yZS1nbG9iIiwgaGVscD0iQWRkaXRpb25hbCBmaWxlIGdsb2IgdG8g
aWdub3JlLiIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1hbGwiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBoZWxwPSJJZiBubyBwYXRocyBhcmUgcGFzc2VkLCB0cnkgdG8gbGludCB0aGUgd2hv
bGUgIgpAQCAtODc5LDExICs5MDMsMTEgQEAgZGVmIGxpbnQocmVwb19yb290LCBwYXRocywgb3V0
cHV0X2Zvcm1hdCwgaWdub3JlX2dsb2I9c3RyKCkpOgogICAgIGVycm9yX2NvdW50ID0gZGVmYXVs
dGRpY3QoaW50KSAgIyB0eXBlOiBEaWN0W1RleHQsIGludF0KICAgICBsYXN0ID0gTm9uZQogCi0g
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyZXBvX3Jvb3QsICJsaW50LndoaXRlbGlzdCIpKSBh
cyBmOgotICAgICAgICB3aGl0ZWxpc3QsIGlnbm9yZWRfZmlsZXMgPSBwYXJzZV93aGl0ZWxpc3Qo
ZikKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJlcG9fcm9vdCwgImxpbnQuaWdub3JlIikp
IGFzIGY6CisgICAgICAgIGlnbm9yZWxpc3QsIHNraXBwZWRfZmlsZXMgPSBwYXJzZV9pZ25vcmVs
aXN0KGYpCiAKICAgICBpZiBpZ25vcmVfZ2xvYjoKLSAgICAgICAgaWdub3JlZF9maWxlcy5hZGQo
aWdub3JlX2dsb2IpCisgICAgICAgIHNraXBwZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQogCiAg
ICAgb3V0cHV0X2Vycm9ycyA9IHsianNvbiI6IG91dHB1dF9lcnJvcnNfanNvbiwKICAgICAgICAg
ICAgICAgICAgICAgICJtYXJrZG93biI6IG91dHB1dF9lcnJvcnNfbWFya2Rvd24sCkBAIC04OTks
NyArOTIzLDcgQEAgZGVmIGxpbnQocmVwb19yb290LCBwYXRocywgb3V0cHV0X2Zvcm1hdCwgaWdu
b3JlX2dsb2I9c3RyKCkpOgogICAgICAgICAgICAgICAgICAgYSB0dXBsZSBvZiB0aGUgZXJyb3Ig
dHlwZSBhbmQgdGhlIHBhdGggb3RoZXJ3aXNlCiAgICAgICAgICIiIgogCi0gICAgICAgIGVycm9y
cyA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgZXJyb3JzKQorICAgICAgICBl
cnJvcnMgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgZXJyb3JzKQogCiAg
ICAgICAgIGlmIG5vdCBlcnJvcnM6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtOTE2LDcg
Kzk0MCw3IEBAIGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9y
ZV9nbG9iPXN0cigpKToKICAgICAgICAgICAgIHBhdGhzLnJlbW92ZShwYXRoKQogICAgICAgICAg
ICAgY29udGludWUKIAotICAgICAgICBpZiBhbnkoZm5tYXRjaC5mbm1hdGNoKHBhdGgsIGZpbGVf
bWF0Y2gpIGZvciBmaWxlX21hdGNoIGluIGlnbm9yZWRfZmlsZXMpOgorICAgICAgICBpZiBhbnko
Zm5tYXRjaC5mbm1hdGNoKHBhdGgsIGZpbGVfbWF0Y2gpIGZvciBmaWxlX21hdGNoIGluIHNraXBw
ZWRfZmlsZXMpOgogICAgICAgICAgICAgcGF0aHMucmVtb3ZlKHBhdGgpCiAgICAgICAgICAgICBj
b250aW51ZQogCkBAIC05NDIsNyArOTY2LDcgQEAgZGVmIGxpbnQocmVwb19yb290LCBwYXRocywg
b3V0cHV0X2Zvcm1hdCwgaWdub3JlX2dsb2I9c3RyKCkpOgogCiBwYXRoX2xpbnRzID0gW2NoZWNr
X2ZpbGVfdHlwZSwgY2hlY2tfcGF0aF9sZW5ndGgsIGNoZWNrX3dvcmtlcl9jb2xsaXNpb24sIGNo
ZWNrX2FoZW1fY29weSwKICAgICAgICAgICAgICAgY2hlY2tfZ2l0aWdub3JlX2ZpbGVdCi1hbGxf
cGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV0KK2FsbF9wYXRoc19saW50
cyA9IFtjaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlLCBjaGVja191bmlxdWVfdGVzdGhhcm5lc3Nf
YmFzZW5hbWVzXQogZmlsZV9saW50cyA9IFtjaGVja19yZWdleHBfbGluZSwgY2hlY2tfcGFyc2Vk
LCBjaGVja19weXRob25fYXN0LCBjaGVja19zY3JpcHRfbWV0YWRhdGEsCiAgICAgICAgICAgICAg
IGNoZWNrX2FoZW1fc3lzdGVtX2ZvbnRdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpp
bmRleCBmYWEyODVmZDdjZGJjYzQwNmY4YzAyYWIwM2VkNmJlYjM2ZWIwYmVmLi42OTVmNmNkNGU1
MzI4Y2FmMmYwODVhMTE1ZDMxYTljMGI0YWUyNzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3J1
bGVzLnB5CkBAIC0zMjIsNiArMzIyLDE1IEBAIGNsYXNzIFRlc3RoYXJuZXNzSW5PdGhlclR5cGUo
UnVsZSk6CiAgICAgZGVzY3JpcHRpb24gPSAidGVzdGhhcm5lc3MuanMgaW5jbHVkZWQgaW4gYSAl
cyB0ZXN0IgogCiAKK2NsYXNzIER1cGxpY2F0ZUJhc2VuYW1lUGF0aChSdWxlKToKKyAgICBuYW1l
ID0gIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIgorICAgIGRlc2NyaXB0aW9uID0gY29sbGFwc2Uo
IiIiCisgICAgICAgICAgICBGaWxlIGhhcyBpZGVudGljYWwgYmFzZW5hbWUgcGF0aCAocGF0aCBl
eGNsdWRpbmcgZXh0ZW5zaW9uKSBhcworICAgICAgICAgICAgb3RoZXIgZmlsZShzKSAoZm91bmQg
ZXh0ZW5zaW9uczogJXMpCisgICAgIiIiKQorICAgIHRvX2ZpeCA9ICJyZW5hbWUgZmlsZXMgc28g
dGhleSBoYXZlIHVuaXF1ZSBiYXNlbmFtZSBwYXRocyIKKworCiBjbGFzcyBSZWdleHAoc2l4Lndp
dGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CiAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAg
ICAgZGVmIHBhdHRlcm4oc2VsZik6CkBAIC00NjIsMyArNDcxLDI3IEBAIGNsYXNzIFRyYWlsaW5n
V2hpdGVzcGFjZVJlZ2V4cChSZWdleHApOgogICAgIGRlc2NyaXB0aW9uID0gIldoaXRlc3BhY2Ug
YXQgRU9MIgogICAgIHBhdHRlcm4gPSBiIlsgXHRcZlx2XSQiCiAgICAgdG9fZml4ID0gIiIiUmVt
b3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSBhbGwgbGluZXMgaW4gdGhlIGZpbGUuIiIiCisK
KworY2xhc3MgQXNzZXJ0VGhyb3dzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyIlte
Ll1hc3NlcnRfdGhyb3dzXCgiCisgICAgbmFtZSA9ICJBU1NFUlRfVEhST1dTIgorICAgIGZpbGVf
ZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAi
LnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGFuIGBhc3NlcnRf
dGhyb3dzKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVwbGFjZSB3aXRoIGBhc3NlcnRf
dGhyb3dzX2RvbWAgb3IgYGFzc2VydF90aHJvd3NfanNgIG9yIGBhc3NlcnRfdGhyb3dzX2V4YWN0
bHlgIiIiCisKKworY2xhc3MgUHJvbWlzZVJlamVjdHNSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0
ZXJuID0gYnIicHJvbWlzZV9yZWplY3RzXCgiCisgICAgbmFtZSA9ICJQUk9NSVNFX1JFSkVDVFMi
CisgICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5qcyIsICIueGh0Iiwg
Ii54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9ICJUZXN0LWZpbGUgbGluZSBoYXMg
YSBgcHJvbWlzZV9yZWplY3RzKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVwbGFjZSB3
aXRoIHByb21pc2VfcmVqZWN0c19kb20gb3IgcHJvbWlzZV9yZWplY3RzX2pzIG9yIGBwcm9taXNl
X3JlamVjdHNfZXhhY3RseWAiIiIKKworCitjbGFzcyBBc3NlcnRQcmVjb25kaXRpb25SZWdleHAo
UmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYnIiW14uXWFzc2VydF9wcmVjb25kaXRpb25cKCIKKyAg
ICBuYW1lID0gIkFTU0VSVC1QUkVDT05ESVRJT04iCisgICAgZmlsZV9leHRlbnNpb25zID0gWyIu
aHRtbCIsICIuaHRtIiwgIi5qcyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNj
cmlwdGlvbiA9ICJUZXN0LWZpbGUgbGluZSBoYXMgYW4gYGFzc2VydF9wcmVjb25kaXRpb24oLi4u
KWAgY2FsbCIKKyAgICB0b19maXggPSAiIiJSZXBsYWNlIHdpdGggYGFzc2VydF9pbXBsZW1lbnRz
YCBvciBgYXNzZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWxgIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvbGludC5pZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc2M2U0
NDMyZTVhZmEyMTIzMDM1MzQ1ZTEzMGQwMTg3MTBmZmRkMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9saW50Lmlnbm9yZQpAQCAtMCwwICsxIEBACisqOmJyb2tlbl9pZ25vcmVkLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50Lndo
aXRlbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2M2U0NDMyZTVhZmEyMTIz
MDM1MzQ1ZTEzMGQwMTg3MTBmZmRkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi0qOmJyb2tlbl9pZ25vcmVkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90
ZXN0cy9kaXIxL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNDEyNTkzYjA0NWVmNDc1ZTBhZjVlNTg1M2RlOGZmNThiY2Q3MjQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCkBAIC0wLDAgKzEsNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMv
ZGlyMS9hLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODU1ZGFi
NmE3N2NiMjgxMDNjYzE1OGZmMGY5Y2NkZTk2YjUyNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3Rlc3RzL2RpcjEvYS5qcwpAQCAtMCwwICsxLDYgQEAKKy8vIFRoaXMgaXMgYSBkdW1t
eSBKYXZhU2NyaXB0IGZpbGUsIG1lYW50IHRvIGluZGljYXRlIGEgJ3N1cHBvcnQnIGZpbGUgb2YK
Ky8vIHNvcnRzIHRoYXQgbWF5IGJlIGluY2x1ZGVkIGJ5IHNvbWUgdGVzdC4KKworZnVuY3Rpb24g
aGVsbG9Xb3JsZCgpIHsKKyAgcmV0dXJuICdIZWxsbywgd29ybGQhJzsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnho
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4NjI1NWVmYjUzMWE0ZDVhNDQzMGY5NTFiMTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1sCkBAIC0wLDAg
KzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxodG1sIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS90ZXN0cy9kaXIxL2IuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2IuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNDEyNTkzYjA0NWVmNDc1ZTBhZjVlNTg1M2RlOGZmNThiY2Q3MjQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYi5odG1sCkBAIC0wLDAgKzEsNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBv
cnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAyMjk5MWQ5YmU2Y2NmNDE4ODAxMDAwNmE2ZTZkODM2OThkMjhl
N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDIwIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRt
bAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2IuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rl
c3RzL2RpcjIvYS54aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzhiNGNjMmU1MjIzYTg2MjU1ZWZiNTMxYTRkNWE0NDMwZjk1MWIxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwKQEAgLTAsMCArMSw1IEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2Rp
cjIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi93M2MtaW1wb3J0LmxvZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iY2Q2NjllNjUzYmZjMjM3YjYzNzhmM2FlOWVlNjY3NTBjNTUwYmFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwxNyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvYS54aHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9n
CmluZGV4IDQ2MDU2ZTY3MTNmZDMxM2RmZTI0YjFiODgyYzI4Mzg5Y2JlY2ZjOWMuLmYzNGQxNjcz
MGY3MDA0Zjc0ZDIzNGM5Y2NhZGIyYzBlY2VkMmI1MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93
M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKQEAgLTE4LDUgKzE4
LDUgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuLmh0bWwKIC9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
YnJva2VuX2lnbm9yZWQuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9kZXBlbmRlbmN5Lmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvbGludC53aGl0ZWxpc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvb2th
eS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmls
ZV9saW50cy5weQppbmRleCAwOGMwOWI2YjA5NTBiMmNmNTQ4YzNiNWU0MTUzMDM1OTdkZDhjNjU0
Li43ZGFjZmFkNjM4MGRjOGI2NjhhMjJkYzdjNGZlMmU3NGQzNzU0NjlmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKQEAgLTYz
Myw2ICs2MzMsOCBAQCBkZWYgdGVzdF9sYXRlX3RpbWVvdXQoKToKICAgICAgICAgICAgIF0KIAog
CisjIE5vdGU6IFRoaXMgdGVzdCBjaGVja3MgdGhlIHByaW50ICpzdGF0ZW1lbnQqICh3aGljaCBk
b2Vzbid0IGV4aXN0IGluIHB5dGhvbiAzKS4KKyMgICAgICAgVGhlIHByaW50ICpmdW5jdGlvbiog
aXMgY2hlY2tlZCBpbiB0ZXN0X3ByaW50X2Z1bmN0aW9uIGJlbG93LgogQHB5dGVzdC5tYXJrLnNr
aXBpZihzaXguUFkzLCByZWFzb249IkNhbm5vdCBwYXJzZSBwcmludCBzdGF0ZW1lbnRzIGZyb20g
cHl0aG9uIDMiKQogZGVmIHRlc3RfcHJpbnRfc3RhdGVtZW50KCk6CiAgICAgZXJyb3JfbWFwID0g
Y2hlY2tfd2l0aF9maWxlcyhiImRlZiBmb28oKTpcbiAgcHJpbnQgJ3N0YXRlbWVudCdcbiAgcHJp
bnRcbiIpCkBAIC03OTQsNiArNzk2LDIwIEBAIGRlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfbWFu
dWFsKCk6CiAgICAgXQogCiAKK2RlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfdGVudGF0aXZlKCk6
CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKworICAgICMgVGhlIHRlbnRhdGl2ZSBmbGFnIGNvdmVycyB0ZXN0cyB0
aGF0IG1ha2UgYXNzZXJ0aW9ucyAnbm90IHlldCByZXF1aXJlZCBieQorICAgICMgYW55IHNwZWNp
ZmljYXRpb24nLCBzbyB0aGV5IG5lZWQgbm90IGhhdmUgYSBzcGVjaWZpY2F0aW9uIGxpbmsuCisg
ICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFyLnRlbnRhdGl2
ZS5odG1sIiwgc2l4LkJ5dGVzSU8oY29kZSkpCisgICAgYXNzZXJ0IG5vdCBlcnJvcnMKKworCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZpbGVuYW1lIiwgWwogICAgICJmb28ud29ya2VyLmpz
IiwKICAgICAiZm9vLmFueS5qcyIsCkBAIC04NDIsMTcgKzg1OCwxNyBAQCBkZWYgdGVzdF9zY3Jp
cHRfbWV0YWRhdGEoZmlsZW5hbWUsIGlucHV0LCBlcnJvcik6CiAKIEBweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgiZ2xvYmFscyxlcnJvciIsIFsKICAgICAoYiIiLCBOb25lKSwKLSAgICAoYiJkZWZh
dWx0IiwgTm9uZSksCi0gICAgKGIiIWRlZmF1bHQiLCBOb25lKSwKKyAgICAoYiJkZWZhdWx0Iiwg
IlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIiIWRlZmF1bHQiLCAiVU5LTk9XTi1H
TE9CQUwtTUVUQURBVEEiKSwKICAgICAoYiJ3aW5kb3ciLCBOb25lKSwKLSAgICAoYiIhd2luZG93
IiwgTm9uZSksCi0gICAgKGIiIWRlZGljYXRlZHdvcmtlciIsIE5vbmUpLAotICAgIChiIndpbmRv
dywgIXdpbmRvdyIsICJCUk9LRU4tR0xPQkFMLU1FVEFEQVRBIiksCi0gICAgKGIiIXNlcnZpY2V3
b3JrZXIiLCAiQlJPS0VOLUdMT0JBTC1NRVRBREFUQSIpLAotICAgIChiInNlcnZpY2V3b3JrZXIs
ICFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1HTE9CQUwtTUVUQURBVEEiKSwKLSAgICAoYiJ3b3Jr
ZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29y
a2VyIiwgTm9uZSksCi0gICAgKGIiIXdvcmtlciIsIE5vbmUpLAorICAgIChiIiF3aW5kb3ciLCAi
VU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKKyAgICAoYiIhZGVkaWNhdGVkd29ya2VyIiwgIlVO
S05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIid2luZG93LCAhd2luZG93IiwgIlVOS05P
V04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIiIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1H
TE9CQUwtTUVUQURBVEEiKSwKKyAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIs
ICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChiIndvcmtlciwgIWRlZGljYXRlZHdv
cmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChiIndvcmtlciwgIXNlcnZp
Y2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKKyAgICAoYiIhd29ya2VyIiwg
IlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiAgICAgKGIiZm9vIiwgIlVOS05PV04tR0xPQkFM
LU1FVEFEQVRBIiksCiAgICAgKGIiIWZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAog
XSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CmluZGV4
IGFmMmI3ZDNkNGFhMTlmMGMxZDcyYTU1NzViNTAxM2M3ODk3ZTFkYzQuLjEwZDk3MjhiNDA1NzUx
YmRiMjhkYjVlMDE5MzE2MmVjN2Y2ZGY0ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQpAQCAtOCw3ICs4LDcgQEAgaW1wb3J0IHNpeAogCiBmcm9t
IC4uLmxvY2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAogZnJvbSAuLiBpbXBvcnQgbGludCBhcyBs
aW50X21vZAotZnJvbSAuLmxpbnQgaW1wb3J0IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzLCBwYXJz
ZV93aGl0ZWxpc3QsIGxpbnQsIGNyZWF0ZV9wYXJzZXIKK2Zyb20gLi5saW50IGltcG9ydCBmaWx0
ZXJfaWdub3JlbGlzdF9lcnJvcnMsIHBhcnNlX2lnbm9yZWxpc3QsIGxpbnQsIGNyZWF0ZV9wYXJz
ZXIKIAogX2R1bW15X3JlcG8gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KSwgImR1bW15IikKIApAQCAtMTcsOCArMTcsOCBAQCBkZWYgX21vY2tfbGludChuYW1lLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIG1vY2sucGF0Y2gobGludF9tb2QuX19uYW1lX18gKyAiLiIgKyBu
YW1lLCB3cmFwcz13cmFwcGVkLCAqKmt3YXJncykKIAogCi1kZWYgdGVzdF9maWx0ZXJfd2hpdGVs
aXN0X2Vycm9ycygpOgotICAgIHdoaXRlbGlzdCA9IHsKK2RlZiB0ZXN0X2ZpbHRlcl9pZ25vcmVs
aXN0X2Vycm9ycygpOgorICAgIGlnbm9yZWxpc3QgPSB7CiAgICAgICAgICdDT05TT0xFJzogewog
ICAgICAgICAgICAgJ3N2Zy8qJzogezEyfQogICAgICAgICB9LApAQCAtMjYsMzQgKzI2LDM0IEBA
IGRlZiB0ZXN0X2ZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKCk6CiAgICAgICAgICAgICAnc3ZnLyon
OiB7Tm9uZX0KICAgICAgICAgfQogICAgIH0KLSAgICAjIHBhcnNlX3doaXRlbGlzdCBub3JtYWxp
c2VzIHRoZSBjYXNlL3BhdGggb2YgdGhlIG1hdGNoIHN0cmluZyBzbyBuZWVkIHRvIGRvIHRoZSBz
YW1lCi0gICAgd2hpdGVsaXN0ID0ge2U6IHtvcy5wYXRoLm5vcm1jYXNlKGspOiB2IGZvciBrLCB2
IGluIHAuaXRlbXMoKX0KLSAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gd2hpdGVsaXN0Lml0
ZW1zKCl9Ci0gICAgIyBwYXRocyBwYXNzZWQgaW50byBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyBh
cmUgYWx3YXlzIFVuaXggc3R5bGUKKyAgICAjIHBhcnNlX2lnbm9yZWxpc3Qgbm9ybWFsaXNlcyB0
aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRjaCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQor
ICAgIGlnbm9yZWxpc3QgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4g
cC5pdGVtcygpfQorICAgICAgICAgICAgICAgICBmb3IgZSwgcCBpbiBpZ25vcmVsaXN0Lml0ZW1z
KCl9CisgICAgIyBwYXRocyBwYXNzZWQgaW50byBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMgYXJl
IGFsd2F5cyBVbml4IHN0eWxlCiAgICAgZmlsdGVyZWRmaWxlID0gJ3N2Zy90ZXN0Lmh0bWwnCiAg
ICAgdW5maWx0ZXJlZGZpbGUgPSAnaHRtbC90ZXN0Lmh0bWwnCiAgICAgIyBUZXN0cyBmb3IgcGFz
c2luZyBubyBlcnJvcnMKLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdo
aXRlbGlzdCwgW10pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdu
b3JlbGlzdCwgW10pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQgPSBm
aWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGZpbHRlcmVkID0gZmls
dGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAgIGFzc2VydCBmaWx0ZXJl
ZCA9PSBbXQogICAgICMgVGVzdHMgZm9yIGZpbHRlcmluZyBvbiBmaWxlIGFuZCBsaW5lIG51bWJl
cgotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbWydD
T05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9p
Z25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmls
ZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KLSAgICBmaWx0ZXJlZCA9IGZpbHRl
cl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCB1bmZpbHRlcmVk
ZmlsZSwgMTJdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25v
cmVsaXN0LCBbWydDT05TT0xFJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMl1dKQogICAgIGFzc2Vy
dCBmaWx0ZXJlZCA9PSBbWydDT05TT0xFJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMl1dCi0gICAg
ZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0NPTlNPTEUn
LCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxp
c3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1d
KQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwg
MTFdXQogICAgICMgVGVzdHMgZm9yIGZpbHRlcmluZyBvbiBqdXN0IGZpbGUKLSAgICBmaWx0ZXJl
ZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAn
JywgZmlsdGVyZWRmaWxlLCAxMl1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3Rf
ZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJd
XSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAnJywgZmlsdGVyZWRmaWxl
LCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxp
c3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQg
ZmlsdGVyZWQgPT0gW10KLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdo
aXRlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDExXV0pCisgICAg
ZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snSU5ERU5U
IFRBQlMnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09
IFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMV1dCiAKIAotZGVmIHRlc3Rf
cGFyc2Vfd2hpdGVsaXN0KCk6CitkZWYgdGVzdF9wYXJzZV9pZ25vcmVsaXN0KCk6CiAgICAgaW5w
dXRfYnVmZmVyID0gc2l4LlN0cmluZ0lPKCIiIgogIyBDb21tZW50CiBDUiBBVCBFT0w6IHN2Zy9p
bXBvcnQvKgpAQCAtMTAwLDEwICsxMDAsMTAgQEAgQ1IgQVQgRU9MLCBJTkRFTlQgVEFCUzogaHRt
bC90ZXN0Mi5qczogNDIKICAgICB9CiAgICAgZXhwZWN0ZWRfZGF0YSA9IHtlOiB7b3MucGF0aC5u
b3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9CiAgICAgICAgICAgICAgICAgICAg
ICBmb3IgZSwgcCBpbiBleHBlY3RlZF9kYXRhLml0ZW1zKCl9Ci0gICAgZXhwZWN0ZWRfaWdub3Jl
ZCA9IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVzb3VyY2VzLyoi
LCAiKi5wbmcifX0KLSAgICBkYXRhLCBpZ25vcmVkID0gcGFyc2Vfd2hpdGVsaXN0KGlucHV0X2J1
ZmZlcikKKyAgICBleHBlY3RlZF9za2lwcGVkID0ge29zLnBhdGgubm9ybWNhc2UoeCkgZm9yIHgg
aW4geyIqLnBkZiIsICJyZXNvdXJjZXMvKiIsICIqLnBuZyJ9fQorICAgIGRhdGEsIHNraXBwZWRf
ZmlsZXMgPSBwYXJzZV9pZ25vcmVsaXN0KGlucHV0X2J1ZmZlcikKICAgICBhc3NlcnQgZGF0YSA9
PSBleHBlY3RlZF9kYXRhCi0gICAgYXNzZXJ0IGlnbm9yZWQgPT0gZXhwZWN0ZWRfaWdub3JlZAor
ICAgIGFzc2VydCBza2lwcGVkX2ZpbGVzID09IGV4cGVjdGVkX3NraXBwZWQKIAogCiBkZWYgdGVz
dF9saW50X25vX2ZpbGVzKGNhcGxvZyk6CkBAIC0zOTgsNiArMzk4LDY1IEBAIGRlZiB0ZXN0X2No
ZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfaWdub3JlZF9kaXIoY2FwbG9nKToKICAgICBhc3NlcnQg
Y2FwbG9nLnRleHQgPT0gIiIKIAogCitkZWYgdGVzdF9jaGVja191bmlxdWVfdGVzdGhhcm5lc3Nf
YmFzZW5hbWVfc2FtZV9iYXNlbmFtZShjYXBsb2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVy
ZSBhcmUgdGVzdGhhcm5lc3MgZmlsZXMgd2l0aCBjb25mbGljdGluZyBiYXNlbmFtZSBwYXRocy4K
KyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKF9kdW1teV9yZXBvLCAndGVz
dHMnLCAnZGlyMScsICdhLmh0bWwnKSkKKyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0
aC5qb2luKF9kdW1teV9yZXBvLCAndGVzdHMnLCAnZGlyMScsICdhLnhodG1sJykpCisKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVz
dHMvZGlyMS9hLmh0bWwiLCAidGVzdHMvZGlyMS9hLnhodG1sIl0sICJub3JtYWwiKQorICAgICAg
ICAgICAgIyBUaGVyZSB3aWxsIGJlIG9uZSBmYWlsdXJlIGZvciBlYWNoIGZpbGUuCisgICAgICAg
ICAgICBhc3NlcnQgcnYgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRo
LmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCAiRFVQTElDQVRFLUJBU0VOQU1FLVBB
VEgiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNz
X2Jhc2VuYW1lX2RpZmZlcmVudF9uYW1lKGNhcGxvZyk6CisgICAgIyBQcmVjb25kaXRpb246IFRo
ZXJlIGFyZSB0d28gdGVzdGhhcm5lc3MgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdpdGgK
KyAgICAjIGRpZmZlcmVudCBuYW1lcy4KKyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0
aC5qb2luKF9kdW1teV9yZXBvLCAndGVzdHMnLCAnZGlyMScsICdhLmh0bWwnKSkKKyAgICBhc3Nl
cnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKF9kdW1teV9yZXBvLCAndGVzdHMnLCAnZGly
MScsICdiLmh0bWwnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1v
Y2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29u
dGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0g
bGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIxL2IuaHRt
bCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBh
c3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3Nl
cnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0
IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNz
X2Jhc2VuYW1lX2RpZmZlcmVudF9kaXIoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhl
cmUgYXJlIHR3byB0ZXN0aGFybmVzcyBmaWxlcyBpbiBkaWZmZXJlbnQgZGlyZWN0b3JpZXMKKyAg
ICAjIHdpdGggdGhlIHNhbWUgYmFzZW5hbWUuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjInLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikg
YXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmls
ZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAg
cnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjIv
YS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAg
YXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tfdW5pcXVlX3Rlc3Ro
YXJuZXNzX2Jhc2VuYW1lX25vdF90ZXN0aGFybmVzcyhjYXBsb2cpOgorICAgICMgUHJlY29uZGl0
aW9uOiBUaGVyZSBhcmUgbm9uLXRlc3RoYXJuZXNzIGZpbGVzIHdpdGggY29uZmxpY3RpbmcgYmFz
ZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVt
bXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGgu
ZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5qcycp
KQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3Bh
dGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9y
ZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEvYS5qcyJdLCAibm9ybWFsIikK
KyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2No
ZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09
ICIiCisKKwogZGVmIHRlc3RfaWdub3JlX2dsb2IoY2FwbG9nKToKICAgICAjIExpbnQgdHdvIGZp
bGVzIGluIHRoZSByZWYvIGRpcmVjdG9yeSwgYW5kIHBhc3MgaW4gaWdub3JlX2dsb2IgdG8gb21p
dCBvbmUKICAgICAjIG9mIHRoZW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKaW5kZXgg
ZjZlMjRiNDg2ZDU4Yjc4OGI5NDQxMTc1YzVlMWM4OWY5Mzg3NGZlYi4uY2UzYjQxZTMwMGM5ZjEx
MzgwZWEwNjVmNWIyODhkNWFlZjgxMjU4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbG9jYWxwYXRocy5w
eQpAQCAtNiw3ICs2LDcgQEAgcmVwb19yb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9p
bihoZXJlLCBvcy5wYXJkaXIpKQogCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhl
cmUpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAid3B0c2VydmUiKSkK
LXN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInB5d2Vic29ja2V0IikpCitz
eXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJweXdl
YnNvY2tldDMiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJk
X3BhcnR5IiwgImF0b21pY3dyaXRlcyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAiYXR0cnMiLCAic3JjIikpCiBzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJmdW5jc2lncyIpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKaW5kZXggNDMw
N2IxYzJjNDMzMmIyOTQ5OTlhNWZhMzEzYTZhMjhlZWM1N2ZmNi4uODA0MjM0ODBiYzU5NzU0MjY5
MTAxMGE1MGNhMmMxNmY5NDVhNzA4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCkBAIC0xLDIxMjUgKzEsMjEyNSBAQAotPCFFTlRJVFkg
VGFiICImI3g5OyI+Ci08IUVOVElUWSBOZXdMaW5lICImI3hBOyI+Ci08IUVOVElUWSBleGNsICIm
I3gyMTsiPgotPCFFTlRJVFkgcXVvdCAiJiN4MjI7Ij4KLTwhRU5USVRZIFFVT1QgIiYjeDIyOyI+
Ci08IUVOVElUWSBudW0gIiYjeDIzOyI+Ci08IUVOVElUWSBkb2xsYXIgIiYjeDI0OyI+Ci08IUVO
VElUWSBwZXJjbnQgIiYjeDI1OyI+Ci08IUVOVElUWSBhbXAgIiYjeDI2OyN4MjY7Ij4KLTwhRU5U
SVRZIEFNUCAiJiN4MjY7I3gyNjsiPgotPCFFTlRJVFkgYXBvcyAiJiN4Mjc7Ij4KLTwhRU5USVRZ
IGxwYXIgIiYjeDI4OyI+Ci08IUVOVElUWSBycGFyICImI3gyOTsiPgotPCFFTlRJVFkgYXN0ICIm
I3gyQTsiPgotPCFFTlRJVFkgbWlkYXN0ICImI3gyQTsiPgotPCFFTlRJVFkgcGx1cyAiJiN4MkI7
Ij4KLTwhRU5USVRZIGNvbW1hICImI3gyQzsiPgotPCFFTlRJVFkgcGVyaW9kICImI3gyRTsiPgot
PCFFTlRJVFkgc29sICImI3gyRjsiPgotPCFFTlRJVFkgY29sb24gIiYjeDNBOyI+Ci08IUVOVElU
WSBzZW1pICImI3gzQjsiPgotPCFFTlRJVFkgbHQgIiYjeDI2OyN4M0M7Ij4KLTwhRU5USVRZIExU
ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBudmx0ICImI3gyNjsjeDNDOyYjeDIwRDI7Ij4KLTwh
RU5USVRZIGVxdWFscyAiJiN4M0Q7Ij4KLTwhRU5USVRZIGJuZSAiJiN4M0Q7JiN4MjBFNTsiPgot
PCFFTlRJVFkgZ3QgIiYjeDNFOyI+Ci08IUVOVElUWSBHVCAiJiN4M0U7Ij4KLTwhRU5USVRZIG52
Z3QgIiYjeDNFOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHF1ZXN0ICImI3gzRjsiPgotPCFFTlRJVFkg
Y29tbWF0ICImI3g0MDsiPgotPCFFTlRJVFkgbHNxYiAiJiN4NUI7Ij4KLTwhRU5USVRZIGxicmFj
ayAiJiN4NUI7Ij4KLTwhRU5USVRZIGJzb2wgIiYjeDVDOyI+Ci08IUVOVElUWSByc3FiICImI3g1
RDsiPgotPCFFTlRJVFkgcmJyYWNrICImI3g1RDsiPgotPCFFTlRJVFkgSGF0ICImI3g1RTsiPgot
PCFFTlRJVFkgbG93YmFyICImI3g1RjsiPgotPCFFTlRJVFkgVW5kZXJCYXIgIiYjeDVGOyI+Ci08
IUVOVElUWSBncmF2ZSAiJiN4NjA7Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsR3JhdmUgIiYjeDYw
OyI+Ci08IUVOVElUWSBmamxpZyAiJiN4NjY7JiN4NkE7Ij4KLTwhRU5USVRZIGxjdWIgIiYjeDdC
OyI+Ci08IUVOVElUWSBsYnJhY2UgIiYjeDdCOyI+Ci08IUVOVElUWSB2ZXJiYXIgIiYjeDdDOyI+
Ci08IUVOVElUWSB2ZXJ0ICImI3g3QzsiPgotPCFFTlRJVFkgVmVydGljYWxMaW5lICImI3g3Qzsi
PgotPCFFTlRJVFkgcmN1YiAiJiN4N0Q7Ij4KLTwhRU5USVRZIHJicmFjZSAiJiN4N0Q7Ij4KLTwh
RU5USVRZIG5ic3AgIiYjeEEwOyI+Ci08IUVOVElUWSBOb25CcmVha2luZ1NwYWNlICImI3hBMDsi
PgotPCFFTlRJVFkgaWV4Y2wgIiYjeEExOyI+Ci08IUVOVElUWSBjZW50ICImI3hBMjsiPgotPCFF
TlRJVFkgcG91bmQgIiYjeEEzOyI+Ci08IUVOVElUWSBjdXJyZW4gIiYjeEE0OyI+Ci08IUVOVElU
WSB5ZW4gIiYjeEE1OyI+Ci08IUVOVElUWSBicnZiYXIgIiYjeEE2OyI+Ci08IUVOVElUWSBzZWN0
ICImI3hBNzsiPgotPCFFTlRJVFkgRG90ICImI3hBODsiPgotPCFFTlRJVFkgZGllICImI3hBODsi
PgotPCFFTlRJVFkgRG91YmxlRG90ICImI3hBODsiPgotPCFFTlRJVFkgdW1sICImI3hBODsiPgot
PCFFTlRJVFkgY29weSAiJiN4QTk7Ij4KLTwhRU5USVRZIENPUFkgIiYjeEE5OyI+Ci08IUVOVElU
WSBvcmRmICImI3hBQTsiPgotPCFFTlRJVFkgbGFxdW8gIiYjeEFCOyI+Ci08IUVOVElUWSBub3Qg
IiYjeEFDOyI+Ci08IUVOVElUWSBzaHkgIiYjeEFEOyI+Ci08IUVOVElUWSByZWcgIiYjeEFFOyI+
Ci08IUVOVElUWSBjaXJjbGVkUiAiJiN4QUU7Ij4KLTwhRU5USVRZIFJFRyAiJiN4QUU7Ij4KLTwh
RU5USVRZIG1hY3IgIiYjeEFGOyI+Ci08IUVOVElUWSBzdHJucyAiJiN4QUY7Ij4KLTwhRU5USVRZ
IGRlZyAiJiN4QjA7Ij4KLTwhRU5USVRZIHBsdXNtbiAiJiN4QjE7Ij4KLTwhRU5USVRZIHBtICIm
I3hCMTsiPgotPCFFTlRJVFkgUGx1c01pbnVzICImI3hCMTsiPgotPCFFTlRJVFkgc3VwMiAiJiN4
QjI7Ij4KLTwhRU5USVRZIHN1cDMgIiYjeEIzOyI+Ci08IUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ij4K
LTwhRU5USVRZIERpYWNyaXRpY2FsQWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBtaWNybyAiJiN4
QjU7Ij4KLTwhRU5USVRZIHBhcmEgIiYjeEI2OyI+Ci08IUVOVElUWSBtaWRkb3QgIiYjeEI3OyI+
Ci08IUVOVElUWSBjZW50ZXJkb3QgIiYjeEI3OyI+Ci08IUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3
OyI+Ci08IUVOVElUWSBjZWRpbCAiJiN4Qjg7Ij4KLTwhRU5USVRZIENlZGlsbGEgIiYjeEI4OyI+
Ci08IUVOVElUWSBzdXAxICImI3hCOTsiPgotPCFFTlRJVFkgb3JkbSAiJiN4QkE7Ij4KLTwhRU5U
SVRZIHJhcXVvICImI3hCQjsiPgotPCFFTlRJVFkgZnJhYzE0ICImI3hCQzsiPgotPCFFTlRJVFkg
ZnJhYzEyICImI3hCRDsiPgotPCFFTlRJVFkgaGFsZiAiJiN4QkQ7Ij4KLTwhRU5USVRZIGZyYWMz
NCAiJiN4QkU7Ij4KLTwhRU5USVRZIGlxdWVzdCAiJiN4QkY7Ij4KLTwhRU5USVRZIEFncmF2ZSAi
JiN4QzA7Ij4KLTwhRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ij4KLTwhRU5USVRZIEFjaXJjICImI3hD
MjsiPgotPCFFTlRJVFkgQXRpbGRlICImI3hDMzsiPgotPCFFTlRJVFkgQXVtbCAiJiN4QzQ7Ij4K
LTwhRU5USVRZIEFyaW5nICImI3hDNTsiPgotPCFFTlRJVFkgYW5nc3QgIiYjeEM1OyI+Ci08IUVO
VElUWSBBRWxpZyAiJiN4QzY7Ij4KLTwhRU5USVRZIENjZWRpbCAiJiN4Qzc7Ij4KLTwhRU5USVRZ
IEVncmF2ZSAiJiN4Qzg7Ij4KLTwhRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ij4KLTwhRU5USVRZIEVj
aXJjICImI3hDQTsiPgotPCFFTlRJVFkgRXVtbCAiJiN4Q0I7Ij4KLTwhRU5USVRZIElncmF2ZSAi
JiN4Q0M7Ij4KLTwhRU5USVRZIElhY3V0ZSAiJiN4Q0Q7Ij4KLTwhRU5USVRZIEljaXJjICImI3hD
RTsiPgotPCFFTlRJVFkgSXVtbCAiJiN4Q0Y7Ij4KLTwhRU5USVRZIEVUSCAiJiN4RDA7Ij4KLTwh
RU5USVRZIE50aWxkZSAiJiN4RDE7Ij4KLTwhRU5USVRZIE9ncmF2ZSAiJiN4RDI7Ij4KLTwhRU5U
SVRZIE9hY3V0ZSAiJiN4RDM7Ij4KLTwhRU5USVRZIE9jaXJjICImI3hENDsiPgotPCFFTlRJVFkg
T3RpbGRlICImI3hENTsiPgotPCFFTlRJVFkgT3VtbCAiJiN4RDY7Ij4KLTwhRU5USVRZIHRpbWVz
ICImI3hENzsiPgotPCFFTlRJVFkgT3NsYXNoICImI3hEODsiPgotPCFFTlRJVFkgVWdyYXZlICIm
I3hEOTsiPgotPCFFTlRJVFkgVWFjdXRlICImI3hEQTsiPgotPCFFTlRJVFkgVWNpcmMgIiYjeERC
OyI+Ci08IUVOVElUWSBVdW1sICImI3hEQzsiPgotPCFFTlRJVFkgWWFjdXRlICImI3hERDsiPgot
PCFFTlRJVFkgVEhPUk4gIiYjeERFOyI+Ci08IUVOVElUWSBzemxpZyAiJiN4REY7Ij4KLTwhRU5U
SVRZIGFncmF2ZSAiJiN4RTA7Ij4KLTwhRU5USVRZIGFhY3V0ZSAiJiN4RTE7Ij4KLTwhRU5USVRZ
IGFjaXJjICImI3hFMjsiPgotPCFFTlRJVFkgYXRpbGRlICImI3hFMzsiPgotPCFFTlRJVFkgYXVt
bCAiJiN4RTQ7Ij4KLTwhRU5USVRZIGFyaW5nICImI3hFNTsiPgotPCFFTlRJVFkgYWVsaWcgIiYj
eEU2OyI+Ci08IUVOVElUWSBjY2VkaWwgIiYjeEU3OyI+Ci08IUVOVElUWSBlZ3JhdmUgIiYjeEU4
OyI+Ci08IUVOVElUWSBlYWN1dGUgIiYjeEU5OyI+Ci08IUVOVElUWSBlY2lyYyAiJiN4RUE7Ij4K
LTwhRU5USVRZIGV1bWwgIiYjeEVCOyI+Ci08IUVOVElUWSBpZ3JhdmUgIiYjeEVDOyI+Ci08IUVO
VElUWSBpYWN1dGUgIiYjeEVEOyI+Ci08IUVOVElUWSBpY2lyYyAiJiN4RUU7Ij4KLTwhRU5USVRZ
IGl1bWwgIiYjeEVGOyI+Ci08IUVOVElUWSBldGggIiYjeEYwOyI+Ci08IUVOVElUWSBudGlsZGUg
IiYjeEYxOyI+Ci08IUVOVElUWSBvZ3JhdmUgIiYjeEYyOyI+Ci08IUVOVElUWSBvYWN1dGUgIiYj
eEYzOyI+Ci08IUVOVElUWSBvY2lyYyAiJiN4RjQ7Ij4KLTwhRU5USVRZIG90aWxkZSAiJiN4RjU7
Ij4KLTwhRU5USVRZIG91bWwgIiYjeEY2OyI+Ci08IUVOVElUWSBkaXZpZGUgIiYjeEY3OyI+Ci08
IUVOVElUWSBkaXYgIiYjeEY3OyI+Ci08IUVOVElUWSBvc2xhc2ggIiYjeEY4OyI+Ci08IUVOVElU
WSB1Z3JhdmUgIiYjeEY5OyI+Ci08IUVOVElUWSB1YWN1dGUgIiYjeEZBOyI+Ci08IUVOVElUWSB1
Y2lyYyAiJiN4RkI7Ij4KLTwhRU5USVRZIHV1bWwgIiYjeEZDOyI+Ci08IUVOVElUWSB5YWN1dGUg
IiYjeEZEOyI+Ci08IUVOVElUWSB0aG9ybiAiJiN4RkU7Ij4KLTwhRU5USVRZIHl1bWwgIiYjeEZG
OyI+Ci08IUVOVElUWSBBbWFjciAiJiN4MTAwOyI+Ci08IUVOVElUWSBhbWFjciAiJiN4MTAxOyI+
Ci08IUVOVElUWSBBYnJldmUgIiYjeDEwMjsiPgotPCFFTlRJVFkgYWJyZXZlICImI3gxMDM7Ij4K
LTwhRU5USVRZIEFvZ29uICImI3gxMDQ7Ij4KLTwhRU5USVRZIGFvZ29uICImI3gxMDU7Ij4KLTwh
RU5USVRZIENhY3V0ZSAiJiN4MTA2OyI+Ci08IUVOVElUWSBjYWN1dGUgIiYjeDEwNzsiPgotPCFF
TlRJVFkgQ2NpcmMgIiYjeDEwODsiPgotPCFFTlRJVFkgY2NpcmMgIiYjeDEwOTsiPgotPCFFTlRJ
VFkgQ2RvdCAiJiN4MTBBOyI+Ci08IUVOVElUWSBjZG90ICImI3gxMEI7Ij4KLTwhRU5USVRZIENj
YXJvbiAiJiN4MTBDOyI+Ci08IUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiPgotPCFFTlRJVFkgRGNh
cm9uICImI3gxMEU7Ij4KLTwhRU5USVRZIGRjYXJvbiAiJiN4MTBGOyI+Ci08IUVOVElUWSBEc3Ry
b2sgIiYjeDExMDsiPgotPCFFTlRJVFkgZHN0cm9rICImI3gxMTE7Ij4KLTwhRU5USVRZIEVtYWNy
ICImI3gxMTI7Ij4KLTwhRU5USVRZIGVtYWNyICImI3gxMTM7Ij4KLTwhRU5USVRZIEVkb3QgIiYj
eDExNjsiPgotPCFFTlRJVFkgZWRvdCAiJiN4MTE3OyI+Ci08IUVOVElUWSBFb2dvbiAiJiN4MTE4
OyI+Ci08IUVOVElUWSBlb2dvbiAiJiN4MTE5OyI+Ci08IUVOVElUWSBFY2Fyb24gIiYjeDExQTsi
PgotPCFFTlRJVFkgZWNhcm9uICImI3gxMUI7Ij4KLTwhRU5USVRZIEdjaXJjICImI3gxMUM7Ij4K
LTwhRU5USVRZIGdjaXJjICImI3gxMUQ7Ij4KLTwhRU5USVRZIEdicmV2ZSAiJiN4MTFFOyI+Ci08
IUVOVElUWSBnYnJldmUgIiYjeDExRjsiPgotPCFFTlRJVFkgR2RvdCAiJiN4MTIwOyI+Ci08IUVO
VElUWSBnZG90ICImI3gxMjE7Ij4KLTwhRU5USVRZIEdjZWRpbCAiJiN4MTIyOyI+Ci08IUVOVElU
WSBIY2lyYyAiJiN4MTI0OyI+Ci08IUVOVElUWSBoY2lyYyAiJiN4MTI1OyI+Ci08IUVOVElUWSBI
c3Ryb2sgIiYjeDEyNjsiPgotPCFFTlRJVFkgaHN0cm9rICImI3gxMjc7Ij4KLTwhRU5USVRZIEl0
aWxkZSAiJiN4MTI4OyI+Ci08IUVOVElUWSBpdGlsZGUgIiYjeDEyOTsiPgotPCFFTlRJVFkgSW1h
Y3IgIiYjeDEyQTsiPgotPCFFTlRJVFkgaW1hY3IgIiYjeDEyQjsiPgotPCFFTlRJVFkgSW9nb24g
IiYjeDEyRTsiPgotPCFFTlRJVFkgaW9nb24gIiYjeDEyRjsiPgotPCFFTlRJVFkgSWRvdCAiJiN4
MTMwOyI+Ci08IUVOVElUWSBpbWF0aCAiJiN4MTMxOyI+Ci08IUVOVElUWSBpbm9kb3QgIiYjeDEz
MTsiPgotPCFFTlRJVFkgSUpsaWcgIiYjeDEzMjsiPgotPCFFTlRJVFkgaWpsaWcgIiYjeDEzMzsi
PgotPCFFTlRJVFkgSmNpcmMgIiYjeDEzNDsiPgotPCFFTlRJVFkgamNpcmMgIiYjeDEzNTsiPgot
PCFFTlRJVFkgS2NlZGlsICImI3gxMzY7Ij4KLTwhRU5USVRZIGtjZWRpbCAiJiN4MTM3OyI+Ci08
IUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiPgotPCFFTlRJVFkgTGFjdXRlICImI3gxMzk7Ij4KLTwh
RU5USVRZIGxhY3V0ZSAiJiN4MTNBOyI+Ci08IUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiPgotPCFF
TlRJVFkgbGNlZGlsICImI3gxM0M7Ij4KLTwhRU5USVRZIExjYXJvbiAiJiN4MTNEOyI+Ci08IUVO
VElUWSBsY2Fyb24gIiYjeDEzRTsiPgotPCFFTlRJVFkgTG1pZG90ICImI3gxM0Y7Ij4KLTwhRU5U
SVRZIGxtaWRvdCAiJiN4MTQwOyI+Ci08IUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiPgotPCFFTlRJ
VFkgbHN0cm9rICImI3gxNDI7Ij4KLTwhRU5USVRZIE5hY3V0ZSAiJiN4MTQzOyI+Ci08IUVOVElU
WSBuYWN1dGUgIiYjeDE0NDsiPgotPCFFTlRJVFkgTmNlZGlsICImI3gxNDU7Ij4KLTwhRU5USVRZ
IG5jZWRpbCAiJiN4MTQ2OyI+Ci08IUVOVElUWSBOY2Fyb24gIiYjeDE0NzsiPgotPCFFTlRJVFkg
bmNhcm9uICImI3gxNDg7Ij4KLTwhRU5USVRZIG5hcG9zICImI3gxNDk7Ij4KLTwhRU5USVRZIEVO
RyAiJiN4MTRBOyI+Ci08IUVOVElUWSBlbmcgIiYjeDE0QjsiPgotPCFFTlRJVFkgT21hY3IgIiYj
eDE0QzsiPgotPCFFTlRJVFkgb21hY3IgIiYjeDE0RDsiPgotPCFFTlRJVFkgT2RibGFjICImI3gx
NTA7Ij4KLTwhRU5USVRZIG9kYmxhYyAiJiN4MTUxOyI+Ci08IUVOVElUWSBPRWxpZyAiJiN4MTUy
OyI+Ci08IUVOVElUWSBvZWxpZyAiJiN4MTUzOyI+Ci08IUVOVElUWSBSYWN1dGUgIiYjeDE1NDsi
PgotPCFFTlRJVFkgcmFjdXRlICImI3gxNTU7Ij4KLTwhRU5USVRZIFJjZWRpbCAiJiN4MTU2OyI+
Ci08IUVOVElUWSByY2VkaWwgIiYjeDE1NzsiPgotPCFFTlRJVFkgUmNhcm9uICImI3gxNTg7Ij4K
LTwhRU5USVRZIHJjYXJvbiAiJiN4MTU5OyI+Ci08IUVOVElUWSBTYWN1dGUgIiYjeDE1QTsiPgot
PCFFTlRJVFkgc2FjdXRlICImI3gxNUI7Ij4KLTwhRU5USVRZIFNjaXJjICImI3gxNUM7Ij4KLTwh
RU5USVRZIHNjaXJjICImI3gxNUQ7Ij4KLTwhRU5USVRZIFNjZWRpbCAiJiN4MTVFOyI+Ci08IUVO
VElUWSBzY2VkaWwgIiYjeDE1RjsiPgotPCFFTlRJVFkgU2Nhcm9uICImI3gxNjA7Ij4KLTwhRU5U
SVRZIHNjYXJvbiAiJiN4MTYxOyI+Ci08IUVOVElUWSBUY2VkaWwgIiYjeDE2MjsiPgotPCFFTlRJ
VFkgdGNlZGlsICImI3gxNjM7Ij4KLTwhRU5USVRZIFRjYXJvbiAiJiN4MTY0OyI+Ci08IUVOVElU
WSB0Y2Fyb24gIiYjeDE2NTsiPgotPCFFTlRJVFkgVHN0cm9rICImI3gxNjY7Ij4KLTwhRU5USVRZ
IHRzdHJvayAiJiN4MTY3OyI+Ci08IUVOVElUWSBVdGlsZGUgIiYjeDE2ODsiPgotPCFFTlRJVFkg
dXRpbGRlICImI3gxNjk7Ij4KLTwhRU5USVRZIFVtYWNyICImI3gxNkE7Ij4KLTwhRU5USVRZIHVt
YWNyICImI3gxNkI7Ij4KLTwhRU5USVRZIFVicmV2ZSAiJiN4MTZDOyI+Ci08IUVOVElUWSB1YnJl
dmUgIiYjeDE2RDsiPgotPCFFTlRJVFkgVXJpbmcgIiYjeDE2RTsiPgotPCFFTlRJVFkgdXJpbmcg
IiYjeDE2RjsiPgotPCFFTlRJVFkgVWRibGFjICImI3gxNzA7Ij4KLTwhRU5USVRZIHVkYmxhYyAi
JiN4MTcxOyI+Ci08IUVOVElUWSBVb2dvbiAiJiN4MTcyOyI+Ci08IUVOVElUWSB1b2dvbiAiJiN4
MTczOyI+Ci08IUVOVElUWSBXY2lyYyAiJiN4MTc0OyI+Ci08IUVOVElUWSB3Y2lyYyAiJiN4MTc1
OyI+Ci08IUVOVElUWSBZY2lyYyAiJiN4MTc2OyI+Ci08IUVOVElUWSB5Y2lyYyAiJiN4MTc3OyI+
Ci08IUVOVElUWSBZdW1sICImI3gxNzg7Ij4KLTwhRU5USVRZIFphY3V0ZSAiJiN4MTc5OyI+Ci08
IUVOVElUWSB6YWN1dGUgIiYjeDE3QTsiPgotPCFFTlRJVFkgWmRvdCAiJiN4MTdCOyI+Ci08IUVO
VElUWSB6ZG90ICImI3gxN0M7Ij4KLTwhRU5USVRZIFpjYXJvbiAiJiN4MTdEOyI+Ci08IUVOVElU
WSB6Y2Fyb24gIiYjeDE3RTsiPgotPCFFTlRJVFkgZm5vZiAiJiN4MTkyOyI+Ci08IUVOVElUWSBp
bXBlZCAiJiN4MUI1OyI+Ci08IUVOVElUWSBnYWN1dGUgIiYjeDFGNTsiPgotPCFFTlRJVFkgam1h
dGggIiYjeDIzNzsiPgotPCFFTlRJVFkgY2lyYyAiJiN4MkM2OyI+Ci08IUVOVElUWSBjYXJvbiAi
JiN4MkM3OyI+Ci08IUVOVElUWSBIYWNlayAiJiN4MkM3OyI+Ci08IUVOVElUWSBicmV2ZSAiJiN4
MkQ4OyI+Ci08IUVOVElUWSBCcmV2ZSAiJiN4MkQ4OyI+Ci08IUVOVElUWSBkb3QgIiYjeDJEOTsi
PgotPCFFTlRJVFkgRGlhY3JpdGljYWxEb3QgIiYjeDJEOTsiPgotPCFFTlRJVFkgcmluZyAiJiN4
MkRBOyI+Ci08IUVOVElUWSBvZ29uICImI3gyREI7Ij4KLTwhRU5USVRZIHRpbGRlICImI3gyREM7
Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsVGlsZGUgIiYjeDJEQzsiPgotPCFFTlRJVFkgZGJsYWMg
IiYjeDJERDsiPgotPCFFTlRJVFkgRGlhY3JpdGljYWxEb3VibGVBY3V0ZSAiJiN4MkREOyI+Ci08
IUVOVElUWSBEb3duQnJldmUgIiYjeDMxMTsiPgotPCFFTlRJVFkgQWxwaGEgIiYjeDM5MTsiPgot
PCFFTlRJVFkgQmV0YSAiJiN4MzkyOyI+Ci08IUVOVElUWSBHYW1tYSAiJiN4MzkzOyI+Ci08IUVO
VElUWSBEZWx0YSAiJiN4Mzk0OyI+Ci08IUVOVElUWSBFcHNpbG9uICImI3gzOTU7Ij4KLTwhRU5U
SVRZIFpldGEgIiYjeDM5NjsiPgotPCFFTlRJVFkgRXRhICImI3gzOTc7Ij4KLTwhRU5USVRZIFRo
ZXRhICImI3gzOTg7Ij4KLTwhRU5USVRZIElvdGEgIiYjeDM5OTsiPgotPCFFTlRJVFkgS2FwcGEg
IiYjeDM5QTsiPgotPCFFTlRJVFkgTGFtYmRhICImI3gzOUI7Ij4KLTwhRU5USVRZIE11ICImI3gz
OUM7Ij4KLTwhRU5USVRZIE51ICImI3gzOUQ7Ij4KLTwhRU5USVRZIFhpICImI3gzOUU7Ij4KLTwh
RU5USVRZIE9taWNyb24gIiYjeDM5RjsiPgotPCFFTlRJVFkgUGkgIiYjeDNBMDsiPgotPCFFTlRJ
VFkgUmhvICImI3gzQTE7Ij4KLTwhRU5USVRZIFNpZ21hICImI3gzQTM7Ij4KLTwhRU5USVRZIFRh
dSAiJiN4M0E0OyI+Ci08IUVOVElUWSBVcHNpbG9uICImI3gzQTU7Ij4KLTwhRU5USVRZIFBoaSAi
JiN4M0E2OyI+Ci08IUVOVElUWSBDaGkgIiYjeDNBNzsiPgotPCFFTlRJVFkgUHNpICImI3gzQTg7
Ij4KLTwhRU5USVRZIE9tZWdhICImI3gzQTk7Ij4KLTwhRU5USVRZIG9obSAiJiN4M0E5OyI+Ci08
IUVOVElUWSBhbHBoYSAiJiN4M0IxOyI+Ci08IUVOVElUWSBiZXRhICImI3gzQjI7Ij4KLTwhRU5U
SVRZIGdhbW1hICImI3gzQjM7Ij4KLTwhRU5USVRZIGRlbHRhICImI3gzQjQ7Ij4KLTwhRU5USVRZ
IGVwc2kgIiYjeDNCNTsiPgotPCFFTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyI+Ci08IUVOVElUWSB6
ZXRhICImI3gzQjY7Ij4KLTwhRU5USVRZIGV0YSAiJiN4M0I3OyI+Ci08IUVOVElUWSB0aGV0YSAi
JiN4M0I4OyI+Ci08IUVOVElUWSBpb3RhICImI3gzQjk7Ij4KLTwhRU5USVRZIGthcHBhICImI3gz
QkE7Ij4KLTwhRU5USVRZIGxhbWJkYSAiJiN4M0JCOyI+Ci08IUVOVElUWSBtdSAiJiN4M0JDOyI+
Ci08IUVOVElUWSBudSAiJiN4M0JEOyI+Ci08IUVOVElUWSB4aSAiJiN4M0JFOyI+Ci08IUVOVElU
WSBvbWljcm9uICImI3gzQkY7Ij4KLTwhRU5USVRZIHBpICImI3gzQzA7Ij4KLTwhRU5USVRZIHJo
byAiJiN4M0MxOyI+Ci08IUVOVElUWSBzaWdtYXYgIiYjeDNDMjsiPgotPCFFTlRJVFkgdmFyc2ln
bWEgIiYjeDNDMjsiPgotPCFFTlRJVFkgc2lnbWFmICImI3gzQzI7Ij4KLTwhRU5USVRZIHNpZ21h
ICImI3gzQzM7Ij4KLTwhRU5USVRZIHRhdSAiJiN4M0M0OyI+Ci08IUVOVElUWSB1cHNpICImI3gz
QzU7Ij4KLTwhRU5USVRZIHVwc2lsb24gIiYjeDNDNTsiPgotPCFFTlRJVFkgcGhpICImI3gzQzY7
Ij4KLTwhRU5USVRZIGNoaSAiJiN4M0M3OyI+Ci08IUVOVElUWSBwc2kgIiYjeDNDODsiPgotPCFF
TlRJVFkgb21lZ2EgIiYjeDNDOTsiPgotPCFFTlRJVFkgdGhldGF2ICImI3gzRDE7Ij4KLTwhRU5U
SVRZIHZhcnRoZXRhICImI3gzRDE7Ij4KLTwhRU5USVRZIHRoZXRhc3ltICImI3gzRDE7Ij4KLTwh
RU5USVRZIFVwc2kgIiYjeDNEMjsiPgotPCFFTlRJVFkgdXBzaWggIiYjeDNEMjsiPgotPCFFTlRJ
VFkgc3RyYWlnaHRwaGkgIiYjeDNENTsiPgotPCFFTlRJVFkgcGhpdiAiJiN4M0Q1OyI+Ci08IUVO
VElUWSB2YXJwaGkgIiYjeDNENTsiPgotPCFFTlRJVFkgcGl2ICImI3gzRDY7Ij4KLTwhRU5USVRZ
IHZhcnBpICImI3gzRDY7Ij4KLTwhRU5USVRZIEdhbW1hZCAiJiN4M0RDOyI+Ci08IUVOVElUWSBn
YW1tYWQgIiYjeDNERDsiPgotPCFFTlRJVFkgZGlnYW1tYSAiJiN4M0REOyI+Ci08IUVOVElUWSBr
YXBwYXYgIiYjeDNGMDsiPgotPCFFTlRJVFkgdmFya2FwcGEgIiYjeDNGMDsiPgotPCFFTlRJVFkg
cmhvdiAiJiN4M0YxOyI+Ci08IUVOVElUWSB2YXJyaG8gIiYjeDNGMTsiPgotPCFFTlRJVFkgZXBz
aXYgIiYjeDNGNTsiPgotPCFFTlRJVFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ij4KLTwhRU5U
SVRZIHZhcmVwc2lsb24gIiYjeDNGNTsiPgotPCFFTlRJVFkgYmVwc2kgIiYjeDNGNjsiPgotPCFF
TlRJVFkgYmFja2Vwc2lsb24gIiYjeDNGNjsiPgotPCFFTlRJVFkgSU9jeSAiJiN4NDAxOyI+Ci08
IUVOVElUWSBESmN5ICImI3g0MDI7Ij4KLTwhRU5USVRZIEdKY3kgIiYjeDQwMzsiPgotPCFFTlRJ
VFkgSnVrY3kgIiYjeDQwNDsiPgotPCFFTlRJVFkgRFNjeSAiJiN4NDA1OyI+Ci08IUVOVElUWSBJ
dWtjeSAiJiN4NDA2OyI+Ci08IUVOVElUWSBZSWN5ICImI3g0MDc7Ij4KLTwhRU5USVRZIEpzZXJj
eSAiJiN4NDA4OyI+Ci08IUVOVElUWSBMSmN5ICImI3g0MDk7Ij4KLTwhRU5USVRZIE5KY3kgIiYj
eDQwQTsiPgotPCFFTlRJVFkgVFNIY3kgIiYjeDQwQjsiPgotPCFFTlRJVFkgS0pjeSAiJiN4NDBD
OyI+Ci08IUVOVElUWSBVYnJjeSAiJiN4NDBFOyI+Ci08IUVOVElUWSBEWmN5ICImI3g0MEY7Ij4K
LTwhRU5USVRZIEFjeSAiJiN4NDEwOyI+Ci08IUVOVElUWSBCY3kgIiYjeDQxMTsiPgotPCFFTlRJ
VFkgVmN5ICImI3g0MTI7Ij4KLTwhRU5USVRZIEdjeSAiJiN4NDEzOyI+Ci08IUVOVElUWSBEY3kg
IiYjeDQxNDsiPgotPCFFTlRJVFkgSUVjeSAiJiN4NDE1OyI+Ci08IUVOVElUWSBaSGN5ICImI3g0
MTY7Ij4KLTwhRU5USVRZIFpjeSAiJiN4NDE3OyI+Ci08IUVOVElUWSBJY3kgIiYjeDQxODsiPgot
PCFFTlRJVFkgSmN5ICImI3g0MTk7Ij4KLTwhRU5USVRZIEtjeSAiJiN4NDFBOyI+Ci08IUVOVElU
WSBMY3kgIiYjeDQxQjsiPgotPCFFTlRJVFkgTWN5ICImI3g0MUM7Ij4KLTwhRU5USVRZIE5jeSAi
JiN4NDFEOyI+Ci08IUVOVElUWSBPY3kgIiYjeDQxRTsiPgotPCFFTlRJVFkgUGN5ICImI3g0MUY7
Ij4KLTwhRU5USVRZIFJjeSAiJiN4NDIwOyI+Ci08IUVOVElUWSBTY3kgIiYjeDQyMTsiPgotPCFF
TlRJVFkgVGN5ICImI3g0MjI7Ij4KLTwhRU5USVRZIFVjeSAiJiN4NDIzOyI+Ci08IUVOVElUWSBG
Y3kgIiYjeDQyNDsiPgotPCFFTlRJVFkgS0hjeSAiJiN4NDI1OyI+Ci08IUVOVElUWSBUU2N5ICIm
I3g0MjY7Ij4KLTwhRU5USVRZIENIY3kgIiYjeDQyNzsiPgotPCFFTlRJVFkgU0hjeSAiJiN4NDI4
OyI+Ci08IUVOVElUWSBTSENIY3kgIiYjeDQyOTsiPgotPCFFTlRJVFkgSEFSRGN5ICImI3g0MkE7
Ij4KLTwhRU5USVRZIFljeSAiJiN4NDJCOyI+Ci08IUVOVElUWSBTT0ZUY3kgIiYjeDQyQzsiPgot
PCFFTlRJVFkgRWN5ICImI3g0MkQ7Ij4KLTwhRU5USVRZIFlVY3kgIiYjeDQyRTsiPgotPCFFTlRJ
VFkgWUFjeSAiJiN4NDJGOyI+Ci08IUVOVElUWSBhY3kgIiYjeDQzMDsiPgotPCFFTlRJVFkgYmN5
ICImI3g0MzE7Ij4KLTwhRU5USVRZIHZjeSAiJiN4NDMyOyI+Ci08IUVOVElUWSBnY3kgIiYjeDQz
MzsiPgotPCFFTlRJVFkgZGN5ICImI3g0MzQ7Ij4KLTwhRU5USVRZIGllY3kgIiYjeDQzNTsiPgot
PCFFTlRJVFkgemhjeSAiJiN4NDM2OyI+Ci08IUVOVElUWSB6Y3kgIiYjeDQzNzsiPgotPCFFTlRJ
VFkgaWN5ICImI3g0Mzg7Ij4KLTwhRU5USVRZIGpjeSAiJiN4NDM5OyI+Ci08IUVOVElUWSBrY3kg
IiYjeDQzQTsiPgotPCFFTlRJVFkgbGN5ICImI3g0M0I7Ij4KLTwhRU5USVRZIG1jeSAiJiN4NDND
OyI+Ci08IUVOVElUWSBuY3kgIiYjeDQzRDsiPgotPCFFTlRJVFkgb2N5ICImI3g0M0U7Ij4KLTwh
RU5USVRZIHBjeSAiJiN4NDNGOyI+Ci08IUVOVElUWSByY3kgIiYjeDQ0MDsiPgotPCFFTlRJVFkg
c2N5ICImI3g0NDE7Ij4KLTwhRU5USVRZIHRjeSAiJiN4NDQyOyI+Ci08IUVOVElUWSB1Y3kgIiYj
eDQ0MzsiPgotPCFFTlRJVFkgZmN5ICImI3g0NDQ7Ij4KLTwhRU5USVRZIGtoY3kgIiYjeDQ0NTsi
PgotPCFFTlRJVFkgdHNjeSAiJiN4NDQ2OyI+Ci08IUVOVElUWSBjaGN5ICImI3g0NDc7Ij4KLTwh
RU5USVRZIHNoY3kgIiYjeDQ0ODsiPgotPCFFTlRJVFkgc2hjaGN5ICImI3g0NDk7Ij4KLTwhRU5U
SVRZIGhhcmRjeSAiJiN4NDRBOyI+Ci08IUVOVElUWSB5Y3kgIiYjeDQ0QjsiPgotPCFFTlRJVFkg
c29mdGN5ICImI3g0NEM7Ij4KLTwhRU5USVRZIGVjeSAiJiN4NDREOyI+Ci08IUVOVElUWSB5dWN5
ICImI3g0NEU7Ij4KLTwhRU5USVRZIHlhY3kgIiYjeDQ0RjsiPgotPCFFTlRJVFkgaW9jeSAiJiN4
NDUxOyI+Ci08IUVOVElUWSBkamN5ICImI3g0NTI7Ij4KLTwhRU5USVRZIGdqY3kgIiYjeDQ1Mzsi
PgotPCFFTlRJVFkganVrY3kgIiYjeDQ1NDsiPgotPCFFTlRJVFkgZHNjeSAiJiN4NDU1OyI+Ci08
IUVOVElUWSBpdWtjeSAiJiN4NDU2OyI+Ci08IUVOVElUWSB5aWN5ICImI3g0NTc7Ij4KLTwhRU5U
SVRZIGpzZXJjeSAiJiN4NDU4OyI+Ci08IUVOVElUWSBsamN5ICImI3g0NTk7Ij4KLTwhRU5USVRZ
IG5qY3kgIiYjeDQ1QTsiPgotPCFFTlRJVFkgdHNoY3kgIiYjeDQ1QjsiPgotPCFFTlRJVFkga2pj
eSAiJiN4NDVDOyI+Ci08IUVOVElUWSB1YnJjeSAiJiN4NDVFOyI+Ci08IUVOVElUWSBkemN5ICIm
I3g0NUY7Ij4KLTwhRU5USVRZIGVuc3AgIiYjeDIwMDI7Ij4KLTwhRU5USVRZIGVtc3AgIiYjeDIw
MDM7Ij4KLTwhRU5USVRZIGVtc3AxMyAiJiN4MjAwNDsiPgotPCFFTlRJVFkgZW1zcDE0ICImI3gy
MDA1OyI+Ci08IUVOVElUWSBudW1zcCAiJiN4MjAwNzsiPgotPCFFTlRJVFkgcHVuY3NwICImI3gy
MDA4OyI+Ci08IUVOVElUWSB0aGluc3AgIiYjeDIwMDk7Ij4KLTwhRU5USVRZIFRoaW5TcGFjZSAi
JiN4MjAwOTsiPgotPCFFTlRJVFkgaGFpcnNwICImI3gyMDBBOyI+Ci08IUVOVElUWSBWZXJ5VGhp
blNwYWNlICImI3gyMDBBOyI+Ci08IUVOVElUWSBaZXJvV2lkdGhTcGFjZSAiJiN4MjAwQjsiPgot
PCFFTlRJVFkgTmVnYXRpdmVWZXJ5VGhpblNwYWNlICImI3gyMDBCOyI+Ci08IUVOVElUWSBOZWdh
dGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVNZWRpdW1TcGFjZSAi
JiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGlja1NwYWNlICImI3gyMDBCOyI+Ci08IUVO
VElUWSB6d25qICImI3gyMDBDOyI+Ci08IUVOVElUWSB6d2ogIiYjeDIwMEQ7Ij4KLTwhRU5USVRZ
IGxybSAiJiN4MjAwRTsiPgotPCFFTlRJVFkgcmxtICImI3gyMDBGOyI+Ci08IUVOVElUWSBoeXBo
ZW4gIiYjeDIwMTA7Ij4KLTwhRU5USVRZIGRhc2ggIiYjeDIwMTA7Ij4KLTwhRU5USVRZIG5kYXNo
ICImI3gyMDEzOyI+Ci08IUVOVElUWSBtZGFzaCAiJiN4MjAxNDsiPgotPCFFTlRJVFkgaG9yYmFy
ICImI3gyMDE1OyI+Ci08IUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ij4KLTwhRU5USVRZIFZlcnQg
IiYjeDIwMTY7Ij4KLTwhRU5USVRZIGxzcXVvICImI3gyMDE4OyI+Ci08IUVOVElUWSBPcGVuQ3Vy
bHlRdW90ZSAiJiN4MjAxODsiPgotPCFFTlRJVFkgcnNxdW8gIiYjeDIwMTk7Ij4KLTwhRU5USVRZ
IHJzcXVvciAiJiN4MjAxOTsiPgotPCFFTlRJVFkgQ2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyI+
Ci08IUVOVElUWSBsc3F1b3IgIiYjeDIwMUE7Ij4KLTwhRU5USVRZIHNicXVvICImI3gyMDFBOyI+
Ci08IUVOVElUWSBsZHF1byAiJiN4MjAxQzsiPgotPCFFTlRJVFkgT3BlbkN1cmx5RG91YmxlUXVv
dGUgIiYjeDIwMUM7Ij4KLTwhRU5USVRZIHJkcXVvICImI3gyMDFEOyI+Ci08IUVOVElUWSByZHF1
b3IgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIENsb3NlQ3VybHlEb3VibGVRdW90ZSAiJiN4MjAxRDsi
PgotPCFFTlRJVFkgbGRxdW9yICImI3gyMDFFOyI+Ci08IUVOVElUWSBiZHF1byAiJiN4MjAxRTsi
PgotPCFFTlRJVFkgZGFnZ2VyICImI3gyMDIwOyI+Ci08IUVOVElUWSBEYWdnZXIgIiYjeDIwMjE7
Ij4KLTwhRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ij4KLTwhRU5USVRZIGJ1bGwgIiYjeDIwMjI7
Ij4KLTwhRU5USVRZIGJ1bGxldCAiJiN4MjAyMjsiPgotPCFFTlRJVFkgbmxkciAiJiN4MjAyNTsi
PgotPCFFTlRJVFkgaGVsbGlwICImI3gyMDI2OyI+Ci08IUVOVElUWSBtbGRyICImI3gyMDI2OyI+
Ci08IUVOVElUWSBwZXJtaWwgIiYjeDIwMzA7Ij4KLTwhRU5USVRZIHBlcnRlbmsgIiYjeDIwMzE7
Ij4KLTwhRU5USVRZIHByaW1lICImI3gyMDMyOyI+Ci08IUVOVElUWSBQcmltZSAiJiN4MjAzMzsi
PgotPCFFTlRJVFkgdHByaW1lICImI3gyMDM0OyI+Ci08IUVOVElUWSBicHJpbWUgIiYjeDIwMzU7
Ij4KLTwhRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiPgotPCFFTlRJVFkgbHNhcXVvICImI3gy
MDM5OyI+Ci08IUVOVElUWSByc2FxdW8gIiYjeDIwM0E7Ij4KLTwhRU5USVRZIG9saW5lICImI3gy
MDNFOyI+Ci08IUVOVElUWSBPdmVyQmFyICImI3gyMDNFOyI+Ci08IUVOVElUWSBjYXJldCAiJiN4
MjA0MTsiPgotPCFFTlRJVFkgaHlidWxsICImI3gyMDQzOyI+Ci08IUVOVElUWSBmcmFzbCAiJiN4
MjA0NDsiPgotPCFFTlRJVFkgYnNlbWkgIiYjeDIwNEY7Ij4KLTwhRU5USVRZIHFwcmltZSAiJiN4
MjA1NzsiPgotPCFFTlRJVFkgTWVkaXVtU3BhY2UgIiYjeDIwNUY7Ij4KLTwhRU5USVRZIFRoaWNr
U3BhY2UgIiYjeDIwNUY7JiN4MjAwQTsiPgotPCFFTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiPgot
PCFFTlRJVFkgQXBwbHlGdW5jdGlvbiAiJiN4MjA2MTsiPgotPCFFTlRJVFkgYWYgIiYjeDIwNjE7
Ij4KLTwhRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyI+Ci08IUVOVElUWSBpdCAiJiN4
MjA2MjsiPgotPCFFTlRJVFkgSW52aXNpYmxlQ29tbWEgIiYjeDIwNjM7Ij4KLTwhRU5USVRZIGlj
ICImI3gyMDYzOyI+Ci08IUVOVElUWSBldXJvICImI3gyMEFDOyI+Ci08IUVOVElUWSB0ZG90ICIm
I3gyMERCOyI+Ci08IUVOVElUWSBUcmlwbGVEb3QgIiYjeDIwREI7Ij4KLTwhRU5USVRZIERvdERv
dCAiJiN4MjBEQzsiPgotPCFFTlRJVFkgQ29wZiAiJiN4MjEwMjsiPgotPCFFTlRJVFkgY29tcGxl
eGVzICImI3gyMTAyOyI+Ci08IUVOVElUWSBpbmNhcmUgIiYjeDIxMDU7Ij4KLTwhRU5USVRZIGdz
Y3IgIiYjeDIxMEE7Ij4KLTwhRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGls
YmVydFNwYWNlICImI3gyMTBCOyI+Ci08IUVOVElUWSBIc2NyICImI3gyMTBCOyI+Ci08IUVOVElU
WSBIZnIgIiYjeDIxMEM7Ij4KLTwhRU5USVRZIFBvaW5jYXJlcGxhbmUgIiYjeDIxMEM7Ij4KLTwh
RU5USVRZIHF1YXRlcm5pb25zICImI3gyMTBEOyI+Ci08IUVOVElUWSBIb3BmICImI3gyMTBEOyI+
Ci08IUVOVElUWSBwbGFuY2toICImI3gyMTBFOyI+Ci08IUVOVElUWSBwbGFuY2sgIiYjeDIxMEY7
Ij4KLTwhRU5USVRZIGhiYXIgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIHBsYW5rdiAiJiN4MjEwRjsi
PgotPCFFTlRJVFkgaHNsYXNoICImI3gyMTBGOyI+Ci08IUVOVElUWSBJc2NyICImI3gyMTEwOyI+
Ci08IUVOVElUWSBpbWFnbGluZSAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2UgIiYjeDIxMTE7
Ij4KLTwhRU5USVRZIEltICImI3gyMTExOyI+Ci08IUVOVElUWSBpbWFncGFydCAiJiN4MjExMTsi
PgotPCFFTlRJVFkgSWZyICImI3gyMTExOyI+Ci08IUVOVElUWSBMc2NyICImI3gyMTEyOyI+Ci08
IUVOVElUWSBsYWdyYW4gIiYjeDIxMTI7Ij4KLTwhRU5USVRZIExhcGxhY2V0cmYgIiYjeDIxMTI7
Ij4KLTwhRU5USVRZIGVsbCAiJiN4MjExMzsiPgotPCFFTlRJVFkgTm9wZiAiJiN4MjExNTsiPgot
PCFFTlRJVFkgbmF0dXJhbHMgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG51bWVybyAiJiN4MjExNjsi
PgotPCFFTlRJVFkgY29weXNyICImI3gyMTE3OyI+Ci08IUVOVElUWSB3ZWllcnAgIiYjeDIxMTg7
Ij4KLTwhRU5USVRZIHdwICImI3gyMTE4OyI+Ci08IUVOVElUWSBQb3BmICImI3gyMTE5OyI+Ci08
IUVOVElUWSBwcmltZXMgIiYjeDIxMTk7Ij4KLTwhRU5USVRZIHJhdGlvbmFscyAiJiN4MjExQTsi
PgotPCFFTlRJVFkgUW9wZiAiJiN4MjExQTsiPgotPCFFTlRJVFkgUnNjciAiJiN4MjExQjsiPgot
PCFFTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiPgotPCFFTlRJVFkgcmVhbCAiJiN4MjExQzsiPgot
PCFFTlRJVFkgUmUgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyI+Ci08
IUVOVElUWSBSZnIgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIHJlYWxzICImI3gyMTFEOyI+Ci08IUVO
VElUWSBSb3BmICImI3gyMTFEOyI+Ci08IUVOVElUWSByeCAiJiN4MjExRTsiPgotPCFFTlRJVFkg
dHJhZGUgIiYjeDIxMjI7Ij4KLTwhRU5USVRZIFRSQURFICImI3gyMTIyOyI+Ci08IUVOVElUWSBp
bnRlZ2VycyAiJiN4MjEyNDsiPgotPCFFTlRJVFkgWm9wZiAiJiN4MjEyNDsiPgotPCFFTlRJVFkg
bWhvICImI3gyMTI3OyI+Ci08IUVOVElUWSBaZnIgIiYjeDIxMjg7Ij4KLTwhRU5USVRZIHplZXRy
ZiAiJiN4MjEyODsiPgotPCFFTlRJVFkgaWlvdGEgIiYjeDIxMjk7Ij4KLTwhRU5USVRZIGJlcm5v
dSAiJiN4MjEyQzsiPgotPCFFTlRJVFkgQmVybm91bGxpcyAiJiN4MjEyQzsiPgotPCFFTlRJVFkg
QnNjciAiJiN4MjEyQzsiPgotPCFFTlRJVFkgQ2ZyICImI3gyMTJEOyI+Ci08IUVOVElUWSBDYXls
ZXlzICImI3gyMTJEOyI+Ci08IUVOVElUWSBlc2NyICImI3gyMTJGOyI+Ci08IUVOVElUWSBFc2Ny
ICImI3gyMTMwOyI+Ci08IUVOVElUWSBleHBlY3RhdGlvbiAiJiN4MjEzMDsiPgotPCFFTlRJVFkg
RnNjciAiJiN4MjEzMTsiPgotPCFFTlRJVFkgRm91cmllcnRyZiAiJiN4MjEzMTsiPgotPCFFTlRJ
VFkgcGhtbWF0ICImI3gyMTMzOyI+Ci08IUVOVElUWSBNZWxsaW50cmYgIiYjeDIxMzM7Ij4KLTwh
RU5USVRZIE1zY3IgIiYjeDIxMzM7Ij4KLTwhRU5USVRZIG9yZGVyICImI3gyMTM0OyI+Ci08IUVO
VElUWSBvcmRlcm9mICImI3gyMTM0OyI+Ci08IUVOVElUWSBvc2NyICImI3gyMTM0OyI+Ci08IUVO
VElUWSBhbGVmc3ltICImI3gyMTM1OyI+Ci08IUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiPgotPCFF
TlRJVFkgYmV0aCAiJiN4MjEzNjsiPgotPCFFTlRJVFkgZ2ltZWwgIiYjeDIxMzc7Ij4KLTwhRU5U
SVRZIGRhbGV0aCAiJiN4MjEzODsiPgotPCFFTlRJVFkgQ2FwaXRhbERpZmZlcmVudGlhbEQgIiYj
eDIxNDU7Ij4KLTwhRU5USVRZIEREICImI3gyMTQ1OyI+Ci08IUVOVElUWSBEaWZmZXJlbnRpYWxE
ICImI3gyMTQ2OyI+Ci08IUVOVElUWSBkZCAiJiN4MjE0NjsiPgotPCFFTlRJVFkgRXhwb25lbnRp
YWxFICImI3gyMTQ3OyI+Ci08IUVOVElUWSBleHBvbmVudGlhbGUgIiYjeDIxNDc7Ij4KLTwhRU5U
SVRZIGVlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBJbWFnaW5hcnlJICImI3gyMTQ4OyI+Ci08IUVO
VElUWSBpaSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgZnJhYzEzICImI3gyMTUzOyI+Ci08IUVOVElU
WSBmcmFjMjMgIiYjeDIxNTQ7Ij4KLTwhRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiPgotPCFFTlRJ
VFkgZnJhYzI1ICImI3gyMTU2OyI+Ci08IUVOVElUWSBmcmFjMzUgIiYjeDIxNTc7Ij4KLTwhRU5U
SVRZIGZyYWM0NSAiJiN4MjE1ODsiPgotPCFFTlRJVFkgZnJhYzE2ICImI3gyMTU5OyI+Ci08IUVO
VElUWSBmcmFjNTYgIiYjeDIxNUE7Ij4KLTwhRU5USVRZIGZyYWMxOCAiJiN4MjE1QjsiPgotPCFF
TlRJVFkgZnJhYzM4ICImI3gyMTVDOyI+Ci08IUVOVElUWSBmcmFjNTggIiYjeDIxNUQ7Ij4KLTwh
RU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiPgotPCFFTlRJVFkgbGFyciAiJiN4MjE5MDsiPgotPCFF
TlRJVFkgbGVmdGFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7
Ij4KLTwhRU5USVRZIHNsYXJyICImI3gyMTkwOyI+Ci08IUVOVElUWSBTaG9ydExlZnRBcnJvdyAi
JiN4MjE5MDsiPgotPCFFTlRJVFkgdWFyciAiJiN4MjE5MTsiPgotPCFFTlRJVFkgdXBhcnJvdyAi
JiN4MjE5MTsiPgotPCFFTlRJVFkgVXBBcnJvdyAiJiN4MjE5MTsiPgotPCFFTlRJVFkgU2hvcnRV
cEFycm93ICImI3gyMTkxOyI+Ci08IUVOVElUWSByYXJyICImI3gyMTkyOyI+Ci08IUVOVElUWSBy
aWdodGFycm93ICImI3gyMTkyOyI+Ci08IUVOVElUWSBSaWdodEFycm93ICImI3gyMTkyOyI+Ci08
IUVOVElUWSBzcmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgU2hvcnRSaWdodEFycm93ICImI3gy
MTkyOyI+Ci08IUVOVElUWSBkYXJyICImI3gyMTkzOyI+Ci08IUVOVElUWSBkb3duYXJyb3cgIiYj
eDIxOTM7Ij4KLTwhRU5USVRZIERvd25BcnJvdyAiJiN4MjE5MzsiPgotPCFFTlRJVFkgU2hvcnRE
b3duQXJyb3cgIiYjeDIxOTM7Ij4KLTwhRU5USVRZIGhhcnIgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZ
IGxlZnRyaWdodGFycm93ICImI3gyMTk0OyI+Ci08IUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4
MjE5NDsiPgotPCFFTlRJVFkgdmFyciAiJiN4MjE5NTsiPgotPCFFTlRJVFkgdXBkb3duYXJyb3cg
IiYjeDIxOTU7Ij4KLTwhRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyI+Ci08IUVOVElUWSBu
d2FyciAiJiN4MjE5NjsiPgotPCFFTlRJVFkgVXBwZXJMZWZ0QXJyb3cgIiYjeDIxOTY7Ij4KLTwh
RU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ij4KLTwhRU5USVRZIG5lYXJyICImI3gyMTk3OyI+Ci08
IUVOVElUWSBVcHBlclJpZ2h0QXJyb3cgIiYjeDIxOTc7Ij4KLTwhRU5USVRZIG5lYXJyb3cgIiYj
eDIxOTc7Ij4KLTwhRU5USVRZIHNlYXJyICImI3gyMTk4OyI+Ci08IUVOVElUWSBzZWFycm93ICIm
I3gyMTk4OyI+Ci08IUVOVElUWSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ij4KLTwhRU5USVRZ
IHN3YXJyICImI3gyMTk5OyI+Ci08IUVOVElUWSBzd2Fycm93ICImI3gyMTk5OyI+Ci08IUVOVElU
WSBMb3dlckxlZnRBcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgbmxhcnIgIiYjeDIxOUE7Ij4K
LTwhRU5USVRZIG5sZWZ0YXJyb3cgIiYjeDIxOUE7Ij4KLTwhRU5USVRZIG5yYXJyICImI3gyMTlC
OyI+Ci08IUVOVElUWSBucmlnaHRhcnJvdyAiJiN4MjE5QjsiPgotPCFFTlRJVFkgcmFycncgIiYj
eDIxOUQ7Ij4KLTwhRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjE5RDsiPgotPCFFTlRJVFkg
bnJhcnJ3ICImI3gyMTlEOyYjeDMzODsiPgotPCFFTlRJVFkgTGFyciAiJiN4MjE5RTsiPgotPCFF
TlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4MjE5RTsiPgotPCFFTlRJVFkgVWFyciAiJiN4MjE5
RjsiPgotPCFFTlRJVFkgUmFyciAiJiN4MjFBMDsiPgotPCFFTlRJVFkgdHdvaGVhZHJpZ2h0YXJy
b3cgIiYjeDIxQTA7Ij4KLTwhRU5USVRZIERhcnIgIiYjeDIxQTE7Ij4KLTwhRU5USVRZIGxhcnJ0
bCAiJiN4MjFBMjsiPgotPCFFTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiPgotPCFFTlRJ
VFkgcmFycnRsICImI3gyMUEzOyI+Ci08IUVOVElUWSByaWdodGFycm93dGFpbCAiJiN4MjFBMzsi
PgotPCFFTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyI+Ci08IUVOVElUWSBtYXBzdG9sZWZ0
ICImI3gyMUE0OyI+Ci08IUVOVElUWSBVcFRlZUFycm93ICImI3gyMUE1OyI+Ci08IUVOVElUWSBt
YXBzdG91cCAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwICImI3gyMUE2OyI+Ci08IUVOVElUWSBS
aWdodFRlZUFycm93ICImI3gyMUE2OyI+Ci08IUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ij4KLTwh
RU5USVRZIERvd25UZWVBcnJvdyAiJiN4MjFBNzsiPgotPCFFTlRJVFkgbWFwc3RvZG93biAiJiN4
MjFBNzsiPgotPCFFTlRJVFkgbGFycmhrICImI3gyMUE5OyI+Ci08IUVOVElUWSBob29rbGVmdGFy
cm93ICImI3gyMUE5OyI+Ci08IUVOVElUWSByYXJyaGsgIiYjeDIxQUE7Ij4KLTwhRU5USVRZIGhv
b2tyaWdodGFycm93ICImI3gyMUFBOyI+Ci08IUVOVElUWSBsYXJybHAgIiYjeDIxQUI7Ij4KLTwh
RU5USVRZIGxvb3BhcnJvd2xlZnQgIiYjeDIxQUI7Ij4KLTwhRU5USVRZIHJhcnJscCAiJiN4MjFB
QzsiPgotPCFFTlRJVFkgbG9vcGFycm93cmlnaHQgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGhhcnJ3
ICImI3gyMUFEOyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRzcXVpZ2Fycm93ICImI3gyMUFEOyI+Ci08
IUVOVElUWSBuaGFyciAiJiN4MjFBRTsiPgotPCFFTlRJVFkgbmxlZnRyaWdodGFycm93ICImI3gy
MUFFOyI+Ci08IUVOVElUWSBsc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIExzaCAiJiN4MjFCMDsi
PgotPCFFTlRJVFkgcnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBSc2ggIiYjeDIxQjE7Ij4KLTwh
RU5USVRZIGxkc2ggIiYjeDIxQjI7Ij4KLTwhRU5USVRZIHJkc2ggIiYjeDIxQjM7Ij4KLTwhRU5U
SVRZIGNyYXJyICImI3gyMUI1OyI+Ci08IUVOVElUWSBjdWxhcnIgIiYjeDIxQjY7Ij4KLTwhRU5U
SVRZIGN1cnZlYXJyb3dsZWZ0ICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJhcnIgIiYjeDIxQjc7
Ij4KLTwhRU5USVRZIGN1cnZlYXJyb3dyaWdodCAiJiN4MjFCNzsiPgotPCFFTlRJVFkgb2xhcnIg
IiYjeDIxQkE7Ij4KLTwhRU5USVRZIGNpcmNsZWFycm93bGVmdCAiJiN4MjFCQTsiPgotPCFFTlRJ
VFkgb3JhcnIgIiYjeDIxQkI7Ij4KLTwhRU5USVRZIGNpcmNsZWFycm93cmlnaHQgIiYjeDIxQkI7
Ij4KLTwhRU5USVRZIGxoYXJ1ICImI3gyMUJDOyI+Ci08IUVOVElUWSBMZWZ0VmVjdG9yICImI3gy
MUJDOyI+Ci08IUVOVElUWSBsZWZ0aGFycG9vbnVwICImI3gyMUJDOyI+Ci08IUVOVElUWSBsaGFy
ZCAiJiN4MjFCRDsiPgotPCFFTlRJVFkgbGVmdGhhcnBvb25kb3duICImI3gyMUJEOyI+Ci08IUVO
VElUWSBEb3duTGVmdFZlY3RvciAiJiN4MjFCRDsiPgotPCFFTlRJVFkgdWhhcnIgIiYjeDIxQkU7
Ij4KLTwhRU5USVRZIHVwaGFycG9vbnJpZ2h0ICImI3gyMUJFOyI+Ci08IUVOVElUWSBSaWdodFVw
VmVjdG9yICImI3gyMUJFOyI+Ci08IUVOVElUWSB1aGFybCAiJiN4MjFCRjsiPgotPCFFTlRJVFkg
dXBoYXJwb29ubGVmdCAiJiN4MjFCRjsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yICImI3gyMUJG
OyI+Ci08IUVOVElUWSByaGFydSAiJiN4MjFDMDsiPgotPCFFTlRJVFkgUmlnaHRWZWN0b3IgIiYj
eDIxQzA7Ij4KLTwhRU5USVRZIHJpZ2h0aGFycG9vbnVwICImI3gyMUMwOyI+Ci08IUVOVElUWSBy
aGFyZCAiJiN4MjFDMTsiPgotPCFFTlRJVFkgcmlnaHRoYXJwb29uZG93biAiJiN4MjFDMTsiPgot
PCFFTlRJVFkgRG93blJpZ2h0VmVjdG9yICImI3gyMUMxOyI+Ci08IUVOVElUWSBkaGFyciAiJiN4
MjFDMjsiPgotPCFFTlRJVFkgUmlnaHREb3duVmVjdG9yICImI3gyMUMyOyI+Ci08IUVOVElUWSBk
b3duaGFycG9vbnJpZ2h0ICImI3gyMUMyOyI+Ci08IUVOVElUWSBkaGFybCAiJiN4MjFDMzsiPgot
PCFFTlRJVFkgTGVmdERvd25WZWN0b3IgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIGRvd25oYXJwb29u
bGVmdCAiJiN4MjFDMzsiPgotPCFFTlRJVFkgcmxhcnIgIiYjeDIxQzQ7Ij4KLTwhRU5USVRZIHJp
Z2h0bGVmdGFycm93cyAiJiN4MjFDNDsiPgotPCFFTlRJVFkgUmlnaHRBcnJvd0xlZnRBcnJvdyAi
JiN4MjFDNDsiPgotPCFFTlRJVFkgdWRhcnIgIiYjeDIxQzU7Ij4KLTwhRU5USVRZIFVwQXJyb3dE
b3duQXJyb3cgIiYjeDIxQzU7Ij4KLTwhRU5USVRZIGxyYXJyICImI3gyMUM2OyI+Ci08IUVOVElU
WSBsZWZ0cmlnaHRhcnJvd3MgIiYjeDIxQzY7Ij4KLTwhRU5USVRZIExlZnRBcnJvd1JpZ2h0QXJy
b3cgIiYjeDIxQzY7Ij4KLTwhRU5USVRZIGxsYXJyICImI3gyMUM3OyI+Ci08IUVOVElUWSBsZWZ0
bGVmdGFycm93cyAiJiN4MjFDNzsiPgotPCFFTlRJVFkgdXVhcnIgIiYjeDIxQzg7Ij4KLTwhRU5U
SVRZIHVwdXBhcnJvd3MgIiYjeDIxQzg7Ij4KLTwhRU5USVRZIHJyYXJyICImI3gyMUM5OyI+Ci08
IUVOVElUWSByaWdodHJpZ2h0YXJyb3dzICImI3gyMUM5OyI+Ci08IUVOVElUWSBkZGFyciAiJiN4
MjFDQTsiPgotPCFFTlRJVFkgZG93bmRvd25hcnJvd3MgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZIGxy
aGFyICImI3gyMUNCOyI+Ci08IUVOVElUWSBSZXZlcnNlRXF1aWxpYnJpdW0gIiYjeDIxQ0I7Ij4K
LTwhRU5USVRZIGxlZnRyaWdodGhhcnBvb25zICImI3gyMUNCOyI+Ci08IUVOVElUWSBybGhhciAi
JiN4MjFDQzsiPgotPCFFTlRJVFkgcmlnaHRsZWZ0aGFycG9vbnMgIiYjeDIxQ0M7Ij4KLTwhRU5U
SVRZIEVxdWlsaWJyaXVtICImI3gyMUNDOyI+Ci08IUVOVElUWSBubEFyciAiJiN4MjFDRDsiPgot
PCFFTlRJVFkgbkxlZnRhcnJvdyAiJiN4MjFDRDsiPgotPCFFTlRJVFkgbmhBcnIgIiYjeDIxQ0U7
Ij4KLTwhRU5USVRZIG5MZWZ0cmlnaHRhcnJvdyAiJiN4MjFDRTsiPgotPCFFTlRJVFkgbnJBcnIg
IiYjeDIxQ0Y7Ij4KLTwhRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNGOyI+Ci08IUVOVElUWSBs
QXJyICImI3gyMUQwOyI+Ci08IUVOVElUWSBMZWZ0YXJyb3cgIiYjeDIxRDA7Ij4KLTwhRU5USVRZ
IERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiPgotPCFFTlRJVFkgdUFyciAiJiN4MjFEMTsiPgot
PCFFTlRJVFkgVXBhcnJvdyAiJiN4MjFEMTsiPgotPCFFTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4
MjFEMTsiPgotPCFFTlRJVFkgckFyciAiJiN4MjFEMjsiPgotPCFFTlRJVFkgUmlnaHRhcnJvdyAi
JiN4MjFEMjsiPgotPCFFTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiPgotPCFFTlRJVFkgRG91Ymxl
UmlnaHRBcnJvdyAiJiN4MjFEMjsiPgotPCFFTlRJVFkgZEFyciAiJiN4MjFEMzsiPgotPCFFTlRJ
VFkgRG93bmFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBEb3VibGVEb3duQXJyb3cgIiYjeDIx
RDM7Ij4KLTwhRU5USVRZIGhBcnIgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIExlZnRyaWdodGFycm93
ICImI3gyMUQ0OyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0UmlnaHRBcnJvdyAiJiN4MjFENDsiPgot
PCFFTlRJVFkgaWZmICImI3gyMUQ0OyI+Ci08IUVOVElUWSB2QXJyICImI3gyMUQ1OyI+Ci08IUVO
VElUWSBVcGRvd25hcnJvdyAiJiN4MjFENTsiPgotPCFFTlRJVFkgRG91YmxlVXBEb3duQXJyb3cg
IiYjeDIxRDU7Ij4KLTwhRU5USVRZIG53QXJyICImI3gyMUQ2OyI+Ci08IUVOVElUWSBuZUFyciAi
JiN4MjFENzsiPgotPCFFTlRJVFkgc2VBcnIgIiYjeDIxRDg7Ij4KLTwhRU5USVRZIHN3QXJyICIm
I3gyMUQ5OyI+Ci08IUVOVElUWSBsQWFyciAiJiN4MjFEQTsiPgotPCFFTlRJVFkgTGxlZnRhcnJv
dyAiJiN4MjFEQTsiPgotPCFFTlRJVFkgckFhcnIgIiYjeDIxREI7Ij4KLTwhRU5USVRZIFJyaWdo
dGFycm93ICImI3gyMURCOyI+Ci08IUVOVElUWSB6aWdyYXJyICImI3gyMUREOyI+Ci08IUVOVElU
WSBsYXJyYiAiJiN4MjFFNDsiPgotPCFFTlRJVFkgTGVmdEFycm93QmFyICImI3gyMUU0OyI+Ci08
IUVOVElUWSByYXJyYiAiJiN4MjFFNTsiPgotPCFFTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFF
NTsiPgotPCFFTlRJVFkgZHVhcnIgIiYjeDIxRjU7Ij4KLTwhRU5USVRZIERvd25BcnJvd1VwQXJy
b3cgIiYjeDIxRjU7Ij4KLTwhRU5USVRZIGxvYXJyICImI3gyMUZEOyI+Ci08IUVOVElUWSByb2Fy
ciAiJiN4MjFGRTsiPgotPCFFTlRJVFkgaG9hcnIgIiYjeDIxRkY7Ij4KLTwhRU5USVRZIGZvcmFs
bCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgRm9yQWxsICImI3gyMjAwOyI+Ci08IUVOVElUWSBjb21w
ICImI3gyMjAxOyI+Ci08IUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyI+Ci08IUVOVElUWSBw
YXJ0ICImI3gyMjAyOyI+Ci08IUVOVElUWSBQYXJ0aWFsRCAiJiN4MjIwMjsiPgotPCFFTlRJVFkg
bnBhcnQgIiYjeDIyMDI7JiN4MzM4OyI+Ci08IUVOVElUWSBleGlzdCAiJiN4MjIwMzsiPgotPCFF
TlRJVFkgRXhpc3RzICImI3gyMjAzOyI+Ci08IUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ij4KLTwh
RU5USVRZIE5vdEV4aXN0cyAiJiN4MjIwNDsiPgotPCFFTlRJVFkgbmV4aXN0cyAiJiN4MjIwNDsi
PgotPCFFTlRJVFkgZW1wdHkgIiYjeDIyMDU7Ij4KLTwhRU5USVRZIGVtcHR5c2V0ICImI3gyMjA1
OyI+Ci08IUVOVElUWSBlbXB0eXYgIiYjeDIyMDU7Ij4KLTwhRU5USVRZIHZhcm5vdGhpbmcgIiYj
eDIyMDU7Ij4KLTwhRU5USVRZIG5hYmxhICImI3gyMjA3OyI+Ci08IUVOVElUWSBEZWwgIiYjeDIy
MDc7Ij4KLTwhRU5USVRZIGlzaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIGlzaW52ICImI3gyMjA4
OyI+Ci08IUVOVElUWSBFbGVtZW50ICImI3gyMjA4OyI+Ci08IUVOVElUWSBpbiAiJiN4MjIwODsi
PgotPCFFTlRJVFkgbm90aW4gIiYjeDIyMDk7Ij4KLTwhRU5USVRZIE5vdEVsZW1lbnQgIiYjeDIy
MDk7Ij4KLTwhRU5USVRZIG5vdGludmEgIiYjeDIyMDk7Ij4KLTwhRU5USVRZIG5pdiAiJiN4MjIw
QjsiPgotPCFFTlRJVFkgUmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5pICIm
I3gyMjBCOyI+Ci08IUVOVElUWSBTdWNoVGhhdCAiJiN4MjIwQjsiPgotPCFFTlRJVFkgbm90bmkg
IiYjeDIyMEM7Ij4KLTwhRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ij4KLTwhRU5USVRZIE5vdFJl
dmVyc2VFbGVtZW50ICImI3gyMjBDOyI+Ci08IUVOVElUWSBwcm9kICImI3gyMjBGOyI+Ci08IUVO
VElUWSBQcm9kdWN0ICImI3gyMjBGOyI+Ci08IUVOVElUWSBjb3Byb2QgIiYjeDIyMTA7Ij4KLTwh
RU5USVRZIENvcHJvZHVjdCAiJiN4MjIxMDsiPgotPCFFTlRJVFkgc3VtICImI3gyMjExOyI+Ci08
IUVOVElUWSBTdW0gIiYjeDIyMTE7Ij4KLTwhRU5USVRZIG1pbnVzICImI3gyMjEyOyI+Ci08IUVO
VElUWSBtbnBsdXMgIiYjeDIyMTM7Ij4KLTwhRU5USVRZIG1wICImI3gyMjEzOyI+Ci08IUVOVElU
WSBNaW51c1BsdXMgIiYjeDIyMTM7Ij4KLTwhRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiPgotPCFF
TlRJVFkgZG90cGx1cyAiJiN4MjIxNDsiPgotPCFFTlRJVFkgc2V0bW4gIiYjeDIyMTY7Ij4KLTwh
RU5USVRZIHNldG1pbnVzICImI3gyMjE2OyI+Ci08IUVOVElUWSBCYWNrc2xhc2ggIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIHNzZXRtbiAiJiN4MjIxNjsiPgotPCFFTlRJVFkgc21hbGxzZXRtaW51cyAi
JiN4MjIxNjsiPgotPCFFTlRJVFkgbG93YXN0ICImI3gyMjE3OyI+Ci08IUVOVElUWSBjb21wZm4g
IiYjeDIyMTg7Ij4KLTwhRU5USVRZIFNtYWxsQ2lyY2xlICImI3gyMjE4OyI+Ci08IUVOVElUWSBy
YWRpYyAiJiN4MjIxQTsiPgotPCFFTlRJVFkgU3FydCAiJiN4MjIxQTsiPgotPCFFTlRJVFkgcHJv
cCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgcHJvcHRvICImI3gyMjFEOyI+Ci08IUVOVElUWSBQcm9w
b3J0aW9uYWwgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHZwcm9wICImI3gyMjFEOyI+Ci08IUVOVElU
WSB2YXJwcm9wdG8gIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIGluZmluICImI3gyMjFFOyI+Ci08IUVO
VElUWSBhbmdydCAiJiN4MjIxRjsiPgotPCFFTlRJVFkgYW5nICImI3gyMjIwOyI+Ci08IUVOVElU
WSBhbmdsZSAiJiN4MjIyMDsiPgotPCFFTlRJVFkgbmFuZyAiJiN4MjIyMDsmI3gyMEQyOyI+Ci08
IUVOVElUWSBhbmdtc2QgIiYjeDIyMjE7Ij4KLTwhRU5USVRZIG1lYXN1cmVkYW5nbGUgIiYjeDIy
MjE7Ij4KLTwhRU5USVRZIGFuZ3NwaCAiJiN4MjIyMjsiPgotPCFFTlRJVFkgbWlkICImI3gyMjIz
OyI+Ci08IUVOVElUWSBWZXJ0aWNhbEJhciAiJiN4MjIyMzsiPgotPCFFTlRJVFkgc21pZCAiJiN4
MjIyMzsiPgotPCFFTlRJVFkgc2hvcnRtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIG5taWQgIiYj
eDIyMjQ7Ij4KLTwhRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyI+Ci08IUVOVElUWSBu
c21pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNob3J0bWlkICImI3gyMjI0OyI+Ci08IUVOVElU
WSBwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHBhcmFsbGVsICImI3gyMjI1OyI+Ci08IUVOVElU
WSBEb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNTsiPgotPCFFTlRJVFkgc3BhciAiJiN4MjIyNTsi
PgotPCFFTlRJVFkgc2hvcnRwYXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgbnBhciAiJiN4
MjIyNjsiPgotPCFFTlRJVFkgbnBhcmFsbGVsICImI3gyMjI2OyI+Ci08IUVOVElUWSBOb3REb3Vi
bGVWZXJ0aWNhbEJhciAiJiN4MjIyNjsiPgotPCFFTlRJVFkgbnNwYXIgIiYjeDIyMjY7Ij4KLTwh
RU5USVRZIG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyI+Ci08IUVOVElUWSBhbmQgIiYjeDIyMjc7
Ij4KLTwhRU5USVRZIHdlZGdlICImI3gyMjI3OyI+Ci08IUVOVElUWSBvciAiJiN4MjIyODsiPgot
PCFFTlRJVFkgdmVlICImI3gyMjI4OyI+Ci08IUVOVElUWSBjYXAgIiYjeDIyMjk7Ij4KLTwhRU5U
SVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiPgotPCFFTlRJVFkgY3VwICImI3gyMjJBOyI+Ci08
IUVOVElUWSBjdXBzICImI3gyMjJBOyYjeEZFMDA7Ij4KLTwhRU5USVRZIGludCAiJiN4MjIyQjsi
PgotPCFFTlRJVFkgSW50ZWdyYWwgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludCAiJiN4MjIyQzsi
PgotPCFFTlRJVFkgdGludCAiJiN4MjIyRDsiPgotPCFFTlRJVFkgaWlpbnQgIiYjeDIyMkQ7Ij4K
LTwhRU5USVRZIGNvbmludCAiJiN4MjIyRTsiPgotPCFFTlRJVFkgb2ludCAiJiN4MjIyRTsiPgot
PCFFTlRJVFkgQ29udG91ckludGVncmFsICImI3gyMjJFOyI+Ci08IUVOVElUWSBDb25pbnQgIiYj
eDIyMkY7Ij4KLTwhRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRjsiPgotPCFF
TlRJVFkgQ2NvbmludCAiJiN4MjIzMDsiPgotPCFFTlRJVFkgY3dpbnQgIiYjeDIyMzE7Ij4KLTwh
RU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyI+Ci08IUVOVElUWSBDbG9ja3dpc2VDb250b3VySW50
ZWdyYWwgIiYjeDIyMzI7Ij4KLTwhRU5USVRZIGF3Y29uaW50ICImI3gyMjMzOyI+Ci08IUVOVElU
WSBDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMzOyI+Ci08IUVOVElUWSB0
aGVyZTQgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIHRoZXJlZm9yZSAiJiN4MjIzNDsiPgotPCFFTlRJ
VFkgVGhlcmVmb3JlICImI3gyMjM0OyI+Ci08IUVOVElUWSBiZWNhdXMgIiYjeDIyMzU7Ij4KLTwh
RU5USVRZIGJlY2F1c2UgIiYjeDIyMzU7Ij4KLTwhRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ij4K
LTwhRU5USVRZIHJhdGlvICImI3gyMjM2OyI+Ci08IUVOVElUWSBDb2xvbiAiJiN4MjIzNzsiPgot
PCFFTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiPgotPCFFTlRJVFkgbWludXNkICImI3gyMjM4
OyI+Ci08IUVOVElUWSBkb3RtaW51cyAiJiN4MjIzODsiPgotPCFFTlRJVFkgbUREb3QgIiYjeDIy
M0E7Ij4KLTwhRU5USVRZIGhvbXRodCAiJiN4MjIzQjsiPgotPCFFTlRJVFkgc2ltICImI3gyMjND
OyI+Ci08IUVOVElUWSBUaWxkZSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhrc2ltICImI3gyMjND
OyI+Ci08IUVOVElUWSB0aGlja3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgbnZzaW0gIiYjeDIy
M0M7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnNpbSAiJiN4MjIzRDsiPgotPCFFTlRJVFkgYmFja3Np
bSAiJiN4MjIzRDsiPgotPCFFTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ij4KLTwhRU5USVRZ
IGFjICImI3gyMjNFOyI+Ci08IUVOVElUWSBtc3Rwb3MgIiYjeDIyM0U7Ij4KLTwhRU5USVRZIGFj
RSAiJiN4MjIzRTsmI3gzMzM7Ij4KLTwhRU5USVRZIGFjZCAiJiN4MjIzRjsiPgotPCFFTlRJVFkg
d3JlYXRoICImI3gyMjQwOyI+Ci08IUVOVElUWSBWZXJ0aWNhbFRpbGRlICImI3gyMjQwOyI+Ci08
IUVOVElUWSB3ciAiJiN4MjI0MDsiPgotPCFFTlRJVFkgbnNpbSAiJiN4MjI0MTsiPgotPCFFTlRJ
VFkgTm90VGlsZGUgIiYjeDIyNDE7Ij4KLTwhRU5USVRZIGVzaW0gIiYjeDIyNDI7Ij4KLTwhRU5U
SVRZIEVxdWFsVGlsZGUgIiYjeDIyNDI7Ij4KLTwhRU5USVRZIGVxc2ltICImI3gyMjQyOyI+Ci08
IUVOVElUWSBOb3RFcXVhbFRpbGRlICImI3gyMjQyOyYjeDMzODsiPgotPCFFTlRJVFkgbmVzaW0g
IiYjeDIyNDI7JiN4MzM4OyI+Ci08IUVOVElUWSBzaW1lICImI3gyMjQzOyI+Ci08IUVOVElUWSBU
aWxkZUVxdWFsICImI3gyMjQzOyI+Ci08IUVOVElUWSBzaW1lcSAiJiN4MjI0MzsiPgotPCFFTlRJ
VFkgbnNpbWUgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIG5zaW1lcSAiJiN4MjI0NDsiPgotPCFFTlRJ
VFkgTm90VGlsZGVFcXVhbCAiJiN4MjI0NDsiPgotPCFFTlRJVFkgY29uZyAiJiN4MjI0NTsiPgot
PCFFTlRJVFkgVGlsZGVGdWxsRXF1YWwgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIHNpbW5lICImI3gy
MjQ2OyI+Ci08IUVOVElUWSBuY29uZyAiJiN4MjI0NzsiPgotPCFFTlRJVFkgTm90VGlsZGVGdWxs
RXF1YWwgIiYjeDIyNDc7Ij4KLTwhRU5USVRZIGFzeW1wICImI3gyMjQ4OyI+Ci08IUVOVElUWSBh
cCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgVGlsZGVUaWxkZSAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
YXBwcm94ICImI3gyMjQ4OyI+Ci08IUVOVElUWSB0aGthcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
dGhpY2thcHByb3ggIiYjeDIyNDg7Ij4KLTwhRU5USVRZIG5hcCAiJiN4MjI0OTsiPgotPCFFTlRJ
VFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiPgotPCFFTlRJVFkgbmFwcHJveCAiJiN4MjI0OTsi
PgotPCFFTlRJVFkgYXBlICImI3gyMjRBOyI+Ci08IUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsi
PgotPCFFTlRJVFkgYXBpZCAiJiN4MjI0QjsiPgotPCFFTlRJVFkgbmFwaWQgIiYjeDIyNEI7JiN4
MzM4OyI+Ci08IUVOVElUWSBiY29uZyAiJiN4MjI0QzsiPgotPCFFTlRJVFkgYmFja2NvbmcgIiYj
eDIyNEM7Ij4KLTwhRU5USVRZIGFzeW1wZXEgIiYjeDIyNEQ7Ij4KLTwhRU5USVRZIEN1cENhcCAi
JiN4MjI0RDsiPgotPCFFTlRJVFkgbnZhcCAiJiN4MjI0RDsmI3gyMEQyOyI+Ci08IUVOVElUWSBi
dW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIyNEU7Ij4KLTwhRU5U
SVRZIEJ1bXBlcSAiJiN4MjI0RTsiPgotPCFFTlRJVFkgTm90SHVtcERvd25IdW1wICImI3gyMjRF
OyYjeDMzODsiPgotPCFFTlRJVFkgbmJ1bXAgIiYjeDIyNEU7JiN4MzM4OyI+Ci08IUVOVElUWSBi
dW1wZSAiJiN4MjI0RjsiPgotPCFFTlRJVFkgSHVtcEVxdWFsICImI3gyMjRGOyI+Ci08IUVOVElU
WSBidW1wZXEgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIG5idW1wZSAiJiN4MjI0RjsmI3gzMzg7Ij4K
LTwhRU5USVRZIE5vdEh1bXBFcXVhbCAiJiN4MjI0RjsmI3gzMzg7Ij4KLTwhRU5USVRZIGVzZG90
ICImI3gyMjUwOyI+Ci08IUVOVElUWSBEb3RFcXVhbCAiJiN4MjI1MDsiPgotPCFFTlRJVFkgZG90
ZXEgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiPgotPCFFTlRJ
VFkgZURvdCAiJiN4MjI1MTsiPgotPCFFTlRJVFkgZG90ZXFkb3QgIiYjeDIyNTE7Ij4KLTwhRU5U
SVRZIGVmRG90ICImI3gyMjUyOyI+Ci08IUVOVElUWSBmYWxsaW5nZG90c2VxICImI3gyMjUyOyI+
Ci08IUVOVElUWSBlckRvdCAiJiN4MjI1MzsiPgotPCFFTlRJVFkgcmlzaW5nZG90c2VxICImI3gy
MjUzOyI+Ci08IUVOVElUWSBjb2xvbmUgIiYjeDIyNTQ7Ij4KLTwhRU5USVRZIGNvbG9uZXEgIiYj
eDIyNTQ7Ij4KLTwhRU5USVRZIEFzc2lnbiAiJiN4MjI1NDsiPgotPCFFTlRJVFkgZWNvbG9uICIm
I3gyMjU1OyI+Ci08IUVOVElUWSBlcWNvbG9uICImI3gyMjU1OyI+Ci08IUVOVElUWSBlY2lyICIm
I3gyMjU2OyI+Ci08IUVOVElUWSBlcWNpcmMgIiYjeDIyNTY7Ij4KLTwhRU5USVRZIGNpcmUgIiYj
eDIyNTc7Ij4KLTwhRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiPgotPCFFTlRJVFkgd2VkZ2VxICIm
I3gyMjU5OyI+Ci08IUVOVElUWSB2ZWVlcSAiJiN4MjI1QTsiPgotPCFFTlRJVFkgdHJpZSAiJiN4
MjI1QzsiPgotPCFFTlRJVFkgdHJpYW5nbGVxICImI3gyMjVDOyI+Ci08IUVOVElUWSBlcXVlc3Qg
IiYjeDIyNUY7Ij4KLTwhRU5USVRZIHF1ZXN0ZXEgIiYjeDIyNUY7Ij4KLTwhRU5USVRZIG5lICIm
I3gyMjYwOyI+Ci08IUVOVElUWSBOb3RFcXVhbCAiJiN4MjI2MDsiPgotPCFFTlRJVFkgZXF1aXYg
IiYjeDIyNjE7Ij4KLTwhRU5USVRZIENvbmdydWVudCAiJiN4MjI2MTsiPgotPCFFTlRJVFkgYm5l
cXVpdiAiJiN4MjI2MTsmI3gyMEU1OyI+Ci08IUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ij4KLTwh
RU5USVRZIE5vdENvbmdydWVudCAiJiN4MjI2MjsiPgotPCFFTlRJVFkgbGUgIiYjeDIyNjQ7Ij4K
LTwhRU5USVRZIGxlcSAiJiN4MjI2NDsiPgotPCFFTlRJVFkgbnZsZSAiJiN4MjI2NDsmI3gyMEQy
OyI+Ci08IUVOVElUWSBnZSAiJiN4MjI2NTsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsICImI3gy
MjY1OyI+Ci08IUVOVElUWSBnZXEgIiYjeDIyNjU7Ij4KLTwhRU5USVRZIG52Z2UgIiYjeDIyNjU7
JiN4MjBEMjsiPgotPCFFTlRJVFkgbEUgIiYjeDIyNjY7Ij4KLTwhRU5USVRZIExlc3NGdWxsRXF1
YWwgIiYjeDIyNjY7Ij4KLTwhRU5USVRZIGxlcXEgIiYjeDIyNjY7Ij4KLTwhRU5USVRZIG5sRSAi
JiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5sZXFxICImI3gyMjY2OyYjeDMzODsiPgotPCFF
TlRJVFkgZ0UgIiYjeDIyNjc7Ij4KLTwhRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7
Ij4KLTwhRU5USVRZIGdlcXEgIiYjeDIyNjc7Ij4KLTwhRU5USVRZIG5nRSAiJiN4MjI2NzsmI3gz
Mzg7Ij4KLTwhRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiPgotPCFFTlRJVFkgTm90R3Jl
YXRlckZ1bGxFcXVhbCAiJiN4MjI2NzsmI3gzMzg7Ij4KLTwhRU5USVRZIGxuRSAiJiN4MjI2ODsi
PgotPCFFTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGx2bkUgIiYjeDIyNjg7JiN4
RkUwMDsiPgotPCFFTlRJVFkgbHZlcnRuZXFxICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IGduRSAiJiN4MjI2OTsiPgotPCFFTlRJVFkgZ25lcXEgIiYjeDIyNjk7Ij4KLTwhRU5USVRZIGd2
bkUgIiYjeDIyNjk7JiN4RkUwMDsiPgotPCFFTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZF
MDA7Ij4KLTwhRU5USVRZIEx0ICImI3gyMjZBOyI+Ci08IUVOVElUWSBOZXN0ZWRMZXNzTGVzcyAi
JiN4MjI2QTsiPgotPCFFTlRJVFkgbGwgIiYjeDIyNkE7Ij4KLTwhRU5USVRZIG5MdHYgIiYjeDIy
NkE7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RMZXNzTGVzcyAiJiN4MjI2QTsmI3gzMzg7Ij4KLTwh
RU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyI+Ci08IUVOVElUWSBHdCAiJiN4MjI2QjsiPgot
PCFFTlRJVFkgTmVzdGVkR3JlYXRlckdyZWF0ZXIgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIGdnICIm
I3gyMjZCOyI+Ci08IUVOVElUWSBuR3R2ICImI3gyMjZCOyYjeDMzODsiPgotPCFFTlRJVFkgTm90
R3JlYXRlckdyZWF0ZXIgIiYjeDIyNkI7JiN4MzM4OyI+Ci08IUVOVElUWSBuR3QgIiYjeDIyNkI7
JiN4MjBEMjsiPgotPCFFTlRJVFkgdHdpeHQgIiYjeDIyNkM7Ij4KLTwhRU5USVRZIGJldHdlZW4g
IiYjeDIyNkM7Ij4KLTwhRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiPgotPCFFTlRJVFkgbmx0
ICImI3gyMjZFOyI+Ci08IUVOVElUWSBOb3RMZXNzICImI3gyMjZFOyI+Ci08IUVOVElUWSBubGVz
cyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmd0ICImI3gyMjZGOyI+Ci08IUVOVElUWSBOb3RHcmVh
dGVyICImI3gyMjZGOyI+Ci08IUVOVElUWSBuZ3RyICImI3gyMjZGOyI+Ci08IUVOVElUWSBubGUg
IiYjeDIyNzA7Ij4KLTwhRU5USVRZIE5vdExlc3NFcXVhbCAiJiN4MjI3MDsiPgotPCFFTlRJVFkg
bmxlcSAiJiN4MjI3MDsiPgotPCFFTlRJVFkgbmdlICImI3gyMjcxOyI+Ci08IUVOVElUWSBOb3RH
cmVhdGVyRXF1YWwgIiYjeDIyNzE7Ij4KLTwhRU5USVRZIG5nZXEgIiYjeDIyNzE7Ij4KLTwhRU5U
SVRZIGxzaW0gIiYjeDIyNzI7Ij4KLTwhRU5USVRZIExlc3NUaWxkZSAiJiN4MjI3MjsiPgotPCFF
TlRJVFkgbGVzc3NpbSAiJiN4MjI3MjsiPgotPCFFTlRJVFkgZ3NpbSAiJiN4MjI3MzsiPgotPCFF
TlRJVFkgZ3Ryc2ltICImI3gyMjczOyI+Ci08IUVOVElUWSBHcmVhdGVyVGlsZGUgIiYjeDIyNzM7
Ij4KLTwhRU5USVRZIG5sc2ltICImI3gyMjc0OyI+Ci08IUVOVElUWSBOb3RMZXNzVGlsZGUgIiYj
eDIyNzQ7Ij4KLTwhRU5USVRZIG5nc2ltICImI3gyMjc1OyI+Ci08IUVOVElUWSBOb3RHcmVhdGVy
VGlsZGUgIiYjeDIyNzU7Ij4KLTwhRU5USVRZIGxnICImI3gyMjc2OyI+Ci08IUVOVElUWSBsZXNz
Z3RyICImI3gyMjc2OyI+Ci08IUVOVElUWSBMZXNzR3JlYXRlciAiJiN4MjI3NjsiPgotPCFFTlRJ
VFkgZ2wgIiYjeDIyNzc7Ij4KLTwhRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ij4KLTwhRU5USVRZ
IEdyZWF0ZXJMZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBudGxnICImI3gyMjc4OyI+Ci08IUVO
VElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiPgotPCFFTlRJVFkgbnRnbCAiJiN4MjI3OTsi
PgotPCFFTlRJVFkgTm90R3JlYXRlckxlc3MgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIHByICImI3gy
MjdBOyI+Ci08IUVOVElUWSBQcmVjZWRlcyAiJiN4MjI3QTsiPgotPCFFTlRJVFkgcHJlYyAiJiN4
MjI3QTsiPgotPCFFTlRJVFkgc2MgIiYjeDIyN0I7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzICImI3gy
MjdCOyI+Ci08IUVOVElUWSBzdWNjICImI3gyMjdCOyI+Ci08IUVOVElUWSBwcmN1ZSAiJiN4MjI3
QzsiPgotPCFFTlRJVFkgUHJlY2VkZXNTbGFudEVxdWFsICImI3gyMjdDOyI+Ci08IUVOVElUWSBw
cmVjY3VybHllcSAiJiN4MjI3QzsiPgotPCFFTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ij4KLTwhRU5U
SVRZIFN1Y2NlZWRzU2xhbnRFcXVhbCAiJiN4MjI3RDsiPgotPCFFTlRJVFkgc3VjY2N1cmx5ZXEg
IiYjeDIyN0Q7Ij4KLTwhRU5USVRZIHByc2ltICImI3gyMjdFOyI+Ci08IUVOVElUWSBwcmVjc2lt
ICImI3gyMjdFOyI+Ci08IUVOVElUWSBQcmVjZWRlc1RpbGRlICImI3gyMjdFOyI+Ci08IUVOVElU
WSBzY3NpbSAiJiN4MjI3RjsiPgotPCFFTlRJVFkgc3VjY3NpbSAiJiN4MjI3RjsiPgotPCFFTlRJ
VFkgU3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAi
JiN4MjI3RjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5wciAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnBy
ZWMgIiYjeDIyODA7Ij4KLTwhRU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyI+Ci08IUVOVElU
WSBuc2MgIiYjeDIyODE7Ij4KLTwhRU5USVRZIG5zdWNjICImI3gyMjgxOyI+Ci08IUVOVElUWSBO
b3RTdWNjZWVkcyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgc3ViICImI3gyMjgyOyI+Ci08IUVOVElU
WSBzdWJzZXQgIiYjeDIyODI7Ij4KLTwhRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIwRDI7Ij4K
LTwhRU5USVRZIG5zdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiPgotPCFFTlRJVFkgTm90U3Vic2V0
ICImI3gyMjgyOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHN1cCAiJiN4MjI4MzsiPgotPCFFTlRJVFkg
c3Vwc2V0ICImI3gyMjgzOyI+Ci08IUVOVElUWSBTdXBlcnNldCAiJiN4MjI4MzsiPgotPCFFTlRJ
VFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1cHNldCAiJiN4MjI4Mzsm
I3gyMEQyOyI+Ci08IUVOVElUWSBOb3RTdXBlcnNldCAiJiN4MjI4MzsmI3gyMEQyOyI+Ci08IUVO
VElUWSBuc3ViICImI3gyMjg0OyI+Ci08IUVOVElUWSBuc3VwICImI3gyMjg1OyI+Ci08IUVOVElU
WSBzdWJlICImI3gyMjg2OyI+Ci08IUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiPgotPCFF
TlRJVFkgc3Vic2V0ZXEgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1cGUgIiYjeDIyODc7Ij4KLTwh
RU5USVRZIHN1cHNldGVxICImI3gyMjg3OyI+Ci08IUVOVElUWSBTdXBlcnNldEVxdWFsICImI3gy
Mjg3OyI+Ci08IUVOVElUWSBuc3ViZSAiJiN4MjI4ODsiPgotPCFFTlRJVFkgbnN1YnNldGVxICIm
I3gyMjg4OyI+Ci08IUVOVElUWSBOb3RTdWJzZXRFcXVhbCAiJiN4MjI4ODsiPgotPCFFTlRJVFkg
bnN1cGUgIiYjeDIyODk7Ij4KLTwhRU5USVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiPgotPCFFTlRJ
VFkgTm90U3VwZXJzZXRFcXVhbCAiJiN4MjI4OTsiPgotPCFFTlRJVFkgc3VibmUgIiYjeDIyOEE7
Ij4KLTwhRU5USVRZIHN1YnNldG5lcSAiJiN4MjI4QTsiPgotPCFFTlRJVFkgdnN1Ym5lICImI3gy
MjhBOyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1YnNldG5lcSAiJiN4MjI4QTsmI3hGRTAwOyI+
Ci08IUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgc3Vwc2V0bmVxICImI3gyMjhC
OyI+Ci08IUVOVElUWSB2c3VwbmUgIiYjeDIyOEI7JiN4RkUwMDsiPgotPCFFTlRJVFkgdmFyc3Vw
c2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ij4KLTwhRU5USVRZIGN1cGRvdCAiJiN4MjI4RDsiPgot
PCFFTlRJVFkgdXBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsi
PgotPCFFTlRJVFkgc3FzdWIgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIFNxdWFyZVN1YnNldCAiJiN4
MjI4RjsiPgotPCFFTlRJVFkgc3FzdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIE5vdFNxdWFy
ZVN1YnNldCAiJiN4MjI4RjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3VwICImI3gyMjkwOyI+Ci08
IUVOVElUWSBTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgc3FzdXBzZXQgIiYj
eDIyOTA7Ij4KLTwhRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0ICImI3gyMjkwOyYjeDMzODsiPgot
PCFFTlRJVFkgc3FzdWJlICImI3gyMjkxOyI+Ci08IUVOVElUWSBTcXVhcmVTdWJzZXRFcXVhbCAi
JiN4MjI5MTsiPgotPCFFTlRJVFkgc3FzdWJzZXRlcSAiJiN4MjI5MTsiPgotPCFFTlRJVFkgc3Fz
dXBlICImI3gyMjkyOyI+Ci08IUVOVElUWSBTcXVhcmVTdXBlcnNldEVxdWFsICImI3gyMjkyOyI+
Ci08IUVOVElUWSBzcXN1cHNldGVxICImI3gyMjkyOyI+Ci08IUVOVElUWSBzcWNhcCAiJiN4MjI5
MzsiPgotPCFFTlRJVFkgU3F1YXJlSW50ZXJzZWN0aW9uICImI3gyMjkzOyI+Ci08IUVOVElUWSBz
cWNhcHMgIiYjeDIyOTM7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ij4KLTwh
RU5USVRZIFNxdWFyZVVuaW9uICImI3gyMjk0OyI+Ci08IUVOVElUWSBzcWN1cHMgIiYjeDIyOTQ7
JiN4RkUwMDsiPgotPCFFTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ij4KLTwhRU5USVRZIENpcmNsZVBs
dXMgIiYjeDIyOTU7Ij4KLTwhRU5USVRZIG9taW51cyAiJiN4MjI5NjsiPgotPCFFTlRJVFkgQ2ly
Y2xlTWludXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIG90aW1lcyAiJiN4MjI5NzsiPgotPCFFTlRJ
VFkgQ2lyY2xlVGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIG9zb2wgIiYjeDIyOTg7Ij4KLTwh
RU5USVRZIG9kb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIENpcmNsZURvdCAiJiN4MjI5OTsiPgot
PCFFTlRJVFkgb2NpciAiJiN4MjI5QTsiPgotPCFFTlRJVFkgY2lyY2xlZGNpcmMgIiYjeDIyOUE7
Ij4KLTwhRU5USVRZIG9hc3QgIiYjeDIyOUI7Ij4KLTwhRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIy
OUI7Ij4KLTwhRU5USVRZIG9kYXNoICImI3gyMjlEOyI+Ci08IUVOVElUWSBjaXJjbGVkZGFzaCAi
JiN4MjI5RDsiPgotPCFFTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ij4KLTwhRU5USVRZIGJveHBsdXMg
IiYjeDIyOUU7Ij4KLTwhRU5USVRZIG1pbnVzYiAiJiN4MjI5RjsiPgotPCFFTlRJVFkgYm94bWlu
dXMgIiYjeDIyOUY7Ij4KLTwhRU5USVRZIHRpbWVzYiAiJiN4MjJBMDsiPgotPCFFTlRJVFkgYm94
dGltZXMgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIHNkb3RiICImI3gyMkExOyI+Ci08IUVOVElUWSBk
b3RzcXVhcmUgIiYjeDIyQTE7Ij4KLTwhRU5USVRZIHZkYXNoICImI3gyMkEyOyI+Ci08IUVOVElU
WSBSaWdodFRlZSAiJiN4MjJBMjsiPgotPCFFTlRJVFkgZGFzaHYgIiYjeDIyQTM7Ij4KLTwhRU5U
SVRZIExlZnRUZWUgIiYjeDIyQTM7Ij4KLTwhRU5USVRZIHRvcCAiJiN4MjJBNDsiPgotPCFFTlRJ
VFkgRG93blRlZSAiJiN4MjJBNDsiPgotPCFFTlRJVFkgYm90dG9tICImI3gyMkE1OyI+Ci08IUVO
VElUWSBib3QgIiYjeDIyQTU7Ij4KLTwhRU5USVRZIHBlcnAgIiYjeDIyQTU7Ij4KLTwhRU5USVRZ
IFVwVGVlICImI3gyMkE1OyI+Ci08IUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7Ij4KLTwhRU5USVRZ
IHZEYXNoICImI3gyMkE4OyI+Ci08IUVOVElUWSBEb3VibGVSaWdodFRlZSAiJiN4MjJBODsiPgot
PCFFTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ij4KLTwhRU5USVRZIFZ2ZGFzaCAiJiN4MjJBQTsiPgot
PCFFTlRJVFkgVkRhc2ggIiYjeDIyQUI7Ij4KLTwhRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiPgot
PCFFTlRJVFkgbnZEYXNoICImI3gyMkFEOyI+Ci08IUVOVElUWSBuVmRhc2ggIiYjeDIyQUU7Ij4K
LTwhRU5USVRZIG5WRGFzaCAiJiN4MjJBRjsiPgotPCFFTlRJVFkgcHJ1cmVsICImI3gyMkIwOyI+
Ci08IUVOVElUWSB2bHRyaSAiJiN4MjJCMjsiPgotPCFFTlRJVFkgdmFydHJpYW5nbGVsZWZ0ICIm
I3gyMkIyOyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGUgIiYjeDIyQjI7Ij4KLTwhRU5USVRZIHZy
dHJpICImI3gyMkIzOyI+Ci08IUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0ICImI3gyMkIzOyI+Ci08
IUVOVElUWSBSaWdodFRyaWFuZ2xlICImI3gyMkIzOyI+Ci08IUVOVElUWSBsdHJpZSAiJiN4MjJC
NDsiPgotPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ZXEgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIExlZnRU
cmlhbmdsZUVxdWFsICImI3gyMkI0OyI+Ci08IUVOVElUWSBudmx0cmllICImI3gyMkI0OyYjeDIw
RDI7Ij4KLTwhRU5USVRZIHJ0cmllICImI3gyMkI1OyI+Ci08IUVOVElUWSB0cmlhbmdsZXJpZ2h0
ZXEgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNTsiPgot
PCFFTlRJVFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyI+Ci08IUVOVElUWSBvcmlnb2YgIiYj
eDIyQjY7Ij4KLTwhRU5USVRZIGltb2YgIiYjeDIyQjc7Ij4KLTwhRU5USVRZIG11bWFwICImI3gy
MkI4OyI+Ci08IUVOVElUWSBtdWx0aW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkgaGVyY29uICIm
I3gyMkI5OyI+Ci08IUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ij4KLTwhRU5USVRZIGludGVyY2Fs
ICImI3gyMkJBOyI+Ci08IUVOVElUWSB2ZWViYXIgIiYjeDIyQkI7Ij4KLTwhRU5USVRZIGJhcnZl
ZSAiJiN4MjJCRDsiPgotPCFFTlRJVFkgYW5ncnR2YiAiJiN4MjJCRTsiPgotPCFFTlRJVFkgbHJ0
cmkgIiYjeDIyQkY7Ij4KLTwhRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgV2Vk
Z2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIGJpZ3dlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSB4
dmVlICImI3gyMkMxOyI+Ci08IUVOVElUWSBWZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZIGJpZ3Zl
ZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgeGNhcCAiJiN4MjJDMjsiPgotPCFFTlRJVFkgSW50ZXJz
ZWN0aW9uICImI3gyMkMyOyI+Ci08IUVOVElUWSBiaWdjYXAgIiYjeDIyQzI7Ij4KLTwhRU5USVRZ
IHhjdXAgIiYjeDIyQzM7Ij4KLTwhRU5USVRZIFVuaW9uICImI3gyMkMzOyI+Ci08IUVOVElUWSBi
aWdjdXAgIiYjeDIyQzM7Ij4KLTwhRU5USVRZIGRpYW0gIiYjeDIyQzQ7Ij4KLTwhRU5USVRZIGRp
YW1vbmQgIiYjeDIyQzQ7Ij4KLTwhRU5USVRZIERpYW1vbmQgIiYjeDIyQzQ7Ij4KLTwhRU5USVRZ
IHNkb3QgIiYjeDIyQzU7Ij4KLTwhRU5USVRZIHNzdGFyZiAiJiN4MjJDNjsiPgotPCFFTlRJVFkg
U3RhciAiJiN4MjJDNjsiPgotPCFFTlRJVFkgZGl2b254ICImI3gyMkM3OyI+Ci08IUVOVElUWSBk
aXZpZGVvbnRpbWVzICImI3gyMkM3OyI+Ci08IUVOVElUWSBib3d0aWUgIiYjeDIyQzg7Ij4KLTwh
RU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiPgotPCFFTlRJVFkgcnRpbWVzICImI3gyMkNBOyI+Ci08
IUVOVElUWSBsdGhyZWUgIiYjeDIyQ0I7Ij4KLTwhRU5USVRZIGxlZnR0aHJlZXRpbWVzICImI3gy
MkNCOyI+Ci08IUVOVElUWSBydGhyZWUgIiYjeDIyQ0M7Ij4KLTwhRU5USVRZIHJpZ2h0dGhyZWV0
aW1lcyAiJiN4MjJDQzsiPgotPCFFTlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ij4KLTwhRU5USVRZIGJh
Y2tzaW1lcSAiJiN4MjJDRDsiPgotPCFFTlRJVFkgY3V2ZWUgIiYjeDIyQ0U7Ij4KLTwhRU5USVRZ
IGN1cmx5dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXdlZCAiJiN4MjJDRjsiPgotPCFFTlRJ
VFkgY3VybHl3ZWRnZSAiJiN4MjJDRjsiPgotPCFFTlRJVFkgU3ViICImI3gyMkQwOyI+Ci08IUVO
VElUWSBTdWJzZXQgIiYjeDIyRDA7Ij4KLTwhRU5USVRZIFN1cCAiJiN4MjJEMTsiPgotPCFFTlRJ
VFkgU3Vwc2V0ICImI3gyMkQxOyI+Ci08IUVOVElUWSBDYXAgIiYjeDIyRDI7Ij4KLTwhRU5USVRZ
IEN1cCAiJiN4MjJEMzsiPgotPCFFTlRJVFkgZm9yayAiJiN4MjJENDsiPgotPCFFTlRJVFkgcGl0
Y2hmb3JrICImI3gyMkQ0OyI+Ci08IUVOVElUWSBlcGFyICImI3gyMkQ1OyI+Ci08IUVOVElUWSBs
dGRvdCAiJiN4MjJENjsiPgotPCFFTlRJVFkgbGVzc2RvdCAiJiN4MjJENjsiPgotPCFFTlRJVFkg
Z3Rkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiPgotPCFFTlRJVFkg
TGwgIiYjeDIyRDg7Ij4KLTwhRU5USVRZIG5MbCAiJiN4MjJEODsmI3gzMzg7Ij4KLTwhRU5USVRZ
IEdnICImI3gyMkQ5OyI+Ci08IUVOVElUWSBnZ2cgIiYjeDIyRDk7Ij4KLTwhRU5USVRZIG5HZyAi
JiN4MjJEOTsmI3gzMzg7Ij4KLTwhRU5USVRZIGxlZyAiJiN4MjJEQTsiPgotPCFFTlRJVFkgTGVz
c0VxdWFsR3JlYXRlciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzc2VxZ3RyICImI3gyMkRBOyI+
Ci08IUVOVElUWSBsZXNnICImI3gyMkRBOyYjeEZFMDA7Ij4KLTwhRU5USVRZIGdlbCAiJiN4MjJE
QjsiPgotPCFFTlRJVFkgZ3RyZXFsZXNzICImI3gyMkRCOyI+Ci08IUVOVElUWSBHcmVhdGVyRXF1
YWxMZXNzICImI3gyMkRCOyI+Ci08IUVOVElUWSBnZXNsICImI3gyMkRCOyYjeEZFMDA7Ij4KLTwh
RU5USVRZIGN1ZXByICImI3gyMkRFOyI+Ci08IUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsi
PgotPCFFTlRJVFkgY3Vlc2MgIiYjeDIyREY7Ij4KLTwhRU5USVRZIGN1cmx5ZXFzdWNjICImI3gy
MkRGOyI+Ci08IUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ij4KLTwhRU5USVRZIE5vdFByZWNlZGVz
U2xhbnRFcXVhbCAiJiN4MjJFMDsiPgotPCFFTlRJVFkgbnNjY3VlICImI3gyMkUxOyI+Ci08IUVO
VElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7Ij4KLTwhRU5USVRZIG5zcXN1YmUg
IiYjeDIyRTI7Ij4KLTwhRU5USVRZIE5vdFNxdWFyZVN1YnNldEVxdWFsICImI3gyMkUyOyI+Ci08
IUVOVElUWSBuc3FzdXBlICImI3gyMkUzOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdXBlcnNldEVx
dWFsICImI3gyMkUzOyI+Ci08IUVOVElUWSBsbnNpbSAiJiN4MjJFNjsiPgotPCFFTlRJVFkgZ25z
aW0gIiYjeDIyRTc7Ij4KLTwhRU5USVRZIHBybnNpbSAiJiN4MjJFODsiPgotPCFFTlRJVFkgcHJl
Y25zaW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiPgotPCFFTlRJVFkg
c3VjY25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIG5sdHJpICImI3gyMkVBOyI+Ci08IUVOVElU
WSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJpYW5nbGUgIiYj
eDIyRUE7Ij4KLTwhRU5USVRZIG5ydHJpICImI3gyMkVCOyI+Ci08IUVOVElUWSBudHJpYW5nbGVy
aWdodCAiJiN4MjJFQjsiPgotPCFFTlRJVFkgTm90UmlnaHRUcmlhbmdsZSAiJiN4MjJFQjsiPgot
PCFFTlRJVFkgbmx0cmllICImI3gyMkVDOyI+Ci08IUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYj
eDIyRUM7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZUVxdWFsICImI3gyMkVDOyI+Ci08IUVO
VElUWSBucnRyaWUgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIy
RUQ7Ij4KLTwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVFcXVhbCAiJiN4MjJFRDsiPgotPCFFTlRJ
VFkgdmVsbGlwICImI3gyMkVFOyI+Ci08IUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiPgotPCFFTlRJ
VFkgdXRkb3QgIiYjeDIyRjA7Ij4KLTwhRU5USVRZIGR0ZG90ICImI3gyMkYxOyI+Ci08IUVOVElU
WSBkaXNpbiAiJiN4MjJGMjsiPgotPCFFTlRJVFkgaXNpbnN2ICImI3gyMkYzOyI+Ci08IUVOVElU
WSBpc2lucyAiJiN4MjJGNDsiPgotPCFFTlRJVFkgaXNpbmRvdCAiJiN4MjJGNTsiPgotPCFFTlRJ
VFkgbm90aW5kb3QgIiYjeDIyRjU7JiN4MzM4OyI+Ci08IUVOVElUWSBub3RpbnZjICImI3gyMkY2
OyI+Ci08IUVOVElUWSBub3RpbnZiICImI3gyMkY3OyI+Ci08IUVOVElUWSBpc2luRSAiJiN4MjJG
OTsiPgotPCFFTlRJVFkgbm90aW5FICImI3gyMkY5OyYjeDMzODsiPgotPCFFTlRJVFkgbmlzZCAi
JiN4MjJGQTsiPgotPCFFTlRJVFkgeG5pcyAiJiN4MjJGQjsiPgotPCFFTlRJVFkgbmlzICImI3gy
MkZDOyI+Ci08IUVOVElUWSBub3RuaXZjICImI3gyMkZEOyI+Ci08IUVOVElUWSBub3RuaXZiICIm
I3gyMkZFOyI+Ci08IUVOVElUWSBiYXJ3ZWQgIiYjeDIzMDU7Ij4KLTwhRU5USVRZIGJhcndlZGdl
ICImI3gyMzA1OyI+Ci08IUVOVElUWSBCYXJ3ZWQgIiYjeDIzMDY7Ij4KLTwhRU5USVRZIGRvdWJs
ZWJhcndlZGdlICImI3gyMzA2OyI+Ci08IUVOVElUWSBsY2VpbCAiJiN4MjMwODsiPgotPCFFTlRJ
VFkgTGVmdENlaWxpbmcgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIHJjZWlsICImI3gyMzA5OyI+Ci08
IUVOVElUWSBSaWdodENlaWxpbmcgIiYjeDIzMDk7Ij4KLTwhRU5USVRZIGxmbG9vciAiJiN4MjMw
QTsiPgotPCFFTlRJVFkgTGVmdEZsb29yICImI3gyMzBBOyI+Ci08IUVOVElUWSByZmxvb3IgIiYj
eDIzMEI7Ij4KLTwhRU5USVRZIFJpZ2h0Rmxvb3IgIiYjeDIzMEI7Ij4KLTwhRU5USVRZIGRyY3Jv
cCAiJiN4MjMwQzsiPgotPCFFTlRJVFkgZGxjcm9wICImI3gyMzBEOyI+Ci08IUVOVElUWSB1cmNy
b3AgIiYjeDIzMEU7Ij4KLTwhRU5USVRZIHVsY3JvcCAiJiN4MjMwRjsiPgotPCFFTlRJVFkgYm5v
dCAiJiN4MjMxMDsiPgotPCFFTlRJVFkgcHJvZmxpbmUgIiYjeDIzMTI7Ij4KLTwhRU5USVRZIHBy
b2ZzdXJmICImI3gyMzEzOyI+Ci08IUVOVElUWSB0ZWxyZWMgIiYjeDIzMTU7Ij4KLTwhRU5USVRZ
IHRhcmdldCAiJiN4MjMxNjsiPgotPCFFTlRJVFkgdWxjb3JuICImI3gyMzFDOyI+Ci08IUVOVElU
WSB1bGNvcm5lciAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdXJjb3JuICImI3gyMzFEOyI+Ci08IUVO
VElUWSB1cmNvcm5lciAiJiN4MjMxRDsiPgotPCFFTlRJVFkgZGxjb3JuICImI3gyMzFFOyI+Ci08
IUVOVElUWSBsbGNvcm5lciAiJiN4MjMxRTsiPgotPCFFTlRJVFkgZHJjb3JuICImI3gyMzFGOyI+
Ci08IUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiPgotPCFFTlRJVFkgZnJvd24gIiYjeDIzMjI7
Ij4KLTwhRU5USVRZIHNmcm93biAiJiN4MjMyMjsiPgotPCFFTlRJVFkgc21pbGUgIiYjeDIzMjM7
Ij4KLTwhRU5USVRZIHNzbWlsZSAiJiN4MjMyMzsiPgotPCFFTlRJVFkgY3lsY3R5ICImI3gyMzJE
OyI+Ci08IUVOVElUWSBwcm9mYWxhciAiJiN4MjMyRTsiPgotPCFFTlRJVFkgdG9wYm90ICImI3gy
MzM2OyI+Ci08IUVOVElUWSBvdmJhciAiJiN4MjMzRDsiPgotPCFFTlRJVFkgc29sYmFyICImI3gy
MzNGOyI+Ci08IUVOVElUWSBhbmd6YXJyICImI3gyMzdDOyI+Ci08IUVOVElUWSBsbW91c3QgIiYj
eDIzQjA7Ij4KLTwhRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ij4KLTwhRU5USVRZIHJtb3Vz
dCAiJiN4MjNCMTsiPgotPCFFTlRJVFkgcm1vdXN0YWNoZSAiJiN4MjNCMTsiPgotPCFFTlRJVFkg
dGJyayAiJiN4MjNCNDsiPgotPCFFTlRJVFkgT3ZlckJyYWNrZXQgIiYjeDIzQjQ7Ij4KLTwhRU5U
SVRZIGJicmsgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiPgot
PCFFTlRJVFkgYmJya3RicmsgIiYjeDIzQjY7Ij4KLTwhRU5USVRZIE92ZXJQYXJlbnRoZXNpcyAi
JiN4MjNEQzsiPgotPCFFTlRJVFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiPgotPCFFTlRJ
VFkgT3ZlckJyYWNlICImI3gyM0RFOyI+Ci08IUVOVElUWSBVbmRlckJyYWNlICImI3gyM0RGOyI+
Ci08IUVOVElUWSB0cnBleml1bSAiJiN4MjNFMjsiPgotPCFFTlRJVFkgZWxpbnRlcnMgIiYjeDIz
RTc7Ij4KLTwhRU5USVRZIGJsYW5rICImI3gyNDIzOyI+Ci08IUVOVElUWSBvUyAiJiN4MjRDODsi
PgotPCFFTlRJVFkgY2lyY2xlZFMgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGJveGggIiYjeDI1MDA7
Ij4KLTwhRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyI+Ci08IUVOVElUWSBib3h2ICIm
I3gyNTAyOyI+Ci08IUVOVElUWSBib3hkciAiJiN4MjUwQzsiPgotPCFFTlRJVFkgYm94ZGwgIiYj
eDI1MTA7Ij4KLTwhRU5USVRZIGJveHVyICImI3gyNTE0OyI+Ci08IUVOVElUWSBib3h1bCAiJiN4
MjUxODsiPgotPCFFTlRJVFkgYm94dnIgIiYjeDI1MUM7Ij4KLTwhRU5USVRZIGJveHZsICImI3gy
NTI0OyI+Ci08IUVOVElUWSBib3hoZCAiJiN4MjUyQzsiPgotPCFFTlRJVFkgYm94aHUgIiYjeDI1
MzQ7Ij4KLTwhRU5USVRZIGJveHZoICImI3gyNTNDOyI+Ci08IUVOVElUWSBib3hIICImI3gyNTUw
OyI+Ci08IUVOVElUWSBib3hWICImI3gyNTUxOyI+Ci08IUVOVElUWSBib3hkUiAiJiN4MjU1Mjsi
PgotPCFFTlRJVFkgYm94RHIgIiYjeDI1NTM7Ij4KLTwhRU5USVRZIGJveERSICImI3gyNTU0OyI+
Ci08IUVOVElUWSBib3hkTCAiJiN4MjU1NTsiPgotPCFFTlRJVFkgYm94RGwgIiYjeDI1NTY7Ij4K
LTwhRU5USVRZIGJveERMICImI3gyNTU3OyI+Ci08IUVOVElUWSBib3h1UiAiJiN4MjU1ODsiPgot
PCFFTlRJVFkgYm94VXIgIiYjeDI1NTk7Ij4KLTwhRU5USVRZIGJveFVSICImI3gyNTVBOyI+Ci08
IUVOVElUWSBib3h1TCAiJiN4MjU1QjsiPgotPCFFTlRJVFkgYm94VWwgIiYjeDI1NUM7Ij4KLTwh
RU5USVRZIGJveFVMICImI3gyNTVEOyI+Ci08IUVOVElUWSBib3h2UiAiJiN4MjU1RTsiPgotPCFF
TlRJVFkgYm94VnIgIiYjeDI1NUY7Ij4KLTwhRU5USVRZIGJveFZSICImI3gyNTYwOyI+Ci08IUVO
VElUWSBib3h2TCAiJiN4MjU2MTsiPgotPCFFTlRJVFkgYm94VmwgIiYjeDI1NjI7Ij4KLTwhRU5U
SVRZIGJveFZMICImI3gyNTYzOyI+Ci08IUVOVElUWSBib3hIZCAiJiN4MjU2NDsiPgotPCFFTlRJ
VFkgYm94aEQgIiYjeDI1NjU7Ij4KLTwhRU5USVRZIGJveEhEICImI3gyNTY2OyI+Ci08IUVOVElU
WSBib3hIdSAiJiN4MjU2NzsiPgotPCFFTlRJVFkgYm94aFUgIiYjeDI1Njg7Ij4KLTwhRU5USVRZ
IGJveEhVICImI3gyNTY5OyI+Ci08IUVOVElUWSBib3h2SCAiJiN4MjU2QTsiPgotPCFFTlRJVFkg
Ym94VmggIiYjeDI1NkI7Ij4KLTwhRU5USVRZIGJveFZIICImI3gyNTZDOyI+Ci08IUVOVElUWSB1
aGJsayAiJiN4MjU4MDsiPgotPCFFTlRJVFkgbGhibGsgIiYjeDI1ODQ7Ij4KLTwhRU5USVRZIGJs
b2NrICImI3gyNTg4OyI+Ci08IUVOVElUWSBibGsxNCAiJiN4MjU5MTsiPgotPCFFTlRJVFkgYmxr
MTIgIiYjeDI1OTI7Ij4KLTwhRU5USVRZIGJsazM0ICImI3gyNTkzOyI+Ci08IUVOVElUWSBzcXUg
IiYjeDI1QTE7Ij4KLTwhRU5USVRZIHNxdWFyZSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgU3F1YXJl
ICImI3gyNUExOyI+Ci08IUVOVElUWSBzcXVmICImI3gyNUFBOyI+Ci08IUVOVElUWSBzcXVhcmYg
IiYjeDI1QUE7Ij4KLTwhRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyI+Ci08IUVOVElUWSBG
aWxsZWRWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUE7Ij4KLTwhRU5USVRZIEVtcHR5VmVyeVNtYWxs
U3F1YXJlICImI3gyNUFCOyI+Ci08IUVOVElUWSByZWN0ICImI3gyNUFEOyI+Ci08IUVOVElUWSBt
YXJrZXIgIiYjeDI1QUU7Ij4KLTwhRU5USVRZIGZsdG5zICImI3gyNUIxOyI+Ci08IUVOVElUWSB4
dXRyaSAiJiN4MjVCMzsiPgotPCFFTlRJVFkgYmlndHJpYW5nbGV1cCAiJiN4MjVCMzsiPgotPCFF
TlRJVFkgdXRyaWYgIiYjeDI1QjQ7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7
Ij4KLTwhRU5USVRZIHV0cmkgIiYjeDI1QjU7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlICImI3gyNUI1
OyI+Ci08IUVOVElUWSBydHJpZiAiJiN4MjVCODsiPgotPCFFTlRJVFkgYmxhY2t0cmlhbmdsZXJp
Z2h0ICImI3gyNUI4OyI+Ci08IUVOVElUWSBydHJpICImI3gyNUI5OyI+Ci08IUVOVElUWSB0cmlh
bmdsZXJpZ2h0ICImI3gyNUI5OyI+Ci08IUVOVElUWSB4ZHRyaSAiJiN4MjVCRDsiPgotPCFFTlRJ
VFkgYmlndHJpYW5nbGVkb3duICImI3gyNUJEOyI+Ci08IUVOVElUWSBkdHJpZiAiJiN4MjVCRTsi
PgotPCFFTlRJVFkgYmxhY2t0cmlhbmdsZWRvd24gIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGR0cmkg
IiYjeDI1QkY7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlZG93biAiJiN4MjVCRjsiPgotPCFFTlRJVFkg
bHRyaWYgIiYjeDI1QzI7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVsZWZ0ICImI3gyNUMyOyI+
Ci08IUVOVElUWSBsdHJpICImI3gyNUMzOyI+Ci08IUVOVElUWSB0cmlhbmdsZWxlZnQgIiYjeDI1
QzM7Ij4KLTwhRU5USVRZIGxveiAiJiN4MjVDQTsiPgotPCFFTlRJVFkgbG96ZW5nZSAiJiN4MjVD
QTsiPgotPCFFTlRJVFkgY2lyICImI3gyNUNCOyI+Ci08IUVOVElUWSB0cmlkb3QgIiYjeDI1RUM7
Ij4KLTwhRU5USVRZIHhjaXJjICImI3gyNUVGOyI+Ci08IUVOVElUWSBiaWdjaXJjICImI3gyNUVG
OyI+Ci08IUVOVElUWSB1bHRyaSAiJiN4MjVGODsiPgotPCFFTlRJVFkgdXJ0cmkgIiYjeDI1Rjk7
Ij4KLTwhRU5USVRZIGxsdHJpICImI3gyNUZBOyI+Ci08IUVOVElUWSBFbXB0eVNtYWxsU3F1YXJl
ICImI3gyNUZCOyI+Ci08IUVOVElUWSBGaWxsZWRTbWFsbFNxdWFyZSAiJiN4MjVGQzsiPgotPCFF
TlRJVFkgc3RhcmYgIiYjeDI2MDU7Ij4KLTwhRU5USVRZIGJpZ3N0YXIgIiYjeDI2MDU7Ij4KLTwh
RU5USVRZIHN0YXIgIiYjeDI2MDY7Ij4KLTwhRU5USVRZIHBob25lICImI3gyNjBFOyI+Ci08IUVO
VElUWSBmZW1hbGUgIiYjeDI2NDA7Ij4KLTwhRU5USVRZIG1hbGUgIiYjeDI2NDI7Ij4KLTwhRU5U
SVRZIHNwYWRlcyAiJiN4MjY2MDsiPgotPCFFTlRJVFkgc3BhZGVzdWl0ICImI3gyNjYwOyI+Ci08
IUVOVElUWSBjbHVicyAiJiN4MjY2MzsiPgotPCFFTlRJVFkgY2x1YnN1aXQgIiYjeDI2NjM7Ij4K
LTwhRU5USVRZIGhlYXJ0cyAiJiN4MjY2NTsiPgotPCFFTlRJVFkgaGVhcnRzdWl0ICImI3gyNjY1
OyI+Ci08IUVOVElUWSBkaWFtcyAiJiN4MjY2NjsiPgotPCFFTlRJVFkgZGlhbW9uZHN1aXQgIiYj
eDI2NjY7Ij4KLTwhRU5USVRZIHN1bmcgIiYjeDI2NkE7Ij4KLTwhRU5USVRZIGZsYXQgIiYjeDI2
NkQ7Ij4KLTwhRU5USVRZIG5hdHVyICImI3gyNjZFOyI+Ci08IUVOVElUWSBuYXR1cmFsICImI3gy
NjZFOyI+Ci08IUVOVElUWSBzaGFycCAiJiN4MjY2RjsiPgotPCFFTlRJVFkgY2hlY2sgIiYjeDI3
MTM7Ij4KLTwhRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiPgotPCFFTlRJVFkgY3Jvc3MgIiYj
eDI3MTc7Ij4KLTwhRU5USVRZIG1hbHQgIiYjeDI3MjA7Ij4KLTwhRU5USVRZIG1hbHRlc2UgIiYj
eDI3MjA7Ij4KLTwhRU5USVRZIHNleHQgIiYjeDI3MzY7Ij4KLTwhRU5USVRZIFZlcnRpY2FsU2Vw
YXJhdG9yICImI3gyNzU4OyI+Ci08IUVOVElUWSBsYmJyayAiJiN4Mjc3MjsiPgotPCFFTlRJVFkg
cmJicmsgIiYjeDI3NzM7Ij4KLTwhRU5USVRZIGJzb2xoc3ViICImI3gyN0M4OyI+Ci08IUVOVElU
WSBzdXBoc29sICImI3gyN0M5OyI+Ci08IUVOVElUWSBsb2JyayAiJiN4MjdFNjsiPgotPCFFTlRJ
VFkgTGVmdERvdWJsZUJyYWNrZXQgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIHJvYnJrICImI3gyN0U3
OyI+Ci08IUVOVElUWSBSaWdodERvdWJsZUJyYWNrZXQgIiYjeDI3RTc7Ij4KLTwhRU5USVRZIGxh
bmcgIiYjeDI3RTg7Ij4KLTwhRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ij4KLTwh
RU5USVRZIGxhbmdsZSAiJiN4MjdFODsiPgotPCFFTlRJVFkgcmFuZyAiJiN4MjdFOTsiPgotPCFF
TlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIHJhbmdsZSAiJiN4
MjdFOTsiPgotPCFFTlRJVFkgTGFuZyAiJiN4MjdFQTsiPgotPCFFTlRJVFkgUmFuZyAiJiN4MjdF
QjsiPgotPCFFTlRJVFkgbG9hbmcgIiYjeDI3RUM7Ij4KLTwhRU5USVRZIHJvYW5nICImI3gyN0VE
OyI+Ci08IUVOVElUWSB4bGFyciAiJiN4MjdGNTsiPgotPCFFTlRJVFkgbG9uZ2xlZnRhcnJvdyAi
JiN4MjdGNTsiPgotPCFFTlRJVFkgTG9uZ0xlZnRBcnJvdyAiJiN4MjdGNTsiPgotPCFFTlRJVFkg
eHJhcnIgIiYjeDI3RjY7Ij4KLTwhRU5USVRZIGxvbmdyaWdodGFycm93ICImI3gyN0Y2OyI+Ci08
IUVOVElUWSBMb25nUmlnaHRBcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgeGhhcnIgIiYjeDI3
Rjc7Ij4KLTwhRU5USVRZIGxvbmdsZWZ0cmlnaHRhcnJvdyAiJiN4MjdGNzsiPgotPCFFTlRJVFkg
TG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0Y3OyI+Ci08IUVOVElUWSB4bEFyciAiJiN4MjdGODsi
PgotPCFFTlRJVFkgTG9uZ2xlZnRhcnJvdyAiJiN4MjdGODsiPgotPCFFTlRJVFkgRG91YmxlTG9u
Z0xlZnRBcnJvdyAiJiN4MjdGODsiPgotPCFFTlRJVFkgeHJBcnIgIiYjeDI3Rjk7Ij4KLTwhRU5U
SVRZIExvbmdyaWdodGFycm93ICImI3gyN0Y5OyI+Ci08IUVOVElUWSBEb3VibGVMb25nUmlnaHRB
cnJvdyAiJiN4MjdGOTsiPgotPCFFTlRJVFkgeGhBcnIgIiYjeDI3RkE7Ij4KLTwhRU5USVRZIExv
bmdsZWZ0cmlnaHRhcnJvdyAiJiN4MjdGQTsiPgotPCFFTlRJVFkgRG91YmxlTG9uZ0xlZnRSaWdo
dEFycm93ICImI3gyN0ZBOyI+Ci08IUVOVElUWSB4bWFwICImI3gyN0ZDOyI+Ci08IUVOVElUWSBs
b25nbWFwc3RvICImI3gyN0ZDOyI+Ci08IUVOVElUWSBkemlncmFyciAiJiN4MjdGRjsiPgotPCFF
TlRJVFkgbnZsQXJyICImI3gyOTAyOyI+Ci08IUVOVElUWSBudnJBcnIgIiYjeDI5MDM7Ij4KLTwh
RU5USVRZIG52SGFyciAiJiN4MjkwNDsiPgotPCFFTlRJVFkgTWFwICImI3gyOTA1OyI+Ci08IUVO
VElUWSBsYmFyciAiJiN4MjkwQzsiPgotPCFFTlRJVFkgcmJhcnIgIiYjeDI5MEQ7Ij4KLTwhRU5U
SVRZIGJrYXJvdyAiJiN4MjkwRDsiPgotPCFFTlRJVFkgbEJhcnIgIiYjeDI5MEU7Ij4KLTwhRU5U
SVRZIHJCYXJyICImI3gyOTBGOyI+Ci08IUVOVElUWSBkYmthcm93ICImI3gyOTBGOyI+Ci08IUVO
VElUWSBSQmFyciAiJiN4MjkxMDsiPgotPCFFTlRJVFkgZHJia2Fyb3cgIiYjeDI5MTA7Ij4KLTwh
RU5USVRZIEREb3RyYWhkICImI3gyOTExOyI+Ci08IUVOVElUWSBVcEFycm93QmFyICImI3gyOTEy
OyI+Ci08IUVOVElUWSBEb3duQXJyb3dCYXIgIiYjeDI5MTM7Ij4KLTwhRU5USVRZIFJhcnJ0bCAi
JiN4MjkxNjsiPgotPCFFTlRJVFkgbGF0YWlsICImI3gyOTE5OyI+Ci08IUVOVElUWSByYXRhaWwg
IiYjeDI5MUE7Ij4KLTwhRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsiPgotPCFFTlRJVFkgckF0YWls
ICImI3gyOTFDOyI+Ci08IUVOVElUWSBsYXJyZnMgIiYjeDI5MUQ7Ij4KLTwhRU5USVRZIHJhcnJm
cyAiJiN4MjkxRTsiPgotPCFFTlRJVFkgbGFycmJmcyAiJiN4MjkxRjsiPgotPCFFTlRJVFkgcmFy
cmJmcyAiJiN4MjkyMDsiPgotPCFFTlRJVFkgbndhcmhrICImI3gyOTIzOyI+Ci08IUVOVElUWSBu
ZWFyaGsgIiYjeDI5MjQ7Ij4KLTwhRU5USVRZIHNlYXJoayAiJiN4MjkyNTsiPgotPCFFTlRJVFkg
aGtzZWFyb3cgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIHN3YXJoayAiJiN4MjkyNjsiPgotPCFFTlRJ
VFkgaGtzd2Fyb3cgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIG53bmVhciAiJiN4MjkyNzsiPgotPCFF
TlRJVFkgbmVzZWFyICImI3gyOTI4OyI+Ci08IUVOVElUWSB0b2VhICImI3gyOTI4OyI+Ci08IUVO
VElUWSBzZXN3YXIgIiYjeDI5Mjk7Ij4KLTwhRU5USVRZIHRvc2EgIiYjeDI5Mjk7Ij4KLTwhRU5U
SVRZIHN3bndhciAiJiN4MjkyQTsiPgotPCFFTlRJVFkgcmFycmMgIiYjeDI5MzM7Ij4KLTwhRU5U
SVRZIG5yYXJyYyAiJiN4MjkzMzsmI3gzMzg7Ij4KLTwhRU5USVRZIGN1ZGFycnIgIiYjeDI5MzU7
Ij4KLTwhRU5USVRZIGxkY2EgIiYjeDI5MzY7Ij4KLTwhRU5USVRZIHJkY2EgIiYjeDI5Mzc7Ij4K
LTwhRU5USVRZIGN1ZGFycmwgIiYjeDI5Mzg7Ij4KLTwhRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsi
PgotPCFFTlRJVFkgY3VyYXJybSAiJiN4MjkzQzsiPgotPCFFTlRJVFkgY3VsYXJycCAiJiN4Mjkz
RDsiPgotPCFFTlRJVFkgcmFycnBsICImI3gyOTQ1OyI+Ci08IUVOVElUWSBoYXJyY2lyICImI3gy
OTQ4OyI+Ci08IUVOVElUWSBVYXJyb2NpciAiJiN4Mjk0OTsiPgotPCFFTlRJVFkgbHVyZHNoYXIg
IiYjeDI5NEE7Ij4KLTwhRU5USVRZIGxkcnVzaGFyICImI3gyOTRCOyI+Ci08IUVOVElUWSBMZWZ0
UmlnaHRWZWN0b3IgIiYjeDI5NEU7Ij4KLTwhRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gy
OTRGOyI+Ci08IUVOVElUWSBEb3duTGVmdFJpZ2h0VmVjdG9yICImI3gyOTUwOyI+Ci08IUVOVElU
WSBMZWZ0VXBEb3duVmVjdG9yICImI3gyOTUxOyI+Ci08IUVOVElUWSBMZWZ0VmVjdG9yQmFyICIm
I3gyOTUyOyI+Ci08IUVOVElUWSBSaWdodFZlY3RvckJhciAiJiN4Mjk1MzsiPgotPCFFTlRJVFkg
UmlnaHRVcFZlY3RvckJhciAiJiN4Mjk1NDsiPgotPCFFTlRJVFkgUmlnaHREb3duVmVjdG9yQmFy
ICImI3gyOTU1OyI+Ci08IUVOVElUWSBEb3duTGVmdFZlY3RvckJhciAiJiN4Mjk1NjsiPgotPCFF
TlRJVFkgRG93blJpZ2h0VmVjdG9yQmFyICImI3gyOTU3OyI+Ci08IUVOVElUWSBMZWZ0VXBWZWN0
b3JCYXIgIiYjeDI5NTg7Ij4KLTwhRU5USVRZIExlZnREb3duVmVjdG9yQmFyICImI3gyOTU5OyI+
Ci08IUVOVElUWSBMZWZ0VGVlVmVjdG9yICImI3gyOTVBOyI+Ci08IUVOVElUWSBSaWdodFRlZVZl
Y3RvciAiJiN4Mjk1QjsiPgotPCFFTlRJVFkgUmlnaHRVcFRlZVZlY3RvciAiJiN4Mjk1QzsiPgot
PCFFTlRJVFkgUmlnaHREb3duVGVlVmVjdG9yICImI3gyOTVEOyI+Ci08IUVOVElUWSBEb3duTGVm
dFRlZVZlY3RvciAiJiN4Mjk1RTsiPgotPCFFTlRJVFkgRG93blJpZ2h0VGVlVmVjdG9yICImI3gy
OTVGOyI+Ci08IUVOVElUWSBMZWZ0VXBUZWVWZWN0b3IgIiYjeDI5NjA7Ij4KLTwhRU5USVRZIExl
ZnREb3duVGVlVmVjdG9yICImI3gyOTYxOyI+Ci08IUVOVElUWSBsSGFyICImI3gyOTYyOyI+Ci08
IUVOVElUWSB1SGFyICImI3gyOTYzOyI+Ci08IUVOVElUWSBySGFyICImI3gyOTY0OyI+Ci08IUVO
VElUWSBkSGFyICImI3gyOTY1OyI+Ci08IUVOVElUWSBsdXJ1aGFyICImI3gyOTY2OyI+Ci08IUVO
VElUWSBsZHJkaGFyICImI3gyOTY3OyI+Ci08IUVOVElUWSBydWx1aGFyICImI3gyOTY4OyI+Ci08
IUVOVElUWSByZGxkaGFyICImI3gyOTY5OyI+Ci08IUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ij4K
LTwhRU5USVRZIGxsaGFyZCAiJiN4Mjk2QjsiPgotPCFFTlRJVFkgcmhhcnVsICImI3gyOTZDOyI+
Ci08IUVOVElUWSBscmhhcmQgIiYjeDI5NkQ7Ij4KLTwhRU5USVRZIHVkaGFyICImI3gyOTZFOyI+
Ci08IUVOVElUWSBVcEVxdWlsaWJyaXVtICImI3gyOTZFOyI+Ci08IUVOVElUWSBkdWhhciAiJiN4
Mjk2RjsiPgotPCFFTlRJVFkgUmV2ZXJzZVVwRXF1aWxpYnJpdW0gIiYjeDI5NkY7Ij4KLTwhRU5U
SVRZIFJvdW5kSW1wbGllcyAiJiN4Mjk3MDsiPgotPCFFTlRJVFkgZXJhcnIgIiYjeDI5NzE7Ij4K
LTwhRU5USVRZIHNpbXJhcnIgIiYjeDI5NzI7Ij4KLTwhRU5USVRZIGxhcnJzaW0gIiYjeDI5NzM7
Ij4KLTwhRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ij4KLTwhRU5USVRZIHJhcnJhcCAiJiN4Mjk3
NTsiPgotPCFFTlRJVFkgbHRsYXJyICImI3gyOTc2OyI+Ci08IUVOVElUWSBndHJhcnIgIiYjeDI5
Nzg7Ij4KLTwhRU5USVRZIHN1YnJhcnIgIiYjeDI5Nzk7Ij4KLTwhRU5USVRZIHN1cGxhcnIgIiYj
eDI5N0I7Ij4KLTwhRU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiPgotPCFFTlRJVFkgcmZpc2h0ICIm
I3gyOTdEOyI+Ci08IUVOVElUWSB1ZmlzaHQgIiYjeDI5N0U7Ij4KLTwhRU5USVRZIGRmaXNodCAi
JiN4Mjk3RjsiPgotPCFFTlRJVFkgbG9wYXIgIiYjeDI5ODU7Ij4KLTwhRU5USVRZIHJvcGFyICIm
I3gyOTg2OyI+Ci08IUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiPgotPCFFTlRJVFkgcmJya2UgIiYj
eDI5OEM7Ij4KLTwhRU5USVRZIGxicmtzbHUgIiYjeDI5OEQ7Ij4KLTwhRU5USVRZIHJicmtzbGQg
IiYjeDI5OEU7Ij4KLTwhRU5USVRZIGxicmtzbGQgIiYjeDI5OEY7Ij4KLTwhRU5USVRZIHJicmtz
bHUgIiYjeDI5OTA7Ij4KLTwhRU5USVRZIGxhbmdkICImI3gyOTkxOyI+Ci08IUVOVElUWSByYW5n
ZCAiJiN4Mjk5MjsiPgotPCFFTlRJVFkgbHBhcmx0ICImI3gyOTkzOyI+Ci08IUVOVElUWSBycGFy
Z3QgIiYjeDI5OTQ7Ij4KLTwhRU5USVRZIGd0bFBhciAiJiN4Mjk5NTsiPgotPCFFTlRJVFkgbHRy
UGFyICImI3gyOTk2OyI+Ci08IUVOVElUWSB2emlnemFnICImI3gyOTlBOyI+Ci08IUVOVElUWSB2
YW5ncnQgIiYjeDI5OUM7Ij4KLTwhRU5USVRZIGFuZ3J0dmJkICImI3gyOTlEOyI+Ci08IUVOVElU
WSBhbmdlICImI3gyOUE0OyI+Ci08IUVOVElUWSByYW5nZSAiJiN4MjlBNTsiPgotPCFFTlRJVFkg
ZHdhbmdsZSAiJiN4MjlBNjsiPgotPCFFTlRJVFkgdXdhbmdsZSAiJiN4MjlBNzsiPgotPCFFTlRJ
VFkgYW5nbXNkYWEgIiYjeDI5QTg7Ij4KLTwhRU5USVRZIGFuZ21zZGFiICImI3gyOUE5OyI+Ci08
IUVOVElUWSBhbmdtc2RhYyAiJiN4MjlBQTsiPgotPCFFTlRJVFkgYW5nbXNkYWQgIiYjeDI5QUI7
Ij4KLTwhRU5USVRZIGFuZ21zZGFlICImI3gyOUFDOyI+Ci08IUVOVElUWSBhbmdtc2RhZiAiJiN4
MjlBRDsiPgotPCFFTlRJVFkgYW5nbXNkYWcgIiYjeDI5QUU7Ij4KLTwhRU5USVRZIGFuZ21zZGFo
ICImI3gyOUFGOyI+Ci08IUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyI+Ci08IUVOVElUWSBkZW1w
dHl2ICImI3gyOUIxOyI+Ci08IUVOVElUWSBjZW1wdHl2ICImI3gyOUIyOyI+Ci08IUVOVElUWSBy
YWVtcHR5diAiJiN4MjlCMzsiPgotPCFFTlRJVFkgbGFlbXB0eXYgIiYjeDI5QjQ7Ij4KLTwhRU5U
SVRZIG9oYmFyICImI3gyOUI1OyI+Ci08IUVOVElUWSBvbWlkICImI3gyOUI2OyI+Ci08IUVOVElU
WSBvcGFyICImI3gyOUI3OyI+Ci08IUVOVElUWSBvcGVycCAiJiN4MjlCOTsiPgotPCFFTlRJVFkg
b2xjcm9zcyAiJiN4MjlCQjsiPgotPCFFTlRJVFkgb2Rzb2xkICImI3gyOUJDOyI+Ci08IUVOVElU
WSBvbGNpciAiJiN4MjlCRTsiPgotPCFFTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ij4KLTwhRU5USVRZ
IG9sdCAiJiN4MjlDMDsiPgotPCFFTlRJVFkgb2d0ICImI3gyOUMxOyI+Ci08IUVOVElUWSBjaXJz
Y2lyICImI3gyOUMyOyI+Ci08IUVOVElUWSBjaXJFICImI3gyOUMzOyI+Ci08IUVOVElUWSBzb2xi
ICImI3gyOUM0OyI+Ci08IUVOVElUWSBic29sYiAiJiN4MjlDNTsiPgotPCFFTlRJVFkgYm94Ym94
ICImI3gyOUM5OyI+Ci08IUVOVElUWSB0cmlzYiAiJiN4MjlDRDsiPgotPCFFTlRJVFkgcnRyaWx0
cmkgIiYjeDI5Q0U7Ij4KLTwhRU5USVRZIExlZnRUcmlhbmdsZUJhciAiJiN4MjlDRjsiPgotPCFF
TlRJVFkgTm90TGVmdFRyaWFuZ2xlQmFyICImI3gyOUNGOyYjeDMzODsiPgotPCFFTlRJVFkgUmln
aHRUcmlhbmdsZUJhciAiJiN4MjlEMDsiPgotPCFFTlRJVFkgTm90UmlnaHRUcmlhbmdsZUJhciAi
JiN4MjlEMDsmI3gzMzg7Ij4KLTwhRU5USVRZIGlpbmZpbiAiJiN4MjlEQzsiPgotPCFFTlRJVFkg
aW5maW50aWUgIiYjeDI5REQ7Ij4KLTwhRU5USVRZIG52aW5maW4gIiYjeDI5REU7Ij4KLTwhRU5U
SVRZIGVwYXJzbCAiJiN4MjlFMzsiPgotPCFFTlRJVFkgc21lcGFyc2wgIiYjeDI5RTQ7Ij4KLTwh
RU5USVRZIGVxdnBhcnNsICImI3gyOUU1OyI+Ci08IUVOVElUWSBsb3pmICImI3gyOUVCOyI+Ci08
IUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ij4KLTwhRU5USVRZIFJ1bGVEZWxheWVkICIm
I3gyOUY0OyI+Ci08IUVOVElUWSBkc29sICImI3gyOUY2OyI+Ci08IUVOVElUWSB4b2RvdCAiJiN4
MkEwMDsiPgotPCFFTlRJVFkgYmlnb2RvdCAiJiN4MkEwMDsiPgotPCFFTlRJVFkgeG9wbHVzICIm
I3gyQTAxOyI+Ci08IUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJVFkgeG90aW1l
ICImI3gyQTAyOyI+Ci08IUVOVElUWSBiaWdvdGltZXMgIiYjeDJBMDI7Ij4KLTwhRU5USVRZIHh1
cGx1cyAiJiN4MkEwNDsiPgotPCFFTlRJVFkgYmlndXBsdXMgIiYjeDJBMDQ7Ij4KLTwhRU5USVRZ
IHhzcWN1cCAiJiN4MkEwNjsiPgotPCFFTlRJVFkgYmlnc3FjdXAgIiYjeDJBMDY7Ij4KLTwhRU5U
SVRZIHFpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGlpaWludCAiJiN4MkEwQzsiPgotPCFFTlRJ
VFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ij4KLTwhRU5USVRZIGNpcmZuaW50ICImI3gyQTEwOyI+Ci08
IUVOVElUWSBhd2ludCAiJiN4MkExMTsiPgotPCFFTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ij4K
LTwhRU5USVRZIHNjcG9saW50ICImI3gyQTEzOyI+Ci08IUVOVElUWSBucG9saW50ICImI3gyQTE0
OyI+Ci08IUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiPgotPCFFTlRJVFkgcXVhdGludCAiJiN4
MkExNjsiPgotPCFFTlRJVFkgaW50bGFyaGsgIiYjeDJBMTc7Ij4KLTwhRU5USVRZIHBsdXNjaXIg
IiYjeDJBMjI7Ij4KLTwhRU5USVRZIHBsdXNhY2lyICImI3gyQTIzOyI+Ci08IUVOVElUWSBzaW1w
bHVzICImI3gyQTI0OyI+Ci08IUVOVElUWSBwbHVzZHUgIiYjeDJBMjU7Ij4KLTwhRU5USVRZIHBs
dXNzaW0gIiYjeDJBMjY7Ij4KLTwhRU5USVRZIHBsdXN0d28gIiYjeDJBMjc7Ij4KLTwhRU5USVRZ
IG1jb21tYSAiJiN4MkEyOTsiPgotPCFFTlRJVFkgbWludXNkdSAiJiN4MkEyQTsiPgotPCFFTlRJ
VFkgbG9wbHVzICImI3gyQTJEOyI+Ci08IUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ij4KLTwhRU5U
SVRZIENyb3NzICImI3gyQTJGOyI+Ci08IUVOVElUWSB0aW1lc2QgIiYjeDJBMzA7Ij4KLTwhRU5U
SVRZIHRpbWVzYmFyICImI3gyQTMxOyI+Ci08IUVOVElUWSBzbWFzaHAgIiYjeDJBMzM7Ij4KLTwh
RU5USVRZIGxvdGltZXMgIiYjeDJBMzQ7Ij4KLTwhRU5USVRZIHJvdGltZXMgIiYjeDJBMzU7Ij4K
LTwhRU5USVRZIG90aW1lc2FzICImI3gyQTM2OyI+Ci08IUVOVElUWSBPdGltZXMgIiYjeDJBMzc7
Ij4KLTwhRU5USVRZIG9kaXYgIiYjeDJBMzg7Ij4KLTwhRU5USVRZIHRyaXBsdXMgIiYjeDJBMzk7
Ij4KLTwhRU5USVRZIHRyaW1pbnVzICImI3gyQTNBOyI+Ci08IUVOVElUWSB0cml0aW1lICImI3gy
QTNCOyI+Ci08IUVOVElUWSBpcHJvZCAiJiN4MkEzQzsiPgotPCFFTlRJVFkgaW50cHJvZCAiJiN4
MkEzQzsiPgotPCFFTlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ij4KLTwhRU5USVRZIGNhcGRvdCAiJiN4
MkE0MDsiPgotPCFFTlRJVFkgbmN1cCAiJiN4MkE0MjsiPgotPCFFTlRJVFkgbmNhcCAiJiN4MkE0
MzsiPgotPCFFTlRJVFkgY2FwYW5kICImI3gyQTQ0OyI+Ci08IUVOVElUWSBjdXBvciAiJiN4MkE0
NTsiPgotPCFFTlRJVFkgY3VwY2FwICImI3gyQTQ2OyI+Ci08IUVOVElUWSBjYXBjdXAgIiYjeDJB
NDc7Ij4KLTwhRU5USVRZIGN1cGJyY2FwICImI3gyQTQ4OyI+Ci08IUVOVElUWSBjYXBicmN1cCAi
JiN4MkE0OTsiPgotPCFFTlRJVFkgY3VwY3VwICImI3gyQTRBOyI+Ci08IUVOVElUWSBjYXBjYXAg
IiYjeDJBNEI7Ij4KLTwhRU5USVRZIGNjdXBzICImI3gyQTRDOyI+Ci08IUVOVElUWSBjY2FwcyAi
JiN4MkE0RDsiPgotPCFFTlRJVFkgY2N1cHNzbSAiJiN4MkE1MDsiPgotPCFFTlRJVFkgQW5kICIm
I3gyQTUzOyI+Ci08IUVOVElUWSBPciAiJiN4MkE1NDsiPgotPCFFTlRJVFkgYW5kYW5kICImI3gy
QTU1OyI+Ci08IUVOVElUWSBvcm9yICImI3gyQTU2OyI+Ci08IUVOVElUWSBvcnNsb3BlICImI3gy
QTU3OyI+Ci08IUVOVElUWSBhbmRzbG9wZSAiJiN4MkE1ODsiPgotPCFFTlRJVFkgYW5kdiAiJiN4
MkE1QTsiPgotPCFFTlRJVFkgb3J2ICImI3gyQTVCOyI+Ci08IUVOVElUWSBhbmRkICImI3gyQTVD
OyI+Ci08IUVOVElUWSBvcmQgIiYjeDJBNUQ7Ij4KLTwhRU5USVRZIHdlZGJhciAiJiN4MkE1Rjsi
PgotPCFFTlRJVFkgc2RvdGUgIiYjeDJBNjY7Ij4KLTwhRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsi
PgotPCFFTlRJVFkgY29uZ2RvdCAiJiN4MkE2RDsiPgotPCFFTlRJVFkgbmNvbmdkb3QgIiYjeDJB
NkQ7JiN4MzM4OyI+Ci08IUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ij4KLTwhRU5USVRZIGFwYWNp
ciAiJiN4MkE2RjsiPgotPCFFTlRJVFkgYXBFICImI3gyQTcwOyI+Ci08IUVOVElUWSBuYXBFICIm
I3gyQTcwOyYjeDMzODsiPgotPCFFTlRJVFkgZXBsdXMgIiYjeDJBNzE7Ij4KLTwhRU5USVRZIHBs
dXNlICImI3gyQTcyOyI+Ci08IUVOVElUWSBFc2ltICImI3gyQTczOyI+Ci08IUVOVElUWSBDb2xv
bmUgIiYjeDJBNzQ7Ij4KLTwhRU5USVRZIEVxdWFsICImI3gyQTc1OyI+Ci08IUVOVElUWSBlRERv
dCAiJiN4MkE3NzsiPgotPCFFTlRJVFkgZGRvdHNlcSAiJiN4MkE3NzsiPgotPCFFTlRJVFkgZXF1
aXZERCAiJiN4MkE3ODsiPgotPCFFTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ij4KLTwhRU5USVRZIGd0
Y2lyICImI3gyQTdBOyI+Ci08IUVOVElUWSBsdHF1ZXN0ICImI3gyQTdCOyI+Ci08IUVOVElUWSBn
dHF1ZXN0ICImI3gyQTdDOyI+Ci08IUVOVElUWSBsZXMgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIExl
c3NTbGFudEVxdWFsICImI3gyQTdEOyI+Ci08IUVOVElUWSBsZXFzbGFudCAiJiN4MkE3RDsiPgot
PCFFTlRJVFkgbmxlcyAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdExlc3NTbGFudEVx
dWFsICImI3gyQTdEOyYjeDMzODsiPgotPCFFTlRJVFkgbmxlcXNsYW50ICImI3gyQTdEOyYjeDMz
ODsiPgotPCFFTlRJVFkgZ2VzICImI3gyQTdFOyI+Ci08IUVOVElUWSBHcmVhdGVyU2xhbnRFcXVh
bCAiJiN4MkE3RTsiPgotPCFFTlRJVFkgZ2Vxc2xhbnQgIiYjeDJBN0U7Ij4KLTwhRU5USVRZIG5n
ZXMgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RHcmVhdGVyU2xhbnRFcXVhbCAiJiN4
MkE3RTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ij4KLTwh
RU5USVRZIGxlc2RvdCAiJiN4MkE3RjsiPgotPCFFTlRJVFkgZ2VzZG90ICImI3gyQTgwOyI+Ci08
IUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyI+Ci08IUVOVElUWSBnZXNkb3RvICImI3gyQTgyOyI+
Ci08IUVOVElUWSBsZXNkb3RvciAiJiN4MkE4MzsiPgotPCFFTlRJVFkgZ2VzZG90b2wgIiYjeDJB
ODQ7Ij4KLTwhRU5USVRZIGxhcCAiJiN4MkE4NTsiPgotPCFFTlRJVFkgbGVzc2FwcHJveCAiJiN4
MkE4NTsiPgotPCFFTlRJVFkgZ2FwICImI3gyQTg2OyI+Ci08IUVOVElUWSBndHJhcHByb3ggIiYj
eDJBODY7Ij4KLTwhRU5USVRZIGxuZSAiJiN4MkE4NzsiPgotPCFFTlRJVFkgbG5lcSAiJiN4MkE4
NzsiPgotPCFFTlRJVFkgZ25lICImI3gyQTg4OyI+Ci08IUVOVElUWSBnbmVxICImI3gyQTg4OyI+
Ci08IUVOVElUWSBsbmFwICImI3gyQTg5OyI+Ci08IUVOVElUWSBsbmFwcHJveCAiJiN4MkE4OTsi
PgotPCFFTlRJVFkgZ25hcCAiJiN4MkE4QTsiPgotPCFFTlRJVFkgZ25hcHByb3ggIiYjeDJBOEE7
Ij4KLTwhRU5USVRZIGxFZyAiJiN4MkE4QjsiPgotPCFFTlRJVFkgbGVzc2VxcWd0ciAiJiN4MkE4
QjsiPgotPCFFTlRJVFkgZ0VsICImI3gyQThDOyI+Ci08IUVOVElUWSBndHJlcXFsZXNzICImI3gy
QThDOyI+Ci08IUVOVElUWSBsc2ltZSAiJiN4MkE4RDsiPgotPCFFTlRJVFkgZ3NpbWUgIiYjeDJB
OEU7Ij4KLTwhRU5USVRZIGxzaW1nICImI3gyQThGOyI+Ci08IUVOVElUWSBnc2ltbCAiJiN4MkE5
MDsiPgotPCFFTlRJVFkgbGdFICImI3gyQTkxOyI+Ci08IUVOVElUWSBnbEUgIiYjeDJBOTI7Ij4K
LTwhRU5USVRZIGxlc2dlcyAiJiN4MkE5MzsiPgotPCFFTlRJVFkgZ2VzbGVzICImI3gyQTk0OyI+
Ci08IUVOVElUWSBlbHMgIiYjeDJBOTU7Ij4KLTwhRU5USVRZIGVxc2xhbnRsZXNzICImI3gyQTk1
OyI+Ci08IUVOVElUWSBlZ3MgIiYjeDJBOTY7Ij4KLTwhRU5USVRZIGVxc2xhbnRndHIgIiYjeDJB
OTY7Ij4KLTwhRU5USVRZIGVsc2RvdCAiJiN4MkE5NzsiPgotPCFFTlRJVFkgZWdzZG90ICImI3gy
QTk4OyI+Ci08IUVOVElUWSBlbCAiJiN4MkE5OTsiPgotPCFFTlRJVFkgZWcgIiYjeDJBOUE7Ij4K
LTwhRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ij4KLTwhRU5USVRZIHNpbWcgIiYjeDJBOUU7Ij4KLTwh
RU5USVRZIHNpbWxFICImI3gyQTlGOyI+Ci08IUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiPgotPCFF
TlRJVFkgTGVzc0xlc3MgIiYjeDJBQTE7Ij4KLTwhRU5USVRZIE5vdE5lc3RlZExlc3NMZXNzICIm
I3gyQUExOyYjeDMzODsiPgotPCFFTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ij4KLTwh
RU5USVRZIE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyICImI3gyQUEyOyYjeDMzODsiPgotPCFFTlRJ
VFkgZ2xqICImI3gyQUE0OyI+Ci08IUVOVElUWSBnbGEgIiYjeDJBQTU7Ij4KLTwhRU5USVRZIGx0
Y2MgIiYjeDJBQTY7Ij4KLTwhRU5USVRZIGd0Y2MgIiYjeDJBQTc7Ij4KLTwhRU5USVRZIGxlc2Nj
ICImI3gyQUE4OyI+Ci08IUVOVElUWSBnZXNjYyAiJiN4MkFBOTsiPgotPCFFTlRJVFkgc210ICIm
I3gyQUFBOyI+Ci08IUVOVElUWSBsYXQgIiYjeDJBQUI7Ij4KLTwhRU5USVRZIHNtdGUgIiYjeDJB
QUM7Ij4KLTwhRU5USVRZIHNtdGVzICImI3gyQUFDOyYjeEZFMDA7Ij4KLTwhRU5USVRZIGxhdGUg
IiYjeDJBQUQ7Ij4KLTwhRU5USVRZIGxhdGVzICImI3gyQUFEOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IGJ1bXBFICImI3gyQUFFOyI+Ci08IUVOVElUWSBwcmUgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIHBy
ZWNlcSAiJiN4MkFBRjsiPgotPCFFTlRJVFkgUHJlY2VkZXNFcXVhbCAiJiN4MkFBRjsiPgotPCFF
TlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5wcmVjZXEgIiYjeDJBQUY7
JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc0VxdWFsICImI3gyQUFGOyYjeDMzODsiPgot
PCFFTlRJVFkgc2NlICImI3gyQUIwOyI+Ci08IUVOVElUWSBzdWNjZXEgIiYjeDJBQjA7Ij4KLTwh
RU5USVRZIFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7Ij4KLTwhRU5USVRZIG5zY2UgIiYjeDJBQjA7
JiN4MzM4OyI+Ci08IUVOVElUWSBuc3VjY2VxICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJVFkg
Tm90U3VjY2VlZHNFcXVhbCAiJiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIHByRSAiJiN4MkFC
MzsiPgotPCFFTlRJVFkgc2NFICImI3gyQUI0OyI+Ci08IUVOVElUWSBwcm5FICImI3gyQUI1OyI+
Ci08IUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgc2NuRSAiJiN4MkFCNjsi
PgotPCFFTlRJVFkgc3VjY25lcXEgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHByYXAgIiYjeDJBQjc7
Ij4KLTwhRU5USVRZIHByZWNhcHByb3ggIiYjeDJBQjc7Ij4KLTwhRU5USVRZIHNjYXAgIiYjeDJB
Qjg7Ij4KLTwhRU5USVRZIHN1Y2NhcHByb3ggIiYjeDJBQjg7Ij4KLTwhRU5USVRZIHBybmFwICIm
I3gyQUI5OyI+Ci08IUVOVElUWSBwcmVjbmFwcHJveCAiJiN4MkFCOTsiPgotPCFFTlRJVFkgc2Nu
YXAgIiYjeDJBQkE7Ij4KLTwhRU5USVRZIHN1Y2NuYXBwcm94ICImI3gyQUJBOyI+Ci08IUVOVElU
WSBQciAiJiN4MkFCQjsiPgotPCFFTlRJVFkgU2MgIiYjeDJBQkM7Ij4KLTwhRU5USVRZIHN1YmRv
dCAiJiN4MkFCRDsiPgotPCFFTlRJVFkgc3VwZG90ICImI3gyQUJFOyI+Ci08IUVOVElUWSBzdWJw
bHVzICImI3gyQUJGOyI+Ci08IUVOVElUWSBzdXBwbHVzICImI3gyQUMwOyI+Ci08IUVOVElUWSBz
dWJtdWx0ICImI3gyQUMxOyI+Ci08IUVOVElUWSBzdXBtdWx0ICImI3gyQUMyOyI+Ci08IUVOVElU
WSBzdWJlZG90ICImI3gyQUMzOyI+Ci08IUVOVElUWSBzdXBlZG90ICImI3gyQUM0OyI+Ci08IUVO
VElUWSBzdWJFICImI3gyQUM1OyI+Ci08IUVOVElUWSBzdWJzZXRlcXEgIiYjeDJBQzU7Ij4KLTwh
RU5USVRZIG5zdWJFICImI3gyQUM1OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1YnNldGVxcSAiJiN4
MkFDNTsmI3gzMzg7Ij4KLTwhRU5USVRZIHN1cEUgIiYjeDJBQzY7Ij4KLTwhRU5USVRZIHN1cHNl
dGVxcSAiJiN4MkFDNjsiPgotPCFFTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyI+Ci08IUVO
VElUWSBuc3Vwc2V0ZXFxICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgc3Vic2ltICImI3gy
QUM3OyI+Ci08IUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ij4KLTwhRU5USVRZIHN1Ym5FICImI3gy
QUNCOyI+Ci08IUVOVElUWSBzdWJzZXRuZXFxICImI3gyQUNCOyI+Ci08IUVOVElUWSB2c3VibkUg
IiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkgdmFyc3Vic2V0bmVxcSAiJiN4MkFDQjsmI3hG
RTAwOyI+Ci08IUVOVElUWSBzdXBuRSAiJiN4MkFDQzsiPgotPCFFTlRJVFkgc3Vwc2V0bmVxcSAi
JiN4MkFDQzsiPgotPCFFTlRJVFkgdnN1cG5FICImI3gyQUNDOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IHZhcnN1cHNldG5lcXEgIiYjeDJBQ0M7JiN4RkUwMDsiPgotPCFFTlRJVFkgY3N1YiAiJiN4MkFD
RjsiPgotPCFFTlRJVFkgY3N1cCAiJiN4MkFEMDsiPgotPCFFTlRJVFkgY3N1YmUgIiYjeDJBRDE7
Ij4KLTwhRU5USVRZIGNzdXBlICImI3gyQUQyOyI+Ci08IUVOVElUWSBzdWJzdXAgIiYjeDJBRDM7
Ij4KLTwhRU5USVRZIHN1cHN1YiAiJiN4MkFENDsiPgotPCFFTlRJVFkgc3Vic3ViICImI3gyQUQ1
OyI+Ci08IUVOVElUWSBzdXBzdXAgIiYjeDJBRDY7Ij4KLTwhRU5USVRZIHN1cGhzdWIgIiYjeDJB
RDc7Ij4KLTwhRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7Ij4KLTwhRU5USVRZIGZvcmt2ICImI3gy
QUQ5OyI+Ci08IUVOVElUWSB0b3Bmb3JrICImI3gyQURBOyI+Ci08IUVOVElUWSBtbGNwICImI3gy
QURCOyI+Ci08IUVOVElUWSBEYXNodiAiJiN4MkFFNDsiPgotPCFFTlRJVFkgRG91YmxlTGVmdFRl
ZSAiJiN4MkFFNDsiPgotPCFFTlRJVFkgVmRhc2hsICImI3gyQUU2OyI+Ci08IUVOVElUWSBCYXJ2
ICImI3gyQUU3OyI+Ci08IUVOVElUWSB2QmFyICImI3gyQUU4OyI+Ci08IUVOVElUWSB2QmFydiAi
JiN4MkFFOTsiPgotPCFFTlRJVFkgVmJhciAiJiN4MkFFQjsiPgotPCFFTlRJVFkgTm90ICImI3gy
QUVDOyI+Ci08IUVOVElUWSBiTm90ICImI3gyQUVEOyI+Ci08IUVOVElUWSBybm1pZCAiJiN4MkFF
RTsiPgotPCFFTlRJVFkgY2lybWlkICImI3gyQUVGOyI+Ci08IUVOVElUWSBtaWRjaXIgIiYjeDJB
RjA7Ij4KLTwhRU5USVRZIHRvcGNpciAiJiN4MkFGMTsiPgotPCFFTlRJVFkgbmhwYXIgIiYjeDJB
RjI7Ij4KLTwhRU5USVRZIHBhcnNpbSAiJiN4MkFGMzsiPgotPCFFTlRJVFkgcGFyc2wgIiYjeDJB
RkQ7Ij4KLTwhRU5USVRZIG5wYXJzbCAiJiN4MkFGRDsmI3gyMEU1OyI+Ci08IUVOVElUWSBmZmxp
ZyAiJiN4RkIwMDsiPgotPCFFTlRJVFkgZmlsaWcgIiYjeEZCMDE7Ij4KLTwhRU5USVRZIGZsbGln
ICImI3hGQjAyOyI+Ci08IUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ij4KLTwhRU5USVRZIGZmbGxp
ZyAiJiN4RkIwNDsiPgotPCFFTlRJVFkgQXNjciAiJiN4MUQ0OUM7Ij4KLTwhRU5USVRZIENzY3Ig
IiYjeDFENDlFOyI+Ci08IUVOVElUWSBEc2NyICImI3gxRDQ5RjsiPgotPCFFTlRJVFkgR3NjciAi
JiN4MUQ0QTI7Ij4KLTwhRU5USVRZIEpzY3IgIiYjeDFENEE1OyI+Ci08IUVOVElUWSBLc2NyICIm
I3gxRDRBNjsiPgotPCFFTlRJVFkgTnNjciAiJiN4MUQ0QTk7Ij4KLTwhRU5USVRZIE9zY3IgIiYj
eDFENEFBOyI+Ci08IUVOVElUWSBQc2NyICImI3gxRDRBQjsiPgotPCFFTlRJVFkgUXNjciAiJiN4
MUQ0QUM7Ij4KLTwhRU5USVRZIFNzY3IgIiYjeDFENEFFOyI+Ci08IUVOVElUWSBUc2NyICImI3gx
RDRBRjsiPgotPCFFTlRJVFkgVXNjciAiJiN4MUQ0QjA7Ij4KLTwhRU5USVRZIFZzY3IgIiYjeDFE
NEIxOyI+Ci08IUVOVElUWSBXc2NyICImI3gxRDRCMjsiPgotPCFFTlRJVFkgWHNjciAiJiN4MUQ0
QjM7Ij4KLTwhRU5USVRZIFlzY3IgIiYjeDFENEI0OyI+Ci08IUVOVElUWSBac2NyICImI3gxRDRC
NTsiPgotPCFFTlRJVFkgYXNjciAiJiN4MUQ0QjY7Ij4KLTwhRU5USVRZIGJzY3IgIiYjeDFENEI3
OyI+Ci08IUVOVElUWSBjc2NyICImI3gxRDRCODsiPgotPCFFTlRJVFkgZHNjciAiJiN4MUQ0Qjk7
Ij4KLTwhRU5USVRZIGZzY3IgIiYjeDFENEJCOyI+Ci08IUVOVElUWSBoc2NyICImI3gxRDRCRDsi
PgotPCFFTlRJVFkgaXNjciAiJiN4MUQ0QkU7Ij4KLTwhRU5USVRZIGpzY3IgIiYjeDFENEJGOyI+
Ci08IUVOVElUWSBrc2NyICImI3gxRDRDMDsiPgotPCFFTlRJVFkgbHNjciAiJiN4MUQ0QzE7Ij4K
LTwhRU5USVRZIG1zY3IgIiYjeDFENEMyOyI+Ci08IUVOVElUWSBuc2NyICImI3gxRDRDMzsiPgot
PCFFTlRJVFkgcHNjciAiJiN4MUQ0QzU7Ij4KLTwhRU5USVRZIHFzY3IgIiYjeDFENEM2OyI+Ci08
IUVOVElUWSByc2NyICImI3gxRDRDNzsiPgotPCFFTlRJVFkgc3NjciAiJiN4MUQ0Qzg7Ij4KLTwh
RU5USVRZIHRzY3IgIiYjeDFENEM5OyI+Ci08IUVOVElUWSB1c2NyICImI3gxRDRDQTsiPgotPCFF
TlRJVFkgdnNjciAiJiN4MUQ0Q0I7Ij4KLTwhRU5USVRZIHdzY3IgIiYjeDFENENDOyI+Ci08IUVO
VElUWSB4c2NyICImI3gxRDRDRDsiPgotPCFFTlRJVFkgeXNjciAiJiN4MUQ0Q0U7Ij4KLTwhRU5U
SVRZIHpzY3IgIiYjeDFENENGOyI+Ci08IUVOVElUWSBBZnIgIiYjeDFENTA0OyI+Ci08IUVOVElU
WSBCZnIgIiYjeDFENTA1OyI+Ci08IUVOVElUWSBEZnIgIiYjeDFENTA3OyI+Ci08IUVOVElUWSBF
ZnIgIiYjeDFENTA4OyI+Ci08IUVOVElUWSBGZnIgIiYjeDFENTA5OyI+Ci08IUVOVElUWSBHZnIg
IiYjeDFENTBBOyI+Ci08IUVOVElUWSBKZnIgIiYjeDFENTBEOyI+Ci08IUVOVElUWSBLZnIgIiYj
eDFENTBFOyI+Ci08IUVOVElUWSBMZnIgIiYjeDFENTBGOyI+Ci08IUVOVElUWSBNZnIgIiYjeDFE
NTEwOyI+Ci08IUVOVElUWSBOZnIgIiYjeDFENTExOyI+Ci08IUVOVElUWSBPZnIgIiYjeDFENTEy
OyI+Ci08IUVOVElUWSBQZnIgIiYjeDFENTEzOyI+Ci08IUVOVElUWSBRZnIgIiYjeDFENTE0OyI+
Ci08IUVOVElUWSBTZnIgIiYjeDFENTE2OyI+Ci08IUVOVElUWSBUZnIgIiYjeDFENTE3OyI+Ci08
IUVOVElUWSBVZnIgIiYjeDFENTE4OyI+Ci08IUVOVElUWSBWZnIgIiYjeDFENTE5OyI+Ci08IUVO
VElUWSBXZnIgIiYjeDFENTFBOyI+Ci08IUVOVElUWSBYZnIgIiYjeDFENTFCOyI+Ci08IUVOVElU
WSBZZnIgIiYjeDFENTFDOyI+Ci08IUVOVElUWSBhZnIgIiYjeDFENTFFOyI+Ci08IUVOVElUWSBi
ZnIgIiYjeDFENTFGOyI+Ci08IUVOVElUWSBjZnIgIiYjeDFENTIwOyI+Ci08IUVOVElUWSBkZnIg
IiYjeDFENTIxOyI+Ci08IUVOVElUWSBlZnIgIiYjeDFENTIyOyI+Ci08IUVOVElUWSBmZnIgIiYj
eDFENTIzOyI+Ci08IUVOVElUWSBnZnIgIiYjeDFENTI0OyI+Ci08IUVOVElUWSBoZnIgIiYjeDFE
NTI1OyI+Ci08IUVOVElUWSBpZnIgIiYjeDFENTI2OyI+Ci08IUVOVElUWSBqZnIgIiYjeDFENTI3
OyI+Ci08IUVOVElUWSBrZnIgIiYjeDFENTI4OyI+Ci08IUVOVElUWSBsZnIgIiYjeDFENTI5OyI+
Ci08IUVOVElUWSBtZnIgIiYjeDFENTJBOyI+Ci08IUVOVElUWSBuZnIgIiYjeDFENTJCOyI+Ci08
IUVOVElUWSBvZnIgIiYjeDFENTJDOyI+Ci08IUVOVElUWSBwZnIgIiYjeDFENTJEOyI+Ci08IUVO
VElUWSBxZnIgIiYjeDFENTJFOyI+Ci08IUVOVElUWSByZnIgIiYjeDFENTJGOyI+Ci08IUVOVElU
WSBzZnIgIiYjeDFENTMwOyI+Ci08IUVOVElUWSB0ZnIgIiYjeDFENTMxOyI+Ci08IUVOVElUWSB1
ZnIgIiYjeDFENTMyOyI+Ci08IUVOVElUWSB2ZnIgIiYjeDFENTMzOyI+Ci08IUVOVElUWSB3ZnIg
IiYjeDFENTM0OyI+Ci08IUVOVElUWSB4ZnIgIiYjeDFENTM1OyI+Ci08IUVOVElUWSB5ZnIgIiYj
eDFENTM2OyI+Ci08IUVOVElUWSB6ZnIgIiYjeDFENTM3OyI+Ci08IUVOVElUWSBBb3BmICImI3gx
RDUzODsiPgotPCFFTlRJVFkgQm9wZiAiJiN4MUQ1Mzk7Ij4KLTwhRU5USVRZIERvcGYgIiYjeDFE
NTNCOyI+Ci08IUVOVElUWSBFb3BmICImI3gxRDUzQzsiPgotPCFFTlRJVFkgRm9wZiAiJiN4MUQ1
M0Q7Ij4KLTwhRU5USVRZIEdvcGYgIiYjeDFENTNFOyI+Ci08IUVOVElUWSBJb3BmICImI3gxRDU0
MDsiPgotPCFFTlRJVFkgSm9wZiAiJiN4MUQ1NDE7Ij4KLTwhRU5USVRZIEtvcGYgIiYjeDFENTQy
OyI+Ci08IUVOVElUWSBMb3BmICImI3gxRDU0MzsiPgotPCFFTlRJVFkgTW9wZiAiJiN4MUQ1NDQ7
Ij4KLTwhRU5USVRZIE9vcGYgIiYjeDFENTQ2OyI+Ci08IUVOVElUWSBTb3BmICImI3gxRDU0QTsi
PgotPCFFTlRJVFkgVG9wZiAiJiN4MUQ1NEI7Ij4KLTwhRU5USVRZIFVvcGYgIiYjeDFENTRDOyI+
Ci08IUVOVElUWSBWb3BmICImI3gxRDU0RDsiPgotPCFFTlRJVFkgV29wZiAiJiN4MUQ1NEU7Ij4K
LTwhRU5USVRZIFhvcGYgIiYjeDFENTRGOyI+Ci08IUVOVElUWSBZb3BmICImI3gxRDU1MDsiPgot
PCFFTlRJVFkgYW9wZiAiJiN4MUQ1NTI7Ij4KLTwhRU5USVRZIGJvcGYgIiYjeDFENTUzOyI+Ci08
IUVOVElUWSBjb3BmICImI3gxRDU1NDsiPgotPCFFTlRJVFkgZG9wZiAiJiN4MUQ1NTU7Ij4KLTwh
RU5USVRZIGVvcGYgIiYjeDFENTU2OyI+Ci08IUVOVElUWSBmb3BmICImI3gxRDU1NzsiPgotPCFF
TlRJVFkgZ29wZiAiJiN4MUQ1NTg7Ij4KLTwhRU5USVRZIGhvcGYgIiYjeDFENTU5OyI+Ci08IUVO
VElUWSBpb3BmICImI3gxRDU1QTsiPgotPCFFTlRJVFkgam9wZiAiJiN4MUQ1NUI7Ij4KLTwhRU5U
SVRZIGtvcGYgIiYjeDFENTVDOyI+Ci08IUVOVElUWSBsb3BmICImI3gxRDU1RDsiPgotPCFFTlRJ
VFkgbW9wZiAiJiN4MUQ1NUU7Ij4KLTwhRU5USVRZIG5vcGYgIiYjeDFENTVGOyI+Ci08IUVOVElU
WSBvb3BmICImI3gxRDU2MDsiPgotPCFFTlRJVFkgcG9wZiAiJiN4MUQ1NjE7Ij4KLTwhRU5USVRZ
IHFvcGYgIiYjeDFENTYyOyI+Ci08IUVOVElUWSByb3BmICImI3gxRDU2MzsiPgotPCFFTlRJVFkg
c29wZiAiJiN4MUQ1NjQ7Ij4KLTwhRU5USVRZIHRvcGYgIiYjeDFENTY1OyI+Ci08IUVOVElUWSB1
b3BmICImI3gxRDU2NjsiPgotPCFFTlRJVFkgdm9wZiAiJiN4MUQ1Njc7Ij4KLTwhRU5USVRZIHdv
cGYgIiYjeDFENTY4OyI+Ci08IUVOVElUWSB4b3BmICImI3gxRDU2OTsiPgotPCFFTlRJVFkgeW9w
ZiAiJiN4MUQ1NkE7Ij4KLTwhRU5USVRZIHpvcGYgIiYjeDFENTZCOyI+Cis8IS0tRU5USVRZIFRh
YiAiJiN4OTsiLS0+Cis8IS0tRU5USVRZIE5ld0xpbmUgIiYjeEE7Ii0tPgorPCEtLUVOVElUWSBl
eGNsICImI3gyMTsiLS0+Cis8IS0tRU5USVRZIHF1b3QgIiYjeDIyOyItLT4KKzwhLS1FTlRJVFkg
UVVPVCAiJiN4MjI7Ii0tPgorPCEtLUVOVElUWSBudW0gIiYjeDIzOyItLT4KKzwhLS1FTlRJVFkg
ZG9sbGFyICImI3gyNDsiLS0+Cis8IS0tRU5USVRZIHBlcmNudCAiJiN4MjU7Ii0tPgorPCEtLUVO
VElUWSBhbXAgIiYjeDI2OyN4MjY7Ii0tPgorPCEtLUVOVElUWSBBTVAgIiYjeDI2OyN4MjY7Ii0t
PgorPCEtLUVOVElUWSBhcG9zICImI3gyNzsiLS0+Cis8IS0tRU5USVRZIGxwYXIgIiYjeDI4OyIt
LT4KKzwhLS1FTlRJVFkgcnBhciAiJiN4Mjk7Ii0tPgorPCEtLUVOVElUWSBhc3QgIiYjeDJBOyIt
LT4KKzwhLS1FTlRJVFkgbWlkYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIHBsdXMgIiYjeDJC
OyItLT4KKzwhLS1FTlRJVFkgY29tbWEgIiYjeDJDOyItLT4KKzwhLS1FTlRJVFkgcGVyaW9kICIm
I3gyRTsiLS0+Cis8IS0tRU5USVRZIHNvbCAiJiN4MkY7Ii0tPgorPCEtLUVOVElUWSBjb2xvbiAi
JiN4M0E7Ii0tPgorPCEtLUVOVElUWSBzZW1pICImI3gzQjsiLS0+Cis8IS0tRU5USVRZIGx0ICIm
I3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgTFQgIiYjeDI2OyN4M0M7Ii0tPgorPCEtLUVOVElU
WSBudmx0ICImI3gyNjsjeDNDOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBlcXVhbHMgIiYjeDNE
OyItLT4KKzwhLS1FTlRJVFkgYm5lICImI3gzRDsmI3gyMEU1OyItLT4KKzwhLS1FTlRJVFkgZ3Qg
IiYjeDNFOyItLT4KKzwhLS1FTlRJVFkgR1QgIiYjeDNFOyItLT4KKzwhLS1FTlRJVFkgbnZndCAi
JiN4M0U7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHF1ZXN0ICImI3gzRjsiLS0+Cis8IS0tRU5U
SVRZIGNvbW1hdCAiJiN4NDA7Ii0tPgorPCEtLUVOVElUWSBsc3FiICImI3g1QjsiLS0+Cis8IS0t
RU5USVRZIGxicmFjayAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBic29sICImI3g1QzsiLS0+Cis8
IS0tRU5USVRZIHJzcWIgIiYjeDVEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNrICImI3g1RDsiLS0+
Cis8IS0tRU5USVRZIEhhdCAiJiN4NUU7Ii0tPgorPCEtLUVOVElUWSBsb3diYXIgIiYjeDVGOyIt
LT4KKzwhLS1FTlRJVFkgVW5kZXJCYXIgIiYjeDVGOyItLT4KKzwhLS1FTlRJVFkgZ3JhdmUgIiYj
eDYwOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxHcmF2ZSAiJiN4NjA7Ii0tPgorPCEtLUVO
VElUWSBmamxpZyAiJiN4NjY7JiN4NkE7Ii0tPgorPCEtLUVOVElUWSBsY3ViICImI3g3QjsiLS0+
Cis8IS0tRU5USVRZIGxicmFjZSAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSB2ZXJiYXIgIiYjeDdD
OyItLT4KKzwhLS1FTlRJVFkgdmVydCAiJiN4N0M7Ii0tPgorPCEtLUVOVElUWSBWZXJ0aWNhbExp
bmUgIiYjeDdDOyItLT4KKzwhLS1FTlRJVFkgcmN1YiAiJiN4N0Q7Ii0tPgorPCEtLUVOVElUWSBy
YnJhY2UgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgbmJzcCAiJiN4QTA7Ii0tPgorPCEtLUVOVElU
WSBOb25CcmVha2luZ1NwYWNlICImI3hBMDsiLS0+Cis8IS0tRU5USVRZIGlleGNsICImI3hBMTsi
LS0+Cis8IS0tRU5USVRZIGNlbnQgIiYjeEEyOyItLT4KKzwhLS1FTlRJVFkgcG91bmQgIiYjeEEz
OyItLT4KKzwhLS1FTlRJVFkgY3VycmVuICImI3hBNDsiLS0+Cis8IS0tRU5USVRZIHllbiAiJiN4
QTU7Ii0tPgorPCEtLUVOVElUWSBicnZiYXIgIiYjeEE2OyItLT4KKzwhLS1FTlRJVFkgc2VjdCAi
JiN4QTc7Ii0tPgorPCEtLUVOVElUWSBEb3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgZGllICIm
I3hBODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZURvdCAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSB1
bWwgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgY29weSAiJiN4QTk7Ii0tPgorPCEtLUVOVElUWSBD
T1BZICImI3hBOTsiLS0+Cis8IS0tRU5USVRZIG9yZGYgIiYjeEFBOyItLT4KKzwhLS1FTlRJVFkg
bGFxdW8gIiYjeEFCOyItLT4KKzwhLS1FTlRJVFkgbm90ICImI3hBQzsiLS0+Cis8IS0tRU5USVRZ
IHNoeSAiJiN4QUQ7Ii0tPgorPCEtLUVOVElUWSByZWcgIiYjeEFFOyItLT4KKzwhLS1FTlRJVFkg
Y2lyY2xlZFIgIiYjeEFFOyItLT4KKzwhLS1FTlRJVFkgUkVHICImI3hBRTsiLS0+Cis8IS0tRU5U
SVRZIG1hY3IgIiYjeEFGOyItLT4KKzwhLS1FTlRJVFkgc3RybnMgIiYjeEFGOyItLT4KKzwhLS1F
TlRJVFkgZGVnICImI3hCMDsiLS0+Cis8IS0tRU5USVRZIHBsdXNtbiAiJiN4QjE7Ii0tPgorPCEt
LUVOVElUWSBwbSAiJiN4QjE7Ii0tPgorPCEtLUVOVElUWSBQbHVzTWludXMgIiYjeEIxOyItLT4K
KzwhLS1FTlRJVFkgc3VwMiAiJiN4QjI7Ii0tPgorPCEtLUVOVElUWSBzdXAzICImI3hCMzsiLS0+
Cis8IS0tRU5USVRZIGFjdXRlICImI3hCNDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsQWN1
dGUgIiYjeEI0OyItLT4KKzwhLS1FTlRJVFkgbWljcm8gIiYjeEI1OyItLT4KKzwhLS1FTlRJVFkg
cGFyYSAiJiN4QjY7Ii0tPgorPCEtLUVOVElUWSBtaWRkb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJ
VFkgY2VudGVyZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIENlbnRlckRvdCAiJiN4Qjc7Ii0t
PgorPCEtLUVOVElUWSBjZWRpbCAiJiN4Qjg7Ii0tPgorPCEtLUVOVElUWSBDZWRpbGxhICImI3hC
ODsiLS0+Cis8IS0tRU5USVRZIHN1cDEgIiYjeEI5OyItLT4KKzwhLS1FTlRJVFkgb3JkbSAiJiN4
QkE7Ii0tPgorPCEtLUVOVElUWSByYXF1byAiJiN4QkI7Ii0tPgorPCEtLUVOVElUWSBmcmFjMTQg
IiYjeEJDOyItLT4KKzwhLS1FTlRJVFkgZnJhYzEyICImI3hCRDsiLS0+Cis8IS0tRU5USVRZIGhh
bGYgIiYjeEJEOyItLT4KKzwhLS1FTlRJVFkgZnJhYzM0ICImI3hCRTsiLS0+Cis8IS0tRU5USVRZ
IGlxdWVzdCAiJiN4QkY7Ii0tPgorPCEtLUVOVElUWSBBZ3JhdmUgIiYjeEMwOyItLT4KKzwhLS1F
TlRJVFkgQWFjdXRlICImI3hDMTsiLS0+Cis8IS0tRU5USVRZIEFjaXJjICImI3hDMjsiLS0+Cis8
IS0tRU5USVRZIEF0aWxkZSAiJiN4QzM7Ii0tPgorPCEtLUVOVElUWSBBdW1sICImI3hDNDsiLS0+
Cis8IS0tRU5USVRZIEFyaW5nICImI3hDNTsiLS0+Cis8IS0tRU5USVRZIGFuZ3N0ICImI3hDNTsi
LS0+Cis8IS0tRU5USVRZIEFFbGlnICImI3hDNjsiLS0+Cis8IS0tRU5USVRZIENjZWRpbCAiJiN4
Qzc7Ii0tPgorPCEtLUVOVElUWSBFZ3JhdmUgIiYjeEM4OyItLT4KKzwhLS1FTlRJVFkgRWFjdXRl
ICImI3hDOTsiLS0+Cis8IS0tRU5USVRZIEVjaXJjICImI3hDQTsiLS0+Cis8IS0tRU5USVRZIEV1
bWwgIiYjeENCOyItLT4KKzwhLS1FTlRJVFkgSWdyYXZlICImI3hDQzsiLS0+Cis8IS0tRU5USVRZ
IElhY3V0ZSAiJiN4Q0Q7Ii0tPgorPCEtLUVOVElUWSBJY2lyYyAiJiN4Q0U7Ii0tPgorPCEtLUVO
VElUWSBJdW1sICImI3hDRjsiLS0+Cis8IS0tRU5USVRZIEVUSCAiJiN4RDA7Ii0tPgorPCEtLUVO
VElUWSBOdGlsZGUgIiYjeEQxOyItLT4KKzwhLS1FTlRJVFkgT2dyYXZlICImI3hEMjsiLS0+Cis8
IS0tRU5USVRZIE9hY3V0ZSAiJiN4RDM7Ii0tPgorPCEtLUVOVElUWSBPY2lyYyAiJiN4RDQ7Ii0t
PgorPCEtLUVOVElUWSBPdGlsZGUgIiYjeEQ1OyItLT4KKzwhLS1FTlRJVFkgT3VtbCAiJiN4RDY7
Ii0tPgorPCEtLUVOVElUWSB0aW1lcyAiJiN4RDc7Ii0tPgorPCEtLUVOVElUWSBPc2xhc2ggIiYj
eEQ4OyItLT4KKzwhLS1FTlRJVFkgVWdyYXZlICImI3hEOTsiLS0+Cis8IS0tRU5USVRZIFVhY3V0
ZSAiJiN4REE7Ii0tPgorPCEtLUVOVElUWSBVY2lyYyAiJiN4REI7Ii0tPgorPCEtLUVOVElUWSBV
dW1sICImI3hEQzsiLS0+Cis8IS0tRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ii0tPgorPCEtLUVOVElU
WSBUSE9STiAiJiN4REU7Ii0tPgorPCEtLUVOVElUWSBzemxpZyAiJiN4REY7Ii0tPgorPCEtLUVO
VElUWSBhZ3JhdmUgIiYjeEUwOyItLT4KKzwhLS1FTlRJVFkgYWFjdXRlICImI3hFMTsiLS0+Cis8
IS0tRU5USVRZIGFjaXJjICImI3hFMjsiLS0+Cis8IS0tRU5USVRZIGF0aWxkZSAiJiN4RTM7Ii0t
PgorPCEtLUVOVElUWSBhdW1sICImI3hFNDsiLS0+Cis8IS0tRU5USVRZIGFyaW5nICImI3hFNTsi
LS0+Cis8IS0tRU5USVRZIGFlbGlnICImI3hFNjsiLS0+Cis8IS0tRU5USVRZIGNjZWRpbCAiJiN4
RTc7Ii0tPgorPCEtLUVOVElUWSBlZ3JhdmUgIiYjeEU4OyItLT4KKzwhLS1FTlRJVFkgZWFjdXRl
ICImI3hFOTsiLS0+Cis8IS0tRU5USVRZIGVjaXJjICImI3hFQTsiLS0+Cis8IS0tRU5USVRZIGV1
bWwgIiYjeEVCOyItLT4KKzwhLS1FTlRJVFkgaWdyYXZlICImI3hFQzsiLS0+Cis8IS0tRU5USVRZ
IGlhY3V0ZSAiJiN4RUQ7Ii0tPgorPCEtLUVOVElUWSBpY2lyYyAiJiN4RUU7Ii0tPgorPCEtLUVO
VElUWSBpdW1sICImI3hFRjsiLS0+Cis8IS0tRU5USVRZIGV0aCAiJiN4RjA7Ii0tPgorPCEtLUVO
VElUWSBudGlsZGUgIiYjeEYxOyItLT4KKzwhLS1FTlRJVFkgb2dyYXZlICImI3hGMjsiLS0+Cis8
IS0tRU5USVRZIG9hY3V0ZSAiJiN4RjM7Ii0tPgorPCEtLUVOVElUWSBvY2lyYyAiJiN4RjQ7Ii0t
PgorPCEtLUVOVElUWSBvdGlsZGUgIiYjeEY1OyItLT4KKzwhLS1FTlRJVFkgb3VtbCAiJiN4RjY7
Ii0tPgorPCEtLUVOVElUWSBkaXZpZGUgIiYjeEY3OyItLT4KKzwhLS1FTlRJVFkgZGl2ICImI3hG
NzsiLS0+Cis8IS0tRU5USVRZIG9zbGFzaCAiJiN4Rjg7Ii0tPgorPCEtLUVOVElUWSB1Z3JhdmUg
IiYjeEY5OyItLT4KKzwhLS1FTlRJVFkgdWFjdXRlICImI3hGQTsiLS0+Cis8IS0tRU5USVRZIHVj
aXJjICImI3hGQjsiLS0+Cis8IS0tRU5USVRZIHV1bWwgIiYjeEZDOyItLT4KKzwhLS1FTlRJVFkg
eWFjdXRlICImI3hGRDsiLS0+Cis8IS0tRU5USVRZIHRob3JuICImI3hGRTsiLS0+Cis8IS0tRU5U
SVRZIHl1bWwgIiYjeEZGOyItLT4KKzwhLS1FTlRJVFkgQW1hY3IgIiYjeDEwMDsiLS0+Cis8IS0t
RU5USVRZIGFtYWNyICImI3gxMDE7Ii0tPgorPCEtLUVOVElUWSBBYnJldmUgIiYjeDEwMjsiLS0+
Cis8IS0tRU5USVRZIGFicmV2ZSAiJiN4MTAzOyItLT4KKzwhLS1FTlRJVFkgQW9nb24gIiYjeDEw
NDsiLS0+Cis8IS0tRU5USVRZIGFvZ29uICImI3gxMDU7Ii0tPgorPCEtLUVOVElUWSBDYWN1dGUg
IiYjeDEwNjsiLS0+Cis8IS0tRU5USVRZIGNhY3V0ZSAiJiN4MTA3OyItLT4KKzwhLS1FTlRJVFkg
Q2NpcmMgIiYjeDEwODsiLS0+Cis8IS0tRU5USVRZIGNjaXJjICImI3gxMDk7Ii0tPgorPCEtLUVO
VElUWSBDZG90ICImI3gxMEE7Ii0tPgorPCEtLUVOVElUWSBjZG90ICImI3gxMEI7Ii0tPgorPCEt
LUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiLS0+Cis8IS0tRU5USVRZIGNjYXJvbiAiJiN4MTBEOyIt
LT4KKzwhLS1FTlRJVFkgRGNhcm9uICImI3gxMEU7Ii0tPgorPCEtLUVOVElUWSBkY2Fyb24gIiYj
eDEwRjsiLS0+Cis8IS0tRU5USVRZIERzdHJvayAiJiN4MTEwOyItLT4KKzwhLS1FTlRJVFkgZHN0
cm9rICImI3gxMTE7Ii0tPgorPCEtLUVOVElUWSBFbWFjciAiJiN4MTEyOyItLT4KKzwhLS1FTlRJ
VFkgZW1hY3IgIiYjeDExMzsiLS0+Cis8IS0tRU5USVRZIEVkb3QgIiYjeDExNjsiLS0+Cis8IS0t
RU5USVRZIGVkb3QgIiYjeDExNzsiLS0+Cis8IS0tRU5USVRZIEVvZ29uICImI3gxMTg7Ii0tPgor
PCEtLUVOVElUWSBlb2dvbiAiJiN4MTE5OyItLT4KKzwhLS1FTlRJVFkgRWNhcm9uICImI3gxMUE7
Ii0tPgorPCEtLUVOVElUWSBlY2Fyb24gIiYjeDExQjsiLS0+Cis8IS0tRU5USVRZIEdjaXJjICIm
I3gxMUM7Ii0tPgorPCEtLUVOVElUWSBnY2lyYyAiJiN4MTFEOyItLT4KKzwhLS1FTlRJVFkgR2Jy
ZXZlICImI3gxMUU7Ii0tPgorPCEtLUVOVElUWSBnYnJldmUgIiYjeDExRjsiLS0+Cis8IS0tRU5U
SVRZIEdkb3QgIiYjeDEyMDsiLS0+Cis8IS0tRU5USVRZIGdkb3QgIiYjeDEyMTsiLS0+Cis8IS0t
RU5USVRZIEdjZWRpbCAiJiN4MTIyOyItLT4KKzwhLS1FTlRJVFkgSGNpcmMgIiYjeDEyNDsiLS0+
Cis8IS0tRU5USVRZIGhjaXJjICImI3gxMjU7Ii0tPgorPCEtLUVOVElUWSBIc3Ryb2sgIiYjeDEy
NjsiLS0+Cis8IS0tRU5USVRZIGhzdHJvayAiJiN4MTI3OyItLT4KKzwhLS1FTlRJVFkgSXRpbGRl
ICImI3gxMjg7Ii0tPgorPCEtLUVOVElUWSBpdGlsZGUgIiYjeDEyOTsiLS0+Cis8IS0tRU5USVRZ
IEltYWNyICImI3gxMkE7Ii0tPgorPCEtLUVOVElUWSBpbWFjciAiJiN4MTJCOyItLT4KKzwhLS1F
TlRJVFkgSW9nb24gIiYjeDEyRTsiLS0+Cis8IS0tRU5USVRZIGlvZ29uICImI3gxMkY7Ii0tPgor
PCEtLUVOVElUWSBJZG90ICImI3gxMzA7Ii0tPgorPCEtLUVOVElUWSBpbWF0aCAiJiN4MTMxOyIt
LT4KKzwhLS1FTlRJVFkgaW5vZG90ICImI3gxMzE7Ii0tPgorPCEtLUVOVElUWSBJSmxpZyAiJiN4
MTMyOyItLT4KKzwhLS1FTlRJVFkgaWpsaWcgIiYjeDEzMzsiLS0+Cis8IS0tRU5USVRZIEpjaXJj
ICImI3gxMzQ7Ii0tPgorPCEtLUVOVElUWSBqY2lyYyAiJiN4MTM1OyItLT4KKzwhLS1FTlRJVFkg
S2NlZGlsICImI3gxMzY7Ii0tPgorPCEtLUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiLS0+Cis8IS0t
RU5USVRZIGtncmVlbiAiJiN4MTM4OyItLT4KKzwhLS1FTlRJVFkgTGFjdXRlICImI3gxMzk7Ii0t
PgorPCEtLUVOVElUWSBsYWN1dGUgIiYjeDEzQTsiLS0+Cis8IS0tRU5USVRZIExjZWRpbCAiJiN4
MTNCOyItLT4KKzwhLS1FTlRJVFkgbGNlZGlsICImI3gxM0M7Ii0tPgorPCEtLUVOVElUWSBMY2Fy
b24gIiYjeDEzRDsiLS0+Cis8IS0tRU5USVRZIGxjYXJvbiAiJiN4MTNFOyItLT4KKzwhLS1FTlRJ
VFkgTG1pZG90ICImI3gxM0Y7Ii0tPgorPCEtLUVOVElUWSBsbWlkb3QgIiYjeDE0MDsiLS0+Cis8
IS0tRU5USVRZIExzdHJvayAiJiN4MTQxOyItLT4KKzwhLS1FTlRJVFkgbHN0cm9rICImI3gxNDI7
Ii0tPgorPCEtLUVOVElUWSBOYWN1dGUgIiYjeDE0MzsiLS0+Cis8IS0tRU5USVRZIG5hY3V0ZSAi
JiN4MTQ0OyItLT4KKzwhLS1FTlRJVFkgTmNlZGlsICImI3gxNDU7Ii0tPgorPCEtLUVOVElUWSBu
Y2VkaWwgIiYjeDE0NjsiLS0+Cis8IS0tRU5USVRZIE5jYXJvbiAiJiN4MTQ3OyItLT4KKzwhLS1F
TlRJVFkgbmNhcm9uICImI3gxNDg7Ii0tPgorPCEtLUVOVElUWSBuYXBvcyAiJiN4MTQ5OyItLT4K
KzwhLS1FTlRJVFkgRU5HICImI3gxNEE7Ii0tPgorPCEtLUVOVElUWSBlbmcgIiYjeDE0QjsiLS0+
Cis8IS0tRU5USVRZIE9tYWNyICImI3gxNEM7Ii0tPgorPCEtLUVOVElUWSBvbWFjciAiJiN4MTRE
OyItLT4KKzwhLS1FTlRJVFkgT2RibGFjICImI3gxNTA7Ii0tPgorPCEtLUVOVElUWSBvZGJsYWMg
IiYjeDE1MTsiLS0+Cis8IS0tRU5USVRZIE9FbGlnICImI3gxNTI7Ii0tPgorPCEtLUVOVElUWSBv
ZWxpZyAiJiN4MTUzOyItLT4KKzwhLS1FTlRJVFkgUmFjdXRlICImI3gxNTQ7Ii0tPgorPCEtLUVO
VElUWSByYWN1dGUgIiYjeDE1NTsiLS0+Cis8IS0tRU5USVRZIFJjZWRpbCAiJiN4MTU2OyItLT4K
KzwhLS1FTlRJVFkgcmNlZGlsICImI3gxNTc7Ii0tPgorPCEtLUVOVElUWSBSY2Fyb24gIiYjeDE1
ODsiLS0+Cis8IS0tRU5USVRZIHJjYXJvbiAiJiN4MTU5OyItLT4KKzwhLS1FTlRJVFkgU2FjdXRl
ICImI3gxNUE7Ii0tPgorPCEtLUVOVElUWSBzYWN1dGUgIiYjeDE1QjsiLS0+Cis8IS0tRU5USVRZ
IFNjaXJjICImI3gxNUM7Ii0tPgorPCEtLUVOVElUWSBzY2lyYyAiJiN4MTVEOyItLT4KKzwhLS1F
TlRJVFkgU2NlZGlsICImI3gxNUU7Ii0tPgorPCEtLUVOVElUWSBzY2VkaWwgIiYjeDE1RjsiLS0+
Cis8IS0tRU5USVRZIFNjYXJvbiAiJiN4MTYwOyItLT4KKzwhLS1FTlRJVFkgc2Nhcm9uICImI3gx
NjE7Ii0tPgorPCEtLUVOVElUWSBUY2VkaWwgIiYjeDE2MjsiLS0+Cis8IS0tRU5USVRZIHRjZWRp
bCAiJiN4MTYzOyItLT4KKzwhLS1FTlRJVFkgVGNhcm9uICImI3gxNjQ7Ii0tPgorPCEtLUVOVElU
WSB0Y2Fyb24gIiYjeDE2NTsiLS0+Cis8IS0tRU5USVRZIFRzdHJvayAiJiN4MTY2OyItLT4KKzwh
LS1FTlRJVFkgdHN0cm9rICImI3gxNjc7Ii0tPgorPCEtLUVOVElUWSBVdGlsZGUgIiYjeDE2ODsi
LS0+Cis8IS0tRU5USVRZIHV0aWxkZSAiJiN4MTY5OyItLT4KKzwhLS1FTlRJVFkgVW1hY3IgIiYj
eDE2QTsiLS0+Cis8IS0tRU5USVRZIHVtYWNyICImI3gxNkI7Ii0tPgorPCEtLUVOVElUWSBVYnJl
dmUgIiYjeDE2QzsiLS0+Cis8IS0tRU5USVRZIHVicmV2ZSAiJiN4MTZEOyItLT4KKzwhLS1FTlRJ
VFkgVXJpbmcgIiYjeDE2RTsiLS0+Cis8IS0tRU5USVRZIHVyaW5nICImI3gxNkY7Ii0tPgorPCEt
LUVOVElUWSBVZGJsYWMgIiYjeDE3MDsiLS0+Cis8IS0tRU5USVRZIHVkYmxhYyAiJiN4MTcxOyIt
LT4KKzwhLS1FTlRJVFkgVW9nb24gIiYjeDE3MjsiLS0+Cis8IS0tRU5USVRZIHVvZ29uICImI3gx
NzM7Ii0tPgorPCEtLUVOVElUWSBXY2lyYyAiJiN4MTc0OyItLT4KKzwhLS1FTlRJVFkgd2NpcmMg
IiYjeDE3NTsiLS0+Cis8IS0tRU5USVRZIFljaXJjICImI3gxNzY7Ii0tPgorPCEtLUVOVElUWSB5
Y2lyYyAiJiN4MTc3OyItLT4KKzwhLS1FTlRJVFkgWXVtbCAiJiN4MTc4OyItLT4KKzwhLS1FTlRJ
VFkgWmFjdXRlICImI3gxNzk7Ii0tPgorPCEtLUVOVElUWSB6YWN1dGUgIiYjeDE3QTsiLS0+Cis8
IS0tRU5USVRZIFpkb3QgIiYjeDE3QjsiLS0+Cis8IS0tRU5USVRZIHpkb3QgIiYjeDE3QzsiLS0+
Cis8IS0tRU5USVRZIFpjYXJvbiAiJiN4MTdEOyItLT4KKzwhLS1FTlRJVFkgemNhcm9uICImI3gx
N0U7Ii0tPgorPCEtLUVOVElUWSBmbm9mICImI3gxOTI7Ii0tPgorPCEtLUVOVElUWSBpbXBlZCAi
JiN4MUI1OyItLT4KKzwhLS1FTlRJVFkgZ2FjdXRlICImI3gxRjU7Ii0tPgorPCEtLUVOVElUWSBq
bWF0aCAiJiN4MjM3OyItLT4KKzwhLS1FTlRJVFkgY2lyYyAiJiN4MkM2OyItLT4KKzwhLS1FTlRJ
VFkgY2Fyb24gIiYjeDJDNzsiLS0+Cis8IS0tRU5USVRZIEhhY2VrICImI3gyQzc7Ii0tPgorPCEt
LUVOVElUWSBicmV2ZSAiJiN4MkQ4OyItLT4KKzwhLS1FTlRJVFkgQnJldmUgIiYjeDJEODsiLS0+
Cis8IS0tRU5USVRZIGRvdCAiJiN4MkQ5OyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxEb3Qg
IiYjeDJEOTsiLS0+Cis8IS0tRU5USVRZIHJpbmcgIiYjeDJEQTsiLS0+Cis8IS0tRU5USVRZIG9n
b24gIiYjeDJEQjsiLS0+Cis8IS0tRU5USVRZIHRpbGRlICImI3gyREM7Ii0tPgorPCEtLUVOVElU
WSBEaWFjcml0aWNhbFRpbGRlICImI3gyREM7Ii0tPgorPCEtLUVOVElUWSBkYmxhYyAiJiN4MkRE
OyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxEb3VibGVBY3V0ZSAiJiN4MkREOyItLT4KKzwh
LS1FTlRJVFkgRG93bkJyZXZlICImI3gzMTE7Ii0tPgorPCEtLUVOVElUWSBBbHBoYSAiJiN4Mzkx
OyItLT4KKzwhLS1FTlRJVFkgQmV0YSAiJiN4MzkyOyItLT4KKzwhLS1FTlRJVFkgR2FtbWEgIiYj
eDM5MzsiLS0+Cis8IS0tRU5USVRZIERlbHRhICImI3gzOTQ7Ii0tPgorPCEtLUVOVElUWSBFcHNp
bG9uICImI3gzOTU7Ii0tPgorPCEtLUVOVElUWSBaZXRhICImI3gzOTY7Ii0tPgorPCEtLUVOVElU
WSBFdGEgIiYjeDM5NzsiLS0+Cis8IS0tRU5USVRZIFRoZXRhICImI3gzOTg7Ii0tPgorPCEtLUVO
VElUWSBJb3RhICImI3gzOTk7Ii0tPgorPCEtLUVOVElUWSBLYXBwYSAiJiN4MzlBOyItLT4KKzwh
LS1FTlRJVFkgTGFtYmRhICImI3gzOUI7Ii0tPgorPCEtLUVOVElUWSBNdSAiJiN4MzlDOyItLT4K
KzwhLS1FTlRJVFkgTnUgIiYjeDM5RDsiLS0+Cis8IS0tRU5USVRZIFhpICImI3gzOUU7Ii0tPgor
PCEtLUVOVElUWSBPbWljcm9uICImI3gzOUY7Ii0tPgorPCEtLUVOVElUWSBQaSAiJiN4M0EwOyIt
LT4KKzwhLS1FTlRJVFkgUmhvICImI3gzQTE7Ii0tPgorPCEtLUVOVElUWSBTaWdtYSAiJiN4M0Ez
OyItLT4KKzwhLS1FTlRJVFkgVGF1ICImI3gzQTQ7Ii0tPgorPCEtLUVOVElUWSBVcHNpbG9uICIm
I3gzQTU7Ii0tPgorPCEtLUVOVElUWSBQaGkgIiYjeDNBNjsiLS0+Cis8IS0tRU5USVRZIENoaSAi
JiN4M0E3OyItLT4KKzwhLS1FTlRJVFkgUHNpICImI3gzQTg7Ii0tPgorPCEtLUVOVElUWSBPbWVn
YSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgb2htICImI3gzQTk7Ii0tPgorPCEtLUVOVElUWSBh
bHBoYSAiJiN4M0IxOyItLT4KKzwhLS1FTlRJVFkgYmV0YSAiJiN4M0IyOyItLT4KKzwhLS1FTlRJ
VFkgZ2FtbWEgIiYjeDNCMzsiLS0+Cis8IS0tRU5USVRZIGRlbHRhICImI3gzQjQ7Ii0tPgorPCEt
LUVOVElUWSBlcHNpICImI3gzQjU7Ii0tPgorPCEtLUVOVElUWSBlcHNpbG9uICImI3gzQjU7Ii0t
PgorPCEtLUVOVElUWSB6ZXRhICImI3gzQjY7Ii0tPgorPCEtLUVOVElUWSBldGEgIiYjeDNCNzsi
LS0+Cis8IS0tRU5USVRZIHRoZXRhICImI3gzQjg7Ii0tPgorPCEtLUVOVElUWSBpb3RhICImI3gz
Qjk7Ii0tPgorPCEtLUVOVElUWSBrYXBwYSAiJiN4M0JBOyItLT4KKzwhLS1FTlRJVFkgbGFtYmRh
ICImI3gzQkI7Ii0tPgorPCEtLUVOVElUWSBtdSAiJiN4M0JDOyItLT4KKzwhLS1FTlRJVFkgbnUg
IiYjeDNCRDsiLS0+Cis8IS0tRU5USVRZIHhpICImI3gzQkU7Ii0tPgorPCEtLUVOVElUWSBvbWlj
cm9uICImI3gzQkY7Ii0tPgorPCEtLUVOVElUWSBwaSAiJiN4M0MwOyItLT4KKzwhLS1FTlRJVFkg
cmhvICImI3gzQzE7Ii0tPgorPCEtLUVOVElUWSBzaWdtYXYgIiYjeDNDMjsiLS0+Cis8IS0tRU5U
SVRZIHZhcnNpZ21hICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdtYWYgIiYjeDNDMjsiLS0+
Cis8IS0tRU5USVRZIHNpZ21hICImI3gzQzM7Ii0tPgorPCEtLUVOVElUWSB0YXUgIiYjeDNDNDsi
LS0+Cis8IS0tRU5USVRZIHVwc2kgIiYjeDNDNTsiLS0+Cis8IS0tRU5USVRZIHVwc2lsb24gIiYj
eDNDNTsiLS0+Cis8IS0tRU5USVRZIHBoaSAiJiN4M0M2OyItLT4KKzwhLS1FTlRJVFkgY2hpICIm
I3gzQzc7Ii0tPgorPCEtLUVOVElUWSBwc2kgIiYjeDNDODsiLS0+Cis8IS0tRU5USVRZIG9tZWdh
ICImI3gzQzk7Ii0tPgorPCEtLUVOVElUWSB0aGV0YXYgIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZ
IHZhcnRoZXRhICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB0aGV0YXN5bSAiJiN4M0QxOyItLT4K
KzwhLS1FTlRJVFkgVXBzaSAiJiN4M0QyOyItLT4KKzwhLS1FTlRJVFkgdXBzaWggIiYjeDNEMjsi
LS0+Cis8IS0tRU5USVRZIHN0cmFpZ2h0cGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaGl2
ICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSB2YXJwaGkgIiYjeDNENTsiLS0+Cis8IS0tRU5USVRZ
IHBpdiAiJiN4M0Q2OyItLT4KKzwhLS1FTlRJVFkgdmFycGkgIiYjeDNENjsiLS0+Cis8IS0tRU5U
SVRZIEdhbW1hZCAiJiN4M0RDOyItLT4KKzwhLS1FTlRJVFkgZ2FtbWFkICImI3gzREQ7Ii0tPgor
PCEtLUVOVElUWSBkaWdhbW1hICImI3gzREQ7Ii0tPgorPCEtLUVOVElUWSBrYXBwYXYgIiYjeDNG
MDsiLS0+Cis8IS0tRU5USVRZIHZhcmthcHBhICImI3gzRjA7Ii0tPgorPCEtLUVOVElUWSByaG92
ICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSB2YXJyaG8gIiYjeDNGMTsiLS0+Cis8IS0tRU5USVRZ
IGVwc2l2ICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSBzdHJhaWdodGVwc2lsb24gIiYjeDNGNTsi
LS0+Cis8IS0tRU5USVRZIHZhcmVwc2lsb24gIiYjeDNGNTsiLS0+Cis8IS0tRU5USVRZIGJlcHNp
ICImI3gzRjY7Ii0tPgorPCEtLUVOVElUWSBiYWNrZXBzaWxvbiAiJiN4M0Y2OyItLT4KKzwhLS1F
TlRJVFkgSU9jeSAiJiN4NDAxOyItLT4KKzwhLS1FTlRJVFkgREpjeSAiJiN4NDAyOyItLT4KKzwh
LS1FTlRJVFkgR0pjeSAiJiN4NDAzOyItLT4KKzwhLS1FTlRJVFkgSnVrY3kgIiYjeDQwNDsiLS0+
Cis8IS0tRU5USVRZIERTY3kgIiYjeDQwNTsiLS0+Cis8IS0tRU5USVRZIEl1a2N5ICImI3g0MDY7
Ii0tPgorPCEtLUVOVElUWSBZSWN5ICImI3g0MDc7Ii0tPgorPCEtLUVOVElUWSBKc2VyY3kgIiYj
eDQwODsiLS0+Cis8IS0tRU5USVRZIExKY3kgIiYjeDQwOTsiLS0+Cis8IS0tRU5USVRZIE5KY3kg
IiYjeDQwQTsiLS0+Cis8IS0tRU5USVRZIFRTSGN5ICImI3g0MEI7Ii0tPgorPCEtLUVOVElUWSBL
SmN5ICImI3g0MEM7Ii0tPgorPCEtLUVOVElUWSBVYnJjeSAiJiN4NDBFOyItLT4KKzwhLS1FTlRJ
VFkgRFpjeSAiJiN4NDBGOyItLT4KKzwhLS1FTlRJVFkgQWN5ICImI3g0MTA7Ii0tPgorPCEtLUVO
VElUWSBCY3kgIiYjeDQxMTsiLS0+Cis8IS0tRU5USVRZIFZjeSAiJiN4NDEyOyItLT4KKzwhLS1F
TlRJVFkgR2N5ICImI3g0MTM7Ii0tPgorPCEtLUVOVElUWSBEY3kgIiYjeDQxNDsiLS0+Cis8IS0t
RU5USVRZIElFY3kgIiYjeDQxNTsiLS0+Cis8IS0tRU5USVRZIFpIY3kgIiYjeDQxNjsiLS0+Cis8
IS0tRU5USVRZIFpjeSAiJiN4NDE3OyItLT4KKzwhLS1FTlRJVFkgSWN5ICImI3g0MTg7Ii0tPgor
PCEtLUVOVElUWSBKY3kgIiYjeDQxOTsiLS0+Cis8IS0tRU5USVRZIEtjeSAiJiN4NDFBOyItLT4K
KzwhLS1FTlRJVFkgTGN5ICImI3g0MUI7Ii0tPgorPCEtLUVOVElUWSBNY3kgIiYjeDQxQzsiLS0+
Cis8IS0tRU5USVRZIE5jeSAiJiN4NDFEOyItLT4KKzwhLS1FTlRJVFkgT2N5ICImI3g0MUU7Ii0t
PgorPCEtLUVOVElUWSBQY3kgIiYjeDQxRjsiLS0+Cis8IS0tRU5USVRZIFJjeSAiJiN4NDIwOyIt
LT4KKzwhLS1FTlRJVFkgU2N5ICImI3g0MjE7Ii0tPgorPCEtLUVOVElUWSBUY3kgIiYjeDQyMjsi
LS0+Cis8IS0tRU5USVRZIFVjeSAiJiN4NDIzOyItLT4KKzwhLS1FTlRJVFkgRmN5ICImI3g0MjQ7
Ii0tPgorPCEtLUVOVElUWSBLSGN5ICImI3g0MjU7Ii0tPgorPCEtLUVOVElUWSBUU2N5ICImI3g0
MjY7Ii0tPgorPCEtLUVOVElUWSBDSGN5ICImI3g0Mjc7Ii0tPgorPCEtLUVOVElUWSBTSGN5ICIm
I3g0Mjg7Ii0tPgorPCEtLUVOVElUWSBTSENIY3kgIiYjeDQyOTsiLS0+Cis8IS0tRU5USVRZIEhB
UkRjeSAiJiN4NDJBOyItLT4KKzwhLS1FTlRJVFkgWWN5ICImI3g0MkI7Ii0tPgorPCEtLUVOVElU
WSBTT0ZUY3kgIiYjeDQyQzsiLS0+Cis8IS0tRU5USVRZIEVjeSAiJiN4NDJEOyItLT4KKzwhLS1F
TlRJVFkgWVVjeSAiJiN4NDJFOyItLT4KKzwhLS1FTlRJVFkgWUFjeSAiJiN4NDJGOyItLT4KKzwh
LS1FTlRJVFkgYWN5ICImI3g0MzA7Ii0tPgorPCEtLUVOVElUWSBiY3kgIiYjeDQzMTsiLS0+Cis8
IS0tRU5USVRZIHZjeSAiJiN4NDMyOyItLT4KKzwhLS1FTlRJVFkgZ2N5ICImI3g0MzM7Ii0tPgor
PCEtLUVOVElUWSBkY3kgIiYjeDQzNDsiLS0+Cis8IS0tRU5USVRZIGllY3kgIiYjeDQzNTsiLS0+
Cis8IS0tRU5USVRZIHpoY3kgIiYjeDQzNjsiLS0+Cis8IS0tRU5USVRZIHpjeSAiJiN4NDM3OyIt
LT4KKzwhLS1FTlRJVFkgaWN5ICImI3g0Mzg7Ii0tPgorPCEtLUVOVElUWSBqY3kgIiYjeDQzOTsi
LS0+Cis8IS0tRU5USVRZIGtjeSAiJiN4NDNBOyItLT4KKzwhLS1FTlRJVFkgbGN5ICImI3g0M0I7
Ii0tPgorPCEtLUVOVElUWSBtY3kgIiYjeDQzQzsiLS0+Cis8IS0tRU5USVRZIG5jeSAiJiN4NDNE
OyItLT4KKzwhLS1FTlRJVFkgb2N5ICImI3g0M0U7Ii0tPgorPCEtLUVOVElUWSBwY3kgIiYjeDQz
RjsiLS0+Cis8IS0tRU5USVRZIHJjeSAiJiN4NDQwOyItLT4KKzwhLS1FTlRJVFkgc2N5ICImI3g0
NDE7Ii0tPgorPCEtLUVOVElUWSB0Y3kgIiYjeDQ0MjsiLS0+Cis8IS0tRU5USVRZIHVjeSAiJiN4
NDQzOyItLT4KKzwhLS1FTlRJVFkgZmN5ICImI3g0NDQ7Ii0tPgorPCEtLUVOVElUWSBraGN5ICIm
I3g0NDU7Ii0tPgorPCEtLUVOVElUWSB0c2N5ICImI3g0NDY7Ii0tPgorPCEtLUVOVElUWSBjaGN5
ICImI3g0NDc7Ii0tPgorPCEtLUVOVElUWSBzaGN5ICImI3g0NDg7Ii0tPgorPCEtLUVOVElUWSBz
aGNoY3kgIiYjeDQ0OTsiLS0+Cis8IS0tRU5USVRZIGhhcmRjeSAiJiN4NDRBOyItLT4KKzwhLS1F
TlRJVFkgeWN5ICImI3g0NEI7Ii0tPgorPCEtLUVOVElUWSBzb2Z0Y3kgIiYjeDQ0QzsiLS0+Cis8
IS0tRU5USVRZIGVjeSAiJiN4NDREOyItLT4KKzwhLS1FTlRJVFkgeXVjeSAiJiN4NDRFOyItLT4K
KzwhLS1FTlRJVFkgeWFjeSAiJiN4NDRGOyItLT4KKzwhLS1FTlRJVFkgaW9jeSAiJiN4NDUxOyIt
LT4KKzwhLS1FTlRJVFkgZGpjeSAiJiN4NDUyOyItLT4KKzwhLS1FTlRJVFkgZ2pjeSAiJiN4NDUz
OyItLT4KKzwhLS1FTlRJVFkganVrY3kgIiYjeDQ1NDsiLS0+Cis8IS0tRU5USVRZIGRzY3kgIiYj
eDQ1NTsiLS0+Cis8IS0tRU5USVRZIGl1a2N5ICImI3g0NTY7Ii0tPgorPCEtLUVOVElUWSB5aWN5
ICImI3g0NTc7Ii0tPgorPCEtLUVOVElUWSBqc2VyY3kgIiYjeDQ1ODsiLS0+Cis8IS0tRU5USVRZ
IGxqY3kgIiYjeDQ1OTsiLS0+Cis8IS0tRU5USVRZIG5qY3kgIiYjeDQ1QTsiLS0+Cis8IS0tRU5U
SVRZIHRzaGN5ICImI3g0NUI7Ii0tPgorPCEtLUVOVElUWSBramN5ICImI3g0NUM7Ii0tPgorPCEt
LUVOVElUWSB1YnJjeSAiJiN4NDVFOyItLT4KKzwhLS1FTlRJVFkgZHpjeSAiJiN4NDVGOyItLT4K
KzwhLS1FTlRJVFkgZW5zcCAiJiN4MjAwMjsiLS0+Cis8IS0tRU5USVRZIGVtc3AgIiYjeDIwMDM7
Ii0tPgorPCEtLUVOVElUWSBlbXNwMTMgIiYjeDIwMDQ7Ii0tPgorPCEtLUVOVElUWSBlbXNwMTQg
IiYjeDIwMDU7Ii0tPgorPCEtLUVOVElUWSBudW1zcCAiJiN4MjAwNzsiLS0+Cis8IS0tRU5USVRZ
IHB1bmNzcCAiJiN4MjAwODsiLS0+Cis8IS0tRU5USVRZIHRoaW5zcCAiJiN4MjAwOTsiLS0+Cis8
IS0tRU5USVRZIFRoaW5TcGFjZSAiJiN4MjAwOTsiLS0+Cis8IS0tRU5USVRZIGhhaXJzcCAiJiN4
MjAwQTsiLS0+Cis8IS0tRU5USVRZIFZlcnlUaGluU3BhY2UgIiYjeDIwMEE7Ii0tPgorPCEtLUVO
VElUWSBaZXJvV2lkdGhTcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0aXZlVmVy
eVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0aXZlVGhpblNwYWNlICIm
I3gyMDBCOyItLT4KKzwhLS1FTlRJVFkgTmVnYXRpdmVNZWRpdW1TcGFjZSAiJiN4MjAwQjsiLS0+
Cis8IS0tRU5USVRZIE5lZ2F0aXZlVGhpY2tTcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZ
IHp3bmogIiYjeDIwMEM7Ii0tPgorPCEtLUVOVElUWSB6d2ogIiYjeDIwMEQ7Ii0tPgorPCEtLUVO
VElUWSBscm0gIiYjeDIwMEU7Ii0tPgorPCEtLUVOVElUWSBybG0gIiYjeDIwMEY7Ii0tPgorPCEt
LUVOVElUWSBoeXBoZW4gIiYjeDIwMTA7Ii0tPgorPCEtLUVOVElUWSBkYXNoICImI3gyMDEwOyIt
LT4KKzwhLS1FTlRJVFkgbmRhc2ggIiYjeDIwMTM7Ii0tPgorPCEtLUVOVElUWSBtZGFzaCAiJiN4
MjAxNDsiLS0+Cis8IS0tRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiLS0+Cis8IS0tRU5USVRZIFZl
cmJhciAiJiN4MjAxNjsiLS0+Cis8IS0tRU5USVRZIFZlcnQgIiYjeDIwMTY7Ii0tPgorPCEtLUVO
VElUWSBsc3F1byAiJiN4MjAxODsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseVF1b3RlICImI3gy
MDE4OyItLT4KKzwhLS1FTlRJVFkgcnNxdW8gIiYjeDIwMTk7Ii0tPgorPCEtLUVOVElUWSByc3F1
b3IgIiYjeDIwMTk7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5UXVvdGUgIiYjeDIwMTk7Ii0t
PgorPCEtLUVOVElUWSBsc3F1b3IgIiYjeDIwMUE7Ii0tPgorPCEtLUVOVElUWSBzYnF1byAiJiN4
MjAxQTsiLS0+Cis8IS0tRU5USVRZIGxkcXVvICImI3gyMDFDOyItLT4KKzwhLS1FTlRJVFkgT3Bl
bkN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUM7Ii0tPgorPCEtLUVOVElUWSByZHF1byAiJiN4MjAx
RDsiLS0+Cis8IS0tRU5USVRZIHJkcXVvciAiJiN4MjAxRDsiLS0+Cis8IS0tRU5USVRZIENsb3Nl
Q3VybHlEb3VibGVRdW90ZSAiJiN4MjAxRDsiLS0+Cis8IS0tRU5USVRZIGxkcXVvciAiJiN4MjAx
RTsiLS0+Cis8IS0tRU5USVRZIGJkcXVvICImI3gyMDFFOyItLT4KKzwhLS1FTlRJVFkgZGFnZ2Vy
ICImI3gyMDIwOyItLT4KKzwhLS1FTlRJVFkgRGFnZ2VyICImI3gyMDIxOyItLT4KKzwhLS1FTlRJ
VFkgZGRhZ2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGJ1bGwgIiYjeDIwMjI7Ii0tPgor
PCEtLUVOVElUWSBidWxsZXQgIiYjeDIwMjI7Ii0tPgorPCEtLUVOVElUWSBubGRyICImI3gyMDI1
OyItLT4KKzwhLS1FTlRJVFkgaGVsbGlwICImI3gyMDI2OyItLT4KKzwhLS1FTlRJVFkgbWxkciAi
JiN4MjAyNjsiLS0+Cis8IS0tRU5USVRZIHBlcm1pbCAiJiN4MjAzMDsiLS0+Cis8IS0tRU5USVRZ
IHBlcnRlbmsgIiYjeDIwMzE7Ii0tPgorPCEtLUVOVElUWSBwcmltZSAiJiN4MjAzMjsiLS0+Cis8
IS0tRU5USVRZIFByaW1lICImI3gyMDMzOyItLT4KKzwhLS1FTlRJVFkgdHByaW1lICImI3gyMDM0
OyItLT4KKzwhLS1FTlRJVFkgYnByaW1lICImI3gyMDM1OyItLT4KKzwhLS1FTlRJVFkgYmFja3By
aW1lICImI3gyMDM1OyItLT4KKzwhLS1FTlRJVFkgbHNhcXVvICImI3gyMDM5OyItLT4KKzwhLS1F
TlRJVFkgcnNhcXVvICImI3gyMDNBOyItLT4KKzwhLS1FTlRJVFkgb2xpbmUgIiYjeDIwM0U7Ii0t
PgorPCEtLUVOVElUWSBPdmVyQmFyICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgY2FyZXQgIiYj
eDIwNDE7Ii0tPgorPCEtLUVOVElUWSBoeWJ1bGwgIiYjeDIwNDM7Ii0tPgorPCEtLUVOVElUWSBm
cmFzbCAiJiN4MjA0NDsiLS0+Cis8IS0tRU5USVRZIGJzZW1pICImI3gyMDRGOyItLT4KKzwhLS1F
TlRJVFkgcXByaW1lICImI3gyMDU3OyItLT4KKzwhLS1FTlRJVFkgTWVkaXVtU3BhY2UgIiYjeDIw
NUY7Ii0tPgorPCEtLUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYjeDIwMEE7Ii0tPgorPCEt
LUVOVElUWSBOb0JyZWFrICImI3gyMDYwOyItLT4KKzwhLS1FTlRJVFkgQXBwbHlGdW5jdGlvbiAi
JiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIGFmICImI3gyMDYxOyItLT4KKzwhLS1FTlRJVFkgSW52
aXNpYmxlVGltZXMgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBpdCAiJiN4MjA2MjsiLS0+Cis8
IS0tRU5USVRZIEludmlzaWJsZUNvbW1hICImI3gyMDYzOyItLT4KKzwhLS1FTlRJVFkgaWMgIiYj
eDIwNjM7Ii0tPgorPCEtLUVOVElUWSBldXJvICImI3gyMEFDOyItLT4KKzwhLS1FTlRJVFkgdGRv
dCAiJiN4MjBEQjsiLS0+Cis8IS0tRU5USVRZIFRyaXBsZURvdCAiJiN4MjBEQjsiLS0+Cis8IS0t
RU5USVRZIERvdERvdCAiJiN4MjBEQzsiLS0+Cis8IS0tRU5USVRZIENvcGYgIiYjeDIxMDI7Ii0t
PgorPCEtLUVOVElUWSBjb21wbGV4ZXMgIiYjeDIxMDI7Ii0tPgorPCEtLUVOVElUWSBpbmNhcmUg
IiYjeDIxMDU7Ii0tPgorPCEtLUVOVElUWSBnc2NyICImI3gyMTBBOyItLT4KKzwhLS1FTlRJVFkg
aGFtaWx0ICImI3gyMTBCOyItLT4KKzwhLS1FTlRJVFkgSGlsYmVydFNwYWNlICImI3gyMTBCOyIt
LT4KKzwhLS1FTlRJVFkgSHNjciAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhmciAiJiN4MjEw
QzsiLS0+Cis8IS0tRU5USVRZIFBvaW5jYXJlcGxhbmUgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElU
WSBxdWF0ZXJuaW9ucyAiJiN4MjEwRDsiLS0+Cis8IS0tRU5USVRZIEhvcGYgIiYjeDIxMEQ7Ii0t
PgorPCEtLUVOVElUWSBwbGFuY2toICImI3gyMTBFOyItLT4KKzwhLS1FTlRJVFkgcGxhbmNrICIm
I3gyMTBGOyItLT4KKzwhLS1FTlRJVFkgaGJhciAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIHBs
YW5rdiAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIGhzbGFzaCAiJiN4MjEwRjsiLS0+Cis8IS0t
RU5USVRZIElzY3IgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBpbWFnbGluZSAiJiN4MjExMDsi
LS0+Cis8IS0tRU5USVRZIGltYWdlICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgSW0gIiYjeDIx
MTE7Ii0tPgorPCEtLUVOVElUWSBpbWFncGFydCAiJiN4MjExMTsiLS0+Cis8IS0tRU5USVRZIElm
ciAiJiN4MjExMTsiLS0+Cis8IS0tRU5USVRZIExzY3IgIiYjeDIxMTI7Ii0tPgorPCEtLUVOVElU
WSBsYWdyYW4gIiYjeDIxMTI7Ii0tPgorPCEtLUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyIt
LT4KKzwhLS1FTlRJVFkgZWxsICImI3gyMTEzOyItLT4KKzwhLS1FTlRJVFkgTm9wZiAiJiN4MjEx
NTsiLS0+Cis8IS0tRU5USVRZIG5hdHVyYWxzICImI3gyMTE1OyItLT4KKzwhLS1FTlRJVFkgbnVt
ZXJvICImI3gyMTE2OyItLT4KKzwhLS1FTlRJVFkgY29weXNyICImI3gyMTE3OyItLT4KKzwhLS1F
TlRJVFkgd2VpZXJwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgd3AgIiYjeDIxMTg7Ii0tPgor
PCEtLUVOVElUWSBQb3BmICImI3gyMTE5OyItLT4KKzwhLS1FTlRJVFkgcHJpbWVzICImI3gyMTE5
OyItLT4KKzwhLS1FTlRJVFkgcmF0aW9uYWxzICImI3gyMTFBOyItLT4KKzwhLS1FTlRJVFkgUW9w
ZiAiJiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFJzY3IgIiYjeDIxMUI7Ii0tPgorPCEtLUVOVElU
WSByZWFsaW5lICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbCAiJiN4MjExQzsiLS0+Cis8
IS0tRU5USVRZIFJlICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgcmVhbHBhcnQgIiYjeDIxMUM7
Ii0tPgorPCEtLUVOVElUWSBSZnIgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSByZWFscyAiJiN4
MjExRDsiLS0+Cis8IS0tRU5USVRZIFJvcGYgIiYjeDIxMUQ7Ii0tPgorPCEtLUVOVElUWSByeCAi
JiN4MjExRTsiLS0+Cis8IS0tRU5USVRZIHRyYWRlICImI3gyMTIyOyItLT4KKzwhLS1FTlRJVFkg
VFJBREUgIiYjeDIxMjI7Ii0tPgorPCEtLUVOVElUWSBpbnRlZ2VycyAiJiN4MjEyNDsiLS0+Cis8
IS0tRU5USVRZIFpvcGYgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBtaG8gIiYjeDIxMjc7Ii0t
PgorPCEtLUVOVElUWSBaZnIgIiYjeDIxMjg7Ii0tPgorPCEtLUVOVElUWSB6ZWV0cmYgIiYjeDIx
Mjg7Ii0tPgorPCEtLUVOVElUWSBpaW90YSAiJiN4MjEyOTsiLS0+Cis8IS0tRU5USVRZIGJlcm5v
dSAiJiN4MjEyQzsiLS0+Cis8IS0tRU5USVRZIEJlcm5vdWxsaXMgIiYjeDIxMkM7Ii0tPgorPCEt
LUVOVElUWSBCc2NyICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQ2ZyICImI3gyMTJEOyItLT4K
KzwhLS1FTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIGVzY3IgIiYjeDIx
MkY7Ii0tPgorPCEtLUVOVElUWSBFc2NyICImI3gyMTMwOyItLT4KKzwhLS1FTlRJVFkgZXhwZWN0
YXRpb24gIiYjeDIxMzA7Ii0tPgorPCEtLUVOVElUWSBGc2NyICImI3gyMTMxOyItLT4KKzwhLS1F
TlRJVFkgRm91cmllcnRyZiAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIHBobW1hdCAiJiN4MjEz
MzsiLS0+Cis8IS0tRU5USVRZIE1lbGxpbnRyZiAiJiN4MjEzMzsiLS0+Cis8IS0tRU5USVRZIE1z
Y3IgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBvcmRlciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5U
SVRZIG9yZGVyb2YgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvc2NyICImI3gyMTM0OyItLT4K
KzwhLS1FTlRJVFkgYWxlZnN5bSAiJiN4MjEzNTsiLS0+Cis8IS0tRU5USVRZIGFsZXBoICImI3gy
MTM1OyItLT4KKzwhLS1FTlRJVFkgYmV0aCAiJiN4MjEzNjsiLS0+Cis8IS0tRU5USVRZIGdpbWVs
ICImI3gyMTM3OyItLT4KKzwhLS1FTlRJVFkgZGFsZXRoICImI3gyMTM4OyItLT4KKzwhLS1FTlRJ
VFkgQ2FwaXRhbERpZmZlcmVudGlhbEQgIiYjeDIxNDU7Ii0tPgorPCEtLUVOVElUWSBERCAiJiN4
MjE0NTsiLS0+Cis8IS0tRU5USVRZIERpZmZlcmVudGlhbEQgIiYjeDIxNDY7Ii0tPgorPCEtLUVO
VElUWSBkZCAiJiN4MjE0NjsiLS0+Cis8IS0tRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0Nzsi
LS0+Cis8IS0tRU5USVRZIGV4cG9uZW50aWFsZSAiJiN4MjE0NzsiLS0+Cis8IS0tRU5USVRZIGVl
ICImI3gyMTQ3OyItLT4KKzwhLS1FTlRJVFkgSW1hZ2luYXJ5SSAiJiN4MjE0ODsiLS0+Cis8IS0t
RU5USVRZIGlpICImI3gyMTQ4OyItLT4KKzwhLS1FTlRJVFkgZnJhYzEzICImI3gyMTUzOyItLT4K
KzwhLS1FTlRJVFkgZnJhYzIzICImI3gyMTU0OyItLT4KKzwhLS1FTlRJVFkgZnJhYzE1ICImI3gy
MTU1OyItLT4KKzwhLS1FTlRJVFkgZnJhYzI1ICImI3gyMTU2OyItLT4KKzwhLS1FTlRJVFkgZnJh
YzM1ICImI3gyMTU3OyItLT4KKzwhLS1FTlRJVFkgZnJhYzQ1ICImI3gyMTU4OyItLT4KKzwhLS1F
TlRJVFkgZnJhYzE2ICImI3gyMTU5OyItLT4KKzwhLS1FTlRJVFkgZnJhYzU2ICImI3gyMTVBOyIt
LT4KKzwhLS1FTlRJVFkgZnJhYzE4ICImI3gyMTVCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzM4ICIm
I3gyMTVDOyItLT4KKzwhLS1FTlRJVFkgZnJhYzU4ICImI3gyMTVEOyItLT4KKzwhLS1FTlRJVFkg
ZnJhYzc4ICImI3gyMTVFOyItLT4KKzwhLS1FTlRJVFkgbGFyciAiJiN4MjE5MDsiLS0+Cis8IS0t
RU5USVRZIGxlZnRhcnJvdyAiJiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIExlZnRBcnJvdyAiJiN4
MjE5MDsiLS0+Cis8IS0tRU5USVRZIHNsYXJyICImI3gyMTkwOyItLT4KKzwhLS1FTlRJVFkgU2hv
cnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSB1YXJyICImI3gyMTkxOyItLT4K
KzwhLS1FTlRJVFkgdXBhcnJvdyAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIFVwQXJyb3cgIiYj
eDIxOTE7Ii0tPgorPCEtLUVOVElUWSBTaG9ydFVwQXJyb3cgIiYjeDIxOTE7Ii0tPgorPCEtLUVO
VElUWSByYXJyICImI3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5Mjsi
LS0+Cis8IS0tRU5USVRZIFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBzcmFy
ciAiJiN4MjE5MjsiLS0+Cis8IS0tRU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiLS0+
Cis8IS0tRU5USVRZIGRhcnIgIiYjeDIxOTM7Ii0tPgorPCEtLUVOVElUWSBkb3duYXJyb3cgIiYj
eDIxOTM7Ii0tPgorPCEtLUVOVElUWSBEb3duQXJyb3cgIiYjeDIxOTM7Ii0tPgorPCEtLUVOVElU
WSBTaG9ydERvd25BcnJvdyAiJiN4MjE5MzsiLS0+Cis8IS0tRU5USVRZIGhhcnIgIiYjeDIxOTQ7
Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAiJiN4MjE5NDsiLS0+Cis8IS0tRU5USVRZ
IExlZnRSaWdodEFycm93ICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgdmFyciAiJiN4MjE5NTsi
LS0+Cis8IS0tRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyItLT4KKzwhLS1FTlRJVFkgVXBE
b3duQXJyb3cgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSBud2FyciAiJiN4MjE5NjsiLS0+Cis8
IS0tRU5USVRZIFVwcGVyTGVmdEFycm93ICImI3gyMTk2OyItLT4KKzwhLS1FTlRJVFkgbndhcnJv
dyAiJiN4MjE5NjsiLS0+Cis8IS0tRU5USVRZIG5lYXJyICImI3gyMTk3OyItLT4KKzwhLS1FTlRJ
VFkgVXBwZXJSaWdodEFycm93ICImI3gyMTk3OyItLT4KKzwhLS1FTlRJVFkgbmVhcnJvdyAiJiN4
MjE5NzsiLS0+Cis8IS0tRU5USVRZIHNlYXJyICImI3gyMTk4OyItLT4KKzwhLS1FTlRJVFkgc2Vh
cnJvdyAiJiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIExvd2VyUmlnaHRBcnJvdyAiJiN4MjE5ODsi
LS0+Cis8IS0tRU5USVRZIHN3YXJyICImI3gyMTk5OyItLT4KKzwhLS1FTlRJVFkgc3dhcnJvdyAi
JiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIExvd2VyTGVmdEFycm93ICImI3gyMTk5OyItLT4KKzwh
LS1FTlRJVFkgbmxhcnIgIiYjeDIxOUE7Ii0tPgorPCEtLUVOVElUWSBubGVmdGFycm93ICImI3gy
MTlBOyItLT4KKzwhLS1FTlRJVFkgbnJhcnIgIiYjeDIxOUI7Ii0tPgorPCEtLUVOVElUWSBucmln
aHRhcnJvdyAiJiN4MjE5QjsiLS0+Cis8IS0tRU5USVRZIHJhcnJ3ICImI3gyMTlEOyItLT4KKzwh
LS1FTlRJVFkgcmlnaHRzcXVpZ2Fycm93ICImI3gyMTlEOyItLT4KKzwhLS1FTlRJVFkgbnJhcnJ3
ICImI3gyMTlEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIExhcnIgIiYjeDIxOUU7Ii0tPgorPCEt
LUVOVElUWSB0d29oZWFkbGVmdGFycm93ICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgVWFyciAi
JiN4MjE5RjsiLS0+Cis8IS0tRU5USVRZIFJhcnIgIiYjeDIxQTA7Ii0tPgorPCEtLUVOVElUWSB0
d29oZWFkcmlnaHRhcnJvdyAiJiN4MjFBMDsiLS0+Cis8IS0tRU5USVRZIERhcnIgIiYjeDIxQTE7
Ii0tPgorPCEtLUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJy
b3d0YWlsICImI3gyMUEyOyItLT4KKzwhLS1FTlRJVFkgcmFycnRsICImI3gyMUEzOyItLT4KKzwh
LS1FTlRJVFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VGVl
QXJyb3cgIiYjeDIxQTQ7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9sZWZ0ICImI3gyMUE0OyItLT4K
KzwhLS1FTlRJVFkgVXBUZWVBcnJvdyAiJiN4MjFBNTsiLS0+Cis8IS0tRU5USVRZIG1hcHN0b3Vw
ICImI3gyMUE1OyItLT4KKzwhLS1FTlRJVFkgbWFwICImI3gyMUE2OyItLT4KKzwhLS1FTlRJVFkg
UmlnaHRUZWVBcnJvdyAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIG1hcHN0byAiJiN4MjFBNjsi
LS0+Cis8IS0tRU5USVRZIERvd25UZWVBcnJvdyAiJiN4MjFBNzsiLS0+Cis8IS0tRU5USVRZIG1h
cHN0b2Rvd24gIiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBsYXJyaGsgIiYjeDIxQTk7Ii0tPgor
PCEtLUVOVElUWSBob29rbGVmdGFycm93ICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgcmFycmhr
ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgaG9va3JpZ2h0YXJyb3cgIiYjeDIxQUE7Ii0tPgor
PCEtLUVOVElUWSBsYXJybHAgIiYjeDIxQUI7Ii0tPgorPCEtLUVOVElUWSBsb29wYXJyb3dsZWZ0
ICImI3gyMUFCOyItLT4KKzwhLS1FTlRJVFkgcmFycmxwICImI3gyMUFDOyItLT4KKzwhLS1FTlRJ
VFkgbG9vcGFycm93cmlnaHQgIiYjeDIxQUM7Ii0tPgorPCEtLUVOVElUWSBoYXJydyAiJiN4MjFB
RDsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodHNxdWlnYXJyb3cgIiYjeDIxQUQ7Ii0tPgorPCEt
LUVOVElUWSBuaGFyciAiJiN4MjFBRTsiLS0+Cis8IS0tRU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAi
JiN4MjFBRTsiLS0+Cis8IS0tRU5USVRZIGxzaCAiJiN4MjFCMDsiLS0+Cis8IS0tRU5USVRZIExz
aCAiJiN4MjFCMDsiLS0+Cis8IS0tRU5USVRZIHJzaCAiJiN4MjFCMTsiLS0+Cis8IS0tRU5USVRZ
IFJzaCAiJiN4MjFCMTsiLS0+Cis8IS0tRU5USVRZIGxkc2ggIiYjeDIxQjI7Ii0tPgorPCEtLUVO
VElUWSByZHNoICImI3gyMUIzOyItLT4KKzwhLS1FTlRJVFkgY3JhcnIgIiYjeDIxQjU7Ii0tPgor
PCEtLUVOVElUWSBjdWxhcnIgIiYjeDIxQjY7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93bGVm
dCAiJiN4MjFCNjsiLS0+Cis8IS0tRU5USVRZIGN1cmFyciAiJiN4MjFCNzsiLS0+Cis8IS0tRU5U
SVRZIGN1cnZlYXJyb3dyaWdodCAiJiN4MjFCNzsiLS0+Cis8IS0tRU5USVRZIG9sYXJyICImI3gy
MUJBOyItLT4KKzwhLS1FTlRJVFkgY2lyY2xlYXJyb3dsZWZ0ICImI3gyMUJBOyItLT4KKzwhLS1F
TlRJVFkgb3JhcnIgIiYjeDIxQkI7Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVhcnJvd3JpZ2h0ICIm
I3gyMUJCOyItLT4KKzwhLS1FTlRJVFkgbGhhcnUgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElUWSBM
ZWZ0VmVjdG9yICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgbGVmdGhhcnBvb251cCAiJiN4MjFC
QzsiLS0+Cis8IS0tRU5USVRZIGxoYXJkICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgbGVmdGhh
cnBvb25kb3duICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3IgIiYjeDIx
QkQ7Ii0tPgorPCEtLUVOVElUWSB1aGFyciAiJiN4MjFCRTsiLS0+Cis8IS0tRU5USVRZIHVwaGFy
cG9vbnJpZ2h0ICImI3gyMUJFOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFC
RTsiLS0+Cis8IS0tRU5USVRZIHVoYXJsICImI3gyMUJGOyItLT4KKzwhLS1FTlRJVFkgdXBoYXJw
b29ubGVmdCAiJiN4MjFCRjsiLS0+Cis8IS0tRU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsi
LS0+Cis8IS0tRU5USVRZIHJoYXJ1ICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0
b3IgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaWdodGhhcnBvb251cCAiJiN4MjFDMDsiLS0+
Cis8IS0tRU5USVRZIHJoYXJkICImI3gyMUMxOyItLT4KKzwhLS1FTlRJVFkgcmlnaHRoYXJwb29u
ZG93biAiJiN4MjFDMTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFZlY3RvciAiJiN4MjFDMTsi
LS0+Cis8IS0tRU5USVRZIGRoYXJyICImI3gyMUMyOyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3du
VmVjdG9yICImI3gyMUMyOyItLT4KKzwhLS1FTlRJVFkgZG93bmhhcnBvb25yaWdodCAiJiN4MjFD
MjsiLS0+Cis8IS0tRU5USVRZIGRoYXJsICImI3gyMUMzOyItLT4KKzwhLS1FTlRJVFkgTGVmdERv
d25WZWN0b3IgIiYjeDIxQzM7Ii0tPgorPCEtLUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIx
QzM7Ii0tPgorPCEtLUVOVElUWSBybGFyciAiJiN4MjFDNDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0
bGVmdGFycm93cyAiJiN4MjFDNDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cg
IiYjeDIxQzQ7Ii0tPgorPCEtLUVOVElUWSB1ZGFyciAiJiN4MjFDNTsiLS0+Cis8IS0tRU5USVRZ
IFVwQXJyb3dEb3duQXJyb3cgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBscmFyciAiJiN4MjFD
NjsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodGFycm93cyAiJiN4MjFDNjsiLS0+Cis8IS0tRU5U
SVRZIExlZnRBcnJvd1JpZ2h0QXJyb3cgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBsbGFyciAi
JiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIGxlZnRsZWZ0YXJyb3dzICImI3gyMUM3OyItLT4KKzwh
LS1FTlRJVFkgdXVhcnIgIiYjeDIxQzg7Ii0tPgorPCEtLUVOVElUWSB1cHVwYXJyb3dzICImI3gy
MUM4OyItLT4KKzwhLS1FTlRJVFkgcnJhcnIgIiYjeDIxQzk7Ii0tPgorPCEtLUVOVElUWSByaWdo
dHJpZ2h0YXJyb3dzICImI3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ii0t
PgorPCEtLUVOVElUWSBkb3duZG93bmFycm93cyAiJiN4MjFDQTsiLS0+Cis8IS0tRU5USVRZIGxy
aGFyICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgUmV2ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNC
OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJpZ2h0aGFycG9vbnMgIiYjeDIxQ0I7Ii0tPgorPCEtLUVO
VElUWSBybGhhciAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0bGVmdGhhcnBvb25zICIm
I3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgRXF1aWxpYnJpdW0gIiYjeDIxQ0M7Ii0tPgorPCEtLUVO
VElUWSBubEFyciAiJiN4MjFDRDsiLS0+Cis8IS0tRU5USVRZIG5MZWZ0YXJyb3cgIiYjeDIxQ0Q7
Ii0tPgorPCEtLUVOVElUWSBuaEFyciAiJiN4MjFDRTsiLS0+Cis8IS0tRU5USVRZIG5MZWZ0cmln
aHRhcnJvdyAiJiN4MjFDRTsiLS0+Cis8IS0tRU5USVRZIG5yQXJyICImI3gyMUNGOyItLT4KKzwh
LS1FTlRJVFkgblJpZ2h0YXJyb3cgIiYjeDIxQ0Y7Ii0tPgorPCEtLUVOVElUWSBsQXJyICImI3gy
MUQwOyItLT4KKzwhLS1FTlRJVFkgTGVmdGFycm93ICImI3gyMUQwOyItLT4KKzwhLS1FTlRJVFkg
RG91YmxlTGVmdEFycm93ICImI3gyMUQwOyItLT4KKzwhLS1FTlRJVFkgdUFyciAiJiN4MjFEMTsi
LS0+Cis8IS0tRU5USVRZIFVwYXJyb3cgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVV
cEFycm93ICImI3gyMUQxOyItLT4KKzwhLS1FTlRJVFkgckFyciAiJiN4MjFEMjsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBJbXBsaWVzICImI3gy
MUQyOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlUmlnaHRBcnJvdyAiJiN4MjFEMjsiLS0+Cis8IS0t
RU5USVRZIGRBcnIgIiYjeDIxRDM7Ii0tPgorPCEtLUVOVElUWSBEb3duYXJyb3cgIiYjeDIxRDM7
Ii0tPgorPCEtLUVOVElUWSBEb3VibGVEb3duQXJyb3cgIiYjeDIxRDM7Ii0tPgorPCEtLUVOVElU
WSBoQXJyICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgTGVmdHJpZ2h0YXJyb3cgIiYjeDIxRDQ7
Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0UmlnaHRBcnJvdyAiJiN4MjFENDsiLS0+Cis8IS0t
RU5USVRZIGlmZiAiJiN4MjFENDsiLS0+Cis8IS0tRU5USVRZIHZBcnIgIiYjeDIxRDU7Ii0tPgor
PCEtLUVOVElUWSBVcGRvd25hcnJvdyAiJiN4MjFENTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVVw
RG93bkFycm93ICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgbndBcnIgIiYjeDIxRDY7Ii0tPgor
PCEtLUVOVElUWSBuZUFyciAiJiN4MjFENzsiLS0+Cis8IS0tRU5USVRZIHNlQXJyICImI3gyMUQ4
OyItLT4KKzwhLS1FTlRJVFkgc3dBcnIgIiYjeDIxRDk7Ii0tPgorPCEtLUVOVElUWSBsQWFyciAi
JiN4MjFEQTsiLS0+Cis8IS0tRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ii0tPgorPCEtLUVO
VElUWSByQWFyciAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZIFJyaWdodGFycm93ICImI3gyMURC
OyItLT4KKzwhLS1FTlRJVFkgemlncmFyciAiJiN4MjFERDsiLS0+Cis8IS0tRU5USVRZIGxhcnJi
ICImI3gyMUU0OyItLT4KKzwhLS1FTlRJVFkgTGVmdEFycm93QmFyICImI3gyMUU0OyItLT4KKzwh
LS1FTlRJVFkgcmFycmIgIiYjeDIxRTU7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93QmFyICIm
I3gyMUU1OyItLT4KKzwhLS1FTlRJVFkgZHVhcnIgIiYjeDIxRjU7Ii0tPgorPCEtLUVOVElUWSBE
b3duQXJyb3dVcEFycm93ICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgbG9hcnIgIiYjeDIxRkQ7
Ii0tPgorPCEtLUVOVElUWSByb2FyciAiJiN4MjFGRTsiLS0+Cis8IS0tRU5USVRZIGhvYXJyICIm
I3gyMUZGOyItLT4KKzwhLS1FTlRJVFkgZm9yYWxsICImI3gyMjAwOyItLT4KKzwhLS1FTlRJVFkg
Rm9yQWxsICImI3gyMjAwOyItLT4KKzwhLS1FTlRJVFkgY29tcCAiJiN4MjIwMTsiLS0+Cis8IS0t
RU5USVRZIGNvbXBsZW1lbnQgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBwYXJ0ICImI3gyMjAy
OyItLT4KKzwhLS1FTlRJVFkgUGFydGlhbEQgIiYjeDIyMDI7Ii0tPgorPCEtLUVOVElUWSBucGFy
dCAiJiN4MjIwMjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBleGlzdCAiJiN4MjIwMzsiLS0+Cis8
IS0tRU5USVRZIEV4aXN0cyAiJiN4MjIwMzsiLS0+Cis8IS0tRU5USVRZIG5leGlzdCAiJiN4MjIw
NDsiLS0+Cis8IS0tRU5USVRZIE5vdEV4aXN0cyAiJiN4MjIwNDsiLS0+Cis8IS0tRU5USVRZIG5l
eGlzdHMgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBlbXB0eSAiJiN4MjIwNTsiLS0+Cis8IS0t
RU5USVRZIGVtcHR5c2V0ICImI3gyMjA1OyItLT4KKzwhLS1FTlRJVFkgZW1wdHl2ICImI3gyMjA1
OyItLT4KKzwhLS1FTlRJVFkgdmFybm90aGluZyAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIG5h
YmxhICImI3gyMjA3OyItLT4KKzwhLS1FTlRJVFkgRGVsICImI3gyMjA3OyItLT4KKzwhLS1FTlRJ
VFkgaXNpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIGlzaW52ICImI3gyMjA4OyItLT4KKzwh
LS1FTlRJVFkgRWxlbWVudCAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIGluICImI3gyMjA4OyIt
LT4KKzwhLS1FTlRJVFkgbm90aW4gIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBOb3RFbGVtZW50
ICImI3gyMjA5OyItLT4KKzwhLS1FTlRJVFkgbm90aW52YSAiJiN4MjIwOTsiLS0+Cis8IS0tRU5U
SVRZIG5pdiAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VFbGVtZW50ICImI3gyMjBC
OyItLT4KKzwhLS1FTlRJVFkgbmkgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBTdWNoVGhhdCAi
JiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIG5vdG5pICImI3gyMjBDOyItLT4KKzwhLS1FTlRJVFkg
bm90bml2YSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIE5vdFJldmVyc2VFbGVtZW50ICImI3gy
MjBDOyItLT4KKzwhLS1FTlRJVFkgcHJvZCAiJiN4MjIwRjsiLS0+Cis8IS0tRU5USVRZIFByb2R1
Y3QgIiYjeDIyMEY7Ii0tPgorPCEtLUVOVElUWSBjb3Byb2QgIiYjeDIyMTA7Ii0tPgorPCEtLUVO
VElUWSBDb3Byb2R1Y3QgIiYjeDIyMTA7Ii0tPgorPCEtLUVOVElUWSBzdW0gIiYjeDIyMTE7Ii0t
PgorPCEtLUVOVElUWSBTdW0gIiYjeDIyMTE7Ii0tPgorPCEtLUVOVElUWSBtaW51cyAiJiN4MjIx
MjsiLS0+Cis8IS0tRU5USVRZIG1ucGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIG1wICIm
I3gyMjEzOyItLT4KKzwhLS1FTlRJVFkgTWludXNQbHVzICImI3gyMjEzOyItLT4KKzwhLS1FTlRJ
VFkgcGx1c2RvICImI3gyMjE0OyItLT4KKzwhLS1FTlRJVFkgZG90cGx1cyAiJiN4MjIxNDsiLS0+
Cis8IS0tRU5USVRZIHNldG1uICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc2V0bWludXMgIiYj
eDIyMTY7Ii0tPgorPCEtLUVOVElUWSBCYWNrc2xhc2ggIiYjeDIyMTY7Ii0tPgorPCEtLUVOVElU
WSBzc2V0bW4gIiYjeDIyMTY7Ii0tPgorPCEtLUVOVElUWSBzbWFsbHNldG1pbnVzICImI3gyMjE2
OyItLT4KKzwhLS1FTlRJVFkgbG93YXN0ICImI3gyMjE3OyItLT4KKzwhLS1FTlRJVFkgY29tcGZu
ICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgU21hbGxDaXJjbGUgIiYjeDIyMTg7Ii0tPgorPCEt
LUVOVElUWSByYWRpYyAiJiN4MjIxQTsiLS0+Cis8IS0tRU5USVRZIFNxcnQgIiYjeDIyMUE7Ii0t
PgorPCEtLUVOVElUWSBwcm9wICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgcHJvcHRvICImI3gy
MjFEOyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFEOyItLT4KKzwhLS1FTlRJ
VFkgdnByb3AgIiYjeDIyMUQ7Ii0tPgorPCEtLUVOVElUWSB2YXJwcm9wdG8gIiYjeDIyMUQ7Ii0t
PgorPCEtLUVOVElUWSBpbmZpbiAiJiN4MjIxRTsiLS0+Cis8IS0tRU5USVRZIGFuZ3J0ICImI3gy
MjFGOyItLT4KKzwhLS1FTlRJVFkgYW5nICImI3gyMjIwOyItLT4KKzwhLS1FTlRJVFkgYW5nbGUg
IiYjeDIyMjA7Ii0tPgorPCEtLUVOVElUWSBuYW5nICImI3gyMjIwOyYjeDIwRDI7Ii0tPgorPCEt
LUVOVElUWSBhbmdtc2QgIiYjeDIyMjE7Ii0tPgorPCEtLUVOVElUWSBtZWFzdXJlZGFuZ2xlICIm
I3gyMjIxOyItLT4KKzwhLS1FTlRJVFkgYW5nc3BoICImI3gyMjIyOyItLT4KKzwhLS1FTlRJVFkg
bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxCYXIgIiYjeDIyMjM7Ii0tPgor
PCEtLUVOVElUWSBzbWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc2hvcnRtaWQgIiYjeDIy
MjM7Ii0tPgorPCEtLUVOVElUWSBubWlkICImI3gyMjI0OyItLT4KKzwhLS1FTlRJVFkgTm90VmVy
dGljYWxCYXIgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc21pZCAiJiN4MjIyNDsiLS0+Cis8
IS0tRU5USVRZIG5zaG9ydG1pZCAiJiN4MjIyNDsiLS0+Cis8IS0tRU5USVRZIHBhciAiJiN4MjIy
NTsiLS0+Cis8IS0tRU5USVRZIHBhcmFsbGVsICImI3gyMjI1OyItLT4KKzwhLS1FTlRJVFkgRG91
YmxlVmVydGljYWxCYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBzcGFyICImI3gyMjI1OyIt
LT4KKzwhLS1FTlRJVFkgc2hvcnRwYXJhbGxlbCAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIG5w
YXIgIiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBucGFyYWxsZWwgIiYjeDIyMjY7Ii0tPgorPCEt
LUVOVElUWSBOb3REb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZIG5z
cGFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgbnNob3J0cGFyYWxsZWwgIiYjeDIyMjY7Ii0t
PgorPCEtLUVOVElUWSBhbmQgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElUWSB3ZWRnZSAiJiN4MjIy
NzsiLS0+Cis8IS0tRU5USVRZIG9yICImI3gyMjI4OyItLT4KKzwhLS1FTlRJVFkgdmVlICImI3gy
MjI4OyItLT4KKzwhLS1FTlRJVFkgY2FwICImI3gyMjI5OyItLT4KKzwhLS1FTlRJVFkgY2FwcyAi
JiN4MjIyOTsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3VwICImI3gyMjJBOyItLT4KKzwhLS1F
TlRJVFkgY3VwcyAiJiN4MjIyQTsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgaW50ICImI3gyMjJC
OyItLT4KKzwhLS1FTlRJVFkgSW50ZWdyYWwgIiYjeDIyMkI7Ii0tPgorPCEtLUVOVElUWSBJbnQg
IiYjeDIyMkM7Ii0tPgorPCEtLUVOVElUWSB0aW50ICImI3gyMjJEOyItLT4KKzwhLS1FTlRJVFkg
aWlpbnQgIiYjeDIyMkQ7Ii0tPgorPCEtLUVOVElUWSBjb25pbnQgIiYjeDIyMkU7Ii0tPgorPCEt
LUVOVElUWSBvaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgQ29udG91ckludGVncmFsICIm
I3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgQ29uaW50ICImI3gyMjJGOyItLT4KKzwhLS1FTlRJVFkg
RG91YmxlQ29udG91ckludGVncmFsICImI3gyMjJGOyItLT4KKzwhLS1FTlRJVFkgQ2NvbmludCAi
JiN4MjIzMDsiLS0+Cis8IS0tRU5USVRZIGN3aW50ICImI3gyMjMxOyItLT4KKzwhLS1FTlRJVFkg
Y3djb25pbnQgIiYjeDIyMzI7Ii0tPgorPCEtLUVOVElUWSBDbG9ja3dpc2VDb250b3VySW50ZWdy
YWwgIiYjeDIyMzI7Ii0tPgorPCEtLUVOVElUWSBhd2NvbmludCAiJiN4MjIzMzsiLS0+Cis8IS0t
RU5USVRZIENvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWwgIiYjeDIyMzM7Ii0tPgorPCEt
LUVOVElUWSB0aGVyZTQgIiYjeDIyMzQ7Ii0tPgorPCEtLUVOVElUWSB0aGVyZWZvcmUgIiYjeDIy
MzQ7Ii0tPgorPCEtLUVOVElUWSBUaGVyZWZvcmUgIiYjeDIyMzQ7Ii0tPgorPCEtLUVOVElUWSBi
ZWNhdXMgIiYjeDIyMzU7Ii0tPgorPCEtLUVOVElUWSBiZWNhdXNlICImI3gyMjM1OyItLT4KKzwh
LS1FTlRJVFkgQmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIHJhdGlvICImI3gyMjM2
OyItLT4KKzwhLS1FTlRJVFkgQ29sb24gIiYjeDIyMzc7Ii0tPgorPCEtLUVOVElUWSBQcm9wb3J0
aW9uICImI3gyMjM3OyItLT4KKzwhLS1FTlRJVFkgbWludXNkICImI3gyMjM4OyItLT4KKzwhLS1F
TlRJVFkgZG90bWludXMgIiYjeDIyMzg7Ii0tPgorPCEtLUVOVElUWSBtRERvdCAiJiN4MjIzQTsi
LS0+Cis8IS0tRU5USVRZIGhvbXRodCAiJiN4MjIzQjsiLS0+Cis8IS0tRU5USVRZIHNpbSAiJiN4
MjIzQzsiLS0+Cis8IS0tRU5USVRZIFRpbGRlICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgdGhr
c2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgdGhpY2tzaW0gIiYjeDIyM0M7Ii0tPgorPCEt
LUVOVElUWSBudnNpbSAiJiN4MjIzQzsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYnNpbSAiJiN4
MjIzRDsiLS0+Cis8IS0tRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVOVElUWSBy
YWNlICImI3gyMjNEOyYjeDMzMTsiLS0+Cis8IS0tRU5USVRZIGFjICImI3gyMjNFOyItLT4KKzwh
LS1FTlRJVFkgbXN0cG9zICImI3gyMjNFOyItLT4KKzwhLS1FTlRJVFkgYWNFICImI3gyMjNFOyYj
eDMzMzsiLS0+Cis8IS0tRU5USVRZIGFjZCAiJiN4MjIzRjsiLS0+Cis8IS0tRU5USVRZIHdyZWF0
aCAiJiN4MjI0MDsiLS0+Cis8IS0tRU5USVRZIFZlcnRpY2FsVGlsZGUgIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSB3ciAiJiN4MjI0MDsiLS0+Cis8IS0tRU5USVRZIG5zaW0gIiYjeDIyNDE7Ii0t
PgorPCEtLUVOVElUWSBOb3RUaWxkZSAiJiN4MjI0MTsiLS0+Cis8IS0tRU5USVRZIGVzaW0gIiYj
eDIyNDI7Ii0tPgorPCEtLUVOVElUWSBFcXVhbFRpbGRlICImI3gyMjQyOyItLT4KKzwhLS1FTlRJ
VFkgZXFzaW0gIiYjeDIyNDI7Ii0tPgorPCEtLUVOVElUWSBOb3RFcXVhbFRpbGRlICImI3gyMjQy
OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIHNpbWUgIiYjeDIyNDM7Ii0tPgorPCEtLUVOVElUWSBUaWxkZUVxdWFsICImI3gyMjQz
OyItLT4KKzwhLS1FTlRJVFkgc2ltZXEgIiYjeDIyNDM7Ii0tPgorPCEtLUVOVElUWSBuc2ltZSAi
JiN4MjI0NDsiLS0+Cis8IS0tRU5USVRZIG5zaW1lcSAiJiN4MjI0NDsiLS0+Cis8IS0tRU5USVRZ
IE5vdFRpbGRlRXF1YWwgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBjb25nICImI3gyMjQ1OyIt
LT4KKzwhLS1FTlRJVFkgVGlsZGVGdWxsRXF1YWwgIiYjeDIyNDU7Ii0tPgorPCEtLUVOVElUWSBz
aW1uZSAiJiN4MjI0NjsiLS0+Cis8IS0tRU5USVRZIG5jb25nICImI3gyMjQ3OyItLT4KKzwhLS1F
TlRJVFkgTm90VGlsZGVGdWxsRXF1YWwgIiYjeDIyNDc7Ii0tPgorPCEtLUVOVElUWSBhc3ltcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIGFwICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgVGls
ZGVUaWxkZSAiJiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIGFwcHJveCAiJiN4MjI0ODsiLS0+Cis8
IS0tRU5USVRZIHRoa2FwICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgdGhpY2thcHByb3ggIiYj
eDIyNDg7Ii0tPgorPCEtLUVOVElUWSBuYXAgIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBOb3RU
aWxkZVRpbGRlICImI3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgbmFwcHJveCAiJiN4MjI0OTsiLS0+
Cis8IS0tRU5USVRZIGFwZSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5USVRZIGFwcHJveGVxICImI3gy
MjRBOyItLT4KKzwhLS1FTlRJVFkgYXBpZCAiJiN4MjI0QjsiLS0+Cis8IS0tRU5USVRZIG5hcGlk
ICImI3gyMjRCOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGJjb25nICImI3gyMjRDOyItLT4KKzwh
LS1FTlRJVFkgYmFja2NvbmcgIiYjeDIyNEM7Ii0tPgorPCEtLUVOVElUWSBhc3ltcGVxICImI3gy
MjREOyItLT4KKzwhLS1FTlRJVFkgQ3VwQ2FwICImI3gyMjREOyItLT4KKzwhLS1FTlRJVFkgbnZh
cCAiJiN4MjI0RDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYnVtcCAiJiN4MjI0RTsiLS0+Cis8
IS0tRU5USVRZIEh1bXBEb3duSHVtcCAiJiN4MjI0RTsiLS0+Cis8IS0tRU5USVRZIEJ1bXBlcSAi
JiN4MjI0RTsiLS0+Cis8IS0tRU5USVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBuYnVtcCAiJiN4MjI0RTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBi
dW1wZSAiJiN4MjI0RjsiLS0+Cis8IS0tRU5USVRZIEh1bXBFcXVhbCAiJiN4MjI0RjsiLS0+Cis8
IS0tRU5USVRZIGJ1bXBlcSAiJiN4MjI0RjsiLS0+Cis8IS0tRU5USVRZIG5idW1wZSAiJiN4MjI0
RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RIdW1wRXF1YWwgIiYjeDIyNEY7JiN4MzM4OyIt
LT4KKzwhLS1FTlRJVFkgZXNkb3QgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBEb3RFcXVhbCAi
JiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIGRvdGVxICImI3gyMjUwOyItLT4KKzwhLS1FTlRJVFkg
bmVkb3QgIiYjeDIyNTA7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgZURvdCAiJiN4MjI1MTsiLS0+
Cis8IS0tRU5USVRZIGRvdGVxZG90ICImI3gyMjUxOyItLT4KKzwhLS1FTlRJVFkgZWZEb3QgIiYj
eDIyNTI7Ii0tPgorPCEtLUVOVElUWSBmYWxsaW5nZG90c2VxICImI3gyMjUyOyItLT4KKzwhLS1F
TlRJVFkgZXJEb3QgIiYjeDIyNTM7Ii0tPgorPCEtLUVOVElUWSByaXNpbmdkb3RzZXEgIiYjeDIy
NTM7Ii0tPgorPCEtLUVOVElUWSBjb2xvbmUgIiYjeDIyNTQ7Ii0tPgorPCEtLUVOVElUWSBjb2xv
bmVxICImI3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgQXNzaWduICImI3gyMjU0OyItLT4KKzwhLS1F
TlRJVFkgZWNvbG9uICImI3gyMjU1OyItLT4KKzwhLS1FTlRJVFkgZXFjb2xvbiAiJiN4MjI1NTsi
LS0+Cis8IS0tRU5USVRZIGVjaXIgIiYjeDIyNTY7Ii0tPgorPCEtLUVOVElUWSBlcWNpcmMgIiYj
eDIyNTY7Ii0tPgorPCEtLUVOVElUWSBjaXJlICImI3gyMjU3OyItLT4KKzwhLS1FTlRJVFkgY2ly
Y2VxICImI3gyMjU3OyItLT4KKzwhLS1FTlRJVFkgd2VkZ2VxICImI3gyMjU5OyItLT4KKzwhLS1F
TlRJVFkgdmVlZXEgIiYjeDIyNUE7Ii0tPgorPCEtLUVOVElUWSB0cmllICImI3gyMjVDOyItLT4K
KzwhLS1FTlRJVFkgdHJpYW5nbGVxICImI3gyMjVDOyItLT4KKzwhLS1FTlRJVFkgZXF1ZXN0ICIm
I3gyMjVGOyItLT4KKzwhLS1FTlRJVFkgcXVlc3RlcSAiJiN4MjI1RjsiLS0+Cis8IS0tRU5USVRZ
IG5lICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgTm90RXF1YWwgIiYjeDIyNjA7Ii0tPgorPCEt
LUVOVElUWSBlcXVpdiAiJiN4MjI2MTsiLS0+Cis8IS0tRU5USVRZIENvbmdydWVudCAiJiN4MjI2
MTsiLS0+Cis8IS0tRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4MjBFNTsiLS0+Cis8IS0tRU5U
SVRZIG5lcXVpdiAiJiN4MjI2MjsiLS0+Cis8IS0tRU5USVRZIE5vdENvbmdydWVudCAiJiN4MjI2
MjsiLS0+Cis8IS0tRU5USVRZIGxlICImI3gyMjY0OyItLT4KKzwhLS1FTlRJVFkgbGVxICImI3gy
MjY0OyItLT4KKzwhLS1FTlRJVFkgbnZsZSAiJiN4MjI2NDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJ
VFkgZ2UgIiYjeDIyNjU7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWwgIiYjeDIyNjU7Ii0t
PgorPCEtLUVOVElUWSBnZXEgIiYjeDIyNjU7Ii0tPgorPCEtLUVOVElUWSBudmdlICImI3gyMjY1
OyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBsRSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIExl
c3NGdWxsRXF1YWwgIiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBsZXFxICImI3gyMjY2OyItLT4K
KzwhLS1FTlRJVFkgbmxFICImI3gyMjY2OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5sZXFxICIm
I3gyMjY2OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdFICImI3gyMjY3OyItLT4KKzwhLS1FTlRJ
VFkgR3JlYXRlckZ1bGxFcXVhbCAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIGdlcXEgIiYjeDIy
Njc7Ii0tPgorPCEtLUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkg
bmdlcXEgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlckZ1bGxFcXVh
bCAiJiN4MjI2NzsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBsbkUgIiYjeDIyNjg7Ii0tPgorPCEt
LUVOVElUWSBsbmVxcSAiJiN4MjI2ODsiLS0+Cis8IS0tRU5USVRZIGx2bkUgIiYjeDIyNjg7JiN4
RkUwMDsiLS0+Cis8IS0tRU5USVRZIGx2ZXJ0bmVxcSAiJiN4MjI2ODsmI3hGRTAwOyItLT4KKzwh
LS1FTlRJVFkgZ25FICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ25lcXEgIiYjeDIyNjk7Ii0t
PgorPCEtLUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBndmVy
dG5lcXEgIiYjeDIyNjk7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIEx0ICImI3gyMjZBOyItLT4K
KzwhLS1FTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBsbCAi
JiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIG5MdHYgIiYjeDIyNkE7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgTm90TGVzc0xlc3MgIiYjeDIyNkE7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbkx0ICIm
I3gyMjZBOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBHdCAiJiN4MjI2QjsiLS0+Cis8IS0tRU5U
SVRZIE5lc3RlZEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgZ2cgIiYj
eDIyNkI7Ii0tPgorPCEtLUVOVElUWSBuR3R2ICImI3gyMjZCOyYjeDMzODsiLS0+Cis8IS0tRU5U
SVRZIE5vdEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5H
dCAiJiN4MjI2QjsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgdHdpeHQgIiYjeDIyNkM7Ii0tPgor
PCEtLUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgTm90Q3VwQ2FwICIm
I3gyMjZEOyItLT4KKzwhLS1FTlRJVFkgbmx0ICImI3gyMjZFOyItLT4KKzwhLS1FTlRJVFkgTm90
TGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5sZXNzICImI3gyMjZFOyItLT4KKzwhLS1F
TlRJVFkgbmd0ICImI3gyMjZGOyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2Rjsi
LS0+Cis8IS0tRU5USVRZIG5ndHIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBubGUgIiYjeDIy
NzA7Ii0tPgorPCEtLUVOVElUWSBOb3RMZXNzRXF1YWwgIiYjeDIyNzA7Ii0tPgorPCEtLUVOVElU
WSBubGVxICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmdlICImI3gyMjcxOyItLT4KKzwhLS1F
TlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gyMjcxOyItLT4KKzwhLS1FTlRJVFkgbmdlcSAiJiN4
MjI3MTsiLS0+Cis8IS0tRU5USVRZIGxzaW0gIiYjeDIyNzI7Ii0tPgorPCEtLUVOVElUWSBMZXNz
VGlsZGUgIiYjeDIyNzI7Ii0tPgorPCEtLUVOVElUWSBsZXNzc2ltICImI3gyMjcyOyItLT4KKzwh
LS1FTlRJVFkgZ3NpbSAiJiN4MjI3MzsiLS0+Cis8IS0tRU5USVRZIGd0cnNpbSAiJiN4MjI3Mzsi
LS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJUaWxkZSAiJiN4MjI3MzsiLS0+Cis8IS0tRU5USVRZIG5s
c2ltICImI3gyMjc0OyItLT4KKzwhLS1FTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyItLT4K
KzwhLS1FTlRJVFkgbmdzaW0gIiYjeDIyNzU7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyVGls
ZGUgIiYjeDIyNzU7Ii0tPgorPCEtLUVOVElUWSBsZyAiJiN4MjI3NjsiLS0+Cis8IS0tRU5USVRZ
IGxlc3NndHIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBMZXNzR3JlYXRlciAiJiN4MjI3Njsi
LS0+Cis8IS0tRU5USVRZIGdsICImI3gyMjc3OyItLT4KKzwhLS1FTlRJVFkgZ3RybGVzcyAiJiN4
MjI3NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJMZXNzICImI3gyMjc3OyItLT4KKzwhLS1FTlRJ
VFkgbnRsZyAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NHcmVhdGVyICImI3gyMjc4
OyItLT4KKzwhLS1FTlRJVFkgbnRnbCAiJiN4MjI3OTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0
ZXJMZXNzICImI3gyMjc5OyItLT4KKzwhLS1FTlRJVFkgcHIgIiYjeDIyN0E7Ii0tPgorPCEtLUVO
VElUWSBQcmVjZWRlcyAiJiN4MjI3QTsiLS0+Cis8IS0tRU5USVRZIHByZWMgIiYjeDIyN0E7Ii0t
PgorPCEtLUVOVElUWSBzYyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIFN1Y2NlZWRzICImI3gy
MjdCOyItLT4KKzwhLS1FTlRJVFkgc3VjYyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIHByY3Vl
ICImI3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXNTbGFudEVxdWFsICImI3gyMjdDOyIt
LT4KKzwhLS1FTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIyN0M7Ii0tPgorPCEtLUVOVElUWSBzY2N1
ZSAiJiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIFN1Y2NlZWRzU2xhbnRFcXVhbCAiJiN4MjI3RDsi
LS0+Cis8IS0tRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyItLT4KKzwhLS1FTlRJVFkgcHJz
aW0gIiYjeDIyN0U7Ii0tPgorPCEtLUVOVElUWSBwcmVjc2ltICImI3gyMjdFOyItLT4KKzwhLS1F
TlRJVFkgUHJlY2VkZXNUaWxkZSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIHNjc2ltICImI3gy
MjdGOyItLT4KKzwhLS1FTlRJVFkgc3VjY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5USVRZIFN1
Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1RpbGRlICIm
I3gyMjdGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5wciAiJiN4MjI4MDsiLS0+Cis8IS0tRU5U
SVRZIG5wcmVjICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgTm90UHJlY2VkZXMgIiYjeDIyODA7
Ii0tPgorPCEtLUVOVElUWSBuc2MgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBuc3VjYyAiJiN4
MjI4MTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1Y2NlZWRzICImI3gyMjgxOyItLT4KKzwhLS1FTlRJ
VFkgc3ViICImI3gyMjgyOyItLT4KKzwhLS1FTlRJVFkgc3Vic2V0ICImI3gyMjgyOyItLT4KKzwh
LS1FTlRJVFkgdm5zdWIgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIG5zdWJzZXQg
IiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gy
MEQyOyItLT4KKzwhLS1FTlRJVFkgc3VwICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0
ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgU3VwZXJzZXQgIiYjeDIyODM7Ii0tPgorPCEtLUVO
VElUWSB2bnN1cCAiJiN4MjI4MzsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbnN1cHNldCAiJiN4
MjI4MzsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgTm90U3VwZXJzZXQgIiYjeDIyODM7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIG5zdWIgIiYjeDIyODQ7Ii0tPgorPCEtLUVOVElUWSBuc3VwICIm
I3gyMjg1OyItLT4KKzwhLS1FTlRJVFkgc3ViZSAiJiN4MjI4NjsiLS0+Cis8IS0tRU5USVRZIFN1
YnNldEVxdWFsICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3Vic2V0ZXEgIiYjeDIyODY7Ii0t
PgorPCEtLUVOVElUWSBzdXBlICImI3gyMjg3OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0ZXEgIiYj
eDIyODc7Ii0tPgorPCEtLUVOVElUWSBTdXBlcnNldEVxdWFsICImI3gyMjg3OyItLT4KKzwhLS1F
TlRJVFkgbnN1YmUgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ZXEgIiYjeDIyODg7
Ii0tPgorPCEtLUVOVElUWSBOb3RTdWJzZXRFcXVhbCAiJiN4MjI4ODsiLS0+Cis8IS0tRU5USVRZ
IG5zdXBlICImI3gyMjg5OyItLT4KKzwhLS1FTlRJVFkgbnN1cHNldGVxICImI3gyMjg5OyItLT4K
KzwhLS1FTlRJVFkgTm90U3VwZXJzZXRFcXVhbCAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIHN1
Ym5lICImI3gyMjhBOyItLT4KKzwhLS1FTlRJVFkgc3Vic2V0bmVxICImI3gyMjhBOyItLT4KKzwh
LS1FTlRJVFkgdnN1Ym5lICImI3gyMjhBOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSB2YXJzdWJz
ZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHN1cG5lICImI3gyMjhCOyIt
LT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxICImI3gyMjhCOyItLT4KKzwhLS1FTlRJVFkgdnN1cG5l
ICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSB2YXJzdXBzZXRuZXEgIiYjeDIyOEI7
JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGN1cGRvdCAiJiN4MjI4RDsiLS0+Cis8IS0tRU5USVRZ
IHVwbHVzICImI3gyMjhFOyItLT4KKzwhLS1FTlRJVFkgVW5pb25QbHVzICImI3gyMjhFOyItLT4K
KzwhLS1FTlRJVFkgc3FzdWIgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVTdWJzZXQg
IiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldCAiJiN4MjI4RjsiLS0+Cis8IS0tRU5U
SVRZIE5vdFNxdWFyZVN1YnNldCAiJiN4MjI4RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzcXN1
cCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZVN1cGVyc2V0ICImI3gyMjkwOyItLT4K
KzwhLS1FTlRJVFkgc3FzdXBzZXQgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzcXN1YmUgIiYjeDIyOTE7
Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjI5MTsiLS0+Cis8IS0tRU5U
SVRZIHNxc3Vic2V0ZXEgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1cGUgIiYjeDIyOTI7
Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVTdXBlcnNldEVxdWFsICImI3gyMjkyOyItLT4KKzwhLS1F
TlRJVFkgc3FzdXBzZXRlcSAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxY2FwICImI3gyMjkz
OyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlSW50ZXJzZWN0aW9uICImI3gyMjkzOyItLT4KKzwhLS1F
TlRJVFkgc3FjYXBzICImI3gyMjkzOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBzcWN1cCAiJiN4
MjI5NDsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZVVuaW9uICImI3gyMjk0OyItLT4KKzwhLS1FTlRJ
VFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBvcGx1cyAiJiN4MjI5
NTsiLS0+Cis8IS0tRU5USVRZIENpcmNsZVBsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElUWSBv
bWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVNaW51cyAiJiN4MjI5NjsiLS0+
Cis8IS0tRU5USVRZIG90aW1lcyAiJiN4MjI5NzsiLS0+Cis8IS0tRU5USVRZIENpcmNsZVRpbWVz
ICImI3gyMjk3OyItLT4KKzwhLS1FTlRJVFkgb3NvbCAiJiN4MjI5ODsiLS0+Cis8IS0tRU5USVRZ
IG9kb3QgIiYjeDIyOTk7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ii0tPgor
PCEtLUVOVElUWSBvY2lyICImI3gyMjlBOyItLT4KKzwhLS1FTlRJVFkgY2lyY2xlZGNpcmMgIiYj
eDIyOUE7Ii0tPgorPCEtLUVOVElUWSBvYXN0ICImI3gyMjlCOyItLT4KKzwhLS1FTlRJVFkgY2ly
Y2xlZGFzdCAiJiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIG9kYXNoICImI3gyMjlEOyItLT4KKzwh
LS1FTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ii0tPgorPCEtLUVOVElUWSBwbHVzYiAiJiN4
MjI5RTsiLS0+Cis8IS0tRU5USVRZIGJveHBsdXMgIiYjeDIyOUU7Ii0tPgorPCEtLUVOVElUWSBt
aW51c2IgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSBib3htaW51cyAiJiN4MjI5RjsiLS0+Cis8
IS0tRU5USVRZIHRpbWVzYiAiJiN4MjJBMDsiLS0+Cis8IS0tRU5USVRZIGJveHRpbWVzICImI3gy
MkEwOyItLT4KKzwhLS1FTlRJVFkgc2RvdGIgIiYjeDIyQTE7Ii0tPgorPCEtLUVOVElUWSBkb3Rz
cXVhcmUgIiYjeDIyQTE7Ii0tPgorPCEtLUVOVElUWSB2ZGFzaCAiJiN4MjJBMjsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0VGVlICImI3gyMkEyOyItLT4KKzwhLS1FTlRJVFkgZGFzaHYgIiYjeDIyQTM7
Ii0tPgorPCEtLUVOVElUWSBMZWZ0VGVlICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkgdG9wICIm
I3gyMkE0OyItLT4KKzwhLS1FTlRJVFkgRG93blRlZSAiJiN4MjJBNDsiLS0+Cis8IS0tRU5USVRZ
IGJvdHRvbSAiJiN4MjJBNTsiLS0+Cis8IS0tRU5USVRZIGJvdCAiJiN4MjJBNTsiLS0+Cis8IS0t
RU5USVRZIHBlcnAgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBVcFRlZSAiJiN4MjJBNTsiLS0+
Cis8IS0tRU5USVRZIG1vZGVscyAiJiN4MjJBNzsiLS0+Cis8IS0tRU5USVRZIHZEYXNoICImI3gy
MkE4OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ii0tPgorPCEtLUVO
VElUWSBWZGFzaCAiJiN4MjJBOTsiLS0+Cis8IS0tRU5USVRZIFZ2ZGFzaCAiJiN4MjJBQTsiLS0+
Cis8IS0tRU5USVRZIFZEYXNoICImI3gyMkFCOyItLT4KKzwhLS1FTlRJVFkgbnZkYXNoICImI3gy
MkFDOyItLT4KKzwhLS1FTlRJVFkgbnZEYXNoICImI3gyMkFEOyItLT4KKzwhLS1FTlRJVFkgblZk
YXNoICImI3gyMkFFOyItLT4KKzwhLS1FTlRJVFkgblZEYXNoICImI3gyMkFGOyItLT4KKzwhLS1F
TlRJVFkgcHJ1cmVsICImI3gyMkIwOyItLT4KKzwhLS1FTlRJVFkgdmx0cmkgIiYjeDIyQjI7Ii0t
PgorPCEtLUVOVElUWSB2YXJ0cmlhbmdsZWxlZnQgIiYjeDIyQjI7Ii0tPgorPCEtLUVOVElUWSBM
ZWZ0VHJpYW5nbGUgIiYjeDIyQjI7Ii0tPgorPCEtLUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiLS0+
Cis8IS0tRU5USVRZIHZhcnRyaWFuZ2xlcmlnaHQgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodFRyaWFuZ2xlICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ii0t
PgorPCEtLUVOVElUWSB0cmlhbmdsZWxlZnRlcSAiJiN4MjJCNDsiLS0+Cis8IS0tRU5USVRZIExl
ZnRUcmlhbmdsZUVxdWFsICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgbnZsdHJpZSAiJiN4MjJC
NDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgcnRyaWUgIiYjeDIyQjU7Ii0tPgorPCEtLUVOVElU
WSB0cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyQjU7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRyaWFuZ2xl
RXF1YWwgIiYjeDIyQjU7Ii0tPgorPCEtLUVOVElUWSBudnJ0cmllICImI3gyMkI1OyYjeDIwRDI7
Ii0tPgorPCEtLUVOVElUWSBvcmlnb2YgIiYjeDIyQjY7Ii0tPgorPCEtLUVOVElUWSBpbW9mICIm
I3gyMkI3OyItLT4KKzwhLS1FTlRJVFkgbXVtYXAgIiYjeDIyQjg7Ii0tPgorPCEtLUVOVElUWSBt
dWx0aW1hcCAiJiN4MjJCODsiLS0+Cis8IS0tRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiLS0+Cis8
IS0tRU5USVRZIGludGNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5USVRZIGludGVyY2FsICImI3gy
MkJBOyItLT4KKzwhLS1FTlRJVFkgdmVlYmFyICImI3gyMkJCOyItLT4KKzwhLS1FTlRJVFkgYmFy
dmVlICImI3gyMkJEOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2YiAiJiN4MjJCRTsiLS0+Cis8IS0t
RU5USVRZIGxydHJpICImI3gyMkJGOyItLT4KKzwhLS1FTlRJVFkgeHdlZGdlICImI3gyMkMwOyIt
LT4KKzwhLS1FTlRJVFkgV2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSBiaWd3ZWRnZSAi
JiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIHh2ZWUgIiYjeDIyQzE7Ii0tPgorPCEtLUVOVElUWSBW
ZWUgIiYjeDIyQzE7Ii0tPgorPCEtLUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ii0tPgorPCEtLUVO
VElUWSB4Y2FwICImI3gyMkMyOyItLT4KKzwhLS1FTlRJVFkgSW50ZXJzZWN0aW9uICImI3gyMkMy
OyItLT4KKzwhLS1FTlRJVFkgYmlnY2FwICImI3gyMkMyOyItLT4KKzwhLS1FTlRJVFkgeGN1cCAi
JiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIFVuaW9uICImI3gyMkMzOyItLT4KKzwhLS1FTlRJVFkg
YmlnY3VwICImI3gyMkMzOyItLT4KKzwhLS1FTlRJVFkgZGlhbSAiJiN4MjJDNDsiLS0+Cis8IS0t
RU5USVRZIGRpYW1vbmQgIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBEaWFtb25kICImI3gyMkM0
OyItLT4KKzwhLS1FTlRJVFkgc2RvdCAiJiN4MjJDNTsiLS0+Cis8IS0tRU5USVRZIHNzdGFyZiAi
JiN4MjJDNjsiLS0+Cis8IS0tRU5USVRZIFN0YXIgIiYjeDIyQzY7Ii0tPgorPCEtLUVOVElUWSBk
aXZvbnggIiYjeDIyQzc7Ii0tPgorPCEtLUVOVElUWSBkaXZpZGVvbnRpbWVzICImI3gyMkM3OyIt
LT4KKzwhLS1FTlRJVFkgYm93dGllICImI3gyMkM4OyItLT4KKzwhLS1FTlRJVFkgbHRpbWVzICIm
I3gyMkM5OyItLT4KKzwhLS1FTlRJVFkgcnRpbWVzICImI3gyMkNBOyItLT4KKzwhLS1FTlRJVFkg
bHRocmVlICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkgbGVmdHRocmVldGltZXMgIiYjeDIyQ0I7
Ii0tPgorPCEtLUVOVElUWSBydGhyZWUgIiYjeDIyQ0M7Ii0tPgorPCEtLUVOVElUWSByaWdodHRo
cmVldGltZXMgIiYjeDIyQ0M7Ii0tPgorPCEtLUVOVElUWSBic2ltZSAiJiN4MjJDRDsiLS0+Cis8
IS0tRU5USVRZIGJhY2tzaW1lcSAiJiN4MjJDRDsiLS0+Cis8IS0tRU5USVRZIGN1dmVlICImI3gy
MkNFOyItLT4KKzwhLS1FTlRJVFkgY3VybHl2ZWUgIiYjeDIyQ0U7Ii0tPgorPCEtLUVOVElUWSBj
dXdlZCAiJiN4MjJDRjsiLS0+Cis8IS0tRU5USVRZIGN1cmx5d2VkZ2UgIiYjeDIyQ0Y7Ii0tPgor
PCEtLUVOVElUWSBTdWIgIiYjeDIyRDA7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXQgIiYjeDIyRDA7
Ii0tPgorPCEtLUVOVElUWSBTdXAgIiYjeDIyRDE7Ii0tPgorPCEtLUVOVElUWSBTdXBzZXQgIiYj
eDIyRDE7Ii0tPgorPCEtLUVOVElUWSBDYXAgIiYjeDIyRDI7Ii0tPgorPCEtLUVOVElUWSBDdXAg
IiYjeDIyRDM7Ii0tPgorPCEtLUVOVElUWSBmb3JrICImI3gyMkQ0OyItLT4KKzwhLS1FTlRJVFkg
cGl0Y2hmb3JrICImI3gyMkQ0OyItLT4KKzwhLS1FTlRJVFkgZXBhciAiJiN4MjJENTsiLS0+Cis8
IS0tRU5USVRZIGx0ZG90ICImI3gyMkQ2OyItLT4KKzwhLS1FTlRJVFkgbGVzc2RvdCAiJiN4MjJE
NjsiLS0+Cis8IS0tRU5USVRZIGd0ZG90ICImI3gyMkQ3OyItLT4KKzwhLS1FTlRJVFkgZ3RyZG90
ICImI3gyMkQ3OyItLT4KKzwhLS1FTlRJVFkgTGwgIiYjeDIyRDg7Ii0tPgorPCEtLUVOVElUWSBu
TGwgIiYjeDIyRDg7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR2cgIiYjeDIyRDk7Ii0tPgorPCEt
LUVOVElUWSBnZ2cgIiYjeDIyRDk7Ii0tPgorPCEtLUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4
OyItLT4KKzwhLS1FTlRJVFkgbGVnICImI3gyMkRBOyItLT4KKzwhLS1FTlRJVFkgTGVzc0VxdWFs
R3JlYXRlciAiJiN4MjJEQTsiLS0+Cis8IS0tRU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiLS0+
Cis8IS0tRU5USVRZIGxlc2cgIiYjeDIyREE7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGdlbCAi
JiN4MjJEQjsiLS0+Cis8IS0tRU5USVRZIGd0cmVxbGVzcyAiJiN4MjJEQjsiLS0+Cis8IS0tRU5U
SVRZIEdyZWF0ZXJFcXVhbExlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBnZXNsICImI3gy
MkRCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBjdWVwciAiJiN4MjJERTsiLS0+Cis8IS0tRU5U
SVRZIGN1cmx5ZXFwcmVjICImI3gyMkRFOyItLT4KKzwhLS1FTlRJVFkgY3Vlc2MgIiYjeDIyREY7
Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiLS0+Cis8IS0tRU5USVRZIG5w
cmN1ZSAiJiN4MjJFMDsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4
MjJFMDsiLS0+Cis8IS0tRU5USVRZIG5zY2N1ZSAiJiN4MjJFMTsiLS0+Cis8IS0tRU5USVRZIE5v
dFN1Y2NlZWRzU2xhbnRFcXVhbCAiJiN4MjJFMTsiLS0+Cis8IS0tRU5USVRZIG5zcXN1YmUgIiYj
eDIyRTI7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiLS0+
Cis8IS0tRU5USVRZIG5zcXN1cGUgIiYjeDIyRTM7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldEVxdWFsICImI3gyMkUzOyItLT4KKzwhLS1FTlRJVFkgbG5zaW0gIiYjeDIyRTY7Ii0t
PgorPCEtLUVOVElUWSBnbnNpbSAiJiN4MjJFNzsiLS0+Cis8IS0tRU5USVRZIHBybnNpbSAiJiN4
MjJFODsiLS0+Cis8IS0tRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyItLT4KKzwhLS1FTlRJVFkg
c2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgc3VjY25zaW0gIiYjeDIyRTk7Ii0tPgor
PCEtLUVOVElUWSBubHRyaSAiJiN4MjJFQTsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZWxlZnQg
IiYjeDIyRUE7Ii0tPgorPCEtLUVOVElUWSBOb3RMZWZ0VHJpYW5nbGUgIiYjeDIyRUE7Ii0tPgor
PCEtLUVOVElUWSBucnRyaSAiJiN4MjJFQjsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0
ICImI3gyMkVCOyItLT4KKzwhLS1FTlRJVFkgTm90UmlnaHRUcmlhbmdsZSAiJiN4MjJFQjsiLS0+
Cis8IS0tRU5USVRZIG5sdHJpZSAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZWxl
ZnRlcSAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIE5vdExlZnRUcmlhbmdsZUVxdWFsICImI3gy
MkVDOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmllICImI3gyMkVEOyItLT4KKzwhLS1FTlRJVFkgbnRy
aWFuZ2xlcmlnaHRlcSAiJiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVF
cXVhbCAiJiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIHZlbGxpcCAiJiN4MjJFRTsiLS0+Cis8IS0t
RU5USVRZIGN0ZG90ICImI3gyMkVGOyItLT4KKzwhLS1FTlRJVFkgdXRkb3QgIiYjeDIyRjA7Ii0t
PgorPCEtLUVOVElUWSBkdGRvdCAiJiN4MjJGMTsiLS0+Cis8IS0tRU5USVRZIGRpc2luICImI3gy
MkYyOyItLT4KKzwhLS1FTlRJVFkgaXNpbnN2ICImI3gyMkYzOyItLT4KKzwhLS1FTlRJVFkgaXNp
bnMgIiYjeDIyRjQ7Ii0tPgorPCEtLUVOVElUWSBpc2luZG90ICImI3gyMkY1OyItLT4KKzwhLS1F
TlRJVFkgbm90aW5kb3QgIiYjeDIyRjU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbm90aW52YyAi
JiN4MjJGNjsiLS0+Cis8IS0tRU5USVRZIG5vdGludmIgIiYjeDIyRjc7Ii0tPgorPCEtLUVOVElU
WSBpc2luRSAiJiN4MjJGOTsiLS0+Cis8IS0tRU5USVRZIG5vdGluRSAiJiN4MjJGOTsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBuaXNkICImI3gyMkZBOyItLT4KKzwhLS1FTlRJVFkgeG5pcyAiJiN4
MjJGQjsiLS0+Cis8IS0tRU5USVRZIG5pcyAiJiN4MjJGQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5p
dmMgIiYjeDIyRkQ7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZiICImI3gyMkZFOyItLT4KKzwhLS1F
TlRJVFkgYmFyd2VkICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkgYmFyd2VkZ2UgIiYjeDIzMDU7
Ii0tPgorPCEtLUVOVElUWSBCYXJ3ZWQgIiYjeDIzMDY7Ii0tPgorPCEtLUVOVElUWSBkb3VibGVi
YXJ3ZWRnZSAiJiN4MjMwNjsiLS0+Cis8IS0tRU5USVRZIGxjZWlsICImI3gyMzA4OyItLT4KKzwh
LS1FTlRJVFkgTGVmdENlaWxpbmcgIiYjeDIzMDg7Ii0tPgorPCEtLUVOVElUWSByY2VpbCAiJiN4
MjMwOTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0Q2VpbGluZyAiJiN4MjMwOTsiLS0+Cis8IS0tRU5U
SVRZIGxmbG9vciAiJiN4MjMwQTsiLS0+Cis8IS0tRU5USVRZIExlZnRGbG9vciAiJiN4MjMwQTsi
LS0+Cis8IS0tRU5USVRZIHJmbG9vciAiJiN4MjMwQjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0Rmxv
b3IgIiYjeDIzMEI7Ii0tPgorPCEtLUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ii0tPgorPCEtLUVO
VElUWSBkbGNyb3AgIiYjeDIzMEQ7Ii0tPgorPCEtLUVOVElUWSB1cmNyb3AgIiYjeDIzMEU7Ii0t
PgorPCEtLUVOVElUWSB1bGNyb3AgIiYjeDIzMEY7Ii0tPgorPCEtLUVOVElUWSBibm90ICImI3gy
MzEwOyItLT4KKzwhLS1FTlRJVFkgcHJvZmxpbmUgIiYjeDIzMTI7Ii0tPgorPCEtLUVOVElUWSBw
cm9mc3VyZiAiJiN4MjMxMzsiLS0+Cis8IS0tRU5USVRZIHRlbHJlYyAiJiN4MjMxNTsiLS0+Cis8
IS0tRU5USVRZIHRhcmdldCAiJiN4MjMxNjsiLS0+Cis8IS0tRU5USVRZIHVsY29ybiAiJiN4MjMx
QzsiLS0+Cis8IS0tRU5USVRZIHVsY29ybmVyICImI3gyMzFDOyItLT4KKzwhLS1FTlRJVFkgdXJj
b3JuICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgdXJjb3JuZXIgIiYjeDIzMUQ7Ii0tPgorPCEt
LUVOVElUWSBkbGNvcm4gIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElUWSBsbGNvcm5lciAiJiN4MjMx
RTsiLS0+Cis8IS0tRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiLS0+Cis8IS0tRU5USVRZIGxyY29y
bmVyICImI3gyMzFGOyItLT4KKzwhLS1FTlRJVFkgZnJvd24gIiYjeDIzMjI7Ii0tPgorPCEtLUVO
VElUWSBzZnJvd24gIiYjeDIzMjI7Ii0tPgorPCEtLUVOVElUWSBzbWlsZSAiJiN4MjMyMzsiLS0+
Cis8IS0tRU5USVRZIHNzbWlsZSAiJiN4MjMyMzsiLS0+Cis8IS0tRU5USVRZIGN5bGN0eSAiJiN4
MjMyRDsiLS0+Cis8IS0tRU5USVRZIHByb2ZhbGFyICImI3gyMzJFOyItLT4KKzwhLS1FTlRJVFkg
dG9wYm90ICImI3gyMzM2OyItLT4KKzwhLS1FTlRJVFkgb3ZiYXIgIiYjeDIzM0Q7Ii0tPgorPCEt
LUVOVElUWSBzb2xiYXIgIiYjeDIzM0Y7Ii0tPgorPCEtLUVOVElUWSBhbmd6YXJyICImI3gyMzdD
OyItLT4KKzwhLS1FTlRJVFkgbG1vdXN0ICImI3gyM0IwOyItLT4KKzwhLS1FTlRJVFkgbG1vdXN0
YWNoZSAiJiN4MjNCMDsiLS0+Cis8IS0tRU5USVRZIHJtb3VzdCAiJiN4MjNCMTsiLS0+Cis8IS0t
RU5USVRZIHJtb3VzdGFjaGUgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSB0YnJrICImI3gyM0I0
OyItLT4KKzwhLS1FTlRJVFkgT3ZlckJyYWNrZXQgIiYjeDIzQjQ7Ii0tPgorPCEtLUVOVElUWSBi
YnJrICImI3gyM0I1OyItLT4KKzwhLS1FTlRJVFkgVW5kZXJCcmFja2V0ICImI3gyM0I1OyItLT4K
KzwhLS1FTlRJVFkgYmJya3RicmsgIiYjeDIzQjY7Ii0tPgorPCEtLUVOVElUWSBPdmVyUGFyZW50
aGVzaXMgIiYjeDIzREM7Ii0tPgorPCEtLUVOVElUWSBVbmRlclBhcmVudGhlc2lzICImI3gyM0RE
OyItLT4KKzwhLS1FTlRJVFkgT3ZlckJyYWNlICImI3gyM0RFOyItLT4KKzwhLS1FTlRJVFkgVW5k
ZXJCcmFjZSAiJiN4MjNERjsiLS0+Cis8IS0tRU5USVRZIHRycGV6aXVtICImI3gyM0UyOyItLT4K
KzwhLS1FTlRJVFkgZWxpbnRlcnMgIiYjeDIzRTc7Ii0tPgorPCEtLUVOVElUWSBibGFuayAiJiN4
MjQyMzsiLS0+Cis8IS0tRU5USVRZIG9TICImI3gyNEM4OyItLT4KKzwhLS1FTlRJVFkgY2lyY2xl
ZFMgIiYjeDI0Qzg7Ii0tPgorPCEtLUVOVElUWSBib3hoICImI3gyNTAwOyItLT4KKzwhLS1FTlRJ
VFkgSG9yaXpvbnRhbExpbmUgIiYjeDI1MDA7Ii0tPgorPCEtLUVOVElUWSBib3h2ICImI3gyNTAy
OyItLT4KKzwhLS1FTlRJVFkgYm94ZHIgIiYjeDI1MEM7Ii0tPgorPCEtLUVOVElUWSBib3hkbCAi
JiN4MjUxMDsiLS0+Cis8IS0tRU5USVRZIGJveHVyICImI3gyNTE0OyItLT4KKzwhLS1FTlRJVFkg
Ym94dWwgIiYjeDI1MTg7Ii0tPgorPCEtLUVOVElUWSBib3h2ciAiJiN4MjUxQzsiLS0+Cis8IS0t
RU5USVRZIGJveHZsICImI3gyNTI0OyItLT4KKzwhLS1FTlRJVFkgYm94aGQgIiYjeDI1MkM7Ii0t
PgorPCEtLUVOVElUWSBib3hodSAiJiN4MjUzNDsiLS0+Cis8IS0tRU5USVRZIGJveHZoICImI3gy
NTNDOyItLT4KKzwhLS1FTlRJVFkgYm94SCAiJiN4MjU1MDsiLS0+Cis8IS0tRU5USVRZIGJveFYg
IiYjeDI1NTE7Ii0tPgorPCEtLUVOVElUWSBib3hkUiAiJiN4MjU1MjsiLS0+Cis8IS0tRU5USVRZ
IGJveERyICImI3gyNTUzOyItLT4KKzwhLS1FTlRJVFkgYm94RFIgIiYjeDI1NTQ7Ii0tPgorPCEt
LUVOVElUWSBib3hkTCAiJiN4MjU1NTsiLS0+Cis8IS0tRU5USVRZIGJveERsICImI3gyNTU2OyIt
LT4KKzwhLS1FTlRJVFkgYm94REwgIiYjeDI1NTc7Ii0tPgorPCEtLUVOVElUWSBib3h1UiAiJiN4
MjU1ODsiLS0+Cis8IS0tRU5USVRZIGJveFVyICImI3gyNTU5OyItLT4KKzwhLS1FTlRJVFkgYm94
VVIgIiYjeDI1NUE7Ii0tPgorPCEtLUVOVElUWSBib3h1TCAiJiN4MjU1QjsiLS0+Cis8IS0tRU5U
SVRZIGJveFVsICImI3gyNTVDOyItLT4KKzwhLS1FTlRJVFkgYm94VUwgIiYjeDI1NUQ7Ii0tPgor
PCEtLUVOVElUWSBib3h2UiAiJiN4MjU1RTsiLS0+Cis8IS0tRU5USVRZIGJveFZyICImI3gyNTVG
OyItLT4KKzwhLS1FTlRJVFkgYm94VlIgIiYjeDI1NjA7Ii0tPgorPCEtLUVOVElUWSBib3h2TCAi
JiN4MjU2MTsiLS0+Cis8IS0tRU5USVRZIGJveFZsICImI3gyNTYyOyItLT4KKzwhLS1FTlRJVFkg
Ym94VkwgIiYjeDI1NjM7Ii0tPgorPCEtLUVOVElUWSBib3hIZCAiJiN4MjU2NDsiLS0+Cis8IS0t
RU5USVRZIGJveGhEICImI3gyNTY1OyItLT4KKzwhLS1FTlRJVFkgYm94SEQgIiYjeDI1NjY7Ii0t
PgorPCEtLUVOVElUWSBib3hIdSAiJiN4MjU2NzsiLS0+Cis8IS0tRU5USVRZIGJveGhVICImI3gy
NTY4OyItLT4KKzwhLS1FTlRJVFkgYm94SFUgIiYjeDI1Njk7Ii0tPgorPCEtLUVOVElUWSBib3h2
SCAiJiN4MjU2QTsiLS0+Cis8IS0tRU5USVRZIGJveFZoICImI3gyNTZCOyItLT4KKzwhLS1FTlRJ
VFkgYm94VkggIiYjeDI1NkM7Ii0tPgorPCEtLUVOVElUWSB1aGJsayAiJiN4MjU4MDsiLS0+Cis8
IS0tRU5USVRZIGxoYmxrICImI3gyNTg0OyItLT4KKzwhLS1FTlRJVFkgYmxvY2sgIiYjeDI1ODg7
Ii0tPgorPCEtLUVOVElUWSBibGsxNCAiJiN4MjU5MTsiLS0+Cis8IS0tRU5USVRZIGJsazEyICIm
I3gyNTkyOyItLT4KKzwhLS1FTlRJVFkgYmxrMzQgIiYjeDI1OTM7Ii0tPgorPCEtLUVOVElUWSBz
cXUgIiYjeDI1QTE7Ii0tPgorPCEtLUVOVElUWSBzcXVhcmUgIiYjeDI1QTE7Ii0tPgorPCEtLUVO
VElUWSBTcXVhcmUgIiYjeDI1QTE7Ii0tPgorPCEtLUVOVElUWSBzcXVmICImI3gyNUFBOyItLT4K
KzwhLS1FTlRJVFkgc3F1YXJmICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgYmxhY2tzcXVhcmUg
IiYjeDI1QUE7Ii0tPgorPCEtLUVOVElUWSBGaWxsZWRWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUE7
Ii0tPgorPCEtLUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsiLS0+Cis8IS0t
RU5USVRZIHJlY3QgIiYjeDI1QUQ7Ii0tPgorPCEtLUVOVElUWSBtYXJrZXIgIiYjeDI1QUU7Ii0t
PgorPCEtLUVOVElUWSBmbHRucyAiJiN4MjVCMTsiLS0+Cis8IS0tRU5USVRZIHh1dHJpICImI3gy
NUIzOyItLT4KKzwhLS1FTlRJVFkgYmlndHJpYW5nbGV1cCAiJiN4MjVCMzsiLS0+Cis8IS0tRU5U
SVRZIHV0cmlmICImI3gyNUI0OyItLT4KKzwhLS1FTlRJVFkgYmxhY2t0cmlhbmdsZSAiJiN4MjVC
NDsiLS0+Cis8IS0tRU5USVRZIHV0cmkgIiYjeDI1QjU7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmds
ZSAiJiN4MjVCNTsiLS0+Cis8IS0tRU5USVRZIHJ0cmlmICImI3gyNUI4OyItLT4KKzwhLS1FTlRJ
VFkgYmxhY2t0cmlhbmdsZXJpZ2h0ICImI3gyNUI4OyItLT4KKzwhLS1FTlRJVFkgcnRyaSAiJiN4
MjVCOTsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcmlnaHQgIiYjeDI1Qjk7Ii0tPgorPCEtLUVO
VElUWSB4ZHRyaSAiJiN4MjVCRDsiLS0+Cis8IS0tRU5USVRZIGJpZ3RyaWFuZ2xlZG93biAiJiN4
MjVCRDsiLS0+Cis8IS0tRU5USVRZIGR0cmlmICImI3gyNUJFOyItLT4KKzwhLS1FTlRJVFkgYmxh
Y2t0cmlhbmdsZWRvd24gIiYjeDI1QkU7Ii0tPgorPCEtLUVOVElUWSBkdHJpICImI3gyNUJGOyIt
LT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVkb3duICImI3gyNUJGOyItLT4KKzwhLS1FTlRJVFkgbHRy
aWYgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBibGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsi
LS0+Cis8IS0tRU5USVRZIGx0cmkgIiYjeDI1QzM7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmdsZWxl
ZnQgIiYjeDI1QzM7Ii0tPgorPCEtLUVOVElUWSBsb3ogIiYjeDI1Q0E7Ii0tPgorPCEtLUVOVElU
WSBsb3plbmdlICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgY2lyICImI3gyNUNCOyItLT4KKzwh
LS1FTlRJVFkgdHJpZG90ICImI3gyNUVDOyItLT4KKzwhLS1FTlRJVFkgeGNpcmMgIiYjeDI1RUY7
Ii0tPgorPCEtLUVOVElUWSBiaWdjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkgdWx0cmkg
IiYjeDI1Rjg7Ii0tPgorPCEtLUVOVElUWSB1cnRyaSAiJiN4MjVGOTsiLS0+Cis8IS0tRU5USVRZ
IGxsdHJpICImI3gyNUZBOyItLT4KKzwhLS1FTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVG
QjsiLS0+Cis8IS0tRU5USVRZIEZpbGxlZFNtYWxsU3F1YXJlICImI3gyNUZDOyItLT4KKzwhLS1F
TlRJVFkgc3RhcmYgIiYjeDI2MDU7Ii0tPgorPCEtLUVOVElUWSBiaWdzdGFyICImI3gyNjA1OyIt
LT4KKzwhLS1FTlRJVFkgc3RhciAiJiN4MjYwNjsiLS0+Cis8IS0tRU5USVRZIHBob25lICImI3gy
NjBFOyItLT4KKzwhLS1FTlRJVFkgZmVtYWxlICImI3gyNjQwOyItLT4KKzwhLS1FTlRJVFkgbWFs
ZSAiJiN4MjY0MjsiLS0+Cis8IS0tRU5USVRZIHNwYWRlcyAiJiN4MjY2MDsiLS0+Cis8IS0tRU5U
SVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiLS0+Cis8IS0tRU5USVRZIGNsdWJzICImI3gyNjYzOyIt
LT4KKzwhLS1FTlRJVFkgY2x1YnN1aXQgIiYjeDI2NjM7Ii0tPgorPCEtLUVOVElUWSBoZWFydHMg
IiYjeDI2NjU7Ii0tPgorPCEtLUVOVElUWSBoZWFydHN1aXQgIiYjeDI2NjU7Ii0tPgorPCEtLUVO
VElUWSBkaWFtcyAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2
OyItLT4KKzwhLS1FTlRJVFkgc3VuZyAiJiN4MjY2QTsiLS0+Cis8IS0tRU5USVRZIGZsYXQgIiYj
eDI2NkQ7Ii0tPgorPCEtLUVOVElUWSBuYXR1ciAiJiN4MjY2RTsiLS0+Cis8IS0tRU5USVRZIG5h
dHVyYWwgIiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBzaGFycCAiJiN4MjY2RjsiLS0+Cis8IS0t
RU5USVRZIGNoZWNrICImI3gyNzEzOyItLT4KKzwhLS1FTlRJVFkgY2hlY2ttYXJrICImI3gyNzEz
OyItLT4KKzwhLS1FTlRJVFkgY3Jvc3MgIiYjeDI3MTc7Ii0tPgorPCEtLUVOVElUWSBtYWx0ICIm
I3gyNzIwOyItLT4KKzwhLS1FTlRJVFkgbWFsdGVzZSAiJiN4MjcyMDsiLS0+Cis8IS0tRU5USVRZ
IHNleHQgIiYjeDI3MzY7Ii0tPgorPCEtLUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1
ODsiLS0+Cis8IS0tRU5USVRZIGxiYnJrICImI3gyNzcyOyItLT4KKzwhLS1FTlRJVFkgcmJicmsg
IiYjeDI3NzM7Ii0tPgorPCEtLUVOVElUWSBic29saHN1YiAiJiN4MjdDODsiLS0+Cis8IS0tRU5U
SVRZIHN1cGhzb2wgIiYjeDI3Qzk7Ii0tPgorPCEtLUVOVElUWSBsb2JyayAiJiN4MjdFNjsiLS0+
Cis8IS0tRU5USVRZIExlZnREb3VibGVCcmFja2V0ICImI3gyN0U2OyItLT4KKzwhLS1FTlRJVFkg
cm9icmsgIiYjeDI3RTc7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvdWJsZUJyYWNrZXQgIiYjeDI3
RTc7Ii0tPgorPCEtLUVOVElUWSBsYW5nICImI3gyN0U4OyItLT4KKzwhLS1FTlRJVFkgTGVmdEFu
Z2xlQnJhY2tldCAiJiN4MjdFODsiLS0+Cis8IS0tRU5USVRZIGxhbmdsZSAiJiN4MjdFODsiLS0+
Cis8IS0tRU5USVRZIHJhbmcgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFuZ2xlQnJh
Y2tldCAiJiN4MjdFOTsiLS0+Cis8IS0tRU5USVRZIHJhbmdsZSAiJiN4MjdFOTsiLS0+Cis8IS0t
RU5USVRZIExhbmcgIiYjeDI3RUE7Ii0tPgorPCEtLUVOVElUWSBSYW5nICImI3gyN0VCOyItLT4K
KzwhLS1FTlRJVFkgbG9hbmcgIiYjeDI3RUM7Ii0tPgorPCEtLUVOVElUWSByb2FuZyAiJiN4MjdF
RDsiLS0+Cis8IS0tRU5USVRZIHhsYXJyICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkgbG9uZ2xl
ZnRhcnJvdyAiJiN4MjdGNTsiLS0+Cis8IS0tRU5USVRZIExvbmdMZWZ0QXJyb3cgIiYjeDI3RjU7
Ii0tPgorPCEtLUVOVElUWSB4cmFyciAiJiN4MjdGNjsiLS0+Cis8IS0tRU5USVRZIGxvbmdyaWdo
dGFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3RjY7
Ii0tPgorPCEtLUVOVElUWSB4aGFyciAiJiN4MjdGNzsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0
cmlnaHRhcnJvdyAiJiN4MjdGNzsiLS0+Cis8IS0tRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJvdyAi
JiN4MjdGNzsiLS0+Cis8IS0tRU5USVRZIHhsQXJyICImI3gyN0Y4OyItLT4KKzwhLS1FTlRJVFkg
TG9uZ2xlZnRhcnJvdyAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJy
b3cgIiYjeDI3Rjg7Ii0tPgorPCEtLUVOVElUWSB4ckFyciAiJiN4MjdGOTsiLS0+Cis8IS0tRU5U
SVRZIExvbmdyaWdodGFycm93ICImI3gyN0Y5OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTG9uZ1Jp
Z2h0QXJyb3cgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSB4aEFyciAiJiN4MjdGQTsiLS0+Cis8
IS0tRU5USVRZIExvbmdsZWZ0cmlnaHRhcnJvdyAiJiN4MjdGQTsiLS0+Cis8IS0tRU5USVRZIERv
dWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsiLS0+Cis8IS0tRU5USVRZIHhtYXAgIiYj
eDI3RkM7Ii0tPgorPCEtLUVOVElUWSBsb25nbWFwc3RvICImI3gyN0ZDOyItLT4KKzwhLS1FTlRJ
VFkgZHppZ3JhcnIgIiYjeDI3RkY7Ii0tPgorPCEtLUVOVElUWSBudmxBcnIgIiYjeDI5MDI7Ii0t
PgorPCEtLUVOVElUWSBudnJBcnIgIiYjeDI5MDM7Ii0tPgorPCEtLUVOVElUWSBudkhhcnIgIiYj
eDI5MDQ7Ii0tPgorPCEtLUVOVElUWSBNYXAgIiYjeDI5MDU7Ii0tPgorPCEtLUVOVElUWSBsYmFy
ciAiJiN4MjkwQzsiLS0+Cis8IS0tRU5USVRZIHJiYXJyICImI3gyOTBEOyItLT4KKzwhLS1FTlRJ
VFkgYmthcm93ICImI3gyOTBEOyItLT4KKzwhLS1FTlRJVFkgbEJhcnIgIiYjeDI5MEU7Ii0tPgor
PCEtLUVOVElUWSByQmFyciAiJiN4MjkwRjsiLS0+Cis8IS0tRU5USVRZIGRia2Fyb3cgIiYjeDI5
MEY7Ii0tPgorPCEtLUVOVElUWSBSQmFyciAiJiN4MjkxMDsiLS0+Cis8IS0tRU5USVRZIGRyYmth
cm93ICImI3gyOTEwOyItLT4KKzwhLS1FTlRJVFkgRERvdHJhaGQgIiYjeDI5MTE7Ii0tPgorPCEt
LUVOVElUWSBVcEFycm93QmFyICImI3gyOTEyOyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93QmFy
ICImI3gyOTEzOyItLT4KKzwhLS1FTlRJVFkgUmFycnRsICImI3gyOTE2OyItLT4KKzwhLS1FTlRJ
VFkgbGF0YWlsICImI3gyOTE5OyItLT4KKzwhLS1FTlRJVFkgcmF0YWlsICImI3gyOTFBOyItLT4K
KzwhLS1FTlRJVFkgbEF0YWlsICImI3gyOTFCOyItLT4KKzwhLS1FTlRJVFkgckF0YWlsICImI3gy
OTFDOyItLT4KKzwhLS1FTlRJVFkgbGFycmZzICImI3gyOTFEOyItLT4KKzwhLS1FTlRJVFkgcmFy
cmZzICImI3gyOTFFOyItLT4KKzwhLS1FTlRJVFkgbGFycmJmcyAiJiN4MjkxRjsiLS0+Cis8IS0t
RU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ii0tPgorPCEtLUVOVElUWSBud2FyaGsgIiYjeDI5MjM7
Ii0tPgorPCEtLUVOVElUWSBuZWFyaGsgIiYjeDI5MjQ7Ii0tPgorPCEtLUVOVElUWSBzZWFyaGsg
IiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBoa3NlYXJvdyAiJiN4MjkyNTsiLS0+Cis8IS0tRU5U
SVRZIHN3YXJoayAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIGhrc3dhcm93ICImI3gyOTI2OyIt
LT4KKzwhLS1FTlRJVFkgbnduZWFyICImI3gyOTI3OyItLT4KKzwhLS1FTlRJVFkgbmVzZWFyICIm
I3gyOTI4OyItLT4KKzwhLS1FTlRJVFkgdG9lYSAiJiN4MjkyODsiLS0+Cis8IS0tRU5USVRZIHNl
c3dhciAiJiN4MjkyOTsiLS0+Cis8IS0tRU5USVRZIHRvc2EgIiYjeDI5Mjk7Ii0tPgorPCEtLUVO
VElUWSBzd253YXIgIiYjeDI5MkE7Ii0tPgorPCEtLUVOVElUWSByYXJyYyAiJiN4MjkzMzsiLS0+
Cis8IS0tRU5USVRZIG5yYXJyYyAiJiN4MjkzMzsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBjdWRh
cnJyICImI3gyOTM1OyItLT4KKzwhLS1FTlRJVFkgbGRjYSAiJiN4MjkzNjsiLS0+Cis8IS0tRU5U
SVRZIHJkY2EgIiYjeDI5Mzc7Ii0tPgorPCEtLUVOVElUWSBjdWRhcnJsICImI3gyOTM4OyItLT4K
KzwhLS1FTlRJVFkgbGFycnBsICImI3gyOTM5OyItLT4KKzwhLS1FTlRJVFkgY3VyYXJybSAiJiN4
MjkzQzsiLS0+Cis8IS0tRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ii0tPgorPCEtLUVOVElUWSBy
YXJycGwgIiYjeDI5NDU7Ii0tPgorPCEtLUVOVElUWSBoYXJyY2lyICImI3gyOTQ4OyItLT4KKzwh
LS1FTlRJVFkgVWFycm9jaXIgIiYjeDI5NDk7Ii0tPgorPCEtLUVOVElUWSBsdXJkc2hhciAiJiN4
Mjk0QTsiLS0+Cis8IS0tRU5USVRZIGxkcnVzaGFyICImI3gyOTRCOyItLT4KKzwhLS1FTlRJVFkg
TGVmdFJpZ2h0VmVjdG9yICImI3gyOTRFOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRVcERvd25WZWN0
b3IgIiYjeDI5NEY7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFJpZ2h0VmVjdG9yICImI3gyOTUw
OyItLT4KKzwhLS1FTlRJVFkgTGVmdFVwRG93blZlY3RvciAiJiN4Mjk1MTsiLS0+Cis8IS0tRU5U
SVRZIExlZnRWZWN0b3JCYXIgIiYjeDI5NTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFZlY3RvckJh
ciAiJiN4Mjk1MzsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIgIiYjeDI5NTQ7Ii0t
PgorPCEtLUVOVElUWSBSaWdodERvd25WZWN0b3JCYXIgIiYjeDI5NTU7Ii0tPgorPCEtLUVOVElU
WSBEb3duTGVmdFZlY3RvckJhciAiJiN4Mjk1NjsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFZl
Y3RvckJhciAiJiN4Mjk1NzsiLS0+Cis8IS0tRU5USVRZIExlZnRVcFZlY3RvckJhciAiJiN4Mjk1
ODsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yQmFyICImI3gyOTU5OyItLT4KKzwhLS1F
TlRJVFkgTGVmdFRlZVZlY3RvciAiJiN4Mjk1QTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlVmVj
dG9yICImI3gyOTVCOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRVcFRlZVZlY3RvciAiJiN4Mjk1Qzsi
LS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blRlZVZlY3RvciAiJiN4Mjk1RDsiLS0+Cis8IS0tRU5U
SVRZIERvd25MZWZ0VGVlVmVjdG9yICImI3gyOTVFOyItLT4KKzwhLS1FTlRJVFkgRG93blJpZ2h0
VGVlVmVjdG9yICImI3gyOTVGOyItLT4KKzwhLS1FTlRJVFkgTGVmdFVwVGVlVmVjdG9yICImI3gy
OTYwOyItLT4KKzwhLS1FTlRJVFkgTGVmdERvd25UZWVWZWN0b3IgIiYjeDI5NjE7Ii0tPgorPCEt
LUVOVElUWSBsSGFyICImI3gyOTYyOyItLT4KKzwhLS1FTlRJVFkgdUhhciAiJiN4Mjk2MzsiLS0+
Cis8IS0tRU5USVRZIHJIYXIgIiYjeDI5NjQ7Ii0tPgorPCEtLUVOVElUWSBkSGFyICImI3gyOTY1
OyItLT4KKzwhLS1FTlRJVFkgbHVydWhhciAiJiN4Mjk2NjsiLS0+Cis8IS0tRU5USVRZIGxkcmRo
YXIgIiYjeDI5Njc7Ii0tPgorPCEtLUVOVElUWSBydWx1aGFyICImI3gyOTY4OyItLT4KKzwhLS1F
TlRJVFkgcmRsZGhhciAiJiN4Mjk2OTsiLS0+Cis8IS0tRU5USVRZIGxoYXJ1bCAiJiN4Mjk2QTsi
LS0+Cis8IS0tRU5USVRZIGxsaGFyZCAiJiN4Mjk2QjsiLS0+Cis8IS0tRU5USVRZIHJoYXJ1bCAi
JiN4Mjk2QzsiLS0+Cis8IS0tRU5USVRZIGxyaGFyZCAiJiN4Mjk2RDsiLS0+Cis8IS0tRU5USVRZ
IHVkaGFyICImI3gyOTZFOyItLT4KKzwhLS1FTlRJVFkgVXBFcXVpbGlicml1bSAiJiN4Mjk2RTsi
LS0+Cis8IS0tRU5USVRZIGR1aGFyICImI3gyOTZGOyItLT4KKzwhLS1FTlRJVFkgUmV2ZXJzZVVw
RXF1aWxpYnJpdW0gIiYjeDI5NkY7Ii0tPgorPCEtLUVOVElUWSBSb3VuZEltcGxpZXMgIiYjeDI5
NzA7Ii0tPgorPCEtLUVOVElUWSBlcmFyciAiJiN4Mjk3MTsiLS0+Cis8IS0tRU5USVRZIHNpbXJh
cnIgIiYjeDI5NzI7Ii0tPgorPCEtLUVOVElUWSBsYXJyc2ltICImI3gyOTczOyItLT4KKzwhLS1F
TlRJVFkgcmFycnNpbSAiJiN4Mjk3NDsiLS0+Cis8IS0tRU5USVRZIHJhcnJhcCAiJiN4Mjk3NTsi
LS0+Cis8IS0tRU5USVRZIGx0bGFyciAiJiN4Mjk3NjsiLS0+Cis8IS0tRU5USVRZIGd0cmFyciAi
JiN4Mjk3ODsiLS0+Cis8IS0tRU5USVRZIHN1YnJhcnIgIiYjeDI5Nzk7Ii0tPgorPCEtLUVOVElU
WSBzdXBsYXJyICImI3gyOTdCOyItLT4KKzwhLS1FTlRJVFkgbGZpc2h0ICImI3gyOTdDOyItLT4K
KzwhLS1FTlRJVFkgcmZpc2h0ICImI3gyOTdEOyItLT4KKzwhLS1FTlRJVFkgdWZpc2h0ICImI3gy
OTdFOyItLT4KKzwhLS1FTlRJVFkgZGZpc2h0ICImI3gyOTdGOyItLT4KKzwhLS1FTlRJVFkgbG9w
YXIgIiYjeDI5ODU7Ii0tPgorPCEtLUVOVElUWSByb3BhciAiJiN4Mjk4NjsiLS0+Cis8IS0tRU5U
SVRZIGxicmtlICImI3gyOThCOyItLT4KKzwhLS1FTlRJVFkgcmJya2UgIiYjeDI5OEM7Ii0tPgor
PCEtLUVOVElUWSBsYnJrc2x1ICImI3gyOThEOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsZCAiJiN4
Mjk4RTsiLS0+Cis8IS0tRU5USVRZIGxicmtzbGQgIiYjeDI5OEY7Ii0tPgorPCEtLUVOVElUWSBy
YnJrc2x1ICImI3gyOTkwOyItLT4KKzwhLS1FTlRJVFkgbGFuZ2QgIiYjeDI5OTE7Ii0tPgorPCEt
LUVOVElUWSByYW5nZCAiJiN4Mjk5MjsiLS0+Cis8IS0tRU5USVRZIGxwYXJsdCAiJiN4Mjk5Mzsi
LS0+Cis8IS0tRU5USVRZIHJwYXJndCAiJiN4Mjk5NDsiLS0+Cis8IS0tRU5USVRZIGd0bFBhciAi
JiN4Mjk5NTsiLS0+Cis8IS0tRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiLS0+Cis8IS0tRU5USVRZ
IHZ6aWd6YWcgIiYjeDI5OUE7Ii0tPgorPCEtLUVOVElUWSB2YW5ncnQgIiYjeDI5OUM7Ii0tPgor
PCEtLUVOVElUWSBhbmdydHZiZCAiJiN4Mjk5RDsiLS0+Cis8IS0tRU5USVRZIGFuZ2UgIiYjeDI5
QTQ7Ii0tPgorPCEtLUVOVElUWSByYW5nZSAiJiN4MjlBNTsiLS0+Cis8IS0tRU5USVRZIGR3YW5n
bGUgIiYjeDI5QTY7Ii0tPgorPCEtLUVOVElUWSB1d2FuZ2xlICImI3gyOUE3OyItLT4KKzwhLS1F
TlRJVFkgYW5nbXNkYWEgIiYjeDI5QTg7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYiAiJiN4MjlB
OTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFjICImI3gyOUFBOyItLT4KKzwhLS1FTlRJVFkgYW5n
bXNkYWQgIiYjeDI5QUI7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZSAiJiN4MjlBQzsiLS0+Cis8
IS0tRU5USVRZIGFuZ21zZGFmICImI3gyOUFEOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkYWcgIiYj
eDI5QUU7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiLS0+Cis8IS0tRU5USVRZ
IGJlbXB0eXYgIiYjeDI5QjA7Ii0tPgorPCEtLUVOVElUWSBkZW1wdHl2ICImI3gyOUIxOyItLT4K
KzwhLS1FTlRJVFkgY2VtcHR5diAiJiN4MjlCMjsiLS0+Cis8IS0tRU5USVRZIHJhZW1wdHl2ICIm
I3gyOUIzOyItLT4KKzwhLS1FTlRJVFkgbGFlbXB0eXYgIiYjeDI5QjQ7Ii0tPgorPCEtLUVOVElU
WSBvaGJhciAiJiN4MjlCNTsiLS0+Cis8IS0tRU5USVRZIG9taWQgIiYjeDI5QjY7Ii0tPgorPCEt
LUVOVElUWSBvcGFyICImI3gyOUI3OyItLT4KKzwhLS1FTlRJVFkgb3BlcnAgIiYjeDI5Qjk7Ii0t
PgorPCEtLUVOVElUWSBvbGNyb3NzICImI3gyOUJCOyItLT4KKzwhLS1FTlRJVFkgb2Rzb2xkICIm
I3gyOUJDOyItLT4KKzwhLS1FTlRJVFkgb2xjaXIgIiYjeDI5QkU7Ii0tPgorPCEtLUVOVElUWSBv
ZmNpciAiJiN4MjlCRjsiLS0+Cis8IS0tRU5USVRZIG9sdCAiJiN4MjlDMDsiLS0+Cis8IS0tRU5U
SVRZIG9ndCAiJiN4MjlDMTsiLS0+Cis8IS0tRU5USVRZIGNpcnNjaXIgIiYjeDI5QzI7Ii0tPgor
PCEtLUVOVElUWSBjaXJFICImI3gyOUMzOyItLT4KKzwhLS1FTlRJVFkgc29sYiAiJiN4MjlDNDsi
LS0+Cis8IS0tRU5USVRZIGJzb2xiICImI3gyOUM1OyItLT4KKzwhLS1FTlRJVFkgYm94Ym94ICIm
I3gyOUM5OyItLT4KKzwhLS1FTlRJVFkgdHJpc2IgIiYjeDI5Q0Q7Ii0tPgorPCEtLUVOVElUWSBy
dHJpbHRyaSAiJiN4MjlDRTsiLS0+Cis8IS0tRU5USVRZIExlZnRUcmlhbmdsZUJhciAiJiN4MjlD
RjsiLS0+Cis8IS0tRU5USVRZIE5vdExlZnRUcmlhbmdsZUJhciAiJiN4MjlDRjsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBSaWdodFRyaWFuZ2xlQmFyICImI3gyOUQwOyItLT4KKzwhLS1FTlRJVFkg
Tm90UmlnaHRUcmlhbmdsZUJhciAiJiN4MjlEMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBpaW5m
aW4gIiYjeDI5REM7Ii0tPgorPCEtLUVOVElUWSBpbmZpbnRpZSAiJiN4MjlERDsiLS0+Cis8IS0t
RU5USVRZIG52aW5maW4gIiYjeDI5REU7Ii0tPgorPCEtLUVOVElUWSBlcGFyc2wgIiYjeDI5RTM7
Ii0tPgorPCEtLUVOVElUWSBzbWVwYXJzbCAiJiN4MjlFNDsiLS0+Cis8IS0tRU5USVRZIGVxdnBh
cnNsICImI3gyOUU1OyItLT4KKzwhLS1FTlRJVFkgbG96ZiAiJiN4MjlFQjsiLS0+Cis8IS0tRU5U
SVRZIGJsYWNrbG96ZW5nZSAiJiN4MjlFQjsiLS0+Cis8IS0tRU5USVRZIFJ1bGVEZWxheWVkICIm
I3gyOUY0OyItLT4KKzwhLS1FTlRJVFkgZHNvbCAiJiN4MjlGNjsiLS0+Cis8IS0tRU5USVRZIHhv
ZG90ICImI3gyQTAwOyItLT4KKzwhLS1FTlRJVFkgYmlnb2RvdCAiJiN4MkEwMDsiLS0+Cis8IS0t
RU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZIGJpZ29wbHVzICImI3gyQTAx
OyItLT4KKzwhLS1FTlRJVFkgeG90aW1lICImI3gyQTAyOyItLT4KKzwhLS1FTlRJVFkgYmlnb3Rp
bWVzICImI3gyQTAyOyItLT4KKzwhLS1FTlRJVFkgeHVwbHVzICImI3gyQTA0OyItLT4KKzwhLS1F
TlRJVFkgYmlndXBsdXMgIiYjeDJBMDQ7Ii0tPgorPCEtLUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7
Ii0tPgorPCEtLUVOVElUWSBiaWdzcWN1cCAiJiN4MkEwNjsiLS0+Cis8IS0tRU5USVRZIHFpbnQg
IiYjeDJBMEM7Ii0tPgorPCEtLUVOVElUWSBpaWlpbnQgIiYjeDJBMEM7Ii0tPgorPCEtLUVOVElU
WSBmcGFydGludCAiJiN4MkEwRDsiLS0+Cis8IS0tRU5USVRZIGNpcmZuaW50ICImI3gyQTEwOyIt
LT4KKzwhLS1FTlRJVFkgYXdpbnQgIiYjeDJBMTE7Ii0tPgorPCEtLUVOVElUWSBycHBvbGludCAi
JiN4MkExMjsiLS0+Cis8IS0tRU5USVRZIHNjcG9saW50ICImI3gyQTEzOyItLT4KKzwhLS1FTlRJ
VFkgbnBvbGludCAiJiN4MkExNDsiLS0+Cis8IS0tRU5USVRZIHBvaW50aW50ICImI3gyQTE1OyIt
LT4KKzwhLS1FTlRJVFkgcXVhdGludCAiJiN4MkExNjsiLS0+Cis8IS0tRU5USVRZIGludGxhcmhr
ICImI3gyQTE3OyItLT4KKzwhLS1FTlRJVFkgcGx1c2NpciAiJiN4MkEyMjsiLS0+Cis8IS0tRU5U
SVRZIHBsdXNhY2lyICImI3gyQTIzOyItLT4KKzwhLS1FTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsi
LS0+Cis8IS0tRU5USVRZIHBsdXNkdSAiJiN4MkEyNTsiLS0+Cis8IS0tRU5USVRZIHBsdXNzaW0g
IiYjeDJBMjY7Ii0tPgorPCEtLUVOVElUWSBwbHVzdHdvICImI3gyQTI3OyItLT4KKzwhLS1FTlRJ
VFkgbWNvbW1hICImI3gyQTI5OyItLT4KKzwhLS1FTlRJVFkgbWludXNkdSAiJiN4MkEyQTsiLS0+
Cis8IS0tRU5USVRZIGxvcGx1cyAiJiN4MkEyRDsiLS0+Cis8IS0tRU5USVRZIHJvcGx1cyAiJiN4
MkEyRTsiLS0+Cis8IS0tRU5USVRZIENyb3NzICImI3gyQTJGOyItLT4KKzwhLS1FTlRJVFkgdGlt
ZXNkICImI3gyQTMwOyItLT4KKzwhLS1FTlRJVFkgdGltZXNiYXIgIiYjeDJBMzE7Ii0tPgorPCEt
LUVOVElUWSBzbWFzaHAgIiYjeDJBMzM7Ii0tPgorPCEtLUVOVElUWSBsb3RpbWVzICImI3gyQTM0
OyItLT4KKzwhLS1FTlRJVFkgcm90aW1lcyAiJiN4MkEzNTsiLS0+Cis8IS0tRU5USVRZIG90aW1l
c2FzICImI3gyQTM2OyItLT4KKzwhLS1FTlRJVFkgT3RpbWVzICImI3gyQTM3OyItLT4KKzwhLS1F
TlRJVFkgb2RpdiAiJiN4MkEzODsiLS0+Cis8IS0tRU5USVRZIHRyaXBsdXMgIiYjeDJBMzk7Ii0t
PgorPCEtLUVOVElUWSB0cmltaW51cyAiJiN4MkEzQTsiLS0+Cis8IS0tRU5USVRZIHRyaXRpbWUg
IiYjeDJBM0I7Ii0tPgorPCEtLUVOVElUWSBpcHJvZCAiJiN4MkEzQzsiLS0+Cis8IS0tRU5USVRZ
IGludHByb2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBhbWFsZyAiJiN4MkEzRjsiLS0+Cis8
IS0tRU5USVRZIGNhcGRvdCAiJiN4MkE0MDsiLS0+Cis8IS0tRU5USVRZIG5jdXAgIiYjeDJBNDI7
Ii0tPgorPCEtLUVOVElUWSBuY2FwICImI3gyQTQzOyItLT4KKzwhLS1FTlRJVFkgY2FwYW5kICIm
I3gyQTQ0OyItLT4KKzwhLS1FTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ii0tPgorPCEtLUVOVElUWSBj
dXBjYXAgIiYjeDJBNDY7Ii0tPgorPCEtLUVOVElUWSBjYXBjdXAgIiYjeDJBNDc7Ii0tPgorPCEt
LUVOVElUWSBjdXBicmNhcCAiJiN4MkE0ODsiLS0+Cis8IS0tRU5USVRZIGNhcGJyY3VwICImI3gy
QTQ5OyItLT4KKzwhLS1FTlRJVFkgY3VwY3VwICImI3gyQTRBOyItLT4KKzwhLS1FTlRJVFkgY2Fw
Y2FwICImI3gyQTRCOyItLT4KKzwhLS1FTlRJVFkgY2N1cHMgIiYjeDJBNEM7Ii0tPgorPCEtLUVO
VElUWSBjY2FwcyAiJiN4MkE0RDsiLS0+Cis8IS0tRU5USVRZIGNjdXBzc20gIiYjeDJBNTA7Ii0t
PgorPCEtLUVOVElUWSBBbmQgIiYjeDJBNTM7Ii0tPgorPCEtLUVOVElUWSBPciAiJiN4MkE1NDsi
LS0+Cis8IS0tRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiLS0+Cis8IS0tRU5USVRZIG9yb3IgIiYj
eDJBNTY7Ii0tPgorPCEtLUVOVElUWSBvcnNsb3BlICImI3gyQTU3OyItLT4KKzwhLS1FTlRJVFkg
YW5kc2xvcGUgIiYjeDJBNTg7Ii0tPgorPCEtLUVOVElUWSBhbmR2ICImI3gyQTVBOyItLT4KKzwh
LS1FTlRJVFkgb3J2ICImI3gyQTVCOyItLT4KKzwhLS1FTlRJVFkgYW5kZCAiJiN4MkE1QzsiLS0+
Cis8IS0tRU5USVRZIG9yZCAiJiN4MkE1RDsiLS0+Cis8IS0tRU5USVRZIHdlZGJhciAiJiN4MkE1
RjsiLS0+Cis8IS0tRU5USVRZIHNkb3RlICImI3gyQTY2OyItLT4KKzwhLS1FTlRJVFkgc2ltZG90
ICImI3gyQTZBOyItLT4KKzwhLS1FTlRJVFkgY29uZ2RvdCAiJiN4MkE2RDsiLS0+Cis8IS0tRU5U
SVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVhc3RlciAiJiN4
MkE2RTsiLS0+Cis8IS0tRU5USVRZIGFwYWNpciAiJiN4MkE2RjsiLS0+Cis8IS0tRU5USVRZIGFw
RSAiJiN4MkE3MDsiLS0+Cis8IS0tRU5USVRZIG5hcEUgIiYjeDJBNzA7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgZXBsdXMgIiYjeDJBNzE7Ii0tPgorPCEtLUVOVElUWSBwbHVzZSAiJiN4MkE3Mjsi
LS0+Cis8IS0tRU5USVRZIEVzaW0gIiYjeDJBNzM7Ii0tPgorPCEtLUVOVElUWSBDb2xvbmUgIiYj
eDJBNzQ7Ii0tPgorPCEtLUVOVElUWSBFcXVhbCAiJiN4MkE3NTsiLS0+Cis8IS0tRU5USVRZIGVE
RG90ICImI3gyQTc3OyItLT4KKzwhLS1FTlRJVFkgZGRvdHNlcSAiJiN4MkE3NzsiLS0+Cis8IS0t
RU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ii0tPgorPCEtLUVOVElUWSBsdGNpciAiJiN4MkE3OTsi
LS0+Cis8IS0tRU5USVRZIGd0Y2lyICImI3gyQTdBOyItLT4KKzwhLS1FTlRJVFkgbHRxdWVzdCAi
JiN4MkE3QjsiLS0+Cis8IS0tRU5USVRZIGd0cXVlc3QgIiYjeDJBN0M7Ii0tPgorPCEtLUVOVElU
WSBsZXMgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsi
LS0+Cis8IS0tRU5USVRZIGxlcXNsYW50ICImI3gyQTdEOyItLT4KKzwhLS1FTlRJVFkgbmxlcyAi
JiN4MkE3RDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3
RDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBubGVxc2xhbnQgIiYjeDJBN0Q7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgZ2VzICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlclNsYW50RXF1
YWwgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBnZXFzbGFudCAiJiN4MkE3RTsiLS0+Cis8IS0t
RU5USVRZIG5nZXMgIiYjeDJBN0U7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclNs
YW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmdlcXNsYW50ICImI3gy
QTdFOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdCAiJiN4MkE3RjsiLS0+Cis8IS0tRU5U
SVRZIGdlc2RvdCAiJiN4MkE4MDsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG8gIiYjeDJBODE7Ii0t
PgorPCEtLUVOVElUWSBnZXNkb3RvICImI3gyQTgyOyItLT4KKzwhLS1FTlRJVFkgbGVzZG90b3Ig
IiYjeDJBODM7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3RvbCAiJiN4MkE4NDsiLS0+Cis8IS0tRU5U
SVRZIGxhcCAiJiN4MkE4NTsiLS0+Cis8IS0tRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ii0t
PgorPCEtLUVOVElUWSBnYXAgIiYjeDJBODY7Ii0tPgorPCEtLUVOVElUWSBndHJhcHByb3ggIiYj
eDJBODY7Ii0tPgorPCEtLUVOVElUWSBsbmUgIiYjeDJBODc7Ii0tPgorPCEtLUVOVElUWSBsbmVx
ICImI3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgZ25lICImI3gyQTg4OyItLT4KKzwhLS1FTlRJVFkg
Z25lcSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGxuYXAgIiYjeDJBODk7Ii0tPgorPCEtLUVO
VElUWSBsbmFwcHJveCAiJiN4MkE4OTsiLS0+Cis8IS0tRU5USVRZIGduYXAgIiYjeDJBOEE7Ii0t
PgorPCEtLUVOVElUWSBnbmFwcHJveCAiJiN4MkE4QTsiLS0+Cis8IS0tRU5USVRZIGxFZyAiJiN4
MkE4QjsiLS0+Cis8IS0tRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ii0tPgorPCEtLUVOVElU
WSBnRWwgIiYjeDJBOEM7Ii0tPgorPCEtLUVOVElUWSBndHJlcXFsZXNzICImI3gyQThDOyItLT4K
KzwhLS1FTlRJVFkgbHNpbWUgIiYjeDJBOEQ7Ii0tPgorPCEtLUVOVElUWSBnc2ltZSAiJiN4MkE4
RTsiLS0+Cis8IS0tRU5USVRZIGxzaW1nICImI3gyQThGOyItLT4KKzwhLS1FTlRJVFkgZ3NpbWwg
IiYjeDJBOTA7Ii0tPgorPCEtLUVOVElUWSBsZ0UgIiYjeDJBOTE7Ii0tPgorPCEtLUVOVElUWSBn
bEUgIiYjeDJBOTI7Ii0tPgorPCEtLUVOVElUWSBsZXNnZXMgIiYjeDJBOTM7Ii0tPgorPCEtLUVO
VElUWSBnZXNsZXMgIiYjeDJBOTQ7Ii0tPgorPCEtLUVOVElUWSBlbHMgIiYjeDJBOTU7Ii0tPgor
PCEtLUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiLS0+Cis8IS0tRU5USVRZIGVncyAiJiN4
MkE5NjsiLS0+Cis8IS0tRU5USVRZIGVxc2xhbnRndHIgIiYjeDJBOTY7Ii0tPgorPCEtLUVOVElU
WSBlbHNkb3QgIiYjeDJBOTc7Ii0tPgorPCEtLUVOVElUWSBlZ3Nkb3QgIiYjeDJBOTg7Ii0tPgor
PCEtLUVOVElUWSBlbCAiJiN4MkE5OTsiLS0+Cis8IS0tRU5USVRZIGVnICImI3gyQTlBOyItLT4K
KzwhLS1FTlRJVFkgc2ltbCAiJiN4MkE5RDsiLS0+Cis8IS0tRU5USVRZIHNpbWcgIiYjeDJBOUU7
Ii0tPgorPCEtLUVOVElUWSBzaW1sRSAiJiN4MkE5RjsiLS0+Cis8IS0tRU5USVRZIHNpbWdFICIm
I3gyQUEwOyItLT4KKzwhLS1FTlRJVFkgTGVzc0xlc3MgIiYjeDJBQTE7Ii0tPgorPCEtLUVOVElU
WSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBHcmVh
dGVyR3JlYXRlciAiJiN4MkFBMjsiLS0+Cis8IS0tRU5USVRZIE5vdE5lc3RlZEdyZWF0ZXJHcmVh
dGVyICImI3gyQUEyOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdsaiAiJiN4MkFBNDsiLS0+Cis8
IS0tRU5USVRZIGdsYSAiJiN4MkFBNTsiLS0+Cis8IS0tRU5USVRZIGx0Y2MgIiYjeDJBQTY7Ii0t
PgorPCEtLUVOVElUWSBndGNjICImI3gyQUE3OyItLT4KKzwhLS1FTlRJVFkgbGVzY2MgIiYjeDJB
QTg7Ii0tPgorPCEtLUVOVElUWSBnZXNjYyAiJiN4MkFBOTsiLS0+Cis8IS0tRU5USVRZIHNtdCAi
JiN4MkFBQTsiLS0+Cis8IS0tRU5USVRZIGxhdCAiJiN4MkFBQjsiLS0+Cis8IS0tRU5USVRZIHNt
dGUgIiYjeDJBQUM7Ii0tPgorPCEtLUVOVElUWSBzbXRlcyAiJiN4MkFBQzsmI3hGRTAwOyItLT4K
KzwhLS1FTlRJVFkgbGF0ZSAiJiN4MkFBRDsiLS0+Cis8IS0tRU5USVRZIGxhdGVzICImI3gyQUFE
OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBidW1wRSAiJiN4MkFBRTsiLS0+Cis8IS0tRU5USVRZ
IHByZSAiJiN4MkFBRjsiLS0+Cis8IS0tRU5USVRZIHByZWNlcSAiJiN4MkFBRjsiLS0+Cis8IS0t
RU5USVRZIFByZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBucHJlICImI3gy
QUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5wcmVjZXEgIiYjeDJBQUY7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgTm90UHJlY2VkZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBzY2UgIiYjeDJBQjA7Ii0tPgorPCEtLUVOVElUWSBzdWNjZXEgIiYjeDJBQjA7Ii0tPgor
PCEtLUVOVElUWSBTdWNjZWVkc0VxdWFsICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgbnNjZSAi
JiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuc3VjY2VxICImI3gyQUIwOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgcHJFICImI3gyQUIzOyItLT4KKzwhLS1FTlRJVFkgc2NFICImI3gyQUI0OyItLT4K
KzwhLS1FTlRJVFkgcHJuRSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5USVRZIHByZWNuZXFxICImI3gy
QUI1OyItLT4KKzwhLS1FTlRJVFkgc2NuRSAiJiN4MkFCNjsiLS0+Cis8IS0tRU5USVRZIHN1Y2Nu
ZXFxICImI3gyQUI2OyItLT4KKzwhLS1FTlRJVFkgcHJhcCAiJiN4MkFCNzsiLS0+Cis8IS0tRU5U
SVRZIHByZWNhcHByb3ggIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBzY2FwICImI3gyQUI4OyIt
LT4KKzwhLS1FTlRJVFkgc3VjY2FwcHJveCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHBybmFw
ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgcHJlY25hcHByb3ggIiYjeDJBQjk7Ii0tPgorPCEt
LUVOVElUWSBzY25hcCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5USVRZIHN1Y2NuYXBwcm94ICImI3gy
QUJBOyItLT4KKzwhLS1FTlRJVFkgUHIgIiYjeDJBQkI7Ii0tPgorPCEtLUVOVElUWSBTYyAiJiN4
MkFCQzsiLS0+Cis8IS0tRU5USVRZIHN1YmRvdCAiJiN4MkFCRDsiLS0+Cis8IS0tRU5USVRZIHN1
cGRvdCAiJiN4MkFCRTsiLS0+Cis8IS0tRU5USVRZIHN1YnBsdXMgIiYjeDJBQkY7Ii0tPgorPCEt
LUVOVElUWSBzdXBwbHVzICImI3gyQUMwOyItLT4KKzwhLS1FTlRJVFkgc3VibXVsdCAiJiN4MkFD
MTsiLS0+Cis8IS0tRU5USVRZIHN1cG11bHQgIiYjeDJBQzI7Ii0tPgorPCEtLUVOVElUWSBzdWJl
ZG90ICImI3gyQUMzOyItLT4KKzwhLS1FTlRJVFkgc3VwZWRvdCAiJiN4MkFDNDsiLS0+Cis8IS0t
RU5USVRZIHN1YkUgIiYjeDJBQzU7Ii0tPgorPCEtLUVOVElUWSBzdWJzZXRlcXEgIiYjeDJBQzU7
Ii0tPgorPCEtLUVOVElUWSBuc3ViRSAiJiN4MkFDNTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBu
c3Vic2V0ZXFxICImI3gyQUM1OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHN1cEUgIiYjeDJBQzY7
Ii0tPgorPCEtLUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ii0tPgorPCEtLUVOVElUWSBuc3Vw
RSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuc3Vwc2V0ZXFxICImI3gyQUM2OyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiLS0+Cis8IS0tRU5USVRZIHN1
cHNpbSAiJiN4MkFDODsiLS0+Cis8IS0tRU5USVRZIHN1Ym5FICImI3gyQUNCOyItLT4KKzwhLS1F
TlRJVFkgc3Vic2V0bmVxcSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHZzdWJuRSAiJiN4MkFD
QjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxcSAiJiN4MkFDQjsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgc3VwbkUgIiYjeDJBQ0M7Ii0tPgorPCEtLUVOVElUWSBzdXBzZXRu
ZXFxICImI3gyQUNDOyItLT4KKzwhLS1FTlRJVFkgdnN1cG5FICImI3gyQUNDOyYjeEZFMDA7Ii0t
PgorPCEtLUVOVElUWSB2YXJzdXBzZXRuZXFxICImI3gyQUNDOyYjeEZFMDA7Ii0tPgorPCEtLUVO
VElUWSBjc3ViICImI3gyQUNGOyItLT4KKzwhLS1FTlRJVFkgY3N1cCAiJiN4MkFEMDsiLS0+Cis8
IS0tRU5USVRZIGNzdWJlICImI3gyQUQxOyItLT4KKzwhLS1FTlRJVFkgY3N1cGUgIiYjeDJBRDI7
Ii0tPgorPCEtLUVOVElUWSBzdWJzdXAgIiYjeDJBRDM7Ii0tPgorPCEtLUVOVElUWSBzdXBzdWIg
IiYjeDJBRDQ7Ii0tPgorPCEtLUVOVElUWSBzdWJzdWIgIiYjeDJBRDU7Ii0tPgorPCEtLUVOVElU
WSBzdXBzdXAgIiYjeDJBRDY7Ii0tPgorPCEtLUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyItLT4K
KzwhLS1FTlRJVFkgc3VwZHN1YiAiJiN4MkFEODsiLS0+Cis8IS0tRU5USVRZIGZvcmt2ICImI3gy
QUQ5OyItLT4KKzwhLS1FTlRJVFkgdG9wZm9yayAiJiN4MkFEQTsiLS0+Cis8IS0tRU5USVRZIG1s
Y3AgIiYjeDJBREI7Ii0tPgorPCEtLUVOVElUWSBEYXNodiAiJiN4MkFFNDsiLS0+Cis8IS0tRU5U
SVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBWZGFzaGwgIiYjeDJB
RTY7Ii0tPgorPCEtLUVOVElUWSBCYXJ2ICImI3gyQUU3OyItLT4KKzwhLS1FTlRJVFkgdkJhciAi
JiN4MkFFODsiLS0+Cis8IS0tRU5USVRZIHZCYXJ2ICImI3gyQUU5OyItLT4KKzwhLS1FTlRJVFkg
VmJhciAiJiN4MkFFQjsiLS0+Cis8IS0tRU5USVRZIE5vdCAiJiN4MkFFQzsiLS0+Cis8IS0tRU5U
SVRZIGJOb3QgIiYjeDJBRUQ7Ii0tPgorPCEtLUVOVElUWSBybm1pZCAiJiN4MkFFRTsiLS0+Cis8
IS0tRU5USVRZIGNpcm1pZCAiJiN4MkFFRjsiLS0+Cis8IS0tRU5USVRZIG1pZGNpciAiJiN4MkFG
MDsiLS0+Cis8IS0tRU5USVRZIHRvcGNpciAiJiN4MkFGMTsiLS0+Cis8IS0tRU5USVRZIG5ocGFy
ICImI3gyQUYyOyItLT4KKzwhLS1FTlRJVFkgcGFyc2ltICImI3gyQUYzOyItLT4KKzwhLS1FTlRJ
VFkgcGFyc2wgIiYjeDJBRkQ7Ii0tPgorPCEtLUVOVElUWSBucGFyc2wgIiYjeDJBRkQ7JiN4MjBF
NTsiLS0+Cis8IS0tRU5USVRZIGZmbGlnICImI3hGQjAwOyItLT4KKzwhLS1FTlRJVFkgZmlsaWcg
IiYjeEZCMDE7Ii0tPgorPCEtLUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiLS0+Cis8IS0tRU5USVRZ
IGZmaWxpZyAiJiN4RkIwMzsiLS0+Cis8IS0tRU5USVRZIGZmbGxpZyAiJiN4RkIwNDsiLS0+Cis8
IS0tRU5USVRZIEFzY3IgIiYjeDFENDlDOyItLT4KKzwhLS1FTlRJVFkgQ3NjciAiJiN4MUQ0OUU7
Ii0tPgorPCEtLUVOVElUWSBEc2NyICImI3gxRDQ5RjsiLS0+Cis8IS0tRU5USVRZIEdzY3IgIiYj
eDFENEEyOyItLT4KKzwhLS1FTlRJVFkgSnNjciAiJiN4MUQ0QTU7Ii0tPgorPCEtLUVOVElUWSBL
c2NyICImI3gxRDRBNjsiLS0+Cis8IS0tRU5USVRZIE5zY3IgIiYjeDFENEE5OyItLT4KKzwhLS1F
TlRJVFkgT3NjciAiJiN4MUQ0QUE7Ii0tPgorPCEtLUVOVElUWSBQc2NyICImI3gxRDRBQjsiLS0+
Cis8IS0tRU5USVRZIFFzY3IgIiYjeDFENEFDOyItLT4KKzwhLS1FTlRJVFkgU3NjciAiJiN4MUQ0
QUU7Ii0tPgorPCEtLUVOVElUWSBUc2NyICImI3gxRDRBRjsiLS0+Cis8IS0tRU5USVRZIFVzY3Ig
IiYjeDFENEIwOyItLT4KKzwhLS1FTlRJVFkgVnNjciAiJiN4MUQ0QjE7Ii0tPgorPCEtLUVOVElU
WSBXc2NyICImI3gxRDRCMjsiLS0+Cis8IS0tRU5USVRZIFhzY3IgIiYjeDFENEIzOyItLT4KKzwh
LS1FTlRJVFkgWXNjciAiJiN4MUQ0QjQ7Ii0tPgorPCEtLUVOVElUWSBac2NyICImI3gxRDRCNTsi
LS0+Cis8IS0tRU5USVRZIGFzY3IgIiYjeDFENEI2OyItLT4KKzwhLS1FTlRJVFkgYnNjciAiJiN4
MUQ0Qjc7Ii0tPgorPCEtLUVOVElUWSBjc2NyICImI3gxRDRCODsiLS0+Cis8IS0tRU5USVRZIGRz
Y3IgIiYjeDFENEI5OyItLT4KKzwhLS1FTlRJVFkgZnNjciAiJiN4MUQ0QkI7Ii0tPgorPCEtLUVO
VElUWSBoc2NyICImI3gxRDRCRDsiLS0+Cis8IS0tRU5USVRZIGlzY3IgIiYjeDFENEJFOyItLT4K
KzwhLS1FTlRJVFkganNjciAiJiN4MUQ0QkY7Ii0tPgorPCEtLUVOVElUWSBrc2NyICImI3gxRDRD
MDsiLS0+Cis8IS0tRU5USVRZIGxzY3IgIiYjeDFENEMxOyItLT4KKzwhLS1FTlRJVFkgbXNjciAi
JiN4MUQ0QzI7Ii0tPgorPCEtLUVOVElUWSBuc2NyICImI3gxRDRDMzsiLS0+Cis8IS0tRU5USVRZ
IHBzY3IgIiYjeDFENEM1OyItLT4KKzwhLS1FTlRJVFkgcXNjciAiJiN4MUQ0QzY7Ii0tPgorPCEt
LUVOVElUWSByc2NyICImI3gxRDRDNzsiLS0+Cis8IS0tRU5USVRZIHNzY3IgIiYjeDFENEM4OyIt
LT4KKzwhLS1FTlRJVFkgdHNjciAiJiN4MUQ0Qzk7Ii0tPgorPCEtLUVOVElUWSB1c2NyICImI3gx
RDRDQTsiLS0+Cis8IS0tRU5USVRZIHZzY3IgIiYjeDFENENCOyItLT4KKzwhLS1FTlRJVFkgd3Nj
ciAiJiN4MUQ0Q0M7Ii0tPgorPCEtLUVOVElUWSB4c2NyICImI3gxRDRDRDsiLS0+Cis8IS0tRU5U
SVRZIHlzY3IgIiYjeDFENENFOyItLT4KKzwhLS1FTlRJVFkgenNjciAiJiN4MUQ0Q0Y7Ii0tPgor
PCEtLUVOVElUWSBBZnIgIiYjeDFENTA0OyItLT4KKzwhLS1FTlRJVFkgQmZyICImI3gxRDUwNTsi
LS0+Cis8IS0tRU5USVRZIERmciAiJiN4MUQ1MDc7Ii0tPgorPCEtLUVOVElUWSBFZnIgIiYjeDFE
NTA4OyItLT4KKzwhLS1FTlRJVFkgRmZyICImI3gxRDUwOTsiLS0+Cis8IS0tRU5USVRZIEdmciAi
JiN4MUQ1MEE7Ii0tPgorPCEtLUVOVElUWSBKZnIgIiYjeDFENTBEOyItLT4KKzwhLS1FTlRJVFkg
S2ZyICImI3gxRDUwRTsiLS0+Cis8IS0tRU5USVRZIExmciAiJiN4MUQ1MEY7Ii0tPgorPCEtLUVO
VElUWSBNZnIgIiYjeDFENTEwOyItLT4KKzwhLS1FTlRJVFkgTmZyICImI3gxRDUxMTsiLS0+Cis8
IS0tRU5USVRZIE9mciAiJiN4MUQ1MTI7Ii0tPgorPCEtLUVOVElUWSBQZnIgIiYjeDFENTEzOyIt
LT4KKzwhLS1FTlRJVFkgUWZyICImI3gxRDUxNDsiLS0+Cis8IS0tRU5USVRZIFNmciAiJiN4MUQ1
MTY7Ii0tPgorPCEtLUVOVElUWSBUZnIgIiYjeDFENTE3OyItLT4KKzwhLS1FTlRJVFkgVWZyICIm
I3gxRDUxODsiLS0+Cis8IS0tRU5USVRZIFZmciAiJiN4MUQ1MTk7Ii0tPgorPCEtLUVOVElUWSBX
ZnIgIiYjeDFENTFBOyItLT4KKzwhLS1FTlRJVFkgWGZyICImI3gxRDUxQjsiLS0+Cis8IS0tRU5U
SVRZIFlmciAiJiN4MUQ1MUM7Ii0tPgorPCEtLUVOVElUWSBhZnIgIiYjeDFENTFFOyItLT4KKzwh
LS1FTlRJVFkgYmZyICImI3gxRDUxRjsiLS0+Cis8IS0tRU5USVRZIGNmciAiJiN4MUQ1MjA7Ii0t
PgorPCEtLUVOVElUWSBkZnIgIiYjeDFENTIxOyItLT4KKzwhLS1FTlRJVFkgZWZyICImI3gxRDUy
MjsiLS0+Cis8IS0tRU5USVRZIGZmciAiJiN4MUQ1MjM7Ii0tPgorPCEtLUVOVElUWSBnZnIgIiYj
eDFENTI0OyItLT4KKzwhLS1FTlRJVFkgaGZyICImI3gxRDUyNTsiLS0+Cis8IS0tRU5USVRZIGlm
ciAiJiN4MUQ1MjY7Ii0tPgorPCEtLUVOVElUWSBqZnIgIiYjeDFENTI3OyItLT4KKzwhLS1FTlRJ
VFkga2ZyICImI3gxRDUyODsiLS0+Cis8IS0tRU5USVRZIGxmciAiJiN4MUQ1Mjk7Ii0tPgorPCEt
LUVOVElUWSBtZnIgIiYjeDFENTJBOyItLT4KKzwhLS1FTlRJVFkgbmZyICImI3gxRDUyQjsiLS0+
Cis8IS0tRU5USVRZIG9mciAiJiN4MUQ1MkM7Ii0tPgorPCEtLUVOVElUWSBwZnIgIiYjeDFENTJE
OyItLT4KKzwhLS1FTlRJVFkgcWZyICImI3gxRDUyRTsiLS0+Cis8IS0tRU5USVRZIHJmciAiJiN4
MUQ1MkY7Ii0tPgorPCEtLUVOVElUWSBzZnIgIiYjeDFENTMwOyItLT4KKzwhLS1FTlRJVFkgdGZy
ICImI3gxRDUzMTsiLS0+Cis8IS0tRU5USVRZIHVmciAiJiN4MUQ1MzI7Ii0tPgorPCEtLUVOVElU
WSB2ZnIgIiYjeDFENTMzOyItLT4KKzwhLS1FTlRJVFkgd2ZyICImI3gxRDUzNDsiLS0+Cis8IS0t
RU5USVRZIHhmciAiJiN4MUQ1MzU7Ii0tPgorPCEtLUVOVElUWSB5ZnIgIiYjeDFENTM2OyItLT4K
KzwhLS1FTlRJVFkgemZyICImI3gxRDUzNzsiLS0+Cis8IS0tRU5USVRZIEFvcGYgIiYjeDFENTM4
OyItLT4KKzwhLS1FTlRJVFkgQm9wZiAiJiN4MUQ1Mzk7Ii0tPgorPCEtLUVOVElUWSBEb3BmICIm
I3gxRDUzQjsiLS0+Cis8IS0tRU5USVRZIEVvcGYgIiYjeDFENTNDOyItLT4KKzwhLS1FTlRJVFkg
Rm9wZiAiJiN4MUQ1M0Q7Ii0tPgorPCEtLUVOVElUWSBHb3BmICImI3gxRDUzRTsiLS0+Cis8IS0t
RU5USVRZIElvcGYgIiYjeDFENTQwOyItLT4KKzwhLS1FTlRJVFkgSm9wZiAiJiN4MUQ1NDE7Ii0t
PgorPCEtLUVOVElUWSBLb3BmICImI3gxRDU0MjsiLS0+Cis8IS0tRU5USVRZIExvcGYgIiYjeDFE
NTQzOyItLT4KKzwhLS1FTlRJVFkgTW9wZiAiJiN4MUQ1NDQ7Ii0tPgorPCEtLUVOVElUWSBPb3Bm
ICImI3gxRDU0NjsiLS0+Cis8IS0tRU5USVRZIFNvcGYgIiYjeDFENTRBOyItLT4KKzwhLS1FTlRJ
VFkgVG9wZiAiJiN4MUQ1NEI7Ii0tPgorPCEtLUVOVElUWSBVb3BmICImI3gxRDU0QzsiLS0+Cis8
IS0tRU5USVRZIFZvcGYgIiYjeDFENTREOyItLT4KKzwhLS1FTlRJVFkgV29wZiAiJiN4MUQ1NEU7
Ii0tPgorPCEtLUVOVElUWSBYb3BmICImI3gxRDU0RjsiLS0+Cis8IS0tRU5USVRZIFlvcGYgIiYj
eDFENTUwOyItLT4KKzwhLS1FTlRJVFkgYW9wZiAiJiN4MUQ1NTI7Ii0tPgorPCEtLUVOVElUWSBi
b3BmICImI3gxRDU1MzsiLS0+Cis8IS0tRU5USVRZIGNvcGYgIiYjeDFENTU0OyItLT4KKzwhLS1F
TlRJVFkgZG9wZiAiJiN4MUQ1NTU7Ii0tPgorPCEtLUVOVElUWSBlb3BmICImI3gxRDU1NjsiLS0+
Cis8IS0tRU5USVRZIGZvcGYgIiYjeDFENTU3OyItLT4KKzwhLS1FTlRJVFkgZ29wZiAiJiN4MUQ1
NTg7Ii0tPgorPCEtLUVOVElUWSBob3BmICImI3gxRDU1OTsiLS0+Cis8IS0tRU5USVRZIGlvcGYg
IiYjeDFENTVBOyItLT4KKzwhLS1FTlRJVFkgam9wZiAiJiN4MUQ1NUI7Ii0tPgorPCEtLUVOVElU
WSBrb3BmICImI3gxRDU1QzsiLS0+Cis8IS0tRU5USVRZIGxvcGYgIiYjeDFENTVEOyItLT4KKzwh
LS1FTlRJVFkgbW9wZiAiJiN4MUQ1NUU7Ii0tPgorPCEtLUVOVElUWSBub3BmICImI3gxRDU1Rjsi
LS0+Cis8IS0tRU5USVRZIG9vcGYgIiYjeDFENTYwOyItLT4KKzwhLS1FTlRJVFkgcG9wZiAiJiN4
MUQ1NjE7Ii0tPgorPCEtLUVOVElUWSBxb3BmICImI3gxRDU2MjsiLS0+Cis8IS0tRU5USVRZIHJv
cGYgIiYjeDFENTYzOyItLT4KKzwhLS1FTlRJVFkgc29wZiAiJiN4MUQ1NjQ7Ii0tPgorPCEtLUVO
VElUWSB0b3BmICImI3gxRDU2NTsiLS0+Cis8IS0tRU5USVRZIHVvcGYgIiYjeDFENTY2OyItLT4K
KzwhLS1FTlRJVFkgdm9wZiAiJiN4MUQ1Njc7Ii0tPgorPCEtLUVOVElUWSB3b3BmICImI3gxRDU2
ODsiLS0+Cis8IS0tRU5USVRZIHhvcGYgIiYjeDFENTY5OyItLT4KKzwhLS1FTlRJVFkgeW9wZiAi
JiN4MUQ1NkE7Ii0tPgorPCEtLUVOVElUWSB6b3BmICImI3gxRDU2QjsiLS0+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L2Rvd25sb2FkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQppbmRleCAzNzM2ZDU0ZjE1ZGM1ZTljNjZj
NTYwNzMwYWNkMDhmNDNlNTNkYjMwLi5mOGJlMDNlZmIyNzUwYWQ3NTRjNjAzOGY3MzQxYTk3NjEy
OTFkZjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQucHkKQEAg
LTI2LDYgKzI2LDcgQEAgaWYgTVlQWToKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUK
ICAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBPcHRp
b25hbAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pCiAKQEAgLTUwLDkgKzUxLDkgQEAgZGVmIHNob3VsZF9kb3dubG9hZChtYW5p
ZmVzdF9wYXRoLCByZWJ1aWxkX3RpbWU9dGltZWRlbHRhKGRheXM9NSkpOgogCiAKIGRlZiBtZXJn
ZV9wcl90YWdzKHJlcG9fcm9vdCwgbWF4X2NvdW50PTUwKToKLSAgICAjIHR5cGU6IChzdHIsIGlu
dCkgLT4gTGlzdFtzdHJdCisgICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3RbVGV4dF0KICAg
ICBnaXRmdW5jID0gZ2l0KHJlcG9fcm9vdCkKLSAgICB0YWdzID0gW10gICMgdHlwZTogTGlzdFtz
dHJdCisgICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3RbVGV4dF0KICAgICBpZiBnaXRmdW5jIGlz
IE5vbmU6CiAgICAgICAgIHJldHVybiB0YWdzCiAgICAgZm9yIGxpbmUgaW4gZ2l0ZnVuYygibG9n
IiwgIi0tZm9ybWF0PSVEIiwgIi0tbWF4LWNvdW50PSVzIiAlIG1heF9jb3VudCkuc3BsaXQoIlxu
Iik6CkBAIC03OSw3ICs4MCw3IEBAIGRlZiBzY29yZV9uYW1lKG5hbWUpOgogCiAKIGRlZiBnaXRo
dWJfdXJsKHRhZ3MpOgotICAgICMgdHlwZTogKExpc3Rbc3RyXSkgLT4gT3B0aW9uYWxbTGlzdFtz
dHJdXQorICAgICMgdHlwZTogKExpc3RbVGV4dF0pIC0+IE9wdGlvbmFsW0xpc3RbVGV4dF1dCiAg
ICAgZm9yIHRhZyBpbiB0YWdzOgogICAgICAgICB1cmwgPSAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNv
bS9yZXBvcy93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3JlbGVhc2VzL3RhZ3MvJXMiICUgdGFnCiAg
ICAgICAgIHRyeToKQEAgLTExMSw4ICsxMTIsOCBAQCBkZWYgZ2l0aHViX3VybCh0YWdzKToKIAog
ZGVmIGRvd25sb2FkX21hbmlmZXN0KAogICAgICAgICBtYW5pZmVzdF9wYXRoLCAgIyB0eXBlOiBz
dHIKLSAgICAgICAgdGFnc19mdW5jLCAgIyB0eXBlOiBDYWxsYWJsZVtbXSwgTGlzdFtzdHJdXQot
ICAgICAgICB1cmxfZnVuYywgICMgdHlwZTogQ2FsbGFibGVbW0xpc3Rbc3RyXV0sIE9wdGlvbmFs
W0xpc3Rbc3RyXV1dCisgICAgICAgIHRhZ3NfZnVuYywgICMgdHlwZTogQ2FsbGFibGVbW10sIExp
c3RbVGV4dF1dCisgICAgICAgIHVybF9mdW5jLCAgIyB0eXBlOiBDYWxsYWJsZVtbTGlzdFtUZXh0
XV0sIE9wdGlvbmFsW0xpc3RbVGV4dF1dXQogICAgICAgICBmb3JjZT1GYWxzZSAgIyB0eXBlOiBi
b29sCiApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9pdGVtLnB5CmluZGV4IDFjNDAzNGFkMDVmOTlhMjYzMTU5MDFhMThjOGY0MDJkNWZhNjRj
MTAuLmVlMDdmMGQxZDc5NzE3NTM3NGIxNjlhNDY4YjRjMmM4NTA1Nzk2ZGEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvaXRlbS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGNvcHkgaW1w
b3J0IGNvcHkKK2ltcG9ydCBvcy5wYXRoCiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QK
IGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3Zl
cy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHBhcnNlCkBAIC02MSw2ICs2MSwxMSBA
QCBjbGFzcyBNYW5pZmVzdEl0ZW0od2l0aF9tZXRhY2xhc3MoTWFuaWZlc3RJdGVtTWV0YSkpOgog
ICAgICAgICAiIiJUaGUgaXRlbSdzIHR5cGUiIiIKICAgICAgICAgcGFzcwogCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHBhdGhfcGFydHMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gVHVw
bGVbVGV4dCwgLi4uXQorICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5wYXRoLnNwbGl0KG9zLnBh
dGguc2VwKSkKKwogICAgIGRlZiBrZXkoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gSGFz
aGFibGUKICAgICAgICAgIiIiQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRlc3QiIiIKQEAg
LTEwNCwxNCArMTA5LDE0IEBAIGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgog
ICAgICAgICAgICAgICAgICB0ZXN0c19yb290LCAgIyB0eXBlOiBUZXh0CiAgICAgICAgICAgICAg
ICAgIHBhdGgsICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgdXJsX2Jhc2UsICAjIHR5
cGU6IFRleHQKLSAgICAgICAgICAgICAgICAgdXJsLCAgIyB0eXBlOiBUZXh0CisgICAgICAgICAg
ICAgICAgIHVybCwgICMgdHlwZTogT3B0aW9uYWxbVGV4dF0KICAgICAgICAgICAgICAgICAgKipl
eHRyYXMgICMgdHlwZTogQW55CiAgICAgICAgICAgICAgICAgICk6CiAgICAgICAgICMgdHlwZTog
KC4uLikgLT4gTm9uZQogICAgICAgICBzdXBlcihVUkxNYW5pZmVzdEl0ZW0sIHNlbGYpLl9faW5p
dF9fKHRlc3RzX3Jvb3QsIHBhdGgpCiAgICAgICAgIGFzc2VydCB1cmxfYmFzZVswXSA9PSAiLyIK
ICAgICAgICAgc2VsZi51cmxfYmFzZSA9IHVybF9iYXNlCi0gICAgICAgIGFzc2VydCB1cmxbMF0g
IT0gIi8iCisgICAgICAgIGFzc2VydCB1cmwgaXMgTm9uZSBvciB1cmxbMF0gIT0gIi8iCiAgICAg
ICAgIHNlbGYuX3VybCA9IHVybAogICAgICAgICBzZWxmLl9leHRyYXMgPSBleHRyYXMKIApAQCAt
MTIzLDIwICsxMjgsMjggQEAgY2xhc3MgVVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiAg
ICAgQHByb3BlcnR5CiAgICAgZGVmIHVybChzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBU
ZXh0CisgICAgICAgIHJlbF91cmwgPSBzZWxmLl91cmwgb3Igc2VsZi5wYXRoLnJlcGxhY2Uob3Mu
cGF0aC5zZXAsIHUiLyIpCiAgICAgICAgICMgd2UgY2FuIG91dHBlcmZvcm0gdXJsam9pbiwgYmVj
YXVzZSB3ZSBrbm93IHdlIGp1c3QgaGF2ZSBwYXRoIHJlbGF0aXZlIFVSTHMKICAgICAgICAgaWYg
c2VsZi51cmxfYmFzZSA9PSAiLyI6Ci0gICAgICAgICAgICByZXR1cm4gIi8iICsgc2VsZi5fdXJs
Ci0gICAgICAgIHJldHVybiB1cmxqb2luKHNlbGYudXJsX2Jhc2UsIHNlbGYuX3VybCkKKyAgICAg
ICAgICAgIHJldHVybiAiLyIgKyByZWxfdXJsCisgICAgICAgIHJldHVybiB1cmxqb2luKHNlbGYu
dXJsX2Jhc2UsIHJlbF91cmwpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaHR0cHMoc2VsZik6
CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAogICAgICAgICBmbGFncyA9IHNldCh1cmxwYXJz
ZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxpdCgiLiIpWzE6LTFdKQotICAg
ICAgICByZXR1cm4gKCJodHRwcyIgaW4gZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdz
KQorICAgICAgICByZXR1cm4gImh0dHBzIiBpbiBmbGFncyBvciAic2VydmljZXdvcmtlciIgaW4g
ZmxhZ3MKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoMihzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBib29sCisgICAgICAgIGZsYWdzID0gc2V0KHVybHBhcnNlKHNlbGYudXJsKS5wYXRo
LnJzcGxpdCgiLyIsIDEpWzFdLnNwbGl0KCIuIilbMTotMV0pCisgICAgICAgIHJldHVybiAiaDIi
IGluIGZsYWdzCiAKICAgICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAt
PiBUdXBsZVtUZXh0LCBEaWN0W0FueSwgQW55XV0KLSAgICAgICAgcnYgPSAoc2VsZi5fdXJsLCB7
fSkgICMgdHlwZTogVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1dCisgICAgICAgICMgdHlwZTog
KCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3RbQW55LCBBbnldXQorICAgICAgICByZWxf
dXJsID0gTm9uZSBpZiBzZWxmLl91cmwgPT0gc2VsZi5wYXRoLnJlcGxhY2Uob3MucGF0aC5zZXAs
IHUiLyIpIGVsc2Ugc2VsZi5fdXJsCisgICAgICAgIHJ2ID0gKHJlbF91cmwsIHt9KSAgIyB0eXBl
OiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgRGljdFtBbnksIEFueV1dCiAgICAgICAgIHJldHVybiBy
dgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0xNzcsMTMgKzE5MCwxOCBAQCBjbGFzcyBUZXN0aGFy
bmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25h
bFtUZXh0XQogICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgianNzaGVsbCIpCiAKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBP
cHRpb25hbFtib29sXQorICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgicXVpYyIpCisK
ICAgICBAcHJvcGVydHkKICAgICBkZWYgc2NyaXB0X21ldGFkYXRhKHNlbGYpOgogICAgICAgICAj
IHR5cGU6ICgpIC0+IE9wdGlvbmFsW1RleHRdCiAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYXMu
Z2V0KCJzY3JpcHRfbWV0YWRhdGEiKQogCiAgICAgZGVmIHRvX2pzb24oc2VsZik6Ci0gICAgICAg
ICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtUZXh0LCBBbnldXQorICAgICAgICAjIHR5
cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBEaWN0W1RleHQsIEFueV1dCiAgICAgICAg
IHJ2ID0gc3VwZXIoVGVzdGhhcm5lc3NUZXN0LCBzZWxmKS50b19qc29uKCkKICAgICAgICAgaWYg
c2VsZi50aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcnZbLTFdWyJ0aW1lb3V0Il0g
PSBzZWxmLnRpbWVvdXQKQEAgLTE5MSwyMyArMjA5LDI3IEBAIGNsYXNzIFRlc3RoYXJuZXNzVGVz
dChVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgcnZbLTFdWyJ0ZXN0ZHJpdmVyIl0gPSBz
ZWxmLnRlc3Rkcml2ZXIKICAgICAgICAgaWYgc2VsZi5qc3NoZWxsOgogICAgICAgICAgICAgcnZb
LTFdWyJqc3NoZWxsIl0gPSBUcnVlCisgICAgICAgIGlmIHNlbGYucXVpYyBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHJ2Wy0xXVsicXVpYyJdID0gc2VsZi5xdWljCiAgICAgICAgIGlmIHNlbGYu
c2NyaXB0X21ldGFkYXRhOgotICAgICAgICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9
IHNlbGYuc2NyaXB0X21ldGFkYXRhCisgICAgICAgICAgICBydlstMV1bInNjcmlwdF9tZXRhZGF0
YSJdID0gWyhrLCB2KSBmb3IgKGssdikgaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGFdCiAgICAgICAg
IHJldHVybiBydgogCiAKLWNsYXNzIFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CitjbGFz
cyBSZWZUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0gKCJyZWZlcmVuY2Vz
IiwpCiAKKyAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIKKwogICAgIGRlZiBfX2luaXRfXyhzZWxm
LAogICAgICAgICAgICAgICAgICB0ZXN0c19yb290LCAgIyB0eXBlOiBUZXh0CiAgICAgICAgICAg
ICAgICAgIHBhdGgsICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgdXJsX2Jhc2UsICAj
IHR5cGU6IFRleHQKLSAgICAgICAgICAgICAgICAgdXJsLCAgIyB0eXBlOiBUZXh0CisgICAgICAg
ICAgICAgICAgIHVybCwgICMgdHlwZTogT3B0aW9uYWxbVGV4dF0KICAgICAgICAgICAgICAgICAg
cmVmZXJlbmNlcz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtMaXN0W1R1cGxlW1RleHQsIFRleHRd
XV0KICAgICAgICAgICAgICAgICAgKipleHRyYXMgICMgdHlwZTogQW55CiAgICAgICAgICAgICAg
ICAgICk6Ci0gICAgICAgIHN1cGVyKFJlZlRlc3RCYXNlLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19y
b290LCBwYXRoLCB1cmxfYmFzZSwgdXJsLCAqKmV4dHJhcykKKyAgICAgICAgc3VwZXIoUmVmVGVz
dCwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jhc2UsIHVybCwgKipleHRy
YXMpCiAgICAgICAgIGlmIHJlZmVyZW5jZXMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVm
ZXJlbmNlcyA9IFtdICAjIHR5cGU6IExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dCiAgICAgICAgIGVs
c2U6CkBAIC0yNDcsOCArMjY5LDkgQEAgY2xhc3MgUmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVt
KToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdG9fanNvbihzZWxmKTogICMgdHlwZTog
aWdub3JlCi0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0
LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KLSAgICAgICAgcnYgPSAoc2VsZi5fdXJsLCBzZWxm
LnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBMaXN0W1R1cGxlW1RleHQsIFRl
eHRdXSwgRGljdFtUZXh0LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlv
bmFsW1RleHRdLCBMaXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtUZXh0LCBBbnldXQorICAg
ICAgICByZWxfdXJsID0gTm9uZSBpZiBzZWxmLl91cmwgPT0gc2VsZi5wYXRoIGVsc2Ugc2VsZi5f
dXJsCisgICAgICAgIHJ2ID0gKHJlbF91cmwsIHNlbGYucmVmZXJlbmNlcywge30pICAjIHR5cGU6
IFR1cGxlW09wdGlvbmFsW1RleHRdLCBMaXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtUZXh0
LCBBbnldXQogICAgICAgICBleHRyYXMgPSBydlstMV0KICAgICAgICAgaWYgc2VsZi50aW1lb3V0
IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZXh0cmFzWyJ0aW1lb3V0Il0gPSBzZWxmLnRpbWVv
dXQKQEAgLTI2Niw3ICsyODksNyBAQCBjbGFzcyBSZWZUZXN0QmFzZShVUkxNYW5pZmVzdEl0ZW0p
OgogICAgICAgICAgICAgICAgICAgcGF0aCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAg
ICAgb2JqICAjIHR5cGU6IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0
W0FueSwgQW55XV0KICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikg
LT4gUmVmVGVzdEJhc2UKKyAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBSZWZUZXN0CiAgICAgICAg
IHRlc3RzX3Jvb3QgPSBtYW5pZmVzdC50ZXN0c19yb290CiAgICAgICAgIGFzc2VydCB0ZXN0c19y
b290IGlzIG5vdCBOb25lCiAgICAgICAgIHBhdGggPSB0b19vc19wYXRoKHBhdGgpCkBAIC0yNzgs
MzggKzMwMSw2IEBAIGNsYXNzIFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlcywKICAgICAgICAgICAgICAgICAgICAqKmV4dHJhcykKIAot
ICAgIGRlZiB0b19SZWZUZXN0KHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFJlZlRlc3QK
LSAgICAgICAgaWYgdHlwZShzZWxmKSA9PSBSZWZUZXN0OgotICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uoc2VsZiwgUmVmVGVzdCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAg
IHJ2ID0gY29weShzZWxmKQotICAgICAgICBydi5fX2NsYXNzX18gPSBSZWZUZXN0Ci0gICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHJ2LCBSZWZUZXN0KQotICAgICAgICByZXR1cm4gcnYKLQotICAg
IGRlZiB0b19SZWZUZXN0Tm9kZShzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0
Tm9kZQotICAgICAgICBpZiB0eXBlKHNlbGYpID09IFJlZlRlc3ROb2RlOgotICAgICAgICAgICAg
YXNzZXJ0IGlzaW5zdGFuY2Uoc2VsZiwgUmVmVGVzdE5vZGUpCi0gICAgICAgICAgICByZXR1cm4g
c2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikKLSAgICAgICAgcnYuX19jbGFzc19fID0gUmVm
VGVzdE5vZGUKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocnYsIFJlZlRlc3ROb2RlKQotICAg
ICAgICByZXR1cm4gcnYKLQotCi1jbGFzcyBSZWZUZXN0Tm9kZShSZWZUZXN0QmFzZSk6Ci0gICAg
X19zbG90c19fID0gKCkKLQotICAgIGl0ZW1fdHlwZSA9ICJyZWZ0ZXN0X25vZGUiCi0KLQotY2xh
c3MgUmVmVGVzdChSZWZUZXN0QmFzZSk6Ci0gICAgX19zbG90c19fID0gKCkKLQotICAgIGl0ZW1f
dHlwZSA9ICJyZWZ0ZXN0IgotCiAKIGNsYXNzIE1hbnVhbFRlc3QoVVJMTWFuaWZlc3RJdGVtKToK
ICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMzUxLDcgKzM0Miw3IEBAIGNsYXNzIFdlYkRyaXZlclNw
ZWNUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYXMuZ2V0
KCJ0aW1lb3V0IikKIAogICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgp
IC0+IFR1cGxlW1RleHQsIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBU
dXBsZVtPcHRpb25hbFtUZXh0XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVy
KFdlYkRyaXZlclNwZWNUZXN0LCBzZWxmKS50b19qc29uKCkKICAgICAgICAgaWYgc2VsZi50aW1l
b3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcnZbLTFdWyJ0aW1lb3V0Il0gPSBzZWxmLnRp
bWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5CmluZGV4IDJh
ZDdmY2NmNDg2NzViZGNjN2I1NDQ3NDdlMWQxODI0YTU5ODU0MmYuLjM0NWVlYjZkMmIwYmVlYjNj
ZTNjMTM5MDk0OWNiOWUyZDE5YTQzNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9tYW5pZmVzdC5weQpAQCAtMSwxNSArMSwyNSBAQAoraW1wb3J0IGlvCiBpbXBvcnQgaXRlcnRv
b2xzCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRh
YmxlTWFwcGluZywgZGVmYXVsdGRpY3QKLWZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIGl0ZXJr
ZXlzLCBpdGVydmFsdWVzLCBzdHJpbmdfdHlwZXMsIGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKK2Zy
b20gY29weSBpbXBvcnQgZGVlcGNvcHkKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQb29s
LCBjcHVfY291bnQKK2Zyb20gc2l4IGltcG9ydCAoCisgICAgUFkzLAorICAgIGJpbmFyeV90eXBl
LAorICAgIGVuc3VyZV90ZXh0LAorICAgIGl0ZXJpdGVtcywKKyAgICBpdGVydmFsdWVzLAorICAg
IHN0cmluZ190eXBlcywKKyAgICB0ZXh0X3R5cGUsCispCiAKIGZyb20gLiBpbXBvcnQgdmNzCi1m
cm9tIC5pdGVtIGltcG9ydCAoQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgTWFuaWZlc3RJdGVtLCBN
YW51YWxUZXN0LCBSZWZUZXN0LCBSZWZUZXN0Tm9kZSwKLSAgICAgICAgICAgICAgICAgICBTdXBw
b3J0RmlsZSwgVGVzdGhhcm5lc3NUZXN0LCBWaXN1YWxUZXN0LCBXZWJEcml2ZXJTcGVjVGVzdCwg
Q3Jhc2hUZXN0KQorZnJvbSAuaXRlbSBpbXBvcnQgKENvbmZvcm1hbmNlQ2hlY2tlclRlc3QsIE1h
bmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVzdCwgU3VwcG9ydEZpbGUsCisgICAgICAgICAg
ICAgICAgICAgVGVzdGhhcm5lc3NUZXN0LCBWaXN1YWxUZXN0LCBXZWJEcml2ZXJTcGVjVGVzdCwg
Q3Jhc2hUZXN0KQogZnJvbSAubG9nIGltcG9ydCBnZXRfbG9nZ2VyCiBmcm9tIC5zb3VyY2VmaWxl
IGltcG9ydCBTb3VyY2VGaWxlCi1mcm9tIC51dGlscyBpbXBvcnQgZnJvbV9vc19wYXRoLCB0b19v
c19wYXRoCitmcm9tIC50eXBlZGF0YSBpbXBvcnQgVHlwZURhdGEKIAogTVlQWSA9IEZhbHNlCiBp
ZiBNWVBZOgpAQCAtMTksMTYgKzI5LDE0IEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IENvbnRhaW5lcgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBEaWN0CiAgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IElPCi0gICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCiAgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCi0gICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9u
YWwKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgU2V0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFRl
eHQKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VHlwZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgotICAgIGZyb20gdHlwaW5nIGltcG9y
dCBjYXN0CiAKIHRyeToKICAgICBpbXBvcnQgdWpzb24KQEAgLTM2LDcgKzQ0LDcgQEAgdHJ5Ogog
ZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZhc3RfanNvbiA9IGpzb24gICMgdHlwZTogaWdub3Jl
CiAKLUNVUlJFTlRfVkVSU0lPTiA9IDcKK0NVUlJFTlRfVkVSU0lPTiA9IDggICMgdHlwZTogaW50
CiAKIAogY2xhc3MgTWFuaWZlc3RFcnJvcihFeGNlcHRpb24pOgpAQCAtNDksNyArNTcsNiBAQCBj
bGFzcyBNYW5pZmVzdFZlcnNpb25NaXNtYXRjaChNYW5pZmVzdEVycm9yKToKIAogaXRlbV9jbGFz
c2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3RoYXJuZXNzVGVzdCwKICAgICAgICAgICAgICAgICAi
cmVmdGVzdCI6IFJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rfbm9kZSI6IFJlZlRl
c3ROb2RlLAogICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiBDcmFzaFRlc3QsCiAgICAgICAg
ICAgICAgICAgIm1hbnVhbCI6IE1hbnVhbFRlc3QsCiAgICAgICAgICAgICAgICAgIndkc3BlYyI6
IFdlYkRyaXZlclNwZWNUZXN0LApAQCAtNTgsMTU2ICs2NSwxMiBAQCBpdGVtX2NsYXNzZXMgPSB7
InRlc3RoYXJuZXNzIjogVGVzdGhhcm5lc3NUZXN0LAogICAgICAgICAgICAgICAgICJzdXBwb3J0
IjogU3VwcG9ydEZpbGV9ICAjIHR5cGU6IERpY3Rbc3RyLCBUeXBlW01hbmlmZXN0SXRlbV1dCiAK
IAotaWYgTVlQWToKLSAgICBUeXBlRGF0YVR5cGUgPSBNdXRhYmxlTWFwcGluZ1tUZXh0LCBTZXRb
TWFuaWZlc3RJdGVtXV0KLWVsc2U6Ci0gICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmcK
LQotY2xhc3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
bWFuaWZlc3QsIHR5cGVfY2xzKToKLSAgICAgICAgIyB0eXBlOiAoTWFuaWZlc3QsIFR5cGVbTWFu
aWZlc3RJdGVtXSkgLT4gTm9uZQotICAgICAgICAiIiJEaWN0LWxpa2Ugb2JqZWN0IGNvbnRhaW5p
bmcgdGhlIFRlc3RJdGVtcyBmb3IgZWFjaCB0ZXN0IHR5cGUuCi0KLSAgICAgICAgTG9hZGluZyBh
biBhY3R1YWwgSXRlbSBjbGFzcyBmb3IgZWFjaCB0ZXN0IGlzIHVubmVjZXNzYXJpbHkKLSAgICAg
ICAgc2xvdywgc28gdGhpcyBjbGFzcyBhbGxvd3MgbGF6eS1sb2FkaW5nIG9mIHRoZSB0ZXN0Ci0g
ICAgICAgIGl0ZW1zLiBXaGVuIHRoZSBtYW5pZmVzdCBpcyBsb2FkZWQgd2Ugc3RvcmUgdGhlIHJh
dyBqc29uCi0gICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRlc3QgdHlwZSwgYW5kIG9ubHkg
Y3JlYXRlIGFuIEl0ZW0KLSAgICAgICAgc3ViY2xhc3Mgd2hlbiB0aGUgdGVzdCBpcyBhY2Nlc3Nl
ZC4gSW4gb3JkZXIgdG8gcmVtYWluCi0gICAgICAgIEFQSS1jb21wYXRpYmxlIHdpdGggY29uc3Vt
ZXJzIHRoYXQgZGVwZW5kIG9uIGdldHRpbmcgYW4gSXRlbQotICAgICAgICBmcm9tIGl0ZXJhdGlv
biwgd2UgZG8gZWdlcmx5IGxvYWQgYWxsIGl0ZW1zIHdoZW4gaXRlcmF0aW5nCi0gICAgICAgIG92
ZXIgdGhlIGNsYXNzLiIiIgotICAgICAgICBzZWxmLm1hbmlmZXN0ID0gbWFuaWZlc3QKLSAgICAg
ICAgc2VsZi50eXBlX2NscyA9IHR5cGVfY2xzCi0gICAgICAgIHNlbGYuanNvbl9kYXRhID0ge30g
ICMgdHlwZTogT3B0aW9uYWxbRGljdFtUZXh0LCBMaXN0W0FueV1dXQotICAgICAgICBzZWxmLnRl
c3RzX3Jvb3QgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KLSAgICAgICAgc2VsZi5kYXRh
ID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV0KLQotICAgIGRlZiBf
X2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBTZXRbTWFu
aWZlc3RJdGVtXQotICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuZGF0YSBhbmQgc2VsZi5qc29u
X2RhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmxvYWQoa2V5KQotICAgICAgICBy
ZXR1cm4gc2VsZi5kYXRhW2tleV0KLQotICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKLSAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCi0gICAgICAgIHJldHVybiBib29sKHNlbGYuZGF0YSkgb3Ig
Ym9vbChzZWxmLmpzb25fZGF0YSkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICAj
IHR5cGU6ICgpIC0+IGludAotICAgICAgICBydiA9IGxlbihzZWxmLmRhdGEpCi0gICAgICAgIGlm
IHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcnYgKz0gbGVuKHNlbGYu
anNvbl9kYXRhKQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxm
LCBrZXkpOgotICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBOb25lCi0gICAgICAgIGlmIGtleSBp
biBzZWxmLmRhdGE6Ci0gICAgICAgICAgICBkZWwgc2VsZi5kYXRhW2tleV0KLSAgICAgICAgZWxp
ZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGRlbCBzZWxmLmpzb25f
ZGF0YVtmcm9tX29zX3BhdGgoa2V5KV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNl
IEtleUVycm9yCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAg
ICAgICMgdHlwZTogKFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dKSAtPiBOb25lCi0gICAgICAgIGlm
IHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGF0aCA9IGZyb21fb3Nf
cGF0aChrZXkpCi0gICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuanNvbl9kYXRhOgotICAgICAg
ICAgICAgICAgIGRlbCBzZWxmLmpzb25fZGF0YVtwYXRoXQotICAgICAgICBzZWxmLmRhdGFba2V5
XSA9IHZhbHVlCi0KLSAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6Ci0gICAgICAgICMg
dHlwZTogKEFueSkgLT4gYm9vbAotICAgICAgICBzZWxmLmxvYWRfYWxsKCkKLSAgICAgICAgcmV0
dXJuIGtleSBpbiBzZWxmLmRhdGEKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAg
IyB0eXBlOiAoKSAtPiBJdGVyYXRvcltUZXh0XQotICAgICAgICBzZWxmLmxvYWRfYWxsKCkKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZGF0YS5fX2l0ZXJfXygpCi0KLSAgICBkZWYgaXRlcnZhbHVlcyhz
ZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltTZXRbTWFuaWZlc3RJdGVtXV0K
LSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBpdGVydmFsdWVzKHNlbGYu
ZGF0YSkKLQotICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbVHVwbGVbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dXQotICAgICAgICBzZWxmLmxv
YWRfYWxsKCkKLSAgICAgICAgcmV0dXJuIGl0ZXJpdGVtcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYg
dmFsdWVzKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbU2V0W01hbmlmZXN0SXRl
bV1dCi0gICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlcnZhbHVlcygpKQotCi0gICAgZGVmIGl0
ZW1zKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbVHVwbGVbVGV4dCwgU2V0W01h
bmlmZXN0SXRlbV1dXQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJpdGVtcygpKQotCi0g
ICAgZGVmIGxvYWQoc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gTm9uZQot
ICAgICAgICAiIiJMb2FkIGEgc3BlY2lmaWMgSXRlbSBnaXZlbiBhIHBhdGgiIiIKLSAgICAgICAg
aWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRhID0gc2V0KCkK
LSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAgICAgICAgZm9yIHRl
c3QgaW4gc2VsZi5qc29uX2RhdGEuZ2V0KHBhdGgsIFtdKToKLSAgICAgICAgICAgICAgICBtYW5p
ZmVzdF9pdGVtID0gc2VsZi50eXBlX2Nscy5mcm9tX2pzb24oc2VsZi5tYW5pZmVzdCwgcGF0aCwg
dGVzdCkKLSAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVtKQotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmpzb25fZGF0YVtwYXRoXQotICAgICAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAg
IHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgotCi0gICAgZGVmIGxvYWRfYWxsKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgp
IC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBhbGwgdGVzdCBpdGVtcyBpbiB0aGlzIGNsYXNzIiIi
Ci0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9y
IHBhdGgsIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmpzb25fZGF0YSk6Ci0gICAgICAgICAgICAg
ICAga2V5ID0gdG9fb3NfcGF0aChwYXRoKQotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBzZWxm
LmRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZGF0
YSA9IHNldCgpCi0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5qc29uX2RhdGEuZ2V0
KHBhdGgsIFtdKToKLSAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlw
ZV9jbHMuZnJvbV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGEuYWRkKG1hbmlmZXN0X2l0ZW0pCi0gICAgICAgICAgICAgICAgc2VsZi5kYXRh
W2tleV0gPSBkYXRhCi0gICAgICAgICAgICBzZWxmLmpzb25fZGF0YSA9IE5vbmUKLQotICAgIGRl
ZiBzZXRfanNvbihzZWxmLCB0ZXN0c19yb290LCBkYXRhKToKLSAgICAgICAgIyB0eXBlOiAoc3Ry
LCBEaWN0W1RleHQsIEFueV0pIC0+IE5vbmUKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0
YSwgZGljdCk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJHb3QgYSAlcyBleHBlY3Rl
ZCBhIGRpY3QiICUgKHR5cGUoZGF0YSkpKQotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSB0ZXN0
c19yb290Ci0gICAgICAgIHNlbGYuanNvbl9kYXRhID0gZGF0YQotCi0gICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtUZXh0LCBBbnldCi0gICAgICAgIGRh
dGEgPSB7Ci0gICAgICAgICAgICBmcm9tX29zX3BhdGgocGF0aCk6Ci0gICAgICAgICAgICBbdCBm
b3IgdCBpbiBzb3J0ZWQodGVzdC50b19qc29uKCkgZm9yIHRlc3QgaW4gdGVzdHMpXQotICAgICAg
ICAgICAgZm9yIHBhdGgsIHRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEpCi0gICAgICAgIH0K
LQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlm
IG5vdCBkYXRhOgotICAgICAgICAgICAgICAgICMgYXZvaWQgY29weWluZyBpZiB0aGVyZSdzIG5v
dGhpbmcgaGVyZSB5ZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5qc29uX2RhdGEKLSAg
ICAgICAgICAgIGRhdGEudXBkYXRlKHNlbGYuanNvbl9kYXRhKQotCi0gICAgICAgIHJldHVybiBk
YXRhCi0KLSAgICBkZWYgcGF0aHMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gU2V0W1Rl
eHRdCi0gICAgICAgICIiIkdldCBhIGxpc3Qgb2YgYWxsIHBhdGhzIGNvbnRhaW5pbmcgaXRlbXMg
b2YgdGhpcyB0eXBlLAotICAgICAgICB3aXRob3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwg
dGhlIGl0ZW1zIiIiCi0gICAgICAgIHJ2ID0gc2V0KGl0ZXJrZXlzKHNlbGYuZGF0YSkpCi0gICAg
ICAgIGlmIHNlbGYuanNvbl9kYXRhOgotICAgICAgICAgICAgcnYgfD0ge3RvX29zX3BhdGgoaXRl
bSkgZm9yIGl0ZW0gaW4gaXRlcmtleXMoc2VsZi5qc29uX2RhdGEpfQotICAgICAgICByZXR1cm4g
cnYKLQorZGVmIGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMoc291cmNlX2ZpbGUpOgorICAgICMgdHlw
ZTogKFNvdXJjZUZpbGUpIC0+IFR1cGxlW1R1cGxlW1RleHQsIC4uLl0sIFRleHQsIFNldFtNYW5p
ZmVzdEl0ZW1dLCBUZXh0XQorICAgIHJlbF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3Bh
dGhfcGFydHMKKyAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCisgICAgZmlsZV9oYXNoID0gc291cmNlX2ZpbGUuaGFzaAorICAgIHJldHVy
biByZWxfcGF0aF9wYXJ0cywgbmV3X3R5cGUsIHNldChtYW5pZmVzdF9pdGVtcyksIGZpbGVfaGFz
aAogCiBpZiBNWVBZOgogICAgIE1hbmlmZXN0RGF0YVR5cGUgPSBEaWN0W0FueSwgVHlwZURhdGFd
CkBAIC0yMzcsMTcgKzEwMCwyNSBAQCBjbGFzcyBNYW5pZmVzdERhdGEoTWFuaWZlc3REYXRhVHlw
ZSk6CiAgICAgICAgIHdpdGhvdXQgYWN0dWFsbHkgY29uc3RydWN0aW5nIGFsbCB0aGUgaXRlbXMi
IiIKICAgICAgICAgcnYgPSBzZXQoKSAgIyB0eXBlOiBTZXRbVGV4dF0KICAgICAgICAgZm9yIGl0
ZW1fZGF0YSBpbiBpdGVydmFsdWVzKHNlbGYpOgotICAgICAgICAgICAgcnYgfD0gc2V0KGl0ZW1f
ZGF0YS5wYXRocygpKQorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbV9kYXRhOgorICAgICAg
ICAgICAgICAgIHJ2LmFkZChvcy5wYXRoLnNlcC5qb2luKGl0ZW0pKQogICAgICAgICByZXR1cm4g
cnYKIAorICAgIGRlZiB0eXBlX2J5X3BhdGgoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
RGljdFtUdXBsZVtUZXh0LCAuLi5dLCBzdHJdCisgICAgICAgIHJ2ID0ge30KKyAgICAgICAgZm9y
IGl0ZW1fdHlwZSwgaXRlbV9kYXRhIGluIGl0ZXJpdGVtcyhzZWxmKToKKyAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydltpdGVtXSA9IGl0ZW1fdHlw
ZQorICAgICAgICByZXR1cm4gcnYKKworCiAKIGNsYXNzIE1hbmlmZXN0KG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3Q9Tm9uZSwgdXJsX2Jhc2U9Ii8iKToKICAgICAg
ICAgIyB0eXBlOiAoT3B0aW9uYWxbc3RyXSwgVGV4dCkgLT4gTm9uZQogICAgICAgICBhc3NlcnQg
dXJsX2Jhc2UgaXMgbm90IE5vbmUKLSAgICAgICAgc2VsZi5fcGF0aF9oYXNoID0ge30gICMgdHlw
ZTogRGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0XV0KICAgICAgICAgc2VsZi5fZGF0YSA9IE1h
bmlmZXN0RGF0YShzZWxmKSAgIyB0eXBlOiBNYW5pZmVzdERhdGEKLSAgICAgICAgc2VsZi5fcmVm
dGVzdF9ub2Rlc19ieV91cmwgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgVW5p
b25bUmVmVGVzdCwgUmVmVGVzdE5vZGVdXV0KICAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVz
dHNfcm9vdCAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1
cmxfYmFzZSAgIyB0eXBlOiBUZXh0CiAKQEAgLTI1OCw0NyArMTI5LDM0IEBAIGNsYXNzIE1hbmlm
ZXN0KG9iamVjdCk6CiAgICAgZGVmIGl0ZXJ0eXBlcyhzZWxmLCAqdHlwZXMpOgogICAgICAgICAj
IHR5cGU6ICgqc3RyKSAtPiBJdGVyYXRvcltUdXBsZVtzdHIsIFRleHQsIFNldFtNYW5pZmVzdEl0
ZW1dXV0KICAgICAgICAgZm9yIGl0ZW1fdHlwZSBpbiAodHlwZXMgb3Igc29ydGVkKHNlbGYuX2Rh
dGEua2V5cygpKSk6Ci0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzb3J0ZWQoc2VsZi5fZGF0YVtp
dGVtX3R5cGVdKToKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX2RhdGFbaXRlbV90eXBl
XToKKyAgICAgICAgICAgICAgICBzdHJfcGF0aCA9IG9zLnNlcC5qb2luKHBhdGgpCiAgICAgICAg
ICAgICAgICAgdGVzdHMgPSBzZWxmLl9kYXRhW2l0ZW1fdHlwZV1bcGF0aF0KLSAgICAgICAgICAg
ICAgICB5aWVsZCBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzCisgICAgICAgICAgICAgICAgeWllbGQg
aXRlbV90eXBlLCBzdHJfcGF0aCwgdGVzdHMKIAogICAgIGRlZiBpdGVycGF0aChzZWxmLCBwYXRo
KToKLSAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmF0b3JbTWFuaWZlc3RJdGVtXQorICAg
ICAgICAjIHR5cGU6IChUZXh0KSAtPiBJdGVyYWJsZVtNYW5pZmVzdEl0ZW1dCisgICAgICAgIHRw
YXRoID0gdHVwbGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICAgICAgZm9yIHR5cGVf
dGVzdHMgaW4gc2VsZi5fZGF0YS52YWx1ZXMoKToKLSAgICAgICAgICAgIGkgPSB0eXBlX3Rlc3Rz
LmdldChwYXRoLCBzZXQoKSkKKyAgICAgICAgICAgIGkgPSB0eXBlX3Rlc3RzLmdldCh0cGF0aCwg
c2V0KCkpCiAgICAgICAgICAgICBhc3NlcnQgaSBpcyBub3QgTm9uZQogICAgICAgICAgICAgZm9y
IHRlc3QgaW4gaToKICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0CiAKICAgICBkZWYgaXRlcmRp
cihzZWxmLCBkaXJfbmFtZSk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+IEl0ZXJhdG9yW01h
bmlmZXN0SXRlbV0KLSAgICAgICAgaWYgbm90IGRpcl9uYW1lLmVuZHN3aXRoKG9zLnBhdGguc2Vw
KToKLSAgICAgICAgICAgIGRpcl9uYW1lID0gZGlyX25hbWUgKyBvcy5wYXRoLnNlcAorICAgICAg
ICAjIHR5cGU6IChUZXh0KSAtPiBJdGVyYWJsZVtNYW5pZmVzdEl0ZW1dCisgICAgICAgIHRwYXRo
ID0gdHVwbGUoZGlyX25hbWUuc3BsaXQob3MucGF0aC5zZXApKQorICAgICAgICB0cGF0aF9sZW4g
PSBsZW4odHBhdGgpCisKICAgICAgICAgZm9yIHR5cGVfdGVzdHMgaW4gc2VsZi5fZGF0YS52YWx1
ZXMoKToKLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiB0eXBlX3Rlc3RzLml0ZXJpdGVt
cygpOgotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aChkaXJfbmFtZSk6CisgICAg
ICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4gaXRlcml0ZW1zKHR5cGVfdGVzdHMpOgorICAgICAg
ICAgICAgICAgIGlmIHBhdGhbOnRwYXRoX2xlbl0gPT0gdHBhdGg6CiAgICAgICAgICAgICAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVz
dAogCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlZnRlc3Rfbm9kZXNfYnlfdXJsKHNlbGYpOgot
ICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4dCwgVW5pb25bUmVmVGVzdCwgUmVmVGVzdE5v
ZGVdXQotICAgICAgICBpZiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5X3VybCBpcyBOb25lOgotICAg
ICAgICAgICAgYnlfdXJsID0ge30KLSAgICAgICAgICAgIGZvciBwYXRoLCBub2RlcyBpbiBpdGVy
dG9vbHMuY2hhaW4oaXRlcml0ZW1zKHNlbGYuX2RhdGFbInJlZnRlc3QiXSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJpdGVtcyhzZWxmLl9kYXRh
WyJyZWZ0ZXN0X25vZGUiXSkpOgotICAgICAgICAgICAgICAgIGZvciBub2RlIGluIG5vZGVzOgot
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShub2RlLCAoUmVmVGVzdCwgUmVm
VGVzdE5vZGUpKQotICAgICAgICAgICAgICAgICAgICBieV91cmxbbm9kZS51cmxdID0gbm9kZQot
ICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmwgPSBieV91cmwKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsCi0KLSAgICBkZWYgZ2V0X3JlZmVyZW5j
ZShzZWxmLCB1cmwpOgotICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBPcHRpb25hbFtNYW5pZmVz
dEl0ZW1dCi0gICAgICAgIHJldHVybiBzZWxmLnJlZnRlc3Rfbm9kZXNfYnlfdXJsLmdldCh1cmwp
Ci0KLSAgICBkZWYgdXBkYXRlKHNlbGYsIHRyZWUpOgotICAgICAgICAjIHR5cGU6IChJdGVyYWJs
ZVtUdXBsZVtVbmlvbltTb3VyY2VGaWxlLCBieXRlc10sIGJvb2xdXSkgLT4gYm9vbAorICAgIGRl
ZiB1cGRhdGUoc2VsZiwgdHJlZSwgcGFyYWxsZWw9VHJ1ZSk6CisgICAgICAgICMgdHlwZTogKEl0
ZXJhYmxlW1R1cGxlW1VuaW9uW1NvdXJjZUZpbGUsIGJ5dGVzXSwgYm9vbF1dLCBib29sKSAtPiBi
b29sCiAgICAgICAgICIiIlVwZGF0ZSB0aGUgbWFuaWZlc3QgZ2l2ZW4gYW4gaXRlcmFibGUgb2Yg
aXRlbXMgdGhhdCBtYWtlIHVwIHRoZSB1cGRhdGVkIG1hbmlmZXN0LgogCiAgICAgICAgIFRoZSBp
dGVyYWJsZSBtdXN0IGVpdGhlciBnZW5lcmF0ZSB0dXBsZXMgb2YgdGhlIGZvcm0gKFNvdXJjZUZp
bGUsIFRydWUpIGZvciBwYXRocwpAQCAtMzA2LDE3MCArMTY0LDEyNyBAQCBjbGFzcyBNYW5pZmVz
dChvYmplY3QpOgogICAgICAgICB1bnVzdWFsIEFQSSBpcyBkZXNpZ25lZCBhcyBhbiBvcHRpbWlz
dGFpb24gbWVhbmluZyB0aGF0IFNvdXJjZUZpbGUgaXRlbXMgbmVlZCBub3QgYmUKICAgICAgICAg
Y29uc3RydWN0ZWQgaW4gdGhlIGNhc2Ugd2UgYXJlIG5vdCB1cGRhdGluZyBhIHBhdGgsIGJ1dCB0
aGUgYWJzZW5jZSBvZiBhbiBpdGVtIGZyb20KICAgICAgICAgdGhlIGl0ZXJhdG9yIG1heSBiZSB1
c2VkIHRvIHJlbW92ZSBkZWZ1bmN0IGVudHJpZXMgZnJvbSB0aGUgbWFuaWZlc3QuIiIiCi0gICAg
ICAgIGFsbF9yZWZ0ZXN0X25vZGVzID0gW10gICMgdHlwZTogTGlzdFtUdXBsZVtNYW5pZmVzdEl0
ZW0sIFRleHRdXQotICAgICAgICBzZWVuX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRd
CiAKICAgICAgICAgY2hhbmdlZCA9IEZhbHNlCi0gICAgICAgIHJlZnRlc3RfY2hhbmdlcyA9IEZh
bHNlCiAKICAgICAgICAgIyBDcmVhdGUgbG9jYWwgdmFyaWFibGUgcmVmZXJlbmNlcyB0byB0aGVz
ZSBkaWN0cyBzbyB3ZSBhdm9pZCB0aGUKICAgICAgICAgIyBhdHRyaWJ1dGUgYWNjZXNzIGluIHRo
ZSBob3QgbG9vcCBiZWxvdwotICAgICAgICBwYXRoX2hhc2ggPSBzZWxmLl9wYXRoX2hhc2ggICMg
dHlwZTogRGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0XV0KICAgICAgICAgZGF0YSA9IHNlbGYu
X2RhdGEKIAotICAgICAgICBwcmV2X2ZpbGVzID0gZGF0YS5wYXRocygpICAjIHR5cGU6IFNldFtU
ZXh0XQorICAgICAgICB0eXBlcyA9IGRhdGEudHlwZV9ieV9wYXRoKCkKKyAgICAgICAgZGVsZXRl
ZCA9IHNldCh0eXBlcykKIAotICAgICAgICByZWZ0ZXN0X3R5cGVzID0gKCJyZWZ0ZXN0IiwgInJl
ZnRlc3Rfbm9kZSIpCisgICAgICAgIHRvX3VwZGF0ZSA9IFtdCiAKLSAgICAgICAgZm9yIHNvdXJj
ZV9maWxlLCB1cGRhdGUgaW4gdHJlZToKKyAgICAgICAgZm9yIHNvdXJjZV9maWxlX29yX3BhdGgs
IHVwZGF0ZSBpbiB0cmVlOgogICAgICAgICAgICAgaWYgbm90IHVwZGF0ZToKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2VfZmlsZSwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5
cGUpKQotICAgICAgICAgICAgICAgIHJlbF9wYXRoID0gc291cmNlX2ZpbGUgICMgdHlwZTogVGV4
dAotICAgICAgICAgICAgICAgIHNlZW5fZmlsZXMuYWRkKHJlbF9wYXRoKQotICAgICAgICAgICAg
ICAgIGFzc2VydCByZWxfcGF0aCBpbiBwYXRoX2hhc2gKLSAgICAgICAgICAgICAgICBvbGRfaGFz
aCwgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdICAjIHR5cGU6IFR1cGxlW1RleHQsIFRl
eHRdCi0gICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbXMgPSBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0g
ICMgdHlwZTogSXRlcmFibGVbTWFuaWZlc3RJdGVtXQotICAgICAgICAgICAgICAgICAgICBhbGxf
cmVmdGVzdF9ub2Rlcy5leHRlbmQoKGl0ZW0sIG9sZF9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVz
dF9pdGVtcykKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2VfZmlsZV9v
cl9wYXRoLCAoYmluYXJ5X3R5cGUsIHRleHRfdHlwZSkpCisgICAgICAgICAgICAgICAgcGF0aCA9
IGVuc3VyZV90ZXh0KHNvdXJjZV9maWxlX29yX3BhdGgpCisgICAgICAgICAgICAgICAgZGVsZXRl
ZC5yZW1vdmUodHVwbGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpKQogICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGUsIGJ5
dGVzKQotICAgICAgICAgICAgICAgIHJlbF9wYXRoID0gc291cmNlX2ZpbGUucmVsX3BhdGgKLSAg
ICAgICAgICAgICAgICBzZWVuX2ZpbGVzLmFkZChyZWxfcGF0aCkKLQotICAgICAgICAgICAgICAg
IGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMgdHlwZTogVGV4dAorICAgICAgICAgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShzb3VyY2VfZmlsZV9vcl9wYXRoLCAoYmluYXJ5X3R5
cGUsIHRleHRfdHlwZSkpCisgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBzb3VyY2VfZmls
ZV9vcl9wYXRoCisgICAgICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMgPSBzb3VyY2VfZmlsZS5y
ZWxfcGF0aF9wYXJ0cworICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJlbF9wYXRo
X3BhcnRzLCB0dXBsZSkKIAotICAgICAgICAgICAgICAgIGlzX25ldyA9IHJlbF9wYXRoIG5vdCBp
biBwYXRoX2hhc2ggICMgdHlwZTogYm9vbAorICAgICAgICAgICAgICAgIGlzX25ldyA9IHJlbF9w
YXRoX3BhcnRzIG5vdCBpbiBkZWxldGVkICAjIHR5cGU6IGJvb2wKICAgICAgICAgICAgICAgICBo
YXNoX2NoYW5nZWQgPSBGYWxzZSAgIyB0eXBlOiBib29sCiAKICAgICAgICAgICAgICAgICBpZiBu
b3QgaXNfbmV3OgotICAgICAgICAgICAgICAgICAgICBvbGRfaGFzaCwgb2xkX3R5cGUgPSBwYXRo
X2hhc2hbcmVsX3BhdGhdCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHJlbF9w
YXRoX3BhcnRzKQorICAgICAgICAgICAgICAgICAgICBvbGRfdHlwZSA9IHR5cGVzW3JlbF9wYXRo
X3BhcnRzXQorICAgICAgICAgICAgICAgICAgICBvbGRfaGFzaCA9IGRhdGFbb2xkX3R5cGVdLmhh
c2hlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAgICAgICAgICAgICAgZmlsZV9oYXNoID0gc291
cmNlX2ZpbGUuaGFzaCAgIyB0eXBlOiBUZXh0CiAgICAgICAgICAgICAgICAgICAgIGlmIG9sZF9o
YXNoICE9IGZpbGVfaGFzaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld190eXBlLCBtYW5p
ZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0X2l0ZW1zKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc2hfY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IG5ld190eXBlICE9IG9sZF90eXBlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBk
YXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBv
bGRfdHlwZSBpbiByZWZ0ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBuZXdfdHlwZSA9IG9sZF90eXBlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiBvbGRfdHlwZSBpbiByZWZ0ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2l0ZW1zID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbmV3X3R5cGUsIG1hbmlmZXN0
X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQotCi0gICAgICAgICAgICAgICAg
aWYgbmV3X3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgYWxsX3Jl
ZnRlc3Rfbm9kZXMuZXh0ZW5kKChpdGVtLCBmaWxlX2hhc2gpIGZvciBpdGVtIGluIG1hbmlmZXN0
X2l0ZW1zKQotICAgICAgICAgICAgICAgICAgICBpZiBpc19uZXcgb3IgaGFzaF9jaGFuZ2VkOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAgICAgICAg
ICAgICAgIGVsaWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YVtuZXdfdHlwZV1bcmVsX3BhdGhdID0gc2V0KG1hbmlmZXN0X2l0ZW1zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsIGRhdGFbb2xkX3R5cGVdW3JlbF9wYXRoX3BhcnRzXQogCiAgICAg
ICAgICAgICAgICAgaWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAg
ICAgcGF0aF9oYXNoW3JlbF9wYXRoXSA9IChmaWxlX2hhc2gsIG5ld190eXBlKQotICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICB0b191cGRhdGUu
YXBwZW5kKHNvdXJjZV9maWxlKQorCisgICAgICAgIGlmIHRvX3VwZGF0ZToKKyAgICAgICAgICAg
IGNoYW5nZWQgPSBUcnVlCisKKyAgICAgICAgaWYgcGFyYWxsZWwgYW5kIGxlbih0b191cGRhdGUp
ID4gMjUgYW5kIGNwdV9jb3VudCgpID4gMToKKyAgICAgICAgICAgICMgMjUgZGVyaXZlZCBleHBl
cmltZW50YWxseSAoMjAyMC0wMSkgdG8gYmUgYXBwcm94aW1hdGVseQorICAgICAgICAgICAgIyB0
aGUgcG9pbnQgYXQgd2hpY2ggaXQgaXMgcXVpY2tlciB0byBjcmVhdGUgUG9vbCBhbmQKKyAgICAg
ICAgICAgICMgcGFyYWxsZWxpemUgdGhpcworICAgICAgICAgICAgcG9vbCA9IFBvb2woKQorCisg
ICAgICAgICAgICAjIGNodW5rc2l6ZSBzZXQgPiAxIHdoZW4gbW9yZSB0aGFuIDEwMDAwIHRlc3Rz
LCBiZWNhdXNlCisgICAgICAgICAgICAjIGNodW5raW5nIGlzIGEgbmV0LWdhaW4gb25jZSB3ZSBn
ZXQgdG8gdmVyeSBsYXJnZSBudW1iZXJzCisgICAgICAgICAgICAjIG9mIGl0ZW1zIChhZ2Fpbiwg
ZXhwZXJpbWVudGFsbHksIDIwMjAtMDEpCisgICAgICAgICAgICByZXN1bHRzID0gcG9vbC5pbWFw
X3Vub3JkZXJlZChjb21wdXRlX21hbmlmZXN0X2l0ZW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2h1bmtzaXplPW1heCgxLCBsZW4odG9fdXBkYXRlKSAvLyAxMDAw
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgICMgdHlwZTog
SXRlcmF0b3JbVHVwbGVbVHVwbGVbVGV4dCwgLi4uXSwgVGV4dCwgU2V0W01hbmlmZXN0SXRlbV0s
IFRleHRdXQorICAgICAgICBlbGlmIFBZMzoKKyAgICAgICAgICAgIHJlc3VsdHMgPSBtYXAoY29t
cHV0ZV9tYW5pZmVzdF9pdGVtcywgdG9fdXBkYXRlKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmVzdWx0cyA9IGl0ZXJ0b29scy5pbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsIHRvX3Vw
ZGF0ZSkKKworICAgICAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6CisgICAgICAgICAgICByZWxf
cGF0aF9wYXJ0cywgbmV3X3R5cGUsIG1hbmlmZXN0X2l0ZW1zLCBmaWxlX2hhc2ggPSByZXN1bHQK
KyAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3JlbF9wYXRoX3BhcnRzXSA9IG1hbmlmZXN0X2l0
ZW1zCisgICAgICAgICAgICBkYXRhW25ld190eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFydHNdID0g
ZmlsZV9oYXNoCiAKLSAgICAgICAgZGVsZXRlZCA9IHByZXZfZmlsZXMgLSBzZWVuX2ZpbGVzCiAg
ICAgICAgIGlmIGRlbGV0ZWQ6CiAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotICAgICAgICAg
ICAgZm9yIHJlbF9wYXRoIGluIGRlbGV0ZWQ6Ci0gICAgICAgICAgICAgICAgaWYgcmVsX3BhdGgg
aW4gcGF0aF9oYXNoOgotICAgICAgICAgICAgICAgICAgICBfLCBvbGRfdHlwZSA9IHBhdGhfaGFz
aFtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90
eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfY2hhbmdlcyA9IFRydWUKLSAg
ICAgICAgICAgICAgICAgICAgZGVsIHBhdGhfaGFzaFtyZWxfcGF0aF0KLSAgICAgICAgICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGRhdGFbb2xkX3R5cGVdW3Jl
bF9wYXRoXQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIHRlc3RfZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcmVsX3BhdGggaW4gdGVzdF9kYXRhOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbCB0ZXN0X2RhdGFbcmVsX3BhdGhdCi0KLSAgICAgICAgaWYgcmVmdGVzdF9jaGFu
Z2VzOgotICAgICAgICAgICAgcmVmdGVzdHMsIHJlZnRlc3Rfbm9kZXMsIGNoYW5nZWRfaGFzaGVz
ID0gc2VsZi5fY29tcHV0ZV9yZWZ0ZXN0cyhhbGxfcmVmdGVzdF9ub2RlcykKLSAgICAgICAgICAg
IHJlZnRlc3RfZGF0YSA9IGRhdGFbInJlZnRlc3QiXQotICAgICAgICAgICAgcmVmdGVzdF9kYXRh
LmNsZWFyKCkKLSAgICAgICAgICAgIGZvciBwYXRoLCBpdGVtcyBpbiBpdGVyaXRlbXMocmVmdGVz
dHMpOgotICAgICAgICAgICAgICAgIGlmIE1ZUFk6Ci0gICAgICAgICAgICAgICAgICAgIHJlZnRl
c3RfZGF0YVtwYXRoXSA9IGNhc3QoU2V0W01hbmlmZXN0SXRlbV0sIGl0ZW1zKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfZGF0YVtwYXRoXSA9IGl0
ZW1zCi0KLSAgICAgICAgICAgIHJlZnRlc3Rfbm9kZV9kYXRhID0gZGF0YVsicmVmdGVzdF9ub2Rl
Il0KLSAgICAgICAgICAgIHJlZnRlc3Rfbm9kZV9kYXRhLmNsZWFyKCkKLSAgICAgICAgICAgIGZv
ciBub2RlX3BhdGgsIG5vZGVfaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3Rfbm9kZXMpOgotICAg
ICAgICAgICAgICAgIGlmIE1ZUFk6Ci0gICAgICAgICAgICAgICAgICAgIHJlZnRlc3Rfbm9kZV9k
YXRhW25vZGVfcGF0aF0gPSBjYXN0KFNldFtNYW5pZmVzdEl0ZW1dLCBub2RlX2l0ZW1zKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlZnRlc3Rfbm9kZV9kYXRh
W25vZGVfcGF0aF0gPSBub2RlX2l0ZW1zCi0KLSAgICAgICAgICAgIHBhdGhfaGFzaC51cGRhdGUo
Y2hhbmdlZF9oYXNoZXMpCisgICAgICAgICAgICBmb3IgcmVsX3BhdGhfcGFydHMgaW4gZGVsZXRl
ZDoKKyAgICAgICAgICAgICAgICBmb3IgdGVzdF9kYXRhIGluIGl0ZXJ2YWx1ZXMoZGF0YSk6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoX3BhcnRzIGluIHRlc3RfZGF0YToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbCB0ZXN0X2RhdGFbcmVsX3BhdGhfcGFydHNdCiAKICAgICAg
ICAgcmV0dXJuIGNoYW5nZWQKIAotICAgIGRlZiBfY29tcHV0ZV9yZWZ0ZXN0cyhzZWxmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVzICAjIHR5cGU6IExpc3RbVHVwbGVb
TWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKToKLSAgICAg
ICAgIyB0eXBlOiAoLi4uKSAtPiBUdXBsZVtEaWN0W1RleHQsIFNldFtSZWZUZXN0XV0sIERpY3Rb
VGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0sIERpY3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4dF1dXQot
ICAgICAgICBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5X3VybCA9IHt9Ci0gICAgICAgIGhhc19pbmJv
dW5kID0gc2V0KCkKLSAgICAgICAgZm9yIGl0ZW0sIF8gaW4gcmVmdGVzdF9ub2RlczoKLSAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0g
ICAgICAgICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gaXRlbS5yZWZlcmVuY2VzOgotICAg
ICAgICAgICAgICAgIGhhc19pbmJvdW5kLmFkZChyZWZfdXJsKQotCi0gICAgICAgIHJlZnRlc3Rz
ID0gZGVmYXVsdGRpY3Qoc2V0KSAgIyB0eXBlOiBEaWN0W1RleHQsIFNldFtSZWZUZXN0XV0KLSAg
ICAgICAgcmVmZXJlbmNlcyA9IGRlZmF1bHRkaWN0KHNldCkgICMgdHlwZTogRGljdFtUZXh0LCBT
ZXRbUmVmVGVzdE5vZGVdXQotICAgICAgICBjaGFuZ2VkX2hhc2hlcyA9IHt9ICAjIHR5cGU6IERp
Y3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4dF1dCi0KLSAgICAgICAgZm9yIGl0ZW0sIGZpbGVfaGFz
aCBpbiByZWZ0ZXN0X25vZGVzOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXRlbSwg
KFJlZlRlc3ROb2RlLCBSZWZUZXN0KSkKLSAgICAgICAgICAgIGlmIGl0ZW0udXJsIGluIGhhc19p
bmJvdW5kOgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHJlZmVyZW5jZQotICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgUmVmVGVzdCk6Ci0gICAgICAgICAgICAgICAgICAg
IGl0ZW0gPSBpdGVtLnRvX1JlZlRlc3ROb2RlKCkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZF9oYXNoZXNbaXRlbS5wYXRoXSA9IChmaWxlX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pdGVtX3R5cGUpCi0gICAgICAgICAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXRlbSwgUmVmVGVzdE5vZGUpCi0gICAgICAgICAgICAgICAg
cmVmZXJlbmNlc1tpdGVtLnBhdGhdLmFkZChpdGVtKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFJlZlRlc3ROb2RlKToKLSAgICAgICAgICAg
ICAgICAgICAgaXRlbSA9IGl0ZW0udG9fUmVmVGVzdCgpCi0gICAgICAgICAgICAgICAgICAgIGNo
YW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9oYXNoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXRlbV90eXBlKQotICAgICAgICAg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJlZlRlc3QpCi0gICAgICAgICAgICAgICAg
cmVmdGVzdHNbaXRlbS5wYXRoXS5hZGQoaXRlbSkKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3Rh
bmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0gICAgICAgICAgICBzZWxmLl9yZWZ0
ZXN0X25vZGVzX2J5X3VybFtpdGVtLnVybF0gPSBpdGVtCi0KLSAgICAgICAgcmV0dXJuIHJlZnRl
c3RzLCByZWZlcmVuY2VzLCBjaGFuZ2VkX2hhc2hlcwotCi0gICAgZGVmIHRvX2pzb24oc2VsZik6
Ci0gICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgZGVmIHRvX2pzb24o
c2VsZiwgY2FsbGVyX293bnNfb2JqPVRydWUpOgorICAgICAgICAjIHR5cGU6IChib29sKSAtPiBE
aWN0W1RleHQsIEFueV0KKyAgICAgICAgIiIiRHVtcCBhIG1hbmlmZXN0IGludG8gYSBvYmplY3Qg
d2hpY2ggY2FuIGJlIHNlcmlhbGl6ZWQgYXMgSlNPTgorCisgICAgICAgIElmIGNhbGxlcl9vd25z
X29iaiBpcyBGYWxzZSwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIHJlbWFpbnMKKyAgICAgICAgb3du
ZWQgYnkgdGhlIG1hbmlmZXN0OyBpdCBpcyBfdml0YWxseSBpbXBvcnRhbnRfIHRoYXQgX25vXwor
ICAgICAgICAoZXZlbiByZWFkKSBvcGVyYXRpb24gaXMgZG9uZSBvbiB0aGUgbWFuaWZlc3QsIGFz
IG90aGVyd2lzZQorICAgICAgICBvYmplY3RzIHdpdGhpbiB0aGUgb2JqZWN0IGdyYXBoIHJvb3Rl
ZCBhdCB0aGUgcmV0dXJuIHZhbHVlIGNhbgorICAgICAgICBiZSBtdXRhdGVkLiBUaGlzIGVzc2Vu
dGlhbGx5IG1ha2VzIHRoaXMgbW9kZSB2ZXJ5IGRhbmdlcm91cworICAgICAgICBhbmQgb25seSB0
byBiZSB1c2VkIHVuZGVyIGV4dHJlbWUgY2FyZS4KKworICAgICAgICAiIiIKICAgICAgICAgb3V0
X2l0ZW1zID0gewogICAgICAgICAgICAgdGVzdF90eXBlOiB0eXBlX3BhdGhzLnRvX2pzb24oKQog
ICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSwgdHlwZV9wYXRocyBpbiBpdGVyaXRlbXMoc2VsZi5f
ZGF0YSkgaWYgdHlwZV9wYXRocwogICAgICAgICB9CisKKyAgICAgICAgaWYgY2FsbGVyX293bnNf
b2JqOgorICAgICAgICAgICAgb3V0X2l0ZW1zID0gZGVlcGNvcHkob3V0X2l0ZW1zKQorCiAgICAg
ICAgIHJ2ID0geyJ1cmxfYmFzZSI6IHNlbGYudXJsX2Jhc2UsCi0gICAgICAgICAgICAgICJwYXRo
cyI6IHtmcm9tX29zX3BhdGgoayk6IHYgZm9yIGssIHYgaW4gaXRlcml0ZW1zKHNlbGYuX3BhdGhf
aGFzaCl9LAogICAgICAgICAgICAgICAiaXRlbXMiOiBvdXRfaXRlbXMsCiAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogQ1VSUkVOVF9WRVJTSU9OfSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KICAg
ICAgICAgcmV0dXJuIHJ2CiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9qc29uKGNs
cywgdGVzdHNfcm9vdCwgb2JqLCB0eXBlcz1Ob25lKToKLSAgICAgICAgIyB0eXBlOiAoc3RyLCBE
aWN0W1RleHQsIEFueV0sIE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0pIC0+IE1hbmlmZXN0Cisg
ICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9uZSwgY2FsbGVl
X293bnNfb2JqPUZhbHNlKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBEaWN0W1RleHQsIEFueV0s
IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0sIGJvb2wpIC0+IE1hbmlmZXN0CisgICAgICAgICIi
IkxvYWQgYSBtYW5pZmVzdCBmcm9tIGEgSlNPTiBvYmplY3QKKworICAgICAgICBUaGlzIGxvYWRz
IGEgbWFuaWZlc3QgZm9yIGEgZ2l2ZW4gbG9jYWwgdGVzdF9yb290IHBhdGggZnJvbSBhbgorICAg
ICAgICBvYmplY3Qgb2JqLCBwb3RlbnRpYWxseSBwYXJ0aWFsbHkgbG9hZGluZyBpdCB0byBvbmx5
IGxvYWQgdGhlCisgICAgICAgIHR5cGVzIGdpdmVuIGJ5IHR5cGVzLgorCisgICAgICAgIElmIGNh
bGxlZV9vd25zX29iaiBpcyBUcnVlLCB0aGVuIG93bmVyc2hpcCBvZiBvYmogdHJhbnNmZXJzCisg
ICAgICAgIHRvIHRoaXMgZnVuY3Rpb24gd2hlbiBjYWxsZWQsIGFuZCB0aGUgY2FsbGVyIG11c3Qg
bmV2ZXIgbXV0YXRlCisgICAgICAgIHRoZSBvYmogb3IgYW55dGhpbmcgcmVmZXJyZWQgdG8gaW4g
dGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQKKyAgICAgICAgb2JqLgorCisgICAgICAgICIiIgog
ICAgICAgICB2ZXJzaW9uID0gb2JqLmdldCgidmVyc2lvbiIpCiAgICAgICAgIGlmIHZlcnNpb24g
IT0gQ1VSUkVOVF9WRVJTSU9OOgogICAgICAgICAgICAgcmFpc2UgTWFuaWZlc3RWZXJzaW9uTWlz
bWF0Y2gKIAogICAgICAgICBzZWxmID0gY2xzKHRlc3RzX3Jvb3QsIHVybF9iYXNlPW9iai5nZXQo
InVybF9iYXNlIiwgIi8iKSkKLSAgICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKSBh
bmQgaGFzYXR0cihvYmosICJwYXRocyIpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihvYmosICJp
dGVtcyIpOgogICAgICAgICAgICAgcmFpc2UgTWFuaWZlc3RFcnJvcgogCi0gICAgICAgIHNlbGYu
X3BhdGhfaGFzaCA9IHt0b19vc19wYXRoKGspOiB2IGZvciBrLCB2IGluIGl0ZXJpdGVtcyhvYmpb
InBhdGhzIl0pfQotCiAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5cGVfcGF0aHMgaW4gaXRlcml0
ZW1zKG9ialsiaXRlbXMiXSk6CiAgICAgICAgICAgICBpZiB0ZXN0X3R5cGUgbm90IGluIGl0ZW1f
Y2xhc3NlczoKICAgICAgICAgICAgICAgICByYWlzZSBNYW5pZmVzdEVycm9yCkBAIC00NzcsNyAr
MjkyLDEwIEBAIGNsYXNzIE1hbmlmZXN0KG9iamVjdCk6CiAgICAgICAgICAgICBpZiB0eXBlcyBh
bmQgdGVzdF90eXBlIG5vdCBpbiB0eXBlczoKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0g
ICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24odGVzdHNfcm9vdCwgdHlw
ZV9wYXRocykKKyAgICAgICAgICAgIGlmIG5vdCBjYWxsZWVfb3duc19vYmo6CisgICAgICAgICAg
ICAgICAgdHlwZV9wYXRocyA9IGRlZXBjb3B5KHR5cGVfcGF0aHMpCisKKyAgICAgICAgICAgIHNl
bGYuX2RhdGFbdGVzdF90eXBlXS5zZXRfanNvbih0eXBlX3BhdGhzKQogCiAgICAgICAgIHJldHVy
biBzZWxmCiAKQEAgLTUxMSwxMCArMzI5LDExIEBAIGRlZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6
IExvZ2dlcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJDcmVhdGlu
ZyBuZXcgbWFuaWZlc3QgYXQgJXMiICUgbWFuaWZlc3QpCiAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHdpdGggaW8u
b3BlbihtYW5pZmVzdCwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAg
ICAgIHJ2ID0gTWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFzdF9qc29uLmxvYWQoZiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM9dHlwZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbGVlX293bnNfb2JqPVRydWUpCiAgICAgICAgIGV4Y2Vw
dCBJT0Vycm9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6CkBAIC01MjMsNyArMzQyLDggQEAgZGVmIF9sb2FkKGxvZ2dlciwgICMgdHlwZTogTG9n
Z2VyCiAgICAgZWxzZToKICAgICAgICAgcnYgPSBNYW5pZmVzdC5mcm9tX2pzb24odGVzdHNfcm9v
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFzdF9qc29uLmxvYWQobWFuaWZl
c3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcz10eXBlcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM9dHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbGxlZV9vd25zX29iaj1UcnVlKQogCiAgICAgaWYgYWxsb3dfY2Fj
aGVkOgogICAgICAgICBfX2xvYWRfY2FjaGVbbWFuaWZlc3RfcGF0aF0gPSBydgpAQCAtNTQwLDcg
KzM2MCw4IEBAIGRlZiBsb2FkX2FuZF91cGRhdGUodGVzdHNfcm9vdCwgICMgdHlwZTogYnl0ZXMK
ICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5cGU6IGJvb2wKICAg
ICAgICAgICAgICAgICAgICAgdHlwZXM9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbQ29udGFpbmVy
W1RleHRdXQogICAgICAgICAgICAgICAgICAgICB3cml0ZV9tYW5pZmVzdD1UcnVlLCAgIyB0eXBl
OiBib29sCi0gICAgICAgICAgICAgICAgICAgIGFsbG93X2NhY2hlZD1UcnVlICAjIHR5cGU6IGJv
b2wKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dfY2FjaGVkPVRydWUsICAjIHR5cGU6IGJvb2wK
KyAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWw9VHJ1ZSAgIyB0eXBlOiBib29sCiAgICAgICAg
ICAgICAgICAgICAgICk6CiAgICAgIyB0eXBlOiAoLi4uKSAtPiBNYW5pZmVzdAogICAgIGxvZ2dl
ciA9IGdldF9sb2dnZXIoKQpAQCAtNTY4LDcgKzM4OSw3IEBAIGRlZiBsb2FkX2FuZF91cGRhdGUo
dGVzdHNfcm9vdCwgICMgdHlwZTogYnl0ZXMKICAgICBpZiByZWJ1aWxkIG9yIHVwZGF0ZToKICAg
ICAgICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3Rf
cGF0aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nX2Nv
cHksIHJlYnVpbGQpCi0gICAgICAgIGNoYW5nZWQgPSBtYW5pZmVzdC51cGRhdGUodHJlZSkKKyAg
ICAgICAgY2hhbmdlZCA9IG1hbmlmZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKICAgICAgICAg
aWYgd3JpdGVfbWFuaWZlc3QgYW5kIGNoYW5nZWQ6CiAgICAgICAgICAgICB3cml0ZShtYW5pZmVz
dCwgbWFuaWZlc3RfcGF0aCkKICAgICAgICAgdHJlZS5kdW1wX2NhY2hlcygpCkBAIC01ODEsOSAr
NDAyLDkgQEAgZGVmIHdyaXRlKG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoKToKICAgICBkaXJfbmFt
ZSA9IG9zLnBhdGguZGlybmFtZShtYW5pZmVzdF9wYXRoKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhkaXJfbmFtZSk6CiAgICAgICAgIG9zLm1ha2VkaXJzKGRpcl9uYW1lKQotICAgIHdpdGgg
b3BlbihtYW5pZmVzdF9wYXRoLCAid2IiKSBhcyBmOgorICAgIHdpdGggb3BlbihtYW5pZmVzdF9w
YXRoLCAidyIpIGFzIGY6CiAgICAgICAgICMgVXNlICcsJyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0
ICcsICcgc2VwYXJhdG9yIHRvIHByZXZlbnQgdHJhaWxpbmcKICAgICAgICAgIyBzcGFjZXM6IGh0
dHBzOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9qc29uLmh0bWwjanNvbi5kdW1wCi0gICAg
ICAgIGpzb24uZHVtcChtYW5pZmVzdC50b19qc29uKCksIGYsCisgICAgICAgIGpzb24uZHVtcCht
YW5pZmVzdC50b19qc29uKGNhbGxlcl9vd25zX29iaj1UcnVlKSwgZiwKICAgICAgICAgICAgICAg
ICAgIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9MSwgc2VwYXJhdG9ycz0oJywnLCAnOiAnKSkKICAg
ICAgICAgZi53cml0ZSgiXG4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3Vy
Y2VmaWxlLnB5CmluZGV4IGI5ZGNjOGY1MzYzNmQzZGI4MGU0NTE4ZjdkODM4MDI3ZjA5OGE4ZDcu
LjI5OWFkMjEyZjc2ODBlNzUxNzUwNTY2N2M2ZTA5YmQ2MGVkMGI3YzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
c291cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKQEAgLTIsNyArMiw3IEBAIGltcG9y
dCBoYXNobGliCiBpbXBvcnQgcmUKIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
ZGVxdWUKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgUFkzCitmcm9tIHNpeCBpbXBvcnQg
YmluYXJ5X3R5cGUsIGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIHRleHRfdHlwZQogZnJvbSBzaXgu
bW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZu
bWF0Y2gKIApAQCAtMzMsNyArMzMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiBpbXBvcnQgaHRt
bDVsaWIKIAogZnJvbSAuIGltcG9ydCBYTUxQYXJzZXIKLWZyb20gLml0ZW0gaW1wb3J0IChNYW5p
ZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBSZWZUZXN0Tm9kZSwgVGVz
dGhhcm5lc3NUZXN0LAorZnJvbSAuaXRlbSBpbXBvcnQgKE1hbmlmZXN0SXRlbSwgTWFudWFsVGVz
dCwgV2ViRHJpdmVyU3BlY1Rlc3QsIFJlZlRlc3QsIFRlc3RoYXJuZXNzVGVzdCwKICAgICAgICAg
ICAgICAgICAgICBTdXBwb3J0RmlsZSwgQ3Jhc2hUZXN0LCBDb25mb3JtYW5jZUNoZWNrZXJUZXN0
LCBWaXN1YWxUZXN0KQogZnJvbSAudXRpbHMgaW1wb3J0IENvbnRleHRNYW5hZ2VyQnl0ZXNJTywg
Y2FjaGVkX3Byb3BlcnR5CiAKQEAgLTU2LDkgKzU2LDkgQEAgZGVmIHJlcGxhY2VfZW5kKHMsIG9s
ZCwgbmV3KToKIAogCiBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhwKToKLSAgICAj
IHR5cGU6IChCaW5hcnlJTywgUGF0dGVybltieXRlc10pIC0+IEl0ZXJhYmxlW1R1cGxlW2J5dGVz
LCBieXRlc11dCisgICAgIyB0eXBlOiAoQmluYXJ5SU8sIFBhdHRlcm5bYnl0ZXNdKSAtPiBJdGVy
YWJsZVtUdXBsZVtUZXh0LCBUZXh0XV0KICAgICAiIiIKLSAgICBZaWVsZHMgYW55IG1ldGFkYXRh
IChwYWlycyBvZiBieXRlc3RyaW5ncykgZnJvbSB0aGUgZmlsZS1saWtlIG9iamVjdCBgZmAsCisg
ICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2Ygc3RyaW5ncykgZnJvbSB0aGUgZmlsZS1s
aWtlIG9iamVjdCBgZmAsCiAgICAgYXMgc3BlY2lmaWVkIGFjY29yZGluZyB0byBhIHN1cHBsaWVk
IHJlZ2V4cC4KIAogICAgIGByZWdleHBgIC0gUmVnZXhwIGNvbnRhaW5pbmcgdHdvIGdyb3VwcyBj
b250YWluaW5nIHRoZSBtZXRhZGF0YSBuYW1lIGFuZApAQCAtNzAsMjcgKzcwLDI1IEBAIGRlZiBy
ZWFkX3NjcmlwdF9tZXRhZGF0YShmLCByZWdleHApOgogICAgICAgICBpZiBub3QgbToKICAgICAg
ICAgICAgIGJyZWFrCiAKLSAgICAgICAgeWllbGQgKG0uZ3JvdXBzKClbMF0sIG0uZ3JvdXBzKClb
MV0pCisgICAgICAgIHlpZWxkIChtLmdyb3VwcygpWzBdLmRlY29kZSgidXRmOCIpLCBtLmdyb3Vw
cygpWzFdLmRlY29kZSgidXRmOCIpKQogCiAKIF9hbnlfdmFyaWFudHMgPSB7Ci0gICAgYiJkZWZh
dWx0IjogeyJsb25naGFuZCI6IHtiIndpbmRvdyIsIGIiZGVkaWNhdGVkd29ya2VyIn19LAotICAg
IGIid2luZG93IjogeyJzdWZmaXgiOiAiLmFueS5odG1sIn0sCi0gICAgYiJzZXJ2aWNld29ya2Vy
IjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAotICAgIGIic2hhcmVkd29ya2VyIjoge30sCi0gICAg
YiJkZWRpY2F0ZWR3b3JrZXIiOiB7InN1ZmZpeCI6ICIuYW55Lndvcmtlci5odG1sIn0sCi0gICAg
YiJ3b3JrZXIiOiB7ImxvbmdoYW5kIjoge2IiZGVkaWNhdGVkd29ya2VyIiwgYiJzaGFyZWR3b3Jr
ZXIiLCBiInNlcnZpY2V3b3JrZXIifX0sCi0gICAgYiJqc3NoZWxsIjogeyJzdWZmaXgiOiAiLmFu
eS5qcyJ9LAotfSAgIyB0eXBlOiBEaWN0W2J5dGVzLCBEaWN0W3N0ciwgQW55XV0KKyAgICAid2lu
ZG93IjogeyJzdWZmaXgiOiAiLmFueS5odG1sIn0sCisgICAgInNlcnZpY2V3b3JrZXIiOiB7ImZv
cmNlX2h0dHBzIjogVHJ1ZX0sCisgICAgInNoYXJlZHdvcmtlciI6IHt9LAorICAgICJkZWRpY2F0
ZWR3b3JrZXIiOiB7InN1ZmZpeCI6ICIuYW55Lndvcmtlci5odG1sIn0sCisgICAgIndvcmtlciI6
IHsibG9uZ2hhbmQiOiB7ImRlZGljYXRlZHdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAic2Vydmlj
ZXdvcmtlciJ9fSwKKyAgICAianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKK30gICMg
dHlwZTogRGljdFtUZXh0LCBEaWN0W1RleHQsIEFueV1dCiAKIAogZGVmIGdldF9hbnlfdmFyaWFu
dHMoaXRlbSk6Ci0gICAgIyB0eXBlOiAoYnl0ZXMpIC0+IFNldFtieXRlc10KKyAgICAjIHR5cGU6
IChUZXh0KSAtPiBTZXRbVGV4dF0KICAgICAiIiIKLSAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlh
bnRzIChieXRlc3RyaW5ncykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KKyAgICBSZXR1
cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChzdHJpbmdzKSBkZWZpbmVkIGJ5IHRoZSBnaXZlbiBrZXl3
b3JkLgogICAgICIiIgotICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIGJpbmFyeV90eXBlKSwg
aXRlbQotICAgIGFzc2VydCBub3QgaXRlbS5zdGFydHN3aXRoKGIiISIpLCBpdGVtCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoaXRlbSwgdGV4dF90eXBlKSwgaXRlbQogCiAgICAgdmFyaWFudCA9IF9h
bnlfdmFyaWFudHMuZ2V0KGl0ZW0sIE5vbmUpCiAgICAgaWYgdmFyaWFudCBpcyBOb25lOgpAQCAt
MTAwLDQ4ICs5OCw0NiBAQCBkZWYgZ2V0X2FueV92YXJpYW50cyhpdGVtKToKIAogCiBkZWYgZ2V0
X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCk6Ci0gICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisg
ICAgIyB0eXBlOiAoKSAtPiBTZXRbVGV4dF0KICAgICAiIiIKLSAgICBSZXR1cm5zIGEgc2V0IG9m
IHZhcmlhbnRzIChieXRlc3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KKyAg
ICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChzdHJpbmdzKSB0aGF0IHdpbGwgYmUgdXNlZCBi
eSBkZWZhdWx0LgogICAgICIiIgotICAgIHJldHVybiBzZXQoX2FueV92YXJpYW50c1tiImRlZmF1
bHQiXVsibG9uZ2hhbmQiXSkKKyAgICByZXR1cm4gc2V0KHsid2luZG93IiwgImRlZGljYXRlZHdv
cmtlciJ9KQogCiAKIGRlZiBwYXJzZV92YXJpYW50cyh2YWx1ZSk6Ci0gICAgIyB0eXBlOiAoYnl0
ZXMpIC0+IFNldFtieXRlc10KKyAgICAjIHR5cGU6IChUZXh0KSAtPiBTZXRbVGV4dF0KICAgICAi
IiIKLSAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRzIChieXRlc3RyaW5ncykgZGVmaW5lZCBi
eSBhIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZS4KKyAgICBSZXR1cm5zIGEgc2V0IG9mIHZhcmlhbnRz
IChzdHJpbmdzKSBkZWZpbmVkIGJ5IGEgY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgot
ICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKLSAgICBnbG9iYWxzID0g
Z2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCkKKyAgICBpZiB2YWx1ZSA9PSAiIjoKKyAgICAgICAg
cmV0dXJuIGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpCiAKLSAgICBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdChiIiwiKToKKyAgICBnbG9iYWxzID0gc2V0KCkKKyAgICBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdCgiLCIpOgogICAgICAgICBpdGVtID0gaXRlbS5zdHJpcCgpCi0gICAgICAgIGlmIGl0
ZW0uc3RhcnRzd2l0aChiIiEiKToKLSAgICAgICAgICAgIGdsb2JhbHMgLT0gZ2V0X2FueV92YXJp
YW50cyhpdGVtWzE6XSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdsb2JhbHMgfD0gZ2V0
X2FueV92YXJpYW50cyhpdGVtKQotCisgICAgICAgIGdsb2JhbHMgfD0gZ2V0X2FueV92YXJpYW50
cyhpdGVtKQogICAgIHJldHVybiBnbG9iYWxzCiAKIAogZGVmIGdsb2JhbF9zdWZmaXhlcyh2YWx1
ZSk6Ci0gICAgIyB0eXBlOiAoYnl0ZXMpIC0+IFNldFtUdXBsZVtieXRlcywgYm9vbF1dCisgICAg
IyB0eXBlOiAoVGV4dCkgLT4gU2V0W1R1cGxlW1RleHQsIGJvb2xdXQogICAgICIiIgogICAgIFlp
ZWxkcyB0dXBsZXMgb2YgdGhlIHJlbGV2YW50IGZpbGVuYW1lIHN1ZmZpeCAoYSBzdHJpbmcpIGFu
ZCB3aGV0aGVyIHRoZQogICAgIHZhcmlhbnQgaXMgaW50ZW5kZWQgdG8gcnVuIGluIGEgSlMgc2hl
bGwsIGZvciB0aGUgdmFyaWFudHMgZGVmaW5lZCBieSB0aGUKICAgICBnaXZlbiBjb21tYS1zZXBh
cmF0ZWQgdmFsdWUuCiAgICAgIiIiCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIGJpbmFy
eV90eXBlKSwgdmFsdWUKKyAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBlKSwg
dmFsdWUKIAogICAgIHJ2ID0gc2V0KCkKIAogICAgIGdsb2JhbF90eXBlcyA9IHBhcnNlX3Zhcmlh
bnRzKHZhbHVlKQogICAgIGZvciBnbG9iYWxfdHlwZSBpbiBnbG9iYWxfdHlwZXM6CiAgICAgICAg
IHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzW2dsb2JhbF90eXBlXQotICAgICAgICBzdWZmaXggPSB2
YXJpYW50LmdldCgic3VmZml4IiwgIi5hbnkuJXMuaHRtbCIgJSBnbG9iYWxfdHlwZS5kZWNvZGUo
InV0Zi04IikpCi0gICAgICAgIHJ2LmFkZCgoc3VmZml4LCBnbG9iYWxfdHlwZSA9PSBiImpzc2hl
bGwiKSkKKyAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZpeCIsICIuYW55LiVzLmh0
bWwiICUgZ2xvYmFsX3R5cGUpCisgICAgICAgIHJ2LmFkZCgoc3VmZml4LCBnbG9iYWxfdHlwZSA9
PSAianNzaGVsbCIpKQogCiAgICAgcmV0dXJuIHJ2CiAKQEAgLTE1Niw2ICsxNTIsOCBAQCBkZWYg
Z2xvYmFsX3ZhcmlhbnRfdXJsKHVybCwgc3VmZml4KToKICAgICAjIHRoZSBmb3JtIC5odHRwcy5h
bnkuanMKICAgICBpZiAiLmh0dHBzLiIgaW4gdXJsIGFuZCBzdWZmaXguc3RhcnRzd2l0aCgiLmh0
dHBzLiIpOgogICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgiLmh0dHBzLiIsICIuIikKKyAgICBl
bGlmICIuaDIuIiBpbiB1cmwgYW5kIHN1ZmZpeC5zdGFydHN3aXRoKCIuaDIuIik6CisgICAgICAg
IHVybCA9IHVybC5yZXBsYWNlKCIuaDIuIiwgIi4iKQogICAgIHJldHVybiByZXBsYWNlX2VuZCh1
cmwsICIuanMiLCBzdWZmaXgpCiAKIApAQCAtMTkyLDI0ICsxOTAsMjEgQEAgY2xhc3MgU291cmNl
RmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICgiY3NzIiwgIkNTUzIiLCAi
YXJjaGl2ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgiY3NzIiwgImNvbW1vbiIpfSAg
IyB0eXBlOiBTZXRbVHVwbGVbYnl0ZXMsIC4uLl1dCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
dGVzdHNfcm9vdCwgcmVsX3BhdGgsIHVybF9iYXNlLCBoYXNoPU5vbmUsIGNvbnRlbnRzPU5vbmUp
OgotICAgICAgICAjIHR5cGU6IChBbnlTdHIsIEFueVN0ciwgVGV4dCwgT3B0aW9uYWxbYnl0ZXNd
LCBPcHRpb25hbFtieXRlc10pIC0+IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHNf
cm9vdCwgcmVsX3BhdGhfc3RyLCB1cmxfYmFzZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToK
KyAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBBbnlTdHIsIFRleHQsIE9wdGlvbmFsW1RleHRdLCBP
cHRpb25hbFtieXRlc10pIC0+IE5vbmUKICAgICAgICAgIiIiT2JqZWN0IHJlcHJlc2VudGluZyBh
IGZpbGUgaW4gYSBzb3VyY2UgdHJlZS4KIAogICAgICAgICA6cGFyYW0gdGVzdHNfcm9vdDogUGF0
aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUKLSAgICAgICAgOnBhcmFtIHJlbF9wYXRo
OiBGaWxlIHBhdGggcmVsYXRpdmUgdG8gdGVzdHNfcm9vdAorICAgICAgICA6cGFyYW0gcmVsX3Bh
dGhfc3RyOiBGaWxlIHBhdGggcmVsYXRpdmUgdG8gdGVzdHNfcm9vdAogICAgICAgICA6cGFyYW0g
dXJsX2Jhc2U6IEJhc2UgVVJMIHVzZWQgd2hlbiBjb252ZXJ0aW5nIGZpbGUgcGF0aHMgdG8gdXJs
cwogICAgICAgICA6cGFyYW0gY29udGVudHM6IEJ5dGUgYXJyYXkgb2YgdGhlIGNvbnRlbnRzIG9m
IHRoZSBmaWxlIG9yIGBgTm9uZWBgLgogICAgICAgICAiIiIKIAorICAgICAgICByZWxfcGF0aCA9
IGVuc3VyZV90ZXh0KHJlbF9wYXRoX3N0cikKICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmlz
YWJzKHJlbF9wYXRoKSwgcmVsX3BhdGgKLQogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAg
ICAgICAgICAgICAjIGRvIHNsYXNoIG5vcm1hbGl6YXRpb24gb24gV2luZG93cwotICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShyZWxfcGF0aCwgYmluYXJ5X3R5cGUpOgotICAgICAgICAgICAgICAg
IHJlbF9wYXRoID0gcmVsX3BhdGgucmVwbGFjZShiIi8iLCBiIlxcIikKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmVsX3BhdGggPSByZWxfcGF0aC5yZXBsYWNlKHUiLyIsIHUi
XFwiKQorICAgICAgICAgICAgcmVsX3BhdGggPSByZWxfcGF0aC5yZXBsYWNlKHUiLyIsIHUiXFwi
KQogCiAgICAgICAgIGRpcl9wYXRoLCBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXQocmVsX3BhdGgp
CiAgICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCkBAIC0yMjAs
MTMgKzIxNSwxMyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICAgICAgbWV0YV9m
bGFncyA9IG5hbWUuc3BsaXQoIi4iKVsxOl0KIAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSB0
ZXN0c19yb290ICAjIHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLnJlbF9w
YXRoID0gcmVsX3BhdGggICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYu
ZGlyX3BhdGggPSBkaXJfcGF0aCAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAg
c2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lICAjIHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQotICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQotICAgICAg
ICBzZWxmLmV4dCA9IGV4dCAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2Vs
Zi50eXBlX2ZsYWcgPSB0eXBlX2ZsYWcgICMgdHlwZTogT3B0aW9uYWxbVW5pb25bYnl0ZXMsIFRl
eHRdXQorICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBlbnN1cmVfdGV4dCh0ZXN0c19yb290KSAg
IyB0eXBlOiBUZXh0CisgICAgICAgIHNlbGYucmVsX3BhdGggPSByZWxfcGF0aCAgIyB0eXBlOiBU
ZXh0CisgICAgICAgIHNlbGYuZGlyX3BhdGggPSBkaXJfcGF0aCAgIyB0eXBlOiBUZXh0CisgICAg
ICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0eXBlOiBUZXh0CisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmV4dCA9IGV4dCAgIyB0eXBl
OiBUZXh0CisgICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5cGU6IE9wdGlv
bmFsW1RleHRdCiAgICAgICAgIHNlbGYubWV0YV9mbGFncyA9IG1ldGFfZmxhZ3MgICMgdHlwZTog
VW5pb25bTGlzdFtieXRlc10sIExpc3RbVGV4dF1dCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1
cmxfYmFzZQogICAgICAgICBzZWxmLmNvbnRlbnRzID0gY29udGVudHMKQEAgLTI0MCw5ICsyMzUs
NyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICAgICAgaWYgIl9fY2FjaGVkX3By
b3BlcnRpZXNfXyIgaW4gcnY6CiAgICAgICAgICAgICBjYWNoZWRfcHJvcGVydGllcyA9IHJ2WyJf
X2NhY2hlZF9wcm9wZXJ0aWVzX18iXQotICAgICAgICAgICAgZm9yIGtleSBpbiBydi5rZXlzKCk6
Ci0gICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlZF9wcm9wZXJ0aWVzOgotICAgICAgICAg
ICAgICAgICAgICBkZWwgcnZba2V5XQorICAgICAgICAgICAgcnYgPSB7a2V5OnZhbHVlIGZvciBr
ZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhydikgaWYga2V5IG5vdCBpbiBjYWNoZWRfcHJvcGVydGll
c30KICAgICAgICAgICAgIGRlbCBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KICAgICAgICAg
cmV0dXJuIHJ2CiAKQEAgLTI3OSw5ICsyNzIsMTQgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogICAgICAgICAgICAgZmlsZV9vYmogPSBvcGVuKHNlbGYucGF0aCwgJ3JiJykKICAgICAgICAg
cmV0dXJuIGZpbGVfb2JqCiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5CisgICAgZGVmIHJlbF9wYXRo
X3BhcnRzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAg
ICAgICAgcmV0dXJuIHR1cGxlKHNlbGYucmVsX3BhdGguc3BsaXQob3MucGF0aC5zZXApKQorCiAg
ICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiBwYXRoKHNlbGYpOgotICAgICAgICAjIHR5cGU6
ICgpIC0+IFVuaW9uW2J5dGVzLCBUZXh0XQorICAgICAgICAjIHR5cGU6ICgpIC0+IFRleHQKICAg
ICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnRlc3RzX3Jvb3QsIHNlbGYucmVsX3BhdGgp
CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CkBAIC0yOTcsMTcgKzI5NSwxMyBAQCBjbGFzcyBTb3Vy
Y2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIGhhc2goc2Vs
Zik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gYnl0ZXMKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBU
ZXh0CiAgICAgICAgIGlmIG5vdCBzZWxmLl9oYXNoOgogICAgICAgICAgICAgd2l0aCBzZWxmLm9w
ZW4oKSBhcyBmOgogICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQogCiAgICAgICAg
ICAgICBkYXRhID0gYiIiLmpvaW4oKGIiYmxvYiAiLCBiIiVkIiAlIGxlbihjb250ZW50KSwgYiJc
MCIsIGNvbnRlbnQpKQotICAgICAgICAgICAgaGFzaF9zdHIgPSBoYXNobGliLnNoYTEoZGF0YSku
aGV4ZGlnZXN0KCkgICMgdHlwZTogc3RyCi0gICAgICAgICAgICBpZiBQWTM6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5faGFzaCA9IGhhc2hfc3RyLmVuY29kZSgiYXNjaWkiKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNoID0gaGFzaF9zdHIKKyAgICAgICAgICAg
IHNlbGYuX2hhc2ggPSB0ZXh0X3R5cGUoaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpKQog
CiAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCiAKQEAgLTMxNiwxOCArMzEwLDE3IEBAIGNsYXNz
IFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5kaXJfcGF0aCA9PSAiIjoKICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgcGFydHMgPSBzZWxmLmRpcl9wYXRoLnNw
bGl0KG9zLnBhdGguc2VwKQorICAgICAgICBwYXJ0cyA9IHNlbGYucmVsX3BhdGhfcGFydHMKIAog
ICAgICAgICBpZiAocGFydHNbMF0gaW4gc2VsZi5yb290X2Rpcl9ub25fdGVzdCBvcgogICAgICAg
ICAgICAgYW55KGl0ZW0gaW4gc2VsZi5kaXJfbm9uX3Rlc3QgZm9yIGl0ZW0gaW4gcGFydHMpIG9y
Ci0gICAgICAgICAgICBhbnkocGFydHNbOmxlbihwYXRoKV0gPT0gbGlzdChwYXRoKSBmb3IgcGF0
aCBpbiBzZWxmLmRpcl9wYXRoX25vbl90ZXN0KSk6CisgICAgICAgICAgICBhbnkocGFydHNbOmxl
bihwYXRoKV0gPT0gcGF0aCBmb3IgcGF0aCBpbiBzZWxmLmRpcl9wYXRoX25vbl90ZXN0KSk6CiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBp
bl9jb25mb3JtYW5jZV9jaGVja2VyX2RpcihzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBi
b29sCi0gICAgICAgIHJldHVybiAoc2VsZi5kaXJfcGF0aCA9PSAiY29uZm9ybWFuY2UtY2hlY2tl
cnMiIG9yCi0gICAgICAgICAgICAgICAgc2VsZi5kaXJfcGF0aC5zdGFydHN3aXRoKCJjb25mb3Jt
YW5jZS1jaGVja2VycyIgKyBvcy5wYXRoLnNlcCkpCisgICAgICAgIHJldHVybiBzZWxmLnJlbF9w
YXRoX3BhcnRzWzBdID09ICJjb25mb3JtYW5jZS1jaGVja2VycyIKIAogICAgIEBwcm9wZXJ0eQog
ICAgIGRlZiBuYW1lX2lzX25vbl90ZXN0KHNlbGYpOgpAQCAtMzM5LDYgKzMzMiw3IEBAIGNsYXNz
IFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID09ICJN
RVRBLnltbCIgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lLnN0YXJ0c3dpdGgoIi4i
KSBvcgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUuZW5kc3dpdGgoIi5oZWFkZXJzIikg
b3IKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lLmVuZHN3aXRoKCIuaW5pIikgb3IKICAg
ICAgICAgICAgICAgICBzZWxmLmluX25vbl90ZXN0X2RpcigpKQogCiAgICAgQHByb3BlcnR5CkBA
IC0zOTQsMTAgKzM4OCwxMCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGJl
IGEgd2ViZHJpdmVyIHNwZWMgdGVzdCBmaWxlIiIiCiAgICAgICAgICMgd2RzcGVjIHRlc3RzIGFy
ZSBpbiBzdWJkaXJlY3RvcmllcyBvZiAvd2ViZHJpdmVyIGV4Y2x1ZGluZyBfX2luaXRfXy5weQog
ICAgICAgICAjIGZpbGVzLgotICAgICAgICByZWxfZGlyX3RyZWUgPSBzZWxmLnJlbF9wYXRoLnNw
bGl0KG9zLnBhdGguc2VwKQotICAgICAgICByZXR1cm4gKCgocmVsX2Rpcl90cmVlWzBdID09ICJ3
ZWJkcml2ZXIiIGFuZCBsZW4ocmVsX2Rpcl90cmVlKSA+IDEpIG9yCi0gICAgICAgICAgICAgICAg
IChyZWxfZGlyX3RyZWVbOjJdID09IFsiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJpdmVyIl0gYW5k
Ci0gICAgICAgICAgICAgICAgICBsZW4ocmVsX2Rpcl90cmVlKSA+IDIpKSBhbmQKKyAgICAgICAg
cmVsX3BhdGhfcGFydHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCisgICAgICAgIHJldHVybiAoKChy
ZWxfcGF0aF9wYXJ0c1swXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVuKHJlbF9wYXRoX3BhcnRzKSA+
IDEpIG9yCisgICAgICAgICAgICAgICAgIChyZWxfcGF0aF9wYXJ0c1s6Ml0gPT0gKCJpbmZyYXN0
cnVjdHVyZSIsICJ3ZWJkcml2ZXIiKSBhbmQKKyAgICAgICAgICAgICAgICAgIGxlbihyZWxfcGF0
aF9wYXJ0cykgPiAyKSkgYW5kCiAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSBub3QgaW4g
KCJfX2luaXRfXy5weSIsICJjb25mdGVzdC5weSIpIGFuZAogICAgICAgICAgICAgICAgIGZubWF0
Y2goc2VsZi5maWxlbmFtZSwgd2RfcGF0dGVybikpCiAKQEAgLTQxMyw2ICs0MDcsMTUgQEAgY2xh
c3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKICAgICAg
ICAgcmV0dXJuIHNlbGYudHlwZV9mbGFnID09ICJjcmFzaCIgb3IgImNyYXNodGVzdHMiIGluIHNl
bGYuZGlyX3BhdGguc3BsaXQob3MucGF0aC5zZXApCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
bmFtZV9pc190ZW50YXRpdmUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAg
ICAgICAiIiJDaGVjayBpZiB0aGUgZmlsZSBuYW1lIG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMgZm9y
IHRoZSBmaWxlIHRvIGJlIGEKKyAgICAgICAgdGVudGF0aXZlIGZpbGUuCisKKyAgICAgICAgU2Vl
IGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9yZy93cml0aW5nLXRlc3RzL2ZpbGUtbmFtZXMu
aHRtbCN0ZXN0LWZlYXR1cmVzIiIiCisgICAgICAgIHJldHVybiAidGVudGF0aXZlIiBpbiBzZWxm
Lm1ldGFfZmxhZ3MKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBtYXJrdXBfdHlwZShzZWxmKToK
ICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQpAQCAtNDY1LDcgKzQ2OCw3IEBA
IGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBk
ZWYgc2NyaXB0X21ldGFkYXRhKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFs
W0xpc3RbVHVwbGVbYnl0ZXMsIGJ5dGVzXV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9u
YWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgIGlmIHNlbGYubmFtZV9pc193b3Jr
ZXIgb3Igc2VsZi5uYW1lX2lzX211bHRpX2dsb2JhbCBvciBzZWxmLm5hbWVfaXNfd2luZG93Ogog
ICAgICAgICAgICAgcmVnZXhwID0ganNfbWV0YV9yZQogICAgICAgICBlbGlmIHNlbGYubmFtZV9p
c193ZWJkcml2ZXI6CkBAIC00ODIsNyArNDg1LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogICAgICAgICAiIiJUaGUgdGltZW91dCBvZiBhIHRlc3Qgb3IgcmVmZXJlbmNlIGZpbGUuICJs
b25nIiBpZiB0aGUgZmlsZSBoYXMgYW4gZXh0ZW5kZWQgdGltZW91dAogICAgICAgICBvciBOb25l
IG90aGVyd2lzZSIiIgogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgIGlmIGFueShtID09IChiInRpbWVvdXQiLCBiImxvbmciKSBmb3IgbSBpbiBzZWxmLnNjcmlw
dF9tZXRhZGF0YSk6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInRpbWVvdXQiLCAibG9uZyIp
IGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKICAgICAgICAgICAgICAgICByZXR1cm4g
ImxvbmciCiAKICAgICAgICAgaWYgc2VsZi5yb290IGlzIE5vbmU6CkBAIC02NDQsOCArNjQ3LDgg
QEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgc2NyaXB0X21ldGFkYXRh
ID0gc2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgIGFzc2VydCBzY3JpcHRfbWV0YWRh
dGEgaXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2NyaXB0X21l
dGFkYXRhOgotICAgICAgICAgICAgICAgIGlmIGtleSA9PSBiInZhcmlhbnQiOgotICAgICAgICAg
ICAgICAgICAgICBydi5hcHBlbmQodmFsdWUuZGVjb2RlKCJ1dGYtOCIpKQorICAgICAgICAgICAg
ICAgIGlmIGtleSA9PSAidmFyaWFudCI6CisgICAgICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCh2
YWx1ZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIHNlbGYudmFy
aWFudF9ub2RlczoKICAgICAgICAgICAgICAgICBpZiAiY29udGVudCIgaW4gZWxlbWVudC5hdHRy
aWI6CkBAIC02NzcsNiArNjgwLDM2IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAg
ICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBib29sKHNlbGYudGVzdGRyaXZlcl9u
b2RlcykKIAorICAgIEBjYWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpY19ub2RlcyhzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0W0VsZW1lbnRUcmVlLkVsZW1lbnRdCisgICAgICAg
ICIiIkxpc3Qgb2YgRWxlbWVudFRyZWUgRWxlbWVudHMgY29ycmVzcG9uZGluZyB0byBub2RlcyBp
biBhIHRlc3QgdGhhdAorICAgICAgICBzcGVjaWZ5IHdoZXRoZXIgaXQgbmVlZHMgUVVJQyBzZXJ2
ZXIuIiIiCisgICAgICAgIGFzc2VydCBzZWxmLnJvb3QgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0
dXJuIHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1t
ZXRhW0BuYW1lPSdxdWljJ10iKQorCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBxdWlj
KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2Jvb2xdCisgICAgICAgICIi
IkJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgdGVzdCByZXF1aXJlcyBRVUlDIHNlcnZlcgor
CisgICAgICAgIERldGVybWluZWQgYnkgPG1ldGE+IGVsZW1lbnRzIChgcXVpY19ub2RlcygpYCkg
YW5kICIvLyBNRVRBIiBjb21tZW50cworICAgICAgICAoYHNjcmlwdF9tZXRhZGF0YSgpYCkuCisg
ICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKKyAgICAgICAgICAg
IGlmIGFueShtID09ICgicXVpYyIsICJ0cnVlIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRh
dGEpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgc2VsZi5yb290
IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIHNlbGYucXVp
Y19ub2RlczoKKyAgICAgICAgICAgIHF1aWNfc3RyID0gc2VsZi5xdWljX25vZGVzWzBdLmF0dHJp
Yi5nZXQoImNvbnRlbnQiLCAiZmFsc2UiKSAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICBpZiBx
dWljX3N0ci5sb3dlcigpID09ICJ0cnVlIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
CisgICAgICAgIHJldHVybiBOb25lCisKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHJl
ZnRlc3Rfbm9kZXMoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtFbGVtZW50VHJl
ZS5FbGVtZW50XQpAQCAtNzg0LDYgKzgxNyw4IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgaWYgc2VsZi5pdGVtc19jYWNoZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLml0
ZW1zX2NhY2hlCiAKKyAgICAgICAgZHJvcF9jYWNoZWQgPSAicm9vdCIgbm90IGluIHNlbGYuX19k
aWN0X18KKwogICAgICAgICBpZiBzZWxmLm5hbWVfaXNfbm9uX3Rlc3Q6CiAgICAgICAgICAgICBy
diA9ICJzdXBwb3J0IiwgWwogICAgICAgICAgICAgICAgIFN1cHBvcnRGaWxlKApAQCAtODM1LDEx
ICs4NzAsMTEgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgICld
CiAKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfbXVsdGlfZ2xvYmFsOgotICAgICAgICAgICAg
Z2xvYmFscyA9IGIiIgorICAgICAgICAgICAgZ2xvYmFscyA9IHUiIgogICAgICAgICAgICAgc2Ny
aXB0X21ldGFkYXRhID0gc2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgIGFzc2VydCBz
Y3JpcHRfbWV0YWRhdGEgaXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkg
aW4gc2NyaXB0X21ldGFkYXRhOgotICAgICAgICAgICAgICAgIGlmIGtleSA9PSBiImdsb2JhbCI6
CisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJnbG9iYWwiOgogICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxzID0gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIApAQCAtODUxLDYg
Kzg4Niw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsX3ZhcmlhbnRfdXJsKHNlbGYucmVsX3VybCwgc3VmZml4KSArIHZhcmlhbnQsCiAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAogICAgICAgICAgICAgICAgICAg
ICBqc3NoZWxsPWpzc2hlbGwsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAog
ICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEK
ICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgZm9yIChzdWZmaXgsIGpzc2hlbGwp
IGluIHNvcnRlZChnbG9iYWxfc3VmZml4ZXMoZ2xvYmFscykpCkBAIC04NjcsNiArOTAzLDcgQEAg
Y2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnVybF9i
YXNlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3VybCArIHZhcmlhbnQsCiAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBxdWlj
PXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21ldGFkYXRhPXNlbGYuc2Ny
aXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGZvciB2YXJp
YW50IGluIHNlbGYudGVzdF92YXJpYW50cwpAQCAtODgyLDYgKzkxOSw3IEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAg
ICAgICAgICAgICAgICAgdGVzdF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0PXNlbGYudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMs
CiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0
YQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxm
LnRlc3RfdmFyaWFudHMKQEAgLTkxOCwxOSArOTU2LDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAg
ICAgICAgdXJsLAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91dCwKKyAg
ICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAgICAgIHRl
c3Rkcml2ZXI9dGVzdGRyaXZlciwKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21ldGFkYXRh
PXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKSkKIAogICAgICAgICBlbGlm
IHNlbGYuY29udGVudF9pc19yZWZfbm9kZToKLSAgICAgICAgICAgIHJ2ID0gUmVmVGVzdE5vZGUu
aXRlbV90eXBlLCBbCi0gICAgICAgICAgICAgICAgUmVmVGVzdE5vZGUoCisgICAgICAgICAgICBy
diA9IFJlZlRlc3QuaXRlbV90eXBlLCBbCisgICAgICAgICAgICAgICAgUmVmVGVzdCgKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi50ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICBzZWxm
LnJlbF9wYXRoLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnVybF9iYXNlLAogICAgICAgICAg
ICAgICAgICAgICBzZWxmLnJlbF91cmwsCiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9
c2VsZi5yZWZlcmVuY2VzLAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAg
ICAgIHZpZXdwb3J0X3NpemU9c2VsZi52aWV3cG9ydF9zaXplLAogICAgICAgICAgICAgICAgICAg
ICBkcGk9c2VsZi5kcGksCiAgICAgICAgICAgICAgICAgICAgIGZ1enp5PXNlbGYuZnV6enkKQEAg
LTk1Niw0ICs5OTYsMTEgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgICAgIHNl
bGYuaXRlbXNfY2FjaGUgPSBydgogCisgICAgICAgIGlmIGRyb3BfY2FjaGVkIGFuZCAiX19jYWNo
ZWRfcHJvcGVydGllc19fIiBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgY2FjaGVkX3By
b3BlcnRpZXMgPSBzZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorICAgICAg
ICAgICAgZm9yIHByb3AgaW4gY2FjaGVkX3Byb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgaWYg
cHJvcCBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fX2Rp
Y3RfX1twcm9wXQorICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bIl9fY2FjaGVkX3Byb3Bl
cnRpZXNfXyJdCisKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rf
bWFuaWZlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKaW5kZXggNzMzY2FmZGNiZTlk
YzljZTA3Y2IzZTg0M2JkOTU2ZDAyYzZmZDJmZS4uYjYxOGQ3NWVjMWVkMmU5NTVlMjdmNzYzNDQ2
YzFiMGZjMzk4N2YxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvdGVzdHMvdGVzdF9tYW5pZmVzdC5weQpAQCAtNSw3ICs1LDcgQEAgaW1wb3J0IG1vY2sKIGlt
cG9ydCBoeXBvdGhlc2lzIGFzIGgKIGltcG9ydCBoeXBvdGhlc2lzLnN0cmF0ZWdpZXMgYXMgaHMK
IAotaW1wb3J0IHB5dGVzdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC4uIGlt
cG9ydCBtYW5pZmVzdCwgc291cmNlZmlsZSwgaXRlbSwgdXRpbHMKIApAQCAtMTgsNyArMTgsMTAg
QEAgaWYgTVlQWToKIAogZGVmIFNvdXJjZUZpbGVXaXRoVGVzdChwYXRoLCBoYXNoLCBjbHMsICoq
a3dhcmdzKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0s
ICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJjZUZpbGUKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9w
YXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICByZWxfcGF0aF9wYXJ0cyA9IHR1cGxlKHBhdGguc3Bs
aXQob3MucGF0aC5zZXApKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAg
ICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAg
ICAgICAgaGFzaD1oYXNoKQogICAgIGlmIGNscyA9PSBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAg
ICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgpAQCAtMjksNTEgKzMyLDgz
IEBAIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAK
IGRlZiBTb3VyY2VGaWxlV2l0aFRlc3RzKHBhdGgsIGhhc2gsIGNscywgdmFyaWFudHMpOgogICAg
ICMgdHlwZTogKHN0ciwgc3RyLCBUeXBlW2l0ZW0uVVJMTWFuaWZlc3RJdGVtXSwgKipBbnkpIC0+
IHNvdXJjZWZpbGUuU291cmNlRmlsZQotICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwg
aGFzaD1oYXNoKQorICAgIHJlbF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aC5zcGxpdChvcy5wYXRo
LnNlcCkpCisgICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLAorICAgICAgICAgICAgICAg
ICAgcmVsX3BhdGhfcGFydHM9cmVsX3BhdGhfcGFydHMsCisgICAgICAgICAgICAgICAgICBoYXNo
PWhhc2gpCiAgICAgdGVzdHMgPSBbY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCBpdGVtWzBdLCAq
Kml0ZW1bMV0pIGZvciBpdGVtIGluIHZhcmlhbnRzXQogICAgIHMubWFuaWZlc3RfaXRlbXMgPSBt
b2NrLk1vY2socmV0dXJuX3ZhbHVlPShjbHMuaXRlbV90eXBlLCB0ZXN0cykpCiAgICAgcmV0dXJu
IHMgICMgdHlwZTogaWdub3JlCiAKIAotQGhzLmNvbXBvc2l0ZQotZGVmIHJlbF9kaXJfZmlsZV9w
YXRoKGRyYXcpOgotICAgIGxlbmd0aCA9IGRyYXcoaHMuaW50ZWdlcnMobWluX3ZhbHVlPTEsIG1h
eF92YWx1ZT0yMCkpCi0gICAgaWYgbGVuZ3RoID09IDE6Ci0gICAgICAgIHJldHVybiAiYSIKLSAg
ICBlbHNlOgotICAgICAgICByZW1haW5pbmcgPSBsZW5ndGggLSAyCi0gICAgICAgIGFscGhhYmV0
ID0gImEiICsgb3MucGF0aC5zZXAKLSAgICAgICAgbWlkID0gZHJhdyhocy50ZXh0KGFscGhhYmV0
PWFscGhhYmV0LCBtaW5fc2l6ZT1yZW1haW5pbmcsIG1heF9zaXplPXJlbWFpbmluZykpCi0gICAg
ICAgIHJldHVybiBvcy5wYXRoLm5vcm1jYXNlKCJhIiArIG1pZCArICJhIikKLQotCiBAaHMuY29t
cG9zaXRlCiBkZWYgc291cmNlZmlsZV9zdHJhdGVneShkcmF3KToKLSAgICBpdGVtX2NsYXNzZXMg
PSBbaXRlbS5UZXN0aGFybmVzc1Rlc3QsIGl0ZW0uUmVmVGVzdE5vZGUsCisgICAgaXRlbV9jbGFz
c2VzID0gW2l0ZW0uVGVzdGhhcm5lc3NUZXN0LCBpdGVtLlJlZlRlc3QsCiAgICAgICAgICAgICAg
ICAgICAgIGl0ZW0uTWFudWFsVGVzdCwgaXRlbS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LCBpdGVtLlN1cHBvcnRGaWxl
XQogICAgIGNscyA9IGRyYXcoaHMuc2FtcGxlZF9mcm9tKGl0ZW1fY2xhc3NlcykpCiAKLSAgICBw
YXRoID0gZHJhdyhyZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgIGhhc2ggPSBkcmF3KGhzLnRleHQo
YWxwaGFiZXQ9IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQot
ICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgaGFzaD1oYXNoKQorICAgIHBhdGggPSB1
ImEiCisgICAgcmVsX3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkK
KyAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PXUiMDEyMzQ1Njc4OWFiY2RlZiIsIG1p
bl9zaXplPTQwLCBtYXhfc2l6ZT00MCkpCisgICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRo
LAorICAgICAgICAgICAgICAgICAgcmVsX3BhdGhfcGFydHM9cmVsX3BhdGhfcGFydHMsCisgICAg
ICAgICAgICAgICAgICBoYXNoPWhhc2gpCiAKLSAgICBpZiBjbHMgaXMgaXRlbS5SZWZUZXN0Tm9k
ZToKLSAgICAgICAgcmVmX3BhdGggPSBkcmF3KHJlbF9kaXJfZmlsZV9wYXRoKCkpCi0gICAgICAg
IGguYXNzdW1lKHBhdGggIT0gcmVmX3BhdGgpCisgICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdDoK
KyAgICAgICAgcmVmX3BhdGggPSB1ImIiCiAgICAgICAgIHJlZl9lcSA9IGRyYXcoaHMuc2FtcGxl
ZF9mcm9tKFsiPT0iLCAiIT0iXSkpCiAgICAgICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRo
LCAiLyIsIHV0aWxzLmZyb21fb3NfcGF0aChwYXRoKSwgcmVmZXJlbmNlcz1bKHV0aWxzLmZyb21f
b3NfcGF0aChyZWZfcGF0aCksIHJlZl9lcSldKQogICAgIGVsaWYgY2xzIGlzIGl0ZW0uU3VwcG9y
dEZpbGU6CiAgICAgICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoKQogICAgIGVsc2U6Ci0g
ICAgICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIsIHV0aWxzLmZyb21fb3NfcGF0
aChwYXRoKSkKKyAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgsICIvIiwgImZvb2Jh
ciIpCiAKICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xz
Lml0ZW1fdHlwZSwgW3Rlc3RdKSkKICAgICByZXR1cm4gcwogCiAKLUBoLmdpdmVuKGhzLmxpc3Rz
KHNvdXJjZWZpbGVfc3RyYXRlZ3koKSwKLSAgICAgICAgICAgICAgICAgIG1pbl9zaXplPTEsIG1h
eF9zaXplPTEwMDAsIHVuaXF1ZV9ieT1sYW1iZGEgeDogeC5yZWxfcGF0aCkpCitAaHMuY29tcG9z
aXRlCitkZWYgbWFuaWZlc3RfdHJlZShkcmF3KToKKyAgICBuYW1lcyA9IGhzLnRleHQoYWxwaGFi
ZXQ9aHMuY2hhcmFjdGVycyhibGFja2xpc3RfY2hhcmFjdGVycz11IlwwL1xcOipcIj88PnwiKSwg
bWluX3NpemU9MSkKKyAgICB0cmVlID0gaHMucmVjdXJzaXZlKHNvdXJjZWZpbGVfc3RyYXRlZ3ko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBjaGlsZHJlbjogaHMuZGljdGlvbmFy
aWVzKG5hbWVzLCBjaGlsZHJlbiwgbWluX3NpemU9MSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhfbGVhdmVzPTEwKQorCisgICAgZ2VuZXJhdGVkX3Jvb3QgPSBkcmF3KHRyZWUpCisgICAg
aC5hc3N1bWUoaXNpbnN0YW5jZShnZW5lcmF0ZWRfcm9vdCwgZGljdCkpCisKKyAgICByZWZ0ZXN0
X3VybHMgPSBbXQorICAgIG91dHB1dCA9IFtdCisgICAgc3RhY2sgPSBbKChrLCksIHYpIGZvciBr
LCB2IGluIGl0ZXJpdGVtcyhnZW5lcmF0ZWRfcm9vdCldCisgICAgd2hpbGUgc3RhY2s6CisgICAg
ICAgIHBhdGgsIG5vZGUgPSBzdGFjay5wb3AoKQorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUs
IGRpY3QpOgorICAgICAgICAgICAgc3RhY2suZXh0ZW5kKChwYXRoICsgKGssKSwgdikgZm9yIGss
IHYgaW4gaXRlcml0ZW1zKG5vZGUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVsX3Bh
dGggPSBvcy5wYXRoLnNlcC5qb2luKHBhdGgpCisgICAgICAgICAgICBub2RlLnJlbF9wYXRoID0g
cmVsX3BhdGgKKyAgICAgICAgICAgIG5vZGUucmVsX3BhdGhfcGFydHMgPSB0dXBsZShwYXRoKQor
ICAgICAgICAgICAgZm9yIHRlc3RfaXRlbSBpbiBub2RlLm1hbmlmZXN0X2l0ZW1zLnJldHVybl92
YWx1ZVsxXToKKyAgICAgICAgICAgICAgICB0ZXN0X2l0ZW0ucGF0aCA9IHJlbF9wYXRoCisgICAg
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0X2l0ZW0sIGl0ZW0uUmVmVGVzdCk6CisgICAg
ICAgICAgICAgICAgICAgIGlmIHJlZnRlc3RfdXJsczoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBvc3NpYmxlX3VybHMgPSBocy5zYW1wbGVkX2Zyb20ocmVmdGVzdF91cmxzKSB8IG5hbWVzCisg
ICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJs
ZV91cmxzID0gbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gaHMudHVwbGVz
KGhzLnNhbXBsZWRfZnJvbShbdSI9PSIsIHUiIT0iXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzKQorICAgICAgICAgICAgICAgICAgICBy
ZWZlcmVuY2VzID0gaHMubGlzdHMocmVmZXJlbmNlLCBtaW5fc2l6ZT0xLCB1bmlxdWU9VHJ1ZSkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdF9pdGVtLnJlZmVyZW5jZXMgPSBkcmF3KHJlZmVyZW5j
ZXMpCisgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfdXJscy5hcHBlbmQodGVzdF9pdGVtLnVy
bCkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobm9kZSkKKworICAgIHJldHVybiBvdXRwdXQK
KworCitAaC5naXZlbihtYW5pZmVzdF90cmVlKCkpCisjIEZJWE1FOiBXb3JrYXJvdW5kIGZvciBo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3NTgKK0Bo
LnNldHRpbmdzKHN1cHByZXNzX2hlYWx0aF9jaGVjaz0oaC5IZWFsdGhDaGVjay50b29fc2xvdywp
KQogQGguZXhhbXBsZShbU291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVtLkNvbmZv
cm1hbmNlQ2hlY2tlclRlc3QpXSkKIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6CiAgICAg
bSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKQEAgLTg4LDEwICsxMjMsMTEgQEAgZGVmIHRlc3RfbWFu
aWZlc3RfdG9fanNvbihzKToKICAgICBhc3NlcnQgbG9hZGVkLnRvX2pzb24oKSA9PSBqc29uX3N0
cgogCiAKLUBoLmdpdmVuKGhzLmxpc3RzKHNvdXJjZWZpbGVfc3RyYXRlZ3koKSwKLSAgICAgICAg
ICAgICAgICAgIG1pbl9zaXplPTEsIHVuaXF1ZV9ieT1sYW1iZGEgeDogeC5yZWxfcGF0aCkpCitA
aC5naXZlbihtYW5pZmVzdF90cmVlKCkpCisjIEZJWE1FOiBXb3JrYXJvdW5kIGZvciBodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3NTgKK0BoLnNldHRp
bmdzKHN1cHByZXNzX2hlYWx0aF9jaGVjaz0oaC5IZWFsdGhDaGVjay50b29fc2xvdywpKQogQGgu
ZXhhbXBsZShbU291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNz
VGVzdCldKQotQGguZXhhbXBsZShbU291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVt
LlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQorQGguZXhhbXBsZShb
U291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9
WygiL2FhIiwgIj09IildKV0pCiBkZWYgdGVzdF9tYW5pZmVzdF9pZGVtcG90ZW50KHMpOgogICAg
IG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTEwNywxOTEgKzE0Myw0MiBAQCBkZWYgdGVz
dF9tYW5pZmVzdF9pZGVtcG90ZW50KHMpOgogZGVmIHRlc3RfbWFuaWZlc3RfdG9fanNvbl9mb3J3
YXJkc2xhc2goKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCi0gICAgcyA9IFNvdXJj
ZUZpbGVXaXRoVGVzdCgiYS9iIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCkKLQotICAg
IGFzc2VydCBtLnVwZGF0ZShbKHMsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IG0udG9f
anNvbigpID09IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2EvYic6ICgnMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICd0ZXN0aGFybmVzcycpCi0g
ICAgICAgIH0sCi0gICAgICAgICd2ZXJzaW9uJzogNywKLSAgICAgICAgJ3VybF9iYXNlJzogJy8n
LAotICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7Ci0gICAg
ICAgICAgICAgICAgJ2EvYic6IFsoJ2EvYicsIHt9KV0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotCi1AcHl0ZXN0Lm1hcmsuc2tpcGlmKG9zLnNlcCAhPSAiXFwiLCByZWFzb249
ImJhY2tzbGFzaCBwYXRoIikKLWRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fYmFja3NsYXNoKCk6
Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRl
c3QoImFcXGIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQorICAgIHMgPSBTb3VyY2VG
aWxlV2l0aFRlc3QoImEiICsgb3MucGF0aC5zZXAgKyAiYiIsICIwIio0MCwgaXRlbS5UZXN0aGFy
bmVzc1Rlc3QpCiAKICAgICBhc3NlcnQgbS51cGRhdGUoWyhzLCBUcnVlKV0pIGlzIFRydWUKIAog
ICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAgICAgICdwYXRocyc6IHsKLSAgICAgICAg
ICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAn
dGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6IDcsCi0gICAgICAg
ICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1zJzogewotICAgICAgICAgICAgJ3Rlc3Ro
YXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2InOiBbKCdhL2InLCB7fSldCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotZGVmIHRlc3RfbWFuaWZlc3RfZnJvbV9qc29u
X2JhY2tzbGFzaCgpOgotICAgIGpzb25fb2JqID0gewotICAgICAgICAncGF0aHMnOiB7Ci0gICAg
ICAgICAgICAnYVxcYic6ICgnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MCcsICd0ZXN0aGFybmVzcycpCi0gICAgICAgIH0sCi0gICAgICAgICd2ZXJzaW9uJzogNywKKyAg
ICAgICAgJ3ZlcnNpb24nOiA4LAogICAgICAgICAndXJsX2Jhc2UnOiAnLycsCiAgICAgICAgICdp
dGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAn
YVxcYic6IFtbJ2EvYicsIHt9XV0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICd0ZXN0aGFy
bmVzcyc6IHsnYSc6IHsnYic6IFsKKyAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsCisgICAgICAgICAgICAgICAgKE5vbmUsIHt9KQorICAg
ICAgICAgICAgXX19LAogICAgICAgICB9CiAgICAgfQogCi0gICAgd2l0aCBweXRlc3QucmFpc2Vz
KFZhbHVlRXJyb3IpOgotICAgICAgICBtYW5pZmVzdC5NYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBq
c29uX29iaikKIAogCiBkZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluKCk6CiAgICAg
bSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0
ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAi
PT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVt
LlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKKyAgICBzMSA9IFNv
dXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNl
cz1bKCIvdGVzdDIiLCAiPT0iKV0pCisgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3Qy
IiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQog
CiAgICAgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKQogCiAgICAgdGVzdDEgPSBz
MS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCiAgICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCiAKLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwg
e3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRlc3Rf
bm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0KLWRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0
YXRpb25fY2hhaW5fdXBkYXRlX2FkZCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0K
LSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVz
dE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotICAgIHRlc3QyID0gczIubWFu
aWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczIsIFRydWUpXSkg
aXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QyLnBhdGgs
IHt0ZXN0Mi50b19SZWZUZXN0KCl9KV0KLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0
ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAi
PT0iKV0pCi0gICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICAjIHMy
J3MgaGFzaCBpcyB1bmNoYW5nZWQsIGJ1dCBpdCBoYXMgZ29uZSBmcm9tIGEgdGVzdCB0byBhIG5v
ZGUKLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVl
Ci0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3Qx
LnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRlc3Rfbm9kZSIs
IHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0KLWRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25f
Y2hhaW5fdXBkYXRlX3JlbW92ZSgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
dGVzdDMiLCAiPT0iKV0pCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwg
VHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0K
LSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0
KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3Qy
fSldCi0KLSAgICAjIHMyJ3MgaGFzaCBpcyB1bmNoYW5nZWQsIGJ1dCBpdCBoYXMgZ29uZSBmcm9t
IGEgbm9kZSB0byBhIHRlc3QKLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMiwgVHJ1ZSldKSBpcyBU
cnVlCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDIucGF0aCwge3Rl
c3QyLnRvX1JlZlRlc3QoKX0pXQotCi0KLWRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25fY2hh
aW5fdXBkYXRlX3Rlc3RfdHlwZSgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdCIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9k
ZSwgcmVmZXJlbmNlcz1bKCIvdGVzdC1yZWYiLCAiPT0iKV0pCi0KLSAgICBhc3NlcnQgbS51cGRh
dGUoWyhzMSwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1z
KClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRo
LCB7dGVzdDEudG9fUmVmVGVzdCgpfSldCi0KLSAgICAjIHRlc3QgYmVjb21lcyBhIHRlc3RoYXJu
ZXNzIHRlc3QgKGhhc2ggY2hhbmdlIGJlY2F1c2UgdGhhdCBpcyBkZXRlcm1pbmVkCi0gICAgIyBi
YXNlZCBvbiB0aGUgZmlsZSBjb250ZW50cykuIFRoZSB1cGRhdGVkIG1hbmlmZXN0IHNob3VsZCBu
b3QgaW5jbHVkZXMgdGhlCi0gICAgIyBvbGQgcmVmdGVzdC4KLSAgICBzMiA9IFNvdXJjZUZpbGVX
aXRoVGVzdCgidGVzdCIsICIxIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVz
dF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJ0ZXN0aGFybmVzcyIs
IHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0KLWRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25f
Y2hhaW5fdXBkYXRlX25vZGVfY2hhbmdlKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkK
LQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZU
ZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VG
aWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2Vz
PVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMxLCBUcnVlKSwg
KHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsx
XVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7
dGVzdDJ9KV0KLQotICAgICN0ZXN0MiBjaGFuZ2VzIHRvIHN1cHBvcnQgdHlwZQotICAgIHMyID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIxIio0MCwgaXRlbS5TdXBwb3J0RmlsZSkKLQot
ICAgIGFzc2VydCBtLnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLSAg
ICB0ZXN0MyA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICgic3VwcG9ydCIsIHRlc3QzLnBhdGgsIHt0ZXN0M30pXQotCi0K
LWRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25fY2hhaW5fdXBkYXRlX25vZGVfY2hhbmdlX3Bh
cnRpYWwoKToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VG
aWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2Vz
PVsoIi90ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIi
LCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09Iild
KQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1
ZQotCi0gICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBz
Mi5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0
ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAg
ICAgICAgICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgczIg
PSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjEiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCBy
ZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMx
LnJlbF9wYXRoLCBGYWxzZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICBhc3NlcnQgbGlz
dChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0
Mn0pXQorICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVz
dDF9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0IiwgdGVzdDIucGF0aCwge3Rl
c3QyfSldCiAKIAogZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZl
c3QoKQogCi0gICAgc291cmNlcyA9IFtTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQw
LCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MS1yZWYiLCAiPT0iKV0pLAor
ICAgIHNvdXJjZXMgPSBbU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5S
ZWZUZXN0LCByZWZlcmVuY2VzPVsoIi90ZXN0MS1yZWYiLCAiPT0iKV0pLAogICAgICAgICAgICAg
ICAgU291cmNlRmlsZVdpdGhUZXN0cygidGVzdDIiLCAiMSIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NU
ZXN0LCBbKCJ0ZXN0Mi0xLmh0bWwiLCB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInRlc3QyLTIu
aHRtbCIsIHt9KV0pLAogICAgICAgICAgICAgICAgU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MyIs
ICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXQpAQCAtMzAyLDI0ICsxODksNiBAQCBkZWYg
dGVzdF9pdGVycGF0aCgpOgogICAgIGFzc2VydCBzZXQobS5pdGVycGF0aCgibWlzc2luZyIpKSA9
PSBzZXQoKQogCiAKLWRlZiB0ZXN0X3JlZnRlc3Rfbm9kZV9ieV91cmwoKToKLSAgICBtID0gbWFu
aWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwg
IjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9PSIpXSkK
LSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVz
dE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0gICAgbS51cGRhdGUoWyhz
MSwgVHJ1ZSksIChzMiwgVHJ1ZSldKQotCi0gICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3Nl
cnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6IHRlc3QxLnRvX1JlZlRlc3Qo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0MiI6IHRlc3Qy
fQotICAgIG0uX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gTm9uZQotICAgIGFzc2VydCBtLnJlZnRl
c3Rfbm9kZXNfYnlfdXJsID09IHsiL3Rlc3QxIjogdGVzdDEudG9fUmVmVGVzdCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Rlc3QyIjogdGVzdDJ9Ci0KLQogZGVm
IHRlc3Rfbm9fdXBkYXRlKCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIApAQCAtMzU0
LDkgKzIyMyw3IEBAIGRlZiB0ZXN0X25vX3VwZGF0ZV9kZWxldGUoKToKIAogICAgIHRlc3QxID0g
czEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgczFfMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMSIqNDAsIGl0ZW0uTWFudWFsVGVzdCkKLQotICAgIG0udXBkYXRlKFsoczFf
MS5yZWxfcGF0aCwgRmFsc2UpXSkKKyAgICBtLnVwZGF0ZShbKHMxLnJlbF9wYXRoLCBGYWxzZSld
KQogCiAgICAgYXNzZXJ0IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0MS5wYXRoLCB7
dGVzdDF9KV0KIApAQCAtMzk0LDkgKzI2MSwxMCBAQCBkZWYgdGVzdF91cGRhdGVfZnJvbV9qc29u
X21vZGlmaWVkKCk6CiAgICAgbS51cGRhdGUoWyhzMiwgVHJ1ZSldKQogICAgIGpzb25fc3RyID0g
bS50b19qc29uKCkKICAgICBhc3NlcnQganNvbl9zdHIgPT0gewotICAgICAgICAnaXRlbXMnOiB7
J3Rlc3RoYXJuZXNzJzogeyd0ZXN0MSc6IFsoJ3Rlc3QxJywgeyJ0aW1lb3V0IjogImxvbmcifSld
fX0sCi0gICAgICAgICdwYXRocyc6IHsndGVzdDEnOiAoJzExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFy
bmVzcycpfSwKKyAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsndGVzdDEnOiBbCisg
ICAgICAgICAgICAiMSIqNDAsCisgICAgICAgICAgICAoTm9uZSwgeyd0aW1lb3V0JzogJ2xvbmcn
fSkKKyAgICAgICAgXX19LAogICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICd2ZXJz
aW9uJzogNworICAgICAgICAndmVyc2lvbic6IDgKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5CmluZGV4IDBh
N2ExY2EwYjQxYTljMWI5NWZjZWEzMDk1NGNlZmY0YmNjNzRhZDguLjhiMGZiOTQ0ZWE1Njc0YTdk
MjFiOGRkYWFjODkwODU2NGQ0NDQxYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2Vm
aWxlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5CkBAIC02LDYgKzYsNyBAQCBm
cm9tIHNpeCBpbXBvcnQgQnl0ZXNJTwogZnJvbSAuLi5saW50LmxpbnQgaW1wb3J0IGNoZWNrX2ds
b2JhbF9tZXRhZGF0YQogZnJvbSAuLnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUsIHJlYWRf
c2NyaXB0X21ldGFkYXRhLCBqc19tZXRhX3JlLCBweXRob25fbWV0YV9yZQogCisKIGRlZiBjcmVh
dGUoZmlsZW5hbWUsIGNvbnRlbnRzPWIiIik6CiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29udGVu
dHMsIGJ5dGVzKQogICAgIHJldHVybiBTb3VyY2VGaWxlKCIvIiwgZmlsZW5hbWUsICIvIiwgY29u
dGVudHM9Y29udGVudHMpCkBAIC0zNiw2ICszNyw3IEBAIGRlZiBpdGVtcyhzKToKICAgICAiZm9v
L3Jlc291cmNlcy90ZXN0Lmh0bWwiLAogICAgICJmb28vc3VwcG9ydC90ZXN0Lmh0bWwiLAogICAg
ICJmb28vZm9vLW1hbnVhbC5odG1sLmhlYWRlcnMiLAorICAgICJjcmFzaHRlc3RzL2Zvby5odG1s
LmluaSIsCiAgICAgImNzcy9jb21tb24vdGVzdC5odG1sIiwKICAgICAiY3NzL0NTUzIvYXJjaGl2
ZS90ZXN0Lmh0bWwiLAogXSkKQEAgLTEwNiw4ICsxMDgsOCBAQCBkZWYgdGVzdF9uYW1lX2lzX3Zp
c3VhbChyZWxfcGF0aCk6CiAgICAgImNzczIxL2Zsb2F0cy9mbG9hdHMtcGxhY2VtZW50LXZlcnRp
Y2FsLTAwNC1yZWYyLnhodCIsCiAgICAgImNzczIxL2JveC9ydGwtbGluZWJyZWFrLW5vdHJlZjEu
eGh0IiwKICAgICAiY3NzMjEvYm94L3J0bC1saW5lYnJlYWstbm90cmVmMi54aHQiLAotICAgICIy
ZGNvbnRleHQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9kcmF3aW1hZ2VfaHRtbF9pbWFn
ZV81X3JlZi5odG1sIiwKLSAgICAiMmRjb250ZXh0L2xpbmUtc3R5bGVzL2xpbmV0b19yZWYuaHRt
bCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZh
cy9kcmF3aW1hZ2VfaHRtbF9pbWFnZV81X3JlZi5odG1sIiwKKyAgICAiaHRtbC9jYW52YXMvZWxl
bWVudC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAogICAgICJodG1sL3JlbmRlcmluZy9u
b24tcmVwbGFjZWQtZWxlbWVudHMvdGhlLWZpZWxkc2V0LWVsZW1lbnQtMC9yZWYuaHRtbCIKIF0p
CiBkZWYgdGVzdF9uYW1lX2lzX3JlZmVyZW5jZShyZWxfcGF0aCk6CkBAIC0xMjAsNiArMTIyLDE0
IEBAIGRlZiB0ZXN0X25hbWVfaXNfcmVmZXJlbmNlKHJlbF9wYXRoKToKICAgICBhc3NlcnQgaXRl
bXMocykgPT0gW10KIAogCitkZWYgdGVzdF9uYW1lX2lzX3RlbnRhdGl2ZSgpOgorICAgIHMgPSBj
cmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1yZXZlcnQtMDAxLnRlbnRhdGl2ZS5odG1sIikK
KyAgICBhc3NlcnQgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisgICAgcyA9IGNyZWF0ZSgiY3NzL2Nz
cy11aS9hcHBlYXJhbmNlLXJldmVydC0wMDEuaHRtbCIpCisgICAgYXNzZXJ0IG5vdCBzLm5hbWVf
aXNfdGVudGF0aXZlCisKKwogZGVmIHRlc3Rfd29ya2VyKCk6CiAgICAgcyA9IGNyZWF0ZSgiaHRt
bC90ZXN0Lndvcmtlci5qcyIpCiAgICAgYXNzZXJ0IG5vdCBzLm5hbWVfaXNfbm9uX3Rlc3QKQEAg
LTE0Myw2ICsxNTMsOCBAQCBkZWYgdGVzdF93b3JrZXIoKToKICAgICBmb3IgaXRlbSwgdXJsIGlu
IHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1
cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBp
dGVtLnF1aWMgaXMgTm9uZQorCiAKIGRlZiB0ZXN0X3dpbmRvdygpOgogICAgIHMgPSBjcmVhdGUo
Imh0bWwvdGVzdC53aW5kb3cuanMiKQpAQCAtMTY3LDYgKzE3OSw3IEBAIGRlZiB0ZXN0X3dpbmRv
dygpOgogICAgIGZvciBpdGVtLCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAg
ICAgICAgYXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0
IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3Rf
d29ya2VyX2xvbmdfdGltZW91dCgpOgpAQCAtMTc1LDcgKzE4OCw3IEBAIGltcG9ydFNjcmlwdHMo
Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnKQogdGVzdCgpIiIiCiAKICAgICBtZXRhZGF0YSA9
IGxpc3QocmVhZF9zY3JpcHRfbWV0YWRhdGEoQnl0ZXNJTyhjb250ZW50cyksIGpzX21ldGFfcmUp
KQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQorICAgIGFz
c2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBjcmVhdGUo
Imh0bWwvdGVzdC53b3JrZXIuanMiLCBjb250ZW50cz1jb250ZW50cykKICAgICBhc3NlcnQgcy5u
YW1lX2lzX3dvcmtlcgpAQCAtMTkyLDcgKzIwNSw3IEBAIGRlZiB0ZXN0X3dpbmRvd19sb25nX3Rp
bWVvdXQoKToKIHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21l
dGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRh
dGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygi
dGltZW91dCIsICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93Lmpz
IiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193aW5kb3cKQEAgLTIz
Miw2ICsyNDUsNyBAQCB0ZXN0KCkiIiIKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywg
ZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAg
YXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMg
Tm9uZQogCiAKIGRlZiB0ZXN0X3dpbmRvd193aXRoX3ZhcmlhbnRzKCk6CkBAIC0yNjIsNiArMjc2
LDcgQEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVk
X3VybHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBp
dGVtLnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAog
CiBkZWYgdGVzdF9weXRob25fbG9uZ190aW1lb3V0KCk6CkBAIC0yNzEsNyArMjg2LDcgQEAgZGVm
IHRlc3RfcHl0aG9uX2xvbmdfdGltZW91dCgpOgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRf
c2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBweXRob25fbWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRh
ID09IFsoYiJ0aW1lb3V0IiwgYiJsb25nIildCisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRp
bWVvdXQiLCAibG9uZyIpXQogCiAgICAgcyA9IGNyZWF0ZSgid2ViZHJpdmVyL3Rlc3QucHkiLCBj
b250ZW50cz1jb250ZW50cykKICAgICBhc3NlcnQgcy5uYW1lX2lzX3dlYmRyaXZlcgpAQCAtMzA2
LDYgKzMyMSw3IEBAIGRlZiB0ZXN0X211bHRpX2dsb2JhbCgpOgogICAgIGZvciBpdGVtLCB1cmwg
aW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0udXJsID09
IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0
IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfbXVsdGlfZ2xvYmFsX2xvbmdfdGltZW91
dCgpOgpAQCAtMzE0LDcgKzMzMCw3IEBAIGltcG9ydFNjcmlwdHMoJy9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKQogdGVzdCgpIiIiCiAKICAgICBtZXRhZGF0YSA9IGxpc3QocmVhZF9zY3JpcHRf
bWV0YWRhdGEoQnl0ZXNJTyhjb250ZW50cyksIGpzX21ldGFfcmUpKQotICAgIGFzc2VydCBtZXRh
ZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQorICAgIGFzc2VydCBtZXRhZGF0YSA9PSBb
KCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC5hbnkuanMi
LCBjb250ZW50cz1jb250ZW50cykKICAgICBhc3NlcnQgcy5uYW1lX2lzX211bHRpX2dsb2JhbApA
QCAtMzI3LDI1ICszNDMsMTAgQEAgdGVzdCgpIiIiCiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpbnB1dCxleHBlY3RlZCIsIFsKLSAgICAoYiIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJ3
aW5kb3cifSksCi0gICAgKGIiZGVmYXVsdCIsIHsiZGVkaWNhdGVkd29ya2VyIiwgIndpbmRvdyJ9
KSwKLSAgICAoYiIhZGVmYXVsdCIsIHt9KSwKLSAgICAoYiIhZGVmYXVsdCx3aW5kb3ciLCB7Indp
bmRvdyJ9KSwKLSAgICAoYiJ3aW5kb3csIWRlZmF1bHQiLCB7fSksCi0gICAgKGIiIWRlZmF1bHQs
ZGVkaWNhdGVkd29ya2VyIiwgeyJkZWRpY2F0ZWR3b3JrZXIifSksCi0gICAgKGIiZGVkaWNhdGVk
d29ya2VyLCFkZWZhdWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LHdvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIndv
cmtlciwhZGVmYXVsdCIsIHsic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAg
KGIiIWRlZGljYXRlZHdvcmtlciIsIHsid2luZG93In0pLAotICAgIChiIiF3b3JrZXIiLCB7Indp
bmRvdyJ9KSwKLSAgICAoYiIhd2luZG93IiwgeyJkZWRpY2F0ZWR3b3JrZXIifSksCi0gICAgKGIi
IXdpbmRvdyx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNo
YXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZGljYXRlZHdvcmtlciIsIHsic2Vydmlj
ZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiIiFkZWRpY2F0ZWR3
b3JrZXIsd29ya2VyIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFy
ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiIndvcmtlciwhc2hhcmVkd29ya2VyIiwgeyJk
ZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIXNo
YXJlZHdvcmtlcix3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwg
InNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyIiwgeyJkZWRp
Y2F0ZWR3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAoYiJzaGFyZWR3
b3JrZXIsc2VydmljZXdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIi
LCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKKyAgICAoYiJ3aW5kb3ciLCB7IndpbmRvdyJ9
KSwKKyAgICAoYiJzaGFyZWR3b3JrZXIiLCB7InNoYXJlZHdvcmtlciJ9KSwKKyAgICAoYiJzaGFy
ZWR3b3JrZXIsc2VydmljZXdvcmtlciIsIHsic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIi
fSksCisgICAgKGIid29ya2VyIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIs
ICJzaGFyZWR3b3JrZXIifSksCiBdKQogZGVmIHRlc3RfbXVsdGlfZ2xvYmFsX3dpdGhfY3VzdG9t
X2dsb2JhbHMoaW5wdXQsIGV4cGVjdGVkKToKICAgICBjb250ZW50cyA9IGIiIiIvLyBNRVRBOiBn
bG9iYWw9JXMKQEAgLTM4MCwxMCArMzgxLDExIEBAIHRlc3QoKSIiIiAlIGlucHV0CiAgICAgICAg
IGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCBpcyBG
YWxzZQogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0
IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfbXVsdGlfZ2xvYmFsX3dpdGhfanNzaGVs
bF9nbG9iYWxzKCk6Ci0gICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwK
KyAgICBjb250ZW50cyA9IGIiIiIvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtl
cixqc3NoZWxsCiB0ZXN0KCkiIiIKIAogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC5hbnkuanMi
LCBjb250ZW50cz1jb250ZW50cykKQEAgLTQxMCw2ICs0MTIsNyBAQCB0ZXN0KCkiIiIKICAgICAg
ICAgYXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS5qc3NoZWxsID09
IGpzc2hlbGwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFz
c2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X211bHRpX2dsb2JhbF93aXRoX3Zh
cmlhbnRzKCk6CkBAIC00NDgsMTcgKzQ1MSwxOCBAQCB0ZXN0KCkiIiIKICAgICBmb3IgaXRlbSwg
dXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVy
bCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFz
c2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5w
dXQsZXhwZWN0ZWQiLCBbCi0gICAgKGIiIiIvL01FVEE6IGZvbz1iYXJcbiIiIiwgWyhiImZvbyIs
IGIiYmFyIildKSwKLSAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbiIiIiwgWyhiImZvbyIsIGIi
YmFyIildKSwKLSAgICAoYiIiIi8vICBNRVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJh
ciIpXSksCisgICAgKGIiIiIvL01FVEE6IGZvbz1iYXJcbiIiIiwgWygiZm9vIiwgImJhciIpXSks
CisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAg
IChiIiIiLy8gIE1FVEE6IGZvbz1iYXJcbiIiIiwgWygiZm9vIiwgImJhciIpXSksCiAgICAgKGIi
IiJcbi8vIE1FVEE6IGZvbz1iYXJcbiIiIiwgW10pLAogICAgIChiIiIiIC8vIE1FVEE6IGZvbz1i
YXJcbiIiIiwgW10pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuLy8gTUVUQTogYmF6PXF1
dXhcbiIiIiwgWyhiImZvbyIsIGIiYmFyIiksIChiImJheiIsIGIicXV1eCIpXSksCi0gICAgKGIi
IiIvLyBNRVRBOiBmb289YmFyXG5cbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28iLCBi
ImJhciIpXSksCi0gICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBTdGFydCBvZiB0aGUgdGVz
dFxuLy8gTUVUQTogYmF6PXF1dXhcbiIiIiwgWyhiImZvbyIsIGIiYmFyIildKSwKKyAgICAoYiIi
Ii8vIE1FVEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoImZvbyIsICJiYXIi
KSwgKCJiYXoiLCAicXV1eCIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG5cbi8vIE1F
VEE6IGJhej1xdXV4XG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTog
Zm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFso
ImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiLy8gTUVUQTpcbiIiIiwgW10pLAogICAgIChiIiIi
Ly8gTUVUQTogZm9vYmFyXG4iIiIsIFtdKSwKIF0pCkBAIC02NTcsNyArNjYxLDM2IEBAIGRlZiB0
ZXN0X3JlbGF0aXZlX3Rlc3Rkcml2ZXIoZXh0KToKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUoImV4dCIsIFsiaHRtIiwgImh0bWwiXSkKLWRlZiB0ZXN0X3JlZnRlc3Rfbm9kZShleHQpOgor
ZGVmIHRlc3RfcXVpY19odG1sKGV4dCk6CisgICAgZmlsZW5hbWUgPSAiaHRtbC90ZXN0LiIgKyBl
eHQKKworICAgIGNvbnRlbnQgPSBiJzxtZXRhIG5hbWU9InF1aWMiIGNvbnRlbnQ9InRydWUiPicK
KyAgICBzID0gY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50KQorICAgIGFzc2VydCBzLnF1aWMKKwor
ICAgIGNvbnRlbnQgPSBiJzxtZXRhIG5hbWU9InF1aWMiIGNvbnRlbnQ9ImZhbHNlIj4nCisgICAg
cyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVudCkKKyAgICBhc3NlcnQgcy5xdWljIGlzIE5vbmUK
KworCitkZWYgdGVzdF9xdWljX2pzKCk6CisgICAgZmlsZW5hbWUgPSAiaHRtbC90ZXN0LmFueS5q
cyIKKworICAgIGNvbnRlbnQgPSBiIi8vIE1FVEE6IHF1aWM9dHJ1ZSIKKyAgICBzID0gY3JlYXRl
KGZpbGVuYW1lLCBjb250ZW50KQorICAgIF8sIGl0ZW1zID0gcy5tYW5pZmVzdF9pdGVtcygpCisg
ICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMKKworICAgIGNv
bnRlbnQgPSBiIi8vIE1FVEE6IHF1aWM9ZmFsc2UiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwg
Y29udGVudCkKKyAgICBfLCBpdGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVt
IGluIGl0ZW1zOgorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKKworCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoImV4dCIsIFsiaHRtIiwgImh0bWwiXSkKK2RlZiB0ZXN0X3JlZnRl
c3QoZXh0KToKICAgICBjb250ZW50ID0gYiI8bGluayByZWw9bWF0Y2ggaHJlZj1yZWYuaHRtbD4i
CiAKICAgICBmaWxlbmFtZSA9ICJmb28vdGVzdC4iICsgZXh0CkBAIC02NzMsNyArNzA2LDcgQEAg
ZGVmIHRlc3RfcmVmdGVzdF9ub2RlKGV4dCk6CiAKICAgICBhc3NlcnQgcy5jb250ZW50X2lzX3Jl
Zl9ub2RlCiAKLSAgICBhc3NlcnQgaXRlbXMocykgPT0gWygicmVmdGVzdF9ub2RlIiwgIi8iICsg
ZmlsZW5hbWUpXQorICAgIGFzc2VydCBpdGVtcyhzKSA9PSBbKCJyZWZ0ZXN0IiwgIi8iICsgZmls
ZW5hbWUpXQogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZXh0IiwgWyJ4aHQiLCAiaHRt
bCIsICJ4aHRtbCIsICJodG0iLCAieG1sIiwgInN2ZyJdKQpAQCAtODMxLDQgKzg2NCw0IEBAIGRl
ZiB0ZXN0X3JlZnRlc3RfZnV6enlfbXVsdGkoZnV6enksIGV4cGVjdGVkKToKIAogZGVmIHRlc3Rf
aGFzaCgpOgogICAgIHMgPSBTb3VyY2VGaWxlKCIvIiwgImZvbyIsICIvIiwgY29udGVudHM9YiJI
ZWxsbywgV29ybGQhIikKLSAgICBhc3NlcnQgYiJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMw
MjUzNjdiNzIxNjg0IiA9PSBzLmhhc2gKKyAgICBhc3NlcnQgImI0NWVmNmZlYzg5NTE4ZDMxNGY1
NDZmZDZjMzAyNTM2N2I3MjE2ODQiID09IHMuaGFzaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3QvdHlwZWRhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNhMDQxZTU0YzNlMjQwZTI2ZGI4M2MxOGEx
ZjU4OWUwNWNkYzg1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKQEAgLTAsMCAr
MSwzNDIgQEAKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nCisKK2Zyb20g
c2l4IGltcG9ydCBpdGVydmFsdWVzLCBpdGVyaXRlbXMKKworCitNWVBZID0gRmFsc2UKK2lmIE1Z
UFk6CisgICAgIyBNWVBZIGlzIHNldCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCisgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBEaWN0CisgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
KyAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
U2V0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFRleHQKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VHVwbGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHlwZQorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBVbmlvbgorCisgICAgIyBhdm9pZCBhY3R1YWxseSBpbXBvcnRpbmcgdGhlc2UsIHRoZXkncmUg
b25seSB1c2VkIGJ5IHR5cGUgY29tbWVudHMKKyAgICBmcm9tIC4gaW1wb3J0IGl0ZW0KKyAgICBm
cm9tIC4gaW1wb3J0IG1hbmlmZXN0CisKKworaWYgTVlQWToKKyAgICBUeXBlRGF0YVR5cGUgPSBN
dXRhYmxlTWFwcGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dXQor
ICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBwaW5nW1R1cGxlW1RleHQsIC4uLl0sIFRleHRd
CitlbHNlOgorICAgIFR5cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCisgICAgUGF0aEhhc2hU
eXBlID0gTXV0YWJsZU1hcHBpbmcKKworCitjbGFzcyBUeXBlRGF0YShUeXBlRGF0YVR5cGUpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtLCB0eXBlX2Nscyk6CisgICAgICAgICMgdHlwZTogKG1h
bmlmZXN0Lk1hbmlmZXN0LCBUeXBlW2l0ZW0uTWFuaWZlc3RJdGVtXSkgLT4gTm9uZQorICAgICAg
ICAiIiJEaWN0LWxpa2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIFRlc3RJdGVtcyBmb3IgZWFjaCB0
ZXN0IHR5cGUuCisKKyAgICAgICAgTG9hZGluZyBhbiBhY3R1YWwgSXRlbSBjbGFzcyBmb3IgZWFj
aCB0ZXN0IGlzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgc2xvdywgc28gdGhpcyBjbGFzcyBhbGxv
d3MgbGF6eS1sb2FkaW5nIG9mIHRoZSB0ZXN0CisgICAgICAgIGl0ZW1zLiBXaGVuIHRoZSBtYW5p
ZmVzdCBpcyBsb2FkZWQgd2Ugc3RvcmUgdGhlIHJhdyBqc29uCisgICAgICAgIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIHRlc3QgdHlwZSwgYW5kIG9ubHkgY3JlYXRlIGFuIEl0ZW0KKyAgICAgICAgc3Vi
Y2xhc3Mgd2hlbiB0aGUgdGVzdCBpcyBhY2Nlc3NlZC4gSW4gb3JkZXIgdG8gcmVtYWluCisgICAg
ICAgIEFQSS1jb21wYXRpYmxlIHdpdGggY29uc3VtZXJzIHRoYXQgZGVwZW5kIG9uIGdldHRpbmcg
YW4gSXRlbQorICAgICAgICBmcm9tIGl0ZXJhdGlvbiwgd2UgZG8gZWdlcmx5IGxvYWQgYWxsIGl0
ZW1zIHdoZW4gaXRlcmF0aW5nCisgICAgICAgIG92ZXIgdGhlIGNsYXNzLiIiIgorICAgICAgICBz
ZWxmLl9tYW5pZmVzdCA9IG0KKyAgICAgICAgc2VsZi5fdHlwZV9jbHMgPSB0eXBlX2NscyAgIyB0
eXBlOiBUeXBlW2l0ZW0uTWFuaWZlc3RJdGVtXQorICAgICAgICBzZWxmLl9qc29uX2RhdGEgPSB7
fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KKyAgICAgICAgc2VsZi5fZGF0YSA9IHt9ICAjIHR5
cGU6IERpY3RbVGV4dCwgQW55XQorICAgICAgICBzZWxmLl9oYXNoZXMgPSB7fSAgIyB0eXBlOiBE
aWN0W1R1cGxlW1RleHQsIC4uLl0sIFRleHRdCisgICAgICAgIHNlbGYuaGFzaGVzID0gUGF0aEhh
c2goc2VsZikKKworICAgIGRlZiBfZGVsZXRlX25vZGUoc2VsZiwgZGF0YSwga2V5KToKKyAgICAg
ICAgIyB0eXBlOiAoRGljdFtUZXh0LCBBbnldLCBUdXBsZVtUZXh0LCAuLi5dKSAtPiBOb25lCisg
ICAgICAgICIiImRlbGV0ZSBhIHBhdGggZnJvbSBhIERpY3QgZGF0YSB3aXRoIGEgZ2l2ZW4ga2V5
IiIiCisgICAgICAgIHBhdGggPSBbXQorICAgICAgICBub2RlID0gZGF0YQorICAgICAgICBmb3Ig
cGF0aHNlZyBpbiBrZXlbOi0xXToKKyAgICAgICAgICAgIHBhdGguYXBwZW5kKChub2RlLCBwYXRo
c2VnKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJv
cihrZXkpCisKKyAgICAgICAgZGVsIG5vZGVba2V5Wy0xXV0KKyAgICAgICAgd2hpbGUgcGF0aDoK
KyAgICAgICAgICAgIG5vZGUsIHBhdGhzZWcgPSBwYXRoLnBvcCgpCisgICAgICAgICAgICBpZiBs
ZW4obm9kZVtwYXRoc2VnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICBkZWwgbm9kZVtwYXRoc2Vn
XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0p
IC0+IFNldFtpdGVtLk1hbmlmZXN0SXRlbV0KKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEgICMg
dHlwZTogVW5pb25bRGljdFtUZXh0LCBBbnldLCBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dLCBMaXN0
W0FueV1dCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uobm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBzZXQp
OgorICAgICAgICAgICAgICAgIHJldHVybiBub2RlCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgICAgICBub2RlID0gc2VsZi5fanNv
bl9kYXRhCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5
OgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KSBhbmQgcGF0aHNlZyBpbiBu
b2RlOgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBm
b3VuZCA9IFRydWUKKworICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICByYWlzZSBL
ZXlFcnJvcihrZXkpCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgbGlzdCk6Cisg
ICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCisKKyAgICAgICAgc2VsZi5faGFzaGVzW2tl
eV0gPSBub2RlWzBdCisKKyAgICAgICAgZGF0YSA9IHNldCgpCisgICAgICAgIHBhdGggPSAiLyIu
am9pbihrZXkpCisgICAgICAgIGZvciB0ZXN0IGluIG5vZGVbMTpdOgorICAgICAgICAgICAgbWFu
aWZlc3RfaXRlbSA9IHNlbGYuX3R5cGVfY2xzLmZyb21fanNvbihzZWxmLl9tYW5pZmVzdCwgcGF0
aCwgdGVzdCkKKyAgICAgICAgICAgIGRhdGEuYWRkKG1hbmlmZXN0X2l0ZW0pCisKKyAgICAgICAg
bm9kZSA9IHNlbGYuX2RhdGEKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uobm9kZSwgZGljdCkK
KyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5WzotMV06CisgICAgICAgICAgICBub2RlID0gbm9k
ZS5zZXRkZWZhdWx0KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCkKKyAgICAgICAgYXNzZXJ0IGtleVstMV0gbm90IGluIG5vZGUKKyAgICAgICAg
bm9kZVtrZXlbLTFdXSA9IGRhdGEKKworICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9q
c29uX2RhdGEsIGtleSkKKworICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIF9fc2V0aXRl
bV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5d
LCBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dKSAtPiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorICAgICAgICBleGNl
cHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2Rh
dGEKKyAgICAgICAgZm9yIGksIHBhdGhzZWcgaW4gZW51bWVyYXRlKGtleVs6LTFdKToKKyAgICAg
ICAgICAgIG5vZGUgPSBub2RlLnNldGRlZmF1bHQocGF0aHNlZywge30pCisgICAgICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlF
cnJvcigiJXIgaXMgYSBjaGlsZCBvZiBhIHRlc3QgKCVyKSIgJSAoa2V5LCBrZXlbOmkrMV0pKQor
ICAgICAgICBub2RlW2tleVstMV1dID0gdmFsdWUKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxm
LCBrZXkpOgorICAgICAgICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBOb25lCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2RhdGEsIGtleSkK
KyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgc2VsZi5fZGVsZXRlX25vZGUo
c2VsZi5fanNvbl9kYXRhLCBrZXkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgZGVsIHNlbGYuX2hhc2hlc1trZXldCisgICAgICAgICAgICBleGNlcHQg
S2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIF9faXRlcl9fKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1RleHQsIC4uLl1dCisgICAg
ICAgICIiIkl0ZXJhdG9yIG92ZXIga2V5cyBpbiB0aGUgVHlwZURhdGEgaW4gY29kZXBvaW50IG9y
ZGVyIiIiCisgICAgICAgIGRhdGFfbm9kZSA9IHNlbGYuX2RhdGEgICMgdHlwZTogT3B0aW9uYWxb
RGljdFtUZXh0LCBBbnldXQorICAgICAgICBqc29uX25vZGUgPSBzZWxmLl9qc29uX2RhdGEgICMg
dHlwZTogT3B0aW9uYWxbRGljdFtUZXh0LCBBbnldXQorICAgICAgICBwYXRoID0gdHVwbGUoKSAg
IyB0eXBlOiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHN0YWNrID0gWyhkYXRhX25vZGUsIGpz
b25fbm9kZSwgcGF0aCldCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgZGF0YV9u
b2RlLCBqc29uX25vZGUsIHBhdGggPSBzdGFjay5wb3AoKQorICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShkYXRhX25vZGUsIHNldCkgb3IgaXNpbnN0YW5jZShqc29uX25vZGUsIGxpc3QpOgorICAg
ICAgICAgICAgICAgIGFzc2VydCBkYXRhX25vZGUgaXMgTm9uZSBvciBqc29uX25vZGUgaXMgTm9u
ZQorICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IGRhdGFfbm9kZSBpcyBOb25lIG9yIGlzaW5zdGFuY2UoZGF0YV9ub2Rl
LCBkaWN0KQorICAgICAgICAgICAgICAgIGFzc2VydCBqc29uX25vZGUgaXMgTm9uZSBvciBpc2lu
c3RhbmNlKGpzb25fbm9kZSwgZGljdCkKKworICAgICAgICAgICAgICAgIGtleXMgPSBzZXQoKSAg
IyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgICAgICAgICBpZiBkYXRhX25vZGUgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGtleXMgfD0gc2V0KGl0ZXIoZGF0YV9ub2RlKSkKKyAg
ICAgICAgICAgICAgICBpZiBqc29uX25vZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
ICAgIGtleXMgfD0gc2V0KGl0ZXIoanNvbl9ub2RlKSkKKworICAgICAgICAgICAgICAgIGZvciBr
ZXkgaW4gc29ydGVkKGtleXMsIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgIHN0
YWNrLmFwcGVuZCgoZGF0YV9ub2RlLmdldChrZXkpIGlmIGRhdGFfbm9kZSBpcyBub3QgTm9uZSBl
bHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9ub2RlLmdl
dChrZXkpIGlmIGpzb25fbm9kZSBpcyBub3QgTm9uZSBlbHNlIE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGF0aCArIChrZXksKSkpCisKKyAgICBkZWYgX19sZW5fXyhz
ZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgY291bnQgPSAwCisKKyAg
ICAgICAgc3RhY2sgPSBbc2VsZi5fZGF0YV0KKyAgICAgICAgd2hpbGUgc3RhY2s6CisgICAgICAg
ICAgICB2ID0gc3RhY2sucG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc2V0KToK
KyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHN0YWNrLmV4dGVuZChpdGVydmFsdWVzKHYpKQorCisgICAgICAgIHN0YWNrID0gW3Nl
bGYuX2pzb25fZGF0YV0KKyAgICAgICAgd2hpbGUgc3RhY2s6CisgICAgICAgICAgICB2ID0gc3Rh
Y2sucG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgbGlzdCk6CisgICAgICAgICAg
ICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFj
ay5leHRlbmQoaXRlcnZhbHVlcyh2KSkKKworICAgICAgICByZXR1cm4gY291bnQKKworICAgIGRl
ZiBfX25vbnplcm9fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgICAg
IHJldHVybiBib29sKHNlbGYuX2RhdGEpIG9yIGJvb2woc2VsZi5fanNvbl9kYXRhKQorCisgICAg
X19ib29sX18gPSBfX25vbnplcm9fXworCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkp
OgorICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJvb2wKKyAgICAgICAgIyB3ZSBwcm92aWRlIG91
ciBvd24gaW1wbCBvZiB0aGlzIHRvIGF2b2lkIGNhbGxpbmcgX19nZXRpdGVtX18gYW5kIGdlbmVy
YXRpbmcgaXRlbXMgZm9yCisgICAgICAgICMgdGhvc2UgaW4gc2VsZi5fanNvbl9kYXRhCisgICAg
ICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAg
ICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtw
YXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBzZXQpKQor
CisgICAgICAgIG5vZGUgPSBzZWxmLl9qc29uX2RhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4g
a2V5OgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2RlOgorICAgICAgICAgICAgICAgIG5v
ZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gYm9vbChpc2luc3RhbmNlKG5v
ZGUsIGxpc3QpKQorCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGNsZWFyKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgIyBtdWNoLCBtdWNoIHNpbXBs
ZXIvcXVpY2tlciB0aGFuIHRoYXQgZGVmaW5lZCBpbiBNdXRhYmxlTWFwcGluZworICAgICAgICBz
ZWxmLl9qc29uX2RhdGEuY2xlYXIoKQorICAgICAgICBzZWxmLl9kYXRhLmNsZWFyKCkKKyAgICAg
ICAgc2VsZi5faGFzaGVzLmNsZWFyKCkKKworICAgIGRlZiBzZXRfanNvbihzZWxmLCBqc29uX2Rh
dGEpOgorICAgICAgICAjIHR5cGU6IChEaWN0W1RleHQsIEFueV0pIC0+IE5vbmUKKyAgICAgICAg
IiIiUHJvdmlkZSB0aGUgb2JqZWN0IHdpdGggYSByYXcgSlNPTiBibG9iCisKKyAgICAgICAgTm90
ZSB0aGF0IHRoaXMgb2JqZWN0IGdyYXBoIGlzIGFzc3VtZWQgdG8gYmUgb3duZWQgYnkgdGhlIFR5
cGVEYXRhCisgICAgICAgIG9iamVjdCBhZnRlciB0aGUgY2FsbCwgc28gdGhlIGNhbGxlciBtdXN0
IG5vdCBtdXRhdGUgYW55IHBhcnQgb2YgdGhlCisgICAgICAgIGdyYXBoLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fanNvbl9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigic2V0X2pzb24gY2FsbCB3aGVuIEpTT04gZGF0YSBpcyBub3QgZW1wdHkiKQorCisgICAgICAg
IHNlbGYuX2pzb25fZGF0YSA9IGpzb25fZGF0YQorCisgICAgZGVmIHRvX2pzb24oc2VsZik6Cisg
ICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgICIiIkNvbnZlcnQg
dGhlIGN1cnJlbnQgZGF0YSB0byBKU09OCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSByZXR1cm5l
ZCBvYmplY3QgbWF5IGNvbnRhaW4gcmVmZXJlbmNlcyB0byB0aGUgaW50ZXJuYWwKKyAgICAgICAg
ZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIHVudGls
IHRoZSBuZXh0CisgICAgICAgIF9fZ2V0aXRlbV9fLCBfX3NldGl0ZW1fXywgX19kZWxpdGVtX18g
Y2FsbCwgc28gdGhlIGNhbGxlciBtdXN0IG5vdAorICAgICAgICBtdXRhdGUgYW55IHBhcnQgb2Yg
dGhlIHJldHVybmVkIG9iamVjdCBncmFwaC4KKworICAgICAgICAiIiIKKyAgICAgICAganNvbl9y
diA9IHNlbGYuX2pzb25fZGF0YS5jb3B5KCkKKworICAgICAgICBkZWYgc2FmZV9zb3J0ZXIoZWxl
bWVudCk6CisgICAgICAgICAgICAjIHR5cGU6IChUdXBsZVtzdHIsc3RyXSkgLT4gVHVwbGVbc3Ry
LHN0cl0KKyAgICAgICAgICAgICIiIiBrZXkgZnVuY3Rpb24gdG8gc29ydCBsaXN0cyB3aXRoIE5v
bmUgdmFsdWVzLgorCisgICAgICAgICAgICBQeXRob24zIGlzIG1vcmUgc3RyaWN0IHR5cGV3aXNl
LiBDb21wYXJpbmcgTm9uZSBhbmQgc3RyIGZvciBleGFtcGxlIGlzIHZhbGlkCisgICAgICAgICAg
ICBpbiBweXRob24yIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIHB5dGhvbjMuCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIGlmIGVsZW1lbnQgYW5kIG5vdCBlbGVtZW50WzBdOgorICAg
ICAgICAgICAgICAgIHJldHVybiAoIiIsIGVsZW1lbnRbMV0pCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50CisKKyAgICAgICAgc3RhY2sgPSBbKHNlbGYu
X2RhdGEsIGpzb25fcnYsIHR1cGxlKCkpXSAgIyB0eXBlOiBMaXN0W1R1cGxlW0RpY3RbVGV4dCwg
QW55XSwgRGljdFtUZXh0LCBBbnldLCBUdXBsZVtUZXh0LCAuLi5dXV0KKyAgICAgICAgd2hpbGUg
c3RhY2s6CisgICAgICAgICAgICBkYXRhX25vZGUsIGpzb25fbm9kZSwgcGFyX2Z1bGxfa2V5ID0g
c3RhY2sucG9wKCkKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhkYXRhX25vZGUp
OgorICAgICAgICAgICAgICAgIGZ1bGxfa2V5ID0gcGFyX2Z1bGxfa2V5ICsgKGssKQorICAgICAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc2V0KToKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IGsgbm90IGluIGpzb25fbm9kZQorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10g
PSBbc2VsZi5faGFzaGVzLmdldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfa2V5KV0g
KyBbdCBmb3IgdCBpbiBzb3J0ZWQoKHRlc3QudG9fanNvbigpIGZvciB0ZXN0IGluIHYpLCBrZXk9
c2FmZV9zb3J0ZXIpXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
IGpzb25fbm9kZVtrXSA9IGpzb25fbm9kZS5nZXQoaywge30pLmNvcHkoKQorICAgICAgICAgICAg
ICAgICAgICBzdGFjay5hcHBlbmQoKHYsIGpzb25fbm9kZVtrXSwgZnVsbF9rZXkpKQorCisgICAg
ICAgIHJldHVybiBqc29uX3J2CisKKworY2xhc3MgUGF0aEhhc2goUGF0aEhhc2hUeXBlKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgICMgdHlwZTogKFR5cGVEYXRhKSAt
PiBOb25lCisgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCisKKyAgICBkZWYgX19nZXRpdGVtX18o
c2VsZiwgayk6CisgICAgICAgICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0pIC0+IFRleHQKKyAg
ICAgICAgaWYgayBub3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9y
CisKKyAgICAgICAgaWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICByZXR1
cm4gc2VsZi5fZGF0YS5faGFzaGVzW2tdCisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pz
b25fZGF0YQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNl
ZyBpbiBub2RlOgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gbm9kZVswXSAgIyB0eXBlOiBpZ25vcmUKKworICAgICAgICBhc3NlcnQgRmFs
c2UsICJ1bnJlYWNoYWJsZSIKKyAgICAgICAgcmFpc2UgS2V5RXJyb3IKKworICAgIGRlZiBfX3Nl
dGl0ZW1fXyhzZWxmLCBrLCB2KToKKyAgICAgICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwg
VGV4dCkgLT4gTm9uZQorICAgICAgICBpZiBrIG5vdCBpbiBzZWxmLl9kYXRhOgorICAgICAgICAg
ICAgcmFpc2UgS2V5RXJyb3IKKworICAgICAgICBpZiBrIGluIHNlbGYuX2RhdGEuX2hhc2hlczoK
KyAgICAgICAgICAgIHNlbGYuX2RhdGEuX2hhc2hlc1trXSA9IHYKKworICAgICAgICBub2RlID0g
c2VsZi5fZGF0YS5fanNvbl9kYXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGs6CisgICAgICAg
ICAgICBpZiBwYXRoc2VnIGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0
aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIG5vZGVbMF0gPSB2ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fZGF0YS5faGFzaGVzW2tdID0gdgorCisgICAgZGVm
IF9fZGVsaXRlbV9fKHNlbGYsIGspOgorICAgICAgICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5d
KSAtPiBOb25lCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImtleXMgaGVyZSBtdXN0IG1hdGNo
IHVuZGVybHlpbmcgZGF0YSIpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gSXRlcmF0b3JbVHVwbGVbVGV4dCwgLi4uXV0KKyAgICAgICAgcmV0dXJuIGl0
ZXIoc2VsZi5fZGF0YSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6
ICgpIC0+IGludAorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2RhdGEpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3VwZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5CmluZGV4IGJmYmFhZjg5NzEyNmQ4ZWVjYTY5ZGNlZjk0
YmIzMTMwODg5N2ZkZTIuLjI5NjUzM2E2YmFiZjE3NmU0NTE0YmNmM2YyOWUxNjNmZGY5YTlmZGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5CkBAIC0yNiw3ICsyNiw4
IEBAIGRlZiB1cGRhdGUodGVzdHNfcm9vdCwgICMgdHlwZTogc3RyCiAgICAgICAgICAgIG1hbmlm
ZXN0X3BhdGg9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbc3RyXQogICAgICAgICAgICB3b3JraW5n
X2NvcHk9VHJ1ZSwgICMgdHlwZTogYm9vbAogICAgICAgICAgICBjYWNoZV9yb290PU5vbmUsICAj
IHR5cGU6IE9wdGlvbmFsW3N0cl0KLSAgICAgICAgICAgcmVidWlsZD1GYWxzZSAgIyB0eXBlOiBi
b29sCisgICAgICAgICAgIHJlYnVpbGQ9RmFsc2UsICAjIHR5cGU6IGJvb2wKKyAgICAgICAgICAg
cGFyYWxsZWw9VHJ1ZSAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICk6CiAgICAgIyB0eXBlOiAo
Li4uKSAtPiBib29sCiAgICAgbG9nZ2VyLndhcm5pbmcoIkRlcHJlY2F0ZWQ7IHVzZSBtYW5pZmVz
dC5sb2FkX2FuZF91cGRhdGUgaW5zdGVhZCIpCkBAIC0zNCw3ICszNSw3IEBAIGRlZiB1cGRhdGUo
dGVzdHNfcm9vdCwgICMgdHlwZTogc3RyCiAKICAgICB0cmVlID0gdmNzLmdldF90cmVlKHRlc3Rz
X3Jvb3QsIG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoLCBjYWNoZV9yb290LAogICAgICAgICAgICAg
ICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAgIHJldHVybiBtYW5pZmVzdC51
cGRhdGUodHJlZSkKKyAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUsIHBhcmFsbGVsKQog
CiAKIGRlZiB1cGRhdGVfZnJvbV9jbGkoKiprd2FyZ3MpOgpAQCAtNTEsNyArNTIsOCBAQCBkZWYg
dXBkYXRlX2Zyb21fY2xpKCoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJ1cmxfYmFzZSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU9
VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVidWlsZD1rd2FyZ3NbInJlYnVp
bGQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcm9vdD1rd2FyZ3NbImNh
Y2hlX3Jvb3QiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcm9vdD1rd2Fy
Z3NbImNhY2hlX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWw9
a3dhcmdzWyJwYXJhbGxlbCJdKQogCiAKIGRlZiBhYnNfcGF0aChwYXRoKToKQEAgLTc4LDYgKzgw
LDkgQEAgZGVmIGNyZWF0ZV9wYXJzZXIoKToKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAg
ICAgICAiLS1jYWNoZS1yb290IiwgYWN0aW9uPSJzdG9yZSIsIGRlZmF1bHQ9b3MucGF0aC5qb2lu
KHdwdF9yb290LCAiLndwdGNhY2hlIiksCiAgICAgICAgIGhlbHA9IlBhdGggaW4gd2hpY2ggdG8g
c3RvcmUgYW55IGNhY2hlcyAoZGVmYXVsdCA8dGVzdHNfcm9vdD4vLndwdGNhY2hlLykiKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW5vLXBhcmFsbGVsIiwgZGVzdD0icGFy
YWxsZWwiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVmYXVsdD1UcnVlLAorICAgICAgICBoZWxw
PSJEbyBub3QgcGFyYWxsZWxpemUgYnVpbGRpbmcgdGhlIG1hbmlmZXN0IikKICAgICByZXR1cm4g
cGFyc2VyCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKaW5kZXggMmVl
ZDc5ZjQyNzlkMGVjNzhjNjkzZjYzMmI5NmUzNmNlM2M5NmZhOS4uYWVmYzJjOTRmNDBlMWFlMjlk
MzY1N2ZlNDExNGY3OWY5NzU2OGJhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3V0
aWxzLnB5CkBAIC01NSwxNiArNTUsMTYgQEAgZGVmIHRvX29zX3BhdGgocGF0aCk6CiAKIAogZGVm
IGdpdChwYXRoKToKLSAgICAjIHR5cGU6IChieXRlcykgLT4gT3B0aW9uYWxbQ2FsbGFibGVbLi4u
LCBieXRlc11dCisgICAgIyB0eXBlOiAoYnl0ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwg
VGV4dF1dCiAgICAgZGVmIGdpdGZ1bmMoY21kLCAqYXJncyk6Ci0gICAgICAgICMgdHlwZTogKGJ5
dGVzLCAqYnl0ZXMpIC0+IGJ5dGVzCisgICAgICAgICMgdHlwZTogKGJ5dGVzLCAqYnl0ZXMpIC0+
IFRleHQKICAgICAgICAgZnVsbF9jbWQgPSBbImdpdCIsIGNtZF0gKyBsaXN0KGFyZ3MpCiAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChmdWxs
X2NtZCwgY3dkPXBhdGgsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgIHJl
dHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChmdWxsX2NtZCwgY3dkPXBhdGgsIHN0ZGVycj1z
dWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCd1dGY4JykKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgogICAgICAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKVswXSA9PSAiV2luZG93cyIg
YW5kIGlzaW5zdGFuY2UoZSwgV2luZG93c0Vycm9yKToKICAgICAgICAgICAgICAgICBmdWxsX2Nt
ZFswXSA9ICJnaXQuYmF0IgotICAgICAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNr
X291dHB1dChmdWxsX2NtZCwgY3dkPXBhdGgsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3
ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgndXRmOCcpCiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTEwMyw0ICsxMDMsNSBAQCBj
bGFzcyBjYWNoZWRfcHJvcGVydHkoR2VuZXJpY1tUXSk6CiAgICAgICAgICMgd2UgY2FuIHVuY29u
ZGl0aW9uYWxseSBhc3NpZ24gYXMgbmV4dCB0aW1lIHRoaXMgd29uJ3QgYmUgY2FsbGVkCiAgICAg
ICAgIGFzc2VydCBzZWxmLm5hbWUgbm90IGluIG9iai5fX2RpY3RfXwogICAgICAgICBydiA9IG9i
ai5fX2RpY3RfX1tzZWxmLm5hbWVdID0gc2VsZi5mdW5jKG9iaikKKyAgICAgICAgb2JqLl9fZGlj
dF9fLnNldGRlZmF1bHQoIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIsIHNldCgpKS5hZGQoc2VsZi5u
YW1lKQogICAgICAgICByZXR1cm4gcnYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkK
aW5kZXggZDRmNDdmNmJmMGFiMzVjOWRhNTE0ZWRiNGM0Yjc3OTY0NGZmOTBkZC4uN2MwZmVlYjgx
NjQ3OTk3NTI3NWIxYTFjNGQ4NGYxMjE1ZmFjMTQwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC92Y3MucHkKQEAgLTMzLDcgKzMzLDcgQEAgZGVmIGdldF90cmVlKHRlc3RzX3Jvb3QsIG1h
bmlmZXN0LCBtYW5pZmVzdF9wYXRoLCBjYWNoZV9yb290LAogICAgICMgdHlwZTogKGJ5dGVzLCBN
YW5pZmVzdCwgT3B0aW9uYWxbYnl0ZXNdLCBPcHRpb25hbFtieXRlc10sIGJvb2wsIGJvb2wpIC0+
IEZpbGVTeXN0ZW0KICAgICB0cmVlID0gTm9uZQogICAgIGlmIGNhY2hlX3Jvb3QgaXMgTm9uZToK
LSAgICAgICAgY2FjaGVfcm9vdCA9IG9zLnBhdGguam9pbih0ZXN0c19yb290LCBiIi53cHRjYWNo
ZSIpCisgICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRoLmpvaW4odGVzdHNfcm9vdCwgIi53cHRj
YWNoZSIpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlX3Jvb3QpOgogICAgICAgICB0
cnk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhjYWNoZV9yb290KQpAQCAtNTgsMjEgKzU4LDIx
IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAgICBzZWxmLmdpdCA9IGdpdChwYXRo
KQogCiAgICAgZGVmIF9sb2NhbF9jaGFuZ2VzKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+
IFNldFtieXRlc10KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbVGV4dF0KICAgICAgICAgIiIi
Z2V0IGEgc2V0IG9mIGZpbGVzIHdoaWNoIGhhdmUgY2hhbmdlZCBiZXR3ZWVuIEhFQUQgYW5kIHdv
cmtpbmcgY29weSIiIgogICAgICAgICBhc3NlcnQgc2VsZi5naXQgaXMgbm90IE5vbmUKICAgICAg
ICAgIyBub3RlIHRoYXQgZ2l0IHJ1bnMgdGhlIGNvbW1hbmQgd2l0aCB0ZXN0c19yb290IGFzIHRo
ZSBjd2QsIHdoaWNoIG1heQogICAgICAgICAjIG5vdCBiZSB0aGUgcm9vdCBvZiB0aGUgZ2l0IHJl
cG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dzZXIgcmVwbykKLSAgICAgICAgY21kID0gW2IiZGlmZi1p
bmRleCIsIGIiLS1yZWxhdGl2ZSIsIGIiLS1uby1yZW5hbWVzIiwgYiItLW5hbWUtb25seSIsIGIi
LXoiLCBiIkhFQUQiXQorICAgICAgICBjbWQgPSBbImRpZmYtaW5kZXgiLCAiLS1yZWxhdGl2ZSIs
ICItLW5vLXJlbmFtZXMiLCAiLS1uYW1lLW9ubHkiLCAiLXoiLCAiSEVBRCJdCiAgICAgICAgIGRh
dGEgPSBzZWxmLmdpdCgqY21kKQotICAgICAgICByZXR1cm4gc2V0KGRhdGEuc3BsaXQoYiJcMCIp
KQorICAgICAgICByZXR1cm4gc2V0KGRhdGEuc3BsaXQoIlwwIikpCiAKICAgICBkZWYgaGFzaF9j
YWNoZShzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W2J5dGVzLCBPcHRpb25hbFti
eXRlc11dCisgICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtUZXh0LCBPcHRpb25hbFtUZXh0XV0K
ICAgICAgICAgIiIiCiAgICAgICAgIEEgZGljdCBvZiByZWxfcGF0aCAtPiBjdXJyZW50IGdpdCBv
YmplY3QgaWQgaWYgdGhlIHdvcmtpbmcgdHJlZSBtYXRjaGVzIEhFQUQgZWxzZSBOb25lCiAgICAg
ICAgICIiIgotICAgICAgICBoYXNoX2NhY2hlID0ge30gICMgdHlwZTogRGljdFtieXRlcywgT3B0
aW9uYWxbYnl0ZXNdXQorICAgICAgICBoYXNoX2NhY2hlID0ge30gICMgdHlwZTogRGljdFtUZXh0
LCBPcHRpb25hbFtUZXh0XV0KIAogICAgICAgICBpZiBzZWxmLmdpdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKQEAgLTgxLDkgKzgxLDkgQEAgY2xhc3MgR2l0SGFzaGVy
KG9iamVjdCk6CiAgICAgICAgICMgbm90IGJlIHRoZSByb290IG9mIHRoZSBnaXQgcmVwbyAoZS5n
Liwgd2l0aGluIGEgYnJvd3NlciByZXBvKQogICAgICAgICBjbWQgPSBbImxzLXRyZWUiLCAiLXIi
LCAiLXoiLCAiSEVBRCJdCiAgICAgICAgIGxvY2FsX2NoYW5nZXMgPSBzZWxmLl9sb2NhbF9jaGFu
Z2VzKCkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxmLmdpdCgqY21kKS5zcGxpdChiIlwwIilb
Oi0xXTogICMgdHlwZTogYnl0ZXMKLSAgICAgICAgICAgIGRhdGEsIHJlbF9wYXRoID0gcmVzdWx0
LnJzcGxpdChiIlx0IiwgMSkKLSAgICAgICAgICAgIGhhc2hfY2FjaGVbcmVsX3BhdGhdID0gTm9u
ZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9jaGFuZ2VzIGVsc2UgZGF0YS5zcGxpdChiIiAiLCAzKVsy
XQorICAgICAgICBmb3IgcmVzdWx0IGluIHNlbGYuZ2l0KCpjbWQpLnNwbGl0KCJcMCIpWzotMV06
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgIGRhdGEsIHJlbF9wYXRoID0gcmVzdWx0LnJzcGxp
dCgiXHQiLCAxKQorICAgICAgICAgICAgaGFzaF9jYWNoZVtyZWxfcGF0aF0gPSBOb25lIGlmIHJl
bF9wYXRoIGluIGxvY2FsX2NoYW5nZXMgZWxzZSBkYXRhLnNwbGl0KCIgIiwgMylbMl0KIAogICAg
ICAgICByZXR1cm4gaGFzaF9jYWNoZQogCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgQ2FjaGVG
aWxlKHdpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhKSk6CiAKIAogY2xhc3MgTXRpbWVDYWNoZShD
YWNoZUZpbGUpOgotICAgIGZpbGVfbmFtZSA9IGIibXRpbWUuanNvbiIKKyAgICBmaWxlX25hbWUg
PSAibXRpbWUuanNvbiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWNoZV9yb290LCB0ZXN0
c19yb290LCBtYW5pZmVzdF9wYXRoLCByZWJ1aWxkPUZhbHNlKToKICAgICAgICAgIyB0eXBlOiAo
Ynl0ZXMsIGJ5dGVzLCBieXRlcywgYm9vbCkgLT4gTm9uZQpAQCAtMjIyLDE2ICsyMjIsMTYgQEAg
Y2xhc3MgTXRpbWVDYWNoZShDYWNoZUZpbGUpOgogCiAKIGNsYXNzIEdpdElnbm9yZUNhY2hlKENh
Y2hlRmlsZSwgTXV0YWJsZU1hcHBpbmcpOiAgIyB0eXBlOiBpZ25vcmUKLSAgICBmaWxlX25hbWUg
PSBiImdpdGlnbm9yZS5qc29uIgorICAgIGZpbGVfbmFtZSA9ICJnaXRpZ25vcmUuanNvbiIKIAog
ICAgIGRlZiBjaGVja192YWxpZChzZWxmLCBkYXRhKToKICAgICAgICAgIyB0eXBlOiAoRGljdFtB
bnksIEFueV0pIC0+IERpY3RbQW55LCBBbnldCi0gICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0
aC5qb2luKHNlbGYudGVzdHNfcm9vdCwgYiIuZ2l0aWdub3JlIikKKyAgICAgICAgaWdub3JlX3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0c19yb290LCAiLmdpdGlnbm9yZSIpCiAgICAgICAg
IG10aW1lID0gb3MucGF0aC5nZXRtdGltZShpZ25vcmVfcGF0aCkKLSAgICAgICAgaWYgZGF0YS5n
ZXQoYiIvZ2l0aWdub3JlX2ZpbGUiKSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKKyAgICAgICAg
aWYgZGF0YS5nZXQoIi9naXRpZ25vcmVfZmlsZSIpICE9IFtpZ25vcmVfcGF0aCwgbXRpbWVdOgog
ICAgICAgICAgICAgc2VsZi5tb2RpZmllZCA9IFRydWUKICAgICAgICAgICAgIGRhdGEgPSB7fQot
ICAgICAgICAgICAgZGF0YVtiIi9naXRpZ25vcmVfZmlsZSJdID0gW2lnbm9yZV9wYXRoLCBtdGlt
ZV0KKyAgICAgICAgICAgIGRhdGFbIi9naXRpZ25vcmVfZmlsZSJdID0gW2lnbm9yZV9wYXRoLCBt
dGltZV0KICAgICAgICAgcmV0dXJuIGRhdGEKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwg
a2V5KToKQEAgLTI4Niw3ICsyODYsNyBAQCBkZWYgd2Fsayhyb290KToKICAgICByZWxwYXRoID0g
b3MucGF0aC5yZWxwYXRoCiAKICAgICByb290ID0gb3MucGF0aC5hYnNwYXRoKHJvb3QpCi0gICAg
c3RhY2sgPSBkZXF1ZShbKHJvb3QsIGIiIildKQorICAgIHN0YWNrID0gZGVxdWUoWyhyb290LCAi
IildKQogCiAgICAgd2hpbGUgc3RhY2s6CiAgICAgICAgIGRpcl9wYXRoLCByZWxfcGF0aCA9IHN0
YWNrLnBvcGxlZnQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9y
dC5sb2cKaW5kZXggYTAxNTQyNjg3YjFhMDE2ZGZiNDc1MjVlMGFlMmVkNGFhMmIyMTdmOC4uMzg4
ZmJiMTFlZDlkOGRhMDE0M2Y4MmVkYzAyZDEwYzk3OWJlMzcyZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2Mt
aW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCkBAIC0yMyw2ICsyMyw3IEBAIExpc3Qg
b2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHBhdGhz
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC90eXBlZGF0YS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL215cHkuaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9teXB5LmluaQppbmRleCBhYzhlZGQzN2QzYWMyOTA0MTMzYTEyZWU5ZTc1NTBk
ZDVhNDg3MjM4Li5iOTQzYjZkMDg5YTRiOGY4MWU5YjZlMjNjNzY4ODBmYjkzY2Y2NjVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L215cHkuaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbXlweS5pbmkKQEAgLTEsMTIgKzEsMTMgQEAKIFtteXB5XQogI2NoZWNrX3VudHlw
ZWRfZGVmcyA9IFRydWUKLWRpc2FsbG93X3VudHlwZWRfZGVmcyA9IFRydWUKIGRpc2FsbG93X2Fu
eV9nZW5lcmljcyA9IFRydWUKIGRpc2FsbG93X2luY29tcGxldGVfZGVmcyA9IFRydWUKIGRpc2Fs
bG93X3N1YmNsYXNzaW5nX2FueSA9IFRydWUKIGRpc2FsbG93X3VudHlwZWRfY2FsbHMgPSBUcnVl
CiBkaXNhbGxvd191bnR5cGVkX2RlY29yYXRvcnMgPSBUcnVlCitkaXNhbGxvd191bnR5cGVkX2Rl
ZnMgPSBUcnVlCiBub19pbXBsaWNpdF9vcHRpb25hbCA9IFRydWUKK3N0cmljdF9lcXVhbGl0eSA9
IFRydWUKIHdhcm5fcmVkdW5kYW50X2Nhc3RzID0gVHJ1ZQogd2Fybl9yZXR1cm5fYW55ID0gVHJ1
ZQogd2Fybl91bnVzZWRfY29uZmlncyA9IFRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTI3LWZsYWtl
OC5pbmkKaW5kZXggOTkzMjRiMmFhZDE0ZDkyMWY0NjlmNTI5MzRmN2ZmOTM3NGExZDllZS4uZGQ2
Y2ViNmZlYTRiOTczYzAxMjRkZjQzODJmOWYxYTNhOWQ1YTBkMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTI3LWZsYWtlOC5p
bmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weTI3LWZsYWtlOC5pbmkKQEAgLTIyLDYgKzIyLDcgQEAgaWdub3JlID0gRTEyOCxFMTI5LEUy
MjYsRTIzMSxFMjUxLEUyNjUsRTMwMixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwMSxXNjA1
LFcKIGV4Y2x1ZGUgPQogICAgIC50b3gsCiAgICAgcHl3ZWJzb2NrZXQsCisgICAgcXVpYywKICAg
ICB0aGlyZF9wYXJ0eSwKICAgICB3cHRzZXJ2ZS9kb2NzL2NvbmYucHksCiAgICAgd3B0c2VydmUv
dGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1m
bGFrZTguaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5
YTAyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pCkBAIC0wLDAgKzEsMjcgQEAKK1tmbGFr
ZThdCitzZWxlY3QgPSBFLFcsRixOCisjIEUxMjg6IGNvbnRpbnVhdGlvbiBsaW5lIHVuZGVyLWlu
ZGVudGVkIGZvciB2aXN1YWwgaW5kZW50CisjIEUxMjk6IHZpc3VhbGx5IGluZGVudGVkIGxpbmUg
d2l0aCBzYW1lIGluZGVudCBhcyBuZXh0IGxvZ2ljYWwgbGluZQorIyBFMjI2OiBtaXNzaW5nIHdo
aXRlc3BhY2UgYXJvdW5kIGFyaXRobWV0aWMgb3BlcmF0b3IKKyMgRTIzMTogbWlzc2luZyB3aGl0
ZXNwYWNlIGFmdGVyIOKAmCzigJksIOKAmDvigJksIG9yIOKAmDrigJkKKyMgRTI1MTogdW5leHBl
Y3RlZCBzcGFjZXMgYXJvdW5kIGtleXdvcmQgLyBwYXJhbWV0ZXIgZXF1YWxzCisjIEUyNjU6IGJs
b2NrIGNvbW1lbnQgc2hvdWxkIHN0YXJ0IHdpdGgg4oCYIyDigJgKKyMgRTMwMjogZXhwZWN0ZWQg
MiBibGFuayBsaW5lcywgZm91bmQgMAorIyBFMzAzOiB0b28gbWFueSBibGFuayBsaW5lcyAoMykK
KyMgRTMwNTogZXhwZWN0ZWQgMiBibGFuayBsaW5lcyBhZnRlciBlbmQgb2YgZnVuY3Rpb24gb3Ig
Y2xhc3MKKyMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9ydCBub3QgYXQgdG9wIG9mIGZpbGUKKyMg
RTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHByZXNzaW9uLCB1c2UgYSBkZWYKKyMgVzUw
NDogbGluZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0b3IKKyMgVzYwNTogaW52YWxpZCBlc2Nh
cGUgc2VxdWVuY2UKKyMgTjgwMTogY2xhc3MgbmFtZXMgc2hvdWxkIHVzZSBDYXBXb3JkcyBjb252
ZW50aW9uCisjIE44MDI6IGZ1bmN0aW9uIG5hbWUgc2hvdWxkIGJlIGxvd2VyY2FzZQorIyBOODA2
OiB2YXJpYWJsZSBpbiBmdW5jdGlvbiBzaG91bGQgYmUgbG93ZXJjYXNlCitpZ25vcmUgPSBFMTI4
LEUxMjksRTIyNixFMjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAyLEU3MzEsVzUwNCxX
NjA1LE44MDEsTjgwMixOODA2CitleGNsdWRlID0KKyAgICAudG94LAorICAgIHB5d2Vic29ja2V0
LAorICAgIHRoaXJkX3BhcnR5LAorICAgIHdwdHJ1bm5lciwKKyAgICB3cHRzZXJ2ZS9kb2NzL2Nv
bmYucHksCisgICAgd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkK
K21heC1saW5lLWxlbmd0aCA9IDE0MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MzYtZmxha2U4LmluaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjYzFkYzZmNmE3YWZiNDFmMTJjNDFmYTgy
OTMzMzdkMTlhMDIzYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
MzYtZmxha2U4LmluaQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVtmbGFrZThdCi1z
ZWxlY3QgPSBFLFcsRixOCi0jIEUxMjg6IGNvbnRpbnVhdGlvbiBsaW5lIHVuZGVyLWluZGVudGVk
IGZvciB2aXN1YWwgaW5kZW50Ci0jIEUxMjk6IHZpc3VhbGx5IGluZGVudGVkIGxpbmUgd2l0aCBz
YW1lIGluZGVudCBhcyBuZXh0IGxvZ2ljYWwgbGluZQotIyBFMjI2OiBtaXNzaW5nIHdoaXRlc3Bh
Y2UgYXJvdW5kIGFyaXRobWV0aWMgb3BlcmF0b3IKLSMgRTIzMTogbWlzc2luZyB3aGl0ZXNwYWNl
IGFmdGVyIOKAmCzigJksIOKAmDvigJksIG9yIOKAmDrigJkKLSMgRTI1MTogdW5leHBlY3RlZCBz
cGFjZXMgYXJvdW5kIGtleXdvcmQgLyBwYXJhbWV0ZXIgZXF1YWxzCi0jIEUyNjU6IGJsb2NrIGNv
bW1lbnQgc2hvdWxkIHN0YXJ0IHdpdGgg4oCYIyDigJgKLSMgRTMwMjogZXhwZWN0ZWQgMiBibGFu
ayBsaW5lcywgZm91bmQgMAotIyBFMzAzOiB0b28gbWFueSBibGFuayBsaW5lcyAoMykKLSMgRTMw
NTogZXhwZWN0ZWQgMiBibGFuayBsaW5lcyBhZnRlciBlbmQgb2YgZnVuY3Rpb24gb3IgY2xhc3MK
LSMgRTQwMjogbW9kdWxlIGxldmVsIGltcG9ydCBub3QgYXQgdG9wIG9mIGZpbGUKLSMgRTczMTog
ZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBleHByZXNzaW9uLCB1c2UgYSBkZWYKLSMgVzUwNDogbGlu
ZSBicmVhayBhZnRlciBiaW5hcnkgb3BlcmF0b3IKLSMgVzYwNTogaW52YWxpZCBlc2NhcGUgc2Vx
dWVuY2UKLSMgTjgwMTogY2xhc3MgbmFtZXMgc2hvdWxkIHVzZSBDYXBXb3JkcyBjb252ZW50aW9u
Ci0jIE44MDI6IGZ1bmN0aW9uIG5hbWUgc2hvdWxkIGJlIGxvd2VyY2FzZQotIyBOODA2OiB2YXJp
YWJsZSBpbiBmdW5jdGlvbiBzaG91bGQgYmUgbG93ZXJjYXNlCi1pZ25vcmUgPSBFMTI4LEUxMjks
RTIyNixFMjMxLEUyNTEsRTI2NSxFMzAyLEUzMDMsRTMwNSxFNDAyLEU3MzEsVzUwNCxXNjA1LE44
MDEsTjgwMixOODA2Ci1leGNsdWRlID0KLSAgICAudG94LAotICAgIHB5d2Vic29ja2V0LAotICAg
IHRoaXJkX3BhcnR5LAotICAgIHdwdHJ1bm5lciwKLSAgICB3cHRzZXJ2ZS9kb2NzL2NvbmYucHks
Ci0gICAgd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKLW1heC1s
aW5lLWxlbmd0aCA9IDE0MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9SRUFETUUubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWE2NGI3MDFjZmI4NTkwMGMyMTk0NjM2MjRlNmFmYTI5OWEzODEzZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cXVpYy9SRUFETUUubWQKQEAgLTAsMCArMSwzMCBAQAorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMK
K1tRVUlDXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1xdWljLXRyYW5z
cG9ydCkgcmVsYXRlZCB0b29scy4KKworIyBRdWljVHJhbnNwb3J0CitbcXVpY190cmFuc3BvcnRf
c2VydmVyLnB5XSguL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSkgaW1wbGVtZW50cyBhIHNpbXBs
ZQorW1F1aWNUcmFuc3BvcnRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC12dnYt
d2VidHJhbnNwb3J0LXF1aWMpIHNlcnZlcgorZm9yIHRlc3RpbmcuIEl0IHVzZXMgW2Fpb3F1aWNd
KGh0dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy8pLCBhbmQgdGVzdAorYXV0aG9ycyBj
YW4gaW1wbGVtZW50IGN1c3RvbSBoYW5kbGVycyBieSBwdXR0aW5nIHB5dGhvbiBzY3JpcHRzIGlu
Citbd3B0L3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzL10oLi4vLi4vd2VidHJhbnNwb3J0L3F1
aWMvaGFuZGxlcnMvKS4KKworIyMgQ3VzdG9tIEhhbmRsZXJzCitUaGUgUXVpY1RyYW5zcG9ydFNl
cnZlciBjYWxscyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBlYWNoIGhhbmRsZXIgc2NyaXB0LgorCisg
LSBoYW5kbGVfY2xpZW50X2luZGljYXRpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgY2xpZW50IGlu
ZGljYXRpb24gcHJvY2Vzcy4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhyZWUg
YXJndW1lbnRzOgorICAgCisgICAtIGNvbm5lY3Rpb246IGFpb3F1aWMuYXN5bmNpby5RdWljQ29u
bmVjdGlvblByb3RvY29sCisgICAtIG9yaWdpbjogc3RyIFRoZSBvcmlnaW4gb2YgdGhlIGluaXRp
YXRvci4KKyAgIC0gcXVlcnk6IERpY3Rbc3RyLCBzdHJdIFRoZSBkaWN0aW9uYXJ5IG9mIHF1ZXJ5
IHBhcmFtZXRlcnMgb2YgdGhlIFVSTCBvZiB0aGUKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uCisK
KyAgIEEgaGFuZGxlciBjYW4gYWJvcnQgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MgZWl0
aGVyIGJ5IHJhaXNpbmcgYW4KKyAgIGV4Y2VwdGlvbiBvciBjbG9zaW5nIHRoZSBjb25uZWN0aW9u
LgorCSAgICAKKyAtIGhhbmRsZV9ldmVudCBpcyBjYWxsZWQgd2hlbiBhIFF1aWNFdmVudCBhcnJp
dmVzLgorICAgLSBjb25uZWN0aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90
b2NvbAorICAgLSBldmVudDogYWlvcXVpYy5xdWljLmV2ZW50cy5RdWljRXZlbnQKKworICAgVGhp
cyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIHVudGlsIHRoZSBjbGllbnQgaW5kaWNhdGlvbiBwcm9j
ZXNzIGZpbmlzaGVzCisgICBzdWNjZXNzZnVsbHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhi
YzIwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVB
RE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9xdWljL2NlcnRzL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTZjZjEzZmZmYzFiYmE4N2Q2MTBl
MjJjZjYwZTExMDQzZjUzOTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZApAQCAt
MCwwICsxLDEyIEBACitUbyBnZW5lcmF0ZSBjZXJ0LmtleSBhbmQgY2VydC5wZW06CisKKyAxLiBS
ZW1vdmUgd2ViLXBsYXRmb3JtLnRlc3Qua2V5IGFuZCB3ZWItcGxhdGZvcm0udGVzdC5wZW0gaW4g
Li4vLi4vY2VydHMuCisgMS4gRnJvbSB0aGUgcm9vdCwgcnVuCisgICAgYC4vd3B0IHNlcnZlIC0t
Y29uZmlnIHRvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb25gIGFuZCB0ZXJtaW5hdGUgaXQKKyAg
ICBhZnRlciBpdCBoYXMgc3RhcnRlZCB1cC4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0
Zm9ybS50ZXN0LmtleSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQua2V5LgorIDEuIE1vdmUgdG9v
bHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtIHRvIHRvb2xzL3F1aWMvY2VydHMvY2VydC5w
ZW0uCisgMS4gUmVjb3ZlciB0aGUgb3JpZ2luYWwgd2ViLXBsYXRmb3JtLnRlc3Qua2V5IGFuZCB3
ZWItcGxhdGZvcm0udGVzdC5wZW0gaW4KKyAgICAuLi8uLi9jZXJ0cy4KKworU2VlIGFsc286IC4u
Ly4uL2NlcnRzL1JFQURNRS5tZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9jZXJ0cy9jZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTNjZGZhNTQzNzI4
YjYzNjliMDVlZWZlMjA4MTFjZDY2NjJiNzE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQu
a2V5CkBAIC0wLDAgKzEsMjggQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRXdB
SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS293Z2dTbUFnRUFBb0lCQVFEYnlQdWlCR3B4aGF2
RgorM2o3cEk2ZytBMGdDNEJUTFRxTU9iS1NUa1FXc2pxMUdPZDJMQTFsd1RQTE9id3J2aElVRnpi
d29JYk93b1BNZQorTWtqc3NGQ0hHM0ZNajU2Y0tpQVEyREZJNmRLNVBqR1VWTlNSeGsvRjRIaDJa
eDlEVEVObC9FYi9jUlQyeXV1KworVzlIQ3UvQldmYld3bHd3TjV2eHluZUNvaDVjQkIvamQxS1RP
Umd1WXB1YXRIYjg1QUQ1QlJoWUxYd0hGN3lWSAorTlZ4SGV1R2xLMzF5dVlDSE5LdkJIRGdaRjVU
cDhGcUtYblZVK1BsS1hDU1U1NjAyYzJVNXhISUZ2S1R5aVpsTQorY1lYTlNVcDBsY053L2lUU1Z0
c1BFNGsxc3R1NnFrV2RUN0gvdVUrR1VCK2FMcU8rc3ZBL3M5R0dYOEhaZ3QrcgordlNGRThsSUpB
Z01CQUFFQ2dnRUJBSkE5NkQ5ZGpJb3lneGhhRW9tcG1Db1N0emtEM1VITXV5Q2xWcUZ1UlA0Sgor
cVZoMGM1eGZOMXlIYzdiZGs1eThLUjAwOTY2UzU3NGM4MUczQ0xzbHY4UGIwOUMrVlFjQ2NvYjdp
K1RoYUNXZworMXFNVnhXaGljVXBaVmxYR3VmTE40MUhVYnJnSWZBeTRBbDJ0SHc0aGo4c0R0N0ZN
Z0dIRFhaelBWbmprZThyMQorTzlZaUpsMVF4NEw3dk1XcnVHYTlRV2pGZ0huRyt1aGFLanNMMnY3
SlFPR3k1dDhhYm9WeWI3aDhyR2cvbUMrZQorSElZT3VjVjFhRU1nWVZhQW5oR3NLTUhreDVBMXhX
cFhCU3J1RytHUkJ4L2tYV1ora0NOY2tMWHVWZHJocTRISQorQWRieEl6cVFUUE1YcE8zUkF1anly
eGtIYWJFTk1QQS9GR0g0c3ptZExvRUNnWUVBOXo4cGU3L3ZTbFdnZmhzRgorejVRbndXSHlGanJ1
aGdELzJzYTRMQi9jbXdUUWRHdzhFNVROSERiQ2dtUzQ5OURaVVhJWnVCT1Rla2RFVkRRYQorbmc4
VnlMM283RG1zKzVpUGk1Y3FzY3AxS2tqTEVNeVBwcXM0SlR1aXhScGptTWZ5Y2R4VlRwWGhjdXFu
SnBUTAorUUM5cFI1Ti96WmNBTURsQnYwRnpjOFQ3OFhrQ2dZRUE0NUR1ZVdHSFZmMnU0dU1ZeVd4
eVpoYU5EYWdsMTN5eAorL29TU1VUem9MdlNwR1F4S2t2K2Z4U05xTDNudTVJYTZ1RDRHdTVOdWJQ
NEhyL1ZlU0tSZm1rVDFsdXZGY1ZmQwora244cjhic3NacTg1NUFWSnhYYTVLMWF1V2pDdUZIajBw
WWY1NnNmaGtQeHBZMFJRRWdrdnVFM2lvc1ExMmdGWAordncxNDdGdFFVUkVDZ1lFQTg1UnBWUDQ1
UzMxaU9QcDhWZzE2d1J5eWVFNGtzU1lJNmtyK0pKSmJMdW1tU0J4ZAorYjFrWVhTUmhxajU2cjhJ
MFp2WEcrcjltZW4vOWhBczA4ZVNnckh6VUhPMlJTdWo0K2llNkt4L3ZIL0pKQkVyVAorZHZxVnZM
Q3M0Z3ZtZFJ6KzhFZUdUMzUvZGt4UTBrU2luS0JZMHVnd2I2WEV6TDJMMVZVdzNhd0NIZGtDZ1lF
QQorcXRRSWdPdjZ1VTJuZEVEQVFheDhNRENya0YzeWtsSFVHRmtTc1pORVJNTjdFUWVPRDgxKzlY
RkJiQVJmbGdPaAordFY4eWxLcjNFVENkT3JTNkkxUHBSSmlSdDhxanZCTUNTQkRaUHl5Z0J6RnhC
c0FGZ2dzK3M4N3RNVjByd01pUAorOXBjZHYrWnVhUFZpYzVjN2VGNlhDUWJHcENNZ3ZkZVdOQ0I3
N3dvWlA5RUNnWUVBbG9ia1BHRFlDeS9SYVZpVQorRmJxNUdvNncwcE1Wbkx6WWJuNEdoMUFKUGVR
S0lTcVh0Slo3dHFwZFcraTdxemtMdzc0RUxhWUNCUjJaRWxyagorRVZlNWFST3g2VEZOOVJuamtG
bnl2OUxleVlMK1lQYzhBSXdWVUNlU1Bpa1NHTEZwSmZhL2p3RG1XaDN2SG1tQQorTlJVUDQwd2J0
Qmk0MkMydWRyVHhVV3NIeHFjPQorLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWlj
L2NlcnRzL2NlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNzBmMWIwODJhY2Iz
MDUzMjEzYmM3ZWU3NGY1ZTM2N2M4OWZmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5w
ZW0KQEAgLTAsMCArMSwyNDAgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZl
cnNpb246IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogOTE5NDkyICgweGUwN2M0KQor
ICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgorICAg
ICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cworICAgICAgICBWYWxpZGl0eQorICAg
ICAgICAgICAgTm90IEJlZm9yZTogQXByIDIwIDExOjIwOjU2IDIwMjAgR01UCisgICAgICAgICAg
ICBOb3QgQWZ0ZXIgOiBBcHIgMTggMTE6MjA6NTYgMjAzMCBHTVQKKyAgICAgICAgU3ViamVjdDog
Q049d2ViLXBsYXRmb3JtLnRlc3QKKyAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86Cisg
ICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorICAgICAgICAg
ICAgICAgIFJTQSBQdWJsaWMtS2V5OiAoMjA0OCBiaXQpCisgICAgICAgICAgICAgICAgTW9kdWx1
czoKKyAgICAgICAgICAgICAgICAgICAgMDA6ZGI6Yzg6ZmI6YTI6MDQ6NmE6NzE6ODU6YWI6YzU6
ZGU6M2U6ZTk6MjM6CisgICAgICAgICAgICAgICAgICAgIGE4OjNlOjAzOjQ4OjAyOmUwOjE0OmNi
OjRlOmEzOjBlOjZjOmE0OjkzOjkxOgorICAgICAgICAgICAgICAgICAgICAwNTphYzo4ZTphZDo0
NjozOTpkZDo4YjowMzo1OTo3MDo0YzpmMjpjZTo2ZjoKKyAgICAgICAgICAgICAgICAgICAgMGE6
ZWY6ODQ6ODU6MDU6Y2Q6YmM6Mjg6MjE6YjM6YjA6YTA6ZjM6MWU6MzI6CisgICAgICAgICAgICAg
ICAgICAgIDQ4OmVjOmIwOjUwOjg3OjFiOjcxOjRjOjhmOjllOjljOjJhOjIwOjEwOmQ4OgorICAg
ICAgICAgICAgICAgICAgICAzMTo0ODplOTpkMjpiOTozZTozMTo5NDo1NDpkNDo5MTpjNjo0Zjpj
NTplMDoKKyAgICAgICAgICAgICAgICAgICAgNzg6NzY6Njc6MWY6NDM6NGM6NDM6NjU6ZmM6NDY6
ZmY6NzE6MTQ6ZjY6Y2E6CisgICAgICAgICAgICAgICAgICAgIGViOmJlOjViOmQxOmMyOmJiOmYw
OjU2OjdkOmI1OmIwOjk3OjBjOjBkOmU2OgorICAgICAgICAgICAgICAgICAgICBmYzo3Mjo5ZDpl
MDphODo4Nzo5NzowMTowNzpmODpkZDpkNDphNDpjZTo0NjoKKyAgICAgICAgICAgICAgICAgICAg
MGI6OTg6YTY6ZTY6YWQ6MWQ6YmY6Mzk6MDA6M2U6NDE6NDY6MTY6MGI6NWY6CisgICAgICAgICAg
ICAgICAgICAgIDAxOmM1OmVmOjI1OjQ3OjM1OjVjOjQ3OjdhOmUxOmE1OjJiOjdkOjcyOmI5Ogor
ICAgICAgICAgICAgICAgICAgICA4MDo4NzozNDphYjpjMToxYzozODoxOToxNzo5NDplOTpmMDo1
YTo4YTo1ZToKKyAgICAgICAgICAgICAgICAgICAgNzU6NTQ6Zjg6Zjk6NGE6NWM6MjQ6OTQ6ZTc6
YWQ6MzY6NzM6NjU6Mzk6YzQ6CisgICAgICAgICAgICAgICAgICAgIDcyOjA1OmJjOmE0OmYyOjg5
Ojk5OjRjOjcxOjg1OmNkOjQ5OjRhOjc0Ojk1OgorICAgICAgICAgICAgICAgICAgICBjMzo3MDpm
ZToyNDpkMjo1NjpkYjowZjoxMzo4OTozNTpiMjpkYjpiYTphYToKKyAgICAgICAgICAgICAgICAg
ICAgNDU6OWQ6NGY6YjE6ZmY6Yjk6NGY6ODY6NTA6MWY6OWE6MmU6YTM6YmU6YjI6CisgICAgICAg
ICAgICAgICAgICAgIGYwOjNmOmIzOmQxOjg2OjVmOmMxOmQ5OjgyOmRmOmFiOmJkOjIxOjQ0OmYy
OgorICAgICAgICAgICAgICAgICAgICA1MjowOQorICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2
NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBY
NTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAgICAgICAgICAgIENBOkZBTFNFCisgICAg
ICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAg
Nzk6OTY6RTE6OTY6RjM6N0M6NDE6MkI6M0I6OUY6MUI6MEQ6RDY6QTk6Qjg6Qjc6NEY6RTY6NjE6
NUMKKyAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAgICAg
ICAgICAgICAgIGtleWlkOkY2OkI5OkRBOjE2OjA3OjA1OkJCOjZGOkM5OjYzOjMwOkM2OjY3OjQw
OkNCOjAzOkQzOjFFOjkwOkVDCisKKyAgICAgICAgICAgIFg1MDl2MyBLZXkgVXNhZ2U6IAorICAg
ICAgICAgICAgICAgIERpZ2l0YWwgU2lnbmF0dXJlLCBOb24gUmVwdWRpYXRpb24sIEtleSBFbmNp
cGhlcm1lbnQKKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6IAorICAgICAg
ICAgICAgICAgIFRMUyBXZWIgU2VydmVyIEF1dGhlbnRpY2F0aW9uCisgICAgICAgICAgICBYNTA5
djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKKyAgICAgICAgICAgICAgICBETlM6d2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0
MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzku
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzcud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDEyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A5NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDM2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNy53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzMud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDg0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMi53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcwLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNi53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNzYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODYud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkzLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AxMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQ3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNDUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Njcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDUwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMjIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDE5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNi5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDUzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTAubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMx
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDc4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY1Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzIubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A5MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg5Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ny5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
ODIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzkubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDkyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY0Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMzgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDIzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTcubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMyLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNjAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDUxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk5
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNDgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDU2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDY5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wODYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDE3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wODgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ny5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3
dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cxLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFk
Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRz
NTNsd3drcnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QKKyAgICBTaWduYXR1cmUgQWxnb3JpdGht
OiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgorICAgICAgICAgMGI6OGI6NTU6NmE6YjQ6NjU6YTg6
MmE6M2I6YzA6NjI6MGU6ODU6ZDU6ZGM6OTk6OWY6M2Y6CisgICAgICAgICBkMDpiNzpmZjpjYjpi
Njo2ODplNTphZTpkMzphMjo0ZTpjODpkNDphYTozNDo5NTplNDo5ZToKKyAgICAgICAgIDRiOmU0
Ojc0OmU0OmM0OmVjOjExOjMxOjY3OmU1OmE2OmRhOjg1OjZiOjBmOmQ3OjY0OmI3OgorICAgICAg
ICAgZTc6ZWI6ZmU6MDk6YjY6ODg6ZTE6NzQ6MWQ6MGM6MTU6YTM6MmU6MDE6MDM6ZmM6Njc6OWM6
CisgICAgICAgICA3YzpiYTplNjpmYjo1MjoxZDo1ODpjZDo2ODphMzo1NTo4Yzo5Yjo1NzpiYjo4
OTozMjoxMDoKKyAgICAgICAgIDQxOjcxOjk5OmEzOjFhOmRjOjI1OjJkOmQwOmI5OjFhOmFmOmU2
Ojc2OjQwOmQ3OmY1OjIzOgorICAgICAgICAgYTk6ZDg6NTk6NDU6OGE6YWI6NTM6NTM6ODc6Y2M6
MTQ6YjM6ODc6ZGU6MWQ6MDE6OTk6N2E6CisgICAgICAgICA0Zjo3Mjo0Nzo2OTo5Yzo5ODo3Mzo5
NDo3OTo5MDoyNTo3MDowMjplYzo3NTpiMjo3NzoxMToKKyAgICAgICAgIDI4Ojk3OmNkOjQzOjNk
OmQ1OjY4OjM4OjczOjcxOmZkOmE5OjBiOmEyOmVkOjJkOjFjOjZlOgorICAgICAgICAgZTE6MDU6
ZDQ6MzA6YTY6NjQ6MDQ6MTA6Y2E6ZTg6ZTY6ZTA6N2E6YTk6ZjQ6MjY6OTQ6NmI6CisgICAgICAg
ICBhNDoyODphYTowYzplYjozZTplMDplZjpkMjpiZTowYjo3MDplNDpkZDo0YzpmYzphMjo4NzoK
KyAgICAgICAgIDBjOjI0OjgzOjcyOmUyOmU0OjZmOjI1OmE4OmVlOmM1OjEyOjg5OmQ5OmRkOjhm
OjgyOjE0OgorICAgICAgICAgYzM6ZDY6MDY6YWU6MWQ6YmI6N2I6M2M6ZmM6OWI6Mjc6NTY6NTA6
YjQ6Mjg6NDQ6NjA6ODA6CisgICAgICAgICAxNzo4NzoxYzpiMTpjZTo2ZDo3NzpiNDpkMToyYjoz
MjplODpkMDpiYTowNjo2Zjo0ZDowNDoKKyAgICAgICAgIGZmOjYwOmZlOmUzCistLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KK01JSWd2RENDSDZTZ0F3SUJBZ0lERGdmRU1BMEdDU3FHU0liM0RR
RUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwKK1lpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlN
REEwTWpBeE1USXdOVFphRncwek1EQTBNVGd4TVRJd05UWmEKK01Cd3hHakFZQmdOVkJBTU1FWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUYKK0FBT0NBUThBTUlJ
QkNnS0NBUUVBMjhqN29nUnFjWVdyeGQ0KzZTT29QZ05JQXVBVXkwNmpEbXlrazVFRnJJNnQKK1Jq
bmRpd05aY0V6eXptOEs3NFNGQmMyOEtDR3pzS0R6SGpKSTdMQlFoeHR4VEkrZW5Db2dFTmd4U09u
U3VUNHgKK2xGVFVrY1pQeGVCNGRtY2ZRMHhEWmZ4Ry8zRVU5c3Jydmx2UndydndWbjIxc0pjTURl
YjhjcDNncUllWEFRZjQKKzNkU2t6a1lMbUtibXJSMi9PUUErUVVZV0MxOEJ4ZThsUnpWY1Izcmhw
U3Q5Y3JtQWh6U3J3Unc0R1JlVTZmQmEKK2lsNTFWUGo1U2x3a2xPZXRObk5sT2NSeUJieWs4b21a
VEhHRnpVbEtkSlhEY1A0azBsYmJEeE9KTmJMYnVxcEYKK25VK3gvN2xQaGxBZm1pNmp2ckx3UDdQ
UmhsL0IyWUxmcTcwaFJQSlNDUUlEQVFBQm80SWVCRENDSGdBd0NRWUQKK1ZSMFRCQUl3QURBZEJn
TlZIUTRFRmdRVWVaYmhsdk44UVNzN254c04xcW00dDAvbVlWd3dId1lEVlIwakJCZ3cKK0ZvQVU5
cm5hRmdjRnUyL0pZekRHWjBETEE5TWVrT3d3Q3dZRFZSMFBCQVFEQWdYZ01CTUdBMVVkSlFRTU1B
b0cKK0NDc0dBUVVGQndNQk1JSWRqd1lEVlIwUkJJSWRoakNDSFlLQ0VYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdoVnYKK2NEZ3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3Tnk1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJVmIzQTUKK0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRFF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRlc1dmRDMTMKK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIz
QTJMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmkKK0xYQnNZWFJtYjNKdExuUmxj
M1NDRlc5d01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0F4TG5kbFlpMXcKK2JHRjBabTl5
YlM1MFpYTjBnaFYzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOUzUzWldJdGNHeGgK
K2RHWnZjbTB1ZEdWemRJSVdiM0E0T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVPQzUz
WldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0E0TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQTRPUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EyTmk1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F5TkM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBNUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0Ez
T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVNUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdW
emRJSVdiM0ExT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpPUzUzWldJdGNHeGgKK2RH
WnZjbTB1ZEdWemRJSVdiM0EyTUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFPQzUzWldJ
dGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F5T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Qz
ZDNNUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F4TkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQTJPUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EwTUM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTNOQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F6TVM1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJ
SVdiM0EzTXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGgKK2RHWnZj
bTB1ZEdWemRJSVdiM0F4TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOQzUzWldJdGNH
eGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EyTXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNN
UzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJV2IzQXhOaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXlOeTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F5T1M1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVOQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdi
M0EwTkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpNeTUzWldJdGNHeGgKK2RHWnZjbTB1
ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpNaTUzWldJdGNHeGgK
K2RHWnZjbTB1ZEdWemRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNNQzUz
WldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQTBNeTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EzT0M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQXlOaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EzTmk1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFNaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0E1
T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTROaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdW
emRJSVdiM0EwTmk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOeTUzWldJdGNHeGgKK2RH
WnZjbTB1ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVNeTUzWldJ
dGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTFOUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EwTnk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQTFNUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EwTlM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTRNQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EyT0M1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJ
SVdiM0ExTnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpOUzUzWldJdGNHeGgKK2RHWnZj
bTB1ZEdWemRJSVdiM0EyTnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVNaTUzWldJdGNH
eGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhN
eTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EzTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJV2IzQTJOQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0E1Tnk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXpOeTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0ExTmk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdi
M0E0TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOUzUzWldJdGNHeGgKK2RHWnZjbTB1
ZEdWemRJSVdiM0F4TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFNQzUzWldJdGNHeGgK
K2RHWnZjbTB1ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRNeTUz
WldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0E0TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQXlNQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0F5TVM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQXlNeTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EwTWk1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0Ey
TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVOaTUzWldJdGNHeGgKK2RHWnZjbTB1ZEdW
emRJSVdiM0E0Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhPUzUzWldJdGNHeGgKK2RH
WnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpNQzUzWldJ
dGNHeGgKK2RHWnZjbTB1ZEdWemRJSVdiM0EwT0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QXpOQzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSVpiM0EyTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpiM0F6TG01dmRDMTMKK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXlMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTEKK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnoKK2RJSVpkM2QzTG5kM2R5
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0EzTG01dmRDMTNaV0l0Y0d4aGRHWnYKK2NtMHVk
R1Z6ZElJWmIzQTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTRMbTV2ZEMxM1pX
SXQKK2NHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlaYjNBeExtNXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6Tmk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdOVE11Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFV3TG01dmRDMTNaV0l0Y0d4aGRHWnYKK2NtMHVkR1Z6ZElJYWIzQXlOQzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekV1Ym05MExYZGwKK1lpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEazFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTQKK015NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTAK
K1pYTjBnaHB2Y0RjekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE9TNXViM1F0
ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaHB2Y0RneExtNXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdocHZjRFF3TG01dmRDMTNaV0l0Y0d4aGRHWnYKK2NtMHVkR1Z6ZElJYWIzQXlOUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOalV1Ym05MExYZGwKK1lpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTQKK01D
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05USXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTAKK1pYTjBnaHB2Y0RZNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBME5T
NXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RjeUxtNXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1
TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdPRGt1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnYKK2NtMHVkR1Z6ZElJYWIz
QTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOemt1Ym05MExYZGwKK1lpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQz
ZDMKK0xuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01USXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlh
YjNBME5DNXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpFdWJtOTBMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVNExtNXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0F4TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdNekF1Ym05MExYZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFl5TG01dmRDMTNaV0l0Y0d4aGRHWnYKK2NtMHVkR1Z6
ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVEl1Ym05MExYZGwK
K1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYWIzQTUKK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qUXVibTkwTFhk
bFlpMXdiR0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RJMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBeU1pNXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NHbTl3T1RRdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RNNExtNXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0F6TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdNak11Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUzTG01dmRDMTNaV0l0Y0d4aGRHWnYKK2Nt
MHVkR1Z6ZElJYWIzQTFOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRFV1Ym05
MExYZGwKK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTUKK055NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d016SXVi
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RZd0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBNU5pNXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RReExtNXYKK2RDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F6TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKK0dtOXdP
VGt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF5TG01dmRDMTNaV0l0Y0d4aGRH
WnYKK2NtMHVkR1Z6ZElJYWIzQTJOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
emN1Ym05MExYZGwKK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQTEKK05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d05UWXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RnMExtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBek5DNXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5SbGMzU0NH
bTl3TmprdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFeExtNXYKK2RDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MK
K0duZDNkekV1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGcyTG01dmRDMTNaV0l0
Y0d4aGRHWnYKK2NtMHVkR1Z6ZElJYWIzQXhNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdNakF1Ym05MExYZGwKK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEYzJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkKK055NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDR205d01UY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RjMUxtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5TNXViM1F0ZDJWaUxYQnMKK1lYUm1iM0p0TG5S
bGMzU0NHbTl3TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFNExtNXYKK2RD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0MKK0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF6TG01dmRD
MTNaV0l0Y0d4aGRHWnYKK2NtMHVkR1Z6ZElJYWIzQTJOaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0duZDNkekl1ZDNkM0xuZGwKK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEa3hMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTMKK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDR205d05Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTAKK1pYTjBnaHB2Y0RnNExt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNE55NXViM1F0ZDJWaUxYQnMKK1lYUm1i
M0p0TG5SbGMzU0NHbTl3TVRBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFMkxt
NXYKK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWJkM2QzTVM1M2QzY3lMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjAKK2dodDNkM2N5TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2Qz
ZHpJdWQzZDNNUzUzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDMKK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUllZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXkKK2JTNTBaWE4wZ2g1M2QzY3hM
bmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIbmQzZHk1M2QzY3kKK0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXkK
K2JTNTBaWE4wZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2Qz
ZHpJdWQzZDMKK01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTVM1
dWIzUXRkMlZpTFhCc1lYUm0KK2IzSnRMblJsYzNTQ0gzZDNkekV1ZDNkM01TNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXUKK2QzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmkKK0xYQnNZWFJtYjNKdExuUmxjM1ND
SW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKK2MzU0NJbmQzZHk1
NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJM2QzZHpJdWVHNHQKK0xX
eDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpTjRiaTB0YkhabExUWnNZV1F1ZDNk
M01pNTMKK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJamVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWQy
VmlMWEJzWVhSbWIzSnQKK0xuUmxjM1NDSTNkM2R6RXVlRzR0TFd4MlpTMDJiR0ZrTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2laNGJpMHQKK2JIWmxMVFpzWVdRdWQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXQKK05teGhaQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNjeExtNXYKK2RDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSW5kM2QzTWk1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXcKK2JHRjBa
bTl5YlM1MFpYTjBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnQKK0xuUmxjM1NDSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSXAKK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSzNodUxTMXMKK2RtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NMWGQzZHk1NGJpMHQKK2JqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlT
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFqWmsKK2N6VXpiSGQzYTNKeGFIWXlP
R0V1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpMTRiaTB0YmpocU5tUnoKK05UTnNkM2Ry
Y25Gb2RqSTRZUzUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekV1ZUc0dExXNDQK
K2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1
T0dvMlpITTEKK00yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0xuaHVMUzF1T0dvMlpITTEKK00yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDQKK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGgKK1pDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqRjNkM2N1ZUc0dExXNDQKK2FqWmtjelV6Ykhk
M2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnakY0YmkwdGJqaHEKK05t
UnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pK
NGJpMHQKK2JqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSXkKK2QzZDNNUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKK2MzU0NNbmQzZHpJdWVHNHRMVzQ0YWpaa2N6VXpiSGQz
YTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3YkdGMFptOXkKK2JTNTBaWE4wZ2pKNGJpMHRiamhxTm1S
ek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZkQzEzWldJdGNHeGgKK2RHWnZjbTB1ZEdWemRJ
STJlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmsKK0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdqWjRiaTB0YkhabExUWnNZV1F1ZUc0dExXNDRhalprY3pVemJI
ZDMKK2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzF1T0dvMlpITTFN
MngzZDJ0eWNXaDIKK01qaGhMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NPbmh1TFMxc2RtVXQKK05teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJ
NFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKK2MzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDIKK01qaGhMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBna1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTQKK2JpMHRiamhx
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0RRWUoK
K0tvWklodmNOQVFFTEJRQURnZ0VCQUF1TFZXcTBaYWdxTzhCaURvWFYzSm1mUDlDMy84dTJhT1d1
MDZKT3lOU3EKK05KWGtua3ZrZE9URTdCRXhaK1dtMm9WckQ5ZGt0K2ZyL2dtMmlPRjBIUXdWb3k0
QkEveG5uSHk2NXZ0U0hWak4KK2FLTlZqSnRYdTRreUVFRnhtYU1hM0NVdDBMa2FyK1oyUU5mMUk2
bllXVVdLcTFOVGg4d1VzNGZlSFFHWmVrOXkKK1IybWNtSE9VZVpBbGNBTHNkYkozRVNpWHpVTTkx
V2c0YzNIOXFRdWk3UzBjYnVFRjFEQ21aQVFReXVqbTRIcXAKKzlDYVVhNlFvcWd6clB1RHYwcjRM
Y09UZFRQeWlod3drZzNMaTVHOGxxTzdGRW9uWjNZK0NGTVBXQnE0ZHUzczgKKy9Kc25WbEMwS0VS
Z2dCZUhITEhPYlhlMDBTc3k2TkM2Qm05TkJQOWcvdU09CistLS0tLUVORCBDRVJUSUZJQ0FURS0t
LS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzJhNmQwNTI5ZmI5NDQ5YzRiZmIwYzkzNTQ2YTc5NjJhNWFiZDIyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9jb25maWcuanNvbgpAQCAtMCwwICsxLDE3IEBACit7CisgICAgInBvcnRz
IjogeworICAgICAgICAiaHR0cCI6IFtdLAorICAgICAgICAiaHR0cHMiOiBbImF1dG8iXSwKKyAg
ICAgICAgIndzIjogW10sCisgICAgICAgICJ3c3MiOiBbXQorICAgIH0sCisgICAgImNoZWNrX3N1
YmRvbWFpbnMiOiBmYWxzZSwKKyAgICAic3NsIjogeworICAgICAgICAidHlwZSI6ICJvcGVuc3Ns
IiwKKyAgICAgICAgIm9wZW5zc2wiOiB7CisgICAgICAgICAgICAiZHVyYXRpb24iOiAzNjUwLAor
ICAgICAgICAgICAgImZvcmNlX3JlZ2VuZXJhdGUiOiBmYWxzZSwKKyAgICAgICAgICAgICJiYXNl
X3BhdGgiOiAidG9vbHMvY2VydHMiCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2Vy
dHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzlmYzVh
MTlmM2NiOWQ2NDMzYWU0MzQzNTEzZTg0NDVkZTg0ODg5MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0
cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIwIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1k
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWlj
L2NlcnRzL2NlcnQua2V5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1
aWMvY29tbWFuZHMuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0NDMyMmVlZDNiYWY0
NjdjNmQ4MDlmYzI2YWM5NTg1OTg5NDIzMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgpAQCAtMCwwICsxLDEzIEBACit7CisgICJzZXJ2ZXF1aWMiOiB7CisgICAgInBhdGgiOiAic2Vy
dmUucHkiLAorICAgICJzY3JpcHQiOiAicnVuIiwKKyAgICAicGFyc2VyIjogImdldF9wYXJzZXIi
LAorICAgICJweTNvbmx5IjogdHJ1ZSwKKyAgICAiaGVscCI6ICJTdGFydCB0aGUgUVVJQyBzZXJ2
ZXIiLAorICAgICJ2aXJ0dWFsZW52IjogdHJ1ZSwKKyAgICAicmVxdWlyZW1lbnRzIjogWworICAg
ICAgInJlcXVpcmVtZW50cy50eHQiCisgICAgXQorICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFu
c3BvcnRfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTA0
YWQxN2YxOTVjNmU1ZDIzM2U4NGE5YjIzOTA0Y2NjZmVjY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1
aWNfdHJhbnNwb3J0X3NlcnZlci5weQpAQCAtMCwwICsxLDI0NiBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uMworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGlvCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB1
cmxsaWIucGFyc2UKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBPcHRpb25hbAorCitmcm9tIGFp
b3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgc2VydmUKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9t
IGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9ydCBFTkRfU1RBVEVTCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFN0cmVhbURhdGFSZWNlaXZlZCwgUXVpY0V2ZW50Citmcm9tIGFp
b3F1aWMudGxzIGltcG9ydCBTZXNzaW9uVGlja2V0CisKK1NFUlZFUl9OQU1FID0gJ2Fpb3F1aWMt
dHJhbnNwb3J0JworCitoYW5kbGVyc19wYXRoID0gTm9uZQorCisKK2NsYXNzIEV2ZW50SGFuZGxl
cjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubmVjdGlvbjogUXVpY0Nvbm5lY3Rpb25Qcm90
b2NvbCwgZ2xvYmFsX2RpY3Q6IERpY3QpOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25u
ZWN0aW9uCisgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3QgPSBnbG9iYWxfZGljdAorCisgICAgZGVm
IGhhbmRsZV9jbGllbnRfaW5kaWNhdGlvbigKKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAg
ICBvcmlnaW46IHN0ciwKKyAgICAgICAgICAgIHF1ZXJ5OiBEaWN0W3N0ciwgc3RyXSkgLT4gTm9u
ZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfY2xpZW50X2luZGljYXRpb24nCisgICAgICAgIGlm
IG5hbWUgaW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3Rb
bmFtZV0oc2VsZi5jb25uZWN0aW9uLCBvcmlnaW4sIHF1ZXJ5KQorCisgICAgZGVmIGhhbmRsZV9l
dmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBuYW1lID0gJ2hh
bmRsZV9ldmVudCcKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmdsb2JhbF9kaWN0OgorICAgICAg
ICAgICAgc2VsZi5nbG9iYWxfZGljdFtuYW1lXShzZWxmLmNvbm5lY3Rpb24sIGV2ZW50KQorCisK
K2NsYXNzIFF1aWNUcmFuc3BvcnRQcm90b2NvbChRdWljQ29ubmVjdGlvblByb3RvY29sKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKSAtPiBOb25lOgorICAgICAgICBz
dXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5zdHJlYW1zID0g
ZGljdCgpCisgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMgPSBbXQorICAgICAgICBzZWxmLmNs
aWVudF9pbmRpY2F0aW9uX2ZpbmlzaGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5jbGllbnRfaW5k
aWNhdGlvbl9kYXRhID0gYicnCisgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKworICAgIGRl
ZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIHByZWZpeCA9ICchIScKKyAgICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLCAn
UVVJQyBldmVudDogJXMnICUgdHlwZShldmVudCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGlmIChub3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCBhbmQKKyAgICAgICAgICAg
ICAgICAgICAgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQKKyAgICAg
ICAgICAgICAgICAgICAgZXZlbnQuc3RyZWFtX2lkID09IDIpOgorICAgICAgICAgICAgICAgICMg
Y2xpZW50IGluZGljYXRpb24gcHJvY2VzcworICAgICAgICAgICAgICAgIHByZWZpeCA9ICdDbGll
bnQgaW5kaWNhdGlvbiBlcnJvcjogJworICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50X2luZGlj
YXRpb25fZGF0YSArPSBldmVudC5kYXRhCisgICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuY2xp
ZW50X2luZGljYXRpb25fZGF0YSkgPiA2NTUzNToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCd0b28gbGFyZ2UgZGF0YSBmb3IgY2xpZW50IGluZGljYXRpb24nKQorICAgICAg
ICAgICAgICAgIGlmIGV2ZW50LmVuZF9zdHJlYW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
cHJvY2Vzc19jbGllbnRfaW5kaWNhdGlvbigpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYu
aXNfY2xvc2luZ19vcl9jbG9zZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSAnRXZlbnQgaGFuZGxpbmcgRXJyb3I6ICcKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gc2VsZi5wZW5kaW5nX2V2ZW50czoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZSkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wZW5kaW5nX2V2ZW50cy5jbGVhcigpCisgICAgICAgICAgICBlbGlmIG5v
dCBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2ZpbmlzaGVkOgorICAgICAgICAgICAgICAgIHNlbGYu
cGVuZGluZ19ldmVudHMuYXBwZW5kKGV2ZW50KQorICAgICAgICAgICAgZWxpZiBzZWxmLmhhbmRs
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcHJlZml4ID0gJ0V2ZW50IGhhbmRsaW5n
IEVycm9yOiAnCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZV9ldmVudChldmVu
dCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5oYW5k
bGVyID0gTm9uZQorICAgICAgICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5XQVJOLCBwcmVmaXgg
KyBzdHIoZSkpCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgIGRlZiBwYXJzZV9jbGll
bnRfaW5kaWNhdGlvbihzZWxmLCBicyk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBrZXlfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxlbihrZXlfYikgPT0gMDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGxlbmd0aF9iID0gYnMucmVhZCgyKQor
ICAgICAgICAgICAgaWYgbGVuKGtleV9iKSAhPSAyOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiS2V5IiBmaWVsZCcpCisgICAgICAgICAgICBpZiBsZW4o
bGVuZ3RoX2IpICE9IDI6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQg
dG8gZ2V0ICJMZW5ndGgiIGZpZWxkJykKKyAgICAgICAgICAgIGtleSA9IHN0cnVjdC51bnBhY2so
JyFIJywga2V5X2IpWzBdCisgICAgICAgICAgICBsZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCchSCcs
IGxlbmd0aF9iKVswXQorICAgICAgICAgICAgdmFsdWUgPSBicy5yZWFkKGxlbmd0aCkKKyAgICAg
ICAgICAgIGlmIGxlbih2YWx1ZSkgIT0gbGVuZ3RoOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigndHJ1bmNhdGVkICJWYWx1ZSIgZmllbGQnKQorICAgICAgICAgICAgeWllbGQgKGtl
eSwgdmFsdWUpCisKKyAgICBkZWYgcHJvY2Vzc19jbGllbnRfaW5kaWNhdGlvbihzZWxmKSAtPiBO
b25lOgorICAgICAgICBvcmlnaW4gPSBOb25lCisgICAgICAgIG9yaWdpbl9zdHJpbmcgPSBOb25l
CisgICAgICAgIHBhdGggPSBOb25lCisgICAgICAgIHBhdGhfc3RyaW5nID0gTm9uZQorICAgICAg
ICBLRVlfT1JJR0lOID0gMAorICAgICAgICBLRVlfUEFUSCA9IDEKKyAgICAgICAgZm9yIChrZXks
IHZhbHVlKSBpbiBzZWxmLnBhcnNlX2NsaWVudF9pbmRpY2F0aW9uKAorICAgICAgICAgICAgICAg
IGlvLkJ5dGVzSU8oc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9kYXRhKSk6CisgICAgICAgICAgICBp
ZiBrZXkgPT0gS0VZX09SSUdJTjoKKyAgICAgICAgICAgICAgICBvcmlnaW5fc3RyaW5nID0gdmFs
dWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSB1cmxsaWIucGFyc2UudXJscGFy
c2Uob3JpZ2luX3N0cmluZykKKyAgICAgICAgICAgIGVsaWYga2V5ID09IEtFWV9QQVRIOgorICAg
ICAgICAgICAgICAgIHBhdGhfc3RyaW5nID0gdmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAg
ICBwYXRoID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHBhdGhfc3RyaW5nKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAjIFdlIG11c3QgaWdub3JlIHVucmVjb2duaXplZCBmaWVs
ZHMuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBsb2dnaW5nLmxvZyhsb2dnaW5nLklO
Rk8sCisgICAgICAgICAgICAgICAgICAgICdvcmlnaW4gPSAlcywgcGF0aCA9ICVzJyAlIChvcmln
aW5fc3RyaW5nLCBwYXRoX3N0cmluZykpCisgICAgICAgIGlmIG9yaWdpbiBpcyBOb25lOgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBvcmlnaW4gaXMgZ2l2ZW4nKQorICAgICAgICBp
ZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vIHBhdGggaXMg
Z2l2ZW4nKQorICAgICAgICBpZiBvcmlnaW4uc2NoZW1lICE9ICdodHRwcycgYW5kIG9yaWdpbi5z
Y2hlbWUgIT0gJ2h0dHAnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIG9y
aWdpbjogJXMnICUgb3JpZ2luX3N0cmluZykKKyAgICAgICAgaWYgb3JpZ2luLm5ldGxvYyA9PSAn
JzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9y
aWdpbl9zdHJpbmcpCisKKyAgICAgICAgIyBUbyBtYWtlIHRoZSBzaXR1YXRpb24gc2ltcGxlIHdl
IGFjY2VwdCBvbmx5IHNpbXBsZSBwYXRoIHN0cmluZ3MuCisgICAgICAgIG0gPSByZS5jb21waWxl
KCdeLyhbYS16QS1aMC05XC5fXC1dKykkJykubWF0Y2gocGF0aC5wYXRoKQorICAgICAgICBpZiBt
IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgcGF0aDogJXMn
ICUgcGF0aF9zdHJpbmcpCisKKyAgICAgICAgaGFuZGxlcl9uYW1lID0gbS5ncm91cCgxKQorICAg
ICAgICBxdWVyeSA9IGRpY3QodXJsbGliLnBhcnNlLnBhcnNlX3FzbChwYXRoLnF1ZXJ5KSkKKyAg
ICAgICAgc2VsZi5oYW5kbGVyID0gc2VsZi5jcmVhdGVfZXZlbnRfaGFuZGxlcihoYW5kbGVyX25h
bWUpCisgICAgICAgIHNlbGYuaGFuZGxlci5oYW5kbGVfY2xpZW50X2luZGljYXRpb24ob3JpZ2lu
X3N0cmluZywgcXVlcnkpCisgICAgICAgIGlmIHNlbGYuaXNfY2xvc2luZ19vcl9jbG9zZWQoKToK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2Zpbmlz
aGVkID0gVHJ1ZQorICAgICAgICBsb2dnaW5nLmxvZyhsb2dnaW5nLklORk8sICdDbGllbnQgaW5k
aWNhdGlvbiBmaW5pc2hlZCcpCisKKyAgICBkZWYgY3JlYXRlX2V2ZW50X2hhbmRsZXIoc2VsZiwg
aGFuZGxlcl9uYW1lOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGdsb2JhbF9kaWN0ID0ge30KKyAg
ICAgICAgd2l0aCBvcGVuKGhhbmRsZXJzX3BhdGggKyAnLycgKyBoYW5kbGVyX25hbWUpIGFzIGY6
CisgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnbG9iYWxfZGljdCkKKyAgICAgICAgcmV0dXJu
IEV2ZW50SGFuZGxlcihzZWxmLCBnbG9iYWxfZGljdCkKKworICAgIGRlZiBpc19jbG9zaW5nX29y
X2Nsb3NlZChzZWxmKSAtPiBib29sOgorICAgICAgICBpZiBzZWxmLl9xdWljLl9jbG9zZV9wZW5k
aW5nOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fcXVpYy5fc3Rh
dGUgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVy
biBGYWxzZQorCisKK2NsYXNzIFNlc3Npb25UaWNrZXRTdG9yZToKKyAgICAnJycKKyAgICBTaW1w
bGUgaW4tbWVtb3J5IHN0b3JlIGZvciBzZXNzaW9uIHRpY2tldHMuCisgICAgJycnCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi50aWNrZXRzOiBEaWN0W2J5
dGVzLCBTZXNzaW9uVGlja2V0XSA9IHt9CisKKyAgICBkZWYgYWRkKHNlbGYsIHRpY2tldDogU2Vz
c2lvblRpY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50aWNrZXRd
ID0gdGlja2V0CisKKyAgICBkZWYgcG9wKHNlbGYsIGxhYmVsOiBieXRlcykgLT4gT3B0aW9uYWxb
U2Vzc2lvblRpY2tldF06CisgICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxhYmVsLCBO
b25lKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgcGFyc2VyID0gYXJncGFy
c2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J1FVSUMgc2VydmVyJykKKyAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KAorICAgICAgICAnLWMnLAorICAgICAgICAnLS1jZXJ0aWZpY2F0ZScsCisg
ICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAorICAgICAgICBoZWxwPSds
b2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUnLAorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgdHlw
ZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Jzo6JywKKyAgICAgICAgaGVscD0nbGlzdGVuIG9uIHRo
ZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopJywKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0tcG9ydCcsCisgICAgICAgIHR5cGU9aW50LAorICAg
ICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVk
IHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgKKyAgICAgICAgJy1rJywKKyAgICAgICAgJy0tcHJpdmF0ZS1rZXknLAorICAgICAgICB0eXBl
PXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExT
IHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy0taGFuZGxlcnMtcGF0aCcsCisgICAgICAgIHR5cGU9
c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAorICAgICAgICBoZWxwPSd0aGUgZGlyZWN0b3J5
IHBhdGggb2YgUXVpY1RyYW5zcG9ydCBldmVudCBoYW5kbGVycycsCisgICAgKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoCisgICAgICAgICctdicsCisgICAgICAgICctLXZlcmJvc2UnLAorICAg
ICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICBoZWxwPSdpbmNyZWFzZSBsb2dnaW5n
IHZlcmJvc2l0eScKKyAgICApCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAg
IGxvZ2dpbmcuYmFzaWNDb25maWcoCisgICAgICAgIGZvcm1hdD0nJShhc2N0aW1lKXMgJShsZXZl
bG5hbWUpcyAlKG5hbWUpcyAlKG1lc3NhZ2UpcycsCisgICAgICAgIGxldmVsPWxvZ2dpbmcuREVC
VUcgaWYgYXJncy52ZXJib3NlIGVsc2UgbG9nZ2luZy5JTkZPLAorICAgICkKKworICAgIGNvbmZp
Z3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgYWxwbl9wcm90b2NvbHM9Wyd3
cS12dnYtMDEnXSArIFsnc2lkdWNrJ10sCisgICAgICAgIGlzX2NsaWVudD1GYWxzZSwKKyAgICAg
ICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisgICAgKQorCisgICAgaGFuZGxlcnNf
cGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmV4cGFuZHVzZXIoYXJncy5oYW5kbGVyc19w
YXRoKSkKKyAgICBsb2dnaW5nLmxvZyhsb2dnaW5nLklORk8sICdwb3J0ID0gJXMnICUgYXJncy5w
b3J0KQorICAgIGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ2hhbmRsZXJzIHBhdGggPSAlcycg
JSBoYW5kbGVyc19wYXRoKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5Cisg
ICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0ZSwgYXJncy5w
cml2YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisK
KyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50aWxf
Y29tcGxldGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAorICAgICAg
ICAgICAgYXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
LAorICAgICAgICAgICAgY3JlYXRlX3Byb3RvY29sPVF1aWNUcmFuc3BvcnRQcm90b2NvbCwKKyAg
ICAgICAgICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAgICAg
KQorICAgICkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2Vw
dCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50
cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvcmVxdWlyZW1lbnRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjUyNjBjNzhmN2FjODU3OWJkOTEx
YmNmOWNjZTYzNjQ1YzgwZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKQEAg
LTAsMCArMSBAQAorYWlvcXVpYz09MC44LjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ODkzZjI1ZTI3YmRiM2FmZDRiZjM5OTIxZTk2YWJkY2M0MjMzZjlkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL3NlcnZlLnB5CkBAIC0wLDAgKzEsMjggQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbjMKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgc3lzCisKKworZGVmIGdldF9wYXJzZXIo
KToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InR1cm4gb24gdmVyYm9zZSBsb2dnaW5n
IikKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIHJ1bih2ZW52LCAqKmt3YXJncyk6CisgICAg
IyBUT0RPKEhleGNsZXMpOiBSZXBsYWNlIHRoaXMgd2l0aCBhY3R1YWwgaW1wbGVtZW50YXRpb24u
CisgICAgcHJpbnQoc3lzLnZlcnNpb24pCisgICAgYXNzZXJ0IHN5cy52ZXJzaW9uX2luZm8ubWFq
b3IgPT0gMworICAgIGltcG9ydCBhaW9xdWljCisgICAgcHJpbnQoJ2Fpb3F1aWM6ICcgKyBhaW9x
dWljLl9fdmVyc2lvbl9fKQorCisKK2RlZiBtYWluKCk6CisgICAga3dhcmdzID0gdmFycyhnZXRf
cGFyc2VyKCkucGFyc2VfYXJncygpKQorICAgIHJldHVybiBydW4oTm9uZSwgKiprd2FyZ3MpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2Q1NDU5ZTE1MWYyZTQyOTM5
ZGU5OTU3YjUxNTMzYWJhNmEwZGZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9SRUFETUUubWQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcmVxdWlyZW1lbnRzLnR4dAorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKaW5kZXggMGE0NTIy
NDAxNjQxN2NkZGJmNTkyMDkxOTYzODBjY2UwYTA4OWVkZi4uYWUxNmJlMzk1NWZiZjNkNWZhOTY0
ODk2N2M2YzhkMzk3NTE5MDEzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19mbGFrZTgudHh0CkBAIC0xLDQgKzEsNCBAQAotZmxha2U4PT0zLjcuOQotcHljb2Rlc3R5
bGU9PTIuNS4wCi1weWZsYWtlcz09Mi4xLjEKLXBlcDgtbmFtaW5nPT0wLjkuMQorZmxha2U4PT0z
LjguMgorcHljb2Rlc3R5bGU9PTIuNi4wCitweWZsYWtlcz09Mi4yLjAKK3BlcDgtbmFtaW5nPT0w
LjEwLjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfbXlweS50eHQKaW5kZXgg
MTk0ZjQyODRiMjY5MDNiMWZhZjk2OWI2YWI1ZDMwZjVjNDhlYjU2Mi4uOTg4ZmZlODQ4MTc0Zjcy
MTUyNzhjMmM0MDE5ZjkyNGJlZDNhNjFmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfbXlweS50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1
aXJlbWVudHNfbXlweS50eHQKQEAgLTEsMyArMSwzIEBACi1teXB5PT0wLjc1MAorbXlweT09MC43
NzAKIG15cHktZXh0ZW5zaW9ucz09MC40LjMKLXR5cGVkLWFzdD09MS40LjAKK3R5cGVkLWFzdD09
MS40LjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQppbmRleCA1ZWI4ZDY3Yzdm
NmRhOWM1ZmQwMWRlOGRlNDBmNWNjOTJjMTFiZTkwLi5lOTk4NmZkYjM5ODI1Y2Q1ZTQ5ZjhkNGEx
NThjNzk0OGFkNTI4MWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcmVwb3J0LnB5CkBA
IC01LDEwICs1LDExIEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGlt
cG9ydCBhcmdwYXJzZQogaW1wb3J0IGpzb24KIGltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworCiBm
cm9tIGNnaSBpbXBvcnQgZXNjYXBlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGlj
dAotCi1pbXBvcnQgdHlwZXMKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogCiBkZWYgaHRt
bF9lc2NhcGUoaXRlbSwgZXNjYXBlX3F1b3RlPUZhbHNlKToKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xh
c3MgTm9kZShvYmplY3QpOgogICAgICAgICAgICAgYXR0cnNfdW5pY29kZSA9ICIgIiArICIgIi5q
b2luKCIlcz1cIiVzXCIiICUgKGh0bWxfZXNjYXBlKGtleSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9lc2NhcGUodmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlX3F1b3RlPVRydWUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuYXR0cnMuaXRlcml0
ZW1zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuYXR0cnMpKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgYXR0cnNfdW5pY29kZSA9ICIiCiAgICAgICAgIHJldHVybiAiPCVzJXM+JXM8LyVzPlxu
IiAlIChzZWxmLm5hbWUsCkBAIC0xNTcsNyArMTU4LDcgQEAgZGVmIHRlc3RfaWQoaWQpOgogCiBk
ZWYgYWxsX3Rlc3RzKGRhdGEpOgogICAgIHRlc3RzID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgIGZv
ciBVQSwgcmVzdWx0cyBpbiBkYXRhLml0ZXJpdGVtcygpOgorICAgIGZvciBVQSwgcmVzdWx0cyBp
biBpdGVyaXRlbXMoZGF0YSk6CiAgICAgICAgIGZvciByZXN1bHQgaW4gcmVzdWx0c1sicmVzdWx0
cyJdOgogICAgICAgICAgICAgaWQgPSB0ZXN0X2lkKHJlc3VsdFsidGVzdCJdKQogICAgICAgICAg
ICAgdGVzdHNbaWRdIHw9IHtzdWJ0ZXN0WyJuYW1lIl0gZm9yIHN1YnRlc3QgaW4gcmVzdWx0WyJz
dWJ0ZXN0cyJdfQpAQCAtMTg1LDcgKzE4Niw3IEBAIGRlZiBncm91cF9yZXN1bHRzKGRhdGEpOgog
CiAgICAgcmVzdWx0c19ieV90ZXN0ID0gZGVmYXVsdGRpY3QocmVzdWx0KQogCi0gICAgZm9yIFVB
LCByZXN1bHRzIGluIGRhdGEuaXRlcml0ZW1zKCk6CisgICAgZm9yIFVBLCByZXN1bHRzIGluIGl0
ZXJpdGVtcyhkYXRhKToKICAgICAgICAgZm9yIHRlc3RfZGF0YSBpbiByZXN1bHRzWyJyZXN1bHRz
Il06CiAgICAgICAgICAgICBpZCA9IHRlc3RfaWQodGVzdF9kYXRhWyJ0ZXN0Il0pCiAgICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHRzX2J5X3Rlc3RbaWRdCkBAIC0yMzAsMTAgKzIzMSwxMCBAQCBk
ZWYgdGVzdF9saW5rKHRlc3RfaWQsIHN1YnRlc3Q9Tm9uZSk6CiBkZWYgc3VtbWFyeShVQXMsIHJl
c3VsdHNfYnlfdGVzdCk6CiAgICAgIiIiUmVuZGVyIHRoZSBpbXBsZW1lbnRhdGlvbiByZXBvcnQg
c3VtbWFyeSIiIgogICAgIG5vdF9wYXNzaW5nID0gW10KLSAgICBmb3IgdGVzdCwgcmVzdWx0cyBp
biByZXN1bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4g
aXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCk6CiAgICAgICAgIGlmIG5vdCBhbnkoaXRlbVswXSBp
biAoIlBBU1MiLCAiT0siKSBmb3IgaXRlbSBpbiByZXN1bHRzWyJoYXJuZXNzIl0udmFsdWVzKCkp
OgogICAgICAgICAgICAgbm90X3Bhc3NpbmcuYXBwZW5kKCh0ZXN0LCBOb25lKSkKLSAgICAgICAg
Zm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdF9yZXN1bHRzIGluIHJlc3VsdHNbInN1YnRlc3RzIl0u
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RfcmVzdWx0cyBp
biBpdGVyaXRlbXMocmVzdWx0c1sic3VidGVzdHMiXSk6CiAgICAgICAgICAgICBpZiBub3QgYW55
KGl0ZW1bMF0gPT0gIlBBU1MiIGZvciBpdGVtIGluIHN1YnRlc3RfcmVzdWx0cy52YWx1ZXMoKSk6
CiAgICAgICAgICAgICAgICAgbm90X3Bhc3NpbmcuYXBwZW5kKCh0ZXN0LCBzdWJ0ZXN0X25hbWUp
KQogICAgIGlmIG5vdF9wYXNzaW5nOgpAQCAtMjYwLDcgKzI2MSw3IEBAIGRlZiByZXN1bHRfcm93
cyhVQXMsIHRlc3QsIHJlc3VsdCk6CiAgICAgICAgIGNsYXNzXz0idGVzdCIKICAgICApCiAKLSAg
ICBmb3IgbmFtZSwgc3VidGVzdF9yZXN1bHQgaW4gc29ydGVkKHJlc3VsdFsic3VidGVzdHMiXS5p
dGVyaXRlbXMoKSk6CisgICAgZm9yIG5hbWUsIHN1YnRlc3RfcmVzdWx0IGluIHNvcnRlZChpdGVy
aXRlbXMocmVzdWx0WyJzdWJ0ZXN0cyJdKSk6CiAgICAgICAgIHlpZWxkIGgudHIoCiAgICAgICAg
ICAgICBoLnRkKG5hbWUpLAogICAgICAgICAgICAgW3N0YXR1c19jZWxsKHN0YXR1cywgbWVzc2Fn
ZSkKQEAgLTI3MSw3ICsyNzIsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1bHQp
OgogCiBkZWYgcmVzdWx0X2JvZGllcyhVQXMsIHJlc3VsdHNfYnlfdGVzdCk6CiAgICAgcmV0dXJu
IFtoLnRib2R5KHJlc3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KSkKLSAgICAgICAgICAgIGZv
ciB0ZXN0LCByZXN1bHQgaW4gc29ydGVkKHJlc3VsdHNfYnlfdGVzdC5pdGVyaXRlbXMoKSldCisg
ICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHNvcnRlZChpdGVyaXRlbXMocmVzdWx0c19i
eV90ZXN0KSldCiAKIAogZGVmIGdlbmVyYXRlX2h0bWwoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9ydW5uZXIvcnVubmVyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmpzCmluZGV4IGRhYWY5ZDQ1ZGE1YmZiYTYz
MjM1NGU5ZWRiZDI4NDZkMDUyZDAwMzUuLjI3OTQ2ZTEzOWI5YWEzYjgwNmExYWQyNDUxNTM5ODhj
Zjc4Zjc0NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKQEAgLTE2LDIy
ICsxNiw2IEBAIE1hbmlmZXN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5nZW5lcmF0ZShs
b2FkZWRfY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICBkb19sb2FkOiBmdW5jdGlvbihsb2FkZWRf
Y2FsbGJhY2spIHsKLSAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAg
ICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBp
ZiAoeGhyLnJlYWR5U3RhdGUgIT09IDQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoISh4aHIuc3RhdHVzID09PSAyMDAgfHwgeGhyLnN0
YXR1cyA9PT0gMCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hbmlmZXN0
ICIgKyB0aGlzLnBhdGggKyAiIGZhaWxlZCB0byBsb2FkIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOwotICAgICAg
ICAgICAgbG9hZGVkX2NhbGxiYWNrKCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKTsKLSAgICAgICAg
eGhyLm9wZW4oIkdFVCIsIHRoaXMucGF0aCk7Ci0gICAgICAgIHhoci5zZW5kKG51bGwpOwotICAg
IH0sCi0KICAgICBnZW5lcmF0ZTogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7CiAgICAgICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgeGhyLm9ucmVhZHlzdGF0
ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewpAQCAtNDEsNyArMjUsOCBAQCBNYW5pZmVzdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBpZiAoISh4aHIuc3RhdHVzID09PSAyMDAgfHwgeGhyLnN0YXR1
cyA9PT0gMCkpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hbmlmZXN0IGdl
bmVyYXRpb24gZmFpbGVkIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmRvX2xv
YWQobG9hZGVkX2NhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2Uo
eGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICBsb2FkZWRfY2FsbGJhY2soKTsKICAgICAg
ICAgfS5iaW5kKHRoaXMpOwogICAgICAgICB4aHIub3BlbigiUE9TVCIsICJ1cGRhdGVfbWFuaWZl
c3QucHkiKTsKICAgICAgICAgeGhyLnNlbmQobnVsbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRhdGVfbWFu
aWZlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKaW5kZXggNzE0ZDJiNTNiMzlhOTg5ZDRmMzNj
ZTFkNTg3ZDYzNGQyMGE2MWQ0NC4uMWEyNGUxNDM0NzhlYWNjMGY2MjQzMGI1YmJjYjIzM2NjNjUw
MjRhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5pZmVz
dC5weQpAQCAtNywyMSArNywzMCBAQCBsb2NhbHBhdGhzID0gaW1wLmxvYWRfc291cmNlKCJsb2Nh
bHBhdGhzIiwgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihoZXJlLCBvcwogCiByb290ID0g
bG9jYWxwYXRocy5yZXBvX3Jvb3QKIAotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIHVw
ZGF0ZQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QKIAogZGVmIG1haW4ocmVxdWVzdCwg
cmVzcG9uc2UpOgogICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgIk1BTklGRVNULmpzb24i
KQogCi0gICAgbWFuaWZlc3RfZmlsZSA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIG1hbmlmZXN0
X2ZpbGUgPSBtYW5pZmVzdC5sb2FkKHJvb3QsIHBhdGgpCi0gICAgZXhjZXB0IG1hbmlmZXN0Lk1h
bmlmZXN0VmVyc2lvbk1pc21hdGNoOgotICAgICAgICBwYXNzCi0gICAgaWYgbWFuaWZlc3RfZmls
ZSBpcyBOb25lOgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QuTWFuaWZlc3QoIi8i
KQotCi0gICAgdXBkYXRlLnVwZGF0ZShyb290LCBtYW5pZmVzdF9maWxlKQotCi0gICAgbWFuaWZl
c3Qud3JpdGUobWFuaWZlc3RfZmlsZSwgcGF0aCkKLQotICAgIHJldHVybiBbKCJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vanNvbiIpXSwganNvbi5kdW1wcyh7InVybCI6ICIvTUFOSUZFU1Qu
anNvbiJ9KQorICAgICMgVE9ETyBtYWtlIHRoaXMgZG93bmxvYWQgcmF0aGVyIHRoYW4gcmVidWls
ZGluZyBmcm9tIHNjcmF0Y2ggd2hlbiBwb3NzaWJsZQorICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5p
ZmVzdC5sb2FkX2FuZF91cGRhdGUocm9vdCwgcGF0aCwgIi8iLCBwYXJhbGxlbD1GYWxzZSkKKwor
ICAgIHN1cHBvcnRlZF90eXBlcyA9IFsidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJtYW51YWwi
XQorICAgIGRhdGEgPSB7Iml0ZW1zIjoge30sCisgICAgICAgICAgICAidXJsX2Jhc2UiOiAiLyJ9
CisgICAgZm9yIGl0ZW1fdHlwZSBpbiBzdXBwb3J0ZWRfdHlwZXM6CisgICAgICAgIGRhdGFbIml0
ZW1zIl1baXRlbV90eXBlXSA9IHt9CisgICAgZm9yIGl0ZW1fdHlwZSwgcGF0aCwgdGVzdHMgaW4g
bWFuaWZlc3RfZmlsZS5pdGVydHlwZXMoKnN1cHBvcnRlZF90eXBlcyk6CisgICAgICAgIHRlc3Rz
X2RhdGEgPSBbXQorICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0czoKKyAgICAgICAgICAgIHRlc3Rf
ZGF0YSA9IFtpdGVtLnVybFsxOl1dCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgPT0gInJlZnRl
c3QiOgorICAgICAgICAgICAgICAgIHRlc3RfZGF0YS5hcHBlbmQoaXRlbS5yZWZlcmVuY2VzKQor
ICAgICAgICAgICAgdGVzdF9kYXRhLmFwcGVuZCh7fSkKKyAgICAgICAgICAgIGlmIGl0ZW1fdHlw
ZSAhPSAibWFudWFsIjoKKyAgICAgICAgICAgICAgICB0ZXN0X2RhdGFbLTFdWyJ0aW1lb3V0Il0g
PSBpdGVtLnRpbWVvdXQKKyAgICAgICAgICAgIHRlc3RzX2RhdGEuYXBwZW5kKHRlc3RfZGF0YSkK
KyAgICAgICAgYXNzZXJ0IHBhdGggbm90IGluIGRhdGFbIml0ZW1zIl1baXRlbV90eXBlXQorICAg
ICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV1bcGF0aF0gPSB0ZXN0c19kYXRhCisKKyAgICBy
ZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKV0sIGpzb24uZHVtcHMo
ZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5CmluZGV4IDE4NjhiMWEzNmU1MWMx
ODc0OTFkNzNhYTI3MDg0ODRkYTg4MjA0MmYuLjQzZmY3YmQwZGZiYWM1ZWFlNzRjYmU0MzIzNWYw
MTZjNGZlMTRkMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5weQpAQCAtMzQsOCAr
MzQsOCBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RhbmRhbG9uZSBhcyBweXdlYnNv
Y2tldAogCiAKIEVESVRfSE9TVFNfSEVMUCA9ICgiUGxlYXNlIGVuc3VyZSBhbGwgdGhlIG5lY2Vz
c2FyeSBXUFQgc3ViZG9tYWlucyAiCi0gICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8g
YSBsb29wYmFjayBkZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgICJT
ZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQjcnVubmluZy10aGUt
dGVzdHMgIgorICAgICAgICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2
aWNlIGluIC9ldGMvaG9zdHMuXG4iCisgICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL3dl
Yi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9mcm9tLWxvY2FsLXN5c3RlbS5odG1s
I3N5c3RlbS1zZXR1cCAiCiAgICAgICAgICAgICAgICAgICAgImZvciBpbnN0cnVjdGlvbnMuIikK
IAogCkBAIC0xNzgsOSArMTc4LDkgQEAgY2xhc3MgSHRtbFdyYXBwZXJIYW5kbGVyKFdyYXBwZXJI
YW5kbGVyKToKIAogICAgIGRlZiBjaGVja19leHBvc3VyZShzZWxmLCByZXF1ZXN0KToKICAgICAg
ICAgaWYgc2VsZi5nbG9iYWxfdHlwZToKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAgICAg
ICAgICAgIGdsb2JhbHMgPSB1IiIKICAgICAgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2Vs
Zi5fZ2V0X21ldGFkYXRhKHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIGlmIGtleSA9PSBiImds
b2JhbCI6CisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJnbG9iYWwiOgogICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxzID0gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIApAQCAt
MTg5LDIzICsxODksMjMgQEAgY2xhc3MgSHRtbFdyYXBwZXJIYW5kbGVyKFdyYXBwZXJIYW5kbGVy
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2xvYmFsX3R5cGUp
CiAKICAgICBkZWYgX21ldGFfcmVwbGFjZW1lbnQoc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAg
IGlmIGtleSA9PSBiInRpbWVvdXQiOgotICAgICAgICAgICAgaWYgdmFsdWUgPT0gYiJsb25nIjoK
KyAgICAgICAgaWYga2V5ID09ICJ0aW1lb3V0IjoKKyAgICAgICAgICAgIGlmIHZhbHVlID09ICJs
b25nIjoKICAgICAgICAgICAgICAgICByZXR1cm4gJzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRl
bnQ9ImxvbmciPicKLSAgICAgICAgaWYga2V5ID09IGIidGl0bGUiOgotICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS5kZWNvZGUoJ3V0Zi04JykucmVwbGFjZSgiJiIsICImYW1wOyIpLnJlcGxhY2Uo
IjwiLCAiJmx0OyIpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgiPCIsICImbHQ7IikKICAg
ICAgICAgICAgIHJldHVybiAnPHRpdGxlPiVzPC90aXRsZT4nICUgdmFsdWUKICAgICAgICAgcmV0
dXJuIE5vbmUKIAogICAgIGRlZiBfc2NyaXB0X3JlcGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUp
OgotICAgICAgICBpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgYXR0cmlidXRlID0g
dmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCciJywg
IiZxdW90OyIpCisgICAgICAgIGlmIGtleSA9PSAic2NyaXB0IjoKKyAgICAgICAgICAgIGF0dHJp
YnV0ZSA9IHZhbHVlLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCciJywgIiZxdW90OyIp
CiAgICAgICAgICAgICByZXR1cm4gJzxzY3JpcHQgc3JjPSIlcyI+PC9zY3JpcHQ+JyAlIGF0dHJp
YnV0ZQogICAgICAgICByZXR1cm4gTm9uZQogCiAKIGNsYXNzIFdvcmtlcnNIYW5kbGVyKEh0bWxX
cmFwcGVySGFuZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiImRlZGljYXRlZHdvcmtlciIKKyAg
ICBnbG9iYWxfdHlwZSA9ICJkZWRpY2F0ZWR3b3JrZXIiCiAgICAgcGF0aF9yZXBsYWNlID0gWygi
LmFueS53b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIiksCiAgICAgICAg
ICAgICAgICAgICAgICgiLndvcmtlci5odG1sIiwgIi53b3JrZXIuanMiKV0KICAgICB3cmFwcGVy
ID0gIiIiPCFkb2N0eXBlIGh0bWw+CkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgV2luZG93SGFu
ZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgogCiAKIGNsYXNzIEFueUh0bWxIYW5kbGVyKEh0bWxX
cmFwcGVySGFuZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiIndpbmRvdyIKKyAgICBnbG9iYWxf
dHlwZSA9ICJ3aW5kb3ciCiAgICAgcGF0aF9yZXBsYWNlID0gWygiLmFueS5odG1sIiwgIi5hbnku
anMiKV0KICAgICB3cmFwcGVyID0gIiIiPCFkb2N0eXBlIGh0bWw+CiA8bWV0YSBjaGFyc2V0PXV0
Zi04PgpAQCAtMjU0LDcgKzI1NCw3IEBAIHNlbGYuR0xPQkFMID0gewogCiAKIGNsYXNzIFNoYXJl
ZFdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFuZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBi
InNoYXJlZHdvcmtlciIKKyAgICBnbG9iYWxfdHlwZSA9ICJzaGFyZWR3b3JrZXIiCiAgICAgcGF0
aF9yZXBsYWNlID0gWygiLmFueS5zaGFyZWR3b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnku
d29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hh
cnNldD11dGYtOD4KQEAgLTI2OSw3ICsyNjksNyBAQCBmZXRjaF90ZXN0c19mcm9tX3dvcmtlcihu
ZXcgU2hhcmVkV29ya2VyKCIlKHBhdGgpcyUocXVlcnkpcyIpKTsKIAogCiBjbGFzcyBTZXJ2aWNl
V29ya2Vyc0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKLSAgICBnbG9iYWxfdHlwZSA9IGIi
c2VydmljZXdvcmtlciIKKyAgICBnbG9iYWxfdHlwZSA9ICJzZXJ2aWNld29ya2VyIgogICAgIHBh
dGhfcmVwbGFjZSA9IFsoIi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgIi5hbnkuanMiLCAiLmFu
eS53b3JrZXIuanMiKV0KICAgICB3cmFwcGVyID0gIiIiPCFkb2N0eXBlIGh0bWw+CiA8bWV0YSBj
aGFyc2V0PXV0Zi04PgpAQCAtMzA3LDExICszMDcsMTEgQEAgZG9uZSgpOwogICAgICAgICByZXR1
cm4gTm9uZQogCiAgICAgZGVmIF9zY3JpcHRfcmVwbGFjZW1lbnQoc2VsZiwga2V5LCB2YWx1ZSk6
Ci0gICAgICAgIGlmIGtleSA9PSBiInNjcmlwdCI6Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgPSB2
YWx1ZS5kZWNvZGUoJ3V0Zi04JykucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAn
XFwiJykKKyAgICAgICAgaWYga2V5ID09ICJzY3JpcHQiOgorICAgICAgICAgICAgYXR0cmlidXRl
ID0gdmFsdWUucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKICAgICAg
ICAgICAgIHJldHVybiAnaW1wb3J0U2NyaXB0cygiJXMiKScgJSBhdHRyaWJ1dGUKLSAgICAgICAg
aWYga2V5ID09IGIidGl0bGUiOgotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoJ3V0
Zi04JykucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAnXFwiJykKKyAgICAgICAg
aWYga2V5ID09ICJ0aXRsZSI6CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIlxc
IiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ3NlbGYu
TUVUQV9USVRMRSA9ICIlcyI7JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKQEAgLTM1
MSw3ICszNTEsNyBAQCBjbGFzcyBSb3V0ZXNCdWlsZGVyKG9iamVjdCk6CiAgICAgICAgIGlmIGhl
YWRlcnMgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcnMgPSB7fQogICAgICAgICBoYW5kbGVy
ID0gaGFuZGxlcnMuU3RhdGljSGFuZGxlcihwYXRoLCBmb3JtYXRfYXJncywgY29udGVudF90eXBl
LCAqKmhlYWRlcnMpCi0gICAgICAgIHNlbGYuYWRkX2hhbmRsZXIoYiJHRVQiLCBzdHIocm91dGUp
LCBoYW5kbGVyKQorICAgICAgICBzZWxmLmFkZF9oYW5kbGVyKCJHRVQiLCBzdHIocm91dGUpLCBo
YW5kbGVyKQogCiAgICAgZGVmIGFkZF9tb3VudF9wb2ludChzZWxmLCB1cmxfYmFzZSwgcGF0aCk6
CiAgICAgICAgIHVybF9iYXNlID0gIi8lcy8iICUgdXJsX2Jhc2Uuc3RyaXAoIi8iKSBpZiB1cmxf
YmFzZSAhPSAiLyIgZWxzZSAiLyIKQEAgLTM2Niw2ICszNjYsNyBAQCBjbGFzcyBSb3V0ZXNCdWls
ZGVyKG9iamVjdCk6CiAgICAgICAgICAgICAoIkdFVCIsICIqLmFueS5zZXJ2aWNld29ya2VyLmh0
bWwiLCBTZXJ2aWNlV29ya2Vyc0hhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hbnku
d29ya2VyLmpzIiwgQW55V29ya2VySGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqLmFz
aXMiLCBoYW5kbGVycy5Bc0lzSGFuZGxlciksCisgICAgICAgICAgICAoIkdFVCIsICIvLndlbGwt
a25vd24vb3JpZ2luLXBvbGljeSIsIGhhbmRsZXJzLlB5dGhvblNjcmlwdEhhbmRsZXIpLAogICAg
ICAgICAgICAgKCIqIiwgIioucHkiLCBoYW5kbGVycy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAg
ICAgICAgICAgICgiR0VUIiwgIioiLCBoYW5kbGVycy5GaWxlSGFuZGxlcikKICAgICAgICAgXQpA
QCAtNDE4LDEwICs0MTksMTAgQEAgY2xhc3MgU2VydmVyUHJvYyhvYmplY3QpOgogICAgICAgICB0
cnk6CiAgICAgICAgICAgICBzZWxmLmRhZW1vbiA9IGluaXRfZnVuYyhob3N0LCBwb3J0LCBwYXRo
cywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2Vw
dCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiU29ja2V0IGVycm9yIG9uIHBvcnQg
JXMiICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgbG9nZ2VyLmNyaXRpY2Fs
KCJTb2NrZXQgZXJyb3Igb24gcG9ydCAlcyIgJSBwb3J0LCBmaWxlPXN5cy5zdGRlcnIpCiAgICAg
ICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcHJp
bnQodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAg
bG9nZ2VyLmNyaXRpY2FsKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICByYWlz
ZQogCiAgICAgICAgIGlmIHNlbGYuZGFlbW9uOgpAQCAtNTE1LDcgKzUxNiw3IEBAIGRlZiBzdGFy
dF9zZXJ2ZXJzKGhvc3QsIHBvcnRzLCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZp
ZywgKiprd2FyZ3MpOgogICAgICAgICBhc3NlcnQgbGVuKHBvcnRzKSA9PSB7Imh0dHAiOiAyfS5n
ZXQoc2NoZW1lLCAxKQogCiAgICAgICAgICMgSWYgdHJ5aW5nIHRvIHN0YXJ0IEhUVFAvMi4wIHNl
cnZlciwgY2hlY2sgY29tcGF0aWJpbGl0eQotICAgICAgICBpZiBzY2hlbWUgPT0gJ2h0dHAyJyBh
bmQgbm90IGh0dHAyX2NvbXBhdGlibGUoKToKKyAgICAgICAgaWYgc2NoZW1lID09ICdoMicgYW5k
IG5vdCBodHRwMl9jb21wYXRpYmxlKCk6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Nhbm5v
dCBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIgYXMgdGhlIGVudmlyb25tZW50IGlzIG5vdCBjb21wYXRp
YmxlLiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVxdWlyZXMgUHl0aG9uIDIuNy4x
MCsgKDwgMy4wKSBhbmQgT3BlblNTTCAxLjAuMisnKQogICAgICAgICAgICAgY29udGludWUKQEAg
LTUyNSw3ICs1MjYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgaW5pdF9mdW5jID0geyJodHRwIjogc3RhcnRfaHR0cF9zZXJ2
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzIjogc3RhcnRfaHR0cHNfc2VydmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwMiI6IHN0YXJ0X2h0dHAyX3NlcnZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAiaDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIndzIjogc3RhcnRfd3Nfc2VydmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3c3MiOiBzdGFydF93c3Nfc2VydmVyfVtzY2hlbWVdCiAKQEAgLTUzNyw1
MCArNTM4LDY4IEBAIGRlZiBzdGFydF9zZXJ2ZXJzKGhvc3QsIHBvcnRzLCBwYXRocywgcm91dGVz
LCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgIHJldHVybiBzZXJ2ZXJzCiAK
IAorZGVmIHN0YXJ0dXBfZmFpbGVkKGxvZz1UcnVlKToKKyAgICAjIExvZz1GYWxzZSBpcyBhIHdv
cmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lz
c3Vlcy8yMjcxOQorICAgIGlmIGxvZzoKKyAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKEVESVRfSE9T
VFNfSEVMUCkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiQ1JJVElDQUwgJXMiICUgRURJVF9I
T1NUU19IRUxQLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQoMSkKKworCiBkZWYgc3Rh
cnRfaHR0cF9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBj
b25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9
aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nfcm9vdCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2Vfc3NsPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga2V5X2ZpbGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNlcnRpZmljYXRlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRl
bmN5PWt3YXJncy5nZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRz
ZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpbmRfYWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2Vfc3NsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtleV9maWxlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXRlbmN5PWt3YXJncy5nZXQoImxhdGVuY3kiKSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgor
ICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogZGVmIHN0YXJ0X2h0dHBzX3NlcnZlcihob3N0
LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgot
ICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9ydD1wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZV9zc2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNv
bmZpZy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5z
c2xfY29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpKQorICAgIHRyeToKKyAg
ICAgICAgcmV0dXJuIHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1wb3J0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nfcm9vdCJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0ZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV3cml0ZXM9cmV3cml0ZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9zc2w9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3Bh
dGgiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1j
b25maWcuc3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xfY29uZmlnWyJlbmNy
eXB0X2FmdGVyX2Nvbm5lY3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXRlbmN5PWt3YXJncy5nZXQoImxhdGVuY3kiKSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgor
ICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogZGVmIHN0YXJ0X2h0dHAyX3NlcnZlcihob3N0
LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgot
ICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9ydD1wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcl9jbHM9d3B0c2VydmUuSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jv
b3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0ZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5kX2FkZHJlc3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1UcnVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1jb25maWcuc3NsX2Nv
bmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNy
eXB0X2FmdGVyX2Nvbm5lY3Q9Y29uZmlnLnNzbF9jb25maWdbImVuY3J5cHRfYWZ0ZXJfY29ubmVj
dCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0
KCJsYXRlbmN5IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwMj1UcnVl
KQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhv
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1wb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfY2xzPXdwdHNlcnZlLkh0
dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nfcm9vdCJdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV3cml0ZXM9cmV3cml0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZV9zc2w9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1jb25maWcuc3NsX2Nv
bmZpZ1siY2VydF9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xfY29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nv
bm5lY3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5PWt3
YXJncy5nZXQoImxhdGVuY3kiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBodHRwMj1UcnVlKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFp
bGVkKCkKIAogCiBjbGFzcyBXZWJTb2NrZXREYWVtb24ob2JqZWN0KToKQEAgLTU5MSwyMSArNjEw
LDkgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICItdyIsIGhhbmRsZXJzX3Jvb3RdCiAKICAgICAgICAgaWYgc3NsX2NvbmZpZyBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICMgVGhpcyBpcyB1c3VhbGx5IGRvbmUgdGhyb3VnaCBweXdlYnNvY2tl
dC5tYWluLCBob3dldmVyIHdlJ3JlCi0gICAgICAgICAgICAjIHdvcmtpbmcgYXJvdW5kIHRoYXQg
dG8gZ2V0IHRoZSBzZXJ2ZXIgaW5zdGFuY2UgYW5kIG1hbnVhbGx5Ci0gICAgICAgICAgICAjIHNl
dHVwIHRoZSB3c3Mgc2VydmVyLgotICAgICAgICAgICAgaWYgcHl3ZWJzb2NrZXQuX2ltcG9ydF9z
c2woKToKLSAgICAgICAgICAgICAgICB0bHNfbW9kdWxlID0gcHl3ZWJzb2NrZXQuX1RMU19CWV9T
VEFOREFSRF9NT0RVTEUKLSAgICAgICAgICAgIGVsaWYgcHl3ZWJzb2NrZXQuX2ltcG9ydF9weW9w
ZW5zc2woKToKLSAgICAgICAgICAgICAgICB0bHNfbW9kdWxlID0gcHl3ZWJzb2NrZXQuX1RMU19C
WV9QWU9QRU5TU0wKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk5v
IFNTTCBtb2R1bGUgYXZhaWxhYmxlIikKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCiAg
ICAgICAgICAgICBjbWRfYXJncyArPSBbIi0tdGxzIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAiLS1wcml2YXRlLWtleSIsIHNzbF9jb25maWdbImtleV9wYXRoIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tY2VydGlmaWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiLS10bHMtbW9kdWxlIiwgdGxzX21vZHVsZV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAiLS1jZXJ0aWZpY2F0ZSIsIHNzbF9jb25maWdbImNlcnRfcGF0
aCJdXQogCiAgICAgICAgIGlmIChiaW5kX2FkZHJlc3MpOgogICAgICAgICAgICAgY21kX2FyZ3Mg
PSBbIi1IIiwgaG9zdF0gKyBjbWRfYXJncwpAQCAtNjE0LDYgKzYyMSwxMiBAQCBjbGFzcyBXZWJT
b2NrZXREYWVtb24ob2JqZWN0KToKICAgICAgICAgb3B0cy5pc19leGVjdXRhYmxlX21ldGhvZCA9
IE5vbmUKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBweXdlYnNvY2tldC5XZWJTb2NrZXRTZXJ2ZXIo
b3B0cykKICAgICAgICAgcG9ydHMgPSBbaXRlbVswXS5nZXRzb2NrbmFtZSgpWzFdIGZvciBpdGVt
IGluIHNlbGYuc2VydmVyLl9zb2NrZXRzXQorICAgICAgICBpZiBub3QgcG9ydHM6CisgICAgICAg
ICAgICAjIFRPRE86IEZpeCB0aGUgbG9nZ2luZyBjb25maWd1cmF0aW9uIGluIFdlYlNvY2tldHMg
cHJvY2Vzc2VzCisgICAgICAgICAgICAjIHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICAgICAgICAgIHByaW50KCJGYWlsZWQgdG8g
c3RhcnQgd2Vic29ja2V0IHNlcnZlciBvbiBwb3J0ICVzLCAiCisgICAgICAgICAgICAgICAgICAi
aXMgc29tZXRoaW5nIGFscmVhZHkgdXNpbmcgdGhhdCBwb3J0PyIgJSBwb3J0LCBmaWxlPXN5cy5z
dGRlcnIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKICAgICAgICAgYXNzZXJ0IGFsbChp
dGVtID09IHBvcnRzWzBdIGZvciBpdGVtIGluIHBvcnRzKQogICAgICAgICBzZWxmLnBvcnQgPSBw
b3J0c1swXQogICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBGYWxzZQpAQCAtNjYyLDEyICs2NzUsMTUg
QEAgZGVmIHN0YXJ0X3dzX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2Fk
ZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9kdWxlIHVu
bG9ja2VkCiAgICAgcmVsb2FkX21vZHVsZShsb2dnaW5nKQogICAgIHJlbGVhc2VfbW96bG9nX2xv
Y2soKQotICAgIHJldHVybiBXZWJTb2NrZXREYWVtb24oaG9zdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cihwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9v
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1sid3NfZG9jX3Jvb3Qi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNzbF9jb25maWc9Tm9uZSkKKyAgICB0cnk6CisgICAgICAgIHJldHVy
biBXZWJTb2NrZXREYWVtb24oaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHIocG9ydCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19yb290LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1sid3NfZG9jX3Jvb3QiXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3NsX2NvbmZpZz1Ob25lKQorICAgIGV4Y2VwdCBFeGNlcHRp
b246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkKIAogCiBkZWYgc3RhcnRfd3Nz
X3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywg
Kiprd2FyZ3MpOgpAQCAtNjc1LDEyICs2OTEsMTUgQEAgZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9z
dCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToK
ICAgICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9hZF9tb2R1bGUo
bG9nZ2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4gV2ViU29ja2V0
RGFlbW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3Ns
X2NvbmZpZykKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBXZWJTb2NrZXREYWVtb24oaG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwb19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5wYXRoc1sid3NfZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnLnNzbF9jb25maWcpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9m
YWlsZWQobG9nPUZhbHNlKQogCiAKIGRlZiBzdGFydChjb25maWcsIHJvdXRlcywgKiprd2FyZ3Mp
OgpAQCAtNzA1LDggKzcyNCwxMSBAQCBkZWYgaXRlcl9wcm9jcyhzZXJ2ZXJzKToKIGRlZiBidWls
ZF9jb25maWcob3ZlcnJpZGVfcGF0aD1Ob25lLCAqKmt3YXJncyk6CiAgICAgcnYgPSBDb25maWdC
dWlsZGVyKCkKIAotICAgIGlmIGt3YXJncy5nZXQoImgyIik6Ci0gICAgICAgIHJ2Ll9kZWZhdWx0
WyJwb3J0cyJdWyJodHRwMiJdID0gWzkwMDBdCisgICAgZW5hYmxlX2h0dHAyID0ga3dhcmdzLmdl
dCgiaDIiKQorICAgIGlmIGVuYWJsZV9odHRwMiBpcyBOb25lOgorICAgICAgICBlbmFibGVfaHR0
cDIgPSBUcnVlCisgICAgaWYgZW5hYmxlX2h0dHAyOgorICAgICAgICBydi5fZGVmYXVsdFsicG9y
dHMiXVsiaDIiXSA9IFs5MDAwXQogCiAgICAgaWYgb3ZlcnJpZGVfcGF0aCBhbmQgb3MucGF0aC5l
eGlzdHMob3ZlcnJpZGVfcGF0aCk6CiAgICAgICAgIHdpdGggb3BlbihvdmVycmlkZV9wYXRoKSBh
cyBmOgpAQCAtNzM5LDYgKzc2MSw5IEBAIGRlZiBidWlsZF9jb25maWcob3ZlcnJpZGVfcGF0aD1O
b25lLCAqKmt3YXJncyk6CiBkZWYgX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KHMsIGRlcHRoPTIp
OgogICAgIHJldHVybiB7dSIuIi5qb2luKHgpIGZvciB4IGluIGNoYWluKCoocHJvZHVjdChzLCBy
ZXBlYXQ9aSkgZm9yIGkgaW4gcmFuZ2UoMSwgZGVwdGgrMSkpKX0KIAorZGVmIF9tYWtlX29yaWdp
bl9wb2xpY3lfc3ViZG9tYWlucyhsaW1pdCk6CisgICAgcmV0dXJuIHt1Im9wJWQiICUgeCBmb3Ig
eCBpbiByYW5nZSgxLGxpbWl0KzEpfQorCiAKIF9zdWJkb21haW5zID0ge3Uid3d3IiwKICAgICAg
ICAgICAgICAgIHUid3d3MSIsCkBAIC03NTAsNiArNzc1LDEyIEBAIF9ub3Rfc3ViZG9tYWlucyA9
IHt1Im5vbmV4aXN0ZW50In0KIAogX3N1YmRvbWFpbnMgPSBfbWFrZV9zdWJkb21haW5zX3Byb2R1
Y3QoX3N1YmRvbWFpbnMpCiAKKyMgT3JpZ2luIHBvbGljeSBzdWJkb21haW5zIG5lZWQgdG8gbm90
IGJlIHJldXNlZCBieSBhbnkgb3RoZXIgdGVzdHMsIHNpbmNlIG9yaWdpbiBwb2xpY2llcyBoYXZl
CisjIG9yaWdpbi13aWRlIGltcGFjdHMgbGlrZSBpbnN0YWxsaW5nIGEgQ1NQIG9yIEZlYXR1cmUg
UG9saWN5IHRoYXQgY291bGQgaW50ZXJmZXJlIHdpdGggZmVhdHVyZXMKKyMgdW5kZXIgdGVzdC4K
KyMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvcmZjcy9wdWxsLzQ0
LgorX3N1YmRvbWFpbnMgfD0gX21ha2Vfb3JpZ2luX3BvbGljeV9zdWJkb21haW5zKDk5KQorCiBf
bm90X3N1YmRvbWFpbnMgPSBfbWFrZV9zdWJkb21haW5zX3Byb2R1Y3QoX25vdF9zdWJkb21haW5z
KQogCiAKQEAgLTg0NSw5ICs4NzYsMTAgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gV2ViU29ja2V0cyBkb2N1bWVudCByb290LiBPdmVy
cmlkZXMgY29uZmlnLiIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1hbGlhc19maWxlIiwg
YWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImFsaWFzX2ZpbGUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRmlsZSB3aXRoIGVudHJpZXMgZm9yIGFsaWFzZXMvbXVsdGlwbGUgZG9jIHJvb3Rz
LiBJbiBmb3JtIG9mIGAvQUxJQVNfTkFNRS8sIERPQ19ST09UXFxuYCIpCi0gICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1oMiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImgyIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9IkZsYWcgZm9yIGVuYWJsaW5nIHRoZSBIVFRQLzIuMCBz
ZXJ2ZXIiKQotICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoaDI9RmFsc2UpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1oMiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImgyIiwgZGVmYXVs
dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW5vLWgyIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9ImgyIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RGlzYWJsZSB0aGUgSFRUUC8yLjAgc2VydmVyIikKICAgICByZXR1cm4gcGFyc2VyCiAKIApAQCAt
ODkwLDE2ICs5MjIsMjIgQEAgZGVmIHJ1bigqKmt3YXJncyk6CiAgICAgICAgICAgICBzaWduYWwu
c2lnbmFsKHNpZ25hbC5TSUdURVJNLCBoYW5kbGVfc2lnbmFsKQogICAgICAgICAgICAgc2lnbmFs
LnNpZ25hbChzaWduYWwuU0lHSU5ULCBoYW5kbGVfc2lnbmFsKQogCi0gICAgICAgICAgICB3aGls
ZSBhbGwoaXRlbS5pc19hbGl2ZSgpIGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFu
ZCBub3QgcmVjZWl2ZWRfc2lnbmFsLmlzX3NldCgpOgotICAgICAgICAgICAgICAgIGZvciBpdGVt
IGluIGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0uam9pbigx
KQotICAgICAgICAgICAgZXhpdGVkID0gW2l0ZW0gZm9yIGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2
ZXJzKSBpZiBub3QgaXRlbS5pc19hbGl2ZSgpXQotICAgICAgICAgICAgc3ViamVjdCA9ICJzdWJw
cm9jZXNzIiBpZiBsZW4oZXhpdGVkKSA9PSAxIGVsc2UgInN1YnByb2Nlc3NlcyIKLQotICAgICAg
ICAgICAgbG9nZ2VyLmluZm8oIiVzICVzIGV4aXRlZDoiICUgKGxlbihleGl0ZWQpLCBzdWJqZWN0
KSkKLQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2ZXJzKToKLSAgICAg
ICAgICAgICAgICBsb2dnZXIuaW5mbygiU3RhdHVzIG9mICVzOlx0JXMiICUgKGl0ZW0ubmFtZSwg
InJ1bm5pbmciIGlmIGl0ZW0uaXNfYWxpdmUoKSBlbHNlICJub3QgcnVubmluZyIpKQorICAgICAg
ICAgICAgd2hpbGUgKGFsbChzdWJwcm9jLmlzX2FsaXZlKCkgZm9yIHN1YnByb2MgaW4gaXRlcl9w
cm9jcyhzZXJ2ZXJzKSkgYW5kCisgICAgICAgICAgICAgICAgICAgbm90IHJlY2VpdmVkX3NpZ25h
bC5pc19zZXQoKSk6CisgICAgICAgICAgICAgICAgZm9yIHN1YnByb2MgaW4gaXRlcl9wcm9jcyhz
ZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICAgICAgc3VicHJvYy5qb2luKDEpCisKKyAgICAgICAg
ICAgIGZhaWxlZF9zdWJwcm9jID0gMAorICAgICAgICAgICAgZm9yIHN1YnByb2MgaW4gaXRlcl9w
cm9jcyhzZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBpZiBzdWJwcm9jLmlzX2FsaXZlKCk6Cisg
ICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTdGF0dXMgb2Ygc3VicHJvY2VzcyAiJXMi
OiBydW5uaW5nJyAlIHN1YnByb2MubmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBpZiBzdWJwcm9jLmV4aXRjb2RlID09IDA6CisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIuaW5mbygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogZXhpdGVkIGNv
cnJlY3RseScgJSBzdWJwcm9jLm5hbWUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnU3RhdHVzIG9mIHN1YnByb2Nlc3Mg
IiVzIjogZmFpbGVkLiBFeGl0IHdpdGggbm9uLXplcm8gc3RhdHVzOiAlZCcgJSAoc3VicHJvYy5u
YW1lLCBzdWJwcm9jLmV4aXRjb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9z
dWJwcm9jICs9IDEKKyAgICAgICAgICAgIHJldHVybiBmYWlsZWRfc3VicHJvYwogCiAKIGRlZiBt
YWluKCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKaW5kZXggZDZj
MDgyYTk3MDM1N2Y0NzdlODJjZDI1YTFjMDk1MmVlNzQ0ZGI1NC4uZDkwMjQ3OTNjYWZkYTFiYjM2
M2I1ZDNhMzk5YWE5M2E0ZDY5MTEwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdGVz
dF9zZXJ2ZS5weQpAQCAtODIsNyArODIsNyBAQCBkZWYgdGVzdF9jb25maWdfanNvbl9sZW5ndGgo
KToKICAgICAjIHdlIHNlcmlhbGl6ZSB0aGUgY29uZmlnIGFzIEpTT04gZm9yIHB5dGVzdHJ1bm5l
ciBhbmQgcHV0IGl0IGluIGFuIGVudgogICAgICMgdmFyaWFibGUsIHdoaWNoIG9uIFdpbmRvd3Mg
bXVzdCBoYXZlIGEgbGVuZ3RoIDw9IDB4N0ZGRiAoaW50MTYpCiAgICAgd2l0aCBDb25maWdCdWls
ZGVyKCkgYXMgYzoKLSAgICAgICAgZGF0YSA9IGpzb24uZHVtcHMoYy5hc19kaWN0KCkpCisgICAg
ICAgIGRhdGEgPSBqc29uLmR1bXBzKGMuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAg
ICAgYXNzZXJ0IGxlbihkYXRhKSA8PSAweDdGRkYKIAogZGVmIHRlc3RfYWx0ZXJuYXRlX2hvc3Rf
dW5zcGVjaWZpZWQoKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93
cy90ZXN0cy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxOWIyMWQ3NDU4OGUwYjUxN2Q2ZTk3ZTQ3YzZhZWM2ZmFlZjA2YTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCkBA
IC0wLDAgKzEsMTI4IEBACituYW1lOiB0ZXN0cworCitvbjogW3B1c2gsIHB1bGxfcmVxdWVzdF0K
Kworam9iczoKKworICBsaW50OgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAgICBzdGVw
czoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rp
b25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJz
aW9uOiAzLjcKKyAgICAgIC0gbmFtZTogSW5zdGFsbCBwYWNrYWdlcworICAgICAgICBydW46IHBp
cCBpbnN0YWxsIGJsYWNrIGZsYWtlOCBpc29ydCBteXB5CisgICAgICAtIG5hbWU6IFJ1biBsaW50
ZXJzCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGZsYWtlOCBleGFtcGxlcyBzcmMgdGVzdHMK
KyAgICAgICAgICBpc29ydCAtYyAtZGYgLXJjIGV4YW1wbGVzIHNyYyB0ZXN0cworICAgICAgICAg
IGJsYWNrIC0tY2hlY2sgLS1kaWZmIGV4YW1wbGVzIHNyYyB0ZXN0cworICAgICAgICAgIG15cHkg
ZXhhbXBsZXMgc3JjCisKKyAgdGVzdDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19Cisg
ICAgc3RyYXRlZ3k6CisgICAgICBmYWlsLWZhc3Q6IGZhbHNlCisgICAgICBtYXRyaXg6CisgICAg
ICAgIG9zOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3MtbGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAg
ICAgICAgcHl0aG9uOiBbMy44LCAzLjcsIDMuNl0KKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczog
YWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2
MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAke3sgbWF0cml4LnB5
dGhvbiB9fQorICAgICAgLSBuYW1lOiBEaXNhYmxlIGZpcmV3YWxsIGFuZCBjb25maWd1cmUgY29t
cGlsZXIKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnbWFjb3MtbGF0ZXN0JworICAgICAgICBy
dW46IHwKKyAgICAgICAgICBzdWRvIC91c3IvbGliZXhlYy9BcHBsaWNhdGlvbkZpcmV3YWxsL3Nv
Y2tldGZpbHRlcmZ3IC0tc2V0Z2xvYmFsc3RhdGUgb2ZmCisgICAgICAgICAgZWNobyAiOjpzZXQt
ZW52IG5hbWU9QUlPUVVJQ19TS0lQX1RFU1RTOjpjaGFjaGEyMCIKKyAgICAgICAgICBlY2hvICI6
OnNldC1lbnYgbmFtZT1DRkxBR1M6Oi1JL3Vzci9sb2NhbC9vcHQvb3BlbnNzbC9pbmNsdWRlIgor
ICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxERkxBR1M6Oi1ML3Vzci9sb2NhbC9vcHQv
b3BlbnNzbC9saWIiCisgICAgICAtIG5hbWU6IEluc3RhbGwgT3BlblNTTAorICAgICAgICBpZjog
bWF0cml4Lm9zID09ICd3aW5kb3dzLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAg
Y2hvY28gaW5zdGFsbCBvcGVuc3NsIC0tbm8tcHJvZ3Jlc3MKKyAgICAgICAgICBlY2hvICI6OnNl
dC1lbnYgbmFtZT1DTDo6L0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgICAg
ICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9TElOSzo6L0xJQlBBVEg6QzpcUHJvZ3JhfjFcT3Bl
blNTTC1XaW42NFxsaWIiCisgICAgICAtIG5hbWU6IFJ1biB0ZXN0cworICAgICAgICBydW46IHwK
KyAgICAgICAgICBwaXAgaW5zdGFsbCAtVSBwaXAgc2V0dXB0b29scyB3aGVlbAorICAgICAgICAg
IHBpcCBpbnN0YWxsIGNvdmVyYWdlCisgICAgICAgICAgcGlwIGluc3RhbGwgLgorICAgICAgICAg
IGNvdmVyYWdlIHJ1biAtbSB1bml0dGVzdCBkaXNjb3ZlciAtdgorICAgICAgICAgIGNvdmVyYWdl
IHhtbAorICAgICAgICBzaGVsbDogYmFzaAorICAgICAgLSBuYW1lOiBVcGxvYWQgY292ZXJhZ2Ug
cmVwb3J0CisgICAgICAgIHVzZXM6IGNvZGVjb3YvY29kZWNvdi1hY3Rpb25AdjEKKyAgICAgICAg
aWY6IG1hdHJpeC5weXRob24gIT0gJ3B5cHkzJworICAgICAgICB3aXRoOgorICAgICAgICAgIHRv
a2VuOiAke3sgc2VjcmV0cy5DT0RFQ09WX1RPS0VOIH19CisKKyAgcGFja2FnZS1zb3VyY2U6Cisg
ICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rp
b25zL2NoZWNrb3V0QHYyCisgICAgICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYxCisg
ICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuNworICAgICAgLSBuYW1l
OiBCdWlsZCBzb3VyY2UgcGFja2FnZQorICAgICAgICBydW46IHB5dGhvbiBzZXR1cC5weSBzZGlz
dAorICAgICAgLSBuYW1lOiBVcGxvYWQgc291cmNlIHBhY2thZ2UKKyAgICAgICAgdXNlczogYWN0
aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBuYW1lOiBk
aXN0CisgICAgICAgICAgcGF0aDogZGlzdC8KKworICBwYWNrYWdlLXdoZWVsOgorICAgIHJ1bnMt
b246ICR7eyBtYXRyaXgub3MgfX0KKyAgICBzdHJhdGVneToKKyAgICAgIG1hdHJpeDoKKyAgICAg
ICAgb3M6IFt1YnVudHUtbGF0ZXN0LCBtYWNvcy1sYXRlc3QsIHdpbmRvd3MtbGF0ZXN0XQorICAg
IHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAgICAtIHVzZXM6
IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYxCisgICAgICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9u
LXZlcnNpb246IDMuNworICAgICAgLSBuYW1lOiBJbnN0YWxsIG5hc20KKyAgICAgICAgaWY6IG1h
dHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3QnCisgICAgICAgIHJ1bjogY2hvY28gaW5zdGFsbCAt
eSBuYXNtCisgICAgICAtIG5hbWU6IEluc3RhbGwgbm1ha2UKKyAgICAgICAgaWY6IG1hdHJpeC5v
cyA9PSAnd2luZG93cy1sYXRlc3QnCisgICAgICAgIHJ1bjogfAorICAgICAgICAgICYgIkM6XFBy
b2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cSW5zdGFsbGVyXHZzX2lu
c3RhbGxlci5leGUiIG1vZGlmeSBgCisgICAgICAgICAgIC0taW5zdGFsbFBhdGggIkM6XFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxFbnRlcnByaXNlIiBg
CisgICAgICAgICAgIC0tYWRkIE1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uQ29tcG9uZW50LlZDLlRv
b2xzLng4Ni54NjQgLS1wYXNzaXZlIC0tbm9yZXN0YXJ0CisgICAgICAgIHNoZWxsOiBwb3dlcnNo
ZWxsCisgICAgICAtIG5hbWU6IEJ1aWxkIHdoZWVscworICAgICAgICBlbnY6CisgICAgICAgICAg
Q0lCV19CRUZPUkVfQlVJTEQ6IHNjcmlwdHMvYnVpbGQtb3BlbnNzbCAvdG1wL3ZlbmRvcgorICAg
ICAgICAgIENJQldfQkVGT1JFX0JVSUxEX1dJTkRPV1M6IHNjcmlwdHNcYnVpbGQtb3BlbnNzbC5i
YXQgQzpcY2lid1x2ZW5kb3IKKyAgICAgICAgICBDSUJXX0VOVklST05NRU5UOiBBSU9RVUlDX1NL
SVBfVEVTVFM9aXB2Nixsb3NzIENGTEFHUz0tSS90bXAvdmVuZG9yL2luY2x1ZGUgTERGTEFHUz0t
TC90bXAvdmVuZG9yL2xpYgorICAgICAgICAgIENJQldfRU5WSVJPTk1FTlRfV0lORE9XUzogQUlP
UVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9zcyBDTD0iL0lDOlxjaWJ3XHZlbmRvclxpbmNsdWRlIiBM
SU5LPSIvTElCUEFUSDpDOlxjaWJ3XHZlbmRvclxsaWIiCisgICAgICAgICAgQ0lCV19TS0lQOiBj
cDI3LSogY3AzMy0qIGNwMzQtKiBjcDM1LSogcHAyNy0qCisgICAgICAgICAgQ0lCV19URVNUX0NP
TU1BTkQ6IHB5dGhvbiAtbSB1bml0dGVzdCBkaXNjb3ZlciAtdCB7cHJvamVjdH0gLXMge3Byb2pl
Y3R9L3Rlc3RzCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHBpcCBpbnN0YWxsIGNpYnVpbGR3
aGVlbAorICAgICAgICAgIGNpYnVpbGR3aGVlbCAtLW91dHB1dC1kaXIgZGlzdAorICAgICAgLSBu
YW1lOiBVcGxvYWQgd2hlZWxzCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0
QHYxCisgICAgICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6
IGRpc3QvCisKKyAgcHVibGlzaDoKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAgbmVl
ZHM6IFtsaW50LCB0ZXN0LCBwYWNrYWdlLXNvdXJjZSwgcGFja2FnZS13aGVlbF0KKyAgICBzdGVw
czoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rp
b25zL2Rvd25sb2FkLWFydGlmYWN0QHYxCisgICAgICAgIHdpdGg6CisgICAgICAgICAgbmFtZTog
ZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QvCisgICAgICAtIG5hbWU6IFB1Ymxpc2ggdG8gUHlQ
SQorICAgICAgICBpZjogZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3B1c2gnICYmIHN0YXJ0c1dpdGgo
Z2l0aHViLmV2ZW50LnJlZiwgJ3JlZnMvdGFncy8nKQorICAgICAgICB1c2VzOiBweXBhL2doLWFj
dGlvbi1weXBpLXB1Ymxpc2hAbWFzdGVyCisgICAgICAgIHdpdGg6CisgICAgICAgICAgdXNlcjog
X190b2tlbl9fCisgICAgICAgICAgcGFzc3dvcmQ6ICR7eyBzZWNyZXRzLlBZUElfVE9LRU4gfX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYmMwYWU5OWIyMGY0ODllZTc3YTg1NTllNTJhYzc5NDUzNGRhZTA3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy90
ZXN0cy55bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ5OTI0YTVhYTA4Mzk4NmQwYmQ3MDY5ZWRjNmVkZGVhYjdj
ZTBhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCkBAIC0wLDAgKzEs
MjUgQEAKK0NvcHlyaWdodCAoYykgMjAxOSBKZXJlbXkgTGFpbsOpLgorQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24K
KyAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBhaW9xdWljIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkKKyAgICAgIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAgICAgIHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAor
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
K0ZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCitEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
K0NBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCitPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9NQU5J
RkVTVC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NWUwOTAzYWY5OTRlMzRjMzVkOGIyZWVlMjBiNGJiM2I3Njlk
ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL01BTklGRVNULmluCkBAIC0wLDAg
KzEsNCBAQAoraW5jbHVkZSBMSUNFTlNFCityZWN1cnNpdmUtaW5jbHVkZSBkb2NzICoucHkgKi5y
c3QgTWFrZWZpbGUKK3JlY3Vyc2l2ZS1pbmNsdWRlIGV4YW1wbGVzICouaHRtbCAqLnB5CityZWN1
cnNpdmUtaW5jbHVkZSB0ZXN0cyAqLmJpbiAqLnBlbSAqLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIz
MjIwNDJjMjRkZDI2NmRlYTFiNzI4NDM2NGU5YTVjY2ViNjZhN2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJzdApAQCAtMCwwICsxLDE2NCBAQAorYWlvcXVpYworPT09
PT09PQorCit8cnRkfCB8cHlwaS12fCB8cHlwaS1weXZlcnNpb25zfCB8cHlwaS1sfCB8dGVzdHN8
IHxjb2RlY292fCB8YmxhY2t8CisKKy4uIHxydGR8IGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9j
cy5vcmcvcHJvamVjdHMvYWlvcXVpYy9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgICA6dGFyZ2V0
OiBodHRwczovL2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vCisKKy4uIHxweXBpLXZ8IGltYWdlOjog
aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBo
dHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktcHl2ZXJzaW9u
c3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9haW9xdWlj
LnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYwor
CisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL2Fpb3F1
aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9xdWlj
CisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMv
d29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxjb2RlY292fCBpbWFnZTo6IGh0dHBzOi8v
aW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVpYy5zdmcKKyAgICA6
dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMKKworLi4gfGJsYWNr
fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNr
LTAwMDAwMC5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2JsYWNr
CisKK1doYXQgaXMgYGBhaW9xdWljYGA/CistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitgYGFpb3F1
aWNgYCBpcyBhIGxpYnJhcnkgZm9yIHRoZSBRVUlDIG5ldHdvcmsgcHJvdG9jb2wgaW4gUHl0aG9u
LiBJdCBmZWF0dXJlcworYSBtaW5pbWFsIFRMUyAxLjMgaW1wbGVtZW50YXRpb24sIGEgUVVJQyBz
dGFjayBhbmQgYW4gSFRUUC8zIHN0YWNrLgorCitRVUlDIHN0YW5kYXJkaXNhdGlvbiBpcyBub3Qg
ZmluYWxpc2VkIHlldCwgYnV0IGBgYWlvcXVpY2BgIGNsb3NlbHkgdHJhY2tzIHRoZQorc3BlY2lm
aWNhdGlvbiBkcmFmdHMgYW5kIGlzIHJlZ3VsYXJseSB0ZXN0ZWQgZm9yIGludGVyb3BlcmFiaWxp
dHkgYWdhaW5zdCBvdGhlcgorYFFVSUMgaW1wbGVtZW50YXRpb25zYF8uCisKK1RvIGxlYXJuIG1v
cmUgYWJvdXQgYGBhaW9xdWljYGAgcGxlYXNlIGByZWFkIHRoZSBkb2N1bWVudGF0aW9uYF8uCisK
K1doeSBzaG91bGQgSSB1c2UgYGBhaW9xdWljYGA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitgYGFpb3F1aWNgYCBoYXMgYmVlbiBkZXNpZ25lZCB0byBiZSBlbWJlZGRlZCBpbnRv
IFB5dGhvbiBjbGllbnQgYW5kIHNlcnZlcgorbGlicmFyaWVzIHdpc2hpbmcgdG8gc3VwcG9ydCBR
VUlDIGFuZCAvIG9yIEhUVFAvMy4gVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSBhCitjb21tb24gY29k
ZWJhc2UgZm9yIFB5dGhvbiBsaWJyYXJpZXMgaW4gdGhlIGhvcGUgb2YgYXZvaWRpbmcgZHVwbGlj
YXRlZCBlZmZvcnQuCisKK0JvdGggdGhlIFFVSUMgYW5kIHRoZSBIVFRQLzMgQVBJcyBmb2xsb3cg
dGhlICJicmluZyB5b3VyIG93biBJL08iIHBhdHRlcm4sCitsZWF2aW5nIGFjdHVhbCBJL08gb3Bl
cmF0aW9ucyB0byB0aGUgQVBJIHVzZXIuIFRoaXMgYXBwcm9hY2ggaGFzIGEgbnVtYmVyIG9mCith
ZHZhbnRhZ2VzIGluY2x1ZGluZyBtYWtpbmcgdGhlIGNvZGUgdGVzdGFibGUgYW5kIGFsbG93aW5n
IGludGVncmF0aW9uIHdpdGgKK2RpZmZlcmVudCBjb25jdXJyZW5jeSBtb2RlbHMuCisKK0ZlYXR1
cmVzCistLS0tLS0tLQorCistIFFVSUMgc3RhY2sgY29uZm9ybWluZyB3aXRoIGRyYWZ0LTI3Cist
IEhUVFAvMyBzdGFjayBjb25mb3JtaW5nIHdpdGggZHJhZnQtMjcKKy0gbWluaW1hbCBUTFMgMS4z
IGltcGxlbWVudGF0aW9uCistIElQdjQgYW5kIElQdjYgc3VwcG9ydAorLSBjb25uZWN0aW9uIG1p
Z3JhdGlvbiBhbmQgTkFUIHJlYmluZGluZworLSBsb2dnaW5nIFRMUyB0cmFmZmljIHNlY3JldHMK
Ky0gbG9nZ2luZyBRVUlDIGV2ZW50cyBpbiBRTE9HIGZvcm1hdAorLSBIVFRQLzMgc2VydmVyIHB1
c2ggc3VwcG9ydAorCitSZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLQorCitgYGFpb3F1aWNgYCBy
ZXF1aXJlcyBQeXRob24gMy42IG9yIGJldHRlciwgYW5kIHRoZSBPcGVuU1NMIGRldmVsb3BtZW50
IGhlYWRlcnMuCisKK0xpbnV4CisuLi4uLgorCitPbiBEZWJpYW4vVWJ1bnR1IHJ1bjoKKworLi4g
Y29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGxpYnNzbC1kZXYg
cHl0aG9uMy1kZXYKKworT24gQWxwaW5lIExpbnV4IHlvdSB3aWxsIGFsc28gbmVlZCB0aGUgZm9s
bG93aW5nOgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAkIHN1ZG8gYXB0IGluc3Rh
bGwgYnNkLWNvbXBhdC1oZWFkZXJzIGxpYmZmaS1kZXYKKworT1MgWAorLi4uLgorCitPbiBPUyBY
IHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgJCBicmV3IGluc3RhbGwgb3Bl
bnNzbAorCitZb3Ugd2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0
byBsaW5rIGFnYWluc3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAg
JCBleHBvcnQgQ0ZMQUdTPS1JL3Vzci9sb2NhbC9vcHQvb3BlbnNzbC9pbmNsdWRlCisgICAkIGV4
cG9ydCBMREZMQUdTPS1ML3Vzci9sb2NhbC9vcHQvb3BlbnNzbC9saWIKKworV2luZG93cworLi4u
Li4uLgorCitPbiBXaW5kb3dzIHRoZSBlYXNpZXN0IHdheSB0byBpbnN0YWxsIE9wZW5TU0wgaXMg
dG8gdXNlIGBDaG9jb2xhdGV5YF8uCisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgID4g
Y2hvY28gaW5zdGFsbCBvcGVuc3NsCisKK1lvdSB3aWxsIG5lZWQgdG8gc2V0IHNvbWUgZW52aXJv
bm1lbnQgdmFyaWFibGVzIHRvIGxpbmsgYWdhaW5zdCBPcGVuU1NMOgorCisuLiBjb2RlLWJsb2Nr
OjogY29uc29sZQorCisgID4gJEVudjpDTCA9ICIvSUM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRc
aW5jbHVkZSIKKyAgPiAkRW52OkxJTksgPSAiL0xJQlBBVEg6QzpcUHJvZ3JhfjFcT3BlblNTTC1X
aW42NFxsaWIiCisKK1J1bm5pbmcgdGhlIGV4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitBZnRlciBjaGVja2luZyBvdXQgdGhlIGNvZGUgdXNpbmcgZ2l0IHlvdSBjYW4gcnVuOgorCisu
LiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAkIHBpcCBpbnN0YWxsIC1lIC4KKyAgICQgcGlw
IGluc3RhbGwgYWlvZmlsZXMgYXNnaXJlZiBodHRwYmluIHN0YXJsZXR0ZSB3c3Byb3RvCisKK0hU
VFAvMyBzZXJ2ZXIKKy4uLi4uLi4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgc2Vy
dmVyLCB3aGljaCBoYW5kbGVzIGJvdGggSFRUUC8wLjkgYW5kIEhUVFAvMzoKKworLi4gY29kZS1i
bG9jazo6IGNvbnNvbGUKKworICAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfc2VydmVyLnB5IC0t
Y2VydGlmaWNhdGUgdGVzdHMvc3NsX2NlcnQucGVtIC0tcHJpdmF0ZS1rZXkgdGVzdHMvc3NsX2tl
eS5wZW0KKworSFRUUC8zIGNsaWVudAorLi4uLi4uLi4uLi4uLgorCitZb3UgY2FuIHJ1biB0aGUg
ZXhhbXBsZSBjbGllbnQgdG8gcGVyZm9ybSBhbiBIVFRQLzMgcmVxdWVzdDoKKworLi4gY29kZS1i
bG9jazo6IGNvbnNvbGUKKworICAkIHB5dGhvbiBleGFtcGxlcy9odHRwM19jbGllbnQucHkgLS1j
YS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworQWx0
ZXJuYXRpdmVseSB5b3UgY2FuIHBlcmZvcm0gYW4gSFRUUC8wLjkgcmVxdWVzdDoKKworLi4gY29k
ZS1ibG9jazo6IGNvbnNvbGUKKworICAkIHB5dGhvbiBleGFtcGxlcy9odHRwM19jbGllbnQucHkg
LS1jYS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gLS1sZWdhY3ktaHR0cCBodHRwczovL2xvY2Fs
aG9zdDo0NDMzLworCitZb3UgY2FuIGFsc28gb3BlbiBhIFdlYlNvY2tldCBvdmVyIEhUVFAvMzoK
KworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAkIHB5dGhvbiBleGFtcGxlcy9odHRwM19j
bGllbnQucHkgLS1jYS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gd3NzOi8vbG9jYWxob3N0OjQ0
MzMvd3MKKworTGljZW5zZQorLS0tLS0tLQorCitgYGFpb3F1aWNgYCBpcyByZWxlYXNlZCB1bmRl
ciB0aGUgYEJTRCBsaWNlbnNlYF8uCisKKy4uIF9yZWFkIHRoZSBkb2N1bWVudGF0aW9uOiBodHRw
czovL2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LworLi4gX1FVSUMgaW1wbGVtZW50
YXRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vcXVpY3dnL2Jhc2UtZHJhZnRzL3dpa2kvSW1wbGVt
ZW50YXRpb25zCisuLiBfY3J5cHRvZ3JhcGh5OiBodHRwczovL2NyeXB0b2dyYXBoeS5pby8KKy4u
IF9DaG9jb2xhdGV5OiBodHRwczovL2Nob2NvbGF0ZXkub3JnLworLi4gX0JTRCBsaWNlbnNlOiBo
dHRwczovL2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2xpY2Vuc2UuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9N
YWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zY2I3MzhiOTYxN2ZiMmQ5ZGQwNjY4NGJkMjI0ZjBhZDAzZTA2
YTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKQEAgLTAs
MCArMSwyMCBAQAorIyBNaW5pbWFsIG1ha2VmaWxlIGZvciBTcGhpbnggZG9jdW1lbnRhdGlvbgor
IworCisjIFlvdSBjYW4gc2V0IHRoZXNlIHZhcmlhYmxlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUu
CitTUEhJTlhPUFRTICAgID0KK1NQSElOWEJVSUxEICAgPSBzcGhpbngtYnVpbGQKK1NQSElOWFBS
T0ogICAgPSBhaW9xdWljCitTT1VSQ0VESVIgICAgID0gLgorQlVJTERESVIgICAgICA9IF9idWls
ZAorCisjIFB1dCBpdCBmaXJzdCBzbyB0aGF0ICJtYWtlIiB3aXRob3V0IGFyZ3VtZW50IGlzIGxp
a2UgIm1ha2UgaGVscCIuCitoZWxwOgorCUAkKFNQSElOWEJVSUxEKSAtTSBoZWxwICIkKFNPVVJD
RURJUikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pCisKKy5QSE9OWTogaGVscCBN
YWtlZmlsZQorCisjIENhdGNoLWFsbCB0YXJnZXQ6IHJvdXRlIGFsbCB1bmtub3duIHRhcmdldHMg
dG8gU3BoaW54IHVzaW5nIHRoZSBuZXcKKyMgIm1ha2UgbW9kZSIgb3B0aW9uLiAgJChPKSBpcyBt
ZWFudCBhcyBhIHNob3J0Y3V0IGZvciAkKFNQSElOWE9QVFMpLgorJTogTWFrZWZpbGUKKwlAJChT
UEhJTlhCVUlMRCkgLU0gJEAgIiQoU09VUkNFRElSKSIgIiQoQlVJTERESVIpIiAkKFNQSElOWE9Q
VFMpICQoTykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZG9jcy9hc3luY2lvLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2FzeW5jaW8ucnN0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlYzU2ODA5MDE0NjBiMDMyODNhNGFjNmNmNjU0ZThjMmFhYzYwZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApAQCAtMCwwICsxLDMy
IEBACithc3luY2lvIEFQSQorPT09PT09PT09PT0KKworVGhlIGFzeW5jaW8gQVBJIHByb3ZpZGVz
IGEgaGlnaC1sZXZlbCBRVUlDIEFQSSBidWlsdCBvbiB0b3Agb2YgOm1vZDpgYXN5bmNpb2AsCitQ
eXRob24ncyBzdGFuZGFyZCBhc3luY2hyb25vdXMgSS9PIGZyYW1ld29yay4KKworYGBhaW9xdWlj
YGAgY29tZXMgd2l0aCBhIHNlbGVjdGlvbiBvZiBleGFtcGxlcywgaW5jbHVkaW5nOgorCistIGFu
IEhUVFAvMyBjbGllbnQKKy0gYW4gSFRUUC8zIHNlcnZlcgorCitUaGUgZXhhbXBsZXMgY2FuIGJl
IGJyb3dzZWQgb24gR2l0SHViOgorCitodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMv
dHJlZS9tYXN0ZXIvZXhhbXBsZXMKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuYXN5bmNpbwor
CitDbGllbnQKKy0tLS0tLQorCisgICAgLi4gYXV0b2Z1bmN0aW9uOjogY29ubmVjdAorCitTZXJ2
ZXIKKy0tLS0tLQorCisgICAgLi4gYXV0b2Z1bmN0aW9uOjogc2VydmUKKworQ29tbW9uCistLS0t
LS0KKworICAgIC4uIGF1dG9jbGFzczo6IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgICAgICAg
Om1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvY29uZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODkwNjJhYzk3NTMyNmE0N2Y4OGVkYWU0
ZDhkMzQzY2ZlNzYwYzBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvY29u
Zi5weQpAQCAtMCwwICsxLDIwNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyAtKi0gY29k
aW5nOiB1dGYtOCAtKi0KKyMKKyMgYWlvcXVpYyBkb2N1bWVudGF0aW9uIGJ1aWxkIGNvbmZpZ3Vy
YXRpb24gZmlsZSwgY3JlYXRlZCBieQorIyBzcGhpbngtcXVpY2tzdGFydCBvbiBUaHUgRmViICA4
IDE3OjIyOjE0IDIwMTguCisjCisjIFRoaXMgZmlsZSBpcyBleGVjZmlsZSgpZCB3aXRoIHRoZSBj
dXJyZW50IGRpcmVjdG9yeSBzZXQgdG8gaXRzCisjIGNvbnRhaW5pbmcgZGlyLgorIworIyBOb3Rl
IHRoYXQgbm90IGFsbCBwb3NzaWJsZSBjb25maWd1cmF0aW9uIHZhbHVlcyBhcmUgcHJlc2VudCBp
biB0aGlzCisjIGF1dG9nZW5lcmF0ZWQgZmlsZS4KKyMKKyMgQWxsIGNvbmZpZ3VyYXRpb24gdmFs
dWVzIGhhdmUgYSBkZWZhdWx0OyB2YWx1ZXMgdGhhdCBhcmUgY29tbWVudGVkIG91dAorIyBzZXJ2
ZSB0byBzaG93IHRoZSBkZWZhdWx0LgorCitpbXBvcnQgc3lzLCBvcworCisjIElmIGV4dGVuc2lv
bnMgKG9yIG1vZHVsZXMgdG8gZG9jdW1lbnQgd2l0aCBhdXRvZG9jKSBhcmUgaW4gYW5vdGhlciBk
aXJlY3RvcnksCisjIGFkZCB0aGVzZSBkaXJlY3RvcmllcyB0byBzeXMucGF0aCBoZXJlLiBJZiB0
aGUgZGlyZWN0b3J5IGlzIHJlbGF0aXZlIHRvIHRoZQorIyBkb2N1bWVudGF0aW9uIHJvb3QsIHVz
ZSBvcy5wYXRoLmFic3BhdGggdG8gbWFrZSBpdCBhYnNvbHV0ZSwgbGlrZSBzaG93biBoZXJlLgor
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aCgnLi4nKSkKKworCitjbGFzcyBNb2Nr
QnVmZmVyOgorICAgIEJ1ZmZlciA9IE5vbmUKKyAgICBCdWZmZXJSZWFkRXJyb3IgPSBOb25lCisg
ICAgQnVmZmVyV3JpdGVFcnJvciA9IE5vbmUKKworCitjbGFzcyBNb2NrQ3J5cHRvOgorICAgIEFF
QUQgPSBOb25lCisgICAgQ3J5cHRvRXJyb3IgPSBWYWx1ZUVycm9yCisgICAgSGVhZGVyUHJvdGVj
dGlvbiA9IE5vbmUKKworCitjbGFzcyBNb2NrUHlsc3FwYWNrOgorICAgIERlY29kZXIgPSBOb25l
CisgICAgRW5jb2RlciA9IE5vbmUKKyAgICBTdHJlYW1CbG9ja2VkID0gTm9uZQorCisKK3N5cy5t
b2R1bGVzLnVwZGF0ZSh7CisgICAgImFpb3F1aWMuX2J1ZmZlciI6IE1vY2tCdWZmZXIoKSwKKyAg
ICAiYWlvcXVpYy5fY3J5cHRvIjogTW9ja0NyeXB0bygpLAorICAgICJweWxzcXBhY2siOiBNb2Nr
UHlsc3FwYWNrKCksCit9KQorCisjIC0tIEdlbmVyYWwgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB5b3VyIGRvY3Vt
ZW50YXRpb24gbmVlZHMgYSBtaW5pbWFsIFNwaGlueCB2ZXJzaW9uLCBzdGF0ZSBpdCBoZXJlLgor
IworIyBuZWVkc19zcGhpbnggPSAnMS4wJworCisjIEFkZCBhbnkgU3BoaW54IGV4dGVuc2lvbiBt
b2R1bGUgbmFtZXMgaGVyZSwgYXMgc3RyaW5ncy4gVGhleSBjYW4gYmUKKyMgZXh0ZW5zaW9ucyBj
b21pbmcgd2l0aCBTcGhpbnggKG5hbWVkICdzcGhpbnguZXh0LionKSBvciB5b3VyIGN1c3RvbQor
IyBvbmVzLgorZXh0ZW5zaW9ucyA9IFsKKyAgICAnc3BoaW54LmV4dC5hdXRvZG9jJywKKyAgICAn
c3BoaW54LmV4dC5pbnRlcnNwaGlueCcsCisgICAgJ3NwaGlueF9hdXRvZG9jX3R5cGVoaW50cycs
CisgICAgJ3NwaGlueGNvbnRyaWIuYXN5bmNpbycsCitdCitpbnRlcnNwaGlueF9tYXBwaW5nID0g
eworICAgICdjcnlwdG9ncmFwaHknOiAoJ2h0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvL2VuL2xhdGVz
dCcsIE5vbmUpLAorICAgICdweXRob24nOiAoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMnLCBO
b25lKSwKK30KKworIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVyZSwg
cmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCit0ZW1wbGF0ZXNfcGF0aCA9IFsnX3RlbXBsYXRl
cyddCisKKyMgVGhlIHN1ZmZpeChlcykgb2Ygc291cmNlIGZpbGVuYW1lcy4KKyMgWW91IGNhbiBz
cGVjaWZ5IG11bHRpcGxlIHN1ZmZpeCBhcyBhIGxpc3Qgb2Ygc3RyaW5nOgorIworIyBzb3VyY2Vf
c3VmZml4ID0gWycucnN0JywgJy5tZCddCitzb3VyY2Vfc3VmZml4ID0gJy5yc3QnCisKKyMgVGhl
IG1hc3RlciB0b2N0cmVlIGRvY3VtZW50LgorbWFzdGVyX2RvYyA9ICdpbmRleCcKKworIyBHZW5l
cmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgorcHJvamVjdCA9ICdhaW9xdWljJwor
Y29weXJpZ2h0ID0gdScyMDE5LCBKZXJlbXkgTGFpbsOpJworYXV0aG9yID0gdSdKZXJlbXkgTGFp
bsOpJworCisjIFRoZSB2ZXJzaW9uIGluZm8gZm9yIHRoZSBwcm9qZWN0IHlvdSdyZSBkb2N1bWVu
dGluZywgYWN0cyBhcyByZXBsYWNlbWVudCBmb3IKKyMgfHZlcnNpb258IGFuZCB8cmVsZWFzZXws
IGFsc28gdXNlZCBpbiB2YXJpb3VzIG90aGVyIHBsYWNlcyB0aHJvdWdob3V0IHRoZQorIyBidWls
dCBkb2N1bWVudHMuCisjCisjIFRoZSBzaG9ydCBYLlkgdmVyc2lvbi4KK3ZlcnNpb24gPSAnJwor
IyBUaGUgZnVsbCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgorcmVsZWFz
ZSA9ICcnCisKKyMgVGhlIGxhbmd1YWdlIGZvciBjb250ZW50IGF1dG9nZW5lcmF0ZWQgYnkgU3Bo
aW54LiBSZWZlciB0byBkb2N1bWVudGF0aW9uCisjIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGxh
bmd1YWdlcy4KKyMKKyMgVGhpcyBpcyBhbHNvIHVzZWQgaWYgeW91IGRvIGNvbnRlbnQgdHJhbnNs
YXRpb24gdmlhIGdldHRleHQgY2F0YWxvZ3MuCisjIFVzdWFsbHkgeW91IHNldCAibGFuZ3VhZ2Ui
IGZyb20gdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlc2UgY2FzZXMuCitsYW5ndWFnZSA9IE5vbmUK
KworIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0b3J5LCB0aGF0
IG1hdGNoIGZpbGVzIGFuZAorIyBkaXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBsb29raW5nIGZv
ciBzb3VyY2UgZmlsZXMuCisjIFRoaXMgcGF0dGVybnMgYWxzbyBlZmZlY3QgdG8gaHRtbF9zdGF0
aWNfcGF0aCBhbmQgaHRtbF9leHRyYV9wYXRoCitleGNsdWRlX3BhdHRlcm5zID0gWydfYnVpbGQn
LCAnVGh1bWJzLmRiJywgJy5EU19TdG9yZSddCisKKyMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRz
IChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1c2UuCitweWdtZW50c19zdHlsZSA9ICdz
cGhpbngnCisKKyMgSWYgdHJ1ZSwgYHRvZG9gIGFuZCBgdG9kb0xpc3RgIHByb2R1Y2Ugb3V0cHV0
LCBlbHNlIHRoZXkgcHJvZHVjZSBub3RoaW5nLgordG9kb19pbmNsdWRlX3RvZG9zID0gRmFsc2UK
KworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUwgb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgdGhlbWUgdG8gdXNlIGZvciBIVE1MIGFu
ZCBIVE1MIEhlbHAgcGFnZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCisjIGEgbGlzdCBv
ZiBidWlsdGluIHRoZW1lcy4KKyMKK2h0bWxfdGhlbWUgPSAnYWxhYmFzdGVyJworCisjIFRoZW1l
IG9wdGlvbnMgYXJlIHRoZW1lLXNwZWNpZmljIGFuZCBjdXN0b21pemUgdGhlIGxvb2sgYW5kIGZl
ZWwgb2YgYSB0aGVtZQorIyBmdXJ0aGVyLiAgRm9yIGEgbGlzdCBvZiBvcHRpb25zIGF2YWlsYWJs
ZSBmb3IgZWFjaCB0aGVtZSwgc2VlIHRoZQorIyBkb2N1bWVudGF0aW9uLgorIworaHRtbF90aGVt
ZV9vcHRpb25zID0geworICAgICdkZXNjcmlwdGlvbic6ICdBIGxpYnJhcnkgZm9yIFFVSUMgaW4g
UHl0aG9uLicsCisgICAgJ2dpdGh1Yl9idXR0b24nOiBUcnVlLAorICAgICdnaXRodWJfdXNlcic6
ICdhaW9ydGMnLAorICAgICdnaXRodWJfcmVwbyc6ICdhaW9xdWljJywKK30KKworIyBBZGQgYW55
IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFzIHN0eWxlIHNo
ZWV0cykgaGVyZSwKKyMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkgYXJlIGNvcGll
ZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCisjIHNvIGEgZmlsZSBuYW1lZCAiZGVm
YXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBidWlsdGluICJkZWZhdWx0LmNzcyIuCitodG1s
X3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KKworIyBDdXN0b20gc2lkZWJhciB0ZW1wbGF0ZXMs
IG11c3QgYmUgYSBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBkb2N1bWVudCBuYW1lcworIyB0byB0ZW1w
bGF0ZSBuYW1lcy4KKyMKKyMgVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGFsYWJhc3RlciB0aGVt
ZQorIyByZWZzOiBodHRwOi8vYWxhYmFzdGVyLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9pbnN0
YWxsYXRpb24uaHRtbCNzaWRlYmFycworaHRtbF9zaWRlYmFycyA9IHsKKyAgICAnKionOiBbCisg
ICAgICAgICdhYm91dC5odG1sJywKKyAgICAgICAgJ25hdmlnYXRpb24uaHRtbCcsCisgICAgICAg
ICdyZWxhdGlvbnMuaHRtbCcsCisgICAgICAgICdzZWFyY2hib3guaHRtbCcsCisgICAgXQorfQor
CisKKyMgLS0gT3B0aW9ucyBmb3IgSFRNTEhlbHAgb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIE91dHB1dCBmaWxlIGJhc2UgbmFtZSBmb3IgSFRN
TCBoZWxwIGJ1aWxkZXIuCitodG1saGVscF9iYXNlbmFtZSA9ICdhaW9xdWljZG9jJworCisKKyMg
LS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitsYXRleF9lbGVtZW50cyA9IHsKKyAgICAjIFRoZSBwYXBlciBz
aXplICgnbGV0dGVycGFwZXInIG9yICdhNHBhcGVyJykuCisgICAgIworICAgICMgJ3BhcGVyc2l6
ZSc6ICdsZXR0ZXJwYXBlcicsCisKKyAgICAjIFRoZSBmb250IHNpemUgKCcxMHB0JywgJzExcHQn
IG9yICcxMnB0JykuCisgICAgIworICAgICMgJ3BvaW50c2l6ZSc6ICcxMHB0JywKKworICAgICMg
QWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgorICAgICMKKyAgICAjICdw
cmVhbWJsZSc6ICcnLAorCisgICAgIyBMYXRleCBmaWd1cmUgKGZsb2F0KSBhbGlnbm1lbnQKKyAg
ICAjCisgICAgIyAnZmlndXJlX2FsaWduJzogJ2h0YnAnLAorfQorCisjIEdyb3VwaW5nIHRoZSBk
b2N1bWVudCB0cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ug
c3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLAorIyAgYXV0aG9yLCBkb2N1bWVudGNsYXNz
IFtob3d0bywgbWFudWFsLCBvciBvd24gY2xhc3NdKS4KK2xhdGV4X2RvY3VtZW50cyA9IFsKKyAg
ICAobWFzdGVyX2RvYywgJ2Fpb3F1aWMudGV4JywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisg
ICAgIGF1dGhvciwgJ21hbnVhbCcpLAorXQorCisKKyMgLS0gT3B0aW9ucyBmb3IgbWFudWFsIHBh
Z2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIE9u
ZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3RhcnQg
ZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVhbCBzZWN0aW9uKS4KK21hbl9w
YWdlcyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2Fpb3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0
aW9uJywKKyAgICAgW2F1dGhvcl0sIDEpCitdCisKKworIyAtLSBPcHRpb25zIGZvciBUZXhpbmZv
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMg
R3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBUZXhpbmZvIGZpbGVzLiBMaXN0IG9mIHR1
cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLAor
IyAgZGlyIG1lbnUgZW50cnksIGRlc2NyaXB0aW9uLCBjYXRlZ29yeSkKK3RleGluZm9fZG9jdW1l
bnRzID0gWworICAgIChtYXN0ZXJfZG9jLCAnYWlvcXVpYycsICdhaW9xdWljIERvY3VtZW50YXRp
b24nLAorICAgICBhdXRob3IsICdhaW9xdWljJywgJ09uZSBsaW5lIGRlc2NyaXB0aW9uIG9mIHBy
b2plY3QuJywKKyAgICAgJ01pc2NlbGxhbmVvdXMnKSwKK10KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9kb2NzL2Rlc2lnbi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc1MjllNzYyZjVhNjM0ZTJhMzU3OTFlNDY1YjkwNDliYTRiZTYyMTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0CkBAIC0wLDAgKzEsMzcgQEAK
K0Rlc2lnbgorPT09PT09CisKK1NhbnMtSU8gQVBJcworLi4uLi4uLi4uLi4uCisKK0JvdGggdGhl
IFFVSUMgYW5kIHRoZSBIVFRQLzMgQVBJcyBmb2xsb3cgdGhlIGBzYW5zIEkvT2BfIHBhdHRlcm4s
IGxlYXZpbmcKK2FjdHVhbCBJL08gb3BlcmF0aW9ucyB0byB0aGUgQVBJIHVzZXIuIFRoaXMgYXBw
cm9hY2ggaGFzIGEgbnVtYmVyIG9mCithZHZhbnRhZ2VzIGluY2x1ZGluZyBtYWtpbmcgdGhlIGNv
ZGUgdGVzdGFibGUgYW5kIGFsbG93aW5nIGludGVncmF0aW9uIHdpdGgKK2RpZmZlcmVudCBjb25j
dXJyZW5jeSBtb2RlbHMuCisKK1RMUyBhbmQgZW5jcnlwdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4u
CisKK1RMUyAxLjMKKysrKysrKysKKworYGBhaW9xdWljYGAgZmVhdHVyZXMgYSBtaW5pbWFsIFRM
UyAxLjMgaW1wbGVtZW50YXRpb24gYnVpbHQgdXBvbiB0aGUKK2BjcnlwdG9ncmFwaHlgXyBsaWJy
YXJ5LiBUaGlzIGlzIGJlY2F1c2UgUVVJQyByZXF1aXJlcyBzb21lIEFQSXMgd2hpY2ggYXJlCitj
dXJyZW50bHkgdW5hdmFpbGFibGUgaW4gbWFpbnN0cmVhbSBUTFMgaW1wbGVtZW50YXRpb25zIHN1
Y2ggYXMgT3BlblNTTDoKKworLSB0aGUgYWJpbGl0eSB0byBleHRyYWN0IHRyYWZmaWMgc2VjcmV0
cworCistIHRoZSBhYmlsaXR5IHRvIG9wZXJhdGUgZGlyZWN0bHkgb24gVExTIG1lc3NhZ2VzLCB3
aXRob3V0IHVzaW5nIHRoZSBUTFMKKyAgcmVjb3JkIGxheWVyCisKK0hlYWRlciBwcm90ZWN0aW9u
IGFuZCBwYXlsb2FkIGVuY3J5cHRpb24KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKKworUVVJQyBtYWtlcyBleHRlbnNpdmUgdXNlIG9mIGNyeXB0b2dyYXBoaWMgb3Bl
cmF0aW9ucyB0byBwcm90ZWN0IFFVSUMgcGFja2V0CitoZWFkZXJzIGFuZCBlbmNyeXB0IHBhY2tl
dCBwYXlsb2Fkcy4gVGhlc2Ugb3BlcmF0aW9ucyBvY2N1ciBmb3IgZXZlcnkgc2luZ2xlCitwYWNr
ZXQgYW5kIGFyZSBhIGRldGVybWluaW5nIGZhY3RvciBmb3IgcGVyZm9ybWFuY2UuIEZvciB0aGlz
IHJlYXNvbiwgdGhleQorYXJlIGltcGxlbWVudGVkIGFzIGEgQyBleHRlbnNpb24gbGlua2VkIHRv
IGBPcGVuU1NMYF8uCisKKy4uIF9zYW5zIEkvTzogaHR0cHM6Ly9zYW5zLWlvLnJlYWR0aGVkb2Nz
LmlvLworLi4gX2NyeXB0b2dyYXBoeTogaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfT3Bl
blNTTDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZG9jcy9oMy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBlMjIw
MWM0M2Q0NmIwY2JiMmJhYzI4ZGZjZjU5MjBhMDEyOTE1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9kb2NzL2gzLnJzdApAQCAtMCwwICsxLDQ0IEBACitIVFRQLzMgQVBJCis9PT09
PT09PT09CisKK1RoZSBIVFRQLzMgQVBJIHBlcmZvcm1zIG5vIEkvTyBvbiBpdHMgb3duLCBsZWF2
aW5nIHRoaXMgdG8gdGhlIEFQSSB1c2VyLgorVGhpcyBhbGxvd3MgeW91IHRvIGludGVncmF0ZSBI
VFRQLzMgaW4gYW55IFB5dGhvbiBhcHBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZgordGhlIGNvbmN1
cnJlbmN5IG1vZGVsIHlvdSBhcmUgdXNpbmcuCisKK0Nvbm5lY3Rpb24KKy0tLS0tLS0tLS0KKwor
Li4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMuY29ubmVjdGlvbgorCisgICAgLi4gYXV0b2NsYXNz
OjogSDNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0V2ZW50cworLS0tLS0tCisK
Ky4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmV2ZW50cworCisgICAgLi4gYXV0b2NsYXNzOjog
SDNFdmVudAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IERhdGFSZWNl
aXZlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IEhlYWRlcnNSZWNl
aXZlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IFB1c2hQcm9taXNl
UmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKworRXhjZXB0aW9ucworLS0tLS0tLS0tLQor
CisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5leGNlcHRpb25zCisKKyAgICAuLiBhdXRvY2xh
c3M6OiBIM0Vycm9yCisgICAgICAgIDptZW1iZXJzOgorCisgICAgLi4gYXV0b2NsYXNzOjogTm9B
dmFpbGFibGVQdXNoSURFcnJvcgorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yODQxNTYxYTIyNDA0MGJjMWE4YWNlMjY2YWQwMTU2OGY2ODQxN2E0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0CkBAIC0wLDAgKzEsMzkgQEAK
K2Fpb3F1aWMKKz09PT09PT0KKworfHB5cGktdnwgfHB5cGktcHl2ZXJzaW9uc3wgfHB5cGktbHwg
fHRlc3RzfCB8Y29kZWNvdnwKKworLi4gfHB5cGktdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGll
bGRzLmlvL3B5cGkvdi9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8cHlwaS1weXZlcnNpb25zfCBpbWFnZTo6IGh0dHBz
Oi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdl
dDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9xdWljCisKKy4uIHxweXBpLWx8IGlt
YWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvYWlvcXVpYy5zdmcKKyAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHRlc3RzfCBp
bWFnZTo6IGh0dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy93b3JrZmxvd3MvdGVzdHMv
YmFkZ2Uuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWlj
L2FjdGlvbnMKKworLi4gfGNvZGVjb3Z8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9j
b2RlY292L2MvZ2l0aHViL2Fpb3J0Yy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8v
Y29kZWNvdi5pby9naC9haW9ydGMvYWlvcXVpYworCitgYGFpb3F1aWNgYCBpcyBhIGxpYnJhcnkg
Zm9yIHRoZSBRVUlDIG5ldHdvcmsgcHJvdG9jb2wgaW4gUHl0aG9uLiBJdCBmZWF0dXJlcyBzZXZl
cmFsCitBUElzOgorCistIGEgUVVJQyBBUEkgZm9sbG93aW5nIHRoZSAiYnJpbmcgeW91ciBvd24g
SS9PIiBwYXR0ZXJuLCBzdWl0YWJsZSBmb3IKKyAgZW1iZWRkaW5nIGluIGFueSBmcmFtZXdvcmss
CisKKy0gYW4gSFRUUC8zIEFQSSB3aGljaCBhbHNvIGZvbGxvd3MgdGhlICJicmluZyB5b3VyIG93
biBJL08iIHBhdHRlcm4sCisKKy0gYSBRVUlDIGNvbnZlbmllbmNlIEFQSSBidWlsdCBvbiB0b3Ag
b2YgOm1vZDpgYXN5bmNpb2AsIFB5dGhvbidzIHN0YW5kYXJkIGFzeW5jaHJvbm91cworICBJL08g
ZnJhbWV3b3JrLgorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMgorCisgICBkZXNpZ24K
KyAgIHF1aWMKKyAgIGgzCisgICBhc3luY2lvCisgICBsaWNlbnNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2UucnN0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0MmQzYjA3ZmM5M2Y2NDdmM2ZkMDhlNjViNGI0ZmFkZGNmMzNhZmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApAQCAtMCwwICsx
LDQgQEAKK0xpY2Vuc2UKKy0tLS0tLS0KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9MSUNFTlNF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9k
b2NzL3F1aWMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwZWJlZmI0OWQ1MTRhNDUxNWMyMjNjZGM4NDM2OWNk
MTZhMTJiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApA
QCAtMCwwICsxLDUxIEBACitRVUlDIEFQSQorPT09PT09PT0KKworVGhlIFFVSUMgQVBJIHBlcmZv
cm1zIG5vIEkvTyBvbiBpdHMgb3duLCBsZWF2aW5nIHRoaXMgdG8gdGhlIEFQSSB1c2VyLgorVGhp
cyBhbGxvd3MgeW91IHRvIGludGVncmF0ZSBRVUlDIGluIGFueSBQeXRob24gYXBwbGljYXRpb24s
IHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3UgYXJlIHVzaW5nLgorCitD
b25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuY29u
bmVjdGlvbgorCisgICAgLi4gYXV0b2NsYXNzOjogUXVpY0Nvbm5lY3Rpb24KKyAgICAgICAgOm1l
bWJlcnM6CisKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCisuLiBhdXRvbW9kdWxl
OjogYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24KKworICAgIC4uIGF1dG9jbGFzczo6IFF1aWND
b25maWd1cmF0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVp
Yy5xdWljLmxvZ2dlcgorCisgICAgLi4gYXV0b2NsYXNzOjogUXVpY0xvZ2dlcgorICAgICAgICA6
bWVtYmVyczoKKworRXZlbnRzCistLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVp
Yy5ldmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IFF1aWNFdmVudAorICAgICAgICA6bWVtYmVy
czoKKworICAgIC4uIGF1dG9jbGFzczo6IENvbm5lY3Rpb25UZXJtaW5hdGVkCisgICAgICAgIDpt
ZW1iZXJzOgorCisgICAgLi4gYXV0b2NsYXNzOjogSGFuZHNoYWtlQ29tcGxldGVkCisgICAgICAg
IDptZW1iZXJzOgorCisgICAgLi4gYXV0b2NsYXNzOjogUGluZ0Fja25vd2xlZGdlZAorICAgICAg
ICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IFN0cmVhbURhdGFSZWNlaXZlZAorICAg
ICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6IFN0cmVhbVJlc2V0CisgICAgICAg
IDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODBlNzk5OTA0
M2QyOTc0MWExMzQ5MTY2NzhkNTQwNDk5MmE5NzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyNCBAQAorVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitE
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWlj
LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvZGVtby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDRmOTc1MmYxNGM3OTdmNDI5Mjc3
Mzc5ZDA3NmRkNTZhY2U5MjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1w
bGVzL2RlbW8ucHkKQEAgLTAsMCArMSwxMDkgQEAKKyMKKyMgZGVtbyBhcHBsaWNhdGlvbiBmb3Ig
aHR0cDNfc2VydmVyLnB5CisjCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IG9zCitmcm9tIHVy
bGxpYi5wYXJzZSBpbXBvcnQgdXJsZW5jb2RlCisKK2ltcG9ydCBodHRwYmluCitmcm9tIGFzZ2ly
ZWYud3NnaSBpbXBvcnQgV3NnaVRvQXNnaQorZnJvbSBzdGFybGV0dGUuYXBwbGljYXRpb25zIGlt
cG9ydCBTdGFybGV0dGUKK2Zyb20gc3RhcmxldHRlLnJlc3BvbnNlcyBpbXBvcnQgUGxhaW5UZXh0
UmVzcG9uc2UsIFJlc3BvbnNlCitmcm9tIHN0YXJsZXR0ZS5zdGF0aWNmaWxlcyBpbXBvcnQgU3Rh
dGljRmlsZXMKK2Zyb20gc3RhcmxldHRlLnRlbXBsYXRpbmcgaW1wb3J0IEppbmphMlRlbXBsYXRl
cworZnJvbSBzdGFybGV0dGUud2Vic29ja2V0cyBpbXBvcnQgV2ViU29ja2V0RGlzY29ubmVjdAor
CitST09UID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorU1RBVElDX1JPT1QgPSBvcy5lbnZp
cm9uLmdldCgiU1RBVElDX1JPT1QiLCBvcy5wYXRoLmpvaW4oUk9PVCwgImh0ZG9jcyIpKQorU1RB
VElDX1VSTCA9ICIvIgorTE9HU19QQVRIID0gb3MucGF0aC5qb2luKFNUQVRJQ19ST09ULCAibG9n
cyIpCitRVklTX1VSTCA9ICJodHRwczovL3F2aXMuZWRtLnVoYXNzZWx0LmJlLyIKKwordGVtcGxh
dGVzID0gSmluamEyVGVtcGxhdGVzKGRpcmVjdG9yeT1vcy5wYXRoLmpvaW4oUk9PVCwgInRlbXBs
YXRlcyIpKQorYXBwID0gU3RhcmxldHRlKCkKKworCitAYXBwLnJvdXRlKCIvIikKK2FzeW5jIGRl
ZiBob21lcGFnZShyZXF1ZXN0KToKKyAgICAiIiIKKyAgICBTaW1wbGUgaG9tZXBhZ2UuCisgICAg
IiIiCisgICAgYXdhaXQgcmVxdWVzdC5zZW5kX3B1c2hfcHJvbWlzZSgiL3N0eWxlLmNzcyIpCisg
ICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKCJpbmRleC5odG1sIiwgeyJyZXF1
ZXN0IjogcmVxdWVzdH0pCisKKworQGFwcC5yb3V0ZSgiL2VjaG8iLCBtZXRob2RzPVsiUE9TVCJd
KQorYXN5bmMgZGVmIGVjaG8ocmVxdWVzdCk6CisgICAgIiIiCisgICAgSFRUUCBlY2hvIGVuZHBv
aW50LgorICAgICIiIgorICAgIGNvbnRlbnQgPSBhd2FpdCByZXF1ZXN0LmJvZHkoKQorICAgIG1l
ZGlhX3R5cGUgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKQorICAgIHJldHVy
biBSZXNwb25zZShjb250ZW50LCBtZWRpYV90eXBlPW1lZGlhX3R5cGUpCisKKworQGFwcC5yb3V0
ZSgiL2xvZ3MvPyIpCithc3luYyBkZWYgbG9ncyhyZXF1ZXN0KToKKyAgICAiIiIKKyAgICBCcm93
c2FibGUgbGlzdCBvZiBRTE9HIGZpbGVzLgorICAgICIiIgorICAgIGxvZ3MgPSBbXQorICAgIGZv
ciBuYW1lIGluIG9zLmxpc3RkaXIoTE9HU19QQVRIKToKKyAgICAgICAgaWYgbmFtZS5lbmRzd2l0
aCgiLnFsb2ciKToKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KG9zLnBhdGguam9pbihMT0dTX1BB
VEgsIG5hbWUpKQorICAgICAgICAgICAgZmlsZV91cmwgPSAiaHR0cHM6Ly8iICsgcmVxdWVzdC5o
ZWFkZXJzWyJob3N0Il0gKyAiL2xvZ3MvIiArIG5hbWUKKyAgICAgICAgICAgIGxvZ3MuYXBwZW5k
KAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImRhdGUiOiBkYXRldGlt
ZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHMuc3RfbXRpbWUpLnN0cmZ0aW1lKAorICAgICAg
ICAgICAgICAgICAgICAgICAgIiVZLSVtLSVkICVIOiVNOiVTIgorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICAiZmlsZV91cmwiOiBmaWxlX3VybCwKKyAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiBuYW1lWzotNV0sCisgICAgICAgICAgICAgICAgICAgICJxdmlz
X3VybCI6IFFWSVNfVVJMCisgICAgICAgICAgICAgICAgICAgICsgIj8iCisgICAgICAgICAgICAg
ICAgICAgICsgdXJsZW5jb2RlKHsiZmlsZSI6IGZpbGVfdXJsfSkKKyAgICAgICAgICAgICAgICAg
ICAgKyAiIy9zZXF1ZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICJzaXplIjogcy5zdF9zaXpl
LAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkKKyAgICByZXR1cm4gdGVtcGxhdGVz
LlRlbXBsYXRlUmVzcG9uc2UoCisgICAgICAgICJsb2dzLmh0bWwiLAorICAgICAgICB7CisgICAg
ICAgICAgICAibG9ncyI6IHNvcnRlZChsb2dzLCBrZXk9bGFtYmRhIHg6IHhbImRhdGUiXSwgcmV2
ZXJzZT1UcnVlKSwKKyAgICAgICAgICAgICJyZXF1ZXN0IjogcmVxdWVzdCwKKyAgICAgICAgfSwK
KyAgICApCisKKworQGFwcC5yb3V0ZSgiL3tzaXplOmludH0iKQorZGVmIHBhZGRpbmcocmVxdWVz
dCk6CisgICAgIiIiCisgICAgRHluYW1pY2FsbHkgZ2VuZXJhdGVkIGRhdGEsIG1heGltdW0gNTBN
Qi4KKyAgICAiIiIKKyAgICBzaXplID0gbWluKDUwMDAwMDAwLCByZXF1ZXN0LnBhdGhfcGFyYW1z
WyJzaXplIl0pCisgICAgcmV0dXJuIFBsYWluVGV4dFJlc3BvbnNlKCJaIiAqIHNpemUpCisKKwor
QGFwcC53ZWJzb2NrZXRfcm91dGUoIi93cyIpCithc3luYyBkZWYgd3Mod2Vic29ja2V0KToKKyAg
ICAiIiIKKyAgICBXZWJTb2NrZXQgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAgICBpZiAiY2hh
dCIgaW4gd2Vic29ja2V0LnNjb3BlWyJzdWJwcm90b2NvbHMiXToKKyAgICAgICAgc3VicHJvdG9j
b2wgPSAiY2hhdCIKKyAgICBlbHNlOgorICAgICAgICBzdWJwcm90b2NvbCA9IE5vbmUKKyAgICBh
d2FpdCB3ZWJzb2NrZXQuYWNjZXB0KHN1YnByb3RvY29sPXN1YnByb3RvY29sKQorCisgICAgdHJ5
OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHdlYnNv
Y2tldC5yZWNlaXZlX3RleHQoKQorICAgICAgICAgICAgYXdhaXQgd2Vic29ja2V0LnNlbmRfdGV4
dChtZXNzYWdlKQorICAgIGV4Y2VwdCBXZWJTb2NrZXREaXNjb25uZWN0OgorICAgICAgICBwYXNz
CisKKworYXBwLm1vdW50KCIvaHR0cGJpbiIsIFdzZ2lUb0FzZ2koaHR0cGJpbi5hcHApKQorCith
cHAubW91bnQoU1RBVElDX1VSTCwgU3RhdGljRmlsZXMoZGlyZWN0b3J5PVNUQVRJQ19ST09ULCBo
dG1sPVRydWUpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9yb2Jv
dHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9yb2JvdHMudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUxYWEwYmRlYWFjZTYzNzJhN2ViMTMwMTBmZDE2NjZjNjU1NDY4NjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3JvYm90cy50eHQKQEAgLTAsMCAr
MSwyIEBACitVc2VyLWFnZW50OiAqCitEaXNhbGxvdzogL2xvZ3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L2h0ZG9jcy9zdHlsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1MjNkYjhhZDhkMTZmNzUyNjBjNTgxN2Fi
NDhlODllMjFlYmJkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9o
dGRvY3Mvc3R5bGUuY3NzCkBAIC0wLDAgKzEsMTAgQEAKK2JvZHkgeworICAgIGZvbnQtZmFtaWx5
OiBBcmlhbCwgc2Fucy1zZXJpZjsKKyAgICBmb250LXNpemU6IDE2cHg7CisgICAgbWFyZ2luOiAw
IGF1dG87CisgICAgd2lkdGg6IDQwZW07Cit9CisKK3RhYmxlLmxvZ3MgeworICAgIHdpZHRoOiAx
MDAlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzY2ODIwZGYwZGY4MDljN2M5ODk5MjdhOGI4YjMyOGUwNDk1NmZmNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cK
QEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAor
CitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9y
b2JvdHMudHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9zdHlsZS5jc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19jbGllbnQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhODg4YTM2ZWE3ZWJhMjdm
MzZhNWRkNDBiMGM3NmEwNDI0OWRjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5CkBAIC0wLDAgKzEsNDU1IEBACitpbXBvcnQgYXJncGFy
c2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBv
cworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNzbAoraW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlv
bnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIERlcXVlLCBEaWN0
LCBMaXN0LCBPcHRpb25hbCwgVW5pb24sIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1
cmxwYXJzZQorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8uZXZlbnRzCisKK2ltcG9y
dCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zy
b20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29s
Citmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwgSDBDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuY29ubmVjdGlvbiBpbXBvcnQgSDNfQUxQTiwgSDNDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0YVJlY2VpdmVkLAorICAg
IEgzRXZlbnQsCisgICAgSGVhZGVyc1JlY2VpdmVkLAorICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQs
CispCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJh
dGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZlbnQKK2Zyb20gYWlv
cXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJvbSBhaW9xdWljLnRscyBpbXBv
cnQgU2Vzc2lvblRpY2tldAorCit0cnk6CisgICAgaW1wb3J0IHV2bG9vcAorZXhjZXB0IEltcG9y
dEVycm9yOgorICAgIHV2bG9vcCA9IE5vbmUKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIo
ImNsaWVudCIpCisKK0h0dHBDb25uZWN0aW9uID0gVW5pb25bSDBDb25uZWN0aW9uLCBIM0Nvbm5l
Y3Rpb25dCisKK1VTRVJfQUdFTlQgPSAiYWlvcXVpYy8iICsgYWlvcXVpYy5fX3ZlcnNpb25fXwor
CisKK2NsYXNzIFVSTDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsOiBzdHIpIC0+IE5vbmU6
CisgICAgICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKworICAgICAgICBzZWxmLmF1dGhvcml0
eSA9IHBhcnNlZC5uZXRsb2MKKyAgICAgICAgc2VsZi5mdWxsX3BhdGggPSBwYXJzZWQucGF0aAor
ICAgICAgICBpZiBwYXJzZWQucXVlcnk6CisgICAgICAgICAgICBzZWxmLmZ1bGxfcGF0aCArPSAi
PyIgKyBwYXJzZWQucXVlcnkKKyAgICAgICAgc2VsZi5zY2hlbWUgPSBwYXJzZWQuc2NoZW1lCisK
KworY2xhc3MgSHR0cFJlcXVlc3Q6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBt
ZXRob2Q6IHN0ciwgdXJsOiBVUkwsIGNvbnRlbnQ6IGJ5dGVzID0gYiIiLCBoZWFkZXJzOiBEaWN0
ID0ge30KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuY29udGVudCA9IGNvbnRlbnQKKyAg
ICAgICAgc2VsZi5oZWFkZXJzID0gaGVhZGVycworICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhv
ZAorICAgICAgICBzZWxmLnVybCA9IHVybAorCisKK2NsYXNzIFdlYlNvY2tldDoKKyAgICBkZWYg
X19pbml0X18oCisgICAgICAgIHNlbGYsIGh0dHA6IEh0dHBDb25uZWN0aW9uLCBzdHJlYW1faWQ6
IGludCwgdHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXQorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5odHRwID0gaHR0cAorICAgICAgICBzZWxmLnF1ZXVlOiBhc3luY2lvLlF1ZXVlW3N0
cl0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQK
KyAgICAgICAgc2VsZi5zdWJwcm90b2NvbDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAgICAg
c2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYud2Vic29ja2V0ID0gd3Nwcm90
by5Db25uZWN0aW9uKHdzcHJvdG8uQ29ubmVjdGlvblR5cGUuQ0xJRU5UKQorCisgICAgYXN5bmMg
ZGVmIGNsb3NlKHNlbGYsIGNvZGU9MTAwMCwgcmVhc29uPSIiKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgUGVyZm9ybSB0aGUgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgICIiIgor
ICAgICAgICBkYXRhID0gc2VsZi53ZWJzb2NrZXQuc2VuZCgKKyAgICAgICAgICAgIHdzcHJvdG8u
ZXZlbnRzLkNsb3NlQ29ubmVjdGlvbihjb2RlPWNvZGUsIHJlYXNvbj1yZWFzb24pCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5odHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQs
IGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1UcnVlKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKwor
ICAgIGFzeW5jIGRlZiByZWN2KHNlbGYpIC0+IHN0cjoKKyAgICAgICAgIiIiCisgICAgICAgIFJl
Y2VpdmUgdGhlIG5leHQgbWVzc2FnZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBhd2Fp
dCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxmLCBtZXNzYWdlOiBz
dHIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEgbWVzc2FnZS4KKyAgICAg
ICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1lc3NhZ2UsIHN0cikKKworICAgICAg
ICBkYXRhID0gc2VsZi53ZWJzb2NrZXQuc2VuZCh3c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShk
YXRhPW1lc3NhZ2UpKQorICAgICAgICBzZWxmLmh0dHAuc2VuZF9kYXRhKHN0cmVhbV9pZD1zZWxm
LnN0cmVhbV9pZCwgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICBzZWxmLnRy
YW5zbWl0KCkKKworICAgIGRlZiBodHRwX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBIM0V2
ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBIZWFkZXJzUmVjZWl2
ZWQpOgorICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAg
ICAgICAgICAgICAgICBpZiBoZWFkZXIgPT0gYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIjoKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zdWJwcm90b2NvbCA9IHZhbHVlLmRlY29kZSgpCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIHNl
bGYud2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAgIGZvciB3c19l
dmVudCBpbiBzZWxmLndlYnNvY2tldC5ldmVudHMoKToKKyAgICAgICAgICAgIHNlbGYud2Vic29j
a2V0X2V2ZW50X3JlY2VpdmVkKHdzX2V2ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9y
ZWNlaXZlZChzZWxmLCBldmVudDogd3Nwcm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAg
ICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdChldmVudC5kYXRhKQorCisKK2NsYXNzIEh0
dHBDbGllbnQoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICphcmdzLCAqKmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJn
cywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5wdXNoZXM6IERpY3RbaW50LCBEZXF1ZVtIM0V2
ZW50XV0gPSB7fQorICAgICAgICBzZWxmLl9odHRwOiBPcHRpb25hbFtIdHRwQ29ubmVjdGlvbl0g
PSBOb25lCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRzOiBEaWN0W2ludCwgRGVxdWVbSDNF
dmVudF1dID0ge30KKyAgICAgICAgc2VsZi5fcmVxdWVzdF93YWl0ZXI6IERpY3RbaW50LCBhc3lu
Y2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KKyAgICAgICAgc2VsZi5fd2Vic29ja2V0
czogRGljdFtpbnQsIFdlYlNvY2tldF0gPSB7fQorCisgICAgICAgIGlmIHNlbGYuX3F1aWMuY29u
ZmlndXJhdGlvbi5hbHBuX3Byb3RvY29sc1swXS5zdGFydHN3aXRoKCJocS0iKToKKyAgICAgICAg
ICAgIHNlbGYuX2h0dHAgPSBIMENvbm5lY3Rpb24oc2VsZi5fcXVpYykKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuX2h0dHAgPSBIM0Nvbm5lY3Rpb24oc2VsZi5fcXVpYykKKworICAg
IGFzeW5jIGRlZiBnZXQoc2VsZiwgdXJsOiBzdHIsIGhlYWRlcnM6IERpY3QgPSB7fSkgLT4gRGVx
dWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIGEgR0VUIHJlcXVlc3Qu
CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcmVxdWVzdCgKKyAgICAg
ICAgICAgIEh0dHBSZXF1ZXN0KG1ldGhvZD0iR0VUIiwgdXJsPVVSTCh1cmwpLCBoZWFkZXJzPWhl
YWRlcnMpCisgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBwb3N0KHNlbGYsIHVybDogc3RyLCBk
YXRhOiBieXRlcywgaGVhZGVyczogRGljdCA9IHt9KSAtPiBEZXF1ZVtIM0V2ZW50XToKKyAgICAg
ICAgIiIiCisgICAgICAgIFBlcmZvcm0gYSBQT1NUIHJlcXVlc3QuCisgICAgICAgICIiIgorICAg
ICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcmVxdWVzdCgKKyAgICAgICAgICAgIEh0dHBSZXF1ZXN0
KG1ldGhvZD0iUE9TVCIsIHVybD1VUkwodXJsKSwgY29udGVudD1kYXRhLCBoZWFkZXJzPWhlYWRl
cnMpCisgICAgICAgICkKKworICAgIGFzeW5jIGRlZiB3ZWJzb2NrZXQoc2VsZiwgdXJsOiBzdHIs
IHN1YnByb3RvY29sczogTGlzdFtzdHJdID0gW10pIC0+IFdlYlNvY2tldDoKKyAgICAgICAgIiIi
CisgICAgICAgIE9wZW4gYSBXZWJTb2NrZXQuCisgICAgICAgICIiIgorICAgICAgICByZXF1ZXN0
ID0gSHR0cFJlcXVlc3QobWV0aG9kPSJDT05ORUNUIiwgdXJsPVVSTCh1cmwpKQorICAgICAgICBz
dHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAg
ICAgICB3ZWJzb2NrZXQgPSBXZWJTb2NrZXQoCisgICAgICAgICAgICBodHRwPXNlbGYuX2h0dHAs
IHN0cmVhbV9pZD1zdHJlYW1faWQsIHRyYW5zbWl0PXNlbGYudHJhbnNtaXQKKyAgICAgICAgKQor
CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHNbc3RyZWFtX2lkXSA9IHdlYnNvY2tldAorCisgICAg
ICAgIGhlYWRlcnMgPSBbCisgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJDT05ORUNUIiksCisg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIHJlcXVlc3QudXJsLmF1dGhvcml0eS5lbmNvZGUoKSksCisgICAgICAgICAgICAoYiI6
cGF0aCIsIHJlcXVlc3QudXJsLmZ1bGxfcGF0aC5lbmNvZGUoKSksCisgICAgICAgICAgICAoYiI6
cHJvdG9jb2wiLCBiIndlYnNvY2tldCIpLAorICAgICAgICAgICAgKGIidXNlci1hZ2VudCIsIFVT
RVJfQUdFTlQuZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIic2VjLXdlYnNvY2tldC12ZXJzaW9u
IiwgYiIxMyIpLAorICAgICAgICBdCisgICAgICAgIGlmIHN1YnByb3RvY29sczoKKyAgICAgICAg
ICAgIGhlYWRlcnMuYXBwZW5kKAorICAgICAgICAgICAgICAgIChiInNlYy13ZWJzb2NrZXQtcHJv
dG9jb2wiLCAiLCAiLmpvaW4oc3VicHJvdG9jb2xzKS5lbmNvZGUoKSkKKyAgICAgICAgICAgICkK
KyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2hlYWRlcnMoc3RyZWFtX2lkPXN0cmVhbV9pZCwgaGVh
ZGVycz1oZWFkZXJzKQorCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgICAgIHJldHVy
biB3ZWJzb2NrZXQKKworICAgIGRlZiBodHRwX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBI
M0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCAoSGVhZGVyc1Jl
Y2VpdmVkLCBEYXRhUmVjZWl2ZWQpKToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0
cmVhbV9pZAorICAgICAgICAgICAgaWYgc3RyZWFtX2lkIGluIHNlbGYuX3JlcXVlc3RfZXZlbnRz
OgorICAgICAgICAgICAgICAgICMgaHR0cAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Rf
ZXZlbnRzW2V2ZW50LnN0cmVhbV9pZF0uYXBwZW5kKGV2ZW50KQorICAgICAgICAgICAgICAgIGlm
IGV2ZW50LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIg
PSBzZWxmLl9yZXF1ZXN0X3dhaXRlci5wb3Aoc3RyZWFtX2lkKQorICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0X3dhaXRlci5zZXRfcmVzdWx0KHNlbGYuX3JlcXVlc3RfZXZlbnRzLnBvcChzdHJl
YW1faWQpKQorCisgICAgICAgICAgICBlbGlmIHN0cmVhbV9pZCBpbiBzZWxmLl93ZWJzb2NrZXRz
OgorICAgICAgICAgICAgICAgICMgd2Vic29ja2V0CisgICAgICAgICAgICAgICAgd2Vic29ja2V0
ID0gc2VsZi5fd2Vic29ja2V0c1tzdHJlYW1faWRdCisgICAgICAgICAgICAgICAgd2Vic29ja2V0
Lmh0dHBfZXZlbnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICAgICAgICAgIGVsaWYgZXZlbnQucHVz
aF9pZCBpbiBzZWxmLnB1c2hlczoKKyAgICAgICAgICAgICAgICAjIHB1c2gKKyAgICAgICAgICAg
ICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXS5hcHBlbmQoZXZlbnQpCisKKyAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBQdXNoUHJvbWlzZVJlY2VpdmVkKToKKyAgICAgICAgICAg
IHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdID0gZGVxdWUoKQorICAgICAgICAgICAgc2VsZi5w
dXNoZXNbZXZlbnQucHVzaF9pZF0uYXBwZW5kKGV2ZW50KQorCisgICAgZGVmIHF1aWNfZXZlbnRf
cmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIyDCoHBh
c3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2
ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0
cF9ldmVudCkKKworICAgIGFzeW5jIGRlZiBfcmVxdWVzdChzZWxmLCByZXF1ZXN0OiBIdHRwUmVx
dWVzdCk6CisgICAgICAgIHN0cmVhbV9pZCA9IHNlbGYuX3F1aWMuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgIChiIjptZXRob2QiLCByZXF1ZXN0Lm1ldGhvZC5lbmNvZGUoKSksCisgICAgICAgICAg
ICAgICAgKGIiOnNjaGVtZSIsIHJlcXVlc3QudXJsLnNjaGVtZS5lbmNvZGUoKSksCisgICAgICAg
ICAgICAgICAgKGIiOmF1dGhvcml0eSIsIHJlcXVlc3QudXJsLmF1dGhvcml0eS5lbmNvZGUoKSks
CisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2Rl
KCkpLAorICAgICAgICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgp
KSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsgWyhrLmVuY29kZSgpLCB2LmVuY29kZSgp
KSBmb3IgKGssIHYpIGluIHJlcXVlc3QuaGVhZGVycy5pdGVtcygpXSwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLl9odHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPXJlcXVl
c3QuY29udGVudCwgZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAgIHdhaXRlciA9IHNlbGYuX2xv
b3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRzW3N0cmVhbV9p
ZF0gPSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX3JlcXVlc3Rfd2FpdGVyW3N0cmVhbV9pZF0gPSB3
YWl0ZXIKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAgICAgcmV0dXJuIGF3YWl0IGFz
eW5jaW8uc2hpZWxkKHdhaXRlcikKKworCithc3luYyBkZWYgcGVyZm9ybV9odHRwX3JlcXVlc3Qo
CisgICAgY2xpZW50OiBIdHRwQ2xpZW50LCB1cmw6IHN0ciwgZGF0YTogc3RyLCBpbmNsdWRlOiBi
b29sLCBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorKSAtPiBOb25lOgorICAgICMgcGVyZm9y
bSByZXF1ZXN0CisgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgIGlmIGRhdGEgaXMgbm90IE5v
bmU6CisgICAgICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LnBvc3QoCisgICAgICAgICAg
ICB1cmwsCisgICAgICAgICAgICBkYXRhPWRhdGEuZW5jb2RlKCksCisgICAgICAgICAgICBoZWFk
ZXJzPXsiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9
LAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgaHR0cF9ldmVudHMgPSBhd2FpdCBjbGll
bnQuZ2V0KHVybCkKKyAgICBlbGFwc2VkID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgIyBw
cmludCBzcGVlZAorICAgIG9jdGV0cyA9IDAKKyAgICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2
ZW50czoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShodHRwX2V2ZW50LCBEYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAgICAgb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgbG9nZ2VyLmlu
Zm8oCisgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUuM2YgTWJwcykiCisg
ICAgICAgICUgKG9jdGV0cywgZWxhcHNlZCwgb2N0ZXRzICogOCAvIGVsYXBzZWQgLyAxMDAwMDAw
KQorICAgICkKKworICAgICMgb3V0cHV0IHJlc3BvbnNlCisgICAgaWYgb3V0cHV0X2RpciBpcyBu
b3QgTm9uZToKKyAgICAgICAgb3V0cHV0X3BhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAg
ICBvdXRwdXRfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHVybHBhcnNlKHVybCkucGF0aCkgb3IgImlu
ZGV4Lmh0bWwiCisgICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKG91dHB1dF9wYXRoLCAid2Ii
KSBhcyBvdXRwdXRfZmlsZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIGh0dHBfZXZl
bnRzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaHR0cF9ldmVudCwgSGVhZGVyc1Jl
Y2VpdmVkKSBhbmQgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IGIiIgor
ICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBodHRwX2V2ZW50LmhlYWRlcnM6CisgICAg
ICAgICAgICAgICAgICAgICAgICBoZWFkZXJzICs9IGsgKyBiIjogIiArIHYgKyBiIlxyXG4iCisg
ICAgICAgICAgICAgICAgICAgIGlmIGhlYWRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRfZmlsZS53cml0ZShoZWFkZXJzICsgYiJcclxuIikKKyAgICAgICAgICAgICAgICBlbGlm
IGlzaW5zdGFuY2UoaHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUoaHR0cF9ldmVudC5kYXRhKQorCisKK2RlZiBzYXZlX3Nlc3Np
b25fdGlja2V0KHRpY2tldDogU2Vzc2lvblRpY2tldCkgLT4gTm9uZToKKyAgICAiIiIKKyAgICBD
YWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMgZW5naW5lIHdoZW4gYSBuZXcgc2Vz
c2lvbiB0aWNrZXQKKyAgICBpcyByZWNlaXZlZC4KKyAgICAiIiIKKyAgICBsb2dnZXIuaW5mbygi
TmV3IHNlc3Npb24gdGlja2V0IHJlY2VpdmVkIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0
OgorICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgIndiIikgYXMgZnA6Cisg
ICAgICAgICAgICBwaWNrbGUuZHVtcCh0aWNrZXQsIGZwKQorCisKK2FzeW5jIGRlZiBydW4oCisg
ICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgdXJsczogTGlzdFtzdHJd
LAorICAgIGRhdGE6IHN0ciwKKyAgICBpbmNsdWRlOiBib29sLAorICAgIG91dHB1dF9kaXI6IE9w
dGlvbmFsW3N0cl0sCisgICAgbG9jYWxfcG9ydDogaW50LAorKSAtPiBOb25lOgorICAgICMgcGFy
c2UgVVJMCisgICAgcGFyc2VkID0gdXJscGFyc2UodXJsc1swXSkKKyAgICBhc3NlcnQgcGFyc2Vk
LnNjaGVtZSBpbiAoCisgICAgICAgICJodHRwcyIsCisgICAgICAgICJ3c3MiLAorICAgICksICJP
bmx5IGh0dHBzOi8vIG9yIHdzczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgorICAgIGlmICI6IiBp
biBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBhcnNlZC5uZXRsb2Mu
c3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQorICAgIGVsc2U6CisgICAg
ICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHBvcnQgPSA0NDMKKworICAgIGFzeW5j
IHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAgICAgICAgcG9ydCwKKyAgICAgICAgY29u
ZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0cENs
aWVudCwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zYXZlX3Nlc3Npb25fdGlja2V0
LAorICAgICAgICBsb2NhbF9wb3J0PWxvY2FsX3BvcnQsCisgICAgKSBhcyBjbGllbnQ6CisgICAg
ICAgIGNsaWVudCA9IGNhc3QoSHR0cENsaWVudCwgY2xpZW50KQorCisgICAgICAgIGlmIHBhcnNl
ZC5zY2hlbWUgPT0gIndzcyI6CisgICAgICAgICAgICB3cyA9IGF3YWl0IGNsaWVudC53ZWJzb2Nr
ZXQodXJsc1swXSwgc3VicHJvdG9jb2xzPVsiY2hhdCIsICJzdXBlcmNoYXQiXSkKKworICAgICAg
ICAgICAgIyBzZW5kIHNvbWUgbWVzc2FnZXMgYW5kIHJlY2VpdmUgcmVwbHkKKyAgICAgICAgICAg
IGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiSGVsbG8ge30s
IFdlYlNvY2tldCEiLmZvcm1hdChpKQorICAgICAgICAgICAgICAgIHByaW50KCI+ICIgKyBtZXNz
YWdlKQorICAgICAgICAgICAgICAgIGF3YWl0IHdzLnNlbmQobWVzc2FnZSkKKworICAgICAgICAg
ICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3cy5yZWN2KCkKKyAgICAgICAgICAgICAgICBwcmludCgi
PCAiICsgbWVzc2FnZSkKKworICAgICAgICAgICAgYXdhaXQgd3MuY2xvc2UoKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgIyBwZXJmb3JtIHJlcXVlc3QKKyAgICAgICAgICAgIGNvcm9zID0g
WworICAgICAgICAgICAgICAgIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnQ9Y2xpZW50LAorICAgICAgICAgICAgICAgICAgICB1cmw9dXJsLAorICAgICAg
ICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGU9aW5j
bHVkZSwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1vdXRwdXRfZGlyLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBmb3IgdXJsIGluIHVybHMKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uZ2F0aGVyKCpjb3JvcykKKworCitpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgorICAgIGRlZmF1bHRzID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUpCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNj
cmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgInVybCIsIHR5cGU9c3RyLCBuYXJncz0iKyIsIGhlbHA9InRoZSBVUkwgdG8gcXVlcnkgKG11
c3QgYmUgSFRUUFMpIgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LS1jYS1jZXJ0cyIsIHR5cGU9c3RyLCBoZWxwPSJsb2FkIENBIGNlcnRpZmljYXRlcyBmcm9tIHRo
ZSBzcGVjaWZpZWQgZmlsZSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi1kIiwgIi0tZGF0YSIsIHR5cGU9c3RyLCBoZWxwPSJzZW5kIHRoZSBzcGVjaWZpZWQgZGF0
YSBpbiBhIFBPU1QgcmVxdWVzdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgIi1pIiwKKyAgICAgICAgIi0taW5jbHVkZSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCisgICAgICAgIGhlbHA9ImluY2x1ZGUgdGhlIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBp
biB0aGUgb3V0cHV0IiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAg
Ii0tbWF4LWRhdGEiLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgaGVscD0iY29ubmVjdGlv
bi13aWRlIGZsb3cgY29udHJvbCBsaW1pdCAoZGVmYXVsdDogJWQpIiAlIGRlZmF1bHRzLm1heF9k
YXRhLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1tYXgtc3Ry
ZWFtLWRhdGEiLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgaGVscD0icGVyLXN0cmVhbSBm
bG93IGNvbnRyb2wgbGltaXQgKGRlZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfc3RyZWFtX2Rh
dGEsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItayIsCisgICAg
ICAgICItLWluc2VjdXJlIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAg
aGVscD0iZG8gbm90IHZhbGlkYXRlIHNlcnZlciBjZXJ0aWZpY2F0ZSIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoIi0tbGVnYWN5LWh0dHAiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJ1c2UgSFRUUC8wLjkiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICIt
LW91dHB1dC1kaXIiLCB0eXBlPXN0ciwgaGVscD0id3JpdGUgZG93bmxvYWRlZCBmaWxlcyB0byB0
aGlzIGRpcmVjdG9yeSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAg
ICItcSIsICItLXF1aWMtbG9nIiwgdHlwZT1zdHIsIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBh
IGZpbGUgaW4gUUxPRyBmb3JtYXQiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIs
CisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVz
aGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItcyIsCisg
ICAgICAgICItLXNlc3Npb24tdGlja2V0IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGhl
bHA9InJlYWQgYW5kIHdyaXRlIHNlc3Npb24gdGlja2V0IGZyb20gdGhlIHNwZWNpZmllZCBmaWxl
IiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVy
Ym9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9z
aXR5IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1sb2NhbC1w
b3J0IiwgdHlwZT1pbnQsIGRlZmF1bHQ9MCwgaGVscD0ibG9jYWwgcG9ydCB0byBiaW5kIGZvciBj
b25uZWN0aW9ucyIsCisgICAgKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKwor
ICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCisgICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShs
ZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1lc3NhZ2UpcyIsCisgICAgICAgIGxldmVsPWxvZ2dpbmcu
REVCVUcgaWYgYXJncy52ZXJib3NlIGVsc2UgbG9nZ2luZy5JTkZPLAorICAgICkKKworICAgIGlm
IGFyZ3Mub3V0cHV0X2RpciBpcyBub3QgTm9uZSBhbmQgbm90IG9zLnBhdGguaXNkaXIoYXJncy5v
dXRwdXRfZGlyKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBpcyBub3QgYSBkaXJlY3Rv
cnkiICUgYXJncy5vdXRwdXRfZGlyKQorCisgICAgIyBwcmVwYXJlIGNvbmZpZ3VyYXRpb24KKyAg
ICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGlzX2NsaWVudD1U
cnVlLCBhbHBuX3Byb3RvY29scz1IMF9BTFBOIGlmIGFyZ3MubGVnYWN5X2h0dHAgZWxzZSBIM19B
TFBOCisgICAgKQorICAgIGlmIGFyZ3MuY2FfY2VydHM6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
bG9hZF92ZXJpZnlfbG9jYXRpb25zKGFyZ3MuY2FfY2VydHMpCisgICAgaWYgYXJncy5pbnNlY3Vy
ZToKKyAgICAgICAgY29uZmlndXJhdGlvbi52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX05PTkUKKyAg
ICBpZiBhcmdzLm1heF9kYXRhOgorICAgICAgICBjb25maWd1cmF0aW9uLm1heF9kYXRhID0gYXJn
cy5tYXhfZGF0YQorICAgIGlmIGFyZ3MubWF4X3N0cmVhbV9kYXRhOgorICAgICAgICBjb25maWd1
cmF0aW9uLm1heF9zdHJlYW1fZGF0YSA9IGFyZ3MubWF4X3N0cmVhbV9kYXRhCisgICAgaWYgYXJn
cy5xdWljX2xvZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dn
ZXIoKQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vj
cmV0c19sb2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFyZ3Mu
c2Vzc2lvbl90aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbihhcmdz
LnNlc3Npb25fdGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0
aW9uLnNlc3Npb25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBGaWxl
Tm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGlmIHV2bG9vcCBpcyBub3Qg
Tm9uZToKKyAgICAgICAgdXZsb29wLmluc3RhbGwoKQorICAgIGxvb3AgPSBhc3luY2lvLmdldF9l
dmVudF9sb29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAor
ICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICB1cmxzPWFyZ3MudXJsLAorICAgICAgICAgICAgICAgIGRh
dGE9YXJncy5kYXRhLAorICAgICAgICAgICAgICAgIGluY2x1ZGU9YXJncy5pbmNsdWRlLAorICAg
ICAgICAgICAgICAgIG91dHB1dF9kaXI9YXJncy5vdXRwdXRfZGlyLAorICAgICAgICAgICAgICAg
IGxvY2FsX3BvcnQ9YXJncy5sb2NhbF9wb3J0LAorICAgICAgICAgICAgKQorICAgICAgICApCisg
ICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAidyIpIGFzIGxvZ2dl
cl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlvbi5xdWljX2xvZ2dl
ci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvaHR0cDNfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAz
X3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTViMDRiMDNjMTU0M2YzNjBkMDQ2ODg2OTgzNTM2Y2Uy
NWVhYTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX3Nl
cnZlci5weQpAQCAtMCwwICsxLDQ4NCBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNp
bworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKK2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSBlbWFp
bC51dGlscyBpbXBvcnQgZm9ybWF0ZGF0ZQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlLCBE
ZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0CisKK2ltcG9ydCB3c3Byb3Rv
CitpbXBvcnQgd3Nwcm90by5ldmVudHMKKworaW1wb3J0IGFpb3F1aWMKK2Zyb20gYWlvcXVpYy5h
c3luY2lvIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzZXJ2ZQorZnJvbSBhaW9xdWlj
LmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWlj
LmgzLmNvbm5lY3Rpb24gaW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWlj
LmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQK
K2Zyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBOb0F2YWlsYWJsZVB1c2hJREVycm9y
Citmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlv
bgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQs
IFByb3RvY29sTmVnb3RpYXRlZCwgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIg
aW1wb3J0IFF1aWNMb2dnZXIsIFF1aWNMb2dnZXJUcmFjZQorZnJvbSBhaW9xdWljLnRscyBpbXBv
cnQgU2Vzc2lvblRpY2tldAorCit0cnk6CisgICAgaW1wb3J0IHV2bG9vcAorZXhjZXB0IEltcG9y
dEVycm9yOgorICAgIHV2bG9vcCA9IE5vbmUKKworQXNnaUFwcGxpY2F0aW9uID0gQ2FsbGFibGUK
K0h0dHBDb25uZWN0aW9uID0gVW5pb25bSDBDb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb25dCisKK1NF
UlZFUl9OQU1FID0gImFpb3F1aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBI
dHRwUmVxdWVzdEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAg
ICAgICAqLAorICAgICAgICBhdXRob3JpdHk6IGJ5dGVzLAorICAgICAgICBjb25uZWN0aW9uOiBI
dHRwQ29ubmVjdGlvbiwKKyAgICAgICAgcHJvdG9jb2w6IFF1aWNDb25uZWN0aW9uUHJvdG9jb2ws
CisgICAgICAgIHNjb3BlOiBEaWN0LAorICAgICAgICBzdHJlYW1fZW5kZWQ6IGJvb2wsCisgICAg
ICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFuc21pdDogQ2FsbGFibGVbW10sIE5vbmVd
LAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBhdXRob3JpdHkKKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKKyAgICAgICAgc2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFz
eW5jaW8uUXVldWUoKQorICAgICAgICBzZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5z
dHJlYW1faWQgPSBzdHJlYW1faWQKKyAgICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisK
KyAgICAgICAgaWYgc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93
YWl0KHsidHlwZSI6ICJodHRwLnJlcXVlc3QifSkKKworICAgIGRlZiBodHRwX2V2ZW50X3JlY2Vp
dmVkKHNlbGYsIGV2ZW50OiBIM0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNl
KGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0
KAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaHR0cC5y
ZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgImJvZHkiOiBldmVudC5kYXRhLAorICAgICAg
ICAgICAgICAgICAgICAibW9yZV9ib2R5Ijogbm90IGV2ZW50LnN0cmVhbV9lbmRlZCwKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVu
dCwgSGVhZGVyc1JlY2VpdmVkKSBhbmQgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAg
c2VsZi5xdWV1ZS5wdXRfbm93YWl0KAorICAgICAgICAgICAgICAgIHsidHlwZSI6ICJodHRwLnJl
cXVlc3QiLCAiYm9keSI6IGIiIiwgIm1vcmVfYm9keSI6IEZhbHNlfQorICAgICAgICAgICAgKQor
CisgICAgYXN5bmMgZGVmIHJ1bl9hc2dpKHNlbGYsIGFwcDogQXNnaUFwcGxpY2F0aW9uKSAtPiBO
b25lOgorICAgICAgICBhd2FpdCBhcHBsaWNhdGlvbihzZWxmLnNjb3BlLCBzZWxmLnJlY2VpdmUs
IHNlbGYuc2VuZCkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6CisgICAg
ICAgIHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChz
ZWxmLCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0g
PT0gImh0dHAucmVzcG9uc2Uuc3RhcnQiOgorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMi
LCBzdHIobWVzc2FnZVsic3RhdHVzIl0pLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIic2VydmVyIiwgU0VSVkVSX05BTUUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgICAgICAo
YiJkYXRlIiwgZm9ybWF0ZGF0ZSh0aW1lLnRpbWUoKSwgdXNlZ210PVRydWUpLmVuY29kZSgpKSwK
KyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgKyBbKGssIHYpIGZvciBrLCB2IGlu
IG1lc3NhZ2VbImhlYWRlcnMiXV0sCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgbWVzc2Fn
ZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLmJvZHkiOgorICAgICAgICAgICAgc2VsZi5jb25u
ZWN0aW9uLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1f
aWQsCisgICAgICAgICAgICAgICAgZGF0YT1tZXNzYWdlLmdldCgiYm9keSIsIGIiIiksCisgICAg
ICAgICAgICAgICAgZW5kX3N0cmVhbT1ub3QgbWVzc2FnZS5nZXQoIm1vcmVfYm9keSIsIEZhbHNl
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gImh0dHAu
cmVzcG9uc2UucHVzaCIgYW5kIGlzaW5zdGFuY2UoCisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rp
b24sIEgzQ29ubmVjdGlvbgorICAgICAgICApOgorICAgICAgICAgICAgcmVxdWVzdF9oZWFkZXJz
ID0gWworICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAg
ICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIHNlbGYuYXV0aG9yaXR5KSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIG1lc3NhZ2Vb
InBhdGgiXS5lbmNvZGUoKSksCisgICAgICAgICAgICBdICsgWyhrLCB2KSBmb3IgaywgdiBpbiBt
ZXNzYWdlWyJoZWFkZXJzIl1dCisKKyAgICAgICAgICAgICMgc2VuZCBwdXNoIHByb21pc2UKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IHNlbGYuY29u
bmVjdGlvbi5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXNlbGYuc3RyZWFtX2lkLCBoZWFkZXJzPXJlcXVlc3RfaGVhZGVycworICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIGV4Y2VwdCBOb0F2YWlsYWJsZVB1c2hJREVycm9yOgorICAgICAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIGZha2UgcmVxdWVzdAorICAgICAgICAgICAg
Y2FzdChIdHRwU2VydmVyUHJvdG9jb2wsIHNlbGYucHJvdG9jb2wpLmh0dHBfZXZlbnRfcmVjZWl2
ZWQoCisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPXJlcXVlc3RfaGVhZGVycywgc3RyZWFtX2VuZGVkPVRydWUsIHN0cmVhbV9pZD1w
dXNoX3N0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg
c2VsZi50cmFuc21pdCgpCisKKworY2xhc3MgV2ViU29ja2V0SGFuZGxlcjoKKyAgICBkZWYgX19p
bml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNvbm5lY3Rpb246IEh0
dHBDb25uZWN0aW9uLAorICAgICAgICBzY29wZTogRGljdCwKKyAgICAgICAgc3RyZWFtX2lkOiBp
bnQsCisgICAgICAgIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwgTm9uZV0sCisgICAgKSAtPiBOb25l
OgorICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9
IGNvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5odHRwX2V2ZW50X3F1ZXVlOiBEZXF1ZVtEYXRhUmVj
ZWl2ZWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLnF1ZXVlOiBhc3luY2lvLlF1ZXVlW0RpY3Rd
ID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2NvcGUgPSBzY29wZQorICAgICAgICBz
ZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnRyYW5zbWl0ID0gdHJhbnNt
aXQKKyAgICAgICAgc2VsZi53ZWJzb2NrZXQ6IE9wdGlvbmFsW3dzcHJvdG8uQ29ubmVjdGlvbl0g
PSBOb25lCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVu
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKSBh
bmQgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXQucmVjZWl2ZV9kYXRhKGV2ZW50
LmRhdGEpCisKKyAgICAgICAgICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJzb2NrZXQu
ZXZlbnRzKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYud2Vic29ja2V0X2V2ZW50X3JlY2Vp
dmVkKHdzX2V2ZW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIGRlbGF5
IGV2ZW50IHByb2Nlc3NpbmcgdW50aWwgd2UgZ2V0IGB3ZWJzb2NrZXQuYWNjZXB0YAorICAgICAg
ICAgICAgICAgICMgZnJvbSB0aGUgQVNHSSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgIHNl
bGYuaHR0cF9ldmVudF9xdWV1ZS5hcHBlbmQoZXZlbnQpCisKKyAgICBkZWYgd2Vic29ja2V0X2V2
ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiB3c3Byb3RvLmV2ZW50cy5FdmVudCkgLT4gTm9uZToK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2Up
OgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQu
cmVjZWl2ZSIsICJ0ZXh0IjogZXZlbnQuZGF0YX0pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShl
dmVudCwgd3Nwcm90by5ldmVudHMuTWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1
dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5yZWNlaXZlIiwgImJ5dGVzIjogZXZlbnQuZGF0
YX0pCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMuQ2xvc2VD
b25uZWN0aW9uKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAi
d2Vic29ja2V0LmRpc2Nvbm5lY3QiLCAiY29kZSI6IGV2ZW50LmNvZGV9KQorCisgICAgYXN5bmMg
ZGVmIHJ1bl9hc2dpKHNlbGYsIGFwcDogQXNnaUFwcGxpY2F0aW9uKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5jb25uZWN0In0pCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXdhaXQgYXBwbGljYXRpb24oc2VsZi5zY29wZSwg
c2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5zZW5kKHsidHlw
ZSI6ICJ3ZWJzb2NrZXQuY2xvc2UiLCAiY29kZSI6IDEwMDB9KQorCisgICAgYXN5bmMgZGVmIHJl
Y2VpdmUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucXVldWUuZ2V0
KCkKKworICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIG1lc3NhZ2U6IERpY3QpIC0+IE5vbmU6Cisg
ICAgICAgIGRhdGEgPSBiIiIKKyAgICAgICAgZW5kX3N0cmVhbSA9IEZhbHNlCisgICAgICAgIGlm
IG1lc3NhZ2VbInR5cGUiXSA9PSAid2Vic29ja2V0LmFjY2VwdCI6CisgICAgICAgICAgICBzdWJw
cm90b2NvbCA9IG1lc3NhZ2UuZ2V0KCJzdWJwcm90b2NvbCIpCisKKyAgICAgICAgICAgIHNlbGYu
d2Vic29ja2V0ID0gd3Nwcm90by5Db25uZWN0aW9uKHdzcHJvdG8uQ29ubmVjdGlvblR5cGUuU0VS
VkVSKQorCisgICAgICAgICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAgICAgIChiIjpzdGF0
dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9OQU1FLmVu
Y29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiJkYXRlIiwgZm9ybWF0ZGF0ZSh0aW1lLnRpbWUo
KSwgdXNlZ210PVRydWUpLmVuY29kZSgpKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGlm
IHN1YnByb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5k
KChiInNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiLCBzdWJwcm90b2NvbC5lbmNvZGUoKSkpCisgICAg
ICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKHN0cmVhbV9pZD1zZWxmLnN0cmVh
bV9pZCwgaGVhZGVycz1oZWFkZXJzKQorCisgICAgICAgICAgICAjIGNvbnN1bWUgYmFja2xvZwor
ICAgICAgICAgICAgd2hpbGUgc2VsZi5odHRwX2V2ZW50X3F1ZXVlOgorICAgICAgICAgICAgICAg
IHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLmh0dHBfZXZlbnRfcXVldWUucG9wbGVmdCgp
KQorCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuY2xvc2UiOgor
ICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQoCisgICAgICAgICAgICAgICAgICAgIHdzcHJv
dG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbihjb2RlPW1lc3NhZ2VbImNvZGUiXSkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0
cmVhbV9pZCwgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiNDAzIildCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgZW5kX3N0cmVhbSA9IFRydWUKKyAgICAgICAgZWxpZiBtZXNzYWdlWyJ0
eXBlIl0gPT0gIndlYnNvY2tldC5zZW5kIjoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuZ2V0KCJ0
ZXh0IikgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0
LnNlbmQoCisgICAgICAgICAgICAgICAgICAgIHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKGRh
dGE9bWVzc2FnZVsidGV4dCJdKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsaWYg
bWVzc2FnZS5nZXQoImJ5dGVzIikgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGF0YSA9
IHNlbGYud2Vic29ja2V0LnNlbmQoCisgICAgICAgICAgICAgICAgICAgIHdzcHJvdG8uZXZlbnRz
Lk1lc3NhZ2UoZGF0YT1tZXNzYWdlWyJieXRlcyJdKQorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICBpZiBkYXRhOgorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRfZGF0YSgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwgZW5kX3N0
cmVhbT1lbmRfc3RyZWFtCisgICAgICAgICAgICApCisgICAgICAgIGlmIGVuZF9zdHJlYW06Cisg
ICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisK
KworSGFuZGxlciA9IFVuaW9uW0h0dHBSZXF1ZXN0SGFuZGxlciwgV2ViU29ja2V0SGFuZGxlcl0K
KworCitjbGFzcyBIdHRwU2VydmVyUHJvdG9jb2woUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykgLT4gTm9uZToKKyAgICAgICAg
c3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuX2hhbmRsZXJz
OiBEaWN0W2ludCwgSGFuZGxlcl0gPSB7fQorICAgICAgICBzZWxmLl9odHRwOiBPcHRpb25hbFtI
dHRwQ29ubmVjdGlvbl0gPSBOb25lCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxm
LCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwg
SGVhZGVyc1JlY2VpdmVkKSBhbmQgZXZlbnQuc3RyZWFtX2lkIG5vdCBpbiBzZWxmLl9oYW5kbGVy
czoKKyAgICAgICAgICAgIGF1dGhvcml0eSA9IE5vbmUKKyAgICAgICAgICAgIGhlYWRlcnMgPSBb
XQorICAgICAgICAgICAgaHR0cF92ZXJzaW9uID0gIjAuOSIgaWYgaXNpbnN0YW5jZShzZWxmLl9o
dHRwLCBIMENvbm5lY3Rpb24pIGVsc2UgIjMiCisgICAgICAgICAgICByYXdfcGF0aCA9IGIiIgor
ICAgICAgICAgICAgbWV0aG9kID0gIiIKKyAgICAgICAgICAgIHByb3RvY29sID0gTm9uZQorICAg
ICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAg
ICAgICBpZiBoZWFkZXIgPT0gYiI6YXV0aG9yaXR5IjoKKyAgICAgICAgICAgICAgICAgICAgYXV0
aG9yaXR5ID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKGIiaG9z
dCIsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjptZXRob2QiOgor
ICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAg
ICAgIGVsaWYgaGVhZGVyID09IGIiOnBhdGgiOgorICAgICAgICAgICAgICAgICAgICByYXdfcGF0
aCA9IHZhbHVlCisgICAgICAgICAgICAgICAgZWxpZiBoZWFkZXIgPT0gYiI6cHJvdG9jb2wiOgor
ICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAg
ICAgICAgZWxpZiBoZWFkZXIgYW5kIG5vdCBoZWFkZXIuc3RhcnRzd2l0aChiIjoiKToKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlciwgdmFsdWUpKQorCisgICAgICAg
ICAgICBpZiBiIj8iIGluIHJhd19wYXRoOgorICAgICAgICAgICAgICAgIHBhdGhfYnl0ZXMsIHF1
ZXJ5X3N0cmluZyA9IHJhd19wYXRoLnNwbGl0KGIiPyIsIG1heHNwbGl0PTEpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHBhdGhfYnl0ZXMsIHF1ZXJ5X3N0cmluZyA9IHJhd19w
YXRoLCBiIiIKKyAgICAgICAgICAgIHBhdGggPSBwYXRoX2J5dGVzLmRlY29kZSgpCisKKyAgICAg
ICAgICAgICMgRklYTUU6IGFkZCBhIHB1YmxpYyBBUEkgdG8gcmV0cmlldmUgcGVlciBhZGRyZXNz
CisgICAgICAgICAgICBjbGllbnRfYWRkciA9IHNlbGYuX2h0dHAuX3F1aWMuX25ldHdvcmtfcGF0
aHNbMF0uYWRkcgorICAgICAgICAgICAgY2xpZW50ID0gKGNsaWVudF9hZGRyWzBdLCBjbGllbnRf
YWRkclsxXSkKKworICAgICAgICAgICAgaGFuZGxlcjogSGFuZGxlcgorICAgICAgICAgICAgc2Nv
cGU6IERpY3QKKyAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAiQ09OTkVDVCIgYW5kIHByb3RvY29s
ID09ICJ3ZWJzb2NrZXQiOgorICAgICAgICAgICAgICAgIHN1YnByb3RvY29sczogTGlzdFtzdHJd
ID0gW10KKyAgICAgICAgICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBldmVudC5oZWFkZXJz
OgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXIgPT0gYiJzZWMtd2Vic29ja2V0LXByb3Rv
Y29sIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb3RvY29scyA9IFt4LnN0cmlwKCkg
Zm9yIHggaW4gdmFsdWUuZGVjb2RlKCkuc3BsaXQoIiwiKV0KKyAgICAgICAgICAgICAgICBzY29w
ZSA9IHsKKyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgImhlYWRlcnMiOiBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAiaHR0cF92
ZXJzaW9uIjogaHR0cF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAibWV0aG9kIjogbWV0
aG9kLAorICAgICAgICAgICAgICAgICAgICAicGF0aCI6IHBhdGgsCisgICAgICAgICAgICAgICAg
ICAgICJxdWVyeV9zdHJpbmciOiBxdWVyeV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICJy
YXdfcGF0aCI6IHJhd19wYXRoLAorICAgICAgICAgICAgICAgICAgICAicm9vdF9wYXRoIjogIiIs
CisgICAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAid3NzIiwKKyAgICAgICAgICAgICAgICAg
ICAgInN1YnByb3RvY29scyI6IHN1YnByb3RvY29scywKKyAgICAgICAgICAgICAgICAgICAgInR5
cGUiOiAid2Vic29ja2V0IiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaGFu
ZGxlciA9IFdlYlNvY2tldEhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb249
c2VsZi5faHR0cCwKKyAgICAgICAgICAgICAgICAgICAgc2NvcGU9c2NvcGUsCisgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAg
IHRyYW5zbWl0PXNlbGYudHJhbnNtaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBEaWN0W3N0ciwgRGljdF0gPSB7fQor
ICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDNDb25uZWN0aW9uKToK
KyAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uc1siaHR0cC5yZXNwb25zZS5wdXNoIl0gPSB7
fQorICAgICAgICAgICAgICAgIHNjb3BlID0geworICAgICAgICAgICAgICAgICAgICAiY2xpZW50
IjogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9ucyI6IGV4dGVuc2lvbnMs
CisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywKKyAgICAgICAgICAgICAg
ICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
Im1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgInBhdGgiOiBwYXRoLAorICAg
ICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3RyaW5nLAorICAgICAgICAg
ICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInJv
b3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAgICAgICAic2NoZW1lIjogImh0dHBzIiwKKyAg
ICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaHR0cCIsCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGhhbmRsZXIgPSBIdHRwUmVxdWVzdEhhbmRsZXIoCisgICAgICAgICAgICAg
ICAgICAgIGF1dGhvcml0eT1hdXRob3JpdHksCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b249c2VsZi5faHR0cCwKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9c2VsZiwKKyAgICAg
ICAgICAgICAgICAgICAgc2NvcGU9c2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1ldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1l
dmVudC5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHRyYW5zbWl0PXNlbGYudHJhbnNt
aXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faGFuZGxlcnNbZXZlbnQu
c3RyZWFtX2lkXSA9IGhhbmRsZXIKKyAgICAgICAgICAgIGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSho
YW5kbGVyLnJ1bl9hc2dpKGFwcGxpY2F0aW9uKSkKKyAgICAgICAgZWxpZiAoCisgICAgICAgICAg
ICBpc2luc3RhbmNlKGV2ZW50LCAoRGF0YVJlY2VpdmVkLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAg
ICAgICAgICAgYW5kIGV2ZW50LnN0cmVhbV9pZCBpbiBzZWxmLl9oYW5kbGVycworICAgICAgICAp
OgorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0K
KyAgICAgICAgICAgIGhhbmRsZXIuaHR0cF9ldmVudF9yZWNlaXZlZChldmVudCkKKworICAgIGRl
ZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIFByb3RvY29sTmVnb3RpYXRlZCk6CisgICAgICAg
ICAgICBpZiBldmVudC5hbHBuX3Byb3RvY29sLnN0YXJ0c3dpdGgoImgzLSIpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2h0dHAgPSBIM0Nvbm5lY3Rpb24oc2VsZi5fcXVpYykKKyAgICAgICAgICAg
IGVsaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5zdGFydHN3aXRoKCJocS0iKToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShldmVudCwgRGF0YWdyYW1GcmFtZVJlY2VpdmVkKToKKyAgICAgICAgICAgIGlm
IGV2ZW50LmRhdGEgPT0gYiJxdWFjayI6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpYy5zZW5k
X2RhdGFncmFtX2ZyYW1lKGIicXVhY2stYWNrIikKKworICAgICAgICAjIMKgcGFzcyBldmVudCB0
byB0aGUgSFRUUCBsYXllcgorICAgICAgICBpZiBzZWxmLl9odHRwIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gc2VsZi5faHR0cC5oYW5kbGVfZXZlbnQoZXZlbnQp
OgorICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZChodHRwX2V2ZW50KQor
CisKK2NsYXNzIFNlc3Npb25UaWNrZXRTdG9yZToKKyAgICAiIiIKKyAgICBTaW1wbGUgaW4tbWVt
b3J5IHN0b3JlIGZvciBzZXNzaW9uIHRpY2tldHMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi50aWNrZXRzOiBEaWN0W2J5dGVzLCBTZXNz
aW9uVGlja2V0XSA9IHt9CisKKyAgICBkZWYgYWRkKHNlbGYsIHRpY2tldDogU2Vzc2lvblRpY2tl
dCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50aWNrZXRdID0gdGlja2V0
CisKKyAgICBkZWYgcG9wKHNlbGYsIGxhYmVsOiBieXRlcykgLT4gT3B0aW9uYWxbU2Vzc2lvblRp
Y2tldF06CisgICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxhYmVsLCBOb25lKQorCisK
K2NsYXNzIFF1aWNMb2dnZXJDdXN0b20oUXVpY0xvZ2dlcik6CisgICAgIiIiCisgICAgQ3VzdG9t
IFFVSUMgbG9nZ2VyIHdoaWNoIHdyaXRlcyBvbmUgdHJhY2UgcGVyIGZpbGUuCisgICAgIiIiCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aDogc3RyKSAtPiBOb25lOgorICAgICAgICBpZiBu
b3Qgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlFV
SUMgbG9nIG91dHB1dCBkaXJlY3RvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIgJSBwYXRoKQorICAg
ICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAg
ZGVmIGVuZF90cmFjZShzZWxmLCB0cmFjZTogUXVpY0xvZ2dlclRyYWNlKSAtPiBOb25lOgorICAg
ICAgICB0cmFjZV9kaWN0ID0gdHJhY2UudG9fZGljdCgpCisgICAgICAgIHRyYWNlX3BhdGggPSBv
cy5wYXRoLmpvaW4oCisgICAgICAgICAgICBzZWxmLnBhdGgsIHRyYWNlX2RpY3RbImNvbW1vbl9m
aWVsZHMiXVsiT0RDSUQiXSArICIucWxvZyIKKyAgICAgICAgKQorICAgICAgICB3aXRoIG9wZW4o
dHJhY2VfcGF0aCwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICBqc29uLmR1bXAoeyJx
bG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLCAidHJhY2VzIjogW3RyYWNlX2RpY3RdfSwgbG9nZ2Vy
X2ZwKQorICAgICAgICBzZWxmLl90cmFjZXMucmVtb3ZlKHRyYWNlKQorCisKK2lmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVz
Y3JpcHRpb249IlFVSUMgc2VydmVyIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiYXBwIiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIG5hcmdzPSI/IiwKKyAgICAgICAg
ZGVmYXVsdD0iZGVtbzphcHAiLAorICAgICAgICBoZWxwPSJ0aGUgQVNHSSBhcHBsaWNhdGlvbiBh
cyA8bW9kdWxlPjo8YXR0cmlidXRlPiIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICItYyIsCisgICAgICAgICItLWNlcnRpZmljYXRlIiwKKyAgICAgICAgdHlwZT1z
dHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUsCisgICAgICAgIGhlbHA9ImxvYWQgdGhlIFRMUyBj
ZXJ0aWZpY2F0ZSBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCisgICAgICAgICItLWhvc3QiLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAg
ICAgZGVmYXVsdD0iOjoiLAorICAgICAgICBoZWxwPSJsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBh
ZGRyZXNzIChkZWZhdWx0cyB0byA6OikiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLS1wb3J0IiwKKyAgICAgICAgdHlwZT1pbnQsCisgICAgICAgIGRlZmF1bHQ9
NDQzMywKKyAgICAgICAgaGVscD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCAoZGVmYXVs
dHMgdG8gNDQzMykiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LWsiLAorICAgICAgICAiLS1wcml2YXRlLWtleSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAg
ICByZXF1aXJlZD1UcnVlLAorICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgcHJpdmF0ZSBrZXkg
ZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9
c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBX
aXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEi
LCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxl
IGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLXIiLAorICAgICAgICAiLS1zdGF0ZWxlc3MtcmV0cnkiLAorICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJzZW5kIGEgc3RhdGVsZXNzIHJldHJ5IGZvciBuZXcg
Y29ubmVjdGlvbnMiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9n
Z2luZyB2ZXJib3NpdHkiCisgICAgKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUo
bGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5n
LkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICAj
IGltcG9ydCBBU0dJIGFwcGxpY2F0aW9uCisgICAgbW9kdWxlX3N0ciwgYXR0cl9zdHIgPSBhcmdz
LmFwcC5zcGxpdCgiOiIsIG1heHNwbGl0PTEpCisgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9y
dF9tb2R1bGUobW9kdWxlX3N0cikKKyAgICBhcHBsaWNhdGlvbiA9IGdldGF0dHIobW9kdWxlLCBh
dHRyX3N0cikKKworICAgICMgY3JlYXRlIFFVSUMgbG9nZ2VyCisgICAgaWYgYXJncy5xdWljX2xv
ZzoKKyAgICAgICAgcXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyQ3VzdG9tKGFyZ3MucXVpY19sb2cp
CisgICAgZWxzZToKKyAgICAgICAgcXVpY19sb2dnZXIgPSBOb25lCisKKyAgICAjIG9wZW4gU1NM
IGxvZyBmaWxlCisgICAgaWYgYXJncy5zZWNyZXRzX2xvZzoKKyAgICAgICAgc2VjcmV0c19sb2df
ZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGVsc2U6CisgICAgICAgIHNl
Y3JldHNfbG9nX2ZpbGUgPSBOb25lCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4gKyBIMF9BTFBOICsgWyJzaWR1
Y2siXSwKKyAgICAgICAgaXNfY2xpZW50PUZhbHNlLAorICAgICAgICBtYXhfZGF0YWdyYW1fZnJh
bWVfc2l6ZT02NTUzNiwKKyAgICAgICAgcXVpY19sb2dnZXI9cXVpY19sb2dnZXIsCisgICAgICAg
IHNlY3JldHNfbG9nX2ZpbGU9c2VjcmV0c19sb2dfZmlsZSwKKyAgICApCisKKyAgICAjIGxvYWQg
U1NMIGNlcnRpZmljYXRlIGFuZCBrZXkKKyAgICBjb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFp
bihhcmdzLmNlcnRpZmljYXRlLCBhcmdzLnByaXZhdGVfa2V5KQorCisgICAgdGlja2V0X3N0b3Jl
ID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKKworICAgIGlmIHV2bG9vcCBpcyBub3QgTm9uZToKKyAg
ICAgICAgdXZsb29wLmluc3RhbGwoKQorICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29w
KCkKKyAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgc2VydmUoCisgICAgICAg
ICAgICBhcmdzLmhvc3QsCisgICAgICAgICAgICBhcmdzLnBvcnQsCisgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0
cFNlcnZlclByb3RvY29sLAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj10aWNr
ZXRfc3RvcmUucG9wLAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj10aWNrZXRf
c3RvcmUuYWRkLAorICAgICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PWFyZ3Muc3RhdGVsZXNzX3Jl
dHJ5LAorICAgICAgICApCisgICAgKQorICAgIHRyeToKKyAgICAgICAgbG9vcC5ydW5fZm9yZXZl
cigpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwYXNzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDFlMzg0ZTM1NGIyMjUyNDNk
NGQ2MGI3NTk4NTVkNTAyYzI5OTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2h0dHB4X2NsaWVudC5weQpAQCAtMCwwICsxLDIxMyBAQAoraW1wb3J0IGFyZ3BhcnNl
CitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcGlj
a2xlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVx
dWUKK2Zyb20gdHlwaW5nIGltcG9ydCBEZXF1ZSwgRGljdCwgY2FzdAorZnJvbSB1cmxsaWIucGFy
c2UgaW1wb3J0IHVybHBhcnNlCisKK2Zyb20gaHR0cHggaW1wb3J0IEFzeW5jQ2xpZW50Citmcm9t
IGh0dHB4LmNvbmZpZyBpbXBvcnQgVGltZW91dAorZnJvbSBodHRweC5kaXNwYXRjaC5iYXNlIGlt
cG9ydCBBc3luY0Rpc3BhdGNoZXIKK2Zyb20gaHR0cHgubW9kZWxzIGltcG9ydCBSZXF1ZXN0LCBS
ZXNwb25zZQorCitmcm9tIGFpb3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zy
b20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29s
Citmcm9tIGFpb3F1aWMuaDMuY29ubmVjdGlvbiBpbXBvcnQgSDNfQUxQTiwgSDNDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEgzRXZlbnQsIEhl
YWRlcnNSZWNlaXZlZAorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVp
Y0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgUXVpY0V2ZW50
Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworbG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgSDNEaXNwYXRjaGVyKFF1aWND
b25uZWN0aW9uUHJvdG9jb2wsIEFzeW5jRGlzcGF0Y2hlcik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoq
a3dhcmdzKQorCisgICAgICAgIHNlbGYuX2h0dHAgPSBIM0Nvbm5lY3Rpb24oc2VsZi5fcXVpYykK
KyAgICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHM6IERpY3RbaW50LCBEZXF1ZVtIM0V2ZW50XV0g
PSB7fQorICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcjogRGljdFtpbnQsIGFzeW5jaW8uRnV0
dXJlW0RlcXVlW0gzRXZlbnRdXV0gPSB7fQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgcmVx
dWVzdDogUmVxdWVzdCwgdGltZW91dDogVGltZW91dCA9IE5vbmUpIC0+IFJlc3BvbnNlOgorICAg
ICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorCisgICAgICAgICMgcHJlcGFyZSByZXF1ZXN0CisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhl
YWRlcnM9WworICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCByZXF1ZXN0Lm1ldGhvZC5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIHJlcXVlc3QudXJsLnNjaGVtZS5l
bmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIHN0cihyZXF1ZXN0LnVy
bC5hdXRob3JpdHkpLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIHJlcXVl
c3QudXJsLmZ1bGxfcGF0aC5lbmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAgICAr
IFsKKyAgICAgICAgICAgICAgICAoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkKKyAgICAgICAgICAg
ICAgICBmb3IgKGssIHYpIGluIHJlcXVlc3QuaGVhZGVycy5pdGVtcygpCisgICAgICAgICAgICAg
ICAgaWYgayBub3QgaW4gKCJjb25uZWN0aW9uIiwgImhvc3QiKQorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLl9odHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lk
LCBkYXRhPXJlcXVlc3QucmVhZCgpLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgIyB0cmFu
c21pdCByZXF1ZXN0CisgICAgICAgIHdhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgp
CisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRzW3N0cmVhbV9pZF0gPSBkZXF1ZSgpCisgICAg
ICAgIHNlbGYuX3JlcXVlc3Rfd2FpdGVyW3N0cmVhbV9pZF0gPSB3YWl0ZXIKKyAgICAgICAgc2Vs
Zi50cmFuc21pdCgpCisKKyAgICAgICAgIyBwcm9jZXNzIHJlc3BvbnNlCisgICAgICAgIGV2ZW50
czogRGVxdWVbSDNFdmVudF0gPSBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisgICAgICAg
IGNvbnRlbnQgPSBiIiIKKyAgICAgICAgaGVhZGVycyA9IFtdCisgICAgICAgIHN0YXR1c19jb2Rl
ID0gTm9uZQorICAgICAgICBmb3IgZXZlbnQgaW4gZXZlbnRzOgorICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgICAgICBmb3IgaGVh
ZGVyLCB2YWx1ZSBpbiBldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFk
ZXIgPT0gYiI6c3RhdHVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19jb2RlID0g
aW50KHZhbHVlLmRlY29kZSgpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGhlYWRlclswOjFd
ICE9IGIiOiI6CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoaGVhZGVy
LmRlY29kZSgpLCB2YWx1ZS5kZWNvZGUoKSkpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgY29udGVudCArPSBldmVudC5k
YXRhCisKKyAgICAgICAgcmV0dXJuIFJlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzX2NvZGU9
c3RhdHVzX2NvZGUsCisgICAgICAgICAgICBodHRwX3ZlcnNpb249IkhUVFAvMyIsCisgICAgICAg
ICAgICBoZWFkZXJzPWhlYWRlcnMsCisgICAgICAgICAgICBjb250ZW50PWNvbnRlbnQsCisgICAg
ICAgICAgICByZXF1ZXN0PXJlcXVlc3QsCisgICAgICAgICkKKworICAgIGRlZiBodHRwX2V2ZW50
X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBIM0V2ZW50KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShl
dmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2VpdmVkKSk6CisgICAgICAgICAgICBzdHJl
YW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pZCBpbiBzZWxm
Ll9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tl
dmVudC5zdHJlYW1faWRdLmFwcGVuZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5z
dHJlYW1fZW5kZWQ6CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5f
cmVxdWVzdF93YWl0ZXIucG9wKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dF93YWl0ZXIuc2V0X3Jlc3VsdChzZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkK
KworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpOgor
ICAgICAgICAjIMKgcGFzcyBldmVudCB0byB0aGUgSFRUUCBsYXllcgorICAgICAgICBpZiBzZWxm
Ll9odHRwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gc2VsZi5f
aHR0cC5oYW5kbGVfZXZlbnQoZXZlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9ldmVu
dF9yZWNlaXZlZChodHRwX2V2ZW50KQorCisKK2RlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tl
dCk6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTIGVu
Z2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAgaXMgcmVjZWl2ZWQuCisgICAgIiIi
CisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIpCisgICAgaWYg
YXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vzc2lvbl90aWNr
ZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0LCBmcCkKKwor
Cithc3luYyBkZWYgcnVuKGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLCB1cmw6IHN0
ciwgZGF0YTogc3RyKSAtPiBOb25lOgorICAgICMgcGFyc2UgVVJMCisgICAgcGFyc2VkID0gdXJs
cGFyc2UodXJsKQorICAgIGFzc2VydCBwYXJzZWQuc2NoZW1lID09ICJodHRwcyIsICJPbmx5IGh0
dHBzOi8vIFVSTHMgYXJlIHN1cHBvcnRlZC4iCisgICAgaWYgIjoiIGluIHBhcnNlZC5uZXRsb2M6
CisgICAgICAgIGhvc3QsIHBvcnRfc3RyID0gcGFyc2VkLm5ldGxvYy5zcGxpdCgiOiIpCisgICAg
ICAgIHBvcnQgPSBpbnQocG9ydF9zdHIpCisgICAgZWxzZToKKyAgICAgICAgaG9zdCA9IHBhcnNl
ZC5uZXRsb2MKKyAgICAgICAgcG9ydCA9IDQ0MworCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAor
ICAgICAgICBob3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IM0Rpc3BhdGNoZXIsCisgICAgICAg
IHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICApIGFzIGRp
c3BhdGNoOgorICAgICAgICBjbGllbnQgPSBBc3luY0NsaWVudChkaXNwYXRjaD1jYXN0KEFzeW5j
RGlzcGF0Y2hlciwgZGlzcGF0Y2gpKQorCisgICAgICAgICMgcGVyZm9ybSByZXF1ZXN0CisgICAg
ICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoCisgICAgICAgICAgICAgICAg
dXJsLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YS5lbmNvZGUoKSwKKyAgICAgICAgICAgICAg
ICBoZWFkZXJzPXsiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZCJ9LAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzcG9u
c2UgPSBhd2FpdCBjbGllbnQuZ2V0KHVybCkKKworICAgICAgICBlbGFwc2VkID0gdGltZS50aW1l
KCkgLSBzdGFydAorCisgICAgICAgICMgcHJpbnQgc3BlZWQKKyAgICAgICAgb2N0ZXRzID0gbGVu
KHJlc3BvbnNlLmNvbnRlbnQpCisgICAgICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAgICAgIlJl
Y2VpdmVkICVkIGJ5dGVzIGluICUuMWYgcyAoJS4zZiBNYnBzKSIKKyAgICAgICAgICAgICUgKG9j
dGV0cywgZWxhcHNlZCwgb2N0ZXRzICogOCAvIGVsYXBzZWQgLyAxMDAwMDAwKQorICAgICAgICAp
CisKKyAgICAgICAgIyBwcmludCByZXNwb25zZQorICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBp
biByZXNwb25zZS5oZWFkZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KGhlYWRlciArICI6ICIgKyB2YWx1ZSArICJcclxuIikKKyAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgiXHJcbiIpCisgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKHJlc3BvbnNlLmNvbnRl
bnQpCisgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLmZsdXNoKCkKKworCitpZiBfX25hbWVfXyA9
PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2Ny
aXB0aW9uPSJIVFRQLzMgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJ1cmwiLCB0
eXBlPXN0ciwgaGVscD0idGhlIFVSTCB0byBxdWVyeSAobXVzdCBiZSBIVFRQUykiKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEiLCB0eXBlPXN0ciwgaGVs
cD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVlc3QiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItcSIsICItLXF1aWMtbG9nIiwgdHlwZT1z
dHIsIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQiCisgICAg
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItbCIsCisgICAgICAgICItLXNl
Y3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRz
IHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVzaGFyayIsCisgICAgKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCisgICAgICAgICItcyIsCisgICAgICAgICItLXNlc3Npb24tdGlja2V0IiwK
KyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGhlbHA9InJlYWQgYW5kIHdyaXRlIHNlc3Npb24g
dGlja2V0IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKworICAgIGFyZ3MgPSBw
YXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAgICBm
b3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMiLAor
ICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dpbmcu
SU5GTywKKyAgICApCisKKyAgICAjIHByZXBhcmUgY29uZmlndXJhdGlvbgorICAgIGNvbmZpZ3Vy
YXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2NvbHM9
SDNfQUxQTikKKyAgICBpZiBhcmdzLnF1aWNfbG9nOgorICAgICAgICBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyID0gUXVpY0xvZ2dlcigpCisgICAgaWYgYXJncy5zZWNyZXRzX2xvZzoKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlID0gb3BlbihhcmdzLnNlY3JldHNfbG9n
LCAiYSIpCisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vzc2lvbl90aWNrZXQsICJyYiIpIGFzIGZwOgorICAgICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQgPSBwaWNrbGUubG9hZChmcCkK
KyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworCisg
ICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIHRyeToKKyAgICAgICAgbG9v
cC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICBydW4oY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uLCB1cmw9YXJncy51cmwsIGRhdGE9YXJncy5kYXRhKQorICAgICAgICApCisgICAg
ZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAidyIpIGFzIGxvZ2dlcl9m
cDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50
b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZXhhbXBsZXMvaW50ZXJvcC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ2YWQyMGI2NmI0Yjc1MTNlY2VhNmJhMzNkMzc0YTQ5NWU0ZTUyYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpAQCAtMCwwICsx
LDUzMiBAQAorIworIyAhISEgV0FSTklORyAhISEKKyMKKyMgVGhpcyBleGFtcGxlIHVzZXMgc29t
ZSBwcml2YXRlIEFQSXMuCisjCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2lt
cG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHNzbAoraW1wb3J0IHRpbWUKK2Zyb20g
ZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKK2Zyb20gZW51bSBpbXBvcnQgRmxh
ZworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsLCBjYXN0CisKK2ltcG9ydCByZXF1ZXN0cwor
aW1wb3J0IHVybGxpYjMKK2Zyb20gaHR0cDNfY2xpZW50IGltcG9ydCBIdHRwQ2xpZW50CisKK2Zy
b20gYWlvcXVpYy5hc3luY2lvIGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuaDAuY29ubmVj
dGlvbiBpbXBvcnQgSDBfQUxQTgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0IEgz
X0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJl
Y2VpdmVkLCBIZWFkZXJzUmVjZWl2ZWQsIFB1c2hQcm9taXNlUmVjZWl2ZWQKK2Zyb20gYWlvcXVp
Yy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1
aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBSZXN1bHQoRmxhZyk6
CisgICAgViA9IDB4MDAwMDAxCisgICAgSCA9IDB4MDAwMDAyCisgICAgRCA9IDB4MDAwMDA0Cisg
ICAgQyA9IDB4MDAwMDA4CisgICAgUiA9IDB4MDAwMDEwCisgICAgWiA9IDB4MDAwMDIwCisgICAg
UyA9IDB4MDAwMDQwCisgICAgUSA9IDB4MDAwMDgwCisKKyAgICBNID0gMHgwMDAxMDAKKyAgICBC
ID0gMHgwMDAyMDAKKyAgICBBID0gMHgwMDA0MDAKKyAgICBVID0gMHgwMDA4MDAKKyAgICBQID0g
MHgwMDEwMDAKKyAgICBFID0gMHgwMDIwMDAKKyAgICBMID0gMHgwMDQwMDAKKyAgICBUID0gMHgw
MDgwMDAKKworICAgIHRocmVlID0gMHgwMTAwMDAKKyAgICBkID0gMHgwMjAwMDAKKyAgICBwID0g
MHgwNDAwMDAKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBmbGFncyA9IHNvcnRl
ZCgKKyAgICAgICAgICAgIG1hcCgKKyAgICAgICAgICAgICAgICBsYW1iZGEgeDogZ2V0YXR0cihS
ZXN1bHQsIHgpLAorICAgICAgICAgICAgICAgIGZpbHRlcihsYW1iZGEgeDogbm90IHguc3RhcnRz
d2l0aCgiXyIpLCBkaXIoUmVzdWx0KSksCisgICAgICAgICAgICApLAorICAgICAgICAgICAga2V5
PWxhbWJkYSB4OiB4LnZhbHVlLAorICAgICAgICApCisgICAgICAgIHJlc3VsdF9zdHIgPSAiIgor
ICAgICAgICBmb3IgZmxhZyBpbiBmbGFnczoKKyAgICAgICAgICAgIGlmIHNlbGYgJiBmbGFnOgor
ICAgICAgICAgICAgICAgIHJlc3VsdF9zdHIgKz0gZmxhZy5uYW1lCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHJlc3VsdF9zdHIgKz0gIi0iCisgICAgICAgIHJldHVybiByZXN1
bHRfc3RyCisKKworQGRhdGFjbGFzcworY2xhc3MgU2VydmVyOgorICAgIG5hbWU6IHN0cgorICAg
IGhvc3Q6IHN0cgorICAgIHBvcnQ6IGludCA9IDQ0MzMKKyAgICBodHRwMzogYm9vbCA9IFRydWUK
KyAgICByZXRyeV9wb3J0OiBPcHRpb25hbFtpbnRdID0gNDQzNAorICAgIHBhdGg6IHN0ciA9ICIv
IgorICAgIHB1c2hfcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICByZXN1bHQ6IFJlc3Vs
dCA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1sYW1iZGE6IFJlc3VsdCgwKSkKKyAgICBzZXNzaW9u
X3Jlc3VtcHRpb25fcG9ydDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBzdHJ1Y3R1cmVkX2xv
Z2dpbmc6IGJvb2wgPSBGYWxzZQorICAgIHRocm91Z2hwdXRfZmlsZV9zdWZmaXg6IHN0ciA9ICIi
CisgICAgdmVyaWZ5X21vZGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKworU0VSVkVSUyA9IFsK
KyAgICBTZXJ2ZXIoImFrYW1haXF1aWMiLCAiaWV0Zi5ha2FxdWljLmNvbSIsIHBvcnQ9NDQzLCB2
ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAgICBTZXJ2ZXIoCisgICAgICAgICJhaW9xdWlj
IiwgInF1aWMuYWlvcnRjLm9yZyIsIHBvcnQ9NDQzLCBwdXNoX3BhdGg9Ii8iLCBzdHJ1Y3R1cmVk
X2xvZ2dpbmc9VHJ1ZQorICAgICksCisgICAgU2VydmVyKCJhdHMiLCAicXVpYy5vZ3JlLmNvbSIp
LAorICAgIFNlcnZlcigiZjUiLCAiZjVxdWljLmNvbSIsIHJldHJ5X3BvcnQ9NDQzMyksCisgICAg
U2VydmVyKCJoYXNrZWxsIiwgIm1ldy5vcmciLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZl
cigiZ3F1aWMiLCAicXVpYy5yb2NrcyIsIHJldHJ5X3BvcnQ9Tm9uZSksCisgICAgU2VydmVyKCJs
c3F1aWMiLCAiaHR0cDMtdGVzdC5saXRlc3BlZWR0ZWNoLmNvbSIsIHB1c2hfcGF0aD0iLzIwMD9w
dXNoPS8xMDAiKSwKKyAgICBTZXJ2ZXIoCisgICAgICAgICJtc3F1aWMiLAorICAgICAgICAicXVp
Yy53ZXN0dXMuY2xvdWRhcHAuYXp1cmUuY29tIiwKKyAgICAgICAgcG9ydD00NDMzLAorICAgICAg
ICBzZXNzaW9uX3Jlc3VtcHRpb25fcG9ydD00NDMzLAorICAgICAgICBzdHJ1Y3R1cmVkX2xvZ2dp
bmc9VHJ1ZSwKKyAgICAgICAgdGhyb3VnaHB1dF9maWxlX3N1ZmZpeD0iLnR4dCIsCisgICAgICAg
IHZlcmlmeV9tb2RlPXNzbC5DRVJUX05PTkUsCisgICAgKSwKKyAgICBTZXJ2ZXIoCisgICAgICAg
ICJtdmZzdCIsICJmYi5tdmZzdC5uZXQiLCBwb3J0PTQ0MywgcHVzaF9wYXRoPSIvcHVzaCIsIHN0
cnVjdHVyZWRfbG9nZ2luZz1UcnVlCisgICAgKSwKKyAgICBTZXJ2ZXIoIm5ndGNwMiIsICJuZ2h0
dHAyLm9yZyIsIHB1c2hfcGF0aD0iLz9wdXNoPS8xMDAiKSwKKyAgICBTZXJ2ZXIoIm5neF9xdWlj
IiwgImNsb3VkZmxhcmUtcXVpYy5jb20iLCBwb3J0PTQ0MywgcmV0cnlfcG9ydD00NDMpLAorICAg
IFNlcnZlcigicGFuZG9yYSIsICJwYW5kb3JhLmNtLmluLnR1bS5kZSIsIHZlcmlmeV9tb2RlPXNz
bC5DRVJUX05PTkUpLAorICAgIFNlcnZlcigicGljb3F1aWMiLCAidGVzdC5wcml2YXRlb2N0b3B1
cy5jb20iLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9VHJ1ZSksCisgICAgU2VydmVyKCJxdWFudCIsICJx
dWFudC5lZ2dlcnQub3JnIiwgaHR0cDM9RmFsc2UpLAorICAgIFNlcnZlcigicXVpYy1nbyIsICJx
dWljLnNlZW1hbm4uaW8iLCBwb3J0PTQ0MywgcmV0cnlfcG9ydD00NDMpLAorICAgIFNlcnZlcigi
cXVpY2hlIiwgInF1aWMudGVjaCIsIHBvcnQ9ODQ0MywgcmV0cnlfcG9ydD04NDQ0KSwKKyAgICBT
ZXJ2ZXIoInF1aWNseSIsICJxdWljLmV4YW1wMWUubmV0IiksCisgICAgU2VydmVyKCJxdWlubiIs
ICJyYWxpdGguY29tIiksCitdCisKKworYXN5bmMgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlhdGlv
bihzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAg
ICMgZm9yY2UgdmVyc2lvbiBuZWdvdGlhdGlvbgorICAgIGNvbmZpZ3VyYXRpb24uc3VwcG9ydGVk
X3ZlcnNpb25zLmluc2VydCgwLCAweDFBMkEzQTRBKQorCisgICAgYXN5bmMgd2l0aCBjb25uZWN0
KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmco
KQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGZvciBzdGFtcCwgY2F0ZWdvcnksIGV2
ZW50LCBkYXRhIGluIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpWworICAgICAg
ICAgICAgInRyYWNlcyIKKyAgICAgICAgXVswXVsiZXZlbnRzIl06CisgICAgICAgICAgICBpZiAo
CisgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPT0gInRyYW5zcG9ydCIKKyAgICAgICAgICAgICAg
ICBhbmQgZXZlbnQgPT0gInBhY2tldF9yZWNlaXZlZCIKKyAgICAgICAgICAgICAgICBhbmQgZGF0
YVsicGFja2V0X3R5cGUiXSA9PSAidmVyc2lvbl9uZWdvdGlhdGlvbiIKKyAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuVgorCisKK2FzeW5jIGRl
ZiB0ZXN0X2hhbmRzaGFrZV9hbmRfY2xvc2Uoc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246
IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNl
cnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAg
KSBhcyBwcm90b2NvbDoKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisgICAgICAgIHNl
cnZlci5yZXN1bHQgfD0gUmVzdWx0LkgKKyAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5DCisK
KworYXN5bmMgZGVmIHRlc3Rfc3RhdGVsZXNzX3JldHJ5KHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAg
ICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnJldHJ5X3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmco
KQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGZvciBzdGFtcCwgY2F0ZWdvcnksIGV2
ZW50LCBkYXRhIGluIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpWworICAgICAg
ICAgICAgInRyYWNlcyIKKyAgICAgICAgXVswXVsiZXZlbnRzIl06CisgICAgICAgICAgICBpZiAo
CisgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPT0gInRyYW5zcG9ydCIKKyAgICAgICAgICAgICAg
ICBhbmQgZXZlbnQgPT0gInBhY2tldF9yZWNlaXZlZCIKKyAgICAgICAgICAgICAgICBhbmQgZGF0
YVsicGFja2V0X3R5cGUiXSA9PSAicmV0cnkiCisgICAgICAgICAgICApOgorICAgICAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlMKKworCithc3luYyBkZWYgdGVzdF9xdWFudHVt
X3JlYWRpbmVzcyhzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRp
b24pOgorICAgIGNvbmZpZ3VyYXRpb24ucXVhbnR1bV9yZWFkaW5lc3NfdGVzdCA9IFRydWUKKyAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAg
YXdhaXQgcHJvdG9jb2wucGluZygpCisgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlEK
KworCithc3luYyBkZWYgdGVzdF9odHRwXzAoc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246
IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBpZiBzZXJ2ZXIucGF0aCBpcyBOb25lOgorICAgICAg
ICByZXR1cm4KKworICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHMgPSBIMF9BTFBOCisg
ICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwKKyAgICAgICAgc2Vy
dmVyLnBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAg
Y3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAg
cHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29sKQorCisgICAgICAgICMgcGVyZm9y
bSBIVFRQIHJlcXVlc3QKKyAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJvdG9jb2wuZ2V0KAorICAg
ICAgICAgICAgImh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9y
dCwgc2VydmVyLnBhdGgpCisgICAgICAgICkKKyAgICAgICAgaWYgZXZlbnRzIGFuZCBpc2luc3Rh
bmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIHNlcnZlci5yZXN1
bHQgfD0gUmVzdWx0LkQKKworCithc3luYyBkZWYgdGVzdF9odHRwXzMoc2VydmVyOiBTZXJ2ZXIs
IGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBpZiBzZXJ2ZXIucGF0aCBp
cyBOb25lOgorICAgICAgICByZXR1cm4KKworICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2Nv
bHMgPSBIM19BTFBOCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9z
dCwKKyAgICAgICAgc2VydmVyLnBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJh
dGlvbiwKKyAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgKSBhcyBwcm90
b2NvbDoKKyAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29sKQorCisg
ICAgICAgICMgcGVyZm9ybSBIVFRQIHJlcXVlc3QKKyAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJv
dG9jb2wuZ2V0KAorICAgICAgICAgICAgImh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5o
b3N0LCBzZXJ2ZXIucG9ydCwgc2VydmVyLnBhdGgpCisgICAgICAgICkKKyAgICAgICAgaWYgZXZl
bnRzIGFuZCBpc2luc3RhbmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkQKKyAgICAgICAgICAgIHNlcnZlci5yZXN1bHQg
fD0gUmVzdWx0LnRocmVlCisKKyAgICAgICAgIyBwZXJmb3JtIG1vcmUgSFRUUCByZXF1ZXN0cyB0
byB1c2UgUVBBQ0sgZHluYW1pYyB0YWJsZXMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Cisg
ICAgICAgICAgICBldmVudHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCisgICAgICAgICAgICAgICAg
Imh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgc2VydmVy
LnBhdGgpCisgICAgICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShl
dmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBodHRwID0gY2FzdChIM0Nv
bm5lY3Rpb24sIHByb3RvY29sLl9odHRwKQorICAgICAgICAgICAgcHJvdG9jb2wuX3F1aWMuX2xv
Z2dlci5pbmZvKAorICAgICAgICAgICAgICAgICJRUEFDSyBkZWNvZGVyIGJ5dGVzIFJYICVkIFRY
ICVkIiwKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkLAorICAg
ICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNfc2VudCwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICAgICAi
UVBBQ0sgZW5jb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAgICAgICAgaHR0cC5f
ZW5jb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRwLl9lbmNvZGVyX2J5
dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAg
ICAgaHR0cC5fZGVjb2Rlcl9ieXRlc19yZWNlaXZlZAorICAgICAgICAgICAgICAgIGFuZCBodHRw
Ll9kZWNvZGVyX2J5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZW5jb2Rlcl9i
eXRlc19yZWNlaXZlZAorICAgICAgICAgICAgICAgIGFuZCBodHRwLl9lbmNvZGVyX2J5dGVzX3Nl
bnQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1
bHQuZAorCisgICAgICAgICMgY2hlY2sgcHVzaCBzdXBwb3J0CisgICAgICAgIGlmIHNlcnZlci5w
dXNoX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2NvbC5wdXNoZXMuY2xlYXIo
KQorICAgICAgICAgICAgYXdhaXQgcHJvdG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRw
czovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wdXNo
X3BhdGgpCisgICAgICAgICAgICApCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAu
NSkKKyAgICAgICAgICAgIGZvciBwdXNoX2lkLCBldmVudHMgaW4gcHJvdG9jb2wucHVzaGVzLml0
ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAgICBsZW4oZXZl
bnRzKSA+PSAzCisgICAgICAgICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1swXSwg
UHVzaFByb21pc2VSZWNlaXZlZCkKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzaW5zdGFuY2Uo
ZXZlbnRzWzFdLCBIZWFkZXJzUmVjZWl2ZWQpCisgICAgICAgICAgICAgICAgICAgIGFuZCBpc2lu
c3RhbmNlKGV2ZW50c1syXSwgRGF0YVJlY2VpdmVkKQorICAgICAgICAgICAgICAgICk6CisgICAg
ICAgICAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJQdXNoIHByb21pc2UgJWQgZm9yICVzIHJlY2VpdmVkIChzdGF0dXMgJXMp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBkaWN0KGV2ZW50c1swXS5oZWFkZXJzKVtiIjpwYXRoIl0uZGVjb2RlKCJhc2NpaSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaW50KGRpY3QoZXZlbnRzWzFdLmhlYWRlcnMpW2IiOnN0
YXR1cyJdKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgIHNl
cnZlci5yZXN1bHQgfD0gUmVzdWx0LnAKKworCithc3luYyBkZWYgdGVzdF9zZXNzaW9uX3Jlc3Vt
cHRpb24oc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToK
KyAgICBwb3J0ID0gc2VydmVyLnNlc3Npb25fcmVzdW1wdGlvbl9wb3J0IG9yIHNlcnZlci5wb3J0
CisgICAgc2F2ZWRfdGlja2V0ID0gTm9uZQorCisgICAgZGVmIHNlc3Npb25fdGlja2V0X2hhbmRs
ZXIodGlja2V0KToKKyAgICAgICAgbm9ubG9jYWwgc2F2ZWRfdGlja2V0CisgICAgICAgIHNhdmVk
X3RpY2tldCA9IHRpY2tldAorCisgICAgIyBjb25uZWN0IGEgZmlyc3QgdGltZSwgcmVjZWl2ZSBh
IHRpY2tldAorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisg
ICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAgICkg
YXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorCisgICAgICAgICMg
c29tZSBzZXJ2ZXJzIGRvbid0IHNlbmQgdGhlIHRpY2tldCBpbW1lZGlhdGVseQorICAgICAgICBh
d2FpdCBhc3luY2lvLnNsZWVwKDEpCisKKyAgICAjIGNvbm5lY3QgYSBzZWNvbmQgdGltZSwgd2l0
aCB0aGUgdGlja2V0CisgICAgaWYgc2F2ZWRfdGlja2V0IGlzIG5vdCBOb25lOgorICAgICAgICBj
b25maWd1cmF0aW9uLnNlc3Npb25fdGlja2V0ID0gc2F2ZWRfdGlja2V0CisgICAgICAgIGFzeW5j
IHdpdGggY29ubmVjdChzZXJ2ZXIuaG9zdCwgcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0
aW9uKSBhcyBwcm90b2NvbDoKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorCisg
ICAgICAgICAgICAjIGNoZWNrIHNlc3Npb24gd2FzIHJlc3VtZWQKKyAgICAgICAgICAgIGlmIHBy
b3RvY29sLl9xdWljLnRscy5zZXNzaW9uX3Jlc3VtZWQ6CisgICAgICAgICAgICAgICAgc2VydmVy
LnJlc3VsdCB8PSBSZXN1bHQuUgorCisgICAgICAgICAgICAjIGNoZWNrIGVhcmx5IGRhdGEgd2Fz
IGFjY2VwdGVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMuZWFybHlfZGF0YV9h
Y2NlcHRlZDoKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5aCisKKwor
YXN5bmMgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjog
UXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2Vy
dmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAp
IGFzIHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNvbWUgdHJhZmZpYworICAgICAgICBhd2Fp
dCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHJlcXVlc3Qga2V5IHVwZGF0ZQorICAgICAg
ICBwcm90b2NvbC5yZXF1ZXN0X2tleV91cGRhdGUoKQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0
cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorCisgICAgICAgIHNlcnZlci5y
ZXN1bHQgfD0gUmVzdWx0LlUKKworCithc3luYyBkZWYgdGVzdF9taWdyYXRpb24oc2VydmVyOiBT
ZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRo
IGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVzZSBzb21l
IHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBjaGFu
Z2UgY29ubmVjdGlvbiBJRCBhbmQgcmVwbGFjZSB0cmFuc3BvcnQKKyAgICAgICAgcHJvdG9jb2wu
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoKQorICAgICAgICBwcm90b2NvbC5fdHJhbnNwb3J0LmNsb3Nl
KCkKKyAgICAgICAgYXdhaXQgbG9vcC5jcmVhdGVfZGF0YWdyYW1fZW5kcG9pbnQobGFtYmRhOiBw
cm90b2NvbCwgbG9jYWxfYWRkcj0oIjo6IiwgMCkpCisKKyAgICAgICAgIyBjYXVzZSBtb3JlIHRy
YWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBjaGVjayBs
b2cKKyAgICAgICAgZGNpZHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBl
dmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAg
ICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYg
KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAg
ICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRh
dGFbInBhY2tldF90eXBlIl0gPT0gIjFSVFQiCisgICAgICAgICAgICApOgorICAgICAgICAgICAg
ICAgIGRjaWRzLmFkZChkYXRhWyJoZWFkZXIiXVsiZGNpZCJdKQorICAgICAgICBpZiBsZW4oZGNp
ZHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5NCisKKworYXN5
bmMgZGVmIHRlc3RfcmViaW5kaW5nKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWlj
Q29uZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIu
aG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMg
cHJvdG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHBy
b3RvY29sLnBpbmcoKQorCisgICAgICAgICMgcmVwbGFjZSB0cmFuc3BvcnQKKyAgICAgICAgcHJv
dG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFn
cmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2FkZHI9KCI6OiIsIDApKQorCisg
ICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmco
KQorCisgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkIKKworCithc3luYyBkZWYgdGVz
dF9zcGluX2JpdChzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRp
b24pOgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29sLnBp
bmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIHNwaW5fYml0cyA9IHNldCgpCisg
ICAgICAgIGZvciBzdGFtcCwgY2F0ZWdvcnksIGV2ZW50LCBkYXRhIGluIGNvbmZpZ3VyYXRpb24u
cXVpY19sb2dnZXIudG9fZGljdCgpWworICAgICAgICAgICAgInRyYWNlcyIKKyAgICAgICAgXVsw
XVsiZXZlbnRzIl06CisgICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiY29ubmVjdGl2aXR5IiBh
bmQgZXZlbnQgPT0gInNwaW5fYml0X3VwZGF0ZWQiOgorICAgICAgICAgICAgICAgIHNwaW5fYml0
cy5hZGQoZGF0YVsic3RhdGUiXSkKKyAgICAgICAgaWYgbGVuKHNwaW5fYml0cykgPT0gMjoKKyAg
ICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlAKKworCithc3luYyBkZWYgdGVzdF90
aHJvdWdocHV0KHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
bik6CisgICAgZmFpbHVyZXMgPSAwCisKKyAgICBmb3Igc2l6ZSBpbiBbNTAwMDAwMCwgMTAwMDAw
MDBdOgorICAgICAgICBwcmludCgiVGVzdGluZyAlZCBieXRlcyBkb3dubG9hZCIgJSBzaXplKQor
ICAgICAgICBwYXRoID0gIi8lZCVzIiAlIChzaXplLCBzZXJ2ZXIudGhyb3VnaHB1dF9maWxlX3N1
ZmZpeCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0IG92ZXIgVENQCisgICAgICAg
IHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQoImh0
dHBzOi8vIiArIHNlcnZlci5ob3N0ICsgcGF0aCwgdmVyaWZ5PUZhbHNlKQorICAgICAgICB0Y3Bf
b2N0ZXRzID0gbGVuKHJlc3BvbnNlLmNvbnRlbnQpCisgICAgICAgIHRjcF9lbGFwc2VkID0gdGlt
ZS50aW1lKCkgLSBzdGFydAorICAgICAgICBhc3NlcnQgdGNwX29jdGV0cyA9PSBzaXplLCAiSFRU
UC9UQ1AgcmVzcG9uc2Ugc2l6ZSBtaXNtYXRjaCIKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCBy
ZXF1ZXN0IG92ZXIgUVVJQworICAgICAgICBpZiBzZXJ2ZXIuaHR0cDM6CisgICAgICAgICAgICBj
b25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9IEgwX0FMUE4KKyAgICAgICAg
c3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAg
ICAgICBzZXJ2ZXIuaG9zdCwKKyAgICAgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAgICAgICAg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgY3JlYXRlX3Byb3RvY29s
PUh0dHBDbGllbnQsCisgICAgICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgICAgICBwcm90b2Nv
bCA9IGNhc3QoSHR0cENsaWVudCwgcHJvdG9jb2wpCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRz
ID0gYXdhaXQgcHJvdG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30i
LmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHBhdGgpCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBxdWljX2VsYXBzZWQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisgICAgICAgICAg
ICBxdWljX29jdGV0cyA9IDAKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIGh0dHBfZXZl
bnRzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaHR0cF9ldmVudCwgRGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgICAgICAgICAgICAgcXVpY19vY3RldHMgKz0gbGVuKGh0dHBfZXZlbnQu
ZGF0YSkKKyAgICAgICAgYXNzZXJ0IHF1aWNfb2N0ZXRzID09IHNpemUsICJIVFRQL1FVSUMgcmVz
cG9uc2Ugc2l6ZSBtaXNtYXRjaCIKKworICAgICAgICBwcmludCgiIC0gSFRUUC9UQ1AgIGNvbXBs
ZXRlZCBpbiAlLjNmIHMiICUgdGNwX2VsYXBzZWQpCisgICAgICAgIHByaW50KCIgLSBIVFRQL1FV
SUMgY29tcGxldGVkIGluICUuM2YgcyIgJSBxdWljX2VsYXBzZWQpCisKKyAgICAgICAgaWYgcXVp
Y19lbGFwc2VkID4gMS4xICogdGNwX2VsYXBzZWQ6CisgICAgICAgICAgICBmYWlsdXJlcyArPSAx
CisgICAgICAgICAgICBwcmludCgiID0+IEZBSUwiKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcHJpbnQoIiA9PiBQQVNTIikKKworICAgIGlmIGZhaWx1cmVzID09IDA6CisgICAgICAgIHNl
cnZlci5yZXN1bHQgfD0gUmVzdWx0LlQKKworCitkZWYgcHJpbnRfcmVzdWx0KHNlcnZlcjogU2Vy
dmVyKSAtPiBOb25lOgorICAgIHJlc3VsdCA9IHN0cihzZXJ2ZXIucmVzdWx0KS5yZXBsYWNlKCJ0
aHJlZSIsICIzIikKKyAgICByZXN1bHQgPSByZXN1bHRbMDo4XSArICIgIiArIHJlc3VsdFs4OjE2
XSArICIgIiArIHJlc3VsdFsxNjpdCisgICAgcHJpbnQoIiVzJXMlcyIgJSAoc2VydmVyLm5hbWUs
ICIgIiAqICgyMCAtIGxlbihzZXJ2ZXIubmFtZSkpLCByZXN1bHQpKQorCisKK2FzeW5jIGRlZiBy
dW4oc2VydmVycywgdGVzdHMsIHF1aWNfbG9nPUZhbHNlLCBzZWNyZXRzX2xvZ19maWxlPU5vbmUp
IC0+IE5vbmU6CisgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAgICAgICBpZiBzZXJ2ZXIu
c3RydWN0dXJlZF9sb2dnaW5nOgorICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQu
TAorICAgICAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0X2Z1bmMgaW4gdGVzdHM6CisgICAgICAgICAg
ICBwcmludCgiXG49PT0gJXMgJXMgPT09XG4iICUgKHNlcnZlci5uYW1lLCB0ZXN0X25hbWUpKQor
ICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAg
ICAgICAgIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4gKyBIMF9BTFBOLAorICAgICAgICAgICAgICAg
IGlzX2NsaWVudD1UcnVlLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIo
KSwKKyAgICAgICAgICAgICAgICBzZWNyZXRzX2xvZ19maWxlPXNlY3JldHNfbG9nX2ZpbGUsCisg
ICAgICAgICAgICAgICAgdmVyaWZ5X21vZGU9c2VydmVyLnZlcmlmeV9tb2RlLAorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgaWYgdGVzdF9uYW1lID09ICJ0ZXN0X3Rocm91Z2hwdXQiOgorICAg
ICAgICAgICAgICAgIHRpbWVvdXQgPSA2MAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0ID0gMTAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLndhaXRfZm9yKAorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmMoc2VydmVy
LCBjb25maWd1cmF0aW9uKSwgdGltZW91dD10aW1lb3V0CisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgcHJpbnQo
ZXhjKQorCisgICAgICAgICAgICBpZiBxdWljX2xvZzoKKyAgICAgICAgICAgICAgICB3aXRoIG9w
ZW4oIiVzLSVzLnFsb2ciICUgKHNlcnZlci5uYW1lLCB0ZXN0X25hbWUpLCAidyIpIGFzIGxvZ2dl
cl9mcDoKKyAgICAgICAgICAgICAgICAgICAganNvbi5kdW1wKGNvbmZpZ3VyYXRpb24ucXVpY19s
b2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00KQorCisgICAgICAgIHByaW50KCIi
KQorICAgICAgICBwcmludF9yZXN1bHQoc2VydmVyKQorCisgICAgIyBwcmludCBzdW1tYXJ5Cisg
ICAgaWYgbGVuKHNlcnZlcnMpID4gMToKKyAgICAgICAgcHJpbnQoIlNVTU1BUlkiKQorICAgICAg
ICBmb3Igc2VydmVyIGluIHNlcnZlcnM6CisgICAgICAgICAgICBwcmludF9yZXN1bHQoc2VydmVy
KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgcGFyc2VyID0gYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IlFVSUMgaW50ZXJvcCBjbGllbnQiKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItcSIsCisgICAgICAgICItLXF1aWMtbG9nIiwK
KyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0ibG9nIFFVSUMgZXZl
bnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICItLXNlcnZlciIsIHR5cGU9c3RyLCBoZWxwPSJvbmx5IHJ1biBhZ2Fp
bnN0IHRoZSBzcGVjaWZpZWQgc2VydmVyLiIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgiLS10ZXN0IiwgdHlwZT1zdHIsIGhlbHA9Im9ubHkgcnVuIHRoZSBzcGVjaWZlZCB0ZXN0LiIp
CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0tc2Vj
cmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3JldHMg
dG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKworICAgIGFyZ3Mg
PSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAg
ICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMi
LAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dp
bmcuSU5GTywKKyAgICApCisKKyAgICAjIG9wZW4gU1NMIGxvZyBmaWxlCisgICAgaWYgYXJncy5z
ZWNyZXRzX2xvZzoKKyAgICAgICAgc2VjcmV0c19sb2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRz
X2xvZywgImEiKQorICAgIGVsc2U6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBOb25lCisK
KyAgICAjIGRldGVybWluZSB3aGF0IHRvIHJ1bgorICAgIHNlcnZlcnMgPSBTRVJWRVJTCisgICAg
dGVzdHMgPSBsaXN0KGZpbHRlcihsYW1iZGEgeDogeFswXS5zdGFydHN3aXRoKCJ0ZXN0XyIpLCBn
bG9iYWxzKCkuaXRlbXMoKSkpCisgICAgaWYgYXJncy5zZXJ2ZXI6CisgICAgICAgIHNlcnZlcnMg
PSBsaXN0KGZpbHRlcihsYW1iZGEgeDogeC5uYW1lID09IGFyZ3Muc2VydmVyLCBzZXJ2ZXJzKSkK
KyAgICBpZiBhcmdzLnRlc3Q6CisgICAgICAgIHRlc3RzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6
IHhbMF0gPT0gYXJncy50ZXN0LCB0ZXN0cykpCisKKyAgICAjIGRpc2FibGUgcmVxdWVzdHMgU1NM
IHdhcm5pbmdzCisgICAgdXJsbGliMy5kaXNhYmxlX3dhcm5pbmdzKHVybGxpYjMuZXhjZXB0aW9u
cy5JbnNlY3VyZVJlcXVlc3RXYXJuaW5nKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50
X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBydW4oCisgICAg
ICAgICAgICBzZXJ2ZXJzPXNlcnZlcnMsCisgICAgICAgICAgICB0ZXN0cz10ZXN0cywKKyAgICAg
ICAgICAgIHF1aWNfbG9nPWFyZ3MucXVpY19sb2csCisgICAgICAgICAgICBzZWNyZXRzX2xvZ19m
aWxlPXNlY3JldHNfbG9nX2ZpbGUsCisgICAgICAgICkKKyAgICApCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9zaWR1Y2tfY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiNmE1Yjc2ZTBlNzAxODI4MjY3YzMzM2Yz
Mzg0NzZkNWIwZTcyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
c2lkdWNrX2NsaWVudC5weQpAQCAtMCwwICsxLDEwMCBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBv
cnQgYXN5bmNpbworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3NsCitmcm9t
IHR5cGluZyBpbXBvcnQgT3B0aW9uYWwsIGNhc3QKKworZnJvbSBhaW9xdWljLmFzeW5jaW8uY2xp
ZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBpbXBvcnQg
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBp
bXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQg
RGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBRdWljRXZlbnQKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dl
ciBpbXBvcnQgUXVpY0xvZ2dlcgorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY2xpZW50
IikKKworCitjbGFzcyBTaWR1Y2tDbGllbnQoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKCkuX19p
bml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLl9hY2tfd2FpdGVyOiBPcHRpb25h
bFthc3luY2lvLkZ1dHVyZVtOb25lXV0gPSBOb25lCisKKyAgICBhc3luYyBkZWYgcXVhY2soc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2Fja193YWl0ZXIgaXMgTm9uZSwgIk9u
bHkgb25lIHF1YWNrIGF0IGEgdGltZS4iCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3Jh
bV9mcmFtZShiInF1YWNrIikKKworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9m
dXR1cmUoKQorICAgICAgICBzZWxmLl9hY2tfd2FpdGVyID0gd2FpdGVyCisgICAgICAgIHNlbGYu
dHJhbnNtaXQoKQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIp
CisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAt
PiBOb25lOgorICAgICAgICBpZiBzZWxmLl9hY2tfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YWdyYW1GcmFtZVJlY2VpdmVkKSBhbmQgZXZl
bnQuZGF0YSA9PSBiInF1YWNrLWFjayI6CisgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5f
YWNrX3dhaXRlcgorICAgICAgICAgICAgICAgIHNlbGYuX2Fja193YWl0ZXIgPSBOb25lCisgICAg
ICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKworCithc3luYyBkZWYgcnVuKGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLCBob3N0OiBzdHIsIHBvcnQ6IGludCkgLT4g
Tm9uZToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3QsIHBvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgY3JlYXRlX3Byb3RvY29sPVNpZHVja0NsaWVudAorICAg
ICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0KFNpZHVja0NsaWVudCwgY2xpZW50
KQorICAgICAgICBsb2dnZXIuaW5mbygic2VuZGluZyBxdWFjayIpCisgICAgICAgIGF3YWl0IGNs
aWVudC5xdWFjaygpCisgICAgICAgIGxvZ2dlci5pbmZvKCJyZWNlaXZlZCBxdWFjay1hY2siKQor
CisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IlNpRFVDSyBjbGllbnQiKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICJob3N0IiwgdHlwZT1zdHIsIGhlbHA9IlRoZSByZW1vdGUgcGVl
cidzIGhvc3QgbmFtZSBvciBJUCBhZGRyZXNzIgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCJwb3J0IiwgdHlwZT1pbnQsIGhlbHA9IlRoZSByZW1vdGUgcGVlcidzIHBvcnQgbnVtYmVy
IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1p
bnNlY3VyZSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRv
IG5vdCB2YWxpZGF0ZSBzZXJ2ZXIgY2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJs
b2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIs
CisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUs
IGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0i
aW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkiCisgICAgKQorCisgICAgYXJncyA9IHBhcnNlci5w
YXJzZV9hcmdzKCkKKworICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCisgICAgICAgIGZvcm1hdD0i
JShhc2N0aW1lKXMgJShsZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1lc3NhZ2UpcyIsCisgICAgICAg
IGxldmVsPWxvZ2dpbmcuREVCVUcgaWYgYXJncy52ZXJib3NlIGVsc2UgbG9nZ2luZy5JTkZPLAor
ICAgICkKKworICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAg
YWxwbl9wcm90b2NvbHM9WyJzaWR1Y2siXSwgaXNfY2xpZW50PVRydWUsIG1heF9kYXRhZ3JhbV9m
cmFtZV9zaXplPTY1NTM2CisgICAgKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNv
bmZpZ3VyYXRpb24udmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5xdWlj
X2xvZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQor
ICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19s
b2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorCisgICAgbG9vcCA9IGFzeW5j
aW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIHRyeToKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29t
cGxldGUoCisgICAgICAgICAgICBydW4oY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBob3N0
PWFyZ3MuaG9zdCwgcG9ydD1hcmdzLnBvcnQpCisgICAgICAgICkKKyAgICBmaW5hbGx5OgorICAg
ICAgICBpZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgd2l0aCBvcGVuKGFyZ3MucXVpY19sb2csICJ3IikgYXMgbG9nZ2VyX2ZwOgorICAgICAgICAg
ICAgICAgIGpzb24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9n
Z2VyX2ZwLCBpbmRlbnQ9NCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1w
bGF0ZXMvaW5kZXguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXgu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDg1NDg3ZTg0MDgxMDM3NjUzNGJjNDI4ZDUxMDJiNGVlOGE2MmU4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9pbmRl
eC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+CisgICAgICAgIDx0aXRsZT5haW9x
dWljPC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGUu
Y3NzIi8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+V2VsY29tZSB0byBh
aW9xdWljPC9oMT4KKyAgICAgICAgPHA+CisgICAgICAgICAgICBUaGlzIGlzIGEgdGVzdCBwYWdl
IGZvciA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvIj5haW9xdWlj
PC9hPiwKKyAgICAgICAgICAgIGEgUVVJQyBhbmQgSFRUUC8zIGltcGxlbWVudGF0aW9uIHdyaXR0
ZW4gaW4gUHl0aG9uLgorICAgICAgICA8L3A+Cit7JSBpZiByZXF1ZXN0LnNjb3BlWyJodHRwX3Zl
cnNpb24iXSA9PSAiMyIgJX0KKyAgICAgICAgPHA+CisgICAgICAgICAgICBDb25ncmF0dWxhdGlv
bnMsIHlvdSBsb2FkZWQgdGhpcyBwYWdlIHVzaW5nIEhUVFAvMyEKKyAgICAgICAgPC9wPgoreyUg
ZW5kaWYgJX0KKyAgICAgICAgPGgyPkF2YWlsYWJsZSBlbmRwb2ludHM8L2gyPgorICAgICAgICA8
dWw+CisgICAgICAgICAgICA8bGk+PHN0cm9uZz5HRVQgLzwvc3Ryb25nPiByZXR1cm5zIHRoZSBo
b21lcGFnZTwvbGk+CisgICAgICAgICAgICA8bGk+PHN0cm9uZz5HRVQgL05OTk5OPC9zdHJvbmc+
IHJldHVybnMgTk5OTk4gYnl0ZXMgb2YgcGxhaW4gdGV4dDwvbGk+CisgICAgICAgICAgICA8bGk+
PHN0cm9uZz5QT1NUIC9lY2hvPC9zdHJvbmc+IHJldHVybnMgdGhlIHJlcXVlc3QgZGF0YTwvbGk+
CisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgPHN0cm9uZz5DT05ORUNUIC93czwv
c3Ryb25nPiBydW5zIGEgV2ViU29ja2V0IGVjaG8gc2VydmljZS4KKyAgICAgICAgICAgICAgICBZ
b3UgbXVzdCBzZXQgdGhlIDxlbT46cHJvdG9jb2w8L2VtPiBwc2V1ZG8taGVhZGVyIHRvIDxlbT4i
d2Vic29ja2V0IjwvZW0+LgorICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgIDxsaT5UaGVy
ZSBpcyBhbHNvIGFuIDxhIGhyZWY9Ii9odHRwYmluLyI+aHR0cGJpbiBpbnN0YW5jZTwvYT4uPC9s
aT4KKyAgICAgICAgPC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvbG9ncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTlmNjdkY2EyMmM1N2ZiYzkx
ZDhkMTlhMGQ2YTg4ZjNjMWI5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIvPgor
ICAgICAgICA8dGl0bGU+YWlvcXVpYyAtIGxvZ3M8L3RpdGxlPgorICAgICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZS5jc3MiLz4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDxoMT5RTE9HIGZpbGVzPC9oMT4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJsb2dz
Ij4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPm5hbWU8L3RoPgorICAgICAgICAgICAg
PHRoPmRhdGUgKFVUQyk8L3RoPgorICAgICAgICAgICAgPHRoPnNpemU8L3RoPgorICAgICAgICA8
L3RyPgoreyUgZm9yIGxvZyBpbiBsb2dzICV9CisgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0
ZCBjbGFzcz0ibmFtZSI+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLmZpbGVfdXJs
IH19Ij57eyBsb2cubmFtZSB9fTwvYT4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSJ7eyBsb2cu
cXZpc191cmwgfX0iPltxdmlzXTwvYT4KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8
dGQgY2xhc3M9ImRhdGUiPnt7IGxvZy5kYXRlIH19PC90ZD4KKyAgICAgICAgICAgIDx0ZCBjbGFz
cz0ic2l6ZSI+e3sgbG9nLnNpemUgfX08L3RkPgorICAgICAgICA8L3RyPgoreyUgZW5kZm9yICV9
CisgICAgICAgIDwvdGFibGU+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy90ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZiYjlkMzY0
ZDdjZGMwMmYyNjQzZTNkN2JkZDc0ODIxYmY0NDY4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxOCBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9pbmRleC5odG1sCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGYyMjA0YWQ0MWU0OGZmMWRmNGI1YjQ3MzE2
MWRkZTZlODI3ZmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9kZW1vLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHR0cHhfY2xpZW50LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9k
b2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZjMzNhMzk3ODc0YzY1M2M5MWEyMGEwYjkyNTY3M2Q1YzQ5Yzdi
ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL2RvYy50eHQK
QEAgLTAsMCArMSwzIEBACitjcnlwdG9ncmFwaHkKK3NwaGlueF9hdXRvZG9jX3R5cGVoaW50cwor
c3BoaW54Y29udHJpYi1hc3luY2lvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1l
bnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWUyMmU3NGJkMjFhOTQ2N2NmMTY2ZDk0MDRjNjI2OWEwOWQ1YTBj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0
LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitO
b25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRz
L2RvYy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZGVkNzJj
MTcyNGJiMDA0MzIzMjhjNWUyMjliYTczNzYyYzVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsCkBAIC0wLDAgKzEsMjkgQEAKKyMhL2Jpbi9z
aAorCitzZXQgLWUKKworZGVzdGRpcj0kMQorY2FjaGVkaXI9JDEuJFBZVEhPTl9BUkNICisKK2Zv
ciBkIGluIG9wZW5zc2wgJGRlc3RkaXI7IGRvCisgICAgaWYgWyAtZSAkZCBdOyB0aGVuCisgICAg
ICAgIHJtIC1yZiAkZAorICAgIGZpCitkb25lCisKK2lmIFsgISAtZSAkY2FjaGVkaXIgXTsgdGhl
bgorICAgICMgYnVpbGQgb3BlbnNzbAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0
dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogfCB0YXIg
eHogLUMgb3BlbnNzbCAtLXN0cmlwLWNvbXBvbmVudHMgMQorICAgIGNkIG9wZW5zc2wKKworICAg
IC4vY29uZmlnIG5vLWNvbXAgbm8tc2hhcmVkIG5vLXRlc3RzCisgICAgbWFrZQorCisgICAgbWtk
aXIgJGNhY2hlZGlyCisgICAgbWtkaXIgJGNhY2hlZGlyL2xpYgorICAgIGNwIC1SIGluY2x1ZGUg
JGNhY2hlZGlyCisgICAgY3AgbGliY3J5cHRvLmEgbGlic3NsLmEgJGNhY2hlZGlyL2xpYgorZmkK
KworY3AgLVIgJGNhY2hlZGlyICRkZXN0ZGlyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2Ny
aXB0cy9idWlsZC1vcGVuc3NsLmJhdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5z
c2wuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxMDA3OWRkZjgzMjBmNzU0YmQ5NDIyMTU3ZTY1NDM5NDZkNjAw
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3Ns
LmJhdApAQCAtMCwwICsxLDM5IEBACitzZXQgZGVzdGRpcj0lMQorc2V0IGNhY2hlZGlyPSUxLiVQ
WVRIT05fQVJDSCUKKworZm9yICUlZCBpbiAob3BlbnNzbCAlZGVzdGRpciUpIGRvICgKKyAgICBp
ZiBleGlzdCAlJWQgKAorICAgICAgICBybWRpciAvcyAvcSAlJWQKKyAgICApCispCisKK2lmICVQ
WVRIT05fQVJDSCUgPT0gNjQgKAorICAgc2V0IE9QRU5TU0xfQ09ORklHPVZDLVdJTjY0QQorICAg
c2V0IFZDX0FSQ0g9eDY0CispIGVsc2UgKAorICAgc2V0IE9QRU5TU0xfQ09ORklHPVZDLVdJTjMy
CisgICBzZXQgVkNfQVJDSD14ODYKKykKKworY2FsbCAiQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1wyMDE5XEVudGVycHJpc2VcVkNcQXV4aWxpYXJ5XEJ1aWxk
XHZjdmFyc2FsbC5iYXQiICVWQ19BUkNIJQorU0VUIFBBVEg9JVBBVEglO0M6XFByb2dyYW0gRmls
ZXNcTkFTTQorCitpZiBub3QgZXhpc3QgJWNhY2hlZGlyJSAoCisgICAgbWtkaXIgb3BlbnNzbAor
ICAgIGN1cmwgLUwgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4xLjFm
LnRhci5neiAtbyBvcGVuc3NsLnRhci5negorICAgIHRhciB4emYgb3BlbnNzbC50YXIuZ3ogLUMg
b3BlbnNzbCAtLXN0cmlwLWNvbXBvbmVudHMgMQorICAgIGNkIG9wZW5zc2wKKworICAgIHBlcmwg
Q29uZmlndXJlIG5vLWNvbXAgbm8tc2hhcmVkIG5vLXRlc3RzICVPUEVOU1NMX0NPTkZJRyUKKyAg
ICBubWFrZQorCisgICAgbWtkaXIgJWNhY2hlZGlyJQorICAgIG1rZGlyICVjYWNoZWRpciVcaW5j
bHVkZQorICAgIG1rZGlyICVjYWNoZWRpciVcbGliCisgICAgeGNvcHkgaW5jbHVkZSAlY2FjaGVk
aXIlXGluY2x1ZGVcIC9FCisgICAgY29weSBsaWJjcnlwdG8ubGliICVjYWNoZWRpciVcbGliXAor
ICAgIGNvcHkgbGlic3NsLmxpYiAlY2FjaGVkaXIlXGxpYlwKKykKKworbWtkaXIgJWRlc3RkaXIl
Cit4Y29weSAlY2FjaGVkaXIlICVkZXN0ZGlyJSAvRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NjcmlwdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NDdmOTM5ZDQyOGY3MTA2OTQzNDc1MzM3YWJkODI4MGRmMGYxOTRk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cK
QEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAor
CitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3Bl
bnNzbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wuYmF0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OWMwMjVhZDBmNzMzYjM4YmI5NGY4YmI4ZWIwNDc4NWRhM2I0ZjQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZwpAQCAtMCwwICsxLDIxIEBACitbY292ZXJh
Z2U6cnVuXQorc291cmNlID0gYWlvcXVpYworCitbZmxha2U4XQoraWdub3JlPUUyMDMsVzUwMwor
bWF4LWxpbmUtbGVuZ3RoPTE1MAorCitbaXNvcnRdCitkZWZhdWx0X3NlY3Rpb24gPSBUSElSRFBB
UlRZCitpbmNsdWRlX3RyYWlsaW5nX2NvbW1hID0gVHJ1ZQora25vd25fZmlyc3RfcGFydHkgPSBh
aW9xdWljCitsaW5lX2xlbmd0aCA9IDg4CittdWx0aV9saW5lX291dHB1dCA9IDMKKworW215cHld
CitkaXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWNvcmF0
b3JzID0gVHJ1ZQoraWdub3JlX21pc3NpbmdfaW1wb3J0cyA9IFRydWUKK3N0cmljdF9vcHRpb25h
bCA9IEZhbHNlCit3YXJuX3JlZHVuZGFudF9jYXN0cyA9IFRydWUKK3dhcm5fdW51c2VkX2lnbm9y
ZXMgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVjNWVhM2M0NDNmMGQxYmNkYmJlZjFhMjkyZWQwNDc0
NGViOTZiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5weQpAQCAtMCww
ICsxLDY5IEBACitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworCitpbXBvcnQgc2V0dXB0b29s
cworCityb290X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
KQorCithYm91dCA9IHt9CithYm91dF9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAic3Jj
IiwgImFpb3F1aWMiLCAiYWJvdXQucHkiKQord2l0aCBvcGVuKGFib3V0X2ZpbGUsIGVuY29kaW5n
PSJ1dGYtOCIpIGFzIGZwOgorICAgIGV4ZWMoZnAucmVhZCgpLCBhYm91dCkKKworcmVhZG1lX2Zp
bGUgPSBvcy5wYXRoLmpvaW4ocm9vdF9kaXIsICJSRUFETUUucnN0IikKK3dpdGggb3BlbihyZWFk
bWVfZmlsZSwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKKyAgICBsb25nX2Rlc2NyaXB0aW9uID0g
Zi5yZWFkKCkKKworaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgZXh0cmFfY29tcGls
ZV9hcmdzID0gW10KKyAgICBsaWJyYXJpZXMgPSBbImxpYmNyeXB0byIsICJhZHZhcGkzMiIsICJj
cnlwdDMyIiwgImdkaTMyIiwgInVzZXIzMiIsICJ3czJfMzIiXQorZWxzZToKKyAgICBleHRyYV9j
b21waWxlX2FyZ3MgPSBbIi1zdGQ9Yzk5Il0KKyAgICBsaWJyYXJpZXMgPSBbImNyeXB0byJdCisK
K3NldHVwdG9vbHMuc2V0dXAoCisgICAgbmFtZT1hYm91dFsiX190aXRsZV9fIl0sCisgICAgdmVy
c2lvbj1hYm91dFsiX192ZXJzaW9uX18iXSwKKyAgICBkZXNjcmlwdGlvbj1hYm91dFsiX19zdW1t
YXJ5X18iXSwKKyAgICBsb25nX2Rlc2NyaXB0aW9uPWxvbmdfZGVzY3JpcHRpb24sCisgICAgdXJs
PWFib3V0WyJfX3VyaV9fIl0sCisgICAgYXV0aG9yPWFib3V0WyJfX2F1dGhvcl9fIl0sCisgICAg
YXV0aG9yX2VtYWlsPWFib3V0WyJfX2VtYWlsX18iXSwKKyAgICBsaWNlbnNlPWFib3V0WyJfX2xp
Y2Vuc2VfXyJdLAorICAgIGluY2x1ZGVfcGFja2FnZV9kYXRhPVRydWUsCisgICAgY2xhc3NpZmll
cnM9WworICAgICAgICAiRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhIiwKKyAgICAgICAg
IkVudmlyb25tZW50IDo6IFdlYiBFbnZpcm9ubWVudCIsCisgICAgICAgICJJbnRlbmRlZCBBdWRp
ZW5jZSA6OiBEZXZlbG9wZXJzIiwKKyAgICAgICAgIkxpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6
IEJTRCBMaWNlbnNlIiwKKyAgICAgICAgIk9wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRl
bnQiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIiwKKyAgICAgICAg
IlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzIiwKKyAgICAgICAgIlByb2dyYW1t
aW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjYiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFu
Z3VhZ2UgOjogUHl0aG9uIDo6IDMuNyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMy44IiwKKyAgICAgICAgIlRvcGljIDo6IEludGVybmV0IDo6IFdXVy9IVFRQ
IiwKKyAgICBdLAorICAgIGV4dF9tb2R1bGVzPVsKKyAgICAgICAgc2V0dXB0b29scy5FeHRlbnNp
b24oCisgICAgICAgICAgICAiYWlvcXVpYy5fYnVmZmVyIiwKKyAgICAgICAgICAgIGV4dHJhX2Nv
bXBpbGVfYXJncz1leHRyYV9jb21waWxlX2FyZ3MsCisgICAgICAgICAgICBzb3VyY2VzPVsic3Jj
L2Fpb3F1aWMvX2J1ZmZlci5jIl0sCisgICAgICAgICksCisgICAgICAgIHNldHVwdG9vbHMuRXh0
ZW5zaW9uKAorICAgICAgICAgICAgImFpb3F1aWMuX2NyeXB0byIsCisgICAgICAgICAgICBleHRy
YV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdzLAorICAgICAgICAgICAgbGlicmFyaWVz
PWxpYnJhcmllcywKKyAgICAgICAgICAgIHNvdXJjZXM9WyJzcmMvYWlvcXVpYy9fY3J5cHRvLmMi
XSwKKyAgICAgICAgKSwKKyAgICBdLAorICAgIHBhY2thZ2VfZGlyPXsiIjogInNyYyJ9LAorICAg
IHBhY2thZ2VfZGF0YT17ImFpb3F1aWMiOiBbInB5LnR5cGVkIiwgIl9idWZmZXIucHlpIiwgIl9j
cnlwdG8ucHlpIl19LAorICAgIHBhY2thZ2VzPVsiYWlvcXVpYyIsICJhaW9xdWljLmFzeW5jaW8i
LCAiYWlvcXVpYy5oMCIsICJhaW9xdWljLmgzIiwgImFpb3F1aWMucXVpYyJdLAorICAgIGluc3Rh
bGxfcmVxdWlyZXM9WworICAgICAgICAiY2VydGlmaSIsCisgICAgICAgICJjcnlwdG9ncmFwaHkg
Pj0gMi41IiwKKyAgICAgICAgJ2RhdGFjbGFzc2VzOyBweXRob25fdmVyc2lvbiA8ICIzLjciJywK
KyAgICAgICAgInB5bHNxcGFjayA+PSAwLjMuMywgPCAwLjQuMCIsCisgICAgXSwKKykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGFjZWJlZWY4M2VhNDE4OWJm
YWU0Y2E5ZjA4MGQyM2Q4NzdhOGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorIyBmbGFrZTg6IG5vcWEKKwor
ZnJvbSAuYWJvdXQgaW1wb3J0IF9fdmVyc2lvbl9fCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvX2J1ZmZlci5jIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIu
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZWZjNGRiODE3NTkwYmU4ZDczNmIzMjY0NmQ0Y2ZmNDFjOWY2NDY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYwpAQCAt
MCwwICsxLDQ0MCBAQAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlIDxQeXRo
b24uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRSAiYWlvcXVp
Yy5fYnVmZmVyIgorCitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlclJlYWRFcnJvcjsKK3N0YXRpYyBQ
eU9iamVjdCAqQnVmZmVyV3JpdGVFcnJvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2Jq
ZWN0X0hFQUQKKyAgICB1aW50OF90ICpiYXNlOworICAgIHVpbnQ4X3QgKmVuZDsKKyAgICB1aW50
OF90ICpwb3M7Cit9IEJ1ZmZlck9iamVjdDsKKworI2RlZmluZSBDSEVDS19SRUFEX0JPVU5EUyhz
ZWxmLCBsZW4pIFwKKyAgICBpZiAobGVuIDwgMCB8fCBzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5l
bmQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAiUmVhZCBv
dXQgb2YgYm91bmRzIik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKKyNkZWZp
bmUgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIGxlbikgXAorICAgIGlmIChzZWxmLT5wb3MgKyBs
ZW4gPiBzZWxmLT5lbmQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyV3JpdGVF
cnJvciwgIldyaXRlIG91dCBvZiBib3VuZHMiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAor
ICAgIH0KKworc3RhdGljIGludAorQnVmZmVyX2luaXQoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9i
amVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBjaGFyICprd2xpc3Rb
XSA9IHsiY2FwYWNpdHkiLCAiZGF0YSIsIE5VTEx9OworICAgIGludCBjYXBhY2l0eSA9IDA7Cisg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBkYXRh
X2xlbiA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBr
d2FyZ3MsICJ8aXkjIiwgKGNoYXIqKilrd2xpc3QsICZjYXBhY2l0eSwgJmRhdGEsICZkYXRhX2xl
bikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChkYXRhICE9IE5VTEwpIHsKKyAgICAg
ICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhkYXRhX2xlbik7CisgICAgICAgIHNlbGYtPmVuZCA9IHNl
bGYtPmJhc2UgKyBkYXRhX2xlbjsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJhc2UsIGRhdGEsIGRh
dGFfbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmLT5iYXNlID0gbWFsbG9jKGNhcGFj
aXR5KTsKKyAgICAgICAgc2VsZi0+ZW5kID0gc2VsZi0+YmFzZSArIGNhcGFjaXR5OworICAgIH0K
KyAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg
dm9pZAorQnVmZmVyX2RlYWxsb2MoQnVmZmVyT2JqZWN0ICpzZWxmKQoreworICAgIGZyZWUoc2Vs
Zi0+YmFzZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfZGF0YV9zbGljZShCdWZm
ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBzdGFydCwgc3RvcDsK
KyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJnN0YXJ0LCAmc3RvcCkpCisg
ICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBzZWxmLT5iYXNlICsg
c3RhcnQgPiBzZWxmLT5lbmQgfHwKKyAgICAgICAgc3RvcCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0
b3AgPiBzZWxmLT5lbmQgfHwKKyAgICAgICAgc3RvcCA8IHN0YXJ0KSB7CisgICAgICAgIFB5RXJy
X1NldFN0cmluZyhCdWZmZXJSZWFkRXJyb3IsICJSZWFkIG91dCBvZiBib3VuZHMiKTsKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0Fu
ZFNpemUoKGNvbnN0IGNoYXIqKShzZWxmLT5iYXNlICsgc3RhcnQpLCAoc3RvcCAtIHN0YXJ0KSk7
Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfZW9mKEJ1ZmZlck9iamVjdCAqc2VsZiwg
UHlPYmplY3QgKmFyZ3MpCit7CisgICAgaWYgKHNlbGYtPnBvcyA9PSBzZWxmLT5lbmQpCisgICAg
ICAgIFB5X1JFVFVSTl9UUlVFOworICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5
T2JqZWN0ICoKK0J1ZmZlcl9wdWxsX2J5dGVzKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3Qg
KmFyZ3MpCit7CisgICAgaW50IGxlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
ImkiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVDS19SRUFEX0JPVU5E
UyhzZWxmLCBsZW4pOworCisgICAgUHlPYmplY3QgKm8gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRT
aXplKChjb25zdCBjaGFyKilzZWxmLT5wb3MsIGxlbik7CisgICAgc2VsZi0+cG9zICs9IGxlbjsK
KyAgICByZXR1cm4gbzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxsX3VpbnQ4
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9C
T1VORFMoc2VsZiwgMSkKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygKKyAg
ICAgICAgKHVpbnQ4X3QpKCooc2VsZi0+cG9zKyspKQorICAgICk7Cit9CisKK3N0YXRpYyBQeU9i
amVjdCAqCitCdWZmZXJfcHVsbF91aW50MTYoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq
YXJncykKK3sKKyAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCAyKQorCisgICAgdWludDE2X3Qg
dmFsdWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSkgPDwgOCB8CisgICAgICAgICAgICAgICAg
ICAgICAodWludDE2X3QpKCooc2VsZi0+cG9zICsgMSkpOworICAgIHNlbGYtPnBvcyArPSAyOwor
ICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQ
eU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50MzIoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVj
dCAqYXJncykKK3sKKyAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCA0KQorCisgICAgdWludDMy
X3QgdmFsdWUgPSAodWludDMyX3QpKCooc2VsZi0+cG9zKSkgPDwgMjQgfAorICAgICAgICAgICAg
ICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDEpKSA8PCAxNiB8CisgICAgICAgICAg
ICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMikpIDw8IDggfAorICAgICAgICAg
ICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDMpKTsKKyAgICBzZWxmLT5wb3Mg
Kz0gNDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcodmFsdWUpOworfQorCitz
dGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDY0KEJ1ZmZlck9iamVjdCAqc2VsZiwg
UHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKworICAg
IHVpbnQ2NF90IHZhbHVlID0gKHVpbnQ2NF90KSgqKHNlbGYtPnBvcykpIDw8IDU2IHwKKyAgICAg
ICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyAxKSkgPDwgNDggfAorICAg
ICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA0MCB8Cisg
ICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgMykpIDw8IDMyIHwK
KyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA0KSkgPDwgMjQg
fAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDUpKSA8PCAx
NiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNikpIDw8
IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDcpKTsK
KyAgICBzZWxmLT5wb3MgKz0gODsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdM
b25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxsX3VpbnRfdmFy
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdWludDY0X3QgdmFs
dWU7CisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMSkKKyAgICBzd2l0Y2ggKCooc2VsZi0+
cG9zKSA+PiA2KSB7CisgICAgY2FzZSAwOgorICAgICAgICB2YWx1ZSA9ICooc2VsZi0+cG9zKysp
ICYgMHgzRjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICBDSEVDS19SRUFE
X0JPVU5EUyhzZWxmLCAyKQorICAgICAgICB2YWx1ZSA9ICh1aW50MTZfdCkoKihzZWxmLT5wb3Mp
ICYgMHgzRikgPDwgOCB8CisgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyAr
IDEpKTsKKyAgICAgICAgc2VsZi0+cG9zICs9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MjoKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgNCkKKyAgICAgICAgdmFsdWUgPSAo
dWludDMyX3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAo
dWludDMyX3QpKCooc2VsZi0+cG9zICsgMSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWlu
dDMyX3QpKCooc2VsZi0+cG9zICsgMikpIDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50MzJf
dCkoKihzZWxmLT5wb3MgKyAzKSk7CisgICAgICAgIHNlbGYtPnBvcyArPSA0OworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCA4KQor
ICAgICAgICB2YWx1ZSA9ICh1aW50NjRfdCkoKihzZWxmLT5wb3MpICYgMHgzRikgPDwgNTYgfAor
ICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyAxKSkgPDwgNDggfAorICAg
ICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAg
ICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyAzKSkgPDwgMzIgfAorICAgICAgICAg
ICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA0KSkgPDwgMjQgfAorICAgICAgICAgICAg
ICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAgICAg
ICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA2KSkgPDwgOCB8CisgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDcpKTsKKyAgICAgICAgc2VsZi0+cG9zICs9IDg7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25n
KHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX2J5dGVzKEJ1ZmZl
ck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VU
dXBsZShhcmdzLCAieSMiLCAmZGF0YSwgJmRhdGFfbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisKKyAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgZGF0YV9sZW4pCisKKyAgICBtZW1jcHko
c2VsZi0+cG9zLCBkYXRhLCBkYXRhX2xlbik7CisgICAgc2VsZi0+cG9zICs9IGRhdGFfbGVuOwor
ICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1c2hf
dWludDgoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50OF90
IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQiIsICZ2YWx1ZSkpCisg
ICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDEpCisK
KyAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitz
dGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1c2hfdWludDE2KEJ1ZmZlck9iamVjdCAqc2VsZiwg
UHlPYmplY3QgKmFyZ3MpCit7CisgICAgdWludDE2X3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlKGFyZ3MsICJIIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgMikKKworICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05P
TkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50MzIoQnVmZmVyT2Jq
ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkkiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA0KQorICAgICooc2VsZi0+cG9z
KyspID0gKHZhbHVlID4+IDI0KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7
CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gOCk7CisgICAgKihzZWxmLT5wb3MrKykg
PSB2YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1
ZmZlcl9wdXNoX3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorewor
ICAgIHVpbnQ2NF90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIs
ICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRT
KHNlbGYsIDgpCisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNTYpOworICAgICooc2Vs
Zi0+cG9zKyspID0gKHZhbHVlID4+IDQ4KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+
PiA0MCk7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMzIpOworICAgICooc2VsZi0+
cG9zKyspID0gKHZhbHVlID4+IDI0KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAx
Nik7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gOCk7CisgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoK
K0J1ZmZlcl9wdXNoX3VpbnRfdmFyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp
Cit7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3Ms
ICJLIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmFsdWUgPD0g
MHgzRikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgMSkKKyAgICAgICAgKihz
ZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBlbHNl
IGlmICh2YWx1ZSA8PSAweDNGRkYpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYs
IDIpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDgpIHwgMHg0MDsKKyAgICAg
ICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAg
fSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGKSB7CisgICAgICAgIENIRUNLX1dSSVRFX0JP
VU5EUyhzZWxmLCA0KQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCkgfCAw
eDgwOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7CisgICAgICAgICoo
c2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDgpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9IHZh
bHVlOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDB4
M0ZGRkZGRkZGRkZGRkZGRikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgOCkK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNTYpIHwgMHhDMDsKKyAgICAgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDgpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA0MCk7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDMyKTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMjQpOworICAgICAgICAqKHNlbGYt
PnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVl
ID4+IDgpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAgICAgICBQeV9SRVRV
Uk5fTk9ORTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFs
dWVFcnJvciwgIkludGVnZXIgaXMgdG9vIGJpZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdl
ciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAq
CitCdWZmZXJfc2VlayhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAg
IGludCBwb3M7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJnBvcykpCisg
ICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHBvcyA8IDAgfHwgc2VsZi0+YmFzZSArIHBv
cyA+IHNlbGYtPmVuZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9y
LCAiU2VlayBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor
ICAgIHNlbGYtPnBvcyA9IHNlbGYtPmJhc2UgKyBwb3M7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9
CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfdGVsbChCdWZmZXJPYmplY3QgKnNlbGYsIFB5
T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9z
IC0gc2VsZi0+YmFzZSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBCdWZmZXJfbWV0aG9kc1td
ID0geworICAgIHsiZGF0YV9zbGljZSIsIChQeUNGdW5jdGlvbilCdWZmZXJfZGF0YV9zbGljZSwg
TUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJlb2YiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX2VvZiwg
TUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJwdWxsX2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZl
cl9wdWxsX2J5dGVzLCBNRVRIX1ZBUkFSR1MsICJQdWxsIGJ5dGVzLiJ9LAorICAgIHsicHVsbF91
aW50OCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50OCwgTUVUSF9WQVJBUkdTLCAiUHVs
bCBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVsbF91aW50MTYiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDE2LCBNRVRIX1ZBUkFSR1MsICJQdWxsIGEgMTYtYml0
IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnQzMiIsIChQeUNGdW5jdGlvbilC
dWZmZXJfcHVsbF91aW50MzIsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSAzMi1iaXQgdW5zaWduZWQg
aW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludDY0IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxs
X3VpbnQ2NCwgTUVUSF9WQVJBUkdTLCAiUHVsbCBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9
LAorICAgIHsicHVsbF91aW50X3ZhciIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50X3Zh
ciwgTUVUSF9WQVJBUkdTLCAiUHVsbCBhIFFVSUMgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGlu
dGVnZXIuIn0sCisgICAgeyJwdXNoX2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX2J5
dGVzLCBNRVRIX1ZBUkFSR1MsICJQdXNoIGJ5dGVzLiJ9LAorICAgIHsicHVzaF91aW50OCIsIChQ
eUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50OCwgTUVUSF9WQVJBUkdTLCAiUHVzaCBhbiA4LWJp
dCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50MTYiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3B1c2hfdWludDE2LCBNRVRIX1ZBUkFSR1MsICJQdXNoIGEgMTYtYml0IHVuc2lnbmVk
IGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnQzMiIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVz
aF91aW50MzIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4i
fSwKKyAgICB7InB1c2hfdWludDY0IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQ2NCwg
TUVUSF9WQVJBUkdTLCAiUHVzaCBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVzaF91aW50X3ZhciIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50X3ZhciwgTUVUSF9W
QVJBUkdTLCAiUHVzaCBhIFFVSUMgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuIn0s
CisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9zZWVrLCBNRVRIX1ZBUkFSR1MsICIi
fSwKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3RlbGwsIE1FVEhfVkFSQVJHUywg
IiJ9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVyX2NhcGFjaXR5
X2dldHRlcihCdWZmZXJPYmplY3QqIHNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPmVuZCAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMg
UHlPYmplY3QqCitCdWZmZXJfZGF0YV9nZXR0ZXIoQnVmZmVyT2JqZWN0KiBzZWxmLCB2b2lkICpj
bG9zdXJlKSB7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNo
YXIqKXNlbGYtPmJhc2UsIHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMgUHlH
ZXRTZXREZWYgQnVmZmVyX2dldHNldFtdID0geworICAgIHsiY2FwYWNpdHkiLCAoZ2V0dGVyKSBC
dWZmZXJfY2FwYWNpdHlfZ2V0dGVyLCBOVUxMLCAiIiwgTlVMTCB9LAorICAgIHsiZGF0YSIsIChn
ZXR0ZXIpIEJ1ZmZlcl9kYXRhX2dldHRlciwgTlVMTCwgIiIsIE5VTEwgfSwKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQnVmZmVyVHlwZSA9IHsKKyAgICBQeVZhck9iamVj
dF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICBNT0RVTEVfTkFNRSAiLkJ1ZmZlciIsICAgICAgICAg
ICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEJ1ZmZlck9iamVjdCksICAgICAgICAgICAg
ICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilCdWZmZXJfZGVhbGxvYywg
ICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RF
RkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICJCdWZmZXIgb2JqZWN0
cyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQnVm
ZmVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBC
dWZmZXJfZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8K
KyAgICAoaW5pdHByb2MpQnVmZmVyX2luaXQsICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307
CisKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1
bGVEZWZfSEVBRF9JTklULAorICAgIE1PRFVMRV9OQU1FLCAgICAgICAgICAgICAgICAgICAgICAg
IC8qIG1fbmFtZSAqLworICAgICJBIGZhc3RlciBidWZmZXIuIiwgICAgICAgICAgICAgICAgIC8q
IG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9z
aXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRo
b2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9yZWxv
YWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZl
cnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVh
ciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAq
LworfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19idWZmZXIodm9pZCkKK3sKKyAgICBQ
eU9iamVjdCogbTsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZWRlZik7CisgICAg
aWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBCdWZmZXJSZWFkRXJy
b3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUgIi5CdWZmZXJSZWFkRXJyb3IiLCBQ
eUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVyUmVhZEVycm9yKTsK
KyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJ1ZmZlclJlYWRFcnJvciIsIEJ1ZmZlclJlYWRF
cnJvcik7CisKKyAgICBCdWZmZXJXcml0ZUVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQnVmZmVyV3JpdGVFcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAg
IFB5X0lOQ1JFRihCdWZmZXJXcml0ZUVycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwg
IkJ1ZmZlcldyaXRlRXJyb3IiLCBCdWZmZXJXcml0ZUVycm9yKTsKKworICAgIEJ1ZmZlclR5cGUu
dHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQnVmZmVy
VHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJkJ1ZmZlclR5
cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQnVmZmVyIiwgKFB5T2JqZWN0ICopJkJ1
ZmZlclR5cGUpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZl
ci5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTZlNDNjY2EzYTUxOGZmNzVlMjEzZDNkZWRmNThiMWIwYzc3YzYw
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLnB5
aQpAQCAtMCwwICsxLDI3IEBACitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworY2xhc3Mg
QnVmZmVyUmVhZEVycm9yKFZhbHVlRXJyb3IpOiAuLi4KK2NsYXNzIEJ1ZmZlcldyaXRlRXJyb3Io
VmFsdWVFcnJvcik6IC4uLgorCitjbGFzcyBCdWZmZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGNhcGFjaXR5OiBPcHRpb25hbFtpbnRdID0gMCwgZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9u
ZSk6IC4uLgorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjYXBhY2l0eShzZWxmKSAtPiBpbnQ6IC4u
LgorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkYXRhKHNlbGYpIC0+IGJ5dGVzOiAuLi4KKyAgICBk
ZWYgZGF0YV9zbGljZShzZWxmLCBzdGFydDogaW50LCBlbmQ6IGludCkgLT4gYnl0ZXM6IC4uLgor
ICAgIGRlZiBlb2Yoc2VsZikgLT4gYm9vbDogLi4uCisgICAgZGVmIHNlZWsoc2VsZiwgcG9zOiBp
bnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiB0ZWxsKHNlbGYpIC0+IGludDogLi4uCisgICAgZGVm
IHB1bGxfYnl0ZXMoc2VsZiwgbGVuZ3RoOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgcHVs
bF91aW50OChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX3VpbnQxNihzZWxmKSAtPiBp
bnQ6IC4uLgorICAgIGRlZiBwdWxsX3VpbnQzMihzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBw
dWxsX3VpbnQ2NChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX3VpbnRfdmFyKHNlbGYp
IC0+IGludDogLi4uCisgICAgZGVmIHB1c2hfYnl0ZXMoc2VsZiwgdmFsdWU6IGJ5dGVzKSAtPiBO
b25lOiAuLi4KKyAgICBkZWYgcHVzaF91aW50OChzZWxmLCB2YWx1ZTogaW50KSAtPiBOb25lOiAu
Li4KKyAgICBkZWYgcHVzaF91aW50MTYoc2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisg
ICAgZGVmIHB1c2hfdWludDMyKHNlbGYsIHY6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1
c2hfdWludDY0KHNlbGYsIHY6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludF92
YXIoc2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5jIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlw
dG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZTE1NTRkNGIyMTNjZDA3ZmNlZGY4YTM5MzA0Y2Q2MjAwNDRmMTY3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYwpA
QCAtMCwwICsxLDQ1NSBAQAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlIDxQ
eXRob24uaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXZw
Lmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2NyeXB0byIKKworI2RlZmluZSBB
RUFEX0tFWV9MRU5HVEhfTUFYIDMyCisjZGVmaW5lIEFFQURfTk9OQ0VfTEVOR1RIIDEyCisjZGVm
aW5lIEFFQURfVEFHX0xFTkdUSCAxNgorCisjZGVmaW5lIFBBQ0tFVF9MRU5HVEhfTUFYIDE1MDAK
KyNkZWZpbmUgUEFDS0VUX05VTUJFUl9MRU5HVEhfTUFYIDQKKyNkZWZpbmUgU0FNUExFX0xFTkdU
SCAxNgorCisjZGVmaW5lIENIRUNLX1JFU1VMVChleHByKSBcCisgICAgaWYgKCEoZXhwcikpIHsg
XAorICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmco
Q3J5cHRvRXJyb3IsICJPcGVuU1NMIGNhbGwgZmFpbGVkIik7IFwKKyAgICAgICAgcmV0dXJuIE5V
TEw7IFwKKyAgICB9CisKKyNkZWZpbmUgQ0hFQ0tfUkVTVUxUX0NUT1IoZXhwcikgXAorICAgIGlm
ICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7IFwKKyAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3BlblNTTCBjYWxsIGZhaWxlZCIpOyBcCisgICAg
ICAgIHJldHVybiAtMTsgXAorICAgIH0KKworc3RhdGljIFB5T2JqZWN0ICpDcnlwdG9FcnJvcjsK
KworLyogQUVBRCAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAg
IEVWUF9DSVBIRVJfQ1RYICpkZWNyeXB0X2N0eDsKKyAgICBFVlBfQ0lQSEVSX0NUWCAqZW5jcnlw
dF9jdHg7CisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOworICAg
IHVuc2lnbmVkIGNoYXIga2V5W0FFQURfS0VZX0xFTkdUSF9NQVhdOworICAgIHVuc2lnbmVkIGNo
YXIgaXZbQUVBRF9OT05DRV9MRU5HVEhdOworICAgIHVuc2lnbmVkIGNoYXIgbm9uY2VbQUVBRF9O
T05DRV9MRU5HVEhdOworfSBBRUFET2JqZWN0OworCitzdGF0aWMgRVZQX0NJUEhFUl9DVFggKgor
Y3JlYXRlX2N0eChjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsIGludCBrZXlfbGVuZ3RoLCBpbnQg
b3BlcmF0aW9uKQoreworICAgIEVWUF9DSVBIRVJfQ1RYICpjdHg7CisgICAgaW50IHJlczsKKwor
ICAgIGN0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworICAgIENIRUNLX1JFU1VMVChjdHggIT0g
MCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChjdHgsIGNpcGhlciwgTlVMTCwgTlVM
TCwgTlVMTCwgb3BlcmF0aW9uKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAg
cmVzID0gRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGgoY3R4LCBrZXlfbGVuZ3RoKTsKKyAg
ICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3Ry
bChjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sIEFFQURfTk9OQ0VfTEVOR1RILCBOVUxMKTsK
KyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmV0dXJuIGN0eDsKK30KKworc3Rh
dGljIGludAorQUVBRF9pbml0KEFFQURPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9i
amVjdCAqa3dhcmdzKQoreworICAgIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lOworICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKmtleSwgKml2OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVu
LCBrZXlfbGVuLCBpdl9sZW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkj
eSN5IyIsICZjaXBoZXJfbmFtZSwgJmNpcGhlcl9uYW1lX2xlbiwgJmtleSwgJmtleV9sZW4sICZp
diwgJml2X2xlbikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGNvbnN0IEVWUF9DSVBIRVIg
KmV2cF9jaXBoZXIgPSBFVlBfZ2V0X2NpcGhlcmJ5bmFtZShjaXBoZXJfbmFtZSk7CisgICAgaWYg
KGV2cF9jaXBoZXIgPT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoQ3J5cHRvRXJyb3IsICJJ
bnZhbGlkIGNpcGhlciBuYW1lOiAlcyIsIGNpcGhlcl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0x
OworICAgIH0KKyAgICBpZiAoa2V5X2xlbiA+IEFFQURfS0VZX0xFTkdUSF9NQVgpIHsKKyAgICAg
ICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBrZXkgbGVuZ3RoIik7Cisg
ICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGl2X2xlbiA+IEFFQURfTk9OQ0VfTEVO
R1RIKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFsaWQgaXYg
bGVuZ3RoIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1jcHkoc2VsZi0+
a2V5LCBrZXksIGtleV9sZW4pOworICAgIG1lbWNweShzZWxmLT5pdiwgaXYsIGl2X2xlbik7CisK
KyAgICBzZWxmLT5kZWNyeXB0X2N0eCA9IGNyZWF0ZV9jdHgoZXZwX2NpcGhlciwga2V5X2xlbiwg
MCk7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1Ioc2VsZi0+ZGVjcnlwdF9jdHggIT0gMCk7CisKKyAg
ICBzZWxmLT5lbmNyeXB0X2N0eCA9IGNyZWF0ZV9jdHgoZXZwX2NpcGhlciwga2V5X2xlbiwgMSk7
CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1Ioc2VsZi0+ZW5jcnlwdF9jdHggIT0gMCk7CisKKyAgICBy
ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0FFQURfZGVhbGxvYyhBRUFET2JqZWN0ICpzZWxm
KQoreworICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUoc2VsZi0+ZGVjcnlwdF9jdHgpOworICAgIEVW
UF9DSVBIRVJfQ1RYX2ZyZWUoc2VsZi0+ZW5jcnlwdF9jdHgpOworfQorCitzdGF0aWMgUHlPYmpl
Y3QqCitBRUFEX2RlY3J5cHQoQUVBRE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgKmFzc29jaWF0ZWQ7CisgICAgUHlfc3NpemVf
dCBkYXRhX2xlbiwgYXNzb2NpYXRlZF9sZW47CisgICAgaW50IG91dGxlbiwgb3V0bGVuMiwgcmVz
OworICAgIHVpbnQ2NF90IHBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5
I3kjSyIsICZkYXRhLCAmZGF0YV9sZW4sICZhc3NvY2lhdGVkLCAmYXNzb2NpYXRlZF9sZW4sICZw
bikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGRhdGFfbGVuIDwgQUVBRF9UQUdf
TEVOR1RIIHx8IGRhdGFfbGVuID4gUEFDS0VUX0xFTkdUSF9NQVgpIHsKKyAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBwYXlsb2FkIGxlbmd0aCIpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1jcHkoc2VsZi0+bm9uY2UsIHNlbGYtPml2
LCBBRUFEX05PTkNFX0xFTkdUSCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsK
KyAgICAgICAgc2VsZi0+bm9uY2VbQUVBRF9OT05DRV9MRU5HVEggLSAxIC0gaV0gXj0gKHVpbnQ4
X3QpKHBuID4+IDggKiBpKTsKKyAgICB9CisKKyAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9jdHJs
KHNlbGYtPmRlY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX1RBRywgQUVBRF9UQUdfTEVOR1RI
LCAodm9pZCopKGRhdGEgKyAoZGF0YV9sZW4gLSBBRUFEX1RBR19MRU5HVEgpKSk7CisgICAgQ0hF
Q0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYt
PmRlY3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNlLCAwKTsKKyAg
ICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShz
ZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNzb2NpYXRlZF9s
ZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVy
VXBkYXRlKHNlbGYtPmRlY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4sIGRhdGEsIGRh
dGFfbGVuIC0gQUVBRF9UQUdfTEVOR1RIKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOwor
CisgICAgcmVzID0gRVZQX0NpcGhlckZpbmFsX2V4KHNlbGYtPmRlY3J5cHRfY3R4LCBOVUxMLCAm
b3V0bGVuMik7CisgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhD
cnlwdG9FcnJvciwgIlBheWxvYWQgZGVjcnlwdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNv
bnN0IGNoYXIqKXNlbGYtPmJ1ZmZlciwgb3V0bGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0Kgor
QUVBRF9lbmNyeXB0KEFFQURPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0
YV9sZW4sIGFzc29jaWF0ZWRfbGVuOworICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAg
ICB1aW50NjRfdCBwbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0si
LCAmZGF0YSwgJmRhdGFfbGVuLCAmYXNzb2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQor
ICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChkYXRhX2xlbiA+IFBBQ0tFVF9MRU5HVEhf
TUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFsaWQgcGF5
bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtY3B5
KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5HVEgpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5vbmNlW0FFQURfTk9OQ0VfTEVO
R1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7CisgICAgfQorCisgICAgcmVz
ID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+ZW5jcnlwdF9jdHgsIE5VTEwsIE5VTEwsIHNlbGYt
PmtleSwgc2VsZi0+bm9uY2UsIDEpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAg
ICByZXMgPSBFVlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVu
LCBhc3NvY2lhdGVkLCBhc3NvY2lhdGVkX2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAw
KTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZW5jcnlwdF9jdHgsIHNlbGYt
PmJ1ZmZlciwgJm91dGxlbiwgZGF0YSwgZGF0YV9sZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyRmluYWxfZXgoc2VsZi0+ZW5jcnlwdF9jdHgs
IE5VTEwsICZvdXRsZW4yKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDAgJiYgb3V0bGVuMiA9
PSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoc2VsZi0+ZW5jcnlwdF9jdHgs
IEVWUF9DVFJMX0NDTV9HRVRfVEFHLCBBRUFEX1RBR19MRU5HVEgsIHNlbGYtPmJ1ZmZlciArIG91
dGxlbik7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJldHVybiBQeUJ5dGVz
X0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5idWZmZXIsIG91dGxlbiArIEFF
QURfVEFHX0xFTkdUSCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBBRUFEX21ldGhvZHNbXSA9
IHsKKyAgICB7ImRlY3J5cHQiLCAoUHlDRnVuY3Rpb24pQUVBRF9kZWNyeXB0LCBNRVRIX1ZBUkFS
R1MsICIifSwKKyAgICB7ImVuY3J5cHQiLCAoUHlDRnVuY3Rpb24pQUVBRF9lbmNyeXB0LCBNRVRI
X1ZBUkFSR1MsICIifSwKKworICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBB
RUFEVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICBNT0RV
TEVfTkFNRSAiLkFFQUQiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9m
KEFFQURPYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAo
ZGVzdHJ1Y3RvcilBRUFEX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLworICAgICJBRUFEIG9iamVjdHMiLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rv
YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQUVBRF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQUVBRF9pbml0LCAgICAg
ICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKy8qIEhlYWRlclByb3RlY3Rpb24gKi8KKwor
dHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAq
Y3R4OworICAgIGludCBpc19jaGFjaGEyMDsKKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltQQUNL
RVRfTEVOR1RIX01BWF07CisgICAgdW5zaWduZWQgY2hhciBtYXNrWzMxXTsKKyAgICB1bnNpZ25l
ZCBjaGFyIHplcm9bNV07Cit9IEhlYWRlclByb3RlY3Rpb25PYmplY3Q7CisKK3N0YXRpYyBpbnQK
K0hlYWRlclByb3RlY3Rpb25faW5pdChIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9i
amVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJf
bmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfdCBjaXBo
ZXJfbmFtZV9sZW4sIGtleV9sZW47CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFy
c2VUdXBsZShhcmdzLCAieSN5IyIsICZjaXBoZXJfbmFtZSwgJmNpcGhlcl9uYW1lX2xlbiwgJmtl
eSwgJmtleV9sZW4pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVS
ICpldnBfY2lwaGVyID0gRVZQX2dldF9jaXBoZXJieW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlm
IChldnBfY2lwaGVyID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAi
SW52YWxpZCBjaXBoZXIgbmFtZTogJXMiLCBjaXBoZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAt
MTsKKyAgICB9CisKKyAgICBtZW1zZXQoc2VsZi0+bWFzaywgMCwgc2l6ZW9mKHNlbGYtPm1hc2sp
KTsKKyAgICBtZW1zZXQoc2VsZi0+emVybywgMCwgc2l6ZW9mKHNlbGYtPnplcm8pKTsKKyAgICBz
ZWxmLT5pc19jaGFjaGEyMCA9IGNpcGhlcl9uYW1lX2xlbiA9PSA4ICYmIG1lbWNtcChjaXBoZXJf
bmFtZSwgImNoYWNoYTIwIiwgOCkgPT0gMDsKKworICAgIHNlbGYtPmN0eCA9IEVWUF9DSVBIRVJf
Q1RYX25ldygpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNlbGYtPmN0eCAhPSAwKTsKKworICAg
IHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgZXZwX2NpcGhlciwgTlVMTCwgTlVM
TCwgTlVMTCwgMSk7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1IocmVzICE9IDApOworCisgICAgcmVz
ID0gRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGgoc2VsZi0+Y3R4LCBrZXlfbGVuKTsKKyAg
ICBDSEVDS19SRVNVTFRfQ1RPUihyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5p
dF9leChzZWxmLT5jdHgsIE5VTEwsIE5VTEwsIGtleSwgTlVMTCwgMSk7CisgICAgQ0hFQ0tfUkVT
VUxUX0NUT1IocmVzICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitI
ZWFkZXJQcm90ZWN0aW9uX2RlYWxsb2MoSGVhZGVyUHJvdGVjdGlvbk9iamVjdCAqc2VsZikKK3sK
KyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKHNlbGYtPmN0eCk7Cit9CisKK3N0YXRpYyBpbnQgSGVh
ZGVyUHJvdGVjdGlvbl9tYXNrKEhlYWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIHNhbXBsZSkKK3sKKyAgICBpbnQgb3V0bGVuOworICAgIGlmIChzZWxmLT5p
c19jaGFjaGEyMCkgeworICAgICAgICByZXR1cm4gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4
LCBOVUxMLCBOVUxMLCBOVUxMLCBzYW1wbGUsIDEpICYmCisgICAgICAgICAgICAgICBFVlBfQ2lw
aGVyVXBkYXRlKHNlbGYtPmN0eCwgc2VsZi0+bWFzaywgJm91dGxlbiwgc2VsZi0+emVybywgc2l6
ZW9mKHNlbGYtPnplcm8pKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gRVZQX0NpcGhl
clVwZGF0ZShzZWxmLT5jdHgsIHNlbGYtPm1hc2ssICZvdXRsZW4sIHNhbXBsZSwgU0FNUExFX0xF
TkdUSCk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0aW9uX2Fw
cGx5KEhlYWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhlYWRlciwgKnBheWxvYWQ7CisgICAgUHlfc3NpemVfdCBo
ZWFkZXJfbGVuLCBwYXlsb2FkX2xlbjsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlKGFyZ3MsICJ5I3kjIiwgJmhlYWRlciwgJmhlYWRlcl9sZW4sICZwYXlsb2FkLCAm
cGF5bG9hZF9sZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGludCBwbl9sZW5ndGgg
PSAoaGVhZGVyWzBdICYgMHgwMykgKyAxOworICAgIGludCBwbl9vZmZzZXQgPSBoZWFkZXJfbGVu
IC0gcG5fbGVuZ3RoOworCisgICAgcmVzID0gSGVhZGVyUHJvdGVjdGlvbl9tYXNrKHNlbGYsIHBh
eWxvYWQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVggLSBwbl9sZW5ndGgpOworICAgIENIRUNL
X1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBoZWFkZXIsIGhl
YWRlcl9sZW4pOworICAgIG1lbWNweShzZWxmLT5idWZmZXIgKyBoZWFkZXJfbGVuLCBwYXlsb2Fk
LCBwYXlsb2FkX2xlbik7CisKKyAgICBpZiAoc2VsZi0+YnVmZmVyWzBdICYgMHg4MCkgeworICAg
ICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MEY7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0gJiAweDFGOworICAg
IH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG5fbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
c2VsZi0+YnVmZmVyW3BuX29mZnNldCArIGldIF49IHNlbGYtPm1hc2tbMSArIGldOworICAgIH0K
KworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxm
LT5idWZmZXIsIGhlYWRlcl9sZW4gKyBwYXlsb2FkX2xlbik7Cit9CisKK3N0YXRpYyBQeU9iamVj
dCoKK0hlYWRlclByb3RlY3Rpb25fcmVtb3ZlKEhlYWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYs
IFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBhY2tldDsKKyAg
ICBQeV9zc2l6ZV90IHBhY2tldF9sZW47CisgICAgaW50IHBuX29mZnNldCwgcmVzOworCisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I0kiLCAmcGFja2V0LCAmcGFja2V0X2xlbiwg
JnBuX29mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzID0gSGVhZGVyUHJv
dGVjdGlvbl9tYXNrKHNlbGYsIHBhY2tldCArIHBuX29mZnNldCArIFBBQ0tFVF9OVU1CRVJfTEVO
R1RIX01BWCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIG1lbWNweShzZWxm
LT5idWZmZXIsIHBhY2tldCwgcG5fb2Zmc2V0ICsgUEFDS0VUX05VTUJFUl9MRU5HVEhfTUFYKTsK
KworICAgIGlmIChzZWxmLT5idWZmZXJbMF0gJiAweDgwKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZl
clswXSBePSBzZWxmLT5tYXNrWzBdICYgMHgwRjsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxm
LT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MUY7CisgICAgfQorCisgICAgaW50IHBu
X2xlbmd0aCA9IChzZWxmLT5idWZmZXJbMF0gJiAweDAzKSArIDE7CisgICAgdWludDMyX3QgcG5f
dHJ1bmNhdGVkID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBuX2xlbmd0aDsgKytpKSB7
CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSBePSBzZWxmLT5tYXNrWzEgKyBp
XTsKKyAgICAgICAgcG5fdHJ1bmNhdGVkID0gc2VsZi0+YnVmZmVyW3BuX29mZnNldCArIGldIHwg
KHBuX3RydW5jYXRlZCA8PCA4KTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgi
eSNpIiwgc2VsZi0+YnVmZmVyLCBwbl9vZmZzZXQgKyBwbl9sZW5ndGgsIHBuX3RydW5jYXRlZCk7
Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBIZWFkZXJQcm90ZWN0aW9uX21ldGhvZHNbXSA9IHsK
KyAgICB7ImFwcGx5IiwgKFB5Q0Z1bmN0aW9uKUhlYWRlclByb3RlY3Rpb25fYXBwbHksIE1FVEhf
VkFSQVJHUywgIiJ9LAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKUhlYWRlclByb3RlY3Rp
b25fcmVtb3ZlLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQ
eVR5cGVPYmplY3QgSGVhZGVyUHJvdGVjdGlvblR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVB
RF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5IZWFkZXJQcm90ZWN0aW9uIiwgICAg
LyogdHBfbmFtZSAqLworICAgIHNpemVvZihIZWFkZXJQcm90ZWN0aW9uT2JqZWN0KSwgICAgIC8q
IHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpSGVhZGVyUHJvdGVjdGlvbl9kZWFs
bG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVG
QVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgIkhlYWRlclByb3RlY3Rp
b24gb2JqZWN0cyIsICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBIZWFk
ZXJQcm90ZWN0aW9uX21ldGhvZHMsICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwor
ICAgIChpbml0cHJvYylIZWFkZXJQcm90ZWN0aW9uX2luaXQsICAgIC8qIHRwX2luaXQgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworfTsK
KworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIG1vZHVsZWRlZiA9IHsKKyAgICBQeU1vZHVs
ZURlZl9IRUFEX0lOSVQsCisgICAgTU9EVUxFX05BTUUsICAgICAgICAgICAgICAgICAgICAgICAg
LyogbV9uYW1lICovCisgICAgIkEgZmFzdGVyIGJ1ZmZlci4iLCAgICAgICAgICAgICAgICAgLyog
bV9kb2MgKi8KKyAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Np
emUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhv
ZHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3JlbG9h
ZCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVy
c2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFy
ICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICov
Cit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19jcnlwdG8odm9pZCkKK3sKKyAgICBQeU9i
amVjdCogbTsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZWRlZik7CisgICAgaWYg
KG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDcnlwdG9FcnJvciA9IFB5
RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkNyeXB0b0Vycm9yIiwgUHlFeGNfVmFsdWVF
cnJvciwgTlVMTCk7CisgICAgUHlfSU5DUkVGKENyeXB0b0Vycm9yKTsKKyAgICBQeU1vZHVsZV9B
ZGRPYmplY3QobSwgIkNyeXB0b0Vycm9yIiwgQ3J5cHRvRXJyb3IpOworCisgICAgQUVBRFR5cGUu
dHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQUVBRFR5
cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZBRUFEVHlwZSk7
CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJBRUFEIiwgKFB5T2JqZWN0ICopJkFFQURUeXBl
KTsKKworICAgIEhlYWRlclByb3RlY3Rpb25UeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3
OworICAgIGlmIChQeVR5cGVfUmVhZHkoJkhlYWRlclByb3RlY3Rpb25UeXBlKSA8IDApCisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmSGVhZGVyUHJvdGVjdGlvblR5cGUpOwor
ICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSGVhZGVyUHJvdGVjdGlvbiIsIChQeU9iamVjdCAq
KSZIZWFkZXJQcm90ZWN0aW9uVHlwZSk7CisKKyAgICAvLyBlbnN1cmUgcmVxdWlyZWQgY2lwaGVy
cyBhcmUgaW5pdGlhbGlzZWQKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9lY2IoKSk7
CisgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfZ2NtKCkpOworICAgIEVWUF9hZGRfY2lw
aGVyKEVWUF9hZXNfMjU2X2VjYigpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9n
Y20oKSk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9fY3J5cHRvLnB5aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5
aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMmM1MjMwZDk5MmU3ZjIxOWM5M2JlYzNjYjQ1NzIxNGMyNTE4Yzc3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCkBA
IC0wLDAgKzEsMTcgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorCitjbGFzcyBBRUFEOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfbmFtZTogYnl0ZXMsIGtleTogYnl0ZXMsIGl2
OiBieXRlcyk6IC4uLgorICAgIGRlZiBkZWNyeXB0KAorICAgICAgICBzZWxmLCBkYXRhOiBieXRl
cywgYXNzb2NpYXRlZF9kYXRhOiBieXRlcywgcGFja2V0X251bWJlcjogaW50CisgICAgKSAtPiBi
eXRlczogLi4uCisgICAgZGVmIGVuY3J5cHQoCisgICAgICAgIHNlbGYsIGRhdGE6IGJ5dGVzLCBh
c3NvY2lhdGVkX2RhdGE6IGJ5dGVzLCBwYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IGJ5dGVz
OiAuLi4KKworY2xhc3MgQ3J5cHRvRXJyb3IoVmFsdWVFcnJvcik6IC4uLgorCitjbGFzcyBIZWFk
ZXJQcm90ZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfbmFtZTogYnl0ZXMs
IGtleTogYnl0ZXMpOiAuLi4KKyAgICBkZWYgYXBwbHkoc2VsZiwgcGxhaW5faGVhZGVyOiBieXRl
cywgcHJvdGVjdGVkX3BheWxvYWQ6IGJ5dGVzKSAtPiBieXRlczogLi4uCisgICAgZGVmIHJlbW92
ZShzZWxmLCBwYWNrZXQ6IGJ5dGVzLCBlbmNyeXB0ZWRfb2Zmc2V0OiBpbnQpIC0+IFR1cGxlW2J5
dGVzLCBpbnRdOiAuLi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91dC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmNk
OGYzM2Q2NWRjYmYyMzk3ZDEyYzgzYzY1MWNjODk5ZTkxNTU2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CkBAIC0wLDAgKzEsNyBAQAorX19hdXRo
b3JfXyA9ICJKZXJlbXkgTGFpbsOpIgorX19lbWFpbF9fID0gImplcmVteS5sYWluZUBtNHgub3Jn
IgorX19saWNlbnNlX18gPSAiQlNEIgorX19zdW1tYXJ5X18gPSAiQW4gaW1wbGVtZW50YXRpb24g
b2YgUVVJQyBhbmQgSFRUUC8zIgorX190aXRsZV9fID0gImFpb3F1aWMiCitfX3VyaV9fID0gImh0
dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYyIKK19fdmVyc2lvbl9fID0gIjAuOC43Igpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZmRhNjlkODk5MzRlOGY4N2EyMWM1Yjk4ZTk3YTExNDkxMmJlOGNiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKQEAgLTAs
MCArMSwzIEBACitmcm9tIC5jbGllbnQgaW1wb3J0IGNvbm5lY3QgICMgbm9xYQorZnJvbSAucHJv
dG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wgICMgbm9xYQorZnJvbSAuc2VydmVy
IGltcG9ydCBzZXJ2ZSAgIyBub3FhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYXN5bmNpby9jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9j
bGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5MzdlOWU4OTJiZmU3NmNkMmMyZmM3Y2IzYTZlNGZmNzM5
MzNkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lv
L2NsaWVudC5weQpAQCAtMCwwICsxLDk0IEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGlwYWRk
cmVzcworaW1wb3J0IHNvY2tldAoraW1wb3J0IHN5cworZnJvbSB0eXBpbmcgaW1wb3J0IEFzeW5j
R2VuZXJhdG9yLCBDYWxsYWJsZSwgT3B0aW9uYWwsIGNhc3QKKworZnJvbSAuLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gLi5xdWljLmNvbm5lY3Rpb24g
aW1wb3J0IFF1aWNDb25uZWN0aW9uCitmcm9tIC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0SGFu
ZGxlcgorZnJvbSAuY29tcGF0IGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCitmcm9tIC5wcm90
b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKwor
X19hbGxfXyA9IFsiY29ubmVjdCJdCisKKworQGFzeW5jY29udGV4dG1hbmFnZXIKK2FzeW5jIGRl
ZiBjb25uZWN0KAorICAgIGhvc3Q6IHN0ciwKKyAgICBwb3J0OiBpbnQsCisgICAgKiwKKyAgICBj
b25maWd1cmF0aW9uOiBPcHRpb25hbFtRdWljQ29uZmlndXJhdGlvbl0gPSBOb25lLAorICAgIGNy
ZWF0ZV9wcm90b2NvbDogT3B0aW9uYWxbQ2FsbGFibGVdID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2Nv
bCwKKyAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFu
ZGxlcl0gPSBOb25lLAorICAgIHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFu
ZGxlcl0gPSBOb25lLAorICAgIHdhaXRfY29ubmVjdGVkOiBib29sID0gVHJ1ZSwKKyAgICBsb2Nh
bF9wb3J0OiBpbnQgPSAwLAorKSAtPiBBc3luY0dlbmVyYXRvcltRdWljQ29ubmVjdGlvblByb3Rv
Y29sLCBOb25lXToKKyAgICAiIiIKKyAgICBDb25uZWN0IHRvIGEgUVVJQyBzZXJ2ZXIgYXQgdGhl
IGdpdmVuIGBob3N0YCBhbmQgYHBvcnRgLgorCisgICAgOm1ldGg6YGNvbm5lY3QoKWAgcmV0dXJu
cyBhbiBhd2FpdGFibGUuIEF3YWl0aW5nIGl0IHlpZWxkcyBhCisgICAgOmNsYXNzOmB+YWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2xgIHdoaWNoIGNhbiBiZSB1c2VkIHRvCisg
ICAgY3JlYXRlIHN0cmVhbXMuCisKKyAgICA6ZnVuYzpgY29ubmVjdGAgYWxzbyBhY2NlcHRzIHRo
ZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgorCisgICAgKiBgYGNvbmZpZ3VyYXRpb25g
YCBpcyBhIDpjbGFzczpgfmFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uLlF1aWNDb25maWd1cmF0
aW9uYAorICAgICAgY29uZmlndXJhdGlvbiBvYmplY3QuCisgICAgKiBgYGNyZWF0ZV9wcm90b2Nv
bGBgIGFsbG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgdGhh
dAorICAgICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQgc2hvdWxkIGJlIGEgY2FsbGFibGUg
b3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBzYW1lCisgICAgICBhcmd1bWVudHMgYXMgOmNsYXNzOmB+
YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2xgIGFuZCByZXR1cm5pbmcKKyAg
ICAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlv
blByb3RvY29sYCBvciBhIHN1YmNsYXNzLgorICAgICogYGBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
YGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMKKyAgICAgIGVuZ2lu
ZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0IGlzIHJlY2VpdmVkLgorICAgICogYGBzdHJlYW1f
aGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVh
bSBpcworICAgICAgY3JlYXRlZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xh
c3M6YGFzeW5jaW8uU3RyZWFtUmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0
cmVhbVdyaXRlcmAuCisgICAgKiBgYGxvY2FsX3BvcnRgYCBpcyB0aGUgVURQIHBvcnQgbnVtYmVy
IHRoYXQgdGhpcyBjbGllbnQgd2FudHMgdG8gYmluZC4KKyAgICAiIiIKKyAgICBsb29wID0gYXN5
bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9jYWxfaG9zdCA9ICI6OiIKKworICAgICMgaWYg
aG9zdCBpcyBub3QgYW4gSVAgYWRkcmVzcywgcGFzcyBpdCB0byBlbmFibGUgU05JCisgICAgdHJ5
OgorICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcyhob3N0KQorICAgICAgICBzZXJ2ZXJfbmFt
ZSA9IE5vbmUKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgc2VydmVyX25hbWUgPSBo
b3N0CisKKyAgICAjIGxvb2t1cCByZW1vdGUgYWRkcmVzcworICAgIGluZm9zID0gYXdhaXQgbG9v
cC5nZXRhZGRyaW5mbyhob3N0LCBwb3J0LCB0eXBlPXNvY2tldC5TT0NLX0RHUkFNKQorICAgIGFk
ZHIgPSBpbmZvc1swXVs0XQorICAgIGlmIGxlbihhZGRyKSA9PSAyOgorICAgICAgICAjIGRldGVy
bWluZSBiZWhhdmlvdXIgZm9yIElQdjQKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4z
MiI6CisgICAgICAgICAgICAjIG9uIFdpbmRvd3MsIHdlIG11c3QgdXNlIGFuIElQdjQgc29ja2V0
IHRvIHJlYWNoIGFuIElQdjQgaG9zdAorICAgICAgICAgICAgbG9jYWxfaG9zdCA9ICIwLjAuMC4w
IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBvdGhlciBwbGF0Zm9ybXMgc3VwcG9ydCBk
dWFsLXN0YWNrIHNvY2tldHMKKyAgICAgICAgICAgIGFkZHIgPSAoIjo6ZmZmZjoiICsgYWRkclsw
XSwgYWRkclsxXSwgMCwgMCkKKworICAgICMgcHJlcGFyZSBRVUlDIGNvbm5lY3Rpb24KKyAgICBp
ZiBjb25maWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29u
ZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICBpZiBzZXJ2ZXJfbmFtZSBpcyBub3QgTm9u
ZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSA9IHNlcnZlcl9uYW1lCisgICAg
Y29ubmVjdGlvbiA9IFF1aWNDb25uZWN0aW9uKAorICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vzc2lvbl90aWNrZXRfaGFuZGxlcgor
ICAgICkKKworICAgICMgY29ubmVjdAorICAgIF8sIHByb3RvY29sID0gYXdhaXQgbG9vcC5jcmVh
dGVfZGF0YWdyYW1fZW5kcG9pbnQoCisgICAgICAgIGxhbWJkYTogY3JlYXRlX3Byb3RvY29sKGNv
bm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyKSwKKyAgICAgICAgbG9jYWxf
YWRkcj0obG9jYWxfaG9zdCwgbG9jYWxfcG9ydCksCisgICAgKQorICAgIHByb3RvY29sID0gY2Fz
dChRdWljQ29ubmVjdGlvblByb3RvY29sLCBwcm90b2NvbCkKKyAgICBwcm90b2NvbC5jb25uZWN0
KGFkZHIpCisgICAgaWYgd2FpdF9jb25uZWN0ZWQ6CisgICAgICAgIGF3YWl0IHByb3RvY29sLndh
aXRfY29ubmVjdGVkKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIHByb3RvY29sCisgICAgZmlu
YWxseToKKyAgICAgICAgcHJvdG9jb2wuY2xvc2UoKQorICAgIGF3YWl0IHByb3RvY29sLndhaXRf
Y2xvc2VkKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2Nv
bXBhdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMDFlNjJmNmQ5NDI5NjE5MzNmYjZmZTA3MmFlMGYyN2U2NDNiNGZmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY29tcGF0LnB5CkBA
IC0wLDAgKzEsMzMgQEAKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgQ29udGV4dERlY29yYXRvcgor
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKK3RyeToKKyAgICBmcm9tIGNvbnRleHRsaWIg
aW1wb3J0IGFzeW5jY29udGV4dG1hbmFnZXIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBhc3lu
Y2NvbnRleHRtYW5hZ2VyID0gTm9uZQorCisKK2NsYXNzIF9Bc3luY0dlbmVyYXRvckNvbnRleHRN
YW5hZ2VyKENvbnRleHREZWNvcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBh
cmdzLCBrd2RzKToKKyAgICAgICAgc2VsZi5nZW4gPSBmdW5jKCphcmdzLCAqKmt3ZHMpCisgICAg
ICAgIHNlbGYuZnVuYywgc2VsZi5hcmdzLCBzZWxmLmt3ZHMgPSBmdW5jLCBhcmdzLCBrd2RzCisg
ICAgICAgIHNlbGYuX19kb2NfXyA9IGZ1bmMuX19kb2NfXworCisgICAgYXN5bmMgZGVmIF9fYWVu
dGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLmdlbi5fX2FuZXh0X18oKQor
CisgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCB0eXAsIHZhbHVlLCB0cmFjZWJhY2spOgor
ICAgICAgICBpZiB0eXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhd2FpdCBzZWxmLmdlbi5h
dGhyb3codHlwLCB2YWx1ZSwgdHJhY2ViYWNrKQorCisKK2RlZiBfYXN5bmNjb250ZXh0bWFuYWdl
cihmdW5jKToKKyAgICBAd3JhcHMoZnVuYykKKyAgICBkZWYgaGVscGVyKCphcmdzLCAqKmt3ZHMp
OgorICAgICAgICByZXR1cm4gX0FzeW5jR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoZnVuYywgYXJn
cywga3dkcykKKworICAgIHJldHVybiBoZWxwZXIKKworCitpZiBhc3luY2NvbnRleHRtYW5hZ2Vy
IGlzIE5vbmU6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9IF9hc3luY2NvbnRleHRtYW5hZ2Vy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJlMDA0MzM1YjhmZmZmOWQ3MDI1ZDM2NWVjYWE5MzFmNzc0NzIyOTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5weQpAQCAt
MCwwICsxLDI0MCBAQAoraW1wb3J0IGFzeW5jaW8KK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIENh
bGxhYmxlLCBEaWN0LCBPcHRpb25hbCwgVGV4dCwgVHVwbGUsIFVuaW9uLCBjYXN0CisKK2Zyb20g
Li5xdWljIGltcG9ydCBldmVudHMKK2Zyb20gLi5xdWljLmNvbm5lY3Rpb24gaW1wb3J0IE5ldHdv
cmtBZGRyZXNzLCBRdWljQ29ubmVjdGlvbgorCitRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IENh
bGxhYmxlW1tieXRlc10sIE5vbmVdCitRdWljU3RyZWFtSGFuZGxlciA9IENhbGxhYmxlW1thc3lu
Y2lvLlN0cmVhbVJlYWRlciwgYXN5bmNpby5TdHJlYW1Xcml0ZXJdLCBOb25lXQorCisKK2NsYXNz
IFF1aWNDb25uZWN0aW9uUHJvdG9jb2woYXN5bmNpby5EYXRhZ3JhbVByb3RvY29sKToKKyAgICBk
ZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsIHF1aWM6IFF1aWNDb25uZWN0aW9uLCBzdHJlYW1f
aGFuZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZQorICAgICk6CisgICAg
ICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKworICAgICAgICBzZWxmLl9jbG9z
ZWQgPSBhc3luY2lvLkV2ZW50KCkKKyAgICAgICAgc2VsZi5fY29ubmVjdGVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9u
ZV1dID0gTm9uZQorICAgICAgICBzZWxmLl9sb29wID0gbG9vcAorICAgICAgICBzZWxmLl9waW5n
X3dhaXRlcnM6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtOb25lXV0gPSB7fQorICAgICAgICBz
ZWxmLl9xdWljID0gcXVpYworICAgICAgICBzZWxmLl9zdHJlYW1fcmVhZGVyczogRGljdFtpbnQs
IGFzeW5jaW8uU3RyZWFtUmVhZGVyXSA9IHt9CisgICAgICAgIHNlbGYuX3RpbWVyOiBPcHRpb25h
bFthc3luY2lvLlRpbWVySGFuZGxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGltZXJfYXQ6IE9w
dGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fdHJhbnNtaXRfdGFzazogT3B0aW9u
YWxbYXN5bmNpby5IYW5kbGVdID0gTm9uZQorICAgICAgICBzZWxmLl90cmFuc3BvcnQ6IE9wdGlv
bmFsW2FzeW5jaW8uRGF0YWdyYW1UcmFuc3BvcnRdID0gTm9uZQorCisgICAgICAgICMgY2FsbGJh
Y2tzCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXI6IFF1aWNDb25u
ZWN0aW9uSWRIYW5kbGVyID0gbGFtYmRhIGM6IE5vbmUKKyAgICAgICAgc2VsZi5fY29ubmVjdGlv
bl9pZF9yZXRpcmVkX2hhbmRsZXI6IFF1aWNDb25uZWN0aW9uSWRIYW5kbGVyID0gbGFtYmRhIGM6
IE5vbmUKKyAgICAgICAgc2VsZi5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXI6IENhbGxh
YmxlW1tdLCBOb25lXSA9IGxhbWJkYTogTm9uZQorICAgICAgICBpZiBzdHJlYW1faGFuZGxlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbV9oYW5kbGVyID0gc3RyZWFtX2hh
bmRsZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbV9oYW5kbGVyID0g
bGFtYmRhIHIsIHc6IE5vbmUKKworICAgIGRlZiBjaGFuZ2VfY29ubmVjdGlvbl9pZChzZWxmKSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hhbmdlIHRoZSBjb25uZWN0aW9uIElEIHVz
ZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgcGVlci4KKworICAgICAgICBUaGUgcHJldmlvdXMg
Y29ubmVjdGlvbiBJRCB3aWxsIGJlIHJldGlyZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxm
Ll9xdWljLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisK
KyAgICBkZWYgY2xvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENsb3Nl
IHRoZSBjb25uZWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jbG9zZSgp
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgYWRkcjog
TmV0d29ya0FkZHJlc3MpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBJbml0aWF0ZSB0
aGUgVExTIGhhbmRzaGFrZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBjYW4gb25seSBiZSBjYWxs
ZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBz
ZWxmLl9xdWljLmNvbm5lY3QoYWRkciwgbm93PXNlbGYuX2xvb3AudGltZSgpKQorICAgICAgICBz
ZWxmLnRyYW5zbWl0KCkKKworICAgIGFzeW5jIGRlZiBjcmVhdGVfc3RyZWFtKAorICAgICAgICBz
ZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBUdXBsZVthc3lu
Y2lvLlN0cmVhbVJlYWRlciwgYXN5bmNpby5TdHJlYW1Xcml0ZXJdOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ3JlYXRlIGEgUVVJQyBzdHJlYW0gYW5kIHJldHVybiBhIHBhaXIgb2YgKHJlYWRlciwg
d3JpdGVyKSBvYmplY3RzLgorCisgICAgICAgIFRoZSByZXR1cm5lZCByZWFkZXIgYW5kIHdyaXRl
ciBvYmplY3RzIGFyZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVJlYWRlcmAK
KyAgICAgICAgYW5kIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgIGNsYXNzZXMuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoCisgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1pc191bmlkaXJlY3Rp
b25hbAorICAgICAgICApCisgICAgICAgIHJldHVybiBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZCkKKworICAgIGRlZiByZXF1ZXN0X2tleV91cGRhdGUoc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgIiIiCisgICAgICAgIFJlcXVlc3QgYW4gdXBkYXRlIG9mIHRoZSBlbmNyeXB0aW9uIGtleXMu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9xdWljLnJlcXVlc3Rfa2V5X3VwZGF0ZSgpCisg
ICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgYXN5bmMgZGVmIHBpbmcoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgIiIiCisgICAgICAgIFBpbmcgdGhlIHBlZXIgYW5kIHdhaXQgZm9yIHRoZSBy
ZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRl
X2Z1dHVyZSgpCisgICAgICAgIHVpZCA9IGlkKHdhaXRlcikKKyAgICAgICAgc2VsZi5fcGluZ193
YWl0ZXJzW3VpZF0gPSB3YWl0ZXIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3BpbmcodWlkKQor
ICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zaGllbGQod2Fp
dGVyKQorCisgICAgZGVmIHRyYW5zbWl0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBTZW5kIHBlbmRpbmcgZGF0YWdyYW1zIHRvIHRoZSBwZWVyIGFuZCBhcm0gdGhlIHRpbWVy
IGlmIG5lZWRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3RyYW5zbWl0X3Rhc2sgPSBO
b25lCisKKyAgICAgICAgIyBzZW5kIGRhdGFncmFtcworICAgICAgICBmb3IgZGF0YSwgYWRkciBp
biBzZWxmLl9xdWljLmRhdGFncmFtc190b19zZW5kKG5vdz1zZWxmLl9sb29wLnRpbWUoKSk6Cisg
ICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQuc2VuZHRvKGRhdGEsIGFkZHIpCisKKyAgICAgICAg
IyByZS1hcm0gdGltZXIKKyAgICAgICAgdGltZXJfYXQgPSBzZWxmLl9xdWljLmdldF90aW1lcigp
CisgICAgICAgIGlmIHNlbGYuX3RpbWVyIGlzIG5vdCBOb25lIGFuZCBzZWxmLl90aW1lcl9hdCAh
PSB0aW1lcl9hdDoKKyAgICAgICAgICAgIHNlbGYuX3RpbWVyLmNhbmNlbCgpCisgICAgICAgICAg
ICBzZWxmLl90aW1lciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fdGltZXIgaXMgTm9uZSBhbmQg
dGltZXJfYXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl90aW1lciA9IHNlbGYuX2xv
b3AuY2FsbF9hdCh0aW1lcl9hdCwgc2VsZi5faGFuZGxlX3RpbWVyKQorICAgICAgICBzZWxmLl90
aW1lcl9hdCA9IHRpbWVyX2F0CisKKyAgICBhc3luYyBkZWYgd2FpdF9jbG9zZWQoc2VsZikgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIGJl
IGNsb3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGF3YWl0IHNlbGYuX2Nsb3NlZC53YWl0KCkK
KworICAgIGFzeW5jIGRlZiB3YWl0X2Nvbm5lY3RlZChzZWxmKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgV2FpdCBmb3IgdGhlIFRMUyBoYW5kc2hha2UgdG8gY29tcGxldGUuCisgICAg
ICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fY29ubmVjdGVkX3dhaXRlciBpcyBOb25lLCAi
YWxyZWFkeSBhd2FpdGluZyBjb25uZWN0ZWQiCisgICAgICAgIGlmIG5vdCBzZWxmLl9jb25uZWN0
ZWQ6CisgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVh
dGVfZnV0dXJlKCkKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHNlbGYuX2Nvbm5l
Y3RlZF93YWl0ZXIpCisKKyAgICAjIGFzeW5jaW8uVHJhbnNwb3J0CisKKyAgICBkZWYgY29ubmVj
dGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25l
OgorICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3Bv
cnQsIHRyYW5zcG9ydCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBV
bmlvbltieXRlcywgVGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLl9xdWljLnJlY2VpdmVfZGF0YWdyYW0oY2FzdChieXRlcywgZGF0YSksIGFkZHIsIG5v
dz1zZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19ldmVudHMoKQorICAg
ICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICMgb3ZlcnJpZGFibGUKKworICAgIGRlZiBxdWlj
X2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBldmVudHMuUXVpY0V2ZW50KSAtPiBOb25lOgor
ICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGVkIHdoZW4gYSBRVUlDIGV2ZW50IGlzIHJlY2VpdmVk
LgorCisgICAgICAgIFJlaW1wbGVtZW50IHRoaXMgaW4geW91ciBzdWJjbGFzcyB0byBoYW5kbGUg
dGhlIGV2ZW50cy4KKyAgICAgICAgIiIiCisgICAgICAgICMgRklYTUU6IG1vdmUgdGhpcyB0byBh
IHN1YmNsYXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCk6CisgICAgICAgICAgICBmb3IgcmVhZGVyIGluIHNlbGYuX3N0cmVhbV9yZWFk
ZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHJlYWRlci5mZWVkX2VvZigpCisgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlN0cmVhbURhdGFSZWNlaXZlZCk6CisgICAg
ICAgICAgICByZWFkZXIgPSBzZWxmLl9zdHJlYW1fcmVhZGVycy5nZXQoZXZlbnQuc3RyZWFtX2lk
LCBOb25lKQorICAgICAgICAgICAgaWYgcmVhZGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
cmVhZGVyLCB3cml0ZXIgPSBzZWxmLl9jcmVhdGVfc3RyZWFtKGV2ZW50LnN0cmVhbV9pZCkKKyAg
ICAgICAgICAgICAgICBzZWxmLl9zdHJlYW1faGFuZGxlcihyZWFkZXIsIHdyaXRlcikKKyAgICAg
ICAgICAgIHJlYWRlci5mZWVkX2RhdGEoZXZlbnQuZGF0YSkKKyAgICAgICAgICAgIGlmIGV2ZW50
LmVuZF9zdHJlYW06CisgICAgICAgICAgICAgICAgcmVhZGVyLmZlZWRfZW9mKCkKKworICAgICMg
cHJpdmF0ZQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKAorICAgICAgICBzZWxmLCBzdHJlYW1f
aWQ6IGludAorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXToKKyAgICAgICAgYWRhcHRlciA9IFF1aWNTdHJlYW1BZGFwdGVyKHNlbGYsIHN0
cmVhbV9pZCkKKyAgICAgICAgcmVhZGVyID0gYXN5bmNpby5TdHJlYW1SZWFkZXIoKQorICAgICAg
ICB3cml0ZXIgPSBhc3luY2lvLlN0cmVhbVdyaXRlcihhZGFwdGVyLCBOb25lLCByZWFkZXIsIHNl
bGYuX2xvb3ApCisgICAgICAgIHNlbGYuX3N0cmVhbV9yZWFkZXJzW3N0cmVhbV9pZF0gPSByZWFk
ZXIKKyAgICAgICAgcmV0dXJuIHJlYWRlciwgd3JpdGVyCisKKyAgICBkZWYgX2hhbmRsZV90aW1l
cihzZWxmKSAtPiBOb25lOgorICAgICAgICBub3cgPSBtYXgoc2VsZi5fdGltZXJfYXQsIHNlbGYu
X2xvb3AudGltZSgpKQorICAgICAgICBzZWxmLl90aW1lciA9IE5vbmUKKyAgICAgICAgc2VsZi5f
dGltZXJfYXQgPSBOb25lCisgICAgICAgIHNlbGYuX3F1aWMuaGFuZGxlX3RpbWVyKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgp
CisKKyAgICBkZWYgX3Byb2Nlc3NfZXZlbnRzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGV2ZW50
ID0gc2VsZi5fcXVpYy5uZXh0X2V2ZW50KCkKKyAgICAgICAgd2hpbGUgZXZlbnQgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvbklk
SXNzdWVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uX2lkX2lzc3VlZF9oYW5k
bGVyKGV2ZW50LmNvbm5lY3Rpb25faWQpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZl
bnQsIGV2ZW50cy5Db25uZWN0aW9uSWRSZXRpcmVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9j
b25uZWN0aW9uX2lkX3JldGlyZWRfaGFuZGxlcihldmVudC5jb25uZWN0aW9uX2lkKQorICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQp
OgorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZF9oYW5kbGVyKCkK
KworICAgICAgICAgICAgICAgICMgYWJvcnQgY29ubmVjdGlvbiB3YWl0ZXIKKyAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgICAgICB3YWl0ZXIgPSBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHdh
aXRlci5zZXRfZXhjZXB0aW9uKENvbm5lY3Rpb25FcnJvcikKKworICAgICAgICAgICAgICAgICMg
YWJvcnQgcGluZyB3YWl0ZXJzCisgICAgICAgICAgICAgICAgZm9yIHdhaXRlciBpbiBzZWxmLl9w
aW5nX3dhaXRlcnMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfZXhj
ZXB0aW9uKENvbm5lY3Rpb25FcnJvcikKKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3dhaXRl
cnMuY2xlYXIoKQorCisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VkLnNldCgpCisgICAgICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpOgor
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0
ZXIuc2V0X3Jlc3VsdChOb25lKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuUGluZ0Fja25vd2xlZGdlZCk6CisgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5f
cGluZ193YWl0ZXJzLnBvcChldmVudC51aWQsIE5vbmUpCisgICAgICAgICAgICAgICAgaWYgd2Fp
dGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChO
b25lKQorICAgICAgICAgICAgc2VsZi5xdWljX2V2ZW50X3JlY2VpdmVkKGV2ZW50KQorICAgICAg
ICAgICAgZXZlbnQgPSBzZWxmLl9xdWljLm5leHRfZXZlbnQoKQorCisgICAgZGVmIF90cmFuc21p
dF9zb29uKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYuX3RyYW5zbWl0X3Rhc2sgaXMg
Tm9uZToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zbWl0X3Rhc2sgPSBzZWxmLl9sb29wLmNhbGxf
c29vbihzZWxmLnRyYW5zbWl0KQorCisKK2NsYXNzIFF1aWNTdHJlYW1BZGFwdGVyKGFzeW5jaW8u
VHJhbnNwb3J0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvdG9jb2w6IFF1aWNDb25uZWN0
aW9uUHJvdG9jb2wsIHN0cmVhbV9pZDogaW50KToKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisKKyAgICBkZWYgY2Fu
X3dyaXRlX2VvZihzZWxmKSAtPiBib29sOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVm
IGdldF9leHRyYV9pbmZvKHNlbGYsIG5hbWU6IHN0ciwgZGVmYXVsdDogQW55ID0gTm9uZSkgLT4g
QW55OgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB1bmRl
cmx5aW5nIFFVSUMgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSA9PSAic3Ry
ZWFtX2lkIjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN0cmVhbV9pZAorCisgICAgZGVmIHdy
aXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLnByb3RvY29sLl9xdWljLnNlbmRfc3RyZWFt
X2RhdGEoc2VsZi5zdHJlYW1faWQsIGRhdGEpCisgICAgICAgIHNlbGYucHJvdG9jb2wuX3RyYW5z
bWl0X3Nvb24oKQorCisgICAgZGVmIHdyaXRlX2VvZihzZWxmKToKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFtX2lkLCBiIiIsIGVuZF9zdHJl
YW09VHJ1ZSkKKyAgICAgICAgc2VsZi5wcm90b2NvbC5fdHJhbnNtaXRfc29vbigpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwZWU0NjBi
NmVkNjZlMDk0NTM4NWYxZjU0ODU4Y2MwZWY5MTg4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3NlcnZlci5weQpAQCAtMCwwICsxLDIxMCBAQAor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBvcworZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwK
K2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQsIFVuaW9u
LCBjYXN0CisKK2Zyb20gLi5idWZmZXIgaW1wb3J0IEJ1ZmZlcgorZnJvbSAuLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gLi5xdWljLmNvbm5lY3Rpb24g
aW1wb3J0IE5ldHdvcmtBZGRyZXNzLCBRdWljQ29ubmVjdGlvbgorZnJvbSAuLnF1aWMucGFja2V0
IGltcG9ydCAoCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBlbmNvZGVfcXVpY19yZXRy
eSwKKyAgICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uLAorICAgIHB1bGxfcXVpY19o
ZWFkZXIsCispCitmcm9tIC4ucXVpYy5yZXRyeSBpbXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVy
Citmcm9tIC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0RmV0Y2hlciwgU2Vzc2lvblRpY2tldEhh
bmRsZXIKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sLCBRdWlj
U3RyZWFtSGFuZGxlcgorCitfX2FsbF9fID0gWyJzZXJ2ZSJdCisKKworY2xhc3MgUXVpY1NlcnZl
cihhc3luY2lvLkRhdGFncmFtUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRp
b24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbDogQ2FsbGFibGUgPSBRdWljQ29ubmVjdGlvblBy
b3RvY29sLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFtTZXNzaW9u
VGlja2V0RmV0Y2hlcl0gPSBOb25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyOiBP
cHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgICAgICBzdGF0ZWxlc3Nf
cmV0cnk6IGJvb2wgPSBGYWxzZSwKKyAgICAgICAgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFsW1F1
aWNTdHJlYW1IYW5kbGVyXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9j
b25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9jcmVhdGVfcHJvdG9j
b2wgPSBjcmVhdGVfcHJvdG9jb2wKKyAgICAgICAgc2VsZi5fbG9vcCA9IGFzeW5jaW8uZ2V0X2V2
ZW50X2xvb3AoKQorICAgICAgICBzZWxmLl9wcm90b2NvbHM6IERpY3RbYnl0ZXMsIFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2xdID0ge30KKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hl
ciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRf
aGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0
OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0XSA9IE5vbmUKKworICAgICAgICBz
ZWxmLl9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisKKyAgICAgICAgaWYgc3RhdGVs
ZXNzX3JldHJ5OgorICAgICAgICAgICAgc2VsZi5fcmV0cnkgPSBRdWljUmV0cnlUb2tlbkhhbmRs
ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcmV0cnkgPSBOb25lCisKKyAg
ICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIGZvciBwcm90b2NvbCBpbiBzZXQoc2VsZi5fcHJv
dG9jb2xzLnZhbHVlcygpKToKKyAgICAgICAgICAgIHByb3RvY29sLmNsb3NlKCkKKyAgICAgICAg
c2VsZi5fcHJvdG9jb2xzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0LmNsb3NlKCkK
KworICAgIGRlZiBjb25uZWN0aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0OiBhc3luY2lvLkJhc2VU
cmFuc3BvcnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IGNhc3QoYXN5bmNp
by5EYXRhZ3JhbVRyYW5zcG9ydCwgdHJhbnNwb3J0KQorCisgICAgZGVmIGRhdGFncmFtX3JlY2Vp
dmVkKHNlbGYsIGRhdGE6IFVuaW9uW2J5dGVzLCBUZXh0XSwgYWRkcjogTmV0d29ya0FkZHJlc3Mp
IC0+IE5vbmU6CisgICAgICAgIGRhdGEgPSBjYXN0KGJ5dGVzLCBkYXRhKQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhlYWRlciA9
IHB1bGxfcXVpY19oZWFkZXIoCisgICAgICAgICAgICAgICAgYnVmLCBob3N0X2NpZF9sZW5ndGg9
c2VsZi5fY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lkX2xlbmd0aAorICAgICAgICAgICAgKQor
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICMgdmVyc2lvbiBuZWdvdGlhdGlvbgorICAgICAgICBpZiAoCisgICAgICAgICAgICBoZWFkZXIu
dmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGhlYWRlci52ZXJzaW9uIG5vdCBp
biBzZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucworICAgICAgICApOgorICAg
ICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0bygKKyAgICAgICAgICAgICAgICBlbmNvZGVf
cXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfY2lk
PWhlYWRlci5kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
X2NpZD1oZWFkZXIuc291cmNlX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX3Zl
cnNpb25zPXNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgYWRkciwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIHByb3RvY29sID0gc2VsZi5fcHJvdG9jb2xzLmdldChoZWFk
ZXIuZGVzdGluYXRpb25fY2lkLCBOb25lKQorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lk
OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHByb3Rv
Y29sIGlzIE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4oZGF0YSkgPj0gMTIwMAorICAgICAgICAg
ICAgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMCisgICAgICAg
ICk6CisgICAgICAgICAgICAjIHN0YXRlbGVzcyByZXRyeQorICAgICAgICAgICAgaWYgc2VsZi5f
cmV0cnkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbm90IGhlYWRlci50b2tlbjoK
KyAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSByZXRyeSB0b2tlbgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl90cmFuc3BvcnQuc2VuZHRvKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1o
ZWFkZXIudmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfY2lkPW9z
LnVyYW5kb20oOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lk
PWhlYWRlci5zb3VyY2VfY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFs
X2Rlc3RpbmF0aW9uX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHJ5X3Rva2VuPXNlbGYuX3JldHJ5LmNyZWF0ZV90b2tlbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICAjIHZhbGlkYXRlIHJldHJ5IHRva2VuCisgICAgICAgICAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgPSBz
ZWxmLl9yZXRyeS52YWxpZGF0ZV90b2tlbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRyLCBoZWFkZXIudG9rZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICAgICAgIyBjcmVhdGUgbmV3IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGNv
bm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PXNlbGYuX2NvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgbG9nZ2VyX2Nvbm5lY3Rpb25f
aWQ9b3JpZ2luYWxfY29ubmVjdGlvbl9pZCBvciBoZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQ9b3JpZ2luYWxfY29ubmVjdGlvbl9p
ZCwKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXNlbGYuX3Nlc3Npb25f
dGlja2V0X2ZldGNoZXIsCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1z
ZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAgICAgICAgICAgKQorICAgICAgICAgICAg
cHJvdG9jb2wgPSBzZWxmLl9jcmVhdGVfcHJvdG9jb2woCisgICAgICAgICAgICAgICAgY29ubmVj
dGlvbiwgc3RyZWFtX2hhbmRsZXI9c2VsZi5fc3RyZWFtX2hhbmRsZXIKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHByb3RvY29sLmNvbm5lY3Rpb25fbWFkZShzZWxmLl90cmFuc3BvcnQpCisK
KyAgICAgICAgICAgICMgcmVnaXN0ZXIgY2FsbGJhY2tzCisgICAgICAgICAgICBwcm90b2NvbC5f
Y29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlciA9IHBhcnRpYWwoCisgICAgICAgICAgICAgICAg
c2VsZi5fY29ubmVjdGlvbl9pZF9pc3N1ZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZCwg
cHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sLl9j
b25uZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlciA9IHBhcnRpYWwoCisgICAgICAgICAgICAgICAg
c2VsZi5fY29ubmVjdGlvbl90ZXJtaW5hdGVkLCBwcm90b2NvbD1wcm90b2NvbAorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICBzZWxmLl9wcm90b2NvbHNbaGVhZGVyLmRlc3RpbmF0aW9uX2Np
ZF0gPSBwcm90b2NvbAorICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2xzW2Nvbm5lY3Rpb24uaG9z
dF9jaWRdID0gcHJvdG9jb2wKKworICAgICAgICBpZiBwcm90b2NvbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHByb3RvY29sLmRhdGFncmFtX3JlY2VpdmVkKGRhdGEsIGFkZHIpCisKKyAgICBk
ZWYgX2Nvbm5lY3Rpb25faWRfaXNzdWVkKHNlbGYsIGNpZDogYnl0ZXMsIHByb3RvY29sOiBRdWlj
Q29ubmVjdGlvblByb3RvY29sKToKKyAgICAgICAgc2VsZi5fcHJvdG9jb2xzW2NpZF0gPSBwcm90
b2NvbAorCisgICAgZGVmIF9jb25uZWN0aW9uX2lkX3JldGlyZWQoCisgICAgICAgIHNlbGYsIGNp
ZDogYnl0ZXMsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sCisgICAgKSAtPiBOb25l
OgorICAgICAgICBhc3NlcnQgc2VsZi5fcHJvdG9jb2xzW2NpZF0gPT0gcHJvdG9jb2wKKyAgICAg
ICAgZGVsIHNlbGYuX3Byb3RvY29sc1tjaWRdCisKKyAgICBkZWYgX2Nvbm5lY3Rpb25fdGVybWlu
YXRlZChzZWxmLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgICAgIGZv
ciBjaWQsIHByb3RvIGluIGxpc3Qoc2VsZi5fcHJvdG9jb2xzLml0ZW1zKCkpOgorICAgICAgICAg
ICAgaWYgcHJvdG8gPT0gcHJvdG9jb2w6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX3Byb3Rv
Y29sc1tjaWRdCisKKworYXN5bmMgZGVmIHNlcnZlKAorICAgIGhvc3Q6IHN0ciwKKyAgICBwb3J0
OiBpbnQsCisgICAgKiwKKyAgICBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbiwKKyAg
ICBjcmVhdGVfcHJvdG9jb2w6IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAg
ICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0RmV0Y2hlcl0g
PSBOb25lLAorICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI6IE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFsc2UsCisg
ICAgc3RyZWFtX2hhbmRsZXI6IFF1aWNTdHJlYW1IYW5kbGVyID0gTm9uZSwKKykgLT4gUXVpY1Nl
cnZlcjoKKyAgICAiIiIKKyAgICBTdGFydCBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9z
dGAgYW5kIGBwb3J0YC4KKworICAgIDpmdW5jOmBzZXJ2ZWAgcmVxdWlyZXMgYSA6Y2xhc3M6YH5h
aW9xdWljLnF1aWMuY29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICBjb250YWlu
aW5nIFRMUyBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgYXMgdGhlIGBgY29uZmlndXJhdGlv
bmBgIGFyZ3VtZW50LgorCisgICAgOmZ1bmM6YHNlcnZlYCBhbHNvIGFjY2VwdHMgdGhlIGZvbGxv
d2luZyBvcHRpb25hbCBhcmd1bWVudHM6CisKKyAgICAqIGBgY3JlYXRlX3Byb3RvY29sYGAgYWxs
b3dzIGN1c3RvbWl6aW5nIHRoZSA6Y2xhc3M6YH5hc3luY2lvLlByb3RvY29sYCB0aGF0CisgICAg
ICBtYW5hZ2VzIHRoZSBjb25uZWN0aW9uLiBJdCBzaG91bGQgYmUgYSBjYWxsYWJsZSBvciBjbGFz
cyBhY2NlcHRpbmcgdGhlIHNhbWUKKyAgICAgIGFyZ3VtZW50cyBhcyA6Y2xhc3M6YH5haW9xdWlj
LmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgYW5kIHJldHVybmluZworICAgICAgYW4g
aW5zdGFuY2Ugb2YgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9j
b2xgIG9yIGEgc3ViY2xhc3MuCisgICAgKiBgYHNlc3Npb25fdGlja2V0X2ZldGNoZXJgYCBpcyBh
IGNhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4g
YSBzZXNzaW9uIHRpY2tldCBpcyBwcmVzZW50ZWQgYnkgdGhlIHBlZXIuIEl0IHNob3VsZCByZXR1
cm4KKyAgICAgIHRoZSBzZXNzaW9uIHRpY2tldCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgb3IgYE5v
bmVgIGlmIGl0IGlzIG5vdCBmb3VuZC4KKyAgICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBg
IGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUg
d2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBpcyBpc3N1ZWQuIEl0IHNob3VsZCBzdG9yZSB0aGUg
c2Vzc2lvbgorICAgICAgdGlja2V0IGZvciBmdXR1cmUgbG9va3VwLgorICAgICogYGBzdGF0ZWxl
c3NfcmV0cnlgYCBzcGVjaWZpZXMgd2hldGhlciBhIHN0YXRlbGVzcyByZXRyeSBzaG91bGQgYmUK
KyAgICAgIHBlcmZvcm1lZCBwcmlvciB0byBoYW5kbGluZyBuZXcgY29ubmVjdGlvbnMuCisgICAg
KiBgYHN0cmVhbV9oYW5kbGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIHdoZW5l
dmVyIGEgc3RyZWFtIGlzCisgICAgICBjcmVhdGVkLiBJdCBtdXN0IGFjY2VwdCB0d28gYXJndW1l
bnRzOiBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICBhbmQgYSA6Y2xhc3M6
YGFzeW5jaW8uU3RyZWFtV3JpdGVyYC4KKyAgICAiIiIKKworICAgIGxvb3AgPSBhc3luY2lvLmdl
dF9ldmVudF9sb29wKCkKKworICAgIF8sIHByb3RvY29sID0gYXdhaXQgbG9vcC5jcmVhdGVfZGF0
YWdyYW1fZW5kcG9pbnQoCisgICAgICAgIGxhbWJkYTogUXVpY1NlcnZlcigKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1jcmVhdGVfcHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXNl
c3Npb25fdGlja2V0X2ZldGNoZXIsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXNlc3Npb25fdGlja2V0X2hhbmRsZXIsCisgICAgICAgICAgICBzdGF0ZWxlc3NfcmV0cnk9c3Rh
dGVsZXNzX3JldHJ5LAorICAgICAgICAgICAgc3RyZWFtX2hhbmRsZXI9c3RyZWFtX2hhbmRsZXIs
CisgICAgICAgICksCisgICAgICAgIGxvY2FsX2FkZHI9KGhvc3QsIHBvcnQpLAorICAgICkKKyAg
ICByZXR1cm4gY2FzdChRdWljU2VydmVyLCBwcm90b2NvbCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI4MzQ1ZTBjZThm
NWM0M2Q0NjcxY2JiY2RhZDg4ZjFlYjE1OTJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjEgQEAK
K1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
CitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9m
IGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2FzeW5jaW8vY29tcGF0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vcHJvdG9jb2wucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9z
ZXJ2ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9idWZmZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YTQyOThm
OTU0YzIyZTUzODlhMTI5YTFlZTY3NWU4ZWZlZDg3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5CkBAIC0wLDAgKzEsMjkgQEAKK2Zyb20gLl9i
dWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yLCBCdWZmZXJXcml0ZUVycm9yICAj
IG5vcWEKKworVUlOVF9WQVJfTUFYID0gMHgzRkZGRkZGRkZGRkZGRkZGCisKKworZGVmIGVuY29k
ZV91aW50X3Zhcih2YWx1ZTogaW50KSAtPiBieXRlczoKKyAgICAiIiIKKyAgICBFbmNvZGUgYSB2
YXJpYWJsZS1sZW5ndGggdW5zaWduZWQgaW50ZWdlci4KKyAgICAiIiIKKyAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9OCkKKyAgICBidWYucHVzaF91aW50X3Zhcih2YWx1ZSkKKyAgICByZXR1cm4g
YnVmLmRhdGEKKworCitkZWYgc2l6ZV91aW50X3Zhcih2YWx1ZTogaW50KSAtPiBpbnQ6CisgICAg
IiIiCisgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gZW5jb2RlIHRo
ZSBnaXZlbiB2YWx1ZQorICAgIGFzIGEgUVVJQyB2YXJpYWJsZS1sZW5ndGggdW5zaWduZWQgaW50
ZWdlci4KKyAgICAiIiIKKyAgICBpZiB2YWx1ZSA8PSAweDNGOgorICAgICAgICByZXR1cm4gMQor
ICAgIGVsaWYgdmFsdWUgPD0gMHgzRkZGOgorICAgICAgICByZXR1cm4gMgorICAgIGVsaWYgdmFs
dWUgPD0gMHgzRkZGRkZGRjoKKyAgICAgICAgcmV0dXJuIDQKKyAgICBlbGlmIHZhbHVlIDw9IDB4
M0ZGRkZGRkZGRkZGRkZGRjoKKyAgICAgICAgcmV0dXJuIDgKKyAgICBlbHNlOgorICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3Ro
IGludGVnZXIiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5p
dF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvX19pbml0X18ucHkKQEAgLTAsMCAr
MSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29ubmVjdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzhkZGNlYzZi
MzkzMGFhZmYzYzFjZDE1YjFlZTRlN2Q2YjE4ZDhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSw2MyBAQAorZnJv
bSB0eXBpbmcgaW1wb3J0IERpY3QsIExpc3QKKworZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzLCBIZWFkZXJzUmVjZWl2ZWQKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbm5lY3Rpb24gaW1wb3J0IFF1aWNDb25uZWN0aW9uCitmcm9tIGFpb3F1
aWMucXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCisKK0gw
X0FMUE4gPSBbImhxLTI3IiwgImhxLTI2IiwgImhxLTI1Il0KKworCitjbGFzcyBIMENvbm5lY3Rp
b246CisgICAgIiIiCisgICAgQW4gSFRUUC8wLjkgY29ubmVjdGlvbiBvYmplY3QuCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcXVpYzogUXVpY0Nvbm5lY3Rpb24pOgorICAgICAg
ICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkOiBEaWN0W2ludCwgYm9vbF0gPSB7fQorICAgICAgICBz
ZWxmLl9pc19jbGllbnQgPSBxdWljLmNvbmZpZ3VyYXRpb24uaXNfY2xpZW50CisgICAgICAgIHNl
bGYuX3F1aWMgPSBxdWljCisKKyAgICBkZWYgaGFuZGxlX2V2ZW50KHNlbGYsIGV2ZW50OiBRdWlj
RXZlbnQpIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgIGh0dHBfZXZlbnRzOiBMaXN0W0gzRXZl
bnRdID0gW10KKworICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2
ZWQpIGFuZCAoZXZlbnQuc3RyZWFtX2lkICUgNCkgPT0gMDoKKyAgICAgICAgICAgIGRhdGEgPSBl
dmVudC5kYXRhCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGVhZGVyc19yZWNlaXZlZC5nZXQo
ZXZlbnQuc3RyZWFtX2lkLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfY2xp
ZW50OgorICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bXSwgc3RyZWFtX2VuZGVkPUZhbHNlLCBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFt
X2lkCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtZXRob2QsIHBhdGggPSBk
YXRhLnJzdHJpcCgpLnNwbGl0KGIiICIsIDEpCisgICAgICAgICAgICAgICAgICAgIGh0dHBfZXZl
bnRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiI6bWV0aG9kIiwgbWV0aG9kKSwg
KGIiOnBhdGgiLCBwYXRoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2Vu
ZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1ldmVudC5z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGIiIgorICAgICAgICAgICAgICAgIHNlbGYu
X2hlYWRlcnNfcmVjZWl2ZWRbZXZlbnQuc3RyZWFtX2lkXSA9IFRydWUKKworICAgICAgICAgICAg
aHR0cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBzdHJlYW1fZW5kZWQ9ZXZlbnQuZW5kX3N0cmVhbSwg
c3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICkKKworICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgIGRlZiBzZW5kX2RhdGEoc2Vs
Ziwgc3RyZWFtX2lkOiBpbnQsIGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25l
OgorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBkYXRhLCBl
bmRfc3RyZWFtKQorCisgICAgZGVmIHNlbmRfaGVhZGVycygKKyAgICAgICAgc2VsZiwgc3RyZWFt
X2lkOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZQorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgaGVh
ZGVyc19kaWN0ID0gZGljdChoZWFkZXJzKQorICAgICAgICAgICAgZGF0YSA9IGhlYWRlcnNfZGlj
dFtiIjptZXRob2QiXSArIGIiICIgKyBoZWFkZXJzX2RpY3RbYiI6cGF0aCJdICsgYiJcclxuIgor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IGIiIgorICAgICAgICBzZWxmLl9xdWlj
LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBkYXRhLCBlbmRfc3RyZWFtKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMzYxZWE0MDU1
MWI2Mjg2YjNlMWVlNWYyOWE3Nzc0YWU2MDcwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvaDAvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxOCBAQAorVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0lu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmls
ZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rpb24ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
My9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2
ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gz
L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQ
eXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9j
b25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGRmOGM1NDI4M2NkNzdjN2Y5ZDNlZGRlOGQ3OTBjMDJhMDUzMDhkNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5
CkBAIC0wLDAgKzEsNzc2IEBACitpbXBvcnQgbG9nZ2luZworZnJvbSBlbnVtIGltcG9ydCBFbnVt
LCBJbnRFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFNldAor
CitpbXBvcnQgcHlsc3FwYWNrCisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwg
QnVmZmVyUmVhZEVycm9yLCBlbmNvZGVfdWludF92YXIKK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMg
aW1wb3J0ICgKKyAgICBEYXRhUmVjZWl2ZWQsCisgICAgSDNFdmVudCwKKyAgICBIZWFkZXJzLAor
ICAgIEhlYWRlcnNSZWNlaXZlZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBh
aW9xdWljLmgzLmV4Y2VwdGlvbnMgaW1wb3J0IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbm5lY3Rpb24gaW1wb3J0IFF1aWNDb25uZWN0aW9uLCBzdHJlYW1faXNf
dW5pZGlyZWN0aW9uYWwKK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgUXVpY0V2ZW50
LCBTdHJlYW1EYXRhUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVp
Y0xvZ2dlclRyYWNlCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJodHRwMyIpCisKK0gz
X0FMUE4gPSBbImgzLTI3IiwgImgzLTI2IiwgImgzLTI1Il0KKworCitjbGFzcyBFcnJvckNvZGUo
SW50RW51bSk6CisgICAgSFRUUF9OT19FUlJPUiA9IDB4MTAwCisgICAgSFRUUF9HRU5FUkFMX1BS
T1RPQ09MX0VSUk9SID0gMHgxMDEKKyAgICBIVFRQX0lOVEVSTkFMX0VSUk9SID0gMHgxMDIKKyAg
ICBIVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiA9IDB4MTAzCisgICAgSFRUUF9DTE9TRURfQ1JJ
VElDQUxfU1RSRUFNID0gMHgxMDQKKyAgICBIVFRQX0ZSQU1FX1VORVhQRUNURUQgPSAweDEwNQor
ICAgIEhUVFBfRlJBTUVfRVJST1IgPSAweDEwNgorICAgIEhUVFBfRVhDRVNTSVZFX0xPQUQgPSAw
eDEwNworICAgIEhUVFBfSURfRVJST1IgPSAweDEwOAorICAgIEhUVFBfU0VUVElOR1NfRVJST1Ig
PSAweDEwOQorICAgIEhUVFBfTUlTU0lOR19TRVRUSU5HUyA9IDB4MTBBCisgICAgSFRUUF9SRVFV
RVNUX1JFSkVDVEVEID0gMHgxMEIKKyAgICBIVFRQX1JFUVVFU1RfQ0FOQ0VMTEVEID0gMHgxMEMK
KyAgICBIVFRQX1JFUVVFU1RfSU5DT01QTEVURSA9IDB4MTBECisgICAgSFRUUF9FQVJMWV9SRVNQ
T05TRSA9IDB4MTBFCisgICAgSFRUUF9DT05ORUNUX0VSUk9SID0gMHgxMEYKKyAgICBIVFRQX1ZF
UlNJT05fRkFMTEJBQ0sgPSAweDExMAorICAgIEhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlM
RUQgPSAweDIwMAorICAgIEhUVFBfUVBBQ0tfRU5DT0RFUl9TVFJFQU1fRVJST1IgPSAweDIwMQor
ICAgIEhUVFBfUVBBQ0tfREVDT0RFUl9TVFJFQU1fRVJST1IgPSAweDIwMgorCisKK2NsYXNzIEZy
YW1lVHlwZShJbnRFbnVtKToKKyAgICBEQVRBID0gMHgwCisgICAgSEVBREVSUyA9IDB4MQorICAg
IFBSSU9SSVRZID0gMHgyCisgICAgQ0FOQ0VMX1BVU0ggPSAweDMKKyAgICBTRVRUSU5HUyA9IDB4
NAorICAgIFBVU0hfUFJPTUlTRSA9IDB4NQorICAgIEdPQVdBWSA9IDB4NworICAgIE1BWF9QVVNI
X0lEID0gMHhECisgICAgRFVQTElDQVRFX1BVU0ggPSAweEUKKworCitjbGFzcyBIZWFkZXJzU3Rh
dGUoRW51bSk6CisgICAgSU5JVElBTCA9IDAKKyAgICBBRlRFUl9IRUFERVJTID0gMQorICAgIEFG
VEVSX1RSQUlMRVJTID0gMgorCisKK2NsYXNzIFNldHRpbmcoSW50RW51bSk6CisgICAgUVBBQ0tf
TUFYX1RBQkxFX0NBUEFDSVRZID0gMQorICAgIFNFVFRJTkdTX01BWF9IRUFERVJfTElTVF9TSVpF
ID0gNgorICAgIFFQQUNLX0JMT0NLRURfU1RSRUFNUyA9IDcKKyAgICBTRVRUSU5HU19OVU1fUExB
Q0VIT0xERVJTID0gOQorCisKK2NsYXNzIFN0cmVhbVR5cGUoSW50RW51bSk6CisgICAgQ09OVFJP
TCA9IDAKKyAgICBQVVNIID0gMQorICAgIFFQQUNLX0VOQ09ERVIgPSAyCisgICAgUVBBQ0tfREVD
T0RFUiA9IDMKKworCitjbGFzcyBQcm90b2NvbEVycm9yKEV4Y2VwdGlvbik6CisgICAgIiIiCisg
ICAgQmFzZSBjbGFzcyBmb3IgcHJvdG9jb2wgZXJyb3JzLgorCisgICAgVGhlc2UgZXJyb3JzIGFy
ZSBub3QgZXhwb3NlZCB0byB0aGUgQVBJIHVzZXIsIHRoZXkgYXJlIGhhbmRsZWQKKyAgICBpbiA6
bWV0aDpgSDNDb25uZWN0aW9uLmhhbmRsZV9ldmVudGAuCisgICAgIiIiCisKKyAgICBlcnJvcl9j
b2RlID0gRXJyb3JDb2RlLkhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlYXNvbl9waHJhc2U6IHN0ciA9ICIiKToKKyAgICAgICAgc2VsZi5yZWFz
b25fcGhyYXNlID0gcmVhc29uX3BocmFzZQorCisKK2NsYXNzIFFwYWNrRGVjb21wcmVzc2lvbkZh
aWxlZChQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJyb3JDb2RlLkhUVFBfUVBB
Q0tfREVDT01QUkVTU0lPTl9GQUlMRUQKKworCitjbGFzcyBRcGFja0RlY29kZXJTdHJlYW1FcnJv
cihQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJyb3JDb2RlLkhUVFBfUVBBQ0tf
REVDT0RFUl9TVFJFQU1fRVJST1IKKworCitjbGFzcyBRcGFja0VuY29kZXJTdHJlYW1FcnJvcihQ
cm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5D
T0RFUl9TVFJFQU1fRVJST1IKKworCitjbGFzcyBTdHJlYW1DcmVhdGlvbkVycm9yKFByb3RvY29s
RXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9TVFJFQU1fQ1JFQVRJT05f
RVJST1IKKworCitjbGFzcyBGcmFtZVVuZXhwZWN0ZWQoUHJvdG9jb2xFcnJvcik6CisgICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQKKworCitkZWYgZW5jb2Rl
X2ZyYW1lKGZyYW1lX3R5cGU6IGludCwgZnJhbWVfZGF0YTogYnl0ZXMpIC0+IGJ5dGVzOgorICAg
IGZyYW1lX2xlbmd0aCA9IGxlbihmcmFtZV9kYXRhKQorICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1mcmFtZV9sZW5ndGggKyAxNikKKyAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV90eXBlKQor
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX2xlbmd0aCkKKyAgICBidWYucHVzaF9ieXRlcyhm
cmFtZV9kYXRhKQorICAgIHJldHVybiBidWYuZGF0YQorCisKK2RlZiBlbmNvZGVfc2V0dGluZ3Mo
c2V0dGluZ3M6IERpY3RbaW50LCBpbnRdKSAtPiBieXRlczoKKyAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9MTAyNCkKKyAgICBmb3Igc2V0dGluZywgdmFsdWUgaW4gc2V0dGluZ3MuaXRlbXMoKToK
KyAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc2V0dGluZykKKyAgICAgICAgYnVmLnB1c2hfdWlu
dF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIHBhcnNlX21heF9wdXNo
X2lkKGRhdGE6IGJ5dGVzKSAtPiBpbnQ6CisgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAg
ICBtYXhfcHVzaF9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICBhc3NlcnQgYnVmLmVvZigp
CisgICAgcmV0dXJuIG1heF9wdXNoX2lkCisKKworZGVmIHBhcnNlX3NldHRpbmdzKGRhdGE6IGJ5
dGVzKSAtPiBEaWN0W2ludCwgaW50XToKKyAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAg
IHNldHRpbmdzID0gW10KKyAgICB3aGlsZSBub3QgYnVmLmVvZigpOgorICAgICAgICBzZXR0aW5n
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB2YWx1ZSA9IGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKyAgICAgICAgc2V0dGluZ3MuYXBwZW5kKChzZXR0aW5nLCB2YWx1ZSkpCisgICAgcmV0dXJu
IGRpY3Qoc2V0dGluZ3MpCisKKworZGVmIHFsb2dfZW5jb2RlX2RhdGFfZnJhbWUoYnl0ZV9sZW5n
dGg6IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAg
ImJ5dGVfbGVuZ3RoIjogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFt
ZV90eXBlIjogImRhdGEifSwKKyAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAor
ICAgIH0KKworCitkZWYgcWxvZ19lbmNvZGVfaGVhZGVycyhoZWFkZXJzOiBIZWFkZXJzKSAtPiBM
aXN0W0RpY3RdOgorICAgIHJldHVybiBbCisgICAgICAgIHsibmFtZSI6IGhbMF0uZGVjb2RlKCJ1
dGY4IiksICJ2YWx1ZSI6IGhbMV0uZGVjb2RlKCJ1dGY4Iil9IGZvciBoIGluIGhlYWRlcnMKKyAg
ICBdCisKKworZGVmIHFsb2dfZW5jb2RlX2hlYWRlcnNfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6
IGludCwgaGVhZGVyczogSGVhZGVycywgc3RyZWFtX2lkOiBpbnQKKykgLT4gRGljdDoKKyAgICBy
ZXR1cm4geworICAgICAgICAiYnl0ZV9sZW5ndGgiOiBzdHIoYnl0ZV9sZW5ndGgpLAorICAgICAg
ICAiZnJhbWUiOiB7ImZyYW1lX3R5cGUiOiAiaGVhZGVycyIsICJoZWFkZXJzIjogcWxvZ19lbmNv
ZGVfaGVhZGVycyhoZWFkZXJzKX0sCisgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lk
KSwKKyAgICB9CisKKworZGVmIHFsb2dfZW5jb2RlX3B1c2hfcHJvbWlzZV9mcmFtZSgKKyAgICBi
eXRlX2xlbmd0aDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBwdXNoX2lkOiBpbnQsIHN0cmVhbV9p
ZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAgImJ5dGVfbGVuZ3RoIjog
c3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeworICAgICAgICAgICAgImZyYW1l
X3R5cGUiOiAicHVzaF9wcm9taXNlIiwKKyAgICAgICAgICAgICJoZWFkZXJzIjogcWxvZ19lbmNv
ZGVfaGVhZGVycyhoZWFkZXJzKSwKKyAgICAgICAgICAgICJwdXNoX2lkIjogc3RyKHB1c2hfaWQp
LAorICAgICAgICB9LAorICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAg
fQorCisKK2NsYXNzIEgzU3RyZWFtOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW1faWQ6
IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5ibG9ja2VkX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYu
YnVmZmVyID0gYiIiCisgICAgICAgIHNlbGYuZW5kZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmZy
YW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuZnJhbWVfdHlwZTog
T3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5oZWFkZXJzX3JlY3Zfc3RhdGU6IEhl
YWRlcnNTdGF0ZSA9IEhlYWRlcnNTdGF0ZS5JTklUSUFMCisgICAgICAgIHNlbGYuaGVhZGVyc19z
ZW5kX3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3RhdGUuSU5JVElBTAorICAgICAgICBz
ZWxmLnB1c2hfaWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuc3RyZWFtX2lk
ID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3RyZWFtX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBO
b25lCisKKworY2xhc3MgSDNDb25uZWN0aW9uOgorICAgICIiIgorICAgIEEgbG93LWxldmVsIEhU
VFAvMyBjb25uZWN0aW9uIG9iamVjdC4KKworICAgIDpwYXJhbSBxdWljOiBBIDpjbGFzczpgfmFp
b3F1aWMuY29ubmVjdGlvbi5RdWljQ29ubmVjdGlvbmAgaW5zdGFuY2UuCisgICAgIiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgcXVpYzogUXVpY0Nvbm5lY3Rpb24pOgorICAgICAgICBzZWxm
Ll9tYXhfdGFibGVfY2FwYWNpdHkgPSA0MDk2CisgICAgICAgIHNlbGYuX2Jsb2NrZWRfc3RyZWFt
cyA9IDE2CisKKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1cmF0aW9uLmlz
X2NsaWVudAorICAgICAgICBzZWxmLl9pc19kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcXVp
YyA9IHF1aWMKKyAgICAgICAgc2VsZi5fcXVpY19sb2dnZXI6IE9wdGlvbmFsW1F1aWNMb2dnZXJU
cmFjZV0gPSBxdWljLl9xdWljX2xvZ2dlcgorICAgICAgICBzZWxmLl9kZWNvZGVyID0gcHlsc3Fw
YWNrLkRlY29kZXIoCisgICAgICAgICAgICBzZWxmLl9tYXhfdGFibGVfY2FwYWNpdHksIHNlbGYu
X2Jsb2NrZWRfc3RyZWFtcworICAgICAgICApCisgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNf
cmVjZWl2ZWQgPSAwCisgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAg
ICAgc2VsZi5fZW5jb2RlciA9IHB5bHNxcGFjay5FbmNvZGVyKCkKKyAgICAgICAgc2VsZi5fZW5j
b2Rlcl9ieXRlc19yZWNlaXZlZCA9IDAKKyAgICAgICAgc2VsZi5fZW5jb2Rlcl9ieXRlc19zZW50
ID0gMAorICAgICAgICBzZWxmLl9zdHJlYW06IERpY3RbaW50LCBIM1N0cmVhbV0gPSB7fQorCisg
ICAgICAgIHNlbGYuX21heF9wdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gOCBpZiBzZWxmLl9pc19j
bGllbnQgZWxzZSBOb25lCisgICAgICAgIHNlbGYuX25leHRfcHVzaF9pZDogaW50ID0gMAorCisg
ICAgICAgIHNlbGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fcGVlcl9jb250cm9sX3N0cmVhbV9pZDogT3B0aW9u
YWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGVlcl9kZWNvZGVyX3N0cmVhbV9pZDogT3B0
aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGVlcl9lbmNvZGVyX3N0cmVhbV9pZDog
T3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgICAgICBzZWxmLl9pbml0X2Nvbm5lY3Rpb24oKQor
CisgICAgZGVmIGhhbmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gz
RXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgUVVJQyBldmVudCBhbmQgcmV0
dXJuIGEgbGlzdCBvZiBIVFRQIGV2ZW50cy4KKworICAgICAgICA6cGFyYW0gZXZlbnQ6IFRoZSBR
VUlDIGV2ZW50IHRvIGhhbmRsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIFN0cmVhbURhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLl9pc19kb25lOgorICAgICAg
ICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAgICAgICAgICBzdHJlYW0gPSBz
ZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgaWYgc3RyZWFtX2lkICUgNCA9PSAwOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcmVjZWl2ZV9yZXF1ZXN0X29yX3B1c2hfZGF0YSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVhbQorICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxpZiBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2Vp
dmVfc3RyZWFtX2RhdGFfdW5pKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBldmVu
dC5kYXRhLCBldmVudC5lbmRfc3RyZWFtCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGV4Y2VwdCBQcm90b2NvbEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxmLl9p
c19kb25lID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoCisgICAgICAg
ICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsIHJlYXNvbl9waHJhc2U9ZXhj
LnJlYXNvbl9waHJhc2UKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBbXQorCisg
ICAgZGVmIHNlbmRfcHVzaF9wcm9taXNlKHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBI
ZWFkZXJzKSAtPiBpbnQ6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEgcHVzaCBwcm9taXNl
IHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmllZCBzdHJlYW0uCisKKyAgICAgICAgUmV0dXJucyB0aGUg
c3RyZWFtIElEIG9uIHdoaWNoIGhlYWRlcnMgYW5kIGRhdGEgY2FuIGJlIHNlbnQuCisKKyAgICAg
ICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSBJRCBvbiB3aGljaCB0byBzZW5kIHRoZSBk
YXRhLgorICAgICAgICA6cGFyYW0gaGVhZGVyczogVGhlIEhUVFAgcmVxdWVzdCBoZWFkZXJzIGZv
ciB0aGlzIHB1c2guCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuX2lzX2Ns
aWVudCwgIk9ubHkgc2VydmVycyBtYXkgc2VuZCBhIHB1c2ggcHJvbWlzZS4iCisgICAgICAgIGlm
IHNlbGYuX21heF9wdXNoX2lkIGlzIE5vbmUgb3Igc2VsZi5fbmV4dF9wdXNoX2lkID49IHNlbGYu
X21heF9wdXNoX2lkOgorICAgICAgICAgICAgcmFpc2UgTm9BdmFpbGFibGVQdXNoSURFcnJvcgor
CisgICAgICAgICMgc2VuZCBwdXNoIHByb21pc2UKKyAgICAgICAgcHVzaF9pZCA9IHNlbGYuX25l
eHRfcHVzaF9pZAorICAgICAgICBzZWxmLl9uZXh0X3B1c2hfaWQgKz0gMQorICAgICAgICBzZWxm
Ll9xdWljLnNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgICAgICBzdHJlYW1faWQsCisgICAgICAg
ICAgICBlbmNvZGVfZnJhbWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlBVU0hfUFJPTUlT
RSwKKyAgICAgICAgICAgICAgICBlbmNvZGVfdWludF92YXIocHVzaF9pZCkgKyBzZWxmLl9lbmNv
ZGVfaGVhZGVycyhzdHJlYW1faWQsIGhlYWRlcnMpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgICAgICMgwqBjcmVhdGUgcHVzaCBzdHJlYW0KKyAgICAgICAgcHVzaF9zdHJlYW1f
aWQgPSBzZWxmLl9jcmVhdGVfdW5pX3N0cmVhbShTdHJlYW1UeXBlLlBVU0gpCisgICAgICAgIHNl
bGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShwdXNoX3N0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFy
KHB1c2hfaWQpKQorCisgICAgICAgIHJldHVybiBwdXNoX3N0cmVhbV9pZAorCisgICAgZGVmIHNl
bmRfZGF0YShzZWxmLCBzdHJlYW1faWQ6IGludCwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJv
b2wpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGRhdGEgb24gdGhlIGdpdmVu
IHN0cmVhbS4KKworICAgICAgICBUbyByZXRyaWV2ZSBkYXRhZ3JhbSB3aGljaCBuZWVkIHRvIGJl
IHNlbnQgb3ZlciB0aGUgbmV0d29yayBjYWxsIHRoZSBRVUlDCisgICAgICAgIGNvbm5lY3Rpb24n
cyA6bWV0aDpgfmFpb3F1aWMuY29ubmVjdGlvbi5RdWljQ29ubmVjdGlvbi5kYXRhZ3JhbXNfdG9f
c2VuZGAKKyAgICAgICAgbWV0aG9kLgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBz
dHJlYW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBhcmFtIGRhdGE6
IFRoZSBkYXRhIHRvIHNlbmQuCisgICAgICAgIDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRv
IGVuZCB0aGUgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgIyBjaGVjayBEQVRBIGZyYW1l
IGlzIGFsbG93ZWQKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0o
c3RyZWFtX2lkKQorICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlICE9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9IRUFERVJTOgorICAgICAgICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVk
KCJEQVRBIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNh
dGVnb3J5PSJodHRwIiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisg
ICAgICAgICAgICAgICAgZGF0YT1xbG9nX2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoPWxl
bihkYXRhKSwgc3RyZWFtX2lkPXN0cmVhbV9pZCksCisgICAgICAgICAgICApCisKKyAgICAgICAg
c2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgc3RyZWFtX2lkLCBlbmNv
ZGVfZnJhbWUoRnJhbWVUeXBlLkRBVEEsIGRhdGEpLCBlbmRfc3RyZWFtCisgICAgICAgICkKKwor
ICAgIGRlZiBzZW5kX2hlYWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFk
ZXJzOiBIZWFkZXJzLCBlbmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6Cisg
ICAgICAgICIiIgorICAgICAgICBTZW5kIGhlYWRlcnMgb24gdGhlIGdpdmVuIHN0cmVhbS4KKwor
ICAgICAgICBUbyByZXRyaWV2ZSBkYXRhZ3JhbSB3aGljaCBuZWVkIHRvIGJlIHNlbnQgb3ZlciB0
aGUgbmV0d29yayBjYWxsIHRoZSBRVUlDCisgICAgICAgIGNvbm5lY3Rpb24ncyA6bWV0aDpgfmFp
b3F1aWMuY29ubmVjdGlvbi5RdWljQ29ubmVjdGlvbi5kYXRhZ3JhbXNfdG9fc2VuZGAKKyAgICAg
ICAgbWV0aG9kLgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJlYW0gSUQgb24g
d2hpY2ggdG8gc2VuZCB0aGUgaGVhZGVycy4KKyAgICAgICAgOnBhcmFtIGhlYWRlcnM6IFRoZSBI
VFRQIGhlYWRlcnMgdG8gc2VuZC4KKyAgICAgICAgOnBhcmFtIGVuZF9zdHJlYW06IFdoZXRoZXIg
dG8gZW5kIHRoZSBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICAjIGNoZWNrIEhFQURFUlMg
ZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0
cmVhbShzdHJlYW1faWQpCisgICAgICAgIGlmIHN0cmVhbS5oZWFkZXJzX3NlbmRfc3RhdGUgPT0g
SGVhZGVyc1N0YXRlLkFGVEVSX1RSQUlMRVJTOgorICAgICAgICAgICAgcmFpc2UgRnJhbWVVbmV4
cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiKQorCisg
ICAgICAgIGZyYW1lX2RhdGEgPSBzZWxmLl9lbmNvZGVfaGVhZGVycyhzdHJlYW1faWQsIGhlYWRl
cnMpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgIGV2ZW50PSJm
cmFtZV9jcmVhdGVkIiwKKyAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2hlYWRlcnNf
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPWxlbihmcmFtZV9kYXRhKSwg
aGVhZGVycz1oZWFkZXJzLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIHVwZGF0ZSBzdGF0ZSBhbmQgc2VuZCBoZWFkZXJz
CisgICAgICAgIGlmIHN0cmVhbS5oZWFkZXJzX3NlbmRfc3RhdGUgPT0gSGVhZGVyc1N0YXRlLklO
SVRJQUw6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVyc1N0
YXRlLkFGVEVSX0hFQURFUlMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmVhbS5oZWFk
ZXJzX3NlbmRfc3RhdGUgPSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlMKKyAgICAgICAgc2Vs
Zi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgc3RyZWFtX2lkLCBlbmNvZGVf
ZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGZyYW1lX2RhdGEpLCBlbmRfc3RyZWFtCisgICAgICAg
ICkKKworICAgIGRlZiBfY3JlYXRlX3VuaV9zdHJlYW0oc2VsZiwgc3RyZWFtX3R5cGU6IGludCkg
LT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGFuIHVuaWRpcmVjdGlvbmFsIHN0
cmVhbSBvZiB0aGUgZ2l2ZW4gdHlwZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9
IHNlbGYuX3F1aWMuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBl
bmNvZGVfdWludF92YXIoc3RyZWFtX3R5cGUpKQorICAgICAgICByZXR1cm4gc3RyZWFtX2lkCisK
KyAgICBkZWYgX2RlY29kZV9oZWFkZXJzKHNlbGYsIHN0cmVhbV9pZDogaW50LCBmcmFtZV9kYXRh
OiBPcHRpb25hbFtieXRlc10pIC0+IEhlYWRlcnM6CisgICAgICAgICIiIgorICAgICAgICBEZWNv
ZGUgYSBIRUFERVJTIGJsb2NrIGFuZCBzZW5kIGRlY29kZXIgdXBkYXRlcyBvbiB0aGUgZGVjb2Rl
ciBzdHJlYW0uCisKKyAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2l0aCBmcmFtZV9kYXRhPU5vbmUg
d2hlbiBhIHN0cmVhbSBiZWNvbWVzIHVuYmxvY2tlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGlmIGZyYW1lX2RhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBk
ZWNvZGVyLCBoZWFkZXJzID0gc2VsZi5fZGVjb2Rlci5yZXN1bWVfaGVhZGVyKHN0cmVhbV9pZCkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNl
bGYuX2RlY29kZXIuZmVlZF9oZWFkZXIoc3RyZWFtX2lkLCBmcmFtZV9kYXRhKQorICAgICAgICAg
ICAgc2VsZi5fZGVjb2Rlcl9ieXRlc19zZW50ICs9IGxlbihkZWNvZGVyKQorICAgICAgICAgICAg
c2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuX2xvY2FsX2RlY29kZXJfc3RyZWFtX2lk
LCBkZWNvZGVyKQorICAgICAgICBleGNlcHQgcHlsc3FwYWNrLkRlY29tcHJlc3Npb25GYWlsZWQg
YXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvbXByZXNzaW9uRmFpbGVkKCkgZnJv
bSBleGMKKworICAgICAgICByZXR1cm4gaGVhZGVycworCisgICAgZGVmIF9lbmNvZGVfaGVhZGVy
cyhzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gYnl0ZXM6CisgICAg
ICAgICIiIgorICAgICAgICBFbmNvZGUgYSBIRUFERVJTIGJsb2NrIGFuZCBzZW5kIGVuY29kZXIg
dXBkYXRlcyBvbiB0aGUgZW5jb2RlciBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBlbmNv
ZGVyLCBmcmFtZV9kYXRhID0gc2VsZi5fZW5jb2Rlci5lbmNvZGUoc3RyZWFtX2lkLCBoZWFkZXJz
KQorICAgICAgICBzZWxmLl9lbmNvZGVyX2J5dGVzX3NlbnQgKz0gbGVuKGVuY29kZXIpCisgICAg
ICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVh
bV9pZCwgZW5jb2RlcikKKyAgICAgICAgcmV0dXJuIGZyYW1lX2RhdGEKKworICAgIGRlZiBfZ2V0
X29yX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IEgzU3RyZWFtOgorICAg
ICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYuX3N0cmVhbToKKyAgICAgICAgICAgIHNlbGYu
X3N0cmVhbVtzdHJlYW1faWRdID0gSDNTdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICByZXR1cm4g
c2VsZi5fc3RyZWFtW3N0cmVhbV9pZF0KKworICAgIGRlZiBfaGFuZGxlX2NvbnRyb2xfZnJhbWUo
c2VsZiwgZnJhbWVfdHlwZTogaW50LCBmcmFtZV9kYXRhOiBieXRlcykgLT4gTm9uZToKKyAgICAg
ICAgIiIiCisgICAgICAgIEhhbmRsZSBhIGZyYW1lIHJlY2VpdmVkIG9uIHRoZSBwZWVyJ3MgY29u
dHJvbCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBpZiBmcmFtZV90eXBlID09IEZyYW1l
VHlwZS5TRVRUSU5HUzoKKyAgICAgICAgICAgIHNldHRpbmdzID0gcGFyc2Vfc2V0dGluZ3MoZnJh
bWVfZGF0YSkKKyAgICAgICAgICAgIGVuY29kZXIgPSBzZWxmLl9lbmNvZGVyLmFwcGx5X3NldHRp
bmdzKAorICAgICAgICAgICAgICAgIG1heF90YWJsZV9jYXBhY2l0eT1zZXR0aW5ncy5nZXQoU2V0
dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFksIDApLAorICAgICAgICAgICAgICAgIGJsb2Nr
ZWRfc3RyZWFtcz1zZXR0aW5ncy5nZXQoU2V0dGluZy5RUEFDS19CTE9DS0VEX1NUUkVBTVMsIDAp
LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRh
KHNlbGYuX2xvY2FsX2VuY29kZXJfc3RyZWFtX2lkLCBlbmNvZGVyKQorICAgICAgICBlbGlmIGZy
YW1lX3R5cGUgPT0gRnJhbWVUeXBlLk1BWF9QVVNIX0lEOgorICAgICAgICAgICAgaWYgc2VsZi5f
aXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiU2VydmVy
cyBtdXN0IG5vdCBzZW5kIE1BWF9QVVNIX0lEIikKKyAgICAgICAgICAgIHNlbGYuX21heF9wdXNo
X2lkID0gcGFyc2VfbWF4X3B1c2hfaWQoZnJhbWVfZGF0YSkKKyAgICAgICAgZWxpZiBmcmFtZV90
eXBlIGluICgKKyAgICAgICAgICAgIEZyYW1lVHlwZS5EQVRBLAorICAgICAgICAgICAgRnJhbWVU
eXBlLkhFQURFUlMsCisgICAgICAgICAgICBGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLAorICAgICAg
ICAgICAgRnJhbWVUeXBlLkRVUExJQ0FURV9QVVNILAorICAgICAgICApOgorICAgICAgICAgICAg
cmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJJbnZhbGlkIGZyYW1lIHR5cGUgb24gY29udHJvbCBzdHJl
YW0iKQorCisgICAgZGVmIF9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICBz
ZWxmLAorICAgICAgICBmcmFtZV90eXBlOiBpbnQsCisgICAgICAgIGZyYW1lX2RhdGE6IE9wdGlv
bmFsW2J5dGVzXSwKKyAgICAgICAgc3RyZWFtOiBIM1N0cmVhbSwKKyAgICAgICAgc3RyZWFtX2Vu
ZGVkOiBib29sLAorICAgICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIGZyYW1lIHJlY2VpdmVkIG9uIGEgcmVxdWVzdCBvciBwdXNoIHN0cmVhbS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGh0dHBfZXZlbnRzOiBMaXN0W0gzRXZlbnRdID0gW10KKworICAg
ICAgICBpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5EQVRBOgorICAgICAgICAgICAgIyBjaGVj
ayBEQVRBIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgICAgIGlmIHN0cmVhbS5oZWFkZXJzX3Jl
Y3Zfc3RhdGUgIT0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlM6CisgICAgICAgICAgICAgICAg
cmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJEQVRBIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMg
c3RhdGUiKQorCisgICAgICAgICAgICBpZiBzdHJlYW1fZW5kZWQgb3IgZnJhbWVfZGF0YToKKyAg
ICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZnJhbWVfZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9c3RyZWFtLnB1c2hfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtX2VuZGVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5
cGUuSEVBREVSUzoKKyAgICAgICAgICAgICMgY2hlY2sgSEVBREVSUyBmcmFtZSBpcyBhbGxvd2Vk
CisgICAgICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlID09IEhlYWRlcnNTdGF0
ZS5BRlRFUl9UUkFJTEVSUzoKKyAgICAgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQo
IkhFQURFUlMgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzdGF0ZSIpCisKKyAgICAgICAg
ICAgICMgdHJ5IHRvIGRlY29kZSBIRUFERVJTLCBtYXkgcmFpc2UgcHlsc3FwYWNrLlN0cmVhbUJs
b2NrZWQKKyAgICAgICAgICAgIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVfaGVhZGVycyhzdHJlYW0u
c3RyZWFtX2lkLCBmcmFtZV9kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29y
eT0iaHR0cCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJmcmFtZV9wYXJzZWQiLAorICAg
ICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2hlYWRlcnNfZnJhbWUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBieXRlX2xlbmd0aD1zdHJlYW0uYmxvY2tlZF9mcmFtZV9zaXplCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBmcmFtZV9kYXRhIGlzIE5vbmUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgbGVuKGZyYW1lX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbS5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIHVwZGF0ZSBzdGF0ZSBhbmQgZW1pdCBoZWFkZXJzCisgICAgICAg
ICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFM
OgorICAgICAgICAgICAgICAgIHN0cmVhbS5oZWFkZXJzX3JlY3Zfc3RhdGUgPSBIZWFkZXJzU3Rh
dGUuQUZURVJfSEVBREVSUworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdHJl
YW0uaGVhZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX1RSQUlMRVJTCisgICAg
ICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2Vp
dmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPWhlYWRlcnMsCisgICAgICAgICAgICAg
ICAgICAgIHB1c2hfaWQ9c3RyZWFtLnB1c2hfaWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9
c3RyZWFtX2VuZGVkLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg
ZWxpZiBzdHJlYW0uZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuUFVTSF9QUk9NSVNFIGFuZCBzdHJl
YW0ucHVzaF9pZCBpcyBOb25lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoK
KyAgICAgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIkNsaWVudHMgbXVzdCBub3Qg
c2VuZCBQVVNIX1BST01JU0UiKQorICAgICAgICAgICAgZnJhbWVfYnVmID0gQnVmZmVyKGRhdGE9
ZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHB1c2hfaWQgPSBmcmFtZV9idWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgICAgICBoZWFkZXJzID0gc2VsZi5fZGVjb2RlX2hlYWRlcnMoCisgICAgICAg
ICAgICAgICAgc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YVtmcmFtZV9idWYudGVsbCgpIDpd
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRw
IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGRhdGE9cWxvZ19lbmNvZGVfcHVzaF9wcm9taXNlX2ZyYW1lKAorICAgICAgICAg
ICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9bGVuKGZyYW1lX2RhdGEpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aF9pZD1wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIGVtaXQgZXZlbnQKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICBQdXNoUHJvbWlzZVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPWhlYWRlcnMsIHB1c2hfaWQ9cHVzaF9pZCwgc3RyZWFtX2lkPXN0cmVhbS5zdHJl
YW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgZnJh
bWVfdHlwZSBpbiAoCisgICAgICAgICAgICBGcmFtZVR5cGUuUFJJT1JJVFksCisgICAgICAgICAg
ICBGcmFtZVR5cGUuQ0FOQ0VMX1BVU0gsCisgICAgICAgICAgICBGcmFtZVR5cGUuU0VUVElOR1Ms
CisgICAgICAgICAgICBGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLAorICAgICAgICAgICAgRnJhbWVU
eXBlLkdPQVdBWSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5NQVhfUFVTSF9JRCwKKyAgICAgICAg
ICAgIEZyYW1lVHlwZS5EVVBMSUNBVEVfUFVTSCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJh
aXNlIEZyYW1lVW5leHBlY3RlZCgKKyAgICAgICAgICAgICAgICAiSW52YWxpZCBmcmFtZSB0eXBl
IG9uIHJlcXVlc3Qgc3RyZWFtIgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbS5wdXNoX2lkIGlz
IE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlICJJbnZhbGlkIGZyYW1lIHR5cGUgb24gcHVzaCBz
dHJlYW0iCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisKKyAg
ICBkZWYgX2luaXRfY29ubmVjdGlvbihzZWxmKSAtPiBOb25lOgorICAgICAgICAjIHNlbmQgb3Vy
IHNldHRpbmdzCisgICAgICAgIHNlbGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkID0gc2VsZi5f
Y3JlYXRlX3VuaV9zdHJlYW0oU3RyZWFtVHlwZS5DT05UUk9MKQorICAgICAgICBzZWxmLl9xdWlj
LnNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgICAgICBzZWxmLl9sb2NhbF9jb250cm9sX3N0cmVh
bV9pZCwKKyAgICAgICAgICAgIGVuY29kZV9mcmFtZSgKKyAgICAgICAgICAgICAgICBGcmFtZVR5
cGUuU0VUVElOR1MsCisgICAgICAgICAgICAgICAgZW5jb2RlX3NldHRpbmdzKAorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nLlFQQUNLX01BWF9U
QUJMRV9DQVBBQ0lUWTogc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0dGluZy5RUEFDS19CTE9DS0VEX1NUUkVBTVM6IHNlbGYuX2Jsb2NrZWRfc3Ry
ZWFtcywKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICApLAorICAgICAgICApCisgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudCBhbmQgc2VsZi5f
bWF4X3B1c2hfaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3Ry
ZWFtX2RhdGEoCisgICAgICAgICAgICAgICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQs
CisgICAgICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5NQVhfUFVTSF9JRCwgZW5j
b2RlX3VpbnRfdmFyKHNlbGYuX21heF9wdXNoX2lkKSksCisgICAgICAgICAgICApCisKKyAgICAg
ICAgIyBjcmVhdGUgZW5jb2RlciBhbmQgZGVjb2RlciBzdHJlYW1zCisgICAgICAgIHNlbGYuX2xv
Y2FsX2VuY29kZXJfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0oCisgICAgICAg
ICAgICBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9s
b2NhbF9kZWNvZGVyX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAg
ICAgICAgU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSCisgICAgICAgICkKKworICAgIGRlZiBfcmVj
ZWl2ZV9yZXF1ZXN0X29yX3B1c2hfZGF0YSgKKyAgICAgICAgc2VsZiwgc3RyZWFtOiBIM1N0cmVh
bSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9vbAorICAgICkgLT4gTGlzdFtIM0V2ZW50
XToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBkYXRhIHJlY2VpdmVkIG9uIGEgcmVxdWVz
dCBvciBwdXNoIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIGh0dHBfZXZlbnRzOiBMaXN0
W0gzRXZlbnRdID0gW10KKworICAgICAgICBzdHJlYW0uYnVmZmVyICs9IGRhdGEKKyAgICAgICAg
aWYgc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgc3RyZWFtLmVuZGVkID0gVHJ1ZQorICAgICAg
ICBpZiBzdHJlYW0uYmxvY2tlZDoKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisg
ICAgICAgICMgc2hvcnRjdXQgZm9yIERBVEEgZnJhbWUgZnJhZ21lbnRzCisgICAgICAgIGlmICgK
KyAgICAgICAgICAgIHN0cmVhbS5mcmFtZV90eXBlID09IEZyYW1lVHlwZS5EQVRBCisgICAgICAg
ICAgICBhbmQgc3RyZWFtLmZyYW1lX3NpemUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBs
ZW4oc3RyZWFtLmJ1ZmZlcikgPCBzdHJlYW0uZnJhbWVfc2l6ZQorICAgICAgICApOgorICAgICAg
ICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT1zdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZh
bHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0cmVh
bS5mcmFtZV9zaXplIC09IGxlbihzdHJlYW0uYnVmZmVyKQorICAgICAgICAgICAgc3RyZWFtLmJ1
ZmZlciA9IGIiIgorICAgICAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisKKyAgICAgICAgIyBo
YW5kbGUgbG9uZSBGSU4KKyAgICAgICAgaWYgc3RyZWFtX2VuZGVkIGFuZCBub3Qgc3RyZWFtLmJ1
ZmZlcjoKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YiIiLAorICAgICAgICAgICAg
ICAgICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVk
PVRydWUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0
dXJuIGh0dHBfZXZlbnRzCisKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZl
cikKKyAgICAgICAgY29uc3VtZWQgPSAwCisKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToK
KyAgICAgICAgICAgICMgZmV0Y2ggbmV4dCBmcmFtZSBoZWFkZXIKKyAgICAgICAgICAgIGlmIHN0
cmVhbS5mcmFtZV9zaXplIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW0uZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgPSBidWYucHVsbF91aW50X3ZhcigpCisg
ICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAg
ICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgICAg
ICBhbmQgc3RyZWFtLmZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkRBVEEKKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGE9cWxvZ19lbmNvZGVfZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
eXRlX2xlbmd0aD1zdHJlYW0uZnJhbWVfc2l6ZSwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQK
KyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjaGVjayBob3cgbXVjaCBkYXRhIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAg
Y2h1bmtfc2l6ZSA9IG1pbihzdHJlYW0uZnJhbWVfc2l6ZSwgYnVmLmNhcGFjaXR5IC0gY29uc3Vt
ZWQpCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfdHlwZSAhPSBGcmFtZVR5cGUuREFUQSBh
bmQgY2h1bmtfc2l6ZSA8IHN0cmVhbS5mcmFtZV9zaXplOgorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgICMgcmVhZCBhdmFpbGFibGUgZGF0YQorICAgICAgICAgICAgZnJhbWVf
ZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGNodW5rX3NpemUpCisgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgIyBkZXRlY3QgZW5kIG9mIGZyYW1lCisgICAgICAg
ICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBjaHVua19zaXplCisgICAgICAgICAgICBpZiBub3Qg
c3RyZWFtLmZyYW1lX3NpemU6CisgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgPSBO
b25lCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5leHRl
bmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X29yX3B1c2hfZnJh
bWUoCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPXN0cmVhbS5mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZGF0YT1mcmFtZV9kYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQgYW5kIGJ1Zi5lb2YoKSwKKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2su
U3RyZWFtQmxvY2tlZDoKKyAgICAgICAgICAgICAgICBzdHJlYW0uYmxvY2tlZCA9IFRydWUKKyAg
ICAgICAgICAgICAgICBzdHJlYW0uYmxvY2tlZF9mcmFtZV9zaXplID0gbGVuKGZyYW1lX2RhdGEp
CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIHJlbW92ZSBwcm9jZXNzZWQgZGF0
YSBmcm9tIGJ1ZmZlcgorICAgICAgICBzdHJlYW0uYnVmZmVyID0gc3RyZWFtLmJ1ZmZlcltjb25z
dW1lZDpdCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisKKyAgICBkZWYgX3JlY2VpdmVf
c3RyZWFtX2RhdGFfdW5pKAorICAgICAgICBzZWxmLCBzdHJlYW06IEgzU3RyZWFtLCBkYXRhOiBi
eXRlcywgc3RyZWFtX2VuZGVkOiBib29sCisgICAgKSAtPiBMaXN0W0gzRXZlbnRdOgorICAgICAg
ICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgc3RyZWFtLmJ1ZmZl
ciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHN0cmVhbS5l
bmRlZCA9IFRydWUKKworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1zdHJlYW0uYnVmZmVyKQor
ICAgICAgICBjb25zdW1lZCA9IDAKKyAgICAgICAgdW5ibG9ja2VkX3N0cmVhbXM6IFNldFtpbnRd
ID0gc2V0KCkKKworICAgICAgICB3aGlsZSBzdHJlYW0uc3RyZWFtX3R5cGUgPT0gU3RyZWFtVHlw
ZS5QVVNIIG9yIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZldGNoIHN0cmVhbSB0eXBl
IGZvciB1bmlkaXJlY3Rpb25hbCBzdHJlYW1zCisgICAgICAgICAgICBpZiBzdHJlYW0uc3RyZWFt
X3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg
IHN0cmVhbS5zdHJlYW1fdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgICAg
ICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAgICAgICAgICAgIyBj
aGVjayB1bmljaXR5CisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0
cmVhbVR5cGUuQ09OVFJPTDoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9jb250
cm9sX3N0cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IFN0cmVhbUNyZWF0aW9uRXJyb3IoIk9ubHkgb25lIGNvbnRyb2wgc3RyZWFtIGlzIGFsbG93ZWQi
KQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2NvbnRyb2xfc3RyZWFtX2lkID0gc3Ry
ZWFtLnN0cmVhbV9pZAorICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09
IFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5f
cGVlcl9kZWNvZGVyX3N0cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFN0cmVhbUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk9ubHkgb25lIFFQQUNLIGRlY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZGVjb2Rlcl9z
dHJlYW1faWQgPSBzdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgZWxpZiBzdHJlYW0u
c3RyZWFtX3R5cGUgPT0gU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSOgorICAgICAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9wZWVyX2VuY29kZXJfc3RyZWFtX2lkIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgU3RyZWFtQ3JlYXRpb25FcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiT25seSBvbmUgUVBBQ0sgZW5jb2RlciBzdHJlYW0gaXMgYWxsb3dl
ZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGVlcl9lbmNvZGVyX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKworICAgICAgICAgICAg
aWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuQ09OVFJPTDoKKyAgICAgICAgICAg
ICAgICAjIGZldGNoIG5leHQgZnJhbWUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGZyYW1lX2xlbmd0aCkKKyAgICAgICAg
ICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAgICAgICAg
ICAgc2VsZi5faGFuZGxlX2NvbnRyb2xfZnJhbWUoZnJhbWVfdHlwZSwgZnJhbWVfZGF0YSkKKyAg
ICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSDoKKyAg
ICAgICAgICAgICAgICAjIGZldGNoIHB1c2ggaWQKKyAgICAgICAgICAgICAgICBpZiBzdHJlYW0u
cHVzaF9pZCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW0ucHVzaF9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisg
ICAgICAgICAgICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAgICAg
ICAgICAgICAgICBzdHJlYW0uYnVmZmVyID0gc3RyZWFtLmJ1ZmZlcltjb25zdW1lZDpdCisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVjZWl2ZV9yZXF1ZXN0X29yX3B1c2hfZGF0YShz
dHJlYW0sIGIiIiwgc3RyZWFtX2VuZGVkKQorICAgICAgICAgICAgZWxpZiBzdHJlYW0uc3RyZWFt
X3R5cGUgPT0gU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSOgorICAgICAgICAgICAgICAgICMgZmVl
ZCB1bmZyYW1lZCBkYXRhIHRvIGRlY29kZXIKKyAgICAgICAgICAgICAgICBkYXRhID0gYnVmLnB1
bGxfYnl0ZXMoYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSkKKyAgICAgICAgICAgICAgICBjb25z
dW1lZCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2VuY29kZXIuZmVlZF9kZWNvZGVyKGRhdGEpCisgICAgICAgICAgICAgICAgZXhj
ZXB0IHB5bHNxcGFjay5EZWNvZGVyU3RyZWFtRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBRcGFja0RlY29kZXJTdHJlYW1FcnJvcigpIGZyb20gZXhjCisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCArPSBsZW4oZGF0YSkKKyAgICAgICAg
ICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBBQ0tfRU5DT0RFUjoK
KyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBlbmNvZGVyCisgICAgICAg
ICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkp
CisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisgICAgICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgICAgICB1bmJsb2NrZWRfc3RyZWFtcy51cGRhdGUoc2VsZi5f
ZGVjb2Rlci5mZWVkX2VuY29kZXIoZGF0YSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IHB5bHNx
cGFjay5FbmNvZGVyU3RyZWFtRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICAgICByYWlz
ZSBRcGFja0VuY29kZXJTdHJlYW1FcnJvcigpIGZyb20gZXhjCisgICAgICAgICAgICAgICAgc2Vs
Zi5fZW5jb2Rlcl9ieXRlc19yZWNlaXZlZCArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgIyB1bmtub3duIHN0cmVhbSB0eXBlLCBkaXNjYXJkIGRhdGEKKyAg
ICAgICAgICAgICAgICBidWYuc2VlayhidWYuY2FwYWNpdHkpCisgICAgICAgICAgICAgICAgY29u
c3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJv
bSBidWZmZXIKKyAgICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6
XQorCisgICAgICAgICMgcHJvY2VzcyB1bmJsb2NrZWQgc3RyZWFtcworICAgICAgICBmb3Igc3Ry
ZWFtX2lkIGluIHVuYmxvY2tlZF9zdHJlYW1zOgorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5f
c3RyZWFtW3N0cmVhbV9pZF0KKworICAgICAgICAgICAgIyByZXN1bWUgaGVhZGVycworICAgICAg
ICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9y
ZXF1ZXN0X29yX3B1c2hfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9RnJh
bWVUeXBlLkhFQURFUlMsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGE9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPXN0cmVhbS5lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXIsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWQgPSBGYWxz
ZQorICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZSA9IE5vbmUKKworICAgICAg
ICAgICAgIyByZXN1bWUgcHJvY2Vzc2luZworICAgICAgICAgICAgaWYgc3RyZWFtLmJ1ZmZlcjoK
KyAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5leHRlbmQoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbS5l
bmRlZCkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRzLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDIxYzVhYmM0Mjcw
YzJlOGYxYmU1OGEwMDlhZTc1MjgxMmQxYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQpAQCAtMCwwICsxLDY2IEBACitmcm9tIGRhdGFj
bGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25h
bCwgVHVwbGUKKworSGVhZGVycyA9IExpc3RbVHVwbGVbYnl0ZXMsIGJ5dGVzXV0KKworCitjbGFz
cyBIM0V2ZW50OgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIEhUVFAvMyBldmVudHMuCisg
ICAgIiIiCisKKworQGRhdGFjbGFzcworY2xhc3MgRGF0YVJlY2VpdmVkKEgzRXZlbnQpOgorICAg
ICIiIgorICAgIFRoZSBEYXRhUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgZGF0YSBp
cyByZWNlaXZlZCBvbiBhIHN0cmVhbSBmcm9tCisgICAgdGhlIHJlbW90ZSBwZWVyLgorICAgICIi
IgorCisgICAgZGF0YTogYnl0ZXMKKyAgICAiVGhlIGRhdGEgd2hpY2ggd2FzIHJlY2VpdmVkLiIK
KworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3RyZWFtIHRoZSBkYXRh
IHdhcyByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBib29sCisgICAgIldoZXRo
ZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHB1c2hfaWQ6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9yIGBOb25lYCBpZiB0aGlz
IGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIEhlYWRlcnNSZWNlaXZlZChI
M0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgSGVhZGVyc1JlY2VpdmVkIGV2ZW50IGlzIGZpcmVk
IHdoZW5ldmVyIGhlYWRlcnMgYXJlIHJlY2VpdmVkLgorICAgICIiIgorCisgICAgaGVhZGVyczog
SGVhZGVycworICAgICJUaGUgaGVhZGVycy4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJU
aGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgaGVhZGVycyB3ZXJlIHJlY2VpdmVkIGZvci4iCisKKyAg
ICBzdHJlYW1fZW5kZWQ6IGJvb2wKKyAgICAiV2hldGhlciB0aGUgU1RSRUFNIGZyYW1lIGhhZCB0
aGUgRklOIGJpdCBzZXQuIgorCisgICAgcHVzaF9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAg
ICAiVGhlIFB1c2ggSUQgb3IgYE5vbmVgIGlmIHRoaXMgaXMgbm90IGEgcHVzaC4iCisKKworQGRh
dGFjbGFzcworY2xhc3MgUHVzaFByb21pc2VSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAg
ICBUaGUgUHVzaGVkU3RyZWFtUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgYSBwdXNo
ZWQgc3RyZWFtIGhhcyBiZWVuCisgICAgcmVjZWl2ZWQgZnJvbSB0aGUgcmVtb3RlIHBlZXIuCisg
ICAgIiIiCisKKyAgICBoZWFkZXJzOiBIZWFkZXJzCisgICAgIlRoZSByZXF1ZXN0IGhlYWRlcnMu
IgorCisgICAgcHVzaF9pZDogaW50CisgICAgIlRoZSBQdXNoIElEIG9mIHRoZSBwdXNoIHByb21p
c2UuIgorCisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIFN0cmVhbSBJRCBvZiB0aGUgc3Ry
ZWFtIHRoYXQgdGhlIHB1c2ggaXMgcmVsYXRlZCB0by4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMy9leGNlcHRpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MjAwYzFkNjFmYTViM2ExMTViNDM0NjRk
NTY3ZWEzYWEyODU3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvaDMvZXhjZXB0aW9ucy5weQpAQCAtMCwwICsxLDEwIEBACitjbGFzcyBIM0Vycm9yKEV4Y2Vw
dGlvbik6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgSFRUUC8zIGV4Y2VwdGlvbnMuCisg
ICAgIiIiCisKKworY2xhc3MgTm9BdmFpbGFibGVQdXNoSURFcnJvcihIM0Vycm9yKToKKyAgICAi
IiIKKyAgICBUaGVyZSBhcmUgbm8gYXZhaWxhYmxlIHB1c2ggSURzIGxlZnQuCisgICAgIiIiCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIz
NjNlOWI2MDgwYjBlZjNlOGJkNjhhYTUzMzAyNDlkZmYxMjIzOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIw
IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgor
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisK
K0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQ
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlz
dCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9ldmVudHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhj
ZXB0aW9ucy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVk
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NjQyZjc5
ZjIxZDg3MmYwMTA5NzlkY2Y2ZjBjNGE0MTVhY2MxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcHkudHlwZWQKQEAgLTAsMCArMSBAQAorTWFya2VyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBm
b3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODYxZjgyOTc5
ZTk5NzZkMjllN2M1OGFmMjdmM2VhNjFkMGRhMDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5weQpAQCAtMCwwICsxLDEyNCBA
QAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBvcyBpbXBv
cnQgUGF0aExpa2UKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIExpc3QsIE9wdGlvbmFsLCBUZXh0
SU8sIFVuaW9uCisKK2Zyb20gLi50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQsIGxvYWRfcGVtX3By
aXZhdGVfa2V5LCBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcworZnJvbSAubG9nZ2VyIGltcG9y
dCBRdWljTG9nZ2VyCitmcm9tIC5wYWNrZXQgaW1wb3J0IFF1aWNQcm90b2NvbFZlcnNpb24KKwor
CitAZGF0YWNsYXNzCitjbGFzcyBRdWljQ29uZmlndXJhdGlvbjoKKyAgICAiIiIKKyAgICBBIFFV
SUMgY29uZmlndXJhdGlvbi4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25h
bFtMaXN0W3N0cl1dID0gTm9uZQorICAgICIiIgorICAgIEEgbGlzdCBvZiBzdXBwb3J0ZWQgQUxQ
TiBwcm90b2NvbHMuCisgICAgIiIiCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aDogaW50ID0g
OAorICAgICIiIgorICAgIFRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgbG9jYWwgY29ubmVjdGlvbiBJ
RHMuCisgICAgIiIiCisKKyAgICBpZGxlX3RpbWVvdXQ6IGZsb2F0ID0gNjAuMAorICAgICIiIgor
ICAgIFRoZSBpZGxlIHRpbWVvdXQgaW4gc2Vjb25kcy4KKworICAgIFRoZSBjb25uZWN0aW9uIGlz
IHRlcm1pbmF0ZWQgaWYgbm90aGluZyBpcyByZWNlaXZlZCBmb3IgdGhlIGdpdmVuIGR1cmF0aW9u
LgorICAgICIiIgorCisgICAgaXNfY2xpZW50OiBib29sID0gVHJ1ZQorICAgICIiIgorICAgIFdo
ZXRoZXIgdGhpcyBpcyB0aGUgY2xpZW50IHNpZGUgb2YgdGhlIFFVSUMgY29ubmVjdGlvbi4KKyAg
ICAiIiIKKworICAgIG1heF9kYXRhOiBpbnQgPSAxMDQ4NTc2CisgICAgIiIiCisgICAgQ29ubmVj
dGlvbi13aWRlIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIKKworICAgIG1heF9zdHJlYW1f
ZGF0YTogaW50ID0gMTA0ODU3NgorICAgICIiIgorICAgIFBlci1zdHJlYW0gZmxvdyBjb250cm9s
IGxpbWl0LgorICAgICIiIgorCisgICAgcXVpY19sb2dnZXI6IE9wdGlvbmFsW1F1aWNMb2dnZXJd
ID0gTm9uZQorICAgICIiIgorICAgIFRoZSA6Y2xhc3M6YH5haW9xdWljLnF1aWMubG9nZ2VyLlF1
aWNMb2dnZXJgIGluc3RhbmNlIHRvIGxvZyBldmVudHMgdG8uCisgICAgIiIiCisKKyAgICBzZWNy
ZXRzX2xvZ19maWxlOiBUZXh0SU8gPSBOb25lCisgICAgIiIiCisgICAgQSBmaWxlLWxpa2Ugb2Jq
ZWN0IGluIHdoaWNoIHRvIGxvZyB0cmFmZmljIHNlY3JldHMuCisKKyAgICBUaGlzIGlzIHVzZWZ1
bCB0byBhbmFseXplIHRyYWZmaWMgY2FwdHVyZXMgd2l0aCBXaXJlc2hhcmsuCisgICAgIiIiCisK
KyAgICBzZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUg
c2VydmVyIG5hbWUgdG8gc2VuZCBkdXJpbmcgdGhlIFRMUyBoYW5kc2hha2UgdGhlIFNlcnZlciBO
YW1lIEluZGljYXRpb24uCisKKyAgICAuLiBub3RlOjogVGhpcyBpcyBvbmx5IHVzZWQgYnkgY2xp
ZW50cy4KKyAgICAiIiIKKworICAgIHNlc3Npb25fdGlja2V0OiBPcHRpb25hbFtTZXNzaW9uVGlj
a2V0XSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUgVExTIHNlc3Npb24gdGlja2V0IHdoaWNoIHNo
b3VsZCBiZSB1c2VkIGZvciBzZXNzaW9uIHJlc3VtcHRpb24uCisgICAgIiIiCisKKyAgICBjYWRh
dGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBjYWZpbGU6IE9wdGlvbmFsW3N0cl0gPSBO
b25lCisgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNlcnRpZmljYXRlOiBB
bnkgPSBOb25lCisgICAgY2VydGlmaWNhdGVfY2hhaW46IExpc3RbQW55XSA9IGZpZWxkKGRlZmF1
bHRfZmFjdG9yeT1saXN0KQorICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplOiBPcHRpb25hbFtp
bnRdID0gTm9uZQorICAgIHByaXZhdGVfa2V5OiBBbnkgPSBOb25lCisgICAgcXVhbnR1bV9yZWFk
aW5lc3NfdGVzdDogYm9vbCA9IEZhbHNlCisgICAgc3VwcG9ydGVkX3ZlcnNpb25zOiBMaXN0W2lu
dF0gPSBmaWVsZCgKKyAgICAgICAgZGVmYXVsdF9mYWN0b3J5PWxhbWJkYTogWworICAgICAgICAg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNywKKyAgICAgICAgICAgIFF1aWNQcm90b2Nv
bFZlcnNpb24uRFJBRlRfMjYsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZU
XzI1LAorICAgICAgICBdCisgICAgKQorICAgIHZlcmlmeV9tb2RlOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorCisgICAgZGVmIGxvYWRfY2VydF9jaGFpbigKKyAgICAgICAgc2VsZiwKKyAgICAgICAg
Y2VydGZpbGU6IFBhdGhMaWtlLAorICAgICAgICBrZXlmaWxlOiBPcHRpb25hbFtQYXRoTGlrZV0g
PSBOb25lLAorICAgICAgICBwYXNzd29yZDogT3B0aW9uYWxbVW5pb25bYnl0ZXMsIHN0cl1dID0g
Tm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIGEgcHJpdmF0
ZSBrZXkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNlcnRpZmljYXRlLgorICAgICAgICAiIiIKKyAg
ICAgICAgd2l0aCBvcGVuKGNlcnRmaWxlLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgIGNlcnRp
ZmljYXRlcyA9IGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGZwLnJlYWQoKSkKKyAgICAgICAg
c2VsZi5jZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlc1swXQorICAgICAgICBzZWxmLmNlcnRpZmlj
YXRlX2NoYWluID0gY2VydGlmaWNhdGVzWzE6XQorCisgICAgICAgIGlmIGtleWZpbGUgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oa2V5ZmlsZSwgInJiIikgYXMgZnA6CisgICAg
ICAgICAgICAgICAgc2VsZi5wcml2YXRlX2tleSA9IGxvYWRfcGVtX3ByaXZhdGVfa2V5KAorICAg
ICAgICAgICAgICAgICAgICBmcC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgIHBhc3N3b3Jk
PXBhc3N3b3JkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UocGFzc3dvcmQsIHN0cikKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBwYXNzd29yZCwKKyAg
ICAgICAgICAgICAgICApCisKKyAgICBkZWYgbG9hZF92ZXJpZnlfbG9jYXRpb25zKAorICAgICAg
ICBzZWxmLAorICAgICAgICBjYWZpbGU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBj
YXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYWRhdGE6IE9wdGlvbmFsW2J5
dGVzXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBh
IHNldCBvZiAiY2VydGlmaWNhdGlvbiBhdXRob3JpdHkiIChDQSkgY2VydGlmaWNhdGVzIHVzZWQg
dG8KKyAgICAgICAgdmFsaWRhdGUgb3RoZXIgcGVlcnMnIGNlcnRpZmljYXRlcy4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuY2FmaWxlID0gY2FmaWxlCisgICAgICAgIHNlbGYuY2FwYXRoID0g
Y2FwYXRoCisgICAgICAgIHNlbGYuY2FkYXRhID0gY2FkYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjFkZjRmYzE5MTZmZGEzZWZi
NDYxZTY2NzM0ZWMzNTlhZTBjMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDI2NTIgQEAKK2ltcG9ydCBi
aW5hc2NpaQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworZnJvbSBjb2xsZWN0aW9ucyBpbXBv
cnQgZGVxdWUKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworZnJvbSBlbnVtIGlt
cG9ydCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBEZXF1ZSwgRGljdCwgRnJvemVuU2V0
LCBMaXN0LCBPcHRpb25hbCwgU2VxdWVuY2UsIFR1cGxlCisKK2Zyb20gLi4gaW1wb3J0IHRscwor
ZnJvbSAuLmJ1ZmZlciBpbXBvcnQgVUlOVF9WQVJfTUFYLCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJv
ciwgc2l6ZV91aW50X3ZhcgorZnJvbSAuIGltcG9ydCBldmVudHMKK2Zyb20gLmNvbmZpZ3VyYXRp
b24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIC5jcnlwdG8gaW1wb3J0IENyeXB0b0Vy
cm9yLCBDcnlwdG9QYWlyLCBLZXlVbmF2YWlsYWJsZUVycm9yCitmcm9tIC5sb2dnZXIgaW1wb3J0
IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0IGltcG9ydCAoCisgICAgTk9OX0FDS19FTElD
SVRJTkdfRlJBTUVfVFlQRVMsCisgICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tF
VF9UWVBFX0lOSVRJQUwsCisgICAgUEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICBQQUNLRVRfVFlQ
RV9SRVRSWSwKKyAgICBQQUNLRVRfVFlQRV9aRVJPX1JUVCwKKyAgICBQUk9CSU5HX0ZSQU1FX1RZ
UEVTLAorICAgIFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRSwKKyAgICBRdWljRXJyb3JDb2RlLAor
ICAgIFF1aWNGcmFtZVR5cGUsCisgICAgUXVpY1Byb3RvY29sVmVyc2lvbiwKKyAgICBRdWljU3Ry
ZWFtRnJhbWUsCisgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMsCisgICAgZ2V0X3JldHJ5X2lu
dGVncml0eV90YWcsCisgICAgZ2V0X3NwaW5fYml0LAorICAgIGlzX2xvbmdfaGVhZGVyLAorICAg
IHB1bGxfYWNrX2ZyYW1lLAorICAgIHB1bGxfcXVpY19oZWFkZXIsCisgICAgcHVsbF9xdWljX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzLAorICAgIHB1c2hfYWNrX2ZyYW1lLAorICAgIHB1c2hfcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycywKKykKK2Zyb20gLnBhY2tldF9idWlsZGVyIGltcG9ydCAoCisg
ICAgUEFDS0VUX01BWF9TSVpFLAorICAgIFF1aWNEZWxpdmVyeVN0YXRlLAorICAgIFF1aWNQYWNr
ZXRCdWlsZGVyLAorICAgIFF1aWNQYWNrZXRCdWlsZGVyU3RvcCwKKykKK2Zyb20gLnJlY292ZXJ5
IGltcG9ydCBLX0dSQU5VTEFSSVRZLCBRdWljUGFja2V0UmVjb3ZlcnksIFF1aWNQYWNrZXRTcGFj
ZQorZnJvbSAuc3RyZWFtIGltcG9ydCBRdWljU3RyZWFtCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCJxdWljIikKKworRVBPQ0hfU0hPUlRDVVRTID0geworICAgICJJIjogdGxzLkVwb2No
LklOSVRJQUwsCisgICAgIkgiOiB0bHMuRXBvY2guSEFORFNIQUtFLAorICAgICIwIjogdGxzLkVw
b2NoLlpFUk9fUlRULAorICAgICIxIjogdGxzLkVwb2NoLk9ORV9SVFQsCit9CitNQVhfRUFSTFlf
REFUQSA9IDB4RkZGRkZGRkYKK1NFQ1JFVFNfTEFCRUxTID0gWworICAgIFsKKyAgICAgICAgTm9u
ZSwKKyAgICAgICAgIlFVSUNfQ0xJRU5UX0VBUkxZX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAg
IlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NM
SUVOVF9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICBdLAorICAgIFsKKyAgICAgICAgTm9uZSwKKyAg
ICAgICAgTm9uZSwKKyAgICAgICAgIlFVSUNfU0VSVkVSX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JF
VCIsCisgICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICBdLAorXQor
U1RSRUFNX0ZMQUdTID0gMHgwNworCitOZXR3b3JrQWRkcmVzcyA9IEFueQorCisjIGZyYW1lIHNp
emVzCitBQ0tfRlJBTUVfQ0FQQUNJVFkgPSA2NCAgIyBGSVhNRTogdGhpcyBpcyBhcmJpdHJhcnkh
CitBUFBMSUNBVElPTl9DTE9TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCAgIyArIHJlYXNv
biBsZW5ndGgKK0hBTkRTSEFLRV9ET05FX0ZSQU1FX0NBUEFDSVRZID0gMQorTUFYX0RBVEFfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOAorTUFYX1NUUkVBTV9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSAr
IDggKyA4CitORVdfQ09OTkVDVElPTl9JRF9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDEg
KyAyMCArIDE2CitQQVRIX0NIQUxMRU5HRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4CitQQVRIX1JF
U1BPTlNFX0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK1BJTkdfRlJBTUVfQ0FQQUNJVFkgPSAxCitS
RVRJUkVfQ09OTkVDVElPTl9JRF9DQVBBQ0lUWSA9IDEgKyA4CitTVFJFQU1TX0JMT0NLRURfQ0FQ
QUNJVFkgPSAxICsgOAorVFJBTlNQT1JUX0NMT1NFX0ZSQU1FX0NBUEFDSVRZID0gMSArIDggKyA4
ICsgOCAgIyArIHJlYXNvbiBsZW5ndGgKKworCitkZWYgRVBPQ0hTKHNob3J0Y3V0OiBzdHIpIC0+
IEZyb3plblNldFt0bHMuRXBvY2hdOgorICAgIHJldHVybiBmcm96ZW5zZXQoRVBPQ0hfU0hPUlRD
VVRTW2ldIGZvciBpIGluIHNob3J0Y3V0KQorCisKK2RlZiBkdW1wX2NpZChjaWQ6IGJ5dGVzKSAt
PiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkoY2lkKS5kZWNvZGUoImFzY2lpIikK
KworCitkZWYgZ2V0X2Vwb2NoKHBhY2tldF90eXBlOiBpbnQpIC0+IHRscy5FcG9jaDoKKyAgICBp
ZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgorICAgICAgICByZXR1cm4gdGxz
LkVwb2NoLklOSVRJQUwKKyAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1pFUk9f
UlRUOgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLlpFUk9fUlRUCisgICAgZWxpZiBwYWNrZXRf
dHlwZSA9PSBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6CisgICAgICAgIHJldHVybiB0bHMuRXBvY2gu
SEFORFNIQUtFCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5PTkVfUlRUCisK
KworZGVmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9pZDogaW50KSAtPiBib29s
OgorICAgICIiIgorICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIGNsaWVudCBpbml0
aWF0ZWQuCisgICAgIiIiCisgICAgcmV0dXJuIG5vdCAoc3RyZWFtX2lkICYgMSkKKworCitkZWYg
c3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZDogaW50KSAtPiBib29sOgorICAgICIi
IgorICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIHVuaWRpcmVjdGlvbmFsLgorICAg
ICIiIgorICAgIHJldHVybiBib29sKHN0cmVhbV9pZCAmIDIpCisKKworY2xhc3MgUXVpY0Nvbm5l
Y3Rpb25FcnJvcihFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9jb2Rl
OiBpbnQsIGZyYW1lX3R5cGU6IGludCwgcmVhc29uX3BocmFzZTogc3RyKToKKyAgICAgICAgc2Vs
Zi5lcnJvcl9jb2RlID0gZXJyb3JfY29kZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGUgPSBmcmFt
ZV90eXBlCisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKKworICAg
IGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcyA9ICJFcnJvcjogJWQsIHJlYXNv
bjogJXMiICUgKHNlbGYuZXJyb3JfY29kZSwgc2VsZi5yZWFzb25fcGhyYXNlKQorICAgICAgICBp
ZiBzZWxmLmZyYW1lX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzICs9ICIsIGZyYW1l
X3R5cGU6ICVzIiAlIHNlbGYuZnJhbWVfdHlwZQorICAgICAgICByZXR1cm4gcworCisKK2NsYXNz
IFF1aWNDb25uZWN0aW9uQWRhcHRlcihsb2dnaW5nLkxvZ2dlckFkYXB0ZXIpOgorICAgIGRlZiBw
cm9jZXNzKHNlbGYsIG1zZzogc3RyLCBrd2FyZ3M6IEFueSkgLT4gVHVwbGVbc3RyLCBBbnldOgor
ICAgICAgICByZXR1cm4gIlslc10gJXMiICUgKHNlbGYuZXh0cmFbImlkIl0sIG1zZyksIGt3YXJn
cworCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNDb25uZWN0aW9uSWQ6CisgICAgY2lkOiBieXRl
cworICAgIHNlcXVlbmNlX251bWJlcjogaW50CisgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuOiBi
eXRlcyA9IGIiIgorICAgIHdhc19zZW50OiBib29sID0gRmFsc2UKKworCitjbGFzcyBRdWljQ29u
bmVjdGlvblN0YXRlKEVudW0pOgorICAgIEZJUlNURkxJR0hUID0gMAorICAgIENPTk5FQ1RFRCA9
IDEKKyAgICBDTE9TSU5HID0gMgorICAgIERSQUlOSU5HID0gMworICAgIFRFUk1JTkFURUQgPSA0
CisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY05ldHdvcmtQYXRoOgorICAgIGFkZHI6IE5ldHdv
cmtBZGRyZXNzCisgICAgYnl0ZXNfcmVjZWl2ZWQ6IGludCA9IDAKKyAgICBieXRlc19zZW50OiBp
bnQgPSAwCisgICAgaXNfdmFsaWRhdGVkOiBib29sID0gRmFsc2UKKyAgICBsb2NhbF9jaGFsbGVu
Z2U6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICByZW1vdGVfY2hhbGxlbmdlOiBPcHRpb25h
bFtieXRlc10gPSBOb25lCisKKyAgICBkZWYgY2FuX3NlbmQoc2VsZiwgc2l6ZTogaW50KSAtPiBi
b29sOgorICAgICAgICByZXR1cm4gc2VsZi5pc192YWxpZGF0ZWQgb3IgKHNlbGYuYnl0ZXNfc2Vu
dCArIHNpemUpIDw9IDMgKiBzZWxmLmJ5dGVzX3JlY2VpdmVkCisKKworQGRhdGFjbGFzcworY2xh
c3MgUXVpY1JlY2VpdmVDb250ZXh0OgorICAgIGVwb2NoOiB0bHMuRXBvY2gKKyAgICBob3N0X2Np
ZDogYnl0ZXMKKyAgICBuZXR3b3JrX3BhdGg6IFF1aWNOZXR3b3JrUGF0aAorICAgIHF1aWNfbG9n
Z2VyX2ZyYW1lczogT3B0aW9uYWxbTGlzdFtBbnldXQorICAgIHRpbWU6IGZsb2F0CisKKworRU5E
X1NUQVRFUyA9IGZyb3plbnNldCgKKyAgICBbCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUu
Q0xPU0lORywKKyAgICAgICAgUXVpY0Nvbm5lY3Rpb25TdGF0ZS5EUkFJTklORywKKyAgICAgICAg
UXVpY0Nvbm5lY3Rpb25TdGF0ZS5URVJNSU5BVEVELAorICAgIF0KKykKKworCitjbGFzcyBRdWlj
Q29ubmVjdGlvbjoKKyAgICAiIiIKKyAgICBBIFFVSUMgY29ubmVjdGlvbi4KKworICAgIFRoZSBz
dGF0ZSBtYWNoaW5lIGlzIGRyaXZlbiBieSB0aHJlZSBraW5kcyBvZiBzb3VyY2VzOgorCisgICAg
LSB0aGUgQVBJIHVzZXIgcmVxdWVzdGluZyBkYXRhIHRvIGJlIHNlbmQgb3V0IChzZWUgOm1ldGg6
YGNvbm5lY3RgLAorICAgICAgOm1ldGg6YHNlbmRfcGluZ2AsIDptZXRoOmBzZW5kX2RhdGFncmFt
X2RhdGFgIGFuZCA6bWV0aDpgc2VuZF9zdHJlYW1fZGF0YWApCisgICAgLSBkYXRhIGJlaW5nIHJl
Y2VpdmVkIGZyb20gdGhlIG5ldHdvcmsgKHNlZSA6bWV0aDpgcmVjZWl2ZV9kYXRhZ3JhbWApCisg
ICAgLSBhIHRpbWVyIGZpcmluZyAoc2VlIDptZXRoOmBoYW5kbGVfdGltZXJgKQorCisgICAgOnBh
cmFtIGNvbmZpZ3VyYXRpb246IFRoZSBRVUlDIGNvbmZpZ3VyYXRpb24gdG8gdXNlLgorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICAqLAorICAgICAg
ICBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbiwKKyAgICAgICAgbG9nZ2VyX2Nvbm5l
Y3Rpb25faWQ6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUsCisgICAgICAgIG9yaWdpbmFsX2Nvbm5l
Y3Rpb25faWQ6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUsCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2ZldGNoZXI6IE9wdGlvbmFsW3Rscy5TZXNzaW9uVGlja2V0RmV0Y2hlcl0gPSBOb25lLAorICAg
ICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lvblRpY2tldEhh
bmRsZXJdID0gTm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24u
aXNfY2xpZW50OgorICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICBvcmlnaW5h
bF9jb25uZWN0aW9uX2lkIGlzIE5vbmUKKyAgICAgICAgICAgICksICJDYW5ub3Qgc2V0IG9yaWdp
bmFsX2Nvbm5lY3Rpb25faWQgZm9yIGEgY2xpZW50IgorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLmNlcnRpZmljYXRlIGlz
IG5vdCBOb25lCisgICAgICAgICAgICApLCAiU1NMIGNlcnRpZmljYXRlIGlzIHJlcXVpcmVkIGZv
ciBhIHNlcnZlciIKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbi5wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKSwgIlNTTCBwcml2
YXRlIGtleSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisKKyAgICAgICAgIyBjb25maWd1cmF0
aW9uCisgICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisgICAgICAg
IHNlbGYuX2lzX2NsaWVudCA9IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50CisKKyAgICAgICAgc2Vs
Zi5fYWNrX2RlbGF5ID0gS19HUkFOVUxBUklUWQorICAgICAgICBzZWxmLl9jbG9zZV9hdDogT3B0
aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9jbG9zZV9ldmVudDogT3B0aW9uYWxb
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY29ubmVj
dF9jYWxsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9jcnlwdG9zOiBEaWN0W3Rscy5FcG9jaCwg
Q3J5cHRvUGFpcl0gPSB7fQorICAgICAgICBzZWxmLl9jcnlwdG9fYnVmZmVyczogRGljdFt0bHMu
RXBvY2gsIEJ1ZmZlcl0gPSB7fQorICAgICAgICBzZWxmLl9jcnlwdG9fc3RyZWFtczogRGljdFt0
bHMuRXBvY2gsIFF1aWNTdHJlYW1dID0ge30KKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtl
dmVudHMuUXVpY0V2ZW50XSA9IGRlcXVlKCkKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBs
ZXRlID0gRmFsc2UKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IEZhbHNlCisg
ICAgICAgIHNlbGYuX2hvc3RfY2lkcyA9IFsKKyAgICAgICAgICAgIFF1aWNDb25uZWN0aW9uSWQo
CisgICAgICAgICAgICAgICAgY2lkPW9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9u
X2lkX2xlbmd0aCksCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyPTAsCisgICAgICAg
ICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPW9zLnVyYW5kb20oMTYpLAorICAgICAgICAg
ICAgICAgIHdhc19zZW50PVRydWUsCisgICAgICAgICAgICApCisgICAgICAgIF0KKyAgICAgICAg
c2VsZi5ob3N0X2NpZCA9IHNlbGYuX2hvc3RfY2lkc1swXS5jaWQKKyAgICAgICAgc2VsZi5faG9z
dF9jaWRfc2VxID0gMQorICAgICAgICBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQgPSAz
CisgICAgICAgIHNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0ID0gOAorICAg
ICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YSA9IGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEKKyAgICAg
ICAgc2VsZi5fbG9jYWxfbWF4X2RhdGFfc2VudCA9IGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IDAKKyAgICAgICAgc2VsZi5fbG9jYWxf
bWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwgPSBjb25maWd1cmF0aW9uLm1heF9zdHJlYW1fZGF0
YQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUgPSBjb25m
aWd1cmF0aW9uLm1heF9zdHJlYW1fZGF0YQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFt
X2RhdGFfdW5pID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5f
bG9jYWxfbWF4X3N0cmVhbXNfYmlkaSA9IDEyOAorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3Ry
ZWFtc191bmkgPSAxMjgKKyAgICAgICAgc2VsZi5fbG9zc19hdDogT3B0aW9uYWxbZmxvYXRdID0g
Tm9uZQorICAgICAgICBzZWxmLl9uZXR3b3JrX3BhdGhzOiBMaXN0W1F1aWNOZXR3b3JrUGF0aF0g
PSBbXQorICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gb3JpZ2luYWxfY29u
bmVjdGlvbl9pZAorICAgICAgICBzZWxmLl9wYWNpbmdfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5v
bmUKKyAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9IDAKKyAgICAgICAgc2VsZi5fcGFyYW1l
dGVyc19yZWNlaXZlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gb3MudXJhbmRv
bShjb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVuZ3RoKQorICAgICAgICBzZWxmLl9wZWVy
X2NpZF9zZXE6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2lkX2F2
YWlsYWJsZTogTGlzdFtRdWljQ29ubmVjdGlvbklkXSA9IFtdCisgICAgICAgIHNlbGYuX3BlZXJf
dG9rZW4gPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpY19sb2dnZXI6IE9wdGlvbmFsW1F1aWNMb2dn
ZXJUcmFjZV0gPSBOb25lCisgICAgICAgIHNlbGYuX3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQg
PSAzCisgICAgICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9IDAK
KyAgICAgICAgc2VsZi5fcmVtb3RlX2lkbGVfdGltZW91dCA9IDAuMCAgIyBzZWNvbmRzCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YSA9IDAKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9k
YXRhX3VzZWQgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YWdyYW1fZnJhbWVfc2l6
ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1f
ZGF0YV9iaWRpX2xvY2FsID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3Vu
aSA9IDAKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGkgPSAwCisgICAgICAg
IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkgPSAwCisgICAgICAgIHNlbGYuX3NwYWNlczog
RGljdFt0bHMuRXBvY2gsIFF1aWNQYWNrZXRTcGFjZV0gPSB7fQorICAgICAgICBzZWxmLl9zcGlu
X2JpdCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3NwaW5faGlnaGVzdF9wbiA9IDAKKyAgICAgICAg
c2VsZi5fc3RhdGUgPSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUCisgICAgICAgIHNl
bGYuX3N0YXRlbGVzc19yZXRyeV9jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fc3RyZWFtczogRGlj
dFtpbnQsIFF1aWNTdHJlYW1dID0ge30KKyAgICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX2Jp
ZGk6IExpc3RbUXVpY1N0cmVhbV0gPSBbXQorICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRf
dW5pOiBMaXN0W1F1aWNTdHJlYW1dID0gW10KKyAgICAgICAgc2VsZi5fdmVyc2lvbjogT3B0aW9u
YWxbaW50XSA9IE5vbmUKKworICAgICAgICAjIGxvZ2dpbmcKKyAgICAgICAgaWYgbG9nZ2VyX2Nv
bm5lY3Rpb25faWQgaXMgTm9uZToKKyAgICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkID0g
c2VsZi5fcGVlcl9jaWQKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gUXVpY0Nvbm5lY3Rpb25BZGFw
dGVyKAorICAgICAgICAgICAgbG9nZ2VyLCB7ImlkIjogZHVtcF9jaWQobG9nZ2VyX2Nvbm5lY3Rp
b25faWQpfQorICAgICAgICApCisgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXI6
CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IGNvbmZpZ3VyYXRpb24ucXVpY19sb2dn
ZXIuc3RhcnRfdHJhY2UoCisgICAgICAgICAgICAgICAgaXNfY2xpZW50PWNvbmZpZ3VyYXRpb24u
aXNfY2xpZW50LCBvZGNpZD1sb2dnZXJfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAgKQorCisg
ICAgICAgICMgbG9zcyByZWNvdmVyeQorICAgICAgICBzZWxmLl9sb3NzID0gUXVpY1BhY2tldFJl
Y292ZXJ5KAorICAgICAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dD1zZWxmLl9pc19jbGll
bnQsCisgICAgICAgICAgICBxdWljX2xvZ2dlcj1zZWxmLl9xdWljX2xvZ2dlciwKKyAgICAgICAg
ICAgIHNlbmRfcHJvYmU9c2VsZi5fc2VuZF9wcm9iZSwKKyAgICAgICAgKQorCisgICAgICAgICMg
dGhpbmdzIHRvIHNlbmQKKyAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IEZhbHNlCisgICAg
ICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nOiBEZXF1ZVtieXRlc10gPSBkZXF1ZSgpCisgICAg
ICAgIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9w
aW5nX3BlbmRpbmc6IExpc3RbaW50XSA9IFtdCisgICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcg
PSBGYWxzZQorICAgICAgICBzZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9pZHM6IExpc3RbaW50XSA9
IFtdCisgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKKworICAg
ICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyID0g
c2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgorICAgICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5k
bGVyID0gc2Vzc2lvbl90aWNrZXRfaGFuZGxlcgorCisgICAgICAgICMgZnJhbWUgaGFuZGxlcnMK
KyAgICAgICAgc2VsZi5fX2ZyYW1lX2hhbmRsZXJzID0geworICAgICAgICAgICAgMHgwMDogKHNl
bGYuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lLCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAw
eDAxOiAoc2VsZi5faGFuZGxlX3BpbmdfZnJhbWUsIEVQT0NIUygiSUgwMSIpKSwKKyAgICAgICAg
ICAgIDB4MDI6IChzZWxmLl9oYW5kbGVfYWNrX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwKKyAgICAg
ICAgICAgIDB4MDM6IChzZWxmLl9oYW5kbGVfYWNrX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwKKyAg
ICAgICAgICAgIDB4MDQ6IChzZWxmLl9oYW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgwNTogKHNlbGYuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDA2OiAoc2VsZi5faGFuZGxlX2NyeXB0
b19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA3OiAoc2VsZi5faGFuZGxl
X25ld190b2tlbl9mcmFtZSwgRVBPQ0hTKCIxIikpLAorICAgICAgICAgICAgMHgwODogKHNlbGYu
X2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDA5OiAo
c2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4
MEE6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgwQjogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAg
ICAgICAgICAweDBDOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwK
KyAgICAgICAgICAgIDB4MEQ6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAx
IikpLAorICAgICAgICAgICAgMHgwRTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NI
UygiMDEiKSksCisgICAgICAgICAgICAweDBGOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwg
RVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTA6IChzZWxmLl9oYW5kbGVfbWF4X2RhdGFf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDExOiAoc2VsZi5faGFuZGxlX21h
eF9zdHJlYW1fZGF0YV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTI6IChz
ZWxmLl9oYW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAg
ICAgICAgIDB4MTM6IChzZWxmLl9oYW5kbGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxNDogKHNlbGYuX2hhbmRsZV9kYXRhX2Jsb2NrZWRfZnJh
bWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE1OiAoc2VsZi5faGFuZGxlX3N0cmVh
bV9kYXRhX2Jsb2NrZWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE2OiAo
c2VsZi5faGFuZGxlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAg
ICAgICAgIDB4MTc6IChzZWxmLl9oYW5kbGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxODogKHNlbGYuX2hhbmRsZV9uZXdfY29ubmVjdGlvbl9p
ZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTk6IChzZWxmLl9oYW5kbGVf
cmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDFBOiAoc2VsZi5faGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAor
ICAgICAgICAgICAgMHgxQjogKHNlbGYuX2hhbmRsZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lLCBFUE9D
SFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQzogKHNlbGYuX2hhbmRsZV9jb25uZWN0aW9uX2Ns
b3NlX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwKKyAgICAgICAgICAgIDB4MUQ6IChzZWxmLl9oYW5k
bGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hTKCIxIikpLAorICAgICAgICAgICAgMHgx
RTogKHNlbGYuX2hhbmRsZV9oYW5kc2hha2VfZG9uZV9mcmFtZSwgRVBPQ0hTKCIxIikpLAorICAg
ICAgICAgICAgMHgzMDogKHNlbGYuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSwgRVBPQ0hTKCIwMSIp
KSwKKyAgICAgICAgICAgIDB4MzE6IChzZWxmLl9oYW5kbGVfZGF0YWdyYW1fZnJhbWUsIEVQT0NI
UygiMDEiKSksCisgICAgICAgIH0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25maWd1cmF0
aW9uKHNlbGYpIC0+IFF1aWNDb25maWd1cmF0aW9uOgorICAgICAgICByZXR1cm4gc2VsZi5fY29u
ZmlndXJhdGlvbgorCisgICAgZGVmIGNoYW5nZV9jb25uZWN0aW9uX2lkKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBTd2l0Y2ggdG8gdGhlIG5leHQgYXZhaWxhYmxlIGNvbm5l
Y3Rpb24gSUQgYW5kIHJldGlyZQorICAgICAgICB0aGUgcHJldmlvdXMgb25lLgorCisgICAgICAg
IEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRg
IHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2ggbmVlZHMgdG8gYmUgc2VudC4KKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3BlZXJfY2lkX2F2YWlsYWJsZToKKyAgICAgICAgICAg
ICMgcmV0aXJlIHByZXZpb3VzIENJRAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAor
ICAgICAgICAgICAgICAgICJSZXRpcmluZyBDSUQgJXMgKCVkKSIsIGR1bXBfY2lkKHNlbGYuX3Bl
ZXJfY2lkKSwgc2VsZi5fcGVlcl9jaWRfc2VxCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9pZHMuYXBwZW5kKHNlbGYuX3BlZXJfY2lkX3NlcSkKKwor
ICAgICAgICAgICAgIyBhc3NpZ24gbmV3IENJRAorICAgICAgICAgICAgY29ubmVjdGlvbl9pZCA9
IHNlbGYuX3BlZXJfY2lkX2F2YWlsYWJsZS5wb3AoMCkKKyAgICAgICAgICAgIHNlbGYuX3BlZXJf
Y2lkX3NlcSA9IGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICBzZWxm
Ll9wZWVyX2NpZCA9IGNvbm5lY3Rpb25faWQuY2lkCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCisgICAgICAgICAgICAgICAgIlN3aXRjaGluZyB0byBDSUQgJXMgKCVkKSIsIGR1bXBf
Y2lkKHNlbGYuX3BlZXJfY2lkKSwgc2VsZi5fcGVlcl9jaWRfc2VxCisgICAgICAgICAgICApCisK
KyAgICBkZWYgY2xvc2UoCisgICAgICAgIHNlbGYsCisgICAgICAgIGVycm9yX2NvZGU6IGludCA9
IFF1aWNFcnJvckNvZGUuTk9fRVJST1IsCisgICAgICAgIGZyYW1lX3R5cGU6IE9wdGlvbmFsW2lu
dF0gPSBOb25lLAorICAgICAgICByZWFzb25fcGhyYXNlOiBzdHIgPSAiIiwKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KKworICAgICAg
ICA6cGFyYW0gZXJyb3JfY29kZTogQW4gZXJyb3IgY29kZSBpbmRpY2F0aW5nIHdoeSB0aGUgY29u
bmVjdGlvbiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgY2xvc2VkLgorICAg
ICAgICA6cGFyYW0gcmVhc29uX3BocmFzZTogQSBodW1hbi1yZWFkYWJsZSBleHBsYW5hdGlvbiBv
ZiB3aHkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIGlzIGJl
aW5nIGNsb3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3N0YXRlIG5vdCBpbiBF
TkRfU1RBVEVTOgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMuQ29ubmVj
dGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgYWRkcjog
TmV0d29ya0FkZHJlc3MsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAg
ICBJbml0aWF0ZSB0aGUgVExTIGhhbmRzaGFrZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBjYW4g
b25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUuCisKKyAgICAgICAg
QWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAg
dG8gcmV0cmlldmUgZGF0YQorICAgICAgICB3aGljaCBuZWVkcyB0byBiZSBzZW50LgorCisgICAg
ICAgIDpwYXJhbSBhZGRyOiBUaGUgbmV0d29yayBhZGRyZXNzIG9mIHRoZSByZW1vdGUgcGVlci4K
KyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIGFzc2VydCAoCisgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQgYW5kIG5vdCBzZWxmLl9j
b25uZWN0X2NhbGxlZAorICAgICAgICApLCAiY29ubmVjdCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBm
b3IgY2xpZW50cyBhbmQgYSBzaW5nbGUgdGltZSIKKyAgICAgICAgc2VsZi5fY29ubmVjdF9jYWxs
ZWQgPSBUcnVlCisKKyAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtRdWljTmV0d29ya1Bh
dGgoYWRkciwgaXNfdmFsaWRhdGVkPVRydWUpXQorICAgICAgICBzZWxmLl92ZXJzaW9uID0gc2Vs
Zi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnNbMF0KKyAgICAgICAgc2VsZi5fY29u
bmVjdChub3c9bm93KQorCisgICAgZGVmIGRhdGFncmFtc190b19zZW5kKHNlbGYsIG5vdzogZmxv
YXQpIC0+IExpc3RbVHVwbGVbYnl0ZXMsIE5ldHdvcmtBZGRyZXNzXV06CisgICAgICAgICIiIgor
ICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGAoZGF0YSwgYWRkcilgIHR1cGxlcyBvZiBkYXRhZ3Jh
bXMgd2hpY2ggbmVlZCB0byBiZQorICAgICAgICBzZW50LCBhbmQgdGhlIG5ldHdvcmsgYWRkcmVz
cyB0byB3aGljaCB0aGV5IG5lZWQgdG8gYmUgc2VudC4KKworICAgICAgICBBZnRlciBjYWxsaW5n
IHRoaXMgbWV0aG9kIGNhbGwgOm1ldGg6YGdldF90aW1lcmAgdG8ga25vdyB3aGVuIHRoZSBuZXh0
CisgICAgICAgIHRpbWVyIG5lZWRzIHRvIGJlIHNldC4KKworICAgICAgICA6cGFyYW0gbm93OiBU
aGUgY3VycmVudCB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgbmV0d29ya19wYXRoID0gc2Vs
Zi5fbmV0d29ya19wYXRoc1swXQorCisgICAgICAgIGlmIHNlbGYuX3N0YXRlIGluIEVORF9TVEFU
RVM6CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICAjIGJ1aWxkIGRhdGFncmFtcwor
ICAgICAgICBidWlsZGVyID0gUXVpY1BhY2tldEJ1aWxkZXIoCisgICAgICAgICAgICBob3N0X2Np
ZD1zZWxmLmhvc3RfY2lkLAorICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwK
KyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251bWJlciwKKyAgICAgICAg
ICAgIHBlZXJfY2lkPXNlbGYuX3BlZXJfY2lkLAorICAgICAgICAgICAgcGVlcl90b2tlbj1zZWxm
Ll9wZWVyX3Rva2VuLAorICAgICAgICAgICAgcXVpY19sb2dnZXI9c2VsZi5fcXVpY19sb2dnZXIs
CisgICAgICAgICAgICBzcGluX2JpdD1zZWxmLl9zcGluX2JpdCwKKyAgICAgICAgICAgIHZlcnNp
b249c2VsZi5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBpZiBzZWxmLl9jbG9zZV9wZW5k
aW5nOgorICAgICAgICAgICAgZm9yIGVwb2NoLCBwYWNrZXRfdHlwZSBpbiAoCisgICAgICAgICAg
ICAgICAgKHRscy5FcG9jaC5PTkVfUlRULCBQQUNLRVRfVFlQRV9PTkVfUlRUKSwKKyAgICAgICAg
ICAgICAgICAodGxzLkVwb2NoLkhBTkRTSEFLRSwgUEFDS0VUX1RZUEVfSEFORFNIQUtFKSwKKyAg
ICAgICAgICAgICAgICAodGxzLkVwb2NoLklOSVRJQUwsIFBBQ0tFVF9UWVBFX0lOSVRJQUwpLAor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vw
b2NoXQorICAgICAgICAgICAgICAgIGlmIGNyeXB0by5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KHBhY2tldF90eXBlLCBjcnlwdG8pCisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcl9jb2RlPXNlbGYuX2Nsb3NlX2V2ZW50LmVycm9yX2NvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPXNlbGYuX2Nsb3NlX2V2ZW50LmZyYW1lX3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPXNlbGYuX2Nsb3NlX2V2ZW50
LnJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9iZWdpbihpc19pbml0aWF0b3I9VHJ1ZSwgbm93PW5v
dykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCisgICAg
ICAgICAgICBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMgPSAoCisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9zcy5jb25nZXN0aW9uX3dpbmRvdyAtIHNlbGYuX2xvc3MuYnl0ZXNfaW5fZmxpZ2h0Cisg
ICAgICAgICAgICApCisgICAgICAgICAgICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nIGFuZCBidWls
ZGVyLm1heF9mbGlnaHRfYnl0ZXMgPCBQQUNLRVRfTUFYX1NJWkU6CisgICAgICAgICAgICAgICAg
YnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVzID0gUEFDS0VUX01BWF9TSVpFCisKKyAgICAgICAgICAg
ICMgbGltaXQgZGF0YSBvbiB1bi12YWxpZGF0ZWQgbmV0d29yayBwYXRocworICAgICAgICAgICAg
aWYgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQ6CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5tYXhfdG90YWxfYnl0ZXMgPSAoCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5i
eXRlc19yZWNlaXZlZCAqIDMgLSBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudAorICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9o
YW5kc2hha2VfY29uZmlybWVkOgorICAgICAgICAgICAgICAgICAgICBmb3IgZXBvY2ggaW4gW3Rs
cy5FcG9jaC5JTklUSUFMLCB0bHMuRXBvY2guSEFORFNIQUtFXToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3dyaXRlX2hhbmRzaGFrZShidWlsZGVyLCBlcG9jaCwgbm93KQorICAgICAg
ICAgICAgICAgIHNlbGYuX3dyaXRlX2FwcGxpY2F0aW9uKGJ1aWxkZXIsIG5ldHdvcmtfcGF0aCwg
bm93KQorICAgICAgICAgICAgZXhjZXB0IFF1aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAg
ICAgICAgICBwYXNzCisKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVz
aCgpCisKKyAgICAgICAgaWYgZGF0YWdyYW1zOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0X251
bWJlciA9IGJ1aWxkZXIucGFja2V0X251bWJlcgorCisgICAgICAgICAgICAjIHJlZ2lzdGVyIHBh
Y2tldHMKKyAgICAgICAgICAgIHNlbnRfaGFuZHNoYWtlID0gRmFsc2UKKyAgICAgICAgICAgIGZv
ciBwYWNrZXQgaW4gcGFja2V0czoKKyAgICAgICAgICAgICAgICBwYWNrZXQuc2VudF90aW1lID0g
bm93CisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5vbl9wYWNrZXRfc2VudCgKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0PXBhY2tldCwgc3BhY2U9c2VsZi5fc3BhY2VzW3BhY2tldC5lcG9j
aF0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgcGFja2V0LmVwb2NoID09
IHRscy5FcG9jaC5IQU5EU0hBS0U6CisgICAgICAgICAgICAgICAgICAgIHNlbnRfaGFuZHNoYWtl
ID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBsb2cgcGFja2V0CisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVn
b3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9z
ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYWNrZXRfdHlwZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLnBhY2tldF90eXBlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQucGFja2V0X3R5cGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWFkZXIiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfbnVtYmVy
Ijogc3RyKHBhY2tldC5wYWNrZXRfbnVtYmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhY2tldF9zaXplIjogcGFja2V0LnNlbnRfYnl0ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoc2VsZi5ob3N0X2NpZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbG9uZ19oZWFkZXIocGFja2V0LnBhY2tldF90
eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICIiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKHNlbGYuX3BlZXJfY2lkKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmcmFtZXMiOiBwYWNrZXQucXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNoZWNr
IGlmIHdlIGNhbiBkaXNjYXJkIGluaXRpYWwga2V5cworICAgICAgICAgICAgaWYgc2VudF9oYW5k
c2hha2UgYW5kIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICBzZWxmLl9kaXNjYXJk
X2Vwb2NoKHRscy5FcG9jaC5JTklUSUFMKQorCisgICAgICAgICMgcmV0dXJuIGRhdGFncmFtcyB0
byBzZW5kIGFuZCB0aGUgZGVzdGluYXRpb24gbmV0d29yayBhZGRyZXNzCisgICAgICAgIHJldCA9
IFtdCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBkYXRhZ3JhbXM6CisgICAgICAgICAgICBieXRl
X2xlbmd0aCA9IGxlbihkYXRhZ3JhbSkKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5ieXRlc19z
ZW50ICs9IGJ5dGVfbGVuZ3RoCisgICAgICAgICAgICByZXQuYXBwZW5kKChkYXRhZ3JhbSwgbmV0
d29ya19wYXRoLmFkZHIpKQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAg
ICAgICBldmVudD0iZGF0YWdyYW1zX3NlbnQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsi
Ynl0ZV9sZW5ndGgiOiBieXRlX2xlbmd0aCwgImNvdW50IjogMX0sCisgICAgICAgICAgICAgICAg
KQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZChzZWxmLCBpc191bmlkaXJlY3Rpb25hbD1GYWxzZSkgLT4gaW50OgorICAgICAgICAiIiIK
KyAgICAgICAgUmV0dXJuIHRoZSBzdHJlYW0gSUQgZm9yIHRoZSBuZXh0IHN0cmVhbSBjcmVhdGVk
IGJ5IHRoaXMgZW5kcG9pbnQuCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSAoaW50
KGlzX3VuaWRpcmVjdGlvbmFsKSA8PCAxKSB8IGludChub3Qgc2VsZi5faXNfY2xpZW50KQorICAg
ICAgICB3aGlsZSBzdHJlYW1faWQgaW4gc2VsZi5fc3RyZWFtczoKKyAgICAgICAgICAgIHN0cmVh
bV9pZCArPSA0CisgICAgICAgIHJldHVybiBzdHJlYW1faWQKKworICAgIGRlZiBnZXRfdGltZXIo
c2VsZikgLT4gT3B0aW9uYWxbZmxvYXRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRo
ZSB0aW1lIGF0IHdoaWNoIHRoZSB0aW1lciBzaG91bGQgZmlyZSBvciBOb25lIGlmIG5vIHRpbWVy
IGlzIG5lZWRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fY2xvc2Vf
YXQKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgbm90IGluIEVORF9TVEFURVM6CisgICAgICAgICAg
ICAjIGFjayB0aW1lcgorICAgICAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYuX2xvc3Muc3BhY2Vz
OgorICAgICAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3QgTm9uZSBhbmQgc3BhY2Uu
YWNrX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc3BhY2Uu
YWNrX2F0CisKKyAgICAgICAgICAgICMgbG9zcyBkZXRlY3Rpb24gdGltZXIKKyAgICAgICAgICAg
IHNlbGYuX2xvc3NfYXQgPSBzZWxmLl9sb3NzLmdldF9sb3NzX2RldGVjdGlvbl90aW1lKCkKKyAg
ICAgICAgICAgIGlmIHNlbGYuX2xvc3NfYXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX2xvc3NfYXQg
PCB0aW1lcl9hdDoKKyAgICAgICAgICAgICAgICB0aW1lcl9hdCA9IHNlbGYuX2xvc3NfYXQKKwor
ICAgICAgICAgICAgIyBwYWNpbmcgdGltZXIKKyAgICAgICAgICAgIGlmIHNlbGYuX3BhY2luZ19h
dCBpcyBub3QgTm9uZSBhbmQgc2VsZi5fcGFjaW5nX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAg
ICAgICAgdGltZXJfYXQgPSBzZWxmLl9wYWNpbmdfYXQKKworICAgICAgICByZXR1cm4gdGltZXJf
YXQKKworICAgIGRlZiBoYW5kbGVfdGltZXIoc2VsZiwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIEhhbmRsZSB0aGUgdGltZXIuCisKKyAgICAgICAgQWZ0ZXIgY2Fs
bGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmll
dmUgZGF0YQorICAgICAgICB3aGljaCBuZWVkcyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJh
bSBub3c6IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGVuZCBvZiBj
bG9zaW5nIHBlcmlvZCBvciBpZGxlIHRpbWVvdXQKKyAgICAgICAgaWYgbm93ID49IHNlbGYuX2Ns
b3NlX2F0OgorICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfZXZlbnQgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLklOVEVSTkFM
X0VSUk9SLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgIHJlYXNvbl9waHJhc2U9IklkbGUgdGltZW91dCIsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfZW5kKCkKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgICMgbG9zcyBkZXRlY3Rpb24gdGltZW91dAorICAgICAgICBpZiBzZWxmLl9sb3NzX2F0
IGlzIG5vdCBOb25lIGFuZCBub3cgPj0gc2VsZi5fbG9zc19hdDoKKyAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygiTG9zcyBkZXRlY3Rpb24gdHJpZ2dlcmVkIikKKyAgICAgICAgICAgIHNl
bGYuX2xvc3Mub25fbG9zc19kZXRlY3Rpb25fdGltZW91dChub3c9bm93KQorCisgICAgZGVmIG5l
eHRfZXZlbnQoc2VsZikgLT4gT3B0aW9uYWxbZXZlbnRzLlF1aWNFdmVudF06CisgICAgICAgICIi
IgorICAgICAgICBSZXRyaWV2ZSB0aGUgbmV4dCBldmVudCBmcm9tIHRoZSBldmVudCBidWZmZXIu
CisKKyAgICAgICAgUmV0dXJucyBgTm9uZWAgaWYgdGhlcmUgYXJlIG5vIGJ1ZmZlcmVkIGV2ZW50
cy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9l
dmVudHMucG9wbGVmdCgpCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgIGRlZiByZWNlaXZlX2RhdGFncmFtKHNlbGYsIGRhdGE6IGJ5dGVz
LCBhZGRyOiBOZXR3b3JrQWRkcmVzcywgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgIiIi
CisgICAgICAgIEhhbmRsZSBhbiBpbmNvbWluZyBkYXRhZ3JhbS4KKworICAgICAgICBBZnRlciBj
YWxsaW5nIHRoaXMgbWV0aG9kIGNhbGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRy
aWV2ZSBkYXRhCisgICAgICAgIHdoaWNoIG5lZWRzIHRvIGJlIHNlbnQuCisKKyAgICAgICAgOnBh
cmFtIGRhdGE6IFRoZSBkYXRhZ3JhbSB3aGljaCB3YXMgcmVjZWl2ZWQuCisgICAgICAgIDpwYXJh
bSBhZGRyOiBUaGUgbmV0d29yayBhZGRyZXNzIGZyb20gd2hpY2ggdGhlIGRhdGFncmFtIHdhcyBy
ZWNlaXZlZC4KKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAg
IiIiCisgICAgICAgICMgc3RvcCBoYW5kbGluZyBwYWNrZXRzIHdoZW4gY2xvc2luZworICAgICAg
ICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5z
cG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFncmFtc19yZWNlaXZlZCIsCisgICAg
ICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogbGVuKGRhdGEpLCAiY291bnQiOiAxfSwK
KyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAg
ICB3aGlsZSBub3QgYnVmLmVvZigpOgorICAgICAgICAgICAgc3RhcnRfb2ZmID0gYnVmLnRlbGwo
KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19o
ZWFkZXIoCisgICAgICAgICAgICAgICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2Nv
bmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAg
ICAgICAgICAgIyBjaGVjayBkZXN0aW5hdGlvbiBDSUQgbWF0Y2hlcworICAgICAgICAgICAgZGVz
dGluYXRpb25fY2lkX3NlcTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgICAgIGZvciBj
b25uZWN0aW9uX2lkIGluIHNlbGYuX2hvc3RfY2lkczoKKyAgICAgICAgICAgICAgICBpZiBoZWFk
ZXIuZGVzdGluYXRpb25fY2lkID09IGNvbm5lY3Rpb25faWQuY2lkOgorICAgICAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbl9jaWRfc2VxID0gY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVu
dCBhbmQgZGVzdGluYXRpb25fY2lkX3NlcSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
dHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJvcHBl
ZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJ1bmtub3duX2Nv
bm5lY3Rpb25faWQifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgICAgICAjIGNoZWNrIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgICAg
IGlmICgKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBh
bmQgc2VsZi5fc3RhdGUgPT0gUXVpY0Nvbm5lY3Rpb25TdGF0ZS5GSVJTVEZMSUdIVAorICAgICAg
ICAgICAgICAgIGFuZCBoZWFkZXIudmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09U
SUFUSU9OCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICMgdmVyc2lvbiBuZWdvdGlh
dGlvbgorICAgICAgICAgICAgICAgIHZlcnNpb25zID0gW10KKyAgICAgICAgICAgICAgICB3aGls
ZSBub3QgYnVmLmVvZigpOgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucy5hcHBlbmQoYnVm
LnB1bGxfdWludDMyKCkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVu
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9yZWNlaXZlZCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5
cGUiOiAidmVyc2lvbl9uZWdvdGlhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaWQiOiBkdW1w
X2NpZChoZWFkZXIuc291cmNlX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkY2lkIjogZHVtcF9jaWQoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjog
W10sCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgY29tbW9uID0gc2V0KHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVk
X3ZlcnNpb25zKS5pbnRlcnNlY3Rpb24oCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIG5vdCBjb21tb246CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcigiQ291bGQgbm90IGZpbmQgYSBjb21tb24g
cHJvdG9jb2wgdmVyc2lvbiIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2V2ZW50
ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJvdG9jb2wgdmVyc2lvbiIsCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZW5kKCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgc2VsZi5fdmVyc2lv
biA9IFF1aWNQcm90b2NvbFZlcnNpb24obWF4KGNvbW1vbikpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oIlJldHJ5aW5nIHdpdGggJXMiLCBzZWxmLl92ZXJzaW9uKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKyAgICAgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgICAgIGhlYWRlci52ZXJzaW9uIGlzIG5v
dCBOb25lCisgICAgICAgICAgICAgICAgYW5kIGhlYWRlci52ZXJzaW9uIG5vdCBpbiBzZWxmLl9j
b25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucworICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICAjIHVuc3VwcG9ydGVkIHZlcnNpb24KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19s
b2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5z
cG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIiOiAidW5zdXBwb3J0ZWRfdmVy
c2lvbiJ9LAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudCBhbmQgaGVhZGVyLnBhY2tldF90eXBlID09
IFBBQ0tFVF9UWVBFX1JFVFJZOgorICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIHN0YXRlbGVz
cyByZXRyeSBpbnRlZ3JpdHkgdGFnCisgICAgICAgICAgICAgICAgaW50ZWdyaXR5X3RhZyA9IGdl
dF9yZXRyeV9pbnRlZ3JpdHlfdGFnKAorICAgICAgICAgICAgICAgICAgICBidWYuZGF0YV9zbGlj
ZShzdGFydF9vZmYsIGJ1Zi50ZWxsKCkgLSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUpLAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlci5kZXN0aW5hdGlv
bl9jaWQgPT0gc2VsZi5ob3N0X2NpZAorICAgICAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLmlu
dGVncml0eV90YWcgPT0gaW50ZWdyaXR5X3RhZworICAgICAgICAgICAgICAgICAgICBhbmQgbm90
IHNlbGYuX3N0YXRlbGVzc19yZXRyeV9jb3VudAorICAgICAgICAgICAgICAgICk6CisgICAgICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50PSJwYWNrZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5
cGUiOiAicmV0cnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjog
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaWQiOiBkdW1wX2NpZCho
ZWFkZXIuc291cmNlX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJh
bWVzIjogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0
aW9uX2lkID0gc2VsZi5fcGVlcl9jaWQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9j
aWQgPSBoZWFkZXIuc291cmNlX2NpZAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX3Rv
a2VuID0gaGVhZGVyLnRva2VuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlbGVzc19y
ZXRyeV9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJQ
ZXJmb3JtaW5nIHN0YXRlbGVzcyByZXRyeSIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nv
bm5lY3Qobm93PW5vdykKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgbmV0
d29ya19wYXRoID0gc2VsZi5fZmluZF9uZXR3b3JrX3BhdGgoYWRkcikKKworICAgICAgICAgICAg
IyBzZXJ2ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGll
bnQgYW5kIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0aW9uU3RhdGUuRklSU1RGTElHSFQ6Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyLnBhY2tl
dF90eXBlID09IFBBQ0tFVF9UWVBFX0lOSVRJQUwKKyAgICAgICAgICAgICAgICApLCAiZmlyc3Qg
cGFja2V0IG11c3QgYmUgSU5JVElBTCIKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXR3b3JrX3Bh
dGhzID0gW25ldHdvcmtfcGF0aF0KKyAgICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gUXVp
Y1Byb3RvY29sVmVyc2lvbihoZWFkZXIudmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9p
bml0aWFsaXplKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQpCisKKyAgICAgICAgICAgICMgZGV0ZXJt
aW5lIGNyeXB0byBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBlcG9jaCA9IGdldF9lcG9j
aChoZWFkZXIucGFja2V0X3R5cGUpCisgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9z
W2Vwb2NoXQorICAgICAgICAgICAgaWYgZXBvY2ggPT0gdGxzLkVwb2NoLlpFUk9fUlRUOgorICAg
ICAgICAgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzcGFjZSA9IHNlbGYuX3NwYWNlc1tlcG9j
aF0KKworICAgICAgICAgICAgIyBkZWNyeXB0IHBhY2tldAorICAgICAgICAgICAgZW5jcnlwdGVk
X29mZiA9IGJ1Zi50ZWxsKCkgLSBzdGFydF9vZmYKKyAgICAgICAgICAgIGVuZF9vZmYgPSBidWYu
dGVsbCgpICsgaGVhZGVyLnJlc3RfbGVuZ3RoCisgICAgICAgICAgICBidWYuc2VlayhlbmRfb2Zm
KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFp
bl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0gY3J5cHRvLmRlY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgICAgICAgICBkYXRhW3N0YXJ0X29mZjplbmRfb2ZmXSwgZW5jcnlwdGVkX29mZiwgc3Bh
Y2UuZXhwZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGV4Y2VwdCBLZXlVbmF2YWlsYWJsZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoZXhjKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2df
ZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJvcHBlZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJrZXlfdW5hdmFpbGFibGUifSwKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBl
eGNlcHQgQ3J5cHRvRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZyhleGMpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGE9eyJ0cmlnZ2VyIjogInBheWxvYWRfZGVjcnlwdF9lcnJvciJ9LAorICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBj
aGVjayByZXNlcnZlZCBiaXRzCisgICAgICAgICAgICBpZiBoZWFkZXIuaXNfbG9uZ19oZWFkZXI6
CisgICAgICAgICAgICAgICAgcmVzZXJ2ZWRfbWFzayA9IDB4MEMKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgcmVzZXJ2ZWRfbWFzayA9IDB4MTgKKyAgICAgICAgICAgIGlmIHBs
YWluX2hlYWRlclswXSAmIHJlc2VydmVkX21hc2s6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9z
ZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09M
X1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJSZXNlcnZlZCBiaXRzIG11c3QgYmUgemVybyIs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAg
ICAjIHJhaXNlIGV4cGVjdGVkIHBhY2tldCBudW1iZXIKKyAgICAgICAgICAgIGlmIHBhY2tldF9u
dW1iZXIgPiBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVyOgorICAgICAgICAgICAgICAgIHNw
YWNlLmV4cGVjdGVkX3BhY2tldF9udW1iZXIgPSBwYWNrZXRfbnVtYmVyICsgMQorCisgICAgICAg
ICAgICAjIGxvZyBwYWNrZXQKKyAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogT3B0aW9u
YWxbTGlzdFtEaWN0XV0gPSBOb25lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXMgPSBbXQorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAg
ICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJw
YWNrZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJwYWNrZXRfdHlwZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLnBhY2tldF90eXBl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZQorICAgICAg
ICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0
X251bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF9zaXplIjogZW5k
X29mZiAtIHN0YXJ0X29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1
bXBfY2lkKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBxdWljX2xvZ2dl
cl9mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIGRpc2NhcmQgaW5pdGlhbCBrZXlzIGFuZCBwYWNrZXQgc3BhY2UKKyAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQgYW5kIGVwb2NoID09IHRscy5FcG9jaC5IQU5E
U0hBS0U6CisgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5J
VElBTCkKKworICAgICAgICAgICAgIyB1cGRhdGUgc3RhdGUKKyAgICAgICAgICAgIGlmIHNlbGYu
X3BlZXJfY2lkX3NlcSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0g
aGVhZGVyLnNvdXJjZV9jaWQKKyAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSAw
CisKKyAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0aW9uU3RhdGUuRklS
U1RGTElHSFQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9u
U3RhdGUuQ09OTkVDVEVEKQorCisgICAgICAgICAgICAjIHVwZGF0ZSBzcGluIGJpdAorICAgICAg
ICAgICAgaWYgbm90IGhlYWRlci5pc19sb25nX2hlYWRlciBhbmQgcGFja2V0X251bWJlciA+IHNl
bGYuX3NwaW5faGlnaGVzdF9wbjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdCA9IGdldF9zcGlu
X2JpdChwbGFpbl9oZWFkZXJbMF0pCisgICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfY2xpZW50
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IG5vdCBzcGluX2JpdAorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NwaW5fYml0ID0g
c3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGluX2hpZ2hlc3RfcG4gPSBwYWNrZXRf
bnVtYmVyCisKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAg
ICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9ImNvbm5lY3Rpdml0eSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudD0ic3Bpbl9iaXRfdXBkYXRlZCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPXsic3RhdGUiOiBzZWxmLl9zcGluX2JpdH0sCisgICAgICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgcGF5bG9hZAorICAgICAgICAgICAgY29udGV4
dCA9IFF1aWNSZWNlaXZlQ29udGV4dCgKKyAgICAgICAgICAgICAgICBlcG9jaD1lcG9jaCwKKyAg
ICAgICAgICAgICAgICBob3N0X2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAgICAgICAg
ICAgICAgIG5ldHdvcmtfcGF0aD1uZXR3b3JrX3BhdGgsCisgICAgICAgICAgICAgICAgcXVpY19s
b2dnZXJfZnJhbWVzPXF1aWNfbG9nZ2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICB0aW1lPW5v
dywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nLCBpc19wcm9iaW5nID0gc2VsZi5fcGF5bG9hZF9yZWNlaXZlZCgKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgcGxhaW5fcGF5bG9hZAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIGV4Y2VwdCBRdWljQ29ubmVjdGlvbkVycm9yIGFzIGV4YzoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZyhleGMpCisgICAgICAgICAgICAgICAgc2VsZi5j
bG9zZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1leGMuZXJyb3JfY29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1leGMuZnJhbWVfdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgcmVhc29uX3BocmFzZT1leGMucmVhc29uX3BocmFzZSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTIG9yIHNlbGYuX2Ns
b3NlX3BlbmRpbmc6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdXBk
YXRlIGlkbGUgdGltZW91dAorICAgICAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cgKyBzZWxm
Ll9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorCisgICAgICAgICAgICAjIGhhbmRsZSBtaWdy
YXRpb24KKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi5faXNfY2xp
ZW50CisgICAgICAgICAgICAgICAgYW5kIGNvbnRleHQuaG9zdF9jaWQgIT0gc2VsZi5ob3N0X2Np
ZAorICAgICAgICAgICAgICAgIGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guT05FX1JUVAorICAgICAg
ICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAg
ICAgICAgICAgICJQZWVyIHN3aXRjaGluZyB0byBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAg
ICAgICAgIGR1bXBfY2lkKGNvbnRleHQuaG9zdF9jaWQpLAorICAgICAgICAgICAgICAgICAgICBk
ZXN0aW5hdGlvbl9jaWRfc2VxLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBz
ZWxmLmhvc3RfY2lkID0gY29udGV4dC5ob3N0X2NpZAorICAgICAgICAgICAgICAgIHNlbGYuY2hh
bmdlX2Nvbm5lY3Rpb25faWQoKQorCisgICAgICAgICAgICAjIHVwZGF0ZSBuZXR3b3JrIHBhdGgK
KyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRhdGVkIGFuZCBlcG9jaCA9
PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygKKyAgICAgICAgICAgICAgICAgICAgIk5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0ZWQgYnkgaGFu
ZHNoYWtlIiwgbmV0d29ya19wYXRoLmFkZHIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgbmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRydWUKKyAgICAgICAgICAgIG5ldHdv
cmtfcGF0aC5ieXRlc19yZWNlaXZlZCArPSBlbmRfb2ZmIC0gc3RhcnRfb2ZmCisgICAgICAgICAg
ICBpZiBuZXR3b3JrX3BhdGggbm90IGluIHNlbGYuX25ldHdvcmtfcGF0aHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fbmV0d29ya19wYXRocy5hcHBlbmQobmV0d29ya19wYXRoKQorICAgICAgICAg
ICAgaWR4ID0gc2VsZi5fbmV0d29ya19wYXRocy5pbmRleChuZXR3b3JrX3BhdGgpCisgICAgICAg
ICAgICBpZiBpZHggYW5kIG5vdCBpc19wcm9iaW5nIGFuZCBwYWNrZXRfbnVtYmVyID4gc3BhY2Uu
bGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCJOZXR3b3JrIHBhdGggJXMgcHJvbW90ZWQiLCBuZXR3b3JrX3BhdGguYWRkcikKKyAgICAg
ICAgICAgICAgICBzZWxmLl9uZXR3b3JrX3BhdGhzLnBvcChpZHgpCisgICAgICAgICAgICAgICAg
c2VsZi5fbmV0d29ya19wYXRocy5pbnNlcnQoMCwgbmV0d29ya19wYXRoKQorCisgICAgICAgICAg
ICAjIHJlY29yZCBwYWNrZXQgYXMgcmVjZWl2ZWQKKyAgICAgICAgICAgIGlmIG5vdCBzcGFjZS5k
aXNjYXJkZWQ6CisgICAgICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdl
c3RfcmVjZWl2ZWRfcGFja2V0OgorICAgICAgICAgICAgICAgICAgICBzcGFjZS5sYXJnZXN0X3Jl
Y2VpdmVkX3BhY2tldCA9IHBhY2tldF9udW1iZXIKKyAgICAgICAgICAgICAgICAgICAgc3BhY2Uu
bGFyZ2VzdF9yZWNlaXZlZF90aW1lID0gbm93CisgICAgICAgICAgICAgICAgc3BhY2UuYWNrX3F1
ZXVlLmFkZChwYWNrZXRfbnVtYmVyKQorICAgICAgICAgICAgICAgIGlmIGlzX2Fja19lbGljaXRp
bmcgYW5kIHNwYWNlLmFja19hdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzcGFjZS5h
Y2tfYXQgPSBub3cgKyBzZWxmLl9hY2tfZGVsYXkKKworICAgIGRlZiByZXF1ZXN0X2tleV91cGRh
dGUoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFJlcXVlc3QgYW4gdXBkYXRl
IG9mIHRoZSBlbmNyeXB0aW9uIGtleXMuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2Vs
Zi5faGFuZHNoYWtlX2NvbXBsZXRlLCAiY2Fubm90IGNoYW5nZSBrZXkgYmVmb3JlIGhhbmRzaGFr
ZSBjb21wbGV0ZXMiCisgICAgICAgIHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdLnVw
ZGF0ZV9rZXkoKQorCisgICAgZGVmIHNlbmRfcGluZyhzZWxmLCB1aWQ6IGludCkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBQSU5HIGZyYW1lIHRvIHRoZSBwZWVyLgorCisg
ICAgICAgIDpwYXJhbSB1aWQ6IEEgdW5pcXVlIElEIGZvciB0aGlzIFBJTkcuCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLl9waW5nX3BlbmRpbmcuYXBwZW5kKHVpZCkKKworICAgIGRlZiBzZW5k
X2RhdGFncmFtX2ZyYW1lKHNlbGYsIGRhdGE6IGJ5dGVzKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgU2VuZCBhIERBVEFHUkFNIGZyYW1lLgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBU
aGUgZGF0YSB0byBiZSBzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGF0YWdyYW1z
X3BlbmRpbmcuYXBwZW5kKGRhdGEpCisKKyAgICBkZWYgc2VuZF9zdHJlYW1fZGF0YSgKKyAgICAg
ICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sID0g
RmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGRhdGEgb24g
dGhlIHNwZWNpZmljIHN0cmVhbS4KKworICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3Ry
ZWFtJ3MgSUQuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBiZSBzZW50LgorICAg
ICAgICA6cGFyYW0gZW5kX3N0cmVhbTogSWYgc2V0IHRvIGBUcnVlYCwgdGhlIEZJTiBiaXQgd2ls
bCBiZSBzZXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZChzdHJlYW1faWQpICE9IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCBub3QgaW4gc2VsZi5fc3RyZWFtczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1pbml0aWF0ZWQgc3RyZWFtIikK
KyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDYW5u
b3Qgc2VuZCBkYXRhIG9uIHBlZXItaW5pdGlhdGVkIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSIKKyAg
ICAgICAgICAgICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RyZWFtID0gc2Vs
Zi5fc3RyZWFtc1tzdHJlYW1faWRdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAg
ICAgIHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPXN0cmVhbV9pZCkKKyAgICAgICAgICAg
IHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXQorICAgICAgICBzdHJlYW0ud3JpdGUo
ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtKQorCisgICAgIyBQcml2YXRlCisKKyAgICBkZWYg
X2FscG5faGFuZGxlcihzZWxmLCBhbHBuX3Byb3RvY29sOiBzdHIpIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBDYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMgZW5naW5l
IHdoZW4gQUxQTiBuZWdvdGlhdGlvbiBjb21wbGV0ZXMuCisgICAgICAgICIiIgorICAgICAgICBz
ZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQoYWxwbl9wcm90b2Nv
bD1hbHBuX3Byb3RvY29sKSkKKworICAgIGRlZiBfYXNzZXJ0X3N0cmVhbV9jYW5fcmVjZWl2ZShz
ZWxmLCBmcmFtZV90eXBlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgQ2hlY2sgdGhlIHNwZWNpZmllZCBzdHJlYW0gY2FuIHJlY2VpdmUgZGF0YSBv
ciByYWlzZXMgYSBRdWljQ29ubmVjdGlvbkVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
bm90IHNlbGYuX3N0cmVhbV9jYW5fcmVjZWl2ZShzdHJlYW1faWQpOgorICAgICAgICAgICAgcmFp
c2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNF
cnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJTdHJlYW0gaXMgc2Vu
ZC1vbmx5IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfYXNzZXJ0X3N0cmVhbV9jYW5fc2Vu
ZChzZWxmLCBmcmFtZV90eXBlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgQ2hlY2sgdGhlIHNwZWNpZmllZCBzdHJlYW0gY2FuIHNlbmQgZGF0YSBv
ciByYWlzZXMgYSBRdWljQ29ubmVjdGlvbkVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
bm90IHNlbGYuX3N0cmVhbV9jYW5fc2VuZChzdHJlYW1faWQpOgorICAgICAgICAgICAgcmFpc2Ug
UXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJv
ckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJh
bWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJTdHJlYW0gaXMgcmVjZWl2
ZS1vbmx5IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfY2xvc2VfYmVnaW4oc2VsZiwgaXNf
aW5pdGlhdG9yOiBib29sLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgQmVnaW4gdGhlIGNsb3NlIHByb2NlZHVyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYu
X2Nsb3NlX2F0ID0gbm93ICsgMyAqIHNlbGYuX2xvc3MuZ2V0X3Byb2JlX3RpbWVvdXQoKQorICAg
ICAgICBpZiBpc19pbml0aWF0b3I6CisgICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoUXVpY0Nv
bm5lY3Rpb25TdGF0ZS5DTE9TSU5HKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuRFJBSU5JTkcpCisKKyAgICBkZWYgX2Nsb3Nl
X2VuZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgRW5kIHRoZSBjbG9zZSBw
cm9jZWR1cmUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IE5vbmUKKyAg
ICAgICAgZm9yIGVwb2NoIGluIHNlbGYuX3NwYWNlcy5rZXlzKCk6CisgICAgICAgICAgICBzZWxm
Ll9kaXNjYXJkX2Vwb2NoKGVwb2NoKQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKHNlbGYu
X2Nsb3NlX2V2ZW50KQorICAgICAgICBzZWxmLl9zZXRfc3RhdGUoUXVpY0Nvbm5lY3Rpb25TdGF0
ZS5URVJNSU5BVEVEKQorCisgICAgICAgICMgc2lnbmFsIGxvZyBlbmQKKyAgICAgICAgaWYgc2Vs
Zi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jb25maWd1cmF0
aW9uLnF1aWNfbG9nZ2VyLmVuZF90cmFjZShzZWxmLl9xdWljX2xvZ2dlcikKKyAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyID0gTm9uZQorCisgICAgZGVmIF9jb25uZWN0KHNlbGYsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTdGFydCB0aGUgY2xpZW50IGhh
bmRzaGFrZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9pc19jbGllbnQKKwor
ICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIHNlbGYuX2NvbmZpZ3VyYXRpb24uaWRsZV90
aW1lb3V0CisgICAgICAgIHNlbGYuX2luaXRpYWxpemUoc2VsZi5fcGVlcl9jaWQpCisKKyAgICAg
ICAgc2VsZi50bHMuaGFuZGxlX21lc3NhZ2UoYiIiLCBzZWxmLl9jcnlwdG9fYnVmZmVycykKKyAg
ICAgICAgc2VsZi5fcHVzaF9jcnlwdG9fZGF0YSgpCisKKyAgICBkZWYgX2NyZWF0ZV9zdHJlYW0o
c2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgorICAgICAg
ICBDcmVhdGUgYSBRVUlDIHN0cmVhbSBpbiBvcmRlciB0byBzZW5kIGRhdGEgdG8gdGhlIHBlZXIu
CisgICAgICAgICIiIgorICAgICAgICAjIGRldGVybWluZSBsaW1pdHMKKyAgICAgICAgaWYgc3Ry
ZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwgPSAwCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgIG1heF9zdHJlYW1zID0g
c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2Vk
ID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
bWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlf
bG9jYWwKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVf
bWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlCisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNl
bGYuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpCisgICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQg
PSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfYmlkaQorCisgICAgICAgICMgY3JlYXRlIHN0cmVhbQor
ICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVhbV9pZF0gPSBRdWljU3RyZWFtKAor
ICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIG1heF9zdHJlYW1f
ZGF0YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlPW1heF9zdHJlYW1fZGF0YV9yZW1vdGUsCisgICAgICAgICkKKworICAgICAg
ICAjIG1hcmsgc3RyZWFtIGFzIGJsb2NrZWQgaWYgbmVlZGVkCisgICAgICAgIGlmIHN0cmVhbV9p
ZCAvLyA0ID49IG1heF9zdHJlYW1zOgorICAgICAgICAgICAgc3RyZWFtLmlzX2Jsb2NrZWQgPSBU
cnVlCisgICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQuYXBwZW5kKHN0cmVhbSkKKyAgICAgICAg
ICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gVHJ1ZQorCisgICAgICAgIHJldHVy
biBzdHJlYW0KKworICAgIGRlZiBfZGlzY2FyZF9lcG9jaChzZWxmLCBlcG9jaDogdGxzLkVwb2No
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkRpc2NhcmRpbmcgZXBvY2gg
JXMiLCBlcG9jaCkKKyAgICAgICAgc2VsZi5fY3J5cHRvc1tlcG9jaF0udGVhcmRvd24oKQorICAg
ICAgICBzZWxmLl9sb3NzLmRpc2NhcmRfc3BhY2Uoc2VsZi5fc3BhY2VzW2Vwb2NoXSkKKyAgICAg
ICAgc2VsZi5fc3BhY2VzW2Vwb2NoXS5kaXNjYXJkZWQgPSBUcnVlCisKKyAgICBkZWYgX2ZpbmRf
bmV0d29ya19wYXRoKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBRdWljTmV0d29ya1Bh
dGg6CisgICAgICAgICMgY2hlY2sgZXhpc3RpbmcgbmV0d29yayBwYXRocworICAgICAgICBmb3Ig
aWR4LCBuZXR3b3JrX3BhdGggaW4gZW51bWVyYXRlKHNlbGYuX25ldHdvcmtfcGF0aHMpOgorICAg
ICAgICAgICAgaWYgbmV0d29ya19wYXRoLmFkZHIgPT0gYWRkcjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV0d29ya19wYXRoCisKKyAgICAgICAgIyBuZXcgbmV0d29yayBwYXRoCisgICAgICAg
IG5ldHdvcmtfcGF0aCA9IFF1aWNOZXR3b3JrUGF0aChhZGRyKQorICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoIk5ldHdvcmsgcGF0aCAlcyBkaXNjb3ZlcmVkIiwgbmV0d29ya19wYXRoLmFkZHIp
CisgICAgICAgIHJldHVybiBuZXR3b3JrX3BhdGgKKworICAgIGRlZiBfZ2V0X29yX2NyZWF0ZV9z
dHJlYW0oc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gUXVpY1N0cmVh
bToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBvciBjcmVhdGUgYSBzdHJlYW0gaW4gcmVzcG9u
c2UgdG8gYSByZWNlaXZlZCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbSA9IHNl
bGYuX3N0cmVhbXMuZ2V0KHN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAgaWYgc3RyZWFtIGlzIE5v
bmU6CisgICAgICAgICAgICAjIGNoZWNrIGluaXRpYXRvcgorICAgICAgICAgICAgaWYgc3RyZWFt
X2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSA9PSBzZWxmLl9pc19jbGllbnQ6CisgICAg
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKKyAgICAgICAg
ICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJXcm9uZyBzdHJlYW0gaW5pdGlhdG9yIiwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIGxpbWl0cworICAgICAgICAgICAgaWYgc3RyZWFt
X2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX2xvY2FsID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaQorICAgICAgICAg
ICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSAwCisgICAgICAgICAgICAgICAgbWF4X3N0
cmVhbXMgPSBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtc191bmkKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gc2VsZi5fbG9jYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlCisgICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3Jl
bW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbAorICAgICAgICAg
ICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfYmlkaQorCisgICAg
ICAgICAgICAjIGNoZWNrIG1heCBzdHJlYW1zCisgICAgICAgICAgICBpZiBzdHJlYW1faWQgLy8g
NCA+PSBtYXhfc3RyZWFtczoKKyAgICAgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVy
cm9yKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuU1RSRUFN
X0xJTUlUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUs
CisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IlRvbyBtYW55IHN0cmVhbXMgb3Bl
biIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiU3RyZWFtICVkIGNyZWF0ZWQgYnkgcGVlciIg
JSBzdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVhbV9p
ZF0gPSBRdWljU3RyZWFtKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsPW1heF9zdHJlYW1fZGF0YV9sb2Nh
bCwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlPW1heF9zdHJlYW1fZGF0
YV9yZW1vdGUsCisgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBzdHJlYW0KKworICAgIGRl
ZiBfaGFuZGxlX3Nlc3Npb25fdGlja2V0KHNlbGYsIHNlc3Npb25fdGlja2V0OiB0bHMuU2Vzc2lv
blRpY2tldCkgLT4gTm9uZToKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgc2Vzc2lvbl90aWNr
ZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHNlc3Np
b25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgIT0gTUFYX0VBUkxZX0RBVEEKKyAgICAgICAg
KToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAg
ICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAg
ICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAg
IHJlYXNvbl9waHJhc2U9IkludmFsaWQgbWF4X2Vhcmx5X2RhdGEgdmFsdWUgJXMiCisgICAgICAg
ICAgICAgICAgJSBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplLAorICAgICAgICAg
ICAgKQorICAgICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyKHNlc3Npb25fdGlja2V0
KQorCisgICAgZGVmIF9pbml0aWFsaXplKHNlbGYsIHBlZXJfY2lkOiBieXRlcykgLT4gTm9uZToK
KyAgICAgICAgIyBUTFMKKyAgICAgICAgc2VsZi50bHMgPSB0bHMuQ29udGV4dCgKKyAgICAgICAg
ICAgIGFscG5fcHJvdG9jb2xzPXNlbGYuX2NvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHMsCisg
ICAgICAgICAgICBjYWRhdGE9c2VsZi5fY29uZmlndXJhdGlvbi5jYWRhdGEsCisgICAgICAgICAg
ICBjYWZpbGU9c2VsZi5fY29uZmlndXJhdGlvbi5jYWZpbGUsCisgICAgICAgICAgICBjYXBhdGg9
c2VsZi5fY29uZmlndXJhdGlvbi5jYXBhdGgsCisgICAgICAgICAgICBpc19jbGllbnQ9c2VsZi5f
aXNfY2xpZW50LAorICAgICAgICAgICAgbG9nZ2VyPXNlbGYuX2xvZ2dlciwKKyAgICAgICAgICAg
IG1heF9lYXJseV9kYXRhPU5vbmUgaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTUFYX0VBUkxZX0RB
VEEsCisgICAgICAgICAgICBzZXJ2ZXJfbmFtZT1zZWxmLl9jb25maWd1cmF0aW9uLnNlcnZlcl9u
YW1lLAorICAgICAgICAgICAgdmVyaWZ5X21vZGU9c2VsZi5fY29uZmlndXJhdGlvbi52ZXJpZnlf
bW9kZSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZSA9IHNlbGYuX2Nv
bmZpZ3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VsZi50bHMuY2VydGlmaWNhdGVfY2hh
aW4gPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRpZmljYXRlX2NoYWluCisgICAgICAgIHNlbGYu
dGxzLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5ID0gc2VsZi5fY29uZmlndXJhdGlvbi5wcml2YXRl
X2tleQorICAgICAgICBzZWxmLnRscy5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAg
ICAgICgKKyAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9Q
QVJBTUVURVJTLAorICAgICAgICAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFy
YW1ldGVycygpLAorICAgICAgICAgICAgKQorICAgICAgICBdCisKKyAgICAgICAgIyBUTFMgc2Vz
c2lvbiByZXN1bXB0aW9uCisgICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJh
dGlvbi5zZXNzaW9uX3RpY2tldAorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLl9pc19j
bGllbnQKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQorICAgICAg
ICAgICAgYW5kIHNlc3Npb25fdGlja2V0LmlzX3ZhbGlkCisgICAgICAgICAgICBhbmQgc2Vzc2lv
bl90aWNrZXQuc2VydmVyX25hbWUgPT0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZQor
ICAgICAgICApOgorICAgICAgICAgICAgc2VsZi50bHMuc2Vzc2lvbl90aWNrZXQgPSBzZWxmLl9j
b25maWd1cmF0aW9uLnNlc3Npb25fdGlja2V0CisKKyAgICAgICAgICAgICMgcGFyc2Ugc2F2ZWQg
UVVJQyB0cmFuc3BvcnQgcGFyYW1ldGVycyAtIGZvciAwLVJUVAorICAgICAgICAgICAgaWYgc2Vz
c2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSA9PSBNQVhfRUFSTFlfREFUQToKKyAgICAg
ICAgICAgICAgICBmb3IgZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlc3Npb25fdGlja2V0Lm90aGVy
X2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRl
bnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJzZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHRfZGF0YSwgZnJvbV9zZXNzaW9uX3RpY2tldD1UcnVlCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAg
ICMgVExTIGNhbGxiYWNrcworICAgICAgICBzZWxmLnRscy5hbHBuX2NiID0gc2VsZi5fYWxwbl9o
YW5kbGVyCisgICAgICAgIGlmIHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBzZWxmLnRscy5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZWxmLl9z
ZXNzaW9uX3RpY2tldF9mZXRjaGVyCisgICAgICAgIGlmIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hh
bmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnRscy5uZXdfc2Vzc2lvbl90aWNr
ZXRfY2IgPSBzZWxmLl9oYW5kbGVfc2Vzc2lvbl90aWNrZXQKKyAgICAgICAgc2VsZi50bHMudXBk
YXRlX3RyYWZmaWNfa2V5X2NiID0gc2VsZi5fdXBkYXRlX3RyYWZmaWNfa2V5CisKKyAgICAgICAg
IyBwYWNrZXQgc3BhY2VzCisgICAgICAgIHNlbGYuX2NyeXB0b3MgPSB7CisgICAgICAgICAgICB0
bHMuRXBvY2guSU5JVElBTDogQ3J5cHRvUGFpcigpLAorICAgICAgICAgICAgdGxzLkVwb2NoLlpF
Uk9fUlRUOiBDcnlwdG9QYWlyKCksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBD
cnlwdG9QYWlyKCksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogQ3J5cHRvUGFpcigp
LAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0b19idWZmZXJzID0geworICAgICAgICAg
ICAgdGxzLkVwb2NoLklOSVRJQUw6IEJ1ZmZlcihjYXBhY2l0eT00MDk2KSwKKyAgICAgICAgICAg
IHRscy5FcG9jaC5IQU5EU0hBS0U6IEJ1ZmZlcihjYXBhY2l0eT00MDk2KSwKKyAgICAgICAgICAg
IHRscy5FcG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIH0KKyAg
ICAgICAgc2VsZi5fY3J5cHRvX3N0cmVhbXMgPSB7CisgICAgICAgICAgICB0bHMuRXBvY2guSU5J
VElBTDogUXVpY1N0cmVhbSgpLAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVp
Y1N0cmVhbSgpLAorICAgICAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IFF1aWNTdHJlYW0oKSwK
KyAgICAgICAgfQorICAgICAgICBzZWxmLl9zcGFjZXMgPSB7CisgICAgICAgICAgICB0bHMuRXBv
Y2guSU5JVElBTDogUXVpY1BhY2tldFNwYWNlKCksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFO
RFNIQUtFOiBRdWljUGFja2V0U3BhY2UoKSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5PTkVfUlRU
OiBRdWljUGFja2V0U3BhY2UoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYuX2NyeXB0b3Nb
dGxzLkVwb2NoLklOSVRJQUxdLnNldHVwX2luaXRpYWwoCisgICAgICAgICAgICBjaWQ9cGVlcl9j
aWQsIGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsIHZlcnNpb249c2VsZi5fdmVyc2lvbgorICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5zcGFjZXMgPSBsaXN0KHNlbGYuX3NwYWNlcy52
YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9IDAKKworICAgIGRlZiBfaGFu
ZGxlX2Fja19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgSGFuZGxlIGFuIEFDSyBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFj
a19yYW5nZXNldCwgYWNrX2RlbGF5X2VuY29kZWQgPSBwdWxsX2Fja19mcmFtZShidWYpCisgICAg
ICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5BQ0tfRUNOOgorICAgICAgICAgICAg
YnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorICAg
ICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBhY2tfZGVsYXkgPSAoYWNrX2Rl
bGF5X2VuY29kZWQgPDwgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCkgLyAxMDAwMDAw
CisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Fja19mcmFtZShhY2tf
cmFuZ2VzZXQsIGFja19kZWxheSkKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLl9sb3Nz
Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlPXNlbGYuX3NwYWNlc1tjb250ZXh0
LmVwb2NoXSwKKyAgICAgICAgICAgIGFja19yYW5nZXNldD1hY2tfcmFuZ2VzZXQsCisgICAgICAg
ICAgICBhY2tfZGVsYXk9YWNrX2RlbGF5LAorICAgICAgICAgICAgbm93PWNvbnRleHQudGltZSwK
KyAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAg
ICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQs
IGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxl
IGEgQ09OTkVDVElPTl9DTE9TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGVycm9yX2Nv
ZGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0Zy
YW1lVHlwZS5UUkFOU1BPUlRfQ0xPU0U6CisgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IE5v
bmUKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9IGJ1Zi5wdWxsX2J5dGVzKHJlYXNvbl9s
ZW5ndGgpLmRlY29kZSgidXRmOCIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6
CisgICAgICAgICAgICByZWFzb25fcGhyYXNlID0gIiIKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9cmVhc29u
X3BocmFzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAiQ29ubmVjdGlvbiBjbG9zZSBjb2RlIDB4JVgs
IHJlYXNvbiAlcyIsIGVycm9yX2NvZGUsIHJlYXNvbl9waHJhc2UKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCgKKyAgICAg
ICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwgZnJhbWVfdHlwZT1mcmFtZV90eXBlLCByZWFz
b25fcGhyYXNlPXJlYXNvbl9waHJhc2UKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9jbG9zZV9i
ZWdpbihpc19pbml0aWF0b3I9RmFsc2UsIG5vdz1jb250ZXh0LnRpbWUpCisKKyAgICBkZWYgX2hh
bmRsZV9jcnlwdG9fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29u
dGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENSWVBUTyBmcmFtZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIG9mZnNldCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgbGVuZ3RoID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBVSU5UX1ZBUl9NQVg6
CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAg
IGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAg
ICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3Bo
cmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiLAorICAgICAgICAg
ICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9b2Zmc2V0LCBkYXRh
PWJ1Zi5wdWxsX2J5dGVzKGxlbmd0aCkpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAg
aWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1
aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIuZW5jb2RlX2NyeXB0b19mcmFtZShmcmFtZSkKKyAgICAgICAgICAgICkKKworICAgICAgICBz
dHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tjb250ZXh0LmVwb2NoXQorICAgICAgICBldmVu
dCA9IHN0cmVhbS5hZGRfZnJhbWUoZnJhbWUpCisgICAgICAgIGlmIGV2ZW50IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgIyBwYXNzIGRhdGEgdG8gVExTIGxheWVyCisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgc2VsZi50bHMuaGFuZGxlX21lc3NhZ2UoZXZlbnQuZGF0YSwgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgICAgICAgICAgc2VsZi5fcHVzaF9jcnlwdG9fZGF0
YSgpCisgICAgICAgICAgICBleGNlcHQgdGxzLkFsZXJ0IGFzIGV4YzoKKyAgICAgICAgICAgICAg
ICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9j
b2RlPVF1aWNFcnJvckNvZGUuQ1JZUFRPX0VSUk9SICsgaW50KGV4Yy5kZXNjcmlwdGlvbiksCisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT1zdHIoZXhjKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgICMgcGFyc2UgdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgIGlmICgKKyAg
ICAgICAgICAgICAgICBub3Qgc2VsZi5fcGFyYW1ldGVyc19yZWNlaXZlZAorICAgICAgICAgICAg
ICAgIGFuZCBzZWxmLnRscy5yZWNlaXZlZF9leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIGZvciBleHRfdHlwZSwgZXh0X2RhdGEgaW4gc2VsZi50
bHMucmVjZWl2ZWRfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZXh0X3R5cGUg
PT0gdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKGV4dF9kYXRh
KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyYW1ldGVyc19yZWNlaXZlZCA9IFRy
dWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYXNzZXJ0
ICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyYW1ldGVyc19yZWNlaXZlZAorICAgICAg
ICAgICAgICAgICksICJObyBRVUlDIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIHJlY2VpdmVkIgorCisg
ICAgICAgICAgICAjIHVwZGF0ZSBjdXJyZW50IGVwb2NoCisgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5faGFuZHNoYWtlX2NvbXBsZXRlIGFuZCBzZWxmLnRscy5zdGF0ZSBpbiBbCisgICAgICAgICAg
ICAgICAgdGxzLlN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFLRSwKKyAgICAgICAgICAgICAgICB0
bHMuU3RhdGUuU0VSVkVSX1BPU1RfSEFORFNIQUtFLAorICAgICAgICAgICAgXToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29tcGxldGUgPSBUcnVlCisKKyAgICAgICAgICAgICAg
ICAjIGZvciBzZXJ2ZXJzLCB0aGUgaGFuZHNoYWtlIGlzIG5vdyBjb25maXJtZWQKKyAgICAgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9kaXNjYXJkX2Vwb2NoKHRscy5FcG9jaC5IQU5EU0hBS0UpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb3NzLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNl
bGYuX3JlcGxlbmlzaF9jb25uZWN0aW9uX2lkcygpCisgICAgICAgICAgICAgICAgc2VsZi5fZXZl
bnRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscG5fcHJvdG9jb2w9c2VsZi50bHMuYWxwbl9u
ZWdvdGlhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgZWFybHlfZGF0YV9hY2NlcHRlZD1z
ZWxmLnRscy5lYXJseV9kYXRhX2FjY2VwdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vz
c2lvbl9yZXN1bWVkPXNlbGYudGxzLnNlc3Npb25fcmVzdW1lZCwKKyAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl91bmJsb2NrX3N0
cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCisgICAgICAgICAgICAgICAgc2VsZi5fdW5i
bG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICJBTFBOIG5lZ290aWF0ZWQgcHJv
dG9jb2wgJXMiLCBzZWxmLnRscy5hbHBuX25lZ290aWF0ZWQKKyAgICAgICAgICAgICAgICApCisK
KyAgICBkZWYgX2hhbmRsZV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERBVEFfQkxPQ0tFRCBm
cmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWludF92YXIoKQor
CisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9kYXRhX2Jsb2NrZWRfZnJh
bWUobGltaXQ9bGltaXQpCisgICAgICAgICAgICApCisKKyAgICBkZWYgX2hhbmRsZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFt
ZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgSGFuZGxlIGEgREFUQUdSQU0gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkRB
VEFHUkFNX1dJVEhfTEVOR1RIOgorICAgICAgICAgICAgbGVuZ3RoID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0g
c3RhcnQKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGxlbmd0aCkKKworICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0
aCkKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGZyYW1lIGlzIGFsbG93ZWQKKyAg
ICAgICAgaWYgKAorICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5tYXhfZGF0YWdyYW1f
ZnJhbWVfc2l6ZSBpcyBOb25lCisgICAgICAgICAgICBvciBidWYudGVsbCgpIC0gc3RhcnQgPj0g
c2VsZi5fY29uZmlndXJhdGlvbi5tYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZQorICAgICAgICApOgor
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIiwKKyAgICAgICAgICAgICkKKworICAgICAgICBz
ZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQoZGF0YT1kYXRh
KSkKKworICAgIGRlZiBfaGFuZGxlX2hhbmRzaGFrZV9kb25lX2ZyYW1lKAorICAgICAgICBzZWxm
LCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZm
ZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBIQU5EU0hB
S0VfRE9ORSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFtZSgpCisgICAgICAgICAgICApCisKKyAgICAg
ICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2xpZW50cyBtdXN0IG5vdCBzZW5kIEhBTkRT
SEFLRV9ET05FIGZyYW1lcyIsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyDCoGZvciBjbGll
bnRzLCB0aGUgaGFuZHNoYWtlIGlzIG5vdyBjb25maXJtZWQKKyAgICAgICAgaWYgbm90IHNlbGYu
X2hhbmRzaGFrZV9jb25maXJtZWQ6CisgICAgICAgICAgICBzZWxmLl9kaXNjYXJkX2Vwb2NoKHRs
cy5FcG9jaC5IQU5EU0hBS0UpCisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVk
ID0gVHJ1ZQorCisgICAgZGVmIF9oYW5kbGVfbWF4X2RhdGFfZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9EQVRB
IGZyYW1lLgorCisgICAgICAgIFRoaXMgYWRqdXN0cyB0aGUgdG90YWwgYW1vdW50IG9mIHdlIGNh
biBzZW5kIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2RhdGEgPSBidWYu
cHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X21heF9kYXRhX2ZyYW1lKG1heGltdW09bWF4X2RhdGEpCisgICAgICAgICAgICApCisKKyAgICAg
ICAgaWYgbWF4X2RhdGEgPiBzZWxmLl9yZW1vdGVfbWF4X2RhdGE6CisgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoIlJlbW90ZSBtYXhfZGF0YSByYWlzZWQgdG8gJWQiLCBtYXhfZGF0YSkK
KyAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YSA9IG1heF9kYXRhCisKKyAgICBkZWYg
X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1
aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1fREFUQSBmcmFt
ZS4KKworICAgICAgICBUaGlzIGFkanVzdHMgdGhlIGFtb3VudCBvZiBkYXRhIHdlIGNhbiBzZW5k
IG9uIGEgc3BlY2lmaWMgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0g
YnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBtYXhfc3RyZWFtX2RhdGEgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19s
b2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1l
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX21heF9z
dHJlYW1fZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgbWF4aW11bT1tYXhfc3RyZWFt
X2RhdGEsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisgICAgICAgIHNlbGYuX2Fz
c2VydF9zdHJlYW1fY2FuX3NlbmQoZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgICAgIHN0
cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkK
KyAgICAgICAgaWYgbWF4X3N0cmVhbV9kYXRhID4gc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1v
dGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIlN0
cmVhbSAlZCByZW1vdGUgbWF4X3N0cmVhbV9kYXRhIHJhaXNlZCB0byAlZCIsCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gbWF4
X3N0cmVhbV9kYXRhCisKKyAgICBkZWYgX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAor
ICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGlu
dCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgYSBNQVhfU1RSRUFNU19CSURJIGZyYW1lLgorCisgICAgICAgIFRoaXMgcmFpc2VzIG51bWJl
ciBvZiBiaWRpcmVjdGlvbmFsIHN0cmVhbXMgd2UgY2FuIGluaXRpYXRlIHRvIHRoZSBwZWVyLgor
ICAgICAgICAiIiIKKyAgICAgICAgbWF4X3N0cmVhbXMgPSBidWYucHVsbF91aW50X3ZhcigpCisK
KyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX21heF9zdHJlYW1zX2ZyYW1l
KAorICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1GYWxzZSwgbWF4aW11bT1t
YXhfc3RyZWFtcworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBp
ZiBtYXhfc3RyZWFtcyA+IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpOgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X3N0cmVhbXNfYmlkaSByYWlzZWQgdG8g
JWQiLCBtYXhfc3RyZWFtcykKKyAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc19i
aWRpID0gbWF4X3N0cmVhbXMKKyAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191
bmlkaXJlY3Rpb25hbD1GYWxzZSkKKworICAgIGRlZiBfaGFuZGxlX21heF9zdHJlYW1zX3VuaV9m
cmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90
eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfVU5JIGZyYW1lLgorCisgICAgICAgIFRoaXMgcmFpc2Vz
IG51bWJlciBvZiB1bmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdlIGNhbiBpbml0aWF0ZSB0byB0aGUg
cGVlci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9zdHJlYW1zID0gYnVmLnB1bGxfdWludF92
YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFt
c19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSwgbWF4
aW11bT1tYXhfc3RyZWFtcworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg
ICAgICBpZiBtYXhfc3RyZWFtcyA+IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmk6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJlbW90ZSBtYXhfc3RyZWFtc191bmkgcmFpc2Vk
IHRvICVkIiwgbWF4X3N0cmVhbXMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVh
bXNfdW5pID0gbWF4X3N0cmVhbXMKKyAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhp
c191bmlkaXJlY3Rpb25hbD1UcnVlKQorCisgICAgZGVmIF9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25f
aWRfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJh
bWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisg
ICAgICAgIEhhbmRsZSBhIE5FV19DT05ORUNUSU9OX0lEIGZyYW1lLgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VxdWVuY2VfbnVtYmVyID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICByZXRp
cmVfcHJpb3JfdG8gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5w
dWxsX3VpbnQ4KCkKKyAgICAgICAgY29ubmVjdGlvbl9pZCA9IGJ1Zi5wdWxsX2J5dGVzKGxlbmd0
aCkKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisK
KyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQs
CisgICAgICAgICAgICAgICAgICAgIHJldGlyZV9wcmlvcl90bz1yZXRpcmVfcHJpb3JfdG8sCisg
ICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj1zZXF1ZW5jZV9udW1iZXIsCisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxlc3NfcmVzZXRfdG9r
ZW4sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3Bl
ZXJfY2lkX2F2YWlsYWJsZS5hcHBlbmQoCisgICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAor
ICAgICAgICAgICAgICAgIGNpZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgIHNlcXVl
bmNlX251bWJlcj1zZXF1ZW5jZV9udW1iZXIsCisgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jl
c2V0X3Rva2VuPXN0YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICkKKyAgICAgICAg
KQorCisgICAgZGVmIF9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBORVdfVE9LRU4gZnJh
bWUuCisgICAgICAgICIiIgorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisg
ICAgICAgIHRva2VuID0gYnVmLnB1bGxfYnl0ZXMobGVuZ3RoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9uZXdfdG9rZW5fZnJhbWUodG9rZW49dG9rZW4pCisgICAg
ICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1R
dWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2xpZW50cyBt
dXN0IG5vdCBzZW5kIE5FV19UT0tFTiBmcmFtZXMiLAorICAgICAgICAgICAgKQorCisgICAgZGVm
IF9oYW5kbGVfcGFkZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2Vp
dmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgor
ICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgUEFERElORyBmcmFtZS4KKyAgICAgICAgIiIi
CisgICAgICAgICMgY29uc3VtZSBwYWRkaW5nCisgICAgICAgIHBvcyA9IGJ1Zi50ZWxsKCkKKyAg
ICAgICAgZm9yIGJ5dGUgaW4gYnVmLmRhdGFfc2xpY2UocG9zLCBidWYuY2FwYWNpdHkpOgorICAg
ICAgICAgICAgaWYgYnl0ZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcG9z
ICs9IDEKKyAgICAgICAgYnVmLnNlZWsocG9zKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYWRk
aW5nX2ZyYW1lKCkpCisKKyAgICBkZWYgX2hhbmRsZV9wYXRoX2NoYWxsZW5nZV9mcmFtZSgKKyAg
ICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQs
IGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxl
IGEgUEFUSF9DSEFMTEVOR0UgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gYnVm
LnB1bGxfYnl0ZXMoOCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJf
ZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVf
cGF0aF9jaGFsbGVuZ2VfZnJhbWUoZGF0YT1kYXRhKQorICAgICAgICAgICAgKQorCisgICAgICAg
IGNvbnRleHQubmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgPSBkYXRhCisKKyAgICBkZWYg
X2hhbmRsZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWlj
UmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBQQVRIX1JFU1BPTlNFIGZyYW1lLgor
ICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1k
YXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGRhdGEgIT0gY29udGV4dC5uZXR3b3Jr
X3BhdGgubG9jYWxfY2hhbGxlbmdlOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xf
VklPTEFUSU9OLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJSZXNwb25zZSBkb2VzIG5vdCBtYXRjaCBjaGFsbGVu
Z2UiLAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAg
ICAgICAiTmV0d29yayBwYXRoICVzIHZhbGlkYXRlZCBieSBjaGFsbGVuZ2UiLCBjb250ZXh0Lm5l
dHdvcmtfcGF0aC5hZGRyCisgICAgICAgICkKKyAgICAgICAgY29udGV4dC5uZXR3b3JrX3BhdGgu
aXNfdmFsaWRhdGVkID0gVHJ1ZQorCisgICAgZGVmIF9oYW5kbGVfcGluZ19mcmFtZSgKKyAgICAg
ICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1
ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEg
UElORyBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWlj
X2xvZ2dlcl9mcmFtZXMuYXBwZW5kKHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9waW5nX2ZyYW1l
KCkpCisKKyAgICBkZWYgX2hhbmRsZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFJFU0VUX1NU
UkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3Vp
bnRfdmFyKCkKKyAgICAgICAgZXJyb3JfY29kZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgZmluYWxfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFt
ZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5lbmNvZGVfcmVzZXRfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUsIGZpbmFsX3NpemU9ZmluYWxfc2l6ZSwgc3RyZWFt
X2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAg
ICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVhbV9j
YW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oCisgICAgICAgICAgICAiU3RyZWFtICVkIHJlc2V0IGJ5IHBlZXIgKGVycm9yIGNvZGUg
JWQsIGZpbmFsIHNpemUgJWQpIiwKKyAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAg
IGVycm9yX2NvZGUsCisgICAgICAgICAgICBmaW5hbF9zaXplLAorICAgICAgICApCisgICAgICAg
ICMgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgZXZlbnRzLlN0
cmVhbVJlc2V0KGVycm9yX2NvZGU9ZXJyb3JfY29kZSwgc3RyZWFtX2lkPXN0cmVhbV9pZCkKKyAg
ICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFJFVElSRV9DT05ORUNUSU9OX0lEIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2Vx
dWVuY2VfbnVtYmVyID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1l
CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
Y29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZXF1ZW5jZV9u
dW1iZXIpCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBmaW5kIHRoZSBjb25uZWN0aW9uIElE
IGJ5IHNlcXVlbmNlIG51bWJlcgorICAgICAgICBmb3IgaW5kZXgsIGNvbm5lY3Rpb25faWQgaW4g
ZW51bWVyYXRlKHNlbGYuX2hvc3RfY2lkcyk6CisgICAgICAgICAgICBpZiBjb25uZWN0aW9uX2lk
LnNlcXVlbmNlX251bWJlciA9PSBzZXF1ZW5jZV9udW1iZXI6CisgICAgICAgICAgICAgICAgaWYg
Y29ubmVjdGlvbl9pZC5jaWQgPT0gY29udGV4dC5ob3N0X2NpZDoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICByZWFzb25fcGhyYXNlPSJDYW5ub3QgcmV0aXJlIGN1cnJlbnQgY29ubmVjdGlvbiBJRCIsCisg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
CisgICAgICAgICAgICAgICAgICAgICJQZWVyIHJldGlyaW5nIENJRCAlcyAoJWQpIiwKKyAgICAg
ICAgICAgICAgICAgICAgZHVtcF9jaWQoY29ubmVjdGlvbl9pZC5jaWQpLAorICAgICAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2hvc3RfY2lkc1tpbmRleF0KKyAgICAgICAgICAg
ICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBldmVudHMuQ29u
bmVjdGlvbklkUmV0aXJlZChjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkKQorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICMgaXNzdWUgYSBu
ZXcgY29ubmVjdGlvbiBJRAorICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29ubmVjdGlvbl9pZHMo
KQorCisgICAgZGVmIF9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICBzZWxmLCBj
b250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIK
KyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVE9QX1NFTkRJ
TkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50
X3ZhcigpCisgICAgICAgIGVycm9yX2NvZGUgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGFwcGxp
Y2F0aW9uIGVycm9yIGNvZGUKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dn
ZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNv
ZGVfc3RvcF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWVy
cm9yX2NvZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisgICAgICAgIHNlbGYu
X2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgICAg
IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKworICAg
IGRlZiBfaGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgU1RSRUFNIGZyYW1lLgorICAgICAgICAi
IiIKKyAgICAgICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBpZiBm
cmFtZV90eXBlICYgNDoKKyAgICAgICAgICAgIG9mZnNldCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCA9IDAKKyAgICAgICAgaWYgZnJhbWVf
dHlwZSAmIDI6CisgICAgICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsZW5ndGggPSBidWYuY2FwYWNpdHkgLSBidWYudGVsbCgp
CisgICAgICAgIGlmIG9mZnNldCArIGxlbmd0aCA+IFVJTlRfVkFSX01BWDoKKyAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1R
dWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1l
X3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJvZmZzZXQg
KyBsZW5ndGggY2Fubm90IGV4Y2VlZCAyXjYyIC0gMSIsCisgICAgICAgICAgICApCisgICAgICAg
IGZyYW1lID0gUXVpY1N0cmVhbUZyYW1lKAorICAgICAgICAgICAgb2Zmc2V0PW9mZnNldCwgZGF0
YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpLCBmaW49Ym9vbChmcmFtZV90eXBlICYgMSkKKyAgICAg
ICAgKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1fZnJh
bWUoZnJhbWUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICApCisKKyAgICAgICAg
IyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisgICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2Fu
X3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgICAgICMgY2hlY2sgZmxvdy1j
b250cm9sIGxpbWl0cworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVh
bShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG9mZnNldCArIGxlbmd0aCA+IHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVj
dGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GTE9X
X0NPTlRST0xfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAor
ICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Ik92ZXIgc3RyZWFtIGRhdGEgbGltaXQiLAor
ICAgICAgICAgICAgKQorICAgICAgICBuZXdseV9yZWNlaXZlZCA9IG1heCgwLCBvZmZzZXQgKyBs
ZW5ndGggLSBzdHJlYW0uX3JlY3ZfaGlnaGVzdCkKKyAgICAgICAgaWYgc2VsZi5fbG9jYWxfbWF4
X2RhdGFfdXNlZCArIG5ld2x5X3JlY2VpdmVkID4gc2VsZi5fbG9jYWxfbWF4X2RhdGE6CisgICAg
ICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IsCisgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Ik92
ZXIgY29ubmVjdGlvbiBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKworICAgICAgICBldmVu
dCA9IHN0cmVhbS5hZGRfZnJhbWUoZnJhbWUpCisgICAgICAgIGlmIGV2ZW50IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudCkKKyAgICAgICAgc2VsZi5f
bG9jYWxfbWF4X2RhdGFfdXNlZCArPSBuZXdseV9yZWNlaXZlZAorCisgICAgZGVmIF9oYW5kbGVf
c3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgU1RSRUFNX0RBVEFfQkxPQ0tFRCBmcmFt
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgbGltaXQgPSBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJh
bWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgICAgIGxpbWl0PWxpbWl0LCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlv
bgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0
cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShmcmFtZV90eXBl
LCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTVNfQkxPQ0tFRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGxpbWl0ID0g
YnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNl
bGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xv
Z2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVu
Y29kZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGlzX3VuaWRp
cmVjdGlvbmFsPWZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JMT0NLRURfVU5J
LAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgX29uX2Fja19kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwg
ZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzcGFjZTogUXVpY1BhY2tldFNwYWNlLCBoaWdo
ZXN0X2Fja2VkOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxs
YmFjayB3aGVuIGFuIEFDSyBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIGRlbGl2ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAg
ICAgICAgICAgc3BhY2UuYWNrX3F1ZXVlLnN1YnRyYWN0KDAsIGhpZ2hlc3RfYWNrZWQgKyAxKQor
CisgICAgZGVmIF9vbl9oYW5kc2hha2VfZG9uZV9kZWxpdmVyeShzZWxmLCBkZWxpdmVyeTogUXVp
Y0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3
aGVuIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAg
ICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoK
KyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBUcnVlCisKKyAgICBk
ZWYgX29uX21heF9kYXRhX2RlbGl2ZXJ5KHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0
ZSkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBNQVhfREFU
QSBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlm
IGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5f
bG9jYWxfbWF4X2RhdGFfc2VudCA9IDAKKworICAgIGRlZiBfb25fbWF4X3N0cmVhbV9kYXRhX2Rl
bGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHN0cmVh
bTogUXVpY1N0cmVhbQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxi
YWNrIHdoZW4gYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3Qu
CisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0ZS5B
Q0tFRDoKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCA9IDAK
KworICAgIGRlZiBfb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgIHNlbGYs
IGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwgY29ubmVjdGlvbl9pZDogUXVpY0Nvbm5lY3Rp
b25JZAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4g
YSBORVdfQ09OTkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgor
ICAgICAgICAgICAgY29ubmVjdGlvbl9pZC53YXNfc2VudCA9IEZhbHNlCisKKyAgICBkZWYgX29u
X3BpbmdfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0
ZSwgdWlkczogU2VxdWVuY2VbaW50XQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAg
ICAgIENhbGxiYWNrIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0Lgor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkgPT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNL
RUQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJlY2VpdmVkIFBJTkclcyByZXNw
b25zZSIsICIiIGlmIHVpZHMgZWxzZSAiIChwcm9iZSkiKQorICAgICAgICAgICAgZm9yIHVpZCBp
biB1aWRzOgorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoZXZlbnRzLlBpbmdB
Y2tub3dsZWRnZWQodWlkPXVpZCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9w
aW5nX3BlbmRpbmcuZXh0ZW5kKHVpZHMpCisKKyAgICBkZWYgX29uX3JldGlyZV9jb25uZWN0aW9u
X2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUs
IHNlcXVlbmNlX251bWJlcjogaW50CisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgQ2FsbGJhY2sgd2hlbiBhIFJFVElSRV9DT05ORUNUSU9OX0lEIGZyYW1lIGlzIGFja25vd2xl
ZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkgIT0gUXVpY0Rl
bGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9p
ZHMuYXBwZW5kKHNlcXVlbmNlX251bWJlcikKKworICAgIGRlZiBfcGF5bG9hZF9yZWNlaXZlZCgK
KyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBwbGFpbjogYnl0ZXMK
KyAgICApIC0+IFR1cGxlW2Jvb2wsIGJvb2xdOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxl
IGEgUVVJQyBwYWNrZXQgcGF5bG9hZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPXBsYWluKQorCisgICAgICAgIGlzX2Fja19lbGljaXRpbmcgPSBGYWxzZQorICAgICAg
ICBpc19wcm9iaW5nID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigpOgorICAgICAg
ICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAgICAgIyBj
aGVjayBmcmFtZSB0eXBlIGlzIGtub3duCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgZnJhbWVfaGFuZGxlciwgZnJhbWVfZXBvY2hzID0gc2VsZi5fX2ZyYW1lX2hhbmRsZXJzW2Zy
YW1lX3R5cGVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAg
cmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29k
ZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJVbmtub3duIGZyYW1lIHR5cGUiLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkIGZvciB0aGUgZXBvY2gKKyAgICAgICAgICAgIGlmIGNv
bnRleHQuZXBvY2ggbm90IGluIGZyYW1lX2Vwb2NoczoKKyAgICAgICAgICAgICAgICByYWlzZSBR
dWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNF
cnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IlVuZXhw
ZWN0ZWQgZnJhbWUgdHlwZSIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGhh
bmRsZSB0aGUgZnJhbWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmcmFtZV9o
YW5kbGVyKGNvbnRleHQsIGZyYW1lX3R5cGUsIGJ1ZikKKyAgICAgICAgICAgIGV4Y2VwdCBCdWZm
ZXJSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkZSQU1FX0VOQ09E
SU5HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkZhaWxlZCB0byBwYXJzZSBmcmFtZSIs
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHVwZGF0ZSBBQ0sgb25seSAvIHBy
b2JpbmcgZmxhZ3MKKyAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUgbm90IGluIE5PTl9BQ0tfRUxJ
Q0lUSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmcgPSBU
cnVlCisKKyAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUgbm90IGluIFBST0JJTkdfRlJBTUVfVFlQ
RVM6CisgICAgICAgICAgICAgICAgaXNfcHJvYmluZyA9IEZhbHNlCisgICAgICAgICAgICBlbGlm
IGlzX3Byb2JpbmcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpc19wcm9iaW5nID0gVHJ1ZQor
CisgICAgICAgIHJldHVybiBpc19hY2tfZWxpY2l0aW5nLCBib29sKGlzX3Byb2JpbmcpCisKKyAg
ICBkZWYgX3JlcGxlbmlzaF9jb25uZWN0aW9uX2lkcyhzZWxmKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgR2VuZXJhdGUgbmV3IGNvbm5lY3Rpb24gSURzLgorICAgICAgICAiIiIKKyAg
ICAgICAgd2hpbGUgbGVuKHNlbGYuX2hvc3RfY2lkcykgPCBtaW4oOCwgc2VsZi5fcmVtb3RlX2Fj
dGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0KToKKyAgICAgICAgICAgIHNlbGYuX2hvc3RfY2lkcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAg
ICAgICAgY2lkPW9zLnVyYW5kb20oc2VsZi5fY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lkX2xl
bmd0aCksCisgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj1zZWxmLl9ob3N0X2Np
ZF9zZXEsCisgICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1vcy51cmFu
ZG9tKDE2KSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLl9ob3N0X2NpZF9zZXEgKz0gMQorCisgICAgZGVmIF9wdXNoX2NyeXB0b19kYXRhKHNlbGYp
IC0+IE5vbmU6CisgICAgICAgIGZvciBlcG9jaCwgYnVmIGluIHNlbGYuX2NyeXB0b19idWZmZXJz
Lml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9jaF0ud3JpdGUo
YnVmLmRhdGEpCisgICAgICAgICAgICBidWYuc2VlaygwKQorCisgICAgZGVmIF9zZW5kX3Byb2Jl
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcgPSBUcnVlCisKKyAg
ICBkZWYgX3BhcnNlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICBzZWxmLCBkYXRhOiBi
eXRlcywgZnJvbV9zZXNzaW9uX3RpY2tldDogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgor
ICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzID0gcHVsbF9xdWljX3RyYW5zcG9ydF9w
YXJhbWV0ZXJzKAorICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZGF0YSksIHByb3RvY29sX3ZlcnNp
b249c2VsZi5fdmVyc2lvbgorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBmcm9tX3Nlc3Npb25f
dGlja2V0OgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2ZW50PSJw
YXJhbWV0ZXJzX3NldCIsCisgICAgICAgICAgICAgICAgZGF0YT1zZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgIG93bmVyPSJy
ZW1vdGUiLCBwYXJhbWV0ZXJzPXF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgcmVtb3RlIHBhcmFt
ZXRlcnMKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAg
ICAgICBhbmQgbm90IGZyb21fc2Vzc2lvbl90aWNrZXQKKyAgICAgICAgICAgIGFuZCAoCisgICAg
ICAgICAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5vcmlnaW5hbF9jb25uZWN0aW9u
X2lkCisgICAgICAgICAgICAgICAgIT0gc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAg
ICAgICAgICAgKQorICAgICAgICApOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuVFJBTlNQT1JU
X1BBUkFNRVRFUl9FUlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5
cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9yaWdpbmFsX2Nvbm5l
Y3Rpb25faWQgZG9lcyBub3QgbWF0Y2giLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgc3Rv
cmUgcmVtb3RlIHBhcmFtZXRlcnMKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVy
cy5hY2tfZGVsYXlfZXhwb25lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9yZW1v
dGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudAor
ICAgICAgICBpZiBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25uZWN0aW9uX2lk
X2xpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2FjdGl2ZV9jb25u
ZWN0aW9uX2lkX2xpbWl0ID0gKAorICAgICAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMuYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQKKyAgICAgICAgICAgICkKKyAgICAgICAg
aWYgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5pZGxlX3RpbWVvdXQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBzZWxmLl9yZW1vdGVfaWRsZV90aW1lb3V0ID0gcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5pZGxlX3RpbWVvdXQgLyAxMDAwLjAKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRf
cGFyYW1ldGVycy5tYXhfYWNrX2RlbGF5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
bG9zcy5tYXhfYWNrX2RlbGF5ID0gcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5tYXhfYWNrX2Rl
bGF5IC8gMTAwMC4wCisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YWdyYW1fZnJhbWVfc2l6
ZSA9ICgKKyAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2RhdGFncmFt
X2ZyYW1lX3NpemUKKyAgICAgICAgKQorICAgICAgICBmb3IgcGFyYW0gaW4gWworICAgICAgICAg
ICAgIm1heF9kYXRhIiwKKyAgICAgICAgICAgICJtYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCIs
CisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlIiwKKyAgICAgICAgICAg
ICJtYXhfc3RyZWFtX2RhdGFfdW5pIiwKKyAgICAgICAgICAgICJtYXhfc3RyZWFtc19iaWRpIiwK
KyAgICAgICAgICAgICJtYXhfc3RyZWFtc191bmkiLAorICAgICAgICBdOgorICAgICAgICAgICAg
dmFsdWUgPSBnZXRhdHRyKHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsICJpbml0aWFsXyIgKyBw
YXJhbSkKKyAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IHNldGF0dHIoc2VsZiwgIl9yZW1vdGVfIiArIHBhcmFtLCB2YWx1ZSkKKworICAgIGRlZiBfc2Vy
aWFsaXplX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICBxdWlj
X3RyYW5zcG9ydF9wYXJhbWV0ZXJzID0gUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICBhY2tfZGVsYXlfZXhwb25lbnQ9c2VsZi5fbG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50LAor
ICAgICAgICAgICAgYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQ9c2VsZi5fbG9jYWxfYWN0aXZl
X2Nvbm5lY3Rpb25faWRfbGltaXQsCisgICAgICAgICAgICBpZGxlX3RpbWVvdXQ9aW50KHNlbGYu
X2NvbmZpZ3VyYXRpb24uaWRsZV90aW1lb3V0ICogMTAwMCksCisgICAgICAgICAgICBpbml0aWFs
X21heF9kYXRhPXNlbGYuX2xvY2FsX21heF9kYXRhLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhf
c3RyZWFtX2RhdGFfYmlkaV9sb2NhbD1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9s
b2NhbCwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPXNl
bGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSwKKyAgICAgICAgICAgIGluaXRp
YWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfdW5pLAor
ICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpPXNlbGYuX2xvY2FsX21heF9zdHJl
YW1zX2JpZGksCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT1zZWxmLl9sb2Nh
bF9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICBtYXhfYWNrX2RlbGF5PTI1LAorICAgICAg
ICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9c2VsZi5fY29uZmlndXJhdGlvbi5tYXhfZGF0
YWdyYW1fZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgIHF1YW50dW1fcmVhZGluZXNzPWIiUSIgKiAx
MjAwCisgICAgICAgICAgICBpZiBzZWxmLl9jb25maWd1cmF0aW9uLnF1YW50dW1fcmVhZGluZXNz
X3Rlc3QKKyAgICAgICAgICAgIGVsc2UgTm9uZSwKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qg
c2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5v
cmlnaW5hbF9jb25uZWN0aW9uX2lkID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvZyBldmVudAorICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNw
b3J0IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAorICAgICAgICAg
ICAgICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgICAgICAgICBvd25lcj0ibG9jYWwiLCBwYXJhbWV0ZXJzPXF1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zICogUEFDS0VUX01BWF9TSVpFKQorICAgICAg
ICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHF1aWNf
dHJhbnNwb3J0X3BhcmFtZXRlcnMsIHByb3RvY29sX3ZlcnNpb249c2VsZi5fdmVyc2lvbgorICAg
ICAgICApCisgICAgICAgIHJldHVybiBidWYuZGF0YQorCisgICAgZGVmIF9zZXRfc3RhdGUoc2Vs
Ziwgc3RhdGU6IFF1aWNDb25uZWN0aW9uU3RhdGUpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygiJXMgLT4gJXMiLCBzZWxmLl9zdGF0ZSwgc3RhdGUpCisgICAgICAgIHNlbGYu
X3N0YXRlID0gc3RhdGUKKworICAgIGRlZiBfc3RyZWFtX2Nhbl9yZWNlaXZlKHNlbGYsIHN0cmVh
bV9pZDogaW50KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc3RyZWFtX2lzX2NsaWVudF9pbml0
aWF0ZWQoCisgICAgICAgICAgICBzdHJlYW1faWQKKyAgICAgICAgKSAhPSBzZWxmLl9pc19jbGll
bnQgb3Igbm90IHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQpCisKKyAgICBkZWYg
X3N0cmVhbV9jYW5fc2VuZChzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAgICAgc3RyZWFtX2lk
CisgICAgICAgICkgPT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF91bmJsb2NrX3N0cmVhbXMoc2VsZiwgaXNfdW5p
ZGlyZWN0aW9uYWw6IGJvb2wpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzX3VuaWRpcmVjdGlvbmFs
OgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhf
c3RyZWFtX2RhdGFfdW5pCisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtc191bmkKKyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVh
bXNfYmxvY2tlZF91bmkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlCisgICAg
ICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpCisgICAg
ICAgICAgICBzdHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfYmlkaQorCisg
ICAgICAgIHdoaWxlIHN0cmVhbXNfYmxvY2tlZCBhbmQgc3RyZWFtc19ibG9ja2VkWzBdLnN0cmVh
bV9pZCAvLyA0IDwgbWF4X3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW0gPSBzdHJlYW1zX2Js
b2NrZWQucG9wKDApCisgICAgICAgICAgICBzdHJlYW0uaXNfYmxvY2tlZCA9IEZhbHNlCisgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YV9y
ZW1vdGUKKworICAgICAgICBpZiBub3Qgc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkgYW5kIG5v
dCBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pOgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtc19i
bG9ja2VkX3BlbmRpbmcgPSBGYWxzZQorCisgICAgZGVmIF91cGRhdGVfdHJhZmZpY19rZXkoCisg
ICAgICAgIHNlbGYsCisgICAgICAgIGRpcmVjdGlvbjogdGxzLkRpcmVjdGlvbiwKKyAgICAgICAg
ZXBvY2g6IHRscy5FcG9jaCwKKyAgICAgICAgY2lwaGVyX3N1aXRlOiB0bHMuQ2lwaGVyU3VpdGUs
CisgICAgICAgIHNlY3JldDogYnl0ZXMsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIG5l
dyB0cmFmZmljIGtleXMgYXJlCisgICAgICAgIGF2YWlsYWJsZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2Zp
bGUKKyAgICAgICAgaWYgc2VjcmV0c19sb2dfZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGxhYmVsX3JvdyA9IHNlbGYuX2lzX2NsaWVudCA9PSAoZGlyZWN0aW9uID09IHRscy5EaXJlY3Rp
b24uREVDUllQVCkKKyAgICAgICAgICAgIGxhYmVsID0gU0VDUkVUU19MQUJFTFNbbGFiZWxfcm93
XVtlcG9jaC52YWx1ZV0KKyAgICAgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUud3JpdGUoCisgICAg
ICAgICAgICAgICAgIiVzICVzICVzXG4iICUgKGxhYmVsLCBzZWxmLnRscy5jbGllbnRfcmFuZG9t
LmhleCgpLCBzZWNyZXQuaGV4KCkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWNyZXRz
X2xvZ19maWxlLmZsdXNoKCkKKworICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2No
XQorICAgICAgICBpZiBkaXJlY3Rpb24gPT0gdGxzLkRpcmVjdGlvbi5FTkNSWVBUOgorICAgICAg
ICAgICAgY3J5cHRvLnNlbmQuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWNp
cGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjcnlwdG8ucmVjdi5zZXR1cCgKKyAg
ICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9Y2lwaGVyX3N1aXRlLCBzZWNyZXQ9c2VjcmV0LCB2
ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfYXBw
bGljYXRpb24oCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBuZXR3
b3JrX3BhdGg6IFF1aWNOZXR3b3JrUGF0aCwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgY3J5cHRvX3N0cmVhbTogT3B0aW9uYWxbUXVpY1N0cmVhbV0gPSBOb25lCisgICAgICAg
IGlmIHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAg
ICAgICAgICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdCisgICAg
ICAgICAgICBjcnlwdG9fc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNbdGxzLkVwb2NoLk9O
RV9SVFRdCisgICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX09ORV9SVFQKKyAg
ICAgICAgZWxpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5aRVJPX1JUVF0uc2VuZC5pc192YWxp
ZCgpOgorICAgICAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1t0bHMuRXBvY2guWkVST19S
VFRdCisgICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX1pFUk9fUlRUCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc3BhY2UgPSBzZWxmLl9zcGFj
ZXNbdGxzLkVwb2NoLk9ORV9SVFRdCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
ICMgYXBwbHkgcGFjaW5nLCBleGNlcHQgaWYgd2UgaGF2ZSBBQ0tzIHRvIHNlbmQKKyAgICAgICAg
ICAgIGlmIHNwYWNlLmFja19hdCBpcyBOb25lIG9yIHNwYWNlLmFja19hdCA+PSBub3c6CisgICAg
ICAgICAgICAgICAgc2VsZi5fcGFjaW5nX2F0ID0gc2VsZi5fbG9zcy5fcGFjZXIubmV4dF9zZW5k
X3RpbWUobm93PW5vdykKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWlsZGVyLnN0
YXJ0X3BhY2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorCisgICAgICAgICAgICBpZiBzZWxmLl9o
YW5kc2hha2VfY29tcGxldGU6CisgICAgICAgICAgICAgICAgIyBBQ0sKKyAgICAgICAgICAgICAg
ICBpZiBzcGFjZS5hY2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8PSBub3c6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Fja19mcmFtZShidWlsZGVyPWJ1aWxkZXIs
IHNwYWNlPXNwYWNlLCBub3c9bm93KQorCisgICAgICAgICAgICAgICAgIyBIQU5EU0hBS0VfRE9O
RQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmc6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hhbmRzaGFrZV9kb25lX2ZyYW1lKGJ1aWxkZXI9
YnVpbGRlcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2RvbmVfcGVuZGlu
ZyA9IEZhbHNlCisKKyAgICAgICAgICAgICAgICAjIFBBVEggQ0hBTExFTkdFCisgICAgICAgICAg
ICAgICAgaWYgKAorICAgICAgICAgICAgICAgICAgICBub3QgbmV0d29ya19wYXRoLmlzX3ZhbGlk
YXRlZAorICAgICAgICAgICAgICAgICAgICBhbmQgbmV0d29ya19wYXRoLmxvY2FsX2NoYWxsZW5n
ZSBpcyBOb25lCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgY2hhbGxl
bmdlID0gb3MudXJhbmRvbSg4KQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9wYXRo
X2NoYWxsZW5nZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRl
ciwgY2hhbGxlbmdlPWNoYWxsZW5nZQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2UKKworICAg
ICAgICAgICAgICAgICMgUEFUSCBSRVNQT05TRQorICAgICAgICAgICAgICAgIGlmIG5ldHdvcmtf
cGF0aC5yZW1vdGVfY2hhbGxlbmdlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRlcj1idWlsZGVyLCBjaGFsbGVuZ2U9bmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGgu
cmVtb3RlX2NoYWxsZW5nZSA9IE5vbmUKKworICAgICAgICAgICAgICAgICMgTkVXX0NPTk5FQ1RJ
T05fSUQKKyAgICAgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBzZWxmLl9ob3N0X2Np
ZHM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25uZWN0aW9uX2lkLndhc19zZW50Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJh
bWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLCBjb25uZWN0
aW9uX2lkPWNvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQKKyAgICAgICAgICAgICAgICB3aGlsZSBz
ZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9pZHM6CisgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNl
X251bWJlciA9IHNlbGYuX3JldGlyZV9jb25uZWN0aW9uX2lkcy5wb3AoMCkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNlcXVlbmNlX251bWJlcj1zZXF1ZW5j
ZV9udW1iZXIKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgIyBTVFJF
QU1TX0JMT0NLRUQKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVu
ZGluZzoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGk6
CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJlYW1zX2Jsb2NrZWRfZnJh
bWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JM
T0NLRURfQklESSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD1zZWxmLl9yZW1v
dGVfbWF4X3N0cmVhbXNfYmlkaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tFRF9VTkksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3Vu
aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c3RyZWFtc19ibG9ja2VkX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAgICAgIyBNQVhf
REFUQQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Nvbm5lY3Rpb25fbGltaXRzKGJ1aWxk
ZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UpCisKKyAgICAgICAgICAgICMgc3RyZWFtLWxldmVsIGxp
bWl0cworICAgICAgICAgICAgZm9yIHN0cmVhbSBpbiBzZWxmLl9zdHJlYW1zLnZhbHVlcygpOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0cmVhbV9saW1pdHMoYnVpbGRlcj1idWlsZGVy
LCBzcGFjZT1zcGFjZSwgc3RyZWFtPXN0cmVhbSkKKworICAgICAgICAgICAgIyBQSU5HICh1c2Vy
LXJlcXVlc3QpCisgICAgICAgICAgICBpZiBzZWxmLl9waW5nX3BlbmRpbmc6CisgICAgICAgICAg
ICAgICAgc2VsZi5fd3JpdGVfcGluZ19mcmFtZShidWlsZGVyLCBzZWxmLl9waW5nX3BlbmRpbmcp
CisgICAgICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmNsZWFyKCkKKworICAgICAgICAg
ICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2JlX3BlbmRpbmc6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGluZ19mcmFtZShidWlsZGVyLCBjb21tZW50PSJw
cm9iZSIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJvYmVfcGVuZGluZyA9IEZhbHNlCisKKyAg
ICAgICAgICAgICMgQ1JZUFRPCisgICAgICAgICAgICBpZiBjcnlwdG9fc3RyZWFtIGlzIG5vdCBO
b25lIGFuZCBub3QgY3J5cHRvX3N0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eToKKyAgICAgICAg
ICAgICAgICBzZWxmLl93cml0ZV9jcnlwdG9fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1jcnlwdG9fc3RyZWFtCisgICAgICAg
ICAgICAgICAgKQorCisgICAgICAgICAgICAjIERBVEFHUkFNCisgICAgICAgICAgICB3aGlsZSBz
ZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlcj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1zZWxm
Ll9kYXRhZ3JhbXNfcGVuZGluZ1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGU9UXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZy5wb3BsZWZ0
KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgUXVpY1BhY2tldEJ1aWxkZXJTdG9wOgorICAgICAg
ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIFNUUkVBTQorICAgICAgICAgICAg
Zm9yIHN0cmVhbSBpbiBzZWxmLl9zdHJlYW1zLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIGlm
IG5vdCBzdHJlYW0uaXNfYmxvY2tlZCBhbmQgbm90IHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0
eToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3RlX21heF9kYXRhX3VzZWQgKz0gc2Vs
Zi5fd3JpdGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1i
dWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW09c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4
X29mZnNldD1taW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLl9zZW5kX2hp
Z2hlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlbGYuX3JlbW90ZV9tYXhfZGF0
YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc2VsZi5fcmVtb3RlX21heF9kYXRhX3Vz
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9y
ZW1vdGUsCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIGlmIGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5OgorICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3Mu
X3BhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz1ub3cpCisKKyAgICBkZWYgX3dyaXRlX2hhbmRz
aGFrZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGVwb2NoOiB0
bHMuRXBvY2gsIG5vdzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0byA9IHNl
bGYuX2NyeXB0b3NbZXBvY2hdCisgICAgICAgIGlmIG5vdCBjcnlwdG8uc2VuZC5pc192YWxpZCgp
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgY3J5cHRvX3N0cmVhbSA9IHNlbGYuX2Ny
eXB0b19zdHJlYW1zW2Vwb2NoXQorICAgICAgICBzcGFjZSA9IHNlbGYuX3NwYWNlc1tlcG9jaF0K
KworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgZXBvY2ggPT0gdGxzLkVwb2No
LklOSVRJQUw6CisgICAgICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBQQUNLRVRfVFlQRV9JTklU
SUFMCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF90eXBlID0gUEFD
S0VUX1RZUEVfSEFORFNIQUtFCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChwYWNr
ZXRfdHlwZSwgY3J5cHRvKQorCisgICAgICAgICAgICAjIEFDSworICAgICAgICAgICAgaWYgc3Bh
Y2UuYWNrX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Fja19m
cmFtZShidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBub3c9bm93KQorCisgICAgICAgICAg
ICAjIENSWVBUTworICAgICAgICAgICAgaWYgbm90IGNyeXB0b19zdHJlYW0uc2VuZF9idWZmZXJf
aXNfZW1wdHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGVfY3J5cHRvX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBzdHJlYW09
Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIFBJTkcgKHByb2JlKQor
ICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcKKyAg
ICAgICAgICAgICAgICBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgICAgICAg
ICAgICAgIGFuZCBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlCisgICAgICAgICAgICApOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0i
cHJvYmUiKQorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisg
ICAgICAgICAgICBpZiBidWlsZGVyLnBhY2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBi
cmVhaworCisgICAgZGVmIF93cml0ZV9hY2tfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTogUXVpY1BhY2tldFNwYWNlLCBub3c6IGZsb2F0Cisg
ICAgKSAtPiBOb25lOgorICAgICAgICAjIGNhbGN1bGF0ZSBBQ0sgZGVsYXkKKyAgICAgICAgYWNr
X2RlbGF5ID0gbm93IC0gc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF90aW1lCisgICAgICAgIGFja19k
ZWxheV9lbmNvZGVkID0gaW50KGFja19kZWxheSAqIDEwMDAwMDApID4+IHNlbGYuX2xvY2FsX2Fj
a19kZWxheV9leHBvbmVudAorCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisg
ICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFDSywKKyAgICAgICAgICAgIGNhcGFjaXR5PUFDS19G
UkFNRV9DQVBBQ0lUWSwKKyAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25fYWNrX2RlbGl2ZXJ5
LAorICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShzcGFjZSwgc3BhY2UubGFyZ2VzdF9yZWNlaXZl
ZF9wYWNrZXQpLAorICAgICAgICApCisgICAgICAgIHJhbmdlcyA9IHB1c2hfYWNrX2ZyYW1lKGJ1
Ziwgc3BhY2UuYWNrX3F1ZXVlLCBhY2tfZGVsYXlfZW5jb2RlZCkKKyAgICAgICAgc3BhY2UuYWNr
X2F0ID0gTm9uZQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNf
bG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFt
ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9hY2tf
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIHJhbmdlcz1zcGFjZS5hY2tfcXVldWUsIGRlbGF5
PWFja19kZWxheQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICAj
IGNoZWNrIGlmIHdlIG5lZWQgdG8gdHJpZ2dlciBhbiBBQ0stb2YtQUNLCisgICAgICAgIGlmIHJh
bmdlcyA+IDEgYW5kIGJ1aWxkZXIucGFja2V0X251bWJlciAlIDggPT0gMDoKKyAgICAgICAgICAg
IHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0iQUNLLW9mLUFDSyB0cmln
Z2VyIikKKworICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgICAgIGVycm9y
X2NvZGU6IGludCwKKyAgICAgICAgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwKKyAgICAgICAg
cmVhc29uX3BocmFzZTogc3RyLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgcmVhc29uX2J5dGVz
ID0gcmVhc29uX3BocmFzZS5lbmNvZGUoInV0ZjgiKQorICAgICAgICByZWFzb25fbGVuZ3RoID0g
bGVuKHJlYXNvbl9ieXRlcykKKworICAgICAgICBpZiBmcmFtZV90eXBlIGlzIE5vbmU6CisgICAg
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9QVBQ
TElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25fbGVuZ3RoLAorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJyb3JfY29kZSkKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHJlYXNvbl9sZW5ndGgpCisgICAgICAgICAgICBidWYucHVz
aF9ieXRlcyhyZWFzb25fYnl0ZXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWYgPSBi
dWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuVFJBTlNQ
T1JUX0NMT1NFLAorICAgICAgICAgICAgICAgIGNhcGFjaXR5PVRSQU5TUE9SVF9DTE9TRV9GUkFN
RV9DQVBBQ0lUWSArIHJlYXNvbl9sZW5ndGgsCisgICAgICAgICAgICApCisgICAgICAgICAgICBi
dWYucHVzaF91aW50X3ZhcihlcnJvcl9jb2RlKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92
YXIoZnJhbWVfdHlwZSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHJlYXNvbl9sZW5n
dGgpCisgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhyZWFzb25fYnl0ZXMpCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQor
CisgICAgZGVmIF93cml0ZV9jb25uZWN0aW9uX2xpbWl0cygKKyAgICAgICAgc2VsZiwgYnVpbGRl
cjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBNQVhfREFUQSBpZiBuZWVkZWQuCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9sb2NhbF9tYXhfZGF0YV91c2VkICogMiA+IHNlbGYu
X2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGEgKj0gMgor
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJMb2NhbCBtYXhfZGF0YSByYWlzZWQgdG8g
JWQiLCBzZWxmLl9sb2NhbF9tYXhfZGF0YSkKKyAgICAgICAgaWYgc2VsZi5fbG9jYWxfbWF4X2Rh
dGFfc2VudCAhPSBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxk
ZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwK
KyAgICAgICAgICAgICAgICBjYXBhY2l0eT1NQVhfREFUQV9GUkFNRV9DQVBBQ0lUWSwKKyAgICAg
ICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9kYXRhX2RlbGl2ZXJ5LAorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc2VsZi5fbG9jYWxfbWF4X2RhdGEp
CisgICAgICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YV9zZW50ID0gc2VsZi5fbG9jYWxfbWF4
X2RhdGEKKworICAgICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dn
ZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAg
ICAgICkKKworICAgIGRlZiBfd3JpdGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBR
dWljU3RyZWFtCisgICAgKSAtPiBib29sOgorICAgICAgICBmcmFtZV9vdmVyaGVhZCA9IDMgKyBz
aXplX3VpbnRfdmFyKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0KQorICAgICAgICBmcmFtZSA9IHN0
cmVhbS5nZXRfZnJhbWUoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlIC0gZnJhbWVfb3Zl
cmhlYWQpCisgICAgICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkNSWVBU
TywKKyAgICAgICAgICAgICAgICBjYXBhY2l0eT1mcmFtZV9vdmVyaGVhZCwKKyAgICAgICAgICAg
ICAgICBoYW5kbGVyPXN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5LAorICAgICAgICAgICAgICAgIGhh
bmRsZXJfYXJncz0oZnJhbWUub2Zmc2V0LCBmcmFtZS5vZmZzZXQgKyBsZW4oZnJhbWUuZGF0YSkp
LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWUub2Zm
c2V0KQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8IDB4NDAw
MCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAg
ICMgbG9nIGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9fZnJhbWUo
ZnJhbWUpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfd3JpdGVfZGF0YWdyYW1fZnJhbWUoCisgICAg
ICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBkYXRhOiBieXRlcywgZnJhbWVf
dHlwZTogUXVpY0ZyYW1lVHlwZQorICAgICkgLT4gYm9vbDoKKyAgICAgICAgIiIiCisgICAgICAg
IFdyaXRlIGEgREFUQUdSQU0gZnJhbWUuCisKKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBm
cmFtZSB3YXMgcHJvY2Vzc2VkLCBGYWxzZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAg
ICBhc3NlcnQgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RI
CisgICAgICAgIGxlbmd0aCA9IGxlbihkYXRhKQorICAgICAgICBmcmFtZV9zaXplID0gMSArIHNp
emVfdWludF92YXIobGVuZ3RoKSArIGxlbmd0aAorCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9ZnJhbWVfc2l6ZSkKKyAgICAgICAgYnVmLnB1
c2hfdWludF92YXIobGVuZ3RoKQorICAgICAgICBidWYucHVzaF9ieXRlcyhkYXRhKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9kYXRhZ3JhbV9mcmFtZShsZW5ndGg9
bGVuZ3RoKQorICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYg
X3dyaXRlX2hhbmRzaGFrZV9kb25lX2ZyYW1lKHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWls
ZGVyKSAtPiBOb25lOgorICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKKyAgICAgICAgICAgIGNhcGFjaXR5PUhBTkRT
SEFLRV9ET05FX0ZSQU1FX0NBUEFDSVRZLAorICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9o
YW5kc2hha2VfZG9uZV9kZWxpdmVyeSwKKyAgICAgICAgKQorCisgICAgICAgICMgbG9nIGZyYW1l
CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
YnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFtZSgpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxm
LCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY29ubmVjdGlvbl9pZDogUXVpY0Nvbm5lY3Rp
b25JZAorICAgICkgLT4gTm9uZToKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gMCAgIyBGSVhN
RQorCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk5FV19DT05ORUNUSU9OX0lELAorICAgICAgICAgICAgY2FwYWNpdHk9TkVXX0NP
Tk5FQ1RJT05fSURfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29u
X25ld19jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5LAorICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShj
b25uZWN0aW9uX2lkLCksCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfdWludF92YXIoY29u
bmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHJl
dGlyZV9wcmlvcl90bykKKyAgICAgICAgYnVmLnB1c2hfdWludDgobGVuKGNvbm5lY3Rpb25faWQu
Y2lkKSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY29ubmVjdGlvbl9pZC5jaWQpCisgICAgICAg
IGJ1Zi5wdXNoX2J5dGVzKGNvbm5lY3Rpb25faWQuc3RhdGVsZXNzX3Jlc2V0X3Rva2VuKQorCisg
ICAgICAgIGNvbm5lY3Rpb25faWQud2FzX3NlbnQgPSBUcnVlCisgICAgICAgIHNlbGYuX2V2ZW50
cy5hcHBlbmQoZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZChjb25uZWN0aW9uX2lkPWNvbm5lY3Rp
b25faWQuY2lkKSkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJh
bWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbmV3
X2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faWQ9
Y29ubmVjdGlvbl9pZC5jaWQsCisgICAgICAgICAgICAgICAgICAgIHJldGlyZV9wcmlvcl90bz1y
ZXRpcmVfcHJpb3JfdG8sCisgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj1jb25u
ZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVsZXNz
X3Jlc2V0X3Rva2VuPWNvbm5lY3Rpb25faWQuc3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGF0aF9jaGFsbGVu
Z2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBjaGFs
bGVuZ2U6IGJ5dGVzCisgICAgKSAtPiBOb25lOgorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0
X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwgY2FwYWNp
dHk9UEFUSF9DSEFMTEVOR0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNf
bG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9Y2hhbGxlbmdlKQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF93cml0ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKAorICAgICAgICBzZWxmLCBi
dWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAgICkgLT4gTm9u
ZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuUEFUSF9SRVNQT05TRSwgY2FwYWNpdHk9UEFUSF9SRVNQT05TRV9GUkFNRV9DQVBB
Q0lUWQorICAgICAgICApCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGNoYWxsZW5nZSkKKworICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGF0aF9yZXNwb25zZV9mcmFtZShk
YXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGluZ19mcmFt
ZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHVpZHM6IExpc3Rb
aW50XSA9IFtdLCBjb21tZW50PSIiCisgICAgKToKKyAgICAgICAgYnVpbGRlci5zdGFydF9mcmFt
ZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUElORywKKyAgICAgICAgICAgIGNhcGFjaXR5
PVBJTkdfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX3Bpbmdf
ZGVsaXZlcnksCisgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHR1cGxlKHVpZHMpLCksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIlNlbmRpbmcg
UElORyVzIGluIHBhY2tldCAlZCIsCisgICAgICAgICAgICAiICglcykiICUgY29tbWVudCBpZiBj
b21tZW50IGVsc2UgIiIsCisgICAgICAgICAgICBidWlsZGVyLnBhY2tldF9udW1iZXIsCisgICAg
ICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZChzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF93
cml0ZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjog
UXVpY1BhY2tldEJ1aWxkZXIsIHNlcXVlbmNlX251bWJlcjogaW50CisgICAgKSAtPiBOb25lOgor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1l
VHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKKyAgICAgICAgICAgIGNhcGFjaXR5PVJFVElSRV9D
T05ORUNUSU9OX0lEX0NBUEFDSVRZLAorICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9yZXRp
cmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oc2Vx
dWVuY2VfbnVtYmVyLCksCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc2Vx
dWVuY2VfbnVtYmVyKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9m
cmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9y
ZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZXF1ZW5jZV9udW1iZXIpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgICAgIHNwYWNlOiBRdWljUGFja2V0U3Bh
Y2UsCisgICAgICAgIHN0cmVhbTogUXVpY1N0cmVhbSwKKyAgICAgICAgbWF4X29mZnNldDogaW50
LAorICAgICkgLT4gaW50OgorICAgICAgICAjIHRoZSBmcmFtZSBkYXRhIHNpemUgaXMgY29uc3Ry
YWluZWQgYnkgb3VyIHBlZXIncyBNQVhfREFUQSBhbmQKKyAgICAgICAgIyB0aGUgc3BhY2UgYXZh
aWxhYmxlIGluIHRoZSBjdXJyZW50IHBhY2tldAorICAgICAgICBmcmFtZV9vdmVyaGVhZCA9ICgK
KyAgICAgICAgICAgIDMKKyAgICAgICAgICAgICsgc2l6ZV91aW50X3ZhcihzdHJlYW0uc3RyZWFt
X2lkKQorICAgICAgICAgICAgKyAoc2l6ZV91aW50X3ZhcihzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCkgaWYgc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQgZWxzZSAwKQorICAgICAgICApCisgICAgICAg
IHByZXZpb3VzX3NlbmRfaGlnaGVzdCA9IHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgIGZy
YW1lID0gc3RyZWFtLmdldF9mcmFtZSgKKyAgICAgICAgICAgIGJ1aWxkZXIucmVtYWluaW5nX2Zs
aWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkLCBtYXhfb2Zmc2V0CisgICAgICAgICkKKworICAg
ICAgICBpZiBmcmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBRdWlj
RnJhbWVUeXBlLlNUUkVBTV9CQVNFIHwgMiAgIyBsZW5ndGgKKyAgICAgICAgICAgIGlmIGZyYW1l
Lm9mZnNldDoKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlIHw9IDQKKyAgICAgICAgICAgIGlm
IGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlIHw9IDEKKyAgICAgICAgICAg
IGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZSwK
KyAgICAgICAgICAgICAgICBjYXBhY2l0eT1mcmFtZV9vdmVyaGVhZCwKKyAgICAgICAgICAgICAg
ICBoYW5kbGVyPXN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5LAorICAgICAgICAgICAgICAgIGhhbmRs
ZXJfYXJncz0oZnJhbWUub2Zmc2V0LCBmcmFtZS5vZmZzZXQgKyBsZW4oZnJhbWUuZGF0YSkpLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVh
bV9pZCkKKyAgICAgICAgICAgIGlmIGZyYW1lLm9mZnNldDoKKyAgICAgICAgICAgICAgICBidWYu
cHVzaF91aW50X3ZhcihmcmFtZS5vZmZzZXQpCisgICAgICAgICAgICBidWYucHVzaF91aW50MTYo
bGVuKGZyYW1lLmRhdGEpIHwgMHg0MDAwKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZnJh
bWUuZGF0YSkKKworICAgICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIuZW5jb2RlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLCBz
dHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgKQorCisgICAgICAgICAgICByZXR1cm4gc3RyZWFtLl9zZW5kX2hpZ2hlc3QgLSBw
cmV2aW91c19zZW5kX2hpZ2hlc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAw
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbV9saW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTogUXVpY1BhY2tldFNwYWNlLCBzdHJlYW06IFF1aWNT
dHJlYW0KKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBNQVhfU1RS
RUFNX0RBVEEgaWYgbmVlZGVkLgorCisgICAgICAgIFRoZSBvbmx5IGNhc2Ugd2hlcmUgYHN0cmVh
bS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxgIGlzIHplcm8gaXMgZm9yCisgICAgICAgIGxvY2FsbHkg
Y3JlYXRlZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW1zLiBXZSBza2lwIHN1Y2ggc3RyZWFtcyB0byBh
dm9pZAorICAgICAgICBzcHVyaW91cyBsb2dnaW5nLgorICAgICAgICAiIiIKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbAorICAgICAgICAgICAg
YW5kIHN0cmVhbS5fcmVjdl9oaWdoZXN0ICogMiA+IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9j
YWwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwg
Kj0gMgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJT
dHJlYW0gJWQgbG9jYWwgbWF4X3N0cmVhbV9kYXRhIHJhaXNlZCB0byAlZCIsCisgICAgICAgICAg
ICAgICAgc3RyZWFtLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBzdHJlYW0ubWF4X3N0cmVh
bV9kYXRhX2xvY2FsLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBzdHJlYW0ubWF4X3N0cmVh
bV9kYXRhX2xvY2FsX3NlbnQgIT0gc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbDoKKyAgICAg
ICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5NQVhfU1RSRUFNX0RBVEEsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9TUFYX1NU
UkVBTV9EQVRBX0ZSQU1FX0NBUEFDSVRZLAorICAgICAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5f
b25fbWF4X3N0cmVhbV9kYXRhX2RlbGl2ZXJ5LAorICAgICAgICAgICAgICAgIGhhbmRsZXJfYXJn
cz0oc3RyZWFtLCksCisgICAgICAgICAgICApCisgICAgICAgICAgICBidWYucHVzaF91aW50X3Zh
cihzdHJlYW0uc3RyZWFtX2lkKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFt
Lm1heF9zdHJlYW1fZGF0YV9sb2NhbCkKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2Rh
dGFfbG9jYWxfc2VudCA9IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwKKworICAgICAgICAg
ICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX21heF9zdHJlYW1f
ZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW09c3RyZWFtLm1heF9z
dHJlYW1fZGF0YV9sb2NhbCwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfc3RyZWFtc19i
bG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwg
ZnJhbWVfdHlwZTogUXVpY0ZyYW1lVHlwZSwgbGltaXQ6IGludAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShmcmFtZV90eXBlLCBjYXBhY2l0eT1TVFJF
QU1TX0JMT0NLRURfQ0FQQUNJVFkpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxpbWl0KQor
CisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1zX2Jsb2NrZWRf
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGlzX3VuaWRpcmVjdGlvbmFsPWZyYW1lX3R5cGUg
PT0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAg
ICBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFjYjMwZWVkYThmMWM3
YzYwNmI5MDRiYTc3MjcxM2QzNTg3MzRiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQpAQCAtMCwwICsxLDE5NiBAQAoraW1wb3J0IGJp
bmFzY2lpCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwsIFR1cGxlCisKK2Zyb20gLi5fY3J5
cHRvIGltcG9ydCBBRUFELCBDcnlwdG9FcnJvciwgSGVhZGVyUHJvdGVjdGlvbgorZnJvbSAuLnRs
cyBpbXBvcnQgQ2lwaGVyU3VpdGUsIGNpcGhlcl9zdWl0ZV9oYXNoLCBoa2RmX2V4cGFuZF9sYWJl
bCwgaGtkZl9leHRyYWN0Citmcm9tIC5wYWNrZXQgaW1wb3J0IGRlY29kZV9wYWNrZXRfbnVtYmVy
LCBpc19sb25nX2hlYWRlcgorCitDSVBIRVJfU1VJVEVTID0geworICAgIENpcGhlclN1aXRlLkFF
U18xMjhfR0NNX1NIQTI1NjogKGIiYWVzLTEyOC1lY2IiLCBiImFlcy0xMjgtZ2NtIiksCisgICAg
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0OiAoYiJhZXMtMjU2LWVjYiIsIGIiYWVzLTI1
Ni1nY20iKSwKKyAgICBDaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IChiImNo
YWNoYTIwIiwgYiJjaGFjaGEyMC1wb2x5MTMwNSIpLAorfQorSU5JVElBTF9DSVBIRVJfU1VJVEUg
PSBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYKK0lOSVRJQUxfU0FMVCA9IGJpbmFzY2lp
LnVuaGV4bGlmeSgiYzNlZWY3MTJjNzJlYmI1YTExYTdkMjQzMmJiNDYzNjViZWY5ZjUwMiIpCitT
QU1QTEVfU0laRSA9IDE2CisKKworY2xhc3MgS2V5VW5hdmFpbGFibGVFcnJvcihDcnlwdG9FcnJv
cik6CisgICAgcGFzcworCisKK2RlZiBkZXJpdmVfa2V5X2l2X2hwKAorICAgIGNpcGhlcl9zdWl0
ZTogQ2lwaGVyU3VpdGUsIHNlY3JldDogYnl0ZXMKKykgLT4gVHVwbGVbYnl0ZXMsIGJ5dGVzLCBi
eXRlc106CisgICAgYWxnb3JpdGhtID0gY2lwaGVyX3N1aXRlX2hhc2goY2lwaGVyX3N1aXRlKQor
ICAgIGlmIGNpcGhlcl9zdWl0ZSBpbiBbCisgICAgICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NN
X1NIQTM4NCwKKyAgICAgICAgQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAor
ICAgIF06CisgICAgICAgIGtleV9zaXplID0gMzIKKyAgICBlbHNlOgorICAgICAgICBrZXlfc2l6
ZSA9IDE2CisgICAgcmV0dXJuICgKKyAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGht
LCBzZWNyZXQsIGIicXVpYyBrZXkiLCBiIiIsIGtleV9zaXplKSwKKyAgICAgICAgaGtkZl9leHBh
bmRfbGFiZWwoYWxnb3JpdGhtLCBzZWNyZXQsIGIicXVpYyBpdiIsIGIiIiwgMTIpLAorICAgICAg
ICBoa2RmX2V4cGFuZF9sYWJlbChhbGdvcml0aG0sIHNlY3JldCwgYiJxdWljIGhwIiwgYiIiLCBr
ZXlfc2l6ZSksCisgICAgKQorCisKK2NsYXNzIENyeXB0b0NvbnRleHQ6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGtleV9waGFzZTogaW50ID0gMCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFk
OiBPcHRpb25hbFtBRUFEXSA9IE5vbmUKKyAgICAgICAgc2VsZi5jaXBoZXJfc3VpdGU6IE9wdGlv
bmFsW0NpcGhlclN1aXRlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5ocDogT3B0aW9uYWxbSGVhZGVy
UHJvdGVjdGlvbl0gPSBOb25lCisgICAgICAgIHNlbGYua2V5X3BoYXNlID0ga2V5X3BoYXNlCisg
ICAgICAgIHNlbGYuc2VjcmV0OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYu
dmVyc2lvbjogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBkZWNyeXB0X3BhY2tldCgK
KyAgICAgICAgc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlwdGVkX29mZnNldDogaW50LCBleHBl
Y3RlZF9wYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgaW50
LCBib29sXToKKyAgICAgICAgaWYgc2VsZi5hZWFkIGlzIE5vbmU6CisgICAgICAgICAgICByYWlz
ZSBLZXlVbmF2YWlsYWJsZUVycm9yKCJEZWNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxlIikK
KworICAgICAgICAjIGhlYWRlciBwcm90ZWN0aW9uCisgICAgICAgIHBsYWluX2hlYWRlciwgcGFj
a2V0X251bWJlciA9IHNlbGYuaHAucmVtb3ZlKHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCkKKyAg
ICAgICAgZmlyc3RfYnl0ZSA9IHBsYWluX2hlYWRlclswXQorCisgICAgICAgICMgcGFja2V0IG51
bWJlcgorICAgICAgICBwbl9sZW5ndGggPSAoZmlyc3RfYnl0ZSAmIDB4MDMpICsgMQorICAgICAg
ICBwYWNrZXRfbnVtYmVyID0gZGVjb2RlX3BhY2tldF9udW1iZXIoCisgICAgICAgICAgICBwYWNr
ZXRfbnVtYmVyLCBwbl9sZW5ndGggKiA4LCBleHBlY3RlZF9wYWNrZXRfbnVtYmVyCisgICAgICAg
ICkKKworICAgICAgICAjIGRldGVjdCBrZXkgcGhhc2UgY2hhbmdlCisgICAgICAgIGNyeXB0byA9
IHNlbGYKKyAgICAgICAgaWYgbm90IGlzX2xvbmdfaGVhZGVyKGZpcnN0X2J5dGUpOgorICAgICAg
ICAgICAga2V5X3BoYXNlID0gKGZpcnN0X2J5dGUgJiA0KSA+PiAyCisgICAgICAgICAgICBpZiBr
ZXlfcGhhc2UgIT0gc2VsZi5rZXlfcGhhc2U6CisgICAgICAgICAgICAgICAgY3J5cHRvID0gbmV4
dF9rZXlfcGhhc2Uoc2VsZikKKworICAgICAgICAjIHBheWxvYWQgcHJvdGVjdGlvbgorICAgICAg
ICBwYXlsb2FkID0gY3J5cHRvLmFlYWQuZGVjcnlwdCgKKyAgICAgICAgICAgIHBhY2tldFtsZW4o
cGxhaW5faGVhZGVyKSA6XSwgcGxhaW5faGVhZGVyLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICkK
KworICAgICAgICByZXR1cm4gcGxhaW5faGVhZGVyLCBwYXlsb2FkLCBwYWNrZXRfbnVtYmVyLCBj
cnlwdG8gIT0gc2VsZgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBw
bGFpbl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjog
aW50CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgYXNzZXJ0IHNlbGYuaXNfdmFsaWQoKSwgIkVu
Y3J5cHRpb24ga2V5IGlzIG5vdCBhdmFpbGFibGUiCisKKyAgICAgICAgIyBwYXlsb2FkIHByb3Rl
Y3Rpb24KKyAgICAgICAgcHJvdGVjdGVkX3BheWxvYWQgPSBzZWxmLmFlYWQuZW5jcnlwdCgKKyAg
ICAgICAgICAgIHBsYWluX3BheWxvYWQsIHBsYWluX2hlYWRlciwgcGFja2V0X251bWJlcgorICAg
ICAgICApCisKKyAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlvbgorICAgICAgICByZXR1cm4gc2Vs
Zi5ocC5hcHBseShwbGFpbl9oZWFkZXIsIHByb3RlY3RlZF9wYXlsb2FkKQorCisgICAgZGVmIGlz
X3ZhbGlkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxmLmFlYWQgaXMgbm90IE5v
bmUKKworICAgIGRlZiBzZXR1cChzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNy
ZXQ6IGJ5dGVzLCB2ZXJzaW9uOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIGhwX2NpcGhlcl9uYW1l
LCBhZWFkX2NpcGhlcl9uYW1lID0gQ0lQSEVSX1NVSVRFU1tjaXBoZXJfc3VpdGVdCisKKyAgICAg
ICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hwKGNpcGhlcl9zdWl0ZSwgc2VjcmV0KQor
ICAgICAgICBzZWxmLmFlYWQgPSBBRUFEKGFlYWRfY2lwaGVyX25hbWUsIGtleSwgaXYpCisgICAg
ICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gY2lwaGVyX3N1aXRlCisgICAgICAgIHNlbGYuaHAgPSBI
ZWFkZXJQcm90ZWN0aW9uKGhwX2NpcGhlcl9uYW1lLCBocCkKKyAgICAgICAgc2VsZi5zZWNyZXQg
PSBzZWNyZXQKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgorCisgICAgZGVmIHRlYXJk
b3duKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZCA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5jaXBoZXJfc3VpdGUgPSBOb25lCisgICAgICAgIHNlbGYuaHAgPSBOb25lCisgICAgICAgIHNl
bGYuc2VjcmV0ID0gTm9uZQorCisKK2RlZiBhcHBseV9rZXlfcGhhc2Uoc2VsZjogQ3J5cHRvQ29u
dGV4dCwgY3J5cHRvOiBDcnlwdG9Db250ZXh0KSAtPiBOb25lOgorICAgIHNlbGYuYWVhZCA9IGNy
eXB0by5hZWFkCisgICAgc2VsZi5rZXlfcGhhc2UgPSBjcnlwdG8ua2V5X3BoYXNlCisgICAgc2Vs
Zi5zZWNyZXQgPSBjcnlwdG8uc2VjcmV0CisKKworZGVmIG5leHRfa2V5X3BoYXNlKHNlbGY6IENy
eXB0b0NvbnRleHQpIC0+IENyeXB0b0NvbnRleHQ6CisgICAgYWxnb3JpdGhtID0gY2lwaGVyX3N1
aXRlX2hhc2goc2VsZi5jaXBoZXJfc3VpdGUpCisKKyAgICBjcnlwdG8gPSBDcnlwdG9Db250ZXh0
KGtleV9waGFzZT1pbnQobm90IHNlbGYua2V5X3BoYXNlKSkKKyAgICBjcnlwdG8uc2V0dXAoCisg
ICAgICAgIGNpcGhlcl9zdWl0ZT1zZWxmLmNpcGhlcl9zdWl0ZSwKKyAgICAgICAgc2VjcmV0PWhr
ZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtLCBzZWxmLnNlY3JldCwgYiJx
dWljIGt1IiwgYiIiLCBhbGdvcml0aG0uZGlnZXN0X3NpemUKKyAgICAgICAgKSwKKyAgICAgICAg
dmVyc2lvbj1zZWxmLnZlcnNpb24sCisgICAgKQorICAgIHJldHVybiBjcnlwdG8KKworCitjbGFz
cyBDcnlwdG9QYWlyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmFlYWRfdGFnX3NpemUgPSAxNgorICAgICAgICBzZWxmLnJlY3YgPSBDcnlwdG9Db250ZXh0
KCkKKyAgICAgICAgc2VsZi5zZW5kID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYuX3Vw
ZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKKworICAgIGRlZiBkZWNyeXB0X3BhY2tldCgKKyAg
ICAgICAgc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlwdGVkX29mZnNldDogaW50LCBleHBlY3Rl
ZF9wYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgaW50XToK
KyAgICAgICAgcGxhaW5faGVhZGVyLCBwYXlsb2FkLCBwYWNrZXRfbnVtYmVyLCB1cGRhdGVfa2V5
ID0gc2VsZi5yZWN2LmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgcGFja2V0LCBlbmNyeXB0
ZWRfb2Zmc2V0LCBleHBlY3RlZF9wYWNrZXRfbnVtYmVyCisgICAgICAgICkKKyAgICAgICAgaWYg
dXBkYXRlX2tleToKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXkoKQorICAgICAgICByZXR1
cm4gcGxhaW5faGVhZGVyLCBwYXlsb2FkLCBwYWNrZXRfbnVtYmVyCisKKyAgICBkZWYgZW5jcnlw
dF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHBsYWluX3BheWxv
YWQ6IGJ5dGVzLCBwYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IGJ5dGVzOgorICAgICAgICBp
ZiBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9r
ZXkoKQorICAgICAgICByZXR1cm4gc2VsZi5zZW5kLmVuY3J5cHRfcGFja2V0KHBsYWluX2hlYWRl
ciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlcikKKworICAgIGRlZiBzZXR1cF9pbml0aWFs
KHNlbGYsIGNpZDogYnl0ZXMsIGlzX2NsaWVudDogYm9vbCwgdmVyc2lvbjogaW50KSAtPiBOb25l
OgorICAgICAgICBpZiBpc19jbGllbnQ6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xh
YmVsID0gYiJzZXJ2ZXIgaW4iLCBiImNsaWVudCBpbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJlY3ZfbGFiZWwsIHNlbmRfbGFiZWwgPSBiImNsaWVudCBpbiIsIGIic2VydmVyIGluIgor
CisgICAgICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKElOSVRJQUxfQ0lQSEVSX1NV
SVRFKQorICAgICAgICBpbml0aWFsX3NlY3JldCA9IGhrZGZfZXh0cmFjdChhbGdvcml0aG0sIElO
SVRJQUxfU0FMVCwgY2lkKQorICAgICAgICBzZWxmLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICBj
aXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9aGtk
Zl9leHBhbmRfbGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtLCBpbml0aWFsX3NlY3Jl
dCwgcmVjdl9sYWJlbCwgYiIiLCBhbGdvcml0aG0uZGlnZXN0X3NpemUKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5z
ZW5kLnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRF
LAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgICAg
IGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHNlbmRfbGFiZWwsIGIiIiwgYWxnb3JpdGhtLmRp
Z2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9uLAor
ICAgICAgICApCisKKyAgICBkZWYgdGVhcmRvd24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5yZWN2LnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5zZW5kLnRlYXJkb3duKCkKKworICAgIGRl
ZiB1cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVx
dWVzdGVkID0gVHJ1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGtleV9waGFzZShzZWxmKSAt
PiBpbnQ6CisgICAgICAgIGlmIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkOgorICAgICAgICAg
ICAgcmV0dXJuIGludChub3Qgc2VsZi5yZWN2LmtleV9waGFzZSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJlY3Yua2V5X3BoYXNlCisKKyAgICBkZWYgX3VwZGF0ZV9r
ZXkoc2VsZikgLT4gTm9uZToKKyAgICAgICAgYXBwbHlfa2V5X3BoYXNlKHNlbGYucmVjdiwgbmV4
dF9rZXlfcGhhc2Uoc2VsZi5yZWN2KSkKKyAgICAgICAgYXBwbHlfa2V5X3BoYXNlKHNlbGYuc2Vu
ZCwgbmV4dF9rZXlfcGhhc2Uoc2VsZi5zZW5kKSkKKyAgICAgICAgc2VsZi5fdXBkYXRlX2tleV9y
ZXF1ZXN0ZWQgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvZXZlbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvZXZlbnRzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0MzA2OTM5MzZjMTg4MTZhZTExODMyNmQyYTIyNTEyOTUyNDVlMzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9ldmVudHMucHkKQEAg
LTAsMCArMSwxMTIgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworZnJvbSB0
eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKKworY2xhc3MgUXVpY0V2ZW50OgorICAgICIiIgorICAg
IEJhc2UgY2xhc3MgZm9yIFFVSUMgZXZlbnRzLgorICAgICIiIgorCisgICAgcGFzcworCisKK0Bk
YXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25JZElzc3VlZChRdWljRXZlbnQpOgorICAgIGNvbm5l
Y3Rpb25faWQ6IGJ5dGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgQ29ubmVjdGlvbklkUmV0aXJl
ZChRdWljRXZlbnQpOgorICAgIGNvbm5lY3Rpb25faWQ6IGJ5dGVzCisKKworQGRhdGFjbGFzcwor
Y2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUg
Q29ubmVjdGlvblRlcm1pbmF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgUVVJQyBjb25uZWN0
aW9uIGlzIHRlcm1pbmF0ZWQuCisgICAgIiIiCisKKyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAi
VGhlIGVycm9yIGNvZGUgd2hpY2ggd2FzIHNwZWNpZmllZCB3aGVuIGNsb3NpbmcgdGhlIGNvbm5l
Y3Rpb24uIgorCisgICAgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XQorICAgICJUaGUgZnJhbWUg
dHlwZSB3aGljaCBjYXVzZWQgdGhlIGNvbm5lY3Rpb24gdG8gYmUgY2xvc2VkLCBvciBgTm9uZWAu
IgorCisgICAgcmVhc29uX3BocmFzZTogc3RyCisgICAgIlRoZSBodW1hbi1yZWFkYWJsZSByZWFz
b24gZm9yIHdoaWNoIHRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIgorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIERhdGFncmFtRnJhbWVSZWNlaXZlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRo
ZSBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBhIERBVEFHUkFNIGZy
YW1lIGlzIHJlY2VpdmVkLgorICAgICIiIgorCisgICAgZGF0YTogYnl0ZXMKKyAgICAiVGhlIGRh
dGEgd2hpY2ggd2FzIHJlY2VpdmVkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBIYW5kc2hha2VD
b21wbGV0ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgSGFuZHNoYWtlQ29tcGxldGVk
IGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIFRMUyBoYW5kc2hha2UgY29tcGxldGVzLgorICAgICIi
IgorCisgICAgYWxwbl9wcm90b2NvbDogT3B0aW9uYWxbc3RyXQorICAgICJUaGUgcHJvdG9jb2wg
d2hpY2ggd2FzIG5lZ290aWF0ZWQgdXNpbmcgQUxQTiwgb3IgYE5vbmVgLiIKKworICAgIGVhcmx5
X2RhdGFfYWNjZXB0ZWQ6IGJvb2wKKyAgICAiV2hldGhlciBlYXJseSAoMC1SVFQpIGRhdGEgd2Fz
IGFjY2VwdGVkIGJ5IHRoZSByZW1vdGUgcGVlci4iCisKKyAgICBzZXNzaW9uX3Jlc3VtZWQ6IGJv
b2wKKyAgICAiV2hldGhlciBhIFRMUyBzZXNzaW9uIHdhcyByZXN1bWVkLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBQaW5nQWNrbm93bGVkZ2VkKFF1aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhl
IFBpbmdBY2tub3dsZWRnZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBhIFBJTkcgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkLgorICAgICIiIgorCisgICAgdWlkOiBpbnQKKyAgICAiVGhlIHVuaXF1ZSBJRCBv
ZiB0aGUgUElORy4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUHJvdG9jb2xOZWdvdGlhdGVkKFF1
aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFByb3RvY29sTmVnb3RpYXRlZCBldmVudCBpcyBm
aXJlZCB3aGVuIEFMUE4gbmVnb3RpYXRpb24gY29tcGxldGVzLgorICAgICIiIgorCisgICAgYWxw
bl9wcm90b2NvbDogT3B0aW9uYWxbc3RyXQorICAgICJUaGUgcHJvdG9jb2wgd2hpY2ggd2FzIG5l
Z290aWF0ZWQgdXNpbmcgQUxQTiwgb3IgYE5vbmVgLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBT
dHJlYW1EYXRhUmVjZWl2ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgU3RyZWFtRGF0
YVJlY2VpdmVkIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYQor
ICAgIHN0cmVhbS4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdo
aWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBlbmRfc3RyZWFtOiBib29sCisgICAgIldoZXRoZXIg
dGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHN0cmVhbV9pZDog
aW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3RyZWFtIHRoZSBkYXRhIHdhcyByZWNlaXZlZCBmb3Iu
IgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFN0cmVhbVJlc2V0KFF1aWNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIFN0cmVhbVJlc2V0IGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHJlbW90ZSBwZWVy
IHJlc2V0cyBhIHN0cmVhbS4KKyAgICAiIiIKKworICAgIGVycm9yX2NvZGU6IGludAorICAgICJU
aGUgZXJyb3IgY29kZSB0aGF0IHRyaWdnZXJlZCB0aGUgcmVzZXQuIgorCisgICAgc3RyZWFtX2lk
OiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhhdCB3YXMgcmVzZXQuIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OTc1YmQ1OTJlMWMw
ODc4MjVjZDk1YzYwM2M2OTA2YTc0M2RiODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dnZXIucHkKQEAgLTAsMCArMSwyNjYgQEAKK2ltcG9ydCBi
aW5hc2NpaQoraW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9t
IHR5cGluZyBpbXBvcnQgQW55LCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisK
K2Zyb20gLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQ
QUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX01BU0ssCisgICAgUEFDS0VUX1RZ
UEVfT05FX1JUVCwKKyAgICBQQUNLRVRfVFlQRV9SRVRSWSwKKyAgICBQQUNLRVRfVFlQRV9aRVJP
X1JUVCwKKyAgICBRdWljU3RyZWFtRnJhbWUsCisgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMs
CispCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFDS0VUX1RZUEVfTkFNRVMg
PSB7CisgICAgUEFDS0VUX1RZUEVfSU5JVElBTDogImluaXRpYWwiLAorICAgIFBBQ0tFVF9UWVBF
X0hBTkRTSEFLRTogImhhbmRzaGFrZSIsCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQ6ICIwUlRU
IiwKKyAgICBQQUNLRVRfVFlQRV9PTkVfUlRUOiAiMVJUVCIsCisgICAgUEFDS0VUX1RZUEVfUkVU
Ulk6ICJyZXRyeSIsCit9CisKKworZGVmIGhleGR1bXAoZGF0YTogYnl0ZXMpIC0+IHN0cjoKKyAg
ICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeShkYXRhKS5kZWNvZGUoImFzY2lpIikKKworCitjbGFz
cyBRdWljTG9nZ2VyVHJhY2U6CisgICAgIiIiCisgICAgQSBRVUlDIGV2ZW50IHRyYWNlLgorCisg
ICAgRXZlbnRzIGFyZSBsb2dnZWQgaW4gdGhlIGZvcm1hdCBkZWZpbmVkIGJ5IHFsb2cgZHJhZnQt
MDEuCisKKyAgICBTZWU6IGh0dHBzOi8vcXVpY2xvZy5naXRodWIuaW8vaW50ZXJuZXQtZHJhZnRz
L2RyYWZ0LW1hcngtcWxvZy1ldmVudC1kZWZpbml0aW9ucy1xdWljLWgzLmh0bWwKKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRl
cykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fb2RjaWQgPSBvZGNpZAorICAgICAgICBzZWxmLl9l
dmVudHM6IERlcXVlW1R1cGxlW2Zsb2F0LCBzdHIsIHN0ciwgRGljdFtzdHIsIEFueV1dXSA9IGRl
cXVlKCkKKyAgICAgICAgc2VsZi5fdmFudGFnZV9wb2ludCA9IHsKKyAgICAgICAgICAgICJuYW1l
IjogImFpb3F1aWMiLAorICAgICAgICAgICAgInR5cGUiOiAiY2xpZW50IiBpZiBpc19jbGllbnQg
ZWxzZSAic2VydmVyIiwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9hY2tfZnJhbWUoc2Vs
ZiwgcmFuZ2VzOiBSYW5nZVNldCwgZGVsYXk6IGZsb2F0KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImFja19kZWxheSI6IHN0cihzZWxmLmVuY29kZV90aW1lKGRlbGF5
KSksCisgICAgICAgICAgICAiYWNrZWRfcmFuZ2VzIjogW1tzdHIoeC5zdGFydCksIHN0cih4LnN0
b3AgLSAxKV0gZm9yIHggaW4gcmFuZ2VzXSwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogImFj
ayIsCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgK
KyAgICAgICAgc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRd
LCByZWFzb25fcGhyYXNlOiBzdHIKKyAgICApIC0+IERpY3Q6CisgICAgICAgIGF0dHJzID0gewor
ICAgICAgICAgICAgImVycm9yX2NvZGUiOiBlcnJvcl9jb2RlLAorICAgICAgICAgICAgImVycm9y
X3NwYWNlIjogImFwcGxpY2F0aW9uIiBpZiBmcmFtZV90eXBlIGlzIE5vbmUgZWxzZSAidHJhbnNw
b3J0IiwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogImNvbm5lY3Rpb25fY2xvc2UiLAorICAg
ICAgICAgICAgInJhd19lcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJyZWFz
b24iOiByZWFzb25fcGhyYXNlLAorICAgICAgICB9CisgICAgICAgIGlmIGZyYW1lX3R5cGUgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBhdHRyc1sidHJpZ2dlcl9mcmFtZV90eXBlIl0gPSBmcmFt
ZV90eXBlCisKKyAgICAgICAgcmV0dXJuIGF0dHJzCisKKyAgICBkZWYgZW5jb2RlX2NyeXB0b19m
cmFtZShzZWxmLCBmcmFtZTogUXVpY1N0cmVhbUZyYW1lKSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAiY3J5cHRvIiwKKyAgICAgICAgICAgICJs
ZW5ndGgiOiBsZW4oZnJhbWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1l
Lm9mZnNldCksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1l
KHNlbGYsIGxpbWl0OiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUi
OiAiZGF0YV9ibG9ja2VkIiwgImxpbWl0Ijogc3RyKGxpbWl0KX0KKworICAgIGRlZiBlbmNvZGVf
ZGF0YWdyYW1fZnJhbWUoc2VsZiwgbGVuZ3RoOiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVy
biB7ImZyYW1lX3R5cGUiOiAiZGF0YWdyYW0iLCAibGVuZ3RoIjogbGVuZ3RofQorCisgICAgZGVm
IGVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFtZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geyJmcmFtZV90eXBlIjogImhhbmRzaGFrZV9kb25lIn0KKworICAgIGRlZiBlbmNvZGVfbWF4
X2RhdGFfZnJhbWUoc2VsZiwgbWF4aW11bTogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4g
eyJmcmFtZV90eXBlIjogIm1heF9kYXRhIiwgIm1heGltdW0iOiBzdHIobWF4aW11bSl9CisKKyAg
ICBkZWYgZW5jb2RlX21heF9zdHJlYW1fZGF0YV9mcmFtZShzZWxmLCBtYXhpbXVtOiBpbnQsIHN0
cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZy
YW1lX3R5cGUiOiAibWF4X3N0cmVhbV9kYXRhIiwKKyAgICAgICAgICAgICJtYXhpbXVtIjogc3Ry
KG1heGltdW0pLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAg
ICAgICB9CisKKyAgICBkZWYgZW5jb2RlX21heF9zdHJlYW1zX2ZyYW1lKHNlbGYsIGlzX3VuaWRp
cmVjdGlvbmFsOiBib29sLCBtYXhpbXVtOiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJtYXhfc3RyZWFtcyIsCisgICAgICAgICAgICAi
bWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAgICAgICAgICJzdHJlYW1fdHlwZSI6ICJ1bmlk
aXJlY3Rpb25hbCIgaWYgaXNfdW5pZGlyZWN0aW9uYWwgZWxzZSAiYmlkaXJlY3Rpb25hbCIsCisg
ICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAg
ICAgIHNlbGYsCisgICAgICAgIGNvbm5lY3Rpb25faWQ6IGJ5dGVzLAorICAgICAgICByZXRpcmVf
cHJpb3JfdG86IGludCwKKyAgICAgICAgc2VxdWVuY2VfbnVtYmVyOiBpbnQsCisgICAgICAgIHN0
YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMsCisgICAgKSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImNvbm5lY3Rpb25faWQiOiBoZXhkdW1wKGNvbm5lY3Rpb25faWQp
LAorICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAibmV3X2Nvbm5lY3Rpb25faWQiLAorICAgICAg
ICAgICAgImxlbmd0aCI6IGxlbihjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJyZXNldF90
b2tlbiI6IGhleGR1bXAoc3RhdGVsZXNzX3Jlc2V0X3Rva2VuKSwKKyAgICAgICAgICAgICJyZXRp
cmVfcHJpb3JfdG8iOiBzdHIocmV0aXJlX3ByaW9yX3RvKSwKKyAgICAgICAgICAgICJzZXF1ZW5j
ZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVu
Y29kZV9uZXdfdG9rZW5fZnJhbWUoc2VsZiwgdG9rZW46IGJ5dGVzKSAtPiBEaWN0OgorICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAibmV3X3Rva2VuIiwKKyAgICAg
ICAgICAgICJsZW5ndGgiOiBsZW4odG9rZW4pLAorICAgICAgICAgICAgInRva2VuIjogaGV4ZHVt
cCh0b2tlbiksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfcGFkZGluZ19mcmFtZShzZWxm
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBhZGRpbmcifQorCisg
ICAgZGVmIGVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShzZWxmLCBkYXRhOiBieXRlcykgLT4g
RGljdDoKKyAgICAgICAgcmV0dXJuIHsiZGF0YSI6IGhleGR1bXAoZGF0YSksICJmcmFtZV90eXBl
IjogInBhdGhfY2hhbGxlbmdlIn0KKworICAgIGRlZiBlbmNvZGVfcGF0aF9yZXNwb25zZV9mcmFt
ZShzZWxmLCBkYXRhOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZGF0YSI6IGhl
eGR1bXAoZGF0YSksICJmcmFtZV90eXBlIjogInBhdGhfcmVzcG9uc2UifQorCisgICAgZGVmIGVu
Y29kZV9waW5nX2ZyYW1lKHNlbGYpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImZyYW1lX3R5
cGUiOiAicGluZyJ9CisKKyAgICBkZWYgZW5jb2RlX3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgc2VsZiwgZXJyb3JfY29kZTogaW50LCBmaW5hbF9zaXplOiBpbnQsIHN0cmVhbV9pZDogaW50
CisgICAgKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImVycm9yX2Nv
ZGUiOiBlcnJvcl9jb2RlLAorICAgICAgICAgICAgImZpbmFsX3NpemUiOiBzdHIoZmluYWxfc2l6
ZSksCisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJyZXNldF9zdHJlYW0iLAorICAgICAgICAg
ICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5j
b2RlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKHNlbGYsIHNlcXVlbmNlX251bWJlcjogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAi
cmV0aXJlX2Nvbm5lY3Rpb25faWQiLAorICAgICAgICAgICAgInNlcXVlbmNlX251bWJlciI6IHN0
cihzZXF1ZW5jZV9udW1iZXIpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0cmVhbV9k
YXRhX2Jsb2NrZWRfZnJhbWUoc2VsZiwgbGltaXQ6IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IERp
Y3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJzdHJlYW1f
ZGF0YV9ibG9ja2VkIiwKKyAgICAgICAgICAgICJsaW1pdCI6IHN0cihsaW1pdCksCisgICAgICAg
ICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRlZiBl
bmNvZGVfc3RvcF9zZW5kaW5nX2ZyYW1lKHNlbGYsIGVycm9yX2NvZGU6IGludCwgc3RyZWFtX2lk
OiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJzdG9wX3NlbmRpbmciLAorICAgICAgICAgICAgImVycm9yX2NvZGUiOiBlcnJvcl9jb2Rl
LAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgICAgICB9CisK
KyAgICBkZWYgZW5jb2RlX3N0cmVhbV9mcmFtZShzZWxmLCBmcmFtZTogUXVpY1N0cmVhbUZyYW1l
LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICJmaW4iOiBmcmFtZS5maW4sCisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJzdHJlYW0iLAor
ICAgICAgICAgICAgImxlbmd0aCI6IGxlbihmcmFtZS5kYXRhKSwKKyAgICAgICAgICAgICJvZmZz
ZXQiOiBzdHIoZnJhbWUub2Zmc2V0KSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3Ry
ZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1zX2Jsb2NrZWRfZnJh
bWUoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wsIGxpbWl0OiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJzdHJlYW1zX2Jsb2Nr
ZWQiLAorICAgICAgICAgICAgImxpbWl0Ijogc3RyKGxpbWl0KSwKKyAgICAgICAgICAgICJzdHJl
YW1fdHlwZSI6ICJ1bmlkaXJlY3Rpb25hbCIgaWYgaXNfdW5pZGlyZWN0aW9uYWwgZWxzZSAiYmlk
aXJlY3Rpb25hbCIsCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfdGltZShzZWxmLCBzZWNv
bmRzOiBmbG9hdCkgLT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgQ29udmVydCBhIHRpbWUg
dG8gaW50ZWdlciBtaWNyb3NlY29uZHMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaW50
KHNlY29uZHMgKiAxMDAwMDAwKQorCisgICAgZGVmIGVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVy
cygKKyAgICAgICAgc2VsZiwgb3duZXI6IHN0ciwgcGFyYW1ldGVyczogUXVpY1RyYW5zcG9ydFBh
cmFtZXRlcnMKKyAgICApIC0+IERpY3Rbc3RyLCBBbnldOgorICAgICAgICBkYXRhOiBEaWN0W3N0
ciwgQW55XSA9IHsib3duZXIiOiBvd25lcn0KKyAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFt
X3ZhbHVlIGluIHBhcmFtZXRlcnMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UocGFyYW1fdmFsdWUsIGJvb2wpOgorICAgICAgICAgICAgICAgIGRhdGFbcGFyYW1f
bmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcmFtX3Zh
bHVlLCBieXRlcyk6CisgICAgICAgICAgICAgICAgZGF0YVtwYXJhbV9uYW1lXSA9IGhleGR1bXAo
cGFyYW1fdmFsdWUpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGFyYW1fdmFsdWUsIGlu
dCk6CisgICAgICAgICAgICAgICAgZGF0YVtwYXJhbV9uYW1lXSA9IHBhcmFtX3ZhbHVlCisgICAg
ICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgbG9nX2V2ZW50KHNlbGYsICosIGNhdGVnb3J5OiBz
dHIsIGV2ZW50OiBzdHIsIGRhdGE6IERpY3QpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2V2ZW50
cy5hcHBlbmQoKHRpbWUudGltZSgpLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEpKQorCisgICAgZGVm
IHBhY2tldF90eXBlKHNlbGYsIHBhY2tldF90eXBlOiBpbnQpIC0+IHN0cjoKKyAgICAgICAgcmV0
dXJuIFBBQ0tFVF9UWVBFX05BTUVTLmdldChwYWNrZXRfdHlwZSAmIFBBQ0tFVF9UWVBFX01BU0ss
ICIxUlRUIikKKworICAgIGRlZiB0b19kaWN0KHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRoZSB0cmFjZSBhcyBhIGRpY3Rpb25hcnkgd2hpY2gg
Y2FuIGJlIHdyaXR0ZW4gYXMgSlNPTi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2V2
ZW50czoKKyAgICAgICAgICAgIHJlZmVyZW5jZV90aW1lID0gc2VsZi5fZXZlbnRzWzBdWzBdCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWZlcmVuY2VfdGltZSA9IDAuMAorICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24iOiB7InRpbWVfdW5pdHMiOiAidXMi
fSwKKyAgICAgICAgICAgICJjb21tb25fZmllbGRzIjogeworICAgICAgICAgICAgICAgICJPRENJ
RCI6IGhleGR1bXAoc2VsZi5fb2RjaWQpLAorICAgICAgICAgICAgICAgICJyZWZlcmVuY2VfdGlt
ZSI6IHN0cihzZWxmLmVuY29kZV90aW1lKHJlZmVyZW5jZV90aW1lKSksCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgImV2ZW50X2ZpZWxkcyI6IFsicmVsYXRpdmVfdGltZSIsICJjYXRlZ29y
eSIsICJldmVudF90eXBlIiwgImRhdGEiXSwKKyAgICAgICAgICAgICJldmVudHMiOiBsaXN0KAor
ICAgICAgICAgICAgICAgIG1hcCgKKyAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGV2ZW50OiAo
CisgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5lbmNvZGVfdGltZShldmVudFswXSAt
IHJlZmVyZW5jZV90aW1lKSksCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFsxXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRbM10sCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX2V2ZW50cywKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgInZhbnRhZ2VfcG9pbnQiOiBzZWxmLl92YW50YWdlX3BvaW50LAorICAgICAgICB9CisKKwor
Y2xhc3MgUXVpY0xvZ2dlcjoKKyAgICAiIiIKKyAgICBBIFFVSUMgZXZlbnQgbG9nZ2VyLgorCisg
ICAgU2VydmVzIGFzIGEgY29udGFpbmVyIGZvciB0cmFjZXMgaW4gdGhlIGZvcm1hdCBkZWZpbmVk
IGJ5IHFsb2cgZHJhZnQtMDEuCisKKyAgICBTZWU6IGh0dHBzOi8vcXVpY2xvZy5naXRodWIuaW8v
aW50ZXJuZXQtZHJhZnRzL2RyYWZ0LW1hcngtcWxvZy1tYWluLXNjaGVtYS5odG1sCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhY2Vz
OiBMaXN0W1F1aWNMb2dnZXJUcmFjZV0gPSBbXQorCisgICAgZGVmIHN0YXJ0X3RyYWNlKHNlbGYs
IGlzX2NsaWVudDogYm9vbCwgb2RjaWQ6IGJ5dGVzKSAtPiBRdWljTG9nZ2VyVHJhY2U6CisgICAg
ICAgIHRyYWNlID0gUXVpY0xvZ2dlclRyYWNlKGlzX2NsaWVudD1pc19jbGllbnQsIG9kY2lkPW9k
Y2lkKQorICAgICAgICBzZWxmLl90cmFjZXMuYXBwZW5kKHRyYWNlKQorICAgICAgICByZXR1cm4g
dHJhY2UKKworICAgIGRlZiBlbmRfdHJhY2Uoc2VsZiwgdHJhY2U6IFF1aWNMb2dnZXJUcmFjZSkg
LT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHRyYWNlIGluIHNlbGYuX3RyYWNlcywgIlF1aWNMb2dn
ZXJUcmFjZSBkb2VzIG5vdCBiZWxvbmcgdG8gUXVpY0xvZ2dlciIKKworICAgIGRlZiB0b19kaWN0
KHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRo
ZSB0cmFjZXMgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCisg
ICAgICAgICIiIgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgInFsb2dfdmVyc2lvbiI6
ICJkcmFmdC0wMSIsCisgICAgICAgICAgICAidHJhY2VzIjogW3RyYWNlLnRvX2RpY3QoKSBmb3Ig
dHJhY2UgaW4gc2VsZi5fdHJhY2VzXSwKKyAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvcGFja2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OTQ0NTk5MDg1ZGUwZGQ4ZGM2YTliZmUzYmNh
NmFiYmEzNjBiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
cXVpYy9wYWNrZXQucHkKQEAgLTAsMCArMSw1MDggQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0
IGlwYWRkcmVzcworaW1wb3J0IG9zCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MK
K2Zyb20gZW51bSBpbXBvcnQgSW50RW51bQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlv
bmFsLCBUdXBsZQorCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5jaXBoZXJz
LmFlYWQgaW1wb3J0IEFFU0dDTQorCitmcm9tIC4uYnVmZmVyIGltcG9ydCBCdWZmZXIKK2Zyb20g
Li50bHMgaW1wb3J0IHB1bGxfYmxvY2ssIHB1c2hfYmxvY2sKK2Zyb20gLnJhbmdlc2V0IGltcG9y
dCBSYW5nZVNldAorCitQQUNLRVRfTE9OR19IRUFERVIgPSAweDgwCitQQUNLRVRfRklYRURfQklU
ID0gMHg0MAorUEFDS0VUX1NQSU5fQklUID0gMHgyMAorCitQQUNLRVRfVFlQRV9JTklUSUFMID0g
UEFDS0VUX0xPTkdfSEVBREVSIHwgUEFDS0VUX0ZJWEVEX0JJVCB8IDB4MDAKK1BBQ0tFVF9UWVBF
X1pFUk9fUlRUID0gUEFDS0VUX0xPTkdfSEVBREVSIHwgUEFDS0VUX0ZJWEVEX0JJVCB8IDB4MTAK
K1BBQ0tFVF9UWVBFX0hBTkRTSEFLRSA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBBQ0tFVF9GSVhF
RF9CSVQgfCAweDIwCitQQUNLRVRfVFlQRV9SRVRSWSA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBB
Q0tFVF9GSVhFRF9CSVQgfCAweDMwCitQQUNLRVRfVFlQRV9PTkVfUlRUID0gUEFDS0VUX0ZJWEVE
X0JJVAorUEFDS0VUX1RZUEVfTUFTSyA9IDB4RjAKKworQ09OTkVDVElPTl9JRF9NQVhfU0laRSA9
IDIwCitQQUNLRVRfTlVNQkVSX01BWF9TSVpFID0gNAorUkVUUllfQUVBRF9LRVkgPSBiaW5hc2Np
aS51bmhleGxpZnkoIjRkMzJlY2RiMmEyMTMzYzg0MWU0MDQzZGYyN2Q0NDMwIikKK1JFVFJZX0FF
QURfTk9OQ0UgPSBiaW5hc2NpaS51bmhleGxpZnkoIjRkMTYxMWQwNTUxM2E1NTJjNTg3ZDU3NSIp
CitSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUgPSAxNgorCisKK2NsYXNzIFF1aWNFcnJvckNvZGUo
SW50RW51bSk6CisgICAgTk9fRVJST1IgPSAweDAKKyAgICBJTlRFUk5BTF9FUlJPUiA9IDB4MQor
ICAgIFNFUlZFUl9CVVNZID0gMHgyCisgICAgRkxPV19DT05UUk9MX0VSUk9SID0gMHgzCisgICAg
U1RSRUFNX0xJTUlUX0VSUk9SID0gMHg0CisgICAgU1RSRUFNX1NUQVRFX0VSUk9SID0gMHg1Cisg
ICAgRklOQUxfU0laRV9FUlJPUiA9IDB4NgorICAgIEZSQU1FX0VOQ09ESU5HX0VSUk9SID0gMHg3
CisgICAgVFJBTlNQT1JUX1BBUkFNRVRFUl9FUlJPUiA9IDB4OAorICAgIENPTk5FQ1RJT05fSURf
TElNSVRfRVJST1IgPSAweDkKKyAgICBQUk9UT0NPTF9WSU9MQVRJT04gPSAweEEKKyAgICBJTlZB
TElEX1RPS0VOID0gMHhCCisgICAgQ1JZUFRPX0JVRkZFUl9FWENFRURFRCA9IDB4RAorICAgIENS
WVBUT19FUlJPUiA9IDB4MTAwCisKKworY2xhc3MgUXVpY1Byb3RvY29sVmVyc2lvbihJbnRFbnVt
KToKKyAgICBORUdPVElBVElPTiA9IDAKKyAgICBEUkFGVF8yNSA9IDB4RkYwMDAwMTkKKyAgICBE
UkFGVF8yNiA9IDB4RkYwMDAwMUEKKyAgICBEUkFGVF8yNyA9IDB4RkYwMDAwMUIKKworCitAZGF0
YWNsYXNzCitjbGFzcyBRdWljSGVhZGVyOgorICAgIGlzX2xvbmdfaGVhZGVyOiBib29sCisgICAg
dmVyc2lvbjogT3B0aW9uYWxbaW50XQorICAgIHBhY2tldF90eXBlOiBpbnQKKyAgICBkZXN0aW5h
dGlvbl9jaWQ6IGJ5dGVzCisgICAgc291cmNlX2NpZDogYnl0ZXMKKyAgICB0b2tlbjogYnl0ZXMg
PSBiIiIKKyAgICBpbnRlZ3JpdHlfdGFnOiBieXRlcyA9IGIiIgorICAgIHJlc3RfbGVuZ3RoOiBp
bnQgPSAwCisKKworZGVmIGRlY29kZV9wYWNrZXRfbnVtYmVyKHRydW5jYXRlZDogaW50LCBudW1f
Yml0czogaW50LCBleHBlY3RlZDogaW50KSAtPiBpbnQ6CisgICAgIiIiCisgICAgUmVjb3ZlciBh
IHBhY2tldCBudW1iZXIgZnJvbSBhIHRydW5jYXRlZCBwYWNrZXQgbnVtYmVyLgorCisgICAgU2Vl
OiBBcHBlbmRpeCBBIC0gU2FtcGxlIFBhY2tldCBOdW1iZXIgRGVjb2RpbmcgQWxnb3JpdGhtCisg
ICAgIiIiCisgICAgd2luZG93ID0gMSA8PCBudW1fYml0cworICAgIGhhbGZfd2luZG93ID0gd2lu
ZG93IC8vIDIKKyAgICBjYW5kaWRhdGUgPSAoZXhwZWN0ZWQgJiB+KHdpbmRvdyAtIDEpKSB8IHRy
dW5jYXRlZAorICAgIGlmIGNhbmRpZGF0ZSA8PSBleHBlY3RlZCAtIGhhbGZfd2luZG93IGFuZCBj
YW5kaWRhdGUgPCAoMSA8PCA2MikgLSB3aW5kb3c6CisgICAgICAgIHJldHVybiBjYW5kaWRhdGUg
KyB3aW5kb3cKKyAgICBlbGlmIGNhbmRpZGF0ZSA+IGV4cGVjdGVkICsgaGFsZl93aW5kb3cgYW5k
IGNhbmRpZGF0ZSA+PSB3aW5kb3c6CisgICAgICAgIHJldHVybiBjYW5kaWRhdGUgLSB3aW5kb3cK
KyAgICBlbHNlOgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlCisKKworZGVmIGdldF9yZXRyeV9p
bnRlZ3JpdHlfdGFnKAorICAgIHBhY2tldF93aXRob3V0X3RhZzogYnl0ZXMsIG9yaWdpbmFsX2Rl
c3RpbmF0aW9uX2NpZDogYnl0ZXMKKykgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgQ2FsY3VsYXRl
IHRoZSBpbnRlZ3JpdHkgdGFnIGZvciBhIFJFVFJZIHBhY2tldC4KKyAgICAiIiIKKyAgICAjIGJ1
aWxkIFJldHJ5IHBzZXVkbyBwYWNrZXQKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MSArIGxl
bihvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQpICsgbGVuKHBhY2tldF93aXRob3V0X3RhZykpCisg
ICAgYnVmLnB1c2hfdWludDgobGVuKG9yaWdpbmFsX2Rlc3RpbmF0aW9uX2NpZCkpCisgICAgYnVm
LnB1c2hfYnl0ZXMob3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKQorICAgIGJ1Zi5wdXNoX2J5dGVz
KHBhY2tldF93aXRob3V0X3RhZykKKyAgICBhc3NlcnQgYnVmLmVvZigpCisKKyAgICAjIHJ1biBB
RVMtMTI4LUdDTQorICAgIGFlYWQgPSBBRVNHQ00oUkVUUllfQUVBRF9LRVkpCisgICAgaW50ZWdy
aXR5X3RhZyA9IGFlYWQuZW5jcnlwdChSRVRSWV9BRUFEX05PTkNFLCBiIiIsIGJ1Zi5kYXRhKQor
ICAgIGFzc2VydCBsZW4oaW50ZWdyaXR5X3RhZykgPT0gUkVUUllfSU5URUdSSVRZX1RBR19TSVpF
CisgICAgcmV0dXJuIGludGVncml0eV90YWcKKworCitkZWYgZ2V0X3NwaW5fYml0KGZpcnN0X2J5
dGU6IGludCkgLT4gYm9vbDoKKyAgICByZXR1cm4gYm9vbChmaXJzdF9ieXRlICYgUEFDS0VUX1NQ
SU5fQklUKQorCisKK2RlZiBpc19sb25nX2hlYWRlcihmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6
CisgICAgcmV0dXJuIGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9MT05HX0hFQURFUikKKworCitk
ZWYgcHVsbF9xdWljX2hlYWRlcihidWY6IEJ1ZmZlciwgaG9zdF9jaWRfbGVuZ3RoOiBPcHRpb25h
bFtpbnRdID0gTm9uZSkgLT4gUXVpY0hlYWRlcjoKKyAgICBmaXJzdF9ieXRlID0gYnVmLnB1bGxf
dWludDgoKQorCisgICAgaW50ZWdyaXR5X3RhZyA9IGIiIgorICAgIHRva2VuID0gYiIiCisgICAg
aWYgaXNfbG9uZ19oZWFkZXIoZmlyc3RfYnl0ZSk6CisgICAgICAgICMgbG9uZyBoZWFkZXIgcGFj
a2V0CisgICAgICAgIHZlcnNpb24gPSBidWYucHVsbF91aW50MzIoKQorCisgICAgICAgIGRlc3Rp
bmF0aW9uX2NpZF9sZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGlmIGRlc3RpbmF0
aW9uX2NpZF9sZW5ndGggPiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiRGVzdGluYXRpb24gQ0lEIGlzIHRvbyBs
b25nICglZCBieXRlcykiICUgZGVzdGluYXRpb25fY2lkX2xlbmd0aAorICAgICAgICAgICAgKQor
ICAgICAgICBkZXN0aW5hdGlvbl9jaWQgPSBidWYucHVsbF9ieXRlcyhkZXN0aW5hdGlvbl9jaWRf
bGVuZ3RoKQorCisgICAgICAgIHNvdXJjZV9jaWRfbGVuZ3RoID0gYnVmLnB1bGxfdWludDgoKQor
ICAgICAgICBpZiBzb3VyY2VfY2lkX2xlbmd0aCA+IENPTk5FQ1RJT05fSURfTUFYX1NJWkU6Cisg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICglZCBi
eXRlcykiICUgc291cmNlX2NpZF9sZW5ndGgpCisgICAgICAgIHNvdXJjZV9jaWQgPSBidWYucHVs
bF9ieXRlcyhzb3VyY2VfY2lkX2xlbmd0aCkKKworICAgICAgICBpZiB2ZXJzaW9uID09IFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT046CisgICAgICAgICAgICAjIHZlcnNpb24gbmVnb3Rp
YXRpb24KKyAgICAgICAgICAgIHBhY2tldF90eXBlID0gTm9uZQorICAgICAgICAgICAgcmVzdF9s
ZW5ndGggPSBidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBpZiBub3QgKGZpcnN0X2J5dGUgJiBQQUNLRVRfRklYRURfQklUKToKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAg
ICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNLCisgICAg
ICAgICAgICBpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgorICAgICAgICAg
ICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBy
ZXN0X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGVsaWYgcGFja2V0
X3R5cGUgPT0gUEFDS0VUX1RZUEVfUkVUUlk6CisgICAgICAgICAgICAgICAgdG9rZW5fbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSAtIFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQor
ICAgICAgICAgICAgICAgIHRva2VuID0gYnVmLnB1bGxfYnl0ZXModG9rZW5fbGVuZ3RoKQorICAg
ICAgICAgICAgICAgIGludGVncml0eV90YWcgPSBidWYucHVsbF9ieXRlcyhSRVRSWV9JTlRFR1JJ
VFlfVEFHX1NJWkUpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSAwCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLnB1bGxfdWludF92YXIo
KQorCisgICAgICAgIHJldHVybiBRdWljSGVhZGVyKAorICAgICAgICAgICAgaXNfbG9uZ19oZWFk
ZXI9VHJ1ZSwKKyAgICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgICAgIHBhY2tl
dF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0
aW9uX2NpZCwKKyAgICAgICAgICAgIHNvdXJjZV9jaWQ9c291cmNlX2NpZCwKKyAgICAgICAgICAg
IHRva2VuPXRva2VuLAorICAgICAgICAgICAgaW50ZWdyaXR5X3RhZz1pbnRlZ3JpdHlfdGFnLAor
ICAgICAgICAgICAgcmVzdF9sZW5ndGg9cmVzdF9sZW5ndGgsCisgICAgICAgICkKKyAgICBlbHNl
OgorICAgICAgICAjIHNob3J0IGhlYWRlciBwYWNrZXQKKyAgICAgICAgaWYgbm90IChmaXJzdF9i
eXRlICYgUEFDS0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQ
YWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgICAgIHBhY2tldF90eXBlID0gZmlyc3Rf
Ynl0ZSAmIFBBQ0tFVF9UWVBFX01BU0sKKyAgICAgICAgZGVzdGluYXRpb25fY2lkID0gYnVmLnB1
bGxfYnl0ZXMoaG9zdF9jaWRfbGVuZ3RoKQorICAgICAgICByZXR1cm4gUXVpY0hlYWRlcigKKyAg
ICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPUZhbHNlLAorICAgICAgICAgICAgdmVyc2lvbj1Ob25l
LAorICAgICAgICAgICAgcGFja2V0X3R5cGU9cGFja2V0X3R5cGUsCisgICAgICAgICAgICBkZXN0
aW5hdGlvbl9jaWQ9ZGVzdGluYXRpb25fY2lkLAorICAgICAgICAgICAgc291cmNlX2NpZD1iIiIs
CisgICAgICAgICAgICB0b2tlbj1iIiIsCisgICAgICAgICAgICByZXN0X2xlbmd0aD1idWYuY2Fw
YWNpdHkgLSBidWYudGVsbCgpLAorICAgICAgICApCisKKworZGVmIGVuY29kZV9xdWljX3JldHJ5
KAorICAgIHZlcnNpb246IGludCwKKyAgICBzb3VyY2VfY2lkOiBieXRlcywKKyAgICBkZXN0aW5h
dGlvbl9jaWQ6IGJ5dGVzLAorICAgIG9yaWdpbmFsX2Rlc3RpbmF0aW9uX2NpZDogYnl0ZXMsCisg
ICAgcmV0cnlfdG9rZW46IGJ5dGVzLAorKSAtPiBieXRlczoKKyAgICBidWYgPSBCdWZmZXIoCisg
ICAgICAgIGNhcGFjaXR5PTcKKyAgICAgICAgKyBsZW4oZGVzdGluYXRpb25fY2lkKQorICAgICAg
ICArIGxlbihzb3VyY2VfY2lkKQorICAgICAgICArIGxlbihyZXRyeV90b2tlbikKKyAgICAgICAg
KyBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICApCisgICAgYnVmLnB1c2hfdWludDgoUEFD
S0VUX1RZUEVfUkVUUlkpCisgICAgYnVmLnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgYnVmLnB1
c2hfdWludDgobGVuKGRlc3RpbmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGlu
YXRpb25fY2lkKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYu
cHVzaF9ieXRlcyhzb3VyY2VfY2lkKQorICAgIGJ1Zi5wdXNoX2J5dGVzKHJldHJ5X3Rva2VuKQor
ICAgIGJ1Zi5wdXNoX2J5dGVzKGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnKGJ1Zi5kYXRhLCBvcmln
aW5hbF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGFzc2VydCBidWYuZW9mKCkKKyAgICByZXR1cm4g
YnVmLmRhdGEKKworCitkZWYgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAgICBz
b3VyY2VfY2lkOiBieXRlcywgZGVzdGluYXRpb25fY2lkOiBieXRlcywgc3VwcG9ydGVkX3ZlcnNp
b25zOiBMaXN0W2ludF0KKykgLT4gYnl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBj
YXBhY2l0eT03CisgICAgICAgICsgbGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4o
c291cmNlX2NpZCkKKyAgICAgICAgKyA0ICogbGVuKHN1cHBvcnRlZF92ZXJzaW9ucykKKyAgICAp
CisgICAgYnVmLnB1c2hfdWludDgob3MudXJhbmRvbSgxKVswXSB8IFBBQ0tFVF9MT05HX0hFQURF
UikKKyAgICBidWYucHVzaF91aW50MzIoUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTikK
KyAgICBidWYucHVzaF91aW50OChsZW4oZGVzdGluYXRpb25fY2lkKSkKKyAgICBidWYucHVzaF9i
eXRlcyhkZXN0aW5hdGlvbl9jaWQpCisgICAgYnVmLnB1c2hfdWludDgobGVuKHNvdXJjZV9jaWQp
KQorICAgIGJ1Zi5wdXNoX2J5dGVzKHNvdXJjZV9jaWQpCisgICAgZm9yIHZlcnNpb24gaW4gc3Vw
cG9ydGVkX3ZlcnNpb25zOgorICAgICAgICBidWYucHVzaF91aW50MzIodmVyc2lvbikKKyAgICBy
ZXR1cm4gYnVmLmRhdGEKKworCisjIFRMUyBFWFRFTlNJT04KKworCitAZGF0YWNsYXNzCitjbGFz
cyBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAgICBpcHY0X2FkZHJlc3M6IE9wdGlvbmFsW1R1cGxl
W3N0ciwgaW50XV0KKyAgICBpcHY2X2FkZHJlc3M6IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50XV0K
KyAgICBjb25uZWN0aW9uX2lkOiBieXRlcworICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0
ZXMKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWljVHJhbnNwb3J0UGFyYW1ldGVyczoKKyAgICBv
cmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgaWRsZV90
aW1lb3V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjog
T3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgIG1heF9wYWNrZXRfc2l6ZTogT3B0aW9uYWxbaW50
XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9kYXRhOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAg
IGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGU6IE9wdGlvbmFsW2ludF0g
PSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfdW5pOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaTogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBh
Y2tfZGVsYXlfZXhwb25lbnQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgbWF4X2Fja19kZWxh
eTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb246IE9w
dGlvbmFsW2Jvb2xdID0gRmFsc2UKKyAgICBwcmVmZXJyZWRfYWRkcmVzczogT3B0aW9uYWxbUXVp
Y1ByZWZlcnJlZEFkZHJlc3NdID0gTm9uZQorICAgIGFjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0
OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzOiBPcHRpb25hbFtieXRlc10g
PSBOb25lCisKKworUEFSQU1TID0geworICAgIDA6ICgib3JpZ2luYWxfY29ubmVjdGlvbl9pZCIs
IGJ5dGVzKSwKKyAgICAxOiAoImlkbGVfdGltZW91dCIsIGludCksCisgICAgMjogKCJzdGF0ZWxl
c3NfcmVzZXRfdG9rZW4iLCBieXRlcyksCisgICAgMzogKCJtYXhfcGFja2V0X3NpemUiLCBpbnQp
LAorICAgIDQ6ICgiaW5pdGlhbF9tYXhfZGF0YSIsIGludCksCisgICAgNTogKCJpbml0aWFsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsIiwgaW50KSwKKyAgICA2OiAoImluaXRpYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlIiwgaW50KSwKKyAgICA3OiAoImluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX3VuaSIsIGludCksCisgICAgODogKCJpbml0aWFsX21heF9zdHJlYW1zX2JpZGkiLCBp
bnQpLAorICAgIDk6ICgiaW5pdGlhbF9tYXhfc3RyZWFtc191bmkiLCBpbnQpLAorICAgIDEwOiAo
ImFja19kZWxheV9leHBvbmVudCIsIGludCksCisgICAgMTE6ICgibWF4X2Fja19kZWxheSIsIGlu
dCksCisgICAgMTI6ICgiZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uIiwgYm9vbCksCisgICAgMTM6
ICgicHJlZmVycmVkX2FkZHJlc3MiLCBRdWljUHJlZmVycmVkQWRkcmVzcyksCisgICAgMTQ6ICgi
YWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQiLCBpbnQpLAorICAgIDMyOiAoIm1heF9kYXRhZ3Jh
bV9mcmFtZV9zaXplIiwgaW50KSwKKyAgICAzMTI3OiAoInF1YW50dW1fcmVhZGluZXNzIiwgYnl0
ZXMpLAorfQorCisKK2RlZiBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmOiBCdWZmZXIp
IC0+IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgIGlwdjRfYWRkcmVzcyA9IE5vbmUKKyAgICBp
cHY0X2hvc3QgPSBidWYucHVsbF9ieXRlcyg0KQorICAgIGlwdjRfcG9ydCA9IGJ1Zi5wdWxsX3Vp
bnQxNigpCisgICAgaWYgaXB2NF9ob3N0ICE9IGJ5dGVzKDQpOgorICAgICAgICBpcHY0X2FkZHJl
c3MgPSAoc3RyKGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhpcHY0X2hvc3QpKSwgaXB2NF9wb3J0KQor
CisgICAgaXB2Nl9hZGRyZXNzID0gTm9uZQorICAgIGlwdjZfaG9zdCA9IGJ1Zi5wdWxsX2J5dGVz
KDE2KQorICAgIGlwdjZfcG9ydCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgaWYgaXB2Nl9ob3N0
ICE9IGJ5dGVzKDE2KToKKyAgICAgICAgaXB2Nl9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2
NkFkZHJlc3MoaXB2Nl9ob3N0KSksIGlwdjZfcG9ydCkKKworICAgIGNvbm5lY3Rpb25faWRfbGVu
Z3RoID0gYnVmLnB1bGxfdWludDgoKQorICAgIGNvbm5lY3Rpb25faWQgPSBidWYucHVsbF9ieXRl
cyhjb25uZWN0aW9uX2lkX2xlbmd0aCkKKyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW4gPSBidWYu
cHVsbF9ieXRlcygxNikKKworICAgIHJldHVybiBRdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAg
ICAgaXB2NF9hZGRyZXNzPWlwdjRfYWRkcmVzcywKKyAgICAgICAgaXB2Nl9hZGRyZXNzPWlwdjZf
YWRkcmVzcywKKyAgICAgICAgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICkKKworCitk
ZWYgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKAorICAgIGJ1ZjogQnVmZmVyLCBwcmVmZXJy
ZWRfYWRkcmVzczogUXVpY1ByZWZlcnJlZEFkZHJlc3MKKykgLT4gTm9uZToKKyAgICBpZiBwcmVm
ZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJl
c3NbMF0pLnBhY2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNz
LmlwdjRfYWRkcmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRl
cyg2KSkKKworICAgIGlmIHByZWZlcnJlZF9hZGRyZXNzLmlwdjZfYWRkcmVzcyBpcyBub3QgTm9u
ZToKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoaXBhZGRyZXNzLklQdjZBZGRyZXNzKHByZWZlcnJl
ZF9hZGRyZXNzLmlwdjZfYWRkcmVzc1swXSkucGFja2VkKQorICAgICAgICBidWYucHVzaF91aW50
MTYocHJlZmVycmVkX2FkZHJlc3MuaXB2Nl9hZGRyZXNzWzFdKQorICAgIGVsc2U6CisgICAgICAg
IGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDE4KSkKKworICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihwcmVm
ZXJyZWRfYWRkcmVzcy5jb25uZWN0aW9uX2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhwcmVmZXJy
ZWRfYWRkcmVzcy5jb25uZWN0aW9uX2lkKQorICAgIGJ1Zi5wdXNoX2J5dGVzKHByZWZlcnJlZF9h
ZGRyZXNzLnN0YXRlbGVzc19yZXNldF90b2tlbikKKworCitkZWYgcHVsbF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgIGJ1ZjogQnVmZmVyLCBwcm90b2NvbF92ZXJzaW9uOiBpbnQKKykg
LT4gUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgcGFyYW1zID0gUXVpY1RyYW5zcG9ydFBh
cmFtZXRlcnMoKQorCisgICAgaWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjc6CisgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDIpIGFzIGxlbmd0aDoK
KyAgICAgICAgICAgIGVuZCA9IGJ1Zi50ZWxsKCkgKyBsZW5ndGgKKyAgICAgICAgICAgIHdoaWxl
IGJ1Zi50ZWxsKCkgPCBlbmQ6CisgICAgICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91
aW50MTYoKQorICAgICAgICAgICAgICAgIHBhcmFtX2xlbiA9IGJ1Zi5wdWxsX3VpbnQxNigpCisg
ICAgICAgICAgICAgICAgcGFyYW1fc3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgICAgICAgICAg
aWYgcGFyYW1faWQgaW4gUEFSQU1TOgorICAgICAgICAgICAgICAgICAgICAjIHBhcnNlIGtub3du
IHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBwYXJhbV9uYW1lLCBwYXJhbV90eXBlID0g
UEFSQU1TW3BhcmFtX2lkXQorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbV90eXBlID09IGlu
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9uYW1lLCBi
dWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUg
PT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1f
bmFtZSwgYnVmLnB1bGxfYnl0ZXMocGFyYW1fbGVuKSkKKyAgICAgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRk
cmVzcyhidWYpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBza2lwIHVua25vd24gcGFyYW1ldGVyCisgICAg
ICAgICAgICAgICAgICAgIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgYnVmLnRlbGwoKSA9PSBwYXJhbV9zdGFydCArIHBhcmFtX2xlbgorICAgIGVsc2U6
CisgICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICBwYXJhbV9pZCA9IGJ1
Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIHBhcmFtX2xlbiA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKyAgICAgICAgICAgIHBhcmFtX3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICAgICAg
aWYgcGFyYW1faWQgaW4gUEFSQU1TOgorICAgICAgICAgICAgICAgICMgcGFyc2Uga25vd24gcGFy
YW1ldGVyCisgICAgICAgICAgICAgICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1tw
YXJhbV9pZF0KKyAgICAgICAgICAgICAgICBpZiBwYXJhbV90eXBlID09IGludDoKKyAgICAgICAg
ICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkpCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAg
ICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfYnl0ZXMocGFy
YW1fbGVuKSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJl
ZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9uYW1l
LCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgVHJ1ZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBza2lwIHVua25vd24gcGFyYW1l
dGVyCisgICAgICAgICAgICAgICAgYnVmLnB1bGxfYnl0ZXMocGFyYW1fbGVuKQorICAgICAgICAg
ICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gcGFyYW1fc3RhcnQgKyBwYXJhbV9sZW4KKworICAgIHJl
dHVybiBwYXJhbXMKKworCitkZWYgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAg
IGJ1ZjogQnVmZmVyLCBwYXJhbXM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLCBwcm90b2NvbF92
ZXJzaW9uOiBpbnQKKykgLT4gTm9uZToKKyAgICBpZiBwcm90b2NvbF92ZXJzaW9uIDwgUXVpY1By
b3RvY29sVmVyc2lvbi5EUkFGVF8yNzoKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6
CisgICAgICAgICAgICBmb3IgcGFyYW1faWQsIChwYXJhbV9uYW1lLCBwYXJhbV90eXBlKSBpbiBQ
QVJBTVMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX3ZhbHVlIGlzIG5vdCBO
b25lIGFuZCBwYXJhbV92YWx1ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnQxNihwYXJhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2Js
b2NrKGJ1ZiwgMik6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbV90eXBlID09IGlu
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV92
YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhwYXJhbV92YWx1ZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVk
X2FkZHJlc3MoYnVmLCBwYXJhbV92YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBmb3IgcGFyYW1f
aWQsIChwYXJhbV9uYW1lLCBwYXJhbV90eXBlKSBpbiBQQVJBTVMuaXRlbXMoKToKKyAgICAgICAg
ICAgIHBhcmFtX3ZhbHVlID0gZ2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUpCisgICAgICAgICAg
ICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMgbm90IEZhbHNl
OgorICAgICAgICAgICAgICAgIHBhcmFtX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT02NTUzNikKKyAg
ICAgICAgICAgICAgICBpZiBwYXJhbV90eXBlID09IGludDoKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1fYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICBwYXJhbV9idWYucHVz
aF9ieXRlcyhwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0g
UXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAgIHB1c2hfcXVpY19wcmVm
ZXJyZWRfYWRkcmVzcyhwYXJhbV9idWYsIHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHBhcmFtX2lkKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRf
dmFyKHBhcmFtX2J1Zi50ZWxsKCkpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocGFy
YW1fYnVmLmRhdGEpCisKKworIyBGUkFNRVMKKworCitjbGFzcyBRdWljRnJhbWVUeXBlKEludEVu
dW0pOgorICAgIFBBRERJTkcgPSAweDAwCisgICAgUElORyA9IDB4MDEKKyAgICBBQ0sgPSAweDAy
CisgICAgQUNLX0VDTiA9IDB4MDMKKyAgICBSRVNFVF9TVFJFQU0gPSAweDA0CisgICAgU1RPUF9T
RU5ESU5HID0gMHgwNQorICAgIENSWVBUTyA9IDB4MDYKKyAgICBORVdfVE9LRU4gPSAweDA3Cisg
ICAgU1RSRUFNX0JBU0UgPSAweDA4CisgICAgTUFYX0RBVEEgPSAweDEwCisgICAgTUFYX1NUUkVB
TV9EQVRBID0gMHgxMQorICAgIE1BWF9TVFJFQU1TX0JJREkgPSAweDEyCisgICAgTUFYX1NUUkVB
TVNfVU5JID0gMHgxMworICAgIERBVEFfQkxPQ0tFRCA9IDB4MTQKKyAgICBTVFJFQU1fREFUQV9C
TE9DS0VEID0gMHgxNQorICAgIFNUUkVBTVNfQkxPQ0tFRF9CSURJID0gMHgxNgorICAgIFNUUkVB
TVNfQkxPQ0tFRF9VTkkgPSAweDE3CisgICAgTkVXX0NPTk5FQ1RJT05fSUQgPSAweDE4CisgICAg
UkVUSVJFX0NPTk5FQ1RJT05fSUQgPSAweDE5CisgICAgUEFUSF9DSEFMTEVOR0UgPSAweDFBCisg
ICAgUEFUSF9SRVNQT05TRSA9IDB4MUIKKyAgICBUUkFOU1BPUlRfQ0xPU0UgPSAweDFDCisgICAg
QVBQTElDQVRJT05fQ0xPU0UgPSAweDFECisgICAgSEFORFNIQUtFX0RPTkUgPSAweDFFCisgICAg
REFUQUdSQU0gPSAweDMwCisgICAgREFUQUdSQU1fV0lUSF9MRU5HVEggPSAweDMxCisKKworTk9O
X0FDS19FTElDSVRJTkdfRlJBTUVfVFlQRVMgPSBmcm96ZW5zZXQoCisgICAgWworICAgICAgICBR
dWljRnJhbWVUeXBlLkFDSywKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0tfRUNOLAorICAgICAg
ICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JU
X0NMT1NFLAorICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAorICAgIF0K
KykKK05PTl9JTl9GTElHSFRfRlJBTUVfVFlQRVMgPSBmcm96ZW5zZXQoCisgICAgWworICAgICAg
ICBRdWljRnJhbWVUeXBlLkFDSywKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0tfRUNOLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCisKK1BST0JJTkdfRlJBTUVfVFlQRVMgPSBm
cm96ZW5zZXQoCisgICAgWworICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfQ0hBTExFTkdFLAor
ICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgIFF1aWNGcmFtZVR5
cGUuUEFERElORywKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09OTkVDVElPTl9JRCwKKyAg
ICBdCispCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1N0cmVhbUZyYW1lOgorICAgIGRhdGE6
IGJ5dGVzID0gYiIiCisgICAgZmluOiBib29sID0gRmFsc2UKKyAgICBvZmZzZXQ6IGludCA9IDAK
KworCitkZWYgcHVsbF9hY2tfZnJhbWUoYnVmOiBCdWZmZXIpIC0+IFR1cGxlW1JhbmdlU2V0LCBp
bnRdOgorICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgIGVuZCA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkgICMgbGFyZ2VzdCBhY2tub3dsZWRnZWQKKyAgICBkZWxheSA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKyAgICBhY2tfcmFuZ2VfY291bnQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNr
X2NvdW50ID0gYnVmLnB1bGxfdWludF92YXIoKSAgIyBmaXJzdCBhY2sgcmFuZ2UKKyAgICByYW5n
ZXNldC5hZGQoZW5kIC0gYWNrX2NvdW50LCBlbmQgKyAxKQorICAgIGVuZCAtPSBhY2tfY291bnQK
KyAgICBmb3IgXyBpbiByYW5nZShhY2tfcmFuZ2VfY291bnQpOgorICAgICAgICBlbmQgLT0gYnVm
LnB1bGxfdWludF92YXIoKSArIDIKKyAgICAgICAgYWNrX2NvdW50ID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICByYW5nZXNldC5hZGQoZW5kIC0gYWNrX2NvdW50LCBlbmQgKyAxKQorICAg
ICAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgcmV0dXJuIHJhbmdlc2V0LCBkZWxheQorCisKK2Rl
ZiBwdXNoX2Fja19mcmFtZShidWY6IEJ1ZmZlciwgcmFuZ2VzZXQ6IFJhbmdlU2V0LCBkZWxheTog
aW50KSAtPiBpbnQ6CisgICAgcmFuZ2VzID0gbGVuKHJhbmdlc2V0KQorICAgIGluZGV4ID0gcmFu
Z2VzIC0gMQorICAgIHIgPSByYW5nZXNldFtpbmRleF0KKyAgICBidWYucHVzaF91aW50X3Zhcihy
LnN0b3AgLSAxKQorICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGRlbGF5KQorICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKGluZGV4KQorICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIDEgLSByLnN0YXJ0
KQorICAgIHN0YXJ0ID0gci5zdGFydAorICAgIHdoaWxlIGluZGV4ID4gMDoKKyAgICAgICAgaW5k
ZXggLT0gMQorICAgICAgICByID0gcmFuZ2VzZXRbaW5kZXhdCisgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHN0YXJ0IC0gci5zdG9wIC0gMSkKKyAgICAgICAgYnVmLnB1c2hfdWludF92YXIoci5z
dG9wIC0gci5zdGFydCAtIDEpCisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgIHJldHVybiBy
YW5nZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9i
dWlsZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0X2J1aWxkZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDg4MzdjMmMzMzA0OTIwNjQ0NWZjOWZiODE0NzNhY2ZjYmY0YjY1Ygot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9i
dWlsZGVyLnB5CkBAIC0wLDAgKzEsMzY2IEBACitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRh
Y2xhc3MsIGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEVudW0KK2Zyb20gdHlwaW5nIGltcG9ydCBB
bnksIENhbGxhYmxlLCBEaWN0LCBMaXN0LCBPcHRpb25hbCwgU2VxdWVuY2UsIFR1cGxlCisKK2Zy
b20gLi5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgc2l6ZV91aW50X3ZhcgorZnJvbSAuLnRscyBpbXBv
cnQgRXBvY2gKK2Zyb20gLmNyeXB0byBpbXBvcnQgQ3J5cHRvUGFpcgorZnJvbSAubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tldCBpbXBvcnQgKAorICAgIE5PTl9BQ0tf
RUxJQ0lUSU5HX0ZSQU1FX1RZUEVTLAorICAgIE5PTl9JTl9GTElHSFRfRlJBTUVfVFlQRVMsCisg
ICAgUEFDS0VUX05VTUJFUl9NQVhfU0laRSwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisg
ICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNLRVRfVFlQRV9NQVNLLAorICAgIFF1aWNG
cmFtZVR5cGUsCisgICAgaXNfbG9uZ19oZWFkZXIsCispCisKK1BBQ0tFVF9NQVhfU0laRSA9IDEy
ODAKK1BBQ0tFVF9MRU5HVEhfU0VORF9TSVpFID0gMgorUEFDS0VUX05VTUJFUl9TRU5EX1NJWkUg
PSAyCisKKworUXVpY0RlbGl2ZXJ5SGFuZGxlciA9IENhbGxhYmxlWy4uLiwgTm9uZV0KKworCitj
bGFzcyBRdWljRGVsaXZlcnlTdGF0ZShFbnVtKToKKyAgICBBQ0tFRCA9IDAKKyAgICBMT1NUID0g
MQorICAgIEVYUElSRUQgPSAyCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1NlbnRQYWNrZXQ6
CisgICAgZXBvY2g6IEVwb2NoCisgICAgaW5fZmxpZ2h0OiBib29sCisgICAgaXNfYWNrX2VsaWNp
dGluZzogYm9vbAorICAgIGlzX2NyeXB0b19wYWNrZXQ6IGJvb2wKKyAgICBwYWNrZXRfbnVtYmVy
OiBpbnQKKyAgICBwYWNrZXRfdHlwZTogaW50CisgICAgc2VudF90aW1lOiBPcHRpb25hbFtmbG9h
dF0gPSBOb25lCisgICAgc2VudF9ieXRlczogaW50ID0gMAorCisgICAgZGVsaXZlcnlfaGFuZGxl
cnM6IExpc3RbVHVwbGVbUXVpY0RlbGl2ZXJ5SGFuZGxlciwgQW55XV0gPSBmaWVsZCgKKyAgICAg
ICAgZGVmYXVsdF9mYWN0b3J5PWxpc3QKKyAgICApCisgICAgcXVpY19sb2dnZXJfZnJhbWVzOiBM
aXN0W0RpY3RdID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisKKworY2xhc3MgUXVpY1Bh
Y2tldEJ1aWxkZXJTdG9wKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIFF1aWNQYWNr
ZXRCdWlsZGVyOgorICAgICIiIgorICAgIEhlbHBlciBmb3IgYnVpbGRpbmcgUVVJQyBwYWNrZXRz
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICAq
LAorICAgICAgICBob3N0X2NpZDogYnl0ZXMsCisgICAgICAgIHBlZXJfY2lkOiBieXRlcywKKyAg
ICAgICAgdmVyc2lvbjogaW50LAorICAgICAgICBpc19jbGllbnQ6IGJvb2wsCisgICAgICAgIHBh
Y2tldF9udW1iZXI6IGludCA9IDAsCisgICAgICAgIHBlZXJfdG9rZW46IGJ5dGVzID0gYiIiLAor
ICAgICAgICBxdWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisg
ICAgICAgIHNwaW5fYml0OiBib29sID0gRmFsc2UsCisgICAgKToKKyAgICAgICAgc2VsZi5tYXhf
ZmxpZ2h0X2J5dGVzOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLm1heF90b3Rh
bF9ieXRlczogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5xdWljX2xvZ2dlcl9m
cmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0gTm9uZQorCisgICAgICAgIHNlbGYuX2hvc3Rf
Y2lkID0gaG9zdF9jaWQKKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gaXNfY2xpZW50CisgICAg
ICAgIHNlbGYuX3BlZXJfY2lkID0gcGVlcl9jaWQKKyAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9
IHBlZXJfdG9rZW4KKyAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgPSBxdWljX2xvZ2dlcgorICAg
ICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSB2
ZXJzaW9uCisKKyAgICAgICAgIyBhc3NlbWJsZWQgZGF0YWdyYW1zIGFuZCBwYWNrZXRzCisgICAg
ICAgIHNlbGYuX2RhdGFncmFtczogTGlzdFtieXRlc10gPSBbXQorICAgICAgICBzZWxmLl9kYXRh
Z3JhbV9mbGlnaHRfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX2RhdGFncmFtX2luaXQgPSBUcnVl
CisgICAgICAgIHNlbGYuX3BhY2tldHM6IExpc3RbUXVpY1NlbnRQYWNrZXRdID0gW10KKyAgICAg
ICAgc2VsZi5fZmxpZ2h0X2J5dGVzID0gMAorICAgICAgICBzZWxmLl90b3RhbF9ieXRlcyA9IDAK
KworICAgICAgICAjIGN1cnJlbnQgcGFja2V0CisgICAgICAgIHNlbGYuX2hlYWRlcl9zaXplID0g
MAorICAgICAgICBzZWxmLl9wYWNrZXQ6IE9wdGlvbmFsW1F1aWNTZW50UGFja2V0XSA9IE5vbmUK
KyAgICAgICAgc2VsZi5fcGFja2V0X2NyeXB0bzogT3B0aW9uYWxbQ3J5cHRvUGFpcl0gPSBOb25l
CisgICAgICAgIHNlbGYuX3BhY2tldF9sb25nX2hlYWRlciA9IEZhbHNlCisgICAgICAgIHNlbGYu
X3BhY2tldF9udW1iZXIgPSBwYWNrZXRfbnVtYmVyCisgICAgICAgIHNlbGYuX3BhY2tldF9zdGFy
dCA9IDAKKyAgICAgICAgc2VsZi5fcGFja2V0X3R5cGUgPSAwCisKKyAgICAgICAgc2VsZi5fYnVm
ZmVyID0gQnVmZmVyKFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgc2VsZi5fYnVmZmVyX2NhcGFj
aXR5ID0gUEFDS0VUX01BWF9TSVpFCisgICAgICAgIHNlbGYuX2ZsaWdodF9jYXBhY2l0eSA9IFBB
Q0tFVF9NQVhfU0laRQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9pc19lbXB0eShz
ZWxmKSAtPiBib29sOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBgVHJ1ZWAgaWYgdGhl
IGN1cnJlbnQgcGFja2V0IGlzIGVtcHR5LgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNl
bGYuX3BhY2tldCBpcyBub3QgTm9uZQorICAgICAgICBwYWNrZXRfc2l6ZSA9IHNlbGYuX2J1ZmZl
ci50ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAgICAgcmV0dXJuIHBhY2tldF9zaXpl
IDw9IHNlbGYuX2hlYWRlcl9zaXplCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2V0X251
bWJlcihzZWxmKSAtPiBpbnQ6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYWNr
ZXQgbnVtYmVyIGZvciB0aGUgbmV4dCBwYWNrZXQuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fcGFja2V0X251bWJlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlbWFpbmlu
Z19idWZmZXJfc3BhY2Uoc2VsZikgLT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJu
cyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBieXRlcyB3aGljaCBjYW4gYmUgdXNlZCBpbgorICAg
ICAgICB0aGUgY3VycmVudCBwYWNrZXQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKAor
ICAgICAgICAgICAgc2VsZi5fYnVmZmVyX2NhcGFjaXR5CisgICAgICAgICAgICAtIHNlbGYuX2J1
ZmZlci50ZWxsKCkKKyAgICAgICAgICAgIC0gc2VsZi5fcGFja2V0X2NyeXB0by5hZWFkX3RhZ19z
aXplCisgICAgICAgICkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfZmxpZ2h0
X3NwYWNlKHNlbGYpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJl
bWFpbmluZyBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhl
IGN1cnJlbnQgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAg
ICAgIHNlbGYuX2ZsaWdodF9jYXBhY2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVs
bCgpCisgICAgICAgICAgICAtIHNlbGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAg
ICAgICApCisKKyAgICBkZWYgZmx1c2goc2VsZikgLT4gVHVwbGVbTGlzdFtieXRlc10sIExpc3Rb
UXVpY1NlbnRQYWNrZXRdXToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIGFzc2Vt
YmxlZCBkYXRhZ3JhbXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wYWNrZXQgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9lbmRfcGFja2V0KCkKKyAgICAgICAgc2VsZi5f
Zmx1c2hfY3VycmVudF9kYXRhZ3JhbSgpCisKKyAgICAgICAgZGF0YWdyYW1zID0gc2VsZi5fZGF0
YWdyYW1zCisgICAgICAgIHBhY2tldHMgPSBzZWxmLl9wYWNrZXRzCisgICAgICAgIHNlbGYuX2Rh
dGFncmFtcyA9IFtdCisgICAgICAgIHNlbGYuX3BhY2tldHMgPSBbXQorICAgICAgICByZXR1cm4g
ZGF0YWdyYW1zLCBwYWNrZXRzCisKKyAgICBkZWYgc3RhcnRfZnJhbWUoCisgICAgICAgIHNlbGYs
CisgICAgICAgIGZyYW1lX3R5cGU6IGludCwKKyAgICAgICAgY2FwYWNpdHk6IGludCA9IDEsCisg
ICAgICAgIGhhbmRsZXI6IE9wdGlvbmFsW1F1aWNEZWxpdmVyeUhhbmRsZXJdID0gTm9uZSwKKyAg
ICAgICAgaGFuZGxlcl9hcmdzOiBTZXF1ZW5jZVtBbnldID0gW10sCisgICAgKSAtPiBCdWZmZXI6
CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMgYSBuZXcgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19idWZmZXJfc3BhY2UgPCBjYXBhY2l0eSBvciAoCisg
ICAgICAgICAgICBmcmFtZV90eXBlIG5vdCBpbiBOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTCisg
ICAgICAgICAgICBhbmQgc2VsZi5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlIDwgY2FwYWNpdHkKKyAg
ICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNQYWNrZXRCdWlsZGVyU3RvcAorCisgICAg
ICAgIHNlbGYuX2J1ZmZlci5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgICAgIGlmIGZy
YW1lX3R5cGUgbm90IGluIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LmlzX2Fja19lbGljaXRpbmcgPSBUcnVlCisgICAgICAgIGlmIGZyYW1l
X3R5cGUgbm90IGluIE5PTl9JTl9GTElHSFRfRlJBTUVfVFlQRVM6CisgICAgICAgICAgICBzZWxm
Ll9wYWNrZXQuaW5fZmxpZ2h0ID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNG
cmFtZVR5cGUuQ1JZUFRPOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmlzX2NyeXB0b19wYWNr
ZXQgPSBUcnVlCisgICAgICAgIGlmIGhhbmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLl9wYWNrZXQuZGVsaXZlcnlfaGFuZGxlcnMuYXBwZW5kKChoYW5kbGVyLCBoYW5kbGVyX2Fy
Z3MpKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyCisKKyAgICBkZWYgc3RhcnRfcGFja2V0
KHNlbGYsIHBhY2tldF90eXBlOiBpbnQsIGNyeXB0bzogQ3J5cHRvUGFpcikgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFN0YXJ0cyBhIG5ldyBwYWNrZXQuCisgICAgICAgICIiIgorICAg
ICAgICBidWYgPSBzZWxmLl9idWZmZXIKKworICAgICAgICAjIGZpbmlzaCBwcmV2aW91cyBkYXRh
Z3JhbQorICAgICAgICBpZiBzZWxmLl9wYWNrZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLl9lbmRfcGFja2V0KCkKKworICAgICAgICAjIGlmIHRoZXJlIGlzIHRvbyBsaXR0bGUgc3Bh
Y2UgcmVtYWluaW5nLCBzdGFydCBhIG5ldyBkYXRhZ3JhbQorICAgICAgICAjIEZJWE1FOiB0aGUg
bGltaXQgaXMgYXJiaXRyYXJ5IQorICAgICAgICBwYWNrZXRfc3RhcnQgPSBidWYudGVsbCgpCisg
ICAgICAgIGlmIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSAtIHBhY2tldF9zdGFydCA8IDEyODoKKyAg
ICAgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorICAgICAgICAgICAgcGFj
a2V0X3N0YXJ0ID0gMAorCisgICAgICAgICMgaW5pdGlhbGl6ZSBkYXRhZ3JhbSBpZiBuZWVkZWQK
KyAgICAgICAgaWYgc2VsZi5fZGF0YWdyYW1faW5pdDoKKyAgICAgICAgICAgIGlmIHNlbGYubWF4
X3RvdGFsX2J5dGVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJlbWFpbmluZ190b3Rh
bF9ieXRlcyA9IHNlbGYubWF4X3RvdGFsX2J5dGVzIC0gc2VsZi5fdG90YWxfYnl0ZXMKKyAgICAg
ICAgICAgICAgICBpZiByZW1haW5pbmdfdG90YWxfYnl0ZXMgPCBzZWxmLl9idWZmZXJfY2FwYWNp
dHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IHJlbWFpbmlu
Z190b3RhbF9ieXRlcworCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBzZWxm
Ll9idWZmZXJfY2FwYWNpdHkKKyAgICAgICAgICAgIGlmIHNlbGYubWF4X2ZsaWdodF9ieXRlcyBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZW1haW5pbmdfZmxpZ2h0X2J5dGVzID0gc2Vs
Zi5tYXhfZmxpZ2h0X2J5dGVzIC0gc2VsZi5fZmxpZ2h0X2J5dGVzCisgICAgICAgICAgICAgICAg
aWYgcmVtYWluaW5nX2ZsaWdodF9ieXRlcyA8IHNlbGYuX2ZsaWdodF9jYXBhY2l0eToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gcmVtYWluaW5nX2ZsaWdodF9i
eXRlcworICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzID0gMAorICAgICAg
ICAgICAgc2VsZi5fZGF0YWdyYW1faW5pdCA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxjdWxhdGUg
aGVhZGVyIHNpemUKKyAgICAgICAgcGFja2V0X2xvbmdfaGVhZGVyID0gaXNfbG9uZ19oZWFkZXIo
cGFja2V0X3R5cGUpCisgICAgICAgIGlmIHBhY2tldF9sb25nX2hlYWRlcjoKKyAgICAgICAgICAg
IGhlYWRlcl9zaXplID0gMTEgKyBsZW4oc2VsZi5fcGVlcl9jaWQpICsgbGVuKHNlbGYuX2hvc3Rf
Y2lkKQorICAgICAgICAgICAgaWYgKHBhY2tldF90eXBlICYgUEFDS0VUX1RZUEVfTUFTSykgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBsZW4o
c2VsZi5fcGVlcl90b2tlbikKKyAgICAgICAgICAgICAgICBoZWFkZXJfc2l6ZSArPSBzaXplX3Vp
bnRfdmFyKHRva2VuX2xlbmd0aCkgKyB0b2tlbl9sZW5ndGgKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGhlYWRlcl9zaXplID0gMyArIGxlbihzZWxmLl9wZWVyX2NpZCkKKworICAgICAgICAj
IGNoZWNrIHdlIGhhdmUgZW5vdWdoIHNwYWNlCisgICAgICAgIGlmIHBhY2tldF9zdGFydCArIGhl
YWRlcl9zaXplID49IHNlbGYuX2J1ZmZlcl9jYXBhY2l0eToKKyAgICAgICAgICAgIHJhaXNlIFF1
aWNQYWNrZXRCdWlsZGVyU3RvcAorCisgICAgICAgICMgZGV0ZXJtaW5lIGFjayBlcG9jaAorICAg
ICAgICBpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgorICAgICAgICAgICAg
ZXBvY2ggPSBFcG9jaC5JTklUSUFMCisgICAgICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VU
X1RZUEVfSEFORFNIQUtFOgorICAgICAgICAgICAgZXBvY2ggPSBFcG9jaC5IQU5EU0hBS0UKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guT05FX1JUVAorCisgICAgICAg
IHNlbGYuX2hlYWRlcl9zaXplID0gaGVhZGVyX3NpemUKKyAgICAgICAgc2VsZi5fcGFja2V0ID0g
UXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgICAgIGlu
X2ZsaWdodD1GYWxzZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9RmFsc2UsCisgICAg
ICAgICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgcGFja2V0X251bWJl
cj1zZWxmLl9wYWNrZXRfbnVtYmVyLAorICAgICAgICAgICAgcGFja2V0X3R5cGU9cGFja2V0X3R5
cGUsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fcGFja2V0X2NyeXB0byA9IGNyeXB0bworICAg
ICAgICBzZWxmLl9wYWNrZXRfbG9uZ19oZWFkZXIgPSBwYWNrZXRfbG9uZ19oZWFkZXIKKyAgICAg
ICAgc2VsZi5fcGFja2V0X3N0YXJ0ID0gcGFja2V0X3N0YXJ0CisgICAgICAgIHNlbGYuX3BhY2tl
dF90eXBlID0gcGFja2V0X3R5cGUKKyAgICAgICAgc2VsZi5xdWljX2xvZ2dlcl9mcmFtZXMgPSBz
ZWxmLl9wYWNrZXQucXVpY19sb2dnZXJfZnJhbWVzCisKKyAgICAgICAgYnVmLnNlZWsoc2VsZi5f
cGFja2V0X3N0YXJ0ICsgc2VsZi5faGVhZGVyX3NpemUpCisKKyAgICBkZWYgX2VuZF9wYWNrZXQo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEVuZHMgdGhlIGN1cnJlbnQgcGFj
a2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5fYnVmZmVyCisgICAgICAgIHBh
Y2tldF9zaXplID0gYnVmLnRlbGwoKSAtIHNlbGYuX3BhY2tldF9zdGFydAorICAgICAgICBpZiBw
YWNrZXRfc2l6ZSA+IHNlbGYuX2hlYWRlcl9zaXplOgorICAgICAgICAgICAgIyBwYWQgaW5pdGlh
bCBkYXRhZ3JhbQorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNlbGYuX2lzX2Ns
aWVudAorICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQ
RV9JTklUSUFMCisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFj
a2V0CisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGlmIHNlbGYucmVtYWluaW5nX2Zs
aWdodF9zcGFjZToKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoc2Vs
Zi5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3Np
emUgPSBidWYudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3BhY2tldC5pbl9mbGlnaHQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQucXVpY19sb2dnZXJf
ZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgd3JpdGUgaGVhZGVyCisgICAgICAgICAgICBpZiBzZWxmLl9wYWNrZXRf
bG9uZ19oZWFkZXI6CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gKAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfc2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHNlbGYuX2hlYWRlcl9zaXpl
CisgICAgICAgICAgICAgICAgICAgICsgUEFDS0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAg
ICAgICAgICAgICAgKyBzZWxmLl9wYWNrZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAg
ICAgICAgICApCisKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQp
CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoc2VsZi5fcGFja2V0X3R5cGUgfCAoUEFD
S0VUX05VTUJFUl9TRU5EX1NJWkUgLSAxKSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50
MzIoc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50OChsZW4oc2Vs
Zi5fcGVlcl9jaWQpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHNlbGYuX3BlZXJf
Y2lkKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzZWxmLl9ob3N0X2NpZCkp
CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5faG9zdF9jaWQpCisgICAgICAg
ICAgICAgICAgaWYgKHNlbGYuX3BhY2tldF90eXBlICYgUEFDS0VUX1RZUEVfTUFTSykgPT0gUEFD
S0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIo
bGVuKHNlbGYuX3BlZXJfdG9rZW4pKQorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhzZWxmLl9wZWVyX3Rva2VuKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihsZW5n
dGggfCAweDQwMDApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNlbGYuX3BhY2tl
dF9udW1iZXIgJiAweEZGRkYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1
Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50
OCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0X3R5cGUKKyAgICAgICAgICAgICAg
ICAgICAgfCAoc2VsZi5fc3Bpbl9iaXQgPDwgNSkKKyAgICAgICAgICAgICAgICAgICAgfCAoc2Vs
Zi5fcGFja2V0X2NyeXB0by5rZXlfcGhhc2UgPDwgMikKKyAgICAgICAgICAgICAgICAgICAgfCAo
UEFDS0VUX05VTUJFUl9TRU5EX1NJWkUgLSAxKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBi
dWYucHVzaF91aW50MTYoc2VsZi5fcGFja2V0X251bWJlciAmIDB4RkZGRikKKworICAgICAgICAg
ICAgICAgICMgY2hlY2sgd2hldGhlciB3ZSBuZWVkIHBhZGRpbmcKKyAgICAgICAgICAgICAgICBw
YWRkaW5nX3NpemUgPSAoCisgICAgICAgICAgICAgICAgICAgIFBBQ0tFVF9OVU1CRVJfTUFYX1NJ
WkUKKyAgICAgICAgICAgICAgICAgICAgLSBQQUNLRVRfTlVNQkVSX1NFTkRfU0laRQorICAgICAg
ICAgICAgICAgICAgICArIHNlbGYuX2hlYWRlcl9zaXplCisgICAgICAgICAgICAgICAgICAgIC0g
cGFja2V0X3NpemUKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgcGFkZGlu
Z19zaXplID4gMDoKKyAgICAgICAgICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0
YXJ0ICsgcGFja2V0X3NpemUpCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5
dGVzKHBhZGRpbmdfc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplICs9IHBh
ZGRpbmdfc2l6ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0ID0g
VHJ1ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUo
KQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGVuY3J5cHQgaW4g
cGxhY2UKKyAgICAgICAgICAgIHBsYWluID0gYnVmLmRhdGFfc2xpY2Uoc2VsZi5fcGFja2V0X3N0
YXJ0LCBzZWxmLl9wYWNrZXRfc3RhcnQgKyBwYWNrZXRfc2l6ZSkKKyAgICAgICAgICAgIGJ1Zi5z
ZWVrKHNlbGYuX3BhY2tldF9zdGFydCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKAorICAg
ICAgICAgICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG8uZW5jcnlwdF9wYWNrZXQoCisgICAgICAg
ICAgICAgICAgICAgIHBsYWluWzAgOiBzZWxmLl9oZWFkZXJfc2l6ZV0sCisgICAgICAgICAgICAg
ICAgICAgIHBsYWluW3NlbGYuX2hlYWRlcl9zaXplIDogcGFja2V0X3NpemVdLAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5zZW50X2J5dGVzID0gYnVmLnRlbGwo
KSAtIHNlbGYuX3BhY2tldF9zdGFydAorICAgICAgICAgICAgc2VsZi5fcGFja2V0cy5hcHBlbmQo
c2VsZi5fcGFja2V0KQorICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0LmluX2ZsaWdodDoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9kYXRhZ3JhbV9mbGlnaHRfYnl0ZXMgKz0gc2VsZi5fcGFja2V0
LnNlbnRfYnl0ZXMKKworICAgICAgICAgICAgIyBzaG9ydCBoZWFkZXIgcGFja2V0cyBjYW5ub3Qg
YmUgY29hbGxlc2NlZCwgd2UgbmVlZCBhIG5ldyBkYXRhZ3JhbQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3BhY2tldF9sb25nX2hlYWRlcjoKKyAgICAgICAgICAgICAgICBzZWxmLl9mbHVzaF9j
dXJyZW50X2RhdGFncmFtKCkKKworICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciArPSAx
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjICJjYW5jZWwiIHRoZSBwYWNrZXQKKyAgICAg
ICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCkKKworICAgICAgICBzZWxmLl9wYWNr
ZXQgPSBOb25lCisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gTm9uZQorCisgICAg
ZGVmIF9mbHVzaF9jdXJyZW50X2RhdGFncmFtKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGRhdGFn
cmFtX2J5dGVzID0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICBpZiBkYXRhZ3JhbV9ieXRl
czoKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtcy5hcHBlbmQoc2VsZi5fYnVmZmVyLmRhdGEp
CisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfYnl0ZXMgKz0gc2VsZi5fZGF0YWdyYW1fZmxpZ2h0
X2J5dGVzCisgICAgICAgICAgICBzZWxmLl90b3RhbF9ieXRlcyArPSBkYXRhZ3JhbV9ieXRlcwor
ICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1faW5pdCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlci5zZWVrKDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9yYW5nZXNldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg2MDg2YzljNzRmNzc1NjAzMjA4NjkwMDc2YmVlOTYzODE0NjExYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5w
eQpAQCAtMCwwICsxLDk4IEBACitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UK
K2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAorCisKK2Ns
YXNzIFJhbmdlU2V0KFNlcXVlbmNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmFuZ2VzOiBJ
dGVyYWJsZVtyYW5nZV0gPSBbXSk6CisgICAgICAgIHNlbGYuX19yYW5nZXM6IExpc3RbcmFuZ2Vd
ID0gW10KKyAgICAgICAgZm9yIHIgaW4gcmFuZ2VzOgorICAgICAgICAgICAgYXNzZXJ0IHIuc3Rl
cCA9PSAxCisgICAgICAgICAgICBzZWxmLmFkZChyLnN0YXJ0LCByLnN0b3ApCisKKyAgICBkZWYg
YWRkKHNlbGYsIHN0YXJ0OiBpbnQsIHN0b3A6IE9wdGlvbmFsW2ludF0gPSBOb25lKSAtPiBOb25l
OgorICAgICAgICBpZiBzdG9wIGlzIE5vbmU6CisgICAgICAgICAgICBzdG9wID0gc3RhcnQgKyAx
CisgICAgICAgIGFzc2VydCBzdG9wID4gc3RhcnQKKworICAgICAgICBmb3IgaSwgciBpbiBlbnVt
ZXJhdGUoc2VsZi5fX3Jhbmdlcyk6CisgICAgICAgICAgICAjIHRoZSBhZGRlZCByYW5nZSBpcyBl
bnRpcmVseSBiZWZvcmUgY3VycmVudCBpdGVtLCBpbnNlcnQgaGVyZQorICAgICAgICAgICAgaWYg
c3RvcCA8IHIuc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlcy5pbnNlcnQoaSwg
cmFuZ2Uoc3RhcnQsIHN0b3ApKQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAg
ICAjIHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBjdXJyZW50IGl0ZW0sIGtlZXAg
bG9va2luZworICAgICAgICAgICAgaWYgc3RhcnQgPiByLnN0b3A6CisgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgdG91Y2hlcyB0aGUgY3Vy
cmVudCBpdGVtLCBtZXJnZSBpdAorICAgICAgICAgICAgc3RhcnQgPSBtaW4oc3RhcnQsIHIuc3Rh
cnQpCisgICAgICAgICAgICBzdG9wID0gbWF4KHN0b3AsIHIuc3RvcCkKKyAgICAgICAgICAgIHdo
aWxlIGkgPCBsZW4oc2VsZi5fX3JhbmdlcykgLSAxIGFuZCBzZWxmLl9fcmFuZ2VzW2kgKyAxXS5z
dGFydCA8PSBzdG9wOgorICAgICAgICAgICAgICAgIHN0b3AgPSBtYXgoc2VsZi5fX3Jhbmdlc1tp
ICsgMV0uc3RvcCwgc3RvcCkKKyAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLnBvcChpICsg
MSkKKyAgICAgICAgICAgIHNlbGYuX19yYW5nZXNbaV0gPSByYW5nZShzdGFydCwgc3RvcCkKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgdGhlIGFkZGVkIHJhbmdlIGlzIGVudGlyZWx5
IGFmdGVyIGFsbCBleGlzdGluZyBpdGVtcywgYXBwZW5kIGl0CisgICAgICAgIHNlbGYuX19yYW5n
ZXMuYXBwZW5kKHJhbmdlKHN0YXJ0LCBzdG9wKSkKKworICAgIGRlZiBib3VuZHMoc2VsZikgLT4g
cmFuZ2U6CisgICAgICAgIHJldHVybiByYW5nZShzZWxmLl9fcmFuZ2VzWzBdLnN0YXJ0LCBzZWxm
Ll9fcmFuZ2VzWy0xXS5zdG9wKQorCisgICAgZGVmIHNoaWZ0KHNlbGYpIC0+IHJhbmdlOgorICAg
ICAgICByZXR1cm4gc2VsZi5fX3Jhbmdlcy5wb3AoMCkKKworICAgIGRlZiBzdWJ0cmFjdChzZWxm
LCBzdGFydDogaW50LCBzdG9wOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBzdG9wID4g
c3RhcnQKKworICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5n
ZXMpOgorICAgICAgICAgICAgciA9IHNlbGYuX19yYW5nZXNbaV0KKworICAgICAgICAgICAgIyB0
aGUgcmVtb3ZlZCByYW5nZSBpcyBlbnRpcmVseSBiZWZvcmUgY3VycmVudCBpdGVtLCBzdG9wIGhl
cmUKKyAgICAgICAgICAgIGlmIHN0b3AgPD0gci5zdGFydDoKKyAgICAgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICAgICAgIyB0aGUgcmVtb3ZlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBj
dXJyZW50IGl0ZW0sIGtlZXAgbG9va2luZworICAgICAgICAgICAgaWYgc3RhcnQgPj0gci5zdG9w
OgorICAgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgY29tcGxldGVseSBjb3ZlcnMgdGhlIGN1cnJl
bnQgaXRlbSwgcmVtb3ZlIGl0CisgICAgICAgICAgICBpZiBzdGFydCA8PSByLnN0YXJ0IGFuZCBz
dG9wID49IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLnBvcChpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2Ug
dG91Y2hlcyB0aGUgY3VycmVudCBpdGVtCisgICAgICAgICAgICBpZiBzdGFydCA+IHIuc3RhcnQ6
CisgICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHIuc3RhcnQsIHN0YXJ0
KQorICAgICAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0b3A6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX19yYW5nZXMuaW5zZXJ0KGkgKyAxLCByYW5nZShzdG9wLCByLnN0b3ApKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzW2ldID0gcmFuZ2Uoc3Rv
cCwgci5zdG9wKQorCisgICAgICAgICAgICBpICs9IDEKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxm
KSAtPiBib29sOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYg
X19jb250YWluc19fKHNlbGYsIHZhbDogQW55KSAtPiBib29sOgorICAgICAgICBmb3IgciBpbiBz
ZWxmLl9fcmFuZ2VzOgorICAgICAgICAgICAgaWYgdmFsIGluIHI6CisgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyOiBvYmplY3QpIC0+IGJvb2w6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVy
LCBSYW5nZVNldCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAg
ICByZXR1cm4gc2VsZi5fX3JhbmdlcyA9PSBvdGhlci5fX3JhbmdlcworCisgICAgZGVmIF9fZ2V0
aXRlbV9fKHNlbGYsIGtleTogQW55KSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19y
YW5nZXNba2V5XQorCisgICAgZGVmIF9fbGVuX18oc2VsZikgLT4gaW50OgorICAgICAgICByZXR1
cm4gbGVuKHNlbGYuX19yYW5nZXMpCisKKyAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgor
ICAgICAgICByZXR1cm4gIlJhbmdlU2V0KHt9KSIuZm9ybWF0KHJlcHIoc2VsZi5fX3Jhbmdlcykp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNvdmVyeS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JlY292ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
YmViMWVjZjU2NjFmNzFjOTNlNzdiZjdmYTYyYTcxNjJmMzg3MGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNvdmVyeS5weQpAQCAtMCwwICsxLDQ5
NyBAQAoraW1wb3J0IG1hdGgKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGljdCwgSXRl
cmFibGUsIExpc3QsIE9wdGlvbmFsCisKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRy
YWNlCitmcm9tIC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNT
ZW50UGFja2V0Citmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworIyBsb3NzIGRldGVj
dGlvbgorS19QQUNLRVRfVEhSRVNIT0xEID0gMworS19JTklUSUFMX1JUVCA9IDAuNSAgIyBzZWNv
bmRzCitLX0dSQU5VTEFSSVRZID0gMC4wMDEgICMgc2Vjb25kcworS19USU1FX1RIUkVTSE9MRCA9
IDkgLyA4CitLX01JQ1JPX1NFQ09ORCA9IDAuMDAwMDAxCitLX1NFQ09ORCA9IDEuMAorCisjIGNv
bmdlc3Rpb24gY29udHJvbAorS19NQVhfREFUQUdSQU1fU0laRSA9IDEyODAKK0tfSU5JVElBTF9X
SU5ET1cgPSAxMCAqIEtfTUFYX0RBVEFHUkFNX1NJWkUKK0tfTUlOSU1VTV9XSU5ET1cgPSAyICog
S19NQVhfREFUQUdSQU1fU0laRQorS19MT1NTX1JFRFVDVElPTl9GQUNUT1IgPSAwLjUKKworCitj
bGFzcyBRdWljUGFja2V0U3BhY2U6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYWNrX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYu
YWNrX3F1ZXVlID0gUmFuZ2VTZXQoKQorICAgICAgICBzZWxmLmRpc2NhcmRlZCA9IEZhbHNlCisg
ICAgICAgIHNlbGYuZXhwZWN0ZWRfcGFja2V0X251bWJlciA9IDAKKyAgICAgICAgc2VsZi5sYXJn
ZXN0X3JlY2VpdmVkX3BhY2tldCA9IC0xCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF90
aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisKKyAgICAgICAgIyBzZW50IHBhY2tldHMgYW5k
IGxvc3MKKyAgICAgICAgc2VsZi5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAgICAgICAg
c2VsZi5sYXJnZXN0X2Fja2VkX3BhY2tldCA9IDAKKyAgICAgICAgc2VsZi5sb3NzX3RpbWU6IE9w
dGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5zZW50X3BhY2tldHM6IERpY3RbaW50
LCBRdWljU2VudFBhY2tldF0gPSB7fQorCisKK2NsYXNzIFF1aWNQYWNrZXRQYWNlcjoKKyAgICBk
ZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5idWNrZXRfbWF4OiBmbG9h
dCA9IDAuMAorICAgICAgICBzZWxmLmJ1Y2tldF90aW1lOiBmbG9hdCA9IDAuMAorICAgICAgICBz
ZWxmLmV2YWx1YXRpb25fdGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5wYWNrZXRfdGlt
ZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorCisgICAgZGVmIG5leHRfc2VuZF90aW1lKHNlbGYs
IG5vdzogZmxvYXQpIC0+IGZsb2F0OgorICAgICAgICBpZiBzZWxmLnBhY2tldF90aW1lIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgc2VsZi51cGRhdGVfYnVja2V0KG5vdz1ub3cpCisgICAgICAg
ICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lIDw9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5v
dyArIHNlbGYucGFja2V0X3RpbWUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiB1cGRh
dGVfYWZ0ZXJfc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBpZiBzZWxm
LnBhY2tldF90aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi51cGRhdGVfYnVja2V0
KG5vdz1ub3cpCisgICAgICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lIDwgc2VsZi5wYWNrZXRf
dGltZToKKyAgICAgICAgICAgICAgICBzZWxmLmJ1Y2tldF90aW1lID0gMC4wCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYnVja2V0X3RpbWUgLT0gc2VsZi5wYWNrZXRf
dGltZQorCisgICAgZGVmIHVwZGF0ZV9idWNrZXQoc2VsZiwgbm93OiBmbG9hdCkgLT4gTm9uZToK
KyAgICAgICAgaWYgbm93ID4gc2VsZi5ldmFsdWF0aW9uX3RpbWU6CisgICAgICAgICAgICBzZWxm
LmJ1Y2tldF90aW1lID0gbWluKAorICAgICAgICAgICAgICAgIHNlbGYuYnVja2V0X3RpbWUgKyAo
bm93IC0gc2VsZi5ldmFsdWF0aW9uX3RpbWUpLCBzZWxmLmJ1Y2tldF9tYXgKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuZXZhbHVhdGlvbl90aW1lID0gbm93CisKKyAgICBkZWYgdXBk
YXRlX3JhdGUoc2VsZiwgY29uZ2VzdGlvbl93aW5kb3c6IGludCwgc21vb3RoZWRfcnR0OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgcGFjaW5nX3JhdGUgPSBjb25nZXN0aW9uX3dpbmRvdyAvIG1h
eChzbW9vdGhlZF9ydHQsIEtfTUlDUk9fU0VDT05EKQorICAgICAgICBzZWxmLnBhY2tldF90aW1l
ID0gbWF4KAorICAgICAgICAgICAgS19NSUNST19TRUNPTkQsIG1pbihLX01BWF9EQVRBR1JBTV9T
SVpFIC8gcGFjaW5nX3JhdGUsIEtfU0VDT05EKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5i
dWNrZXRfbWF4ID0gKAorICAgICAgICAgICAgbWF4KAorICAgICAgICAgICAgICAgIDIgKiBLX01B
WF9EQVRBR1JBTV9TSVpFLAorICAgICAgICAgICAgICAgIG1pbihjb25nZXN0aW9uX3dpbmRvdyAv
LyA0LCAxNiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUpLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgLyBwYWNpbmdfcmF0ZQorICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYnVja2V0X3RpbWUg
PiBzZWxmLmJ1Y2tldF9tYXg6CisgICAgICAgICAgICBzZWxmLmJ1Y2tldF90aW1lID0gc2VsZi5i
dWNrZXRfbWF4CisKKworY2xhc3MgUXVpY0Nvbmdlc3Rpb25Db250cm9sOgorICAgICIiIgorICAg
IE5ldyBSZW5vIGNvbmdlc3Rpb24gY29udHJvbC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmJ5dGVzX2luX2ZsaWdodCA9IDAKKyAgICAg
ICAgc2VsZi5jb25nZXN0aW9uX3dpbmRvdyA9IEtfSU5JVElBTF9XSU5ET1cKKyAgICAgICAgc2Vs
Zi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lID0gMC4wCisgICAgICAgIHNlbGYuX2Nv
bmdlc3Rpb25fc3Rhc2ggPSAwCisgICAgICAgIHNlbGYuX3J0dF9tb25pdG9yID0gUXVpY1J0dE1v
bml0b3IoKQorICAgICAgICBzZWxmLnNzdGhyZXNoOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisg
ICAgZGVmIG9uX3BhY2tldF9hY2tlZChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0KSAtPiBO
b25lOgorICAgICAgICBzZWxmLmJ5dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcwor
CisgICAgICAgICMgZG9uJ3QgaW5jcmVhc2Ugd2luZG93IGluIGNvbmdlc3Rpb24gcmVjb3ZlcnkK
KyAgICAgICAgaWYgcGFja2V0LnNlbnRfdGltZSA8PSBzZWxmLl9jb25nZXN0aW9uX3JlY292ZXJ5
X3N0YXJ0X3RpbWU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLnNzdGhy
ZXNoIGlzIE5vbmUgb3Igc2VsZi5jb25nZXN0aW9uX3dpbmRvdyA8IHNlbGYuc3N0aHJlc2g6Cisg
ICAgICAgICAgICAjIHNsb3cgc3RhcnQKKyAgICAgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5k
b3cgKz0gcGFja2V0LnNlbnRfYnl0ZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY29u
Z2VzdGlvbiBhdm9pZGFuY2UKKyAgICAgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggKz0g
cGFja2V0LnNlbnRfYnl0ZXMKKyAgICAgICAgICAgIGNvdW50ID0gc2VsZi5fY29uZ2VzdGlvbl9z
dGFzaCAvLyBzZWxmLmNvbmdlc3Rpb25fd2luZG93CisgICAgICAgICAgICBpZiBjb3VudDoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoIC09IGNvdW50ICogc2VsZi5jb25n
ZXN0aW9uX3dpbmRvdworICAgICAgICAgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgKz0g
Y291bnQgKiBLX01BWF9EQVRBR1JBTV9TSVpFCisKKyAgICBkZWYgb25fcGFja2V0X3NlbnQoc2Vs
ZiwgcGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ieXRlc19p
bl9mbGlnaHQgKz0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgIGRlZiBvbl9wYWNrZXRzX2V4cGly
ZWQoc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQYWNrZXRdKSAtPiBOb25lOgorICAg
ICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAgICAgICBzZWxmLmJ5dGVzX2luX2Zs
aWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworCisgICAgZGVmIG9uX3BhY2tldHNfbG9zdChzZWxm
LCBwYWNrZXRzOiBJdGVyYWJsZVtRdWljU2VudFBhY2tldF0sIG5vdzogZmxvYXQpIC0+IE5vbmU6
CisgICAgICAgIGxvc3RfbGFyZ2VzdF90aW1lID0gMC4wCisgICAgICAgIGZvciBwYWNrZXQgaW4g
cGFja2V0czoKKyAgICAgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0IC09IHBhY2tldC5zZW50
X2J5dGVzCisgICAgICAgICAgICBsb3N0X2xhcmdlc3RfdGltZSA9IHBhY2tldC5zZW50X3RpbWUK
KworICAgICAgICAjIHN0YXJ0IGEgbmV3IGNvbmdlc3Rpb24gZXZlbnQgaWYgcGFja2V0IHdhcyBz
ZW50IGFmdGVyIHRoZQorICAgICAgICAjIHN0YXJ0IG9mIHRoZSBwcmV2aW91cyBjb25nZXN0aW9u
IHJlY292ZXJ5IHBlcmlvZC4KKyAgICAgICAgaWYgbG9zdF9sYXJnZXN0X3RpbWUgPiBzZWxmLl9j
b25nZXN0aW9uX3JlY292ZXJ5X3N0YXJ0X3RpbWU6CisgICAgICAgICAgICBzZWxmLl9jb25nZXN0
aW9uX3JlY292ZXJ5X3N0YXJ0X3RpbWUgPSBub3cKKyAgICAgICAgICAgIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPSBtYXgoCisgICAgICAgICAgICAgICAgaW50KHNlbGYuY29uZ2VzdGlvbl93aW5k
b3cgKiBLX0xPU1NfUkVEVUNUSU9OX0ZBQ1RPUiksIEtfTUlOSU1VTV9XSU5ET1cKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuc3N0aHJlc2ggPSBzZWxmLmNvbmdlc3Rpb25fd2luZG93
CisKKyAgICAgICAgIyBUT0RPIDogY29sbGFwc2UgY29uZ2VzdGlvbiB3aW5kb3cgaWYgcGVyc2lz
dGVudCBjb25nZXN0aW9uCisKKyAgICBkZWYgb25fcnR0X21lYXN1cmVtZW50KHNlbGYsIGxhdGVz
dF9ydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAjIGNoZWNrIHdoZXRo
ZXIgd2Ugc2hvdWxkIGV4aXQgc2xvdyBzdGFydAorICAgICAgICBpZiBzZWxmLnNzdGhyZXNoIGlz
IE5vbmUgYW5kIHNlbGYuX3J0dF9tb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKAorICAgICAgICAg
ICAgbGF0ZXN0X3J0dCwgbm93CisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLnNzdGhyZXNo
ID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNvdmVyeToK
KyAgICAiIiIKKyAgICBQYWNrZXQgbG9zcyBhbmQgY29uZ2VzdGlvbiBjb250cm9sbGVyLgorICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGll
bnRfd2l0aG91dF8xcnR0OiBib29sLAorICAgICAgICBzZW5kX3Byb2JlOiBDYWxsYWJsZVtbXSwg
Tm9uZV0sCisgICAgICAgIHF1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0g
Tm9uZSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfY2xpZW50X3dpdGhvdXRfMXJ0
dCA9IGlzX2NsaWVudF93aXRob3V0XzFydHQKKyAgICAgICAgc2VsZi5tYXhfYWNrX2RlbGF5ID0g
MC4wMjUKKyAgICAgICAgc2VsZi5zcGFjZXM6IExpc3RbUXVpY1BhY2tldFNwYWNlXSA9IFtdCisK
KyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgPSBxdWljX2xv
Z2dlcgorICAgICAgICBzZWxmLl9zZW5kX3Byb2JlID0gc2VuZF9wcm9iZQorCisgICAgICAgICMg
bG9zcyBkZXRlY3Rpb24KKyAgICAgICAgc2VsZi5fcHRvX2NvdW50ID0gMAorICAgICAgICBzZWxm
Ll9ydHRfaW5pdGlhbGl6ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ydHRfbGF0ZXN0ID0gMC4w
CisgICAgICAgIHNlbGYuX3J0dF9taW4gPSBtYXRoLmluZgorICAgICAgICBzZWxmLl9ydHRfc21v
b3RoZWQgPSAwLjAKKyAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gMC4wCisgICAgICAgIHNl
bGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRpbmdfcGFja2V0ID0gMC4wCisKKyAgICAg
ICAgIyBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgc2VsZi5fY2MgPSBRdWljQ29uZ2VzdGlv
bkNvbnRyb2woKQorICAgICAgICBzZWxmLl9wYWNlciA9IFF1aWNQYWNrZXRQYWNlcigpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgYnl0ZXNfaW5fZmxpZ2h0KHNlbGYpIC0+IGludDoKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodAorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIGNvbmdlc3Rpb25fd2luZG93KHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2NjLmNvbmdlc3Rpb25fd2luZG93CisKKyAgICBkZWYgZGlzY2FyZF9zcGFjZShzZWxmLCBzcGFj
ZTogUXVpY1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBhc3NlcnQgc3BhY2UgaW4gc2Vs
Zi5zcGFjZXMKKworICAgICAgICBzZWxmLl9jYy5vbl9wYWNrZXRzX2V4cGlyZWQoCisgICAgICAg
ICAgICBmaWx0ZXIobGFtYmRhIHg6IHguaW5fZmxpZ2h0LCBzcGFjZS5zZW50X3BhY2tldHMudmFs
dWVzKCkpCisgICAgICAgICkKKyAgICAgICAgc3BhY2Uuc2VudF9wYWNrZXRzLmNsZWFyKCkKKwor
ICAgICAgICBzcGFjZS5hY2tfYXQgPSBOb25lCisgICAgICAgIHNwYWNlLmFja19lbGljaXRpbmdf
aW5fZmxpZ2h0ID0gMAorICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBOb25lCisKKyAgICAgICAg
aWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9sb2df
bWV0cmljc191cGRhdGVkKCkKKworICAgIGRlZiBnZXRfZWFybGllc3RfbG9zc19zcGFjZShzZWxm
KSAtPiBPcHRpb25hbFtRdWljUGFja2V0U3BhY2VdOgorICAgICAgICBsb3NzX3NwYWNlID0gTm9u
ZQorICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAgICBpZiBzcGFj
ZS5sb3NzX3RpbWUgaXMgbm90IE5vbmUgYW5kICgKKyAgICAgICAgICAgICAgICBsb3NzX3NwYWNl
IGlzIE5vbmUgb3Igc3BhY2UubG9zc190aW1lIDwgbG9zc19zcGFjZS5sb3NzX3RpbWUKKyAgICAg
ICAgICAgICk6CisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSA9IHNwYWNlCisgICAgICAgIHJl
dHVybiBsb3NzX3NwYWNlCisKKyAgICBkZWYgZ2V0X2xvc3NfZGV0ZWN0aW9uX3RpbWUoc2VsZikg
LT4gZmxvYXQ6CisgICAgICAgICMgbG9zcyB0aW1lcgorICAgICAgICBsb3NzX3NwYWNlID0gc2Vs
Zi5nZXRfZWFybGllc3RfbG9zc19zcGFjZSgpCisgICAgICAgIGlmIGxvc3Nfc3BhY2UgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gbG9zc19zcGFjZS5sb3NzX3RpbWUKKworICAgICAg
ICAjIHBhY2tldCB0aW1lcgorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLmlzX2NsaWVu
dF93aXRob3V0XzFydHQKKyAgICAgICAgICAgIG9yIHN1bShzcGFjZS5hY2tfZWxpY2l0aW5nX2lu
X2ZsaWdodCBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXMpID4gMAorICAgICAgICApOgorICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX3J0dF9pbml0aWFsaXplZDoKKyAgICAgICAgICAgICAgICB0aW1l
b3V0ID0gMiAqIEtfSU5JVElBTF9SVFQgKiAoMiAqKiBzZWxmLl9wdG9fY291bnQpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldF9wcm9iZV90aW1l
b3V0KCkgKiAoMiAqKiBzZWxmLl9wdG9fY291bnQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5f
dGltZV9vZl9sYXN0X3NlbnRfYWNrX2VsaWNpdGluZ19wYWNrZXQgKyB0aW1lb3V0CisKKyAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBnZXRfcHJvYmVfdGltZW91dChzZWxmKSAtPiBmbG9h
dDoKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuX3J0dF9zbW9vdGhlZAorICAg
ICAgICAgICAgKyBtYXgoNCAqIHNlbGYuX3J0dF92YXJpYW5jZSwgS19HUkFOVUxBUklUWSkKKyAg
ICAgICAgICAgICsgc2VsZi5tYXhfYWNrX2RlbGF5CisgICAgICAgICkKKworICAgIGRlZiBvbl9h
Y2tfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsCisgICAgICAgIHNwYWNlOiBRdWljUGFja2V0U3Bh
Y2UsCisgICAgICAgIGFja19yYW5nZXNldDogUmFuZ2VTZXQsCisgICAgICAgIGFja19kZWxheTog
ZmxvYXQsCisgICAgICAgIG5vdzogZmxvYXQsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgVXBkYXRlIG1ldHJpY3MgYXMgdGhlIHJlc3VsdCBvZiBhbiBBQ0sgYmVpbmcgcmVj
ZWl2ZWQuCisgICAgICAgICIiIgorICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gRmFsc2UKKyAg
ICAgICAgbGFyZ2VzdF9hY2tlZCA9IGFja19yYW5nZXNldC5ib3VuZHMoKS5zdG9wIC0gMQorICAg
ICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0gTm9uZQorICAgICAgICBsYXJnZXN0X3NlbnRfdGlt
ZSA9IE5vbmUKKworICAgICAgICBpZiBsYXJnZXN0X2Fja2VkID4gc3BhY2UubGFyZ2VzdF9hY2tl
ZF9wYWNrZXQ6CisgICAgICAgICAgICBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldCA9IGxhcmdl
c3RfYWNrZWQKKworICAgICAgICBmb3IgcGFja2V0X251bWJlciBpbiBzb3J0ZWQoc3BhY2Uuc2Vu
dF9wYWNrZXRzLmtleXMoKSk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gbGFyZ2Vz
dF9hY2tlZDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgcGFja2V0X251
bWJlciBpbiBhY2tfcmFuZ2VzZXQ6CisgICAgICAgICAgICAgICAgIyByZW1vdmUgcGFja2V0IGFu
ZCB1cGRhdGUgY291bnRlcnMKKyAgICAgICAgICAgICAgICBwYWNrZXQgPSBzcGFjZS5zZW50X3Bh
Y2tldHMucG9wKHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fj
a19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmcgPSBUcnVl
CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0IC09IDEK
KyAgICAgICAgICAgICAgICBpZiBwYWNrZXQuaW5fZmxpZ2h0OgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9jYy5vbl9wYWNrZXRfYWNrZWQocGFja2V0KQorICAgICAgICAgICAgICAgIGxhcmdl
c3RfbmV3bHlfYWNrZWQgPSBwYWNrZXRfbnVtYmVyCisgICAgICAgICAgICAgICAgbGFyZ2VzdF9z
ZW50X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgICAgICAgICAjIHRyaWdnZXIg
Y2FsbGJhY2tzCisgICAgICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0LmRl
bGl2ZXJ5X2hhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKFF1aWNEZWxpdmVy
eVN0YXRlLkFDS0VELCAqYXJncykKKworICAgICAgICAjIG5vdGhpbmcgdG8gZG8gaWYgdGhlcmUg
YXJlIG5vIG5ld2x5IGFja2VkIHBhY2tldHMKKyAgICAgICAgaWYgbGFyZ2VzdF9uZXdseV9hY2tl
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbGFyZ2VzdF9hY2tl
ZCA9PSBsYXJnZXN0X25ld2x5X2Fja2VkIGFuZCBpc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAg
ICAgbGF0ZXN0X3J0dCA9IG5vdyAtIGxhcmdlc3Rfc2VudF90aW1lCisgICAgICAgICAgICBsb2df
cnR0ID0gVHJ1ZQorCisgICAgICAgICAgICAjIGxpbWl0IEFDSyBkZWxheSB0byBtYXhfYWNrX2Rl
bGF5CisgICAgICAgICAgICBhY2tfZGVsYXkgPSBtaW4oYWNrX2RlbGF5LCBzZWxmLm1heF9hY2tf
ZGVsYXkpCisKKyAgICAgICAgICAgICMgdXBkYXRlIFJUVCBlc3RpbWF0ZSwgd2hpY2ggY2Fubm90
IGJlIDwgMSBtcworICAgICAgICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IG1heChsYXRlc3RfcnR0
LCAwLjAwMSkKKyAgICAgICAgICAgIGlmIHNlbGYuX3J0dF9sYXRlc3QgPCBzZWxmLl9ydHRfbWlu
OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9taW4gPSBzZWxmLl9ydHRfbGF0ZXN0CisgICAg
ICAgICAgICBpZiBzZWxmLl9ydHRfbGF0ZXN0ID4gc2VsZi5fcnR0X21pbiArIGFja19kZWxheToK
KyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfbGF0ZXN0IC09IGFja19kZWxheQorCisgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fcnR0X2luaXRpYWxpemVkOgorICAgICAgICAgICAgICAgIHNlbGYu
X3J0dF9pbml0aWFsaXplZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfdmFyaWFu
Y2UgPSBsYXRlc3RfcnR0IC8gMgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9zbW9vdGhlZCA9
IGxhdGVzdF9ydHQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0
X3ZhcmlhbmNlID0gMyAvIDQgKiBzZWxmLl9ydHRfdmFyaWFuY2UgKyAxIC8gNCAqIGFicygKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcnR0X21pbiAtIHNlbGYuX3J0dF9sYXRlc3QKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gKAorICAg
ICAgICAgICAgICAgICAgICA3IC8gOCAqIHNlbGYuX3J0dF9zbW9vdGhlZCArIDEgLyA4ICogc2Vs
Zi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBpbmZvcm0g
Y29uZ2VzdGlvbiBjb250cm9sbGVyCisgICAgICAgICAgICBzZWxmLl9jYy5vbl9ydHRfbWVhc3Vy
ZW1lbnQobGF0ZXN0X3J0dCwgbm93PW5vdykKKyAgICAgICAgICAgIHNlbGYuX3BhY2VyLnVwZGF0
ZV9yYXRlKAorICAgICAgICAgICAgICAgIGNvbmdlc3Rpb25fd2luZG93PXNlbGYuX2NjLmNvbmdl
c3Rpb25fd2luZG93LAorICAgICAgICAgICAgICAgIHNtb290aGVkX3J0dD1zZWxmLl9ydHRfc21v
b3RoZWQsCisgICAgICAgICAgICApCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ19y
dHQgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9bm93KQor
CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
c2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZChsb2dfcnR0PWxvZ19ydHQpCisKKyAgICAgICAgc2Vs
Zi5fcHRvX2NvdW50ID0gMAorCisgICAgZGVmIG9uX2xvc3NfZGV0ZWN0aW9uX3RpbWVvdXQoc2Vs
Ziwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2Vh
cmxpZXN0X2xvc3Nfc3BhY2UoKQorICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5fZGV0ZWN0X2xvc3MobG9zc19zcGFjZSwgbm93PW5vdykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3B0b19jb3VudCArPSAxCisKKyAgICAgICAgICAg
ICMgcmVzY2hlZHVsZSBzb21lIGRhdGEKKyAgICAgICAgICAgIGZvciBzcGFjZSBpbiBzZWxmLnNw
YWNlczoKKyAgICAgICAgICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgICAg
ICAgICAgICAgIHR1cGxlKAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBpOiBpLmlzX2NyeXB0b19wYWNrZXQsIHNwYWNl
LnNlbnRfcGFja2V0cy52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBzcGFjZT1zcGFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgbm93PW5vdywKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg
IHNlbGYuX3NlbmRfcHJvYmUoKQorCisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tl
dDogUXVpY1NlbnRQYWNrZXQsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UpIC0+IE5vbmU6CisgICAg
ICAgIHNwYWNlLnNlbnRfcGFja2V0c1twYWNrZXQucGFja2V0X251bWJlcl0gPSBwYWNrZXQKKwor
ICAgICAgICBpZiBwYWNrZXQuaXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIHNwYWNlLmFj
a19lbGljaXRpbmdfaW5fZmxpZ2h0ICs9IDEKKyAgICAgICAgaWYgcGFja2V0LmluX2ZsaWdodDoK
KyAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAgICAg
IHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRpbmdfcGFja2V0ID0gcGFja2V0LnNl
bnRfdGltZQorCisgICAgICAgICAgICAjIGFkZCBwYWNrZXQgdG8gYnl0ZXMgaW4gZmxpZ2h0Cisg
ICAgICAgICAgICBzZWxmLl9jYy5vbl9wYWNrZXRfc2VudChwYWNrZXQpCisKKyAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ19tZXRyaWNzX3VwZGF0ZWQoKQorCisgICAgZGVmIF9kZXRlY3RfbG9zcyhzZWxmLCBzcGFj
ZTogUXVpY1BhY2tldFNwYWNlLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgQ2hlY2sgd2hldGhlciBhbnkgcGFja2V0cyBzaG91bGQgYmUgZGVjbGFyZWQgbG9zdC4K
KyAgICAgICAgIiIiCisgICAgICAgIGxvc3NfZGVsYXkgPSBLX1RJTUVfVEhSRVNIT0xEICogKAor
ICAgICAgICAgICAgbWF4KHNlbGYuX3J0dF9sYXRlc3QsIHNlbGYuX3J0dF9zbW9vdGhlZCkKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3J0dF9pbml0aWFsaXplZAorICAgICAgICAgICAgZWxzZSBLX0lO
SVRJQUxfUlRUCisgICAgICAgICkKKyAgICAgICAgcGFja2V0X3RocmVzaG9sZCA9IHNwYWNlLmxh
cmdlc3RfYWNrZWRfcGFja2V0IC0gS19QQUNLRVRfVEhSRVNIT0xECisgICAgICAgIHRpbWVfdGhy
ZXNob2xkID0gbm93IC0gbG9zc19kZWxheQorCisgICAgICAgIGxvc3RfcGFja2V0cyA9IFtdCisg
ICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IE5vbmUKKyAgICAgICAgZm9yIHBhY2tldF9udW1iZXIs
IHBhY2tldCBpbiBzcGFjZS5zZW50X3BhY2tldHMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHBh
Y2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldDoKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyIDw9IHBhY2tldF90aHJlc2hv
bGQgb3IgcGFja2V0LnNlbnRfdGltZSA8PSB0aW1lX3RocmVzaG9sZDoKKyAgICAgICAgICAgICAg
ICBsb3N0X3BhY2tldHMuYXBwZW5kKHBhY2tldCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgcGFja2V0X2xvc3NfdGltZSA9IHBhY2tldC5zZW50X3RpbWUgKyBsb3NzX2RlbGF5
CisgICAgICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIE5vbmUgb3Igc3BhY2UubG9z
c190aW1lID4gcGFja2V0X2xvc3NfdGltZToKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UubG9z
c190aW1lID0gcGFja2V0X2xvc3NfdGltZQorCisgICAgICAgIHNlbGYuX29uX3BhY2tldHNfbG9z
dChsb3N0X3BhY2tldHMsIHNwYWNlPXNwYWNlLCBub3c9bm93KQorCisgICAgZGVmIF9sb2dfbWV0
cmljc191cGRhdGVkKHNlbGYsIGxvZ19ydHQ9RmFsc2UpIC0+IE5vbmU6CisgICAgICAgIGRhdGEg
PSB7CisgICAgICAgICAgICAiYnl0ZXNfaW5fZmxpZ2h0Ijogc2VsZi5fY2MuYnl0ZXNfaW5fZmxp
Z2h0LAorICAgICAgICAgICAgImN3bmQiOiBzZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAg
ICAgICAgfQorICAgICAgICBpZiBzZWxmLl9jYy5zc3RocmVzaCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGRhdGFbInNzdGhyZXNoIl0gPSBzZWxmLl9jYy5zc3RocmVzaAorCisgICAgICAgIGlm
IGxvZ19ydHQ6CisgICAgICAgICAgICBkYXRhLnVwZGF0ZSgKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICJsYXRlc3RfcnR0Ijogc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X3RpbWUoc2VsZi5fcnR0X2xhdGVzdCksCisgICAgICAgICAgICAgICAgICAgICJtaW5fcnR0Ijog
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X21pbiksCisgICAgICAgICAg
ICAgICAgICAgICJzbW9vdGhlZF9ydHQiOiBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfdGltZShz
ZWxmLl9ydHRfc21vb3RoZWQpLAorICAgICAgICAgICAgICAgICAgICAicnR0X3ZhcmlhbmNlIjog
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3ZhcmlhbmNlKSwKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
bG9nX2V2ZW50KAorICAgICAgICAgICAgY2F0ZWdvcnk9InJlY292ZXJ5IiwgZXZlbnQ9Im1ldHJp
Y3NfdXBkYXRlZCIsIGRhdGE9ZGF0YQorICAgICAgICApCisKKyAgICBkZWYgX29uX3BhY2tldHNf
bG9zdCgKKyAgICAgICAgc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQYWNrZXRdLCBz
cGFjZTogUXVpY1BhY2tldFNwYWNlLCBub3c6IGZsb2F0CisgICAgKSAtPiBOb25lOgorICAgICAg
ICBsb3N0X3BhY2tldHNfY2MgPSBbXQorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6Cisg
ICAgICAgICAgICBkZWwgc3BhY2Uuc2VudF9wYWNrZXRzW3BhY2tldC5wYWNrZXRfbnVtYmVyXQor
CisgICAgICAgICAgICBpZiBwYWNrZXQuaW5fZmxpZ2h0OgorICAgICAgICAgICAgICAgIGxvc3Rf
cGFja2V0c19jYy5hcHBlbmQocGFja2V0KQorCisgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNr
X2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdo
dCAtPSAxCisKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAg
ICAgICAgICAgY2F0ZWdvcnk9InJlY292ZXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9
InBhY2tldF9sb3N0IiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAg
ICAgICAgICAgICAidHlwZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLnBhY2tldF90eXBlKHBhY2tldC5w
YWNrZXRfdHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0
cihwYWNrZXQucGFja2V0X251bWJlciksCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQoKQor
CisgICAgICAgICAgICAjIHRyaWdnZXIgY2FsbGJhY2tzCisgICAgICAgICAgICBmb3IgaGFuZGxl
ciwgYXJncyBpbiBwYWNrZXQuZGVsaXZlcnlfaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaGFu
ZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAqYXJncykKKworICAgICAgICAjIGluZm9ybSBj
b25nZXN0aW9uIGNvbnRyb2xsZXIKKyAgICAgICAgaWYgbG9zdF9wYWNrZXRzX2NjOgorICAgICAg
ICAgICAgc2VsZi5fY2Mub25fcGFja2V0c19sb3N0KGxvc3RfcGFja2V0c19jYywgbm93PW5vdykK
KyAgICAgICAgICAgIHNlbGYuX3BhY2VyLnVwZGF0ZV9yYXRlKAorICAgICAgICAgICAgICAgIGNv
bmdlc3Rpb25fd2luZG93PXNlbGYuX2NjLmNvbmdlc3Rpb25fd2luZG93LAorICAgICAgICAgICAg
ICAgIHNtb290aGVkX3J0dD1zZWxmLl9ydHRfc21vb3RoZWQsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworCitjbGFzcyBRdWljUnR0TW9uaXRvcjoK
KyAgICAiIiIKKyAgICBSb3VuZHRyaXAgdGltZSBtb25pdG9yIGZvciBIeVN0YXJ0LgorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2luY3Jl
YXNlcyA9IDAKKyAgICAgICAgc2VsZi5fbGFzdF90aW1lID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWFkeSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3NpemUgPSA1CisKKyAgICAgICAgc2VsZi5fZmls
dGVyZWRfbWluOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc2FtcGxl
X2lkeCA9IDAKKyAgICAgICAgc2VsZi5fc2FtcGxlX21heDogT3B0aW9uYWxbZmxvYXRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9zYW1wbGVfbWluOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3NhbXBsZV90aW1lID0gMC4wCisgICAgICAgIHNlbGYuX3NhbXBsZXMgPSBbMC4w
IGZvciBpIGluIHJhbmdlKHNlbGYuX3NpemUpXQorCisgICAgZGVmIGFkZF9ydHQoc2VsZiwgcnR0
OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fc2FtcGxlc1tzZWxmLl9zYW1wbGVfaWR4
XSA9IHJ0dAorICAgICAgICBzZWxmLl9zYW1wbGVfaWR4ICs9IDEKKworICAgICAgICBpZiBzZWxm
Ll9zYW1wbGVfaWR4ID49IHNlbGYuX3NpemU6CisgICAgICAgICAgICBzZWxmLl9zYW1wbGVfaWR4
ID0gMAorICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCisKKyAgICAgICAgaWYgc2VsZi5f
cmVhZHk6CisgICAgICAgICAgICBzZWxmLl9zYW1wbGVfbWF4ID0gc2VsZi5fc2FtcGxlc1swXQor
ICAgICAgICAgICAgc2VsZi5fc2FtcGxlX21pbiA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAg
ICAgIGZvciBzYW1wbGUgaW4gc2VsZi5fc2FtcGxlc1sxOl06CisgICAgICAgICAgICAgICAgaWYg
c2FtcGxlIDwgc2VsZi5fc2FtcGxlX21pbjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Ft
cGxlX21pbiA9IHNhbXBsZQorICAgICAgICAgICAgICAgIGVsaWYgc2FtcGxlID4gc2VsZi5fc2Ft
cGxlX21heDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2FtcGxlX21heCA9IHNhbXBsZQor
CisgICAgZGVmIGlzX3J0dF9pbmNyZWFzaW5nKHNlbGYsIHJ0dDogZmxvYXQsIG5vdzogZmxvYXQp
IC0+IGJvb2w6CisgICAgICAgIGlmIG5vdyA+IHNlbGYuX3NhbXBsZV90aW1lICsgS19HUkFOVUxB
UklUWToKKyAgICAgICAgICAgIHNlbGYuYWRkX3J0dChydHQpCisgICAgICAgICAgICBzZWxmLl9z
YW1wbGVfdGltZSA9IG5vdworCisgICAgICAgICAgICBpZiBzZWxmLl9yZWFkeToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9maWx0ZXJlZF9taW4gaXMgTm9uZSBvciBzZWxmLl9maWx0ZXJlZF9t
aW4gPiBzZWxmLl9zYW1wbGVfbWF4OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWx0ZXJl
ZF9taW4gPSBzZWxmLl9zYW1wbGVfbWF4CisKKyAgICAgICAgICAgICAgICBkZWx0YSA9IHNlbGYu
X3NhbXBsZV9taW4gLSBzZWxmLl9maWx0ZXJlZF9taW4KKyAgICAgICAgICAgICAgICBpZiBkZWx0
YSAqIDQgPj0gc2VsZi5fZmlsdGVyZWRfbWluOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9p
bmNyZWFzZXMgKz0gMQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmNyZWFzZXMgPj0g
c2VsZi5fc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAg
ICAgICAgICAgZWxpZiBkZWx0YSA+IDA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luY3Jl
YXNlcyA9IDAKKyAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L3JldHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NWMzYTVjNTVjOWEzOTU4OTM5OGM5N2NlZTk2NWMyYjM3
MDY2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9y
ZXRyeS5weQpAQCAtMCwwICsxLDM5IEBACitpbXBvcnQgaXBhZGRyZXNzCisKK2Zyb20gY3J5cHRv
Z3JhcGh5Lmhhem1hdC5iYWNrZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0
b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzCitmcm9tIGNyeXB0b2dyYXBo
eS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCBwYWRkaW5nLCByc2EKKworZnJv
bSAuY29ubmVjdGlvbiBpbXBvcnQgTmV0d29ya0FkZHJlc3MKKworCitkZWYgZW5jb2RlX2FkZHJl
c3MoYWRkcjogTmV0d29ya0FkZHJlc3MpIC0+IGJ5dGVzOgorICAgIHJldHVybiBpcGFkZHJlc3Mu
aXBfYWRkcmVzcyhhZGRyWzBdKS5wYWNrZWQgKyBieXRlcyhbYWRkclsxXSA+PiA4LCBhZGRyWzFd
ICYgMHhGRl0pCisKKworY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5kbGVyOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLl9rZXkgPSByc2EuZ2VuZXJhdGVfcHJp
dmF0ZV9rZXkoCisgICAgICAgICAgICBwdWJsaWNfZXhwb25lbnQ9NjU1MzcsIGtleV9zaXplPTEw
MjQsIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCkKKyAgICAgICAgKQorCisgICAgZGVmIGNyZWF0
ZV90b2tlbihzZWxmLCBhZGRyOiBOZXR3b3JrQWRkcmVzcywgZGVzdGluYXRpb25fY2lkOiBieXRl
cykgLT4gYnl0ZXM6CisgICAgICAgIHJldHJ5X21lc3NhZ2UgPSBlbmNvZGVfYWRkcmVzcyhhZGRy
KSArIGIifCIgKyBkZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tleS5wdWJs
aWNfa2V5KCkuZW5jcnlwdCgKKyAgICAgICAgICAgIHJldHJ5X21lc3NhZ2UsCisgICAgICAgICAg
ICBwYWRkaW5nLk9BRVAoCisgICAgICAgICAgICAgICAgbWdmPXBhZGRpbmcuTUdGMShoYXNoZXMu
U0hBMjU2KCkpLCBhbGdvcml0aG09aGFzaGVzLlNIQTI1NigpLCBsYWJlbD1Ob25lCisgICAgICAg
ICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdmFsaWRhdGVfdG9rZW4oc2VsZiwgYWRkcjog
TmV0d29ya0FkZHJlc3MsIHRva2VuOiBieXRlcykgLT4gYnl0ZXM6CisgICAgICAgIHJldHJ5X21l
c3NhZ2UgPSBzZWxmLl9rZXkuZGVjcnlwdCgKKyAgICAgICAgICAgIHRva2VuLAorICAgICAgICAg
ICAgcGFkZGluZy5PQUVQKAorICAgICAgICAgICAgICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVz
LlNIQTI1NigpKSwgYWxnb3JpdGhtPWhhc2hlcy5TSEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBlbmNvZGVkX2FkZHIsIG9yaWdpbmFsX2Nvbm5l
Y3Rpb25faWQgPSByZXRyeV9tZXNzYWdlLnNwbGl0KGIifCIsIG1heHNwbGl0PTEpCisgICAgICAg
IGlmIGVuY29kZWRfYWRkciAhPSBlbmNvZGVfYWRkcmVzcyhhZGRyKToKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIlJlbW90ZSBhZGRyZXNzIGRvZXMgbm90IG1hdGNoLiIpCisgICAgICAg
IHJldHVybiBvcmlnaW5hbF9jb25uZWN0aW9uX2lkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9zdHJlYW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTYyMzY4NmY1ZDZiY2Q2ZjkwYjRlNTNmMzcxNGYzYmY5
YjZmNjE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L3N0cmVhbS5weQpAQCAtMCwwICsxLDIxNCBAQAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFs
CisKK2Zyb20gLiBpbXBvcnQgZXZlbnRzCitmcm9tIC5wYWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1G
cmFtZQorZnJvbSAucGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9t
IC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworCitjbGFzcyBRdWljU3RyZWFtOgorICAgIGRl
ZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgc3RyZWFtX2lkOiBPcHRpb25hbFtp
bnRdID0gTm9uZSwKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsOiBpbnQgPSAwLAorICAg
ICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlOiBpbnQgPSAwLAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5pc19ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2Rh
dGFfbG9jYWwgPSBtYXhfc3RyZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFt
X2RhdGFfbG9jYWxfc2VudCA9IG1heF9zdHJlYW1fZGF0YV9sb2NhbAorICAgICAgICBzZWxmLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisgICAgICAgIHNl
bGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVlCisKKyAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXIgPSBieXRlYXJyYXkoKQorICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9maW46IE9wdGlvbmFs
W2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ID0gMCAgIyB0aGUg
b2Zmc2V0IGZvciB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICBzZWxmLl9yZWN2X2hp
Z2hlc3QgPSAwICAjIHRoZSBoaWdoZXN0IG9mZnNldCBldmVyIHNlZW4KKyAgICAgICAgc2VsZi5f
cmVjdl9yYW5nZXMgPSBSYW5nZVNldCgpCisKKyAgICAgICAgc2VsZi5fc2VuZF9hY2tlZCA9IFJh
bmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXIgPSBieXRlYXJyYXkoKQorICAgICAg
ICBzZWxmLl9zZW5kX2J1ZmZlcl9maW46IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX3NlbmRfYnVmZmVyX3N0YXJ0ID0gMCAgIyB0aGUgb2Zmc2V0IGZvciB0aGUgc3RhcnQgb2Yg
dGhlIGJ1ZmZlcgorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wID0gMCAgIyB0aGUgb2Zm
c2V0IGZvciB0aGUgc3RvcCBvZiB0aGUgYnVmZmVyCisgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVz
dCA9IDAKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nID0gUmFuZ2VTZXQoKQorICAgICAgICBz
ZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gRmFsc2UKKworICAgICAgICBzZWxmLl9fc3RyZWFtX2lk
ID0gc3RyZWFtX2lkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyZWFtX2lkKHNlbGYpIC0+
IE9wdGlvbmFsW2ludF06CisgICAgICAgIHJldHVybiBzZWxmLl9fc3RyZWFtX2lkCisKKyAgICAj
IHJlYWRlcgorCisgICAgZGVmIGFkZF9mcmFtZShzZWxmLCBmcmFtZTogUXVpY1N0cmVhbUZyYW1l
KSAtPiBPcHRpb25hbFtldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkXToKKyAgICAgICAgIiIiCisg
ICAgICAgIEFkZCBhIGZyYW1lIG9mIHJlY2VpdmVkIGRhdGEuCisgICAgICAgICIiIgorICAgICAg
ICBwb3MgPSBmcmFtZS5vZmZzZXQgLSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAorICAgICAgICBj
b3VudCA9IGxlbihmcmFtZS5kYXRhKQorICAgICAgICBmcmFtZV9lbmQgPSBmcmFtZS5vZmZzZXQg
KyBjb3VudAorCisgICAgICAgICMgd2Ugc2hvdWxkIHJlY2VpdmUgbm8gbW9yZSBkYXRhIGJleW9u
ZCBGSU4hCisgICAgICAgIGlmIHNlbGYuX3JlY3ZfYnVmZmVyX2ZpbiBpcyBub3QgTm9uZSBhbmQg
ZnJhbWVfZW5kID4gc2VsZi5fcmVjdl9idWZmZXJfZmluOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJEYXRhIHJlY2VpdmVkIGJleW9uZCBGSU4iKQorICAgICAgICBpZiBmcmFtZS5maW46
CisgICAgICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9maW4gPSBmcmFtZV9lbmQKKyAgICAgICAg
aWYgZnJhbWVfZW5kID4gc2VsZi5fcmVjdl9oaWdoZXN0OgorICAgICAgICAgICAgc2VsZi5fcmVj
dl9oaWdoZXN0ID0gZnJhbWVfZW5kCisKKyAgICAgICAgIyBmYXN0IHBhdGg6IG5ldyBpbi1vcmRl
ciBjaHVuaworICAgICAgICBpZiBwb3MgPT0gMCBhbmQgY291bnQgYW5kIG5vdCBzZWxmLl9yZWN2
X2J1ZmZlcjoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ICs9IGNvdW50Cisg
ICAgICAgICAgICByZXR1cm4gZXZlbnRzLlN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICBkYXRhPWZyYW1lLmRhdGEsIGVuZF9zdHJlYW09ZnJhbWUuZmluLCBzdHJlYW1faWQ9c2Vs
Zi5fX3N0cmVhbV9pZAorICAgICAgICAgICAgKQorCisgICAgICAgICMgZGlzY2FyZCBkdXBsaWNh
dGUgZGF0YQorICAgICAgICBpZiBwb3MgPCAwOgorICAgICAgICAgICAgZnJhbWUuZGF0YSA9IGZy
YW1lLmRhdGFbLXBvczpdCisgICAgICAgICAgICBmcmFtZS5vZmZzZXQgLT0gcG9zCisgICAgICAg
ICAgICBwb3MgPSAwCisKKyAgICAgICAgIyBtYXJrZWQgcmVjZWl2ZWQgcmFuZ2UKKyAgICAgICAg
aWYgZnJhbWVfZW5kID4gZnJhbWUub2Zmc2V0OgorICAgICAgICAgICAgc2VsZi5fcmVjdl9yYW5n
ZXMuYWRkKGZyYW1lLm9mZnNldCwgZnJhbWVfZW5kKQorCisgICAgICAgICMgYWRkIG5ldyBkYXRh
CisgICAgICAgIGdhcCA9IHBvcyAtIGxlbihzZWxmLl9yZWN2X2J1ZmZlcikKKyAgICAgICAgaWYg
Z2FwID4gMDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyICs9IGJ5dGVhcnJheShnYXAp
CisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyW3BvcyA6IHBvcyArIGNvdW50XSA9IGZyYW1lLmRh
dGEKKworICAgICAgICAjIHJldHVybiBkYXRhIGZyb20gdGhlIGZyb250IG9mIHRoZSBidWZmZXIK
KyAgICAgICAgZGF0YSA9IHNlbGYuX3B1bGxfZGF0YSgpCisgICAgICAgIGVuZF9zdHJlYW0gPSBz
ZWxmLl9yZWN2X2J1ZmZlcl9zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9maW4KKyAgICAgICAg
aWYgZGF0YSBvciBlbmRfc3RyZWFtOgorICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJlYW1E
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPWVuZF9z
dHJlYW0sIHN0cmVhbV9pZD1zZWxmLl9fc3RyZWFtX2lkCisgICAgICAgICAgICApCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9wdWxsX2RhdGEoc2Vs
ZikgLT4gYnl0ZXM6CisgICAgICAgICIiIgorICAgICAgICBSZW1vdmUgZGF0YSBmcm9tIHRoZSBm
cm9udCBvZiB0aGUgYnVmZmVyLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFzX2RhdGFfdG9fcmVhZCA9IHNlbGYuX3JlY3ZfcmFuZ2VzWzBdLnN0YXJ0ID09IHNlbGYu
X3JlY3ZfYnVmZmVyX3N0YXJ0CisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAg
ICAgaGFzX2RhdGFfdG9fcmVhZCA9IEZhbHNlCisgICAgICAgIGlmIG5vdCBoYXNfZGF0YV90b19y
ZWFkOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorCisgICAgICAgIHIgPSBzZWxmLl9yZWN2X3Jh
bmdlcy5zaGlmdCgpCisgICAgICAgIHBvcyA9IHIuc3RvcCAtIHIuc3RhcnQKKyAgICAgICAgZGF0
YSA9IGJ5dGVzKHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdKQorICAgICAgICBkZWwgc2VsZi5fcmVj
dl9idWZmZXJbOnBvc10KKyAgICAgICAgc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPSByLnN0b3AK
KyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICMgd3JpdGVyCisKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgbmV4dF9zZW5kX29mZnNldChzZWxmKSAtPiBpbnQ6CisgICAgICAgICIiIgorICAgICAg
ICBUaGUgb2Zmc2V0IGZvciB0aGUgbmV4dCBmcmFtZSB0byBzZW5kLgorCisgICAgICAgIFRoaXMg
aXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIGZyYW1lJ3MgYG9m
ZnNldGAgZmllbGQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZi5fc2VuZF9wZW5kaW5nWzBdLnN0YXJ0CisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9y
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AKKworICAgIGRlZiBn
ZXRfZnJhbWUoCisgICAgICAgIHNlbGYsIG1heF9zaXplOiBpbnQsIG1heF9vZmZzZXQ6IE9wdGlv
bmFsW2ludF0gPSBOb25lCisgICAgKSAtPiBPcHRpb25hbFtRdWljU3RyZWFtRnJhbWVdOgorICAg
ICAgICAiIiIKKyAgICAgICAgR2V0IGEgZnJhbWUgb2YgZGF0YSB0byBzZW5kLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBnZXQgdGhlIGZpcnN0IHBlbmRpbmcgZGF0YSByYW5nZQorICAgICAgICB0
cnk6CisgICAgICAgICAgICByID0gc2VsZi5fc2VuZF9wZW5kaW5nWzBdCisgICAgICAgIGV4Y2Vw
dCBJbmRleEVycm9yOgorICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZjoKKyAg
ICAgICAgICAgICAgICAjIEZJTiBvbmx5CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5k
aW5nX2VvZiA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aWNTdHJlYW1GcmFtZShm
aW49VHJ1ZSwgb2Zmc2V0PXNlbGYuX3NlbmRfYnVmZmVyX2ZpbikKKworICAgICAgICAgICAgc2Vs
Zi5zZW5kX2J1ZmZlcl9pc19lbXB0eSA9IFRydWUKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgIyBhcHBseSBmbG93IGNvbnRyb2wKKyAgICAgICAgc3RhcnQgPSByLnN0YXJ0Cisg
ICAgICAgIHN0b3AgPSBtaW4oci5zdG9wLCBzdGFydCArIG1heF9zaXplKQorICAgICAgICBpZiBt
YXhfb2Zmc2V0IGlzIG5vdCBOb25lIGFuZCBzdG9wID4gbWF4X29mZnNldDoKKyAgICAgICAgICAg
IHN0b3AgPSBtYXhfb2Zmc2V0CisgICAgICAgIGlmIHN0b3AgPD0gc3RhcnQ6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgICAgICMgY3JlYXRlIGZyYW1lCisgICAgICAgIGZyYW1lID0g
UXVpY1N0cmVhbUZyYW1lKAorICAgICAgICAgICAgZGF0YT1ieXRlcygKKyAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX2J1ZmZlclsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgLSBzZWxmLl9z
ZW5kX2J1ZmZlcl9zdGFydCA6IHN0b3AgLSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydAorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBvZmZzZXQ9c3RhcnQsCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLnN1YnRyYWN0KHN0YXJ0LCBzdG9w
KQorCisgICAgICAgICMgdHJhY2sgdGhlIGhpZ2hlc3Qgb2Zmc2V0IGV2ZXIgc2VudAorICAgICAg
ICBpZiBzdG9wID4gc2VsZi5fc2VuZF9oaWdoZXN0OgorICAgICAgICAgICAgc2VsZi5fc2VuZF9o
aWdoZXN0ID0gc3RvcAorCisgICAgICAgICMgaWYgdGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgRU9G
IHdhcyB3cml0dGVuLCBzZXQgdGhlIEZJTiBiaXQKKyAgICAgICAgaWYgc2VsZi5fc2VuZF9idWZm
ZXJfZmluID09IHN0b3A6CisgICAgICAgICAgICBmcmFtZS5maW4gPSBUcnVlCisgICAgICAgICAg
ICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gRmFsc2UKKworICAgICAgICByZXR1cm4gZnJhbWUK
KworICAgIGRlZiBvbl9kYXRhX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVp
Y0RlbGl2ZXJ5U3RhdGUsIHN0YXJ0OiBpbnQsIHN0b3A6IGludAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gc2VudCBkYXRhIGlzIEFDSydkLgorICAg
ICAgICAiIiIKKyAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0eSA9IEZhbHNlCisgICAg
ICAgIGlmIGRlbGl2ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAg
aWYgc3RvcCA+IHN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYWNrZWQuYWRkKHN0
YXJ0LCBzdG9wKQorICAgICAgICAgICAgICAgIGZpcnN0X3JhbmdlID0gc2VsZi5fc2VuZF9hY2tl
ZFswXQorICAgICAgICAgICAgICAgIGlmIGZpcnN0X3JhbmdlLnN0YXJ0ID09IHNlbGYuX3NlbmRf
YnVmZmVyX3N0YXJ0OgorICAgICAgICAgICAgICAgICAgICBzaXplID0gZmlyc3RfcmFuZ2Uuc3Rv
cCAtIGZpcnN0X3JhbmdlLnN0YXJ0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYWNr
ZWQuc2hpZnQoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCAr
PSBzaXplCisgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9zZW5kX2J1ZmZlcls6c2l6ZV0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX3BlbmRpbmcuYWRkKHN0YXJ0LCBzdG9wKQorICAgICAgICAgICAgaWYg
c3RvcCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9maW46CisgICAgICAgICAgICAgICAgc2VsZi5zZW5k
X2J1ZmZlcl9lbXB0eSA9IEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5n
X2VvZiA9IFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhOiBieXRlcywgZW5kX3N0cmVh
bTogYm9vbCA9IEZhbHNlKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgV3JpdGUgc29t
ZSBkYXRhIGJ5dGVzIHRvIHRoZSBRVUlDIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIGFz
c2VydCBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gaXMgTm9uZSwgImNhbm5vdCBjYWxsIHdyaXRlKCkg
YWZ0ZXIgRklOIgorICAgICAgICBzaXplID0gbGVuKGRhdGEpCisKKyAgICAgICAgaWYgc2l6ZToK
KyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICAg
ICAgc2VsZi5fc2VuZF9wZW5kaW5nLmFkZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2J1
ZmZlcl9zdG9wLCBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wICsgc2l6ZQorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXIgKz0gZGF0YQorICAgICAgICAgICAgc2VsZi5f
c2VuZF9idWZmZXJfc3RvcCArPSBzaXplCisgICAgICAgIGlmIGVuZF9zdHJlYW06CisgICAgICAg
ICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYu
X3NlbmRfYnVmZmVyX2ZpbiA9IHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AKKyAgICAgICAgICAgIHNl
bGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YjhjMjZmYTRjNjA2ZTFkYWEwMDQ0ZjBi
ZmVkZGQyZGYyMmIyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDI4IEBACitUaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9xdWljL2NvbmZpZ3VyYXRpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9jb25uZWN0aW9uLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0X2J1aWxk
ZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL3F1aWMvcmV0cnkucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJl
YW0ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdGxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYjY5ZmYyZDMyMjc0MTZl
NzE1ZGZlMThiODAyNjllMGIxYzI1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvdGxzLnB5CkBAIC0wLDAgKzEsMTkyOCBAQAoraW1wb3J0IGRhdGV0aW1lCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0Citmcm9t
IGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIGRhdGFjbGFzc2VzIGltcG9y
dCBkYXRhY2xhc3MsIGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0KK2Zyb20g
ZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBvcnQgKAorICAgIEFueSwK
KyAgICBDYWxsYWJsZSwKKyAgICBEaWN0LAorICAgIEdlbmVyYXRvciwKKyAgICBMaXN0LAorICAg
IE9wdGlvbmFsLAorICAgIFNlcXVlbmNlLAorICAgIFR1cGxlLAorICAgIFR5cGVWYXIsCisgICAg
VW5pb24sCispCisKK2ltcG9ydCBjZXJ0aWZpCitmcm9tIGNyeXB0b2dyYXBoeSBpbXBvcnQgeDUw
OQorZnJvbSBjcnlwdG9ncmFwaHkuZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFNpZ25hdHVyZQor
ZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LmJhY2tlbmRzIGltcG9ydCBkZWZhdWx0X2JhY2tlbmQK
K2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5iaW5kaW5ncy5vcGVuc3NsLmJpbmRpbmcgaW1wb3J0
IEJpbmRpbmcKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzIGltcG9ydCBoYXNo
ZXMsIGhtYWMsIHNlcmlhbGl6YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRp
dmVzLmFzeW1tZXRyaWMgaW1wb3J0ICgKKyAgICBkc2EsCisgICAgZWMsCisgICAgcGFkZGluZywK
KyAgICByc2EsCisgICAgeDQ0OCwKKyAgICB4MjU1MTksCispCitmcm9tIGNyeXB0b2dyYXBoeS5o
YXptYXQucHJpbWl0aXZlcy5rZGYuaGtkZiBpbXBvcnQgSEtERkV4cGFuZAorZnJvbSBjcnlwdG9n
cmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuc2VyaWFsaXphdGlvbiBpbXBvcnQgRW5jb2RpbmcsIFB1
YmxpY0Zvcm1hdAorCitmcm9tIC5idWZmZXIgaW1wb3J0IEJ1ZmZlcgorCitiaW5kaW5nID0gQmlu
ZGluZygpCitiaW5kaW5nLmluaXRfc3RhdGljX2xvY2tzKCkKK2ZmaSA9IGJpbmRpbmcuZmZpCits
aWIgPSBiaW5kaW5nLmxpYgorCitUTFNfVkVSU0lPTl8xXzIgPSAweDAzMDMKK1RMU19WRVJTSU9O
XzFfMyA9IDB4MDMwNAorVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4ID0gMHg3RjFDCitUTFNfVkVS
U0lPTl8xXzNfRFJBRlRfMjcgPSAweDdGMUIKK1RMU19WRVJTSU9OXzFfM19EUkFGVF8yNiA9IDB4
N0YxQQorCitUID0gVHlwZVZhcigiVCIpCisKKyMgZmFjaWxpdGF0ZSBtb2NraW5nIGZvciB0aGUg
dGVzdCBzdWl0ZQordXRjbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93CisKKworY2xhc3Mg
QWxlcnREZXNjcmlwdGlvbihJbnRFbnVtKToKKyAgICBjbG9zZV9ub3RpZnkgPSAwCisgICAgdW5l
eHBlY3RlZF9tZXNzYWdlID0gMTAKKyAgICBiYWRfcmVjb3JkX21hYyA9IDIwCisgICAgcmVjb3Jk
X292ZXJmbG93ID0gMjIKKyAgICBoYW5kc2hha2VfZmFpbHVyZSA9IDQwCisgICAgYmFkX2NlcnRp
ZmljYXRlID0gNDIKKyAgICB1bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZSA9IDQzCisgICAgY2VydGlm
aWNhdGVfcmV2b2tlZCA9IDQ0CisgICAgY2VydGlmaWNhdGVfZXhwaXJlZCA9IDQ1CisgICAgY2Vy
dGlmaWNhdGVfdW5rbm93biA9IDQ2CisgICAgaWxsZWdhbF9wYXJhbWV0ZXIgPSA0NworICAgIHVu
a25vd25fY2EgPSA0OAorICAgIGFjY2Vzc19kZW5pZWQgPSA0OQorICAgIGRlY29kZV9lcnJvciA9
IDUwCisgICAgZGVjcnlwdF9lcnJvciA9IDUxCisgICAgcHJvdG9jb2xfdmVyc2lvbiA9IDcwCisg
ICAgaW5zdWZmaWNpZW50X3NlY3VyaXR5ID0gNzEKKyAgICBpbnRlcm5hbF9lcnJvciA9IDgwCisg
ICAgaW5hcHByb3ByaWF0ZV9mYWxsYmFjayA9IDg2CisgICAgdXNlcl9jYW5jZWxlZCA9IDkwCisg
ICAgbWlzc2luZ19leHRlbnNpb24gPSAxMDkKKyAgICB1bnN1cHBvcnRlZF9leHRlbnNpb24gPSAx
MTAKKyAgICB1bnJlY29nbml6ZWRfbmFtZSA9IDExMgorICAgIGJhZF9jZXJ0aWZpY2F0ZV9zdGF0
dXNfcmVzcG9uc2UgPSAxMTMKKyAgICB1bmtub3duX3Bza19pZGVudGl0eSA9IDExNQorICAgIGNl
cnRpZmljYXRlX3JlcXVpcmVkID0gMTE2CisgICAgbm9fYXBwbGljYXRpb25fcHJvdG9jb2wgPSAx
MjAKKworCitjbGFzcyBBbGVydChFeGNlcHRpb24pOgorICAgIGRlc2NyaXB0aW9uOiBBbGVydERl
c2NyaXB0aW9uCisKKworY2xhc3MgQWxlcnRCYWRDZXJ0aWZpY2F0ZShBbGVydCk6CisgICAgZGVz
Y3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZQorCisKK2NsYXNzIEFs
ZXJ0Q2VydGlmaWNhdGVFeHBpcmVkKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVz
Y3JpcHRpb24uY2VydGlmaWNhdGVfZXhwaXJlZAorCisKK2NsYXNzIEFsZXJ0RGVjcnlwdEVycm9y
KEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24uZGVjcnlwdF9lcnJv
cgorCisKK2NsYXNzIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZShBbGVydCk6CisgICAgZGVzY3JpcHRp
b24gPSBBbGVydERlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlCisKKworY2xhc3MgQWxlcnRJ
bGxlZ2FsUGFyYW1ldGVyKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRp
b24uaWxsZWdhbF9wYXJhbWV0ZXIKKworCitjbGFzcyBBbGVydEludGVybmFsRXJyb3IoQWxlcnQp
OgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5pbnRlcm5hbF9lcnJvcgorCisK
K2NsYXNzIEFsZXJ0UHJvdG9jb2xWZXJzaW9uKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFs
ZXJ0RGVzY3JpcHRpb24ucHJvdG9jb2xfdmVyc2lvbgorCisKK2NsYXNzIEFsZXJ0VW5leHBlY3Rl
ZE1lc3NhZ2UoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi51bmV4
cGVjdGVkX21lc3NhZ2UKKworCitjbGFzcyBEaXJlY3Rpb24oRW51bSk6CisgICAgREVDUllQVCA9
IDAKKyAgICBFTkNSWVBUID0gMQorCisKK2NsYXNzIEVwb2NoKEVudW0pOgorICAgIElOSVRJQUwg
PSAwCisgICAgWkVST19SVFQgPSAxCisgICAgSEFORFNIQUtFID0gMgorICAgIE9ORV9SVFQgPSAz
CisKKworY2xhc3MgU3RhdGUoRW51bSk6CisgICAgQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVCA9IDAK
KyAgICBDTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTyA9IDEKKyAgICBDTElFTlRfRVhQRUNUX0VO
Q1JZUFRFRF9FWFRFTlNJT05TID0gMgorICAgIENMSUVOVF9FWFBFQ1RfQ0VSVElGSUNBVEVfUkVR
VUVTVF9PUl9DRVJUSUZJQ0FURSA9IDMKKyAgICBDTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX0NF
UlRJRklDQVRFID0gNAorICAgIENMSUVOVF9FWFBFQ1RfQ0VSVElGSUNBVEVfVkVSSUZZID0gNQor
ICAgIENMSUVOVF9FWFBFQ1RfRklOSVNIRUQgPSA2CisgICAgQ0xJRU5UX1BPU1RfSEFORFNIQUtF
ID0gNworCisgICAgU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE8gPSA4CisgICAgU0VSVkVSX0VY
UEVDVF9GSU5JU0hFRCA9IDkKKyAgICBTRVJWRVJfUE9TVF9IQU5EU0hBS0UgPSAxMAorCisKK2Rl
ZiBoa2RmX2xhYmVsKGxhYmVsOiBieXRlcywgaGFzaF92YWx1ZTogYnl0ZXMsIGxlbmd0aDogaW50
KSAtPiBieXRlczoKKyAgICBmdWxsX2xhYmVsID0gYiJ0bHMxMyAiICsgbGFiZWwKKyAgICByZXR1
cm4gKAorICAgICAgICBzdHJ1Y3QucGFjaygiIUhCIiwgbGVuZ3RoLCBsZW4oZnVsbF9sYWJlbCkp
CisgICAgICAgICsgZnVsbF9sYWJlbAorICAgICAgICArIHN0cnVjdC5wYWNrKCIhQiIsIGxlbiho
YXNoX3ZhbHVlKSkKKyAgICAgICAgKyBoYXNoX3ZhbHVlCisgICAgKQorCisKK2RlZiBoa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICBhbGdvcml0aG06IGhhc2hlcy5IYXNoQWxnb3JpdGhtLAorICAgIHNl
Y3JldDogYnl0ZXMsCisgICAgbGFiZWw6IGJ5dGVzLAorICAgIGhhc2hfdmFsdWU6IGJ5dGVzLAor
ICAgIGxlbmd0aDogaW50LAorKSAtPiBieXRlczoKKyAgICByZXR1cm4gSEtERkV4cGFuZCgKKyAg
ICAgICAgYWxnb3JpdGhtPWFsZ29yaXRobSwKKyAgICAgICAgbGVuZ3RoPWxlbmd0aCwKKyAgICAg
ICAgaW5mbz1oa2RmX2xhYmVsKGxhYmVsLCBoYXNoX3ZhbHVlLCBsZW5ndGgpLAorICAgICAgICBi
YWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpLAorICAgICkuZGVyaXZlKHNlY3JldCkKKworCitkZWYg
aGtkZl9leHRyYWN0KAorICAgIGFsZ29yaXRobTogaGFzaGVzLkhhc2hBbGdvcml0aG0sIHNhbHQ6
IGJ5dGVzLCBrZXlfbWF0ZXJpYWw6IGJ5dGVzCispIC0+IGJ5dGVzOgorICAgIGggPSBobWFjLkhN
QUMoc2FsdCwgYWxnb3JpdGhtLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpKQorICAgIGgudXBk
YXRlKGtleV9tYXRlcmlhbCkKKyAgICByZXR1cm4gaC5maW5hbGl6ZSgpCisKKworZGVmIGxvYWRf
cGVtX3ByaXZhdGVfa2V5KAorICAgIGRhdGE6IGJ5dGVzLCBwYXNzd29yZDogT3B0aW9uYWxbYnl0
ZXNdCispIC0+IFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0
ZUtleSwgcnNhLlJTQVByaXZhdGVLZXldOgorICAgICIiIgorICAgIExvYWQgYSBQRU0tZW5jb2Rl
ZCBwcml2YXRlIGtleS4KKyAgICAiIiIKKyAgICByZXR1cm4gc2VyaWFsaXphdGlvbi5sb2FkX3Bl
bV9wcml2YXRlX2tleSgKKyAgICAgICAgZGF0YSwgcGFzc3dvcmQ9cGFzc3dvcmQsIGJhY2tlbmQ9
ZGVmYXVsdF9iYWNrZW5kKCkKKyAgICApCisKKworZGVmIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNh
dGVzKGRhdGE6IGJ5dGVzKSAtPiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdOgorICAgICIiIgorICAg
IExvYWQgYSBjaGFpbiBvZiBQRU0tZW5jb2RlZCBYNTA5IGNlcnRpZmljYXRlcy4KKyAgICAiIiIK
KyAgICBib3VuZGFyeSA9IGIiLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxuIgorICAgIGNlcnRp
ZmljYXRlcyA9IFtdCisgICAgZm9yIGNodW5rIGluIGRhdGEuc3BsaXQoYm91bmRhcnkpOgorICAg
ICAgICBpZiBjaHVuazoKKyAgICAgICAgICAgIGNlcnRpZmljYXRlcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgeDUwOS5sb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAg
ICAgICBjaHVuayArIGJvdW5kYXJ5LCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgIHJldHVybiBjZXJ0aWZpY2F0ZXMKKworCitk
ZWYgb3BlbnNzbF9hc3NlcnQob2s6IGJvb2wsIGZ1bmM6IHN0cikgLT4gTm9uZToKKyAgICBpZiBu
b3Qgb2s6CisgICAgICAgIGxpYi5FUlJfY2xlYXJfZXJyb3IoKQorICAgICAgICByYWlzZSBBbGVy
dEludGVybmFsRXJyb3IoIk9wZW5TU0wgY2FsbCB0byAlcyBmYWlsZWQiICUgZnVuYykKKworCitk
ZWYgb3BlbnNzbF9kZWNvZGVfc3RyaW5nKGNoYXJwKSAtPiBzdHI6CisgICAgcmV0dXJuIGZmaS5z
dHJpbmcoY2hhcnApLmRlY29kZSgidXRmLTgiKSBpZiBjaGFycCBlbHNlICIiCisKKworZGVmIG9w
ZW5zc2xfZW5jb2RlX3BhdGgoczogT3B0aW9uYWxbc3RyXSkgLT4gQW55OgorICAgIGlmIHMgaXMg
bm90IE5vbmU6CisgICAgICAgIHJldHVybiBvcy5mc2VuY29kZShzKQorICAgIHJldHVybiBmZmku
TlVMTAorCisKK2RlZiBjZXJ0X3g1MDlfcHRyKGNlcnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRl
KSAtPiBBbnk6CisgICAgIiIiCisgICAgQWNjZXNzb3IgZm9yIHByaXZhdGUgYXR0cmlidXRlLgor
ICAgICIiIgorICAgIHJldHVybiBnZXRhdHRyKGNlcnRpZmljYXRlLCAiX3g1MDkiKQorCisKK2Rl
ZiB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgY2VydGlmaWNhdGU6IHg1MDkuQ2VydGlmaWNhdGUs
CisgICAgY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBbXSwKKyAgICBzZXJ2ZXJfbmFt
ZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgIGNhZmlsZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgY2FwYXRoOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKKykgLT4gTm9uZToKKyAgICAjIHZlcmlmeSBkYXRlcworICAgIG5v
dyA9IHV0Y25vdygpCisgICAgaWYgbm93IDwgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZToK
KyAgICAgICAgcmFpc2UgQWxlcnRDZXJ0aWZpY2F0ZUV4cGlyZWQoIkNlcnRpZmljYXRlIGlzIG5v
dCB2YWxpZCB5ZXQiKQorICAgIGlmIG5vdyA+IGNlcnRpZmljYXRlLm5vdF92YWxpZF9hZnRlcjoK
KyAgICAgICAgcmFpc2UgQWxlcnRDZXJ0aWZpY2F0ZUV4cGlyZWQoIkNlcnRpZmljYXRlIGlzIG5v
IGxvbmdlciB2YWxpZCIpCisKKyAgICAjIHZlcmlmeSBzdWJqZWN0CisgICAgaWYgc2VydmVyX25h
bWUgaXMgbm90IE5vbmU6CisgICAgICAgIHN1YmplY3QgPSBbXQorICAgICAgICBzdWJqZWN0QWx0
TmFtZTogTGlzdFtUdXBsZVtzdHIsIHN0cl1dID0gW10KKyAgICAgICAgZm9yIGF0dHIgaW4gY2Vy
dGlmaWNhdGUuc3ViamVjdDoKKyAgICAgICAgICAgIGlmIGF0dHIub2lkID09IHg1MDkuTmFtZU9J
RC5DT01NT05fTkFNRToKKyAgICAgICAgICAgICAgICBzdWJqZWN0LmFwcGVuZCgoKCJjb21tb25O
YW1lIiwgYXR0ci52YWx1ZSksKSkKKyAgICAgICAgZm9yIGV4dCBpbiBjZXJ0aWZpY2F0ZS5leHRl
bnNpb25zOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHQudmFsdWUsIHg1MDkuU3ViamVj
dEFsdGVybmF0aXZlTmFtZSk6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZXh0LnZhbHVl
OgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIHg1MDkuRE5TTmFtZSk6
CisgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0QWx0TmFtZS5hcHBlbmQoKCJETlMiLCBu
YW1lLnZhbHVlKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzc2wubWF0Y2hfaG9zdG5h
bWUoCisgICAgICAgICAgICAgICAgeyJzdWJqZWN0IjogdHVwbGUoc3ViamVjdCksICJzdWJqZWN0
QWx0TmFtZSI6IHR1cGxlKHN1YmplY3RBbHROYW1lKX0sCisgICAgICAgICAgICAgICAgc2VydmVy
X25hbWUsCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBzc2wuQ2VydGlmaWNhdGVFcnJv
ciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBBbGVydEJhZENlcnRpZmljYXRlKCJcbiIuam9p
bihleGMuYXJncykpIGZyb20gZXhjCisKKyAgICAjIHZlcmlmeSBjZXJ0aWZpY2F0ZSBjaGFpbgor
ICAgIHN0b3JlID0gbGliLlg1MDlfU1RPUkVfbmV3KCkKKyAgICBvcGVuc3NsX2Fzc2VydChzdG9y
ZSAhPSBmZmkuTlVMTCwgIlg1MDlfc3RvcmVfbmV3IikKKyAgICBzdG9yZSA9IGZmaS5nYyhzdG9y
ZSwgbGliLlg1MDlfU1RPUkVfZnJlZSkKKworICAgICMgbG9hZCBkZWZhdWx0IENBcworICAgIG9w
ZW5zc2xfYXNzZXJ0KAorICAgICAgICBsaWIuWDUwOV9TVE9SRV9zZXRfZGVmYXVsdF9wYXRocyhz
dG9yZSksICJYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzIgorICAgICkKKyAgICBvcGVuc3Ns
X2Fzc2VydCgKKyAgICAgICAgbGliLlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMoCisgICAgICAg
ICAgICBzdG9yZSwgb3BlbnNzbF9lbmNvZGVfcGF0aChjZXJ0aWZpLndoZXJlKCkpLCBvcGVuc3Ns
X2VuY29kZV9wYXRoKE5vbmUpLAorICAgICAgICApLAorICAgICAgICAiWDUwOV9TVE9SRV9sb2Fk
X2xvY2F0aW9ucyIsCisgICAgKQorCisgICAgIyBsb2FkIGV4dHJhIENBcworICAgIGlmIGNhZGF0
YSBpcyBub3QgTm9uZToKKyAgICAgICAgZm9yIGNlcnQgaW4gbG9hZF9wZW1feDUwOV9jZXJ0aWZp
Y2F0ZXMoY2FkYXRhKToKKyAgICAgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAorICAgICAgICAgICAg
ICAgIGxpYi5YNTA5X1NUT1JFX2FkZF9jZXJ0KHN0b3JlLCBjZXJ0X3g1MDlfcHRyKGNlcnQpKSwK
KyAgICAgICAgICAgICAgICAiWDUwOV9TVE9SRV9hZGRfY2VydCIsCisgICAgICAgICAgICApCisK
KyAgICBpZiBjYWZpbGUgaXMgbm90IE5vbmUgb3IgY2FwYXRoIGlzIG5vdCBOb25lOgorICAgICAg
ICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgIGxpYi5YNTA5X1NUT1JFX2xvYWRfbG9jYXRp
b25zKAorICAgICAgICAgICAgICAgIHN0b3JlLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNhZmlsZSks
IG9wZW5zc2xfZW5jb2RlX3BhdGgoY2FwYXRoKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICJYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zIiwKKyAgICAgICAgKQorCisgICAgY2hhaW5fc3Rh
Y2sgPSBsaWIuc2tfWDUwOV9uZXdfbnVsbCgpCisgICAgb3BlbnNzbF9hc3NlcnQoY2hhaW5fc3Rh
Y2sgIT0gZmZpLk5VTEwsICJza19YNTA5X25ld19udWxsIikKKyAgICBjaGFpbl9zdGFjayA9IGZm
aS5nYyhjaGFpbl9zdGFjaywgbGliLnNrX1g1MDlfZnJlZSkKKyAgICBmb3IgY2VydCBpbiBjaGFp
bjoKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAgICBsaWIuc2tfWDUwOV9wdXNo
KGNoYWluX3N0YWNrLCBjZXJ0X3g1MDlfcHRyKGNlcnQpKSwgInNrX1g1MDlfcHVzaCIKKyAgICAg
ICAgKQorCisgICAgc3RvcmVfY3R4ID0gbGliLlg1MDlfU1RPUkVfQ1RYX25ldygpCisgICAgb3Bl
bnNzbF9hc3NlcnQoc3RvcmVfY3R4ICE9IGZmaS5OVUxMLCAiWDUwOV9TVE9SRV9DVFhfbmV3IikK
KyAgICBzdG9yZV9jdHggPSBmZmkuZ2Moc3RvcmVfY3R4LCBsaWIuWDUwOV9TVE9SRV9DVFhfZnJl
ZSkKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgbGliLlg1MDlfU1RPUkVfQ1RYX2luaXQo
CisgICAgICAgICAgICBzdG9yZV9jdHgsIHN0b3JlLCBjZXJ0X3g1MDlfcHRyKGNlcnRpZmljYXRl
KSwgY2hhaW5fc3RhY2sKKyAgICAgICAgKSwKKyAgICAgICAgIlg1MDlfU1RPUkVfQ1RYX2luaXQi
LAorICAgICkKKworICAgIHJlcyA9IGxpYi5YNTA5X3ZlcmlmeV9jZXJ0KHN0b3JlX2N0eCkKKyAg
ICBpZiBub3QgcmVzOgorICAgICAgICBlcnIgPSBsaWIuWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9y
KHN0b3JlX2N0eCkKKyAgICAgICAgZXJyX3N0ciA9IG9wZW5zc2xfZGVjb2RlX3N0cmluZyhsaWIu
WDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoZXJyKSkKKyAgICAgICAgcmFpc2UgQWxlcnRC
YWRDZXJ0aWZpY2F0ZShlcnJfc3RyKQorCisKK2NsYXNzIENpcGhlclN1aXRlKEludEVudW0pOgor
ICAgIEFFU18xMjhfR0NNX1NIQTI1NiA9IDB4MTMwMQorICAgIEFFU18yNTZfR0NNX1NIQTM4NCA9
IDB4MTMwMgorICAgIENIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiA9IDB4MTMwMworICAgIEVNUFRZ
X1JFTkVHT1RJQVRJT05fSU5GT19TQ1NWID0gMHgwMEZGCisKKworY2xhc3MgQ29tcHJlc3Npb25N
ZXRob2QoSW50RW51bSk6CisgICAgTlVMTCA9IDAKKworCitjbGFzcyBFeHRlbnNpb25UeXBlKElu
dEVudW0pOgorICAgIFNFUlZFUl9OQU1FID0gMAorICAgIFNUQVRVU19SRVFVRVNUID0gNQorICAg
IFNVUFBPUlRFRF9HUk9VUFMgPSAxMAorICAgIFNJR05BVFVSRV9BTEdPUklUSE1TID0gMTMKKyAg
ICBBTFBOID0gMTYKKyAgICBDT01QUkVTU19DRVJUSUZJQ0FURSA9IDI3CisgICAgUFJFX1NIQVJF
RF9LRVkgPSA0MQorICAgIEVBUkxZX0RBVEEgPSA0MgorICAgIFNVUFBPUlRFRF9WRVJTSU9OUyA9
IDQzCisgICAgQ09PS0lFID0gNDQKKyAgICBQU0tfS0VZX0VYQ0hBTkdFX01PREVTID0gNDUKKyAg
ICBLRVlfU0hBUkUgPSA1MQorICAgIFFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMgPSA2NTQ0NQor
ICAgIEVOQ1JZUFRFRF9TRVJWRVJfTkFNRSA9IDY1NDg2CisKKworY2xhc3MgR3JvdXAoSW50RW51
bSk6CisgICAgU0VDUDI1NlIxID0gMHgwMDE3CisgICAgU0VDUDM4NFIxID0gMHgwMDE4CisgICAg
U0VDUDUyMVIxID0gMHgwMDE5CisgICAgWDI1NTE5ID0gMHgwMDFECisgICAgWDQ0OCA9IDB4MDAx
RQorICAgIEdSRUFTRSA9IDB4QUFBQQorCisKK2NsYXNzIEhhbmRzaGFrZVR5cGUoSW50RW51bSk6
CisgICAgQ0xJRU5UX0hFTExPID0gMQorICAgIFNFUlZFUl9IRUxMTyA9IDIKKyAgICBORVdfU0VT
U0lPTl9USUNLRVQgPSA0CisgICAgRU5EX09GX0VBUkxZX0RBVEEgPSA1CisgICAgRU5DUllQVEVE
X0VYVEVOU0lPTlMgPSA4CisgICAgQ0VSVElGSUNBVEUgPSAxMQorICAgIENFUlRJRklDQVRFX1JF
UVVFU1QgPSAxMworICAgIENFUlRJRklDQVRFX1ZFUklGWSA9IDE1CisgICAgRklOSVNIRUQgPSAy
MAorICAgIEtFWV9VUERBVEUgPSAyNAorICAgIENPTVBSRVNTRURfQ0VSVElGSUNBVEUgPSAyNQor
ICAgIE1FU1NBR0VfSEFTSCA9IDI1NAorCisKK2NsYXNzIFBza0tleUV4Y2hhbmdlTW9kZShJbnRF
bnVtKToKKyAgICBQU0tfS0UgPSAwCisgICAgUFNLX0RIRV9LRSA9IDEKKworCitjbGFzcyBTaWdu
YXR1cmVBbGdvcml0aG0oSW50RW51bSk6CisgICAgRUNEU0FfU0VDUDI1NlIxX1NIQTI1NiA9IDB4
MDQwMworICAgIEVDRFNBX1NFQ1AzODRSMV9TSEEzODQgPSAweDA1MDMKKyAgICBFQ0RTQV9TRUNQ
NTIxUjFfU0hBNTEyID0gMHgwNjAzCisgICAgRUQyNTUxOSA9IDB4MDgwNworICAgIEVENDQ4ID0g
MHgwODA4CisgICAgUlNBX1BLQ1MxX1NIQTI1NiA9IDB4MDQwMQorICAgIFJTQV9QS0NTMV9TSEEz
ODQgPSAweDA1MDEKKyAgICBSU0FfUEtDUzFfU0hBNTEyID0gMHgwNjAxCisgICAgUlNBX1BTU19Q
U1NfU0hBMjU2ID0gMHgwODA5CisgICAgUlNBX1BTU19QU1NfU0hBMzg0ID0gMHgwODBBCisgICAg
UlNBX1BTU19QU1NfU0hBNTEyID0gMHgwODBCCisgICAgUlNBX1BTU19SU0FFX1NIQTI1NiA9IDB4
MDgwNAorICAgIFJTQV9QU1NfUlNBRV9TSEEzODQgPSAweDA4MDUKKyAgICBSU0FfUFNTX1JTQUVf
U0hBNTEyID0gMHgwODA2CisKKyAgICAjIGxlZ2FjeQorICAgIFJTQV9QS0NTMV9TSEExID0gMHgw
MjAxCisgICAgU0hBMV9EU0EgPSAweDAyMDIKKyAgICBFQ0RTQV9TSEExID0gMHgwMjAzCisKKwor
IyBCTE9DS1MKKworCitAY29udGV4dG1hbmFnZXIKK2RlZiBwdWxsX2Jsb2NrKGJ1ZjogQnVmZmVy
LCBjYXBhY2l0eTogaW50KSAtPiBHZW5lcmF0b3I6CisgICAgbGVuZ3RoID0gMAorICAgIGZvciBi
IGluIGJ1Zi5wdWxsX2J5dGVzKGNhcGFjaXR5KToKKyAgICAgICAgbGVuZ3RoID0gKGxlbmd0aCA8
PCA4KSB8IGIKKyAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgeWllbGQgbGVuZ3Ro
CisgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gZW5kCisKKworQGNvbnRleHRtYW5hZ2VyCitkZWYg
cHVzaF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gR2VuZXJhdG9yOgorICAg
ICIiIgorICAgIENvbnRleHQgbWFuYWdlciB0byBwdXNoIGEgdmFyaWFibGUtbGVuZ3RoIGJsb2Nr
LCB3aXRoIGBjYXBhY2l0eWAgYnl0ZXMKKyAgICB0byB3cml0ZSB0aGUgbGVuZ3RoLgorICAgICIi
IgorICAgIHN0YXJ0ID0gYnVmLnRlbGwoKSArIGNhcGFjaXR5CisgICAgYnVmLnNlZWsoc3RhcnQp
CisgICAgeWllbGQKKyAgICBlbmQgPSBidWYudGVsbCgpCisgICAgbGVuZ3RoID0gZW5kIC0gc3Rh
cnQKKyAgICB3aGlsZSBjYXBhY2l0eToKKyAgICAgICAgYnVmLnNlZWsoc3RhcnQgLSBjYXBhY2l0
eSkKKyAgICAgICAgYnVmLnB1c2hfdWludDgoKGxlbmd0aCA+PiAoOCAqIChjYXBhY2l0eSAtIDEp
KSkgJiAweEZGKQorICAgICAgICBjYXBhY2l0eSAtPSAxCisgICAgYnVmLnNlZWsoZW5kKQorCisK
KyMgTElTVFMKKworCitkZWYgcHVsbF9saXN0KGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTogaW50LCBm
dW5jOiBDYWxsYWJsZVtbXSwgVF0pIC0+IExpc3RbVF06CisgICAgIiIiCisgICAgUHVsbCBhIGxp
c3Qgb2YgaXRlbXMuCisgICAgIiIiCisgICAgaXRlbXMgPSBbXQorICAgIHdpdGggcHVsbF9ibG9j
ayhidWYsIGNhcGFjaXR5KSBhcyBsZW5ndGg6CisgICAgICAgIGVuZCA9IGJ1Zi50ZWxsKCkgKyBs
ZW5ndGgKKyAgICAgICAgd2hpbGUgYnVmLnRlbGwoKSA8IGVuZDoKKyAgICAgICAgICAgIGl0ZW1z
LmFwcGVuZChmdW5jKCkpCisgICAgcmV0dXJuIGl0ZW1zCisKKworZGVmIHB1c2hfbGlzdCgKKyAg
ICBidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW1RdLCBOb25lXSwg
dmFsdWVzOiBTZXF1ZW5jZVtUXQorKSAtPiBOb25lOgorICAgICIiIgorICAgIFB1c2ggYSBsaXN0
IG9mIGl0ZW1zLgorICAgICIiIgorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIGNhcGFjaXR5KToK
KyAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZ1bmModmFsdWUpCisK
KworZGVmIHB1bGxfb3BhcXVlKGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTogaW50KSAtPiBieXRlczoK
KyAgICAiIiIKKyAgICBQdWxsIGFuIG9wYXF1ZSB2YWx1ZSBwcmVmaXhlZCBieSBhIGxlbmd0aC4K
KyAgICAiIiIKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkgYXMgbGVuZ3RoOgor
ICAgICAgICByZXR1cm4gYnVmLnB1bGxfYnl0ZXMobGVuZ3RoKQorCisKK2RlZiBwdXNoX29wYXF1
ZShidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgdmFsdWU6IGJ5dGVzKSAtPiBOb25lOgorICAg
ICIiIgorICAgIFB1c2ggYW4gb3BhcXVlIHZhbHVlIHByZWZpeCBieSBhIGxlbmd0aC4KKyAgICAi
IiIKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKHZhbHVlKQorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfZXh0ZW5zaW9uKGJ1
ZjogQnVmZmVyLCBleHRlbnNpb25fdHlwZTogaW50KSAtPiBHZW5lcmF0b3I6CisgICAgYnVmLnB1
c2hfdWludDE2KGV4dGVuc2lvbl90eXBlKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgor
ICAgICAgICB5aWVsZAorCisKKyMgS2V5U2hhcmVFbnRyeQorCisKK0tleVNoYXJlRW50cnkgPSBU
dXBsZVtpbnQsIGJ5dGVzXQorCisKK2RlZiBwdWxsX2tleV9zaGFyZShidWY6IEJ1ZmZlcikgLT4g
S2V5U2hhcmVFbnRyeToKKyAgICBncm91cCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgZGF0YSA9
IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKyAgICByZXR1cm4gKGdyb3VwLCBkYXRhKQorCisKK2RlZiBw
dXNoX2tleV9zaGFyZShidWY6IEJ1ZmZlciwgdmFsdWU6IEtleVNoYXJlRW50cnkpIC0+IE5vbmU6
CisgICAgYnVmLnB1c2hfdWludDE2KHZhbHVlWzBdKQorICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
dmFsdWVbMV0pCisKKworIyBBTFBOCisKKworZGVmIHB1bGxfYWxwbl9wcm90b2NvbChidWY6IEJ1
ZmZlcikgLT4gc3RyOgorICAgIHJldHVybiBwdWxsX29wYXF1ZShidWYsIDEpLmRlY29kZSgiYXNj
aWkiKQorCisKK2RlZiBwdXNoX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIsIHByb3RvY29sOiBz
dHIpIC0+IE5vbmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAxLCBwcm90b2NvbC5lbmNvZGUoImFz
Y2lpIikpCisKKworIyBQUkUgU0hBUkVEIEtFWQorCitQc2tJZGVudGl0eSA9IFR1cGxlW2J5dGVz
LCBpbnRdCisKKworZGVmIHB1bGxfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyKSAtPiBQc2tJZGVu
dGl0eToKKyAgICBpZGVudGl0eSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKyAgICBvYmZ1c2NhdGVk
X3RpY2tldF9hZ2UgPSBidWYucHVsbF91aW50MzIoKQorICAgIHJldHVybiAoaWRlbnRpdHksIG9i
ZnVzY2F0ZWRfdGlja2V0X2FnZSkKKworCitkZWYgcHVzaF9wc2tfaWRlbnRpdHkoYnVmOiBCdWZm
ZXIsIGVudHJ5OiBQc2tJZGVudGl0eSkgLT4gTm9uZToKKyAgICBwdXNoX29wYXF1ZShidWYsIDIs
IGVudHJ5WzBdKQorICAgIGJ1Zi5wdXNoX3VpbnQzMihlbnRyeVsxXSkKKworCitkZWYgcHVsbF9w
c2tfYmluZGVyKGJ1ZjogQnVmZmVyKSAtPiBieXRlczoKKyAgICByZXR1cm4gcHVsbF9vcGFxdWUo
YnVmLCAxKQorCisKK2RlZiBwdXNoX3Bza19iaW5kZXIoYnVmOiBCdWZmZXIsIGJpbmRlcjogYnl0
ZXMpIC0+IE5vbmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAxLCBiaW5kZXIpCisKKworIyBNRVNT
QUdFUworCitFeHRlbnNpb24gPSBUdXBsZVtpbnQsIGJ5dGVzXQorCisKK0BkYXRhY2xhc3MKK2Ns
YXNzIE9mZmVyZWRQc2tzOgorICAgIGlkZW50aXRpZXM6IExpc3RbUHNrSWRlbnRpdHldCisgICAg
YmluZGVyczogTGlzdFtieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBDbGllbnRIZWxsbzoK
KyAgICByYW5kb206IGJ5dGVzCisgICAgc2Vzc2lvbl9pZDogYnl0ZXMKKyAgICBjaXBoZXJfc3Vp
dGVzOiBMaXN0W2ludF0KKyAgICBjb21wcmVzc2lvbl9tZXRob2RzOiBMaXN0W2ludF0KKworICAg
ICMgZXh0ZW5zaW9ucworICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0g
Tm9uZQorICAgIGVhcmx5X2RhdGE6IGJvb2wgPSBGYWxzZQorICAgIGtleV9zaGFyZTogT3B0aW9u
YWxbTGlzdFtLZXlTaGFyZUVudHJ5XV0gPSBOb25lCisgICAgcHJlX3NoYXJlZF9rZXk6IE9wdGlv
bmFsW09mZmVyZWRQc2tzXSA9IE5vbmUKKyAgICBwc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBPcHRp
b25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHNlcnZlcl9uYW1lOiBPcHRpb25hbFtzdHJdID0g
Tm9uZQorICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zOiBPcHRpb25hbFtMaXN0W2ludF1dID0gTm9u
ZQorICAgIHN1cHBvcnRlZF9ncm91cHM6IE9wdGlvbmFsW0xpc3RbaW50XV0gPSBOb25lCisgICAg
c3VwcG9ydGVkX3ZlcnNpb25zOiBPcHRpb25hbFtMaXN0W2ludF1dID0gTm9uZQorCisgICAgb3Ro
ZXJfZXh0ZW5zaW9uczogTGlzdFtFeHRlbnNpb25dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxp
c3QpCisKKworZGVmIHB1bGxfY2xpZW50X2hlbGxvKGJ1ZjogQnVmZmVyKSAtPiBDbGllbnRIZWxs
bzoKKyAgICBhc3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkNMSUVOVF9I
RUxMTworICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgorICAgICAgICBhc3NlcnQgYnVmLnB1
bGxfdWludDE2KCkgPT0gVExTX1ZFUlNJT05fMV8yCisgICAgICAgIGNsaWVudF9yYW5kb20gPSBi
dWYucHVsbF9ieXRlcygzMikKKworICAgICAgICBoZWxsbyA9IENsaWVudEhlbGxvKAorICAgICAg
ICAgICAgcmFuZG9tPWNsaWVudF9yYW5kb20sCisgICAgICAgICAgICBzZXNzaW9uX2lkPXB1bGxf
b3BhcXVlKGJ1ZiwgMSksCisgICAgICAgICAgICBjaXBoZXJfc3VpdGVzPXB1bGxfbGlzdChidWYs
IDIsIGJ1Zi5wdWxsX3VpbnQxNiksCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXB1
bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KSwKKyAgICAgICAgKQorCisgICAgICAgICMg
ZXh0ZW5zaW9ucworICAgICAgICBhZnRlcl9wc2sgPSBGYWxzZQorCisgICAgICAgIGRlZiBwdWxs
X2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICAjIHByZV9zaGFyZWRfa2V5IE1VU1Qg
YmUgbGFzdAorICAgICAgICAgICAgbm9ubG9jYWwgYWZ0ZXJfcHNrCisgICAgICAgICAgICBhc3Nl
cnQgbm90IGFmdGVyX3BzaworCisgICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxs
X3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2
KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuS0VZX1NI
QVJFOgorICAgICAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSA9IHB1bGxfbGlzdChidWYsIDIs
IHBhcnRpYWwocHVsbF9rZXlfc2hhcmUsIGJ1ZikpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lv
bl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgorICAgICAgICAgICAg
ICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxs
X3VpbnQxNikKKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlw
ZS5TSUdOQVRVUkVfQUxHT1JJVEhNUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVf
YWxnb3JpdGhtcyA9IHB1bGxfbGlzdChidWYsIDIsIGJ1Zi5wdWxsX3VpbnQxNikKKyAgICAgICAg
ICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBT
OgorICAgICAgICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF9ncm91cHMgPSBwdWxsX2xpc3QoYnVm
LCAyLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09
IEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUzoKKyAgICAgICAgICAgICAgICBo
ZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzID0gcHVsbF9saXN0KGJ1ZiwgMSwgYnVmLnB1bGxf
dWludDgpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUu
U0VSVkVSX05BTUU6CisgICAgICAgICAgICAgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMik6Cisg
ICAgICAgICAgICAgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09IDAKKyAgICAgICAg
ICAgICAgICAgICAgaGVsbG8uc2VydmVyX25hbWUgPSBwdWxsX29wYXF1ZShidWYsIDIpLmRlY29k
ZSgiYXNjaWkiKQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkFMUE46CisgICAgICAgICAgICAgICAgaGVsbG8uYWxwbl9wcm90b2NvbHMgPSBwdWxsX2xp
c3QoCisgICAgICAgICAgICAgICAgICAgIGJ1ZiwgMiwgcGFydGlhbChwdWxsX2FscG5fcHJvdG9j
b2wsIGJ1ZikKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90
eXBlID09IEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBoZWxsby5l
YXJseV9kYXRhID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRl
bnNpb25UeXBlLlBSRV9TSEFSRURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFy
ZWRfa2V5ID0gT2ZmZXJlZFBza3MoCisgICAgICAgICAgICAgICAgICAgIGlkZW50aXRpZXM9cHVs
bF9saXN0KGJ1ZiwgMiwgcGFydGlhbChwdWxsX3Bza19pZGVudGl0eSwgYnVmKSksCisgICAgICAg
ICAgICAgICAgICAgIGJpbmRlcnM9cHVsbF9saXN0KGJ1ZiwgMiwgcGFydGlhbChwdWxsX3Bza19i
aW5kZXIsIGJ1ZikpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBhZnRlcl9w
c2sgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlbGxvLm90aGVy
X2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUs
IGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVybiBo
ZWxsbworCisKK2RlZiBwdXNoX2NsaWVudF9oZWxsbyhidWY6IEJ1ZmZlciwgaGVsbG86IENsaWVu
dEhlbGxvKSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuQ0xJRU5U
X0hFTExPKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBidWYucHVzaF91
aW50MTYoVExTX1ZFUlNJT05fMV8yKQorICAgICAgICBidWYucHVzaF9ieXRlcyhoZWxsby5yYW5k
b20pCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMSwgaGVsbG8uc2Vzc2lvbl9pZCkKKyAgICAg
ICAgcHVzaF9saXN0KGJ1ZiwgMiwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5jaXBoZXJfc3VpdGVz
KQorICAgICAgICBwdXNoX2xpc3QoYnVmLCAxLCBidWYucHVzaF91aW50OCwgaGVsbG8uY29tcHJl
c3Npb25fbWV0aG9kcykKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgd2l0aCBwdXNo
X2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5LRVlfU0hBUkUpOgorICAgICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDIs
IHBhcnRpYWwocHVzaF9rZXlfc2hhcmUsIGJ1ZiksIGhlbGxvLmtleV9zaGFyZSkKKworICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZF
UlNJT05TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAxLCBidWYucHVzaF91aW50
MTYsIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9ucykKKworICAgICAgICAgICAgd2l0aCBwdXNoX2V4
dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09SSVRITVMpOgorICAgICAg
ICAgICAgICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNoX3VpbnQxNiwgaGVsbG8uc2lnbmF0
dXJlX2FsZ29yaXRobXMpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBF
eHRlbnNpb25UeXBlLlNVUFBPUlRFRF9HUk9VUFMpOgorICAgICAgICAgICAgICAgIHB1c2hfbGlz
dChidWYsIDIsIGJ1Zi5wdXNoX3VpbnQxNiwgaGVsbG8uc3VwcG9ydGVkX2dyb3VwcykKKworICAg
ICAgICAgICAgaWYgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5QU0tf
S0VZX0VYQ0hBTkdFX01PREVTKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KGJ1Ziwg
MSwgYnVmLnB1c2hfdWludDgsIGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMpCisKKyAgICAg
ICAgICAgIGlmIGhlbGxvLnNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FKToKKyAg
ICAgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICAg
ICAgICAgICAgICBidWYucHVzaF91aW50OCgwKQorICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aF9vcGFxdWUoYnVmLCAyLCBoZWxsby5zZXJ2ZXJfbmFtZS5lbmNvZGUoImFzY2lpIikpCisKKyAg
ICAgICAgICAgIGlmIGhlbGxvLmFscG5fcHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLkFMUE4pOgorICAg
ICAgICAgICAgICAgICAgICBwdXNoX2xpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYs
IDIsIHBhcnRpYWwocHVzaF9hbHBuX3Byb3RvY29sLCBidWYpLCBoZWxsby5hbHBuX3Byb3RvY29s
cworICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlw
ZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAg
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisgICAgICAgICAg
ICBpZiBoZWxsby5lYXJseV9kYXRhOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNp
b24oYnVmLCBFeHRlbnNpb25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBw
YXNzCisKKyAgICAgICAgICAgICMgcHJlX3NoYXJlZF9rZXkgTVVTVCBiZSBsYXN0CisgICAgICAg
ICAgICBpZiBoZWxsby5wcmVfc2hhcmVkX2tleSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWSk6
CisgICAgICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJ0aWFsKHB1c2hfcHNrX2lkZW50aXR5LCBidWYpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkuaWRlbnRpdGllcywKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICBwdXNoX2xpc3QoCisgICAgICAgICAgICAgICAgICAgICAg
ICBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgcGFydGlhbChwdXNoX3Bza19iaW5kZXIsIGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5kZXJzLAorICAgICAgICAgICAgICAgICAgICApCisK
KworQGRhdGFjbGFzcworY2xhc3MgU2VydmVySGVsbG86CisgICAgcmFuZG9tOiBieXRlcworICAg
IHNlc3Npb25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlOiBpbnQKKyAgICBjb21wcmVzc2lv
bl9tZXRob2Q6IGludAorCisgICAgIyBleHRlbnNpb25zCisgICAga2V5X3NoYXJlOiBPcHRpb25h
bFtLZXlTaGFyZUVudHJ5XSA9IE5vbmUKKyAgICBwcmVfc2hhcmVkX2tleTogT3B0aW9uYWxbaW50
XSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfdmVyc2lvbjogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAg
ICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1
bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX3NlcnZlcl9oZWxsbyhidWY6IEJ1ZmZlcikg
LT4gU2VydmVySGVsbG86CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtl
VHlwZS5TRVJWRVJfSEVMTE8KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAzKToKKyAgICAgICAg
YXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFfMgorICAgICAgICBzZXJ2
ZXJfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIpCisKKyAgICAgICAgaGVsbG8gPSBTZXJ2ZXJI
ZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1zZXJ2ZXJfcmFuZG9tLAorICAgICAgICAgICAgc2Vz
c2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWJ1
Zi5wdWxsX3VpbnQxNigpLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPWJ1Zi5wdWxs
X3VpbnQ4KCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgZGVm
IHB1bGxfZXh0ZW5zaW9uKCkgLT4gTm9uZToKKyAgICAgICAgICAgIGV4dGVuc2lvbl90eXBlID0g
YnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGV4dGVuc2lvbl9sZW5ndGggPSBidWYucHVs
bF91aW50MTYoKQorICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlw
ZS5TVVBQT1JURURfVkVSU0lPTlM6CisgICAgICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3Zl
cnNpb24gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlw
ZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAgICAgICBoZWxsby5rZXlf
c2hhcmUgPSBwdWxsX2tleV9zaGFyZShidWYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90
eXBlID09IEV4dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVk6CisgICAgICAgICAgICAgICAgaGVs
bG8ucHJlX3NoYXJlZF9rZXkgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVs
bF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVzaF9zZXJ2ZXJfaGVs
bG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBTZXJ2ZXJIZWxsbykgLT4gTm9uZToKKyAgICBidWYucHVz
aF91aW50OChIYW5kc2hha2VUeXBlLlNFUlZFUl9IRUxMTykKKyAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9OXzFfMikKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1
ZiwgMSwgaGVsbG8uc2Vzc2lvbl9pZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KGhlbGxvLmNp
cGhlcl9zdWl0ZSkKKyAgICAgICAgYnVmLnB1c2hfdWludDgoaGVsbG8uY29tcHJlc3Npb25fbWV0
aG9kKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVm
LCAyKToKKyAgICAgICAgICAgIGlmIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBl
LlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQx
NihoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbikKKworICAgICAgICAgICAgaWYgaGVsbG8ua2V5X3No
YXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLktFWV9TSEFSRSk6CisgICAgICAgICAgICAgICAgICAgIHB1c2hfa2V5
X3NoYXJlKGJ1ZiwgaGVsbG8ua2V5X3NoYXJlKQorCisgICAgICAgICAgICBpZiBoZWxsby5wcmVf
c2hhcmVkX2tleSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5z
aW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWSk6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5wcmVfc2hhcmVkX2tleSkKKworICAgICAgICAgICAg
Zm9yIGV4dGVuc2lvbl90eXBlLCBleHRlbnNpb25fdmFsdWUgaW4gaGVsbG8ub3RoZXJfZXh0ZW5z
aW9uczoKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgZXh0ZW5zaW9u
X3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhleHRlbnNpb25fdmFs
dWUpCisKKworQGRhdGFjbGFzcworY2xhc3MgTmV3U2Vzc2lvblRpY2tldDoKKyAgICB0aWNrZXRf
bGlmZXRpbWU6IGludCA9IDAKKyAgICB0aWNrZXRfYWdlX2FkZDogaW50ID0gMAorICAgIHRpY2tl
dF9ub25jZTogYnl0ZXMgPSBiIiIKKyAgICB0aWNrZXQ6IGJ5dGVzID0gYiIiCisKKyAgICAjIGV4
dGVuc2lvbnMKKyAgICBtYXhfZWFybHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQor
ICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVm
YXVsdF9mYWN0b3J5PWxpc3QpCisKKworZGVmIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0KGJ1Zjog
QnVmZmVyKSAtPiBOZXdTZXNzaW9uVGlja2V0OgorICAgIG5ld19zZXNzaW9uX3RpY2tldCA9IE5l
d1Nlc3Npb25UaWNrZXQoKQorCisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNo
YWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAzKToK
KyAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9saWZldGltZSA9IGJ1Zi5wdWxsX3Vp
bnQzMigpCisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50aWNrZXRfYWdlX2FkZCA9IGJ1Zi5w
dWxsX3VpbnQzMigpCisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50aWNrZXRfbm9uY2UgPSBw
dWxsX29wYXF1ZShidWYsIDEpCisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50aWNrZXQgPSBw
dWxsX29wYXF1ZShidWYsIDIpCisKKyAgICAgICAgZGVmIHB1bGxfZXh0ZW5zaW9uKCkgLT4gTm9u
ZToKKyAgICAgICAgICAgIGV4dGVuc2lvbl90eXBlID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAg
ICAgICAgIGV4dGVuc2lvbl9sZW5ndGggPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAg
aWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBOgorICAgICAgICAg
ICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplID0gYnVmLnB1bGxf
dWludDMyKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3X3Nlc3Npb25f
dGlja2V0Lm90aGVyX2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0
ZW5zaW9uX3R5cGUsIGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKwor
ICAgIHJldHVybiBuZXdfc2Vzc2lvbl90aWNrZXQKKworCitkZWYgcHVzaF9uZXdfc2Vzc2lvbl90
aWNrZXQoYnVmOiBCdWZmZXIsIG5ld19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldCkg
LT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLk5FV19TRVNTSU9OX1RJ
Q0tFVCkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWlu
dDMyKG5ld19zZXNzaW9uX3RpY2tldC50aWNrZXRfbGlmZXRpbWUpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQpCisgICAgICAgIHB1c2hf
b3BhcXVlKGJ1ZiwgMSwgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9ub25jZSkKKyAgICAgICAg
cHVzaF9vcGFxdWUoYnVmLCAyLCBuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0KQorCisgICAgICAg
IHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgaWYgbmV3X3Nlc3Npb25fdGlj
a2V0Lm1heF9lYXJseV9kYXRhX3NpemUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0
aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQSk6CisgICAgICAg
ICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5
X2RhdGFfc2l6ZSkKKworICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl90eXBlLCBleHRlbnNpb25f
dmFsdWUgaW4gbmV3X3Nlc3Npb25fdGlja2V0Lm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAg
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xh
c3MKK2NsYXNzIEVuY3J5cHRlZEV4dGVuc2lvbnM6CisgICAgYWxwbl9wcm90b2NvbDogT3B0aW9u
YWxbc3RyXSA9IE5vbmUKKyAgICBlYXJseV9kYXRhOiBib29sID0gRmFsc2UKKworICAgIG90aGVy
X2V4dGVuc2lvbnM6IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0
b3J5PWxpc3QpCisKKworZGVmIHB1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmOiBCdWZmZXIp
IC0+IEVuY3J5cHRlZEV4dGVuc2lvbnM6CisgICAgZXh0ZW5zaW9ucyA9IEVuY3J5cHRlZEV4dGVu
c2lvbnMoKQorCisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5F
TkNSWVBURURfRVhURU5TSU9OUworICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgorCisgICAg
ICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25f
dHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0g
YnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVu
c2lvblR5cGUuQUxQTjoKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wg
PSBwdWxsX2xpc3QoCisgICAgICAgICAgICAgICAgICAgIGJ1ZiwgMiwgcGFydGlhbChwdWxsX2Fs
cG5fcHJvdG9jb2wsIGJ1ZikKKyAgICAgICAgICAgICAgICApWzBdCisgICAgICAgICAgICBlbGlm
IGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAg
ICAgICBleHRlbnNpb25zLmVhcmx5X2RhdGEgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbnMub3RoZXJfZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwgYnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xl
bmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1
bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGV4dGVuc2lvbnMKKworCitkZWYgcHVzaF9lbmNy
eXB0ZWRfZXh0ZW5zaW9ucyhidWY6IEJ1ZmZlciwgZXh0ZW5zaW9uczogRW5jcnlwdGVkRXh0ZW5z
aW9ucykgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkVOQ1JZUFRF
RF9FWFRFTlNJT05TKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbnMuYWxwbl9wcm90
b2NvbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1
ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9hbHBuX3Byb3RvY29sLCBidWYp
LAorICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbnMuYWxwbl9wcm90b2NvbF0sCisg
ICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYgZXh0ZW5zaW9ucy5lYXJseV9k
YXRhOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAg
IGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIGV4dGVuc2lvbnMub3RoZXJf
ZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgZXh0
ZW5zaW9uX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhleHRlbnNp
b25fdmFsdWUpCisKKworQ2VydGlmaWNhdGVFbnRyeSA9IFR1cGxlW2J5dGVzLCBieXRlc10KKwor
CitAZGF0YWNsYXNzCitjbGFzcyBDZXJ0aWZpY2F0ZToKKyAgICByZXF1ZXN0X2NvbnRleHQ6IGJ5
dGVzID0gYiIiCisgICAgY2VydGlmaWNhdGVzOiBMaXN0W0NlcnRpZmljYXRlRW50cnldID0gZmll
bGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisKKworZGVmIHB1bGxfY2VydGlmaWNhdGUoYnVmOiBC
dWZmZXIpIC0+IENlcnRpZmljYXRlOgorICAgIGNlcnRpZmljYXRlID0gQ2VydGlmaWNhdGUoKQor
CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FU
RQorICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgorICAgICAgICBjZXJ0aWZpY2F0ZS5yZXF1
ZXN0X2NvbnRleHQgPSBwdWxsX29wYXF1ZShidWYsIDEpCisKKyAgICAgICAgZGVmIHB1bGxfY2Vy
dGlmaWNhdGVfZW50cnkoYnVmOiBCdWZmZXIpIC0+IENlcnRpZmljYXRlRW50cnk6CisgICAgICAg
ICAgICBkYXRhID0gcHVsbF9vcGFxdWUoYnVmLCAzKQorICAgICAgICAgICAgZXh0ZW5zaW9ucyA9
IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKyAgICAgICAgICAgIHJldHVybiAoZGF0YSwgZXh0ZW5zaW9u
cykKKworICAgICAgICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMgPSBwdWxsX2xpc3QoCisgICAg
ICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVsbF9jZXJ0aWZpY2F0ZV9lbnRyeSwgYnVmKQorICAg
ICAgICApCisKKyAgICByZXR1cm4gY2VydGlmaWNhdGUKKworCitkZWYgcHVzaF9jZXJ0aWZpY2F0
ZShidWY6IEJ1ZmZlciwgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlKSAtPiBOb25lOgorICAgIGJ1
Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUpCisgICAgd2l0aCBwdXNoX2Js
b2NrKGJ1ZiwgMyk6CisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMSwgY2VydGlmaWNhdGUucmVx
dWVzdF9jb250ZXh0KQorCisgICAgICAgIGRlZiBwdXNoX2NlcnRpZmljYXRlX2VudHJ5KGJ1Zjog
QnVmZmVyLCBlbnRyeTogQ2VydGlmaWNhdGVFbnRyeSkgLT4gTm9uZToKKyAgICAgICAgICAgIHB1
c2hfb3BhcXVlKGJ1ZiwgMywgZW50cnlbMF0pCisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDIsIGVudHJ5WzFdKQorCisgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgIGJ1ZiwgMywg
cGFydGlhbChwdXNoX2NlcnRpZmljYXRlX2VudHJ5LCBidWYpLCBjZXJ0aWZpY2F0ZS5jZXJ0aWZp
Y2F0ZXMKKyAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIENlcnRpZmljYXRlVmVyaWZ5
OgorICAgIGFsZ29yaXRobTogaW50CisgICAgc2lnbmF0dXJlOiBieXRlcworCisKK2RlZiBwdWxs
X2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlcikgLT4gQ2VydGlmaWNhdGVWZXJpZnk6Cisg
ICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FURV9W
RVJJRlkKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYWxnb3JpdGhtID0g
YnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgc2lnbmF0dXJlID0gcHVsbF9vcGFxdWUoYnVmLCAy
KQorCisgICAgcmV0dXJuIENlcnRpZmljYXRlVmVyaWZ5KGFsZ29yaXRobT1hbGdvcml0aG0sIHNp
Z25hdHVyZT1zaWduYXR1cmUpCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1Zjog
QnVmZmVyLCB2ZXJpZnk6IENlcnRpZmljYXRlVmVyaWZ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNo
X3VpbnQ4KEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZKQorICAgIHdpdGggcHVzaF9i
bG9jayhidWYsIDMpOgorICAgICAgICBidWYucHVzaF91aW50MTYodmVyaWZ5LmFsZ29yaXRobSkK
KyAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCB2ZXJpZnkuc2lnbmF0dXJlKQorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIEZpbmlzaGVkOgorICAgIHZlcmlmeV9kYXRhOiBieXRlcyA9IGIiIgorCisK
K2RlZiBwdWxsX2ZpbmlzaGVkKGJ1ZjogQnVmZmVyKSAtPiBGaW5pc2hlZDoKKyAgICBmaW5pc2hl
ZCA9IEZpbmlzaGVkKCkKKworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFr
ZVR5cGUuRklOSVNIRUQKKyAgICBmaW5pc2hlZC52ZXJpZnlfZGF0YSA9IHB1bGxfb3BhcXVlKGJ1
ZiwgMykKKworICAgIHJldHVybiBmaW5pc2hlZAorCisKK2RlZiBwdXNoX2ZpbmlzaGVkKGJ1Zjog
QnVmZmVyLCBmaW5pc2hlZDogRmluaXNoZWQpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgo
SGFuZHNoYWtlVHlwZS5GSU5JU0hFRCkKKyAgICBwdXNoX29wYXF1ZShidWYsIDMsIGZpbmlzaGVk
LnZlcmlmeV9kYXRhKQorCisKKyMgQ09OVEVYVAorCisKK2NsYXNzIEtleVNjaGVkdWxlOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlKToKKyAgICAgICAg
c2VsZi5hbGdvcml0aG0gPSBjaXBoZXJfc3VpdGVfaGFzaChjaXBoZXJfc3VpdGUpCisgICAgICAg
IHNlbGYuY2lwaGVyX3N1aXRlID0gY2lwaGVyX3N1aXRlCisgICAgICAgIHNlbGYuZ2VuZXJhdGlv
biA9IDAKKyAgICAgICAgc2VsZi5oYXNoID0gaGFzaGVzLkhhc2goc2VsZi5hbGdvcml0aG0sIGRl
ZmF1bHRfYmFja2VuZCgpKQorICAgICAgICBzZWxmLmhhc2hfZW1wdHlfdmFsdWUgPSBzZWxmLmhh
c2guY29weSgpLmZpbmFsaXplKCkKKyAgICAgICAgc2VsZi5zZWNyZXQgPSBieXRlcyhzZWxmLmFs
Z29yaXRobS5kaWdlc3Rfc2l6ZSkKKworICAgIGRlZiBjZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YShz
ZWxmLCBjb250ZXh0X3N0cmluZzogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXR1cm4gYiIg
IiAqIDY0ICsgY29udGV4dF9zdHJpbmcgKyBiIlx4MDAiICsgc2VsZi5oYXNoLmNvcHkoKS5maW5h
bGl6ZSgpCisKKyAgICBkZWYgZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZiwgc2VjcmV0OiBieXRl
cykgLT4gYnl0ZXM6CisgICAgICAgIGhtYWNfa2V5ID0gaGtkZl9leHBhbmRfbGFiZWwoCisgICAg
ICAgICAgICBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sCisgICAgICAgICAgICBzZWNyZXQ9c2Vj
cmV0LAorICAgICAgICAgICAgbGFiZWw9YiJmaW5pc2hlZCIsCisgICAgICAgICAgICBoYXNoX3Zh
bHVlPWIiIiwKKyAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwK
KyAgICAgICAgKQorCisgICAgICAgIGggPSBobWFjLkhNQUMoaG1hY19rZXksIGFsZ29yaXRobT1z
ZWxmLmFsZ29yaXRobSwgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSkKKyAgICAgICAgaC51cGRh
dGUoc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gaC5maW5hbGl6
ZSgpCisKKyAgICBkZWYgZGVyaXZlX3NlY3JldChzZWxmLCBsYWJlbDogYnl0ZXMpIC0+IGJ5dGVz
OgorICAgICAgICByZXR1cm4gaGtkZl9leHBhbmRfbGFiZWwoCisgICAgICAgICAgICBhbGdvcml0
aG09c2VsZi5hbGdvcml0aG0sCisgICAgICAgICAgICBzZWNyZXQ9c2VsZi5zZWNyZXQsCisgICAg
ICAgICAgICBsYWJlbD1sYWJlbCwKKyAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNoLmNv
cHkoKS5maW5hbGl6ZSgpLAorICAgICAgICAgICAgbGVuZ3RoPXNlbGYuYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplLAorICAgICAgICApCisKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBrZXlfbWF0ZXJpYWw6
IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGlmIGtleV9tYXRlcmlh
bCBpcyBOb25lOgorICAgICAgICAgICAga2V5X21hdGVyaWFsID0gYnl0ZXMoc2VsZi5hbGdvcml0
aG0uZGlnZXN0X3NpemUpCisKKyAgICAgICAgaWYgc2VsZi5nZW5lcmF0aW9uOgorICAgICAgICAg
ICAgc2VsZi5zZWNyZXQgPSBoa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdv
cml0aG09c2VsZi5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgc2VjcmV0PXNlbGYuc2VjcmV0
LAorICAgICAgICAgICAgICAgIGxhYmVsPWIiZGVyaXZlZCIsCisgICAgICAgICAgICAgICAgaGFz
aF92YWx1ZT1zZWxmLmhhc2hfZW1wdHlfdmFsdWUsCisgICAgICAgICAgICAgICAgbGVuZ3RoPXNl
bGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYu
Z2VuZXJhdGlvbiArPSAxCisgICAgICAgIHNlbGYuc2VjcmV0ID0gaGtkZl9leHRyYWN0KAorICAg
ICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLCBzYWx0PXNlbGYuc2VjcmV0LCBrZXlf
bWF0ZXJpYWw9a2V5X21hdGVyaWFsCisgICAgICAgICkKKworICAgIGRlZiB1cGRhdGVfaGFzaChz
ZWxmLCBkYXRhOiBieXRlcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5oYXNoLnVwZGF0ZShkYXRh
KQorCisKK2NsYXNzIEtleVNjaGVkdWxlUHJveHk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNp
cGhlcl9zdWl0ZXM6IExpc3RbQ2lwaGVyU3VpdGVdKToKKyAgICAgICAgc2VsZi5fX3NjaGVkdWxl
cyA9IGRpY3QobWFwKGxhbWJkYSBjOiAoYywgS2V5U2NoZWR1bGUoYykpLCBjaXBoZXJfc3VpdGVz
KSkKKworICAgIGRlZiBleHRyYWN0KHNlbGYsIGtleV9tYXRlcmlhbDogT3B0aW9uYWxbYnl0ZXNd
ID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgZm9yIGsgaW4gc2VsZi5fX3NjaGVkdWxlcy52YWx1
ZXMoKToKKyAgICAgICAgICAgIGsuZXh0cmFjdChrZXlfbWF0ZXJpYWwpCisKKyAgICBkZWYgc2Vs
ZWN0KHNlbGYsIGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUpIC0+IEtleVNjaGVkdWxlOgorICAg
ICAgICByZXR1cm4gc2VsZi5fX3NjaGVkdWxlc1tjaXBoZXJfc3VpdGVdCisKKyAgICBkZWYgdXBk
YXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIGZvciBrIGluIHNl
bGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAgICBrLnVwZGF0ZV9oYXNoKGRhdGEp
CisKKworQ0lQSEVSX1NVSVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEy
NTY6IGhhc2hlcy5TSEEyNTYsCisgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0OiBo
YXNoZXMuU0hBMzg0LAorICAgIENpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1Njog
aGFzaGVzLlNIQTI1NiwKK30KKworU0lHTkFUVVJFX0FMR09SSVRITVM6IERpY3QgPSB7CisgICAg
U2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTY6IChOb25lLCBoYXNoZXMu
U0hBMjU2KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDM4NFIxX1NIQTM4NDog
KE5vbmUsIGhhc2hlcy5TSEEzODQpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQ
NTIxUjFfU0hBNTEyOiAoTm9uZSwgaGFzaGVzLlNIQTUxMiksCisgICAgU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEExOiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNIQTEpLAorICAg
IFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2OiAocGFkZGluZy5QS0NTMXYxNSwg
aGFzaGVzLlNIQTI1NiksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEzODQ6
IChwYWRkaW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hBMzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTUxMjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEE1MTIpLAor
ICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2OiAocGFkZGluZy5QU1Ms
IGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hB
Mzg0OiAocGFkZGluZy5QU1MsIGhhc2hlcy5TSEEzODQpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRo
bS5SU0FfUFNTX1JTQUVfU0hBNTEyOiAocGFkZGluZy5QU1MsIGhhc2hlcy5TSEE1MTIpLAorfQor
CitHUk9VUF9UT19DVVJWRTogRGljdCA9IHsKKyAgICBHcm91cC5TRUNQMjU2UjE6IGVjLlNFQ1Ay
NTZSMSwKKyAgICBHcm91cC5TRUNQMzg0UjE6IGVjLlNFQ1AzODRSMSwKKyAgICBHcm91cC5TRUNQ
NTIxUjE6IGVjLlNFQ1A1MjFSMSwKK30KK0NVUlZFX1RPX0dST1VQID0gZGljdCgodiwgaykgZm9y
IGssIHYgaW4gR1JPVVBfVE9fQ1VSVkUuaXRlbXMoKSkKKworCitkZWYgY2lwaGVyX3N1aXRlX2hh
c2goY2lwaGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSkgLT4gaGFzaGVzLkhhc2hBbGdvcml0aG06Cisg
ICAgcmV0dXJuIENJUEhFUl9TVUlURVNbY2lwaGVyX3N1aXRlXSgpCisKKworZGVmIGRlY29kZV9w
dWJsaWNfa2V5KAorICAgIGtleV9zaGFyZTogS2V5U2hhcmVFbnRyeSwKKykgLT4gVW5pb25bZWMu
RWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4
UHVibGljS2V5LCBOb25lXToKKyAgICBpZiBrZXlfc2hhcmVbMF0gPT0gR3JvdXAuWDI1NTE5Ogor
ICAgICAgICByZXR1cm4geDI1NTE5LlgyNTUxOVB1YmxpY0tleS5mcm9tX3B1YmxpY19ieXRlcyhr
ZXlfc2hhcmVbMV0pCisgICAgZWxpZiBrZXlfc2hhcmVbMF0gPT0gR3JvdXAuWDQ0ODoKKyAgICAg
ICAgcmV0dXJuIHg0NDguWDQ0OFB1YmxpY0tleS5mcm9tX3B1YmxpY19ieXRlcyhrZXlfc2hhcmVb
MV0pCisgICAgZWxpZiBrZXlfc2hhcmVbMF0gaW4gR1JPVVBfVE9fQ1VSVkU6CisgICAgICAgIHJl
dHVybiBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5LmZyb21fZW5jb2RlZF9wb2ludCgKKyAgICAg
ICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVswXV0oKSwga2V5X3NoYXJlWzFdCisgICAg
ICAgICkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBlbmNvZGVfcHVi
bGljX2tleSgKKyAgICBwdWJsaWNfa2V5OiBVbmlvblsKKyAgICAgICAgZWMuRWxsaXB0aWNDdXJ2
ZVB1YmxpY0tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5Cisg
ICAgXQorKSAtPiBLZXlTaGFyZUVudHJ5OgorICAgIGlmIGlzaW5zdGFuY2UocHVibGljX2tleSwg
eDI1NTE5LlgyNTUxOVB1YmxpY0tleSk6CisgICAgICAgIHJldHVybiAoR3JvdXAuWDI1NTE5LCBw
dWJsaWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1hdC5SYXcpKQor
ICAgIGVsaWYgaXNpbnN0YW5jZShwdWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpOgorICAg
ICAgICByZXR1cm4gKEdyb3VwLlg0NDgsIHB1YmxpY19rZXkucHVibGljX2J5dGVzKEVuY29kaW5n
LlJhdywgUHVibGljRm9ybWF0LlJhdykpCisgICAgcmV0dXJuICgKKyAgICAgICAgQ1VSVkVfVE9f
R1JPVVBbcHVibGljX2tleS5jdXJ2ZS5fX2NsYXNzX19dLAorICAgICAgICBwdWJsaWNfa2V5LnB1
YmxpY19ieXRlcyhFbmNvZGluZy5YOTYyLCBQdWJsaWNGb3JtYXQuVW5jb21wcmVzc2VkUG9pbnQp
LAorICAgICkKKworCitkZWYgbmVnb3RpYXRlKAorICAgIHN1cHBvcnRlZDogTGlzdFtUXSwgb2Zm
ZXJlZDogT3B0aW9uYWxbTGlzdFtBbnldXSwgZXhjOiBPcHRpb25hbFtBbGVydF0gPSBOb25lCisp
IC0+IFQ6CisgICAgaWYgb2ZmZXJlZCBpcyBub3QgTm9uZToKKyAgICAgICAgZm9yIGMgaW4gc3Vw
cG9ydGVkOgorICAgICAgICAgICAgaWYgYyBpbiBvZmZlcmVkOgorICAgICAgICAgICAgICAgIHJl
dHVybiBjCisKKyAgICBpZiBleGMgaXMgbm90IE5vbmU6CisgICAgICAgIHJhaXNlIGV4YworICAg
IHJldHVybiBOb25lCisKKworZGVmIHNpZ25hdHVyZV9hbGdvcml0aG1fcGFyYW1zKAorICAgIHNp
Z25hdHVyZV9hbGdvcml0aG06IGludCwKKykgLT4gVW5pb25bVHVwbGVbZWMuRUNEU0FdLCBUdXBs
ZVtwYWRkaW5nLkFzeW1tZXRyaWNQYWRkaW5nLCBoYXNoZXMuSGFzaEFsZ29yaXRobV1dOgorICAg
IHBhZGRpbmdfY2xzLCBhbGdvcml0aG1fY2xzID0gU0lHTkFUVVJFX0FMR09SSVRITVNbc2lnbmF0
dXJlX2FsZ29yaXRobV0KKyAgICBhbGdvcml0aG0gPSBhbGdvcml0aG1fY2xzKCkKKyAgICBpZiBw
YWRkaW5nX2NscyBpcyBOb25lOgorICAgICAgICByZXR1cm4gKGVjLkVDRFNBKGFsZ29yaXRobSks
KQorICAgIGVsaWYgcGFkZGluZ19jbHMgPT0gcGFkZGluZy5QU1M6CisgICAgICAgIHBhZGRpbmdf
b2JqID0gcGFkZGluZ19jbHMoCisgICAgICAgICAgICBtZ2Y9cGFkZGluZy5NR0YxKGFsZ29yaXRo
bSksIHNhbHRfbGVuZ3RoPWFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICApCisgICAgZWxz
ZToKKyAgICAgICAgcGFkZGluZ19vYmogPSBwYWRkaW5nX2NscygpCisgICAgcmV0dXJuIHBhZGRp
bmdfb2JqLCBhbGdvcml0aG0KKworCitAY29udGV4dG1hbmFnZXIKK2RlZiBwdXNoX21lc3NhZ2Uo
CisgICAga2V5X3NjaGVkdWxlOiBVbmlvbltLZXlTY2hlZHVsZSwgS2V5U2NoZWR1bGVQcm94eV0s
IGJ1ZjogQnVmZmVyCispIC0+IEdlbmVyYXRvcjoKKyAgICBoYXNoX3N0YXJ0ID0gYnVmLnRlbGwo
KQorICAgIHlpZWxkCisgICAga2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGJ1Zi5kYXRhX3NsaWNl
KGhhc2hfc3RhcnQsIGJ1Zi50ZWxsKCkpKQorCisKKyMgY2FsbGJhY2sgdHlwZXMKKworCitAZGF0
YWNsYXNzCitjbGFzcyBTZXNzaW9uVGlja2V0OgorICAgICIiIgorICAgIEEgVExTIHNlc3Npb24g
dGlja2V0IGZvciBzZXNzaW9uIHJlc3VtcHRpb24uCisgICAgIiIiCisKKyAgICBhZ2VfYWRkOiBp
bnQKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlCisgICAgbm90X3ZhbGlkX2FmdGVyOiBk
YXRldGltZS5kYXRldGltZQorICAgIG5vdF92YWxpZF9iZWZvcmU6IGRhdGV0aW1lLmRhdGV0aW1l
CisgICAgcmVzdW1wdGlvbl9zZWNyZXQ6IGJ5dGVzCisgICAgc2VydmVyX25hbWU6IHN0cgorICAg
IHRpY2tldDogYnl0ZXMKKworICAgIG1heF9lYXJseV9kYXRhX3NpemU6IE9wdGlvbmFsW2ludF0g
PSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBsZVtpbnQsIGJ5dGVzXV0gPSBm
aWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc192
YWxpZChzZWxmKSAtPiBib29sOgorICAgICAgICBub3cgPSB1dGNub3coKQorICAgICAgICByZXR1
cm4gbm93ID49IHNlbGYubm90X3ZhbGlkX2JlZm9yZSBhbmQgbm93IDw9IHNlbGYubm90X3ZhbGlk
X2FmdGVyCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgb2JmdXNjYXRlZF9hZ2Uoc2VsZikgLT4g
aW50OgorICAgICAgICBhZ2UgPSBpbnQoKHV0Y25vdygpIC0gc2VsZi5ub3RfdmFsaWRfYmVmb3Jl
KS50b3RhbF9zZWNvbmRzKCkpCisgICAgICAgIHJldHVybiAoYWdlICsgc2VsZi5hZ2VfYWRkKSAl
ICgxIDw8IDMyKQorCisKK0FscG5IYW5kbGVyID0gQ2FsbGFibGVbW3N0cl0sIE5vbmVdCitTZXNz
aW9uVGlja2V0RmV0Y2hlciA9IENhbGxhYmxlW1tieXRlc10sIE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRdXQorU2Vzc2lvblRpY2tldEhhbmRsZXIgPSBDYWxsYWJsZVtbU2Vzc2lvblRpY2tldF0sIE5v
bmVdCisKKworY2xhc3MgQ29udGV4dDoKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYs
CisgICAgICAgIGlzX2NsaWVudDogYm9vbCwKKyAgICAgICAgYWxwbl9wcm90b2NvbHM6IE9wdGlv
bmFsW0xpc3Rbc3RyXV0gPSBOb25lLAorICAgICAgICBjYWRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9
IE5vbmUsCisgICAgICAgIGNhZmlsZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNh
cGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGxvZ2dlcjogT3B0aW9uYWxbVW5p
b25bbG9nZ2luZy5Mb2dnZXIsIGxvZ2dpbmcuTG9nZ2VyQWRhcHRlcl1dID0gTm9uZSwKKyAgICAg
ICAgbWF4X2Vhcmx5X2RhdGE6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBzZXJ2ZXJf
bmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIHZlcmlmeV9tb2RlOiBPcHRpb25h
bFtpbnRdID0gTm9uZSwKKyAgICApOgorICAgICAgICAjIGNvbmZpZ3VyYXRpb24KKyAgICAgICAg
c2VsZi5fYWxwbl9wcm90b2NvbHMgPSBhbHBuX3Byb3RvY29scworICAgICAgICBzZWxmLl9jYWRh
dGEgPSBjYWRhdGEKKyAgICAgICAgc2VsZi5fY2FmaWxlID0gY2FmaWxlCisgICAgICAgIHNlbGYu
X2NhcGF0aCA9IGNhcGF0aAorICAgICAgICBzZWxmLmNlcnRpZmljYXRlOiBPcHRpb25hbFt4NTA5
LkNlcnRpZmljYXRlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbjogTGlz
dFt4NTA5LkNlcnRpZmljYXRlXSA9IFtdCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0
ZV9rZXk6IE9wdGlvbmFsWworICAgICAgICAgICAgVW5pb25bZHNhLkRTQVByaXZhdGVLZXksIGVj
LkVsbGlwdGljQ3VydmVQcml2YXRlS2V5LCByc2EuUlNBUHJpdmF0ZUtleV0KKyAgICAgICAgXSA9
IE5vbmUKKyAgICAgICAgc2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9uczogTGlzdFtFeHRlbnNpb25d
ID0gW10KKyAgICAgICAgc2VsZi5fbWF4X2Vhcmx5X2RhdGEgPSBtYXhfZWFybHlfZGF0YQorICAg
ICAgICBzZWxmLnNlc3Npb25fdGlja2V0OiBPcHRpb25hbFtTZXNzaW9uVGlja2V0XSA9IE5vbmUK
KyAgICAgICAgc2VsZi5fc2VydmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgICAgICBpZiB2ZXJp
ZnlfbW9kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9tb2RlID0gdmVy
aWZ5X21vZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9tb2RlID0g
c3NsLkNFUlRfUkVRVUlSRUQgaWYgaXNfY2xpZW50IGVsc2Ugc3NsLkNFUlRfTk9ORQorCisgICAg
ICAgICMgY2FsbGJhY2tzCisgICAgICAgIHNlbGYuYWxwbl9jYjogT3B0aW9uYWxbQWxwbkhhbmRs
ZXJdID0gTm9uZQorICAgICAgICBzZWxmLmdldF9zZXNzaW9uX3RpY2tldF9jYjogT3B0aW9uYWxb
U2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZQorICAgICAgICBzZWxmLm5ld19zZXNzaW9uX3Rp
Y2tldF9jYjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZQorICAgICAgICBz
ZWxmLnVwZGF0ZV90cmFmZmljX2tleV9jYjogQ2FsbGFibGVbCisgICAgICAgICAgICBbRGlyZWN0
aW9uLCBFcG9jaCwgQ2lwaGVyU3VpdGUsIGJ5dGVzXSwgTm9uZQorICAgICAgICBdID0gbGFtYmRh
IGQsIGUsIGMsIHM6IE5vbmUKKworICAgICAgICAjIHN1cHBvcnRlZCBwYXJhbWV0ZXJzCisgICAg
ICAgIHNlbGYuX2NpcGhlcl9zdWl0ZXMgPSBbCisgICAgICAgICAgICBDaXBoZXJTdWl0ZS5BRVNf
MjU2X0dDTV9TSEEzODQsCisgICAgICAgICAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEy
NTYsCisgICAgICAgICAgICBDaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisg
ICAgICAgIF0KKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fbWV0aG9kczogTGlzdFtpbnRdID0g
W0NvbXByZXNzaW9uTWV0aG9kLk5VTExdCisgICAgICAgIHNlbGYuX3Bza19rZXlfZXhjaGFuZ2Vf
bW9kZXM6IExpc3RbaW50XSA9IFtQc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KKyAgICAg
ICAgc2VsZi5fc2lnbmF0dXJlX2FsZ29yaXRobXM6IExpc3RbaW50XSA9IFsKKyAgICAgICAgICAg
IFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgU2ln
bmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAgICAgICBTaWdu
YXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFs
Z29yaXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLl9zdXBwb3J0
ZWRfZ3JvdXBzID0gW0dyb3VwLlNFQ1AyNTZSMV0KKyAgICAgICAgaWYgZGVmYXVsdF9iYWNrZW5k
KCkueDI1NTE5X3N1cHBvcnRlZCgpOgorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3Vw
cy5hcHBlbmQoR3JvdXAuWDI1NTE5KQorICAgICAgICBpZiBkZWZhdWx0X2JhY2tlbmQoKS54NDQ4
X3N1cHBvcnRlZCgpOgorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDQ0OCkKKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW1RMU19WRVJT
SU9OXzFfM10KKworICAgICAgICAjIHN0YXRlCisgICAgICAgIHNlbGYuYWxwbl9uZWdvdGlhdGVk
OiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgICAgICBzZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQg
PSBGYWxzZQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZTogT3B0aW9uYWxbS2V5U2NoZWR1bGVd
ID0gTm9uZQorICAgICAgICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnM6IE9wdGlvbmFsW0xpc3Rb
RXh0ZW5zaW9uXV0gPSBOb25lCisgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2s6IE9wdGlv
bmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5
OiBPcHRpb25hbFtLZXlTY2hlZHVsZVByb3h5XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmV3X3Nl
c3Npb25fdGlja2V0OiBPcHRpb25hbFtOZXdTZXNzaW9uVGlja2V0XSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZp
Y2F0ZV0gPSBbXQorICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZlciA9IGIiIgorICAgICAgICBz
ZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9lbmNfa2V5OiBPcHRp
b25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYuX2RlY19rZXk6IE9wdGlvbmFsW2J5dGVz
XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fX2xvZ2dlciA9IGxvZ2dlcgorCisgICAgICAgIHNlbGYu
X2VjX3ByaXZhdGVfa2V5OiBPcHRpb25hbFtlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleV0gPSBO
b25lCisgICAgICAgIHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleTogT3B0aW9uYWxbeDI1NTE5Llgy
NTUxOVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5OiBP
cHRpb25hbFt4NDQ4Llg0NDhQcml2YXRlS2V5XSA9IE5vbmUKKworICAgICAgICBpZiBpc19jbGll
bnQ6CisgICAgICAgICAgICBzZWxmLmNsaWVudF9yYW5kb20gPSBvcy51cmFuZG9tKDMyKQorICAg
ICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNl
bGYuc3RhdGUgPSBTdGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmNsaWVudF9yYW5kb20gPSBOb25lCisgICAgICAgICAgICBzZWxmLnNl
c3Npb25faWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VY
UEVDVF9DTElFTlRfSEVMTE8KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3Jlc3Vt
ZWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiBz
ZXNzaW9uIHJlc3VtcHRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1c2VkLgorICAgICAgICAiIiIKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3Nlc3Npb25fcmVzdW1lZAorCisgICAgZGVmIGhhbmRsZV9tZXNz
YWdlKAorICAgICAgICBzZWxmLCBpbnB1dF9kYXRhOiBieXRlcywgb3V0cHV0X2J1ZjogRGljdFtF
cG9jaCwgQnVmZmVyXQorICAgICkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUOgorICAgICAgICAgICAgc2VsZi5fY2xpZW50X3Nl
bmRfaGVsbG8ob3V0cHV0X2J1ZltFcG9jaC5JTklUSUFMXSkKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyICs9IGlucHV0X2RhdGEKKyAgICAgICAgd2hp
bGUgbGVuKHNlbGYuX3JlY2VpdmVfYnVmZmVyKSA+PSA0OgorICAgICAgICAgICAgIyBkZXRlcm1p
bmUgbWVzc2FnZSBsZW5ndGgKKyAgICAgICAgICAgIG1lc3NhZ2VfdHlwZSA9IHNlbGYuX3JlY2Vp
dmVfYnVmZmVyWzBdCisgICAgICAgICAgICBtZXNzYWdlX2xlbmd0aCA9IDAKKyAgICAgICAgICAg
IGZvciBiIGluIHNlbGYuX3JlY2VpdmVfYnVmZmVyWzE6NF06CisgICAgICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAobWVzc2FnZV9sZW5ndGggPDwgOCkgfCBiCisgICAgICAgICAgICBtZXNz
YWdlX2xlbmd0aCArPSA0CisKKyAgICAgICAgICAgICMgY2hlY2sgbWVzc2FnZSBpcyBjb21wbGV0
ZQorICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3JlY2VpdmVfYnVmZmVyKSA8IG1lc3NhZ2VfbGVu
Z3RoOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5f
cmVjZWl2ZV9idWZmZXJbOm1lc3NhZ2VfbGVuZ3RoXQorICAgICAgICAgICAgc2VsZi5fcmVjZWl2
ZV9idWZmZXIgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclttZXNzYWdlX2xlbmd0aDpdCisKKyAgICAg
ICAgICAgIGlucHV0X2J1ZiA9IEJ1ZmZlcihkYXRhPW1lc3NhZ2UpCisKKyAgICAgICAgICAgICMg
Y2xpZW50IHN0YXRlcworCisgICAgICAgICAgICBpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVO
VF9FWFBFQ1RfU0VSVkVSX0hFTExPOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9
PSBIYW5kc2hha2VUeXBlLlNFUlZFUl9IRUxMTzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y2xpZW50X2hhbmRsZV9oZWxsbyhpbnB1dF9idWYsIG91dHB1dF9idWZbRXBvY2guSU5JVElBTF0p
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNM
SUVOVF9FWFBFQ1RfRU5DUllQVEVEX0VYVEVOU0lPTlM6CisgICAgICAgICAgICAgICAgaWYgbWVz
c2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlM6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZW5jcnlwdGVkX2V4dGVuc2lvbnMoaW5w
dXRfYnVmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNl
IEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBT
dGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEU6Cisg
ICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNB
VEU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGUo
aW5wdXRfYnVmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg
RklYTUU6IGhhbmRsZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgIHJh
aXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9
PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1ZFUklGWToKKyAgICAgICAgICAgICAg
ICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FURV9WRVJJRlk6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5
KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUg
PT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICBpZiBtZXNz
YWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fY2xpZW50X2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZbRXBvY2gu
SEFORFNIQUtFXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUg
PT0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIGlmIG1lc3Nh
Z2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLk5FV19TRVNTSU9OX1RJQ0tFVDoKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fY2xpZW50X2hhbmRsZV9uZXdfc2Vzc2lvbl90aWNrZXQoaW5wdXRfYnVm
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0
VW5leHBlY3RlZE1lc3NhZ2UKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc3RhdGVzCisKKyAgICAg
ICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxM
TzoKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5DTElF
TlRfSEVMTE86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9oYW5kbGVfaGVsbG8o
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9idWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdLAorICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0X2J1ZltFcG9jaC5IQU5EU0hBS0VdLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0X2J1ZltFcG9jaC5PTkVfUlRUXSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1l
c3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5TRVJWRVJfRVhQRUNU
X0ZJTklTSEVEOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VU
eXBlLkZJTklTSEVEOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2Zp
bmlzaGVkKGlucHV0X2J1Ziwgb3V0cHV0X2J1ZltFcG9jaC5PTkVfUlRUXSkKKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNz
YWdlCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuU0VSVkVSX1BPU1RfSEFO
RFNIQUtFOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKwor
ICAgICAgICAgICAgYXNzZXJ0IGlucHV0X2J1Zi5lb2YoKQorCisgICAgZGVmIF9idWlsZF9zZXNz
aW9uX3RpY2tldCgKKyAgICAgICAgc2VsZiwgbmV3X3Nlc3Npb25fdGlja2V0OiBOZXdTZXNzaW9u
VGlja2V0CisgICAgKSAtPiBTZXNzaW9uVGlja2V0OgorICAgICAgICByZXN1bXB0aW9uX21hc3Rl
cl9zZWNyZXQgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIicmVzIG1hc3RlciIp
CisgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0ID0gaGtkZl9leHBhbmRfbGFiZWwoCisgICAgICAg
ICAgICBhbGdvcml0aG09c2VsZi5rZXlfc2NoZWR1bGUuYWxnb3JpdGhtLAorICAgICAgICAgICAg
c2VjcmV0PXJlc3VtcHRpb25fbWFzdGVyX3NlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWIicmVz
dW1wdGlvbiIsCisgICAgICAgICAgICBoYXNoX3ZhbHVlPW5ld19zZXNzaW9uX3RpY2tldC50aWNr
ZXRfbm9uY2UsCisgICAgICAgICAgICBsZW5ndGg9c2VsZi5rZXlfc2NoZWR1bGUuYWxnb3JpdGht
LmRpZ2VzdF9zaXplLAorICAgICAgICApCisKKyAgICAgICAgdGltZXN0YW1wID0gdXRjbm93KCkK
KyAgICAgICAgcmV0dXJuIFNlc3Npb25UaWNrZXQoCisgICAgICAgICAgICBhZ2VfYWRkPW5ld19z
ZXNzaW9uX3RpY2tldC50aWNrZXRfYWdlX2FkZCwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1z
ZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0
YV9zaXplPW5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplLAorICAgICAgICAg
ICAgbm90X3ZhbGlkX2FmdGVyPXRpbWVzdGFtcAorICAgICAgICAgICAgKyBkYXRldGltZS50aW1l
ZGVsdGEoc2Vjb25kcz1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2xpZmV0aW1lKSwKKyAgICAg
ICAgICAgIG5vdF92YWxpZF9iZWZvcmU9dGltZXN0YW1wLAorICAgICAgICAgICAgb3RoZXJfZXh0
ZW5zaW9ucz1zZWxmLmhhbmRzaGFrZV9leHRlbnNpb25zLAorICAgICAgICAgICAgcmVzdW1wdGlv
bl9zZWNyZXQ9cmVzdW1wdGlvbl9zZWNyZXQsCisgICAgICAgICAgICBzZXJ2ZXJfbmFtZT1zZWxm
Ll9zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgIHRpY2tldD1uZXdfc2Vzc2lvbl90aWNrZXQudGlj
a2V0LAorICAgICAgICApCisKKyAgICBkZWYgX2NsaWVudF9zZW5kX2hlbGxvKHNlbGYsIG91dHB1
dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAga2V5X3NoYXJlOiBMaXN0W0tleVNoYXJl
RW50cnldID0gW10KKyAgICAgICAgc3VwcG9ydGVkX2dyb3VwczogTGlzdFtpbnRdID0gW10KKwor
ICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fc3VwcG9ydGVkX2dyb3VwczoKKyAgICAgICAgICAg
IGlmIGdyb3VwID09IEdyb3VwLlNFQ1AyNTZSMToKKyAgICAgICAgICAgICAgICBzZWxmLl9lY19w
cml2YXRlX2tleSA9IGVjLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgICAgICAg
ICBHUk9VUF9UT19DVVJWRVtHcm91cC5TRUNQMjU2UjFdKCksIGRlZmF1bHRfYmFja2VuZCgpCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoZW5jb2Rl
X3B1YmxpY19rZXkoc2VsZi5fZWNfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpKSkKKyAgICAgICAg
ICAgICAgICBzdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5TRUNQMjU2UjEpCisgICAgICAg
ICAgICBlbGlmIGdyb3VwID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgICAgICAgICBzZWxmLl94
MjU1MTlfcHJpdmF0ZV9rZXkgPSB4MjU1MTkuWDI1NTE5UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisg
ICAgICAgICAgICAgICAga2V5X3NoYXJlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2RlX3B1YmxpY19rZXkoc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKSkKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDI1NTE5KQorICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YNDQ4OgorICAg
ICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkgPSB4NDQ4Llg0NDhQcml2YXRlS2V5
LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJs
aWNfa2V5KHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpKSkKKyAgICAgICAgICAg
ICAgICBzdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5YNDQ4KQorICAgICAgICAgICAgZWxp
ZiBncm91cCA9PSBHcm91cC5HUkVBU0U6CisgICAgICAgICAgICAgICAga2V5X3NoYXJlLmFwcGVu
ZCgoR3JvdXAuR1JFQVNFLCBiIlx4MDAiKSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZ3Jv
dXBzLmFwcGVuZChHcm91cC5HUkVBU0UpCisKKyAgICAgICAgYXNzZXJ0IGxlbihrZXlfc2hhcmUp
LCAibm8ga2V5IHNoYXJlIGVudHJpZXMiCisKKyAgICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygK
KyAgICAgICAgICAgIHJhbmRvbT1zZWxmLmNsaWVudF9yYW5kb20sCisgICAgICAgICAgICBzZXNz
aW9uX2lkPXNlbGYuc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZXM9W2ludCh4
KSBmb3IgeCBpbiBzZWxmLl9jaXBoZXJfc3VpdGVzXSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9u
X21ldGhvZHM9c2VsZi5fY29tcHJlc3Npb25fbWV0aG9kcywKKyAgICAgICAgICAgIGFscG5fcHJv
dG9jb2xzPXNlbGYuX2FscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAga2V5X3NoYXJlPWtleV9z
aGFyZSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM9c2VsZi5fcHNrX2tleV9l
eGNoYW5nZV9tb2RlcworICAgICAgICAgICAgaWYgKHNlbGYuc2Vzc2lvbl90aWNrZXQgb3Igc2Vs
Zi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmUpCisgICAgICAgICAgICBlbHNlIE5v
bmUsCisgICAgICAgICAgICBzZXJ2ZXJfbmFtZT1zZWxmLl9zZXJ2ZXJfbmFtZSwKKyAgICAgICAg
ICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zPXNlbGYuX3NpZ25hdHVyZV9hbGdvcml0aG1zLAorICAg
ICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcz1zdXBwb3J0ZWRfZ3JvdXBzLAorICAgICAgICAgICAg
c3VwcG9ydGVkX3ZlcnNpb25zPXNlbGYuX3N1cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAg
IG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAgKQor
CisgICAgICAgICMgUFNLCisgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQgYW5kIHNlbGYu
c2Vzc2lvbl90aWNrZXQuaXNfdmFsaWQ6CisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVf
cHNrID0gS2V5U2NoZWR1bGUoc2VsZi5zZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUpCisgICAg
ICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmV4dHJhY3Qoc2VsZi5zZXNzaW9uX3RpY2tl
dC5yZXN1bXB0aW9uX3NlY3JldCkKKyAgICAgICAgICAgIGJpbmRlcl9rZXkgPSBzZWxmLl9rZXlf
c2NoZWR1bGVfcHNrLmRlcml2ZV9zZWNyZXQoYiJyZXMgYmluZGVyIikKKyAgICAgICAgICAgIGJp
bmRlcl9sZW5ndGggPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmFsZ29yaXRobS5kaWdlc3Rfc2l6
ZQorCisgICAgICAgICAgICAjIHVwZGF0ZSBoZWxsbworICAgICAgICAgICAgaWYgc2VsZi5zZXNz
aW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIGhlbGxvLmVhcmx5X2RhdGEgPSBUcnVlCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVk
X2tleSA9IE9mZmVyZWRQc2tzKAorICAgICAgICAgICAgICAgIGlkZW50aXRpZXM9WworICAgICAg
ICAgICAgICAgICAgICAoc2VsZi5zZXNzaW9uX3RpY2tldC50aWNrZXQsIHNlbGYuc2Vzc2lvbl90
aWNrZXQub2JmdXNjYXRlZF9hZ2UpCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICBiaW5kZXJzPVtieXRlcyhiaW5kZXJfbGVuZ3RoKV0sCisgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgICMgc2VyaWFsaXplIGhlbGxvIHdpdGhvdXQgYmluZGVyCisgICAgICAgICAgICB0bXBf
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAgICAgICAgICBwdXNoX2NsaWVudF9oZWxs
byh0bXBfYnVmLCBoZWxsbykKKworICAgICAgICAgICAgIyBjYWxjdWxhdGUgYmluZGVyCisgICAg
ICAgICAgICBoYXNoX29mZnNldCA9IHRtcF9idWYudGVsbCgpIC0gYmluZGVyX2xlbmd0aCAtIDMK
KyAgICAgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2sudXBkYXRlX2hhc2godG1wX2J1Zi5k
YXRhX3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgIGJpbmRlciA9IHNlbGYuX2tl
eV9zY2hlZHVsZV9wc2suZmluaXNoZWRfdmVyaWZ5X2RhdGEoYmluZGVyX2tleSkKKyAgICAgICAg
ICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmJpbmRlcnNbMF0gPSBiaW5kZXIKKyAgICAgICAgICAg
IHNlbGYuX2tleV9zY2hlZHVsZV9wc2sudXBkYXRlX2hhc2goCisgICAgICAgICAgICAgICAgdG1w
X2J1Zi5kYXRhX3NsaWNlKGhhc2hfb2Zmc2V0LCBoYXNoX29mZnNldCArIDMpICsgYmluZGVyCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2FsY3VsYXRlIGVhcmx5IGRhdGEga2V5Cisg
ICAgICAgICAgICBpZiBoZWxsby5lYXJseV9kYXRhOgorICAgICAgICAgICAgICAgIGVhcmx5X2tl
eSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikK
KyAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAg
ICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAgICAgICAgICAgICAgICAgIEVwb2NoLlpF
Uk9fUlRULAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmNpcGhl
cl9zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5LAorICAgICAgICAgICAgICAg
ICkKKworICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBLZXlTY2hlZHVsZVByb3h5
KHNlbGYuX2NpcGhlcl9zdWl0ZXMpCisgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eS5l
eHRyYWN0KE5vbmUpCisKKyAgICAgICAgd2l0aCBwdXNoX21lc3NhZ2Uoc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5LCBvdXRwdXRfYnVmKToKKyAgICAgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKG91
dHB1dF9idWYsIGhlbGxvKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRf
RVhQRUNUX1NFUlZFUl9IRUxMTykKKworICAgIGRlZiBfY2xpZW50X2hhbmRsZV9oZWxsbyhzZWxm
LCBpbnB1dF9idWY6IEJ1ZmZlciwgb3V0cHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAg
ICBwZWVyX2hlbGxvID0gcHVsbF9zZXJ2ZXJfaGVsbG8oaW5wdXRfYnVmKQorCisgICAgICAgIGNp
cGhlcl9zdWl0ZSA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgIHNlbGYuX2NpcGhlcl9zdWl0ZXMs
CisgICAgICAgICAgICBbcGVlcl9oZWxsby5jaXBoZXJfc3VpdGVdLAorICAgICAgICAgICAgQWxl
cnRIYW5kc2hha2VGYWlsdXJlKCJVbnN1cHBvcnRlZCBjaXBoZXIgc3VpdGUiKSwKKyAgICAgICAg
KQorICAgICAgICBhc3NlcnQgcGVlcl9oZWxsby5jb21wcmVzc2lvbl9tZXRob2QgaW4gc2VsZi5f
Y29tcHJlc3Npb25fbWV0aG9kcworICAgICAgICBhc3NlcnQgcGVlcl9oZWxsby5zdXBwb3J0ZWRf
dmVyc2lvbiBpbiBzZWxmLl9zdXBwb3J0ZWRfdmVyc2lvbnMKKworICAgICAgICAjIHNlbGVjdCBr
ZXkgc2NoZWR1bGUKKyAgICAgICAgaWYgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrIGlzIE5vbmUKKyAgICAgICAgICAgICAgICBvciBwZWVyX2hlbGxvLnByZV9zaGFyZWRf
a2V5ICE9IDAKKyAgICAgICAgICAgICAgICBvciBjaXBoZXJfc3VpdGUgIT0gc2VsZi5fa2V5X3Nj
aGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAg
cmFpc2UgQWxlcnRJbGxlZ2FsUGFyYW1ldGVyCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2sKKyAgICAgICAgICAgIHNlbGYuX3Nlc3Npb25fcmVz
dW1lZCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxl
ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5LnNlbGVjdChjaXBoZXJfc3VpdGUpCisgICAgICAg
IHNlbGYuX2tleV9zY2hlZHVsZV9wc2sgPSBOb25lCisgICAgICAgIHNlbGYuX2tleV9zY2hlZHVs
ZV9wcm94eSA9IE5vbmUKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAgICAg
IHBlZXJfcHVibGljX2tleSA9IGRlY29kZV9wdWJsaWNfa2V5KHBlZXJfaGVsbG8ua2V5X3NoYXJl
KQorICAgICAgICBzaGFyZWRfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4MjU1MTkuWDI1NTE5
UHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSBpcyBu
b3QgTm9uZQorICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX3gyNTUx
OV9wcml2YXRlX2tleS5leGNoYW5nZShwZWVyX3B1YmxpY19rZXkpCisgICAgICAgIGVsaWYgKAor
ICAgICAgICAgICAgaXNpbnN0YW5jZShwZWVyX3B1YmxpY19rZXksIHg0NDguWDQ0OFB1YmxpY0tl
eSkKKyAgICAgICAgICAgIGFuZCBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5IGlzIG5vdCBOb25lCisg
ICAgICAgICk6CisgICAgICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tl
eS5leGNoYW5nZShwZWVyX3B1YmxpY19rZXkpCisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAg
aXNpbnN0YW5jZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkpCisg
ICAgICAgICAgICBhbmQgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAg
ICAgIGFuZCBzZWxmLl9lY19wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkuY3VydmUuX19jbGFzc19f
CisgICAgICAgICAgICA9PSBwZWVyX3B1YmxpY19rZXkuY3VydmUuX19jbGFzc19fCisgICAgICAg
ICk6CisgICAgICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5fZWNfcHJpdmF0ZV9rZXkuZXhjaGFu
Z2UoZWMuRUNESCgpLCBwZWVyX3B1YmxpY19rZXkpCisgICAgICAgIGFzc2VydCBzaGFyZWRfa2V5
IGlzIG5vdCBOb25lCisKKyAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5w
dXRfYnVmLmRhdGEpCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tl
eSkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAg
ICBEaXJlY3Rpb24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAg
ICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0VO
Q1JZUFRFRF9FWFRFTlNJT05TKQorCisgICAgZGVmIF9jbGllbnRfaGFuZGxlX2VuY3J5cHRlZF9l
eHRlbnNpb25zKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICBlbmNy
eXB0ZWRfZXh0ZW5zaW9ucyA9IHB1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMoaW5wdXRfYnVmKQor
CisgICAgICAgIHNlbGYuYWxwbl9uZWdvdGlhdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuYWxw
bl9wcm90b2NvbAorICAgICAgICBzZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQgPSBlbmNyeXB0ZWRf
ZXh0ZW5zaW9ucy5lYXJseV9kYXRhCisgICAgICAgIHNlbGYucmVjZWl2ZWRfZXh0ZW5zaW9ucyA9
IGVuY3J5cHRlZF9leHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnMKKyAgICAgICAgaWYgc2VsZi5h
bHBuX2NiOgorICAgICAgICAgICAgc2VsZi5hbHBuX2NiKHNlbGYuYWxwbl9uZWdvdGlhdGVkKQor
CisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAgICAgIERp
cmVjdGlvbi5FTkNSWVBULCBFcG9jaC5IQU5EU0hBS0UsIGIiYyBocyB0cmFmZmljIgorICAgICAg
ICApCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRh
KQorCisgICAgICAgICMgaWYgdGhlIHNlcnZlciBhY2NlcHRlZCBvdXIgUFNLIHdlIGFyZSBkb25l
LCBvdGhlciB3ZSB3YW50IGl0cyBjZXJ0aWZpY2F0ZQorICAgICAgICBpZiBzZWxmLl9zZXNzaW9u
X3Jlc3VtZWQ6CisgICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVD
VF9GSU5JU0hFRCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShT
dGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEUpCisK
KyAgICBkZWYgX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGUoc2VsZiwgaW5wdXRfYnVmOiBCdWZm
ZXIpIC0+IE5vbmU6CisgICAgICAgIGNlcnRpZmljYXRlID0gcHVsbF9jZXJ0aWZpY2F0ZShpbnB1
dF9idWYpCisKKyAgICAgICAgc2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSA9IHg1MDkubG9hZF9kZXJf
eDUwOV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1sw
XVswXSwgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICApCisgICAgICAgIHNlbGYu
X3BlZXJfY2VydGlmaWNhdGVfY2hhaW4gPSBbCisgICAgICAgICAgICB4NTA5LmxvYWRfZGVyX3g1
MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVz
W2ldWzBdLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4oY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzKSkKKyAg
ICAgICAgXQorCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1
Zi5kYXRhKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0NF
UlRJRklDQVRFX1ZFUklGWSkKKworICAgIGRlZiBfY2xpZW50X2hhbmRsZV9jZXJ0aWZpY2F0ZV92
ZXJpZnkoc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAgICAgIHZlcmlmeSA9
IHB1bGxfY2VydGlmaWNhdGVfdmVyaWZ5KGlucHV0X2J1ZikKKworICAgICAgICBhc3NlcnQgdmVy
aWZ5LmFsZ29yaXRobSBpbiBzZWxmLl9zaWduYXR1cmVfYWxnb3JpdGhtcworCisgICAgICAgICMg
Y2hlY2sgc2lnbmF0dXJlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3BlZXJfY2Vy
dGlmaWNhdGUucHVibGljX2tleSgpLnZlcmlmeSgKKyAgICAgICAgICAgICAgICB2ZXJpZnkuc2ln
bmF0dXJlLAorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmNlcnRpZmljYXRlX3Zl
cmlmeV9kYXRhKAorICAgICAgICAgICAgICAgICAgICBiIlRMUyAxLjMsIHNlcnZlciBDZXJ0aWZp
Y2F0ZVZlcmlmeSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICpzaWduYXR1
cmVfYWxnb3JpdGhtX3BhcmFtcyh2ZXJpZnkuYWxnb3JpdGhtKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgZXhjZXB0IEludmFsaWRTaWduYXR1cmU6CisgICAgICAgICAgICByYWlzZSBBbGVydERl
Y3J5cHRFcnJvcgorCisgICAgICAgICMgY2hlY2sgY2VydGlmaWNhdGUKKyAgICAgICAgaWYgc2Vs
Zi5fdmVyaWZ5X21vZGUgIT0gc3NsLkNFUlRfTk9ORToKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9c2VsZi5fY2FkYXRhLAorICAgICAgICAg
ICAgICAgIGNhZmlsZT1zZWxmLl9jYWZpbGUsCisgICAgICAgICAgICAgICAgY2FwYXRoPXNlbGYu
X2NhcGF0aCwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1zZWxmLl9wZWVyX2NlcnRpZmlj
YXRlLAorICAgICAgICAgICAgICAgIGNoYWluPXNlbGYuX3BlZXJfY2VydGlmaWNhdGVfY2hhaW4s
CisgICAgICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVm
LmRhdGEpCisKKyAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklO
SVNIRUQpCisKKyAgICBkZWYgX2NsaWVudF9oYW5kbGVfZmluaXNoZWQoc2VsZiwgaW5wdXRfYnVm
OiBCdWZmZXIsIG91dHB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZmluaXNoZWQg
PSBwdWxsX2ZpbmlzaGVkKGlucHV0X2J1ZikKKworICAgICAgICAjIGNoZWNrIHZlcmlmeSBkYXRh
CisgICAgICAgIGV4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5rZXlfc2NoZWR1bGUuZmluaXNo
ZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZGVjX2tleSkKKyAgICAgICAgaWYgZmluaXNoZWQudmVyaWZ5
X2RhdGEgIT0gZXhwZWN0ZWRfdmVyaWZ5X2RhdGE6CisgICAgICAgICAgICByYWlzZSBBbGVydERl
Y3J5cHRFcnJvcgorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9i
dWYuZGF0YSkKKworICAgICAgICAjIHByZXBhcmUgdHJhZmZpYyBrZXlzCisgICAgICAgIGFzc2Vy
dCBzZWxmLmtleV9zY2hlZHVsZS5nZW5lcmF0aW9uID09IDIKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGUuZXh0cmFjdChOb25lKQorICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rp
b24oCisgICAgICAgICAgICBEaXJlY3Rpb24uREVDUllQVCwgRXBvY2guT05FX1JUVCwgYiJzIGFw
IHRyYWZmaWMiCisgICAgICAgICkKKyAgICAgICAgbmV4dF9lbmNfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgYXAgdHJhZmZpYyIpCisKKyAgICAgICAgIyBzZW5kIGZp
bmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBvdXRw
dXRfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZmluaXNoZWQoCisgICAgICAgICAgICAgICAgb3V0
cHV0X2J1ZiwKKyAgICAgICAgICAgICAgICBGaW5pc2hlZCgKKyAgICAgICAgICAgICAgICAgICAg
dmVyaWZ5X2RhdGE9c2VsZi5rZXlfc2NoZWR1bGUuZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5f
ZW5jX2tleSkKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgICMg
Y29tbWl0IHRyYWZmaWMga2V5CisgICAgICAgIHNlbGYuX2VuY19rZXkgPSBuZXh0X2VuY19rZXkK
KyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICBEaXJlY3Rp
b24uRU5DUllQVCwKKyAgICAgICAgICAgIEVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICBzZWxmLl9lbmNfa2V5LAor
ICAgICAgICApCisKKyAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9QT1NUX0hB
TkRTSEFLRSkKKworICAgIGRlZiBfY2xpZW50X2hhbmRsZV9uZXdfc2Vzc2lvbl90aWNrZXQoc2Vs
ZiwgaW5wdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tl
dCA9IHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKworICAgICAgICAjIG5vdGlm
eSBhcHBsaWNhdGlvbgorICAgICAgICBpZiBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYiBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHRpY2tldCA9IHNlbGYuX2J1aWxkX3Nlc3Npb25fdGlja2V0
KG5ld19zZXNzaW9uX3RpY2tldCkKKyAgICAgICAgICAgIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0
X2NiKHRpY2tldCkKKworICAgIGRlZiBfc2VydmVyX2hhbmRsZV9oZWxsbygKKyAgICAgICAgc2Vs
ZiwKKyAgICAgICAgaW5wdXRfYnVmOiBCdWZmZXIsCisgICAgICAgIGluaXRpYWxfYnVmOiBCdWZm
ZXIsCisgICAgICAgIGhhbmRzaGFrZV9idWY6IEJ1ZmZlciwKKyAgICAgICAgb25lcnR0X2J1Zjog
QnVmZmVyLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfY2xpZW50
X2hlbGxvKGlucHV0X2J1ZikKKworICAgICAgICAjIGRldGVybWluZSBhcHBsaWNhYmxlIHNpZ25h
dHVyZSBhbGdvcml0aG1zCisgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zOiBMaXN0W1NpZ25h
dHVyZUFsZ29yaXRobV0gPSBbXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2VydGlmaWNh
dGVfcHJpdmF0ZV9rZXksIHJzYS5SU0FQcml2YXRlS2V5KToKKyAgICAgICAgICAgIHNpZ25hdHVy
ZV9hbGdvcml0aG1zID0gWworICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtD
UzFfU0hBMSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKAorICAgICAg
ICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZh
dGVLZXkKKyAgICAgICAgKSBhbmQgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5LmN1cnZlLCBlYy5TRUNQMjU2UjEpOgorICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRo
bXMgPSBbU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTZdCisKKyAgICAg
ICAgIyBuZWdvdGlhdGUgcGFyYW1ldGVycworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlh
dGUoCisgICAgICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgcGVlcl9o
ZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJO
byBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgY29tcHJlc3Np
b25fbWV0aG9kID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fbWV0
aG9kcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kcywKKyAgICAg
ICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1l
dGhvZCIpLAorICAgICAgICApCisgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZSA9IG5lZ290
aWF0ZSgKKyAgICAgICAgICAgIHNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMsIHBlZXJfaGVs
bG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcworICAgICAgICApCisgICAgICAgIHNpZ25hdHVyZV9h
bGdvcml0aG0gPSBuZWdvdGlhdGUoCisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcywK
KyAgICAgICAgICAgIHBlZXJfaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAg
ICBBbGVydEhhbmRzaGFrZUZhaWx1cmUoIk5vIHN1cHBvcnRlZCBzaWduYXR1cmUgYWxnb3JpdGht
IiksCisgICAgICAgICkKKyAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb24gPSBuZWdvdGlhdGUoCisg
ICAgICAgICAgICBzZWxmLl9zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBwZWVyX2hl
bGxvLnN1cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIEFsZXJ0UHJvdG9jb2xWZXJzaW9u
KCJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lvbiIpLAorICAgICAgICApCisKKyAgICAgICAg
IyBuZWdvdGlhdGUgQUxQTgorICAgICAgICBpZiBzZWxmLl9hbHBuX3Byb3RvY29scyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIHNlbGYuYWxwbl9uZWdvdGlhdGVkID0gbmVnb3RpYXRlKAorICAg
ICAgICAgICAgICAgIHNlbGYuX2FscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgIHBlZXJf
aGVsbG8uYWxwbl9wcm90b2NvbHMsCisgICAgICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWls
dXJlKCJObyBjb21tb24gQUxQTiBwcm90b2NvbHMiKSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
aWYgc2VsZi5hbHBuX2NiOgorICAgICAgICAgICAgc2VsZi5hbHBuX2NiKHNlbGYuYWxwbl9uZWdv
dGlhdGVkKQorCisgICAgICAgIHNlbGYuY2xpZW50X3JhbmRvbSA9IHBlZXJfaGVsbG8ucmFuZG9t
CisgICAgICAgIHNlbGYuc2VydmVyX3JhbmRvbSA9IG9zLnVyYW5kb20oMzIpCisgICAgICAgIHNl
bGYuc2Vzc2lvbl9pZCA9IHBlZXJfaGVsbG8uc2Vzc2lvbl9pZAorICAgICAgICBzZWxmLnJlY2Vp
dmVkX2V4dGVuc2lvbnMgPSBwZWVyX2hlbGxvLm90aGVyX2V4dGVuc2lvbnMKKworICAgICAgICAj
IHNlbGVjdCBrZXkgc2NoZWR1bGUKKyAgICAgICAgcHJlX3NoYXJlZF9rZXkgPSBOb25lCisgICAg
ICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYuZ2V0X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlzIG5vdCBOb25lCisg
ICAgICAgICAgICBhbmQgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgYW5kIGxlbihwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRpZXMpID09
IDEKKyAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleS5iaW5kZXJz
KSA9PSAxCisgICAgICAgICk6CisgICAgICAgICAgICAjIGFzayBhcHBsaWNhdGlvbiB0byBmaW5k
IHNlc3Npb24gdGlja2V0CisgICAgICAgICAgICBpZGVudGl0eSA9IHBlZXJfaGVsbG8ucHJlX3No
YXJlZF9rZXkuaWRlbnRpdGllc1swXQorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXQgPSBzZWxm
LmdldF9zZXNzaW9uX3RpY2tldF9jYihpZGVudGl0eVswXSkKKworICAgICAgICAgICAgIyB2YWxp
ZGF0ZSBzZXNzaW9uIHRpY2tldAorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNl
c3Npb25fdGlja2V0IGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlj
a2V0LmlzX3ZhbGlkCisgICAgICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LmNpcGhlcl9z
dWl0ZSA9PSBjaXBoZXJfc3VpdGUKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVsZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICAg
ICAgc2VsZi5rZXlfc2NoZWR1bGUuZXh0cmFjdChzZXNzaW9uX3RpY2tldC5yZXN1bXB0aW9uX3Nl
Y3JldCkKKworICAgICAgICAgICAgICAgIGJpbmRlcl9rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5k
ZXJpdmVfc2VjcmV0KGIicmVzIGJpbmRlciIpCisgICAgICAgICAgICAgICAgYmluZGVyX2xlbmd0
aCA9IHNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorCisgICAgICAgICAg
ICAgICAgaGFzaF9vZmZzZXQgPSBpbnB1dF9idWYudGVsbCgpIC0gYmluZGVyX2xlbmd0aCAtIDMK
KyAgICAgICAgICAgICAgICBiaW5kZXIgPSBpbnB1dF9idWYuZGF0YV9zbGljZSgKKyAgICAgICAg
ICAgICAgICAgICAgaGFzaF9vZmZzZXQgKyAzLCBoYXNoX29mZnNldCArIDMgKyBiaW5kZXJfbGVu
Z3RoCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1
bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGFfc2xpY2UoMCwgaGFzaF9vZmZzZXQpKQorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2JpbmRlciA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVk
X3ZlcmlmeV9kYXRhKGJpbmRlcl9rZXkpCisKKyAgICAgICAgICAgICAgICBpZiBiaW5kZXIgIT0g
ZXhwZWN0ZWRfYmluZGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydEhhbmRzaGFr
ZUZhaWx1cmUoIlBTSyB2YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaCgKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRfYnVm
LmRhdGFfc2xpY2UoaGFzaF9vZmZzZXQsIGhhc2hfb2Zmc2V0ICsgMyArIGJpbmRlcl9sZW5ndGgp
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX3Nlc3Npb25fcmVzdW1l
ZCA9IFRydWUKKworICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIGVhcmx5IGRhdGEga2V5Cisg
ICAgICAgICAgICAgICAgaWYgcGVlcl9oZWxsby5lYXJseV9kYXRhOgorICAgICAgICAgICAgICAg
ICAgICBlYXJseV9rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBlIHRy
YWZmaWMiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQgPSBU
cnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAg
ICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYua2V5
X3NjaGVkdWxlLmNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhcmx5X2tl
eSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgcHJlX3NoYXJlZF9r
ZXkgPSAwCisKKyAgICAgICAgIyBpZiBQU0sgaXMgbm90IHVzZWQsIGluaXRpYWxpemUga2V5IHNj
aGVkdWxlCisgICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlzIE5vbmU6CisgICAgICAgICAgICBz
ZWxmLmtleV9zY2hlZHVsZSA9IEtleVNjaGVkdWxlKGNpcGhlcl9zdWl0ZSkKKyAgICAgICAgICAg
IHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgICMgcGVyZm9ybSBr
ZXkgZXhjaGFuZ2UKKyAgICAgICAgcHVibGljX2tleTogVW5pb25bCisgICAgICAgICAgICBlYy5F
bGxpcHRpY0N1cnZlUHVibGljS2V5LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5LCB4NDQ4Llg0NDhQ
dWJsaWNLZXkKKyAgICAgICAgXQorICAgICAgICBzaGFyZWRfa2V5OiBPcHRpb25hbFtieXRlc10g
PSBOb25lCisgICAgICAgIGZvciBrZXlfc2hhcmUgaW4gcGVlcl9oZWxsby5rZXlfc2hhcmU6Cisg
ICAgICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVibGljX2tleShrZXlfc2hhcmUp
CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUx
OVB1YmxpY0tleSk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5ID0g
eDI1NTE5LlgyNTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIHB1Ymxp
Y19rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpCisgICAgICAgICAg
ICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleS5leGNoYW5nZShwZWVy
X3B1YmxpY19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShwZWVyX3B1YmxpY19rZXksIHg0NDguWDQ0OFB1YmxpY0tleSk6CisgICAgICAgICAg
ICAgICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleSA9IHg0NDguWDQ0OFByaXZhdGVLZXkuZ2VuZXJh
dGUoKQorICAgICAgICAgICAgICAgIHB1YmxpY19rZXkgPSBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5
LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94NDQ4X3By
aXZhdGVfa2V5LmV4Y2hhbmdlKHBlZXJfcHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwgZWMuRWxsaXB0
aWNDdXJ2ZVB1YmxpY0tleSk6CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkg
PSBlYy5nZW5lcmF0ZV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9f
Q1VSVkVba2V5X3NoYXJlWzBdXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5fZWNfcHJpdmF0ZV9rZXkucHVi
bGljX2tleSgpCisgICAgICAgICAgICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX2VjX3ByaXZhdGVf
a2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5KQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgIGFzc2VydCBzaGFyZWRfa2V5IGlzIG5vdCBOb25lCisKKyAgICAgICAg
IyBzZW5kIGhlbGxvCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICBy
YW5kb209c2VsZi5zZXJ2ZXJfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNl
c3Npb25faWQsCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9Y2lwaGVyX3N1aXRlLAorICAgICAg
ICAgICAgY29tcHJlc3Npb25fbWV0aG9kPWNvbXByZXNzaW9uX21ldGhvZCwKKyAgICAgICAgICAg
IGtleV9zaGFyZT1lbmNvZGVfcHVibGljX2tleShwdWJsaWNfa2V5KSwKKyAgICAgICAgICAgIHBy
ZV9zaGFyZWRfa2V5PXByZV9zaGFyZWRfa2V5LAorICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNp
b249c3VwcG9ydGVkX3ZlcnNpb24sCisgICAgICAgICkKKyAgICAgICAgd2l0aCBwdXNoX21lc3Nh
Z2Uoc2VsZi5rZXlfc2NoZWR1bGUsIGluaXRpYWxfYnVmKToKKyAgICAgICAgICAgIHB1c2hfc2Vy
dmVyX2hlbGxvKGluaXRpYWxfYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUu
ZXh0cmFjdChzaGFyZWRfa2V5KQorCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVj
dGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5IQU5EU0hBS0UsIGIi
cyBocyB0cmFmZmljIgorICAgICAgICApCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJv
dGVjdGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5ERUNSWVBULCBFcG9jaC5IQU5EU0hBS0Us
IGIiYyBocyB0cmFmZmljIgorICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIGVuY3J5cHRlZCBl
eHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBo
YW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoCisg
ICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICBFbmNyeXB0ZWRF
eHRlbnNpb25zKAorICAgICAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPXNlbGYuYWxwbl9u
ZWdvdGlhdGVkLAorICAgICAgICAgICAgICAgICAgICBlYXJseV9kYXRhPXNlbGYuZWFybHlfZGF0
YV9hY2NlcHRlZCwKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1zZWxmLmhh
bmRzaGFrZV9leHRlbnNpb25zLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisK
KyAgICAgICAgaWYgcHJlX3NoYXJlZF9rZXkgaXMgTm9uZToKKyAgICAgICAgICAgICMgc2VuZCBj
ZXJ0aWZpY2F0ZQorICAgICAgICAgICAgd2l0aCBwdXNoX21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1
bGUsIGhhbmRzaGFrZV9idWYpOgorICAgICAgICAgICAgICAgIHB1c2hfY2VydGlmaWNhdGUoCisg
ICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENl
cnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb250ZXh0PWIiIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcz1bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHgucHVibGljX2J5dGVzKEVuY29kaW5nLkRFUiksIGIiIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBbc2VsZi5jZXJ0aWZpY2F0ZV0gKyBzZWxmLmNl
cnRpZmljYXRlX2NoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBzZW5kIGNlcnRp
ZmljYXRlIHZlcmlmeQorICAgICAgICAgICAgc2lnbmF0dXJlID0gc2VsZi5jZXJ0aWZpY2F0ZV9w
cml2YXRlX2tleS5zaWduKAorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmNlcnRp
ZmljYXRlX3ZlcmlmeV9kYXRhKAorICAgICAgICAgICAgICAgICAgICBiIlRMUyAxLjMsIHNlcnZl
ciBDZXJ0aWZpY2F0ZVZlcmlmeSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
ICpzaWduYXR1cmVfYWxnb3JpdGhtX3BhcmFtcyhzaWduYXR1cmVfYWxnb3JpdGhtKSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxl
LCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgICAgICBwdXNoX2NlcnRpZmljYXRlX3Zlcmlm
eSgKKyAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgQ2VydGlmaWNhdGVWZXJpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG09
c2lnbmF0dXJlX2FsZ29yaXRobSwgc2lnbmF0dXJlPXNpZ25hdHVyZQorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAjIHNlbmQgZmluaXNoZWQKKyAg
ICAgICAgd2l0aCBwdXNoX21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1bGUsIGhhbmRzaGFrZV9idWYp
OgorICAgICAgICAgICAgcHVzaF9maW5pc2hlZCgKKyAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgIEZpbmlzaGVkKAorICAgICAgICAgICAgICAgICAgICB2ZXJp
ZnlfZGF0YT1zZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLl9lbmNf
a2V5KQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBwcmVw
YXJlIHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1bGUuZ2VuZXJh
dGlvbiA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAg
ICAgc2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9u
LkVOQ1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAgICApCisgICAg
ICAgIHNlbGYuX25leHRfZGVjX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQo
YiJjIGFwIHRyYWZmaWMiKQorCisgICAgICAgICMgYW50aWNpcGF0ZSBjbGllbnQncyBGSU5JU0hF
RCBhcyB3ZSBkb24ndCB1c2UgY2xpZW50IGF1dGgKKyAgICAgICAgc2VsZi5fZXhwZWN0ZWRfdmVy
aWZ5X2RhdGEgPSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YSgKKyAgICAg
ICAgICAgIHNlbGYuX2RlY19rZXkKKyAgICAgICAgKQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9NjQpCisgICAgICAgIHB1c2hfZmluaXNoZWQoYnVmLCBGaW5pc2hlZCh2ZXJpZnlfZGF0
YT1zZWxmLl9leHBlY3RlZF92ZXJpZnlfZGF0YSkpCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxl
LnVwZGF0ZV9oYXNoKGJ1Zi5kYXRhKQorCisgICAgICAgICMgY3JlYXRlIGEgbmV3IHNlc3Npb24g
dGlja2V0CisgICAgICAgIGlmIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5vdCBOb25l
IGFuZCBwc2tfa2V5X2V4Y2hhbmdlX21vZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9uZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KAorICAgICAgICAgICAgICAg
IHRpY2tldF9saWZldGltZT04NjQwMCwKKyAgICAgICAgICAgICAgICB0aWNrZXRfYWdlX2FkZD1z
dHJ1Y3QudW5wYWNrKCJJIiwgb3MudXJhbmRvbSg0KSlbMF0sCisgICAgICAgICAgICAgICAgdGlj
a2V0X25vbmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9b3MudXJhbmRvbSg2NCksCisg
ICAgICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1zZWxmLl9tYXhfZWFybHlfZGF0YSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBzZW5kIG1lc3NzYWdlCisgICAgICAgICAg
ICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChvbmVydHRfYnVmLCBzZWxmLl9uZXdfc2Vzc2lvbl90
aWNrZXQpCisKKyAgICAgICAgICAgICMgbm90aWZ5IGFwcGxpY2F0aW9uCisgICAgICAgICAgICB0
aWNrZXQgPSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChzZWxmLl9uZXdfc2Vzc2lvbl90aWNr
ZXQpCisgICAgICAgICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQpCisKKyAg
ICBkZWYgX3NlcnZlcl9oYW5kbGVfZmluaXNoZWQoc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91
dHB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZmluaXNoZWQgPSBwdWxsX2Zpbmlz
aGVkKGlucHV0X2J1ZikKKworICAgICAgICAjIGNoZWNrIHZlcmlmeSBkYXRhCisgICAgICAgIGlm
IGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhOgorICAg
ICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAgICAgICAjIGNvbW1pdCB0cmFm
ZmljIGtleQorICAgICAgICBzZWxmLl9kZWNfa2V5ID0gc2VsZi5fbmV4dF9kZWNfa2V5CisgICAg
ICAgIHNlbGYuX25leHRfZGVjX2tleSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZp
Y19rZXlfY2IoCisgICAgICAgICAgICBEaXJlY3Rpb24uREVDUllQVCwKKyAgICAgICAgICAgIEVw
b2NoLk9ORV9SVFQsCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUs
CisgICAgICAgICAgICBzZWxmLl9kZWNfa2V5LAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRSkKKworICAgIGRlZiBfc2V0dXBf
dHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICBzZWxmLCBkaXJlY3Rpb246IERpcmVjdGlvbiwg
ZXBvY2g6IEVwb2NoLCBsYWJlbDogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGtleSA9
IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQobGFiZWwpCisKKyAgICAgICAgaWYgZGly
ZWN0aW9uID09IERpcmVjdGlvbi5FTkNSWVBUOgorICAgICAgICAgICAgc2VsZi5fZW5jX2tleSA9
IGtleQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZGVjX2tleSA9IGtleQorCisg
ICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgZGlyZWN0aW9u
LCBlcG9jaCwgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLCBrZXkKKyAgICAgICAgKQor
CisgICAgZGVmIF9zZXRfc3RhdGUoc2VsZiwgc3RhdGU6IFN0YXRlKSAtPiBOb25lOgorICAgICAg
ICBpZiBzZWxmLl9fbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fX2xvZ2dlci5kZWJ1ZygiVExT
ICVzIC0+ICVzIiwgc2VsZi5zdGF0ZSwgc3RhdGUpCisgICAgICAgIHNlbGYuc3RhdGUgPSBzdGF0
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkNGIw
Y2VlNDY2MTM0MmZlZTRlYzAzMWMwNjJmOTM1NzQ3MGM1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyNSBAQAor
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
K0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2Yg
ZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL19idWZmZXIuYworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVm
ZmVyLnB5aQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJv
dXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3B5LnR5cGVkCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkw
MWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19p
bml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfY2xpZW50
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWQ3YjcwNTVjZGFhY2E5NWVmZmI5M2U1MTllY2U1ZTNlZDUzY2Q1ZQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTI4MAp6Y21WK2IxXkBjWXt7UjNQMiEpRnxIajlvdFpVNnY4PyM0OGlCQG4jPlgt
Xmw7S2g9OXU9aSVrQiRFJS1FWWJnd2MKem82blhwLVhjUzRtPntaJE9fcSZlUG5sT3ItXm1MWElo
eTVFPUVXMlMwYzJlZ09FWU5RckhSJEcjTVMmTlM7WiVfCnpYc2lkOHhCWlFWeWYwMmlwO0BJNlp0
Yj5aeklvI2YxVj1Pcj1EczYyV2hBQkdRYV5CWl9ibkpaQXhpe2pZeGEqTAp6dX11KUI/dF56RDF1
djBRPFQ7NlF6cjh7biV6KWctMD5AV3s8ZEEmcCZXdWtHcXd3JWA2e2E9KytpYihrKzlSKmUKeipP
Nnx1SyF9djJwXnh+TXhAfFQ/MmdzcGQ2cl5+WkkqWjZsX3BUd1NPVUxvVHIhX2E/bUhGLWdJaGBA
d0AqbiV+CnpZJmtZTzJyfUJzKXxVcjxpMiM2TSZxJGxkZypCOUtAX0dtQytEaTduWndMbEAlOGwo
ZUpzWU03KTIwJnU0ejc/Ugp6czwkO1J0diNMPVh9TX0kOF8rKThUfkpEWDwoUWo5YFRzaFI3NHk7
aGhQSnVUVHBsVCsqP2B3Nj5zWmpzZXRzUzcKejBicDY3Sy00a2RDY1c2cExVQFpCQ2Vge3MwQ1J0
JGZvU1pgSHlUaSM7cVhUYSt0UkB8Q1IkbU9iQVlaeXhoQnF0CnpEM29ZKDVpcGFXJU0jQlk3cXZZ
VzVaQCsjbnd4LU03KmZweSNvKjc8bSshY2xqPkhYUD1OUX42JmlyZGIrTEt2Nwp6ZWdkMEVCfXRQ
JF5WTTs3eH50ZjVmJF94KjNOJHdYYWVDSXFHVVR+UXtHYl54Y3dRP2UxJGo+OVdUUWMzVT0pQncK
entKfEleJXw9VkJPcXBscmZ3ZlZENzhJYG03PGVeRiYjZl4ybT9LdFp0d2F4ME1QYDdBbGFwTitV
Oz8jQUomaXpOCnpyWiNTRThBQUgjJUp1cCk3dG9GZmA+LWhkZTtqcVhnTEo4dmA+SXl6SUh9MSVx
cjtWaj82WEVCWm0pVTU8RlNBTAp6PWFuMlkkMFJDTVdSP0BhNkxaSElFcHFRfnJxd1hXdig5fW52
MWk8PWIheFN+SyV4a1lMYHNmUE1sbnw5OHk9Y2oKej92Z1ZCYV8wUm9HdWEtQE5xTiRvb2hXeTt6
UkZyXkxWUVBHVF5wbzQ7ViY0OyNNaENgWVE4aG53MW82TldmKjheCnolUX4tWll4ZypPaVZCV0km
N0h0NSU2X1MpdEY5VWo3TyNBMlNPSmVHRWZjQjc2S0FMS0xkJDFpUzd4UVM7KEA1Wgp6ZEBlYlBz
TldxS0dgRDxmLXxqcUYoJVFJTns2MSVyMCtKflglM2VXbUNTfGhoTFJ8JGNYcns/QzxXVHs8PzE8
Tl4KelZ2SSpQX0t4YFl2aVR8eFFgSXd6cCtHQWU4WXhVZVZ0WiRjP25lTTlROylAS05fZVM4X2Zs
NEtyRVVTeGhffWxoCnp1SD9id0ZWJTY5eyF7SXJCQi1uMXpqUkF2U3EkYHowJUptYkU/JDV0ITw2
b1IpI3B6I0lLLVZfR0N8Jl5OfWduSQp6dG5KcyYmdnl2bVdiYyZVR0NOV3BfeEJDKHlnM1NoOX1Q
UWpkUihLcz57a30/YSZ8Jl8xXjsoSmVATT5edXZoM1YKemZLNHs9cGM5Z01oPmx9PGt6a2VQWENI
ZDtIWSlUfiRzU2BlJFRfLVpASncpMXh+aTJyUiRsUmAoJWFoflZEOCo2Cnp0b2opUnhubSZtaCN5
ZipGLTx4MWhuSUE2KX1tYklsYUJYbWlUdE8oakgpNHpjSHQzWUVTSUg7fDFQeDt0PW84aQp6KDhy
PCVUd2w1TlM5aSZZfDlAPUcpb01wJWxqK2RRbUgkK2Zna0V8O0dBPnVfMnl1QDxsWjZkXm52bUds
SG83PCMKenY3bSR9cFFhZGdGe0cpQyoqclNvN2hWS3F3NTRfWC1IazcjYm9fZHlIWEh2emdDeWoy
SHpNfUdvKz8oMio5bjErCnpFSHB6OXlge3tkUTw/XyRFZ19Te2llRzQxQ2M/U157R0JuWSFEZj91
VldUITNJfCpANFVJP3cmdD9IQGNDc3g2ZQpxKXleWjUzYGFCYlUlKEtWbTJkJW55P24yYW16Yih8
VUMqOVJjVmNOT3k3TCNJPEFiNjN6SHxvdwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfc2VydmVyLmJpbiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzViYmI5YzBhZmY4OTQ3NGZk
NzAyMWY2ZTFiNDRlMDViYTFhMWM0NwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjAyCnpjbVY7
KjA1JCk/e3tSM1AwMDxkZVhmI2VKKU9pM3Z4VnFZUHF0PEc9ZXNXS1BufEF1U1ZLPzZ5d1I1ZTBV
PXU8Mwp6RnIjRVU5dXtuPFdCUChPRT9leU5sNyZGbkxDV2FmVTBwYEdLb1ZNO09XVEtzWX4jMn05
ZkNmckRldEZQOTxISXwKemVjNER+a2N6UmckVXY9Z1k9fnpSOWJgT1VYP3RfaEF7JUFnPEZXJkgo
ITghNiY/Xl91cXdsSUF4Zlo3VjY/SyZ6CnopUEpKUjR2fEY8N2lXKnRnS3I9MHVeSFNOVU9PRiN2
fUtRb2ckKCVuRkUxdFhyfjgkSXVvRSo0UXZ2RyNGZUc+YgpFY2U3N2xKT0JVeQoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3B5Y2FjZXJ0LnBl
bSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxNTBjOTYw
ZjM1ODE0ZGVmMmMyYmM1ZmFmN2JkZmViOGRhYjMwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0KQEAgLTAsMCArMSw5OSBAQAorQ2VydGlmaWNhdGU6
CisgICAgRGF0YToKKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorICAgICAgICBTZXJpYWwgTnVt
YmVyOgorICAgICAgICAgICAgY2I6MmQ6ODA6OTk6NWE6Njk6NTI6NWIKKyAgICBTaWduYXR1cmUg
QWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgorICAgICAgICBJc3N1ZXI6IEM9WFks
IE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EsIENOPW91ci1jYS1zZXJ2ZXIKKyAgICAg
ICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEF1ZyAyOSAxNDoyMzoxNiAyMDE4
IEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXVnIDI2IDE0OjIzOjE2IDIwMjggR01UCisg
ICAgICAgIFN1YmplY3Q6IEM9WFksIE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EsIENO
PW91ci1jYS1zZXJ2ZXIKKyAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CisgICAgICAg
ICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorICAgICAgICAgICAgICAg
IFB1YmxpYy1LZXk6ICgzMDcyIGJpdCkKKyAgICAgICAgICAgICAgICBNb2R1bHVzOgorICAgICAg
ICAgICAgICAgICAgICAwMDo5NzplZDo1NTo0MTpiYTozNjoxNzo5NTpkYjo3MToxYzpkMzplMTo2
MToKKyAgICAgICAgICAgICAgICAgICAgYWM6NTg6NzM6ZTM6YzY6OTY6Y2Y6MmI6MWY6Yjg6MDg6
ZjU6OWQ6NGI6NGI6CisgICAgICAgICAgICAgICAgICAgIGM3OjMwOmY2OmI4OjBiOmIzOjUyOjcy
OmEwOmJiOmM5OjRkOjNiOjhlOmRmOgorICAgICAgICAgICAgICAgICAgICAyMjo4ZTowMTo1Nzo4
MTpjOTo5Mjo3MzpjYzowMDpjNjplYzo3MDpiMDozYToKKyAgICAgICAgICAgICAgICAgICAgMTc6
NDA6YzE6ZGY6ZjI6OGM6MzY6NGM6YzQ6YTc6ODE6ZTc6YjY6MjQ6Njg6CisgICAgICAgICAgICAg
ICAgICAgIGUyOmEwOjdlOjM1OjA3OjJmOmEwOjViOmY5OjQ1OjQ2OmY3OjFlOmYwOjQ2OgorICAg
ICAgICAgICAgICAgICAgICAxMTpmZTpjYToxYTozYzo1MDpmMToyNjphOTo1Zjo5YzoyMjo5Yzpm
ODo0MToKKyAgICAgICAgICAgICAgICAgICAgZTE6ZGY6NGY6MTI6OTU6MTk6MmY6NWM6OTA6MDE6
MTc6NmU6N2U6M2U6N2Q6CisgICAgICAgICAgICAgICAgICAgIGNmOmU5OjA5OmFmOjI1OmY4OmY4
OjQyOjc3OjJkOjZkOjVmOjM2OmYyOjc4OgorICAgICAgICAgICAgICAgICAgICAxZTo3ZDo0YTo4
Nzo2ODo2Mzo2YzowNjo3MToxYjo4ZDpmYToyNTpmZTpkNDoKKyAgICAgICAgICAgICAgICAgICAg
ZDM6ZjU6YTU6MTc6YjE6ZWY6ZWE6MTc6Y2I6NTQ6Yzg6Mjc6OTk6ODA6Y2I6CisgICAgICAgICAg
ICAgICAgICAgIDNjOjQ1OmYxOjJjOjUyOjFjOmRkOjFmOjUxOjQ1OjIwOjUwOjFlOjVlOmFiOgor
ICAgICAgICAgICAgICAgICAgICA1Nzo3MzoxYjo0MTo3ODo5NjpkZTo4NDphNDo3YTpkZDo4Zjoz
MDo4NTozNjoKKyAgICAgICAgICAgICAgICAgICAgNTg6Nzk6NzY6YTA6ZDI6NjE6Yzg6MWI6YTk6
OTQ6OTk6NjM6YzY6ZWU6Zjg6CisgICAgICAgICAgICAgICAgICAgIDE0OmJmOmI0OjUyOjU2OjMx
Ojk3OmZhOmViOmFjOjUzOjllOjk1OmNlOjRjOgorICAgICAgICAgICAgICAgICAgICBjNDo1YTo0
YTpiNzpjYTowMzoyNzo1YjozNTo1NzpjZTowMjpkYzplYzpjYToKKyAgICAgICAgICAgICAgICAg
ICAgNjk6Zjg6OGE6NWE6Mzk6Y2I6MTY6MjA6MTU6MDM6MjQ6NjE6NmM6ZjQ6N2E6CisgICAgICAg
ICAgICAgICAgICAgIGZjOmI2OjQ4OmU1OjU5OjEwOjVjOjQ5OmQwOjIzOjlmOmZiOjcxOjVlOjNh
OgorICAgICAgICAgICAgICAgICAgICBlOTo2ODo5ZjozNDo3Mjo4MDoyNzpiNjozZjo0YzpiMTpk
OTpkYjo2Mzo3ZjoKKyAgICAgICAgICAgICAgICAgICAgNjc6Njg6NGE6NmU6MTE6Zjg6ZTg6YzA6
ZjQ6NWE6MTY6Mzk6NTM6MGI6Njg6CisgICAgICAgICAgICAgICAgICAgIGRlOjc3OmZhOjQ1OmU3
OmY4OjkxOmNkOjc4OmNkOjI4Ojk0Ojk3OjcxOjU0OgorICAgICAgICAgICAgICAgICAgICBmYjpj
ZjpmMDozNzpkZTpjOToyNjpjNTpkYzoxYjo5ZTo4OTo2ZDowOTphYzoKKyAgICAgICAgICAgICAg
ICAgICAgYzg6NDQ6NzE6Y2I6NmQ6ZjE6OTc6MzE6ZDU6NGM6MjA6MzM6YmY6NzU6NGE6CisgICAg
ICAgICAgICAgICAgICAgIGEwOmUwOmRjOjY5OjExOmVkOjJhOmI0OjY0OjEwOjExOjMwOjhiOjBl
OmIwOgorICAgICAgICAgICAgICAgICAgICBhNzoxMDpkODo4YTpjNTphYToxYjpjODoyNjo4YToy
NTplNzo2Njo5ZjphNToKKyAgICAgICAgICAgICAgICAgICAgNmE6MWE6MmY6N2M6NWY6ODM6YzY6
Nzg6NGY6MWYKKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAg
ICAgIFg1MDl2MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElk
ZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIEREOkJGOkNBOkRBOkU2OkQxOjM0OkJBOjM3Ojc1
OjIxOkNBOjZGOjlBOjA4OjI4OkYyOjM1OkI2OjQ4CisgICAgICAgICAgICBYNTA5djMgQXV0aG9y
aXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpERDpCRjpDQTpEQTpF
NjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoyODpGMjozNTpCNjo0OAorCisgICAgICAg
ICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAgICAgICAgICAgIENBOlRSVUUK
KyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgorICAgICAg
ICAgMzM6NmE6NTQ6ZDM6NmI6YzA6ZDc6MDE6NWY6OWQ6ZjQ6MDU6YzE6OTM6NjY6OTA6NTA6ZDA6
CisgICAgICAgICBiNzoxODplOTpiMDoxZTo0YTphMDpiNjpkYTo3Njo5MzphZjo4NDpkYjphZDox
NTo1NDozMToKKyAgICAgICAgIDE1OjEzOmU0OmRlOjdlOjRlOjBjOmQ1OjA5OjFjOjM0OjM1OmI2
OmU1OjRjOmQ2OjZmOjY1OgorICAgICAgICAgN2Q6MzI6NWY6ZWI6ZmM6YTk6NmI6MDc6Zjc6NDk6
ODI6ZTU6ODE6N2U6MDc6ODA6OWE6NjM6CisgICAgICAgICBmODoyYzpjMzo0MDpiYzo4ZjpkNDoy
YTpkYTozZTpkMTplZTowODpiNzo0ZDphNzo4NDpjYToKKyAgICAgICAgIGY0OjNmOmExOjk4OjQ1
OmJlOmIxOjA1OjY5OmU3OmRmOmQ3Ojk5OmFiOjFiOmVlOjhiOjMwOgorICAgICAgICAgY2M6Zjc6
ZmM6ZTc6ZDQ6MGI6MTc6YWU6OTc6YmY6ZTQ6N2I6ZmQ6MGY6YTc6YjQ6ODU6Nzk6CisgICAgICAg
ICBlMzo1OTplMjoxNjo4NzpiZjoxZjoyOTo0NToyYzoyMzo5Mzo3NjpiZTpjMDo4NzoxZDpkZToK
KyAgICAgICAgIGVjOjJiOjQyOjZhOmU1OmJiOmM4OmY0OjBhOjRhOjA4OjBhOjhjOjVjOmQ4Ojdk
OjRkOmQxOgorICAgICAgICAgYjg6YmY6ZDU6Zjc6Mjk6ZWQ6OTI6ZDE6OTQ6MDQ6ZTg6MzU6MDY6
NTc6N2Y6MmM6MjM6OTc6CisgICAgICAgICA4NzphNTozNTo4ZDoyNjpkMzoxYTo0NzpmMjoxNjpk
NzpkOTpjNjpkNDoxZjoyMzo0MzpkMzoKKyAgICAgICAgIDI2Ojk5OjM5OmNhOjIwOmY0OjcxOjIz
OjZmOjBjOjRhOjc2Ojc2OmY3Ojc2OjFmOmIzOmZlOgorICAgICAgICAgYmY6NDc6YjA6ZmM6MmE6
NTY6ODE6ZTE6ZDI6ZGQ6ZWU6MDg6ZDg6ZjQ6ZmY6NWE6ZGM6MjU6CisgICAgICAgICA2MTo4YTo5
MTowMjpiOTo4NjoxYzpmMjo1MDo3Mzo3NjoyNTozNTpmYzpiNjoyNToyNjoxNToKKyAgICAgICAg
IGNiOmViOmM0OjJiOjYxOjBjOjFjOmU3OmVlOjJmOjE3OjliOmVjOmYwOmQ0OmExOjg0OmU3Ogor
ICAgICAgICAgZDI6YWY6ZGU6ZTQ6MWI6MjQ6MTQ6YTc6MDE6ODc6ZTM6YWI6Mjk6NTg6NDY6YTA6
ZDk6YzA6CisgICAgICAgICAwYTplMDo4ZDpkNzo1OTpkMzoxYjpmODo1NDoyMDozZTo3ODphNTph
NTpjODo0Zjo4YjowMzoKKyAgICAgICAgIGM0Ojk2OjlmOmVjOmZiOjQ3OmNmOjc2OjJkOjhkOjY1
OjM0OjI3OmJmOmZhOmFlOjAxOjA1OgorICAgICAgICAgOGE6ZjM6OTI6MGE6ZGQ6ODk6NmM6OTc6
YTE6Yzc6ZTc6NjA6NTE6ZTc6YWM6ZWI6NGI6N2Q6CisgICAgICAgICAyYzpiODo2NTpjOTpmZTo1
ZDo2YTo0ODo1NTo4ZTplNDpjNzpmOTo2YTo0MDplMTpiODo2NDoKKyAgICAgICAgIDQ1OmU5OmI1
OjU5OjI5OmE1OjVmOmNmOjdkOjU4OjdkOjY0Ojc5OmU1OmE0OjA5OmFjOjFlOgorICAgICAgICAg
NzY6NjU6M2Q6OTQ6YzQ6NjgKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRWJUQ0NB
dFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgor
QkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZi
aUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6
TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dHUEFEQ0NB
WW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQorblV0THh6RDJ1QXV6
VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVwNEhudGlSbworNHFC
K05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVaTDF5UUFSZHVmajU5
eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9XbEY3SHY2aGZMVk1n
bm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1JVTJXSGwyb05KaHlC
dXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFWODRDM096S2FmaUtX
am5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtBSjdZL1RMSFoyMk4v
WjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgvd045N0pKc1hjRzU2
SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3cHhEWQoraXNXcUc4
Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVUzYi9LMnVi
UgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1YlJOTG8zZFNIS2I1
b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFN
MnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0RlZReEZSUGszbjVP
RE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6RFFMeVAxQ3JhUHRI
dUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2Nlh2K1I3L1ErbnRJ
VjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6WQorZlUzUnVML1Y5
eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpwazV5aUQwY1NOdgor
REVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdIUEpRYzNZbE5meTJK
U1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09yS1ZoR29ObkFDdUNO
MTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdFRml2T1NDdDJKYkpl
aHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdTbWxYODk5V0gxa2Vl
V2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9yZXRyeS5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBmM2JkNDk4MWE0YTY1OTZiNTBlYzY1ZWRiZDUxYjBiNGNhM2JlZTQKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyNQp6Y21WLUAwRH1NVXt7UjNQMjxnI0Eqd0lYfmp1SHpC
QVg7UlAmd3wpcjV7cVpNO0RBJStMXiptail8ZmR3Nkg1ckcKekdJTXhZXmhWUkYtMm0tQFIxQSVj
O2N9MnxLNigpd1AoUE9geFJRPV9ERVgqck1TPVAydzk3a0YhaD5jV2cpbnApCmZuSGV0U1gleGpg
WF8pS307aUplNWQ0OGs7ej5tcXBMWmFDWDl9aFo/CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbiBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4MzY4M2QyZDViNTU1ZDli
MDIzMTk5OTAyZmNlZTU3ZDFiNTkzN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvc2hvcnRfaGVhZGVyLmJpbgpAQCAtMCwwICsxIEBACitd9FqntZwOGtbmaPUwTNT9H7N5
kycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvc3NsX2NlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZjcxMjdhNGIwMjVhYTIzMzIzMTkzZjA2Y2YxNzczYTU2MGUzODEwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbQpAQCAtMCwwICsxLDM0
IEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1z
dGdKbGFhVkpjTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pB
WURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdB
MVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBM01E
Y3gKK05ESXpNVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdR
VzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJw
YjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERDQ0FhSXdEUVlKS29aSWh2Y05BUUVCQlFB
RGdnR1BBRENDQVlvQ2dnR0JBSjhvTHpkQjczOWsKK1l4WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9z
RHoxTVQ3RGxqY1pMQkx5N09xbmtMcEI1dG5NODI1NkR3ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZC
VzJINWNNQ296N1gxN2tvZVJoekdEZDNka2pVZUJqWHZSNXFSb3NHOHdNM2xRdWcKK1U3QWl6WSsz
QXphajF5TjNtWjlLNWEyMGpyNThLcWlueitYeHg2c2IySmZZWWZmMm5lSmJCYWhObTVpZDBBRDIK
K3BpL1R0aFpxTzVEVVJKWW8rTWRnWk9jeSs3akVqT0pzTFdaZDNZenE3OGlNMDdxRGpicElvVnBF
TlpDVEhUV0EKK2hYOExJcXowT0JtaDR3ZVFwbTQrcGxVN0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0
QUJXTzduOWZXeVNtZjlRWkMKK1dZeEhBRnBCUXM2elVWcUFEN25oRmRUcXBROWJSaWFFbmpFNEhp
QWNjUFcrTUFvU3hGbnYvck56RXpJNmI0elUKK05zcEZNZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5
UEp5a3FFWDRQWmwzTGExQmUycTdZWjF3eWRSNTIzWGQrZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZS
dmliMTc1TDRyMldWMUNYUUg3Z0Z3WllDb2Q2V0hZcTVUUUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZ
RFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BNEdBMVVkRHdFQi93UUVBd0lGb0RBZEJnTlYKK0hT
VUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdO
VkhRNEUKK0ZnUVVqK29kNHpOY0FCYXppMjlyYjlOTXk3WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNi
L0sydWJSTkxvM2RTSEsKK2I1b0lLUEkxdGtpaFVhUlBNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdK
QVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW0KK2RIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVdNQlFH
QTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY29JSkFNc3QKK2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFj
QkFRUjNNSFV3UEFZSUt3WUJCUVVITUFLR01HaDBkSEE2THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRH
VnpkQzV1WlhRdmRHVnpkR05oTDNCNVkyRmpaWEowTG1ObGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBh
SFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExtNWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3
WUQKK1ZSMGZCRHd3T2pBNG9EYWdOSVl5YUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpYTjBM
bTVsZEM5MFpYTjAKK1kyRXZjbVYyYjJOaGRHbHZiaTVqY213d0RRWUpLb1pJaHZjTkFRRUxCUUFE
Z2dHQkFDZjFqRmtROU1ibktBQy8KK3VvMTdFd1B4SEtaZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJS
NVpXY2hEQ3BWN2tDT2haK2ZSN3NLS2syMlpIU1kKK29IK3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdX
dklkM0p2YXBwZFZXa0MvVnBVeUZmTHNHVURGdUlQQURtWlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4
Sy8xbVY2R3E5TVJyUnFpRGZwU0VMbit2NTNPTTltR3Nwd1crTloxQ0lyYkN1VzAKK0t4Wi90UGtx
bjhQU2Q5Zk5aUjcwYkI3cldibndybCtrSDh4S3hMbDZxZGxyTW1nNzRXV3doTGVReEs3KzlEZFAK
K0lhRGVuenF4NWN3V0JHWS9DMEhjUWowZ1B1eTNsU3MxVi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3
WFM3NWlSQXIKKytVRkdUendBdHlmVFpTUW9GeU1tTVVMcWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExX
RXN0VTFOSUIxSy9DUkk3Z0kKK0FZNjVDbFRVK3pSUy90bEY4SUE3dHNGdmd0RWY4anNJOWthbWxp
ZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQQjFBVXYKK1N0UFlRa0tOTStOanl0V0hsNXROdUJvRE5Mc2Mw
Z0kvV1NQaUk0Q0lZOEx3b21Pb2l3PT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjBhZDQx
Njg3ZTJhZmQ3YTBmOTRkMTU2MWFiZGVhMWU1ZGQ0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtCkBAIC0wLDAgKzEsNjAgQEAK
Ky0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRjhUQ0NCRm1nQXdJQkFnSUpBTXN0Z0ps
YWFWSmNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZR
UUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVB
d3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6TVRaYUZ3MHlPREEzTURjeAor
TkRJek1UWmFNRjh4Q3pBSkJnTlZCQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBh
SEpoZURFagorTUNFR0ExVUVDZ3dhVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4
RWpBUUJnTlZCQU1NQ1d4dgorWTJGc2FHOXpkRENDQWFJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dH
UEFEQ0NBWW9DZ2dHQkFKOG9MemRCNzM5aworWXhaaUZ1a0JGR0lweWpxWWtqMEkwMTVwL3NEejFN
VDdEbGpjWkxCTHk3T3Fua0xwQjV0bk04MjU2RHdkaWhQQQorM3psbmZFelRmcjlERDBxRkJXMkg1
Y01Db3o3WDE3a29lUmh6R0RkM2RralVlQmpYdlI1cVJvc0c4d00zbFF1ZworVTdBaXpZKzNBemFq
MXlOM21aOUs1YTIwanI1OEtxaW56K1h4eDZzYjJKZllZZmYybmVKYkJhaE5tNWlkMEFEMgorcGkv
VHRoWnFPNURVUkpZbytNZGdaT2N5KzdqRWpPSnNMV1pkM1l6cTc4aU0wN3FEamJwSW9WcEVOWkNU
SFRXQQoraFg4TElxejBPQm1oNHdlUXBtNCtwbFU3RTRyNEQ4MnVhdW9jV3c4aXl1em5DVHRBQldP
N245Zld5U21mOVFaQworV1l4SEFGcEJRczZ6VVZxQUQ3bmhGZFRxcFE5YlJpYUVuakU0SGlBY2NQ
VytNQW9TeEZudi9yTnpFekk2YjR6VQorTnNwRk1mZzFhTlZhbWRqeGRwVVoxR0cxT2tmMHlQSnlr
cUVYNFBabDNMYTFCZTJxN1laMXd5ZFI1MjNYZCtmMworRU80L2craW1FVFNLbjhneUNmNlJ2aWIx
NzVMNHIyV1YxQ1hRSDdnRndaWUNvZDZXSFlxNVRRSURBUUFCbzRJQgord0RDQ0Fid3dGQVlEVlIw
UkJBMHdDNElKYkc5allXeG9iM04wTUE0R0ExVWREd0VCL3dRRUF3SUZvREFkQmdOVgorSFNVRUZq
QVVCZ2dyQmdFRkJRY0RBUVlJS3dZQkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWRCZ05WSFE0
RQorRmdRVWorb2Q0ek5jQUJhemkyOXJiOU5NeTdYTGZGVXdmUVlEVlIwakJIWXdkSUFVM2IvSzJ1
YlJOTG8zZFNISworYjVvSUtQSTF0a2loVWFSUE1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURW
UVFLREIxUWVYUm9iMjRnVTI5bQorZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVF
QXd3TmIzVnlMV05oTFhObGNuWmxjb0lKQU1zdAorZ0psYWFWSmJNSUdEQmdnckJnRUZCUWNCQVFS
M01IVXdQQVlJS3dZQkJRVUhNQUtHTUdoMGRIQTZMeTkwWlhOMAorWTJFdWNIbDBhRzl1ZEdWemRD
NXVaWFF2ZEdWemRHTmhMM0I1WTJGalpYSjBMbU5sY2pBMUJnZ3JCZ0VGQlFjdworQVlZcGFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wWTJFdmIyTnpjQzh3UXdZRAor
VlIwZkJEd3dPakE0b0RhZ05JWXlhSFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExtNWxk
QzkwWlhOMAorWTJFdmNtVjJiMk5oZEdsdmJpNWpjbXd3RFFZSktvWklodmNOQVFFTEJRQURnZ0dC
QUNmMWpGa1E5TWJuS0FDLwordW8xN0V3UHhIS1pmc3daVnBDSzUyN0xWUnIzM0ROMURiclI1Wldj
aERDcFY3a0NPaForZlI3c0tLazIyWkhTWQorb0grdTNQRXUyMEozR09CMWl5WTFhTU5CN1d2SWQz
SnZhcHBkVldrQy9WcFV5RmZMc0dVREZ1SVBBRG1aWnFDYgoraUpNWDRsb3RlVFZmbDFkNHhLLzFt
VjZHcTlNUnJScWlEZnBTRUxuK3Y1M09NOW1Hc3B3VytOWjFDSXJiQ3VXMAorS3haL3RQa3FuOFBT
ZDlmTlpSNzBiQjdyV2Jud3JsK2tIOHhLeExsNnFkbHJNbWc3NFdXd2hMZVF4SzcrOURkUAorSWFE
ZW56cXg1Y3dXQkdZL0MwSGNRajBnUHV5M2xTczFWL3ErZjdZNnVzcFBXUDUxUGdpSkxJeXdYUzc1
aVJBcgorK1VGR1R6d0F0eWZUWlNRb0Z5TW1NVUxxZms2VDVIdG9WTXFmUnZQdksrbUZETFdFc3RV
MU5JQjFLL0NSSTdnSQorQVk2NUNsVFUrelJTL3RsRjhJQTd0c0Z2Z3RFZjhqc0k5a2FtbGlkaFMx
Z3llZzRkV2NWRXJWNGFlVFBCMUFVdgorU3RQWVFrS05NK05qeXRXSGw1dE51Qm9ETkxzYzBnSS9X
U1BpSTRDSVk4THdvbU9vaXc9PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorLS0tLS1CRUdJ
TiBDRVJUSUZJQ0FURS0tLS0tCitNSUlFYlRDQ0F0V2dBd0lCQWdJSkFNc3RnSmxhYVZKYk1BMEdD
U3FHU0liM0RRRUJDd1VBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJv
YjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdO
aExYTmxjblpsY2pBZUZ3MHhPREE0TWpreE5ESXpNVFphRncweU9EQTRNall4CitOREl6TVRaYU1F
MHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitS
bTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQWFJd0RR
WUpLb1pJCitodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUpmdFZVRzZOaGVWMjNFYzArRmhy
Rmh6NDhhV3p5c2Z1QWoxCituVXRMeHpEMnVBdXpVbktndThsTk80N2ZJbzRCVjRISmtuUE1BTWJz
Y0xBNkYwREIzL0tNTmt6RXA0SG50aVJvCis0cUIrTlFjdm9GdjVSVWIzSHZCR0VmN0tHanhROFNh
cFg1d2luUGhCNGQ5UEVwVVpMMXlRQVJkdWZqNTl6K2tKCityeVg0K0VKM0xXMWZOdko0SG4xS2gy
aGpiQVp4RzQzNkpmN1UwL1dsRjdIdjZoZkxWTWdubVlETFBFWHhMRkljCiszUjlSUlNCUUhsNnJW
M01iUVhpVzNvU2tldDJQTUlVMldIbDJvTkpoeUJ1cGxKbGp4dTc0RkwrMFVsWXhsL3JyCityRk9l
bGM1TXhGcEt0OG9ESjFzMVY4NEMzT3pLYWZpS1dqbkxGaUFWQXlSaGJQUjYvTFpJNVZrUVhFblFJ
NS83CitjVjQ2NldpZk5IS0FKN1kvVExIWjIyTi9aMmhLYmhINDZNRDBXaFk1VXd0bzNuZjZSZWY0
a2MxNHpTaVVsM0ZVCisrOC93Tjk3SkpzWGNHNTZKYlFtc3lFUnh5MjN4bHpIVlRDQXp2M1ZLb09E
Y2FSSHRLclJrRUJFd2l3NndweERZCitpc1dxRzhnbWlpWG5acCtsYWhvdmZGK0R4bmhQSHdJREFR
QUJvMUF3VGpBZEJnTlZIUTRFRmdRVTNiL0sydWJSCitOTG8zZFNIS2I1b0lLUEkxdGtnd0h3WURW
UjBqQkJnd0ZvQVUzYi9LMnViUk5MbzNkU0hLYjVvSUtQSTF0a2d3CitEQVlEVlIwVEJBVXdBd0VC
L3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQU0ycFUwMnZBMXdGZm5mUUZ3Wk5tCitrRkRRdHhq
cHNCNUtvTGJhZHBPdmhOdXRGVlF4RlJQazNuNU9ETlVKSERRMXR1Vk0xbTlsZlRKZjYveXBhd2Yz
CitTWUxsZ1g0SGdKcGorQ3pEUUx5UDFDcmFQdEh1Q0xkTnA0VEs5RCtobUVXK3NRVnA1OS9YbWFz
Yjdvc3d6UGY4Cis1OVFMRjY2WHYrUjcvUStudElWNTQxbmlGb2UvSHlsRkxDT1RkcjdBaHgzZTdD
dENhdVc3eVBRS1NnZ0tqRnpZCitmVTNSdUwvVjl5bnRrdEdVQk9nMUJsZC9MQ09YaDZVMWpTYlRH
a2Z5RnRmWnh0UWZJMFBUSnBrNXlpRDBjU052CitERXAyZHZkMkg3UCt2MGV3L0NwV2dlSFMzZTRJ
MlBUL1d0d2xZWXFSQXJtR0hQSlFjM1lsTmZ5MkpTWVZ5K3ZFCitLMkVNSE9mdUx4ZWI3UERVb1lU
bjBxL2U1QnNrRktjQmgrT3JLVmhHb05uQUN1Q04xMW5URy9oVUlENTRwYVhJCitUNHNEeEphZjdQ
dEh6M1l0aldVMEo3LzZyZ0VGaXZPU0N0MkpiSmVoeCtkZ1VlZXM2MHQ5TExobHlmNWRha2hWCitq
dVRIK1dwQTRiaGtSZW0xV1NtbFg4OTlXSDFrZWVXa0Nhd2VkbVU5bE1SbworLS0tLS1FTkQgQ0VS
VElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVt
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4ZmRlYzEwMWM4
ZDY3NGM1MjA3ZDEwMGY3NGI2YTcyNDI0Y2I1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvc3NsX2tleS5wZW0KQEAgLTAsMCArMSw0MCBAQAorLS0tLS1CRUdJTiBQUklW
QVRFIEtFWS0tLS0tCitNSUlHL1FJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0J1Y3dnZ2JqQWdF
QUFvSUJnUUNmS0M4M1FlOS9aR01XCitZaGJwQVJSaUtjbzZtSkk5Q05OZWFmN0E4OVRFK3c1WTNH
U3dTOHV6cXA1QzZRZWJaelBOdWVnOEhZb1R3Tjg1CitaM3hNMDM2L1F3OUtoUVZ0aCtYREFxTSsx
OWU1S0hrWWN4ZzNkM1pJMUhnWTE3MGVha2FMQnZNRE41VUxvRk93CitJczJQdHdNMm85Y2pkNW1m
U3VXdHRJNitmQ3FvcDgvbDhjZXJHOWlYMkdIMzlwM2lXd1dvVFp1WW5kQUE5cVl2CiswN1lXYWp1
UTFFU1dLUGpIWUdUbk12dTR4SXppYkMxbVhkMk02dS9Jak5PNmc0MjZTS0ZhUkRXUWt4MDFnSVYv
CitDeUtzOURnWm9lTUhrS1p1UHFaVk94T0srQS9Ocm1ycUhGc1BJc3JzNXdrN1FBVmp1NS9YMXNr
cG4vVUdRbG1NCitSd0JhUVVMT3MxRmFnQSs1NFJYVTZxVVBXMFltaEo0eE9CNGdISEQxdmpBS0Vz
Ulo3LzZ6Y3hNeU9tK00xRGJLCitSVEg0TldqVldwblk4WGFWR2RSaHRUcEg5TWp5Y3BLaEYrRDJa
ZHkydFFYdHF1MkdkY01uVWVkdDEzZm45eER1CitQNFBvcGhFMGlwL0lNZ24ra2I0bTllK1MrSzls
bGRRbDBCKzRCY0dXQXFIZWxoMkt1VTBDQXdFQUFRS0NBWUVBCitsS2lXSVlqbXlSamRMS1VHUFRF
Uzl2V052Tm1Sam96VjBSUTBMY29TYk1NTERaa2VPMFV3eVdxT1ZIVVE4K2liCitqSWNmRWplTkp4
STU3b1pvcGVIT081dkpocE5sRkgrZzdsdGlXMnFFUnFBMUs4OGxTWG05OUJ6dzZGTnFoQ1JFCitL
OHViNU45ZnlmSkErUDRvL3htMFdLOEVYazV5SVVWMTdwLzl6Skp4emdLZ3YyanNWVGkzUUcyT1pH
dm40T3VnCitCeW9tTVpFR0hrQkR6ZHh6OGMvY1AxVGxrMVJGdXdTZ2V3czE3OGsyeHE3QVlTTS9z
MFltSGk3Yi9SU3ZwdFg2CisxdjhQOGtYTlVlNEF3VGFOeXJsdkYybHdJYWRaOGgxaEE3dENFMm40
NGI3YTdLZmhBa3djYnIxVDU5aW9ZaDZQCit6eHN5UFQ2Nzh1RDUxZGJ0RC9EWEpDY29lZUZPYjh1
emtSMktOY3JuUXpacENKblJxNEdwNXlieHdzeHh1enByCitnejBnYk5saHVXdEU3RW9Tem1JSzl0
K1dUUzdJTTJDdlp5bWQ2L09BaDFGdXc2QVFoU3A2NFhScDNPZk1NQUFDCitJZTJFUHRLajRpc2xX
R1Q4Vm9VanVSWUdtZFJoNGR1QUgxZGtpQVhPV0EzUjd5NWExL3kvaUU4S0U4QnR4b2NCCitBb0hC
QU04YWlVUmdwdTFGczBPcXo2aXplYzdLU0xMM2w4aG1XK01LVU9may9ZYm5nNkZyVEZzTDVZdHpS
K0FwCit3VzR3d1dubklLRWMxSkxpWjdnOGFnUkVUSzhocjVQd0ZYVW4vR1NXQzBTTXNhekxKVG95
U1FTNUxPVjB0THpLCitrSjNqdE5VN3RubERHTmtDSFRIU29WTDJULzh0K0lrWkkvaDVaNndqbFlQ
dlUySXUwblZJWHRpRythbHY0QTZNCitIcmg5bDVvcjRtakI2ckduVlhlWW9oTGtDbTZzL1c5N2Fo
VnhMTWNFZGJzQm8xcHJtMkpxR25Tb2lSL3RFRkMvCitRSFFuYlFLQndRREV1N2tXMFlnOXNaODlR
dFl0VlExWXBpeEZaT1JhVWVSSVJMbnBFczF3N0wxbUNiT1oyTGo5CitKSHhzSDA1Y1lBYzdISmZQ
d3d4djMrM2FHQUlDL2RmdTRWU3dFRnRhdEF6VXB6bGh6S1M1K0hRQ1dCNEpVTk5VCitNUTMrRndL
MnhRWDRQaDh0K096ckZpWWNLMmcwQW41VXhXTWEySFdJQVdVT2huVE95ZEFWc29INnlQMzFjVm00
CiswaHhvQUJDd2ZsYU5MTkdqUlV5ZkJwTFRBY051L1l0Y0UrS1JFeTdZQUFnWFhyaFJTTzRYcExz
U1h3TG5MVDcvCitZT2tvQldEY1RXRUNnY0JQV25TVURaQ0lRM2VmaXRoTVpKQmNpcWQyWTJYMTlE
cHE4TzMxSEltRDRqdE9ZMFY3CitjVUIvd1NrZUhBR3dqZC9lQ3lBMmUweDhCMklFZHFtTWZ2cis4
NkpKeGVrQzNkSllYQ0Z2SDVXSWhzSDUzWUNhCiszYlQxS2xXQ0xQOWliL2crNThWUUMwUi9DYzlU
NHNmTGVQTkg3RDVaa1pkMXdsYlYzMENQcitpOEt3S2F5Nk1ECit4aHZ0THgramswN0dFK0U5d21q
YkNNbzdUY2x5ckxvVkVPbHFaTUFxc2hnQXBUK3A5ZXlDUGV0d1h1REh3YTNuCitXeGhIY2xjWkNW
N1I0clVDZ2NBa2RHU254Y3ZwSXJEUE9VTld3eHZtQVdUU3R3OVpiVE5QOE94Q05DbTljeURsCitk
NGJBUzFoOEQvYStVazdDNzBobnU3U2wydzdDN0V1Mnpod1JVZGhoZTMrbDRHSU5QSy9qOTlpNk5x
R1BsR3BxCit4TWxNRUo0WVM3NjhCcWVLRnBnMGw4NVBSb0VnVHNwaERlb1JPU1VQc0VQZEJaOUJ4
SUJsWUtUa2JLRVNaREdSCit0d3pZSGxqeDFuMU5DRFlQZmxtcmIxS3BYbjRFT2NPYk5naHcyS3Fx
TlVVV2ZPZUJQd0JBMUZ4ek00QnJBU3RwCitEQklOcEdTNERjMG1qVmlWZWdFQ2djQTNoVHRtODJY
ZHhRWGo5TFFtYi9FM2xLeC83SDg3WElPZU5NbXZqWXVaCitpUzl3S3JrRit1NDJ2eW9EeGNLTUNu
eFA1MDU2d3BkU1Q0cDU2citTQndWVEhjYzNsR0JTR2NNVElmd1JYcmozCit0aE9BMm91cjJuNG91
TklzWXlUbGNzUVN6aWZ3bXBSbVZNUlB4bDlmWVZkRVdVZ0I4M0ZnSFQwRDlhdnZabkY5Cit0OU9j
Y25HSlhTaEFJWklCQURoVmovSndHNEZiYVg0Mk5pakQ1UE5wVkxrMVkxN09WMEk1NzZUOVNmYVFv
QmpKCithSDFNL3pDNGFWYVMwRFlCL0d4cTd2OD0KKy0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW8ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZmNiZjM4MDNkYzg0Mjhj
MDc1OTY5NGNmNDZjY2Y0OWVjZDVmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGVzdF9hc3luY2lvLnB5CkBAIC0wLDAgKzEsMzc0IEBACitpbXBvcnQgYXN5bmNpbwor
aW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc29ja2V0Citmcm9tIHVuaXR0
ZXN0IGltcG9ydCBUZXN0Q2FzZSwgc2tpcElmCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBh
dGNoCisKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzIGltcG9ydCBzZXJpYWxp
emF0aW9uCisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJv
bSBhaW9xdWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wK
K2Zyb20gYWlvcXVpYy5hc3luY2lvLnNlcnZlciBpbXBvcnQgc2VydmUKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworZnJvbSAudXRpbHMgaW1wb3J0ICgKKyAg
ICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisgICAgU0VSVkVSX0tF
WUZJTEUsCisgICAgU0tJUF9URVNUUywKKyAgICBnZW5lcmF0ZV9lY19jZXJ0aWZpY2F0ZSwKKyAg
ICBydW4sCispCisKK3JlYWxfc2VuZHRvID0gc29ja2V0LnNvY2tldC5zZW5kdG8KKworCitkZWYg
c2VuZHRvX3dpdGhfbG9zcyhzZWxmLCBkYXRhLCBhZGRyPU5vbmUpOgorICAgICIiIgorICAgIFNp
bXVsYXRlIDI1JSBwYWNrZXQgbG9zcy4KKyAgICAiIiIKKyAgICBpZiByYW5kb20ucmFuZG9tKCkg
PiAwLjI1OgorICAgICAgICByZWFsX3NlbmR0byhzZWxmLCBkYXRhLCBhZGRyKQorCisKK2NsYXNz
IFNlc3Npb25UaWNrZXRTdG9yZToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNl
bGYudGlja2V0cyA9IHt9CisKKyAgICBkZWYgYWRkKHNlbGYsIHRpY2tldCk6CisgICAgICAgIHNl
bGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBs
YWJlbCk6CisgICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxhYmVsLCBOb25lKQorCisK
K2RlZiBoYW5kbGVfc3RyZWFtKHJlYWRlciwgd3JpdGVyKToKKyAgICBhc3luYyBkZWYgc2VydmUo
KToKKyAgICAgICAgZGF0YSA9IGF3YWl0IHJlYWRlci5yZWFkKCkKKyAgICAgICAgd3JpdGVyLndy
aXRlKGJ5dGVzKHJldmVyc2VkKGRhdGEpKSkKKyAgICAgICAgd3JpdGVyLndyaXRlX2VvZigpCisK
KyAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoc2VydmUoKSkKKworCitjbGFzcyBIaWdoTGV2ZWxU
ZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVy
ID0gTm9uZQorICAgICAgICBzZWxmLnNlcnZlcl9ob3N0ID0gImxvY2FsaG9zdCIKKyAgICAgICAg
c2VsZi5zZXJ2ZXJfcG9ydCA9IDQ0MzMKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAg
ICAgaWYgc2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5j
bG9zZSgpCisKKyAgICBhc3luYyBkZWYgcnVuX2NsaWVudCgKKyAgICAgICAgc2VsZiwKKyAgICAg
ICAgaG9zdD1Ob25lLAorICAgICAgICBwb3J0PU5vbmUsCisgICAgICAgIGNhZGF0YT1Ob25lLAor
ICAgICAgICBjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgICAgIGNvbmZpZ3VyYXRpb249
Tm9uZSwKKyAgICAgICAgcmVxdWVzdD1iInBpbmciLAorICAgICAgICAqKmt3YXJncworICAgICk6
CisgICAgICAgIGlmIGhvc3QgaXMgTm9uZToKKyAgICAgICAgICAgIGhvc3QgPSBzZWxmLnNlcnZl
cl9ob3N0CisgICAgICAgIGlmIHBvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHBvcnQgPSBzZWxm
LnNlcnZlcl9wb3J0CisgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24gaXMgTm9uZToKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAg
ICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPWNhZGF0YSwg
Y2FmaWxlPWNhZmlsZSkKKyAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KGhvc3QsIHBvcnQsIGNv
bmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgKiprd2FyZ3MpIGFzIGNsaWVudDoKKyAgICAgICAg
ICAgICMgd2FpdGluZyBmb3IgY29ubmVjdGVkIHdoZW4gY29ubmVjdGVkIHJldHVybnMgaW1tZWRp
YXRlbHkKKyAgICAgICAgICAgIGF3YWl0IGNsaWVudC53YWl0X2Nvbm5lY3RlZCgpCisKKyAgICAg
ICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50LmNyZWF0ZV9zdHJlYW0oKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXIuY2FuX3dyaXRlX2VvZigpLCBUcnVlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0ZXIuZ2V0X2V4dHJhX2luZm8oInN0cmVh
bV9pZCIpLCAwKQorCisgICAgICAgICAgICB3cml0ZXIud3JpdGUocmVxdWVzdCkKKyAgICAgICAg
ICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHJl
YWRlci5yZWFkKCkKKworICAgICAgICAjIHdhaXRpbmcgZm9yIGNsb3NlZCB3aGVuIGNsb3NlZCBy
ZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgIGF3YWl0IGNsaWVudC53YWl0X2Nsb3NlZCgpCisK
KyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCisKKyAgICBhc3luYyBkZWYgcnVuX3NlcnZlcihzZWxm
LCBjb25maWd1cmF0aW9uPU5vbmUsIGhvc3Q9Ijo6IiwgKiprd2FyZ3MpOgorICAgICAgICBpZiBj
b25maWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5s
b2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAg
c2VsZi5zZXJ2ZXIgPSBhd2FpdCBzZXJ2ZSgKKyAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAg
ICAgICAgIHBvcnQ9c2VsZi5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIHN0cmVhbV9oYW5kbGVyPWhhbmRsZV9zdHJlYW0s
CisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisgICAgICAgIHJldHVybiBzZWxmLnNl
cnZlcgorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmUoc2VsZik6CisgICAgICAgIHJ1
bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcmVzcG9uc2UgPSBydW4oc2VsZi5ydW5fY2xp
ZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIpCisKKyAg
ICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY0KHNlbGYpOgorICAgICAgICBydW4oc2Vs
Zi5ydW5fc2VydmVyKGhvc3Q9IjAuMC4wLjAiKSkKKyAgICAgICAgcmVzcG9uc2UgPSBydW4oc2Vs
Zi5ydW5fY2xpZW50KGhvc3Q9IjEyNy4wLjAuMSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgQHNraXBJZigiaXB2NiIgaW4gU0tJUF9URVNUUywg
IlNraXBwaW5nIElQdjYgdGVzdHMiKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2lw
djYoc2VsZik6CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoaG9zdD0iOjoiKSkKKyAgICAg
ICAgcmVzcG9uc2UgPSBydW4oc2VsZi5ydW5fY2xpZW50KGhvc3Q9Ijo6MSIpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVj
dF9hbmRfc2VydmVfZWNfY2VydGlmaWNhdGUoc2VsZik6CisgICAgICAgIGNlcnRpZmljYXRlLCBw
cml2YXRlX2tleSA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKGNvbW1vbl9uYW1lPSJsb2NhbGhv
c3QiKQorCisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXk9cHJpdmF0ZV9rZXks
IGlzX2NsaWVudD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICByZXNwb25zZSA9IHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX2Ns
aWVudCgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNl
cmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9Tm9uZSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UsIGIiZ25pcCIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9sYXJnZShz
ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRyYW5zZmVyIGVub3VnaCBkYXRhIHRvIHJlcXVp
cmUgcmFpc2luZyBNQVhfREFUQSBhbmQgTUFYX1NUUkVBTV9EQVRBLgorICAgICAgICAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiWiIgKiAyMDk3MTUyCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIo
KSkKKyAgICAgICAgcmVzcG9uc2UgPSBydW4oc2VsZi5ydW5fY2xpZW50KHJlcXVlc3Q9ZGF0YSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGRhdGEpCisKKyAgICBkZWYgdGVz
dF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRob3V0X2NsaWVudF9jb25maWd1cmF0aW9uKHNlbGYpOgor
ICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF93aXRob3V0X2NvbmZpZygpOgorICAgICAgICAg
ICAgYXN5bmMgd2l0aCBjb25uZWN0KHNlbGYuc2VydmVyX2hvc3QsIHNlbGYuc2VydmVyX3BvcnQp
IGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAg
ICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KENvbm5lY3Rpb25FcnJvcik6CisgICAgICAgICAgICBydW4ocnVuX2NsaWVudF93aXRob3V0X2Nv
bmZpZygpKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd3JpdGVsaW5lcyhzZWxm
KToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRfd3JpdGVsaW5lcygpOgorICAgICAgICAg
ICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFKQorICAgICAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNlbGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249
Y29uZmlndXJhdGlvbgorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
cmVhZGVyLCB3cml0ZXIgPSBhd2FpdCBjbGllbnQuY3JlYXRlX3N0cmVhbSgpCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IHdyaXRlci5jYW5fd3JpdGVfZW9mKCkgaXMgVHJ1ZQorCisgICAgICAgICAg
ICAgICAgd3JpdGVyLndyaXRlbGluZXMoW2IiMDEyMzQ1NjciLCBiIjg5MDEyMzQ1Il0pCisgICAg
ICAgICAgICAgICAgd3JpdGVyLndyaXRlX2VvZigpCisKKyAgICAgICAgICAgICAgICByZXR1cm4g
YXdhaXQgcmVhZGVyLnJlYWQoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAg
ICAgICAgcmVzcG9uc2UgPSBydW4ocnVuX2NsaWVudF93cml0ZWxpbmVzKCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiNTQzMjEwOTg3NjU0MzIxMCIpCisKKyAgICBAc2tp
cElmKCJsb3NzIiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcgbG9zcyB0ZXN0cyIpCisgICAgQHBh
dGNoKCJzb2NrZXQuc29ja2V0LnNlbmR0byIsIG5ld19jYWxsYWJsZT1sYW1iZGE6IHNlbmR0b193
aXRoX2xvc3MpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9wYWNrZXRfbG9z
cyhzZWxmLCBtb2NrX3NlbmR0byk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHRlc3QgZW5z
dXJlcyBoYW5kc2hha2Ugc3VjY2VzcyBhbmQgc3RyZWFtIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHNl
bnQKKyAgICAgICAgYW5kIHJlY2VpdmVkIGluIHRoZSBwcmVzZW5jZSBvZiBwYWNrZXQgbG9zcyAo
cmFuZG9taXplZCAyNSUgaW4gZWFjaCBkaXJlY3Rpb24pLgorICAgICAgICAiIiIKKyAgICAgICAg
ZGF0YSA9IGIiWiIgKiA2NTUzNgorCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVp
Y0NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICBpc19jbGllbnQ9RmFsc2UsIHF1aWNfbG9nZ2Vy
PVF1aWNMb2dnZXIoKQorICAgICAgICApCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxv
YWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorICAgICAgICBy
dW4oc2VsZi5ydW5fc2VydmVyKGNvbmZpZ3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pKQor
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKAorICAgICAgICAgICAgc2VsZi5ydW5fY2xpZW50KAor
ICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAg
ICAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHJlcXVlc3Q9ZGF0YSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBkYXRh
KQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zZXNzaW9uX3RpY2tldChz
ZWxmKToKKyAgICAgICAgIyBzdGFydCBzZXJ2ZXIKKyAgICAgICAgY2xpZW50X3RpY2tldCA9IE5v
bmUKKyAgICAgICAgc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgICAgIGRlZiBz
YXZlX3RpY2tldCh0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGNsaWVudF90aWNrZXQKKyAgICAg
ICAgICAgIGNsaWVudF90aWNrZXQgPSB0CisKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2Vs
Zi5ydW5fc2VydmVyKAorICAgICAgICAgICAgICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI9c3Rv
cmUucG9wLCBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXN0b3JlLmFkZAorICAgICAgICAgICAgKQor
ICAgICAgICApCisKKyAgICAgICAgIyBmaXJzdCByZXF1ZXN0CisgICAgICAgIHJlc3BvbnNlID0g
cnVuKHNlbGYucnVuX2NsaWVudChzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVfdGlja2V0KSwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRJc05vdE5vbmUoY2xpZW50X3RpY2tldCkKKworICAgICAgICAjIHNlY29uZCBy
ZXF1ZXN0CisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgc2Vzc2lvbl90aWNrZXQ9Y2xpZW50X3RpY2tldAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5k
X3NlcnZlX3dpdGhfc3RhdGVsZXNzX3JldHJ5KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5f
c2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxlc3NfcmV0cnlfYmFkX29yaWdpbmFsX2Nvbm5l
Y3Rpb25faWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGUgc2VydmVyJ3MgdHJh
bnNwb3J0IHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgdGhlIGNvcnJlY3QKKyAgICAgICAgb3JpZ2lu
YWxfY29ubmVjdGlvbl9pZCB0aGUgY29ubmVjdGlvbiBmYWlsLgorICAgICAgICAiIiIKKworICAg
ICAgICBkZWYgY3JlYXRlX3Byb3RvY29sKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBw
cm90b2NvbCA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2woKmFyZ3MsICoqa3dhcmdzKQorICAgICAg
ICAgICAgcHJvdG9jb2wuX3F1aWMuX29yaWdpbmFsX2Nvbm5lY3Rpb25faWQgPSBOb25lCisgICAg
ICAgICAgICByZXR1cm4gcHJvdG9jb2wKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKGNy
ZWF0ZV9wcm90b2NvbD1jcmVhdGVfcHJvdG9jb2wsIHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAg
ICAgcnVuKHNlbGYucnVuX2NsaWVudCgpKQorCisgICAgQHBhdGNoKCJhaW9xdWljLnF1aWMucmV0
cnkuUXVpY1JldHJ5VG9rZW5IYW5kbGVyLnZhbGlkYXRlX3Rva2VuIikKKyAgICBkZWYgdGVzdF9j
b25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeV9iYWQoc2VsZiwgbW9ja192YWxp
ZGF0ZSk6CisgICAgICAgIG1vY2tfdmFsaWRhdGUuc2lkZV9lZmZlY3QgPSBWYWx1ZUVycm9yKCJE
ZWNyeXB0aW9uIGZhaWxlZC4iKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoc3RhdGVs
ZXNzX3JldHJ5PVRydWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rp
b25FcnJvcik6CisgICAgICAgICAgICBydW4oCisgICAgICAgICAgICAgICAgc2VsZi5ydW5fY2xp
ZW50KAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVvdXQ9NC4wKSwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3ZlcnNp
b25fbmVnb3RpYXRpb24oc2VsZik6CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKwor
ICAgICAgICAjIGZvcmNlIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9n
Z2VyKCkpCisgICAgICAgIGNvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3ZlcnNpb25zLmluc2VydCgw
LCAweDFBMkEzQTRBKQorCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0KHNlbGYpOgor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25FcnJvcik6CisgICAgICAg
ICAgICBydW4oCisgICAgICAgICAgICAgICAgc2VsZi5ydW5fY2xpZW50KAorICAgICAgICAgICAg
ICAgICAgICBwb3J0PTQ0MDAsCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVp
Y0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUsIGlkbGVfdGltZW91dD01KSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3RpbWVvdXRf
bm9fd2FpdF9jb25uZWN0ZWQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X25v
X3dhaXRfY29ubmVjdGVkKGNvbmZpZ3VyYXRpb24pOgorICAgICAgICAgICAgY29uZmlndXJhdGlv
bi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAg
ICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hv
c3QsCisgICAgICAgICAgICAgICAgNDQwMCwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgd2FpdF9jb25uZWN0ZWQ9RmFsc2UsCisg
ICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGlu
ZygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgor
ICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHJ1bl9jbGllbnRfbm9fd2FpdF9jb25u
ZWN0ZWQoCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRp
b24oaXNfY2xpZW50PVRydWUsIGlkbGVfdGltZW91dD01KSwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2xvY2FsX3BvcnQoc2VsZik6Cisg
ICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcmVzcG9uc2UgPSBydW4oc2Vs
Zi5ydW5fY2xpZW50KGxvY2FsX3BvcnQ9MzQ1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UsIGIiZ25pcCIpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfY29ubmVjdGlvbl9pZChz
ZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRfY2hhbmdlX2Nvbm5lY3Rpb25faWQo
KToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25z
KGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVj
dCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAg
ICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBjbGllbnQu
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoKQorICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5n
KCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJ1bihydW5fY2xp
ZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCkpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNl
bGYpOgorICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9rZXlfdXBkYXRlKCk6CisgICAgICAg
ICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VS
VkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAg
ICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlv
bj1jb25maWd1cmF0aW9uCisgICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAg
ICBhd2FpdCBjbGllbnQucGluZygpCisgICAgICAgICAgICAgICAgY2xpZW50LnJlcXVlc3Rfa2V5
X3VwZGF0ZSgpCisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAg
IHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcnVuKHJ1bl9jbGllbnRfa2V5X3VwZGF0
ZSgpKQorCisgICAgZGVmIHRlc3RfcGluZyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnRfcGluZygpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0
aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3Zlcmlm
eV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAgICAgICAgYXN5bmMg
d2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNlbGYuc2Vy
dmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAgICAgICAgKSBhcyBj
bGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorICAgICAgICAgICAg
ICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHJ1bihydW5fY2xpZW50X3BpbmcoKSkKKworICAgIGRlZiB0ZXN0X3BpbmdfcGFy
YWxsZWwoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1T
RVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAg
ICAgIGNvcm9zID0gW2NsaWVudC5waW5nKCkgZm9yIHggaW4gcmFuZ2UoMTYpXQorICAgICAgICAg
ICAgICAgIGF3YWl0IGFzeW5jaW8uZ2F0aGVyKCpjb3JvcykKKworICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKCkpCisgICAgICAgIHJ1bihydW5fY2xpZW50X3BpbmcoKSkKKworICAgIGRlZiB0
ZXN0X3NlcnZlcl9yZWNlaXZlc19nYXJiYWdlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBydW4o
c2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHNlcnZlci5kYXRhZ3JhbV9yZWNlaXZlZChiaW5h
c2NpaS51bmhleGxpZnkoImMwMDAwMDAwMDA4MCIpLCAoIjEuMi4zLjQiLCAxMjM0KSkKKyAgICAg
ICAgc2VydmVyLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Fz
eW5jaW9fY29tcGF0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpb19jb21wYXQu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTA2ZGJmNTExMjRjZGI2MzJhZGEzMGI2NmMzZjJlNDQ2ZWZiYzJjYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0
LnB5CkBAIC0wLDAgKzEsMzggQEAKK2ltcG9ydCBhc3luY2lvCitmcm9tIHVuaXR0ZXN0IGltcG9y
dCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuYXN5bmNpby5jb21wYXQgaW1wb3J0IF9hc3luY2Nv
bnRleHRtYW5hZ2VyCisKK2Zyb20gLnV0aWxzIGltcG9ydCBydW4KKworCitAX2FzeW5jY29udGV4
dG1hbmFnZXIKK2FzeW5jIGRlZiBzb21lX2NvbnRleHQoKToKKyAgICBhd2FpdCBhc3luY2lvLnNs
ZWVwKDApCisgICAgeWllbGQKKyAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDApCisKKworY2xhc3Mg
QXN5bmNpb0NvbXBhdFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X29rKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgdGVzdCgpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBzb21lX2NvbnRl
eHQoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcnVuKHRlc3QoKSkKKworICAg
IGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3Qo
KToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAg
ICAgcmFpc2UgUnVudGltZUVycm9yKCJzb21lIHJlYXNvbiIpCisKKyAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgcnVuKHRlc3QoKSkKKwor
ICAgIGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbl90eXBlKHNlbGYpOgorICAgICAgICBhc3luYyBk
ZWYgdGVzdCgpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBzb21lX2NvbnRleHQoKToKKyAgICAg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBydW4odGVzdCgpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfYnVmZmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZGJjNDRkMGRkMjZmMWVmNjg1NjgyNGQ1NWJi
ODgwOTkyODg3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9i
dWZmZXIucHkKQEAgLTAsMCArMSwyMDEgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yLCBC
dWZmZXJXcml0ZUVycm9yLCBzaXplX3VpbnRfdmFyCisKKworY2xhc3MgQnVmZmVyVGVzdChUZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfZGF0YV9zbGljZShzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGFfc2xpY2UoMCwgOCksIGIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhX3NsaWNl
KDEsIDMpLCBiIlx4MDdceDA2IikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuZGF0YV9zbGljZSgtMSwgMykKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLmRhdGFfc2xpY2UoMCwgOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZm
ZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2UoMSwgMCkKKworICAgIGRl
ZiB0ZXN0X3B1bGxfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5wdWxsX2J5dGVzKDMpLCBiIlx4MDhceDA3XHgwNiIpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2J5dGVzX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhc
eDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfYnl0ZXMoLTEpCisK
KyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX2J5dGVzKDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfYnl0ZXNfemVy
byhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgw
NFx4MDNceDAyXHgwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfYnl0ZXMo
MCksIGIiIikKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDgoc2VsZik6CisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ4KCksIDB4MDgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMSkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDhfdHJ1
bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVm
LnB1bGxfdWludDgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisK
KyAgICBkZWYgdGVzdF9wdWxsX3VpbnQxNihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLnB1bGxfdWludDE2KCksIDB4MDgwNykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAyKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MTZfdHJ1bmNhdGVk
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MSkKKyAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ZGVmIHRlc3RfcHVsbF91aW50MzIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIi
XHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi5wdWxsX3VpbnQzMigpLCAweDA4MDcwNjA1KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdWxsX3VpbnQzMl90cnVuY2F0ZWQo
c2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYucHVsbF91
aW50MzIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisKKyAgICBk
ZWYgdGVzdF9wdWxsX3VpbnQ2NChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJc
eDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLnB1bGxfdWludDY0KCksIDB4MDgwNzA2MDUwNDAzMDIwMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50NjRfdHJ1
bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9NykKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVm
LnB1bGxfdWludDY0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQor
CisgICAgZGVmIHRlc3RfcHVzaF9ieXRlcyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNh
cGFjaXR5PTMpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGIiXHgwOFx4MDdceDA2IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4XHgwN1x4MDYiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDMpCisKKyAgICBkZWYgdGVzdF9wdXNoX2J5dGVz
X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTMpCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyV3JpdGVFcnJvcik6CisgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi50ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdF9wdXNoX2J5dGVzX3plcm8oc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVzaF91
aW50OChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEpCisgICAgICAgIGJ1
Zi5wdXNoX3VpbnQ4KDB4MDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIi
XHgwOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMSkKKworICAgIGRl
ZiB0ZXN0X3B1c2hfdWludDE2KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9
MikKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KDB4MDgwNykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgYiJceDA4XHgwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVm
LnRlbGwoKSwgMikKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDMyKHNlbGYpOgorICAgICAgICBi
dWYgPSBCdWZmZXIoY2FwYWNpdHk9NCkKKyAgICAgICAgYnVmLnB1c2hfdWludDMyKDB4MDgwNzA2
MDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDdceDA2XHgw
NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgNCkKKworICAgIGRlZiB0
ZXN0X3B1c2hfdWludDY0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkK
KyAgICAgICAgYnVmLnB1c2hfdWludDY0KDB4MDgwNzA2MDUwNDAzMDIwMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgw
MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgIGRlZiB0
ZXN0X3NlZWsoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiMDEyMzQ1NjciKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAwKQorCisgICAgICAgIGJ1Zi5zZWVrKDQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoYnVmLmVvZigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxs
KCksIDQpCisKKyAgICAgICAgYnVmLnNlZWsoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1
Zi5lb2YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAg
IGJ1Zi5zZWVrKC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAg
ICAgIGJ1Zi5zZWVrKDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkK
KworCitjbGFzcyBVaW50VmFyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHJvdW5kdHJpcChzZWxm
LCBkYXRhLCB2YWx1ZSk6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfdWludF92YXIoKSwgdmFsdWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgbGVuKGRhdGEpKQorCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT04KQorICAgICAgICBidWYucHVzaF91aW50X3Zhcih2YWx1ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3VpbnRf
dmFyKHNlbGYpOgorICAgICAgICAjIDEgYnl0ZQorICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4
MDAiLCAwKQorICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4MDEiLCAxKQorICAgICAgICBzZWxm
LnJvdW5kdHJpcChiIlx4MjUiLCAzNykKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDNmIiwg
NjMpCisKKyAgICAgICAgIyAyIGJ5dGVzCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHg3Ylx4
YmQiLCAxNTI5MykKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDdmXHhmZiIsIDE2MzgzKQor
CisgICAgICAgICMgNCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4OWRceDdmXHgz
ZVx4N2QiLCA0OTQ4NzgzMzMpCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHhiZlx4ZmZceGZm
XHhmZiIsIDEwNzM3NDE4MjMpCisKKyAgICAgICAgIyA4IGJ5dGVzCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHhjMlx4MTlceDdjXHg1ZVx4ZmZceDE0XHhlOFx4OGMiLCAxNTEyODg4MDk5NDE5
NTI2NTIpCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmYiLCA0NjExNjg2MDE4NDI3Mzg3OTAzKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50
X3Zhcl90cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAg
ICAgICBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJc
eGZmIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgor
ICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgZGVmIHRlc3RfcHVzaF91aW50
X3Zhcl90b29fYmlnKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVnZXIgaXMg
dG9vIGJpZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQorCisgICAg
ZGVmIHRlc3Rfc2l6ZV91aW50X3ZhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
aXplX3VpbnRfdmFyKDYzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplX3VpbnRf
dmFyKDE2MzgzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDEw
NzM3NDE4MjMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVfdWludF92YXIoNDYx
MTY4NjAxODQyNzM4NzkwMyksIDgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNpemVfdWludF92YXIoNDYxMTY4NjAxODQy
NzM4NzkwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihjbS5l
eGNlcHRpb24pLCAiSW50ZWdlciBpcyB0b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRl
Z2VyIgorICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jb25u
ZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZjFhNWNkYzU4ZjU5YzZlOTk4YjBkMzk0OWFhNzRmNzdkMjE3NWQ4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weQpAQCAtMCwwICsx
LDE4MDAgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBjb250ZXh0
bGliCitpbXBvcnQgaW8KK2ltcG9ydCB0aW1lCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2Fz
ZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9xdWljLmJ1ZmZlciBpbXBvcnQg
VUlOVF9WQVJfTUFYLCBCdWZmZXIsIGVuY29kZV91aW50X3ZhcgorZnJvbSBhaW9xdWljLnF1aWMg
aW1wb3J0IGV2ZW50cworZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVp
Y0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAg
ICBRdWljQ29ubmVjdGlvbiwKKyAgICBRdWljQ29ubmVjdGlvbkVycm9yLAorICAgIFF1aWNOZXR3
b3JrUGF0aCwKKyAgICBRdWljUmVjZWl2ZUNvbnRleHQsCispCitmcm9tIGFpb3F1aWMucXVpYy5j
cnlwdG8gaW1wb3J0IENyeXB0b1BhaXIKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQg
UXVpY0xvZ2dlcgorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0IGltcG9ydCAoCisgICAgUEFDS0VU
X1RZUEVfSU5JVElBTCwKKyAgICBRdWljRXJyb3JDb2RlLAorICAgIFF1aWNGcmFtZVR5cGUsCisg
ICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlv
biwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCBRdWljRGVsaXZl
cnlTdGF0ZSwgUXVpY1BhY2tldEJ1aWxkZXIKK2Zyb20gYWlvcXVpYy5xdWljLnJlY292ZXJ5IGlt
cG9ydCBRdWljUGFja2V0UGFjZXIKKworZnJvbSAudXRpbHMgaW1wb3J0ICgKKyAgICBTRVJWRVJf
Q0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRGSUxFX1dJ
VEhfQ0hBSU4sCisgICAgU0VSVkVSX0tFWUZJTEUsCispCisKK0NMSUVOVF9BRERSID0gKCIxLjIu
My40IiwgMTIzNCkKKworU0VSVkVSX0FERFIgPSAoIjIuMy40LjUiLCA0NDMzKQorCisKK2NsYXNz
IFNlc3Npb25UaWNrZXRTdG9yZToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNl
bGYudGlja2V0cyA9IHt9CisKKyAgICBkZWYgYWRkKHNlbGYsIHRpY2tldCk6CisgICAgICAgIHNl
bGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBs
YWJlbCk6CisgICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxhYmVsLCBOb25lKQorCisK
K2RlZiBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCwgZXBvY2g9dGxzLkVwb2NoLk9ORV9S
VFQpOgorICAgIHJldHVybiBRdWljUmVjZWl2ZUNvbnRleHQoCisgICAgICAgIGVwb2NoPWVwb2No
LAorICAgICAgICBob3N0X2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgIG5ldHdvcmtfcGF0
aD1jbGllbnQuX25ldHdvcmtfcGF0aHNbMF0sCisgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1b
XSwKKyAgICAgICAgdGltZT1hc3luY2lvLmdldF9ldmVudF9sb29wKCkudGltZSgpLAorICAgICkK
KworCitkZWYgY29uc3VtZV9ldmVudHMoY29ubmVjdGlvbik6CisgICAgd2hpbGUgVHJ1ZToKKyAg
ICAgICAgZXZlbnQgPSBjb25uZWN0aW9uLm5leHRfZXZlbnQoKQorICAgICAgICBpZiBldmVudCBp
cyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKworCitkZWYgY3JlYXRlX3N0YW5kYWxvbmVfY2xp
ZW50KHNlbGYsICoqY2xpZW50X29wdGlvbnMpOgorICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9u
KAorICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
aXNfY2xpZW50PVRydWUsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipjbGllbnRfb3B0aW9u
cworICAgICAgICApCisgICAgKQorICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgIyBr
aWNrLW9mZiBoYW5kc2hha2UKKyAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRp
bWUudGltZSgpKQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAg
cmV0dXJuIGNsaWVudAorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgY2xpZW50
X2FuZF9zZXJ2ZXIoCisgICAgY2xpZW50X2t3YXJncz17fSwKKyAgICBjbGllbnRfb3B0aW9ucz17
fSwKKyAgICBjbGllbnRfcGF0Y2g9bGFtYmRhIHg6IE5vbmUsCisgICAgaGFuZHNoYWtlPVRydWUs
CisgICAgc2VydmVyX2t3YXJncz17fSwKKyAgICBzZXJ2ZXJfY2VydGZpbGU9U0VSVkVSX0NFUlRG
SUxFLAorICAgIHNlcnZlcl9rZXlmaWxlPVNFUlZFUl9LRVlGSUxFLAorICAgIHNlcnZlcl9vcHRp
b25zPXt9LAorICAgIHNlcnZlcl9wYXRjaD1sYW1iZGEgeDogTm9uZSwKKyk6CisgICAgY2xpZW50
X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgaXNfY2xpZW50PVRy
dWUsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipjbGllbnRfb3B0aW9ucworICAgICkKKyAg
ICBjbGllbnRfY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFKQorCisgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlv
bj1jbGllbnRfY29uZmlndXJhdGlvbiwgKipjbGllbnRfa3dhcmdzKQorICAgIGNsaWVudC5fYWNr
X2RlbGF5ID0gMAorICAgIGRpc2FibGVfcGFja2V0X3BhY2luZyhjbGllbnQpCisgICAgY2xpZW50
X3BhdGNoKGNsaWVudCkKKworICAgIHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGlzX2NsaWVudD1GYWxzZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigp
LCAqKnNlcnZlcl9vcHRpb25zCisgICAgKQorICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRf
Y2VydF9jaGFpbihzZXJ2ZXJfY2VydGZpbGUsIHNlcnZlcl9rZXlmaWxlKQorCisgICAgc2VydmVy
ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1zZXJ2ZXJfY29uZmlndXJhdGlvbiwgKipz
ZXJ2ZXJfa3dhcmdzKQorICAgIHNlcnZlci5fYWNrX2RlbGF5ID0gMAorICAgIGRpc2FibGVfcGFj
a2V0X3BhY2luZyhzZXJ2ZXIpCisgICAgc2VydmVyX3BhdGNoKHNlcnZlcikKKworICAgICMgcGVy
Zm9ybSBoYW5kc2hha2UKKyAgICBpZiBoYW5kc2hha2U6CisgICAgICAgIGNsaWVudC5jb25uZWN0
KFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMp
OgorICAgICAgICAgICAgcm91bmR0cmlwKGNsaWVudCwgc2VydmVyKQorCisgICAgeWllbGQgY2xp
ZW50LCBzZXJ2ZXIKKworICAgICMgY2xvc2UKKyAgICBjbGllbnQuY2xvc2UoKQorICAgIHNlcnZl
ci5jbG9zZSgpCisKKworZGVmIGRpc2FibGVfcGFja2V0X3BhY2luZyhjb25uZWN0aW9uKToKKyAg
ICBjbGFzcyBEdW1teVBhY2tldFBhY2VyKFF1aWNQYWNrZXRQYWNlcik6CisgICAgICAgIGRlZiBu
ZXh0X3NlbmRfdGltZShzZWxmLCBub3cpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
IGNvbm5lY3Rpb24uX2xvc3MuX3BhY2VyID0gRHVtbXlQYWNrZXRQYWNlcigpCisKKworZGVmIHNl
cXVlbmNlX251bWJlcnMoY29ubmVjdGlvbl9pZHMpOgorICAgIHJldHVybiBsaXN0KG1hcChsYW1i
ZGEgeDogeC5zZXF1ZW5jZV9udW1iZXIsIGNvbm5lY3Rpb25faWRzKSkKKworCitkZWYgZHJvcChz
ZW5kZXIpOgorICAgICIiIgorICAgIERyb3AgZGF0YWdyYW1zIGZyb20gYHNlbmRlcmAuCisgICAg
IiIiCisgICAgcmV0dXJuIGxlbihzZW5kZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGlt
ZSgpKSkKKworCitkZWYgcm91bmR0cmlwKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAg
IFNlbmQgZGF0YWdyYW1zIGZyb20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYCBhbmQgYmFjay4KKyAg
ICAiIiIKKyAgICByZXR1cm4gKHRyYW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpLCB0cmFuc2Zlcihy
ZWNlaXZlciwgc2VuZGVyKSkKKworCitkZWYgdHJhbnNmZXIoc2VuZGVyLCByZWNlaXZlcik6Cisg
ICAgIiIiCisgICAgU2VuZCBkYXRhZ3JhbXMgZnJvbSBgc2VuZGVyYCB0byBgcmVjZWl2ZXJgLgor
ICAgICIiIgorICAgIGRhdGFncmFtcyA9IDAKKyAgICBmcm9tX2FkZHIgPSBDTElFTlRfQUREUiBp
ZiBzZW5kZXIuX2lzX2NsaWVudCBlbHNlIFNFUlZFUl9BRERSCisgICAgZm9yIGRhdGEsIGFkZHIg
aW4gc2VuZGVyLmRhdGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgIGRh
dGFncmFtcyArPSAxCisgICAgICAgIHJlY2VpdmVyLnJlY2VpdmVfZGF0YWdyYW0oZGF0YSwgZnJv
bV9hZGRyLCBub3c9dGltZS50aW1lKCkpCisgICAgcmV0dXJuIGRhdGFncmFtcworCisKK2NsYXNz
IFF1aWNDb25uZWN0aW9uVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIGNoZWNrX2hhbmRzaGFrZShz
ZWxmLCBjbGllbnQsIHNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKToKKyAgICAgICAgIiIiCisg
ICAgICAgIENoZWNrIGhhbmRzaGFrZSBjb21wbGV0ZWQuCisgICAgICAgICIiIgorICAgICAgICBl
dmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBldmVudCA9
IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50
KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
dmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50LmVhcmx5X2RhdGFfYWNjZXB0ZWQsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50LnNlc3Npb25fcmVzdW1lZCwgRmFsc2UpCisgICAgICAgIGZvciBpIGluIHJh
bmdlKDcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2
ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShjbGllbnQubmV4dF9ldmVudCgpKQorCisgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRf
ZXZlbnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuUHJv
dG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmFscG5fcHJv
dG9jb2wsIGFscG5fcHJvdG9jb2wpCisgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuSGFuZHNoYWtl
Q29tcGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmFscG5fcHJvdG9jb2ws
IGFscG5fcHJvdG9jb2wpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDcpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVj
dGlvbklkSXNzdWVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKQorCisgICAgZGVmIHRlc3RfY29ubmVjdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhh
bmRzaGFrZSBjb21wbGV0ZWQKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfaGFuZHNoYWtlKGNsaWVu
dD1jbGllbnQsIHNlcnZlcj1zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgY2hlY2sgZWFjaCBlbmRw
b2ludCBoYXMgYXZhaWxhYmxlIGNvbm5lY3Rpb24gSURzIGZvciB0aGUgcGVlcgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNs
aWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoc2VydmVyLl9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgY2xvc2VzIHRo
ZSBjb25uZWN0aW9uCisgICAgICAgICAgICBjbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgY29ubmVjdGlvbiBjbG9zZXMgb24gdGhlIGNsaWVudCBzaWRlCisgICAgICAgICAg
ICBjbGllbnQuaGFuZGxlX3RpbWVyKGNsaWVudC5nZXRfdGltZXIoKSkKKyAgICAgICAgICAgIGV2
ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLk5PX0VSUk9SKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5mcmFtZV90eXBlLCBOb25lKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNsaWVudC5uZXh0X2V2ZW50KCkpCisKKyAgICAgICAg
ICAgICMgY2hlY2sgY29ubmVjdGlvbiBjbG9zZXMgb24gdGhlIHNlcnZlciBzaWRlCisgICAgICAg
ICAgICBzZXJ2ZXIuaGFuZGxlX3RpbWVyKHNlcnZlci5nZXRfdGltZXIoKSkKKyAgICAgICAgICAg
IGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0eXBlKGV2ZW50KSwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLk5PX0VSUk9S
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5mcmFtZV90eXBlLCBOb25lKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5uZXh0X2V2ZW50KCkpCisKKyAgICAg
ICAgICAgICMgY2hlY2sgY2xpZW50IGxvZworICAgICAgICAgICAgY2xpZW50X2xvZyA9IGNsaWVu
dC5jb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRHcmVhdGVyKGxlbihjbGllbnRfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkK
KworICAgICAgICAgICAgIyBjaGVjayBzZXJ2ZXIgbG9nCisgICAgICAgICAgICBzZXJ2ZXJfbG9n
ID0gc2VydmVyLmNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHNlcnZlcl9sb2dbInRyYWNlcyJdWzBdWyJldmVudHMi
XSksIDIwKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX2FscG4oc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17ImFs
cG5fcHJvdG9jb2xzIjogWyJoMy0yNSIsICJocS0yNSJdfSwKKyAgICAgICAgICAgIHNlcnZlcl9v
cHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBbImhxLTI1Il19LAorICAgICAgICApIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRzaGFrZSBjb21wbGV0ZWQKKyAg
ICAgICAgICAgIHNlbGYuY2hlY2tfaGFuZHNoYWtlKGNsaWVudD1jbGllbnQsIHNlcnZlcj1zZXJ2
ZXIsIGFscG5fcHJvdG9jb2w9ImhxLTI1IikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9z
ZWNyZXRzX2xvZyhzZWxmKToKKyAgICAgICAgY2xpZW50X2xvZ19maWxlID0gaW8uU3RyaW5nSU8o
KQorICAgICAgICBzZXJ2ZXJfbG9nX2ZpbGUgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHdpdGgg
Y2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17InNlY3JldHNf
bG9nX2ZpbGUiOiBjbGllbnRfbG9nX2ZpbGV9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9
eyJzZWNyZXRzX2xvZ19maWxlIjogc2VydmVyX2xvZ19maWxlfSwKKyAgICAgICAgKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisg
ICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2Vy
dmVyKQorCisgICAgICAgICAgICAjIGNoZWNrIHNlY3JldHMgd2VyZSBsb2dnZWQKKyAgICAgICAg
ICAgIGNsaWVudF9sb2cgPSBjbGllbnRfbG9nX2ZpbGUuZ2V0dmFsdWUoKQorICAgICAgICAgICAg
c2VydmVyX2xvZyA9IHNlcnZlcl9sb2dfZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNsaWVudF9sb2csIHNlcnZlcl9sb2cpCisgICAgICAgICAgICBsYWJlbHMg
PSBbXQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gY2xpZW50X2xvZy5zcGxpdGxpbmVzKCk6Cisg
ICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsaW5lLnNwbGl0KClbMF0pCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGxhYmVscywKKyAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgICJRVUlDX1NFUlZFUl9IQU5EU0hBS0VfVFJBRkZJ
Q19TRUNSRVQiLAorICAgICAgICAgICAgICAgICAgICAiUVVJQ19DTElFTlRfSEFORFNIQUtFX1RS
QUZGSUNfU0VDUkVUIiwKKyAgICAgICAgICAgICAgICAgICAgIlFVSUNfU0VSVkVSX1RSQUZGSUNf
U0VDUkVUXzAiLAorICAgICAgICAgICAgICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNS
RVRfMCIsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2Nvbm5lY3Rfd2l0aF9jZXJ0X2NoYWluKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKHNlcnZlcl9jZXJ0ZmlsZT1TRVJWRVJfQ0VSVEZJTEVfV0lUSF9DSEFJTikgYXMgKAor
ICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAgICAgICApOgorICAg
ICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNo
ZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQorCisgICAgZGVmIHRl
c3RfY29ubmVjdF93aXRoX2xvc3NfMShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNr
IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgZXZlbiBpbiB0aGUgY2xpZW50J3MgSU5JVElBTCBp
cyBsb3N0LgorICAgICAgICAiIiIKKworICAgICAgICBkZWYgZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
OgorICAgICAgICAgICAgcmV0dXJuIFtsZW4oeFswXSkgZm9yIHggaW4gaXRlbXNdCisKKyAgICAg
ICAgY2xpZW50X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1
ZSkKKyAgICAgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNh
ZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKworICAgICAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uPWNsaWVudF9jb25maWd1cmF0aW9uKQorICAgICAgICBjbGllbnQuX2Fj
a19kZWxheSA9IDAKKworICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24ubG9h
ZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklMRSwgU0VSVkVSX0tFWUZJTEUpCisKKyAgICAgICAg
c2VydmVyID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1zZXJ2ZXJfY29uZmlndXJhdGlv
bikKKyAgICAgICAgc2VydmVyLl9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgIyBjbGllbnQgc2Vu
ZHMgSU5JVElBTAorICAgICAgICBub3cgPSAwLjAKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoU0VS
VkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMTI4MF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAxLjApCisKKyAgICAgICAgIyBJTklUSUFMIGlzIGxvc3QKKyAgICAgICAgbm93ID0gMS4wCisg
ICAgICAgIGNsaWVudC5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGll
bnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuZ2V0X3RpbWVyKCksIDMuMCkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBJTklU
SUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9IDEuMQorICAgICAg
ICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1u
b3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MCwgMTA2
Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAyLjEpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMF0uc2VudF9w
YWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNw
YWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUo
c2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5uZXh0X2V2ZW50KCkpCisKKyAgICAgICAgIyBoYW5k
c2hha2UgY29udGludWVzIG5vcm1hbGx5CisgICAgICAgIG5vdyA9IDEuMgorICAgICAgICBjbGll
bnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisg
ICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzFdWzBdLCBTRVJWRVJfQUREUiwg
bm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5v
dykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszNzZd
KQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS44
MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwg
ZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25u
ZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS4zCisgICAgICAgIHNlcnZlci5yZWNl
aXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAgICAg
aXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjldKQorICAgICAgICBzZWxmLmFz
c2VydEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS44MjUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMF0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50
X3BhY2tldHMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRf
ZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3Vl
ZCkKKworICAgICAgICBub3cgPSAxLjQKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVu
dC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRh
dGFncmFtX3NpemVzKGl0ZW1zKSwgWzMyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChjbGllbnQuZ2V0X3RpbWVyKCksIDYxLjQpICAjIGlkbGUgdGltZW91dAorCisgICAgZGVmIHRl
c3RfY29ubmVjdF93aXRoX2xvc3NfMihzZWxmKToKKyAgICAgICAgZGVmIGRhdGFncmFtX3NpemVz
KGl0ZW1zKToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhbMF0pIGZvciB4IGluIGl0ZW1zXQor
CisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0
aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAgICAgICAgY2xpZW50ID0gUXVpY0Nv
bm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmlndXJhdGlvbikKKyAgICAgICAgY2xp
ZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24gPSBRdWlj
Q29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0
aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorCisg
ICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249c2VydmVyX2NvbmZp
Z3VyYXRpb24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgICMgY2xp
ZW50IHNlbmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4wCisgICAgICAgIGNsaWVudC5jb25u
ZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5nZXRf
dGltZXIoKSwgMS4wKQorCisgICAgICAgICMgc2VydmVyIHJlY2VpdmVzIElOSVRJQUwsIHNlbmRz
IElOSVRJQUwgKyBIQU5EU0hBS0UgYnV0IHNlY29uZCBkYXRhZ3JhbSBpcyBsb3N0CisgICAgICAg
IG5vdyA9IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwg
Q0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190
b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMo
aXRlbXMpLCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdl
dF90aW1lcigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9z
cy5zcGFjZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc2VydmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAgICAgICMg
Y2xpZW50IG9ubHkgcmVjZWl2ZXMgZmlyc3QgZGF0YWdyYW0gYW5kIHNlbmRzIEFDS1MKKyAgICAg
ICAgbm93ID0gMC4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBd
LCBTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1z
X3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXpl
cyhpdGVtcyksIFs5N10pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50Lmdl
dF90aW1lcigpLCAwLjYyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5u
ZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFz
c2VydElzTm9uZShjbGllbnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICMgY2xpZW50IFBUTyAt
IEhBTkRTSEFLRSBQSU5HCisgICAgICAgIG5vdyA9IGNsaWVudC5nZXRfdGltZXIoKSAgIyB+MC42
MjUKKyAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBpdGVtcyA9
IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1v
c3RFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODc1KQorCisgICAgICAgICMgc2VydmVyIHJl
Y2VpdmVzIFBJTkcsIGRpc2NhcmRzIElOSVRJQUwgYW5kIHNlbmRzIEFDSworICAgICAgICBub3cg
PSAwLjcyNQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJ
RU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbNDhdKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGlt
ZXIoKSwgMS4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3Bh
Y2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNl
cnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlh
dGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4dF9ldmVudCgpKQorCisg
ICAgICAgICMgQUNLcyBhcmUgbG9zdCwgc2VydmVyIHJldHJhbnNtaXRzIEhBTkRTSEFLRQorICAg
ICAgICBub3cgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAgICAgICAgc2VydmVyLmhhbmRsZV90aW1l
cihub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9
bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEy
ODAsIDg1NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1l
cigpLCAzLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFj
ZXNbMF0uc2VudF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vy
dmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAzKQorICAgICAgICBzZWxmLmFzc2Vy
dElzTm9uZShzZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRp
bnVlcyBub3JtYWxseQorICAgICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVf
ZGF0YWdyYW0oaXRlbXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGll
bnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisg
ICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzI5XSkKKyAgICAgICAg
c2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDIuNDUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkhhbmRz
aGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0
X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5vdyA9IDEu
MworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FE
RFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5v
dz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBb
MjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCks
IDEuOTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQo
KSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKwor
ICAgICAgICBub3cgPSAxLjQKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNb
MF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRh
Z3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFt
X3NpemVzKGl0ZW1zKSwgWzMyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbGll
bnQuZ2V0X3RpbWVyKCksIDYxLjQpICAjIGlkbGUgdGltZW91dAorCisgICAgZGVmIHRlc3RfY29u
bmVjdF93aXRoX2xvc3NfMyhzZWxmKToKKyAgICAgICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1z
KToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhbMF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAg
ICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRy
dWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhj
YWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAgICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rp
b24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmlndXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9h
Y2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAgICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxv
YWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAg
IHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRp
b24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgICMgY2xpZW50IHNl
bmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4wCisgICAgICAgIGNsaWVudC5jb25uZWN0KFNF
UlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9f
c2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0
ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIo
KSwgMS4wKQorCisgICAgICAgICMgc2VydmVyIHJlY2VpdmVzIElOSVRJQUwsIHNlbmRzIElOSVRJ
QUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gMC4xCisgICAgICAgIHNlcnZlci5yZWNlaXZl
X2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRl
bXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCAxMDYyXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAxKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFj
a2V0cyksIDIpCisKKyAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgSU5JVElBTCArIEhBTkRTSEFL
RQorICAgICAgICBub3cgPSAwLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVjZWl2ZV9k
YXRhZ3JhbShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1z
ID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRB
bG1vc3RFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0
ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwg
ZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAg
ICAgICMgc2VydmVyIGNvbXBsZXRlcyBoYW5kc2hha2UKKyAgICAgICAgbm93ID0gMC4zCisgICAg
ICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjldKQor
ICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMC44MjUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMF0uc2Vu
dF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3Nz
LnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5
cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkhh
bmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5u
ZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgICMgc2Vy
dmVyIFBUTyAtIDEtUlRUIFBJTkcKKyAgICAgICAgbm93ID0gMC44MjUKKyAgICAgICAgc2VydmVy
LmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNf
dG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVz
KGl0ZW1zKSwgWzI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0
X3RpbWVyKCksIDEuODc1KQorCisgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFBJTkcsIHNlbmRz
IEFDSworICAgICAgICBub3cgPSAwLjkKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVu
dC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRh
dGFncmFtX3NpemVzKGl0ZW1zKSwgWzMyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChjbGllbnQuZ2V0X3RpbWVyKCksIDAuODI1KQorCisgICAgICAgICMgc2VydmVyIHJlY2VpdmVz
IEFDSywgcmV0cmFuc21pdHMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgbm93ID0gMS4wCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAg
ICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5v
dz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX2hhbmRzaGFrZV9kb25lX3Bl
bmRpbmcpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyNF0p
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfcXVhbnR1bV9yZWFkaW5lc3Moc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoY2xpZW50X29wdGlvbnM9eyJxdWFudHVtX3Jl
YWRpbmVzc190ZXN0IjogVHJ1ZX0sKSBhcyAoCisgICAgICAgICAgICBjbGllbnQsCisgICAgICAg
ICAgICBzZXJ2ZXIsCisgICAgICAgICk6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQu
Z2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9z
dHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAg
cmVjZWl2ZWQgPSBOb25lCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAg
IGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UoZXZlbnQsIGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgICAgICAg
ICByZWNlaXZlZCA9IGV2ZW50LmRhdGEKKyAgICAgICAgICAgICAgICBlbGlmIGV2ZW50IGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVjZWl2ZWQsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBy
dHQoc2VsZik6CisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHRpY2tldF9z
dG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisKKyAgICAgICAgZGVmIHNhdmVfc2Vzc2lvbl90
aWNrZXQodGlja2V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGNsaWVudF90aWNrZXQKKyAgICAg
ICAgICAgIGNsaWVudF90aWNrZXQgPSB0aWNrZXQKKworICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKAorICAgICAgICAgICAgY2xpZW50X2t3YXJncz17InNlc3Npb25fdGlja2V0X2hhbmRs
ZXIiOiBzYXZlX3Nlc3Npb25fdGlja2V0fSwKKyAgICAgICAgICAgIHNlcnZlcl9rd2FyZ3M9eyJz
ZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogdGlja2V0X3N0b3JlLmFkZH0sCisgICAgICAgICkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIGNsaWVu
dF9hbmRfc2VydmVyKAorICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJzZXNzaW9uX3RpY2tl
dCI6IGNsaWVudF90aWNrZXR9LAorICAgICAgICAgICAgc2VydmVyX2t3YXJncz17InNlc3Npb25f
dGlja2V0X2ZldGNoZXIiOiB0aWNrZXRfc3RvcmUucG9wfSwKKyAgICAgICAgICAgIGhhbmRzaGFr
ZT1GYWxzZSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY2xp
ZW50LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIHN0
cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAg
ICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDIsIDEp
KQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQp
CisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0cmVhbURhdGFSZWNlaXZlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgYiJoZWxsbyIpCisKKyAg
ICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfMHJ0dF9iYWRfbWF4X2Vhcmx5X2RhdGEoc2VsZik6Cisg
ICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHRpY2tldF9zdG9yZSA9IFNlc3Np
b25UaWNrZXRTdG9yZSgpCisKKyAgICAgICAgZGVmIHBhdGNoKHNlcnZlcik6CisgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgIFBhdGNoIHNlcnZlcidzIFRMUyBpbml0aWFsaXphdGlvbiB0byBz
ZXQgYW4gaW52YWxpZAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGEgdmFsdWUuCisgICAgICAg
ICAgICAiIiIKKyAgICAgICAgICAgIHJlYWxfaW5pdGlhbGl6ZSA9IHNlcnZlci5faW5pdGlhbGl6
ZQorCisgICAgICAgICAgICBkZWYgcGF0Y2hlZF9pbml0aWFsaXplKHBlZXJfY2lkOiBieXRlcyk6
CisgICAgICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplKHBlZXJfY2lkKQorICAgICAgICAgICAg
ICAgIHNlcnZlci50bHMuX21heF9lYXJseV9kYXRhID0gMTIzNDUKKworICAgICAgICAgICAgc2Vy
dmVyLl9pbml0aWFsaXplID0gcGF0Y2hlZF9pbml0aWFsaXplCisKKyAgICAgICAgZGVmIHNhdmVf
c2Vzc2lvbl90aWNrZXQodGlja2V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGNsaWVudF90aWNr
ZXQKKyAgICAgICAgICAgIGNsaWVudF90aWNrZXQgPSB0aWNrZXQKKworICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKAorICAgICAgICAgICAgY2xpZW50X2t3YXJncz17InNlc3Npb25fdGlj
a2V0X2hhbmRsZXIiOiBzYXZlX3Nlc3Npb25fdGlja2V0fSwKKyAgICAgICAgICAgIHNlcnZlcl9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogdGlja2V0X3N0b3JlLmFkZH0sCisgICAg
ICAgICAgICBzZXJ2ZXJfcGF0Y2g9cGF0Y2gsCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVy
KToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGZhaWxlZAorICAgICAgICAgICAgZXZl
bnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShl
dmVudCkKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhj
bGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIHRoZSBjbGllbnQgY2hhbmdlcyBjb25uZWN0aW9uIElE
CisgICAgICAgICAgICBjbGllbnQuY2hhbmdlX2Nvbm5lY3Rpb25faWQoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xp
ZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgIyB0aGUgc2VydmVyIHByb3ZpZGVzIGEgbmV3IGNvbm5lY3Rpb24g
SUQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoc2VydmVyLCBjbGllbnQp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYs
IDcsIDhdCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfY29ubmVjdGlvbl9p
ZF9yZXRyYW5zbWl0X25ld19jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVu
dF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJf
Y2lkX2F2YWlsYWJsZSksIFsxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIHRoZSBjbGllbnQgY2hhbmdlcyBjb25uZWN0aW9uIElECisgICAgICAgICAg
ICBjbGllbnQuY2hhbmdlX2Nvbm5lY3Rpb25faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2Np
ZF9hdmFpbGFibGUpLCBbMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB0aGUgc2VydmVyIHByb3ZpZGVzIGEgbmV3IGNvbm5lY3Rpb24gSUQsIE5FV19DT05O
RUNUSU9OX0lEIGlzIGxvc3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChzZXJ2
ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUs
IDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgTkVXX0NPTk5FQ1RJT05fSUQg
aXMgcmV0cmFuc21pdHRlZAorICAgICAgICAgICAgc2VydmVyLl9vbl9uZXdfY29ubmVjdGlvbl9p
ZF9kZWxpdmVyeSgKKyAgICAgICAgICAgICAgICBRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzZXJ2
ZXIuX2hvc3RfY2lkc1stMV0KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodHJhbnNmZXIoc2VydmVyLCBjbGllbnQpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9j
aWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDcsIDhdCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9jaGFuZ2VfY29ubmVjdGlvbl9pZF9yZXRyYW5zbWl0X3JldGlyZV9jb25uZWN0
aW9uX2lkKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsxLCAyLCAz
LCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHRoZSBjbGllbnQg
Y2hhbmdlcyBjb25uZWN0aW9uIElELCBSRVRJUkVfQ09OTkVDVElPTl9JRCBpcyBsb3N0CisgICAg
ICAgICAgICBjbGllbnQuY2hhbmdlX2Nvbm5lY3Rpb25faWQoKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFp
bGFibGUpLCBbMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyBSRVRJUkVfQ09OTkVDVElPTl9JRCBpcyByZXRyYW5zbWl0dGVkCisgICAgICAgICAgICBjbGll
bnQuX29uX3JldGlyZV9jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkxP
U1QsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKGNsaWVudCwgc2Vy
dmVyKSwgMSkKKworICAgICAgICAgICAgIyB0aGUgc2VydmVyIHByb3ZpZGVzIGEgbmV3IGNvbm5l
Y3Rpb24gSUQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoc2VydmVyLCBj
bGllbnQpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAg
ICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQs
IDUsIDYsIDcsIDhdCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkg
YXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50CisgICAgICAgICAgICBz
dHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMCkKKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVh
bV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA0KQorICAgICAgICAgICAgY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lk
ID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9
VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCAyKQorICAgICAg
ICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAg
ICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
aXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtX2lkLCA2KQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lk
LCBiImhlbGxvIikKKworICAgICAgICAgICAgIyBzZXJ2ZXIKKyAgICAgICAgICAgIHN0cmVhbV9p
ZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCAxKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0g
c2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJlYW1faWQsIDUpCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1f
ZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2
ZXIuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDMpCisgICAgICAgICAgICBz
ZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAg
ICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlk
aXJlY3Rpb25hbD1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQs
IDcpCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVs
bG8iKQorCisgICAgZGVmIHRlc3RfZGF0YWdyYW1fZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGgg
Y2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRh
Z3JhbV9mcmFtZV9zaXplIjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAg
ICAgICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBh
bHBuX3Byb3RvY29sPU5vbmUpCisKKyAgICAgICAgICAgICMgc2VuZCBkYXRhZ3JhbQorICAgICAg
ICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJoZWxsbyIpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKGNsaWVudCwgc2VydmVyKSwgMSkKKworICAgICAgICAg
ICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHR5cGUoZXZlbnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5kYXRhLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0
X2RhdGFncmFtX2ZyYW1lXzIoc2VsZik6CisgICAgICAgICMgcGF5bG9hZCB3aGljaCBleGFjdGx5
IGZpbGxzIGFuIGVudGlyZSBwYWNrZXQKKyAgICAgICAgcGF5bG9hZCA9IGIiWiIgKiAxMjUwCisK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNsaWVudF9vcHRp
b25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUzNn0sCisgICAgICAgICAgICBzZXJ2
ZXJfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXplIjogNjU1MzZ9LAorICAgICAgICAp
IGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRzaGFrZSBjb21w
bGV0ZWQKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfaGFuZHNoYWtlKGNsaWVudD1jbGllbnQsIHNl
cnZlcj1zZXJ2ZXIsIGFscG5fcHJvdG9jb2w9Tm9uZSkKKworICAgICAgICAgICAgIyBxdWV1ZSAy
MCBkYXRhZ3JhbXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIwKToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuc2VuZF9kYXRhZ3JhbV9mcmFtZShwYXlsb2FkKQorCisgICAgICAgICAgICAj
IGNsaWVudCBjYW4gb25seSAxMSBkYXRhZ3JhbXMgYXJlIHNlbnQgZHVlIHRvIGNvbmdlc3Rpb24g
Y29udHJvbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNl
cnZlciksIDExKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTEpOgorICAgICAgICAgICAg
ICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQpCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5kYXRhLCBwYXlsb2FkKQorCisgICAg
ICAgICAgICAjIHNlcnZlciBzZW5kcyBBQ0sKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHJhbnNmZXIoc2VydmVyLCBjbGllbnQpLCAxKQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5k
cyByZW1haW5pbmcgZGF0YWdyYW1zCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5z
ZmVyKGNsaWVudCwgc2VydmVyKSwgOSkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDkpOgor
ICAgICAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVj
ZWl2ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5kYXRhLCBwYXls
b2FkKQorCisgICAgZGVmIHRlc3RfZGVjcnlwdGlvbl9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IG1lc3Mgd2l0aCBlbmNyeXB0aW9uIGtleQorICAgICAgICAgICAgc2VydmVyLl9jcnlwdG9zW3Rs
cy5FcG9jaC5PTkVfUlRUXS5zZW5kLnNldHVwKAorICAgICAgICAgICAgICAgIGNpcGhlcl9zdWl0
ZT10bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgICAgIHNl
Y3JldD1ieXRlcyg0OCksCisgICAgICAgICAgICAgICAgdmVyc2lvbj1zZXJ2ZXIuX3ZlcnNpb24s
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIGNsb3NlCisgICAg
ICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SKQor
ICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5v
dz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0o
ZGF0YSwgU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKworICAgIGRlZiB0ZXN0X3Rsc19l
cnJvcihzZWxmKToKKyAgICAgICAgZGVmIHBhdGNoKGNsaWVudCk6CisgICAgICAgICAgICByZWFs
X2luaXRpYWxpemUgPSBjbGllbnQuX2luaXRpYWxpemUKKworICAgICAgICAgICAgZGVmIHBhdGNo
ZWRfaW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAgIHJlYWxfaW5p
dGlhbGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBjbGllbnQudGxzLl9zdXBwb3J0ZWRf
dmVyc2lvbnMgPSBbdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOF0KKworICAgICAgICAgICAg
Y2xpZW50Ll9pbml0aWFsaXplID0gcGF0Y2hlZF9pbml0aWFsaXplCisKKyAgICAgICAgIyBoYW5k
c2hha2UgZmFpbHMKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihjbGllbnRfcGF0Y2g9
cGF0Y2gpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICB0aW1lcl9hdCA9IHNlcnZl
ci5nZXRfdGltZXIoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcih0aW1lcl9hdCkK
KworICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmVycm9yX2NvZGUsIDMyNikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlw
ZS5DUllQVE8pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnJlYXNvbl9waHJh
c2UsICJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lvbiIpCisKKyAgICBkZWYgdGVzdF9yZWNl
aXZlX2RhdGFncmFtX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFu
ZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGRhdGFncmFtID0gYmluYXNjaWkudW5oZXhs
aWZ5KCJjMDAwMDAwMDAwODAiKQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRh
Z3JhbSwgU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKworICAgIGRlZiB0ZXN0X3JlY2Vp
dmVfZGF0YWdyYW1fcmVzZXJ2ZWRfYml0c19ub25femVybyhzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1
aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwK
KyAgICAgICAgICAgIGlzX2NsaWVudD1GYWxzZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVu
dC5ob3N0X2NpZCwKKyAgICAgICAgICAgIHZlcnNpb249Y2xpZW50Ll92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIGNyeXB0byA9IENyeXB0b1BhaXIoKQorICAgICAgICBjcnlwdG8uc2V0dXBf
aW5pdGlhbChjbGllbnQuX3BlZXJfY2lkLCBpc19jbGllbnQ9RmFsc2UsIHZlcnNpb249Y2xpZW50
Ll92ZXJzaW9uKQorICAgICAgICBjcnlwdG8uZW5jcnlwdF9wYWNrZXRfcmVhbCA9IGNyeXB0by5l
bmNyeXB0X3BhY2tldAorCisgICAgICAgIGRlZiBlbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIs
IHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGgg
cmVzZXJ2ZWQgYml0cworICAgICAgICAgICAgcGxhaW5faGVhZGVyID0gYnl0ZXMoW3BsYWluX2hl
YWRlclswXSB8IDB4MENdKSArIHBsYWluX2hlYWRlclsxOl0KKyAgICAgICAgICAgIHJldHVybiBj
cnlwdG8uZW5jcnlwdF9wYWNrZXRfcmVhbCgKKyAgICAgICAgICAgICAgICBwbGFpbl9oZWFkZXIs
IHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIKKyAgICAgICAgICAgICkKKworICAgICAgICBj
cnlwdG8uZW5jcnlwdF9wYWNrZXQgPSBlbmNyeXB0X3BhY2tldAorCisgICAgICAgIGJ1aWxkZXIu
c3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLlBBRERJTkcpCisgICAgICAgIGJ1Zi5w
dXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisKKyAgICAg
ICAgZm9yIGRhdGFncmFtIGluIGJ1aWxkZXIuZmx1c2goKVswXToKKyAgICAgICAgICAgIGNsaWVu
dC5yZWNlaXZlX2RhdGFncmFtKGRhdGFncmFtLCBTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisgICAgICAg
ICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPU5vbmUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iUmVzZXJ2ZWQg
Yml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV93cm9uZ192ZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICBidWlsZGVyID0g
UXVpY1BhY2tldEJ1aWxkZXIoCisgICAgICAgICAgICBob3N0X2NpZD1jbGllbnQuX3BlZXJfY2lk
LAorICAgICAgICAgICAgaXNfY2xpZW50PUZhbHNlLAorICAgICAgICAgICAgcGVlcl9jaWQ9Y2xp
ZW50Lmhvc3RfY2lkLAorICAgICAgICAgICAgdmVyc2lvbj0weEZGMDAwMDExLCAgIyBEUkFGVF8x
NgorICAgICAgICApCisgICAgICAgIGNyeXB0byA9IENyeXB0b1BhaXIoKQorICAgICAgICBjcnlw
dG8uc2V0dXBfaW5pdGlhbChjbGllbnQuX3BlZXJfY2lkLCBpc19jbGllbnQ9RmFsc2UsIHZlcnNp
b249Y2xpZW50Ll92ZXJzaW9uKQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
UXVpY0ZyYW1lVHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWls
ZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBi
dWlsZGVyLmZsdXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShk
YXRhZ3JhbSwgU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFt
X3JldHJ5KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQo
c2VsZikKKworICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVu
Y29kZV9xdWljX3JldHJ5KAorICAgICAgICAgICAgICAgIHZlcnNpb249Y2xpZW50Ll92ZXJzaW9u
LAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCI4NWFiYjU0
N2JmMjhiZTk3IiksCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWNsaWVudC5ob3N0
X2NpZCwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Ll9w
ZWVyX2NpZCwKKyAgICAgICAgICAgICAgICByZXRyeV90b2tlbj1ieXRlcygxNiksCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIsCisgICAgICAgICAgICBub3c9dGltZS50
aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCks
IDEpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3JldHJ5X3dyb25nX2Rlc3RpbmF0
aW9uX2NpZChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBl
bmNvZGVfcXVpY19yZXRyeSgKKyAgICAgICAgICAgICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lv
biwKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1
NDdiZjI4YmU5NyIpLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1iaW5hc2NpaS51
bmhleGxpZnkoImM5ODM0M2ZlOGY1ZjBmZjQiKSwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9k
ZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICByZXRyeV90
b2tlbj1ieXRlcygxNiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIs
CisgICAgICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfYWNrX2Zy
YW1lX2VjbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfYWNrX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BQ0tfRUNOLAorICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwXHgwMlx4MDBceDAwXHgw
MFx4MDBceDAwIiksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9u
X2Nsb3NlX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlci5jbG9zZSgKKyAgICAgICAgICAg
ICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAg
ICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAgICAgICAgICAg
cmVhc29uX3BocmFzZT0iaWxsZWdhbCBBQ0sgZnJhbWUiLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBjbGllbnQpLCAoMSwgMCkp
CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY2xpZW50
Ll9jbG9zZV9ldmVudCwKKyAgICAgICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0
ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NP
TF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlw
ZS5BQ0ssCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZy
YW1lIiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWVfYXBwKHNlbGYpOgorICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlcnZl
ci5jbG9zZShlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsIHJlYXNvbl9waHJhc2U9
Imdvb2RieWUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVy
LCBjbGllbnQpLCAoMSwgMCkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9jbG9zZV9ldmVudCwKKyAgICAgICAgICAgICAgICBldmVudHMu
Q29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVp
Y0Vycm9yQ29kZS5OT19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25l
LAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJnb29kYnllIiwKKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Nvbm5lY3Rp
b25fY2xvc2VfZnJhbWVfYXBwX25vdF91dGY4KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVh
dGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICBjbGllbnQuX2hhbmRsZV9jb25u
ZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAg
ICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwODY3NmY2ZjY0NjI3
OTgyMDAiKSksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2xpZW50Ll9jbG9zZV9ldmVudCwKKyAgICAgICAgICAgIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCgKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9f
RVJST1IsIGZyYW1lX3R5cGU9Tm9uZSwgcmVhc29uX3BocmFzZT0iIiwKKyAgICAgICAgICAgICks
CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jcnlwdG9fZnJhbWVfb3Zlcl9sYXJn
ZXN0X29mZnNldChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBs
ZW5ndGggPiAyXjYyIC0gMQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWlj
Q29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9j
cnlwdG9fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQo
Y2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcihVSU5UX1ZBUl9NQVgp
ICsgZW5jb2RlX3VpbnRfdmFyKDEpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJh
bWVUeXBlLkNSWVBUTykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJvZmZzZXQgKyBsZW5ndGggY2Fubm90
IGV4Y2VlZCAyXjYyIC0gMSIKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9k
YXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgREFU
QV9CTE9DS0VEOiAxMjM0NQorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkRBVEFfQkxPQ0tFRCwKKyAgICAgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTIzNDUpKSwKKyAgICAgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9z
aXplPTYpCisKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICBRdWljRnJh
bWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJoZWxsbyIpLAorICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5u
ZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQoZGF0YT1iImhlbGxvIikK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFtX2ZyYW1lX25vdF9hbGxv
d2VkKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2Vs
ZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9uZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU0s
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJoZWxsbyIpLAorICAgICAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQgREFU
QUdSQU0gZnJhbWUiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFtX2ZyYW1lX3Rvb19s
YXJnZShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNl
bGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5f
aGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2Nv
bnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAor
ICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9y
Q29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFH
UkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV93aXRoX2xl
bmd0aChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNl
bGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTcpCisKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVf
ZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RILAorICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICkKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50Lm5leHRfZXZlbnQoKSwg
ZXZlbnRzLkRhdGFncmFtRnJhbWVSZWNlaXZlZChkYXRhPWIiaGVsbG8iKQorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGhfbm90X2FsbG93
ZWQoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxm
LCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT1Ob25lKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGllbnQu
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9X
SVRIX0xFTkdUSCwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDVoZWxsb2p1bmsi
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuREFU
QUdSQU1fV0lUSF9MRU5HVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LnJlYXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0
ZXN0X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV93aXRoX2xlbmd0aF90b29fbGFyZ2Uoc2VsZik6Cisg
ICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdy
YW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nv
bm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAg
ICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDVoZWxsb2p1bmsiKSwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVp
Y0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5H
VEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2Us
ICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9oYW5k
c2hha2VfZG9uZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3Nl
cnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciByZWNlaXZl
cyBIQU5EU0hBS0VfRE9ORSBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuX2hh
bmRsZV9oYW5kc2hha2VfZG9uZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3Jl
Y2VpdmVfY29udGV4dChzZXJ2ZXIpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBl
LkhBTkRTSEFLRV9ET05FLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIiIpLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1l
VHlwZS5IQU5EU0hBS0VfRE9ORSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMiLAorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX21heF9kYXRhX2ZyYW1lKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisK
KyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9EQVRBIHJhaXNpbmcgbGltaXQKKyAg
ICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAg
IGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJh
bWVUeXBlLk1BWF9EQVRBLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50
X3ZhcigxMDQ4NTc3KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNsaWVudC5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc3KQorCisgICAgZGVmIHRlc3RfaGFu
ZGxlX21heF9zdHJlYW1fZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5k
X3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVh
dGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIHN0cmVhbSA9IGNsaWVudC5f
Y3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMg
Y2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1fREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgw
MCIgKyBlbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSwgMTA0ODU3
NykKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBIGxvd2Vy
aW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJh
bWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAgICAgICAgICAg
ICAgIEJ1ZmZlcihkYXRhPWIiXHgwMCIgKyBlbmNvZGVfdWludF92YXIoMTA0ODU3NSkpLAorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVh
bV9kYXRhX3JlbW90ZSwgMTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFt
X2RhdGFfZnJhbWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0
ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVh
bV9kYXRhKHN0cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBNQVhfU1RSRUFNX0RBVEE6IDMsIDEKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAg
Y2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1
aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIo
ZGF0YT1iIlx4MDNceDAxIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1f
U1RBVEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVj
ZWl2ZS1vbmx5IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1l
KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2Vy
dmVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X3N0
cmVhbXNfYmlkaSwgMTI4KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RS
RUFNU19CSURJIHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9z
dHJlYW1zX2JpZGlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4
dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklE
SSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI5KSksCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3Rl
X21heF9zdHJlYW1zX2JpZGksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMg
TUFYX1NUUkVBTVNfQklESSBsb3dlcmluZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5k
bGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2
ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RS
RUFNU19CSURJLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3Zhcigx
MjcpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
Ll9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSwgMTI5KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNs
aWVudC5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSwgMTI4KQorCisgICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBNQVhfU1RSRUFNU19VTkkgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xp
ZW50Ll9oYW5kbGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVu
dF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBl
Lk1BWF9TVFJFQU1TX1VOSSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoMTI5KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSwgMTI5KQorCisgICAgICAgICAgICAjIGNs
aWVudCByZWNlaXZlcyBNQVhfU1RSRUFNU19VTkkgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAg
Y2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVU
eXBlLk1BWF9TVFJFQU1TX1VOSSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVf
dWludF92YXIoMTI3KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSwgMTI5KQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX25ld190b2tlbl9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3Nl
cnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBORVdfVE9LRU4KKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX25ld190b2tlbl9mcmFtZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfVE9LRU4sCisgICAgICAgICAgICAgICAgQnVmZmVy
KGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwODAxMDIwMzA0MDUwNjA3MDgiKSksCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lX2Zyb21fY2xpZW50
KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2Vy
dmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIHJlY2VpdmVzIE5FV19UT0tFTgorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBzZXJ2ZXIuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAg
ICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfVE9LRU4sCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgwMTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVy
cm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5O
RVdfVE9LRU4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiQ2xpZW50cyBtdXN0IG5vdCBzZW5kIE5FV19U
T0tFTiBmcmFtZXMiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcGF0aF9j
aGFsbGVuZ2VfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBh
cyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY2hhbmdlcyBhZGRyZXNz
IGFuZCBzZW5kcyBzb21lIGRhdGEKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KDAsIGIiMDEyMzQ1NjciKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRh
dGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgc2VydmVy
LnJlY2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUo
KSkKKworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oc2VydmVyLl9uZXR3b3JrX3BhdGhzKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIsICgiMS4yLjMuNCIsIDIzNDUp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0u
aXNfdmFsaWRhdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuX25ldHdv
cmtfcGF0aHNbMV0uYWRkciwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmlzX3ZhbGlkYXRlZCkKKworICAgICAg
ICAgICAgIyBzZXJ2ZXIgc2VuZHMgUEFUSF9DSEFMTEVOR0UgYW5kIHJlY2VpdmVzIFBBVEhfUkVT
UE9OU0UKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGluIHNlcnZlci5kYXRhZ3JhbXNfdG9f
c2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAgICAgIGNsaWVudC5yZWNlaXZlX2Rh
dGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCisgICAgICAgICAgICBm
b3IgZGF0YSwgYWRkciBpbiBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgp
KToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCAoIjEuMi4z
LjQiLCAyMzQ1KSwgbm93PXRpbWUudGltZSgpKQorCisgICAgICAgICAgICAjIGNoZWNrIHBhdGhz
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRoc1swXS5h
ZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2
ZXIuX25ldHdvcmtfcGF0aHNbMF0uaXNfdmFsaWRhdGVkKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMV0uYWRkciwgKCIxLjIuMy40IiwgMTIzNCkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmlz
X3ZhbGlkYXRlZCkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lX2Jh
ZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciByZWNlaXZlcyB1bnNvbGxpY2l0ZWQgUEFUSF9S
RVNQT05TRQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlv
bkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuX2hhbmRsZV9wYXRoX3Jlc3Bv
bnNlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNs
aWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQT05TRSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDExXHgyMlx4MzNceDQ0XHg1NVx4
NjZceDc3XHg4OCIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklP
TEFUSU9OKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVf
dHlwZSwgUXVpY0ZyYW1lVHlwZS5QQVRIX1JFU1BPTlNFKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X3BhZGRpbmdfZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25l
X2NsaWVudChzZWxmKQorCisgICAgICAgICMgbm8gbW9yZSBwYWRkaW5nCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWIiIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgK
KyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlw
ZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDApCisKKyAgICAgICAgIyBwYWRkaW5nIHVudGlsIGVuZAorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1ieXRlcygxMCkpCisgICAgICAgIGNsaWVudC5faGFuZGxlX3BhZGRpbmdfZnJh
bWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksIFF1aWNGcmFt
ZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYudGVsbCgpLCAxMCkKKworICAgICAgICAjIHBhZGRpbmcgdGhlbiBzb21ldGhpbmcgZWxzZQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1ieXRlcygxMCkgKyBiIlx4MDEiKQorICAgICAgICBj
bGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0
ZXMgYmlkaXJlY3Rpb25hbCBzdHJlYW0gMAorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFt
X2RhdGEoc3RyZWFtX2lkPTAsIGRhdGE9YiJoZWxsbyIpCisgICAgICAgICAgICBjb25zdW1lX2V2
ZW50cyhjbGllbnQpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFJFU0VUX1NUUkVB
TQorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lKAorICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAg
ICBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0
YT1iaW5hc2NpaS51bmhleGxpZnkoIjAwMDEwMCIpKSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuU3RyZWFtUmVzZXQpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV2ZW50LmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuSU5URVJOQUxfRVJS
T1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnN0cmVhbV9pZCwgMCkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXNldF9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgor
ICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAg
ICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAgICAg
ICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8i
KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Cisg
ICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAg
ICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVTRVRfU1RSRUFNLAorICAgICAgICAgICAgICAgICAg
ICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjAyMTEwMCIpKSwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9j
b2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUkVTRVRf
U1RSRUFNKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jl
dGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX2hvc3RfY2lkcyks
IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBSRVRJUkVfQ09OTkVDVElPTl9JRAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDAyIiksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwg
MywgNCwgNSwgNiwgNywgOF0KKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9y
ZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZV9jdXJyZW50X2NpZChzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50
Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgZm9yIHRo
ZSBjdXJyZW50IENJRAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29u
bmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9yZXRp
cmVfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJF
VElSRV9DT05ORUNUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4
MDAiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0
aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJDYW5ub3QgcmV0aXJlIGN1cnJlbnQgY29ubmVj
dGlvbiBJRCIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX2hvc3RfY2lkcyksIFswLCAx
LCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X3N0b3Bfc2VuZGluZ19mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJp
ZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNl
aXZlcyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0b3Bfc2VuZGlu
Z19mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5TVE9QX1NFTkRJTkcsCisgICAgICAgICAg
ICAgICAgQnVmZmVyKGRhdGE9YiJceDAwXHgxMSIpLAorICAgICAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfaGFuZGxlX3N0b3Bfc2VuZGluZ19mcmFtZV9yZWNlaXZlX29ubHkoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gMworICAgICAgICAg
ICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkPTMsIGRhdGE9YiJoZWxsbyIpCisK
KyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUT1BfU0VORElORworICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAg
ICAgICAgUXVpY0ZyYW1lVHlwZS5TVE9QX1NFTkRJTkcsCisgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlcihkYXRhPWIiXHgwM1x4MTEiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNU
UkVBTV9TVEFURV9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5ESU5HKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlN0cmVhbSBpcyBy
ZWNlaXZlLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9mcmFtZV9vdmVyX2xh
cmdlc3Rfb2Zmc2V0KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIG9mZnNldCAr
IGxlbmd0aCA+IDJeNjIgLSAxCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlw
ZS5TVFJFQU1fQkFTRSB8IDYKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAg
IGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICsgZW5jb2RlX3VpbnRfdmFyKFVJTlRfVkFSX01BWCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICsgZW5jb2RlX3VpbnRfdmFyKDEpCisgICAgICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNP
RElOR19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZnJhbWVfdHlwZSwgZnJhbWVfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJv
ZmZzZXQgKyBsZW5ndGggY2Fubm90IGV4Y2VlZCAyXjYyIC0gMSIKKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9tYXhfZGF0YShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRhIGNvdW50ZXIKKyAgICAg
ICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVudC5fbG9jYWxfbWF4X2Rh
dGEKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAgICAg
ICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDQKKyAgICAgICAg
ICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVp
Y0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVf
c3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0
KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcihzdHJlYW1faWQpICsgZW5jb2RlX3Vp
bnRfdmFyKDEpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLkZMT1dfQ09OVFJPTF9F
UlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5
cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAiT3ZlciBjb25uZWN0aW9uIGRhdGEgbGltaXQiKQorCisgICAgZGVm
IHRlc3RfaGFuZGxlX3N0cmVhbV9mcmFtZV9vdmVyX21heF9zdHJlYW1fZGF0YShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIGZyYW1l
X3R5cGUgPSBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFIHwgNAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gMQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlv
bkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJh
bWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgQnVm
ZmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoc3RyZWFt
X2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoY2xpZW50Ll9s
b2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUgKyAxKQorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgZnJh
bWVfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNv
bl9waHJhc2UsICJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1fZnJhbWVfb3Zlcl9tYXhfc3RyZWFtcyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGll
bnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9o
YW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFN
X0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3Vu
aSAqIDQgKyAzKQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNF
cnJvckNvZGUuU1RSRUFNX0xJTUlUX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJU
b28gbWFueSBzdHJlYW1zIG9wZW4iKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9mcmFt
ZV9zZW5kX29ubHkoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
Y2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyB1bmlkaXJlY3Rp
b25hbCBzdHJlYW0gMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkPTIsIGRhdGE9YiJoZWxsbyIpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNU
UkVBTSBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVj
dGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1f
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAg
ICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyIiksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVp
Y0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9mcmFt
ZV93cm9uZ19pbml0aWF0b3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RS
RUFNIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0
aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9m
cmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAg
ICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiKSwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWlj
RXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
V3Jvbmcgc3RyZWFtIGluaXRpYXRvciIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2Rh
dGFfYmxvY2tlZF9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigp
IGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGly
ZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZD0wLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBTVFJFQU1fREFUQV9CTE9DS0VECisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9EQVRBX0JM
T0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwXHgwMSIpLAorICAgICAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWVf
c2VuZF9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNs
aWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9u
YWwgc3RyZWFtIDIKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9p
ZD0yLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJF
QU1fREFUQV9CTE9DS0VECisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0
cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNl
aXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5T
VFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4
MDJceDAxIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJS
T1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBl
LCBRdWljRnJhbWVUeXBlLlNUUkVBTV9EQVRBX0JMT0NLRUQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHNlbmQtb25s
eSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtc19ibG9ja2VkX3VuaV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU1TX0JMT0NLRURfVU5JOiAwCisg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICBCdWZm
ZXIoZGF0YT1iIlx4MDAiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3BheWxvYWRf
cmVjZWl2ZWRfcGFkZGluZ19vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2Vy
dmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IHBhZGRpbmcgb25seQorICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNfcHJvYmluZyA9
IGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2
ZV9jb250ZXh0KGNsaWVudCksIGIiXHgwMCIgKiAxMjAwCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2Fja19lbGljaXRpbmcpCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNfcHJvYmluZykKKworICAgIGRlZiB0ZXN0X3BheWxvYWRfcmVjZWl2ZWRf
dW5rbm93bl9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyB1bmtub3du
IGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZChj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksIGIiXHgxZiIpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIDB4MUYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2Vw
dGlvbi5yZWFzb25fcGhyYXNlLCAiVW5rbm93biBmcmFtZSB0eXBlIikKKworICAgIGRlZiB0ZXN0
X3BheWxvYWRfcmVjZWl2ZWRfdW5leHBlY3RlZF9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNs
aWVudCByZWNlaXZlcyBDUllQVE8gZnJhbWUgaW4gMC1SVFQKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgY2xpZW50Ll9wYXlsb2FkX3JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRf
cmVjZWl2ZV9jb250ZXh0KGNsaWVudCwgZXBvY2g9dGxzLkVwb2NoLlpFUk9fUlRUKSwgYiJceDA2
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBmcmFtZSB0eXBlIikKKworICAgIGRlZiB0ZXN0
X3BheWxvYWRfcmVjZWl2ZWRfbWFsZm9ybWVkX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xp
ZW50IHJlY2VpdmVzIG1hbGZvcm1lZCBUUkFOU1BPUlRfQ0xPU0UgZnJhbWUKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9wYXlsb2FkX3JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksIGIiXHgxY1x4MDBceDAxIgorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdf
RVJST1IKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIDB4MUMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiRmFpbGVkIHRvIHBhcnNlIGZyYW1lIikKKworICAg
IGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfYmxvY2tlZF9ieV9jYyhzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNoZWNrIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuX2xvc3MuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuX2xvc3MuY29uZ2VzdGlvbl93aW5kb3csIDE0MzAzKQorCisgICAgICAgICAg
ICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRhIGNvdW50ZXIKKyAgICAgICAgICAg
IGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVudC5fbG9jYWxfbWF4X2RhdGEKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVfbWF4X2RhdGEsIDEwNDg1
NzYpCisKKyAgICAgICAgICAgICMgYXJ0aWZpY2lhbGx5IHJhaXNlIGJ5dGVzIGluIGZsaWdodAor
ICAgICAgICAgICAgY2xpZW50Ll9sb3NzLl9jYy5ieXRlc19pbl9mbGlnaHQgPSAxNDMwMworCisg
ICAgICAgICAgICAjIE1BWF9EQVRBIGlzIG5vdCBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRy
b2wKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9tYXhfZGF0YV9yZXRyYW5zbWl0KHNlbGYpOgorICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgYXJ0
aWZpY2lhbGx5IHJhaXNlIHJlY2VpdmVkIGRhdGEgY291bnRlcgorICAgICAgICAgICAgY2xpZW50
Ll9sb2NhbF9tYXhfZGF0YV91c2VkID0gY2xpZW50Ll9sb2NhbF9tYXhfZGF0YQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuX3JlbW90ZV9tYXhfZGF0YSwgMTA0ODU3NikKKwor
ICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBzZW50IGFuZCBsb3N0CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2xpZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAyMDk3MTUyKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuX3JlbW90ZV9tYXhfZGF0YSwgMTA0ODU3NikKKworICAgICAg
ICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBhY2tlZAorICAgICAgICAgICAg
Y2xpZW50Ll9vbl9tYXhfZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NUKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2xvY2FsX21heF9kYXRhX3NlbnQsIDAp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgxLCAxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVfbWF4
X2RhdGEsIDIwOTcxNTIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9zdHJlYW1fZGF0YV9yZXRy
YW5zbWl0KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rpb25hbCBz
dHJlYW0gMAorICAgICAgICAgICAgc3RyZWFtID0gY2xpZW50Ll9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZD0wKQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoMCwgYiJoZWxsbyIp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9j
YWwsIDEwNDg1NzYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWxfc2VudCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIHNl
cnZlciBzZW5kcyBkYXRhLCBqdXN0IGJlZm9yZSByYWlzaW5nIE1BWF9TVFJFQU1fREFUQQorICAg
ICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMCwgYiJaIiAqIDUyNDI4OCkgICMgMTA0
ODU3NiAvLyAyCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICAg
ICAgcm91bmR0cmlwKHNlcnZlciwgY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYp
CisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIG9uZSBtb3JlIGJ5dGUKKyAgICAgICAgICAg
IHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiWiIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKworICAgICAgICAgICAgIyBNQVhf
U1RSRUFNX0RBVEEgaXMgc2VudCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkcm9wKGNsaWVudCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKyAgICAgICAg
ICAgIGNsaWVudC5fb25fbWF4X3N0cmVhbV9kYXRhX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRl
LkxPU1QsIHN0cmVhbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9z
dHJlYW1fZGF0YV9sb2NhbCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50LCAwKQorCisgICAgICAgICAgICAjIE1B
WF9EQVRBIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwgMjA5NzE1MikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9z
ZW50LCAyMDk3MTUyKQorCisgICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgorICAgICAgICB3
aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
IGNvbnN1bWVfZXZlbnRzKGNsaWVudCkKKworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcGlu
Zywgc2VydmVyIEFDS3MgaXQKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3BpbmcodWlkPTEyMzQ1
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIp
LCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2hlY2sgZXZlbnQKKyAgICAgICAgICAgIGV2ZW50
ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGV2ZW50KSwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50LnVpZCwgMTIzNDUpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfcmV0cmFu
c21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCisKKyAgICAgICAg
ICAgICMgY2xpZW50IHNlbmRzIGFub3RoZXIgcGluZywgUElORyBpcyBsb3N0CisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgICAgICAgICAjIFBJTkcgaXMgcmV0cmFuc21pdHRl
ZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fcGluZ19kZWxpdmVyeShRdWljRGVs
aXZlcnlTdGF0ZS5MT1NULCAoMTIzNDUsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNoZWNr
IGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVkZ2Vk
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX2JpZGkoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjcmVhdGUgc3RyZWFtcworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTI4
KToKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQgPSBpICogNAorICAgICAgICAgICAgICAgIGNs
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2Jp
ZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1z
X2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlw
KGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBvbmUgdG9v
IG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJlYW1faWQgPSAxMjggKiA0
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19i
bG9ja2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1z
X2Jsb2NrZWRfYmlkaSksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGll
bnQuX3N0cmVhbXNfYmxvY2tlZF91bmkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgcGVl
ciByYWlzZXMgbWF4IHN0cmVhbXMKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJl
YW1zX2JpZGlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwK
KyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI5KSksCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtc1tz
dHJlYW1faWRdLmlzX2Jsb2NrZWQpCisKKyAgICBkZWYgdGVzdF9zZW5kX3N0cmVhbV9kYXRhX292
ZXJfbWF4X3N0cmVhbXNfdW5pKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
ID0gaSAqIDQgKyAyCisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIiIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0
cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfYmlkaSksIDApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF91bmkpLCAwKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMCwgMCkp
CisKKyAgICAgICAgICAgICMgY3JlYXRlIG9uZSB0b28gbWFueSAtPiBTVFJFQU1TX0JMT0NLRUQK
KyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEyOCAqIDQgKyAyCisgICAgICAgICAgICBjbGllbnQu
c2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfYmlkaSksIDApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF91
bmkpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBz
ZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgcGVlciByYWlzZXMgbWF4IHN0cmVhbXMK
KyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAgICAgICAgICAgQnVmZmVy
KGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9wZWVyX2luaXRpYXRlZChzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIHNlcnZlciBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtCisgICAgICAgICAg
ICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgxLCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDEpKQorCisgICAgICAg
ICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAg
c2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMywgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAg
ICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xp
ZW50LnNlbmRfc3RyZWFtX2RhdGEoMCwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAg
IyBjbGllbnQgc2VuZHMgZGF0YSBvbiBzZXJ2ZXItaW5pdGlhdGVkIGJpZGlyZWN0aW9uYWwgc3Ry
ZWFtCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgxLCBiImhlbGxvIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEs
IDEpKQorCisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGUgdW5pZGlyZWN0aW9uYWwgc3RyZWFt
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgyLCBiImhlbGxvIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEp
KQorCisgICAgICAgICAgICAjIGNsaWVudCB0cmllcyB0byBzZW5kIGRhdGEgb24gc2VydmVyLWlu
aXRpYWwgdW5pZGlyZWN0aW9uYWwgc3RyZWFtCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0
cmVhbV9kYXRhKDMsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAiQ2Fubm90
IHNlbmQgZGF0YSBvbiBwZWVyLWluaXRpYXRlZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNsaWVudCB0cmllcyB0byBzZW5kIGRhdGEgb24g
dW5rbm93biBzZXJ2ZXItaW5pdGlhdGVkIGJpZGlyZWN0aW9uYWwgc3RyZWFtCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDUsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkNhbm5v
dCBzZW5kIGRhdGEgb24gdW5rbm93biBwZWVyLWluaXRpYXRlZCBzdHJlYW0iCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9zdHJlYW1fZGlyZWN0aW9uKHNlbGYpOgorICAgICAgICB3aXRo
IGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIGZv
ciBvZmYgaW4gWzAsIDQsIDhdOgorICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwg
QmlkaXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0
cmVhbV9jYW5fcmVjZWl2ZShvZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShj
bGllbnQuX3N0cmVhbV9jYW5fc2VuZChvZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fcmVjZWl2ZShvZmYpKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYpKQorCisgICAgICAgICAg
ICAgICAgIyBTZXJ2ZXItSW5pdGlhdGVkLCBCaWRpcmVjdGlvbmFsCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChvZmYg
KyAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2Fu
X3JlY2VpdmUob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZl
ci5fc3RyZWFtX2Nhbl9zZW5kKG9mZiArIDEpKQorCisgICAgICAgICAgICAgICAgIyBDbGllbnQt
SW5pdGlhdGVkLCBVbmlkaXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9zZW5kKG9mZiArIDIpKQorICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fcmVjZWl2ZShvZmYg
KyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFtX2Nh
bl9zZW5kKG9mZiArIDIpKQorCisgICAgICAgICAgICAgICAgIyBTZXJ2ZXItSW5pdGlhdGVkLCBV
bmlkaXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0
cmVhbV9jYW5fcmVjZWl2ZShvZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9zZW5kKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9zZW5kKG9mZiAr
IDMpKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlhdGlvbl9mYWlsKHNlbGYpOgorICAg
ICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAj
IG5vIGNvbW1vbiB2ZXJzaW9uLCBubyByZXRyeQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRh
Z3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAg
ICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJfY2lkLAorICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICAgICAgc3VwcG9y
dGVkX3ZlcnNpb25zPVsweEZGMDAwMDExXSwgICMgRFJBRlRfMTYKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICBTRVJWRVJfQUREUiwKKyAgICAgICAgICAgIG5vdz10aW1lLnRpbWUoKSwKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAg
ICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0eXBlKGV2ZW50KSwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV2ZW50LmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuSU5URVJOQUxfRVJS
T1IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50LnJlYXNvbl9waHJhc2Us
ICJDb3VsZCBub3QgZmluZCBhIGNvbW1vbiBwcm90b2NvbCB2ZXJzaW9uIgorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF92ZXJzaW9uX25lZ290aWF0aW9uX29rKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAjIGZvdW5kIGEg
Y29tbW9uIHZlcnNpb24sIHJldHJ5CisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKAor
ICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAgICAgICAgICAg
ICAgICBzb3VyY2VfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25fY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVy
c2lvbnM9W2NsaWVudC5fdmVyc2lvbl0sCisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VS
VkVSX0FERFIsCisgICAgICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEpCisKKworY2xhc3MgUXVpY05ldHdv
cmtQYXRoVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY2FuX3NlbmQoc2VsZik6CisgICAg
ICAgIHBhdGggPSBRdWljTmV0d29ya1BhdGgoKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocGF0aC5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgIyBpbml0aWFsbHks
IGNhbm5vdCBzZW5kIGFueSBkYXRhCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9z
ZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguY2FuX3NlbmQoMSkpCisKKyAg
ICAgICAgIyByZWNlaXZlIHNvbWUgZGF0YQorICAgICAgICBwYXRoLmJ5dGVzX3JlY2VpdmVkICs9
IDEKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGF0aC5jYW5fc2VuZCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQo
MykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGF0aC5jYW5fc2VuZCg0KSkKKworICAgICAg
ICAjIHNlbmQgc29tZSBkYXRhCisgICAgICAgIHBhdGguYnl0ZXNfc2VudCArPSAzCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHBhdGguY2FuX3NlbmQoMSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jcnlwdG8ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDI0ZTRkY2Y1ZTE4ZTQ3MDI0NTBkMWJlYmY0OWRmZmMyMTNlNjJkNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2NyeXB0by5weQpAQCAtMCwwICsxLDMxOSBA
QAoraW1wb3J0IGJpbmFzY2lpCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgc2tpcElm
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlcgorZnJvbSBhaW9xdWljLnF1aWMu
Y3J5cHRvIGltcG9ydCAoCisgICAgSU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgQ3J5cHRvRXJy
b3IsCisgICAgQ3J5cHRvUGFpciwKKyAgICBkZXJpdmVfa2V5X2l2X2hwLAorKQorZnJvbSBhaW9x
dWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfRklYRURfQklULCBRdWljUHJvdG9jb2xWZXJz
aW9uCitmcm9tIGFpb3F1aWMudGxzIGltcG9ydCBDaXBoZXJTdWl0ZQorCitmcm9tIC51dGlscyBp
bXBvcnQgU0tJUF9URVNUUworCitQUk9UT0NPTF9WRVJTSU9OID0gUXVpY1Byb3RvY29sVmVyc2lv
bi5EUkFGVF8yNQorCitDSEFDSEEyMF9DTElFTlRfUEFDS0VUX05VTUJFUiA9IDIKK0NIQUNIQTIw
X0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgImUxZmYwMDAw
MTYwODgwYjU3YzdiNzBkODUyNGIwODUwZmMyYTI4ZTI0MGZkNzY0MDE3MDAwMiIKKykKK0NIQUNI
QTIwX0NMSUVOVF9QTEFJTl9QQVlMT0FEID0gYmluYXNjaWkudW5oZXhsaWZ5KCIwMjAxMDAwMDAw
IikKK0NIQUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICJlOGZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1MjRiMDg1MGZjMmEyOGUyNDBmZDc2NDAx
NzgzMTNiMDRiZTk4NDQ5IgorICAgICJlYjEwNTY3ZTI1Y2U5MzAzODFmMmE1YjdkYTJkYjhkYiIK
KykKKworTE9OR19DTElFTlRfUEFDS0VUX05VTUJFUiA9IDIKK0xPTkdfQ0xJRU5UX1BMQUlOX0hF
QURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiYzNmZjAwMDAxNzA4ODM5NGM4ZjAzZTUx
NTcwODAwMDA0NDllMDAwMDAwMDIiCispCitMT05HX0NMSUVOVF9QTEFJTl9QQVlMT0FEID0gYmlu
YXNjaWkudW5oZXhsaWZ5KAorICAgICIwNjAwNDBjNDAxMDAwMGMwMDMwMzY2NjAyNjFmZjk0N2Nl
YTQ5Y2NlNmNmYWQ2ODdmNDU3Y2YxYjE0NTMxYmExIgorICAgICI0MTMxYTBlOGYzMDlhMWQwYjlj
NDAwMDAwNjEzMDExMzAzMTMwMjAxMDAwMDkxMDAwMDAwMGIwMDA5MDAwMDA2IgorICAgICI3MzY1
NzI3NjY1NzJmZjAxMDAwMTAwMDAwYTAwMTQwMDEyMDAxZDAwMTcwMDE4MDAxOTAxMDAwMTAxMDEw
MjAxIgorICAgICIwMzAxMDQwMDIzMDAwMDAwMzMwMDI2MDAyNDAwMWQwMDIwNGNmZGZjZDE3OGI3
ODRiZjMyOGNhZTc5M2IxMzZmIgorICAgICIyYWVkY2UwMDVmZjE4M2Q3YmIxNDk1MjA3MjM2NjQ3
MDM3MDAyYjAwMDMwMjAzMDQwMDBkMDAyMDAwMWUwNDAzIgorICAgICIwNTAzMDYwMzAyMDMwODA0
MDgwNTA4MDYwNDAxMDUwMTA2MDEwMjAxMDQwMjA1MDIwNjAyMDIwMjAwMmQwMDAyIgorICAgICIw
MTAxMDAxYzAwMDI0MDAxIgorKSArIGJ5dGVzKDk2MikKK0xPTkdfQ0xJRU5UX0VOQ1JZUFRFRF9Q
QUNLRVQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgImMwZmYwMDAwMTcwODgzOTRjOGYwM2U1
MTU3MDgwMDAwNDQ5ZTNiMzQzYWE4NTM1MDY0YTQyNjhhMGQ5ZDdiMWMiCisgICAgIjlkMjUwYWUz
NTUxNjIyNzZlOWIxZTMwMTFlZjZiYmMwYWI0OGFkNWJjYzI2ODFlOTUzODU3Y2E2MmJlY2Q3NTIi
CisgICAgIjRkYWFjNDczZTY4ZDc0MDVmYmJhNGU5ZWU2MTZjODcwMzhiZGJlOTA4YzA2ZDk2MDVk
OWFjNDkwMzAzNTllZWMiCisgICAgImIxZDA1YTE0ZTExN2RiOGNlZGUyYmIwOWQwZGJiZmVlMjcx
Y2IzNzRkOGYxMGFiZWM4MmQwZjU5YTFkZWUyOWYiCisgICAgImU5NTYzOGVkOGRkNDFkYTA3NDg3
NDY4NzkxYjcxOWM1NWM0Njk2OGViM2I1NDY4MDAzNzEwMmEyOGU1M2RjMWQiCisgICAgIjEyOTAz
ZGIwYWY1ODIxNzk0YjQxYzRhOTMzNTdmYTU5Y2U2OWNmZTdmNmJkZmE2MjllZWY3ODYxNjQ0N2Ux
ZDYiCisgICAgIjExYzRiYWY3MWJmMzNmZWJjYjAzMTM3YzJjNzVkMjUzMTdkM2UxM2I2ODQzNzBm
NjY4NDExYzBmMDAzMDRiNTAiCisgICAgIjFjOGZkNDIyYmQ5YjlhZDgxZDY0M2IyMGRhODljYTA1
MjVkMjRkMmIxNDIwNDFjYWUwYWYyMDUwOTJlNDMwMDgiCisgICAgIjBjZDg1NTllYTRjNWM2ZTRm
YTNmNjYwODJiN2QzMDNlNTJjZTAxNjJiYWE5NTg1MzJiMGJiYzJiYzc4NTY4MWYiCisgICAgImNm
Mzc0ODVkZmY2NTk1ZTAxZTczOWM4YWM5ZWZiYTMxYjk4NWQ1ZjY1NmNjMDkyNDMyZDc4MWRiOTUy
MjE3MjQiCisgICAgIjg3NjQxYzRkM2FiOGVjZTAxZTM5YmM4NWIxNTQzNjYxNDc3NWE5OGJhOGZh
MTJkNDZmOWIzNWUyYTU1ZWI3MmQiCisgICAgIjdmODUxODFhMzY2NjYzMzg3ZGRjMjA1NTE4MDdl
MDA3NjczYmQ3ZTI2YmY5YjI5YjVhYjEwYTFjYTg3Y2JiN2EiCisgICAgImQ5N2U5OWViNjY5NTlj
MmE5YmMzY2JkZTQ3MDdmZjc3MjBiMTEwZmE5NTM1NDY3NGUzOTU4MTJlNDdhMGFlNTMiCisgICAg
ImI0NjRkY2IyZDFmMzQ1ZGYzNjBkYzIyNzI3MGM3NTA2NzZmNjcyNGViNDc5ZjBkMmZiYjYxMjQ0
Mjk5OTA0NTciCisgICAgImFjNmM5MTY3ZjQwYWFiNzM5OTk4ZjM4YjllY2NiMjRmZDQ3Yzg0MTAx
MzFiZjY1YTUyYWY4NDEyNzVkNWIzZDEiCisgICAgIjg4MGIxOTdkZjJiNWRlYTNlNmRlNTZlYmNl
M2ZmYjZlOTI3N2E4MjA4MmY4ZDk2NzdhNjc2NzA4OWI2NzFlYmQiCisgICAgIjI0NGMyMTRmMGJk
ZTk1YzJiZWIwMmNkMTE3MmQ1OGJkZjM5ZGNlNTZmZjY4ZWIzNWFiMzliNDliNGVhYzdjODEiCisg
ICAgIjVlYTYwNDUxZDZlNmFiODIxMTkxMThkZjAyYTU4Njg0NGE5ZmZlMTYyYmEwMDZkMDY2OWVm
NTc2NjhjYWIzOGIiCisgICAgIjYyZjcxYTI1MjNhMDg0ODUyY2QxZDA3OWIzNjU4ZGMyZjNlODc5
NDliNTUwYmFiM2UxNzdjZmM0OWVkMTkwZGYiCisgICAgImYwNjMwZTQzMDc3YzMwZGU4ZjZhZTA4
MTUzN2YxZTgzZGE1MzdkYTk4MGFmYTY2OGU3YjdmYjI1MzAxY2Y3NDEiCisgICAgIjUyNGJlM2M0
OTg4NGI0MjgyMWYxNzU1MmZiZDE5MzFhODEzMDE3YjZiNjU5MGE0MWVhMThiNmJhNDljZDQ4YTQi
CisgICAgIjQwYmQ5YTMzNDZhNzYyM2ZiNGJhMzRhM2VlNTcxZTNjNzMxZjM1YTdhM2NmMjViNTUx
YTY4MGZhNjg3NjM1MDciCisgICAgImI3ZmRlM2FhZjAyM2M1MGI5ZDIyZGE2ODc2YmEzMzdlYjVl
OWRkOWVjM2RhZjk3MDI0MmI2YzVhYWIzYWE0YjIiCisgICAgIjk2YWQ4YjlmNjgzMmY2ODZlZjcw
ZmE5MzhiMzFiNGU1ZGRkNzM2NDQ0MmQzZWE3MmU3M2Q2NjhmYjA5Mzc3OTYiCisgICAgImY0NjI5
MjNhODFhNDdlMWNlZTc0MjZmZjZkOTIyMTI2OWI1YTYyZWMwM2Q2ZWM5NGQxMjYwNmNiNDg1NTYw
YmEiCisgICAgImI1NzQ4MTYwMDllOTY1MDQyNDkzODViYjYxYTgxOWJlMDRmNjJjMjA2NjIxNGQ4
MzYwYTIwMjJiZWIzMTYyNDAiCisgICAgImI2YzdkNzhiYmU1NmMxMzA4MmUwY2EyNzI2NjEyMTBh
YmYwMjBiZjNiNTc4M2YxNDI2NDM2Y2Y5ZmY0MTg0MDUiCisgICAgIjkzYTVkMDYzOGQzMmZjNTFj
NWM2NWZmMjkxYTNhN2E1MmZkNjc3NWU2MjNhNDQzOWNjMDhkZDI1NTgyZmViYzkiCisgICAgIjQ0
ZWY5MmQ4ZGJkMzI5YzkxZGUzZTljOTU4MmU0MWYxN2YzZDE4NmYxMDRhZDNmOTA5OTUxMTZjNjgy
YTJhMTQiCisgICAgImEzYjRiMWY1NDdjMzM1ZjBiZTcxMGZjOWZjMDNlMGU1ODdiOGNkYTMxY2U2
NWI5Njk4NzhhNGFkNDI4M2U2ZDUiCisgICAgImIwMzczZjQzZGE4NmU5ZTBmZmUxYWUwZmRkZDM1
MTYyNTViZDc0NTY2ZjM2YTM4NzAzZDVmMzQyNDlkZWQxZjYiCisgICAgIjZiM2Q5YjQ1YjlhZjJj
Y2ZlZmU5ODRlMTMzNzZiMWIyYzY0MDRhYTQ4YzgwMjYxMzIzNDNkYTNmM2EzMzY1OWUiCisgICAg
ImMxYjNlOTUwODA1NDBiMjhiN2YzZmNkMzVmYTVkODQzYjU3OWE4NGMwODkxMjFhNjBkOGMxNzU0
OTE1YzM0NGUiCisgICAgImVhZjQ1YTliZjI3ZGMwYzFlNzg0MTYxNjkxMjIwOTEzMTNlYjBlODc1
NTVhYmQ3MDY2MjZlNTU3ZmMzNmEwNGYiCisgICAgImNkMTkxYTU4ODI5MTA0ZDYwNzVjNTU5NGY2
MjdjYTUwNmJmMTgxZGFlYzk0MGY0YTRmM2FmMDA3NGVlZTg5ZGEiCisgICAgImFjZGU2NzU4MzEy
NjIyZDRmYTY3NWIzOWY3MjhlMDYyZDJiZWU2ODBkOGY0MWE1OTdjMjYyNjQ4YmIxOGJjZmMiCisg
ICAgIjEzYzhiM2Q5N2IxYTc3YjJhYzNhZjc0NWQ2MWEzNGNjNDcwOTg2NWJhYzgyNGE5NGJiMTkw
NTgwMTVlNGU0MmQiCisgICAgImM5YmU2Yzc4MDM1NjczMjE4MjlkZDg1ODUzMzk2MjY5IgorKQor
CitMT05HX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMQorTE9OR19TRVJWRVJfUExBSU5fSEVBREVS
ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjMWZmMDAwMDE3MDAwOGYwNjdhNTUwMmE0MjYy
YjUwMDQwNzQwMDAxIgorKQorTE9OR19TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAiMGQwMDAwMDAwMDE4NDEwYTAyMDAwMDU2MDMwM2VlZmNlN2Y3YjM3YmEx
ZDE2MzJlOTY2Nzc4MjVkZGY3Mzk4OCIKKyAgICAiY2ZjNzk4MjVkZjU2NmRjNTQzMGI5YTA0NWEx
MjAwMTMwMTAwMDAyZTAwMzMwMDI0MDAxZDAwMjA5ZDNjOTQwZCIKKyAgICAiODk2OTBiODRkMDhh
NjA5OTNjMTQ0ZWNhNjg0ZDEwODEyODdjODM0ZDUzMTFiY2YzMmJiOWRhMWEwMDJiMDAwMiIKKyAg
ICAiMDMwNCIKKykKK0xPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgImM5ZmYwMDAwMTcwMDA4ZjA2N2E1NTAyYTQyNjJiNTAwNDA3NDE2OGJmMjJi
NzAwMjU5NmY5OWFlNjdhYmY2NWEiCisgICAgIjU4NTJmNTRmNThjMzdjODA4NjgyZTJlNDA0OTJk
OGEzODk5ZmIwNGZjMGFmZTlhYWJjODc2N2IxOGEwYWE0OTMiCisgICAgIjUzNzQyNjM3M2I0OGQ1
MDIyMTRkZDg1NmQ2M2I3OGNlZTM3YmM2NjRiM2ZlODZkNDg3YWM3YTc3YzUzMDM4YTMiCisgICAg
ImNkMzJmMGI1MDA0ZDlmNTc1NGM0ZjdmMmQxZjM1Y2YzZjcxMTYzNTFjOTJiOWNmOWJiNmQwOTFk
ZGZjOGIzMmQiCisgICAgIjQzMjM0OGEyYzQxMyIKKykKKworU0hPUlRfU0VSVkVSX1BBQ0tFVF9O
VU1CRVIgPSAzCitTSE9SVF9TRVJWRVJfUExBSU5fSEVBREVSID0gYmluYXNjaWkudW5oZXhsaWZ5
KCI0MWIwMWZkMjRhNTg2YTljZjMwMDAzIikKK1NIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICIwNjAwMzkwNDAwMDAzNTAwMDE1MTgwNWE0YmViZjUw
MDAwMjBiMDk4YzhkYzQxODNlNGMxODI1NzJlMTBhYzNlIgorICAgICIyYjg4ODk3ZTA1MjRjODQ2
MTg0NzU0OGJkMmRmZmEyYzBhZTYwMDA4MDAyYTAwMDRmZmZmZmZmZiIKKykKK1NIT1JUX1NFUlZF
Ul9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICI1ZGIwMWZkMjRh
NTg2YTljZjMzZGVjMDk0YWFlYzZkNmI0YjdhNWUxNWY1YTNmMDVkMDZjZjFhZDAzNTVjMTlkIgor
ICAgICJjY2UwODA3ZWVjZjdiZjFjODQ0YTY2ZTFlY2QxZjc0YjJhMmQ2OWJmZDI1ZDIxNzgzM2Vk
ZDk3MzI0NjU5N2JkIgorICAgICI1MTA3ZWExNWNiMWUyMTAwNDUzOTZhZmE2MDJmZTIzNDMyZjRh
YjI0Y2UyNTFiIgorKQorCisKK2NsYXNzIENyeXB0b1Rlc3QoVGVzdENhc2UpOgorICAgICIiIgor
ICAgIFRlc3QgdmVjdG9ycyBmcm9tOgorCisgICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L2RyYWZ0LWlldGYtcXVpYy10bHMtMTgjYXBwZW5kaXgtQQorICAgICIiIgorCisgICAgZGVmIGNy
ZWF0ZV9jcnlwdG8oc2VsZiwgaXNfY2xpZW50KToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIo
KQorICAgICAgICBwYWlyLnNldHVwX2luaXRpYWwoCisgICAgICAgICAgICBjaWQ9YmluYXNjaWku
dW5oZXhsaWZ5KCI4Mzk0YzhmMDNlNTE1NzA4IiksCisgICAgICAgICAgICBpc19jbGllbnQ9aXNf
Y2xpZW50LAorICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NPTF9WRVJTSU9OLAorICAgICAgICAp
CisgICAgICAgIHJldHVybiBwYWlyCisKKyAgICBkZWYgdGVzdF9kZXJpdmVfa2V5X2l2X2hwKHNl
bGYpOgorICAgICAgICAjIGNsaWVudAorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxp
ZnkoCisgICAgICAgICAgICAiOGEzNTE1YTE0YWUzYzMxYjljMmQ2ZDViYzU4NTM4Y2E1Y2QyYmFh
MTE5MDg3MTQzZTYwODg3NDI4ZGNiNTJmNiIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBo
cCA9IGRlcml2ZV9rZXlfaXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOThiMGQ3ZTVlN2E0
MDJjNjdjMzNmMzUwZmE2NWVhNTQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmlu
YXNjaWkudW5oZXhsaWZ5KCIxOWU5NDM4NzgwNWViMGI0NmMwM2E3ODgiKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChocCwgYmluYXNjaWkudW5oZXhsaWZ5KCIwZWRkOTgyYTZhYzUyN2YyZWRk
Y2JiNzM0OGRlYTVkNyIpKQorCisgICAgICAgICMgc2VydmVyCisgICAgICAgIHNlY3JldCA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICI0N2IyZWFlYTZjMjY2ZTMyYzA2OTdhOWUy
YTg5OGJkZjVjNGZiM2U1YWMzNGYwZTU0OWJmMmM1ODU4MWEzODExIgorICAgICAgICApCisgICAg
ICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9pdl9ocChJTklUSUFMX0NJUEhFUl9TVUlURSwg
c2VjcmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleSwgYmluYXNjaWkudW5oZXhsaWZ5
KCI5YThiZTkwMmE5YmRkOTFkMTYwNjRjYTExODA0NWZiNCIpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGl2LCBiaW5hc2NpaS51bmhleGxpZnkoIjBhODIwODZkMzIyMDViYTIyMjQxZDhkYyIp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhwLCBiaW5hc2NpaS51bmhleGxpZnkoIjk0Yjk0
NTJkMmIzYzdjN2Y2ZGE3ZmRkODU5MzUzN2ZkIikpCisKKyAgICBAc2tpcElmKCJjaGFjaGEyMCIg
aW4gU0tJUF9URVNUUywgIlNraXBwaW5nIGNoYWNoYTIwIHRlc3RzIikKKyAgICBkZWYgdGVzdF9k
ZWNyeXB0X2NoYWNoYTIwKHNlbGYpOgorICAgICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAg
ICAgIHBhaXIucmVjdi5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1DaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJiNDI3NzJkZjMzYzk3MTlhMzI4MjBkMzAyYWE2
NjRkMDgwZDdmNWVhN2E3MWEzMzBmODc4NjRjYjI4OWFlOGMwIgorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAgICAg
IHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVjcnlw
dF9wYWNrZXQoCisgICAgICAgICAgICBDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCwg
MjUsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX2hlYWRlciwg
Q0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
bGFpbl9wYXlsb2FkLCBDSEFDSEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYWNrZXRfbnVtYmVyLCBDSEFDSEEyMF9DTElFTlRfUEFDS0VUX05VTUJF
UikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19jbGllbnQoc2VsZik6CisgICAgICAgIHBh
aXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIHBsYWlu
X2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVjcnlwdF9wYWNr
ZXQoCisgICAgICAgICAgICBMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VULCAxOCwgMAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBMT05HX0NMSUVO
VF9QTEFJTl9IRUFERVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwg
TE9OR19DTElFTlRfUExBSU5fUEFZTE9BRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNr
ZXRfbnVtYmVyLCBMT05HX0NMSUVOVF9QQUNLRVRfTlVNQkVSKQorCisgICAgZGVmIHRlc3RfZGVj
cnlwdF9sb25nX3NlcnZlcihzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0
byhpc19jbGllbnQ9VHJ1ZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9OR19T
RVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBsYWluX2hlYWRlciwgTE9OR19TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfU0VSVkVSX1BMQUlOX1BBWUxP
QUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19TRVJWRVJf
UEFDS0VUX05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbm9fa2V5KHNlbGYpOgorICAg
ICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q3J5cHRvRXJyb3IpOgorICAgICAgICAgICAgcGFpci5kZWNyeXB0X3BhY2tldChMT05HX1NFUlZF
Ul9FTkNSWVBURURfUEFDS0VULCAxOCwgMCkKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfc2hvcnRf
c2VydmVyKHNlbGYpOgorICAgICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAgICAgIHBhaXIu
cmVjdi5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlU
RSwKKyAgICAgICAgICAgIHNlY3JldD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAg
ICAgIjMxMDI4MTk3N2NiOGMxYzFjMTIxMmQ3ODRiMmQyOWU1YTY0ODllMjNkZTg0OGQzNzBhNWEy
Zjk1MzdmM2ExMDAiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NP
TF9WRVJTSU9OLAorICAgICAgICApCisKKyAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgIFNI
T1JUX1NFUlZFUl9FTkNSWVBURURfUEFDS0VULCA5LCAwCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIFNIT1JUX1NFUlZFUl9QTEFJTl9IRUFERVIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgU0hPUlRfU0VSVkVSX1BMQUlO
X1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgU0hPUlRf
U0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBAc2tpcElmKCJjaGFjaGEyMCIgaW4gU0tJUF9U
RVNUUywgIlNraXBwaW5nIGNoYWNoYTIwIHRlc3RzIikKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2No
YWNoYTIwKHNlbGYpOgorICAgICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAgICAgIHBhaXIu
c2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1DaXBoZXJTdWl0ZS5DSEFDSEEy
MF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgICAgICJiNDI3NzJkZjMzYzk3MTlhMzI4MjBkMzAyYWE2NjRkMDgwZDdm
NWVhN2E3MWEzMzBmODc4NjRjYjI4OWFlOGMwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
IHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAgICAgIHBhY2tldCA9
IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBDSEFDSEEyMF9DTElFTlRfUExBSU5f
SEVBREVSLAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX1BBWUxPQUQsCisgICAg
ICAgICAgICBDSEFDSEEyMF9DTElFTlRfUEFDS0VUX05VTUJFUiwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgQ0hBQ0hBMjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNL
RVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xvbmdfY2xpZW50KHNlbGYpOgorICAgICAgICBw
YWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1UcnVlKQorCisgICAgICAgIHBhY2tl
dCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBMT05HX0NMSUVOVF9QTEFJTl9I
RUFERVIsCisgICAgICAgICAgICBMT05HX0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAg
ICAgTE9OR19DTElFTlRfUEFDS0VUX05VTUJFUiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBhY2tldCwgTE9OR19DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCkKKworICAgIGRl
ZiB0ZXN0X2VuY3J5cHRfbG9uZ19zZXJ2ZXIoc2VsZik6CisgICAgICAgIHBhaXIgPSBzZWxmLmNy
ZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5j
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBMT05HX1NFUlZFUl9QTEFJTl9IRUFERVIsCisgICAg
ICAgICAgICBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgTE9OR19TRVJW
RVJfUEFDS0VUX05VTUJFUiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
Y2tldCwgTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCkKKworICAgIGRlZiB0ZXN0X2VuY3J5
cHRfc2hvcnRfc2VydmVyKHNlbGYpOgorICAgICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAg
ICAgIHBhaXIuc2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1JTklUSUFMX0NJ
UEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjMxMDI4MTk3N2NiOGMxYzFjMTIxMmQ3ODRiMmQyOWU1YTY0ODllMjNkZTg0
OGQzNzBhNWEyZjk1MzdmM2ExMDAiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lv
bj1QUk9UT0NPTF9WRVJTSU9OLAorICAgICAgICApCisKKyAgICAgICAgcGFja2V0ID0gcGFpci5l
bmNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgIFNIT1JUX1NFUlZFUl9QTEFJTl9IRUFERVIsCisg
ICAgICAgICAgICBTSE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIFNIT1JU
X1NFUlZFUl9QQUNLRVRfTlVNQkVSLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFja2V0LCBTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCkKKworICAgIGRlZiB0ZXN0
X2tleV91cGRhdGUoc2VsZik6CisgICAgICAgIHBhaXIxID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICBwYWlyMiA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGll
bnQ9RmFsc2UpCisKKyAgICAgICAgZGVmIGNyZWF0ZV9wYWNrZXQoa2V5X3BoYXNlLCBwYWNrZXRf
bnVtYmVyKToKKyAgICAgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDApCisgICAgICAg
ICAgICBidWYucHVzaF91aW50OChQQUNLRVRfRklYRURfQklUIHwga2V5X3BoYXNlIDw8IDIgfCAx
KQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYmluYXNjaWkudW5oZXhsaWZ5KCI4Mzk0Yzhm
MDNlNTE1NzA4IikpCisgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFja2V0X251bWJlcikK
KyAgICAgICAgICAgIHJldHVybiBidWYuZGF0YSwgYiJceDAwXHgwMVx4MDJceDAzIgorCisgICAg
ICAgIGRlZiBzZW5kKHNlbmRlciwgcmVjZWl2ZXIsIHBhY2tldF9udW1iZXI9MCk6CisgICAgICAg
ICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQgPSBjcmVhdGVfcGFja2V0KAorICAgICAg
ICAgICAgICAgIGtleV9waGFzZT1zZW5kZXIua2V5X3BoYXNlLCBwYWNrZXRfbnVtYmVyPXBhY2tl
dF9udW1iZXIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVuY3J5cHRlZCA9IHNlbmRlci5l
bmNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxv
YWQsIHBhY2tldF9udW1iZXIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJlY292X2hlYWRl
ciwgcmVjb3ZfcGF5bG9hZCwgcmVjb3ZfcGFja2V0X251bWJlciA9IHJlY2VpdmVyLmRlY3J5cHRf
cGFja2V0KAorICAgICAgICAgICAgICAgIGVuY3J5cHRlZCwgbGVuKHBsYWluX2hlYWRlcikgLSAy
LCAwCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY292X2hl
YWRlciwgcGxhaW5faGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9w
YXlsb2FkLCBwbGFpbl9wYXlsb2FkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNv
dl9wYWNrZXRfbnVtYmVyLCBwYWNrZXRfbnVtYmVyKQorCisgICAgICAgICMgcm91bmR0cmlwCisg
ICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAwKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwg
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGFpcjIua2V5X3BoYXNlLCAwKQorCisgICAgICAgICMgcGFpciAx
IGtleSB1cGRhdGUKKyAgICAgICAgcGFpcjEudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3Vu
ZHRyaXAKKyAgICAgICAgc2VuZChwYWlyMSwgcGFpcjIsIDEpCisgICAgICAgIHNlbmQocGFpcjIs
IHBhaXIxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMi5rZXlfcGhhc2UsIDEpCisKKyAgICAgICAg
IyBwYWlyIDIga2V5IHVwZGF0ZQorICAgICAgICBwYWlyMi51cGRhdGVfa2V5KCkKKworICAgICAg
ICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMikKKyAgICAgICAgc2Vu
ZChwYWlyMSwgcGFpcjIsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFpcjEua2V5X3Bo
YXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9waGFzZSwgMCkKKwor
ICAgICAgICAjIHBhaXIgMSBrZXkgLSB1cGRhdGUsIGJ1dCBub3QgbmV4dCB0byBzZW5kCisgICAg
ICAgIHBhaXIxLnVwZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNl
bmQocGFpcjIsIHBhaXIxLCAzKQorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFpcjIua2V5X3BoYXNlLCAxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfaDAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MWNjZjY1ZTExNzQ5OGNmZGQ1YjA3YmVkZTFmMDc2M2QxY2EyMGZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDAucHkKQEAgLTAsMCArMSwxNDggQEAKK2Zy
b20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9u
IGltcG9ydCBIMF9BTFBOLCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1w
b3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkCisKK2Zyb20gLnRlc3RfY29ubmVjdGlv
biBpbXBvcnQgY2xpZW50X2FuZF9zZXJ2ZXIsIHRyYW5zZmVyCisKKworZGVmIGgwX2NsaWVudF9h
bmRfc2VydmVyKCk6CisgICAgcmV0dXJuIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICBjbGll
bnRfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDBfQUxQTn0sCisgICAgICAgIHNlcnZlcl9v
cHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIMF9BTFBOfSwKKyAgICApCisKKworZGVmIGgwX3Ry
YW5zZmVyKHF1aWNfc2VuZGVyLCBoMF9yZWNlaXZlcik6CisgICAgcXVpY19yZWNlaXZlciA9IGgw
X3JlY2VpdmVyLl9xdWljCisgICAgdHJhbnNmZXIocXVpY19zZW5kZXIsIHF1aWNfcmVjZWl2ZXIp
CisKKyAgICAjIHByb2Nlc3MgUVVJQyBldmVudHMKKyAgICBodHRwX2V2ZW50cyA9IFtdCisgICAg
ZXZlbnQgPSBxdWljX3JlY2VpdmVyLm5leHRfZXZlbnQoKQorICAgIHdoaWxlIGV2ZW50IGlzIG5v
dCBOb25lOgorICAgICAgICBodHRwX2V2ZW50cy5leHRlbmQoaDBfcmVjZWl2ZXIuaGFuZGxlX2V2
ZW50KGV2ZW50KSkKKyAgICAgICAgZXZlbnQgPSBxdWljX3JlY2VpdmVyLm5leHRfZXZlbnQoKQor
ICAgIHJldHVybiBodHRwX2V2ZW50cworCisKK2NsYXNzIEgwQ29ubmVjdGlvblRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6CisgICAgICAgIHdpdGggaDBfY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAg
IGgwX2NsaWVudCA9IEgwQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgwX3Nl
cnZlciA9IEgwQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJl
cXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWls
YWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDBfY2xpZW50LnNlbmRfaGVhZGVycygKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpw
YXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIGgwX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iIiIsIGVu
ZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAg
ICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoMF9zZXJ2ZXIpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVudHMpLCAyKQorCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50c1swXS5oZWFk
ZXJzLCBbKGIiOm1ldGhvZCIsIGIiR0VUIiksIChiIjpwYXRoIiwgYiIvIildCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0
cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9l
bmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2
ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFd
LnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQorCisgICAgICAgICAgICAjIHNlbmQgcmVzcG9uc2UK
KyAgICAgICAgICAgIGgwX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgIChiImNv
bnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgwX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgZW5k
X3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVz
cG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoMF9j
bGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVudHMpLCAyKQorCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNS
ZWNlaXZlZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5oZWFkZXJz
LCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwg
c3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFt
X2VuZGVkLCBGYWxzZSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uo
ZXZlbnRzWzFdLCBEYXRhUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
dmVudHNbMV0uZGF0YSwgYiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVl
KQorCisgICAgZGVmIHRlc3RfaGVhZGVyc19vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGgwX2Ns
aWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6CisgICAgICAg
ICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgICAgICBo
MF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgc2Vu
ZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9h
dmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAgIGgwX2NsaWVudC5zZW5kX2hlYWRlcnMo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiSEVBRCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVu
ZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJl
cXVlc3QKKyAgICAgICAgICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoMF9z
ZXJ2ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVudHMpLCAyKQorCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNS
ZWNlaXZlZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50c1swXS5oZWFkZXJzLCBbKGIiOm1ldGhvZCIsIGIiSEVBRCIpLCAoYiI6cGF0aCIsIGIi
LyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNb
MF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgICAgICAgICAg
IyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9oZWFkZXJzKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVy
cz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAg
ICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIp
LAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAor
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVzcG9uc2UKKyAgICAgICAg
ICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoMF9jbGllbnQpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVudHMpLCAyKQorCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5oZWFkZXJzLCBbXSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRh
UmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBz
dHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1f
ZW5kZWQsIFRydWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNTUwMzk5YjRhMzAw
NmZkYjA4NmUyMzA5NGZlOTg5OGM1NDMxNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9oMy5weQpAQCAtMCwwICsxLDEyOTIgQEAKK2ltcG9ydCBiaW5hc2NpaQor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmJ1ZmZlciBpbXBv
cnQgZW5jb2RlX3VpbnRfdmFyCitmcm9tIGFpb3F1aWMuaDMuY29ubmVjdGlvbiBpbXBvcnQgKAor
ICAgIEgzX0FMUE4sCisgICAgRXJyb3JDb2RlLAorICAgIEZyYW1lVHlwZSwKKyAgICBGcmFtZVVu
ZXhwZWN0ZWQsCisgICAgSDNDb25uZWN0aW9uLAorICAgIFN0cmVhbVR5cGUsCisgICAgZW5jb2Rl
X2ZyYW1lLAorKQorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBI
ZWFkZXJzUmVjZWl2ZWQsIFB1c2hQcm9taXNlUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5oMy5leGNl
cHRpb25zIGltcG9ydCBOb0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5j
b25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMu
ZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRhUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dl
ciBpbXBvcnQgUXVpY0xvZ2dlcgorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVu
dF9hbmRfc2VydmVyLCB0cmFuc2ZlcgorCisKK2RlZiBoM19jbGllbnRfYW5kX3NlcnZlcigpOgor
ICAgIHJldHVybiBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJh
bHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5f
cHJvdG9jb2xzIjogSDNfQUxQTn0sCisgICAgKQorCisKK2RlZiBoM190cmFuc2ZlcihxdWljX3Nl
bmRlciwgaDNfcmVjZWl2ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoM19yZWNlaXZlci5fcXVp
YworICAgIGlmIGhhc2F0dHIocXVpY19zZW5kZXIsICJzdHJlYW1fcXVldWUiKToKKyAgICAgICAg
cXVpY19yZWNlaXZlci5fZXZlbnRzLmV4dGVuZChxdWljX3NlbmRlci5zdHJlYW1fcXVldWUpCisg
ICAgICAgIHF1aWNfc2VuZGVyLnN0cmVhbV9xdWV1ZS5jbGVhcigpCisgICAgZWxzZToKKyAgICAg
ICAgdHJhbnNmZXIocXVpY19zZW5kZXIsIHF1aWNfcmVjZWl2ZXIpCisKKyAgICAjIHByb2Nlc3Mg
UVVJQyBldmVudHMKKyAgICBodHRwX2V2ZW50cyA9IFtdCisgICAgZXZlbnQgPSBxdWljX3JlY2Vp
dmVyLm5leHRfZXZlbnQoKQorICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICBo
dHRwX2V2ZW50cy5leHRlbmQoaDNfcmVjZWl2ZXIuaGFuZGxlX2V2ZW50KGV2ZW50KSkKKyAgICAg
ICAgZXZlbnQgPSBxdWljX3JlY2VpdmVyLm5leHRfZXZlbnQoKQorICAgIHJldHVybiBodHRwX2V2
ZW50cworCisKK2NsYXNzIEZha2VRdWljQ29ubmVjdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29uZmlndXJhdGlvbik6CisgICAgICAgIHNlbGYuY2xvc2VkID0gTm9uZQorICAgICAgICBz
ZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuc3RyZWFtX3F1
ZXVlID0gW10KKyAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5fbmV4dF9z
dHJlYW1fYmlkaSA9IDAgaWYgY29uZmlndXJhdGlvbi5pc19jbGllbnQgZWxzZSAxCisgICAgICAg
IHNlbGYuX25leHRfc3RyZWFtX3VuaSA9IDIgaWYgY29uZmlndXJhdGlvbi5pc19jbGllbnQgZWxz
ZSAzCisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyID0gUXVpY0xvZ2dlcigpLnN0YXJ0X3RyYWNl
KAorICAgICAgICAgICAgaXNfY2xpZW50PWNvbmZpZ3VyYXRpb24uaXNfY2xpZW50LCBvZGNpZD1i
IiIKKyAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKHNlbGYsIGVycm9yX2NvZGUsIHJlYXNvbl9w
aHJhc2UpOgorICAgICAgICBzZWxmLmNsb3NlZCA9IChlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNl
KQorCisgICAgZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5pZGly
ZWN0aW9uYWw9RmFsc2UpOgorICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAg
ICAgIHN0cmVhbV9pZCA9IHNlbGYuX25leHRfc3RyZWFtX3VuaQorICAgICAgICAgICAgc2VsZi5f
bmV4dF9zdHJlYW1fdW5pICs9IDQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmVhbV9p
ZCA9IHNlbGYuX25leHRfc3RyZWFtX2JpZGkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFt
X2JpZGkgKz0gNAorICAgICAgICByZXR1cm4gc3RyZWFtX2lkCisKKyAgICBkZWYgbmV4dF9ldmVu
dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V2ZW50cy5w
b3AoMCkKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgZGVmIHNlbmRfc3RyZWFtX2RhdGEoc2VsZiwgc3RyZWFtX2lkLCBkYXRhLCBlbmRf
c3RyZWFtPUZhbHNlKToKKyAgICAgICAgIyBjaG9wIHVwIGRhdGEgaW50byBpbmRpdmlkdWFsIGJ5
dGVzCisgICAgICAgIGZvciBjIGluIGRhdGE6CisgICAgICAgICAgICBzZWxmLnN0cmVhbV9xdWV1
ZS5hcHBlbmQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAg
ICAgICAgICAgICBkYXRhPWJ5dGVzKFtjXSksIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD1z
dHJlYW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGlmIGVu
ZF9zdHJlYW06CisgICAgICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZS5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBlbmRfc3RyZWFtPWVuZF9zdHJl
YW0sIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICApCisKKworY2xhc3MgSDNDb25u
ZWN0aW9uVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAgIGRlZiBfbWFr
ZV9yZXF1ZXN0KHNlbGYsIGgzX2NsaWVudCwgaDNfc2VydmVyKToKKyAgICAgICAgcXVpY19jbGll
bnQgPSBoM19jbGllbnQuX3F1aWMKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBoM19zZXJ2ZXIuX3F1
aWMKKworICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICBzdHJlYW1faWQgPSBxdWljX2Ns
aWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
IiksCisgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9pZD1zdHJl
YW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJl
cXVlc3QKKyAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZl
cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgKGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD1zdHJlYW1faWQsIHN0cmVhbV9l
bmRlZD1UcnVlKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIHNlbmQg
cmVzcG9uc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0
cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUi
LCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfc2Vy
dmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAg
ICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICkKKworICAgICAgICAjIHJlY2VpdmUgcmVzcG9u
c2UKKyAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAw
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
InNlcnZlciIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+
IiwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb250cm9sX2ZyYW1lX2hl
YWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHJlY2VpdmUg
SEVBREVSUyBvbiB0aGUgY29udHJvbCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBxdWlj
X3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19zZXJ2ZXIu
aGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD0yLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFy
KFN0cmVhbVR5cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFt
ZVR5cGUuSEVBREVSUywgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBf
RlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiBjb250cm9sIHN0cmVhbSIp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9tYXhfcHVz
aF9pZF9mcm9tX3NlcnZlcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEEgY2xpZW50IHNo
b3VsZCBub3QgcmVjZWl2ZSBNQVhfUFVTSF9JRCBvbiB0aGUgY29udHJvbCBzdHJlYW0uCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAgICAgICAgICAgICAg
ZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKQorICAgICAgICAgICAgICAg
ICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5NQVhfUFVTSF9JRCwgYiIiKSwKKyAgICAgICAgICAg
ICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisgICAg
ICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIlNlcnZlcnMgbXVzdCBu
b3Qgc2VuZCBNQVhfUFVTSF9JRCIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVf
Y29udHJvbF9zdHJlYW1fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ug
bXVzdCBvbmx5IHJlY2VpdmUgYSBzaW5nbGUgY29udHJvbCBzdHJlYW0uCisgICAgICAgICIiIgor
ICAgICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICAp
CisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAg
ICAjIHJlY2VpdmUgYSBmaXJzdCBjb250cm9sIHN0cmVhbQorICAgICAgICBoM19zZXJ2ZXIuaGFu
ZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD0yLCBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wp
LCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICAj
IHJlY2VpdmUgYSBzZWNvbmQgY29udHJvbCBzdHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRs
ZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9NiwgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwg
ZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAg
ICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9S
LAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIiwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wdXNoX2Zy
YW1lX3dyb25nX2ZyYW1lX3R5cGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBzaG91
bGQgbm90IHJlY2VpdmVkIFNFVFRJTkdTIG9uIGEgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgor
ICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkK
KyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAg
IGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5j
b2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuUFVTSCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV91
aW50X3ZhcigwKSAgIyBwdXNoIElECisgICAgICAgICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJh
bWVUeXBlLlNFVFRJTkdTLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHF1aWNfY2xpZW50LmNsb3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRU
UF9GUkFNRV9VTkVYUEVDVEVELCAiSW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIiks
CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19kZWNvZGVyX2R1cGxpY2F0
ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2lu
Z2xlIFFQQUNLIGRlY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGll
bnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUgYSBmaXJz
dCBkZWNvZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwK
KyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RF
Q09ERVIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAp
CisgICAgICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZGVjb2RlciBzdHJlYW0K
KyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAg
ZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAg
ICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFU
SU9OX0VSUk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNvZGVyIHN0cmVh
bSBpcyBhbGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9xcGFja19kZWNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisg
ICAgICAgIFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBkZWNvZGVyIHN0cmVhbSB0cmln
Z2VycyBhbiBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZh
a2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3Vy
YXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDND
b25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPTExLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUu
UVBBQ0tfREVDT0RFUikgKyBiIlx4MDAiLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFs
c2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHF1aWNfY2xpZW50LmNsb3NlZCwgKEVycm9yQ29kZS5IVFRQX1FQQUNLX0RF
Q09ERVJfU1RSRUFNX0VSUk9SLCAiIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X3FwYWNrX2VuY29kZXJfZHVwbGljYXRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ug
bXVzdCBvbmx5IHJlY2VpdmUgYSBzaW5nbGUgUVBBQ0sgZW5jb2RlciBzdHJlYW0uCisgICAgICAg
ICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAg
ICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisg
ICAgICAgICMgcmVjZWl2ZSBhIGZpcnN0IGVuY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVu
dC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgc3RyZWFtX2lkPTExLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKFN0cmVhbVR5cGUuUVBBQ0tfRU5DT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgcmVjZWl2ZSBh
IHNlY29uZCBlbmNvZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD0xNSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQ
QUNLX0VOQ09ERVIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAg
ICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHF1aWNfY2xpZW50LmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBFcnJv
ckNvZGUuSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1IsCisgICAgICAgICAgICAgICAgIk9ubHkg
b25lIFFQQUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3FwYWNrX2VuY29kZXJfc3RyZWFtX2Vycm9y
KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2aW5nIGdhcmJhZ2Ugb24gdGhlIFFQ
QUNLIGVuY29kZXIgc3RyZWFtIHRyaWdnZXJzIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAg
aDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29k
ZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIpICsgYiJceDAwIiwKKyAgICAgICAg
ICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsIChF
cnJvckNvZGUuSFRUUF9RUEFDS19FTkNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCisgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXF1ZXN0X2ZyYW1lX2JhZF9oZWFkZXJzKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgd2hpY2gg
Y2Fubm90IGJlIGRlY29kZWQuCisgICAgICAgICIiIgorICAgICAgICBxdWljX3NlcnZlciA9IEZh
a2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3Vy
YXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlciA9IEgz
Q29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19zZXJ2ZXIuaGFuZGxlX2V2ZW50
KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD0wLCBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuSEVBREVSUywgYiIiKSwgZW5kX3N0
cmVhbT1GYWxzZQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsIChFcnJvckNvZGUuSFRUUF9R
UEFDS19ERUNPTVBSRVNTSU9OX0ZBSUxFRCwgIiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9yZXF1ZXN0X2ZyYW1lX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAg
ICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHJlY2VpdmUgREFUQSBiZWZvcmUgcmVjZWl2aW5n
IGhlYWRlcnMuCisgICAgICAgICIiIgorICAgICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29u
bmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlv
bihxdWljX3NlcnZlcikKKworICAgICAgICBoM19zZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLCBk
YXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuREFUQSwgYiIiKSwgZW5kX3N0cmVhbT1GYWxzZQor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwKKyAgICAgICAgICAgICAgICAiREFU
QSBmcmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIiwKKyAgICAgICAgICAgICksCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXF1ZXN0X2ZyYW1lX2hlYWRlcnNfYWZ0
ZXJfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHJl
Y2VpdmUgSEVBREVSUyBhZnRlciByZWNlaXZpbmcgdHJhaWxlcnMuCisgICAgICAgICIiIgorICAg
ICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAg
ICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQor
CisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAg
aDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgIHN0cmVhbV9p
ZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBo
M19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwK
KyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdF
VCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAg
ICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgKGIi
OnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRl
cnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9zdHJlYW09VHJ1ZQorICAgICAg
ICApCisgICAgICAgIGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAg
ICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVU
eXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIu
Y2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZS
QU1FX1VORVhQRUNURUQsCisgICAgICAgICAgICAgICAgIkhFQURFUlMgZnJhbWUgaXMgbm90IGFs
bG93ZWQgaW4gdGhpcyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9wdXNoX3Byb21pc2VfZnJvbV9jbGllbnQoc2Vs
Zik6CisgICAgICAgICIiIgorICAgICAgICBBIHNlcnZlciBzaG91bGQgbm90IHJlY2VpdmUgUFVT
SF9QUk9NSVNFIG9uIGEgcmVxdWVzdCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBxdWlj
X3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19zZXJ2ZXIu
aGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX2ZyYW1lKEZy
YW1lVHlwZS5QVVNIX1BST01JU0UsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29k
ZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9N
SVNFIiksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXF1ZXN0X2ZyYW1lX3dy
b25nX2ZyYW1lX3R5cGUoc2VsZik6CisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25u
ZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19j
bGllbnQ9RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9u
KHF1aWNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAg
ICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisg
ICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLlNFVFRJTkdTLCBiIiIp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVy
LmNsb3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIHJlcXVlc3Qgc3RyZWFtIiksCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2
ZXIoKSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgz
Q29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBtYWtlIGZpcnN0IHJlcXVl
c3QKKyAgICAgICAgICAgIHNlbGYuX21ha2VfcmVxdWVzdChoM19jbGllbnQsIGgzX3NlcnZlcikK
KworICAgICAgICAgICAgIyBtYWtlIHNlY29uZCByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLl9t
YWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSB0
aGlyZCByZXF1ZXN0IC0+IGR5bmFtaWMgdGFibGUKKyAgICAgICAgICAgIHNlbGYuX21ha2VfcmVx
dWVzdChoM19jbGllbnQsIGgzX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X3JlcXVlc3RfaGVhZGVy
c19vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1
aWNfY2xpZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24o
cXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBz
dHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAg
ICAgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgKGIiOm1ldGhvZCIsIGIiSEVBRCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJs
b2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAg
ICAgICAgICAgICAgICAgKGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNm
ZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVy
cz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiSEVBRCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIiY2xpZW50IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgICAgICAg
ICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJzKAor
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVh
ZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAg
ICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIpLAorICAgICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXNwb25zZQorICAgICAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIs
IGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwg
YiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3RfZnJh
Z21lbnRlZF9mcmFtZShzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5l
Y3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2Ns
aWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25u
ZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19j
bGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rp
b24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3Nl
cnZlcikKKworICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICBzdHJlYW1faWQgPSBxdWlj
X2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50
LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvIiksCisgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiImNsaWVudCIpLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9pZD1z
dHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJl
Y2VpdmUgcmVxdWVzdAorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwg
aDNfc2VydmVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXZlbnRz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIiY2xpZW50IiksCisgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIiaCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1f
ZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIiZSIsIHN0
cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNl
aXZlZChkYXRhPWIibCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAg
ICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5k
ZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibyIsIHN0cmVh
bV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZl
ZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKworICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgIHB1
c2hfc3RyZWFtX2lkID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAgICAg
c3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBi
Imh0dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAudHh0IiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVzaF9zdHJlYW1faWQsIDE1
KQorCisgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFk
ZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAg
ICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9YiJodG1s
IiwgZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAgICMgwqBmdWxmaWxsIHB1c2ggcHJvbWlzZQor
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXB1
c2hfc3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiks
IChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9wbGFpbiIpXSwKKyAgICAgICAgICAgIGVuZF9zdHJl
YW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShzdHJlYW1f
aWQ9cHVzaF9zdHJlYW1faWQsIGRhdGE9YiJ0ZXh0IiwgZW5kX3N0cmVhbT1UcnVlKQorCisgICAg
ICAgICMgcmVjZWl2ZSBwdXNoIHByb21pc2UgLyByZXBvbnNlCisgICAgICAgIGV2ZW50cyA9IGgz
X3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IChiIjpwYXRoIiwgYiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVj
ZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJj
b250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJoIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRl
ZD1GYWxzZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJ0Iiwgc3RyZWFt
X2lkPTAsIHN0cmVhbV9lbmRlZD1GYWxzZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVk
KGRhdGE9YiJtIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1GYWxzZSksCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJsIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1G
YWxzZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBzdHJlYW1faWQ9
MCwgc3RyZWFtX2VuZGVkPVRydWUpLAorICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNv
bnRlbnQtdHlwZSIsIGIidGV4dC9wbGFpbiIpXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPTE1LAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgIHB1c2hfaWQ9MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
ICAgIERhdGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPUZh
bHNlLCBwdXNoX2lkPTApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIiZSIs
IHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPUZhbHNlLCBwdXNoX2lkPTApLAorICAgICAgICAg
ICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIieCIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVk
PUZhbHNlLCBwdXNoX2lkPTApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
dCIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPUZhbHNlLCBwdXNoX2lkPTApLAorICAgICAg
ICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTE1LCBzdHJlYW1fZW5k
ZWQ9VHJ1ZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3JlcXVlc3Rfd2l0aF9zZXJ2ZXJfcHVzaChzZWxmKToKKyAgICAgICAgd2l0aCBoM19j
bGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAg
ICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAgICAg
aDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHNl
bmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRf
YXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVu
ZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJl
cXVlc3QKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19z
ZXJ2ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2
ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlbmQgcHVzaCBw
cm9taXNlcworICAgICAgICAgICAgcHVzaF9zdHJlYW1faWRfY3NzID0gaDNfc2VydmVyLnNlbmRf
cHVzaF9wcm9taXNlKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBi
IkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVzaF9zdHJlYW1f
aWRfY3NzLCAxNSkKKworICAgICAgICAgICAgcHVzaF9zdHJlYW1faWRfanMgPSBoM19zZXJ2ZXIu
c2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwK
KyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhv
ZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiks
CisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC5qcyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1c2hfc3Ry
ZWFtX2lkX2pzLCAxOSkKKworICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAg
ICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChi
IjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUi
LCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9p
ZCwKKyAgICAgICAgICAgICAgICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1s
PiIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2VzCisgICAgICAgICAgICBoM19zZXJ2
ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9p
ZF9jc3MsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChi
ImNvbnRlbnQtdHlwZSIsIGIidGV4dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2NzcywKKyAgICAgICAg
ICAgICAgICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAgICAgIGVu
ZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgaDNfc2VydmVyLnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMs
CisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0
dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2
ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZF9q
cywgZGF0YT1iImFsZXJ0KCdob3dkZWUnKTsiLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHB1c2ggcHJvbWlzZXMsIHJlc3BvbnNlIGFuZCBw
dXNoIHJlc3BvbnNlcworCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBQ
dXNoUHJvbWlzZVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC5jc3MiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICBQdXNoUHJvbWlzZVJlY2VpdmVkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNj
aGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9y
aXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0
aCIsIGIiL2FwcC5qcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04IiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAg
ICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxi
b2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVl
LAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVj
ZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiI6c3RhdHVzIiwgYiIy
MDAiKSwgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2NzcyIpXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2hfaWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNo
X3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiJib2R5IHsgY29sb3I6IHBpbmsg
fSIsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhl
YWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1wdXNoX3N0cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
RGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1iImFsZXJ0KCdob3dk
ZWUnKTsiLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0xLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Rfd2l0
aF9zZXJ2ZXJfcHVzaF9tYXhfcHVzaF9pZChzZWxmKToKKyAgICAgICAgd2l0aCBoM19jbGllbnRf
YW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAg
aDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDNfc2Vy
dmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVx
dWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVy
cz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAo
YiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QK
KyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywK
KyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNl
cworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgOCk6CisgICAgICAgICAgICAgICAgaDNf
c2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRo
b3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCAiL3t9LmNzcyIuZm9ybWF0KGkpLmVuY29kZSgiYXNjaWkiKSksCisgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlbmQgb25lIHRvbyBt
YW55CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vQXZhaWxhYmxlUHVzaElE
RXJyb3IpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvOC5jc3MiKSwKKyAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zZW5kX2RhdGFfYWZ0
ZXJfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHNl
bmQgREFUQSBhZnRlciB0cmFpbGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50
ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29u
ZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQg
PSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19j
bGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5z
ZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAg
ICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6
YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIi
LyIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwgaGVhZGVycz1bKGIieC1z
b21lLXRyYWlsZXIiLCBiImZvbyIpXSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICApCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAgICAg
IGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxvIiwg
ZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9iZWZvcmVfaGVhZGVy
cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBEQVRBIGJl
Zm9yZSBoZWFkZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRf
bmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRfc3RyZWFtPUZhbHNlKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIEhFQURFUlMgYWZ0ZXIgdHJhaWxlcnMuCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJl
YW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9z
dHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZy
YW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVy
cz1bKGIieC1vdGhlci10cmFpbGVyIiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0
cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Jsb2NrZWRfc3RyZWFt
KHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAgICAgICAgICAgICAg
ZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICIwMDA0MTcwMTUw
MDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBjIgorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
U3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgwMiIsIGVuZF9zdHJlYW09
RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRhdGE9YiJceDAzIiwgZW5k
X3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50
KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD0wLCBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDEwNDAyODBkOTEwIiksIGVuZF9zdHJl
YW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFu
ZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgICAgICAgICAiMDA0MDhkNzk2Zjc1MjA3MjY1NjE2MzY4NjU2NDIwNmQ3
NjY2NzM3NDJlNmU2NTc0MmMyMDcyNjU2MTYzNjgyMCIKKyAgICAgICAgICAgICAgICAgICAgIjc0
Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5NmU3NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2
ZjIwNzIiCisgICAgICAgICAgICAgICAgICAgICI2NTczNzA2ZjZlNzM2NTIwNzE3NTY1NzI3OTIw
MmYzYzZlNzU2ZDYyNjU3MjNlMjA2NTZlNjQ3MDZmNjk2ZTc0IgorICAgICAgICAgICAgICAgICAg
ICAiNzMyMDY2NmY3MjIwNjEyMDc2NjE3MjY5NjE2MjZjNjUyMDczNjk3YTY1MjA3MjY1NzM3MDZm
NmU3MzY1MjA3NyIKKyAgICAgICAgICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2
Mjc5NzQ2NTczIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1UcnVlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgICAg
IFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTcsCisg
ICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjNmZTEwMWM2OTZkMDdhYmU5NDEwOTRjYjZkMGEwODAxN2Q0MDM5NzE5NjZl
MzJjYTk4YjQ2ZiIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwg
YiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiImRhdGUiLCBiIk1vbiwgMjIgSnVs
IDIwMTkgMDY6MzM6MzMgR01UIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9
RmFsc2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgIGRhdGE9KAorICAgICAgICAgICAgICAgICAgICAgICAgYiJ5
b3UgcmVhY2hlZCBtdmZzdC5uZXQsIHJlYWNoIHRoZSAvZWNobyBlbmRwb2ludCBmb3IgYW4gIgor
ICAgICAgICAgICAgICAgICAgICAgICAgYiJlY2hvIHJlc3BvbnNlIHF1ZXJ5IC88bnVtYmVyPiBl
bmRwb2ludHMgZm9yIGEgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgYiJzaXpl
IHJlc3BvbnNlIHdpdGggcmFuZG9tIGJ5dGVzIgorICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X2Jsb2NrZWRfc3RyZWFtX3RyYWlsZXIoc2VsZik6CisgICAgICAg
IHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAg
ICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgaDNfY2xp
ZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9MywKKyAgICAgICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjAwMDQxNzAxNTAwMDA2ODAwMjAwMDAwNzQw
NjQwOTEwNDBiY2MwMDAwMDAwZmFjZWIwMGMiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAg
ICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoc3RyZWFtX2lkPTcsIGRhdGE9YiJceDAyIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAg
KQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKHN0cmVhbV9pZD0xMSwgZGF0YT1iIlx4MDMiLCBlbmRfc3RyZWFtPUZhbHNlKQor
ICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2Ns
aWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgZGF0
YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDExYjAwMDBk
OTU2OTZkMDdhYmU5NDEwOTRjYjZkMGEwODAxN2Q0MDM5NzE5NjZlMzJjYTk4YjQ2ZiIKKyAgICAg
ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1b
CisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChiImRhdGUiLCBiIk1vbiwgMjIgSnVsIDIwMTkgMDY6MzM6MzMgR01U
IiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
ICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgIjAwNDA4ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQy
ZTZlNjU3NDJjMjA3MjY1NjE2MzY4MjAiCisgICAgICAgICAgICAgICAgICAgICAgICAiNzQ2ODY1
MjAyZjY1NjM2ODZmMjA2NTZlNjQ3MDZmNjk2ZTc0MjA2NjZmNzIyMDYxNmUyMDY1NjM2ODZmMjA3
MiIKKyAgICAgICAgICAgICAgICAgICAgICAgICI2NTczNzA2ZjZlNzM2NTIwNzE3NTY1NzI3OTIw
MmYzYzZlNzU2ZDYyNjU3MjNlMjA2NTZlNjQ3MDZmNjk2ZTc0IgorICAgICAgICAgICAgICAgICAg
ICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2OTYxNjI2YzY1MjA3MzY5N2E2NTIwNzI2NTcz
NzA2ZjZlNzM2NTIwNzciCisgICAgICAgICAgICAgICAgICAgICAgICAiNjk3NDY4MjA3MjYxNmU2
NDZmNmQyMDYyNzk3NDY1NzMiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGRhdGE9KAorICAgICAgICAgICAgICAgICAgICAgICAgYiJ5b3UgcmVhY2hl
ZCBtdmZzdC5uZXQsIHJlYWNoIHRoZSAvZWNobyBlbmRwb2ludCBmb3IgYW4gIgorICAgICAgICAg
ICAgICAgICAgICAgICAgYiJlY2hvIHJlc3BvbnNlIHF1ZXJ5IC88bnVtYmVyPiBlbmRwb2ludHMg
Zm9yIGEgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgYiJzaXplIHJlc3BvbnNl
IHdpdGggcmFuZG9tIGJ5dGVzIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
ICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZh
bHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVu
dCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD0wLCBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDEwMzAyODAxMCIpLCBl
bmRfc3RyZWFtPVRydWUKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgW10sCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAg
ICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiNmFmMmIyMGY0OTU2NGQ4MzM1MDViMzgy
OTRlNyIpLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
SGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUt
dHJhaWxlciIsIGIiZm9vIildLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAg
IHB1c2hfaWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF91bmlfc3RyZWFtX2dyZWFzZShzZWxmKToKKyAgICAgICAgd2l0
aCBoM19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgor
ICAgICAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAg
ICAgICAgICBxdWljX2NsaWVudC5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgICAgIDE0
LCBiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlR1JFQVNFIGlzIHRoZSB3b3JkIgor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zlcihx
dWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhf
dHJhaWxlcnMoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29u
bmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlv
bihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3Qgd2l0aCB0cmFpbGVy
cworICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1b
CisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAg
ICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6
YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi8iKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09
RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAgICAgICAgICBl
bmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSBy
ZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNf
c2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBl
dmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVj
ZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlbmQgcmVzcG9uc2UKKyAgICAg
ICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAg
ICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQt
dHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48
L2h0bWw+IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10
cmFpbGVyIiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVzcG9uc2UKKyAgICAgICAgICAg
IGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpz
dGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQt
dHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImJhciIpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdW5pX3N0cmVhbV90eXBlKHNlbGYp
OgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBx
dWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgICAgICMgdW5rbm93biBzdHJlYW0gdHlwZSA5CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlz
X3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bV9pZCwgMikKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiIlx4MDkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zlcihx
dWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzJdKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisK
KyAgICAgICAgICAgICMgdW5rbm93biBzdHJlYW0gdHlwZSA2NCwgb25lIGJ5dGUgYXQgYSB0aW1l
CisgICAgICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbV9pZCwgNikKKworICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9zdHJl
YW1fZGF0YShzdHJlYW1faWQsIGIiXHg0MCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpLCBbXSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChoM19zZXJ2ZXIuX3N0cmVhbS5rZXlzKCkpLCBbMiwgNl0pCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzJdLmJ1ZmZlciwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5z
dHJlYW1fdHlwZSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9z
dHJlYW1bNl0uYnVmZmVyLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
M19zZXJ2ZXIuX3N0cmVhbVs2XS5zdHJlYW1fdHlwZSwgTm9uZSkKKworICAgICAgICAgICAgcXVp
Y19jbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiXHg0MCIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpLCBb
XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChoM19zZXJ2ZXIuX3N0cmVhbS5r
ZXlzKCkpLCBbMiwgNl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzJdLmJ1ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19z
ZXJ2ZXIuX3N0cmVhbVsyXS5zdHJlYW1fdHlwZSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLnN0cmVhbV90eXBlLCA2NCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X2xvZ2dlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjdjNTIwOTM4ZTJjZjI0YWViNzZiOTE5
ZDk2N2FmYmM2YzZlZWUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfbG9nZ2VyLnB5CkBAIC0wLDAgKzEsMzcgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RD
YXNlCisKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorCisKK2Ns
YXNzIFF1aWNMb2dnZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToK
KyAgICAgICAgbG9nZ2VyID0gUXVpY0xvZ2dlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bG9nZ2VyLnRvX2RpY3QoKSwgeyJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLCAidHJhY2VzIjog
W119KQorCisgICAgZGVmIHRlc3RfZW1wdHlfdHJhY2Uoc2VsZik6CisgICAgICAgIGxvZ2dlciA9
IFF1aWNMb2dnZXIoKQorICAgICAgICB0cmFjZSA9IGxvZ2dlci5zdGFydF90cmFjZShpc19jbGll
bnQ9VHJ1ZSwgb2RjaWQ9Ynl0ZXMoOCkpCisgICAgICAgIGxvZ2dlci5lbmRfdHJhY2UodHJhY2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsb2dnZXIudG9fZGljdCgp
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQt
MDEiLAorICAgICAgICAgICAgICAgICJ0cmFjZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tb25fZmllbGRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJPRENJRCI6ICIwMDAwMDAwMDAwMDAwMDAwIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiAiMCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZpZ3VyYXRpb24iOiB7InRp
bWVfdW5pdHMiOiAidXMifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF9maWVsZHMi
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbGF0aXZlX3RpbWUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV2ZW50X3R5cGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAiZXZl
bnRzIjogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAidmFudGFnZV9wb2ludCI6IHsibmFt
ZSI6ICJhaW9xdWljIiwgInR5cGUiOiAiY2xpZW50In0sCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfSwKKyAgICAgICAgKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfcGFja2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OWI3YWE5YTYxOTc2N2E3ZjVjMDM1Zjc3MzBm
ZjM3MWQ3ZDVmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9w
YWNrZXQucHkKQEAgLTAsMCArMSw1MTMgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB1bml0dGVz
dCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmJ1ZmZlciBpbXBvcnQgQnVmZmVyLCBC
dWZmZXJSZWFkRXJyb3IKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBwYWNrZXQKK2Zyb20gYWlv
cXVpYy5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfUkVUUlksCisgICAgUXVpY1ByZWZlcnJlZEFkZHJlc3MsCisgICAgUXVpY1By
b3RvY29sVmVyc2lvbiwKKyAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycywKKyAgICBkZWNvZGVf
cGFja2V0X251bWJlciwKKyAgICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uLAorICAg
IGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAgIHB1bGxfcXVpY19oZWFkZXIsCisgICAgcHVs
bF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycywKKyAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MsCisgICAgcHVzaF9xdWljX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzLAorKQorCitmcm9tIC51dGlscyBpbXBvcnQgbG9hZAorCisKK2Ns
YXNzIFBhY2tldFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RlY29kZV9wYWNrZXRfbnVt
YmVyKHNlbGYpOgorICAgICAgICAjIGV4cGVjdGVkID0gMAorICAgICAgICBmb3IgaSBpbiByYW5n
ZSgwLCAyNTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251
bWJlcihpLCA4LCBleHBlY3RlZD0wKSwgaSkKKworICAgICAgICAjIGV4cGVjdGVkID0gMTI4Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwgOCwgZXhwZWN0
ZWQ9MTI4KSwgMjU2KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAyNTYpOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3RlZD0x
MjgpLCBpKQorCisgICAgICAgICMgZXhwZWN0ZWQgPSAxMjkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkZWNvZGVfcGFja2V0X251bWJlcigwLCA4LCBleHBlY3RlZD0xMjkpLCAyNTYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMSwgOCwgZXhwZWN0ZWQ9
MTI5KSwgMjU3KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyLCAyNTYpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3RlZD0xMjkp
LCBpKQorCisgICAgICAgICMgZXhwZWN0ZWQgPSAyNTYKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MCwgMTI4KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1i
ZXIoaSwgOCwgZXhwZWN0ZWQ9MjU2KSwgMjU2ICsgaSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTI5LCAyNTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251
bWJlcihpLCA4LCBleHBlY3RlZD0yNTYpLCBpKQorCisgICAgZGVmIHRlc3RfcHVsbF9lbXB0eShz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiIiKQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVh
ZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX2luaXRpYWxf
Y2xpZW50KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJpbml0aWFsX2Ns
aWVudC5iaW4iKSkKKyAgICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3Rf
Y2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGVhZGVyLmlzX2xvbmdfaGVh
ZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBRdWljUHJvdG9j
b2xWZXJzaW9uLkRSQUZUXzI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5wYWNr
ZXRfdHlwZSwgUEFDS0VUX1RZUEVfSU5JVElBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoIjg1OGIzOTM2OGI4ZTNj
NmUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMjYyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDE4KQorCisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX3NlcnZlcihz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9zZXJ2ZXIuYmlu
IikpCisgICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5n
dGg9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lv
bi5EUkFGVF8yNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUs
IFBBQ0tFVF9UWVBFX0lOSVRJQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRl
c3RpbmF0aW9uX2NpZCwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5zb3Vy
Y2VfY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoIjE5NWM2ODM0NGUyOGQ0NzkiKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlYWRlci5yZXN0X2xlbmd0aCwgMTg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDE4KQorCisgICAgZGVmIHRlc3RfcHVsbF9yZXRyeShzZWxmKToKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9bG9hZCgicmV0cnkuYmluIikpCisgICAgICAgIGhlYWRlciA9IHB1bGxf
cXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX1JFVFJZKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGJpbmFzY2lpLnVuaGV4
bGlmeSgiZTlkMTQ2ZDhkMTRjYjI4ZSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVhZGVyLnNvdXJjZV9jaWQsCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxp
ZnkoIjBiMGEyMDVhNjQ4ZmNmODJkODVmMTI4YjY3YmJlMDgwNTNlNiIpLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIudG9rZW4sCisgICAg
ICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjQ0Mzk3YTM1ZDY5
ODM5M2MxMzRiMDhhOTMyNzM3ODU5ZjQ0NmQzYWFkZDAwZWQ4MTU0MGM4ZDhkZTE3MiIKKyAgICAg
ICAgICAgICAgICAiOTA2ZDNlN2ExMTFiNTAzZjk3MjliODkyOGU3NTI4ZjlhODZhNDU4MWY5ZWJi
NGNiM2I1M2MyODM2NjFlIgorICAgICAgICAgICAgICAgICI4NTMwNzQxYTk5MTkyZWU1NjkxNGM1
NjI2OTk4ZWMwZiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiaW5hc2NpaS51bmhl
eGxpZnkoImUxYTNjODBjNzk3ZWE0MDFjMDhmYzljMzQyYTJkOTBkIikKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxMjUpCisKKyAgICAgICAgIyBjaGVjayBpbnRlZ3Jp
dHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldF9yZXRyeV9pbnRl
Z3JpdHlfdGFnKAorICAgICAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDEwOSksIGJpbmFz
Y2lpLnVuaGV4bGlmeSgiZmJiZDIxOWI3MzYzYjY0YiIpLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIGhlYWRlci5pbnRlZ3JpdHlfdGFnLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9w
dWxsX3ZlcnNpb25fbmVnb3RpYXRpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWxvYWQoInZlcnNpb25fbmVnb3RpYXRpb24uYmluIikpCisgICAgICAgIGhlYWRlciA9IHB1bGxf
cXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5YWFj
NWE0OWJhODdhODQ5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnNvdXJjZV9j
aWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiZjkyZjQzMzZmYTk1MWJhMSIpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVh
ZGVyLnJlc3RfbGVuZ3RoLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCks
IDIzKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9kY2lkX3Rvb19sb25nKHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAiYzZmZjAwMDAxNjE1MDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAgICAgICAgIjAxYzUxNGY5OWVj
NGJiZjFmN2EzMGY5YjBjOTRmZWY3MTdmMWMxZDA3ZmVjMjRjOTlhODY0ZGE3ZWRlIgorICAgICAg
ICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRf
bGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJE
ZXN0aW5hdGlvbiBDSUQgaXMgdG9vIGxvbmcgKDIxIGJ5dGVzKSIpCisKKyAgICBkZWYgdGVzdF9w
dWxsX2xvbmdfaGVhZGVyX3NjaWRfdG9vX2xvbmcoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cigKKyAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAg
ICJjMmZmMDAwMDE2MDAxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwNCIKKyAgICAgICAgICAgICAgICAiMDFjZmNlZTk5ZWM0YmJmMWY3YTMwZjliMGM5NDE3Yjhj
MjYzY2RkOGNjOTcyYTQ0MzlkNjhhNDYzMjAiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAg
ICAgIHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlNvdXJjZSBDSUQgaXMgdG9vIGxvbmcg
KDIxIGJ5dGVzKSIpCisKKyAgICBkZWYgdGVzdF9wdWxsX2xvbmdfaGVhZGVyX25vX2ZpeGVkX2Jp
dChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDgwXHhmZlx4MDBceDAwXHgx
MVx4MDBceDAwIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBh
cyBjbToKKyAgICAgICAgICAgIHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBhY2tldCBm
aXhlZCBiaXQgaXMgemVybyIpCisKKyAgICBkZWYgdGVzdF9wdWxsX2xvbmdfaGVhZGVyX3Rvb19z
aG9ydChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceGMwXHgwMCIpCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAg
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKworICAgIGRlZiB0ZXN0
X3B1bGxfc2hvcnRfaGVhZGVyKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2Fk
KCJzaG9ydF9oZWFkZXIuYmluIikpCisgICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIo
YnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoZWFkZXIu
aXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24s
IE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCAweDUw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGJpbmFz
Y2lpLnVuaGV4bGlmeSgiZjQ1YWE3YjU5YzBlMWFkNiIpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVh
ZGVyLnRva2VuLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0
eV90YWcsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgs
IDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDkpCisKKyAgICBkZWYg
dGVzdF9wdWxsX3Nob3J0X2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWIiXHgwMCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9j
aWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiks
ICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX3F1aWNf
dmVyc2lvbl9uZWdvdGlhdGlvbihzZWxmKToKKyAgICAgICAgZGF0YSA9IGVuY29kZV9xdWljX3Zl
cnNpb25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWku
dW5oZXhsaWZ5KCI5YWFjNWE0OWJhODdhODQ5IiksCisgICAgICAgICAgICBzb3VyY2VfY2lkPWJp
bmFzY2lpLnVuaGV4bGlmeSgiZjkyZjQzMzZmYTk1MWJhMSIpLAorICAgICAgICAgICAgc3VwcG9y
dGVkX3ZlcnNpb25zPVsweDQ1NDc0NzE2LCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1XSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFbMTpdLCBsb2FkKCJ2ZXJz
aW9uX25lZ290aWF0aW9uLmJpbiIpWzE6XSkKKworCitjbGFzcyBQYXJhbXNUZXN0KFRlc3RDYXNl
KToKKyAgICBtYXhEaWZmID0gTm9uZQorCisgICAgZGVmIHRlc3RfcGFyYW1zKHNlbGYpOgorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAxMDI2NzEwMDIx
MGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4MDMwMjQ3ZTQwNDA0ODAwNWZmZiIKKyAg
ICAgICAgICAgICJhMDUwNDgwMDBmZmZmMDYwNDgwMDBmZmZmMDgwMTA2MGEwMTAzMGIwMTE5Igor
ICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1k
YXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisg
ICAgICAgICAgICBidWYsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBw
YXJhbXMsCisgICAgICAgICAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygKKyAgICAgICAgICAg
ICAgICBpZGxlX3RpbWVvdXQ9MTAwMDAsCisgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0
X3Rva2VuPWIiXHhjYy9ceGQ2XHhlN1x4ZDl6U1x4YWJbXHhlOFsoXHhkN1xcXHg4MFx4MDgiLAor
ICAgICAgICAgICAgICAgIG1heF9wYWNrZXRfc2l6ZT0yMDIwLAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X2RhdGE9MzkzMjEwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfbG9jYWw9NjU1MzUsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3Ry
ZWFtX2RhdGFfYmlkaV9yZW1vdGU9NjU1MzUsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhf
c3RyZWFtX2RhdGFfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFt
c19iaWRpPTYsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk9Tm9uZSwK
KyAgICAgICAgICAgICAgICBhY2tfZGVsYXlfZXhwb25lbnQ9MywKKyAgICAgICAgICAgICAgICBt
YXhfYWNrX2RlbGF5PTI1LAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMg
c2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAg
ICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcGFy
YW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihidWYuZGF0YSksIGxlbihkYXRhKSkK
KworICAgIGRlZiB0ZXN0X3BhcmFtc19sZWdhY3koc2VsZik6CisgICAgICAgIGRhdGEgPSBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAiMDA0NzAwMDIwMDEwY2MyZmQ2ZTdkOTdhNTNh
YjViZTg1YjI4ZDc1YzgwMDgwMDA4MDAwMTA2MDAwMTAwMDI2IgorICAgICAgICAgICAgIjcxMDAw
MDYwMDA0ODAwMGZmZmYwMDA1MDAwNDgwMDBmZmZmMDAwNDAwMDQ4MDA1ZmZmYTAwMGEwMDAxMDMw
MCIKKyAgICAgICAgICAgICIwYjAwMDExOTAwMDMwMDAyNDdlNCIKKyAgICAgICAgKQorCisgICAg
ICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFy
YW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBw
cm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAg
ICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0
PTEwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhk
Nlx4ZTdceGQ5elNceGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBt
YXhfcGFja2V0X3NpemU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5
MzIxMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2Fs
PTY1NTM1LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlPTY1NTM1LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1O
b25lLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAg
YWNrX2RlbGF5X2V4cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVy
c2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9w
YXJhbXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uKHNlbGYpOgorICAgICAgICBkYXRhID0gYmlu
YXNjaWkudW5oZXhsaWZ5KCIwYzAwIikKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRf
cGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9j
b2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZlX21pZ3JhdGlvbj1U
cnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNp
dHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisg
ICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJz
aW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19kaXNhYmxlX2FjdGl2ZV9taWdyYXRpb25f
bGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KCIwMDA0MDAw
YzAwMDAiKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0
YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAg
ICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRf
MjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcywgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMoZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uPVRydWUpKQorCisgICAgICAg
ICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisg
ICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1Ziwg
cGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAg
ZGVmIHRlc3RfcGFyYW1zX3ByZWZlcnJlZF9hZGRyZXNzKHNlbGYpOgorICAgICAgICBkYXRhID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjBkM2I4YmEyN2I4NjExNTMyNDAwODkw
MjAwMDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNiIKKyAgICAgICAgICAgICIz
MDEzZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNi
NCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAg
ICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUpLAorICAg
ICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5
OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1iImJceGM0
UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5cXG59SFx4
ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQor
CisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDAw
KQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBi
dWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X3BhcmFtc19wcmVmZXJyZWRfYWRkcmVzc19sZWdhY3koc2VsZik6CisgICAg
ICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAiMDAzZjAwMGQwMDNi
OGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUzMTI2IgorICAg
ICAgICAgICAgIjJjNDUxOGQ2MzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZiMmUwMmQ0NTQ4
MGJhNjY0M2U1YzZlN2Q0OCIKKyAgICAgICAgICAgICJlY2I0IgorICAgICAgICApCisKKyAgICAg
ICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJh
bXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBy
b3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAg
ICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICBwcmVmZXJyZWRfYWRk
cmVzcz1RdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgaXB2NF9hZGRy
ZXNzPSgiMTM5LjE2Mi4xMjMuMTM0IiwgNDQzNSksCisgICAgICAgICAgICAgICAgICAgIGlwdjZf
YWRkcmVzcz0oIjI0MDA6ODkwMjo6ZjAzYzo5MWZmOmZlNjk6YTQ1NCIsIDQ0MzUpLAorICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNX
Plx4ZmFceDkwXHg5NWA3IiwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rv
a2VuPWIiRlx4YjJceGUwLUVIXHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfdW5rbm93bihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiODAw
MGZmMDAwMTAwIikKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygK
KyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRS
QUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMsIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfdW5rbm93bl9sZWdh
Y3koc2VsZik6CisgICAgICAgICMgZmIubXZmc3QubmV0IHNlbmRzIGEgcHJvcHJpZXRhcnkgcGFy
YW1ldGVyIDY1MjgwCisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAg
ICAgICAiMDA2NDAwMDUwMDA0ODAwMTA0MDAwMDA2MDAwNDgwMDEwNDAwMDAwNzAwMDQ4MDAxMDQw
MDAwMDQwMDA0ODAxIgorICAgICAgICAgICAgIjAwMDAwMDAwODAwMDhjMDAwMDAwMGZmZmZmZmZm
MDAwOTAwMDhjMDAwMDAwMGZmZmZmZmZmMDAwMTAwMDQ4MCIKKyAgICAgICAgICAgICIwMGVhNjAw
MDBhMDAwMTAzMDAwMzAwMDI1MDAwMDAwMjAwMTA2MTYxNjE2MTYyNjI2MjYyNjM2MzYzNjM2NDYi
CisgICAgICAgICAgICAiNDY0NjRmZjAwMDAwMTAwIgorICAgICAgICApCisKKyAgICAgICAgIyBw
YXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBw
dWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29s
X3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgICBRdWlj
VHJhbnNwb3J0UGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICBpZGxlX3RpbWVvdXQ9NjAwMDAs
CisgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiYWFhYWJiYmJjY2NjZGRk
ZCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTQwOTYsCisgICAgICAgICAgICAg
ICAgaW5pdGlhbF9tYXhfZGF0YT0xMDQ4NTc2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4
X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9NjY1NjAsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9t
YXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGU9NjY1NjAsCisgICAgICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfdW5pPTY2NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4
X3N0cmVhbXNfYmlkaT00Mjk0OTY3Mjk1LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0
cmVhbXNfdW5pPTQyOTQ5NjcyOTUsCisgICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50
PTMsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9wcmVmZXJyZWRf
YWRkcmVzc19pcHY0X29ubHkoc2VsZik6CisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxp
ZnkoCisgICAgICAgICAgICAiOGJhMjdiODYxMTUzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMTI2MmM0NTE4ZDYzMDEzIgorICAgICAgICAgICAgImYwYzI4N2VkMzU3M2VmYTkw
OTU2MDM3NDZiMmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKworICAg
ICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBy
ZWZlcnJlZF9hZGRyZXNzID0gcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzLAorICAg
ICAgICAgICAgUXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgICAgICAgICAgaXB2NF9hZGRy
ZXNzPSgiMTM5LjE2Mi4xMjMuMTM0IiwgNDQzNSksCisgICAgICAgICAgICAgICAgaXB2Nl9hZGRy
ZXNzPU5vbmUsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1iImJceGM0UVx4OGRjXHgw
MT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAgICAgICAgc3RhdGVsZXNz
X3Jlc2V0X3Rva2VuPWIiRlx4YjJceGUwLUVIXHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY19wcmVmZXJy
ZWRfYWRkcmVzcyhidWYsIHByZWZlcnJlZF9hZGRyZXNzKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2
Nl9vbmx5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgIjAwMDAwMDAwMDAwMDI0MDA4OTAyMDAwMDAwMDBmMDNjOTFmZmZlNjlhNDU0MTE1MzEy
NjJjNDUxOGQ2MzAxMyIKKyAgICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJl
MDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRk
cmVzcyA9IHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1
aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz1Ob25lLAor
ICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz0oIjI0MDA6ODkwMjo6ZjAzYzo5MWZmOmZlNjk6
YTQ1NCIsIDQ0MzUpLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhk
Y1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDciLAorICAgICAgICAgICAgICAgIHN0YXRl
bGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfcHJl
ZmVycmVkX2FkZHJlc3MoYnVmLCBwcmVmZXJyZWRfYWRkcmVzcykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworCitjbGFzcyBGcmFtZVRlc3QoVGVzdENhc2UpOgor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZShzZWxmKToKKyAgICAgICAgZGF0YSA9IGIiXHgwMFx4MDJc
eDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRh
dGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxp
emUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFj
a2V0LnB1c2hfYWNrX2ZyYW1lKGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhf
b25lX3JhbmdlKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDAyXHgwMlx4MDFceDAwXHgwMFx4
MDAiCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQor
ICAgICAgICByYW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSksIHJhbmdl
KDIsIDMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAj
IHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAg
ICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJh
bWVfd2l0aF9vbmVfcmFuZ2VfMihzZWxmKToKKyAgICAgICAgZGF0YSA9IGIiXHgwNVx4MDJceDAx
XHgwMFx4MDBceDAzIgorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1l
KGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAs
IDQpLCByYW5nZSg1LCA2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsYXksIDIpCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRl
c3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlXzMoc2VsZik6CisgICAgICAgIGRhdGEgPSBiIlx4
MDVceDAyXHgwMVx4MDBceDAxXHgwMiIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxs
X2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCks
IFtyYW5nZSgwLCAzKSwgcmFuZ2UoNSwgNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdl
c2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX3R3b19yYW5nZXMoc2VsZik6CisgICAgICAgIGRh
dGEgPSBiIlx4MDRceDAyXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwIgorCisgICAgICAgICMgcGFy
c2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRl
bGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKSwgcmFuZ2UoNCwgNSld
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFs
aXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBh
Y2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0
X2J1aWxkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNlMjMxMWQ5OTEyMGYxZTdiNGE0MjBiYTVkMWM0ZWM2
ZjdjYWQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tl
dF9idWlsZGVyLnB5CkBAIC0wLDAgKzEsNTY5IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0
Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5jcnlwdG8gaW1wb3J0IENyeXB0b1BhaXIKK2Zyb20g
YWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwK
KyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAg
UXVpY0ZyYW1lVHlwZSwKKyAgICBRdWljUHJvdG9jb2xWZXJzaW9uLAorKQorZnJvbSBhaW9xdWlj
LnF1aWMucGFja2V0X2J1aWxkZXIgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAg
ICBRdWljUGFja2V0QnVpbGRlclN0b3AsCisgICAgUXVpY1NlbnRQYWNrZXQsCispCitmcm9tIGFp
b3F1aWMudGxzIGltcG9ydCBFcG9jaAorCisKK2RlZiBjcmVhdGVfYnVpbGRlcihpc19jbGllbnQ9
RmFsc2UpOgorICAgIHJldHVybiBRdWljUGFja2V0QnVpbGRlcigKKyAgICAgICAgaG9zdF9jaWQ9
Ynl0ZXMoOCksCisgICAgICAgIGlzX2NsaWVudD1pc19jbGllbnQsCisgICAgICAgIHBhY2tldF9u
dW1iZXI9MCwKKyAgICAgICAgcGVlcl9jaWQ9Ynl0ZXMoOCksCisgICAgICAgIHBlZXJfdG9rZW49
YiIiLAorICAgICAgICBzcGluX2JpdD1GYWxzZSwKKyAgICAgICAgdmVyc2lvbj1RdWljUHJvdG9j
b2xWZXJzaW9uLkRSQUZUXzI1LAorICAgICkKKworCitkZWYgY3JlYXRlX2NyeXB0bygpOgorICAg
IGNyeXB0byA9IENyeXB0b1BhaXIoKQorICAgIGNyeXB0by5zZXR1cF9pbml0aWFsKGJ5dGVzKDgp
LCBpc19jbGllbnQ9VHJ1ZSwgdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1KQor
ICAgIHJldHVybiBjcnlwdG8KKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX2VtcHR5KHNlbGYpOgorICAgICAgICBidWls
ZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkK
KworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlw
dG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3Nw
YWNlLCAxMjM2KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRlci5wYWNrZXRfaXNfZW1w
dHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNr
ZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFn
cmFtcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAg
ICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNr
ZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3RfbG9uZ19oZWFkZXJfcGFkZGluZyhzZWxmKToK
KyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGx5IHBh
ZGRlZAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBj
cnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0
X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFt
ZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygxMDApKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMg
SU5JVElBTCwgZW1wdHkKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVf
SU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1z
LCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtc1sw
XSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAg
ICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBp
bl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVl
LAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAg
ICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5
cGU9UEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0x
MjgwLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAg
ICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBh
Y2tldF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRlcl9pbml0aWFsX2NsaWVu
dF8yKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PVRy
dWUpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMgSU5JVElB
TCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVf
SU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFt
ZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVp
bGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShi
dWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwKKyAgICAgICAgYnVp
bGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5Cisg
ICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAg
ICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxk
ZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAyKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBv
Y2guSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAg
ICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
aXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUws
CisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBl
cG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAg
ICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tl
dF9udW1iZXI9MSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVf
SU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBi
dWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAy
KQorCisgICAgZGVmIHRlc3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9j
cnlwdG8oKQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tl
dChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcygxMDApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgICMgSU5JVElBTCwgZW1wdHkKKyAgICAgICAgYnVpbGRlci5z
dGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRh
Z3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGRhdGFncmFtc1swXSksIDE0NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
UXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUws
CisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19w
YWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAg
ICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAg
ICAgICAgICAgICBzZW50X2J5dGVzPTE0NSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRlc3RfbG9u
Z19oZWFkZXJfdGhlbl9zaG9ydF9oZWFkZXIoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVh
dGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAg
ICMgSU5JVElBTCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFD
S0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxk
ZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5z
dGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMo
Ynl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVt
cHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgICMgT05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICBi
dWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAg
ICMgT05FX1JUVCwgZW1wdHkKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdy
YW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFt
c1swXSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtc1sxXSks
IDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAor
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAg
ICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9m
bGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9
UEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xMjgw
LAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisg
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5n
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAgICAgICAgICAgICAgICAgcGFj
a2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9i
eXRlcz0xMjgwLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICAp
CisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVp
bGRlci5wYWNrZXRfbnVtYmVyLCAyKQorCisgICAgZGVmIHRlc3RfbG9uZ19oZWFkZXJfdGhlbl9s
b25nX2hlYWRlcihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAg
ICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgIyBJTklUSUFMCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEy
MzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDE5OSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBIQU5EU0hBS0UK
KyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSEFORFNIQUtFLCBjcnlw
dG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3Nw
YWNlLCA5OTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlw
ZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBPTkVf
UlRUCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDY2NikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVU
eXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMjk5KSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNo
ZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNo
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgOTE0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2gu
SU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAg
ICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNf
Y3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAs
CisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisg
ICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MjQ0LAorICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2No
PUVwb2NoLkhBTkRTSEFLRSwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
bnVtYmVyPTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0hB
TkRTSEFLRSwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0zNDMsCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTIsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MzI3LAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAzKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX2VtcHR5KHNlbGYpOgorICAgICAg
ICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5
cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRU
LCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxp
Z2h0X3NwYWNlLCAxMjUzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1z
LCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YWdyYW1zLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXRzLCBbXSkKKworICAg
ICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBh
Y2tldF9udW1iZXIsIDApCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfcGFkZGluZyhzZWxm
KToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgY3J5cHRvID0g
Y3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgIyBPTkVfUlRULCBmdWxsIGxlbmd0aAorICAgICAg
ICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjUz
KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF9mbGlnaHRfYnl0ZXMoc2Vs
Zik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5dGVzIGxpbWl0cyBzZW50IGRh
dGEuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAg
ICAgICBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMgPSAxMDAwCisKKyAgICAgICAgY3J5cHRvID0g
Y3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSwgOTczKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgICAgIGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3Jh
bXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGRhdGFncmFtc1swXSksIDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBwYWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1
aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRULAor
ICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
aXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFj
a2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAgICAg
ICAgICAgICAgc2VudF9ieXRlcz0xMDAwLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hv
cnRfaGVhZGVyX21heF9mbGlnaHRfYnl0ZXNfemVybyhzZWxmKToKKyAgICAgICAgIiIiCisgICAg
ICAgIG1heF9mbGlnaHRfYnl0ZXMgPSAwIG9ubHkgYWxsb3dzIEFDS3MgYW5kIENPTk5FQ1RJT05f
Q0xPU0UuCisKKyAgICAgICAgQ2hlY2sgQ1JZUFRPIGlzIG5vdCBhbGxvd2VkLgorICAgICAgICAi
IiIKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5t
YXhfZmxpZ2h0X2J5dGVzID0gMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToK
KyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNr
ZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFn
cmFtcyksIDApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVh
ZGVyX21heF9mbGlnaHRfYnl0ZXNfemVyb19hY2soc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBtYXhfZmxpZ2h0X2J5dGVzID0gMCBvbmx5IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NM
T1NFLgorCisgICAgICAgIENoZWNrIEFDSyBpcyBhbGxvd2VkLgorICAgICAgICAiIiIKKyAgICAg
ICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0
X2J5dGVzID0gMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAg
IGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAg
ICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkFDSykKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNjQpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgICAgIGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3Jh
bXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGRhdGFncmFtc1swXSksIDkyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWlj
U2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAg
ICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFj
a2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAg
ICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAg
ICAgICAgICAgIHNlbnRfYnl0ZXM9OTIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9y
dF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBt
YXhfdG90YWxfYnl0ZXMgZG9lc24ndCBhbGxvdyBhbnkgcGFja2V0cy4KKyAgICAgICAgIiIiCisg
ICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X3Rv
dGFsX2J5dGVzID0gMTEKKworICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAg
ICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8p
CisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRz
ID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1zLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXRzLCBbXSkKKworICAgICAgICAjIGNo
ZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1i
ZXIsIDApCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzIoc2Vs
Zik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfdG90YWxfYnl0ZXMgYWxsb3dzIGEgc2hvcnQg
cGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkK
KyAgICAgICAgYnVpbGRlci5tYXhfdG90YWxfYnl0ZXMgPSA4MDAKKworICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA3NzMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRf
ZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVz
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0
YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCA4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz04MDAsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3No
b3J0X2hlYWRlcl9tYXhfdG90YWxfYnl0ZXNfMyhzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNy
ZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfdG90YWxfYnl0ZXMgPSAyMDAwCisK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVm
ID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVm
LnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2OTMpCisg
ICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisg
ICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3ApOgor
ICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5
cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFj
a2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAx
MjgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCA3MjApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAg
ICBlcG9jaD1FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAg
ICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBh
Y2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZ
UEVfT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAg
ICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2Zs
aWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1Q
QUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTcyMCwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAg
ICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0
X251bWJlciwgMikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Jhbmdlc2V0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmFuZ2VzZXQucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI0
MDhjOGFjNmM1MjM2ZDEzNjM0OGFkMjRhYmY5ZmE2ZDg1OTM4ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5CkBAIC0wLDAgKzEsMjM3IEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5yYW5nZXNl
dCBpbXBvcnQgUmFuZ2VTZXQKKworCitjbGFzcyBSYW5nZVNldFRlc3QoVGVzdENhc2UpOgorICAg
IGRlZiB0ZXN0X2FkZF9zaW5nbGVfZHVwbGljYXRlKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpXSkKKworICAgICAgICByYW5nZXNl
dC5hZGQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jhbmdl
KDAsIDEpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9zaW5nbGVfb3JkZXJlZChzZWxmKToKKyAgICAg
ICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAg
ICAgICAgcmFuZ2VzZXQuYWRkKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5n
ZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAzKV0pCisKKyAgICBk
ZWYgdGVzdF9hZGRfc2luZ2xlX21lcmdlKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdl
U2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpXSkKKworICAgICAgICByYW5nZXNldC5hZGQo
MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEp
LCByYW5nZSgyLCAzKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAzKV0pCisKKyAgICBkZWYgdGVz
dF9hZGRfc2luZ2xlX3JldmVyc2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQo
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgMyldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgMyldKQor
CisgICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX29yZGVy
ZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdl
c2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNCldKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCg0LCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQp
LCBbcmFuZ2UoMCwgNildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX21lcmdlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwg
MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIp
XSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCA1KV0pCisKKyAgICBkZWYgdGVzdF9hZGRfcmFuZ2Vfb3ZlcmxhcChzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgw
LCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSldKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgxLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgNSldKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX292ZXJsYXBf
MihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDIsIDQpCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICByYW5nZXNl
dC5hZGQoMTAsIDEyKQorICAgICAgICByYW5nZXNldC5hZGQoMTYsIDE4KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChyYW5nZXNldCksIFtyYW5nZSgyLCA0KSwg
cmFuZ2UoNiwgOCksIHJhbmdlKDEwLCAxMiksIHJhbmdlKDE2LCAxOCldCisgICAgICAgICkKKwor
ICAgICAgICByYW5nZXNldC5hZGQoMSwgMTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlz
dChyYW5nZXNldCksIFtyYW5nZSgxLCAxNSksIHJhbmdlKDE2LCAxOCldKQorCisgICAgZGVmIHRl
c3RfYWRkX3JhbmdlX3JldmVyc2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQo
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoNiwgOCldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgz
LCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMywg
NSksIHJhbmdlKDYsIDgpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1
KSwgcmFuZ2UoNiwgOCldKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9jb250
aWd1b3VzKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICBy
YW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSg0LCA2
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA2KV0pCisKKyAgICBkZWYgdGVzdF9hZGRfcmFu
Z2VfdW5vcmRlcmVkX3NwYXJzZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDYs
IDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KSwgcmFuZ2UoNiwgOCldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgzLCA1KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDMsIDUp
LCByYW5nZSg2LCA4KV0pCisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKKyAgICAgICAg
cmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAxMCkKKyAgICAg
ICAgcmFuZ2VzZXQuYWRkKDIwLCAzMCkKKworICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgwLCAz
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMywgMTAp
LCByYW5nZSgyMCwgMzApXSkKKworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X25vX2NoYW5nZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHJhbmdlc2V0LmFkZCg1
LCAxMCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDE1LCAyMCkKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDI1LCAzMCkKKworICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgwLCA1KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjAp
LCByYW5nZSgyNSwgMzApXSkKKworICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgxMCwgMTUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSg1LCAxMCksIHJh
bmdlKDE1LCAyMCksIHJhbmdlKDI1LCAzMCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Rfb3Zl
cmxhcChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHJhbmdl
c2V0LmFkZCgxLCA0KQorICAgICAgICByYW5nZXNldC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDEwLCAyMCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMwLCA0MCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgNCks
IHJhbmdlKDYsIDgpLCByYW5nZSgxMCwgMjApLCByYW5nZSgzMCwgNDApXQorICAgICAgICApCisK
KyAgICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgp
LCByYW5nZSgxMCwgMjApLCByYW5nZSgzMCwgNDApXQorICAgICAgICApCisKKyAgICAgICAgcmFu
Z2VzZXQuc3VidHJhY3QoMywgMTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5n
ZXNldCksIFtyYW5nZSgyLCAzKSwgcmFuZ2UoMTEsIDIwKSwgcmFuZ2UoMzAsIDQwKV0pCisKKyAg
ICBkZWYgdGVzdF9zdWJ0cmFjdF9zcGxpdChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5n
ZVNldCgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAxMCkKKyAgICAgICAgcmFuZ2VzZXQuc3Vi
dHJhY3QoMiwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jh
bmdlKDAsIDIpLCByYW5nZSg1LCAxMCldKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAg
ICAgICAgIGJvb2woUmFuZ2VTZXQoKSkKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgw
IGluIHJhbmdlc2V0KQorCisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3JhbmdlKDAsIDEp
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKworICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0
KFtyYW5nZSgwLCAxKSwgcmFuZ2UoMywgNildKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCBp
biByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgxIGluIHJhbmdlc2V0KQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKDIgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgzIGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNCBpbiByYW5nZXNl
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDUgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoNiBpbiByYW5nZXNldCkKKworICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgorICAg
ICAgICByMCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHIxID0gUmFuZ2VTZXQo
W3JhbmdlKDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHIyID0gUmFuZ2VTZXQoW3Jhbmdl
KDMsIDQpLCByYW5nZSgxLCAyKV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIwID09IHIw
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIwID09IHIxKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHIwID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIxKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHIxID09IHIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cjEgPT0gcjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjEgPT0gMCkKKworICAgICAgICBz
ZWxmLmFzc2VydFRydWUocjIgPT0gcjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMiA9PSBy
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMiA9PSByMCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShyMiA9PSAwKQorCisgICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmFuZ2VzZXQp
LCAwKQorCisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmFuZ2VzZXQpLCAxKQorCisgICAgZGVmIHRlc3RfcG9w
KHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2Uo
MywgNCldKQorICAgICAgICByID0gcmFuZ2VzZXQuc2hpZnQoKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHIsIHJhbmdlKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMywgNCldKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAg
ICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHJhbmdlc2V0KSwgIlJhbmdlU2V0KFtyYW5nZSgxLCAy
KSwgcmFuZ2UoMywgNCldKSIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9y
ZWNvdmVyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JlY292ZXJ5LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzMTNmOGZjOGE0YzQwZmI2NDMxMTQ0YjhjMGZiYmRiN2E4MGJhNTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZWNvdmVyeS5weQpAQCAtMCwwICsxLDIy
NyBAQAoraW1wb3J0IG1hdGgKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20g
YWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0IFBBQ0tF
VF9UWVBFX0lOSVRJQUwsIFBBQ0tFVF9UWVBFX09ORV9SVFQKK2Zyb20gYWlvcXVpYy5xdWljLnBh
Y2tldF9idWlsZGVyIGltcG9ydCBRdWljU2VudFBhY2tldAorZnJvbSBhaW9xdWljLnF1aWMucmFu
Z2VzZXQgaW1wb3J0IFJhbmdlU2V0Citmcm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQg
KAorICAgIFF1aWNQYWNrZXRQYWNlciwKKyAgICBRdWljUGFja2V0UmVjb3ZlcnksCisgICAgUXVp
Y1BhY2tldFNwYWNlLAorICAgIFF1aWNSdHRNb25pdG9yLAorKQorCisKK2RlZiBzZW5kX3Byb2Jl
KCk6CisgICAgcGFzcworCisKK2NsYXNzIFF1aWNQYWNrZXRQYWNlclRlc3QoVGVzdENhc2UpOgor
ICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5wYWNlciA9IFF1aWNQYWNrZXRQYWNl
cigpCisKKyAgICBkZWYgdGVzdF9ub19tZWFzdXJlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MC4wKSkKKyAgICAgICAg
c2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MC4wKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNl
bGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTAuMCkKKworICAgIGRlZiB0ZXN0X3dpdGhf
bWVhc3VyZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIu
bmV4dF9zZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVy
X3NlbmQobm93PTAuMCkKKworICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9yYXRlKGNvbmdlc3Rp
b25fd2luZG93PTEyODAwMDAsIHNtb290aGVkX3J0dD0wLjA1KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucGFjZXIuYnVja2V0X21heCwgMC4wMDA4KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucGFjZXIuYnVja2V0X3RpbWUsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLnBhY2VyLnBhY2tldF90aW1lLCAwLjAwMDA1KQorCisgICAgICAgICMgMTYgcGFj
a2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgxNik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjApKQorICAgICAgICAgICAg
c2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMCksIDEuMDAwMDUp
CisKKyAgICAgICAgIyAyIHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0x
LjAwMDA1KSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTEu
MDAwMDUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VsZi5wYWNlci5uZXh0X3Nl
bmRfdGltZShub3c9MS4wMDAwNSksIDEuMDAwMSkKKworICAgICAgICAjIDEgcGFja2V0CisgICAg
ICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAw
MSkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTEuMDAwMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0xLjAwMDEpLCAxLjAwMDE1KQorCisgICAgICAgICMgMiBwYWNrZXRzCisgICAgICAgIGZvciBp
IGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5u
ZXh0X3NlbmRfdGltZShub3c9MS4wMDAxNSkpCisgICAgICAgICAgICBzZWxmLnBhY2VyLnVwZGF0
ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDE1KQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFs
KHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpLCAxLjAwMDIpCisKKworY2xh
c3MgUXVpY1BhY2tldFJlY292ZXJ5VGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYp
OgorICAgICAgICBzZWxmLklOSVRJQUxfU1BBQ0UgPSBRdWljUGFja2V0U3BhY2UoKQorICAgICAg
ICBzZWxmLkhBTkRTSEFLRV9TUEFDRSA9IFF1aWNQYWNrZXRTcGFjZSgpCisgICAgICAgIHNlbGYu
T05FX1JUVF9TUEFDRSA9IFF1aWNQYWNrZXRTcGFjZSgpCisKKyAgICAgICAgc2VsZi5yZWNvdmVy
eSA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAgICAgIGlzX2NsaWVudF93aXRob3V0XzFy
dHQ9RmFsc2UsIHNlbmRfcHJvYmU9c2VuZF9wcm9iZQorICAgICAgICApCisgICAgICAgIHNlbGYu
cmVjb3Zlcnkuc3BhY2VzID0gWworICAgICAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNFLAorICAg
ICAgICAgICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UsCisgICAgICAgICAgICBzZWxmLk9ORV9SVFRf
U1BBQ0UsCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2Rpc2NhcmRfc3BhY2Uoc2VsZik6Cisg
ICAgICAgIHNlbGYucmVjb3ZlcnkuZGlzY2FyZF9zcGFjZShzZWxmLklOSVRJQUxfU1BBQ0UpCisK
KyAgICBkZWYgdGVzdF9vbl9hY2tfcmVjZWl2ZWRfYWNrX2VsaWNpdGluZyhzZWxmKToKKyAgICAg
ICAgcGFja2V0ID0gUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICBlcG9jaD10bHMuRXBvY2gu
T05FX1JUVCwKKyAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgaXNfYWNr
X2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAg
ICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAg
ICBzZW50X3RpbWU9MC4wLAorICAgICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRU
X1NQQUNFCisKKyAgICAgICAgIyDCoHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnku
b25fcGFja2V0X3NlbnQocGFja2V0LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBh
Y2snZAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAg
IHNwYWNlLCBhY2tfcmFuZ2VzZXQ9UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0w
LjAsIG5vdz0xMC4wCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJl
Y292ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFj
ZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoc2VsZi5yZWNvdmVyeS5fcnR0X2luaXRpYWxpemVkKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9sYXRlc3QsIDEwLjApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgMTAuMCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfc21vb3RoZWQsIDEwLjApCisK
KyAgICBkZWYgdGVzdF9vbl9hY2tfcmVjZWl2ZWRfbm9uX2Fja19lbGljaXRpbmcoc2VsZik6Cisg
ICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVw
b2NoLk9ORV9SVFQsCisgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmc9RmFsc2UsCisgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNl
LAorICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgcGFja2V0X3R5cGU9
UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAg
ICAgICAgIHNlbnRfdGltZT0xMjMuNDUsCisgICAgICAgICkKKyAgICAgICAgc3BhY2UgPSBzZWxm
Lk9ORV9SVFRfU1BBQ0UKKworICAgICAgICAjIMKgcGFja2V0IHNlbnQKKyAgICAgICAgc2VsZi5y
ZWNvdmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisgICAgICAgICMg
cGFja2V0IGFjaydkCisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fYWNrX3JlY2VpdmVkKAorICAg
ICAgICAgICAgc3BhY2UsIGFja19yYW5nZXNldD1SYW5nZVNldChbcmFuZ2UoMCwgMSldKSwgYWNr
X2RlbGF5PTAuMCwgbm93PTEwLjAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisgICAgICAgICMgY2hlY2sgUlRU
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yZWNvdmVyeS5fcnR0X2luaXRpYWxpemVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9sYXRlc3QsIDAu
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfbWluLCBtYXRo
LmluZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfc21vb3Ro
ZWQsIDAuMCkKKworICAgIGRlZiB0ZXN0X29uX3BhY2tldF9sb3N0X2NyeXB0byhzZWxmKToKKyAg
ICAgICAgcGFja2V0ID0gUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICBlcG9jaD10bHMuRXBv
Y2guSU5JVElBTCwKKyAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgaXNf
YWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAor
ICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFD
S0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAg
ICAgIHNlbnRfdGltZT0wLjAsCisgICAgICAgICkKKyAgICAgICAgc3BhY2UgPSBzZWxmLklOSVRJ
QUxfU1BBQ0UKKworICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwg
c3BhY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9m
bGlnaHQsIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGlu
Z19pbl9mbGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRf
cGFja2V0cyksIDEpCisKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5fZGV0ZWN0X2xvc3Moc3BhY2Us
IG5vdz0xLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19p
bl9mbGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGlu
Z19pbl9mbGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRf
cGFja2V0cyksIDApCisKKworY2xhc3MgUXVpY1J0dE1vbml0b3JUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9tb25pdG9yKHNlbGYpOgorICAgICAgICBtb25pdG9yID0gUXVpY1J0dE1vbml0
b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2lu
ZyhydHQ9MTAsIG5vdz0xMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9z
YW1wbGVzLCBbMTAsIDAuMCwgMC4wLCAwLjAsIDAuMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobW9uaXRvci5fcmVhZHkpCisKKyAgICAgICAgIyBub3QgdGFrZW4gaW50byBhY2NvdW50Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEs
IG5vdz0xMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBb
MTAsIDAuMCwgMC4wLCAwLjAsIDAuMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5fcmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNy
ZWFzaW5nKHJ0dD0xMSwgbm93PTEwMDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0
b3IuX3NhbXBsZXMsIFsxMCwgMTEsIDAuMCwgMC4wLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTIsIG5vdz0xMDAyKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAxMiwgMC4wLCAwLjBdKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTMsIG5vdz0xMDAzKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAxMiwgMTMsIDAu
MF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5fcmVhZHkpCisKKyAgICAgICAg
IyB3ZSBub3cgaGF2ZSBlbm91Z2ggc2FtcGxlcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1v
bml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTE0LCBub3c9MTAwNCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAxNF0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25pdG9yLl9yZWFkeSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTIwLCBub3c9MTAwNSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MzAsIG5vdz0xMDA2
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD00MCwg
bm93PTEwMDcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywg
MCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmco
cnR0PTUwLCBub3c9MTAwOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5j
cmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5j
cmVhc2luZyhydHQ9NjAsIG5vdz0xMDA5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25p
dG9yLl9pbmNyZWFzZXMsIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlz
X3J0dF9pbmNyZWFzaW5nKHJ0dD03MCwgbm93PTEwMTApKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1vbml0b3IuX2luY3JlYXNlcywgMikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1v
bml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTgwLCBub3c9MTAxMSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9OTAsIG5vdz0xMDEyKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDQpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwMCwgbm93PTEwMTMp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgNSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfcmV0cnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc2ZjAyM2JmOTNkYTRjNjllYjlhYWQzZTE5
NjhiZmFmZjM3YTM0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3JldHJ5LnB5CkBAIC0wLDAgKzEsMzAgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5xdWljLnJldHJ5IGltcG9ydCBRdWljUmV0cnlUb2tlbkhhbmRsZXIK
KworCitjbGFzcyBRdWljUmV0cnlUb2tlbkhhbmRsZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYg
dGVzdF9yZXRyeV90b2tlbihzZWxmKToKKyAgICAgICAgYWRkciA9ICgiMTI3LjAuMC4xIiwgMTIz
NCkKKyAgICAgICAgY2lkID0gYiJceDA4XHgwN1x4MDZcMDVceDA0XHgwM1x4MDJceDAxIgorCisg
ICAgICAgIGhhbmRsZXIgPSBRdWljUmV0cnlUb2tlbkhhbmRsZXIoKQorCisgICAgICAgICMgY3Jl
YXRlIHRva2VuCisgICAgICAgIHRva2VuID0gaGFuZGxlci5jcmVhdGVfdG9rZW4oYWRkciwgY2lk
KQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0b2tlbikKKworICAgICAgICAjIHZhbGlk
YXRlIHRva2VuIC0gb2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnZhbGlkYXRl
X3Rva2VuKGFkZHIsIHRva2VuKSwgY2lkKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSBl
bXB0eQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgor
ICAgICAgICAgICAgaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCBiIiIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkNpcGhlcnRl
eHQgbGVuZ3RoIG11c3QgYmUgZXF1YWwgdG8ga2V5IHNpemUuIgorICAgICAgICApCisKKyAgICAg
ICAgIyB2YWxpZGF0ZSB0b2tlbiAtIHdyb25nIGFkZHJlc3MKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRsZXIudmFsaWRh
dGVfdG9rZW4oKCIxLjIuMy40IiwgMTIzNDUpLCB0b2tlbikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlJlbW90ZSBhZGRyZXNzIGRvZXMgbm90IG1hdGNoLiIp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUzN2FlMmVkMTJiNmY2YzA0
MmQwOTkwNGVjZmI0ZjBjMmRmNTdlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X3N0cmVhbS5weQpAQCAtMCwwICsxLDQ0NiBAQAorZnJvbSB1bml0dGVzdCBpbXBv
cnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRh
UmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUXVpY1N0cmVhbUZyYW1l
Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3Rh
dGUKK2Zyb20gYWlvcXVpYy5xdWljLnN0cmVhbSBpbXBvcnQgUXVpY1N0cmVhbQorCisKK2NsYXNz
IFF1aWNTdHJlYW1UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9yZWN2X2VtcHR5KHNlbGYp
OgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkKKworICAgICAgICAj
IGVtcHR5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9mcmFtZShRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAgZGVmIHRlc3RfcmVj
dl9vcmRlcmVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0w
KQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgc3RhcnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0w
LCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0
YT1iIjAxMjM0NTY3IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCA4
KQorCisgICAgICAgICMgYWRkIG1vcmUgZGF0YQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRh
dGE9YiI4OTAxMjM0NSIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIi
ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDE2KQor
CisgICAgICAgICMgYWRkIGRhdGEgYW5kIGZpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTE2LCBk
YXRhPWIiNjc4OTAxMjMiLCBmaW49VHJ1ZSkpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2Vp
dmVkKGRhdGE9YiI2Nzg5MDEyMyIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZl
ciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5n
ZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0
YXJ0LCAyNCkKKworICAgIGRlZiB0ZXN0X3JlY3ZfdW5vcmRlcmVkKHNlbGYpOgorICAgICAgICBz
dHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQg
b2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5h
ZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSksIE5v
bmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnl0
ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDA4OTAxMjM0NSIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9yZWN2X3JhbmdlcyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBhZGQgZGF0YSBh
dCBvZmZzZXQgMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFt
LmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1Njc4OTAxMjM0NSIs
IGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMTYpCisKKyAgICBkZWYg
dGVzdF9yZWN2X29mZnNldF9vbmx5KHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFt
KHN0cmVhbV9pZD0wKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9
MCwgZGF0YT1iIiIpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJl
YW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5f
cmVjdl9idWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgOAor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1l
KG9mZnNldD04LCBkYXRhPWIiIikpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiXHgwMFx4MDBceDAwXHgw
MFx4MDBceDAwXHgwMFx4MDAiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAgZGVmIHRlc3RfcmVjdl9hbHJlYWR5
X2Z1bGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVh
bV9pZD0wKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1l
KG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVj
ZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1
ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9y
YW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVy
X3N0YXJ0LCA4KQorCisgICAgICAgICMgYWRkIGRhdGEgYWdhaW4gYXQgb2Zmc2V0IDAKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0
cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksIE5vbmUKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9wYXJ0aWFsbHlfY29uc3VtZWQoc2VsZik6Cisg
ICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1l
KG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVj
ZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAor
ICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVh
bS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1Njc4OTAx
MjM0NSIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUi
LCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVm
IHRlc3RfcmVjdl9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFt
X2lkPTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5h
ZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5kX3N0cmVh
bT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9
OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVjdl9maW5fb3V0X29mX29yZGVyKHNlbGYpOgor
ICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgICMgYWRk
IGRhdGEgYXQgb2Zmc2V0IDggd2l0aCBGSU4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRh
PWIiODkwMTIzNDUiLCBmaW49VHJ1ZSkpLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgKQor
CisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0w
LCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0
YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVjdl9maW5fdGhlbl9kYXRhKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIiIsIGZpbj1UcnVlKSkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNtOgorICAgICAgICAgICAg
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2
NyIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGF0YSBy
ZWNlaXZlZCBiZXlvbmQgRklOIikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluX3R3aWNlKHNlbGYp
OgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCks
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVh
bS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiLCBm
aW49VHJ1ZSkpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0
NSIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVh
bUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiLCBmaW49VHJ1ZSkpLAorICAgICAgICAg
ICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVjdl9maW5fd2l0aG91dF9kYXRhKHNl
bGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFt
RnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiLCBmaW49VHJ1ZSkpLAorICAgICAgICAgICAgU3RyZWFt
RGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhKHNlbGYpOgorICAgICAgICBzdHJlYW0g
PSBRdWljU3RyZWFtKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCwgMCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJh
bWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1l
KQorCisgICAgICAgICMgd3JpdGUgZGF0YQorICAgICAgICBzdHJlYW0ud3JpdGUoYiIwMTIzNDU2
Nzg5MDEyMzQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFt
Lm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJh
bWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUuZmlu
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDgsIDE2KV0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCisK
KyAgICAgICAgIyBzZW5kIGFub3RoZXIgY2h1bmsKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiI4OTAxMjM0
NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUuZmluKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNl
bmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9z
ZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9z
ZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBmaXJzdCBjaHVuayBnZXRzIGFja25vd2xlZGdl
ZAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5BQ0tF
RCwgMCwgOCkKKworICAgICAgICAjIHNlY29uZCBjaHVuayBnZXRzIGFja25vd2xlZGdlZAorICAg
ICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgOCwg
MTYpCisKKyAgICBkZWYgdGVzdF9zZW5kX2RhdGFfYW5kX2ZpbihzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAg
ICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEgYW5kIEVPRgorICAgICAgICBzdHJlYW0u
d3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1UcnVlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKwor
ICAgICAgICAjIHNlbmQgYSBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUub2Zmc2V0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0
X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5rCisgICAgICAg
IGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZy
YW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnJhbWUuZmlu
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBu
b3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRh
X2xvc3Qoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisgICAgICAgICMg
bm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBkYXRh
IGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVuZF9z
dHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFt
Lm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNT
dHJlYW1GcmFtZShkYXRhPWIiMDEyMzQ1NjciLCBmaW49RmFsc2UsIG9mZnNldD0wKQorICAgICAg
ICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyks
IFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3Nl
bmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5rCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3Ry
ZWFtRnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikK
KworICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKHN0cmVhbS5nZXRfZnJhbWUoOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChz
dHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKworICAgICAgICAjIGEgY2h1bmsgZ2V0cyBsb3N0Cisg
ICAgICAgIHN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkxPU1QsIDAs
IDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyks
IFtyYW5nZSgwLCA4KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFt
RnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisK
KyAgICBkZWYgdGVzdF9zZW5kX2RhdGFfbG9zdF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9
IFF1aWNTdHJlYW0oKQorCisgICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBm
cmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJh
bWUpCisKKyAgICAgICAgIyB3cml0ZSBkYXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRl
KGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVuZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAg
ICAgIyBzZW5kIGEgY2h1bmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJlYW1GcmFtZShkYXRhPWIiMDEyMzQ1NjciLCBm
aW49RmFsc2UsIG9mZnNldD0wKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2Vu
ZCBhbm90aGVyIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBz
dHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmlu
PVRydWUsIG9mZnNldD04KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlz
dChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKworICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBz
ZW5kCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN0cmVhbS5nZXRfZnJhbWUoOCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKworICAg
ICAgICAjIGEgY2h1bmsgZ2V0cyBsb3N0CisgICAgICAgIHN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5
KFF1aWNEZWxpdmVyeVN0YXRlLkxPU1QsIDgsIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNl
bmQgY2h1bmsgYWdhaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJlYW1GcmFtZShkYXRhPWIiODkwMTIzNDUiLCBmaW49
VHJ1ZSwgb2Zmc2V0PTgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9ibG9ja2VkKHNl
bGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKyAgICAgICAgbWF4X29mZnNldCA9
IDEyCisKKyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3Ry
ZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShm
cmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5n
KSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQs
IDApCisKKyAgICAgICAgIyB3cml0ZSBkYXRhLCBzZW5kIGEgY2h1bmsKKyAgICAgICAgc3RyZWFt
LndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1Njci
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChmcmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChz
dHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBpcyBs
aW1pdGVkIGJ5IHBlZXIKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9v
ZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiI4OTAxIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUub2Zmc2V0LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFt
Ll9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMTIsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDEyKQorCisgICAgICAgICMgdW5hYmxlIHRvIHNl
bmQsIGJsb2NrZWQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMTIsIDE2KV0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDEyKQorCisgICAg
ICAgICMgd3JpdGUgbW9yZSBkYXRhLCBzdGlsbCBibG9ja2VkCisgICAgICAgIHN0cmVhbS53cml0
ZShiImFiY2RlZmdoIikKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9v
ZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMTIsIDI0KV0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDEyKQorCisg
ICAgICAgICMgcGVlciByYWlzZXMgbGltaXQsIHNlbmQgc29tZSBkYXRhCisgICAgICAgIG1heF9v
ZmZzZXQgKz0gOAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNl
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjIzNDVhYmNkIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUub2Zmc2V0LCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVh
bS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDIwLCAyNCldKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAyMCkKKworICAgICAgICAjIHBlZXIgcmFpc2Vz
IGxpbWl0IGFnYWluLCBzZW5kIHJlbWFpbmluZyBkYXRhCisgICAgICAgIG1heF9vZmZzZXQgKz0g
OAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiImVmZ2giKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZz
ZXQsIDIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRp
bmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgMjQpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBmcmFtZSA9
IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoZnJhbWUpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Zpbl9vbmx5KHNlbGYpOgorICAgICAgICBz
dHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l
KGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIiIs
IGVuZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9i
dWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQs
IDApCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkgICMgRklYTUU/CisgICAgICAgIGZy
YW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFt
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfZmluX29ubHlfZGVzcGl0ZV9ibG9ja2VkKHNlbGYpOgorICAg
ICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5
ZXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkK
KyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0
SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgRU9GCisgICAgICAgIHN0cmVhbS53cml0
ZShiIiIsIGVuZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0u
c2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5v
ZmZzZXQsIDApCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkgICMgRklYTUU/CisgICAg
ICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19l
bXB0eSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmRkNTZkZWI4YmFlYWM5NmZj
ZDFhM2ZlMGJiNWY5NDM1ZDdjMGMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfdGxzLnB5CkBAIC0wLDAgKzEsMTQwMCBAQAoraW1wb3J0IGJpbmFzY2lpCitpbXBv
cnQgZGF0ZXRpbWUKK2ltcG9ydCBzc2wKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCitm
cm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKK2Zyb20gY3J5cHRvZ3JhcGh5LmV4Y2Vw
dGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkQWxnb3JpdGhtCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorZnJvbSBjcnlwdG9ncmFwaHkuaGF6
bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBvcnQgZWMKKworZnJvbSBhaW9xdWljIGltcG9y
dCB0bHMKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9y
Citmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlv
bgorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgKAorICAgIENlcnRpZmljYXRlLAorICAgIENlcnRp
ZmljYXRlVmVyaWZ5LAorICAgIENsaWVudEhlbGxvLAorICAgIENvbnRleHQsCisgICAgRW5jcnlw
dGVkRXh0ZW5zaW9ucywKKyAgICBGaW5pc2hlZCwKKyAgICBOZXdTZXNzaW9uVGlja2V0LAorICAg
IFNlcnZlckhlbGxvLAorICAgIFN0YXRlLAorICAgIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVz
LAorICAgIHB1bGxfYmxvY2ssCisgICAgcHVsbF9jZXJ0aWZpY2F0ZSwKKyAgICBwdWxsX2NlcnRp
ZmljYXRlX3ZlcmlmeSwKKyAgICBwdWxsX2NsaWVudF9oZWxsbywKKyAgICBwdWxsX2VuY3J5cHRl
ZF9leHRlbnNpb25zLAorICAgIHB1bGxfZmluaXNoZWQsCisgICAgcHVsbF9uZXdfc2Vzc2lvbl90
aWNrZXQsCisgICAgcHVsbF9zZXJ2ZXJfaGVsbG8sCisgICAgcHVzaF9jZXJ0aWZpY2F0ZSwKKyAg
ICBwdXNoX2NlcnRpZmljYXRlX3ZlcmlmeSwKKyAgICBwdXNoX2NsaWVudF9oZWxsbywKKyAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zLAorICAgIHB1c2hfZmluaXNoZWQsCisgICAgcHVzaF9u
ZXdfc2Vzc2lvbl90aWNrZXQsCisgICAgcHVzaF9zZXJ2ZXJfaGVsbG8sCisgICAgdmVyaWZ5X2Nl
cnRpZmljYXRlLAorKQorCitmcm9tIC51dGlscyBpbXBvcnQgKAorICAgIFNFUlZFUl9DQUNFUlRG
SUxFLAorICAgIFNFUlZFUl9DRVJURklMRSwKKyAgICBTRVJWRVJfS0VZRklMRSwKKyAgICBnZW5l
cmF0ZV9lY19jZXJ0aWZpY2F0ZSwKKyAgICBsb2FkLAorKQorCitDRVJUSUZJQ0FURV9EQVRBID0g
bG9hZCgidGxzX2NlcnRpZmljYXRlLmJpbiIpWzExOi0yXQorQ0VSVElGSUNBVEVfVkVSSUZZX1NJ
R05BVFVSRSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIilbLTM4NDpdCisKK0NM
SUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAg
IGIiZmYwMDAwMTEwMDMxMDAwNTAwMDQ4MDEwMDAwMDAwMDYwMDA0ODAxMDAwMDAwMDA3MDAwNDgw
MTAwMDAwMDAwIgorICAgIGIiNDAwMDQ4MTAwMDAwMDAwMDEwMDAyNDI1ODAwMDgwMDAyNDA2NDAw
MGEwMDAxMGEiCispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgIGIiZmYwMDAwMTEwNGZmMDAwMDExMDA0NTAwMDUwMDA0ODAxMDAw
MDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4IgorICAgIGIiMDEwMDAwMDAwMDQwMDA0ODEwMDAw
MDAwMDAxMDAwMjQyNTgwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgorICAgIGIiMDAwMDAw
MDAwMDAwMDAwODAwMDI0MDY0MDAwYTAwMDEwYSIKKykKKworU0VSVkVSX1FVSUNfVFJBTlNQT1JU
X1BBUkFNRVRFUlNfMiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiIjAwNTcwMDA2MDAwNDgw
MDBmZmZmMDAwNTAwMDQ4MDAwZmZmZjAwMDIwMDEwYzVhYzQxMGZiZGQ0ZmU2ZTJjMSIKKyAgICBi
IjQyMjc5ZjIzMWU4ZTAwMDBhMDAwMTAzMDAwNDAwMDQ4MDA1ZmZmYTAwMGIwMDAxMTkwMDAxMDAw
MjY3MTBmZiIKKyAgICBiIjQyMDAwYzVjMDY3ZjI3ZTM5MzIxYzYzZTI4ZTdjOTAwMDMwMDAyNDdl
NDAwMDgwMDAxMDYiCispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzMgPSBi
aW5hc2NpaS51bmhleGxpZnkoCisgICAgYiIwMDU0MDAwMjAwMTAwZGNiNTBhNDQyNTEzMjk1YjQ2
NzliYWYwNGNiNWVmZmZmOGEwMDA5YzhhZmU3MmE2Mzk3IgorICAgIGIiMjU1NDA3MDAwNjAwMDQ4
MDAwZmZmZjAwMDgwMDAxMDYwMDA0MDAwNDgwMDVmZmZhMDAwNTAwMDQ4MDAwZmZmZiIKKyAgICBi
IjAwMDMwMDAyNDdlNDAwMGEwMDAxMDMwMDAxMDAwMjY3MTAwMDBiMDAwMTE5IgorKQorCisKK2Ns
YXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3B1bGxfYmxvY2tfdHJ1bmNh
dGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisKK2RlZiBjcmVhdGVf
YnVmZmVycygpOgorICAgIHJldHVybiB7CisgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBCdWZm
ZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IEJ1ZmZlcihj
YXBhY2l0eT00MDk2KSwKKyAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IEJ1ZmZlcihjYXBhY2l0
eT00MDk2KSwKKyAgICB9CisKKworZGVmIG1lcmdlX2J1ZmZlcnMoYnVmZmVycyk6CisgICAgcmV0
dXJuIGIiIi5qb2luKHguZGF0YSBmb3IgeCBpbiBidWZmZXJzLnZhbHVlcygpKQorCisKK2RlZiBy
ZXNldF9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIGZvciBrIGluIGJ1ZmZlcnMua2V5cygpOgorICAg
ICAgICBidWZmZXJzW2tdLnNlZWsoMCkKKworCitjbGFzcyBDb250ZXh0VGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIGNyZWF0ZV9jbGllbnQoCisgICAgICAgIHNlbGYsIGFscG5fcHJvdG9jb2xzPU5v
bmUsIGNhZGF0YT1Ob25lLCBjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUsICoqa3dhcmdzCisgICAg
KToKKyAgICAgICAgY2xpZW50ID0gQ29udGV4dCgKKyAgICAgICAgICAgIGFscG5fcHJvdG9jb2xz
PWFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwKKyAgICAgICAgICAg
IGNhZmlsZT1jYWZpbGUsCisgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKKyAgICAgICAgICAg
ICoqa3dhcmdzCisgICAgICAgICkKKyAgICAgICAgY2xpZW50LmhhbmRzaGFrZV9leHRlbnNpb25z
ID0gWworICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFV
SUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICApCisgICAgICAgIF0KKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9IQU5EU0hBS0VfU1RBUlQp
CisgICAgICAgIHJldHVybiBjbGllbnQKKworICAgIGRlZiBjcmVhdGVfc2VydmVyKHNlbGYsIGFs
cG5fcHJvdG9jb2xzPU5vbmUpOgorICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfY2VydF9j
aGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9
IENvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywgaXNf
Y2xpZW50PUZhbHNlLCBtYXhfZWFybHlfZGF0YT0weEZGRkZGRkZGCisgICAgICAgICkKKyAgICAg
ICAgc2VydmVyLmNlcnRpZmljYXRlID0gY29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZQorICAgICAg
ICBzZXJ2ZXIuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkgPSBjb25maWd1cmF0aW9uLnByaXZhdGVf
a2V5CisgICAgICAgIHNlcnZlci5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTLAorICAgICAgICAgICAgICAgIFNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJT
LAorICAgICAgICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vy
dmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxMTykKKyAgICAgICAgcmV0
dXJuIHNlcnZlcgorCisgICAgZGVmIHRlc3RfY2xpZW50X3VuZXhwZWN0ZWRfbWVzc2FnZShzZWxm
KToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKworICAgICAgICBjbGll
bnQuc3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTworICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAg
ICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVm
ZmVycygpKQorCisgICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRU5D
UllQVEVEX0VYVEVOU0lPTlMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxl
cnRVbmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2Uo
YiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQu
c3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElG
SUNBVEUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0
ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1ZFUklGWQorICAgICAgICB3aXRoIHNlbGYuYXNz
ZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIGNsaWVu
dC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQor
CisgICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVkTWVzc2FnZSk6
CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4MDBceDAwIiwg
Y3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0ZS5DTElFTlRf
UE9TVF9IQU5EU0hBS0UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJc
eDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgIGRlZiB0ZXN0X2NsaWVu
dF9iYWRfY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNl
bGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigp
CisKKyAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbworICAgICAgICBjbGllbnRfYnVmID0gY3Jl
YXRlX2J1ZmZlcnMoKQorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5U
X0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZl
cnMoY2xpZW50X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAg
ICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBl
bmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmlu
aXNoZWQKKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2Vy
dmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQp
CisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAg
ICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICMgbWVzcyB3aXRoIGNlcnRp
ZmljYXRlIHZlcmlmeQorICAgICAgICBjbGllbnRfaW5wdXQgPSBjbGllbnRfaW5wdXRbOi01Nl0g
KyBieXRlcyg0KSArIGNsaWVudF9pbnB1dFstNTI6XQorCisgICAgICAgICMgaGFuZGxlIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2
ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0
RGVjcnlwdEVycm9yKToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRf
aW5wdXQsIGNsaWVudF9idWYpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2ZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBj
bGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExP
KQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQg
aGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMs
IGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZl
cl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShz
ZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVy
LnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5w
dXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2Vy
dmVyX2J1ZikKKworICAgICAgICAjIG1lc3Mgd2l0aCBmaW5pc2hlZCB2ZXJpZnkgZGF0YQorICAg
ICAgICBjbGllbnRfaW5wdXQgPSBjbGllbnRfaW5wdXRbOi00XSArIGJ5dGVzKDQpCisKKyAgICAg
ICAgIyBoYW5kbGUgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNh
dGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmluaXNoZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnREZWNyeXB0RXJyb3IpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikKKworICAgIGRlZiB0ZXN0X3NlcnZl
cl91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VYUEVDVF9D
TElFTlRfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4
cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2UoYiJceDAw
XHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBzZXJ2ZXIuc3RhdGUg
PSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgc2VydmVyLmhh
bmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAg
ICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX1BPU1RfSEFORFNIQUtFCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAg
ICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0
ZV9idWZmZXJzKCkpCisKKyAgICBkZWYgX3NlcnZlcl9mYWlsX2hlbGxvKHNlbGYsIGNsaWVudCwg
c2VydmVyKToKKyAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbworICAgICAgICBjbGllbnRfYnVm
ID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBj
bGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUu
Q0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdl
X2J1ZmZlcnMoY2xpZW50X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQor
CisgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICBzZXJ2ZXJfYnVmID0gY3Jl
YXRlX2J1ZmZlcnMoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0
LCBzZXJ2ZXJfYnVmKQorCisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX2NpcGhlcl9z
dWl0ZShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAg
ICAgY2xpZW50Ll9jaXBoZXJfc3VpdGVzID0gW3Rscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9T
SEEyNTZdCisKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAg
c2VydmVyLl9jaXBoZXJfc3VpdGVzID0gW3Rscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEz
ODRdCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VG
YWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9mYWlsX2hlbGxvKGNsaWVu
dCwgc2VydmVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAi
Tm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5zdXBw
b3J0ZWRfc2lnbmF0dXJlX2FsZ29yaXRobShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zaWduYXR1cmVfYWxnb3JpdGhtcyA9IFt0
bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVENDQ4XQorCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3Jl
YXRlX3NlcnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRI
YW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9mYWlsX2hl
bGxvKGNsaWVudCwgc2VydmVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNl
cHRpb24pLCAiTm8gc3VwcG9ydGVkIHNpZ25hdHVyZSBhbGdvcml0aG0iKQorCisgICAgZGVmIHRl
c3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNl
bGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fc3VwcG9ydGVkX3ZlcnNpb25zID0g
W3Rscy5UTFNfVkVSU0lPTl8xXzJdCisKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2Vy
dmVyKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFByb3RvY29s
VmVyc2lvbikgYXMgY206CisgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGll
bnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwg
Ik5vIHN1cHBvcnRlZCBwcm90b2NvbCB2ZXJzaW9uIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl9i
YWRfZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudCgpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAg
ICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbworICAgICAgICBjbGllbnRfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8pCisgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xp
ZW50X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMg
aGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0
ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmluaXNoZWQK
KyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVyLmhh
bmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQpCisgICAg
ICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAgICAgcmVz
ZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywg
ZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZp
bmlzaGVkCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQorICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZl
cnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIG1lc3Mgd2l0aCBmaW5pc2hlZCB2ZXJpZnkgZGF0
YQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5dGVzKDQpCisK
KyAgICAgICAgIyBoYW5kbGUgZmluaXNoZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnREZWNyeXB0RXJyb3IpOgorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNz
YWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKworICAgIGRlZiBfaGFuZHNoYWtlKHNlbGYs
IGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbworICAgICAgICBj
bGllbnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3Nh
Z2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0
ZSwgU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgIHNlcnZlcl9pbnB1
dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVy
RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDIxMykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1
YWwobGVuKHNlcnZlcl9pbnB1dCksIDM1OCkKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRf
YnVmKQorCisgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAjIHNlbmQgc2Vy
dmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRl
IHZlcmlmeSwgZmluaXNoZWQsIChzZXNzaW9uIHRpY2tldCkKKyAgICAgICAgc2VydmVyX2J1ZiA9
IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9p
bnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUs
IFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1l
cmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwo
bGVuKGNsaWVudF9pbnB1dCksIDYwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVu
KGNsaWVudF9pbnB1dCksIDIzMTYpCisKKyAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVm
KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMs
IGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lvbiB0aWNr
ZXQpCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3Nh
Z2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNs
aWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQorICAgICAgICBzZXJ2ZXJf
aW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9i
dWYpCisKKyAgICAgICAgIyBoYW5kbGUgZmluaXNoZWQKKyAgICAgICAgc2VydmVyLmhhbmRsZV9t
ZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRSkKKyAgICAgICAgY2xp
ZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAwKQorCisgICAgICAgICMgY2hlY2sga2V5cyBtYXRj
aAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZGVjX2tleSwgc2VydmVyLl9lbmNf
a2V5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9k
ZWNfa2V5KQorCisgICAgICAgICMgY2hlY2sgY2lwaGVyIHN1aXRlCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBjbGllbnQua2V5X3NjaGVkdWxlLmNpcGhlcl9zdWl0ZSwg
dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZXJ2ZXIua2V5X3NjaGVkdWxlLmNpcGhlcl9z
dWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudCgpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAg
ICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sgQUxQ
TiBtYXRjaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3RpYXRl
ZCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlhdGVk
LCBOb25lKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX2VjZHNhX3NlY3AyNTZyMShzZWxmKToK
KyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgc2VydmVyLmNl
cnRpZmljYXRlLCBzZXJ2ZXIuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVf
Y2xpZW50KAorICAgICAgICAgICAgY2FkYXRhPXNlcnZlci5jZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0
ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAorICAgICAgICAgICAgY2FmaWxlPU5vbmUs
CisgICAgICAgICkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisK
KyAgICAgICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
cnZlci5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0
aF9hbHBuKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoYWxwbl9w
cm90b2NvbHM9WyJocS0yMCJdKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIo
YWxwbl9wcm90b2NvbHM9WyJocS0yMCIsICJoMy0yMCJdKQorCisgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgImhxLTIwIikK
KworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2FscG5fZmFpbChzZWxmKToKKyAgICAgICAg
Y2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiXSkKKyAg
ICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsiaDMtMjAi
XSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEhhbmRzaGFrZUZh
aWx1cmUpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiTm8gY29tbW9u
IEFMUE4gcHJvdG9jb2xzIikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX3JzYV9wa2Nz
MV9zaGEyNTZfc2lnbmF0dXJlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9j
bGllbnQoKQorICAgICAgICBjbGllbnQuX3NpZ25hdHVyZV9hbGdvcml0aG1zID0gW3Rscy5TaWdu
YXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1Nl0KKyAgICAgICAgc2VydmVyID0gc2VsZi5j
cmVhdGVfc2VydmVyKCkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIp
CisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF9jZXJ0aWZpY2F0ZV9lcnJvcihzZWxmKToK
KyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lKQorICAgICAg
ICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihjbS5leGNlcHRpb24pLCAidW5hYmxlIHRvIGdldCBsb2NhbCBpc3N1ZXIgY2VydGlmaWNhdGUi
KQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfY2VydGlmaWNhdGVfbm9fdmVyaWZ5KHNl
bGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoY2FmaWxlPU5vbmUsIHZl
cmlmeV9tb2RlPXNzbC5DRVJUX05PTkUpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcigpCisKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAg
ZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfZ3JlYXNlX2dyb3VwKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91
cHMgPSBbdGxzLkdyb3VwLkdSRUFTRSwgdGxzLkdyb3VwLlNFQ1AyNTZSMV0KKyAgICAgICAgc2Vy
dmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xp
ZW50LCBzZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF94MjU1MTkoc2VsZik6
CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5f
c3VwcG9ydGVkX2dyb3VwcyA9IFt0bHMuR3JvdXAuWDI1NTE5XQorICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2hh
bmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkQWxnb3Jp
dGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCisKKyAgICBk
ZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF94NDQ4KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxm
LmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMgPSBbdGxz
Lkdyb3VwLlg0NDhdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQor
ICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRBbGdvcml0aG0gYXMgZXhjOgorICAgICAgICAgICAg
c2VsZi5za2lwVGVzdChzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X3Nlc3Npb25fdGlja2V0KHNl
bGYpOgorICAgICAgICBjbGllbnRfdGlja2V0cyA9IFtdCisgICAgICAgIHNlcnZlcl90aWNrZXRz
ID0gW10KKworICAgICAgICBkZWYgY2xpZW50X25ld190aWNrZXQodGlja2V0KToKKyAgICAgICAg
ICAgIGNsaWVudF90aWNrZXRzLmFwcGVuZCh0aWNrZXQpCisKKyAgICAgICAgZGVmIHNlcnZlcl9n
ZXRfdGlja2V0KGxhYmVsKToKKyAgICAgICAgICAgIGZvciB0IGluIHNlcnZlcl90aWNrZXRzOgor
ICAgICAgICAgICAgICAgIGlmIHQudGlja2V0ID09IGxhYmVsOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBkZWYgc2VydmVy
X25ld190aWNrZXQodGlja2V0KToKKyAgICAgICAgICAgIHNlcnZlcl90aWNrZXRzLmFwcGVuZCh0
aWNrZXQpCisKKyAgICAgICAgZGVmIGZpcnN0X2hhbmRzaGFrZSgpOgorICAgICAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgICAgIGNsaWVudC5uZXdfc2Vzc2lv
bl90aWNrZXRfY2IgPSBjbGllbnRfbmV3X3RpY2tldAorCisgICAgICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorICAgICAgICAgICAgc2VydmVyLm5ld19zZXNzaW9uX3RpY2tl
dF9jYiA9IHNlcnZlcl9uZXdfdGlja2V0CisKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShj
bGllbnQsIHNlcnZlcikKKworICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHJlc3VtcHRpb24g
d2FzIG5vdCB1c2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5zZXNzaW9u
X3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5zZXNzaW9uX3Jl
c3VtZWQpCisKKyAgICAgICAgICAgICMgY2hlY2sgdGlja2V0cyBtYXRjaAorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X3RpY2tldHMpLCAxKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oc2VydmVyX3RpY2tldHMpLCAxKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnRfdGlja2V0c1swXS50aWNrZXQsIHNlcnZlcl90aWNrZXRzWzBdLnRp
Y2tldCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3RpY2tldHNbMF0ucmVzdW1wdGlvbl9zZWNyZXQsIHNlcnZlcl90aWNrZXRzWzBdLnJlc3Vt
cHRpb25fc2VjcmV0CisgICAgICAgICAgICApCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hh
a2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAg
ICAgICBjbGllbnQuc2Vzc2lvbl90aWNrZXQgPSBjbGllbnRfdGlja2V0c1swXQorCisgICAgICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorICAgICAgICAgICAgc2VydmVyLmdl
dF9zZXNzaW9uX3RpY2tldF9jYiA9IHNlcnZlcl9nZXRfdGlja2V0CisKKyAgICAgICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8gd2l0aCBwcmVfc2hhcmVkX2tleQorICAgICAgICAgICAgY2xpZW50
X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2Fn
ZShiIiIsIGNsaWVudF9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5z
dGF0ZSwgU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEdyZWF0ZXJFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgMzgzKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRMZXNzRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDQ4MykKKyAgICAgICAgICAgIHJl
c2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhl
bGxvCisgICAgICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9u
cywgZmluaXNoZWQKKyAgICAgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisg
ICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZF
Ul9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZm
ZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnRf
aW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAg
ICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNl
cnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgICAgICAjIHNl
bmQgZmluaXNoZWQKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5w
dXQsIGNsaWVudF9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0
ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQorICAgICAgICAgICAgc2VydmVyX2lucHV0
ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oc2VydmVyX2lucHV0KSwgNTIpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVu
dF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCisgICAgICAgICAgICAjIHNl
bmQgbmV3X3Nlc3Npb25fdGlja2V0CisgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uo
c2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRSkKKyAgICAgICAgICAgIGNs
aWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDApCisgICAgICAgICAgICByZXNldF9idWZm
ZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgICAgICMgY2hlY2sga2V5cyBtYXRjaAorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9lbmNfa2V5LCBzZXJ2ZXIuX2Rl
Y19rZXkpCisKKyAgICAgICAgICAgICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyB1c2Vk
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50LnNlc3Npb25fcmVzdW1lZCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAg
ICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKToKKyAgICAgICAgICAgIGNsaWVu
dCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgICAgICBjbGllbnQuc2Vzc2lvbl90aWNr
ZXQgPSBjbGllbnRfdGlja2V0c1swXQorCisgICAgICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0
ZV9zZXJ2ZXIoKQorICAgICAgICAgICAgc2VydmVyLmdldF9zZXNzaW9uX3RpY2tldF9jYiA9IHNl
cnZlcl9nZXRfdGlja2V0CisKKyAgICAgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8gd2l0aCBw
cmVfc2hhcmVkX2tleQorICAgICAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8pCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJz
KGNsaWVudF9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oc2Vy
dmVyX2lucHV0KSwgMzgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKHNl
cnZlcl9pbnB1dCksIDQ4MykKKyAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikK
KworICAgICAgICAgICAgIyB0YW1wZXIgd2l0aCBiaW5kZXIKKyAgICAgICAgICAgIHNlcnZlcl9p
bnB1dCA9IHNlcnZlcl9pbnB1dFs6LTRdICsgYnl0ZXMoNCkKKworICAgICAgICAgICAgIyBoYW5k
bGUgY2xpZW50IGhlbGxvCisgICAgICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0
ZWQgZXh0ZW5zaW9ucywgZmluaXNoZWQKKyAgICAgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVf
YnVmZmVycygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEhh
bmRzaGFrZUZhaWx1cmUpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVz
c2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cihjbS5leGNlcHRpb24pLCAiUFNLIHZhbGlkYXRpb24gZmFpbGVkIikKKworICAgICAg
ICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRfcHJlX3NoYXJlZF9rZXkoKToKKyAgICAgICAgICAg
IGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgICAgICBjbGllbnQuc2Vzc2lv
bl90aWNrZXQgPSBjbGllbnRfdGlja2V0c1swXQorCisgICAgICAgICAgICBzZXJ2ZXIgPSBzZWxm
LmNyZWF0ZV9zZXJ2ZXIoKQorICAgICAgICAgICAgc2VydmVyLmdldF9zZXNzaW9uX3RpY2tldF9j
YiA9IHNlcnZlcl9nZXRfdGlja2V0CisKKyAgICAgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8g
d2l0aCBwcmVfc2hhcmVkX2tleQorICAgICAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZm
ZXJzKCkKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5U
X0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9i
dWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChs
ZW4oc2VydmVyX2lucHV0KSwgMzgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwo
bGVuKHNlcnZlcl9pbnB1dCksIDQ4MykKKyAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50
X2J1ZikKKworICAgICAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICAgICAj
IHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgZmluaXNoZWQKKyAgICAg
ICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBzZXJ2ZXIu
aGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQp
CisKKyAgICAgICAgICAgICMgdGFtcGVyIHdpdGggcHJlX3NoYXJlX2tleSBpbmRleAorICAgICAg
ICAgICAgYnVmID0gc2VydmVyX2J1Zlt0bHMuRXBvY2guSU5JVElBTF0KKyAgICAgICAgICAgIGJ1
Zi5zZWVrKGJ1Zi50ZWxsKCkgLSAxKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoMSkKKyAg
ICAgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDMwNykKKyAgICAgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAgICAgIyBoYW5kbGUgc2Vy
dmVyIGhlbGxvIGFuZCBib21iCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRs
cy5BbGVydElsbGVnYWxQYXJhbWV0ZXIpOgorICAgICAgICAgICAgICAgIGNsaWVudC5oYW5kbGVf
bWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVudF9idWYpCisKKyAgICAgICAgZmlyc3RfaGFuZHNo
YWtlKCkKKyAgICAgICAgc2Vjb25kX2hhbmRzaGFrZSgpCisgICAgICAgIHNlY29uZF9oYW5kc2hh
a2VfYmFkX2JpbmRlcigpCisgICAgICAgIHNlY29uZF9oYW5kc2hha2VfYmFkX3ByZV9zaGFyZWRf
a2V5KCkKKworCitjbGFzcyBUbHNUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9wdWxsX2Ns
aWVudF9oZWxsbyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2Ns
aWVudF9oZWxsby5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiMThiMmIyM2JmM2U0NGI1ZDUyY2NmZTdhZWNi
YzVmZjE0ZWFkYzNkMzQ5ZmFiZjgwNGQ3MWYxNjVhZTc2ZTdkNSIKKyAgICAgICAgICAgICksCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnNl
c3Npb25faWQsCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAg
ICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1
NWMxMzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNv
bXByZXNzaW9uX21ldGhvZHMsIFt0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTF0pCisKKyAgICAg
ICAgIyBleHRlbnNpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uYWxwbl9wcm90
b2NvbHMsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ3YmZlYTM0NDQ2NzUz
NTA1NDI2M2I3NWRlZjYwY2ZmYTgyNDA1YTIxMWI2OGQxZWI4ZDFkOTQ0ZTY3YWVmOCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICI5M2M3NjY1YTU0NzNkMDMyY2ZhZjIyYTczZGEyOGViNGFhY2Fl
MDAxN2VkMTI1NTdiNTc5MWY5OGExZTg0ZjE1IgorICAgICAgICAgICAgICAgICAgICAgICAgImIw
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2ZXJf
bmFtZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxv
LnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9y
dGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMsCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9u
VHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICBDTElF
TlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9wdWxsX2NsaWVudF9oZWxsb193aXRo
X2FscG4oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRf
aGVsbG9fd2l0aF9hbHBuLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxv
KGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmlu
YXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJlZDU3NWM2ZmJkNTk5YzRkZmFhYmQw
MDNkY2E2ZTg2MGNjZGIwZTE3ODJjMWFmMDJlNTdiZjI3Y2I2NDc5Yjc2IgorICAgICAgICAgICAg
KSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnNlc3Npb25faWQs
IGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmNpcGhl
cl9zdWl0ZXMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRl
LkFFU18xMjhfR0NNX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVT
XzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEy
MF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkVNUFRZ
X1JFTkVHT1RJQVRJT05fSU5GT19TQ1NWLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMsIFt0bHMuQ29t
cHJlc3Npb25NZXRob2QuTlVMTF0pCisKKyAgICAgICAgIyBleHRlbnNpb25zCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uYWxwbl9wcm90b2NvbHMsIFsiaDMtMTkiXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5lYXJseV9kYXRhLCBGYWxzZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2
UjEsCisgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICIwNDg4NDIzMTVjNDM3YmIwY2UyOTI5YzgxNmZlZTRlOTQyZWM1Y2I2ZGI2
YTZiOWJmNjIyNjgwMTg4ZWJiMGQ0IgorICAgICAgICAgICAgICAgICAgICAgICAgImI2NTJlNjkw
MzNmNzE2ODZhYTAxY2JjNzkxNTU4NjZlMjY0YzlmMzNmNDVhYTE2YjBkZmExMGEyMjJlM2E2Njki
CisgICAgICAgICAgICAgICAgICAgICAgICAiMjIiCisgICAgICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2Rlcywg
W3Rscy5Qc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLnNlcnZlcl9uYW1lLCAiY2xvdWRmbGFyZS1xdWljLmNvbSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVf
YWxnb3JpdGhtcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJl
QWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNp
Z25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMzg0UjFfU0hBMzg0LAorICAgICAgICAgICAgICAg
IHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiwKKyAgICAgICAg
ICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVEMjU1MTksCisgICAgICAgICAgICAgICAg
dGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FRDQ0OCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0
dXJlQWxnb3JpdGhtLlJTQV9QU1NfUFNTX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2ln
bmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUFNTX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMu
U2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUFNTX1NIQTUxMiwKKyAgICAgICAgICAgICAgICB0
bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICAg
ICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hBMzg0LAorICAgICAgICAg
ICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTUxMiwKKyAgICAg
ICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAg
ICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0LAorICAg
ICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTUxMiwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuWDI1
NTE5LAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMzg0UjEsCisgICAgICAgICAgICAg
ICAgdGxzLkdyb3VwLlNFQ1A1MjFSMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMsIFt0bHMuVExTX1ZF
UlNJT05fMV8zXSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIo
MTAwMCkKKyAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oYnVmLmRhdGEpLCBsZW4obG9hZCgidGxzX2NsaWVudF9oZWxsb193
aXRoX2FscG4uYmluIikpKQorCisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9w
c2soc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVs
bG9fd2l0aF9wc2suYmluIikpCisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVm
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uZWFybHlfZGF0YSwgVHJ1ZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5
LAorICAgICAgICAgICAgdGxzLk9mZmVyZWRQc2tzKAorICAgICAgICAgICAgICAgIGlkZW50aXRp
ZXM9WworICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhYjNkYzdkNzlm
MzVlYTUzZTlhZGYyMTE1MGU2MDE1OTFhNzUwYjgwY2RlMGNkMTY3ZmVmNmUwY2RiYzAzMmEiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImM0MTYxZmM1YzViNjY2NzlkZTQ5NTI0YmQ1NjI0
YzUwZDcxYmEzZTY1MDc4MGE0YmZlNDAyZDZhMDZhMDA1MjUiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjBiNWRjNTIwODUyMzNiNjlkMGRkMTM5MjRjYzVjNzEzYTM5Njc4NGVjYWZjNTlm
NWVhNzNjMTU4NWQ3OTYyMWIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjhhOTRlNGYy
MjkxYjE3NDI3ZDUxODVhYmY0YTk5NGZjYTc0ZWU3YTdmOTkzYTk1MGM3MTAwM2ZjN2NmOCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAyMDY3MTU2
Mzc4LAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICBiaW5kZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgICAgICAgICAgICAgIjE3ODhhZDQzZmRmZjM3Y2ZjNjI4ZjI0YjZjZTdj
OGM3NjE4MDcwNTM4MGRhMTdkYTMyODExYjViYWU0ZTc4IgorICAgICAgICAgICAgICAgICAgICAg
ICAgImQ3YWFhZjY1YTliNzEzODcyZjJiYjI4ODE4Y2ExYTZiMDEiCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1
ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19j
bGllbnRfaGVsbG9fd2l0aF9wc2suYmluIikpCisKKyAgICBkZWYgdGVzdF9wdWxsX2NsaWVudF9o
ZWxsb193aXRoX3NuaShzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxz
X2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBwdWxsX2NsaWVu
dF9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnJhbmRvbSwKKyAgICAgICAg
ICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTg3ZDg5MzQxNDBiMGE0
MmNjNTU0NTA3MWYzZjlmN2Y2MTk2M2Q3YjY0MDRlYjY3NGM4ZGJlNTEzNjA0MzQ2YiIKKyAgICAg
ICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIGhlbGxvLnNlc3Npb25faWQsCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgICAgICAgICAgICAgIjI2YjE5YmRkMzBkYmY3NTEwMTVhM2ExNmUxM2JkNTkwMDJkZmU0MjBi
Nzk5ZDJhNWNkNWUxMWI4ZmE3YmNiNjYiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAor
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dD
TV9TSEEzODQsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NI
QTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVf
U0hBMjU2LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMsIFt0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVM
TF0pCisKKyAgICAgICAgIyBleHRlbnNpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVs
bG8uYWxwbl9wcm90b2NvbHMsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
KAorICAgICAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAg
ICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDRi
NjJkNzBmOTA3YzgxNGNkNjVkMGY3M2I4Yjk5MWYwNmI3MGM3NzE1M2Y1NDg0MTBhMTkxZDJiMTk3
NjRhMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJlY2MwNjA2NWE0ODBlZmE5ZTFmMTBjOGRh
NmU3MzdkNWJmYzA0YmUzZjc3M2UyMGEwYzk5N2Y1MWI1NjIxMjgwIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIjQwIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFu
Z2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWxsby5zZXJ2ZXJfbmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNE
U0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzLCBbdGxzLkdyb3VwLlNFQ1Ay
NTZSMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLlRMU19W
RVJTSU9OXzFfMywKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4
LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAg
ICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisg
ICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8u
b3RoZXJfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoCisgICAg
ICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRF
UlMsCisgICAgICAgICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJT
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAg
ICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVzaF9j
bGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4iKSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2xpZW50X2hlbGxvKHNlbGYpOgorICAgICAgICBoZWxsbyA9IENsaWVudEhlbGxvKAor
ICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
MThiMmIyM2JmM2U0NGI1ZDUyY2NmZTdhZWNiYzVmZjE0ZWFkYzNkMzQ5ZmFiZjgwNGQ3MWYxNjVh
ZTc2ZTdkNSIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNm
ZTAwNGExYTQzOGFkMDQ4NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICBjaXBoZXJfc3VpdGVzPVsKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3Vp
dGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNIQUNI
QTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBjb21wcmVz
c2lvbl9tZXRob2RzPVt0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTF0sCisgICAgICAgICAgICBr
ZXlfc2hhcmU9WworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNm
ZmE4MjQwNWEyMTFiNjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiOTNjNzY2NWE1NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFm
OThhMWU4NGYxNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
cHNrX2tleV9leGNoYW5nZV9tb2Rlcz1bdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tF
XSwKKyAgICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zPVsKKyAgICAgICAgICAgICAgICB0
bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICAg
ICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAg
ICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9W3Rscy5Hcm91cC5TRUNQMjU2
UjFdLAorICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVsKKyAgICAgICAgICAgICAgICB0
bHMuVExTX1ZFUlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjgsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNywK
KyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFS
QU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFN
RVRFUlMsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQorICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYs
IGhlbGxvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xp
ZW50X2hlbGxvLmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9zZXJ2ZXJfaGVsbG8oc2VsZik6
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9zZXJ2ZXJfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUzZmRmNmYxZTI2ZjNiMTA3
NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZj
MWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNp
cGhlcl9zdWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2QsIHRscy5Db21wcmVzc2lv
bk1ldGhvZC5OVUxMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVs
bG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5T
RUNQMjU2UjEsCisgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICAgICAiMDQ4YjI3ZDAyODIyNDJkODRiN2ZjYzAyYTljNGYxM2VjYTAzMjllM2M3MDI5
YWEzNGEzMzc5NGU2ZTdiYTE4OSIKKyAgICAgICAgICAgICAgICAgICAgIjVjY2ExYzUwM2JmMDM3
OGFjNjkzN2MzNTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4ZDdmMzg3MzE2YzgzYWU2Y2YiCisgICAg
ICAgICAgICAgICAgICAgICJiMiIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnByZV9zaGFyZWRfa2V5
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9u
LCB0bHMuVExTX1ZFUlNJT05fMV8zKQorCisgICAgZGVmIHRlc3RfcHVsbF9zZXJ2ZXJfaGVsbG9f
d2l0aF9wc2soc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2
ZXJfaGVsbG9fd2l0aF9wc2suYmluIikpCisgICAgICAgIGhlbGxvID0gcHVsbF9zZXJ2ZXJfaGVs
bG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBi
aW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImNjYmFhZjA0ZmMxYmQ1MTQzYjJj
YzZiOTc1MjBjZjM3ZDkxNDcwZGJmYzgxMjcxMzFhN2JmMGY5NDFlM2ExMzciCisgICAgICAgICAg
ICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBo
ZWxsby5zZXNzaW9uX2lkLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgICAgICI5NDgzZTdlODk1ZDBmNGNlYzE3MDg2YjA4NDk2MDFjMDYzMjY2MmNkNzY0ZTgy
OGYyZjg5MmY0YzRiNzc3MWIwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNpcGhlcl9zdWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18y
NTZfR0NNX1NIQTM4NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lv
bl9tZXRob2QsIHRscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgKAorICAg
ICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAiMDQ4NWQ3Y2VjYmViZmM1NDhmYzY1
N2JmNTFiOGU4ZGE4NDJhNDA1NmIxNjRhMjdmNzcwMmNhMzE4YzE2ZTQ4OCIKKyAgICAgICAgICAg
ICAgICAgICAgIjE4YjY0MDk1OTNiMTVjNjY0OWQ2ZjQ1OTM4N2E1MzEyOGIxNjQxNzhhZGM4NDAx
NzlhYWQwMWQzNmNlOTVkNjIiCisgICAgICAgICAgICAgICAgICAgICI3NiIKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlbGxvLnByZV9zaGFyZWRfa2V5LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhl
bGxvLnN1cHBvcnRlZF92ZXJzaW9uLCB0bHMuVExTX1ZFUlNJT05fMV8zKQorCisgICAgICAgICMg
c2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQorICAgICAgICBwdXNoX3NlcnZl
cl9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBs
b2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVs
bF9zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbihzZWxmKToKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5z
aW9uLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgaGVsbG8sCisgICAgICAgICAgICBTZXJ2ZXJIZWxsbygKKyAgICAgICAg
ICAgICAgICByYW5kb209YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAi
YWRhODUyNzFkMTk2ODBjNjE1ZWE3MzM2NTE5ZTNmZGY2ZjFlMjZmM2IxMDc1ZWUxZGU5NmZmYTg4
ODRlODI4MCIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHNlc3Npb25faWQ9
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFj
YjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMuQ2lwaGVyU3Vp
dGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhv
ZD10bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCwKKyAgICAgICAgICAgICAgICBrZXlfc2hhcmU9
KAorICAgICAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAg
ICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4
YjI3ZDAyODIyNDJkODRiN2ZjYzAyYTljNGYxM2VjYTAzMjllM2M3MDI5YWEzNGEzMzc5NGU2ZTdi
YTE4OSIKKyAgICAgICAgICAgICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0
OTEyMTE2ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAg
ICAgICAgICAgImIyIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb249dGxzLlRMU19WRVJTSU9OXzFfMywK
KyAgICAgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcigxMDAwKQorICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhidWYsIGhlbGxvKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfc2VydmVyX2hlbGxv
X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX3NlcnZl
cl9oZWxsbyhzZWxmKToKKyAgICAgICAgaGVsbG8gPSBTZXJ2ZXJIZWxsbygKKyAgICAgICAgICAg
IHJhbmRvbT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5
NjgwYzYxNWVhNzMzNjUxOWUzZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnko
CisgICAgICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0Mzhh
ZDA0ODVhNTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPXRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAg
ICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEwsCisgICAg
ICAgICAgICBrZXlfc2hhcmU9KAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEs
CisgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAg
ICAiMDQ4YjI3ZDAyODIyNDJkODRiN2ZjYzAyYTljNGYxM2VjYTAzMjllM2M3MDI5YWEzNGEzMzc5
NGU2ZTdiYTE4OSIKKyAgICAgICAgICAgICAgICAgICAgIjVjY2ExYzUwM2JmMDM3OGFjNjkzN2Mz
NTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4ZDdmMzg3MzE2YzgzYWU2Y2YiCisgICAgICAgICAgICAg
ICAgICAgICJiMiIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIHN1cHBvcnRlZF92ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICkKKwor
ICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVm
LCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3Nl
cnZlcl9oZWxsby5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfbmV3X3Nlc3Npb25f
dGlja2V0LmJpbiIpKQorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNz
aW9uX3RpY2tldChidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKG5ld19zZXNzaW9u
X3RpY2tldCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LAorICAgICAg
ICAgICAgTmV3U2Vzc2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9
ODY0MDAsCisgICAgICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9MzMwMzQ1MjQyNSwKKyAgICAg
ICAgICAgICAgICB0aWNrZXRfbm9uY2U9YiIiLAorICAgICAgICAgICAgICAgIHRpY2tldD1iaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICJkYmU2ZjFhNzdhNzhjMDQyNmJm
YTYwN2NkMGQwMmIzNTAyNDdkOTA2MTg3MDQ3MDk1OTZiZWRhN2U5NjJjYzgxIgorICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT0weEZGRkZGRkZG
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAg
ICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCisgICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1
ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBsb2FkKCJ0bHNfbmV3X3Nlc3Npb25fdGlja2V0LmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVs
bF9uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbihzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vu
a25vd25fZXh0ZW5zaW9uLmJpbiIpKQorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxs
X25ld19zZXNzaW9uX3RpY2tldChidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKG5l
d19zZXNzaW9uX3RpY2tldCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0
LAorICAgICAgICAgICAgTmV3U2Vzc2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRf
bGlmZXRpbWU9ODY0MDAsCisgICAgICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9MzMwMzQ1MjQy
NSwKKyAgICAgICAgICAgICAgICB0aWNrZXRfbm9uY2U9YiIiLAorICAgICAgICAgICAgICAgIHRp
Y2tldD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICJkYmU2ZjFhNzdh
NzhjMDQyNmJmYTYwN2NkMGQwMmIzNTAyNDdkOTA2MTg3MDQ3MDk1OTZiZWRhN2U5NjJjYzgxIgor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT0w
eEZGRkZGRkZGLAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WygxMjM0NSwgYiJm
b28iKV0sCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKDEwMCkKKyAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNr
ZXQoYnVmLCBuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBidWYuZGF0YSwgbG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vu
a25vd25fZXh0ZW5zaW9uLmJpbiIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2VuY3J5cHRl
ZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBkYXRhID0gbG9hZCgidGxzX2VuY3J5cHRlZF9l
eHRlbnNpb25zLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAg
IGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1
Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAgICAgICAgICAg
b3RoZXJfZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICks
CisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9MTAwKQorICAgICAgICBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZiwgZXh0
ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAg
IGRlZiB0ZXN0X2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAg
ZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4uYmluIikKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxf
ZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShl
eHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAg
RW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0y
MCIsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICAgICAg
ICAgICh0bHMuRXh0ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSwgYiIiKSwKKyAgICAgICAgICAgICAg
ICAgICAgKAorICAgICAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19U
UkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAgICAgIFNFUlZFUl9RVUlD
X1RSQU5TUE9SVF9QQVJBTUVURVJTXzIsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlh
bGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTE1KQorICAgICAgICBwdXNoX2VuY3J5cHRlZF9l
eHRlbnNpb25zKGJ1ZiwgZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5l
b2YoKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
X2FuZF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0
bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuX2FuZF9lYXJseV9kYXRhLmJpbiIpKQor
ICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRFeHRlbnNpb25zKAorICAgICAgICAg
ICAgICAgIGFscG5fcHJvdG9jb2w9ImhxLTIwIiwKKyAgICAgICAgICAgICAgICBlYXJseV9kYXRh
PVRydWUsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICAg
ICAgICAgICh0bHMuRXh0ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSwgYiIiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAgICAgIFNFUlZFUl9R
VUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzMsCisgICAgICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNl
cmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTE2KQorICAgICAgICBwdXNoX2VuY3J5cHRl
ZF9leHRlbnNpb25zKGJ1ZiwgZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1
Zi5lb2YoKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2VydGlmaWNhdGUoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKyAgICAgICAg
Y2VydGlmaWNhdGUgPSBwdWxsX2NlcnRpZmljYXRlKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNlcnRpZmljYXRlLnJl
cXVlc3RfY29udGV4dCwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNlcnRpZmljYXRl
LmNlcnRpZmljYXRlcywgWyhDRVJUSUZJQ0FURV9EQVRBLCBiIiIpXSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2VydGlmaWNhdGUoc2VsZik6CisgICAgICAgIGNlcnRpZmljYXRlID0gQ2VydGlmaWNh
dGUoCisgICAgICAgICAgICByZXF1ZXN0X2NvbnRleHQ9YiIiLCBjZXJ0aWZpY2F0ZXM9WyhDRVJU
SUZJQ0FURV9EQVRBLCBiIiIpXQorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDE2
MDApCisgICAgICAgIHB1c2hfY2VydGlmaWNhdGUoYnVmLCBjZXJ0aWZpY2F0ZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NlcnRpZmljYXRlLmJpbiIpKQor
CisgICAgZGVmIHRlc3RfcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnkoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIikpCisgICAg
ICAgIHZlcmlmeSA9IHB1bGxfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZikKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcmlmeS5h
bGdvcml0aG0sIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuc2lnbmF0dXJlLCBDRVJUSUZJQ0FURV9WRVJJ
RllfU0lHTkFUVVJFKQorCisgICAgZGVmIHRlc3RfcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoc2Vs
Zik6CisgICAgICAgIHZlcmlmeSA9IENlcnRpZmljYXRlVmVyaWZ5KAorICAgICAgICAgICAgYWxn
b3JpdGhtPXRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAg
ICAgICAgIHNpZ25hdHVyZT1DRVJUSUZJQ0FURV9WRVJJRllfU0lHTkFUVVJFLAorICAgICAgICAp
CisKKyAgICAgICAgYnVmID0gQnVmZmVyKDQwMCkKKyAgICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92
ZXJpZnkoYnVmLCB2ZXJpZnkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxv
YWQoInRsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdWxsX2Zp
bmlzaGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfZmluaXNo
ZWQuYmluIikpCisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChidWYpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIGZpbmlzaGVkLnZlcmlmeV9kYXRhLAorICAgICAgICAgICAgYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJmMTU3OTIzMjM0ZmY5YTQ5MjFhYWRiMmUwZWM3
YjFhMzBmY2U3M2ZiOWVjMGM0Mjc2ZjlhZjI2OGY0MDhlYzY4IgorICAgICAgICAgICAgKSwKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVzaF9maW5pc2hlZChzZWxmKToKKyAgICAgICAgZmlu
aXNoZWQgPSBGaW5pc2hlZCgKKyAgICAgICAgICAgIHZlcmlmeV9kYXRhPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAiZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMw
ZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhmNDA4ZWM2OCIKKyAgICAgICAgICAgICkKKyAgICAgICAg
KQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMjgpCisgICAgICAgIHB1c2hfZmluaXNoZWQoYnVm
LCBmaW5pc2hlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxz
X2ZpbmlzaGVkLmJpbiIpKQorCisKK2NsYXNzIFZlcmlmeUNlcnRpZmljYXRlVGVzdChUZXN0Q2Fz
ZSk6CisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluKHNlbGYpOgorICAgICAg
ICB3aXRoIG9wZW4oU0VSVkVSX0NFUlRGSUxFLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgIGNl
cnRpZmljYXRlID0gbG9hZF9wZW1feDUwOV9jZXJ0aWZpY2F0ZXMoZnAucmVhZCgpKVswXQorCisg
ICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93Ogor
ICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3Zh
bGlkX2JlZm9yZQorCisgICAgICAgICAgICAjIGZhaWwKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25h
bWU9ImxvY2FsaG9zdCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgICAgIHN0cihjbS5leGNlcHRpb24pLCAidW5hYmxlIHRvIGdldCBsb2NhbCBpc3N1ZXIgY2Vy
dGlmaWNhdGUiCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAg
IHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWZpbGU9U0VSVkVSX0NBQ0VS
VEZJTEUsCisgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAg
ICAgICAgICAgc2VydmVyX25hbWU9ImxvY2FsaG9zdCIsCisgICAgICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fc2VsZl9zaWduZWQoc2VsZik6CisgICAg
ICAgIGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjb21tb25fbmFtZT0ibG9jYWxob3N0IiwgY3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkK
KworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25v
dzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5v
dF92YWxpZF9iZWZvcmUKKworICAgICAgICAgICAgIyBmYWlsCisgICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmljYXRlKSBhcyBjbToKKyAgICAgICAg
ICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZl
cl9uYW1lPSJsb2NhbGhvc3QiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20u
ZXhjZXB0aW9uKSwgInNlbGYgc2lnbmVkIGNlcnRpZmljYXRlIikKKworICAgICAgICAgICAgIyBv
aworICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgIGNhZGF0
YT1jZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAor
ICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAg
IHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiLAorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCJh
aW9xdWljLnRscy5saWIuWDUwOV9TVE9SRV9uZXciKQorICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0
aWZpY2F0ZV9jaGFpbl9pbnRlcm5hbF9lcnJvcihzZWxmLCBtb2NrX3N0b3JlX25ldyk6CisgICAg
ICAgIG1vY2tfc3RvcmVfbmV3LnJldHVybl92YWx1ZSA9IHRscy5mZmkuTlVMTAorCisgICAgICAg
IGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBj
b21tb25fbmFtZT0ibG9jYWxob3N0IiwgY3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEludGVybmFsRXJyb3IpIGFz
IGNtOgorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgIGNh
ZGF0YT1jZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0p
LAorICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAg
ICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiLAorICAgICAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiT3BlblNTTCBjYWxsIHRvIFg1MDlfc3Rv
cmVfbmV3IGZhaWxlZCIpCisKKyAgICBkZWYgdGVzdF92ZXJpZnlfZGF0ZXMoc2VsZik6CisgICAg
ICAgIGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjb21tb25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAg
KQorICAgICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlv
bi5FbmNvZGluZy5QRU0pCisKKyAgICAgICAgIyDCoHRvbyBlYXJseQorICAgICAgICB3aXRoIHBh
dGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1v
Y2tfdXRjbm93LnJldHVybl92YWx1ZSA9ICgKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZS5u
b3RfdmFsaWRfYmVmb3JlIC0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0Q2VydGlm
aWNhdGVFeHBpcmVkKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUo
CisgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmlj
YXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIkNlcnRpZmljYXRlIGlz
IG5vdCB2YWxpZCB5ZXQiKQorCisgICAgICAgICMgdmFsaWQKKyAgICAgICAgd2l0aCBwYXRjaCgi
YWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0
Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisgICAgICAg
ICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwg
Y2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJleGFtcGxlLmNvbSIKKyAgICAg
ICAgICAgICkKKworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBt
b2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRp
ZmljYXRlLm5vdF92YWxpZF9hZnRlcgorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAor
ICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBz
ZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgIyB0b28g
bGF0ZQorICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0
Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRl
Lm5vdF92YWxpZF9hZnRlciArIGRhdGV0aW1lLnRpbWVkZWx0YSgKKyAgICAgICAgICAgICAgICBz
ZWNvbmRzPTEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXModGxzLkFsZXJ0Q2VydGlmaWNhdGVFeHBpcmVkKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2
ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9u
KSwgIkNlcnRpZmljYXRlIGlzIG5vIGxvbmdlciB2YWxpZCIpCisKKyAgICBkZWYgdGVzdF92ZXJp
Znlfc3ViamVjdChzZWxmKToKKyAgICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5lcmF0ZV9lY19j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisgICAgICAgIGNhZGF0YSA9IGNlcnRpZmljYXRlLnB1
YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSkKKworICAgICAgICB3aXRoIHBh
dGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1v
Y2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKwor
ICAgICAgICAgICAgIyB2YWxpZAorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaW52
YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0
aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLAorICAgICAgICAgICAgICAgICAgICBjZXJ0
aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX25hbWU9InRl
c3QuZXhhbXBsZS5jb20iLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAg
ICAgICAgImhvc3RuYW1lICd0ZXN0LmV4YW1wbGUuY29tJyBkb2Vzbid0IG1hdGNoICdleGFtcGxl
LmNvbSciLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKHRscy5BbGVydEJhZENlcnRpZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJp
ZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iYWNtZS5jb20iCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIo
Y20uZXhjZXB0aW9uKSwgImhvc3RuYW1lICdhY21lLmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBs
ZS5jb20nIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Rfd2l0
aF9zdWJqYWx0bmFtZShzZWxmKToKKyAgICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5lcmF0ZV9l
Y19jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGFsdGVybmF0aXZlX25hbWVzPVsiKi5leGFtcGxl
LmNvbSIsICJleGFtcGxlLmNvbSJdLAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUu
Y29tIiwKKyAgICAgICAgICAgIGN1cnZlPWVjLlNFQ1AyNTZSMSwKKyAgICAgICAgKQorICAgICAg
ICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGlu
Zy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9j
a191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZp
Y2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFsaWQKKyAgICAgICAgICAg
IHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0
aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAg
ICAgKQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgIGNh
ZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0idGVzdC5l
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBpbnZhbGlkCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmljYXRlKSBh
cyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAg
ICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFt
ZT0iYWNtZS5jb20iCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAg
ICAiaG9zdG5hbWUgJ2FjbWUuY29tJyBkb2Vzbid0IG1hdGNoIGVpdGhlciBvZiAnKi5leGFtcGxl
LmNvbScsICdleGFtcGxlLmNvbSciLAorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxz
X2NlcnRpZmljYXRlLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWJkZTYyOTA1NDg1OTliYTg2Zjg1YzE1MDYx
M2JmNzc2YWNkN2M5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTM4CnpjbWQ7UFZFeEN5ITF7
fVVee1lWPj5xbW5vbWRGTG5PcEh1U29EOFJSOClpbWoyRWBjZ3ZUPHMpZDk7MSFXbnw9TAp6V2lh
cUg8VGxgQlYtOTZ1NkswQnRHKm1OQzBkY3JeV0NKUW9HVj0yamc3ZWMjJGBneEg3Mk5WbV5ITEhe
R0ojXncKemopcjBlQXxRM2xKaVBnKE1ZX3B9eTJZdFFXdk45NWFeayMoNzZ1a1ptV0MhcSMpZjg1
Oz1EIXsySWRDbFBfOThkCnpzJihROXE5OXx+ZEg5P1lpJVc3KzYmJitRR0t2eF80MyFOT0E/fWRF
P0c4Z0IwfEFJNUlDSnVvNkxUezFpJVNmZQp6NyNBVVhrJiVed3hyd28jMFZ2K1opV3ExeEZrZUk4
LTBeKlZPMHJteipoQHh7QitYTStHYlkoYFQjbjI5Y2l7N3QKekJmdDN+P3hidytLRH5MPkpnMWxK
dih0Xnc/dEViKithLU05ekdacmkmKmklUCZpcjFqdGh3el40PksqY3lNQkdBCnpNeHtpdGduNDxI
JENWMCs+d0QkMCtgOEY1R24tSDRVSiQlTj4xX1hZWDB5ZkRtQ0krJl9qPFpeT1coZDR0cmc0OQp6
S21CLW93ZSplWUh4aj5wb0JKcjViJXBRajhGTWMlZHxSZX1kN0RfNF5ASi1mKD0+aEBQZV4lZ15u
MXNWbzx9KmwKelh8Wj5FVWNFb2piOXE7RD89RnZwUTcpenZDZC07T3dBT1BndEAmYWh4JHJVamdr
XmJsJVI7UyV5TUZNV1U2PUpyCnpDWW9SQSlTS3M9KSgpKTZ5WFJsT2MyYVp4UzJtfX05KFJUKU4y
aGF9MUVVKUZjUm0hb0BAZ3I2dzN9TVhKVk9nUAp6MSh8fWNgd1h+Kmp6cXJ5eDRCckAkU1N8Kmly
RmJ3IXlsI0BTRUZYJF8qZ2JvQD1EQFhFQjd4YUp7MyhgREV7REUKej5ZWiZ7Uz5MWEQrZzVzNUpA
OSQlXzQ0UTYxPlZePXpnUSt7KGwhNXQ1JENeJmBfI1VecFkmc1c+ZU1UJDd2eSlhCno5LVBMc0Ba
TDFwdUFSUDIlIX58LWk8PWteMEFwa2lJMSRNVHZoVyZrSHpDQyNBMjMjQmA1NzdpdiM+QlR1YFYh
Pgp6MUBUb2BLeHZMY25+amxgbTdTUnAmU0VtKTBaOXZrbHJ0R0hLb3MrX2hfUShEem1rMXk5SyNe
Q3hqUjJRfEZYfk4KenQqMnszNFFmRyhtMDhMUk4qWUEmP211PHcqK3I5Rz1CMHxLQEBIe3FkQHxr
VXVgcUNuS2IxMkA2Rm0xdDgjRmU8Cno5TH50ZFFmXlJjVTwyYkRGdHIoRWwjfj0kPkZieEk3TUNP
Xj5KQC08QWMmKXZtcyRjOSlpMDxfUEUxWk1EJHhUSAp6MkJ2VmBqQlQzND0qfnxyRjM+a3sxX2dw
Vmk7YVBtZnlEeHwxdHg3cSNPTihiRWR5cFZQemopeVQkRj5IJVlYJDUKekZxYnRsc0RKSD02IT4h
TnhkeX1qVUFAKTklcFlaeiNjeVR7VTgxen1fTko/RGQleUdDYjxXI1RuVlBRMXFaUnRqCnpwfDVy
UmVEfmQ0VEU1Iy1OQGdzbVV3N3hELWZnRkhpM2c/S1lOaT43OXA3ZjNDQDsjLW5pVShHJEBEaVc8
VjUpQwp6NFhNbXhrTjZvWlhRbk5mLTcjN0dRSXV8X1k1ZXI/aVgtZDQmV3ZrWWVPWWo9KUZSJHJL
PnxEZj9WbyRqXy01T3QKeklidUpxbTIhMDU9NmJxQ1RkYVB8UHAkY2ZGT14/RW49MUR1TkE3angm
SlhNMm0mbCotSTxtOEI8O2ByUDRDe3hmCno4KE93Y0lJYH5GN2p1OGIxXjREI1pHM3UwajN2I1Ur
d3FRKnQlQld+P05oWikhKy02by0pNlB6bHorcyhRYWdATAp6b3RfUGBkT3RlX3cwfUNmYFAocFRT
SEdPOXE5THhWWDZXPikmVHNPUT5XcSs2Xlc4cWIqTThaYHYkYldAUmEyOU8KelF0Yn5EbTNNRzNf
VSteZngkQGcyPS0qQSg0LU1BYTQoMnlxbD5jUFNAeSVgN0gxJE85MiV7PUsqfnBfVll2WklVCnpq
U3BVNyklVXU1IV54QEZfO0s+N3RMQFdnYHxnbHBIclh3NmlPRGB2YEheeCVOQWpUJGk7YEQjR2NX
KUVVTHJ9NAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMDgzOTUwYjUzOGMxMjNlYjll
ZGM4ZmNiZWQ5MmUxOTMyOTU3MzUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM5Mgp6Y21WOzMw
ZUFpbjAwRCN1MU9iNDhyT3U9OWNPZDBBdnYzJTlDMj1tJTc9ciojITxiJmE+V3slRyV8V0NPQGBy
VmEKemw7OEd6ZWxANXMmVmlYNzZ4Ozt+UlcmN156JUF6dSlmKXpsR0MrSTZPP3BjcyF9PG0oM0FY
bSpiaG5xWCghLUdaCnpvITR+QlhSYCRZekdQPVRlJmh8PlQ/ZSNUPElkV2hvNV4wQGhmWHdEVTc5
QnB5QVIzSl4/YUBCeDMhQH5CSmtNNQp6SDE9QUQmMSFEZngycnhjPWYmX2pkKmYlNGwtVmxtRTI2
RXh2RSphYiZwTk43MT5seUM/WGw7bE5MPHVXRDZ8ZTMKemBGPkU0dnUyQTk1QDdhKmQqSnxXQG0m
QjdzTG5uUXJ6fnModDtMaVA8Mj09MSR9fTJkTE09MTg/byYzYis+Yj92CnoxXl9GfiNteEpPYm1S
eXZQODxoaGxJWVArJVlUdCpQYUo3N1R4WGRhfDBCZGwzNj5qMUNDMGFUT2I7ODhxWkM1KAp6YWJJ
M1lLbUVqWnFIfFMxVkZaYklBWX5LSF57JVllbmBVP1MmWChvV201RHxRTSNzYkhHRndfJG95OHtR
M19fQlgKbTt7YD56OD5QU0c4aldUYDAhJXluOCZIV350SEMmKFooJEV0eVVNUUFRMnxAOFhUQUZY
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGxzX2NsaWVudF9oZWxsby5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
by5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE0MGFlY2ZjNjlmYjg0ZDViZWQ2YjFhYWM5MTYyZWMxM2EwNDY4
NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4CnpjbVpRJVZFRCgoRVV7Xm1fMih6dnV8YTQ0
UmxWNjB8SXUmbDttZS1DX0JaJHplb1MzZ19XWXtDdGFuWHxGMTgmIQp6Wk0wYlA9QUN+R1VRKjZv
N2QpYlprTF5EbmRlQ1Qqa3RxWTRGcTFIJkZmJF9xIStIaXwyNnFObTI1fDtRbWc7fHQKelVFRTRk
UylHISUkRyVURXxFdEwlTj5NdUY7X0ZgN0RTcWtlZW9RYHw3OE8hXyFSWSpZclJCRFpgbkllKF4/
PFNOCnpxSDZmb084RlRKVS0qa3xWOTtqWjxYfnAwbSNMU29tdHg+JDs5fXQ1VX0wZnFWUHMraXZS
TjNJZlZTdXxGZmxVegp5VSY+KHFwTWdQOyFIfEtLZnUldSFmcXtWeU8wej8wNzZ6Nl5wZkNkPzFD
dnQoMHx4Xz5Ma2lGZ01sSngkSSNHSDYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX2FscG4uYmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxMTNhM2U3NWUxNGQ2ZDkyOTBmNWRhNDI5YTMyNTAyZDdjNGMyNmMKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDMwNgp6Y21aUSVWQU53fmVqNlQ+emMrR0BAMn1NdG5Dfm9tayNPY1ZwTG87
M14tTkV6S2g8bj1wSXllbHojK15pJXB9YXIKekBTbC1eO3FVKlk0NWtkbTQ2RjwrNEotQHszflcl
RTlaSXRSWCN0PSgyTG1HYDExQUhNTGthXlVQPjcrXzA0T05JCnpBalpIVG9TYyhpbnYjfjJTZF4r
O1NlbHV2bXo8eD16fEZ3SSUpclJSenkqWEg0QmB5M0soJiQjJTBOOD1LdDNDNQp6aE93QHBCfWd8
PWopOCVmTDVATCZnXylJXmpoVGE7Z00pKlVnTnVXa2dOMXtZZ049b2VtNjQ1K0w3UmJAaUo2NSMK
em13XmZCM31YZyYyM01kKU4wdHNKIXgtbzQ0ZCptOVBsKXx7XjN2JXwlKG1ORSp8V2JYV2lXUVUt
Zig0Ryg2YjR+CmktXkpRaUZgaG0/Rnw7akQmMWImeG0jQnI9eXVTbiVETHIxNnNSUkkrKE1NX2sK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xp
ZW50X2hlbGxvX3dpdGhfcHNrLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjY5NWMzYTdiMzdjMjcwMTlhZmE1
MWE2MDUyNWNiYmMxMDk2NmI4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0ODEKemNtWlElVjck
eEI5Rj8rUypCJEV4ZUFRYiNHbXJBdXpjc3FOR0Vpe0J7b0orUjZDRHFtdSopZXBad2xqVzZPWVVQ
CnpgWnxQLWA+Tzl1OXFWSn45bHhYYCZZJDsjenhHZWQ4VXs5RENTZ1dsVz0wMGFKX2NoM2NMckFt
YVJ4YDBEUnhINwp6QTArOVdLZHtXOWBTLVB9X1czVipZOTAlMHMoTERfKERgJFoqbz5ERjRoLUhF
Oy09amRBdlArP2AlYitxY3l4M0EKeiklKGwtVUhPfEcpbVhOY0w3UmItZ1BFbVhyZTM7VWloLUFi
aS1DaUtnQHVgZ2slPHc9Vz9eNmcrTT4oQSNLXzNOCnp6I3pqUSNsUnE1bDNIQSVTNVRCJG1ST1JT
cEluayhQK0Z7KW9TKnhERFQ2N3tVOTFjJjRGVyo1WSozbVZPMHpKcQp6R3k7Vmc3PWU2LVFVZUFL
MX0yOVRwYmQ7JTN8Y144T0BeSGVFZXYoUEhzN2hPezJhSGBacXxLOFFOOUd4aU9VMGEKekBaOTZN
bkV2bkVnUl5ePndUXzYlQTNlRyl0QDU1e2tvVk9qcE1kTXFpPVBFbGFDIWY4KDlMMzd6XmNqfWRz
THhTCnoqKmYjV1VFeFZTTX5AM0hvPnQqXj5RQ2c/U0glWS1Waz91UnlRVnoocSR3QCNSMiRnM2Bw
ZTJHZjBwfF9VO2NDUQp6JTdFaG4lenRXclJHYXpFVmxYcmk/Xnhebl9yTGwxVjtZfmxiRHAwI3A0
ZDxqKztCXyRtUWthMF5nNiRhPiNOcU0KU3VHfXUldUNLa1JMKmtURkhYe0lDQUZAZ1MKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xp
ZW50X2hlbGxvX3dpdGhfc25pLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hl
bGxvX3dpdGhfc25pLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTY4YTg2MTY3ZmYxNjE4MzFmM2U5NzllNzQ1
MDJjMzAzZTE2YTVlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODYKemNtWlElVjNjQkpvPkFM
ckJFcnEoYlNCaTVVRVkzdmVkMDlSPkoqbU89e34qdDA/ay1Wdks3PWUmYzE3S2ArRmNgCnpsJEY+
Kz4jR3goP210bzNLSihKanZ2R251ZXBSMU5WXyp8ejVAci07V0BLUEUmMHgmbiZmdi0qJmZ2KGhP
fUY0RAp6YHc1WT1zVGFPbWNoOGgoK3M7IWlZOUc9ZnV5RXB+am5oKld5KlpHT3h9QFIjJTctNiRk
WTMmbnpxPGNgX3Y3IXkKemtHT2JkKSgzNyk1XjhXQCZ9UUp8VX1tWThzaDYmb1YmRy1xViZMRmxW
UFIlcldNVHhlU3MwanJ3JipmMkYjQGUrCnprWUVzRlU9VTh1JHVDVnclU2tMcyloI1R8T3g4PXom
OzdyWSFUZGkxZ0NLKDsxMWtlZGc4KSExODxiezsoa3UpdApYalgrQHJNZ31JUTJuRyVZQ1dqUURg
SFdsdTF8Q3JUCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJpbiBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNTQ2YzcwYzQ5Y2U2
YjNiMzczOWZhMjk0MzNlMTczOTc1NTNlYTYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDkwCnpj
bWQ7SlU8aExmYE07RFE7NkRSe0FQYjBLYUFqYStVfStGd1V8P1dfKChGKjBnQEw2SkQ5cGdmen5t
SWN6e0NKagpRZzk8bnBtPmcwVnhFTDZAMDR9VHUqI0gwbAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9u
c193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5z
aW9uc193aXRoX2FscG4uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkODQzNmE3YjMzODMwNzdmNGEzOWFkMzE4
YTU4YjI4ZTNiZDM1NzIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNQp6Y21kO0pWOTAwNFdk
SCNJMWBZLWApe0hgM0JaTDEtODZwfE44UTIoRDhXe2ZuWEpDY1dPYmh9PypFc1U7ejQ5K2wKek0/
fFVlbGlgYTgzfHRKMSVuVTMqMSs0I25GPm9fNU4tezdxRnJeRnBjVmdnKVZYSWV2SlghSVdveVBO
JTQ5cEJuCkw/b1dVPUZ0UHl2UVYxUVIKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
X2FuZF9lYXJseV9kYXRhLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuX2FuZF9lYXJseV9kYXRhLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTkwNjlm
NmJlM2QyZTQ1N2U2M2M5NDJmYzlmMDU0Y2RiYWM0YTkxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxMTYKemNtZDtKVT9eYjdWKm1qRzFgWS1gKXtIYDNCTGZDNDI4UkRqOE53SnM3Pz5DWWN1eGxg
YVNBaz14K1EofmRZMDMxCnp8Tm5PfWFHcUhJVHF9OUhZNnY/Njh2eyFOIX5nJDQmNVNATWtpK2Bf
N1h2RilrZVB3V3tSc21YMTB5cDdCTGg+cQpLMDBURHpxYSotb184WjZtCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2ZpbmlzaGVkLmJp
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQuYmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NGJi
MmYyYTlkMjc1MzhjYTIxNTRhYjc5NGYzOWVmNzc2ZmQ1ZmEKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDM2CnVjbVYrPDBOZWkqMDAxRUlTQ1RSYHxDJmk1c0BwQ08kRlpYaSZVNT5ventEcVNuKH1E
JDI8JkphTkQtUj0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90bHNfbmV3X3Nlc3Npb25fdGlja2V0LmJpbiBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfbmV3X3Nlc3Npb25fdGlja2V0LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDM5YjQ3MzFlMDRiM2I2
ZDZkM2E2MTVmYzMzZGU1ZGY3NDZjZjViCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1Nwp6Y21a
USFVQCZFMTN+Vl5eWSZ8Q2ZnVG4xK0FEMzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUVi
Q1lAPHkKTTs5JF5WVkVHUk8wRHdqcUpeJW0hCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vu
a25vd25fZXh0ZW5zaW9uLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfbmV3X3Nlc3Npb25f
dGlja2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNzkyODkwYWNl
NzUxM2NmYjVhYTE4YTM3M2E5NDlmNDFkYjhjY2YKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY0
CnpjbVpRIVY2YjZlM35WXl5ZJnxDZmdUbjErQUQzNUU5Qnw3MWx+OGx4ZzA/QT5gJU5+OTAoWntI
PzY9RWJDWUA8eQpUO0FoWmNWRUdSTzI5XnhXWTVEbThGO2Z9KgoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG8uYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG8uYmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
YTZjNTFmZTU2MDI5NTEzYjgzOGM2ZDI0MzE5Y2U1YzhmZmRiZjQKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDE1NQp6Y21WO00wQSY5SDAwNVQqMUZmaTFhblk4NSN1ZSZ3SGNfNUctKXxsIV5SV2tC
O29nQDJzRUFJMmZGUFJnZn0rdWUKeiFPSnFFRGNSaXEwN0BEfGlxSj99UV52b35SbHpjJUdCcHpk
MDAyKF9EKnlybTFPUEp0TUYxQjdLP0k4QCY/cTg4CnoqaF8hUjA7JENES0ZSfHI8SHJKO3FlP1Mq
UEh1YWxpQ29HWVAmQEU5aXBHPENIQXhaP1p9VE0oQ2NMNFFqZWpfRQpKN1JXbTAmJDFOKkt7QH5j
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3Nl
cnZlcl9oZWxsb193aXRoX3Bzay5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVjY2RmNTlhYjk1ZTg5ZTQwNGNl
MjM0ZGIzZjgxZDE4ZGUxZTBlYgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYxCnpjbVY7UzBB
QndCMDA1bD4xSSlVdzFwRkotNmd3PSZ4cGc0VkhgeD8kK3gmcWk2Qj5LKWA5YjVNSHoxVVE9amZI
dAp6XnY9Tz5oT21UfDBsO0c+ViRGNj1meyFuV0ZIQjIhYWorOHQwMDMxMEQqeXJtMU9QSnRNRjFC
N0s/SEBAJmRjbGsKelJGQjQyemZyajgrSnFgVlI8VUhGZXxHfVBGXm1ARWgjMG0mbTZOZXRXPVlv
Y1N2WSFBNXtuaT1jJio0bDduLWRCClAoYEBOb1ZzLSMyMDBJQzI2SSg7awoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVs
bG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3Nl
cnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmU1Yjcw
NzNmZGJlM2NiN2JmZmI3MThiMTQ2ZGUyNTEwODNiZWQ1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxNjIKemNtVjtUMEEycUEwMDVvPzFGZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ay
c0VBSTJmRlBSZ2Z9K3VlCnohT0pxRURjUmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMzQx
RCp5cm0xT1BKdE1GMUI3Sz9JOEAmP3E4OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFs
aUNvR1lQJkBFOWlwRzxDSEF4Wj9afVRNKENjTDRRamVqX0UKUTdSV20wJiQySyUwMFUta1p8UmRs
X3k3T14KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MGJhYjJiNjhhMjQ4ZmJjNTM0MGYyM2UyYTc5NzY3MDUwYTVmNWE0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3V0aWxzLnB5CkBAIC0wLDAgKzEsNzEgQEAKK2ltcG9ydCBh
c3luY2lvCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9y
dCBzeXMKKworZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3JhcGh5
Lmhhem1hdC5iYWNrZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBo
eS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCBlYworCisKK2RlZiBnZW5lcmF0ZV9lY19j
ZXJ0aWZpY2F0ZShjb21tb25fbmFtZSwgY3VydmU9ZWMuU0VDUDI1NlIxLCBhbHRlcm5hdGl2ZV9u
YW1lcz1bXSk6CisgICAga2V5ID0gZWMuZ2VuZXJhdGVfcHJpdmF0ZV9rZXkoYmFja2VuZD1kZWZh
dWx0X2JhY2tlbmQoKSwgY3VydmU9Y3VydmUpCisKKyAgICBzdWJqZWN0ID0gaXNzdWVyID0geDUw
OS5OYW1lKAorICAgICAgICBbeDUwOS5OYW1lQXR0cmlidXRlKHg1MDkuTmFtZU9JRC5DT01NT05f
TkFNRSwgY29tbW9uX25hbWUpXQorICAgICkKKworICAgIGJ1aWxkZXIgPSAoCisgICAgICAgIHg1
MDkuQ2VydGlmaWNhdGVCdWlsZGVyKCkKKyAgICAgICAgLnN1YmplY3RfbmFtZShzdWJqZWN0KQor
ICAgICAgICAuaXNzdWVyX25hbWUoaXNzdWVyKQorICAgICAgICAucHVibGljX2tleShrZXkucHVi
bGljX2tleSgpKQorICAgICAgICAuc2VyaWFsX251bWJlcih4NTA5LnJhbmRvbV9zZXJpYWxfbnVt
YmVyKCkpCisgICAgICAgIC5ub3RfdmFsaWRfYmVmb3JlKGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25v
dygpKQorICAgICAgICAubm90X3ZhbGlkX2FmdGVyKGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygp
ICsgZGF0ZXRpbWUudGltZWRlbHRhKGRheXM9MTApKQorICAgICkKKyAgICBpZiBhbHRlcm5hdGl2
ZV9uYW1lczoKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuYWRkX2V4dGVuc2lvbigKKyAgICAg
ICAgICAgIHg1MDkuU3ViamVjdEFsdGVybmF0aXZlTmFtZSgKKyAgICAgICAgICAgICAgICBbeDUw
OS5ETlNOYW1lKG5hbWUpIGZvciBuYW1lIGluIGFsdGVybmF0aXZlX25hbWVzXQorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIGNyaXRpY2FsPUZhbHNlLAorICAgICAgICApCisgICAgY2VydCA9
IGJ1aWxkZXIuc2lnbihrZXksIGhhc2hlcy5TSEEyNTYoKSwgZGVmYXVsdF9iYWNrZW5kKCkpCisg
ICAgcmV0dXJuIGNlcnQsIGtleQorCisKK2RlZiBsb2FkKG5hbWUpOgorICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgbmFtZSkKKyAgICB3aXRoIG9wZW4o
cGF0aCwgInJiIikgYXMgZnA6CisgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKworCitkZWYgcnVu
KGNvcm8pOgorICAgIHJldHVybiBhc3luY2lvLmdldF9ldmVudF9sb29wKCkucnVuX3VudGlsX2Nv
bXBsZXRlKGNvcm8pCisKKworU0VSVkVSX0NBQ0VSVEZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSwgInB5Y2FjZXJ0LnBlbSIpCitTRVJWRVJfQ0VSVEZJTEUgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9jZXJ0LnBlbSIpCitT
RVJWRVJfQ0VSVEZJTEVfV0lUSF9DSEFJTiA9IG9zLnBhdGguam9pbigKKyAgICBvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAic3NsX2NlcnRfd2l0aF9jaGFpbi5wZW0iCispCitTRVJWRVJfS0VZ
RklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAic3NsX2tleS5w
ZW0iKQorU0tJUF9URVNUUyA9IGZyb3plbnNldChvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19TS0lQ
X1RFU1RTIiwgIiIpLnNwbGl0KCIsIikpCisKK2lmIG9zLmVudmlyb24uZ2V0KCJBSU9RVUlDX0RF
QlVHIik6CisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHKQorCitp
ZiAoCisgICAgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIKKyAgICBhbmQgc3lzLnZlcnNpb25faW5m
by5tYWpvciA9PSAzCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWlub3IgPT0gOAorKToKKyAg
ICAjIFB5dGhvbiAzLjggdXNlcyBQcm9hY3RvckV2ZW50TG9vcCBieSBkZWZhdWx0LAorICAgICMg
d2hpY2ggYnJlYWtzIFVEUCAvIElQdjYgc3VwcG9ydCwgc2VlOgorICAgICMKKyAgICAjIGh0dHBz
Oi8vYnVncy5weXRob24ub3JnL2lzc3VlMzkxNDgKKworICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xv
b3BfcG9saWN5KGFzeW5jaW8uV2luZG93c1NlbGVjdG9yRXZlbnRMb29wUG9saWN5KCkpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg1MDlj
OTA5OWNlYThhZWUyOGRlZmZiNTUwNjJkMzkzZDFjM2JhOApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMzEKbGNtYUZHMDBiUGYpPGsqa1lHMntXQGwpVH4/QUtLM2d8Nj1JViplUSFCbXVJSjNqK1dF
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzkwZjEzZTFiMmMzNzUzZTI4NjkzZmFlMjM4MjUyYWY2N2E3ODg2MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDU3
IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgor
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisK
K0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQ
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlz
dCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvaW5pdGlhbF9jbGllbnQuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxf
c2VydmVyLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvcmV0cnkuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4K
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nz
bF9jZXJ0X3dpdGhfY2hhaW4ucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2FzeW5jaW9fY29tcGF0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90ZXN0X2NyeXB0by5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dn
ZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Jh
bmdlc2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3N0cmVh
bS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfY2VydGlmaWNhdGUuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0
ZV92ZXJpZnkuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbgorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfc25pLmJpbgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19l
bmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4uYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxz
X25ld19zZXNzaW9uX3RpY2tldC5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNz
aW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfc2VydmVyX2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hl
bGxvX3dpdGhfcHNrLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dp
dGhfdW5rbm93bl9leHRlbnNpb24uYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3V0aWxzLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24uYmluCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWE0ZWM5NWM5YTE2MTY3Y2MzZWMwYzMxNzM1MzJjNTQwMGMxMTZjYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIx
IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgor
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisK
K0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQ
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlz
dCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTElDRU5TRQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9NQU5JRkVT
VC5pbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9SRUFETUUucnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09O
VFJJQlVUSU5HIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
NzViZTEyNmZiNDU4OWM4NjU5OTRjNTlkNjEzZTNkNDFhN2E5NjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9DT05UUklCVVRJTkcKQEAgLTAsMCArMSwzMCBAQAorIyBIb3cg
dG8gQ29udHJpYnV0ZQorCitXZSdkIGxvdmUgdG8gYWNjZXB0IHlvdXIgcGF0Y2hlcyBhbmQgY29u
dHJpYnV0aW9ucyB0byB0aGlzIHByb2plY3QuIFRoZXJlIGFyZQoranVzdCBhIGZldyBzbWFsbCBn
dWlkZWxpbmVzIHlvdSBuZWVkIHRvIGZvbGxvdy4KKworIyMgQ29udHJpYnV0b3IgTGljZW5zZSBB
Z3JlZW1lbnQKKworQ29udHJpYnV0aW9ucyB0byB0aGlzIHByb2plY3QgbXVzdCBiZSBhY2NvbXBh
bmllZCBieSBhIENvbnRyaWJ1dG9yIExpY2Vuc2UKK0FncmVlbWVudC4gWW91IChvciB5b3VyIGVt
cGxveWVyKSByZXRhaW4gdGhlIGNvcHlyaWdodCB0byB5b3VyIGNvbnRyaWJ1dGlvbjsKK3RoaXMg
c2ltcGx5IGdpdmVzIHVzIHBlcm1pc3Npb24gdG8gdXNlIGFuZCByZWRpc3RyaWJ1dGUgeW91ciBj
b250cmlidXRpb25zIGFzCitwYXJ0IG9mIHRoZSBwcm9qZWN0LiBIZWFkIG92ZXIgdG8gPGh0dHBz
Oi8vY2xhLmRldmVsb3BlcnMuZ29vZ2xlLmNvbS8+IHRvIHNlZQoreW91ciBjdXJyZW50IGFncmVl
bWVudHMgb24gZmlsZSBvciB0byBzaWduIGEgbmV3IG9uZS4KKworWW91IGdlbmVyYWxseSBvbmx5
IG5lZWQgdG8gc3VibWl0IGEgQ0xBIG9uY2UsIHNvIGlmIHlvdSd2ZSBhbHJlYWR5IHN1Ym1pdHRl
ZCBvbmUKKyhldmVuIGlmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHJvamVjdCksIHlvdSBwcm9i
YWJseSBkb24ndCBuZWVkIHRvIGRvIGl0CithZ2Fpbi4KKworIyMgQ29kZSByZXZpZXdzCisKK0Fs
bCBzdWJtaXNzaW9ucywgaW5jbHVkaW5nIHN1Ym1pc3Npb25zIGJ5IHByb2plY3QgbWVtYmVycywg
cmVxdWlyZSByZXZpZXcuIFdlCit1c2UgR2l0SHViIHB1bGwgcmVxdWVzdHMgZm9yIHRoaXMgcHVy
cG9zZS4gQ29uc3VsdAorW0dpdEh1YiBIZWxwXShodHRwczovL2hlbHAuZ2l0aHViLmNvbS9hcnRp
Y2xlcy9hYm91dC1wdWxsLXJlcXVlc3RzLykgZm9yIG1vcmUKK2luZm9ybWF0aW9uIG9uIHVzaW5n
IHB1bGwgcmVxdWVzdHMuCitGb3IgaW5zdHJ1Y3Rpb25zIGZvciBjb250cmlidXRpbmcgY29kZSwg
cGxlYXNlIHJlYWQ6CitodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3B5d2Vic29ja2V0L3dpa2kv
Q29kZVJldmlld0luc3RydWN0aW9uCisKKyMjIENvbW11bml0eSBHdWlkZWxpbmVzCisKK1RoaXMg
cHJvamVjdCBmb2xsb3dzCitbR29vZ2xlJ3MgT3BlbiBTb3VyY2UgQ29tbXVuaXR5IEd1aWRlbGlu
ZXNdKGh0dHBzOi8vb3BlbnNvdXJjZS5nb29nbGUvY29uZHVjdC8pLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzkxYmVhOTAyNTQyODc3OWUxNjQ0NTljMmExMjBlMWEwN2FhODVjOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorQ29w
eXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZFU1Qu
aW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9NQU5JRkVTVC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTI1Njg4MmM1
NmZlYjcyODEyYzk5YzhhODM3OTk3OWU2M2U0YTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvTUFOSUZFU1QuaW4KQEAgLTAsMCArMSw2IEBACitpbmNsdWRlIENPUFlJTkcK
K2luY2x1ZGUgTUFOSUZFU1QuaW4KK2luY2x1ZGUgUkVBRE1FCityZWN1cnNpdmUtaW5jbHVkZSBl
eGFtcGxlICoucHkKK3JlY3Vyc2l2ZS1pbmNsdWRlIG1vZF9weXdlYnNvY2tldCAqLnB5CityZWN1
cnNpdmUtaW5jbHVkZSB0ZXN0ICoucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JF
QURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzdjYmU1
NTBjMDY1NzgyYjBlMzE1ZGUwNDY1MWM5ZTA2OGNiM2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzYgQEAKKworIyBweXdlYnNvY2tl
dDMgIworCitUaGUgcHl3ZWJzb2NrZXQgcHJvamVjdCBhaW1zIHRvIHByb3ZpZGUgYSBbV2ViU29j
a2V0XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSkgc3RhbmRhbG9uZSBzZXJ2
ZXIuCisKK3B5d2Vic29ja2V0IGlzIGludGVuZGVkIGZvciAqKnRlc3RpbmcqKiBvciAqKmV4cGVy
aW1lbnRhbCoqIHB1cnBvc2VzLgorCitSdW4gdGhpcyB0byByZWFkIHRoZSBnZW5lcmFsIGRvY3Vt
ZW50OgorYGBgCiskIHB5ZG9jIG1vZF9weXdlYnNvY2tldAorYGBgCisKK1BsZWFzZSBzZWUgW1dp
a2ldKC4uLy4uL3dpa2kpIGZvciBtb3JlIGRldGFpbHMuCisKKyMgSU5TVEFMTCAjCisKK1RvIGlu
c3RhbGwgdGhpcyBwYWNrYWdlIHRvIHRoZSBzeXN0ZW0sIHJ1biB0aGlzOgorYGBgCiskIHB5dGhv
biBzZXR1cC5weSBidWlsZAorJCBzdWRvIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCitgYGAKKwor
VG8gaW5zdGFsbCB0aGlzIHBhY2thZ2UgYXMgYSBub3JtYWwgdXNlciwgcnVuIHRoaXMgaW5zdGVh
ZDoKKworYGBgCiskIHB5dGhvbiBzZXR1cC5weSBidWlsZAorJCBweXRob24gc2V0dXAucHkgaW5z
dGFsbCAtLXVzZXIKK2BgYAorIyBMQVVOQ0ggIworCitUbyB1c2UgcHl3ZWJzb2NrZXQgYXMgc3Rh
bmRhbG9uZSBzZXJ2ZXIsIHJ1biB0aGlzIHRvIHJlYWQgdGhlIGRvY3VtZW50OgorYGBgCiskIHB5
ZG9jIG1vZF9weXdlYnNvY2tldC5zdGFuZGFsb25lCitgYGAKKyMgRGlzY2xhaW1lciAjCitUaGlz
IGlzIG5vdCBhbiBvZmZpY2lhbGx5IHN1cHBvcnRlZCBHb29nbGUgcHJvZHVjdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFiNzE5Y2E4OTczNzEwNTcxOWM3MWMyYTQyZWFmZjBkNDY0NDc4YzcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKQEAg
LTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAiQWJvcnRlZCBpbiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSIpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YzI0MGJmMmMxY2Iw
YmQ1MzhlYzM3YmY1NTFjMTEyNTYzOTZiOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNl
cHRpb24oCisgICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSIpCisK
KworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjljZDdlMWVlNjUzZDU5
ZjA0YjgwMmZmMzRjOGQwODEzMTdjYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbApAQCAtMCwwICsxLDEzNCBA
QAorPCEtLQorQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJlc2VydmVk
LgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Cit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+QXJyYXlCdWZmZXIgYmVuY2htYXJrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgUFJJTlRfU0laRSA9IHRydWU7CisKKy8vIEluaXRpYWwg
c2l6ZSBvZiBhcnJheXMuCit2YXIgU1RBUlRfU0laRSA9IDEwICogMTAyNDsKKy8vIFN0b3BzIGJl
bmNobWFyayB3aGVuIHRoZSBzaXplIG9mIGFuIGFycmF5IGV4Y2VlZHMgdGhpcyB0aHJlc2hvbGQu
Cit2YXIgU1RPUF9USFJFU0hPTEQgPSAxMDAwMDAgKiAxMDI0OworLy8gSWYgdGhlIHNpemUgb2Yg
ZWFjaCBhcnJheSBpcyBzbWFsbCwgd3JpdGUvcmVhZCB0aGUgYXJyYXkgbXVsdGlwbGUgdGltZXMK
Ky8vIHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0aGlzIHRocmVzaG9sZC4KK3ZhciBN
SU5fVE9UQUwgPSAxMDAwMDAgKiAxMDI0OwordmFyIE1VTFRJUExJRVJTID0gWzUsIDJdOworCisv
LyBSZXBlYXQgYmVuY2htYXJrIGZvciBzZXZlcmFsIHRpbWVzIHRvIG1lYXN1cmUgcGVyZm9ybWFu
Y2Ugb2Ygb3B0aW1pemVkCisvLyAoc3VjaCBhcyBKSVQpIHJ1bi4KK3ZhciBSRVBFQVRfRk9SX1dB
Uk1VUCA9IDM7CisKK2Z1bmN0aW9uIHdyaXRlQmVuY2htYXJrKHNpemUsIG1pblRvdGFsKSB7Cisg
IHZhciB0b3RhbFNpemUgPSAwOworICB3aGlsZSAodG90YWxTaXplIDwgbWluVG90YWwpIHsKKyAg
ICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICAvLyBXcml0
ZSAnYSdzLgorICAgIGZpbGxBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHg2MSk7CisKKyAgICB0
b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorICByZXR1cm4gdG90YWxTaXplOworfQorCitmdW5jdGlv
biByZWFkQmVuY2htYXJrKHNpemUsIG1pblRvdGFsKSB7CisgIHZhciB0b3RhbFNpemUgPSAwOwor
ICB3aGlsZSAodG90YWxTaXplIDwgbWluVG90YWwpIHsKKyAgICB2YXIgYXJyYXlCdWZmZXIgPSBu
ZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBpZiAoIXZlcmlmeUFycmF5QnVmZmVyKGFycmF5
QnVmZmVyLCAweDAwKSkgeworICAgICAgcXVldWVMb2coJ1ZlcmlmaWNhdGlvbiBmYWlsZWQnKTsK
KyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQor
ICByZXR1cm4gdG90YWxTaXplOworfQorCitmdW5jdGlvbiBydW5CZW5jaG1hcmsoYmVuY2htYXJr
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdG9wVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgIG1pblRvdGFsLAorICAg
ICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXJzLAorICAgICAgICAgICAgICAgICAgICAgIG11
bHRpcGxpZXJJbmRleCkgeworICB3aGlsZSAoc2l6ZSA8PSBzdG9wVGhyZXNob2xkKSB7CisgICAg
dmFyIG1heFNwZWVkID0gMDsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgUkVQRUFUX0ZPUl9X
QVJNVVA7ICsraSkgeworICAgICAgdmFyIHN0YXJ0VGltZUluTXMgPSBnZXRUaW1lU3RhbXAoKTsK
KworICAgICAgdmFyIHRvdGFsU2l6ZSA9IGJlbmNobWFya0Z1bmN0aW9uKHNpemUsIG1pblRvdGFs
KTsKKworICAgICAgbWF4U3BlZWQgPSBNYXRoLm1heChtYXhTcGVlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6ZSwgc3RhcnRUaW1lSW5Ncykp
OworICAgIH0KKyAgICBxdWV1ZUxvZyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCBtYXhTcGVlZCwg
UFJJTlRfU0laRSkpOworCisgICAgc2l6ZSAqPSBtdWx0aXBsaWVyc1ttdWx0aXBsaWVySW5kZXhd
OworICAgIG11bHRpcGxpZXJJbmRleCA9IChtdWx0aXBsaWVySW5kZXggKyAxKSAlIG11bHRpcGxp
ZXJzLmxlbmd0aDsKKyAgfQorfQorCitmdW5jdGlvbiBydW5CZW5jaG1hcmtzKCkgeworICBxdWV1
ZUxvZygnTWVzc2FnZSBzaXplIGluIEtpQiwgU3BlZWQgaW4ga0IvcycpOworCisgIHF1ZXVlTG9n
KCdXcml0ZSBiZW5jaG1hcmsnKTsKKyAgcnVuQmVuY2htYXJrKAorICAgICAgd3JpdGVCZW5jaG1h
cmssIFNUQVJUX1NJWkUsIFNUT1BfVEhSRVNIT0xELCBNSU5fVE9UQUwsIE1VTFRJUExJRVJTLCAw
KTsKKyAgcXVldWVMb2coJ0ZpbmlzaGVkJyk7CisKKyAgcXVldWVMb2coJ1JlYWQgYmVuY2htYXJr
Jyk7CisgIHJ1bkJlbmNobWFyaygKKyAgICAgIHJlYWRCZW5jaG1hcmssIFNUQVJUX1NJWkUsIFNU
T1BfVEhSRVNIT0xELCBNSU5fVE9UQUwsIE1VTFRJUExJRVJTLCAwKTsKKyAgYWRkVG9Mb2coJ0Zp
bmlzaGVkJyk7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7CisgIGxvZ0JveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKTsKKworICBxdWV1ZUxvZyh3aW5kb3cubmF2aWdhdG9yLnVzZXJB
Z2VudC50b0xvd2VyQ2FzZSgpKTsKKworICBhZGRUb0xvZygnU3RhcnRlZC4uLicpOworCisgIHNl
dFRpbWVvdXQocnVuQmVuY2htYXJrcywgMCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJpbml0KCkiPgorPHRleHRhcmVhCisgICAgaWQ9ImxvZyIgcm93cz0iNTAiIHN0
eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRmNTBlNzdk
YjI3NmNjYTFkZTQ3MjA1OWEwNzQwNzFiODFhOTNjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hfd3NoLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29w
eXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorIiIiQSBzaW1wbGUgbG9hZCB0ZXN0ZXIgZm9yIFdlYlNvY2tldCBjbGllbnRz
LgorCitBIGNsaWVudCBwcm9ncmFtIHNlbmRzIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYXMgIjx0aW1l
PiA8Y291bnQ+IDxtZXNzYWdlPiIgdG8KK3RoaXMgaGFuZGxlci4gVGhpcyBoYW5kbGVyIHN0YXJ0
cyBzZW5kaW5nIHRvdGFsIDxjb3VudD4gV2ViU29ja2V0IG1lc3NhZ2VzCitjb250YWluaW5nIDxt
ZXNzYWdlPiBldmVyeSA8dGltZT4gc2Vjb25kcy4gPHRpbWU+IGNhbiBiZSBhIGZsb2F0aW5nIHBv
aW50Cit2YWx1ZS4gPGNvdW50PiBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUuCisiIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB0aW1lCitmcm9tIHNp
eC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcgJykKKyAgICBpZiBs
ZW4ocGFydHMpICE9IDM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBwYXJhbWV0ZXIg
Zm9ybWF0JykKKyAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0pCisgICAgY291bnQgPSBpbnQocGFy
dHNbMV0pCisgICAgbWVzc2FnZSA9IHBhcnRzWzJdCisgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQp
OgorICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2FnZSkKKyAgICAg
ICAgdGltZS5zbGVlcCh3YWl0KQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFlNWM5N2IzYTcxYmNmOWVi
ZGU3YzRmY2FmMTUzNzUzODliMWM2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwKQEAgLTAsMCArMSwxNzUgQEAKKzwhLS0KK0NvcHly
aWdodCAyMDEzLCBHb29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKy0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPldlYlNvY2tldCBi
ZW5jaG1hcms8L3RpdGxlPgorPHNjcmlwdCBzcmM9InV0aWxfbWFpbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJrLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgYWRkcmVzc0JveCA9IG51bGw7CisKK2Z1bmN0aW9u
IGdldENvbmZpZygpIHsKKyAgcmV0dXJuIHsKKyAgICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFs
dWUsCisgICAgcHJpbnRTaXplOiBnZXRCb29sRnJvbUNoZWNrQm94KCdwcmludHNpemUnKSwKKyAg
ICBudW1Tb2NrZXRzOiBnZXRJbnRGcm9tSW5wdXQoJ251bXNvY2tldHMnKSwKKyAgICAvLyBJbml0
aWFsIHNpemUgb2YgbWVzc2FnZXMuCisgICAgbnVtSXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0
KCdudW1pdGVyYXRpb25zJyksCisgICAgbnVtV2FybVVwSXRlcmF0aW9uczogZ2V0SW50RnJvbUlu
cHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCisgICAgc3RhcnRTaXplOiBnZXRJbnRGcm9tSW5w
dXQoJ3N0YXJ0c2l6ZScpLAorICAgIC8vIFN0b3BzIGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9m
IG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KKyAgICBzdG9wVGhyZXNob2xkOiBnZXRJ
bnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwKKyAgICAvLyBJZiB0aGUgc2l6ZSBvZiBlYWNo
IG1lc3NhZ2UgaXMgc21hbGwsIHNlbmQvcmVjZWl2ZSBtdWx0aXBsZSBtZXNzYWdlcworICAgIC8v
IHVudGlsIHRoZSBzdW0gb2Ygc2l6ZXMgcmVhY2hlcyB0aGlzIHRocmVzaG9sZC4KKyAgICBtaW5U
b3RhbDogZ2V0SW50RnJvbUlucHV0KCdtaW50b3RhbCcpLAorICAgIG11bHRpcGxpZXJzOiBnZXRG
bG9hdEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAorICAgIHZlcmlmeURhdGE6IGdldEJv
b2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKSwKKyAgICBhZGRUb0xvZzogYWRkVG9Mb2csCisg
ICAgYWRkVG9TdW1tYXJ5OiBhZGRUb1N1bW1hcnksCisgICAgbWVhc3VyZVZhbHVlOiBtZWFzdXJl
VmFsdWUsCisgICAgbm90aWZ5QWJvcnQ6IG5vdGlmeUFib3J0CisgIH07Cit9CisKK2Z1bmN0aW9u
IG9uU2VuZEJlbmNobWFyaygpIHsKKyAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOworICBkb0Fj
dGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAnc2VuZEJlbmNobWFy
aycpOworfQorCitmdW5jdGlvbiBvblJlY2VpdmVCZW5jaG1hcmsoKSB7CisgIHZhciBjb25maWcg
PSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3
b3JrZXInKSwgJ3JlY2VpdmVCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rpb24gb25CYXRjaEJlbmNo
bWFyaygpIHsKKyAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcs
IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAnYmF0Y2hCZW5jaG1hcmsnKTsKK30KKwor
ZnVuY3Rpb24gb25TdG9wKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0
aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdzdG9wJyk7Cit9CisK
K2Z1bmN0aW9uIGluaXQoKSB7CisgIGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWRkcmVzcycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7
CisKKyAgc3VtbWFyeUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdW1tYXJ5Jyk7CisK
KyAgdmFyIHNjaGVtZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PSAnaHR0cHM6JyA/ICd3
c3M6Ly8nIDogJ3dzOi8vJzsKKyAgdmFyIGRlZmF1bHRBZGRyZXNzID0gc2NoZW1lICsgd2luZG93
LmxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInOworCisgIGFkZHJlc3NCb3gudmFs
dWUgPSBkZWZhdWx0QWRkcmVzczsKKworICBhZGRUb0xvZyh3aW5kb3cubmF2aWdhdG9yLnVzZXJB
Z2VudC50b0xvd2VyQ2FzZSgpKTsKKyAgYWRkVG9TdW1tYXJ5KHdpbmRvdy5uYXZpZ2F0b3IudXNl
ckFnZW50LnRvTG93ZXJDYXNlKCkpOworCisgIGlmICghKCdXZWJTb2NrZXQnIGluIHdpbmRvdykp
IHsKKyAgICBhZGRUb0xvZygnV2ViU29ja2V0IGlzIG5vdCBhdmFpbGFibGUnKTsKKyAgfQorCisg
IGluaXRXb3JrZXIoJycpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Imlu
aXQoKSI+CisKKzxkaXYgaWQ9ImJlbmNobWFya19kaXYiPgorICB1cmwgPGlucHV0IHR5cGU9InRl
eHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVl
PSJzZW5kIiBvbmNsaWNrPSJvblNlbmRCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0eXBlPSJidXR0
b24iIHZhbHVlPSJyZWNlaXZlIiBvbmNsaWNrPSJvblJlY2VpdmVCZW5jaG1hcmsoKSI+CisgIDxp
bnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJiYXRjaCIgb25jbGljaz0ib25CYXRjaEJlbmNobWFy
aygpIj4KKyAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InN0b3AiIG9uY2xpY2s9Im9uU3Rv
cCgpIj4KKworICA8YnIvPgorCisgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InByaW50c2l6
ZSIgY2hlY2tlZD4KKyAgPGxhYmVsIGZvcj0icHJpbnRzaXplIj5QcmludCBzaXplIGFuZCB0aW1l
IHBlciBtZXNzYWdlPC9sYWJlbD4KKyAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idmVyaWZ5
ZGF0YSIgY2hlY2tlZD4KKyAgPGxhYmVsIGZvcj0idmVyaWZ5ZGF0YSI+VmVyaWZ5IGRhdGE8L2xh
YmVsPgorICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ3b3JrZXIiPgorICA8bGFiZWwgZm9y
PSJ3b3JrZXIiPlJ1biBvbiB3b3JrZXI8L2xhYmVsPgorCisgIDxici8+CisKKyAgUGFyYW1ldGVy
czoKKworICA8YnIvPgorCisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAgICA8dGQ+TnVtIHNvY2tl
dHM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtc29ja2V0cyIgdmFs
dWU9IjEiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+TnVtYmVyIG9mIGl0
ZXJhdGlvbnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtaXRlcmF0
aW9ucyIgdmFsdWU9IjEiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+TnVt
YmVyIG9mIHdhcm0tdXAgaXRlcmF0aW9uczwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRl
eHQiIGlkPSJudW13YXJtdXBpdGVyYXRpb25zIiB2YWx1ZT0iMCI+PC90ZD4KKyAgICA8L3RyPgor
ICAgIDx0cj4KKyAgICAgIDx0ZD5TdGFydCBzaXplPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9InN0YXJ0c2l6ZSIgdmFsdWU9IjEwMjQwIj48L3RkPgorICAgIDwvdHI+Cisg
ICAgPHRyPgorICAgICAgPHRkPlN0b3AgdGhyZXNob2xkPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQg
dHlwZT0idGV4dCIgaWQ9InN0b3B0aHJlc2hvbGQiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Cisg
ICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+TWluaW11bSB0b3RhbDwvdGQ+CisgICAgICA8
dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtaW50b3RhbCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90
ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5NdWx0aXBsaWVyczwvdGQ+CisgICAg
ICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtdWx0aXBsaWVycyIgdmFsdWU9IjUsIDIiPjwv
dGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4K
KyAgPHRleHRhcmVhCisgICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAl
IiByZWFkb25seT48L3RleHRhcmVhPgorPC9kaXY+Cis8ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Cisg
IFN1bW1hcnkKKyAgPHRleHRhcmVhCisgICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxl
PSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2PgorCitOb3RlOiBFZmZl
Y3Qgb2YgUlRUIGlzIG5vdCBlbGltaW5hdGVkLgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDE0NzJhNGZhYWM0NDZi
MWM4YmQyNDU2ZjI3MWU5MzRkYjU3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL2JlbmNobWFyay5qcwpAQCAtMCwwICsxLDIzOCBAQAorLy8gQ29weXJpZ2h0
IDIwMTQsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2lmICh0eXBlb2YgaW1wb3J0U2Ny
aXB0cyAhPT0gInVuZGVmaW5lZCIpIHsKKyAgLy8gUnVubmluZyBvbiBhIHdvcmtlcgorICBpbXBv
cnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0aWxfd29ya2VyLmpzJyk7Cit9CisKKy8vIE5hbWVzcGFj
ZSBmb3IgaG9sZGluZyBnbG9iYWxzLgordmFyIGJlbmNobWFyayA9IHtzdGFydFRpbWVJbk1zOiAw
fTsKKwordmFyIHNvY2tldHMgPSBbXTsKK3ZhciBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwor
Cit2YXIgdGltZXJJRCA9IG51bGw7CisKK2Z1bmN0aW9uIGRlc3Ryb3lTb2NrZXQoc29ja2V0KSB7
CisgIHNvY2tldC5vbm9wZW4gPSBudWxsOworICBzb2NrZXQub25tZXNzYWdlID0gbnVsbDsKKyAg
c29ja2V0Lm9uZXJyb3IgPSBudWxsOworICBzb2NrZXQub25jbG9zZSA9IG51bGw7CisgIHNvY2tl
dC5jbG9zZSgpOworfQorCitmdW5jdGlvbiBkZXN0cm95QWxsU29ja2V0cygpIHsKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7CisgICAgZGVzdHJveVNvY2tldChz
b2NrZXRzW2ldKTsKKyAgfQorICBzb2NrZXRzID0gW107Cit9CisKK2Z1bmN0aW9uIHNlbmRCZW5j
aG1hcmtTdGVwKHNpemUsIGNvbmZpZywgaXNXYXJtVXApIHsKKyAgdGltZXJJRCA9IG51bGw7CisK
KyAgdmFyIHRvdGFsU2l6ZSA9IDA7CisgIHZhciB0b3RhbFJlcGxpZWQgPSAwOworCisgIHZhciBv
bk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAoIXZlcmlmeUFja25v
d2xlZGdlbWVudChjb25maWcsIGV2ZW50LmRhdGEsIHNpemUpKSB7CisgICAgICBkZXN0cm95QWxs
U29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IHNpemU7CisKKyAgICBpZiAodG90YWxSZXBsaWVk
IDwgdG90YWxTaXplKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsY3VsYXRlQW5k
TG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6
ZSwKKyAgICAgICAgaXNXYXJtVXApOworCisgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKKyAgfTsK
KworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIg
c29ja2V0ID0gc29ja2V0c1tpXTsKKyAgICBzb2NrZXQub25tZXNzYWdlID0gb25NZXNzYWdlSGFu
ZGxlcjsKKyAgfQorCisgIHZhciBkYXRhQXJyYXkgPSBbXTsKKworICB3aGlsZSAodG90YWxTaXpl
IDwgY29uZmlnLm1pblRvdGFsKSB7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihz
aXplKTsKKworICAgIGZpbGxBcnJheUJ1ZmZlcihidWZmZXIsIDB4NjEpOworCisgICAgZGF0YUFy
cmF5LnB1c2goYnVmZmVyKTsKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorCisgIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgdG90YWxTaXplID0gMDsK
KworICB2YXIgc29ja2V0SW5kZXggPSAwOworICB2YXIgZGF0YUluZGV4ID0gMDsKKyAgd2hpbGUg
KHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHZhciBjb21tYW5kID0gWydzZW5k
J107CisgICAgY29tbWFuZC5wdXNoKGNvbmZpZy52ZXJpZnlEYXRhID8gJzEnIDogJzAnKTsKKyAg
ICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGNvbW1hbmQuam9pbignICcpKTsKKyAgICBzb2Nr
ZXRzW3NvY2tldEluZGV4XS5zZW5kKGRhdGFBcnJheVtkYXRhSW5kZXhdKTsKKyAgICBzb2NrZXRJ
bmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0cy5sZW5ndGg7CisKKyAgICB0b3RhbFNp
emUgKz0gc2l6ZTsKKyAgICArK2RhdGFJbmRleDsKKyAgfQorfQorCitmdW5jdGlvbiByZWNlaXZl
QmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7CisgIHRpbWVySUQgPSBudWxs
OworCisgIHZhciB0b3RhbFNpemUgPSAwOworICB2YXIgdG90YWxSZXBsaWVkID0gMDsKKworICB2
YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGJ5dGVzUmVj
ZWl2ZWQgPSBldmVudC5kYXRhLmJ5dGVMZW5ndGg7CisgICAgaWYgKGJ5dGVzUmVjZWl2ZWQgIT0g
c2l6ZSkgeworICAgICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAnICsgc2l6ZSArICdCIGJ1
dCByZWNlaXZlZCAnICsKKyAgICAgICAgICBieXRlc1JlY2VpdmVkICsgJ0InKTsKKyAgICAgIGRl
c3Ryb3lBbGxTb2NrZXRzKCk7CisgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEgJiYgIXZlcmlmeUFycmF5
QnVmZmVyKGV2ZW50LmRhdGEsIDB4NjEpKSB7CisgICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3Bv
bnNlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsKKyAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Cisg
ICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0
b3RhbFJlcGxpZWQgKz0gYnl0ZXNSZWNlaXZlZDsKKworICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0
b3RhbFNpemUpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxjdWxhdGVBbmRMb2dS
ZXN1bHQoY29uZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAor
ICAgICAgICBpc1dhcm1VcCk7CisKKyAgICBydW5OZXh0VGFzayhjb25maWcpOworICB9OworCisg
IGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgeworICAgIHZhciBzb2Nr
ZXQgPSBzb2NrZXRzW2ldOworICAgIHNvY2tldC5iaW5hcnlUeXBlID0gJ2FycmF5YnVmZmVyJzsK
KyAgICBzb2NrZXQub25tZXNzYWdlID0gb25NZXNzYWdlSGFuZGxlcjsKKyAgfQorCisgIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgdmFyIHNvY2tldEluZGV4
ID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHNvY2tl
dHNbc29ja2V0SW5kZXhdLnNlbmQoJ3JlY2VpdmUgJyArIHNpemUpOworICAgIHNvY2tldEluZGV4
ID0gKHNvY2tldEluZGV4ICsgMSkgJSBzb2NrZXRzLmxlbmd0aDsKKworICAgIHRvdGFsU2l6ZSAr
PSBzaXplOworICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVNvY2tldChjb25maWcpIHsKKyAgLy8g
VE9ETyh0eW9zaGlubyk6IEFkZCBUQ1Agd2FybSB1cC4KKyAgdmFyIHVybCA9IGNvbmZpZy5wcmVm
aXhVcmw7CisKKyAgY29uZmlnLmFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOworCisgIHZhciBz
b2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnVW5leHBlY3RlZCBtZXNzYWdlIHJlY2Vp
dmVkLiBBYm9ydGluZy4nKTsKKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsK
KyAgICBjb25maWcuYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNsb3NlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0Nsb3NlZCcpOworICAgIGNv
bmZpZy5ub3RpZnlBYm9ydCgpOworICB9OworICByZXR1cm4gc29ja2V0OworfQorCitmdW5jdGlv
biBzdGFydEJlbmNobWFyayhjb25maWcpIHsKKyAgY2xlYXJUaW1lb3V0KHRpbWVySUQpOworICBk
ZXN0cm95QWxsU29ja2V0cygpOworCisgIG51bUVzdGFibGlzaGVkU29ja2V0cyA9IDA7CisKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtU29ja2V0czsgKytpKSB7CisgICAgdmFyIHNv
Y2tldCA9IGNyZWF0ZVNvY2tldChjb25maWcpOworICAgIHNvY2tldC5vbm9wZW4gPSBmdW5jdGlv
bigpIHsKKyAgICAgIGNvbmZpZy5hZGRUb0xvZygnT3BlbmVkJyk7CisKKyAgICAgICsrbnVtRXN0
YWJsaXNoZWRTb2NrZXRzOworCisgICAgICBpZiAobnVtRXN0YWJsaXNoZWRTb2NrZXRzID09IHNv
Y2tldHMubGVuZ3RoKSB7CisgICAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgICAgICB9Cisg
ICAgfTsKKyAgICBzb2NrZXRzLnB1c2goc29ja2V0KTsKKyAgfQorfQorCitmdW5jdGlvbiBnZXRD
b25maWdTdHJpbmcoY29uZmlnKSB7CisgIHJldHVybiAnKFdlYlNvY2tldCcgKworICAgICcsICcg
KyAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiID8gJ1dvcmtlcicgOiAnTWFp
bicpICsKKyAgICAnLCBudW1Tb2NrZXRzPScgKyBjb25maWcubnVtU29ja2V0cyArCisgICAgJywg
bnVtSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bUl0ZXJhdGlvbnMgKworICAgICcsIHZlcmlmeURh
dGE9JyArIGNvbmZpZy52ZXJpZnlEYXRhICsKKyAgICAnLCBtaW5Ub3RhbD0nICsgY29uZmlnLm1p
blRvdGFsICsKKyAgICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScgKyBjb25maWcubnVtV2FybVVw
SXRlcmF0aW9ucyArCisgICAgJyknOworfQorCitmdW5jdGlvbiBiYXRjaEJlbmNobWFyayhjb25m
aWcpIHsKKyAgY29uZmlnLmFkZFRvTG9nKCdCYXRjaCBiZW5jaG1hcmsnKTsKKyAgY29uZmlnLmFk
ZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107CisgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7
CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdl
dENvbmZpZ1N0cmluZyhjb25maWcpKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2ht
YXJrU3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnUmVjZWl2ZSBCZW5j
aG1hcmsgJyArCisgICAgICBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0YXJ0QmVuY2ht
YXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIGNsZWFudXAoKSB7CisgIGRlc3Ryb3lBbGxTb2Nr
ZXRzKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFy
a19oZWxwZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVs
cGVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzE3NTMzMzM1NGNjOWM4ODU2MmNmNmZjODFlZjMyNjA5
MzcyOTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5j
aG1hcmtfaGVscGVyX3dzaC5weQpAQCAtMCwwICsxLDg0IEBACisjIENvcHlyaWdodCAyMDEzLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkhhbmRsZXIgZm9yIGJlbmNobWFyay5odG1sLiIiIgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUdXJuIG9mZiBjb21wcmVzc2lvbi4KKyAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIGRhdGEgPSBiJycKKworICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgIGNvbW1hbmQgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAg
ICAgICBpZiBjb21tYW5kIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShjb21tYW5kLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkYXRhOicgKyBjb21tYW5kKQorICAgICAg
ICBjb21tYW5kcyA9IGNvbW1hbmQuc3BsaXQoJyAnKQorICAgICAgICBpZiBsZW4oY29tbWFuZHMp
ID09IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQgZGF0
YTogJyArIGNvbW1hbmQpCisKKyAgICAgICAgaWYgY29tbWFuZHNbMF0gPT0gJ3JlY2VpdmUnOgor
ICAgICAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSAhPSAyOgorICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdJbGxlZ2FsIG51bWJlciBvZiBhcmd1
bWVudHMgZm9yIHNlbmQgY29tbWFuZCcgKyBjb21tYW5kKQorICAgICAgICAgICAgc2l6ZSA9IGlu
dChjb21tYW5kc1sxXSkKKworICAgICAgICAgICAgIyBSZXVzZSBkYXRhIGlmIHBvc3NpYmxlLgor
ICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IHNpemU6CisgICAgICAgICAgICAgICAgZGF0YSA9
IGInYScgKiBzaXplCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2Uo
ZGF0YSwgYmluYXJ5PVRydWUpCisgICAgICAgIGVsaWYgY29tbWFuZHNbMF0gPT0gJ3NlbmQnOgor
ICAgICAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSAhPSAyOgorICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdJbGxlZ2FsIG51bWJlciBvZiBhcmd1
bWVudHMgZm9yIHJlY2VpdmUgY29tbWFuZCcgKworICAgICAgICAgICAgICAgICAgICBjb21tYW5k
KQorICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBjb21tYW5kc1sxXSA9PSAnMScKKworICAgICAg
ICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAg
ICAgICBpZiBkYXRhIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
UGF5bG9hZCBub3QgcmVjZWl2ZWQnKQorICAgICAgICAgICAgc2l6ZSA9IGxlbihkYXRhKQorCisg
ICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKKyAgICAgICAgICAgICAgICBpZiBkYXRhICE9IGIn
YScgKiBzaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2Fk
IHZlcmlmaWNhdGlvbiBmYWlsZWQnKQorCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5z
ZW5kX21lc3NhZ2Uoc3RyKHNpemUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCBjb21tYW5kOiAnICsgY29tbWFuZHNbMF0pCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nsb3Nl
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY2xvc2Vfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmMDAwNWZmZWE5OTA1ZDZjMTk3YzBmNGRkNTkzYzA2ZmY0MzdkM2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsx
LDcwIEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQKK2ltcG9ydCBzdHJ1Y3QKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNv
bW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2RlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBs
aW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGlu
ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNvZGUsIHJlYXNvbiA9IGxp
bmUuc3BsaXQoJyAnLCAxKQorICAgICAgICBpZiBjb2RlIGlzIE5vbmUgb3IgcmVhc29uIGlzIE5v
bmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbihpbnQoY29kZSksIHJlYXNvbikKKyAgICAgICAgIyBjbG9zZV9jb25uZWN0aW9u
KCkgaW5pdGlhdGVzIGNsb3NpbmcgaGFuZHNoYWtlLiBJdCB2YWxpZGF0ZXMgY29kZQorICAgICAg
ICAjIGFuZCByZWFzb24uIElmIHlvdSB3YW50IHRvIHNlbmQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Zm9yIGEgdGVzdCwKKyAgICAgICAgIyBmb2xsb3dpbmcgY29kZSB3aWxsIGJlIHVzZWZ1bC4KKyAg
ICAgICAgIyA+IGRhdGEgPSBzdHJ1Y3QucGFjaygnIUgnLCBpbnQoY29kZSkpICsgcmVhc29uLmVu
Y29kZSgnVVRGLTgnKQorICAgICAgICAjID4gcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHN0cmVh
bS5jcmVhdGVfY2xvc2VfZnJhbWUoZGF0YSkpCisgICAgICAgICMgPiAjIFN1cHByZXNzIHRvIHJl
LXJlc3BvbmQgY2xpZW50IHJlc3BvbmRpbmcgY2xvc2UgZnJhbWUuCisgICAgICAgICMgPiByYWlz
ZSBFeGNlcHRpb24oImN1c3RvbWl6ZWQgc2VydmVyIGluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFr
ZSIpCisKKworZGVmIHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0
KToKKyAgICAjIFNpbXBseSBlY2hvIGEgY2xvc2Ugc3RhdHVzIGNvZGUKKyAgICBjb2RlLCByZWFz
b24gPSByZXF1ZXN0LndzX2Nsb3NlX2NvZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCisKKyAg
ICAjIHB5d2Vic29ja2V0IHNldHMgcHNldWRvIGNvZGUgZm9yIHJlY2VpdmluZyBhbiBlbXB0eSBi
b2R5IGNsb3NlIGZyYW1lLgorICAgIGlmIGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNf
UkVDRUlWRUQ6CisgICAgICAgIGNvZGUgPSBOb25lCisgICAgICAgIHJlYXNvbiA9ICcnCisgICAg
cmV0dXJuIGNvZGUsIHJlYXNvbgorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2NvbnNvbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2Q2ZDhmODA2NzZiOTk5MWUyMmRm
YzdlYzg1MDgzNDExZGRkMGIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9jb25zb2xlLmh0bWwKQEAgLTAsMCArMSwzMTcgQEAKKzwhLS0KK0NvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CitpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKK0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKy0tPgorCis8IS0tCitBIHNpbXBsZSBjb25zb2xlIGZvciB0ZXN0aW5nIFdlYlNv
Y2tldCBzZXJ2ZXIuCisKK1R5cGUgYW4gYWRkcmVzcyBpbnRvIHRoZSB0b3AgdGV4dCBpbnB1dCBh
bmQgY2xpY2sgY29ubmVjdCB0byBlc3RhYmxpc2gKK1dlYlNvY2tldC4gVGhlbiwgdHlwZSBzb21l
IG1lc3NhZ2UgaW50byB0aGUgYm90dG9tIHRleHQgaW5wdXQgYW5kIGNsaWNrIHNlbmQKK3RvIHNl
bmQgdGhlIG1lc3NhZ2UuIFJlY2VpdmVkL3NlbnQgbWVzc2FnZXMgYW5kIGNvbm5lY3Rpb24gc3Rh
dGUgd2lsbCBiZSBzaG93bgorb24gdGhlIG1pZGRsZSB0ZXh0YXJlYS4KKy0tPgorCis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPldlYlNvY2tldCBjb25zb2xlPC90aXRsZT4KKzxzY3JpcHQ+Cit2YXIg
c29ja2V0ID0gbnVsbDsKKwordmFyIHNob3dUaW1lU3RhbXAgPSBmYWxzZTsKKwordmFyIGFkZHJl
c3NCb3ggPSBudWxsOwordmFyIHByb3RvY29sc0JveCA9IG51bGw7Cit2YXIgbG9nQm94ID0gbnVs
bDsKK3ZhciBtZXNzYWdlQm94ID0gbnVsbDsKK3ZhciBmaWxlQm94ID0gbnVsbDsKK3ZhciBjb2Rl
Qm94ID0gbnVsbDsKK3ZhciByZWFzb25Cb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRUaW1lU3Rh
bXAoKSB7CisgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKK30KKworZnVuY3Rpb24gYWRk
VG9Mb2cobG9nKSB7CisgIGlmIChzaG93VGltZVN0YW1wKSB7CisgICAgbG9nQm94LnZhbHVlICs9
ICdbJyArIGdldFRpbWVTdGFtcCgpICsgJ10gJzsKKyAgfQorICBsb2dCb3gudmFsdWUgKz0gbG9n
ICsgJ1xuJworICAvLyBMYXJnZSBlbm91Z2ggdG8ga2VlcCBzaG93aW5nIHRoZSBsYXRlc3QgbWVz
c2FnZS4KKyAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Cit9CisKK2Z1bmN0aW9uIHNldGJp
bmFyeXR5cGUoYmluYXJ5VHlwZSkgeworICBpZiAoIXNvY2tldCkgeworICAgIGFkZFRvTG9nKCdO
b3QgY29ubmVjdGVkJyk7CisgICAgcmV0dXJuOworICB9CisKKyAgc29ja2V0LmJpbmFyeVR5cGUg
PSBiaW5hcnlUeXBlOworICBhZGRUb0xvZygnU2V0IGJpbmFyeVR5cGUgdG8gJyArIGJpbmFyeVR5
cGUpOworfQorCitmdW5jdGlvbiBzZW5kKCkgeworICBpZiAoIXNvY2tldCkgeworICAgIGFkZFRv
TG9nKCdOb3QgY29ubmVjdGVkJyk7CisgICAgcmV0dXJuOworICB9CisKKyAgc29ja2V0LnNlbmQo
bWVzc2FnZUJveC52YWx1ZSk7CisgIGFkZFRvTG9nKCc+ICcgKyBtZXNzYWdlQm94LnZhbHVlKTsK
KyAgbWVzc2FnZUJveC52YWx1ZSA9ICcnOworfQorCitmdW5jdGlvbiBzZW5kZmlsZSgpIHsKKyAg
aWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVy
bjsKKyAgfQorCisgIHZhciBmaWxlcyA9IGZpbGVCb3guZmlsZXM7CisKKyAgaWYgKGZpbGVzLmxl
bmd0aCA9PSAwKSB7CisgICAgYWRkVG9Mb2coJ0ZpbGUgbm90IHNlbGVjdGVkJyk7CisgICAgcmV0
dXJuOworICB9CisKKyAgc29ja2V0LnNlbmQoZmlsZXNbMF0pOworICBhZGRUb0xvZygnPiBTZW5k
ICcgKyBmaWxlc1swXS5uYW1lKTsKK30KKworZnVuY3Rpb24gcGFyc2VQcm90b2NvbHMocHJvdG9j
b2xzVGV4dCkgeworICB2YXIgcHJvdG9jb2xzID0gcHJvdG9jb2xzVGV4dC5zcGxpdCgnLCcpOwor
ICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3RvY29scy5sZW5ndGg7ICsraSkgeworICAgIHByb3Rv
Y29sc1tpXSA9IHByb3RvY29sc1tpXS50cmltKCk7CisgIH0KKworICBpZiAocHJvdG9jb2xzLmxl
bmd0aCA9PSAwKSB7CisgICAgLy8gRG9uJ3QgcGFzcy4KKyAgICBwcm90b2NvbHMgPSBudWxsOwor
ICB9IGVsc2UgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMSkgeworICAgIGlmIChwcm90b2NvbHNb
MF0ubGVuZ3RoID09IDApIHsKKyAgICAgIC8vIERvbid0IHBhc3MuCisgICAgICBwcm90b2NvbHMg
PSBudWxsOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQYXNzIGFzIGEgc3RyaW5nLgorICAgICAg
cHJvdG9jb2xzID0gcHJvdG9jb2xzWzBdOworICAgIH0KKyAgfQorCisgIHJldHVybiBwcm90b2Nv
bHM7Cit9CisKK2Z1bmN0aW9uIGNvbm5lY3QoKSB7CisgIHZhciB1cmwgPSBhZGRyZXNzQm94LnZh
bHVlOworICB2YXIgcHJvdG9jb2xzID0gcGFyc2VQcm90b2NvbHMocHJvdG9jb2xzQm94LnZhbHVl
KTsKKworICBpZiAoJ1dlYlNvY2tldCcgaW4gd2luZG93KSB7CisgICAgaWYgKHByb3RvY29scykg
eworICAgICAgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29scyk7CisgICAgfSBl
bHNlIHsKKyAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICB9CisgIH0gZWxz
ZSB7CisgICAgcmV0dXJuOworICB9CisKKyAgc29ja2V0Lm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgZXh0cmFJbmZvID0gW107CisgICAgaWYgKCgncHJvdG9jb2wnIGluIHNvY2tldCkg
JiYgc29ja2V0LnByb3RvY29sKSB7CisgICAgICBleHRyYUluZm8ucHVzaCgncHJvdG9jb2wgPSAn
ICsgc29ja2V0LnByb3RvY29sKTsKKyAgICB9CisgICAgaWYgKCgnZXh0ZW5zaW9ucycgaW4gc29j
a2V0KSAmJiBzb2NrZXQuZXh0ZW5zaW9ucykgeworICAgICAgZXh0cmFJbmZvLnB1c2goJ2V4dGVu
c2lvbnMgPSAnICsgc29ja2V0LmV4dGVuc2lvbnMpOworICAgIH0KKworICAgIHZhciBsb2dNZXNz
YWdlID0gJ09wZW5lZCc7CisgICAgaWYgKGV4dHJhSW5mby5sZW5ndGggPiAwKSB7CisgICAgICBs
b2dNZXNzYWdlICs9ICcgKCcgKyBleHRyYUluZm8uam9pbignLCAnKSArICcpJzsKKyAgICB9Cisg
ICAgYWRkVG9Mb2cobG9nTWVzc2FnZSk7CisgIH07CisgIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICBpZiAoKCdBcnJheUJ1ZmZlcicgaW4gd2luZG93KSAmJiAoZXZl
bnQuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVj
ZWl2ZWQgYW4gQXJyYXlCdWZmZXIgb2YgJyArIGV2ZW50LmRhdGEuYnl0ZUxlbmd0aCArCisgICAg
ICAgICAgICAgICAnIGJ5dGVzJykKKyAgICB9IGVsc2UgaWYgKCgnQmxvYicgaW4gd2luZG93KSAm
JiAoZXZlbnQuZGF0YSBpbnN0YW5jZW9mIEJsb2IpKSB7CisgICAgICBhZGRUb0xvZygnPCBSZWNl
aXZlZCBhIEJsb2Igb2YgJyArIGV2ZW50LmRhdGEuc2l6ZSArICcgYnl0ZXMnKQorICAgIH0gZWxz
ZSB7CisgICAgICBhZGRUb0xvZygnPCAnICsgZXZlbnQuZGF0YSk7CisgICAgfQorICB9OworICBz
b2NrZXQub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICBhZGRUb0xvZygnRXJyb3InKTsKKyAg
fTsKKyAgc29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgbG9nTWVz
c2FnZSA9ICdDbG9zZWQgKCc7CisgICAgaWYgKChhcmd1bWVudHMubGVuZ3RoID09IDEpICYmICgn
Q2xvc2VFdmVudCcgaW4gd2luZG93KSAmJgorICAgICAgICAoZXZlbnQgaW5zdGFuY2VvZiBDbG9z
ZUV2ZW50KSkgeworICAgICAgbG9nTWVzc2FnZSArPSAnd2FzQ2xlYW4gPSAnICsgZXZlbnQud2Fz
Q2xlYW47CisgICAgICAvLyBjb2RlIGFuZCByZWFzb24gYXJlIHByZXNlbnQgb25seSBmb3IKKyAg
ICAgIC8vIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wNiBhbmQgbGF0ZXIK
KyAgICAgIGlmICgnY29kZScgaW4gZXZlbnQpIHsKKyAgICAgICAgbG9nTWVzc2FnZSArPSAnLCBj
b2RlID0gJyArIGV2ZW50LmNvZGU7CisgICAgICB9CisgICAgICBpZiAoJ3JlYXNvbicgaW4gZXZl
bnQpIHsKKyAgICAgICAgbG9nTWVzc2FnZSArPSAnLCByZWFzb24gPSAnICsgZXZlbnQucmVhc29u
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBsb2dNZXNzYWdlICs9ICdDbG9zZUV2ZW50
IGlzIG5vdCBhdmFpbGFibGUnOworICAgIH0KKyAgICBhZGRUb0xvZyhsb2dNZXNzYWdlICsgJykn
KTsKKyAgfTsKKworICBpZiAocHJvdG9jb2xzKSB7CisgICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyAr
IHVybCArICcgKHByb3RvY29scyA9ICcgKyBwcm90b2NvbHMgKyAnKScpOworICB9IGVsc2Ugewor
ICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOworICB9Cit9CisKK2Z1bmN0aW9uIGNsb3Nl
U29ja2V0KCkgeworICBpZiAoIXNvY2tldCkgeworICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVk
Jyk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKGNvZGVCb3gudmFsdWUgfHwgcmVhc29uQm94
LnZhbHVlKSB7CisgICAgc29ja2V0LmNsb3NlKGNvZGVCb3gudmFsdWUsIHJlYXNvbkJveC52YWx1
ZSk7CisgIH0gZWxzZSB7CisgICAgc29ja2V0LmNsb3NlKCk7CisgIH0KK30KKworZnVuY3Rpb24g
cHJpbnRTdGF0ZSgpIHsKKyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5l
Y3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIGFkZFRvTG9nKAorICAgICAgJ3VybCA9ICcg
KyBzb2NrZXQudXJsICsKKyAgICAgICcsIHJlYWR5U3RhdGUgPSAnICsgc29ja2V0LnJlYWR5U3Rh
dGUgKworICAgICAgJywgYnVmZmVyZWRBbW91bnQgPSAnICsgc29ja2V0LmJ1ZmZlcmVkQW1vdW50
KTsKK30KKworZnVuY3Rpb24gaW5pdCgpIHsKKyAgdmFyIHNjaGVtZSA9IHdpbmRvdy5sb2NhdGlv
bi5wcm90b2NvbCA9PSAnaHR0cHM6JyA/ICd3c3M6Ly8nIDogJ3dzOi8vJzsKKyAgdmFyIGRlZmF1
bHRBZGRyZXNzID0gc2NoZW1lICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2VjaG8nOworCisg
IGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVzcycpOworICBwcm90
b2NvbHNCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvdG9jb2xzJyk7CisgIGxvZ0Jv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKyAgbWVzc2FnZUJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJyk7CisgIGZpbGVCb3ggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZmlsZScpOworICBjb2RlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvZGUnKTsKKyAgcmVhc29uQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlYXNvbicp
OworCisgIGFkZHJlc3NCb3gudmFsdWUgPSBkZWZhdWx0QWRkcmVzczsKKworICBpZiAoISgnV2Vi
U29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBpcyBub3QgYXZh
aWxhYmxlJyk7CisgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2Zv
cm0geworICBtYXJnaW46IDBweDsKK30KKworI2Nvbm5lY3RfZGl2LCAjbG9nX2RpdiwgI3NlbmRf
ZGl2LCAjc2VuZGZpbGVfZGl2LCAjY2xvc2VfZGl2LCAjcHJpbnRzdGF0ZV9kaXYgeworICBwYWRk
aW5nOiA1cHg7CisgIG1hcmdpbjogNXB4OworICBib3JkZXItd2lkdGg6IDBweCAwcHggMHB4IDEw
cHg7CisgIGJvcmRlci1zdHlsZTogc29saWQ7CisgIGJvcmRlci1jb2xvcjogc2lsdmVyOworfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKworPGRpdj4KKworPGRp
diBpZD0iY29ubmVjdF9kaXYiPgorICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjb25uZWN0
KCk7IHJldHVybiBmYWxzZTsiPgorICAgIHVybCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJl
c3MiIHNpemU9IjQwIj4KKyAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iY29ubmVjdCI+
CisgICAgPGJyLz4KKyAgICBwcm90b2NvbHMgPGlucHV0IHR5cGU9InRleHQiIGlkPSJwcm90b2Nv
bHMiIHNpemU9IjIwIj4KKyAgPC9mb3JtPgorPC9kaXY+CisKKzxkaXYgaWQ9ImxvZ19kaXYiPgor
ICA8dGV4dGFyZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9IjQwIiByZWFkb25seT48L3RleHRh
cmVhPgorICA8YnIvPgorICA8aW5wdXQgdHlwZT0iY2hlY2tib3giCisgICAgICAgICBuYW1lPSJz
aG93dGltZXN0YW1wIgorICAgICAgICAgdmFsdWU9InNob3d0aW1lc3RhbXAiCisgICAgICAgICBv
bmNsaWNrPSJzaG93VGltZVN0YW1wID0gdGhpcy5jaGVja2VkIj5TaG93IHRpbWUgc3RhbXAKKzwv
ZGl2PgorCis8ZGl2IGlkPSJzZW5kX2RpdiI+CisgIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9
InNlbmQoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgZGF0YSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
Im1lc3NhZ2UiIHNpemU9IjQwIj4KKyAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2Vu
ZCI+CisgIDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJzZW5kZmlsZV9kaXYiPgorICA8Zm9y
bSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kZmlsZSgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICA8
aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGUiIHNpemU9IjQwIj4KKyAgICA8aW5wdXQgdHlwZT0i
c3VibWl0IiB2YWx1ZT0ic2VuZCBmaWxlIj4KKyAgPC9mb3JtPgorCisgIFNldCBiaW5hcnlUeXBl
CisgIDxpbnB1dCB0eXBlPSJyYWRpbyIKKyAgICAgICAgIG5hbWU9ImJpbmFyeXR5cGUiCisgICAg
ICAgICB2YWx1ZT0iYmxvYiIKKyAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2Jsb2In
KSIgY2hlY2tlZD5ibG9iCisgIDxpbnB1dCB0eXBlPSJyYWRpbyIKKyAgICAgICAgIG5hbWU9ImJp
bmFyeXR5cGUiCisgICAgICAgICB2YWx1ZT0iYXJyYXlidWZmZXIiCisgICAgICAgICBvbmNsaWNr
PSJzZXRiaW5hcnl0eXBlKCdhcnJheWJ1ZmZlcicpIj5hcnJheWJ1ZmZlcgorPC9kaXY+CisKKzxk
aXYgaWQ9ImNsb3NlX2RpdiI+CisgIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNsb3NlU29j
a2V0KCk7IHJldHVybiBmYWxzZTsiPgorICAgIGNvZGUgPGlucHV0IHR5cGU9InRleHQiIGlkPSJj
b2RlIiBzaXplPSIxMCI+CisgICAgcmVhc29uIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVhc29u
IiBzaXplPSIyMCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNsb3NlIj4KKyAg
PC9mb3JtPgorPC9kaXY+CisKKzxkaXYgaWQ9InByaW50c3RhdGVfZGl2Ij4KKyAgPGlucHV0IHR5
cGU9ImJ1dHRvbiIgdmFsdWU9InByaW50IHN0YXRlIiBvbmNsaWNrPSJwcmludFN0YXRlKCk7Ij4K
KzwvZGl2PgorCis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9jb29raWVfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNTIwOTY5NGUzZmYyMzIwZjU2ODNlZTA1
OTZhZTM0NDI4YjE1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2Nvb2tpZV93c2gucHkKQEAgLTAsMCArMSw1NCBAQAorIyBDb3B5cmlnaHQgMjAyMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCB1
cmxsaWIKKworCitkZWYgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsIHZhbHVlKToKKyAgICByZXF1
ZXN0LmV4dHJhX2hlYWRlcnMuYXBwZW5kKCgnU2V0LUNvb2tpZScsIHZhbHVlKSkKKworCitkZWYg
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgY29tcG9uZW50cyA9
IHVybGxpYi5wYXJzZS51cmxwYXJzZShyZXF1ZXN0LnVyaSkKKyAgICBjb21tYW5kID0gY29tcG9u
ZW50c1s0XQorCisgICAgT05FX0RBWV9MSUZFID0gJ01heC1BZ2U9ODY0MDAnCisKKyAgICBpZiBj
b21tYW5kID09ICdzZXQnOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJzsgJy5q
b2luKFsnZm9vPWJhcicsIE9ORV9EQVlfTElGRV0pKQorICAgIGVsaWYgY29tbWFuZCA9PSAnc2V0
X2h0dHBvbmx5JzoKKyAgICAgICAgX2FkZF9zZXRfY29va2llKAorICAgICAgICAgICAgcmVxdWVz
dCwgJzsgJy5qb2luKFsnaHR0cE9ubHlGb289YmFyJywgT05FX0RBWV9MSUZFLCAnaHR0cE9ubHkn
XSkpCisgICAgZWxpZiBjb21tYW5kID09ICdjbGVhcic6CisgICAgICAgIF9hZGRfc2V0X2Nvb2tp
ZShyZXF1ZXN0LCAnZm9vPTA7IE1heC1BZ2U9MCcpCisgICAgICAgIF9hZGRfc2V0X2Nvb2tpZShy
ZXF1ZXN0LCAnaHR0cE9ubHlGb289MDsgTWF4LUFnZT0wJykKKworCitkZWYgd2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2VjaG9fY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0NDU5YTE5YmM2OGM3ODc5YTE3NGY1NzIxMjIz
ODI5MTRlNmY3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2VjaG9fY2xpZW50LnB5CkBAIC0wLDAgKzEsNjk2IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2ltcGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNo
b19jbGllbnQganVzdCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29uLgorCittb2RfcHl3ZWJz
b2NrZXQgZGlyZWN0b3J5IG11c3QgYmUgaW4gUFlUSE9OUEFUSC4KKworRXhhbXBsZSBVc2FnZToK
KworIyBzZXJ2ZXIgc2V0dXAKKyAlIGNkICRweXdlYnNvY2tldAorICUgUFlUSE9OUEFUSD0kY3dk
L3NyYyBweXRob24gLi9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKKyAg
ICAtZCAkY3dkL3NyYy9leGFtcGxlCisKKyMgcnVuIGNsaWVudAorICUgUFlUSE9OUEFUSD0kY3dk
L3NyYyBweXRob24gLi9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weSAtcCA4ODgwIFwKKyAgICAg
LXMgbG9jYWxob3N0IFwKKyAgICAgLW8gaHR0cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0
CisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBjb2Rl
Y3MKK2Zyb20gaGFzaGxpYiBpbXBvcnQgc2hhMQoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gb3B0cGFy
c2UgaW1wb3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCitpbXBvcnQg
cmUKK2ltcG9ydCBzaXgKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QK
K2ltcG9ydCBzeXMKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9QZXJN
ZXNzYWdlRGVmbGF0ZUZyYW1lcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBv
cnQgX3BhcnNlX3dpbmRvd19iaXRzCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0
IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25z
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCitfVElNRU9VVF9TRUMgPSAxMAor
X1VOREVGSU5FRF9QT1JUID0gLTEKKworX1VQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNv
Y2tldFxyXG4nCitfQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
CisKKyMgU3BlY2lhbCBtZXNzYWdlIHRoYXQgdGVsbHMgdGhlIGVjaG8gc2VydmVyIHRvIHN0YXJ0
IGNsb3NpbmcgaGFuZHNoYWtlCitfR09PREJZRV9NRVNTQUdFID0gJ0dvb2RieWUnCisKK19QUk9U
T0NPTF9WRVJTSU9OX0hZQkkxMyA9ICdoeWJpMTMnCisKKworY2xhc3MgQ2xpZW50SGFuZHNoYWtl
RXJyb3IoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworZGVmIF9idWlsZF9tZXRob2RfbGluZShy
ZXNvdXJjZSk6CisgICAgcmV0dXJuICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIHJlc291cmNlCisK
KworZGVmIF9vcmlnaW5faGVhZGVyKGhlYWRlciwgb3JpZ2luKToKKyAgICAjIDQuMSAxMy4gY29u
Y2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFj
dGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxv
d2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChoZWFkZXIs
IG9yaWdpbi5sb3dlcigpKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQs
IHNlY3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5n
LgorICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFT
Q0lJIGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9ydCA9IGhvc3Qu
bG93ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBp
cyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5v
dCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAgICMgKDopIGZv
bGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGlu
dGVnZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0
ICE9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1
cmUgYW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCkpOgor
ICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKKyAgICAjIDQuMSAxMi4gY29uY2F0
ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIwIFNQQUNFCisgICAgIyBjaGFy
YWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KKyAgICByZXR1cm4gJyVzOiAlc1xy
XG4nICUgKGNvbW1vbi5IT1NUX0hFQURFUiwgaG9zdHBvcnQpCisKKworZGVmIF9yZWNlaXZlX2J5
dGVzKHNvY2tldCwgbGVuZ3RoKToKKyAgICByZWN2X2J5dGVzID0gW10KKyAgICByZW1haW5pbmcg
PSBsZW5ndGgKKyAgICB3aGlsZSByZW1haW5pbmcgPiAwOgorICAgICAgICByZWNlaXZlZF9ieXRl
cyA9IHNvY2tldC5yZWN2KHJlbWFpbmluZykKKyAgICAgICAgaWYgbm90IHJlY2VpdmVkX2J5dGVz
OgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlv
biBjbG9zZWQgYmVmb3JlIHJlY2VpdmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAg
ICAgICAnKHJlcXVlc3RlZCAlZCBieXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUK
KyAgICAgICAgICAgICAgICAobGVuZ3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICBy
ZWN2X2J5dGVzLmFwcGVuZChyZWNlaXZlZF9ieXRlcykKKyAgICAgICAgcmVtYWluaW5nIC09IGxl
bihyZWNlaXZlZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjdl9ieXRlcykKKworCitk
ZWYgX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSk6CisgICAgIiIiR2V0cyB0aGUg
dmFsdWUgb2YgdGhlIGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tIGZpZWxkcy4KKworICAg
IFRoaXMgZnVuY3Rpb24gZXhwZWN0cyB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGgg
dGhlIHNwZWNpZmllZCBuYW1lCisgICAgaW4gZmllbGRzLiBPdGhlcndpc2UsIHJhaXNlcyBhbiBD
bGllbnRIYW5kc2hha2VFcnJvci4KKyAgICAiIiIKKworICAgIHZhbHVlcyA9IGZpZWxkcy5nZXQo
bmFtZS5sb3dlcigpKQorICAgIGlmIHZhbHVlcyBpcyBOb25lIG9yIGxlbih2YWx1ZXMpID09IDA6
CisgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCclcyBoZWFkZXIgbm90IGZvdW5k
OiAlcicgJSAobmFtZSwgdmFsdWVzKSkKKyAgICBpZiBsZW4odmFsdWVzKSA+IDE6CisgICAgICAg
IHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCdNdWx0aXBsZSAlcyBoZWFkZXJzIGZvdW5kOiAl
cicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWVzKSkK
KyAgICByZXR1cm4gdmFsdWVzWzBdCisKKworZGVmIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVy
KGZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3ZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2Vfc2Vuc2l0aXZlPUZhbHNlKToKKyAgICAiIiJHZXRzIGFuZCB2YWxp
ZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgc3BlY2lmaWVkIGJ5IG5hbWUgZnJvbQorICAg
IGZpZWxkcy4KKworICAgIElmIGV4cGVjdGVkX3ZhbHVlIGlzIHNwZWNpZmllZCwgY29tcGFyZXMg
ZXhwZWN0ZWQgdmFsdWUgYW5kIGFjdHVhbCB2YWx1ZQorICAgIGFuZCByYWlzZXMgYW4gQ2xpZW50
SGFuZHNoYWtlRXJyb3Igb24gZmFpbHVyZS4gWW91IGNhbiBzcGVjaWZ5IGNhc2UKKyAgICBzZW5z
aXRpdmVuZXNzIGluIHRoaXMgY29tcGFyaXNvbiBieSBjYXNlX3NlbnNpdGl2ZSBwYXJhbWV0ZXIu
IFRoaXMgZnVuY3Rpb24KKyAgICBleHBlY3RzIHRoYXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIg
d2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgaW4gZmllbGRzLgorICAgIE90aGVyd2lzZSwgcmFpc2Vz
IGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgorICAgICIiIgorCisgICAgdmFsdWUgPSBfZ2V0X21h
bmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1lKQorCisgICAgaWYgKChjYXNlX3NlbnNpdGl2ZSBh
bmQgdmFsdWUgIT0gZXhwZWN0ZWRfdmFsdWUpIG9yCisgICAgICAgIChub3QgY2FzZV9zZW5zaXRp
dmUgYW5kIHZhbHVlLmxvd2VyKCkgIT0gZXhwZWN0ZWRfdmFsdWUubG93ZXIoKSkpOgorICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVl
IGZvciBoZWFkZXIgJXM6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgIChuYW1lLCBleHBlY3RlZF92YWx1ZSwgdmFsdWUpKQorCisKK2NsYXNzIF9UTFNTb2NrZXQo
b2JqZWN0KToKKyAgICAiIiJXcmFwcGVyIGZvciBhIFRMUyBjb25uZWN0aW9uLiIiIgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByYXdfc29ja2V0KToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fdGxzX3NvY2tldCA9IHNz
bC53cmFwX3NvY2tldChyYXdfc29ja2V0KQorCisgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVz
ZS4gSGFuZHNoYWtlIGlzIGRvbmUgb24gd3JhcF9zb2NrZXQgY2FsbC4KKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oIkNpcGhlcjogJXMiLCBzZWxmLl90bHNfc29ja2V0LmNpcGhlcigpKQorCisg
ICAgZGVmIHNlbmQoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0
LndyaXRlKGRhdGEpCisKKyAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3Rsc19zb2NrZXQuc2VuZGFsbChkYXRhKQorCisgICAgZGVmIHJlY3Yoc2VsZiwg
c2l6ZT0tMSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnJlYWQoc2l6ZSkKKwor
ICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuY2xv
c2UoKQorCisgICAgZGVmIGdldHBlZXJuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5f
dGxzX3NvY2tldC5nZXRwZWVybmFtZSgpCisKKworY2xhc3MgQ2xpZW50SGFuZHNoYWtlQmFzZShv
YmplY3QpOgorICAgICIiIkEgYmFzZSBjbGFzcyBmb3IgV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNo
YWtlIHByb2Nlc3NvcnMgZm9yIGVhY2gKKyAgICBwcm90b2NvbCB2ZXJzaW9uLgorICAgICIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRf
Y2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICBkZWYgX3JlYWRfZmllbGRzKHNlbGYpOgorICAgICAg
ICAjIDQuMSAzMi4gbGV0IC9maWVsZHMvIGJlIGEgbGlzdCBvZiBuYW1lLXZhbHVlIHBhaXJzLCBp
bml0aWFsbHkgZW1wdHkuCisgICAgICAgIGZpZWxkcyA9IHt9CisgICAgICAgIHdoaWxlIFRydWU6
ICAjICJGaWVsZCIKKyAgICAgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGFuZCAvdmFsdWUv
IGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgICAgICBuYW1lID0gYicnCisgICAgICAgICAg
ICB2YWx1ZSA9IGInJworICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25hbWUvCisgICAgICAg
ICAgICBuYW1lID0gc2VsZi5fcmVhZF9uYW1lKCkKKyAgICAgICAgICAgIGlmIG5hbWUgaXMgTm9u
ZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3Bh
Y2VzCisgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBTa2lwIG9ubHkgb25lIHNwYWNlIGFz
IGRlc2NyaWJlZCBpbiB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNoID0gc2VsZi5fc2tpcF9zcGFj
ZXMoKQorICAgICAgICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLworICAgICAgICAgICAgdmFs
dWUgPSBzZWxmLl9yZWFkX3ZhbHVlKGNoKQorICAgICAgICAgICAgIyA0LjEgMzcuIHJlYWQgYSBi
eXRlIGZyb20gdGhlIHNlcnZlcgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCAhPSBiJ1xuJzogICMgMHgwQQorICAgICAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAg
ICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yICcK
KyAgICAgICAgICAgICAgICAgICAgJ2hlYWRlciAlcicgJSAoY2gsIHZhbHVlLCBuYW1lKSkKKyAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgJXIgaGVhZGVyJywgbmFtZSkK
KyAgICAgICAgICAgICMgNC4xIDM4LiBhcHBlbmQgYW4gZW50cnkgdG8gdGhlIC9maWVsZHMvIGxp
c3QgdGhhdCBoYXMgdGhlIG5hbWUKKyAgICAgICAgICAgICMgZ2l2ZW4gYnkgdGhlIHN0cmluZyBv
YnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRlCisgICAgICAgICAgICAjIGFy
cmF5IGFzIGEgVVRGLTggc3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZwor
ICAgICAgICAgICAgIyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC92YWx1ZS8gYnl0ZSBh
cnJheSBhcyBhIFVURi04IGJ5dGUKKyAgICAgICAgICAgICMgc3RyZWFtLgorICAgICAgICAgICAg
ZmllbGRzLnNldGRlZmF1bHQobmFtZS5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbXSkuYXBwZW5kKHZhbHVlLmRlY29kZSgnVVRGLTgnKSkKKyAgICAgICAg
ICAgICMgNC4xIDM5LiByZXR1cm4gdG8gdGhlICJGaWVsZCIgc3RlcCBhYm92ZQorICAgICAgICBy
ZXR1cm4gZmllbGRzCisKKyAgICBkZWYgX3JlYWRfbmFtZShzZWxmKToKKyAgICAgICAgIyA0LjEg
MzMuIGxldCAvbmFtZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKKyAgICAgICAgbmFtZSA9IGInJwor
ICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBieXRlIGZy
b20gdGhlIHNlcnZlcgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xyJzogICMgMHgwRAorICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisg
ICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgbmFtZSAlcicgJSBuYW1l
KQorICAgICAgICAgICAgZWxpZiBjaCA9PSBiJzonOiAgIyAweDNBCisgICAgICAgICAgICAgICAg
cmV0dXJuIG5hbWUubG93ZXIoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBu
YW1lICs9IGNoCisKKyAgICBkZWYgX3NraXBfc3BhY2VzKHNlbGYpOgorICAgICAgICAjIDQuMSAz
NS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCisgICAgICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAg
IGlmIGNoID09IGInICc6ICAjIDB4MjAKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmV0dXJuIGNoCisKKyAgICBkZWYgX3JlYWRfdmFsdWUoc2VsZiwgY2gpOgorICAgICAg
ICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKKyAgICAgICAgdmFs
dWUgPSBiJycKKyAgICAgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgorICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgY2ggPT0gYidccic6ICAjIDB4MEQKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gYidcbic6
ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAg
ICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1
ZSAlcicgJSB2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsdWUg
Kz0gY2gKKyAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQor
CisKK2RlZiBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0ZW5zaW9uX3Jlc3BvbnNl
KToKKyAgICAiIiJWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYW5kIHJldHVybiBhIGZyYW1lciBvYmpl
Y3QgdXNpbmcgdGhlIHBhcmFtZXRlcnMgaW4KKyAgICB0aGUgcmVzcG9uc2UuIFRoaXMgbWV0aG9k
IGRvZXNuJ3QgYWNjZXB0IHRoZSBzZXJ2ZXJfLiogcGFyYW1ldGVycy4KKyAgICAiIiIKKworICAg
IGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCisgICAgY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBOb25lCisKKyAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUgPSAoCisgICAg
ICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLl9DTElFTlRfTUFYX1dJTkRP
V19CSVRTX1BBUkFNKQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWUgPSAoCisg
ICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLl9DTElFTlRfTk9fQ09O
VEVYVF9UQUtFT1ZFUl9QQVJBTSkKKworICAgICMgV2UgZGlkbid0IHNlbmQgYW55IHNlcnZlcl8u
KiBwYXJhbWV0ZXIuCisgICAgIyBIYW5kbGUgdGhvc2UgcGFyYW1ldGVycyBhcyBpbnZhbGlkIGlm
IGZvdW5kIGluIHRoZSByZXNwb25zZS4KKworICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1
ZSBpbiBleHRlbnNpb25fcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKToKKyAgICAgICAgaWYgcGFy
YW1fbmFtZSA9PSBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWU6CisgICAgICAgICAgICBpZiBj
bGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNl
IENsaWVudEhhbmRzaGFrZUVycm9yKCdNdWx0aXBsZSAlcyBmb3VuZCcgJQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHNfbmFt
ZSkKKworICAgICAgICAgICAgcGFyc2VkX3ZhbHVlID0gX3BhcnNlX3dpbmRvd19iaXRzKHBhcmFt
X3ZhbHVlKQorICAgICAgICAgICAgaWYgcGFyc2VkX3ZhbHVlIGlzIE5vbmU6CisgICAgICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdC
YWQgJXM6ICVyJyAlIChjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUsIHBhcmFtX3ZhbHVlKSkK
KyAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBwYXJzZWRfdmFsdWUKKyAgICAg
ICAgZWxpZiBwYXJhbV9uYW1lID09IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWU6Cisg
ICAgICAgICAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignTXVsdGlwbGUgJXMgZm91
bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lKQorCisgICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgJ0JhZCAlczogSGFzIHZhbHVlICVyJyAlCisgICAgICAgICAg
ICAgICAgICAgIChjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9uYW1lLCBwYXJhbV92YWx1ZSkp
CisgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IFRydWUKKworICAgIGlm
IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyIGlzIE5vbmU6CisgICAgICAgIGNsaWVudF9ub19j
b250ZXh0X3Rha2VvdmVyID0gRmFsc2UKKworICAgIHJldHVybiBfUGVyTWVzc2FnZURlZmxhdGVG
cmFtZXIoY2xpZW50X21heF93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKQorCisKK2NsYXNzIENsaWVudEhh
bmRzaGFrZVByb2Nlc3NvcihDbGllbnRIYW5kc2hha2VCYXNlKToKKyAgICAiIiJXZWJTb2NrZXQg
b3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHNvY2tldCwgb3B0aW9ucyk6CisgICAgICAgIHN1cGVyKENsaWVudEhhbmRzaGFrZVByb2Nl
c3Nvciwgc2VsZikuX19pbml0X18oKQorCisgICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAor
ICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworCisgICAgICAgIHNlbGYuX2xvZ2dlciA9
IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVmIGhhbmRzaGFrZShzZWxmKToK
KyAgICAgICAgIiIiUGVyZm9ybXMgb3BlbmluZyBoYW5kc2hha2Ugb24gdGhlIHNwZWNpZmllZCBz
b2NrZXQuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQ2xpZW50SGFuZHNoYWtlRXJy
b3I6IGhhbmRzaGFrZSBmYWlsZWQuCisgICAgICAgICIiIgorCisgICAgICAgIHJlcXVlc3RfbGlu
ZSA9IF9idWlsZF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKQorICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxp
bmU6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfbGluZSkKKyAgICAg
ICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKwor
ICAgICAgICBmaWVsZHMgPSBbXQorICAgICAgICBmaWVsZHMuYXBwZW5kKAorICAgICAgICAgICAg
X2Zvcm1hdF9ob3N0X2hlYWRlcihzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQorICAgICAg
ICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAgICAgICAgZmllbGRzLmFwcGVuZChf
Q09OTkVDVElPTl9IRUFERVIpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMub3JpZ2luIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBfb3Jp
Z2luX2hlYWRlcihjb21tb24uT1JJR0lOX0hFQURFUiwgc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQor
CisgICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5kb20oMTYpCisgICAgICAgIHNlbGYuX2tl
eSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJyVzOiAlciAoJXMpJywgY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2tleSwgdXRpbC5oZXhpZnkob3JpZ2luYWxf
a2V5KSkKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgICclczogJXNcclxuJyAl
CisgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwgc2VsZi5fa2V5
LmRlY29kZSgnVVRGLTgnKSkpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAg
ICclczogJWRcclxuJyAlCisgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lP
Tl9IRUFERVIsIGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKKworICAgICAgICBleHRlbnNp
b25zX3RvX3JlcXVlc3QgPSBbXQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1l
c3NhZ2VfZGVmbGF0ZToKKyAgICAgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoCisgICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRF
TlNJT04pCisgICAgICAgICAgICAjIEFjY2VwdCB0aGUgY2xpZW50X21heF93aW5kb3dfYml0cyBl
eHRlbnNpb24gcGFyYW1ldGVyIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBleHRlbnNpb24uYWRk
X3BhcmFtZXRlcigKKyAgICAgICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3Nvci4KKyAgICAgICAgICAgICAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwg
Tm9uZSkKKyAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoZXh0ZW5zaW9u
KQorCisgICAgICAgIGlmIGxlbihleHRlbnNpb25zX3RvX3JlcXVlc3QpICE9IDA6CisgICAgICAg
ICAgICBmaWVsZHMuYXBwZW5kKCclczogJXNcclxuJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNpb25zX3RvX3Jl
cXVlc3QpKSkKKworICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgorICAgICAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwoZmllbGQuZW5jb2RlKCdVVEYtOCcpKQorCisgICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKGInXHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW50IGNsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWVsZHMpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3Rh
cnQgcmVhZGluZyBTdGF0dXMtTGluZScpCisKKyAgICAgICAgc3RhdHVzX2xpbmUgPSBiJycKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQorICAgICAgICAgICAgc3RhdHVzX2xpbmUgKz0gY2gKKyAgICAgICAgICAgIGlm
IGNoID09IGInXG4nOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgbSA9IHJlLm1h
dGNoKGInSFRUUC9cXGQrXC5cXGQrIChcXGRcXGRcXGQpIC4qXHJcbicsIHN0YXR1c19saW5lKQor
ICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignV3Jvbmcgc3RhdHVzIGxpbmUgZm9ybWF0OiAlcicgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX2xpbmUpCisgICAgICAgIHN0YXR1c19jb2RlID0g
bS5ncm91cCgxKQorICAgICAgICBpZiBzdGF0dXNfY29kZSAhPSBiJzEwMSc6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgc3RhdHVz
IGNvZGUgJXMgd2l0aCBmb2xsb3dpbmcgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgIHN0
YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQorICAgICAgICAgICAgcmFpc2UgQ2xpZW50
SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNv
ZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29kZSkKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1MaW5lJykKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMgdW50aWwgd2Ugc2VlIGFuIGVtcHR5IGxp
bmUnKQorCisgICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlYWRfZmllbGRzKCkKKworICAgICAgICBj
aCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgaWYgY2ggIT0gYidc
bic6ICAjIDB4MEEKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAg
ICAgICAgICAgICAgICdFeHBlY3RlZCBMRiBidXQgZm91bmQgJXIgd2hpbGUgcmVhZGluZyB2YWx1
ZSAlciBmb3IgaGVhZGVyICcKKyAgICAgICAgICAgICAgICAnbmFtZSAlcicgJSAoY2gsIHZhbHVl
LCBuYW1lKSkKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGFuIGVtcHR5
IGxpbmUnKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlcnZlclwncyBvcGVuaW5nIGhh
bmRzaGFrZSBoZWFkZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICBfdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5VUEdSQURFX0hFQURFUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUsIEZhbHNl
KQorCisgICAgICAgIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgY29tbW9uLkNP
Tk5FQ1RJT05fSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
b24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUsIEZhbHNlKQorCisgICAgICAgIGFjY2VwdCA9IF9n
ZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSKQorCisgICAgICAg
ICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmluYXJ5X2FjY2VwdCA9IGJh
c2U2NC5iNjRkZWNvZGUoYWNjZXB0KQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAg
ICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczog
JXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQpKQorCisgICAgICAgIGlmIGxlbihiaW5hcnlfYWNj
ZXB0KSAhPSAyMDoKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAg
ICAgICAgICAgICAgICdEZWNvZGVkIHZhbHVlIG9mICVzIGlzIG5vdCAyMC1ieXRlIGxvbmcnICUK
KyAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzcG9uc2UgZm9yIGNoYWxsZW5nZSA6ICVyICgl
cyknLCBhY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShiaW5h
cnlfYWNjZXB0KSkKKworICAgICAgICBiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0ID0gc2hhMShzZWxm
Ll9rZXkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uV0VC
U09DS0VUX0FDQ0VQVF9VVUlEKS5kaWdlc3QoKQorICAgICAgICBleHBlY3RlZF9hY2NlcHQgPSBi
YXNlNjQuYjY0ZW5jb2RlKGJpbmFyeV9leHBlY3RlZF9hY2NlcHQpCisKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCByZXNwb25zZSBmb3IgY2hhbGxlbmdlOiAlciAoJXMpJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGJpbmFyeV9leHBlY3RlZF9hY2NlcHQpKQorCisg
ICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQuZGVjb2RlKCdVVEYtOCcpOgorICAg
ICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgJ0lu
dmFsaWQgJXMgaGVhZGVyOiAlciAoZXhwZWN0ZWQ6ICVzKScgJQorICAgICAgICAgICAgICAgIChj
b21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQsIGV4cGVjdGVkX2FjY2Vw
dCkpCisKKyAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gRmFsc2UKKworICAg
ICAgICBleHRlbnNpb25zX2hlYWRlciA9IGZpZWxkcy5nZXQoCisgICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUi5sb3dlcigpKQorICAgICAgICBhY2NlcHRl
ZF9leHRlbnNpb25zID0gW10KKyAgICAgICAgaWYgZXh0ZW5zaW9uc19oZWFkZXIgaXMgbm90IE5v
bmUgYW5kIGxlbihleHRlbnNpb25zX2hlYWRlcikgIT0gMDoKKyAgICAgICAgICAgIGFjY2VwdGVk
X2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucyhleHRlbnNpb25zX2hlYWRlclsw
XSkKKworICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICBleHRlbnNpb25fbmFtZSA9IGV4dGVuc2lvbi5uYW1lKCkKKyAgICAgICAgICAgIGlm
IChleHRlbnNpb25fbmFtZSA9PSBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTgor
ICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZs
YXRlKToKKyAgICAgICAgICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBUcnVl
CisKKyAgICAgICAgICAgICAgICBmcmFtZXIgPSBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFt
ZXIoZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgIGZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29p
bmdfZW5hYmxlZChUcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Blcm1l
c3NhZ2VfZGVmbGF0ZSA9IGZyYW1lcgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCdVbmV4cGVjdGVkIGV4dGVuc2lvbiAl
cicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX25h
bWUpCisKKyAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZQor
ICAgICAgICAgICAgICAgIGFuZCBub3QgcGVybWVzc2FnZV9kZWZsYXRlX2FjY2VwdGVkKToKKyAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICdS
ZXF1ZXN0ZWQgJXMsIGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCisgICAgICAgICAgICAg
ICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisKKyAgICAgICAgIyBUT0RP
KHR5b3NoaW5vKTogSGFuZGxlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wKKyAgICAgICAgIyBUT0RP
KHR5b3NoaW5vKTogSGFuZGxlIENvb2tpZSwgZXRjLgorCisKK2NsYXNzIENsaWVudENvbm5lY3Rp
b24ob2JqZWN0KToKKyAgICAiIiJBIHdyYXBwZXIgZm9yIHNvY2tldCBvYmplY3QgdG8gcHJvdmlk
ZSB0aGUgbXBfY29ubiBpbnRlcmZhY2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHNvY2tldCk6CisgICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAorCisgICAgZGVmIHdyaXRl
KHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChkYXRhKQorCisgICAg
ZGVmIHJlYWQoc2VsZiwgbik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQucmVjdihuKQor
CisgICAgZGVmIGdldF9yZW1vdGVfYWRkcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nv
Y2tldC5nZXRwZWVybmFtZSgpCisKKyAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1v
dGVfYWRkcikKKworCitjbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiQSB3cmFw
cGVyIGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3MgYSBzb2NrZXQgb2JqZWN0IHRv
CisgICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVzdCBvYmplY3QuCisgICAgIiIi
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9
IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX3NvY2tldCA9IHNv
Y2tldAorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBDbGllbnRDb25uZWN0aW9uKHNvY2tldCkK
KyAgICAgICAgc2VsZi53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKKwor
CitjbGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6CisgICAgIiIiV2ViU29ja2V0IGVjaG8gY2xpZW50
LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fb3B0
aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQorCisgICAgICAgIHNl
bGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVmIHJ1bihz
ZWxmKToKKyAgICAgICAgIiIiUnVuIHRoZSBjbGllbnQuCisKKyAgICAgICAgU2hha2UgaGFuZHMg
YW5kIHRoZW4gcmVwZWF0IHNlbmRpbmcgbWVzc2FnZSBhbmQgcmVjZWl2aW5nIGl0cyBlY2hvLgor
ICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKKyAg
ICAgICAgc2VsZi5fc29ja2V0LnNldHRpbWVvdXQoc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91
dCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNvbm5lY3QoCisgICAg
ICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsIHNlbGYuX29wdGlvbnMuc2Vy
dmVyX3BvcnQpKQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfdGxzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3NvY2tldCA9IF9UTFNTb2NrZXQoc2VsZi5fc29ja2V0KQorCisgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3Ioc2VsZi5f
c29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZS5oYW5k
c2hha2UoKQorCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3Rh
Ymxpc2hlZCcpCisKKyAgICAgICAgICAgIHJlcXVlc3QgPSBDbGllbnRSZXF1ZXN0KHNlbGYuX3Nv
Y2tldCkKKworICAgICAgICAgICAgc3RyZWFtX29wdGlvbiA9IFN0cmVhbU9wdGlvbnMoKQorICAg
ICAgICAgICAgc3RyZWFtX29wdGlvbi5tYXNrX3NlbmQgPSBUcnVlCisgICAgICAgICAgICBzdHJl
YW1fb3B0aW9uLnVubWFza19yZWNlaXZlID0gRmFsc2UKKworICAgICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAg
ICAgICBmcmFtZXIgPSBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAg
ICAgICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKKwor
ICAgICAgICAgICAgc2VsZi5fc3RyZWFtID0gU3RyZWFtKHJlcXVlc3QsIHN0cmVhbV9vcHRpb24p
CisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29wdGlvbnMubWVzc2FnZS5zcGxpdCgn
LCcpOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSkKKyAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAgICAg
ICAgIHByaW50KCdTZW5kOiAlcycgJSBsaW5lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkK
KworICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICBwcmludCgnUmVjdjogJXMnICUgcmVjZWl2ZWQpCisgICAgICAgICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnRXJyb3I6
ICVzJyAlIGUpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIHNlbGYu
X2RvX2Nsb3NpbmdfaGFuZHNoYWtlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNl
bGYuX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYp
OgorICAgICAgICAiIiJQZXJmb3JtIGNsb3NpbmcgaGFuZHNoYWtlIHVzaW5nIHRoZSBzcGVjaWZp
ZWQgY2xvc2luZyBmcmFtZS4iIiIKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uu
c3BsaXQoJywnKVstMV0gPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICMgcmVxdWVz
dGVkIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UsIHNvCisgICAgICAgICAgICAj
IGV4cGVjdGluZyBjbG9zaW5nIGhhbmRzaGFrZSBtZXNzYWdlIGZyb20gc2VydmVyLgorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1dhaXQgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xvc2lu
ZyBoYW5kc2hha2UnKQorICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmVhbS5yZWNlaXZl
X21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAg
ICAgIHByaW50KCdSZWN2IGNsb3NlJykKKyAgICAgICAgICAgICAgICBwcmludCgnU2VuZCBhY2sn
KQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdSZWNlaXZlZCBjbG9zaW5nIGhh
bmRzaGFrZSBhbmQgc2VudCBhY2snKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBw
cmludCgnU2VuZCBjbG9zZScpCisgICAgICAgIHNlbGYuX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9u
KCkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgY2xvc2luZyBoYW5kc2hha2UnKQor
ICAgICAgICBwcmludCgnUmVjdiBhY2snKQorICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVj
ZWl2ZWQgYWNrJykKKworCitkZWYgbWFpbigpOgorICAgIGlmIHNpeC5QWTI6CisgICAgICAgIHN5
cy5zdGRvdXQgPSBjb2RlY3MuZ2V0d3JpdGVyKCd1dGYtOCcpKHN5cy5zdGRvdXQpCisKKyAgICBw
YXJzZXIgPSBPcHRpb25QYXJzZXIoKQorICAgICMgV2UgYWNjZXB0IC0tY29tbWFuZF9saW5lX2Zs
YWcgc3R5bGUgZmxhZ3Mgd2hpY2ggaXMgdGhlIHNhbWUgYXMgR29vZ2xlCisgICAgIyBnZmxhZ3Mg
aW4gYWRkaXRpb24gdG8gY29tbW9uIC0tY29tbWFuZC1saW5lLWZsYWcgc3R5bGUgZmxhZ3MuCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1zZXJ2
ZXItaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyX2hvc3QnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAg
ICB0eXBlPSdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J2xvY2FsaG9z
dCcsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3QnKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctcCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLXBvcnQn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlcl9wb3J0JywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdzZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
aW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9VTkRFRklORURfUE9SVCwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgcG9ydCcpCisgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1vJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1vcmlnaW4nLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J29yaWdpbicsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
c3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nb3JpZ2luJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXInLAor
ICAgICAgICAgICAgICAgICAgICAgICctLXJlc291cmNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdyZXNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScvZWNobycsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0ncmVzb3VyY2UgcGF0aCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS1tZXNzYWdlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdtZXNzYWdlJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLAor
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdjb21tYS1zZXBhcmF0ZWQgbWVzc2FnZXMgdG8g
c2VuZC4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcyB3aWxsIGZvcmNlIGNsb3Nl
IHRoZSBjb25uZWN0aW9uIGZyb20gc2VydmVyLicgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9HT09EQllFX01FU1NBR0UpKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsCisgICAg
ICAgICAgICAgICAgICAgICAgJy0tcXVpZXQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J3ZlcmJvc2UnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdzdXBwcmVzcyBtZXNzYWdlcycpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
CisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pLicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1r
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1zb2NrZXQtdGltZW91dCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tc29ja2V0X3RpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3NvY2tldF90aW1lb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X1RJTUVPVVRfU0VDLAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1RpbWVvdXQoc2VjKSBmb3Igc29ja2V0cycpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tdXNlLXBlcm1lc3NhZ2UtZGVmbGF0ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVz
dD0ndXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J1VzZSB0aGUgcGVybWVzc2FnZS1kZWZsYXRlIGV4dGVu
c2lvbi4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1sZXZlbCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tbG9nX2xldmVsJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdj
aG9pY2UnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD0nd2FybicsCisgICAgICAgICAgICAgICAgICAgICAgY2hv
aWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybicsICdlcnJvcicsICdjcml0aWNhbCddLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorCisgICAgKG9wdGlvbnMsIHVu
dXNlZF9hcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGxvZ2dpbmcuYmFzaWNDb25m
aWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkp
CisKKyAgICAjIERlZmF1bHQgcG9ydCBudW1iZXIgZGVwZW5kcyBvbiB3aGV0aGVyIFRMUyBpcyB1
c2VkLgorICAgIGlmIG9wdGlvbnMuc2VydmVyX3BvcnQgPT0gX1VOREVGSU5FRF9QT1JUOgorICAg
ICAgICBpZiBvcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICBvcHRpb25zLnNlcnZlcl9wb3J0
ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NL
RVRfUE9SVAorCisgICAgIyBvcHRwYXJzZSBkb2Vzbid0IHNlZW0gdG8gaGFuZGxlIG5vbi1hc2Np
aSBkZWZhdWx0IHZhbHVlcy4KKyAgICAjIFNldCBkZWZhdWx0IG1lc3NhZ2UgaGVyZS4KKyAgICBp
ZiBub3Qgb3B0aW9ucy5tZXNzYWdlOgorICAgICAgICBvcHRpb25zLm1lc3NhZ2UgPSB1J0hlbGxv
LFx1NjVlNVx1NjcyYycgICMgIkphcGFuIiBpbiBKYXBhbmVzZQorCisgICAgRWNob0NsaWVudChv
cHRpb25zKS5ydW4oKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigp
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9lY2hvX25vZXh0X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19u
b2V4dF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJhNTAzMjIxOGQyNjk5NThiZjc1MWJmNjA4YmJiNTI1
NTZjNmY3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNo
b19ub2V4dF93c2gucHkKQEAgLTAsMCArMSw2MiBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBzaXgKKworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIiIiUmVjZWl2ZWQgU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSBpcyBwYXJzZWQgaW50bworICAgIHJlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMuIHB5d2Vic29ja2V0IGNyZWF0ZXMgZXh0ZW5zaW9uCisg
ICAgcHJvY2Vzc29ycyB1c2luZyBpdCBiZWZvcmUgZG9fZXh0cmFfaGFuZHNoYWtlIGNhbGwgYW5k
IG5ldmVyIGxvb2tzIGF0IGl0CisgICAgYWZ0ZXIgdGhlIGNhbGwuCisKKyAgICBUbyByZWplY3Qg
cmVxdWVzdGVkIGV4dGVuc2lvbnMsIGNsZWFyIHRoZSBwcm9jZXNzb3IgbGlzdC4KKyAgICAiIiIK
KworICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQorCisKK2RlZiB3ZWJf
c29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIiIiRWNoby4gU2FtZSBhcyBlY2hv
X3dzaC5weS4iIiIKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUgPSByZXF1ZXN0Lndz
X3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBzaXgudGV4dF90eXBl
KToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5h
cnk9RmFsc2UpCisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6CisgICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1ZXN0Lndz
X3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKworIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Iz
YzZjNTMxMWJiYjk5ZjMzNGYzMzU3ZDgwMWEyZjQyMDU2MDA4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weQpAQCAtMCwwICsxLDU1IEBACisj
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHNpeAorCitfR09PREJZRV9NRVNTQUdFID0gdSdHb29k
YnllJworCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAg
ICAjIFRoaXMgZXhhbXBsZSBoYW5kbGVyIGFjY2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5f
Y2hlY2tfd3NoLnB5IGZvciBob3cKKyAgICAjIHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0
ZWQgc2NyaXB0cyBiYXNlZCBvbiBvcmlnaW4gdmFsdWUuCisKKyAgICBwYXNzICAjIEFsd2F5cyBh
Y2NlcHQuCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICB3
aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNz
YWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIGlmIGlzaW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAg
ICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdl
KGxpbmUsIGJpbmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWM0YzA5YWEwMDkxZDhi
YWYyOTA4OTU5OTA1ODY3ODQyYWViODY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKQEAgLTAsMCArMSwxMSBAQAorIyB3ZWJzb2Nr
ZXQgaGFuZGxlciBtYXAgZmlsZSwgdXNlZCBieSBzdGFuZGFsb25lLnB5IC1tIG9wdGlvbi4KKyMg
QSBsaW5lIHN0YXJ0aW5nIHdpdGggJyMnIGlzIGEgY29tbWVudCBsaW5lLgorIyBFYWNoIGxpbmUg
Y29uc2lzdHMgb2YgJ2FsaWFzX3Jlc291cmNlX3BhdGgnIGFuZCAnZXhpc3RpbmdfcmVzb3VyY2Vf
cGF0aCcKKyMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4KKyMgQWxpYXNpbmcgaXMgcHJvY2Vzc2VkIGZy
b20gdGhlIHRvcCB0byB0aGUgYm90dG9tIG9mIHRoZSBsaW5lLCBhbmQKKyMgJ2V4aXN0aW5nX3Jl
c291cmNlX3BhdGgnIG11c3QgZXhpc3QgYmVmb3JlIGl0IGlzIGFsaWFzZWQuCisjIEZvciBleGFt
cGxlLAorIyAgLyAvZWNobworIyBtZWFucyB0aGF0IGEgcmVxdWVzdCB0byAnLycgd2lsbCBiZSBo
YW5kbGVkIGJ5IGhhbmRsZXJzIGZvciAnL2VjaG8nLgorLyAvZWNobworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2hzdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9oc3RzX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODYxOTQ2OTIxYWYwNDU5NGQ2MjAyNmI0
NmYwNzc1OGRkZmU0MDJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9oc3RzX3dzaC5weQpAQCAtMCwwICsxLDQwIEBACisjIENvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitk
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmVxdWVzdC5l
eHRyYV9oZWFkZXJzLmFwcGVuZCgKKyAgICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5
JywgJ21heC1hZ2U9ODY0MDAnKSkKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpOgorICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5h
cnk9RmFsc2UpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0YWE2ODQyODNhNjAz
ZjViMzNkZGE1MjYzMDE5OTliNDQ3OTJkZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpAQCAtMCwwICsxLDQyIEBACisj
IENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNlIG1zZ3V0aWwuQmFkT3BlcmF0aW9u
RXhjZXB0aW9uKCdJbnRlbnRpb25hbCcpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA1
NzY3YWI5MzJmYjU4MjgyNGFhZjFhNTdkOTI0OWMzMDRiZDUxZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsx
LDQ0IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIGV4YW1wbGUgaXMgZGVyaXZlZCBmcm9t
IHRlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4KKworCitkZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgaWYgcmVxdWVzdC53c19v
cmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAgICAgIHJldHVybgorICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nfb3JpZ2lu
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMs
ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNl
LCByZXF1ZXN0LndzX3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMThiMmMwOGY2YTIyNTRhMWY5ZDc2NTA3OTAyYzFhNmI1YWVlODhhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9wZXJmb3JtYW5jZV90
ZXN0X2lmcmFtZS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KK0NvcHlyaWdodCAyMDIwLCBH
b29nbGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CitkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
K0xJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InV0aWwuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorPC9oZWFkPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFt
ZS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjcwNDA5YWE2ZWI1ZmQxYTExYWUyZDViYTE1NmJiOGFhYzJmY2FhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2Vf
dGVzdF9pZnJhbWUuanMKQEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IDIwMjAsIEdvb2ds
ZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmdW5jdGlvbiBwZXJmVGVzdEFkZFRvTG9nKHRleHQpIHsK
KyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdsb2cnLCAndmFsdWUnOiB0ZXh0fSwg
JyonKTsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RBZGRUb1N1bW1hcnkodGV4dCkgeworfQorCitm
dW5jdGlvbiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSh2YWx1ZSkgeworICBwYXJlbnQucG9zdE1lc3Nh
Z2Uoeydjb21tYW5kJzogJ21lYXN1cmVWYWx1ZScsICd2YWx1ZSc6IHZhbHVlfSwgJyonKTsKK30K
KworZnVuY3Rpb24gcGVyZlRlc3ROb3RpZnlBYm9ydCgpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdl
KHsnY29tbWFuZCc6ICdub3RpZnlBYm9ydCd9LCAnKicpOworfQorCitmdW5jdGlvbiBnZXRDb25m
aWdGb3JQZXJmb3JtYW5jZVRlc3QoZGF0YVR5cGUsIGFzeW5jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcmlmeURhdGEsIG51bUl0ZXJhdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtV2FybVVwSXRlcmF0aW9ucykgeworCisgIHJl
dHVybiB7CisgICAgcHJlZml4VXJsOiAnd3M6Ly8nICsgbG9jYXRpb24uaG9zdCArICcvYmVuY2ht
YXJrX2hlbHBlcicsCisgICAgcHJpbnRTaXplOiB0cnVlLAorICAgIG51bVNvY2tldHM6IDEsCisg
ICAgLy8gKyAxIGlzIGZvciBhIHdhcm11cCBpdGVyYXRpb24gYnkgdGhlIFRlbGVtZXRyeSBmcmFt
ZXdvcmsuCisgICAgbnVtSXRlcmF0aW9uczogbnVtSXRlcmF0aW9ucyArIG51bVdhcm1VcEl0ZXJh
dGlvbnMgKyAxLAorICAgIG51bVdhcm1VcEl0ZXJhdGlvbnM6IG51bVdhcm1VcEl0ZXJhdGlvbnMs
CisgICAgbWluVG90YWw6IDEwMjQwMDAwLAorICAgIHN0YXJ0U2l6ZTogMTAyNDAwMDAsCisgICAg
c3RvcFRocmVzaG9sZDogMTAyNDAwMDAsCisgICAgbXVsdGlwbGllcnM6IFsyXSwKKyAgICB2ZXJp
ZnlEYXRhOiB2ZXJpZnlEYXRhLAorICAgIGRhdGFUeXBlOiBkYXRhVHlwZSwKKyAgICBhc3luYzog
YXN5bmMsCisgICAgYWRkVG9Mb2c6IHBlcmZUZXN0QWRkVG9Mb2csCisgICAgYWRkVG9TdW1tYXJ5
OiBwZXJmVGVzdEFkZFRvU3VtbWFyeSwKKyAgICBtZWFzdXJlVmFsdWU6IHBlcmZUZXN0TWVhc3Vy
ZVZhbHVlLAorICAgIG5vdGlmeUFib3J0OiBwZXJmVGVzdE5vdGlmeUFib3J0CisgIH07Cit9CisK
K3ZhciBkYXRhOworb25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgeworICB2YXIgYWN0aW9u
OworICBpZiAobWVzc2FnZS5kYXRhLmNvbW1hbmQgPT09ICdzdGFydCcpIHsKKyAgICBkYXRhID0g
bWVzc2FnZS5kYXRhOworICAgIGluaXRXb3JrZXIoJ2h0dHA6Ly8nICsgbG9jYXRpb24uaG9zdCk7
CisgICAgYWN0aW9uID0gZGF0YS5iZW5jaG1hcmtOYW1lOworICB9IGVsc2UgeworICAgIGFjdGlv
biA9ICdzdG9wJzsKKyAgfQorCisgIHZhciBjb25maWcgPSBnZXRDb25maWdGb3JQZXJmb3JtYW5j
ZVRlc3QoZGF0YS5kYXRhVHlwZSwgZGF0YS5hc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhLnZlcmlmeURhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5udW1JdGVyYXRpb25zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubnVtV2FybVVwSXRlcmF0aW9ucyk7
CisgIGRvQWN0aW9uKGNvbmZpZywgZGF0YS5pc1dvcmtlciwgYWN0aW9uKTsKK307CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAz
Y2I3NDAxYjc4N2FjNmUxMWM2NzQ2YzY4NDJlNTdkMzgwOTU2YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQpAQCAtMCwwICsx
LDI2IEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlCisjIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IENPUFlJTkcgZmlsZSBvciBhdAorIyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVu
LXNvdXJjZS9saWNlbnNlcy9ic2QKKyIiIkNHSSBzY3JpcHQgc2FtcGxlIGZvciB0ZXN0aW5nIGVm
ZmVjdCBvZiBIVFRQIGhlYWRlcnMgb24gdGhlIG9yaWdpbiBwYWdlLgorCitOb3RlIHRoYXQgQ0dJ
IHNjcmlwdHMgZG9uJ3Qgd29yayBvbiB0aGUgc3RhbmRhbG9uZSBweXdlYnNvY2tldCBydW5uaW5n
IGluIFRMUworbW9kZS4KKyIiIgorCitwcmludCAiIiJDb250ZW50LXR5cGU6IHRleHQvaHRtbAor
Q29udGVudC1TZWN1cml0eS1Qb2xpY3k6IGNvbm5lY3Qtc3JjIHNlbGYKKworPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIHNvY2tl
dCA9IG5ldyBXZWJTb2NrZXQoIndzOi8vZXhhbXBsZS5jb20iKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPiIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MDE2
MGNiNDBjNGM3ODAwY2Q5ZTc2MzAwMTQwYjliZmU5ZjE0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWwuanMKQEAgLTAsMCArMSwzMjMgQEAKKy8vIENv
cHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgYm90aCBtYWluIGFuZCB3b3JrZXIgdGhyZWFk
KS4KKwordmFyIHJlc3VsdHMgPSB7fTsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICBy
ZXR1cm4gRGF0ZS5ub3coKTsKK30KKworZnVuY3Rpb24gZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwg
dGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMsCisgICAgc3BlZWQs
IHByaW50U2l6ZSkgeworICBpZiAocHJpbnRTaXplKSB7CisgICAgcmV0dXJuIChzaXplIC8gMTAy
NCkgKworICAgICAgICAnXHQnICsgdGltZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykgKworICAg
ICAgICAoc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID09IC0xID8KKyAgICAgICAgICAgICcnIDoK
KyAgICAgICAgICAgICdcdCcgKyBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMudG9GaXhlZCgzKSkg
KworICAgICAgICAnXHQnICsgc3BlZWQudG9GaXhlZCgzKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1
cm4gc3BlZWQudG9TdHJpbmcoKTsKKyAgfQorfQorCitmdW5jdGlvbiBjbGVhckF2ZXJhZ2VEYXRh
KCkgeworICByZXN1bHRzID0ge307Cit9CisKK2Z1bmN0aW9uIHJlcG9ydEF2ZXJhZ2VEYXRhKGNv
bmZpZykgeworICBjb25maWcuYWRkVG9TdW1tYXJ5KAorICAgICAgJ1NpemVbS2lCXVx0QXZlcmFn
ZSB0aW1lW21zXVx0U3RkZGV2IHRpbWVbbXNdXHRTcGVlZFtLQi9zXScpOworICBmb3IgKHZhciBz
aXplIGluIHJlc3VsdHMpIHsKKyAgICB2YXIgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyA9IHJl
c3VsdHNbc2l6ZV0uc3VtX3QgLyByZXN1bHRzW3NpemVdLm47CisgICAgdmFyIHNwZWVkID0gY2Fs
Y3VsYXRlU3BlZWRJbktCKHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMpOworICAgIC8v
IENhbGN1bGF0ZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAgdmFyIHN0ZGRldlRpbWVQ
ZXJNZXNzYWdlSW5NcyA9IE1hdGguc3FydCgKKyAgICAgICAgKHJlc3VsdHNbc2l6ZV0uc3VtX3Qy
IC8gcmVzdWx0c1tzaXplXS5uIC0KKyAgICAgICAgICAgIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUlu
TXMgKiBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zKSAqCisgICAgICAgIHJlc3VsdHNbc2l6ZV0u
biAvCisgICAgICAgIChyZXN1bHRzW3NpemVdLm4gLSAxKSk7CisgICAgY29uZmlnLmFkZFRvU3Vt
bWFyeShmb3JtYXRSZXN1bHRJbktpQigKKyAgICAgICAgc2l6ZSwgYXZlcmFnZVRpbWVQZXJNZXNz
YWdlSW5Ncywgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zLCBzcGVlZCwKKyAgICAgICAgdHJ1ZSkp
OworICB9Cit9CisKK2Z1bmN0aW9uIGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCB0aW1lU3BlbnRJ
bk1zKSB7CisgIHJldHVybiBNYXRoLnJvdW5kKHNpemUgLyB0aW1lU3BlbnRJbk1zICogMTAwMCkg
LyAxMDAwOworfQorCitmdW5jdGlvbiBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXpl
LCBzdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgaXNXYXJtVXApIHsKKyAgdmFyIHRpbWVT
cGVudEluTXMgPSBnZXRUaW1lU3RhbXAoKSAtIHN0YXJ0VGltZUluTXM7CisgIHZhciBzcGVlZCA9
IGNhbGN1bGF0ZVNwZWVkSW5LQih0b3RhbFNpemUsIHRpbWVTcGVudEluTXMpOworICB2YXIgdGlt
ZVBlck1lc3NhZ2VJbk1zID0gdGltZVNwZW50SW5NcyAvICh0b3RhbFNpemUgLyBzaXplKTsKKyAg
aWYgKCFpc1dhcm1VcCkgeworICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUodGltZVBlck1lc3NhZ2VJ
bk1zKTsKKyAgICBpZiAoIXJlc3VsdHNbc2l6ZV0pIHsKKyAgICAgIHJlc3VsdHNbc2l6ZV0gPSB7
bjogMCwgc3VtX3Q6IDAsIHN1bV90MjogMH07CisgICAgfQorICAgIHJlc3VsdHNbc2l6ZV0ubiAr
KzsKKyAgICByZXN1bHRzW3NpemVdLnN1bV90ICs9IHRpbWVQZXJNZXNzYWdlSW5NczsKKyAgICBy
ZXN1bHRzW3NpemVdLnN1bV90MiArPSB0aW1lUGVyTWVzc2FnZUluTXMgKiB0aW1lUGVyTWVzc2Fn
ZUluTXM7CisgIH0KKyAgY29uZmlnLmFkZFRvTG9nKGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRp
bWVQZXJNZXNzYWdlSW5NcywgLTEsIHNwZWVkLAorICAgICAgY29uZmlnLnByaW50U2l6ZSkpOwor
fQorCitmdW5jdGlvbiByZXBlYXRTdHJpbmcoc3RyLCBjb3VudCkgeworICB2YXIgZGF0YSA9ICcn
OworICB2YXIgZXhwQ2h1bmsgPSBzdHI7CisgIHZhciByZW1haW4gPSBjb3VudDsKKyAgd2hpbGUg
KHRydWUpIHsKKyAgICBpZiAocmVtYWluICUgMikgeworICAgICAgZGF0YSArPSBleHBDaHVuazsK
KyAgICAgIHJlbWFpbiA9IChyZW1haW4gLSAxKSAvIDI7CisgICAgfSBlbHNlIHsKKyAgICAgIHJl
bWFpbiAvPSAyOworICAgIH0KKworICAgIGlmIChyZW1haW4gPT0gMCkKKyAgICAgIGJyZWFrOwor
CisgICAgZXhwQ2h1bmsgPSBleHBDaHVuayArIGV4cENodW5rOworICB9CisgIHJldHVybiBkYXRh
OworfQorCitmdW5jdGlvbiBmaWxsQXJyYXlCdWZmZXIoYnVmZmVyLCBjKSB7CisgIHZhciBpOwor
CisgIHZhciB1MzJDb250ZW50ID0gYyAqIDB4MDEwMTAxMDE7CisKKyAgdmFyIHUzMkJsb2NrcyA9
IE1hdGguZmxvb3IoYnVmZmVyLmJ5dGVMZW5ndGggLyA0KTsKKyAgdmFyIHUzMlZpZXcgPSBuZXcg
VWludDMyQXJyYXkoYnVmZmVyLCAwLCB1MzJCbG9ja3MpOworICAvLyBsZW5ndGggYXR0cmlidXRl
IGlzIHNsb3cgb24gQ2hyb21lLiBEb24ndCB1c2UgaXQgZm9yIGxvb3AgY29uZGl0aW9uLgorICBm
b3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kpIHsKKyAgICB1MzJWaWV3W2ldID0gdTMyQ29u
dGVudDsKKyAgfQorCisgIC8vIEZyYWN0aW9uCisgIHZhciB1OEJsb2NrcyA9IGJ1ZmZlci5ieXRl
TGVuZ3RoIC0gdTMyQmxvY2tzICogNDsKKyAgdmFyIHU4VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1
ZmZlciwgdTMyQmxvY2tzICogNCwgdThCbG9ja3MpOworICBmb3IgKGkgPSAwOyBpIDwgdThCbG9j
a3M7ICsraSkgeworICAgIHU4Vmlld1tpXSA9IGM7CisgIH0KK30KKworZnVuY3Rpb24gdmVyaWZ5
QXJyYXlCdWZmZXIoYnVmZmVyLCBleHBlY3RlZENoYXIpIHsKKyAgdmFyIGk7CisKKyAgdmFyIGV4
cGVjdGVkVTMyVmFsdWUgPSBleHBlY3RlZENoYXIgKiAweDAxMDEwMTAxOworCisgIHZhciB1MzJC
bG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3RoIC8gNCk7CisgIHZhciB1MzJWaWV3
ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxvY2tzKTsKKyAgZm9yIChpID0gMDsg
aSA8IHUzMkJsb2NrczsgKytpKSB7CisgICAgaWYgKHUzMlZpZXdbaV0gIT0gZXhwZWN0ZWRVMzJW
YWx1ZSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHZhciB1OEJsb2Nr
cyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC0gdTMyQmxvY2tzICogNDsKKyAgdmFyIHU4VmlldyA9IG5l
dyBVaW50OEFycmF5KGJ1ZmZlciwgdTMyQmxvY2tzICogNCwgdThCbG9ja3MpOworICBmb3IgKGkg
PSAwOyBpIDwgdThCbG9ja3M7ICsraSkgeworICAgIGlmICh1OFZpZXdbaV0gIT0gZXhwZWN0ZWRD
aGFyKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7
Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUJsb2IoY29uZmlnLCBibG9iLCBleHBlY3RlZENoYXIsIGRv
bmVDYWxsYmFjaykgeworICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoYmxvYik7CisgIHJl
YWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdGaWxlUmVh
ZGVyIEVycm9yOiAnICsgcmVhZGVyLmVycm9yLm1lc3NhZ2UpOworICAgIGRvbmVDYWxsYmFjayhi
bG9iLnNpemUsIGZhbHNlKTsKKyAgfQorICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHJlc3VsdCA9IHZlcmlmeUFycmF5QnVmZmVyKHJlYWRlci5yZXN1bHQsIGV4cGVj
dGVkQ2hhcik7CisgICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgcmVzdWx0KTsKKyAgfQorICBy
ZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFja25v
d2xlZGdlbWVudChjb25maWcsIG1lc3NhZ2UsIHNpemUpIHsKKyAgaWYgKHR5cGVvZiBtZXNzYWdl
ICE9ICdzdHJpbmcnKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIGFjayB0eXBlOiAn
ICsgdHlwZW9mIG1lc3NhZ2UpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgcGFyc2Vk
QWNrID0gcGFyc2VJbnQobWVzc2FnZSk7CisgIGlmIChpc05hTihwYXJzZWRBY2spKSB7CisgICAg
Y29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIGFjayB2YWx1ZTogJyArIG1lc3NhZ2UpOworICAgIHJl
dHVybiBmYWxzZTsKKyAgfQorICBpZiAocGFyc2VkQWNrICE9IHNpemUpIHsKKyAgICBjb25maWcu
YWRkVG9Mb2coCisgICAgICAgICdFeHBlY3RlZCBhY2sgZm9yICcgKyBzaXplICsgJ0IgYnV0IHJl
Y2VpdmVkIG9uZSBmb3IgJyArIHBhcnNlZEFjayArCisgICAgICAgICdCJyk7CisgICAgcmV0dXJu
IGZhbHNlOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGNsb25lQ29uZmln
KG9iaikgeworICB2YXIgbmV3T2JqID0ge307CisgIGZvciAoa2V5IGluIG9iaikgeworICAgIG5l
d09ialtrZXldID0gb2JqW2tleV07CisgIH0KKyAgcmV0dXJuIG5ld09iajsKK30KKwordmFyIHRh
c2tzID0gW107CisKK2Z1bmN0aW9uIHJ1bk5leHRUYXNrKGNvbmZpZykgeworICB2YXIgdGFzayA9
IHRhc2tzLnNoaWZ0KCk7CisgIGlmICh0YXNrID09IHVuZGVmaW5lZCkgeworICAgIGNvbmZpZy5h
ZGRUb0xvZygnRmluaXNoZWQnKTsKKyAgICBjbGVhbnVwKCk7CisgICAgcmV0dXJuOworICB9Cisg
IHRpbWVySUQgPSBzZXRUaW1lb3V0KHRhc2ssIDApOworfQorCitmdW5jdGlvbiBidWlsZExlZ2Vu
ZFN0cmluZyhjb25maWcpIHsKKyAgdmFyIGxlZ2VuZCA9ICcnCisgIGlmIChjb25maWcucHJpbnRT
aXplKQorICAgIGxlZ2VuZCA9ICdNZXNzYWdlIHNpemUgaW4gS2lCLCBUaW1lL21lc3NhZ2UgaW4g
bXMsICc7CisgIGxlZ2VuZCArPSAnU3BlZWQgaW4ga0Ivcyc7CisgIHJldHVybiBsZWdlbmQ7Cit9
CisKK2Z1bmN0aW9uIGFkZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmMpIHsKKyAgZm9yICh2YXIgaSA9
IDA7CisgICAgICBpIDwgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKyBjb25maWcubnVtSXRl
cmF0aW9uczsgKytpKSB7CisgICAgdmFyIG11bHRpcGxpZXJJbmRleCA9IDA7CisgICAgZm9yICh2
YXIgc2l6ZSA9IGNvbmZpZy5zdGFydFNpemU7CisgICAgICAgICBzaXplIDw9IGNvbmZpZy5zdG9w
VGhyZXNob2xkOworICAgICAgICAgKyttdWx0aXBsaWVySW5kZXgpIHsKKyAgICAgIHZhciB0YXNr
ID0gc3RlcEZ1bmMuYmluZCgKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIHNpemUsCisgICAg
ICAgICAgY29uZmlnLAorICAgICAgICAgIGkgPCBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucyk7
CisgICAgICB0YXNrcy5wdXNoKHRhc2spOworICAgICAgdmFyIG11bHRpcGxpZXIgPSBjb25maWcu
bXVsdGlwbGllcnNbCisgICAgICAgIG11bHRpcGxpZXJJbmRleCAlIGNvbmZpZy5tdWx0aXBsaWVy
cy5sZW5ndGhdOworICAgICAgaWYgKG11bHRpcGxpZXIgPD0gMSkgeworICAgICAgICBjb25maWcu
YWRkVG9Mb2coJ0ludmFsaWQgbXVsdGlwbGllciAnICsgbXVsdGlwbGllcik7CisgICAgICAgIGNv
bmZpZy5ub3RpZnlBYm9ydCgpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbXVs
dGlwbGVyJyk7CisgICAgICB9CisgICAgICBzaXplID0gTWF0aC5jZWlsKHNpemUgKiBtdWx0aXBs
aWVyKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhj
b25maWcsIHRpdGxlKSB7CisgIHRhc2tzLnB1c2goZnVuY3Rpb24oKXsKKyAgICAgIHRpbWVySUQg
PSBudWxsOworICAgICAgY29uZmlnLmFkZFRvU3VtbWFyeSh0aXRsZSk7CisgICAgICByZXBvcnRB
dmVyYWdlRGF0YShjb25maWcpOworICAgICAgY2xlYXJBdmVyYWdlRGF0YSgpOworICAgICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29u
ZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnU2VuZCBiZW5jaG1hcmsnKTsKKyAgY29uZmlnLmFk
ZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107CisgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7
CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdl
dENvbmZpZ1N0cmluZyhjb25maWcpKTsKKyAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKK30KKwor
ZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFyayhjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvTG9nKCdS
ZWNlaXZlIGJlbmNobWFyaycpOworICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSk7CisKKyAgdGFza3MgPSBbXTsKKyAgY2xlYXJBdmVyYWdlRGF0YSgpOworICBhZGRU
YXNrcyhjb25maWcsIHJlY2VpdmVCZW5jaG1hcmtTdGVwKTsKKyAgYWRkUmVzdWx0UmVwb3J0aW5n
VGFzayhjb25maWcsCisgICAgICAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmlu
Zyhjb25maWcpKTsKKyAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKK30KKworZnVuY3Rpb24gc3Rv
cChjb25maWcpIHsKKyAgY2xlYXJUaW1lb3V0KHRpbWVySUQpOworICB0aW1lcklEID0gbnVsbDsK
KyAgdGFza3MgPSBbXTsKKyAgY29uZmlnLmFkZFRvTG9nKCdTdG9wcGVkJyk7CisgIGNsZWFudXAo
KTsKK30KKwordmFyIHdvcmtlcjsKKworZnVuY3Rpb24gaW5pdFdvcmtlcihvcmlnaW4pIHsKKyAg
d29ya2VyID0gbmV3IFdvcmtlcihvcmlnaW4gKyAnL2JlbmNobWFyay5qcycpOworfQorCitmdW5j
dGlvbiBkb0FjdGlvbihjb25maWcsIGlzV2luZG93VG9Xb3JrZXIsIGFjdGlvbikgeworICBpZiAo
aXNXaW5kb3dUb1dvcmtlcikgeworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihhZGRU
b0xvZywgYWRkVG9TdW1tYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFz
dXJlVmFsdWUsIG5vdGlmeUFib3J0LCBtZXNzYWdlKSB7CisgICAgICBpZiAobWVzc2FnZS5kYXRh
LnR5cGUgPT09ICdhZGRUb0xvZycpCisgICAgICAgIGFkZFRvTG9nKG1lc3NhZ2UuZGF0YS5kYXRh
KTsKKyAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9TdW1tYXJ5JykK
KyAgICAgICAgYWRkVG9TdW1tYXJ5KG1lc3NhZ2UuZGF0YS5kYXRhKTsKKyAgICAgIGVsc2UgaWYg
KG1lc3NhZ2UuZGF0YS50eXBlID09PSAnbWVhc3VyZVZhbHVlJykKKyAgICAgICAgbWVhc3VyZVZh
bHVlKG1lc3NhZ2UuZGF0YS5kYXRhKTsKKyAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBl
ID09PSAnbm90aWZ5QWJvcnQnKQorICAgICAgICBub3RpZnlBYm9ydCgpOworICAgIH0uYmluZCh1
bmRlZmluZWQsIGNvbmZpZy5hZGRUb0xvZywgY29uZmlnLmFkZFRvU3VtbWFyeSwKKyAgICAgICAg
ICAgY29uZmlnLm1lYXN1cmVWYWx1ZSwgY29uZmlnLm5vdGlmeUFib3J0KTsKKyAgICBjb25maWcu
YWRkVG9Mb2cgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IHVuZGVmaW5l
ZDsKKyAgICBjb25maWcubWVhc3VyZVZhbHVlID0gdW5kZWZpbmVkOworICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCA9IHVuZGVmaW5lZDsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6IGFjdGlv
biwgY29uZmlnOiBjb25maWd9KTsKKyAgfSBlbHNlIHsKKyAgICBpZiAoYWN0aW9uID09PSAnc2Vu
ZEJlbmNobWFyaycpCisgICAgICBzZW5kQmVuY2htYXJrKGNvbmZpZyk7CisgICAgZWxzZSBpZiAo
YWN0aW9uID09PSAncmVjZWl2ZUJlbmNobWFyaycpCisgICAgICByZWNlaXZlQmVuY2htYXJrKGNv
bmZpZyk7CisgICAgZWxzZSBpZiAoYWN0aW9uID09PSAnYmF0Y2hCZW5jaG1hcmsnKQorICAgICAg
YmF0Y2hCZW5jaG1hcmsoY29uZmlnKTsKKyAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdzdG9wJykK
KyAgICAgIHN0b3AoY29uZmlnKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS91dGlsX21haW4uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxf
bWFpbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43OGFkZDQ4NzMxZjg4ZmU4NWVlZWE0MGU2ZTAxOWNmMTdjY2Nl
M2M4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21h
aW4uanMKQEAgLTAsMCArMSw4OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisv
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZv
ciB0aGUgbWFpbiB0aHJlYWQgb25seSkuCisKK3ZhciBsb2dCb3ggPSBudWxsOwordmFyIHF1ZXVl
ZExvZyA9ICcnOworCit2YXIgc3VtbWFyeUJveCA9IG51bGw7CisKK2Z1bmN0aW9uIHF1ZXVlTG9n
KGxvZykgeworICBxdWV1ZWRMb2cgKz0gbG9nICsgJ1xuJzsKK30KKworZnVuY3Rpb24gYWRkVG9M
b2cobG9nKSB7CisgIGxvZ0JveC52YWx1ZSArPSBxdWV1ZWRMb2c7CisgIHF1ZXVlZExvZyA9ICcn
OworICBsb2dCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKKyAgbG9nQm94LnNjcm9sbFRvcCA9IDEw
MDAwMDA7Cit9CisKK2Z1bmN0aW9uIGFkZFRvU3VtbWFyeShsb2cpIHsKKyAgc3VtbWFyeUJveC52
YWx1ZSArPSBsb2cgKyAnXG4nOworICBzdW1tYXJ5Qm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Cit9
CisKKy8vIHZhbHVlOiBleGVjdXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMuCisvLyBjb25maWcu
bWVhc3VyZVZhbHVlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVzdHMu
CisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KK2Z1bmN0aW9uIG1l
YXN1cmVWYWx1ZSh2YWx1ZSkgeworfQorCisvLyBjb25maWcubm90aWZ5QWJvcnQgaXMgY2FsbGVk
IHdoZW4gdGhlIGJlbmNobWFyayBmYWlsZWQgYW5kIGFib3J0ZWQsIGFuZAorLy8gaW50ZW5kZWQg
dG8gYmUgdXNlZCBpbiBQZXJmb3JtYW5jZSBUZXN0cy4KKy8vIERvIG5vdGhpbmcgaGVyZSBpbiBu
b24tUGVyZm9ybWFuY2VUZXN0LgorZnVuY3Rpb24gbm90aWZ5QWJvcnQoKSB7Cit9CisKK2Z1bmN0
aW9uIGdldEludEZyb21JbnB1dChpZCkgeworICByZXR1cm4gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoaWQpLnZhbHVlKTsKK30KKworZnVuY3Rpb24gZ2V0U3RyaW5nRnJvbVJhZGlv
Qm94KG5hbWUpIHsKKyAgdmFyIGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVuY2ht
YXJrX2Zvcm0nKVtuYW1lXTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytp
KQorICAgIGlmIChsaXN0Lml0ZW0oaSkuY2hlY2tlZCkKKyAgICAgIHJldHVybiBsaXN0Lml0ZW0o
aSkudmFsdWU7CisgIHJldHVybiB1bmRlZmluZWQ7Cit9CitmdW5jdGlvbiBnZXRCb29sRnJvbUNo
ZWNrQm94KGlkKSB7CisgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2hlY2tl
ZDsKK30KKworZnVuY3Rpb24gZ2V0SW50QXJyYXlGcm9tSW5wdXQoaWQpIHsKKyAgdmFyIHN0ckFy
cmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlLnNwbGl0KCcsJyk7CisgIHJl
dHVybiBzdHJBcnJheS5tYXAoZnVuY3Rpb24oc3RyKSB7IHJldHVybiBwYXJzZUludChzdHIsIDEw
KTsgfSk7Cit9CisKK2Z1bmN0aW9uIGdldEZsb2F0QXJyYXlGcm9tSW5wdXQoaWQpIHsKKyAgdmFy
IHN0ckFycmF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlLnNwbGl0KCcsJyk7
CisgIHJldHVybiBzdHJBcnJheS5tYXAocGFyc2VGbG9hdCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDkwNDQ5YTkwYTdkNzgyYjk3MDIz
ZThkOWQ1YTdhYWVlOTRhMzJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpAQCAtMCwwICsxLDQ0IEBACisvLyBDb3B5cmlnaHQgMjAx
NCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxl
IGFwcGxpY2F0aW9ucyAoZm9yIHRoZSB3b3JrZXIgdGhyZWFkcyBvbmx5KS4KKworb25tZXNzYWdl
ID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKKyAgdmFyIGNvbmZpZyA9IG1lc3NhZ2UuZGF0YS5jb25m
aWc7CisgIGNvbmZpZy5hZGRUb0xvZyA9IGZ1bmN0aW9uKHRleHQpIHsKKyAgICAgIHBvc3RNZXNz
YWdlKHt0eXBlOiAnYWRkVG9Mb2cnLCBkYXRhOiB0ZXh0fSk7IH07CisgIGNvbmZpZy5hZGRUb1N1
bW1hcnkgPSBmdW5jdGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRv
U3VtbWFyeScsIGRhdGE6IHRleHR9KTsgfTsKKyAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IGZ1bmN0
aW9uKHZhbHVlKSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ21lYXN1cmVWYWx1ZScsIGRh
dGE6IHZhbHVlfSk7IH07CisgIGNvbmZpZy5ub3RpZnlBYm9ydCA9IGZ1bmN0aW9uKCkgeyBwb3N0
TWVzc2FnZSh7dHlwZTogJ25vdGlmeUFib3J0J30pOyB9OworCisgIGRvQWN0aW9uKGNvbmZpZywg
ZmFsc2UsIG1lc3NhZ2UuZGF0YS50eXBlKTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93
M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQzZDM4ZTJhYjYyZmE3NjFlNTQxYzNlNDdiNTE1
NjRkOTEzMWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93
M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDM5IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2Fib3J0X3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJf
YmVuY2htYXJrLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dzaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9leGFtcGxlL2JlbmNobWFyay5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrX2hlbHBlcl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nsb3NlX3dz
aC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9lY2hvX2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fd3NoLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2hzdHNfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS91dGlsLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
X21haW4uanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfd29ya2VyLmpzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjhkNWY1OTUwZjM0NzUzMWI5MjYyYzMxYjc3ZDBjMjlkNDI2ZTU5ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQpAQCAtMCww
ICsxLDE3MiBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiIgQSBTdGFuZGFsb25lIFdlYlNvY2tldCBT
ZXJ2ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMKKworbW9kX3B5d2Vic29ja2V0IGlzIGFuIEFQSSB0
aGF0IHByb3ZpZGVzIFdlYlNvY2tldCBmdW5jdGlvbmFsaXRpZXMgd2l0aAorYSBzdGFuZGFsb25l
IFdlYlNvY2tldCBzZXJ2ZXIuIEl0IGlzIGludGVuZGVkIGZvciB0ZXN0aW5nIG9yCitleHBlcmlt
ZW50YWwgcHVycG9zZXMuCisKK0luc3RhbGxhdGlvbgorPT09PT09PT09PT09CisxLiBGb2xsb3cg
c3RhbmRhbG9uZSBzZXJ2ZXIgZG9jdW1lbnRhdGlvbiB0byBzdGFydCBydW5uaW5nIHRoZQorc3Rh
bmRhbG9uZSBzZXJ2ZXIuIEl0IGNhbiBiZSByZWFkIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBj
b21tYW5kOgorCisgICAgJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3RhbmRhbG9uZQorCisyLiBP
bmNlIHRoZSBzdGFuZGFsb25lIHNlcnZlciBpcyBsYXVuY2hlZCB2ZXJpZnkgaXQgYnkgYWNjZXNz
aW5nCitodHRwOi8vbG9jYWxob3N0Wzpwb3J0XS9jb25zb2xlLmh0bWwuIEluY2x1ZGUgdGhlIHBv
cnQgbnVtYmVyIHdoZW4KK3NwZWNpZmllZCBvbiBsYXVuY2guIElmIGV2ZXJ5dGhpbmcgaXMgd29y
a2luZyBjb3JyZWN0bHksIHlvdQord2lsbCBzZWUgYSBzaW1wbGUgZWNobyBjb25zb2xlLgorCisK
K1dyaXRpbmcgV2ViU29ja2V0IGhhbmRsZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQor
CitXaGVuIGEgV2ViU29ja2V0IHJlcXVlc3QgY29tZXMgaW4sIHRoZSByZXNvdXJjZSBuYW1lCitz
cGVjaWZpZWQgaW4gdGhlIGhhbmRzaGFrZSBpcyBjb25zaWRlcmVkIGFzIGlmIGl0IGlzIGEgZmls
ZSBwYXRoIHVuZGVyCis8d2Vic29ja19oYW5kbGVycz4gYW5kIHRoZSBoYW5kbGVyIGRlZmluZWQg
aW4KKzx3ZWJzb2NrX2hhbmRsZXJzPi88cmVzb3VyY2VfbmFtZT5fd3NoLnB5IGlzIGludm9rZWQu
CisKK0ZvciBleGFtcGxlLCBpZiB0aGUgcmVzb3VyY2UgbmFtZSBpcyAvZXhhbXBsZS9jaGF0LCB0
aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5kbGVycz4vZXhhbXBsZS9jaGF0X3dz
aC5weSBpcyBpbnZva2VkLgorCitBIFdlYlNvY2tldCBoYW5kbGVyIGlzIGNvbXBvc2VkIG9mIHRo
ZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zOgorCisgICAgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCkKKyAgICB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCkK
KyAgICB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCkKKword2hl
cmU6CisgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCit3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBoYW5kc2hha2UgYWZ0ZXIgdGhlCito
ZWFkZXJzIGFyZSBzdWNjZXNzZnVsbHkgcGFyc2VkIGFuZCBXZWJTb2NrZXQgcHJvcGVydGllcyAo
d3Nfb3JpZ2luLAorYW5kIHdzX3Jlc291cmNlKSBhcmUgYWRkZWQgdG8gcmVxdWVzdC4gQSBoYW5k
bGVyCitjYW4gcmVqZWN0IHRoZSByZXF1ZXN0IGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uLgorCitB
IHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhhdCB5b3UgY2Fu
IHVzZSBkdXJpbmcgdGhlCitleHRyYSBoYW5kc2hha2UgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKToKKy0gd3NfcmVzb3VyY2UKKy0gd3Nfb3JpZ2luCistIHdzX3ZlcnNpb24KKy0gd3Nf
ZXh0ZW5zaW9ucworLSB3c19kZWZsYXRlCistIHdzX3Byb3RvY29sCistIHdzX3JlcXVlc3RlZF9w
cm90b2NvbHMKKworVGhlIGxhc3QgdHdvIGFyZSBhIGJpdCB0cmlja3kuIFNlZSB0aGUgbmV4dCBz
dWJzZWN0aW9uLgorCisKK1N1YnByb3RvY29sIE5lZ290aWF0aW9uCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCit3c19wcm90b2NvbCBpcyBhbHdheXMgc2V0IHRvIE5vbmUgd2hlbgord2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkLiBJZiB3c19yZXF1ZXN0ZWRfcHJvdG9j
b2xzIGlzIG5vdAorTm9uZSwgeW91IG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tIHRo
aXMgbGlzdCBhbmQgc2V0IGl0IHRvCit3c19wcm90b2NvbC4KKworRGF0YSBUcmFuc2ZlcgorLS0t
LS0tLS0tLS0tLQorCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgY2FsbGVkIGFmdGVyIHRo
ZSBoYW5kc2hha2UgY29tcGxldGVkCitzdWNjZXNzZnVsbHkuIEEgaGFuZGxlciBjYW4gcmVjZWl2
ZS9zZW5kIG1lc3NhZ2VzIGZyb20vdG8gdGhlIGNsaWVudAordXNpbmcgcmVxdWVzdC4gbW9kX3B5
d2Vic29ja2V0Lm1zZ3V0aWwgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcworZm9yIGRhdGEgdHJh
bnNmZXIuCisKK1lvdSBjYW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYnkgdGhlIGZvbGxvd2luZyBzdGF0
ZW1lbnQuCisKKyAgICBtZXNzYWdlID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKKworVGhpcyBjYWxsIGJsb2NrcyB1bnRpbCBhbnkgY29tcGxldGUgdGV4dCBmcmFtZSBhcnJp
dmVzLCBhbmQgdGhlIHBheWxvYWQgZGF0YQorb2YgdGhlIGluY29taW5nIGZyYW1lIHdpbGwgYmUg
c3RvcmVkIGludG8gbWVzc2FnZS4gV2hlbiB5b3UncmUgdXNpbmcgSUVURgorSHlCaSAwMCBvciBs
YXRlciBwcm90b2NvbCwgcmVjZWl2ZV9tZXNzYWdlKCkgd2lsbCByZXR1cm4gTm9uZSBvbiByZWNl
aXZpbmcKK2NsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UuIFdoZW4gYW55IGVycm9y
IG9jY3VycywgcmVjZWl2ZV9tZXNzYWdlKCkKK3dpbGwgcmFpc2Ugc29tZSBleGNlcHRpb24uCisK
K1lvdSBjYW4gc2VuZCBhIG1lc3NhZ2UgYnkgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQuCisKKyAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2FnZSkKKworCitDbG9zaW5nIENv
bm5lY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGVjdXRpbmcgdGhlIGZvbGxvd2luZyBz
dGF0ZW1lbnQgb3IganVzdCByZXR1cm4taW5nIGZyb20KK3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YSBjYXVzZSBjb25uZWN0aW9uIGNsb3NlLgorCisgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2Vf
Y29ubmVjdGlvbigpCisKK2Nsb3NlX2Nvbm5lY3Rpb24gd2lsbCB3YWl0Citmb3IgY2xvc2luZyBo
YW5kc2hha2UgYWNrbm93bGVkZ2VtZW50IGNvbWluZyBmcm9tIHRoZSBjbGllbnQuIFdoZW4gaXQK
K2NvdWxkbid0IHJlY2VpdmUgYSB2YWxpZCBhY2tub3dsZWRnZW1lbnQsIHJhaXNlcyBhbiBleGNl
cHRpb24uCisKK3dlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBpcyBjYWxsZWQg
YWZ0ZXIgdGhlIHNlcnZlciByZWNlaXZlcworaW5jb21pbmcgY2xvc2luZyBmcmFtZSBmcm9tIHRo
ZSBjbGllbnQgcGVlciBpbW1lZGlhdGVseS4gWW91IGNhbiBzcGVjaWZ5Citjb2RlIGFuZCByZWFz
b24gYnkgcmV0dXJuIHZhbHVlcy4gVGhleSBhcmUgc2VudCBhcyBhIG91dGdvaW5nIGNsb3Npbmcg
ZnJhbWUKK2Zyb20gdGhlIHNlcnZlci4gQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxvd2lu
ZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbgordXNlIGluIHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZS4KKy0gd3NfY2xvc2VfY29kZQorLSB3c19jbG9zZV9yZWFzb24KKworCitU
aHJlYWRpbmcKKy0tLS0tLS0tLQorCitBIFdlYlNvY2tldCBoYW5kbGVyIG11c3QgYmUgdGhyZWFk
LXNhZmUuIFRoZSBzdGFuZGFsb25lCitzZXJ2ZXIgdXNlcyB0aHJlYWRzIGJ5IGRlZmF1bHQuCisK
KworQ29uZmlndXJpbmcgV2ViU29ja2V0IEV4dGVuc2lvbiBQcm9jZXNzb3JzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VlIGV4dGVuc2lvbnMucHkgZm9y
IHN1cHBvcnRlZCBXZWJTb2NrZXQgZXh0ZW5zaW9ucy4gTm90ZSB0aGF0IHRoZXkgYXJlCit1bnN0
YWJsZSBhbmQgdGhlaXIgQVBJcyBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugc3Vic3RhbnRpYWxseS4K
KworQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlc2UgZXh0ZW5zaW9uIHByb2Nlc3NpbmcgcmVsYXRl
ZCBhdHRyaWJ1dGVzLgorCistIHdzX3JlcXVlc3RlZF9leHRlbnNpb25zOgorCisgIEEgbGlzdCBv
ZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3RhbmNlcyByZXByZXNlbnRpbmcgZXh0ZW5z
aW9uCisgIHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0aGUgY2xpZW50IGluIHRoZSBjbGllbnQn
cyBvcGVuaW5nIGhhbmRzaGFrZS4KKyAgWW91IHNob3VsZG4ndCBtb2RpZnkgaXQgbWFudWFsbHku
CisKKy0gd3NfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJzIHRvIHNl
bmQgYmFjayB0byB0aGUgY2xpZW50IGluIHRoZSBzZXJ2ZXIncyBvcGVuaW5nIGhhbmRzaGFrZS4K
KyAgWW91IHNob3VsZG4ndCB0b3VjaCBpdCBkaXJlY3RseS4gSW5zdGVhZCwgY2FsbCBtZXRob2Rz
IG9uIGV4dGVuc2lvbgorICBwcm9jZXNzb3JzLgorCistIHdzX2V4dGVuc2lvbl9wcm9jZXNzb3Jz
OgorCisgIEEgbGlzdCBvZiBsb2FkZWQgZXh0ZW5zaW9uIHByb2Nlc3NvcnMuIEZpbmQgdGhlIHBy
b2Nlc3NvciBmb3IgdGhlCisgIGV4dGVuc2lvbiB5b3Ugd2FudCB0byBjb25maWd1cmUgZnJvbSBp
dCwgYW5kIGNhbGwgaXRzIG1ldGhvZHMuCisiIiIKKworIyB2aTpzdHM9NCBzdz00IGV0IHR3PTcy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9l
eGNlcHRpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
ZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDc4NzhiYzRhMzc5YjVhZDhjNDIzYThlMzhkZjQw
NWE5NmNjYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdo
dCAyMDIwLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlN0cmVhbSBFeGNlcHRpb25zLgorIiIiCisKKyMgTm90ZTogcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCisj
IG1vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBp
biBjb25uZWN0aW9uCisjIGhhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVy
IG9wdGlvbnMuIEZvciBleGFtcGxlLAorIyByZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0
YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRlcworIyB3cml0aW5n
L3JlYWRpbmcuCisKKworIyBFeGNlcHRpb25zCitjbGFzcyBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2Vk
IHdoZW4gYSBjb25uZWN0aW9uIGlzIHRlcm1pbmF0ZWQKKyAgICB1bmV4cGVjdGVkbHkuCisgICAg
IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZEZyYW1lRXhjZXB0aW9uKENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIHdlIHJlY2VpdmVkIGFuIGludmFsaWQgZnJhbWUgd2UKKyAgICBjYW5ub3QgcGFy
c2UuCisgICAgIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
KEV4Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBz
ZW5kX21lc3NhZ2UoKSBpcyBjYWxsZWQgb24KKyAgICBzZXJ2ZXItdGVybWluYXRlZCBjb25uZWN0
aW9uIG9yIHJlY2VpdmVfbWVzc2FnZSgpIGlzIGNhbGxlZCBvbgorICAgIGNsaWVudC10ZXJtaW5h
dGVkIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW5zdXBwb3J0
ZWRGcmFtZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwg
YmUgcmFpc2VkIHdoZW4gd2UgcmVjZWl2ZSBhIGZyYW1lIHdpdGggZmxhZywgb3Bjb2RlCisgICAg
d2UgY2Fubm90IGhhbmRsZS4gSGFuZGxlcnMgY2FuIGp1c3QgY2F0Y2ggYW5kIGlnbm9yZSB0aGlz
IGV4Y2VwdGlvbiBhbmQKKyAgICBjYWxsIHJlY2VpdmVfbWVzc2FnZSgpIGFnYWluIHRvIGNvbnRp
bnVlIHByb2Nlc3NpbmcgdGhlIG5leHQgZnJhbWUuCisgICAgIiIiCisKKyAgICBwYXNzCisKKwor
Y2xhc3MgSW52YWxpZFVURjhFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2Vw
dGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSB0ZXh0IGZyYW1lIHdoaWNoCisg
ICAgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzdHJpbmdzLgorICAgICIiIgorCisgICAgcGFzcwor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L2NvbW1vbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNiMTFmMTVjYjJmNTgyZTZjMjllNjk4ZWU1ZmZmMmFm
ZGU4YTc2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9jb21tb24ucHkKQEAgLTAsMCArMSwyNzMgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhp
cyBmaWxlIG11c3Qgbm90IGRlcGVuZCBvbiBhbnkgbW9kdWxlIHNwZWNpZmljIHRvIHRoZSBXZWJT
b2NrZXQgcHJvdG9jb2wuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKyMg
QWRkaXRpb25hbCBsb2cgbGV2ZWwgZGVmaW5pdGlvbnMuCitMT0dMRVZFTF9GSU5FID0gOQorCisj
IENvbnN0YW50cyBpbmRpY2F0aW5nIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uLgorVkVSU0lP
Tl9IWUJJMTMgPSAxMworVkVSU0lPTl9IWUJJMTQgPSAxMworVkVSU0lPTl9IWUJJMTUgPSAxMwor
VkVSU0lPTl9IWUJJMTYgPSAxMworVkVSU0lPTl9IWUJJMTcgPSAxMworCisjIENvbnN0YW50cyBp
bmRpY2F0aW5nIFdlYlNvY2tldCBwcm90b2NvbCBsYXRlc3QgdmVyc2lvbi4KK1ZFUlNJT05fSFlC
SV9MQVRFU1QgPSBWRVJTSU9OX0hZQkkxMworCisjIFBvcnQgbnVtYmVycworREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQgPSA4MAorREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUID0gNDQzCisK
KyMgU2NoZW1lcworV0VCX1NPQ0tFVF9TQ0hFTUUgPSAnd3MnCitXRUJfU09DS0VUX1NFQ1VSRV9T
Q0hFTUUgPSAnd3NzJworCisjIEZyYW1lIG9wY29kZXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KK09Q
Q09ERV9DT05USU5VQVRJT04gPSAweDAKK09QQ09ERV9URVhUID0gMHgxCitPUENPREVfQklOQVJZ
ID0gMHgyCitPUENPREVfQ0xPU0UgPSAweDgKK09QQ09ERV9QSU5HID0gMHg5CitPUENPREVfUE9O
RyA9IDB4YQorCisjIFVVSUQgZm9yIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBhbmQgZnJhbWUgbWFz
a2luZy4KK1dFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9IGInMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0Et
QzVBQjBEQzg1QjExJworCisjIE9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlciBuYW1lcyBhbmQgZXhw
ZWN0ZWQgdmFsdWVzLgorVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZScKK1dFQlNPQ0tFVF9VUEdS
QURFX1RZUEUgPSAnd2Vic29ja2V0JworQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlvbicK
K1VQR1JBREVfQ09OTkVDVElPTl9UWVBFID0gJ1VwZ3JhZGUnCitIT1NUX0hFQURFUiA9ICdIb3N0
JworT1JJR0lOX0hFQURFUiA9ICdPcmlnaW4nCitTRUNfV0VCU09DS0VUX0tFWV9IRUFERVIgPSAn
U2VjLVdlYlNvY2tldC1LZXknCitTRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIgPSAnU2VjLVdl
YlNvY2tldC1BY2NlcHQnCitTRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtVmVyc2lvbicKK1NFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSID0gJ1NlYy1XZWJT
b2NrZXQtUHJvdG9jb2wnCitTRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSID0gJ1NlYy1X
ZWJTb2NrZXQtRXh0ZW5zaW9ucycKKworIyBFeHRlbnNpb25zCitQRVJNRVNTQUdFX0RFRkxBVEVf
RVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKKworIyBTdGF0dXMgY29kZXMKKyMgQ29k
ZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVELCBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSwgYW5k
CisjIFNUQVRVU19UTFNfSEFORFNIQUtFIGFyZSBwc2V1ZG8gY29kZXMgdG8gaW5kaWNhdGUgc3Bl
Y2lmaWMgZXJyb3IgY2FzZXMuCisjIENvdWxkIG5vdCBiZSB1c2VkIGZvciBjb2RlcyBpbiBhY3R1
YWwgY2xvc2luZyBmcmFtZXMuCisjIEFwcGxpY2F0aW9uIGxldmVsIGVycm9ycyBtdXN0IHVzZSBj
b2RlcyBpbiB0aGUgcmFuZ2UKKyMgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNUQVRV
U19VU0VSX1BSSVZBVEVfTUFYLiBUaGUgY29kZXMgaW4gdGhlCisjIHJhbmdlIFNUQVRVU19VU0VS
X1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCBhcmUgbWFuYWdl
ZAorIyBieSBJQU5BLiBVc3VhbGx5IGFwcGxpY2F0aW9uIG11c3QgZGVmaW5lIHVzZXIgcHJvdG9j
b2wgbGV2ZWwgZXJyb3JzIGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9QUklWQVRFX0JBU0Ug
dG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguCitTVEFUVVNfTk9STUFMX0NMT1NVUkUgPSAxMDAw
CitTVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKK1NUQVRVU19QUk9UT0NPTF9FUlJPUiA9IDEwMDIK
K1NUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMworU1RBVFVTX05PX1NUQVRVU19SRUNFSVZF
RCA9IDEwMDUKK1NUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgorU1RBVFVTX0lOVkFMSURf
RlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNworU1RBVFVTX1BPTElDWV9WSU9MQVRJT04gPSAxMDA4
CitTVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQorU1RBVFVTX01BTkRBVE9SWV9FWFRFTlNJ
T04gPSAxMDEwCitTVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IgPSAxMDExCitTVEFUVVNf
VExTX0hBTkRTSEFLRSA9IDEwMTUKK1NUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSA9IDMwMDAK
K1NUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYID0gMzk5OQorU1RBVFVTX1VTRVJfUFJJVkFURV9C
QVNFID0gNDAwMAorU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggPSA0OTk5CisjIEZvbGxvd2luZyBk
ZWZpbml0aW9ucyBhcmUgYWxpYXNlcyB0byBrZWVwIGNvbXBhdGliaWxpdHkuIEFwcGxpY2F0aW9u
cyBtdXN0CisjIG5vdCB1c2UgdGhlc2Ugb2Jzb2xldGVkIGRlZmluaXRpb25zIGFueW1vcmUuCitT
VEFUVVNfTk9STUFMID0gU1RBVFVTX05PUk1BTF9DTE9TVVJFCitTVEFUVVNfVU5TVVBQT1JURUQg
PSBTVEFUVVNfVU5TVVBQT1JURURfREFUQQorU1RBVFVTX0NPREVfTk9UX0FWQUlMQUJMRSA9IFNU
QVRVU19OT19TVEFUVVNfUkVDRUlWRUQKK1NUQVRVU19BQk5PUk1BTF9DTE9TRSA9IFNUQVRVU19B
Qk5PUk1BTF9DTE9TVVJFCitTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEID0gU1RBVFVTX0lO
VkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBCitTVEFUVVNfTUFOREFUT1JZX0VYVCA9IFNUQVRVU19N
QU5EQVRPUllfRVhURU5TSU9OCisKKyMgSFRUUCBzdGF0dXMgY29kZXMKK0hUVFBfU1RBVFVTX0JB
RF9SRVFVRVNUID0gNDAwCitIVFRQX1NUQVRVU19GT1JCSURERU4gPSA0MDMKK0hUVFBfU1RBVFVT
X05PVF9GT1VORCA9IDQwNAorCisKK2RlZiBpc19jb250cm9sX29wY29kZShvcGNvZGUpOgorICAg
IHJldHVybiAob3Bjb2RlID4+IDMpID09IDEKKworCitjbGFzcyBFeHRlbnNpb25QYXJhbWV0ZXIo
b2JqZWN0KToKKyAgICAiIiJUaGlzIGlzIGV4Y2hhbmdlZCBvbiBleHRlbnNpb24gbmVnb3RpYXRp
b24gaW4gb3BlbmluZyBoYW5kc2hha2UuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUp
OgorICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBD
aGFuZ2UgdGhlIGRhdGEgc3RydWN0dXJlIHRvIG1vcmUgZWZmaWNpZW50IG9uZSBzdWNoCisgICAg
ICAgICMgYXMgZGljdCB3aGVuIHRoZSBzcGVjIGNoYW5nZXMgdG8gc2F5IGxpa2UKKyAgICAgICAg
IyAtIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHVuaXF1ZQorICAgICAgICAjIC0gVGhlIG9yZGVy
IG9mIHBhcmFtZXRlcnMgaXMgbm90IHNpZ25pZmljYW50CisgICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMgPSBbXQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZXh0
ZW5zaW9uIG5hbWUuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgYWRk
X3BhcmFtZXRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkFkZCBhIHBhcmFtZXRl
ci4iIiIKKyAgICAgICAgc2VsZi5fcGFyYW1ldGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKKwor
ICAgIGRlZiBnZXRfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXJh
bWV0ZXJzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1ldGVycworCisgICAgZGVmIGdl
dF9wYXJhbWV0ZXJfbmFtZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmFtZXMgb2Yg
dGhlIHBhcmFtZXRlcnMuIiIiCisgICAgICAgIHJldHVybiBbbmFtZSBmb3IgbmFtZSwgdW51c2Vk
X3ZhbHVlIGluIHNlbGYuX3BhcmFtZXRlcnNdCisKKyAgICBkZWYgaGFzX3BhcmFtZXRlcihzZWxm
LCBuYW1lKToKKyAgICAgICAgIiIiVGVzdCBpZiBhIHBhcmFtZXRlciBleGlzdHMuIiIiCisgICAg
ICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgorICAg
ICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBuYW1lOgorICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGdldF9wYXJhbWV0ZXJfdmFsdWUo
c2VsZiwgbmFtZSk6CisgICAgICAgICIiIkdldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBwYXJh
bWV0ZXIuIiIiCisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9w
YXJhbWV0ZXJzOgorICAgICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBuYW1lOgorICAgICAgICAg
ICAgICAgIHJldHVybiBwYXJhbV92YWx1ZQorCisKK2NsYXNzIEV4dGVuc2lvblBhcnNpbmdFeGNl
cHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJFeGNlcHRpb24gdG8gaGFuZGxlIGVycm9ycyBpbiBl
eHRlbnNpb24gcGFyc2luZy4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAg
ICAgIHN1cGVyKEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUp
CisKKworZGVmIF9wYXJzZV9leHRlbnNpb25fcGFyYW0oc3RhdGUsIGRlZmluaXRpb24pOgorICAg
IHBhcmFtX25hbWUgPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisKKyAg
ICBpZiBwYXJhbV9uYW1lIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24oJ05vIHZhbGlkIHBhcmFtZXRlciBuYW1lIGZvdW5kJykKKworICAgIGh0dHBfaGVh
ZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIG5vdCBodHRwX2hlYWRlcl91
dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnPScpOgorICAgICAgICBkZWZpbml0aW9uLmFkZF9w
YXJhbWV0ZXIocGFyYW1fbmFtZSwgTm9uZSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBodHRwX2hl
YWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBB
ZGQgY29kZSB0byB2YWxpZGF0ZSB0aGF0IHBhcnNlZCBwYXJhbV92YWx1ZSBpcyB0b2tlbgorICAg
IHBhcmFtX3ZhbHVlID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuX29yX3F1b3RlZF9z
dHJpbmcoc3RhdGUpCisgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2Ug
RXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAgICAgICAgICdObyB2YWxpZCBwYXJhbWV0
ZXIgdmFsdWUgZm91bmQgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiAnCisgICAgICAgICAgICAn
cGFyYW1ldGVyICVyJyAlIHBhcmFtX25hbWUpCisKKyAgICBkZWZpbml0aW9uLmFkZF9wYXJhbWV0
ZXIocGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUpCisKKworZGVmIF9wYXJzZV9leHRlbnNpb24oc3Rh
dGUpOgorICAgIGV4dGVuc2lvbl90b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tl
bihzdGF0ZSkKKyAgICBpZiBleHRlbnNpb25fdG9rZW4gaXMgTm9uZToKKyAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihleHRlbnNpb25fdG9r
ZW4pCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
bHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9z
dHJpbmcoc3RhdGUsICc7Jyk6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGh0dHBfaGVh
ZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0YXRlLCBleHRlbnNpb24pCisgICAgICAgIGV4Y2Vw
dCBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZSBFeHRl
bnNpb25QYXJzaW5nRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2Ug
cGFyYW1ldGVyIGZvciAlciAoJXIpJyAlIChleHRlbnNpb25fdG9rZW4sIGUpKQorCisgICAgcmV0
dXJuIGV4dGVuc2lvbgorCisKK2RlZiBwYXJzZV9leHRlbnNpb25zKGRhdGEpOgorICAgICIiIlBh
cnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUuCisKKyAgICBSZXR1cm5z
IGEgbGlzdCBvZiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4KKyAgICBMZWFkaW5nIExXU2Vz
IG11c3QgYmUgdHJpbW1lZC4KKyAgICAiIiIKKyAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwu
UGFyc2luZ1N0YXRlKGRhdGEpCisKKyAgICBleHRlbnNpb25fbGlzdCA9IFtdCisgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgZXh0ZW5zaW9uID0gX3BhcnNlX2V4dGVuc2lvbihzdGF0ZSkKKyAgICAg
ICAgaWYgZXh0ZW5zaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX2xpc3Qu
YXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdz
ZXMoc3RhdGUpCisKKyAgICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBO
b25lOgorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToKKyAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCisgICAgICAgICAgICAgICAgJ0V4cGVjdGVk
IGEgY29tbWEgYnV0IGZvdW5kICVyJyAlIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCisK
KyAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgaWYg
bGVuKGV4dGVuc2lvbl9saXN0KSA9PSAwOgorICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5n
RXhjZXB0aW9uKCdObyB2YWxpZCBleHRlbnNpb24gZW50cnkgZm91bmQnKQorCisgICAgcmV0dXJu
IGV4dGVuc2lvbl9saXN0CisKKworZGVmIGZvcm1hdF9leHRlbnNpb24oZXh0ZW5zaW9uKToKKyAg
ICAiIiJGb3JtYXQgYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIG9iamVjdC4iIiIKKyAgICBmb3JtYXR0
ZWRfcGFyYW1zID0gW2V4dGVuc2lvbi5uYW1lKCldCisgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFt
X3ZhbHVlIGluIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVycygpOgorICAgICAgICBpZiBwYXJhbV92
YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgZm9ybWF0dGVkX3BhcmFtcy5hcHBlbmQocGFyYW1f
bmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHF1b3RlZF92YWx1ZSA9IGh0dHBfaGVh
ZGVyX3V0aWwucXVvdGVfaWZfbmVjZXNzYXJ5KHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgZm9y
bWF0dGVkX3BhcmFtcy5hcHBlbmQoJyVzPSVzJyAlIChwYXJhbV9uYW1lLCBxdW90ZWRfdmFsdWUp
KQorICAgIHJldHVybiAnOyAnLmpvaW4oZm9ybWF0dGVkX3BhcmFtcykKKworCitkZWYgZm9ybWF0
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uX2xpc3QpOgorICAgICIiIkZvcm1hdCBhIGxpc3Qgb2YgRXh0
ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMuIiIiCisgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0
ID0gW10KKyAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbl9saXN0OgorICAgICAgICBmb3Jt
YXR0ZWRfZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGZvcm1hdF9leHRlbnNpb24oZXh0ZW5zaW9uKSkK
KyAgICByZXR1cm4gJywgJy5qb2luKGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNw
YXRjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZWU5NDNhNWI4MGFmZGMwYmRhOTUzYWEyYTczMTk4Yjk5YTQ1
OWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2Rpc3BhdGNoLnB5CkBAIC0wLDAgKzEsMzg1IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkRpc3Bh
dGNoIFdlYlNvY2tldCByZXF1ZXN0LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9y
dCB0cmFjZWJhY2sKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IG1zZ3V0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKK19TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29t
cGlsZShyJyg/aSlfd3NoXC5weSQnKQorX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKK19ET19F
WFRSQV9IQU5EU0hBS0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlJworX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YScKK19QQVNTSVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKKyAgICAn
d2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlJykKKworCitjbGFzcyBEaXNwYXRj
aEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBX
ZWJTb2NrZXQgcmVxdWVzdC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc3RhdHVz
PWNvbW1vbi5IVFRQX1NUQVRVU19OT1RfRk9VTkQpOgorICAgICAgICBzdXBlcihEaXNwYXRjaEV4
Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKKyAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0
dXMKKworCitkZWYgX2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyKHJl
cXVlc3QpOgorICAgICIiIkRlZmF1bHQgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNo
YWtlIGhhbmRsZXIuIiIiCisKKyAgICByZXR1cm4gY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VS
RSwgJycKKworCitkZWYgX25vcm1hbGl6ZV9wYXRoKHBhdGgpOgorICAgICIiIk5vcm1hbGl6ZSBw
YXRoLgorCisgICAgQXJnczoKKyAgICAgICAgcGF0aDogdGhlIHBhdGggdG8gbm9ybWFsaXplLgor
CisgICAgUGF0aCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGFic29sdXRlIHBhdGguCisgICAgVGhlIGlu
cHV0IHBhdGggY2FuIHVzZSBlaXRoZXIgJ1xcJyBvciAnLycgYXMgdGhlIHNlcGFyYXRvci4KKyAg
ICBUaGUgbm9ybWFsaXplZCBwYXRoIGFsd2F5cyB1c2VzICcvJyByZWdhcmRsZXNzIG9mIHRoZSBw
bGF0Zm9ybS4KKyAgICAiIiIKKworICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ1xcJywgb3MucGF0
aC5zZXApCisgICAgcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgocGF0aCkKKyAgICBwYXRoID0gcGF0
aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICByZXR1cm4gcGF0aAorCisKK2RlZiBfY3JlYXRlX3Bh
dGhfdG9fcmVzb3VyY2VfY29udmVydGVyKGJhc2VfZGlyKToKKyAgICAiIiJSZXR1cm5zIGEgZnVu
Y3Rpb24gdGhhdCBjb252ZXJ0cyB0aGUgcGF0aCBvZiBhIFdlYlNvY2tldCBoYW5kbGVyIHNvdXJj
ZQorICAgIGZpbGUgdG8gYSByZXNvdXJjZSBzdHJpbmcgYnkgcmVtb3ZpbmcgdGhlIHBhdGggdG8g
dGhlIGJhc2UgZGlyZWN0b3J5IGZyb20KKyAgICBpdHMgaGVhZCwgcmVtb3ZpbmcgX1NPVVJDRV9T
VUZGSVggZnJvbSBpdHMgdGFpbCwgYW5kIHJlcGxhY2luZyBwYXRoCisgICAgc2VwYXJhdG9ycyBp
biBpdCB3aXRoICcvJy4KKworICAgIEFyZ3M6CisgICAgICAgIGJhc2VfZGlyOiB0aGUgcGF0aCB0
byB0aGUgYmFzZSBkaXJlY3RvcnkuCisgICAgIiIiCisKKyAgICBiYXNlX2RpciA9IF9ub3JtYWxp
emVfcGF0aChiYXNlX2RpcikKKworICAgIGJhc2VfbGVuID0gbGVuKGJhc2VfZGlyKQorICAgIHN1
ZmZpeF9sZW4gPSBsZW4oX1NPVVJDRV9TVUZGSVgpCisKKyAgICBkZWYgY29udmVydGVyKHBhdGgp
OgorICAgICAgICBpZiBub3QgcGF0aC5lbmRzd2l0aChfU09VUkNFX1NVRkZJWCk6CisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIF9ub3JtYWxpemVfcGF0aCBtdXN0IG5vdCBiZSB1
c2VkIGJlY2F1c2UgcmVzb2x2aW5nIHN5bWxpbmsgYnJlYWtzCisgICAgICAgICMgZm9sbG93aW5n
IHBhdGggY2hlY2suCisgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ1xcJywgJy8nKQorICAg
ICAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRoKGJhc2VfZGlyKToKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisgICAgICAgIHJldHVybiBwYXRoW2Jhc2VfbGVuOi1zdWZmaXhfbGVuXQorCisgICAg
cmV0dXJuIGNvbnZlcnRlcgorCisKK2RlZiBfZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRocyhk
aXJlY3RvcnkpOgorICAgICIiIlJldHVybnMgYSBnZW5lcmF0b3IgdGhhdCBlbnVtZXJhdGVzIFdl
YlNvY2tldCBIYW5kbGVyIHNvdXJjZSBmaWxlIG5hbWVzCisgICAgaW4gdGhlIGdpdmVuIGRpcmVj
dG9yeS4KKyAgICAiIiIKKworICAgIGZvciByb290LCB1bnVzZWRfZGlycywgZmlsZXMgaW4gb3Mu
d2FsayhkaXJlY3RvcnkpOgorICAgICAgICBmb3IgYmFzZSBpbiBmaWxlczoKKyAgICAgICAgICAg
IHBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgYmFzZSkKKyAgICAgICAgICAgIGlmIF9TT1VSQ0Vf
UEFUSF9QQVRURVJOLnNlYXJjaChwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRoCisK
KworY2xhc3MgX0hhbmRsZXJTdWl0ZShvYmplY3QpOgorICAgICIiIkEgaGFuZGxlciBzdWl0ZSBo
b2xkZXIgY2xhc3MuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvX2V4dHJhX2hhbmRzaGFr
ZSwgdHJhbnNmZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRz
aGFrZSk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlID0gZG9fZXh0cmFfaGFuZHNo
YWtlCisgICAgICAgIHNlbGYudHJhbnNmZXJfZGF0YSA9IHRyYW5zZmVyX2RhdGEKKyAgICAgICAg
c2VsZi5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlID0gcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZQorCisKK2RlZiBfc291cmNlX2hhbmRsZXJfZmlsZShoYW5kbGVyX2RlZmluaXRpb24pOgorICAg
ICIiIlNvdXJjZSBhIGhhbmRsZXIgZGVmaW5pdGlvbiBzdHJpbmcuCisKKyAgICBBcmdzOgorICAg
ICAgICBoYW5kbGVyX2RlZmluaXRpb246IGEgc3RyaW5nIGNvbnRhaW5pbmcgUHl0aG9uIHN0YXRl
bWVudHMgdGhhdCBkZWZpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGZ1
bmN0aW9ucy4KKyAgICAiIiIKKworICAgIGdsb2JhbF9kaWMgPSB7fQorICAgIHRyeToKKyAgICAg
ICAgIyBUaGlzIHN0YXRlbWVudCBpcyBncmFtYXRpY2FsbHkgZGlmZmVyZW50IGluIHB5dGhvbiAy
IGFuZCAzLgorICAgICAgICAjIEhlbmNlLCB5YXBmIHdpbGwgY29tcGxhaW4gYWJvdXQgdGhpcy4g
VG8gb3ZlcmNvbWUgdGhpcywgd2UgZGlzYWJsZQorICAgICAgICAjIHlhcGYgZm9yIHRoaXMgbGlu
ZS4KKyAgICAgICAgZXhlYyhoYW5kbGVyX2RlZmluaXRpb24sIGdsb2JhbF9kaWMpICMgeWFwZjog
ZGlzYWJsZQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJhaXNlIERpc3BhdGNoRXhj
ZXB0aW9uKCdFcnJvciBpbiBzb3VyY2luZyBoYW5kbGVyOicgKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgIHBhc3NpdmVfY2xvc2lu
Z19oYW5kc2hha2VfaGFuZGxlciA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIHBhc3NpdmVfY2xv
c2luZ19oYW5kc2hha2VfaGFuZGxlciA9IF9leHRyYWN0X2hhbmRsZXIoCisgICAgICAgICAgICBn
bG9iYWxfZGljLCBfUEFTU0lWRV9DTE9TSU5HX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpCisgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5k
bGVyID0gKAorICAgICAgICAgICAgX2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9o
YW5kbGVyKQorICAgIHJldHVybiBfSGFuZGxlclN1aXRlKAorICAgICAgICBfZXh0cmFjdF9oYW5k
bGVyKGdsb2JhbF9kaWMsIF9ET19FWFRSQV9IQU5EU0hBS0VfSEFORExFUl9OQU1FKSwKKyAgICAg
ICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfVFJBTlNGRVJfREFUQV9IQU5ETEVSX05B
TUUpLAorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIpCisKKworZGVm
IF9leHRyYWN0X2hhbmRsZXIoZGljLCBuYW1lKToKKyAgICAiIiJFeHRyYWN0cyBhIGNhbGxhYmxl
IHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIGdpdmVuIGRpY3Rpb25hcnkKKyAgICBk
aWMuCisgICAgIiIiCisKKyAgICBpZiBuYW1lIG5vdCBpbiBkaWM6CisgICAgICAgIHJhaXNlIERp
c3BhdGNoRXhjZXB0aW9uKCclcyBpcyBub3QgZGVmaW5lZC4nICUgbmFtZSkKKyAgICBoYW5kbGVy
ID0gZGljW25hbWVdCisgICAgaWYgbm90IGNhbGxhYmxlKGhhbmRsZXIpOgorICAgICAgICByYWlz
ZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGNhbGxhYmxlLicgJSBuYW1lKQorICAgIHJl
dHVybiBoYW5kbGVyCisKKworY2xhc3MgRGlzcGF0Y2hlcihvYmplY3QpOgorICAgICIiIkRpc3Bh
dGNoZXMgV2ViU29ja2V0IHJlcXVlc3RzLgorCisgICAgVGhpcyBjbGFzcyBtYWludGFpbnMgYSBt
YXAgZnJvbSByZXNvdXJjZSBuYW1lIHRvIGhhbmRsZXJzLgorICAgICIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICByb290X2RpciwKKyAgICAgICAgICAgICAgICAg
c2Nhbl9kaXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9y
b290X2Rpcj1UcnVlKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgICByb290X2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBoYW5k
bGVyIGRlZmluaXRpb24gZmlsZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgcGxhY2VkLgor
ICAgICAgICAgICAgc2Nhbl9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0
aW9uIGZpbGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVkLiBzY2FuX2RpciBt
dXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIHJvb3RfZGlyLAorICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGluZyByb290X2RpciBpdHNlbGYuICBJZiBzY2FuX2RpciBpcyBOb25lLAorICAgICAg
ICAgICAgICAgICAgICAgIHJvb3RfZGlyIGlzIHVzZWQgYXMgc2Nhbl9kaXIuIHNjYW5fZGlyIGNh
biBiZSB1c2VmdWwKKyAgICAgICAgICAgICAgICAgICAgICBpbiBzYXZpbmcgc2NhbiB0aW1lIHdo
ZW4gcm9vdF9kaXIgY29udGFpbnMgbWFueQorICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVj
dG9yaWVzLgorICAgICAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcjogU2Nh
bnMgaGFuZGxlciBmaWxlcyBldmVuIGlmIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgY2Fu
b25pY2FsIHBhdGggaXMgbm90IHVuZGVyIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBz
ZWxmLl9oYW5kbGVyX3N1aXRlX21hcCA9IHt9CisgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5n
cyA9IFtdCisgICAgICAgIGlmIHNjYW5fZGlyIGlzIE5vbmU6CisgICAgICAgICAgICBzY2FuX2Rp
ciA9IHJvb3RfZGlyCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKS5z
dGFydHN3aXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgocm9vdF9kaXIpKToK
KyAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdzY2FuX2RpcjolcyBtdXN0IGJl
IGEgZGlyZWN0b3J5IHVuZGVyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdyb290X2Rpcjolcy4nICUgKHNjYW5fZGlyLCByb290X2RpcikpCisgICAgICAgIHNlbGYuX3Nv
dXJjZV9oYW5kbGVyX2ZpbGVzX2luX2Rpcihyb290X2Rpciwgc2Nhbl9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jv
b3RfZGlyKQorCisgICAgZGVmIGFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYsIGFsaWFzX3Jl
c291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nX3Jl
c291cmNlX3BhdGgpOgorICAgICAgICAiIiJBZGQgcmVzb3VyY2UgcGF0aCBhbGlhcy4KKworICAg
ICAgICBPbmNlIGFkZGVkLCByZXF1ZXN0IHRvIGFsaWFzX3Jlc291cmNlX3BhdGggd291bGQgYmUg
aGFuZGxlZCBieQorICAgICAgICBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIGV4aXN0aW5nX3Jlc291
cmNlX3BhdGguCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFsaWFzX3Jlc291cmNlX3Bh
dGg6IGFsaWFzIHJlc291cmNlIHBhdGgKKyAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3Bh
dGg6IGV4aXN0aW5nIHJlc291cmNlIHBhdGgKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFtleGlzdGlu
Z19yZXNvdXJjZV9wYXRoXQorICAgICAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbYWxp
YXNfcmVzb3VyY2VfcGF0aF0gPSBoYW5kbGVyX3N1aXRlCisgICAgICAgIGV4Y2VwdCBLZXlFcnJv
cjoKKyAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjog
JXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291
cmNlX3BhdGgpCisKKyAgICBkZWYgc291cmNlX3dhcm5pbmdzKHNlbGYpOgorICAgICAgICAiIiJS
ZXR1cm4gd2FybmluZ3MgaW4gc291cmNpbmcgaGFuZGxlcnMuIiIiCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3NvdXJjZV93YXJuaW5ncworCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxm
LCByZXF1ZXN0KToKKyAgICAgICAgIiIiRG8gZXh0cmEgY2hlY2tpbmcgaW4gV2ViU29ja2V0IGhh
bmRzaGFrZS4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3QudXJp
IGFuZCBjYWxsIGl0cworICAgICAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBmdW5j
dGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIERpc3BhdGNoRXhjZXB0aW9u
OiB3aGVuIGhhbmRsZXIgd2FzIG5vdCBmb3VuZAorICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbjogd2hlbiB1c2VyIGhhbmRsZXIgYWJvcnQgY29ubmVjdGlvbgorICAgICAgICAgICAg
SGFuZHNoYWtlRXhjZXB0aW9uOiB3aGVuIG9wZW5pbmcgaGFuZHNoYWtlIGZhaWxlZAorICAgICAg
ICAiIiIKKworICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShy
ZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6Cisg
ICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAl
IHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8gPSBoYW5k
bGVyX3N1aXRlLmRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBk
b19leHRyYV9oYW5kc2hha2VfKHJlcXVlc3QpCisgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgIyBSZS1yYWlzZSB0byB0ZWxs
IHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2ggdGhpcworICAgICAgICAgICAg
IyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3IuCisgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJyVzJywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgICAg
IHJhaXNlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwu
cHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnJXMgcmFpc2Vk
IGV4Y2VwdGlvbiBmb3IgJXM6ICcgJQorICAgICAgICAgICAgICAgIChfRE9fRVhUUkFfSEFORFNI
QUtFX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUpCisgICAgICAgICAgICBy
YWlzZSBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uKGUsIGNvbW1vbi5IVFRQX1NUQVRVU19G
T1JCSURERU4pCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCByZXF1ZXN0KToKKyAgICAg
ICAgIiIiTGV0IGEgaGFuZGxlciB0cmFuc2Zlcl9kYXRhIHdpdGggYSBXZWJTb2NrZXQgY2xpZW50
LgorCisgICAgICAgIFNlbGVjdCBhIGhhbmRsZXIgYmFzZWQgb24gcmVxdWVzdC53c19yZXNvdXJj
ZSBhbmQgY2FsbCBpdHMKKyAgICAgICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGZ1bmN0aW9u
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVl
c3QuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgRGlzcGF0Y2hFeGNlcHRpb246IHdo
ZW4gaGFuZGxlciB3YXMgbm90IGZvdW5kCisgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0
aW9uOiB3aGVuIHVzZXIgaGFuZGxlciBhYm9ydCBjb25uZWN0aW9uCisgICAgICAgICIiIgorCisg
ICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFRlcm1pbmF0ZSB1bmRlcmx5aW5nIFRDUCBjb25uZWN0
aW9uIGlmIHBvc3NpYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyX3N1aXRl
ID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAgICAg
ICAgaWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIERpc3Bh
dGNoRXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjogJXInICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAgICAgICAgdHJh
bnNmZXJfZGF0YV8gPSBoYW5kbGVyX3N1aXRlLnRyYW5zZmVyX2RhdGEKKyAgICAgICAgICAgIHRy
YW5zZmVyX2RhdGFfKHJlcXVlc3QpCisKKyAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZl
cl90ZXJtaW5hdGVkOgorICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nv
bm5lY3Rpb24oKQorICAgICAgICAjIENhdGNoIG5vbi1jcml0aWNhbCBleGNlcHRpb25zIHRoZSBo
YW5kbGVyIGRpZG4ndCBoYW5kbGUuCisgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycs
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNl
cHQgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xv
c2VfY29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VO
RFBPSU5UX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICMgSW52YWxpZEZyYW1lRXhjZXB0aW9uIG11c3QgYmUgY2F1
Z2h0IGJlZm9yZQorICAgICAgICAgICAgIyBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbiB0
aGF0IGNhdGNoZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgorICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCclcycsIGUpCisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfUFJPVE9DT0xfRVJST1IpCisgICAgICAgIGV4Y2VwdCBt
c2d1dGlsLlVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xv
c2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEpCisgICAgICAgIGV4
Y2VwdCBzdHJlYW0uSW52YWxpZFVURjhFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xv
c2VfY29ubmVjdGlvbigKKyAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX0lOVkFMSURfRlJB
TUVfUEFZTE9BRF9EQVRBKQorICAgICAgICBleGNlcHQgbXNndXRpbC5Db25uZWN0aW9uVGVybWlu
YXRlZEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycs
IGUpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICMgQW55IG90
aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHRoaXMKKyAgICAg
ICAgICAgICMgZnVuY3Rpb24uCisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19l
eGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAn
ICUKKyAgICAgICAgICAgICAgICAoX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FLCByZXF1ZXN0
LndzX3Jlc291cmNlKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgcGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiUHJlcGFyZSBjb2Rl
IGFuZCByZWFzb24gZm9yIHJlc3BvbmRpbmcgY2xpZW50IGluaXRpYXRlZCBjbG9zaW5nCisgICAg
ICAgIGhhbmRzaGFrZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNl
bGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgaWYgaGFu
ZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KQorICAgICAgICByZXR1cm4gaGFuZGxl
cl9zdWl0ZS5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKKyAgICBkZWYgZ2V0
X2hhbmRsZXJfc3VpdGUoc2VsZiwgcmVzb3VyY2UpOgorICAgICAgICAiIiJSZXRyaWV2ZXMgdHdv
IGhhbmRsZXJzIChvbmUgZm9yIGV4dHJhIGhhbmRzaGFrZSBwcm9jZXNzaW5nLCBhbmQgb25lCisg
ICAgICAgIGZvciBkYXRhIHRyYW5zZmVyKSBmb3IgdGhlIGdpdmVuIHJlcXVlc3QgYXMgYSBIYW5k
bGVyU3VpdGUgb2JqZWN0LgorICAgICAgICAiIiIKKworICAgICAgICBmcmFnbWVudCA9IE5vbmUK
KyAgICAgICAgaWYgJyMnIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVzb3VyY2UsIGZyYWdt
ZW50ID0gcmVzb3VyY2Uuc3BsaXQoJyMnLCAxKQorICAgICAgICBpZiAnPycgaW4gcmVzb3VyY2U6
CisgICAgICAgICAgICByZXNvdXJjZSA9IHJlc291cmNlLnNwbGl0KCc/JywgMSlbMF0KKyAgICAg
ICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwLmdldChyZXNvdXJjZSkK
KyAgICAgICAgaWYgaGFuZGxlcl9zdWl0ZSBhbmQgZnJhZ21lbnQ6CisgICAgICAgICAgICByYWlz
ZSBEaXNwYXRjaEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRnJhZ21lbnQgaWRlbnRpZmll
cnMgTVVTVCBOT1QgYmUgdXNlZCBvbiBXZWJTb2NrZXQgVVJJcycsCisgICAgICAgICAgICAgICAg
Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQorICAgICAgICByZXR1cm4gaGFuZGxlcl9z
dWl0ZQorCisgICAgZGVmIF9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIoc2VsZiwgcm9vdF9k
aXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpOgorICAgICAgICAiIiJTb3VyY2UgYWxsIHRoZSBo
YW5kbGVyIHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgorCisgICAgICAg
IFRoZSByZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9kaXIuCisg
ICAgICAgICIiIgorCisgICAgICAgICMgV2UgYnVpbGQgYSBtYXAgZnJvbSByZXNvdXJjZSB0byBo
YW5kbGVyIGNvZGUgYXNzdW1pbmcgdGhhdCB0aGVyZSdzCisgICAgICAgICMgb25seSBvbmUgcGF0
aCBmcm9tIHJvb3RfZGlyIHRvIHNjYW5fZGlyIGFuZCBpdCBjYW4gYmUgb2J0YWluZWQgYnkKKyAg
ICAgICAgIyBjb21wYXJpbmcgcmVhbHBhdGggb2YgdGhlbS4KKworICAgICAgICAjIEhlcmUgd2Ug
Y2Fubm90IHVzZSBhYnNwYXRoLiBTZWUKKyAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MDMKKworICAgICAgICBjb252ZXJ0ID0gX2NyZWF0ZV9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcihyb290X2RpcikKKyAgICAgICAgc2Nhbl9yZWFscGF0aCA9
IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpCisgICAgICAgIHJvb3RfcmVhbHBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKHJvb3RfZGlyKQorICAgICAgICBmb3IgcGF0aCBpbiBfZW51bWVyYXRlX2hh
bmRsZXJfZmlsZV9wYXRocyhzY2FuX3JlYWxwYXRoKToKKyAgICAgICAgICAgIGlmIChub3QgYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBhbmQKKyAgICAgICAgICAgICAgICAobm90IG9z
LnBhdGgucmVhbHBhdGgocGF0aCkuc3RhcnRzd2l0aChyb290X3JlYWxwYXRoKSkpOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ0Nhbm9u
aWNhbCBwYXRoIG9mICVzIGlzIG5vdCB1bmRlciByb290IGRpcmVjdG9yeScgJSBwYXRoKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
d2l0aCBvcGVuKHBhdGgpIGFzIGhhbmRsZXJfZmlsZToKKyAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlcl9zdWl0ZSA9IF9zb3VyY2VfaGFuZGxlcl9maWxlKGhhbmRsZXJfZmlsZS5yZWFkKCkpCisg
ICAgICAgICAgICBleGNlcHQgRGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAg
ICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MuYXBwZW5kKCclczogJXMnICUgKHBhdGgsIGUpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXNvdXJjZSA9IGNvbnZlcnQocGF0
aCkKKyAgICAgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdQYXRoIHRvIHJlc291cmNlIGNvbnZlcnNpb24gb24gJXMgZmFpbGVk
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2NvbnZlcnQo
cGF0aCldID0gaGFuZGxlcl9zdWl0ZQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NDQ1MzlmNmZjZTE0YmVlNjVkN2ZhN2E1ODNhY2JiNjVmMDIzYWZmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKQEAgLTAs
MCArMSw0NzMgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmh0dHBfaGVh
ZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25lY2Vzc2FyeQorCisjIFRoZSBsaXN0IG9mIGF2YWls
YWJsZSBzZXJ2ZXIgc2lkZSBleHRlbnNpb24gcHJvY2Vzc29yIGNsYXNzZXMuCitfYXZhaWxhYmxl
X3Byb2Nlc3NvcnMgPSB7fQorCisKK2NsYXNzIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZShv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fcmVx
dWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQorCisgICAgZGVmIHJl
cXVlc3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0CisKKyAgICBkZWYgbmFt
ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjaGVja19jb25zaXN0ZW5j
eV93aXRoX290aGVyX3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBzZXRfYWN0aXZlKHNlbGYsIGFjdGl2ZSk6CisgICAgICAgIHNlbGYuX2FjdGl2
ZSA9IGFjdGl2ZQorCisgICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2FjdGl2ZQorCisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNl
bGYpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9u
c2Uoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6CisgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcsIHNlbGYubmFtZSgp
KQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICByZXNwb25zZSA9IHNlbGYuX2dl
dF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoKQorICAgICAgICBpZiByZXNwb25zZSBpcyBO
b25lOgorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHJl
c3BvbnNlCisKKyAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0
cmVhbV9vcHRpb25zKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRp
b25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKKyAgICAgICAgaWYgc2VsZi5fYWN0aXZlOgorICAg
ICAgICAgICAgc2VsZi5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc3RyZWFtX29wdGlv
bnMpCisKKworZGVmIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8obG9nZ2VyLCBvcmln
aW5hbF9ieXRlcywgZmlsdGVyZWRfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdmVyYWdlX3JhdGlvKToKKyAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5v
dCBhdmFpbGFibGUuCisgICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKKyAgICBpZiBvcmlnaW5hbF9i
eXRlcyAhPSAwOgorICAgICAgICByYXRpbyA9IGZsb2F0KGZpbHRlcmVkX2J5dGVzKSAvIG9yaWdp
bmFsX2J5dGVzCisKKyAgICBsb2dnZXIuZGVidWcoJ091dGdvaW5nIGNvbXByZXNzaW9uIHJhdGlv
OiAlZiAoYXZlcmFnZTogJWYpJyAlCisgICAgICAgICAgICAgICAgIChyYXRpbywgYXZlcmFnZV9y
YXRpbykpCisKKworZGVmIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8obG9nZ2VyLCBy
ZWNlaXZlZF9ieXRlcywgZmlsdGVyZWRfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdmVyYWdlX3JhdGlvKToKKyAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlz
IG5vdCBhdmFpbGFibGUuCisgICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKKyAgICBpZiBmaWx0ZXJl
ZF9ieXRlcyAhPSAwOgorICAgICAgICByYXRpbyA9IGZsb2F0KHJlY2VpdmVkX2J5dGVzKSAvIGZp
bHRlcmVkX2J5dGVzCisKKyAgICBsb2dnZXIuZGVidWcoJ0luY29taW5nIGNvbXByZXNzaW9uIHJh
dGlvOiAlZiAoYXZlcmFnZTogJWYpJyAlCisgICAgICAgICAgICAgICAgIChyYXRpbywgYXZlcmFn
ZV9yYXRpbykpCisKKworZGVmIF9wYXJzZV93aW5kb3dfYml0cyhiaXRzKToKKyAgICAiIiJSZXR1
cm4gcGFyc2VkIGludGVnZXIgdmFsdWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgY29uZm9ybXMgdG8g
dGhlCisgICAgZ3JhbW1hciBvZiB0aGUgd2luZG93IGJpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlcnMu
CisgICAgIiIiCisKKyAgICBpZiBiaXRzIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ1ZhbHVlIGlzIHJlcXVpcmVkJykKKworICAgICMgRm9yIG5vbiBpbnRlZ2VyIHZhbHVlcyBz
dWNoIGFzICIxMC4wIiwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4KKyAgICBpbnRfYml0cyA9
IGludChiaXRzKQorCisgICAgIyBGaXJzdCBjb25kaXRpb24gaXMgdG8gZHJvcCBsZWFkaW5nIHpl
cm8gY2FzZSBlLmcuICIwOCIuCisgICAgaWYgYml0cyAhPSBzdHIoaW50X2JpdHMpIG9yIGludF9i
aXRzIDwgOCBvciBpbnRfYml0cyA+IDE1OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZh
bGlkIHZhbHVlOiAlcicgJSBiaXRzKQorCisgICAgcmV0dXJuIGludF9iaXRzCisKKworY2xhc3Mg
X0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3Iob2JqZWN0KToKKyAgICAiIiJTdG9yZXMgdG90YWwgYnl0
ZXMgb2Ygb3JpZ2luYWwgYW5kIHJlc3VsdCBkYXRhLCBhbmQgY2FsY3VsYXRlcyBhdmVyYWdlCisg
ICAgcmVzdWx0IC8gb3JpZ2luYWwgcmF0aW8uCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyA9IDAKKyAgICAgICAgc2Vs
Zi5fdG90YWxfcmVzdWx0X2J5dGVzID0gMAorCisgICAgZGVmIGFkZF9vcmlnaW5hbF9ieXRlcyhz
ZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzICs9IHZhbHVl
CisKKyAgICBkZWYgYWRkX3Jlc3VsdF9ieXRlcyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYu
X3RvdGFsX3Jlc3VsdF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGdldF9hdmVyYWdlX3JhdGlv
KHNlbGYpOgorICAgICAgICBpZiBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgorICAg
ICAgICAgICAgcmV0dXJuIChmbG9hdChzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMpIC8KKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByZXR1cm4gZmxvYXQoJ2luZicpCisKKworY2xhc3MgUGVyTWVzc2FnZURl
ZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKKyAg
ICAiIiJwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KKworICAgIFNwZWNp
ZmljYXRpb246CisgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJp
LXBlcm1lc3NhZ2UtY29tcHJlc3Npb24tMDgKKyAgICAiIiIKKworICAgIF9TRVJWRVJfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNID0gJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnCisgICAgX1NFUlZFUl9O
T19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJwor
ICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNID0gJ2NsaWVudF9tYXhfd2luZG93X2Jp
dHMnCisgICAgX0NMSUVOVF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ2NsaWVudF9ub19j
b250ZXh0X3Rha2VvdmVyJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAg
ICAgICAiIiJDb25zdHJ1Y3QgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuIiIi
CisKKyAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5pdF9fKHNlbGYsIHJl
cXVlc3QpCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxm
KQorCisgICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gTm9u
ZQorICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCisKKyAg
ICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgIyBUaGlzIG1ldGhvZCByZXR1cm5zICJkZWZsYXRl
IiAobm90ICJwZXJtZXNzYWdlLWRlZmxhdGUiKSBmb3IKKyAgICAgICAgIyBjb21wYXRpYmlsaXR5
LgorICAgICAgICByZXR1cm4gJ2RlZmxhdGUnCisKKyAgICBkZWYgX2dldF9leHRlbnNpb25fcmVz
cG9uc2VfaW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuX3JlcXVlc3Qu
Z2V0X3BhcmFtZXRlcl9uYW1lcygpOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gWworICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTQor
ICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Vua25v
d24gcGFyYW1ldGVyOiAlcicsIG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSk6
CisgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRf
cGFyYW1ldGVyX3ZhbHVlKAorICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9NQVhfV0lORE9X
X0JJVFNfUEFSQU0pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VydmVyX21h
eF93aW5kb3dfYml0cyA9IF9wYXJzZV93aW5kb3dfYml0cygKKyAgICAgICAgICAgICAgICAgICAg
c2VydmVyX21heF93aW5kb3dfYml0cykKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFz
IGU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdCYWQgJXMgcGFyYW1ldGVy
OiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9N
QVhfV0lORE9XX0JJVFNfUEFSQU0sIGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IHNlbGYuX3JlcXVlc3QuaGFzX3Bh
cmFtZXRlcigKKyAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BB
UkFNKQorICAgICAgICBpZiAoc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgYW5kIHNlbGYuX3Jl
cXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJf
Tk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlOiAlcics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRf
VEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMg
Y2xpZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgY2xpZW50IGluZGljYXRlcyB3aGV0aGVyIHRo
ZSBjbGllbnQgY2FuCisgICAgICAgICMgYWNjZXB0IGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJv
bSBhIHNlcnZlciBvciBub3QuCisgICAgICAgIGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
ID0gc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKAorICAgICAgICAgICAgc2VsZi5fQ0xJRU5U
X01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgaWYgKGNsaWVudF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzCisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRl
cl92YWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklU
U19QQVJBTSkgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAor
ICAgICAgICAgICAgICAgICclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEg
JworICAgICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAg
ICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAg
ICAgICAgICAgIGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKQorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZDMTk3
OURlZmxhdGVyKAorICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgcHJlcGFyZSBmb3Ig
aW5jb21pbmcgbWVzc2FnZXMgY29tcHJlc3NlZCB3aXRoIHdpbmRvdworICAgICAgICAjIGJpdHMg
dXB0byAxNSByZWdhcmRsZXNzIG9mIHRoZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIHZhbHVlIHRv
IGJlCisgICAgICAgICMgc2VudCB0byB0aGUgY2xpZW50LgorICAgICAgICBzZWxmLl9yZmMxOTc5
X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKKworICAgICAgICBzZWxmLl9mcmFt
ZXIgPSBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIoc2VydmVyX21heF93aW5kb3dfYml0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyKQorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2JmaW5hbChGYWxzZSkK
KyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUp
CisKKyAgICAgICAgcmVzcG9uc2UgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKHNlbGYuX3Jl
cXVlc3QubmFtZSgpKQorCisgICAgICAgIGlmIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9N
QVhfV0lORE9XX0JJVFNfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cihzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKSkKKworICAgICAgICBpZiBzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoc2VsZi5f
U0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vbmUpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9t
YXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBub3QgY2xpZW50X2Ns
aWVudF9tYXhfd2luZG93X2JpdHM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAorICAgICAgICAgICAgICAgICAgICAnUHJvY2Vzc29yIGlzIGNvbmZpZ3VyZWQgdG8gdXNlICVz
IGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICd0aGUgY2xpZW50IGNhbm5vdCBhY2NlcHQgaXQn
LAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFN
KQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICByZXNwb25zZS5hZGRf
cGFyYW1ldGVyKHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93
aW5kb3dfYml0cykpCisKKyAgICAgICAgaWYgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXI6CisgICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX0NMSUVOVF9OT19D
T05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRW5hYmxlICVzIGV4dGVuc2lv
biAoJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2lu
ZG93X2JpdHM9JXM7ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3Zlcj0lciwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3BvbnNl
OiBjbGllbnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXI9JXIpJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCksIHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2lu
ZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIpKQorCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIF9z
ZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAg
ICAgIHNlbGYuX2ZyYW1lci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9ucykKKwor
ICAgIGRlZiBzZXRfY2xpZW50X21heF93aW5kb3dfYml0cyhzZWxmLCB2YWx1ZSk6CisgICAgICAg
ICIiIklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAg
ICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhh
bmRzaGFrZSByZXNwb25zZSwKKyAgICAgICAgYnV0IGRvZXNuJ3QgcmVkdWNlIHRoZSBMWjc3IHNs
aWRpbmcgd2luZG93IHNpemUgb2YgaXRzIGluZmxhdGVyLgorICAgICAgICBJLmUuLCB5b3UgY2Fu
IHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90Cisg
ICAgICAgIHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KKworICAgICAgICBJZiB0
aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2l0aCBUcnVlIGFuZCBhbiBvZmZlciB3aXRob3V0
IHRoZQorICAgICAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIg
aXMgcmVjZWl2ZWQsCisgICAgICAgIC0gKFdoZW4gcHJvY2Vzc2luZyB0aGUgcGVybWVzc2FnZS1k
ZWZsYXRlIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKKyAgICAgICAgICBkZWNsaW5lcyB0aGUg
cmVxdWVzdC4KKyAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWNvbXBy
ZXNzIGV4dGVuc2lvbikgdGhpcyBwcm9jZXNzb3IKKyAgICAgICAgICBhY2NlcHRzIHRoZSByZXF1
ZXN0LgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93
aW5kb3dfYml0cyA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyKHNlbGYsIHZhbHVlKToKKyAgICAgICAgIiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVk
LCB0aGlzIGNsYXNzIGFkZHMgdGhlCisgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
IGV4dGVuc2lvbiBwYXJhbWV0ZXIgdG8gdGhlIGhhbmRzaGFrZQorICAgICAgICByZXNwb25zZSwg
YnV0IGRvZXNuJ3QgcmVzZXQgaW5mbGF0ZXIgZm9yIGVhY2ggbWVzc2FnZS4gSS5lLiwgeW91IGNh
bgorICAgICAgICB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQgaW1wbGVtZW50YXRpb24gYnV0
IGNhbm5vdCByZWR1Y2UgbWVtb3J5CisgICAgICAgIHVzYWdlIG9mIHRoaXMgY2xhc3MuCisgICAg
ICAgICIiIgorCisgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gdmFs
dWUKKworICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9iZmluYWwodmFsdWUpCisKKyAgICBkZWYgZW5hYmxlX291dGdvaW5nX2NvbXByZXNz
aW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2Vu
YWJsZWQoVHJ1ZSkKKworICAgIGRlZiBkaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYp
OgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoRmFs
c2UpCisKKworY2xhc3MgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKG9iamVjdCk6CisgICAgIiIi
QSBmcmFtZXIgZm9yIGV4dGVuc2lvbnMgd2l0aCBwZXItbWVzc2FnZSBERUZMQVRFIGZlYXR1cmUu
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZs
YXRlX25vX2NvbnRleHRfdGFrZW92ZXIpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyID0g
dXRpbC5fUkZDMTk3OURlZmxhdGVyKAorICAgICAgICAgICAgZGVmbGF0ZV9tYXhfd2luZG93X2Jp
dHMsIGRlZmxhdGVfbm9fY29udGV4dF90YWtlb3ZlcikKKworICAgICAgICBzZWxmLl9yZmMxOTc5
X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKKworICAgICAgICBzZWxmLl9iZmlu
YWwgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQgPSBG
YWxzZQorCisgICAgICAgICMgVHJ1ZSBpZiBhIG1lc3NhZ2UgaXMgZnJhZ21lbnRlZCBhbmQgY29t
cHJlc3Npb24gaXMgb25nb2luZy4KKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfb25nb2luZyA9IEZh
bHNlCisKKyAgICAgICAgIyBDYWxjdWxhdGVzCisgICAgICAgICMgICAgIChUb3RhbCBvdXRnb2lu
ZyBieXRlcyBzdXBwbGllZCB0byB0aGlzIGZpbHRlcikgLworICAgICAgICAjICAgICAoVG90YWwg
Ynl0ZXMgc2VudCB0byB0aGUgbmV0d29yayBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKKyAg
ICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VS
YXRpb0NhbGN1bGF0b3IoKQorCisgICAgICAgICMgQ2FsY3VsYXRlcworICAgICAgICAjICAgICAo
VG90YWwgYnl0ZXMgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yaykgLworICAgICAgICAjICAgICAo
VG90YWwgaW5jb21pbmcgYnl0ZXMgb2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIp
CisgICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVy
YWdlUmF0aW9DYWxjdWxhdG9yKCkKKworICAgIGRlZiBzZXRfYmZpbmFsKHNlbGYsIHZhbHVlKToK
KyAgICAgICAgc2VsZi5fYmZpbmFsID0gdmFsdWUKKworICAgIGRlZiBzZXRfY29tcHJlc3Nfb3V0
Z29pbmdfZW5hYmxlZChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdv
aW5nX2VuYWJsZWQgPSB2YWx1ZQorCisgICAgZGVmIF9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Uo
c2VsZiwgbWVzc2FnZSwgZGVjb21wcmVzcyk6CisgICAgICAgIGlmIG5vdCBkZWNvbXByZXNzOgor
ICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3Np
emUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19j
YWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCisgICAgICAgICAgICByZWNlaXZlZF9wYXlsb2Fk
X3NpemUpCisKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIuZmlsdGVy
KG1lc3NhZ2UpCisKKyAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2Up
CisgICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfb3Jp
Z2luYWxfYnl0ZXMoCisgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCisKKyAgICAg
ICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlciwgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLCBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCisgICAg
ICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJh
Z2VfcmF0aW8oKSkKKworICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIF9wcm9jZXNz
X291dGdvaW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgorICAgICAgICBp
ZiBub3QgYmluYXJ5OgorICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYt
OCcpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Cisg
ICAgICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6
ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2Nh
bGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9h
ZF9zaXplKQorCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRl
cihtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kPWVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJmaW5hbD1zZWxmLl9iZmluYWwpCisKKyAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXpl
ID0gbGVuKG1lc3NhZ2UpCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2Fs
Y3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAorICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9z
aXplKQorCisgICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCisgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIsIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwgZmlsdGVyZWRfcGF5bG9h
ZF9zaXplLAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNz
X29uZ29pbmc6CisgICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuc2V0X2Nv
bXByZXNzaW9uX2JpdCgpCisgICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBub3QgZW5k
CisgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdfZnJh
bWUoc2VsZiwgZnJhbWUpOgorICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5kIG5vdCBjb21t
b24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKKyAgICAgICAgICAgIHNlbGYuX2lu
Y29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkKKyAgICAgICAg
ICAgIGZyYW1lLnJzdjEgPSAwCisKKyAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoc2Vs
ZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6CisgICAgICAgIGlmIChub3QgY29tcHJlc3Npb25f
Yml0IG9yIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpKToKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIGZyYW1lLnJzdjEgPSAxCisKKyAgICBkZWYgc2V0dXBfc3Ry
ZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICAiIiJDcmVhdGVzIGZp
bHRlcnMgYW5kIHNldHMgdGhlbSB0byB0aGUgU3RyZWFtT3B0aW9ucy4iIiIKKyAgICAgICAgY2xh
c3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50
CisKKyAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFy
eT1GYWxzZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVudC5fcHJvY2Vzc19v
dXRnb2luZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBlbmQsIGJpbmFy
eSkKKworICAgICAgICBjbGFzcyBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKG9iamVjdCk6CisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRf
bWVzc2FnZSA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBkZWNvbXByZXNzX25leHRfbWVzc2Fn
ZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSA9
IFRydWUKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Uo
CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNz
YWdlKQorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gRmFs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgICAgIHNlbGYuX291dGdv
aW5nX21lc3NhZ2VfZmlsdGVyID0gX091dGdvaW5nTWVzc2FnZUZpbHRlcihzZWxmKQorICAgICAg
ICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlciA9IF9JbmNvbWluZ01lc3NhZ2VGaWx0ZXIo
c2VsZikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzLmFw
cGVuZCgKKyAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX21lc3NhZ2VfZmlsdGVyKQorICAgICAg
ICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMuYXBwZW5kKAorICAgICAg
ICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIpCisKKyAgICAgICAgY2xhc3MgX091
dGdvaW5nRnJhbWVGaWx0ZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwYXJlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorICAgICAg
ICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQorCisgICAgICAgICAg
ICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
ZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYs
IGZyYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdf
ZnJhbWUoZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IEZhbHNlCisKKyAgICAgICAgY2xhc3MgX0luY29taW5n
RnJhbWVGaWx0ZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl
bnQpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAg
ICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQu
X3Byb2Nlc3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5fb3V0Z29pbmdf
ZnJhbWVfZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKKyAgICAg
ICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCisgICAgICAg
ICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5faW5jb21p
bmdfZnJhbWVfZmlsdGVyKQorCisgICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21l
c3NhZ2VfdG9fdXRmOCA9IEZhbHNlCisKKworX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5Q
RVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKKyAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4
dGVuc2lvblByb2Nlc3NvcikKKworCitkZWYgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoZXh0ZW5z
aW9uX3JlcXVlc3QpOgorICAgICIiIkdpdmVuIGFuIEV4dGVuc2lvblBhcmFtZXRlciByZXByZXNl
bnRpbmcgYW4gZXh0ZW5zaW9uIG9mZmVyIHJlY2VpdmVkCisgICAgZnJvbSBhIGNsaWVudCwgY29u
ZmlndXJlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZworICAg
IGV4dGVuc2lvbiBwcm9jZXNzb3IgY2xhc3MuCisgICAgIiIiCisKKyAgICBwcm9jZXNzb3JfY2xh
c3MgPSBfYXZhaWxhYmxlX3Byb2Nlc3NvcnMuZ2V0KGV4dGVuc2lvbl9yZXF1ZXN0Lm5hbWUoKSkK
KyAgICBpZiBwcm9jZXNzb3JfY2xhc3MgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICByZXR1cm4gcHJvY2Vzc29yX2NsYXNzKGV4dGVuc2lvbl9yZXF1ZXN0KQorCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2Zhc3RfbWFza2luZy5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3Rf
bWFza2luZy5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkYWFkMjdmNTNjNDZiZTJhNzFjNzA0YzcwOGZiYjNmNDJm
MWEzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2Nr
ZXQvZmFzdF9tYXNraW5nLmkKQEAgLTAsMCArMSw5OCBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdv
b2dsZSBJbmMuCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyVtb2R1bGUgZmFzdF9tYXNraW5nCisKKyVpbmNs
dWRlICJjc3RyaW5nLmkiCisKKyV7CisjaW5jbHVkZSA8Y3N0cmluZz4KKworI2lmZGVmIF9fU1NF
Ml9fCisjaW5jbHVkZSA8ZW1taW50cmluLmg+CisjZW5kaWYKKyV9CisKKyVhcHBseSAoY2hhciAq
U1RSSU5HLCBpbnQgTEVOR1RIKSB7CisgICAgKGNvbnN0IGNoYXIqIHBheWxvYWQsIGludCBwYXls
b2FkX2xlbmd0aCksCisgICAgKGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFza2luZ19r
ZXlfbGVuZ3RoKSB9OworJWNzdHJpbmdfb3V0cHV0X2FsbG9jYXRlX3NpemUoCisgICAgY2hhcioq
IHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoLCBkZWxldGUgW10gKiQxKTsKKworJWlubGluZSAl
eworCit2b2lkIG1hc2soCisgICAgY29uc3QgY2hhciogcGF5bG9hZCwgaW50IHBheWxvYWRfbGVu
Z3RoLAorICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdfa2V5LCBpbnQgbWFza2luZ19rZXlfbGVuZ3Ro
LAorICAgIGludCBtYXNraW5nX2tleV9pbmRleCwKKyAgICBjaGFyKiogcmVzdWx0LCBpbnQqIHJl
c3VsdF9sZW5ndGgpIHsKKyAgKnJlc3VsdCA9IG5ldyBjaGFyW3BheWxvYWRfbGVuZ3RoXTsKKyAg
KnJlc3VsdF9sZW5ndGggPSBwYXlsb2FkX2xlbmd0aDsKKyAgbWVtY3B5KCpyZXN1bHQsIHBheWxv
YWQsIHBheWxvYWRfbGVuZ3RoKTsKKworICBjaGFyKiBjdXJzb3IgPSAqcmVzdWx0OworICBjaGFy
KiBjdXJzb3JfZW5kID0gKnJlc3VsdCArICpyZXN1bHRfbGVuZ3RoOworCisjaWZkZWYgX19TU0Uy
X18KKyAgd2hpbGUgKChjdXJzb3IgPCBjdXJzb3JfZW5kKSAmJgorICAgICAgICAgKHJlaW50ZXJw
cmV0X2Nhc3Q8c2l6ZV90PihjdXJzb3IpICYgMHhmKSkgeworICAgICpjdXJzb3IgXj0gbWFza2lu
Z19rZXlbbWFza2luZ19rZXlfaW5kZXhdOworICAgICsrY3Vyc29yOworICAgIG1hc2tpbmdfa2V5
X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9sZW5ndGg7Cisg
IH0KKyAgaWYgKGN1cnNvciA9PSBjdXJzb3JfZW5kKSB7CisgICAgcmV0dXJuOworICB9CisKKyAg
Y29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKKyAgX19tMTI4aSBtYXNraW5nX2tleV9ibG9jazsK
KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBrQmxvY2tTaXplOyArK2kpIHsKKyAgICAqKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KCZtYXNraW5nX2tleV9ibG9jaykgKyBpKSA9CisgICAgICAgIG1hc2tp
bmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNr
aW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisKKyAgd2hpbGUg
KGN1cnNvciArIGtCbG9ja1NpemUgPD0gY3Vyc29yX2VuZCkgeworICAgIF9fbTEyOGkgcGF5bG9h
ZF9ibG9jayA9CisgICAgICAgIF9tbV9sb2FkX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4
aSo+KGN1cnNvcikpOworICAgIF9tbV9zdHJlYW1fc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20x
MjhpKj4oY3Vyc29yKSwKKyAgICAgICAgICAgICAgICAgICAgIF9tbV94b3Jfc2kxMjgocGF5bG9h
ZF9ibG9jaywgbWFza2luZ19rZXlfYmxvY2spKTsKKyAgICBjdXJzb3IgKz0ga0Jsb2NrU2l6ZTsK
KyAgfQorI2VuZGlmCisKKyAgd2hpbGUgKGN1cnNvciA8IGN1cnNvcl9lbmQpIHsKKyAgICAqY3Vy
c29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAgICArK2N1cnNvcjsKKyAg
ICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19r
ZXlfbGVuZ3RoOworICB9Cit9CisKKyV9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9t
b2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmJlNWFl
OWZkZmQ0NmQxODk3MGJmOTkyY2MxYWRlYTI1YWNjNWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQpAQCAt
MCwwICsxLDEwMSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5k
c2hha2UgcHJvY2Vzc29yLiBUaGlzIGNsYXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUKK29wZW5p
bmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMgZm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1bnRpbCBh
IGNvbm5lY3Rpb24gaXMKK3N1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4KKyIiIgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGxvZ2dpbmcKKworZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNo
YWtlIGltcG9ydCBoeWJpCisjIEV4cG9ydCBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBIYW5kc2hh
a2VFeGNlcHRpb24sIGFuZCBWZXJzaW9uRXhjZXB0aW9uCisjIHN5bWJvbCBmcm9tIHRoaXMgbW9k
dWxlLgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVk
QnlVc2VyRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9uCisKK19MT0dHRVIgPSBsb2dnaW5nLmdldExvZ2dl
cihfX25hbWVfXykKKworCitkZWYgZG9faGFuZHNoYWtlKHJlcXVlc3QsIGRpc3BhdGNoZXIpOgor
ICAgICIiIlBlcmZvcm1zIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICBBcmdzOgorICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgIGRpc3BhdGNoZXI6IERpc3Bh
dGNoZXIgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgorCisgICAgSGFuZHNoYWtlciB3aWxsIGFkZCBh
dHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgaW4gcGVyZm9ybWluZworICAgIGhhbmRzaGFr
ZS4KKyAgICAiIiIKKworICAgIF9MT0dHRVIuZGVidWcoJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRz
aGFrZSByZXNvdXJjZTogJXInLCByZXF1ZXN0LnVyaSkKKyAgICAjIFRvIHByaW50IG1pbWV0b29s
cy5NZXNzYWdlIGFzIGVzY2FwZWQgb25lLWxpbmUgc3RyaW5nLCB3ZSBjb252ZXJ0cworICAgICMg
aGVhZGVyc19pbiB0byBkaWN0IG9iamVjdC4gV2l0aG91dCBjb252ZXJzaW9uLCBpZiB3ZSB1c2Ug
JXIsIGl0IGp1c3QKKyAgICAjIHByaW50cyB0aGUgdHlwZSBhbmQgYWRkcmVzcywgYW5kIGlmIHdl
IHVzZSAlcywgaXQgcHJpbnRzIHRoZSBvcmlnaW5hbAorICAgICMgaGVhZGVyIHN0cmluZyBhcyBt
dWx0aXBsZSBsaW5lcy4KKyAgICAjCisgICAgIyBCb3RoIG1pbWV0b29scy5NZXNzYWdlIGFuZCBN
cFRhYmxlX1R5cGUgb2YgbW9kX3B5dGhvbiBjYW4gYmUKKyAgICAjIGNvbnZlcnRlZCB0byBkaWN0
LgorICAgICMKKyAgICAjIG1pbWV0b29scy5NZXNzYWdlLl9fc3RyX18gcmV0dXJucyB0aGUgb3Jp
Z2luYWwgaGVhZGVyIHN0cmluZy4KKyAgICAjIGRpY3QobWltZXRvb2xzLk1lc3NhZ2Ugb2JqZWN0
KSByZXR1cm5zIHRoZSBtYXAgZnJvbSBoZWFkZXIgbmFtZXMgdG8KKyAgICAjIGhlYWRlciB2YWx1
ZXMuIFdoaWxlIE1wVGFibGVfVHlwZSBkb2Vzbid0IGhhdmUgc3VjaCBfX3N0cl9fIGJ1dCBqdXN0
CisgICAgIyBfX3JlcHJfXyB3aGljaCBmb3JtYXRzIGl0c2VsZiBhcyB3ZWxsIGFzIGRpY3Rpb25h
cnkgb2JqZWN0LgorICAgIF9MT0dHRVIuZGVidWcoJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFr
ZSBoZWFkZXJzOiAlcicsCisgICAgICAgICAgICAgICAgICBkaWN0KHJlcXVlc3QuaGVhZGVyc19p
bikpCisKKyAgICBoYW5kc2hha2VycyA9IFtdCisgICAgaGFuZHNoYWtlcnMuYXBwZW5kKCgnUkZD
IDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQorCisgICAgZm9y
IG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFuZHNoYWtlcnM6CisgICAgICAgIF9MT0dHRVIuZGVidWco
J1RyeWluZyBwcm90b2NvbCB2ZXJzaW9uICVzJywgbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgX0xPR0dFUi5pbmZv
KCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9jb2wpJywgbmFtZSkKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBfTE9H
R0VSLmRlYnVnKAorICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3BlbmluZyBo
YW5kc2hha2UgYXMgJXMgcHJvdG9jb2w6ICVyJywKKyAgICAgICAgICAgICAgICBuYW1lLCBlKQor
ICAgICAgICAgICAgaWYgZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgcmFpc2UgZQorICAgICAg
ICBleGNlcHQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UK
KyAgICAgICAgZXhjZXB0IFZlcnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNl
CisKKyAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFs
bCBoYW5kc2hha2VycyBmYWlsLgorICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJs
ZSBwcm90b2NvbHMnLAorICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFV
RVNUKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU4ZGQ4ZDQ5
N2Q5ZDg5ZGQ5YzEwNDMyYmNkYmEzZTkwM2UxYjYxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKQEAgLTAsMCAr
MSwxNzkgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhjZXB0
aW9ucyB1c2VkIGJ5IFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZQorcHJvY2Vzc29ycy4KKyIi
IgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBf
aGVhZGVyX3V0aWwKKworCitjbGFzcyBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKEV4Y2VwdGlvbik6
CisgICAgIiIiRXhjZXB0aW9uIGZvciBhYm9ydGluZyBhIGNvbm5lY3Rpb24gaW50ZW50aW9uYWxs
eS4KKworICAgIElmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBkb19leHRyYV9oYW5kc2hh
a2UgaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24KKyAgICB3aWxsIGJlIGFiYW5kb25lZC4gTm8gb3Ro
ZXIgV2ViU29ja2V0IG9yIEhUVFAoUykgaGFuZGxlciB3aWxsIGJlIGludm9rZWQuCisKKyAgICBJ
ZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdHJhbnNmZXJfZGF0YV9oYW5kbGVyLCB0aGUg
Y29ubmVjdGlvbiB3aWxsCisgICAgYmUgY2xvc2VkIHdpdGhvdXQgY2xvc2luZyBoYW5kc2hha2Uu
IE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIKKyAgICB3aWxsIGJlIGludm9r
ZWQuCisgICAgIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSGFuZHNoYWtlRXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhbiBl
cnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nCisgICAgV2ViU29ja2V0IGluaXRpYWwgaGFu
ZHNoYWtlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Tm9u
ZSk6CisgICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFt
ZSkKKyAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMKKworCitjbGFzcyBWZXJzaW9uRXhjZXB0
aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hl
biBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9lcyBub3QKKyAgICBtYXRjaCB3aXRoIHZl
cnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSwgc3VwcG9ydGVkX3ZlcnNpb25zPScnKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lv
bjogYSBzdHIgb2JqZWN0IHRvIHNob3cgc3VwcG9ydGVkIGh5YmkgdmVyc2lvbnMuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gJzEzJykKKyAgICAgICAgIiIiCisgICAgICAg
IHN1cGVyKFZlcnNpb25FeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNl
bGYuc3VwcG9ydGVkX3ZlcnNpb25zID0gc3VwcG9ydGVkX3ZlcnNpb25zCisKKworZGVmIGdldF9k
ZWZhdWx0X3BvcnQoaXNfc2VjdXJlKToKKyAgICBpZiBpc19zZWN1cmU6CisgICAgICAgIHJldHVy
biBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUCisgICAgZWxzZToKKyAgICAg
ICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVAorCisKK2RlZiB2YWxpZGF0
ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCk6CisgICAgIiIiVmFsaWRhdGUgYSB2YWx1ZSBpbiB0
aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZC4KKworICAgIFNlZSB0aGUgU2VjdGlvbiA0
LjEuLCA0LjIuMi4sIGFuZCA0LjMuIG9mIFJGQyA2NDU1LgorICAgICIiIgorCisgICAgaWYgbm90
IHN1YnByb3RvY29sOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQg
c3VicHJvdG9jb2wgbmFtZTogZW1wdHknKQorCisgICAgIyBQYXJhbWV0ZXIgc2hvdWxkIGJlIGVu
Y29kZWQgSFRUUCB0b2tlbi4KKyAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwuUGFyc2luZ1N0
YXRlKHN1YnByb3RvY29sKQorICAgIHRva2VuID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rv
a2VuKHN0YXRlKQorICAgIHJlc3QgPSBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpCisgICAg
IyBJZiB8cmVzdHwgaXMgbm90IE5vbmUsIHxzdWJwcm90b2NvbHwgaXMgbm90IG9uZSB0b2tlbiBv
ciBpbnZhbGlkLiBJZgorICAgICMgfHJlc3R8IGlzIE5vbmUsIHx0b2tlbnwgbXVzdCBub3QgYmUg
Tm9uZSBiZWNhdXNlIHxzdWJwcm90b2NvbHwgaXMKKyAgICAjIGNvbmNhdGVuYXRpb24gb2YgfHRv
a2VufCBhbmQgfHJlc3R8IGFuZCBpcyBub3QgTm9uZS4KKyAgICBpZiByZXN0IGlzIG5vdCBOb25l
OgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQgbm9uLXRva2VuIHN0
cmluZyBpbiBzdWJwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bmFtZTogJXInICUgcmVzdCkKKworCitkZWYgcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCk6Cisg
ICAgZmllbGRzID0gcmVxdWVzdC5oZWFkZXJzX2luW2NvbW1vbi5IT1NUX0hFQURFUl0uc3BsaXQo
JzonLCAxKQorICAgIGlmIGxlbihmaWVsZHMpID09IDE6CisgICAgICAgIHJldHVybiBmaWVsZHNb
MF0sIGdldF9kZWZhdWx0X3BvcnQocmVxdWVzdC5pc19odHRwcygpKQorICAgIHRyeToKKyAgICAg
ICAgcmV0dXJuIGZpZWxkc1swXSwgaW50KGZpZWxkc1sxXSkKKyAgICBleGNlcHQgVmFsdWVFcnJv
ciBhcyBlOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ludmFsaWQgcG9ydCBu
dW1iZXIgZm9ybWF0OiAlcicgJSBlKQorCisKK2RlZiBmb3JtYXRfaGVhZGVyKG5hbWUsIHZhbHVl
KToKKyAgICByZXR1cm4gdSclczogJXNcclxuJyAlIChuYW1lLCB2YWx1ZSkKKworCitkZWYgZ2V0
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5KToKKyAgICB2YWx1ZSA9IHJlcXVlc3QuaGVh
ZGVyc19pbi5nZXQoa2V5KQorICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbignSGVhZGVyICVzIGlzIG5vdCBkZWZpbmVkJyAlIGtleSkKKyAgICBy
ZXR1cm4gdmFsdWUKKworCitkZWYgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBr
ZXksIGV4cGVjdGVkX3ZhbHVlLCBmYWlsX3N0YXR1cz1Ob25lKToKKyAgICB2YWx1ZSA9IGdldF9t
YW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSkKKworICAgIGlmIHZhbHVlLmxvd2VyKCkgIT0g
ZXhwZWN0ZWRfdmFsdWUubG93ZXIoKToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KAorICAgICAgICAgICAgJ0V4cGVjdGVkICVyIGZvciBoZWFkZXIgJXMgYnV0IGZvdW5kICVyIChj
YXNlLWluc2Vuc2l0aXZlKScgJQorICAgICAgICAgICAgKGV4cGVjdGVkX3ZhbHVlLCBrZXksIHZh
bHVlKSwKKyAgICAgICAgICAgIHN0YXR1cz1mYWlsX3N0YXR1cykKKworCitkZWYgY2hlY2tfcmVx
dWVzdF9saW5lKHJlcXVlc3QpOgorICAgICMgNS4xIDEuIFRoZSB0aHJlZSBjaGFyYWN0ZXIgVVRG
LTggc3RyaW5nICJHRVQiLgorICAgICMgNS4xIDIuIEEgVVRGLTgtZW5jb2RlZCBVKzAwMjAgU1BB
Q0UgY2hhcmFjdGVyICgweDIwIGJ5dGUpLgorICAgIGlmIHJlcXVlc3QubWV0aG9kICE9IHUnR0VU
JzoKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdNZXRob2QgaXMgbm90IEdFVDog
JXInICUgcmVxdWVzdC5tZXRob2QpCisKKyAgICBpZiByZXF1ZXN0LnByb3RvY29sICE9IHUnSFRU
UC8xLjEnOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ1ZlcnNpb24gaXMgbm90
IEhUVFAvMS4xOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5wcm90b2NvbCkKKworCitkZWYgcGFyc2VfdG9rZW5fbGlzdChkYXRhKToKKyAgICAiIiJQYXJz
ZXMgYSBoZWFkZXIgdmFsdWUgd2hpY2ggZm9sbG93cyAxI3Rva2VuIGFuZCByZXR1cm5zIHBhcnNl
ZCBlbGVtZW50cworICAgIGFzIGEgbGlzdCBvZiBzdHJpbmdzLgorCisgICAgTGVhZGluZyBMV1Nl
cyBtdXN0IGJlIHRyaW1tZWQuCisgICAgIiIiCisKKyAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0
aWwuUGFyc2luZ1N0YXRlKGRhdGEpCisKKyAgICB0b2tlbl9saXN0ID0gW10KKworICAgIHdoaWxl
IFRydWU6CisgICAgICAgIHRva2VuID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0
YXRlKQorICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRva2VuX2xp
c3QuYXBwZW5kKHRva2VuKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3Nl
cyhzdGF0ZSkKKworICAgICAgICBpZiBodHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5v
bmU6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGls
LmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnLCcpOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKCdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkpCisK
KyAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgaWYg
bGVuKHRva2VuX2xpc3QpID09IDA6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbign
Tm8gdmFsaWQgdG9rZW4gZm91bmQnKQorCisgICAgcmV0dXJuIHRva2VuX2xpc3QKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UvaHliaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvaHliaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmQ2M2ViNjNlZGQxZjRhY2Y4ODdkZjM1
ZDRiZGMzYjZlMTM5OTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CkBAIC0wLDAgKzEsMzk1IEBACisjIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRoaXMgZmlsZSBwcm92aWRlcyB0aGUgb3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0Citwcm90b2NvbCAoUkZDIDY0NTUpLgorCitTcGVjaWZp
Y2F0aW9uOgoraHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQorIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgYmFzZTY0CitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2Zyb20gaGFzaGxpYiBpbXBvcnQgc2hhMQor
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5leHRlbnNpb25zIGltcG9ydCBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1ZXN0X2xpbmUKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9ybWF0X2hlYWRlcgorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfbWFuZGF0b3J5X2hl
YWRlcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hh
a2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQg
cGFyc2VfdG9rZW5fbGlzdAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGlt
cG9ydCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5k
c2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KK2Zyb20gbW9kX3B5
d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJl
YW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGls
Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UK
KworIyBVc2VkIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZSBpbiB0aGUgU2VjLVdlYlNvY2tldC1LZXkg
aGVhZGVyIHN0cmljdGx5LiBSRkMgNDY0OAorIyBkaXNhbGxvd3Mgbm9uLXplcm8gcGFkZGluZywg
c28gdGhlIGNoYXJhY3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YKKyMgQSwgUSwg
ZyBhbmQgdy4KK19TRUNfV0VCU09DS0VUX0tFWV9SRUdFWCA9IHJlLmNvbXBpbGUoJ15bKy8wLTlB
LVphLXpdezIxfVtBUWd3XT09JCcpCisKKyMgRGVmaW5pbmcgYWxpYXNlcyBmb3IgdmFsdWVzIHVz
ZWQgZnJlcXVlbnRseS4KK19WRVJTSU9OX0xBVEVTVCA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFU
RVNUCitfVkVSU0lPTl9MQVRFU1RfU1RSSU5HID0gc3RyKF9WRVJTSU9OX0xBVEVTVCkKK19TVVBQ
T1JURURfVkVSU0lPTlMgPSBbCisgICAgX1ZFUlNJT05fTEFURVNULAorXQorCisKK2RlZiBjb21w
dXRlX2FjY2VwdChrZXkpOgorICAgICIiIkNvbXB1dGVzIHZhbHVlIGZvciB0aGUgU2VjLVdlYlNv
Y2tldC1BY2NlcHQgaGVhZGVyIGZyb20gdmFsdWUgb2YgdGhlCisgICAgU2VjLVdlYlNvY2tldC1L
ZXkgaGVhZGVyLgorICAgICIiIgorCisgICAgYWNjZXB0X2JpbmFyeSA9IHNoYTEoa2V5ICsgY29t
bW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKKyAgICBhY2NlcHQgPSBiYXNlNjQu
YjY0ZW5jb2RlKGFjY2VwdF9iaW5hcnkpCisKKyAgICByZXR1cm4gYWNjZXB0CisKKworZGVmIGNv
bXB1dGVfYWNjZXB0X2Zyb21fdW5pY29kZSh1bmljb2RlX2tleSk6CisgICAgIiIiQSB3cmFwcGVy
IGZ1bmN0aW9uIGZvciBjb21wdXRlX2FjY2VwdCB3aGljaCB0YWtlcyBhIHVuaWNvZGUgc3RyaW5n
IGFzIGFuCisgICAgYXJndW1lbnQsIGFuZCBlbmNvZGVzIGl0IHRvIGJ5dGUgc3RyaW5nLiBJdCB0
aGVuIHBhc3NlcyBpdCBvbiB0bworICAgIGNvbXB1dGVfYWNjZXB0LgorICAgICIiIgorCisgICAg
a2V5ID0gdW5pY29kZV9rZXkuZW5jb2RlKCdVVEYtOCcpCisgICAgcmV0dXJuIGNvbXB1dGVfYWNj
ZXB0KGtleSkKKworCitjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBo
YW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSku
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNoZXIpOgorICAgICAg
ICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg
IHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgICAgIGRpc3BhdGNoZXI6IERp
c3BhdGNoZXIgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgorCisgICAgICAgIEhhbmRzaGFrZXIgd2ls
bCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNlIGR1cmluZyBoYW5kc2hha2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYu
X2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyCisKKyAgICBkZWYgX3ZhbGlkYXRlX2Nvbm5lY3Rpb25f
aGVhZGVyKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIo
c2VsZi5fcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBj
b25uZWN0aW9uX3Rva2VucyA9IHBhcnNlX3Rva2VuX2xpc3QoY29ubmVjdGlvbikKKyAgICAgICAg
ZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdGYWlsZWQgdG8gcGFyc2UgJXM6ICVzJyAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgZSkpCisKKyAg
ICAgICAgY29ubmVjdGlvbl9pc192YWxpZCA9IEZhbHNlCisgICAgICAgIGZvciB0b2tlbiBpbiBj
b25uZWN0aW9uX3Rva2VuczoKKyAgICAgICAgICAgIGlmIHRva2VuLmxvd2VyKCkgPT0gY29tbW9u
LlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgY29ubmVj
dGlvbl9pc192YWxpZCA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBu
b3QgY29ubmVjdGlvbl9pc192YWxpZDoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAnJXMgaGVhZGVyIGRvZXNuXCd0IGNvbnRhaW4gIiVzIicg
JQorICAgICAgICAgICAgICAgIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdS
QURFX0NPTk5FQ1RJT05fVFlQRSkpCisKKyAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgorICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfY2xvc2VfcmVhc29uID0gTm9uZQorCisgICAgICAgICMgUGFyc2luZy4KKworICAg
ICAgICBjaGVja19yZXF1ZXN0X2xpbmUoc2VsZi5fcmVxdWVzdCkKKworICAgICAgICB2YWxpZGF0
ZV9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsIGNvbW1vbi5VUEdSQURFX0hFQURFUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JB
REVfVFlQRSkKKworICAgICAgICBzZWxmLl92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcigpCisK
KyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVlc3QudXJpCisK
KyAgICAgICAgdW51c2VkX2hvc3QgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0
LCBjb21tb24uSE9TVF9IRUFERVIpCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c192ZXJzaW9u
ID0gc2VsZi5fY2hlY2tfdmVyc2lvbigpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fZ2V0X29yaWdpbigpCisgICAgICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2woKQorICAgICAg
ICAgICAgc2VsZi5fcGFyc2VfZXh0ZW5zaW9ucygpCisKKyAgICAgICAgICAgICMgS2V5IHZhbGlk
YXRpb24sIHJlc3BvbnNlIGdlbmVyYXRpb24uCisKKyAgICAgICAgICAgIGtleSA9IHNlbGYuX2dl
dF9rZXkoKQorICAgICAgICAgICAgYWNjZXB0ID0gY29tcHV0ZV9hY2NlcHQoa2V5KQorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVzKScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGJhc2U2NC5iNjRk
ZWNvZGUoYWNjZXB0KSkpCisKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUHJvdG9j
b2wgdmVyc2lvbiBpcyBSRkMgNjQ1NScpCisKKyAgICAgICAgICAgICMgU2V0dXAgZXh0ZW5zaW9u
IHByb2Nlc3NvcnMuCisKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbXQorICAgICAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3JlcXVlc3QgaW4gc2VsZi5fcmVxdWVzdC53c19y
ZXF1ZXN0ZWRfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yID0gZ2V0
X2V4dGVuc2lvbl9wcm9jZXNzb3IoZXh0ZW5zaW9uX3JlcXVlc3QpCisgICAgICAgICAgICAgICAg
ICAgICMgVW5rbm93biBleHRlbnNpb24gcmVxdWVzdHMgYXJlIGp1c3QgaWdub3JlZC4KKyAgICAg
ICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29ycy5hcHBlbmQocHJvY2Vzc29yKQorICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IHByb2Nlc3NvcnMKKworICAgICAgICAg
ICAgIyBMaXN0IG9mIGV4dHJhIGhlYWRlcnMuIFRoZSBleHRyYSBoYW5kc2hha2UgaGFuZGxlciBt
YXkgYWRkIGhlYWRlcgorICAgICAgICAgICAgIyBkYXRhIGFzIG5hbWUvdmFsdWUgcGFpcnMgdG8g
dGhpcyBsaXN0IGFuZCBweXdlYnNvY2tldCBhcHBlbmRzCisgICAgICAgICAgICAjIHRoZW0gdG8g
dGhlIFdlYlNvY2tldCBoYW5kc2hha2UuCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmV4dHJh
X2hlYWRlcnMgPSBbXQorCisgICAgICAgICAgICAjIEV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1h
eSBtb2RpZnkvcmVtb3ZlIHByb2Nlc3NvcnMuCisgICAgICAgICAgICBzZWxmLl9kaXNwYXRjaGVy
LmRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgcHJvY2Vzc29y
cyA9IFsKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IKKyAgICAgICAgICAgICAgICBmb3IgcHJv
Y2Vzc29yIGluIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMKKyAgICAgICAg
ICAgICAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIF0KKworICAgICAg
ICAgICAgIyBBc2sgZWFjaCBwcm9jZXNzb3IgaWYgdGhlcmUgYXJlIGV4dGVuc2lvbnMgb24gdGhl
IHJlcXVlc3Qgd2hpY2gKKyAgICAgICAgICAgICMgY2Fubm90IGNvLWV4aXN0LiBXaGVuIHByb2Nl
c3NvciBkZWNpZGVkIG90aGVyIHByb2Nlc3NvcnMgY2Fubm90CisgICAgICAgICAgICAjIGNvLWV4
aXN0IHdpdGggaXQsIHRoZSBwcm9jZXNzb3IgbWFya3MgdGhlbSAob3IgaXRzZWxmKSBhcworICAg
ICAgICAgICAgIyAiaW5hY3RpdmUiLiBUaGUgZmlyc3QgZXh0ZW5zaW9uIHByb2Nlc3NvciBoYXMg
dGhlIHJpZ2h0IHRvCisgICAgICAgICAgICAjIG1ha2UgdGhlIGZpbmFsIGNhbGwuCisgICAgICAg
ICAgICBmb3IgcHJvY2Vzc29yIGluIHJldmVyc2VkKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAg
ICAgIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c29yLmNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycygKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NvcnMpCisgICAgICAgICAgICBwcm9jZXNzb3JzID0gWworICAg
ICAgICAgICAgICAgIHByb2Nlc3NvciBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnMgaWYgcHJv
Y2Vzc29yLmlzX2FjdGl2ZSgpCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgIGFjY2VwdGVk
X2V4dGVuc2lvbnMgPSBbXQorCisgICAgICAgICAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9w
dGlvbnMoKQorCisgICAgICAgICAgICBmb3IgaW5kZXgsIHByb2Nlc3NvciBpbiBlbnVtZXJhdGUo
cHJvY2Vzc29ycyk6CisgICAgICAgICAgICAgICAgaWYgbm90IHByb2Nlc3Nvci5pc19hY3RpdmUo
KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGV4dGVu
c2lvbl9yZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAg
ICAgICAgICAgICBpZiBleHRlbnNpb25fcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgIyBSZWplY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbl9yZXNwb25zZSkK
KworICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1f
b3B0aW9ucykKKworICAgICAgICAgICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZvbGxv
d2luZyBjb21wcmVzc2lvbiBleHRlbnNpb25zLgorICAgICAgICAgICAgICAgIGZvciBqIGluIHJh
bmdlKGluZGV4ICsgMSwgbGVuKHByb2Nlc3NvcnMpKToKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc29yc1tqXS5zZXRfYWN0aXZlKEZhbHNlKQorCisgICAgICAgICAgICBpZiBsZW4oYWNjZXB0
ZWRfZXh0ZW5zaW9ucykgPiAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0
ZW5zaW9ucyA9IGFjY2VwdGVkX2V4dGVuc2lvbnMKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICdFeHRlbnNpb25zIGFjY2VwdGVkOiAlcics
CisgICAgICAgICAgICAgICAgICAgIGxpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBtYXAo
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMpKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gTm9uZQorCisgICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX29wdGlv
bnMpCisKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29s
cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3Rv
Y29sIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICdkb19leHRyYV9oYW5kc2hha2UgbXVzdCBjaG9v
c2Ugb25lIHN1YnByb3RvY29sIGZyb20gJworICAgICAgICAgICAgICAgICAgICAgICAgJ3dzX3Jl
cXVlc3RlZF9wcm90b2NvbHMgYW5kIHNldCBpdCB0byB3c19wcm90b2NvbCcpCisgICAgICAgICAg
ICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkKKwor
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3VicHJvdG9jb2wgYWNjZXB0ZWQ6
ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19wcm90b2NvbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ3dzX3Byb3Rv
Y29sIG11c3QgYmUgTm9uZSB3aGVuIHRoZSBjbGllbnQgZGlkblwndCAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAncmVxdWVzdCBhbnkgc3VicHJvdG9jb2wnKQorCisgICAgICAgICAgICBzZWxm
Ll9zZW5kX2hhbmRzaGFrZShhY2NlcHQpCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIGlmIG5vdCBlLnN0YXR1czoKKyAgICAgICAgICAgICAgICAj
IEZhbGxiYWNrIHRvIDQwMCBiYWQgcmVxdWVzdCBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAg
IGUuc3RhdHVzID0gY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUCisgICAgICAgICAgICBy
YWlzZSBlCisKKyAgICBkZWYgX2dldF9vcmlnaW4oc2VsZik6CisgICAgICAgIG9yaWdpbl9oZWFk
ZXIgPSBjb21tb24uT1JJR0lOX0hFQURFUgorICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0
LmhlYWRlcnNfaW4uZ2V0KG9yaWdpbl9oZWFkZXIpCisgICAgICAgIGlmIG9yaWdpbiBpcyBOb25l
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgcmVxdWVzdCBkb2VzIG5v
dCBoYXZlIG9yaWdpbiBoZWFkZXInKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9
IG9yaWdpbgorCisgICAgZGVmIF9jaGVja192ZXJzaW9uKHNlbGYpOgorICAgICAgICB2ZXJzaW9u
ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVS
KQorICAgICAgICBpZiB2ZXJzaW9uID09IF9WRVJTSU9OX0xBVEVTVF9TVFJJTkc6CisgICAgICAg
ICAgICByZXR1cm4gX1ZFUlNJT05fTEFURVNUCisKKyAgICAgICAgaWYgdmVyc2lvbi5maW5kKCcs
JykgPj0gMDoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAg
ICAgICAgICAnTXVsdGlwbGUgdmVyc2lvbnMgKCVyKSBhcmUgbm90IGFsbG93ZWQgZm9yIGhlYWRl
ciAlcycgJQorICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9W
RVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVCkKKyAgICAgICAgcmFpc2UgVmVyc2lvbkV4Y2VwdGlvbignVW5zdXBwb3J0
ZWQgdmVyc2lvbiAlciBmb3IgaGVhZGVyICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9JywgJy5qb2lu
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoc3RyLCBfU1VQUE9SVEVE
X1ZFUlNJT05TKSkpCisKKyAgICBkZWYgX3NldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKworICAgICAgICBwcm90b2NvbF9oZWFkZXIg
PSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19X
RUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSKQorCisgICAgICAgIGlmIHByb3RvY29sX2hlYWRlciBp
cyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xz
ID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19y
ZXF1ZXN0ZWRfcHJvdG9jb2xzID0gcGFyc2VfdG9rZW5fbGlzdCgKKyAgICAgICAgICAgIHByb3Rv
Y29sX2hlYWRlcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdWJwcm90b2NvbHMgcmVx
dWVzdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X3JlcXVlc3RlZF9wcm90b2NvbHMpCisKKyAgICBkZWYgX3BhcnNlX2V4dGVuc2lvbnMoc2VsZik6
CisgICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSKQor
ICAgICAgICBpZiBub3QgZXh0ZW5zaW9uc19oZWFkZXI6CisgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0
ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGV4dGVu
c2lvbnNfaGVhZGVyKQorICAgICAgICBleGNlcHQgY29tbW9uLkV4dGVuc2lvblBhcnNpbmdFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXI6ICVyJyAlIGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAg
J0V4dGVuc2lvbnMgcmVxdWVzdGVkOiAlcicsCisgICAgICAgICAgICBsaXN0KAorICAgICAgICAg
ICAgICAgIG1hcChjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyLm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMpKSkKKworICAgIGRl
ZiBfdmFsaWRhdGVfa2V5KHNlbGYsIGtleSk6CisgICAgICAgIGlmIGtleS5maW5kKCcsJykgPj0g
MDoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignUmVxdWVzdCBoYXMgbXVs
dGlwbGUgJXMgaGVhZGVyIGxpbmVzIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgXCcsXCc6ICVyJyAlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9I
RUFERVIsIGtleSkpCisKKyAgICAgICAgIyBWYWxpZGF0ZQorICAgICAgICBrZXlfaXNfdmFsaWQg
PSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFZhbGlkYXRlIGtleSBieSBxdWlj
ayByZWdleCBtYXRjaCBiZWZvcmUgcGFyc2luZyBieSBiYXNlNjQKKyAgICAgICAgICAgICMgbW9k
dWxlLiBCZWNhdXNlIGJhc2U2NCBtb2R1bGUgc2tpcHMgaW52YWxpZCBjaGFyYWN0ZXJzLCB3ZSBo
YXZlCisgICAgICAgICAgICAjIHRvIGRvIHRoaXMgaW4gYWR2YW5jZSB0byBtYWtlIHRoaXMgc2Vy
dmVyIHN0cmljdGx5IHJlamVjdCBpbGxlZ2FsCisgICAgICAgICAgICAjIGtleXMuCisgICAgICAg
ICAgICBpZiBfU0VDX1dFQlNPQ0tFVF9LRVlfUkVHRVgubWF0Y2goa2V5KToKKyAgICAgICAgICAg
ICAgICBkZWNvZGVkX2tleSA9IGJhc2U2NC5iNjRkZWNvZGUoa2V5KQorICAgICAgICAgICAgICAg
IGlmIGxlbihkZWNvZGVkX2tleSkgPT0gMTY6CisgICAgICAgICAgICAgICAgICAgIGtleV9pc192
YWxpZCA9IFRydWUKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAg
cGFzcworCisgICAgICAgIGlmIG5vdCBrZXlfaXNfdmFsaWQ6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXInICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRf
S0VZX0hFQURFUiwga2V5KSkKKworICAgICAgICByZXR1cm4gZGVjb2RlZF9rZXkKKworICAgIGRl
ZiBfZ2V0X2tleShzZWxmKToKKyAgICAgICAga2V5ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2Vs
Zi5fcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfS0VZX0hFQURFUikKKworICAgICAgICBkZWNvZGVkX2tleSA9IHNlbGYuX3Zh
bGlkYXRlX2tleShrZXkpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVz
KScsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGRlY29kZWRfa2V5KSkKKworICAgICAgICByZXR1cm4g
a2V5LmVuY29kZSgnVVRGLTgnKQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9vcHRpb25zKToKKyAgICAgICAgcmV0dXJuIFN0cmVhbShzZWxmLl9yZXF1ZXN0LCBzdHJlYW1f
b3B0aW9ucykKKworICAgIGRlZiBfY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZShzZWxmLCBhY2Nl
cHQpOgorICAgICAgICByZXNwb25zZSA9IFtdCisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUn
SFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJykKKworICAgICAgICAjIFdlYlNv
Y2tldCBoZWFkZXJzCisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgIGZvcm1h
dF9oZWFkZXIoY29tbW9uLlVQR1JBREVfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkpCisgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZCgKKyAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUp
KQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNv
bW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFjY2VwdC5kZWNvZGUoJ1VURi04JykpKQorICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xf
SEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19w
cm90b2NvbCkpCisgICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgICAgICBhbmQgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9u
cykgIT0gMCk6CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICAgICAg
Zm9ybWF0X2hlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRf
RVhURU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0
ZW5zaW9ucyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKKworICAgICAgICAjIEhlYWRl
cnMgbm90IHNwZWNpZmljIGZvciBXZWJTb2NrZXQKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGlu
IHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVyczoKKyAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZChmb3JtYXRfaGVhZGVyKG5hbWUsIHZhbHVlKSkKKworICAgICAgICByZXNwb25zZS5hcHBlbmQo
dSdcclxuJykKKworICAgICAgICByZXR1cm4gdScnLmpvaW4ocmVzcG9uc2UpCisKKyAgICBkZWYg
X3NlbmRfaGFuZHNoYWtlKHNlbGYsIGFjY2VwdCk6CisgICAgICAgIHJhd19yZXNwb25zZSA9IHNl
bGYuX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2UoYWNjZXB0KQorICAgICAgICBzZWxmLl9yZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUocmF3X3Jlc3BvbnNlLmVuY29kZSgnVVRGLTgnKSkKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNlcnZlclwncyBvcGVuaW5nIGhhbmRzaGFrZTog
JXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X3Jlc3BvbnNlKQorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU5OGY1NzBmMmRj
MWVlMDE2MmQ5OTZkNjg4NWNhMGJkNmFiN2YxNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwxOSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hh
bmRzaGFrZS9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL2h5YmkucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVkOTBiMjQ3YjhkZWQ5ZjI1NGRh
YmE3MDkwOWNiYzhmZjNjODJkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0wLDAgKzEsMjU0IEBACisj
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyIiIlV0aWxpdGllcyBmb3IgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBo
ZWFkZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRlZmluZWQKK2luIEhUVFAgUkZDIGh0dHA6
Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4Lm1vdmVzLnVybGxpYi5wYXJzZQorCitf
U0VQQVJBVE9SUyA9ICcoKTw+QCw7OlxcIi9bXT89e30gXHQnCisKKworZGVmIF9pc19jaGFyKGMp
OgorICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBDSEFSIGFzIHNwZWNpZmllZCBpbiBI
VFRQIFJGQy4iIiIKKworICAgIHJldHVybiBvcmQoYykgPD0gMTI3CisKKworZGVmIF9pc19jdGwo
Yyk6CisgICAgIiIiUmV0dXJucyB0cnVlIGlmZiBjIGlzIGluIENUTCBhcyBzcGVjaWZpZWQgaW4g
SFRUUCBSRkMuIiIiCisKKyAgICByZXR1cm4gb3JkKGMpIDw9IDMxIG9yIG9yZChjKSA9PSAxMjcK
KworCitjbGFzcyBQYXJzaW5nU3RhdGUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZGF0YSk6CisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKyAgICAgICAgc2VsZi5oZWFkID0gMAor
CisKK2RlZiBwZWVrKHN0YXRlLCBwb3M9MCk6CisgICAgIiIiUGVla3MgdGhlIGNoYXJhY3RlciBh
dCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgorCisgICAgaWYgc3RhdGUuaGVhZCArIHBv
cyA+PSBsZW4oc3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXR1cm4g
c3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQorCisKK2RlZiBjb25zdW1lKHN0YXRlLCBhbW91
bnQ9MSk6CisgICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRo
ZSBoZWFkIGFuZCByZXR1cm5zIHRoZQorICAgIGNvbnN1bWVkIGJ5dGVzLiBJZiB0aGVyZSdzIG5v
dCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBOb25lLgorICAgICIiIgorCisgICAg
aWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5kYXRhKToKKyAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3RhdGUuaGVhZDpzdGF0ZS5oZWFkICsg
YW1vdW50XQorICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFkICsgYW1vdW50CisgICAgcmV0dXJu
IHJlc3VsdAorCisKK2RlZiBjb25zdW1lX3N0cmluZyhzdGF0ZSwgZXhwZWN0ZWQpOgorICAgICIi
IkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3RlZCBzdHJpbmcsIGNvbnN1bWVzIHRo
ZSBzdHJpbmcgZnJvbQorICAgIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYgY29uc3VtZWQgc3Vj
Y2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKKyAgICBGYWxzZS4KKyAgICAiIiIKKworICAg
IHBvcyA9IDAKKworICAgIGZvciBjIGluIGV4cGVjdGVkOgorICAgICAgICBpZiBjICE9IHBlZWso
c3RhdGUsIHBvcyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcG9zICs9IDEK
KworICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBjb25z
dW1lX2x3cyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSBMV1MgZnJvbSB0aGUgaGVhZC4gUmV0
dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCisgICAgT3RoZXJ3aXNlLCByZXR1cm5z
IEZhbHNlLgorCisgICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8IEhUICkKKyAgICAiIiIKKworICAg
IG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBjb25zdW1lX3N0cmluZyhzdGF0ZSwg
J1xyXG4nKQorCisgICAgcG9zID0gMAorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgYyA9IHBl
ZWsoc3RhdGUsIHBvcykKKyAgICAgICAgaWYgYyA9PSAnICcgb3IgYyA9PSAnXHQnOgorICAgICAg
ICAgICAgcG9zICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHBvcyA9PSAwOgor
ICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnN1
bWUoc3RhdGUsIHBvcykKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBjb25z
dW1lX2x3c2VzKHN0YXRlKToKKyAgICAiIiJDb25zdW1lcyAqTFdTIGZyb20gdGhlIGhlYWQuIiIi
CisKKyAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgIHBhc3MKKworCitkZWYg
Y29uc3VtZV90b2tlbihzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBmcm9tIHRoZSBo
ZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5vIHRva2VuCisgICAgd2FzIGZvdW5k
LgorICAgICIiIgorCisgICAgcG9zID0gMAorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgYyA9
IHBlZWsoc3RhdGUsIHBvcykKKyAgICAgICAgaWYgYyBpcyBOb25lIG9yIGMgaW4gX1NFUEFSQVRP
UlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICBpZiBwb3Mg
PT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICByZXR1cm4g
Y29uc3VtZShzdGF0ZSwgcG9zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcG9zICs9IDEK
KworCitkZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKToKKyAgICAiIiJD
b25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywgYW5kIHJldHVybnMgdGhlIHRva2Vu
IG9yIHVucXVvdGVkCisgICAgc3RyaW5nLiBJZiBubyB0b2tlbiBvciBxdW90ZWQtc3RyaW5nIHdh
cyBmb3VuZCwgcmV0dXJucyBOb25lLgorICAgICIiIgorCisgICAgb3JpZ2luYWxfaGVhZCA9IHN0
YXRlLmhlYWQKKworICAgIGlmIG5vdCBjb25zdW1lX3N0cmluZyhzdGF0ZSwgJyInKToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCisKKyAgICByZXN1bHQgPSBbXQorCisgICAg
ZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIGlm
IG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVfbHdzKHN0YXRlKToKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAnKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBj
ID0gY29uc3VtZShzdGF0ZSkKKyAgICAgICAgaWYgYyBpcyBOb25lOgorICAgICAgICAgICAgIyBx
dW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRvdWJsZSBxdW90YXRpb24KKyAgICAg
ICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoKKyAgICAgICAgICAgIGV4cGVjdF9x
dW90ZWRfcGFpciA9IEZhbHNlCisgICAgICAgICAgICBpZiBfaXNfY2hhcihjKToKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1b3RlZC1wYWlyCisgICAgICAgICAg
ICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKKyAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQorICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKKyAgICAgICAgICAgIGV4cGVjdF9xdW90ZWRf
cGFpciA9IFRydWUKKyAgICAgICAgZWxpZiBjID09ICciJzoKKyAgICAgICAgICAgIHJldHVybiAn
Jy5qb2luKHJlc3VsdCkKKyAgICAgICAgZWxpZiBfaXNfY3RsKGMpOgorICAgICAgICAgICAgIyBJ
bnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQKKyAgICAgICAgICAgIHN0YXRlLmhl
YWQgPSBvcmlnaW5hbF9oZWFkCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQorCisKK2RlZiBxdW90ZV9pZl9uZWNlc3Nh
cnkocyk6CisgICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJpbmcgaW50byBxdW90ZWQtc3RyaW5n
LiIiIgorCisgICAgcXVvdGUgPSBGYWxzZQorICAgIGlmIHMgPT0gJyc6CisgICAgICAgIHJldHVy
biAnIiInCisKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBjIGluIHM6CisgICAgICAgIGlmIGMg
PT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIo
Yyk6CisgICAgICAgICAgICBxdW90ZSA9IFRydWUKKworICAgICAgICBpZiBjID09ICciJyBvciBf
aXNfY3RsKGMpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnICsgYykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKKworICAgIGlmIHF1b3RlOgorICAg
ICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsgJyInCisgICAgZWxzZToKKyAgICAg
ICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2RlZiBwYXJzZV91cmkodXJpKToKKyAgICAi
IiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9zdCwgcG9ydCBhbmQgcmVzb3VyY2Uu
IiIiCisKKyAgICBwYXJzZWQgPSBzaXgubW92ZXMudXJsbGliLnBhcnNlLnVybHNwbGl0KHVyaSkK
KyAgICBpZiBwYXJzZWQuc2NoZW1lICE9ICd3c3MnIGFuZCBwYXJzZWQuc2NoZW1lICE9ICd3cyc6
CisgICAgICAgICMgfHVyaXwgbXVzdCBiZSBhIHJlbGF0aXZlIFVSSS4KKyAgICAgICAgIyBUT0RP
KHRveW9zaGltKTogU2hvdWxkIHZhbGlkYXRlIHx1cml8LgorICAgICAgICByZXR1cm4gTm9uZSwg
Tm9uZSwgdXJpCisKKyAgICBpZiBwYXJzZWQuaG9zdG5hbWUgaXMgTm9uZToKKyAgICAgICAgcmV0
dXJuIE5vbmUsIE5vbmUsIE5vbmUKKworICAgIHBvcnQgPSBOb25lCisgICAgdHJ5OgorICAgICAg
ICBwb3J0ID0gcGFyc2VkLnBvcnQKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgIyBU
aGUgcG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBwb3J0IGRl
c2NyaXB0aW9ucworICAgICAgICAjIGxpa2UgJ3dzOi8vaG9zdDpJTlZBTElEX1BPUlQvcGF0aCcs
IHdoZXJlIHRoZSBhc3NpZ25lZCBwb3J0IGlzIG5vdAorICAgICAgICAjICpESUdJVC4gRm9yIHB5
dGhvbiAzLjYgYW5kIGxhdGVyLCBWYWx1ZUVycm9yIGFsc28gcmFpc2VzIHdoZW4KKyAgICAgICAg
IyBhc3NpZ25pbmcgaW52YWxpZCBwb3J0IG51bWJlcnMgc3VjaCBhcyAnd3M6Ly9ob3N0Oi0xL3Bh
dGgnLiBFYXJsaWVyCisgICAgICAgICMgdmVyc2lvbnMgc2ltcGx5IHJldHVybiBOb25lIGFuZCBp
Z25vcmUgaW52YWxpZCBwb3J0IGF0dHJpYnV0ZXMuCisgICAgICAgIHJldHVybiBOb25lLCBOb25l
LCBOb25lCisKKyAgICBpZiBwb3J0IGlzIE5vbmU6CisgICAgICAgIGlmIHBhcnNlZC5zY2hlbWUg
PT0gJ3dzJzoKKyAgICAgICAgICAgIHBvcnQgPSA4MAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcG9ydCA9IDQ0MworCisgICAgcGF0aCA9IHBhcnNlZC5wYXRoCisgICAgaWYgbm90IHBhdGg6
CisgICAgICAgIHBhdGggKz0gJy8nCisgICAgaWYgcGFyc2VkLnF1ZXJ5OgorICAgICAgICBwYXRo
ICs9ICc/JyArIHBhcnNlZC5xdWVyeQorICAgIGlmIHBhcnNlZC5mcmFnbWVudDoKKyAgICAgICAg
cGF0aCArPSAnIycgKyBwYXJzZWQuZnJhZ21lbnQKKworICAgIHJldHVybiBwYXJzZWQuaG9zdG5h
bWUsIHBvcnQsIHBhdGgKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MzUzOTY3NjE4NDdhNjg0MDQ2NDg0MGIwZTcyZWJjN2JhMTUwZTQxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5CkBA
IC0wLDAgKzEsOTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJNZW1vcml6aW5nIGZpbGUuCisKK0EgbWVtb3JpemluZyBmaWxlIHdyYXBzIGEgZmlsZSBh
bmQgbWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCisiIiIKKworZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzeXMKKworCitjbGFzcyBNZW1vcml6
aW5nRmlsZShvYmplY3QpOgorICAgICIiIk1lbW9yaXppbmdGaWxlIHdyYXBzIGEgZmlsZSBhbmQg
bWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCisKKyAgICBOb3RlIHRoYXQgZGF0YSBy
ZWFkIGJ5IG90aGVyIG1ldGhvZHMgYXJlIG5vdCBtZW1vcml6ZWQuIFRoaXMgYmVoYXZpb3IKKyAg
ICBpcyBnb29kIGVub3VnaCBmb3IgbWVtb3JpemluZyBsaW5lcyBTaW1wbGVIVFRQU2VydmVyIHJl
YWRzIGJlZm9yZQorICAgIHRoZSBjb250cm9sIHJlYWNoZXMgV2ViU29ja2V0UmVxdWVzdEhhbmRs
ZXIuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfLCBtYXhfbWVtb3JpemVk
X2xpbmVzPXN5cy5tYXhzaXplKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBmaWxlXzogdGhlIGZpbGUgb2JqZWN0IHRvIHdy
YXAuCisgICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzOiB0aGUgbWF4aW11bSBudW1iZXIg
b2YgbGluZXMgdG8gbWVtb3JpemUuCisgICAgICAgICAgICAgICAgT25seSB0aGUgZmlyc3QgbWF4
X21lbW9yaXplZF9saW5lcyBhcmUgbWVtb3JpemVkLgorICAgICAgICAgICAgICAgIERlZmF1bHQ6
IHN5cy5tYXhpbnQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9maWxlID0gZmlsZV8KKyAg
ICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzID0gW10KKyAgICAgICAgc2VsZi5fbWF4X21lbW9y
aXplZF9saW5lcyA9IG1heF9tZW1vcml6ZWRfbGluZXMKKyAgICAgICAgc2VsZi5fYnVmZmVyZWQg
PSBGYWxzZQorICAgICAgICBzZWxmLl9idWZmZXJlZF9saW5lID0gTm9uZQorCisgICAgZGVmIF9f
Z2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlJldHVybiBhIGZpbGUgYXR0
cmlidXRlLgorICAgICAgICAKKyAgICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb3ZlcnJpZGRlbiBi
eSB0aGlzIGNsYXNzIGZvciBzb21lIGF0dHJpYnV0ZXMsCisgICAgICAgIGFuZCBmb3J3YXJkcyB0
aGUgY2FsbCB0byBfZmlsZSBmb3IgdGhlIG90aGVyIGF0dHJpYnV0ZXMuCisgICAgICAgICIiIgor
ICAgICAgICBpZiBuYW1lIGluICgnX2ZpbGUnLCAnX21lbW9yaXplZF9saW5lcycsICdfbWF4X21l
bW9yaXplZF9saW5lcycsCisgICAgICAgICAgICAgICAgICAgICdfYnVmZmVyZWQnLCAnX2J1ZmZl
cmVkX2xpbmUnLCAncmVhZGxpbmUnLAorICAgICAgICAgICAgICAgICAgICAnZ2V0X21lbW9yaXpl
ZF9saW5lcycpOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNl
bGYsIG5hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlLl9fZ2V0YXR0cmlidXRlX18obmFt
ZSkKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiT3ZlcnJp
ZGUgZmlsZS5yZWFkbGluZSBhbmQgbWVtb3JpemUgdGhlIGxpbmUgcmVhZC4KKworICAgICAgICBO
b3RlIHRoYXQgZXZlbiBpZiBzaXplIGlzIHNwZWNpZmllZCBhbmQgc21hbGxlciB0aGFuIGFjdHVh
bCBzaXplLAorICAgICAgICB0aGUgd2hvbGUgbGluZSB3aWxsIGJlIHJlYWQgb3V0IGZyb20gdW5k
ZXJseWluZyBmaWxlIG9iamVjdCBieQorICAgICAgICBzdWJzZXF1ZW50IHJlYWRsaW5lIGNhbGxz
LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fYnVmZmVyZWQ6CisgICAgICAgICAgICBs
aW5lID0gc2VsZi5fYnVmZmVyZWRfbGluZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBG
YWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxp
bmUoKQorICAgICAgICAgICAgaWYgbGluZSBhbmQgbGVuKHNlbGYuX21lbW9yaXplZF9saW5lcykg
PCBzZWxmLl9tYXhfbWVtb3JpemVkX2xpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYuX21lbW9y
aXplZF9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBzaXplIDwg
bGVuKGxpbmUpOgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWQgPSBUcnVlCisgICAgICAgICAg
ICBzZWxmLl9idWZmZXJlZF9saW5lID0gbGluZVtzaXplOl0KKyAgICAgICAgICAgIHJldHVybiBs
aW5lWzpzaXplXQorICAgICAgICByZXR1cm4gbGluZQorCisgICAgZGVmIGdldF9tZW1vcml6ZWRf
bGluZXMoc2VsZik6CisgICAgICAgICIiIkdldCBsaW5lcyBtZW1vcml6ZWQgc28gZmFyLiIiIgor
ICAgICAgICByZXR1cm4gc2VsZi5fbWVtb3JpemVkX2xpbmVzCisKKworIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRp
bC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1OGNhNzhlMTRhZDI1ZTdhNDRkMWFiMjYyZTdiZDM1Y2VhZWE1ZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQpA
QCAtMCwwICsxLDIxNCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJNZXNzYWdlIHJlbGF0ZWQgdXRp
bGl0aWVzLgorCitOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBp
biB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKK21vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0
IHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uCitoYW5kbGVycy4gVW5mb3J0
dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKK3JlcXVlc3Qu
d3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJl
Y3QgcmF3CitieXRlcyB3cml0aW5nL3JlYWRpbmcuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0aHJl
YWRpbmcKKworIyBFeHBvcnQgRXhjZXB0aW9uIHN5bWJvbHMgZnJvbSBtc2d1dGlsIGZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5Citmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlv
bnMgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRGcmFtZUV4Y2VwdGlvbgorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBCYWRPcGVyYXRpb25F
eGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQg
VW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCisKKyMgQW4gQVBJIGZvciBoYW5kbGVyIHRvIHNl
bmQvcmVjZWl2ZSBXZWJTb2NrZXQgbWVzc2FnZXMuCitkZWYgY2xvc2VfY29ubmVjdGlvbihyZXF1
ZXN0KToKKyAgICAiIiJDbG9zZSBjb25uZWN0aW9uLgorCisgICAgQXJnczoKKyAgICAgICAgcmVx
dWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIHJlcXVlc3Qud3Nfc3RyZWFt
LmNsb3NlX2Nvbm5lY3Rpb24oKQorCisKK2RlZiBzZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9h
ZF9kYXRhLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJTZW5kIGEgbWVzc2FnZSAo
b3IgcGFydCBvZiBhIG1lc3NhZ2UpLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9k
X3B5dGhvbiByZXF1ZXN0LgorICAgICAgICBwYXlsb2FkX2RhdGE6IHVuaWNvZGUgdGV4dCBvciBz
dHIgYmluYXJ5IHRvIHNlbmQuCisgICAgICAgIGVuZDogVHJ1ZSB0byB0ZXJtaW5hdGUgYSBtZXNz
YWdlLgorICAgICAgICAgICAgIEZhbHNlIHRvIHNlbmQgcGF5bG9hZF9kYXRhIGFzIHBhcnQgb2Yg
YSBtZXNzYWdlIHRoYXQgaXMgdG8gYmUKKyAgICAgICAgICAgICB0ZXJtaW5hdGVkIGJ5IG5leHQg
b3IgbGF0ZXIgc2VuZF9tZXNzYWdlIGNhbGwgd2l0aCBlbmQ9VHJ1ZS4KKyAgICAgICAgYmluYXJ5
OiBzZW5kIHBheWxvYWRfZGF0YSBhcyBiaW5hcnkgZnJhbWUocykuCisgICAgUmFpc2VzOgorICAg
ICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gc2VydmVyIGFscmVhZHkgdGVybWluYXRl
ZC4KKyAgICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UocGF5bG9hZF9k
YXRhLCBlbmQsIGJpbmFyeSkKKworCitkZWYgcmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpOgorICAg
ICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5bG9hZCBhcyBh
IHRleHQgaW4KKyAgICB1bmljb2RlIG9yIGEgYmluYXJ5IGluIHN0ci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICBSYWlzZXM6CisgICAgICAg
IEludmFsaWRGcmFtZUV4Y2VwdGlvbjogICAgIHdoZW4gY2xpZW50IHNlbmQgaW52YWxpZCBmcmFt
ZS4KKyAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbjogd2hlbiBjbGllbnQgc2VuZCB1
bnN1cHBvcnRlZCBmcmFtZSBlLmcuIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2YgcmVzZXJ2ZWQgYml0IGlzIHNldCBidXQgbm8gZXh0ZW5zaW9uIGNhbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgaXQuCisgICAgICAgIEludmFs
aWRVVEY4RXhjZXB0aW9uOiAgICAgIHdoZW4gY2xpZW50IHNlbmQgYSB0ZXh0IGZyYW1lIGNvbnRh
aW5pbmcgYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgVVRG
LTggc3RyaW5nLgorICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0
aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5leHBlY3RlZGx5LgorICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246ICAgICB3aGVu
IGNsaWVudCBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAgcmV0dXJuIHJlcXVlc3Qu
d3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKworZGVmIHNlbmRfcGluZyhyZXF1ZXN0LCBi
b2R5KToKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoYm9keSkKKworCitjbGFzcyBN
ZXNzYWdlUmVjZWl2ZXIodGhyZWFkaW5nLlRocmVhZCk6CisgICAgIiIiVGhpcyBjbGFzcyByZWNl
aXZlcyBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRocmVlIHdheXMgdG8gcmVjZWl2ZSBtZXNzYWdlczogYmxvY2tpbmcsCisgICAgbm9uLWJsb2Nr
aW5nLCBhbmQgdmlhIGNhbGxiYWNrLiBDYWxsYmFjayBoYXMgdGhlIGhpZ2hlc3QgcHJlY2VkZW5j
ZS4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGggdGhlIHN0
YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBiZWNhdXNlIHB5T3BlblNTTCB1c2VkIGJ5IHRo
ZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tldAorICAgIGlzIGFjY2Vz
c2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgb25tZXNzYWdlPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKyAgICAgICAgICAgIG9ubWVzc2FnZTogYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQg
d2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgIE1heSBi
ZSBOb25lLiBJZiBub3QgTm9uZSwgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbgorICAgICAgICAg
ICAgICAgICAgICAgICBhbm90aGVyIHRocmVhZC4gSW4gdGhhdCBjYXNlLCBNZXNzYWdlUmVjZWl2
ZXIucmVjZWl2ZQorICAgICAgICAgICAgICAgICAgICAgICBhbmQgTWVzc2FnZVJlY2VpdmVyLnJl
Y2VpdmVfbm93YWl0IGFyZSB1c2VsZXNzCisgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2Ug
dGhleSB3aWxsIG5ldmVyIHJldHVybiBhbnkgbWVzc2FnZXMuCisgICAgICAgICIiIgorCisgICAg
ICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fcmVxdWVz
dCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fcXVldWUgPSBzaXgubW92ZXMucXVldWUuUXVldWUo
KQorICAgICAgICBzZWxmLl9vbm1lc3NhZ2UgPSBvbm1lc3NhZ2UKKyAgICAgICAgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAg
ICBzZWxmLnN0YXJ0KCkKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gcmVjZWl2ZV9tZXNzYWdlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fb25tZXNzYWdlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9vbm1lc3NhZ2Uo
bWVzc2FnZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWV1ZS5wdXQobWVzc2FnZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGNsb3Nl
X2Nvbm5lY3Rpb24oc2VsZi5fcmVxdWVzdCkKKworICAgIGRlZiByZWNlaXZlKHNlbGYpOgorICAg
ICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgYmxvY2tpbmcuCisK
KyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIG1lc3NhZ2UgYXMgYSB1bmljb2RlIHN0cmlu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9xdWV1ZS5nZXQoKQorCisgICAg
ZGVmIHJlY2VpdmVfbm93YWl0KHNlbGYpOgorICAgICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2Ug
ZnJvbSB0aGUgY2hhbm5lbCwgbm9uLWJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6CisgICAg
ICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcgaWYgYXZhaWxhYmxlLiBOb25lIG90
aGVyd2lzZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1lc3NhZ2Ug
PSBzZWxmLl9xdWV1ZS5nZXRfbm93YWl0KCkKKyAgICAgICAgZXhjZXB0IHNpeC5tb3Zlcy5xdWV1
ZS5FbXB0eToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBOb25lCisgICAgICAgIHJldHVybiBtZXNz
YWdlCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgIiIiUmVxdWVzdCB0byBzdG9wIHRo
aXMgaW5zdGFuY2UuCisKKyAgICAgICAgVGhlIGluc3RhbmNlIHdpbGwgYmUgc3RvcHBlZCBhZnRl
ciByZWNlaXZpbmcgdGhlIG5leHQgbWVzc2FnZS4KKyAgICAgICAgVGhpcyBtZXRob2QgbWF5IG5v
dCBiZSB2ZXJ5IHVzZWZ1bCwgYnV0IHRoZXJlIGlzIG5vIGNsZWFuIHdheQorICAgICAgICBpbiBQ
eXRob24gdG8gZm9yY2VmdWxseSBzdG9wIGEgcnVubmluZyB0aHJlYWQuCisgICAgICAgICIiIgor
ICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IFRydWUKKworCitjbGFzcyBNZXNzYWdlU2Vu
ZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICIiIlRoaXMgY2xhc3Mgc2VuZHMgbWVzc2FnZXMg
dG8gdGhlIGNsaWVudC4KKworICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYm90aCBzeW5jaHJvbm91
cyBhbmQgYXN5bmNocm9ub3VzIHdheXMgdG8gc2VuZAorICAgIG1lc3NhZ2VzLgorCisgICAgTm90
ZTogVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2
ZXIgZm9yIHdzcworICAgIGJlY2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlz
ZXMgYSBmYXRhbCBlcnJvciBpZiB0aGUgc29ja2V0CisgICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorICAgICAg
ICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3Qg
PSByZXF1ZXN0CisgICAgICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkK
KyAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisKKyAg
ICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbWVzc2Fn
ZSwgY29uZGl0aW9uID0gc2VsZi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5h
Y3F1aXJlKCkKKyAgICAgICAgICAgIHNlbmRfbWVzc2FnZShzZWxmLl9yZXF1ZXN0LCBtZXNzYWdl
KQorICAgICAgICAgICAgY29uZGl0aW9uLm5vdGlmeSgpCisgICAgICAgICAgICBjb25kaXRpb24u
cmVsZWFzZSgpCisKKyAgICBkZWYgc2VuZChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2Vu
ZCBhIG1lc3NhZ2UsIGJsb2NraW5nLiIiIgorCisgICAgICAgIGNvbmRpdGlvbiA9IHRocmVhZGlu
Zy5Db25kaXRpb24oKQorICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgIHNlbGYu
X3F1ZXVlLnB1dCgobWVzc2FnZSwgY29uZGl0aW9uKSkKKyAgICAgICAgY29uZGl0aW9uLndhaXQo
KQorCisgICAgZGVmIHNlbmRfbm93YWl0KHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJTZW5k
IGEgbWVzc2FnZSwgbm9uLWJsb2NraW5nLiIiIgorCisgICAgICAgIHNlbGYuX3F1ZXVlLnB1dCgo
bWVzc2FnZSwgdGhyZWFkaW5nLkNvbmRpdGlvbigpKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9yZXF1ZXN0X2hh
bmRsZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5k
bGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUwMzhkOWY0M2FjZDM3YmY1YTFiMTBhMGNlNTU4NWJkNTFlZDYw
MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
cmVxdWVzdF9oYW5kbGVyLnB5CkBAIC0wLDAgKzEsMzE5IEBACisjIENvcHlyaWdodCAyMDIwLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IlJlcXVlc3QgSGFuZGxlciBhbmQgUmVxdWVzdC9Db25uZWN0aW9uIGNsYXNzZXMgZm9yIHN0YW5k
YWxvbmUgc2VydmVyLgorIiIiCisKK2ltcG9ydCBvcworCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQg
Q0dJSFRUUFNlcnZlcgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IGh0dHBfY2xpZW50CisKK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBtZW1vcml6aW5nZmlsZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0
aWwKKworIyAxMDI0IGlzIHByYWN0aWNhbGx5IGxhcmdlIGVub3VnaCB0byBjb250YWluIFdlYlNv
Y2tldCBoYW5kc2hha2UgbGluZXMuCitfTUFYX01FTU9SSVpFRF9MSU5FUyA9IDEwMjQKKworCitj
bGFzcyBfU3RhbmRhbG9uZUNvbm5lY3Rpb24ob2JqZWN0KToKKyAgICAiIiJNaW1pYyBtb2RfcHl0
aG9uIG1wX2Nvbm4uIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlcik6
CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAg
ICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3Rh
bmNlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKKworICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKKyAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKKworICAgICAgICByZXR1cm4g
KHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCisgICAgICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKKworICAgIGxvY2Fs
X2FkZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKKworICAgIGRlZiBnZXRfcmVtb3RlX2Fk
ZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9hZGRy
LgorCisgICAgICAgIFNldHRpbmcgdGhlIHByb3BlcnR5IGluIF9faW5pdF9fIHdvbid0IHdvcmsg
YmVjYXVzZSB0aGUgcmVxdWVzdAorICAgICAgICBoYW5kbGVyIGlzIG5vdCBpbml0aWFsaXplZCB5
ZXQgdGhlcmUuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5jbGll
bnRfYWRkcmVzcworCisgICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIp
CisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk1pbWljIG1wX2Nvbm4u
d3JpdGUoKS4iIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLndmaWxl
LndyaXRlKGRhdGEpCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJN
aW1pYyBtcF9jb25uLnJlYWQoKS4iIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9o
YW5kbGVyLnJmaWxlLnJlYWQobGVuZ3RoKQorCisgICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMo
c2VsZik6CisgICAgICAgICIiIkdldCBtZW1vcml6ZWQgbGluZXMuIiIiCisKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKKwor
CitjbGFzcyBfU3RhbmRhbG9uZVJlcXVlc3Qob2JqZWN0KToKKyAgICAiIiJNaW1pYyBtb2RfcHl0
aG9uIHJlcXVlc3QuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlciwg
dXNlX3Rscyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5k
bGVyIGluc3RhbmNlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGls
LmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIg
PSByZXF1ZXN0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gX1N0YW5kYWxvbmVD
b25uZWN0aW9uKHJlcXVlc3RfaGFuZGxlcikKKyAgICAgICAgc2VsZi5fdXNlX3RscyA9IHVzZV90
bHMKKyAgICAgICAgc2VsZi5oZWFkZXJzX2luID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMKKwor
ICAgIGRlZiBnZXRfdXJpKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVz
dC51cmkuCisKKyAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcmF3IGRhdGEgYXQgdGhl
IFJlcXVlc3QtVVJJIHBhcnQgb2YgdGhlCisgICAgICAgIFJlcXVlc3QtTGluZSwgd2hpbGUgdGhl
IHVyaSBtZXRob2Qgb24gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIG1vZF9weXRob24KKyAgICAgICAg
cmV0dXJucyB0aGUgcGF0aCBwb3J0aW9uIGFmdGVyIHBhcnNpbmcgdGhlIHJhdyBkYXRhLiBUaGlz
IGJlaGF2aW9yIGlzCisgICAgICAgIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkuCisgICAgICAgICIi
IgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAorCisgICAgdXJp
ID0gcHJvcGVydHkoZ2V0X3VyaSkKKworICAgIGRlZiBnZXRfdW5wYXJzZWRfdXJpKHNlbGYpOgor
ICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC51bnBhcnNlZF91cmkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5wYXRoCisKKyAgICB1bnBhcnNlZF91
cmkgPSBwcm9wZXJ0eShnZXRfdW5wYXJzZWRfdXJpKQorCisgICAgZGVmIGdldF9tZXRob2Qoc2Vs
Zik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKKworICAg
ICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKKworICAgIG1ldGhvZCA9
IHByb3BlcnR5KGdldF9tZXRob2QpCisKKyAgICBkZWYgZ2V0X3Byb3RvY29sKHNlbGYpOgorICAg
ICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC5wcm90b2NvbC4iIiIKKworICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJlcXVlc3RfdmVyc2lvbgorCisgICAgcHJvdG9j
b2wgPSBwcm9wZXJ0eShnZXRfcHJvdG9jb2wpCisKKyAgICBkZWYgaXNfaHR0cHMoc2VsZik6Cisg
ICAgICAgICIiIk1pbWljIHJlcXVlc3QuaXNfaHR0cHMoKS4iIiIKKworICAgICAgICByZXR1cm4g
c2VsZi5fdXNlX3RscworCisKK2NsYXNzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyKENHSUhUVFBT
ZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyKToKKyAgICAiIiJDR0lIVFRQUmVxdWVzdEhhbmRs
ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4iIiIKKworICAgICMgVXNlIGh0dHBsaWIuSFRU
UE1lc3NhZ2UgaW5zdGVhZCBvZiBtaW1ldG9vbHMuTWVzc2FnZS4KKyAgICBNZXNzYWdlQ2xhc3Mg
PSBodHRwX2NsaWVudC5IVFRQTWVzc2FnZQorCisgICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAg
ICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIuc2V0dXAgdG8g
d3JhcCByZmlsZQorICAgICAgICB3aXRoIE1lbW9yaXppbmdGaWxlLgorCisgICAgICAgIFRoaXMg
bWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJ5IEJhc2VSZXF1ZXN0SGFuZGxlcidzIGNvbnN0cnVjdG9y
CisgICAgICAgIGJlZm9yZSBjYWxsaW5nIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlLgor
ICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZSB3aWxsIGNhbGwKKyAgICAgICAg
QmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgYW5kIGl0IHdpbGwgY2Fs
bAorICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgorICAgICAg
ICAiIiIKKworICAgICAgICAjIENhbGwgc3VwZXJjbGFzcydzIHNldHVwIHRvIHByZXBhcmUgcmZp
bGUsIHdmaWxlLCBldGMuIFNlZSBzZXR1cAorICAgICAgICAjIGRlZmluaXRpb24gb24gdGhlIHJv
b3QgY2xhc3MgU29ja2V0U2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyIHRvCisgICAgICAgICMg
dW5kZXJzdGFuZCB3aGF0IHRoaXMgZG9lcy4KKyAgICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQ
UmVxdWVzdEhhbmRsZXIuc2V0dXAoc2VsZikKKworICAgICAgICBzZWxmLnJmaWxlID0gbWVtb3Jp
emluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCisgICAgICAgICAgICBzZWxmLnJmaWxlLCBtYXhfbWVt
b3JpemVkX2xpbmVzPV9NQVhfTUVNT1JJWkVEX0xJTkVTKQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpOgorICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25z
ID0gc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworCisgICAgICAgICMgT3ZlcnJpZGVz
IENHSUhUVFBTZXJ2ZXJSZXF1ZXN0SGFuZGxlci5jZ2lfZGlyZWN0b3JpZXMuCisgICAgICAgIHNl
bGYuY2dpX2RpcmVjdG9yaWVzID0gc2VsZi5fb3B0aW9ucy5jZ2lfZGlyZWN0b3JpZXMKKyAgICAg
ICAgIyBSZXBsYWNlIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5pc19leGVjdXRhYmxlIG1ldGhvZC4K
KyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuaXNfZXhlY3V0YWJsZSA9IHNlbGYuX29wdGlvbnMuaXNfZXhl
Y3V0YWJsZV9tZXRob2QKKworICAgICAgICAjIFRoaXMgYWN0dWFsbHkgY2FsbHMgQmFzZVJlcXVl
c3RIYW5kbGVyLl9faW5pdF9fLgorICAgICAgICBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlci5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfYWRkcmVzcywgc2VydmVyKQorCisg
ICAgZGVmIHBhcnNlX3JlcXVlc3Qoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQ
U2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KKworICAgICAgICBS
ZXR1cm4gVHJ1ZSB0byBjb250aW51ZSBwcm9jZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhl
cndpc2UuCisKKyAgICAgICAgU2VlIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9y
ZXF1ZXN0IG1ldGhvZCB3aGljaCBjYWxscworICAgICAgICB0aGlzIG1ldGhvZCB0byB1bmRlcnN0
YW5kIGhvdyB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgaGFuZGxlZC4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgIyBXZSBob29rIHBhcnNlX3JlcXVlc3QgbWV0aG9kLCBidXQgYWxzbyBjYWxsIHRo
ZSBvcmlnaW5hbAorICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0
IHNpbmNlIHdoZW4gd2UgcmV0dXJuIEZhbHNlLAorICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFu
ZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgY29udGludWVzIHByb2Nlc3NpbmcgYW5kCisgICAgICAg
ICMgaXQgbmVlZHMgdmFyaWFibGVzIHNldCBieSBDR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2Vf
cmVxdWVzdC4KKyAgICAgICAgIworICAgICAgICAjIFZhcmlhYmxlcyBzZXQgYnkgdGhpcyBtZXRo
b2Qgd2lsbCBiZSBhbHNvIHVzZWQgYnkgV2ViU29ja2V0IHJlcXVlc3QKKyAgICAgICAgIyBoYW5k
bGluZyAoc2VsZi5wYXRoLCBzZWxmLmNvbW1hbmQsIHNlbGYucmVxdWVzdGxpbmUsIGV0Yy4gU2Vl
IGFsc28KKyAgICAgICAgIyBob3cgX1N0YW5kYWxvbmVSZXF1ZXN0J3MgbWVtYmVycyBhcmUgaW1w
bGVtZW50ZWQgdXNpbmcgdGhlc2UKKyAgICAgICAgIyBhdHRyaWJ1dGVzKS4KKyAgICAgICAgaWYg
bm90IENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qoc2Vs
Zik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnVzZV9iYXNpY19hdXRoOgorICAgICAgICAgICAgYXV0aCA9IHNlbGYuaGVhZGVycy5nZXRoZWFk
ZXIoJ0F1dGhvcml6YXRpb24nKQorICAgICAgICAgICAgaWYgYXV0aCAhPSBzZWxmLl9vcHRpb25z
LmJhc2ljX2F1dGhfY3JlZGVudGlhbDoKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9u
c2UoNDAxKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ1dXVy1BdXRoZW50aWNh
dGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIHJlYWxtPSJQeXdl
YnNvY2tldCInKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdSZXF1ZXN0IGJhc2ljIGF1dGhlbnRpY2F0aW9uJykK
KyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBob3N0LCBwb3J0LCByZXNv
dXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKHNlbGYucGF0aCkKKyAgICAgICAgaWYg
cmVzb3VyY2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdJbnZhbGlk
IFVSSTogJXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFs
bGJhY2sgdG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJykKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi5zZXJ2ZXIud2Vic29ja2V0X3NlcnZlcl9v
cHRpb25zCisgICAgICAgIGlmIGhvc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2YWxpZGF0
aW9uX2hvc3QgPSBzZXJ2ZXJfb3B0aW9ucy52YWxpZGF0aW9uX2hvc3QKKyAgICAgICAgICAgIGlm
IHZhbGlkYXRpb25faG9zdCBpcyBub3QgTm9uZSBhbmQgaG9zdCAhPSB2YWxpZGF0aW9uX2hvc3Q6
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgaG9zdDogJXIgKGV4
cGVjdGVkOiAlciknLCBob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRpb25faG9zdCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJh
Y2sgdG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJykKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICBpZiBwb3J0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9w
b3J0ID0gc2VydmVyX29wdGlvbnMudmFsaWRhdGlvbl9wb3J0CisgICAgICAgICAgICBpZiB2YWxp
ZGF0aW9uX3BvcnQgaXMgbm90IE5vbmUgYW5kIHBvcnQgIT0gdmFsaWRhdGlvbl9wb3J0OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdJbnZhbGlkIHBvcnQ6ICVyIChleHBlY3Rl
ZDogJXIpJywgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0
aW9uX3BvcnQpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRv
IENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgc2VsZi5wYXRoID0gcmVzb3VyY2UKKworICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxv
bmVSZXF1ZXN0KHNlbGYsIHNlbGYuX29wdGlvbnMudXNlX3RscykKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0
IHBhdGhzIGZvciB3aGljaAorICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFu
ZGxlcnMuCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9o
YW5kbGVyX3N1aXRlKHNlbGYucGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ05vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAlcicsIHNlbGYucGF0aCkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sgdG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVy
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBleGNlcHQgZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdE
aXNwYXRjaCBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCisgICAgICAgICAgICBzZWxmLnNlbmRf
ZXJyb3IoZS5zdGF0dXMpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjIElm
IGFueSBFeGNlcHRpb25zIHdpdGhvdXQgZXhjZXB0IGNsYXVzZSBzZXR1cCAoaW5jbHVkaW5nCisg
ICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24pIGlzIHJhaXNlZCBiZWxvdyB0aGlzIHBvaW50LCBp
dCB3aWxsIGJlIGNhdWdodAorICAgICAgICAjIGFuZCBsb2dnZWQgYnkgV2ViU29ja2V0U2VydmVy
LgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5k
c2hha2UuZG9faGFuZHNoYWtlKHJlcXVlc3QsIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcikKKyAg
ICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFpbGVkIGZvciB2ZXJzaW9u
IGVycm9yOiAlcycsIGUpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKGNvbW1v
bi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVh
ZGVyKGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZS5zdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgICAgICAgICAgICAg
c2VsZi5lbmRfaGVhZGVycygpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
ICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgICMgSGFuZHNoYWtlIGZvciB3cyhzKSBmYWlsZWQuCisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCisgICAg
ICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQorICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gc2VsZi5fb3B0
aW9ucy5kaXNwYXRjaGVyCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIudHJh
bnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVz
ZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdBYm9ydGVk
OiAlcycsIGUpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGxvZ19yZXF1ZXN0KHNl
bGYsIGNvZGU9Jy0nLCBzaXplPSctJyk6CisgICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2Vy
dmVyLmxvZ19yZXF1ZXN0LiIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCciJXMiICVz
ICVzJywgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIoc2l6ZSkpCisKKyAgICBkZWYg
bG9nX2Vycm9yKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2
ZXIubG9nX2Vycm9yLiIiIgorCisgICAgICAgICMgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBtZXRo
b2QgaXMgZm9yIHdhcm5pbmdzIHRoYW4gZm9yIGVycm9ycy4KKyAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgSFRUUCBzdGF0dXMgY29kZSBpcyBsb2dnZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICAgIHNl
bGYuX2xvZ2dlci53YXJuaW5nKCclcyAtICVzJywgc2VsZi5hZGRyZXNzX3N0cmluZygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdICUgYXJnc1sxOl0pCisKKyAgICBkZWYg
aXNfY2dpKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdoZXRoZXIgc2VsZi5wYXRoIGNvcnJlc3Bv
bmRzIHRvIGEgQ0dJIHNjcmlwdC4KKworICAgICAgICBBZGQgZXh0cmEgY2hlY2sgdGhhdCBzZWxm
LnBhdGggZG9lc24ndCBjb250YWlucyAuLgorICAgICAgICBBbHNvIGNoZWNrIGlmIHRoZSBmaWxl
IGlzIGEgZXhlY3V0YWJsZSBmaWxlIG9yIG5vdC4KKyAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90
IGV4ZWN1dGFibGUsIGl0IGlzIGhhbmRsZWQgYXMgc3RhdGljIGZpbGUgb3IgZGlyCisgICAgICAg
IHJhdGhlciB0aGFuIGEgQ0dJIHNjcmlwdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgQ0dJ
SFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuaXNfY2dpKHNlbGYpOgorICAgICAgICAg
ICAgaWYgJy4uJyBpbiBzZWxmLnBhdGg6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgICAgICAjIHN0cmlwIHF1ZXJ5IHBhcmFtZXRlciBmcm9tIHJlcXVlc3QgcGF0aAorICAg
ICAgICAgICAgcmVzb3VyY2VfbmFtZSA9IHNlbGYucGF0aC5zcGxpdCgnPycsIDIpWzBdCisgICAg
ICAgICAgICAjIGNvbnZlcnQgcmVzb3VyY2VfbmFtZSBpbnRvIHJlYWwgcGF0aCBuYW1lIGluIGZp
bGVzeXN0ZW0uCisgICAgICAgICAgICBzY3JpcHRmaWxlID0gc2VsZi50cmFuc2xhdGVfcGF0aChy
ZXNvdXJjZV9uYW1lKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNjcmlwdGZp
bGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHNl
bGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L3NlcnZlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3NlcnZlcl91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmOWUyNzNlOTc3MDg0NGI3Y2I0NDYxNmViZjk4
MjU4ODZiZjQ0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvc2VydmVyX3V0aWwucHkKQEAgLTAsMCArMSw4NyBAQAorIyBDb3B5cmlnaHQgMjAy
MCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJTZXJ2ZXIgcmVsYXRlZCB1dGlsaXRpZXMuIiIiCisKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgbG9nZ2luZy5oYW5kbGVycworaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKKworZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKKworCitkZWYgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyhjKToKKyAgICByZXR1cm4g
bG9nZ2luZy5nZXRMb2dnZXIoJyVzLiVzJyAlIChjLl9fbW9kdWxlX18sIGMuX19uYW1lX18pKQor
CisKK2RlZiBjb25maWd1cmVfbG9nZ2luZyhvcHRpb25zKToKKyAgICBsb2dnaW5nLmFkZExldmVs
TmFtZShjb21tb24uTE9HTEVWRUxfRklORSwgJ0ZJTkUnKQorCisgICAgbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoKQorICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLmdldExldmVsTmFtZShv
cHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKKyAgICBpZiBvcHRpb25zLmxvZ19maWxlOgorICAg
ICAgICBoYW5kbGVyID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKG9wdGlv
bnMubG9nX2ZpbGUsICdhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ19tYXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dfY291bnQpCisgICAg
ZWxzZToKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCisgICAgZm9y
bWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoCisgICAgICAgICdbJShhc2N0aW1lKXNdIFslKGxl
dmVsbmFtZSlzXSAlKG5hbWUpczogJShtZXNzYWdlKXMnKQorICAgIGhhbmRsZXIuc2V0Rm9ybWF0
dGVyKGZvcm1hdHRlcikKKyAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCisgICAgZGVm
bGF0ZV9sb2dfbGV2ZWxfbmFtZSA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKAorICAgICAgICBvcHRp
b25zLmRlZmxhdGVfbG9nX2xldmVsLnVwcGVyKCkpCisgICAgX2dldF9sb2dnZXJfZnJvbV9jbGFz
cyh1dGlsLl9EZWZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKyAgICBf
Z2V0X2xvZ2dlcl9mcm9tX2NsYXNzKHV0aWwuX0luZmxhdGVyKS5zZXRMZXZlbChkZWZsYXRlX2xv
Z19sZXZlbF9uYW1lKQorCisKK2NsYXNzIFRocmVhZE1vbml0b3IodGhyZWFkaW5nLlRocmVhZCk6
CisgICAgZGFlbW9uID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVydmFsX2lu
X3NlYyk6CisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0nVGhy
ZWFkTW9uaXRvcicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9n
Z2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faW50ZXJ2YWxfaW5fc2VjID0gaW50ZXJ2YWxfaW5f
c2VjCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAg
ICAgdGhyZWFkX25hbWVfbGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVh
ZGluZy5lbnVtZXJhdGUoKToKKyAgICAgICAgICAgICAgICB0aHJlYWRfbmFtZV9saXN0LmFwcGVu
ZCh0aHJlYWQubmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCIlZCBhY3RpdmUg
dGhyZWFkczogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLmFj
dGl2ZV9jb3VudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHRo
cmVhZF9uYW1lX2xpc3QpKQorICAgICAgICAgICAgdGltZS5zbGVlcChzZWxmLl9pbnRlcnZhbF9p
bl9zZWMpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21v
ZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNDJjNDk2YzU4YTIzYjZj
ZTRjMjNlZWUwYmE0NjIwOTU0NTI2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpAQCAtMCwwICsxLDQ3OCBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlN0YW5kYWxvbmUgV2Vi
U29ja2V0IHNlcnZlci4KKworVXNlIHRoaXMgZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgYXMg
YSBzdGFuZGFsb25lIHNlcnZlci4KKworCitCQVNJQyBVU0FHRQorPT09PT09PT09PT0KKworR28g
dG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1bgorCisgICQgcHl0aG9uIG1vZF9weXdlYnNvY2tl
dC9zdGFuZGFsb25lLnB5IFstcCA8d3NfcG9ydD5dCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFstdyA8d2Vic29ja19oYW5kbGVycz5dCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFstZCA8ZG9jdW1lbnRfcm9vdD5dCisKKzx3c19wb3J0
PiBpcyB0aGUgcG9ydCBudW1iZXIgdG8gdXNlIGZvciB3czovLyBjb25uZWN0aW9uLgorCis8ZG9j
dW1lbnRfcm9vdD4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIEhUTUwgZmls
ZXMuCisKKzx3ZWJzb2NrX2hhbmRsZXJzPiBpcyB0aGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgV2ViU29ja2V0IGhhbmRsZXJzLgorSWYgbm90IHNwZWNpZmllZCwgPGRvY3VtZW50X3Jv
b3Q+IHdpbGwgYmUgdXNlZC4gU2VlIF9faW5pdF9fLnB5IChvcgorcnVuICQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0KSBmb3IgaG93IHRvIHdyaXRlIFdlYlNvY2tldCBoYW5kbGVycy4KKworRm9yIG1v
cmUgZGV0YWlsIGFuZCBvdGhlciBvcHRpb25zLCBydW4KKworICAkIHB5dGhvbiBtb2RfcHl3ZWJz
b2NrZXQvc3RhbmRhbG9uZS5weSAtLWhlbHAKKworb3Igc2VlIF9idWlsZF9vcHRpb25fcGFyc2Vy
IG1ldGhvZCBiZWxvdy4KKworRm9yIHRyb3VibGUgc2hvb3RpbmcsIGFkZGluZyAiLS1sb2dfbGV2
ZWwgZGVidWciIG1pZ2h0IGhlbHAgeW91LgorCisKK1RSWSBERU1PCis9PT09PT09PQorCitHbyB0
byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgcnVuIHN0YW5kYWxvbmUucHkgd2l0aCAtZCBvcHRpb24g
dG8gc2V0IHRoZQorZG9jdW1lbnQgcm9vdCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgZXhh
bXBsZSBIVE1McyBhbmQgaGFuZGxlcnMgbGlrZSB0aGlzOgorCisgICQgY2Qgc3JjCisgICQgUFlU
SE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtZCBleGFtcGxl
CisKK3RvIGxhdW5jaCBweXdlYnNvY2tldCB3aXRoIHRoZSBzYW1wbGUgaGFuZGxlciBhbmQgaHRt
bCBvbiBwb3J0IDgwLiBPcGVuCitodHRwOi8vbG9jYWxob3N0L2NvbnNvbGUuaHRtbCwgY2xpY2sg
dGhlIGNvbm5lY3QgYnV0dG9uLCB0eXBlIHNvbWV0aGluZyBpbnRvCit0aGUgdGV4dCBib3ggbmV4
dCB0byB0aGUgc2VuZCBidXR0b24gYW5kIGNsaWNrIHRoZSBzZW5kIGJ1dHRvbi4gSWYgZXZlcnl0
aGluZworaXMgd29ya2luZywgeW91J2xsIHNlZSB0aGUgbWVzc2FnZSB5b3UgdHlwZWQgZWNob2Vk
IGJ5IHRoZSBzZXJ2ZXIuCisKKworVVNJTkcgVExTCis9PT09PT09PT0KKworVG8gcnVuIHRoZSBz
dGFuZGFsb25lIHNlcnZlciB3aXRoIFRMUyBzdXBwb3J0LCBydW4gaXQgd2l0aCAtdCwgLWssIGFu
ZCAtYworb3B0aW9ucy4gV2hlbiBUTFMgaXMgZW5hYmxlZCwgdGhlIHN0YW5kYWxvbmUgc2VydmVy
IGFjY2VwdHMgb25seSBUTFMgY29ubmVjdGlvbi4KKworTm90ZSB0aGF0IHdoZW4gc3NsIG1vZHVs
ZSBpcyB1c2VkIGFuZCB0aGUga2V5L2NlcnQgbG9jYXRpb24gaXMgaW5jb3JyZWN0LAorVExTIGNv
bm5lY3Rpb24gc2lsZW50bHkgZmFpbHMgd2hpbGUgcHlPcGVuU1NMIGZhaWxzIG9uIHN0YXJ0dXAu
CisKK0V4YW1wbGU6CisKKyAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9z
dGFuZGFsb25lLnB5IFwKKyAgICAgICAgLWQgZXhhbXBsZSBcCisgICAgICAgIC1wIDEwNDQzIFwK
KyAgICAgICAgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gXAorICAgICAg
ICAtayAuLi90ZXN0L2NlcnQva2V5LnBlbSBcCisKK05vdGUgdGhhdCB3aGVuIHBhc3NpbmcgYSBy
ZWxhdGl2ZSBwYXRoIHRvIC1jIGFuZCAtayBvcHRpb24sIGl0IHdpbGwgYmUgcmVzb2x2ZWQKK3Vz
aW5nIHRoZSBkb2N1bWVudCByb290IGRpcmVjdG9yeSBhcyB0aGUgYmFzZS4KKworCitVU0lORyBD
TElFTlQgQVVUSEVOVElDQVRJT04KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUbyBy
dW4gdGhlIHN0YW5kYWxvbmUgc2VydmVyIHdpdGggVExTIGNsaWVudCBhdXRoZW50aWNhdGlvbiBz
dXBwb3J0LCBydW4gaXQgd2l0aAorLS10bHMtY2xpZW50LWF1dGggYW5kIC0tdGxzLWNsaWVudC1j
YSBvcHRpb25zIGluIGFkZGl0aW9uIHRvIG9uZXMgcmVxdWlyZWQgZm9yCitUTFMgc3VwcG9ydC4K
KworRXhhbXBsZToKKworICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0
YW5kYWxvbmUucHkgLWQgZXhhbXBsZSAtcCAxMDQ0MyAtdCBcCisgICAgICAgIC1jIC4uL3Rlc3Qv
Y2VydC9jZXJ0LnBlbSAtayAuLi90ZXN0L2NlcnQva2V5LnBlbSBcCisgICAgICAgIC0tdGxzLWNs
aWVudC1hdXRoIFwKKyAgICAgICAgLS10bHMtY2xpZW50LWNhPS4uL3Rlc3QvY2VydC9jYWNlcnQu
cGVtCisKK05vdGUgdGhhdCB3aGVuIHBhc3NpbmcgYSByZWxhdGl2ZSBwYXRoIHRvIC0tdGxzLWNs
aWVudC1jYSBvcHRpb24sIGl0IHdpbGwgYmUKK3Jlc29sdmVkIHVzaW5nIHRoZSBkb2N1bWVudCBy
b290IGRpcmVjdG9yeSBhcyB0aGUgYmFzZS4KKworCitDT05GSUdVUkFUSU9OIEZJTEUKKz09PT09
PT09PT09PT09PT09PQorCitZb3UgY2FuIGFsc28gd3JpdGUgYSBjb25maWd1cmF0aW9uIGZpbGUg
YW5kIHVzZSBpdCBieSBzcGVjaWZ5aW5nIHRoZSBwYXRoIHRvCit0aGUgY29uZmlndXJhdGlvbiBm
aWxlIGJ5IC0tY29uZmlnIG9wdGlvbi4gUGxlYXNlIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxl
Citmb2xsb3dpbmcgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFB5dGhvbiBDb25maWdQYXJzZXIg
bGlicmFyeS4gTmFtZSBvZiBlYWNoCitlbnRyeSBtdXN0IGJlIHRoZSBsb25nIHZlcnNpb24gYXJn
dW1lbnQgbmFtZS4gRS5nLiB0byBzZXQgbG9nIGxldmVsIHRvIGRlYnVnLAorYWRkIHRoZSBmb2xs
b3dpbmcgbGluZToKKworbG9nX2xldmVsPWRlYnVnCisKK0ZvciBvcHRpb25zIHdoaWNoIGRvZXNu
J3QgdGFrZSB2YWx1ZSwgcGxlYXNlIGFkZCBzb21lIGZha2UgdmFsdWUuIEUuZy4gZm9yCistLXRs
cyBvcHRpb24sIGFkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK3Rscz1UcnVlCisKK05vdGUgdGhh
dCB0bHMgd2lsbCBiZSBlbmFibGVkIGV2ZW4gaWYgeW91IHdyaXRlIHRscz1GYWxzZSBhcyB0aGUg
dmFsdWUgcGFydCBpcworZmFrZS4KKworV2hlbiBib3RoIGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50
IGFuZCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBlbnRyeSBhcmUgc2V0IGZvcgordGhlIHNhbWUgY29u
ZmlndXJhdGlvbiBpdGVtLCB0aGUgY29tbWFuZCBsaW5lIHZhbHVlIHdpbGwgb3ZlcnJpZGUgb25l
IGluIHRoZQorY29uZmlndXJhdGlvbiBmaWxlLgorCisKK1RIUkVBRElORworPT09PT09PT09CisK
K1RoaXMgc2VydmVyIGlzIGRlcml2ZWQgZnJvbSBTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4u
IEhlbmNlIGEgdGhyZWFkIGlzCit1c2VkIGZvciBlYWNoIHJlcXVlc3QuCisKKworU0VDVVJJVFkg
V0FSTklORworPT09PT09PT09PT09PT09PQorCitUaGlzIHVzZXMgQ0dJSFRUUFNlcnZlciBhbmQg
Q0dJSFRUUFNlcnZlciBpcyBub3Qgc2VjdXJlLgorSXQgbWF5IGV4ZWN1dGUgYXJiaXRyYXJ5IFB5
dGhvbiBjb2RlIG9yIGV4dGVybmFsIHByb2dyYW1zLiBJdCBzaG91bGQgbm90IGJlCit1c2VkIG91
dHNpZGUgYSBmaXJld2FsbC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IGNvbmZpZ3BhcnNlcgoraW1wb3J0IGJhc2U2
NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lz
CitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgc2VydmVyX3V0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0LndlYnNvY2tldF9zZXJ2ZXIg
aW1wb3J0IFdlYlNvY2tldFNlcnZlcgorCitfREVGQVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAq
IDI1NgorX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKKworX0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFID0gMTI4CisKKworZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6CisgICAgcGFy
c2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKKworICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlnX2ZpbGUnLAorICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdQYXRoIHRvIGNvbmZp
Z3VyYXRpb24gZmlsZS4gU2VlIHRoZSBmaWxlIGNvbW1lbnQgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24g
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlIGZvcm1hdCcpKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctSCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5hbWUgdG8gbGlz
dGVuIHRvJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLVYnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLXZhbGlkYXRpb24taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRh
dGlvbl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX2hvc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5hbWUgdG8gdmFsaWRhdGUgaW4gYWJzb2x1dGUgcGF0aC4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncG9ydCcsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWNvbW1v
bi5ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdw
b3J0IHRvIGxpc3RlbiB0bycpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1QJywKKyAgICAgICAg
ICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAg
ICctLXZhbGlkYXRpb25fcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmFsaWRh
dGlvbl9wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdz
ZXJ2ZXIgcG9ydCB0byB2YWxpZGF0ZSBpbiBhYnNvbHV0ZSBwYXRoLicpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy13JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrLWhhbmRsZXJz
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrX2hhbmRsZXJzJywKKyAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzJywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnVGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVyIGZpbGVzLiAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0lmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLCAtLWRvY3VtZW50LXJvb3QgaXMg
dXNlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIHRoZSBiYXNlLicpKQorICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAgICAgICAgJy0td2Vic29j
ay1oYW5kbGVycy1tYXAtZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgJy0td2Vic29ja19o
YW5kbGVyc19tYXBfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19o
YW5kbGVyc19tYXBfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAor
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdXZWJTb2NrZXQgaGFuZGxlcnMgbWFwIGZpbGUu
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRWFjaCBsaW5lIGNvbnNpc3RzIG9mIGFs
aWFzX3Jlc291cmNlX3BhdGggYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhp
c3RpbmdfcmVzb3VyY2VfcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4nKSkKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLXMnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNjYW4tZGlyJywKKyAg
ICAgICAgICAgICAgICAgICAgICAnLS1zY2FuX2RpcicsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nc2Nhbl9kaXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgnTXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAtLXdl
YnNvY2staGFuZGxlcnMuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT25seSBoYW5k
bGVycyB1bmRlciB0aGlzIGRpcmVjdG9yeSBhcmUgc2Nhbm5lZCAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FuZCByZWdpc3RlcmVkIHRvIHRoZSBzZXJ2ZXIuICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnVXNlZnVsIGZvciBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gdGhlIGhh
bmRsZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb290IGRpcmVjdG9yeSBjb250
YWlucyBsb3RzIG9mIGZpbGVzIHRoYXQgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbm90IGhhbmRsZXIgZmlsZSBvciBhcmUgaGFuZGxlciBmaWxlcyBidXQgeW91ICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZG9uXCd0IHdhbnQgdGhlbSB0byBiZSByZWdpc3RlcmVk
LiAnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1hbGxvdy1oYW5kbGVycy1vdXRzaWRlLXJv
b3QtZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1hbGxvd19oYW5kbGVyc19vdXRzaWRl
X3Jvb3RfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdhbGxvd19oYW5kbGVyc19v
dXRzaWRlX3Jvb3RfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3Ry
dWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ1NjYW5zIFdlYlNvY2tldCBoYW5kbGVycyBldmVuIGlmIHRoZWlyIGNh
bm9uaWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGggaXMgbm90IHVuZGVy
IC0td2Vic29jay1oYW5kbGVycy4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLAorICAg
ICAgICAgICAgICAgICAgICAgICctLWRvY3VtZW50LXJvb3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLWRvY3VtZW50X3Jvb3QnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2RvY3Vt
ZW50X3Jvb3QnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy4nLAorICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9J0RvY3VtZW50IHJvb3QgZGlyZWN0b3J5LicpCisgICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy14JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZ2ktcGF0aHMnLAor
ICAgICAgICAgICAgICAgICAgICAgICctLWNnaV9wYXRocycsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0nY2dpX3BhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0NHSSBwYXRocyByZWxhdGl2ZSB0byBkb2N1
bWVudF9yb290LicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29tbWEtc2VwYXJhdGVk
LiAoZS5nIC14IC9jZ2ksL2h0YmluKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zp
bGVzIHVuZGVyIGRvY3VtZW50X3Jvb3QvY2dpX3BhdGggYXJlIGhhbmRsZWQgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdhcyBDR0kgcHJvZ3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4n
KSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLAorICAgICAgICAgICAgICAgICAgICAgICct
LXRscycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3RscycsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBUTFMgKHdzczov
LyknKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAgICAgICAgICAg
Jy0tcHJpdmF0ZS1rZXknLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGVfa2V5JywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcml2YXRlX2tleScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMgcHJp
dmF0ZSBrZXkgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J2NlcnRpZmljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J1RMUyBjZXJ0aWZpY2F0ZSBmaWxlLicpCisgICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0tdGxzLWNsaWVudC1hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZXN0PSd0bHNfY2xpZW50X2F1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdSZXF1ZXN0cyBUTFMgY2xpZW50IGF1dGggb24gZXZlcnkgY29u
bmVjdGlvbi4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtY2VydC1vcHRp
b25hbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9jZXJ0X29wdGlv
bmFsJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ01ha2VzIGNsaWVudCBjZXJ0aWZpY2F0ZSBvcHRpb25hbCBldmVuIHRob3VnaCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBjbGllbnQgYXV0aCBpcyBlbmFibGVkLicpKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtY2EnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfY2EnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBhIHBlbSBmaWxl
IHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y29uY2F0ZW5hdGVkIENBIGNlcnRpZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3ZhbGlkYXRlIGNlcnRpZmljYXRlcyBwYXNzZWQgZnJvbSBj
bGllbnRzJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ndXNlX2Jhc2ljX2F1dGgnLAorICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZXF1aXJlcyBCYXNpYyBhdXRoZW50
aWNhdGlvbi4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWJhc2ljLWF1dGgtY3JlZGVudGlh
bCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nYmFzaWNfYXV0aF9jcmVkZW50aWFsJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSd0ZXN0OnRlc3QnLAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1NwZWNpZmllcyB0aGUgY3JlZGVudGlhbCBvZiBiYXNpYyBhdXRoZW50
aWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgJ2J5IHVzZXJuYW1lOnBhc3N3b3JkIHBh
aXIgKGUuZy4gdGVzdDp0ZXN0KS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgJy0tbG9nLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICct
LWxvZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfZmlsZScsCisgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdMb2cgZmlsZS4nKQorICAgICMgQ3VzdG9tIGxvZyBsZXZlbDoKKyAgICAjIC0gRklORTogUHJp
bnRzIHN0YXR1cyBvZiBlYWNoIGZyYW1lIHByb2Nlc3Npbmcgc3RlcAorICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctLWxvZy1sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbG9nX2xldmVs
JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdjaG9pY2UnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0n
d2FybicsCisgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmaW5lJywgJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vy
cm9yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyaXRpY2FsJworICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGxldmVsLicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWRlZmxhdGUtbG9nLWxldmVsJywKKyAg
ICAgICAgJy0tZGVmbGF0ZV9sb2dfbGV2ZWwnLAorICAgICAgICB0eXBlPSdjaG9pY2UnLAorICAg
ICAgICBkZXN0PSdkZWZsYXRlX2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAor
ICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJy
b3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgaGVscD0nTG9nIGxldmVsIGZvciBfRGVmbGF0ZXIg
YW5kIF9JbmZsYXRlci4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRocmVhZC1tb25pdG9y
LWludGVydmFsLWluLXNlYycsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGhyZWFkX21vbml0
b3JfaW50ZXJ2YWxfaW5fc2VjJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0aHJlYWRf
bW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2lu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0tMSwKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgnSWYgcG9zaXRpdmUgaW50ZWdlciBpcyBzcGVjaWZpZWQsIHJ1biBhIHRocmVh
ZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbml0b3IgdG8gc2hvdyB0aGUgc3Rh
dHVzIG9mIHNlcnZlciB0aHJlYWRzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVy
aW9kaWNhbGx5IGluIHRoZSBzcGVjaWZpZWQgaW50ZXZhbCBpbiAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NlY29uZC4gSWYgbm9uLXBvc2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVk
LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUgdGhlIHRocmVhZCBtb25p
dG9yLicpKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1tYXgnLAorICAgICAgICAgICAg
ICAgICAgICAgICctLWxvZ19tYXgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19t
YXgnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdD1fREVGQVVMVF9MT0dfTUFYX0JZVEVTLAorICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J0xvZyBtYXhpbXVtIGJ5dGVzJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1s
b2ctY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19jb3VudCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nbG9nX2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX0JB
Q0tVUF9DT1VOVCwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgYmFja3VwIGNvdW50
JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAgICct
LXF1ZXVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdyZXF1ZXN0X3F1ZXVlX3NpemUn
LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1fREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0ncmVxdWVzdCBxdWV1ZSBzaXplJykKKworICAgIHJldHVybiBwYXJzZXIKKwor
CitkZWYgX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhhcmdzKToKKyAgICBwYXJzZXIgPSBfYnVpbGRf
b3B0aW9uX3BhcnNlcigpCisKKyAgICAjIEZpcnN0LCBwYXJzZSBvcHRpb25zIHdpdGhvdXQgY29u
ZmlndXJhdGlvbiBmaWxlLgorICAgIHRlbXBvcmFyeV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJncyA9
IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBpZiB0ZW1wb3JhcnlfYXJnczoKKyAg
ICAgICAgbG9nZ2luZy5jcml0aWNhbCgnVW5yZWNvZ25pemVkIHBvc2l0aW9uYWwgYXJndW1lbnRz
OiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5X2FyZ3MpCisgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICBpZiB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZToKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgY29uZmlnX2ZwID0gb3Blbih0ZW1wb3Jhcnlfb3B0aW9u
cy5jb25maWdfZmlsZSwgJ3InKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAg
ICAgICAgbG9nZ2luZy5jcml0aWNhbCgnRmFpbGVkIHRvIG9wZW4gY29uZmlndXJhdGlvbiBmaWxl
ICVyOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeV9vcHRpb25z
LmNvbmZpZ19maWxlLCBlKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBjb25m
aWdfcGFyc2VyID0gY29uZmlncGFyc2VyLlNhZmVDb25maWdQYXJzZXIoKQorICAgICAgICBjb25m
aWdfcGFyc2VyLnJlYWRmcChjb25maWdfZnApCisgICAgICAgIGNvbmZpZ19mcC5jbG9zZSgpCisK
KyAgICAgICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBp
biBjb25maWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgorICAgICAgICAgICAgYXJnc19m
cm9tX2NvbmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCisgICAgICAgICAgICBhcmdzX2Zyb21fY29u
ZmlnLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgaWYgYXJncyBpcyBOb25lOgorICAgICAgICAgICAg
YXJncyA9IGFyZ3NfZnJvbV9jb25maWcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3Mg
PSBhcmdzX2Zyb21fY29uZmlnICsgYXJncworICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2Fy
Z3MoYXJncz1hcmdzKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiB0ZW1wb3Jhcnlfb3B0aW9u
cywgdGVtcG9yYXJ5X2FyZ3MKKworCitkZWYgX21haW4oYXJncz1Ob25lKToKKyAgICAiIiJZb3Ug
Y2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dyYW0sIGJ1dCBwbGVhc2Ug
bm90ZSB0aGF0CisgICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRlLWVmZmVjdHMgdGhhdCBt
aWdodCBhZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKKyAgICBleGFtcGxlLCB1dGlsLndyYXBfcG9w
ZW4zX2Zvcl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGltcGxlbWVudGF0aW9uCisg
ICAgb2Ygb3MucG9wZW4zLgorICAgICIiIgorCisgICAgb3B0aW9ucywgYXJncyA9IF9wYXJzZV9h
cmdzX2FuZF9jb25maWcoYXJncz1hcmdzKQorCisgICAgb3MuY2hkaXIob3B0aW9ucy5kb2N1bWVu
dF9yb290KQorCisgICAgc2VydmVyX3V0aWwuY29uZmlndXJlX2xvZ2dpbmcob3B0aW9ucykKKwor
ICAgICMgVE9ETyh0eW9zaGlubyk6IENsZWFuIHVwIGluaXRpYWxpemF0aW9uIG9mIENHSSByZWxh
dGVkIHZhbHVlcy4gTW92ZSBzb21lCisgICAgIyBvZiBjb2RlIGhlcmUgdG8gV2ViU29ja2V0UmVx
dWVzdEhhbmRsZXIgY2xhc3MgaWYgaXQncyBiZXR0ZXIuCisgICAgb3B0aW9ucy5jZ2lfZGlyZWN0
b3JpZXMgPSBbXQorICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCisgICAg
aWYgb3B0aW9ucy5jZ2lfcGF0aHM6CisgICAgICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0g
b3B0aW9ucy5jZ2lfcGF0aHMuc3BsaXQoJywnKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4g
KCdjeWd3aW4nLCAnd2luMzInKToKKyAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gTm9uZQorICAg
ICAgICAgICAgIyBGb3IgV2luMzIgUHl0aG9uLCBpdCBpcyBleHBlY3RlZCB0aGF0IENZR1dJTl9Q
QVRICisgICAgICAgICAgICAjIGlzIHNldCB0byBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJp
ZXMuCisgICAgICAgICAgICAjIEZvciBleGFtcGxlLCB3ZWJzb2NrZXRfc2VydmVyLnB5IGluIENo
cm9taXVtIHNldHMgQ1lHV0lOX1BBVEggdG8KKyAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRo
aXJkX3BhcnR5L2N5Z3dpbi9iaW4uCisgICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9z
LmVudmlyb246CisgICAgICAgICAgICAgICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdX
SU5fUEFUSCddCisgICAgICAgICAgICB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3Bh
dGgpCisKKyAgICAgICAgICAgIGRlZiBfX2NoZWNrX3NjcmlwdChzY3JpcHRwYXRoKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdXRpbC5nZXRfc2NyaXB0X2ludGVycChzY3JpcHRwYXRoLCBjeWd3
aW5fcGF0aCkKKworICAgICAgICAgICAgb3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZCA9IF9f
Y2hlY2tfc2NyaXB0CisKKyAgICBpZiBvcHRpb25zLnVzZV90bHM6CisgICAgICAgIGxvZ2dpbmcu
ZGVidWcoJ1VzaW5nIHNzbCBtb2R1bGUnKQorCisgICAgICAgIGlmIG5vdCBvcHRpb25zLnByaXZh
dGVfa2V5IG9yIG5vdCBvcHRpb25zLmNlcnRpZmljYXRlOgorICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgKKyAgICAgICAgICAgICAgICAnVG8gdXNlIFRMUywgc3BlY2lmeSBwcml2YXRlX2tl
eSBhbmQgY2VydGlmaWNhdGUuJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAg
aWYgKG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsIGFuZCBub3Qgb3B0aW9ucy50bHNf
Y2xpZW50X2F1dGgpOgorICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnQ2xpZW50IGF1dGhl
bnRpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzcGVjaWZ5IHRsc19jbGllbnRfY2VydF9vcHRpb25hbCcpCisgICAgICAgICAgICBzeXMu
ZXhpdCgxKQorICAgIGVsc2U6CisgICAgICAgIGlmIG9wdGlvbnMudGxzX2NsaWVudF9hdXRoOgor
ICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xp
ZW50IGF1dGhlbnRpY2F0aW9uLicpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAg
IGlmIG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsOgorICAgICAgICAgICAgbG9nZ2lu
Zy5jcml0aWNhbCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9u
LicpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgbm90IG9wdGlvbnMuc2Nhbl9k
aXI6CisgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIgPSBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnMK
KworICAgIGlmIG9wdGlvbnMudXNlX2Jhc2ljX2F1dGg6CisgICAgICAgIG9wdGlvbnMuYmFzaWNf
YXV0aF9jcmVkZW50aWFsID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKAorICAgICAgICAg
ICAgb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWwuZW5jb2RlKCdVVEYtOCcpKS5kZWNvZGUo
KQorCisgICAgdHJ5OgorICAgICAgICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFs
X2luX3NlYyA+IDA6CisgICAgICAgICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cg
dGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyBmb3IKKyAgICAgICAgICAgICMgZGVidWdnaW5n
LgorICAgICAgICAgICAgc2VydmVyX3V0aWwuVGhyZWFkTW9uaXRvcigKKyAgICAgICAgICAgICAg
ICBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYykuc3RhcnQoKQorCisgICAg
ICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRpb25zKQorICAgICAgICBzZXJ2ZXIuc2Vy
dmVfZm9yZXZlcigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUpCisgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoJ21vZF9weXdlYnNvY2tldDogJXMnICUgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAg
ICAgICAgc3lzLmV4aXQoMSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9t
YWluKHN5cy5hcmd2WzE6XSkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzM5OWYyYTg1YjlmZTZj
NTJlYzU2OTBmNTgwZDA2YjIyMmU0NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQpAQCAtMCwwICsxLDk1MCBAQAorIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0
aW9ucyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMKK29mIHRoZSBXZWJTb2NrZXQgcHJvdG9j
b2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKK2ltcG9ydCBz
b2NrZXQKK2ltcG9ydCBzaXgKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVk
RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0
IEludmFsaWRGcmFtZUV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNl
cHRpb25zIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCisKK19O
T09QX01BU0tFUiA9IHV0aWwuTm9vcE1hc2tlcigpCisKKworY2xhc3MgRnJhbWUob2JqZWN0KToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAg
ICAgICAgICAgIHJzdjE9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mj0wLAorICAgICAgICAgICAg
ICAgICByc3YzPTAsCisgICAgICAgICAgICAgICAgIG9wY29kZT1Ob25lLAorICAgICAgICAgICAg
ICAgICBwYXlsb2FkPWInJyk6CisgICAgICAgIHNlbGYuZmluID0gZmluCisgICAgICAgIHNlbGYu
cnN2MSA9IHJzdjEKKyAgICAgICAgc2VsZi5yc3YyID0gcnN2MgorICAgICAgICBzZWxmLnJzdjMg
PSByc3YzCisgICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCisgICAgICAgIHNlbGYucGF5bG9h
ZCA9IHBheWxvYWQKKworCisjIEhlbHBlciBmdW5jdGlvbnMgbWFkZSBwdWJsaWMgdG8gYmUgdXNl
ZCBmb3Igd3JpdGluZyB1bml0dGVzdHMgZm9yIFdlYlNvY2tldAorIyBjbGllbnRzLgorCisKK2Rl
ZiBjcmVhdGVfbGVuZ3RoX2hlYWRlcihsZW5ndGgsIG1hc2spOgorICAgICIiIkNyZWF0ZXMgYSBs
ZW5ndGggaGVhZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgbGVuZ3RoOiBGcmFtZSBsZW5ndGgu
IE11c3QgYmUgbGVzcyB0aGFuIDJeNjMuCisgICAgICAgIG1hc2s6IE1hc2sgYml0LiBNdXN0IGJl
IGJvb2xlYW4uCisKKyAgICBSYWlzZXM6CisgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gYmFkIGRh
dGEgaXMgZ2l2ZW4uCisgICAgIiIiCisKKyAgICBpZiBtYXNrOgorICAgICAgICBtYXNrX2JpdCA9
IDEgPDwgNworICAgIGVsc2U6CisgICAgICAgIG1hc2tfYml0ID0gMAorCisgICAgaWYgbGVuZ3Ro
IDwgMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGVuZ3RoIG11c3QgYmUgbm9uIG5lZ2F0
aXZlIGludGVnZXInKQorICAgIGVsaWYgbGVuZ3RoIDw9IDEyNToKKyAgICAgICAgcmV0dXJuIHV0
aWwucGFja19ieXRlKG1hc2tfYml0IHwgbGVuZ3RoKQorICAgIGVsaWYgbGVuZ3RoIDwgKDEgPDwg
MTYpOgorICAgICAgICByZXR1cm4gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3Ry
dWN0LnBhY2soJyFIJywgbGVuZ3RoKQorICAgIGVsaWYgbGVuZ3RoIDwgKDEgPDwgNjMpOgorICAg
ICAgICByZXR1cm4gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCAxMjcpICsgc3RydWN0LnBhY2so
JyFRJywgbGVuZ3RoKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxv
YWQgaXMgdG9vIGJpZyBmb3Igb25lIGZyYW1lJykKKworCitkZWYgY3JlYXRlX2hlYWRlcihvcGNv
ZGUsIHBheWxvYWRfbGVuZ3RoLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG1hc2spOgorICAgICIi
IkNyZWF0ZXMgYSBmcmFtZSBoZWFkZXIuCisKKyAgICBSYWlzZXM6CisgICAgICAgIEV4Y2VwdGlv
bjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KKyAgICAiIiIKKworICAgIGlmIG9wY29kZSA8IDAg
b3IgMHhmIDwgb3Bjb2RlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdPcGNvZGUgb3V0IG9m
IHJhbmdlJykKKworICAgIGlmIHBheWxvYWRfbGVuZ3RoIDwgMCBvciAoMSA8PCA2MykgPD0gcGF5
bG9hZF9sZW5ndGg6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3BheWxvYWRfbGVuZ3RoIG91
dCBvZiByYW5nZScpCisKKyAgICBpZiAoZmluIHwgcnN2MSB8IHJzdjIgfCByc3YzKSAmIH4xOgor
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGSU4gYml0IGFuZCBSZXNlcnZlZCBiaXQgcGFyYW1l
dGVyIG11c3QgYmUgMCBvciAxJykKKworICAgIGhlYWRlciA9IGInJworCisgICAgZmlyc3RfYnl0
ZSA9ICgoZmluIDw8IDcpCisgICAgICAgICAgICAgICAgICB8IChyc3YxIDw8IDYpIHwgKHJzdjIg
PDwgNSkgfCAocnN2MyA8PCA0KQorICAgICAgICAgICAgICAgICAgfCBvcGNvZGUpCisgICAgaGVh
ZGVyICs9IHV0aWwucGFja19ieXRlKGZpcnN0X2J5dGUpCisgICAgaGVhZGVyICs9IGNyZWF0ZV9s
ZW5ndGhfaGVhZGVyKHBheWxvYWRfbGVuZ3RoLCBtYXNrKQorCisgICAgcmV0dXJuIGhlYWRlcgor
CisKK2RlZiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBib2R5LCBtYXNrKToKKyAgICBpZiBub3QgbWFz
azoKKyAgICAgICAgcmV0dXJuIGhlYWRlciArIGJvZHkKKworICAgIG1hc2tpbmdfbm9uY2UgPSBv
cy51cmFuZG9tKDQpCisgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcihtYXNraW5n
X25vbmNlKQorCisgICAgcmV0dXJuIGhlYWRlciArIG1hc2tpbmdfbm9uY2UgKyBtYXNrZXIubWFz
ayhib2R5KQorCisKK2RlZiBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBt
YXNrLCBmcmFtZV9maWx0ZXJzKToKKyAgICBmb3IgZnJhbWVfZmlsdGVyIGluIGZyYW1lX2ZpbHRl
cnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisKKyAgICBoZWFkZXIgPSBj
cmVhdGVfaGVhZGVyKGZyYW1lLm9wY29kZSwgbGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFt
ZS5yc3YzLCBtYXNrKQorICAgIHJldHVybiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXls
b2FkLCBtYXNrKQorCisKK2RlZiBjcmVhdGVfYmluYXJ5X2ZyYW1lKG1lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9CSU5BUlksCisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW49MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVh
dGVzIGEgc2ltcGxlIGJpbmFyeSBmcmFtZSB3aXRoIG5vIGV4dGVuc2lvbiwgcmVzZXJ2ZWQgYml0
LiIiIgorCisgICAgZnJhbWUgPSBGcmFtZShmaW49ZmluLCBvcGNvZGU9b3Bjb2RlLCBwYXlsb2Fk
PW1lc3NhZ2UpCisgICAgcmV0dXJuIF9maWx0ZXJfYW5kX2Zvcm1hdF9mcmFtZV9vYmplY3QoZnJh
bWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV90ZXh0X2ZyYW1lKG1lc3Nh
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICBmaW49MSwKKyAgICAgICAgICAgICAgICAgICAgICBtYXNrPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnM9W10pOgorICAgICIiIkNy
ZWF0ZXMgYSBzaW1wbGUgdGV4dCBmcmFtZSB3aXRoIG5vIGV4dGVuc2lvbiwgcmVzZXJ2ZWQgYml0
LiIiIgorCisgICAgZW5jb2RlZF9tZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKKyAg
ICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZShlbmNvZGVkX21lc3NhZ2UsIG9wY29kZSwgZmlu
LCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnMpCisK
KworZGVmIHBhcnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXMsCisgICAgICAgICAgICAgICAgbG9nZ2Vy
PU5vbmUsCisgICAgICAgICAgICAgICAgd3NfdmVyc2lvbj1jb21tb24uVkVSU0lPTl9IWUJJX0xB
VEVTVCwKKyAgICAgICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1UcnVlKToKKyAgICAiIiJQYXJz
ZXMgYSBmcmFtZS4gUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgZWFjaCBoZWFkZXIgZmllbGQg
YW5kCisgICAgcGF5bG9hZC4KKworICAgIEFyZ3M6CisgICAgICAgIHJlY2VpdmVfYnl0ZXM6IGEg
ZnVuY3Rpb24gdGhhdCByZWFkcyBmcmFtZSBkYXRhIGZyb20gYSBzdHJlYW0gb3IKKyAgICAgICAg
ICAgIHNvbWV0aGluZyBzaW1pbGFyLiBUaGUgZnVuY3Rpb24gdGFrZXMgbGVuZ3RoIG9mIHRoZSBi
eXRlcyB0byBiZQorICAgICAgICAgICAgcmVhZC4gVGhlIGZ1bmN0aW9uIG11c3QgcmFpc2UgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gaWYKKyAgICAgICAgICAgIHRoZXJlIGlzIG5vdCBl
bm91Z2ggZGF0YSB0byBiZSByZWFkLgorICAgICAgICBsb2dnZXI6IGEgbG9nZ2luZyBvYmplY3Qu
CisgICAgICAgIHdzX3ZlcnNpb246IHRoZSB2ZXJzaW9uIG9mIFdlYlNvY2tldCBwcm90b2NvbC4K
KyAgICAgICAgdW5tYXNrX3JlY2VpdmU6IHVubWFzayByZWNlaXZlZCBmcmFtZXMuIFdoZW4gcmVj
ZWl2ZWQgdW5tYXNrZWQKKyAgICAgICAgICAgIGZyYW1lLCByYWlzZXMgSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLgorCisgICAgUmFpc2VzOgorICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbjogd2hlbiByZWNlaXZlX2J5dGVzIHJhaXNlcyBpdC4KKyAgICAgICAgSW52YWxpZEZyYW1l
RXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCisgICAgIiIi
CisKKyAgICBpZiBub3QgbG9nZ2VyOgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cigpCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSB0aGUg
Zmlyc3QgMiBvY3RldHMgb2YgYSBmcmFtZScpCisKKyAgICBmaXJzdF9ieXRlID0gb3JkKHJlY2Vp
dmVfYnl0ZXMoMSkpCisgICAgZmluID0gKGZpcnN0X2J5dGUgPj4gNykgJiAxCisgICAgcnN2MSA9
IChmaXJzdF9ieXRlID4+IDYpICYgMQorICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEK
KyAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCisgICAgb3Bjb2RlID0gZmlyc3RfYnl0
ZSAmIDB4ZgorCisgICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZV9ieXRlcygxKSkKKyAgICBt
YXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQorICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25k
X2J5dGUgJiAweDdmCisKKyAgICBsb2dnZXIubG9nKAorICAgICAgICBjb21tb24uTE9HTEVWRUxf
RklORSwgJ0ZJTj0lcywgUlNWMT0lcywgUlNWMj0lcywgUlNWMz0lcywgb3Bjb2RlPSVzLCAnCisg
ICAgICAgICdNYXNrPSVzLCBQYXlsb2FkX2xlbmd0aD0lcycsIGZpbiwgcnN2MSwgcnN2MiwgcnN2
Mywgb3Bjb2RlLCBtYXNrLAorICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKworICAgIGlmIChtYXNr
ID09IDEpICE9IHVubWFza19yZWNlaXZlOgorICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNl
cHRpb24oCisgICAgICAgICAgICAnTWFzayBiaXQgb24gdGhlIHJlY2VpdmVkIGZyYW1lIGRpZFwn
bnQgbWF0Y2ggbWFza2luZyAnCisgICAgICAgICAgICAnY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2
ZWQgZnJhbWVzJykKKworICAgICMgVGhlIEh5QmkgYW5kIGxhdGVyIHNwZWNzIGRpc2FsbG93IHB1
dHRpbmcgYSB2YWx1ZSBpbiAweDAtMHhGRkZGCisgICAgIyBpbnRvIHRoZSA4LW9jdGV0IGV4dGVu
ZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIChvciAweDAtMHhGRCBpbgorICAgICMgMi1vY3RldCBm
aWVsZCkuCisgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gVHJ1ZQorICAgIGxlbmd0aF9lbmNv
ZGluZ19ieXRlcyA9IDEKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjc6CisgICAgICAgIGxv
Z2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2Vp
dmUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3Ro
ID0gc3RydWN0LnVucGFjaygnIVEnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAg
ICAgaWYgcGF5bG9hZF9sZW5ndGggPiAweDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oJ0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJe
NjMnKQorICAgICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4
MTAwMDA6CisgICAgICAgICAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAg
ICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gOAorCisgICAgICAgIGxvZ2dlci5sb2coY29t
bW9uLkxPR0xFVkVMX0ZJTkUsICdEZWNvZGVkX3BheWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAg
ICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKyAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09IDEy
NjoKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAgICAgICAgICAg
ICAgICAgICAnUmVjZWl2ZSAyLW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykKKworICAg
ICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoMikKKyAgICAgICAg
cGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGV4dGVuZGVkX3BheWxvYWRfbGVu
Z3RoKVswXQorICAgICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2FkX2xlbmd0aCA8
IDEyNjoKKyAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCisgICAgICAg
ICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAyCisKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21t
b24uTE9HTEVWRUxfRklORSwgJ0RlY29kZWRfcGF5bG9hZF9sZW5ndGg9JXMnLAorICAgICAgICAg
ICAgICAgICAgIHBheWxvYWRfbGVuZ3RoKQorCisgICAgaWYgbm90IHZhbGlkX2xlbmd0aF9lbmNv
ZGluZzoKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoCisgICAgICAgICAgICAnUGF5bG9hZCBsZW5n
dGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhlIG1pbmltYWwgbnVtYmVyIG9mICcKKyAgICAgICAg
ICAgICdieXRlcyAoJWQgaXMgZW5jb2RlZCB1c2luZyAlZCBieXRlcyknLCBwYXlsb2FkX2xlbmd0
aCwKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcykKKworICAgIGlmIG1hc2sgPT0g
MToKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgbWFz
aycpCisKKyAgICAgICAgbWFza2luZ19ub25jZSA9IHJlY2VpdmVfYnl0ZXMoNCkKKyAgICAgICAg
bWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcihtYXNraW5nX25vbmNlKQorCisgICAgICAg
IGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdNYXNrPSVyJywgbWFza2luZ19ub25j
ZSkKKyAgICBlbHNlOgorICAgICAgICBtYXNrZXIgPSBfTk9PUF9NQVNLRVIKKworICAgIGxvZ2dl
ci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIHBheWxvYWQgZGF0YScpCisgICAg
aWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIHJl
Y2VpdmVfc3RhcnQgPSB0aW1lLnRpbWUoKQorCisgICAgcmF3X3BheWxvYWRfYnl0ZXMgPSByZWNl
aXZlX2J5dGVzKHBheWxvYWRfbGVuZ3RoKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihj
b21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2coCisgICAgICAgICAgICBj
b21tb24uTE9HTEVWRUxfRklORSwgJ0RvbmUgcmVjZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBN
Qi9zJywKKyAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2
ZV9zdGFydCkgLyAxMDAwIC8gMTAwMCkKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9G
SU5FLCAnVW5tYXNrIHBheWxvYWQgZGF0YScpCisKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9y
KGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKKyAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1l
KCkKKworICAgIHVubWFza2VkX2J5dGVzID0gbWFza2VyLm1hc2socmF3X3BheWxvYWRfYnl0ZXMp
CisKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKKyAg
ICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAgICAgICAgICAgICAgICAg
ICAnRG9uZSB1bm1hc2tpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAorICAgICAgICAgICAg
ICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEw
MDAgLyAxMDAwKQorCisgICAgcmV0dXJuIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2
MSwgcnN2MiwgcnN2MworCisKK2NsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIob2JqZWN0KToK
KyAgICAiIiJBIHN0YXRlZnVsIGNsYXNzIHRvIHNlbmQgYSBtZXNzYWdlIGFzIGZyYWdtZW50cy4i
IiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzaywgZnJhbWVfZmlsdGVycz1bXSwgZW5jb2Rl
X3V0Zjg9VHJ1ZSk6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuIiIiCisKKyAg
ICAgICAgc2VsZi5fbWFzayA9IG1hc2sKKyAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycyA9IGZy
YW1lX2ZpbHRlcnMKKyAgICAgICAgIyBUaGlzIGlzIGZvciBza2lwcGluZyBVVEYtOCBlbmNvZGlu
ZyB3aGVuIGJ1aWxkaW5nIHRleHQgdHlwZSBmcmFtZXMKKyAgICAgICAgIyBmcm9tIGNvbXByZXNz
ZWQgZGF0YS4KKyAgICAgICAgc2VsZi5fZW5jb2RlX3V0ZjggPSBlbmNvZGVfdXRmOAorCisgICAg
ICAgIHNlbGYuX3N0YXJ0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZCBvcGNvZGUgb2YgdGhl
IGZpcnN0IGZyYW1lIGluIG1lc3NhZ2VzIHRvIHZlcmlmeSB0eXBlcyBvZiBvdGhlcgorICAgICAg
ICAjIGZyYW1lcyBpbiB0aGUgbWVzc2FnZSBhcmUgYWxsIHRoZSBzYW1lLgorICAgICAgICBzZWxm
Ll9vcGNvZGUgPSBjb21tb24uT1BDT0RFX1RFWFQKKworICAgIGRlZiBidWlsZChzZWxmLCBwYXls
b2FkX2RhdGEsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgYmluYXJ5OgorICAgICAgICAgICAg
ZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENPREVfQklOQVJZCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBmcmFtZV90eXBlID0gY29tbW9uLk9QQ09ERV9URVhUCisgICAgICAgIGlmIHNlbGYuX3N0
YXJ0ZWQ6CisgICAgICAgICAgICBpZiBzZWxmLl9vcGNvZGUgIT0gZnJhbWVfdHlwZToKKyAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNZXNzYWdlIHR5cGVzIGFyZSBkaWZmZXJlbnQg
aW4gZnJhbWVzIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNh
bWUgbWVzc2FnZScpCisgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVB
VElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQorICAg
ICAgICAgICAgc2VsZi5fb3Bjb2RlID0gZnJhbWVfdHlwZQorCisgICAgICAgIGlmIGVuZDoKKyAg
ICAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBGYWxzZQorICAgICAgICAgICAgZmluID0gMQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fc3RhcnRlZCA9IFRydWUKKyAgICAgICAgICAg
IGZpbiA9IDAKKworICAgICAgICBpZiBiaW5hcnkgb3Igbm90IHNlbGYuX2VuY29kZV91dGY4Ogor
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZF9kYXRhLCBvcGNv
ZGUsIGZpbiwgc2VsZi5fbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1
cm4gY3JlYXRlX3RleHRfZnJhbWUocGF5bG9hZF9kYXRhLCBvcGNvZGUsIGZpbiwgc2VsZi5fbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9maWx0
ZXJzKQorCisKK2RlZiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUob3Bjb2RlLCBib2R5LCBtYXNrLCBm
cmFtZV9maWx0ZXJzKToKKyAgICBmcmFtZSA9IEZyYW1lKG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9
Ym9keSkKKworICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKKyAgICAgICAg
ZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKworICAgIGlmIGxlbihmcmFtZS5wYXlsb2FkKSA+
IDEyNToKKyAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAg
J1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9y
IGxlc3MnKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFtZS5vcGNvZGUsIGxlbihm
cmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAgICByZXR1cm4gX2J1aWxk
X2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitkZWYgY3JlYXRlX3Bpbmdf
ZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6CisgICAgcmV0dXJuIF9j
cmVhdGVfY29udHJvbF9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIG1hc2ssIGZyYW1l
X2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9wb25nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZy
YW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9u
Lk9QQ09ERV9QT05HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVf
Y2xvc2VfZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6CisgICAgcmV0
dXJuIF9jcmVhdGVfY29udHJvbF9mcmFtZShjb21tb24uT1BDT0RFX0NMT1NFLCBib2R5LCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVycykKKworCitk
ZWYgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29uKToKKyAgICBib2R5
ID0gYicnCisgICAgaWYgY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgKGNvZGUgPiBjb21t
b24uU1RBVFVTX1VTRVJfUFJJVkFURV9NQVgKKyAgICAgICAgICAgICAgICBvciBjb2RlIDwgY29t
bW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRp
b25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIG91dCBvZiByYW5nZScpCisgICAgICAgIGlmIChj
b2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECisgICAgICAgICAgICAgICAg
b3IgY29kZSA9PSBjb21tb24uU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUKKyAgICAgICAgICAgICAg
ICBvciBjb2RlID09IGNvbW1vbi5TVEFUVVNfVExTX0hBTkRTSEFLRSk6CisgICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIHJlc2VydmVkIHBzZXVk
byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnKQorICAg
ICAgICBlbmNvZGVkX3JlYXNvbiA9IHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgYm9k
eSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgZW5jb2RlZF9yZWFzb24KKyAgICByZXR1cm4g
Ym9keQorCisKK2NsYXNzIFN0cmVhbU9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJIb2xkcyBvcHRp
b24gdmFsdWVzIHRvIGNvbmZpZ3VyZSBTdHJlYW0gb2JqZWN0cy4iIiIKKyAgICBkZWYgX19pbml0
X18oc2VsZik6CisgICAgICAgICIiIkNvbnN0cnVjdHMgU3RyZWFtT3B0aW9ucy4iIiIKKworICAg
ICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBmcmFtZXMuCisgICAgICAgIHNlbGYub3V0Z29pbmdf
ZnJhbWVfZmlsdGVycyA9IFtdCisgICAgICAgIHNlbGYuaW5jb21pbmdfZnJhbWVfZmlsdGVycyA9
IFtdCisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gbWVzc2FnZXMuIENvbnRyb2wgZnJh
bWVzIGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlbS4KKyAgICAgICAgc2VsZi5vdXRnb2luZ19tZXNz
YWdlX2ZpbHRlcnMgPSBbXQorICAgICAgICBzZWxmLmluY29taW5nX21lc3NhZ2VfZmlsdGVycyA9
IFtdCisKKyAgICAgICAgc2VsZi5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBUcnVlCisg
ICAgICAgIHNlbGYubWFza19zZW5kID0gRmFsc2UKKyAgICAgICAgc2VsZi51bm1hc2tfcmVjZWl2
ZSA9IFRydWUKKworCitjbGFzcyBTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBw
YXJzaW5nL2J1aWxkaW5nIGZyYW1lcyBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sCisgICAgKFJG
QyA2NDU1KS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgb3B0aW9u
cyk6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJl
cXVlc3QKKworICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCisKKyAgICAg
ICAgIyBIb2xkcyBib2R5IG9mIHJlY2VpdmVkIGZyYWdtZW50cy4KKyAgICAgICAgc2VsZi5fcmVj
ZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgIyBIb2xkcyB0aGUgb3Bjb2RlIG9mIHRoZSBm
aXJzdCBmcmFnbWVudC4KKyAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gTm9uZQorCisg
ICAgICAgIHNlbGYuX3dyaXRlciA9IEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIoCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwgc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9m
aWx0ZXJzLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3Rv
X3V0ZjgpCisKKyAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGRlcXVlKCkKKworICAgIGRlZiBf
cmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWFkcyBsZW5ndGggYnl0ZXMgZnJvbSBj
b25uZWN0aW9uLiBJbiBjYXNlIHdlIGNhdGNoIGFueSBleGNlcHRpb24sCisgICAgICAgIHByZXBl
bmRzIHJlbW90ZSBhZGRyZXNzIHRvIHRoZSBleGNlcHRpb24gbWVzc2FnZSBhbmQgcmFpc2UgYWdh
aW4uCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRF
eGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVhZF9ieXRlcyA9IHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi5yZWFkKGxlbmd0aCkKKyAgICAgICAgICAgIGlmIG5vdCByZWFkX2J5dGVzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBQZWVyICglcikgY2xvc2Vk
IGNvbm5lY3Rpb24nICUKKyAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCwgKHNlbGYuX3JlcXVl
c3QuY29ubmVjdGlvbi5yZW1vdGVfYWRkciwgKSkpCisgICAgICAgICAgICByZXR1cm4gcmVhZF9i
eXRlcworICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgIyBBbHNvIGNh
dGNoIGFuIElPRXJyb3IgYmVjYXVzZSBtb2RfcHl0aG9uIHRocm93cyBpdC4KKyAgICAgICAgICAg
IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdS
ZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIElPRXJyb3IgKCVzKSBvY2N1cnJlZCcgJQorICAgICAg
ICAgICAgICAgIChsZW5ndGgsIGUpKQorCisgICAgZGVmIF93cml0ZShzZWxmLCBieXRlc190b193
cml0ZSk6CisgICAgICAgICIiIldyaXRlcyBnaXZlbiBieXRlcyB0byBjb25uZWN0aW9uLiBJbiBj
YXNlIHdlIGNhdGNoIGFueSBleGNlcHRpb24sCisgICAgICAgIHByZXBlbmRzIHJlbW90ZSBhZGRy
ZXNzIHRvIHRoZSBleGNlcHRpb24gbWVzc2FnZSBhbmQgcmFpc2UgYWdhaW4uCisgICAgICAgICIi
IgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53
cml0ZShieXRlc190b193cml0ZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAg
ICAgICdGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvICVyOiAnICUKKyAgICAgICAgICAgICAgICAo
c2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCApLCBlKQorICAgICAgICAgICAg
cmFpc2UKKworICAgIGRlZiByZWNlaXZlX2J5dGVzKHNlbGYsIGxlbmd0aCk6CisgICAgICAgICIi
IlJlY2VpdmVzIG11bHRpcGxlIGJ5dGVzLiBSZXRyaWVzIHJlYWQgd2hlbiB3ZSBjb3VsZG4ndCBy
ZWNlaXZlIHRoZQorICAgICAgICBzcGVjaWZpZWQgYW1vdW50LiBUaGlzIG1ldGhvZCByZXR1cm5z
IGJ5dGUgc3RyaW5ncy4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgorICAg
ICAgICAiIiIKKworICAgICAgICByZWFkX2J5dGVzID0gW10KKyAgICAgICAgd2hpbGUgbGVuZ3Ro
ID4gMDoKKyAgICAgICAgICAgIG5ld19yZWFkX2J5dGVzID0gc2VsZi5fcmVhZChsZW5ndGgpCisg
ICAgICAgICAgICByZWFkX2J5dGVzLmFwcGVuZChuZXdfcmVhZF9ieXRlcykKKyAgICAgICAgICAg
IGxlbmd0aCAtPSBsZW4obmV3X3JlYWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBiJycuam9pbihy
ZWFkX2J5dGVzKQorCisgICAgZGVmIF9yZWFkX3VudGlsKHNlbGYsIGRlbGltX2NoYXIpOgorICAg
ICAgICAiIiJSZWFkcyBieXRlcyB1bnRpbCB3ZSBlbmNvdW50ZXIgZGVsaW1fY2hhci4gVGhlIHJl
c3VsdCB3aWxsIG5vdAorICAgICAgICBjb250YWluIGRlbGltX2NoYXIuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVhZF9ieXRl
cyA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaCA9IHNlbGYuX3JlYWQo
MSkKKyAgICAgICAgICAgIGlmIGNoID09IGRlbGltX2NoYXI6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBwZW5kKGNoKQorICAgICAgICByZXR1cm4gYicn
LmpvaW4ocmVhZF9ieXRlcykKKworICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKKyAgICAg
ICAgIiIiUmVjZWl2ZXMgYSBmcmFtZSBhbmQgcmV0dXJuIGRhdGEgaW4gdGhlIGZyYW1lIGFzIGEg
dHVwbGUgY29udGFpbmluZworICAgICAgICBlYWNoIGhlYWRlciBmaWVsZCBhbmQgcGF5bG9hZCBz
ZXBhcmF0ZWx5LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQorICAgICAgICAgICAgICAg
IHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJh
bWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9yZWNl
aXZlX2J5dGVzKGxlbmd0aCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlX2J5dGVz
KGxlbmd0aCkKKworICAgICAgICByZXR1cm4gcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcz1fcmVj
ZWl2ZV9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1zZWxmLl9sb2dn
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3c192ZXJzaW9uPXNlbGYuX3JlcXVlc3Qu
d3NfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWFza19yZWNlaXZlPXNl
bGYuX29wdGlvbnMudW5tYXNrX3JlY2VpdmUpCisKKyAgICBkZWYgX3JlY2VpdmVfZnJhbWVfYXNf
ZnJhbWVfb2JqZWN0KHNlbGYpOgorICAgICAgICBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lKCkKKworICAgICAgICByZXR1
cm4gRnJhbWUoZmluPWZpbiwKKyAgICAgICAgICAgICAgICAgICAgIHJzdjE9cnN2MSwKKyAgICAg
ICAgICAgICAgICAgICAgIHJzdjI9cnN2MiwKKyAgICAgICAgICAgICAgICAgICAgIHJzdjM9cnN2
MywKKyAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1vcGNvZGUsCisgICAgICAgICAgICAgICAg
ICAgICBwYXlsb2FkPXVubWFza2VkX2J5dGVzKQorCisgICAgZGVmIHJlY2VpdmVfZmlsdGVyZWRf
ZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIGFwcGxpZXMgZnJh
bWUgZmlsdGVycyBhbmQgbWVzc2FnZSBmaWx0ZXJzLgorICAgICAgICBUaGUgZnJhbWUgdG8gYmUg
cmVjZWl2ZWQgbXVzdCBzYXRpc2Z5IGZvbGxvd2luZyBjb25kaXRpb25zOgorICAgICAgICAtIFRo
ZSBmcmFtZSBpcyBub3QgZnJhZ21lbnRlZC4KKyAgICAgICAgLSBUaGUgb3Bjb2RlIG9mIHRoZSBm
cmFtZSBpcyBURVhUIG9yIEJJTkFSWS4KKworICAgICAgICBETyBOT1QgVVNFIHRoaXMgbWV0aG9k
IGV4Y2VwdCBmb3IgdGVzdGluZyBwdXJwb3NlLgorICAgICAgICAiIiIKKworICAgICAgICBmcmFt
ZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKyAgICAgICAgaWYgbm90
IGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnU2VnbWVudGVkIGZyYW1lcyBtdXN0IG5vdCBiZSByZWNlaXZlZCB2aWEg
JworICAgICAgICAgICAgICAgICdyZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKCknKQorICAgICAgICBp
ZiAoZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfVEVYVAorICAgICAgICAgICAgICAgIGFu
ZCBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9CSU5BUlkpOgorICAgICAgICAgICAgcmFp
c2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1l
cyBtdXN0IG5vdCBiZSByZWNlaXZlZCB2aWEgJworICAgICAgICAgICAgICAgICdyZWNlaXZlX2Zp
bHRlcmVkX2ZyYW1lKCknKQorCisgICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2VsZi5fb3B0
aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgorICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZp
bHRlcihmcmFtZSkKKyAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMu
aW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgZnJhbWUucGF5bG9hZCA9IG1l
c3NhZ2VfZmlsdGVyLmZpbHRlcihmcmFtZS5wYXlsb2FkKQorICAgICAgICByZXR1cm4gZnJhbWUK
KworICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1G
YWxzZSk6CisgICAgICAgICIiIlNlbmQgbWVzc2FnZS4KKworICAgICAgICBBcmdzOgorICAgICAg
ICAgICAgbWVzc2FnZTogdGV4dCBpbiB1bmljb2RlIG9yIGJpbmFyeSBpbiBzdHIgdG8gc2VuZC4K
KyAgICAgICAgICAgIGJpbmFyeTogc2VuZCBtZXNzYWdlIGFzIGJpbmFyeSBmcmFtZS4KKworICAg
ICAgICBSYWlzZXM6CisgICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gY2Fs
bGVkIG9uIGEgc2VydmVyLXRlcm1pbmF0ZWQKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG9y
IGNhbGxlZCB3aXRoIGluY29uc2lzdGVudCBtZXNzYWdlIHR5cGUgb3IKKyAgICAgICAgICAgICAg
ICBiaW5hcnkgcGFyYW1ldGVyLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAorICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNl
bmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQorCisgICAgICAgIGlmIGJpbmFyeSBhbmQg
aXNpbnN0YW5jZShtZXNzYWdlLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5
IGZyYW1lIG11c3Qgbm90IGJlIGluc3RhbmNlIG9mIFVuaWNvZGUnKQorCisgICAgICAgIGZvciBt
ZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVyczoK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIobWVzc2FnZSwgZW5k
LCBiaW5hcnkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBTZXQgdGhpcyB0byBhbnkg
cG9zaXRpdmUgaW50ZWdlciB0byBsaW1pdCBtYXhpbXVtIHNpemUgb2YgZGF0YSBpbgorICAgICAg
ICAgICAgIyBwYXlsb2FkIGRhdGEgb2YgZWFjaCBmcmFtZS4KKyAgICAgICAgICAgIE1BWF9QQVlM
T0FEX0RBVEFfU0laRSA9IC0xCisKKyAgICAgICAgICAgIGlmIE1BWF9QQVlMT0FEX0RBVEFfU0la
RSA8PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYuX3dyaXRlci5idWlsZCht
ZXNzYWdlLCBlbmQsIGJpbmFyeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ICAgIGJ5dGVzX3dyaXR0ZW4gPSAwCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAg
ICAgICAgIGVuZF9mb3JfdGhpc19mcmFtZSA9IGVuZAorICAgICAgICAgICAgICAgIGJ5dGVzX3Rv
X3dyaXRlID0gbGVuKG1lc3NhZ2UpIC0gYnl0ZXNfd3JpdHRlbgorICAgICAgICAgICAgICAgIGlm
IChNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQg
Ynl0ZXNfdG9fd3JpdGUgPiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUpOgorICAgICAgICAgICAgICAg
ICAgICBlbmRfZm9yX3RoaXNfZnJhbWUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBieXRl
c190b193cml0ZSA9IE1BWF9QQVlMT0FEX0RBVEFfU0laRQorCisgICAgICAgICAgICAgICAgZnJh
bWUgPSBzZWxmLl93cml0ZXIuYnVpbGQoCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VbYnl0
ZXNfd3JpdHRlbjpieXRlc193cml0dGVuICsgYnl0ZXNfdG9fd3JpdGVdLAorICAgICAgICAgICAg
ICAgICAgICBlbmRfZm9yX3RoaXNfZnJhbWUsIGJpbmFyeSkKKyAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShmcmFtZSkKKworICAgICAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gYnl0ZXNf
dG9fd3JpdGUKKworICAgICAgICAgICAgICAgICMgVGhpcyBpZiBtdXN0IGJlIHBsYWNlZCBoZXJl
ICh0aGUgZW5kIG9mIHdoaWxlIGJsb2NrKSBzbyB0aGF0CisgICAgICAgICAgICAgICAgIyBhdCBs
ZWFzdCBvbmUgZnJhbWUgaXMgc2VudC4KKyAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZSkg
PD0gYnl0ZXNfd3JpdHRlbjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZXhj
ZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbihlKQorCisgICAgZGVmIF9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKHNlbGYsIGZyYW1lKToK
KyAgICAgICAgIiIiR2V0cyBhIG1lc3NhZ2UgZnJvbSBmcmFtZS4gSWYgdGhlIG1lc3NhZ2UgaXMg
Y29tcG9zZWQgb2YgZnJhZ21lbnRlZAorICAgICAgICBmcmFtZXMgYW5kIHRoZSBmcmFtZSBpcyBu
b3QgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSwgdGhpcyBtZXRob2QKKyAgICAgICAgcmV0dXJu
cyBOb25lLiBUaGUgd2hvbGUgbWVzc2FnZSB3aWxsIGJlIHJldHVybmVkIHdoZW4gdGhlIGxhc3QK
KyAgICAgICAgZnJhZ21lbnRlZCBmcmFtZSBpcyBwYXNzZWQgdG8gdGhpcyBtZXRob2QuCisKKyAg
ICAgICAgUmFpc2VzOgorICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRo
ZSBmcmFtZSBkb2Vzbid0IG1hdGNoIGRlZnJhZ21lbnRhdGlvbgorICAgICAgICAgICAgICAgIGNv
bnRleHQsIG9yIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCisgICAgICAgICIiIgor
CisgICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoK
KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHM6CisgICAgICAgICAg
ICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJh
bWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYSB0ZXJtaW5h
dGlvbiBmcmFtZSBidXQgZnJhZ21lbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAn
bm90IHN0YXJ0ZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdS
ZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdmcmFnbWVudGF0aW9uIG5vdCBzdGFydGVkJykKKworICAgICAgICAgICAgaWYgZnJhbWUu
ZmluOgorICAgICAgICAgICAgICAgICMgRW5kIG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGInJy5qb2luKHNlbGYuX3JlY2VpdmVkX2ZyYWdt
ZW50cykKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMgPSBbXQorICAg
ICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2
ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLl9yZWNlaXZlZF9mcmFn
bWVudHM6CisgICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICAg
ICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJworICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRpb24nKQorICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21lbnRhdGlvbiBzdGFydGVk
IHdpdGhvdXQgdGVybWluYXRpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5n
IGZyYWdtZW50YXRpb24nKQorCisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAg
ICAgICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKKworICAgICAgICAgICAgICAgIHNlbGYuX29yaWdp
bmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZS5w
YXlsb2FkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZnJh
Z21lbnRhdGlvbiBmcmFtZQorCisgICAgICAgICAgICAgICAgaWYgY29tbW9uLmlzX2NvbnRyb2xf
b3Bjb2RlKGZyYW1lLm9wY29kZSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRG
cmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBt
dXN0IG5vdCBiZSBmcmFnbWVudGVkJykKKworICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9IGZyYW1lLm9wY29kZQorICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2Zy
YWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAg
ICAgICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAg
ICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2FnZSBpcyBpbnZhbGlkLgor
ICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0g
VHJ1ZQorCisgICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwuIFdlIGNhbiBoYXZlIHN0
YXR1cyByZWFzb24gb25seSBpZiB3ZQorICAgICAgICAjIGhhdmUgc3RhdHVzIGNvZGUuIFN0YXR1
cyByZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCisgICAgICAgICMgYWxsb3dlZCBjYXNl
cyBhcmUKKyAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5vIGNvZGUgbm8gcmVhc29u
CisgICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGhhcyBjb2RlIGJ1dCBu
byByZWFzb24KKyAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRh
OiBib3RoIGNvZGUgYW5kIHJlYXNvbgorICAgICAgICBpZiBsZW4obWVzc2FnZSkgPT0gMDoKKyAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgKGVtcHR5
IGJvZHkpJykKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSA9IGNvbW1v
bi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID09
IDE6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0lmIGEgY2xvc2UgZnJhbWUgaGFzIHN0YXR1cyBjb2RlLCB0aGUgbGVuZ3RoIG9mICcK
KyAgICAgICAgICAgICAgICAnc3RhdHVzIGNvZGUgbXVzdCBiZSAyIG9jdGV0JykKKyAgICAgICAg
ZWxpZiBsZW4obWVzc2FnZSkgPj0gMjoKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xv
c2VfY29kZSA9IHN0cnVjdC51bnBhY2soJyFIJywgbWVzc2FnZVswOjJdKVswXQorICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24gPSBtZXNzYWdlWzI6XS5kZWNvZGUoCisg
ICAgICAgICAgICAgICAgJ3V0Zi04JywgJ3JlcGxhY2UnKQorICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZWNlaXZlZCBjbG9zZSBmcmFtZSAoY29kZT0lZCwgcmVhc29uPSVyKScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2Vf
cmVhc29uKQorCisgICAgICAgICMgQXMgd2UndmUgcmVjZWl2ZWQgYSBjbG9zZSBmcmFtZSwgbm8g
bW9yZSBkYXRhIGlzIGNvbWluZyBvdmVyIHRoZQorICAgICAgICAjIHNvY2tldC4gV2UgY2FuIG5v
dyBzYWZlbHkgY2xvc2UgdGhlIHNvY2tldCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0CisgICAgICAg
ICMgUlNUIHNlbmRpbmcuCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWlu
YXRlZDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgYWNrIGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQg
Y2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisKKyAgICAgICAgY29kZSA9IGNv
bW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUKKyAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAg
aWYgaGFzYXR0cihzZWxmLl9yZXF1ZXN0LCAnX2Rpc3BhdGNoZXInKToKKyAgICAgICAgICAgIGRp
c3BhdGNoZXIgPSBzZWxmLl9yZXF1ZXN0Ll9kaXNwYXRjaGVyCisgICAgICAgICAgICBjb2RlLCBy
ZWFzb24gPSBkaXNwYXRjaGVyLnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2VsZi5fcmVxdWVz
dCkKKyAgICAgICAgICAgIGlmIGNvZGUgaXMgTm9uZSBhbmQgcmVhc29uIGlzIG5vdCBOb25lIGFu
ZCBsZW4ocmVhc29uKSA+IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
CisgICAgICAgICAgICAgICAgICAgICdIYW5kbGVyIHNwZWNpZmllZCByZWFzb24gZGVzcGl0ZSBj
b2RlIGJlaW5nIE5vbmUnKQorICAgICAgICAgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgICAg
ICBpZiByZWFzb24gaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZWFzb24gPSAnJworICAgICAg
ICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKKyAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgJ0Fja25vd2xlZGdlZCBjbG9zaW5nIGhhbmRz
aGFrZSBpbml0aWF0ZWQgYnkgdGhlIHBlZXIgJworICAgICAgICAgICAgJyhjb2RlPSVyLCByZWFz
b249JXIpJywgY29kZSwgcmVhc29uKQorCisgICAgZGVmIF9wcm9jZXNzX3BpbmdfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiUHJvY2Vzc2VzIHBpbmcgbWVzc2FnZS4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogcGluZyBtZXNzYWdlLgorICAgICAgICAi
IiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5v
bl9waW5nX2hhbmRsZXIKKyAgICAgICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAg
aGFuZGxlcihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAg
IHNlbGYuX3NlbmRfcG9uZyhtZXNzYWdlKQorCisgICAgZGVmIF9wcm9jZXNzX3BvbmdfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiUHJvY2Vzc2VzIHBvbmcgbWVzc2FnZS4KKwor
ICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogcG9uZyBtZXNzYWdlLgorICAgICAg
ICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgcGluZyB0aW1lb3V0IGhhbmRs
aW5nLgorCisgICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVxdWUoKQorCisgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYm9keSA9
IHNlbGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRf
Ym9keSA9PSBtZXNzYWdlOgorICAgICAgICAgICAgICAgICAgICAjIGluZmxpZ2h0X3BpbmdzIGNv
bnRhaW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICMgb3RoZXIg
cGVlci4gSnVzdCBmb3JnZXQgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1BpbmcgJXIgaXMgYWNrZWQgKCVkIHBp
bmdzIHdlcmUgaWdub3JlZCknLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYm9k
eSwgbGVuKGluZmxpZ2h0X3BpbmdzKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpbmZsaWdodF9waW5ncy5hcHBl
bmQoZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAg
ICAgICAgICAgICMgVGhlIHJlY2VpdmVkIHBvbmcgd2FzIHVuc29saWNpdGVkIHBvbmcuIEtlZXAg
dGhlCisgICAgICAgICAgICAgICAgIyBwaW5nIHF1ZXVlIGFzIGlzLgorICAgICAgICAgICAgICAg
IHNlbGYuX3BpbmdfcXVldWUgPSBpbmZsaWdodF9waW5ncworICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYSB1bnNvbGljaXRlZCBwb25nJykKKyAgICAgICAgICAg
ICAgICBicmVhaworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLl9y
ZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlcgorICAgICAgICAgICAgaWYgaGFuZGxlcjoKKyAgICAgICAg
ICAgICAgICBoYW5kbGVyKHNlbGYuX3JlcXVlc3QsIG1lc3NhZ2UpCisgICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiByZWNlaXZlX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVy
biBpdHMgcGF5bG9hZCBhcyBhIHRleHQgaW4KKyAgICAgICAgdW5pY29kZSBvciBhIGJpbmFyeSBp
biBzdHIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIHBheWxvYWQgZGF0YSBvZiB0
aGUgZnJhbWUKKyAgICAgICAgICAgIC0gYXMgdW5pY29kZSBpbnN0YW5jZSBpZiByZWNlaXZlZCB0
ZXh0IGZyYW1lCisgICAgICAgICAgICAtIGFzIHN0ciBpbnN0YW5jZSBpZiByZWNlaXZlZCBiaW5h
cnkgZnJhbWUKKyAgICAgICAgICAgIG9yIE5vbmUgaWZmIHJlY2VpdmVkIGNsb3NpbmcgaGFuZHNo
YWtlLgorICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246
IHdoZW4gY2FsbGVkIG9uIGEgY2xpZW50LXRlcm1pbmF0ZWQKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4g
cmVhZCByZXR1cm5zIGVtcHR5CisgICAgICAgICAgICAgICAgc3RyaW5nLgorICAgICAgICAgICAg
SW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkCisg
ICAgICAgICAgICAgICAgZGF0YS4KKyAgICAgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRp
b246IHdoZW4gdGhlIHJlY2VpdmVkIGZyYW1lIGhhcworICAgICAgICAgICAgICAgIGZsYWdzLCBv
cGNvZGUgd2UgY2Fubm90IGhhbmRsZS4gWW91IGNhbiBpZ25vcmUgdGhpcworICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbiBhbmQgY29udGludWUgcmVjZWl2aW5nIHRoZSBuZXh0IGZyYW1lLgorICAg
ICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICdSZXF1ZXN0ZWQgcmVjZWl2ZV9tZXNzYWdlIGFmdGVyIHJlY2VpdmluZyBhIGNsb3NpbmcgJwor
ICAgICAgICAgICAgICAgICdoYW5kc2hha2UnKQorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFi
bGUuCisKKyAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9v
YmplY3QoKQorCisgICAgICAgICAgICAjIENoZWNrIHRoZSBjb25zdHJhaW50IG9uIHRoZSBwYXls
b2FkIHNpemUgZm9yIGNvbnRyb2wgZnJhbWVzCisgICAgICAgICAgICAjIGJlZm9yZSBleHRlbnNp
b24gcHJvY2Vzc2VzIHRoZSBmcmFtZS4KKyAgICAgICAgICAgICMgU2VlIGFsc28gaHR0cDovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNQorICAgICAgICAgICAgaWYgKGNv
bW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpCisgICAgICAgICAgICAgICAgICAg
IGFuZCBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjUpOgorICAgICAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1BheWxvYWQgZGF0YSBz
aXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yICcKKyAgICAgICAgICAg
ICAgICAgICAgJ2xlc3MnKQorCisgICAgICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYu
X29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKKyAgICAgICAgICAgICAgICBmcmFtZV9m
aWx0ZXIuZmlsdGVyKGZyYW1lKQorCisgICAgICAgICAgICBpZiBmcmFtZS5yc3YxIG9yIGZyYW1l
LnJzdjIgb3IgZnJhbWUucnN2MzoKKyAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZy
YW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgZmxhZyBpcyBz
ZXQgKHJzdiA9ICVkJWQlZCknICUKKyAgICAgICAgICAgICAgICAgICAgKGZyYW1lLnJzdjEsIGZy
YW1lLnJzdjIsIGZyYW1lLnJzdjMpKQorCisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fZ2V0
X21lc3NhZ2VfZnJvbV9mcmFtZShmcmFtZSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9u
ZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgbWVzc2FnZV9m
aWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAg
ICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAg
ICAgICAgICBpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9URVhUOgor
ICAgICAgICAgICAgICAgICMgVGhlIFdlYlNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVj
aWZpZXMgdGhhdCBpbnZhbGlkCisgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIG11c3QgYmUg
cmVwbGFjZWQgd2l0aCBVK2ZmZmQgUkVQTEFDRU1FTlQKKyAgICAgICAgICAgICAgICAjIENIQVJB
Q1RFUi4KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZXNzYWdlLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVj
b2RlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVURjhFeGNl
cHRpb24oZSkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1v
bi5PUENPREVfQklOQVJZOgorICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisgICAgICAg
ICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0NMT1NFOgor
ICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNzYWdlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BJTkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJv
Y2Vzc19waW5nX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2lu
YWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfUE9ORzoKKyAgICAgICAgICAgICAgICBzZWxmLl9w
cm9jZXNzX3BvbmdfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKCdPcGNvZGUgJWQgaXMgbm90
IHN1cHBvcnRlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlKQorCisgICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFu
ZHNoYWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6CisgICAgICAgIGJvZHkgPSBjcmVhdGVfY2xvc2lu
Z19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCisgICAgICAgIGZyYW1lID0gY3JlYXRlX2Ns
b3NlX2ZyYW1lKAorICAgICAgICAgICAgYm9keSwKKyAgICAgICAgICAgIG1hc2s9c2VsZi5fb3B0
aW9ucy5tYXNrX3NlbmQsCisgICAgICAgICAgICBmcmFtZV9maWx0ZXJzPXNlbGYuX29wdGlvbnMu
b3V0Z29pbmdfZnJhbWVfZmlsdGVycykKKworICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90
ZXJtaW5hdGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgZGVm
IGNsb3NlX2Nvbm5lY3Rpb24oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlPWNv
bW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
c29uPScnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcmVzcG9uc2U9VHJ1ZSk6Cisg
ICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLiBOb3RlIHRoYXQgdGhpcyBt
ZXRob2QgYmxvY2tzIHVudGlsCisgICAgICAgIGl0IHJlY2VpdmVzIGFja25vd2xlZGdlbWVudCB0
byB0aGUgY2xvc2luZyBoYW5kc2hha2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGNv
ZGU6IFN0YXR1cyBjb2RlIGZvciBjbG9zZSBmcmFtZS4gSWYgY29kZSBpcyBOb25lLCBhIGNsb3Nl
CisgICAgICAgICAgICAgICAgZnJhbWUgd2l0aCBlbXB0eSBib2R5IHdpbGwgYmUgc2VudC4KKyAg
ICAgICAgICAgIHJlYXNvbjogc3RyaW5nIHJlcHJlc2VudGluZyBjbG9zZSByZWFzb24uCisgICAg
ICAgICAgICB3YWl0X3Jlc3BvbnNlOiBUcnVlIHdoZW4gY2FsbGVyIHdhbnQgdG8gd2FpdCB0aGUg
cmVzcG9uc2UuCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogd2hlbiByZWFzb24gaXMgc3BlY2lmaWVkIHdpdGggY29kZSBOb25lCisgICAgICAgICAg
ICBvciByZWFzb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGJvdGggc3RyIGFuZCB1bmljb2RlLgor
ICAgICAgICAiIiIKKworICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVk
OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICdSZXF1
ZXN0ZWQgY2xvc2VfY29ubmVjdGlvbiBidXQgc2VydmVyIGlzIGFscmVhZHkgdGVybWluYXRlZCcp
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFdoZW4gd2UgcmVjZWl2ZSBhIGNsb3Nl
IGZyYW1lLCB3ZSBjYWxsIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2UoKS4KKyAgICAgICAgIyBfcHJv
Y2Vzc19jbG9zZV9tZXNzYWdlKCkgaW1tZWRpYXRlbHkgYWNrbm93bGVkZ2VzIHRvIHRoZQorICAg
ICAgICAjIHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNldHMgc2VydmVy
X3Rlcm1pbmF0ZWQgdG8KKyAgICAgICAgIyBUcnVlLiBTbywgaGVyZSB3ZSBjYW4gYXNzdW1lIHRo
YXQgd2UgaGF2ZW4ndCByZWNlaXZlZCBhbnkgY2xvc2UKKyAgICAgICAgIyBmcmFtZS4gV2UncmUg
aW5pdGlhdGluZyBhIGNsb3NpbmcgaGFuZHNoYWtlLgorCisgICAgICAgIGlmIGNvZGUgaXMgTm9u
ZToKKyAgICAgICAgICAgIGlmIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAw
OgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYgY29kZSBp
cyBOb25lJykKKyAgICAgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShyZWFzb24sIGJ5dGVzKSBhbmQgbm90IGlzaW5zdGFuY2Uo
CisgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAg
ICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAn
Y2xvc2UgcmVhc29uIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYnl0ZXMgb3IgdW5pY29kZScpCisK
KyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnSW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIChjb2Rl
PSVyLCByZWFzb249JXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUsIHJlYXNv
bikKKworICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX0dPSU5HX0FXQVkKKyAgICAg
ICAgICAgICAgICBvciBjb2RlID09IGNvbW1vbi5TVEFUVVNfUFJPVE9DT0xfRVJST1IpIG9yIG5v
dCB3YWl0X3Jlc3BvbnNlOgorICAgICAgICAgICAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8g
d2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVhc29uIGlzCisgICAgICAgICAgICAjIHBy
b3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBpcyBnb2luZyBhd2F5LiBGb3Igc29tZSBv
ZgorICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBpdCBtaWdodCBub3QgbWFrZSBzZW5zZSB0
byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAorICAgICAgICAgICAgIyBidXQgaXQncyBub3QgY2xl
YXIsIHlldC4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgVE9ETyh1a2FpKTogMi4g
d2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVkLyBmbGFnIGhhcyBiZWVuIHNldCwKKyAg
ICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVkIHRpbWVvdXQgZXhwaXJlcy4KKyAgICAg
ICAgIworICAgICAgICAjIEZvciBub3csIHdlIGV4cGVjdCByZWNlaXZpbmcgY2xvc2luZyBoYW5k
c2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZworICAgICAgICAjIG91dCBjbG9zaW5nIGhhbmRzaGFr
ZS4KKyAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYg
bWVzc2FnZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5h
dGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdEaWRuXCd0IHJlY2VpdmUgdmFsaWQgYWNr
IGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICMgVE9ETzogMy4gY2xvc2UgdGhlIFdl
YlNvY2tldCBjb25uZWN0aW9uLgorICAgICAgICAjIG5vdGU6IG1vZF9weXRob24gQ29ubmVjdGlv
biAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4KKworICAgIGRlZiBzZW5kX3Bp
bmcoc2VsZiwgYm9keSwgYmluYXJ5PUZhbHNlKToKKyAgICAgICAgaWYgbm90IGJpbmFyeSBhbmQg
aXNpbnN0YW5jZShib2R5LCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIGJvZHkgPSBib2R5
LmVuY29kZSgnVVRGLTgnKQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHks
IHNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKKyAgICAgICAgc2VsZi5f
d3JpdGUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5fcGluZ19xdWV1ZS5hcHBlbmQoYm9keSkKKwor
ICAgIGRlZiBfc2VuZF9wb25nKHNlbGYsIGJvZHkpOgorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9w
b25nX2ZyYW1lKGJvZHksIHNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykK
KyAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICBkZWYgZ2V0X2xhc3RfcmVjZWl2ZWRf
b3Bjb2RlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBvcGNvZGUgb2YgdGhlIFdlYlNv
Y2tldCBtZXNzYWdlIHdoaWNoIHRoZSBsYXN0IHJlY2VpdmVkCisgICAgICAgIGZyYW1lIGJlbG9u
Z3MgdG8uIFRoZSByZXR1cm4gdmFsdWUgaXMgdmFsaWQgaWZmIGltbWVkaWF0ZWx5IGFmdGVyCisg
ICAgICAgIHJlY2VpdmVfbWVzc2FnZSBjYWxsLgorICAgICAgICAiIiIKKworICAgICAgICByZXR1
cm4gc2VsZi5fb3JpZ2luYWxfb3Bjb2RlCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNjRlNmI4ZTQ2
ODI0NjcxODdmYzM4OTRiMWNhNzllYzgyYTQxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtMCwwICsxLDQwNSBAQAorIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisiIiJXZWJTb2NrZXQgdXRpbGl0aWVzLiIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGFycmF5CitpbXBvcnQgZXJybm8KK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNpeAorZnJvbSBzaXgu
bW92ZXMgaW1wb3J0IG1hcAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitpbXBvcnQgc29j
a2V0CitpbXBvcnQgc3RydWN0CitpbXBvcnQgemxpYgorCit0cnk6CisgICAgZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGZhc3RfbWFza2luZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBh
c3MKKworCitkZWYgcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihtZXNzYWdlLCBleGMpOgor
ICAgICIiIlByZXBlbmQgbWVzc2FnZSB0byB0aGUgZXhjZXB0aW9uLiIiIgorICAgIGV4Yy5hcmdz
ID0gKG1lc3NhZ2UgKyBzdHIoZXhjKSwgKQorICAgIHJldHVybgorCisKK2RlZiBfX3RyYW5zbGF0
ZV9pbnRlcnAoaW50ZXJwLCBjeWd3aW5fcGF0aCk6CisgICAgIiIiVHJhbnNsYXRlIGludGVycCBw
cm9ncmFtIHBhdGggZm9yIFdpbjMyIHB5dGhvbiB0byBydW4gY3lnd2luIHByb2dyYW0KKyAgICAo
ZS5nLiBwZXJsKS4gIE5vdGUgdGhhdCBpdCBkb2Vzbid0IHN1cHBvcnQgcGF0aCB0aGF0IGNvbnRh
aW5zIHNwYWNlLAorICAgIHdoaWNoIGlzIHR5cGljYWxseSB0cnVlIGZvciBVbml4LCB3aGVyZSAj
IS1zY3JpcHQgaXMgd3JpdHRlbi4KKyAgICBGb3IgV2luMzIgcHl0aG9uLCBjeWd3aW5fcGF0aCBp
cyBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCisKKyAgICBBcmdzOgorICAgICAgaW50
ZXJwOiBpbnRlcnAgY29tbWFuZCBsaW5lCisgICAgICBjeWd3aW5fcGF0aDogZGlyZWN0b3J5IG5h
bWUgb2YgY3lnd2luIGJpbmFyeSwgb3IgTm9uZQorICAgIFJldHVybnM6CisgICAgICB0cmFuc2xh
dGVkIGludGVycCBjb21tYW5kIGxpbmUuCisgICAgIiIiCisgICAgaWYgbm90IGN5Z3dpbl9wYXRo
OgorICAgICAgICByZXR1cm4gaW50ZXJwCisgICAgbSA9IHJlLm1hdGNoKCdeW14gXSovKFteIF0r
KSggLiopPycsIGludGVycCkKKyAgICBpZiBtOgorICAgICAgICBjbWQgPSBvcy5wYXRoLmpvaW4o
Y3lnd2luX3BhdGgsIG0uZ3JvdXAoMSkpCisgICAgICAgIHJldHVybiBjbWQgKyBtLmdyb3VwKDIp
CisgICAgcmV0dXJuIGludGVycAorCisKK2RlZiBnZXRfc2NyaXB0X2ludGVycChzY3JpcHRfcGF0
aCwgY3lnd2luX3BhdGg9Tm9uZSk6CisgICAgciIiIkdldCAjIS1pbnRlcnByZXRlciBjb21tYW5k
IGxpbmUgZnJvbSB0aGUgc2NyaXB0LgorCisgICAgSXQgYWxzbyBmaXhlcyBjb21tYW5kIHBhdGgu
ICBXaGVuIEN5Z3dpbiBQeXRob24gaXMgdXNlZCwgZS5nLiBpbiBXZWJLaXQsCisgICAgaXQgY291
bGQgcnVuICIvdXNyL2Jpbi9wZXJsIC13VCBoZWxsby5wbCIuCisgICAgV2hlbiBXaW4zMiBQeXRo
b24gaXMgdXNlZCwgZS5nLiBpbiBDaHJvbWl1bSwgaXQgY291bGRuJ3QuICBTbywgZml4CisgICAg
Ii91c3IvYmluL3BlcmwiIHRvICI8Y3lnd2luX3BhdGg+XHBlcmwuZXhlIi4KKworICAgIEFyZ3M6
CisgICAgICBzY3JpcHRfcGF0aDogcGF0aG5hbWUgb2YgdGhlIHNjcmlwdAorICAgICAgY3lnd2lu
X3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUKKyAgICBSZXR1
cm5zOgorICAgICAgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lLCBvciBOb25lIGlmIGl0IGlz
IG5vdCAjIS1zY3JpcHQuCisgICAgIiIiCisgICAgZnAgPSBvcGVuKHNjcmlwdF9wYXRoKQorICAg
IGxpbmUgPSBmcC5yZWFkbGluZSgpCisgICAgZnAuY2xvc2UoKQorICAgIG0gPSByZS5tYXRjaCgn
XiMhKC4qKScsIGxpbmUpCisgICAgaWYgbToKKyAgICAgICAgcmV0dXJuIF9fdHJhbnNsYXRlX2lu
dGVycChtLmdyb3VwKDEpLCBjeWd3aW5fcGF0aCkKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiB3
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKToKKyAgICAiIiJXcmFwIHBvcGVuMyB0byBz
dXBwb3J0ICMhLXNjcmlwdCBvbiBXaW5kb3dzLgorCisgICAgQXJnczoKKyAgICAgIGN5Z3dpbl9w
YXRoOiAgcGF0aCBmb3IgY3lnd2luIGJpbmFyeSBpZiBjb21tYW5kIHBhdGggaXMgbmVlZGVkIHRv
IGJlCisgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQuICBOb25lIGlmIG5vIHRyYW5zbGF0
aW9uIHJlcXVpcmVkLgorICAgICIiIgorICAgIF9fb3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMKKwor
ICAgIGRlZiBfX3dyYXBfcG9wZW4zKGNtZCwgbW9kZT0ndCcsIGJ1ZnNpemU9LTEpOgorICAgICAg
ICBjbWRsaW5lID0gY21kLnNwbGl0KCcgJykKKyAgICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9p
bnRlcnAoY21kbGluZVswXSwgY3lnd2luX3BhdGgpCisgICAgICAgIGlmIGludGVycDoKKyAgICAg
ICAgICAgIGNtZCA9IGludGVycCArICcgJyArIGNtZAorICAgICAgICByZXR1cm4gX19vcmlnX3Bv
cGVuMyhjbWQsIG1vZGUsIGJ1ZnNpemUpCisKKyAgICBvcy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4z
CisKKworZGVmIGhleGlmeShzKToKKyAgICByZXR1cm4gJyAnLmpvaW4oWyclMDJ4JyAlIHggZm9y
IHggaW4gc2l4Lml0ZXJieXRlcyhzKV0pCisKKworZGVmIGdldF9jbGFzc19sb2dnZXIobyk6Cisg
ICAgIiIiUmV0dXJuIHRoZSBsb2dnaW5nIGNsYXNzIGluZm9ybWF0aW9uLiIiIgorICAgIHJldHVy
biBsb2dnaW5nLmdldExvZ2dlcignJXMuJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG8uX19jbGFzc19fLl9fbW9kdWxlX18sIG8uX19jbGFzc19fLl9fbmFtZV9fKSkKKworCitk
ZWYgcGFja19ieXRlKGIpOgorICAgICIiIlBhY2sgYW4gaW50ZWdlciB0byBuZXR3b3JrLW9yZGVy
ZWQgYnl0ZSIiIgorICAgIHJldHVybiBzdHJ1Y3QucGFjaygnIUInLCBiKQorCisKK2NsYXNzIE5v
b3BNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIE5vT3AgbWFza2luZyBvYmplY3QuCisKKyAgICBU
aGlzIGhhcyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgUmVwZWF0ZWRYb3JNYXNrZXIgYnV0IGp1c3Qg
cmV0dXJucworICAgIHRoZSBzdHJpbmcgcGFzc2VkIGluIHdpdGhvdXQgbWFraW5nIGFueSBjaGFu
Z2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJOb09wLiIi
IgorICAgICAgICBwYXNzCisKKyAgICBkZWYgbWFzayhzZWxmLCBzKToKKyAgICAgICAgIiIiTm9P
cC4iIiIKKyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBSZXBlYXRlZFhvck1hc2tlcihvYmpl
Y3QpOgorICAgICIiIkEgbWFza2luZyBvYmplY3QgdGhhdCBhcHBsaWVzIFhPUiBvbiB0aGUgc3Ry
aW5nLgorCisgICAgQXBwbGllcyBYT1Igb24gdGhlIGJ5dGUgc3RyaW5nIGdpdmVuIHRvIG1hc2sg
bWV0aG9kIHdpdGggdGhlIG1hc2tpbmcgYnl0ZXMKKyAgICBnaXZlbiB0byB0aGUgY29uc3RydWN0
b3IgcmVwZWF0ZWRseS4gVGhpcyBvYmplY3QgcmVtZW1iZXJzIHRoZSBwb3NpdGlvbgorICAgIGlu
IHRoZSBtYXNraW5nIGJ5dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9kIGNhbGwgZW5kZWQgYW5kIHJl
c3VtZXMgZnJvbQorICAgIHRoYXQgcG9pbnQgb24gdGhlIG5leHQgbWFzayBtZXRob2QgY2FsbC4K
KyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFza2luZ19rZXkpOgorICAgICAgICBz
ZWxmLl9tYXNraW5nX2tleSA9IG1hc2tpbmdfa2V5CisgICAgICAgIHNlbGYuX21hc2tpbmdfa2V5
X2luZGV4ID0gMAorCisgICAgZGVmIF9tYXNrX3VzaW5nX3N3aWcoc2VsZiwgcyk6CisgICAgICAg
ICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIFNXSUcuIiIiCisgICAgICAgIG1hc2tlZF9kYXRhID0g
ZmFzdF9tYXNraW5nLm1hc2socywgc2VsZi5fbWFza2luZ19rZXksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCisgICAgICAg
IHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gKChzZWxmLl9tYXNraW5nX2tleV9pbmRleCArIGxl
bihzKSkgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5fbWFz
a2luZ19rZXkpKQorICAgICAgICByZXR1cm4gbWFza2VkX2RhdGEKKworICAgIGRlZiBfbWFza191
c2luZ19hcnJheShzZWxmLCBzKToKKyAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEgcHl0
aG9uLiIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHNpeC50ZXh0X3R5cGUpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdNYXNraW5nIE9wZXJhdGlv
biBzaG91bGQgbm90IHByb2Nlc3MgdW5pY29kZSBzdHJpbmdzJykKKworICAgICAgICByZXN1bHQg
PSBieXRlYXJyYXkocykKKworICAgICAgICAjIFVzZSB0ZW1wb3JhcnkgbG9jYWwgdmFyaWFibGVz
IHRvIGVsaW1pbmF0ZSB0aGUgY29zdCB0byBhY2Nlc3MKKyAgICAgICAgIyBhdHRyaWJ1dGVzCisg
ICAgICAgIG1hc2tpbmdfa2V5ID0gW2MgZm9yIGMgaW4gc2l4Lml0ZXJieXRlcyhzZWxmLl9tYXNr
aW5nX2tleSldCisgICAgICAgIG1hc2tpbmdfa2V5X3NpemUgPSBsZW4obWFza2luZ19rZXkpCisg
ICAgICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gc2VsZi5fbWFza2luZ19rZXlfaW5kZXgKKworICAg
ICAgICBmb3IgaSBpbiByYW5nZShsZW4ocmVzdWx0KSk6CisgICAgICAgICAgICByZXN1bHRbaV0g
Xj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdCisgICAgICAgICAgICBtYXNraW5nX2tl
eV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfc2l6ZQorCisg
ICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gbWFza2luZ19rZXlfaW5kZXgKKworICAg
ICAgICByZXR1cm4gYnl0ZXMocmVzdWx0KQorCisgICAgaWYgJ2Zhc3RfbWFza2luZycgaW4gZ2xv
YmFscygpOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfc3dpZworICAgIGVsc2U6CisgICAg
ICAgIG1hc2sgPSBfbWFza191c2luZ19hcnJheQorCisKKyMgQnkgbWFraW5nIHdiaXRzIG9wdGlv
biBuZWdhdGl2ZSwgd2UgY2FuIHN1cHByZXNzIENNRi9GTEcgKDIgb2N0ZXQpIGFuZAorIyBBRExF
UjMyICg0IG9jdGV0KSBmaWVsZHMgb2YgemxpYiBzbyB0aGF0IHdlIGNhbiB1c2UgemxpYiBtb2R1
bGUganVzdCBhcworIyBkZWZsYXRlIGxpYnJhcnkuIERJQ1RJRCB3b24ndCBiZSBhZGRlZCBhcyBm
YXIgYXMgd2UgZG9uJ3Qgc2V0IGRpY3Rpb25hcnkuCisjIExaNzcgd2luZG93IG9mIDMySyB3aWxs
IGJlIHVzZWQgZm9yIGJvdGggY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCisjIEZvciBk
ZWNvbXByZXNzaW9uLCB3ZSBjYW4ganVzdCB1c2UgMzJLIHRvIGNvdmVyIGFueSB3aW5kb3dzIHNp
emUuIEZvcgorIyBjb21wcmVzc2lvbiwgd2UgdXNlIDMySyBzbyByZWNlaXZlcnMgbXVzdCB1c2Ug
MzJLLgorIworIyBDb21wcmVzc2lvbiBsZXZlbCBpcyBaX0RFRkFVTFRfQ09NUFJFU1NJT04uIFdl
IGRvbid0IGhhdmUgdG8gbWF0Y2ggbGV2ZWwKKyMgdG8gZGVjb2RlLgorIworIyBTZWUgemNvbmYu
aCwgZGVmbGF0ZS5jYywgaW5mbGF0ZS5jYyBvZiB6bGliIGxpYnJhcnksIGFuZCB6bGlibW9kdWxl
LmMgb2YKKyMgUHl0aG9uLiBTZWUgYWxzbyBSRkMxOTUwIChaTElCIDMuMykuCisKKworY2xhc3Mg
X0RlZmxhdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzKToK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAg
ICMgVXNpbmcgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXRzIG9mIDkgZm9yIGdlbmVyYXRpbmcgaW5w
dXQgZnJhbWVzLgorICAgICAgICAjIE9uIFdlYlNvY2tldCBzcGVjLCB0aGUgc21hbGxlc3Qgd2lu
ZG93IGJpdCBpcyA4LiBIb3dldmVyLCB6bGliIGRvZXMKKyAgICAgICAgIyBub3QgYWNjZXB0IHdp
bmRvd19iaXQgPSA4LgorICAgICAgICAjCisgICAgICAgICMgQmVjYXVzZSBvZiBhIHpsaWIgZGVm
bGF0ZSBxdWlyaywgYmFjay1yZWZlcmVuY2VzIHdpbGwgbm90IHVzZSB0aGUKKyAgICAgICAgIyBl
bnRpcmUgcmFuZ2Ugb2YgMSA8PCB3aW5kb3dfYml0cywgYnV0IHdpbGwgaW5zdGVhZCB1c2UgYSBy
ZXN0cmljdGVkCisgICAgICAgICMgcmFuZ2Ugb2YgKDEgPDwgd2luZG93X2JpdHMpIC0gMjYyLiBX
aXRoIGFuIGluY3JlYXNlZCB3aW5kb3dfYml0cyA9IDksCisgICAgICAgICMgYmFjay1yZWZlcmVu
Y2VzIHdpbGwgYmUgd2l0aGluIGEgcmFuZ2Ugb2YgMjUwLiBUaGVzZSBjYW4gc3RpbGwgYmUKKyAg
ICAgICAgIyBkZWNvbXByZXNzZWQgd2l0aCB3aW5kb3dfYml0cyA9IDggYW5kIHRoZSAyNTYtYnl0
ZSB3aW5kb3cgdXNlZCB0aGVyZS4KKyAgICAgICAgIworICAgICAgICAjIFNpbWlsYXIgZGlzc2N1
c3Npb25zIGNhbiBiZSBmb3VuZCBpbiBodHRwczovL2NyYnVnLmNvbS82OTEwNzQKKyAgICAgICAg
d2luZG93X2JpdHMgPSBtYXgod2luZG93X2JpdHMsIDkpCisKKyAgICAgICAgc2VsZi5fY29tcHJl
c3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLXdpbmRv
d19iaXRzKQorCisgICAgZGVmIGNvbXByZXNzKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29tcHJl
c3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKKyAg
ICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworICAgIGRlZiBjb21wcmVzc19hbmRfZmx1
c2goc2VsZiwgYnl0ZXMpOgorICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJl
c3MuY29tcHJlc3MoYnl0ZXMpCisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgKz0gc2VsZi5fY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAgICAgICByZXR1cm4g
Y29tcHJlc3NlZF9ieXRlcworCisgICAgZGVmIGNvbXByZXNzX2FuZF9maW5pc2goc2VsZiwgYnl0
ZXMpOgorICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJlc3MuY29tcHJlc3Mo
Ynl0ZXMpCisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgKz0gc2VsZi5fY29tcHJlc3MuZmx1c2go
emxpYi5aX0ZJTklTSCkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1
dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3Vs
dCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVz
CisKKworY2xhc3MgX0luZmxhdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdp
bmRvd19iaXRzKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxm
KQorICAgICAgICBzZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCisKKyAgICAgICAgc2Vs
Zi5fdW5jb25zdW1lZCA9IGInJworCisgICAgICAgIHNlbGYucmVzZXQoKQorCisgICAgZGVmIGRl
Y29tcHJlc3Moc2VsZiwgc2l6ZSk6CisgICAgICAgIGlmIG5vdCAoc2l6ZSA9PSAtMSBvciBzaXpl
ID4gMCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3NpemUgbXVzdCBiZSAtMSBvciBw
b3NpdGl2ZScpCisKKyAgICAgICAgZGF0YSA9IGInJworCisgICAgICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgICAgICBkYXRhICs9IHNlbGYuX2RlY29tcHJlc3MuZGVjb21wcmVzcyhzZWxmLl91bmNv
bnN1bWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF4KDAsIHNpemUgLSBsZW4oZGF0YSkpKQorICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9
IHNlbGYuX2RlY29tcHJlc3MudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBzZWxmLl9k
ZWNvbXByZXNzLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgICAgICMgRW5jb3VudGVyZWQgYSBs
YXN0IGJsb2NrIChpLmUuIGEgYmxvY2sgd2l0aCBCRklOQUwgPSAxKSBhbmQKKyAgICAgICAgICAg
ICAgICAjIGZvdW5kIGEgbmV3IHN0cmVhbSAodW51c2VkX2RhdGEpLiBXZSBjYW5ub3QgdXNlIHRo
ZSBzYW1lCisgICAgICAgICAgICAgICAgIyB6bGliLkRlY29tcHJlc3Mgb2JqZWN0IGZvciB0aGUg
bmV3IHN0cmVhbS4gQ3JlYXRlIGEgbmV3CisgICAgICAgICAgICAgICAgIyBEZWNvbXByZXNzIG9i
amVjdCB0byBkZWNvbXByZXNzIHRoZSBuZXcgb25lLgorICAgICAgICAgICAgICAgICMKKyAgICAg
ICAgICAgICAgICAjIEl0J3MgZmluZSB0byBpZ25vcmUgdW5jb25zdW1lZF90YWlsIGlmIHVudXNl
ZF9kYXRhIGlzIG5vdAorICAgICAgICAgICAgICAgICMgZW1wdHkuCisgICAgICAgICAgICAgICAg
c2VsZi5fdW5jb25zdW1lZCA9IHNlbGYuX2RlY29tcHJlc3MudW51c2VkX2RhdGEKKyAgICAgICAg
ICAgICAgICBzZWxmLnJlc2V0KCkKKyAgICAgICAgICAgICAgICBpZiBzaXplID49IDAgYW5kIGxl
bihkYXRhKSA9PSBzaXplOgorICAgICAgICAgICAgICAgICAgICAjIGRhdGEgaXMgZmlsbGVkLiBE
b24ndCBjYWxsIGRlY29tcHJlc3MgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBSZS1pbnZva2UgRGVj
b21wcmVzcy5kZWNvbXByZXNzIHRvIHRyeSB0byBkZWNvbXByZXNzIGFsbAorICAgICAgICAgICAg
ICAgICAgICAjIGF2YWlsYWJsZSBieXRlcyBiZWZvcmUgaW52b2tpbmcgcmVhZCB3aGljaCBibG9j
a3MgdW50aWwKKyAgICAgICAgICAgICAgICAgICAgIyBhbnkgbmV3IGJ5dGUgaXMgYXZhaWxhYmxl
LgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAjIEhlcmUsIHNpbmNlIHVudXNlZF9kYXRhIGlzIGVtcHR5LCBldmVuIGlmIHVu
Y29uc3VtZWRfdGFpbCBpcworICAgICAgICAgICAgICAgICMgbm90IGVtcHR5LCBieXRlcyBvZiBy
ZXF1ZXN0ZWQgbGVuZ3RoIGFyZSBhbHJlYWR5IGluIGRhdGEuIFdlCisgICAgICAgICAgICAgICAg
IyBkb24ndCBoYXZlIHRvICJjb250aW51ZSIgaGVyZS4KKyAgICAgICAgICAgICAgICBicmVhawor
CisgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0RlY29t
cHJlc3NlZCAlcicsIGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgYXBwZW5k
KHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FwcGVuZGVkICVyJywg
ZGF0YSkKKyAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCisKKyAgICBkZWYgcmVzZXQo
c2VsZik6CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVzZXQnKQorICAgICAgICBzZWxm
Ll9kZWNvbXByZXNzID0gemxpYi5kZWNvbXByZXNzb2JqKC1zZWxmLl93aW5kb3dfYml0cykKKwor
CisjIENvbXByZXNzZXMvZGVjb21wcmVzc2VzIGdpdmVuIG9jdGV0cyB1c2luZyB0aGUgbWV0aG9k
IGludHJvZHVjZWQgaW4gUkZDMTk3OS4KKworCitjbGFzcyBfUkZDMTk3OURlZmxhdGVyKG9iamVj
dCk6CisgICAgIiIiQSBjb21wcmVzc29yIGNsYXNzIHRoYXQgYXBwbGllcyBERUZMQVRFIHRvIGdp
dmVuIGJ5dGUgc2VxdWVuY2UgYW5kCisgICAgZmx1c2hlcyB1c2luZyB0aGUgYWxnb3JpdGhtIGRl
c2NyaWJlZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIuMS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92ZXIpOgorICAgICAgICBz
ZWxmLl9kZWZsYXRlciA9IE5vbmUKKyAgICAgICAgaWYgd2luZG93X2JpdHMgaXMgTm9uZToKKyAg
ICAgICAgICAgIHdpbmRvd19iaXRzID0gemxpYi5NQVhfV0JJVFMKKyAgICAgICAgc2VsZi5fd2lu
ZG93X2JpdHMgPSB3aW5kb3dfYml0cworICAgICAgICBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVy
ID0gbm9fY29udGV4dF90YWtlb3ZlcgorCisgICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcywgZW5k
PVRydWUsIGJmaW5hbD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuX2RlZmxhdGVyIGlzIE5vbmU6
CisgICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcihzZWxmLl93aW5kb3dfYml0
cykKKworICAgICAgICBpZiBiZmluYWw6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9kZWZs
YXRlci5jb21wcmVzc19hbmRfZmluaXNoKGJ5dGVzKQorICAgICAgICAgICAgIyBBZGQgYSBwYWRk
aW5nIGJsb2NrIHdpdGggQkZJTkFMID0gMCBhbmQgQlRZUEUgPSAwLgorICAgICAgICAgICAgcmVz
dWx0ID0gcmVzdWx0ICsgcGFja19ieXRlKDApCisgICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICByZXN1bHQgPSBzZWxm
Ll9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpCisgICAgICAgIGlmIGVuZDoKKyAg
ICAgICAgICAgICMgU3RyaXAgbGFzdCA0IG9jdGV0cyB3aGljaCBpcyBMRU4gYW5kIE5MRU4gZmll
bGQgb2YgYQorICAgICAgICAgICAgIyBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZCBmb3IgWl9T
WU5DX0ZMVVNILgorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotNF0KKworICAgICAgICBp
ZiBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBlbmQ6CisgICAgICAgICAgICBzZWxmLl9k
ZWZsYXRlciA9IE5vbmUKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKworY2xhc3MgX1JGQzE5
NzlJbmZsYXRlcihvYmplY3QpOgorICAgICIiIkEgZGVjb21wcmVzc29yIGNsYXNzIGEgbGEgUkZD
MTk3OS4KKworICAgIEEgZGVjb21wcmVzc29yIGNsYXNzIGZvciBieXRlIHNlcXVlbmNlIGNvbXBy
ZXNzZWQgYW5kIGZsdXNoZWQgZm9sbG93aW5nCisgICAgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQg
aW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHdpbmRvd19iaXRzPXpsaWIuTUFYX1dCSVRTKToKKyAgICAgICAgc2VsZi5faW5mbGF0ZXIg
PSBfSW5mbGF0ZXIod2luZG93X2JpdHMpCisKKyAgICBkZWYgZmlsdGVyKHNlbGYsIGJ5dGVzKToK
KyAgICAgICAgIyBSZXN0b3JlIHN0cmlwcGVkIExFTiBhbmQgTkxFTiBmaWVsZCBvZiBhIG5vbi1j
b21wcmVzc2VkIGJsb2NrIGFkZGVkCisgICAgICAgICMgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAg
ICAgc2VsZi5faW5mbGF0ZXIuYXBwZW5kKGJ5dGVzICsgYidceDAwXHgwMFx4ZmZceGZmJykKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2luZmxhdGVyLmRlY29tcHJlc3MoLTEpCisKKworY2xhc3MgRGVm
bGF0ZVNvY2tldChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBmb3Igc29ja2V0IG9i
amVjdCB0byBpbnRlcmNlcHQgc2VuZCBhbmQgcmVjdiB0byBwZXJmb3JtCisgICAgZGVmbGF0ZSBj
b21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiB0cmFuc3BhcmVudGx5LgorICAgICIiIgorCisg
ICAgIyBTaXplIG9mIHRoZSBidWZmZXIgcGFzc2VkIHRvIHJlY3YgdG8gcmVjZWl2ZSBjb21wcmVz
c2VkIGRhdGEuCisgICAgX1JFQ1ZfU0laRSA9IDQwOTYKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKworICAgICAgICBzZWxm
Ll9sb2dnZXIgPSBnZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fZGVmbGF0
ZXIgPSBfRGVmbGF0ZXIoemxpYi5NQVhfV0JJVFMpCisgICAgICAgIHNlbGYuX2luZmxhdGVyID0g
X0luZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQorCisgICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZSk6Cisg
ICAgICAgICIiIlJlY2VpdmVzIGRhdGEgZnJvbSB0aGUgc29ja2V0IHNwZWNpZmllZCBvbiB0aGUg
Y29uc3RydWN0aW9uIHVwCisgICAgICAgIHRvIHRoZSBzcGVjaWZpZWQgc2l6ZS4gT25jZSBhbnkg
ZGF0YSBpcyBhdmFpbGFibGUsIHJldHVybnMgaXQgZXZlbgorICAgICAgICBpZiBpdCdzIHNtYWxs
ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHNpemUuCisgICAgICAgICIiIgorCisgICAgICAgICMgVE9E
Tyh0eW9zaGlubyk6IEFsbG93IGNhbGwgd2l0aCBzaXplPTAuIEl0IHNob3VsZCBibG9jayB1bnRp
bCBhbnkKKyAgICAgICAgIyBkZWNvbXByZXNzZWQgZGF0YSBpcyBhdmFpbGFibGUuCisgICAgICAg
IGlmIHNpemUgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm9uLXBvc2l0aXZl
IHNpemUgcGFzc2VkJykKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSBz
ZWxmLl9pbmZsYXRlci5kZWNvbXByZXNzKHNpemUpCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkg
IT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgICAgICByZWFkX2Rh
dGEgPSBzZWxmLl9zb2NrZXQucmVjdihEZWZsYXRlU29ja2V0Ll9SRUNWX1NJWkUpCisgICAgICAg
ICAgICBpZiBub3QgcmVhZF9kYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBiJycKKyAgICAg
ICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChyZWFkX2RhdGEpCisKKyAgICBkZWYgc2VuZGFs
bChzZWxmLCBieXRlcyk6CisgICAgICAgIHNlbGYuc2VuZChieXRlcykKKworICAgIGRlZiBzZW5k
KHNlbGYsIGJ5dGVzKToKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fZGVmbGF0
ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkKKyAgICAgICAgcmV0dXJuIGxlbihieXRlcykK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21v
ZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjE0MjVlMTE0ZDE0ZDg2ZjgxYmNk
MTQxZjYyZjc3ZDY2NGI5Y2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMzEgQEAKK1RoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L2V4dGVuc2lvbnMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9o
ZWFkZXJfdXRpbC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tZW1vcml6
aW5nZmlsZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9w
eXdlYnNvY2tldC91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3dl
YnNvY2tldF9zZXJ2ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vi
c29ja2V0L3dlYnNvY2tldF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY4Y2QzOTNjN2VlODA2OTY3
NTcxMzY2NWQ4NWJlN2Q5NzY1N2I3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC0wLDAgKzEsMjg1IEBA
CisjIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlN0YW5kYWxvbmUgV2Vic29ja2V0U2VydmVyCisKK1RoaXMg
ZmlsZSBkZWFscyB3aXRoIHRoZSBtYWluIG1vZHVsZSBvZiBzdGFuZGFsb25lIHNlcnZlci4gQWx0
aG91Z2ggaXQgaXMgZmluZQordG8gaW1wb3J0IHRoaXMgZmlsZSBkaXJlY3RseSB0byB1c2UgV2Vi
U29ja2V0U2VydmVyLCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZAordG8gdXNlIHN0YW5kYWxv
bmUucHksIHNpbmNlIGl0IGlzIGludGVuZGVkIHRvIGFjdCBhcyBhIHNrZWxldG9uIG9mIHRoaXMg
bW9kdWxlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgQmFzZUhUVFBTZXJ2ZXIKK2Zyb20gc2l4Lm1vdmVzIGltcG9y
dCBzb2NrZXRzZXJ2ZXIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzZWxlY3QK
K2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0cmFj
ZWJhY2sKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQucmVxdWVzdF9oYW5k
bGVyIGltcG9ydCBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcgorCisKK2RlZiBfYWxpYXNfaGFuZGxl
cnMoZGlzcGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6CisgICAgIiIiU2V0IGFs
aWFzZXMgc3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBpbiBkaXNwYXRjaGVy
LgorCisgICAgQXJnczoKKyAgICAgICAgZGlzcGF0Y2hlcjogZGlzcGF0Y2guRGlzcGF0Y2hlciBp
bnN0YW5jZQorICAgICAgICB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGU6IGFsaWFzIG1hcCBmaWxl
CisgICAgIiIiCisKKyAgICB3aXRoIG9wZW4od2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkgYXMg
ZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gJyMn
IG9yIGxpbmUuaXNzcGFjZSgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICBtID0gcmUubWF0Y2goJyhcUyspXHMrKFxTKykkJywgbGluZSkKKyAgICAgICAgICAgIGlmIG5v
dCBtOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1h
cCBmaWxlOicgKyBsaW5lKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcyht
Lmdyb3VwKDEpLCBtLmdyb3VwKDIpKQorICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3Bh
dGNoRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcihzdHIoZSkp
CisKKworY2xhc3MgV2ViU29ja2V0U2VydmVyKHNvY2tldHNlcnZlci5UaHJlYWRpbmdNaXhJbiwg
QmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CisgICAgIiIiSFRUUFNlcnZlciBzcGVjaWFsaXpl
ZCBmb3IgV2ViU29ja2V0LiIiIgorCisgICAgIyBPdmVycmlkZXMgU29ja2V0U2VydmVyLlRocmVh
ZGluZ01peEluLmRhZW1vbl90aHJlYWRzCisgICAgZGFlbW9uX3RocmVhZHMgPSBUcnVlCisgICAg
IyBPdmVycmlkZXMgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlci5hbGxvd19yZXVzZV9hZGRyZXNz
CisgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBvcHRpb25zKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5f
X2luaXRfXyB0byBzZXQgU1NMIGVuYWJsZWQKKyAgICAgICAgc29ja2V0IG9iamVjdCB0byBzZWxm
LnNvY2tldCBiZWZvcmUgc2VydmVyX2JpbmQgYW5kIHNlcnZlcl9hY3RpdmF0ZSwKKyAgICAgICAg
aWYgbmVjZXNzYXJ5LgorICAgICAgICAiIiIKKworICAgICAgICAjIFNoYXJlIGEgRGlzcGF0Y2hl
ciBhbW9uZyByZXF1ZXN0IGhhbmRsZXJzIHRvIHNhdmUgdGltZSBmb3IKKyAgICAgICAgIyBpbnN0
YW50aWF0aW9uLiAgRGlzcGF0Y2hlciBjYW4gYmUgc2hhcmVkIGJlY2F1c2UgaXQgaXMgdGhyZWFk
LXNhZmUuCisgICAgICAgIG9wdGlvbnMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIo
CisgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnMsIG9wdGlvbnMuc2Nhbl9kaXIs
CisgICAgICAgICAgICBvcHRpb25zLmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCisg
ICAgICAgIGlmIG9wdGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZToKKyAgICAgICAgICAg
IF9hbGlhc19oYW5kbGVycyhvcHRpb25zLmRpc3BhdGNoZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQorICAgICAgICB3YXJu
aW5ncyA9IG9wdGlvbnMuZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQorICAgICAgICBpZiB3
YXJuaW5nczoKKyAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnV2FybmluZyBpbiBzb3VyY2UgbG9hZGluZzogJXMnICUg
d2FybmluZykKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKKworICAgICAgICBzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSA9IG9wdGlvbnMucmVxdWVz
dF9xdWV1ZV9zaXplCisgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24gPSB0aHJlYWRpbmcu
RXZlbnQoKQorICAgICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IEZhbHNlCisKKyAgICAgICAgc29j
a2V0c2VydmVyLkJhc2VTZXJ2ZXIuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMuc2VydmVyX2hvc3QsIG9wdGlvbnMucG9ydCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyKQorCisgICAgICAgICMgRXhwb3NlIHRoZSBvcHRpb25zIG9iamVjdCB0byBhbGxv
dyBoYW5kbGVyIG9iamVjdHMgYWNjZXNzIGl0LiBXZSBuYW1lCisgICAgICAgICMgaXQgd2l0aCB3
ZWJzb2NrZXRfIHByZWZpeCB0byBhdm9pZCBjb25mbGljdC4KKyAgICAgICAgc2VsZi53ZWJzb2Nr
ZXRfc2VydmVyX29wdGlvbnMgPSBvcHRpb25zCisKKyAgICAgICAgc2VsZi5fY3JlYXRlX3NvY2tl
dHMoKQorICAgICAgICBzZWxmLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWN0
aXZhdGUoKQorCisgICAgZGVmIF9jcmVhdGVfc29ja2V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5z
ZXJ2ZXJfbmFtZSwgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3MKKyAgICAg
ICAgc2VsZi5fc29ja2V0cyA9IFtdCisgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9uYW1lOgor
ICAgICAgICAgICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBkb2Vzbid0IHN1cHBvcnQgSVB2NiwgdGhl
IGZpcnN0IGJpbmQgZmFpbHMuCisgICAgICAgICAgICAjIE9uIHBsYXRmb3JtcyB0aGF0IHN1cHBv
cnRzIElQdjYKKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBib3RoIElQdjQgYW5kIElQdjYg
b24gY2FsbCB3aXRoIEFGX0lORVQ2LCB0aGUKKyAgICAgICAgICAgICMgICBmaXJzdCBiaW5kIHN1
Y2NlZWRzIGFuZCB0aGUgc2Vjb25kIGZhaWxzICh3ZSdsbCBzZWUgJ0FkZHJlc3MKKyAgICAgICAg
ICAgICMgICBhbHJlYWR5IGluIHVzZScgZXJyb3IpLgorICAgICAgICAgICAgIyAtIElmIGl0IGJp
bmRzIG9ubHkgSVB2NiBvbiBjYWxsIHdpdGggQUZfSU5FVDYsIGJvdGggY2FsbCBhcmUKKyAgICAg
ICAgICAgICMgICBleHBlY3RlZCB0byBzdWNjZWVkIHRvIGxpc3RlbiBib3RoIHByb3RvY29sLgor
ICAgICAgICAgICAgYWRkcmluZm9fYXJyYXkgPSBbKHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNP
Q0tfU1RSRUFNLCAnJywgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09D
S19TVFJFQU0sICcnLCAnJywgJycpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWRkcmlu
Zm9fYXJyYXkgPSBzb2NrZXQuZ2V0YWRkcmluZm8oc2VsZi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQu
QUZfVU5TUEVDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICBmb3IgYWRkcmluZm8g
aW4gYWRkcmluZm9fYXJyYXk6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ3JlYXRl
IHNvY2tldCBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIGZhbWlseSwgc29ja3R5cGUs
IHByb3RvLCBjYW5vbm5hbWUsIHNvY2thZGRyID0gYWRkcmluZm8KKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBzb2NrZXRfID0gc29ja2V0LnNvY2tldChmYW1pbHksIHNvY2t0eXBl
KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9z
ZXJ2ZXJfb3B0aW9ucworICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNlX3RsczoKKyAg
ICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1dGg6CisgICAgICAg
ICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX09QVElPTkFM
CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX05PTkUKKyAgICAgICAgICAg
ICAgICBzb2NrZXRfID0gc3NsLndyYXBfc29ja2V0KAorICAgICAgICAgICAgICAgICAgICBzb2Nr
ZXRfLAorICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPXNlcnZlcl9vcHRpb25zLnByaXZhdGVf
a2V5LAorICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5jZXJ0aWZp
Y2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9c2VydmVyX29wdGlvbnMudGxzX2Ns
aWVudF9jYSwKKyAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPWNsaWVudF9jZXJ0XykKKyAg
ICAgICAgICAgIHNlbGYuX3NvY2tldHMuYXBwZW5kKChzb2NrZXRfLCBhZGRyaW5mbykpCisKKyAg
ICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZl
ci5UQ1BTZXJ2ZXIuc2VydmVyX2JpbmQgdG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tl
dHMgYmluZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFpbGVkX3NvY2tldHMgPSBbXQorCisg
ICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAgICAgICBzb2Nr
ZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdCaW5kIG9uOiAlcicsIGFkZHJpbmZvKQorICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVz
ZV9hZGRyZXNzOgorICAgICAgICAgICAgICAgIHNvY2tldF8uc2V0c29ja29wdChzb2NrZXQuU09M
X1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICBzb2NrZXRfLmJpbmQoc2VsZi5zZXJ2ZXJfYWRkcmVzcykKKyAgICAgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9z
ZSgpCisgICAgICAgICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCisg
ICAgICAgICAgICBpZiBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdID09IDA6CisgICAgICAgICAgICAg
ICAgIyBUaGUgb3BlcmF0aW5nIHN5c3RlbSBhc3NpZ25zIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIg
Zm9yIHBvcnQKKyAgICAgICAgICAgICAgICAjIG51bWJlciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNv
bmQgYW5kIGxhdGVyIHNvY2tldHMgc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICMgdGhlIHNh
bWUgcG9ydCBudW1iZXIuIEFsc28gc2VsZi5zZXJ2ZXJfcG9ydCBpcyByZXdyaXR0ZW4KKyAgICAg
ICAgICAgICAgICAjIGJlY2F1c2UgaXQgaXMgZXhwb3J0ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkg
ZXh0ZXJuYWwgY29kZS4KKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9hZGRyZXNzID0gKHNl
bGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9y
dCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
aW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNlbGYuc2VydmVyX3BvcnQpCisKKyAgICAgICAg
Zm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6CisgICAgICAgICAgICBzZWxmLl9zb2Nr
ZXRzLnJlbW92ZShzb2NrZXRpbmZvKQorCisgICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYWN0aXZh
dGUgdG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgbGlzdGVuLgorICAgICAgICAi
IiIKKworICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCisKKyAgICAgICAgZm9yIHNvY2tldGlu
Zm8gaW4gc2VsZi5fc29ja2V0czoKKyAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29j
a2V0aW5mbworICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0xpc3RlbiBvbjogJXInLCBh
ZGRyaW5mbykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb2NrZXRfLmxpc3Rl
bihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJl
OiAlcicsIGUpCisgICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCisgICAgICAgICAgICAg
ICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCisKKyAgICAgICAgZm9yIHNvY2tl
dGluZm8gaW4gZmFpbGVkX3NvY2tldHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92
ZShzb2NrZXRpbmZvKQorCisgICAgICAgIGlmIGxlbihzZWxmLl9zb2NrZXRzKSA9PSAwOgorICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2FsKAorICAgICAgICAgICAgICAgICdObyBzb2Nr
ZXRzIGFjdGl2YXRlZC4gVXNlIGluZm8gbG9nIGxldmVsIHRvIHNlZSB0aGUgcmVhc29uLicpCisK
KyAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRT
ZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9jbG9zZSB0byBlbmFibGUgbXVsdGlwbGUKKyAgICAgICAg
c29ja2V0cyBjbG9zZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIHNvY2tldGluZm8gaW4g
c2VsZi5fc29ja2V0czoKKyAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5m
bworICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nsb3NlIG9uOiAlcicsIGFkZHJpbmZv
KQorICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLmZpbGVuby4iIiIKKwor
ICAgICAgICBzZWxmLl9sb2dnZXIuY3JpdGljYWwoJ05vdCBzdXBwb3J0ZWQ6IGZpbGVubycpCisg
ICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXRzWzBdWzBdLmZpbGVubygpCisKKyAgICBkZWYgaGFu
ZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgIiIiT3Zl
cnJpZGUgU29ja2V0U2VydmVyLmhhbmRsZV9lcnJvci4iIiIKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZXJyb3IoJ0V4Y2VwdGlvbiBpbiBwcm9jZXNzaW5nIHJlcXVlc3QgZnJvbTogJXJcbiVzJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9hZGRyZXNzLCB0cmFjZWJhY2suZm9y
bWF0X2V4YygpKQorICAgICAgICAjIE5vdGU6IGNsaWVudF9hZGRyZXNzIGlzIGEgdHVwbGUuCisK
KyAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFRDUFNlcnZl
ci5nZXRfcmVxdWVzdC4iIiIKKworICAgICAgICBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRy
ZXNzID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKKworICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNl
bGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCisgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVz
ZV90bHM6CisgICAgICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBk
b25lIG9uIGFjY2VwdC4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ2lwaGVyOiAl
cycsIGFjY2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50IGNlcnQ6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
Y2NlcHRlZF9zb2NrZXQuZ2V0cGVlcmNlcnQoKSkKKworICAgICAgICByZXR1cm4gYWNjZXB0ZWRf
c29ja2V0LCBjbGllbnRfYWRkcmVzcworCisgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZiwgcG9s
bF9pbnRlcnZhbD0wLjUpOgorICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuQmFzZVNl
cnZlci5zZXJ2ZV9mb3JldmVyLiIiIgorCisgICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gVHJ1
ZQorICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLmNsZWFyKCkKKyAgICAgICAgaGFuZGxl
X3JlcXVlc3QgPSBzZWxmLmhhbmRsZV9yZXF1ZXN0CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwg
J19oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrJyk6CisgICAgICAgICAgICBoYW5kbGVfcmVxdWVzdCA9
IHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2sKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci53YXJuaW5nKCdGYWxsYmFjayB0byBibG9ja2luZyByZXF1ZXN0IGhhbmRs
ZXInKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBzZWxmLl9fd3Nfc2VydmluZzoK
KyAgICAgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdCgKKyAgICAgICAgICAgICAg
ICAgICAgW3NvY2tldF9bMF0gZm9yIHNvY2tldF8gaW4gc2VsZi5fc29ja2V0c10sIFtdLCBbXSwK
KyAgICAgICAgICAgICAgICAgICAgcG9sbF9pbnRlcnZhbCkKKyAgICAgICAgICAgICAgICBmb3Ig
c29ja2V0XyBpbiByOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldF8K
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICAgICAgICAgIHNl
bGYuc29ja2V0ID0gTm9uZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fX3dz
X2lzX3NodXRfZG93bi5zZXQoKQorCisgICAgZGVmIHNodXRkb3duKHNlbGYpOgorICAgICAgICAi
IiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5zaHV0ZG93bi4iIiIKKworICAgICAg
ICBzZWxmLl9fd3Nfc2VydmluZyA9IEZhbHNlCisgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rv
d24ud2FpdCgpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3NldHVwLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU3ZTk0MjhkNjkxZDc1NmNmM2Q2ODdlNzU2YjczODE0Y2NkM2JlN2QKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9zZXR1cC5weQpAQCAtMCwwICsxLDc0IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2V0IHVwIHNjcmlwdCBmb3Ig
bW9kX3B5d2Vic29ja2V0LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitmcm9tIHNldHVw
dG9vbHMgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KK2ltcG9ydCBzeXMKKworX1BBQ0tBR0VfTkFN
RSA9ICdtb2RfcHl3ZWJzb2NrZXQnCisKKyMgQnVpbGQgYW5kIHVzZSBhIEMrKyBleHRlbnNpb24g
Zm9yIGZhc3RlciBtYXNraW5nLiBTV0lHIGlzIHJlcXVpcmVkLgorX1VTRV9GQVNUX01BU0tJTkcg
PSBGYWxzZQorCisjIFRoaXMgaXMgdXNlZCBzaW5jZSBweXRob25fcmVxdWlyZXMgZmllbGQgaXMg
bm90IHJlY29nbml6ZWQgd2l0aAorIyBwaXAgdmVyc2lvbiA5LjAuMCBhbmQgZWFybGllcgoraWYg
c3lzLnZlcnNpb24gPCAnMi43JzoKKyAgICBwcmludCgnJXMgcmVxdWlyZXMgUHl0aG9uIDIuNyBv
ciBsYXRlci4nICUgX1BBQ0tBR0VfTkFNRSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0
KDEpCisKK2lmIF9VU0VfRkFTVF9NQVNLSU5HOgorICAgIHNldHVwKGV4dF9tb2R1bGVzPVsKKyAg
ICAgICAgRXh0ZW5zaW9uKCdtb2RfcHl3ZWJzb2NrZXQvX2Zhc3RfbWFza2luZycsCisgICAgICAg
ICAgICAgICAgICBbJ21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSddLAorICAgICAgICAg
ICAgICAgICAgc3dpZ19vcHRzPVsnLWMrKyddKQorICAgIF0pCisKK3NldHVwKAorICAgIGF1dGhv
cj0nWXV6byBGdWppc2hpbWEnLAorICAgIGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcn
LAorICAgIGRlc2NyaXB0aW9uPSdTdGFuZGFsb25lIFdlYlNvY2tldCBTZXJ2ZXIgZm9yIHRlc3Rp
bmcgcHVycG9zZXMuJywKKyAgICBsb25nX2Rlc2NyaXB0aW9uPSgnbW9kX3B5d2Vic29ja2V0IGlz
IGEgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAndGhlIFdl
YlNvY2tldCBQcm90b2NvbCAoUkZDIDY0NTUpLiAnCisgICAgICAgICAgICAgICAgICAgICAgJ1Nl
ZSBtb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgZm9yIG1vcmUgZGV0YWlsLicpLAorICAgIGxp
Y2Vuc2U9J1NlZSBMSUNFTlNFJywKKyAgICBuYW1lPV9QQUNLQUdFX05BTUUsCisgICAgcGFja2Fn
ZXM9W19QQUNLQUdFX05BTUUsIF9QQUNLQUdFX05BTUUgKyAnLmhhbmRzaGFrZSddLAorICAgIHB5
dGhvbl9yZXF1aXJlcz0nPj0yLjcnLAorICAgIGluc3RhbGxfcmVxdWlyZXM9WydzaXgnXSwKKyAg
ICAjVE9ETyhzdXp1a2lrZWl0YSk6IFVwZGF0ZSB0aGlzIHRvIG5ldyBHaXRodWIgVVJMCisgICAg
dXJsPSdodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvJywKKyAgICB2ZXJzaW9u
PSczLjAuMCcsCispCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIw
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkK
QEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NhY2VydC5wZW0gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2FjZXJ0LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGFkYWUx
MjFiZGQzYWRiNzQ0MzgzY2QzYmYwOGMyMjZmODU1NGJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NhY2VydC5wZW0KQEAgLTAsMCArMSwxNyBAQAorLS0t
LS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlDdkRDQ0FpV2dBd0lCQWdJSkFLcVZnaGtHRjFy
U01BMEdDU3FHU0liM0RRRUJCUVVBTUVreEN6QUpCZ05WCitCQVlUQWtwUU1RNHdEQVlEVlFRSUV3
VlViMnQ1YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXhGREFTCitCZ05WQkFNVEMzQjVk
MlZpYzI5amEyVjBNQjRYRFRFeU1EWXdOakEzTWpRek0xb1hEVE01TVRBeU16QTNNalF6CitNMW93
U1RFTE1Ba0dBMVVFQmhNQ1NsQXhEakFNQmdOVkJBZ1RCVlJ2YTNsdk1SUXdFZ1lEVlFRS0V3dHdl
WGRsCitZbk52WTJ0bGRERVVNQklHQTFVRUF4TUxjSGwzWldKemIyTnJaWFF3Z1o4d0RRWUpLb1pJ
aHZjTkFRRUJCUUFECitnWTBBTUlHSkFvR0JBS29TRVcyYmlReFZyTU1LZG4vOFBKekRZaVNYRFBS
OVdRYkxSUlExR201amtDWWlhaFhXCit1MkNiVFRoZlBQZmkyTkhBM0krSGxUN2dPOXlSN1JWVXZO
NklTVXpHd1hERXE0ZjRVTnF0UU9oUWFxcUsrQ1o5CitMTy9CaE8vWVlmTnJiU1BsWXpIVUthVDll
c2U3eE85VnpWS0xXK3FVZjJNamg0LytTenhCRE5QN0FnTUJBQUdqCitnYXN3Z2Fnd0hRWURWUjBP
QkJZRUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpNSGtHQTFVZEl3UnlNSENBCitGT3NXZHhD
U3V5aHdhWmVhYjZCb1RobzMrK2J6b1Uya1N6QkpNUXN3Q1FZRFZRUUdFd0pLVURFT01Bd0dBMVVF
CitDQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RDM0I1ZDJWaWMyOWphMlYwTVJRd0VnWURWUVFERXd0
d2VYZGxZbk52CitZMnRsZElJSkFLcVZnaGtHRjFyU01Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktv
WklodmNOQVFFRkJRQURnWUVBCitnc01JMVdFWXFOdy9qaFVJZHJUQmNDeEowWDZoSnZBOXppS0FO
Vm0xUnMrNFAzWURBcmtROGJDcjZ4WStLdzdzCitacDB5RTdkTThHTWRpK0RVNmhMM3QzRTVlTWtU
UzF5WnI5V0NLNGYyUkxvK2V0OThzZWxaeWRwSGVtRjNESkozCitnQWo4U3g0TEJhRzhDYi9XbkVN
UHYzTXhHM2ZCRTVmYXZGNlY0alUwN2hRPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Mzc5YTcyYjBkYWM1ZjQx
OTc5YzgwMmM2NjNkZjhiODhkZWE4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L2NlcnQvY2VydC5wZW0KQEAgLTAsMCArMSw2MSBAQAorQ2VydGlmaWNhdGU6Cisg
ICAgRGF0YToKKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorICAgICAgICBTZXJpYWwgTnVtYmVy
OiAxICgweDEpCisgICAgICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlw
dGlvbgorICAgICAgICBJc3N1ZXI6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1w
eXdlYnNvY2tldAorICAgICAgICBWYWxpZGl0eQorICAgICAgICAgICAgTm90IEJlZm9yZTogSnVu
ICA2IDA3OjI1OjA4IDIwMTIgR01UCisgICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMjMgMDc6
MjU6MDggMjAzOSBHTVQKKyAgICAgICAgU3ViamVjdDogQz1KUCwgU1Q9VG9reW8sIE89cHl3ZWJz
b2NrZXQsIENOPXB5d2Vic29ja2V0CisgICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgor
ICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAg
ICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAyNCBiaXQpCisgICAgICAgICAgICAgICAgTW9kdWx1cyAo
MTAyNCBiaXQpOgorICAgICAgICAgICAgICAgICAgICAwMDpkZToxMDpjZTozYTo1YTowNDphNDox
YzoyOTo5Mzo1YzoyMzo4MjoxYToKKyAgICAgICAgICAgICAgICAgICAgZjI6MDY6MDE6ZTY6MmI6
YTQ6MGY6ZGQ6Nzc6NDk6NzY6ODk6MDM6YTI6MjE6CisgICAgICAgICAgICAgICAgICAgIGRlOjA0
Ojc1OmM2OmUyOmRkOmZiOjM1OjI3OjNhOmEyOjkyOjhlOjEyOjYyOgorICAgICAgICAgICAgICAg
ICAgICAyYjozZToxZjpmNDo3ODpkZjpiNjo5NDpjYjoyNzpkNjpjYjpkNjozNzpkNzoKKyAgICAg
ICAgICAgICAgICAgICAgNWM6MDg6ZjA6MDk6M2U6Yzk6Y2U6MjQ6MmQ6MDA6Yzk6ZGY6NGE6ZTA6
OTk6CisgICAgICAgICAgICAgICAgICAgIGU1OmZiOjIzOmE5OmUyOmQ2OmM5OjNkOjk2OmZhOjAx
Ojg4OmRlOjVhOjg5OgorICAgICAgICAgICAgICAgICAgICBiMDpjZjowMzo2Nzo2ZjowNDo4Njox
ZDplZjo2MjoxYzo1NTphOTowNzo5YToKKyAgICAgICAgICAgICAgICAgICAgMmU6NjY6MmE6NzM6
NWI6NGM6NjI6MDM6Zjk6ODI6ODM6ZGI6Njg6YmY6Yjg6CisgICAgICAgICAgICAgICAgICAgIDRi
OjBiOjhiOjkzOjExOmI4OjU0OjczOjdiCisgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3
ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIFg1MDl2
MyBCYXNpYyBDb25zdHJhaW50czogCisgICAgICAgICAgICAgICAgQ0E6RkFMU0UKKyAgICAgICAg
ICAgIE5ldHNjYXBlIENlcnQgVHlwZTogCisgICAgICAgICAgICAgICAgU1NMIFNlcnZlcgorICAg
ICAgICAgICAgTmV0c2NhcGUgQ29tbWVudDogCisgICAgICAgICAgICAgICAgT3BlblNTTCBHZW5l
cmF0ZWQgQ2VydGlmaWNhdGUKKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlm
aWVyOiAKKyAgICAgICAgICAgICAgICA4MjpBMTo3Mzo4QjoxNjowQzo3QzpFNDpEMzo0Njo5NTox
Mzo5NToxQTozMjpDMTo4NDpFOTowNjowMAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBL
ZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAga2V5aWQ6RUI6MTY6Nzc6MTA6OTI6QkI6
Mjg6NzA6Njk6OTc6OUE6NkY6QTA6Njg6NEU6MUE6Mzc6RkI6RTY6RjMKKworICAgIFNpZ25hdHVy
ZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorICAgICAgICA2YjpiMzo0NjoyOTow
MjpkZjpiMDpjODo4ZTpjNDpkNzo3ZjphMDoxZTowZDoxYTplYjoyZjoKKyAgICAgICAgZGY6ZDE6
NDg6NTc6MzY6NWY6OTU6OGM6MWI6ZjA6NTE6ZDY6NTI6ZTc6OGQ6ODQ6M2I6OWY6CisgICAgICAg
IGQ4OmVkOjIyOjljOmFhOmJkOmVlOjliOjkwOjFkOjg0OmEzOjRjOjBiOmNiOmViOjY0OjczOgor
ICAgICAgICBiYTpmNzoxNTpjZTpkYTo1ZjpkYjo4YjoxNTowNzphNjoyODo3ZjpiOTo4YzoxMTo5
Yjo2NDoKKyAgICAgICAgZDM6ZjE6YmU6NTI6NGY6YzM6ZDg6NTg6ZmU6ZGU6NTY6NjM6NjM6M2I6
NTE6ZWQ6YTc6ODE6CisgICAgICAgIGY5OjA1OjUxOjcwOjYzOjMyOjA5OjBlOjk0OjdlOjA1OmZl
OmExOjU2OjE4OjM0Ojk4OmQ1OgorICAgICAgICA5OToxZTo0ZToyNzozODo4OTo5MDo2YTplNTpj
ZTo2MDozNTowMTpmNTpkZTozNDo2MDpiMToKKyAgICAgICAgY2I6YWUKKy0tLS0tQkVHSU4gQ0VS
VElGSUNBVEUtLS0tLQorTUlJQ21EQ0NBZ0dnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFVRkFE
QkpNUXN3Q1FZRFZRUUdFd0pLVURFTworTUF3R0ExVUVDQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RD
M0I1ZDJWaWMyOWphMlYwTVJRd0VnWURWUVFERXd0dworZVhkbFluTnZZMnRsZERBZUZ3MHhNakEy
TURZd056STFNRGhhRncwek9URXdNak13TnpJMU1EaGFNRWt4Q3pBSgorQmdOVkJBWVRBa3BRTVE0
d0RBWURWUVFJRXdWVWIydDViekVVTUJJR0ExVUVDaE1MY0hsM1pXSnpiMk5yWlhReAorRkRBU0Jn
TlZCQU1UQzNCNWQyVmljMjlqYTJWME1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFL
QgorZ1FEZUVNNDZXZ1NrSENtVFhDT0NHdklHQWVZcnBBL2RkMGwyaVFPaUlkNEVkY2JpM2ZzMUp6
cWlrbzRTWWlzKworSC9SNDM3YVV5eWZXeTlZMzExd0k4QWsreWM0a0xRREozMHJnbWVYN0k2bmkx
c2s5bHZvQmlONWFpYkRQQTJkdgorQklZZDcySWNWYWtIbWk1bUtuTmJUR0lEK1lLRDIyaS91RXNM
aTVNUnVGUnpld0lEQVFBQm80R1BNSUdNTUFrRworQTFVZEV3UUNNQUF3RVFZSllJWklBWWI0UWdF
QkJBUURBZ1pBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dWdQorVTFOTUlFZGxibVZ5WVhSbFpD
QkRaWEowYVdacFkyRjBaVEFkQmdOVkhRNEVGZ1FVZ3FGeml4WU1mT1RUUnBVVAorbFJveXdZVHBC
Z0F3SHdZRFZSMGpCQmd3Rm9BVTZ4WjNFSks3S0hCcGw1cHZvR2hPR2pmNzV2TXdEUVlKS29aSQor
aHZjTkFRRUZCUUFEZ1lFQWE3TkdLUUxmc01pT3hOZC9vQjROR3VzdjM5RklWelpmbFl3YjhGSFdV
dWVOaER1ZgorMk8waW5LcTk3cHVRSFlTalRBdkw2MlJ6dXZjVnp0cGYyNHNWQjZZb2Y3bU1FWnRr
MC9HK1VrL0QyRmorM2xaagorWXp0UjdhZUIrUVZSY0dNeUNRNlVmZ1grb1ZZWU5KalZtUjVPSnpp
SmtHcmx6bUExQWZYZU5HQ3h5NjQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGUxMzk5
Mjc5ODJmYTk4MjNhNTcyMzFhZjExMzQ5OWQ2YTVhOGIwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAyNTgyCnpjbVkrRlhIKmppN0tNYCMwdEJnMnF6Rml0UCFmPFBIQS0qTkxvQFZfZ2NmMHQ4V0Io
I0k/eyVZUkZ4KnVgJSl5Sgp6MW5HIUszNWJxaFhyWDdBYjlRJWpmODZ1bHglWnYtPiVIXkFhWnB3
ZWtQNDJZbn1nNnYjT3VZQThHdG12VmpTSWoKekZwaDVVKChaJWZBU3dTdWtZWEdwPUYqQSkwUmZp
PGAlZU9kXkZwQmktZiNzN2Zpcj8+MmNXJFQjOzIqR0FQX0FlCnoxXyNscm4yRShlS09NSjZOMjZZ
Sm5lX0BocH1TS1BYVUI3Rk1lcl9+NXwxcWdDe1Rxbm5CdXYxJGtwcDVPQnolQAp6PG15U3crP1k+
XmpBWjQjWEEtfSohUXNidU9oVyhzTzgzNjYoJDsoMUE+bW8oTy0leChobig9eVo7eX5ORyNRWDEK
emdIa1NpXl44Y3Y0VFRTTDl2bjVxUig+X0QzZiZvYypqd1BnSSNLQFEjQXNMKUQ7QkQmV2IyZCtJ
MV5KN24+fVlaCnpiQ1hvOWZPQGchQGRXWWEyViV9Oykhezx6RGN8KHB2SklheFc3TmRPJU82Zj5y
JmFPcnBIa3tvX1I5bVE0N3VvYgp6P2w+OXxufFgzYGFncF5HO0x3WFI1PChscitSPGNMNWpUUSg/
XkQ8a1JvIUhfVCNwP3kzZH1edENZViE4Ul5OP30KekMqJVhtOUxlZj5qN2hsci0/akhscHx3ZkEm
Xm4tczs8IXokcUQxeFBxIThLUTF9fmR1cHd+Qk0xZ3N+QEFvO0NxCnp3UmdVfDJeZH1OLWdWO0Bh
WWt1OEklfXw8bDZRTT89ZH5GWXBiR0ZIOSZ2TmdLWipTeWNJU3xtY3VPUj9sJkNPdwp6c3t6ZDV6
bWVseHFOMURReXt9UGdCPXUjZnpJTlBrQjBvTipjazN2YCsxeyFZWFB+e0VWSTdWcWgqfnVhV19+
VUMKemxSMzNSWjA1SGhrQy0xZUlwKS1AWV55dmMtfFIlISo5ZHc3bmZXKXlqY0hJWWY2cj1hQ3Qo
VWhpLUZKbTJue18pCnole3VsQlVYUmAyPD5seH1lR21TbVJKPjVvdGtAKCtwanNQcTs0aFo2RklL
bCN7bnhQIUFMITI4X19BWWZsYFZnewp6bFJSYUFSfFZteTFfYF5iYmpacnpBe1EkbFllaklZZF5B
JFo+VyZqeW5NPUtgVGw0d1YpM3dAZDFKY2AtNS1DR0oKenhxXkA4XyghPFpGMnFsaF9afX1ucj9T
JjUqeitGQCl2KFoxRUlzO0htfSExfk1UTCFqMUBjJFpITFJ9Vig9O15vCnpkVXBmeT9vPnl6b2xf
c2k8PFVFQj10KGVlQnpnSl5XWXdzSENHOTM0cyRkKUBxcUh3Z155Wk17YF5qSiE5O3RyNgp6ZW9V
YXkmJCtCeUd8Tl5fem9BSF50WUlnPmhhWXd8QHxjMzFedyhuVWQ3ayhZbUVKNzZWWTc5KyhDKF8k
OzFNc1UKemhpTmkrQjVnU3JEanw5PjxAPzZSJjh6Ym04YnI/Qy1ObjFjaygrPE5LJTcpNnYtd1dx
ND1NX1RidDE5NHpVKnlGCnpoPG90PEhCV25veEIlMWs5KE0wbzxOZylSZ0hTKCM/ZWRFUUIhXnxG
ay1fKGFgYlVCTEFLKmh+YXp+IV94dT1UNAp6Nkc1Sy1hWEpvdEhRbEVDOENVNXxSeU1SdVFrWEUp
P152NihpPU11KT0kXm8lMCF5czVHVlJhWFoyUzJINEk4M0wKenEpYmB8UHh7KDg5VzMyenE0c3F6
SCtCQUtQOXVhREVwRDhJSUE5RC1INDVDJVZUP0pKI01hK0JAaTlNUGRGLSMjCnpOeEY1VHV9aXpf
aHokU0taMF9fJiFZcDF5YWRWem9jQEV5K0JlZkpDdENTVmQ1KEp5KDxDNkljQ1d9RG1Id0M4VAp6
UntrcXZSQD8zcnpMRzIkWmRjeC01dkZSQGQkUSNERCt+e2RoQG1kX2VgQkI2KlVZNlIrNF4jVSV6
NGx0eDlCJTsKek5WOHoqe0djR007Z3EyUnR5ZGp7SDBTMHAjejw2JTdtMyElez9NUXVhPGBAZTVi
T3RiZCFFYz9HXnV4ZjRneGNJCnotRjdTVFlpfnZEYm12Q1ozTkRjZkhqOD5DOUZWNmpkMX0ocFN3
cmdHaypRWjlScjQpNiFzU2tUVXFieGJhZWEydQp6d1NgJHlvc1EpZWIlb192Sk8qIUFgZFI7WTRr
PiZxWXp1YS1aTkU8M0ZFPUkrZVNVO3ghcHReQTM1Pm9Jb1BgSnEKelpsfilyQzYwTCtrU3hBZ29Q
RXxyR2pWQD8yQXkqWGI9JGNgY19MMz1FemhqQlVEPWgxXzQlZUJDZmxqJkVIWm1PCnpzezFifE51
eDYrO0sjS0I9VGtffGlrfHsqMDFkayQ5S2E2YGNSVT1NY1lpTiFrLWEpMlBEMzFoPGNUcyVrUGhv
Wgp6Tykyd19UOS04dzJOTSYmcTJwbDReS3F9Q1BlPWw5aHEkVzQhdDtKRCV8VUooMjh2RGJNKkw+
VkY3YldfWHtiMTQKekdOdyh3PkVfUzlgPDt4UWxQYEBzZD42bTNuMilMKTBwIVhSckQjMjVpSWtS
RHMpMXVqTiVTc3l3IzYydmR2JkFsCnpjZGotWWwjNitAYTBXc2NVPDNgZ3ZXJDJ3LSheSGZFUnl4
c05zcTZtSzBkODs/MExTZU5oJU5FZTBCWUo0SUwoYQp6JFdYbmQpUEJXPEFUa3t5JTJTOUdQYTJx
eUpXJF5KSl9jb19YUDFtOUV9ailRP15sJCMqTUR4UDV8bVkxemNxM3kKemI9QHp5Q1h1Z3dke05q
eD9pMjdqK3pYTzQqVj59WmUtekJReClIeW53TGBOaighOXQpNTRkTzt6VFZ+LU8jO1U7CnpNd3Aw
UFUtdVVMPyMjOEwtKSZ2bWJuQW1uI0AmYT52PWNQfUVVUUpWd2FEdzlWPC1Jd1l0aVQ5dyhUTWVh
MiVEeQp6fEE0MCRONXVvaVFFXl97UzEtaWBxNWx0dHBnPlNENHBhZmhmbEJ8NlBFPiE+c2hXa29F
bVpoZyt+MEhwPDNLVEAKejlqayRxTUM9MCZCYmteZlJvNGYzOEp+aVdDfHhHUDBgd1ozRiNrOGcq
SWROWSRHRi1BeDhePERyQl5qMjhYYjZzCnpSfDtWdmFyJTx8VFpLfj4zMGtEMylXJEFEIyh0dGAj
QHg3UThPWWFwVF9KeU0xdlQ/bGJ4LStfRihKRiV5UzBPJAp6cFMjbH13KjBqPmJ9TTNlOzRJPntw
TU0+cyVgP2ZTQUVfUWJgQW4+X1Yha2l9JDl3TU45KGZVMXVKR20wTWk3aEsKekE1bDBlMXdWY14k
cWw/NWdtPjhFdkJwU2FXZjVUSWczWlNidUpocDthJShaK2tje2NkdjFQdVgkZTJHQU4/SmY4CnpX
S05nUzwoTTJGTlVgUnhkQkd9Zj1TMXJuUSplUjEycUZfQyYmcG5AYHklQ35MOV5RX1o5bGgmRz1Y
dkdDITQxMAp6eW4pNW89KXgyaUpZK14/XkVMam50SEhgfUspemE/ST18diEkaEwwbiZHenlwemFM
d05kZU09T2pXfC0tPW1SX2oKenl0P35WeF9fOUJFdmNoTD85aHVVb2ItNW4rcjE/PHhAY2d9NWF8
VnxGY0ZRTyplSXB3WkVuflZHTGVxdlNAV2syCnopIStEMy07ezRAT08pYitiUU8jPS1FK0JlT0Bm
ITM8aVQwbWIycGIzODh7R0lSYXJqZG5UaSVAPzRxd3kjcTYwWQp6cWlBfHt0Nm80OUVNMThKJnc4
REEjd1FERHNGd04kSEcqTVRMMjFCUWopWVJgVzVMO1pmTU08KnJMPUZJZ3wwYkoKelQ5cjdGbEJM
TF5yViUxVU8hM3xHREVhTSFqSFBMcj81UUJ1Q0MhVyk+ZHJmXlJDYGA3WVJZWihLPmllMD5wSmRe
CnpKV19IeyUpXmMhNj5sfDlQOD9jPWooQjU3WUp6OD9YeVF6RTl1R2F9ZFYwUFRwMyE7cCFTRil9
dC1pPkM8RWRIKwp6TUtBU25WIyEmU1dmZH0wZGxqWHN5UWZ6c0A2aTArZHFTSEpMfkY3fm90fCRI
d2YrRiowakNLKnc1V29GQFE5aE4KemhsayVTe2g2QzU3Q0kyXzVSOTtmMztwLTE+RFVuKlVeZW9H
amhxbzsqUioka1ZFMDFKPlRKUVJzdjlveiZrITN6CnprV1Q7KjBRZTBNM1VDTHcwRD1KK2ZHZmNG
dkpVfGBVZHNLXzM0dFR2SHtmJi1ZOFdGR2g/XlAhWDU7eT1GWnVEcwpmZnJXazAlTShPR25UTU48
aCZxQHlMZERVXyZNY0FmP3wxa01lalVObwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L2NlcnQva2V5LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWU4NTgzMThmMjliYTZiNDYyM2Jk
NWZiYzRhMDhjZTczZDkwMzExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2tleS5wZW0KQEAgLTAsMCArMSwxNSBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFU
RSBLRVktLS0tLQorTUlJQ1hnSUJBQUtCZ1FEZUVNNDZXZ1NrSENtVFhDT0NHdklHQWVZcnBBL2Rk
MGwyaVFPaUlkNEVkY2JpM2ZzMQorSnpxaWtvNFNZaXMrSC9SNDM3YVV5eWZXeTlZMzExd0k4QWsr
eWM0a0xRREozMHJnbWVYN0k2bmkxc2s5bHZvQgoraU41YWliRFBBMmR2QklZZDcySWNWYWtIbWk1
bUtuTmJUR0lEK1lLRDIyaS91RXNMaTVNUnVGUnpld0lEQVFBQgorQW9HQkFJdUN1VjFWY25iN3Jt
OEN3dGdaUDVYZ21ZOHZTanhUbGRhZmE2WHZhd0VZVVRQMFM3N3YvMWxsZzFZdgorVUlWK0krUFFn
RzlvVm9ZT2wyMkxvaW1IUy9aM2UxZnNvdDV0RFlzekdlOC9Ha3N0NG9hUmVTb3h2QlVhNldYcAor
UVNvN1lGQ2FqdUh0RStXL2d6RitVSGJkenpYSURqUVozMTRMTkY1dCs0VW5zRVBCQWtFQStnaXJJ
bXFXb00ydAorM1VSOGY4b2VrRVJ3c21FTWY5REg1WXBINGN2VW52SStrd2VzQy9yMlU4U2hvKytm
eUVNVU5tN2FJWEdxTkxnYQorb2dBTSs0Tlg0UUpCQU9OZFN4U2F5MjJlZ1RHTm9JaExuZGxqV2t1
T3QvOUZXajJrbGYvNFF4RDRibE1KUTVPcQorUWRPR0FoN25WUWpwUExRNUQ3Q0JWQUtwR00yQ0Qr
UUpCdHNDUUVQMmt6MzVweFB5bEczdXJjQzJtZlF4QmtrVworWkNWaUJOUDU4R3dKMGJPYXVUT1NC
RXdGWFd1THFUdzhhRHd4TDQ5VU5tcWMwTjBmcGUyZkFlaGozVUVDUVFDbQorRkgvRGpVOEx3N3li
ZGRqTnRtNlhYUHVZTmFneHozY2JrQjRCM0ZjaERsZUlVRHdNb1ZGME1XOWJJNS81NG1WMQorUURr
MXRVS29ydHh2UVpKYUFENEJBa0VBaEdPSFFxUGQ2YkJCb0ZCdnBhTHpQSk14d0xLckIrV3RrcS9R
bEM3MgorQ2xSaU1uMmc4U0FMaUlMM0JEZ0dYS2NLRS9XeTdqby9hZi9KQ3pRL2NQcXQvQT09Cist
LS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MDQ0MTkwZjU4YmU3NzQ1NjE1MjNiM2E3ZWI5
Y2RkYWJhODIzODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2Nl
cnQvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC9jZXJ0L2NhY2VydC5wZW0KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQv
Y2VydC5wZW0KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUwYTZhY2Q1Mzc2MjIzYzYw
M2FiZTI2NGI5Njc3OTY4MzJmYjU3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5CkBAIC0wLDAgKzEsNzE5IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IGNsaWVudCB1
dGlsaXR5IGZvciB0ZXN0aW5nLgorCitUaGlzIG1vZHVsZSBjb250YWlucyBoZWxwZXIgbWV0aG9k
cyBmb3IgcGVyZm9ybWluZyBoYW5kc2hha2UsIGZyYW1lCitzZW5kaW5nL3JlY2VpdmluZyBhcyBh
IFdlYlNvY2tldCBjbGllbnQuCisKK1RoaXMgaXMgY29kZSBmb3IgdGVzdGluZyBtb2RfcHl3ZWJz
b2NrZXQuIEtlZXAgdGhpcyBjb2RlIGluZGVwZW5kZW50IGZyb20KK21vZF9weXdlYnNvY2tldC4g
RG9uJ3QgaW1wb3J0IGUuZy4gU3RyZWFtIGNsYXNzIGZvciBnZW5lcmF0aW5nIGZyYW1lIGZvcgor
dGVzdGluZy4gVXNpbmcgdXRpbC5oZXhpZnksIGV0Yy4gdGhhdCBhcmUgbm90IHJlbGF0ZWQgdG8g
cHJvdG9jb2wgcHJvY2Vzc2luZworaXMgYWxsb3dlZC4KKworTm90ZToKK1RoaXMgY29kZSBpcyBm
YXIgZnJvbSByb2J1c3QsIGUuZy4sIHdlIGN1dCBjb3JuZXJzIGluIGhhbmRzaGFrZS4KKyIiIgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGJhc2U2NAor
aW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCitp
bXBvcnQgcmUKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0aW1lCitmcm9t
IGhhc2hsaWIgaW1wb3J0IHNoYTEKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKK2Zyb20gc2l4
IGltcG9ydCBpbmRleGJ5dGVzCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorCitERUZBVUxUX1BPUlQgPSA4MAor
REVGQVVMVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIE9wY29kZXMgaW50cm9kdWNlZCBpbiBJRVRG
IEh5QmkgMDEgZm9yIHRoZSBuZXcgZnJhbWluZyBmb3JtYXQKK09QQ09ERV9DT05USU5VQVRJT04g
PSAweDAKK09QQ09ERV9DTE9TRSA9IDB4OAorT1BDT0RFX1BJTkcgPSAweDkKK09QQ09ERV9QT05H
ID0gMHhhCitPUENPREVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorCisjIFN0cmlu
Z3MgdXNlZCBmb3IgaGFuZHNoYWtlCitfVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZTogd2Vic29j
a2V0XHJcbicKK19DT05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
KworV0VCU09DS0VUX0FDQ0VQVF9VVUlEID0gYicyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFC
MERDODVCMTEnCisKKyMgU3RhdHVzIGNvZGVzCitTVEFUVVNfTk9STUFMX0NMT1NVUkUgPSAxMDAw
CitTVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKK1NUQVRVU19QUk9UT0NPTF9FUlJPUiA9IDEwMDIK
K1NUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMworU1RBVFVTX05PX1NUQVRVU19SRUNFSVZF
RCA9IDEwMDUKK1NUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgorU1RBVFVTX0lOVkFMSURf
RlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNworU1RBVFVTX1BPTElDWV9WSU9MQVRJT04gPSAxMDA4
CitTVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQorU1RBVFVTX01BTkRBVE9SWV9FWFQgPSAx
MDEwCitTVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IgPSAxMDExCitTVEFUVVNfVExTX0hB
TkRTSEFLRSA9IDEwMTUKKworIyBFeHRlbnNpb24gdG9rZW5zCitfUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxhdGUnCisKKworZGVmIF9tZXRob2RfbGluZShy
ZXNvdXJjZSk6CisgICAgcmV0dXJuICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIHJlc291cmNlCisK
KworZGVmIF9zZWNfb3JpZ2luX2hlYWRlcihvcmlnaW4pOgorICAgIHJldHVybiAnU2VjLVdlYlNv
Y2tldC1PcmlnaW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQorCisKK2RlZiBfb3JpZ2luX2hl
YWRlcihvcmlnaW4pOgorICAgICMgNC4xIDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcg
Ik9yaWdpbjoiLCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsCisgICAgIyBhbmQgdGhlIC9vcmln
aW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJ09yaWdpbjogJXNcclxuJyAlIG9yaWdpbi5sb3dlcigpCisKKworZGVmIF9mb3Jt
YXRfaG9zdF9oZWFkZXIoaG9zdCwgcG9ydCwgc2VjdXJlKToKKyAgICAjIDQuMSA5LiBMZXQgL2hv
c3Rwb3J0LyBiZSBhbiBlbXB0eSBzdHJpbmcuCisgICAgIyA0LjEgMTAuIEFwcGVuZCB0aGUgL2hv
c3QvIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bworICAgICMgL2hvc3Rw
b3J0LworICAgIGhvc3Rwb3J0ID0gaG9zdC5sb3dlcigpCisgICAgIyA0LjEgMTEuIElmIC9zZWN1
cmUvIGlzIGZhbHNlLCBhbmQgL3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8KKyAgICAj
IGlzIHRydWUsIGFuZCAvcG9ydC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAwM0EgQ09M
T04gY2hhcmFjdGVyCisgICAgIyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9wb3J0Lywg
ZXhwcmVzc2VkIGFzIGEgYmFzZS10ZW4gaW50ZWdlciwKKyAgICAjIHRvIC9ob3N0cG9ydC8KKyAg
ICBpZiAoKG5vdCBzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVMVF9QT1JUKQorICAgICAgICAgICAg
b3IgKHNlY3VyZSBhbmQgcG9ydCAhPSBERUZBVUxUX1NFQ1VSRV9QT1JUKSk6CisgICAgICAgIGhv
c3Rwb3J0ICs9ICc6JyArIHN0cihwb3J0KQorICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9m
IHRoZSBzdHJpbmcgIkhvc3Q6IiwgYSBVKzAwMjAgU1BBQ0UKKyAgICAjIGNoYXJhY3RlciwgYW5k
IC9ob3N0cG9ydC8sIHRvIC9maWVsZHMvLgorICAgIHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhv
c3Rwb3J0CisKKworIyBUT0RPKHR5b3NoaW5vKTogRGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92
ZSB0aGVzZSBzaGFyZWQgbWV0aG9kcyB0byB0aGF0LgorCisKK2RlZiByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgbGVuZ3RoKToKKyAgICByZWNlaXZlZF9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0g
bGVuZ3RoCisgICAgd2hpbGUgcmVtYWluaW5nID4gMDoKKyAgICAgICAgbmV3X3JlY2VpdmVkX2J5
dGVzID0gc29ja2V0LnJlY3YocmVtYWluaW5nKQorICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVk
X2J5dGVzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdD
b25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJworICAg
ICAgICAgICAgICAgICcocmVxdWVzdGVkICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5
dGVzKScgJQorICAgICAgICAgICAgICAgIChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCisg
ICAgICAgIHJlY2VpdmVkX2J5dGVzLmFwcGVuZChuZXdfcmVjZWl2ZWRfYnl0ZXMpCisgICAgICAg
IHJlbWFpbmluZyAtPSBsZW4obmV3X3JlY2VpdmVkX2J5dGVzKQorICAgIHJldHVybiBiJycuam9p
bihyZWNlaXZlZF9ieXRlcykKKworCisjIFRPRE8odHlvc2hpbm8pOiBOb3cgdGhlIFdlYlNvY2tl
dEhhbmRzaGFrZSBjbGFzcyBkaXZlcnRzIHRoZXNlIG1ldGhvZHMuIFdlCisjIHNob3VsZCBtb3Zl
IHRvIEhUVFAgcGFyc2VyIGFzIHNwZWNpZmllZCBpbiBSRkMgNjQ1NS4KKworCitkZWYgX3JlYWRf
ZmllbGRzKHNvY2tldCk6CisgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2Yg
bmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgIGZpZWxkcyA9IHt9CisgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUg
ZW1wdHkgYnl0ZSBhcnJheXMKKyAgICAgICAgbmFtZSA9IGInJworICAgICAgICB2YWx1ZSA9IGIn
JworICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KKyAgICAgICAgbmFtZSA9IF9yZWFkX25h
bWUoc29ja2V0KQorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBicmVhawor
ICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKKyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTog
U2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCisgICAgICAgIGNo
ID0gX3NraXBfc3BhY2VzKHNvY2tldCkKKyAgICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLwor
ICAgICAgICB2YWx1ZSA9IF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gpCisgICAgICAgICMgNC4xIDM3
LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVz
KHNvY2tldCwgMSkKKyAgICAgICAgaWYgY2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5k
ICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCisgICAgICAgICAgICAgICAg
JyVyJyAlIChjaCwgbmFtZSwgdmFsdWUpKQorICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVu
dHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCisgICAgICAgICMgZ2l2
ZW4gYnkgdGhlIHN0cmluZyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRl
CisgICAgICAgICMgYXJyYXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBi
eSB0aGUgc3RyaW5nCisgICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFs
dWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCisgICAgICAgICMgc3RyZWFtLgorICAgICAg
ICBmaWVsZHMuc2V0ZGVmYXVsdChuYW1lLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgW10pLmFwcGVuZCh2YWx1ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICMg
NC4xIDM5LiByZXR1cm4gdG8gdGhlICJGaWVsZCIgc3RlcCBhYm92ZQorICAgIHJldHVybiBmaWVs
ZHMKKworCitkZWYgX3JlYWRfbmFtZShzb2NrZXQpOgorICAgICMgNC4xIDMzLiBsZXQgL25hbWUv
IGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgbmFtZSA9IGInJworICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgY2gg
PSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYidccic6ICAjIDB4
MEQKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgY2ggPT0gYidcbic6ICAj
IDB4MEEKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBMRiB3aGVuIHJl
YWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgZWxpZiBjaCA9PSBiJzonOiAg
IyAweDNBCisgICAgICAgICAgICByZXR1cm4gbmFtZS5sb3dlcigpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBuYW1lICs9IGNoCisKKworZGVmIF9za2lwX3NwYWNlcyhzb2NrZXQpOgorICAg
ICMgNC4xIDM1LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICB3aGlsZSBUcnVlOgor
ICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKQorICAgICAgICBpZiBjaCA9PSBi
JyAnOiAgIyAweDIwCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICByZXR1cm4gY2gKKwor
CitkZWYgX3JlYWRfdmFsdWUoc29ja2V0LCBjaCk6CisgICAgIyA0LjEgMzMuIGxldCAvdmFsdWUv
IGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgdmFsdWUgPSBiJycKKyAgICAjIDQuMSAzNi4gcmVh
ZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIuCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgaWYgY2ggPT0g
Yidccic6ICAjIDB4MEQKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBlbGlmIGNo
ID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdmFsdWUgKz0gY2gK
KyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKKworCitkZWYgcmVhZF9mcmFt
ZV9oZWFkZXIoc29ja2V0KToKKworICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpKQorICAgIGZpbiA9IChmaXJzdF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAo
Zmlyc3RfYnl0ZSA+PiA2KSAmIDEKKyAgICByc3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisg
ICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQpICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUg
JiAweGYKKworICAgIHNlY29uZF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkK
KyAgICBtYXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQorICAgIHBheWxvYWRfbGVuZ3RoID0g
c2Vjb25kX2J5dGUgJiAweDdmCisKKyAgICBpZiBtYXNrICE9IDA6CisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTWFzayBiaXQgbXVzdCBiZSAwIGZvciBmcmFtZXMgY29taW5nIGZyb20gc2VydmVy
JykKKworICAgIGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNzoKKyAgICAgICAgZXh0ZW5kZWRfcGF5
bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgOCkKKyAgICAgICAgcGF5bG9hZF9s
ZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCchUScsIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQor
ICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignRXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggPj0gMl42MycpCisg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRf
bGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3Ro
ID0gc3RydWN0LnVucGFjaygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKworICAg
IHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZF9sZW5ndGgKKwor
CitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3IgYSBUTFMgY29u
bmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6CisgICAgICAg
IHNlbGYuX3NzbCA9IHNvY2tldC5zc2wocmF3X3NvY2tldCkKKworICAgIGRlZiBzZW5kKHNlbGYs
IGJ5dGVzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKKworICAgIGRl
ZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6
ZSkKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgorICAg
ICAgICBwYXNzCisKKworY2xhc3MgSHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRpb24pOgorICAg
ICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3RlZCBodHRwIHN0
YXR1cyBjb2RlIHdhcworICAgIHJlY2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRzaGFrZS4KKyAg
ICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc3RhdHVzKToKKyAgICAgICAgc3Vw
ZXIoSHR0cFN0YXR1c0V4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKKyAgICAgICAgc2Vs
Zi5zdGF0dXMgPSBzdGF0dXMKKworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2Uob2JqZWN0KToK
KyAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJv
dG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Cisg
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisKKyAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNv
Y2tldCk6CisgICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2NrZXQuCisKKyAgICAgICAgUmFpc2Vz
OgorICAgICAgICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAgICAiIiIK
KworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKworICAgICAgICByZXF1ZXN0X2xpbmUg
PSBfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVyJywgcmVxdWVzdF9s
aW5lKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUuZW5jb2RlKCdV
VEYtOCcpKQorCisgICAgICAgIGZpZWxkcyA9IFtdCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQ
R1JBREVfSEVBREVSKQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikK
KworICAgICAgICBmaWVsZHMuYXBwZW5kKAorICAgICAgICAgICAgX2Zvcm1hdF9ob3N0X2hlYWRl
cihzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMudmVyc2lvbiBpcyA4OgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZChfc2VjX29yaWdpbl9o
ZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCisKKyAg
ICAgICAgb3JpZ2luYWxfa2V5ID0gb3MudXJhbmRvbSgxNikKKyAgICAgICAga2V5ID0gYmFzZTY0
LmI2NGVuY29kZShvcmlnaW5hbF9rZXkpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2Vj
LVdlYlNvY2tldC1LZXk6ICVzICglcyknLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQorICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2Vj
LVdlYlNvY2tldC1LZXk6ICVzXHJcbicgJSBrZXkuZGVjb2RlKCdVVEYtOCcpKQorCisgICAgICAg
IGZpZWxkcy5hcHBlbmQodSdTZWMtV2ViU29ja2V0LVZlcnNpb246ICVkXHJcbicgJSBzZWxmLl9v
cHRpb25zLnZlcnNpb24pCisKKyAgICAgICAgIyBTZXR0aW5nIHVwIGV4dGVuc2lvbnMuCisgICAg
ICAgIGlmIGxlbihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpID4gMDoKKyAgICAgICAgICAgIGZp
ZWxkcy5hcHBlbmQodSdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnM6ICVzXHJcbicgJQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zKSkK
KworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3Qg
aGVhZGVyczogJXInLCBmaWVsZHMpCisKKyAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKKyAg
ICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkLmVuY29kZSgnVVRGLTgnKSkKKyAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoYidcclxuJykKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKKworICAgICAgICBmaWVs
ZCA9IGInJworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIGZpZWxkICs9IGNoCisgICAgICAgICAg
ICBpZiBjaCA9PSBiJ1xuJzoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVzcG9uc2UtTGluZTogJXInLCBmaWVs
ZCkKKworICAgICAgICAjIFdpbGwgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3Igd2hlbiB0aGUg
ZGVjb2RlIGZhaWxzCisgICAgICAgIGlmIGxlbihmaWVsZCkgPCA3IG9yIG5vdCBmaWVsZC5lbmRz
d2l0aChiJ1xyXG4nKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV3Jvbmcgc3RhdHVz
IGxpbmU6ICVzJyAlIGZpZWxkLmRlY29kZSgnTGF0aW4tMScpKQorICAgICAgICBtID0gcmUubWF0
Y2goYidbXiBdKiAoW14gXSopIC4qJywgZmllbGQpCisgICAgICAgIGlmIG0gaXMgTm9uZToKKyAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBz
dGF0dXMgbGluZTogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5kZWNv
ZGUoJ0xhdGluLTEnKSkKKyAgICAgICAgY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgbm90
IHJlLm1hdGNoKGInWzAtOV1bMC05XVswLTldJCcsIGNvZGUpOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdIVFRQIHN0YXR1cyBjb2RlICVzIGlzIG5vdCB0
aHJlZSBkaWdpdCBpbiBzdGF0dXMgbGluZTogJXMnICUKKyAgICAgICAgICAgICAgICAoY29kZS5k
ZWNvZGUoJ0xhdGluLTEnKSwgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpKQorICAgICAgICBpZiBj
b2RlICE9IGInMTAxJzoKKyAgICAgICAgICAgIHJhaXNlIEh0dHBTdGF0dXNFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAl
cyBpbiBzdGF0dXMgbGluZTogJworICAgICAgICAgICAgICAgICclcicgJSAoY29kZS5kZWNvZGUo
J0xhdGluLTEnKSwgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpLAorICAgICAgICAgICAgICAgIGlu
dChjb2RlKSkKKyAgICAgICAgZmllbGRzID0gX3JlYWRfZmllbGRzKHNlbGYuX3NvY2tldCkKKyAg
ICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgaWYgY2gg
IT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRXhwZWN0ZWQg
TEYgYnV0IGZvdW5kOiAlcicgJSBjaCkKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09w
ZW5pbmcgaGFuZHNoYWtlIHJlc3BvbnNlIGhlYWRlcnM6ICVyJywgZmllbGRzKQorCisgICAgICAg
ICMgQ2hlY2sgL2ZpZWxkcy8KKyAgICAgICAgaWYgbGVuKGZpZWxkc1sndXBncmFkZSddKSAhPSAx
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNdWx0aXBsZSBVcGdyYWRlIGhlYWRlcnMg
Zm91bmQ6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWyd1cGdyYWRl
J10pCisgICAgICAgIGlmIGxlbihmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkgIT0gMToKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignTXVsdGlwbGUgQ29ubmVjdGlvbiBoZWFkZXJzIGZvdW5kOiAl
cycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddKQor
ICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vic29ja2V0JzoKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRlciB2YWx1ZTogJXMn
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKKyAg
ICAgICAgaWYgZmllbGRzWydjb25uZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgQ29ubmVjdGlvbiBoZWFkZXIg
dmFsdWU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydjb25uZWN0
aW9uJ11bMF0pCisKKyAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTXVsdGlwbGUgU2VjLVdlYlNv
Y2tldC1BY2NlcHQgaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pCisKKyAgICAgICAgYWNjZXB0ID0g
ZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddWzBdCisKKyAgICAgICAgIyBWYWxpZGF0ZQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWNvZGVkX2FjY2VwdCA9IGJhc2U2NC5iNjRkZWNv
ZGUoYWNjZXB0KQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUg
Zm9yIGhlYWRlciBTZWMtV2ViU29ja2V0LUFjY2VwdDogJyArIGFjY2VwdCkKKworICAgICAgICBp
ZiBsZW4oZGVjb2RlZF9hY2NlcHQpICE9IDIwOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdEZWNvZGVkIHZhbHVlIG9mIFNlYy1XZWJTb2Nr
ZXQtQWNjZXB0IGlzIG5vdCAyMC1ieXRlIGxvbmcnKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQWN0dWFsIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAlciAoJXMpJywgYWNjZXB0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoZGVjb2RlZF9hY2NlcHQpKQorCisg
ICAgICAgIG9yaWdpbmFsX2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoa2V5ICsgV0VCU09DS0VUX0FD
Q0VQVF9VVUlEKS5kaWdlc3QoKQorICAgICAgICBleHBlY3RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0
ZW5jb2RlKG9yaWdpbmFsX2V4cGVjdGVkX2FjY2VwdCkKKworICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0V4cGVjdGVkIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAlciAoJXMpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2V4cGVjdGVkX2FjY2VwdCkpCisKKyAgICAgICAg
aWYgYWNjZXB0ICE9IGV4cGVjdGVkX2FjY2VwdC5kZWNvZGUoJ1VURi04Jyk6CisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ludmFsaWQgU2VjLVdlYlNvY2tl
dC1BY2NlcHQgaGVhZGVyOiAlciAoZXhwZWN0ZWQpICE9ICVyICcKKyAgICAgICAgICAgICAgICAn
KGFjdHVhbCknICUgKGFjY2VwdCwgZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBzZXJ2ZXJf
ZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVsZHMuZ2V0KCdzZWMtd2Vic29ja2V0LWV4dGVuc2lvbnMn
KQorICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KKyAgICAgICAgaWYgc2VydmVyX2V4
dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5z
aW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgICcsICcuam9p
bihzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIpKQorCisgICAgICAgICMgU2NhbiBhY2NlcHRlZCBl
eHRlbnNpb24gbGlzdCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgdW5yZWNvZ25pemVkCisgICAg
ICAgICMgZXh0ZW5zaW9ucyBvciBleHRlbnNpb25zIHdlIGRpZG4ndCByZXF1ZXN0IGluIGl0LiBU
aGVuLCBmb3IKKyAgICAgICAgIyBleHRlbnNpb25zIHdlIHJlcXVlc3QsIHBhcnNlIHRoZW0gYW5k
IHN0b3JlIHBhcmFtZXRlcnMuIFRoZXkgd2lsbCBiZQorICAgICAgICAjIHVzZWQgbGF0ZXIgYnkg
ZWFjaCBleHRlbnNpb24uCisgICAgICAgIGZvciBleHRlbnNpb24gaW4gYWNjZXB0ZWRfZXh0ZW5z
aW9uczoKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX1BFUk1FU1NBR0VfREVG
TEFURV9FWFRFTlNJT046CisgICAgICAgICAgICAgICAgY2hlY2tlciA9IHNlbGYuX29wdGlvbnMu
Y2hlY2tfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgaWYgY2hlY2tlcjoKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tlcihleHRlbnNpb24pCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgdW5yZWNv
Z25pemVkIGV4dGVuc2lvbjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb24ubmFtZSgpKQorCisKK2NsYXNzIFdlYlNvY2tldFN0cmVhbShvYmplY3QpOgorICAgICIi
IkZyYW1lIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIi
IgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIGhhbmRzaGFrZSk6CisgICAgICAgIHNl
bGYuX2hhbmRzaGFrZSA9IGhhbmRzaGFrZQorICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQK
KworICAgICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBhcHBsaWNhdGlvbiBkYXRhIHBhcnQgb2Yg
ZGF0YSBmcmFtZXMuCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUK
KyAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQorCisgICAgICAgIHNl
bGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQorCisgICAgZGVmIF9tYXNrX2h5Ymkoc2VsZiwgcyk6Cisg
ICAgICAgICMgVE9ETyh0eW9zaGlubyk6IG9zLnVyYW5kb20gZG9lcyBvcGVuL3JlYWQvY2xvc2Ug
Zm9yIGV2ZXJ5IGNhbGwuIElmCisgICAgICAgICMgcGVyZm9ybWFuY2UgbWF0dGVycywgY2hhbmdl
IHRoaXMgdG8gc29tZSBsaWJyYXJ5IGNhbGwgdGhhdCBnZW5lcmF0ZXMKKyAgICAgICAgIyBjcnlw
dG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvIHJhbmRvbSBudW1iZXIgc2VxdWVuY2UuCisgICAg
ICAgIG1hc2tpbmdfbm9uY2UgPSBvcy51cmFuZG9tKDQpCisgICAgICAgIHJlc3VsdCA9IFttYXNr
aW5nX25vbmNlXQorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgZm9yIGMgaW4gaXRlcmJ5dGVz
KHMpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1dGlsLnBhY2tfYnl0ZShjIF4gaW5kZXhi
eXRlcyhtYXNraW5nX25vbmNlLCBjb3VudCkpKQorICAgICAgICAgICAgY291bnQgPSAoY291bnQg
KyAxKSAlIGxlbihtYXNraW5nX25vbmNlKQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVzdWx0
KQorCisgICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKHNlbGYsIGhlYWRlciwg
Ym9keSk6CisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIHNlbGYuX21hc2tf
aHliaShib2R5KSkKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwKKyAgICAgICAgICAgICAgICAg
IHBheWxvYWQsCisgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICBtYXNrPVRydWUsCisgICAgICAgICAgICAg
ICAgICByc3YxPTAsCisgICAgICAgICAgICAgICAgICByc3YyPTAsCisgICAgICAgICAgICAgICAg
ICByc3YzPTApOgorICAgICAgICBpZiBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVy
LmZpbHRlcihwYXlsb2FkKQorCisgICAgICAgIGlmIHNlbGYuX2ZyYWdtZW50ZWQ6CisgICAgICAg
ICAgICBvcGNvZGUgPSBPUENPREVfQ09OVElOVUFUSU9OCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCisKKyAgICAgICAgaWYgZW5kOgorICAgICAgICAgICAg
c2VsZi5fZnJhZ21lbnRlZCA9IEZhbHNlCisgICAgICAgICAgICBmaW4gPSAxCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gVHJ1ZQorICAgICAgICAgICAgZmlu
ID0gMAorCisgICAgICAgIGlmIG1hc2s6CisgICAgICAgICAgICBtYXNrX2JpdCA9IDEgPDwgNwor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFza19iaXQgPSAwCisKKyAgICAgICAgaGVhZGVy
ID0gdXRpbC5wYWNrX2J5dGUoZmluIDw8IDcgfCByc3YxIDw8IDYgfCByc3YyIDw8IDUgfCByc3Yz
IDw8IDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcGNvZGUpCisgICAgICAg
IHBheWxvYWRfbGVuZ3RoID0gbGVuKHBheWxvYWQpCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3Ro
IDw9IDEyNToKKyAgICAgICAgICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8
IHBheWxvYWRfbGVuZ3RoKQorICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwgMSA8PCAxNjoK
KyAgICAgICAgICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8IDEyNikgKyBz
dHJ1Y3QucGFjaygKKyAgICAgICAgICAgICAgICAnIUgnLCBwYXlsb2FkX2xlbmd0aCkKKyAgICAg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgNjM6CisgICAgICAgICAgICBoZWFkZXIgKz0g
dXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCAxMjcpICsgc3RydWN0LnBhY2soCisgICAgICAgICAg
ICAgICAgJyFRJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1RvbyBsb25nIHBheWxvYWQgKCVkIGJ5dGUpJyAlIHBheWxvYWRfbGVu
Z3RoKQorICAgICAgICBpZiBtYXNrOgorICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX21hc2tf
aHliaShwYXlsb2FkKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChoZWFkZXIgKyBwYXls
b2FkKQorCisgICAgZGVmIHNlbmRfYmluYXJ5KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBtYXNr
PVRydWUpOgorICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLCBPUENPREVfQklOQVJZLCBl
bmQsIG1hc2spCisKKyAgICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBt
YXNrPVRydWUpOgorICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLmVuY29kZSgndXRmLTgn
KSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFzaykKKworICAgIGRlZiBfYXNzZXJ0X3JlY2VpdmVfZGF0
YShzZWxmLCBwYXlsb2FkLCBvcGNvZGUsIGZpbiwgcnN2MSwgcnN2MiwgcnN2Myk6CisgICAgICAg
IChhY3R1YWxfZmluLCBhY3R1YWxfcnN2MSwgYWN0dWFsX3JzdjIsIGFjdHVhbF9yc3YzLCBhY3R1
YWxfb3Bjb2RlLAorICAgICAgICAgcGF5bG9hZF9sZW5ndGgpID0gcmVhZF9mcmFtZV9oZWFkZXIo
c2VsZi5fc29ja2V0KQorCisgICAgICAgIGlmIGFjdHVhbF9vcGNvZGUgIT0gb3Bjb2RlOgorICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIG9wY29kZTogJWQgKGV4cGVjdGVk
KSB2cyAlZCAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGNvZGUs
IGFjdHVhbF9vcGNvZGUpKQorCisgICAgICAgIGlmIGFjdHVhbF9maW4gIT0gZmluOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGZpbjogJWQgKGV4cGVjdGVkKSB2cyAl
ZCAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaW4sIGFjdHVhbF9m
aW4pKQorCisgICAgICAgIGlmIHJzdjEgaXMgTm9uZToKKyAgICAgICAgICAgIHJzdjEgPSAwCisK
KyAgICAgICAgaWYgcnN2MiBpcyBOb25lOgorICAgICAgICAgICAgcnN2MiA9IDAKKworICAgICAg
ICBpZiByc3YzIGlzIE5vbmU6CisgICAgICAgICAgICByc3YzID0gMAorCisgICAgICAgIGlmIGFj
dHVhbF9yc3YxICE9IHJzdjE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgcnN2MTogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChyc3YxLCBhY3R1YWxfcnN2MSkpCisKKyAgICAgICAgaWYgYWN0dWFsX3Jz
djIgIT0gcnN2MjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCByc3Yy
OiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHJzdjIsIGFjdHVhbF9yc3YyKSkKKworICAgICAgICBpZiBhY3R1YWxfcnN2MyAhPSBy
c3YzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjM6ICVyIChl
eHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cnN2MywgYWN0dWFsX3JzdjMpKQorCisgICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIHBheWxvYWRfbGVuZ3RoKQorCisgICAgICAgIGlmIHNlbGYuX2luY29taW5n
X2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihyZWNlaXZlZCkKKworICAgICAgICBpZiBsZW4o
cmVjZWl2ZWQpICE9IGxlbihwYXlsb2FkKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigK
KyAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkIGxlbmd0aDogJWQgKGV4cGVjdGVk
KSB2cyAlZCAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgIChsZW4ocGF5bG9hZCksIGxlbihy
ZWNlaXZlZCkpKQorCisgICAgICAgIGlmIHBheWxvYWQgIT0gcmVjZWl2ZWQ6CisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5bG9hZDog
JXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgIChwYXlsb2Fk
LCByZWNlaXZlZCkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlPU9QQ09ERV9CSU5BUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaW49MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjI9Tm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJzdjM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2Rh
dGEocGF5bG9hZCwgb3Bjb2RlLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgYXNz
ZXJ0X3JlY2VpdmVfdGV4dChzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxv
YWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPU9QQ09ERV9URVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJzdjE9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YyPU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2Mz1Ob25lKToKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3JlY2VpdmVfZGF0YShwYXlsb2FkLmVuY29kZSgndXRmLTgnKSwgb3Bjb2RlLCBmaW4sIHJz
djEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MiwgcnN2MykKKworICAg
IGRlZiBfYnVpbGRfY2xvc2VfZnJhbWUoc2VsZiwgY29kZSwgcmVhc29uLCBtYXNrKToKKyAgICAg
ICAgZnJhbWUgPSB1dGlsLnBhY2tfYnl0ZSgxIDw8IDcgfCBPUENPREVfQ0xPU0UpCisKKyAgICAg
ICAgaWYgY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygn
IUgnLCBjb2RlKSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGJvZHkgPSBiJycKKyAgICAgICAgaWYgbWFzazoKKyAgICAgICAgICAgIGZyYW1lICs9
IHV0aWwucGFja19ieXRlKDEgPDwgNyB8IGxlbihib2R5KSkgKyBzZWxmLl9tYXNrX2h5YmkoYm9k
eSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyYW1lICs9IHV0aWwucGFja19ieXRlKGxl
bihib2R5KSkgKyBib2R5CisgICAgICAgIHJldHVybiBmcmFtZQorCisgICAgZGVmIHNlbmRfY2xv
c2Uoc2VsZiwgY29kZSwgcmVhc29uKToKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2Vs
Zi5fYnVpbGRfY2xvc2VfZnJhbWUoY29kZSwgcmVhc29uLCBUcnVlKSkKKworICAgIGRlZiBhc3Nl
cnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgorICAgICAgICBleHBlY3RlZF9m
cmFtZSA9IHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJlYXNvbiwgRmFsc2UpCisgICAg
ICAgIGFjdHVhbF9mcmFtZSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBsZW4oZXhwZWN0
ZWRfZnJhbWUpKQorICAgICAgICBpZiBhY3R1YWxfZnJhbWUgIT0gZXhwZWN0ZWRfZnJhbWU6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
Y2xvc2UgZnJhbWU6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKKyAgICAgICAgICAg
ICAgICAoZXhwZWN0ZWRfZnJhbWUsIGFjdHVhbF9mcmFtZSkpCisKKworY2xhc3MgQ2xpZW50T3B0
aW9ucyhvYmplY3QpOgorICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29uZmlndXJlIHRo
ZSBDbGllbnQgb2JqZWN0LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi52ZXJzaW9uID0gMTMKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9ICcnCisgICAgICAgIHNl
bGYub3JpZ2luID0gJycKKyAgICAgICAgc2VsZi5yZXNvdXJjZSA9ICcnCisgICAgICAgIHNlbGYu
c2VydmVyX3BvcnQgPSAtMQorICAgICAgICBzZWxmLnNvY2tldF90aW1lb3V0ID0gMTAwMAorICAg
ICAgICBzZWxmLnVzZV90bHMgPSBGYWxzZQorICAgICAgICBzZWxmLmV4dGVuc2lvbnMgPSBbXQor
CisKK2RlZiBjb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KGhvc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV90bHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXRyeT0xMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsZWVwX3NlYz0wLjEpOgorICAgIHJldHJ5X2NvdW50ID0gMAorICAgIHdoaWxlIHJldHJ5X2Nv
dW50IDwgcmV0cnk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0
KCkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQorICAgICAgICAgICAgcy5jb25u
ZWN0KChob3N0LCBwb3J0KSkKKyAgICAgICAgICAgIGlmIHVzZV90bHM6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIF9UTFNTb2NrZXQocykKKyAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgIGV4
Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8u
RUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHJldHJ5X2NvdW50ID0gcmV0cnlfY291bnQgKyAxCisgICAgICAgICAg
ICAgICAgdGltZS5zbGVlcChzbGVlcF9zZWMpCisKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNz
IENsaWVudChvYmplY3QpOgorICAgICIiIldlYlNvY2tldCBjbGllbnQuIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG9wdGlvbnMsIGhhbmRzaGFrZSwgc3RyZWFtX2NsYXNzKToKKyAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQorCisgICAg
ICAgIHNlbGYuX2hhbmRzaGFrZSA9IGhhbmRzaGFrZQorICAgICAgICBzZWxmLl9zdHJlYW1fY2xh
c3MgPSBzdHJlYW1fY2xhc3MKKworICAgIGRlZiBjb25uZWN0KHNlbGYpOgorICAgICAgICBzZWxm
Ll9zb2NrZXQgPSBjb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KHNlbGYuX29wdGlvbnMuc2VydmVy
X2hvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNvY2tldF90aW1lb3V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
dXNlX3RscykKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3NvY2tl
dCkKKworICAgICAgICBzZWxmLl9zdHJlYW0gPSBzZWxmLl9zdHJlYW1fY2xhc3Moc2VsZi5fc29j
a2V0LCBzZWxmLl9oYW5kc2hha2UpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nvbm5l
Y3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5
dGVzKHNlbGYsIGhlYWRlciwgYm9keSk6CisgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2ZyYW1l
X29mX2FyYml0cmFyeV9ieXRlcyhoZWFkZXIsIGJvZHkpCisKKyAgICBkZWYgc2VuZF9tZXNzYWdl
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICAgICBiaW5hcnk9RmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICByYXc9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICBtYXNrPVRydWUp
OgorICAgICAgICBpZiBiaW5hcnk6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5h
cnkobWVzc2FnZSwgZW5kLCBtYXNrKQorICAgICAgICBlbGlmIHJhdzoKKyAgICAgICAgICAgIHNl
bGYuX3N0cmVhbS5zZW5kX2RhdGEobWVzc2FnZSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFzaykKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX3RleHQobWVzc2FnZSwg
ZW5kLCBtYXNrKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIHBheWxvYWQsIGJpbmFy
eT1GYWxzZSk6CisgICAgICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5h
c3NlcnRfcmVjZWl2ZV9iaW5hcnkocGF5bG9hZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV90ZXh0KHBheWxvYWQpCisKKyAgICBkZWYgc2Vu
ZF9jbG9zZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQorCisgICAgZGVmIGFz
c2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFz
b249JycpOgorICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY29kZSwg
cmVhc29uKQorCisgICAgZGVmIGNsb3NlX3NvY2tldChzZWxmKToKKyAgICAgICAgc2VsZi5fc29j
a2V0LmNsb3NlKCkKKworICAgIGRlZiBhc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoc2VsZik6Cisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYWRfZGF0YSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBp
ZiBzdHIoZSkuZmluZCgKKyAgICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJl
Zm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICApID09IDA6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ZXJyb3JfbnVtYmVyLCBtZXNzYWdlID0gZQorICAgICAgICAgICAgICAgIGZvciBlcnJvcl9uYW1l
IGluIFsnRUNPTk5SRVNFVCcsICdXU0FFQ09OTlJFU0VUJ106CisgICAgICAgICAgICAgICAgICAg
IGlmIChlcnJvcl9uYW1lIGluIGRpcihlcnJubykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmQgZXJyb3JfbnVtYmVyID09IGdldGF0dHIoZXJybm8sIGVycm9yX25hbWUpKToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAg
ICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgIHJhaXNlIGUKKworICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ0Nvbm5lY3Rpb24gaXMgbm90IGNsb3NlZCAoUmVhZDogJXIpJyAlIHJlYWRfZGF0YSkK
KworCitkZWYgY3JlYXRlX2NsaWVudChvcHRpb25zKToKKyAgICByZXR1cm4gQ2xpZW50KG9wdGlv
bnMsIFdlYlNvY2tldEhhbmRzaGFrZShvcHRpb25zKSwgV2ViU29ja2V0U3RyZWFtKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2Nr
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYWVmNTJl
Y2YwMTk3ZjdlNTdmMzQ2YTcxNTQ4MjUyYTM4NjFlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKQEAgLTAsMCArMSwyMjcgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTW9ja3MgZm9yIHRlc3RpbmcuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0aHJlYWRp
bmcKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzaXgKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJl
YW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCisK
K2NsYXNzIF9Nb2NrQ29ubkJhc2Uob2JqZWN0KToKKyAgICAiIiJCYXNlIGNsYXNzIG9mIG1vY2tz
IGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3Rz
IHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBhIChtb2NrKSBtcF9jb25uLgorICAgICIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YSA9IFtdCisg
ICAgICAgIHNlbGYucmVtb3RlX2FkZHIgPSBiJ2Zha2VfYWRkcmVzcycKKworICAgIGRlZiB3cml0
ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBf
Y29ubi53cml0ZS4KKworICAgICAgICBkYXRhIHNob3VsZCBiZSBieXRlcyB3aGVuIHRvdWNoaW5n
IHRoaXMgbWV0aG9kIG1hbnVhbGx5LgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl93cml0
ZV9kYXRhLmFwcGVuZChkYXRhKQorCisgICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToKKyAgICAg
ICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4gdG8gdGhpcyBtb2NrLiIiIgorCisgICAgICAgIHJldHVy
biBiJycuam9pbihzZWxmLl93cml0ZV9kYXRhKQorCisKK2NsYXNzIE1vY2tDb25uKF9Nb2NrQ29u
bkJhc2UpOgorICAgICIiIk1vY2sgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCisKKyAg
ICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBiZSByZWFkIGZyb20g
YSAobW9jaykgbXBfY29ubiBhcworICAgIHdlbGwgYXMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVu
IHRvIGl0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkX2RhdGEpOgorICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgICByZWFkX2RhdGE6IGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHdoZW4gcmVhZCog
bWV0aG9kcyBhcmUKKyAgICAgICAgICAgIGNhbGxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
X01vY2tDb25uQmFzZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9yZWFkX2RhdGEgPSBy
ZWFkX2RhdGEKKyAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCisKKyAgICBkZWYgcmVhZGxpbmUo
c2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVh
ZGxpbmUuIiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3MgPj0gbGVuKHNlbGYuX3JlYWRf
ZGF0YSk6CisgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgIGVuZF9pbmRleCA9IHNlbGYu
X3JlYWRfZGF0YS5maW5kKGInXG4nLCBzZWxmLl9yZWFkX3BvcykgKyAxCisgICAgICAgIGlmIG5v
dCBlbmRfaW5kZXg6CisgICAgICAgICAgICBlbmRfaW5kZXggPSBsZW4oc2VsZi5fcmVhZF9kYXRh
KQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCisKKyAgICBkZWYg
cmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNo
ZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3MgPj0gbGVuKHNl
bGYuX3JlYWRfZGF0YSk6CisgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgIGVuZF9pbmRl
eCA9IG1pbihsZW4oc2VsZi5fcmVhZF9kYXRhKSwgc2VsZi5fcmVhZF9wb3MgKyBsZW5ndGgpCisg
ICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VwX3RvKGVuZF9pbmRleCkKKworICAgIGRlZiBfcmVh
ZF91cF90byhzZWxmLCBlbmRfaW5kZXgpOgorICAgICAgICBsaW5lID0gc2VsZi5fcmVhZF9kYXRh
W3NlbGYuX3JlYWRfcG9zOmVuZF9pbmRleF0KKyAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSBlbmRf
aW5kZXgKKyAgICAgICAgcmV0dXJuIGxpbmUKKworCitjbGFzcyBNb2NrQmxvY2tpbmdDb25uKF9N
b2NrQ29ubkJhc2UpOgorICAgICIiIkJsb2NraW5nIG1vY2sgZm9yIG1vZF9weXRob24uYXBhY2hl
Lm1wX2Nvbm4uCisKKyAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lmeSB3aGF0IHNob3Vs
ZCBiZSByZWFkIGZyb20gYSAobW9jaykgbXBfY29ubiBhcworICAgIHdlbGwgYXMgdG8gY2hlY2sg
d2hhdCBpcyB3cml0dGVuIHRvIGl0LgorICAgIENhbGxlcnMgb2YgcmVhZCogbWV0aG9kcyB3aWxs
IGJsb2NrIGlmIHRoZXJlIGlzIG5vIGJ5dGVzIGF2YWlsYWJsZS4KKyAgICAiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKKyAg
ICAgICAgc2VsZi5fcXVldWUgPSBzaXgubW92ZXMucXVldWUuUXVldWUoKQorCisgICAgZGVmIHJl
YWRsaW5lKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9j
b25uLnJlYWRsaW5lLiIiIgorICAgICAgICBsaW5lID0gYnl0ZWFycmF5KCkKKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIGMgPSBzZWxmLl9xdWV1ZS5nZXQoKQorICAgICAgICAgICAg
bGluZS5hcHBlbmQoYykKKyAgICAgICAgICAgIGlmIGMgPT0gb3JkKGInXG4nKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYnl0ZXMobGluZSkKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6
CisgICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIK
KworICAgICAgICBkYXRhID0gYnl0ZWFycmF5KCkKKyAgICAgICAgZm9yIHVudXNlZCBpbiByYW5n
ZShsZW5ndGgpOgorICAgICAgICAgICAgZGF0YS5hcHBlbmQoc2VsZi5fcXVldWUuZ2V0KCkpCisK
KyAgICAgICAgcmV0dXJuIGJ5dGVzKGRhdGEpCisKKyAgICBkZWYgcHV0X2J5dGVzKHNlbGYsIGJ5
dGVzKToKKyAgICAgICAgIiIiUHV0IGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2suCisK
KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgorICAg
ICAgICAiIiIKKworICAgICAgICBmb3IgYnl0ZSBpbiBzaXguaXRlcmJ5dGVzKGJ5dGVzKToKKyAg
ICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChieXRlKQorCisKK2NsYXNzIE1vY2tUYWJsZShkaWN0
KToKKyAgICAiIiJNb2NrIHRhYmxlLgorCisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiBtcF90
YWJsZS4gTm90ZSB0aGF0IG9ubHkgdGhlIG1ldGhvZHMgdXNlZCBieQorICAgIHRlc3RzIGFyZSBv
dmVycmlkZGVuLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb3B5X2Zyb209e30p
OgorICAgICAgICBpZiBpc2luc3RhbmNlKGNvcHlfZnJvbSwgZGljdCk6CisgICAgICAgICAgICBj
b3B5X2Zyb20gPSBsaXN0KGNvcHlfZnJvbS5pdGVtcygpKQorICAgICAgICBmb3Iga2V5LCB2YWx1
ZSBpbiBjb3B5X2Zyb206CisgICAgICAgICAgICBzZWxmLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUp
CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgcmV0dXJuIHN1cGVy
KE1vY2tUYWJsZSwgc2VsZikuX19nZXRpdGVtX18oa2V5Lmxvd2VyKCkpCisKKyAgICBkZWYgX19z
ZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKE1vY2tUYWJsZSwgc2Vs
ZikuX19zZXRpdGVtX18oa2V5Lmxvd2VyKCksIHZhbHVlKQorCisgICAgZGVmIGdldChzZWxmLCBr
ZXksIGRlZl92YWx1ZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwgc2Vs
ZikuZ2V0KGtleS5sb3dlcigpLCBkZWZfdmFsdWUpCisKKworY2xhc3MgTW9ja1JlcXVlc3Qob2Jq
ZWN0KToKKyAgICAiIiJNb2NrIHJlcXVlc3QuCisKKyAgICBUaGlzIG1pbWljcyBtb2RfcHl0aG9u
IHJlcXVlc3QuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAg
ICAgIHVyaT1Ob25lLAorICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXt9LAorICAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgIG1ldGhvZD0nR0VUJywK
KyAgICAgICAgICAgICAgICAgcHJvdG9jb2w9J0hUVFAvMS4xJywKKyAgICAgICAgICAgICAgICAg
aXNfaHR0cHM9RmFsc2UpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAg
ICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgdXJpOiBVUkkgb2YgdGhlIHJlcXVlc3QuCisg
ICAgICAgICAgICBoZWFkZXJzX2luOiBSZXF1ZXN0IGhlYWRlcnMuCisgICAgICAgICAgICBjb25u
ZWN0aW9uOiBDb25uZWN0aW9uIHVzZWQgZm9yIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgbWV0
aG9kOiByZXF1ZXN0IG1ldGhvZC4KKyAgICAgICAgICAgIGlzX2h0dHBzOiBXaGV0aGVyIHRoaXMg
cmVxdWVzdCBpcyBvdmVyIFNTTC4KKworICAgICAgICBTZWUgdGhlIGRvY3VtZW50IG9mIG1vZF9w
eXRob24gUmVxdWVzdCBmb3IgZGV0YWlscy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYudXJp
ID0gdXJpCisgICAgICAgIHNlbGYudW5wYXJzZWRfdXJpID0gdXJpCisgICAgICAgIHNlbGYuY29u
bmVjdGlvbiA9IGNvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAg
ICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IE1v
Y2tUYWJsZShoZWFkZXJzX2luKQorICAgICAgICAjIHNlbGYuaXNfaHR0cHNfIG5lZWRzIHRvIGJl
IGFjY2Vzc2libGUgZnJvbSB0ZXN0cy4gIFRvIGF2b2lkIG5hbWUKKyAgICAgICAgIyBjb25mbGlj
dCB3aXRoIHNlbGYuaXNfaHR0cHMoKSwgaXQgaXMgbmFtZWQgYXMgc3VjaC4KKyAgICAgICAgc2Vs
Zi5pc19odHRwc18gPSBpc19odHRwcworICAgICAgICBzZWxmLndzX3N0cmVhbSA9IFN0cmVhbShz
ZWxmLCBTdHJlYW1PcHRpb25zKCkpCisgICAgICAgIHNlbGYud3NfY2xvc2VfY29kZSA9IE5vbmUK
KyAgICAgICAgc2VsZi53c19jbG9zZV9yZWFzb24gPSBOb25lCisgICAgICAgIHNlbGYud3NfdmVy
c2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisgICAgICAgIHNlbGYud3NfZGVmbGF0
ZSA9IEZhbHNlCisKKyAgICBkZWYgaXNfaHR0cHMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3
aGV0aGVyIHRoaXMgcmVxdWVzdCBpcyBvdmVyIFNTTC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYu
aXNfaHR0cHNfCisKKworY2xhc3MgTW9ja0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJNb2Nr
IGZvciBkaXNwYXRjaC5EaXNwYXRjaGVyLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAg
ICAgICAgc2VsZi5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gRmFsc2UKKworICAgIGRlZiBk
b19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAgICAgc2VsZi5kb19l
eHRyYV9oYW5kc2hha2VfY2FsbGVkID0gVHJ1ZQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2Vs
ZiwgY29ubl9jb250ZXh0KToKKyAgICAgICAgcGFzcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MjIwMTU1MzllNDdmZGY1MTg4
NzUxNThmNmJkNmYzNjk5NGZhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3J1bl9hbGwucHkKQEAgLTAsMCArMSw4NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlJ1biBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LgorCitUaGlzIHN1aXRlIGlzIGV4cGVjdGVkIHRvIGJlIHJ1biB1bmRlciBweXdlYnNvY2tl
dCdzIHNyYyBkaXJlY3RvcnksIGkuZS4gdGhlCitkaXJlY3RvcnkgY29udGFpbmluZyBtb2RfcHl3
ZWJzb2NrZXQsIHRlc3QsIGV0Yy4KKworVG8gY2hhbmdlIGxvZ2dpbiBsZXZlbCwgcGxlYXNlIHNw
ZWNpZnkgLS1sb2ctbGV2ZWwgb3B0aW9uLgorICAgIHB5dGhvbiB0ZXN0L3J1bl90ZXN0LnB5IC0t
bG9nLWxldmVsIGRlYnVnCisKK1RvIHBhc3MgYW55IG9wdGlvbiB0byB1bml0dGVzdCBtb2R1bGUs
IHBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgYWZ0ZXIgJy0tJy4gRm9yCitleGFtcGxlLCBydW4gdGhp
cyBmb3IgbWFraW5nIHRoZSB0ZXN0IHJ1bm5lciB2ZXJib3NlLgorICAgIHB5dGhvbiB0ZXN0L3J1
bl90ZXN0LnB5IC0tbG9nLWxldmVsIGRlYnVnIC0tIC12CisiIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworX1RF
U1RfTU9EVUxFX1BBVFRFUk4gPSByZS5jb21waWxlKHInXih0ZXN0Xy4rKVwucHkkJykKKworCitk
ZWYgX2xpc3RfdGVzdF9tb2R1bGVzKGRpcmVjdG9yeSk6CisgICAgbW9kdWxlX25hbWVzID0gW10K
KyAgICBmb3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgorICAgICAgICBtYXRj
aCA9IF9URVNUX01PRFVMRV9QQVRURVJOLnNlYXJjaChmaWxlbmFtZSkKKyAgICAgICAgaWYgbWF0
Y2g6CisgICAgICAgICAgICBtb2R1bGVfbmFtZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQorICAg
IHJldHVybiBtb2R1bGVfbmFtZXMKKworCitkZWYgX3N1aXRlKCk6CisgICAgbG9hZGVyID0gdW5p
dHRlc3QuVGVzdExvYWRlcigpCisgICAgcmV0dXJuIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMo
CisgICAgICAgIF9saXN0X3Rlc3RfbW9kdWxlcyhvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChf
X2ZpbGVfXylbMF0sICcuJykpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAg
cGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbigK
KyAgICAgICAgJy0tbG9nLWxldmVsJywKKyAgICAgICAgJy0tbG9nX2xldmVsJywKKyAgICAgICAg
dHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nbG9nX2xldmVsJywKKyAgICAgICAgZGVmYXVs
dD0nd2FybmluZycsCisgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcn
LCAnd2FybicsICdlcnJvcicsICdjcml0aWNhbCddKQorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJz
ZXIucGFyc2VfYXJncygpCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdl
dExldmVsTmFtZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdD0nJShsZXZlbG5hbWUpcyAlKGFzY3RpbWUpcyAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAnJShmaWxlbmFtZSlzOiUobGluZW5vKWRdICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICclKG1lc3NhZ2UpcycsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRlZm10PScl
SDolTTolUycpCisgICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nX3N1aXRlJywgYXJndj1b
c3lzLmFyZ3ZbMF1dICsgYXJncykKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3Qvc2V0X3N5c19wYXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmY2U3YjM0YjY3NTFkNjM1ZGNkYTZl
MGQ0YTU3MTE5NTFhMGEzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3NldF9zeXNfcGF0aC5weQpAQCAtMCwwICsxLDQxIEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkNvbmZpZ3VyYXRpb24gZm9yIHRlc3RpbmcuCisKK1Rlc3QgZmlsZXMgc2hvdWxkIGltcG9ydCB0
aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vic29ja2V0LgorIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworIyBBZGQg
dGhlIHBhcmVudCBkaXJlY3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2Rf
cHl3ZWJzb2NrZXQuCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3Bs
aXQoX19maWxlX18pWzBdLCAnLi4nKSkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU2Mzk4MGYyNTgxZjlmNjEz
NmU4NWRjMTZiYjY0Y2NiZTM3M2RjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQpAQCAtMCwwICsxLDI5OCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBkaXNwYXRjaCBtb2R1
bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
b3MKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMu
cGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGRpc3BhdGNoCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNo
YWtlCitmcm9tIHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCB6aXAKKwor
X1RFU1RfSEFORExFUlNfRElSID0gb3MucGF0aC5qb2luKAorICAgIG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQorCitfVEVTVF9IQU5ETEVSU19TVUJf
RElSID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicpCisKKworY2xhc3Mg
RGlzcGF0Y2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IGRpc3BhdGNoIG1vZHVsZS4iIiIKKyAgICBkZWYgdGVzdF9ub3JtYWxpemVfcGF0aChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgn
L2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxp
emVfcGF0aCgnL2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
b3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAorICAgICAgICAgICAg
ZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdcXGFcXGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywg
Jy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnL2EvYy8uLi9iJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgo
J2FiYycpLnJlcGxhY2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxp
emVfcGF0aCgnYWJjJykpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0ZXIoc2VsZik6CisgICAgICAg
IGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIo
Jy9hL2InKQorICAgICAgICAjIFB5dGhvbiBidWlsdCBieSBNU0MgaW5zZXJ0cyBhIGRyaXZlIG5h
bWUgbGlrZSAnQzpcJyB2aWEgcmVhbHBhdGgoKS4KKyAgICAgICAgIyBDb252ZXJ0ZXIgR2VuZXJh
dG9yIGV4cGFuZHMgcHJvdmlkZWQgcGF0aCB1c2luZyByZWFscGF0aCgpIGFuZCB1c2VzCisgICAg
ICAgICMgdGhlIHBhdGggaW5jbHVkaW5nIGEgZHJpdmUgbmFtZSB0byB2ZXJpZnkgdGhlIHByZWZp
eC4KKyAgICAgICAgb3Nfcm9vdCA9IG9zLnBhdGgucmVhbHBhdGgoJy8nKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvYy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9i
L2MvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIo
b3Nfcm9vdCArICdhL2IvaC5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGNv
bnZlcnRlcignYS9iL2hfd3NoLnB5JykpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2gu
X2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignYS9iJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlcihkaXNw
YXRjaC5fbm9ybWFsaXplX3BhdGgoJ2EvYi9oX3dzaC5weScpKSkKKworICAgICAgICBjb252ZXJ0
ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iLy8v
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdh
L2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICcv
aCcsIGNvbnZlcnRlcihkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2IvLi4vYi9oX3dzaC5w
eScpKSkKKworICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVz
b3VyY2VfY29udmVydGVyKAorICAgICAgICAgICAgJy9hLy4uL2EvYi8uLi9iLycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5
JykpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291
cmNlX2NvbnZlcnRlcihyJ1xhXGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNv
bnZlcnRlcihvc19yb290ICsgcidhXGJcaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYS9iL2hfd3NoLnB5JykpCisKKyAgICBk
ZWYgdGVzdF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKHNlbGYpOgorICAgICAgICBwYXRo
cyA9IGxpc3QoCisgICAgICAgICAgICBkaXNwYXRjaC5fZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9w
YXRocyhfVEVTVF9IQU5ETEVSU19ESVIpKQorICAgICAgICBwYXRocy5zb3J0KCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCg4LCBsZW4ocGF0aHMpKQorICAgICAgICBleHBlY3RlZF9wYXRocyA9
IFsKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdhYm9ydF9i
eV91c2VyX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJT
X0RJUiwgJ2JsYW5rX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hB
TkRMRVJTX0RJUiwgJ29yaWdpbl9jaGVja193c2gucHknKSwKKyAgICAgICAgICAgIG9zLnBhdGgu
am9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdleGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ25vbl9jYWxsYWJsZV93c2gucHknKSwKKyAg
ICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAncGxhaW5f
d3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAn
c3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gu
cHknKSwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWIn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5Jyks
CisgICAgICAgIF0KKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVk
X3BhdGhzLCBwYXRocyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBh
Y3R1YWwpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfaGFuZGxlcl9maWxlKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICdkZWYn
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUs
ICcxLzAnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBkaXNwYXRjaC5f
c291cmNlX2hhbmRsZXJfZmlsZSgKKyAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOnBhc3NcbicKKyAgICAgICAgICAgICAgICAnZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKKworICAgIGRlZiB0ZXN0
X3NvdXJjZV93YXJuaW5ncyhzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICB3YXJuaW5ncyA9IGRp
c3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgd2FybmluZ3Muc29ydCgpCisgICAg
ICAgIGV4cGVjdGVkX3dhcm5pbmdzID0gWworICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgo
b3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2JsYW5rX3dzaC5weScpKQorICAgICAg
ICAgICAgICsgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQu
JyksCisgICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ25vbl9jYWxsYWJsZV93c2gucHkn
KSkKKyAgICAgICAgICAgICArICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5v
dCBjYWxsYWJsZS4nKSwKKyAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKAorICAgICAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHknKSkgKworICAg
ICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVk
LicpLAorICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgoCisgICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAn
OiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgbm90IGRlZmluZWQuJyksCisgICAgICAgIF0K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4od2FybmluZ3MpKQorICAgICAgICBmb3Ig
ZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfd2FybmluZ3MsIHdhcm5pbmdzKToKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiB0
ZXN0X2RvX2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3Bh
dGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0
ID0gbW9jay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29y
aWdpbl9jaGVjaycKKyAgICAgICAgcmVxdWVzdC53c19vcmlnaW4gPSAnaHR0cDovL2V4YW1wbGUu
Y29tJworICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KSAgIyBN
dXN0IG5vdCByYWlzZSBleGNlcHRpb24uCisKKyAgICAgICAgcmVxdWVzdC53c19vcmlnaW4gPSAn
aHR0cDovL2JhZC5leGFtcGxlLmNvbScKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGlzcGF0
Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkKKyAgICAgICAgICAgIHNlbGYuZmFpbCgn
Q291bGQgbm90IGNhdGNoIEhhbmRzaGFrZUV4Y2VwdGlvbiB3aXRoIDQwMyBzdGF0dXMnKQorICAg
ICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCg0MDMsIGUuc3RhdHVzKQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXhjZXB0aW9uOiAl
cicgJSBlKQorCisgICAgZGVmIHRlc3RfYWJvcnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAg
ICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIs
IE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KCkKKyAgICAgICAgcmVx
dWVzdC53c19yZXNvdXJjZSA9ICcvYWJvcnRfYnlfdXNlcicKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlLCByZXF1ZXN0KQorCisgICAg
ZGVmIHRlc3RfdHJhbnNmZXJfZGF0YShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3Bh
dGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorCisgICAgICAgIHJlcXVl
c3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29ubmVjdGlvbj1tb2NrLk1vY2tD
b25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0g
Jy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDEnCisgICAg
ICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgYidvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3Ig
L29yaWdpbl9jaGVjaywgcDEnCisgICAgICAgICAgICBiJ1x4ODhceDAyXHgwM1x4ZTgnLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IG1vY2su
TW9ja1JlcXVlc3QoCisgICAgICAgICAgICBjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oYidceDg4
XHgwMlx4MDNceGU4JykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFp
bicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluLCBOb25l
JworICAgICAgICAgICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAg
ICAgICAgICAgY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQor
ICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4/JworICAgICAgICByZXF1
ZXN0LndzX3Byb3RvY29sID0gTm9uZQorICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInc3ViL3Bs
YWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/LCBOb25lJworICAgICAgICAgICAg
YidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQor
CisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29ubmVj
dGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1ZXN0
LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4/cT12JworICAgICAgICByZXF1ZXN0LndzX3Byb3Rv
Y29sID0gTm9uZQorICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInc3ViL3BsYWluX3dzaC5weSBp
cyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/cT12LCBOb25lJworICAgICAgICAgICAgYidceDg4XHgw
Mlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfdHJhbnNmZXJfZGF0YV9ub19oYW5kbGVyKHNlbGYpOgorICAgICAgICBkaXNwYXRjaGVy
ID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAg
IGZvciByZXNvdXJjZSBpbiBbCisgICAgICAgICAgICAgICAgJy9ibGFuaycsICcvc3ViL25vbl9j
YWxsYWJsZScsICcvc3ViL25vX3dzaF9hdF90aGVfZW5kJywKKyAgICAgICAgICAgICAgICAnL2Rv
ZXMvbm90L2V4aXN0JworICAgICAgICBdOgorICAgICAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9j
a1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInJykpCisgICAgICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gcmVzb3VyY2UKKyAgICAgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSAncDInCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci50
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKyAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHIoZSkuZmluZCgnTm8gaGFuZGxlcicpICE9IC0xKQor
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwo
KQorCisgICAgZGVmIHRlc3RfdHJhbnNmZXJfZGF0YV9oYW5kbGVyX2V4Y2VwdGlvbihzZWxmKToK
KyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNf
RElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9u
PW1vY2suTW9ja0Nvbm4oYicnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3Vi
L2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdw
MycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAgICAgc3Ry
KGUpLmZpbmQoJ0ludGVudGlvbmFsJykgIT0gLTEsCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0
ZWQgZXhjZXB0aW9uOiAlcycgJSBlKQorCisgICAgZGVmIHRlc3RfYWJvcnRfdHJhbnNmZXJfZGF0
YShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgp
CisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5X3VzZXInCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9zY2FuX2RpcihzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNo
LkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDQsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFu
c2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVz
dF9zY2FuX3N1Yl9kaXIoc2VsZik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVy
KF9URVNUX0hBTkRMRVJTX0RJUiwgX1RFU1RfSEFORExFUlNfU1VCX0RJUikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21h
cCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9u
X2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCcvc3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKworICAg
IGRlZiB0ZXN0X3NjYW5fc3ViX2Rpcl9hc19yb290KHNlbGYpOgorICAgICAgICBkaXNwID0gZGlz
cGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19TVUJfRElSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19TVUJfRElSKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFw
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9u
X2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgnL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3BsYWluJyBpbiBkaXNw
Ll9oYW5kbGVyX3N1aXRlX21hcCkKKworICAgIGRlZiB0ZXN0X3NjYW5fZGlyX211c3RfdW5kZXJf
cm9vdChzZWxmKToKKyAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iJywgJ2EvYi9jJykg
ICMgT0sKKyAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iLy8vJywgJ2EvYicpICAjIE9L
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBk
aXNwYXRjaC5EaXNwYXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYS9iL2MnLCAn
YS9iJykKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlX3BhdGhfYWxpYXMoc2VsZik6CisgICAgICAg
IGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAg
ICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygnLycsICcvb3JpZ2luX2NoZWNrJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXAp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnL3N1
Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy8nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlh
cywgJy9hbGlhcycsICcvbm90LWV4aXN0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDVkMjljNjdkZGYwN2IzZjEy
MzI0NTk3N2Y5NWNmZTAxNDhjODNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5CkBAIC0wLDAgKzEsNjMwIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiRW5kLXRvLWVuZCB0ZXN0cyBmb3IgcHl3
ZWJzb2NrZXQuIFRlc3RzIHN0YW5kYWxvbmUucHkuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
aWduYWwKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBv
cnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRl
IHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIHRlc3Qg
aW1wb3J0IGNsaWVudF9mb3JfdGVzdGluZworCisjIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRlbGxz
IHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQorX0dPT0RCWUVfTUVT
U0FHRSA9ICdHb29kYnllJworCitfU0VSVkVSX1dBUk1VUF9JTl9TRUMgPSAwLjIKKworCisjIFRl
c3QgYm9keSBmdW5jdGlvbnMKK2RlZiBfZWNob19jaGVja19wcm9jZWR1cmUoY2xpZW50KToKKyAg
ICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rlc3QnKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2Uo
J2hlbGxvd29ybGQnKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgnaGVsbG93b3JsZCcpCisK
KyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3Nl
KCkKKworICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfZWNo
b19jaGVja19wcm9jZWR1cmVfd2l0aF9iaW5hcnkoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVj
dCgpCisKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKGInYmluYXJ5JywgYmluYXJ5PVRydWUpCisg
ICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKGInYmluYXJ5JywgYmluYXJ5PVRydWUpCisgICAgY2xp
ZW50LnNlbmRfbWVzc2FnZShiJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVl
KQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShiJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcs
IGJpbmFyeT1UcnVlKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgIGNsaWVudC5hc3Nl
cnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2Vk
KCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZShjbGllbnQpOgor
ICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnKQor
ICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgndGVzdCcpCisKKyAgICBjbGllbnQuc2VuZF9tZXNz
YWdlKF9HT09EQllFX01FU1NBR0UpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKF9HT09EQllF
X01FU1NBR0UpCisKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorICAgIGNsaWVu
dC5zZW5kX2Nsb3NlKCkKKworICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQor
CisKK2RlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24oY2xpZW50
LCBjb2RlLCByZWFzb24pOgorICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgIGNsaWVudC5zZW5k
X2Nsb3NlKGNvZGUsIHJlYXNvbikKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY29k
ZSwgcmVhc29uKQorCisgICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKwor
ZGVmIF91bm1hc2tlZF9mcmFtZV9jaGVja19wcm9jZWR1cmUoY2xpZW50KToKKyAgICBjbGllbnQu
Y29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JywgbWFzaz1GYWxzZSkK
KyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRV
U19QUk9UT0NPTF9FUlJPUiwgJycpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xv
c2VkKCkKKworCitjbGFzcyBFbmRUb0VuZFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICAiIiJCYXNlIGNsYXNzIGZvciBlbmQtdG8tZW5kIHRlc3RzIHRoYXQgbGF1bmNoIHB5d2Vic29j
a2V0IHN0YW5kYWxvbmUKKyAgICBzZXJ2ZXIgYXMgYSBzZXBhcmF0ZSBwcm9jZXNzLCBjb25uZWN0
IHRvIGl0IHVzaW5nIHRoZSBjbGllbnRfZm9yX3Rlc3RpbmcKKyAgICBtb2R1bGUsIGFuZCBjaGVj
ayBpZiB0aGUgc2VydmVyIGJlaGF2ZXMgY29ycmVjdGx5IGJ5IGV4Y2hhbmdpbmcgb3BlbmluZwor
ICAgIGhhbmRzaGFrZSBhbmQgZnJhbWVzIG92ZXIgYSBUQ1AgY29ubmVjdGlvbi4KKyAgICAiIiIK
KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IE5vbmUK
KyAgICAgICAgc2VsZi50b3BfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdLCAnLi4nKQorICAgICAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRoLnBh
dGhzZXAuam9pbihzeXMucGF0aCkpCisgICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kID0g
b3MucGF0aC5qb2luKHNlbGYudG9wX2RpciwgJ21vZF9weXdlYnNvY2tldCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdGFuZGFsb25lLnB5JykKKyAg
ICAgICAgc2VsZi5kb2N1bWVudF9yb290ID0gb3MucGF0aC5qb2luKHNlbGYudG9wX2RpciwgJ2V4
YW1wbGUnKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuYmluZCgoJ2xv
Y2FsaG9zdCcsIDApKQorICAgICAgICAoXywgc2VsZi50ZXN0X3BvcnQpID0gcy5nZXRzb2NrbmFt
ZSgpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBjbGllbnRf
Zm9yX3Rlc3RpbmcuQ2xpZW50T3B0aW9ucygpCisgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVy
X2hvc3QgPSAnbG9jYWxob3N0JworICAgICAgICBzZWxmLl9vcHRpb25zLm9yaWdpbiA9ICdodHRw
Oi8vbG9jYWxob3N0JworICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9lY2hvJwor
CisgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgPSBzZWxmLnRlc3RfcG9ydAorCisg
ICAgIyBUT0RPKHR5b3NoaW5vKTogVXNlIHRlYXJEb3duIHRvIGtpbGwgdGhlIHNlcnZlci4KKwor
ICAgIGRlZiBfcnVuX3B5dGhvbl9jb21tYW5kKHNlbGYsIGNvbW1hbmRsaW5lLCBzdGRvdXQ9Tm9u
ZSwgc3RkZXJyPU5vbmUpOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4
ZWN1dGFibGVdICsgY29tbWFuZGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsb3NlX2Zkcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9
c3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyKQor
CisgICAgZGVmIF9ydW5fc2VydmVyKHNlbGYpOgorICAgICAgICBhcmdzID0gWworICAgICAgICAg
ICAgc2VsZi5zdGFuZGFsb25lX2NvbW1hbmQsICctSCcsICdsb2NhbGhvc3QnLCAnLVYnLCAnbG9j
YWxob3N0JywKKyAgICAgICAgICAgICctcCcsCisgICAgICAgICAgICBzdHIoc2VsZi50ZXN0X3Bv
cnQpLCAnLVAnLAorICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1kJywgc2VsZi5k
b2N1bWVudF9yb290CisgICAgICAgIF0KKworICAgICAgICAjIEluaGVyaXQgdGhlIGxldmVsIHNl
dCB0byB0aGUgcm9vdCBsb2dnZXIgYnkgdGVzdCBydW5uZXIuCisgICAgICAgIHJvb3RfbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICBsb2dfbGV2ZWwgPSByb290X2xvZ2dlci5n
ZXRFZmZlY3RpdmVMZXZlbCgpCisgICAgICAgIGlmIGxvZ19sZXZlbCAhPSBsb2dnaW5nLk5PVFNF
VDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWxvZy1sZXZlbCcpCisgICAgICAgICAgICBh
cmdzLmFwcGVuZChsb2dnaW5nLmdldExldmVsTmFtZShsb2dfbGV2ZWwpLmxvd2VyKCkpCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRlcnI9c2VsZi5z
ZXJ2ZXJfc3RkZXJyKQorCisgICAgZGVmIF9jbG9zZV9zZXJ2ZXIoc2VsZiwgc2VydmVyKToKKyAg
ICAgICAgIiIiCisKKyAgICAgICAgVGhpcyBtZXRob2QgbWltaWNzIFBvcGVuLl9fZXhpdF9fIHRv
IGdyYWNlZnVsbHkga2lsbCB0aGUgc2VydmVyIHByb2Nlc3MuCisgICAgICAgIEl0cyBtYWluIHB1
cnBvc2UgaXMgdG8gbWFpbnRhaW4gY29tcHRhaWJpbGl0eSBiZXR3ZWVuIHB5dGhvbiAyIGFuZCAz
LAorICAgICAgICBzaW5jZSBQb3BlbiBpbiBweXRob24gMiBkb2VzIG5vdCBoYXZlIF9fZXhpdF9f
IGF0dHJpYnV0ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VydmVyLmtpbGwoKQorCisgICAg
ICAgIGlmIHNlcnZlci5zdGRvdXQ6CisgICAgICAgICAgICBzZXJ2ZXIuc3Rkb3V0LmNsb3NlKCkK
KyAgICAgICAgaWYgc2VydmVyLnN0ZGVycjoKKyAgICAgICAgICAgIHNlcnZlci5zdGRlcnIuY2xv
c2UoKQorICAgICAgICBpZiBzZXJ2ZXIuc3RkaW46CisgICAgICAgICAgICBzZXJ2ZXIuc3RkaW4u
Y2xvc2UoKQorCisgICAgICAgIHNlcnZlci53YWl0KCkKKworCitjbGFzcyBFbmRUb0VuZEh5QmlU
ZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgRW5k
VG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQorCisgICAgZGVmIF9ydW5fdGVzdF93aXRoX2NsaWVu
dF9vcHRpb25zKHNlbGYsIHRlc3RfZnVuY3Rpb24sIG9wdGlvbnMpOgorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBUT0RPKHR5
b3NoaW5vKTogYWRkIHNvbWUgbG9naWMgdG8gcG9sbCB0aGUgc2VydmVyIHVudGlsIGl0CisgICAg
ICAgICAgICAjIGJlY29tZXMgcmVhZHkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9X
QVJNVVBfSU5fU0VDKQorCisgICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3Rpbmcu
Y3JlYXRlX2NsaWVudChvcHRpb25zKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IHRlc3RfZnVuY3Rpb24oY2xpZW50KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
IHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKyAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRl
c3RfZnVuY3Rpb24pOgorICAgICAgICBzZWxmLl9ydW5fdGVzdF93aXRoX2NsaWVudF9vcHRpb25z
KHRlc3RfZnVuY3Rpb24sIHNlbGYuX29wdGlvbnMpCisKKyAgICBkZWYgX3J1bl9wZXJtZXNzYWdl
X2RlZmxhdGVfdGVzdChzZWxmLCBvZmZlciwgcmVzcG9uc2VfY2hlY2tlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgc2VydmVy
ID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuc2xl
ZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQorCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4
dGVuc2lvbnMgKz0gb2ZmZXIKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hlY2tfcGVybWVz
c2FnZV9kZWZsYXRlID0gcmVzcG9uc2VfY2hlY2tlcgorICAgICAgICAgICAgY2xpZW50ID0gY2xp
ZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKKworICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgICAgICAgICAg
ICAgIGlmIHRlc3RfZnVuY3Rpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRl
c3RfZnVuY3Rpb24oY2xpZW50KQorCisgICAgICAgICAgICAgICAgY2xpZW50LmFzc2VydF9jb25u
ZWN0aW9uX2Nsb3NlZCgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNs
aWVudC5jbG9zZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5f
Y2xvc2Vfc2VydmVyKHNlcnZlcikKKworICAgIGRlZiBfcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRf
cmVhc29uX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbiwgY29kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbik6CisgICAgICAgIHNlcnZlciA9IHNl
bGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9T
RVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90
ZXN0aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCwgY29kZSwgcmVhc29uKQorICAgICAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisK
KyAgICBkZWYgX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qoc2VsZiwgb3B0aW9ucywgc3RhdHVzKToK
KyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQorCisgICAgICAgICAgICBj
bGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKKyAgICAgICAgICAg
ICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhjZXB0aW9uJykKKyAg
ICAgICAgICAgIGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBlLnN0YXR1cykK
KyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxm
LmZhaWwoJ0NhdGNoIHVuZXhwZWN0ZWQgZXhjZXB0aW9uJykKKyAgICAgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
ZWNobyhzZWxmKToKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJl
KQorCisgICAgZGVmIHRlc3RfZWNob19iaW5hcnkoc2VsZik6CisgICAgICAgIHNlbGYuX3J1bl90
ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2JpbmFyeSkKKworICAgIGRlZiB0ZXN0X2Vj
aG9fc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVj
a19wcm9jZWR1cmVfd2l0aF9nb29kYnllKQorCisgICAgZGVmIHRlc3RfdW5tYXNrZWRfZnJhbWUo
c2VsZik6CisgICAgICAgIHNlbGYuX3J1bl90ZXN0KF91bm1hc2tlZF9mcmFtZV9jaGVja19wcm9j
ZWR1cmUpCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZShzZWxmKToKKyAg
ICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgICMgRnJvbSB0aGUg
ZXhhbXBsZXMgaW4gdGhlIHNwZWMuCisgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gYidc
eGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJworICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0u
c2VuZF9kYXRhKGNvbXByZXNzZWRfaGVsbG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxv
LAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQs
CisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9z
ZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAg
IGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAg
ICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZs
YXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25z
ZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdl
X2RlZmxhdGVfdHdvX2ZyYW1lcyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xp
ZW50KToKKyAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoYidceGYyXHg0OFx4Y2QnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ9RmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAg
Y2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhjOVx4YzlceDA3XHgwMCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
KQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAg
ICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisgICAgICAgICAg
ICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAg
ICAgICByc3YxPTEpCisKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICAgICAg
ICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICAgICAgZGVmIHJlc3BvbnNl
X2NoZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLl9y
dW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRl
c3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29f
bWVzc2FnZXMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAg
ICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xp
ZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkK
KyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDAwXHgxMVx4MDBc
eDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5
KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisgICAg
ICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAg
ICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVj
ZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICByc3YxPTEpCisKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkK
KyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICAgICAgZGVm
IHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAg
ICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoWydwZXJtZXNzYWdlLWRlZmxhdGUn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2No
ZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90d29fbXNnc19zZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAg
ZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBs
ZXMgaW4gdGhlIHNwZWMuCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoYidc
eGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJl
YW0uc2VuZF9kYXRhKGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGll
bnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYy
XHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAg
ICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAg
ICAgICBiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9w
Y29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2
MT0xKQorCisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2Vy
KHBhcmFtZXRlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
KCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5f
cnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAorICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRl
ZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJ10sCisgICAgICAgICAgICByZXNwb25z
ZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdl
X2RlZmxhdGVfcHJlZmVyZW5jZShzZWxmKToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xp
ZW50KToKKyAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAw
JworICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGNvbXByZXNzZWRfaGVsbG8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAg
ICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgIG9wY29kZT1j
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQor
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFt
ZXRlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUn
LCBwYXJhbWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFy
YW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZV90ZXN0KAorICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnLCAnZGVmbGF0
ZS1mcmFtZSddLCByZXNwb25zZV9jaGVja2VyLAorICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikK
KworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfcGFyYW1ldGVycyhz
ZWxmKToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgICMg
RnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCisgICAgICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJworICAgICAgICAgICAgY2xpZW50
Ll9zdHJlYW0uc2VuZF9kYXRhKGNvbXByZXNzZWRfaGVsbG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVu
dC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBjb21wcmVz
c2VkX2hlbGxvLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BD
T0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBjbGllbnQu
c2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQor
CisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywg
JzEwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0
ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZs
YXRlX3Rlc3QoWworICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93
aW5kb3dfYml0cz0xMDsgJworICAgICAgICAgICAgJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVy
JworICAgICAgICBdLCByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVm
IHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9iYWRfc2VydmVyX21heF93aW5kb3df
Yml0cyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAg
ICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZSgpCisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1l
c3NhZ2UtZGVmbGF0ZScpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90
ZXN0KAorICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93
X2JpdHM9MzAwMDAwMCddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5j
dGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3Nl
cnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2Vy
KHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNj
ZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJt
ZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKKyAgICAgICAgICAgIHJlc3BvbnNlX2No
ZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVm
bGF0ZV93aXRoX3VuZGVmaW5lZF9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAg
ICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25z
ZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhw
ZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNlbGYu
X3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgZm9vPWJh
ciddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Vf
Y2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fY2xvc2Vfd2l0aF9j
b2RlX2FuZF9yZWFzb24oc2VsZik6CisgICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAn
L2Nsb3NlJworICAgICAgICBzZWxmLl9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVz
dCgKKyAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNv
biwgMzMzMywgJ3N1bnN1bnN1bnN1bicpCisKKyAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhf
ZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvY2xv
c2UnCisgICAgICAgIHNlbGYuX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KAor
ICAgICAgICAgICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uLCBO
b25lLCAnJykKKworICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Byb3RvY29sX2Vycm9yKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRo
IHByb3RvY29sIGVycm9yIHN0YXR1cworICAgICAgICBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5k
cyBkYXRhIHdpdGggc29tZSBwcm90b2NvbCBlcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisK
KyAgICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lIHdpdGhvdXQgYW55IHByZWNlZGluZyBz
dGFydCBvZiBmcmFnbWVudGF0aW9uCisgICAgICAgICAgICAjIGZyYW1lLgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKGInXHg4MFx4ODAnLCAnJykKKyAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBj
bGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09MX0VSUk9SKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl91bnN1cHBv
cnRlZF9mcmFtZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRz
IGEgY2xvc2UgZnJhbWUgd2l0aCB1bnN1cHBvcnRlZCBvcGVyYXRpb24KKyAgICAgICAgc3RhdHVz
IGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGRhdGEgYXNraW5nIHNvbWUgb3BlcmF0aW9uIHRo
YXQgaXMKKyAgICAgICAgbm90IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLgorICAgICAgICAiIiIK
KyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNsaWVudC5j
b25uZWN0KCkKKworICAgICAgICAgICAgIyBUZXh0IGZyYW1lIHdpdGggUlNWMyBiaXQgcmFpc2Vk
LgorICAgICAgICAgICAgY2xpZW50LnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKGInXHg5
MVx4ODAnLCAnJykKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEp
CisKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0
X2Nsb3NlX29uX2ludmFsaWRfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhl
IHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggaW52YWxpZCBmcmFtZSBwYXlsb2FkCisg
ICAgICAgIGRhdGEgc3RhdHVzIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGFuIGludmFsaWQg
ZnJhbWUgbGlrZSBjb250YWluaW5nCisgICAgICAgIGludmFsaWQgVVRGLTggY2hhcmFjdGVyLgor
ICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAg
ICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgICAgICAgICAgIyBUZXh0IGZyYW1lIHdpdGggaW52
YWxpZCBVVEYtOCBzdHJpbmcuCisgICAgICAgICAgICBjbGllbnQuc2VuZF9tZXNzYWdlKGInXHg4
MCcsIHJhdz1UcnVlKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAor
ICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfSU5WQUxJRF9GUkFNRV9Q
QVlMT0FEX0RBVEEpCisKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2Nsb3NlX29uX2ludGVybmFsX2VuZHBvaW50X2Vycm9yKHNlbGYpOgorICAg
ICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIGlu
dGVybmFsIGVuZHBvaW50CisgICAgICAgIGVycm9yIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGhhbmRs
ZXIgZG9lcyBiYWQgb3BlcmF0aW9uLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9vcHRp
b25zLnJlc291cmNlID0gJy9pbnRlcm5hbF9lcnJvcicKKworICAgICAgICBkZWYgdGVzdF9mdW5j
dGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorICAgICAgICAgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAorICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IpCisKKyAgICAgICAgc2VsZi5f
cnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKKworICAgICMgVE9ETyh0b3lvc2hpbSk6IEFkZCB0ZXN0
cyB0byB2ZXJpZnkgaW52YWxpZCBhYnNvbHV0ZSB1cmkgaGFuZGxpbmcgbGlrZQorICAgICMgaG9z
dCB1bm1hdGNoLCBwb3J0IHVubWF0Y2ggYW5kIGludmFsaWQgcG9ydCBkZXNjcmlwdGlvbiAoJzon
IHdpdGhvdXQgcG9ydAorICAgICMgbnVtYmVyKS4KKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX3Vy
aShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgYWJzb2x1dGUgdXJpIHJlcXVlc3QuIiIiCisKKyAg
ICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9
ICd3czovL2xvY2FsaG9zdDolZC9lY2hvJyAlIG9wdGlvbnMuc2VydmVyX3BvcnQKKyAgICAgICAg
c2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhfZWNob19jaGVja19wcm9jZWR1cmUs
IG9wdGlvbnMpCisKKyAgICBkZWYgdGVzdF9vcmlnaW5fY2hlY2soc2VsZik6CisgICAgICAgICIi
IlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gb3JpZ2luIGNoZWNrIGZhaWwuIiIiCisKKyAgICAgICAg
b3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9ICcvb3Jp
Z2luX2NoZWNrJworICAgICAgICAjIFNlcnZlciBzaG93cyB3YXJuaW5nIG1lc3NhZ2UgZm9yIGh0
dHAgNDAzIGZhbGxiYWNrLiBUaGlzIHdhcm5pbmcKKyAgICAgICAgIyBtZXNzYWdlIGlzIGNvbmZ1
c2luZy4gRm9sbG93aW5nIHBpcGUgZGlzcG9zZXMgd2FybmluZyBtZXNzYWdlcy4KKyAgICAgICAg
c2VsZi5zZXJ2ZXJfc3RkZXJyID0gc3VicHJvY2Vzcy5QSVBFCisgICAgICAgIHNlbGYuX3J1bl9o
dHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAzKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9j
aGVjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaHR0cCBmYWxsYmFjayBvbiB2ZXJzaW9uIGNo
ZWNrIGZhaWwuIiIiCisKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKKyAgICAgICAg
b3B0aW9ucy52ZXJzaW9uID0gOTkKKyAgICAgICAgc2VsZi5fcnVuX2h0dHBfZmFsbGJhY2tfdGVz
dChvcHRpb25zLCA0MDApCisKKworY2xhc3MgRW5kVG9FbmRUZXN0V2l0aEVjaG9DbGllbnQoRW5k
VG9FbmRUZXN0QmFzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBFbmRUb0VuZFRl
c3RCYXNlLnNldFVwKHNlbGYpCisKKyAgICBkZWYgX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRf
cmVzdWx0KHNlbGYsIGV4cGVjdGVkLCBzdGRvdXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkZXJyZGF0YSk6CisgICAgICAgIGFjdHVhbCA9IHN0ZG91
dGRhdGEuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGlmIGFjdHVhbCAhPSBleHBlY3RlZDoKKyAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCByZXN1bHQgb24gZXhhbXBsZSBl
Y2hvIGNsaWVudDogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICclciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVk
LCBhY3R1YWwpKQorICAgICAgICBpZiBzdGRlcnJkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGVycm9yIG1lc3NhZ2Ugb24gZXhhbXBsZSBl
Y2hvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xpZW50OiAlcicgJSBzdGRlcnJk
YXRhKQorCisgICAgZGVmIHRlc3RfZXhhbXBsZV9lY2hvX2NsaWVudChzZWxmKToKKyAgICAgICAg
IiIiVGVzdHMgdGhhdCB0aGUgZWNob19jbGllbnQucHkgZXhhbXBsZSBjYW4gdGFsayB3aXRoIHRo
ZSBzZXJ2ZXIuIiIiCisKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQor
CisgICAgICAgICAgICBjbGllbnRfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIs
ICdleGFtcGxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl
Y2hvX2NsaWVudC5weScpCisKKyAgICAgICAgICAgICMgRXhwZWN0ZWQgb3V0cHV0IGZvciB0aGUg
ZGVmYXVsdCBtZXNzYWdlcy4KKyAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24gPSAodSdT
ZW5kOiBIZWxsb1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6
IEhlbGxvXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnU2VuZDogXHU2
NWU1XHU2NzJjXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnUmVjdjog
XHU2NWU1XHU2NzJjXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnU2Vu
ZCBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1JlY3YgYWNr
XG4nKQorCisgICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5kLCAnLXAnLCBzdHIoc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCldCisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5f
cHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAg
IHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQorICAgICAgICAg
ICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3Rh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCisKKyAgICAgICAgICAgICMgUHJvY2VzcyBhIGJpZyBt
ZXNzYWdlIGZvciB3aGljaCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBpcyB1c2VkLgorICAgICAg
ICAgICAgIyBUbyBoYW5kbGUgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgsIHdzX3ZlcnNpb24gYXR0
cmlidXRlIHdpbGwgYmUKKyAgICAgICAgICAgICMgYWNjZXNzZWQuIFRoaXMgdGVzdCBjaGVja3Mg
dGhhdCB3c192ZXJzaW9uIGlzIGNvcnJlY3RseSBzZXQuCisgICAgICAgICAgICBiaWdfbWVzc2Fn
ZSA9ICdhJyAqIDEwMjQKKyAgICAgICAgICAgIGFyZ3MgPSBbCisgICAgICAgICAgICAgICAgY2xp
ZW50X2NvbW1hbmQsICctcCcsCisgICAgICAgICAgICAgICAgc3RyKHNlbGYuX29wdGlvbnMuc2Vy
dmVyX3BvcnQpLCAnLW0nLCBiaWdfbWVzc2FnZQorICAgICAgICAgICAgXQorICAgICAgICAgICAg
Y2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xpZW50LmNvbW11
bmljYXRlKCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gKCdTZW5kOiAlc1xuUmVjdjogJXNcblNl
bmQgY2xvc2VcblJlY3YgYWNrXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChiaWdfbWVz
c2FnZSwgYmlnX21lc3NhZ2UpKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hv
X2NsaWVudF9yZXN1bHQoZXhwZWN0ZWQsIHN0ZG91dGRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJkYXRhKQorCisgICAgICAgICAg
ICAjIFRlc3QgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uCisgICAgICAgICAgICBh
cmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAnLAorICAgICAgICAg
ICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy0tdXNlX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZScKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9w
eXRob25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAg
c3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAg
ICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChkZWZhdWx0X2V4cGVjdGF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNl
bGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9leHRlbnNpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YTExMTg4OGJlOTAwNWJk
N2I2ODQzNjZhZWJmZDFkOTE0ZjRhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQpAQCAtMCwwICsxLDE5MiBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBleHRlbnNpb25z
IG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCB1bml0dGVzdAoraW1wb3J0IHpsaWIKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRh
dGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBl
eHRlbnNpb25zCisKKworY2xhc3MgRXh0ZW5zaW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgICIiIkEgdW5pdHRlc3QgZm9yIG5vbi1jbGFzcyBtZXRob2RzIGluIGV4dGVuc2lvbnMucHki
IiIKKyAgICBkZWYgdGVzdF9wYXJzZV93aW5kb3dfYml0cyhzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3Bh
cnNlX3dpbmRvd19iaXRzLCAnZm9vYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcgOCAnKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJ2E4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMDAwMDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDA4JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2lu
ZG93X2JpdHMsICcweDgnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOS41JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4LjAn
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzgnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93
X2JpdHMsICcxNScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0
ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICctOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRv
d19iaXRzLCAnNycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0
ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcxNicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMTAwMDAwMDAnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRl
RXh0ZW5zaW9uUHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIi
IkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Q
cm9jZXNzb3IgcGFyc2VzCisgICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHku
CisgICAgIiIiCisgICAgZGVmIHRlc3RfcmVnaXN0cnkoc2VsZik6CisgICAgICAgIHByb2Nlc3Nv
ciA9IGV4dGVuc2lvbnMuZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoCisgICAgICAgICAgICBjb21t
b24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisKKyAg
ICBkZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRl
bnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAg
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMo
KSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRz
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5f
bm9fY29udGV4dF90YWtlb3ZlcikKKworICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRv
d19iaXRzKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpCisgICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQor
CisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5u
YW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3dfYml0
cycsICcxMCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1l
dGVycygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZjMTk3
OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291dF9v
Zl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1v
bi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFt
ZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAnKQorICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yKHBhcmFtZXRlcikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpKQorCisgICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2lu
ZG93X2JpdHNfd2l0aG91dF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1l
dGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25lKQorICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yKHBhcmFtZXRlcikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpKQorCisgICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19jb250
ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3Bh
cmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQorICAgICAgICBwcm9j
ZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBh
cmFtZXRlcikKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jl
c3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nv
ci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKKworICAgIGRlZiB0ZXN0
X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgorICAgICAg
ICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxh
dGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRf
dGFrZW92ZXInLCAnZm9vYmFyJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIHBh
cmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScp
CisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKKyAgICAgICAg
cHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
cihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKSkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0
dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
ciBidWlsZHMKKyAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIGNvcnJl
Y3RseS4KKyAgICAiIiIKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0
cyhzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcign
cGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2Ns
aWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKyAgICAg
ICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQorCisgICAgICAgIHJl
c3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnY2xpZW50X21heF93aW5kb3dfYml0cycsICcxMCcpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHNfd2l0aG91dF9jbGllbnRf
cGVybWlzc2lvbihzZWxmKToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQorICAgICAgICBwcm9jZXNzb3Iuc2V0
X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCisKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNz
b3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJl
c3BvbnNlKQorCisgICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF90cnVlX2Zvcl9ub19jb250ZXh0
X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3Nh
Z2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAgICAgcHJvY2Vzc29yLnNl
dF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihUcnVlKQorCisgICAgICAgIHJlc3BvbnNlID0g
cHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWygnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRl
ZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfZmFsc2VfZm9yX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6
CisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IoCisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJt
ZXNzYWdlLWRlZmxhdGUnKSkKKworICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyKEZhbHNlKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBlMjI3OGRmZTY1
MDE5ZDc2NTk0ODliNTM4ZmNjODVhZDU3ZDQ1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNo
YWtlLl9iYXNlIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBz
eXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBFeHRlbnNpb25QYXJhbWV0ZXIKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbgorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBmb3JtYXRfZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBwYXJzZV9leHRlbnNpb25zCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9zdWJwcm90b2NvbAor
CisKK2NsYXNzIFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICAiIiJBIHVuaXR0ZXN0IGZvciB2YWxpZGF0ZV9zdWJwcm90b2NvbCBtZXRob2QuIiIiCisgICAg
ZGVmIHRlc3RfdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZik6CisgICAgICAgICMgU2hvdWxkIHN1
Y2NlZWQuCisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGUnKQorICAgICAgICB2
YWxpZGF0ZV9zdWJwcm90b2NvbCgnU2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9j
b2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpCisKKyAgICAgICAgIyBTaG91bGQgZmFpbC4KKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90
b2NvbCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwg
dmFsaWRhdGVfc3VicHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVc
eDA5cHJvdG9jb2wnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRp
b24sIHZhbGlkYXRlX3N1YnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Ft
cGxlXHgxOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhj
ZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NhbXBsZVx4MjBwcm90b2NvbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAg
ICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgIHZhbGlkYXRlX3N1YnBy
b3RvY29sLAorICAgICAgICAgICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCisgICAgICAgICAgICB1
J1x1NjVlNVx1NjcyYycpCisKKworX1RFU1RfVE9LRU5fRVhURU5TSU9OX0RBVEEgPSBbCisgICAg
KCdmb28nLCBbKCdmb28nLCBbXSldKSwKKyAgICAoJ2ZvbzsgYmFyJywgWygnZm9vJywgWygnYmFy
JywgTm9uZSldKV0pLAorICAgICgnZm9vOyBiYXI9YmF6JywgWygnZm9vJywgWygnYmFyJywgJ2Jh
eicpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPWJhejsgY2FyPWNkcicsIFsoJ2ZvbycsIFsoJ2Jhcics
ICdiYXonKSwgKCdjYXInLCAnY2RyJyldKV0pLAorICAgICgnZm9vOyBiYXI9YmF6LCBjYXI7IGNk
cicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoJ2NhcicsIFsoJ2NkcicsIE5vbmUpXSldKSwKKyAgICAoJ2EsIGIsIGMsIGQnLCBb
KCdhJywgW10pLCAoJ2InLCBbXSksICgnYycsIFtdKSwgKCdkJywgW10pXSksCitdCisKK19URVNU
X1FVT1RFRF9FWFRFTlNJT05fREFUQSA9IFsKKyAgICAoJ2ZvbzsgYmFyPSIiJywgWygnZm9vJywg
WygnYmFyJywgJycpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPSIgYmF6ICInLCBbKCdmb28nLCBbKCdi
YXInLCAnIGJheiAnKV0pXSksCisgICAgKCdmb287IGJhcj0iLGJhejsiJywgWygnZm9vJywgWygn
YmFyJywgJyxiYXo7JyldKV0pLAorICAgICgnZm9vOyBiYXI9IlxcXHJcXFxuYmF6IicsIFsoJ2Zv
bycsIFsoJ2JhcicsICdcclxuYmF6JyldKV0pLAorICAgICgnZm9vOyBiYXI9IlxcImJheiInLCBb
KCdmb28nLCBbKCdiYXInLCAnImJheicpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPSJceGJiYmF6Iics
IFsoJ2ZvbycsIFsoJ2JhcicsICdceGJiYmF6JyldKV0pLAorXQorCitfVEVTVF9SRURVTkRBTlRf
VE9LRU5fRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb28gXHQgJywgWygnZm9vJywgW10pXSks
CisgICAgKCdmb287IFxyXG4gYmFyJywgWygnZm9vJywgWygnYmFyJywgTm9uZSldKV0pLAorICAg
ICgnZm9vOyBiYXI9XHJcbiBcclxuIGJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSks
CisgICAgKCdmb28gO2JhciA9IGJheiAnLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAor
ICAgICgnZm9vLGJhciwsYmF6JywgWygnZm9vJywgW10pLCAoJ2JhcicsIFtdKSwgKCdiYXonLCBb
XSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1FVT1RFRF9FWFRFTlNJT05fREFUQSA9IFsKKyAg
ICAoJ2ZvbzsgYmFyPSJcclxuIFxyXG4gYmF6IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcgIGJheicp
XSldKSwKK10KKworCitjbGFzcyBFeHRlbnNpb25zUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgZGVmIF92ZXJpZnlfZXh0ZW5zaW9uX2xpc3Qoc2VsZiwgZXhwZWN0ZWRfbGlzdCwg
YWN0dWFsX2xpc3QpOgorICAgICAgICAiIiJWZXJpZmllcyB0aGF0IEV4dGVuc2lvblBhcmFtZXRl
ciBvYmplY3RzIGluIGFjdHVhbF9saXN0IGhhdmUgdGhlCisgICAgICAgIHNhbWUgbWVtYmVycyBh
cyBleHRlbnNpb24gZGVmaW5pdGlvbnMgaW4gZXhwZWN0ZWRfbGlzdC4gRXh0ZW5zaW9uCisgICAg
ICAgIGRlZmluaXRpb24gdXNlZCBpbiB0aGlzIHRlc3QgaXMgYSBwYWlyIG9mIGFuIGV4dGVuc2lv
biBuYW1lIGFuZCBhCisgICAgICAgIHBhcmFtZXRlciBkaWN0aW9uYXJ5LgorICAgICAgICAiIiIK
KworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVh
bF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xp
c3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAgICAgIChuYW1lLCBwYXJhbWV0ZXJzKSA9IGV4cGVj
dGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGFjdHVhbC5fbmFtZSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1ldGVycywgYWN0dWFsLl9wYXJhbWV0ZXJz
KQorCisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRfc3Ry
aW5nLCBkZWZpbml0aW9uIGluIF9URVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAg
ICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3Ry
aW5nKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3F1b3RlZF9kYXRhKHNlbGYpOgorICAgICAgICBm
b3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9RVU9URURfRVhURU5TSU9O
X0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoZGVmaW5pdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9leHRlbnNp
b25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X2Rh
dGEoc2VsZik6CisgICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmluZywKKyAgICAgICAgICAgICBk
ZWZpbml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRfVE9LRU5fRVhURU5TSU9OX0RBVEE6CisgICAg
ICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoZGVmaW5pdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRl
ZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X3F1b3RlZF9kYXRhKHNl
bGYpOgorICAgICAgICBmb3IgKGZvcm1hdHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5p
dGlvbikgaW4gX1RFU1RfUkVEVU5EQU5UX1FVT1RFRF9FWFRFTlNJT05fREFUQToKKyAgICAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdChkZWZpbml0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0
cmluZykpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9iYWRfZGF0YShzZWxmKToKKyAgICAgICAgX1RF
U1RfQkFEX0VYVEVOU0lPTl9EQVRBID0gWworICAgICAgICAgICAgKCdmb287IDsgJyksCisgICAg
ICAgICAgICAoJ2ZvbzsgYSBhJyksCisgICAgICAgICAgICAoJ2ZvbyBmb28nKSwKKyAgICAgICAg
ICAgICgnLCwsJyksCisgICAgICAgICAgICAoJ2ZvbzsgYmFyPScpLAorICAgICAgICAgICAgKCdm
b287IGJhcj0iaG9nZScpLAorICAgICAgICAgICAgKCdmb287IGJhcj0iYVxyIicpLAorICAgICAg
ICAgICAgKCdmb287IGJhcj0iXFxceGZmIicpLAorICAgICAgICAgICAgKCdmb287IGJhcj1ccmEn
KSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nIGluIF9URVNUX0JB
RF9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24sIHBhcnNlX2V4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3JtYXR0ZWRfc3RyaW5nKQorCisKK2NsYXNzIEZvcm1hdEV4dGVuc2lvbnNU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9mb3JtYXRfZXh0ZW5zaW9ucyhz
ZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRpb25zIGluIF9URVNU
X1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgZXh0ZW5zaW9ucyA9IFtdCisgICAg
ICAgICAgICBmb3IgZGVmaW5pdGlvbiBpbiBkZWZpbml0aW9uczoKKyAgICAgICAgICAgICAgICAo
bmFtZSwgcGFyYW1ldGVycykgPSBkZWZpbml0aW9uCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9u
ID0gRXh0ZW5zaW9uUGFyYW1ldGVyKG5hbWUpCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLl9w
YXJhbWV0ZXJzID0gcGFyYW1ldGVycworICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5k
KGV4dGVuc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0dGVkX3N0cmlu
ZywgZm9ybWF0X2V4dGVuc2lvbnMoZXh0ZW5zaW9ucykpCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDQ4NDFmMWY3OWZhODlmMDNmMGUwMjE5ZTA2YjIxM2MzNGY1ZjBmYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQpAQCAtMCww
ICsxLDQyMiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IlRlc3RzIGZvciBoYW5kc2hha2UgbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGgg
ICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uCitmcm9tIG1vZF9weXdl
YnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQgSGFuZHNoYWtlcgorCitm
cm9tIHRlc3QgaW1wb3J0IG1vY2sKKworCitjbGFzcyBSZXF1ZXN0RGVmaW5pdGlvbihvYmplY3Qp
OgorICAgICIiIkEgY2xhc3MgZm9yIGhvbGRpbmcgZGF0YSBmb3IgY29uc3RydWN0aW5nIG9wZW5p
bmcgaGFuZHNoYWtlIHN0cmluZ3MgZm9yCisgICAgdGVzdGluZyB0aGUgb3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2QsIHVy
aSwgaGVhZGVycyk6CisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYu
dXJpID0gdXJpCisgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKKworCitkZWYgX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCk6CisgICAgcmV0dXJuIFJlcXVlc3REZWZpbml0aW9uKAorICAg
ICAgICAnR0VUJywgJy9kZW1vJywgeworICAgICAgICAgICAgJ0hvc3QnOiAnc2VydmVyLmV4YW1w
bGUuY29tJywKKyAgICAgICAgICAgICdVcGdyYWRlJzogJ3dlYnNvY2tldCcsCisgICAgICAgICAg
ICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtl
eSc6ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0nLAorICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtVmVyc2lvbic6ICcxMycsCisgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxl
LmNvbScKKyAgICAgICAgfSkKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKToK
KyAgICBjb25uID0gbW9jay5Nb2NrQ29ubihiJycpCisgICAgcmV0dXJuIG1vY2suTW9ja1JlcXVl
c3QobWV0aG9kPXJlcXVlc3RfZGVmLm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmk9cmVxdWVzdF9kZWYudXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnNfaW49cmVxdWVzdF9kZWYuaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uPWNvbm4pCisKKworZGVmIF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KToKKyAg
ICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkp
CisgICAgcmV0dXJuIGhhbmRzaGFrZXIKKworCitjbGFzcyBTdWJwcm90b2NvbENob29zaW5nRGlz
cGF0Y2hlcihvYmplY3QpOgorICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBk
aXNwYXRjaGVyIHNldHMgdGhlIGktdGggc3VicHJvdG9jb2wKKyAgICBvZiByZXF1ZXN0ZWQgb25l
cyB0byB3c19wcm90b2NvbCB3aGVyZSBpIGlzIGdpdmVuIG9uIGNvbnN0cnVjdGlvbiBhcyBpbmRl
eAorICAgIGFyZ3VtZW50LiBJZiBpbmRleCBpcyBuZWdhdGl2ZSwgZGVmYXVsdF92YWx1ZSB3aWxs
IGJlIHNldCB0byB3c19wcm90b2NvbC4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aW5kZXgsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6CisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAor
ICAgICAgICBzZWxmLmRlZmF1bHRfdmFsdWUgPSBkZWZhdWx0X3ZhbHVlCisKKyAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIGlmIHNlbGYuaW5k
ZXggPj0gMDoKKyAgICAgICAgICAgIGNvbm5fY29udGV4dC53c19wcm90b2NvbCA9IGNvbm5fY29u
dGV4dC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzWworICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhd
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25uX2NvbnRleHQud3NfcHJvdG9jb2wgPSBz
ZWxmLmRlZmF1bHRfdmFsdWUKKworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29u
dGV4dCk6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9u
KEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEFib3J0aW5nRGlzcGF0Y2hlcihvYmpl
Y3QpOgorICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJh
aXNlcyBhbiBleGNlcHRpb24gaW4KKyAgICBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRo
ZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29u
bl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbignQW4g
ZXhjZXB0aW9uIHRvIHJlamVjdCB0aGUgcmVxdWVzdCcpCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0
YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQWJvcnRlZEJ5
VXNlckRpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRlc3Rpbmcu
IFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4KKyAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGlu
IGRvX2V4dHJhX2hhbmRzaGFrZSB0byByZWplY3QgdGhlIHJlcXVlc3QuCisgICAgIiIiCisgICAg
ZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICByYWlz
ZSBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCdBbiBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uIHRvIHJl
amVjdCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0
JykKKworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAg
IHBhc3MKKworCitfRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgYidIVFRQLzEuMSAxMDEgU3dp
dGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgYidVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAg
IGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG5cclxuJykKKworCitjbGFzcyBIYW5kc2hh
a2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgZHJhZnQt
aWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgorICAgIGhhbmRzaGFr
ZSBwcm9jZXNzb3IuCisgICAgIiIiCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpKQorICAgICAgICBkaXNwYXRjaGVyID0gbW9jay5Nb2NrRGlzcGF0Y2hlcigpCisgICAgICAg
IGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCisgICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlzcGF0
Y2hlci5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9kZW1vJywgcmVxdWVzdC53c19yZXNvdXJjZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tJywgcmVxdWVzdC53
c19vcmlnaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19wcm90
b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXF1ZXN0LndzX2V4dGVuc2lv
bnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1Qs
IHJlcXVlc3Qud3NfdmVyc2lvbikKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2V4
dHJhX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKKyAgICAgICAgIyBBZGQgaGVhZGVycyBub3QgcmVsYXRlZCB0byBXZWJTb2Nr
ZXQgb3BlbmluZyBoYW5kc2hha2UuCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Zvb0tl
eSddID0gJ0JhclZhbHVlJworICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydFbXB0eUtleSdd
ID0gJycKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQor
ICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCisgICAgICAg
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfRVhQ
RUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
IGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2NhcGl0YWxpemVkX3ZhbHVlKHNlbGYpOgorICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ3VwZ3JhZGUnXSA9ICdXRUJTT0NLRVQnCisKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9
IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydD
b25uZWN0aW9uJ10gPSAnVVBHUkFERScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2Vy
KHJlcXVlc3QpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX211bHRpcGxlX2Nv
bm5lY3Rpb25fdmFsdWVzKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24n
XSA9ICdVcGdyYWRlLCBrZWVwLWFsaXZlLCAsICcKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5k
c2hha2VyKHJlcXVlc3QpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X2Fib3J0aW5nX2hhbmRzaGFrZShzZWxm
KToKKyAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIoX2NyZWF0ZV9yZXF1ZXN0KF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWJvcnRpbmdEaXNwYXRjaGVyKCkpCisgICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNl
cyBhbiBleGNlcHRpb24uIENoZWNrIHRoYXQgaXQncyBub3QgY2F1Z2h0IGJ5CisgICAgICAgICMg
ZG9faGFuZHNoYWtlLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VBYm9ydGVk
RXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0ZXN0X2RvX2hh
bmRzaGFrZV93aXRoX3Byb3RvY29sKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCisKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoMCkpCisgICAg
ICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKworICAgICAgICBFWFBFQ1RFRF9SRVNQT05T
RSA9ICgKKyAgICAgICAgICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxu
JworICAgICAgICAgICAgYidVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAgICAgICAgICAgYidD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1cclxuJworICAgICAgICAgICAgYidTZWMt
V2ViU29ja2V0LVByb3RvY29sOiBjaGF0XHJcblxyXG4nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY2hhdCcsIHJlcXVlc3Qud3NfcHJvdG9jb2wp
CisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2VfcHJvdG9jb2xfbm90X2luX3JlcXVlc3RfYnV0
X2luX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKC0xLCAn
Zm9vYmFyJykpCisgICAgICAgICMgTm8gcmVxdWVzdCBoYXMgYmVlbiBtYWRlIGJ1dCB3c19wcm90
b2NvbCBpcyBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlvbgorICAgICAgICAjIG11c3QgYmUgcmFpc2Vk
LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9j
b2xfbm9fcHJvdG9jb2xfc2VsZWN0aW9uKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCisKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9
IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICAjIHdzX3Byb3RvY29sIGlzIG5v
dCBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkK
KworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2V4dGVuc2lvbnMoc2VsZik6CisgICAg
ICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCisgICAgICAg
ICAgICAncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicpCisK
KyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAgICBiJ0hUVFAvMS4xIDEw
MSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGInVXBncmFkZTogd2Vic29j
a2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAgICAg
ICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289
XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAnCisgICAgICAg
ICAgICBiJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXJcclxu
JworICAgICAgICAgICAgYidcclxuJykKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2Vy
KHJlcXVlc3QpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4
dGVuc2lvbnMpKQorICAgICAgICBleHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVO
U0lPTiwgZXh0ZW5zaW9uLm5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3NlcnZl
cl9ub19jb250ZXh0X3Rha2VvdmVyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uLmdldF9wYXJhbWV0ZXJfbmFtZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIE5vbmUsIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9f
Y29udGV4dF90YWtlb3ZlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
ZGVmbGF0ZScsIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQorCisg
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcXVvdGVkX2V4dGVuc2lvbnMoc2VsZik6Cisg
ICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCisgICAg
ICAgICAgICAncGVybWVzc2FnZS1kZWZsYXRlLCAsICcKKyAgICAgICAgICAgICd1bmtub3duOyBl
ICAgPSAgICAibWNeMiI7IG1hPSJcclxuICAgICAgXFxccmYgICI7IHB2PW5ydCcpCisKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNo
YWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3Nf
cmVxdWVzdGVkX2V4dGVuc2lvbnMpKQorICAgICAgICBmaXJzdF9leHRlbnNpb24gPSByZXF1ZXN0
LndzX3JlcXVlc3RlZF9leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScsIGZpcnN0X2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlY29u
ZF9leHRlbnNpb24gPSByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zWzFdCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Vua25vd24nLCBzZWNvbmRfZXh0ZW5zaW9uLm5hbWUoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2UnLCAnbWEnLCAncHYnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfbmFtZXMoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnbWNeMicsIHNlY29uZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRl
cl92YWx1ZSgnZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcgXHJmICcsIHNlY29uZF9l
eHRlbnNpb24uZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnbnJ0Jywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdwdicpKQor
CisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfb3B0aW9uYWxfaGVhZGVycyhzZWxmKToK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydFbXB0eVZhbHVlJ10gPSAnJworICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydBS2V5J10gPSAnQVZhbHVlJworCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hh
bmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdBVmFsdWUnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0FLZXkn
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0
eVZhbHVlJ10pCisKKyAgICBkZWYgdGVzdF9hYm9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6Cisg
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0
ZWRCeVVzZXJEaXNwYXRjaGVyKCkpCisgICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNl
cyBhbiBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0J3MKKyAgICAgICAgIyBu
b3QgY2F1Z2h0IGJ5IGRvX2hhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYg
dGVzdF9iYWRfcmVxdWVzdHMoc2VsZik6CisgICAgICAgIGJhZF9jYXNlcyA9IFsKKyAgICAgICAg
ICAgICgnSFRUUCByZXF1ZXN0JywKKyAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigKKyAg
ICAgICAgICAgICAgICAgJ0dFVCcsICcvZGVtbycsIHsKKyAgICAgICAgICAgICAgICAgICAgICdI
b3N0JzoKKyAgICAgICAgICAgICAgICAgICAgICd3d3cuZ29vZ2xlLmNvbScsCisgICAgICAgICAg
ICAgICAgICAgICAnVXNlci1BZ2VudCc6CisgICAgICAgICAgICAgICAgICAgICAnTW96aWxsYS81
LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTAuNTsnCisgICAgICAgICAgICAgICAg
ICAgICAnIGVuLVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJwor
ICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdUQkEnLAorICAgICAgICAgICAgICAgICAgICAg
J0FjY2VwdCc6CisgICAgICAgICAgICAgICAgICAgICAndGV4dC9odG1sLGFwcGxpY2F0aW9uL3ho
dG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksJworICAgICAgICAgICAgICAgICAgICAgJyov
KjtxPTAuOCcsCisgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzoKKyAgICAg
ICAgICAgICAgICAgICAgICdlbi11cyxlbjtxPTAuNScsCisgICAgICAgICAgICAgICAgICAgICAn
QWNjZXB0LUVuY29kaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICdnemlwLGRlZmxhdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzoKKyAgICAgICAgICAgICAgICAg
ICAgICdJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjcnLAorICAgICAgICAgICAgICAgICAg
ICAgJ0tlZXAtQWxpdmUnOgorICAgICAgICAgICAgICAgICAgICAgJzMwMCcsCisgICAgICAgICAg
ICAgICAgICAgICAnQ29ubmVjdGlvbic6CisgICAgICAgICAgICAgICAgICAgICAna2VlcC1hbGl2
ZScKKyAgICAgICAgICAgICAgICAgfSksIE5vbmUsIFRydWUpCisgICAgICAgIF0KKworICAgICAg
ICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVl
c3RfZGVmLm1ldGhvZCA9ICdQT1NUJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3Jvbmcg
bWV0aG9kJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVm
ID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ0hvc3QnXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBIb3N0Jywg
cmVxdWVzdF9kZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1Vw
Z3JhZGUnXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBVcGdyYWRlJywgcmVx
dWVzdF9kZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snVXBncmFkZSdd
ID0gJ25vbndlYnNvY2tldCcKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFVwZ3Jh
ZGUnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVy
c1snQ29ubmVjdGlvbiddCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIENvbm5l
Y3Rpb24nLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydDb25uZWN0aW9uJ10gPSAnRG93bmdyYWRlJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgn
V3JvbmcgQ29ubmVjdGlvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1
ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddCisgICAgICAgIGJhZF9jYXNlcy5h
cHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtS2V5JywgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1
ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQor
ICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gKAorICAg
ICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PWdhcmJhZ2UnKQorICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKHdpdGggZ2FyYmFnZSBvbiB0
aGUgdGFpbCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAnWVE9
PScgICMgQkFTRTY0IG9mICdhJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAorICAgICAgICAg
ICAgKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAoZGVjb2RlZCB2YWx1ZSBpcyBub3QgMTYgb2N0
ZXRzIGxvbmcpJywKKyAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgICMg
VGhlIGxhc3QgY2hhcmFjdGVyIHJpZ2h0IGJlZm9yZSA9PSBtdXN0IGJlIGFueSBvZiBBLCBRLCB3
IGFuZCBnLgorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSdd
ID0gJ0FRSURCQVVHQndnSkNnc01EUTRQRUM9PScKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgK
KyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKHBhZGRpbmcgYml0cyBhcmUg
bm90IHplcm8pJywKKyAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCisgICAgICAgICAgICAn
ZEdobElITmhiWEJzWlNCdWIyNWpaUT09LGRHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScpCisgICAg
ICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAobXVsdGlwbGUg
dmFsdWVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRy
dWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbidd
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ01pc3NpbmcgU2VjLVdl
YlNvY2tldC1WZXJzaW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMycKKyAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9uJywg
cmVxdWVzdF9kZWYsIE5vbmUsIEZhbHNlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1X
ZWJTb2NrZXQtVmVyc2lvbiddID0gJzEzLCAxMycKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgo
J1dyb25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbiAobXVsdGlwbGUgdmFsdWVzKScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2lsbGVnYWxceDA5cHJvdG9j
b2wnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ0lsbGVnYWwgU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCcsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJycKKyAgICAgICAgYmFk
X2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnRW1wdHkgU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bCcsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIGZvciAoY2FzZV9uYW1lLCBy
ZXF1ZXN0X2RlZiwgZXhwZWN0ZWRfc3RhdHVzLAorICAgICAgICAgICAgIGV4cGVjdF9oYW5kc2hh
a2VfZXhjZXB0aW9uKSBpbiBiYWRfY2FzZXM6CisgICAgICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFr
ZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBz
ZWxmLmZhaWwoJ05vIGV4Y2VwdGlvbiB0aHJvd24gZm9yIFwnJXNcJyBjYXNlJyAlIGNhc2VfbmFt
ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGF0dXMsIGUuc3RhdHVzKQor
ICAgICAgICAgICAgZXhjZXB0IFZlcnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQorCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVh
ZGVyX3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRp
bC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41Y2UwMWVmMjgzOTEzZTNmYzg3NzViM2IyNzMxMWY2MTk1YzU3YmU3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVh
ZGVyX3V0aWwucHkKQEAgLTAsMCArMSw5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisj
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBodHRwX2hlYWRlcl91dGlsIG1vZHVsZS4iIiIK
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0dGVz
dAoraW1wb3J0IHN5cworCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJf
dXRpbAorCisKK2NsYXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVu
aXR0ZXN0IGZvciBodHRwX2hlYWRlcl91dGlsIG1vZHVsZS4iIiIKKyAgICBkZWYgdGVzdF9wYXJz
ZV9yZWxhdGl2ZV91cmkoc2VsZik6CisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0
cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJy93cy90ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBvcnQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy93cy90ZXN0JywgcmVzb3VyY2UpCisKKyAgICBkZWYg
dGVzdF9wYXJzZV9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291
cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9sb2Nh
bGhvc3Q6MTAwODAvd3MvdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2xvY2FsaG9z
dCcsIGhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwODAsIHBvcnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJy93cy90ZXN0JywgcmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwg
cG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAg
ICd3czovL2V4YW1wbGUuY29tL3dzL3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdl
eGFtcGxlLmNvbScsIGhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoODAsIHBvcnQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy93cy90ZXN0JywgcmVzb3VyY2UpCisKKyAgICAgICAg
aG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3NzOi8v
ZXhhbXBsZS5jb20vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBo
b3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQ0MywgcG9ydCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnLycsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNl
ID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxl
LmNvbTo4MDgwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgwODAsIHBvcnQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2ludmFsaWRfdXJp
KHNlbGYpOgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwu
cGFyc2VfdXJpKCd3czovLy8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc291
cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5w
YXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9sb2NhbGhvc3Q6SU5WQUxJRF9QT1JUJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBw
b3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAg
J3dzOi8vbG9jYWxob3N0Oi0xL3dzJykKKyAgICAgICAgaWYgc3lzLnZlcnNpb24gPj0gJzMuNic6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc291cmNlKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9jYWxob3N0JywgaG9zdCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoODAsIHBvcnQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcvd3MnLCByZXNvdXJjZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzI4OGM1
MTBiODliYjI4OTMxZGZmOWE3NzkxODNhNDk5MTc1NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CkBAIC0wLDAgKzEsMTAw
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMg
Zm9yIG1lbW9yaXppbmdmaWxlIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNpeAorCitpbXBvcnQgc2V0
X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1v
ZHVsZS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdmaWxlCisKKwor
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IG1lbW9yaXppbmdmaWxlIG1vZHVsZS4iIiIKKyAgICBkZWYgY2hlY2soc2VsZiwgbWVtb3Jpemlu
Z19maWxlLCBudW1fcmVhZCwgZXhwZWN0ZWRfbGlzdCk6CisgICAgICAgIGZvciB1bnVzZWQgaW4g
cmFuZ2UobnVtX3JlYWQpOgorICAgICAgICAgICAgbWVtb3JpemluZ19maWxlLnJlYWRsaW5lKCkK
KyAgICAgICAgYWN0dWFsX2xpc3QgPSBtZW1vcml6aW5nX2ZpbGUuZ2V0X21lbW9yaXplZF9saW5l
cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0
dWFsX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRf
bGlzdCwgYWN0dWFsX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwgYWN0dWFsKQorCisgICAgZGVmIGNoZWNrX3dpdGhfc2l6ZShzZWxmLCBtZW1vcml6aW5nX2Zp
bGUsIHJlYWRfc2l6ZSwgZXhwZWN0ZWRfbGlzdCk6CisgICAgICAgIHJlYWRfbGlzdCA9IFtdCisg
ICAgICAgIHJlYWRfbGluZSA9ICcnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBs
aW5lID0gbWVtb3JpemluZ19maWxlLnJlYWRsaW5lKHJlYWRfc2l6ZSkKKyAgICAgICAgICAgIGxp
bmVfbGVuZ3RoID0gbGVuKGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZV9s
ZW5ndGggPD0gcmVhZF9zaXplKQorICAgICAgICAgICAgaWYgbGluZV9sZW5ndGggPT0gMDoKKyAg
ICAgICAgICAgICAgICBpZiByZWFkX2xpbmUgIT0gJyc6CisgICAgICAgICAgICAgICAgICAgIHJl
YWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICByZWFkX2xpbmUgKz0gbGluZQorICAgICAgICAgICAgaWYgbGluZVtsaW5lX2xlbmd0aCAt
IDFdID09ICdcbic6CisgICAgICAgICAgICAgICAgcmVhZF9saXN0LmFwcGVuZChyZWFkX2xpbmUp
CisgICAgICAgICAgICAgICAgcmVhZF9saW5lID0gJycKKyAgICAgICAgYWN0dWFsX2xpc3QgPSBt
ZW1vcml6aW5nX2ZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0dWFsX2xpc3QpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKHJlYWRfbGlzdCkpCisgICAgICAg
IGZvciBleHBlY3RlZCwgYWN0dWFsLCByZWFkIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxf
bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbGlz
dCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZWFkKQorCisgICAgZGVmIHRlc3Rf
Z2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVt
b3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCisgICAgICAgICAgICBzaXguU3RyaW5nSU8oJ0hl
bGxvXG5Xb3JsZFxuV2VsY29tZScpKQorICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmls
ZSwgMywgWydIZWxsb1xuJywgJ1dvcmxkXG4nLCAnV2VsY29tZSddKQorCisgICAgZGVmIHRlc3Rf
Z2V0X21lbW9yaXplZF9saW5lc19saW1pdF9tZW1vcml6ZWRfbGluZXMoc2VsZik6CisgICAgICAg
IG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAorICAgICAg
ICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSwgMikKKyAgICAgICAg
c2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJ10pCisK
KyAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2VtcHR5X2ZpbGUoc2VsZik6CisgICAg
ICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKHNpeC5T
dHJpbmdJTygnJykpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAxMCwgW10p
CisKKyAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX3dpdGhfc2l6ZShzZWxmKToKKyAg
ICAgICAgZm9yIHNpemUgaW4gcmFuZ2UoMSwgMTApOgorICAgICAgICAgICAgbWVtb3JpemluZ19m
aWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCisgICAgICAgICAgICAgICAgc2l4
LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKKyAgICAgICAgICAgIHNlbGYuY2hl
Y2tfd2l0aF9zaXplKG1lbW9yaXppbmdfZmlsZSwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnSGVsbG9cbicsICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tb2NrLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczODcz
ZGRlOTdkZjAzZjIwZGY1YWM5NzIyZjZhZDY1ZGQwMmVhYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tb2NrLnB5CkBAIC0wLDAgKzEsMTM3IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMgZm9yIG1vY2sg
bW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHVuaXR0ZXN0CisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIHRlc3QgaW1wb3J0IG1vY2sKKworCitjbGFzcyBNb2Nr
Q29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tD
b25uIGNsYXNzLiIiIgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5fY29ubiA9
IG1vY2suTW9ja0Nvbm4oYidBQkNcclxuREVGR1xyXG5cclxuSElKSycpCisKKyAgICBkZWYgdGVz
dF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0FCQ1xyXG4nLCBz
ZWxmLl9jb25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidERUZHXHJc
bicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1xy
XG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidI
SUpLJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
Jywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorCisgICAgZGVmIHRlc3RfcmVhZChzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInRUZHXHJcblxyXG5ISScsIHNlbGYuX2Nvbm4ucmVh
ZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0pLJywgc2VsZi5fY29ubi5yZWFkKDEw
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisK
KyAgICBkZWYgdGVzdF9yZWFkX2FuZF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChiJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInRUZHXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ1xyXG5ISUpLJywgc2VsZi5fY29ubi5yZWFkKDkpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGInJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorCisgICAgZGVmIHRl
c3Rfd3JpdGUoc2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoYidIZWxsb1xyXG4nKQor
ICAgICAgICBzZWxmLl9jb25uLndyaXRlKGInV29ybGRcclxuJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChiJ0hlbGxvXHJcbldvcmxkXHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9kYXRhKCkp
CisKKworY2xhc3MgTW9ja0Jsb2NraW5nQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAg
ICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tCbG9ja2luZ0Nvbm4gY2xhc3MuIiIiCisgICAgZGVmIHRl
c3RfcmVhZChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCBkYXRhIHB1dCB0byBNb2NrQmxv
Y2tpbmdDb25uIGJ5IHB1dF9ieXRlcyBtZXRob2QgY2FuIGJlCisgICAgICAgIHJlYWQgZnJvbSBp
dC4KKyAgICAgICAgIiIiCisgICAgICAgIGNsYXNzIExpbmVSZWFkZXIodGhyZWFkaW5nLlRocmVh
ZCk6CisgICAgICAgICAgICAiIiJBIHRlc3QgY2xhc3MgdGhhdCBsYXVuY2hlcyBhIHRocmVhZCwg
Y2FsbHMgcmVhZGxpbmUgb24gdGhlCisgICAgICAgICAgICBzcGVjaWZpZWQgY29ubiByZXBlYXRl
ZGx5IGFuZCBwdXRzIHRoZSByZWFkIGRhdGEgdG8gdGhlIHNwZWNpZmllZAorICAgICAgICAgICAg
cXVldWUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
b25uLCBxdWV1ZSk6CisgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQorICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKKyAgICAgICAgICAgICAg
ICBzZWxmLl9jb25uID0gY29ubgorICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUp
CisgICAgICAgICAgICAgICAgc2VsZi5zdGFydCgpCisKKyAgICAgICAgICAgIGRlZiBydW4oc2Vs
Zik6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgZGF0
YSA9IHNlbGYuX2Nvbm4ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWV1
ZS5wdXQoZGF0YSkKKworICAgICAgICBjb25uID0gbW9jay5Nb2NrQmxvY2tpbmdDb25uKCkKKyAg
ICAgICAgcXVldWUgPSBzaXgubW92ZXMucXVldWUuUXVldWUoKQorICAgICAgICByZWFkZXIgPSBM
aW5lUmVhZGVyKGNvbm4sIHF1ZXVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocXVldWUuZW1w
dHkoKSkKKyAgICAgICAgY29ubi5wdXRfYnl0ZXMoYidGb28gYmFyXHJcbicpCisgICAgICAgIHJl
YWQgPSBxdWV1ZS5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInRm9vIGJhclxyXG4n
LCByZWFkKQorCisKK2NsYXNzIE1vY2tUYWJsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAg
ICIiIkEgdW5pdHRlc3QgZm9yIE1vY2tUYWJsZSBjbGFzcy4iIiIKKyAgICBkZWYgdGVzdF9jcmVh
dGVfZnJvbV9kaWN0KHNlbGYpOgorICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKHsnS2V5
JzogJ1ZhbHVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0
KCdLRVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10p
CisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICB0YWJsZSA9
IG1vY2suTW9ja1RhYmxlKFsoJ0tleScsICdWYWx1ZScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX3R1cGxl
KHNlbGYpOgorICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCgoJ0tleScsICdWYWx1ZScp
LCApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAg
ZGVmIHRlc3Rfc2V0X2FuZF9nZXQoc2VsZik6CisgICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFi
bGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHRhYmxlLmdldCgnS2V5JykpCisg
ICAgICAgIHRhYmxlWydLZXknXSA9ICdWYWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1
ZScsIHRhYmxlLmdldCgna2V5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywg
dGFibGUuZ2V0KCdLRVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJs
ZVsnS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSdd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLRVknXSkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tc2d1
dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21zZ3V0aWwucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTQzZjIxYjhkMjk3NjY4NzcwY2I5MWM1MDFjMmIyZmM4MjU4YjllYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tc2d1dGlsLnB5CkBAIC0wLDAgKzEs
OTE2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVz
dHMgZm9yIG1zZ3V0aWwgbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbgoraW1wb3J0IGFycmF5CitpbXBvcnQgc2l4Lm1vdmVz
LnF1ZXVlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdW5pdHRlc3QKK2lt
cG9ydCB6bGliCisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxv
Y2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IG1zZ3V0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgSW52YWxpZFVURjhF
eGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCitmcm9t
IG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKK2Zyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCB1dGlsCitmcm9tIHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCBtYXAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorZnJvbSBzaXggaW1w
b3J0IGl0ZXJieXRlcworCisjIFdlIHVzZSBvbmUgZml4ZWQgbm9uY2UgZm9yIHRlc3RpbmcgaW5z
dGVhZCBvZiBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgUFJORy4KK19NQVNLSU5HX05PTkNFID0g
YidBQkNEJworCisKK2RlZiBfbWFza19oeWJpKGZyYW1lKToKKyAgICBpZiBpc2luc3RhbmNlKGZy
YW1lLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgRXhjZXB0aW9uKCdtYXNraW5nIGRvZXMgbm90
IGFjY2VwdCBUZXh0cycpCisKKyAgICBmcmFtZV9rZXkgPSBsaXN0KGl0ZXJieXRlcyhfTUFTS0lO
R19OT05DRSkpCisgICAgZnJhbWVfa2V5X2xlbiA9IGxlbihmcmFtZV9rZXkpCisgICAgcmVzdWx0
ID0gYnl0ZWFycmF5KGZyYW1lKQorICAgIGNvdW50ID0gMAorCisgICAgZm9yIGkgaW4gcmFuZ2Uo
bGVuKHJlc3VsdCkpOgorICAgICAgICByZXN1bHRbaV0gXj0gZnJhbWVfa2V5W2NvdW50XQorICAg
ICAgICBjb3VudCA9IChjb3VudCArIDEpICUgZnJhbWVfa2V5X2xlbgorCisgICAgcmV0dXJuIF9N
QVNLSU5HX05PTkNFICsgYnl0ZXMocmVzdWx0KQorCisKK2RlZiBfaW5zdGFsbF9leHRlbnNpb25f
cHJvY2Vzc29yKHByb2Nlc3NvciwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpOgorICAgIHJlc3Bv
bnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgIGlmIHJlc3BvbnNl
IGlzIG5vdCBOb25lOgorICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbnMpCisgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMuYXBw
ZW5kKHByb2Nlc3NvcikKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YShyZWFk
X2RhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PU5vbmUpOgorICAgIHJlcSA9IG1vY2su
TW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKHJlYWRfZGF0YSkpCisgICAgcmVx
LndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorICAgIHJlcS53c19leHRl
bnNpb25fcHJvY2Vzc29ycyA9IFtdCisKKyAgICBwcm9jZXNzb3IgPSBOb25lCisgICAgaWYgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3QgaXMgbm90IE5vbmU6CisgICAgICAgIHByb2Nlc3NvciA9
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3QpCisKKyAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlv
bnMoKQorICAgIGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZToKKyAgICAgICAgX2luc3RhbGxfZXh0
ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcSwgc3RyZWFtX29wdGlvbnMpCisgICAgcmVx
LndzX3N0cmVhbSA9IFN0cmVhbShyZXEsIHN0cmVhbV9vcHRpb25zKQorCisgICAgcmV0dXJuIHJl
cQorCisKK2RlZiBfY3JlYXRlX3JlcXVlc3QoKmZyYW1lcyk6CisgICAgIiIiQ3JlYXRlcyBNb2Nr
UmVxdWVzdCB1c2luZyBkYXRhIGdpdmVuIGFzIGZyYW1lcy4KKworICAgIGZyYW1lcyB3aWxsIGJl
IHJldHVybmVkIG9uIGNhbGxpbmcgcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQoKSB3aGVyZSByZXF1
ZXN0CisgICAgaXMgTW9ja1JlcXVlc3QgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICAi
IiIKKworICAgIHJlYWRfZGF0YSA9IFtdCisgICAgZm9yIChoZWFkZXIsIGJvZHkpIGluIGZyYW1l
czoKKyAgICAgICAgcmVhZF9kYXRhLmFwcGVuZChoZWFkZXIgKyBfbWFza19oeWJpKGJvZHkpKQor
CisgICAgcmV0dXJuIF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoYicnLmpvaW4ocmVhZF9k
YXRhKSkKKworCitkZWYgX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6CisgICAgIiIiQ3JlYXRl
cyBNb2NrUmVxdWVzdC4KKworICAgIERhdGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBi
ZSByZWFkIG91dCBieSBjYWxsaW5nCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpLgorICAgICIiIgorCisgICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1v
Y2suTW9ja0Jsb2NraW5nQ29ubigpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJ
T05fSFlCSV9MQVRFU1QKKyAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQorICAg
IHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKKyAgICByZXR1cm4g
cmVxCisKKworY2xhc3MgQmFzaWNNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
IiIiQmFzaWMgdGVzdHMgZm9yIFN0cmVhbS4iIiIKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uo
c2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGInXHg4MVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI1CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2Fk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2QnICsgcGF5bG9hZC5lbmNvZGUo
J1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZWRpdW1fbWVzc2FnZShzZWxmKToK
KyAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDdlXHgwMFx4N2UnICsgcGF5bG9hZC5l
bmNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoKDEgPDwgMTYp
IC0gMSkKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidceDgxXHg3ZVx4ZmZceGZmJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9
ICdhJyAqICgxIDw8IDE2KQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInXHg4MVx4N2ZceDAwXHgwMFx4MDBceDAwXHgw
MFx4MDFceDAwXHgwMCcgKworICAgICAgICAgICAgcGF5bG9hZC5lbmNvZGUoJ1VURi04JyksIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVz
c2FnZV91bmljb2RlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkK
KyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQorICAgICAg
ICAjIFUrNjVlNSBpcyBlbmNvZGVkIGFzIGU2LDk3LGE1IGluIFVURi04CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYidceDgxXHgwM1x4ZTZceDk3XHhhNScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9tZXNzYWdlX2ZyYWdtZW50cyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycs
IEZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnICcsIEZhbHNl
KQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBGYWxzZSkK
KyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJyEnLCBUcnVlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHgwMVx4MDVIZWxsb1x4MDBceDAxIFx4MDBceDA1V29ybGRc
eDgwXHgwMSEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRzX2ltbWVkaWF0ZV96
ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScs
IEZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJywgVHJ1ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDBjSGVsbG8gV29ybGQhXHg4MFx4MDAn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDgxXHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NicsIGInV29ybGQhJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgICAgIHBheWxvYWQgPSBiJ2EnICogMTI1CisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ZmQnLCBwYXlsb2FkKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAg
IGRlZiB0ZXN0X3JlY2VpdmVfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQg
PSBiJ2EnICogMTI2CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4
ZmVceDAwXHg3ZScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgICAgIHBheWxvYWQgPSBiJ2EnICogKCgxIDw8IDE2
KSAtIDEpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ZmVceGZm
XHhmZicsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQuZGVjb2Rl
KCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9sYXJnZV9tZXNzYWdlKHNlbGYp
OgorICAgICAgICBwYXlsb2FkID0gYidhJyAqICgxIDw8IDE2KQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDFceDAwXHgwMCcsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
eWxvYWQuZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9sZW5ndGhf
bm90X2VuY29kZWRfdXNpbmdfbWluaW1hbF9udW1iZXJfb2ZfYnl0ZXMoc2VsZik6CisgICAgICAg
ICMgTG9nIHdhcm5pbmcgb24gcmVjZWl2aW5nIGJhZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCB0aGF0
IGRvZXNuJ3QgdXNlCisgICAgICAgICMgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXMgYnV0IGNvbnRp
bnVlIHByb2Nlc3NpbmcuCisKKyAgICAgICAgcGF5bG9hZCA9IGInYScKKyAgICAgICAgIyAxIGJ5
dGUgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGhvdXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmll
bGQuCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisgICAgICAgICAgICAoYidc
eDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBk
ZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDgxXHg4MycsIGInXHhlNlx4OWNceGFjJykpCisgICAgICAg
ICMgVSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQor
CisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNlbGYpOgor
ICAgICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCisgICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ODInLCBiJ1x4ODBceDgxJykpCisgICAg
ICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCByYWlzZSBJbnZhbGlkVVRGOEV4Y2VwdGlv
bgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkVVRGOEV4Y2VwdGlvbiwgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCisK
KyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50cyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwgKGInXHgwMFx4ODEnLCBi
JyAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAwXHg4NScsIGIn
V29ybGQnKSwgKGInXHg4MFx4ODEnLCBiJyEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SGVsbG8gV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBk
ZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c191bmljb2RlKHNlbGYpOgorICAgICAgICAjIFVURi04
IGVuY29kZXMgVSs2ZjIyIGludG8gZTZiY2EyIGFuZCBVKzViNTcgaW50byBlNWFkOTcuCisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODInLCBiJ1x4ZTZceGJjJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHgwMFx4ODInLCBiJ1x4YTJc
eGU1JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MFx4ODInLCBi
J1x4YWRceDk3JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTZmMjJcdTViNTcnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVf
ZnJhZ21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDFceDhjJywgYidIZWxsbyBXb3JsZCEnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgwXHg4MCcsIGInJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNz
YWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfZHVwbGljYXRl
X3N0YXJ0KHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDFc
eDg1JywgYidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4
MDFceDg1JywgYidXb3JsZCcpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLklu
dmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50
c19pbnRlcm1lZGlhdGVfYnV0X25vdF9zdGFydGVkKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDBceDg1JywgYidIZWxsbycpKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisKKyAgICBkZWYg
dGVzdF9yZWNlaXZlX2ZyYWdtZW50c19lbmRfYnV0X25vdF9zdGFydGVkKHNlbGYpOgorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODBceDg1JywgYidIZWxsbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4OGZceDg2JywgYidJ
R05PUkUnKSwgKGInXHg4MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAoYidceDhmXHg4
OScsIGInRElTUkVHQVJEJyksIChiJ1x4ODFceDg2JywgYidXb3JsZCEnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMobXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5VbnN1cHBvcnRlZEZy
YW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZSwgcmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQhJywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2Ns
b3NlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAorICAgICAgICAg
ICAgKGInXHg4OFx4OGEnLCBzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDAwLCByZXF1ZXN0LndzX2Nsb3Nl
X2NvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0dvb2QgYnllJywgcmVxdWVzdC53c19j
bG9zZV9yZWFzb24pCisKKyAgICBkZWYgdGVzdF9zZW5kX2xvbmdlc3RfY2xvc2Uoc2VsZik6Cisg
ICAgICAgIHJlYXNvbiA9ICdhJyAqIDEyMworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KAorICAgICAgICAgICAgKGInXHg4OFx4ZmQnLCBzdHJ1Y3QucGFjaygnIUgnLCBjb21tb24u
U1RBVFVTX05PUk1BTF9DTE9TVVJFKSArCisgICAgICAgICAgICAgcmVhc29uLmVuY29kZSgnVVRG
LTgnKSkpCisgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9u
LlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFzb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19j
bG9zZV9jb2RlLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24pCisKKyAgICBkZWYgdGVz
dF9zZW5kX2Nsb3NlX3Rvb19sb25nKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25F
eGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0
aW9uLCByZXF1ZXN0LndzX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9u
LlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgJ2EnICogMTI0KQorCisgICAgZGVmIHRlc3Rfc2VuZF9j
bG9zZV9pbmNvbnNpc3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgIyByZWFzb24gcGFyYW1ldGVyIG11c3Qgbm90
IGJlIHNwZWNpZmllZCB3aGVuIGNvZGUgaXMgTm9uZS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9uLCByZXF1ZXN0LndzX3N0cmVhbSwgTm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2EnKQorCisgICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNl
bGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRp
bC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYidceDg5XHgwY0hlbGxvIFdvcmxkIScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9s
b25nZXN0X3Bpbmcoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQor
ICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnYScgKiAxMjUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidceDg5XHg3ZCcgKyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0
ZXN0X3NlbmRfcGluZ190b29fbG9uZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9u
RXhjZXB0aW9uLCBtc2d1dGlsLnNlbmRfcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCwgJ2EnICogMTI2KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0cyByZWNlaXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCisgICAg
ICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIG1lc3NhZ2UpOgorICAgICAgICAgICAgcmVxdWVzdC5j
YWxsZWQgPSBUcnVlCisKKyAgICAgICAgIyBTdHJlYW0gYXV0b21hdGljYWxseSByZXNwb25kIHRv
IHBpbmcgd2l0aCBwb25nIHdpdGhvdXQgYW55IGFjdGlvbgorICAgICAgICAjIGJ5IGFwcGxpY2F0
aW9uIGxheWVyLgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceDg1
JywgYidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFc
eDg1JywgYidXb3JsZCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
XHg4YVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceDg1JywgYidIZWxsbycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcp
KQorICAgICAgICByZXF1ZXN0Lm9uX3BpbmdfaGFuZGxlciA9IGhhbmRsZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9sb25nZXN0X3Bpbmcoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoKGInXHg4OVx4ZmQnLCBiJ2EnICogMTI1KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDdkJyArIGInYScgKiAxMjUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9waW5nX3Rvb19sb25nKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZlXHgwMFx4N2UnLCBiJ2EnICogMTI2KSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9wb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyByZWNlaXZp
bmcgYSBwb25nIGNvbnRyb2wgZnJhbWUuIiIiCisgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3Qs
IG1lc3NhZ2UpOgorICAgICAgICAgICAgcmVxdWVzdC5jYWxsZWQgPSBUcnVlCisKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVsbG8nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAg
ICAgICAgcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDg5XHgwNUhlbGxvJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAg
ICAjIFZhbGlkIHBvbmcgaXMgcmVjZWl2ZWQsIGJ1dCByZWNlaXZlX21lc3NhZ2Ugd29uJ3QgcmV0
dXJuIGZvciBpdC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vdGhpbmcgd2Fz
IHdyaXR0ZW4gYWZ0ZXIgcmVjZWl2ZV9tZXNzYWdlIGNhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYidceDg5XHgwNUhlbGxvJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0
ZXN0X3JlY2VpdmVfdW5zb2xpY2l0ZWRfcG9uZyhzZWxmKToKKyAgICAgICAgIyBVbnNvbGljaXRl
ZCBwb25nIGlzIGFsbG93ZWQgZnJvbSBIeUJpIDA3LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcpKQorICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoKGInXHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5n
KHJlcXVlc3QsICdKdW1ibycpCisgICAgICAgICMgQm9keSBtaXNtYXRjaC4KKyAgICAgICAgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3BpbmdfY2Fubm90
X2JlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
KGInXHgwOVx4ODUnLCBiJ0hlbGxvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0
aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3Bpbmdfd2l0aF90
b29fbG9uZ19wYXlsb2FkKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4ODlceGZlXHgwMVx4MDAnLCBiJ2EnICogMjU2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisKK2NsYXNzIFBlck1l
c3NhZ2VEZWZsYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIHBl
cm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uIiIiCisgICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFy
YW1ldGVycyhzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQor
ICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92
ZXInLCBOb25lKQorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihleHRlbnNpb24pCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2UuaGFz
X3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIE5vbmUsIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFs
dWUoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignY2xp
ZW50X21heF93aW5kb3dfYml0cycsIE5vbmUpCisgICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3Nh
Z2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKKworICAgICAgICBwcm9jZXNz
b3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoOCkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9j
bGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihUcnVlKQorICAgICAgICByZXNwb25zZSA9IHByb2Nl
c3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgICc4JywgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnY2xpZW50X21h
eF93aW5kb3dfYml0cycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2UuaGFzX3Bh
cmFtZXRlcignY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIE5vbmUsIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyJykpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
CisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBi
JycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9IHps
aWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisg
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVT
SCkKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQorICAg
ICAgICBleHBlY3RlZCA9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0
ZXN0X3NlbmRfZW1wdHlfbWVzc2FnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGFuIGVt
cHR5IG1lc3NhZ2UgaXMgY29tcHJlc3NlZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3Jl
cXVlc3Q9ZXh0ZW5zaW9uKQorCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICcnKQorCisgICAgICAgICMgUGF5bG9hZCBpbiBiaW5hcnk6IDBiMDAwMDAwMDAKKyAgICAgICAg
IyBGcm9tIExTQiwKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5BTCAoMCkKKyAgICAgICAgIyAt
IDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCisgICAgICAgICMgLSA1IGJpdHMgb2Yg
cGFkZGluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhjMVx4MDFceDAwJywgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
X3dpdGhfbnVsbF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhIHNpbXBs
ZSBwYXlsb2FkIChvbmUgbnVsbCkgaXMgZnJhbWVkIGNvcnJlY3RseS4iIiIKKworICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9u
LlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCisKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgJ1x4MDAnKQorCisgICAgICAgICMgUGF5bG9hZCBpbiBiaW5hcnk6IDBiMDExMDAwMTAg
MGIwMDAwMDAwMCAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAgICAgICMgLSAx
IGJpdCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKDAxIHRoYXQg
bWVhbnMgZml4ZWQgSHVmZm1hbikKKyAgICAgICAgIyAtIDggYml0cyBvZiB0aGUgZmlyc3QgY29k
ZSAoMDAxMTAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3IgdGhlIGxpdGVyYWwKKyAgICAgICAgIyAg
IGFscGhhYmV0IDB4MDApCisgICAgICAgICMgLSA3IGJpdHMgb2YgdGhlIHNlY29uZCBjb2RlICgw
MDAwMDAwIHRoYXQgaXMgdGhlIGNvZGUgZm9yIHRoZQorICAgICAgICAjICAgZW5kLW9mLWJsb2Nr
KQorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAjIC0gMiBiaXRzIG9m
IEJUWVBFIChubyBjb21wcmVzc2lvbikKKyAgICAgICAgIyAtIDIgYml0cyBvZiBwYWRkaW5nCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGMxXHgwM1x4NjJceDAwXHgwMCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FH
RV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9m
cm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxv
JykKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJykKKworICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
emxpYi5NQVhfV0JJVFMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycKKworICAgICAgICBjb21w
cmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0
ZWQgKz0gYidceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVk
ICs9IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJl
c3MuY29tcHJlc3MoYidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJl
c3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBj
b21wcmVzc2VkX3dvcmxkWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceGMxJWMnICUgbGVu
KGNvbXByZXNzZWRfd29ybGQpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQK
KworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRlZChz
ZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAg
ICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywg
cGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdHb29kYnllJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQorCisgICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykK
KyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQor
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxv
KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNz
ZWRfZ29vZGJ5ZSA9IGNvbXByZXNzLmNvbXByZXNzKGInR29vZGJ5ZScpCisgICAgICAgIGNvbXBy
ZXNzZWRfZ29vZGJ5ZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAg
ICAgZXhwZWN0ZWQgKz0gYidceDAwJWMnICUgbGVuKGNvbXByZXNzZWRfZ29vZGJ5ZSkKKyAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9nb29kYnllCisgICAgICAgIGNvbXByZXNzZWRfd29y
bGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3NlZF93b3Js
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQorICAgICAgICBleHBlY3RlZCArPSBiJ1x4
ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF93b3JsZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJh
Z21lbnRlZF9lbXB0eV9maXJzdF9mcmFtZShzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RF
RkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0
ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJywgZW5kPUZh
bHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQorCisg
ICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNv
bXByZXNzKGInJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4NDElYycgJSBsZW4oY29t
cHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbworICAg
ICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAg
ICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
CisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KKyAgICAg
ICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfZW1wdHkpCisgICAgICAg
IGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKKyAgICAgICAgcHJpbnQoJyVyJyAlIGV4cGVj
dGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRl
ZF9lbXB0eV9sYXN0X2ZyYW1lKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9F
WFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRh
KAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24p
CisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxz
ZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCisKKyAgICAgICAg
Y29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6
bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIu
TUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3Mo
YidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXBy
ZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAg
ICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNzLmNvbXByZXNzKGInJykKKyAgICAgICAgY29t
cHJlc3NlZF9lbXB0eSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAg
ICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNzZWRfZW1wdHlbOi00XQorICAgICAgICBleHBl
Y3RlZCArPSBiJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKKyAgICAgICAgZXhwZWN0
ZWQgKz0gY29tcHJlc3NlZF9lbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
LCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5k
X21lc3NhZ2VfdXNpbmdfc21hbGxfd2luZG93KHNlbGYpOgorICAgICAgICBjb21tb25fcGFydCA9
ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKKyAgICAgICAgdGVzdF9tZXNzYWdlID0gY29t
bW9uX3BhcnQgKyAnLScgKiAzMDAwMCArIGNvbW1vbl9wYXJ0CisKKyAgICAgICAgZXh0ZW5zaW9u
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNT
QUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcign
c2VydmVyX21heF93aW5kb3dfYml0cycsICc4JykKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0
ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVz
dCwgdGVzdF9tZXNzYWdlKQorCisgICAgICAgIGV4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6
ZSA9IDIKKyAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSA9IDkxCisKKyAg
ICAgICAgYWN0dWFsX2ZyYW1lID0gcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHBlY3RlZF93ZWJzb2NrZXRf
aGVhZGVyX3NpemUgKyBleHBlY3RlZF93ZWJzb2NrZXRfcGF5bG9hZF9zaXplLAorICAgICAgICAg
ICAgbGVuKGFjdHVhbF9mcmFtZSkpCisgICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1YWxfZnJh
bWVbMDpleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCisgICAgICAgIGFjdHVhbF9wYXls
b2FkID0gYWN0dWFsX2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpdCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4YzElYycgJSBleHBlY3RlZF93ZWJzb2NrZXRfcGF5
bG9hZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9oZWFkZXIpCisgICAg
ICAgIGRlY29tcHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLTgpCisgICAgICAgIGRlY29tcHJl
c3NlZF9tZXNzYWdlID0gZGVjb21wcmVzcy5kZWNvbXByZXNzKGFjdHVhbF9wYXlsb2FkICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAw
XHgwMFx4ZmZceGZmJykKKyAgICAgICAgZGVjb21wcmVzc2VkX21lc3NhZ2UgKz0gZGVjb21wcmVz
cy5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9tZXNzYWdlLCBkZWNvbXBy
ZXNzZWRfbWVzc2FnZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MCwgbGVuKGRlY29tcHJlc3MudW51c2VkX2RhdGEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGxlbihkZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbCkpCisKKyAgICBkZWYgdGVzdF9zZW5k
X21lc3NhZ2Vfbm9fY29udGV4dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJh
bWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1l
c3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
Myk6CisgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBl
bmQ9RmFsc2UpCisgICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nLCBlbmQ9VHJ1ZSkKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxp
Yi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisKKyAgICAgICAgZmlyc3RfaGVs
bG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgZmlyc3RfaGVsbG8gKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkID0gYidc
eDQxJWMnICUgbGVuKGZpcnN0X2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxs
bworICAgICAgICBzZWNvbmRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAg
ICAgICAgc2Vjb25kX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBzZWNvbmRfaGVsbG8gPSBzZWNvbmRfaGVsbG9bOi00XQorICAgICAgICBleHBlY3Rl
ZCArPSBiJ1x4ODAlYycgJSBsZW4oc2Vjb25kX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBz
ZWNvbmRfaGVsbG8KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkICsgZXhwZWN0
ZWQgKyBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRl
ZF9iZmluYWwoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAg
ICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
CisgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5hbChU
cnVlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9
RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIGVu
ZD1UcnVlKQorCisgICAgICAgIGV4cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQor
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisg
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkK
KyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG8gKyBzdHJ1Y3QucGFj
aygnIUInLCAwKQorICAgICAgICBleHBlY3RlZCArPSBiJ1x4NDElYycgJSBsZW4oY29tcHJlc3Nl
ZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbworCisgICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwg
emxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGli
Lk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNz
KGInV29ybGQnKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxk
ICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUg
bGVuKGNvbXByZXNzZWRfd29ybGQpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29y
bGQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGVmbGF0
ZShzZWxmKToKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZB
VUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyAr
PSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQorICAgICAgICBkYXRhID0gYidceGMxJWMnICUg
KGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCisgICAgICAgIGRhdGEgKz0gX21hc2tfaHli
aShjb21wcmVzc2VkX2hlbGxvKQorCisgICAgICAgICMgQ2xvc2UgZnJhbWUKKyAgICAgICAgZGF0
YSArPSBiJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyBi
J0dvb2QgYnllJykKKworICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisg
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAg
ICAgZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfcmFuZG9tX3NlY3Rp
b24oc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhIGNvbXByZXNzZWQgbWVzc2FnZSBmcmFn
bWVudGVkIGludG8gbG90cyBvZiBjaHVua3MgaXMKKyAgICAgICAgY29ycmVjdGx5IHJlY2VpdmVk
LgorICAgICAgICAiIiIKKworICAgICAgICByYW5kb20uc2VlZChhPTApCisgICAgICAgIHBheWxv
YWQgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtzdHJ1Y3QucGFjaygnIUInLCByYW5kb20ucmFu
ZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAwKV0pCisKKyAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxB
VEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRT
KQorICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2Fk
KQorICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNzZWRfcGF5bG9h
ZFs6LTRdCisKKyAgICAgICAgIyBGcmFnbWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8g
bG90cyBvZiBmcmFtZXMuCisgICAgICAgIGJ5dGVzX2NodW5rZWQgPSAwCisgICAgICAgIGRhdGEg
PSBiJycKKyAgICAgICAgZnJhbWVfY291bnQgPSAwCisKKyAgICAgICAgY2h1bmtfc2l6ZXMgPSBb
XQorCisgICAgICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2Fk
KToKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQKKyAgICAgICAgICAgICMgLSB0aGUgbGVu
Z3RoIG9mIGNodW5rcyBhcmUgZXF1YWwgb3IgbGVzcyB0aGFuIDEyNSBzbyB0aGF0IHdlIGNhbgor
ICAgICAgICAgICAgIyAgIHVzZSAxIG9jdGV0IGxlbmd0aCBoZWFkZXIgZm9ybWF0IGZvciBhbGwg
ZnJhbWVzLgorICAgICAgICAgICAgIyAtIGF0IGxlYXN0IDEwIGNodW5rcyBhcmUgY3JlYXRlZC4K
KyAgICAgICAgICAgIGNodW5rX3NpemUgPSByYW5kb20ucmFuZGludCgKKyAgICAgICAgICAgICAg
ICAxLAorICAgICAgICAgICAgICAgIG1pbigxMjUsCisgICAgICAgICAgICAgICAgICAgIGxlbihj
b21wcmVzc2VkX3BheWxvYWQpIC8vIDEwLAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJl
c3NlZF9wYXlsb2FkKSAtIGJ5dGVzX2NodW5rZWQpKQorICAgICAgICAgICAgY2h1bmtfc2l6ZXMu
YXBwZW5kKGNodW5rX3NpemUpCisgICAgICAgICAgICBjaHVuayA9IGNvbXByZXNzZWRfcGF5bG9h
ZFtieXRlc19jaHVua2VkOmJ5dGVzX2NodW5rZWQgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2h1bmtfc2l6ZV0KKyAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQgKz0g
Y2h1bmtfc2l6ZQorCisgICAgICAgICAgICBmaXJzdF9vY3RldCA9IDB4MDAKKyAgICAgICAgICAg
IGlmIGxlbihkYXRhKSA9PSAwOgorICAgICAgICAgICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rf
b2N0ZXQgfCAweDQyCisgICAgICAgICAgICBpZiBieXRlc19jaHVua2VkID09IGxlbihjb21wcmVz
c2VkX3BheWxvYWQpOgorICAgICAgICAgICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rfb2N0ZXQg
fCAweDgwCisKKyAgICAgICAgICAgIGRhdGEgKz0gYiclYyVjJyAlIChmaXJzdF9vY3RldCwgY2h1
bmtfc2l6ZSB8IDB4ODApCisgICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmspCisK
KyAgICAgICAgICAgIGZyYW1lX2NvdW50ICs9IDEKKworICAgICAgICBwcmludCgiQ2h1bmsgc2l6
ZXM6ICVyIiAlIGNodW5rX3NpemVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5r
X3NpemVzKSA+IDEwKQorCisgICAgICAgICMgQ2xvc2UgZnJhbWUKKyAgICAgICAgZGF0YSArPSBi
J1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyBiJ0dvb2Qg
YnllJykKKworICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgZGF0
YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3R3b19tZXNzYWdlcyhzZWxmKToKKyAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9O
LCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXps
aWIuTUFYX1dCSVRTKQorCisgICAgICAgIGRhdGEgPSBiJycKKworICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsb1dlYlNvY2tldCcpCisgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgc3Bs
aXRfcG9zaXRpb24gPSBsZW4oY29tcHJlc3NlZF9oZWxsbykgLy8gMgorICAgICAgICBkYXRhICs9
IGInXHg0MSVjJyAlIChzcGxpdF9wb3NpdGlvbiB8IDB4ODApCisgICAgICAgIGRhdGEgKz0gX21h
c2tfaHliaShjb21wcmVzc2VkX2hlbGxvWzpzcGxpdF9wb3NpdGlvbl0pCisKKyAgICAgICAgZGF0
YSArPSBiJ1x4ODAlYycgJSAoKGxlbihjb21wcmVzc2VkX2hlbGxvKSAtIHNwbGl0X3Bvc2l0aW9u
KSB8IDB4ODApCisgICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvW3Nw
bGl0X3Bvc2l0aW9uOl0pCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHps
aWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29t
cHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQorICAgICAgICBkYXRhICs9IGIn
XHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQorICAgICAgICBkYXRhICs9
IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93b3JsZCkKKworICAgICAgICAjIENsb3NlIGZyYW1lCisg
ICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
KyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9XZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRl
c3RfcmVjZWl2ZV9tZXNzYWdlX21peGVkX2J0eXBlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRo
YXQgYSBtZXNzYWdlIGNvbXByZXNzZWQgdXNpbmcgbG90cyBvZiBERUZMQVRFIGJsb2NrcyB3aXRo
CisgICAgICAgIHZhcmlvdXMgZmx1c2ggbW9kZSBpcyBjb3JyZWN0bHkgcmVjZWl2ZWQuCisgICAg
ICAgICIiIgorCisgICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKKyAgICAgICAgcGF5bG9hZCA9IGIn
Jy5qb2luKAorICAgICAgICAgICAgW3N0cnVjdC5wYWNrKCchQicsIHJhbmRvbS5yYW5kaW50KDAs
IDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMDApXSkKKworICAgICAgICBjb21wcmVzcyA9IE5vbmUK
KworICAgICAgICAjIEZyYWdtZW50IHRoZSBjb21wcmVzc2VkIHBheWxvYWQgaW50byBsb3RzIG9m
IGZyYW1lcy4KKyAgICAgICAgYnl0ZXNfY2h1bmtlZCA9IDAKKyAgICAgICAgY29tcHJlc3NlZF9w
YXlsb2FkID0gYicnCisKKyAgICAgICAgY2h1bmtfc2l6ZXMgPSBbXQorICAgICAgICBtZXRob2Rz
ID0gW10KKyAgICAgICAgc3luY191c2VkID0gRmFsc2UKKyAgICAgICAgZmluaXNoX3VzZWQgPSBG
YWxzZQorCisgICAgICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4ocGF5bG9hZCk6CisgICAg
ICAgICAgICAjIE1ha2Ugc3VyZSBhdCBsZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAg
ICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtaW4oMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZW4ocGF5bG9hZCkgLSBieXRlc19jaHVua2VkKSkKKyAgICAg
ICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXplKQorICAgICAgICAgICAgY2h1bmsg
PSBwYXlsb2FkW2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCisKKyAg
ICAgICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6ZQorCisgICAgICAgICAgICBpZiBj
b21wcmVzcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQorCisg
ICAgICAgICAgICBpZiBieXRlc19jaHVua2VkID09IGxlbihwYXlsb2FkKToKKyAgICAgICAgICAg
ICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCisgICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNz
ZWRfcGF5bG9hZFs6LTRdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1ldGhv
ZCA9IHJhbmRvbS5yYW5kaW50KDAsIDEpCisgICAgICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQo
bWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAwOgorICAgICAgICAgICAgICAg
ICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmspCisgICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGli
LlpfU1lOQ19GTFVTSCkKKyAgICAgICAgICAgICAgICAgICAgc3luY191c2VkID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgY29tcHJl
c3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgICAg
ICAgICAgICAgIGNvbXByZXNzID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBmaW5pc2hfdXNl
ZCA9IFRydWUKKworICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNodW5rX3NpemVz
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEwKQorICAgICAg
ICBwcmludCgiTWV0aG9kczogJXIiICUgbWV0aG9kcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHN5bmNfdXNlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2VkKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1MzYpCisgICAg
ICAgIGRhdGEgPSBiJ1x4YzJceGZlJyArIHN0cnVjdC5wYWNrKCchSCcsIGxlbihjb21wcmVzc2Vk
X3BheWxvYWQpKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9wYXlsb2Fk
KQorCisgICAgICAgICMgQ2xvc2UgZnJhbWUKKyAgICAgICAgZGF0YSArPSBiJ1x4ODhceDhhJyAr
IF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykKKworICAg
ICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgZGF0YSwgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
eWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKwor
Y2xhc3MgTWVzc2FnZVJlY2VpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVz
dHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdlUmVjZWl2ZXIuIiIiCisgICAgZGVmIHRl
c3RfcXVldWUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVl
c3QoKQorICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3Qp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZWNlaXZlci5yZWNlaXZlX25vd2Fp
dCgpKQorCisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgxXHg4Nicg
KyBfbWFza19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
IScsIHJlY2VpdmVyLnJlY2VpdmUoKSkKKworICAgIGRlZiB0ZXN0X29ubWVzc2FnZShzZWxmKToK
KyAgICAgICAgb25tZXNzYWdlX3F1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKworICAg
ICAgICBkZWYgb25tZXNzYWdlX2hhbmRsZXIobWVzc2FnZSk6CisgICAgICAgICAgICBvbm1lc3Nh
Z2VfcXVldWUucHV0KG1lc3NhZ2UpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tp
bmdfcmVxdWVzdCgpCisgICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIo
cmVxdWVzdCwgb25tZXNzYWdlX2hhbmRsZXIpCisKKyAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhiJ1x4ODFceDg2JyArIF9tYXNrX2h5YmkoYidIZWxsbyEnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8hJywgb25tZXNzYWdlX3F1ZXVlLmdldCgpKQorCisKK2Ns
YXNzIE1lc3NhZ2VTZW5kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyB0
aGUgU3RyZWFtIGNsYXNzIHVzaW5nIE1lc3NhZ2VTZW5kZXIuIiIiCisgICAgZGVmIHRlc3Rfc2Vu
ZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCisg
ICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAgICAg
IHNlbmRlci5zZW5kKCdXb3JsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDgxXHgw
NVdvcmxkJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9ub3dhaXQoc2VsZik6CisgICAgICAgICMgVXNlIGEgcXVldWUgdG8gY2hlY2sgdGhl
IGJ5dGVzIHdyaXR0ZW4gYnkgTWVzc2FnZVNlbmRlci4KKyAgICAgICAgIyByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlCisgICAgICAg
ICMgTWVzc2FnZVNlbmRlciBydW5zIGluIGEgc2VwYXJhdGUgdGhyZWFkLgorICAgICAgICBzZW5k
X3F1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKworICAgICAgICBkZWYgd3JpdGUoYnl0
ZXMpOgorICAgICAgICAgICAgc2VuZF9xdWV1ZS5wdXQoYnl0ZXMpCisKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZSA9IHdyaXRlCisKKyAgICAgICAgc2VuZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVy
KHJlcXVlc3QpCisKKyAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdIZWxsbycpCisgICAgICAg
IHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
XHg4MVx4MDVIZWxsbycsIHNlbmRfcXVldWUuZ2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidceDgxXHgwNVdvcmxkJywgc2VuZF9xdWV1ZS5nZXQoKSkKKworCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rfc3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1Mzg5OWQyMDUz
M2ViNGNmMGE5ODE2YzhiM2IyYmM4YzUwNTQ4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3Rfc3RyZWFtLnB5CkBAIC0wLDAgKzEsNzAgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3Igc3RyZWFtIG1v
ZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9y
dCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBs
b2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorCisKK2NsYXNz
IFN0cmVhbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIHN0
cmVhbSBtb2R1bGUuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2hlYWRlcihzZWxmKToKKyAgICAg
ICAgIyBtb3JlLCByc3YxLCAuLi4sIHJzdjQgYXJlIGFsbCB0cnVlCisgICAgICAgIGhlYWRlciA9
IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgMSwgMSwgMSwgMSwgMSwg
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ZjFceDgxJywgaGVhZGVyKQorCisgICAg
ICAgICMgTWF4aW11bSBwYXlsb2FkIHNpemUKKyAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0
ZV9oZWFkZXIoY29tbW9uLk9QQ09ERV9URVhULCAoMSA8PCA2MykgLSAxLCAwLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHgwMVx4N2ZceDdmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicsIGhl
YWRlcikKKworICAgICAgICAjIEludmFsaWQgb3Bjb2RlIDB4MTAKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsIDB4MTAsIDAsIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApCisKKyAgICAgICAgIyBJbnZhbGlk
IHZhbHVlIDB4ZiBwYXNzZWQgdG8gbW9yZSBwYXJhbWV0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsIGNvbW1vbi5PUENPREVfVEVY
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMHhmLCAwLCAwLCAwLCAwKQorCisgICAg
ICAgICMgVG9vIGxvbmcgcGF5bG9hZF9sZW5ndGgKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsIGNvbW1vbi5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgMSA8PCA2MywgMCwgMCwgMCwgMCwgMCkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF91dGlsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAzNDc5
NDEwNTE0NTVlYmVlNTg4MjNiNGIwYmU5Mzc2MjkxMmIwYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF91dGlsLnB5CkBAIC0wLDAgKzEsMTk0IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMgZm9yIHV0aWwg
bW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgoraW1wb3J0IG9zCitpbXBvcnQgcmFu
ZG9tCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzdHJ1Y3QKKworaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitmcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBQWTMKK2Zyb20gc2l4IGltcG9ydCBp
bnQyYnl0ZQorCitfVEVTVF9EQVRBX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9f
ZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJykKKworCitjbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgdXRpbCBtb2R1bGUuIiIiCisgICAgZGVmIHRl
c3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZXhjID0gRXhj
ZXB0aW9uKCdXb3JsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgc3RyKGV4
YykpCisgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbignSGVsbG8gJywg
ZXhjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCcsIHN0cihleGMpKQor
CisgICAgZGVmIHRlc3RfZ2V0X3NjcmlwdF9pbnRlcnAoc2VsZik6CisgICAgICAgIGN5Z3dpbl9w
YXRoID0gJ2M6XFxjeWd3aW5cXGJpbicKKyAgICAgICAgY3lnd2luX3BlcmwgPSBvcy5wYXRoLmpv
aW4oY3lnd2luX3BhdGgsICdwZXJsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RB
VEFfRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1JFQURNRScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IE5vbmUsCisgICAgICAgICAgICB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKG9zLnBhdGguam9pbihf
VEVTVF9EQVRBX0RJUiwgJ1JFQURNRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjeWd3aW5fcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAnL3Vzci9iaW4vcGVybCAtd1QnLAorICAgICAgICAgICAgdXRpbC5nZXRfc2NyaXB0X2ludGVy
cChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGN5Z3dpbl9wZXJsICsgJyAtd1QnLAorICAgICAg
ICAgICAgdXRpbC5nZXRfc2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIs
ICdoZWxsby5wbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeWd3aW5f
cGF0aCkpCisKKyAgICBkZWYgdGVzdF9oZXhpZnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJzYxIDdhIDQxIDVhIDMwIDM5IDIwIDA5IDBkIDBhIDAwIGZmJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB1dGlsLmhleGlmeShiJ2F6QVowOSBcdFxyXG5ceDAwXHhmZicpKQorCisK
K2NsYXNzIFJlcGVhdGVkWG9yTWFza2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIi
QSB1bml0dGVzdCBmb3IgUmVwZWF0ZWRYb3JNYXNrZXIgY2xhc3MuIiIiCisgICAgZGVmIHRlc3Rf
bWFzayhzZWxmKToKKyAgICAgICAgIyBTYW1wbGUgaW5wdXQgZTYsOTcsYTUgaXMgVSs2NWU1IGlu
IFVURi04CisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceGZmXHhm
Zlx4ZmZceGZmJykKKyAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soYidceGU2XHg5N1x4YTUn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHgxOVx4NjhceDVhJywgcmVzdWx0KQorCisg
ICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHgwMFx4MDBceDAw
JykKKyAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soYidceGU2XHg5N1x4YTUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHhlNlx4OTdceGE1JywgcmVzdWx0KQorCisgICAgICAgIG1h
c2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceGU2XHg5N1x4YTVceDIwJykKKyAgICAg
ICAgcmVzdWx0ID0gbWFza2VyLm1hc2soYidceGU2XHg5N1x4YTUnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHgwMFx4MDBceDAwJywgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfbWFza190
d2ljZShzZWxmKToKKyAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcihiJ1x4
MDBceDdmXHhmZlx4MjAnKQorICAgICAgICAjIG1hc2tbMF0sIG1hc2tbMV0sIC4uLiB3aWxsIGJl
IHVzZWQuCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4
MDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHgwMFx4N2ZceGZmXHgyMFx4MDAnLCBy
ZXN1bHQpCisgICAgICAgICMgbWFza1syXSwgbWFza1swXSwgLi4uIHdpbGwgYmUgdXNlZCBmb3Ig
dGhlIG5leHQgY2FsbC4KKyAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soYidceDAwXHgwMFx4
MDBceDAwXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDdmXHhmZlx4MjBceDAw
XHg3ZicsIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfbGFyZ2VfZGF0YShzZWxmKToKKyAg
ICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcihiJ21BU2snKQorICAgICAgICBv
cmlnaW5hbCA9IGInJy5qb2luKFt1dGlsLnBhY2tfYnl0ZShpICUgMjU2KSBmb3IgaSBpbiByYW5n
ZSgxMDAwKV0pCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKG9yaWdpbmFsKQorICAgICAg
ICBleHBlY3RlZCA9IGInJy5qb2luKFsKKyAgICAgICAgICAgIHV0aWwucGFja19ieXRlKChpICUg
MjU2KSBeIG9yZCgnbUFTaydbaSAlIDRdKSkgZm9yIGkgaW4gcmFuZ2UoMTAwMCkKKyAgICAgICAg
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVzdWx0KQorCisgICAgICAg
IG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidNYVNrJykKKyAgICAgICAgZmlyc3Rf
cGFydCA9IGInVGhlIFdlYlNvY2tldCBQcm90b2NvbCBlbmFibGVzIHR3by13YXkgY29tbXVuaWNh
dGlvbi4nCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGZpcnN0X3BhcnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBiJ1x4MTlcdDZLXHgxYVx4MDQxOCJceDAy
OFx4MGU5QVx4MDNceDE5Ilx4MTU8XHgwOCJccnNceDBlIycKKyAgICAgICAgICAgIGInXHgwMDFc
eDA3KFx4MTJzXHgxZjpceDBlflx4MWMsXHgxOHNceDA4Ilx4MGM+XHgxZSNceDA4MFxuOScKKyAg
ICAgICAgICAgIGInXHgwODxceDA1YycsIHJlc3VsdCkKKyAgICAgICAgc2Vjb25kX3BhcnQgPSBi
J0l0IGhhcyB0d28gcGFydHM6IGEgaGFuZHNoYWtlIGFuZCB0aGUgZGF0YSB0cmFuc2Zlci4nCisg
ICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKHNlY29uZF9wYXJ0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgYiIoJ0slXHgwMCBLOVx4MTY8Sz1ceDAwIVx4MWY+W3Nc
bm1cdDJceDA1KVx4MTI7XG4mXHgwNHNcbiMiCisgICAgICAgICAgICBiIlx4MDVzXHgxZiVceDA0
c1x4MGYsXHgxNTJLOVx4MTMyXHgwNT5ceDA3Nlx4MTljIiwgcmVzdWx0KQorCisKK2RlZiBnZXRf
cmFuZG9tX3NlY3Rpb24oc291cmNlLCBtaW5fbnVtX2NodW5rcyk6CisgICAgY2h1bmtzID0gW10K
KyAgICBieXRlc19jaHVua2VkID0gMAorCisgICAgd2hpbGUgYnl0ZXNfY2h1bmtlZCA8IGxlbihz
b3VyY2UpOgorICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoCisgICAgICAgICAg
ICAxLCBtaW4obGVuKHNvdXJjZSkgLyBtaW5fbnVtX2NodW5rcywKKyAgICAgICAgICAgICAgICAg
ICBsZW4oc291cmNlKSAtIGJ5dGVzX2NodW5rZWQpKQorICAgICAgICBjaHVuayA9IHNvdXJjZVti
eXRlc19jaHVua2VkOmJ5dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQorICAgICAgICBjaHVua3Mu
YXBwZW5kKGNodW5rKQorICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAg
IHJldHVybiBjaHVua3MKKworCitjbGFzcyBJbmZsYXRlckRlZmxhdGVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgX0luZmxhdGVyIGFuZCBfRGVmbGF0ZXIg
Y2xhc3MuIiIiCisgICAgZGVmIHRlc3RfaW5mbGF0ZV9kZWZsYXRlX2RlZmF1bHQoc2VsZik6Cisg
ICAgICAgIGlucHV0ID0gYidoZWxsbycgKyBiJy0nICogMzAwMDAgKyBiJ2hlbGxvJworICAgICAg
ICBpbmZsYXRlcjE1ID0gdXRpbC5fSW5mbGF0ZXIoMTUpCisgICAgICAgIGRlZmxhdGVyMTUgPSB1
dGlsLl9EZWZsYXRlcigxNSkKKyAgICAgICAgaW5mbGF0ZXI4ID0gdXRpbC5fSW5mbGF0ZXIoOCkK
KyAgICAgICAgZGVmbGF0ZXI4ID0gdXRpbC5fRGVmbGF0ZXIoOCkKKworICAgICAgICBjb21wcmVz
c2VkMTUgPSBkZWZsYXRlcjE1LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQpCisgICAgICAgIGNv
bXByZXNzZWQ4ID0gZGVmbGF0ZXI4LmNvbXByZXNzX2FuZF9maW5pc2goaW5wdXQpCisKKyAgICAg
ICAgaW5mbGF0ZXIxNS5hcHBlbmQoY29tcHJlc3NlZDE1KQorICAgICAgICBpbmZsYXRlcjguYXBw
ZW5kKGNvbXByZXNzZWQ4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29tcHJlc3Nl
ZDE1LCBjb21wcmVzc2VkOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwgaW5mbGF0
ZXIxNS5kZWNvbXByZXNzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwgaW5m
bGF0ZXI4LmRlY29tcHJlc3MoLTEpKQorCisgICAgZGVmIHRlc3RfcmFuZG9tX3NlY3Rpb24oc2Vs
Zik6CisgICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKKyAgICAgICAgc291cmNlID0gYicnLmpvaW4o
CisgICAgICAgICAgICBbaW50MmJ5dGUocmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4g
cmFuZ2UoMTAwICogMTAyNCldKQorCisgICAgICAgIGNodW5rZWRfaW5wdXQgPSBnZXRfcmFuZG9t
X3NlY3Rpb24oc291cmNlLCAxMCkKKyAgICAgICAgcHJpbnQoIklucHV0IGNodW5rIHNpemVzOiAl
ciIgJSBbbGVuKGMpIGZvciBjIGluIGNodW5rZWRfaW5wdXRdKQorCisgICAgICAgIGRlZmxhdGVy
ID0gdXRpbC5fRGVmbGF0ZXIoMTUpCisgICAgICAgIGNvbXByZXNzZWQgPSBbXQorICAgICAgICBm
b3IgY2h1bmsgaW4gY2h1bmtlZF9pbnB1dDoKKyAgICAgICAgICAgIGNvbXByZXNzZWQuYXBwZW5k
KGRlZmxhdGVyLmNvbXByZXNzKGNodW5rKSkKKyAgICAgICAgY29tcHJlc3NlZC5hcHBlbmQoZGVm
bGF0ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaChiJycpKQorCisgICAgICAgIGNodW5rZWRfZXhwZWN0
YXRpb24gPSBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCAxMCkKKyAgICAgICAgcHJpbnQoIkV4
cGVjdGF0aW9uIGNodW5rIHNpemVzOiAlciIgJQorICAgICAgICAgICAgICBbbGVuKGMpIGZvciBj
IGluIGNodW5rZWRfZXhwZWN0YXRpb25dKQorCisgICAgICAgIGluZmxhdGVyID0gdXRpbC5fSW5m
bGF0ZXIoMTUpCisgICAgICAgIGluZmxhdGVyLmFwcGVuZChiJycuam9pbihjb21wcmVzc2VkKSkK
KyAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfZXhwZWN0YXRpb246CisgICAgICAgICAgICBk
ZWNvbXByZXNzZWQgPSBpbmZsYXRlci5kZWNvbXByZXNzKGxlbihjaHVuaykpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNodW5rLCBkZWNvbXByZXNzZWQpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChiJycsIGluZmxhdGVyLmRlY29tcHJlc3MoLTEpKQorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9SRUFETUUgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDAxYWE1
NTk1Y2RkMTM0MDdmNTcyOGVjZDUzMmE1ZDEyMjYzZWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9SRUFETUUKQEAgLTAsMCArMSBAQAorVGVzdCBk
YXRhIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjYjU0
MWJiN2VjNDA0NDc0NTc5OGFiOTdhZTdjY2JhNTdlMDRmNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gu
cHkKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24o
ImFib3J0IGZvciB0ZXN0IikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBm
b3IgdGVzdCIpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIz
OThlOTY3NzhkOGY3NWM4ZDc0MjRjMjdiNDBjMWZhZDk5MThlZmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQpA
QCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBpbnRlbnRpb25hbGx5IGxlZnQg
YmxhbmsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvb3JpZ2luX2NoZWNrX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjY0NDJlNjViOTlkZDdk
NDU1Y2IwOWEwYWZjOWQ0OTU4ZGYwNDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CkBAIC0wLDAg
KzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAnaHR0cDovL2V4
YW1wbGUuY29tJzoKKyAgICAgICAgcmV0dXJuCisgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hY2Nl
cHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCisKKworZGVmIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ29yaWdpbl9jaGVja193
c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUgKAorICAgICAgICByZXF1ZXN0LndzX3Jlc291
cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSht
ZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlv
bl9pbl90cmFuc2Zlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Mzkw
OTk0ZDcxMmRmZThmMWU0ZGZkZDk0ZmY1NmFiZTY2NzNkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5f
dHJhbnNmZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiRXhj
ZXB0aW9uIGluIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpLgorIiIiCisKKworZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNlIEV4Y2VwdGlvbignSW50
ZW50aW9uYWwgRXhjZXB0aW9uIGZvciAlcywgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgKHJl
cXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQorCisKKyMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmZk
ZGI3NDQ5NWVlZjFkMWYzNTFlMzM0YWM0ODUwNDczZWQxNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3Ro
ZV9lbmQucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb3JyZWN0IHNp
Z25hdHVyZXMsIHdyb25nIGZpbGUgbmFtZS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJSAoCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1l
c3NhZ2UuZW5jb2RlKCdVVEYtOCcpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxh
YmxlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L25vbl9jYWxsYWJsZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFmY2ZhOTdhOTU0YTJiZTY5NmMxNDhk
ZDFmNTUzNjI4ZjEyMWVhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKQEAgLTAsMCArMSwz
NSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJOb24tY2FsbGFibGUgaGFuZGxlcnMuCisiIiIKKwor
d2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgPSBUcnVlCit3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEgPSAxCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhN2RiMWU1YWMzMjZkZjUxYzY4ZTNlZDI2OTBiZTJhMDNjODczY2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFp
bl93c2gucHkKQEAgLTAsMCArMSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3BsYWlu
X3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJSAocmVxdWVzdC53c19yZXNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qud3NfcHJvdG9jb2wpCisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1lc3NhZ2Uu
ZW5jb2RlKCdVVEYtOCcpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMzY1ZGJlMzJhYWM5MTIyOTFhMzYzYThjODNlYmU4ZTBmZWQ2MGU4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9zdWIvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMiBAQAorVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L25vX3dzaF9hdF90aGVfZW5kLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJf
c2lnX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZWJiMGRhMWFiNmIwYmRkMDc3YjgzMzI4MTM3NmMxYTgxMTU1MGYyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9z
dWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmln
aHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisiIiJXcm9uZyB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBzaWduYXR1cmUu
CisiIiIKKworCitkZWYgbm9fd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbWVzc2FnZSA9ICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgaXMgY2FsbGVkIGZv
ciAlcywgJXMnICUgKAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3By
b3RvY29sKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRG
LTgnKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFu
c2Zlcl9zaWdfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMjdkNmJjZmVlYWYwMmE5NDJhOGIzMGI3ZDMz
NDBmYjIwZDIzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CkBAIC0wLDAgKzEs
NDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KCkgc2lnbmF0dXJlLgorIiIiCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkg
aXMgY2FsbGVkIGZvciAlcywgJXMnICUgKAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCBy
ZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdl
LmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwOGMwZjY1NzJiMTJmYzFiMTQ2NjYzZmZlYWQ1OGM0ODI1YzIzNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2Y3NmI4ZTE5MjBkYzNiZWNhNmVlNTBkZDMyMmJkNjBhNThjYzRlOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwxNyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9SRUFE
TUUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjllZWEx
OTE0YjkxZDZmNTVlNTQ2N2RiOTA4MTUxZDY4N2U5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMzIgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9j
ay5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3Qvc2V0X3N5c19wYXRoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rp
c3BhdGNoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hh
bmRzaGFrZV9oeWJpLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVy
X3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVh
bS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZmRiYzFmNjE4OTk0NmRhZWJjOGVmMGM1ZGM1Mjc1OGZj
YTk0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9DT05UUklCVVRJ
TkcKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9MSUNFTlNFCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZF
U1QuaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9z
ZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMK
aW5kZXggYjM5OTg4MjU2MWVjMjk1ZDhkZWZjYWRiZTFiOWI5OTViMWViOWUxMS4uZmZhNzAyNjAx
YjY1MDliMjVmYmQ2Nzg3ZDFlNzY4MmU1YWMzOTM1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hB
TkdFUworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCkBAIC0zLDYgKzMsMjggQEAgQ2hhbmdlbG9nIGZv
ciBzaXgKIAogVGhpcyBmaWxlIGxpc3RzIHRoZSBjaGFuZ2VzIGluIGVhY2ggc2l4IHZlcnNpb24u
CiAKKzEuMTMuMAorLS0tLS0tCisKKy0gSXNzdWUgIzI5OCwgcHVsbCByZXF1ZXN0ICMyOTk6IEFk
ZCBgc2l4Lm1vdmVzLmRibV9uZGJtYC4KKworLSBJc3N1ZSAjMTU1OiBBZGQgYHNpeC5tb3Zlcy5j
b2xsZWN0aW9uc19hYmNgLCB3aGljaCBhbGlhc2VzIHRoZSBgY29sbGVjdGlvbnNgCisgIG1vZHVs
ZSBvbiBQeXRob24gMi0zLjIgYW5kIHRoZSBgY29sbGVjdGlvbnMuYWJjYCBvbiBQeXRob24gMy4z
IGFuZCBncmVhdGVyLgorCistIFB1bGwgcmVxdWVzdCAjMzA0OiBSZS1hZGQgZGlzdHV0aWxzIGZh
bGxiYWNrIGluIGBzZXR1cC5weWAuCisKKy0gUHVsbCByZXF1ZXN0ICMzMDU6IE9uIFB5dGhvbiAz
LjcsIGB3aXRoX21ldGFjbGFzc2Agc3VwcG9ydHMgY2xhc3NlcyB1c2luZyBQRVAKKyAgNTYwIGZl
YXR1cmVzLgorCisxLjEyLjAKKy0tLS0tLQorCistIElzc3VlICMyNTksIHB1bGwgcmVxdWVzdCAj
MjYwOiBgc2l4LmFkZF9tZXRhY2xhc3NgIG5vdyBwcmVzZXJ2ZXMKKyAgYF9fcXVhbG5hbWVfX2Ag
ZnJvbSB0aGUgb3JpZ2luYWwgY2xhc3MuCisKKy0gUHVsbCByZXF1ZXN0ICMyMDQ6IEFkZCBgc2l4
LmVuc3VyZV9iaW5hcnlgLCBgc2l4LmVuc3VyZV90ZXh0YCwgYW5kCisgIGBzaXguZW5zdXJlX3N0
cmAuCisKIDEuMTEuMAogLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9MSUNFTlNFCmluZGV4IGYzMDY4YmZkOWUwY2Q4NmRlNmIyY2U1ZjVmYTdmYWYzOGM2
OGU1Y2UuLjRiMDVhNTQ1MjYxYzBmOWIzMWFiZTNlZGVjNzEwNTg3NTg3YTY1OWEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L0xJQ0VOU0UKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQpAQCAtMSw0ICsxLDQg
QEAKLUNvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCitDb3B5cmlnaHQg
KGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn
cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9m
CiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbCBpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9QS0ctSU5GTwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q1ZmY0YmI4
ZTRmYTBhMWNhZjZkM2RmNTI4YWJjMjBiM2RmNWFlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9QS0ctSU5GTworKysgL2Rldi9udWxsCkBA
IC0xLDQxICswLDAgQEAKLU1ldGFkYXRhLVZlcnNpb246IDEuMQotTmFtZTogc2l4Ci1WZXJzaW9u
OiAxLjExLjAKLVN1bW1hcnk6IFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgdXRpbGl0aWVz
Ci1Ib21lLXBhZ2U6IGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvCi1BdXRob3I6IEJl
bmphbWluIFBldGVyc29uCi1BdXRob3ItZW1haWw6IGJlbmphbWluQHB5dGhvbi5vcmcKLUxpY2Vu
c2U6IE1JVAotRGVzY3JpcHRpb246IC4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRzLmlvL3B5
cGkvdi9zaXguc3ZnCi0gICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3Jn
L3B5cGkvc2l4Ci0gICAgICAgIAotICAgICAgICAuLiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNp
Lm9yZy9iZW5qYW1pbnAvc2l4LnN2Zz9icmFuY2g9bWFzdGVyCi0gICAgICAgICAgICA6dGFyZ2V0
OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeAotICAgICAgICAKLSAgICAgICAg
Li4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGljZW5zZS1NSVQtZ3JlZW4u
c3ZnCi0gICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4
L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKLSAgICAgICAgCi0gICAgICAgIFNpeCBpcyBhIFB5dGhvbiAy
IGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rp
b25zCi0gICAgICAgIGZvciBzbW9vdGhpbmcgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
aGUgUHl0aG9uIHZlcnNpb25zIHdpdGggdGhlIGdvYWwgb2YKLSAgICAgICAgd3JpdGluZyBQeXRo
b24gY29kZSB0aGF0IGlzIGNvbXBhdGlibGUgb24gYm90aCBQeXRob24gdmVyc2lvbnMuICBTZWUg
dGhlCi0gICAgICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBp
cyBwcm92aWRlZC4KLSAgICAgICAgCi0gICAgICAgIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24g
dmVyc2lvbiBzaW5jZSAyLjYuICBJdCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCi0g
ICAgICAgIGZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkgY29waWVkIGludG8geW91ciBwcm9qZWN0
LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQotICAgICAgICBub3RpY2UgbXVzdCBiZSByZXRh
aW5lZC4pCi0gICAgICAgIAotICAgICAgICBPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
Oi8vc2l4LnJ0ZmQub3JnLgotICAgICAgICAKLSAgICAgICAgQnVncyBjYW4gYmUgcmVwb3J0ZWQg
dG8gaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwot
ICAgICAgICBiZSBmb3VuZCB0aGVyZS4KLSAgICAgICAgCi0gICAgICAgIEZvciBxdWVzdGlvbnMg
YWJvdXQgc2l4IG9yIHBvcnRpbmcgaW4gZ2VuZXJhbCwgZW1haWwgdGhlIHB5dGhvbi1wb3J0aW5n
IG1haWxpbmcKLSAgICAgICAgbGlzdDogaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9s
aXN0aW5mby9weXRob24tcG9ydGluZwotICAgICAgICAKLVBsYXRmb3JtOiBVTktOT1dOCi1DbGFz
c2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMgotQ2xhc3NpZmllcjog
UHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMKLUNsYXNzaWZpZXI6IEludGVuZGVk
IEF1ZGllbmNlIDo6IERldmVsb3BlcnMKLUNsYXNzaWZpZXI6IExpY2Vuc2UgOjogT1NJIEFwcHJv
dmVkIDo6IE1JVCBMaWNlbnNlCi1DbGFzc2lmaWVyOiBUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9w
bWVudCA6OiBMaWJyYXJpZXMKLUNsYXNzaWZpZXI6IFRvcGljIDo6IFV0aWxpdGllcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKaW5kZXggYzE3
ZDhkNzMyYWY4NTlkZTJjNDZhYmFkMDA2NDQzNGE4NGRjMTYwYS4uYTk5ZTZmNTU4NWE5MThiOGE2
OGNlYWJhY2UyZmI2ZTM0ZTkyMTgzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9SRUFETUUucnN0CkBAIC0xLDExICsxLDE4IEBACi0uLiBpbWFnZTo6IGh0
dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgOnRhcmdldDogaHR0cHM6Ly9w
eXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5p
by9weXBpL3Yvc2l4LnN2ZworICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3Np
eC8KKyAgIDphbHQ6IHNpeCBvbiBQeVBJCiAKIC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2ku
b3JnL2JlbmphbWlucC9zaXguc3ZnP2JyYW5jaD1tYXN0ZXIKLSAgICA6dGFyZ2V0OiBodHRwczov
L3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeAorICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMt
Y2kub3JnL2JlbmphbWlucC9zaXgKKyAgIDphbHQ6IHNpeCBvbiBUcmF2aXNDSQogCi0uLiBpbWFn
ZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbi5zdmcKKy4u
IGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvc2l4L2JhZGdlLz92ZXJz
aW9uPWxhdGVzdAorICAgOnRhcmdldDogaHR0cHM6Ly9zaXgucmVhZHRoZWRvY3MuaW8vCisgICA6
YWx0OiBzaXgncyBkb2N1bWVudGF0aW9uIG9uIFJlYWQgdGhlIERvY3MKKworLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwogICAgOnRh
cmdldDogaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgvYmxvYi9tYXN0ZXIvTElDRU5T
RQorICAgOmFsdDogTUlUIExpY2Vuc2UgYmFkZ2UKIAogU2l4IGlzIGEgUHl0aG9uIDIgYW5kIDMg
Y29tcGF0aWJpbGl0eSBsaWJyYXJ5LiAgSXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMKIGZv
ciBzbW9vdGhpbmcgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgUHl0aG9uIHZlcnNp
b25zIHdpdGggdGhlIGdvYWwgb2YKQEAgLTE2LDcgKzIzLDcgQEAgU2l4IHN1cHBvcnRzIGV2ZXJ5
IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlzIGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQ
eXRob24KIGZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkgY29waWVkIGludG8geW91ciBwcm9qZWN0
LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQogbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQog
Ci1PbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRwOi8vc2l4LnJ0ZmQub3JnLgorT25saW5l
IGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cHM6Ly9zaXgucmVhZHRoZWRvY3MuaW8vLgogCiBCdWdz
IGNhbiBiZSByZXBvcnRlZCB0byBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC4gIFRo
ZSBjb2RlIGNhbiBhbHNvCiBiZSBmb3VuZCB0aGVyZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2Rv
Y3VtZW50YXRpb24vY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vY29uZi5weQppbmRl
eCBhZDkyNWMxYzFkMWU4MzYxNDkzNzA3MmJiZTk0ZTZjMzA1NmQxODhkLi5iM2QxMzI4YWRjMmE0
MmFmZGU3MTkxNTE5MzA2MDQzMzUwNGNlMjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVu
dGF0aW9uL2NvbmYucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CkBAIC0z
Myw3ICszMyw3IEBAIG1hc3Rlcl9kb2MgPSAiaW5kZXgiCiAKICMgR2VuZXJhbCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgcHJvamVjdC4KIHByb2plY3QgPSB1InNpeCIKLWNvcHlyaWdodCA9IHUiMjAx
MC0yMDE3LCBCZW5qYW1pbiBQZXRlcnNvbiIKK2NvcHlyaWdodCA9IHUiMjAxMC0yMDE5LCBCZW5q
YW1pbiBQZXRlcnNvbiIKIAogc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4oIi4iLCAiLi4iKSkpCiBmcm9tIHNpeCBpbXBvcnQgX192ZXJzaW9uX18gYXMgc2l4X3Zl
cnNpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKaW5kZXggZGQwZGM2ZTNiZGU4YzQ1OGRjNGYx
MTMzMWVmN2JlMTJlZDY3YWJhOC4uYjdlYzI3NTRlY2Y4M2Q1YTI5MWMxMzk4ODczOGZlZjYyMDQ1
Yzk4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKQEAgLTEzLDcgKzEzLDcgQEAgUHl0aG9u
IDMuICBJdCBpcyBpbnRlbmRlZCB0byBzdXBwb3J0IGNvZGViYXNlcyB0aGF0IHdvcmsgb24gYm90
aCBQeXRob24gMiBhbmQgMwogd2l0aG91dCBtb2RpZmljYXRpb24uICBzaXggY29uc2lzdHMgb2Yg
b25seSBvbmUgUHl0aG9uIGZpbGUsIHNvIGl0IGlzIHBhaW5sZXNzCiB0byBjb3B5IGludG8gYSBw
cm9qZWN0LgogCi1TaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UGkgPGh0dHBzOi8vcHlwaS5w
eXRob24ub3JnL3B5cGkvc2l4Lz5gXy4gIEl0cyBidWcKK1NpeCBjYW4gYmUgZG93bmxvYWRlZCBv
biBgUHlQSSA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3NpeC8+YF8uICBJdHMgYnVnCiB0cmFj
a2VyIGFuZCBjb2RlIGhvc3RpbmcgaXMgb24gYEdpdEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL2Jl
bmphbWlucC9zaXg+YF8uCiAKIFRoZSBuYW1lLCAic2l4IiwgY29tZXMgZnJvbSB0aGUgZmFjdCB0
aGF0IDIqMyBlcXVhbHMgNi4gIFdoeSBub3QgYWRkaXRpb24/CkBAIC01MCw4ICs1MCw5IEBAIFNp
eCBwcm92aWRlcyBjb25zdGFudHMgdGhhdCBtYXkgZGlmZmVyIGJldHdlZW4gUHl0aG9uIHZlcnNp
b25zLiAgT25lcyBlbmRpbmcKIAogLi4gZGF0YTo6IGNsYXNzX3R5cGVzCiAKLSAgIFBvc3NpYmxl
IGNsYXNzIHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgZW5jb21wYXNzZXMgb2xkLXN0eWxlIGFu
ZCBuZXctc3R5bGUKLSAgIGNsYXNzZXMuICBJbiBQeXRob24gMywgdGhpcyBpcyBqdXN0IG5ldy1z
dHlsZXMuCisgICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIEluIFB5dGhvbiAyLCB0aGlzIGVuY29t
cGFzc2VzIG9sZC1zdHlsZQorICAgOmRhdGE6YHB5Mjp0eXBlcy5DbGFzc1R5cGVgIGFuZCBuZXct
c3R5bGUgYGB0eXBlYGAgY2xhc3Nlcy4gIEluIFB5dGhvbiAzLAorICAgdGhpcyBpcyBqdXN0IGBg
dHlwZWBgLgogCiAKIC4uIGRhdGE6OiBpbnRlZ2VyX3R5cGVzCkBAIC03NSw3ICs3Niw5IEBAIFNp
eCBwcm92aWRlcyBjb25zdGFudHMgdGhhdCBtYXkgZGlmZmVyIGJldHdlZW4gUHl0aG9uIHZlcnNp
b25zLiAgT25lcyBlbmRpbmcKIC4uIGRhdGE6OiBiaW5hcnlfdHlwZQogCiAgICBUeXBlIGZvciBy
ZXByZXNlbnRpbmcgYmluYXJ5IGRhdGEuICBUaGlzIGlzIDpmdW5jOmBweTI6c3RyYCBpbiBQeXRo
b24gMiBhbmQKLSAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhvbiAzLgorICAgOmZ1bmM6YHB5
MzpieXRlc2AgaW4gUHl0aG9uIDMuICBQeXRob24gMi42IGFuZCAyLjcgaW5jbHVkZSBgYGJ5dGVz
YGAgYXMgYQorICAgYnVpbHRpbiBhbGlhcyBvZiBgYHN0cmBgLCBzbyBzaXjigJlzIHZlcnNpb24g
aXMgb25seSBuZWNlc3NhcnkgZm9yIFB5dGhvbiAyLjUKKyAgIGNvbXBhdGliaWxpdHkuCiAKIAog
Li4gZGF0YTo6IE1BWFNJWkUKQEAgLTM3MSw3ICszNzQsNyBAQCBzdHJpbmcgZGF0YSBpbiBhbGwg
UHl0aG9uIHZlcnNpb25zLgogLi4gZnVuY3Rpb246OiBiKGRhdGEpCiAKICAgIEEgImZha2UiIGJ5
dGVzIGxpdGVyYWwuICAqZGF0YSogc2hvdWxkIGFsd2F5cyBiZSBhIG5vcm1hbCBzdHJpbmcgbGl0
ZXJhbC4gIEluCi0gICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYSA4LWJpdCBzdHJpbmcu
ICBJbiBQeXRob24gMywgKmRhdGEqIGlzIGVuY29kZWQKKyAgIFB5dGhvbiAyLCA6ZnVuYzpgYmAg
cmV0dXJucyBhbiA4LWJpdCBzdHJpbmcuICBJbiBQeXRob24gMywgKmRhdGEqIGlzIGVuY29kZWQK
ICAgIHdpdGggdGhlIGxhdGluLTEgZW5jb2RpbmcgdG8gYnl0ZXMuCiAKIApAQCAtNDMzLDYgKzQz
NiwyNCBAQCBzdHJpbmcgZGF0YSBpbiBhbGwgUHl0aG9uIHZlcnNpb25zLgogICAgYSBieXRlcyBv
YmplY3QgaXRlcmF0b3IgaW4gUHl0aG9uIDMuCiAKIAorLi4gZnVuY3Rpb246OiBlbnN1cmVfYmlu
YXJ5KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpz
KiB0byA6ZGF0YTpgYmluYXJ5X3R5cGVgLiAqZW5jb2RpbmcqLCAqZXJyb3JzKiBhcmUgdGhlIHNh
bWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCisuLiBmdW5jdGlvbjo6IGVuc3Vy
ZV9zdHIocywgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQorCisgICBDb2VyY2Ug
KnMqIHRvIGBgc3RyYGAuICplbmNvZGluZyosICplcnJvcnMqIGFyZSB0aGUgc2FtZSBhcworICAg
Om1ldGg6YHB5MzpzdHIuZW5jb2RlYAorCisKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX3RleHQocywg
ZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQorCisgICBDb2VyY2UgKnMqIHRvIDpk
YXRhOmB0ZXh0X3R5cGVgLiAqZW5jb2RpbmcqLCAqZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAg
IDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCiAuLiBkYXRhOjogU3RyaW5nSU8KIAogICAgVGhp
cyBpcyBhIGZha2UgZmlsZSBvYmplY3QgZm9yIHRleHR1YWwgZGF0YS4gIEl0J3MgYW4gYWxpYXMg
Zm9yCkBAIC01MDMsNyArNTI0LDcgQEAgUHl0aG9uIDIgb3IgMywgd3JpdGU6OgogICAgZnJvbSBz
aXgubW92ZXMgaW1wb3J0IGh0bWxfcGFyc2VyCiAKIFNpbWlsYXJseSwgdG8gZ2V0IHRoZSBmdW5j
dGlvbiB0byByZWxvYWQgbW9kdWxlcywgd2hpY2ggd2FzIG1vdmVkIGZyb20gdGhlCi1idWlsdGlu
IG1vZHVsZSB0byB0aGUgYGBpbXBgYCBtb2R1bGUsIHVzZTo6CitidWlsdGluIG1vZHVsZSB0byB0
aGUgYGBpbXBvcnRsaWJgYCBtb2R1bGUsIHVzZTo6CiAKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9y
dCByZWxvYWRfbW9kdWxlCiAKQEAgLTU2Myw3ICs1ODQsMTEgQEAgU3VwcG9ydGVkIHJlbmFtZXM6
CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwog
fCBgYGNTdHJpbmdJT2BgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjpjU3RyaW5nSU8uU3Ry
aW5nSU9gICAgICAgfCA6Y2xhc3M6YHB5Mzppby5TdHJpbmdJT2AgICAgICAgICAgICAgIHwKICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBg
ZGJtX2dudWBgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOmdkYm1gICAgICAgICAgICAg
ICAgICAgICB8IDpjbGFzczpgcHkzOmRibS5nbnVgICAgICAgICAgICAgICAgICAgfAorfCBgYGNv
bGxlY3Rpb25zX2FiY2BgICAgICAgICAgIHwgOm1vZDpgcHkyOmNvbGxlY3Rpb25zYCAgICAgICAg
ICAgICAgfCA6bW9kOmBweTM6Y29sbGVjdGlvbnMuYWJjYCAoMy4zKykgICAgIHwKKystLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGJtX2du
dWBgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6Z2RibWAgICAgICAgICAgICAgICAgICAg
ICB8IDptb2Q6YHB5MzpkYm0uZ251YCAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBkYm1fbmRibWBg
ICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkYm1gICAgICAgICAgICAgICAgICAgICAgIHwg
Om1vZDpgcHkzOmRibS5uZGJtYCAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYF9kdW1teV90aHJlYWRg
YCAgICAgICAgICAgIHwgOm1vZDpgcHkyOmR1bW15X3RocmVhZGAgICAgICAgICAgICAgfCA6bW9k
OmBweTM6X2R1bW15X3RocmVhZGAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9z
ZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKaW5kZXggZTEyMDY4YzU3M2M2ZjZlZmQzYTkz
Nzk2ZTZkY2VlYWUxODhiMzVjZC4uMzE3ZTAxNmM4Y2MwNGQwOTdiM2I2OTYzOTcxMDM1N2RlYjFj
OTcyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LmNmZwpAQCAtNSwxNyArNSwxNiBAQCB1bml2ZXJzYWwgPSAxCiBtYXgtbGluZS1sZW5ndGggPSAx
MDAKIGlnbm9yZSA9IEY4MjEKIAotW3Rvb2w6cHl0ZXN0XQotbWludmVyc2lvbiA9IDIuMi4wCi1w
ZXA4aWdub3JlID0gCi0JZG9jdW1lbnRhdGlvbi8qLnB5IEFMTAotCXRlc3Rfc2l4LnB5IEFMTAot
Zmxha2VzLWlnbm9yZSA9IAotCWRvY3VtZW50YXRpb24vKi5weSBBTEwKLQl0ZXN0X3NpeC5weSBB
TEwKLQlzaXgucHkgVW5kZWZpbmVkTmFtZQorW21ldGFkYXRhXQorbGljZW5zZV9maWxlID0gTElD
RU5TRQogCi1bZWdnX2luZm9dCi10YWdfYnVpbGQgPSAKLXRhZ19kYXRlID0gMAorW3Rvb2w6cHl0
ZXN0XQorbWludmVyc2lvbj0yLjIuMAorcGVwOGlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8q
LnB5IEFMTAorICAgIHRlc3Rfc2l4LnB5IEFMTAogCitmbGFrZXMtaWdub3JlID0KKyAgICBkb2N1
bWVudGF0aW9uLyoucHkgQUxMCisgICAgdGVzdF9zaXgucHkgQUxMCisgICAgc2l4LnB5IFVuZGVm
aW5lZE5hbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAu
cHkKaW5kZXggY2E0NGUxMDBlNDI3ZWNmNTQyNGJhY2I4NGQ1ZWI2ZjVjNzEyZjIzMS4uOTdjNjg1
YjVhNTBiZDk3Njk4MDQ4NjFmNGFkN2E4Mzk2MjE1ZDIzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2V0dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHly
aWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykgMjAx
MC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMgb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwKQEAgLTMxLDYgKzMxLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgog
aW1wb3J0IHNpeAogCiBzaXhfY2xhc3NpZmllcnMgPSBbCisgICAgIkRldmVsb3BtZW50IFN0YXR1
cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUiLAogICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6
OiBQeXRob24gOjogMiIsCiAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAz
IiwKICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCkBAIC00NiwxMSArNDcs
MTIgQEAgc2V0dXAobmFtZT0ic2l4IiwKICAgICAgIHZlcnNpb249c2l4Ll9fdmVyc2lvbl9fLAog
ICAgICAgYXV0aG9yPSJCZW5qYW1pbiBQZXRlcnNvbiIsCiAgICAgICBhdXRob3JfZW1haWw9ImJl
bmphbWluQHB5dGhvbi5vcmciLAotICAgICAgdXJsPSJodHRwOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvc2l4LyIsCisgICAgICB1cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4IiwK
ICAgICAgIHRlc3RzX3JlcXVpcmU9WyJweXRlc3QiXSwKICAgICAgIHB5X21vZHVsZXM9WyJzaXgi
XSwKICAgICAgIGRlc2NyaXB0aW9uPSJQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IHV0aWxp
dGllcyIsCiAgICAgICBsb25nX2Rlc2NyaXB0aW9uPXNpeF9sb25nX2Rlc2NyaXB0aW9uLAogICAg
ICAgbGljZW5zZT0iTUlUIiwKLSAgICAgIGNsYXNzaWZpZXJzPXNpeF9jbGFzc2lmaWVycworICAg
ICAgY2xhc3NpZmllcnM9c2l4X2NsYXNzaWZpZXJzLAorICAgICAgcHl0aG9uX3JlcXVpcmVzPSI+
PTIuNiwgIT0zLjAuKiwgIT0zLjEuKiIsCiAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9z
aXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3Qt
aW5mby9JTlNUQUxMRVIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFiNTg5ZTM4YTMyMDQxZTQ5MzMyZTVlODFjMmQz
NjNkYzQxOGQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1p
bmZvL0lOU1RBTExFUgpAQCAtMCwwICsxIEBACitwaXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Np
eC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5m
by9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMDVhNTQ1MjYxYzBmOWIzMWFiZTNlZGVjNzEwNTg3NTg3
YTY1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9M
SUNFTlNFCkBAIC0wLDAgKzEsMTggQEAKK0NvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWlu
IFBldGVyc29uCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKK3RoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGlu
Cit0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzIHRvCit1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZgordGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlz
aGVkIHRvIGRvIHNvLAorc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1Ro
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluIGFsbAorY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNT
CitGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKK0NPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig
QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUgorSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0Yg
T1IgSU4KK0NPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4w
LmRpc3QtaW5mby9NRVRBREFUQSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFE
QVRBCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIwYzhmNTFlMWYzNjYxMzhkMzgxNmFiZTBkZGIzZWZlZTQxNzVjM2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFU
QQpAQCAtMCwwICsxLDUyIEBACitNZXRhZGF0YS1WZXJzaW9uOiAyLjEKK05hbWU6IHNpeAorVmVy
c2lvbjogMS4xMy4wCitTdW1tYXJ5OiBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IHV0aWxp
dGllcworSG9tZS1wYWdlOiBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeAorQXV0aG9y
OiBCZW5qYW1pbiBQZXRlcnNvbgorQXV0aG9yLWVtYWlsOiBiZW5qYW1pbkBweXRob24ub3JnCitM
aWNlbnNlOiBNSVQKK1BsYXRmb3JtOiBVTktOT1dOCitDbGFzc2lmaWVyOiBEZXZlbG9wbWVudCBT
dGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlCitDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMgorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDMKK0NsYXNzaWZpZXI6IEludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3Bl
cnMKK0NsYXNzaWZpZXI6IExpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlCitD
bGFzc2lmaWVyOiBUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMKK0Ns
YXNzaWZpZXI6IFRvcGljIDo6IFV0aWxpdGllcworUmVxdWlyZXMtUHl0aG9uOiA+PTIuNiwgIT0z
LjAuKiwgIT0zLjEuKgorCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92
L3NpeC5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6
YWx0OiBzaXggb24gUHlQSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5q
YW1pbnAvc2l4LnN2Zz9icmFuY2g9bWFzdGVyCisgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1j
aS5vcmcvYmVuamFtaW5wL3NpeAorICAgOmFsdDogc2l4IG9uIFRyYXZpc0NJCisKKy4uIGltYWdl
OjogaHR0cHM6Ly9yZWFkdGhlZG9jcy5vcmcvcHJvamVjdHMvc2l4L2JhZGdlLz92ZXJzaW9uPWxh
dGVzdAorICAgOnRhcmdldDogaHR0cHM6Ly9zaXgucmVhZHRoZWRvY3MuaW8vCisgICA6YWx0OiBz
aXgncyBkb2N1bWVudGF0aW9uIG9uIFJlYWQgdGhlIERvY3MKKworLi4gaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZworICAgOnRhcmdldDog
aHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgvYmxvYi9tYXN0ZXIvTElDRU5TRQorICAg
OmFsdDogTUlUIExpY2Vuc2UgYmFkZ2UKKworU2l4IGlzIGEgUHl0aG9uIDIgYW5kIDMgY29tcGF0
aWJpbGl0eSBsaWJyYXJ5LiAgSXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMKK2ZvciBzbW9v
dGhpbmcgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgUHl0aG9uIHZlcnNpb25zIHdp
dGggdGhlIGdvYWwgb2YKK3dyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIG9u
IGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQorZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBp
bmZvcm1hdGlvbiBvbiB3aGF0IGlzIHByb3ZpZGVkLgorCitTaXggc3VwcG9ydHMgZXZlcnkgUHl0
aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQgaXMgY29udGFpbmVkIGluIG9ubHkgb25lIFB5dGhv
bgorZmlsZSwgc28gaXQgY2FuIGJlIGVhc2lseSBjb3BpZWQgaW50byB5b3VyIHByb2plY3QuIChU
aGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlCitub3RpY2UgbXVzdCBiZSByZXRhaW5lZC4pCisKK09u
bGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHBzOi8vc2l4LnJlYWR0aGVkb2NzLmlvLy4KKwor
QnVncyBjYW4gYmUgcmVwb3J0ZWQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgu
ICBUaGUgY29kZSBjYW4gYWxzbworYmUgZm91bmQgdGhlcmUuCisKK0ZvciBxdWVzdGlvbnMgYWJv
dXQgc2l4IG9yIHBvcnRpbmcgaW4gZ2VuZXJhbCwgZW1haWwgdGhlIHB5dGhvbi1wb3J0aW5nIG1h
aWxpbmcKK2xpc3Q6IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0
aG9uLXBvcnRpbmcKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5m
by9SRUNPUkQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTU3NjY1Yzk5NjQyNTVkMTcwMmYwMTZjOGJkMTFkYWVkZTUxNjZlZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1JFQ09SRApAQCAtMCwwICsxLDgg
QEAKK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lOU1RBTExFUixzaGEyNTY9enV1dWU0a25veUotVXdQ
UFhnOGZlelM3VkNyWEpRckFQN3plTnV3dkZRZyw0DQorc2l4LTEuMTMuMC5kaXN0LWluZm8vTElD
RU5TRSxzaGEyNTY9dDFLYmpBY1hHbmlvdzJ3eWc1QlZLT1NCS1VYWmQ5RWw2NUp1ak12eVJiWSwx
MDY2DQorc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEsc2hhMjU2PWh4UzRyU1BSZk84ZXdi
Y0xTMzBhbm9GaTZMRmdVUTNta194a25aOFJWNHcsMTk0MA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZv
L1JFQ09SRCwsDQorc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwsc2hhMjU2PThUOGZ4ZWZyX3It
QTc5cWJPSjlkX0FhRWdrcENHbUVQSGMtZ3BDcTVCUmcsMTEwDQorc2l4LTEuMTMuMC5kaXN0LWlu
Zm8vdG9wX2xldmVsLnR4dCxzaGEyNTY9X2lWSF9pWUV0RVhuRDhuWUdRWXBZRlV2a1VXOXNFTzFH
WWJrZUtTQWFpcyw0DQorc2l4LnB5LHNoYTI1Nj1vOVdITzh1dFdHYXlOaE5xRG1OcVBkUXNRYWly
NVJhUldqTF84SVlmMXF3LDMzMDUxDQorc2l4LnB5YywsDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5m
by9XSEVFTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMDAxMjM1NTMzM2UwNjY0ZmFjMzEyMzhhYTA0MjE2ZmY1MzYy
MjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hF
RUwKQEAgLTAsMCArMSw2IEBACitXaGVlbC1WZXJzaW9uOiAxLjAKK0dlbmVyYXRvcjogYmRpc3Rf
d2hlZWwgKDAuMzIuMSkKK1Jvb3QtSXMtUHVyZWxpYjogdHJ1ZQorVGFnOiBweTItbm9uZS1hbnkK
K1RhZzogcHkzLW5vbmUtYW55CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL3RvcF9sZXZlbC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3Bf
bGV2ZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZTJmY2U0OTg5NTViNjI4MDE0NjE4YjI4YzZiY2YxNTI0
NjZhNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90
b3BfbGV2ZWwudHh0CkBAIC0wLDAgKzEgQEAKK3NpeApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4
LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRp
c3QtaW5mby93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWUxZDIyY2I4NjMwY2NkMjBjMjAz
ZDYzODlhNWFlNjI1MDBhZjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMiBAQAorVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitE
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vTElDRU5TRQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFE
QVRBCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JECisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4
LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90
b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgu
cHkKaW5kZXggNmJmNGZkMzgxMDQ2MjA3YTQ3OTRhZWUxN2JlNmQyMmRiMjM3ZjMwYS4uZDBhZWNl
ODlmYTRhYWU5NDhkNzVlOGVmMjI3N2NlMjQ5NTFlYmIyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChjKSAyMDEwLTIwMTcgQmVuamFtaW4gUGV0ZXJzb24KKyMgQ29weXJpZ2h0IChjKSAyMDEwLTIw
MTkgQmVuamFtaW4gUGV0ZXJzb24KICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogIyBvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbApAQCAtMjksNyArMjksNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMK
IAogX19hdXRob3JfXyA9ICJCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4i
Ci1fX3ZlcnNpb25fXyA9ICIxLjExLjAiCitfX3ZlcnNpb25fXyA9ICIxLjEzLjAiCiAKIAogIyBV
c2VmdWwgZm9yIHZlcnkgY29hcnNlIHZlcnNpb24gZGlmZmVyZW50aWF0aW9uLgpAQCAtMjU1LDgg
KzI1NSwxMCBAQCBfbW92ZWRfYXR0cmlidXRlcyA9IFsKICAgICBNb3ZlZEF0dHJpYnV0ZSgiemlw
X2xvbmdlc3QiLCAiaXRlcnRvb2xzIiwgIml0ZXJ0b29scyIsICJpemlwX2xvbmdlc3QiLCAiemlw
X2xvbmdlc3QiKSwKICAgICBNb3ZlZE1vZHVsZSgiYnVpbHRpbnMiLCAiX19idWlsdGluX18iKSwK
ICAgICBNb3ZlZE1vZHVsZSgiY29uZmlncGFyc2VyIiwgIkNvbmZpZ1BhcnNlciIpLAorICAgIE1v
dmVkTW9kdWxlKCJjb2xsZWN0aW9uc19hYmMiLCAiY29sbGVjdGlvbnMiLCAiY29sbGVjdGlvbnMu
YWJjIiBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAzKSBlbHNlICJjb2xsZWN0aW9ucyIpLAog
ICAgIE1vdmVkTW9kdWxlKCJjb3B5cmVnIiwgImNvcHlfcmVnIiksCiAgICAgTW92ZWRNb2R1bGUo
ImRibV9nbnUiLCAiZ2RibSIsICJkYm0uZ251IiksCisgICAgTW92ZWRNb2R1bGUoImRibV9uZGJt
IiwgImRibSIsICJkYm0ubmRibSIpLAogICAgIE1vdmVkTW9kdWxlKCJfZHVtbXlfdGhyZWFkIiwg
ImR1bW15X3RocmVhZCIsICJfZHVtbXlfdGhyZWFkIiksCiAgICAgTW92ZWRNb2R1bGUoImh0dHBf
Y29va2llamFyIiwgImNvb2tpZWxpYiIsICJodHRwLmNvb2tpZWphciIpLAogICAgIE1vdmVkTW9k
dWxlKCJodHRwX2Nvb2tpZXMiLCAiQ29va2llIiwgImh0dHAuY29va2llcyIpLApAQCAtNjM3LDYg
KzYzOSw3IEBAIGlmIFBZMzoKICAgICBpbXBvcnQgaW8KICAgICBTdHJpbmdJTyA9IGlvLlN0cmlu
Z0lPCiAgICAgQnl0ZXNJTyA9IGlvLkJ5dGVzSU8KKyAgICBkZWwgaW8KICAgICBfYXNzZXJ0Q291
bnRFcXVhbCA9ICJhc3NlcnRDb3VudEVxdWFsIgogICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMV0g
PD0gMToKICAgICAgICAgX2Fzc2VydFJhaXNlc1JlZ2V4ID0gImFzc2VydFJhaXNlc1JlZ2V4cCIK
QEAgLTgyNCw3ICs4MjcsMTUgQEAgZGVmIHdpdGhfbWV0YWNsYXNzKG1ldGEsICpiYXNlcyk6CiAg
ICAgY2xhc3MgbWV0YWNsYXNzKHR5cGUpOgogCiAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFt
ZSwgdGhpc19iYXNlcywgZCk6Ci0gICAgICAgICAgICByZXR1cm4gbWV0YShuYW1lLCBiYXNlcywg
ZCkKKyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA3KToKKyAgICAg
ICAgICAgICAgICAjIFRoaXMgdmVyc2lvbiBpbnRyb2R1Y2VkIFBFUCA1NjAgdGhhdCByZXF1aXJl
cyBhIGJpdAorICAgICAgICAgICAgICAgICMgb2YgZXh0cmEgY2FyZSAod2UgbWltaWMgd2hhdCBp
cyBkb25lIGJ5IF9fYnVpbGRfY2xhc3NfXykuCisgICAgICAgICAgICAgICAgcmVzb2x2ZWRfYmFz
ZXMgPSB0eXBlcy5yZXNvbHZlX2Jhc2VzKGJhc2VzKQorICAgICAgICAgICAgICAgIGlmIHJlc29s
dmVkX2Jhc2VzIGlzIG5vdCBiYXNlczoKKyAgICAgICAgICAgICAgICAgICAgZFsnX19vcmlnX2Jh
c2VzX18nXSA9IGJhc2VzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc29s
dmVkX2Jhc2VzID0gYmFzZXMKKyAgICAgICAgICAgIHJldHVybiBtZXRhKG5hbWUsIHJlc29sdmVk
X2Jhc2VzLCBkKQogCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgX19wcmVwYXJl
X18oY2xzLCBuYW1lLCB0aGlzX2Jhc2VzKToKQEAgLTg0NCwxMyArODU1LDc0IEBAIGRlZiBhZGRf
bWV0YWNsYXNzKG1ldGFjbGFzcyk6CiAgICAgICAgICAgICAgICAgb3JpZ192YXJzLnBvcChzbG90
c192YXIpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19fZGljdF9fJywgTm9uZSkKICAgICAgICAg
b3JpZ192YXJzLnBvcCgnX193ZWFrcmVmX18nLCBOb25lKQorICAgICAgICBpZiBoYXNhdHRyKGNs
cywgJ19fcXVhbG5hbWVfXycpOgorICAgICAgICAgICAgb3JpZ192YXJzWydfX3F1YWxuYW1lX18n
XSA9IGNscy5fX3F1YWxuYW1lX18KICAgICAgICAgcmV0dXJuIG1ldGFjbGFzcyhjbHMuX19uYW1l
X18sIGNscy5fX2Jhc2VzX18sIG9yaWdfdmFycykKICAgICByZXR1cm4gd3JhcHBlcgogCiAKK2Rl
ZiBlbnN1cmVfYmluYXJ5KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Cisg
ICAgIiIiQ29lcmNlICoqcyoqIHRvIHNpeC5iaW5hcnlfdHlwZS4KKworICAgIEZvciBQeXRob24g
MjoKKyAgICAgIC0gYHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAg
LT4gYHN0cmAKKworICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gZW5jb2RlZCB0
byBgYnl0ZXNgCisgICAgICAtIGBieXRlc2AgLT4gYGJ5dGVzYAorICAgICIiIgorICAgIGlmIGlz
aW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZW5jb2RlKGVuY29kaW5n
LCBlcnJvcnMpCisgICAgZWxpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAgICAgICAg
cmV0dXJuIHMKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vdCBleHBlY3Rp
bmcgdHlwZSAnJXMnIiAlIHR5cGUocykpCisKKworZGVmIGVuc3VyZV9zdHIocywgZW5jb2Rpbmc9
J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKToKKyAgICAiIiJDb2VyY2UgKnMqIHRvIGBzdHJgLgor
CisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBgdW5pY29kZWAgLT4gZW5jb2RlZCB0byBgc3Ry
YAorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorCisgICAgRm9yIFB5dGhvbiAzOgorICAgICAgLSBg
c3RyYCAtPiBgc3RyYAorICAgICAgLSBgYnl0ZXNgIC0+IGRlY29kZWQgdG8gYHN0cmAKKyAgICAi
IiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAodGV4dF90eXBlLCBiaW5hcnlfdHlwZSkpOgor
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vdCBleHBlY3RpbmcgdHlwZSAnJXMnIiAlIHR5cGUo
cykpCisgICAgaWYgUFkyIGFuZCBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHMg
PSBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVsaWYgUFkzIGFuZCBpc2luc3RhbmNl
KHMsIGJpbmFyeV90eXBlKToKKyAgICAgICAgcyA9IHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMp
CisgICAgcmV0dXJuIHMKKworCitkZWYgZW5zdXJlX3RleHQocywgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKToKKyAgICAiIiJDb2VyY2UgKnMqIHRvIHNpeC50ZXh0X3R5cGUuCisK
KyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmljb2RlYCAtPiBgdW5pY29kZWAKKyAgICAg
IC0gYHN0cmAgLT4gYHVuaWNvZGVgCisKKyAgICBGb3IgUHl0aG9uIDM6CisgICAgICAtIGBzdHJg
IC0+IGBzdHJgCisgICAgICAtIGBieXRlc2AgLT4gZGVjb2RlZCB0byBgc3RyYAorICAgICIiIgor
ICAgIGlmIGlzaW5zdGFuY2UocywgYmluYXJ5X3R5cGUpOgorICAgICAgICByZXR1cm4gcy5kZWNv
ZGUoZW5jb2RpbmcsIGVycm9ycykKKyAgICBlbGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToK
KyAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5v
dCBleHBlY3RpbmcgdHlwZSAnJXMnIiAlIHR5cGUocykpCisKKworCiBkZWYgcHl0aG9uXzJfdW5p
Y29kZV9jb21wYXRpYmxlKGtsYXNzKToKICAgICAiIiIKLSAgICBBIGRlY29yYXRvciB0aGF0IGRl
ZmluZXMgX191bmljb2RlX18gYW5kIF9fc3RyX18gbWV0aG9kcyB1bmRlciBQeXRob24gMi4KKyAg
ICBBIGNsYXNzIGRlY29yYXRvciB0aGF0IGRlZmluZXMgX191bmljb2RlX18gYW5kIF9fc3RyX18g
bWV0aG9kcyB1bmRlciBQeXRob24gMi4KICAgICBVbmRlciBQeXRob24gMyBpdCBkb2VzIG5vdGhp
bmcuCiAKICAgICBUbyBzdXBwb3J0IFB5dGhvbiAyIGFuZCAzIHdpdGggYSBzaW5nbGUgY29kZSBi
YXNlLCBkZWZpbmUgYSBfX3N0cl9fIG1ldGhvZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9z
aXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC90ZXN0X3NpeC5weQppbmRleCA0M2U3NDI2ZGVhMTI0MWJiZDM3MWQy
ZjI0ZjYzZjUxMDQyN2E1MTlmLi4zZWVmY2UzN2MzMjhkN2IxNWIyM2VlODNkZDg5OGM0YjNlNTc2
MzNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC90ZXN0X3NpeC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC90ZXN0
X3NpeC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTcgQmVuamFt
aW4gUGV0ZXJzb24KKyMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJzb24K
ICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbApAQCAtMjIs
OCArMjIsOSBAQCBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1w
b3J0IHVuaXR0ZXN0CitpbXBvcnQgYWJjCiAKLWltcG9ydCBweQoraW1wb3J0IHB5dGVzdAogCiBp
bXBvcnQgc2l4CiAKQEAgLTgwLDcgKzgxLDcgQEAgZGVmIHRlc3RfTUFYU0laRSgpOgogICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgIyBCZWZvcmUgUHl0aG9uIDIuNi4KICAgICAg
ICAgcGFzcwotICAgIHB5LnRlc3QucmFpc2VzKAorICAgIHB5dGVzdC5yYWlzZXMoCiAgICAgICAg
IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKSwKICAgICAgICAgb3BlcmF0b3IubXVsLCBbTm9u
ZV0sIHNpeC5NQVhTSVpFICsgMSkKIApAQCAtMTEyLDcgKzExMyw3IEBAIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIGhhdmVfZ2RibSA9IEZhbHNl
CiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVt
Lm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll9tb3ZlZF9hdHRyaWJ1dGVzXSkKIGRlZiB0ZXN0X21vdmVf
aXRlbXMoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNv
cnJlY3RseS4iIiIKQEAgLTEyMiwzNiArMTIzLDM2IEBAIGRlZiB0ZXN0X21vdmVfaXRlbXMoaXRl
bV9uYW1lKToKICAgICAgICAgICAgIF9faW1wb3J0X18oInNpeC5tb3Zlcy4iICsgaXRlbV9uYW1l
KQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ6
aXBfbG9uZ2VzdCIgYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMiwgNik6Ci0gICAgICAgICAgICBw
eS50ZXN0LnNraXAoInppcF9sb25nZXN0IG9ubHkgYXZhaWxhYmxlIG9uIDIuNisiKQorICAgICAg
ICAgICAgcHl0ZXN0LnNraXAoInppcF9sb25nZXN0IG9ubHkgYXZhaWxhYmxlIG9uIDIuNisiKQog
ICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ3aW5yZWci
IGFuZCBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpOgotICAgICAgICAgICAgcHku
dGVzdC5za2lwKCJXaW5kb3dzIG9ubHkgbW9kdWxlIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJXaW5kb3dzIG9ubHkgbW9kdWxlIikKICAgICAgICAgaWYgaXRlbV9uYW1lLnN0YXJ0c3dpdGgo
InRraW50ZXIiKToKICAgICAgICAgICAgIGlmIG5vdCBoYXZlX3RraW50ZXI6Ci0gICAgICAgICAg
ICAgICAgcHkudGVzdC5za2lwKCJyZXF1aXJlcyB0a2ludGVyIikKKyAgICAgICAgICAgICAgICBw
eXRlc3Quc2tpcCgicmVxdWlyZXMgdGtpbnRlciIpCiAgICAgICAgICAgICBpZiBpdGVtX25hbWUg
PT0gInRraW50ZXJfdHRrIiBhbmQgc3lzLnZlcnNpb25faW5mb1s6Ml0gPD0gKDIsIDYpOgotICAg
ICAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgidHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQor
ICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ0dGsgb25seSBhdmFpbGFibGUgb24gMi43KyIp
CiAgICAgICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJkYm1fZ251IikgYW5kIG5vdCBoYXZl
X2dkYm06Ci0gICAgICAgICAgICBweS50ZXN0LnNraXAoInJlcXVpcmVzIGdkYm0iKQorICAgICAg
ICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIGdkYm0iKQogICAgICAgICByYWlzZQogICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNzZXJ0IGl0ZW1fbmFt
ZSBpbiBkaXIoc2l4Lm1vdmVzKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1f
bmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcGFyc2Vf
bW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9wYXJzZShpdGVt
X25hbWUpOgogICAgICIiIkVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIi
IgogICAgIGlmIGl0ZW1fbmFtZSA9PSAiUGFyc2VSZXN1bHQiIGFuZCBzeXMudmVyc2lvbl9pbmZv
IDwgKDIsIDUpOgotICAgICAgICBweS50ZXN0LnNraXAoIlBhcnNlUmVzdWx0IGlzIG9ubHkgZm91
bmQgb24gMi41KyIpCisgICAgICAgIHB5dGVzdC5za2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZv
dW5kIG9uIDIuNSsiKQogICAgIGlmIGl0ZW1fbmFtZSBpbiAoInBhcnNlX3FzIiwgInBhcnNlX3Fz
bCIpIGFuZCBzeXMudmVyc2lvbl9pbmZvIDwgKDIsIDYpOgotICAgICAgICBweS50ZXN0LnNraXAo
InBhcnNlX3FzW2xdIGlzIG5ldyBpbiAyLjYiKQorICAgICAgICBweXRlc3Quc2tpcCgicGFyc2Vf
cXNbbF0gaXMgbmV3IGluIDIuNiIpCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIs
IDYpOgogICAgICAgICBhc3NlcnQgaXRlbV9uYW1lIGluIGRpcihzaXgubW92ZXMudXJsbGliLnBh
cnNlKQogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSwgaXRlbV9uYW1lKQogCiAK
LUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtLm5h
bWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfZXJyb3JfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYg
dGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9lcnJvcihpdGVtX25hbWUpOgogICAgICIiIkVuc3VyZSB0
aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMTYwLDcgKzE2MSw3IEBAIGRl
ZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX2Vycm9yKGl0ZW1fbmFtZSk6CiAgICAgZ2V0YXR0cihz
aXgubW92ZXMudXJsbGliLmVycm9yLCBpdGVtX25hbWUpCiAKIAotQHB5LnRlc3QubWFyay5wYXJh
bWV0cml6ZSgiaXRlbV9uYW1lIiwKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1l
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0ubmFtZSBmb3IgaXRlbSBpbiBzaXgu
X3VybGxpYl9yZXF1ZXN0X21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191
cmxsaWJfcmVxdWVzdChpdGVtX25hbWUpOgogICAgICIiIkVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcg
bG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMTY5LDcgKzE3MCw3IEBAIGRlZiB0ZXN0X21vdmVfaXRl
bXNfdXJsbGliX3JlcXVlc3QoaXRlbV9uYW1lKToKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51cmxs
aWIucmVxdWVzdCwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0
ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVz
cG9uc2VfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNw
b25zZShpdGVtX25hbWUpOgogICAgICIiIkVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29y
cmVjdGx5LiIiIgpAQCAtMTc4LDcgKzE3OSw3IEBAIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGli
X3Jlc3BvbnNlKGl0ZW1fbmFtZSk6CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlc3Bv
bnNlLCBpdGVtX25hbWUpCiAKIAotQHB5LnRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1l
IiwKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW2l0ZW0ubmFtZSBmb3IgaXRlbSBpbiBzaXguX3VybGxpYl9yb2JvdHBhcnNl
cl9tb3ZlZF9hdHRyaWJ1dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JvYm90cGFy
c2VyKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5zdXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3Jy
ZWN0bHkuIiIiCkBAIC0yNDMsNyArMjQ0LDcgQEAgZGVmIHRlc3RfemlwKCk6CiAgICAgYXNzZXJ0
IHNpeC5hZHZhbmNlX2l0ZXJhdG9yKHppcChyYW5nZSgyKSwgcmFuZ2UoMikpKSA9PSAoMCwgMCkK
IAogCi1AcHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mbyA8ICgyLCA2KSIpCitA
cHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvIDwgKDIsIDYpIikKIGRlZiB0ZXN0
X3ppcF9sb25nZXN0KCk6CiAgICAgZnJvbSBzaXgubW92ZXMgaW1wb3J0IHppcF9sb25nZXN0CiAg
ICAgaXQgPSB6aXBfbG9uZ2VzdChyYW5nZSgyKSwgcmFuZ2UoMSkpCkBAIC0zMjEsNyArMzIyLDcg
QEAgY2xhc3MgVGVzdEN1c3RvbWl6ZWRNb3ZlczoKIAogCiAgICAgZGVmIHRlc3RfZW1wdHlfcmVt
b3ZlKHNlbGYpOgotICAgICAgICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LnJl
bW92ZV9tb3ZlLCAiZWdncyIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3Is
IHNpeC5yZW1vdmVfbW92ZSwgImVnZ3MiKQogCiAKIGRlZiB0ZXN0X2dldF91bmJvdW5kX2Z1bmN0
aW9uKCk6CkBAIC0zMzcsNyArMzM4LDcgQEAgZGVmIHRlc3RfZ2V0X21ldGhvZF9zZWxmKCk6CiAg
ICAgICAgICAgICBwYXNzCiAgICAgeCA9IFgoKQogICAgIGFzc2VydCBzaXguZ2V0X21ldGhvZF9z
ZWxmKHgubSkgaXMgeAotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXguZ2V0
X21ldGhvZF9zZWxmLCA0MikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgu
Z2V0X21ldGhvZF9zZWxmLCA0MikKIAogCiBkZWYgdGVzdF9nZXRfbWV0aG9kX2Z1bmN0aW9uKCk6
CkBAIC0zNDYsNyArMzQ3LDcgQEAgZGVmIHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgogICAg
ICAgICAgICAgcGFzcwogICAgIHggPSBYKCkKICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2RfZnVu
Y3Rpb24oeC5tKSBpcyBYLl9fZGljdF9fWyJtIl0KLSAgICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2l4LmdldF9tZXRob2RfZnVuY3Rpb24sIGhhc2F0dHIpCisgICAgcHl0ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2RfZnVuY3Rpb24sIGhhc2F0dHIpCiAK
IAogZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2Nsb3N1cmUoKToKQEAgLTM2NCw3ICszNjUsNyBAQCBk
ZWYgdGVzdF9nZXRfZnVuY3Rpb25fY29kZSgpOgogICAgICAgICBwYXNzCiAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uoc2l4LmdldF9mdW5jdGlvbl9jb2RlKGYpLCB0eXBlcy5Db2RlVHlwZSkKICAgICBp
ZiBub3QgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgotICAgICAgICBweS50ZXN0
LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQor
ICAgICAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXguZ2V0X2Z1bmN0aW9uX2Nv
ZGUsIGhhc2F0dHIpCiAKIAogZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2RlZmF1bHRzKCk6CkBAIC00
MDQsNyArNDA1LDcgQEAgZGVmIHRlc3RfZGljdGlvbmFyeV9pdGVyYXRvcnMobW9ua2V5cGF0Y2gp
OgogICAgICAgICBpdCA9IG1ldGgoZCkKICAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGl0
LCBsaXN0KQogICAgICAgICBhc3NlcnQgbGlzdChpdCkgPT0gbGlzdChnZXRhdHRyKGQsIG5hbWUp
KCkpCi0gICAgICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5hZHZhbmNlX2l0
ZXJhdG9yLCBpdCkKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaXguYWR2
YW5jZV9pdGVyYXRvciwgaXQpCiAgICAgICAgIHJlY29yZCA9IFtdCiAgICAgICAgIGRlZiB3aXRo
X2t3KCphcmdzLCAqKmt3KToKICAgICAgICAgICAgIHJlY29yZC5hcHBlbmQoa3dbImt3Il0pCkBA
IC00MTYsMTcgKzQxNyw5IEBAIGRlZiB0ZXN0X2RpY3Rpb25hcnlfaXRlcmF0b3JzKG1vbmtleXBh
dGNoKToKICAgICAgICAgbW9ua2V5cGF0Y2gudW5kbygpCiAKIAotQHB5LnRlc3QubWFyay5za2lw
aWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIiwKK0BweXRlc3QubWFyay5za2lwaWYo
InN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIiwKICAgICAgICAgICAgICAgICByZWFzb249
InZpZXcgbWV0aG9kcyBvbiBkaWN0aW9uYXJpZXMgb25seSBhdmFpbGFibGUgb24gMi43KyIpCiBk
ZWYgdGVzdF9kaWN0aW9uYXJ5X3ZpZXdzKCk6Ci0gICAgZGVmIHN0b2NrX21ldGhvZF9uYW1lKHZp
ZXd3aGF0KToKLSAgICAgICAgIiIiR2l2ZW4gYSBtZXRob2Qgc3VmZml4IGxpa2UgImtleXMiIG9y
ICJ2YWx1ZXMiLCByZXR1cm4gdGhlIG5hbWUKLSAgICAgICAgb2YgdGhlIGRpY3QgbWV0aG9kIHRo
YXQgZGVsaXZlcnMgdGhvc2Ugb24gdGhlIHZlcnNpb24gb2YgUHl0aG9uCi0gICAgICAgIHdlJ3Jl
IHJ1bm5pbmcgaW4uIiIiCi0gICAgICAgIGlmIHNpeC5QWTM6Ci0gICAgICAgICAgICByZXR1cm4g
dmlld3doYXQKLSAgICAgICAgcmV0dXJuICd2aWV3JyArIHZpZXd3aGF0Ci0KICAgICBkID0gZGlj
dCh6aXAocmFuZ2UoMTApLCAocmFuZ2UoMTEsIDIwKSkpKQogICAgIGZvciBuYW1lIGluICJrZXlz
IiwgInZhbHVlcyIsICJpdGVtcyI6CiAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNpeCwgInZpZXci
ICsgbmFtZSkKQEAgLTQ0MCw4ICs0MzMsOCBAQCBkZWYgdGVzdF9hZHZhbmNlX2l0ZXJhdG9yKCk6
CiAgICAgaXQgPSBpdGVyKGwpCiAgICAgYXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSAxCiAgICAgYXNz
ZXJ0IHNpeC5uZXh0KGl0KSA9PSAyCi0gICAgcHkudGVzdC5yYWlzZXMoU3RvcEl0ZXJhdGlvbiwg
c2l4Lm5leHQsIGl0KQotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0
LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAg
ICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVz
dF9pdGVyYXRvcigpOgpAQCAtNDg5LDcgKzQ4Miw3IEBAIGRlZiB0ZXN0X2NyZWF0ZV91bmJvdW5k
X21ldGhvZCgpOgogICAgIGRlZiBmKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogICAgIHUg
PSBzaXguY3JlYXRlX3VuYm91bmRfbWV0aG9kKGYsIFgpCi0gICAgcHkudGVzdC5yYWlzZXMoVHlw
ZUVycm9yLCB1KQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCB1KQogICAgIGlmIHNpeC5Q
WTI6CiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHUsIHR5cGVzLk1ldGhvZFR5cGUpCiAgICAg
eCA9IFgoKQpAQCAtNTM3LDEzICs1MzAsMTMgQEAgZGVmIHRlc3RfdW5pY2hyKCk6CiAKIGRlZiB0
ZXN0X2ludDJieXRlKCk6CiAgICAgYXNzZXJ0IHNpeC5pbnQyYnl0ZSgzKSA9PSBzaXguYigiXHgw
MyIpCi0gICAgcHkudGVzdC5yYWlzZXMoRXhjZXB0aW9uLCBzaXguaW50MmJ5dGUsIDI1NikKKyAg
ICBweXRlc3QucmFpc2VzKEV4Y2VwdGlvbiwgc2l4LmludDJieXRlLCAyNTYpCiAKIAogZGVmIHRl
c3RfYnl0ZTJpbnQoKToKICAgICBhc3NlcnQgc2l4LmJ5dGUyaW50KHNpeC5iKCJceDAzIikpID09
IDMKICAgICBhc3NlcnQgc2l4LmJ5dGUyaW50KHNpeC5iKCJceDAzXHgwNCIpKSA9PSAzCi0gICAg
cHkudGVzdC5yYWlzZXMoSW5kZXhFcnJvciwgc2l4LmJ5dGUyaW50LCBzaXguYigiIikpCisgICAg
cHl0ZXN0LnJhaXNlcyhJbmRleEVycm9yLCBzaXguYnl0ZTJpbnQsIHNpeC5iKCIiKSkKIAogCiBk
ZWYgdGVzdF9ieXRlc2luZGV4KCk6CkBAIC01NTQsNyArNTQ3LDcgQEAgZGVmIHRlc3RfYnl0ZXNp
dGVyKCk6CiAgICAgaXQgPSBzaXguaXRlcmJ5dGVzKHNpeC5iKCJoaSIpKQogICAgIGFzc2VydCBz
aXgubmV4dChpdCkgPT0gb3JkKCJoIikKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9yZCgi
aSIpCi0gICAgcHkudGVzdC5yYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4Lm5leHQsIGl0KQorICAg
IHB5dGVzdC5yYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4Lm5leHQsIGl0KQogCiAKIGRlZiB0ZXN0
X1N0cmluZ0lPKCk6CkBAIC02ODksNyArNjgyLDcgQEAgZGVmIHRlc3RfcHJpbnRfKCk6CiAgICAg
YXNzZXJ0IG91dC5mbHVzaGVkCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9u
X2luZm9bOjJdID49ICgyLCA2KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9p
bmZvWzoyXSA+PSAoMiwgNikiKQogZGVmIHRlc3RfcHJpbnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gp
OgogICAgICMgRm9vbCB0aGUgdHlwZSBjaGVja2luZyBpbiBwcmludF8uCiAgICAgbW9ua2V5cGF0
Y2guc2V0YXR0cihzaXgsICJmaWxlIiwgc2l4LkJ5dGVzSU8sIHJhaXNpbmc9RmFsc2UpCkBAIC03
MDEsMTYgKzY5NCwxNiBAQCBkZWYgdGVzdF9wcmludF9lbmNvZGluZyhtb25rZXlwYXRjaCk6CiAg
ICAgb3V0ID0gc2l4LkJ5dGVzSU8oKQogICAgIG91dC5lbmNvZGluZyA9ICJhc2NpaSIKICAgICBv
dXQuZXJyb3JzID0gInN0cmljdCIKLSAgICBweS50ZXN0LnJhaXNlcyhVbmljb2RlRW5jb2RlRXJy
b3IsIHNpeC5wcmludF8sIHNpeC51KCJcdTA1M2MiKSwgZmlsZT1vdXQpCisgICAgcHl0ZXN0LnJh
aXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNpeC5wcmludF8sIHNpeC51KCJcdTA1M2MiKSwgZmls
ZT1vdXQpCiAgICAgb3V0LmVycm9ycyA9ICJiYWNrc2xhc2hyZXBsYWNlIgogICAgIHNpeC5wcmlu
dF8oc2l4LnUoIlx1MDUzYyIpLCBlbmQ9IiIsIGZpbGU9b3V0KQogICAgIGFzc2VydCBvdXQuZ2V0
dmFsdWUoKSA9PSBzaXguYigiXFx1MDUzYyIpCiAKIAogZGVmIHRlc3RfcHJpbnRfZXhjZXB0aW9u
cygpOgotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50XywgeD0zKQotICAg
IHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50XywgZW5kPTMpCi0gICAgcHkudGVz
dC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCisgICAgcHl0ZXN0LnJhaXNl
cyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIHg9MykKKyAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJv
ciwgc2l4LnByaW50XywgZW5kPTMpCisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5w
cmludF8sIHNlcD00MikKIAogCiBkZWYgdGVzdF93aXRoX21ldGFjbGFzcygpOgpAQCAtNzQ0LDcg
KzczNyw1NCBAQCBkZWYgdGVzdF93aXRoX21ldGFjbGFzcygpOgogICAgIGFzc2VydCBZLl9fbXJv
X18gPT0gKFksIFgsIG9iamVjdCkKIAogCi1AcHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNp
b25faW5mb1s6Ml0gPCAoMywgMCkiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25f
aW5mb1s6Ml0gPCAoMiwgNykiKQorZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3NfdHlwaW5nKCk6Cisg
ICAgdHJ5OgorICAgICAgICBpbXBvcnQgdHlwaW5nCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgor
ICAgICAgICBweXRlc3Quc2tpcCgidHlwaW5nIG1vZHVsZSByZXF1aXJlZCIpCisgICAgY2xhc3Mg
TWV0YSh0eXBlKToKKyAgICAgICAgcGFzcworICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwg
KDMsIDcpOgorICAgICAgICAjIEdlbmVyaWNzIHdpdGggY3VzdG9tIG1ldGFjbGFzc2VzIHdlcmUg
YnJva2VuIG9uIG9sZGVyIHZlcnNpb25zLgorICAgICAgICBjbGFzcyBNZXRhKE1ldGEsIHR5cGlu
Zy5HZW5lcmljTWV0YSk6CisgICAgICAgICAgICBwYXNzCisgICAgVCA9IHR5cGluZy5UeXBlVmFy
KCdUJykKKyAgICBjbGFzcyBHKHNpeC53aXRoX21ldGFjbGFzcyhNZXRhLCB0eXBpbmcuR2VuZXJp
Y1tUXSkpOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgR0Eoc2l4LndpdGhfbWV0YWNsYXNzKGFi
Yy5BQkNNZXRhLCB0eXBpbmcuR2VuZXJpY1tUXSkpOgorICAgICAgICBwYXNzCisgICAgYXNzZXJ0
IGlzaW5zdGFuY2UoRywgTWV0YSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShHQSwgYWJjLkFCQ01l
dGEpCisgICAgYXNzZXJ0IEdbaW50XSBpcyBub3QgR1tHW2ludF1dCisgICAgYXNzZXJ0IEdBW2lu
dF0gaXMgbm90IEdBW0dBW2ludF1dCisgICAgYXNzZXJ0IEcuX19iYXNlc19fID09ICh0eXBpbmcu
R2VuZXJpYywpCisgICAgYXNzZXJ0IEcuX19vcmlnX2Jhc2VzX18gPT0gKHR5cGluZy5HZW5lcmlj
W1RdLCkKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgz
LCA3KSIpCitkZWYgdGVzdF93aXRoX21ldGFjbGFzc19wZXBfNTYwKCk6CisgICAgY2xhc3MgTWV0
YSh0eXBlKToKKyAgICAgICAgcGFzcworICAgIGNsYXNzIEE6CisgICAgICAgIHBhc3MKKyAgICBj
bGFzcyBCOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgRmFrZToKKyAgICAgICAgZGVmIF9fbXJv
X2VudHJpZXNfXyhzZWxmLCBiYXNlcyk6CisgICAgICAgICAgICByZXR1cm4gKEEsIEIpCisgICAg
ZmFrZSA9IEZha2UoKQorICAgIGNsYXNzIEcoc2l4LndpdGhfbWV0YWNsYXNzKE1ldGEsIGZha2Up
KToKKyAgICAgICAgcGFzcworICAgIGNsYXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJD
TWV0YSwgZmFrZSkpOgorICAgICAgICBwYXNzCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoRywgTWV0
YSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShHQSwgYWJjLkFCQ01ldGEpCisgICAgYXNzZXJ0IEcu
X19iYXNlc19fID09IChBLCBCKQorICAgIGFzc2VydCBHLl9fb3JpZ19iYXNlc19fID09IChmYWtl
LCkKKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAw
KSIpCiBkZWYgdGVzdF93aXRoX21ldGFjbGFzc19wcmVwYXJlKCk6CiAgICAgIiIiVGVzdCB0aGF0
IHdpdGhfbWV0YWNsYXNzIGNhdXNlcyBNZXRhLl9fcHJlcGFyZV9fIHRvIGJlIGNhbGxlZCB3aXRo
IHRoZSBjb3JyZWN0IGFyZ3VtZW50cy4iIiIKIApAQCAtODU3LDcgKzg5Nyw3IEBAIGRlZiB0ZXN0
X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgTXlTbG90cy5fX3Nsb3RzX18gPT0gWyJhIiwg
ImIiXQogICAgIGluc3RhbmNlID0gTXlTbG90cygpCiAgICAgaW5zdGFuY2UuYSA9ICJmb28iCi0g
ICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYyIs
ICJiYXoiKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3Rh
bmNlLCAiYyIsICJiYXoiKQogCiAgICAgIyBUZXN0IGEgY2xhc3Mgd2l0aCBzdHJpbmcgZm9yIHNs
b3RzLgogICAgIGNsYXNzIE15U3RyaW5nU2xvdHMob2JqZWN0KToKQEAgLTg2Niw4ICs5MDYsOCBA
QCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0IE15U3RyaW5nU2xvdHMuX19z
bG90c19fID09ICJhYiIKICAgICBpbnN0YW5jZSA9IE15U3RyaW5nU2xvdHMoKQogICAgIGluc3Rh
bmNlLmFiID0gImZvbyIKLSAgICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0
ciwgaW5zdGFuY2UsICJhIiwgImJheiIpCi0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJy
b3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYiIsICJiYXoiKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0
cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIsICJiYXoiKQorICAgIHB5dGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYiIsICJiYXoiKQogCiAg
ICAgY2xhc3MgTXlTbG90c1dlYWtyZWYob2JqZWN0KToKICAgICAgICAgX19zbG90c19fID0gIl9f
d2Vha3JlZl9fIiwKQEAgLTg3NSw3ICs5MTUsMjcgQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygp
OgogICAgIGFzc2VydCB0eXBlKE15U2xvdHNXZWFrcmVmKSBpcyBNZXRhCiAKIAotQHB5LnRlc3Qu
bWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIG9yIHN5cy52ZXJzaW9u
X2luZm9bOjJdIGluICgoMywgMCksICgzLCAxKSkiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lz
LnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMykiKQorZGVmIHRlc3RfYWRkX21ldGFjbGFzc19uZXN0
ZWQoKToKKyAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2Jlbmph
bWlucC9zaXgvaXNzdWVzLzI1OQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MK
KworICAgIGNsYXNzIEE6CisgICAgICAgIGNsYXNzIEI6IHBhc3MKKworICAgIGV4cGVjdGVkID0g
J3Rlc3RfYWRkX21ldGFjbGFzc19uZXN0ZWQuPGxvY2Fscz4uQS5CJworCisgICAgYXNzZXJ0IEEu
Qi5fX3F1YWxuYW1lX18gPT0gZXhwZWN0ZWQKKworICAgIGNsYXNzIEE6CisgICAgICAgIEBzaXgu
YWRkX21ldGFjbGFzcyhNZXRhKQorICAgICAgICBjbGFzcyBCOiBwYXNzCisKKyAgICBhc3NlcnQg
QS5CLl9fcXVhbG5hbWVfXyA9PSBleHBlY3RlZAorCisKK0BweXRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIG9yIHN5cy52ZXJzaW9uX2luZm9bOjJdIGluICgo
MywgMCksICgzLCAxKSkiKQogZGVmIHRlc3RfYXNzZXJ0Q291bnRFcXVhbCgpOgogICAgIGNsYXNz
IFRlc3RBc3NlcnRDb3VudEVxdWFsKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVmIHRl
c3Qoc2VsZik6CkBAIC04ODcsNyArOTQ3LDcgQEAgZGVmIHRlc3RfYXNzZXJ0Q291bnRFcXVhbCgp
OgogICAgIFRlc3RBc3NlcnRDb3VudEVxdWFsKCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3Qu
bWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFy
ay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2Vy
dFJlZ2V4KCk6CiAgICAgY2xhc3MgVGVzdEFzc2VydFJlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CkBAIC04OTksNyArOTU5LDcgQEAgZGVmIHRlc3RfYXNz
ZXJ0UmVnZXgoKToKICAgICBUZXN0QXNzZXJ0UmVnZXgoJ3Rlc3QnKS50ZXN0KCkKIAogCi1AcHku
dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiwgNykiKQorQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiwgNykiKQogZGVmIHRlc3Rf
YXNzZXJ0UmFpc2VzUmVnZXgoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0UmFpc2VzUmVnZXgodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgdGVzdChzZWxmKToKQEAgLTkzMiwzICs5OTIs
NjEgQEAgZGVmIHRlc3RfcHl0aG9uXzJfdW5pY29kZV9jb21wYXRpYmxlKCk6CiAgICAgICAgIGFz
c2VydCBzdHIobXlfdGVzdCkgPT0gc2l4LnUoImhlbGxvIikKIAogICAgIGFzc2VydCBnZXRhdHRy
KHNpeC5tb3Zlcy5idWlsdGlucywgJ2J5dGVzJywgc3RyKShteV90ZXN0KSA9PSBzaXguYigiaGVs
bG8iKQorCisKK2NsYXNzIEVuc3VyZVRlc3RzOgorCisgICAgIyBncmlubmluZyBmYWNlIGVtb2pp
CisgICAgVU5JQ09ERV9FTU9KSSA9IHNpeC51KCJcVTAwMDFGNjAwIikKKyAgICBCSU5BUllfRU1P
SkkgPSBiIlx4ZjBceDlmXHg5OFx4ODAiCisKKyAgICBkZWYgdGVzdF9lbnN1cmVfYmluYXJ5X3Jh
aXNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJy
b3IpOgorICAgICAgICAgICAgc2l4LmVuc3VyZV9zdHIoOCkKKworICAgIGRlZiB0ZXN0X2Vycm9y
c19hbmRfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5J
Q09ERV9FTU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J2lnbm9yZScpCisgICAgICAg
IHdpdGggcHl0ZXN0LnJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpOgorICAgICAgICAgICAgc2l4
LmVuc3VyZV9iaW5hcnkoc2VsZi5VTklDT0RFX0VNT0pJLCBlbmNvZGluZz0nbGF0aW4tMScsIGVy
cm9ycz0nc3RyaWN0JykKKworICAgIGRlZiB0ZXN0X2Vuc3VyZV9iaW5hcnlfcmFpc2Uoc2VsZik6
CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3VyZV9iaW5hcnkoc2VsZi5VTklD
T0RFX0VNT0pJLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGNv
bnZlcnRlZF9iaW5hcnkgPSBzaXguZW5zdXJlX2JpbmFyeShzZWxmLkJJTkFSWV9FTU9KSSwgZW5j
b2Rpbmc9InV0Zi04IiwgZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBpZiBzaXguUFkyOgorICAg
ICAgICAgICAgIyBQWTI6IHVuaWNvZGUgLT4gc3RyCisgICAgICAgICAgICBhc3NlcnQgY29udmVy
dGVkX3VuaWNvZGUgPT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVk
X3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkyOiBzdHIgLT4gc3RyCisgICAgICAgICAg
ICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBzZWxmLkJJTkFSWV9FTU9KSSBhbmQgaXNpbnN0
YW5jZShjb252ZXJ0ZWRfYmluYXJ5LCBzdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAj
IFBZMzogc3RyIC0+IGJ5dGVzCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUg
PT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIGJ5
dGVzKQorICAgICAgICAgICAgIyBQWTM6IGJ5dGVzIC0+IGJ5dGVzCisgICAgICAgICAgICBhc3Nl
cnQgY29udmVydGVkX2JpbmFyeSA9PSBzZWxmLkJJTkFSWV9FTU9KSSBhbmQgaXNpbnN0YW5jZShj
b252ZXJ0ZWRfYmluYXJ5LCBieXRlcykKKworICAgIGRlZiB0ZXN0X2Vuc3VyZV9zdHIoc2VsZik6
CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3VyZV9zdHIoc2VsZi5VTklDT0RF
X0VNT0pJLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGNvbnZl
cnRlZF9iaW5hcnkgPSBzaXguZW5zdXJlX3N0cihzZWxmLkJJTkFSWV9FTU9KSSwgZW5jb2Rpbmc9
InV0Zi04IiwgZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBpZiBzaXguUFkyOgorICAgICAgICAg
ICAgIyBQWTI6IHVuaWNvZGUgLT4gc3RyCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX3Vu
aWNvZGUgPT0gc2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNv
ZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkyOiBzdHIgLT4gc3RyCisgICAgICAgICAgICBhc3Nl
cnQgY29udmVydGVkX2JpbmFyeSA9PSBzZWxmLkJJTkFSWV9FTU9KSSBhbmQgaXNpbnN0YW5jZShj
b252ZXJ0ZWRfYmluYXJ5LCBzdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzog
c3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYu
VU5JQ09ERV9FTU9KSSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAg
ICAgICAgICAgIyBQWTM6IGJ5dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRl
ZF9iaW5hcnkgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91
bmljb2RlLCBzdHIpCisKKyAgICBkZWYgdGVzdF9lbnN1cmVfdGV4dChzZWxmKToKKyAgICAgICAg
Y29udmVydGVkX3VuaWNvZGUgPSBzaXguZW5zdXJlX3RleHQoc2VsZi5VTklDT0RFX0VNT0pJLCBl
bmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGNvbnZlcnRlZF9iaW5h
cnkgPSBzaXguZW5zdXJlX3RleHQoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIs
IGVycm9ycz0nc3RyaWN0JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFky
OiB1bmljb2RlIC0+IHVuaWNvZGUKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29k
ZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUs
IHVuaWNvZGUpCisgICAgICAgICAgICAjIFBZMjogc3RyIC0+IHVuaWNvZGUKKyAgICAgICAgICAg
IGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYuVU5JQ09ERV9FTU9KSSBhbmQgaXNpbnN0
YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgdW5pY29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICMgUFkzOiBzdHIgLT4gc3RyCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNv
ZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2Rl
LCBzdHIpCisgICAgICAgICAgICAjIFBZMzogYnl0ZXMgLT4gc3RyCisgICAgICAgICAgICBhc3Nl
cnQgY29udmVydGVkX2JpbmFyeSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2Uo
Y29udmVydGVkX3VuaWNvZGUsIHN0cikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvdzNjLWltcG9ydC5sb2cKaW5kZXggNzA5NGRmODIzNDIyZWQ0ODMyMDNk
NTY3YTA3YjViOGE0MjExOTMxZC4uZjBmMjJjYTJkNmMzNGMzNWEzMzhhZTE3YTI3MTI0MjFhMzU1
ZWNkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
dzNjLWltcG9ydC5sb2cKQEAgLTE3LDcgKzE3LDYgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9DSEFOR0VTCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L01BTklGRVNULmluCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvUEtHLUlORk8KIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9SRUFETUUucnN0CiAvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2Zn
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaQppbmRleCBlODY3M2RiMGE2OWFl
NDY5NWU3YjFmYTE1MmM1MzNhYTFiMGY5OGQxLi5iYmVjMWFmYmI2ZGQyZmQ2YzA0MjJlZDg5M2Uw
OWFhMmZjOWYzOGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCkBAIC0xLDYgKzEsNyBAQAogW3RveF0K
LWVudmxpc3QgPSBweTI3LHB5MzUscHkzNixweTM3LHB5cHkse3B5MjcscHkzNSxweTM2LHB5Mzd9
LWZsYWtlOCx7cHkzNSxweTM2LHB5Mzd9LW15cHkKK2Vudmxpc3QgPSBweTI3LHB5MzUscHkzNixw
eTM3LHB5Mzgse3B5MjcscHkzNSxweTM2LHB5MzcscHkzOH0tZmxha2U4LHtweTM1LHB5MzYscHkz
NyxweTM4fS1teXB5CiBza2lwc2Rpc3Q9VHJ1ZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9
IEZhbHNlCiAKIFt0ZXN0ZW52XQogZGVwcyA9CkBAIC0xNCw3ICsxNSw3IEBAIGRlcHMgPQogICBq
c29uLWUKICAganNvbnNjaGVtYQogCi1jb21tYW5kcyA9IHB5dGVzdCB7cG9zYXJnc30KK2NvbW1h
bmRzID0gcHl0ZXN0IC0tY292PXRvb2xzIC0tY292LXJlcG9ydD10ZXJtIHtwb3NhcmdzfQogCiBw
YXNzZW52ID0KICAgSFlQT1RIRVNJU19QUk9GSUxFCkBAIC0yNywxNSArMjgsMTkgQEAgY29tbWFu
ZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5MjctZmxha2U4LmluaSB7
cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNS1mbGFrZThdCiBkZXBzID0gLXJyZXF1aXJlbWVudHNf
Zmxha2U4LnR4dAotY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9
L3B5MzYtZmxha2U4LmluaSB7cG9zYXJnc30KK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNv
bmZpZz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkz
Ni1mbGFrZThdCiBkZXBzID0gLXJyZXF1aXJlbWVudHNfZmxha2U4LnR4dAotY29tbWFuZHMgPSBm
bGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5MzYtZmxha2U4LmluaSB7cG9zYXJn
c30KK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTMtZmxh
a2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNy1mbGFrZThdCiBkZXBzID0gLXJyZXF1
aXJlbWVudHNfZmxha2U4LnR4dAotY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0
b3hpbmlkaXJ9L3B5MzYtZmxha2U4LmluaSB7cG9zYXJnc30KK2NvbW1hbmRzID0gZmxha2U4IC0t
YXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KKworW3Rl
c3RlbnY6cHkzOC1mbGFrZThdCitkZXBzID0gLXJyZXF1aXJlbWVudHNfZmxha2U4LnR4dAorY29t
bWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5My1mbGFrZTguaW5p
IHtwb3NhcmdzfQogCiBbdGVzdGVudjpweTM1LW15cHldCiBkZXBzID0gLXJyZXF1aXJlbWVudHNf
bXlweS50eHQKQEAgLTU0LDMgKzU5LDkgQEAgZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0
CiBjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgogY29tbWFuZHMgPQogICBteXB5IC0tY29uZmln
LWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAtLXB5MiAtcCB0b29s
cy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQorCitbdGVzdGVudjpw
eTM4LW15cHldCitkZXBzID0gLXJyZXF1aXJlbWVudHNfbXlweS50eHQKK2NoYW5nZWRpciA9IHt0
b3hpbmlkaXJ9Ly4uCitjb21tYW5kcyA9CisgIG15cHkgLS1jb25maWctZmlsZT17dG94aW5pZGly
fS9teXB5LmluaSAtLW5vLWluY3JlbWVudGFsIC0tcHkyIC1wIHRvb2xzLm1hbmlmZXN0IC1wIHRv
b2xzLmxpbnQgLXAgdG9vbHMuZ2l0aWdub3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0Lmxv
ZwppbmRleCBjNGMxYmMyNWM4ZmQ0ODkzNDYzYjRlMTNiZDhiNTQ3ZTY3ZmNlYzY3Li5jNjcyMjk0
MDZiYWEyNzNlNDdjOGY4ZTRlY2JlNzQ0OWFjZDlmOWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNj
LWltcG9ydC5sb2cKQEAgLTIwLDcgKzIwLDcgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5p
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTI3
LWZsYWtlOC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5MzYtZmxha2U4LmluaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5dGVzdC5pbmkKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19mbGFrZTgudHh0
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1
aXJlbWVudHNfbXlweS50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZl
ci93ZWJkcml2ZXIvY2xpZW50LnB5CmluZGV4IDBjNWJiZmY1NjI5ODY4ZmRjNDhhMWE0MWNmODgy
ZmFiZTU2MTdjMWIuLjY1OGVkMGUwMGY4YTM0NDk0MTY3M2VlZDY3MWJhOWRlMzE3ODU4YTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVu
dC5weQpAQCAtMzczLDEwICszNzMsOCBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgIHBvcnQsCiAgICAgICAgICAgICAgICAgIHVybF9wcmVmaXg9Ii8iLAogICAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgdGltZW91dD1O
b25lLAogICAgICAgICAgICAgICAgICBleHRlbnNpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYudHJh
bnNwb3J0ID0gdHJhbnNwb3J0LkhUVFBXaXJlUHJvdG9jb2woCi0gICAgICAgICAgICBob3N0LCBw
b3J0LCB1cmxfcHJlZml4LCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgIHNlbGYudHJhbnNwb3J0
ID0gdHJhbnNwb3J0LkhUVFBXaXJlUHJvdG9jb2woaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCkKICAg
ICAgICAgc2VsZi5yZXF1ZXN0ZWRfY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0aWVzCiAgICAgICAg
IHNlbGYuY2FwYWJpbGl0aWVzID0gTm9uZQogICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBOb25l
CkBAIC00NDYsNyArNDQ0LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICBmaW5h
bGx5OgogICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQogCi0gICAgZGVmIHNlbmRf
Y29tbWFuZChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lKToKKyAgICBkZWYgc2VuZF9jb21t
YW5kKHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAg
ICIiIgogICAgICAgICBTZW5kIGEgY29tbWFuZCB0byB0aGUgcmVtb3RlIGVuZCBhbmQgdmFsaWRh
dGUgaXRzIHN1Y2Nlc3MuCiAKQEAgLTQ2Nyw3ICs0NjUsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVj
dCk6CiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50cmFuc3BvcnQuc2VuZCgKICAgICAgICAgICAg
IG1ldGhvZCwgdXJsLCBib2R5LAogICAgICAgICAgICAgZW5jb2Rlcj1wcm90b2NvbC5FbmNvZGVy
LCBkZWNvZGVyPXByb3RvY29sLkRlY29kZXIsCi0gICAgICAgICAgICBzZXNzaW9uPXNlbGYpCisg
ICAgICAgICAgICBzZXNzaW9uPXNlbGYsIHRpbWVvdXQ9dGltZW91dCkKIAogICAgICAgICBpZiBy
ZXNwb25zZS5zdGF0dXMgIT0gMjAwOgogICAgICAgICAgICAgZXJyID0gZXJyb3IuZnJvbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTQ5NSw3ICs0OTMsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6
CiAKICAgICAgICAgcmV0dXJuIHZhbHVlCiAKLSAgICBkZWYgc2VuZF9zZXNzaW9uX2NvbW1hbmQo
c2VsZiwgbWV0aG9kLCB1cmksIGJvZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21t
YW5kKHNlbGYsIG1ldGhvZCwgdXJpLCBib2R5PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAg
ICIiIgogICAgICAgICBTZW5kIGEgY29tbWFuZCB0byBhbiBlc3RhYmxpc2hlZCBzZXNzaW9uIGFu
ZCB2YWxpZGF0ZSBpdHMgc3VjY2Vzcy4KIApAQCAtNTEyLDcgKzUxMCw3IEBAIGNsYXNzIFNlc3Np
b24ob2JqZWN0KToKICAgICAgICAgICAgIGFuIGVycm9yLgogICAgICAgICAiIiIKICAgICAgICAg
dXJsID0gdXJscGFyc2UudXJsam9pbigic2Vzc2lvbi8lcy8iICUgc2VsZi5zZXNzaW9uX2lkLCB1
cmkpCi0gICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29tbWFuZChtZXRob2QsIHVybCwgYm9keSkK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9jb21tYW5kKG1ldGhvZCwgdXJsLCBib2R5LCB0aW1l
b3V0KQogCiAgICAgQHByb3BlcnR5CiAgICAgQGNvbW1hbmQKQEAgLTczNyw2ICs3MzUsMTAgQEAg
Y2xhc3MgRWxlbWVudChvYmplY3QpOgogICAgIGRlZiBzZWxlY3RlZChzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJzZWxlY3RlZCIpCiAKKyAg
ICBAY29tbWFuZAorICAgIGRlZiBzY3JlZW5zaG90KHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5zZW5kX2VsZW1lbnRfY29tbWFuZCgiR0VUIiwgInNjcmVlbnNob3QiKQorCiAgICAgQGNvbW1h
bmQKICAgICBkZWYgYXR0cmlidXRlKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5z
ZW5kX2VsZW1lbnRfY29tbWFuZCgiR0VUIiwgImF0dHJpYnV0ZS8lcyIgJSBuYW1lKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
ZWJkcml2ZXIvd2ViZHJpdmVyL3Byb3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3Byb3RvY29sLnB5
CmluZGV4IDE4YTNkNTJjOGEzYjUzN2JhNzVkNDg3ZmQ3ZjZjNWNkZTIwNmVjM2UuLmM4MTFmNmYy
NmRiNzkwOGNhZTUyOGQwNGQyNWQ2ODgyNzg0ZTc0YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci9wcm90b2NvbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKQEAgLTIsNiArMiw4
IEBAIGltcG9ydCBqc29uCiAKIGltcG9ydCB3ZWJkcml2ZXIKIAorZnJvbSBzaXggaW1wb3J0IGl0
ZXJpdGVtcworCiAKICIiIldlYkRyaXZlciB3aXJlIHByb3RvY29sIGNvZGVjcy4iIiIKIApAQCAt
MzksNSArNDEsNSBAQCBjbGFzcyBEZWNvZGVyKGpzb24uSlNPTkRlY29kZXIpOgogICAgICAgICBl
bGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgZGljdCkgYW5kIHdlYmRyaXZlci5XaW5kb3cuaWRlbnRp
ZmllciBpbiBwYXlsb2FkOgogICAgICAgICAgICAgcmV0dXJuIHdlYmRyaXZlci5XaW5kb3cuZnJv
bV9qc29uKHBheWxvYWQsIHNlbGYuc2Vzc2lvbikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBh
eWxvYWQsIGRpY3QpOgotICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29rKHYp
IGZvciBrLCB2IGluIHBheWxvYWQuaXRlcml0ZW1zKCl9CisgICAgICAgICAgICByZXR1cm4ge2s6
IHNlbGYub2JqZWN0X2hvb2sodikgZm9yIGssIHYgaW4gaXRlcml0ZW1zKHBheWxvYWQpfQogICAg
ICAgICByZXR1cm4gcGF5bG9hZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKaW5kZXggMzJiYTMxYTJhZTlhOTk2YTVjNTdm
ZDA0MDYxMjkzZjMxN2U1YmYwNC4uZjgxN2VjODFhOTZmYjkzY2M1YzYwMTU0ZjA1N2Q3MmU5ODM3
NTY5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJk
cml2ZXIvdHJhbnNwb3J0LnB5CkBAIC0xLDEyICsxLDEyIEBACiBpbXBvcnQganNvbgogaW1wb3J0
IHNlbGVjdAorCitmcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlLCBQWTMKK2Zyb20gc2l4Lm1vdmVz
Lmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgogZnJvbSBzaXgubW92ZXMudXJsbGli
IGltcG9ydCBwYXJzZSBhcyB1cmxwYXJzZQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IGh0dHBfY2xp
ZW50IGFzIGh0dHBsaWIKIAogZnJvbSAuIGltcG9ydCBlcnJvcgogCi1mcm9tIHNpeCBpbXBvcnQg
dGV4dF90eXBlCi0KICIiIkltcGxlbWVudHMgSFRUUCB0cmFuc3BvcnQgZm9yIHRoZSBXZWJEcml2
ZXIgd2lyZSBwcm90b2NvbC4iIiIKIAogCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEhUVFBXaXJl
UHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgIyA9PiB3ZWJkcml2ZXIuRWxlbWVudAogICAgICIi
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIHVybF9wcmVmaXg9Ii8iLCB0
aW1lb3V0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCB1cmxfcHJl
Zml4PSIvIik6CiAgICAgICAgICIiIgogICAgICAgICBDb25zdHJ1Y3QgaW50ZXJmYWNlIGZvciBj
b21tdW5pY2F0aW5nIHdpdGggdGhlIHJlbW90ZSBzZXJ2ZXIuCiAKQEAgLTg1LDkgKzg1LDggQEAg
Y2xhc3MgSFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0
CiAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi51cmxfcHJlZml4ID0gdXJs
X3ByZWZpeAotCiAgICAgICAgIHNlbGYuX2Nvbm4gPSBOb25lCi0gICAgICAgIHNlbGYuX3RpbWVv
dXQgPSB0aW1lb3V0CisgICAgICAgIHNlbGYuX2xhc3RfcmVxdWVzdF9pc19ibG9ja2VkID0gRmFs
c2UKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsb3NlKCkKQEAgLTEw
MiwxMSArMTAxLDExIEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAg
IiIiR2V0cyB0aGUgY3VycmVudCBIVFRQIGNvbm5lY3Rpb24sIG9yIGxhemlseSBjcmVhdGVzIG9u
ZS4iIiIKICAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm46CiAgICAgICAgICAgICBjb25uX2t3YXJn
cyA9IHt9Ci0gICAgICAgICAgICBpZiBzZWxmLl90aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJ0aW1lb3V0Il0gPSBzZWxmLl90aW1lb3V0Ci0KLSAgICAg
ICAgICAgIHNlbGYuX2Nvbm4gPSBodHRwbGliLkhUVFBDb25uZWN0aW9uKAotICAgICAgICAgICAg
ICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzdHJpY3Q9VHJ1ZSwgKipjb25uX2t3YXJncykKKyAg
ICAgICAgICAgIGlmIG5vdCBQWTM6CisgICAgICAgICAgICAgICAgY29ubl9rd2FyZ3NbInN0cmlj
dCJdID0gVHJ1ZQorICAgICAgICAgICAgIyBXZSBhcmUgbm90IHNldHRpbmcgYW4gSFRUUCB0aW1l
b3V0IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgd2hlbiB0aGUKKyAgICAgICAgICAgICMgY29ubmVj
dGlvbiBpdHMgY3JlYXRlZC4gVGhlIHNlbmQgbWV0aG9kIGhhcyBhIHRpbWVvdXQgdmFsdWUgaWYg
bmVlZGVkLgorICAgICAgICAgICAgc2VsZi5fY29ubiA9IEhUVFBDb25uZWN0aW9uKHNlbGYuaG9z
dCwgc2VsZi5wb3J0LCAqKmNvbm5fa3dhcmdzKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9jb25u
CiAKQEAgLTEyNCw2ICsxMjMsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAg
ICAgICAgICAgICAgaGVhZGVycz1Ob25lLAogICAgICAgICAgICAgIGVuY29kZXI9anNvbi5KU09O
RW5jb2RlciwKICAgICAgICAgICAgICBkZWNvZGVyPWpzb24uSlNPTkRlY29kZXIsCisgICAgICAg
ICAgICAgdGltZW91dD1Ob25lLAogICAgICAgICAgICAgICoqY29kZWNfa3dhcmdzKToKICAgICAg
ICAgIiIiCiAgICAgICAgIFNlbmQgYSBjb21tYW5kIHRvIHRoZSByZW1vdGUuCkBAIC0xNzIsMTAg
KzE3MiwxOCBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiRmFpbGVkIHRvIGVuY29kZSByZXF1ZXN0IGJvZHkgYXMgSlNP
TjpcbiIKICAgICAgICAgICAgICAgICAgICAgIiVzIiAlIGpzb24uZHVtcHMoYm9keSwgaW5kZW50
PTIpKQogCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRob2QsIHVyaSwgcGF5
bG9hZCwgaGVhZGVycykKKyAgICAgICAgIyBXaGVuIHRoZSB0aW1lb3V0IHRyaWdnZXJzLCB0aGUg
VGVzdFJ1bm5lck1hbmFnZXIgdGhyZWFkIHdpbGwgcmV1c2UKKyAgICAgICAgIyB0aGlzIGNvbm5l
Y3Rpb24gdG8gY2hlY2sgaWYgdGhlIFdlYkRyaXZlciBpdHMgYWxpdmUgYW5kIHdlIG1heSBlbmQK
KyAgICAgICAgIyByYWlzaW5nIGFuIGh0dHBsaWIuQ2Fubm90U2VuZFJlcXVlc3QgZXhjZXB0aW9u
IGlmIHRoZSBXZWJEcml2ZXIgaXMKKyAgICAgICAgIyBub3QgcmVzcG9uZGluZyBhbmQgdGhpcyBo
dHRwbGliLnJlcXVlc3QoKSBjYWxsIGlzIGJsb2NrZWQgb24gdGhlCisgICAgICAgICMgcnVubmVy
IHRocmVhZC4gV2UgdXNlIHRoZSBib29sZWFuIGJlbG93IHRvIGNoZWNrIGZvciB0aGF0IGFuZCBy
ZXN0YXJ0CisgICAgICAgICMgdGhlIGNvbm5lY3Rpb24gaW4gdGhhdCBjYXNlLgorICAgICAgICBz
ZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IFRydWUKKyAgICAgICAgcmVzcG9uc2UgPSBz
ZWxmLl9yZXF1ZXN0KG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzLCB0aW1lb3V0PU5vbmUp
CisgICAgICAgIHNlbGYuX2xhc3RfcmVxdWVzdF9pc19ibG9ja2VkID0gRmFsc2UKICAgICAgICAg
cmV0dXJuIFJlc3BvbnNlLmZyb21faHR0cChyZXNwb25zZSwgZGVjb2Rlcj1kZWNvZGVyLCAqKmNv
ZGVjX2t3YXJncykKIAotICAgIGRlZiBfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVyaSwgcGF5bG9h
ZCwgaGVhZGVycz1Ob25lKToKKyAgICBkZWYgX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBh
eWxvYWQsIGhlYWRlcnM9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgaWYgaXNpbnN0YW5j
ZShwYXlsb2FkLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWQuZW5j
b2RlKCJ1dGYtOCIpCiAKQEAgLTE4NSwxMCArMTkzLDIzIEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9j
b2wob2JqZWN0KToKIAogICAgICAgICB1cmwgPSBzZWxmLnVybCh1cmkpCiAKLSAgICAgICAgaWYg
c2VsZi5faGFzX3VucmVhZF9kYXRhKCk6CisgICAgICAgIGlmIHNlbGYuX2xhc3RfcmVxdWVzdF9p
c19ibG9ja2VkIG9yIHNlbGYuX2hhc191bnJlYWRfZGF0YSgpOgogICAgICAgICAgICAgc2VsZi5j
bG9zZSgpCisKICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlcXVlc3QobWV0aG9kLCB1cmwsIHBh
eWxvYWQsIGhlYWRlcnMpCi0gICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24uZ2V0cmVzcG9u
c2UoKQorCisgICAgICAgICMgdGltZW91dCBmb3IgcmVxdWVzdCBoYXMgdG8gYmUgc2V0IGp1c3Qg
YmVmb3JlIGNhbGxpbmcgaHR0cGxpYi5nZXRyZXNwb25zZSgpCisgICAgICAgICMgYW5kIHRoZSBw
cmV2aW91cyB2YWx1ZSByZXN0b3JlZCBqdXN0IGFmdGVyIHRoYXQsIGV2ZW4gb24gZXhjZXB0aW9u
IHJhaXNlZAorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0aW1lb3V0OgorICAgICAgICAg
ICAgICAgIHByZXZpb3VzX3RpbWVvdXQgPSBzZWxmLl9jb25uLmdldHRpbWVvdXQoKQorICAgICAg
ICAgICAgICAgIHNlbGYuX2Nvbm4uc2V0dGltZW91dCh0aW1lb3V0KQorICAgICAgICAgICAgcmVz
cG9uc2UgPSBzZWxmLmNvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKQorICAgICAgICBmaW5hbGx5Ogor
ICAgICAgICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uLnNldHRp
bWVvdXQocHJldmlvdXNfdGltZW91dCkKKworICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogICAg
IGRlZiBfaGFzX3VucmVhZF9kYXRhKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY29ubiBh
bmQgc2VsZi5fY29ubi5zb2NrIGFuZCBzZWxlY3Quc2VsZWN0KFtzZWxmLl9jb25uLnNvY2tdLCBb
XSwgW10sIDApWzBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9pZC5weQppbmRleCA1MWRlYjcx
ZTMxNjUzODE0OGUwNmIxNDZiY2E3NTU1ZmI3YjA0NmRmLi43NDRlMTM0ZDM4MjZlYWZmZWJhNjM4
NzcxM2EyY2IxMzJhZTFhOWQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2FuZHJvaWQucHkKQEAg
LTg5LDggKzg5LDggQEAgZGVmIGluc3RhbGxfYW5kcm9pZF9wYWNrYWdlcyhsb2dnZXIsIHNka19w
YXRoLCBub19wcm9tcHQ9RmFsc2UpOgogCiAgICAgI1RPRE86IE5vdCBzdXJlIHdoYXQncyByZWFs
bHkgbmVlZGVkIGhlcmUKICAgICBwYWNrYWdlcyA9IFsicGxhdGZvcm0tdG9vbHMiLAotICAgICAg
ICAgICAgICAgICJidWlsZC10b29sczsyOC4wLjMiLAotICAgICAgICAgICAgICAgICJwbGF0Zm9y
bXM7YW5kcm9pZC0yOCIsCisgICAgICAgICAgICAgICAgImJ1aWxkLXRvb2xzOzI5LjAuMyIsCisg
ICAgICAgICAgICAgICAgInBsYXRmb3JtczthbmRyb2lkLTI5IiwKICAgICAgICAgICAgICAgICAi
ZW11bGF0b3IiXQogCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgd29yayBub24taW50ZXJuYWN0aXZl
bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5CmluZGV4IDNlZTk4ZDk1OWVjNWJlZmM1
OGI4ODRlMGVjNTM4NWQ1NTRiYzg3MjUuLjM2NmRjNzgxZDkwZWUyMWI4MjBiOTMzNGM2OWVkZTJj
NDUxY2I0YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nlci5weQpAQCAtNiwyMCArNiwx
OSBAQCBpbXBvcnQgc3RhdAogaW1wb3J0IGVycm5vCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0
IHRlbXBmaWxlCi1pbXBvcnQgdXJscGFyc2UKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0
cmFjdG1ldGhvZAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQogZnJv
bSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogCitmcm9tIHNpeC5tb3Zl
cy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHNwbGl0CiBpbXBvcnQgcmVxdWVzdHMKIAotZnJvbSB1
dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwgdW56aXAKK2Zyb20gLnV0aWxzIGltcG9ydCBj
YWxsLCBnZXQsIHVudGFyLCB1bnppcAogCiB1bmFtZSA9IHBsYXRmb3JtLnVuYW1lKCkKIAogIyB0
aGUgcm9vdFVybCBmb3IgdGhlIGZpcmVmb3gtY2kgZGVwbG95bWVudCBvZiBUYXNrY2x1c3Rlcgot
IyAoYWZ0ZXIgTm92ZW1iZXIgOSwgaHR0cHM6Ly9maXJlZm94LWNpLXRjLnNlcnZpY2VzLm1vemls
bGEuY29tLykKLUZJUkVGT1hfQ0lfUk9PVF9VUkwgPSAnaHR0cHM6Ly90YXNrY2x1c3Rlci5uZXQn
CitGSVJFRk9YX0NJX1JPT1RfVVJMID0gJ2h0dHBzOi8vZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5t
b3ppbGxhLmNvbScKIAogCiBkZWYgX2dldF9maWxldmVyc2lvbihiaW5hcnksIGxvZ2dlcj1Ob25l
KToKQEAgLTQxLDYgKzQwLDIzIEBAIGRlZiBoYW5kbGVfcmVtb3ZlX3JlYWRvbmx5KGZ1bmMsIHBh
dGgsIGV4Yyk6CiAgICAgICAgIHJhaXNlCiAKIAorZGVmIGdldF9leHQoZmlsZW5hbWUpOgorICAg
ICIiIkdldCB0aGUgZXh0ZW5zaW9uIGZyb20gYSBmaWxlbmFtZSB3aXRoIHNwZWNpYWwgaGFuZGxp
bmcgZm9yIC50YXIuZm9vIiIiCisgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxl
bmFtZSkKKyAgICBpZiBuYW1lLmVuZHN3aXRoKCIudGFyIik6CisgICAgICAgIGV4dCA9ICIudGFy
JXMiICUgZXh0CisgICAgcmV0dXJuIGV4dAorCisKK2RlZiBnZXRfdGFza2NsdXN0ZXJfYXJ0aWZh
Y3QoaW5kZXgsIHBhdGgpOgorICAgIFRDX0lOREVYX0JBU0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJM
ICsgIi9hcGkvaW5kZXgvdjEvIgorCisgICAgcmVzcCA9IGdldChUQ19JTkRFWF9CQVNFICsgInRh
c2svJXMvYXJ0aWZhY3RzLyVzIiAlIChpbmRleCwgcGF0aCkpCisgICAgcmVzcC5yYWlzZV9mb3Jf
c3RhdHVzKCkKKworICAgIHJldHVybiByZXNwCisKKwogY2xhc3MgQnJvd3NlcihvYmplY3QpOgog
ICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhCiAKQEAgLTQ4LDggKzY0LDEzIEBAIGNsYXNzIEJy
b3dzZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAogICAgIEBhYnN0
cmFjdG1ldGhvZAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9u
ZSk6Ci0gICAgICAgICIiIkRvd25sb2FkIGEgcGFja2FnZSBvciBpbnN0YWxsZXIgZm9yIHRoZSBi
cm93c2VyIiIiCisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
LCByZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIkRvd25sb2FkIGEgcGFja2FnZSBvciBpbnN0YWxs
ZXIgZm9yIHRoZSBicm93c2VyCisgICAgICAgIDpwYXJhbSBkZXN0OiBEaXJlY3RvcnkgaW4gd2hp
Y2ggdG8gcHV0IHRoZSBkb3dsb2FkZWQgcGFja2FnZQorICAgICAgICA6cGFyYW0gY2hhbm5lbDog
QnJvd3NlciBjaGFubmVsIHRvIGRvd25sb2FkCisgICAgICAgIDpwYXJhbSByZW5hbWU6IE9wdGlv
bmFsIG5hbWUgZm9yIHRoZSBkb3dubG9hZGVkIHBhY2thZ2U7IHRoZSBvcmlnaW5hbAorICAgICAg
ICAgICAgICAgICAgICAgICBleHRlbnNpb24gaXMgcHJlc2VydmVkLgorICAgICAgICAiIiIKICAg
ICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKICAgICBAYWJzdHJhY3RtZXRob2QKQEAgLTEz
Myw3ICsxNTQsNyBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogCiAgICAgICAgIHJldHVybiBk
ZXN0CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPSJuaWdodGx5
Iik6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIs
IHJlbmFtZT1Ob25lKToKICAgICAgICAgcHJvZHVjdCA9IHsKICAgICAgICAgICAgICJuaWdodGx5
IjogImZpcmVmb3gtbmlnaHRseS1sYXRlc3Qtc3NsIiwKICAgICAgICAgICAgICJiZXRhIjogImZp
cmVmb3gtYmV0YS1sYXRlc3Qtc3NsIiwKQEAgLTE2MSw3ICsxODIsNyBAQCBjbGFzcyBGaXJlZm94
KEJyb3dzZXIpOgogICAgICAgICB1cmwgPSAiaHR0cHM6Ly9kb3dubG9hZC5tb3ppbGxhLm9yZy8/
cHJvZHVjdD0lcyZvcz0lcyZsYW5nPWVuLVVTIiAlIChwcm9kdWN0W2NoYW5uZWxdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvc19idWlsZHNbb3Nfa2V5XSkKICAgICAgICAgc2VsZi5sb2dnZXIuaW5m
bygiRG93bmxvYWRpbmcgRmlyZWZveCBmcm9tICVzIiAlIHVybCkKLSAgICAgICAgcmVzcCA9IHJl
cXVlc3RzLmdldCh1cmwpCisgICAgICAgIHJlc3AgPSBnZXQodXJsKQogCiAgICAgICAgIGZpbGVu
YW1lID0gTm9uZQogCkBAIC0xNzIsMTEgKzE5MywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIp
OgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVzWzBdCiAKICAgICAgICAgaWYg
bm90IGZpbGVuYW1lOgotICAgICAgICAgICAgZmlsZW5hbWUgPSB1cmxwYXJzZS51cmxzcGxpdChy
ZXNwLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgZmlsZW5hbWUgPSB1
cmxzcGxpdChyZXNwLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXQogCiAgICAgICAgIGlmIG5v
dCBmaWxlbmFtZToKICAgICAgICAgICAgIGZpbGVuYW1lID0gImZpcmVmb3gudGFyLmJ6MiIKIAor
ICAgICAgICBpZiByZW5hbWU6CisgICAgICAgICAgICBmaWxlbmFtZSA9ICIlcyVzIiAlIChyZW5h
bWUsIGdldF9leHQoZmlsZW5hbWUpKQorCiAgICAgICAgIGluc3RhbGxlcl9wYXRoID0gb3MucGF0
aC5qb2luKGRlc3QsIGZpbGVuYW1lKQogCiAgICAgICAgIHdpdGggb3BlbihpbnN0YWxsZXJfcGF0
aCwgIndiIikgYXMgZjoKQEAgLTM2MywxNCArMzg3LDE0IEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nl
cik6CiAgICAgICAgIHRhZ3MgPSBjYWxsKCJnaXQiLCAibHMtcmVtb3RlIiwgIi0tdGFncyIsICIt
LXJlZnMiLAogICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEv
Z2Vja29kcml2ZXIuZ2l0IikKICAgICAgICAgcmVsZWFzZV9yZSA9IHJlLmNvbXBpbGUociIuKnJl
ZnMvdGFncy92KFxkKylcLihcZCspXC4oXGQrKSIpCi0gICAgICAgIGxhdGVzdF9yZWxlYXNlID0g
MAorICAgICAgICBsYXRlc3RfcmVsZWFzZSA9ICgwLDAsMCkKICAgICAgICAgZm9yIGl0ZW0gaW4g
dGFncy5zcGxpdCgiXG4iKToKICAgICAgICAgICAgIG0gPSByZWxlYXNlX3JlLm1hdGNoKGl0ZW0p
CiAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBbaW50KGl0ZW0p
IGZvciBpdGVtIGluIG0uZ3JvdXBzKCldCisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHR1cGxl
KGludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdyb3VwcygpKQogICAgICAgICAgICAgICAgIGlmIHZl
cnNpb24gPiBsYXRlc3RfcmVsZWFzZToKICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0X3JlbGVh
c2UgPSB2ZXJzaW9uCi0gICAgICAgIGFzc2VydCBsYXRlc3RfcmVsZWFzZSAhPSAwCisgICAgICAg
IGFzc2VydCBsYXRlc3RfcmVsZWFzZSAhPSAoMCwwLDApCiAgICAgICAgIHJldHVybiAidiVzLiVz
LiVzIiAlIHR1cGxlKHN0cihpdGVtKSBmb3IgaXRlbSBpbiBsYXRlc3RfcmVsZWFzZSkKIAogICAg
IGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgYnJv
d3Nlcl9iaW5hcnk9Tm9uZSk6CkBAIC0zOTcsMzIgKzQyMSwzMiBAQCBjbGFzcyBGaXJlZm94KEJy
b3dzZXIpOgogICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKG9zLnBhdGguam9pbihkZXN0
LCAiZ2Vja29kcml2ZXIiKSkKIAogICAgIGRlZiBpbnN0YWxsX2dlY2tvZHJpdmVyX25pZ2h0bHko
c2VsZiwgZGVzdCk6Ci0gICAgICAgIGltcG9ydCB0YXJmaWxlCi0gICAgICAgIGltcG9ydCBtb3pk
b3dubG9hZAogICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJBdHRlbXB0aW5nIHRvIGluc3RhbGwg
d2ViZHJpdmVyIGZyb20gbmlnaHRseSIpCisKKyAgICAgICAgcGxhdGZvcm1fYml0cyA9ICgiNjQi
IGlmIHVuYW1lWzRdID09ICJ4ODZfNjQiIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAo
IjMyIiBpZiBzZWxmLnBsYXRmb3JtID09ICJ3aW4iIGVsc2UgIiIpKQorICAgICAgICB0Y19wbGF0
Zm9ybSA9ICIlcyVzIiAlIChzZWxmLnBsYXRmb3JtLCBwbGF0Zm9ybV9iaXRzKQorCisgICAgICAg
IGFyY2hpdmVfZXh0ID0gIi56aXAiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIudGFy
Lmd6IgorICAgICAgICBhcmNoaXZlX25hbWUgPSAicHVibGljL2dlY2tvZHJpdmVyJXMiICUgYXJj
aGl2ZV9leHQKKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzID0gbW96ZG93bmxvYWQuRGFp
bHlTY3JhcGVyKGJyYW5jaD0ibW96aWxsYS1jZW50cmFsIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uPSJjb21tb24udGVzdHMudGFyLmd6IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb249ZGVzdCkK
LSAgICAgICAgICAgIHBhY2thZ2VfcGF0aCA9IHMuZG93bmxvYWQoKQotICAgICAgICBleGNlcHQg
bW96ZG93bmxvYWQuZXJyb3JzLk5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICByZXNwID0gZ2V0
X3Rhc2tjbHVzdGVyX2FydGlmYWN0KAorICAgICAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxh
LWNlbnRyYWwubGF0ZXN0LmdlY2tvZHJpdmVyLiVzIiAlIHRjX3BsYXRmb3JtLAorICAgICAgICAg
ICAgICAgIGFyY2hpdmVfbmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmluZm8oIkdlY2tvZHJpdmVyIGRvd25sb2FkIGZhaWxlZCIpCiAgICAg
ICAgICAgICByZXR1cm4KIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGVfc3VmZml4ID0g
Ii5leGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCi0gICAgICAgICAgICB3aXRo
IHRhcmZpbGUub3BlbihwYWNrYWdlX3BhdGgsICJyIikgYXMgZjoKLSAgICAgICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1lbWJlciA9IGYuZ2V0bWVtYmVyKCJiaW4lc2dlY2tv
ZHJpdmVyJXMiICUgKG9zLnBhdGguc2VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVfc3VmZml4KSkKLSAgICAgICAg
ICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICAgICAgICAgICMgUmVtb3ZlIGJpbi8gZnJvbSB0aGUgcGF0aC4KLSAgICAgICAgICAgICAg
ICBtZW1iZXIubmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobWVtYmVyLm5hbWUpCi0gICAgICAgICAg
ICAgICAgZi5leHRyYWN0YWxsKG1lbWJlcnM9W21lbWJlcl0sIHBhdGg9ZGVzdCkKLSAgICAgICAg
ICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIG1lbWJlci5uYW1lKQotICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuaW5mbygiRXh0cmFjdGVkIGdlY2tvZHJpdmVyIHRvICVzIiAlIHBhdGgp
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy51bmxpbmsocGFja2FnZV9wYXRoKQor
ICAgICAgICBpZiBhcmNoaXZlX2V4dCA9PSAiLnppcCI6CisgICAgICAgICAgICB1bnppcChyZXNw
LnJhdywgZGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVudGFyKHJlc3AucmF3LCBk
ZXN0KQorCisgICAgICAgIGV4ZV9leHQgPSAiLmV4ZSIgaWYgdW5hbWVbMF0gPT0gIldpbmRvd3Mi
IGVsc2UgIiIKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCAiZ2Vja29kcml2ZXIl
cyIgJSBleGVfZXh0KQorCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkV4dHJhY3RlZCBnZWNr
b2RyaXZlciB0byAlcyIgJSBwYXRoKQogCiAgICAgICAgIHJldHVybiBwYXRoCiAKQEAgLTQ0MSwz
MCArNDY1LDE5IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkKEJyb3dzZXIpOgogICAgIHByb2R1Y3Qg
PSAiZmlyZWZveF9hbmRyb2lkIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZmly
ZWZveC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5v
bmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVu
YW1lPU5vbmUpOgogICAgICAgICBpZiBkZXN0IGlzIE5vbmU6CiAgICAgICAgICAgICBkZXN0ID0g
b3MucHdkCiAKLSAgICAgICAgaWYgRklSRUZPWF9DSV9ST09UX1VSTCA9PSAnaHR0cHM6Ly90YXNr
Y2x1c3Rlci5uZXQnOgotICAgICAgICAgICAgIyBOT1RFOiB0aGlzIGNvbmRpdGlvbiBjYW4gYmUg
cmVtb3ZlZCBhZnRlciBOb3ZlbWJlciA5LCAyMDE5Ci0gICAgICAgICAgICBUQ19RVUVVRV9CQVNF
ID0gImh0dHBzOi8vcXVldWUudGFza2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgICAgIFRDX0lO
REVYX0JBU0UgPSAiaHR0cHM6Ly9pbmRleC50YXNrY2x1c3Rlci5uZXQvdjEvIgotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAi
L2FwaS9xdWV1ZS92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gRklSRUZPWF9DSV9S
T09UX1VSTCArICIvYXBpL2luZGV4L3YxLyIKLQotCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5n
ZXQoVENfSU5ERVhfQkFTRSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhc2svZ2Vj
a28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5tb2JpbGUuYW5kcm9pZC14ODZfNjQtb3B0IikK
LSAgICAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKLSAgICAgICAgaW5kZXggPSByZXNwLmpz
b24oKQotICAgICAgICB0YXNrX2lkID0gaW5kZXhbInRhc2tJZCJdCiAKLSAgICAgICAgcmVzcCA9
IHJlcXVlc3RzLmdldChUQ19RVUVVRV9CQVNFICsgInRhc2svJXMvYXJ0aWZhY3RzLyVzIiAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhc2tfaWQsICJwdWJsaWMvYnVpbGQvZ2Vja292
aWV3LWFuZHJvaWRUZXN0LmFwayIpKQotICAgICAgICByZXNwLnJhaXNlX2Zvcl9zdGF0dXMoKQor
ICAgICAgICByZXNwID0gZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KAorICAgICAgICAgICAgImdl
Y2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3QubW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIs
CisgICAgICAgICAgICAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKQog
Ci0gICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsICJnZWNrb3ZpZXctYW5kcm9p
ZFRlc3QuYXBrIikKKyAgICAgICAgZmlsZW5hbWUgPSAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFw
ayIKKyAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAgICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAo
cmVuYW1lLCBnZXRfZXh0KGZpbGVuYW1lKVsxXSkKKyAgICAgICAgYXBrX3BhdGggPSBvcy5wYXRo
LmpvaW4oZGVzdCwgZmlsZW5hbWUpCiAKICAgICAgICAgd2l0aCBvcGVuKGFwa19wYXRoLCAid2Ii
KSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShyZXNwLmNvbnRlbnQpCkBAIC01MDAsNyArNTEz
LDcgQEAgY2xhc3MgQ2hyb21lKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiY2hyb21lIgogICAg
IHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hyb21lLnR4dCIKIAotICAgIGRlZiBkb3du
bG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNl
bGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwg
Y2hhbm5lbD1Ob25lKToKQEAgLTY1OCw3ICs2NzEsNyBAQCBjbGFzcyBDaHJvbWVBbmRyb2lkQmFz
ZShCcm93c2VyKToKICAgICAgICAgc3VwZXIoQ2hyb21lQW5kcm9pZEJhc2UsIHNlbGYpLl9faW5p
dF9fKGxvZ2dlcikKICAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gTm9uZQogCi0gICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgpAQCAtNzY2LDcgKzc3OSw3IEBAIGNsYXNzIENocm9tZWlPUyhC
cm93c2VyKToKICAgICBwcm9kdWN0ID0gImNocm9tZV9pb3MiCiAgICAgcmVxdWlyZW1lbnRzID0g
InJlcXVpcmVtZW50c19jaHJvbWVfaW9zLnR4dCIKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9u
ZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
KToKQEAgLTgwMiw3ICs4MTUsNyBAQCBjbGFzcyBPcGVyYShCcm93c2VyKToKICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiVW5hYmxlIHRvIGZpbmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIpCiAg
ICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBj
aGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9
Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAK
ICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04NzQs
NyArODg3LDcgQEAgY2xhc3MgRWRnZUNocm9taXVtKEJyb3dzZXIpOgogICAgIGVkZ2Vkcml2ZXJf
bmFtZSA9ICJtc2VkZ2Vkcml2ZXIiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19l
ZGdlX2Nocm9taXVtLnR4dCIKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTg4OCwx
MSArOTAxLDEzIEBAIGNsYXNzIEVkZ2VDaHJvbWl1bShCcm93c2VyKToKICAgICAgICAgICAgIGlm
IG5vdCBiaW5hcnk6CiAgICAgICAgICAgICAgICAgIyBVc2UgcGF0aHMgZnJvbSBkaWZmZXJlbnQg
RWRnZSBjaGFubmVscyBzdGFydGluZyB3aXRoIFJlbGVhc2VcQmV0YVxEZXZcQ2FuYXJ5CiAgICAg
ICAgICAgICAgICAgd2lucGF0aHMgPSBbb3MucGF0aC5leHBhbmR1c2VyKCJ+XFxBcHBEYXRhXFxM
b2NhbFxcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNhdGlvbiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVz
XFxNaWNyb3NvZnRcXEVkZ2VcXEFwcGxpY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3MucGF0aC5leHBhbmR2YXJzKCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXNcXE1p
Y3Jvc29mdFxcRWRnZSBCZXRhXFxBcHBsaWNhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxN
aWNyb3NvZnRcXEVkZ2UgRGV2XFxBcHBsaWNhdGlvbiIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnRcXEVkZ2VcXEFwcGxpY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3MucGF0aC5leHBhbmR2YXJzKCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdFxcRWRnZSBCZXRhXFxBcHBsaWNhdGlvbiIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnRcXEVkZ2UgRGV2XFxBcHBsaWNhdGlvbiIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxMb2Nh
bFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBwbGljYXRpb24iKV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcXExvY2FsXFxNaWNyb3Nv
ZnRcXEVkZ2UgU3hTXFxBcHBsaWNhdGlvbiIpXQogICAgICAgICAgICAgICAgIHJldHVybiBmaW5k
X2V4ZWN1dGFibGUoYmluYXJ5bmFtZSwgb3MucGF0aHNlcC5qb2luKHdpbnBhdGhzKSkKICAgICAg
ICAgaWYgc2VsZi5wbGF0Zm9ybSA9PSAibWFjb3MiOgogICAgICAgICAgICAgYmluYXJ5bmFtZSA9
ICJNaWNyb3NvZnQgRWRnZSBDYW5hcnkiCkBAIC05NzMsNyArOTg4LDcgQEAgY2xhc3MgRWRnZShC
cm93c2VyKToKICAgICBwcm9kdWN0ID0gImVkZ2UiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVp
cmVtZW50c19lZGdlLnR4dCIKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTEwMDcs
NyArMTAyMiw3IEBAIGNsYXNzIEludGVybmV0RXhwbG9yZXIoQnJvd3Nlcik6CiAgICAgcHJvZHVj
dCA9ICJpZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2llLnR4dCIKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTEwMzUsNyArMTA1MCw3IEBAIGNsYXNzIFNhZmFy
aShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gInNhZmFyaSIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX3NhZmFyaS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC0xMTA1LDE0ICsxMTIwLDE1IEBAIGNsYXNzIFNlcnZvKEJyb3dzZXIpOgogICAgICAgICB1cmwg
PSAiaHR0cHM6Ly9kb3dubG9hZC5zZXJ2by5vcmcvbmlnaHRseS8lcy9zZXJ2by1sYXRlc3QlcyIg
JSAocGxhdGZvcm0sIGV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuIGdldCh1cmwpCiAKLSAgICBk
ZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPSJuaWdodGx5Iik6CisgICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIsIHJlbmFtZT1Ob25l
KToKICAgICAgICAgaWYgZGVzdCBpcyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAog
CiAgICAgICAgIHJlc3AgPSBzZWxmLl9nZXQoZGVzdCwgY2hhbm5lbCkKICAgICAgICAgXywgZXh0
ZW5zaW9uLCBfID0gc2VsZi5wbGF0Zm9ybV9jb21wb25lbnRzKCkKIAotICAgICAgICB3aXRoIG9w
ZW4ob3MucGF0aC5qb2luKGRlc3QsICJzZXJ2by1sYXRlc3QlcyIgJSAoZXh0ZW5zaW9uLCkpLCAi
dyIpIGFzIGY6CisgICAgICAgIGZpbGVuYW1lID0gcmVuYW1lIGlmIHJlbmFtZSBpcyBub3QgTm9u
ZSBlbHNlICJzZXJ2by1sYXRlc3QiCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVz
dCwgIiVzJXMiICUgKGZpbGVuYW1lLCBleHRlbnNpb24sKSksICJ3IikgYXMgZjoKICAgICAgICAg
ICAgIGYud3JpdGUocmVzcC5jb250ZW50KQogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPSJuaWdodGx5Iik6CkBAIC0xMTU5LDcgKzExNzUsNyBAQCBjbGFzcyBTYXVj
ZShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gInNhdWNlIgogICAgIHJlcXVpcmVtZW50cyA9ICJy
ZXF1aXJlbWVudHNfc2F1Y2UudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9u
ZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFu
bmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAt
MTE4NCw3ICsxMjAwLDcgQEAgY2xhc3MgV2ViS2l0KEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAi
d2Via2l0IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfd2Via2l0LnR4dCIKIAot
ICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTEyNTAsNyArMTI2Niw3IEBAIGNsYXNzIEVw
aXBoYW55KEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiZXBpcGhhbnkiCiAgICAgcmVxdWlyZW1l
bnRzID0gInJlcXVpcmVtZW50c19lcGlwaGFueS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2Vs
ZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0
PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9
Tm9uZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNvbgppbmRleCA2MGZlMTYy
MWFmMGRlY2QwZmFhNDM0ZjI2ZGNiYTk5NTE1NDE3M2U3Li5hNDdhYjQwZDcyODQ3ZDVmNTM2ZTBh
YzJlMDJlYjNmZTBmZWEyMzNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2NvbW1hbmRzLmpz
b24KQEAgLTUyLDcgKzUyLDYgQEAKICAgICAicGFyc2VyIjogImdldF9wYXJzZXIiLAogICAgICJo
ZWxwIjogIkluc3RhbGwgYnJvd3NlciBjb21wb25lbnRzIiwKICAgICAiaW5zdGFsbCI6IFsKLSAg
ICAgICJtb3pkb3dubG9hZCIsCiAgICAgICAibW96aW5zdGFsbCIKICAgICBdCiAgIH0sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9pbnN0YWxsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQppbmRleCAyNDkxNWYwYzk4ZDBiZTNhODY0YTNhNTE1
YmEwZTE2MmRjMzdkYThjLi42ZWI1OWY4MTRiZjA4ZDEzOWQ1OTdhNGI0YjI2YTdkN2FhOTIwZmQ2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9pbnN0YWxsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKQEAgLTEsNyArMSw2IEBACiBpbXBv
cnQgYXJncGFyc2UKLWltcG9ydCBicm93c2VyCiBpbXBvcnQgc3lzCi0KK2Zyb20gLiBpbXBvcnQg
YnJvd3NlcgogCiBsYXRlc3RfY2hhbm5lbHMgPSB7CiAgICAgJ2ZpcmVmb3gnOiAnbmlnaHRseScs
CkBAIC00NCw2ICs0Myw5IEBAIGRlZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAnbGF0ZXN0IGJyb3dzZXIgcmVsZWFzZSBvbiB0aGUgc2VsZWN0ZWQgY2hhbm5lbC4nKQog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZG93bmxvYWQtb25seScsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb3dubG9hZCB0aGUgc2VsZWN0
ZWQgY29tcG9uZW50IGJ1dCBkb24ndCBpbnN0YWxsIGl0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctLXJlbmFtZScsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJGaWxlbmFtZSwgZXhjbHVkaW5nIGV4dGVuc2lvbiBmb3IgZG93
bmxvYWRlZCBhcmNoaXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIob25seSB3aXRoIC0t
ZG93bmxvYWQtb25seSkiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVzdGlu
YXRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZXN5c3RlbSBkaXJlY3Rv
cnkgdG8gcGxhY2UgdGhlIGNvbXBvbmVudCcpCiAgICAgcmV0dXJuIHBhcnNlcgpAQCAtNzYsMTAg
Kzc4LDExIEBAIGRlZiBydW4odmVudiwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTm8gLS1kZXN0aW5hdGlvbiBhcmd1bWVudCwgYW5kIG5vIGRl
ZmF1bHQgZm9yIHRoZSBlbnZpcm9ubWVudCIpCiAKICAgICBpbnN0YWxsKGJyb3dzZXIsIGt3YXJn
c1siY29tcG9uZW50Il0sIGRlc3RpbmF0aW9uLCBjaGFubmVsLAotICAgICAgICAgICAgZG93bmxv
YWRfb25seT1rd2FyZ3NbImRvd25sb2FkX29ubHkiXSkKKyAgICAgICAgICAgIGRvd25sb2FkX29u
bHk9a3dhcmdzWyJkb3dubG9hZF9vbmx5Il0sIHJlbmFtZT1rd2FyZ3NbInJlbmFtZSJdKQogCiAK
LWRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRpb24sIGNoYW5uZWw9Im5pZ2h0
bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvYWRfb25seT1GYWxzZSk6CitkZWYgaW5zdGFsbChuYW1l
LCBjb21wb25lbnQsIGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUs
IGRvd25sb2FkX29ubHk9RmFsc2UsCisgICAgICAgICAgICByZW5hbWU9Tm9uZSk6CiAgICAgaWYg
bG9nZ2VyIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCBsb2dnaW5nCiAgICAgICAgIGxvZ2dlciA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJpbnN0YWxsIikKQEAgLTkxLDYgKzk0LDkgQEAgZGVmIGluc3Rh
bGwobmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbiwgY2hhbm5lbD0ibmlnaHRseSIsIGxvZ2dl
cj1Ob25lLCBkb3dubG8KIAogICAgIHN1YmNsYXNzID0gZ2V0YXR0cihicm93c2VyLCBuYW1lLnRp
dGxlKCkpCiAgICAgc3lzLnN0ZG91dC53cml0ZSgnTm93IGluc3RhbGxpbmcgJXMgJXMuLi5cbicg
JSAobmFtZSwgY29tcG9uZW50KSkKLSAgICBwYXRoID0gZ2V0YXR0cihzdWJjbGFzcyhsb2dnZXIp
LCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24sIGNoYW5uZWw9Y2hhbm5lbCkKKyAgICBrd2FyZ3Mg
PSB7fQorICAgIGlmIGRvd25sb2FkX29ubHkgYW5kIHJlbmFtZToKKyAgICAgICAga3dhcmdzWyJy
ZW5hbWUiXSA9IHJlbmFtZQorICAgIHBhdGggPSBnZXRhdHRyKHN1YmNsYXNzKGxvZ2dlciksIG1l
dGhvZCkoZGVzdD1kZXN0aW5hdGlvbiwgY2hhbm5lbD1jaGFubmVsLCAqKmt3YXJncykKICAgICBp
ZiBwYXRoOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdCaW5hcnkgJXMgYXMgJXNcbicgJSAo
ImRvd25sb2FkZWQiIGlmIGRvd25sb2FkX29ubHkgZWxzZSAiaW5zdGFsbGVkIiwgcGF0aCwpKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvcGF0aHMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9wYXRocwppbmRleCAzNTg2N2M0Y2NiZmU5NWM0ZTcxYThkNzFjZTkwYTdi
Mzc4OTUxZmQ1Li42YjA5Y2M4YmRhYmVjOWM2YTM2ZWUyNTcyOTNiZTkwMmM3OThiMTRlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9wYXRocworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9wYXRocwpAQCAtMiw1ICsyLDYgQEAgdG9vbHMvY2kvCiB0b29scy9kb2Nr
ZXIvCiB0b29scy9saW50LwogdG9vbHMvbWFuaWZlc3QvCit0b29scy9xdWljLwogdG9vbHMvc2Vy
dmUvCiB0b29scy93cHQvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4
dAppbmRleCA1NjYwODNjYjZiZTg5YTAzZTQ4Y2M1YzFhMGE4OGZjNWNlNTNhODUzLi4zYmFlZmE1
MGVhOTgxOTc0YmU2NmI2ZTIyNmUwNTBlNTllMDM0YzIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3JlcXVpcmVtZW50cy50eHQKQEAgLTEgKzEsMiBAQAotcmVxdWVzdHM9PTIuMjIuMAor
cmVxdWVzdHM9PTIuMjMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0cHM6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxp
c3QucHkKaW5kZXggYzRjYmMyOTQzYjdjZTAyZWYyYTU4ZjY1ZDM0YWI3MTdiZmIwYzk4MS4uMTg5
M2ZkZWZhODM0NmU4Zjk2OWU0MTc4OWRmNmUzZGRkODU0MDYyOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9yZXZsaXN0LnB5CkBAIC0xMDYsMTEgKzEwNiwxNCBAQCBkZWYgZ2V0X3BhcnNlcigpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJtYXhpbXVtIG51bWJlciBvZiByZXZpc2lvbnMgdG8gYmUgcmV0dXJuZWQgYnkgIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGNvbW1hbmQiKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImRlYnVn
IGxvZ2dpbmciKQogICAgIHJldHVybiBwYXJzZXIKIAogCiBkZWYgcnVuX3Jldl9saXN0KCoqa3dh
cmdzKToKICAgICAjIHR5cGU6ICgqKkFueSkgLT4gTm9uZQorICAgIGlmIGt3YXJncy5nZXQoJ3Zl
cmJvc2UnKToKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCiAgICAgIyAi
ZXBvY2hfdGhyZXNob2xkIiBpcyBhIHNhZmV0eSBtYXJnaW4uIEFmdGVyIHRoaXMgdGltZSBpdCBp
cyBmaW5lIHRvCiAgICAgIyBhc3N1bWUgdGhhdCBhbnkgdGFncyBhcmUgY3JlYXRlZCBhbmQgcHVz
aGVkLgogICAgIGVwb2NoX3RocmVzaG9sZCA9IDYwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5Cmlu
ZGV4IDBjNzMyZTdhZThhZWU3ZDQ0MTAxNTY0MmJhOGYyZmNiZDdlNjZlMGUuLmE5ZmRlYWRhMWVj
NzgwYTUwMDkzZjIyMTY3M2NmNDA2ODY0ZTM2YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkK
QEAgLTE4Myw2ICsxODMsMTYgQEAgY2xhc3MgQnJvd3NlclNldHVwKG9iamVjdCk6CiAgICAgZGVm
IHNldHVwKHNlbGYsIGt3YXJncyk6CiAgICAgICAgIHNlbGYuc2V0dXBfa3dhcmdzKGt3YXJncykK
IAorZGVmIHNhZmVfdW5zZXRlbnYoZW52X3Zhcik6CisgICAgIiIiU2FmZWx5IHJlbW92ZSBhbiBl
bnZpcm9ubWVudCB2YXJpYWJsZS4KKworICAgIFB5dGhvbjMgZG9lcyBub3Qgc3VwcG9ydCBvcy51
bnNldGVudiBpbiBXaW5kb3dzIGZvciBweXRob248My45LCBzbyB3ZSBiZXR0ZXIKKyAgICByZW1v
dmUgdGhlIHZhcmlhYmxlIGRpcmVjdGx5IGZyb20gb3MuZW52aXJvbi4KKyAgICAiIiIKKyAgICB0
cnk6CisgICAgICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCisgICAgZXhjZXB0IEtleUVycm9y
OgorICAgICAgICBwYXNzCiAKIGNsYXNzIEZpcmVmb3goQnJvd3NlclNldHVwKToKICAgICBuYW1l
ID0gImZpcmVmb3giCkBAIC0yNDMsOSArMjUzLDkgQEAgQ29uc2lkZXIgaW5zdGFsbGluZyBjZXJ0
dXRpbCB2aWEgeW91ciBPUyBwYWNrYWdlIG1hbmFnZXIgb3IgZGlyZWN0bHkuIiIiKQogICAgICAg
ICAgICAgbG9nZ2VyLmluZm8oIlJ1bm5pbmcgaW4gaGVhZGxlc3MgbW9kZSwgcGFzcyAtLW5vLWhl
YWRsZXNzIHRvIGRpc2FibGUiKQogCiAgICAgICAgICMgVHVybiBvZmYgRmlyZWZveCBXZWJSVEMg
SUNFIGxvZ2dpbmcgb24gV1BUICh0dXJuZWQgb24gYnkgbW96cnVubmVyKQotICAgICAgICBvcy51
bnNldGVudignUl9MT0dfTEVWRUwnKQotICAgICAgICBvcy51bnNldGVudignUl9MT0dfREVTVElO
QVRJT04nKQotICAgICAgICBvcy51bnNldGVudignUl9MT0dfVkVSQk9TRScpCisgICAgICAgIHNh
ZmVfdW5zZXRlbnYoJ1JfTE9HX0xFVkVMJykKKyAgICAgICAgc2FmZV91bnNldGVudignUl9MT0df
REVTVElOQVRJT04nKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19WRVJCT1NFJykKIAog
ICAgICAgICAjIEFsbG93IFdlYlJUQyB0ZXN0cyB0byBjYWxsIGdldFVzZXJNZWRpYS4KICAgICAg
ICAga3dhcmdzWyJleHRyYV9wcmVmcyJdLmFwcGVuZCgibWVkaWEubmF2aWdhdG9yLnN0cmVhbXMu
ZmFrZT10cnVlIikKQEAgLTcwNSw4ICs3MTUsOSBAQCBkZWYgc2V0dXBfbG9nZ2luZyhrd2FyZ3Ms
IGRlZmF1bHRfY29uZmlnPU5vbmUsIGZvcm1hdHRlcl9kZWZhdWx0cz1Ob25lKToKIAogZGVmIHNl
dHVwX3dwdHJ1bm5lcih2ZW52LCBwcm9tcHQ9VHJ1ZSwgaW5zdGFsbF9icm93c2VyPUZhbHNlLCAq
Kmt3YXJncyk6CiAgICAgZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5lCisgICAg
ZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCi0gICAga3dhcmdzID0gdXRpbHMuS3dhcmdzKGt3
YXJncy5pdGVyaXRlbXMoKSkKKyAgICBrd2FyZ3MgPSB1dGlscy5Ld2FyZ3MoaXRlcml0ZW1zKGt3
YXJncykpCiAKICAgICBwcm9kdWN0X3BhcnRzID0ga3dhcmdzWyJwcm9kdWN0Il0uc3BsaXQoIjoi
KQogICAgIGt3YXJnc1sicHJvZHVjdCJdID0gcHJvZHVjdF9wYXJ0c1swXS5yZXBsYWNlKCItIiwg
Il8iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5CmluZGV4IGNmMTJhNTljOGU2
OGE3MGY3ODI1NjNhODFjMTUxMTI0Mjk2MmVkZjMuLmYyOTYwZThmNTFlNDQ1ZTNmNmY1M2JhOGU3
YzAxNDVhYTUwNzIwMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMucHkKQEAg
LTI0Nyw3ICsyNDcsNyBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAj
IHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgbm9udGVzdHNfY2hhbmdlZCA9IHNldChmaWxlc19j
aGFuZ2VkKQogICAgIHdwdF9tYW5pZmVzdCA9IGxvYWRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCwg
bWFuaWZlc3RfdXBkYXRlKQogCi0gICAgdGVzdF90eXBlcyA9IFsidGVzdGhhcm5lc3MiLCAicmVm
dGVzdCIsICJ3ZHNwZWMiXQorICAgIHRlc3RfdHlwZXMgPSBbImNyYXNodGVzdCIsICJ0ZXN0aGFy
bmVzcyIsICJyZWZ0ZXN0IiwgIndkc3BlYyJdCiAgICAgc3VwcG9ydF9maWxlcyA9IHtvcy5wYXRo
LmpvaW4od3B0X3Jvb3QsIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgXywgcGF0aCwg
XyBpbiB3cHRfbWFuaWZlc3QuaXRlcnR5cGVzKCJzdXBwb3J0Iil9CiAgICAgd2RzcGVjX3Rlc3Rf
ZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQpAQCAtMjc4LDggKzI3OCw4IEBA
IGRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdlZCwgICMgdHlwZTogSXRlcmFibGVb
VGV4dF0KICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgcmVw
b19wYXRoWzE6XS5yZXBsYWNlKCIvIiwgb3MucGF0aC5zZXApKQogICAgICAgICBub250ZXN0X2No
YW5nZWRfcGF0aHMuYWRkKChmdWxsX3BhdGgsIHJlcG9fcGF0aCkpCiAKLSAgICBpbnRlcmZhY2Vf
bmFtZSA9IGxhbWJkYSB4OiBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoeCkpWzBd
Ci0gICAgaW50ZXJmYWNlc19jaGFuZ2VkX25hbWVzID0gbWFwKGludGVyZmFjZV9uYW1lLCBpbnRl
cmZhY2VzX2NoYW5nZWQpCisgICAgaW50ZXJmYWNlc19jaGFuZ2VkX25hbWVzID0gW29zLnBhdGgu
c3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShpbnRlcmZhY2UpKVswXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgaW50ZXJmYWNlIGluIGludGVyZmFjZXNfY2hhbmdlZF0KIAog
ICAgIGRlZiBhZmZlY3RlZF9ieV93ZHNwZWModGVzdCk6CiAgICAgICAgICMgdHlwZTogKHN0cikg
LT4gYm9vbApAQCAtMzI0LDkgKzMyNCw5IEBAIGRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNf
Y2hhbmdlZCwgICMgdHlwZTogSXRlcmFibGVbVGV4dF0KIAogICAgICAgICAgICAgd2l0aCBvcGVu
KHRlc3RfZnVsbF9wYXRoLCAicmIiKSBhcyBmaDoKICAgICAgICAgICAgICAgICByYXdfZmlsZV9j
b250ZW50cyA9IGZoLnJlYWQoKSAgIyB0eXBlOiBieXRlcwotICAgICAgICAgICAgICAgIGlmIHJh
d19maWxlX2NvbnRlbnRzLnN0YXJ0c3dpdGgoIlx4ZmVceGZmIik6CisgICAgICAgICAgICAgICAg
aWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aChiIlx4ZmVceGZmIik6CiAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfY29udGVudHMgPSByYXdfZmlsZV9jb250ZW50cy5kZWNvZGUoInV0Zi0x
NmJlIiwgInJlcGxhY2UiKSAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgZWxpZiByYXdf
ZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJceGZmXHhmZSIpOgorICAgICAgICAgICAgICAgIGVs
aWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aChiIlx4ZmZceGZlIik6CiAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfY29udGVudHMgPSByYXdfZmlsZV9jb250ZW50cy5kZWNvZGUoInV0Zi0x
NmxlIiwgInJlcGxhY2UiKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAg
ICAgIGZpbGVfY29udGVudHMgPSByYXdfZmlsZV9jb250ZW50cy5kZWNvZGUoInV0ZjgiLCAicmVw
bGFjZSIpCkBAIC0zOTYsNyArMzk2LDcgQEAgZGVmIHJ1bl9jaGFuZ2VkX2ZpbGVzKCoqa3dhcmdz
KToKICAgICBzZXBhcmF0b3IgPSAiXDAiIGlmIGt3YXJnc1sibnVsbCJdIGVsc2UgIlxuIgogCiAg
ICAgZm9yIGl0ZW0gaW4gc29ydGVkKGNoYW5nZWQpOgotICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KG9zLnBhdGgucmVscGF0aChpdGVtLmVuY29kZSgidXRmOCIpLCB3cHRfcm9vdCkgKyBzZXBhcmF0
b3IpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3MucGF0aC5yZWxwYXRoKHNpeC5lbnN1cmVf
c3RyKGl0ZW0pLCB3cHRfcm9vdCkgKyBzZXBhcmF0b3IpCiAKIAogZGVmIHJ1bl90ZXN0c19hZmZl
Y3RlZCgqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X2Jyb3dzZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0
X2Jyb3dzZXIucHkKaW5kZXggMjViNjZlN2Q5MjJmNTRlZGYxOTdiYWFhZjQyYzI2YzlmY2UwNDYy
MS4uZTdjMzJhMzYyMTE4NjA4NjEwMmQ1YjQ0YWFkZTNjN2YxNzVmMDdhYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQpAQCAtMTUsMTEgKzE1
LDExIEBAIGRlZiB0ZXN0X3NhZmFyaV92ZXJzaW9uKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAg
IHNhZmFyaSA9IGJyb3dzZXIuU2FmYXJpKGxvZ2dlcikKIAogICAgICMgU2FmYXJpCi0gICAgbW9j
a2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnSW5jbHVkZWQgd2l0aCBTYWZhcmkgMTIu
MSAoMTQ2MDcuMS4xMSknCisgICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBi
J0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJwogICAgIGFzc2VydCBzYWZh
cmkudmVyc2lvbih3ZWJkcml2ZXJfYmluYXJ5PSJzYWZhcmlkcml2ZXIiKSA9PSAnMTIuMSAoMTQ2
MDcuMS4xMSknCiAKICAgICAjIFNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcKLSAgICBtb2NrZWRf
Y2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdJbmNsdWRlZCB3aXRoIFNhZmFyaSBUZWNobm9s
b2d5IFByZXZpZXcgKFJlbGVhc2UgNjcsIDEzNjA3LjEuOS4wLjEpJworICAgIG1vY2tlZF9jaGVj
a19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNhZmFyaSBUZWNobm9sb2d5
IFByZXZpZXcgKFJlbGVhc2UgNjcsIDEzNjA3LjEuOS4wLjEpJwogICAgIGFzc2VydCBzYWZhcmku
dmVyc2lvbih3ZWJkcml2ZXJfYmluYXJ5PSJzYWZhcmlkcml2ZXIiKSA9PSAnVGVjaG5vbG9neSBQ
cmV2aWV3IChSZWxlYXNlIDY3LCAxMzYwNy4xLjkuMC4xKScKIAogQG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JykKQEAgLTMwLDExICszMCwxMSBAQCBkZWYgdGVzdF9zYWZhcmlf
dmVyc2lvbl9lcnJvcnMobW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgYXNzZXJ0IHNhZmFyaS52
ZXJzaW9uKCkgaXMgTm9uZQogCiAgICAgIyBgc2FmYXJpZHJpdmVyIC0tdmVyc2lvbmAgcmV0dXJu
IGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2dpYmJl
cmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInZ2liYmVyaXNo
JwogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbih3ZWJkcml2ZXJfYmluYXJ5PSJzYWZhcmlkcml2
ZXIiKSBpcyBOb25lCiAKICAgICAjIGBzYWZhcmlkcml2ZXIgLS12ZXJzaW9uYCBmYWlscyAoYXMg
aXQgZG9lcyBmb3IgU2FmYXJpIDw9MTIuMCkKLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVy
bl92YWx1ZSA9ICdkdW1teScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9
IGInZHVtbXknCiAgICAgbW9ja2VkX2NoZWNrX291dHB1dC5zaWRlX2VmZmVjdCA9IHN1YnByb2Nl
c3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKQogICAgIGFzc2VydCBzYWZhcmkudmVyc2lv
bih3ZWJkcml2ZXJfYmluYXJ5PSJzYWZhcmlkcml2ZXIiKSBpcyBOb25lCiAKQEAgLTQ0LDExICs0
NCwxMSBAQCBkZWYgdGVzdF93ZWJraXRndGtfbWluaWJyb3dzZXJfdmVyc2lvbihtb2NrZWRfY2hl
Y2tfb3V0cHV0KToKICAgICB3ZWJraXRndGtfbWluaWJyb3dzZXIgPSBicm93c2VyLldlYktpdEdU
S01pbmlCcm93c2VyKGxvZ2dlcikKIAogICAgICMgc3RhYmxlIHZlcnNpb24KLSAgICBtb2NrZWRf
Y2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdXZWJLaXRHVEsgMi4yNi4xXG4nCisgICAgbW9j
a2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ1dlYktpdEdUSyAyLjI2LjFcbicKICAg
ICBhc3NlcnQgd2Via2l0Z3RrX21pbmlicm93c2VyLnZlcnNpb24oYmluYXJ5PSdNaW5pQnJvd3Nl
cicpID09ICcyLjI2LjEnCiAKICAgICAjIG5pZ2h0bHkgdmVyc2lvbgotICAgIG1vY2tlZF9jaGVj
a19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ1dlYktpdEdUSyAyLjI3LjEgKHIyNTA4MjMpXG4nCisg
ICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ1dlYktpdEdUSyAyLjI3LjEg
KHIyNTA4MjMpXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJp
bmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNy4xIChyMjUwODIzKScKIAogQG1vY2sucGF0Y2go
J3N1YnByb2Nlc3MuY2hlY2tfb3V0cHV0JykKQEAgLTU5LDExICs1OSwxMSBAQCBkZWYgdGVzdF93
ZWJraXRndGtfbWluaWJyb3dzZXJfdmVyc2lvbl9lcnJvcnMobW9ja2VkX2NoZWNrX291dHB1dCk6
CiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKCkgaXMgTm9uZQogCiAg
ICAgIyBgTWluaUJyb3dzZXIgLS12ZXJzaW9uYCByZXR1cm4gZ2liYmVyaXNoCi0gICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZ2liYmVyaXNoJworICAgIG1vY2tlZF9jaGVj
a19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidnaWJiZXJpc2gnCiAgICAgYXNzZXJ0IHdlYmtpdGd0
a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSBpcyBOb25lCiAKICAg
ICAjIGBNaW5pQnJvd3NlciAtLXZlcnNpb25gIGZhaWxzIChhcyBpdCBkb2VzIGZvciBNaW5pQnJv
d3NlciA8PSAyLjI2LjApCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
ZHVtbXknCisgICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15Jwog
ICAgIG1vY2tlZF9jaGVja19vdXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFBy
b2Nlc3NFcnJvcigxLCAnY21kJykKICAgICBhc3NlcnQgd2Via2l0Z3RrX21pbmlicm93c2VyLnZl
cnNpb24oYmluYXJ5PSdNaW5pQnJvd3NlcicpIGlzIE5vbmUKIApAQCAtOTMsMTEgKzkzLDExIEBA
IGRlZiB0ZXN0X3dlYmtpdGd0a19taW5pYnJvd3Nlcl9maW5kX2JpbmFyeShtb2NrZWRfb3NfcGF0
aF9pc2ZpbGUpOgogICAgICMgRm91bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFN
RDY0IChnY2MgYXZhaWxhYmxlIGJ1dCBnaXZlcyBhbiBlcnJvcikKICAgICBkZWJpYW5fbWluaWJy
b3dzZXJfcGF0aF9hbWQ2NCA9ICcvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3dlYmtpdDJndGst
NC4wL01pbmlCcm93c2VyJwogICAgIG1vY2tlZF9vc19wYXRoX2lzZmlsZS5zaWRlX2VmZmVjdCA9
IGxhbWJkYSBwYXRoOiBwYXRoIGluIFtkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NCwgJy91
c3IvYmluL2djYyddCi0gICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1
dCcsIHJldHVybl92YWx1ZSA9ICdlcnJvcicsIHNpZGVfZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpKToKKyAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nl
c3MuY2hlY2tfb3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidlcnJvcicsIHNpZGVfZWZmZWN0ID0g
c3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpKToKICAgICAgICAgYXNzZXJ0
IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgpID09IGRlYmlhbl9taW5pYnJvd3Nl
cl9wYXRoX2FtZDY0CiAKICAgICAgICAgIyBGb3VuZCBvbiB0aGUgZGVmYXVsdCBEZWJpYW4gcGF0
aCBmb3IgQVJNNjQgKGdjYyBhdmFpbGFibGUpCiAgICAgICAgIGRlYmlhbl9taW5pYnJvd3Nlcl9w
YXRoX2FybTY0ID0gJy91c3IvbGliL2FhcmNoNjQtbGludXgtZ251L3dlYmtpdDJndGstNC4wL01p
bmlCcm93c2VyJwogICAgICAgICBtb2NrZWRfb3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBs
YW1iZGEgcGF0aDogcGF0aCBpbiBbZGViaWFuX21pbmlicm93c2VyX3BhdGhfYXJtNjQsICcvdXNy
L2Jpbi9nY2MnXQotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfb3V0
cHV0JywgcmV0dXJuX3ZhbHVlID0gJ2FhcmNoNjQtbGludXgtZ251Jyk6CisgICAgICAgIHdpdGgg
bW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSBiJ2Fh
cmNoNjQtbGludXgtZ251Jyk6CiAgICAgICAgICAgICBhc3NlcnQgd2Via2l0Z3RrX21pbmlicm93
c2VyLmZpbmRfYmluYXJ5KCkgPT0gZGViaWFuX21pbmlicm93c2VyX3BhdGhfYXJtNjQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L3Rlc3RzL3Rlc3RfbWFya2Rvd24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRlYzlhZDljNDg5MDY3NjY2MjRlYzU5NGM5OTRkNTJlNzBjOTZmYTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5CkBAIC0wLDAgKzEsMzUgQEAKK2Zyb20gdG9vbHMu
d3B0IGltcG9ydCBtYXJrZG93bgorCitkZWYgdGVzdF9mb3JtYXRfY29tbWVudF90aXRsZSgpOgor
ICAgIGFzc2VydCAnIyBCcm93c2VyICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50X3RpdGxl
KCJicm93c2VyIikKKyAgICBhc3NlcnQgJyMgQnJvd3NlciAoY2hhbm5lbCkgIycgPT0gbWFya2Rv
d24uZm9ybWF0X2NvbW1lbnRfdGl0bGUoImJyb3dzZXI6Y2hhbm5lbCIpCisKK2RlZiB0ZXN0X21h
cmtkb3duX2FkanVzdCgpOgorICAgIGFzc2VydCB1J1xcdCcgPT0gbWFya2Rvd24ubWFya2Rvd25f
YWRqdXN0KCdcdCcpCisgICAgYXNzZXJ0IHUnXFxyJyA9PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1
c3QoJ1xyJykKKyAgICBhc3NlcnQgdSdcXG4nID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgn
XG4nKQorICAgIGFzc2VydCB1JycgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdgJykKKyAg
ICBhc3NlcnQgdSdcXHwnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnfCcpCisgICAgYXNz
ZXJ0IHUnXFx0XFxyXFxuXFx8JyA9PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1x0XHJcbmB8
JykKKworcmVzdWx0ID0gJycKK2RlZiBsb2codGV4dCk6CisgICAgZ2xvYmFsIHJlc3VsdAorICAg
IHJlc3VsdCArPSB0ZXh0CisKK2RlZiB0ZXN0X3RhYmxlKCk6CisgICAgZ2xvYmFsIHJlc3VsdAor
ICAgIGhlYWRpbmdzID0gWydoMScsJ2gyJ10KKyAgICBkYXRhID0gW1snMCcsICcxJ11dCisgICAg
bWFya2Rvd24udGFibGUoaGVhZGluZ3MsIGRhdGEsIGxvZykKKyAgICBhc3NlcnQgKCJ8IGgxIHwg
aDIgfCIKKyAgICAgICAgICAgICJ8LS0tLXwtLS0tfCIKKyAgICAgICAgICAgICJ8IDAgIHwgMSAg
fCIpID09IHJlc3VsdAorCisgICAgcmVzdWx0ID0gJycKKyAgICBkYXRhLmFwcGVuZChbJ2FhYScs
ICdiYiddKQorICAgIG1hcmtkb3duLnRhYmxlKGhlYWRpbmdzLCBkYXRhLCBsb2cpCisgICAgYXNz
ZXJ0ICgifCAgaDEgfCBoMiB8IgorICAgICAgICAgICAgInwtLS0tLXwtLS0tfCIKKyAgICAgICAg
ICAgICJ8IDAgICB8IDEgIHwiCisgICAgICAgICAgICAifCBhYWEgfCBiYiB8IikgPT0gcmVzdWx0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkKaW5k
ZXggZWMyYTZiODk5ZDVkMWE5MjdkY2FkMWY5YTc1ODNmOTg3YTNhZDk0Ny4uMzAyMDhmNGNmNjhk
Nzk1OTY2ZTc4NThkYWEwNzMwYjY4ZmEzZTkwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQpAQCAtMTEsMTAgKzExLDEzIEBAIGRlZiB0ZXN0
X2NhbGN1bGF0ZV9jdXRvZmZfZGF0ZSgpOgogCiAKIGRlZiB0ZXN0X3BhcnNlX2Vwb2NoKCk6Ci0g
ICAgYXNzZXJ0IHJldmxpc3QucGFyc2VfZXBvY2goYiIxMGgiKSA9PSAzNjAwMAotICAgIGFzc2Vy
dCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIiMTBkIikgPT0gODY0MDAwCi0gICAgYXNzZXJ0IHJldmxp
c3QucGFyc2VfZXBvY2goYiIxMHciKSA9PSA2MDQ4MDAwCisgICAgYXNzZXJ0IHJldmxpc3QucGFy
c2VfZXBvY2goIjEwaCIpID09IDM2MDAwCisgICAgYXNzZXJ0IHJldmxpc3QucGFyc2VfZXBvY2go
IjEwZCIpID09IDg2NDAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMHciKSA9
PSA2MDQ4MDAwCiAKK2RlZiBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgZXhwZWN0
ZWRfcmV2aXNpb25zKToKKyAgICBmb3IgdGFnZ2VkLCBleHBlY3RlZCBpbiB6aXAodGFnZ2VkX3Jl
dmlzaW9ucywgZXhwZWN0ZWRfcmV2aXNpb25zKToKKyAgICAgICAgYXNzZXJ0IHRhZ2dlZCA9PSBl
eHBlY3RlZAogCiBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnKQogZGVmIHRl
c3RfZ2V0X2Vwb2NoX3JldmlzaW9ucyhtb2NrZWRfY2hlY2tfb3V0cHV0KToKQEAgLTUwLDE2ICs1
Myw5IEBAIG1lcmdlX3ByX0MgQyA0NzUyMDAgX3R1ZV8KIG1lcmdlX3ByX0IgQiA0NTM2MDAgX3R1
ZV8KIG1lcmdlX3ByX0EgQSAzODg4MDAgX21vbl8KICcnJwotICAgIHRhZ2dlZF9yZXZpc29ucyA9
IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDgpCi0gICAgYXNzZXJ0
IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ04nCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29u
cy5uZXh0KCkgPT0gJ00nCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0sn
Ci0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0onCi0gICAgYXNzZXJ0IHRh
Z2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0cnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5u
ZXh0KCkgPT0gJ0YnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0MnCi0g
ICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0EnCi0gICAgYXNzZXJ0IGxlbihs
aXN0KHRhZ2dlZF9yZXZpc29ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAorICAgIHRh
Z2dlZF9yZXZpc2lvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGls
LCA4KQorICAgIGNoZWNrX3JldmlzaW9ucyh0YWdnZWRfcmV2aXNpb25zLCBbJ04nLCAnTScsICdL
JywgJ0onLCAnRycsICdGJywgJ0MnLCAnQSddKQorICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRf
cmV2aXNpb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCiAKIAogICAgICMgY2hlY2s6
IG1heF9jb3VudCB3aXRoIGVub3VnaCBjYW5kaWRhdGUgaXRlbXMgaW4gdGhlIHJldmlzaW9uIGxp
c3QKQEAgLTgyLDEzICs3OCw5IEBAIG1lcmdlX3ByX0QgRCA2NDgwMDAgX3RodV8KIG1lcmdlX3By
X0MgQyA1NjE2MDAgX3dlZF8KIG1lcmdlX3ByX0IgQiA0NzUyMDAgX3RodV8KICcnJwotICAgIHRh
Z2dlZF9yZXZpc29ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWws
IDUpCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0cnCi0gICAgYXNzZXJ0
IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0YnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29u
cy5uZXh0KCkgPT0gJ0UnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0Qn
Ci0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0MnCi0gICAgYXNzZXJ0IGxl
bihsaXN0KHRhZ2dlZF9yZXZpc29ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAorICAg
IHRhZ2dlZF9yZXZpc2lvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVu
dGlsLCA1KQorICAgIGNoZWNrX3JldmlzaW9ucyh0YWdnZWRfcmV2aXNpb25zLCBbJ0cnLCAnRics
ICdFJywgJ0QnLCAnQyddKQorICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNpb25zKSkg
PT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCiAKIAogICAgICMgY2hlY2s6IG1heF9jb3VudCB3
aXRoIGxlc3MgcmV0dXJuZWQgY2FuZGlkYXRlcyBpdGVtcyB0aGFuIHRoZSBuZWVkZWQKQEAgLTEw
NywxMCArOTksOSBAQCBtZXJnZV9wcl9IIEggOTkzNjAwIF9tb25fCiBtZXJnZV9wcl9HIEcgOTA3
MjAwIF9zdW5fCiBtZXJnZV9wcl9GIEYgODIwODAwIF9zYXRfCiAnJycKLSAgICB0YWdnZWRfcmV2
aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAg
IGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRf
cmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNv
bnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0g
cmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVja19y
ZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnXSkKKyAgICBhc3NlcnQgbGVuKGxp
c3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAogCiAKICAg
ICAjIGNoZWNrOiBpbml0aWFsIHVudGlsIHZhbHVlIGlzIG9uIGFuIGVwb2NoIGJvdW5kYXJ5CkBA
IC0xMzQsMTAgKzEyNSw5IEBAIG1lcmdlX3ByX0ggSCAxMjk2MDAwIF93ZWRfCiBtZXJnZV9wcl9H
IEcgOTUwNDAwIF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0YWdn
ZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAz
KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRf
cmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNp
b25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKKyAgICBj
aGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnXSkKKyAgICBhc3NlcnQg
bGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAog
CiAKICAgICAjIGNoZWNrOiB1bnRpbCBhbGlnbmVkIHdpdGggTW9uZGF5LCA1IEphbnVhcnkgMTk3
MCAwOjAwOjAwICgzNDU2MDApCkBAIC0xNTgsNiArMTQ4LDYgQEAgbWVyZ2VfcHJfSCBIIDExODA4
MDAgX3dlZF8KIG1lcmdlX3ByX0cgRyA5NTA0MDAgX21vbl8KIG1lcmdlX3ByX0YgRiA5MjE2MDAg
X3N1ZF8KICcnJwotICAgIHRhZ2dlZF9yZXZpc29ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3Jldmlz
aW9ucyhlcG9jaCwgdW50aWwsIDEpCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkg
PT0gJ0YnCi0gICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc29ucykpID09IDAgICMgZ2Vu
ZXJhdG9yIGV4aGF1c3RlZAorICAgIHRhZ2dlZF9yZXZpc2lvbnMgPSByZXZsaXN0LmdldF9lcG9j
aF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAxKQorICAgIGNoZWNrX3JldmlzaW9ucyh0YWdnZWRf
cmV2aXNpb25zLCBbJ0YnXSkKKyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykp
ID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0Zmls
ZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC90ZXN0cy90ZXN0X3Rlc3RmaWxlcy5weQppbmRleCAzMzEzNWRmZGMyZDViNWFlMGM3MjJk
Y2UzNGYzNWI1ODEyN2JmMzM5Li45ZmQ2YzZmOWI4NTE1MzdkZjA0NDI4NjEyM2JhNjRjOWIzZTE5
ZTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Rlc3RmaWxlcy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Rlc3Rm
aWxlcy5weQpAQCAtMSw1ICsxLDcgQEAKK2ltcG9ydCBvcy5wYXRoCiBmcm9tIG1vY2sgaW1wb3J0
IHBhdGNoCiAKK2Zyb20gdG9vbHMubWFuaWZlc3QubWFuaWZlc3QgaW1wb3J0IE1hbmlmZXN0CiBm
cm9tIHRvb2xzLndwdCBpbXBvcnQgdGVzdGZpbGVzCiAKIApAQCAtMTEsMyArMTMsMzQgQEAgZGVm
IHRlc3RfZ2V0cmV2aXNoX2t3YXJnKCk6CiBkZWYgdGVzdF9nZXRyZXZpc2hfaW1wbGljaXQoKToK
ICAgICB3aXRoIHBhdGNoKCJ0b29scy53cHQudGVzdGZpbGVzLmJyYW5jaF9wb2ludCIsIHJldHVy
bl92YWx1ZT11ImJhc2UiKToKICAgICAgICAgYXNzZXJ0IHRlc3RmaWxlcy5nZXRfcmV2aXNoKCkg
PT0gYiJiYXNlLi5IRUFEIgorCisKK2RlZiB0ZXN0X2FmZmVjdGVkX3Rlc3RmaWxlcygpOgorICAg
IG1hbmlmZXN0X2pzb24gPSB7CisgICAgICAgICJpdGVtcyI6IHsKKyAgICAgICAgICAgICJjcmFz
aHRlc3QiOiB7CisgICAgICAgICAgICAgICAgImEiOiB7CisgICAgICAgICAgICAgICAgICAgICJi
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgImMiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZvby1jcmFzaC5odG1sIjogWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYWNkZWZnaDEyMzQ1NiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
bnVsbCIsIHt9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ1cmxfYmFzZSI6ICIvIiwKKyAgICAg
ICAgInZlcnNpb24iOiA4LAorICAgIH0KKyAgICBtYW5pZmVzdCA9IE1hbmlmZXN0LmZyb21fanNv
bigiLyIsIG1hbmlmZXN0X2pzb24pCisgICAgd2l0aCBwYXRjaCgidG9vbHMud3B0LnRlc3RmaWxl
cy5sb2FkX21hbmlmZXN0IiwgcmV0dXJuX3ZhbHVlPW1hbmlmZXN0KToKKyAgICAgICAgIyBEZXBl
bmRlbnQgYWZmZWN0ZWQgdGVzdHMgYXJlIGRldGVybWluZWQgYnkgd2Fsa2luZyB0aGUgZmlsZXN5
c3RlbSwKKyAgICAgICAgIyB3aGljaCBkb2Vzbid0IHdvcmsgaW4gb3VyIHRlc3Qgc2V0dXAuIFdl
IHdvdWxkIG5lZWQgdG8gcmVmYWN0b3IKKyAgICAgICAgIyB0ZXN0ZmlsZXMuYWZmZWN0ZWRfdGVz
dGZpbGVzIG9yIGhhdmUgYSBtb3JlIGNvbXBsZXggdGVzdCBzZXR1cCB0bworICAgICAgICAjIHN1
cHBvcnQgdGVzdGluZyB0aG9zZS4KKyAgICAgICAgZnVsbF90ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4oCisgICAgICAgICAgICB0ZXN0ZmlsZXMud3B0X3Jvb3QsICJhIiwgImIiLCAiYyIsICJmb28t
Y3Jhc2guaHRtbCIpCisgICAgICAgIHRlc3RzX2NoYW5nZWQsIF8gPSB0ZXN0ZmlsZXMuYWZmZWN0
ZWRfdGVzdGZpbGVzKFtmdWxsX3Rlc3RfcGF0aF0pCisgICAgICAgIGFzc2VydCB0ZXN0c19jaGFu
Z2VkID09IHNldChbZnVsbF90ZXN0X3BhdGhdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90
ZXN0cy90ZXN0X3dwdC5weQppbmRleCA2NTY5NTgwZTlmZjQ3MTc4NGUzMDdiN2U4NDU1NTkzNWRl
Yzk5NTg2Li5mODk3YjY4OGFkNmY2ODJiZTlkNzY5ZGE5ODU3OWM3ODg1MDVjMDlhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC90ZXN0cy90ZXN0X3dwdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weQpAQCAtMSwxMiArMSwxOCBA
QAogaW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNodXRp
bAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0
ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWltcG9ydCB1cmxsaWIyCisKK3RyeToKKyAgICBmcm9tIHVy
bGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCisgICAgZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0
IFVSTEVycm9yCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB1cmxsaWIyIGltcG9ydCB1
cmxvcGVuLCBVUkxFcnJvcgogCiBpbXBvcnQgcHl0ZXN0CiAKQEAgLTM4LDYgKzQ0LDkgQEAgZGVm
IGdldF9wZXJzaXN0ZW50X21hbmlmZXN0X3BhdGgoKToKIAogQHB5dGVzdC5maXh0dXJlKHNjb3Bl
PSJtb2R1bGUiLCBhdXRvdXNlPVRydWUpCiBkZWYgaW5pdF9tYW5pZmVzdCgpOgorICAgICMgU2Vl
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3ZpcnR1YWxlbnYvaXNzdWVzLzE3MTAKKyAgICBpZiBz
eXMudmVyc2lvbl9pbmZvWzBdID49IDMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dz
IjoKKyAgICAgICAgcHl0ZXN0LnhmYWlsKHJlYXNvbj0idmlydHVhbGVudiBhY3RpdmF0aW9uIGZh
aWxzIGluIFdpbmRvd3MgZm9yIHB5dGhvbjMiKQogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0
ZW1FeGl0KSBhcyBleGNpbmZvOgogICAgICAgICB3cHQubWFpbihhcmd2PVsibWFuaWZlc3QiLCAi
LS1uby1kb3dubG9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICItLXBhdGgiLCBnZXRfcGVy
c2lzdGVudF9tYW5pZmVzdF9wYXRoKCldKQpAQCAtMjMzLDkgKzI0Miw5IEBAIGRlZiB0ZXN0X3J1
bl92ZXJpZnlfdW5zdGFibGUodGVtcF90ZXN0KToKIEBweXRlc3QubWFyay5yZW1vdGVfbmV0d29y
awogZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gIndpbjMyIjoKLSAgICAgICAgY2hyb21lZHJpdmVyX3BhdGggPSBvcy5wYXRoLmpvaW4od3B0
LmxvY2FscGF0aHMucmVwb19yb290LCAiX3ZlbnYiLCAiU2NyaXB0cyIsICJjaHJvbWVkcml2ZXIu
ZXhlIikKKyAgICAgICAgY2hyb21lZHJpdmVyX3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVy
LmV4ZSIpCiAgICAgZWxzZToKLSAgICAgICAgY2hyb21lZHJpdmVyX3BhdGggPSBvcy5wYXRoLmpv
aW4od3B0LmxvY2FscGF0aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYmluIiwgImNocm9tZWRyaXZl
ciIpCisgICAgICAgIGNocm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBh
dGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGlyKCksICJiaW4iLCAiY2hyb21lZHJpdmVyIikKICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhjaHJvbWVkcml2ZXJfcGF0aCk6CiAgICAgICAgIG9zLnVubGlu
ayhjaHJvbWVkcml2ZXJfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkg
YXMgZXhjaW5mbzoKQEAgLTI1MSw5ICsyNjAsOSBAQCBkZWYgdGVzdF9pbnN0YWxsX2Nocm9tZWRy
aXZlcigpOgogICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzE3MDc0IikKIGRlZiB0ZXN0X2luc3RhbGxfZmly
ZWZveCgpOgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKLSAgICAgICAgZnhfcGF0
aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVudiIsICJicm93
c2VycyIsICJuaWdodGx5IiwgIkZpcmVmb3ggTmlnaHRseS5hcHAiKQorICAgICAgICBmeF9wYXRo
ID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGlyKCks
ICJicm93c2VycyIsICJuaWdodGx5IiwgIkZpcmVmb3ggTmlnaHRseS5hcHAiKQogICAgIGVsc2U6
Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0aHMucmVwb19yb290
LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJmaXJlZm94IikKKyAgICAgICAgZnhf
cGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2Rp
cigpLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJmaXJlZm94IikKICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhmeF9wYXRoKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShmeF9wYXRoKQogICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBleGNpbmZvOgpAQCAtMzg4LDkgKzM5Nyw5IEBA
IGRlZiB0ZXN0X3NlcnZlKCk6CiAgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0YXJ0ID4g
NjA6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAic2VydmVyIGRpZCBub3Qgc3RhcnQg
cmVzcG9uZGluZyB3aXRoaW4gNjBzIgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHJlc3AgPSB1cmxsaWIyLnVybG9wZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikK
KyAgICAgICAgICAgICAgICByZXNwID0gdXJsb3BlbigiaHR0cDovL3dlYi1wbGF0Zm9ybS50ZXN0
OjgwMDAiKQogICAgICAgICAgICAgICAgIHByaW50KHJlc3ApCi0gICAgICAgICAgICBleGNlcHQg
dXJsbGliMi5VUkxFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBVUkxFcnJvcjoKICAgICAgICAg
ICAgICAgICBwcmludCgiVVJMRXJyb3IiKQogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkK
ICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCmluZGV4IDVjNDNmM2NhNmIyNmFhNjA1NjZhY2ZmYzMwZThlYzhlYTJiOTY0
ZTMuLjViZjI1OTk5MjJhYWQ1NjMzNGNjMWJhZGExNjliYmNjZmQ4NjFiOGEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3czYy1pbXBvcnQubG9nCkBAIC0xNiw2ICsxNiw3
IEBAIE5vbmUKIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvbGF0ZXN0X21vemlsbGFfY2VudHJhbC50eHQK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90
ZXN0cy90ZXN0X2Jyb3dzZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5CiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZs
aXN0LnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdGVzdHMvdGVzdF9ydW4ucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Rlc3RmaWxlcy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3RveC5pbmkKaW5kZXggNmEwNDQ0NzNhNmI3NDk4MTM0NTY4M2FiYjk2MDU4OGRlNjUz
NWJmYi4uOGUzZTI2ZTEzNWI0ZDM3NmE0OTJhZWE1YWRiZDI0Mjc5N2IwM2ZlMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC90b3guaW5pCkBAIC0xLDYgKzEsNyBAQAogW3RveF0KLWVudmxpc3QgPSBweTI3
CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4CiBza2lwc2Rpc3Q9VHJ1ZQorc2tp
cF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAKIFt0ZXN0ZW52XQogZGVwcyA9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC91dGlscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3V0aWxzLnB5CmluZGV4IDJkNDI3NzEzZTRlODI0ODQ1YjZkNzg3MWI2MWNk
NmYxMWVjMjUxZjYuLjlhNmMwNjQ2NzEyMDY0ZTE4M2YzNjZkZmQ1NjI5YTFiNTJlODExOWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3V0aWxzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5CkBAIC00Niw3ICs0Niw3IEBAIGRlZiBjYWxsKCph
cmdzKToKICAgICAiIiIKICAgICBsb2dnZXIuZGVidWcoIiAiLmpvaW4oYXJncykpCiAgICAgdHJ5
OgotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoYXJncykKKyAgICAgICAg
cmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MpLmRlY29kZSgndXRmOCcpCiAgICAg
ZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIGxvZ2dl
ci5jcml0aWNhbCgiJXMgZXhpdGVkIHdpdGggcmV0dXJuIGNvZGUgJWkiICUKICAgICAgICAgICAg
ICAgICAgICAgICAgIChlLmNtZCwgZS5yZXR1cm5jb2RlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC92aXJ0dWFsZW52LnB5CmluZGV4IDQwMGRlYmM4OGU0NjkxMGQyNjQxZTcyOGZjNGFkYjg2YTg4
NTY4ZTAuLjE4ZWRjYzA0ZmI0ZDUyOGU2NTY2ZGExMDkwMmE5YWM5NjRiNDJhNjUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3ZpcnR1YWxlbnYucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQpAQCAtMzIsNyArMzIsOSBAQCBjbGFzcyBW
aXJ0dWFsZW52KG9iamVjdCk6CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgZXhpc3RzKHNlbGYp
OgotICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxmLnBhdGgpCisgICAgICAgICMgV2Ug
bmVlZCB0byBjaGVjayBhbHNvIGZvciBsaWJfcGF0aCBiZWNhdXNlIGRpZmZlcmVudCBweXRob24g
dmVyc2lvbnMKKyAgICAgICAgIyBjcmVhdGUgZGlmZmVyZW50IGxpYnJhcnkgcGF0aHMuCisgICAg
ICAgIHJldHVybiBvcy5wYXRoLmlzZGlyKHNlbGYucGF0aCkgYW5kIG9zLnBhdGguaXNkaXIoc2Vs
Zi5saWJfcGF0aCkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBicm9rZW5fbGluayhzZWxmKToK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3dwdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3dwdC5weQppbmRleCA5MzMwMWRkODZiNGZmZTIwMjkwMmE0OTIyMDRl
YmE2NTM3ZmI1MGQ1Li4zOTVkYjAzOTRkYTY3Y2FhOGJkYzFhZDllNjg5ZTU4MzE3NTE5MmIwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC93cHQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvd3B0LnB5CkBAIC0zMSw2ICszMSw3IEBAIGRlZiBsb2FkX2NvbW1h
bmRzKCk6CiAgICAgICAgICAgICAgICAgICAgICJzY3JpcHQiOiBwcm9wc1sic2NyaXB0Il0sCiAg
ICAgICAgICAgICAgICAgICAgICJwYXJzZXIiOiBwcm9wcy5nZXQoInBhcnNlciIpLAogICAgICAg
ICAgICAgICAgICAgICAicGFyc2Vfa25vd24iOiBwcm9wcy5nZXQoInBhcnNlX2tub3duIiwgRmFs
c2UpLAorICAgICAgICAgICAgICAgICAgICAicHkzb25seSI6IHByb3BzLmdldCgicHkzb25seSIs
IEZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgImhlbHAiOiBwcm9wcy5nZXQoImhlbHAiKSwK
ICAgICAgICAgICAgICAgICAgICAgInZpcnR1YWxlbnYiOiBwcm9wcy5nZXQoInZpcnR1YWxlbnYi
LCBUcnVlKSwKICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwiOiBwcm9wcy5nZXQoImluc3Rh
bGwiLCBbXSksCkBAIC00MCwxMyArNDEsMTQgQEAgZGVmIGxvYWRfY29tbWFuZHMoKToKICAgICBy
ZXR1cm4gcnYKIAogCi1kZWYgcGFyc2VfYXJncyhhcmd2LCBjb21tYW5kcyk6CitkZWYgcGFyc2Vf
YXJncyhhcmd2LCBjb21tYW5kcz1sb2FkX2NvbW1hbmRzKCkpOgogICAgIHBhcnNlciA9IGFyZ3Bh
cnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlbnYiLCBh
Y3Rpb249InN0b3JlIiwgaGVscD0iUGF0aCB0byBhbiBleGlzdGluZyB2aXJ0dWFsZW52IHRvIHVz
ZSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1za2lwLXZlbnYtc2V0dXAiLCBhY3Rpb249
InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ic2tpcF92ZW52X3Nl
dHVwIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IldoZXRoZXIgdG8gdXNlIHRoZSB2
aXJ0dWFsZW52IGFzLWlzLiBNdXN0IHNldCAtLXZlbnYgYXMgd2VsbCIpCiAgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlJ1biB0aGUg
ZGVidWdnZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24iKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoIi0tcHkzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUnVuIHdpdGggcHl0aG9uMyIp
CiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhkZXN0PSJjb21tYW5kIikK
ICAgICBmb3IgY29tbWFuZCwgcHJvcHMgaW4gaXRlcml0ZW1zKGNvbW1hbmRzKToKICAgICAgICAg
c3VicGFyc2Vycy5hZGRfcGFyc2VyKGNvbW1hbmQsIGhlbHA9cHJvcHNbImhlbHAiXSwgYWRkX2hl
bHA9RmFsc2UpCkBAIC05Myw3ICs5NSw4IEBAIGRlZiBjcmVhdGVfY29tcGxldGVfcGFyc2VyKCk6
CiAgICAgZm9yIGNvbW1hbmQgaW4gY29tbWFuZHM6CiAgICAgICAgIHByb3BzID0gY29tbWFuZHNb
Y29tbWFuZF0KIAotICAgICAgICBpZiBwcm9wc1sidmlydHVhbGVudiJdOgorICAgICAgICBpZiAo
cHJvcHNbInZpcnR1YWxlbnYiXSBhbmQKKyAgICAgICAgICAgIChub3QgcHJvcHNbInB5M29ubHki
XSBvciBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMpKToKICAgICAgICAgICAgIHNldHVwX3Zp
cnR1YWxlbnYoTm9uZSwgRmFsc2UsIHByb3BzKQogCiAgICAgICAgIHN1YnBhcnNlciA9IGltcG9y
dF9jb21tYW5kKCd3cHQnLCBjb21tYW5kLCBwcm9wcylbMV0KQEAgLTEwOCwxMiArMTExLDE2IEBA
IGRlZiBjcmVhdGVfY29tcGxldGVfcGFyc2VyKCk6CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKK2Rl
ZiB2ZW52X2RpcigpOgorICAgIHJldHVybiAiX3ZlbnYiICsgc3RyKHN5cy52ZXJzaW9uX2luZm9b
MF0pCisKKwogZGVmIHNldHVwX3ZpcnR1YWxlbnYocGF0aCwgc2tpcF92ZW52X3NldHVwLCBwcm9w
cyk6CiAgICAgaWYgc2tpcF92ZW52X3NldHVwIGFuZCBwYXRoIGlzIE5vbmU6CiAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIk11c3Qgc2V0IC0tdmVudiB3aGVuIC0tc2tpcC12ZW52LXNldHVwIGlz
IHVzZWQiKQogICAgIHNob3VsZF9za2lwX3NldHVwID0gcGF0aCBpcyBub3QgTm9uZSBhbmQgc2tp
cF92ZW52X3NldHVwCiAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHdwdF9yb290LCAiX3ZlbnYiKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHdw
dF9yb290LCB2ZW52X2RpcigpKQogICAgIHZlbnYgPSB2aXJ0dWFsZW52LlZpcnR1YWxlbnYocGF0
aCwgc2hvdWxkX3NraXBfc2V0dXApCiAgICAgaWYgbm90IHNob3VsZF9za2lwX3NldHVwOgogICAg
ICAgICB2ZW52LnN0YXJ0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTg5NmU2YmUyYmQ1MWY0Yjc4ZTk3MDNjYWVm
YjliNjcyZTEwYTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1
c2UgQlNEIExpY2Vuc2UKLQotaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4
LzAzLWJzZC1saWNlbnNlLmh0bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0K
LSogUmVkaXN0cmlidXRpb25zIG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5
cmlnaHQgbm90aWNlLAotICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotCi0qIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgb3JpZ2luYWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLQotKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
cmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQKaW5kZXggM2NkMDE0NDZlMjVi
Y2ViNGRhZGVmNDgyNTkxMTdiZDA1N2VhNmY0OC4uNTMxMDcyMWJiYjkwZmE5NGI5MGI0YzEwZDIw
MmZjNWExM2MwNGQ1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHMudHh0CkBAIC0xLDggKzEsOSBAQAogaHRtbDVsaWI9PTEuMC4xCi1tb3ppbmZv
PT0xLjEuMAotbW96bG9nPT01LjAKLW1vemRlYnVnPT0wLjEuMQotcGlsbG93PT02LjIuMQotdXJs
bGliM1tzZWN1cmVdPT0xLjI1LjcKLXJlcXVlc3RzPT0yLjIyLjAKLXNpeD09MS4xMy4wCittb3pp
bmZvPT0xLjIuMSAgIyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjIxMjI2Cittb3psb2c9PTYuMAorbW96ZGVidWc9PTAuMgorIyBQaWxsb3cgNyByZXF1aXJl
cyBQeXRob24gMworcGlsbG93PT02LjIuMiAgIyBweXVwOiA8Ny4wCit1cmxsaWIzW3NlY3VyZV09
PTEuMjUuOQorcmVxdWVzdHM9PTIuMjMuMAorc2l4PT0xLjE1LjAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19maXJlZm94LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19maXJlZm94LnR4dAppbmRl
eCA0Y2JiN2E1ZWMwMjkzZWZmMWVmMTk4YTIxZWNkYzkwZmVjZjQxNDExLi4xNzY3MDVmM2FmNTA4
YWNiMzExN2Q3M2Q1YWI0ZjBjMzA2MDI0NjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
ZmlyZWZveC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CkBAIC0xLDExICsx
LDEwIEBACiBtYXJpb25ldHRlX2RyaXZlcj09My4wLjAKLW1vemNyYXNoPT0xLjEuMAotbW96ZG93
bmxvYWQ9PTEuMjYuMAorbW96Y3Jhc2g9PTIuMC4wCiBtb3ppbnN0YWxsPT0yLjAuMAogbW96bGVh
az09MC4yCi1tb3puZXR3b3JrPT0wLjI3Cittb3puZXR3b3JrPT0xLjEuMAogbW96cHJvY2Vzcz09
MS4wLjAKLW1venByb2ZpbGU9PTIuNC4wCi1tb3pydW5uZXI9PTcuNy4wCi1tb3p2ZXJzaW9uPT0y
LjIuMAotcHN1dGlsPT01LjYuNworbW96cHJvZmlsZT09Mi41LjAKK21venJ1bm5lcj09Ny44LjAK
K21venZlcnNpb249PTIuMy4wCitwc3V0aWw9PTUuNy4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHNfc2F1Y2UudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAppbmRleCAzMmI1ZjY0
ZDE0ZmQwM2RmNGVlYWNiNTc4MzkyMTBhMjZhMjgzZmE3Li5lOWU5NzY0Nzc5NmU3Zjk0MGYyZWVm
OThjNzJiMTk4NzFkMzIzYzcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2UudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQKQEAgLTEsMyArMSwzIEBACiBtb3pwcm9j
ZXNzPT0xLjAuMAogc2VsZW5pdW09PTMuMTQxLjAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3Rz
PT0yLjIzLjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpp
bmRleCA4ZjMyM2EzMzg2Yzk5N2NiY2ZhMDEzZTY1ODUwODY0NzFkZGZhMjA4Li40MmU3YWJiYmFi
NDkwOTIzNzA2NWNiMDEyNWRiNzExYTE4NjA3ODk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Qu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IENvbmZpZ1BhcnNlcgogaW1wb3J0IGFyZ3Bh
cnNlCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTcsNiArNiw4IEBAIGltcG9ydCBzeXMKIGZy
b20gbW96bG9nIGltcG9ydCBzdHJ1Y3R1cmVkbG9nCiBmcm9tIG1vemxvZy5oYW5kbGVycyBpbXBv
cnQgQmFzZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXIKIGZyb20gbW96bG9nLmZvcm1hdHRlcnMgaW1w
b3J0IE1hY2hGb3JtYXR0ZXIKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKK2Zyb20gc2l4Lm1v
dmVzLmNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCiBmcm9tIHdwdHJ1bm5lciBpbXBv
cnQgd3B0Y29tbWFuZGxpbmUsIHdwdHJ1bm5lcgogCiBoZXJlID0gb3MucGF0aC5hYnNwYXRoKG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXykpCkBAIC01OCw3ICs1OSw3IEBAIGRlZiB0ZXN0X3NldHRp
bmdzKCk6CiAgICAgfQogCiBkZWYgcmVhZF9jb25maWcoKToKLSAgICBwYXJzZXIgPSBDb25maWdQ
YXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICBwYXJzZXIgPSBDb25maWdQYXJzZXIoKQogICAgIHBh
cnNlci5yZWFkKCJ0ZXN0LmNmZyIpCiAKICAgICBydiA9IHsiZ2VuZXJhbCI6e30sCkBAIC04Myw3
ICs4NCw3IEBAIGRlZiBydW5fdGVzdHMocHJvZHVjdCwga3dhcmdzKToKIAogZGVmIHNldHRpbmdz
X3RvX2FyZ3Yoc2V0dGluZ3MpOgogICAgIHJ2ID0gW10KLSAgICBmb3IgbmFtZSwgdmFsdWUgaW4g
c2V0dGluZ3MuaXRlcml0ZW1zKCk6CisgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhz
ZXR0aW5ncyk6CiAgICAgICAgIGtleSA9ICItLSVzIiAlIG5hbWUKICAgICAgICAgaWYgbm90IHZh
bHVlOgogICAgICAgICAgICAgcnYuYXBwZW5kKGtleSkKQEAgLTEwOSw3ICsxMTAsNyBAQCBkZWYg
cnVuKGNvbmZpZywgYXJncyk6CiAKICAgICBsb2dnZXIuc3VpdGVfc3RhcnQodGVzdHM9W10pCiAK
LSAgICBmb3IgcHJvZHVjdCwgcHJvZHVjdF9zZXR0aW5ncyBpbiBjb25maWdbInByb2R1Y3RzIl0u
aXRlcml0ZW1zKCk6CisgICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0dGluZ3MgaW4gaXRlcml0
ZW1zKGNvbmZpZ1sicHJvZHVjdHMiXSk6CiAgICAgICAgIGlmIGFyZ3MucHJvZHVjdCBhbmQgcHJv
ZHVjdCBub3QgaW4gYXJncy5wcm9kdWN0OgogICAgICAgICAgICAgY29udGludWUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkKaW5kZXggYWQzNTAyZTAyYTllODEwMTY5NDBj
OGYzOWY1NjU0MGY1YWIxZjI2ZC4uYzU0NGRhN2E5NWQyYTk4MmNhYjhiNjhhZjUzNzQ0MGI3MWZh
MDk2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5pCkBAIC0yLDggKzIs
OCBAQAogeGZhaWxfc3RyaWN0PXRydWUKIAogW3RveF0KLWVudmxpc3QgPSBweTI3LXtiYXNlLGNo
cm9tZSxlZGdlLGZpcmVmb3gsaWUsb3BlcmEsc2FmYXJpLHNhdWNlLHNlcnZvLHdlYmtpdCx3ZWJr
aXRndGtfbWluaWJyb3dzZXIsZXBpcGhhbnl9LHB5MzYtYmFzZQotc2tpcF9taXNzaW5nX2ludGVy
cHJldGVycyA9IHRydWUKK2Vudmxpc3QgPSBweTI3LXtiYXNlLGNocm9tZSxlZGdlLGZpcmVmb3gs
aWUsb3BlcmEsc2FmYXJpLHNhdWNlLHNlcnZvLHdlYmtpdCx3ZWJraXRndGtfbWluaWJyb3dzZXIs
ZXBpcGhhbnl9LHtweTM1LHB5MzYscHkzNyxweTM4fS1iYXNlCitza2lwX21pc3NpbmdfaW50ZXJw
cmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBzID0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKaW5kZXggNDA2YTVmYWUyNTY0MjcyMjg0YWM1
NzAwY2MwNDZmYjBiNjdjMWY2YS4uNThlOTcwYTBlZGY2ZWRmYzE2MDdjNzY2YTc2M2JmOTUxNTBm
NjNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5s
b2cKQEAgLTE0LDcgKzE0LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6CiBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvTElDRU5T
RQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL01BTklGRVNULmluCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvUkVBRE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2VibGF5ZXIucHkKaW5kZXggOTNmNGQ2YjYz
MGQyODhjNzVmODg4Y2I3MzA0YmJmOGE0MTk1ZGI2Yy4uZjc1NTg3ZDgzOWZmZmNmMDM5MDE3Nzlh
MGI2NTEyNjE5MGI5ZDQ4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJv
aWRfd2VibGF5ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2VibGF5
ZXIucHkKQEAgLTEyNCw3ICsxMjQsNyBAQCBjbGFzcyBXZWJsYXllclNoZWxsKEJyb3dzZXIpOgog
ICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFs
aXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEg
YnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2Vs
Zi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkK
IAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2Vidmlldy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKaW5kZXggZGM2ODdiNDhlZDdhOWRkZTgyNzMz
NGFlOGI1OTA5NmNjNThkMjRkNy4uODc5MDU2NzcwN2U5NTdhN2I2NWQ3ZGMxNWJhYWQ1ZTMxOTBi
OGJiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2Vidmlldy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5CkBAIC0xMjMs
NyArMTIzLDcgQEAgY2xhc3MgU3lzdGVtV2ViVmlld1NoZWxsKEJyb3dzZXIpOgogICAgICAgICAj
IFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAg
ICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBz
ZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIu
aXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRl
ZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYmFzZS5weQpp
bmRleCA2NTUzNDQ1ODE5NzNjMTViNjU3NzI5ZmViNzM2ZGQyMDczZDc5YTMwLi5hMDI3Y2YzMjYx
MGE0OWU2MWY0MTQxYmZiNWZjZTVkMDUxMzg1YjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
YnJvd3NlcnMvYmFzZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYmFzZS5weQpAQCAt
Myw2ICszLDcgQEAgaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc29ja2V0CiBmcm9tIGFiYyBpbXBv
cnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKK2Zy
b20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLndwdGNvbW1hbmRsaW5lIGltcG9ydCBy
ZXF1aXJlX2FyZyAgIyBub3FhOiBGNDAxCiAKQEAgLTE0NywxMCArMTQ4LDYgQEAgY2xhc3MgQnJv
d3NlcihvYmplY3QpOgogICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUg
YnJvd3NlciBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmciIiIKICAgICAgICAgcGFzcwogCi0gICAg
ZGVmIHNldHVwX3NzbChzZWxmLCBob3N0cyk6Ci0gICAgICAgICIiIlJldHVybiBhIGNlcnRpZmlj
YXRlIHRvIHVzZSBmb3IgdGVzdHMgcmVxdWlyaW5nIHNzbCB0aGF0IHdpbGwgYmUgdHJ1c3RlZCBi
eSB0aGUgYnJvd3NlciIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzc2wg
dGVzdGluZyBub3Qgc3VwcG9ydGVkIikKLQogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAg
ICAiIiJCcm93c2VyLXNwZWNpZmljIGNsZWFudXAgdGhhdCBpcyBydW4gYWZ0ZXIgdGhlIHRlc3Ry
dW4gaXMgZmluaXNoZWQiIiIKICAgICAgICAgcGFzcwpAQCAtMTk5LDUgKzE5Niw1IEBAIGNsYXNz
IEV4ZWN1dG9yQnJvd3NlcihvYmplY3QpOgogICAgIHVwIHRoZSBicm93c2VyIGZyb20gdGhlIHJ1
bm5lciBwcm9jZXNzLgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6
Ci0gICAgICAgIGZvciBrLCB2IGluIGt3YXJncy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIGss
IHYgaW4gaXRlcml0ZW1zKGt3YXJncyk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGssIHYp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2Nocm9tZS5weQppbmRleCA1MTNmZDVmNDI0OTJmY2E0ZjYxMTU2ZTU0NTk1
NzZkMWM4NDY2OThhLi5iYWMxYWZmZDM2NTBlMjRjNGI5NmVmYzY1ZTZiNDY5MmM5YjJiMjQ0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9jaHJvbWUucHkKQEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFzcyBDaHJvbWVC
cm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRl
cyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGlu
ZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgot
ICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYu
c2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxm
LnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lk
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CmluZGV4IGI0ZWRj
MDUwZDBjNzA5Y2ZhNDY3YTQzYjZlNmE0MTIwMGFhMDRjNzMuLmNkOGM0MGZhYjFmZWIwNjI5YTgx
NGIyYmJhNjhlZGVjYWEzZWU4ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9j
aHJvbWVfYW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJv
aWQucHkKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihCcm93
c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZl
ciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hl
dGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0
dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19h
bGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKaW5kZXggYTA0Mjk2NjVjOWJjNTdlMjdjMDJjZTgx
YTdkZWI5MDliOGZhMDBmNS4uNmRiMDE4OGU1NWViZmY4ZDNhNDBmOWExNWRjNzE0NDE5ZWRhY2Jl
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9pb3MucHkKQEAgLTcxLDcgKzcxLDcgQEAgY2xh
c3MgQ2hyb21laU9TQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMg
b25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24n
dCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAj
IGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAg
IHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToK
ICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2UucHkKaW5kZXggZDlkMGFmMTE1Y2M5
ZTljNjRlOTI3YjE1Y2RkMjkxZjMxNGIwN2FlNS4uMThhMWVkNzgxMTg5Y2NhMjNkZjJhNGUxYjVi
NWRjYTgzMGJkMGVhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2UucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2UucHkKQEAgLTEwOCw3ICsxMDgsNyBAQCBj
bGFzcyBFZGdlQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lZGdl
Y2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CmluZGV4
IDYzNjgwYjY3NzRhMjc1OTI0OTFlNjcxZjUzZjE0MGI2NWUxNzA0MmIuLjVjNTFmMDY2ZjA0NDEz
MjE2NjBjYWI5NmY2ZGU1MWFmODY4ZDMxMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9lZGdlY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJv
bWl1bS5weQpAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIEVkZ2VDaHJvbWl1bUJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2
ZXIgaXMgYWxpdmUsDQogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3
aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uDQogICAgICAgICAjIGlzIGFjdGl2ZS4NCi0gICAgICAg
IHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQ0KKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlKCkNCiANCiAgICAgZGVmIGNsZWFudXAoc2VsZik6DQogICAgICAgICBzZWxmLnN0
b3AoKQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weQppbmRleCA4YTBlNWY1NzhiMmZlYjg3MWRk
ZDUwYWIwODE2OGM2YjlkNDVlNGIwLi5mNmM0YzYwMmEzOGMwNDM2MzdjZjlkYmM4YmJiNTM1MGVj
OTQ1MjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CkBAIC0yLDcgKzIsOCBAQCBmcm9t
IC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVyLCBtYXliZV9hZGRfYXJncywgY2Vy
dGlmaWNhdGVfZG9tYWluX2xpcwogZnJvbSAud2Via2l0IGltcG9ydCBXZWJLaXRCcm93c2VyCiBm
cm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9r
d2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJkcml2ZXIgaW1wb3J0IChXZWJEcml2
ZXJUZXN0aGFybmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3Fh
OiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRHJp
dmVyUmVmVGVzdEV4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IpICAjIG5vcWE6
IEY0MDEKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJraXQgaW1wb3J0IFdlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yICAjIG5vcWE6IEY0MDEKIAogX193cHRydW5uZXJfXyA9IHsicHJvZHVj
dCI6ICJlcGlwaGFueSIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAiZXBpcGhhbnkiLAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJv
d3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNz
IjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAiV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAiV2ViS2l0RHJp
dmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyYXNo
dGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJl
bnZfZXh0cmFzIjogImVudl9leHRyYXMiLAogICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMi
OiAiZW52X29wdGlvbnMiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVm
b3gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weQppbmRleCAwZjgwNzUzMzc4
MTM3ODNjNzZlNGJlNGRlYzljYzkzMWE0MjUyYzQxLi4yZGU3ZGYzOTZiZDJhNDhiNzg2NGE2NmFl
ZTRiNjJjZmExZmIzNjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZv
eC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weQpAQCAtNCw2ICs0LDcg
QEAgaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1w
b3J0IHN5cworZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKIGltcG9y
dCBtb3ppbmZvCiBpbXBvcnQgbW96bGVhawpAQCAtMjUsNiArMjYsNyBAQCBmcm9tIC4uZXhlY3V0
b3JzLmV4ZWN1dG9ybWFyaW9uZXR0ZSBpbXBvcnQgKE1hcmlvbmV0dGVUZXN0aGFybmVzc0V4ZWN1
dG9yLCAgIyBubwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVXZHNwZWNFeGVjdXRvciwgICMg
bm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNz
IGltcG9ydCBjYXN0X2VudgogCiAKIGhlcmUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChf
X2ZpbGVfXylbMF0pCkBAIC02Myw2ICs2NSw4IEBAIGRlZiBnZXRfdGltZW91dF9tdWx0aXBsaWVy
KHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpOgogICAgICMgaHR0cHM6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODcyNQogICAgIGVsaWYgcnVuX2lu
Zm9fZGF0YVsib3MiXSA9PSAid2luIiBhbmQgcnVuX2luZm9fZGF0YVsicHJvY2Vzc29yIl0gPT0g
ImFhcmNoNjQiOgogICAgICAgICByZXR1cm4gNAorICAgIGVsaWYgcnVuX2luZm9fZGF0YS5nZXQo
ImNjb3YiKToKKyAgICAgICAgcmV0dXJuIDIKICAgICByZXR1cm4gMQogCiAKQEAgLTgyLDYgKzg2
LDcgQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmln
LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAiY2FfY2VydGlmaWNhdGVfcGF0aCI6IGNvbmZpZy5z
c2xfY29uZmlnWyJjYV9jZXJ0X3BhdGgiXSwKICAgICAgICAgICAgICJlMTBzIjoga3dhcmdzWyJn
ZWNrb19lMTBzIl0sCiAgICAgICAgICAgICAiZW5hYmxlX3dlYnJlbmRlciI6IGt3YXJnc1siZW5h
YmxlX3dlYnJlbmRlciJdLAorICAgICAgICAgICAgImVuYWJsZV9maXNzaW9uIjoga3dhcmdzWyJl
bmFibGVfZmlzc2lvbiJdLAogICAgICAgICAgICAgInN0YWNrZml4X2RpciI6IGt3YXJnc1sic3Rh
Y2tmaXhfZGlyIl0sCiAgICAgICAgICAgICAiYmluYXJ5X2FyZ3MiOiBrd2FyZ3NbImJpbmFyeV9h
cmdzIl0sCiAgICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogZ2V0X3RpbWVvdXRfbXVs
dGlwbGllcih0ZXN0X3R5cGUsCkBAIC05Myw3ICs5OCw4IEBAIGRlZiBicm93c2VyX2t3YXJncyh0
ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAg
ImNoYW9zX21vZGVfZmxhZ3MiOiBrd2FyZ3NbImNoYW9zX21vZGVfZmxhZ3MiXSwKICAgICAgICAg
ICAgICJjb25maWciOiBjb25maWcsCiAgICAgICAgICAgICAiYnJvd3Nlcl9jaGFubmVsIjoga3dh
cmdzWyJicm93c2VyX2NoYW5uZWwiXSwKLSAgICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJnc1si
aGVhZGxlc3MiXX0KKyAgICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJnc1siaGVhZGxlc3MiXSwK
KyAgICAgICAgICAgICJwcmVsb2FkX2Jyb3dzZXIiOiBrd2FyZ3NbInByZWxvYWRfYnJvd3NlciJd
fQogCiAKIGRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNo
ZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLApAQCAtMTY4LDE3ICsxNzQsMTMgQEAgZGVmIHJ1bl9p
bmZvX2V4dHJhcygqKmt3YXJncyk6CiAgICAgICAgICAgIndhc20iOiBrd2FyZ3MuZ2V0KCJ3YXNt
IiwgVHJ1ZSksCiAgICAgICAgICAgInZlcmlmeSI6IGt3YXJnc1sidmVyaWZ5Il0sCiAgICAgICAg
ICAgImhlYWRsZXNzIjoga3dhcmdzLmdldCgiaGVhZGxlc3MiLCBGYWxzZSkgb3IgIk1PWl9IRUFE
TEVTUyIgaW4gb3MuZW52aXJvbiwKLSAgICAgICAgICAiZmlzc2lvbiI6IGdldF9ib29sX3ByZWYo
ImZpc3Npb24uYXV0b3N0YXJ0Iil9CisgICAgICAgICAgInN3LWUxMHMiOiBUcnVlLAorICAgICAg
ICAgICJmaXNzaW9uIjoga3dhcmdzLmdldCgiZW5hYmxlX2Zpc3Npb24iKSBvciBnZXRfYm9vbF9w
cmVmKCJmaXNzaW9uLmF1dG9zdGFydCIpfQogCiAgICAgIyBUaGUgdmFsdWUgb2YgYHN3LWUxMHNg
IGRlZmF1bHRzIHRvIHdoZXRoZXIgdGhlICJwYXJlbnRfaW50ZXJjZXB0IgogICAgICMgaW1wbGVt
ZW50YXRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgYnVpbGQuIFRoaXMgdmFsdWUsIGhv
d2V2ZXIsCiAgICAgIyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBleHBsaWNpdGx5IHNldHRpbmcgdGhl
IHByZWYgd2l0aCB0aGUgYC0tc2V0cHJlZmAgQ0xJCi0gICAgIyBmbGFnLCB3aGljaCBpcyBjaGVj
a2VkIGhlcmUuIElmIG5vdCBzdXBwbGllZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YKLSAgICAjIGBz
dy1lMTBzYCB3aWxsIGJlIGZpbGxlZCBpbiBpbiBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KLSAg
ICAjCi0gICAgIyBXZSBjYW4ndCBjYXB0dXJlIHRoZSBkZWZhdWx0IHZhbHVlIHJpZ2h0IG5vdyBi
ZWNhdXNlIChjdXJyZW50bHkpLCBpdAotICAgICMgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGBu
aWdodGx5X2J1aWxkYCwgd2hpY2ggaXNuJ3Qga25vd24gdW50aWwKLSAgICAjIGBSdW5JbmZvYCdz
IGNvbnN0cnVjdG9yLgorICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLgogICAgIHN3
X2UxMHNfb3ZlcnJpZGUgPSBnZXRfYm9vbF9wcmVmX2lmX2V4aXN0cygiZG9tLnNlcnZpY2VXb3Jr
ZXJzLnBhcmVudF9pbnRlcmNlcHQiKQogICAgIGlmIHN3X2UxMHNfb3ZlcnJpZGUgaXMgbm90IE5v
bmU6CiAgICAgICAgIHJ2WyJzdy1lMTBzIl0gPSBzd19lMTBzX292ZXJyaWRlCkBAIC0yMDMsNzkg
KzIwNSw2MCBAQCBkZWYgdXBkYXRlX3Byb3BlcnRpZXMoKToKICAgICAgICAgICAgIHsib3MiOiBb
InZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJdfSkKIAogCi1jbGFzcyBGaXJlZm94QnJv
d3NlcihCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQgPSA3MAotICAgIHNodXRkb3duX3RpbWVv
dXQgPSA3MAorY2xhc3MgRmlyZWZveEluc3RhbmNlTWFuYWdlcihvYmplY3QpOgorICAgIF9fbWV0
YWNsYXNzX18gPSBBQkNNZXRhCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5h
cnksIHByZWZzX3Jvb3QsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnM9Tm9uZSwgZGVidWdfaW5mbz1O
b25lLAotICAgICAgICAgICAgICAgICBzeW1ib2xzX3BhdGg9Tm9uZSwgc3RhY2t3YWxrX2JpbmFy
eT1Ob25lLCBjZXJ0dXRpbF9iaW5hcnk9Tm9uZSwKLSAgICAgICAgICAgICAgICAgY2FfY2VydGlm
aWNhdGVfcGF0aD1Ob25lLCBlMTBzPUZhbHNlLCBlbmFibGVfd2VicmVuZGVyPUZhbHNlLCBzdGFj
a2ZpeF9kaXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYmluYXJ5X2FyZ3M9Tm9uZSwgdGltZW91
dF9tdWx0aXBsaWVyPU5vbmUsIGxlYWtfY2hlY2s9RmFsc2UsIGFzYW49RmFsc2UsCi0gICAgICAg
ICAgICAgICAgIHN0eWxvX3RocmVhZHM9MSwgY2hhb3NfbW9kZV9mbGFncz1Ob25lLCBjb25maWc9
Tm9uZSwgYnJvd3Nlcl9jaGFubmVsPSJuaWdodGx5IiwgaGVhZGxlc3M9Tm9uZSwgKiprd2FyZ3Mp
OgotICAgICAgICBCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlcikKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIGJpbmFyeV9hcmdzLCBwcm9maWxlX2NyZWF0b3IsIGRl
YnVnX2luZm8sCisgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxhZ3MsIGhlYWRsZXNzLCBl
bmFibGVfd2VicmVuZGVyLCBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICBsZWFrX2No
ZWNrLCBzdGFja2ZpeF9kaXIsIHN5bWJvbHNfcGF0aCwgYXNhbik6CisgICAgICAgICIiIk9iamVj
dCB0aGF0IG1hbmFnZXMgc3RhcnRpbmcgYW5kIHN0b3BwaW5nIGluc3RhbmNlcyBvZiBGaXJlZm94
LiIiIgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAgICBzZWxmLmJpbmFyeSA9
IGJpbmFyeQotICAgICAgICBzZWxmLnByZWZzX3Jvb3QgPSBwcmVmc19yb290Ci0gICAgICAgIHNl
bGYudGVzdF90eXBlID0gdGVzdF90eXBlCi0gICAgICAgIHNlbGYuZXh0cmFfcHJlZnMgPSBleHRy
YV9wcmVmcwotICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5ydW5uZXIgPSBOb25lCisgICAgICAgIHNlbGYuYmluYXJ5X2FyZ3MgPSBiaW5hcnlfYXJncwor
ICAgICAgICBzZWxmLmJhc2VfcHJvZmlsZSA9IHByb2ZpbGVfY3JlYXRvci5jcmVhdGUoKQogICAg
ICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCi0gICAgICAgIHNlbGYucHJvZmlsZSA9
IE5vbmUKLSAgICAgICAgc2VsZi5zeW1ib2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKLSAgICAgICAg
c2VsZi5zdGFja3dhbGtfYmluYXJ5ID0gc3RhY2t3YWxrX2JpbmFyeQotICAgICAgICBzZWxmLmNh
X2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0ZV9wYXRoCi0gICAgICAgIHNlbGYuY2Vy
dHV0aWxfYmluYXJ5ID0gY2VydHV0aWxfYmluYXJ5Ci0gICAgICAgIHNlbGYuZTEwcyA9IGUxMHMK
KyAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAg
ICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKICAgICAgICAgc2VsZi5lbmFibGVfd2VicmVuZGVy
ID0gZW5hYmxlX3dlYnJlbmRlcgotICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2Fy
Z3MKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgaWYgc3RhY2tmaXhfZGly
OgotICAgICAgICAgICAgc2VsZi5zdGFja19maXhlciA9IGdldF9zdGFja19maXhlcl9mdW5jdGlv
bihzdGFja2ZpeF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5zdGFja19maXhlciA9IE5vbmUKKyAgICAgICAgc2VsZi5zdHlsb190aHJlYWRz
ID0gc3R5bG9fdGhyZWFkcworICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisg
ICAgICAgIHNlbGYuc3RhY2tmaXhfZGlyID0gc3RhY2tmaXhfZGlyCisgICAgICAgIHNlbGYuc3lt
Ym9sc19wYXRoID0gc3ltYm9sc19wYXRoCisgICAgICAgIHNlbGYuYXNhbiA9IGFzYW4KIAotICAg
ICAgICBpZiB0aW1lb3V0X211bHRpcGxpZXI6Ci0gICAgICAgICAgICBzZWxmLmluaXRfdGltZW91
dCA9IHNlbGYuaW5pdF90aW1lb3V0ICogdGltZW91dF9tdWx0aXBsaWVyCisgICAgICAgIHNlbGYu
cHJldmlvdXMgPSBOb25lCisgICAgICAgIHNlbGYuY3VycmVudCA9IE5vbmUKIAotICAgICAgICBz
ZWxmLmFzYW4gPSBhc2FuCi0gICAgICAgIHNlbGYubHNhbl9hbGxvd2VkID0gTm9uZQotICAgICAg
ICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRoID0gTm9uZQotICAgICAgICBzZWxmLm1vemxlYWtf
YWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX3RocmVzaG9sZHMgPSBOb25lCi0g
ICAgICAgIHNlbGYubGVha19jaGVjayA9IGxlYWtfY2hlY2sKLSAgICAgICAgc2VsZi5sZWFrX3Jl
cG9ydF9maWxlID0gTm9uZQotICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKLSAgICAg
ICAgc2VsZi5zdHlsb190aHJlYWRzID0gc3R5bG9fdGhyZWFkcwotICAgICAgICBzZWxmLmNoYW9z
X21vZGVfZmxhZ3MgPSBjaGFvc19tb2RlX2ZsYWdzCi0gICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFu
bmVsID0gYnJvd3Nlcl9jaGFubmVsCi0gICAgICAgIHNlbGYuaGVhZGxlc3MgPSBoZWFkbGVzcwor
ICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6
CisgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR0aW5ncyhzZWxmLCB0ZXN0KToKLSAgICAgICAg
cmV0dXJuIHsiY2hlY2tfbGVha3MiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIG5vdCB0ZXN0LmxlYWtz
LAotICAgICAgICAgICAgICAgICJsc2FuX2FsbG93ZWQiOiB0ZXN0LmxzYW5fYWxsb3dlZCwKLSAg
ICAgICAgICAgICAgICAibHNhbl9tYXhfc3RhY2tfZGVwdGgiOiB0ZXN0LmxzYW5fbWF4X3N0YWNr
X2RlcHRoLAotICAgICAgICAgICAgICAgICJtb3psZWFrX2FsbG93ZWQiOiBzZWxmLmxlYWtfY2hl
Y2sgYW5kIHRlc3QubW96bGVha19hbGxvd2VkLAotICAgICAgICAgICAgICAgICJtb3psZWFrX3Ro
cmVzaG9sZHMiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIHRlc3QubW96bGVha190aHJlc2hvbGR9Cisg
ICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgIiIiR2V0IGEg
QnJvd3Nlckluc3RhbmNlIGZvciBhIHJ1bm5pbmcgRmlyZWZveC4KIAotICAgIGRlZiBzdGFydChz
ZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIGdyb3VwX21l
dGFkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICBncm91cF9tZXRhZGF0YSA9IHt9CisgICAgICAg
IFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UgcGVyIGluc3RhbmNlLCBhbmQgYmV0d2VlbiBj
YWxscyBzdG9wX2N1cnJlbnQoKQorICAgICAgICBtdXN0IGJlIGNhbGxlZC4iIiIKKyAgICAgICAg
cGFzcwogCi0gICAgICAgIHNlbGYuZ3JvdXBfbWV0YWRhdGEgPSBncm91cF9tZXRhZGF0YQotICAg
ICAgICBzZWxmLmxzYW5fYWxsb3dlZCA9IGt3YXJncy5nZXQoImxzYW5fYWxsb3dlZCIpCi0gICAg
ICAgIHNlbGYubHNhbl9tYXhfc3RhY2tfZGVwdGggPSBrd2FyZ3MuZ2V0KCJsc2FuX21heF9zdGFj
a19kZXB0aCIpCi0gICAgICAgIHNlbGYubW96bGVha19hbGxvd2VkID0ga3dhcmdzLmdldCgibW96
bGVha19hbGxvd2VkIikKLSAgICAgICAgc2VsZi5tb3psZWFrX3RocmVzaG9sZHMgPSBrd2FyZ3Mu
Z2V0KCJtb3psZWFrX3RocmVzaG9sZHMiKQorICAgIGRlZiBzdG9wX2N1cnJlbnQoc2VsZiwgZm9y
Y2U9RmFsc2UpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiBG
aXJlZm94LgogCi0gICAgICAgIGlmIHNlbGYubWFyaW9uZXR0ZV9wb3J0IGlzIE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBU
aGUgQnJvd3Nlckluc3RhbmNlIHJlbWFpbnMgYXZhaWxhYmxlIHRocm91Z2ggc2VsZi5wcmV2aW91
cywgc2luY2Ugc29tZQorICAgICAgICBvcGVyYXRpb25zIGhhcHBlbiBhZnRlciBzaHV0ZG93bi4i
IiIKKyAgICAgICAgaWYgbm90IHNlbGYuY3VycmVudDoKKyAgICAgICAgICAgIHJldHVybgogCi0g
ICAgICAgIGlmIHNlbGYuYXNhbjoKLSAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gbW96
bGVhay5MU0FOTGVha3Moc2VsZi5sb2dnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiLCAi
LyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bGxvd2VkPXNlbGYubHNhbl9hbGxvd2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhOdW1SZWNvcmRlZEZyYW1lcz1zZWxmLmxzYW5fbWF4X3N0
YWNrX2RlcHRoKQorICAgICAgICBzZWxmLmN1cnJlbnQuc3RvcChmb3JjZSkKKyAgICAgICAgc2Vs
Zi5wcmV2aW91cyA9IHNlbGYuY3VycmVudAorICAgICAgICBzZWxmLmN1cnJlbnQgPSBOb25lCisK
KyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IGFuIGluc3RhbmNlIG9mIEZp
cmVmb3gsIHJldHVybmluZyBhIEJyb3dzZXJJbnN0YW5jZSBoYW5kbGUiIiIKKyAgICAgICAgcHJv
ZmlsZSA9IHNlbGYuYmFzZV9wcm9maWxlLmNsb25lKHNlbGYuYmFzZV9wcm9maWxlLnByb2ZpbGUp
CisKKyAgICAgICAgbWFyaW9uZXR0ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisgICAgICAgIHBy
b2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibWFyaW9uZXR0ZS5wb3J0IjogbWFyaW9uZXR0ZV9wb3J0
fSkKIAogICAgICAgICBlbnYgPSB0ZXN0X2Vudmlyb25tZW50KHhyZVBhdGg9b3MucGF0aC5kaXJu
YW1lKHNlbGYuYmluYXJ5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dl
cj1zZWxmLmRlYnVnX2luZm8gaXMgbm90IE5vbmUsCkBAIC0yOTIsNDAgKzI3NSw2IEBAIGNsYXNz
IEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW52
WyJNT1pfV0VCUkVOREVSIl0gPSAiMCIKIAotICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYubG9h
ZF9wcmVmcygpCi0KLSAgICAgICAgc2VsZi5wcm9maWxlID0gRmlyZWZveFByb2ZpbGUocHJlZmVy
ZW5jZXM9cHJlZmVyZW5jZXMpCi0gICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMo
ewotICAgICAgICAgICAgIm1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0LAot
ICAgICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2luKHNlbGYuY29u
ZmlnLmRvbWFpbnNfc2V0KSwKLSAgICAgICAgICAgICJkb20uZmlsZS5jcmVhdGVJbkNoaWxkIjog
VHJ1ZSwKLSAgICAgICAgICAgICMgVE9ETzogUmVtb3ZlIHByZWZlcmVuY2VzIG9uY2UgRmlyZWZv
eCA2NCBpcyBzdGFibGUgKEJ1ZyA5MDU0MDQpCi0gICAgICAgICAgICAibmV0d29yay5wcm94eS50
eXBlIjogMCwKLSAgICAgICAgICAgICJwbGFjZXMuaGlzdG9yeS5lbmFibGVkIjogRmFsc2UsCi0g
ICAgICAgICAgICAibmV0d29yay5wcmVsb2FkIjogVHJ1ZSwKLSAgICAgICAgfSkKLSAgICAgICAg
aWYgc2VsZi5lMTBzOgotICAgICAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7
ImJyb3dzZXIudGFicy5yZW1vdGUuYXV0b3N0YXJ0IjogVHJ1ZX0pCi0KLSAgICAgICAgaWYgc2Vs
Zi50ZXN0X3R5cGUgPT0gInJlZnRlc3QiOgotICAgICAgICAgICAgc2VsZi5wcm9maWxlLnNldF9w
cmVmZXJlbmNlcyh7ImxheW91dC5pbnRlcnJ1cHRpYmxlLXJlZmxvdy5lbmFibGVkIjogRmFsc2V9
KQotCi0gICAgICAgIGlmIHNlbGYubGVha19jaGVjazoKLSAgICAgICAgICAgIHNlbGYubGVha19y
ZXBvcnRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgInJ1bnRlc3Rz
X2xlYWtzXyVzLmxvZyIgJSBvcy5nZXRwaWQoKSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKHNlbGYubGVha19yZXBvcnRfZmlsZSk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKHNl
bGYubGVha19yZXBvcnRfZmlsZSkKLSAgICAgICAgICAgIGVudlsiWFBDT01fTUVNX0JMT0FUX0xP
RyJdID0gc2VsZi5sZWFrX3JlcG9ydF9maWxlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
ZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBOb25lCi0KLSAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lu
eHAgKyBlMTBzLCBkaXNhYmxlIGh3YWNjZWwKLSAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxh
dGZvcm0uc3lzdGVtKCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAotICAgICAgICAg
ICAgJzUuMScgaW4gcGxhdGZvcm0udmVyc2lvbigpKToKLSAgICAgICAgICAgIHNlbGYucHJvZmls
ZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0p
Ci0KLSAgICAgICAgaWYgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgc2VsZi5zZXR1cF9zc2woKQotCiAgICAgICAgIGFyZ3MgPSBzZWxmLmJpbmFyeV9h
cmdzWzpdIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXQogICAgICAgICBhcmdzICs9IFtjbWRf
YXJnKCJtYXJpb25ldHRlIiksICJhYm91dDpibGFuayJdCiAKQEAgLTMzMyw2MCArMjgyLDEwMSBA
QCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmRlYnVnX2luZm8pCiAKLSAgICAgICAgc2VsZi5ydW5uZXIgPSBGaXJl
Zm94UnVubmVyKHByb2ZpbGU9c2VsZi5wcm9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5PWNtZFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtZGFyZ3M9Y21kWzE6XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVudj1lbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
X2NsYXNzPVByb2Nlc3NIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc19hcmdzPXsicHJvY2Vzc091dHB1dExpbmUiOiBbc2VsZi5vbl9vdXRwdXRdfSkK
KyAgICAgICAgaWYgc2VsZi5sZWFrX2NoZWNrOgorICAgICAgICAgICAgbGVha19yZXBvcnRfZmls
ZSA9IG9zLnBhdGguam9pbihwcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ci
ICUgb3MuZ2V0cGlkKCkpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsZWFrX3JlcG9y
dF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUobGVha19yZXBvcnRfZmlsZSkKKyAg
ICAgICAgICAgIGVudlsiWFBDT01fTUVNX0JMT0FUX0xPRyJdID0gbGVha19yZXBvcnRfZmlsZQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVha19yZXBvcnRfZmlsZSA9IE5vbmUKKworICAg
ICAgICBvdXRwdXRfaGFuZGxlciA9IE91dHB1dEhhbmRsZXIoc2VsZi5sb2dnZXIsIHNlbGYuc3Rh
Y2tmaXhfZGlyLCBzZWxmLnN5bWJvbHNfcGF0aCwgc2VsZi5hc2FuKQorICAgICAgICBydW5uZXIg
PSBGaXJlZm94UnVubmVyKHByb2ZpbGU9cHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiaW5hcnk9Y21kWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNt
ZGFyZ3M9Y21kWzE6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9l
bnYoZW52KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX2NsYXNzPVBy
b2Nlc3NIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJn
cz17InByb2Nlc3NPdXRwdXRMaW5lIjogW291dHB1dF9oYW5kbGVyXX0pCisgICAgICAgIGluc3Rh
bmNlID0gQnJvd3Nlckluc3RhbmNlKHNlbGYubG9nZ2VyLCBydW5uZXIsIG1hcmlvbmV0dGVfcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2hhbmRsZXIsIGxl
YWtfcmVwb3J0X2ZpbGUpCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0YXJ0aW5nIEZp
cmVmb3giKQotCi0gICAgICAgIHNlbGYucnVubmVyLnN0YXJ0KGRlYnVnX2FyZ3M9ZGVidWdfYXJn
cywgaW50ZXJhY3RpdmU9c2VsZi5kZWJ1Z19pbmZvIGFuZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJh
Y3RpdmUpCisgICAgICAgIHJ1bm5lci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVy
YWN0aXZlPXNlbGYuZGVidWdfaW5mbyBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQog
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRmlyZWZveCBTdGFydGVkIikKIAotICAgIGRlZiBs
b2FkX3ByZWZzKHNlbGYpOgotICAgICAgICBwcmVmcyA9IFByZWZlcmVuY2VzKCkKLQotICAgICAg
ICBwcmVmX3BhdGhzID0gW10KLQotICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxm
LnByZWZzX3Jvb3QsICdwcm9maWxlcy5qc29uJykKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUo
cHJvZmlsZXMpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgot
ICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10
ZXN0cyddOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAo
Tm9uZSwgJ25pZ2h0bHknKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBw
ZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCi0gICAg
ICAgICAgICAgICAgICAgIGVsaWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJl
ZnNfcm9vdCwgbmFtZSwgJ3VzZXIuanMnKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMg
T2xkIHByZWZlcmVuY2UgZmlsZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVz
Lmpzb24gKHJlbW92ZSB3aGVuIG5vIGxvbmdlciBzdXBwb3J0ZWQpCi0gICAgICAgICAgICBsZWdh
Y3lfcHJlZl9wYXRocyA9ICgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVm
c19yb290LCAncHJlZnNfZ2VuZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBi
ZWxvdwotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21t
b24nLCAndXNlci5qcycpLCAgIyBVc2VkIGluIEZpcmVmb3ggNjEKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIGZvciBwYXRoIGluIGxlZ2FjeV9wcmVmX3BhdGhzOgotICAgICAgICAgICAgICAg
IGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhz
LmFwcGVuZChwYXRoKQotCi0gICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6Ci0gICAgICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICBwcmVmcy5hZGQo
UHJlZmVyZW5jZXMucmVhZF9wcmVmcyhwYXRoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBm
aWxlIGluICVzIiAlIHBhdGgpCi0KLSAgICAgICAgIyBBZGQgYW55IGN1c3RvbSBwcmVmZXJlbmNl
cwotICAgICAgICBwcmVmcy5hZGQoc2VsZi5leHRyYV9wcmVmcywgY2FzdD1UcnVlKQorICAgICAg
ICByZXR1cm4gaW5zdGFuY2UKKworCitjbGFzcyBTaW5nbGVJbnN0YW5jZU1hbmFnZXIoRmlyZWZv
eEluc3RhbmNlTWFuYWdlcik6CisgICAgIiIiRmlyZWZveEluc3RhbmNlTWFuYWdlciB0aGF0IG1h
bmFnZXMgYSBzaW5nbGUgRmlyZWZveCBpbnN0YW5jZSIiIgorICAgIGRlZiBnZXQoc2VsZik6Cisg
ICAgICAgIGFzc2VydCBub3Qgc2VsZi5jdXJyZW50LCAoIlRyaWVkIHRvIGNhbGwgZ2V0KCkgb24g
SW5zdGFuY2VNYW5hZ2VyIHRoYXQgaGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYW4gZXhpc3RpbmcgaW5zdGFuY2UiKQorICAgICAgICBpZiBzZWxmLnByZXZpb3VzOgor
ICAgICAgICAgICAgc2VsZi5wcmV2aW91cy5jbGVhbnVwKCkKKyAgICAgICAgICAgIHNlbGYucHJl
dmlvdXMgPSBOb25lCisgICAgICAgIHNlbGYuY3VycmVudCA9IHNlbGYuc3RhcnQoKQorICAgICAg
ICByZXR1cm4gc2VsZi5jdXJyZW50CisKKyAgICBkZWYgdGVhcmRvd24oc2VsZiwgZm9yY2U9RmFs
c2UpOgorICAgICAgICBmb3IgaW5zdGFuY2UgaW4gW3NlbGYucHJldmlvdXMsIHNlbGYuY3VycmVu
dF06CisgICAgICAgICAgICBpZiBpbnN0YW5jZToKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS5z
dG9wKGZvcmNlKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLmNsZWFudXAoKQorCisKK2NsYXNz
IFByZWxvYWRJbnN0YW5jZU1hbmFnZXIoRmlyZWZveEluc3RhbmNlTWFuYWdlcik6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIkZpcmVmb3hJbnN0
YW5jZU1hbmFnZXIgdGhhdCBrZWVwcyBvbmNlIEZpcmVmb3ggaW5zdGFuY2UgcHJlbG9hZGVkCisg
ICAgICAgIHRvIGFsbG93IHJhcGlkIHJlc3VtcHRpb24gYWZ0ZXIgYW4gaW5zdGFuY2Ugc2h1dHMg
ZG93bi4iIiIKKyAgICAgICAgc3VwZXIoUHJlbG9hZEluc3RhbmNlTWFuYWdlciwgc2VsZikuX19p
bml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLnBlbmRpbmcgPSBOb25lCisKKyAg
ICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuY3VycmVudCwgKCJUcmll
ZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0aGF0IGhhcyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5nIGluc3RhbmNlIikKKyAgICAgICAg
aWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMuY2xlYW51cCgpCisg
ICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBpZiBub3Qgc2VsZi5wZW5k
aW5nOgorICAgICAgICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHNl
bGYuY3VycmVudCA9IHNlbGYucGVuZGluZworICAgICAgICBzZWxmLnBlbmRpbmcgPSBzZWxmLnN0
YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudAorCisgICAgZGVmIHRlYXJkb3duKHNl
bGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9yIGluc3RhbmNlLCBza2lwX21hcmlvbmV0dGUg
aW4gWyhzZWxmLnByZXZpb3VzLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc2VsZi5jdXJyZW50LCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5wZW5kaW5nLCBUcnVlKV06CisgICAgICAgICAg
ICBpZiBpbnN0YW5jZToKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdG9wKGZvcmNlLCBza2lw
X21hcmlvbmV0dGU9c2tpcF9tYXJpb25ldHRlKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLmNs
ZWFudXAoKQorCisKK2NsYXNzIEJyb3dzZXJJbnN0YW5jZShvYmplY3QpOgorICAgIHNodXRkb3du
X3RpbWVvdXQgPSA3MAogCi0gICAgICAgIHJldHVybiBwcmVmcygpCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsIG91dHB1dF9oYW5kbGVyLCBs
ZWFrX3JlcG9ydF9maWxlKToKKyAgICAgICAgIiIiSGFuZGxlIHRvIGEgcnVubmluZyBGaXJlZm94
IGluc3RhbmNlIiIiCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYu
cnVubmVyID0gcnVubmVyCisgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0gbWFyaW9uZXR0
ZV9wb3J0CisgICAgICAgIHNlbGYub3V0cHV0X2hhbmRsZXIgPSBvdXRwdXRfaGFuZGxlcgorICAg
ICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBsZWFrX3JlcG9ydF9maWxlCiAKLSAgICBkZWYg
c3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2Us
IHNraXBfbWFyaW9uZXR0ZT1GYWxzZSk6CisgICAgICAgICIiIlN0b3AgRmlyZWZveCIiIgogICAg
ICAgICBpZiBzZWxmLnJ1bm5lciBpcyBub3QgTm9uZSBhbmQgc2VsZi5ydW5uZXIuaXNfcnVubmlu
ZygpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0b3BwaW5nIEZpcmVmb3ggJXMi
ICUgc2VsZi5waWQoKSkKKyAgICAgICAgICAgIHNodXRkb3duX21ldGhvZHMgPSBbKFRydWUsIGxh
bWJkYTogc2VsZi5ydW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Ao
c2lnbmFsLlNJR1RFUk0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNl
LCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV0KKyAgICAgICAgICAg
IGlmIHNraXBfbWFyaW9uZXR0ZToKKyAgICAgICAgICAgICAgICBzaHV0ZG93bl9tZXRob2RzID0g
c2h1dGRvd25fbWV0aG9kc1sxOl0KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAj
IEZvciBGaXJlZm94IHdlIGFzc3VtZSB0aGF0IHN0b3BwaW5nIHRoZSBydW5uZXIgcHJvbXB0cyB0
aGUKICAgICAgICAgICAgICAgICAjIGJyb3dzZXIgdG8gc2h1dCBkb3duLiBUaGlzIGFsbG93cyB0
aGUgbGVhayBsb2cgdG8gYmUgd3JpdHRlbgotICAgICAgICAgICAgICAgIGZvciBjbGVhbiwgc3Rv
cF9mIGluIFsoVHJ1ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci53YWl0KHNlbGYuc2h1dGRvd25fdGlt
ZW91dCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIGxh
bWJkYTogc2VsZi5ydW5uZXIuc3RvcChzaWduYWwuU0lHVEVSTSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIGxhbWJkYTogc2VsZi5ydW5uZXIuc3RvcChz
aWduYWwuU0lHS0lMTCkpXToKKyAgICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBz
aHV0ZG93bl9tZXRob2RzOgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZm9yY2Ugb3Igbm90
IGNsZWFuOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSA9IHN0b3BfZigpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiByZXRjb2RlIGlzIG5vdCBOb25lOgpAQCAtMzk1LDIzICsz
ODUsOCBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgICAgIGV4Y2Vw
dCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIG9uIFdpbmRvd3Mg
aWYgdGhlIHByb2Nlc3MgaXMgYWxyZWFkeSBkZWFkCiAgICAgICAgICAgICAgICAgcGFzcwotICAg
ICAgICBzZWxmLnByb2Nlc3NfbGVha3MoKQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3Rv
cHBlZCIpCi0KLSAgICBkZWYgcHJvY2Vzc19sZWFrcyhzZWxmKToKLSAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygiUFJPQ0VTUyBMRUFLUyAlcyIgJSBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpCi0gICAg
ICAgIGlmIHNlbGYubHNhbl9oYW5kbGVyOgotICAgICAgICAgICAgc2VsZi5sc2FuX2hhbmRsZXIu
cHJvY2VzcygpCi0gICAgICAgIGlmIHNlbGYubGVha19yZXBvcnRfZmlsZSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIG1vemxlYWsucHJvY2Vzc19sZWFrX2xvZygKLSAgICAgICAgICAgICAgICBz
ZWxmLmxlYWtfcmVwb3J0X2ZpbGUsCi0gICAgICAgICAgICAgICAgbGVha190aHJlc2hvbGRzPXNl
bGYubW96bGVha190aHJlc2hvbGRzLAotICAgICAgICAgICAgICAgIGlnbm9yZV9taXNzaW5nX2xl
YWtzPVsiZ21wbHVnaW4iXSwKLSAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCi0gICAg
ICAgICAgICAgICAgc3RhY2tfZml4ZXI9c2VsZi5zdGFja19maXhlciwKLSAgICAgICAgICAgICAg
ICBzY29wZT1zZWxmLmdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiKSwKLSAgICAgICAgICAgICAg
ICBhbGxvd2VkPXNlbGYubW96bGVha19hbGxvd2VkCi0gICAgICAgICAgICApCisgICAgICAgIGlm
IG5vdCBza2lwX21hcmlvbmV0dGU6CisgICAgICAgICAgICBzZWxmLm91dHB1dF9oYW5kbGVyLmFm
dGVyX3N0b3AoKQogCiAgICAgZGVmIHBpZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5ydW5uZXIu
cHJvY2Vzc19oYW5kbGVyIGlzIE5vbmU6CkBAIC00MjIsNDQgKzM5NywyMDggQEAgY2xhc3MgRmly
ZWZveEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgb25fb3V0cHV0KHNlbGYsIGxpbmUpOgor
ICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5uZXI6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgICMgbW96cHJvZmlsZSBoYW5kbGVz
IGRlbGV0aW5nIHRoZSBwcm9maWxlIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgMAorICAgICAg
ICBzZWxmLnJ1bm5lciA9IE5vbmUKKworCitjbGFzcyBPdXRwdXRIYW5kbGVyKG9iamVjdCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgc3RhY2tmaXhfZGlyLCBzeW1ib2xzX3BhdGgs
IGFzYW4pOgorICAgICAgICAiIiJGaWx0ZXIgZm9yIGhhbmRsaW5nIEZpcmVmb3ggcHJvY2VzcyBv
dXRwdXQuCisKKyAgICAgICAgVGhpcyByZWNlaXZlcyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0IGlu
IHRoZSBfX2NhbGxfXyBmdW5jdGlvbiwgZG9lcworICAgICAgICBhbnkgYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIHRoYXQncyByZXF1aXJlZCwgYW5kIGRlY2lkZXMgd2hldGhlciB0byBsb2cKKyAgICAg
ICAgdGhlIG91dHB1dC4gQmVjYXVzZSB0aGUgRmlyZWZveCBwcm9jZXNzIGNhbiBiZSBzdGFydGVk
IGJlZm9yZSB3ZSBrbm93CisgICAgICAgIHdoaWNoIGZpbHRlcnMgYXJlIGdvaW5nIHRvIGJlIHJl
cXVpcmVkLCB3ZSBidWZmZXIgYWxsIG91dHB1dCB1bnRpbAorICAgICAgICBzZXR1cCgpIGlzIGNh
bGxlZC4gVGhpcyBpcyByZXNwb25zaWJsZSBmb3IgZG9pbmcgdGhlIGZpbmFsIGNvbmZpZ3VyYXRp
b24KKyAgICAgICAgb2YgdGhlIG91dHB1dCBoYW5kbGVycy4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgIyBUaGVzZSBhcmUgZmlsbGVkIGluIGFm
dGVyIHNldHVwKCkgaXMgY2FsbGVkCisgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBOb25lCisKKyAg
ICAgICAgc2VsZi5zeW1ib2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgaWYgc3RhY2tm
aXhfZGlyOgorICAgICAgICAgICAgIyBXZSBoaWRlIGVycm9ycyBiZWNhdXNlIHRoZXkgY2F1c2Ug
ZGlzY29uY2VydGluZyBgQ1JJVElDQUxgCisgICAgICAgICAgICAjIHdhcm5pbmdzIGluIHdlYiBw
bGF0Zm9ybSB0ZXN0IG91dHB1dC4KKyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBnZXRf
c3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlk
ZUVycm9ycz1UcnVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zdGFja19maXhl
ciA9IE5vbmUKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgorCisgICAgICAgIHNlbGYubHNhbl9o
YW5kbGVyID0gTm9uZQorICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IE5vbmUKKyAgICAg
ICAgc2VsZi5tb3psZWFrX3RocmVzaG9sZHMgPSBOb25lCisgICAgICAgIHNlbGYuZ3JvdXBfbWV0
YWRhdGEgPSB7fQorCisgICAgICAgIHNlbGYubGluZV9idWZmZXIgPSBbXQorICAgICAgICBzZWxm
LnNldHVwX3JhbiA9IEZhbHNlCisKKyAgICBkZWYgc2V0dXAoc2VsZiwgaW5zdGFuY2U9Tm9uZSwg
Z3JvdXBfbWV0YWRhdGE9Tm9uZSwgbHNhbl9kaXNhYmxlZD1GYWxzZSwKKyAgICAgICAgICAgICAg
bHNhbl9hbGxvd2VkPU5vbmUsIGxzYW5fbWF4X3N0YWNrX2RlcHRoPU5vbmUsIG1vemxlYWtfYWxs
b3dlZD1Ob25lLAorICAgICAgICAgICAgICBtb3psZWFrX3RocmVzaG9sZHM9Tm9uZSwgKiprd2Fy
Z3MpOgorICAgICAgICAiIiJDb25maWd1cmUgdGhlIG91dHB1dCBoYW5kbGVyIiIiCisgICAgICAg
IHNlbGYuaW5zdGFuY2UgPSBpbnN0YW5jZQorCisgICAgICAgIGlmIGdyb3VwX21ldGFkYXRhIGlz
IE5vbmU6CisgICAgICAgICAgICBncm91cF9tZXRhZGF0YSA9IHt9CisgICAgICAgIHNlbGYuZ3Jv
dXBfbWV0YWRhdGEgPSBncm91cF9tZXRhZGF0YQorCisgICAgICAgIHNlbGYubW96bGVha19hbGxv
d2VkID0gbW96bGVha19hbGxvd2VkCisgICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0g
bW96bGVha190aHJlc2hvbGRzCisKKyAgICAgICAgaWYgc2VsZi5hc2FuOgorICAgICAgICAgICAg
c2VsZi5sc2FuX2hhbmRsZXIgPSBtb3psZWFrLkxTQU5MZWFrcyhzZWxmLmxvZ2dlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU9Z3JvdXBf
bWV0YWRhdGEuZ2V0KCJzY29wZSIsICIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQ9bHNhbl9hbGxvd2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOdW1SZWNvcmRlZEZyYW1l
cz1sc2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWxsb3dBbGw9bHNhbl9kaXNhYmxlZCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gTm9uZQorCisgICAgICAgIHNlbGYuc2V0
dXBfcmFuID0gVHJ1ZQorCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZV9idWZmZXI6Cisg
ICAgICAgICAgICBzZWxmLl9fY2FsbF9fKGxpbmUpCisgICAgICAgIHNlbGYubGluZV9idWZmZXIg
PSBbXQorCisgICAgZGVmIGFmdGVyX3N0b3Aoc2VsZik6CisgICAgICAgIHNlbGYubG9nZ2VyLmlu
Zm8oIlBST0NFU1MgTEVBS1MgJXMiICUgc2VsZi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlKQor
ICAgICAgICBpZiBzZWxmLmxzYW5faGFuZGxlcjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5k
bGVyLnByb2Nlc3MoKQorICAgICAgICBpZiBzZWxmLmluc3RhbmNlLmxlYWtfcmVwb3J0X2ZpbGUg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFdlIGhhdmUgdG8gaWdub3JlIG1pc3NpbmcgbGVh
a3MgaW4gdGhlIHRhYiBiZWNhdXNlIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUKKyAgICAgICAgICAg
ICMgY29udGVudCBwcm9jZXNzIGNyYXNoZWQgYW5kIGluIHRoYXQgY2FzZSB3ZSBkb24ndCB3YW50
IHRoZSB0ZXN0IHRvIGZhaWwuCisgICAgICAgICAgICAjIElkZWFsbHkgd2Ugd291bGQgcmVjb3Jk
IHdoaWNoIGNvbnRlbnQgcHJvY2VzcyBjcmFzaGVkIGFuZCBqdXN0IHNraXAgdGhvc2UuCisgICAg
ICAgICAgICBtb3psZWFrLnByb2Nlc3NfbGVha19sb2coCisgICAgICAgICAgICAgICAgc2VsZi5p
bnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlLAorICAgICAgICAgICAgICAgIGxlYWtfdGhyZXNob2xk
cz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKKyAgICAgICAgICAgICAgICBpZ25vcmVfbWlzc2lu
Z19sZWFrcz1bInRhYiIsICJnbXBsdWdpbiJdLAorICAgICAgICAgICAgICAgIGxvZz1zZWxmLmxv
Z2dlciwKKyAgICAgICAgICAgICAgICBzdGFja19maXhlcj1zZWxmLnN0YWNrX2ZpeGVyLAorICAg
ICAgICAgICAgICAgIHNjb3BlPXNlbGYuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJzY29wZSIpLAorICAg
ICAgICAgICAgICAgIGFsbG93ZWQ9c2VsZi5tb3psZWFrX2FsbG93ZWQpCisKKyAgICBkZWYgX19j
YWxsX18oc2VsZiwgbGluZSk6CiAgICAgICAgICIiIldyaXRlIGEgbGluZSBvZiBvdXRwdXQgZnJv
bSB0aGUgZmlyZWZveCBwcm9jZXNzIHRvIHRoZSBsb2ciIiIKLSAgICAgICAgaWYgIkdMaWItR09i
amVjdC1DUklUSUNBTCIgaW4gbGluZToKKyAgICAgICAgaWYgYiJHTGliLUdPYmplY3QtQ1JJVElD
QUwiIGluIGxpbmU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbGluZToKKyAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLnNldHVwX3JhbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxpbmVf
YnVmZmVyLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAg
ZGF0YSA9IGxpbmUuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQogICAgICAgICAgICAgaWYgc2Vs
Zi5zdGFja19maXhlcjoKICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5zdGFja19maXhlcihk
YXRhKQogICAgICAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6CiAgICAgICAgICAgICAgICAg
ZGF0YSA9IHNlbGYubHNhbl9oYW5kbGVyLmxvZyhkYXRhKQogICAgICAgICAgICAgaWYgZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChz
ZWxmLnBpZCgpLAorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNl
bGYuaW5zdGFuY2UgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbnN0YW5jZS5ydW5uZXIucHJvY2Vzc19oYW5kbGVyIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UucnVubmVyLnByb2Nl
c3NfaGFuZGxlci5waWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPSIgIi5qb2luKHNlbGYucnVubmVyLmNvbW1hbmQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9IiAiLmpvaW4oc2VsZi5pbnN0YW5jZS5ydW5u
ZXIuY29tbWFuZCkpCiAKLSAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
cnVubmVyOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKQotICAg
ICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBjbGVhbnVwKHNlbGYsIGZvcmNlPUZhbHNlKToK
LSAgICAgICAgc2VsZi5zdG9wKGZvcmNlKQorY2xhc3MgUHJvZmlsZUNyZWF0b3Iob2JqZWN0KToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcmVmc19yb290LCBjb25maWcsIHRlc3Rf
dHlwZSwgZXh0cmFfcHJlZnMsIGUxMHMsCisgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9u
LCBicm93c2VyX2NoYW5uZWwsIGJpbmFyeSwgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0
ZV9wYXRoKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcmVm
c19yb290ID0gcHJlZnNfcm9vdAorICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZworICAgICAg
ICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLmV4dHJhX3ByZWZzID0g
ZXh0cmFfcHJlZnMKKyAgICAgICAgc2VsZi5lMTBzID0gZTEwcworICAgICAgICBzZWxmLmVuYWJs
ZV9maXNzaW9uID0gZW5hYmxlX2Zpc3Npb24KKyAgICAgICAgc2VsZi5icm93c2VyX2NoYW5uZWwg
PSBicm93c2VyX2NoYW5uZWwKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2Ff
Y2VydGlmaWNhdGVfcGF0aAorICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQorICAgICAgICBz
ZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGlsX2JpbmFyeQorICAgICAgICBzZWxmLmNhX2Nl
cnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0ZV9wYXRoCiAKLSAgICBkZWYgZXhlY3V0b3Jf
YnJvd3NlcihzZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYubWFyaW9uZXR0ZV9wb3J0IGlzIG5v
dCBOb25lCi0gICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsibWFyaW9uZXR0ZV9wb3J0
Ijogc2VsZi5tYXJpb25ldHRlX3BvcnR9CisgICAgZGVmIGNyZWF0ZShzZWxmKToKKyAgICAgICAg
IiIiQ3JlYXRlIGEgRmlyZWZveCBwcm9maWxlIGFuZCByZXR1cm4gdGhlIG1venByb2ZpbGUgUHJv
ZmlsZSBvYmplY3QgcG9pbnRpbmcgYXQgdGhhdAorICAgICAgICBwcm9maWxlIiIiCisgICAgICAg
IHByZWZlcmVuY2VzID0gc2VsZi5fbG9hZF9wcmVmcygpCiAKLSAgICBkZWYgY2hlY2tfY3Jhc2go
c2VsZiwgcHJvY2VzcywgdGVzdCk6Ci0gICAgICAgIGR1bXBfZGlyID0gb3MucGF0aC5qb2luKHNl
bGYucHJvZmlsZS5wcm9maWxlLCAibWluaWR1bXBzIikKKyAgICAgICAgcHJvZmlsZSA9IEZpcmVm
b3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQorICAgICAgICBzZWxmLl9zZXRfcmVx
dWlyZWRfcHJlZnMocHJvZmlsZSkKKyAgICAgICAgaWYgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRo
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc2V0dXBfc3NsKHByb2ZpbGUpCisKKyAg
ICAgICAgcmV0dXJuIHByb2ZpbGUKKworICAgIGRlZiBfbG9hZF9wcmVmcyhzZWxmKToKKyAgICAg
ICAgcHJlZnMgPSBQcmVmZXJlbmNlcygpCisKKyAgICAgICAgcHJlZl9wYXRocyA9IFtdCiAKLSAg
ICAgICAgcmV0dXJuIGJvb2wobW96Y3Jhc2gubG9nX2NyYXNoZXMoc2VsZi5sb2dnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfZGlyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xz
X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrd2Fs
a19iaW5hcnk9c2VsZi5zdGFja3dhbGtfYmluYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzPXByb2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIHByb2ZpbGVzID0gb3MucGF0
aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3Byb2ZpbGVzLmpzb24nKQorICAgICAgICBpZiBvcy5w
YXRoLmlzZmlsZShwcm9maWxlcyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocHJvZmlsZXMsICdy
JykgYXMgZmg6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4ganNvbi5sb2FkKGZoKVsnd2Vi
LXBsYXRmb3JtLXRlc3RzJ106CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYnJvd3Nlcl9j
aGFubmVsIGluIChOb25lLCAnbmlnaHRseScpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJl
Zl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgbmFtZSwgJ3VzZXIu
anMnKSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBuYW1lICE9ICd1bml0dGVzdC1mZWF0dXJl
cyc6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpv
aW4oc2VsZi5wcmVmc19yb290LCBuYW1lLCAndXNlci5qcycpKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgIyBPbGQgcHJlZmVyZW5jZSBmaWxlcyB1c2VkIGJlZm9yZSB0aGUgY3JlYXRpb24g
b2YgcHJvZmlsZXMuanNvbiAocmVtb3ZlIHdoZW4gbm8gbG9uZ2VyIHN1cHBvcnRlZCkKKyAgICAg
ICAgICAgIGxlZ2FjeV9wcmVmX3BhdGhzID0gKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9p
bihzZWxmLnByZWZzX3Jvb3QsICdwcmVmc19nZW5lcmFsLmpzJyksICAgIyBVc2VkIGluIEZpcmVm
b3ggNjAgYW5kIGJlbG93CisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNf
cm9vdCwgJ2NvbW1vbicsICd1c2VyLmpzJyksICAjIFVzZWQgaW4gRmlyZWZveCA2MQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gbGVnYWN5X3ByZWZfcGF0aHM6CisgICAg
ICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CisgICAgICAgICAgICAgICAgICAg
IHByZWZfcGF0aHMuYXBwZW5kKHBhdGgpCisKKyAgICAgICAgZm9yIHBhdGggaW4gcHJlZl9wYXRo
czoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAg
IHByZWZzLmFkZChQcmVmZXJlbmNlcy5yZWFkX3ByZWZzKHBhdGgpKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZmluZCBi
YXNlIHByZWZzIGZpbGUgaW4gJXMiICUgcGF0aCkKIAotICAgIGRlZiBzZXR1cF9zc2woc2VsZik6
CisgICAgICAgICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKKyAgICAgICAgcHJlZnMuYWRk
KHNlbGYuZXh0cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKworICAgICAgICByZXR1cm4gcHJlZnMoKQor
CisgICAgZGVmIF9zZXRfcmVxdWlyZWRfcHJlZnMoc2VsZiwgcHJvZmlsZSk6CisgICAgICAgICIi
IlNldCBwcmVmZXJlbmNlcyByZXF1aXJlZCBmb3Igd3B0cnVubmVyIHRvIGZ1bmN0aW9uLgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3Qgc2V0IHRoZSBtYXJpb25ldHRlIHBvcnQsIHNp
bmNlIHdlIGRvbid0IGFsd2F5cworICAgICAgICBrbm93IHRoYXQgYXQgcHJvZmlsZSBjcmVhdGlv
biB0aW1lLiBTbyB0aGUgY2FsbGVyIGlzIHJlc3BvbmlzYmxlIGZvcgorICAgICAgICBzZXR0aW5n
IHRoYXQgb25jZSBpdCdzIGF2YWlsYWJsZS4iIiIKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeworICAgICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2lu
KHNlbGYuY29uZmlnLmRvbWFpbnNfc2V0KSwKKyAgICAgICAgICAgICJkb20uZmlsZS5jcmVhdGVJ
bkNoaWxkIjogVHJ1ZSwKKyAgICAgICAgICAgICMgVE9ETzogUmVtb3ZlIHByZWZlcmVuY2VzIG9u
Y2UgRmlyZWZveCA2NCBpcyBzdGFibGUgKEJ1ZyA5MDU0MDQpCisgICAgICAgICAgICAibmV0d29y
ay5wcm94eS50eXBlIjogMCwKKyAgICAgICAgICAgICJwbGFjZXMuaGlzdG9yeS5lbmFibGVkIjog
RmFsc2UsCisgICAgICAgICAgICAibmV0d29yay5wcmVsb2FkIjogVHJ1ZSwKKyAgICAgICAgfSkK
KyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5j
ZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9KQorCisgICAgICAgIGlm
IHNlbGYuZW5hYmxlX2Zpc3Npb246CisgICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNl
cyh7ImZpc3Npb24uYXV0b3N0YXJ0IjogVHJ1ZX0pCisKKyAgICAgICAgaWYgc2VsZi50ZXN0X3R5
cGUgPT0gInJlZnRlc3QiOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJs
YXlvdXQuaW50ZXJydXB0aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKKworICAgICAgICAj
IEJ1ZyAxMjYyOTU0OiB3aW54cCArIGUxMHMsIGRpc2FibGUgaHdhY2NlbAorICAgICAgICBpZiAo
c2VsZi5lMTBzIGFuZCBwbGF0Zm9ybS5zeXN0ZW0oKSBpbiAoIldpbmRvd3MiLCAiTWljcm9zb2Z0
IikgYW5kCisgICAgICAgICAgICAiNS4xIiBpbiBwbGF0Zm9ybS52ZXJzaW9uKCkpOgorICAgICAg
ICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7ImxheWVycy5hY2NlbGVyYXRpb24u
ZGlzYWJsZWQiOiBUcnVlfSkKKworICAgIGRlZiBfc2V0dXBfc3NsKHNlbGYsIHByb2ZpbGUpOgog
ICAgICAgICAiIiJDcmVhdGUgYSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSB0byB1c2UgaW4gdGhlIHRl
c3QgcHJvZmlsZS4gVGhpcyBpcyBjb25maWd1cmVkCiAgICAgICAgIHRvIHRydXN0IHRoZSBDQSBD
ZXJ0aWZpY2F0ZSB0aGF0IGhhcyBzaWduZWQgdGhlIHdlYi1wbGF0Zm9ybS50ZXN0IHNlcnZlcgog
ICAgICAgICBjZXJ0aWZpY2F0ZS4iIiIKQEAgLTQ5MCwxNiArNjI5LDE2IEBAIGNsYXNzIEZpcmVm
b3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAgICAgY21kID0gW3NlbGYuY2VydHV0aWxfYmlu
YXJ5XSArIGxpc3QoYXJncykKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0
KCJjZXJ0dXRpbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJw
cm9jZXNzLmNoZWNrX291dHB1dChjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3Rf
ZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oY21kKSkKIAotICAgICAgICBwd19w
YXRoID0gb3MucGF0aC5qb2luKHNlbGYucHJvZmlsZS5wcm9maWxlLCAiLmNydGRicHciKQorICAg
ICAgICBwd19wYXRoID0gb3MucGF0aC5qb2luKHByb2ZpbGUucHJvZmlsZSwgIi5jcnRkYnB3IikK
ICAgICAgICAgd2l0aCBvcGVuKHB3X3BhdGgsICJ3IikgYXMgZjoKICAgICAgICAgICAgICMgVXNl
IGVtcHR5IHBhc3N3b3JkIGZvciBjZXJ0aWZpY2F0ZSBkYgogICAgICAgICAgICAgZi53cml0ZSgi
XG4iKQogCi0gICAgICAgIGNlcnRfZGJfcGF0aCA9IHNlbGYucHJvZmlsZS5wcm9maWxlCisgICAg
ICAgIGNlcnRfZGJfcGF0aCA9IHByb2ZpbGUucHJvZmlsZQogCiAgICAgICAgICMgQ3JlYXRlIGEg
bmV3IGNlcnRpZmljYXRlIGRiCiAgICAgICAgIGNlcnR1dGlsKCItTiIsICItZCIsIGNlcnRfZGJf
cGF0aCwgIi1mIiwgcHdfcGF0aCkKQEAgLTUxMCwzICs2NDksMTA2IEBAIGNsYXNzIEZpcmVmb3hC
cm93c2VyKEJyb3dzZXIpOgogCiAgICAgICAgICMgTGlzdCBhbGwgY2VydHMgaW4gdGhlIGRhdGFi
YXNlCiAgICAgICAgIGNlcnR1dGlsKCItTCIsICItZCIsIGNlcnRfZGJfcGF0aCkKKworCisKK2Ns
YXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgorICAgIGluaXRfdGltZW91dCA9IDcwCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHByZWZzX3Jvb3QsIHRlc3RfdHlw
ZSwgZXh0cmFfcHJlZnM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAorICAgICAgICAgICAgICAgICBz
eW1ib2xzX3BhdGg9Tm9uZSwgc3RhY2t3YWxrX2JpbmFyeT1Ob25lLCBjZXJ0dXRpbF9iaW5hcnk9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgY2FfY2VydGlmaWNhdGVfcGF0aD1Ob25lLCBlMTBzPUZh
bHNlLCBlbmFibGVfd2VicmVuZGVyPUZhbHNlLCBlbmFibGVfZmlzc2lvbj1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgc3RhY2tmaXhfZGlyPU5vbmUsIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRf
bXVsdGlwbGllcj1Ob25lLCBsZWFrX2NoZWNrPUZhbHNlLAorICAgICAgICAgICAgICAgICBhc2Fu
PUZhbHNlLCBzdHlsb190aHJlYWRzPTEsIGNoYW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5v
bmUsCisgICAgICAgICAgICAgICAgIGJyb3dzZXJfY2hhbm5lbD0ibmlnaHRseSIsIGhlYWRsZXNz
PU5vbmUsIHByZWxvYWRfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBCcm93c2Vy
Ll9faW5pdF9fKHNlbGYsIGxvZ2dlcikKKworICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgor
CisgICAgICAgIGlmIHRpbWVvdXRfbXVsdGlwbGllcjoKKyAgICAgICAgICAgIHNlbGYuaW5pdF90
aW1lb3V0ID0gc2VsZi5pbml0X3RpbWVvdXQgKiB0aW1lb3V0X211bHRpcGxpZXIKKworICAgICAg
ICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3RhY2tmaXhfZGlyID0gc3Rh
Y2tmaXhfZGlyCisgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoID0gc3ltYm9sc19wYXRoCisgICAg
ICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFyeSA9IHN0YWNrd2Fsa19iaW5hcnkKKworICAgICAgICBz
ZWxmLmFzYW4gPSBhc2FuCisgICAgICAgIHNlbGYubGVha19jaGVjayA9IGxlYWtfY2hlY2sKKwor
ICAgICAgICBwcm9maWxlX2NyZWF0b3IgPSBQcm9maWxlQ3JlYXRvcihsb2dnZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZzX3Jvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHRyYV9wcmVmcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5hYmxlX2Zpc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyb3dzZXJfY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjZXJ0dXRpbF9iaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgpCisKKyAgICAgICAgaWYgcHJlbG9hZF9icm93c2Vy
OgorICAgICAgICAgICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBQcmVsb2FkSW5zdGFuY2VNYW5h
Z2VyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnN0YW5jZV9tYW5hZ2VyX2NscyA9IFNp
bmdsZUluc3RhbmNlTWFuYWdlcgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIgPSBpbnN0
YW5jZV9tYW5hZ2VyX2Nscyhsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5X2FyZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVfY3JlYXRvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdf
aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhb3NfbW9kZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGxlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV93ZWJyZW5kZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxvX3RocmVhZHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWtf
Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrZml4X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhc2FuKQorCisKKyAgICBkZWYgc2V0dGluZ3Moc2Vs
ZiwgdGVzdCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFrX2NoZWNr
IGFuZCBub3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9kaXNhYmxlZCI6IHRl
c3QubHNhbl9kaXNhYmxlZCwKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2VkIjogdGVzdC5s
c2FuX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2RlcHRoIjogdGVz
dC5sc2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVha19hbGxvd2Vk
Ijogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAgICAgICAgICAg
ICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxl
YWtfdGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsIGdyb3VwX21ldGFkYXRhPU5vbmUs
ICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IHNlbGYuaW5zdGFuY2VfbWFuYWdl
ci5nZXQoKQorICAgICAgICBzZWxmLmluc3RhbmNlLm91dHB1dF9oYW5kbGVyLnNldHVwKHNlbGYu
aW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jv
dXBfbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Kiprd2FyZ3MpCisKKyAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIHNl
bGYuaW5zdGFuY2VfbWFuYWdlci5zdG9wX2N1cnJlbnQoZm9yY2UpCisgICAgICAgIHNlbGYubG9n
Z2VyLmRlYnVnKCJzdG9wcGVkIikKKworICAgIGRlZiBwaWQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLmluc3RhbmNlLnBpZCgpCisKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLmluc3RhbmNlIGFuZCBzZWxmLmluc3RhbmNlLmlzX2FsaXZlKCkKKworICAg
IGRlZiBjbGVhbnVwKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5pbnN0YW5jZV9t
YW5hZ2VyLnRlYXJkb3duKGZvcmNlKQorCisgICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6
CisgICAgICAgIGFzc2VydCBzZWxmLmluc3RhbmNlIGlzIG5vdCBOb25lCisgICAgICAgIHJldHVy
biBFeGVjdXRvckJyb3dzZXIsIHsibWFyaW9uZXR0ZV9wb3J0Ijogc2VsZi5pbnN0YW5jZS5tYXJp
b25ldHRlX3BvcnR9CisKKyAgICBkZWYgY2hlY2tfY3Jhc2goc2VsZiwgcHJvY2VzcywgdGVzdCk6
CisgICAgICAgIGR1bXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLnBy
b2ZpbGUucHJvZmlsZSwgIm1pbmlkdW1wcyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmV0dXJuIGJvb2wobW96Y3Jhc2gubG9nX2NyYXNoZXMoc2VsZi5sb2dnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2RpciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1zZWxmLnN5bWJv
bHNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YWNrd2Fsa19iaW5hcnk9c2VsZi5zdGFja3dhbGtfYmluYXJ5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9jZXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdD10ZXN0KSkKKyAgICAgICAgZXhj
ZXB0IElPRXJyb3I6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJMb29raW5nIGZv
ciBjcmFzaCBkdW1wIGZpbGVzIGZhaWxlZCIpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CmluZGV4IDMzYjVkNTFlNTRlODJh
ZGI2Y2RiZTQ2MTIyNjNiYzMwODgzZGQxMDguLmE2Y2I4ZjBkZDNlMGY2NjlkNDdiNGE5YTRhNzI4
ZDk5ZmM2NDg5ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94X2Fu
ZHJvaWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5weQpA
QCAtMSwyNiArMSwzMCBAQAogaW1wb3J0IG9zCiAKIGltcG9ydCBtb3puZXR3b3JrCi1mcm9tIG1v
enByb2ZpbGUgaW1wb3J0IEZpcmVmb3hQcm9maWxlCiBmcm9tIG1venJ1bm5lciBpbXBvcnQgRmVu
bmVjRW11bGF0b3JSdW5uZXIKIAogZnJvbSAuYmFzZSBpbXBvcnQgKGdldF9mcmVlX3BvcnQsCiAg
ICAgICAgICAgICAgICAgICAgY21kX2FyZywKICAgICAgICAgICAgICAgICAgICBicm93c2VyX2Nv
bW1hbmQpCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9ybWFyaW9uZXR0ZSBpbXBvcnQgKE1hcmlv
bmV0dGVUZXN0aGFybmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IpICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3Ip
ICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNzIGltcG9ydCBjYXN0X2VudgorZnJvbSAuYmFz
ZSBpbXBvcnQgKEJyb3dzZXIsCisgICAgICAgICAgICAgICAgICAgRXhlY3V0b3JCcm93c2VyKQog
ZnJvbSAuZmlyZWZveCBpbXBvcnQgKGdldF90aW1lb3V0X211bHRpcGxpZXIsICAjIG5vcWE6IEY0
MDEKICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXMgYXMgZnhfcnVuX2luZm9f
ZXh0cmFzLAogICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzLCAgIyBub3Fh
OiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0b3Jfa3dhcmdzLCAgIyBub3FhOiBG
NDAxCi0gICAgICAgICAgICAgICAgICAgICAgRmlyZWZveEJyb3dzZXIpICAjIG5vcWE6IEY0MDEK
KyAgICAgICAgICAgICAgICAgICAgICBQcm9maWxlQ3JlYXRvciBhcyBGaXJlZm94UHJvZmlsZUNy
ZWF0b3IpCiAKIAogX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJmaXJlZm94X2FuZHJvaWQi
LAogICAgICAgICAgICAgICAgICAiY2hlY2tfYXJncyI6ICJjaGVja19hcmdzIiwKICAgICAgICAg
ICAgICAgICAgImJyb3dzZXIiOiAiRmlyZWZveEFuZHJvaWRCcm93c2VyIiwKICAgICAgICAgICAg
ICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJNYXJpb25ldHRlVGVzdGhhcm5lc3NF
eGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJNYXJp
b25ldHRlUmVmVGVzdEV4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cmVmdGVzdCI6ICJNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yIn0s
CiAgICAgICAgICAgICAgICAgICJicm93c2VyX2t3YXJncyI6ICJicm93c2VyX2t3YXJncyIsCiAg
ICAgICAgICAgICAgICAgICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsCkBAIC01MSw2ICs1NSw3
IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgInRpbWVvdXRfbXVsdGlwbGllciI6IGdldF90aW1lb3V0
X211bHRpcGxpZXIodGVzdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKSwKKyAgICAg
ICAgICAgICJlMTBzIjogcnVuX2luZm9fZGF0YVsiZTEwcyJdLAogICAgICAgICAgICAgIyBkZXNr
dG9wIG9ubHkKICAgICAgICAgICAgICJsZWFrX2NoZWNrIjogRmFsc2UsCiAgICAgICAgICAgICAi
c3R5bG9fdGhyZWFkcyI6IGt3YXJnc1sic3R5bG9fdGhyZWFkcyJdLApAQCAtODAsNDAgKzg1LDE1
IEBAIGRlZiBlbnZfb3B0aW9ucygpOgogICAgICAgICAgICAgInN1cHBvcnRzX2RlYnVnZ2VyIjog
VHJ1ZX0KIAogCi1jbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgot
ICAgIGluaXRfdGltZW91dCA9IDMwMAotICAgIHNodXRkb3duX3RpbWVvdXQgPSA2MAotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCBwYWNrYWdl
X25hbWU9Im9yZy5tb3ppbGxhLmdlY2tvdmlldy50ZXN0IiwKLSAgICAgICAgICAgICAgICAgZGV2
aWNlX3NlcmlhbD0iZW11bGF0b3ItNTQ0NCIsICoqa3dhcmdzKToKLSAgICAgICAgRmlyZWZveEJy
b3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBOb25lLCBwcmVmc19yb290LCB0ZXN0X3R5cGUs
ICoqa3dhcmdzKQotICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9IHBhY2thZ2VfbmFtZQotICAg
ICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFsCi0gICAgICAgIHNlbGYudGVz
dHNfcm9vdCA9IGt3YXJnc1sidGVzdHNfcm9vdCJdCi0gICAgICAgIHNlbGYuaW5zdGFsbF9mb250
cyA9IGt3YXJnc1siaW5zdGFsbF9mb250cyJdCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFy
eSA9IGt3YXJnc1sic3RhY2t3YWxrX2JpbmFyeSJdCi0KLSAgICBkZWYgc3RhcnQoc2VsZiwgKipr
d2FyZ3MpOgotICAgICAgICBpZiBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAg
ICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQgPSBnZXRfZnJlZV9wb3J0KCkKLQotICAgICAgICBl
bnYgPSB7fQotICAgICAgICBlbnZbIk1PWl9DUkFTSFJFUE9SVEVSIl0gPSAiMSIKLSAgICAgICAg
ZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9XTiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9a
X0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMiXSA9ICIxIgotICAgICAgICBlbnZbIlNUWUxP
X1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3RocmVhZHMpCi0gICAgICAgIGlmIHNlbGYuY2hh
b3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9E
RSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFncykKLSAgICAgICAgaWYgc2VsZi5lbmFibGVf
d2VicmVuZGVyOgotICAgICAgICAgICAgZW52WyJNT1pfV0VCUkVOREVSIl0gPSAiMSIKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCi0KLSAgICAg
ICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQorY2xhc3MgUHJvZmlsZUNyZWF0b3Io
RmlyZWZveFByb2ZpbGVDcmVhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cmVmc19yb290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsIGUxMHMsCisgICAgICAg
ICAgICAgICAgIGVuYWJsZV9maXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIGNlcnR1dGlsX2JpbmFy
eSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAgIHN1cGVyKFByb2ZpbGVDcmVhdG9yLCBz
ZWxmKS5fX2luaXRfXyhsb2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVzdF90eXBlLCBleHRy
YV9wcmVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUx
MHMsIGVuYWJsZV9maXNzaW9uLCBicm93c2VyX2NoYW5uZWwsIE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRp
ZmljYXRlX3BhdGgpCiAKLSAgICAgICAgc2VsZi5wcm9maWxlID0gRmlyZWZveFByb2ZpbGUocHJl
ZmVyZW5jZXM9cHJlZmVyZW5jZXMpCi0gICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5j
ZXMoewotICAgICAgICAgICAgIm1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0
LAorICAgIGRlZiBfc2V0X3JlcXVpcmVkX3ByZWZzKHNlbGYsIHByb2ZpbGUpOgorICAgICAgICBw
cm9maWxlLnNldF9wcmVmZXJlbmNlcyh7CiAgICAgICAgICAgICAibmV0d29yay5kbnMubG9jYWxE
b21haW5zIjogIiwiLmpvaW4oc2VsZi5jb25maWcuZG9tYWluc19zZXQpLAogICAgICAgICAgICAg
ImRvbS5kaXNhYmxlX29wZW5fZHVyaW5nX2xvYWQiOiBGYWxzZSwKICAgICAgICAgICAgICJwbGFj
ZXMuaGlzdG9yeS5lbmFibGVkIjogRmFsc2UsCkBAIC0xMjEsOSArMTAxLDEyIEBAIGNsYXNzIEZp
cmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAgICAgICAgICAgICAibmV0d29y
ay5wcmVsb2FkIjogVHJ1ZSwKICAgICAgICAgfSkKIAorICAgICAgICBpZiBzZWxmLmUxMHM6Cisg
ICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7ImJyb3dzZXIudGFicy5yZW1vdGUu
YXV0b3N0YXJ0IjogVHJ1ZX0pCisKICAgICAgICAgaWYgc2VsZi50ZXN0X3R5cGUgPT0gInJlZnRl
c3QiOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU2V0dGluZyBhbmRyb2lkIHJlZnRl
c3QgcHJlZmVyZW5jZXMiKQotICAgICAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNl
cyh7CisgICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7CiAgICAgICAgICAgICAg
ICAgImJyb3dzZXIudmlld3BvcnQuZGVza3RvcFdpZHRoIjogODAwLAogICAgICAgICAgICAgICAg
ICMgRGlzYWJsZSBoaWdoIERQSQogICAgICAgICAgICAgICAgICJsYXlvdXQuY3NzLmRldlBpeGVs
c1BlclB4IjogIjEuMCIsCkBAIC0xMzUsNiArMTE4LDczIEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lk
QnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAgICAgICAgICAgICAgICAgImxheW91dC50ZXN0aW5n
Lm92ZXJsYXktc2Nyb2xsYmFycy5hbHdheXMtdmlzaWJsZSI6IFRydWUsCiAgICAgICAgICAgICB9
KQogCisKKworY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEJyb3dzZXIpOgorICAgIGluaXRf
dGltZW91dCA9IDMwMAorICAgIHNodXRkb3duX3RpbWVvdXQgPSA2MAorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCBwYWNrYWdlX25hbWU9Im9y
Zy5tb3ppbGxhLmdlY2tvdmlldy50ZXN0IiwKKyAgICAgICAgICAgICAgICAgZGV2aWNlX3Nlcmlh
bD0iZW11bGF0b3ItNTQ0NCIsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwg
Y2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3Bh
dGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGly
PU5vbmUsCisgICAgICAgICAgICAgICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlw
bGllcj1Ob25lLCBsZWFrX2NoZWNrPUZhbHNlLCBhc2FuPUZhbHNlLAorICAgICAgICAgICAgICAg
ICBzdHlsb190aHJlYWRzPTEsIGNoYW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJy
b3dzZXJfY2hhbm5lbD0ibmlnaHRseSIsCisgICAgICAgICAgICAgICAgIGluc3RhbGxfZm9udHM9
RmFsc2UsIHRlc3RzX3Jvb3Q9Tm9uZSwgKiprd2FyZ3MpOgorCisgICAgICAgIHN1cGVyKEZpcmVm
b3hBbmRyb2lkQnJvd3Nlciwgc2VsZikuX19pbml0X18obG9nZ2VyKQorICAgICAgICBzZWxmLnBy
ZWZzX3Jvb3QgPSBwcmVmc19yb290CisgICAgICAgIHNlbGYudGVzdF90eXBlID0gdGVzdF90eXBl
CisgICAgICAgIHNlbGYucGFja2FnZV9uYW1lID0gcGFja2FnZV9uYW1lCisgICAgICAgIHNlbGYu
ZGV2aWNlX3NlcmlhbCA9IGRldmljZV9zZXJpYWwKKyAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0g
ZGVidWdfaW5mbworICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAg
ICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBzdGFja3dhbGtfYmluYXJ5CisgICAgICAgIHNl
bGYuY2VydHV0aWxfYmluYXJ5ID0gY2VydHV0aWxfYmluYXJ5CisgICAgICAgIHNlbGYuY2FfY2Vy
dGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKKyAgICAgICAgc2VsZi5lMTBzID0g
ZTEwcworICAgICAgICBzZWxmLmVuYWJsZV93ZWJyZW5kZXIgPSBlbmFibGVfd2VicmVuZGVyCisg
ICAgICAgIHNlbGYuc3RhY2tmaXhfZGlyID0gc3RhY2tmaXhfZGlyCisgICAgICAgIHNlbGYuYmlu
YXJ5X2FyZ3MgPSBiaW5hcnlfYXJncworICAgICAgICBzZWxmLnRpbWVvdXRfbXVsdGlwbGllciA9
IHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNr
CisgICAgICAgIHNlbGYuYXNhbiA9IGFzYW4KKyAgICAgICAgc2VsZi5zdHlsb190aHJlYWRzID0g
c3R5bG9fdGhyZWFkcworICAgICAgICBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgPSBjaGFvc19tb2Rl
X2ZsYWdzCisgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisgICAgICAgIHNlbGYuYnJvd3Nl
cl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNlbGYuaW5zdGFsbF9mb250cyA9
IGluc3RhbGxfZm9udHMKKyAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAorCisg
ICAgICAgIHNlbGYucHJvZmlsZV9jcmVhdG9yID0gUHJvZmlsZUNyZWF0b3IobG9nZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9wcmVmcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfY2hhbm5lbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0dXRpbF9i
aW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Ff
Y2VydGlmaWNhdGVfcGF0aCkKKworICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IE5vbmUK
KyAgICAgICAgc2VsZi5wcm9maWxlID0gTm9uZQorICAgICAgICBzZWxmLnJ1bm5lciA9IE5vbmUK
KworICAgIGRlZiBzZXR0aW5ncyhzZWxmLCB0ZXN0KToKKyAgICAgICAgcmV0dXJuIHsiY2hlY2tf
bGVha3MiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIG5vdCB0ZXN0LmxlYWtzLAorICAgICAgICAgICAg
ICAgICJsc2FuX2FsbG93ZWQiOiB0ZXN0LmxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAi
bHNhbl9tYXhfc3RhY2tfZGVwdGgiOiB0ZXN0LmxzYW5fbWF4X3N0YWNrX2RlcHRoLAorICAgICAg
ICAgICAgICAgICJtb3psZWFrX2FsbG93ZWQiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIHRlc3QubW96
bGVha19hbGxvd2VkLAorICAgICAgICAgICAgICAgICJtb3psZWFrX3RocmVzaG9sZHMiOiBzZWxm
LmxlYWtfY2hlY2sgYW5kIHRlc3QubW96bGVha190aHJlc2hvbGR9CisKKyAgICBkZWYgc3RhcnQo
c2VsZiwgKiprd2FyZ3MpOgorICAgICAgICBpZiBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBOb25l
OgorICAgICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQgPSBnZXRfZnJlZV9wb3J0KCkKKwor
ICAgICAgICBzZWxmLnByb2ZpbGUgPSBzZWxmLnByb2ZpbGVfY3JlYXRvci5jcmVhdGUoKQorICAg
ICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibWFyaW9uZXR0ZS5wb3J0Ijogc2Vs
Zi5tYXJpb25ldHRlX3BvcnR9KQorCiAgICAgICAgIGlmIHNlbGYuaW5zdGFsbF9mb250czoKICAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDb3B5aW5nIEFoZW0gZm9udCB0byBwcm9maWxl
IikKICAgICAgICAgICAgIGZvbnRfZGlyID0gb3MucGF0aC5qb2luKHNlbGYucHJvZmlsZS5wcm9m
aWxlLCAiZm9udHMiKQpAQCAtMTQ2LDE4ICsxOTYsMjcgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRC
cm93c2VyKEZpcmVmb3hCcm93c2VyKToKIAogICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUg
PSBOb25lCiAKLSAgICAgICAgaWYgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5zZXR1cF9zc2woKQotCiAgICAgICAgIGRlYnVnX2FyZ3MsIGNt
ZCA9IGJyb3dzZXJfY29tbWFuZChzZWxmLnBhY2thZ2VfbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmluYXJ5X2FyZ3MgaWYgc2VsZi5iaW5hcnlf
YXJncyBlbHNlIFtdICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtjbWRfYXJnKCJtYXJpb25ldHRlIiksICJhYm91dDpibGFuayJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQogCisgICAgICAgIGVu
diA9IHt9CisgICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVIiXSA9ICIxIgorICAgICAgICBl
bnZbIk1PWl9DUkFTSFJFUE9SVEVSX1NIVVRET1dOIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pf
RElTQUJMRV9OT05MT0NBTF9DT05ORUNUSU9OUyJdID0gIjEiCisgICAgICAgIGVudlsiU1RZTE9f
VEhSRUFEUyJdID0gc3RyKHNlbGYuc3R5bG9fdGhyZWFkcykKKyAgICAgICAgaWYgc2VsZi5jaGFv
c19tb2RlX2ZsYWdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW52WyJNT1pfQ0hBT1NNT0RF
Il0gPSBzdHIoc2VsZi5jaGFvc19tb2RlX2ZsYWdzKQorICAgICAgICBpZiBzZWxmLmVuYWJsZV93
ZWJyZW5kZXI6CisgICAgICAgICAgICBlbnZbIk1PWl9XRUJSRU5ERVIiXSA9ICIxIgorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgZW52WyJNT1pfV0VCUkVOREVSIl0gPSAiMCIKKwogICAgICAg
ICBzZWxmLnJ1bm5lciA9IEZlbm5lY0VtdWxhdG9yUnVubmVyKGFwcD1zZWxmLnBhY2thZ2VfbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlPXNl
bGYucHJvZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bWRhcmdzPWNtZFsxOl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnY9Y2FzdF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsPXNlbGYuZGV2aWNlX3NlcmlhbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE8gLSBjaG9vc2UgYXBw
cm9wcmlhdGUgbG9nIGRpcgpAQCAtMTk2LDYgKzI1NSwyNiBAQCBjbGFzcyBGaXJlZm94QW5kcm9p
ZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgogICAgICAgICAgICAgc2VsZi5ydW5uZXIuc3RvcCgp
CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJzdG9wcGVkIikKIAorICAgIGRlZiBwaWQoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5ydW5uZXIucHJvY2Vzc19oYW5kbGVyLnBpZAorICAgICAgICBleGNlcHQgQXR0cmlidXRl
RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYp
OgorICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bm5l
ci5pc19ydW5uaW5nKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY2xlYW51cChz
ZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3RvcChmb3JjZSkKKworICAgIGRlZiBl
eGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7
Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fQorCiAgICAgZGVmIGNoZWNr
X2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgogICAgICAgICBpZiBub3Qgb3MuZW52aXJvbi5n
ZXQoIk1JTklEVU1QX1NUQUNLV0FMSyIsICIiKSBhbmQgc2VsZi5zdGFja3dhbGtfYmluYXJ5Ogog
ICAgICAgICAgICAgb3MuZW52aXJvblsiTUlOSURVTVBfU1RBQ0tXQUxLIl0gPSBzZWxmLnN0YWNr
d2Fsa19iaW5hcnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQppbmRleCA2MzVlODI3YzI5NWI1YjExOTI4MjJmNTFk
OTNhNGIwOWUzNzY0MTkyLi43OGMyMmI5MDlhY2Y0MTAwMzhmZjA2NzY5MzY2NjYyYWIwYzU4OWEw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2llLnB5CkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIEludGVybmV0RXhwbG9y
ZXJCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGlj
YXRlcyB0aGUgc2VydmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0
aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZl
LgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNl
bGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBz
ZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5CmluZGV4IDU1YzA1MDllZWQ5MmEyYWJlMjdj
ZDYyY2U0MGQ3NDlkZGFjYjZhODMuLjgwNWZlZGVlNjM2Y2QyMjE1NWVkMTQzY2YxMTQ4ZjNjMmY1
ZDk4ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgT3Bl
cmFCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGlj
YXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0
aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZl
LgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNl
bGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBz
ZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFyaS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkKaW5kZXggZjRmZDMzMTNmOWZiYmMxYmYx
N2Y4NzBkMzk1MDY5NDZiOTUzOGI2Ny4uY2IyYjE3NWQ0ZGZiYzMxNjZlNGFkNWE2YWZlMTc0ZmZk
YmM2ZmY4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFyaS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5CkBAIC0zLDcgKzMsOCBAQCBmcm9tIC5i
YXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC4u
d2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgU2FmYXJpRHJpdmVyU2VydmVyCiBmcm9tIC4uZXhlY3V0
b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20g
Li5leGVjdXRvcnMuZXhlY3V0b3J3ZWJkcml2ZXIgaW1wb3J0IChXZWJEcml2ZXJUZXN0aGFybmVz
c0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4
ZWN1dG9yLCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKIGZyb20g
Li5leGVjdXRvcnMuZXhlY3V0b3JzYWZhcmkgaW1wb3J0IFNhZmFyaURyaXZlcldkc3BlY0V4ZWN1
dG9yICAjIG5vcWE6IEY0MDEKIAogCkBAIC0xMiw3ICsxMyw4IEBAIF9fd3B0cnVubmVyX18gPSB7
InByb2R1Y3QiOiAic2FmYXJpIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXIiOiAiU2FmYXJp
QnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAi
V2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciJ9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJTYWZhcmlEcml2ZXJX
ZHNwZWNFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0
IjogIldlYkRyaXZlckNyYXNodGVzdEV4ZWN1dG9yIn0sCiAgICAgICAgICAgICAgICAgICJicm93
c2VyX2t3YXJncyI6ICJicm93c2VyX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRv
cl9rd2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImVudl9leHRy
YXMiOiAiZW52X2V4dHJhcyIsCkBAIC03OSw3ICs4MSw3IEBAIGNsYXNzIFNhZmFyaUJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBk
cml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0
IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAg
IHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIu
aXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvc2F1Y2UucHkKaW5kZXggMzMwMWM3NWIyMTAwNGE1NTRmOTFkNDc2N2I4NTYw
ZmM0MDIxNDQxMi4uZmU4MzY4MmY1ZmMxNmY0YjJkYTY2NGI4ZTZjYTRkYmM4ZGRjNTA5YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9zYXVjZS5weQpAQCAtOSwxMCArOSwxMSBAQCBpbXBvcnQgc3VicHJvY2Vzcwog
aW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWZyb20gY1N0cmlu
Z0lPIGltcG9ydCBTdHJpbmdJTyBhcyBDU3RyaW5nSU8KIAogaW1wb3J0IHJlcXVlc3RzCiAKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBjU3RyaW5nSU8gYXMgU3RyaW5nSU8KKwogZnJvbSAuYmFzZSBp
bXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZwogZnJvbSAuYmFzZSBp
bXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1
dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCkBAIC0x
MjQsNyArMTI1LDcgQEAgZGVmIGVudl9vcHRpb25zKCk6CiBkZWYgZ2V0X3Rhcih1cmwsIGRlc3Qp
OgogICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsLCBzdHJlYW09VHJ1ZSkKICAgICByZXNwLnJh
aXNlX2Zvcl9zdGF0dXMoKQotICAgIHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9Q1N0cmluZ0lP
KHJlc3AucmF3LnJlYWQoKSkpIGFzIGY6CisgICAgd2l0aCB0YXJmaWxlLm9wZW4oZmlsZW9iaj1T
dHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkpKSBhcyBmOgogICAgICAgICBmLmV4dHJhY3RhbGwocGF0
aD1kZXN0KQogCiAKQEAgLTE3OCw3ICsxNzksNyBAQCBjbGFzcyBTYXVjZUNvbm5lY3QoKToKIAog
ICAgICAgICB0b3Rfd2FpdCA9IDAKICAgICAgICAgd2hpbGUgbm90IG9zLnBhdGguZXhpc3RzKCcu
L3NhdWNlX2lzX3JlYWR5JykgYW5kIHNlbGYuc2NfcHJvY2Vzcy5wb2xsKCkgaXMgTm9uZToKLSAg
ICAgICAgICAgIGlmIHRvdF93YWl0ID49IHNlbGYuc2F1Y2VfaW5pdF90aW1lb3V0OgorICAgICAg
ICAgICAgaWYgbm90IHNlbGYuc2F1Y2VfaW5pdF90aW1lb3V0IG9yICh0b3Rfd2FpdCA+PSBzZWxm
LnNhdWNlX2luaXRfdGltZW91dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5xdWl0KCkKIAogICAg
ICAgICAgICAgICAgIHJhaXNlIFNhdWNlRXhjZXB0aW9uKCJTYXVjZSBDb25uZWN0IFByb3h5IHdh
cyBub3QgcmVhZHkgYWZ0ZXIgJWQgc2Vjb25kcyIgJSB0b3Rfd2FpdCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zZXJ2b2RyaXZlci5weQppbmRleCAyOTUzZGUxODE3NGVmNzVkNTA1ZGIwYjhkNTE4ZmUzMzM5
ZjcwNjVlLi4wMmI3OTZiNzU2MDM4NWNkMDA5MDJiYmZjMWIzNjFhNTQyMjQ5Zjg1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CkBAIC0xMSw2ICsxMSw3IEBAIGZyb20gLmJhc2Ug
aW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIgICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcnNlcnZvZHJpdmVyIGltcG9ydCAoU2Vydm9XZWJEcml2ZXJU
ZXN0aGFybmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMg
bm9xYTogRjQwMQorZnJvbSAuLnByb2Nlc3MgaW1wb3J0IGNhc3RfZW52CiAKIGhlcmUgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0pCiAKQEAgLTEzMCwxMSArMTMxLDEx
IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgaWYgbm90
IHNlbGYuZGVidWdfaW5mbyBvciBub3Qgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAg
ICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoc2VsZi5jb21tYW5kLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc091dHB1dExpbmU9W3NlbGYu
b25fb3V0cHV0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1l
bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYo
ZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlT3V0cHV0
PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWVu
dikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jb21tYW5k
LCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2Vydm8g
U3RhcnRlZCIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CmluZGV4IGFhMjg2MjEzOTQ1MGY2ODJl
NjA1MWM1ZjYxN2FiOGNhZjE5NjA3ODQuLmRhOTNjZjE2NDM5OTVkOTViOGQ2ZGUxZjcwYzc3MzFi
NTU1OTc2OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXQucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAu
YmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZwogZnJvbSAu
YmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciwgY2VydGlmaWNhdGVfZG9tYWluX2xp
c3QgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdz
IGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJp
dmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRl
c3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVz
dEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2Via2l0
IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiBmcm9tIC4u
d2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgV2ViS2l0RHJpdmVyU2VydmVyCiAKQEAgLTEzLDcgKzE0
LDggQEAgX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJ3ZWJraXQiLAogICAgICAgICAgICAg
ICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAg
ICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0
b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVy
UmVmVGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMi
OiAiV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ3ZHNwZWMiOiAiV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVj
dXRvciJ9LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3
YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLAogICAg
ICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLApAQCAtOTksNyArMTAx
LDcgQEAgY2xhc3MgV2ViS2l0QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6
IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQg
ZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAg
ICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisg
ICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChz
ZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Vi
a2l0Z3RrX21pbmlicm93c2VyLnB5CmluZGV4IGQ3MzVmM2MwNzkyYTYzNTZjNjI3MDE0MzIwNWM1
NWI3YzAyZWVmNDcuLmQ4Yjk3NDRiZDc0M2UzOWNlMTlmMDA4ZTdmNDBjYmM4MGU4MDEwN2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQpAQCAt
Miw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciwgbWF5
YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9saXMKIGZyb20gLndlYmtpdCBpbXBvcnQg
V2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFz
IGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVy
IGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2Via2l0IGlt
cG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIF9fd3B0cnVu
bmVyX18gPSB7InByb2R1Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKQEAgLTExLDcgKzEy
LDggQEAgX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJ3ZWJraXRndGtfbWluaWJyb3dzZXIi
LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAog
ICAgICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRl
c3RoYXJuZXNzRXhlY3V0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRl
c3QiOiAiV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ3ZHNwZWMiOiAiV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAiV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2
ZXJDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdz
IjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVu
dl9leHRyYXMiLAogICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMi
LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Vudmlyb25tZW50LnB5CmluZGV4IGU3OWFlMzc1MDY0N2Y4OGJiYTQ0NzAzMTgxYzIwODIyOTgw
MGY2NTguLmY3NjgzNmVhNjZiNTliYjE2ZjJkMzc5MjQ1MWJjZjI4ZWNiMmZiNDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJv
bm1lbnQucHkKQEAgLTUsNiArNSw3IEBAIGltcG9ydCBzaWduYWwKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCBzeXMKIGltcG9ydCB0aW1lCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZyb20g
bW96bG9nIGltcG9ydCBnZXRfZGVmYXVsdF9sb2dnZXIsIGhhbmRsZXJzLCBwcm94eQogCkBAIC01
Miw3ICs1Myw5IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudEVycm9yKEV4Y2VwdGlvbik6CiBjbGFz
cyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBv
d25zIHRoZSB0ZXN0IGVudmlyb25tZW50IGkuZS4gdGhlIGh0dHAgYW5kCiAgICAgd2Vic29ja2V0
cyBzZXJ2ZXJzIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJu
ZXNzX3RpbWVvdXRfbXVsdGlwbGVyLCBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZvLCBvcHRp
b25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dF9wYXRocywgdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIsCisgICAgICAgICAgICAgICAg
IHBhdXNlX2FmdGVyX3Rlc3QsIGRlYnVnX2luZm8sIG9wdGlvbnMsIHNzbF9jb25maWcsIGVudl9l
eHRyYXMsCisgICAgICAgICAgICAgICAgIGVuYWJsZV9xdWljPUZhbHNlKToKICAgICAgICAgc2Vs
Zi50ZXN0X3BhdGhzID0gdGVzdF9wYXRocwogICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKICAg
ICAgICAgc2VsZi5jb25maWdfY3R4ID0gTm9uZQpAQCAtNjgsNiArNzEsNyBAQCBjbGFzcyBUZXN0
RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzID0gZW52X2V4dHJh
cwogICAgICAgICBzZWxmLmVudl9leHRyYXNfY21zID0gTm9uZQogICAgICAgICBzZWxmLnNzbF9j
b25maWcgPSBzc2xfY29uZmlnCisgICAgICAgIHNlbGYuZW5hYmxlX3F1aWMgPSBlbmFibGVfcXVp
YwogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgc2VsZi5jb25maWdfY3R4ID0g
c2VsZi5idWlsZF9jb25maWcoKQpAQCAtOTEsNiArOTUsNyBAQCBjbGFzcyBUZXN0RW52aXJvbm1l
bnQob2JqZWN0KToKIAogICAgICAgICBzZWxmLnNlcnZlcnMgPSBzZXJ2ZS5zdGFydChzZWxmLmNv
bmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfcm91dGVz
KCkpCisKICAgICAgICAgaWYgc2VsZi5vcHRpb25zLmdldCgic3VwcG9ydHNfZGVidWdnZXIiKSBh
bmQgc2VsZi5kZWJ1Z19pbmZvIGFuZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmU6CiAgICAg
ICAgICAgICBzZWxmLmlnbm9yZV9pbnRlcnJ1cHRzKCkKICAgICAgICAgcmV0dXJuIHNlbGYKQEAg
LTk4LDcgKzEwMyw3IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgIGRlZiBf
X2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKICAgICAgICAgc2VsZi5w
cm9jZXNzX2ludGVycnVwdHMoKQogCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2Vs
Zi5zZXJ2ZXJzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0
ZXJpdGVtcyhzZWxmLnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBz
ZXJ2ZXJzOgogICAgICAgICAgICAgICAgIHNlcnZlci5raWxsKCkKICAgICAgICAgZm9yIGNtIGlu
IHNlbGYuZW52X2V4dHJhc19jbXM6CkBAIC0xMjYsNyArMTMxLDEwIEBAIGNsYXNzIFRlc3RFbnZp
cm9ubWVudChvYmplY3QpOgogICAgICAgICAgICAgImh0dHBzIjogWzg0NDNdLAogICAgICAgICAg
ICAgIndzIjogWzg4ODhdLAogICAgICAgICAgICAgIndzcyI6IFs4ODg5XSwKKyAgICAgICAgICAg
ICJoMiI6IFs5MDAwXSwKICAgICAgICAgfQorICAgICAgICBpZiBzZWxmLmVuYWJsZV9xdWljOgor
ICAgICAgICAgICAgY29uZmlnLnBvcnRzWyJxdWljIl0gPSBbMTAwMDBdCiAKICAgICAgICAgaWYg
b3MucGF0aC5leGlzdHMob3ZlcnJpZGVfcGF0aCk6CiAgICAgICAgICAgICB3aXRoIG9wZW4ob3Zl
cnJpZGVfcGF0aCkgYXMgZjoKQEAgLTE5MSwxMCArMTk5LDEwIEBAIGNsYXNzIFRlc3RFbnZpcm9u
bWVudChvYmplY3QpOgogICAgICAgICAgICAgZGF0YSArPSBmcC5yZWFkKCkKICAgICAgICAgd2l0
aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdGRyaXZlci1leHRyYS5qcyIpLCAicmIiKSBh
cyBmcDoKICAgICAgICAgICAgIGRhdGEgKz0gZnAucmVhZCgpCi0gICAgICAgIHJvdXRlX2J1aWxk
ZXIuYWRkX2hhbmRsZXIoYiJHRVQiLCBiIi9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcyIsCisgICAg
ICAgIHJvdXRlX2J1aWxkZXIuYWRkX2hhbmRsZXIoIkdFVCIsICIvcmVzb3VyY2VzL3Rlc3Rkcml2
ZXIuanMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0hhbmRsZXIo
ZGF0YSwgInRleHQvamF2YXNjcmlwdCIpKQogCi0gICAgICAgIGZvciB1cmxfYmFzZSwgcGF0aHMg
aW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdXJsX2Jhc2UsIHBh
dGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgogICAgICAgICAgICAgaWYgdXJsX2Jh
c2UgPT0gIi8iOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICByb3V0ZV9i
dWlsZGVyLmFkZF9tb3VudF9wb2ludCh1cmxfYmFzZSwgcGF0aHNbInRlc3RzX3BhdGgiXSkKQEAg
LTIxMCw4ICsyMTgsMTAgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IGVhY2hfc2xlZXBfc2VjcyA9IDAuNQogICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpICsg
dG90YWxfc2xlZXBfc2VjcwogICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSA8IGVuZF90aW1lOgot
ICAgICAgICAgICAgZmFpbGVkID0gc2VsZi50ZXN0X3NlcnZlcnMoKQotICAgICAgICAgICAgaWYg
bm90IGZhaWxlZDoKKyAgICAgICAgICAgIGZhaWxlZCwgcGVuZGluZyA9IHNlbGYudGVzdF9zZXJ2
ZXJzKCkKKyAgICAgICAgICAgIGlmIGZhaWxlZDoKKyAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgaWYgbm90IHBlbmRpbmc6CiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAg
ICAgICB0aW1lLnNsZWVwKGVhY2hfc2xlZXBfc2VjcykKICAgICAgICAgcmFpc2UgRW52aXJvbm1l
bnRFcnJvcigiU2VydmVycyBmYWlsZWQgdG8gc3RhcnQ6ICVzIiAlCkBAIC0yMTksMTkgKzIyOSwy
MyBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3NlcnZl
cnMoc2VsZik6CiAgICAgICAgIGZhaWxlZCA9IFtdCisgICAgICAgIHBlbmRpbmcgPSBbXQogICAg
ICAgICBob3N0ID0gc2VsZi5jb25maWdbInNlcnZlcl9ob3N0Il0KLSAgICAgICAgZm9yIHNjaGVt
ZSwgc2VydmVycyBpbiBzZWxmLnNlcnZlcnMuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBzY2hl
bWUsIHNlcnZlcnMgaW4gaXRlcml0ZW1zKHNlbGYuc2VydmVycyk6CiAgICAgICAgICAgICBmb3Ig
cG9ydCwgc2VydmVyIGluIHNlcnZlcnM6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi50ZXN0X3Nl
cnZlcl9wb3J0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZXJ2ZXIuaXNfYWxpdmUoKToKKyAg
ICAgICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVuZCgoc2NoZW1lLCBwb3J0KSkKKworICAgICAg
ICBpZiBub3QgZmFpbGVkIGFuZCBzZWxmLnRlc3Rfc2VydmVyX3BvcnQ6CisgICAgICAgICAgICBm
b3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxmLnNlcnZlcnMpOgorICAgICAgICAg
ICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAgICAgICAgICAgICAg
cyA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICAgICAgICAgICAgICBzLnNldHRpbWVvdXQoMC4x
KQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNv
bm5lY3QoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVy
cm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVuZCgoaG9zdCwgcG9ydCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLmFwcGVuZCgoaG9zdCwgcG9ydCkpCiAg
ICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNs
b3NlKCkKIAotICAgICAgICAgICAgICAgIGlmIG5vdCBzZXJ2ZXIuaXNfYWxpdmUoKToKLSAgICAg
ICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVuZCgoc2NoZW1lLCBwb3J0KSkKLSAgICAgICAgcmV0
dXJuIGZhaWxlZAorICAgICAgICByZXR1cm4gZmFpbGVkLCBwZW5kaW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2FjdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM0M2RkNjY1YTJmM2JjNTU3NmNiNTM1ZjI5ZDQ5YWJi
Yzk1OTNmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0aW9u
cy5weQpAQCAtMCwwICsxLDE4NCBAQAorCitjbGFzcyBDbGlja0FjdGlvbihvYmplY3QpOgorICAg
IG5hbWUgPSAiY2xpY2siCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBz
ZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAgZWxlbWVudCA9IHNlbGYucHJv
dG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Ioc2VsZWN0b3IpCisgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCJDbGlja2luZyBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAg
c2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50KGVsZW1lbnQpCisKKworY2xhc3MgU2VuZEtleXNB
Y3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNlbmRfa2V5cyIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGVjdG9yID0gcGF5bG9hZFsic2VsZWN0b3IiXQorICAg
ICAgICBrZXlzID0gcGF5bG9hZFsia2V5cyJdCisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3Rv
Y29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiU2VuZGluZyBrZXlzIHRvIGVsZW1lbnQ6ICVzIiAlIHNlbGVjdG9yKQorICAg
ICAgICBzZWxmLnByb3RvY29sLnNlbmRfa2V5cy5zZW5kX2tleXMoZWxlbWVudCwga2V5cykKKwor
CitjbGFzcyBBY3Rpb25TZXF1ZW5jZUFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiYWN0aW9u
X3NlcXVlbmNlIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgor
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJv
dG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgIyBUT0RP
OiBzb21lIHNvcnQgb2Ygc2hhbGxvdyBlcnJvciBjaGVja2luZworICAgICAgICBhY3Rpb25zID0g
cGF5bG9hZFsiYWN0aW9ucyJdCisgICAgICAgIGZvciBhY3Rpb25TZXF1ZW5jZSBpbiBhY3Rpb25z
OgorICAgICAgICAgICAgaWYgYWN0aW9uU2VxdWVuY2VbInR5cGUiXSA9PSAicG9pbnRlciI6Cisg
ICAgICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25TZXF1ZW5jZVsiYWN0aW9ucyJdOgor
ICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uWyJ0eXBlIl0gPT0gInBvaW50ZXJNb3ZlIiBh
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uWyJvcmlnaW4iXSwg
ZGljdCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uWyJvcmlnaW4iXSA9IHNlbGYu
Z2V0X2VsZW1lbnQoYWN0aW9uWyJvcmlnaW4iXVsic2VsZWN0b3IiXSwgYWN0aW9uWyJmcmFtZSJd
WyJmcmFtZSJdKQorICAgICAgICBzZWxmLnByb3RvY29sLmFjdGlvbl9zZXF1ZW5jZS5zZW5kX2Fj
dGlvbnMoeyJhY3Rpb25zIjogYWN0aW9uc30pCisKKyAgICBkZWYgZ2V0X2VsZW1lbnQoc2VsZiwg
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpOgorICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2Nv
bC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQKKworY2xhc3MgR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKG9i
amVjdCk6CisgICAgbmFtZSA9ICJnZW5lcmF0ZV90ZXN0X3JlcG9ydCIKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dn
ZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18o
c2VsZiwgcGF5bG9hZCk6CisgICAgICAgIG1lc3NhZ2UgPSBwYXlsb2FkWyJtZXNzYWdlIl0KKyAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkdlbmVyYXRpbmcgdGVzdCByZXBvcnQ6ICVzIiAlIG1l
c3NhZ2UpCisgICAgICAgIHNlbGYucHJvdG9jb2wuZ2VuZXJhdGVfdGVzdF9yZXBvcnQuZ2VuZXJh
dGVfdGVzdF9yZXBvcnQobWVzc2FnZSkKKworY2xhc3MgU2V0UGVybWlzc2lvbkFjdGlvbihvYmpl
Y3QpOgorICAgIG5hbWUgPSAic2V0X3Blcm1pc3Npb24iCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgorICAgICAgICBwZXJtaXNzaW9uX3BhcmFtcyA9IHBheWxvYWRbInBlcm1pc3Npb25f
cGFyYW1zIl0KKyAgICAgICAgZGVzY3JpcHRvciA9IHBlcm1pc3Npb25fcGFyYW1zWyJkZXNjcmlw
dG9yIl0KKyAgICAgICAgbmFtZSA9IGRlc2NyaXB0b3JbIm5hbWUiXQorICAgICAgICBzdGF0ZSA9
IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJdCisgICAgICAgIG9uZV9yZWFsbSA9IHBlcm1pc3Np
b25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBGYWxzZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0byAlcywgb25lUmVhbG09JXMiICUgKG5hbWUsIHN0
YXRlLCBvbmVfcmVhbG0pKQorICAgICAgICBzZWxmLnByb3RvY29sLnNldF9wZXJtaXNzaW9uLnNl
dF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0YXRlLCBvbmVfcmVhbG0pCisKK2NsYXNzIEFkZFZp
cnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJhZGRfdmlydHVh
bF9hdXRoZW50aWNhdG9yIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQorICAgICAg
ICBjb25maWcgPSBwYXlsb2FkWyJjb25maWciXQorICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0g
c2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGlj
YXRvcihjb25maWcpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNy
ZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gYXV0
aGVudGljYXRvcl9pZAorCitjbGFzcyBSZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihv
YmplY3QpOgorICAgIG5hbWUgPSAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dn
ZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYg
X19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXls
b2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92
aW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQorICAgICAg
ICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1
YWxfYXV0aGVudGljYXRvcihhdXRoZW50aWNhdG9yX2lkKQorCisKK2NsYXNzIEFkZENyZWRlbnRp
YWxBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImFkZF9jcmVkZW50aWFsIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9
IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2Nh
bGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRb
ImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBjcmVkZW50aWFsID0gcGF5bG9hZFsiY3JlZGVu
dGlhbCJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgY3JlZGVudGlhbCB0byB2
aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJl
dHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5hZGRfY3JlZGVudGlhbChh
dXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsKQorCitjbGFzcyBHZXRDcmVkZW50aWFsc0FjdGlv
bihvYmplY3QpOgorICAgIG5hbWUgPSAiZ2V0X2NyZWRlbnRpYWxzIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dl
cgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhz
ZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhl
bnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50
aWFscyBmcm9tIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkK
KyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9j
cmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitjbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfY3JlZGVudGlhbCIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJh
dXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgY3JlZGVudGlhbF9pZCA9IHBheWxvYWRbImNyZWRl
bnRpYWxfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgY3JlZGVudGlh
bCAlcyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgKGNyZWRlbnRpYWxfaWQsIGF1dGhlbnRpY2F0
b3JfaWQpKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0
b3IucmVtb3ZlX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlhbF9pZCkKKwor
Y2xhc3MgUmVtb3ZlQWxsQ3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInJl
bW92ZV9hbGxfY3JlZGVudGlhbHMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBhbGwgY3JlZGVudGlhbHMgZnJvbSBhdXRo
ZW50aWNhdG9yICVzIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnBy
b3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5yZW1vdmVfYWxsX2NyZWRlbnRpYWxzKGF1dGhl
bnRpY2F0b3JfaWQpCisKK2NsYXNzIFNldFVzZXJWZXJpZmllZEFjdGlvbihvYmplY3QpOgorICAg
IG5hbWUgPSAic2V0X3VzZXJfdmVyaWZpZWQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQp
OgorICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJd
CisgICAgICAgIHV2ID0gcGF5bG9hZFsidXYiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygK
KyAgICAgICAgICAgICJTZXR0aW5nIHVzZXIgdmVyaWZpZWQgZmxhZyBvbiBhdXRoZW50aWNhdG9y
ICVzIHRvICVzIiAlIChhdXRoZW50aWNhdG9yX2lkLCB1dlsiaXNVc2VyVmVyaWZpZWQiXSkpCisg
ICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5zZXRfdXNl
cl92ZXJpZmllZChhdXRoZW50aWNhdG9yX2lkLCB1dikKKworCithY3Rpb25zID0gW0NsaWNrQWN0
aW9uLAorICAgICAgICAgICBTZW5kS2V5c0FjdGlvbiwKKyAgICAgICAgICAgQWN0aW9uU2VxdWVu
Y2VBY3Rpb24sCisgICAgICAgICAgIEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbiwKKyAgICAgICAg
ICAgU2V0UGVybWlzc2lvbkFjdGlvbiwKKyAgICAgICAgICAgQWRkVmlydHVhbEF1dGhlbnRpY2F0
b3JBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAor
ICAgICAgICAgICBBZGRDcmVkZW50aWFsQWN0aW9uLAorICAgICAgICAgICBHZXRDcmVkZW50aWFs
c0FjdGlvbiwKKyAgICAgICAgICAgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbiwKKyAgICAgICAgICAg
UmVtb3ZlQWxsQ3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAgICAgIFNldFVzZXJWZXJpZmllZEFj
dGlvbl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQppbmRleCAzZDhhZjRkZTQ4NjhlOWRhODZiMzhkMWM5
ZDdiMzJlZDBiZmQyNjViLi5jNzVhOGVmMzIwZjJkMTQ5MjA2YzlhYjgyY2U1NWJiNzU0ZGRiYjY4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGJhc2U2NAog
aW1wb3J0IGhhc2hsaWIKLWZyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29u
bmVjdGlvbgogaW1wb3J0IGlvCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCkBAIC04LDEwICs3LDEz
IEBAIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCBzeXMKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwgdXJs
c3BsaXQsIHVybHVuc3BsaXQKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhv
ZAorZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQorZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQg
aW1wb3J0IEhUVFBDb25uZWN0aW9uCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiAKIGZyb20gLi50ZXN0cnVubmVyIGltcG9y
dCBTdG9wCitmcm9tIC5hY3Rpb25zIGltcG9ydCBhY3Rpb25zCiBmcm9tIC5wcm90b2NvbCBpbXBv
cnQgUHJvdG9jb2wsIEJhc2VQcm90b2NvbFBhcnQKIAogaGVyZSA9IG9zLnBhdGguc3BsaXQoX19m
aWxlX18pWzBdCkBAIC0xNjIsMTQgKzE2NCwxOCBAQCBjbGFzcyBUaW1lZFJ1bm5lcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1Ii
LCAiJXMucnVuX2Z1bmMgZGlkbid0IHNldCBhIHJlc3VsdCIgJQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJFeGVjdXRvciBoaXQgZXh0ZXJuYWwg
dGltZW91dCAodGhpcyBtYXkgaW5kaWNhdGUgYSBoYW5nKVxuIgotICAgICAgICAgICAgICAgICMg
Z2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBvZiB0aGUgZXhlY3V0b3IgdGhy
ZWFkCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIi5qb2luKHRyYWNlYmFjay5mb3JtYXRf
c3RhY2soc3lzLl9jdXJyZW50X2ZyYW1lcygpW2V4ZWN1dG9yLmlkZW50XSkpCi0gICAgICAgICAg
ICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJFWFRFUk5BTC1USU1FT1VUIiwgbWVzc2FnZSkK
KyAgICAgICAgICAgICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CisgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMg
bWF5IGluZGljYXRlIGEgaGFuZylcbiIKKyAgICAgICAgICAgICAgICAgICAgIyBnZXQgYSB0cmFj
ZWJhY2sgZm9yIHRoZSBjdXJyZW50IHN0YWNrIG9mIHRoZSBleGVjdXRvciB0aHJlYWQKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIi5qb2luKHRyYWNlYmFjay5mb3JtYXRfc3RhY2so
c3lzLl9jdXJyZW50X2ZyYW1lcygpW2V4ZWN1dG9yLmlkZW50XSkpCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiRVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5m
bygiQnJvd3NlciBub3QgcmVzcG9uZGluZywgc2V0dGluZyBzdGF0dXMgdG8gQ1JBU0giKQorICAg
ICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkNSQVNIIiwgTm9uZSkKICAg
ICAgICAgZWxpZiBzZWxmLnJlc3VsdFsxXSBpcyBOb25lOgogICAgICAgICAgICAgIyBXZSBkaWRu
J3QgZ2V0IGFueSBkYXRhIGJhY2sgZnJvbSB0aGUgdGVzdCwgc28gY2hlY2sgaWYgdGhlCiAgICAg
ICAgICAgICAjIGJyb3dzZXIgaXMgc3RpbGwgcmVzcG9uc2l2ZQotICAgICAgICAgICAgaWYgc2Vs
Zi5wcm90b2NvbC5pc19hbGl2ZToKKyAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmUoKToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVS
Uk9SIiwgTm9uZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygiQnJvd3NlciBub3QgcmVzcG9uZGluZywgc2V0dGluZyBzdGF0dXMgdG8gQ1JBU0gi
KQpAQCAtMjEwLDggKzIxNiw5IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgIGV4
dHJhX3RpbWVvdXQgPSA1ICAjIHNlY29uZHMKIAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLAogICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsICoqa3dhcmdzKToKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKICAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCiAg
ICAgICAgIHNlbGYuYnJvd3NlciA9IGJyb3dzZXIKICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmln
ID0gc2VydmVyX2NvbmZpZwpAQCAtMjIxLDEyICsyMjgsNiBAQCBjbGFzcyBUZXN0RXhlY3V0b3Io
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVmcyI6IHt9fQog
ICAgICAgICBzZWxmLnByb3RvY29sID0gTm9uZSAgIyBUaGlzIG11c3QgYmUgc2V0IGluIHN1YmNs
YXNzZXMKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBsb2dnZXIoc2VsZik6Ci0gICAgICAgICIi
IlN0cnVjdHVyZWRMb2dnZXIgZm9yIHRoaXMgZXhlY3V0b3IiIiIKLSAgICAgICAgaWYgc2VsZi5y
dW5uZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIubG9nZ2Vy
Ci0KICAgICBkZWYgc2V0dXAoc2VsZiwgcnVubmVyKToKICAgICAgICAgIiIiUnVuIHN0ZXBzIG5l
ZWRlZCBiZWZvcmUgdGVzdHMgY2FuIGJlIHN0YXJ0ZWQgZS5nLiBjb25uZWN0aW5nIHRvCiAgICAg
ICAgIGJyb3dzZXIgaW5zdGFuY2UKQEAgLTI1NSw4ICsyNTYsOSBAQCBjbGFzcyBUZXN0RXhlY3V0
b3Iob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5kb190
ZXN0KHRlc3QpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNl
bGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9tX2V4Y2VwdGlvbih0ZXN0LCBlKQorICAgICAgICAgICAg
ZXhjZXB0aW9uX3N0cmluZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKKyAgICAgICAgICAgIHNl
bGYubG9nZ2VyLndhcm5pbmcoZXhjZXB0aW9uX3N0cmluZykKKyAgICAgICAgICAgIHJlc3VsdCA9
IHNlbGYucmVzdWx0X2Zyb21fZXhjZXB0aW9uKHRlc3QsIGUsIGV4Y2VwdGlvbl9zdHJpbmcpCiAK
ICAgICAgICAgaWYgcmVzdWx0IGlzIFN0b3A6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CkBA
IC0yNzAsNyArMjcyLDggQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgIHNl
bGYucnVubmVyLnNlbmRfbWVzc2FnZSgidGVzdF9lbmRlZCIsIHRlc3QsIHJlc3VsdCkKIAogICAg
IGRlZiBzZXJ2ZXJfdXJsKHNlbGYsIHByb3RvY29sKToKLSAgICAgICAgcmV0dXJuICIlczovLyVz
OiVzIiAlIChwcm90b2NvbCwKKyAgICAgICAgc2NoZW1lID0gImh0dHBzIiBpZiBwcm90b2NvbCA9
PSAiaDIiIGVsc2UgcHJvdG9jb2wKKyAgICAgICAgcmV0dXJuICIlczovLyVzOiVzIiAlIChzY2hl
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJi
cm93c2VyX2hvc3QiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl
cl9jb25maWdbInBvcnRzIl1bcHJvdG9jb2xdWzBdKQogCkBAIC0yODgsMTUgKzI5MSwxNSBAQCBj
bGFzcyBUZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdl
KHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiByZXN1bHRf
ZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwgZSk6CisgICAgZGVmIHJlc3VsdF9mcm9tX2V4Y2Vw
dGlvbihzZWxmLCB0ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKToKICAgICAgICAgaWYgaGFzYXR0
cihlLCAic3RhdHVzIikgYW5kIGUuc3RhdHVzIGluIHRlc3QucmVzdWx0X2Nscy5zdGF0dXNlczoK
ICAgICAgICAgICAgIHN0YXR1cyA9IGUuc3RhdHVzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBzdGF0dXMgPSAiSU5URVJOQUwtRVJST1IiCi0gICAgICAgIG1lc3NhZ2UgPSB1bmljb2RlKGdl
dGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCisgICAgICAgIG1lc3NhZ2UgPSB0ZXh0X3R5cGUoZ2V0
YXR0cihlLCAibWVzc2FnZSIsICIiKSkKICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAg
IG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KGUpCisgICAgICAgIG1lc3NhZ2UgKz0gZXhjZXB0aW9uX3N0cmluZwogICAgICAgICByZXR1cm4g
dGVzdC5yZXN1bHRfY2xzKHN0YXR1cywgbWVzc2FnZSksIFtdCiAKICAgICBkZWYgd2FpdChzZWxm
KToKQEAgLTMxMCw5ICszMTMsOSBAQCBjbGFzcyBUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RFeGVj
dXRvcik6CiBjbGFzcyBSZWZUZXN0RXhlY3V0b3IoVGVzdEV4ZWN1dG9yKToKICAgICBjb252ZXJ0
X3Jlc3VsdCA9IHJlZnRlc3RfcmVzdWx0X2NvbnZlcnRlcgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLCBzY3JlZW5z
aG90X2NhY2hlPU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwg
c2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIHNjcmVlbnNob3RfY2FjaGU9Tm9u
ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAg
IFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAg
ICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVy
PXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
X2luZm89ZGVidWdfaW5mbykKIApAQCAtNDk2LDExICs0OTksMTEgQEAgY2xhc3MgV2RzcGVjRXhl
Y3V0b3IoVGVzdEV4ZWN1dG9yKToKICAgICBjb252ZXJ0X3Jlc3VsdCA9IHB5dGVzdF9yZXN1bHRf
Y29udmVydGVyCiAgICAgcHJvdG9jb2xfY2xzID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgd2ViZHJpdmVyX2Jp
bmFyeSwKICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2FyZ3MsIHRpbWVvdXRfbXVsdGlwbGll
cj0xLCBjYXBhYmlsaXRpZXM9Tm9uZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25l
LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuZG9fZGVsYXllZF9pbXBvcnRzKCkKLSAgICAgICAg
VGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAg
ICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9j
b25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9
dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdf
aW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLndlYmRyaXZlcl9iaW5hcnkgPSB3ZWJkcml2
ZXJfYmluYXJ5CkBAIC01MTAsNyArNTEzLDcgQEAgY2xhc3MgV2RzcGVjRXhlY3V0b3IoVGVzdEV4
ZWN1dG9yKToKICAgICAgICAgc2VsZi5wcm90b2NvbCA9IHNlbGYucHJvdG9jb2xfY2xzKHNlbGYs
IGJyb3dzZXIpCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZl
KCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmlyb25tZW50
KToKICAgICAgICAgcGFzcwpAQCAtNTczLDcgKzU3Niw3IEBAIGNsYXNzIFdkc3BlY1J1bihvYmpl
Y3QpOgogICAgICAgICAgICAgbWVzc2FnZSA9IGdldGF0dHIoZSwgIm1lc3NhZ2UiKQogICAgICAg
ICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAg
ICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1l
c3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAgIGZpbmFsbHk6CiAg
ICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBAIC02MzYsMTAgKzYzOSw5IEBAIGNs
YXNzIFdlYkRyaXZlclByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgcGFzcwogCiAgICAgZGVm
IHRlYXJkb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQg
c2VsZi5zZXJ2ZXIuaXNfYWxpdmU6CisgICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25l
IGFuZCBzZWxmLnNlcnZlci5pc19hbGl2ZSgpOgogICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3Rv
cCgpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgICIi
IlRlc3QgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbCBhbGl2ZS4KIApAQCAtNjc1LDIwICs2
NzcsNyBAQCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKICAgICAgICAgICAgICJjb21w
bGV0ZSI6IHNlbGYucHJvY2Vzc19jb21wbGV0ZQogICAgICAgICB9CiAKLSAgICAgICAgc2VsZi5h
Y3Rpb25zID0gewotICAgICAgICAgICAgImNsaWNrIjogQ2xpY2tBY3Rpb24oc2VsZi5sb2dnZXIs
IHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInNlbmRfa2V5cyI6IFNlbmRLZXlzQWN0aW9u
KHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJhY3Rpb25fc2VxdWVu
Y2UiOiBBY3Rpb25TZXF1ZW5jZUFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCi0g
ICAgICAgICAgICAiZ2VuZXJhdGVfdGVzdF9yZXBvcnQiOiBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rp
b24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInNldF9wZXJtaXNz
aW9uIjogU2V0UGVybWlzc2lvbkFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCi0g
ICAgICAgICAgICAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6IEFkZFZpcnR1YWxBdXRoZW50
aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJy
ZW1vdmVfdmlydHVhbF9hdXRoZW50aWNhdG9yIjogUmVtb3ZlVmlydHVhbEF1dGhlbnRpY2F0b3JB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF9jcmVk
ZW50aWFsIjogQWRkQ3JlZGVudGlhbEFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAiZ2V0X2NyZWRlbnRpYWxzIjogR2V0Q3JlZGVudGlhbHNBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV9jcmVkZW50aWFs
IjogUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCi0g
ICAgICAgICAgICAicmVtb3ZlX2FsbF9jcmVkZW50aWFscyI6IFJlbW92ZUFsbENyZWRlbnRpYWxz
QWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJzZXRfdXNl
cl92ZXJpZmllZCI6IFNldFVzZXJWZXJpZmllZEFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgIH0KKyAgICAgICAgc2VsZi5hY3Rpb25zID0ge2Nscy5uYW1lOiBjbHMo
c2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpIGZvciBjbHMgaW4gYWN0aW9uc30KIAogICAgIGRl
ZiBfX2NhbGxfXyhzZWxmLCByZXN1bHQpOgogICAgICAgICB1cmwsIGNvbW1hbmQsIHBheWxvYWQg
PSByZXN1bHQKQEAgLTcyOSwxNTAgKzcxOCwzIEBAIGNsYXNzIENhbGxiYWNrSGFuZGxlcihvYmpl
Y3QpOgogCiAgICAgZGVmIF9zZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZV90eXBlLCBzdGF0dXMs
IG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgIHNlbGYucHJvdG9jb2wudGVzdGRyaXZlci5zZW5kX21l
c3NhZ2UobWVzc2FnZV90eXBlLCBzdGF0dXMsIG1lc3NhZ2U9bWVzc2FnZSkKLQotCi1jbGFzcyBD
bGlja0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3Rv
Y29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2Nv
bCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAg
IHNlbGVjdG9yID0gcGF5bG9hZFsic2VsZWN0b3IiXQotICAgICAgICBlbGVtZW50ID0gc2VsZi5w
cm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIkNsaWNraW5nIGVsZW1lbnQ6ICVzIiAlIHNlbGVjdG9yKQotICAgICAg
ICBzZWxmLnByb3RvY29sLmNsaWNrLmVsZW1lbnQoZWxlbWVudCkKLQotCi1jbGFzcyBTZW5kS2V5
c0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29s
KToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9
IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIHNl
bGVjdG9yID0gcGF5bG9hZFsic2VsZWN0b3IiXQotICAgICAgICBrZXlzID0gcGF5bG9hZFsia2V5
cyJdCi0gICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3Nl
bGVjdG9yKHNlbGVjdG9yKQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VuZGluZyBrZXlz
IHRvIGVsZW1lbnQ6ICVzIiAlIHNlbGVjdG9yKQotICAgICAgICBzZWxmLnByb3RvY29sLnNlbmRf
a2V5cy5zZW5kX2tleXMoZWxlbWVudCwga2V5cykKLQotCi1jbGFzcyBBY3Rpb25TZXF1ZW5jZUFj
dGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToK
LSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgICMgVE9E
Tzogc29tZSBzb3J0IG9mIHNoYWxsb3cgZXJyb3IgY2hlY2tpbmcKLSAgICAgICAgYWN0aW9ucyA9
IHBheWxvYWRbImFjdGlvbnMiXQotICAgICAgICBmb3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9u
czoKLSAgICAgICAgICAgIGlmIGFjdGlvblNlcXVlbmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgot
ICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gYWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvblsidHlwZSJdID09ICJwb2ludGVyTW92ZSIg
YW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0s
IGRpY3QpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxm
LmdldF9lbGVtZW50KGFjdGlvblsib3JpZ2luIl1bInNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUi
XVsiZnJhbWUiXSkKLSAgICAgICAgc2VsZi5wcm90b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9h
Y3Rpb25zKHsiYWN0aW9ucyI6IGFjdGlvbnN9KQotCi0gICAgZGVmIGdldF9lbGVtZW50KHNlbGYs
IGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9j
b2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3IoZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCi0g
ICAgICAgIHJldHVybiBlbGVtZW50Ci0KLWNsYXNzIEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAg
ICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29s
Ci0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIG1lc3NhZ2UgPSBw
YXlsb2FkWyJtZXNzYWdlIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkdlbmVyYXRpbmcg
dGVzdCByZXBvcnQ6ICVzIiAlIG1lc3NhZ2UpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuZ2VuZXJh
dGVfdGVzdF9yZXBvcnQuZ2VuZXJhdGVfdGVzdF9yZXBvcnQobWVzc2FnZSkKLQotY2xhc3MgU2V0
UGVybWlzc2lvbkFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5w
cm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0g
ICAgICAgIHBlcm1pc3Npb25fcGFyYW1zID0gcGF5bG9hZFsicGVybWlzc2lvbl9wYXJhbXMiXQot
ICAgICAgICBkZXNjcmlwdG9yID0gcGVybWlzc2lvbl9wYXJhbXNbImRlc2NyaXB0b3IiXQotICAg
ICAgICBuYW1lID0gZGVzY3JpcHRvclsibmFtZSJdCi0gICAgICAgIHN0YXRlID0gcGVybWlzc2lv
bl9wYXJhbXNbInN0YXRlIl0KLSAgICAgICAgb25lX3JlYWxtID0gcGVybWlzc2lvbl9wYXJhbXMu
Z2V0KCJvbmVSZWFsbSIsIEZhbHNlKQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2V0dGlu
ZyBwZXJtaXNzaW9uICVzIHRvICVzLCBvbmVSZWFsbT0lcyIgJSAobmFtZSwgc3RhdGUsIG9uZV9y
ZWFsbSkpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuc2V0X3Blcm1pc3Npb24uc2V0X3Blcm1pc3Np
b24oZGVzY3JpcHRvciwgc3RhdGUsIG9uZV9yZWFsbSkKLQotY2xhc3MgQWRkVmlydHVhbEF1dGhl
bnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5nIHZpcnR1YWwgYXV0aGVudGljYXRvciIpCi0g
ICAgICAgIGNvbmZpZyA9IHBheWxvYWRbImNvbmZpZyJdCi0gICAgICAgIGF1dGhlbnRpY2F0b3Jf
aWQgPSBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5hZGRfdmlydHVhbF9hdXRo
ZW50aWNhdG9yKGNvbmZpZykKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkF1dGhlbnRpY2F0
b3IgY3JlYXRlZCB3aXRoIElEICVzIiAlIGF1dGhlbnRpY2F0b3JfaWQpCi0gICAgICAgIHJldHVy
biBhdXRoZW50aWNhdG9yX2lkCi0KLWNsYXNzIFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0
aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgot
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJv
dG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVu
dGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiUmVtb3ZpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9yICVzIiAlIGF1dGhlbnRp
Y2F0b3JfaWQpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGlj
YXRvci5yZW1vdmVfdmlydHVhbF9hdXRoZW50aWNhdG9yKGF1dGhlbnRpY2F0b3JfaWQpCi0KLQot
Y2xhc3MgQWRkQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAg
ICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5
bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9y
X2lkIl0KLSAgICAgICAgY3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQotICAgICAg
ICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50
aWNhdG9yICVzICIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2VsZi5wcm90
b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9p
ZCwgY3JlZGVudGlhbCkKLQotY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5
bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZXR0
aW5nIGNyZWRlbnRpYWxzIGZyb20gdmlydHVhbCBhdXRoZW50aWNhdG9yICVzICIgJSBhdXRoZW50
aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRp
Y2F0b3IuZ2V0X2NyZWRlbnRpYWxzKGF1dGhlbnRpY2F0b3JfaWQpCi0KLWNsYXNzIFJlbW92ZUNy
ZWRlbnRpYWxBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAg
ICAgIGNyZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50aWNhdG9y
ICVzIiAlIChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKLSAgICAgICAgcmV0dXJu
IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50aWFsKGF1
dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCi0KLWNsYXNzIFJlbW92ZUFsbENyZWRlbnRp
YWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAg
YXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGlj
YXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2Nv
bC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNh
dG9yX2lkKQotCi1jbGFzcyBTZXRVc2VyVmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsi
YXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIHV2ID0gcGF5bG9hZFsidXYiXQotICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICJTZXR0aW5nIHVzZXIgdmVyaWZpZWQgZmxh
ZyBvbiBhdXRoZW50aWNhdG9yICVzIHRvICVzIiAlIChhdXRoZW50aWNhdG9yX2lkLCB1dlsiaXNV
c2VyVmVyaWZpZWQiXSkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0
aGVudGljYXRvci5zZXRfdXNlcl92ZXJpZmllZChhdXRoZW50aWNhdG9yX2lkLCB1dikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcm1hcmlvbmV0dGUucHkKaW5kZXggNTlmN2U4NjVh
NWI4NzExZmE3MWM5Yzg5NTVlY2E3MzFlMDA0OGMzZi4uMmVhZjI1ODAxZGY1MDI3NmYyYjAyNDQ3
ZDY4YTNmYzk4YzVjMzc3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVj
dXRvcm1hcmlvbmV0dGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcm1h
cmlvbmV0dGUucHkKQEAgLTMsOSArMywxMSBAQCBpbXBvcnQgb3MKIGltcG9ydCB0aHJlYWRpbmcK
IGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJscGFyc2UKIGltcG9ydCB1
dWlkCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIGl0ZXJrZXlzCitmcm9tIHNpeC5tb3Zl
cy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KKwogZXJyb3JzID0gTm9uZQogbWFyaW9uZXR0
ZSA9IE5vbmUKIHB5dGVzdHJ1bm5lciA9IE5vbmUKQEAgLTExMyw4ICsxMTUsOCBAQCBjbGFzcyBN
YXJpb25ldHRlQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgICAg
IGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTb2Nr
ZXQgY2xvc2VkIikKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2Vi
YWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAg
ICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTEzMiwxNyArMTM0LDE2IEBAIGNsYXNzIE1hcmlv
bmV0dGVUZXN0aGFybmVzc1Byb3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAg
ICAgICAgICMgQ2hlY2sgaWYgd2UgcHJldmlvdXNseSBoYWQgYSB0ZXN0IHdpbmRvdyBvcGVuLCBh
bmQgaWYgd2UgZGlkIG1ha2Ugc3VyZSBpdCdzIGNsb3NlZAogICAgICAgICBpZiBzZWxmLnJ1bm5l
cl9oYW5kbGU6CiAgICAgICAgICAgICBzZWxmLl9jbG9zZV93aW5kb3dzKCkKLSAgICAgICAgdXJs
ID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9w
cm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFybmVzc19y
dW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2VsZi5wYXJlbnQuZXhlY3V0b3Iu
c2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLCAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKICAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxvYWRpbmcgJXMiICUgdXJsKQogICAgICAgICB0cnk6
CiAgICAgICAgICAgICBzZWxmLmRpc21pc3NfYWxlcnQobGFtYmRhOiBzZWxmLm1hcmlvbmV0dGUu
bmF2aWdhdGUodXJsKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuY3JpdGljYWwoCiAgICAg
ICAgICAgICAgICAgIkxvYWRpbmcgaW5pdGlhbCBwYWdlICVzIGZhaWxlZC4gRW5zdXJlIHRoYXQg
dGhlICIKICAgICAgICAgICAgICAgICAidGhlcmUgYXJlIG5vIG90aGVyIHByb2dyYW1zIGJvdW5k
IHRvIHRoaXMgcG9ydCBhbmQgIgogICAgICAgICAgICAgICAgICJ0aGF0IHlvdXIgZmlyZXdhbGwg
cnVsZXMgb3IgbmV0d29yayBzZXR1cCBkb2VzIG5vdCAiCi0gICAgICAgICAgICAgICAgciJwcmV2
ZW50IGFjY2Vzcy5cZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKSkKKyAgICAg
ICAgICAgICAgICByInByZXZlbnQgYWNjZXNzLlxlJXMiICUgKHVybCwgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkpCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBzZWxmLnJ1bm5lcl9oYW5kbGUg
PSBzZWxmLm1hcmlvbmV0dGUuY3VycmVudF93aW5kb3dfaGFuZGxlCiAgICAgICAgIGZvcm1hdF9t
YXAgPSB7InRpdGxlIjogdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZS5yZXBsYWNlKCIn
IiwgJyInKX0KQEAgLTU5Miw3ICs1OTMsNiBAQCBjbGFzcyBNYXJpb25ldHRlUHJvdG9jb2woUHJv
dG9jb2wpOgogICAgICAgICAgICAgZGVsIHNlbGYubWFyaW9uZXR0ZQogICAgICAgICBzdXBlcihN
YXJpb25ldHRlUHJvdG9jb2wsIHNlbGYpLnRlYXJkb3duKCkKIAotICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5tYXJp
b25ldHRlLmN1cnJlbnRfd2luZG93X2hhbmRsZQpAQCAtNjAyLDE0ICs2MDIsMTQgQEAgY2xhc3Mg
TWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9j
aGFuZ2Uoc2VsZiwgb2xkX2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpOgogICAgICAgICAj
VW5zZXQgYWxsIHRoZSBvbGQgcHJlZnMKLSAgICAgICAgZm9yIG5hbWUgaW4gb2xkX2Vudmlyb25t
ZW50LmdldCgicHJlZnMiLCB7fSkuaXRlcmtleXMoKToKKyAgICAgICAgZm9yIG5hbWUgaW4gaXRl
cmtleXMob2xkX2Vudmlyb25tZW50LmdldCgicHJlZnMiLCB7fSkpOgogICAgICAgICAgICAgdmFs
dWUgPSBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZfdmFsdWVzW25hbWVdCiAgICAgICAgICAg
ICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYucHJlZnMuY2xlYXIobmFt
ZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wcmVmcy5zZXQobmFt
ZSwgdmFsdWUpCiAKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIG5ld19lbnZpcm9ubWVudC5n
ZXQoInByZWZzIiwge30pLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4g
aXRlcml0ZW1zKG5ld19lbnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pKToKICAgICAgICAgICAg
IHNlbGYuZXhlY3V0b3Iub3JpZ2luYWxfcHJlZl92YWx1ZXNbbmFtZV0gPSBzZWxmLnByZWZzLmdl
dChuYW1lKQogICAgICAgICAgICAgc2VsZi5wcmVmcy5zZXQobmFtZSwgdmFsdWUpCiAKQEAgLTY1
OSw3ICs2NTksNyBAQCBjbGFzcyBFeGVjdXRlQXN5bmNTY3JpcHRSdW4oVGltZWRSdW5uZXIpOgog
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAg
ICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAi
XG4iCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQor
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAg
ICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBtZXNzYWdl
KQogICAgICAgICBmaW5hbGx5OgpAQCAtNjY5LDExICs2NjksMTEgQEAgY2xhc3MgRXhlY3V0ZUFz
eW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKIGNsYXNzIE1hcmlvbmV0dGVUZXN0aGFybmVzc0V4
ZWN1dG9yKFRlc3RoYXJuZXNzRXhlY3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBU
cnVlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nl
ciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAg
IGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9u
ZSwKICAgICAgICAgICAgICAgICAgZGVidWc9RmFsc2UsIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToK
ICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMg
dGVzdHMiIiIKLSAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBicm93
c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdf
aW5mbykKICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE1hcmlvbmV0dGVQcm90b2NvbChzZWxmLApA
QCAtNjk4LDcgKzY5OCw3IEBAIGNsYXNzIE1hcmlvbmV0dGVUZXN0aGFybmVzc0V4ZWN1dG9yKFRl
c3RoYXJuZXNzRXhlY3V0b3IpOgogICAgICAgICBzZWxmLnByb3RvY29sLnRlc3RoYXJuZXNzLmxv
YWRfcnVubmVyKHNlbGYubGFzdF9lbnZpcm9ubWVudFsicHJvdG9jb2wiXSkKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAg
ICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmly
b25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3Rv
Y29sLm9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZp
cm9ubWVudCkKQEAgLTc2NSwxMyArNzY1LDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVUZXN0aGFybmVz
c0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhlY3V0b3IpOgogCiAKIGNsYXNzIE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBs
aWVyPTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2xvc2VfYWZ0
ZXJfZG9uZT1UcnVlLAogICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIHJlZnRlc3Rf
aW50ZXJuYWw9RmFsc2UsCiAgICAgICAgICAgICAgICAgIHJlZnRlc3Rfc2NyZWVuc2hvdD0idW5l
eHBlY3RlZCIsIGNjb3Y9RmFsc2UsCiAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhPU5v
bmUsIGNhcGFiaWxpdGllcz1Ob25lLCBkZWJ1Zz1GYWxzZSwgKiprd2FyZ3MpOgogICAgICAgICAi
IiJNYXJpb25ldHRlLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAgICBSZWZU
ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90X2NhY2hl
LApAQCAtNzk4LDcgKzc5OSw3IEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IoUmVm
VGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgIHNlbGYud2FpdF9zY3JpcHQgPSBmLnJlYWQoKSAl
IHsiY2xhc3NuYW1lIjogInJlZnRlc3Qtd2FpdCJ9CiAKICAgICBkZWYgc2V0dXAoc2VsZiwgcnVu
bmVyKToKLSAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNzX18sIHNlbGYpLnNldHVwKHJ1bm5lcikK
KyAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2VsZikuc2V0dXAocnVu
bmVyKQogICAgICAgICBzZWxmLmltcGxlbWVudGF0aW9uLnNldHVwKCoqc2VsZi5pbXBsZW1lbnRh
dGlvbl9rd2FyZ3MpCiAKICAgICBkZWYgdGVhcmRvd24oc2VsZik6CkBAIC04MDgsMTcgKzgwOSwx
NyBAQCBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAg
ICAgICAgICAgICAgICAgaGFuZGxlcyA9IHNlbGYucHJvdG9jb2wubWFyaW9uZXR0ZS53aW5kb3df
aGFuZGxlcwogICAgICAgICAgICAgICAgIGlmIGhhbmRsZXM6CiAgICAgICAgICAgICAgICAgICAg
IHNlbGYucHJvdG9jb2wubWFyaW9uZXR0ZS5zd2l0Y2hfdG9fd2luZG93KGhhbmRsZXNbMF0pCi0g
ICAgICAgICAgICBzdXBlcihzZWxmLl9fY2xhc3NfXywgc2VsZikudGVhcmRvd24oKQotICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzdXBlcihNYXJpb25ldHRlUmVm
VGVzdEV4ZWN1dG9yLCBzZWxmKS50ZWFyZG93bigpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVyaW5nIHRlYXJkb3duCiAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci53YXJuaW5nKCJFeGNlcHRpb24gZHVyaW5nIHJlZnRlc3QgdGVhcmRvd246
XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0
X2V4YyhlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKIAogICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRh
dGlvbi5yZXNldCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAgICAgZGVmIGlzX2Fs
aXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAg
ICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1l
bnRfY2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHNlbGYucHJvdG9jb2wu
b25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYubGFzdF9lbnZpcm9ubWVudCwgbmV3X2Vudmlyb25t
ZW50KQpAQCAtODkzLDggKzg5NCw5IEBAIGNsYXNzIEludGVybmFsUmVmVGVzdEltcGxlbWVudGF0
aW9uKFJlZlRlc3RJbXBsZW1lbnRhdGlvbik6CiAgICAgZGVmIHNldHVwKHNlbGYsIHNjcmVlbnNo
b3Q9InVuZXhwZWN0ZWQiKToKICAgICAgICAgZGF0YSA9IHsic2NyZWVuc2hvdCI6IHNjcmVlbnNo
b3R9CiAgICAgICAgIGlmIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkYXRhWyJ1cmxDb3VudCJdID0ge3VybHBhcnNlLnVybGpvaW4oc2VsZi5l
eGVjdXRvci5zZXJ2ZXJfdXJsKGtleVswXSksIGtleVsxXSk6dmFsdWUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5leGVjdXRvci5ncm91cF9t
ZXRhZGF0YS5nZXQoInVybF9jb3VudCIsIHt9KS5pdGVyaXRlbXMoKQorICAgICAgICAgICAgZGF0
YVsidXJsQ291bnQiXSA9IHt1cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3VybChrZXlbMF0p
LCBrZXlbMV0pOnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXks
IHZhbHVlIGluIGl0ZXJpdGVtcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxfY291bnQiLCB7fSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlID4gMX0KICAgICAgICAgc2VsZi5l
eGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRlLnNldF9jb250ZXh0KHNlbGYuZXhlY3V0b3IucHJv
dG9jb2wubWFyaW9uZXR0ZS5DT05URVhUX0NIUk9NRSkKICAgICAgICAgc2VsZi5leGVjdXRvci5w
cm90b2NvbC5tYXJpb25ldHRlLl9zZW5kX21lc3NhZ2UoInJlZnRlc3Q6c2V0dXAiLCBkYXRhKQpA
QCAtOTM0LDkgKzkzNiw5IEBAIGNsYXNzIEludGVybmFsUmVmVGVzdEltcGxlbWVudGF0aW9uKFJl
ZlRlc3RJbXBsZW1lbnRhdGlvbik6CiAgICAgICAgICAgICAgICAgaGFuZGxlcyA9IHNlbGYuZXhl
Y3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS53aW5kb3dfaGFuZGxlcwogICAgICAgICAgICAgICAg
IGlmIGhhbmRsZXM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wu
bWFyaW9uZXR0ZS5zd2l0Y2hfdG9fd2luZG93KGhhbmRsZXNbMF0pCi0gICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICMg
SWdub3JlIGVycm9ycyBkdXJpbmcgdGVhcmRvd24KLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLndh
cm5pbmcodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53
YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKIAogY2xhc3MgR2Vja29Ecml2ZXJQcm90
b2NvbChXZWJEcml2ZXJQcm90b2NvbCk6CkBAIC05NDgsMTEgKzk1MCwxMSBAQCBjbGFzcyBNYXJp
b25ldHRlV2RzcGVjRXhlY3V0b3IoV2RzcGVjRXhlY3V0b3IpOgogCiAKIGNsYXNzIE1hcmlvbmV0
dGVDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVv
dXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGNhcGFi
aWxpdGllcz1Ob25lLCBkZWJ1Zz1GYWxzZSwKICAgICAgICAgICAgICAgICAgY2Nvdj1GYWxzZSwg
Kiprd2FyZ3MpOgogICAgICAgICAiIiJNYXJpb25ldHRlLWJhc2VkIGV4ZWN1dG9yIGZvciB0ZXN0
aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRfXyhz
ZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5f
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRp
cGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVi
dWdfaW5mbykKICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE1hcmlvbmV0dGVQcm90b2NvbChzZWxm
LApAQCAtOTcyLDcgKzk3NCw3IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihD
cmFzaHRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBkb19kZWxheWVkX2ltcG9ydHMoKQogCiAg
ICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19h
bGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYg
b25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHNl
bGYucHJvdG9jb2wub25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYubGFzdF9lbnZpcm9ubWVudCwg
bmV3X2Vudmlyb25tZW50KQpAQCAtOTkxLDE1ICs5OTMsMTYgQEAgY2xhc3MgTWFyaW9uZXR0ZUNy
YXNodGVzdEV4ZWN1dG9yKENyYXNodGVzdEV4ZWN1dG9yKToKICAgICAgICAgaWYgbm90IHN1Y2Nl
c3M6CiAgICAgICAgICAgICBzdGF0dXMgPSBkYXRhWzBdCiAKKyAgICAgICAgZXh0cmEgPSBOb25l
CiAgICAgICAgIGlmIHNlbGYuZGVidWcgYW5kIChzdWNjZXNzIG9yIHN0YXR1cyBub3QgaW4gKCJD
UkFTSCIsICJJTlRFUk5BTC1FUlJPUiIpKToKICAgICAgICAgICAgIGFzc2VydGlvbl9jb3VudCA9
IHNlbGYucHJvdG9jb2wuYXNzZXJ0cy5nZXQoKQogICAgICAgICAgICAgaWYgYXNzZXJ0aW9uX2Nv
dW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGRhdGFbImV4dHJhIl0gPSB7ImFzc2Vy
dGlvbl9jb3VudCI6IGFzc2VydGlvbl9jb3VudH0KKyAgICAgICAgICAgICAgICBleHRyYSA9IHsi
YXNzZXJ0aW9uX2NvdW50IjogYXNzZXJ0aW9uX2NvdW50fQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQogCi0g
ICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKCoqZGF0YSksIFtdKQorICAgICAgICByZXR1
cm4gKHRlc3QucmVzdWx0X2NscyhleHRyYT1leHRyYSwgKmRhdGEpLCBbXSkKIAogICAgIGRlZiBk
b19jcmFzaHRlc3Qoc2VsZiwgcHJvdG9jb2wsIHVybCwgdGltZW91dCk6CiAgICAgICAgIGlmIHNl
bGYucHJvdG9jb2wuY292ZXJhZ2UuaXNfZW5hYmxlZDoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvZXhlY3V0b3JzZWxlbml1bS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JzZWxlbml1bS5weQppbmRleCBjZWNhODEyMTFlMTE0MDU3N2NjM2E1ZjE2M2ZmZTE3
YzczZGQ1NmEzLi45NjMxMmYzZjlmOTU0MmZlZGU2MDllNmY5OWVmOTMxMjdmMTIyZDFhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVuaXVtLnB5CkBAIC0xLDExICsxLDEy
IEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAogaW1wb3J0IGpzb24K
IGltcG9ydCBvcwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUK
IGltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHV1aWQKK2Zyb20gc2l4
Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgogCiBmcm9tIC5iYXNlIGltcG9ydCAo
Q2FsbGJhY2tIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgIFJlZlRlc3RFeGVjdXRvciwKQEAg
LTcyLDggKzczLDggQEAgY2xhc3MgU2VsZW5pdW1CYXNlUHJvdG9jb2xQYXJ0KEJhc2VQcm90b2Nv
bFBhcnQpOgogICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQudGltZW91dCwgZXhjZXB0aW9ucy5O
b1N1Y2hXaW5kb3dFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuRXJy
b3JJblJlc3BvbnNlRXhjZXB0aW9uLCBJT0Vycm9yKToKICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2su
Zm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKIApAQCAtODcsOCArODgsOCBA
QCBjbGFzcyBTZWxlbml1bVRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0KFRlc3RoYXJuZXNzUHJvdG9j
b2xQYXJ0KToKICAgICBkZWYgbG9hZF9ydW5uZXIoc2VsZiwgdXJsX3Byb3RvY29sKToKICAgICAg
ICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIuc3dp
dGNoX3RvX3dpbmRvdyhzZWxmLnJ1bm5lcl9oYW5kbGUpCi0gICAgICAgIHVybCA9IHVybHBhcnNl
LnVybGpvaW4oc2VsZi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwi
KQorICAgICAgICB1cmwgPSB1cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwo
dXJsX3Byb3RvY29sKSwKKyAgICAgICAgICAgICAgICAgICAgICAiL3Rlc3RoYXJuZXNzX3J1bm5l
ci5odG1sIikKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxvYWRpbmcgJXMiICUgdXJsKQog
ICAgICAgICBzZWxmLndlYmRyaXZlci5nZXQodXJsKQogICAgICAgICBzZWxmLnJ1bm5lcl9oYW5k
bGUgPSBzZWxmLndlYmRyaXZlci5jdXJyZW50X3dpbmRvd19oYW5kbGUKQEAgLTI2MSw3ICsyNjIs
NyBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNzYWdl
ID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAgICAgICBpZiBtZXNzYWdl
OgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgbWVzc2FnZSAr
PSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJh
Y2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVS
TkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYu
cmVzdWx0X2ZsYWcuc2V0KCkKQEAgLTI3MCwxMSArMjcxLDExIEBAIGNsYXNzIFNlbGVuaXVtUnVu
KFRpbWVkUnVubmVyKToKIGNsYXNzIFNlbGVuaXVtVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFy
bmVzc0V4ZWN1dG9yKToKICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGll
cj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9k
b25lPVRydWUsIGNhcGFiaWxpdGllcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCiAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzX2VhZ2VyX3BhZ2Vsb2FkPVRydWUsICoqa3dhcmdzKToKICAgICAgICAg
IiIiU2VsZW5pdW0tYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0g
ICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVy
X2NvbmZpZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBTZWxlbml1bVByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFi
aWxpdGllcykKQEAgLTM1NSwxMSArMzU2LDEyIEBAIGlmIChsb2NhdGlvbi5ocmVmID09PSAiYWJv
dXQ6YmxhbmsiKSB7CiAKIAogY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4
ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywg
dGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAg
ICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLAogICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGNhcGFiaWxpdGllcz1Ob25lLCAqKmt3YXJncyk6
CiAgICAgICAgICIiIlNlbGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVz
dHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVy
X2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2Fj
aGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTM3MSw4ICszNzMsOCBAQCBjbGFzcyBTZWxlbml1bVJl
ZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICBzZWxmLmNsb3NlX2FmdGVy
X2RvbmUgPSBjbG9zZV9hZnRlcl9kb25lCiAgICAgICAgIHNlbGYuaGFzX3dpbmRvdyA9IEZhbHNl
CiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIiAl
IHsiY2xhc3NuYW1lIjogInJlZnRlc3Qtd2FpdCJ9KSkgYXMgZjoKLSAgICAgICAgICAgIHNlbGYu
d2FpdF9zY3JpcHQgPSBmLnJlYWQoKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhl
cmUsICJ0ZXN0LXdhaXQuanMiKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zY3JpcHQg
PSBmLnJlYWQoKSAlIHsiY2xhc3NuYW1lIjogInJlZnRlc3Qtd2FpdCJ9CiAKICAgICBkZWYgcmVz
ZXQoc2VsZik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CmluZGV4IDljZWYxZmIyZDdmNzhlODcyOWU1MWZm
NDAwYjNkZjI0MDJhMmU5NGUuLmY4M2YwMTE1ZTAwNjgxMTRiYjYyYTgwNGIzMDU1Y2I1MTA4MTRi
MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKQEAgLTcsNiArNyw3
IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRyYWNlYmFjawog
aW1wb3J0IHV1aWQKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfc3RyLCBpdGVyaXRlbXMKIAogZnJv
bSBtb3pwcm9jZXNzIGltcG9ydCBQcm9jZXNzSGFuZGxlcgogCkBAIC0yMiw4ICsyMywxMCBAQCBm
cm9tIC5iYXNlIGltcG9ydCAoQ29ubmVjdGlvbmxlc3NQcm90b2NvbCwKICAgICAgICAgICAgICAg
ICAgICBXZWJEcml2ZXJQcm90b2NvbCkKIGZyb20gLnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NUZXN0
RXhlY3V0b3IKIGZyb20gLi5icm93c2Vycy5iYXNlIGltcG9ydCBicm93c2VyX2NvbW1hbmQKK2Zy
b20gLi5wcm9jZXNzIGltcG9ydCBjYXN0X2VudgogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1w
b3J0IFNlcnZvRHJpdmVyU2VydmVyCiAKKwogcHl0ZXN0cnVubmVyID0gTm9uZQogd2ViZHJpdmVy
ID0gTm9uZQogCkBAIC00NSw3ICs0OCw3IEBAIGRlZiBidWlsZF9zZXJ2b19jb21tYW5kKHRlc3Qs
IHRlc3RfdXJsX2Z1bmMsIGJyb3dzZXIsIGJpbmFyeSwgcGF1c2VfYWZ0ZXJfdGVzdCwKICAgICAg
ICAgYXJncyArPSBbIi1aIiwgZGVidWdfb3B0c10KICAgICBmb3Igc3R5bGVzaGVldCBpbiBicm93
c2VyLnVzZXJfc3R5bGVzaGVldHM6CiAgICAgICAgIGFyZ3MgKz0gWyItLXVzZXItc3R5bGVzaGVl
dCIsIHN0eWxlc2hlZXRdCi0gICAgZm9yIHByZWYsIHZhbHVlIGluIHRlc3QuZW52aXJvbm1lbnQu
Z2V0KCdwcmVmcycsIHt9KS5pdGVyaXRlbXMoKToKKyAgICBmb3IgcHJlZiwgdmFsdWUgaW4gaXRl
cml0ZW1zKHRlc3QuZW52aXJvbm1lbnQuZ2V0KCdwcmVmcycsIHt9KSk6CiAgICAgICAgIGFyZ3Mg
Kz0gWyItLXByZWYiLCAiJXM9JXMiICUgKHByZWYsIHZhbHVlKV0KICAgICBpZiBicm93c2VyLmNh
X2NlcnRpZmljYXRlX3BhdGg6CiAgICAgICAgIGFyZ3MgKz0gWyItLWNlcnRpZmljYXRlLXBhdGgi
LCBicm93c2VyLmNhX2NlcnRpZmljYXRlX3BhdGhdCkBAIC02Miw5ICs2NSw5IEBAIGRlZiBidWls
ZF9zZXJ2b19jb21tYW5kKHRlc3QsIHRlc3RfdXJsX2Z1bmMsIGJyb3dzZXIsIGJpbmFyeSwgcGF1
c2VfYWZ0ZXJfdGVzdCwKIGNsYXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVz
dEV4ZWN1dG9yKToKICAgICBjb252ZXJ0X3Jlc3VsdCA9IHRlc3RoYXJuZXNzX3Jlc3VsdF9jb252
ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25lLAorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0x
LCBkZWJ1Z19pbmZvPU5vbmUsCiAgICAgICAgICAgICAgICAgIHBhdXNlX2FmdGVyX3Rlc3Q9RmFs
c2UsICoqa3dhcmdzKToKLSAgICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxm
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0
aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89
ZGVidWdfaW5mbykKICAgICAgICAgc2VsZi5wYXVzZV9hZnRlcl90ZXN0ID0gcGF1c2VfYWZ0ZXJf
dGVzdApAQCAtMTAwLDExICsxMDMsMTEgQEAgY2xhc3MgU2Vydm9UZXN0aGFybmVzc0V4ZWN1dG9y
KFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hh
bmRsZXIoc2VsZi5jb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc091dHB1dExpbmU9W3NlbGYub25fb3V0cHV0XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9uRmluaXNoPXNlbGYub25fZmluaXNoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVPdXRwdXQ9RmFsc2UpCiAgICAgICAgICAgICBz
ZWxmLnByb2MucnVuKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oc2VsZi5jb21tYW5kLCBlbnY9ZW52KQorICAgICAgICAgICAgc2VsZi5w
cm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1jYXN0X2VudihlbnYpKQog
CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRpbWVvdXQgPSB0ZXN0LnRpbWVvdXQgKiBzZWxm
LnRpbWVvdXRfbXVsdGlwbGllcgpAQCAtMTc5LDEwICsxODIsMTEgQEAgY2xhc3MgVGVtcEZpbGVu
YW1lKG9iamVjdCk6CiBjbGFzcyBTZXJ2b1JlZlRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1
dG9yKToKICAgICBjb252ZXJ0X3Jlc3VsdCA9IHJlZnRlc3RfcmVzdWx0X2NvbnZlcnRlcgogCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJpbmFyeT1Ob25l
LCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEs
CiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgZGVidWdfaW5mbz1Ob25l
LCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAg
ICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0yMzEsNyArMjM1LDcgQEAg
Y2xhc3MgU2Vydm9SZWZUZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgICAgICBzZWxmLnByb2Mg
PSBQcm9jZXNzSGFuZGxlcihzZWxmLmNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc091dHB1dExpbmU9W3NlbGYub25fb3V0cHV0XSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpKQog
CiAKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yNDMsNyArMjQ3LDcgQEAgY2xhc3MgU2Vydm9S
ZWZUZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICAgICAgICAg
IHJhaXNlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oc2VsZi5jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpKQogICAgICAgICAgICAgICAgIHRyeToK
ICAgICAgICAgICAgICAgICAgICAgcnYgPSBzZWxmLnByb2Mud2FpdCgpCiAgICAgICAgICAgICAg
ICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgpAQCAtMjU3LDEwICsyNjEsMTAgQEAgY2xhc3Mg
U2Vydm9SZWZUZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBp
ZiBydiAhPSAwIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfcGF0aCk6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlLCAoIkNSQVNIIiwgTm9uZSkKIAotICAgICAgICAgICAgd2l0aCBv
cGVuKG91dHB1dF9wYXRoKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBvcGVuKG91dHB1dF9wYXRo
LCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgICMgTWlnaHQgbmVlZCB0byBzdHJpcCB2YXJp
YWJsZSBoZWFkZXJzIG9yIHNvbWV0aGluZyBoZXJlCiAgICAgICAgICAgICAgICAgZGF0YSA9IGYu
cmVhZCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIGJhc2U2NC5iNjRlbmNvZGUoZGF0
YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgZW5zdXJlX3N0cihiYXNlNjQuYjY0ZW5j
b2RlKGRhdGEpKQogCiAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJlc3Vs
dCA9IHNlbGYuaW1wbGVtZW50YXRpb24ucnVuX3Rlc3QodGVzdCkKQEAgLTMwNSwxMCArMzA5LDEx
IEBAIGNsYXNzIFNlcnZvVGltZWRSdW5uZXIoVGltZWRSdW5uZXIpOgogY2xhc3MgU2Vydm9DcmFz
aHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICBjb252ZXJ0X3Jlc3VsdCA9
IGNyYXNodGVzdF9yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJp
bmFyeT1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgc2NyZWVu
c2hvdF9jYWNoZT1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsIHBhdXNlX2FmdGVyX3Rlc3Q9RmFsc2Us
CiAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRf
bXVsdGlwbGllciwKQEAgLTMyOSw2ICszMzQsOCBAQCBjbGFzcyBTZXJ2b0NyYXNodGVzdEV4ZWN1
dG9yKFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAg
ICAgIHN1Y2Nlc3MsIGRhdGEgPSBTZXJ2b1RpbWVkUnVubmVyKHNlbGYubG9nZ2VyLCBzZWxmLmRv
X2NyYXNodGVzdCwgc2VsZi5wcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF91cmwsIHRpbWVvdXQsIHNlbGYuZXh0cmFfdGltZW91dCkucnVuKCkK
KyAgICAgICAgIyBFbnN1cmUgdGhhdCBubyBwcm9jZXNzZXMgaGFuZyBhcm91bmQgaWYgdGhleSB0
aW1lb3V0LgorICAgICAgICBzZWxmLnByb2Mua2lsbCgpCiAKICAgICAgICAgaWYgc3VjY2VzczoK
ICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfcmVzdWx0KHRlc3QsIGRhdGEpCkBAIC0z
NTAsMTEgKzM1NywxMSBAQCBjbGFzcyBTZXJ2b0NyYXNodGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0
RXhlY3V0b3IpOgogCiAgICAgICAgIGlmIG5vdCBzZWxmLmludGVyYWN0aXZlOgogICAgICAgICAg
ICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoY29tbWFuZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9j
LnJ1bigpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNz
LlBvcGVuKGNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9j
ZXNzLlBvcGVuKGNvbW1hbmQsIGVudj1jYXN0X2VudihlbnYpKQogCiAgICAgICAgIHNlbGYucHJv
Yy53YWl0KCkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNl
cnZvZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVy
LnB5CmluZGV4IDAyZWNjNzU2NjQ3NjU2ZTZiMjBlMDYzNzFkMjg3NjdmYTBlYjAwZjEuLjA2ODBj
NGVkMjI5OTAzNTE0NmMyYjFlNDc4ZjRiM2ZhMWMzMDExMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFz
cyBTZXJ2b1dlYkRyaXZlclByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgICAgICBwYXNz
CiAgICAgICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBJT0Vycm9yKToKICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5l
cnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKIApA
QCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9
IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAg
ICAgIHNlbGYucmVzdWx0X2ZsYWcuc2V0KCkKQEAgLTE1NSwxMCArMTU1LDEwIEBAIGNsYXNzIFNl
cnZvV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKIGNsYXNzIFNlcnZvV2ViRHJpdmVyVGVzdGhh
cm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICBzdXBwb3J0c190ZXN0ZHJp
dmVyID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAg
ICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGNhcGFiaWxpdGllcz1Ob25lLCBkZWJ1Z19p
bmZvPU5vbmUsCiAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKLSAgICAgICAgVGVzdGhhcm5l
c3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxm
LCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSkKICAg
ICAgICAgc2VsZi5wcm90b2NvbCA9IFNlcnZvV2ViRHJpdmVyUHJvdG9jb2woc2VsZiwgYnJvd3Nl
ciwgY2FwYWJpbGl0aWVzPWNhcGFiaWxpdGllcykKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGgu
am9pbihoZXJlLCAidGVzdGhhcm5lc3Nfc2Vydm9kcml2ZXIuanMiKSkgYXMgZjoKQEAgLTIyMSwx
MSArMjIxLDEyIEBAIGNsYXNzIFRpbWVvdXRFcnJvcihFeGNlcHRpb24pOgogCiAKIGNsYXNzIFNl
cnZvV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0x
LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcs
IHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hl
PU5vbmUsIGNhcGFiaWxpdGllcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCiAgICAgICAgICAgICAg
ICAgICoqa3dhcmdzKToKICAgICAgICAgIiIiU2VsZW5pdW0gV2ViRHJpdmVyLWJhc2VkIGV4ZWN1
dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAgICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90X2NhY2hlLApAQCAtMjM1LDggKzIzNiw4IEBAIGNs
YXNzIFNlcnZvV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcz1j
YXBhYmlsaXRpZXMpCiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24gPSBSZWZUZXN0SW1wbGVt
ZW50YXRpb24oc2VsZikKICAgICAgICAgc2VsZi50aW1lb3V0ID0gTm9uZQotICAgICAgICB3aXRo
IG9wZW4ob3MucGF0aC5qb2luKGhlcmUsICJyZWZ0ZXN0LXdhaXRfd2ViZHJpdmVyLmpzIikpIGFz
IGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKKyAgICAgICAgd2l0
aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIikpIGFzIGY6CisgICAgICAg
ICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0
LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxlbWVudGF0
aW9uLnJlc2V0KCkKQEAgLTI1Niw3ICsyNTcsNyBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRl
c3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgbWVzc2FnZSA9IGdldGF0
dHIoZSwgIm1lc3NhZ2UiLCAiIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHJldHVybiB0ZXN0LnJlc3VsdF9jbHMoIklOVEVSTkFMLUVSUk9SIiwg
bWVzc2FnZSksIFtdCiAKICAgICBkZWYgc2NyZWVuc2hvdChzZWxmLCB0ZXN0LCB2aWV3cG9ydF9z
aXplLCBkcGkpOgpAQCAtMjc3LDcgKzI3OCw3IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyUmVmVGVz
dEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKICAgICAgICAgcmV0dXJuIFNlcnZvV2ViRHJp
dmVyUnVuKHNlbGYubG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fc2NyZWVuc2hvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJv
dG9jb2wuc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJv
dG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RfdXJsKHRl
c3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFfdGltZW91dCkucnVuKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CmluZGV4IDliNWYzOTc2NDAy
NWViZDkxMmY5ZmQwODBhZDA1ZGQwZGVlYTgyN2MuLmM1ZjI5NjVlYzE4NTg2MTMxYmMyMGQzOTRm
NTZiNzg4MjdjMTAyZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3J3ZWJkcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndlYmRy
aXZlci5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzb2NrZXQKIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJscGFyc2UK
IGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4K
IAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwKICAgICAgICAgICAgICAgICAg
ICBDcmFzaHRlc3RFeGVjdXRvciwKQEAgLTY2LDEzICs2NywyMCBAQCBjbGFzcyBXZWJEcml2ZXJC
YXNlUHJvdG9jb2xQYXJ0KEJhc2VQcm90b2NvbFBhcnQpOgogICAgICAgICB3aGlsZSBUcnVlOgog
ICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLmV4ZWN1dGVf
YXN5bmNfc2NyaXB0KCIiKQotICAgICAgICAgICAgZXhjZXB0IChjbGllbnQuVGltZW91dEV4Y2Vw
dGlvbiwgY2xpZW50LlNjcmlwdFRpbWVvdXRFeGNlcHRpb24pOgorICAgICAgICAgICAgZXhjZXB0
IChjbGllbnQuVGltZW91dEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50LlNj
cmlwdFRpbWVvdXRFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgIGNsaWVudC5KYXZhc2Ny
aXB0RXJyb3JFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgICMgQSBKYXZhc2NyaXB0RXJyb3JF
eGNlcHRpb24gd2lsbCBoYXBwZW4gd2hlbiB3ZSBuYXZpZ2F0ZTsKKyAgICAgICAgICAgICAgICAj
IGJ5IGlnbm9yaW5nIGl0IGl0J3MgcG9zc2libGUgdG8gcmVsb2FkIHRoZSB0ZXN0IHdoaWxzdCB0
aGUKKyAgICAgICAgICAgICAgICAjIGhhcm5lc3MgcmVtYWlucyBwYXVzZWQKICAgICAgICAgICAg
ICAgICBwYXNzCi0gICAgICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuTm9T
dWNoV2luZG93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICBjbGllbnQuVW5rbm93bkVy
cm9yRXhjZXB0aW9uLCBJT0Vycm9yKToKKyAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVv
dXQsCisgICAgICAgICAgICAgICAgICAgIGNsaWVudC5Ob1N1Y2hXaW5kb3dFeGNlcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC5Vbmtub3duRXJyb3JFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgIElPRXJyb3IpOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJy
b3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC04Niw4ICs5NCw4IEBAIGNsYXNzIFdl
YkRyaXZlclRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0KFRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0KToK
ICAgICBkZWYgbG9hZF9ydW5uZXIoc2VsZiwgdXJsX3Byb3RvY29sKToKICAgICAgICAgaWYgc2Vs
Zi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIud2luZG93X2hhbmRs
ZSA9IHNlbGYucnVubmVyX2hhbmRsZQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNl
bGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAg
dXJsID0gdXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2Nv
bCksCisgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAg
ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKIAogICAgICAgICBz
ZWxmLndlYmRyaXZlci51cmwgPSB1cmwKQEAgLTI4OCwxNSArMjk2LDE5IEBAIGNsYXNzIFdlYkRy
aXZlclByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIoZ2V0YXR0
cihlLCAibWVzc2FnZSIsICIiKSkKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKG1lc3NhZ2UpCiAgICAgICAgIHNlbGYu
d2ViZHJpdmVyID0gTm9uZQogCiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAjIEdldCBhIHNpbXBsZSBwcm9wZXJ0eSBvdmVyIHRoZSBjb25uZWN0aW9u
Ci0gICAgICAgICAgICBzZWxmLndlYmRyaXZlci53aW5kb3dfaGFuZGxlCi0gICAgICAgIGV4Y2Vw
dCAoc29ja2V0LnRpbWVvdXQsIGNsaWVudC5Vbmtub3duRXJyb3JFeGNlcHRpb24pOgorICAgICAg
ICAgICAgIyBHZXQgYSBzaW1wbGUgcHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbiwgd2l0aCAy
IHNlY29uZHMgb2YgdGltZW91dAorICAgICAgICAgICAgIyB0aGF0IHNob3VsZCBiZSBtb3JlIHRo
YW4gZW5vdWdoIHRvIGNoZWNrIGlmIHRoZSBXZWJEcml2ZXIgaXRzCisgICAgICAgICAgICAjIHN0
aWxsIGFsaXZlLCBhbmQgYWxsb3dzIHRvIGNvbXBsZXRlIHRoZSBjaGVjayB3aXRoaW4gdGhlIHRl
c3RydW5uZXIKKyAgICAgICAgICAgICMgNSBzZWNvbmRzIG9mIGV4dHJhX3RpbWVvdXQgd2UgaGF2
ZSBhcyBtYXhpbXVtIHRvIGVuZCB0aGUgdGVzdCBiZWZvcmUKKyAgICAgICAgICAgICMgdGhlIGV4
dGVybmFsIHRpbWVvdXQgZnJvbSB0ZXN0cnVubmVyIHRyaWdnZXJzLgorICAgICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXIuc2VuZF9zZXNzaW9uX2NvbW1hbmQoIkdFVCIsICJ3aW5kb3ciLCB0aW1lb3V0
PTIpCisgICAgICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVvdXQsIGNsaWVudC5Vbmtub3duRXJyb3JF
eGNlcHRpb24sIGNsaWVudC5JbnZhbGlkU2Vzc2lvbklkRXhjZXB0aW9uKToKICAgICAgICAgICAg
IHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC0zMjksNyArMzQxLDcgQEAg
Y2xhc3MgV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAgICAgICAgICAgaWYgbWVz
c2FnZToKICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICAg
ICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAgICAgIHNlbGYucmVz
dWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBtZXNzYWdlKQogICAgICAgICBmaW5hbGx5
OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5zZXQoKQpAQCAtMzM4LDExICszNTAsMTEg
QEAgY2xhc3MgV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKIGNsYXNzIFdlYkRyaXZlclRlc3Ro
YXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRy
aXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAg
ICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdf
aW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19lYWdlcl9wYWdlbG9hZD1UcnVl
LCAqKmt3YXJncyk6CiAgICAgICAgICIiIldlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgdGVz
dGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0aGFybmVzc0V4ZWN1
dG9yLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91
dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
X2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2VsZi5wcm90b2NvbCA9IFdlYkRyaXZlclByb3Rv
Y29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcykKQEAgLTQzNywxMSArNDQ5LDEyIEBAIGlm
IChsb2NhdGlvbi5ocmVmID09PSAiYWJvdXQ6YmxhbmsiKSB7CiAKIAogY2xhc3MgV2ViRHJpdmVy
UmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVs
dGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNsb3Nl
X2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBh
YmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJXZWJEcml2ZXItYmFzZWQgZXhl
Y3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRvci5fX2luaXRfXyhz
ZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC01MDUsMTEgKzUxOCwxMiBA
QCBjbGFzcyBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKIAogCiBj
bGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9j
b25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90
X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVi
dWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJX
ZWJEcml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIENyYXNodGVz
dEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90
X2NhY2hlLApAQCAtNTM1LDcgKzU0OSw3IEBAIGNsYXNzIFdlYkRyaXZlckNyYXNodGVzdEV4ZWN1
dG9yKENyYXNodGVzdEV4ZWN1dG9yKToKICAgICAgICAgaWYgc3VjY2VzczoKICAgICAgICAgICAg
IHJldHVybiBzZWxmLmNvbnZlcnRfcmVzdWx0KHRlc3QsIGRhdGEpCiAKLSAgICAgICAgcmV0dXJu
ICh0ZXN0LnJlc3VsdF9jbHMoKipkYXRhKSwgW10pCisgICAgICAgIHJldHVybiAodGVzdC5yZXN1
bHRfY2xzKCpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYsIHByb3RvY29s
LCB1cmwsIHRpbWVvdXQpOgogICAgICAgICBwcm90b2NvbC5iYXNlLmxvYWQodXJsKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvcHJvdG9jb2wucHkKaW5kZXggOTVmZGVjN2M5ODE2ODhhYTk5Y2ExM2VlYWY0Yzdi
NmM0MDUyYzkxNy4uNGVjZGQ1MWEwZWY1ZWNhODE1M2ZmYjg0OGYwMjUzZWViNmQ3ZjczNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CkBAIC0zMiw3ICszMiw2IEBAIGNsYXNzIFByb3Rv
Y29sKG9iamVjdCk6CiAgICAgICAgICIiIjpyZXR1cm5zOiBDdXJyZW50IGxvZ2dlciIiIgogICAg
ICAgICByZXR1cm4gc2VsZi5leGVjdXRvci5sb2dnZXIKIAotICAgIEBwcm9wZXJ0eQogICAgIGRl
ZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgIiIiSXMgdGhlIGJyb3dzZXIgY29ubmVjdGlvbiBz
dGlsbCBhY3RpdmUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3Ry
dW5uZXIvcnVubmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CmluZGV4IGMxOTM2ZWI5NjZmNzg4MzRkODM5Yzc5NDA5MzIyYjBhOTZhZjEyODQuLjNk
MzI5MTc2NTliMzkwMGY5ZTQ2NDY3MGQyY2RjMzliOGZmMTgwYTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9ydW5uZXIucHkKQEAgLTQ0LDcgKzQ0LDcgQEAgZGVm
IHJ1bihwYXRoLCBzZXJ2ZXJfY29uZmlnLCBzZXNzaW9uX2NvbmZpZywgdGltZW91dD0wKToKICAg
ICBvcy5lbnZpcm9uWyJXRF9IT1NUIl0gPSBzZXNzaW9uX2NvbmZpZ1siaG9zdCJdCiAgICAgb3Mu
ZW52aXJvblsiV0RfUE9SVCJdID0gc3RyKHNlc3Npb25fY29uZmlnWyJwb3J0Il0pCiAgICAgb3Mu
ZW52aXJvblsiV0RfQ0FQQUJJTElUSUVTIl0gPSBqc29uLmR1bXBzKHNlc3Npb25fY29uZmlnWyJj
YXBhYmlsaXRpZXMiXSkKLSAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29u
LmR1bXBzKHNlcnZlcl9jb25maWcuYXNfZGljdCgpKQorICAgIG9zLmVudmlyb25bIldEX1NFUlZF
Ul9DT05GSUciXSA9IGpzb24uZHVtcHMoc2VydmVyX2NvbmZpZy5hc19kaWN0X2Zvcl93ZF9lbnZf
dmFyaWFibGUoKSkKIAogICAgIGhhcm5lc3MgPSBIYXJuZXNzUmVzdWx0UmVjb3JkZXIoKQogICAg
IHN1YnRlc3RzID0gU3VidGVzdFJlc3VsdFJlY29yZGVyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy90ZXN0
LXdhaXQuanMKaW5kZXggOGE3ZWRiNzlkNjIyNTZlZWY2M2M3MWVhYmQ0NTBkNDJiY2U3YzRkMi4u
YWQwOGFkN2Q3NmZiMDI5OWFhZGVkYjU3MjE5M2MzOGM1MDU1ZTY1NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy90ZXN0LXdhaXQuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy90ZXN0LXdhaXQuanMKQEAgLTMyLDcgKzMyLDggQEAgZnVuY3Rpb24gd2FpdF9wYWludHMo
KSB7CiB9CiAKIGZ1bmN0aW9uIHNjcmVlbnNob3RfaWZfcmVhZHkoKSB7Ci0gIGlmIChyb290LmNs
YXNzTGlzdC5jb250YWlucygiJShjbGFzc25hbWUpcyIpICYmCisgIGlmIChyb290ICYmCisgICAg
ICByb290LmNsYXNzTGlzdC5jb250YWlucygiJShjbGFzc25hbWUpcyIpICYmCiAgICAgICBvYnNl
cnZlciA9PT0gbnVsbCkgewogICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIod2Fp
dF9wYWludHMpOwogICAgIG9ic2VydmVyLm9ic2VydmUocm9vdCwge2F0dHJpYnV0ZXM6IHRydWV9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCmluZGV4IDVkOWI2OThmM2NhMzVh
YmE3ZmRlMDI1MjViODU4NTk5NThkMjM4YWEuLjYxMTY4YTIwN2JmYjQwNzYzNjhkNmQ0ZDE5MTkx
YmJkY2Q1NmY3NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9y
dC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1wb3J0LmxvZwpAQCAtMTUs
NiArMTUsNyBAQCBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2V4ZWN1dG9ycy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0
aW9ucy5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JjaHJvbWUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1
dG9yZWRnZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkKaW5kZXggNGQ1MDUwODZiZDhkOTkxYzk1M2MzNGQz
OGQ4ZTFmYTBjYjkyMGY5OS4uNzUyMWYyNWIxMzQ0ZjVjNTBiODE4MmEyYjdhNjgyNzg4NThmOWI0
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBtYXRoIGltcG9ydCBs
b2cKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHNpeCBpbXBvcnQg
aXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGNsYXNzIE5vZGUob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgcHJvcCwgdmFsdWUpOgpAQCAtMzMsNyArMzQsNyBAQCBkZWYgZW50cm9weShy
ZXN1bHRzKToKIAogICAgIHJlc3VsdF9jb3VudHMgPSBkZWZhdWx0ZGljdChpbnQpCiAgICAgdG90
YWwgPSBmbG9hdChsZW4ocmVzdWx0cykpCi0gICAgZm9yIHZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2
YWx1ZXMoKToKKyAgICBmb3IgdmFsdWVzIGluIGl0ZXJ2YWx1ZXMocmVzdWx0cyk6CiAgICAgICAg
ICMgTm90IHN1cmUgdGhpcyBpcyByaWdodCwgcG9zc2libHkgd2FudCB0byB0cmVhdCBtdWx0aXBs
ZSB2YWx1ZXMgYXMKICAgICAgICAgIyBkaXN0aW5jdCBmcm9tIG11bHRpcGxlIG9mIHRoZSBzYW1l
IHZhbHVlPwogICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgpAQCAtNDEsNyArNDIsNyBAQCBk
ZWYgZW50cm9weShyZXN1bHRzKToKIAogICAgIGVudHJvcHlfc3VtID0gMAogCi0gICAgZm9yIGNv
dW50IGluIHJlc3VsdF9jb3VudHMuaXRlcnZhbHVlcygpOgorICAgIGZvciBjb3VudCBpbiBpdGVy
dmFsdWVzKHJlc3VsdF9jb3VudHMpOgogICAgICAgICBwcm9wID0gZmxvYXQoY291bnQpIC8gdG90
YWwKICAgICAgICAgZW50cm9weV9zdW0gLT0gcHJvcCAqIGxvZyhwcm9wLCAyKQogCkBAIC01Miw3
ICs1Myw3IEBAIGRlZiBzcGxpdF9yZXN1bHRzKHByb3AsIHJlc3VsdHMpOgogICAgICIiIlNwbGl0
IGEgZGljdGlvbmFyeSBvZiByZXN1bHRzIGludG8gYSBkaWN0aW9uYXJ5IG9mIGRpY3Rpb25hcmll
cyB3aGVyZQogICAgIGVhY2ggc3ViLWRpY3Rpb25hcnkgaGFzIGEgc3BlY2lmaWMgdmFsdWUgb2Yg
dGhlIGdpdmVuIHByb3BlcnR5IiIiCiAgICAgYnlfcHJvcCA9IGRlZmF1bHRkaWN0KGRpY3QpCi0g
ICAgZm9yIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRzLml0ZXJpdGVtcygpOgorICAgIGZvciBy
dW5faW5mbywgdmFsdWUgaW4gaXRlcml0ZW1zKHJlc3VsdHMpOgogICAgICAgICBieV9wcm9wW3J1
bl9pbmZvW3Byb3BdXVtydW5faW5mb10gPSB2YWx1ZQogCiAgICAgcmV0dXJuIGJ5X3Byb3AKQEAg
LTc3LDEzICs3OCwxMyBAQCBkZWYgYnVpbGRfdHJlZShwcm9wZXJ0aWVzLCBkZXBlbmRlbnRfcHJv
cHMsIHJlc3VsdHMsIHRyZWU9Tm9uZSk6CiAgICAgcHJvcF9pbmRleCA9IHtwcm9wOiBpIGZvciBp
LCBwcm9wIGluIGVudW1lcmF0ZShwcm9wZXJ0aWVzKX0KIAogICAgIGFsbF9yZXN1bHRzID0gZGVm
YXVsdGRpY3QoaW50KQotICAgIGZvciByZXN1bHRfdmFsdWVzIGluIHJlc3VsdHMuaXRlcnZhbHVl
cygpOgotICAgICAgICBmb3IgcmVzdWx0X3ZhbHVlLCBjb3VudCBpbiByZXN1bHRfdmFsdWVzLml0
ZXJpdGVtcygpOgorICAgIGZvciByZXN1bHRfdmFsdWVzIGluIGl0ZXJ2YWx1ZXMocmVzdWx0cyk6
CisgICAgICAgIGZvciByZXN1bHRfdmFsdWUsIGNvdW50IGluIGl0ZXJpdGVtcyhyZXN1bHRfdmFs
dWVzKToKICAgICAgICAgICAgIGFsbF9yZXN1bHRzW3Jlc3VsdF92YWx1ZV0gKz0gY291bnQKIAog
ICAgICMgSWYgdGhlcmUgaXMgb25seSBvbmUgcmVzdWx0IHdlIGFyZSBkb25lCiAgICAgaWYgbm90
IHByb3BlcnRpZXMgb3IgbGVuKGFsbF9yZXN1bHRzKSA9PSAxOgotICAgICAgICBmb3IgdmFsdWUs
IGNvdW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVlLnJlc3VsdF92
YWx1ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0gc2V0KHJlc3Vs
dHMua2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpAQCAtOTksNyArMTAwLDcgQEAgZGVmIGJ1
aWxkX3RyZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUp
OgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgbmV3X2VudHJvcHkgPSAwLgogICAgICAg
ICByZXN1bHRzX3NldHNfZW50cm9weSA9IFtdCi0gICAgICAgIGZvciBwcm9wX3ZhbHVlLCByZXN1
bHRfc2V0IGluIHJlc3VsdF9zZXRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgcHJvcF92YWx1
ZSwgcmVzdWx0X3NldCBpbiBpdGVyaXRlbXMocmVzdWx0X3NldHMpOgogICAgICAgICAgICAgcmVz
dWx0c19zZXRzX2VudHJvcHkuYXBwZW5kKChlbnRyb3B5KHJlc3VsdF9zZXQpLCBwcm9wX3ZhbHVl
LCByZXN1bHRfc2V0KSkKICAgICAgICAgICAgIG5ld19lbnRyb3B5ICs9IChmbG9hdChsZW4ocmVz
dWx0X3NldCkpIC8gbGVuKHJlc3VsdHMpKSAqIHJlc3VsdHNfc2V0c19lbnRyb3B5Wy0xXVswXQog
CkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIGJ1aWxkX3RyZWUocHJvcGVydGllcywgZGVwZW5kZW50
X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUpOgogCiAgICAgIyBJbiB0aGUgY2FzZSB0aGF0IG5v
IHByb3BlcnRpZXMgcGFydGl0aW9uIHRoZSBzcGFjZQogICAgIGlmIG5vdCByZXN1bHRzX3BhcnRp
dGlvbnM6Ci0gICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gYWxsX3Jlc3VsdHMuaXRlcml0ZW1z
KCk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gaXRlcml0ZW1zKGFsbF9yZXN1bHRzKToK
ICAgICAgICAgICAgIHRyZWUucmVzdWx0X3ZhbHVlc1t2YWx1ZV0gKz0gY291bnQKICAgICAgICAg
dHJlZS5ydW5faW5mbyB8PSBzZXQocmVzdWx0cy5rZXlzKCkpCiAgICAgICAgIHJldHVybiB0cmVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5
CmluZGV4IDY2NDdhODU4MGJlN2FiNDA1MGJiZDM3NTkzYjJlNjU5NWJjM2FjNzIuLjYyMjZmYzY2
ZmVkZjJhZmM5NmI1MTEwZjM1MjRiMDBkMTg1Y2M1MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9mb250LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CkBAIC0xLDUgKzEsNCBAQAogaW1w
b3J0IGN0eXBlcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBp
bXBvcnQgcGxpc3RsaWIKQEAgLTEyLDcgKzExLDggQEAgU1lTVEVNID0gcGxhdGZvcm0uc3lzdGVt
KCkubG93ZXIoKQogCiAKIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgZm9udF9kaXI9Tm9uZSwgKipmb250cyk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgZm9udF9kaXI9Tm9uZSwgKipmb250cyk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCiAgICAgICAgIHNlbGYuZm9udF9kaXIgPSBmb250X2RpcgogICAgICAgICBzZWxm
Lmluc3RhbGxlZF9mb250cyA9IEZhbHNlCiAgICAgICAgIHNlbGYuY3JlYXRlZF9kaXIgPSBGYWxz
ZQpAQCAtMjYsMTQgKzI2LDEzIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAg
ICAgICAgIGZvbnRfbmFtZSA9IGZvbnRfcGF0aC5zcGxpdCgnLycpWy0xXQogICAgICAgICAgICAg
aW5zdGFsbCA9IGdldGF0dHIoc2VsZiwgJ2luc3RhbGxfJXNfZm9udCcgJSBTWVNURU0sIE5vbmUp
CiAgICAgICAgICAgICBpZiBub3QgaW5zdGFsbDoKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndh
cm5pbmcoJ0ZvbnQgaW5zdGFsbGF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gJXMnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTWVNURU0pCisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygnRm9udCBpbnN0YWxsYXRpb24gbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNU
RU0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiBpbnN0YWxs
KGZvbnRfbmFtZSwgZm9udF9wYXRoKToKICAgICAgICAgICAgICAgICBzZWxmLmluc3RhbGxlZF9m
b250cyA9IFRydWUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0luc3RhbGxlZCBmb250
OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdJbnN0
YWxsZWQgZm9udDogJXMnICUgZm9udF9uYW1lKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1VuYWJsZSB0byBpbnN0YWxsIGZvbnQ6ICVzJywgZm9u
dF9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byBp
bnN0YWxsIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBl
eGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKICAgICAgICAgaWYgbm90IHNlbGYuaW5zdGFsbGVk
X2ZvbnRzOgpAQCAtNDMsMTIgKzQyLDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToK
ICAgICAgICAgICAgIGZvbnRfbmFtZSA9IGZvbnRfcGF0aC5zcGxpdCgnLycpWy0xXQogICAgICAg
ICAgICAgcmVtb3ZlID0gZ2V0YXR0cihzZWxmLCAncmVtb3ZlXyVzX2ZvbnQnICUgU1lTVEVNLCBO
b25lKQogICAgICAgICAgICAgaWYgbm90IHJlbW92ZToKLSAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ0ZvbnQgcmVtb3ZhbCBub3Qgc3VwcG9ydGVkIG9uICVzJywgU1lTVEVNKQorICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQgcmVtb3ZhbCBub3Qgc3VwcG9y
dGVkIG9uICVzJyAlIFNZU1RFTSkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgICAgIGlmIHJlbW92ZShmb250X25hbWUsIGZvbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCdSZW1vdmVkIGZvbnQ6ICVzJywgZm9udF9uYW1lKQorICAgICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmluZm8oJ1JlbW92ZWQgZm9udDogJXMnICUgZm9udF9uYW1lKQogICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1VuYWJsZSB0
byByZW1vdmUgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygnVW5hYmxlIHRvIHJlbW92ZSBmb250OiAlcycgJSBmb250X25hbWUpCiAKICAg
ICBkZWYgaW5zdGFsbF9saW51eF9mb250KHNlbGYsIGZvbnRfbmFtZSwgZm9udF9wYXRoKToKICAg
ICAgICAgaWYgbm90IHNlbGYuZm9udF9kaXI6CkBAIC02Miw3ICs2MSw3IEBAIGNsYXNzIEZvbnRJ
bnN0YWxsZXIob2JqZWN0KToKICAgICAgICAgICAgIGZjX2NhY2hlX3JldHVybmNvZGUgPSBjYWxs
KCdmYy1jYWNoZScpCiAgICAgICAgICAgICByZXR1cm4gbm90IGZjX2NhY2hlX3JldHVybmNvZGUK
ICAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICAjIElmIGZvbnRjb25maWcgZG9lc24ndCBleGlzdCwg
cmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdmb250Y29uZmlnIG5vdCBh
dmFpbGFibGUgb24gdGhpcyBMaW51eCBzeXN0ZW0uJykKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmVycm9yKCdmb250Y29uZmlnIG5vdCBhdmFpbGFibGUgb24gdGhpcyBMaW51eCBzeXN0ZW0uJykK
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGluc3RhbGxfZGFyd2luX2ZvbnQo
c2VsZiwgZm9udF9uYW1lLCBmb250X3BhdGgpOgpAQCAtNzksNyArNzgsMTIgQEAgY2xhc3MgRm9u
dEluc3RhbGxlcihvYmplY3QpOgogICAgICAgICAjIFBlciBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3Jlc3VsdHMtY29sbGVjdGlvbi9pc3N1ZXMvMjE4CiAgICAgICAgICMg
aW5zdGFsbGluZyBBaGVtIG9uIG1hY09TIGlzIGZsYWt5LCBzbyBjaGVjayBpZiBpdCBhY3R1YWxs
eSBpbnN0YWxsZWQKICAgICAgICAgZm9udHMgPSBjaGVja19vdXRwdXQoWycvdXNyL3NiaW4vc3lz
dGVtX3Byb2ZpbGVyJywgJy14bWwnLCAnU1BGb250c0RhdGFUeXBlJ10pCi0gICAgICAgIGZvbnRz
ID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZyhmb250cykKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgIyBpZiBweTMKKyAgICAgICAgICAgIHJlYWRQbGlzdEZyb21CeXRlcyA9IHBsaXN0
bGliLnJlYWRQbGlzdEZyb21CeXRlcworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Cisg
ICAgICAgICAgICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tU3Ry
aW5nCisgICAgICAgIGZvbnRzID0gcmVhZFBsaXN0RnJvbUJ5dGVzKGZvbnRzKQogICAgICAgICBh
c3NlcnQgbGVuKGZvbnRzKSA9PSAxCiAgICAgICAgIGZvciBmb250IGluIGZvbnRzWzBdWydfaXRl
bXMnXToKICAgICAgICAgICAgIGlmIGZvbnRbJ3BhdGgnXSA9PSBpbnN0YWxsZWRfZm9udF9wYXRo
OgpAQCAtMTEwLDcgKzExNCw3IEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAg
ICAgICAgIGZjX2NhY2hlX3JldHVybmNvZGUgPSBjYWxsKCdmYy1jYWNoZScpCiAgICAgICAgICAg
ICByZXR1cm4gbm90IGZjX2NhY2hlX3JldHVybmNvZGUKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6
ICAjIElmIGZvbnRjb25maWcgZG9lc24ndCBleGlzdCwgcmV0dXJuIEZhbHNlCi0gICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCdmb250Y29uZmlnIG5vdCBhdmFpbGFibGUgb24gdGhpcyBMaW51eCBz
eXN0ZW0uJykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCdmb250Y29uZmlnIG5vdCBh
dmFpbGFibGUgb24gdGhpcyBMaW51eCBzeXN0ZW0uJykKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgZGVmIHJlbW92ZV9kYXJ3aW5fZm9udChzZWxmLCBmb250X25hbWUsIF8pOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5weQppbmRleCA1NjQzNWVhYmY0YmJlYWRiZWU3YWZhMjk0
ZTNlMGJiMWU3Njg1Yjk5Li4wODY1NjBiNmE4NzNjZGM5ZmVmZDNiOGI4YjdhNTNiMDE3M2IzODcw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZm9ybWF0dGVycy9jaHJvbWl1bS5weQpAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICA6cGFyYW0g
c3RyIHRlc3Q6IHRoZSBuYW1lIG9mIHRoZSB0ZXN0CiAgICAgICAgIDpwYXJhbSBzdHIgc3VidGVz
dDogdGhlIG5hbWUgb2YgdGhlIHN1YnRlc3Qgd2l0aCB0aGUgbWVzc2FnZQogICAgICAgICA6cGFy
YW0gc3RyIHN0YXR1czogdGhlIHN1YnRlc3Qgc3RhdHVzCi0gICAgICAgIDpwYXJhbSBzdHIgZXhw
ZWN0ZWQ6IHRoZSBleHBlY3RlZCBzdWJ0ZXN0IHN0YXR1cworICAgICAgICA6cGFyYW0gc3RyIGV4
cGVjdGVkOiB0aGUgZXhwZWN0ZWQgc3VidGVzdCBzdGF0dXNlcwogICAgICAgICA6cGFyYW0gc3Ry
IG1lc3NhZ2U6IHRoZSBzdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSBtZXNzYWdlIGZvciB0aGlzIHRl
c3QKIAogICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBhIG1lc3NhZ2U6CkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZvcm1hdHRlcik6CiAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgIyBBZGQgdGhlIHByZWZpeCwgd2l0aCB0aGUgdGVzdCBz
dGF0dXMgYW5kIHN1YnRlc3QgbmFtZSAoaWYgYXZhaWxhYmxlKQogICAgICAgICBwcmVmaXggPSAi
WyVzIiAlIHN0YXR1cwotICAgICAgICBpZiBleHBlY3RlZCBhbmQgZXhwZWN0ZWQgIT0gc3RhdHVz
OgorICAgICAgICBpZiBleHBlY3RlZCBhbmQgc3RhdHVzIG5vdCBpbiBleHBlY3RlZDoKICAgICAg
ICAgICAgIHByZWZpeCArPSAiIGV4cGVjdGVkICVzXSAiICUgZXhwZWN0ZWQKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIHByZWZpeCArPSAiXSAiCkBAIC01NSwxMyArNTUsMjggQEAgY2xhc3Mg
Q2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgICAgIHByZWZp
eCArPSAiJXM6ICIgJSBzdWJ0ZXN0CiAgICAgICAgIHNlbGYubWVzc2FnZXNbdGVzdF0gKz0gcHJl
Zml4ICsgbWVzc2FnZSArICJcbiIKIAotICAgIGRlZiBfc3RvcmVfdGVzdF9yZXN1bHQoc2VsZiwg
bmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSk6CisgICAgZGVmIF9hcHBlbmRfYXJ0aWZh
Y3Qoc2VsZiwgY3VyX2RpY3QsIGFydGlmYWN0X25hbWUsIGFydGlmYWN0X3ZhbHVlKToKKyAgICAg
ICAgIiIiCisgICAgICAgIEFwcGVuZHMgYXJ0aWZhY3RzIHRvIHRoZSBzcGVjaWZpZWQgZGljdGlv
bmFyeS4KKyAgICAgICAgOnBhcmFtIGRpY3QgY3VyX2RpY3Q6IHRoZSB0ZXN0IGxlYWYgZGljdGlv
bmFyeSB0byBhcHBlbmQgdG8KKyAgICAgICAgOnBhcmFtIHN0ciBhcnRpZmFjdF9uYW1lOiB0aGUg
bmFtZSBvZiB0aGUgYXJ0aWZhY3QKKyAgICAgICAgOnBhcmFtIHN0ciBhcnRpZmFjdF92YWx1ZTog
dGhlIHZhbHVlIG9mIHRoZSBhcnRpZmFjdAorICAgICAgICAiIiIKKyAgICAgICAgaWYgImFydGlm
YWN0cyIgbm90IGluIGN1cl9kaWN0LmtleXMoKToKKyAgICAgICAgICAgIGN1cl9kaWN0WyJhcnRp
ZmFjdHMiXSA9IHt9CisgICAgICAgICMgQXJ0aWZhY3RzIGFyZSBhbGwgZXhwZWN0ZWQgdG8gYmUg
bGlzdHMsIHNvIGV2ZW4gdGhvdWdoIHdlIG9ubHkgaGF2ZSBhCisgICAgICAgICMgc2luZ2xlIHxh
cnRpZmFjdF92YWx1ZXwgd2Ugc3RpbGwgcHV0IGl0IGluIGEgbGlzdC4KKyAgICAgICAgY3VyX2Rp
Y3RbImFydGlmYWN0cyJdW2FydGlmYWN0X25hbWVdID0gW2FydGlmYWN0X3ZhbHVlXQorCisgICAg
ZGVmIF9zdG9yZV90ZXN0X3Jlc3VsdChzZWxmLCBuYW1lLCBhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlLCB3cHRfYWN0dWFsLCBzdWJ0ZXN0X2ZhaWx1cmUpOgogICAgICAgICAiIiIKICAgICAgICAg
U3RvcmVzIHRoZSByZXN1bHQgb2YgYSBzaW5nbGUgdGVzdCBpbiB8c2VsZi50ZXN0c3wKICAgICAg
ICAgOnBhcmFtIHN0ciBuYW1lOiBuYW1lIG9mIHRoZSB0ZXN0LgogICAgICAgICA6cGFyYW0gc3Ry
IGFjdHVhbDogYWN0dWFsIHN0YXR1cyBvZiB0aGUgdGVzdC4KLSAgICAgICAgOnBhcmFtIHN0ciBl
eHBlY3RlZDogZXhwZWN0ZWQgc3RhdHVzIG9mIHRoZSB0ZXN0LgorICAgICAgICA6cGFyYW0gc3Ry
IGV4cGVjdGVkOiBleHBlY3RlZCBzdGF0dXNlcyBvZiB0aGUgdGVzdC4KICAgICAgICAgOnBhcmFt
IHN0ciBtZXNzYWdlOiB0ZXN0IG91dHB1dCwgc3VjaCBhcyBzdGF0dXMsIHN1YnRlc3QsIGVycm9y
cyBldGMuCisgICAgICAgIDpwYXJhbSBzdHIgd3B0X2FjdHVhbDogYWN0dWFsIHN0YXR1cyByZXBv
cnRlZCBieSB3cHQsIG1heSBkaWZmZXIgZnJvbSB8YWN0dWFsfC4KKyAgICAgICAgOnBhcmFtIGJv
b2wgc3VidGVzdF9mYWlsdXJlOiB3aGV0aGVyIHRoaXMgdGVzdCBmYWlsZWQgYmVjYXVzZSBvZiBz
dWJ0ZXN0cwogICAgICAgICAiIiIKICAgICAgICAgIyBUaGUgdGVzdCBuYW1lIGNhbiBjb250YWlu
IGEgbGVhZGluZyAvIHdoaWNoIHdpbGwgcHJvZHVjZSBhbiBlbXB0eQogICAgICAgICAjIHN0cmlu
ZyBpbiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIGxpc3QgcmV0dXJuZWQgYnkgc3BsaXQuIFdl
IHVzZQpAQCAtNzIsMTMgKzg3LDE3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFz
ZUZvcm1hdHRlcik6CiAgICAgICAgICAgICBjdXJfZGljdCA9IGN1cl9kaWN0LnNldGRlZmF1bHQo
bmFtZV9wYXJ0LCB7fSkKICAgICAgICAgY3VyX2RpY3RbImFjdHVhbCJdID0gYWN0dWFsCiAgICAg
ICAgIGN1cl9kaWN0WyJleHBlY3RlZCJdID0gZXhwZWN0ZWQKKyAgICAgICAgaWYgc3VidGVzdF9m
YWlsdXJlOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1cl9kaWN0LCAid3B0
X3N1YnRlc3RfZmFpbHVyZSIsICJ0cnVlIikKKyAgICAgICAgaWYgd3B0X2FjdHVhbCAhPSBhY3R1
YWw6CisgICAgICAgICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZhY3QoY3VyX2RpY3QsICJ3cHRfYWN0
dWFsX3N0YXR1cyIsIHdwdF9hY3R1YWwpCiAgICAgICAgIGlmIG1lc3NhZ2UgIT0gIiI6Ci0gICAg
ICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7ImxvZyI6IG1lc3NhZ2V9CisgICAgICAg
ICAgICBzZWxmLl9hcHBlbmRfYXJ0aWZhY3QoY3VyX2RpY3QsICJsb2ciLCBtZXNzYWdlKQogCiAg
ICAgICAgICMgRmlndXJlIG91dCBpZiB0aGVyZSB3YXMgYSByZWdyZXNzaW9uIG9yIHVuZXhwZWN0
ZWQgc3RhdHVzLiBUaGlzIG9ubHkKICAgICAgICAgIyBoYXBwZW5zIGZvciB0ZXN0cyB0aGF0IHdl
cmUgcnVuCiAgICAgICAgIGlmIGFjdHVhbCAhPSAiU0tJUCI6Ci0gICAgICAgICAgICBpZiBhY3R1
YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICBpZiBhY3R1YWwgbm90IGluIGV4cGVjdGVkOgog
ICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc191bmV4cGVjdGVkIl0gPSBUcnVlCiAgICAgICAg
ICAgICAgICAgaWYgYWN0dWFsICE9ICJQQVNTIjoKICAgICAgICAgICAgICAgICAgICAgY3VyX2Rp
Y3RbImlzX3JlZ3Jlc3Npb24iXSA9IFRydWUKQEAgLTEwMyw3ICsxMjIsNyBAQCBjbGFzcyBDaHJv
bWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuICJT
S0lQIgogICAgICAgICBpZiBzdGF0dXMgPT0gIkVYVEVSTkFMLVRJTUVPVVQiOgogICAgICAgICAg
ICAgcmV0dXJuICJUSU1FT1VUIgotICAgICAgICBpZiBzdGF0dXMgaW4gKCJFUlJPUiIsICJDUkFT
SCIpOgorICAgICAgICBpZiBzdGF0dXMgaW4gKCJFUlJPUiIsICJDUkFTSCIsICJQUkVDT05ESVRJ
T05fRkFJTEVEIik6CiAgICAgICAgICAgICAjIENSQVNIIGluIFdQVCBtZWFucyBhIGJyb3dzZXIg
Y3Jhc2gsIHdoaWNoIENocm9taXVtIHRyZWF0cyBhcyBhCiAgICAgICAgICAgICAjIHRlc3QgZmFp
bHVyZS4KICAgICAgICAgICAgIHJldHVybiAiRkFJTCIKQEAgLTExNiw3ICsxMzUsNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogCiAgICAgZGVmIF9nZXRf
ZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShzZWxmLCBhY3R1YWxfc3RhdHVzLCBkYXRhKToKICAg
ICAgICAgIiIiCi0gICAgICAgIEdldHMgdGhlIGV4cGVjdGVkIHN0YXR1cyBmcm9tIGEgfGRhdGF8
IGRpY3Rpb25hcnkuCisgICAgICAgIEdldHMgdGhlIGV4cGVjdGVkIHN0YXR1c2VzIGZyb20gYSB8
ZGF0YXwgZGljdGlvbmFyeS4KIAogICAgICAgICBJZiB0aGVyZSBpcyBubyBleHBlY3RlZCBzdGF0
dXMgaW4gZGF0YSwgdGhlIGFjdHVhbCBzdGF0dXMgaXMgcmV0dXJuZWQuCiAgICAgICAgIFRoaXMg
aXMgYmVjYXVzZSBtb3psb2cgd2lsbCBkZWxldGUgImV4cGVjdGVkIiBmcm9tIHxkYXRhfCBpZiBp
dCBpcyB0aGUKQEAgLTEyNSw0NyArMTQ0LDYxIEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJh
c2UuQmFzZUZvcm1hdHRlcik6CiAgICAgICAgIGlzIGV4cGVjdGVkLiBTbyB3ZSB1c2UgdGhlICJl
eHBlY3RlZCIgc3RhdHVzIGlmIGl0J3MgdGhlcmUgb3IgZmFsbCBiYWNrCiAgICAgICAgIHRvIHRo
ZSBhY3R1YWwgc3RhdHVzIGlmIGl0J3Mgbm90LgogCisgICAgICAgIElmIHRoZSB0ZXN0IGhhcyBt
dWx0aXBsZSBzdGF0dXNlcywgaXQgd2lsbCBoYXZlIG90aGVyIHN0YXR1c2VzIGxpc3RlZCBhcwor
ICAgICAgICAia25vd25faW50ZXJtaXR0ZW50IiBpbiB8ZGF0YXwuIElmIHRoZXNlIGV4aXN0LCB0
aGV5IHdpbGwgYmUgYXBwZW5kZWQgdG8KKyAgICAgICAgdGhlIHJldHVybmVkIHN0YXR1cyB3aXRo
IHNwYWNlZCBpbiBiZXR3ZWVuLgorCiAgICAgICAgIDpwYXJhbSBzdHIgYWN0dWFsX3N0YXR1czog
dGhlIGFjdHVhbCBzdGF0dXMgb2YgdGhlIHRlc3QKICAgICAgICAgOnBhcmFtIGRhdGE6IGEgZGF0
YSBkaWN0aW9uYXJ5IHRvIGV4dHJhY3QgZXhwZWN0ZWQgc3RhdHVzIGZyb20KLSAgICAgICAgOnJl
dHVybiBzdHI6IHRoZSBleHBlY3RlZCBzdGF0dXMKKyAgICAgICAgOnJldHVybiBzdHI6IHRoZSBl
eHBlY3RlZCBzdGF0dXNlcyBhcyBhIHN0cmluZwogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJu
IChzZWxmLl9tYXBfc3RhdHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkKLSAgICAgICAgICAgICAg
ICBpZiAiZXhwZWN0ZWQiIGluIGRhdGEgZWxzZSBhY3R1YWxfc3RhdHVzKQorICAgICAgICBleHBl
Y3RlZF9zdGF0dXNlcyA9IHNlbGYuX21hcF9zdGF0dXNfbmFtZShkYXRhWyJleHBlY3RlZCJdKSBp
ZiAiZXhwZWN0ZWQiIGluIGRhdGEgZWxzZSBhY3R1YWxfc3RhdHVzCisgICAgICAgIGlmIGRhdGEu
Z2V0KCJrbm93bl9pbnRlcm1pdHRlbnQiKToKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1c2Vz
ICs9ICIgIiArICIgIi5qb2luKAorICAgICAgICAgICAgICAgIFtzZWxmLl9tYXBfc3RhdHVzX25h
bWUob3RoZXJfc3RhdHVzKSBmb3Igb3RoZXJfc3RhdHVzIGluIGRhdGFbImtub3duX2ludGVybWl0
dGVudCJdXSkKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkX3N0YXR1c2VzCiAKICAgICBkZWYgc3Vp
dGVfc3RhcnQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuc3RhcnRfdGltZXN0YW1wX3NlY29u
ZHMgPSAoZGF0YVsidGltZSJdIGlmICJ0aW1lIiBpbiBkYXRhCisgICAgICAgICMgfGRhdGF8IGNv
bnRhaW5zIGEgdGltZXN0YW1wIGluIG1pY3Jvc2Vjb25kcywgd2hpbGUgdGltZS50aW1lKCkgZ2l2
ZXMKKyAgICAgICAgIyBpdCBpbiBzZWNvbmRzLgorICAgICAgICBzZWxmLnN0YXJ0X3RpbWVzdGFt
cF9zZWNvbmRzID0gKGZsb2F0KGRhdGFbInRpbWUiXSkgLyAxMDAwIGlmICJ0aW1lIiBpbiBkYXRh
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aW1lLnRpbWUo
KSkKIAogICAgIGRlZiB0ZXN0X3N0YXR1cyhzZWxmLCBkYXRhKToKICAgICAgICAgdGVzdF9uYW1l
ID0gZGF0YVsidGVzdCJdCi0gICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBOb25lCiAgICAgICAgIGFj
dHVhbF9zdGF0dXMgPSBzZWxmLl9tYXBfc3RhdHVzX25hbWUoZGF0YVsic3RhdHVzIl0pCi0gICAg
ICAgIGV4cGVjdGVkX3N0YXR1cyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1c2VzID0gc2VsZi5f
Z2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoYWN0dWFsX3N0YXR1cywgZGF0YSkKIAotICAg
ICAgICBpc191bmV4cGVjdGVkID0gYWN0dWFsX3N0YXR1cyAhPSBleHBlY3RlZF9zdGF0dXMKKyAg
ICAgICAgaXNfdW5leHBlY3RlZCA9IGFjdHVhbF9zdGF0dXMgbm90IGluIGV4cGVjdGVkX3N0YXR1
c2VzCiAgICAgICAgIGlmIGlzX3VuZXhwZWN0ZWQgYW5kIHRlc3RfbmFtZSBub3QgaW4gc2VsZi50
ZXN0c193aXRoX3N1YnRlc3RfZmFpbHM6CiAgICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3Vi
dGVzdF9mYWlscy5hZGQodGVzdF9uYW1lKQogICAgICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToK
LSAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBkYXRhWyJz
dWJ0ZXN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9z
dGF0dXMsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVsibWVzc2FnZSJdKQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3Rlc3RfbWVz
c2FnZSh0ZXN0X25hbWUsIGRhdGFbInN1YnRlc3QiXSwgYWN0dWFsX3N0YXR1cywgZXhwZWN0ZWRf
c3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKIAogICAgIGRlZiB0ZXN0X2VuZChzZWxmLCBkYXRh
KToKICAgICAgICAgdGVzdF9uYW1lID0gZGF0YVsidGVzdCJdCi0gICAgICAgIGFjdHVhbF9zdGF0
dXMgPSBzZWxmLl9tYXBfc3RhdHVzX25hbWUoZGF0YVsic3RhdHVzIl0pCi0gICAgICAgIGlmIGFj
dHVhbF9zdGF0dXMgPT0gIlBBU1MiIGFuZCB0ZXN0X25hbWUgaW4gc2VsZi50ZXN0c193aXRoX3N1
YnRlc3RfZmFpbHM6Ci0gICAgICAgICAgICAjIFRoaXMgdGVzdCBwYXNzZWQgYnV0IGl0IGhhcyBm
YWlsaW5nIHN1YnRlc3RzLCBzbyB3ZSBmbGlwIHRoZSBzdGF0dXMKLSAgICAgICAgICAgICMgdG8g
RkFJTC4KLSAgICAgICAgICAgIGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKKyAgICAgICAgIyBTYXZl
IHRoZSBzdGF0dXMgcmVwb3J0ZWQgYnkgV1BUIHNpbmNlIHdlIG1pZ2h0IGNoYW5nZSBpdCB3aGVu
IHJlcG9ydGluZworICAgICAgICAjIHRvIENocm9taXVtLgorICAgICAgICB3cHRfYWN0dWFsX3N0
YXR1cyA9IGRhdGFbInN0YXR1cyJdCisgICAgICAgIGFjdHVhbF9zdGF0dXMgPSBzZWxmLl9tYXBf
c3RhdHVzX25hbWUod3B0X2FjdHVhbF9zdGF0dXMpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1c2Vz
ID0gc2VsZi5fZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoYWN0dWFsX3N0YXR1cywgZGF0
YSkKKyAgICAgICAgc3VidGVzdF9mYWlsdXJlID0gRmFsc2UKKyAgICAgICAgaWYgdGVzdF9uYW1l
IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgorICAgICAgICAgICAgc3VidGVzdF9m
YWlsdXJlID0gVHJ1ZQogICAgICAgICAgICAgIyBDbGVhbiB1cCB0aGUgdGVzdCBsaXN0IHRvIGF2
b2lkIGFjY3VtdWxhdGluZyB0b28gbWFueS4KICAgICAgICAgICAgIHNlbGYudGVzdHNfd2l0aF9z
dWJ0ZXN0X2ZhaWxzLnJlbW92ZSh0ZXN0X25hbWUpCisgICAgICAgICAgICAjIFRoaXMgdGVzdCBw
YXNzZWQgYnV0IGl0IGhhcyBmYWlsaW5nIHN1YnRlc3RzLiBTaW5jZSB3ZSBjYW4gb25seQorICAg
ICAgICAgICAgIyByZXBvcnQgYSBzaW5nbGUgc3RhdHVzIHRvIENocm9taXVtLCB3ZSBjaG9vc2Ug
RkFJTCB0byBpbmRpY2F0ZQorICAgICAgICAgICAgIyB0aGF0IHNvbWV0aGluZyBhYm91dCB0aGlz
IHRlc3QgZGlkIG5vdCBydW4gY29ycmVjdGx5LgorICAgICAgICAgICAgaWYgYWN0dWFsX3N0YXR1
cyA9PSAiUEFTUyI6CisgICAgICAgICAgICAgICAgYWN0dWFsX3N0YXR1cyA9ICJGQUlMIgogCi0g
ICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9k
YXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAgICAgICAgIGlmICJtZXNzYWdlIiBpbiBkYXRhOgog
ICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3Rlc3RfbWVzc2FnZSh0ZXN0X25hbWUsIE5vbmUsIGFj
dHVhbF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX3N0YXR1cywgZGF0YVsibWVzc2FnZSJdKQotICAgICAgICBzZWxmLl9zdG9yZV90ZXN0X3Jl
c3VsdCh0ZXN0X25hbWUsIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0X25hbWVdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcywgZGF0YVsi
bWVzc2FnZSJdKQorICAgICAgICBzZWxmLl9zdG9yZV90ZXN0X3Jlc3VsdCh0ZXN0X25hbWUsIGFj
dHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLm1lc3NhZ2VzW3Rlc3RfbmFtZV0sIHdwdF9hY3R1YWxfc3RhdHVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0ZXN0X2ZhaWx1cmUpCiAKICAgICAgICAg
IyBSZW1vdmUgdGhlIHRlc3QgZnJvbSBtZXNzYWdlcyBkaWN0IHRvIGF2b2lkIGFjY3VtdWxhdGlu
ZyB0b28gbWFueS4KICAgICAgICAgc2VsZi5tZXNzYWdlcy5wb3AodGVzdF9uYW1lKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKaW5kZXggODNjMTI4
YWM1Y2I0NmE2NTM3M2EyZmVhMDA4YzZiYTYwMzUwZmQ4Zi4uMmE1ZDNlNzkyODBjYjU1NjM3NDdi
ZWNkZGE0YWZlMTg4ZDNiNjBlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMv
dGVzdHMvdGVzdF9jaHJvbWl1bS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0
cy90ZXN0X2Nocm9taXVtLnB5CkBAIC0xNTYsMTIgKzE1NiwxMyBAQCBkZWYgdGVzdF9zdWJ0ZXN0
X21lc3NhZ2VzKGNhcGZkKToKICAgICBvdXRwdXQuc2VlaygwKQogICAgIG91dHB1dF9qc29uID0g
anNvbi5sb2FkKG91dHB1dCkKIAotICAgIHQxX2xvZyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0
MSJdWyJhcnRpZmFjdHMiXVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBl
Y3RlZCBQQVNTXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAg
IltQQVNTXSB0MV9iOiB0MV9iX21lc3NhZ2VcbiIKLQotICAgIHQyX2xvZyA9IG91dHB1dF9qc29u
WyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXVsibG9nIl0KLSAgICBhc3NlcnQgdDJfbG9nID09
ICJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0Ml9tZXNzYWdlXG4iCisgICAgdDFfYXJ0aWZhY3Rz
ID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl1bImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQx
X2FydGlmYWN0c1sibG9nIl0gPT0gWyJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9i
OiB0MV9iX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3Rf
ZmFpbHVyZSJdID09IFsidHJ1ZSJdCisgICAgdDJfYXJ0aWZhY3RzID0gb3V0cHV0X2pzb25bInRl
c3RzIl1bInQyIl1bImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQyX2FydGlmYWN0c1sibG9nIl0g
PT0gWyJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0Ml9tZXNzYWdlXG4iXQorICAgIGFzc2VydCAi
d3B0X3N1YnRlc3RfZmFpbHVyZSIgbm90IGluIHQyX2FydGlmYWN0cy5rZXlzKCkKIAogCiBkZWYg
dGVzdF9zdWJ0ZXN0X2ZhaWx1cmUoY2FwZmQpOgpAQCAtMjAyLDEzICsyMDMsMTcgQEAgZGVmIHRl
c3Rfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChv
dXRwdXQpCiAKICAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAg
dDFfbG9nID0gdGVzdF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cg
PT0gIltGQUlMIGV4cGVjdGVkIFBBU1NdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIiBcCi0gICAgICAg
ICAgICAgICAgICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2FnZVxuIiBcCi0gICAgICAgICAg
ICAgICAgICAgICAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDFfYzogdDFfY19tZXNzYWdlXG4i
CisgICAgdDFfYXJ0aWZhY3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQx
X2FydGlmYWN0c1sibG9nIl0gPT0gWyJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9i
OiB0MV9iX21lc3NhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltU
SU1FT1VUIGV4cGVjdGVkIFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQg
dDFfYXJ0aWZhY3RzWyJ3cHRfc3VidGVzdF9mYWlsdXJlIl0gPT0gWyJ0cnVlIl0KICAgICAjIFRo
ZSBzdGF0dXMgb2YgdGhlIHRlc3QgaW4gdGhlIG91dHB1dCBpcyBhIGZhaWx1cmUgYmVjYXVzZSBz
dWJ0ZXN0cyBmYWlsZWQsCi0gICAgIyBkZXNwaXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0
IHRoZSB0ZXN0IHBhc3NlZC4KKyAgICAjIGRlc3BpdGUgdGhlIGhhcm5lc3MgcmVwb3J0aW5nIHRo
YXQgdGhlIHRlc3QgcGFzc2VkLiBCdXQgdGhlIGhhcm5lc3Mgc3RhdHVzCisgICAgIyBpcyBsb2dn
ZWQgYXMgYW4gYXJ0aWZhY3QuCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X2FjdHVhbF9z
dGF0dXMiXSA9PSBbIlBBU1MiXQogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZB
SUwiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgogICAgICMgQWxz
byBlbnN1cmUgdGhhdCB0aGUgZm9ybWF0dGVyIGNsZWFuZWQgdXAgaXRzIGludGVybmFsIHN0YXRl
CiAgICAgYXNzZXJ0ICJ0MSIgbm90IGluIGZvcm1hdHRlci50ZXN0c193aXRoX3N1YnRlc3RfZmFp
bHMKIApAQCAtMjUzLDEyICsyNTgsMTMgQEAgZGVmIHRlc3RfZXhwZWN0ZWRfc3VidGVzdF9mYWls
dXJlKGNhcGZkKToKIAogICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0K
ICAgICB0MV9sb2cgPSB0ZXN0X29ialsiYXJ0aWZhY3RzIl1bImxvZyJdCi0gICAgYXNzZXJ0IHQx
X2xvZyA9PSAiW0ZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIiBcCi0gICAgICAgICAgICAgICAg
ICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2FnZVxuIiBcCi0gICAgICAgICAgICAgICAgICAg
ICAiW1RJTUVPVVRdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIGFzc2VydCB0MV9sb2cgPT0g
WyJbRkFJTF0gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAgICAgIltQ
QVNTXSB0MV9iOiB0MV9iX21lc3NhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiW1RJTUVP
VVRdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIl0KICAgICAjIFRoZSBzdGF0dXMgb2YgdGhlIHRlc3Qg
aW4gdGhlIG91dHB1dCBpcyBhIHBhc3MgYmVjYXVzZSB0aGUgc3VidGVzdAogICAgICMgZmFpbHVy
ZXMgd2VyZSBhbGwgZXhwZWN0ZWQuCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAi
UEFTUyIKKyAgICBhc3NlcnQgdGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAKIAogZGVm
IHRlc3RfdW5leHBlY3RlZF9zdWJ0ZXN0X3Bhc3MoY2FwZmQpOgpAQCAtMjk2LDEwICszMDIsMTQg
QEAgZGVmIHRlc3RfdW5leHBlY3RlZF9zdWJ0ZXN0X3Bhc3MoY2FwZmQpOgogICAgIG91dHB1dF9q
c29uID0ganNvbi5sb2FkKG91dHB1dCkKIAogICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRl
c3RzIl1bInQxIl0KLSAgICB0MV9sb2cgPSB0ZXN0X29ialsiYXJ0aWZhY3RzIl1bImxvZyJdCi0g
ICAgYXNzZXJ0IHQxX2xvZyA9PSAiW1BBU1MgZXhwZWN0ZWQgRkFJTF0gdDFfYTogdDFfYV9tZXNz
YWdlXG4iCi0gICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwgd2Ug
ZmFpbCB0aGUgdGVzdC4KKyAgICB0MV9hcnRpZmFjdHMgPSB0ZXN0X29ialsiYXJ0aWZhY3RzIl0K
KyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJsb2ciXSA9PSBbIltQQVNTIGV4cGVjdGVkIEZBSUxd
IHQxX2E6IHQxX2FfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfc3Vi
dGVzdF9mYWlsdXJlIl0gPT0gWyJ0cnVlIl0KKyAgICAjIFNpbmNlIHRoZSBzdWJ0ZXN0IHN0YXR1
cyBpcyB1bmV4cGVjdGVkLCB3ZSBmYWlsIHRoZSB0ZXN0LiBCdXQgd2UgcmVwb3J0CisgICAgIyB3
cHRfYWN0dWFsX3N0YXR1cyBhcyBhbiBhcnRpZmFjdAorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNb
IndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNTIl0KICAgICBhc3NlcnQgdGVzdF9vYmpbImFj
dHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFT
UyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdHRlciBjbGVhbmVkIHVwIGl0cyBp
bnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEiIG5vdCBpbiBmb3JtYXR0ZXIudGVzdHNfd2l0
aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTM2Nyw2ICszNzcsMTQ0IEBAIGRlZiB0ZXN0X3VuZXhwZWN0
ZWRfdGVzdF9mYWlsKGNhcGZkKToKICAgICAjIE9LLT5QQVNTCiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
WyJhY3R1YWwiXSA9PSAiRkFJTCIKICAgICBhc3NlcnQgdGVzdF9vYmpbImV4cGVjdGVkIl0gPT0g
IlBBU1MiCi0gICAgIyAuLmFuZCB0aGlzIHRlc3Qgc2hvdWxkIG5vdCBiZSBhIHJlZ3Jlc3Npb24g
bm9yIHVuZXhwZWN0ZWQKKyAgICAjIC4uYW5kIHRoaXMgdGVzdCBzaG91bGQgYmUgYSByZWdyZXNz
aW9uIGFuZCB1bmV4cGVjdGVkCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJpc19yZWdyZXNzaW9uIl0g
aXMgVHJ1ZQorICAgIGFzc2VydCB0ZXN0X29ialsiaXNfdW5leHBlY3RlZCJdIGlzIFRydWUKKwor
CitkZWYgdGVzdF9mbGFreV90ZXN0X2V4cGVjdGVkKGNhcGZkKToKKyAgICAjIENoZWNrIHRoYXQg
YSBmbGFreSB0ZXN0IHdpdGggbXVsdGlwbGUgcG9zc2libGUgc3RhdHVzZXMgaXMgc2VlbiBhcwor
ICAgICMgZXhwZWN0ZWQgaWYgaXRzIGFjdHVhbCBzdGF0dXMgaXMgb25lIG9mIHRoZSBwb3NzaWJs
ZSBvbmVzLgorCisgICAgIyBzZXQgdXAgdGhlIGhhbmRsZXIuCisgICAgb3V0cHV0ID0gU3RyaW5n
SU8oKQorICAgIGxvZ2dlciA9IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigidGVzdF9h
IikKKyAgICBsb2dnZXIuYWRkX2hhbmRsZXIoaGFuZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQs
IENocm9taXVtRm9ybWF0dGVyKCkpKQorCisgICAgIyBSdW4gYSB0ZXN0IHRoYXQgaXMga25vd24g
dG8gYmUgZmxha3kKKyAgICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwg
dGltZT0xMjMpCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9l
bmQoInQxIiwgc3RhdHVzPSJFUlJPUiIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVu
dD1bIkVSUk9SIiwgIlRJTUVPVVQiXSkKKyAgICBsb2dnZXIuc3VpdGVfZW5kKCkKKworICAgICMg
Y2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9zdGRlcnIKKyAgICAjIChub3RlIHRo
YXQgbW96bG9nIG91dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgdG8gc3RkZXJyISkK
KyAgICBjYXB0dXJlZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQorICAgIGFzc2VydCBjYXB0dXJlZC5v
dXQgPT0gIiIKKyAgICBhc3NlcnQgY2FwdHVyZWQuZXJyID09ICIiCisKKyAgICAjIGNoZWNrIHRo
ZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAgICBvdXRwdXQuc2VlaygwKQorICAg
IG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0cHV0
X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICAjIFRoZSB0ZXN0J3Mgc3RhdHVzZXMgYXJlIGFsbCBt
YXBwZWQsIGNoYW5naW5nIEVSUk9SLT5GQUlMIGFuZCBPSy0+UEFTUworICAgIGFzc2VydCB0ZXN0
X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisgICAgIyBBbGwgdGhlIHBvc3NpYmxlIHN0YXR1c2Vz
IGFyZSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgaW50byBleHBlY3RlZC4KKyAgICBhc3NlcnQgdGVz
dF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MgRkFJTCBUSU1FT1VUIgorICAgICMgLi4udGhpcyBp
cyBub3QgYSByZWdyZXNzaW9uIG9yIHVuZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1
cyBpcyBvbmUKKyAgICAjIG9mIHRoZSBleHBlY3RlZCBvbmVzCisgICAgYXNzZXJ0ICJpc19yZWdy
ZXNzaW9uIiBub3QgaW4gdGVzdF9vYmoKKyAgICBhc3NlcnQgImlzX3VuZXhwZWN0ZWQiIG5vdCBp
biB0ZXN0X29iagorCisKK2RlZiB0ZXN0X2ZsYWt5X3Rlc3RfdW5leHBlY3RlZChjYXBmZCk6Cisg
ICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRoIG11bHRpcGxlIHBvc3NpYmxlIHN0YXR1
c2VzIGlzIHNlZW4gYXMKKyAgICAjIHVuZXhwZWN0ZWQgaWYgaXRzIGFjdHVhbCBzdGF0dXMgaXMg
Tk9UIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMgc2V0IHVwIHRoZSBoYW5kbGVy
LgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVkbG9nLlN0
cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhhbmRsZXJz
LlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAgICMgUnVu
IGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0
KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0YXJ0KCJ0
MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBlY3RlZD0i
T0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJUSU1FT1VUIl0pCisgICAgbG9nZ2VyLnN1aXRlX2Vu
ZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisg
ICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5n
IHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3Nl
cnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisg
ICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0
LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0
X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgdGVzdCdzIHN0YXR1
c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBhbmQgT0stPlBBU1MKKyAg
ICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgICMgQWxsIHRoZSBwb3Nz
aWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGludG8gZXhwZWN0ZWQuCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIFRJTUVPVVQiCisgICAgIyAu
Li50aGlzIGlzIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3RlZCBiZWNhdXNlIHRoZSBhY3R1YWwg
c3RhdHVzIGlzIG5vdAorICAgICMgb25lIG9mIHRoZSBleHBlY3RlZCBvbmVzCiAgICAgYXNzZXJ0
IHRlc3Rfb2JqWyJpc19yZWdyZXNzaW9uIl0gaXMgVHJ1ZQogICAgIGFzc2VydCB0ZXN0X29ialsi
aXNfdW5leHBlY3RlZCJdIGlzIFRydWUKKworCitkZWYgdGVzdF9wcmVjb25kaXRpb25fZmFpbGVk
KGNhcGZkKToKKyAgICAjIENoZWNrIHRoYXQgYSBmYWlsZWQgcHJlY29uZGl0aW9uIGdldHMgcHJv
cGVybHkgaGFuZGxlZC4KKworICAgICMgc2V0IHVwIHRoZSBoYW5kbGVyLgorICAgIG91dHB1dCA9
IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIo
InRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhhbmRsZXJzLlN0cmVhbUhhbmRsZXIo
b3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAgICMgUnVuIGEgdGVzdCB3aXRoIGEg
cHJlY29uZGl0aW9uIGZhaWx1cmUKKyAgICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5f
aW5mbz17fSwgdGltZT0xMjMpCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dn
ZXIudGVzdF9lbmQoInQxIiwgc3RhdHVzPSJQUkVDT05ESVRJT05fRkFJTEVEIiwgZXhwZWN0ZWQ9
Ik9LIikKKyAgICBsb2dnZXIuc3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qg
b3V0cHV0IHRvIHN0ZG91dC9zdGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMg
ZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNh
cGZkLnJlYWRvdXRlcnIoKQorICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3Nl
cnQgY2FwdHVyZWQuZXJyID09ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9m
IHRoZSBmb3JtYXR0ZXIKKyAgICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNv
bi5sb2FkKG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQx
Il0KKyAgICAjIFRoZSBwcmVjb25kaXRpb24gZmFpbHVyZSBzaG91bGQgbWFwIHRvIEZBSUwgc3Rh
dHVzLCBidXQgd2Ugc2hvdWxkIGFsc28KKyAgICAjIGhhdmUgYW4gYXJ0aWZhY3QgY29udGFpbmlu
ZyB0aGUgb3JpZ2luYWwgUFJFQ09ORElUSU9OX0ZBSUxFRCBzdGF0dXMuCisgICAgYXNzZXJ0IHRl
c3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFydGlmYWN0
cyJdWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUFJFQ09ORElUSU9OX0ZBSUxFRCJdCisgICAg
IyAuLi50aGlzIGlzIGFuIHVuZXhwZWN0ZWQgcmVncmVzc2lvbiBiZWNhdXNlIHdlIGV4cGVjdGVk
IGEgcGFzcyBidXQgZmFpbGVkCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJpc19yZWdyZXNzaW9uIl0g
aXMgVHJ1ZQorICAgIGFzc2VydCB0ZXN0X29ialsiaXNfdW5leHBlY3RlZCJdIGlzIFRydWUKKwor
CitkZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRlbnRfZW1wdHkoY2FwZmQpOgorICAgICMgSWYgdGhl
IGtub3duX2ludGVybWl0dGVudCBsaXN0IGlzIGVtcHR5LCB3ZSB3YW50IHRvIGVuc3VyZSB3ZSBk
b24ndCBhcHBlbmQKKyAgICAjIGFueSBleHRyYW5lb3VzIGNoYXJhY3RlcnMgdG8gdGhlIG91dHB1
dC4KKworICAgICMgc2V0IHVwIHRoZSBoYW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkK
KyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisg
ICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhhbmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJv
bWl1bUZvcm1hdHRlcigpKSkKKworICAgICMgUnVuIGEgdGVzdCBhbmQgaW5jbHVkZSBhbiBlbXB0
eSBrbm93bl9pbnRlcm1pdHRlbnQgbGlzdAorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0s
IHJ1bl9pbmZvPXt9LCB0aW1lPTEyMykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAg
IGxvZ2dlci50ZXN0X2VuZCgidDEiLCBzdGF0dXM9Ik9LIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25f
aW50ZXJtaXR0ZW50PVtdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBu
b3RoaW5nIGdvdCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3ps
b2cgb3V0cHV0cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNh
cHR1cmVkID0gY2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAi
IgorICAgIGFzc2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVh
bCBvdXRwdXQgb2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0
X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsi
dGVzdHMiXVsidDEiXQorICAgICMgQm90aCBhY3R1YWwgYW5kIGV4cGVjdGVkIHN0YXR1c2VzIGdl
dCBtYXBwZWQgdG8gUGFzcy4gTm8gZXh0cmEgd2hpdGVzcGFjZQorICAgICMgYW55d2hlcmUuCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiUEFTUyIKKyAgICBhc3NlcnQgdGVzdF9v
YmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1
bWVudHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg4N2Nm
NGZkYTcyNDI2Yjg5MjEzY2M0MDM3Zjc0NWNlNTIzMjk4MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9pbnN0cnVtZW50cy5weQpAQCAtMCwwICsxLDExNyBAQAoraW1wb3J0IHRpbWUK
K2ltcG9ydCB0aHJlYWRpbmcKK2Zyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBRdWV1ZQorCisi
IiJJbnN0cnVtZW50YXRpb24gZm9yIG1lYXN1cmluZyBoaWdoLWxldmVsIHRpbWUgc3BlbnQgb24g
dmFyaW91cyB0YXNrcyBpbnNpZGUgdGhlIHJ1bm5lci4KKworVGhpcyBpcyBsb3dlciBmaWRlbGl0
eSB0aGFuIGFuIGFjdHVhbCBwcm9maWxlLCBidXQgYWxsb3dzIGN1c3RvbSBkYXRhIHRvIGJlIGNv
bnNpZGVyZWQsCitzbyB0aGF0IHdlIGNhbiBzZWUgdGhlIHRpbWUgc3BlbnQgaW4gc3BlY2lmaWMg
dGVzdHMgYW5kIHRlc3QgZGlyZWN0b3JpZXMuCisKKworSW5zdHJ1bWVudHMgYXJlIGludGVuZGVk
IHRvIGJlIHVzZWQgYXMgY29udGV4dCBtYW5hZ2VycyB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2Yg
X19lbnRlcl9fCitjb250YWluaW5nIHRoZSB1c2VyLWZhY2luZyBBUEkgZS5nLgorCit3aXRoIElu
c3RydW1lbnQoKmFyZ3MpIGFzIHJlY29yZGluZzoKKyAgICByZWNvcmRpbmcuc2V0KFsiaW5pdCJd
KQorICAgIGRvX2luaXQoKQorICAgIHJlY29yZGluZy5wYXVzZSgpCisgICAgZm9yIHRocmVhZCBp
biB0ZXN0X3RocmVhZHM6CisgICAgICAgdGhyZWFkLnN0YXJ0KHJlY29yZGluZywgKmFyZ3MpCisg
ICAgZm9yIHRocmVhZCBpbiB0ZXN0X3RocmVhZHM6CisgICAgICAgdGhyZWFkLmpvaW4oKQorICAg
IHJlY29yZGluZy5zZXQoWyJ0ZWFyZG93biJdKSAgICMgdW4tcGF1c2VzIHRoZSBJbnN0cnVtZW50
CisgICAgZG9fdGVhcmRvd24oKQorIiIiCisKK2NsYXNzIE51bGxJbnN0cnVtZW50KG9iamVjdCk6
CisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgICIiIlNldCB0aGUgY3VycmVudCB0
YXNrIHRvIHN0YWNrCisKKyAgICAgICAgOnBhcmFtIHN0YWNrOiBBIGxpc3Qgb2Ygc3RyaW5ncyBk
ZWZpbmluZyB0aGUgY3VycmVudCB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGFy
ZSBpbnRlcnByZXRlZCBsaWtlIGEgc3RhY2sgdHJhY2Ugc28gdGhhdCBbImZvbyJdIGFuZAorICAg
ICAgICAgICAgICAgICAgICAgIFsiZm9vIiwgImJhciJdIGJvdGggc2hvdyB1cCBhcyBkZXNjZW5k
YW50cyBvZiAiZm9vIgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIHBhdXNl
KHNlbGYpOgorICAgICAgICAiIiJTdG9wIHJlY29yZGluZyBhIHRhc2sgb24gdGhlIGN1cnJlbnQg
dGhyZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgdGhyZWFkCisgICAgICAgIGlzIHB1cmVseSB3
YWl0aW5nIG9uIHRoZSByZXN1bHRzIG9mIG90aGVyIHRocmVhZHMiIiIKKyAgICAgICAgcGFzcwor
CisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRl
ZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4KKworCitj
bGFzcyBJbnN0cnVtZW50V3JpdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
ZXVlKToKKyAgICAgICAgc2VsZi5xdWV1ZSA9IHF1ZXVlCisKKyAgICBkZWYgc2V0KHNlbGYsIHN0
YWNrKToKKyAgICAgICAgc3RhY2suaW5zZXJ0KDAsIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgp
Lm5hbWUpCisgICAgICAgIHN0YWNrID0gc2VsZi5fY2hlY2tfc3RhY2soc3RhY2spCisgICAgICAg
IHNlbGYucXVldWUucHV0KCgic2V0IiwgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQs
IHRpbWUudGltZSgpLCBzdGFjaykpCisKKyAgICBkZWYgcGF1c2Uoc2VsZik6CisgICAgICAgIHNl
bGYucXVldWUucHV0KCgicGF1c2UiLCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5pZGVudCwg
dGltZS50aW1lKCksIE5vbmUpKQorCisgICAgZGVmIF9jaGVja19zdGFjayhzZWxmLCBzdGFjayk6
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHN0YWNrLCAodHVwbGUsIGxpc3QpKQorICAgICAg
ICByZXR1cm4gW2l0ZW0ucmVwbGFjZSgiICIsICJfIikgZm9yIGl0ZW0gaW4gc3RhY2tdCisKKwor
Y2xhc3MgSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3Bh
dGgpOgorICAgICAgICAiIiJJbnN0cnVtZW50IHRoYXQgY29sbGVjdHMgZGF0YSBmcm9tIG11bHRp
cGxlIHRocmVhZHMgYW5kIHN1bXMgdGhlIHRpbWUgaW4gZWFjaAorICAgICAgICB0aHJlYWQuIFRo
ZSBvdXRwdXQgaXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZCBieSBmbGFtZWdyYXBoLnBsIHRvIGVu
YWJsZSB2aXN1YWxpc2F0aW9uCisgICAgICAgIG9mIHRoZSB0aW1lIHNwZW50IGluIGVhY2ggdGFz
ay4KKworICAgICAgICA6cGFyYW0gZmlsZV9wYXRoOiAtIFRoZSBwYXRoIG9uIHdoaWNoIHRvIHdy
aXRlIGluc3RydW1lbnQgb3V0cHV0LiBBbnkgZXhpc3RpbmcgZmlsZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0IHRoZSBwYXRoIHdpbGwgYmUgb3ZlcndyaXR0ZW4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYucGF0aCA9IGZpbGVfcGF0aAorICAgICAgICBzZWxmLnF1ZXVlID0gTm9u
ZQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBOb25lCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9
IE5vbmUKKyAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisKKyAgICBkZWYgX19lbnRlcl9fKHNl
bGYpOgorICAgICAgICBhc3NlcnQgc2VsZi50aHJlYWQgaXMgTm9uZQorICAgICAgICBhc3NlcnQg
c2VsZi5xdWV1ZSBpcyBOb25lCisgICAgICAgIHNlbGYucXVldWUgPSBRdWV1ZSgpCisgICAgICAg
IHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5ydW4pCisgICAgICAg
IHNlbGYudGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIEluc3RydW1lbnRXcml0ZXIoc2Vs
Zi5xdWV1ZSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAg
ICAgICBzZWxmLnF1ZXVlLnB1dCgoInN0b3AiLCBOb25lLCB0aW1lLnRpbWUoKSwgTm9uZSkpCisg
ICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKKyAg
ICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIGtu
b3duX2NvbW1hbmRzID0geyJzdG9wIiwgInBhdXNlIiwgInNldCJ9CisgICAgICAgIHdpdGggb3Bl
bihzZWxmLnBhdGgsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHRocmVhZF9kYXRhID0ge30KKyAg
ICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29tbWFuZCwgdGhyZWFkLCB0
aW1lX3N0YW1wLCBzdGFjayA9IHNlbGYucXVldWUuZ2V0KCkKKyAgICAgICAgICAgICAgICBhc3Nl
cnQgY29tbWFuZCBpbiBrbm93bl9jb21tYW5kcworCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBh
cmUgZG9uZSByZWNvcmRpbmcsIGR1bXAgdGhlIGluZm9ybWF0aW9uIGZyb20gYWxsIHRocmVhZHMg
dG8gdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSBleGl0aW5nLiBPdGhlcndpc2Ug
Zm9yIGVpdGhlciAnc2V0JyBvciAncGF1c2UnIHdlIG9ubHkgbmVlZCB0byBkdW1wCisgICAgICAg
ICAgICAgICAgIyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjdXJyZW50IHN0YWNrIChpZiBhbnkpIHRo
YXQgd2FzIHJlY29yZGluZyBvbiB0aGUgcmVwb3J0aW5nCisgICAgICAgICAgICAgICAgIyB0aHJl
YWQgKGFzIHRoYXQgc3RhY2sgaXMgbm8gbG9uZ2VyIGFjdGl2ZSkuCisgICAgICAgICAgICAgICAg
aXRlbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIGNvbW1hbmQgPT0gInN0b3AiOgorICAgICAg
ICAgICAgICAgICAgICBpdGVtcyA9IHRocmVhZF9kYXRhLnZhbHVlcygpCisgICAgICAgICAgICAg
ICAgZWxpZiB0aHJlYWQgaW4gdGhyZWFkX2RhdGE6CisgICAgICAgICAgICAgICAgICAgIGl0ZW1z
LmFwcGVuZCh0aHJlYWRfZGF0YS5wb3AodGhyZWFkKSkKKyAgICAgICAgICAgICAgICBmb3Igb3V0
cHV0X3N0YWNrLCBzdGFydF90aW1lIGluIGl0ZW1zOgorICAgICAgICAgICAgICAgICAgICBmLndy
aXRlKCIlcyAlZFxuIiAlICgiOyIuam9pbihvdXRwdXRfc3RhY2spLCBpbnQoMTAwMCAqICh0aW1l
X3N0YW1wIC0gc3RhcnRfdGltZSkpKSkKKworICAgICAgICAgICAgICAgIGlmIGNvbW1hbmQgPT0g
InNldCI6CisgICAgICAgICAgICAgICAgICAgIHRocmVhZF9kYXRhW3RocmVhZF0gPSAoc3RhY2ss
IHRpbWVfc3RhbXApCisgICAgICAgICAgICAgICAgZWxpZiBjb21tYW5kID09ICJzdG9wIjoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVz
dGV4cGVjdGVkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggZWFl
ODViMWY2NjYxYTY3ZGZmNTllZjc4YTllZDYyN2UzZTM2MDNkOC4uMzFjNTdlOWNiNzM0Zjc0MWU0
Mjc1ZTc0ZThmY2Y3Y2QwYWQ0ZWUzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0
ZXhwZWN0ZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKQEAgLTEs
NiArMSw4IEBACiBpbXBvcnQgb3MKLWZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQg
dXJsam9pbgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gc2l4IGltcG9ydCBz
dHJpbmdfdHlwZXMsIHRleHRfdHlwZQorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9y
dCB1cmxqb2luCisKIAogZnJvbSAud3B0bWFuaWZlc3QuYmFja2VuZHMgaW1wb3J0IHN0YXRpYwog
ZnJvbSAud3B0bWFuaWZlc3QuYmFja2VuZHMuYmFzZSBpbXBvcnQgTWFuaWZlc3RJdGVtCkBAIC0x
NSw2ICsxNyw3IEBAIEVhY2ggVGVzdE5vZGUgaGFzIHplcm8gb3IgbW9yZSBTdWJ0ZXN0Tm9kZSBj
aGlsZHJlbiwgb25lIGZvciBlYWNoCiBrbm93biBzdWJ0ZXN0IG9mIHRoZSB0ZXN0LgogIiIiCiAK
KwogZGVmIGRhdGFfY2xzX2dldHRlcihvdXRwdXRfbm9kZSwgdmlzaXRlZF9ub2RlKToKICAgICAj
IHZpc2l0ZWRfbm9kZSBpcyBpbnRlbnRpb25hbGx5IHVudXNlZAogICAgIGlmIG91dHB1dF9ub2Rl
IGlzIE5vbmU6CkBAIC0yOSw3ICszMiw3IEBAIGRlZiBkYXRhX2Nsc19nZXR0ZXIob3V0cHV0X25v
ZGUsIHZpc2l0ZWRfbm9kZSk6CiBkZWYgYm9vbF9wcm9wKG5hbWUsIG5vZGUpOgogICAgICIiIkJv
b2xlYW4gcHJvcGVydHkiIiIKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBub2RlLmdldChuYW1l
KQorICAgICAgICByZXR1cm4gYm9vbChub2RlLmdldChuYW1lKSkKICAgICBleGNlcHQgS2V5RXJy
b3I6CiAgICAgICAgIHJldHVybiBOb25lCiAKQEAgLTQ2LDE4ICs0OSwyOCBAQCBkZWYgbGlzdF9w
cm9wKG5hbWUsIG5vZGUpOgogICAgICIiIkxpc3QgcHJvcGVydHkiIiIKICAgICB0cnk6CiAgICAg
ICAgIGxpc3RfcHJvcCA9IG5vZGUuZ2V0KG5hbWUpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGlz
dF9wcm9wLCBiYXNlc3RyaW5nKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X3Byb3AsIHN0
cmluZ190eXBlcyk6CiAgICAgICAgICAgICByZXR1cm4gW2xpc3RfcHJvcF0KICAgICAgICAgcmV0
dXJuIGxpc3QobGlzdF9wcm9wKQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcmV0dXJu
IFtdCiAKIAorZGVmIHN0cl9wcm9wKG5hbWUsIG5vZGUpOgorICAgIHRyeToKKyAgICAgICAgcHJv
cCA9IG5vZGUuZ2V0KG5hbWUpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHByb3AsIHN0cmlu
Z190eXBlcyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIHJldHVybiBw
cm9wCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisKIGRlZiB0
YWdzKG5vZGUpOgogICAgICIiIlNldCBvZiB0YWdzIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQgdG8g
dGhlIHRlc3QiIiIKICAgICB0cnk6CiAgICAgICAgIHZhbHVlID0gbm9kZS5nZXQoInRhZ3MiKQot
ICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlm
IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CiAgICAgICAgICAgICByZXR1cm4ge3ZhbHVl
fQogICAgICAgICByZXR1cm4gc2V0KHZhbHVlKQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTY2
LDcgKzc5LDcgQEAgZGVmIHRhZ3Mobm9kZSk6CiAKIGRlZiBwcmVmcyhub2RlKToKICAgICBkZWYg
dmFsdWUoaW5pX3ZhbHVlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpbmlfdmFsdWUsIChzdHIs
IHVuaWNvZGUpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbmlfdmFsdWUsIHRleHRfdHlwZSk6
CiAgICAgICAgICAgICByZXR1cm4gdHVwbGUocHJlZl9waWVjZS5zdHJpcCgpIGZvciBwcmVmX3Bp
ZWNlIGluIGluaV92YWx1ZS5zcGxpdCgnOicsIDEpKQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgIyB0aGlzIHNob3VsZCBiZSB0aGluZ3MgbGlrZSBAUmVzZXQsIHdoaWNoIGFyZSBhcHBhcmVu
dGx5IHR5cGUgJ29iamVjdCcKQEAgLTc0LDcgKzg3LDcgQEAgZGVmIHByZWZzKG5vZGUpOgogCiAg
ICAgdHJ5OgogICAgICAgICBub2RlX3ByZWZzID0gbm9kZS5nZXQoInByZWZzIikKLSAgICAgICAg
aWYgdHlwZShub2RlX3ByZWZzKSBpbiAoc3RyLCB1bmljb2RlKToKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShub2RlX3ByZWZzLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcnYgPSBkaWN0KHZhbHVl
KG5vZGVfcHJlZnMpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcnYgPSBkaWN0KHZhbHVl
KGl0ZW0pIGZvciBpdGVtIGluIG5vZGVfcHJlZnMpCkBAIC04Niw3ICs5OSw3IEBAIGRlZiBwcmVm
cyhub2RlKToKIGRlZiBzZXRfcHJvcChuYW1lLCBub2RlKToKICAgICB0cnk6CiAgICAgICAgIG5v
ZGVfaXRlbXMgPSBub2RlLmdldChuYW1lKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRl
bXMsIChzdHIsIHVuaWNvZGUpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0
ZXh0X3R5cGUpOgogICAgICAgICAgICAgcnYgPSB7bm9kZV9pdGVtc30KICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJ2ID0gc2V0KG5vZGVfaXRlbXMpCkBAIC05OSw3ICsxMTIsNyBAQCBkZWYg
bGVha190aHJlc2hvbGQobm9kZSk6CiAgICAgcnYgPSB7fQogICAgIHRyeToKICAgICAgICAgbm9k
ZV9pdGVtcyA9IG5vZGUuZ2V0KCJsZWFrLXRocmVzaG9sZCIpCi0gICAgICAgIGlmIGlzaW5zdGFu
Y2Uobm9kZV9pdGVtcywgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5v
ZGVfaXRlbXMsIHRleHRfdHlwZSk6CiAgICAgICAgICAgICBub2RlX2l0ZW1zID0gW25vZGVfaXRl
bXNdCiAgICAgICAgIGZvciBpdGVtIGluIG5vZGVfaXRlbXM6CiAgICAgICAgICAgICBwcm9jZXNz
LCB2YWx1ZSA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTE1Niw3ICsxNjksNyBAQCBkZWYgZnV6
enlfcHJvcChub2RlKToKICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CiAgICAg
ICAgIHZhbHVlID0gW3ZhbHVlXQogICAgIGZvciBpdGVtIGluIHZhbHVlOgotICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShpdGVtLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlmIG5vdCBpc2lu
c3RhbmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICBydi5hcHBlbmQoaXRlbSkKICAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHBhcnRzID0gaXRlbS5yc3BsaXQoIjoiLCAxKQpA
QCAtMjc5LDYgKzI5MiwxMCBAQCBjbGFzcyBFeHBlY3RlZE1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6
CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMoc2VsZikKIAorICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAgICAgICByZXR1cm4g
Ym9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9wZXJ0eQogICAgIGRl
ZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJvcCgibHNhbi1hbGxv
d2VkIiwgc2VsZikKQEAgLTMwNyw2ICszMjQsMTAgQEAgY2xhc3MgRXhwZWN0ZWRNYW5pZmVzdChN
YW5pZmVzdEl0ZW0pOgogICAgIGRlZiBrbm93bl9pbnRlcm1pdHRlbnQoc2VsZik6CiAgICAgICAg
IHJldHVybiBsaXN0X3Byb3AoImV4cGVjdGVkIiwgc2VsZilbMTpdCiAKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgaW1wbGVtZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3Ry
X3Byb3AoImltcGxlbWVudGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgRGlyZWN0b3J5
TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBAcHJvcGVydHkKQEAgLTMzNyw2ICszNTgsMTAg
QEAgY2xhc3MgRGlyZWN0b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgcHJlZnMo
c2VsZik6CiAgICAgICAgIHJldHVybiBwcmVmcyhzZWxmKQogCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sX3Byb3AoImxzYW4t
ZGlzYWJsZWQiLCBzZWxmKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNldF9wcm9wKCJsc2FuLWFsbG93ZWQiLCBzZWxmKQpAQCAt
MzU3LDYgKzM4MiwxMCBAQCBjbGFzcyBEaXJlY3RvcnlNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
ICAgIGRlZiBmdXp6eShzZWxmKToKICAgICAgICAgcmV0dXJuIGZ1enp5X3Byb3Aoc2VsZikKIAor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMoc2VsZik6CisgICAg
ICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3RhdHVzIiwgc2VsZikKKwogCiBj
bGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2Rl
LCAqKmt3YXJncyk6CkBAIC00MTQsNiArNDQzLDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0
SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMoc2VsZikK
IAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9wZXJ0eQog
ICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJvcCgibHNh
bi1hbGxvd2VkIiwgc2VsZikKQEAgLTQ0Miw2ICs0NzUsMTAgQEAgY2xhc3MgVGVzdE5vZGUoTWFu
aWZlc3RJdGVtKToKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICBy
ZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIsIHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9w
cm9wKCJpbXBsZW1lbnRhdGlvbi1zdGF0dXMiLCBzZWxmKQorCiAgICAgZGVmIGFwcGVuZChzZWxm
LCBub2RlKToKICAgICAgICAgIiIiQWRkIGEgc3VidGVzdCB0byB0aGUgY3VycmVudCB0ZXN0CiAK
QEAgLTQ3OCw3ICs1MTUsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3QsIHRlc3Rf
cGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvKToKICAgICAiIiIKICAgICBtYW5pZmVzdF9wYXRoID0g
ZXhwZWN0ZWQuZXhwZWN0ZWRfcGF0aChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5
OgotICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBv
cGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
LmNvbXBpbGUoZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2Nsc19nZXR0ZXI9ZGF0YV9j
bHNfZ2V0dGVyLApAQCAtNDk3LDcgKzUzNCw3IEBAIGRlZiBnZXRfZGlyX21hbmlmZXN0KHBhdGgs
IHJ1bl9pbmZvKToKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBzaG91bGQgYmUgY29tcHV0
ZWQuCiAgICAgIiIiCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAg
ICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljLmNvbXBpbGUoZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2Nsc19nZXR0ZXI9bGFt
YmRhIHgseTogRGlyZWN0b3J5TWFuaWZlc3QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFu
aWZlc3RpbmNsdWRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQppbmRleCBk
MzAyODMxYTU3YWJiYWFkZDc1ZmU0OWUwOTQ0ODJkYzE0MjIzZWEzLi43OWI1YjE5YjNhM2Y2MTdl
NWRkNDAxMTgwNDJkYTBiM2VhOGU0MTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZl
c3RpbmNsdWRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKQEAgLTYs
NiArNiw3IEBAIGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkLgogIiIiCiBpbXBvcnQgZ2xvYgogaW1w
b3J0IG9zCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIu
cGFyc2UgaW1wb3J0IHVybHBhcnNlLCB1cmxzcGxpdAogCiBmcm9tIC53cHRtYW5pZmVzdC5ub2Rl
IGltcG9ydCBEYXRhTm9kZQpAQCAtOTQsNyArOTUsNyBAQCBjbGFzcyBJbmNsdWRlTWFuaWZlc3Qo
TWFuaWZlc3RJdGVtKToKICAgICAgICAgaWYgcGF0aHM6CiAgICAgICAgICAgICB1cmxzID0gW10K
ICAgICAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgICAgICAgICAgIGZvciBtYW5p
ZmVzdCwgZGF0YSBpbiB0ZXN0X21hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAg
ICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gaXRlcml0ZW1zKHRlc3RfbWFuaWZlc3RzKToKICAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IG9zLnBhdGgucmVscGF0aChwYXRoLCBkYXRhWyJ0ZXN0c19wYXRoIl0pCiAgICAgICAgICAg
ICAgICAgICAgIGl0ZXJhdG9yID0gbWFuaWZlc3QuaXRlcnBhdGggaWYgb3MucGF0aC5pc2ZpbGUo
cGF0aCkgZWxzZSBtYW5pZmVzdC5pdGVyZGlyCkBAIC0xNTAsNSArMTUxLDUgQEAgY2xhc3MgSW5j
bHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAKIAogZGVmIGdldF9tYW5pZmVzdChtYW5pZmVz
dF9wYXRoKToKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCkgYXMgZjoKKyAgICB3aXRoIG9w
ZW4obWFuaWZlc3RfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbmFs
LmNvbXBpbGUoZiwgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LCB5OiBJbmNsdWRlTWFuaWZlc3Qp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3R1cGRhdGUucHkKaW5kZXggYWY5YWYxOGQ5MDcxNWQ0M2JiY2QyYWU0N2NlNzYy
NzViYjBlMTU3Ny4uMTI5NDU3YjNmZDEyNzBkYzY2MDI5ZDNlYTg3M2QzNTM3MTRhYTYwNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdHVwZGF0ZS5weQpAQCAtMyw3ICszLDcgQEAgaW1wb3J0IG9zCiBmcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0CiBmcm9tIGNvbGxlY3Rp
b25zIGltcG9ydCBuYW1lZHR1cGxlLCBkZWZhdWx0ZGljdCwgZGVxdWUKIGZyb20gbWF0aCBpbXBv
cnQgY2VpbAotZnJvbSBzaXggaW1wb3J0IGl0ZXJrZXlzLCBpdGVydmFsdWVzLCBpdGVyaXRlbXMK
K2Zyb20gc2l4IGltcG9ydCBpbnRlZ2VyX3R5cGVzLCBpdGVya2V5cywgaXRlcnZhbHVlcywgaXRl
cml0ZW1zLCBzdHJpbmdfdHlwZXMsIHRleHRfdHlwZQogCiBmcm9tIC53cHRtYW5pZmVzdCBpbXBv
cnQgc2VyaWFsaXplCiBmcm9tIC53cHRtYW5pZmVzdC5ub2RlIGltcG9ydCAoRGF0YU5vZGUsIENv
bmRpdGlvbmFsTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUsCkBAIC00MTEsNyArNDExLDcgQEAg
Y2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgZm9yIGUgaW4gZXJyb3JzOgog
ICAgICAgICAgICAgaWYgZGlzYWJsZV9pbnRlcm1pdHRlbnQ6CiAgICAgICAgICAgICAgICAgY29u
ZGl0aW9uID0gZS5jb25kLmNoaWxkcmVuWzBdIGlmIGUuY29uZCBlbHNlIE5vbmUKLSAgICAgICAg
ICAgICAgICBtc2cgPSBkaXNhYmxlX2ludGVybWl0dGVudCBpZiBpc2luc3RhbmNlKGRpc2FibGVf
aW50ZXJtaXR0ZW50LCAoc3RyLCB1bmljb2RlKSkgZWxzZSAidW5zdGFibGUiCisgICAgICAgICAg
ICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1pdHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2lu
dGVybWl0dGVudCwgc3RyaW5nX3R5cGVzKyh0ZXh0X3R5cGUsKSkgZWxzZSAidW5zdGFibGUiCiAg
ICAgICAgICAgICAgICAgc2VsZi5ub2RlLnNldCgiZGlzYWJsZWQiLCBtc2csIGNvbmRpdGlvbikK
ICAgICAgICAgICAgICAgICBzZWxmLm5vZGUubmV3X2Rpc2FibGVkID0gVHJ1ZQogICAgICAgICAg
ICAgZWxzZToKQEAgLTUxMyw3ICs1MTMsNyBAQCBjbGFzcyBQcm9wZXJ0eVVwZGF0ZShvYmplY3Qp
OgogICAgICAgICAgICAgdG9wX2xldmVsX3Byb3BzLCBkZXBlbmRlbnRfcHJvcHMgPSBzZWxmLm5v
ZGUucm9vdC5ydW5faW5mb19wcm9wZXJ0aWVzCiAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGll
cyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVydmFs
dWVzKGRlcGVuZGVudF9wcm9wcyk6Ci0gICAgICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMg
fD0gc2V0KGRlcGVuZGVudF9wcm9wcykKKyAgICAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGll
cyB8PSBzZXQoaXRlbSkKICAgICAgICAgICAgIGZvciBjb25kaXRpb24gaW4gY3VycmVudF9jb25k
aXRpb25zOgogICAgICAgICAgICAgICAgIGlmICgobm90IGNvbmRpdGlvbi52YXJpYWJsZXMuaXNz
dWJzZXQodXBkYXRlX3Byb3BlcnRpZXMpIGFuZAogICAgICAgICAgICAgICAgICAgICAgbm90IHJ1
bl9pbmZvX2J5X2NvbmRpdGlvbltjb25kaXRpb25dKSk6CkBAIC03NzQsNyArNzc0LDcgQEAgY2xh
c3MgQXBwZW5kT25seUxpc3RVcGRhdGUoUHJvcGVydHlVcGRhdGUpOgogICAgICAgICBmb3IgaXRl
bSBpbiBuZXc6CiAgICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCAoc3RyLCB1bmljb2Rl
KSk6CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoaXRlbSwgdGV4dF90eXBlKToKICAgICAg
ICAgICAgICAgICBydi5hZGQoaXRlbSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgcnYgfD0gaXRlbQpAQCAtODk3LDEwICs4OTcsMTAgQEAgZGVmIG1ha2VfZXhwcihwcm9wX3Nl
dCwgcmhzKToKIAogCiBkZWYgbWFrZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBp
biAoaW50LCBmbG9hdCwgbG9uZyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90
eXBlcysoZmxvYXQsKSk6CiAgICAgICAgIG5vZGUgPSBOdW1iZXJOb2RlKHZhbHVlKQotICAgIGVs
aWYgdHlwZSh2YWx1ZSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgIG5vZGUgPSBTdHJpbmdO
b2RlKHVuaWNvZGUodmFsdWUpKQorICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90eXBl
KToKKyAgICAgICAgbm9kZSA9IFN0cmluZ05vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlm
IGhhc2F0dHIodmFsdWUsICJfX2l0ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQog
ICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKQEAgLTkwOSwxMCArOTA5LDEwIEBAIGRlZiBtYWtl
X25vZGUodmFsdWUpOgogCiAKIGRlZiBtYWtlX3ZhbHVlX25vZGUodmFsdWUpOgotICAgIGlmIHR5
cGUodmFsdWUpIGluIChpbnQsIGZsb2F0LCBsb25nKToKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVl
LCBpbnRlZ2VyX3R5cGVzKyhmbG9hdCwpKToKICAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh2YWx1
ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGluIChzdHIsIHVuaWNvZGUpOgotICAgICAgICBub2Rl
ID0gVmFsdWVOb2RlKHVuaWNvZGUodmFsdWUpKQorICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
dGV4dF90eXBlKToKKyAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh0ZXh0X3R5cGUodmFsdWUpKQog
ICAgIGVsaWYgaGFzYXR0cih2YWx1ZSwgIl9faXRlcl9fIik6CiAgICAgICAgIG5vZGUgPSBMaXN0
Tm9kZSgpCiAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgpAQCAtOTMxLDcgKzkzMSw3IEBAIGRl
ZiBnZXRfbWFuaWZlc3QobWV0YWRhdGFfcm9vdCwgdGVzdF9wYXRoLCB1cmxfYmFzZSwgcnVuX2lu
Zm9fcHJvcGVydGllcywgdXBkYXRlCiAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIHVybCBmb3Ig
c2VydmluZyB0aGUgdGVzdHMgaW4gdGhpcyBtYW5pZmVzdCIiIgogICAgIG1hbmlmZXN0X3BhdGgg
PSBleHBlY3RlZC5leHBlY3RlZF9wYXRoKG1ldGFkYXRhX3Jvb3QsIHRlc3RfcGF0aCkKICAgICB0
cnk6Ci0gICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoKSBhcyBmOgorICAgICAgICB3aXRo
IG9wZW4obWFuaWZlc3RfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHJ2ID0gY29tcGls
ZShmLCB0ZXN0X3BhdGgsIHVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX3Byb3BlcnRpZXMsIHVwZGF0ZV9pbnRlcm1pdHRlbnQsIHJlbW92ZV9pbnRlcm1pdHRlbnQp
CiAgICAgZXhjZXB0IElPRXJyb3I6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKaW5kZXggYzMyOGRjZWZhNzI1M2RkZWE5NTI1
NDljNzAyNzIzZTk4YjRjYWRjNC4uZGYzMWFjNDBkZThiOGVlNzA4MTNjM2IyZTAzZDE4NjVmNjcy
ZTI5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9tZXRhZGF0YS5weQpAQCAtMSwxMCArMSwxMiBAQAogZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFycmF5CiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0LCBuYW1lZHR1cGxlCiAKIGZyb20gbW96
bG9nIGltcG9ydCBzdHJ1Y3R1cmVkbG9nCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgaW50ZXJuCitm
cm9tIHNpeCBpbXBvcnQgZW5zdXJlX3N0ciwgZW5zdXJlX3RleHQsIGl0ZXJpdGVtcywgaXRlcmtl
eXMsIGl0ZXJ2YWx1ZXMsIHRleHRfdHlwZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IGludGVybiwg
cmFuZ2UKIAogZnJvbSAuIGltcG9ydCBtYW5pZmVzdHVwZGF0ZQogZnJvbSAuIGltcG9ydCB0ZXN0
bG9hZGVyCkBAIC00MywxMSArNDUsMTEgQEAgY2xhc3MgUnVuSW5mbyhvYmplY3QpOgogICAgICAg
ICByZXR1cm4gc2VsZi5jYW5vbmljYWxfcmVwciA9PSBvdGhlci5jYW5vbmljYWxfcmVwcgogCiAg
ICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5k
YXRhLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5kYXRhKToKICAgICAgICAgICAgIHlpZWxkIGtleSwgdmFsdWUKIAogICAgIGRlZiBpdGVtcyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKKyAgICAgICAgcmV0
dXJuIGxpc3QoaXRlcml0ZW1zKHNlbGYpKQogCiAKIGRlZiB1cGRhdGVfZXhwZWN0ZWQodGVzdF9w
YXRocywgc2VydmVfcm9vdCwgbG9nX2ZpbGVfbmFtZXMsCkBAIC0xMjcsNyArMTI5LDcgQEAgZGVm
IHVuZXhwZWN0ZWRfY2hhbmdlcyhtYW5pZmVzdHMsIGNoYW5nZV9kYXRhLCBmaWxlc19jaGFuZ2Vk
KToKICAgICBmaWxlc19jaGFuZ2VkID0gc2V0KGZpbGVzX2NoYW5nZWQpCiAKICAgICByb290X21h
bmlmZXN0ID0gTm9uZQotICAgIGZvciBtYW5pZmVzdCwgcGF0aHMgaW4gbWFuaWZlc3RzLml0ZXJp
dGVtcygpOgorICAgIGZvciBtYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6
CiAgICAgICAgIGlmIHBhdGhzWyJ1cmxfYmFzZSJdID09ICIvIjoKICAgICAgICAgICAgIHJvb3Rf
bWFuaWZlc3QgPSBtYW5pZmVzdAogICAgICAgICAgICAgYnJlYWsKQEAgLTE5OCw3ICsyMDAsNyBA
QCBjbGFzcyBJbnRlcm5lZERhdGEob2JqZWN0KToKICAgICAgICAgcmV0dXJuIG9iagogCiAgICAg
ZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMSwgbGVuKHNlbGYu
X2RhdGFbMF0pKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHNlbGYuX2RhdGFbMF0p
KToKICAgICAgICAgICAgIHlpZWxkIHNlbGYuZ2V0KGkpCiAKIApAQCAtMjM4LDcgKzI0MCw3IEBA
IGRlZiBwYWNrX3Jlc3VsdChkYXRhKToKIGRlZiB1bnBhY2tfcmVzdWx0KGRhdGEpOgogICAgIGlm
IGlzaW5zdGFuY2UoZGF0YSwgaW50KToKICAgICAgICAgcmV0dXJuIChzdGF0dXNfaW50ZXJuLmdl
dChkYXRhKSwgTm9uZSkKLSAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHVuaWNvZGUpOgorICAgIGlm
IGlzaW5zdGFuY2UoZGF0YSwgdGV4dF90eXBlKToKICAgICAgICAgcmV0dXJuIChkYXRhLCBOb25l
KQogICAgICMgVW5wYWNrIG11bHRpcGxlIHN0YXR1c2VzIGludG8gYSB0dXBsZSB0byBiZSB1c2Vk
IGluIHRoZSBSZXN1bHRzIG5hbWVkIHR1cGxlIGJlbG93LAogICAgICMgc2VwYXJhdGluZyBgc3Rh
dHVzYCBhbmQgYGtub3duX2ludGVybWl0dGVudGAuCkBAIC0yNTcsNyArMjU5LDcgQEAgZGVmIGxv
YWRfdGVzdF9kYXRhKHRlc3RfcGF0aHMpOgogICAgIG1hbmlmZXN0cyA9IG1hbmlmZXN0X2xvYWRl
ci5sb2FkKCkKIAogICAgIGlkX3Rlc3RfbWFwID0ge30KLSAgICBmb3IgdGVzdF9tYW5pZmVzdCwg
cGF0aHMgaW4gbWFuaWZlc3RzLml0ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0X21hbmlmZXN0LCBw
YXRocyBpbiBpdGVyaXRlbXMobWFuaWZlc3RzKToKICAgICAgICAgaWRfdGVzdF9tYXAudXBkYXRl
KGNyZWF0ZV90ZXN0X3RyZWUocGF0aHNbIm1ldGFkYXRhX3BhdGgiXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tYW5pZmVzdCkpCiAgICAgcmV0dXJu
IGlkX3Rlc3RfbWFwCkBAIC0yODUsMTAgKzI4NywxMCBAQCBkZWYgdXBkYXRlX3Jlc3VsdHMoaWRf
dGVzdF9tYXAsCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZV9pbnRlcm1pdHRlbnQsCiAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlX2ludGVybWl0dGVudCwKICAgICAgICAgICAgICAgICAgICBy
ZW1vdmVfaW50ZXJtaXR0ZW50KToKLSAgICB0ZXN0X2ZpbGVfaXRlbXMgPSBzZXQoaWRfdGVzdF9t
YXAuaXRlcnZhbHVlcygpKQorICAgIHRlc3RfZmlsZV9pdGVtcyA9IHNldChpdGVydmFsdWVzKGlk
X3Rlc3RfbWFwKSkKIAogICAgIGRlZmF1bHRfZXhwZWN0ZWRfYnlfdHlwZSA9IHt9Ci0gICAgZm9y
IHRlc3RfdHlwZSwgdGVzdF9jbHMgaW4gd3B0dGVzdC5tYW5pZmVzdF90ZXN0X2Nscy5pdGVyaXRl
bXMoKToKKyAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X2NscyBpbiBpdGVyaXRlbXMod3B0dGVzdC5t
YW5pZmVzdF90ZXN0X2Nscyk6CiAgICAgICAgIGlmIHRlc3RfY2xzLnJlc3VsdF9jbHM6CiAgICAg
ICAgICAgICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGVbKHRlc3RfdHlwZSwgRmFsc2UpXSA9IHRl
c3RfY2xzLnJlc3VsdF9jbHMuZGVmYXVsdF9leHBlY3RlZAogICAgICAgICBpZiB0ZXN0X2Nscy5z
dWJ0ZXN0X3Jlc3VsdF9jbHM6CkBAIC0zMjQsOCArMzI2LDExIEBAIGRlZiB3cml0ZV9uZXdfZXhw
ZWN0ZWQobWV0YWRhdGFfcGF0aCwgZXhwZWN0ZWQpOgogICAgICAgICB0bXBfcGF0aCA9IHBhdGgg
KyAiLnRtcCIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBvcGVuKHRtcF9wYXRoLCAi
d2IiKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUobWFuaWZlc3Rfc3RyKQotICAgICAg
ICAgICAgb3MucmVuYW1lKHRtcF9wYXRoLCBwYXRoKQorICAgICAgICAgICAgICAgIGYud3JpdGUo
bWFuaWZlc3Rfc3RyLmVuY29kZSgidXRmOCIpKQorICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mbyA+PSAoMywgMyk6CisgICAgICAgICAgICAgICAgb3MucmVwbGFjZSh0bXBfcGF0aCwgcGF0
aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MucmVuYW1lKHRtcF9wYXRo
LCBwYXRoKQogICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbiwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgog
ICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBfcGF0aCkKQEAg
LTQyNiw3ICs0MzEsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGFjdGlvbl9tYXBbImxzYW5fbGVhayJdKGl0ZW0pCiAKICAgICAgICAgbW96bGVha19kYXRh
ID0gZGF0YS5nZXQoIm1vemxlYWsiLCB7fSkKLSAgICAgICAgZm9yIHNjb3BlLCBzY29wZV9kYXRh
IGluIG1vemxlYWtfZGF0YS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHNjb3BlLCBzY29wZV9k
YXRhIGluIGl0ZXJpdGVtcyhtb3psZWFrX2RhdGEpOgogICAgICAgICAgICAgZm9yIGtleSwgYWN0
aW9uIGluIFsoIm9iamVjdHMiLCAibW96bGVha19vYmplY3QiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCJ0b3RhbCIsICJtb3psZWFrX3RvdGFsIildOgogICAgICAgICAgICAg
ICAgIGZvciBpdGVtIGluIHNjb3BlX2RhdGEuZ2V0KGtleSwgW10pOgpAQCAtNDM4LDcgKzQ0Myw3
IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bl9pbmZv
ID0gcnVuX2luZm9faW50ZXJuLnN0b3JlKFJ1bkluZm8oZGF0YVsicnVuX2luZm8iXSkpCiAKICAg
ICBkZWYgdGVzdF9zdGFydChzZWxmLCBkYXRhKToKLSAgICAgICAgdGVzdF9pZCA9IGludGVybihk
YXRhWyJ0ZXN0Il0uZW5jb2RlKCJ1dGY4IikpCisgICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZW5z
dXJlX3N0cihkYXRhWyJ0ZXN0Il0pKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmlk
X3Rlc3RfbWFwW3Rlc3RfaWRdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0OCw4ICs0
NTMsOCBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi50ZXN0
c192aXNpdGVkW3Rlc3RfaWRdID0gc2V0KCkKIAogICAgIGRlZiB0ZXN0X3N0YXR1cyhzZWxmLCBk
YXRhKToKLSAgICAgICAgdGVzdF9pZCA9IGludGVybihkYXRhWyJ0ZXN0Il0uZW5jb2RlKCJ1dGY4
IikpCi0gICAgICAgIHN1YnRlc3QgPSBpbnRlcm4oZGF0YVsic3VidGVzdCJdLmVuY29kZSgidXRm
OCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkK
KyAgICAgICAgc3VidGVzdCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInN1YnRlc3QiXSkpCiAg
ICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQpCiAgICAgICAg
IGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00NjYsNyArNDcx
LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGlmIGRhdGFbInN0
YXR1cyJdID09ICJTS0lQIjoKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHRlc3RfaWQg
PSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0g
aW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkKICAgICAgICAgdGVzdF9kYXRhID0gc2Vs
Zi5pZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAgICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6
CiAgICAgICAgICAgICByZXR1cm4KQEAgLTQ3OSw3ICs0ODQsNyBAQCBjbGFzcyBFeHBlY3RlZFVw
ZGF0ZXIob2JqZWN0KToKICAgICAgICAgZGVsIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXQog
CiAgICAgZGVmIGFzc2VydGlvbl9jb3VudChzZWxmLCBkYXRhKToKLSAgICAgICAgdGVzdF9pZCA9
IGludGVybihkYXRhWyJ0ZXN0Il0uZW5jb2RlKCJ1dGY4IikpCisgICAgICAgIHRlc3RfaWQgPSBp
bnRlcm4oZW5zdXJlX3N0cihkYXRhWyJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxm
LmlkX3Rlc3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToK
ICAgICAgICAgICAgIHJldHVybgpAQCAtNDkwLDEyICs0OTUsMTUgQEAgY2xhc3MgRXhwZWN0ZWRV
cGRhdGVyKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9mb3Jfc2NvcGUoc2VsZiwgZGF0YSk6CiAg
ICAgICAgIGRpcl9wYXRoID0gZGF0YS5nZXQoInNjb3BlIiwgIi8iKQotICAgICAgICBkaXJfaWQg
PSBpbnRlcm4ob3MucGF0aC5qb2luKGRpcl9wYXRoLCAiX19kaXJfXyIpLnJlcGxhY2Uob3MucGF0
aC5zZXAsICIvIikuZW5jb2RlKCJ1dGY4IikpCisgICAgICAgIGRpcl9pZCA9IGludGVybihlbnN1
cmVfc3RyKG9zLnBhdGguam9pbihkaXJfcGF0aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGgu
c2VwLCAiLyIpKSkKICAgICAgICAgaWYgZGlyX2lkLnN0YXJ0c3dpdGgoIi8iKToKICAgICAgICAg
ICAgIGRpcl9pZCA9IGRpcl9pZFsxOl0KICAgICAgICAgcmV0dXJuIGRpcl9pZCwgc2VsZi5pZF90
ZXN0X21hcFtkaXJfaWRdCiAKICAgICBkZWYgbHNhbl9sZWFrKHNlbGYsIGRhdGEpOgorICAgICAg
ICBpZiBkYXRhWyJzY29wZSJdID09ICIvIjoKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJO
b3QgdXBkYXRpbmcgbHNhbiBhbm5vdGF0aW9ucyBmb3Igcm9vdCBzY29wZSIpCisgICAgICAgICAg
ICByZXR1cm4KICAgICAgICAgZGlyX2lkLCB0ZXN0X2RhdGEgPSBzZWxmLnRlc3RfZm9yX3Njb3Bl
KGRhdGEpCiAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAibHNhbiIsCiAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5ydW5faW5mbywgKGRhdGFbImZyYW1lcyJdLCBkYXRhLmdl
dCgiYWxsb3dlZF9tYXRjaCIpKSkKQEAgLTUwMyw2ICs1MTEsOSBAQCBjbGFzcyBFeHBlY3RlZFVw
ZGF0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRl
KCkKIAogICAgIGRlZiBtb3psZWFrX29iamVjdChzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0
YVsic2NvcGUiXSA9PSAiLyI6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0
aW5nIG1vemxlYWsgYW5ub3RhdGlvbnMgZm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGRpcl9pZCwgdGVzdF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRh
KQogICAgICAgICB0ZXN0X2RhdGEuc2V0KGRpcl9pZCwgTm9uZSwgImxlYWstb2JqZWN0IiwKICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bl9pbmZvLCAoIiVzOiVzIiwgKGRhdGFbInByb2Nl
c3MiXSwgZGF0YVsibmFtZSJdKSwKQEAgLTUxMSw2ICs1MjIsOSBAQCBjbGFzcyBFeHBlY3RlZFVw
ZGF0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRl
KCkKIAogICAgIGRlZiBtb3psZWFrX3RvdGFsKHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBkYXRh
WyJzY29wZSJdID09ICIvIjoKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJOb3QgdXBkYXRp
bmcgbW96bGVhayBhbm5vdGF0aW9ucyBmb3Igcm9vdCBzY29wZSIpCisgICAgICAgICAgICByZXR1
cm4KICAgICAgICAgaWYgZGF0YVsiYnl0ZXMiXToKICAgICAgICAgICAgIGRpcl9pZCwgdGVzdF9k
YXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICAgICAgdGVzdF9kYXRhLnNl
dChkaXJfaWQsIE5vbmUsICJsZWFrLXRocmVzaG9sZCIsCkBAIC01MjksMzEgKzU0MywzMCBAQCBk
ZWYgY3JlYXRlX3Rlc3RfdHJlZShtZXRhZGF0YV9wYXRoLCB0ZXN0X21hbmlmZXN0KToKICAgICBh
c3NlcnQgYWxsX3R5cGVzID4gZXhjbHVkZV90eXBlcwogICAgIGluY2x1ZGVfdHlwZXMgPSBhbGxf
dHlwZXMgLSBleGNsdWRlX3R5cGVzCiAgICAgZm9yIGl0ZW1fdHlwZSwgdGVzdF9wYXRoLCB0ZXN0
cyBpbiB0ZXN0X21hbmlmZXN0Lml0ZXJ0eXBlcygqaW5jbHVkZV90eXBlcyk6Ci0gICAgICAgIHRl
c3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybih0ZXN0X21hbmlmZXN0LnVybF9iYXNl
LmVuY29kZSgidXRmOCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJuKGl0ZW1fdHlwZS5lbmNvZGUoInV0ZjgiKSksCisgICAgICAgIHRlc3RfZmlsZV9kYXRh
ID0gVGVzdEZpbGVEYXRhKGludGVybihlbnN1cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2Up
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuKGVuc3VyZV9z
dHIoaXRlbV90eXBlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
cGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKHRl
c3QuaWQuZW5jb2RlKCJ1dGY4IikpXSA9IHRlc3RfZmlsZV9kYXRhCisgICAgICAgICAgICBpZF90
ZXN0X21hcFtpbnRlcm4oZW5zdXJlX3N0cih0ZXN0LmlkKSldID0gdGVzdF9maWxlX2RhdGEKIAot
ICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguc3BsaXQodGVzdF9wYXRoKVswXS5yZXBsYWNlKG9z
LnBhdGguc2VwLCAiLyIpCisgICAgICAgIGRpcl9wYXRoID0gb3MucGF0aC5kaXJuYW1lKHRlc3Rf
cGF0aCkKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIGRpcl9wYXRoOgotICAg
ICAgICAgICAgICAgIGRpcl9pZCA9IGRpcl9wYXRoICsgIi9fX2Rpcl9fIgotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBkaXJfaWQgPSAiX19kaXJfXyIKLSAgICAgICAgICAgIGRp
cl9pZCA9IGludGVybigodGVzdF9tYW5pZmVzdC51cmxfYmFzZSArIGRpcl9pZCkubHN0cmlwKCIv
IikuZW5jb2RlKCJ1dGY4IikpCi0gICAgICAgICAgICBpZiBkaXJfaWQgbm90IGluIGlkX3Rlc3Rf
bWFwOgotICAgICAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVy
bih0ZXN0X21hbmlmZXN0LnVybF9iYXNlLmVuY29kZSgidXRmOCIpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhX3BhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2lkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKQotICAgICAgICAgICAgICAgIGlkX3Rl
c3RfbWFwW2Rpcl9pZF0gPSB0ZXN0X2ZpbGVfZGF0YQotICAgICAgICAgICAgaWYgbm90IGRpcl9w
YXRoIG9yIGRpcl9wYXRoIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAgICAgZGlyX21ldGFfcGF0
aCA9IG9zLnBhdGguam9pbihkaXJfcGF0aCwgIl9fZGlyX18iKQorICAgICAgICAgICAgZGlyX2lk
ID0gKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UgKyBkaXJfbWV0YV9wYXRoLnJlcGxhY2Uob3MucGF0
aC5zZXAsICIvIikpLmxzdHJpcCgiLyIpCisgICAgICAgICAgICBpZiBkaXJfaWQgaW4gaWRfdGVz
dF9tYXA6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdGVzdF9maWxlX2Rh
dGEgPSBUZXN0RmlsZURhdGEoaW50ZXJuKGVuc3VyZV9zdHIodGVzdF9tYW5pZmVzdC51cmxfYmFz
ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhX3BhdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfbWV0YV9wYXRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pCisgICAgICAgICAg
ICBpZF90ZXN0X21hcFtkaXJfaWRdID0gdGVzdF9maWxlX2RhdGEKKyAgICAgICAgICAgIGRpcl9w
YXRoID0gb3MucGF0aC5kaXJuYW1lKGRpcl9wYXRoKQorICAgICAgICAgICAgaWYgbm90IGRpcl9w
YXRoOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBkaXJfcGF0aCA9IGRpcl9w
YXRoLnJzcGxpdCgiLyIsIDEpWzBdIGlmICIvIiBpbiBkaXJfcGF0aCBlbHNlICIiCiAKICAgICBy
ZXR1cm4gaWRfdGVzdF9tYXAKIApAQCAtNjE0LDcgKzYyNyw3IEBAIGNsYXNzIFRlc3RGaWxlRGF0
YShvYmplY3QpOgogICAgICAgICBzZWxmLml0ZW1fdHlwZSA9IGl0ZW1fdHlwZQogICAgICAgICBz
ZWxmLnRlc3RfcGF0aCA9IHRlc3RfcGF0aAogICAgICAgICBzZWxmLm1ldGFkYXRhX3BhdGggPSBt
ZXRhZGF0YV9wYXRoCi0gICAgICAgIHNlbGYudGVzdHMgPSB7aW50ZXJuKGl0ZW0uaWQuZW5jb2Rl
KCJ1dGY4IikpIGZvciBpdGVtIGluIHRlc3RzfQorICAgICAgICBzZWxmLnRlc3RzID0ge2ludGVy
bihlbnN1cmVfc3RyKGl0ZW0uaWQpKSBmb3IgaXRlbSBpbiB0ZXN0c30KICAgICAgICAgc2VsZi5f
cmVxdWlyZXNfdXBkYXRlID0gRmFsc2UKICAgICAgICAgc2VsZi5kYXRhID0gZGVmYXVsdGRpY3Qo
bGFtYmRhOiBkZWZhdWx0ZGljdChQYWNrZWRSZXN1bHRMaXN0KSkKIApAQCAtNjU1LDExICs2Njgs
MTEgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgICMgUmV0dXJuIHN1YnRl
c3Qgbm9kZXMgcHJlc2VudCBpbiB0aGUgZXhwZWN0ZWQgZmlsZSwgYnV0IG1pc3NpbmcgZnJvbSB0
aGUgZGF0YQogICAgICAgICBydiA9IFtdCiAKLSAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3Rz
IGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIHRlc3QgPSBleHBlY3RlZC5n
ZXRfdGVzdCh0ZXN0X2lkLmRlY29kZSgidXRmOCIpKQorICAgICAgICBmb3IgdGVzdF9pZCwgc3Vi
dGVzdHMgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CisgICAgICAgICAgICB0ZXN0ID0gZXhwZWN0
ZWQuZ2V0X3Rlc3QoZW5zdXJlX3RleHQodGVzdF9pZCkpCiAgICAgICAgICAgICBpZiBub3QgdGVz
dDoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgc2Vlbl9zdWJ0ZXN0cyA9
IHNldChpdGVtLmRlY29kZSgidXRmOCIpIGZvciBpdGVtIGluIHN1YnRlc3RzLml0ZXJrZXlzKCkg
aWYgaXRlbSBpcyBub3QgTm9uZSkKKyAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoZW5z
dXJlX3RleHQoaXRlbSkgZm9yIGl0ZW0gaW4gaXRlcmtleXMoc3VidGVzdHMpIGlmIGl0ZW0gaXMg
bm90IE5vbmUpCiAgICAgICAgICAgICBtaXNzaW5nX3N1YnRlc3RzID0gc2V0KHRlc3Quc3VidGVz
dHMua2V5cygpKSAtIHNlZW5fc3VidGVzdHMKICAgICAgICAgICAgIGZvciBpdGVtIGluIG1pc3Np
bmdfc3VidGVzdHM6CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3VidGVzdCA9IHRlc3QuZ2V0
X3N1YnRlc3QoaXRlbSkKQEAgLTY3Myw2ICs2ODYsMjkgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9i
amVjdCk6CiAKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgZmlsdGVyX3Vua25vd25fcHJv
cHMoc2VsZiwgdXBkYXRlX3Byb3BlcnRpZXMsIHN1YnRlc3RzKToKKyAgICAgICAgIyBSZW1vdmUg
c3VidGVzdHMgd2hpY2ggaGF2ZSBzb21lIGNvbmRpdGlvbnMgdGhhdCBhcmVuJ3QgaW4gdXBkYXRl
X3Byb3BlcnRpZXMKKyAgICAgICAgIyBzaW5jZSByZW1vdmluZyB0aGVzZSBtYXkgYmUgaW5hcHBy
b3ByaWF0ZQorICAgICAgICB0b3BfbGV2ZWxfcHJvcHMsIGRlcGVuZGVudF9wcm9wcyA9IHVwZGF0
ZV9wcm9wZXJ0aWVzCisgICAgICAgIGFsbF9wcm9wZXJ0aWVzID0gc2V0KHRvcF9sZXZlbF9wcm9w
cykKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgorICAg
ICAgICAgICAgYWxsX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCisKKyAgICAgICAgZmlsdGVyZWQg
PSBbXQorICAgICAgICBmb3Igc3VidGVzdCBpbiBzdWJ0ZXN0czoKKyAgICAgICAgICAgIGluY2x1
ZGUgPSBUcnVlCisgICAgICAgICAgICBmb3Iga2V5LCBfIGluIHN1YnRlc3QuaXRlcl9wcm9wZXJ0
aWVzKCk6CisgICAgICAgICAgICAgICAgY29uZGl0aW9ucyA9IHN1YnRlc3QuZ2V0X2NvbmRpdGlv
bnMoa2V5KQorICAgICAgICAgICAgICAgIGZvciBjb25kaXRpb24gaW4gY29uZGl0aW9uczoKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbmRpdGlvbi52YXJpYWJsZXMuaXNzdWJzZXQoYWxs
X3Byb3BlcnRpZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IEZhbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIG5vdCBpbmNs
dWRlOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgaW5jbHVkZToK
KyAgICAgICAgICAgICAgICBmaWx0ZXJlZC5hcHBlbmQoc3VidGVzdCkKKyAgICAgICAgcmV0dXJu
IGZpbHRlcmVkCisKICAgICBkZWYgdXBkYXRlKHNlbGYsIGRlZmF1bHRfZXhwZWN0ZWRfYnlfdHlw
ZSwgdXBkYXRlX3Byb3BlcnRpZXMsCiAgICAgICAgICAgICAgICBmdWxsX3VwZGF0ZT1GYWxzZSwg
ZGlzYWJsZV9pbnRlcm1pdHRlbnQ9Tm9uZSwgdXBkYXRlX2ludGVybWl0dGVudD1GYWxzZSwKICAg
ICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQ9RmFsc2UpOgpAQCAtNjg3LDYgKzcyMyw3
IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAgIGlmIGZ1bGxfdXBkYXRl
OgogICAgICAgICAgICAgb3JwaGFucyA9IHNlbGYub3JwaGFuX3N1YnRlc3RzKGV4cGVjdGVkKQor
ICAgICAgICAgICAgb3JwaGFucyA9IHNlbGYuZmlsdGVyX3Vua25vd25fcHJvcHModXBkYXRlX3By
b3BlcnRpZXMsIG9ycGhhbnMpCiAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlcXVpcmVzX3Vw
ZGF0ZSBhbmQgbm90IG9ycGhhbnM6CiAgICAgICAgICAgICAgICAgcmV0dXJuCkBAIC03MDQsOSAr
NzQxLDkgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGVkID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZCkKICAgICAgICAgICAgIGV4cGVjdGVk
X2J5X3Rlc3RbdGVzdF9pZF0gPSB0ZXN0X2V4cGVjdGVkCiAKLSAgICAgICAgZm9yIHRlc3RfaWQs
IHRlc3RfZGF0YSBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICB0ZXN0X2lk
ID0gdGVzdF9pZC5kZWNvZGUoInV0ZjgiKQotICAgICAgICAgICAgZm9yIHN1YnRlc3RfaWQsIHJl
c3VsdHNfbGlzdCBpbiB0ZXN0X2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciB0ZXN0X2lk
LCB0ZXN0X2RhdGEgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CisgICAgICAgICAgICB0ZXN0X2lk
ID0gZW5zdXJlX3N0cih0ZXN0X2lkKQorICAgICAgICAgICAgZm9yIHN1YnRlc3RfaWQsIHJlc3Vs
dHNfbGlzdCBpbiBpdGVyaXRlbXModGVzdF9kYXRhKToKICAgICAgICAgICAgICAgICBmb3IgcHJv
cCwgcnVuX2luZm8sIHZhbHVlIGluIHJlc3VsdHNfbGlzdDoKICAgICAgICAgICAgICAgICAgICAg
IyBTcGVjaWFsIGNhc2UgZGlyZWN0b3J5IG1ldGFkYXRhCiAgICAgICAgICAgICAgICAgICAgIGlm
IHN1YnRlc3RfaWQgaXMgTm9uZSBhbmQgdGVzdF9pZC5lbmRzd2l0aCgiX19kaXJfXyIpOgpAQCAt
NzIyLDggKzc1OSw3IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBp
dGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZAogICAgICAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzdWJ0ZXN0X2lkLCBzdHIpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRlc3RfaWQgPSBzdWJ0ZXN0X2lkLmRlY29k
ZSgidXRmOCIpCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0ZXN0X2lkID0gZW5zdXJlX3Rl
eHQoc3VidGVzdF9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZXhwZWN0ZWQgPSB0
ZXN0X2V4cGVjdGVkLmdldF9zdWJ0ZXN0KHN1YnRlc3RfaWQpCiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgcHJvcCA9PSAic3RhdHVzIjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEyYjg5NGNiNzRkNGVj
MDkxOTMxYmY0MTdjOTJkNWJlYTA3MWNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2ltcG9ydCBzeXMKKworaW1wb3J0IHNpeAor
CisKK2RlZiBjYXN0X2VudihlbnYpOgorICAgICIiIkVuY29kZSBhbGwgdGhlIGVudmlyb25tZW50
IHZhbHVlcyBhcyB0aGUgYXBwcm9wcmlhdGUgdHlwZSBmb3IgZWFjaCBQeXRob24gdmVyc2lvbgor
ICAgIFRoaXMgYXNzdW1lcyB0aGF0IGFsbCB0aGUgZGF0YSBpcyBvciBjYW4gYmUgcmVwcmVzZW50
ZWQgYXMgVVRGOCIiIgorCisgICAgZW52X3R5cGUgPSBzaXguZW5zdXJlX2JpbmFyeSBpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdIDwgMyBlbHNlIHNpeC5lbnN1cmVfc3RyCisgICAgcmV0dXJuIHtlbnZf
dHlwZShrZXkpOiBlbnZfdHlwZSh2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gc2l4Lml0ZXJpdGVt
cyhlbnYpfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Byb2R1Y3RzLnB5CmluZGV4IGUzMTE3MDQyNzA5Zjk5ZjRlMDQ0M2RjMGRmYWY1NjFhZDBi
NTQ4YjAuLmFiZDg0MDk0YmIzM2RiZDEzYjM1OTRhN2FjYmU4NDY3NTEyYTk5Y2UgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMu
cHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wCitmcm9tIHNp
eCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZyb20gLmJyb3dzZXJzIGltcG9ydCBwcm9kdWN0X2xpc3QK
IApAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBQcm9kdWN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYu
Z2V0X3RpbWVvdXRfbXVsdGlwbGllciA9IGdldGF0dHIobW9kdWxlLCBkYXRhWyJ0aW1lb3V0X211
bHRpcGxpZXIiXSkKIAogICAgICAgICBzZWxmLmV4ZWN1dG9yX2NsYXNzZXMgPSB7fQotICAgICAg
ICBmb3IgdGVzdF90eXBlLCBjbHNfbmFtZSBpbiBkYXRhWyJleGVjdXRvciJdLml0ZXJpdGVtcygp
OgorICAgICAgICBmb3IgdGVzdF90eXBlLCBjbHNfbmFtZSBpbiBpdGVyaXRlbXMoZGF0YVsiZXhl
Y3V0b3IiXSk6CiAgICAgICAgICAgICBjbHMgPSBnZXRhdHRyKG1vZHVsZSwgY2xzX25hbWUpCiAg
ICAgICAgICAgICBzZWxmLmV4ZWN1dG9yX2NsYXNzZXNbdGVzdF90eXBlXSA9IGNscwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weQppbmRleCBjMDZmN2U1ZTlkNmIxMGI0ZTYxOWM5NWE2MjQxN2U1MmE1OTZiZTUzLi4zZjg5
ODk3MjlmZGUwZWU0NWNmNzgzYmM2OTgzMDdlMzhjODQ0ZDkwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvc3RhYmlsaXR5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKQEAgLTUs
NiArNSw3IEBAIGltcG9ydCBpbwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBP
cmRlcmVkRGljdCwgZGVmYXVsdGRpY3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitm
cm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZyb20gbW96bG9nIGltcG9ydCByZWFkZXIKIGZy
b20gbW96bG9nLmZvcm1hdHRlcnMgaW1wb3J0IEpTT05Gb3JtYXR0ZXIKQEAgLTE0MCwxMCArMTQx
LDEwIEBAIGRlZiBwcm9jZXNzX3Jlc3VsdHMobG9nLCBpdGVyYXRpb25zKToKICAgICBoYW5kbGVy
ID0gTG9nSGFuZGxlcigpCiAgICAgcmVhZGVyLmhhbmRsZV9sb2cocmVhZGVyLnJlYWQobG9nKSwg
aGFuZGxlcikKICAgICByZXN1bHRzID0gaGFuZGxlci5yZXN1bHRzCi0gICAgZm9yIHRlc3RfbmFt
ZSwgdGVzdCBpbiByZXN1bHRzLml0ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0X25hbWUsIHRlc3Qg
aW4gaXRlcml0ZW1zKHJlc3VsdHMpOgogICAgICAgICBpZiBpc19pbmNvbnNpc3RlbnQodGVzdFsi
c3RhdHVzIl0sIGl0ZXJhdGlvbnMpOgogICAgICAgICAgICAgaW5jb25zaXN0ZW50LmFwcGVuZCgo
dGVzdF9uYW1lLCBOb25lLCB0ZXN0WyJzdGF0dXMiXSwgW10pKQotICAgICAgICBmb3Igc3VidGVz
dF9uYW1lLCBzdWJ0ZXN0IGluIHRlc3RbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCk6CisgICAgICAg
IGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3QgaW4gaXRlcml0ZW1zKHRlc3RbInN1YnRlc3RzIl0p
OgogICAgICAgICAgICAgaWYgaXNfaW5jb25zaXN0ZW50KHN1YnRlc3RbInN0YXR1cyJdLCBpdGVy
YXRpb25zKToKICAgICAgICAgICAgICAgICBpbmNvbnNpc3RlbnQuYXBwZW5kKCh0ZXN0X25hbWUs
IHN1YnRlc3RfbmFtZSwgc3VidGVzdFsic3RhdHVzIl0sIHN1YnRlc3RbIm1lc3NhZ2VzIl0pKQog
CkBAIC0yMDgsNyArMjA5LDcgQEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVy
YXRpb25zLCBwcl9udW1iZXI9Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdHMiIGlmIGxlbihyZXN1
bHRzKSA+IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSAidGVzdCIpKQogCi0gICAgZm9yIHRlc3RfbmFtZSwgdGVzdCBpbiByZXN1bHRzLml0
ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gaXRlcml0ZW1zKHJlc3VsdHMp
OgogICAgICAgICBiYXNldXJsID0gImh0dHA6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCiAg
ICAgICAgIGlmICJodHRwcyIgaW4gb3MucGF0aC5zcGxpdGV4dCh0ZXN0X25hbWUpWzBdLnNwbGl0
KCIuIilbMTpdOgogICAgICAgICAgICAgYmFzZXVybCA9ICJodHRwczovL3czYy10ZXN0Lm9yZy9z
dWJtaXNzaW9ucyIKQEAgLTIzNiw3ICsyMzcsNyBAQCBkZWYgd3JpdGVfcmVzdWx0cyhsb2csIHJl
c3VsdHMsIGl0ZXJhdGlvbnMsIHByX251bWJlcj1Ob25lLCB1c2VfZGV0YWlscz1GYWxzZSk6CiAK
IAogZGVmIHJ1bl9zdGVwKGxvZ2dlciwgaXRlcmF0aW9ucywgcmVzdGFydF9hZnRlcl9pdGVyYXRp
b24sIGt3YXJnc19leHRyYXMsICoqa3dhcmdzKToKLSAgICBpbXBvcnQgd3B0cnVubmVyCisgICAg
ZnJvbSAuIGltcG9ydCB3cHRydW5uZXIKICAgICBrd2FyZ3MgPSBjb3B5LmRlZXBjb3B5KGt3YXJn
cykKIAogICAgIGlmIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uOgpAQCAtMjc4LDcgKzI3OSw3IEBA
IGRlZiBnZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRfbG9vcCwgcmVwZWF0X3Jlc3RhcnQsIGt3YXJn
c19leHRyYXMpOgogICAgIGZvciBrd2FyZ3NfZXh0cmEgaW4ga3dhcmdzX2V4dHJhczoKICAgICAg
ICAgaWYga3dhcmdzX2V4dHJhOgogICAgICAgICAgICAgZmxhZ3Nfc3RyaW5nID0gIiB3aXRoIGZs
YWdzICVzIiAlICIgIi5qb2luKAotICAgICAgICAgICAgICAgICIlcz0lcyIgJSBpdGVtIGZvciBp
dGVtIGluIGt3YXJnc19leHRyYS5pdGVyaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAiJXM9JXMi
ICUgaXRlbSBmb3IgaXRlbSBpbiBpdGVyaXRlbXMoa3dhcmdzX2V4dHJhKSkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGZsYWdzX3N0cmluZyA9ICIiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkKaW5kZXggZmE1
NGNhMzYxNTc2MzE4Y2IzNWVjNzE2YTFhMTU5YmRiNTMyZTZjOC4uM2EyNmVmYzU1NDIxMWE1MjQ4
YTc5MDkwOWQ5OTg5M2FmZTlmZjY3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2Fk
ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkKQEAgLTUsNiArNSw4IEBAIGZy
b20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogZnJvbSBzaXgubW92ZXMucXVl
dWUgaW1wb3J0IEVtcHR5CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgZGVx
dWUKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBRdWV1ZQorZnJvbSBzaXggaW1wb3J0IGVu
c3VyZV9iaW5hcnksIGl0ZXJpdGVtcworZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAKIGZy
b20gLiBpbXBvcnQgbWFuaWZlc3RpbmNsdWRlCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0ZXhwZWN0
ZWQKQEAgLTE1LDYgKzE3LDcgQEAgbWFuaWZlc3QgPSBOb25lCiBtYW5pZmVzdF91cGRhdGUgPSBO
b25lCiBkb3dubG9hZF9mcm9tX2dpdGh1YiA9IE5vbmUKIAorCiBkZWYgZG9fZGVsYXllZF9pbXBv
cnRzKCk6CiAgICAgIyBUaGlzIHJlbGllcyBvbiBhbiBhbHJlYWR5IGxvYWRlZCBtb2R1bGUgaGF2
aW5nIHNldCB0aGUgc3lzLnBhdGggY29ycmVjdGx5IDooCiAgICAgZ2xvYmFsIG1hbmlmZXN0LCBt
YW5pZmVzdF91cGRhdGUsIGRvd25sb2FkX2Zyb21fZ2l0aHViCkBAIC0yNCwxMiArMjcsMTMgQEAg
ZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogCiAKIGNsYXNzIFRlc3RDaHVua2VyKG9iamVjdCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsX2NodW5rcywgY2h1bmtfbnVtYmVyKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgdG90YWxfY2h1bmtzLCBjaHVua19udW1iZXIsICoqa3dhcmdz
KToKICAgICAgICAgc2VsZi50b3RhbF9jaHVua3MgPSB0b3RhbF9jaHVua3MKICAgICAgICAgc2Vs
Zi5jaHVua19udW1iZXIgPSBjaHVua19udW1iZXIKICAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtf
bnVtYmVyIDw9IHNlbGYudG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYubG9nZ2VyID0gc3RydWN0
dXJlZC5nZXRfZGVmYXVsdF9sb2dnZXIoKQogICAgICAgICBhc3NlcnQgc2VsZi5sb2dnZXIKKyAg
ICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBtYW5p
ZmVzdCk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKQEAgLTQwLDcgKzQ0LDcg
QEAgY2xhc3MgVW5jaHVua2VkKFRlc3RDaHVua2VyKToKICAgICAgICAgVGVzdENodW5rZXIuX19p
bml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBhc3NlcnQgc2VsZi50b3RhbF9j
aHVua3MgPT0gMQogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0KToKKyAgICBkZWYg
X19jYWxsX18oc2VsZiwgbWFuaWZlc3QsICoqa3dhcmdzKToKICAgICAgICAgZm9yIGl0ZW0gaW4g
bWFuaWZlc3Q6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKQEAgLTQ5LDcgKzUzLDcgQEAgY2xh
c3MgSGFzaENodW5rZXIoVGVzdENodW5rZXIpOgogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBtYW5p
ZmVzdCk6CiAgICAgICAgIGNodW5rX2luZGV4ID0gc2VsZi5jaHVua19udW1iZXIgLSAxCiAgICAg
ICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3Q6Ci0gICAgICAg
ICAgICBoID0gaW50KGhhc2hsaWIubWQ1KHRlc3RfcGF0aCkuaGV4ZGlnZXN0KCksIDE2KQorICAg
ICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShlbnN1cmVfYmluYXJ5KHRlc3RfcGF0aCkpLmhl
eGRpZ2VzdCgpLCAxNikKICAgICAgICAgICAgIGlmIGggJSBzZWxmLnRvdGFsX2NodW5rcyA9PSBj
aHVua19pbmRleDoKICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwg
dGVzdHMKIApAQCAtNjIsOCArNjYsMTMgQEAgY2xhc3MgRGlyZWN0b3J5SGFzaENodW5rZXIoVGVz
dENodW5rZXIpOgogICAgICIiIgogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBtYW5pZmVzdCk6CiAg
ICAgICAgIGNodW5rX2luZGV4ID0gc2VsZi5jaHVua19udW1iZXIgLSAxCisgICAgICAgIGRlcHRo
ID0gc2VsZi5rd2FyZ3MuZ2V0KCJkZXB0aCIpCiAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHRlc3Rf
cGF0aCwgdGVzdHMgaW4gbWFuaWZlc3Q6Ci0gICAgICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1
KG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCisgICAgICAgICAg
ICBpZiBkZXB0aDoKKyAgICAgICAgICAgICAgICBoYXNoX3BhdGggPSBvcy5wYXRoLnNlcC5qb2lu
KG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpLnNwbGl0KG9zLnBhdGguc2VwLCBkZXB0aClbOmRl
cHRoXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGFzaF9wYXRoID0gb3Mu
cGF0aC5kaXJuYW1lKHRlc3RfcGF0aCkKKyAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
ZW5zdXJlX2JpbmFyeShoYXNoX3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAgICAgICAgICAgICBp
ZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTEyNCw3ICsxMzMsNyBAQCBj
bGFzcyBNYW5pZmVzdExvYWRlcihvYmplY3QpOgogCiAgICAgZGVmIGxvYWQoc2VsZik6CiAgICAg
ICAgIHJ2ID0ge30KLSAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBzZWxmLnRlc3RfcGF0
aHMuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gaXRlcml0ZW1z
KHNlbGYudGVzdF9wYXRocyk6CiAgICAgICAgICAgICBtYW5pZmVzdF9maWxlID0gc2VsZi5sb2Fk
X21hbmlmZXN0KHVybF9iYXNlPXVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqKnBhdGhzKQogICAgICAgICAgICAgcGF0aF9kYXRhID0geyJ1
cmxfYmFzZSI6IHVybF9iYXNlfQpAQCAtMTU5LDcgKzE2OCwxMCBAQCBjbGFzcyBUZXN0TG9hZGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz0xLAogICAgICAgICAgICAg
ICAgICBjaHVua19udW1iZXI9MSwKICAgICAgICAgICAgICAgICAgaW5jbHVkZV9odHRwcz1UcnVl
LAotICAgICAgICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UpOgorICAgICAgICAgICAgICAg
ICBpbmNsdWRlX3F1aWM9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXM9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgY2h1bmtlcl9rd2FyZ3M9Tm9uZSk6CiAKICAgICAgICAgc2VsZi50ZXN0
X3R5cGVzID0gdGVzdF90eXBlcwogICAgICAgICBzZWxmLnJ1bl9pbmZvID0gcnVuX2luZm8KQEAg
LTE3MCwxNiArMTgyLDIxIEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgc2Vs
Zi50ZXN0cyA9IE5vbmUKICAgICAgICAgc2VsZi5kaXNhYmxlZF90ZXN0cyA9IE5vbmUKICAgICAg
ICAgc2VsZi5pbmNsdWRlX2h0dHBzID0gaW5jbHVkZV9odHRwcworICAgICAgICBzZWxmLmluY2x1
ZGVfcXVpYyA9IGluY2x1ZGVfcXVpYwogICAgICAgICBzZWxmLnNraXBfdGltZW91dCA9IHNraXBf
dGltZW91dAorICAgICAgICBzZWxmLnNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzID0gc2tpcF9p
bXBsZW1lbnRhdGlvbl9zdGF0dXMKIAogICAgICAgICBzZWxmLmNodW5rX3R5cGUgPSBjaHVua190
eXBlCiAgICAgICAgIHNlbGYudG90YWxfY2h1bmtzID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNl
bGYuY2h1bmtfbnVtYmVyID0gY2h1bmtfbnVtYmVyCiAKKyAgICAgICAgaWYgY2h1bmtlcl9rd2Fy
Z3MgaXMgTm9uZToKKyAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzID0ge30KICAgICAgICAgc2Vs
Zi5jaHVua2VyID0geyJub25lIjogVW5jaHVua2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
Imhhc2giOiBIYXNoQ2h1bmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJfaGFzaCI6
IERpcmVjdG9yeUhhc2hDaHVua2VyfVtjaHVua190eXBlXSh0b3RhbF9jaHVua3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2h1bmtfbnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqKmNodW5rZXJfa3dhcmdzKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfaWRzID0gTm9uZQog
CkBAIC0yMDYsNyArMjIzLDcgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgIGRlZiBs
b2FkX2Rpcl9tZXRhZGF0YShzZWxmLCB0ZXN0X21hbmlmZXN0LCBtZXRhZGF0YV9wYXRoLCB0ZXN0
X3BhdGgpOgogICAgICAgICBydiA9IFtdCiAgICAgICAgIHBhdGhfcGFydHMgPSBvcy5wYXRoLmRp
cm5hbWUodGVzdF9wYXRoKS5zcGxpdChvcy5wYXRoLnNlcCkKLSAgICAgICAgZm9yIGkgaW4geHJh
bmdlKGxlbihwYXRoX3BhcnRzKSArIDEpOgorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocGF0
aF9wYXJ0cykgKyAxKToKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obWV0YWRhdGFf
cGF0aCwgb3MucGF0aC5zZXAuam9pbihwYXRoX3BhcnRzWzppXSksICJfX2Rpcl9fLmluaSIpCiAg
ICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBzZWxmLmRpcmVjdG9yeV9tYW5pZmVzdHM6CiAgICAg
ICAgICAgICAgICAgc2VsZi5kaXJlY3RvcnlfbWFuaWZlc3RzW3BhdGhdID0gbWFuaWZlc3RleHBl
Y3RlZC5nZXRfZGlyX21hbmlmZXN0KHBhdGgsCkBAIC0yMzYsNyArMjUzLDcgQEAgY2xhc3MgVGVz
dExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAgbWFuaWZlc3RfaXRlbXMgPSBzZWxmLmNodW5r
ZXIobWFuaWZlc3RfaXRlbXMpCiAKICAgICAgICAgZm9yIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0
ZXN0cyBpbiBtYW5pZmVzdF9pdGVtczoKLSAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5p
ZmVzdHNfYnlfdXJsX2Jhc2VbaXRlcih0ZXN0cykubmV4dCgpLnVybF9iYXNlXQorICAgICAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IG1hbmlmZXN0c19ieV91cmxfYmFzZVtuZXh0KGl0ZXIodGVzdHMp
KS51cmxfYmFzZV0KICAgICAgICAgICAgIG1ldGFkYXRhX3BhdGggPSBzZWxmLm1hbmlmZXN0c1tt
YW5pZmVzdF9maWxlXVsibWV0YWRhdGFfcGF0aCJdCiAKICAgICAgICAgICAgIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEgPSBzZWxmLmxvYWRfbWV0YWRhdGEobWFuaWZlc3RfZmlsZSwg
bWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKQpAQCAtMjUyLDggKzI2OSwxMiBAQCBjbGFzcyBUZXN0
TG9hZGVyKG9iamVjdCk6CiAgICAgICAgICAgICBlbmFibGVkID0gbm90IHRlc3QuZGlzYWJsZWQo
KQogICAgICAgICAgICAgaWYgbm90IHNlbGYuaW5jbHVkZV9odHRwcyBhbmQgdGVzdC5lbnZpcm9u
bWVudFsicHJvdG9jb2wiXSA9PSAiaHR0cHMiOgogICAgICAgICAgICAgICAgIGVuYWJsZWQgPSBG
YWxzZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuaW5jbHVkZV9xdWljIGFuZCB0ZXN0LmVudmly
b25tZW50WyJxdWljIl06CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAgICAgICAg
ICAgICBpZiBzZWxmLnNraXBfdGltZW91dCBhbmQgdGVzdC5leHBlY3RlZCgpID09ICJUSU1FT1VU
IjoKICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHNlbGYu
c2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXMgYW5kIHRlc3QuaW1wbGVtZW50YXRpb25fc3RhdHVz
KCkgaW4gc2VsZi5za2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1czoKKyAgICAgICAgICAgICAgICBl
bmFibGVkID0gRmFsc2UKICAgICAgICAgICAgIGtleSA9ICJlbmFibGVkIiBpZiBlbmFibGVkIGVs
c2UgImRpc2FibGVkIgogICAgICAgICAgICAgdGVzdHNba2V5XVt0ZXN0X3R5cGVdLmFwcGVuZCh0
ZXN0KQogCkBAIC0yODQsNiArMzA1LDEwIEBAIGNsYXNzIFRlc3RTb3VyY2Uob2JqZWN0KToKICAg
ICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5vcWE6IE44MDUKICAg
ICAgICAgcGFzcwogCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3Vw
KGNscywgdGVzdHMsICoqa3dhcmdzKTogICMgbm9xYTogTjgwNQorICAgICAgICBwYXNzCisKICAg
ICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ3JvdXBfbWV0YWRhdGEoY2xzLCBzdGF0ZSk6CiAgICAg
ICAgIHJldHVybiB7InNjb3BlIjogIi8ifQpAQCAtMzIyLDE0ICszNDcsMjUgQEAgY2xhc3MgR3Jv
dXBlZFNvdXJjZShUZXN0U291cmNlKToKICAgICAgICAgICAgIHRlc3RfcXVldWUucHV0KGl0ZW0p
CiAgICAgICAgIHJldHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
dGVzdHNfYnlfZ3JvdXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICBncm91cHMgPSBk
ZWZhdWx0ZGljdChsaXN0KQorICAgICAgICBzdGF0ZSA9IHt9CisgICAgICAgIGN1cnJlbnQgPSBO
b25lCisgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgaWYgY2xzLm5ld19n
cm91cChzdGF0ZSwgdGVzdCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBj
bHMuZ3JvdXBfbWV0YWRhdGEoc3RhdGUpWydzY29wZSddCisgICAgICAgICAgICBncm91cHNbY3Vy
cmVudF0uYXBwZW5kKHRlc3QuaWQpCisgICAgICAgIHJldHVybiBncm91cHMKKwogCiBjbGFzcyBT
aW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBt
YWtlX3F1ZXVlKGNscywgdGVzdHMsICoqa3dhcmdzKToKICAgICAgICAgdGVzdF9xdWV1ZSA9IFF1
ZXVlKCkKICAgICAgICAgcHJvY2Vzc2VzID0ga3dhcmdzWyJwcm9jZXNzZXMiXQotICAgICAgICBx
dWV1ZXMgPSBbZGVxdWUoW10pIGZvciBfIGluIHhyYW5nZShwcm9jZXNzZXMpXQotICAgICAgICBt
ZXRhZGF0YXMgPSBbY2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHhyYW5nZShwcm9j
ZXNzZXMpXQorICAgICAgICBxdWV1ZXMgPSBbZGVxdWUoW10pIGZvciBfIGluIHJhbmdlKHByb2Nl
c3NlcyldCisgICAgICAgIG1ldGFkYXRhcyA9IFtjbHMuZ3JvdXBfbWV0YWRhdGEoTm9uZSkgZm9y
IF8gaW4gcmFuZ2UocHJvY2Vzc2VzKV0KICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CiAgICAg
ICAgICAgICBpZHggPSBoYXNoKHRlc3QuaWQpICUgcHJvY2Vzc2VzCiAgICAgICAgICAgICBncm91
cCA9IHF1ZXVlc1tpZHhdCkBAIC0zNDIsNiArMzc4LDEwIEBAIGNsYXNzIFNpbmdsZVRlc3RTb3Vy
Y2UoVGVzdFNvdXJjZSk6CiAKICAgICAgICAgcmV0dXJuIHRlc3RfcXVldWUKIAorICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3YXJncyk6Cisg
ICAgICAgIHJldHVybiB7Y2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpWydzY29wZSddOiBbdC5pZCBm
b3IgdCBpbiB0ZXN0c119CisKIAogY2xhc3MgUGF0aEdyb3VwZWRTb3VyY2UoR3JvdXBlZFNvdXJj
ZSk6CiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CmluZGV4IDdiNmJmNTdkMTU5OTI5Y2Rj
YTg3ZTljYTMyMTYxMDQwMWIzNzE2NmEuLjQ5YTM1MjVlODgzZDE1YTA1OTAyMmE1NDkxMWVlY2Y1
MzFkODM2ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgVGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVj
dXRvci5ydW5fdGVzdCh0ZXN0KQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuY3JpdGljYWwodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAg
ICByYWlzZQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAgZGVmIHN0
YXJ0X3J1bm5lcihydW5uZXJfY29tbWFuZF9xdWV1ZSwgcnVubmVyX3Jlc3VsdF9xdWV1ZSwKICAg
ICB3aXRoIGNhcHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgY2FwdHVyZV9zdGRpbyk6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIGJyb3dzZXIgPSBleGVjdXRvcl9icm93c2VyX2NscygqKmV4ZWN1
dG9yX2Jyb3dzZXJfa3dhcmdzKQotICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMo
YnJvd3NlciwgKipleGVjdXRvcl9rd2FyZ3MpCisgICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1
dG9yX2Nscyhsb2dnZXIsIGJyb3dzZXIsICoqZXhlY3V0b3Jfa3dhcmdzKQogICAgICAgICAgICAg
d2l0aCBUZXN0UnVubmVyKGxvZ2dlciwgcnVubmVyX2NvbW1hbmRfcXVldWUsIHJ1bm5lcl9yZXN1
bHRfcXVldWUsIGV4ZWN1dG9yKSBhcyBydW5uZXI6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgICAgICAgICBydW5uZXIucnVuKCkKQEAgLTI4MCw3ICsyODAsNyBAQCBjbGFzcyBU
ZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc3VpdGVfbmFtZSwgdGVzdF9xdWV1ZSwgdGVzdF9zb3VyY2VfY2xzLCBicm93c2VyX2Nscywg
YnJvd3Nlcl9rd2FyZ3MsCiAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2NscywgZXhlY3V0b3Jf
a3dhcmdzLCBzdG9wX2ZsYWcsIHJlcnVuPTEsIHBhdXNlX2FmdGVyX3Rlc3Q9RmFsc2UsCiAgICAg
ICAgICAgICAgICAgIHBhdXNlX29uX3VuZXhwZWN0ZWQ9RmFsc2UsIHJlc3RhcnRfb25fdW5leHBl
Y3RlZD1UcnVlLCBkZWJ1Z19pbmZvPU5vbmUsCi0gICAgICAgICAgICAgICAgIGNhcHR1cmVfc3Rk
aW89VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGNhcHR1cmVfc3RkaW89VHJ1ZSwgcmVjb3JkaW5n
PU5vbmUpOgogICAgICAgICAiIiJUaHJlYWQgdGhhdCBvd25zIGEgc2luZ2xlIFRlc3RSdW5uZXIg
cHJvY2VzcyBhbmQgYW55IHByb2Nlc3NlcyByZXF1aXJlZAogICAgICAgICBieSB0aGUgVGVzdFJ1
bm5lciAoZS5nLiB0aGUgRmlyZWZveCBiaW5hcnkpLgogCkBAIC0zMTgsNiArMzE4LDggQEAgY2xh
c3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHNlbGYuZGVi
dWdfaW5mbyA9IGRlYnVnX2luZm8KIAogICAgICAgICBzZWxmLm1hbmFnZXJfbnVtYmVyID0gbmV4
dF9tYW5hZ2VyX251bWJlcigpCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUK
KyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSByZWNvcmRpbmcKIAogICAgICAgICBzZWxmLmNvbW1h
bmRfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gUXVldWUoKQpA
QCAtMzUwLDYgKzM1Miw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJl
YWQpOgogICAgICAgICBtYXkgYWxzbyBoYXZlIGEgc3RvcCBmbGFnIHNldCBieSB0aGUgbWFpbiB0
aHJlYWQgaW5kaWNhdGluZwogICAgICAgICB0aGF0IHRoZSBtYW5hZ2VyIHNob3VsZCBzaHV0IGRv
d24gdGhlIG5leHQgdGltZSB0aGUgZXZlbnQgbG9vcAogICAgICAgICBzcGlucy4iIiIKKyAgICAg
ICAgc2VsZi5yZWNvcmRpbmcuc2V0KFsidGVzdHJ1bm5lciIsICJzdGFydHVwIl0pCiAgICAgICAg
IHNlbGYubG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKHNlbGYuc3VpdGVf
bmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmJyb3dzZXJfY2xzKHNlbGYubG9nZ2VyLCAqKnNlbGYu
YnJvd3Nlcl9rd2FyZ3MpIGFzIGJyb3dzZXI6CiAgICAgICAgICAgICBzZWxmLmJyb3dzZXIgPSBC
cm93c2VyTWFuYWdlcihzZWxmLmxvZ2dlciwKQEAgLTM5MCw4ICszOTMsOCBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5ld19zdGF0ZQog
ICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygibmV3IHN0YXRlOiAlcyIgJSBz
ZWxmLnN0YXRlLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9y
bWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAg
ICAgICByYWlzZQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiVGVzdFJ1bm5lck1hbmFnZXIgbWFpbiBsb29wIHRlcm1pbmF0aW5nLCBzdGFy
dGluZyBjbGVhbnVwIikKQEAgLTQ2Nyw2ICs0NzAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdl
cih0aHJlYWRpbmcuVGhyZWFkKToKIAogICAgIGRlZiBzdGFydF9pbml0KHNlbGYpOgogICAgICAg
ICB0ZXN0LCB0ZXN0X2dyb3VwLCBncm91cF9tZXRhZGF0YSA9IHNlbGYuZ2V0X25leHRfdGVzdCgp
CisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3RydW5uZXIiLCAiaW5pdCJdKQogICAg
ICAgICBpZiB0ZXN0IGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gUnVubmVyTWFuYWdlclN0
YXRlLnN0b3AoKQogICAgICAgICBlbHNlOgpAQCAtNTU2LDYgKzU2MCw3IEBAIGNsYXNzIFRlc3RS
dW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUudGVzdF9ncm91cCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlLmdyb3Vw
X21ldGFkYXRhKQogCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3RydW5uZXIiLCAi
dGVzdCJdICsgc2VsZi5zdGF0ZS50ZXN0LmlkLnNwbGl0KCIvIilbMTpdKQogICAgICAgICBzZWxm
LmxvZ2dlci50ZXN0X3N0YXJ0KHNlbGYuc3RhdGUudGVzdC5pZCkKICAgICAgICAgaWYgc2VsZi5y
ZXJ1biA+IDE6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSdW4gJWQvJWQiICUgKHNl
bGYucnVuX2NvdW50LCBzZWxmLnJlcnVuKSkKQEAgLTY3Miw2ICs2NzcsNyBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKHN1YnRlc3RfdW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSBhbmQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0ZWQpKQog
CisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3RydW5uZXIiLCAiYWZ0ZXItdGVzdCJd
KQogICAgICAgICBpZiAobm90IGZpbGVfcmVzdWx0LnN0YXR1cyA9PSAiQ1JBU0giIGFuZAogICAg
ICAgICAgICAgc2VsZi5wYXVzZV9hZnRlcl90ZXN0IG9yCiAgICAgICAgICAgICAoc2VsZi5wYXVz
ZV9vbl91bmV4cGVjdGVkIGFuZCAoc3VidGVzdF91bmV4cGVjdGVkIG9yIGlzX3VuZXhwZWN0ZWQp
KSk6CkBAIC03MjAsNiArNzI2LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5n
LlRocmVhZCk6CiAKICAgICBkZWYgc3RvcF9ydW5uZXIoc2VsZiwgZm9yY2U9RmFsc2UpOgogICAg
ICAgICAiIiJTdG9wIHRoZSBUZXN0UnVubmVyIGFuZCB0aGUgYnJvd3NlciBiaW5hcnkuIiIiCisg
ICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3RydW5uZXIiLCAic3RvcF9ydW5uZXIiXSkK
ICAgICAgICAgaWYgc2VsZi50ZXN0X3J1bm5lcl9wcm9jIGlzIE5vbmU6CiAgICAgICAgICAgICBy
ZXR1cm4KIApAQCAtNzM4LDYgKzc0NSw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVh
ZGluZy5UaHJlYWQpOgogICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZS5jbG9zZSgpCiAgICAgICAg
IHNlbGYuY29tbWFuZF9xdWV1ZSA9IE5vbmUKICAgICAgICAgc2VsZi5yZW1vdGVfcXVldWUgPSBO
b25lCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnBhdXNlKCkKIAogICAgIGRlZiBlbnN1cmVfcnVu
bmVyX3N0b3BwZWQoc2VsZik6CiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJlbnN1cmVfcnVu
bmVyX3N0b3BwZWQiKQpAQCAtODI1LDcgKzgzMyw4IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVjdGVkPUZhbHNlLAogICAgICAg
ICAgICAgICAgICByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAg
ZGVidWdfaW5mbz1Ob25lLAotICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgor
ICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUsCisgICAgICAgICAgICAgICAgIHJl
Y29yZGluZz1Ob25lKToKICAgICAgICAgc2VsZi5zdWl0ZV9uYW1lID0gc3VpdGVfbmFtZQogICAg
ICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgIHNlbGYudGVzdF9zb3VyY2VfY2xzID0gdGVz
dF9zb3VyY2VfY2xzCkBAIC04NDAsNiArODQ5LDggQEAgY2xhc3MgTWFuYWdlckdyb3VwKG9iamVj
dCk6CiAgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KICAgICAgICAgc2VsZi5y
ZXJ1biA9IHJlcnVuCiAgICAgICAgIHNlbGYuY2FwdHVyZV9zdGRpbyA9IGNhcHR1cmVfc3RkaW8K
KyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSByZWNvcmRpbmcKKyAgICAgICAgYXNzZXJ0IHJlY29y
ZGluZyBpcyBub3QgTm9uZQogCiAgICAgICAgIHNlbGYucG9vbCA9IHNldCgpCiAgICAgICAgICMg
RXZlbnQgdGhhdCBpcyBwb2xsZWQgYnkgdGhyZWFkcyBzbyB0aGF0IHRoZXkgY2FuIGdyYWNlZnVs
bHkgZXhpdCBpbiB0aGUgZmFjZQpAQCAtODc3LDcgKzg4OCw4IEBAIGNsYXNzIE1hbmFnZXJHcm91
cChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
cGF1c2Vfb25fdW5leHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnJlc3RhcnRfb25fdW5leHBlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmRlYnVnX2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5jYXB0dXJlX3N0ZGlvKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVyZV9zdGRpbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRpbmc9c2VsZi5yZWNvcmRpbmcpCiAgICAg
ICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKICAgICAgICAgICAgIHNlbGYucG9vbC5hZGQobWFuYWdl
cikKICAgICAgICAgc2VsZi53YWl0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9i
cm93c2Vycy90ZXN0X3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rf
c2F1Y2UucHkKaW5kZXggMDZhNTY0MWQ1MGZiYmFlZDRkZTlkZjUxMWM1Njc3NTNlZjFhMzI2ZC4u
ZTFlMThlYzVlOWNkMjFkYWE4OWY5MTc2OTBhZDEyODUyZjlhMjg5NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2UucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2UucHkKQEAgLTEsOSArMSwxMCBAQAogaW1wb3J0IHN5
cwotZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luLCBkaXJuYW1lCiAKIGltcG9ydCBtb2NrCiBpbXBv
cnQgcHl0ZXN0CiAKK2Zyb20gb3MucGF0aCBpbXBvcnQgam9pbiwgZGlybmFtZQorCiBzeXMucGF0
aC5pbnNlcnQoMCwgam9pbihkaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgIi4uIiwgIi4uIikpCiAK
IHNhdWNlID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0cnVubmVyLmJyb3dzZXJzLnNhdWNlIikK
QEAgLTk1LDcgKzk2LDYgQEAgZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2NsZWFudXAoKToKIAogICAg
ICAgICBzbGVlcC5hc3NlcnRfY2FsbGVkKCkKIAotCiBkZWYgdGVzdF9zYXVjZWNvbm5lY3RfZmFp
bHVyZV9uZXZlcl9yZWFkeSgpOgogICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qoc2F1Y2UuU2F1
Y2VDb25uZWN0LCAidXBsb2FkX3ByZXJ1bl9leGVjIiksXAogICAgICAgICAgICAgbW9jay5wYXRj
aC5vYmplY3Qoc2F1Y2Uuc3VicHJvY2VzcywgIlBvcGVuIikgYXMgUG9wZW4sXApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZXhwZWN0ZWR0cmVlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3RfZXhwZWN0ZWR0cmVlLnB5CmluZGV4IDIzMDhiZTk1OTBlOTAwNGY0MWE0OTI2
ODJkMTg3YTdiNGZjNTcyMzEuLmQ3MTIzN2E0MmRhZDU4YzY5YjY4NmU2MDQwYjY1ZjQwMDY0Yzk0
MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKQEAgLTEsNyArMSwz
IEBACi1pbXBvcnQgc3lzCi0KLWltcG9ydCBweXRlc3QKLQogZnJvbSAuLiBpbXBvcnQgZXhwZWN0
ZWR0cmVlLCBtZXRhZGF0YQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIApA
QCAtMzIsOCArMjgsNiBAQCBkZWYgcmVzdWx0c19vYmplY3QocmVzdWx0cyk6CiAgICAgcmV0dXJu
IHJlc3VsdHNfb2JqCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8wKCk6CiAgICAgIyBQYXNzIGlmIGRlYnVnCiAgICAg
cmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRlYnVnIjog
VHJ1ZX0sICJGQUlMIiksCkBAIC01Myw4ICs0Nyw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMCgp
OgogICAgIGFzc2VydCBkdW1wX3RyZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzEo
KToKICAgICAjIFBhc3MgaWYgbGludXggb3Igd2luZG93cyAxMAogICAgIHJlc3VsdHMgPSBbKHsi
b3MiOiAibGludXgiLCAidmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiUEFTUyIp
LApAQCAtNzcsOCArNjksNiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzEoKToKICAgICBhc3NlcnQg
ZHVtcF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8yKCk6CiAgICAgIyBGYWls
cyBpbiBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24KICAgICByZXN1bHRzID0gWyh7Im9zIjogImxp
bnV4IiwgInZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTEw
NCw4ICs5NCw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMigpOgogICAgIGFzc2VydCBkdW1wX3Ry
ZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzMoKToKIAogICAgIHJlc3VsdHMgPSBb
KHsib3MiOiAibGludXgiLCAidmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWUsICJ1bnVz
ZWQiOiBGYWxzZX0sICJQQVNTIiksCkBAIC0xMTgsOCArMTA2LDYgQEAgZGVmIHRlc3RfYnVpbGRf
dHJlZV8zKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxk
X3RyZWVfNCgpOgogICAgICMgQ2hlY2sgY291bnRzIGZvciBtdWx0aXBsZSBzdGF0dXNlcwogICAg
IHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAidmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6
IEZhbHNlfSwgIkZBSUwiKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zv
cm1hdHRlcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CmluZGV4
IDcyZjNhNTkxYWQ3ZjkwNTMyNjcxY2NiODk3ZGZjYjE2MWJjOGY0NWQuLjYwYjFiMGE1YTg3OGNk
YTljNTAwZWFhZTI1ZjNmZTg5ZWFkZjgxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X2Zvcm1hdHRlcnMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0
dGVycy5weQpAQCAtNyw2ICs3LDcgQEAgaW1wb3J0IG1vY2sKIGZyb20gbW96bG9nIGltcG9ydCBo
YW5kbGVycywgc3RydWN0dXJlZGxvZwogCiBmcm9tIC4uZm9ybWF0dGVycyBpbXBvcnQgd3B0cmVw
b3J0Citmcm9tIC4uZm9ybWF0dGVycy53cHRzY3JlZW5zaG90IGltcG9ydCBXcHRzY3JlZW5zaG90
Rm9ybWF0dGVyCiBmcm9tIC4uZm9ybWF0dGVycy53cHRyZXBvcnQgaW1wb3J0IFdwdHJlcG9ydEZv
cm1hdHRlcgogCiAKQEAgLTE2NiwzICsxNjcsMjYgQEAgZGVmIHRlc3Rfd3B0cmVwb3J0X2tub3du
X2ludGVybWl0dGVudChjYXBmZCk6CiAgICAgc3VidGVzdCA9IHRlc3RbInN1YnRlc3RzIl1bMF0K
ICAgICBhc3NlcnQgc3VidGVzdFsiZXhwZWN0ZWQiXSA9PSB1IlBBU1MiCiAgICAgYXNzZXJ0IHN1
YnRlc3RbImtub3duX2ludGVybWl0dGVudCJdID09IFt1J0ZBSUwnXQorCisKK2RlZiB0ZXN0X3dw
dHNjcmVlbnNob3RfdGVzdF9lbmQoY2FwZmQpOgorICAgIGZvcm1hdHRlciA9IFdwdHNjcmVlbnNo
b3RGb3JtYXR0ZXIoKQorCisgICAgIyBFbXB0eQorICAgIGRhdGEgPSB7fQorICAgIGFzc2VydCBm
b3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQorCisgICAgIyBObyBpdGVtcworICAgIGRh
dGFbJ2V4dHJhJ10gPSB7InJlZnRlc3Rfc2NyZWVuc2hvdHMiOiBbXX0KKyAgICBhc3NlcnQgZm9y
bWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5vbmUKKworICAgICMgSW52YWxpZCBpdGVtCisgICAg
ZGF0YVsnZXh0cmEnXVsncmVmdGVzdF9zY3JlZW5zaG90cyddID0gWyJubyBkaWN0IGl0ZW0iXQor
ICAgIGFzc2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQorCisgICAgIyBSYW5k
b20gaGFzaAorICAgIGRhdGFbJ2V4dHJhJ11bJ3JlZnRlc3Rfc2NyZWVuc2hvdHMnXSA9IFt7Imhh
c2giOiAiSEFTSCIsICJzY3JlZW5zaG90IjogIkRBVEEifV0KKyAgICBhc3NlcnQgJ2RhdGE6aW1h
Z2UvcG5nO2Jhc2U2NCxEQVRBXG4nID09IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKQorCisgICAg
IyBBbHJlYWR5IGNhY2hlZCBoYXNoCisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRh
KSBpcyBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4
cGVjdGVkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weQpp
bmRleCA1MjU5MTVkMTgzMmFjOGFmMTk1N2E3OTk2MTU5NjllMDU4ZWVmY2E1Li5mM2U0Y2U3OTZh
NDVjNDcyYTg4ZmUwMjIyNzdlMDM0N2I0ZTk4OTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgc3lzCiBmcm9t
IGlvIGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCBweXRlc3QKQEAgLTYsOCArNSw2IEBAIGltcG9y
dCBweXRlc3QKIGZyb20gLi4gaW1wb3J0IG1hbmlmZXN0ZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIEBweXRlc3QubWFyay5wYXJhbWV0cml6
ZSgiZnV6enksIGV4cGVjdGVkIiwgWwogICAgIChiInJlZi5odG1sOjE7MjAwIiwgWygicmVmLmh0
bWwiLCAoKDEsIDEpLCAoMjAwLCAyMDApKSldKSwKICAgICAoYiJyZWYuaHRtbDowLTE7MTAwLTIw
MCIsIFsoInJlZi5odG1sIiwgKCgwLCAxKSwgKDEwMCwgMjAwKSkpXSksCkBAIC0yNSw3ICsyMiw3
IEBAIGZyb20gLi4gaW1wb3J0IG1hbmlmZXN0ZXhwZWN0ZWQKICAgICAgICgodSJ0ZXN0Lmh0bWwi
LCB1InJlZjEuaHRtbCIsICI9PSIpLCAoKDUsMTApLCAoMTAwLCAxMDApKSldKSwKIF0pCiBkZWYg
dGVzdF9mdXp6eShmdXp6eSwgZXhwZWN0ZWQpOgotICAgIGRhdGEgPSAiIiIKKyAgICBkYXRhID0g
YiIiIgogW3Rlc3QuaHRtbF0KICAgZnV6enk6ICVzIiIiICUgZnV6enkKICAgICBmID0gQnl0ZXNJ
TyhkYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CmluZGV4IDQ3NDA1NmRkZTZj
NjdiYjBhYWQyMTAwNjEzZTZjYTMzMTk2MjM5NjIuLjlhOGZjY2Y5MzVhMTM2YzYwNTBlODUyZjlh
NTcwNDEzOGIwZDNmNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0YWJp
bGl0eS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKQEAgLTEs
NSArMSw1IEBACiBmcm9tIC4uIGltcG9ydCBzdGFiaWxpdHkKLQorZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiAKIGRlZiB0ZXN0X2lzX2luY29uc2lzdGVu
dCgpOgogICAgIGFzc2VydCBzdGFiaWxpdHkuaXNfaW5jb25zaXN0ZW50KHsiUEFTUyI6IDEwfSwg
MTApIGlzIEZhbHNlCkBAIC0yOSwzICsyOSwxMTQgQEAgZGVmIHRlc3RfZmluZF9zbG93X3N0YXR1
cygpOgogICAgICAgICAidGltZW91dCI6IDEwMH0pID09ICJGQUlMIgogICAgIGFzc2VydCBzdGFi
aWxpdHkuZmluZF9zbG93X3N0YXR1cyh7CiAgICAgICAgICJsb25nZXN0X2R1cmF0aW9uIjogeyJT
S0lQIjogMH19KSBpcyBOb25lCisKKworZGVmIHRlc3RfZ2V0X3N0ZXBzKCk6CisgICAgbG9nZ2Vy
ID0gTm9uZQorCisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dlciwgMCwgMCwg
W10pCisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgc3RlcHMgPSBzdGFiaWxpdHku
Z2V0X3N0ZXBzKGxvZ2dlciwgMCwgMCwgW3t9XSkKKyAgICBhc3NlcnQgbGVuKHN0ZXBzKSA9PSAw
CisKKyAgICByZXBlYXRfbG9vcCA9IDEKKyAgICBmbGFnX25hbWUgPSAnZmxhZycKKyAgICBmbGFn
X3ZhbHVlID0gJ3knCisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dlciwgcmVw
ZWF0X2xvb3AsIDAsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZsYWdfbmFt
ZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDEKKyAgICBhc3NlcnQg
c3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wICVkIHRpbWVzIHdpdGggZmxh
Z3MgJXM9JXMiICUgKAorICAgICAgICByZXBlYXRfbG9vcCwgZmxhZ19uYW1lLCBmbGFnX3ZhbHVl
KQorCisgICAgcmVwZWF0X2xvb3AgPSAwCisgICAgcmVwZWF0X3Jlc3RhcnQgPSAxCisgICAgZmxh
Z19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICduJworICAgIHN0ZXBzID0gc3RhYmls
aXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCByZXBlYXRfcmVzdGFydCwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmxhZ19uYW1lOiBmbGFnX3ZhbHVlfV0pCisg
ICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMQorICAgIGFzc2VydCBzdGVwc1swXVswXSA9PSAiUnVu
bmluZyB0ZXN0cyBpbiBhIGxvb3Agd2l0aCByZXN0YXJ0cyAlZCB0aW1lcyB3aXRoIGZsYWdzICVz
PSVzIiAlICgKKyAgICAgICAgcmVwZWF0X3Jlc3RhcnQsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkK
KworICAgIHJlcGVhdF9sb29wID0gMTAKKyAgICByZXBlYXRfcmVzdGFydCA9IDUKKyAgICBzdGVw
cyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRfbG9vcCwgcmVwZWF0X3Jlc3Rh
cnQsIFt7fV0pCisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMgorICAgIGFzc2VydCBzdGVwc1sw
XVswXSA9PSAiUnVubmluZyB0ZXN0cyBpbiBhIGxvb3AgJWQgdGltZXMiICUgcmVwZWF0X2xvb3AK
KyAgICBhc3NlcnQgc3RlcHNbMV1bMF0gPT0gKAorICAgICAgICAiUnVubmluZyB0ZXN0cyBpbiBh
IGxvb3Agd2l0aCByZXN0YXJ0cyAlZCB0aW1lcyIgJSByZXBlYXRfcmVzdGFydCkKKworCitkZWYg
dGVzdF9sb2dfaGFuZGxlcigpOgorICAgIGhhbmRsZXIgPSBzdGFiaWxpdHkuTG9nSGFuZGxlcigp
CisgICAgZGF0YSA9IE9yZGVyZWREaWN0KCkKKyAgICBkYXRhWyJ0ZXN0Il0gPSAidGVzdF9uYW1l
IgorICAgIHRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsic3VidGVzdHMiXSA9PSBPcmRlcmVkRGljdCgpCisgICAgYXNzZXJ0IHRlc3RbInN0
YXR1cyJdID09IGRlZmF1bHRkaWN0KGludCkKKyAgICBhc3NlcnQgdGVzdFsibG9uZ2VzdF9kdXJh
dGlvbiJdID09IGRlZmF1bHRkaWN0KGZsb2F0KQorICAgIGFzc2VydCB0ZXN0ID09IGhhbmRsZXIu
ZmluZF9vcl9jcmVhdGVfdGVzdChkYXRhKQorCisgICAgc3RhcnRfdGltZSA9IDEwMAorICAgIGRh
dGFbInRpbWUiXSA9IHN0YXJ0X3RpbWUKKyAgICBoYW5kbGVyLnRlc3Rfc3RhcnQoZGF0YSkKKyAg
ICBhc3NlcnQgdGVzdFsic3RhcnRfdGltZSJdID09IHN0YXJ0X3RpbWUKKworICAgIGRhdGFbInN1
YnRlc3QiXSA9ICJzdWJ0ZXN0X25hbWUiCisgICAgc3VidGVzdCA9IGhhbmRsZXIuZmluZF9vcl9j
cmVhdGVfc3VidGVzdChkYXRhKQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXSA9PSBkZWZh
dWx0ZGljdChpbnQpCisgICAgYXNzZXJ0IHN1YnRlc3RbIm1lc3NhZ2VzIl0gPT0gc2V0KCkKKyAg
ICBhc3NlcnQgc3VidGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkK
KworICAgIGRhdGFbInN0YXR1cyJdID0gMAorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtk
YXRhWyJzdGF0dXMiXV0gPT0gMAorICAgIGhhbmRsZXIudGVzdF9zdGF0dXMoZGF0YSkKKyAgICBh
c3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDEKKyAgICBoYW5kbGVy
LnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFbInN0
YXR1cyJdXSA9PSAyCisgICAgZGF0YVsic3RhdHVzIl0gPSAxCisgICAgYXNzZXJ0IHN1YnRlc3Rb
InN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAwCisgICAgbWVzc2FnZSA9ICJ0ZXN0IG1lc3Nh
Z2UiCisgICAgZGF0YVsibWVzc2FnZSJdID0gbWVzc2FnZQorICAgIGhhbmRsZXIudGVzdF9zdGF0
dXMoZGF0YSkKKyAgICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09
IDEKKyAgICBhc3NlcnQgbGVuKHN1YnRlc3RbIm1lc3NhZ2VzIl0pID09IDEKKyAgICBhc3NlcnQg
bWVzc2FnZSBpbiBzdWJ0ZXN0WyJtZXNzYWdlcyJdCisKKyAgICB0ZXN0X2R1cmF0aW9uID0gMTAK
KyAgICBkYXRhWyJ0aW1lIl0gPSBkYXRhWyJ0aW1lIl0gKyB0ZXN0X2R1cmF0aW9uCisgICAgaGFu
ZGxlci50ZXN0X2VuZChkYXRhKQorICAgIGFzc2VydCB0ZXN0WyJsb25nZXN0X2R1cmF0aW9uIl1b
ZGF0YVsic3RhdHVzIl1dID09IHRlc3RfZHVyYXRpb24KKyAgICBhc3NlcnQgInRpbWVvdXQiIG5v
dCBpbiB0ZXN0CisKKyAgICBkYXRhWyJ0ZXN0MiJdID0gInRlc3RfbmFtZV8yIgorICAgIHRpbWVv
dXQgPSA1CisgICAgZGF0YVsiZXh0cmEiXSA9IHt9CisgICAgZGF0YVsiZXh0cmEiXVsidGVzdF90
aW1lb3V0Il0gPSB0aW1lb3V0CisgICAgaGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgaGFu
ZGxlci50ZXN0X2VuZChkYXRhKQorICAgIGFzc2VydCB0ZXN0WyJ0aW1lb3V0Il0gPT0gdGltZW91
dCAqIDEwMDAKKworCitkZWYgdGVzdF9lcnJfc3RyaW5nKCk6CisgICAgYXNzZXJ0IHN0YWJpbGl0
eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdPSyc6IDEsIHUnRkFJTCc6IDF9LCAxKSA9PSB1Iioq
RHVwbGljYXRlIHN1YnRlc3QgbmFtZSoqIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmlu
ZygKKyAgICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxfSwgMikgPT0gdSIqKkR1cGxpY2F0ZSBz
dWJ0ZXN0IG5hbWUqKiIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoe3UnU0tJUCc6
IDF9LCAwKSA9PSB1IkR1cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUiCisgICAgYXNzZXJ0IHN0YWJpbGl0
eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdTS0lQJzogMSwgdSdPSyc6IDF9LCAxKSA9PSB1IkR1
cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J0ZBSUwnOiAxfSwgMikgPT0gdSIqKkZBSUw6IDEvMiwgTUlTU0lORzogMS8y
KioiCisgICAgYXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlMJzog
MSwgdSdPSyc6IDF9LCAzKSA9PSB1IioqRkFJTDogMS8zLCBPSzogMS8zLCBNSVNTSU5HOiAxLzMq
KiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnT0snOiAx
LCB1J0ZBSUwnOiAxfSwgMikgPT0gdSIqKkZBSUw6IDEvMiwgT0s6IDEvMioqIgorCisgICAgYXNz
ZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdPSyc6IDIsIHUnRkFJTCc6IDEs
IHUnU0tJUCc6IDF9LCA0KSA9PSB1IkZBSUw6IDEvNCwgT0s6IDIvNCwgU0tJUDogMS80IgorICAg
IGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnU0tJ
UCc6IDEsIHUnT0snOiAyfSwgNCkgPT0gdSJGQUlMOiAxLzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CmluZGV4IGU4NTdjZDQzZGI2ZDI4MWY5
NTQxNDIzMGY1MmM5ODRhYWQ5MTUxMTguLjgzNjAwM2QxMDYwMzhhYjQzMDMwMzVlZWNjYTMxNzc0
YzlhMjZjZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weQpAQCAtMjAsOCAr
MjAsNiBAQCBza2lwOiB0cnVlCiAKIEBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0g
IndpbjMyIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Ik5hbWVkVGVtcG9yYXJ5RmlsZSBj
YW5ub3QgYmUgcmVvcGVuZWQgb24gV2luMzIiKQotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249IndwdG1hbmlmZXN0LnBh
cnNlciBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2ZpbHRlcl91bmljb2RlKCk6CiAg
ICAgdGVzdHMgPSBtYWtlX21vY2tfbWFuaWZlc3QoKCJ0ZXN0IiwgImEiLCAxMCksICgidGVzdCIs
ICJhL2IiLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0IiwgImMi
LCAxMCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91cGRhdGUucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF91cGRhdGUucHkKaW5kZXggNWQ5MDBhM2Q2YzljZDIzNjk2
ZmUwZDJiN2MyMGQ4ZmY1MTQyYjllNS4uNmRjMDRjZWRmMzRjN2E4ZmI2NjczZjFjNWY0NzdkMDU2
MWViMWZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQpAQCAtMTIsNyArMTIsNyBAQCBm
cm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZywgaGFuZGxlcnMsIGZvcm1hdHRlcnMKIAog
aGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCi1mcm9tIG1h
bmlmZXN0IGltcG9ydCBtYW5pZmVzdCwgaXRlbSBhcyBtYW5pZmVzdF9pdGVtCitmcm9tIG1hbmlm
ZXN0IGltcG9ydCBtYW5pZmVzdCwgaXRlbSBhcyBtYW5pZmVzdF9pdGVtLCB1dGlscwogCiAKIGRl
ZiByZWxfcGF0aF90b190ZXN0X3VybChyZWxfcGF0aCk6CkBAIC0yMSw3ICsyMSw5IEBAIGRlZiBy
ZWxfcGF0aF90b190ZXN0X3VybChyZWxfcGF0aCk6CiAKIAogZGVmIFNvdXJjZUZpbGVXaXRoVGVz
dChwYXRoLCBoYXNoLCBjbHMsICphcmdzKToKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBh
dGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoX3BhcnRzID0gdHVwbGUocGF0aC5zcGxpdCgiLyIpKQor
ICAgIHBhdGggPSB1dGlscy50b19vc19wYXRoKHBhdGgpCisgICAgcyA9IG1vY2suTW9jayhyZWxf
cGF0aD1wYXRoLCByZWxfcGF0aF9wYXJ0cz1wYXRoX3BhcnRzLCBoYXNoPWhhc2gpCiAgICAgdGVz
dCA9IGNscygiL2Zvb2JhciIsIHBhdGgsICIvIiwgcmVsX3BhdGhfdG9fdGVzdF91cmwocGF0aCks
ICphcmdzKQogICAgIHMubWFuaWZlc3RfaXRlbXMgPSBtb2NrLk1vY2socmV0dXJuX3ZhbHVlPShj
bHMuaXRlbV90eXBlLCBbdGVzdF0pKQogICAgIHJldHVybiBzCkBAIC0yOSw3ICszMSw2IEBAIGRl
ZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqYXJncyk6CiAKIGl0ZW1fY2xh
c3NlcyA9IHsidGVzdGhhcm5lc3MiOiBtYW5pZmVzdF9pdGVtLlRlc3RoYXJuZXNzVGVzdCwKICAg
ICAgICAgICAgICAgICAicmVmdGVzdCI6IG1hbmlmZXN0X2l0ZW0uUmVmVGVzdCwKLSAgICAgICAg
ICAgICAgICAicmVmdGVzdF9ub2RlIjogbWFuaWZlc3RfaXRlbS5SZWZUZXN0Tm9kZSwKICAgICAg
ICAgICAgICAgICAibWFudWFsIjogbWFuaWZlc3RfaXRlbS5NYW51YWxUZXN0LAogICAgICAgICAg
ICAgICAgICJ3ZHNwZWMiOiBtYW5pZmVzdF9pdGVtLldlYkRyaXZlclNwZWNUZXN0LAogICAgICAg
ICAgICAgICAgICJjb25mb3JtYW5jZWNoZWNrZXIiOiBtYW5pZmVzdF9pdGVtLkNvbmZvcm1hbmNl
Q2hlY2tlclRlc3QsCkBAIC02NywxMSArNjgsMTIgQEAgZGVmIHVwZGF0ZSh0ZXN0cywgKmxvZ3Ms
ICoqa3dhcmdzKToKICAgICAgICAgdXBkYXRlci51cGRhdGVfZnJvbV9sb2cobG9nKQogCiAgICAg
dXBkYXRlX3Byb3BlcnRpZXMgPSAoWyJkZWJ1ZyIsICJvcyIsICJ2ZXJzaW9uIiwgInByb2Nlc3Nv
ciJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nl
c3NvciI6ICJiaXRzIn0pCisgICAgICAgICAgICAgICAgICAgICAgICAgeyJvcyI6IFsidmVyc2lv
biJdLCAicHJvY2Vzc29yIjogWyJiaXRzIl19KQogCiAgICAgZXhwZWN0ZWRfZGF0YSA9IHt9CiAg
ICAgbWV0YWRhdGEubG9hZF9leHBlY3RlZCA9IGxhbWJkYSBfLCBfXywgdGVzdF9wYXRoLCAqYXJn
czogZXhwZWN0ZWRfZGF0YS5nZXQodGVzdF9wYXRoKQogICAgIGZvciB0ZXN0X3BhdGgsIHRlc3Rf
aWRzLCB0ZXN0X3R5cGUsIG1hbmlmZXN0X3N0ciBpbiB0ZXN0czoKKyAgICAgICAgdGVzdF9wYXRo
ID0gdXRpbHMudG9fb3NfcGF0aCh0ZXN0X3BhdGgpCiAgICAgICAgIGV4cGVjdGVkX2RhdGFbdGVz
dF9wYXRoXSA9IG1hbmlmZXN0dXBkYXRlLmNvbXBpbGUoQnl0ZXNJTyhtYW5pZmVzdF9zdHIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLyIsCkBAIC0xMDksNyArMTExLDcgQEAgZGVmIGNyZWF0ZV9sb2coZW50
cmllcyk6CiAgICAgICAgICAgICBnZXRhdHRyKGxvZ2dlciwgYWN0aW9uKSgqKmt3YXJncykKICAg
ICAgICAgbG9nZ2VyLnJlbW92ZV9oYW5kbGVyKGhhbmRsZXIpCiAgICAgZWxzZToKLSAgICAgICAg
anNvbi5kdW1wKGVudHJpZXMsIGRhdGEpCisgICAgICAgIGRhdGEud3JpdGUoanNvbi5kdW1wcyhl
bnRyaWVzKS5lbmNvZGUoKSkKICAgICBkYXRhLnNlZWsoMCkKICAgICByZXR1cm4gZGF0YQogCkBA
IC0xMzMsMTEgKzEzNSw5IEBAIGRlZiBjcmVhdGVfdGVzdF9tYW5pZmVzdCh0ZXN0cywgdXJsX2Jh
c2U9Ii8iKToKICAgICByZXR1cm4gbQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lv
blswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0
IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAi
IiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAg
ICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTE1NSwxMSArMTU1LDkgQEAgZGVmIHRlc3RfdXBk
YXRlXzAoKToKICAgICBhc3NlcnQgdXBkYXRlZFswXVsxXS5pc19lbXB0eQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV8xKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xNzgsMTEg
KzE3Niw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8xKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5f
aW5mbykgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9y
dCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8xKCk6CiAgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAg
ICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAg
IFt0ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTIxOSwxMSArMjE1LDkgQEAg
ZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8xKCk6CiAgICAgICAgICJleHBlY3Rl
ZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfa25vd25f
aW50ZXJtaXR0ZW50XzIoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBQQVNTIiIi
KV0KIApAQCAtMjQ0LDExICsyMzgsOSBAQCBkZWYgdGVzdF91cGRhdGVfa25vd25faW50ZXJtaXR0
ZW50XzIoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2V4aXN0aW5nX2tub3duX2ludGVybWl0dGVudCgpOgogICAgIHRlc3RzID0gWygi
cGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAg
ICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFd
CiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXSIiIildCiAKQEAgLTI4NywxMSArMjc5LDkgQEAg
ZGVmIHRlc3RfdXBkYXRlX2V4aXN0aW5nX2tub3duX2ludGVybWl0dGVudCgpOgogICAgICAgICAi
ZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBBU1MiLCAiRVJST1IiLCAiRkFJTCJd
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX3JlbW92ZV9wcmV2aW91c19pbnRlcm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC0zMzUsOCArMzI1LDYgQEAg
ZGVmIHRlc3RfdXBkYXRlX3JlbW92ZV9wcmV2aW91c19pbnRlcm1pdHRlbnQoKToKICAgICAgICAg
ImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkVSUk9SIl0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfbmV3X3Rlc3Rfd2l0aF9pbnRlcm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIE5vbmUpXQogCkBAIC0zNzQsOCAr
MzYyLDYgQEAgZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50KCk6CiAg
ICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0K
IAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVz
dF91cGRhdGVfZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIE5vbmUpXQogCkBAIC00MDMs
MTEgKzM4OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9leHBlY3RlZF90aWVfcmVzb2x1dGlvbigpOgog
ICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJd
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX3Jlb3JkZXJfZXhwZWN0ZWQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0
Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVj
dGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC00NDYsMTAgKzQzMCw4IEBAIGRlZiB0ZXN0X3Vw
ZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVu
X2luZm8pID09IFsiRkFJTCIsICJQQVNTIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5kX3ByZXNlcnZlX3VuY2hhbmdl
ZF9leHBlY3RlZF9pbnRlcm1pdHRlbnQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgogW3Rlc3QuaHRtXQog
ICBleHBlY3RlZDoKICAgICBpZiBvcyA9PSAiYW5kcm9pZCI6IFtQQVNTLCBGQUlMXQpAQCAtNDg5
LDExICs0NzEsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3ByZXNlcnZlX3VuY2hhbmdlZF9leHBl
Y3RlZF9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5m
bykgPT0gIlBBU1MiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX3Rlc3Rfd2l0aF9pbnRlcm1pdHRlbnRfdG9fb25lX2V4cGVj
dGVkX3N0YXR1cygpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAg
ICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlM
XSIiIildCiAKQEAgLTUxNCwxMCArNDk0LDggQEAgZGVmIHRlc3RfdXBkYXRlX3Rlc3Rfd2l0aF9p
bnRlcm1pdHRlbnRfdG9fb25lX2V4cGVjdGVkX3N0YXR1cygpOgogICAgICAgICAiZXhwZWN0ZWQi
LCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRVJST1IiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2ludGVybWl0dGVudF93aXRo
X2NvbmRpdGlvbnMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDoK
ICAgICBpZiBvcyA9PSAiYW5kcm9pZCI6IFtQQVNTLCBGQUlMXSIiIildCkBAIC01NDksMTAgKzUy
Nyw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6CiAg
ICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09IFsiUEFTUyIsICJUSU1FT1VUIiwgIkZB
SUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRl
ZiB0ZXN0X3VwZGF0ZV9hbmRfcmVtb3ZlX2ludGVybWl0dGVudF93aXRoX2NvbmRpdGlvbnMoKToK
LSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDoKICAgICBpZiBvcyA9PSAi
YW5kcm9pZCI6IFtQQVNTLCBGQUlMXSIiIildCkBAIC01ODQsMTEgKzU2MCw5IEBAIGRlZiB0ZXN0
X3VwZGF0ZV9hbmRfcmVtb3ZlX2ludGVybWl0dGVudF93aXRoX2NvbmRpdGlvbnMoKToKICAgICAg
ICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0gWyJQQVNTIiwgIlRJTUVPVVQiXQogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0
ZV9pbnRlcm1pdHRlbnRfZnVsbCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQor
ICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAg
ICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVRdCkBAIC02MjQsMTEgKzU5OCw5IEBA
IGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbCgpOgogICAgICAgICAiZXhwZWN0ZWQi
LCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGxf
cmVtb3ZlKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAg
IGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09
ICJtYWMiOiBbRkFJTCwgVElNRU9VVCwgUEFTU10KQEAgLTY3NSwxMSArNjQ3LDkgQEAgZGVmIHRl
c3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgICAgICAiZXhwZWN0ZWQi
LCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAg
ICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBb
dGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVP
VVRdCkBAIC03MTUsMTEgKzY4NSw5IEBAIGRlZiB0ZXN0X2Z1bGxfdXBkYXRlKCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2Z1bGxfb3JwaGFuKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTAogICAgIFtzdWJzdWIgdGVzdF0K
QEAgLTc0OCwxMSArNzE2LDkgQEAgZGVmIHRlc3RfZnVsbF9vcnBoYW4oKToKICAgICBhc3NlcnQg
bGVuKG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlbikgPT0gMQogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0
ZV9yZW9yZGVyX2V4cGVjdGVkX2Z1bGxfY29uZGl0aW9ucygpOgogICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVRdCkBAIC04
MDksMTEgKzc3NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkX2Z1bGxfY29u
ZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBB
U1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3Rfc2tpcF8wKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1d
CisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDog
RkFJTCIiIildCiAKQEAgLTgyOSwxMCArNzkzLDggQEAgZGVmIHRlc3Rfc2tpcF8wKCk6CiAgICAg
YXNzZXJ0IG5vdCB1cGRhdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfbmV3X3N1YnRlc3QoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
IGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAg
LTg1NCwxMCArODE2LDggQEAgZGVmIHRlc3RfbmV3X3N1YnRlc3QoKToKICAgICBhc3NlcnQgbmV3
X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzFdLmdldCgiZXhwZWN0ZWQiLCBk
ZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMCgpOgotICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIi
W3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBG
QUlMIiIiKV0KIApAQCAtODkzLDEwICs4NTMsOCBAQCBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVf
MCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCB7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJsaW51eCJ9
KSA9PSAiVElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMSgpOgotICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApA
QCAtOTM3LDEwICs4OTUsOCBAQCBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMSgpOgogICAgICAg
ICAiZXhwZWN0ZWQiLCBydW5faW5mb18zKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0
YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMigp
OgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJu
ZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4
cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtOTc3LDEwICs5MzMsOCBAQCBkZWYgdGVzdF91cGRhdGVf
bXVsdGlwbGVfMigpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiVElNRU9V
VCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYg
dGVzdF91cGRhdGVfbXVsdGlwbGVfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0
bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgZGVidWc6IEZBSUwKQEAg
LTEwMTksMTAgKzk3Myw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8zKCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9pZ25vcmVfZXhp
c3RpbmcoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDoKICAgICAgIGlmIGRlYnVnOiBUSU1FT1VUCkBAIC0xMDYxLDggKzEwMTMs
NiBAQCBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6CiAgICAgICAgICJleHBlY3Rl
ZCIsIHJ1bl9pbmZvXzIpID09ICJOT1RSVU4iCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0KCk6CiAgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBOb25l
KV0KIApAQCAtMTA4NSwxMCArMTAzNSw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9uZXdfdGVzdCgpOgog
ICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZHVwbGlj
YXRlKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6IEVSUk9SIiIi
KV0KIApAQCAtMTEwNywxMCArMTA1NSw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9kdXBsaWNhdGUoKToK
ICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0gIkVSUk9SIgogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9kaXNh
YmxlX2ludGVybWl0dGVudCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVj
dGVkOiBFUlJPUiIiIildCiAKQEAgLTExMjksMTAgKzEwNzUsOCBAQCBkZWYgdGVzdF91cGRhdGVf
ZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImRpc2FibGVkIiwgcnVuX2luZm9fMSkg
PT0gIlNvbWUgbWVzc2FnZSIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmls
aXR5KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6IEVSUk9SIiIi
KV0KIApAQCAtMTE2NSwxMCArMTEwOSw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9zdGFiaWxpdHlfY29u
ZGl0aW9uYWxfaW5zdGFiaWxpdHkoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikg
PT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2Z1bGwoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9
IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAgICAgIGlmIGRlYnVnOiBUSU1FT1VU
CkBAIC0xMjE3LDEwICsxMTU5LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Z1bGwoKToKICAgICAgICAg
ImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkVSUk9SIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd24o
KToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBl
eHBlY3RlZDoKICAgICAgIGlmIHJlbGVhc2Vfb3JfYmV0YTogRVJST1IKQEAgLTEyNjAsMTEgKzEy
MDAsMjkgQEAgZGVmIHRlc3RfdXBkYXRlX2Z1bGxfdW5rbm93bigpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBydW5faW5mb18yKSA9PSAiRVJST1IiCiAKIAorZGVmIHRlc3RfdXBkYXRlX2Z1bGxfdW5r
bm93bl9taXNzaW5nKCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQorICBbc3VidGVzdF9kZWxldGVkXQor
ICAgIGV4cGVjdGVkOgorICAgICAgaWYgcmVsZWFzZV9vcl9iZXRhOiBFUlJPUgorICAgICAgRkFJ
TAorIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3Qi
OiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRl
c3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz
dWJ0ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJQQVNTIn0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3Rf
ZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RhdHVzIjogIk9LIn0pXSwKKyAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz17
ImRlYnVnIjogRmFsc2UsICJyZWxlYXNlX29yX2JldGEiOiBGYWxzZX0pCisKKyAgICB1cGRhdGVk
ID0gdXBkYXRlKHRlc3RzLCBsb2dfMCwgZnVsbF91cGRhdGU9VHJ1ZSkKKyAgICBhc3NlcnQgbGVu
KHVwZGF0ZWQpID09IDAKKwogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdCgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0g
Im1hYyI6IEZBSUwKQEAgLTEyOTQsMTAgKzEyNTIsOCBAQCBkZWYgdGVzdF91cGRhdGVfZGVmYXVs
dCgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3Mg
PT0gIm1hYyI6IFRJTUVPVVQKQEAgLTEzMjYsMTAgKzEyODIsOCBAQCBkZWYgdGVzdF91cGRhdGVf
ZGVmYXVsdF8xKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9kZWZhdWx0XzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBl
Y3RlZDoKICAgICBpZiBvcyA9PSAibWFjIjogVElNRU9VVApAQCAtMTM1OCwxMCArMTMxMiw4IEBA
IGRlZiB0ZXN0X3VwZGF0ZV9kZWZhdWx0XzIoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2lu
Zm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJb
dGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNz
ZXJ0czogMgogIiIiKV0KQEAgLTEzODIsMTAgKzEzMzQsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNz
ZXJ0aW9uX2NvdW50XzAoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3Rf
aWQpLmdldCgibWluLWFzc2VydHMiKSA9PSAiMiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEo
KToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0
CiAgIG1pbi1hc3NlcnRzOiAyCiAiIiIpXQpAQCAtMTQwNiwxMCArMTM1Niw4IEBAIGRlZiB0ZXN0
X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMSgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
X3Rlc3QodGVzdF9pZCkuaGFzX2tleSgibWluLWFzc2VydHMiKSBpcyBGYWxzZQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMigpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDI2LDEwICsx
Mzc0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8yKCk6CiAgICAgYXNzZXJ0
IG5vdCB1cGRhdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5o
dG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czog
MgogIiIiKV0KQEAgLTE0NjAsMTAgKzE0MDYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9u
X2NvdW50XzMoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdl
dCgibWluLWFzc2VydHMiKSA9PSAiMiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0iIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0iIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgKCJhc3NlcnRpb25fY291bnQiLCB7InRlc3QiOiB0ZXN0X2lkLApAQCAt
MTQ5MSwxMSArMTQzNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfNCgpOgog
ICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuaGFzX2tleSgibWluLWFz
c2VydHMiKSBpcyBGYWxzZQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9
PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBv
cnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAg
ICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAg
ICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAg
ICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2FuX2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwg
ImJhciJdfSldKQpAQCAtMTUwOCwxMSArMTQ1MCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzAo
KToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJmb28i
XQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sc2FuXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19k
aXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRo
L3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbHNhbi1hbGxvd2VkOiBbZm9vXSIi
IildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2FuX2xlYWsiLCB7InNjb3BlIjogInBh
dGgvdG8vIiwKQEAgLTE1MjgsMTMgKzE0NjgsMTEgQEAgbHNhbi1hbGxvd2VkOiBbZm9vXSIiIild
CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxzYW4tYWxsb3dlZCIpID09IFsiYmF6Iiwg
ImZvbyJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX2xzYW5fMigpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0
bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC9f
X2Rpcl9fIiwgWyJwYXRoL19fZGlyX18iXSwgTm9uZSwgIiIiCisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAg
ICAgICgicGF0aC9fX2Rpcl9fIiwgWyJwYXRoL19fZGlyX18iXSwgTm9uZSwgYiIiIgogbHNhbi1h
bGxvd2VkOiBbZm9vXSIiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGly
X2lkXSwgTm9uZSwgIiIpXQorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9p
ZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2FuX2xlYWsiLCB7
InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdLApAQCAtMTU1MCwxMSArMTQ4OCw5IEBAIGxzYW4t
YWxsb3dlZDogW2Zvb10iIiIpLAogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJsc2FuLWFs
bG93ZWQiKSA9PSBbImJheiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xzYW5fMygpOgotICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICB0ZXN0cyA9
IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisg
ICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiKV0KIAog
ICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoImxzYW5fbGVhayIsIHsic2NvcGUiOiAicGF0aC90by8i
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogWyJmb28i
LCAiYmFyIl19KV0sCkBAIC0xNTcyLDExICsxNTA4LDkgQEAgZGVmIHRlc3RfdXBkYXRlX2xzYW5f
MygpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJh
eiIsICJmb28iXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkz
IikKIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIi
W3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAg
ZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC0xNTk0LDExICsxNTI4LDkgQEAgZGVmIHRlc3RfdXBk
YXRlX3dwdHJlcG9ydF8wKCk6CiAgICAgYXNzZXJ0IHVwZGF0ZWRbMF1bMV0uaXNfZW1wdHkKIAog
Ci1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAg
ICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91
cGRhdGVfd3B0cmVwb3J0XzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19k
aXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0
aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2cgPSB7InJ1bl9p
bmZvIjogZGVmYXVsdF9ydW5faW5mby5jb3B5KCksCiAgICAgICAgICAgICJyZXN1bHRzIjogW10s
CkBAIC0xNjExLDExICsxNTQzLDkgQEAgZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6CiAg
ICAgYXNzZXJ0IHVwZGF0ZWRbMF1bMV0uZ2V0KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiJdCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2xlYWtfdG90YWxfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9f
X2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJw
YXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiKV0KIAogICAgIGxvZ18wID0gc3Vp
dGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzIjogImRlZmF1bHQiLApA
QCAtMTYzMCwxMSArMTU2MCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzAoKToKICAg
ICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldCgibGVhay10aHJlc2hvbGQiKSA9PSBbJ2RlZmF1bHQ6
NTEyMDAnXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0g
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikK
IGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAo
InBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAg
ICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBs
b2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvY2VzcyI6ICJk
ZWZhdWx0IiwKQEAgLTE2NDYsMTEgKzE1NzQsOSBAQCBkZWYgdGVzdF91cGRhdGVfbGVha190b3Rh
bF8xKCk6CiAgICAgYXNzZXJ0IG5vdCB1cGRhdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMigpOgot
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
ICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRd
LCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9s
b2coWygibW96bGVha190b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLApAQCAtMTY2MywxMSAr
MTU4OSw5IEBAIGxlYWstdG90YWw6IDExMCIiIildCiAgICAgYXNzZXJ0IG5vdCB1cGRhdGVkCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2xlYWtfdG90YWxfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9f
X2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBh
dGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMDAiIiIp
XQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190b3RhbCIsIHsic2NvcGUiOiAi
cGF0aC90by8iLApAQCAtMTY4MywxMSArMTYwNyw5IEBAIGxlYWstdG90YWw6IDEwMCIiIildCiAg
ICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxlYWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0
OjUxMjAwJ10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAot
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3Rv
L3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAg
KCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAg
ICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIiIKIGxlYWstdG90
YWw6IDExMCIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbCkBAIC0xNzE2LDggKzE2Mzgs
NiBAQCBjbGFzcyBVcGRhdGVSdW5uZXIoU3RlcFJ1bm5lcik6CiAgICAgc3RlcHMgPSBbVGVzdFN0
ZXBdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAg
ICAgICAgICAgICAgICByZWFzb249InVwZGF0ZS5zdGF0ZSBkb2Vzbid0IHN1cHBvcnQgcHkzIikK
IGRlZiB0ZXN0X3VwZGF0ZV9waWNrbGUoKToKICAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVkbG9nLlN0
cnVjdHVyZWRMb2dnZXIoImV4cGVjdGVkX3Rlc3QiKQogICAgIGFyZ3MgPSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rz
L3Rlc3Rfd3B0dGVzdC5weQppbmRleCA5YmIzZTFmZDM0ZTM3YzQ0MzBmNzUyYjg3ZTRiYjRlM2Jm
YTdmOTU5Li5kYmNjZDkwZTMzOTU4MGE4ZDVmYTEwMDViZTA0MzQwOTVjNDY4MjY4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKQEAgLTEsMzUgKzEsMzQgQEAKLWltcG9ydCBweXRlc3QK
LWltcG9ydCBzeXMKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGZyb20gbW9jayBpbXBvcnQgTW9j
awogCiBmcm9tIG1hbmlmZXN0IGltcG9ydCBtYW5pZmVzdCBhcyB3cHRtYW5pZmVzdAotZnJvbSBt
YW5pZmVzdC5pdGVtIGltcG9ydCBUZXN0aGFybmVzc1Rlc3QKK2Zyb20gbWFuaWZlc3QuaXRlbSBp
bXBvcnQgVGVzdGhhcm5lc3NUZXN0LCBSZWZUZXN0Citmcm9tIG1hbmlmZXN0LnV0aWxzIGltcG9y
dCB0b19vc19wYXRoCiBmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkLCB3cHR0ZXN0CiAK
LWRpcl9pbmlfMCA9ICIiIlwKK2Rpcl9pbmlfMCA9IGIiIiJcCiBwcmVmczogW2E6Yl0KICIiIgog
Ci1kaXJfaW5pXzEgPSAiIiJcCitkaXJfaW5pXzEgPSBiIiIiXAogcHJlZnM6IFtAUmVzZXQsIGI6
Y10KIG1heC1hc3NlcnRzOiAyCiBtaW4tYXNzZXJ0czogMQogdGFnczogW2IsIGNdCiAiIiIKIAot
ZGlyX2luaV8yID0gIiIiXAorZGlyX2luaV8yID0gYiIiIlwKIGxzYW4tbWF4LXN0YWNrLWRlcHRo
OiA0MgogIiIiCiAKLXRlc3RfMCA9ICIiIlwKK3Rlc3RfMCA9IGIiIiJcCiBbMC5odG1sXQogICBw
cmVmczogW2M6ZF0KICAgbWF4LWFzc2VydHM6IDMKICAgdGFnczogW2EsIEBSZXNldF0KICIiIgog
Ci10ZXN0XzEgPSAiIiJcCit0ZXN0XzEgPSBiIiIiXAogWzEuaHRtbF0KICAgcHJlZnM6CiAgICAg
aWYgb3MgPT0gJ3dpbic6IFthOmIsIGM6ZF0KQEAgLTM3LDEyICszNiwxMiBAQCB0ZXN0XzEgPSAi
IiJcCiAgICAgaWYgb3MgPT0gJ3dpbic6IEZBSUwKICIiIgogCi10ZXN0XzIgPSAiIiJcCit0ZXN0
XzIgPSBiIiIiXAogWzIuaHRtbF0KICAgbHNhbi1tYXgtc3RhY2stZGVwdGg6IDQyCiAiIiIKIAot
dGVzdF8zID0gIiIiXAordGVzdF8zID0gYiIiIlwKIFszLmh0bWxdCiAgIFtzdWJ0ZXN0MV0KICAg
ICBleHBlY3RlZDogW1BBU1MsIEZBSUxdCkBAIC01NCwzMiArNTMsMzIgQEAgdGVzdF8zID0gIiIi
XAogICAgIGV4cGVjdGVkOiBGQUlMCiAiIiIKIAotdGVzdF80ID0gIiIiXAordGVzdF80ID0gYiIi
IlwKIFs0Lmh0bWxdCiAgIGV4cGVjdGVkOiBGQUlMCiAiIiIKIAotdGVzdF81ID0gIiIiXAordGVz
dF81ID0gYiIiIlwKIFs1Lmh0bWxdCiAiIiIKIAotdGVzdF82ID0gIiIiXAordGVzdF82ID0gYiIi
IlwKIFs2Lmh0bWxdCiAgIGV4cGVjdGVkOiBbT0ssIEZBSUxdCiAiIiIKIAotdGVzdF83ID0gIiIi
XAordGVzdF83ID0gYiIiIlwKIFs3Lmh0bWxdCiAgIGJsaW5rX2V4cGVjdF9hbnlfc3VidGVzdF9z
dGF0dXM6IHllcAogIiIiCiAKLXRlc3RfZnV6enkgPSAiIiJcCit0ZXN0X2Z1enp5ID0gYiIiIlwK
IFtmdXp6eS5odG1sXQogICBmdXp6eTogZnV6enktcmVmLmh0bWw6MTsyMDAKICIiIgogCiAKLXRl
c3RoYXJuZXNzX3Rlc3QgPSAiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cit0ZXN0aGFybmVzc190ZXN0ID0gYiIiIjxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4iIiIKIAogCkBAIC0xMTcsOCArMTE2LDYgQEAg
ZGVmIG1ha2VfdGVzdF9vYmplY3QodGVzdF9uYW1lLAogICAgIHJldHVybiB3cHR0ZXN0LmZyb21f
bWFuaWZlc3QodGVzdHMsIHRlc3QsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEuZ2V0
X3Rlc3QodGVzdC5pZCkpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGlu
IHB5MyIpCiBkZWYgdGVzdF9tZXRhZGF0YV9pbmhlcml0KCk6CiAgICAgaXRlbXMgPSBbKCJ0ZXN0
IiwgImEiLCAxMCksICgidGVzdCIsICJhL2IiLCAxMCksICgidGVzdCIsICJjIiwgMTApXQogICAg
IGluaGVyaXRfbWV0YWRhdGEgPSBbCkBAIC0xMzYsOCArMTMzLDYgQEAgZGVmIHRlc3RfbWV0YWRh
dGFfaW5oZXJpdCgpOgogICAgIGFzc2VydCB0ZXN0X29iai50YWdzID09IHsiYSIsICJkaXI6YSJ9
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVz
dF9jb25kaXRpb25hbCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3Qi
LCAiYS9iIiwgMTApLCAoInRlc3QiLCAiYyIsIDEwKV0KIApAQCAtMTQ3LDggKzE0Miw2IEBAIGRl
ZiB0ZXN0X2NvbmRpdGlvbmFsKCk6CiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0g
IkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCiBk
ZWYgdGVzdF9tZXRhZGF0YV9sc2FuX3N0YWNrX2RlcHRoKCk6CiAgICAgaXRlbXMgPSBbKCJ0ZXN0
IiwgImEiLCAxMCksICgidGVzdCIsICJhL2IiLCAxMCldCiAKQEAgLTE3Miw4ICsxNjUsNiBAQCBk
ZWYgdGVzdF9tZXRhZGF0YV9sc2FuX3N0YWNrX2RlcHRoKCk6CiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmxzYW5fbWF4X3N0YWNrX2RlcHRoID09IDQyCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQg
Y29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIHRlc3Rfb2JqID0g
bWFrZV90ZXN0X29iamVjdCh0ZXN0XzMsICJhLzMuaHRtbCIsIDMsICgidGVzdCIsICJhIiwgNCks
IE5vbmUsIEZhbHNlKQogICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RlZCgic3VidGVzdDEiKSA9
PSAiUEFTUyIKQEAgLTE4NCw1NyArMTc1LDUwIEBAIGRlZiB0ZXN0X3N1YnRlc3RzKCk6CiAgICAg
YXNzZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVybWl0dGVudCgic3VidGVzdDMiKSA9PSBbXQogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfZXhw
ZWN0ZWRfZmFpbCgpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0XzQsICJh
LzQuaHRtbCIsIDQsICgidGVzdCIsICJhIiwgNSksIE5vbmUsIEZhbHNlKQogICAgIGFzc2VydCB0
ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9p
bnRlcm1pdHRlbnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblsw
XSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lv
biBpbiBweTMiKQogZGVmIHRlc3Rfbm9fZXhwZWN0ZWQoKToKICAgICB0ZXN0X29iaiA9IG1ha2Vf
dGVzdF9vYmplY3QodGVzdF81LCAiYS81Lmh0bWwiLCA1LCAoInRlc3QiLCAiYSIsIDYpLCBOb25l
LCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiT0siCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVybWl0dGVudCgpID09IFtdCiAKIAotQHB5dGVzdC5tYXJr
LnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249
ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRl
bnQoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF82LCAiYS82Lmh0bWwi
LCA2LCAoInRlc3QiLCAiYSIsIDcpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmou
ZXhwZWN0ZWQoKSA9PSAiT0siCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVybWl0dGVu
dCgpID09IFsiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGlu
IHB5MyIpCiBkZWYgdGVzdF9leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzKCk6CiAgICAgdGVzdF9v
YmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNywgImEvNy5odG1sIiwgNywgKCJ0ZXN0IiwgImEi
LCA4KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9L
IgogICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzKCkgaXMgVHJ1
ZQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRl
c3RfbWV0YWRhdGFfZnV6enkoKToKLSAgICBtYW5pZmVzdF9kYXRhID0gewotICAgICAgICAiaXRl
bXMiOiB7InJlZnRlc3QiOiB7ImEvZnV6enkuaHRtbCI6IFtbImEvZnV6enkuaHRtbCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyIvYS9mdXp6eS1y
ZWYuaHRtbCIsICI9PSJdXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsiZnV6enkiOiBbW1siL2EvZnV6enkuaHRtbCIsICcvYS9mdXp6eS1yZWYuaHRt
bCcsICc9PSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1syLCAzXSwgWzEwLCAxNV1dXV19XV19fSwKLSAgICAgICAgInBhdGhz
IjogeyJhL2Z1enp5Lmh0bWwiOiBbIjAiKjQwLCAicmVmdGVzdCJdfSwKLSAgICAgICAgInZlcnNp
b24iOiA3LAotICAgICAgICAidXJsX2Jhc2UiOiAiLyJ9Ci0gICAgbWFuaWZlc3QgPSB3cHRtYW5p
ZmVzdC5NYW5pZmVzdC5mcm9tX2pzb24oIi4iLCBtYW5pZmVzdF9kYXRhKQorICAgIGl0ZW0gPSBS
ZWZUZXN0KCIuIiwgImEvZnV6enkuaHRtbCIsICIvIiwgImEvZnV6enkuaHRtbCIsCisgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlcz1bWyIvYS9mdXp6eS1yZWYuaHRtbCIsICI9PSJdXSwKKyAg
ICAgICAgICAgICAgICAgICBmdXp6eT1bW1siL2EvZnV6enkuaHRtbCIsICcvYS9mdXp6eS1yZWYu
aHRtbCcsICc9PSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW1syLCAzXSwgWzEwLCAx
NV1dXV0pCisgICAgcyA9IE1vY2socmVsX3BhdGg9ImEvZnV6enkuaHRtbCIsIHJlbF9wYXRoX3Bh
cnRzPSgiYSIsICJmdXp6eS5odG1sIiksIGhhc2g9IjAiKjQwKQorICAgIHMubWFuaWZlc3RfaXRl
bXMgPSBNb2NrKHJldHVybl92YWx1ZT0oaXRlbS5pdGVtX3R5cGUsIFtpdGVtXSkpCisKKworICAg
IG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QoKQorCisgICAgYXNzZXJ0IG1hbmlmZXN0
LnVwZGF0ZShbKHMsIFRydWUpXSkgaXMgVHJ1ZQorCiAgICAgdGVzdF9tZXRhZGF0YSA9IG1hbmlm
ZXN0ZXhwZWN0ZWQuc3RhdGljLmNvbXBpbGUoQnl0ZXNJTyh0ZXN0X2Z1enp5KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2Nsc19nZXR0
ZXI9bWFuaWZlc3RleHBlY3RlZC5kYXRhX2Nsc19nZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXRoPSJhL2Z1enp5Lmh0bWwi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
bF9iYXNlPSIvIikKIAotICAgIHRlc3QgPSBtYW5pZmVzdC5pdGVycGF0aCgiYS9mdXp6eS5odG1s
IikubmV4dCgpCisgICAgdGVzdCA9IG5leHQobWFuaWZlc3QuaXRlcnBhdGgodG9fb3NfcGF0aCgi
YS9mdXp6eS5odG1sIikpKQogICAgIHRlc3Rfb2JqID0gd3B0dGVzdC5mcm9tX21hbmlmZXN0KG1h
bmlmZXN0LCB0ZXN0LCBbXSwgdGVzdF9tZXRhZGF0YS5nZXRfdGVzdCh0ZXN0LmlkKSkKIAogICAg
IGFzc2VydCB0ZXN0X29iai5mdXp6eSA9PSB7KCcvYS9mdXp6eS5odG1sJywgJy9hL2Z1enp5LXJl
Zi5odG1sJywgJz09Jyk6IFtbMiwgM10sIFsxMCwgMTVdXX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci91cGRhdGUvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5
CmluZGV4IDI2MjYxODNmYzgwZGJjNzVkM2QyODVkZTc5YTdkMzg2ZjUzY2U2ZTMuLjc4Y2RhOWMy
ZDY1NWY0MmQ2ODExM2Y3OTEwN2UyNGFlNDE3YWZmM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci91cGRhdGUvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5w
eQpAQCAtMTQsNyArMTQsNyBAQCBkZWYgcmVtb3ZlX2xvZ2dpbmdfYXJncyhhcmdzKToKIAogICAg
IDpwYXJhbSBhcmdzOiBEaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCiAgICAg
IiIiCi0gICAgZm9yIG5hbWUgaW4gYXJncy5rZXlzKCk6CisgICAgZm9yIG5hbWUgaW4gbGlzdChh
cmdzLmtleXMoKSk6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgibG9nXyIpOgogICAgICAg
ICAgICAgYXJncy5wb3AobmFtZSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9z
dGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKaW5kZXggNjRkYmYxMTgwNjA0
Y2Q4ZGY3YTQ2OGUwMzY0NDdmOTViODAzNzFiMC4uZjhhODM1MjVjYmQ0NzA2YmRmYmM5OWE1MThk
MmJhYzEyM2QzNGU5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0ZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5CkBAIC0xMSw3ICsxMSw3IEBAIGNsYXNz
IEJhc2VTdGF0ZShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICAgICAgbG9n
Z2VyLmRlYnVnKCJObyBleGlzdGluZyBzdGF0ZSBmb3VuZCIpCi0gICAgICAgIHJldHVybiBvYmpl
Y3QuX19uZXdfXyhjbHMsIGxvZ2dlcikKKyAgICAgICAgcmV0dXJuIHN1cGVyKEJhc2VTdGF0ZSwg
Y2xzKS5fX25ld19fKGNscykKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIpOgogICAg
ICAgICAiIiJPYmplY3QgY29udGFpbmluZyBzdGF0ZSB2YXJpYWJsZXMgY3JlYXRlZCB3aGVuIHJ1
bm5pbmcgU3RlcHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKaW5kZXggMGQ3NWExMjMyZmMwY2JhOWZiZDZlOGEz
MzYzYWRlYTA0NzVkZDQzNi4uMGE0MWY3MDZlYmMzNzYwNzI5ZDliYTU1MzA3NmZlMGQ3ZTBiNDBi
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci91cGRhdGUvc3luYy5weQpAQCAtMTAsMzcgKzEwLDYgQEAgZnJvbSAudHJlZSBpbXBvcnQg
Q29tbWl0CiAKIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5zcGxpdChfX2ZpbGVfXylb
MF0pCiAKLWJzZF9saWNlbnNlID0gIiIiVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9ucyBvZiB3b3JrcyBt
dXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwgdGhpcwotICBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvcHlyaWdo
dAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSAgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgd29yayB3aXRo
b3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotCi1USElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUwotSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLUlNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi1BUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUKLUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLVBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotIiIiCi0KIAogZGVmIGNvcHlfd3B0X3RyZWUodHJlZSwgZGVzdCwgZXhj
bHVkZXM9Tm9uZSwgaW5jbHVkZXM9Tm9uZSk6CiAgICAgIiIiQ29weSB0aGUgd29ya2luZyBjb3B5
IG9mIGEgVHJlZSB0byBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KQEAgLTg0LDE2ICs1Myw2IEBA
IGRlZiBjb3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1ZGVzPU5v
bmUpOgogICAgICAgICBkZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgZGVzdGluYXRpb24s
IG9zLnBhdGguc3BsaXQoc291cmNlKVsxXSkKICAgICAgICAgc2h1dGlsLmNvcHkyKHNvdXJjZV9w
YXRoLCBkZXN0X3BhdGgpCiAKLSAgICBhZGRfbGljZW5zZShkZXN0KQotCi0KLWRlZiBhZGRfbGlj
ZW5zZShkZXN0KToKLSAgICAiIiJXcml0ZSB0aGUgYnNkIGxpY2Vuc2Ugc3RyaW5nIHRvIGEgTElD
RU5TRSBmaWxlLgotCi0gICAgOnBhcmFtIGRlc3Q6IERpcmVjdG9yeSBpbiB3aGljaCB0byBwbGFj
ZSB0aGUgTElDRU5TRSBmaWxlLiIiIgotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVzdCwg
IkxJQ0VOU0UiKSwgInciKSBhcyBmOgotICAgICAgICBmLndyaXRlKGJzZF9saWNlbnNlKQotCiAK
IGNsYXNzIFVwZGF0ZUNoZWNrb3V0KFN0ZXApOgogICAgICIiIlB1bGwgY2hhbmdlcyBmcm9tIHVw
c3RyZWFtIGludG8gdGhlIGxvY2FsIHN5bmMgdHJlZS4iIiIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci91cGRhdGUvdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdHJlZS5weQppbmRleCA5
MDA2ZGY2NzE5MzMyYWU1OTJlZTM4NjE0ODVkODJjMjEyNDIzYjQ4Li5mMzYyNzcwZmYxNmQzMGU0
NDlkZTg1M2Y2ODc0NjcyOTdiMGVkMDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3RyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CkBAIC0zLDYgKzMsOCBA
QCBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIAorZnJvbSBz
aXgubW92ZXMgaW1wb3J0IHJhbmdlCisKIGZyb20gLi4gaW1wb3J0IHZjcwogZnJvbSAuLnZjcyBp
bXBvcnQgZ2l0LCBoZwogCkBAIC0xNiw3ICsxOCw3IEBAIGRlZiBnZXRfdW5pcXVlX25hbWUoZXhp
c3RpbmcsIGluaXRpYWwpOgogICAgIDpwYXJhbSBpbml0aWFsOiBOYW1lLCBvciBuYW1lIHByZWZp
eCwgdG8gdXNlIiIiCiAgICAgaWYgaW5pdGlhbCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgIHJl
dHVybiBpbml0aWFsCi0gICAgZm9yIGkgaW4geHJhbmdlKGxlbihleGlzdGluZykgKyAxKToKKyAg
ICBmb3IgaSBpbiByYW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CiAgICAgICAgIHRlc3QgPSAiJXNf
JXMiICUgKGluaXRpYWwsIGkgKyAxKQogICAgICAgICBpZiB0ZXN0IG5vdCBpbiBleGlzdGluZzoK
ICAgICAgICAgICAgIHJldHVybiB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3VwZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CmluZGV4IDk2MzAyZWUy
NjdlOTA1YWE4YTQ4YWYxMmI2NTk3OGUwMjVlYmQ0OTIuLjgwZTUwOWRkMzgzYjM4ZWY0YTMzN2Vm
MTMwNzVmNTg4MjZjZjgxODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CkBAIC0xLDYgKzEsOCBAQAog
aW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVydmFsdWVzCisKIGZy
b20gLm1ldGFkYXRhIGltcG9ydCBNZXRhZGF0YVVwZGF0ZVJ1bm5lcgogZnJvbSAuc3luYyBpbXBv
cnQgU3luY0Zyb21VcHN0cmVhbVJ1bm5lcgogZnJvbSAudHJlZSBpbXBvcnQgR2l0VHJlZSwgSGdU
cmVlLCBOb1ZDU1RyZWUKQEAgLTEwOSw3ICsxMTEsNyBAQCBjbGFzcyBSZW1vdmVPYnNvbGV0ZShT
dGVwKToKICAgICAgICAgc3RhdGUudGVzdHNfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bInRlc3Rz
X3BhdGgiXQogICAgICAgICBzdGF0ZS5tZXRhZGF0YV9wYXRoID0gc3RhdGUucGF0aHNbIi8iXVsi
bWV0YWRhdGFfcGF0aCJdCiAKLSAgICAgICAgZm9yIHVybF9wYXRocyBpbiBwYXRocy5pdGVydmFs
dWVzKCk6CisgICAgICAgIGZvciB1cmxfcGF0aHMgaW4gaXRlcnZhbHVlcyhwYXRocyk6CiAgICAg
ICAgICAgICB0ZXN0c19wYXRoID0gdXJsX3BhdGhzWyJ0ZXN0c19wYXRoIl0KICAgICAgICAgICAg
IG1ldGFkYXRhX3BhdGggPSB1cmxfcGF0aHNbIm1ldGFkYXRhX3BhdGgiXQogICAgICAgICAgICAg
Zm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhtZXRhZGF0YV9wYXRo
KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93M2MtaW1wb3J0LmxvZwppbmRleCBhYjA2YzQxYWY5OGY1YzJjODhjYjg5ZWU1OGJiN2FhMjM0
ZTkwMjQzLi5mYWFmODZmZWQ2YTYzOGRkYjUxODQ0NjdhOGUwNzA4MjM3YTQ2OWViIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1p
bXBvcnQubG9nCkBAIC0yMCwxMCArMjAsMTIgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhwZWN0ZWQucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5CiAvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2ZvbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
bWFuaWZlc3RleHBlY3RlZC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5q
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd2ViZHJpdmVyX3NlcnZlci5weQppbmRleCAxNjJmZmFlM2ZjOTNhZWViMjlhMjUzNWU4
MjlhZjQ1YjllMTVjMWYzLi4xOGJlNjgwNjA3NGRhODY4NWNkMzkyODYxOTQ1NWVkMjc1YmZlOGVl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd2ViZHJpdmVyX3NlcnZlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd2ViZHJpdmVyX3NlcnZlci5weQpAQCAtOCw2ICs4LDggQEAgaW1wb3J0IHRyYWNl
YmFjawogCiBpbXBvcnQgbW96cHJvY2VzcwogCitmcm9tIC5wcm9jZXNzIGltcG9ydCBjYXN0X2Vu
dgorCiAKIF9fYWxsX18gPSBbIlNlbGVuaXVtU2VydmVyIiwgIkNocm9tZURyaXZlclNlcnZlciIs
ICJDV1RDaHJvbWVEcml2ZXJTZXJ2ZXIiLAogICAgICAgICAgICAiRWRnZUNocm9taXVtRHJpdmVy
U2VydmVyIiwgIk9wZXJhRHJpdmVyU2VydmVyIiwgIkdlY2tvRHJpdmVyU2VydmVyIiwKQEAgLTU1
LDcgKzU3LDcgQEAgY2xhc3MgV2ViRHJpdmVyU2VydmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
X3Byb2MgPSBtb3pwcm9jZXNzLlByb2Nlc3NIYW5kbGVyKAogICAgICAgICAgICAgc2VsZi5fY21k
LAogICAgICAgICAgICAgcHJvY2Vzc091dHB1dExpbmU9c2VsZi5vbl9vdXRwdXQsCi0gICAgICAg
ICAgICBlbnY9c2VsZi5lbnYsCisgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoc2VsZi5lbnYpLAog
ICAgICAgICAgICAgc3RvcmVPdXRwdXQ9RmFsc2UpCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoIlN0YXJ0aW5nIFdlYkRyaXZlcjogJXMiICUgJyAnLmpvaW4oc2VsZi5fY21kKSkKQEAgLTgy
LDE0ICs4NCwxMyBAQCBjbGFzcyBXZWJEcml2ZXJTZXJ2ZXIob2JqZWN0KToKIAogICAgIGRlZiBz
dG9wKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0b3Bw
aW5nIFdlYkRyaXZlciIpCi0gICAgICAgIGlmIHNlbGYuaXNfYWxpdmU6CisgICAgICAgIGlmIHNl
bGYuaXNfYWxpdmUoKToKICAgICAgICAgICAgIGtpbGxfcmVzdWx0ID0gc2VsZi5fcHJvYy5raWxs
KCkKICAgICAgICAgICAgIGlmIGZvcmNlIGFuZCBraWxsX3Jlc3VsdCAhPSAwOgogICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9wcm9jLmtpbGwoOSkKICAgICAgICAgICAgIHJldHVybiBraWxs
X3Jlc3VsdAotICAgICAgICByZXR1cm4gbm90IHNlbGYuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJu
IG5vdCBzZWxmLmlzX2FsaXZlKCkKIAotICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19hbGl2ZShz
ZWxmKToKICAgICAgICAgcmV0dXJuIGhhc2F0dHIoc2VsZi5fcHJvYywgInByb2MiKSBhbmQgc2Vs
Zi5fcHJvYy5wb2xsKCkgaXMgTm9uZQogCkBAIC0xODQsNyArMTg1LDExIEBAIGNsYXNzIEdlY2tv
RHJpdmVyU2VydmVyKFdlYkRyaXZlclNlcnZlcik6CiAgICAgICAgICAgICAgICAgIGhvc3Q9IjEy
Ny4wLjAuMSIsIHBvcnQ9Tm9uZSwgYXJncz1Ob25lKToKICAgICAgICAgZW52ID0gb3MuZW52aXJv
bi5jb3B5KCkKICAgICAgICAgZW52WyJSVVNUX0JBQ0tUUkFDRSJdID0gIjEiCi0gICAgICAgIFdl
YkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgaG9zdD1ob3N0LCBw
b3J0PXBvcnQsIGVudj1lbnYsIGFyZ3M9YXJncykKKyAgICAgICAgV2ViRHJpdmVyU2VydmVyLl9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1w
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MpCiAgICAgICAgIHNl
bGYubWFyaW9uZXR0ZV9wb3J0ID0gbWFyaW9uZXR0ZV9wb3J0CiAKICAgICBkZWYgbWFrZV9jb21t
YW5kKHNlbGYpOgpAQCAtMjA5LDcgKzIxNCwxMSBAQCBjbGFzcyBTZXJ2b0RyaXZlclNlcnZlcihX
ZWJEcml2ZXJTZXJ2ZXIpOgogICAgICAgICAgICAgICAgICBwb3J0PU5vbmUsIGFyZ3M9Tm9uZSk6
CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUlVTVF9CQUNL
VFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52LCBhcmdzPWFyZ3MpCisg
ICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKIAog
ICAgIGRlZiBtYWtlX2NvbW1hbmQoc2VsZik6CkBAIC0yNjQsNyArMjczLDcgQEAgZGVmIHdhaXRf
Zm9yX3NlcnZpY2UoYWRkciwgdGltZW91dD02MCk6CiAgICAgICAgIGV4Y2VwdCBzb2NrZXQudGlt
ZW91dDoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBl
OgotICAgICAgICAgICAgaWYgZVswXSAhPSBlcnJuby5FQ09OTlJFRlVTRUQ6CisgICAgICAgICAg
ICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKICAgICAgICAgICAgICAgICByYWlz
ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGlu
ZS5weQppbmRleCA5MjNiZGFhNTU4NTdlNzkzZThkNmU4YzU4NzE2NzM2MGFlZDRhZTk0Li45NjIy
N2JiNDY5MDVlMTY4ZDY5MWUzNTA5NDZkYmZiYTY4MDk4MjcxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5l
LnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv
bgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9u
CiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTYsOSArMTYsOSBA
QCBkZWYgYWJzX3BhdGgocGF0aCk6CiAKIAogZGVmIHVybF9vcl9wYXRoKHBhdGgpOgotICAgIGlt
cG9ydCB1cmxwYXJzZQorICAgIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
cGFyc2UKIAotICAgIHBhcnNlZCA9IHVybHBhcnNlLnVybHBhcnNlKHBhdGgpCisgICAgcGFyc2Vk
ID0gdXJscGFyc2UocGF0aCkKICAgICBpZiBsZW4ocGFyc2VkLnNjaGVtZSkgPiAyOgogICAgICAg
ICByZXR1cm4gcGF0aAogICAgIGVsc2U6CkBAIC0zNyw3ICszNyw3IEBAIGRlZiByZXF1aXJlX2Fy
Zyhrd2FyZ3MsIG5hbWUsIHZhbHVlX2Z1bmM9Tm9uZSk6CiBkZWYgY3JlYXRlX3BhcnNlcihwcm9k
dWN0X2Nob2ljZXM9Tm9uZSk6CiAgICAgZnJvbSBtb3psb2cgaW1wb3J0IGNvbW1hbmRsaW5lCiAK
LSAgICBpbXBvcnQgcHJvZHVjdHMKKyAgICBmcm9tIC4gaW1wb3J0IHByb2R1Y3RzCiAKICAgICBp
ZiBwcm9kdWN0X2Nob2ljZXMgaXMgTm9uZToKICAgICAgICAgY29uZmlnX2RhdGEgPSBjb25maWcu
bG9hZCgpCkBAIC0xMzcsNiArMTM3LDE0IEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBtYW5pZmVz
dCBsaXN0aW5nIHRlc3RzIHRvIGluY2x1ZGUiKQogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLS1za2lwLXRpbWVvdXQiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3RzIHRoYXQgYXJl
IGV4cGVjdGVkIHRvIHRpbWUgb3V0IikKKyAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJn
dW1lbnQoIi0tc2tpcC1pbXBsZW1lbnRhdGlvbi1zdGF0dXMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WyJub3QtaW1wbGVtZW50aW5nIiwgImJhY2tsb2ci
LCAiaW1wbGVtZW50aW5nIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9IlNraXAgdGVzdHMgdGhhdCBoYXZlIHRoZSBnaXZlbiBpbXBsZW1lbnRhdGlvbiBzdGF0
dXMiKQorICAgICMgVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiBRVUlDIGlzIGVuYWJsZWQgYnkgZGVm
YXVsdC4KKyAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5hYmxlLXF1
aWMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgdGVzdHMgdGhhdCByZXF1aXJlIFFV
SUMgc2VydmVyIChkZWZhdWx0OiBmYWxzZSkiKQorCiAgICAgdGVzdF9zZWxlY3Rpb25fZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLXRhZyIsIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0idGFncyIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkxhYmVscyBhcHBsaWVkIHRv
IHRlc3RzIHRvIGluY2x1ZGUgaW4gdGhlIHJ1bi4gIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJMYWJlbHMgc3RhcnRpbmcgZGlyOiBhcmUgZXF1aXZhbGVudCB0
byB0b3AtbGV2ZWwgZGlyZWN0b3JpZXMuIikKQEAgLTIxMCwxMyArMjE4LDE3IEBAIHNjaGVtZSBo
b3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBh
dGggdG8gY29uZmlnIGZpbGUiKQogICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5z
dGFsbC1mb250cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJBbGxvdyB0aGUgd3B0cnVubmVyIHRvIGluc3RhbGwgZm9udHMgb24geW91ciBzeXN0ZW0iKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iSW5zdGFsbCBhZGRpdGlvbmFsIHN5
c3RlbSBmb250cyBvbiB5b3VyIHN5c3RlbSIpCisgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVu
dCgiLS1uby1pbnN0YWxsLWZvbnRzIiwgZGVzdD0iaW5zdGFsbF9mb250cyIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG8gbm90IGlu
c3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91ciBzeXN0ZW0iKQogICAgIGNvbmZp
Z19ncm91cC5hZGRfYXJndW1lbnQoIi0tZm9udC1kaXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT1h
YnNfcGF0aCwgZGVzdD0iZm9udF9kaXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iUGF0aCB0byBsb2NhbCBmb250IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkiLCBkZWZhdWx0
PU5vbmUpCiAgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4g
YnJvd3NlciBpbiBoZWFkbGVzcyBtb2RlIiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZpZ19ncm91
cC5hZGRfYXJndW1lbnQoIi0tbm8taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVz
dD0iaGVhZGxlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3Qg
cnVuIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZSIpCisgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1
bWVudCgiLS1pbnN0cnVtZW50LXRvLWZpbGUiLCBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gd3JpdGUgaW5zdHJ1bWVudGF0aW9uIGxv
Z3MgdG8iKQogCiAgICAgYnVpbGRfdHlwZSA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZl
X2dyb3VwKCkKICAgICBidWlsZF90eXBlLmFkZF9hcmd1bWVudCgiLS1kZWJ1Zy1idWlsZCIsIGRl
c3Q9ImRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKQEAgLTI1NSwxMiArMjY3LDIwIEBAIHNj
aGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICBnZWNrb19ncm91cCA9IHBhcnNlci5hZGRfYXJn
dW1lbnRfZ3JvdXAoIkdlY2tvLXNwZWNpZmljIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tcHJlZnMtcm9vdCIsIGRlc3Q9InByZWZzX3Jvb3QiLCBhY3Rpb249InN0b3JlIiwgdHlw
ZT1hYnNfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byB0
aGUgZm9sZGVyIGNvbnRhaW5pbmcgYnJvd3NlciBwcmVmcyIpCisgICAgZ2Vja29fZ3JvdXAuYWRk
X2FyZ3VtZW50KCItLXByZWxvYWQtYnJvd3NlciIsIGRlc3Q9InByZWxvYWRfYnJvd3NlciIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
Tm9uZSwgaGVscD0iUHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBmYXN0ZXIgcmVzdGFydHMi
KQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1wcmVsb2FkLWJyb3dzZXIiLCBk
ZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxwPSJEb24ndCBwcmVsb2FkIGEgZ2Vj
a28gaW5zdGFuY2UgZm9yIGZhc3RlciByZXN0YXJ0cyIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2Fy
Z3VtZW50KCItLWRpc2FibGUtZTEwcyIsIGRlc3Q9ImdlY2tvX2UxMHMiLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVmYXVsdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJSdW4gdGVzdHMgd2l0aG91dCBlbGVjdHJvbHlzaXMgcHJlZmVyZW5jZXMiKQogICAgIGdlY2tv
X2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUtd2VicmVuZGVyIiwgZGVzdD0iZW5hYmxlX3dl
YnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iRW5hYmxlIHRoZSBXZWJSZW5kZXIgY29tcG9zaXRvciBp
biBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2Fy
Z3VtZW50KCItLW5vLWVuYWJsZS13ZWJyZW5kZXIiLCBkZXN0PSJlbmFibGVfd2VicmVuZGVyIiwg
YWN0aW9uPSJzdG9yZV9mYWxzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
IkRpc2FibGUgdGhlIFdlYlJlbmRlciBjb21wb3NpdG9yIGluIEdlY2tvLiIpCisgICAgZ2Vja29f
Z3JvdXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5hYmxlX2Zpc3Np
b24iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkVuYWJsZSBmaXNzaW9uIGluIEdlY2tvIChkZWZhdWx0cyB0byBk
aXNhYmxlZCkuIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8tZW5hYmxlLWZp
c3Npb24iLCBkZXN0PSJlbmFibGVfZmlzc2lvbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIGZpc3Npb24gaW4gR2Vja28u
IikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tc3RhY2tmaXgtZGlyIiwgZGVzdD0i
c3RhY2tmaXhfZGlyIiwgYWN0aW9uPSJzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9IlBhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgYXNzZXJ0aW9uIHN0YWNrIGZp
eGluZyBzY3JpcHRzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tc2V0cHJlZiIs
IGRlc3Q9ImV4dHJhX3ByZWZzIiwgYWN0aW9uPSdhcHBlbmQnLApAQCAtNTM0LDkgKzU1NCw2IEBA
IGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgICAgIGt3YXJnc1siY2VydHV0aWxfYmluYXJ5
Il0gPSBwYXRoCiAKICAgICBpZiBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ106Ci0gICAgICAgICMgSWYg
YSBzaW5nbGUgcHJlZiBpcyBwYXNzZWQgaW4gYXMgYSBzdHJpbmcsIG1ha2UgaXQgYSBsaXN0Ci0g
ICAgICAgIGlmIHR5cGUoa3dhcmdzWydleHRyYV9wcmVmcyddKSBpbiAoc3RyLCB1bmljb2RlKToK
LSAgICAgICAgICAgIGt3YXJnc1snZXh0cmFfcHJlZnMnXSA9IFtrd2FyZ3NbJ2V4dHJhX3ByZWZz
J11dCiAgICAgICAgIG1pc3NpbmcgPSBhbnkoJz0nIG5vdCBpbiBwcmVmYXJnIGZvciBwcmVmYXJn
IGluIGt3YXJnc1snZXh0cmFfcHJlZnMnXSkKICAgICAgICAgaWYgbWlzc2luZzoKICAgICAgICAg
ICAgIHByaW50KCJQcmVmZXJlbmNlcyB2aWEgLS1zZXRwcmVmIG11c3QgYmUgaW4ga2V5PXZhbHVl
IGZvcm1hdCIsIGZpbGU9c3lzLnN0ZGVycikKQEAgLTU1Myw2ICs1NzAsMTAgQEAgZGVmIGNoZWNr
X2FyZ3Moa3dhcmdzKToKICAgICBpZiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSBpcyBOb25l
OgogICAgICAgICBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSA9IEZhbHNlCiAKKyAgICBpZiBr
d2FyZ3NbInByZWxvYWRfYnJvd3NlciJdIGlzIE5vbmU6CisgICAgICAgICMgRGVmYXVsdCB0byBw
cmVsb2FkaW5nIGEgZ2Vja28gaW5zdGFuY2UgaWYgd2UncmUgb25seSBydW5uaW5nIGEgc2luZ2xl
IHByb2Nlc3MKKyAgICAgICAga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXSA9IGt3YXJnc1sicHJv
Y2Vzc2VzIl0gPT0gMQorCiAgICAgcmV0dXJuIGt3YXJncwogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRsb2dnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxvZ2dpbmcucHkKaW5kZXgg
NjljZWU3NDQ4NzllYjY3ODBjYjk5ZWM5MzEyMzkyMmUxNjZkOWUxNi4uNDQ0ZDFkOTYyZDI1ODcz
MTA5OTc3YjkzN2Q5NmM4NmNiMjkzY2Q4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxv
Z2dpbmcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxvZ2dpbmcucHkKQEAgLTE0LDcgKzE0LDcg
QEAgZGVmIHNldHVwKGFyZ3MsIGRlZmF1bHRzLCBmb3JtYXR0ZXJfZGVmYXVsdHM9Tm9uZSk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2RlZmF1
bHRzPWZvcm1hdHRlcl9kZWZhdWx0cykKICAgICBzZXR1cF9zdGRsaWJfbG9nZ2VyKCkKIAotICAg
IGZvciBuYW1lIGluIGFyZ3Mua2V5cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlz
KCkpOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFy
Z3MucG9wKG5hbWUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNr
ZW5kcy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkK
aW5kZXggNDVlMjE0N2ZjNGNhNTA5YTlkZTI4ZmNkY2JiNzA3ZDgyMzQ1OTcxMS4uYzUzOWQ0MzY3
ZTk0YTVlNTI1YzVkOGQ4ZTllZGMzMTE2ZThhZmZmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L2JhY2tlbmRzL2Jhc2UucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgYWJjCitmcm9tIHNp
eCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcwogCiBmcm9tIC4ubm9kZSBp
bXBvcnQgTm9kZVZpc2l0b3IKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC0xODYsMjEg
KzE4NywyMSBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICBkZWYgX2ZsYXR0ZW4o
c2VsZik6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG5vZGUgaW4gW3NlbGYsIHNlbGYu
cm9vdF06Ci0gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbm9kZS5fZGF0YS5pdGVyaXRl
bXMoKToKKyAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMobm9kZS5fZGF0
YSk6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAg
ICAgIHJ2W25hbWVdID0gdmFsdWUKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgaXRlcml0
ZW1zKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVuKCkuaXRlcml0ZW1z
KCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJpdGVtcyhzZWxmLl9mbGF0dGVuKCkpOgogICAg
ICAgICAgICAgeWllbGQgaXRlbQogCiAgICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgotICAgICAgICBm
b3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVuKCkuaXRlcmtleXMoKToKKyAgICAgICAgZm9yIGl0ZW0g
aW4gaXRlcmtleXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAog
ICAgIGRlZiBpdGVydmFsdWVzKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0
dGVuKCkuaXRlcnZhbHVlcygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHNlbGYu
X2ZsYXR0ZW4oKSk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgYXBwZW5kKHNl
bGYsIGNoaWxkKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5k
cy9jb25kaXRpb25hbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9jb25k
aXRpb25hbC5weQppbmRleCBhYWNkNzg1NzA3MmY0MjBhMjA5YWVlZmY1NTllYzJhZTI5NDE3MGJh
Li4zYjExZTgzMDEyYWI1MGZlMGVhMjQwYWUwNTZkMDJjODk2OGI2YTYwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CkBAIC0xLDQgKzEs
NSBAQAogaW1wb3J0IG9wZXJhdG9yCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQsIGl0ZXJp
dGVtcywgaXRlcmtleXMsIHRleHRfdHlwZQogCiBmcm9tIC4ubm9kZSBpbXBvcnQgTm9kZVZpc2l0
b3IsIERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsIFZh
bHVlTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUsIFZhcmlhYmxlTm9kZQogZnJvbSAuLnBhcnNl
ciBpbXBvcnQgcGFyc2UKQEAgLTQyLDkgKzQzLDcgQEAgY2xhc3MgQ29uZGl0aW9uYWxWYWx1ZShv
YmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5jb25kaXRpb25fZnVuYyhydW5faW5mbykKIAog
ICAgIGRlZiBzZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgotICAgICAgICBpZiB0eXBlKHZhbHVlKSBu
b3QgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICB2YWx1ZSA9IHVuaWNvZGUodmFsdWUp
Ci0gICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICBzZWxmLnZhbHVlID0gZW5zdXJl
X3RleHQodmFsdWUpCiAKICAgICBkZWYgdmFsdWVfYXMoc2VsZiwgdHlwZV9mdW5jKToKICAgICAg
ICAgIiIiR2V0IHZhbHVlIGFuZCBjb252ZXJ0IHRvIGEgZ2l2ZW4gdHlwZS4KQEAgLTMwMSw5ICsz
MDAsOSBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICAgICAgaWYgaXNpbnN0YW5j
ZSh2YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICB2YWx1ZV9ub2RlID0gTGlzdE5vZGUoKQogICAg
ICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWVfbm9kZS5h
cHBlbmQoVmFsdWVOb2RlKHVuaWNvZGUoaXRlbSkpKQorICAgICAgICAgICAgICAgIHZhbHVlX25v
ZGUuYXBwZW5kKFZhbHVlTm9kZSh0ZXh0X3R5cGUoaXRlbSkpKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgdmFsdWVfbm9kZSA9IFZhbHVlTm9kZSh1bmljb2RlKHZhbHVlKSkKKyAgICAgICAg
ICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICAgICAgaWYg
Y29uZGl0aW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29u
ZGl0aW9uLCBDb25kaXRpb25hbE5vZGUpOgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsX25v
ZGUgPSBDb25kaXRpb25hbE5vZGUoKQpAQCAtMzY5LDE5ICszNjgsMjMgQEAgY2xhc3MgTWFuaWZl
c3RJdGVtKG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9
CiAgICAgICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9y
IG5hbWUsIHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3Ig
bmFtZSwgdmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAgICAgIGlm
IG5hbWUgbm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZhbHVlCiAg
ICAgICAgIHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9y
IGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaXRlbSBp
biBpdGVyaXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAog
ICAgIGRlZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRl
bigpLml0ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0
ZW4oKSk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKKyAgICBkZWYgaXRlcl9wcm9wZXJ0aWVz
KHNlbGYpOgorICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9kYXRhOgorICAgICAgICAgICAgeWll
bGQgaXRlbSwgc2VsZi5fZGF0YVtpdGVtXQorCiAgICAgZGVmIHJlbW92ZV92YWx1ZShzZWxmLCBr
ZXksIHZhbHVlKToKICAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLl9kYXRhOgogICAgICAgICAg
ICAgcmV0dXJuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5CmluZGV4IDc3YjE3YTUwMzI1Yzc3MDY3
MzkxYWI2NjM5ZDBlMDI5ZTMzOTUwNDcuLjBmODJkNzAwNmI2OWVkMGU0ODUyOTAzODdiNjU3Njhi
ODU5YTg3MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAK
IGNsYXNzIE5vZGVWaXNpdG9yKG9iamVjdCk6CiAgICAgZGVmIHZpc2l0KHNlbGYsIG5vZGUpOgpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBEYXRhTm9kZShOb2RlKToKICAgICAgICAgICAgIGluZGV4
ID0gbGVuKHNlbGYuY2hpbGRyZW4pCiAgICAgICAgICAgICB3aGlsZSBpbmRleCA+IDAgYW5kIGlz
aW5zdGFuY2Uoc2VsZi5jaGlsZHJlbltpbmRleCAtIDFdLCBEYXRhTm9kZSk6CiAgICAgICAgICAg
ICAgICAgaW5kZXggLT0gMQotICAgICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGluZGV4KToKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKGluZGV4KToKICAgICAgICAgICAgICAgICBpZiBvdGhl
ci5kYXRhID09IHNlbGYuY2hpbGRyZW5baV0uZGF0YToKICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiRHVwbGljYXRlIGtleSAlcyIgJSBzZWxmLmNoaWxkcmVuW2ldLmRhdGEp
CiAgICAgICAgICAgICBzZWxmLmNoaWxkcmVuLmluc2VydChpbmRleCwgb3RoZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L3BhcnNlci5weQppbmRleCA2MmM1ZjdkM2E0Njc5Y2E5YWVhOTYxYWZlY2M2M2Yy
NWU3YTU0OTYyLi45MTFlZmFjODBmMjdlZTkyZGY3ZmJlYTU3N2M0MTQ2OTE4OTk3NzVlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKQEAgLTE0LDggKzE0LDggQEAKIAogZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBCeXRlc0lPCi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgeHJhbmdlCitm
cm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTywgdW5pY2hyCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIAogZnJvbSAubm9kZSBpbXBvcnQgKE5vZGUsIEF0
b21Ob2RlLCBCaW5hcnlFeHByZXNzaW9uTm9kZSwgQmluYXJ5T3BlcmF0b3JOb2RlLAogICAgICAg
ICAgICAgICAgICAgIENvbmRpdGlvbmFsTm9kZSwgRGF0YU5vZGUsIEluZGV4Tm9kZSwgS2V5VmFs
dWVOb2RlLCBMaXN0Tm9kZSwKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVj
dCk6CiAgICAgICAgIHNlbGYuc3RhdGUgPSBzZWxmLmxpbmVfc3RhcnRfc3RhdGUKICAgICAgICAg
c2VsZi5uZXh0X3N0YXRlID0gc2VsZi5kYXRhX2xpbmVfc3RhdGUKICAgICAgICAgc2VsZi5saW5l
X251bWJlciA9IDAKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9ICIiCiAKICAgICBkZWYgdG9rZW5p
emUoc2VsZiwgc3RyZWFtKToKICAgICAgICAgc2VsZi5yZXNldCgpCkBAIC0xMzYsOSArMTM3LDEw
IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5pbmRlbnRfbGV2
ZWxzLmFwcGVuZChzZWxmLmluZGV4KQogICAgICAgICAgICAgeWllbGQgKHRva2VuX3R5cGVzLmdy
b3VwX3N0YXJ0LCBOb25lKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgd2hpbGUgc2VsZi5p
bmRleCA8IHNlbGYuaW5kZW50X2xldmVsc1stMV06Ci0gICAgICAgICAgICAgICAgc2VsZi5pbmRl
bnRfbGV2ZWxzLnBvcCgpCi0gICAgICAgICAgICAgICAgeWllbGQgKHRva2VuX3R5cGVzLmdyb3Vw
X2VuZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9sZXZl
bHNbLTFdOgorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9s
ZXZlbHNbLTFdOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGVudF9sZXZlbHMucG9wKCkK
KyAgICAgICAgICAgICAgICAgICAgeWllbGQgKHRva2VuX3R5cGVzLmdyb3VwX2VuZCwgTm9uZSkK
ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdGVycmlibGU7IGlmIHdlIHdlcmUgcGFyc2luZyBh
biBleHByZXNzaW9uCiAgICAgICAgICAgICAgICAgIyB0aGVuIHRoZSBuZXh0X3N0YXRlIHdpbGwg
YmUgZXhwcl9vcl92YWx1ZSBidXQgd2hlbiB3ZSBkZWluZGVudAogICAgICAgICAgICAgICAgICMg
aXQgbXVzdCBhbHdheXMgYmUgYSBoZWFkaW5nIG9yIGtleSBuZXh0IHNvIHdlIGdvIGJhY2sgdG8g
ZGF0YV9saW5lX3N0YXRlCkBAIC0zMDMsNyArMzA1LDggQEAgY2xhc3MgVG9rZW5pemVyKG9iamVj
dCk6CiAKICAgICBkZWYgdmFsdWVfc3RhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuc2tpcF93aGl0
ZXNwYWNlKCkKLSAgICAgICAgaWYgc2VsZi5jaGFyKCkgaW4gKCInIiwgJyInKToKKyAgICAgICAg
YyA9IHNlbGYuY2hhcigpCisgICAgICAgIGlmIGMgaW4gKCInIiwgJyInKToKICAgICAgICAgICAg
IHF1b3RlX2NoYXIgPSBzZWxmLmNoYXIoKQogICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkKICAg
ICAgICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5zdHJpbmcsIHNlbGYuY29uc3VtZV9zdHJpbmco
cXVvdGVfY2hhcikpCkBAIC0zMTEsMTAgKzMxNCwxMiBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5jb21tZW50X3N0YXRlCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBzZWxmLmxpbmVfZW5k
X3N0YXRlCi0gICAgICAgIGVsaWYgc2VsZi5jaGFyKCkgPT0gIkAiOgorICAgICAgICBlbGlmIGMg
PT0gIkAiOgogICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkKICAgICAgICAgICAgIGZvciBfLCB2
YWx1ZSBpbiBzZWxmLnZhbHVlX2lubmVyX3N0YXRlKCk6CiAgICAgICAgICAgICAgICAgeWllbGQg
dG9rZW5fdHlwZXMuYXRvbSwgdmFsdWUKKyAgICAgICAgZWxpZiBjID09ICJbIjoKKyAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBzZWxmLmxpc3Rfc3RhcnRfc3RhdGUKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIHNlbGYuc3RhdGUgPSBzZWxmLnZhbHVlX2lubmVyX3N0YXRlCiAKQEAgLTQ5NCw3
ICs0OTksNyBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToKIAogICAgIGRlZiBkZWNvZGVfZXNj
YXBlKHNlbGYsIGxlbmd0aCk6CiAgICAgICAgIHZhbHVlID0gMAotICAgICAgICBmb3IgaSBpbiB4
cmFuZ2UobGVuZ3RoKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKICAgICAgICAg
ICAgIGMgPSBzZWxmLmNoYXIoKQogICAgICAgICAgICAgdmFsdWUgKj0gMTYKICAgICAgICAgICAg
IHZhbHVlICs9IHNlbGYuZXNjYXBlX3ZhbHVlKGMpCkBAIC01OTYsNiArNjAxLDkgQEAgY2xhc3Mg
UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmV4cHJlc3Npb25fdmFsdWVzKCkKICAg
ICAgICAgICAgIGlmIHNlbGYudG9rZW5bMF0gPT0gdG9rZW5fdHlwZXMuc3RyaW5nOgogICAgICAg
ICAgICAgICAgIHNlbGYudmFsdWUoKQorICAgICAgICAgICAgZWxpZiBzZWxmLnRva2VuWzBdID09
IHRva2VuX3R5cGVzLmxpc3Rfc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkK
KyAgICAgICAgICAgICAgICBzZWxmLmxpc3RfdmFsdWUoKQogICAgICAgICAgICAgc2VsZi5lb2Zf
b3JfZW5kX2dyb3VwKCkKICAgICAgICAgZWxpZiBzZWxmLnRva2VuWzBdID09IHRva2VuX3R5cGVz
LmF0b206CiAgICAgICAgICAgICBzZWxmLmF0b20oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvc2Vy
aWFsaXplci5weQppbmRleCAzYjI5Yzk5ZWRlN2NhYzU4ZWRlNWQ0ODIzNzY5NmUzMGM5ZDg1NmM3
Li5lYzhkODBlZDZmNzE1MWIyOTEzZjk3NWRmMGZjMzg3YTEyN2RlMTUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvc2VyaWFsaXplci5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0bWFuaWZlc3Qvc2VyaWFsaXplci5weQpAQCAtMSw3ICsxLDEwIEBACitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dAor
CiBmcm9tIC5ub2RlIGltcG9ydCBOb2RlVmlzaXRvciwgVmFsdWVOb2RlLCBMaXN0Tm9kZSwgQmlu
YXJ5RXhwcmVzc2lvbk5vZGUKIGZyb20gLnBhcnNlciBpbXBvcnQgYXRvbXMsIHByZWNlZGVuY2UK
IAotYXRvbV9uYW1lcyA9IHt2OiJAJXMiICUgayBmb3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0K
K2F0b21fbmFtZXMgPSB7djogIkAlcyIgJSBrIGZvciAoayx2KSBpbiBhdG9tcy5pdGVtcygpfQog
CiBuYW1lZF9lc2NhcGVzID0geyJcYSIsICJcYiIsICJcZiIsICJcbiIsICJcciIsICJcdCIsICJc
diJ9CiAKQEAgLTEwLDcgKzEzLDcgQEAgZGVmIGVzY2FwZShzdHJpbmcsIGV4dHJhcz0iIik6CiAg
ICAgcnYgPSAiIgogICAgIGZvciBjIGluIHN0cmluZzoKICAgICAgICAgaWYgYyBpbiBuYW1lZF9l
c2NhcGVzOgotICAgICAgICAgICAgcnYgKz0gYy5lbmNvZGUoInVuaWNvZGVfZXNjYXBlIikKKyAg
ICAgICAgICAgIHJ2ICs9IGMuZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpLmRlY29kZSgpCiAgICAg
ICAgIGVsaWYgYyA9PSAiXFwiOgogICAgICAgICAgICAgcnYgKz0gIlxcXFwiCiAgICAgICAgIGVs
aWYgYyA8ICdceDIwJzoKQEAgLTE5LDEwICsyMiw3IEBAIGRlZiBlc2NhcGUoc3RyaW5nLCBleHRy
YXM9IiIpOgogICAgICAgICAgICAgcnYgKz0gIlxcIiArIGMKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIHJ2ICs9IGMKLSAgICBpZiBpc2luc3RhbmNlKHJ2LCB1bmljb2RlKToKLSAgICAgICAg
cmV0dXJuIHJ2LmVuY29kZSgidXRmOCIpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHJ2Cisg
ICAgcmV0dXJuIGVuc3VyZV90ZXh0KHJ2KQogCiAKIGNsYXNzIE1hbmlmZXN0U2VyaWFsaXplcihO
b2RlVmlzaXRvcik6CkBAIC03NCwxMCArNzQsNyBAQCBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIo
Tm9kZVZpc2l0b3IpOgogICAgICAgICByZXR1cm4gWyIiLmpvaW4ocnYpXQogCiAgICAgZGVmIHZp
c2l0X1ZhbHVlTm9kZShzZWxmLCBub2RlKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9k
ZS5kYXRhLCAoc3RyLCB1bmljb2RlKSk6Ci0gICAgICAgICAgICBkYXRhID0gdW5pY29kZShub2Rl
LmRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gbm9kZS5kYXRhCisgICAg
ICAgIGRhdGEgPSBlbnN1cmVfdGV4dChub2RlLmRhdGEpCiAgICAgICAgIGlmICgiIyIgaW4gZGF0
YSBvcgogICAgICAgICAgICAgZGF0YS5zdGFydHN3aXRoKCJpZiAiKSBvcgogICAgICAgICAgICAg
KGlzaW5zdGFuY2Uobm9kZS5wYXJlbnQsIExpc3ROb2RlKSBhbmQKQEAgLTEwMyw3ICsxMDAsNyBA
QCBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgogICAgICAgICByZXR1cm4g
cnYKIAogICAgIGRlZiB2aXNpdF9OdW1iZXJOb2RlKHNlbGYsIG5vZGUpOgotICAgICAgICByZXR1
cm4gW3N0cihub2RlLmRhdGEpXQorICAgICAgICByZXR1cm4gW2Vuc3VyZV90ZXh0KG5vZGUuZGF0
YSldCiAKICAgICBkZWYgdmlzaXRfVmFyaWFibGVOb2RlKHNlbGYsIG5vZGUpOgogICAgICAgICBy
diA9IGVzY2FwZShub2RlLmRhdGEpCkBAIC0xMzcsMTAgKzEzNCwxMCBAQCBjbGFzcyBNYW5pZmVz
dFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgogICAgICAgICByZXR1cm4gWyIgIi5qb2luKGNoaWxk
cmVuKV0KIAogICAgIGRlZiB2aXNpdF9VbmFyeU9wZXJhdG9yTm9kZShzZWxmLCBub2RlKToKLSAg
ICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAgcmV0dXJuIFtlbnN1cmVfdGV4
dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZpc2l0X0JpbmFyeU9wZXJhdG9yTm9kZShzZWxmLCBu
b2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAgcmV0dXJuIFtl
bnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAKIGRlZiBzZXJpYWxpemUodHJlZSwgKmFyZ3MsICoq
a3dhcmdzKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0
X2NvbmRpdGlvbmFsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29u
ZGl0aW9uYWwucHkKaW5kZXggZmJjNzVlYzgzOTBmYTM0YWI3ZTNjYWEzOTFjM2U2ZTc4MzdhNTU0
ZC4uYWY0ZDk5NjAzMjJjN2U4ZGZjY2IwNzZhMmU0NjYxMjU0NTdkMTg3OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKQEAgLTEs
MTkgKzEsMTUgQEAKLWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIC4uYmFja2VuZHMgaW1wb3J0IGNvbmRpdGlvbmFsCiBmcm9tIC4ubm9kZSBpbXBvcnQg
QmluYXJ5RXhwcmVzc2lvbk5vZGUsIEJpbmFyeU9wZXJhdG9yTm9kZSwgVmFyaWFibGVOb2RlLCBO
dW1iZXJOb2RlCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249IndwdG1hbmlmZXN0LnBhcnNlciBkb2Vzbid0IHN1
cHBvcnQgcHkzIikKIGNsYXNzIFRlc3RDb25kaXRpb25hbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIGNvbXBpbGUoc2VsZiwgaW5wdXRfdGV4dCk6CiAgICAgICAgIHJldHVybiBjb25kaXRp
b25hbC5jb21waWxlKGlucHV0X3RleHQpCiAKICAgICBkZWYgdGVzdF9nZXRfMChzZWxmKToKLSAg
ICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OiB2YWx1ZQogCiBbSGVh
ZGluZyAxXQpAQCAtMjUsMTkgKzIxLDE5IEBAIGtleTogdmFsdWUKIAogICAgICAgICBtYW5pZmVz
dCA9IHNlbGYuY29tcGlsZShkYXRhKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlm
ZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZl
c3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9y
IGl0ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGxlbihjaGlsZHJlbiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNoaWxk
cmVuKSwgMSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcgMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKIAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMSIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAyfSks
ICJ2YWx1ZV8yIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVy
X2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vj
dGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDF9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAyfSksICJ2YWx1ZV8y
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJh
IjogN30pLCAidmFsdWVfMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQo
ImtleSIpLCAidmFsdWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRh
dGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0K
QEAgLTUyLDExICs0OCwxMSBAQCBrZXk6IHZhbHVlCiAgICAgICAgIGNoaWxkcmVuID0gbGlzdChp
dGVtIGZvciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJlbigpKQogICAgICAgICBzZWN0aW9u
ID0gY2hpbGRyZW5bMF0KIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgi
b3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDF9KSwgInZhbHVlXzMiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAiMSJ9
KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhl
cl9rZXkiLCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8yKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGFb
MV0gPT0gImIiOiB2YWx1ZV8xCiAgIGlmIGFbMV0gPT0gMjogdmFsdWVfMgpAQCAtNjUsMTEgKzYx
LDExIEBAIGtleToKIAogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQogCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0p
LCAidmFsdWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5
IiwgeyJhIjogWzEsIDJdfSksICJ2YWx1ZV8yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
YW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogWzEsIDJdfSksICJ2YWx1ZV8y
IikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAg
ICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGFbMV0gPT0gImFiIlsxXTogdmFsdWVfMQogICBp
ZiBhWzFdID09IDI6IHZhbHVlXzIKQEAgLTc4LDExICs3NCwxMSBAQCBrZXk6CiAKICAgICAgICAg
bWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFs
dWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEi
OiAiYWIifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5n
ZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVzdF9zZXRf
MChzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5Ogog
ICBpZiBhID09ICJhIjogdmFsdWVfMQogICBpZiBhID09ICJiIjogdmFsdWVfMgpAQCAtOTIsMTAg
Kzg4LDEwIEBAIGtleToKIAogICAgICAgICBtYW5pZmVzdC5zZXQoIm5ld19rZXkiLCAidmFsdWVf
bmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoIm5ld19rZXki
KSwgInZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJu
ZXdfa2V5IiksICJ2YWx1ZV9uZXciKQogCiAgICAgZGVmIHRlc3Rfc2V0XzEoc2VsZik6Ci0gICAg
ICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6
IHZhbHVlXzEKICAgaWYgYSA9PSAiYiI6IHZhbHVlXzIKQEAgLTEwNiwxMSArMTAyLDExIEBAIGtl
eToKIAogICAgICAgICBtYW5pZmVzdC5zZXQoImtleSIsICJ2YWx1ZV9uZXciKQogCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhIn0pLCAi
dmFsdWVfMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwg
InZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzIoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAi
YSI6IHZhbHVlXzEKICAgaWYgYSA9PSAiYiI6IHZhbHVlXzIKQEAgLTEyNSwxMSArMTIxLDExIEBA
IGtleToKIAogICAgICAgICBtYW5pZmVzdC5zZXQoImtleSIsICJ2YWx1ZV9uZXciLCBleHByKQog
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogMX0p
LCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJr
ZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LmdldCgia2V5IiwgeyJhIjogMX0pLCAidmFsdWVfbmV3IikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhIn0pLCAidmFsdWVfMSIpCiAK
ICAgICBkZWYgdGVzdF9hcGlfMChzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBk
YXRhID0gYiIiIgoga2V5OgogICBpZiBhID09IDEuNTogdmFsdWVfMQogICB2YWx1ZV8yCkBAIC0x
MzgsOCArMTM0LDggQEAga2V5XzE6IG90aGVyX3ZhbHVlCiAgICAgICAgIG1hbmlmZXN0ID0gc2Vs
Zi5jb21waWxlKGRhdGEpCiAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5pc19l
bXB0eSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3Qucm9vdCwgbWFuaWZlc3Qp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3Qucm9vdCwgbWFuaWZlc3QpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMSIpKQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG1hbmlmZXN0Lmhhc19rZXkoImtleV8yIikpCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0Lml0ZXJrZXlzKCkpLCB7ImtleSIsICJrZXlfMSJ9
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJr
ZXkiLCAia2V5XzEifSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Bh
cnNlci5weQppbmRleCA4MDVlNDdiMzcxZjVhNzMwNzY1ZjNlNWQxYWM1ZjZjOTRkYzNlOTk3Li4y
M2JlYjJiZWYyMDhhMjExMDdiMTA4NjIwZmQ1NGYxZWM1NjU0ZDhjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CkBAIC0xOCw5ICsxOCw5IEBAIGNs
YXNzIFRlc3RFeHByZXNzaW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5tYXRj
aChleHBlY3RlZCwgYWN0dWFsKQogCiAgICAgZGVmIG1hdGNoKHNlbGYsIGV4cGVjdGVkX25vZGUs
IGFjdHVhbF9ub2RlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9kZVsw
XSwgYWN0dWFsX25vZGUuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxfbm9kZS5kYXRhKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhsZW4oZXhwZWN0ZWRfbm9kZVsyXSksIGxlbihhY3R1YWxfbm9kZS5jaGlsZHJl
bikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbm9kZVswXSwgYWN0dWFsX25v
ZGUuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
X25vZGVbMV0sIGFjdHVhbF9ub2RlLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGV4cGVjdGVkX25vZGVbMl0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQogICAgICAgICBm
b3IgZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGlsZCBpbiB6aXAoZXhwZWN0ZWRfbm9kZVsyXSwg
YWN0dWFsX25vZGUuY2hpbGRyZW4pOgogICAgICAgICAgICAgc2VsZi5tYXRjaChleHBlY3RlZF9j
aGlsZCwgYWN0dWFsX2NoaWxkKQogCkBAIC0xMDUsNiArMTA1LDQ1IEBAIGtleToKICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBz
ZWxmLnBhcnNlKGIia2V5OiBAdHJ1ZSIpCiAKKyAgICBkZWYgdGVzdF9saXN0X2V4cHIoc2VsZik6
CisgICAgICAgIHNlbGYuY29tcGFyZSgKKyAgICAgICAgICAgIGIiIiIKK2tleToKKyAgaWYgeCA9
PSAxOiBbYV0KKyAgW2JdIiIiLAorICAgICAgICAgICAgWyJEYXRhTm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgW1siS2V5VmFsdWVOb2RlIiwgImtleSIsCisgICAgICAgICAgICAgICBbWyJDb25k
aXRpb25hbE5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAgICBbWyJCaW5hcnlFeHByZXNzaW9u
Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgW1siQmluYXJ5T3BlcmF0b3JOb2RlIiwg
Ij09IiwgW11dLAorICAgICAgICAgICAgICAgICAgICBbIlZhcmlhYmxlTm9kZSIsICJ4IiwgW11d
LAorICAgICAgICAgICAgICAgICAgICAgICBbIk51bWJlck5vZGUiLCAiMSIsIFtdXQorICAgICAg
ICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICAgICAgIFsiTGlzdE5vZGUiLCBOb25l
LAorICAgICAgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIsICJhIiwgW11dXV0sCisgICAg
ICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAg
ICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImIiLCBbXV1dXV1dXV0pCisKKyAgICBkZWYg
dGVzdF9saXN0X2hlYWRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZSgKKyAgICAgICAg
ICAgIGIiIiIKK2tleToKKyAgaWYgeCA9PSAxOiBbYV0KK1tiXSIiIiwKKyAgICAgICAgICAgIFsi
RGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZhbHVlTm9kZSIsICJrZXkiLAor
ICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAgICAgIFtb
IkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgWyJW
YXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWyJOdW1iZXJO
b2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAgICAgICAg
ICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBbWyJWYWx1ZU5v
ZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV1dXSwKKyAgICAgICAgICAgICAg
WyJEYXRhTm9kZSIsICJiIiwgW11dXV0pCisKICAgICBkZWYgdGVzdF9pZl8xKHNlbGYpOgogICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHBhcnNlci5QYXJzZUVycm9yKToKICAgICAgICAg
ICAgIHNlbGYucGFyc2UoYiJrZXk6IGlmIGZvbyIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
d3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQppbmRleCA3ZmU3YWM4NWNiOGExNGYwNTEx
M2NiZmQ0ODNiOGQwNDJhMDdiOTg5Li5iMjQ3ODU1ODAxZWFjNjU4OWFlYmQ0NTU1YzZkOWU4NjUz
ZTEyZTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9z
ZXJpYWxpemVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Nl
cmlhbGl6ZXIucHkKQEAgLTYsOCArNiw2IEBAIGltcG9ydCBweXRlc3QKIGZyb20gLi4gaW1wb3J0
IHBhcnNlciwgc2VyaWFsaXplcgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblsw
XSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VyaWFsaXplciA9IHNl
cmlhbGl6ZXIuTWFuaWZlc3RTZXJpYWxpemVyKCkKQEAgLTE4LDI2ICsxNiwyNSBAQCBjbGFzcyBU
b2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBjb21wYXJlKHNlbGYs
IGlucHV0X3N0ciwgZXhwZWN0ZWQ9Tm9uZSk6CiAgICAgICAgIGlmIGV4cGVjdGVkIGlzIE5vbmU6
Ci0gICAgICAgICAgICBleHBlY3RlZCA9IGlucHV0X3N0cgotICAgICAgICBleHBlY3RlZCA9IGV4
cGVjdGVkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBleHBlY3RlZCA9IGlucHV0X3N0ci5k
ZWNvZGUoInV0Zi04IikKICAgICAgICAgYWN0dWFsID0gc2VsZi5zZXJpYWxpemUoaW5wdXRfc3Ry
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF8wKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleTogb3RoZXJfdmFsdWUK
ICIiIikKIAogICAgIGRlZiB0ZXN0XzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJr
ZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcg
MV0KICAgb3RoZXJfa2V5OgogICAgIGlmIGEgb3IgYjogb3RoZXJfdmFsdWUKICIiIikKIAogICAg
IGRlZiB0ZXN0XzIoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisg
ICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJf
a2V5OgogICAgIGlmIGEgb3IgYjogb3RoZXJfdmFsdWUKQEAgLTQ1LDcgKzQyLDcgQEAgY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF8z
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBp
ZiBhID09IDE6IG90aGVyX3ZhbHVlCkBAIC01Myw3ICs1MCw3IEBAIGNsYXNzIFRva2VuaXplclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfNChzZWxmKToKLSAg
ICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIi
IiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAiMSI6
IG90aGVyX3ZhbHVlCkBAIC02MSw3ICs1OCw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfNShzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZh
bHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAiYWJjIlsxXTogb3Ro
ZXJfdmFsdWUKQEAgLTY5LDcgKzY2LDcgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF82KHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUK
IFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhID09ICJhYmMiW2NdOiBvdGhlcl92
YWx1ZQpAQCAtNzcsNyArNzQsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0Xzcoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFy
ZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hl
YWRpbmcgMV0KICAgb3RoZXJfa2V5OgogICAgIGlmIChhIG9yIGIpIGFuZCBjOiBvdGhlcl92YWx1
ZQpAQCAtOTEsNyArODgsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICIiIikKIAogICAgIGRlZiB0ZXN0Xzgoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgi
IiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRp
bmcgMV0KICAgb3RoZXJfa2V5OgogICAgIGlmIGEgb3IgKGIgYW5kIGMpOiBvdGhlcl92YWx1ZQpA
QCAtOTksNyArOTYsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICIiIikKIAogICAgIGRlZiB0ZXN0Xzkoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJr
ZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcg
MV0KICAgb3RoZXJfa2V5OgogICAgIGlmIG5vdCAoYSBhbmQgYik6IG90aGVyX3ZhbHVlCkBAIC0x
MDcsNyArMTA0LDcgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAi
IiIpCiAKICAgICBkZWYgdGVzdF8xMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtl
eTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAx
XQogICBzb21lX2tleTogc29tZV92YWx1ZQogCkBAIC0xMTYsMTIxICsxMTMsMTI1IEBAIGNsYXNz
IFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3Rf
MTEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6CisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIia2V5OgogICBpZiBub3QgYSBhbmQgYiBhbmQgYyBhbmQgZDogdHJ1ZQogIiIiKQog
CiAgICAgZGVmIHRlc3RfMTIoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJbSGVhZGlu
ZyAxXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiIltIZWFkaW5nIDFdCiAgIGtleTogW2E6MSwg
YjoyXQogIiIiKQogCiAgICAgZGVmIHRlc3RfMTMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFy
ZSgiIiJrZXk6IFthOjEsICJiOiMiXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogW2E6
MSwgImI6IyJdCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xNChzZWxmKToKLSAgICAgICAgc2VsZi5j
b21wYXJlKCIiImtleTogWyIsIl0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFsiLCJd
CiAiIiIpCiAKICAgICBkZWYgdGVzdF8xNShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIi
ImtleTogLAorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogLAogIiIiKQogCiAgICAgZGVm
IHRlc3RfMTYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsiXSIsIGJdCisg
ICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBbIl0iLCBiXQogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTcoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IF0KKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGIiIiJrZXk6IF0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE4KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXF0KKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBcXQogICAgICAgICAiIiIsICIiImtleTogXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNj
YXBlXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia1x0XDp5OiBcYVxiXGZcblxy
XHRcdiIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia1x0XDp5OiBcYVxiXGZcblxyXHRc
diIiIiwKICAgICAgICAgICAgICAgICAgICAgIHIiIiJrXHRcOnk6IFx4MDdceDA4XHgwY1xuXHJc
dFx4MGIKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8xKHNlbGYpOgotICAgICAgICBzZWxm
LmNvbXBhcmUociIiImtceDAwOiBceDEyQVx4NDUiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtceDAwOiBceDEyQVx4NDUiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia1x4MDA6
IFx4MTJBRQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzIoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia1x1MDA0NXk6IFx1MTIzNEFcdUFCYzYiIiIsCisgICAgICAgIHNlbGYu
Y29tcGFyZShiciIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAogICAgICAgICAgICAgICAg
ICAgICAgdSIiImtFeTogXHUxMjM0QVx1YWJjNgogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBl
XzMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia1x1MDA0NXk6IFx1MTIzNEFcdUFC
YzYiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2
IiIiLAogICAgICAgICAgICAgICAgICAgICAgdSIiImtFeTogXHUxMjM0QVx1YWJjNgogIiIiKQog
CiAgICAgZGVmIHRlc3RfZXNjYXBlXzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIi
a2V5OiAnXHUxMjM0QVx1QUJjNiciIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTog
J1x1MTIzNEFcdUFCYzYnIiIiLAogICAgICAgICAgICAgICAgICAgICAgdSIiImtleTogXHUxMjM0
QVx1YWJjNgogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzUoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBbXHUxMjM0QVx1QUJjNl0iIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogW1x1MTIzNEFcdUFCYzZdIiIiLAogICAgICAgICAgICAgICAgICAgICAg
dSIiImtleTogW1x1MTIzNEFcdWFiYzZdCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfNihz
ZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2XCxdIiIi
LAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2XCxdIiIiLAog
ICAgICAgICAgICAgICAgICAgICAgdSIiImtleTogWyJcdTEyMzRBXHVhYmM2LCJdCiAiIiIpCiAK
ICAgICBkZWYgdGVzdF9lc2NhcGVfNyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJr
ZXk6IFtcLFxdXCNdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcLFxdXCNd
IiIiLAogICAgICAgICAgICAgICAgICAgICAgciIiImtleTogWyIsXSMiXQogIiIiKQogCiAgICAg
ZGVmIHRlc3RfZXNjYXBlXzgoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBc
IyIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBcIyIiIiwKICAgICAgICAgICAg
ICAgICAgICAgIHIiIiJrZXk6ICIjIgogIiIiKQogCiAgICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy5tYXh1bmljb2RlID09IDB4RkZGRiwgcmVhc29uPSJuYXJyb3cgdW5pY29kZSIpCiAgICAgZGVm
IHRlc3RfZXNjYXBlXzkoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcVTEw
RkZGRmFiYyIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBcVTEwRkZGRmFiYyIi
IiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFxVMDAxMEZGRkZhYmMKICIiIikKIAog
ICAgIGRlZiB0ZXN0X2VzY2FwZV8xMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJr
ZXk6IFx1MTBGRmFiIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFx1MTBGRmFi
IiIiLAogICAgICAgICAgICAgICAgICAgICAgdSIiImtleTogXHUxMEZGYWIKICIiIikKIAogICAg
IGRlZiB0ZXN0X2VzY2FwZV8xMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6
IFxcYWIKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBcXGFiCiAiIiIpCiAKICAgICBk
ZWYgdGVzdF9hdG9tXzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBAVHJ1
ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IEBUcnVlCiAiIiIpCiAKICAgICBkZWYg
dGVzdF9hdG9tXzIoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBARmFsc2UK
KyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBARmFsc2UKICIiIikKIAogICAgIGRlZiB0
ZXN0X2F0b21fMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IEBSZXNldAor
ICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IEBSZXNldAogIiIiKQogCiAgICAgZGVmIHRl
c3RfYXRvbV80KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW2EsIEBSZXNl
dCwgYl0KKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBbYSwgQFJlc2V0LCBiXQogIiIi
KQogCiAgICAgZGVmIHRlc3RfY29uZGl0aW9uYWxfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21w
YXJlKCIiImZvbzoKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJmb286CiAgIGlmIGEgb3IgYjog
WzEsIDJdCiAiIiIpCiAKICAgICBkZWYgdGVzdF9pZl9zdHJpbmdfMChzZWxmKToKLSAgICAgICAg
c2VsZi5jb21wYXJlKCIiImZvbzogImlmIGJhciIKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJm
b286ICJpZiBiYXIiCisiIiIpCisKKyAgICBkZWYgdGVzdF9ub25fYXNjaWlfMShzZWxmKToKKyAg
ICAgICAgc2VsZi5jb21wYXJlKGIiIiJbXHhmMFx4OWZceDk5XHg4NF0KICIiIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQppbmRleCBhYWY4NDY1OTE1
MjQ2YWFjNThhMDY4ZGNmYzA2OTdiOGM5YWY0MTgxLi5lODExYTJiNDJiNDU1MGNjZWMxY2RhOWY2
YjFhMmI5YmIyNzBmYWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVz
dHMvdGVzdF9zdGF0aWMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3Rfc3RhdGljLnB5CkBAIC0xLDUgKzEsMyBAQAotaW1wb3J0IHB5dGVzdAotaW1wb3J0IHN5cwog
aW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gLi5iYWNrZW5kcyBpbXBvcnQgc3RhdGljCkBAIC04LDE0
ICs2LDEyIEBAIGZyb20gLi5iYWNrZW5kcyBpbXBvcnQgc3RhdGljCiAjIHVzZSB0ZXN0X3Nlcmlh
bGl6ZXIgZm9yIHRoZSBtYWpvcml0eSBvZiBjYXNlcwogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3cHRtYW5p
ZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUZXN0U3RhdGljKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY29tcGlsZShzZWxmLCBpbnB1dF90ZXh0LCBpbnB1dF9k
YXRhKToKICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGlucHV0X3RleHQsIGlucHV0X2Rh
dGEpCiAKICAgICBkZWYgdGVzdF9nZXRfMChzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAg
ICAgICBkYXRhID0gYiIiIgoga2V5OiB2YWx1ZQogCiBbSGVhZGluZyAxXQpAQCAtMjcsMTcgKzIz
LDE3IEBAIGtleTogdmFsdWUKIAogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRh
LCB7ImEiOiAyfSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtl
eSIpLCAidmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5
IiksICJ2YWx1ZSIpCiAgICAgICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1h
bmlmZXN0Lml0ZXJjaGlsZHJlbigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hp
bGRyZW4pLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAg
ICAgICAgIHNlY3Rpb24gPSBjaGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWN0aW9uLm5hbWUsICJIZWFkaW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rp
b24ubmFtZSwgIkhlYWRpbmcgMSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlv
bi5nZXQoIm90aGVyX2tleSIpLCAidmFsdWVfMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWN0aW9uLmdldCgib3RoZXJfa2V5IiksICJ2YWx1ZV8yIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIpCiAKICAgICBkZWYgdGVzdF9nZXRfMShz
ZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OiB2YWx1
ZQogCiBbSGVhZGluZyAxXQpAQCAtNTAsMzIgKzQ2LDMyIEBAIGtleTogdmFsdWUKIAogICAgICAg
ICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRyZW4o
KSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzMiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzMiKQogCiAgICAgZGVm
IHRlc3RfZ2V0XzMoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiJrZXk6CisgICAgICAgIGRhdGEg
PSBiIiIia2V5OgogICBpZiBhID09ICIxIjogdmFsdWVfMQogICBpZiBhWzBdID09ICJhYiJbMF06
IHZhbHVlXzIKICIiIgogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEi
OiAiMSJ9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAi
dmFsdWVfMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwg
InZhbHVlXzEiKQogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6
ICJhYyJ9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAi
dmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwg
InZhbHVlXzIiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzQoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAi
IiJrZXk6CisgICAgICAgIGRhdGEgPSBiIiIia2V5OgogICBpZiBub3QgYTogdmFsdWVfMQogICB2
YWx1ZV8yCiAiIiIKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjog
VHJ1ZX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2
YWx1ZV8yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAi
dmFsdWVfMiIpCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjog
RmFsc2V9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAi
dmFsdWVfMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwg
InZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBpKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIi
a2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYgYSA9PSAxLjU6IHZhbHVlXzEKICAg
dmFsdWVfMgoga2V5XzE6IG90aGVyX3ZhbHVlCkBAIC04MywxNSArNzksMTUgQEAga2V5XzE6IG90
aGVyX3ZhbHVlCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IDEu
NX0pCiAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5pc19lbXB0eSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3Qucm9vdCwgbWFuaWZlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobWFuaWZlc3Qucm9vdCwgbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMSIpKQogICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1hbmlmZXN0Lmhhc19rZXkoImtleV8yIikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc2V0KG1hbmlmZXN0Lml0ZXJrZXlzKCkpLCB7ImtleSIsICJrZXlfMSJ9KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhzZXQobWFuaWZlc3QuaXRlcnZhbHVlcygpKSwgeyJ2YWx1ZV8xIiwg
Im90aGVyX3ZhbHVlIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG1hbmlmZXN0Lml0
ZXJrZXlzKCkpLCB7ImtleSIsICJrZXlfMSJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
dChtYW5pZmVzdC5pdGVydmFsdWVzKCkpLCB7InZhbHVlXzEiLCAib3RoZXJfdmFsdWUifSkKIAog
ICAgIGRlZiB0ZXN0X2lzX2VtcHR5XzEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAg
ICAgZGF0YSA9IGIiIiIKIFtTZWN0aW9uXQogICBbU3Vic2VjdGlvbl0KICIiIgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkK
aW5kZXggY2FjMTcyYTU5NDBlYzY5NmUzYTNiMjc5MTcwZjk3MTJhYWY0NjY4ZC4uZDBjYzE5NDgx
ZGJkZWRjNDVlZGZlZTk2MDhkODJkZWI0YTE5NjU3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CkBAIC0zLDE5ICsz
LDIxIEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0
ZXJhbHMKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2Zyb20gc2l4IGltcG9y
dCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMKIAogZnJvbSB3cHRzZXJ2ZSBpbXBvcnQgc3NsdXRpbHMK
IAotaW1wb3J0IGVudmlyb25tZW50IGFzIGVudgotaW1wb3J0IHByb2R1Y3RzCi1pbXBvcnQgdGVz
dGxvYWRlcgotaW1wb3J0IHdwdGNvbW1hbmRsaW5lCi1pbXBvcnQgd3B0bG9nZ2luZwotaW1wb3J0
IHdwdHRlc3QKK2Zyb20gLiBpbXBvcnQgZW52aXJvbm1lbnQgYXMgZW52Citmcm9tIC4gaW1wb3J0
IGluc3RydW1lbnRzCitmcm9tIC4gaW1wb3J0IHByb2R1Y3RzCitmcm9tIC4gaW1wb3J0IHRlc3Rs
b2FkZXIKK2Zyb20gLiBpbXBvcnQgd3B0Y29tbWFuZGxpbmUKK2Zyb20gLiBpbXBvcnQgd3B0bG9n
Z2luZworZnJvbSAuIGltcG9ydCB3cHR0ZXN0CiBmcm9tIG1vemxvZyBpbXBvcnQgY2FwdHVyZSwg
aGFuZGxlcnMKLWZyb20gZm9udCBpbXBvcnQgRm9udEluc3RhbGxlcgotZnJvbSB0ZXN0cnVubmVy
IGltcG9ydCBNYW5hZ2VyR3JvdXAKLWZyb20gYnJvd3NlcnMuYmFzZSBpbXBvcnQgTnVsbEJyb3dz
ZXIKK2Zyb20gLmZvbnQgaW1wb3J0IEZvbnRJbnN0YWxsZXIKK2Zyb20gLnRlc3RydW5uZXIgaW1w
b3J0IE1hbmFnZXJHcm91cAorZnJvbSAuYnJvd3NlcnMuYmFzZSBpbXBvcnQgTnVsbEJyb3dzZXIK
IAogaGVyZSA9IG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdCiAKQEAgLTQzLDcgKzQ1LDcgQEAg
ZGVmIHNldHVwX2xvZ2dpbmcoKmFyZ3MsICoqa3dhcmdzKToKICAgICByZXR1cm4gbG9nZ2VyCiAK
IAotZGVmIGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVidWc9Tm9uZSwgcnVuX2lu
Zm9fZXh0cmFzPU5vbmUsICoqa3dhcmdzKToKK2RlZiBnZXRfbG9hZGVyKHRlc3RfcGF0aHMsIHBy
b2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCBjaHVua2VyX2t3YXJncz1O
b25lLCAqKmt3YXJncyk6CiAgICAgaWYgcnVuX2luZm9fZXh0cmFzIGlzIE5vbmU6CiAgICAgICAg
IHJ1bl9pbmZvX2V4dHJhcyA9IHt9CiAKQEAgLTc2LDcgKzc4LDEwIEBAIGRlZiBnZXRfbG9hZGVy
KHRlc3RfcGF0aHMsIHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxf
Y2h1bmtzPWt3YXJnc1sidG90YWxfY2h1bmtzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPWt3YXJnc1sidGhpc19jaHVuayJdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfaHR0cHM9c3NsX2VuYWJs
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF90aW1lb3V0
PWt3YXJnc1sic2tpcF90aW1lb3V0Il0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZV9xdWljPWt3YXJnc1siZW5hYmxlX3F1aWMiXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX3RpbWVvdXQ9a3dhcmdzWyJza2lwX3Rp
bWVvdXQiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lt
cGxlbWVudGF0aW9uX3N0YXR1cz1rd2FyZ3NbInNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzIl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtlcl9rd2FyZ3M9
Y2h1bmtlcl9rd2FyZ3MpCiAgICAgcmV0dXJuIHJ1bl9pbmZvLCB0ZXN0X2xvYWRlcgogCiAKQEAg
LTEwMiw3ICsxMDcsNyBAQCBkZWYgbGlzdF9kaXNhYmxlZCh0ZXN0X3BhdGhzLCBwcm9kdWN0LCAq
Kmt3YXJncyk6CiAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3Bh
dGhzLCBwcm9kdWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVu
X2luZm9fZXh0cmFzPXJ1bl9pbmZvX2V4dHJhcywgKiprd2FyZ3MpCiAKLSAgICBmb3IgdGVzdF90
eXBlLCB0ZXN0cyBpbiB0ZXN0X2xvYWRlci5kaXNhYmxlZF90ZXN0cy5pdGVyaXRlbXMoKToKKyAg
ICBmb3IgdGVzdF90eXBlLCB0ZXN0cyBpbiBpdGVyaXRlbXModGVzdF9sb2FkZXIuZGlzYWJsZWRf
dGVzdHMpOgogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAgICAgICAgIHJ2LmFwcGVu
ZCh7InRlc3QiOiB0ZXN0LmlkLCAicmVhc29uIjogdGVzdC5kaXNhYmxlZCgpfSkKICAgICBwcmlu
dChqc29uLmR1bXBzKHJ2LCBpbmRlbnQ9MikpCkBAIC0xMjcsNyArMTMyLDcgQEAgZGVmIGdldF9w
YXVzZV9hZnRlcl90ZXN0KHRlc3RfbG9hZGVyLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIGt3YXJn
c1siaGVhZGxlc3MiXToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICB0ZXN0cyA9
IHRlc3RfbG9hZGVyLnRlc3RzCi0gICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChzdW0o
bGVuKGl0ZW0pIGZvciBpdGVtIGluIHRlc3RzLml0ZXJ2YWx1ZXMoKSkgPT0gMSBhbmQKKyAgICAg
ICAgaXNfc2luZ2xlX3Rlc3RoYXJuZXNzID0gKHN1bShsZW4oaXRlbSkgZm9yIGl0ZW0gaW4gaXRl
cnZhbHVlcyh0ZXN0cykpID09IDEgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZW4odGVzdHMuZ2V0KCJ0ZXN0aGFybmVzcyIsIFtdKSkgPT0gMSkKICAgICAgICAgaWYga3dh
cmdzWyJyZXBlYXQiXSA9PSAxIGFuZCBrd2FyZ3NbInJlcnVuIl0gPT0gMSBhbmQgaXNfc2luZ2xl
X3Rlc3RoYXJuZXNzOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTEzOCw3ICsxNDMsMTIg
QEAgZGVmIGdldF9wYXVzZV9hZnRlcl90ZXN0KHRlc3RfbG9hZGVyLCAqKmt3YXJncyk6CiBkZWYg
cnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICIi
IlNldCB1cCB0aGUgdGVzdCBlbnZpcm9ubWVudCwgbG9hZCB0aGUgbGlzdCBvZiB0ZXN0cyB0byBi
ZSBleGVjdXRlZCwgYW5kCiAgICAgaW52b2tlIHRoZSByZW1haW5kZXIgb2YgdGhlIGNvZGUgdG8g
ZXhlY3V0ZSB0ZXN0cyIiIgotICAgIHdpdGggY2FwdHVyZS5DYXB0dXJlSU8obG9nZ2VyLCBub3Qg
a3dhcmdzWyJub19jYXB0dXJlX3N0ZGlvIl0pOgorICAgIGlmIGt3YXJnc1siaW5zdHJ1bWVudF90
b19maWxlIl0gaXMgTm9uZToKKyAgICAgICAgcmVjb3JkZXIgPSBpbnN0cnVtZW50cy5OdWxsSW5z
dHJ1bWVudCgpCisgICAgZWxzZToKKyAgICAgICAgcmVjb3JkZXIgPSBpbnN0cnVtZW50cy5JbnN0
cnVtZW50KGt3YXJnc1siaW5zdHJ1bWVudF90b19maWxlIl0pCisgICAgd2l0aCByZWNvcmRlciBh
cyByZWNvcmRpbmcsIGNhcHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2Fw
dHVyZV9zdGRpbyJdKToKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKICAgICAg
ICAgZW52LmRvX2RlbGF5ZWRfaW1wb3J0cyhsb2dnZXIsIHRlc3RfcGF0aHMpCiAKICAgICAgICAg
cHJvZHVjdCA9IHByb2R1Y3RzLmxvYWRfcHJvZHVjdChjb25maWcsIHByb2R1Y3QsIGxvYWRfY2xz
PVRydWUpCkBAIC0xNDksMjIgKzE1OSwyOSBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9w
YXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogCiAgICAgICAgIGlmIGt3YXJnc1siaW5zdGFsbF9m
b250cyJdOgogICAgICAgICAgICAgZW52X2V4dHJhcy5hcHBlbmQoRm9udEluc3RhbGxlcigKKyAg
ICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgZm9udF9kaXI9a3dhcmdzWyJm
b250X2RpciJdLAogICAgICAgICAgICAgICAgIGFoZW09b3MucGF0aC5qb2luKHRlc3RfcGF0aHNb
Ii8iXVsidGVzdHNfcGF0aCJdLCAiZm9udHMvQWhlbS50dGYiKQogICAgICAgICAgICAgKSkKIAot
ICAgICAgICBydW5faW5mbywgdGVzdF9sb2FkZXIgPSBnZXRfbG9hZGVyKHRlc3RfcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJh
cz1wcm9kdWN0LnJ1bl9pbmZvX2V4dHJhcygqKmt3YXJncyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCisgICAgICAgIHJlY29yZGluZy5zZXQo
WyJzdGFydHVwIiwgImxvYWRfdGVzdHMiXSkKIAogICAgICAgICB0ZXN0X3NvdXJjZV9rd2FyZ3Mg
PSB7InByb2Nlc3NlcyI6IGt3YXJnc1sicHJvY2Vzc2VzIl19CisgICAgICAgIGNodW5rZXJfa3dh
cmdzID0ge30KICAgICAgICAgaWYga3dhcmdzWyJydW5fYnlfZGlyIl0gaXMgRmFsc2U6CiAgICAg
ICAgICAgICB0ZXN0X3NvdXJjZV9jbHMgPSB0ZXN0bG9hZGVyLlNpbmdsZVRlc3RTb3VyY2UKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICMgQSB2YWx1ZSBvZiBOb25lIGluZGljYXRlcyBpbmZp
bml0ZSBkZXB0aAogICAgICAgICAgICAgdGVzdF9zb3VyY2VfY2xzID0gdGVzdGxvYWRlci5QYXRo
R3JvdXBlZFNvdXJjZQogICAgICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzWyJkZXB0aCJdID0g
a3dhcmdzWyJydW5fYnlfZGlyIl0KKyAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzWyJkZXB0aCJd
ID0ga3dhcmdzWyJydW5fYnlfZGlyIl0KKworICAgICAgICBydW5faW5mbywgdGVzdF9sb2FkZXIg
PSBnZXRfbG9hZGVyKHRlc3RfcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZHVjdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1wcm9kdWN0LnJ1bl9pbmZvX2V4dHJhcygqKmt3
YXJncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtl
cl9rd2FyZ3M9Y2h1bmtlcl9rd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKiprd2FyZ3MpCisKIAogICAgICAgICBsb2dnZXIuaW5mbygiVXNpbmcgJWkg
Y2xpZW50IHByb2Nlc3NlcyIgJSBrd2FyZ3NbInByb2Nlc3NlcyJdKQogCkBAIC0xODgsMTkgKzIw
NSwyNCBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2Fy
Z3MpOgogCiAgICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyID0gcHJvZHVjdC5n
ZXRfdGltZW91dF9tdWx0aXBsaWVyKCJ0ZXN0aGFybmVzcyIsIHJ1bl9pbmZvLCAqKmt3YXJncykK
IAorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJzdGFydF9lbnZpcm9ubWVudCJd
KQogICAgICAgICB3aXRoIGVudi5UZXN0RW52aXJvbm1lbnQodGVzdF9wYXRocywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJwYXVzZV9hZnRlcl90ZXN0
Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVnX2luZm8i
XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuZW52X29wdGlvbnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29uZmlnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW52X2V4dHJhcykgYXMgdGVzdF9lbnZpcm9ubWVudDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9leHRyYXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImVuYWJsZV9xdWljIl0pIGFzIHRlc3RfZW52
aXJvbm1lbnQ6CisgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJlbnN1cmVf
ZW52aXJvbm1lbnQiXSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0ZXN0X2Vu
dmlyb25tZW50LmVuc3VyZV9zdGFydGVkKCkKICAgICAgICAgICAgIGV4Y2VwdCBlbnYuVGVzdEVu
dmlyb25tZW50RXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIkVy
cm9yIHN0YXJ0aW5nIHRlc3QgZW52aXJvbm1lbnQ6ICVzIiAlIGUubWVzc2FnZSkKICAgICAgICAg
ICAgICAgICByYWlzZQogCisgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCJdKQor
CiAgICAgICAgICAgICByZXBlYXQgPSBrd2FyZ3NbInJlcGVhdCJdCiAgICAgICAgICAgICByZXBl
YXRfY291bnQgPSAwCiAgICAgICAgICAgICByZXBlYXRfdW50aWxfdW5leHBlY3RlZCA9IGt3YXJn
c1sicmVwZWF0X3VudGlsX3VuZXhwZWN0ZWQiXQpAQCAtMjE0LDcgKzIzNiwxMiBAQCBkZWYgcnVu
X3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogCiAgICAgICAg
ICAgICAgICAgdGVzdF9jb3VudCA9IDAKICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50
ID0gMAotICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0X2xvYWRlci50ZXN0
X2lkcywKKworICAgICAgICAgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgICAgICAgICBmb3Ig
dGVzdF90eXBlIGluIHRlc3RfbG9hZGVyLnRlc3RfdHlwZXM6CisgICAgICAgICAgICAgICAgICAg
IHRlc3RzLmV4dGVuZCh0ZXN0X2xvYWRlci50ZXN0c1t0ZXN0X3R5cGVdKQorCisgICAgICAgICAg
ICAgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KHRlc3Rfc291cmNlX2Nscy50ZXN0c19ieV9ncm91cCh0
ZXN0cywgKip0ZXN0X3NvdXJjZV9rd2FyZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lPSd3ZWItcGxhdGZvcm0tdGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bl9pbmZvPXJ1bl9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYT17InJ1bl9ieV9kaXIiOiBrd2FyZ3NbInJ1bl9ieV9kaXIiXX0pCkBA
IC0yNjYsNiArMjkzLDcgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1
Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bl90ZXN0cyA9IHRlc3RfbG9hZGVyLnRlc3RzCiAKKyAgICAgICAgICAgICAg
ICAgICAgcmVjb3JkaW5nLnBhdXNlKCkKICAgICAgICAgICAgICAgICAgICAgd2l0aCBNYW5hZ2Vy
R3JvdXAoIndlYi1wbGF0Zm9ybS10ZXN0cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGt3YXJnc1sicHJvY2Vzc2VzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rfc291cmNlX2NscywKQEAgLTI3OSw3ICszMDcsOCBAQCBkZWYgcnVu
X3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInBhdXNlX29uX3VuZXhwZWN0ZWQi
XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJyZXN0YXJ0
X29uX3VuZXhwZWN0ZWQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJkZWJ1Z19pbmZvIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSkgYXMgbWFuYWdlcl9ncm91cDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGt3YXJnc1sibm9fY2FwdHVy
ZV9zdGRpbyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRp
bmc9cmVjb3JkaW5nKSBhcyBtYW5hZ2VyX2dyb3VwOgogICAgICAgICAgICAgICAgICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXJfZ3JvdXAucnVuKHRlc3Rf
dHlwZSwgcnVuX3Rlc3RzKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJk
SW50ZXJydXB0OgpAQCAtMjg4LDcgKzMxNyw3IEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0
X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnQgKz0gbWFuYWdlcl9ncm91
cC50ZXN0X2NvdW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfY291bnQg
Kz0gbWFuYWdlcl9ncm91cC51bmV4cGVjdGVkX2NvdW50KCkKLQorICAgICAgICAgICAgICAgIHJl
Y29yZGluZy5zZXQoWyJhZnRlci1lbmQiXSkKICAgICAgICAgICAgICAgICB0ZXN0X3RvdGFsICs9
IHRlc3RfY291bnQKICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3RvdGFsICs9IHVuZXhwZWN0
ZWRfY291bnQKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiR290ICVpIHVuZXhwZWN0ZWQg
cmVzdWx0cyIgJSB1bmV4cGVjdGVkX2NvdW50KQpAQCAtMzE3LDcgKzM0Niw3IEBAIGRlZiBydW5f
dGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAKIAogZGVmIGNo
ZWNrX3N0YWJpbGl0eSgqKmt3YXJncyk6Ci0gICAgaW1wb3J0IHN0YWJpbGl0eQorICAgIGZyb20g
LiBpbXBvcnQgc3RhYmlsaXR5CiAgICAgaWYga3dhcmdzWyJzdGFiaWxpdHkiXToKICAgICAgICAg
bG9nZ2VyLndhcm5pbmcoIi0tc3RhYmlsaXR5IGlzIGRlcHJlY2F0ZWQ7IHBsZWFzZSB1c2UgLS12
ZXJpZnkgaW5zdGVhZCEiKQogICAgICAgICBrd2FyZ3NbJ3ZlcmlmeV9tYXhfdGltZSddID0gTm9u
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
dGVzdC5weQppbmRleCAxZDE0ZjRlZmVlYWUyNzljMmMzNjBmYmExMzg4ZWE1ZjNhNDM4NzdmLi42
YjBmYWI2ZWViYWY1MDVmZmQyMDcxMGUxYTJjYTQ2ZTNkNmY1OWRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5weQpAQCAtMSw3
ICsxLDkgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKIGZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgogZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIHN0cmluZ190eXBl
cwogCiBmcm9tIC53cHRtYW5pZmVzdC5wYXJzZXIgaW1wb3J0IGF0b21zCiAKQEAgLTkyLDcgKzk0
LDcgQEAgY2xhc3MgUnVuSW5mbyhkaWN0KToKICAgICAgICAgc2VsZi5fdXBkYXRlX21vemluZm8o
bWV0YWRhdGFfcm9vdCkKICAgICAgICAgc2VsZi51cGRhdGUobW96aW5mby5pbmZvKQogCi0gICAg
ICAgIGZyb20gdXBkYXRlLnRyZWUgaW1wb3J0IEdpdFRyZWUKKyAgICAgICAgZnJvbSAudXBkYXRl
LnRyZWUgaW1wb3J0IEdpdFRyZWUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBHaXRUcmVl
Ll9faW5pdF9fIHRocm93cyBpZiB3ZSBhcmUgbm90IGluIGEgZ2l0IHRyZWUuCiAgICAgICAgICAg
ICByZXYgPSBHaXRUcmVlKGxvZ19lcnJvcj1GYWxzZSkucmV2CkBAIC0xMDEsNiArMTAzLDcgQEAg
Y2xhc3MgUnVuSW5mbyhkaWN0KToKICAgICAgICAgaWYgcmV2OgogICAgICAgICAgICAgc2VsZlsi
cmV2aXNpb24iXSA9IHJldgogCisgICAgICAgIHNlbGZbInB5dGhvbl92ZXJzaW9uIl0gPSBzeXMu
dmVyc2lvbl9pbmZvLm1ham9yCiAgICAgICAgIHNlbGZbInByb2R1Y3QiXSA9IHByb2R1Y3QKICAg
ICAgICAgaWYgZGVidWcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmWyJkZWJ1ZyJdID0g
ZGVidWcKQEAgLTExOCwyMiArMTIxLDkgQEAgY2xhc3MgUnVuSW5mbyhkaWN0KToKICAgICAgICAg
aWYgZXh0cmFzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi51cGRhdGUoZXh0cmFzKQog
Ci0gICAgICAgICMgVW50aWwgdGhlIHRlc3QgaGFybmVzcyBjYW4gdW5kZXJzdGFuZCBkZWZhdWx0
IHByZWYgdmFsdWVzLAotICAgICAgICAjIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTc3OTEyKSB0aGlzIHZhbHVlCi0gICAgICAgICMgc2hvdWxkIGJ5IHN5
bmNocm9uaXplZCB3aXRoIHRoZSBkZWZhdWx0IHByZWYgdmFsdWUgaW5kaWNhdGVkIGluCi0gICAg
ICAgICMgU3RhdGljUHJlZkxpc3QueWFtbC4KLSAgICAgICAgIwotICAgICAgICAjIEN1cnJlbnRs
eSBmb3IgYXV0b21hdGlvbiwgdGhlIHByZWYgKGFuZCBgc3ctZTEwc2ApIGRlZmF1bHRzIHRvIHRy
dWUgaW4KLSAgICAgICAgIyBuaWdodGx5IGJ1aWxkcyBhbmQgZmFsc2Ugb3RoZXJ3aXNlIGJ1dCBj
YW4gYmUgb3ZlcnJpZGRlbiB3aXRoCi0gICAgICAgICMgYC0tc2V0cHJlZmAuIElmIG92ZXJyaWRk
ZW4sIHRoZSB2YWx1ZSB3b3VsZCBiZSBpbml0aWFsaXplZCBpbgotICAgICAgICAjIGBydW5faW5m
b19leHRyYXNgIGFuZCBiZSBzdXBwbGllZCBpbiB0aGUgYGV4dHJhc2AgcGFyYW1ldGVyLgotICAg
ICAgICBpZiAic3ctZTEwcyIgbm90IGluIHNlbGY6Ci0gICAgICAgICAgICBzZWxmWyJzdy1lMTBz
Il0gPSBzZWxmLmdldCgibmlnaHRseV9idWlsZCIsIEZhbHNlKQotCiAgICAgICAgIHNlbGZbImhl
YWRsZXNzIl0gPSBleHRyYXMuZ2V0KCJoZWFkbGVzcyIsIEZhbHNlKQogICAgICAgICBzZWxmWyJ3
ZWJyZW5kZXIiXSA9IGVuYWJsZV93ZWJyZW5kZXIKIAotCiAgICAgZGVmIF91cGRhdGVfbW96aW5m
byhzZWxmLCBtZXRhZGF0YV9yb290KToKICAgICAgICAgIiIiQWRkIGV4dHJhIGJ1aWxkIGluZm9y
bWF0aW9uIGZyb20gYSBtb3ppbmZvLmpzb24gZmlsZSBpbiBhIHBhcmVudAogICAgICAgICBkaXJl
Y3RvcnkiIiIKQEAgLTE1MCw2ICsxNDAsMTQgQEAgY2xhc3MgUnVuSW5mbyhkaWN0KToKICAgICAg
ICAgbW96aW5mby5maW5kX2FuZF91cGRhdGVfZnJvbV9qc29uKCpkaXJzKQogCiAKK2RlZiBzZXJ2
ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSk6CisgICAgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVt
LCAiaDIiKSBhbmQgbWFuaWZlc3RfaXRlbS5oMjoKKyAgICAgICAgcmV0dXJuICJoMiIKKyAgICBp
ZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBz
OgorICAgICAgICByZXR1cm4gImh0dHBzIgorICAgIHJldHVybiAiaHR0cCIKKworCiBjbGFzcyBU
ZXN0KG9iamVjdCk6CiAKICAgICByZXN1bHRfY2xzID0gTm9uZQpAQCAtMTYwLDE0ICsxNTgsMTQg
QEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIGxvbmdfdGltZW91dCA9IDYwICAjIHNlY29uZHMK
IAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRh
dGEsIHRlc3RfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1O
b25lLCBwcm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBh
dGg9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToKICAgICAgICAgc2VsZi50ZXN0
c19yb290ID0gdGVzdHNfcm9vdAogICAgICAgICBzZWxmLnVybCA9IHVybAogICAgICAgICBzZWxm
Ll9pbmhlcml0X21ldGFkYXRhID0gaW5oZXJpdF9tZXRhZGF0YQogICAgICAgICBzZWxmLl90ZXN0
X21ldGFkYXRhID0gdGVzdF9tZXRhZGF0YQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0
IGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgZWxzZSBzZWxmLmRlZmF1bHRfdGltZW91dAogICAgICAg
ICBzZWxmLnBhdGggPSBwYXRoCi0gICAgICAgIHNlbGYuZW52aXJvbm1lbnQgPSB7InByb3RvY29s
IjogcHJvdG9jb2wsICJwcmVmcyI6IHNlbGYucHJlZnN9CisgICAgICAgIHNlbGYuZW52aXJvbm1l
bnQgPSB7InByb3RvY29sIjogcHJvdG9jb2wsICJwcmVmcyI6IHNlbGYucHJlZnMsICJxdWljIjog
cXVpY30KIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShvdGhlciwgVGVzdCk6CkBAIC0xODYsMTQgKzE4NCwxMyBAQCBjbGFzcyBUZXN0KG9i
amVjdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBtYW5p
ZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRh
KToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRlbS50
aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLSAgICAgICAgcHJvdG9j
b2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1hbmlm
ZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgcmV0dXJuIGNscyhtYW5pZmVzdF9m
aWxlLnRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbS51cmwsCiAg
ICAgICAgICAgICAgICAgICAgaW5oZXJpdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICB0
ZXN0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKICAgICAg
ICAgICAgICAgICAgICBwYXRoPW9zLnBhdGguam9pbihtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
IG1hbmlmZXN0X2l0ZW0ucGF0aCksCi0gICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9cHJvdG9j
b2wpCisgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9c2VydmVyX3Byb3RvY29sKG1hbmlmZXN0
X2l0ZW0pKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlkKHNlbGYpOgpAQCAtMjYyLDYgKzI1
OSwxMyBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50
CiAgICAgICAgIHJldHVybiAwCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNhYmxl
ZChzZWxmKToKKyAgICAgICAgZm9yIG1ldGEgaW4gc2VsZi5pdGVybWV0YSgpOgorICAgICAgICAg
ICAgaWYgbWV0YS5sc2FuX2Rpc2FibGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJl
dHVybiBtZXRhLmxzYW5fZGlzYWJsZWQKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBAcHJv
cGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAgICBsc2FuX2FsbG93ZWQg
PSBzZXQoKQpAQCAtMjk1LDcgKzI5OSw3IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICAgICAg
cnYgPSB7fQogICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKE5vbmUpOgogICAgICAg
ICAgICAgdGhyZXNob2xkID0gbWV0YS5sZWFrX3RocmVzaG9sZAotICAgICAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gdGhyZXNob2xkLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIGtleSwg
dmFsdWUgaW4gaXRlcml0ZW1zKHRocmVzaG9sZCk6CiAgICAgICAgICAgICAgICAgaWYga2V5IG5v
dCBpbiBydjoKICAgICAgICAgICAgICAgICAgICAgcnZba2V5XSA9IHZhbHVlCiAgICAgICAgIHJl
dHVybiBydgpAQCAtMzM3LDcgKzM0MSw3IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKIAogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBleHBlY3RlZCA9IG1ldGFkYXRhLmdldCgiZXhwZWN0ZWQiKQot
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgKGJhc2VzdHJpbmcpKToKKyAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIHN0cmluZ190eXBlcyk6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGV4cGVjdGVkCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0
ZWQsIGxpc3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFswXQpAQCAtMzQ2LDYg
KzM1MCwxNiBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoK
ICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CiAKKyAgICBkZWYgaW1wbGVtZW50YXRpb25fc3Rh
dHVzKHNlbGYpOgorICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBOb25lCisgICAgICAg
IGZvciBtZXRhIGluIHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9u
X3N0YXR1cyA9IG1ldGEuaW1wbGVtZW50YXRpb25fc3RhdHVzCisgICAgICAgICAgICBpZiBpbXBs
ZW1lbnRhdGlvbl9zdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9u
X3N0YXR1cworCisgICAgICAgICMgYXNzdW1pbmcgbm8gc3BlY2lmaWMgY2FzZSwgd2UgYXJlIGlt
cGxlbWVudGluZyBpdAorICAgICAgICByZXR1cm4gImltcGxlbWVudGluZyIKKwogICAgIGRlZiBr
bm93bl9pbnRlcm1pdHRlbnQoc2VsZiwgc3VidGVzdD1Ob25lKToKICAgICAgICAgbWV0YWRhdGEg
PSBzZWxmLl9nZXRfbWV0YWRhdGEoc3VidGVzdCkKICAgICAgICAgaWYgbWV0YWRhdGEgaXMgTm9u
ZToKQEAgLTM4MSw5ICszOTUsOSBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVGVzdCk6CiAKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0
ZXN0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwg
cHJvdG9jb2w9Imh0dHAiLCB0ZXN0ZHJpdmVyPUZhbHNlLAotICAgICAgICAgICAgICAgICBqc3No
ZWxsPUZhbHNlLCBzY3JpcHRzPU5vbmUpOgorICAgICAgICAgICAgICAgICBqc3NoZWxsPUZhbHNl
LCBzY3JpcHRzPU5vbmUsIHF1aWM9RmFsc2UpOgogICAgICAgICBUZXN0Ll9faW5pdF9fKHNlbGYs
IHRlc3RzX3Jvb3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwgdGltZW91
dCwKLSAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBwcm90b2NvbCkKKyAgICAgICAgICAgICAg
ICAgICAgICBwYXRoLCBwcm90b2NvbCwgcXVpYykKIAogICAgICAgICBzZWxmLnRlc3Rkcml2ZXIg
PSB0ZXN0ZHJpdmVyCiAgICAgICAgIHNlbGYuanNzaGVsbCA9IGpzc2hlbGwKQEAgLTM5MiwyMiAr
NDA2LDIzIEBAIGNsYXNzIFRlc3RoYXJuZXNzVGVzdChUZXN0KToKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgZnJvbV9tYW5pZmVzdChjbHMsIG1hbmlmZXN0X2ZpbGUsIG1hbmlmZXN0X2l0ZW0s
IGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEpOgogICAgICAgICB0aW1lb3V0ID0gY2xz
LmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF9pdGVtLnRpbWVvdXQgPT0gImxvbmciIGVsc2UgY2xz
LmRlZmF1bHRfdGltZW91dAotICAgICAgICBwcm90b2NvbCA9ICJodHRwcyIgaWYgaGFzYXR0ciht
YW5pZmVzdF9pdGVtLCAiaHR0cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwcyBlbHNlICJodHRw
IgogICAgICAgICB0ZXN0ZHJpdmVyID0gbWFuaWZlc3RfaXRlbS50ZXN0ZHJpdmVyIGlmIGhhc2F0
dHIobWFuaWZlc3RfaXRlbSwgInRlc3Rkcml2ZXIiKSBlbHNlIEZhbHNlCiAgICAgICAgIGpzc2hl
bGwgPSBtYW5pZmVzdF9pdGVtLmpzc2hlbGwgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAianNz
aGVsbCIpIGVsc2UgRmFsc2UKKyAgICAgICAgcXVpYyA9IG1hbmlmZXN0X2l0ZW0ucXVpYyBpZiBo
YXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJxdWljIikgZWxzZSBGYWxzZQogICAgICAgICBzY3JpcHRf
bWV0YWRhdGEgPSBtYW5pZmVzdF9pdGVtLnNjcmlwdF9tZXRhZGF0YSBvciBbXQotICAgICAgICBz
Y3JpcHRzID0gW3YgZm9yIChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEgaWYgayA9PSBiInNjcmlw
dCJdCisgICAgICAgIHNjcmlwdHMgPSBbdiBmb3IgKGssIHYpIGluIHNjcmlwdF9tZXRhZGF0YQor
ICAgICAgICAgICAgICAgICAgIGlmIGsgPT0gInNjcmlwdCJdCiAgICAgICAgIHJldHVybiBjbHMo
bWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0
ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0YWRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVv
dXQsCiAgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpvaW4obWFuaWZlc3RfZmlsZS50
ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAotICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPXByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIHByb3RvY29sPXNlcnZlcl9wcm90b2Nv
bChtYW5pZmVzdF9pdGVtKSwKICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2
ZXIsCiAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxsLAotICAgICAgICAgICAgICAg
ICAgIHNjcmlwdHM9c2NyaXB0cwotICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICBzY3JpcHRzPXNjcmlwdHMsCisgICAgICAgICAgICAgICAgICAgcXVpYz1xdWljKQogCiAg
ICAgQHByb3BlcnR5CiAgICAgZGVmIGlkKHNlbGYpOgpAQCAtNDIzLDEzICs0MzgsMjQgQEAgY2xh
c3MgTWFudWFsVGVzdChUZXN0KToKIAogCiBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToKKyAgICAi
IiJBIHJlZnRlc3QKKworICAgIEEgcmVmdGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCB0byBwYXNz
IGlmIG9uZSBvZiBpdHMgcmVmZXJlbmNlcyBtYXRjaGVzIChzZWUgYmVsb3cpICphbmQqIHRoZQor
ICAgIHJlZmVyZW5jZSBwYXNzZXMgaWYgaXQgaGFzIGFueSByZWZlcmVuY2VzIHJlY3Vyc2l2ZWx5
LgorCisgICAgQXR0cmlidXRlczoKKyAgICAgICAgcmVmZXJlbmNlcyAoTGlzdFtUdXBsZVtzdHIs
IHN0cl1dKTogYSBsaXN0IG9mIGFsdGVybmF0ZSByZWZlcmVuY2VzLCB3aGVyZSBvbmUgbXVzdCBt
YXRjaCBmb3IgdGhlIHRlc3QgdG8gcGFzcworICAgICAgICB2aWV3cG9ydF9zaXplIChPcHRpb25h
bFtUdXBsZVtpbnQsIGludF1dKTogc2l6ZSBvZiB0aGUgdmlld3BvcnQgZm9yIHRoaXMgdGVzdCwg
aWYgbm90IGRlZmF1bHQKKyAgICAgICAgZHBpIChPcHRpb25hbFtpbnRdKTogZHBpIHRvIHVzZSB3
aGVuIHJlbmRlcmluZyB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0CisKKyAgICAiIiIKICAgICBy
ZXN1bHRfY2xzID0gUmVmdGVzdFJlc3VsdAogICAgIHRlc3RfdHlwZSA9ICJyZWZ0ZXN0IgogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwg
dGVzdF9tZXRhZGF0YSwgcmVmZXJlbmNlcywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1Ob25l
LCBwYXRoPU5vbmUsIHZpZXdwb3J0X3NpemU9Tm9uZSwgZHBpPU5vbmUsIGZ1enp5PU5vbmUsIHBy
b3RvY29sPSJodHRwIik6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25l
LCB2aWV3cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0
cCIsIHF1aWM9RmFsc2UpOgogICAgICAgICBUZXN0Ll9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3Qs
IHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwgdGltZW91dCwKLSAgICAgICAg
ICAgICAgICAgICAgICBwYXRoLCBwcm90b2NvbCkKKyAgICAgICAgICAgICAgICAgICAgICBwYXRo
LCBwcm90b2NvbCwgcXVpYykKIAogICAgICAgICBmb3IgXywgcmVmX3R5cGUgaW4gcmVmZXJlbmNl
czoKICAgICAgICAgICAgIGlmIHJlZl90eXBlIG5vdCBpbiAoIj09IiwgIiE9Iik6CkBAIC00NDUs
MTYgKzQ3MSwxMCBAQCBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToKICAgICAgICAgICAgICAgICAg
ICAgICBtYW5pZmVzdF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X3Rlc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9tZXRhZGF0YSwKLSAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X21ldGFkYXRhLAotICAgICAgICAgICAgICAgICAgICAgIG5vZGVzPU5vbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuPU5vbmUpOgorICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEpOgogCiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9u
Z190aW1lb3V0IGlmIG1hbmlmZXN0X3Rlc3QudGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVm
YXVsdF90aW1lb3V0Ci0KLSAgICAgICAgaWYgbm9kZXMgaXMgTm9uZToKLSAgICAgICAgICAgIG5v
ZGVzID0ge30KLSAgICAgICAgaWYgcmVmZXJlbmNlc19zZWVuIGlzIE5vbmU6Ci0gICAgICAgICAg
ICByZWZlcmVuY2VzX3NlZW4gPSBzZXQoKQorICAgICAgICBxdWljID0gbWFuaWZlc3RfdGVzdC5x
dWljIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgInF1aWMiKSBlbHNlIEZhbHNlCiAKICAgICAg
ICAgdXJsID0gbWFuaWZlc3RfdGVzdC51cmwKIApAQCAtNDY3LDQxICs0ODcsNjAgQEAgY2xhc3Mg
UmVmdGVzdFRlc3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgcGF0aD1tYW5pZmVzdF90ZXN0
LnBhdGgsCiAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRfc2l6ZT1tYW5pZmVzdF90ZXN0LnZp
ZXdwb3J0X3NpemUsCiAgICAgICAgICAgICAgICAgICAgZHBpPW1hbmlmZXN0X3Rlc3QuZHBpLAot
ICAgICAgICAgICAgICAgICAgIHByb3RvY29sPSJodHRwcyIgaWYgaGFzYXR0cihtYW5pZmVzdF90
ZXN0LCAiaHR0cHMiKSBhbmQgbWFuaWZlc3RfdGVzdC5odHRwcyBlbHNlICJodHRwIiwKLSAgICAg
ICAgICAgICAgICAgICBmdXp6eT1tYW5pZmVzdF90ZXN0LmZ1enp5KQorICAgICAgICAgICAgICAg
ICAgIHByb3RvY29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF90ZXN0KSwKKyAgICAgICAgICAg
ICAgICAgICBmdXp6eT1tYW5pZmVzdF90ZXN0LmZ1enp5LAorICAgICAgICAgICAgICAgICAgIHF1
aWM9cXVpYykKIAotICAgICAgICBub2Rlc1t1cmxdID0gbm9kZQorICAgICAgICByZWZzX2J5X3R5
cGUgPSBkZWZhdWx0ZGljdChsaXN0KQogCiAgICAgICAgIGZvciByZWZfdXJsLCByZWZfdHlwZSBp
biBtYW5pZmVzdF90ZXN0LnJlZmVyZW5jZXM6Ci0gICAgICAgICAgICBjb21wYXJpc29uX2tleSA9
IChyZWZfdHlwZSwpICsgdHVwbGUoc29ydGVkKFt1cmwsIHJlZl91cmxdKSkKLSAgICAgICAgICAg
IGlmIHJlZl91cmwgaW4gbm9kZXM6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9kZSA9IHJl
Zl91cmwKLSAgICAgICAgICAgICAgICBpZiBjb21wYXJpc29uX2tleSBpbiByZWZlcmVuY2VzX3Nl
ZW46Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgaGF2ZSByZWFjaGVkIGEgY3ljbGUgc28gc3Rv
cCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGp1c3Qgc2VlaW5nIGEgbm9k
ZSBmb3IgdGhlIHNlY29uZCB0aW1lIGlzIG5vdAotICAgICAgICAgICAgICAgICAgICAjIGVub3Vn
aCB0byBkZXRlY3QgYSBjeWNsZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgICMgQSAhPSBC
ICE9IEMgIT0gQSBtdXN0IGluY2x1ZGUgQyAhPSBBCi0gICAgICAgICAgICAgICAgICAgICMgYnV0
IEEgPT0gQiA9PSBBIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgcmVkdW5kYW50IEIgPT0gQS4KLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVu
LmFkZChjb21wYXJpc29uX2tleSkKLQotICAgICAgICAgICAgbWFuaWZlc3Rfbm9kZSA9IG1hbmlm
ZXN0X2ZpbGUuZ2V0X3JlZmVyZW5jZShyZWZfdXJsKQotICAgICAgICAgICAgaWYgbWFuaWZlc3Rf
bm9kZToKLSAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdC5mcm9tX21hbmlm
ZXN0KG1hbmlmZXN0X2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzX3NlZW4p
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IFJlZnRlc3RU
ZXN0KG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWZfdXJsLAorICAgICAgICAgICAgcmVmc19ieV90eXBlW3JlZl90eXBl
XS5hcHBlbmQocmVmX3VybCkKKworICAgICAgICAjIENvbnN0cnVjdCBhIGxpc3Qgb2YgYWxsIHRo
ZSBtaXNtYXRjaGVzLCB3aGVyZSB3ZSBlbmQgdXAgd2l0aCBtaXNtYXRjaF8xICE9IHVybCAhPQor
ICAgICAgICAjIG1pc21hdGNoXzIgIT0gdXJsICE9IG1pc21hdGNoXzMgZXRjLgorICAgICAgICAj
CisgICAgICAgICMgUGVyIHRoZSBsb2dpYyBkb2N1bWVudGVkIGFib3ZlLCB0aGlzIG1lYW5zIHRo
YXQgbm9uZSBvZiB0aGUgbWlzbWF0Y2hlcyBwcm92aWRlZCBtYXRjaCwKKyAgICAgICAgbWlzbWF0
Y2hfd2FsayA9IE5vbmUKKyAgICAgICAgaWYgcmVmc19ieV90eXBlWyIhPSJdOgorICAgICAgICAg
ICAgbWlzbWF0Y2hfd2FsayA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZzX2J5X3R5cGVbIiE9
Il1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKLQotICAgICAgICAgICAgbm9kZS5yZWZlcmVu
Y2VzLmFwcGVuZCgocmVmZXJlbmNlLCByZWZfdHlwZSkpCisgICAgICAgICAgICBjbXBfcmVmID0g
bWlzbWF0Y2hfd2FsaworICAgICAgICAgICAgZm9yIHJlZl91cmwgaW4gcmVmc19ieV90eXBlWyIh
PSJdWzE6XToKKyAgICAgICAgICAgICAgICBjbXBfc2VsZiA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0
X2ZpbGUudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9yZWYucmVmZXJl
bmNlcy5hcHBlbmQoKGNtcF9zZWxmLCAiIT0iKSkKKyAgICAgICAgICAgICAgICBjbXBfcmVmID0g
UmVmdGVzdFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWZfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pCisgICAgICAgICAg
ICAgICAgY21wX3NlbGYucmVmZXJlbmNlcy5hcHBlbmQoKGNtcF9yZWYsICIhPSIpKQorCisgICAg
ICAgIGlmIG1pc21hdGNoX3dhbGsgaXMgTm9uZToKKyAgICAgICAgICAgIG1pc21hdGNoX3JlZnMg
PSBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWlzbWF0Y2hfcmVmcyA9IFsobWlzbWF0
Y2hfd2FsaywgIiE9IildCisKKyAgICAgICAgaWYgcmVmc19ieV90eXBlWyI9PSJdOgorICAgICAg
ICAgICAgIyBGb3IgZWFjaCA9PSByZWYsIGFkZCBhIHJlZmVyZW5jZSB0byB0aGlzIG5vZGUgd2hv
c2UgdGFpbCBpcyB0aGUgbWlzbWF0Y2ggbGlzdC4KKyAgICAgICAgICAgICMgUGVyIHRoZSBsb2dp
YyBkb2N1bWVudGVkIGFib3ZlLCB0aGlzIG1lYW5zIGFueSBvbmUgb2YgdGhlIG1hdGNoZXMgbXVz
dCBwYXNzIHBsdXMgYWxsIHRoZSBtaXNtYXRjaGVzLgorICAgICAgICAgICAgZm9yIHJlZl91cmwg
aW4gcmVmc19ieV90eXBlWyI9PSJdOgorICAgICAgICAgICAgICAgIHJlZiA9IFJlZnRlc3RUZXN0
KG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWZfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWlzbWF0Y2hfcmVmcykKKyAgICAgICAgICAgICAgICBub2RlLnJlZmVy
ZW5jZXMuYXBwZW5kKChyZWYsICI9PSIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBP
dGhlcndpc2UsIHdlIGp1c3QgYWRkIHRoZSBtaXNtYXRjaGVzIGRpcmVjdGx5IGFzIHdlIGFyZSBp
bW1lZGlhdGVseSBpbnRvIHRoZQorICAgICAgICAgICAgIyBtaXNtYXRjaCBjaGFpbiB3aXRoIG5v
IGFsdGVybmF0ZXMuCisgICAgICAgICAgICBub2RlLnJlZmVyZW5jZXMuZXh0ZW5kKG1pc21hdGNo
X3JlZnMpCiAKICAgICAgICAgcmV0dXJuIG5vZGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTg5NmU2YmUyYmQ1MWY0
Yjc4ZTk3MDNjYWVmYjliNjcyZTEwYTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAK
LVczQyAzLWNsYXVzZSBCU0QgTGljZW5zZQotCi1odHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVt
L0xlZ2FsLzIwMDgvMDMtYnNkLWxpY2Vuc2UuaHRtbAotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLW1ldDoKLQotKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9y
aWdpbmFsIGNvcHlyaWdodCBub3RpY2UsCi0gIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQppbmRleCBjOWMzNjRiOGJhY2M3MmE2ZmY3
N2Y5ZDBjODExYjJkN2QxODEwZDEzLi43NTljYjQ4ZDFmNjVmNTJmNjUwMGVkMmI4NzFjN2VmNDMw
NTE4YWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAucHkKQEAgLTEsNiAr
MSw2IEBACiBmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCiAKLVBBQ0tBR0VfVkVSU0lPTiA9
ICcyLjAnCitQQUNLQUdFX1ZFUlNJT04gPSAnMy4wJwogZGVwcyA9IFsic2l4Pj0xLjgiLCAiaDI9
PTMuMC4xIl0KIAogc2V0dXAobmFtZT0nd3B0c2VydmUnLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfY29va2llcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tp
ZXMucHkKaW5kZXggMmUyZDBkNjc3MWJhMjZhMWZiZTdlOGZjOGJiMmUyNTk4YmMzNDIyMy4uNjRl
YWIyZDgwNmI1MmRlOTMzYjI4ZDU4NDE2YjY5ZDM2YmRjYjI1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVz
dF9jb29raWVzLnB5CkBAIC0xMCw3ICsxMCw3IEBAIGNsYXNzIFRlc3RSZXNwb25zZVNldENvb2tp
ZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgIGRlZiB0ZXN0X25hbWVfdmFsdWUoc2VsZik6CiAgICAg
ICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVl
c3QsIHJlc3BvbnNlKToKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAi
dmFsdWUiKQorICAgICAgICAgICAgcmVzcG9uc2Uuc2V0X2Nvb2tpZShiIm5hbWUiLCBiInZhbHVl
IikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwg
Ii90ZXN0L25hbWVfdmFsdWUiLCBoYW5kbGVyKQpAQCAtMjIsOCArMjIsOCBAQCBjbGFzcyBUZXN0
UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF91bnNldChz
ZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhh
bmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgotICAgICAgICAgICAgcmVzcG9uc2Uuc2V0X2Nvb2tp
ZSgibmFtZSIsICJ2YWx1ZSIpCi0gICAgICAgICAgICByZXNwb25zZS51bnNldF9jb29raWUoIm5h
bWUiKQorICAgICAgICAgICAgcmVzcG9uc2Uuc2V0X2Nvb2tpZShiIm5hbWUiLCBiInZhbHVlIikK
KyAgICAgICAgICAgIHJlc3BvbnNlLnVuc2V0X2Nvb2tpZShiIm5hbWUiKQogICAgICAgICAgICAg
cmV0dXJuICJUZXN0IgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvdW5zZXQiLCBo
YW5kbGVyKQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVz
dFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CiAgICAgICAgIEB3cHRz
ZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3Bv
bnNlKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmRlbGV0ZV9jb29raWUoIm5hbWUiKQorICAgICAg
ICAgICAgcmVzcG9uc2UuZGVsZXRlX2Nvb2tpZShiIm5hbWUiKQogICAgICAgICAgICAgcmV0dXJu
ICJUZXN0IgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvZGVsZXRlIiwgaGFuZGxl
cikKQEAgLTQ3LDE4ICs0NywyMCBAQCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVz
aW5nU2VydmVyKToKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzWyJuYW1lIl0sICIi
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzWyJQYXRoIl0sICIvIikKLSAgICAgICAg
I1Nob3VsZCBhbHNvIGNoZWNrIHRoYXQgZXhwaXJlcyBpcyBpbiB0aGUgcGFzdAorICAgICAgICAj
IFRPRE86IFNob3VsZCBhbHNvIGNoZWNrIHRoYXQgZXhwaXJlcyBpcyBpbiB0aGUgcGFzdAorCiAK
IGNsYXNzIFRlc3RSZXF1ZXN0Q29va2llcyhUZXN0VXNpbmdTZXJ2ZXIpOgogICAgIGRlZiB0ZXN0
X3NldF9jb29raWUoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAg
ICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKLSAgICAgICAgICAgIHJldHVy
biByZXF1ZXN0LmNvb2tpZXNbIm5hbWUiXS52YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHJlcXVl
c3QuY29va2llc1tiIm5hbWUiXS52YWx1ZQogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rl
c3Qvc2V0X2Nvb2tpZSIsIGhhbmRsZXIpCiAgICAgICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdp
c3Rlcigqcm91dGUpCiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0sIGhlYWRl
cnM9eyJDb29raWUiOiAibmFtZT12YWx1ZSJ9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3AucmVhZCgpLCBiInZhbHVlIikKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAg
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVz
cG9uc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXNwb25zZS5weQppbmRleCBkOGQ2
NGQ1NGNjYzc4YTNjNmRlYmEyMWI3MzQyOGU3MWFlYjFiZTYwLi42ZTk0N2U0NzhkOWUxNGUzMzY3
NmNiZDYyYmJiYWRhMmYxMThlYzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVz
dF9yZXNwb25zZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXNwb25zZS5weQpA
QCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QK
IGltcG9ydCBqc29uCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCBweXRlc3QKLWZy
b20gc2l4IGltcG9ydCBjcmVhdGVfYm91bmRfbWV0aG9kCitmcm9tIHNpeCBpbXBvcnQgY3JlYXRl
X2JvdW5kX21ldGhvZCwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgQmFk
U3RhdHVzTGluZQogCiB3cHRzZXJ2ZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAoIndwdHNlcnZlIikK
IGZyb20gLmJhc2UgaW1wb3J0IFRlc3RVc2luZ1NlcnZlciwgVGVzdFVzaW5nSDJTZXJ2ZXIsIGRv
Y19yb290CkBAIC0xNjcsNyArMTY3LDYgQEAgY2xhc3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1Nl
cnZlcik6CiAgICAgICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCiAgICAg
ICAgIHNlbGYucmVxdWVzdChyb3V0ZVsxXSkKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0icHkzIHVybGxpYiBkb2Vzbid0IGhhbmRsZSBp
bnZhbGlkIEhUVFAgdmVyeSB3ZWxsIikKICAgICBkZWYgdGVzdF93cml0ZV9yYXdfY29udGVudHNf
aW52YWxpZF9odHRwKHNlbGYpOgogICAgICAgICByZXNwX2NvbnRlbnQgPSBiIklOVkFMSUQgSFRU
UCIKIApAQCAtMTc3LDkgKzE3NiwxNCBAQCBjbGFzcyBUZXN0UmVzcG9uc2UoVGVzdFVzaW5nU2Vy
dmVyKToKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Rlc3Rfd3JpdGVfcmF3X2Nv
bnRlbnQiLCBoYW5kbGVyKQogICAgICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJv
dXRlKQotICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdKQotICAgICAgICBhc3Nl
cnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9jb250ZW50CiAKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcmVzcCA9IHNlbGYucmVxdWVzdChyb3V0ZVsxXSkKKyAgICAgICAgICAgIGFzc2VydCByZXNw
LnJlYWQoKSA9PSByZXNwX2NvbnRlbnQKKyAgICAgICAgZXhjZXB0IEJhZFN0YXR1c0xpbmUgYXMg
ZToKKyAgICAgICAgICAgICMgSW4gUHl0aG9uMywgYW4gaW52YWxpZCBIVFRQIHJlcXVlc3Qgc2hv
dWxkIHRocm93IEJhZFN0YXR1c0xpbmUuCisgICAgICAgICAgICBhc3NlcnQgUFkzCisgICAgICAg
ICAgICBhc3NlcnQgc3RyKGUpID09IHJlc3BfY29udGVudC5kZWNvZGUoJ3V0Zi04JykKIAogY2xh
c3MgVGVzdEgyUmVzcG9uc2UoVGVzdFVzaW5nSDJTZXJ2ZXIpOgogICAgIGRlZiB0ZXN0X3dyaXRl
X3dpdGhvdXRfZW5kaW5nX3N0cmVhbShzZWxmKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC90ZXN0X3N0YXNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3Rfc3Rhc2gucHkKaW5k
ZXggMzA5ZGQ5ZTU3N2EwMzM1YjdhNTY5OTJjODJhNDhiNDNhMjU5YTI4ZC4uMWM0YzlhZDkzM2Ez
Nzc0NjYyM2EwMTk1ZjU1M2FkOGNmZTcwNjg4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL3Rlc3Rfc3Rhc2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3Rfc3Rhc2gucHkK
QEAgLTE4LDEwICsxOCwxMCBAQCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5n
U2VydmVyKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVm
IGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgogICAgICAgICAgICAgaWYgcmVxdWVzdC5tZXRo
b2QgPT0gIlBPU1QiOgotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dChy
ZXF1ZXN0LlBPU1QuZmlyc3QoImlkIiksIHJlcXVlc3QuUE9TVC5maXJzdCgiZGF0YSIpKQorICAg
ICAgICAgICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dChyZXF1ZXN0LlBPU1QuZmlyc3Qo
YiJpZCIpLCByZXF1ZXN0LlBPU1QuZmlyc3QoYiJkYXRhIikpCiAgICAgICAgICAgICAgICAgZGF0
YSA9ICJPSyIKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdC5tZXRob2QgPT0gIkdFVCI6Ci0gICAg
ICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3Quc2VydmVyLnN0YXNoLnRha2UocmVxdWVzdC5HRVQu
Zmlyc3QoImlkIikpCisgICAgICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3Quc2VydmVyLnN0YXNo
LnRha2UocmVxdWVzdC5HRVQuZmlyc3QoYiJpZCIpKQogICAgICAgICAgICAgICAgIGlmIGRhdGEg
aXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJOT1QgRk9VTkQiCiAgICAgICAg
ICAgICByZXR1cm4gZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL3Rlc3RfcmVxdWVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjlkM2Q0NjA0NDA5NDExOTg0Y2I0
OWZjZDQwZWI3ZTk3MWIzYzUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVl
c3QucHkKQEAgLTAsMCArMSw3OCBAQAoraW1wb3J0IG1vY2sKK2Zyb20gc2l4IGltcG9ydCBiaW5h
cnlfdHlwZQorCitmcm9tIHdwdHNlcnZlLnJlcXVlc3QgaW1wb3J0IFJlcXVlc3QsIFJlcXVlc3RI
ZWFkZXJzCisKKworY2xhc3MgTW9ja0hUVFBNZXNzYWdlKGRpY3QpOgorICAgICIiIkEgbWluaW11
bSAoYW5kIG5vdCBjb21wbGV0ZWx5IGNvcnJlY3RseSkgbW9jayBvZiBIVFRQTWVzc2FnZSBmb3Ig
dGVzdGluZy4KKworICAgIENvbnN0cnVjdGluZyBIVFRQTWVzc2FnZSBpcyBhbm5veWluZyBhbmQg
ZGlmZmVyZW50IGluIFB5dGhvbiAyIGFuZCAzLiBUaGlzCisgICAgb25seSBpbXBsZW1lbnRzIHRo
ZSBwYXJ0cyB1c2VkIGJ5IFJlcXVlc3RIZWFkZXJzLgorCisgICAgUmVxdWlyZW1lbnRzIGZvciBj
b25zdHJ1Y3Rpb246CisgICAgKiBLZXlzIGFyZSBoZWFkZXIgbmFtZXMgYW5kIE1VU1QgYmUgbG93
ZXItY2FzZS4KKyAgICAqIFZhbHVlcyBhcmUgbGlzdHMgb2YgaGVhZGVyIHZhbHVlcyAoZXZlbiBp
ZiB0aGVyZSdzIG9ubHkgb25lKS4KKyAgICAqIEtleXMgYW5kIHZhbHVlcyBzaG91bGQgYmUgbmF0
aXZlIHN0cmluZ3MgdG8gbWF0Y2ggc3RkbGliJ3MgYmVoYXZpb3Vycy4KKyAgICAiIiIKKyAgICBk
ZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoa2V5
LCBzdHIpCisgICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2Vy
KCkpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlcywgbGlzdCkKKyAgICAgICAgcmV0
dXJuIHZhbHVlc1swXQorCisgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6Cisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmW2tleV0KKyAgICAgICAgZXhjZXB0
IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKworICAgIGRlZiBnZXRhbGxt
YXRjaGluZ2hlYWRlcnMoc2VsZiwga2V5KToKKyAgICAgICAgdmFsdWVzID0gZGljdC5fX2dldGl0
ZW1fXyhzZWxmLCBrZXkubG93ZXIoKSkKKyAgICAgICAgcmV0dXJuIFsie306IHt9XG4iLmZvcm1h
dChrZXksIHYpIGZvciB2IGluIHZhbHVlc10KKworCitkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNf
Z2V0KCk6CisgICAgcmF3X2hlYWRlcnMgPSBNb2NrSFRUUE1lc3NhZ2UoeworICAgICAgICAneC1m
b28nOiBbJ2ZvbyddLAorICAgICAgICAneC1iYXInOiBbJ2JhcjEnLCAnYmFyMiddLAorICAgIH0p
CisgICAgaGVhZGVycyA9IFJlcXVlc3RIZWFkZXJzKHJhd19oZWFkZXJzKQorICAgIGFzc2VydCBo
ZWFkZXJzWyd4LWZvbyddID09IGInZm9vJworICAgIGFzc2VydCBoZWFkZXJzWydYLUJhciddID09
IGInYmFyMSwgYmFyMicKKyAgICBhc3NlcnQgaGVhZGVycy5nZXQoJ3gtYmFyJykgPT0gYidiYXIx
LCBiYXIyJworCisKK2RlZiB0ZXN0X3JlcXVlc3RfaGVhZGVyc19lbmNvZGluZygpOgorICAgIHJh
d19oZWFkZXJzID0gTW9ja0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwK
KyAgICAgICAgJ3gtYmFyJzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMg
PSBSZXF1ZXN0SGVhZGVycyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShoZWFk
ZXJzWyd4LWZvbyddLCBiaW5hcnlfdHlwZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShoZWFkZXJz
Wyd4LWJhciddLCBiaW5hcnlfdHlwZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShoZWFkZXJzLmdl
dF9saXN0KCd4LWJhcicpWzBdLCBiaW5hcnlfdHlwZSkKKworCitkZWYgdGVzdF9yZXF1ZXN0X3Vy
bF9mcm9tX3NlcnZlcl9hZGRyZXNzKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2Nr
KCkKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVl
c3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykK
KyAgICByZXF1ZXN0X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIu
aGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSgpCisKKyAgICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1
ZXN0X2hhbmRsZXIpCisgICAgYXNzZXJ0IHJlcXVlc3QudXJsID09ICdodHRwOi8vbG9jYWxob3N0
OjgwMDAvZGVtbycKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXF1ZXN0LnVybCwgc3RyKQorCisK
K2RlZiB0ZXN0X3JlcXVlc3RfdXJsX2Zyb21faG9zdF9oZWFkZXIoKToKKyAgICByZXF1ZXN0X2hh
bmRsZXIgPSBtb2NrLk1vY2soKQorICAgIHJlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2NoZW1lID0g
J2h0dHAnCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfYWRkcmVzcyA9ICgnbG9j
YWxob3N0JywgJzgwMDAnKQorICAgIHJlcXVlc3RfaGFuZGxlci5wYXRoID0gJy9kZW1vJworICAg
IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzID0gTW9ja0hUVFBNZXNzYWdlKHsnaG9zdCc6IFsnd2Vi
LXBsYXRmb3JtLnRlc3Q6ODAwMSddfSkKKworICAgIHJlcXVlc3QgPSBSZXF1ZXN0KHJlcXVlc3Rf
aGFuZGxlcikKKyAgICBhc3NlcnQgcmVxdWVzdC51cmwgPT0gJ2h0dHA6Ly93ZWItcGxhdGZvcm0u
dGVzdDo4MDAxL2RlbW8nCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVxdWVzdC51cmwsIHN0cikK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5w
eQppbmRleCAxZWE5OWMwNjA5ZjViZWQ4NTk2NTEyODRlYjNkYTgwYTRjZGRmNzM3Li4zMWFmMTU1
OGIwY2M1YzA0Njg0M2UwZTk2NTY5ZGI0MmM0NjdjZjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rl
c3Rfc3Rhc2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CkBAIC00LDYgKzQsNyBAQCBp
bXBvcnQgdGhyZWFkaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5tYW5hZ2VycyBpbXBvcnQgQmFz
ZU1hbmFnZXIKIAogaW1wb3J0IHB5dGVzdAorZnJvbSBzaXggaW1wb3J0IFBZMwogCiBTdGFzaCA9
IHB5dGVzdC5pbXBvcnRvcnNraXAoIndwdHNlcnZlLnN0YXNoIikuU3Rhc2gKIApAQCAtNTcsNyAr
NTgsOCBAQCBkZWYgcnVuKHByb2Nlc3NfcXVldWUsIHJlcXVlc3RfbG9jaywgcmVzcG9uc2VfbG9j
ayk6CiAgICAgcHJvY2Vzc19xdWV1ZS5wdXQodGhyZWFkX3F1ZXVlLmdldCgpKQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKK0BweXRlc3QubWFyay54ZmFp
bChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBvcgorICAgICAgICAgICAgICAgICAgIFBZMyBhbmQg
bXVsdGlwcm9jZXNzaW5nLmdldF9zdGFydF9tZXRob2QoKSA9PSAic3Bhd24iLAogICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQvaXNzdWVzLzE2OTM4IikKIGRlZiB0ZXN0X2RlbGF5ZWRfbG9jayhhZGRfY2xlYW51cCk6CiAg
ICAgIiIiRW5zdXJlIHRoYXQgZGVsYXlzIGluIHByb3hpZWQgTG9jayByZXRyaWV2YWwgZG8gbm90
IGludGVyZmVyZSB3aXRoCkBAIC05Niw3ICs5OCw4IEBAIGRlZiB0ZXN0X2RlbGF5ZWRfbG9jayhh
ZGRfY2xlYW51cCk6CiAgICAgICAgICJib3RoIGluc3RhbmNlcyBoYWQgdmFsaWQgbG9ja3MiKQog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKK0BweXRlc3Qu
bWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBvcgorICAgICAgICAgICAgICAgICAg
IFBZMyBhbmQgbXVsdGlwcm9jZXNzaW5nLmdldF9zdGFydF9tZXRob2QoKSA9PSAic3Bhd24iLAog
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzE2OTM4IikKIGRlZiB0ZXN0X2RlbGF5ZWRfZGljdChhZGRfY2xl
YW51cCk6CiAgICAgIiIiRW5zdXJlIHRoYXQgZGVsYXlzIGluIHByb3hpZWQgYGRpY3RgIHJldHJp
ZXZhbCBkbyBub3QgaW50ZXJmZXJlIHdpdGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmluZGV4IGVmOWQ2YTgwYWE2YWMxNDIzZjU0
ODViYjI1YmQzMzY5NzVkOWFiNTcuLjVmOWViNmIzOGI2NTE0OWZkZTdkYWQxOWI4MDU2ZjNjYzVi
ZjEzNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93
M2MtaW1wb3J0LmxvZwpAQCAtMTYsNCArMTYsNSBAQCBOb25lCiBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvdGVzdF9jb25maWcucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfcmVwbGFjZW1lbnRfdG9rZW5pemVy
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCmluZGV4IDU5N2Iz
MjYwNGRjMjBlMGUzYTI3NjE5ZDkwNmU0NWQ4ZDc5MDMzYzEuLmZhYWFmNjdlOTg1OGExMDdkYzgz
YTk1Mjg1ZjJiOTM5NDdmYjAxMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93M2MtaW1wb3J0LmxvZwpAQCAtMTQsNyArMTQsNiBAQCBQcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL01BTklGRVNULmluCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9SRUFETUUubWQKIC9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3NldHVwLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uZmlnLnB5
CmluZGV4IGUxMWNhZTEzN2I5YzUxZDg2Nzc0MDAxZWFkNzE5MzhmZDU1YzA1NTUuLjc3NjY1NjVm
ZTRmZDE3NTU5OGI4YjZjY2UwZTRmZjRiNDBmMTBkOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
Y29uZmlnLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uZmlnLnB5CkBAIC02OSw2ICs2OSwzMSBAQCBj
bGFzcyBDb25maWcoTWFwcGluZyk6CiAgICAgZGVmIGFzX2RpY3Qoc2VsZik6CiAgICAgICAgIHJl
dHVybiBqc29uX3R5cGVzKHNlbGYuX19kaWN0X18pCiAKKyAgICAjIEVudmlyb25tZW50IHZhcmlh
YmxlcyBhcmUgbGltaXRlZCBpbiBzaXplIHNvIHdlIG5lZWQgdG8gcHJ1bmUgdGhlIG1vc3QgZWdy
ZWdpb3VzIGNvbnRyaWJ1dG9ycworICAgICMgdG8gc2l6ZSwgdGhlIG9yaWdpbiBwb2xpY3kgc3Vi
ZG9tYWlucy4KKyAgICBkZWYgYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKHNlbGYpOgorICAg
ICAgICByZXN1bHQgPSBzZWxmLmFzX2RpY3QoKQorCisgICAgICAgIGZvciBrZXkgaW4gWworICAg
ICAgICAgICAgKCJzdWJkb21haW5zIiwpLAorICAgICAgICAgICAgKCJkb21haW5zIiwgImFsdCIp
LAorICAgICAgICAgICAgKCJkb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJhbGxfZG9tYWlu
cyIsICJhbHQiKSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiIiksCisgICAgICAgICAg
ICAoImRvbWFpbnNfc2V0IiwpLAorICAgICAgICAgICAgKCJhbGxfZG9tYWluc19zZXQiLCkKKyAg
ICAgICAgXToKKyAgICAgICAgICAgIHRhcmdldCA9IHJlc3VsdAorICAgICAgICAgICAgZm9yIHBh
cnQgaW4ga2V5WzotMV06CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W3BhcnRdCisg
ICAgICAgICAgICB2YWx1ZSA9IHRhcmdldFtrZXlbLTFdXQorICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZSh2YWx1ZSwgZGljdCk6CisgICAgICAgICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0ge2s6
diBmb3IgKGssdikgaW4gaXRlcml0ZW1zKHZhbHVlKSBpZiBub3Qgay5zdGFydHN3aXRoKCJvcCIp
fQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0YXJnZXRba2V5Wy0xXV0gPSBb
eCBmb3IgeCBpbiB2YWx1ZSBpZiBub3QgeC5zdGFydHN3aXRoKCJvcCIpXQorCisgICAgICAgIHJl
dHVybiByZXN1bHQKKwogCiBkZWYganNvbl90eXBlcyhvYmopOgogICAgIGlmIGlzaW5zdGFuY2Uo
b2JqLCBkaWN0KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL2hhbmRsZXJzLnB5CmluZGV4IGNhNTExODAwOWNmYzljNDc2M2Y5OWUyYTYyOTZkNzg0YTY1
MzkyMTYuLmZlYTEyNzdiMGQxY2I1Y2FjOGNhNDQ1YWIwNTk5NDc0MTI2NjlhY2MgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQpA
QCAtMSw0ICsxLDMgQEAKLWltcG9ydCBjZ2kKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9y
dCBzeXMKQEAgLTE0LDYgKzEzLDExIEBAIGZyb20gLnJlcXVlc3QgaW1wb3J0IEF1dGhlbnRpY2F0
aW9uCiBmcm9tIC5yZXNwb25zZSBpbXBvcnQgTXVsdGlwYXJ0Q29udGVudAogZnJvbSAudXRpbHMg
aW1wb3J0IEhUVFBFeGNlcHRpb24KIAordHJ5OgorICAgIGZyb20gaHRtbCBpbXBvcnQgZXNjYXBl
CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQorCiBfX2Fs
bF9fID0gWyJmaWxlX2hhbmRsZXIiLCAicHl0aG9uX3NjcmlwdF9oYW5kbGVyIiwKICAgICAgICAg
ICAgIkZ1bmN0aW9uSGFuZGxlciIsICJoYW5kbGVyIiwgImpzb25faGFuZGxlciIsCiAgICAgICAg
ICAgICJhc19pc19oYW5kbGVyIiwgIkVycm9ySGFuZGxlciIsICJCYXNpY0F1dGhIYW5kbGVyIl0K
QEAgLTc2LDcgKzgwLDcgQEAgY2xhc3MgRGlyZWN0b3J5SGFuZGxlcihvYmplY3QpOgogPHVsPgog
JShpdGVtcylzCiA8L3VsPgotIiIiICUgeyJwYXRoIjogY2dpLmVzY2FwZSh1cmxfcGF0aCksCisi
IiIgJSB7InBhdGgiOiBlc2NhcGUodXJsX3BhdGgpLAogICAgICAgICJpdGVtcyI6ICJcbiIuam9p
bihzZWxmLmxpc3RfaXRlbXModXJsX3BhdGgsIHBhdGgpKX0gICMgbm9xYTogRTEyMgogCiAgICAg
ZGVmIGxpc3RfaXRlbXMoc2VsZiwgYmFzZV9wYXRoLCBwYXRoKToKQEAgLTkyLDE1ICs5NiwyOSBA
QCBjbGFzcyBEaXJlY3RvcnlIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBsaW5rID0gdXJs
am9pbihiYXNlX3BhdGgsICIuLiIpCiAgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSJk
aXIiPjxhIGhyZWY9IiUobGluaylzIj4lKG5hbWUpczwvYT48L2xpPiIiIiAlCiAgICAgICAgICAg
ICAgICAgICAgeyJsaW5rIjogbGluaywgIm5hbWUiOiAiLi4ifSkKKyAgICAgICAgaXRlbXMgPSBb
XQorICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCiAgICAgICAgIGZvciBpdGVtIGluIHNvcnRlZChv
cy5saXN0ZGlyKHBhdGgpKToKLSAgICAgICAgICAgIGxpbmsgPSBjZ2kuZXNjYXBlKHF1b3RlKGl0
ZW0pKQorICAgICAgICAgICAgaWYgcHJldl9pdGVtIGFuZCBwcmV2X2l0ZW0gKyAiLmhlYWRlcnMi
ID09IGl0ZW06CisgICAgICAgICAgICAgICAgaXRlbXNbLTFdWzFdID0gaXRlbQorICAgICAgICAg
ICAgICAgIHByZXZfaXRlbSA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgaXRlbXMuYXBwZW5kKFtpdGVtLCBOb25lXSkKKyAgICAgICAgICAgIHByZXZfaXRlbSA9
IGl0ZW0KKyAgICAgICAgZm9yIGl0ZW0sIGRvdF9oZWFkZXJzIGluIGl0ZW1zOgorICAgICAgICAg
ICAgbGluayA9IGVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAgIGRvdF9oZWFkZXJzX21h
cmt1cCA9ICIiCisgICAgICAgICAgICBpZiBkb3RfaGVhZGVycyBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAoIiIiICg8YSBocmVmPSIlKGxpbmspcyI+
LmhlYWRlcnM8L2E+KSIiIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsibGluayI6IGVzY2FwZShxdW90ZShkb3RfaGVhZGVycykpfSkKICAgICAgICAgICAgIGlmIG9z
LnBhdGguaXNkaXIob3MucGF0aC5qb2luKHBhdGgsIGl0ZW0pKToKICAgICAgICAgICAgICAgICBs
aW5rICs9ICIvIgogICAgICAgICAgICAgICAgIGNsYXNzXyA9ICJkaXIiCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgIGNsYXNzXyA9ICJmaWxlIgotICAgICAgICAgICAgeWllbGQg
KCIiIjxsaSBjbGFzcz0iJShjbGFzcylzIj48YSBocmVmPSIlKGxpbmspcyI+JShuYW1lKXM8L2E+
PC9saT4iIiIgJQotICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1lIjogY2dp
LmVzY2FwZShpdGVtKSwgImNsYXNzIjogY2xhc3NffSkKKyAgICAgICAgICAgIHlpZWxkICgiIiI8
bGkgY2xhc3M9IiUoY2xhc3MpcyI+PGEgaHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPiUoaGVh
ZGVycylzPC9saT4iIiIgJQorICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1l
IjogZXNjYXBlKGl0ZW0pLCAiY2xhc3MiOiBjbGFzc18sCisgICAgICAgICAgICAgICAgICAgICJo
ZWFkZXJzIjogZG90X2hlYWRlcnNfbWFya3VwfSkKIAogCiBkZWYgd3JhcF9waXBlbGluZShwYXRo
LCByZXF1ZXN0LCByZXNwb25zZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9waXBlcy5weQppbmRleCBjZWIzNGNjM2Y0Zjk5NGVkMDQ5OTE1Yzc3ODRmN2M2
OWM3MTJhYmNhLi5iYmYyNWU2ZmUxMTEyZTE4MWRhNWE3YjZhOWM2ZWUyYjc1NjNhYmJlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKQEAg
LTEsNCArMSwzIEBACi1mcm9tIGNnaSBpbXBvcnQgZXNjYXBlCiBmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBkZXF1ZQogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGd6aXAgYXMgZ3ppcF9tb2R1bGUKQEAg
LTcsMTAgKzYsMTUgQEAgaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiBpbXBvcnQg
dXVpZAotZnJvbSBzaXgubW92ZXMgaW1wb3J0IFN0cmluZ0lPCiAKK2Zyb20gc2l4Lm1vdmVzIGlt
cG9ydCBTdHJpbmdJTwogZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZSwgYmluYXJ5X3R5cGUKIAor
dHJ5OgorICAgIGZyb20gaHRtbCBpbXBvcnQgZXNjYXBlCitleGNlcHQgSW1wb3J0RXJyb3I6Cisg
ICAgZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQorCiBkZWYgcmVzb2x2ZV9jb250ZW50KHJlc3BvbnNl
KToKICAgICByZXR1cm4gYiIiLmpvaW4oaXRlbSBmb3IgaXRlbSBpbiByZXNwb25zZS5pdGVyX2Nv
bnRlbnQocmVhZF9maWxlPVRydWUpKQogCkBAIC0zMTYsNiArMzIwLDggQEAgY2xhc3MgRmlyc3RX
cmFwcGVyKG9iamVjdCk6CiAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHRleHRfdHlwZSk6CisgICAg
ICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgnaXNvLTg4NTktMScpCiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5wYXJhbXMuZmlyc3Qoa2V5KQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAg
ICAgICAgICAgICByZXR1cm4gIiIKQEAgLTM5Myw4ICszOTksOCBAQCBjbGFzcyBTdWJGdW5jdGlv
bnMob2JqZWN0KToKICAgICBkZWYgdXVpZChyZXF1ZXN0KToKICAgICAgICAgcmV0dXJuIHN0cih1
dWlkLnV1aWQ0KCkpCiAKLSAgICAjIE1haW50YWluIGEgd2hpdGVsaXN0IG9mIHN1cHBvcnRlZCBh
bGdvcml0aG1zLCByZXN0cmljdGVkIHRvIHRob3NlIHRoYXQKLSAgICAjIGFyZSBhdmFpbGFibGUg
b24gYWxsIHBsYXRmb3JtcyBbMV0uIFRoaXMgZW5zdXJlcyB0aGF0IHRlc3QgYXV0aG9ycyBkbyBu
b3QKKyAgICAjIE1haW50YWluIGEgbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJp
Y3RlZCB0byB0aG9zZSB0aGF0IGFyZQorICAgICMgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMg
WzFdLiBUaGlzIGVuc3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CiAgICAgIyB1bmtub3dp
bmdseSBpbnRyb2R1Y2UgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMuCiAgICAgIwogICAgICMgWzFd
IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9oYXNobGliLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvcmVxdWVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5weQppbmRleCBh
ODBiYzBjODMwMGFjZmNmNzY2NTEyYjg5ZWNmZWUzMzhiYWMyMjk1Li43YzRkMDJkNmRlNmYxYTBi
MGVjY2MwNWFiMDMwNGNmZmJjMTBmOTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3Qu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CkBAIC0xLDEzICsxLDEzIEBACiBpbXBvcnQg
YmFzZTY0CiBpbXBvcnQgY2dpCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUKLWZyb20gc2l4IGltcG9ydCBCeXRlc0lPLCBiaW5hcnlfdHlwZSwgdGV4dF90eXBl
LCBpdGVyaXRlbXMsIFBZMwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4IGltcG9ydCBCeXRl
c0lPLCBiaW5hcnlfdHlwZSwgaXRlcml0ZW1zLCBQWTMKK2Zyb20gc2l4Lm1vdmVzLmh0dHBfY29v
a2llcyBpbXBvcnQgQmFzZUNvb2tpZQogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9y
dCBwYXJzZV9xc2wsIHVybHNwbGl0CiAKIGZyb20gLiBpbXBvcnQgc3Rhc2gKLWZyb20gLnV0aWxz
IGltcG9ydCBIVFRQRXhjZXB0aW9uCitmcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbiwg
aXNvbW9ycGhpY19lbmNvZGUsIGlzb21vcnBoaWNfZGVjb2RlCiAKIG1pc3NpbmcgPSBvYmplY3Qo
KQogCkBAIC0yMTksMjIgKzIxOSwyMyBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgTXVs
dGlEaWN0IHJlcHJlc2VudGluZyB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCB3aXRoIHRoZSByZXF1
ZXN0LgogICAgIE5vdGUgdGhhdCB0aGVzZSBtYXkgYmUgcHJlc2VudCBvbiBub24tR0VUIHJlcXVl
c3RzOyB0aGUgbmFtZSBpcwogICAgIGNob3NlbiB0byBiZSBmYW1pbGlhciB0byB1c2VycyBvZiBv
dGhlciBzeXN0ZW1zIHN1Y2ggYXMgUEhQLgorICAgIEJvdGgga2V5cyBhbmQgdmFsdWVzIGFyZSBi
aW5hcnkgc3RyaW5ncy4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IFBPU1QKIAogICAgIE11bHRpRGlj
dCByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXJzLiBNb3N0IHBhcmFtZXRl
cnMKICAgICBhcmUgcHJlc2VudCBhcyBzdHJpbmcgdmFsdWVzLCBidXQgZmlsZSB1cGxvYWRzIGhh
dmUgZmlsZS1saWtlCi0gICAgdmFsdWVzLgorICAgIHZhbHVlcy4gQWxsIHN0cmluZyB2YWx1ZXMg
KGluY2x1ZGluZyBrZXlzKSBoYXZlIGJpbmFyeSB0eXBlLgogCiAgICAgLi4gYXR0cmlidXRlOjog
Y29va2llcwogCi0gICAgQ29va2llcyBvYmplY3QgcmVwcmVzZW50aW5nIGNvb2tpZXMgc2VudCB3
aXRoIHRoZSByZXF1ZXN0IHdpdGggYQorICAgIEEgQ29va2llcyBvYmplY3QgcmVwcmVzZW50aW5n
IGNvb2tpZXMgc2VudCB3aXRoIHRoZSByZXF1ZXN0IHdpdGggYQogICAgIGRpY3Rpb25hcnktbGlr
ZSBpbnRlcmZhY2UuCiAKICAgICAuLiBhdHRyaWJ1dGU6OiBhdXRoCiAKLSAgICBPYmplY3Qgd2l0
aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcyByZXByZXNlbnRpbmcgYW55Ci0gICAg
Y3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4KKyAgICBBbiBp
bnN0YW5jZSBvZiBBdXRoZW50aWNhdGlvbiB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBwcm9w
ZXJ0aWVzCisgICAgcmVwcmVzZW50aW5nIGFueSBjcmVkZW50aWFscyBzdXBwbGllZCB1c2luZyBI
VFRQIGF1dGhlbnRpY2F0aW9uLgogCiAgICAgLi4gYXR0cmlidXRlOjogc2VydmVyCiAKQEAgLTI0
OCw4ICsyNDksMTIgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLnByb3Rv
Y29sX3ZlcnNpb24gPSByZXF1ZXN0X2hhbmRsZXIucHJvdG9jb2xfdmVyc2lvbgogICAgICAgICBz
ZWxmLm1ldGhvZCA9IHJlcXVlc3RfaGFuZGxlci5jb21tYW5kCiAKKyAgICAgICAgIyBLZXlzIGFu
ZCB2YWx1ZXMgaW4gcmF3IGhlYWRlcnMgYXJlIG5hdGl2ZSBzdHJpbmdzLgorICAgICAgICBzZWxm
Ll9oZWFkZXJzID0gTm9uZQorICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5k
bGVyLmhlYWRlcnMKKwogICAgICAgICBzY2hlbWUgPSByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNj
aGVtZQotICAgICAgICBob3N0ID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMuZ2V0KCJIb3N0IikK
KyAgICAgICAgaG9zdCA9IHNlbGYucmF3X2hlYWRlcnMuZ2V0KCJIb3N0IikKICAgICAgICAgcG9y
dCA9IHJlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX2FkZHJlc3NbMV0KIAogICAgICAgICBp
ZiBob3N0IGlzIE5vbmU6CkBAIC0yNjIsMjIgKzI2NywxNyBAQCBjbGFzcyBSZXF1ZXN0KG9iamVj
dCk6CiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSAiLyIKIAogICAgICAgICBpZiBzZWxmLnJlcXVl
c3RfcGF0aC5zdGFydHN3aXRoKHNjaGVtZSArICI6Ly8iKToKLSAgICAgICAgICAgIHNlbGYudXJs
ID0gcmVxdWVzdF9oYW5kbGVyLnBhdGgKKyAgICAgICAgICAgIHNlbGYudXJsID0gc2VsZi5yZXF1
ZXN0X3BhdGgKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudXJsID0gIiVzOi8vJXM6
JXMlcyIgJSAoc2NoZW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
b3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcGF0aCkKKyAgICAg
ICAgICAgICMgVE9ETygjMjMzNjIpOiBTdG9wIHVzaW5nIG5hdGl2ZSBzdHJpbmdzIGZvciBVUkxz
LgorICAgICAgICAgICAgc2VsZi51cmwgPSAiJXM6Ly8lczolcyVzIiAlICgKKyAgICAgICAgICAg
ICAgICBzY2hlbWUsIGhvc3QsIHBvcnQsIHNlbGYucmVxdWVzdF9wYXRoKQogICAgICAgICBzZWxm
LnVybF9wYXJ0cyA9IHVybHNwbGl0KHNlbGYudXJsKQogCi0gICAgICAgIHNlbGYucmF3X2hlYWRl
cnMgPSByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycwotCiAgICAgICAgIHNlbGYucmVxdWVzdF9saW5l
ID0gcmVxdWVzdF9oYW5kbGVyLnJhd19yZXF1ZXN0bGluZQogCi0gICAgICAgIHNlbGYuX2hlYWRl
cnMgPSBOb25lCi0KICAgICAgICAgc2VsZi5yYXdfaW5wdXQgPSBJbnB1dEZpbGUocmVxdWVzdF9o
YW5kbGVyLnJmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2Vs
Zi5oZWFkZXJzLmdldCgiQ29udGVudC1MZW5ndGgiLCAwKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludChzZWxmLnJhd19oZWFkZXJzLmdldCgiQ29udGVudC1MZW5ndGgi
LCAwKSkpCiAKICAgICAgICAgc2VsZi5fYm9keSA9IE5vbmUKIApAQCAtMjk3LDE5ICsyOTcsMjQg
QEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICAgICAgcGFyYW1zID0gcGFyc2VfcXNs
KHNlbGYudXJsX3BhcnRzLnF1ZXJ5LCBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQogICAgICAgICAg
ICAgc2VsZi5fR0VUID0gTXVsdGlEaWN0KCkKICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGlu
IHBhcmFtczoKLSAgICAgICAgICAgICAgICBzZWxmLl9HRVQuYWRkKGtleSwgdmFsdWUpCisgICAg
ICAgICAgICAgICAgc2VsZi5fR0VULmFkZChpc29tb3JwaGljX2VuY29kZShrZXkpLCBpc29tb3Jw
aGljX2VuY29kZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBzZWxmLl9HRVQKIAogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBQT1NUKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9QT1NUIGlzIE5vbmU6
Ci0gICAgICAgICAgICAjV29yayBvdXQgdGhlIHBvc3QgcGFyYW1ldGVycworICAgICAgICAgICAg
IyBXb3JrIG91dCB0aGUgcG9zdCBwYXJhbWV0ZXJzCiAgICAgICAgICAgICBwb3MgPSBzZWxmLnJh
d19pbnB1dC50ZWxsKCkKICAgICAgICAgICAgIHNlbGYucmF3X2lucHV0LnNlZWsoMCkKLSAgICAg
ICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZShmcD1zZWxmLnJhd19pbnB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9uPXsiUkVRVUVTVF9NRVRIT0QiOiBzZWxm
Lm1ldGhvZH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1zZWxm
LnJhd19oZWFkZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBfYmxh
bmtfdmFsdWVzPVRydWUpCisgICAgICAgICAgICBrd2FyZ3MgPSB7CisgICAgICAgICAgICAgICAg
ImZwIjogc2VsZi5yYXdfaW5wdXQsCisgICAgICAgICAgICAgICAgImVudmlyb24iOiB7IlJFUVVF
U1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAorICAgICAgICAgICAgICAgICJoZWFkZXJzIjogc2Vs
Zi5yYXdfaGVhZGVycywKKyAgICAgICAgICAgICAgICAia2VlcF9ibGFua192YWx1ZXMiOiBUcnVl
LAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgICAgIGt3
YXJnc1siZW5jb2RpbmciXSA9ICJpc28tODg1OS0xIgorICAgICAgICAgICAgZnMgPSBjZ2kuRmll
bGRTdG9yYWdlKCoqa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fUE9TVCA9IE11bHRpRGljdC5m
cm9tX2ZpZWxkX3N0b3JhZ2UoZnMpCiAgICAgICAgICAgICBzZWxmLnJhd19pbnB1dC5zZWVrKHBv
cykKICAgICAgICAgcmV0dXJuIHNlbGYuX1BPU1QKQEAgLTMxNywxNCArMzIyLDEyIEBAIGNsYXNz
IFJlcXVlc3Qob2JqZWN0KToKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29va2llcyhzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5fY29va2llcyBpcyBOb25lOgotICAgICAgICAgICAgcGFyc2VyID0g
QmFzZUNvb2tpZSgpCisgICAgICAgICAgICBwYXJzZXIgPSBCaW5hcnlDb29raWVQYXJzZXIoKQog
ICAgICAgICAgICAgY29va2llX2hlYWRlcnMgPSBzZWxmLmhlYWRlcnMuZ2V0KCJjb29raWUiLCBi
IiIpCi0gICAgICAgICAgICBpZiBQWTM6Ci0gICAgICAgICAgICAgICAgY29va2llX2hlYWRlcnMg
PSBjb29raWVfaGVhZGVycy5kZWNvZGUoImlzby04ODU5LTEiKQogICAgICAgICAgICAgcGFyc2Vy
LmxvYWQoY29va2llX2hlYWRlcnMpCiAgICAgICAgICAgICBjb29raWVzID0gQ29va2llcygpCiAg
ICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMocGFyc2VyKToKLSAgICAgICAg
ICAgICAgICBjb29raWVzW2tleV0gPSBDb29raWVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgICAg
ICBjb29raWVzW2lzb21vcnBoaWNfZW5jb2RlKGtleSldID0gQ29va2llVmFsdWUodmFsdWUpCiAg
ICAgICAgICAgICBzZWxmLl9jb29raWVzID0gY29va2llcwogICAgICAgICByZXR1cm4gc2VsZi5f
Y29va2llcwogCkBAIC0zNTcsMjQgKzM2MCw2IEBAIGNsYXNzIEgyUmVxdWVzdChSZXF1ZXN0KToK
ICAgICAgICAgc3VwZXIoSDJSZXF1ZXN0LCBzZWxmKS5fX2luaXRfXyhyZXF1ZXN0X2hhbmRsZXIp
CiAKIAotZGVmIF9tYXliZV9lbmNvZGUocyk6Ci0gICAgIiIiRW5jb2RlcyBhIHRleHQtdHlwZSBz
dHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgotCi0gICAgUmV0dXJucyBg
c3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4gVGhlIGZ1bmN0aW9uIGlz
IGEgbm8tb3AKLSAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMgYSBiaW5hcnkgdHlwZS4K
LSAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKLSAgICAgICAgcmV0
dXJuIHMKLQotICAgICMgUHl0aG9uIDMgYXNzdW1lcyBpc28tODg1OS0xIHdoZW4gcGFyc2luZyBo
ZWFkZXJzLCB3aGljaCB3aWxsIGdhcmJsZSB0ZXh0Ci0gICAgIyB3aXRoIG5vbiBBU0NJSSBjaGFy
YWN0ZXJzLiBXZSB0cnkgdG8gZW5jb2RlIHRoZSB0ZXh0IGJhY2sgdG8gYmluYXJ5LgotICAgICMg
aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvMjczZmMyMjBiMjU5MzNlNDQz
YzgyYWY2ODg4ZWIxODcxZDAzMmZiOC9MaWIvaHR0cC9jbGllbnQucHkjTDIxMwotICAgIGlmIGlz
aW5zdGFuY2UocywgdGV4dF90eXBlKToKLSAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1
OS0xIikKLQotICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBSZXF1ZXN0
SGVhZGVyczogJXIiICUgcykKLQotCiBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAi
IiJSZWFkLW9ubHkgZGljdGlvbmFyeS1saWtlIEFQSSBmb3IgYWNjZXNzaW5nIHJlcXVlc3QgaGVh
ZGVycy4KIApAQCAtMzg0LDcgKzM2OSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgog
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtcyk6CiAgICAgICAgIGZvciBoZWFk
ZXIgaW4gaXRlbXMua2V5cygpOgotICAgICAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShoZWFk
ZXIpLmxvd2VyKCkKKyAgICAgICAgICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGhlYWRlciku
bG93ZXIoKQogICAgICAgICAgICAgIyBnZXQgYWxsIGhlYWRlcnMgd2l0aCB0aGUgc2FtZSBuYW1l
CiAgICAgICAgICAgICB2YWx1ZXMgPSBpdGVtcy5nZXRhbGxtYXRjaGluZ2hlYWRlcnMoaGVhZGVy
KQogICAgICAgICAgICAgaWYgbGVuKHZhbHVlcykgPiAxOgpAQCAtMzk0LDIyICszNzksMjEgQEAg
Y2xhc3MgUmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgIyBnZXRhbGxtYXRjaGluZ2hlYWRlcnMgcmV0
dXJucyByYXcgaGVhZGVyIGxpbmVzLCBzbwogICAgICAgICAgICAgICAgICAgICAjIHNwbGl0IHRv
IGdldCBuYW1lLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKF9t
YXliZV9lbmNvZGUodmFsdWUpLnNwbGl0KGInOicsIDEpWzFdLnN0cmlwKCkpCisgICAgICAgICAg
ICAgICAgICAgIG11bHRpcGxlcy5hcHBlbmQoaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpLnNwbGl0
KGInOicsIDEpWzFdLnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgaGVhZGVycyA9IG11bHRpcGxl
cwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWFkZXJzID0gW19tYXliZV9l
bmNvZGUoaXRlbXNbaGVhZGVyXSldCisgICAgICAgICAgICAgICAgaGVhZGVycyA9IFtpc29tb3Jw
aGljX2VuY29kZShpdGVtc1toZWFkZXJdKV0KICAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18o
c2VsZiwga2V5LCBoZWFkZXJzKQogCi0KICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToK
ICAgICAgICAgIiIiR2V0IGFsbCBoZWFkZXJzIG9mIGEgY2VydGFpbiAoY2FzZS1pbnNlbnNpdGl2
ZSkgbmFtZS4gSWYgdGhlcmUgaXMKICAgICAgICAgbW9yZSB0aGFuIG9uZSwgdGhlIHZhbHVlcyBh
cmUgcmV0dXJuZWQgY29tbWEgc2VwYXJhdGVkIiIiCi0gICAgICAgIGtleSA9IF9tYXliZV9lbmNv
ZGUoa2V5KQorICAgICAgICBrZXkgPSBpc29tb3JwaGljX2VuY29kZShrZXkpCiAgICAgICAgIHZh
bHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGlmIGxl
bih2YWx1ZXMpID09IDE6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVzWzBdCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByZXR1cm4gIiwgIi5qb2luKHZhbHVlcykKKyAgICAgICAgICAgIHJl
dHVybiBiIiwgIi5qb2luKHZhbHVlcykKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBuYW1l
LCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgpAQCAtNDMwLDcgKzQxNCw3IEBAIGNs
YXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgIGRlZiBnZXRfbGlzdChzZWxmLCBrZXksIGRl
ZmF1bHQ9bWlzc2luZyk6CiAgICAgICAgICIiIkdldCBhbGwgdGhlIGhlYWRlciB2YWx1ZXMgZm9y
IGEgcGFydGljdWxhciBmaWVsZCBuYW1lIGFzCiAgICAgICAgIGEgbGlzdCIiIgotICAgICAgICBr
ZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0gaXNvbW9ycGhpY19lbmNvZGUo
a2V5KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gZGljdC5fX2dldGl0ZW1fXyhz
ZWxmLCBrZXkubG93ZXIoKSkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNDQwLDcgKzQy
NCw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAgICAgICAgICAgIHJhaXNl
CiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6Ci0gICAgICAgIGtleSA9IF9tYXli
ZV9lbmNvZGUoa2V5KQorICAgICAgICBrZXkgPSBpc29tb3JwaGljX2VuY29kZShrZXkpCiAgICAg
ICAgIHJldHVybiBkaWN0Ll9fY29udGFpbnNfXyhzZWxmLCBrZXkubG93ZXIoKSkKIAogICAgIGRl
ZiBpdGVyaXRlbXMoc2VsZik6CkBAIC00NTEsNiArNDM1LDcgQEAgY2xhc3MgUmVxdWVzdEhlYWRl
cnMoZGljdCk6CiAgICAgICAgIGZvciBpdGVtIGluIHNlbGY6CiAgICAgICAgICAgICB5aWVsZCBz
ZWxmW2l0ZW1dCiAKKwogY2xhc3MgQ29va2llVmFsdWUob2JqZWN0KToKICAgICAiIiJSZXByZXNl
bnRhdGlvbiBvZiBjb29raWVzLgogCkBAIC01MjQsOSArNTA5LDggQEAgY2xhc3MgQ29va2llVmFs
dWUob2JqZWN0KToKIAogCiBjbGFzcyBNdWx0aURpY3QoZGljdCk6Ci0gICAgIiIiRGljdGlvbmFy
eSB0eXBlIHRoYXQgaG9sZHMgbXVsdGlwbGUgdmFsdWVzIGZvciBlYWNoCi0gICAga2V5IiIiCi0g
ICAgI1RPRE86IHRoaXMgc2hvdWxkIHBlcmhhcHMgYWxzbyBvcmRlciB0aGUga2V5cworICAgICIi
IkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRzIG11bHRpcGxlIHZhbHVlcyBmb3IgZWFjaCBrZXki
IiIKKyAgICAjIFRPRE86IHRoaXMgc2hvdWxkIHBlcmhhcHMgYWxzbyBvcmRlciB0aGUga2V5cwog
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC01NDEsNyArNTI1LDYg
QEAgY2xhc3MgTXVsdGlEaWN0KGRpY3QpOgogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtl
eSk6CiAgICAgICAgICIiIkdldCB0aGUgZmlyc3QgdmFsdWUgd2l0aCBhIGdpdmVuIGtleSIiIgot
ICAgICAgICAjVE9ETzogc2hvdWxkIHRoaXMgaW5zdGVhZCBiZSB0aGUgbGFzdCB2YWx1ZT8KICAg
ICAgICAgcmV0dXJuIHNlbGYuZmlyc3Qoa2V5KQogCiAgICAgZGVmIGZpcnN0KHNlbGYsIGtleSwg
ZGVmYXVsdD1taXNzaW5nKToKQEAgLTU4NCw2ICs1NjcsMTAgQEAgY2xhc3MgTXVsdGlEaWN0KGRp
Y3QpOgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fZmllbGRfc3RvcmFnZShjbHMs
IGZzKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgTXVsdGlEaWN0IGZyb20gYSBjZ2kuRmllbGRT
dG9yYWdlCisKKyAgICAgICAgTm90ZSB0aGF0IGFsbCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFy
eSBzdHJpbmdzLgorICAgICAgICAiIiIKICAgICAgICAgc2VsZiA9IGNscygpCiAgICAgICAgIGlm
IGZzLmxpc3QgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzZWxmCkBAIC01OTQsMTMgKzU4
MSw0NiBAQCBjbGFzcyBNdWx0aURpY3QoZGljdCk6CiAKICAgICAgICAgICAgIGZvciB2YWx1ZSBp
biB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlLmZpbGVuYW1lOgotICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlCi0gICAgICAgICAgICAgICAgc2VsZi5h
ZGQoa2V5LCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpc29tb3JwaGljX2Vu
Y29kZSh2YWx1ZS52YWx1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgY2dpLkZpZWxkU3RvcmFnZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLmFkZChpc29tb3JwaGljX2VuY29kZShrZXkpLCB2YWx1ZSkKICAgICAgICAg
cmV0dXJuIHNlbGYKIAogCitjbGFzcyBCaW5hcnlDb29raWVQYXJzZXIoQmFzZUNvb2tpZSk6Cisg
ICAgIiIiQSBzdWJjbGFzcyBvZiBCYXNlQ29va2llIHRoYXQgcmV0dXJucyB2YWx1ZXMgaW4gYmlu
YXJ5IHN0cmluZ3MKKworICAgIFRoaXMgaXMgbm90IGludGVuZGVkIHRvIHN0b3JlIHRoZSBjb29r
aWVzOyB1c2UgQ29va2llcyBpbnN0ZWFkLgorICAgICIiIgorICAgIGRlZiB2YWx1ZV9kZWNvZGUo
c2VsZiwgdmFsKToKKyAgICAgICAgIiIiRGVjb2RlIHZhbHVlIGZyb20gbmV0d29yayB0byAocmVh
bF92YWx1ZSwgY29kZWRfdmFsdWUpLgorCisgICAgICAgIE92ZXJyaWRlIEJhc2VDb29raWUudmFs
dWVfZGVjb2RlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGlzb21vcnBoaWNfZW5jb2Rl
KHZhbCksIHZhbAorCisgICAgZGVmIHZhbHVlX2VuY29kZShzZWxmLCB2YWwpOgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdCaW5hcnlDb29raWVQYXJzZXIgaXMgbm90IGZvciBz
ZXR0aW5nIGNvb2tpZXMnKQorCisgICAgZGVmIGxvYWQoc2VsZiwgcmF3ZGF0YSk6CisgICAgICAg
ICIiIkxvYWQgY29va2llcyBmcm9tIGEgYmluYXJ5IHN0cmluZy4KKworICAgICAgICBUaGlzIG92
ZXJyaWRlcyBhbmQgY2FsbHMgQmFzZUNvb2tpZS5sb2FkLiBVbmxpa2UgQmFzZUNvb2tpZS5sb2Fk
LCBpdAorICAgICAgICBkb2VzIG5vdCBhY2NlcHQgZGljdGlvbmFyaWVzLgorICAgICAgICAiIiIK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmF3ZGF0YSwgYmluYXJ5X3R5cGUpCisgICAgICAg
IGlmIFBZMzoKKyAgICAgICAgICAgICMgQmFzZUNvb2tpZS5sb2FkIGV4cGVjdHMgYSBuYXRpdmUg
c3RyaW5nLCB3aGljaCBpbiBQeXRob24gMyBpcyB0ZXh0LgorICAgICAgICAgICAgcmF3ZGF0YSA9
IGlzb21vcnBoaWNfZGVjb2RlKHJhd2RhdGEpCisgICAgICAgIHN1cGVyKEJpbmFyeUNvb2tpZVBh
cnNlciwgc2VsZikubG9hZChyYXdkYXRhKQorCisKIGNsYXNzIENvb2tpZXMoTXVsdGlEaWN0KToK
LSAgICAiIiJNdWx0aURpY3Qgc3BlY2lhbGlzZWQgZm9yIENvb2tpZSB2YWx1ZXMiIiIKKyAgICAi
IiJNdWx0aURpY3Qgc3BlY2lhbGlzZWQgZm9yIENvb2tpZSB2YWx1ZXMKKworICAgIEtleXMgYW5k
IHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCisgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgogICAgICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5CmluZGV4IDNhNjBjMmJhYmIzOWQ4ZDc3OTk5MDIyYTdm
YjRkMTg0Y2IwMTlhYTguLmI2ZjI3NDQ3NDUxOTg0NmQyOThhMjlkYTBiM2RiMzk2MTk5OWIyNGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNw
b25zZS5weQpAQCAtMSwxOSArMSwyMiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJl
ZERpY3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLWZyb20gc2l4
Lm1vdmVzLmh0dHBfY29va2llcyBpbXBvcnQgQmFzZUNvb2tpZSwgTW9yc2VsCitmcm9tIGlvIGlt
cG9ydCBCeXRlc0lPCiBpbXBvcnQganNvbgotaW1wb3J0IHV1aWQKIGltcG9ydCBzb2NrZXQKLWZy
b20gLmNvbnN0YW50cyBpbXBvcnQgcmVzcG9uc2VfY29kZXMsIGgyX2hlYWRlcnMKLWZyb20gLmxv
Z2dlciBpbXBvcnQgZ2V0X2xvZ2dlcgotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworaW1wb3J0IHV1
aWQKIAotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUsIGludGVnZXJfdHlw
ZXMsIGl0ZXJ2YWx1ZXMsIFBZMwotZnJvbSBoeXBlcmZyYW1lLmZyYW1lIGltcG9ydCBIZWFkZXJz
RnJhbWUsIERhdGFGcmFtZSwgQ29udGludWF0aW9uRnJhbWUKIGZyb20gaHBhY2suc3RydWN0IGlt
cG9ydCBIZWFkZXJUdXBsZQorZnJvbSBoeXBlcmZyYW1lLmZyYW1lIGltcG9ydCBIZWFkZXJzRnJh
bWUsIERhdGFGcmFtZSwgQ29udGludWF0aW9uRnJhbWUKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKK2Zyb20gc2l4
Lm1vdmVzLmh0dHBfY29va2llcyBpbXBvcnQgQmFzZUNvb2tpZSwgTW9yc2VsCisKK2Zyb20gLmNv
bnN0YW50cyBpbXBvcnQgcmVzcG9uc2VfY29kZXMsIGgyX2hlYWRlcnMKK2Zyb20gLmxvZ2dlciBp
bXBvcnQgZ2V0X2xvZ2dlcgorZnJvbSAudXRpbHMgaW1wb3J0IGlzb21vcnBoaWNfZGVjb2RlLCBp
c29tb3JwaGljX2VuY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIAorCiBjbGFzcyBSZXNwb25z
ZShvYmplY3QpOgogICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlc3BvbnNlIHRvIGEg
SFRUUCByZXF1ZXN0CiAKQEAgLTc5LDcgKzgyLDYgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToK
ICAgICAgICAgc2VsZi5oZWFkZXJzID0gUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgc2VsZi5j
b250ZW50ID0gW10KIAotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHN0YXR1cyhzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3N0YXR1cwpAQCAtOTksOCArMTAxLDggQEAgY2xhc3MgUmVzcG9u
c2Uob2JqZWN0KToKICAgICAgICAgIiIiU2V0IGEgY29va2llIHRvIGJlIHNlbnQgd2l0aCBhIFNl
dC1Db29raWUgaGVhZGVyIGluIHRoZQogICAgICAgICByZXNwb25zZQogCi0gICAgICAgIDpwYXJh
bSBuYW1lOiBTdHJpbmcgbmFtZSBvZiB0aGUgY29va2llCi0gICAgICAgIDpwYXJhbSB2YWx1ZTog
U3RyaW5nIHZhbHVlIG9mIHRoZSBjb29raWUKKyAgICAgICAgOnBhcmFtIG5hbWU6IG5hbWUgb2Yg
dGhlIGNvb2tpZSAoYSBiaW5hcnkgc3RyaW5nKQorICAgICAgICA6cGFyYW0gdmFsdWU6IHZhbHVl
IG9mIHRoZSBjb29raWUgKGEgYmluYXJ5IHN0cmluZywgb3IgTm9uZSkKICAgICAgICAgOnBhcmFt
IG1heF9hZ2U6IGRhdGV0aW1lLnRpbWVkZWx0YSBpbnQgcmVwcmVzZW50aW5nIHRoZSB0aW1lIChp
biBzZWNvbmRzKQogICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgdGhlIGNvb2tpZSBleHBp
cmVzCiAgICAgICAgIDpwYXJhbSBwYXRoOiBTdHJpbmcgcGF0aCB0byB3aGljaCB0aGUgY29va2ll
IGFwcGxpZXMKQEAgLTExMywxNCArMTE1LDIwIEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lIG9yIGludGVydmFsIGZyb20gbm93IHdoZW4gdGhl
IGNvb2tpZSBleHBpcmVzCiAKICAgICAgICAgIiIiCisgICAgICAgICMgVE9ETyhQeXRob24gMyk6
IENvbnZlcnQgb3RoZXIgcGFyYW1ldGVycyAoZS5nLiBwYXRoKSB0byBieXRlcywgdG9vLgorICAg
ICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAg
ICAgIG1heF9hZ2UgPSAwCisgICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEp
CisKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgbmFtZSA9IGlzb21vcnBoaWNfZGVjb2Rl
KG5hbWUpCisgICAgICAgICAgICB2YWx1ZSA9IGlzb21vcnBoaWNfZGVjb2RlKHZhbHVlKQorCiAg
ICAgICAgIGRheXMgPSB7aSsxOiBuYW1lIGZvciBpLCBuYW1lIGluIGVudW1lcmF0ZShbImphbiIs
ICJmZWIiLCAibWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYXByIiwgIm1heSIsICJqdW4iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqdWwiLCAiYXVnIiwgInNlcCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9jdCIsICJub3Yi
LCAiZGVjIl0pfQotICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgdmFsdWUg
PSAnJwotICAgICAgICAgICAgbWF4X2FnZSA9IDAKLSAgICAgICAgICAgIGV4cGlyZXMgPSB0aW1l
ZGVsdGEoZGF5cz0tMSkKIAogICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGlyZXMsIHRpbWVkZWx0
YSk6CiAgICAgICAgICAgICBleHBpcmVzID0gZGF0ZXRpbWUudXRjbm93KCkgKyBleHBpcmVzCkBA
IC0xNTQsMTEgKzE2MiwxNCBAQCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogCiAgICAgZGVmIHVu
c2V0X2Nvb2tpZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiUmVtb3ZlIGEgY29va2llIGZyb20g
dGhvc2UgdGhhdCBhcmUgYmVpbmcgc2VudCB3aXRoIHRoZSByZXNwb25zZSIiIgorICAgICAgICBp
ZiBQWTM6CisgICAgICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19kZWNvZGUobmFtZSkKICAgICAg
ICAgY29va2llcyA9IHNlbGYuaGVhZGVycy5nZXQoIlNldC1Db29raWUiKQogICAgICAgICBwYXJz
ZXIgPSBCYXNlQ29va2llKCkKICAgICAgICAgZm9yIGNvb2tpZSBpbiBjb29raWVzOgogICAgICAg
ICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIGNvb2tpZSA9IGNvb2tpZS5kZWNvZGUoImlz
by04ODU5LTEiKQorICAgICAgICAgICAgICAgICMgQmFzZUNvb2tpZS5sb2FkIGV4cGVjdHMgYSB0
ZXh0IHN0cmluZy4KKyAgICAgICAgICAgICAgICBjb29raWUgPSBpc29tb3JwaGljX2RlY29kZShj
b29raWUpCiAgICAgICAgICAgICBwYXJzZXIubG9hZChjb29raWUpCiAKICAgICAgICAgaWYgbmFt
ZSBpbiBwYXJzZXIua2V5cygpOgpAQCAtMjIzLDkgKzIzNCwxMiBAQCBjbGFzcyBSZXNwb25zZShv
YmplY3QpOgogICAgICAgICBzZWxmLndyaXRlX3N0YXR1c19oZWFkZXJzKCkKICAgICAgICAgc2Vs
Zi53cml0ZV9jb250ZW50KCkKIAotICAgIGRlZiBzZXRfZXJyb3Ioc2VsZiwgY29kZSwgbWVzc2Fn
ZT0iIik6Ci0gICAgICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIGJv
ZHkgdG8gaW5kaWNhdGUgYW4KLSAgICAgICAgZXJyb3IiIiIKKyAgICBkZWYgc2V0X2Vycm9yKHNl
bGYsIGNvZGUsIG1lc3NhZ2U9dSIiKToKKyAgICAgICAgIiIiU2V0IHRoZSByZXNwb25zZSBzdGF0
dXMgaGVhZGVycyBhbmQgcmV0dXJuIGEgSlNPTiBlcnJvciBvYmplY3Q6CisKKyAgICAgICAgeyJl
cnJvciI6IHsiY29kZSI6IGNvZGUsICJtZXNzYWdlIjogbWVzc2FnZX19CisgICAgICAgIGNvZGUg
aXMgYW4gaW50IChIVFRQIHN0YXR1cyBjb2RlKSwgYW5kIG1lc3NhZ2UgaXMgYSB0ZXh0IHN0cmlu
Zy4KKyAgICAgICAgIiIiCiAgICAgICAgIGVyciA9IHsiY29kZSI6IGNvZGUsCiAgICAgICAgICAg
ICAgICAibWVzc2FnZSI6IG1lc3NhZ2V9CiAgICAgICAgIGRhdGEgPSBqc29uLmR1bXBzKHsiZXJy
b3IiOiBlcnJ9KQpAQCAtMjk3LDI0ICszMTEsMTAgQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmpl
Y3QpOgogCiAKIGRlZiBfbWF5YmVfZW5jb2RlKHMpOgotICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5
cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcgaXNvLTg4NTktMS4KLQotICAgIFJldHVy
bnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2AgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlv
biBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5
cGUuCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6Ci0gICAgICAg
IHJldHVybiBzCi0KLSAgICAjIFB5dGhvbiAzIGFzc3VtZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNp
bmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4dAotICAgICMgd2l0aCBub24gQVNDSUkg
Y2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUgdGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMz
ZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKLSAgICBp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzLmVuY29kZSgiaXNv
LTg4NTktMSIpCi0KKyAgICAiIiJFbmNvZGUgYSBzdHJpbmcgb3IgYW4gaW50IGludG8gYmluYXJ5
IGRhdGEgdXNpbmcgaXNvbW9ycGhpY19lbmNvZGUoKS4iIiIKICAgICBpZiBpc2luc3RhbmNlKHMs
IGludGVnZXJfdHlwZXMpOgogICAgICAgICByZXR1cm4gYiIlaSIgJSAocywpCi0KLSAgICByYWlz
ZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVzcG9uc2VIZWFkZXJzOiAlciIgJSBz
KQorICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZShzKQogCiAKIGNsYXNzIFJlc3BvbnNlSGVh
ZGVycyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL3NlcnZlci5weQppbmRleCBjMDM3NzMyYTZiYWVmMzFkNThiM2RmZjkyN2IwNzRkZmNmYWJi
NGZmLi5jMjQ5OGM0ZWUxZThmNDVkZTYwNGY3MTM5NGMzZDZmZWVmODJhZWYxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3NlcnZlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NlcnZlci5weQpAQCAtNjQs
MTIgKzY0LDYgQEAgaGFuZGxlciByZXR1cm5zLCBvciBmb3IgZGlyZWN0bHkgd3JpdGluZyB0byB0
aGUgb3V0cHV0IHN0cmVhbS4KICIiIgogCiAKLUVESVRfSE9TVFNfSEVMUCA9ICgiUGxlYXNlIGVu
c3VyZSBhbGwgdGhlIG5lY2Vzc2FyeSBXUFQgc3ViZG9tYWlucyAiCi0gICAgICAgICAgICAgICAg
ICAiYXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3RzLiAiCi0gICAg
ICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0I3J1bm5pbmctdGhlLXRlc3RzICIKLSAgICAgICAgICAgICAgICAgICJmb3IgaW5zdHJ1Y3Rp
b25zLiIpCi0KLQogY2xhc3MgUmVxdWVzdFJld3JpdGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJ1bGVzKToKICAgICAgICAgIiIiT2JqZWN0IGZvciByZXdyaXRpbmcgdGhlIHJl
cXVlc3QgcGF0aC4KQEAgLTY3Niw3ICs2NzAsOCBAQCBjbGFzcyBXZWJUZXN0SHR0cGQob2JqZWN0
KToKIAogICAgICAgICAgICAgX2hvc3QsIHNlbGYucG9ydCA9IHNlbGYuaHR0cGQuc29ja2V0Lmdl
dHNvY2tuYW1lKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmNyaXRpY2FsKCJGYWlsZWQgdG8gc3RhcnQgSFRUUCBzZXJ2ZXIuIHt9Ii5mb3JtYXQo
RURJVF9IT1NUU19IRUxQKSkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKCJGYWls
ZWQgdG8gc3RhcnQgSFRUUCBzZXJ2ZXIgb24gcG9ydCAlczsgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJlYWR5IHVzaW5nIHRoYXQgcG9ydD8iICUg
cG9ydCkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgYmxvY2s9RmFs
c2UpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRz
ZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CmluZGV4IGFlYTFjNzM4MGIxNzljZWQxMzY2YjY2MTcw
NTc1NzhiMzVkOWUxNGIuLjY0ZjZkNWZiMmRiMjc5NThmMzNkZDM2YjU3YjdjMTc0ZGYwYmQ3ZTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL3NzbHV0aWxzL29wZW5zc2wucHkKQEAgLTQwMiw2ICs0MDIsOCBAQCBjbGFzcyBPcGVuU1NM
RW52aXJvbm1lbnQob2JqZWN0KToKIAogICAgIGRlZiBfZ2VuZXJhdGVfaG9zdF9jZXJ0KHNlbGYs
IGhvc3RzKToKICAgICAgICAgaG9zdCA9IGhvc3RzWzBdCisgICAgICAgIGlmIG5vdCBzZWxmLmZv
cmNlX3JlZ2VuZXJhdGU6CisgICAgICAgICAgICBzZWxmLl9sb2FkX2NhX2NlcnQoKQogICAgICAg
ICBpZiBzZWxmLl9jYV9rZXlfcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fZ2VuZXJh
dGVfY2EoaG9zdHMpCiAgICAgICAgIGNhX2tleV9wYXRoID0gc2VsZi5fY2Ffa2V5X3BhdGgKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CmluZGV4
IDhiNmZkMzRmMDJjMGU5YjcwNzNkMGM5NDAxMTcwN2VhYTRlNWExZjEuLjZiMzUxODQ3NDkxYmZl
ZTFmOGUxN2E0MjEyN2M4OGJlOTdhNjI5MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQpAQCAtNCw3ICs0LDkgQEAgaW1wb3J0IG9zCiBp
bXBvcnQgdXVpZAogaW1wb3J0IHRocmVhZGluZwogZnJvbSBtdWx0aXByb2Nlc3NpbmcubWFuYWdl
cnMgaW1wb3J0IEFjcXVpcmVyUHJveHksIEJhc2VNYW5hZ2VyLCBEaWN0UHJveHkKLWZyb20gc2l4
IGltcG9ydCB0ZXh0X3R5cGUKK2Zyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBl
CisKK2Zyb20gLnV0aWxzIGltcG9ydCBpc29tb3JwaGljX2VuY29kZQogCiAKIGNsYXNzIFNlcnZl
ckRpY3RNYW5hZ2VyKEJhc2VNYW5hZ2VyKToKQEAgLTE0NSw5ICsxNDcsMTIgQEAgY2xhc3MgU3Rh
c2gob2JqZWN0KToKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9
IHNlbGYuZGVmYXVsdF9wYXRoCiAgICAgICAgICMgVGhpcyBrZXkgZm9ybWF0IGlzIHJlcXVpcmVk
IHRvIHN1cHBvcnQgdXNpbmcgdGhlIHBhdGguIFNpbmNlIHRoZSBkYXRhCi0gICAgICAgICMgcGFz
c2VkIGludG8gdGhlIHN0YXNoIGNhbiBiZSBhIERpY3RQcm94eSB3aGljaCB3b3VsZG4ndCBkZXRl
Y3QgY2hhbmdlcwotICAgICAgICAjIHdoZW4gd3JpdGluZyB0byBhIHN1YmRpY3QuCi0gICAgICAg
IHJldHVybiAoc3RyKHBhdGgpLCBzdHIodXVpZC5VVUlEKGtleSkpKQorICAgICAgICAjIHBhc3Nl
ZCBpbnRvIHRoZSBzdGFzaCBjYW4gYmUgYSBEaWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0
CisgICAgICAgICMgY2hhbmdlcyB3aGVuIHdyaXRpbmcgdG8gYSBzdWJkaWN0LgorICAgICAgICBp
ZiBpc2luc3RhbmNlKGtleSwgYmluYXJ5X3R5cGUpOgorICAgICAgICAgICAgIyBVVUlEcyBhcmUg
d2l0aGluIHRoZSBBU0NJSSBjaGFyc2V0LgorICAgICAgICAgICAga2V5ID0ga2V5LmRlY29kZSgn
YXNjaWknKQorICAgICAgICByZXR1cm4gKGlzb21vcnBoaWNfZW5jb2RlKHBhdGgpLCB1dWlkLlVV
SUQoa2V5KS5ieXRlcykKIAogICAgIGRlZiBwdXQoc2VsZiwga2V5LCB2YWx1ZSwgcGF0aD1Ob25l
KToKICAgICAgICAgIiIiUGxhY2UgYSB2YWx1ZSBpbiB0aGUgc2hhcmVkIHN0YXNoLgpAQCAtMTYy
LDcgKzE2Nyw3IEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgIGlmIGludGVybmFsX2tl
eSBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgICByYWlzZSBTdGFzaEVycm9yKCJUcmllZCB0byBv
dmVyd3JpdGUgZXhpc3Rpbmcgc2hhcmVkIHN0YXNoIHZhbHVlICIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZvciBrZXkgJXMgKG9sZCB2YWx1ZSB3YXMgJXMsIG5ldyB2YWx1ZSBpcyAl
cykiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tleSwgc2VsZi5k
YXRhW3N0cihpbnRlcm5hbF9rZXkpXSwgdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoaW50ZXJuYWxfa2V5LCBzZWxmLmRhdGFbaW50ZXJuYWxfa2V5XSwgdmFsdWUpKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5kYXRhW2ludGVybmFsX2tleV0gPSB2YWx1ZQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQpp
bmRleCA2NGIwOGEyN2FhOGIzM2Q0Y2VhODY3N2IzMGQzMzA5NmNhZTIxMmQ1Li5iMDA1YjQxN2Q3
NDNmMjBmMDY1YzE5NWU3NDNkOGFiY2ZiMDRhZGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0
aWxzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKQEAgLTEsNiArMSw0NSBAQAogaW1wb3J0
IHNvY2tldAogaW1wb3J0IHN5cwogCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRf
dHlwZQorCisKK2RlZiBpc29tb3JwaGljX2RlY29kZShzKToKKyAgICAiIiJEZWNvZGVzIGEgYmlu
YXJ5IHN0cmluZyBpbnRvIGEgdGV4dCBzdHJpbmcgdXNpbmcgaXNvLTg4NTktMS4KKworICAgIFJl
dHVybnMgYHVuaWNvZGVgIGluIFB5dGhvbiAyIGFuZCBgc3RyYCBpbiBQeXRob24gMy4gVGhlIGZ1
bmN0aW9uIGlzIGEKKyAgICBuby1vcCBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMgYSB0ZXh0
IHR5cGUuIGlzby04ODU5LTEgaXMgY2hvc2VuIGJlY2F1c2UKKyAgICBpdCBpcyBhbiA4LWJpdCBl
bmNvZGluZyB3aG9zZSBjb2RlIHBvaW50cyByYW5nZSBmcm9tIDB4MCB0byAweEZGIGFuZCB0aGUK
KyAgICB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb25zLCBz
byBhbnkgYmluYXJ5IHN0cmluZyBjYW4KKyAgICBiZSBkZWNvZGVkIGludG8gYW5kIGVuY29kZWQg
ZnJvbSBpc28tODg1OS0xIHdpdGhvdXQgYW55IGVycm9ycyBvciBkYXRhCisgICAgbG9zcy4gUHl0
aG9uIDMgYWxzbyB1c2VzIGlzby04ODU5LTEgKG9yIGxhdGluLTEpIGV4dGVuc2l2ZWx5IGluIGh0
dHA6CisgICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvMjczZmMyMjBi
MjU5MzNlNDQzYzgyYWY2ODg4ZWIxODcxZDAzMmZiOC9MaWIvaHR0cC9jbGllbnQucHkjTDIxMwor
ICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAgICAgcmV0dXJu
IHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgYmluYXJ5X3R5cGUpOgorICAgICAgICByZXR1cm4g
cy5kZWNvZGUoImlzby04ODU5LTEiKQorCisgICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVk
IHZhbHVlIChleHBlY3Rpbmcgc3RyaW5nLWxpa2UpOiAlciIgJSBzKQorCisKK2RlZiBpc29tb3Jw
aGljX2VuY29kZShzKToKKyAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJp
bmFyeSBkYXRhIHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhv
biAyIGFuZCBgYnl0ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAorICAg
IGlmIHRoZSBhcmd1bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLiBUaGlzIGlzIHRoZSBj
b3VudGVycGFydCBvZgorICAgIGlzb21vcnBoaWNfZGVjb2RlLgorICAgICIiIgorICAgIGlmIGlz
aW5zdGFuY2UocywgYmluYXJ5X3R5cGUpOgorICAgICAgICByZXR1cm4gcworCisgICAgaWYgaXNp
bnN0YW5jZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5
LTEiKQorCisgICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIChleHBlY3Rpbmcg
c3RyaW5nLWxpa2UpOiAlciIgJSBzKQorCisKIGRlZiBpbnZlcnRfZGljdChkaWN0KToKICAgICBy
diA9IHt9CiAgICAgZm9yIGtleSwgdmFsdWVzIGluIGRpY3QuaXRlbXMoKToKQEAgLTI1LDYgKzY0
LDcgQEAgZGVmIF9vcGVuX3NvY2tldChob3N0LCBwb3J0KToKICAgICBzb2NrLmxpc3Rlbig1KQog
ICAgIHJldHVybiBzb2NrCiAKKwogZGVmIGlzX2JhZF9wb3J0KHBvcnQpOgogICAgICIiIgogICAg
IEJhZCBwb3J0IGFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jcG9ydC1ibG9j
a2luZwpAQCAtOTksNiArMTM5LDcgQEAgZGVmIGlzX2JhZF9wb3J0KHBvcnQpOgogICAgICAgICA2
Njk3LCAgIyBpcmMrdGxzCiAgICAgXQogCisKIGRlZiBnZXRfcG9ydChob3N0PScnKToKICAgICBo
b3N0ID0gaG9zdCBvciAnMTI3LjAuMC4xJwogICAgIHBvcnQgPSAwCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3Ry
dWN0b3IvY29tcGlsZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5hbnkuanMKaW5kZXggNmM0
MTIzOTQzZTc3NWY0NmU4NTRiMmMwNzI1OGE3ZDA4YzVjZjY5Mi4uZTk0Y2UxMTcxNzM2OWZiNjVl
ZjA0YzZlYzZhMTNkYTE5Mjg5MzA3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBpbGUuYW55
LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1F
VEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtl
cixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRl
ci5qcwogCiBmdW5jdGlvbiBhc3NlcnRfTW9kdWxlKG1vZHVsZSkgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0
cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1pbXBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50
aWF0ZS1iYWQtaW1wb3J0cy5hbnkuanMKaW5kZXggMzcwNzI0MzQyMDhhNTg4MTlhMGE0MWZhYTZh
MTkxMDcwNGMxMDg0NS4uMzAyNTJiZDZlZWIzYWI5NzI4NjMzMWFhNzY5NjgyMjVkYWQ1YTUwMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1pbXBvcnRzLmFueS5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
Y29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBA
QAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNh
dGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVs
ZS1idWlsZGVyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYmFkLWltcG9ydHMuanMK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9p
bnN0YW50aWF0ZS5hbnkuanMKaW5kZXggMDIxOGRlMmI0NTI5MmMyM2U4ZmNjNzIwZGJmOGMyYzRh
NWM5YjY5My4uODE1MmYzYTU2ZjNmNDM5OTk3NjVjMzQ5ZTQ4OGRkYjMxMzQ0MjEzNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFu
dGlhdGUuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8v
IE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNj
cmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2lu
c3RhbmNlVGVzdEZhY3RvcnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5h
bnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
anNhcGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUuYW55LmpzCmluZGV4IDJjNTNlMzYxMWUwNDRj
OGJhNDRhNWMwNDM2ZDQ0MDliYzlmMWFmNDIuLjRiMDZkMWRhM2M0OWI5MzQwNmU5OWVjYjNlNmE3
MmNhNzZjOWQxYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5hbnkuanMKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2NvbnN0cnVjdG9yL211bHRpLXZhbHVlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6
IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixq
c3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5q
cwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2NvbnN0cnVjdG9yL3ZhbGlkYXRlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMK
aW5kZXggYTUyM2FjYzc5MjVjOWVmNzY0NmQyOTZhNzhiZjk4MzFlZGE4NmQ3MS4uOGI0ZjQ1ODJh
YjI5ODc3MzJkNDA0OTk0ODk5ZTlhNzc2NjJlMmEzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL3Zh
bGlkYXRlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCkBAIC0xLDQgKzEs
NCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1v
ZHVsZS1idWlsZGVyLmpzCiAKIGxldCBlbXB0eU1vZHVsZUJpbmFyeTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9i
YWwvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC9jb25zdHJ1Y3Rvci5hbnkuanMKaW5kZXggMjcw
MTQ5ZWMxNDQzMDQ1ZTQxMzRlZWI4MDQwMzY1MWEzZDBhMTJmZi4uYjAwOGVmMzAxNjAxZWI0ZTRh
MjU1NTdlZmFmMWVjMTM1Y2VlMTBiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC9jb25zdHJ1Y3Rvci5hbnku
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2dsb2JhbC9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRB
OiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIs
anNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIAogZnVu
Y3Rpb24gYXNzZXJ0X0dsb2JhbChhY3R1YWwsIGV4cGVjdGVkKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFs
L3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdG9TdHJpbmcuYW55LmpzCmluZGV4IDVmNjRkNzJkZTlk
OWRmNGE5OWU0ODJjZGVkNWEzMGFjMWM4YTM0M2MuLjM1OWM0MjczYjViZDc4NjdhY2RhNDRmYzQ2
YTZkZGMwMGFjYzk3NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9i
YWwvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hl
bGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVz
dCgoKSA9PiB7CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAidmFsdWUiOiAiaTMyIiB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2dsb2JhbC92YWx1ZS1nZXQtc2V0LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnku
anMKaW5kZXggNjlmMGU0NjM3OWZmZDIwYTNiOWJmYjE5MDQ4NzM3NmQ2MTZkOTE2ZS4uNDNkODQ3
NGEyNWQxODJkNzQyMjY1NGY2MTc2OWJmODdkM2FiYTI5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1
ZS1nZXQtc2V0LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCkBAIC0xLDQg
KzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7CiAgIGNvbnN0IHRoaXNWYWx1
ZXMgPSBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVlT2YuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1ZU9mLmFu
eS5qcwppbmRleCAwZDRkZTkzYTZiZDIyOWY4ZDlmYWI3OTQxYjI0YTE5NDRkYzZhYTc4Li4wNjk1
YTVhNjFmYmM2ZTI0NTAxOWE3YmY0MjgxMGNiODRhMGRmYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3Zh
bHVlT2YuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0v
LyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3
b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3QgYXJndW1lbnQgPSB7ICJ2YWx1
ZSI6ICJpMzIiIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaWRsaGFybmVzcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaWRsaGFybmVzcy5hbnku
anMKaW5kZXggMjUyOThkM2RhYmZiYmNlNzQ5MGZhMDQwMjU4ZjNlMDZjZDk0YjU4Mi4uYTJkZTlk
ZTg1OWU0YzVmZGI1ODExODhiYjlkOWU4OGYyM2VjMDZkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2lkbGhhcm5lc3Mu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9pZGxoYXJuZXNzLmFueS5qcwpAQCAtMTcsOSArMTcsNiBAQCBwcm9taXNlX3Rl
c3QoYXN5bmMgKCkgPT4gewogICAgIGV4Y2VwdDogWydDb21waWxlRXJyb3InLCAnTGlua0Vycm9y
JywgJ1J1bnRpbWVFcnJvciddCiAgIH0pOwogCi0gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xMjg1MAotICBpZGxfYXJyYXkuYWRkX3VudGVzdGVk
X2lkbHMoJ1tFeHBvc2VkPShXaW5kb3csV29ya2VyKV0gaW50ZXJmYWNlIEFycmF5QnVmZmVyIHt9
OycpOwotCiAgIC8vIElnbm9yZWQgZXJyb3JzIGFyZSBzdXJmYWNlZCBpbiBpZGxoYXJuZXNzLmpz
J3MgdGVzdF9vYmplY3QgYmVsb3cuCiAgIHRyeSB7CiAgICAgc2VsZi5tZW1vcnkgPSBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxMDI0fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29u
c3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBv
cnRzLmFueS5qcwppbmRleCBlODhkMDJiNjQ5Njg0YjBkN2NlZWNiMGQwYTNkMWU4NzVkZDIxYzQ5
Li5lNGE1YWJiOGViMjE2OWZiY2UxN2I2MGRhMjczMTJiYTk0YTBiOWQyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5z
dGFuY2UvY29uc3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1
Y3Rvci1iYWQtaW1wb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9
anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAog
Ly8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1F
VEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9iYWQtaW1wb3J0cy5qcwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFu
Y2UvY29uc3RydWN0b3ItY2FjaGluZy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3RydWN0b3ItY2FjaGlu
Zy5hbnkuanMKaW5kZXggNjk1YjA3OGEwZjk0Nzg2MjA3MTViMGZlZjI1OWY3MjA3NDM3ZjI5ZC4u
MWFhNDczOWI2Mjk0ZDAxMzdlYWQzMDk3ZDVkYmNlYzNlM2ExZjIyMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1j
YWNoaW5nLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBmdW5jdGlvbiBnZXRF
eHBvcnRzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5j
ZS9jb25zdHJ1Y3Rvci5hbnkuanMKaW5kZXggMDZjNmQ3YTg4YzA5MjM1YWJkNDBhNzFhMzc5ZjBk
ODAwNWEzMzYxOC4uMjYzOTBlYmQyY2RiMmU0YzQ4ZGMzMGJkNTBmNmU1Nzk0ZTgwNzkyMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3RydWN0
b3IuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlw
dD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dh
c20vanNhcGkvYXNzZXJ0aW9ucy5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2luc3Rh
bmNlVGVzdEZhY3RvcnkuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRzLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0
YW5jZS9leHBvcnRzLmFueS5qcwppbmRleCA3YzgxYTQxMjk1YjBhMWYyZTIwZWU3OTcyMjkxZTEw
OTlmMjM3NWZlLi42ZGNmYmNlZTk1MGQ4NzFjZDZlZTNlNWFmOTRiZWUzOWZkOGY1MWU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
anNhcGkvaW5zdGFuY2UvZXhwb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55Lmpz
CkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2Jh
bD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9q
c2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGxldCBlbXB0eU1vZHVsZUJpbmFyeTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnN0YW5jZS90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55Lmpz
CmluZGV4IDcwMWVjOGY5YmFkOTk4YmMyNjMxMGU3NGE4YTdlMjNmMmNiZjVjNGQuLjU0N2E5Y2E4
Mjk1ZjViNjgxM2EzZDE3OWJiZmQzY2E5MDU0ZTQ5NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0
cmluZy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUt
YnVpbGRlci5qcwogCiB0ZXN0KCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2lu
dGVyZmFjZS5hbnkuanMKaW5kZXggODg5NDBiZTUxYTdmNTcyN2MyN2UxNjdkOWUxMGFiYmFlYjA0
YTA2Yi4uNDU1MWU2ZTZlM2Q0M2U1NGUwZGJiNmE2NGYwN2ZiNTdlZjk4YWM0NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2ludGVyZmFjZS5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2ludGVyZmFjZS5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0v
LyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3
b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMK
IAogZnVuY3Rpb24gdGVzdF9vcGVyYXRpb25zKG9iamVjdCwgb2JqZWN0X25hbWUsIG9wZXJhdGlv
bnMpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYXNzZXJ0aW9ucy5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYXNzZXJ0aW9ucy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNTM5NTEzYWRjYWI3ZDg0ZTY3ZDY1ZmNmOTc0NTNlOWJjMjJkZTQzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9hc3NlcnRpb25zLmpzCkBAIC0wLDAgKzEsMzggQEAKK2Z1
bmN0aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihhY3R1YWwsIHsgc2l6ZT0wLCBzaGFyZWQ9ZmFsc2Us
IGRldGFjaGVkPWZhbHNlIH0sIG1lc3NhZ2UpIHsKKyAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L3NwZWMvaXNzdWVzLzg0MAorICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3do
YXR3Zy9odG1sL2lzc3Vlcy81MzgwIGZvciB3aHkgbm90IGBzZWxmLlNoYXJlZEFycmF5QnVmZmVy
YAorICBjb25zdCBpc1NoYXJlZCA9ICEoImlzVmlldyIgaW4gYWN0dWFsLmNvbnN0cnVjdG9yKTsK
KyAgYXNzZXJ0X2VxdWFscyhpc1NoYXJlZCwgc2hhcmVkLCBgJHttZXNzYWdlfTogY29uc3RydWN0
b3JgKTsKKyAgY29uc3Qgc2hhcmVkU3RyaW5nID0gc2hhcmVkID8gIlNoYXJlZCIgOiAiIjsKKyAg
YXNzZXJ0X2VxdWFscyhhY3R1YWwudG9TdHJpbmcoKSwgYFtvYmplY3QgJHtzaGFyZWRTdHJpbmd9
QXJyYXlCdWZmZXJdYCwgYCR7bWVzc2FnZX06IHRvU3RyaW5nKClgKTsKKyAgYXNzZXJ0X2VxdWFs
cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoYWN0dWFsKS50b1N0cmluZygpLCBgW29iamVjdCAke3No
YXJlZFN0cmluZ31BcnJheUJ1ZmZlcl1gLCBgJHttZXNzYWdlfTogcHJvdG90eXBlIHRvU3RyaW5n
KClgKTsKKyAgaWYgKGRldGFjaGVkKSB7CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkv
ZWNtYTI2Mi9pc3N1ZXMvNjc4CisgICAgbGV0IGJ5dGVMZW5ndGg7CisgICAgdHJ5IHsKKyAgICAg
IGJ5dGVMZW5ndGggPSBhY3R1YWwuYnl0ZUxlbmd0aDsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICBieXRlTGVuZ3RoID0gMDsKKyAgICB9CisgICAgYXNzZXJ0X2VxdWFscyhieXRlTGVuZ3RoLCAw
LCBgJHttZXNzYWdlfTogZGV0YWNoZWQgc2l6ZWApOworICB9IGVsc2UgeworICAgIGFzc2VydF9l
cXVhbHMoYWN0dWFsLmJ5dGVMZW5ndGgsIDB4MTAwMDAgKiBzaXplLCBgJHttZXNzYWdlfTogc2l6
ZWApOworICAgIGlmIChzaXplID4gMCkgeworICAgICAgY29uc3QgYXJyYXkgPSBuZXcgVWludDhB
cnJheShhY3R1YWwpOworICAgICAgYXNzZXJ0X2VxdWFscyhhcnJheVswXSwgMCwgYCR7bWVzc2Fn
ZX06IGZpcnN0IGVsZW1lbnRgKTsKKyAgICAgIGFzc2VydF9lcXVhbHMoYXJyYXlbYXJyYXkuYnl0
ZUxlbmd0aCAtIDFdLCAwLCBgJHttZXNzYWdlfTogbGFzdCBlbGVtZW50YCk7CisgICAgfQorICB9
CisgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmlzRnJvemVuKGFjdHVhbCksIHNoYXJlZCwgImJ1ZmZl
ciBmcm96ZW4iKTsKKyAgYXNzZXJ0X2VxdWFscyhPYmplY3QuaXNFeHRlbnNpYmxlKGFjdHVhbCks
ICFzaGFyZWQsICJidWZmZXIgZXh0ZW5zaWJpbGl0eSIpOworfQorCitmdW5jdGlvbiBhc3NlcnRf
TWVtb3J5KG1lbW9yeSwgeyBzaXplPTAsIHNoYXJlZD1mYWxzZSB9KSB7CisgIGFzc2VydF9lcXVh
bHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG1lbW9yeSksIFdlYkFzc2VtYmx5Lk1lbW9yeS5wcm90
b3R5cGUsCisgICAgICAgICAgICAgICAgInByb3RvdHlwZSIpOworICBhc3NlcnRfdHJ1ZShPYmpl
Y3QuaXNFeHRlbnNpYmxlKG1lbW9yeSksICJleHRlbnNpYmxlIik7CisKKyAgLy8gaHR0cHM6Ly9n
aXRodWIuY29tL1dlYkFzc2VtYmx5L3NwZWMvaXNzdWVzLzg0MAorICBhc3NlcnRfZXF1YWxzKG1l
bW9yeS5idWZmZXIsIG1lbW9yeS5idWZmZXIsICJidWZmZXIgc2hvdWxkIGJlIGlkZW1wb3RlbnQi
KTsKKyAgYXNzZXJ0X0FycmF5QnVmZmVyKG1lbW9yeS5idWZmZXIsIHsgc2l6ZSwgc2hhcmVkIH0p
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9idWZmZXIuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9idWZmZXIuYW55Lmpz
CmluZGV4IGE4MzVlNjUxMWEwYTZjNTNjMzZhMGZmZDgxNDNmNGExYTczODhlY2EuLmZiMWQxMjAw
Yjg5MmJlMWViN2FlYTY2ZGIzNDNkYjQ5MWU5MjFhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYnVmZmVy
LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRB
OiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIs
anNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3QgdGhpc1ZhbHVlcyA9IFsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjU1MWJlMDZiYjBjYWY2YWUzMDZhNjQyYmM1YjE5YWQxN2E1MmQzOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIFNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVt
IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwg
T3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvciAod2l0aCBzaGFyZWQpIGFzc2VydF9h
cnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImluaXRpYWwiLCAi
aW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIiwgInNoYXJlZCJd
IGxlbmd0aCA1LCBnb3QgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwg
Im1heGltdW0gdmFsdWVPZiJdIGxlbmd0aCA0CitGQUlMIFNoYXJlZCBtZW1vcnkgYXNzZXJ0X2Vx
dWFsczogdW5kZWZpbmVkOiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFueS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvbWVtb3J5L2NvbnN0cnVjdG9yLXNoYXJlZC50ZW50YXRpdmUuYW55Lmh0bWwKQEAgLTAsMCAr
MSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3Ry
dWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjE2ZmM0Y2E1NTU5MWYxZmE0MTJhZWFkZjVmZDUzOGMzYWZhMGFmMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkuanMKQEAgLTAsMCAr
MSw1NCBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAor
Ly8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKKy8vIE1FVEE6IHNjcmlw
dD0vd2FzbS9qc2FwaS9tZW1vcnkvYXNzZXJ0aW9ucy5qcworCit0ZXN0KCgpID0+IHsKKyAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyAi
aW5pdGlhbCI6IDEwLCAic2hhcmVkIjogdHJ1ZSB9KSk7Cit9LCAiU2hhcmVkIG1lbW9yeSB3aXRo
b3V0IG1heGltdW0iKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qgb3JkZXIgPSBbXTsKKworICBu
ZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKKyAgICBnZXQgbWF4aW11bSgpIHsKKyAgICAgIG9yZGVy
LnB1c2goIm1heGltdW0iKTsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHZhbHVlT2YoKSB7Cisg
ICAgICAgICAgb3JkZXIucHVzaCgibWF4aW11bSB2YWx1ZU9mIik7CisgICAgICAgICAgcmV0dXJu
IDE7CisgICAgICAgIH0sCisgICAgICB9OworICAgIH0sCisKKyAgICBnZXQgaW5pdGlhbCgpIHsK
KyAgICAgIG9yZGVyLnB1c2goImluaXRpYWwiKTsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHZh
bHVlT2YoKSB7CisgICAgICAgICAgb3JkZXIucHVzaCgiaW5pdGlhbCB2YWx1ZU9mIik7CisgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0sCisgICAgICB9OworICAgIH0sCisKKyAgICBnZXQg
c2hhcmVkKCkgeworICAgICAgb3JkZXIucHVzaCgic2hhcmVkIik7CisgICAgICByZXR1cm4gewor
ICAgICAgICB2YWx1ZU9mOiB0LnVucmVhY2hlZF9mdW5jKCJzaG91bGQgbm90IGNhbGwgc2hhcmVk
IHZhbHVlT2YiKSwKKyAgICAgIH07CisgICAgfSwKKyAgfSk7CisKKyAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhvcmRlciwgWworICAgICJpbml0aWFsIiwKKyAgICAiaW5pdGlhbCB2YWx1ZU9mIiwKKyAg
ICAibWF4aW11bSIsCisgICAgIm1heGltdW0gdmFsdWVPZiIsCisgICAgInNoYXJlZCIsCisgIF0p
OworfSwgIk9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGggc2hhcmVkKSIp
OworCit0ZXN0KCgpID0+IHsKKyAgY29uc3QgYXJndW1lbnQgPSB7ICJpbml0aWFsIjogNCwgIm1h
eGltdW0iOiAxMCwgc2hhcmVkOiB0cnVlIH07CisgIGNvbnN0IG1lbW9yeSA9IG5ldyBXZWJBc3Nl
bWJseS5NZW1vcnkoYXJndW1lbnQpOworICBhc3NlcnRfTWVtb3J5KG1lbW9yeSwgeyAic2l6ZSI6
IDQsICJzaGFyZWQiOiB0cnVlIH0pOworfSwgIlNoYXJlZCBtZW1vcnkiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9t
ZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRhdGl2ZS5hbnkud29ya2VyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NTUxYmUwNmJiMGNhZjZhZTMwNmE2NDJiYzViMTlhZDE3YTUyZDM5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQudGVudGF0aXZlLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitGQUlMIFNoYXJlZCBtZW1v
cnkgd2l0aG91dCBtYXhpbXVtIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwgInNoYXJlZCI6IHRydWUgfSkiIGRp
ZCBub3QgdGhyb3cKK0ZBSUwgT3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgZGVzY3JpcHRvciAod2l0
aCBzaGFyZWQpIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBh
cnJheSBbImluaXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2
YWx1ZU9mIiwgInNoYXJlZCJdIGxlbmd0aCA1LCBnb3QgWyJpbml0aWFsIiwgImluaXRpYWwgdmFs
dWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFsdWVPZiJdIGxlbmd0aCA0CitGQUlMIFNoYXJl
ZCBtZW1vcnkgYXNzZXJ0X2VxdWFsczogdW5kZWZpbmVkOiBjb25zdHJ1Y3RvciBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci1zaGFyZWQu
dGVudGF0aXZlLmFueS53b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hhcmVkLnRlbnRh
dGl2ZS5hbnkud29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2
MGE0NTA2MDk4MGI1NDhjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Itc2hh
cmVkLnRlbnRhdGl2ZS5hbnkud29ya2VyLmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZp
bGUgaXMgcmVxdWlyZWQgZm9yIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUg
dGVtcGxhdGVkIHRlc3QgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L21lbW9yeS9jb25zdHJ1Y3Rvci5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5h
bnktZXhwZWN0ZWQudHh0CmluZGV4IGM2MWIxNWVkYTMyZjY4MjM1YWRlNTk1Y2NhYjE2ODNlZmQ2
Y2ZmNWMuLjRiN2EzYzA0N2U5MDQ2NDhiYTRjZTI4MmU0MDQ4ODgzNDEwYTgwMTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvY29uc3RydWN0b3IuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVj
dG9yLmFueS1leHBlY3RlZC50eHQKQEAgLTE4LDEyICsxOCw5IEBAIFBBU1MgT3V0LW9mLXJhbmdl
IG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjogNDI5NDk2NzI5NgogUEFTUyBPdXQtb2YtcmFu
Z2UgaW5pdGlhbCB2YWx1ZSBpbiBkZXNjcmlwdG9yOiA2ODcxOTQ3NjczNiAKIFBBU1MgT3V0LW9m
LXJhbmdlIG1heGltdW0gdmFsdWUgaW4gZGVzY3JpcHRvcjogNjg3MTk0NzY3MzYgCiBQQVNTIElu
aXRpYWwgdmFsdWUgZXhjZWVkcyBtYXhpbXVtIAotRkFJTCBTaGFyZWQgbWVtb3J5IHdpdGhvdXQg
bWF4aW11bSBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeSh7ICJpbml0aWFsIjogMTAsICJzaGFyZWQiOiB0cnVlIH0pIiBkaWQgbm90IHRocm93
CiBQQVNTIFByb3h5IGRlc2NyaXB0b3IgCiBQQVNTIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRl
c2NyaXB0b3IgCi1GQUlMIE9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIGRlc2NyaXB0b3IgKHdpdGgg
c2hhcmVkKSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJy
YXkgWyJpbml0aWFsIiwgImluaXRpYWwgdmFsdWVPZiIsICJtYXhpbXVtIiwgIm1heGltdW0gdmFs
dWVPZiIsICJzaGFyZWQiXSBsZW5ndGggNSwgZ290IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVl
T2YiLCAibWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiXSBsZW5ndGggNAogUEFTUyBaZXJvIGlu
aXRpYWwgCiBQQVNTIE5vbi16ZXJvIGluaXRpYWwgCiBGQUlMIFN0cmF5IGFyZ3VtZW50IFdlYkFz
c2VtYmx5Lk1lbW9yeSBleHBlY3RzIGV4YWN0bHkgb25lIGFyZ3VtZW50Ci1GQUlMIFNoYXJlZCBt
ZW1vcnkgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2J1ZmZlclR5cGUu
cHJvdG90eXBlJykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5
L2NvbnN0cnVjdG9yLmFueS5qcwppbmRleCAwM2VlZDUyNzA4MzFiNTA0ZTZhYjIxYmNjOGVlMzZm
ZGZkMDUwMzA0Li42NTI0YzhhY2M0OTAxNmUxMDc0NmQ2ODZjODYwZWViYTZmZDNjMTZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
anNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS5qcwpAQCAtMSwyNiArMSw2IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKLQotZnVuY3Rpb24gYXNzZXJ0X01lbW9yeShtZW1vcnks
IGV4cGVjdGVkKSB7Ci0gIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG1lbW9y
eSksIFdlYkFzc2VtYmx5Lk1lbW9yeS5wcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgInByb3Rv
dHlwZSIpOwotICBhc3NlcnRfdHJ1ZShPYmplY3QuaXNFeHRlbnNpYmxlKG1lbW9yeSksICJleHRl
bnNpYmxlIik7Ci0KLSAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NwZWMvaXNz
dWVzLzg0MAotICBhc3NlcnRfZXF1YWxzKG1lbW9yeS5idWZmZXIsIG1lbW9yeS5idWZmZXIsICJi
dWZmZXIgc2hvdWxkIGJlIGlkZW1wb3RlbnQiKTsKLSAgY29uc3QgaXNTaGFyZWQgPSAhIWV4cGVj
dGVkLnNoYXJlZDsKLSAgY29uc3QgYnVmZmVyVHlwZSA9IGlzU2hhcmVkID8gc2VsZi5TaGFyZWRB
cnJheUJ1ZmZlciA6IEFycmF5QnVmZmVyOwotICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90
b3R5cGVPZihtZW1vcnkuYnVmZmVyKSwgYnVmZmVyVHlwZS5wcm90b3R5cGUsCi0gICAgICAgICAg
ICAgICAgJ3Byb3RvdHlwZSBvZiBidWZmZXInKTsKLSAgYXNzZXJ0X2VxdWFscyhtZW1vcnkuYnVm
ZmVyLmJ5dGVMZW5ndGgsIDB4MTAwMDAgKiBleHBlY3RlZC5zaXplLCAic2l6ZSBvZiBidWZmZXIi
KTsKLSAgaWYgKGV4cGVjdGVkLnNpemUgPiAwKSB7Ci0gICAgY29uc3QgYXJyYXkgPSBuZXcgVWlu
dDhBcnJheShtZW1vcnkuYnVmZmVyKTsKLSAgICBhc3NlcnRfZXF1YWxzKGFycmF5WzBdLCAwLCAi
Zmlyc3QgZWxlbWVudCBvZiBidWZmZXIiKTsKLSAgICBhc3NlcnRfZXF1YWxzKGFycmF5W2FycmF5
LmJ5dGVMZW5ndGggLSAxXSwgMCwgImxhc3QgZWxlbWVudCBvZiBidWZmZXIiKTsKLSAgfQotICBh
c3NlcnRfZXF1YWxzKGlzU2hhcmVkLCBPYmplY3QuaXNGcm96ZW4obWVtb3J5LmJ1ZmZlciksICJi
dWZmZXIgZnJvemVuIik7Ci0gIGFzc2VydF9ub3RfZXF1YWxzKE9iamVjdC5pc0V4dGVuc2libGUo
bWVtb3J5LmJ1ZmZlciksIGlzU2hhcmVkLCAiYnVmZmVyIGV4dGVuc2liaWxpdHkiKTsKLX0KKy8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9tZW1vcnkvYXNzZXJ0aW9ucy5qcwogCiB0ZXN0KCgp
ID0+IHsKICAgYXNzZXJ0X2Z1bmN0aW9uX25hbWUoV2ViQXNzZW1ibHkuTWVtb3J5LCAiTWVtb3J5
IiwgIldlYkFzc2VtYmx5Lk1lbW9yeSIpOwpAQCAtODYsMTAgKzY2LDYgQEAgdGVzdCgoKSA9PiB7
CiAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeSh7ICJpbml0aWFsIjogMTAsICJtYXhpbXVtIjogOSB9KSk7CiB9LCAiSW5pdGlhbCB2YWx1
ZSBleGNlZWRzIG1heGltdW0iKTsKIAotdGVzdCgoKSA9PiB7Ci0gIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgImluaXRpYWwiOiAxMCwg
InNoYXJlZCI6IHRydWUgfSkpOwotfSwgIlNoYXJlZCBtZW1vcnkgd2l0aG91dCBtYXhpbXVtIik7
Ci0KIHRlc3QoKCkgPT4gewogICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh7fSwgewogICAgIGhh
cyhvLCB4KSB7CkBAIC0xMzUsNDcgKzExMSw2IEBAIHRlc3QoKCkgPT4gewogICBdKTsKIH0sICJP
cmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yIik7CiAKLXRlc3QodCA9PiB7Ci0gIGNv
bnN0IG9yZGVyID0gW107Ci0KLSAgbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7Ci0gICAgZ2V0IG1h
eGltdW0oKSB7Ci0gICAgICBvcmRlci5wdXNoKCJtYXhpbXVtIik7Ci0gICAgICByZXR1cm4gewot
ICAgICAgICB2YWx1ZU9mKCkgewotICAgICAgICAgIG9yZGVyLnB1c2goIm1heGltdW0gdmFsdWVP
ZiIpOwotICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9LAotICAgICAgfTsKLSAgICB9LAot
Ci0gICAgZ2V0IGluaXRpYWwoKSB7Ci0gICAgICBvcmRlci5wdXNoKCJpbml0aWFsIik7Ci0gICAg
ICByZXR1cm4gewotICAgICAgICB2YWx1ZU9mKCkgewotICAgICAgICAgIG9yZGVyLnB1c2goImlu
aXRpYWwgdmFsdWVPZiIpOwotICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9LAotICAgICAg
fTsKLSAgICB9LAotCi0gICAgZ2V0IHNoYXJlZCgpIHsKLSAgICAgIG9yZGVyLnB1c2goInNoYXJl
ZCIpOwotICAgICAgcmV0dXJuIHsKLSAgICAgICAgdmFsdWVPZjogdC51bnJlYWNoZWRfZnVuYygi
c2hvdWxkIG5vdCBjYWxsIHNoYXJlZCB2YWx1ZU9mIiksCi0gICAgICB9OwotICAgIH0sCi0gIH0p
OwotCi0gIGFzc2VydF9hcnJheV9lcXVhbHMob3JkZXIsIFsKLSAgICAiaW5pdGlhbCIsCi0gICAg
ImluaXRpYWwgdmFsdWVPZiIsCi0gICAgIm1heGltdW0iLAotICAgICJtYXhpbXVtIHZhbHVlT2Yi
LAotICAgICJzaGFyZWQiLAotICBdKTsKLX0sICJPcmRlciBvZiBldmFsdWF0aW9uIGZvciBkZXNj
cmlwdG9yICh3aXRoIHNoYXJlZCkiKTsKLQogdGVzdCgoKSA9PiB7CiAgIGNvbnN0IGFyZ3VtZW50
ID0geyAiaW5pdGlhbCI6IDAgfTsKICAgY29uc3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeShhcmd1bWVudCk7CkBAIC0xOTMsOSArMTI4LDMgQEAgdGVzdCgoKSA9PiB7CiAgIGNvbnN0
IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoYXJndW1lbnQsIHt9KTsKICAgYXNzZXJ0
X01lbW9yeShtZW1vcnksIHsgInNpemUiOiAwIH0pOwogfSwgIlN0cmF5IGFyZ3VtZW50Iik7Ci0K
LXRlc3QoKCkgPT4gewotICBjb25zdCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiA0LCAibWF4aW11
bSI6IDEwLCBzaGFyZWQ6IHRydWUgfTsKLSAgY29uc3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5
Lk1lbW9yeShhcmd1bWVudCk7Ci0gIGFzc2VydF9NZW1vcnkobWVtb3J5LCB7ICJzaXplIjogNCwg
InNoYXJlZCI6IHRydWUgfSk7Ci19LCAiU2hhcmVkIG1lbW9yeSIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3Iu
YW55Lndvcmtlci1leHBlY3RlZC50eHQKaW5kZXggYzYxYjE1ZWRhMzJmNjgyMzVhZGU1OTVjY2Fi
MTY4M2VmZDZjZmY1Yy4uNGI3YTNjMDQ3ZTkwNDY0OGJhNGNlMjgyZTQwNDg4ODM0MTBhODAxMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L2NvbnN0cnVjdG9yLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xOCwxMiArMTgs
OSBAQCBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6IDQyOTQ5
NjcyOTYKIFBBU1MgT3V0LW9mLXJhbmdlIGluaXRpYWwgdmFsdWUgaW4gZGVzY3JpcHRvcjogNjg3
MTk0NzY3MzYgCiBQQVNTIE91dC1vZi1yYW5nZSBtYXhpbXVtIHZhbHVlIGluIGRlc2NyaXB0b3I6
IDY4NzE5NDc2NzM2IAogUEFTUyBJbml0aWFsIHZhbHVlIGV4Y2VlZHMgbWF4aW11bSAKLUZBSUwg
U2hhcmVkIG1lbW9yeSB3aXRob3V0IG1heGltdW0gYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24g
IigpID0+IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyAiaW5pdGlhbCI6IDEwLCAic2hhcmVkIjog
dHJ1ZSB9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBQcm94eSBkZXNjcmlwdG9yIAogUEFTUyBPcmRl
ciBvZiBldmFsdWF0aW9uIGZvciBkZXNjcmlwdG9yIAotRkFJTCBPcmRlciBvZiBldmFsdWF0aW9u
IGZvciBkZXNjcmlwdG9yICh3aXRoIHNoYXJlZCkgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3Ro
cyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5pdGlhbCIsICJpbml0aWFsIHZhbHVlT2YiLCAi
bWF4aW11bSIsICJtYXhpbXVtIHZhbHVlT2YiLCAic2hhcmVkIl0gbGVuZ3RoIDUsIGdvdCBbImlu
aXRpYWwiLCAiaW5pdGlhbCB2YWx1ZU9mIiwgIm1heGltdW0iLCAibWF4aW11bSB2YWx1ZU9mIl0g
bGVuZ3RoIDQKIFBBU1MgWmVybyBpbml0aWFsIAogUEFTUyBOb24temVybyBpbml0aWFsIAogRkFJ
TCBTdHJheSBhcmd1bWVudCBXZWJBc3NlbWJseS5NZW1vcnkgZXhwZWN0cyBleGFjdGx5IG9uZSBh
cmd1bWVudAotRkFJTCBTaGFyZWQgbWVtb3J5IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdidWZmZXJUeXBlLnByb3RvdHlwZScpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jv
dy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCmluZGV4IDBjZWE4YjRiMWE2MzNmMWY2ZGE5MjMx
MzMyZTM5NGI3ZmNkNzYxOTcuLmM1MTExMjk0OTFmNGRlNDIzZjZkNmIzZmFjNzFkM2JmMDIxOTIz
MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS5qcwpA
QCAtMSwzMSArMSw1IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAotCi1mdW5jdGlvbiBhc3Nl
cnRfQXJyYXlCdWZmZXIoYWN0dWFsLCB7IHNpemU9MCwgc2hhcmVkPWZhbHNlLCBkZXRhY2hlZD1m
YWxzZSB9LCBtZXNzYWdlKSB7Ci0gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9z
cGVjL2lzc3Vlcy84NDAKLSAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9p
c3N1ZXMvNTM4MCBmb3Igd2h5IG5vdCBgc2VsZi5TaGFyZWRBcnJheUJ1ZmZlcmAKLSAgY29uc3Qg
aXNTaGFyZWQgPSAhKCJpc1ZpZXciIGluIGFjdHVhbC5jb25zdHJ1Y3Rvcik7Ci0gIGFzc2VydF9l
cXVhbHMoaXNTaGFyZWQsIHNoYXJlZCwgYCR7bWVzc2FnZX06IGNvbnN0cnVjdG9yYCk7Ci0gIGNv
bnN0IHNoYXJlZFN0cmluZyA9IHNoYXJlZCA/ICJTaGFyZWQiIDogIiI7Ci0gIGFzc2VydF9lcXVh
bHMoYWN0dWFsLnRvU3RyaW5nKCksIGBbb2JqZWN0ICR7c2hhcmVkU3RyaW5nfUFycmF5QnVmZmVy
XWAsIGAke21lc3NhZ2V9OiB0b1N0cmluZygpYCk7Ci0gIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGFjdHVhbCkudG9TdHJpbmcoKSwgYFtvYmplY3QgJHtzaGFyZWRTdHJpbmd9
QXJyYXlCdWZmZXJdYCwgYCR7bWVzc2FnZX06IHByb3RvdHlwZSB0b1N0cmluZygpYCk7Ci0gIGlm
IChkZXRhY2hlZCkgewotICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWEyNjIvaXNz
dWVzLzY3OAotICAgIGxldCBieXRlTGVuZ3RoOwotICAgIHRyeSB7Ci0gICAgICBieXRlTGVuZ3Ro
ID0gYWN0dWFsLmJ5dGVMZW5ndGg7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgYnl0ZUxlbmd0
aCA9IDA7Ci0gICAgfQotICAgIGFzc2VydF9lcXVhbHMoYnl0ZUxlbmd0aCwgMCwgYCR7bWVzc2Fn
ZX06IGRldGFjaGVkIHNpemVgKTsKLSAgfSBlbHNlIHsKLSAgICBhc3NlcnRfZXF1YWxzKGFjdHVh
bC5ieXRlTGVuZ3RoLCAweDEwMDAwICogc2l6ZSwgYCR7bWVzc2FnZX06IHNpemVgKTsKLSAgICBp
ZiAoc2l6ZSA+IDApIHsKLSAgICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYWN0dWFs
KTsKLSAgICAgIGFzc2VydF9lcXVhbHMoYXJyYXlbMF0sIDAsIGAke21lc3NhZ2V9OiBmaXJzdCBl
bGVtZW50YCk7Ci0gICAgICBhc3NlcnRfZXF1YWxzKGFycmF5W2FycmF5LmJ5dGVMZW5ndGggLSAx
XSwgMCwgYCR7bWVzc2FnZX06IGxhc3QgZWxlbWVudGApOwotICAgIH0KLSAgfQotfQorLy8gTUVU
QTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAorLy8gTUVUQTogc2NyaXB0
PS93YXNtL2pzYXBpL21lbW9yeS9hc3NlcnRpb25zLmpzCiAKIHRlc3QoKCkgPT4gewogICBjb25z
dCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L3RvU3RyaW5n
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvdG9TdHJpbmcuYW55LmpzCmluZGV4IGJiOTA4MWQxODYxN2UxYWY3MjQy
NGVhNzAwZDMwZTVjYjBlZmQ5OGQuLmY0MDU5Zjc2NTc3MjI3NTljZTRmYzk1MGM0ODUwOTE2ZDEw
MmRlZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvdG9TdHJp
bmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAiaW5pdGlhbCI6IDAgfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbWVtb3J5L3czYy1pbXBvcnQubG9nCmluZGV4IDAwNjY0M2IxODg2ZTVl
NjcwNGEyN2Y5NGFhOWFlMGY2MjFhNTlkODcuLjk0ZDU5ODA5YzA1Zjg5MWEzNmMwNzIxZTgzNzZm
OTYxNzJjZDI0YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS93
M2MtaW1wb3J0LmxvZwpAQCAtMTQsNyArMTQsOSBAQCBQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTGlzdCBvZiBmaWxlczoK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L2Fzc2VydGlvbnMuanMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVj
dG9yLXNoYXJlZC50ZW50YXRpdmUuYW55LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVt
b3J5L2dyb3cuYW55LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUv
Y29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jb25zdHJ1Y3Rvci5hbnkuanMKaW5kZXggYWM0Y2Rl
MmUzMTdlNWVjYjE4N2E5NjRmNGY1MmY2YTdkYzc2ZGQ5OC4uOTk3OGY3ZTZhYzhmMmIxMWJjYWNh
ODIzYjg3N2VhODE3ZGZlN2U5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jb25zdHJ1Y3Rvci5hbnkuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL21vZHVsZS9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBn
bG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNz
aGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMK
IC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9t
b2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jdXN0b21TZWN0aW9ucy5hbnkuanMK
aW5kZXggOGMyMTVkMTdiZDI1ODM0YWQyOTgzZTg4MTcyMzcxYzRlZTFmNjVjMi4uNDAyOTg3N2U5
MmM3YjhiM2JkMzIxODQ4NTM5NDc1YzNhZjUyZWRlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jdXN0b21T
ZWN0aW9ucy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jdXN0b21TZWN0aW9ucy5hbnkuanMKQEAgLTEsNCAr
MSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20t
bW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNzZXJ0X0FycmF5QnVmZmVyKGJ1ZmZlciwg
ZXhwZWN0ZWQpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9y
dHMuYW55LmpzCmluZGV4IDEzMjljNmE2MDIxZjJkNTkwMmY3NTllNGRhOTJkMjA5OTc0ZGE3MGUu
LjYwYjJjMDRmNDM2OTY4YWMxMTU1Nzg2MDI3NWQ3NWJjODllNDllM2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvZXhwb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQg
QEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGlj
YXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1
bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlNb2R1bGVCaW5hcnk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxl
L2ltcG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRzLmFueS5qcwppbmRleCA5YTdkNjExNTk4NmVh
MDY2YzUwNzVkMTRmNjBkM2NiMDI3N2E3OGExLi5kNjc1NGM5ZWZiZGM0NGNkOTYzNzA4ZjViNzUx
ZjE1NDZkZGZjZDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMuYW55LmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUv
aW1wb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAor
Ly8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTog
c2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNz
ZXJ0X01vZHVsZUltcG9ydERlc2NyaXB0b3IoaW1wb3J0XywgZXhwZWN0ZWQpIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS90b1N0cmluZy5hbnkuanMKaW5kZXggN2Rk
ODVhMWM0YWM2ZTUyNWUxZTRjMGY5YmFjYzMyOTVlN2VkYTdmYy4uMWMyMGNkNjEwOGM4NGU1NmUy
MTlmMGU3MzhlMDY3MmNkN2MyZDA3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS90b1N0cmluZy5hbnkuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL21vZHVsZS90b1N0cmluZy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9i
YWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVs
bAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAog
dGVzdCgoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvcHJvdG90eXBlcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3Byb3Rv
dHlwZXMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDdlYzU2ZjY1NWFhZDM2Y2FkMTJh
NWUwNjM3ZmM0MWUzNjNmNTZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3Byb3RvdHlwZXMuYW55LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFTUyBfTW9kdWxlIAorUEFTUyBfSW5zdGFuY2Ug
CitGQUlMIF9NZW1vcnkgYXNzZXJ0X3RydWU6IF9NZW1vcnkgaW5zdGFuY2VvZiBfTWVtb3J5IGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIF9UYWJsZSBhc3NlcnRfdHJ1ZTogX1RhYmxlIGlu
c3RhbmNlb2YgX1RhYmxlIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIF9HbG9iYWwgYXNz
ZXJ0X3RydWU6IF9HbG9iYWwgaW5zdGFuY2VvZiBfR2xvYmFsIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9wcm90b3R5cGVzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3Byb3RvdHlwZXMuYW55Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9wcm90b3R5cGVzLmFueS5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4g
dGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9wcm90b3R5cGVzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9wcm90b3R5cGVzLmFueS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTRm
NGY4NDMwZTVlYjM1ZmYwZWQ5Y2QxZDBjODA2NjIyNDNlYjFkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3By
b3RvdHlwZXMuYW55LmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKKy8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3Nl
cnRpb25zLmpzCisvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRl
ci5qcworCitsZXQgZW1wdHlNb2R1bGVCaW5hcnk7CitzZXR1cCgoKSA9PiB7CisgIGVtcHR5TW9k
dWxlQmluYXJ5ID0gbmV3IFdhc21Nb2R1bGVCdWlsZGVyKCkudG9CdWZmZXIoKTsKK30pOworCit0
ZXN0KCgpID0+IHsKKyAgY2xhc3MgX01vZHVsZSBleHRlbmRzIFdlYkFzc2VtYmx5Lk1vZHVsZSB7
fQorICBsZXQgbW9kdWxlID0gbmV3IF9Nb2R1bGUoZW1wdHlNb2R1bGVCaW5hcnkpOworICBhc3Nl
cnRfdHJ1ZShtb2R1bGUgaW5zdGFuY2VvZiBfTW9kdWxlLCAiX01vZHVsZSBpbnN0YW5jZW9mIF9N
b2R1bGUiKTsKKyAgYXNzZXJ0X3RydWUobW9kdWxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9k
dWxlLCAiX01vZHVsZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZSIpOworfSwgIl9Nb2R1
bGUiKTsKKwordGVzdCgoKSA9PiB7CisgIGNsYXNzIF9JbnN0YW5jZSBleHRlbmRzIFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlIHt9CisgIGxldCBpbnN0YW5jZSA9IG5ldyBfSW5zdGFuY2UobmV3IFdlYkFz
c2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUJpbmFyeSkpOworICBhc3NlcnRfdHJ1ZShpbnN0YW5j
ZSBpbnN0YW5jZW9mIF9JbnN0YW5jZSwgIl9JbnN0YW5jZSBpbnN0YW5jZW9mIF9JbnN0YW5jZSIp
OworICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNl
LCAiX0luc3RhbmNlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuSW5zdGFuY2UiKTsKK30sICJfSW5z
dGFuY2UiKTsKKwordGVzdCgoKSA9PiB7CisgIGNsYXNzIF9NZW1vcnkgZXh0ZW5kcyBXZWJBc3Nl
bWJseS5NZW1vcnkge30KKyAgbGV0IG1lbW9yeSA9IG5ldyBfTWVtb3J5KHtpbml0aWFsOiAwLCBt
YXhpbXVtOiAxfSk7CisgIGFzc2VydF90cnVlKG1lbW9yeSBpbnN0YW5jZW9mIF9NZW1vcnksICJf
TWVtb3J5IGluc3RhbmNlb2YgX01lbW9yeSIpOworICBhc3NlcnRfdHJ1ZShtZW1vcnkgaW5zdGFu
Y2VvZiBXZWJBc3NlbWJseS5NZW1vcnksICJfTWVtb3J5IGluc3RhbmNlb2YgV2ViQXNzZW1ibHku
TWVtb3J5Iik7Cit9LCAiX01lbW9yeSIpOworCit0ZXN0KCgpID0+IHsKKyAgY2xhc3MgX1RhYmxl
IGV4dGVuZHMgV2ViQXNzZW1ibHkuVGFibGUge30KKyAgbGV0IHRhYmxlID0gbmV3IF9UYWJsZSh7
aW5pdGlhbDogMCwgZWxlbWVudDogImFueWZ1bmMifSk7CisgIGFzc2VydF90cnVlKHRhYmxlIGlu
c3RhbmNlb2YgX1RhYmxlLCAiX1RhYmxlIGluc3RhbmNlb2YgX1RhYmxlIik7CisgIGFzc2VydF90
cnVlKHRhYmxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuVGFibGUsICJfVGFibGUgaW5zdGFuY2Vv
ZiBXZWJBc3NlbWJseS5UYWJsZSIpOworfSwgIl9UYWJsZSIpOworCit0ZXN0KCgpID0+IHsKKyAg
Y2xhc3MgX0dsb2JhbCBleHRlbmRzIFdlYkFzc2VtYmx5Lkdsb2JhbCB7fQorICBsZXQgZ2xvYmFs
ID0gbmV3IF9HbG9iYWwoe3ZhbHVlOiAiaTMyIiwgbXV0YWJsZTogZmFsc2V9LCAwKTsKKyAgYXNz
ZXJ0X3RydWUoZ2xvYmFsIGluc3RhbmNlb2YgX0dsb2JhbCwgIl9HbG9iYWwgaW5zdGFuY2VvZiBf
R2xvYmFsIik7CisgIGFzc2VydF90cnVlKGdsb2JhbCBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkds
b2JhbCwgIl9HbG9iYWwgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5HbG9iYWwiKTsKK30sICJfR2xv
YmFsIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvcHJvdG90eXBlcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9wcm90
b3R5cGVzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwN2VjNTZmNjU1YWFk
MzZjYWQxMmE1ZTA2MzdmYzQxZTM2M2Y1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvcHJvdG90eXBlcy5h
bnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFTUyBfTW9kdWxlIAor
UEFTUyBfSW5zdGFuY2UgCitGQUlMIF9NZW1vcnkgYXNzZXJ0X3RydWU6IF9NZW1vcnkgaW5zdGFu
Y2VvZiBfTWVtb3J5IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIF9UYWJsZSBhc3NlcnRf
dHJ1ZTogX1RhYmxlIGluc3RhbmNlb2YgX1RhYmxlIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitG
QUlMIF9HbG9iYWwgYXNzZXJ0X3RydWU6IF9HbG9iYWwgaW5zdGFuY2VvZiBfR2xvYmFsIGV4cGVj
dGVkIHRydWUgZ290IGZhbHNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9wcm90b3R5cGVzLmFueS53b3JrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9wcm90b3R5cGVzLmFueS53b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2Iz
YTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3Byb3RvdHlwZXMuYW55
Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0t
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rv
ci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IDVjOWE2ZjEzZDkxZWJhMDk4
YWI1OWU4OTMxNDUyMjIzNzVlMWI2Y2MuLmU5ZTc3YTEzMmI3NmE0NzlhMjg5NWMxOGM2OWI0MDJi
ZTcxZmUzZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2Nv
bnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfVGFi
bGUoYWN0dWFsLCBleHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55LmpzIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3Rh
YmxlL2dldC1zZXQuYW55LmpzCmluZGV4IDRlMGE1ZjhjMTA0OGY0Yjc3MWMzOGZmMGFlZjk5MTBl
ZDM3YjI1YzIuLjJlMTYzNDZjNjQ3OWVjNTVlMTZhMzM0OWYxMmI2Y2E0YjZkYTdkNDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS9nZXQtc2V0LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKQEAgLTEs
NCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRv
dyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dh
c20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD1hc3NlcnRpb25zLmpzCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1y
ZWZ0eXBlcy50ZW50YXRpdmUuYW55LmpzCmluZGV4IGVkZmIzMzQ5OTFlMDRkMmNhYmZlZWI0NDI2
YWQwNTM3OTZjNjdlYzUuLjg1ZGNiZDFkMDA2NDNhMDIyZDA2NjUyNmI1YzAwODFjOWM2ZTBiYzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2dyb3ctcmVmdHlwZXMudGVudGF0aXZlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6
IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixq
c3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9YXNzZXJ0aW9ucy5qcwogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL3dhc20tY29uc3RhbnRzLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkv
d2FzbS1tb2R1bGUtYnVpbGRlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2dyb3cuYW55LmpzCmluZGV4IGY1NDNjYzYyMGJjYzRjY2MwZTcwNmQwZGNiOGU2OGFmNDIxMGEy
NGUuLjNiMmVlNWZhOGVmNjZkZDZhN2QwMmM1OTc2OWE0MTMwM2U2YTFjNzEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90
YWJsZS9ncm93LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0v
LyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3
b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PWFzc2VydGlvbnMuanMKIAogZnVuY3Rpb24g
bnVsbHMobikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2xlbmd0aC5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvbGVuZ3RoLmFu
eS5qcwppbmRleCBmNGUxMTQ4NDc5NzI5MDYxYTdmNDBlNjgzMTFhZGQ0M2UwYzUxYjFjLi5hOWVm
MDk1ZGVkNDQ1ODFkNDRkZWNlNTk1Nzc1NzdmYTZmZTI1NDFhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvbGVu
Z3RoLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvdGFibGUvbGVuZ3RoLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1F
VEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtl
cixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL3RhYmxlL3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMKaW5kZXggNzA4
YzE3YjNhY2FkZmRlMmM5YWJkYTMwMGMyZDU3ZTYxZjVhNzBjZS4uOGEwOWYyODMyYzFkNjQ1OTQx
ODJmYWU0NjUxYmM5YjA3YTUwOGQ0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL3RvU3RyaW5nLmFueS5qcwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvdGFibGUvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFs
PWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwK
IAogdGVzdCgoKSA9PiB7CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAiZWxlbWVudCI6ICJhbnlmdW5j
IiwgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdzNjLWltcG9ydC5s
b2cKaW5kZXggM2FiMmNkNzU5MjY1ZGZkZDE2MTkwYjFjYzk1YTQ0NzQ0NWRjZWRkYS4uYWNjMTAy
ODRhZDQzMGQwYjdhMTcyZmY1ZmExN2YzZWY5NTg3YzBkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS93M2MtaW1wb3J0LmxvZwpAQCAtMjEsNCArMjEsNSBAQCBMaXN0IG9mIGZpbGVzOgog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9p
bnN0YW5jZVRlc3RGYWN0b3J5LmpzCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2ludGVyZmFjZS5hbnkuanMKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvcHJvdG8tZnJvbS1jdG9yLXJl
YWxtLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvcHJvdG90eXBlcy5hbnkuanMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGVzdHMtb3B0aW9ucy5qc29uIGIvTGF5b3V0VGVzdHMvdGVzdHMt
b3B0aW9ucy5qc29uCmluZGV4IGI5ZWU0ZWVlNjBhOGM0NTBkYzFhZGE5OWI1NzI1ZjY5YzM2MGM3
NWMuLjQyZWVjYjY0ZDg3NDJmMTZiNDM5NTI0ZWFmMjI1YTMwYWMxZjBiZWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3Rlc3RzLW9wdGlvbnMuanNvbgorKysgYi9MYXlvdXRUZXN0cy90ZXN0cy1v
cHRpb25zLmpzb24KQEAgLTEyMjYsNiArMTIyNiw5IEBACiAgICAgImltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2Uvc2hhcmVkLXdvcmtlci9ldmVudHNvdXJjZS1jb25z
dHJ1Y3Rvci1ub24tc2FtZS1vcmlnaW4uaHRtIjogWwogICAgICAgICAic2xvdyIKICAgICBdLAor
ICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9lcnJv
ci1hZnRlci1yZXNwb25zZS5odG1sIjogWworICAgICAgICAic2xvdyIKKyAgICBdLAogICAgICJp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9oZWFkZXJzL2hlYWRlci12
YWx1ZXMtbm9ybWFsaXplLmh0bWwiOiBbCiAgICAgICAgICJzbG93IgogICAgIF0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400531</attachid>
            <date>2020-05-28 17:52:47 -0700</date>
            <delta_ts>2020-05-28 17:59:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200528175246.patch</filename>
            <type>text/plain</type>
            <size>2339060</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVk
LWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggMTYwMGNhMjJhZDQ2
MjA3YzExMTQ5N2U1YTBkM2QxMzRjOWE5NDA2Zi4uM2E1MjcxNjNhOTA1M2IxZjE3OGY5ZTk5NzFh
MjBhMWVmZTE1ZTRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQt
Y3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNl
c3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN25vbmUlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5
PSYjeDI3O25vbmUmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVj
dGl2ZSB3aXRoIGEgdmFsdWUgJ25vbmUnIHNob3VsZCBibG9jayByZW5kZXJpbmcgaW4gbmVzdGVk
IGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzogVGhlIElGcmFtZSBz
aG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0IHdhc24ndC4gUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2Vz
dG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVz
dGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggYmQ1YjMwODEz
NGJjNTY1NDY1NDAxNWFlYzhhZDQ0MTAxYjY4NDQ2Ny4uZGUzZjViMWFkNTgxZTQxNDU5OWY5OGRk
NTdjMGNiMmEwZDIzYWRlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMv
ZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0
ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgw
MS9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1h
bmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN3NlbGYlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9s
aWN5PSYjeDI3O3NlbGYmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRp
cmVjdGl2ZSB3aXRoIGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1v
cmlnaW4gbmVzdGVkIGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzog
VGhlIElGcmFtZSBzaG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0
IHdhc24ndC4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxm
LWFsbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFu
Y2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGNhMzUzYTg0NzAxN2FiYjY5YWE3ZTQ2OGM4NWVlNzk5YmYxM2IzMGYuLjE5ZWI5MWYzNzgyNWEy
NGM5NDcxNTJhNDAxYjY1NjM2NWU2MmZhMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUt
YW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAogCiAKLVBBU1MgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGgg
YSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQg
ZnJhbWVzLiAKK0ZBSUwgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2
YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJh
bWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGJsb2NrZWQuIEl0IHdhcy4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZp
Z2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24v
amF2YXNjcmlwdC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CmluZGV4
IGExYmMzYjY0NDJlNmY1ZjliNmFjYzU5ZWQ5NTIyZDQ3NTMwOTk2NGIuLjhiMTM3ODkxNzkxZmU5
NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdh
dGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5o
ZXJpdHMtY3NwLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxIEBACiAKLUZBSUwgVmlvbGF0aW9uIHJl
cG9ydCBzdGF0dXMgT0suIGFzc2VydF90cnVlOiB2aW9sYXRlZC1kaXJlY3RpdmUgdmFsdWUgb2Yg
ICJkZWZhdWx0LXNyYyAnbm9uZSciIGRpZCBub3QgbWF0Y2ggZnJhbWUtc3JjLiBleHBlY3RlZCB0
cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L2ludGVncml0eS5zdWIuYW55LmpzCmluZGV4IGQ0ODdjMzczOGFjNDk4ZjRiOTM2ZTI2OWMwOTNj
YTJiYWQ1ODFjYjAuLjU2ZGJkNDkwOWY2YTQzZTQ4OWVlNWI2YzUwMDU0ZDJiNDRkMDcwOWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3V0aWxzLmpzCiAKIGZ1bmN0aW9uIGludGVncml0eShkZXNj
LCB1cmwsIGludGVncml0eSwgaW5pdFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CkBAIC0yMCw3
ICsyMCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIGludGVncml0eSwgaW5pdFJl
cXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CiAgICAgfSwgZGVzYyk7CiAgIH0gZWxzZSB7CiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwsIGZldGNoUmVxdWVzdEluaXQpKTsK
KyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1
cmwsIGZldGNoUmVxdWVzdEluaXQpKTsKICAgICB9LCBkZXNjKTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRp
b24uYW55LmpzCmluZGV4IDE4MGQzMzg2NTkwMjFmZWQzZDI5ZTA4Y2NlYTQxNWNjNTg1MmZlZDIu
LjM3YzgyMWNlNzNmMjVjNWUyYzVkMDJhNjg3ZDZhODAwNmVmNTA2MGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zdHJlYW0tc2FmZS1jcmVhdGlv
bi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9d29ya2VyCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcgogCiAvLyBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBzdHJl
YW0gY3JlYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8KIC8vIE9iamVjdC5wcm90
b3R5cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbAppbmRleCA3Y2MyMmEyOGMyMGMwMWYyYzYwMmI2Yjc5
ODE0ZmM2ODQ0MDU0MzA2Li4zZWI4OTNmNGU2NWMzYzBlNTU2NzY4OGJkMzA3MjViYzIxZWI0MGNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNCArMSw1IEBACiBzdWdnZXN0ZWRfcmV2aWV3
ZXJzOgogICAtIGpncmFoYW0KLSAgLSBnc25lZGRlcnMKLSAgLSBqdWdnbGlubWlrZQorICAtIEhl
eGNsZXMKKyAgLSBzdGVwaGVubWNncnVlcgorICAtIEx1a2VaaWVsaW5za2kKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMv
Y2FjZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LmtleQppbmRleCAxYTEyMWRmYWM5NTJkZmU4ODg2YjFiNWU0MWU3
YzczMTFkNWYwYjMyLi40NDVhYWUxYjlmYjk3NjBlMzkwZTdlNGQwNDc2YTgwOGM0ZTNmODBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CkBAIC0xLDMwICsxLDMwIEBACi0t
LS0tLUJFR0lOIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi1NSUlGSHpCSkJna3Foa2lHOXcw
QkJRMHdQREFiQmdrcWhraUc5dzBCQlF3d0RnUUltaW5IVHprWGhyc0NBZ2dBCi1NQjBHQ1dDR1NB
RmxBd1FCS2dRUVhWd0pjcVd6ZTZBM1ZZdUFTMEJQZ3dTQ0JOQ1J0dnJvQjZxcm9RbEY1OEhFCi01
U0pIRi9qUVJKUnhmMDUxbHJxK2pmVXhNN2tadWNOTitteVYyemlMb2dhNk9RTTU3OUQ4dnk4dHFr
ckxwbnNUCi1jWGtnSHV3dEJKRjQ3dzFZQVBHR0FSZTNLc3YvMkM5c1VWY1B2bW5WcnpTTVg4NkVz
ZXJmZnFNM3pmd1oySDNTCi1qeFREU3lJdkpVVSs0WGZ4cldlZ1RpUVFQTnFEeUxmTzVkQmZhdFQy
enRYQ211M0JGaXB1aEdGcHd3Q0ppcktyCi0xeGI2WFBFdVQwUEN6VE5wZVNVUnBYRktITURNa2Nq
T2tOQVV5Z0lFdytMZzdldFZmTGNzZ0J1ekVBM1JXd2YzCi1PTVkxbVRCSmx2eDZ6WnhkWDdhMFFt
eGVyVURrRFM5WVlBRUdTRmErRng2Y0dXNVB5ZWVmOXh0bEh4WkhpK3BtCi1UeEN3Y3ZKeVhxZUQ0
Z1dtM3MxZ3dPamk1V21Ydm8yRWlyY3hmU0trOFRVd2FweGZDWVFiT2pRSVBhSG5FR29hCi1DUWhT
RWdEWDV1ZndzWEo5L3BTUDZralcreStmMGduaEhWdUtKS3NPQm1qZzZpcXducUVodyt1TkZXS0ts
L01vCi1URlQ3Q3JheUpUdm8rOVVkUVRKVjlNQkFzTVVRUzdkK0hIOWtOT0FuL2hmbUV6ekdVS1ZU
WjB6SWQwZktIMTNwCi1Ubm9ZZ01ZYm0yVXJuME5YQkZPOFJ2elkzS3BLeVJoTWNPTEt4a1BWVWpL
VUE1QnVBdjZyY3ZNZmxJNkhuNXdVCi1xUE0rdUVDU2dkT25OZUltaTFGZitjVzhkVEdHUmIraWhh
K0VuQUJvWDN3UjVPdnpnQ1lIZUVOSmIzMkZVb1ZzCi1JRDJUNU1adFFOQXJraXMveFdaN0p5UGJt
c1FvMnd5aUZMYXNYOFdnaCs4TWdGeG9scHZqbFgzL1FkVFRKcUVjCi1yb2ZWR09QT21mb0hvM2VZ
TkpPbExiYUpUREllOE9ySzQ5UElldTFnbTh6cUIyV1lxbUYvM0FZeTRJQUl3VVl1Ci1yYlB3VUM5
SHljZVJQU1llUE05V2YxeE0ycHJvSzNubXA2YXBkSENSTmpiZDQ2ODlFTG1COTBiMmF3Nk5GaWFt
Ci0zdGFLUG1GTGIvdnQyWXhncU90YWdQclRsYzFRTEhCS3JzbnBnL0JoY0JqdXBxUktHRm1YQ0p6
aVBJYURLdkFzCi1qdGc0S0RvOGpOSXhtd1FBd0VWNCthSDBoaE11bXhhOHlhWG9DLzNHNkp4RDJz
ZG9yYU9wK3ZyVHpqVU1rSW9jCi14THFXbDhHSFZMRjA5ZlpKNFN0SmZJV0lPbW1waWNTeFcxdkRJ
Q2FadVUraVB3bE5PekY3c2VQUmtpeGJhckhyCi1pcVRsTEcvLytIdXEvbjlJUnhoem1TT3VyNjNX
TVhGUnkwc0tXNVcrdVE5eHNuVjhTZGp3Um1BR0x0blpIcTRZCi1OT0NRLyt5T1JsNHl4a1B2VjAx
SHlrQWw0Q1J0UEJHUis0WkM1TktocHloSmJ1NldjcXdpWHlBZWhVL2NQZ0wrCi1oOE53RW95UCtP
SHJ2RVlkeTRvY0JuSnEvNDM2V3d6ZldpczhuSUc0YlNsRDNEU0VnSkYvUVVtcTRpL0VVcS9BCi1E
NlNmemJGcFBHdFRqM0taNkQ4RFByd1dHNjhPQ0ZzcVJXOVlFdlVJSzhKVDI2NUJOM016STVpMC8r
azRDZEFnCi1hU2FpQzk3cWc3cUphVk05YjlFSHNjVVhSL2ZlRnh2TzVRa2trWTVDVFUzQnhiMHMx
STRSdzJNWW9BZE1HdGJBCi02bWR6bVJWWW9SdjlOTWR6TDZ6T1RvUFU2b09nNm1iakhnWlFnTmQ3
dzhHdFRGVytzZnNsTE9YWEM4ZXJ6YkhsCi1CeVFKR2NGR3RLVEJVRCs3VkhaaHB3TTdiUE9idHp5
QTJyMFViUzFReDBJem52dWJkRlZjWHlFN2RJalc3Y0FnCi1JYkJ6S2VpRVJ3cHUzck1xMmJZVlcz
REEzM1ZsclRmcGpYdWpoSHYxaVgxNWk2cXNXZDdPdFp3Nng3VGNjSDFaCi1qZG1oOVhCOXhEeWRu
c3MzdTlEd0dSRU1ZQzlUZFBaWS9udWk2bGdDampPaGFUYXVuTXVpZ0ZCTVdVQmtEbEliCi11anUr
QXR2K1BTQlQ5RG1UeVRRR2hQWlJJdz09Ci0tLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVkt
LS0tLQorLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0KK01JSUZIREJPQmdr
cWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSUF3c3VaN3lKeExzQ0FnZ0ENCitN
QXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDQ0tSc3dMWHNoOVBCSUlFeUtPdDQy
bUxlTDZoDQordVBCaDYzZG9Ib3FKeEI5NXB3cHRSNjNmcXAyUmZ2WlVVemZyV25JMmRubjB4UnRS
Y1BtZjUyQlI0c2xpSUpKeg0KK0sraDEwVk80YWlsRzRtTWVQKzJWUEhGdWZsUW41eGdTQzVWZDdq
ZWRWMFZleWNNcjBnZloxWGJjTXVWSXJyVzINCit3UVZNL0RiYjNBNk5IVDV5VUErWlR5YW0zU1lo
MFZyQkxwOEZRbi8yMnhpdm1qQzVqcVpiRnF2VWwrTm5CRjBIDQordTkrbWRDbmxZcWNxOXFUMWIy
aEMvVlZTZU95aUNaWFZFRThYbjd0ckxHbFNHSWpmZ05XbWRISllhZEw5SnVXWA0KKy81eEVVMy9N
WnRmajdEZmFyWXZKWU9OVjlwbkJFdXVjV1VqUkpnYlBnTXVxWjJzYjdJcC85L1haSHZnRmdWcnkN
CitMSUplc0xpRmxrOEVtZTdrREg4RVBueTRJNVJVdXVmdE9mWHo1c2VtQ09pUUtxc1Y1aktsQnlQ
eFlNZGgrQURWDQoramlvMHVFNTVMYjRNR2ZoeFd1emNXRC9Sb3Y2SXdJZzB1dVhXcEV6aktyMEp5
VmwvODR3Z25pNUhxMU85RWdlWQ0KKzA3VkJRT3VpRXptaGxtVkdsa3FpMS9rRkFaK1BrZE5VU043
SlBndm5WQS9WZ2ZpZ3RsY0lKOWFtcHNxYXUyeW0NCitLV2gzYlVLaVYwZUpWUEEzL3R2RWRCb29Y
bis4RFFidDQ0c3lEN1A1Mk1mbC9iUzJMYzV5Nm1QdHRWTy9tRHp1DQorWGc2Ym9ETnphWEIvSERV
RjJUZDhSYWNrdnFySFBLS1hYb0F6OXc4c3hZRkdlOEpWZXVPd2ZPNUhYNkpIeXNjZA0KK2NLcUVa
Tk1CTGp4ZWRwTDBFWk16cDcyYnNlMVhjdnZJdi9YQ2habmZLMllmaGZ4Y2wzUklpVFB4M3M2RmVl
SW8NCitUc3JOaVRGOGQvY09MSzExLzAyaEVVZG8ycjVqZzhQSG9abVhsMEE4bjZhYlhWY09uV2k1
TTF0RWpOZHV3S002DQorQVFVUlk3WjlBbFNzUVh3NnhqMno2MHppOCtJd3UzdGdENEhQN05xd1pS
c0Q5OWxhMDlIZGNJMGNTbWVhRU9URQ0KK0J5clZ5cW5PQnI4WkpWTUx1ZTR5TTcrQmRsR1VhYlRX
KzB1MHF5OVExQXh1ZVF6VW1FNFZGS3RmalJxSVVsQUENCis2SHJmRXNPZTdIUkxLeG5kY3RKN3VC
WEk1Z2h2M3pHZDB1Wm1SeWpYc0VqR3IySnFhWmExSGV4cmFCL0dIWEdEDQorOVBaVEpXUzFtTDhL
RTNvMWhTajF5VGdsaGZoSjdXZi9lcmZCR3pjdFVQS1FCa2twelZxWk1TNlkyQUlIVEI1Rw0KK2Iy
d294L2x3dkZBMmNsb2RvVDN0YmVEbWhOSHhJdUdsT25ZdGNQaElMRDdNUmVETnVsMVI5SEwvU3NX
N0FCNisNCitxNlI1NFBzU2NoTmdGaExTZHowcTZhelhVbGs2bWNGNUJnUk92Z3lvYSs3R3YwVWxi
U1FiVXVWdUxEMGszU01VDQorRG1wci93OU9tcVVzT2N6WWxuUFdvdmgrR2JWaHplK2VGVE5JR1Yv
d1ZOTkpRUkMxUlVOckMvZThhZjRjcC8vcg0KKzZqaVE1ZU5mOHJWQjhWTWVNWFJVSHhQd1JYdEZW
RUN1dVRkTWRQbjRVMlRISm8rNDVaMGJWRzl5dFo2Q1VQMG4NCis1NkRXSDYvZEtlSWl2RUZ6L2JZ
NG9DWm1zSWZrak5lbzU0NUdSZmhGTk5HUmdyZGpDZXZyMHBKdFk0aDVWakkyDQoraVBVTDg1UjB4
emU4b0NUMGEvR0hZNlh2cGJuUno1cXJ5MWMyRG9SM0llRFFrcTl5UWpBN1dhdXRUYnA4VXpDZA0K
KzFTN1JYSWtyelBDZzRYQklwUXU1aHN3S0M3Vy9VaUg3SDkycHR5bDJncmlDN0UwSk9mWi9Ndmd4
WnBGaTh1cGUNCit5WThqMUdESWd3cHRmOVFHTGttL2Vwdi9RTTZMMjV3R0VFOTE2elErM3JrVVhU
WFQyb1BJaThqYVFSc2xvWGNpDQorTkkzbDFGRkVRak40VjRpdDNHMnRWbmVnY0FRZFg5bnNaOTdw
QXErTk9LMjhPaU45a0ROOW9sVitBMExNZTc1aQ0KK0JJQi96UlVmSWVnL1RTYllpRlYyY1E9PQ0K
Ky0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQu
cGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy9jYWNlcnQucGVtCmluZGV4IGUxYjVhZGQ1NGU3OTdkYjFjNmMxZDNlZGE5NjFhZjNlNTRi
YzdhNzcuLmVlYmE1MjhkMjZkMzU3MzIwYmE0MmY1MTZmMTdlMzI0NDdhODNhZDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvY2FjZXJ0LnBlbQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KQEAgLTEsMTI1ICsxLDM0NCBAQAotLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlXNXpDQ0ZjK2dBd0lCQWdJREJiRkhNQTBHQ1NxR1NJ
YjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVG
dzB4T1RFd01UUXhNelE1TWpsYUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQjB4R3pBWkJnTlZCQU1N
RW5kbFlpMXdiR0YwWm05eWJTMTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCi1CUUFEZ2dF
UEFEQ0NBUW9DZ2dFQkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2ZqeDJOV2svV0ZFTG9j
Ci1EblV2MnpScDVFMjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09uNE9pL0tOSm5ERTJY
ZVNqUUgvYXdQCi1NaTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjErV1VTYWViSncrOHdI
TG9KVVdJYmVVN0tMVmdYc2NmCi1oTEdCUUI2cC91UWV3em1tYjFiVWJpekYzR25iRnhTYkZna0sz
VHRmOU5wSHFxUnRnVUFhWnRQOWVkYS9rUlA3Ci1qMGlJUW5jQ3lod1VNY0VnLzlZc0tlTE9TVUd6
TGpVU0NKcU9JdlVMblF3UkJZaklFd3VpMDBxZENocVY4Y2h6Ci1LYmszMmRqNnZMRnMzdDdQK3hv
ai9KalpYWmlXUUZUekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdHCi1BMVVkRXdRRk1B
TUJBZjh3SFFZRFZSME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpjYU1FY0dBMVVkCi1J
d1JBTUQ2QUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1Sc3dHUVlEVlFRRERC
SjNaV0l0Ci1jR3hoZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVCQU1DQWdRd2dnb0ZC
Z05WSFI0RWdnbjhNSUlKCi0rS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElW
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wTUJlQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2haM2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1CaUNGbmQzZHpJdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVk
R1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzCi1kekl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5Ci1iUzUwWlhOME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlD
R25kM2R6SXVkM2QzCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVkM2QzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wCi1NQnlDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUIyQ0czZDNkekV1ZDNkM01TNTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNk
M2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCi1kM2QzTWk1M2QzY3lMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkREFmZ2gxM2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWdnaDUz
Ci1kM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNUzUzZDNj
dWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6Ci1kREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdJSUllZDNkM01pNTNkM2N1Ci1ibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNHQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdJWUlmZDNk
M01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzCi1kM2N4TG5kM2R6
RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01pNXViM1F0Ci1k
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNH
eGhkR1p2Ci1jbTB1ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1NDCi1Jbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdKWUlqZDNkM01pNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdKWUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdK
WUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3Ci1LSUlt
ZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tJSW1k
M2QzCi1Mbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUlu
ZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNt
Q0ozZDNkekl1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QXBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUw
WlhOME1DdUNLWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3Ci1iR0YwWm05
eWJTNTBaWE4wTUMyQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
Ci1ZWFJtYjNKdExuUmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R5NTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNRd01JSXVkM2Qz
TVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQXdnaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4Ci1MbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5Ci1P
R0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1Ci1kM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRiaTB0YkhabExUWnNZ
V1F1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXpnakY0
YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTURPQ01YZDNkeTU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0WVM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0Ci1iamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05JSXllRzR0Ci1MVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3Ci1OSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0Ci1MblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25G
b2RqSTRZUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3T0lJMmVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyCi1iR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTURpQ05uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0
WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZV1F1Ci1lRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRHlD
Ci1Pbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNR
dGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd1I0SkZlRzR0TFc0NGFqWmtjelV6Ci1iSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1MFpYTjBNQk1HQTFV
ZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDCi1FWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzCi1a
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Qz
ZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpkM2QzCi1MbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlhZDNkM01p
NTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCi1MbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliCi1kM2Qz
TVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZ
WFJtCi1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUli
ZDNkM01pNTNkM2N4Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NI
bmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekV1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0Ci1kMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
Ci1jM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpF
dWQzZDNNUzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0Ci1iaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOMGdp
TjNkM2N5TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpkM2QzCi1N
UzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5t
eGhaQzUzCi1kM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lXUXVk
M2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXRObXho
WkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNj
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluCi1kM2QzTWk1NGJpMHRiSFpsTFRac1lX
UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1Ci1MUzFzZG1VdE5teGha
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N5
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0
YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNk
M2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJs
YzNTQ0xuZDNkekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhS
bWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZp
Ci1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R6SXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGha
QzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCi1MWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ci1ibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCi1N
amhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5Ci1PR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTW5odUxTMXVP
R28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdqSjNkM2N5TG5odUxTMXVPR28yCi1aSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWVH
NHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0Ci1iaTB0YkhabExUWnNZ
V1F1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0Ci1MblJs
YzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuaHVMUzFzCi1kbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVho
dUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1na1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0Ci1ZUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlxMXZBCi14amM4aWoz
NGk0Yis4aW5WQlZ3VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6K2RiMzZVNll3SGFr
Ci1JM0hZaGlwUE1CMVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQL1I1azl2dDhBRW0w
Wm1FV2tOWXRMCi1vcGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4VnErZnEvT3p3K1lR
YlJiVTFLbEhDTmF5aXN2UWE0Ci1UTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFhNlJuSXdvOHp2Q3Fr
MFpSUEF4ZXVsZEFlL3UxUHp0ZVhSekVIVEFFCi1ETVZMTXdNNzUyYkxGdWZ2MUdSQ1pOSEVMWkt5
aFVvRnJQMzBBcUU3cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCi11NS90SGVmUEtEN2JtL1k9Ci0t
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0NCitN
SUpBR3pDQ1B3T2dBd0lCQWdJREMvT3VNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJB
TU1FbmRsDQorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5TURJNU5EZGFGdzB6
TURBeU1UVXlNREk1TkRkYQ0KK01CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBabTl5YlMxMFpY
TjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUINCitCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMOTlhV2sz
ZFJpWXhJak5IbHhMelpMTXFhZmEvd0FyRzVROVQyRUx4YjByDQorT2dEa1ZVTXBpVkJtQTRyV3BH
SXU4UmdlL3RIb2EzRk03NnZreHl1M0I2L3NJZlNQV3BuVTdZTi9QUTk0YmpCNA0KK1dUVUZRUjBM
Qm5LVUdiWTFYVnhlNUFPMWQxZlkzdEFtejNOSEE0NmlmV3piVnFSUFpTelhwdU5nNWV0Qm1mSjIN
CitmWjZyZVl0Z1M5VklxdVVvUFNBRk1LTXQzSjQ2YkQ2VlA4UVBjVkZ6WUlMMERyblJscWQxb29N
RkZCTWl6WHE2DQorOVpTbFkyU1hBK001N2E0bExtdlVUNTFmNVcvQnRCN3VjS2JhT254ZVpaTFlB
TDkrMCtycDkyMkVlMkRyb0l0Rg0KK01na0FRUWN2Y3VEb3RXUzg2VmdTRjdkUFRqUTEyRS83ZUgr
OW9QUUZTeHNDQXdFQUFhT0NQV0l3Z2oxZU1Bd0cNCitBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9C
QllFRlBhNTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc01FY0dBMVVkDQorSXdSQU1ENkFGUGE1MmhZ
SEJidHZ5V013eG1kQXl3UFRIcERzb1NHa0h6QWRNUnN3R1FZRFZRUUREQkozWldJdA0KK2NHeGhk
R1p2Y20wdGRHVnpkSE9DQXd2enJqQUxCZ05WSFE4RUJBTUNBZ1F3Z2g5akJnTlZIUjRFZ2g5YU1J
SWYNCitWcUNDSDFJd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYjNBeUxuZGxZaTF3
YkdGMFptOXliUzUwDQorWlhOME1CZUNGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWGdo
VnZjRGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3RjRJVmIzQXhMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmVDRlc5d015NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVhnaFZ2Y0RZdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwDQorWm05eWJTNTBaWE4w
TUJlQ0ZXOXdOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEUXVkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzUXdGNElWYjNBNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CZUNGWGQzZHk1
M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGczTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdPREF1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTVOQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NERTJMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
QmlDRm05d05EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBeE55NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNG
bTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5TXk1M1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZERBWWdoWnZjREk0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNVE11
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpOaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNERXhMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d056a3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMg0KK01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QVlnaFp2Y0RRNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TVRrdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdo
WnZjRFEyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1F3R0lJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEWTJM
bmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmlDRm5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBeU5pNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZM0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpNdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNR
d0dJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRFl5TG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJ
V2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESXlMbmRsWWkxd2JHRjBabTl5
YlM1MA0KK1pYTjBNQmlDRm05d01qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXZDNkM01p
NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVlnaFp2Y0RFNExuZGxZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TnpRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TVM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE16TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4w
TUJpQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXoNCitNQzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFZZ2hadmNETTVMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQor
Rm05d05USXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME15NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWeg0KK2REQVlnaFp2Y0RnMUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TXpR
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0dJSVdiM0F5TVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBWWdoWnZjRGN4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVEF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTROQzUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpk
REFZZ2hadmNETXhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05UUXUNCitkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2
DQorY0RRMExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRVdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRdw0KK0dJSVdiM0F6TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGMy
TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3R0lJV2IzQTRNUzUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNEZzRMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qQXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMz
UXdHSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVeExuZGwNCitZaTF3
YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdi
M0ExDQorTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREkzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUJpQw0KK0ZtOXdNVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTNO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTNMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNQmlDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBNU15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhO
ME1CaUNGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0ExTXk1M1pXSXQNCitj
R3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREk1TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0Zt
OXdNalV1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFZZ2hadg0KK2NEazNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05E
RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek1pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVlnaFp2Y0Rjd0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TmpBdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TWk1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6
ZERBWWdoWnZjRGM0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPRGt1ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXhNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
dmNEYzNMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05Ua3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdHSUlXYjNBeA0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZ
MUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TmpndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0dJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRGd5TG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOaTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRM
blJsYzNRd0c0SVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWJnaGx2Y0RrdWJt
OTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5d05DNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3DQorRzRJWmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYmdo
bDNkM2N1ZDNkM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CdUNHVzl3TWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBeExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFiZ2hsM2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wDQorTUJ1Q0dXOXdOUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F6TG01dmRDMTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemREQWNnaHB2Y0RJM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hw
dmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFExTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNESTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RGd6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RNekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTJMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZERBY2docDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RZeQ0K
K0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTRMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RRekxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RrMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGt4DQorTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dQ0KK2RHVnpkREFjZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RFk1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNeUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRGs0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RF
NUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzINCitMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdW
emREQWNnaHB2Y0RjNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3lMbmQz
ZHk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcyTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjRFUxTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2do
cHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrMExtNXZkQzEzDQor
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBYw0KK2docHZjRE13TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNj
eExuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTFMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkwDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RJd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEVXhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF4TG01dmRDMTMNCitaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
DQorZ2hwdmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGN5TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJeUxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RZM0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3dMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2
Y0RNeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXpMbTV2ZEMxM1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RNMQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTJM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFl6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNExtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEVTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMExtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGN3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNERTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRFkxTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGczTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemREQWNnaHB2Y0RjNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3UN
CitkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd5TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwM2QzY3VkM2QzTVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
Y2docHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJMA0KK0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHUNCitkR1Z6ZERBY2docHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
UTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREUzDQorTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkREFjZ2hwdmNEZzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFUzTG01
dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
ZGdodDNkM2N5TG5kM2R6RXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdIWUliZDNkM01TNTNk
M2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWRnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxj
M1F3SDRJZGQzZDNMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJSUllZDNkMw0K
K01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXho
WkM1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3DQorSUlJZWQzZDNMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ0NDSG5kM2R5NTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWhnaDkzZDNjeExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOME1DR0NIM2Qz
ZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lZSWZkM2QzDQorTWk1M2Qz
Y3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N5TG5kM2R6SXVibTkwTFhk
bA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNRd0pJSWllRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWtnaUozDQorZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1dDSTNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNXQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGwNCitZaTF3YkdGMFptOXli
UzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNpQw0KK0puZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQ2lDSm5odUxTMXMNCitkbVV0Tm14aFpDNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DbUNKM2QzZHpFdWVHNHRMV3gyDQorWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBcGdpZDNkM2N5TG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWJtOTANCitMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNQ21DSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemREQXJnaWw0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXRnaXQ0YmkwdGJIWmxMVFpzWVdRdWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQytDTFhodUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBdmdpMTRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdM
NEl0ZDNkM0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXcNCitiR0YwWm05
eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
DQorTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1ZDNkM01TNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0YmpocU5tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1M2QzY3gNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRENDTG5odUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzDQorZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd01ZSXZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3TTRJeGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkNCitPR0V1
ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6Z2pGM2QzY3VlRzR0TFc0NGFqWmtj
elV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDTW5k
M2R6RXVlRzR0TFc0NA0KK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNRFNDTW5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDDQorTW5kM2R6SXVlRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNRFNDTW5o
dUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjANCita
bTl5YlM1MFpYTjBNRGlDTm5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2Rt
VXRObXhoDQorWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBNGdqWjRiaTB0YkhabExUWnNZV1F1
ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdQSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0DQorYmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1FT0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTEN
CitNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUVlQ1JYaHVMUzF1T0dv
MlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFj
REFUQ0NIVnNHQTFVZEVRU0NIVkl3Z2gxT2doRjMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0F5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEa3VkMlZpDQorTFhCc1lYUm1iM0p0TG5S
bGMzU0NGVzl3Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXhMbmRsWWkxdw0KK2JHRjBa
bTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOaTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlWYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRFV1
ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDRlc5d05DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVZiM0E0TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3T0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPREF1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d09UUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TVRZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d01UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpJdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qTXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdNVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016WXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TVRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOemt1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TkRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVGt1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d05ESXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRZdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09U
Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpZdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qWXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3TmpjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOek11
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMz
U0NGbTl3TmpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDRm05d05UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpJdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0ZtOXdOelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09URXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdO
amt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016QXVkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NGbTl3TXprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEl1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d05ETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RVdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d01qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EUXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdOVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05Ea3VkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TkRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORFV1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d016VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpZ
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d09ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0RndWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdNakF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UVXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdPRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UVXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TWpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVEl1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TkRjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVFl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09UTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRjdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05U
TXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWprdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdNalV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09ETXVkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3T1RjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREV1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TnpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakF1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm05d09USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGt1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d01UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpjdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01UVXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3TmpVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOamd1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3T0RJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0dXOXdOaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdPQzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dX
OXdPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOQzV1YjNRdA0KK2QyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDMN
CitkeTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsDQorYzNTQ0dXOXdNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDNk
eTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0dXOXdOUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dXOXdNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
amN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF3DQorTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NH
bTl3T1RZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNExtNXZkQzEzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d016TXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2QzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdOakl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREU0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT0M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TkRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNQ0KK0xt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk1DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmwNCitjM1NDR205d09UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3pM
bTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTVNUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOREl1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
REkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0EyT1M1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBn
aHB2Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU9DNXViM1F0ZDJWaQ0K
K0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEYzINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNeTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdOemt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocDNkM2N5TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0Tmk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpjdWJtOTANCitMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMU5T
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhkbFlpMXdiR0YwWm05
eQ0KK2JTNTBaWE4wZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTFO
QzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRE0wDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0F6TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbmQzZHpFdWQzZDNMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlhYjNBMk5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01qQXVibTkwDQorTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYQ0KK2IzQTBNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEl1Ym05MExY
ZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0EzTWk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpJdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBM05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d05q
Y3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3dMbTV2ZEMxM1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJYWIzQTROQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
ekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWENCitiM0F5TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TXpVdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFMkxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxj
M1NDR205d016Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTQNCitMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0dtOXdNVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt3TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TVRFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFMUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk5TNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d05UQXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNRdGQyVmkNCitMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNk
M2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0TWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdWQzZDNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBeU1TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056RXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTRPQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNalF1Ym05MExYZGxZaTF3YkdGMFptOXkNCiti
UzUwWlhOMGdocHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT1M1dWIz
UXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RRMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d016a3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIz
QXhOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOelV1Ym05MA0KK0xYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWEN
CitiM0ExTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWJtOTBMWGRsWWkx
d2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RneExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01pNTNkM2N4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2h0M2QzY3hMbmQzZHpJ
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaDEzZDNj
dWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUzZDNjdQ0KK2JtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0huZDNkekV1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUll
ZDNkM0xuZDNkekV1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDMNCitNUzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1ND
SDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxcw0KK2Rt
VXRObXhoWkM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1
dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NJM2QzZHpFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeQ0KK0xuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDMNCitkekl1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBa
WE4wZ2laM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0K
K2RJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SjNkM2R6RXUNCitlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SW5kM2QzTWk1NGJpMHRiSFpsDQorTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2lkNGJpMHRiSFpsTFRac1lXUXVkM2QzTVM1dQ0KK2IzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NKM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6
ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtDQorYjNKdExu
UmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHUNCitkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNk
M0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpJdWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5kM2R6RXVl
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNT
Q0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1ZDJWaUxY
QnNZWFJtYjNKdExuUmwNCitjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2pGM2QzY3VlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjANCitabTl5YlM1MFpY
TjBnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNN
UzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekl1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXUNCitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKNGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVlRzR0TFd4MlpTMDJi
R0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJpMHRiSFpsTFRac1lXUXUNCitlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFz
DQorZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1
TFMxc2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NRWGh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Seg0KK05UTnNkM2RyY25Gb2Rq
STRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnMNCitZWFJt
YjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUllVHUySXlUcEFQYlVZQ3hmUjNU
NkJxDQorZDVZbW8zVEc4cG5acnNZcXpIdENJdkdvTzgxSkVJSmRoUHlpdGJKZC91c2J0a0VUaExo
YWZlUWk5Um1pQ1pZdg0KK0NVZXgwSWRVeEhhVzM2Wng0a0l6TkxmMDJ6Y3h3Qkp0QUZwZi95QXNR
ZEtJSTBaRk5HUjFXa1JxbmF0Zno1dHkNCitTSy9TNTkzTVk5c083eGR4c1BjUW5KN1dQYVhLNjYw
eU8xR290Ymg0YlJ3cGRMOHVKdkZWcGU2K1VBT1M2NE1rDQorakt5Rkl5M1o5SGxiK0hQVjB3RkJT
ODlXcXFFZkFvTGticmYwS0Vqb0JydklsSVhmOC90TG9nVFRVU2JaZDY2Nw0KK3FmODhTWC8wdFlW
TUVZQzYvSVVpeWlnQXgvaE1pdVdDRENTMTBtV0x3WWZQczJKd0RRUmxTSW92ZU5CcCt3Zz0NCist
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCBiNjJhZjIwOGMzNGNiMzE2N2FlNjQwMzhj
ZGZmNjk2ZjA0Nzg5M2ViLi5jZmFjY2NlNDIzZWRlZGRiODkwZDRhODA2ODNjNzQ3NjkyZTIzZmUw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0
LmtleQpAQCAtMSwyOCArMSwyOCBAQAotLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlF
dmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1NrQWdFQUFvSUJBUUNyWlhWWG1PUGxx
by8rCi0yeGoxNVBnY1pHSEdvL2JvZmlRUTNnbDZKTDFWWDFHcHRZSU5oVHEyc1VoZk44dENiK2NI
eXphcE85b1Vtd3F3Ci1wNVVwN3RKNElwN3VFMS93d1N4VmN2Q2F3RzUvUE41aUQ3SDJ3c21FcHBI
WE9jM0xsMDg1L2d6ZXMrMStObitxCi1BUm1wMWJGL3ZqcGxENlZkSDJyQlczc0ozREFvQmFvWGxB
TWZlUkFGRHBhcWErOWx4TXJNNVdrVUhuZFErdUVNCi02a1p5ZXZoeXAwMlhEUDB2THdOQ3RQTEdC
MGVtQUFmQzd4cHdSR1ZHU3RFc1VoZi9tYzl5Tk5hS2dxQktJMG5vCi1vVm51VTNSR2RLSFAxOHZj
anRCU1YwbFlnamZnOWEwN09CdTFoZ1FmZmhvZmkyQnlkZmFDcEJBTXpGaGx1MXV5Ci1zNmFoVmtK
cEFnTUJBQUVDZ2dFQWZtdnp4WTBNYkZjR3AyRk1ZL05qM3UxY0FYem5uazJNcExSaUlTb0FUWHhs
Ci1hOXhwOVRjVU83VkFRSnVTM1lwVXlyYmx0cVpqRVZmYTVycDFsOXlFZWdCdllnUUFmRURBUnJi
bEtnQk9nS09SCi1GSnVuRlBCUVcvdlJEd09mL0UrN0xIZHJYc2t3b0N2cXRxYmhHeGg0T0ZWRUZV
OFpGanNhTDAwZTBBTU5zalpsCi0wT3NFT05sSUg0bkNhN0U2RFRhc0h4YzFWa0hRcjN1dkJsNS80
SGZPYzA1dHIrWktsTVlYekFQV2tMMHNDMjE2Ci1EcXk0QXhKME0wYXg4QllFWnVvMGdxUW1NQW9u
SlRrRW5weW9ENHo4OVM4Nzd2RnA4dzFWUGJHWWtWNDh5alYvCi1JN2ZRNllqdDN5ZythcytzNGFy
R0VzVUIwbCtYQXBCWVlZL0orcWNZVVFLQmdRRGVkN0RPTUpVYzNrUFRGRWNOCi1wL0ViU2g5VFh4
Uy83NGNJeUdpZDlJRWlSRUpZeFl2OGt6MEtwbEd1Sm9sSVEzL0lrOVJhYzZCM1R1NFdrVzBnCi1U
UGJOdW5ZRXN5ZFpCQW5hUTRlQVZkT2Z2UlE2VjNlQloydkVyc0hKUkZhajVjT2Nlc1VYeEJaSTZt
MnRRRVN4Ci1kQldGRE5HOWt6dHIwSG1hTDZQdXo0elpJd0tCZ1FERk94ZlI3RmNwR2R3NjF6aVNz
Wm10dmtmNmVwa0czK291Ci11aFk1MEowVXJUYks3VHVpbWtvUncvWEhlQmU0ZGIrZWpPT3VMRDlR
RS95WHZtdEVXdXlVVFRZT1Z2WitIdU5qCi1ScDNrZGkxR3VXWG42Z1J2ZGxrZjlYd1c3akhtZ2tw
YkE1QSt1RFhzM0VZWWExOEx4UE5mTVN2aHlIZGtGblVHCi1hVHp5WU5wZEF3S0JnR3YvUU5hbjRR
dDFud2x1VTV2K2hsNlFHaXI0QW5PMnpSL25ZbG9qNHppR1dJc053NHBtCi0xQUJDZzI1K2lMQ0xE
QktNS1UrTHlEK0RFclBqLzB6cDcvb3BaYmVjWFNLcWdqbnlCR3E1djVWUlRldVFvSlF5Ci1aNi9B
Z3BTNVZ6SVRqV1YrZUFXMGpIanpUVEVJL1JBRVlab0lnaDE4eHlEc3dNdW9DdllZemJCdkFvR0JB
TU0yCi1JL053K3l3QkhvdFdyZlh6dHVuU3BpZHk1TGQ3Tkt5ZkhwU0d1SkxZaHB6L2hjRUErVUx3
TS9vRUVXWlBsU04yCi15M3QrN0FOMFpOUkVjcU1yWTNHOW9qMDdNYW5QSkwwRURnOHNNTkFKZktX
NGFEOXlZZkJSNTBwQzVEMEV4RmVsCi1CVVl1eWFEd3ZLZzZ6YzQyVjdQbVZVcWFRaUZjWU9QQmtj
Tk12WlRGQW9HQkFMQnRkdDBpSXZ0Qm9wcCtJUWFWCi16Wk1BNVpRSVE1bjV2MDcxTEthMXM3YXIz
K2hJb0RSc1piTTdYa1VJQTh6UWxyd0ZSaGJVNVlGTmNicG9vUVNtCi03ajQrZkl1ZGNweGo5dEFN
R0FiNXlnODlrMURqVHk3RlVXTDllbEdJZ3ZKTXFnRjZJUTUzK3ZSOHh3R0R5UUxCCi1zUDVtaXpG
MXdpNDdEWVBKUWNEUkN6VSsKLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4g
UFJJVkFURSBLRVktLS0tLQ0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dn
U2pBZ0VBQW9JQkFRQy9mdVlxYkpMWUtvVHcNCitGemF1blNKMzYybXBBN0JvV09JTWlURmtHSzF0
WkFncHoycnZ6QkQ1c3pOTUlySGFKRi9ETWZIeGUyQ1hzbmtEDQorWFdiYzBjdUQ3Tk1NNGRLYmZS
YmpudHhZM1d5SmQ1aWpETEo4YnRDL1BTd1pvY21Id2dwT3FCNDBxRy9hTFFwTg0KK3dMUnhCa2xo
NmhyQVpNSFRzSS9BTzRJQktNVG9NWXNIUzdYN1loZE1LZzNlcTg3Y2dHaS9xeDFGNHFTaUFXb0YN
CiszMEhtL2ZpVUx1S2ZwQUZWZmV2QlBUNWhVS0RxTnlyVnh4aE03UFVOT1cxVTB3UXhSdGdTb0Fx
Q1kyMkNwSTdXDQorZ2tOaG14MlVtckFkTlFMNHUxVi9qUGNoNG1VMlFxbUxXQkdRb0h3b1JkaWJp
SldhSnVuOVJ3ZURjSXFZR3d0Tw0KK2hJd0d0K0xqQWdNQkFBRUNnZ0VBY0Rlb0g3SlNkelNyaEpy
RjQ1dVhxRmlmS1hsTTlra241cHE3QStKbU54V0kNCitweCt5bGVXckNQalhsY1U3SGc5MHdzbFE4
K2NPR3JkdXJPY2VNVWNNRVRwR0QyV0NhclhxSk9kaVR2MHE3bi9VDQorUmJCYUpBczRidWtsSDd3
c2drN1doWE9GaCt3dzU5Uy9GZ05ZZW1kcHQyUmQydUx3cHVIdnk0SFQxR1FVeDgvQw0KKzlxaE51
dTkyQk5FdzVZWFpqV2xVWHNYNC9NT2hRczZpYUVmZUdwaG8yMHVoVVJSWmxHNWt2L3pDcTl5Q1gr
c2ENCitPNUM1MDR6a1pnWG9qQ3ZlYWhPWGVXTHJoTm5ScDFkdDNESFZwM2NGMmZ5UDBJUmIrK3l3
MFpZZHZjYnljODJzDQorQkhlbmpDM3ZCd25nN2FBOTVRZWh5ZUxRTzNQVlZqOFFQbmRWQjcyYVFR
S0JnUUQ3MXlZMnRCeVh6akhnRFJhRw0KK2RERFlRdGd5VmZ6NGNYK2tTK0JZV1d6dUNRbzkvVW9i
d3VjVVRtVXoxUmMwNC9xdVNrL3A2M2FnMXZicXh5b0cNCitwVnlWMlA2SVk1K0YzcEVrbFd0Zlht
eTdBbnVrOGpVZ1hqZ1MyKzc4Z3hQenk0OU53ZVROVFVjbExBWkpTRmtMDQorR0FCNm9YVzB0YWVW
UnNDWjlnZ3B2MFVTb1FLQmdRRENxSmgrTW10cDA0emNqUm0wZ1VabWY4RXJGWFlqNnVxcg0KK3JW
c0dRTG42d1JSY2M4SnJOQTRYYmxxN3JqZjdCNUQyRHM4SXBvUGVGb0I4R2ErUEdlNE1RSlpkRzBV
bXZRRmcNCitSWHBBaUI2TzduNCs4b2FYU09tRnBGTDVKZDAvQ2RHdXRXRzQ0Q3dKb3JiQ0JZcVY4
ZklGNVVhWUZHaWdKRVVUDQorV3JjUFEwUExBd0tCZ0hSWG5HdkJJVVJ3R1ZKc09XKzcxYVRTbkpZ
RWEyMUs0YkRBN005ajRKTEcwbGg0M3ZlYw0KK1BxeCsydm5yQTJHSHdKTXIrV2NUUkNaaHFJZ2xv
aUNYM0FITjBTaW8vVlVXME82WnFKVFNSbURPY05odW5HUnINCitvblB6N3AvdzNoTE9nMUZrdFpL
eWxKOXppeVBuckZzWHA0RC9maVVSbG0yNzFkWktkdEx5YmJLQkFvR0FTUkV2DQorN0c3UWt2Q3R0
enZmb2puRVMwVTVKUXJ4Ulpvd2JEQ3VNaktwbk01TTdrY2xlMGdXNGdTeVdqQ1RJczg4UXFCYw0K
K1prcmF4TXA5Z0JmRUpscjlWK3dHaFB4dmdKTUJxVGxySWozMStvRGJNcFdtbjdMbXRSdHhhY1Fr
d0R6WFVGVVYNCitVV2dVSDZuTUlCZ2taUlJrWElJcmRYcHpxMmp4NU1ud1hQSkt5REVDZ1lFQTA5
UDJad2VCSkU5YTlvb0tHV29pDQorMmlSVjRHQWVJWkdVWHkxc1QvRFdNNmVVc3B1RnNJRTFkYWsw
SjVWVktkSWNlN0NWM0lwREU4UFo1UDBpVWZpZQ0KK2dMMTcwS3hmSlJrT2ZJNnB4NHdCV0dlL1JN
MG5JbldKSUlSNW9HY2lmekJ4N3RWUXFLYnpOY2xMVWtNT2hoZzcNCitlcFpkUEpKdVpTZ3JpeGFQ
bzd5bXo0MD0NCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxh
dGZvcm0udGVzdC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQppbmRleCA1OTU5MzE2YmI1YjQ4
MjVlNjQwYmIxZjdjYWIwOGJjOWY0MDVhNjNhLi42OGE5Yjk2ZjNlZTlkOWNkYTU3ZGFlYjY3OTZi
NWI2NzRkNzVhYzQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1w
bGF0Zm9ybS50ZXN0LnBlbQpAQCAtMSwxMzMgKzEsMjM5IEBACi1DZXJ0aWZpY2F0ZToKLSAgICBE
YXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDM3
MzA2NCAoMHg1YjE0OCkKLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5j
cnlwdGlvbgotICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cwotICAgICAgICBW
YWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDE0IDEzOjQ5OjI5IDIwMTkgR01U
Ci0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTEgMTM6NDk6MjkgMjAyOSBHTVQKLSAgICAg
ICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QKLSAgICAgICAgU3ViamVjdCBQdWJsaWMg
S2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlv
bgotICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKLSAgICAgICAgICAgICAg
ICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDphYjo2NTo3NTo1Nzo5ODplMzplNTph
YTo4ZjpmZTpkYjoxODpmNTplNDoKLSAgICAgICAgICAgICAgICAgICAgZjg6MWM6NjQ6NjE6YzY6
YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Ci0gICAgICAgICAgICAgICAgICAgIGJkOjU1
OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4OjVmOjM3OgotICAgICAgICAgICAgICAg
ICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpkYToxNDo5YjowYTpiMDphNzoKLSAgICAg
ICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6OWU6ZWU6MTM6NWY6ZjA6YzE6MmM6NTU6
NzI6Ci0gICAgICAgICAgICAgICAgICAgIGYwOjlhOmMwOjZlOjdmOjNjOmRlOjYyOjBmOmIxOmY2
OmMyOmM5Ojg0OmE2OgotICAgICAgICAgICAgICAgICAgICA5MTpkNzozOTpjZDpjYjo5Nzo0Zjoz
OTpmZTowYzpkZTpiMzplZDo3ZTozNjoKLSAgICAgICAgICAgICAgICAgICAgN2Y6YWE6MDE6MTk6
YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6Ci0gICAgICAgICAgICAgICAgICAgIDZh
OmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0OjAzOjFmOjc5OgotICAgICAgICAgICAg
ICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpjNDpjYTpjYzplNTo2OToxNDoxZToKLSAg
ICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6ZWE6NDY6NzI6N2E6Zjg6NzI6YTc6NGQ6
OTc6MGM6Ci0gICAgICAgICAgICAgICAgICAgIGZkOjJmOjJmOjAzOjQyOmI0OmYyOmM2OjA3OjQ3
OmE2OjAwOjA3OmMyOmVmOgotICAgICAgICAgICAgICAgICAgICAxYTo3MDo0NDo2NTo0Njo0YTpk
MToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKLSAgICAgICAgICAgICAgICAgICAgZDY6OGE6ODI6
YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6NzQ6Ci0gICAgICAgICAgICAgICAgICAg
IGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4OjgyOjM3OmUwOmY1OgotICAgICAgICAg
ICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDoxZjo3ZToxYToxZjo4Yjo2MDo3Mjo3NToK
LSAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6MGM6Y2M6NTg6NjU6YmI6NWI6YjI6YjM6
YTY6YTE6NTY6Ci0gICAgICAgICAgICAgICAgICAgIDQyOjY5Ci0gICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKLSAgICAg
ICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCi0gICAgICAgICAgICAgICAgQ0E6RkFM
U0UKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAg
ICAgICAgICAyQToxODowQjowOToyMjo2RToyODpEMjpEQjpGRDpDMjoyRDo0MDpBNjpGMzozODo2
Mjo2RTpDNzpDNQotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjog
Ci0gICAgICAgICAgICAgICAga2V5aWQ6NDE6NDk6RkY6OEM6NjY6NTA6NUY6ODc6QTE6MDY6QTg6
QkI6QUI6OEE6REQ6NzM6MEQ6MEU6Mzc6MUEKLQotICAgICAgICAgICAgWDUwOXYzIEtleSBVc2Fn
ZTogCi0gICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwg
S2V5IEVuY2lwaGVybWVudAotICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTog
Ci0gICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24KLSAgICAgICAg
ICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IAotICAgICAgICAgICAgICAgIERO
Uzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdAotICAgIFNpZ25h
dHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICBhZjpjMjpl
YTpjYzo2YTo1ZTo0OTplMDpkYjo3MjoxNDowNTozYzoyMTphMDo4YjpmZjpiNjoKLSAgICAgICAg
IGE5OjcxOjgyOmY3OjYxOmNkOjIzOjJhOjAwOjY2OjkxOmFjOjAxOjk5OjYzOjM4OjExOjIxOgot
ICAgICAgICAgODU6YjI6NTc6OTI6MGI6M2Y6Nzk6Njg6ZjU6ZDg6NTk6OGI6YTc6NzQ6MTk6ZWI6
MGI6ZTc6Ci0gICAgICAgICAzZDo4Njo0ZTo2NjpkNDplNjoyZjpmZjplZDo2Yzo3ZDo5YTo1ZTox
Mjo0ZTpiZjozOTpmZjoKLSAgICAgICAgIGY3OmQwOmZiOjUyOjUzOmEwOmZiOmIxOjVjOjlhOjkx
OjkyOjM2OjAwOmQ4OmE0OjZmOmY5OgotICAgICAgICAgOWM6MzY6MjE6YjI6YzI6NWU6MTQ6MTE6
Y2E6NTU6ZTc6ODg6MzA6NjA6OGQ6ODY6ZGE6NjU6Ci0gICAgICAgICAyNjpmZjplMjo0NTozNjoy
YTowOTozZDphNDpiYjozODo2MTo0ZDo1NzplNDpjOTpiNjo1MDoKLSAgICAgICAgIDNjOjA2OjJm
OjZiOmJmOjA0OjM0OjQyOjU0OmRjOjUzOmI2OjYxOmM1OjRlOjQwOjAwOmQ2OgotICAgICAgICAg
NWU6MTk6MTc6M2E6NTQ6MmM6YzU6MTY6N2E6NmQ6NGE6NzA6NTY6NDU6Y2Q6OTk6NWE6MmE6Ci0g
ICAgICAgICBkMTphNzo0ZTozNTo5NzozZDpkODpjOTo5NTo4MDphYjoxNTo0Mjo4NjpmNjphMDph
NjpjMzoKLSAgICAgICAgIDIxOmMxOjlhOjA3OjM0OjQ5OmFkOjYxOjNjOmJjOjk0OmIyOjJkOjky
OmY3OjQ0OjgwOjAxOgotICAgICAgICAgNWY6Mjc6YmQ6ODM6ZjU6NTE6MjI6Mzk6Y2Q6OTg6YjE6
Mzk6MjM6Yjg6ZjQ6NWM6MDg6MjA6Ci0gICAgICAgICA5ZTpmZTpmMToyZDo5YTplOTo5YjpjNzo1
ZTpiODozMzo4YjoxNjo3Nzo1MjozZDpjOTo3YToKLSAgICAgICAgIDQzOjllOjI1OmQwOmM3OjVh
Ojk2OjA4OjUzOjFhOmRjOjc1OjUzOjc1OjQ0OjYyOjE4OjdjOgotICAgICAgICAgZWY6ZmI6NzM6
NTIKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJTXNqQ0NDNXFnQXdJQkFnSURCYkZJ
TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMx
MFpYTjBjekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1TWpsYQotTUJ3eEdq
QVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFF
RgotQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxMlYxVjVqajVhcVAvdHNZOWVUNEhHUmh4cVAyNkg0a0VO
NEplaVM5VlY5UgotcWJXQ0RZVTZ0ckZJWHpmTFFtL25COHMycVR2YUZKc0tzS2VWS2U3U2VDS2U3
aE5mOE1Fc1ZYTHdtc0J1Znp6ZQotWWcreDlzTEpoS2FSMXpuTnk1ZFBPZjRNM3JQdGZqWi9xZ0Va
cWRXeGY3NDZaUStsWFI5cXdWdDdDZHd3S0FXcQotRjVRREgza1FCUTZXcW12dlpjVEt6T1ZwRkI1
M1VQcmhET3BHY25yNGNxZE5sd3o5THk4RFFyVHl4Z2RIcGdBSAotd3U4YWNFUmxSa3JSTEZJWC81
blBjalRXaW9LZ1NpTko2S0ZaN2xOMFJuU2h6OWZMM0k3UVVsZEpXSUkzNFBXdAotT3pnYnRZWUVI
MzRhSDR0Z2NuWDJncVFRRE14WVpidGJzck9tb1ZaQ2FRSURBUUFCbzRJSitqQ0NDZll3Q1FZRAot
VlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVS2hnTENTSnVLTkxiL2NJdFFLYnpPR0p1eDhVd0h3WURW
UjBqQkJndwotRm9BVVFVbi9qR1pRWDRlaEJxaTdxNHJkY3cwT054b3dDd1lEVlIwUEJBUURBZ1hn
TUJNR0ExVWRKUVFNTUFvRwotQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDRVhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdQotYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZY
ZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkMwotTVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkMwotTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJ
YWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3
YkdGMAotWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWQzZDNNaTUzZDNjdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwMwotZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBnaHQzZDNjeExuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1MwotWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxMwotZDNjdWQz
ZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNMbmQzZHpJdWJtOTBMWGRsWWkx
dwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5odQotTFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNM
bmQzZHpFdWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkMwotZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSDNkM2R6RXVk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1Mwot
ZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlM
WEJzWVhSbQotYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNodQotTFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU4zZDNjeUxuaHVMUzFzZG1VdAotTm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWpkM2QzTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0kzaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2laNGJpMHRiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odQotTFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1MwotZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MAotTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSzNodUxTMXNkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhodQotTFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dAotTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTEzZDNjdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5k
M2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdQotZUc0dExXNDRhalprY3pVemJI
ZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxcwot
ZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akY0YmkwdAotYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGMwotZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXllRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1ND
TW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxdwotYkdG
MFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2
ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MgotWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NAotYmkwdGJqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odQotTFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExu
UmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
MwotZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25GbwotZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbAotYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFLL0M2c3hx
WGtuZzIzSVVCVHdob0l2L3RxbHhndmRoelNNcQotQUdhUnJBR1pZemdSSVlXeVY1SUxQM2xvOWRo
Wmk2ZDBHZXNMNXoyR1RtYlU1aS8vN1d4OW1sNFNUcjg1Ly9mUQotKzFKVG9QdXhYSnFSa2pZQTJL
UnYrWncySWJMQ1hoUVJ5bFhuaURCZ2pZYmFaU2IvNGtVMktnazlwTHM0WVUxWAotNU1tMlVEd0dM
MnUvQkRSQ1ZOeFR0bUhGVGtBQTFsNFpGenBVTE1VV2VtMUtjRlpGelpsYUt0R25UaldYUGRqSgot
bFlDckZVS0c5cUNtd3lIQm1nYzBTYTFoUEx5VXNpMlM5MFNBQVY4bnZZUDFVU0k1elppeE9TTzQ5
RndJSUo3KwotOFMyYTZadkhYcmd6aXhaM1VqM0pla09lSmRESFdwWUlVeHJjZFZOMVJHSVlmTy83
YzFJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorQ2VydGlmaWNhdGU6DQorICAgIERhdGE6
DQorICAgICAgICBWZXJzaW9uOiAzICgweDIpDQorICAgICAgICBTZXJpYWwgTnVtYmVyOiA3ODMy
NzkgKDB4YmYzYWYpDQorICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNB
RW5jcnlwdGlvbg0KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVzdHMNCisgICAg
ICAgIFZhbGlkaXR5DQorICAgICAgICAgICAgTm90IEJlZm9yZTogRmViIDE4IDIwOjI5OjQ3IDIw
MjAgR01UDQorICAgICAgICAgICAgTm90IEFmdGVyIDogRmViIDE1IDIwOjI5OjQ3IDIwMzAgR01U
DQorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdA0KKyAgICAgICAgU3ViamVj
dCBQdWJsaWMgS2V5IEluZm86DQorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24NCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkN
CisgICAgICAgICAgICAgICAgTW9kdWx1czoNCisgICAgICAgICAgICAgICAgICAgIDAwOmJmOjdl
OmU2OjJhOjZjOjkyOmQ4OjJhOjg0OmYwOjE3OjM2OmFlOjlkOg0KKyAgICAgICAgICAgICAgICAg
ICAgMjI6Nzc6ZWI6Njk6YTk6MDM6YjA6Njg6NTg6ZTI6MGM6ODk6MzE6NjQ6MTg6DQorICAgICAg
ICAgICAgICAgICAgICBhZDo2ZDo2NDowODoyOTpjZjo2YTplZjpjYzoxMDpmOTpiMzozMzo0Yzoy
MjoNCisgICAgICAgICAgICAgICAgICAgIGIxOmRhOjI0OjVmOmMzOjMxOmYxOmYxOjdiOjYwOjk3
OmIyOjc5OjAzOjVkOg0KKyAgICAgICAgICAgICAgICAgICAgNjY6ZGM6ZDE6Y2I6ODM6ZWM6ZDM6
MGM6ZTE6ZDI6OWI6N2Q6MTY6ZTM6OWU6DQorICAgICAgICAgICAgICAgICAgICBkYzo1ODpkZDo2
Yzo4OTo3Nzo5ODphMzowYzpiMjo3Yzo2ZTpkMDpiZjozZDoNCisgICAgICAgICAgICAgICAgICAg
IDJjOjE5OmExOmM5Ojg3OmMyOjBhOjRlOmE4OjFlOjM0OmE4OjZmOmRhOjJkOg0KKyAgICAgICAg
ICAgICAgICAgICAgMGE6NGQ6YzA6YjQ6NzE6MDY6NDk6NjE6ZWE6MWE6YzA6NjQ6YzE6ZDM6YjA6
DQorICAgICAgICAgICAgICAgICAgICA4ZjpjMDozYjo4MjowMToyODpjNDplODozMTo4YjowNzo0
YjpiNTpmYjo2MjoNCisgICAgICAgICAgICAgICAgICAgIDE3OjRjOjJhOjBkOmRlOmFiOmNlOmRj
OjgwOjY4OmJmOmFiOjFkOjQ1OmUyOg0KKyAgICAgICAgICAgICAgICAgICAgYTQ6YTI6MDE6NmE6
MDU6ZGY6NDE6ZTY6ZmQ6Zjg6OTQ6MmU6ZTI6OWY6YTQ6DQorICAgICAgICAgICAgICAgICAgICAw
MTo1NTo3ZDplYjpjMTozZDozZTo2MTo1MDphMDplYTozNzoyYTpkNTpjNzoNCisgICAgICAgICAg
ICAgICAgICAgIDE4OjRjOmVjOmY1OjBkOjM5OjZkOjU0OmQzOjA0OjMxOjQ2OmQ4OjEyOmEwOg0K
KyAgICAgICAgICAgICAgICAgICAgMGE6ODI6NjM6NmQ6ODI6YTQ6OGU6ZDY6ODI6NDM6NjE6OWI6
MWQ6OTQ6OWE6DQorICAgICAgICAgICAgICAgICAgICBiMDoxZDozNTowMjpmODpiYjo1NTo3Zjo4
YzpmNzoyMTplMjo2NTozNjo0MjoNCisgICAgICAgICAgICAgICAgICAgIGE5OjhiOjU4OjExOjkw
OmEwOjdjOjI4OjQ1OmQ4OjliOjg4Ojk1OjlhOjI2Og0KKyAgICAgICAgICAgICAgICAgICAgZTk6
ZmQ6NDc6MDc6ODM6NzA6OGE6OTg6MWI6MGI6NGU6ODQ6OGM6MDY6Yjc6DQorICAgICAgICAgICAg
ICAgICAgICBlMjplMw0KKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
DQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoNCisgICAgICAgICAgICBYNTA5djMgQmFzaWMg
Q29uc3RyYWludHM6IA0KKyAgICAgICAgICAgICAgICBDQTpGQUxTRQ0KKyAgICAgICAgICAgIFg1
MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAgICAgQUU6RDg6MkY6
OTk6QkE6QjE6RTg6MDM6RDI6QTU6QzU6MkM6MEQ6QkI6MTY6NUM6OUI6OUY6Rjc6MDgNCisgICAg
ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAg
ICAga2V5aWQ6RjY6Qjk6REE6MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6Njc6NDA6Q0I6MDM6
RDM6MUU6OTA6RUMNCisNCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiANCisgICAgICAg
ICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVy
bWVudA0KKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6IA0KKyAgICAgICAg
ICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbg0KKyAgICAgICAgICAgIFg1MDl2
MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IA0KKyAgICAgICAgICAgICAgICBETlM6d2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcwLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQz
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDM1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUw
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A4OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
ODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZs
YWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRz
NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QNCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24NCisgICAgICAgICA4OTphNDo0NDo0MzplZjowZjphNjoz
Njo3MjozMTo4Nzo0NDo3NTo4NjpiNjo1Yjo1ODoyYzoNCisgICAgICAgICBjYjoxYzowYToyZToz
NTozMjo4Mzo4MDo3MDo3MDoxYzpiNzo0YTpkMTo0NTo0NDo3ODpjNDoNCisgICAgICAgICAxNzpk
ODo3NzozNDo0ZTo0MjpkMjo3MjoyMjpmZTowZDowYTphZTpiODowNjo5NDpkMDo2ZDoNCisgICAg
ICAgICA3YToyMTpkODphNDo4MzozMzoxNzpkMzowNDphODo5Mzo2Zjo2NjpmMDozMzoxOTowNTow
NzoNCisgICAgICAgICBiNTozNTo4MzoyODphOTo4Zjo4NToxODoxYTo4NjpkZjplODpiZTo4ZDpj
Zjo2YToyNDpjMToNCisgICAgICAgICAwODoyNjpkZDowMjo5ODoxYzowMTpkODo4MTo0YTplNDoy
MDoxNDoxOTo3YzplZjo5MTpiNToNCisgICAgICAgICAzZTpkYTo1YTpmNjoxNDo0NToxODo3ZDo0
NTo0YjoyODo3NjozMzo1ODpjNTo4YzpjOToyZDoNCisgICAgICAgICBlZjo4OToxMTo3MDo3ZDpl
Yjo0Nzo5ZToxMjpiMDo4MToxOTpjODowNzpkOTpjYzo4NzpmMToNCisgICAgICAgICAxYjpmZTpm
MDo4ZjpiMjpjMzpmMTpkYTpmMDo1NTplNTo0YTo5YjpmZjowZDowMTo1Zjo2NToNCisgICAgICAg
ICA5NTowNzo5MjpjNjo3Yjo3Mzo5NTo1OTphYTo2YjpjNjo5YzowMTo0ZTphMjoyYjplYTo3NzoN
CisgICAgICAgICBkNDpmNDphYjpkNjplNTo5NDplYjo4MTozNzo1NTo5Yzo5MDozZjo3MzoyMzox
ZDo4NDpjMjoNCisgICAgICAgICA4Mjo0Mjo1Njo5YToxMzo2OTozMzo0ODpkNjowZDowZTo1ODo4
MjphYzo5MDplZjpiMzphMDoNCisgICAgICAgICA2YzpkZTo3OTpmNjoxNzpjNTpmMDoxZTpmMzoz
Nzo3NDowMTpmMDo0Nzo5Yzo3Nzo5YzphNzoNCisgICAgICAgICBhZjplMDo2MDpjYTpkNzowMjpk
ZDo1MDo0ODo2OTpiMToxYjo4Mzo4Nzo1YTo3Yzo3NDo0NDoNCisgICAgICAgICBkYTpjNTpkZTpi
OA0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSWdpRENDSDNDZ0F3SUJBZ0lEQy9P
dk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZaTF3YkdGMFptOXli
UzEwWlhOMGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1ESTVORGRhDQorTUJ3
eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBC
QVFFRg0KK0FBT0NBUThBTUlJQkNnS0NBUUVBdjM3bUtteVMyQ3FFOEJjMnJwMGlkK3RwcVFPd2FG
amlESWt4WkJpdGJXUUkNCitLYzlxNzh3UStiTXpUQ0t4MmlSZnd6SHg4WHRnbDdKNUExMW0zTkhM
Zyt6VERPSFNtMzBXNDU3Y1dOMXNpWGVZDQorb3d5eWZHN1F2ejBzR2FISmg4SUtUcWdlTktodjJp
MEtUY0MwY1FaSlllb2F3R1RCMDdDUHdEdUNBU2pFNkRHTA0KK0IwdTErMklYVENvTjNxdk8zSUJv
djZzZFJlS2tvZ0ZxQmQ5QjV2MzRsQzdpbjZRQlZYM3J3VDArWVZDZzZqY3ENCisxY2NZVE96MURU
bHRWTk1FTVViWUVxQUtnbU50Z3FTTzFvSkRZWnNkbEpxd0hUVUMrTHRWZjR6M0llSmxOa0twDQor
aTFnUmtLQjhLRVhZbTRpVm1pYnAvVWNIZzNDS21Cc0xUb1NNQnJmaTR3SURBUUFCbzRJZDBEQ0NI
Y3d3Q1FZRA0KK1ZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVXJ0Z3ZtYnF4NkFQU3BjVXNEYnNXWEp1
Zjl3Z3dId1lEVlIwakJCZ3cNCitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3WURW
UjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HDQorQ0NzR0FRVUZCd01CTUlJZFd3WURWUjBSQklJ
ZFVqQ0NIVTZDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdg0KK2NESXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTMNCitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNeTUz
DQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
VnViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVZiM0EwTG5kbFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2hWdmNEZ3VkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0E1TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOaTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tnk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
Mk5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXlPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhN
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTWk1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBek55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNaTUzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTmk1
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBeU5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM05DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
V2IzQXpNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpPUzUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
TXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBek5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBOQzUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F6TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
eU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTFNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5pNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOeTUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBNU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
YjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5TNTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVO
eTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBNE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTRNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkSUla
YjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaDQor
YjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhk
R1p2Y20wdQ0KK2RHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
eExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlaYjNBMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
ekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeQ0KK055NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d05EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hw
dmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlMWEJz
DQorWVhSbWIzSnRMblJsYzNTQ0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGd6TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6TXk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBMk1pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UZ3VibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTANCitNeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRGt1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwDQorWlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1TlM1
dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpNdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RreExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
ME1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qWXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEWTVMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJ
YWIzQXpNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNemN1Ym05MExYZGwNCitZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGs0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0F4DQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpZdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RFekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBM09TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVkM2Qz
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNamt1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUxTG01dmRDMTNaV0l0Y0d4aGRHWnYN
CitjbTB1ZEdWemRJSWFiM0E1TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRR
dWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBNQ0KK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d016UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNETXdMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNUzUzZDNjdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNT
Q0dtOXdNalV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkwTG01dg0KK2RDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0MNCitHbTl3TlRFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RReExtNXZkQzEz
WldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeE1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR205d01UQXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitNaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRGMw
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzU0NHbTl3T0RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rn
MExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDDQorR205d05UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNESXpMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXpOUzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVFl1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6DQorT0M1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0K
K1pYTjBnaHB2Y0RZeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d09UQXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEY3dMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNVFV1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFkxTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0Ex
TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpndWJtOTBMWGRsDQorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mw0KK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R5NTNkM2N5TG5kbFlpMXdi
R0YwWm05eWJTNTANCitaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTVNeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNkeTUzZDNjeExuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjREl4TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0EzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3T1RjdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20w
dWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qWXVibTkw
TFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTENCitPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORFl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F6T1M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3
TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFM0xtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQor
R205d09EVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTNMbTV2ZEMxM1pXSXRj
R3hoZEdadg0KK2NtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdPREV1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNkM2N5TG5kM2R6RXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpFdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2h0M2QzY3hM
bmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0hYZDNkeTUzZDNjdWJtOTANCitMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM01T
NTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5kM2R5NTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWZkM2QzTVM1M2QzY3lMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJZmQzZDNNUzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUlmZDNkM01p
NTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTWk1M2QzY3kNCitMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJaQ0KK2QzZDNMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJamQzZDNNUzU0YmkwdGJIWmwNCitMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdpTjRi
aTB0YkhabExUWnNZV1F1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RJSWplRzR0TFd4
MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKbmQzZHk1NGJpMHQNCiti
SFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lX
UXVkM2QzDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2QzTVM1NGJpMHRiSFps
TFRac1lXUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3lMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbmVHNHRMV3gyWlMwMmJH
RmtMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWw0YmkwdA0KK2JqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXJlRzR0TFd4MlpTMDIN
CitiR0ZrTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0
NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTE0YmkwdGJqaHFObVJ6TlROcw0KK2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDTFhkM2R5NTRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJdWQzZDNNaTU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJ
NFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTVM1NGJpMHRiamhxTm1Seg0KK05UTnNk
M2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExXNDRhalprY3pVemJI
ZDMNCithM0p4YUhZeU9HRXVkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWVHNHRMVzQ0
YWpaa2N6VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SXZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0KK0xTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDTVhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1qaGhMbmQzZHk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGQzZHk1NGJpMHRiamhxDQorTm1Sek5UTnNkM2Ry
Y25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekV1ZUc0dA0KK0xX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pK
NGJpMHQNCitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUl5DQorZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHlj
V2gyTWpoaExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdqWjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpDQorTFhCc1lYUm1i
M0p0TG5SbGMzU0NObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gbw0K
K2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHVMUzF1
T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
STZlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmtMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElKQg0KK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NSWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQU5CZ2txaGtp
Rw0KKzl3MEJBUXNGQUFPQ0FRRUFpYVJFUSs4UHBqWnlNWWRFZFlhMlcxZ3N5eHdLTGpVeWc0Qndj
QnkzU3RGRlJIakUNCitGOWgzTkU1QzBuSWkvZzBLcnJnR2xOQnRlaUhZcElNekY5TUVxSk52WnZB
ekdRVUh0VFdES0ttUGhSZ2FodC9vDQordm8zUGFpVEJDQ2JkQXBnY0FkaUJTdVFnRkJsODc1RzFQ
dHBhOWhSRkdIMUZTeWgyTTFqRmpNa3Q3NGtSY0gzcg0KK1I1NFNzSUVaeUFmWnpJZnhHLzd3ajdM
RDhkcndWZVZLbS84TkFWOWxsUWVTeG50emxWbXFhOGFjQVU2aUsrcDMNCisxUFNyMXVXVTY0RTNW
WnlRUDNNakhZVENna0pXbWhOcE0waldEUTVZZ3F5UTc3T2diTjU1OWhmRjhCN3pOM1FCDQorOEVl
Y2Q1eW5yK0JneXRjQzNWQklhYkViZzRkYWZIUkUyc1hldUE9PQ0KKy0tLS0tRU5EIENFUlRJRklD
QVRFLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRf
dGVzdHMueW1sCmluZGV4IDc4MTFiYTk1OTE3YmIzY2M2YjVkMzJlY2JlOWU4OTUyOTc2MWFkYzMu
LjQ5NGZmMWVmYTE5Y2MwMjEzMzM3MDk0ODM4M2U1ZmIyMjE0NGQ0ZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
YWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCkBAIC0xNSw3ICsx
NSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1sCiAtIHRlbXBsYXRl
OiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZlc3QueW1sCi0tIHNj
cmlwdDogbm9fcHJveHk9JyonIC4vd3B0IHJ1biAtLXllcyAtLW5vLXBhdXNlIC0tbm8tZmFpbC1v
bi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0tYWZmZWN0ZWQgJHt7IHBh
cmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQgJChCdWlsZC5BcnRpZmFj
dFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13cHRzY3JlZW5zaG90ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVuc2hvdC50eHQgLS1jaGFu
bmVsIHByZXZpZXcgc2FmYXJpCistIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2Ug
LS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZl
Y3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1
aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNj
cmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90
LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKICAgZGlzcGxheU5hbWU6ICdSdW4gdGVzdHMn
CiAtIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCiAgIGRpc3BsYXlOYW1lOiAnUHVibGlz
aCByZXN1bHRzJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20u
YXBwbGUuU2FmYXJpLnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjIwODA5
NzJjOWY2MzQxMDA2MmVlOGQzM2QwZWQwMjg2YWY4ZjExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9F
TiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBs
aXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkFsbG93UmVtb3RlQXV0b21hdGlvbjwv
a2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
Y2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDZiZDVjMjMzNGFkNGUzZTRk
NWQ2ZmFhZjgwMDVmNGUwYjQ0Y2YxZmUuLmZkNjUwZTgwYWFhZDMwOWM4ZTk4MzI3NGQyYjgyM2Ji
YTkxYjFmYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFs
bF9jaHJvbWUueW1sCkBAIC0xLDYgKzEsOSBAQAogc3RlcHM6Ci0jIFRoaXMgaXMgZXF1aXZhbGVu
dCB0byBgSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9nb29nbGUtY2hyb21lLWRldmAs
Ci0jIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6
IEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcu
Z2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFz
dGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisjIFRoZSBjb25mbGljdGluZyBnb29nbGUt
Y2hyb21lIGFuZCBjaHJvbWVkcml2ZXIgY2Fza3MgYXJlIGZpcnN0IHVuaW5zdGFsbGVkLgorIyBU
aGUgcmF3IGdvb2dsZS1jaHJvbWUtZGV2IGNhc2sgVVJMIGlzIHVzZWQgdG8gYnlwYXNzIGNhY2hp
bmcuCistIHNjcmlwdDogfAorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNr
IHVuaW5zdGFsbCBnb29nbGUtY2hyb21lIHx8IHRydWUKKyAgICBIT01FQlJFV19OT19BVVRPX1VQ
REFURT0xIGJyZXcgY2FzayB1bmluc3RhbGwgY2hyb21lZHJpdmVyIHx8IHRydWUKKyAgICBIT01F
QlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBzOi8vcmF3LmdpdGh1
YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9D
YXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgogICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgQ2hyb21l
IERldicKICAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQu
T1MnXSwgJ0RhcndpbicpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2VkZ2UueW1sCmluZGV4IGU0YzQyNWFiN2EwZjAzMjE4ZDkyMmU3MzEwZWE5ZDhmZGUwZjUx
YWEuLjI5N2I2ZTYwYjI5ZjNhOWJiZDAwYjNlZTAwYjcwNTYzNTEzOGYyY2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvaW5zdGFsbF9lZGdlLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwKQEAgLTQsNiArNCwy
NiBAQCBwYXJhbWV0ZXJzOgogIyBTaG91bGQgbWF0Y2ggaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVz
dHMub3JnL3J1bm5pbmctdGVzdHMvY2hyb21lLmh0bWwKICMgSnVzdCByZXBsYWNlIGNocm9tZSB3
aXRoIGVkZ2VjaHJvbWl1bQogc3RlcHM6CistICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWws
ICdzdGFibGUnKSB9fToKKyAgLSBwb3dlcnNoZWxsOiB8CisgICAgICAkZWRnZUluc3RhbGxlck5h
bWUgPSAnTWljcm9zb2Z0RWRnZVNldHVwLmV4ZScKKyAgICAgICMgTGluayB0byBTdGFibGUgY2hh
bm5lbCBpbnN0YWxsZXIKKyAgICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291cmNlICdodHRwczov
L2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjEwODgzNCZDaGFubmVsPVN0YWJsZSZs
YW5ndWFnZT1lbicgLURlc3RpbmF0aW9uIE1pY3Jvc29mdEVkZ2VTZXR1cC5leGUKKyAgICAgIGlm
ICgtbm90IChUZXN0LVBhdGggJGVkZ2VJbnN0YWxsZXJOYW1lKSkgeworICAgICAgICBUaHJvdyAi
RmFpbGVkIHRvIGRvd25sb2FkIEVkZ2UgaW5zdGFsbGVyIHRvICRlZGdlSW5zdGFsbGVyTmFtZS4i
CisgICAgICB9CisgICAgICBjbWQgL2MgU1RBUlQgL1dBSVQgJGVkZ2VJbnN0YWxsZXJOYW1lIC9z
aWxlbnQgL2luc3RhbGwKKyAgICAgICRlZGdlUGF0aCA9ICIkZW52OnN5c3RlbWRyaXZlXFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb24iCisgICAgICBpZiAoVGVz
dC1QYXRoICRlZGdlUGF0aCkgeworICAgICAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBl
bmRwYXRoXSRlZGdlUGF0aCIKKyAgICAgICAgV3JpdGUtSG9zdCAiRWRnZSBTdGFibGUgaW5zdGFs
bGVkIGF0ICRlZGdlUGF0aC4iCisgICAgICAgIChHZXQtSXRlbSAtUGF0aCAiJGVkZ2VQYXRoXG1z
ZWRnZS5leGUiKS5WZXJzaW9uSW5mbyB8IEZvcm1hdC1MaXN0CisgICAgICB9IGVsc2UgeworICAg
ICAgICBDb3B5LUl0ZW0gLVBhdGggIiRlbnY6dGVtcFwqZWRnZSoubG9nIiAtRGVzdGluYXRpb24g
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpICAtRm9yY2UKKyAgICAgICAgVGhyb3cg
IkZhaWxlZCB0byBpbnN0YWxsIEVkZ2UgYXQgJGVkZ2VQYXRoIgorICAgICAgfQorICAgIGRpc3Bs
YXlOYW1lOiAnSW5zdGFsbCBFZGdlIFN0YWJsZScKKwogLSAke3sgaWYgZXEocGFyYW1ldGVycy5j
aGFubmVsLCAnY2FuYXJ5JykgfX06CiAgIC0gcG93ZXJzaGVsbDogfAogICAgICAgJGVkZ2VJbnN0
YWxsZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3Rh
bGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IGE4NjQxNDY1YWM4ZWFl
NzAwODZiZDBjZWQ0YTgwZDNhMmRhMzUxMTMuLmQwNjYwZDE1MmJiZGZjODlmMzA4YmZjMDQ4Y2Qy
MjIxZTllYTc1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9zYWZhcmkueW1sCkBAIC0zLDYgKzMsOSBAQCBwYXJhbWV0ZXJzOgogCiAjIFNob3VsZCBt
YXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9zYWZhcmku
aHRtbAogc3RlcHM6CistIHNjcmlwdDogZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLldlYkRyaXZl
ciBEaWFnbm9zdGljc0VuYWJsZWQgMQorICBkaXNwbGF5TmFtZTogJ0VuYWJsZSBzYWZhcmlkcml2
ZXIgZGlhZ25vc3RpY3MnCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJf
ZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZp
ZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKICAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEg
YnJldyBjYXNrIGluc3RhbGwgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmll
dy5yYgpAQCAtMTIsOSArMTUsNiBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwg
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5l
bCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgIyBXb3JrYXJvdW5kIGZvciBg
c3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmc6Ci0gICAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xOTg0NQotICAgICAgbWtk
aXIgLXAgfi9MaWJyYXJ5L1dlYkRyaXZlci8KLSAgICAgIGNwIHRvb2xzL2NpL2F6dXJlL2NvbS5h
cHBsZS5TYWZhcmkucGxpc3Qgfi9MaWJyYXJ5L1dlYkRyaXZlci8KKyAgICAgIHN1ZG8gc2FmYXJp
ZHJpdmVyIC0tZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdl
YktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlO
YW1lOiAnQ29uZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9waXBfaW5zdGFsbC55bWwKaW5kZXggYzg3OTUzNDVmNmJjZjRhOTQzZTA3YTQ1OTk0N2U3MThh
ZDZhMGFmYy4uMThkMTg3OWU5NzE2MTM1MzJmYWM1NjczZDlhODA0YWNjMWJjODY3MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9waXBfaW5zdGFsbC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKQEAgLTIsMTQg
KzIsNSBAQCBwYXJhbWV0ZXJzOgogICBwYWNrYWdlczogJycKIAogc3RlcHM6Ci0tIHNjcmlwdDog
fAotICAgICMgYHN1ZG8gcGlwIGluc3RhbGxgIGlzIG5vdCB1c2VkIGJlY2F1c2Ugc29tZSBwYWNr
YWdlcyAoZS5nLiB0b3gpIGRlcGVuZCBvbgotICAgICMgc3lzdGVtIHBhY2thZ2VzIChlLmcuIHNl
dHVwdG9vbHMpIHdoaWNoIGNhbm5vdCBiZSB1cGdyYWRlZCBkdWUgdG8gU3lzdGVtCi0gICAgIyBJ
bnRlZ3JpdHkgUHJvdGVjdGlvbiwgc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMzAw
NDkyMC4KLSAgICBwaXAgaW5zdGFsbCAtLXVzZXIgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0K
LSAgICBlY2hvICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXSRIT01FL0xpYnJhcnkvUHl0aG9uLzIu
Ny9iaW4iCi0gIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMgKG1hY09TKScK
LSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQuT1MnXSwg
J0RhcndpbicpKQogLSBzY3JpcHQ6IHBpcCAtLWRpc2FibGUtcGlwLXZlcnNpb24tY2hlY2sgaW5z
dGFsbCAtLXVwZ3JhZGUgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0KLSAgZGlzcGxheU5hbWU6
ICdJbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyAoV2luZG93cyknCi0gIGNvbmRpdGlvbjogYW5kKHN1
Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCisgIGRp
c3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxp
c2hfbG9ncy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5Mzk3YTkxYWQ3
Y2E0MjQ4NjRjNTMyNmI1ZmU3YjRhMzY4NWE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlz
aF9sb2dzLnltbApAQCAtMCwwICsxLDcgQEAKK3N0ZXBzOgorLSB0YXNrOiBQdWJsaXNoQnVpbGRB
cnRpZmFjdHNAMQorICBkaXNwbGF5TmFtZTogJ1B1Ymxpc2ggc2FmYXJpZHJpdmVyIGxvZ3MnCisg
IGlucHV0czoKKyAgICBwYXRodG9QdWJsaXNoOiAvVXNlcnMvcnVubmVyL0xpYnJhcnkvTG9ncy9j
b20uYXBwbGUuV2ViRHJpdmVyLworICAgIGFydGlmYWN0TmFtZTogc2FmYXJpZHJpdmVyLWxvZ3MK
KyAgY29uZGl0aW9uOiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFnbm9zZSddLCB0cnVl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3LnJiCmluZGV4IGIzMjczOWJlNThhNzAyOGQ1ZmY0YTJkZTliNTZk
ZmI3ZWEwOTk4MmIuLmVhZTAzNDc0YTQ5ZmY3YmVjZTMyZGFmNDgyMzkwMDI1YzNjZTllMmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10
ZWNobm9sb2d5LXByZXZpZXcucmIKQEAgLTEsMTAgKzEsMTAgQEAKIGNhc2sgJ3NhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcnIGRvCiAgIGlmIE1hY09TLnZlcnNpb24gPD0gOm1vamF2ZQotICAgIHZl
cnNpb24gJzk2LDA2MS00NDA1Ni0yMDE5MTEyMC1hYzdiYjE5Ni0yNzI0LTQ4NDAtYmNlOS02Yzgz
ZWNkYmZiMmMnCi0gICAgc2hhMjU2ICdlODBjZWFjZGZmN2U3NTIxODM2NTk5M2U1YWYxYzgxYzli
Y2M0Nzg1MjkxYWUwMGFiYmEzZDE0YWM1NjE0MzE3JworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU5
NjYtMjAyMDA1MTMtODY1NzFiZTYtODc4ZS00MTFiLWE1YjktNjVhOTcxNTczZmFlJworICAgIHNo
YTI1NiAnODUxOGM4OTE3YTkxNzJhZWI3NWRlZWI2MTA2MGQzNTMyMjk3NjBmZDU0ZGM4NWJkMzhh
MDg5N2NjMWQxMjEwNScKICAgZWxzZQotICAgIHZlcnNpb24gJzk2LDA2MS00NzcxOC0yMDE5MTEy
MC0wMmJjNzU2OS1lZTZiLTRjMjgtOWVjNC0wY2VlZGEzYzNjM2EnCi0gICAgc2hhMjU2ICdiYmZj
ZGMzNmJmOWI1NWFlYzU4MzhkNjZlMzRjNDFkZDNmNmE2NDA5MTQwNmJjMzhmNDVjODg4MzYwZjE5
MWZlJworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU4OTAtMjAyMDA1MTMtMzIxYTY5YjQtZGU1OC00
NDBlLTgxODItOGFjMDNkNjVmNmNlJworICAgIHNoYTI1NiAnZjNjMDczZDliNjBmZjZkMTFmODJh
YmJjNmNjMTMxZTU5MTNlNmQwZjJhMTFmMDk2OGFlNzdkYjFiNTFlMWUzNScKICAgZW5kCiAKICAg
dXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRl
cl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hf
cHl0ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKaW5kZXggYmM5MzA4MzZkM2Q3YjY2YmM2M2Fj
MjM5MmI1MDVmZDk5YWYzZTExZC4uMTJlZDY2YTlhMDIwNmY2ODY2ZmIxMjBlMjY0YmUzOWRjN2Uy
OTJlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1s
CkBAIC0xLDcgKzEsNyBAQAogcGFyYW1ldGVyczoKICAgZGlyZWN0b3J5OiAnJwogICB0b3hlbnY6
ICdBTEwnCi0KKyAgCiBzdGVwczoKIC0gdGVtcGxhdGU6IHBpcF9pbnN0YWxsLnltbAogICBwYXJh
bWV0ZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cK
aW5kZXggNDRmNTQzMTljMmI5ZjAyNGVhOTI1YTZjM2VjN2NlMjBlZTRkNTBkMi4uY2U3MDEyZjcz
Mzk5YTYyODZmNzdkNzMxNjIxNDAxNzRiMDljMzI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0
LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCkBAIC0xOCw3ICsxOCw2IEBAIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY2xlYW51cF93
aW4xMC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9ob29rLnltbAogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9jZXJ0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbApAQCAtMjgsNiArMjcsNyBA
QCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFy
aS55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJp
LXRlY2hub2xvZ3ktcHJldmlldy5yYgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0
LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCmluZGV4IDcwOWNj
MmFhN2U2ODY3ZjU0OGQ0ZWZkZDYyZDc0YWJjMTg1ZTY1N2IuLmY4YWUzZTYxYmY3NTZkOTdjNzhl
MmQ5NTg5MTIxYjdkNjAxMDY2ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0
X2RpZmYuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQCBtYWluKCkgewogCiAgICAgI8KgRXhjbHVkZSB0
ZXN0cyB0aGF0IHJlbHkgb24gZm9udCByZW5kZXJpbmcKICAgICBleGNsdWRlZD0oCi0gICAgICAg
ICcyZGNvbnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwu
YmFzaWMucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKLSAgICAgICAgJzJkY29udGV4
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5ydGwucG5nJwot
ICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJh
dy5zdHJva2UuYmFzaWMucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAgICdvZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKLSAgICAgICAgJ29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKKyAgICAgICAgJ2h0
bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3
LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRl
eHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCisg
ICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJk
LnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2Ry
YXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwor
ICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LmZpbGwuYmFz
aWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3
LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVu
L3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29m
ZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwogICAgICkKIAogICAg
IC4vdXBkYXRlLWJ1aWx0LXRlc3RzLnNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVj
dHVyZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCmluZGV4IDhkYjA4Nzk0YWRlMjZi
ZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIuLjg5MjY3YjUwY2I2NDMyYzQ5NWQ0MjhhMTgwYzU5
NjU5YjVjNWE2MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCkBAIC01LDMxICs1LDI1IEBAIFNDUklQVF9ESVI9
JChjZCAkKGRpcm5hbWUgIiQwIikgJiYgcHdkIC1QKQogV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4v
Li4KIGNkICRXUFRfUk9PVAogCi1hZGRfd3B0X2hvc3RzKCkgewotICAgIC4vd3B0IG1ha2UtaG9z
dHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMKLX0KLQogdGVzdF9pbmZyYXN0cnVjdHVy
ZSgpIHsKLSAgICBsb2NhbCBBUkdTPSIiOwotICAgIGlmIFsgJFBST0RVQ1QgPT0gImZpcmVmb3gi
IF07IHRoZW4KLSAgICAgICAgQVJHUz0iLS1pbnN0YWxsLWJyb3dzZXIiCi0gICAgZWxzZQotICAg
ICAgICBBUkdTPSQxCi0gICAgZmkKLSAgICBURVJNPWR1bWIgLi93cHQgcnVuIC0tbG9nLW1hY2gg
LSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFz
dHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0
cnVjdHVyZS8KKyAgICBQWTNfRkxBRz0iJDIiCisgICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxB
RyBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24g
LS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzICQxICRQ
Uk9EVUNUIGluZnJhc3RydWN0dXJlLwogfQogCiBtYWluKCkgewotICAgIFBST0RVQ1RTPSggImZp
cmVmb3giICJjaHJvbWUiICkKKyAgICBpZiBbWyAkIyAtZXEgMSAmJiAiJDEiID0gIi0tcHkzIiBd
XTsgdGhlbgorICAgICAgICBQUk9EVUNUUz0oICJjaHJvbWUiICkKKyAgICBlbHNlCisgICAgICAg
IFBST0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBmaQogICAgIC4vd3B0IG1hbmlm
ZXN0IC0tcmVidWlsZCAtcCB+L21ldGEvTUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGlu
ICIke1BST0RVQ1RTW0BdfSI7IGRvCiAgICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9t
ZSIgXV07IHRoZW4KLSAgICAgICAgICAgIGFkZF93cHRfaG9zdHMKLSAgICAgICAgICAgIHRlc3Rf
aW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkg
LS1jaGFubmVsIGRldiIKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5
PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlCisgICAgICAgICAgICB0
ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKICAg
ICAgICAgZmkKICAgICBkb25lCiB9CiAKLW1haW4KK21haW4gJDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9i
cy5weQppbmRleCAzZDgwOWVmYTM3Y2NmZjJjMjU4MzQzYjY0NzkxNzYyZmM1MDdhOTBmLi43NjI0
ZWIwZDUxNmZjMTZhNTcyNGE2NzE0ZDI3NjdiYzRlMTIzMjVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9q
b2JzLnB5CkBAIC0zMywxNSArMzMsMTYgQEAgam9iX3BhdGhfbWFwID0gewogICAgICJ3cHRydW5u
ZXJfdW5pdHRlc3QiOiBbInRvb2xzLyJdLAogICAgICJidWlsZF9jc3MiOiBbImNzcy8iXSwKICAg
ICAidXBkYXRlX2J1aWx0IjogWyJ1cGRhdGUtYnVpbHQtdGVzdHNcXC5zaCIsCi0gICAgICAgICAg
ICAgICAgICAgICAiMmRjb250ZXh0LyIsCiAgICAgICAgICAgICAgICAgICAgICAiaW5mcmFzdHJ1
Y3R1cmUvIiwKICAgICAgICAgICAgICAgICAgICAgICJodG1sLyIsCi0gICAgICAgICAgICAgICAg
ICAgICAib2Zmc2NyZWVuLWNhbnZhcy8iLAogICAgICAgICAgICAgICAgICAgICAgIm1pbWVzbmlm
Zi8iLAogICAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdWkvIiwKICAgICAgICAgICAgICAg
ICAgICAgICJXZWJJREwiXSwKICAgICAid3B0X2ludGVncmF0aW9uIjogWyJ0b29scy8iXSwKLSAg
ICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZyYXN0cnVjdHVyZS8iLCAidG9vbHMv
IiwgInJlc291cmNlcy8iXSwKKyAgICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZy
YXN0cnVjdHVyZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VzLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZHJpdmVyL3Rlc3RzL3N1cHBvcnQiXSwKIH0K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQppbmRleCAxZTM4
OGRmYTc0MTlhMjFiMjA1MDNiMzA3NWMzNmJjMTExMzZkZDdkLi4yMGY5NmQ5YTNlZWVjNjM5OTc0
Y2E0NjFkOWQ0NWY5MWM5NmMwMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZl
c3RfYnVpbGQucHkKQEAgLTg0LDggKzg0LDcgQEAgZGVmIHJlcXVlc3QodXJsLCBkZXNjLCBtZXRo
b2Q9Tm9uZSwgZGF0YT1Ob25lLCBqc29uX2RhdGE9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWQKICAg
ICB0cnk6CiAgICAgICAgIHJldHVybiByZXNwLmpzb24oKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQgZGF0YSB3YXMgbm90
IEpTT04gUmVzcG9uc2U6IiAlCi0gICAgICAgICAgICAgICAgICAgICAoZGVzYywgcmVzcC5zdGF0
dXNfY29kZSkpCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgZmFpbGVkOiBSZXR1cm5lZCBkYXRh
IHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUgZGVzYykKICAgICAgICAgbG9nZ2VyLmVycm9yKHJl
c3AudGV4dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKaW5kZXggYmE3
Nzc0NDQ2ZTA4MzZlMzE5YzBkMDcxZDYyNjJlNTYyZmIxNDZlMS4uYmE1OTk3ZjY4YTYxNWY0OTMy
MmFjMDA5YTE1YWViZjBhNWEwNzFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmll
dy5weQpAQCAtMTIzLDYgKzEyMywyNyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAgICAg
ICAgcmV0dXJuIGRhdGFbJ2l0ZW1zJ10KIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIHB1
bGxfcmVxdWVzdF9pc19mcm9tX2Zvcmsoc2VsZiwgcHVsbF9yZXF1ZXN0KToKKyAgICAgICAgcHJf
bnVtYmVyID0gcHVsbF9yZXF1ZXN0WydudW1iZXInXQorICAgICAgICB1cmwgPSAne30vcmVwb3Mv
e30vcHVsbHMve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1
Yl9wcm9qZWN0LCBwcl9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdD
aGVja2luZyBpZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCisK
KyAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKworICAgICAgICByZXBvX25h
bWUgPSBkYXRhWydoZWFkJ11bJ3JlcG8nXVsnZnVsbF9uYW1lJ10KKyAgICAgICAgaXNfZm9yayA9
IHJlcG9fbmFtZSAhPSBzZWxmLl9naXRodWJfcHJvamVjdAorCisgICAgICAgIGxvZ2dlci5pbmZv
KAorICAgICAgICAgICAgJ1B1bGwgcmVxdWVzdCAlcyBpcyBmcm9tIFwnJXNcJy4gSXMgYSBmb3Jr
OiAlcycsCisgICAgICAgICAgICBwcl9udW1iZXIsIHJlcG9fbmFtZSwgaXNfZm9yaworICAgICAg
ICApCisKKyAgICAgICAgcmV0dXJuIGlzX2ZvcmsKKwogICAgIEBndWFyZCgnY29yZScpCiAgICAg
ZGVmIGNyZWF0ZV9yZWYoc2VsZiwgcmVmc3BlYywgcmV2aXNpb24pOgogICAgICAgICB1cmwgPSAn
e30vcmVwb3Mve30vZ2l0L3JlZnMnLmZvcm1hdChzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJv
amVjdCkKQEAgLTE4MCw5ICsyMDEsOCBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgQGd1
YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX2RlcGxveW1lbnQoc2VsZiwgdGFyZ2V0LCBkZXBs
b3ltZW50LCBzdGF0ZSwgZGVzY3JpcHRpb249JycpOgogICAgICAgICBpZiBzdGF0ZSBpbiAoJ3Bl
bmRpbmcnLCAnc3VjY2VzcycpOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3N1
Ym1pc3Npb25zL3t9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0LCBkZXBsb3ltZW50
WydlbnZpcm9ubWVudCddCi0gICAgICAgICAgICApCisgICAgICAgICAgICBwcl9udW1iZXIgPSBk
ZXBsb3ltZW50WydlbnZpcm9ubWVudCddW2xlbihERVBMT1lNRU5UX1BSRUZJWCk6XQorICAgICAg
ICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3t9Jy5mb3JtYXQodGFyZ2V0LCBwcl9udW1iZXIp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwgPSBOb25lCiAgICAg
ICAgIHVybCA9ICd7fS9yZXBvcy97fS9kZXBsb3ltZW50cy97fS9zdGF0dXNlcycuZm9ybWF0KApA
QCAtMjQ2LDEzICsyNjYsMTYgQEAgZGVmIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1ZXN0
KToKIAogICAgIHJldHVybiBGYWxzZQogCi1kZWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVx
dWVzdCk6CitkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAg
ICAgcmV0dXJuICgKLSAgICAgICAgaXNfb3BlbihwdWxsX3JlcXVlc3QpIGFuZAotICAgICAgICBw
dWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElPTl9HSVRIVUJfVVNF
UlMgYW5kICgKLSAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10g
aW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TIG9yCi0gICAgICAgICAgICBoYXNfbWlycm9y
aW5nX2xhYmVsKHB1bGxfcmVxdWVzdCkKLSAgICAgICAgKQorICAgICAgICBpc19vcGVuKHB1bGxf
cmVxdWVzdCkgYW5kICgKKyAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1
ZXN0KSBvciAoCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10g
bm90IGluIEFVVE9NQVRJT05fR0lUSFVCX1VTRVJTIGFuZAorICAgICAgICAgICAgICAgIHB1bGxf
cmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJ
T05TCisgICAgICAgICAgICApCisgICAgICAgICkgYW5kCisgICAgICAgICMgUXVlcnkgdGhpcyBs
YXN0IGFzIGl0IHJlcXVpcmVzIGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5CisgICAgICAgIG5v
dCBwcm9qZWN0LnB1bGxfcmVxdWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQogICAgICkK
IAogZGVmIGlzX2RlcGxveWVkKGhvc3QsIGRlcGxveW1lbnQpOgpAQCAtMjkxLDcgKzMxNCw3IEBA
IGRlZiBzeW5jaHJvbml6ZShob3N0LCBnaXRodWJfcHJvamVjdCwgd2luZG93KToKICAgICAgICAg
cmV2aXNpb25fdHJ1c3RlZCA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3BlY190cnVzdGVkKQog
ICAgICAgICByZXZpc2lvbl9vcGVuID0gcmVtb3RlLmdldF9yZXZpc2lvbihyZWZzcGVjX29wZW4p
CiAKLSAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVxdWVzdCk6CisgICAgICAg
IGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgogICAgICAgICAg
ICAgbG9nZ2VyLmluZm8oJ1B1bGwgUmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQogCiAgICAg
ICAgICAgICBpZiByZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IGY5MDg2YTMxYmQ5M2JhZjcyODE5ZmM0NTBmOTBhMjkwZDY1Njc0ZmQuLmE1
YThjYTdkYjI5YWI0ODRmZTM5NzQ3NWY5YjVjZmM0MTJkNjUxN2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcnVuX3RjLnB5CkBAIC0zNiwxMSArMzYsMTUgQEAgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBH
aXRIdWIgZXZlbnQgcGF5bG9hZC4KICIiIgogCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBmbm1h
dGNoCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cworaW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCB6
aXBmaWxlCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgU29ja2V0RXJyb3IgICMgTk9RQTog
TjgxMgogaW1wb3J0IGVycm5vCiB0cnk6CkBAIC0xNDcsMTMgKzE1MSwxNCBAQCBkZWYgaW5zdGFs
bF9jaHJvbWUoY2hhbm5lbCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXpl
ZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKICAgICBkZXN0ID0gb3MucGF0aC5q
b2luKCIvdG1wIiwgZGViX2FyY2hpdmUpCi0gICAgcmVzcCA9IHVybG9wZW4oImh0dHBzOi8vZGwu
Z29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUpCisgICAgZGViX3VybCA9
ICJodHRwczovL2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRlYl9hcmNoaXZlCiAg
ICAgd2l0aCBvcGVuKGRlc3QsICJ3IikgYXMgZjoKLSAgICAgICAgZi53cml0ZShyZXNwLnJlYWQo
KSkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgZGViX3VybCkKIAogICAg
IHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQogICAgIHJ1bihbInN1
ZG8iLCAiZ2RlYmkiLCAiLXFuIiwgIi90bXAvJXMiICUgZGViX2FyY2hpdmVdKQogCisKIGRlZiBp
bnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwpOgogICAgICMgQ29u
ZmlndXJlIHdlYmtpdGd0ay5vcmcvZGViaWFuIHJlcG9zaXRvcnkgZm9yICRjaGFubmVsIGFuZCBw
aW4gaXQgd2l0aCBtYXhpbXVtIHByaW9yaXR5CiAgICAgcnVuKFsic3VkbyIsICJhcHQta2V5Iiwg
ImFkdiIsICItLWZldGNoLWtleXMiLCAiaHR0cHM6Ly93ZWJraXRndGsub3JnL2RlYmlhbi9hcHQu
a2V5Il0pCkBAIC0xNjksMTUgKzE3NCwxNiBAQCBkZWYgaW5zdGFsbF93ZWJraXRndGtfZnJvbV9h
cHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFx
eSIsICItdCIsICJiaW9uaWMtd3B0LXdlYmtpdC11cGRhdGVzIiwgImluc3RhbGwiLCAid2Via2l0
Mmd0ay1kcml2ZXIiXSkKIAogCi0jIERvd25sb2FkIGFuIFVSTCBpbiBjaHVua3MgYW5kIHNhdmVz
IGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0cnVuY2F0aW5nIGl0KQotIyBJdCBkb2Vzbid0IGNs
b3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgotIyBJdCByZXRy
aWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8gbWF4X3JldHJpZXMu
Ci1kZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4X3JldHJpZXM9Myk6
Ci0gICAgZG93bmxvYWRfc3VjY2VlZCA9IEZhbHNlCi0gICAgaWYgbWF4X3JldHJpZXMgPCAwOgot
ICAgICAgICBtYXhfcmV0cmllcyA9IDAKLSAgICBmb3IgY3VycmVudF9yZXRyeSBpbiByYW5nZSht
YXhfcmV0cmllcysxKToKK2RlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBt
YXhfcmV0cmllcz01KToKKyAgICAiIiJEb3dubG9hZCBhbiBVUkwgaW4gY2h1bmtzIGFuZCBzYXZl
cyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKKyAgICBJdCBkb2Vzbid0
IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgorICAgIEl0
IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2YgRUNPTk5SRVNFVCB1cCB0byBtYXhfcmV0
cmllcy4iIiIKKyAgICBpZiBtYXhfcmV0cmllcyA8IDE6CisgICAgICAgIG1heF9yZXRyaWVzID0g
MQorICAgIHdhaXQgPSAyCisgICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFuZ2UoMSwgbWF4X3Jl
dHJpZXMrMSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJJTkZPOiBEb3dubG9h
ZGluZyAlcyBUcnkgJWQvJWQiICUgKHVybCwgY3VycmVudF9yZXRyeSwgbWF4X3JldHJpZXMpKQog
ICAgICAgICAgICAgcmVzcCA9IHVybG9wZW4odXJsKQogICAgICAgICAgICAgIyBXZSBtYXkgY29t
ZSBoZXJlIGluIGEgcmV0cnksIGVuc3VyZSB0byB0cnVuY2F0ZSBmZCBiZWZvcmUgc3RhcnQgd3Jp
dGluZy4KICAgICAgICAgICAgIGZkLnNlZWsoMCkKQEAgLTE4OCwyMiArMTk0LDIzIEBAIGRlZiBk
b3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBtYXhfcmV0cmllcz0zKToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsgICMgRG93bmxvYWQgZmluaXNoZWQKICAgICAgICAgICAgICAg
ICBmZC53cml0ZShjaHVuaykKICAgICAgICAgICAgIGZkLmZsdXNoKCkKLSAgICAgICAgICAgIGRv
d25sb2FkX3N1Y2NlZWQgPSBUcnVlCi0gICAgICAgICAgICBicmVhayAgIyBTdWNlc3MKKyAgICAg
ICAgICAgICMgU3VjY2VzcworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGV4Y2VwdCBTb2Nr
ZXRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFU0VU
OgotICAgICAgICAgICAgICAgIHJhaXNlICAjIFVua25vd24gZXJyb3IKLSAgICAgICAgICAgIGlm
IGN1cnJlbnRfcmV0cnkgPCBtYXhfcmV0cmllczoKLSAgICAgICAgICAgICAgICBwcmludCgiRVJS
T1I6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gUmV0cnlpbmcgLi4uIikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZSAgIyBSZXRyeQotICAgIHJldHVybiBkb3dubG9hZF9zdWNjZWVkCisgICAg
ICAgICAgICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXMgYW5kIGUuZXJybm8gPT0gZXJy
bm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAjIFJldHJ5CisgICAgICAgICAgICAgICAg
cHJpbnQoIkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5aW5nIGFmdGVyICVk
cy4uLiIgJSB3YWl0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICAgICAg
ICAgICAgICB3YWl0ICo9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBN
YXhpbXVtIHJldHJpZXMgb3IgdW5rbm93biBlcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlCiAK
IAogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fdGFyYmFsbF9idW5kbGUoY2hhbm5lbCk6CiAg
ICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIudGFyLnh6IikgYXMg
dGVtcF90YXJiYWxsOgogICAgICAgICBkb3dubG9hZF91cmwgPSAiaHR0cHM6Ly93ZWJraXRndGsu
b3JnL2J1aWx0LXByb2R1Y3RzL25pZ2h0bHkvd2Via2l0Z3RrLW5pZ2h0bHktYnVpbGQtbGFzdC50
YXIueHoiCi0gICAgICAgIGlmIG5vdCBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcih0ZW1wX3Rh
cmJhbGwsIGRvd25sb2FkX3VybCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNh
bid0IGRvd25sb2FkICVzLiBBYm9ydGluZyIgJSBkb3dubG9hZF91cmwpCisgICAgICAgIGRvd25s
b2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRfdXJsKQogICAgICAg
ICBydW4oWyJzdWRvIiwgInRhciIsICJ4ZmEiLCB0ZW1wX3RhcmJhbGwubmFtZSwgIi1DIiwgIi8i
XSkKICAgICAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0
IiwgIi1xcXkiLCAidXBkYXRlIl0pCkBAIC0yMTgsNiArMjI1LDcgQEAgZGVmIGluc3RhbGxfd2Vi
a2l0Z3RrKGNoYW5uZWwpOgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVu
cmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKKwogZGVmIHN0YXJ0
X3h2ZmIoKToKICAgICBzdGFydChbInN1ZG8iLCAiWHZmYiIsIG9zLmVudmlyb25bIkRJU1BMQVki
XSwgIi1zY3JlZW4iLCAiMCIsCiAgICAgICAgICAgICIlc3glc3glcyIgJSAob3MuZW52aXJvblsi
U0NSRUVOX1dJRFRIIl0sCkBAIC0yNDYsNyArMjU0LDY3IEBAIGRlZiBzZXRfdmFyaWFibGVzKGV2
ZW50KToKICAgICAgICAgb3MuZW52aXJvblsiR0lUSFVCX0JSQU5DSCJdID0gYnJhbmNoCiAKIAor
ZGVmIHRhc2tfdXJsKHRhc2tfaWQpOgorICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NM
VVNURVJfUk9PVF9VUkwnXQorICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVy
Lm5ldCc6CisgICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5u
ZXQvdjEvdGFzayIKKyAgICBlbHNlOgorICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAi
L2FwaS9xdWV1ZS92MS90YXNrIgorCisgICAgcmV0dXJuICIlcy8lcyIgJSAocXVldWVfYmFzZSwg
dGFza19pZCkKKworCitkZWYgZG93bmxvYWRfYXJ0aWZhY3RzKGFydGlmYWN0cyk6CisgICAgYXJ0
aWZhY3RfbGlzdF9ieV90YXNrID0ge30KKyAgICBmb3IgYXJ0aWZhY3QgaW4gYXJ0aWZhY3RzOgor
ICAgICAgICBiYXNlX3VybCA9IHRhc2tfdXJsKGFydGlmYWN0WyJ0YXNrIl0pCisgICAgICAgIGlm
IGFydGlmYWN0WyJ0YXNrIl0gbm90IGluIGFydGlmYWN0X2xpc3RfYnlfdGFzazoKKyAgICAgICAg
ICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAgICAgICAgICAgICAg
ZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgYmFzZV91cmwgKyAiL2FydGlmYWN0cyIpCisg
ICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgYXJ0aWZhY3RzX2RhdGEg
PSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgIGFydGlmYWN0X2xpc3RfYnlfdGFza1thcnRpZmFj
dFsidGFzayJdXSA9IGFydGlmYWN0c19kYXRhCisKKyAgICAgICAgYXJ0aWZhY3RzX2RhdGEgPSBh
cnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0aWZhY3RbInRhc2siXV0KKyAgICAgICAgcHJpbnQoIkRF
QlVHOiBHb3QgYXJ0aWZhY3RzICVzIiAlIGFydGlmYWN0c19kYXRhKQorICAgICAgICBmb3VuZCA9
IEZhbHNlCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gYXJ0aWZhY3RzX2RhdGFbImFydGlmYWN0
cyJdOgorICAgICAgICAgICAgcHJpbnQoIkRFQlVHOiBjYW5kaWRhdGU6ICVzIGdsb2I6ICVzIiAl
IChjYW5kaWRhdGVbIm5hbWUiXSwgYXJ0aWZhY3RbImdsb2IiXSkpCisgICAgICAgICAgICBpZiBm
bm1hdGNoLmZubWF0Y2goY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJnbG9iIl0pOgorICAg
ICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIHByaW50KCJJTkZPOiBG
ZXRjaGluZyBhcml0ZmFjdCAlcyBmcm9tIHRhc2sgJXMiICUgKGNhbmRpZGF0ZVsibmFtZSJdLCBh
cnRpZmFjdFsidGFzayJdKSkKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBjYW5kaWRhdGVb
Im5hbWUiXS5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgICAgIHVybCA9IGJhc2VfdXJs
ICsgIi9hcnRpZmFjdHMvIiArIGNhbmRpZGF0ZVsibmFtZSJdCisgICAgICAgICAgICAgICAgZGVz
dF9wYXRoID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIsIGFydGlmYWN0WyJk
ZXN0Il0sIGZpbGVfbmFtZSkpCisgICAgICAgICAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUoZGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhk
ZXN0X2Rpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAg
ICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0X3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIHVybCkKKworICAgICAgICAg
ICAgICAgIGlmIGFydGlmYWN0LmdldCgiZXh0cmFjdCIpOgorICAgICAgICAgICAgICAgICAgICB1
bnBhY2soZGVzdF9wYXRoKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBwcmlu
dCgiV0FSTklORzogTm8gYXJ0aWZhY3QgZm91bmQgbWF0Y2hpbmcgJXMgaW4gdGFzayAlcyIgJSAo
YXJ0aWZhY3RbImdsb2IiXSwgYXJ0aWZhY3RbInRhc2siXSkpCisKKworZGVmIHVucGFjayhwYXRo
KToKKyAgICBkZXN0ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisgICAgaWYgdGFyZmlsZS5pc190
YXJmaWxlKHBhdGgpOgorICAgICAgICBydW4oWyJ0YXIiLCAiLXhmIiwgcGF0aF0sIGN3ZD1vcy5w
YXRoLmRpcm5hbWUocGF0aCkpCisgICAgZWxpZiB6aXBmaWxlLmlzX3ppcGZpbGUocGF0aCk6Cisg
ICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHBhdGgpIGFzIGFyY2hpdmU6CisgICAgICAgICAg
ICBhcmNoaXZlLmV4dHJhY3RhbGwoZGVzdCkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiRVJS
T1I6IERvbid0IGtub3cgaG93IHRvIGV4dHJhY3QgJXMiICUgcGF0aCkKKyAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uCisKKwogZGVmIHNldHVwX2Vudmlyb25tZW50KGFyZ3MpOgorICAgIGlmICJUQVNL
X0FSVElGQUNUUyIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJ0aWZhY3RzID0ganNvbi5sb2Fk
cyhvcy5lbnZpcm9uWyJUQVNLX0FSVElGQUNUUyJdKQorICAgICAgICBkb3dubG9hZF9hcnRpZmFj
dHMoYXJ0aWZhY3RzKQorCiAgICAgaWYgYXJncy5ob3N0c19maWxlOgogICAgICAgICBtYWtlX2hv
c3RzX2ZpbGUoKQogCkBAIC0zNjQsMTYgKzQzMiwxMCBAQCBkZWYgZmV0Y2hfZXZlbnRfZGF0YSgp
OgogICAgICAgICAjIEZvciBleGFtcGxlIHVuZGVyIGxvY2FsIHRlc3RpbmcKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NMVVNURVJfUk9PVF9V
UkwnXQotICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCc6Ci0gICAg
ICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5uZXQvdjEvdGFzayIK
LSAgICBlbHNlOgotICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAiL2FwaS9xdWV1ZS92
MS90YXNrIgotCi0KLSAgICByZXNwID0gdXJsb3BlbigiJXMvJXMiICUgKHF1ZXVlX2Jhc2UsIHRh
c2tfaWQpKQotCi0gICAgdGFza19kYXRhID0ganNvbi5sb2FkKHJlc3ApCisgICAgd2l0aCB0ZW1w
ZmlsZS5UZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2Ny
aXB0b3IoZiwgdGFza191cmwodGFza19pZCkpCisgICAgICAgIGYuc2VlaygwKQorICAgICAgICB0
YXNrX2RhdGEgPSBqc29uLmxvYWQoZikKICAgICBldmVudF9kYXRhID0gdGFza19kYXRhLmdldCgi
ZXh0cmEiLCB7fSkuZ2V0KCJnaXRodWJfZXZlbnQiKQogICAgIGlmIGV2ZW50X2RhdGEgaXMgbm90
IE5vbmU6CiAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGV2ZW50X2RhdGEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rh
c2tjbHVzdGVyLXJ1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CmluZGV4IGFjNWFiYzEyYjFmMTdkMmZj
OTNjNmFjNTYzNmJmZDZmZTdjYWZhMDQuLmQ4ZTQyY2NlYTIxMTI2OTRjNmQzYjhiMWFhNmNhNzAz
NGVhMjIyODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5
CkBAIC05LDEwICs5LDE4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKIGJyb3dz
ZXJfc3BlY2lmaWNfYXJncyA9IHsKLSAgICAiZmlyZWZveCI6IFsiLS1pbnN0YWxsLWJyb3dzZXIi
XSwKICAgICAic2Vydm8iOiBbIi0taW5zdGFsbC1icm93c2VyIiwgIi0tcHJvY2Vzc2VzPTEyIl0K
IH0KIAorZGVmIGdldF9icm93c2VyX2FyZ3MocHJvZHVjdCk6CisgICAgaWYgcHJvZHVjdCA9PSAi
ZmlyZWZveCI6CisgICAgICAgIGxvY2FsX2JpbmFyeSA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5w
YXRoLmpvaW4oIn4iLCAiYnVpbGQiLCAiZmlyZWZveCIsICJmaXJlZm94IikpCisgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGxvY2FsX2JpbmFyeSk6CisgICAgICAgICAgICByZXR1cm4gWyItLWJp
bmFyeT0lcyIgJSBsb2NhbF9iaW5hcnldCisgICAgICAgIHByaW50KCJXQVJOSU5HOiBMb2NhbCBm
aXJlZm94IGJpbmFyeSBub3QgZm91bmQiKQorICAgICAgICByZXR1cm4gWyItLWluc3RhbGwtYnJv
d3NlciJdCisgICAgcmV0dXJuIGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQocHJvZHVjdCwgW10p
CisKIAogZGVmIGZpbmRfd3B0cmVwb3J0KGFyZ3MpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKCkKQEAgLTY2LDcgKzc0LDcgQEAgZGVmIG1haW4ocHJvZHVjdCwgY29tbWl0
X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgICAgICItLW5vLWhlYWRsZXNzIiwKICAgICAgICAgIi0t
dmVyaWZ5LWxvZy1mdWxsIgogICAgIF0KLSAgICB3cHRfYXJncyArPSBicm93c2VyX3NwZWNpZmlj
X2FyZ3MuZ2V0KHByb2R1Y3QsIFtdKQorICAgIHdwdF9hcmdzICs9IGdldF9icm93c2VyX2FyZ3Mo
cHJvZHVjdCkKIAogICAgICMgSGFjayB0byBydW4gc2Vydm8gd2l0aCBvbmUgcHJvY2VzcyBvbmx5
IGZvciB3ZHNwZWMKICAgICBpZiBwcm9kdWN0ID09ICJzZXJ2byIgYW5kICItLXRlc3QtdHlwZT13
ZHNwZWMiIGluIHdwdF9hcmdzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAppbmRl
eCAxMWYzNjdmOTg2Zjk3ZmRiZmU0MGYwOWIyYWU0MTE0ZjI2MzkxNmY3Li43ODVjODJjY2EzOWNk
ZmIxODZmZGEyNDEwM2E1YTZmZDY0OWJlZTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JF
QURNRS5tZApAQCAtNDAsNiArNDAsMTQgQEAgdG9wLWxldmVsIHByb3BlcnRpZXM6CiAqIGBuYW1l
YDogT3B0aW9uYWwgU3RyaW5nLiBOYW1lIHRvIHVzZSBmb3IgdGhlIHRhc2sgb3ZlcnJpZGluZyB0
aGUKICAgcHJvcGVydHkgbmFtZS4gVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBz
dWJzdGl0dXRpb25zCiAgIGRlc2NyaWJlZCBiZWxvdy4KKyogYGRvd25sb2FkLWFydGlmYWN0c2A6
IE9wdGlvbmFsIE9iamVjdC4gQW4gYXJ0aWZhY3QgdG8gZG93bmxvYWQgZnJvbQorICBhIHRhc2sg
dGhhdCB0aGlzIHRhc2sgZGVwZW5kcyBvbi4gVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgorICAtIGB0YXNrYCAtIE5hbWUgb2YgdGhlIHRhc2sgcHJvZHVjaW5nIHRoZSBhcnRpZmFj
dAorICAtIGBnbG9iYCAtIEEgZ2xvYiBwYXR0ZXJuIGZvciB0aGUgZmlsZW5hbWUgb2YgdGhlIGFy
dGlmYWN0CisgIC0gYGRlc3RgIC0gQSBkaXJlY3RvcnkgcmVsdGl2ZSB0byB0aGUgaG9tZSBkaXJl
Y3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UKKyAgICAgICAgICAgICB0aGUgYXJ0aWZhY3QKKyAgLSBg
ZXh0cmFjdGAgLSBPcHRpb25hbC4gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhbiBhcmNo
aXZlIGFydGlmYWN0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbi1wbGFj
ZS4KIAogIyMgVGFzayBFeHBhbnNpb25zCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lz
aW9uLnB5CmluZGV4IDBjOTM1YjkzZjhlZTg3ZjY2ZGFkZWZkZGQzYTExNjE2MGVkOWRkM2YuLmY4
ZjE4NmY3NDRkODA4Mjc5MGE4YzNiZWM4NjU0ZmExNWNhN2YzZTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNp
b24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kZWNpc2lvbi5weQpAQCAtMTk5LDYgKzE5OSw3IEBAIGRlZiBidWlsZF9mdWxs
X2NvbW1hbmQoZXZlbnQsIHRhc2spOgogfi9zdGFydC5zaCBcCiAgICUocmVwb191cmwpcyBcCiAg
ICUoZmV0Y2hfcmVmKXM7CitzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6ZGVhZHNuYWtlcy9w
cGEKICUoaW5zdGFsbF9zdHIpcwogY2Qgd2ViLXBsYXRmb3JtLXRlc3RzOwogLi90b29scy9jaS9y
dW5fdGMucHkgJShvcHRpb25zX3N0cilzIC0tICUodGFza19jbWQpczsKQEAgLTIxMyw3ICsyMTQs
NyBAQCBkZWYgZ2V0X293bmVyKGV2ZW50KToKICAgICByZXR1cm4gIndlYi1wbGF0Zm9ybS10ZXN0
c0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20iCiAKIAotZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50
LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKK2RlZiBjcmVhdGVfdGNfdGFz
ayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywgZW52X2V4dHJhPU5v
bmUpOgogICAgIGNvbW1hbmQgPSBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQsIHRhc2spCiAgICAg
dGFza19pZCA9IHRhc2tjbHVzdGVyLnNsdWdJZCgpCiAgICAgdGFza19kYXRhID0gewpAQCAtMjQw
LDEyICsyNDEsMjQgQEAgZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBf
aWQsIGRlcGVuZHNfb25faWRzKToKICAgICAgICAgICAgICJnaXRodWJfZXZlbnQiOiBqc29uLmR1
bXBzKGV2ZW50KQogICAgICAgICB9CiAgICAgfQorICAgIGlmIGVudl9leHRyYToKKyAgICAgICAg
dGFza19kYXRhWyJwYXlsb2FkIl1bImVudiJdLnVwZGF0ZShlbnZfZXh0cmEpCiAgICAgaWYgZGVw
ZW5kc19vbl9pZHM6CiAgICAgICAgIHRhc2tfZGF0YVsiZGVwZW5kZW5jaWVzIl0gPSBkZXBlbmRz
X29uX2lkcwogICAgICAgICB0YXNrX2RhdGFbInJlcXVpcmVzIl0gPSAiYWxsLWNvbXBsZXRlZCIK
ICAgICByZXR1cm4gdGFza19pZCwgdGFza19kYXRhCiAKIAorZGVmIGdldF9hcnRpZmFjdF9kYXRh
KGFydGlmYWN0LCB0YXNrX2lkX21hcCk6CisgICAgdGFza19pZCwgZGF0YSA9IHRhc2tfaWRfbWFw
W2FydGlmYWN0WyJ0YXNrIl1dCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRhc2siOiB0YXNrX2lk
LAorICAgICAgICAiZ2xvYiI6IGFydGlmYWN0WyJnbG9iIl0sCisgICAgICAgICJkZXN0IjogYXJ0
aWZhY3RbImRlc3QiXSwKKyAgICAgICAgImV4dHJhY3QiOiBhcnRpZmFjdC5nZXQoImV4dHJhY3Qi
LCBGYWxzZSkKKyAgICB9CisKKwogZGVmIGJ1aWxkX3Rhc2tfZ3JhcGgoZXZlbnQsIGFsbF90YXNr
cywgdGFza3MpOgogICAgIHRhc2tfaWRfbWFwID0gT3JkZXJlZERpY3QoKQogICAgIHRhc2tncm91
cF9pZCA9IG9zLmVudmlyb24uZ2V0KCJUQVNLX0lEIiwgdGFza2NsdXN0ZXIuc2x1Z0lkKCkpCkBA
IC0yNTgsNyArMjcxLDE0IEBAIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50LCBhbGxfdGFza3Ms
IHRhc2tzKToKICAgICAgICAgICAgICAgICAgICAgYWRkX3Rhc2soZGVwZW5kc19uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGFza3NbZGVwZW5kc19uYW1lXSkKICAgICAg
ICAgICAgICAgICBkZXBlbmRzX29uX2lkcy5hcHBlbmQodGFza19pZF9tYXBbZGVwZW5kc19uYW1l
XVswXSkKLSAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQs
IHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpCisgICAgICAgIGVudl9leHRyYSA9
IHt9CisgICAgICAgIGlmICJkb3dubG9hZC1hcnRpZmFjdHMiIGluIHRhc2s6CisgICAgICAgICAg
ICBlbnZfZXh0cmFbIlRBU0tfQVJUSUZBQ1RTIl0gPSBqc29uLmR1bXBzKAorICAgICAgICAgICAg
ICAgIFtnZXRfYXJ0aWZhY3RfZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXApCisgICAgICAgICAg
ICAgICAgIGZvciBhcnRpZmFjdCBpbiB0YXNrWyJkb3dubG9hZC1hcnRpZmFjdHMiXV0pCisKKyAg
ICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQsIHRhc2ssIHRh
c2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudl9leHRyYT1lbnZfZXh0cmEpCiAgICAgICAgIHRhc2tfaWRfbWFw
W3Rhc2tfbmFtZV0gPSAodGFza19pZCwgdGFza19kYXRhKQogCiAgICAgZm9yIHRhc2tfbmFtZSwg
dGFzayBpbiBpdGVyaXRlbXModGFza3MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFz
a3MvdGVzdC55bWwKaW5kZXggZTgwZTc5NDIwM2VkY2EzYzhkNWYxOWVhOTgzM2E0Zjc5ZTk3OWYw
OC4uMzE4NDM3YTgwZWMzMjQwNzIxYTE3Y2M2MjUzZjI0MTEwOTAzOGI2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC00LDcgKzQsNyBAQCBjb21wb25l
bnRzOgogICAgIHdvcmtlclR5cGU6IGNpCiAgICAgc2NoZWR1bGVySWQ6IHRhc2tjbHVzdGVyLWdp
dGh1YgogICAgIGRlYWRsaW5lOiAiMjQgaG91cnMiCi0gICAgaW1hZ2U6IGhhcmpnYW0vd2ViLXBs
YXRmb3JtLXRlc3RzOjAuMzQKKyAgICBpbWFnZTogd2VicGxhdGZvcm10ZXN0cy93cHQ6MC4zNwog
ICAgIG1heFJ1blRpbWU6IDcyMDAKICAgICBhcnRpZmFjdHM6CiAgICAgICBwdWJsaWMvcmVzdWx0
czoKQEAgLTgyLDYgKzgyLDExIEBAIGNvbXBvbmVudHM6CiAgIGJyb3dzZXItZmlyZWZveDoKICAg
ICBkZXBlbmRzLW9uOgogICAgICAgLSBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFubmVsfQor
ICAgIGRvd25sb2FkLWFydGlmYWN0czoKKyAgICAgIC0gdGFzazogZG93bmxvYWQtZmlyZWZveC0k
e3ZhcnMuY2hhbm5lbH0KKyAgICAgICAgZ2xvYjogcHVibGljL3Jlc3VsdHMvZmlyZWZveC0ke3Zh
cnMuY2hhbm5lbH0uKgorICAgICAgICBkZXN0OiBidWlsZC8KKyAgICAgICAgZXh0cmFjdDogdHJ1
ZQogCiAgIGJyb3dzZXItd2Via2l0Z3RrX21pbmlicm93c2VyOiB7fQogCkBAIC05OCw4ICsxMDMs
MTUgQEAgY29tcG9uZW50czoKICAgICBlbnY6CiAgICAgICBUT1hFTlY6IHB5MzYKICAgICAgIFBZ
X0NPTE9SUzogMAorCisgIHRveC1weXRob24zODoKKyAgICBlbnY6CisgICAgICBUT1hFTlY6IHB5
MzgKKyAgICAgIFBZX0NPTE9SUzogMAogICAgIGluc3RhbGw6Ci0gICAgICAtIHB5dGhvbjMtcGlw
CisgICAgICAtIHB5dGhvbjMuOAorICAgICAgLSBweXRob24zLjgtZGlzdHV0aWxzCisgICAgICAt
IHB5dGhvbjMuOC1kZXYKIAogICB0ZXN0cy1hZmZlY3RlZDoKICAgICBvcHRpb25zOgpAQCAtMjE4
LDYgKzIzMCw3IEBAIHRhc2tzOgogICAgICAgICAgICAgICAtLQogICAgICAgICAgICAgICAtLWNo
YW5uZWw9JHt2YXJzLmNoYW5uZWx9CiAgICAgICAgICAgICAgIC0tdmVyaWZ5CisgICAgICAgICAg
ICAgIC0tdmVyaWZ5LW5vLWNoYW9zLW1vZGUKIAogICAgICAgICAtIHdwdC0ke3ZhcnMuYnJvd3Nl
cn0tJHt2YXJzLmNoYW5uZWx9LXJlc3VsdHM6CiAgICAgICAgICAgICB1c2U6CkBAIC0yNzIsNyAr
Mjg1LDcgQEAgdGFza3M6CiAgICAgICAgIGRvd25sb2FkLWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9
OgogICAgICAgICAgIHVzZToKICAgICAgICAgICAgIC0gd3B0LWJhc2UKLSAgICAgICAgICBjb21t
YW5kOiAiLi93cHQgaW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5hdGlvbiAvaG9tZS90
ZXN0L2FydGlmYWN0cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSBmaXJlZm94IGJyb3dzZXIi
CisgICAgICAgICAgY29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9hZC1vbmx5IC0tZGVz
dGluYXRpb24gL2hvbWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0g
IC0tcmVuYW1lPWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJvd3NlciIKIAogICAt
IGxpbnQ6CiAgICAgICB1c2U6CkBAIC0zMDYsOSArMzE5LDkgQEAgdGFza3M6CiAgICAgICAgIHJ1
bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMvIHVuaXR0ZXN0
cyAoUHl0aG9uIDMpOgorICAtIHRvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzLjYpOgogICAgICAg
ZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5k
ZXIgUHl0aG9uIDMsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3Ig
dG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42LCBleGNsdWRpbmcgd3B0cnVubmVyCiAgICAg
ICB1c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCkBAIC0zMjAs
NyArMzMzLDIxIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gdG9vbHNf
dW5pdHRlc3QKIAotICAtIHRvb2xzL3dwdC8gdGVzdHM6CisgIC0gdG9vbHMvIHVuaXR0ZXN0cyAo
UHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgVW5pdCB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy44LCBleGNsdWRpbmcgd3B0cnVubmVyCisg
ICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAg
ICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xzX3Vu
aXR0ZXN0LnNoCisgICAgICBlbnY6CisgICAgICAgIEhZUE9USEVTSVNfUFJPRklMRTogY2kKKyAg
ICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0gdG9vbHNfdW5p
dHRlc3QKKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAyKToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNvbW1hbmRzCiAgICAg
ICB1c2U6CkBAIC0zNDIsNiArMzY5LDUwIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAg
ICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24g
My42KToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3Igd3B0IGNvbW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAg
LSB0cmlnZ2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjMKKyAgICAgIGNvbW1hbmQ6IC4vdG9v
bHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMK
KyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3Nl
cjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFu
bmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1
ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRf
aW50ZWdyYXRpb24KKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpOgorICAgICAg
ZGVzY3JpcHRpb246ID4tCisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZvciB3cHQgY29tbWFu
ZHMKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIK
KyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0
LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgIG9wdGlv
bnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3NlcjoKKyAgICAgICAg
ICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFubmVsOiBleHBlcmlt
ZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1ZQorICAgICAgc2No
ZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRfaW50ZWdyYXRpb24K
KwogICAtIHJlc291cmNlcy8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAg
VGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJjZXMvCkBA
IC0zNjIsMTAgKzQzMywxMiBAQCB0YXNrczoKICAgLSBpbmZyYXN0cnVjdHVyZS8gdGVzdHM6CiAg
ICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisg
ICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CiAgICAgICB1c2U6CiAgICAgICAg
IC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCi0gICAgICAgIC0gdG94LXB5dGhvbjIK
KyAgICAgICAgLSBicm93c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCiAgICAgICBpbnN0YWxsOgogICAgICAgICAtIGxp
Ym5zczMtdG9vbHMKQEAgLTM4MiwzICs0NTUsMjggQEAgdGFza3M6CiAgICAgICBzY2hlZHVsZS1p
ZjoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHdwdHJ1bm5lcl9pbmZyYXN0cnVjdHVy
ZQorCisgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMyk6CisgICAgICBkZXNjcmlw
dGlvbjogPi0KKyAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisgICAgICB2YXJzOgor
ICAgICAgICBjaGFubmVsOiBuaWdodGx5CisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UK
KyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3dwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZS5zaCAtLXB5MworICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBw
eXRob24zLXBpcAorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgICAgLSBsaWJhcHBpbmRp
Y2F0b3IxCisgICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgorICAgICAgb3B0aW9uczoKKyAgICAg
ICAgb29tLWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gY2hyb21l
CisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZiOiB0cnVlCisgICAg
ICAgIGhvc3RzOiBmYWxzZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6Cisg
ICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQppbmRleCBiMTcwOTI4YjI5MGEyN2Y3NWVh
ZGE2NjE2MmVhNDA0YTFkYmFlOWY5Li40N2NiYzJlODdiYjgwNTk3ZGQ5ODBlOWY5OGJjNDEzYjA0
MTZiNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3Zh
bGlkLnB5CkBAIC02LDcgKzYsNiBAQCBpbXBvcnQganNvbmUKIGltcG9ydCBtb2NrCiBpbXBvcnQg
cHl0ZXN0CiBpbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKIGltcG9ydCB5YW1sCiBmcm9tIGpz
b25zY2hlbWEgaW1wb3J0IHZhbGlkYXRlCiAKQEAgLTIwLDkgKzE5LDYgQEAgZGVmIGRhdGFfcGF0
aChmaWxlbmFtZSk6CiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihoZXJlLCAiLi4iLCAidGVzdGRh
dGEiLCBmaWxlbmFtZSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mby5t
YWpvciA9PSAyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idGFza2NsdXN0ZXIgbGlicmFy
eSBoYXMgYW4gZW5jb2RpbmcgYnVnICIKLSAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc2tjbHVzdGVyL2pzb24tZS9pc3N1ZXMvMzM4IikKIGRlZiB0ZXN0X3ZlcmlmeV90
YXNrY2x1c3Rlcl95bWwoKToKICAgICAiIiJWZXJpZnkgdGhhdCB0aGUganNvbi1lIGluIHRoZSAu
dGFza2NsdXN0ZXIueW1sIGlzIHZhbGlkIiIiCiAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihy
b290LCAiLnRhc2tjbHVzdGVyLnltbCIpLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CkBAIC00Niwx
MSArNDIsMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAiIiJWZXJpZnkgdGhh
dCB0aGUgZGVjaXNpb24gdGFzayBwcm9kdWNlcyB0YXNrcyB3aXRoIGEgdmFsaWQgcGF5bG9hZCIi
IgogICAgIGZyb20gdG9vbHMuY2kudGMuZGVjaXNpb24gaW1wb3J0IGRlY2lkZQogCi0gICAgY3Jl
YXRlX3Rhc2tfc2NoZW1hID0gcmVxdWVzdHMuZ2V0KAotICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tjbHVzdGVyL2Jsb2IvbWFzdGVyL3Nl
cnZpY2VzL3F1ZXVlL3NjaGVtYXMvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC55bWwiKQotICAgIGNy
ZWF0ZV90YXNrX3NjaGVtYSA9IHlhbWwuc2FmZV9sb2FkKGNyZWF0ZV90YXNrX3NjaGVtYS5jb250
ZW50KQorICAgIHIgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vY29tbXVuaXR5LXRjLnNlcnZpY2Vz
Lm1vemlsbGEuY29tL3NjaGVtYXMvcXVldWUvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC5qc29uIikK
KyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIGNyZWF0ZV90YXNrX3NjaGVtYSA9IHIuanNv
bigpCiAKLSAgICBwYXlsb2FkX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL2RvY2tlci13b3JrZXIvbWFzdGVyL3NjaGVt
YXMvdjEvcGF5bG9hZC5qc29uIikuanNvbigpCisgICAgIyBUT0RPKEhleGNsZXMpOiBDaGFuZ2Ug
aXQgdG8gaHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5jb20vcmVmZXJlbmNl
cy9zY2hlbWFzL2RvY2tlci13b3JrZXIvdjEvcGF5bG9hZC5qc29uCisgICAgIyBhZnRlciB0aGUg
bmV4dCBDb21tdW5pdHktVEMgcmVsZWFzZSAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mzk3MzIpLi4KKyAgICByID0gcmVxdWVzdHMuZ2V0KAorICAg
ICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tj
bHVzdGVyLyIKKyAgICAgICAgIjNlZDUxMWVmOTExOWRhNTRmYzA5M2U5NzZiN2I1OTU1ODc0Yzli
NTQvd29ya2Vycy9kb2NrZXItd29ya2VyL3NjaGVtYXMvdjEvcGF5bG9hZC5qc29uIikKKyAgICBy
LnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIHBheWxvYWRfc2NoZW1hID0gci5qc29uKCkKIAogICAg
IGpvYnMgPSBbImxpbnQiLAogICAgICAgICAgICAgIm1hbmlmZXN0X3VwbG9hZCIsCkBAIC0xMjcs
MTIgKzEyOSwxNyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ3dwdC1jaHJv
bWUtZGV2LWNyYXNodGVzdC0xJywKICAgICAgICdsaW50J30pLAogICAgICgicHJfZXZlbnQuanNv
biIsIFRydWUsIHsiLnRhc2tjbHVzdGVyLnltbCIsIi50cmF2aXMueW1sIiwidG9vbHMvY2kvc3Rh
cnQuc2gifSwKLSAgICAgeydsaW50JywKKyAgICAgeydkb3dubG9hZC1maXJlZm94LW5pZ2h0bHkn
LAorICAgICAgJ2xpbnQnLAogICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAyKScsCi0g
ICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpJywKLSAgICAgICd0b29scy93cHQvIHRl
c3RzJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KScsCisgICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5
dGhvbiAyKScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMuNiknLAorICAgICAg
J3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpJywKICAgICAgICdyZXNvdXJjZXMvIHRlc3Rz
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnfSksCisgICAgICAnaW5mcmFzdHJ1Y3R1
cmUvIHRlc3RzJywKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKSd9KSwK
ICAgICAjIE1vcmUgdGVzdHMgYXJlIGFmZmVjdGVkIGluIHRoZSBhY3R1YWwgUFIgYnV0IGl0IHNo
b3VsZG4ndCBhZmZlY3QgdGhlIHNjaGVkdWxlZCB0YXNrcwogICAgICgicHJfZXZlbnRfdGVzdHNf
YWZmZWN0ZWQuanNvbiIsIFRydWUsIHsibGF5b3V0LWluc3RhYmlsaXR5L2NsaXAtbmVnYXRpdmUt
Ym90dG9tLW1hcmdpbi5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxheW91dC1pbnN0YWJpbGl0eS9jb21wb3NpdGVkLWVsZW1lbnQtbW92ZW1lbnQu
aHRtbCJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQppbmRl
eCA5NGY3OTk4NzcwY2Y1ZDhiYWQzNmQxODhkZDYzZTI1M2Y5ODE5OWE4Li5hYTEyNzM4MjA0ZjM2
NTJlMmRmOTY0NDQ0NjkzNjhlMGU2MjYxOTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3Rlc3Rfam9icy5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVmIHRlc3RfYnVpbGRf
Y3NzKCk6CiAKIAogZGVmIHRlc3RfdXBkYXRlX2J1aWx0KCk6Ci0gICAgYXNzZXJ0IGpvYnMuZ2V0
X2pvYnMoWyIyZGNvbnRleHQvZm9vLmh0bWwiXSwKKyAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
Imh0bWwvY2FudmFzL2VsZW1lbnQvZm9vLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9CiAgICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQotICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsib2Zmc2NyZWVuLWNhbnZhcy9mb28uaHRtbCJdLAorICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvb2Zmc2NyZWVuL2Zvby5odG1sIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0g
eyJ1cGRhdGVfYnVpbHQifQogCiAKQEAgLTEzNCwzICsxMzQsNyBAQCBkZWYgdGVzdF93cHRfaW5m
cmFzdHJ1Y3R1cmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CiAg
ICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJpbmZyYXN0cnVjdHVyZS9hc3N1bXB0aW9ucy9haGVt
Lmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl9p
bmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CisKK2RlZiB0
ZXN0X3dkc3BlY19zdXBwb3J0KCk6CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ3ZWJkcml2
ZXIvdGVzdHMvc3VwcG9ydC9fX2luaXRfXy5weSJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0
X3ByX3ByZXZpZXcucHkKaW5kZXggNjM0ODJmYjE4NGM3ZjE0ZGIwZWJkNDVjMTg3OTRlM2E5Nzcx
YzkwYi4uMmQ5OTY2ZmM4Y2Y0MTg3OTEzYWRjZTg2MDllZTc1MGFkZTFiOTc5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiBjbGFz
cyBSZXF1ZXN0cyhvYmplY3QpOgogICAgIGdldF9yYXRlID0gKCdHRVQnLCAnL3JhdGVfbGltaXQn
LCB7fSkKICAgICBzZWFyY2ggPSAoJ0dFVCcsICcvc2VhcmNoL2lzc3VlcycsIHt9KQorICAgIHBy
X2RldGFpbHMgPSAoJ0dFVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL3B1bGxzLzIzJywg
e30pCiAgICAgcmVmX2NyZWF0ZV9vcGVuID0gKAogICAgICAgICAnUE9TVCcsICcvcmVwb3MvdGVz
dC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidyZWZzL3Bycy1vcGVuLzIzJ30KICAg
ICApCkBAIC0zNzYsNiArMzc3LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19jb2xsYWJv
cmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQp
LAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMu
c2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7CkBAIC0zOTEsNiArMzkz
LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29sbGFib3JhdG9yKCk6CiAgICAgICAg
ICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAg
ICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8n
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3Qt
cmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgy
MDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwge30pKSwKQEAgLTQ1
Miw2ICs0NjMsNDEgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250
cmlidXRvcigpOgogICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKICAgICBhc3NlcnQgc2FtZV9t
ZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCitkZWYgdGVzdF9zeW5j
aHJvbml6ZV9pZ25vcmVfcHVsbF9yZXF1ZXN0X2Zyb21fZm9yaygpOgorICAgIGV4cGVjdGVkX3Ry
YWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0
KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAg
ICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnbGFiZWxzJzogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6ICdncmFjZSd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFU
T1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzog
eworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICdzb21lLW90aGVyLW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAorICAgIF0KKworICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisKKyAg
ICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKwogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190
cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLApAQCAtNDU5LDEyICs1MDUs
MTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAog
ICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdpdGVtcyc6
IFsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJl
cic6IDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBjb250cmli
dXRvciAodW50cnVzdGVkKSwgYnV0IHRoZSBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAg
IyBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xh
YmVscyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIn
OiB7J2xvZ2luJzogJ0hleGNsZXMnfSwKQEAgLTQ3NCw2ICs1MjMsNjAgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgICAgICAgICAgICAgJ2lu
Y29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAg
ICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgyMDAsIHt9KSksCisg
ICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCisgICAgICAg
IChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCisgICAgXQorCisgICAgcmV0dXJuY29kZSwg
YWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZp
YykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgc2FtZV9tZW1iZXJz
KGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQorCitkZWYgdGVzdF9zeW5jaHJvbml6
ZV9zeW5jX2JvdF93aXRoX2xhYmVsKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5n
ZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRl
LCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAgICAgICAgMjAwLAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9ybWFsbHkgbm90
IG1pcnJvcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlzc3VlIGhhcyBi
ZWVuIGxhYmVsbGVkIGFzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1
bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0
cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFk
JzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAg
ICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmRl
cGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLApAQCAtNDkyLDYgKzU5NSw3IEBAIGRlZiB0ZXN0X3N5
bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTUwNiw2ICs2MTAsMTUgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAgICAgICAgICdpbmNvbXBs
ZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAgICAgICAg
KFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkp
LAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCiAgICAgICAg
IChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCkBAIC01MjgsNiArNjQxLDcgQEAgZGVm
IHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgyMDAsCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAtNTQyLDYgKzY1NiwxNSBAQCBkZWYgdGVzdF9z
eW5jaHJvbml6ZV91cGRhdGVfbWVtYmVyKCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVf
cmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVx
dWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAn
aGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAg
ICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW3snc29tZSc6ICdkZXBsb3lt
ZW50J31dKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSks
CiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
ZG9ja2VyL0RvY2tlcmZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCmluZGV4IDBhODQyZGUxYWI4NTdkMWY2NTVi
OTM2NWRmNjFmM2ZhOTc4ZTMxYmUuLmYzOTI3ZmQwZDcxY2NmMjkyZDk2OTlkNTk3YTQ3OTk0NWE4
ZTUxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQpAQCAtMjUsNiAr
MjUsOCBAQCBSVU4gYXB0LWdldCAtcXF5IHVwZGF0ZSBcCiAgICAgcHVsc2VhdWRpbyBcCiAgICAg
cHl0aG9uIFwKICAgICBweXRob24tcGlwIFwKKyAgICBweXRob24zIFwKKyAgICBweXRob24zLXBp
cCBcCiAgICAgcWVtdS1rdm0gXAogICAgIHR6ZGF0YSBcCiAgICAgc3VkbyBcCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9SRUFETUUubWQKaW5kZXggNDUwOTgxZjY4NmJmYWNlMmQ5MjQzZTU2Mjgw
NDBiYjZiMmY2YzRlMC4uOTM0MmFkZWQyOThiZGQwZTVkYWFjMTIyODljNzgxNjNkMWQ1YmVjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZApAQCAtMSwxMCArMSwxOCBAQAog
VGhpcyBkb2NrZXIgaW1hZ2VzIGlzIHVzZWQgZm9yIHRlc3RpbmcgQ2hyb21lLCBGaXJlZm94LCBX
ZWJLaXRHVEsgYW5kIHJ1bm5pbmcKIG90aGVyIHRhc2tzIG9uIFRhc2tjbHVzdGVyLiBXaGVuIGFu
eSBvZiB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2hhbmdlLCB0aGUKLWltYWdlcyBtdXN0
IGJlIHVwZGF0ZWQgYXMgd2VsbC4gVG8gZG8gdGhpcywgYXNzdW1pbmcgeW91IGhhdmUgZG9ja2Vy
IGluc3RhbGxlZDoKK2ltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4gRG9pbmcgdGhpcyBy
ZXF1aXJlcyB5b3UgYmUgcGFydCBvZiB0aGUKKyd3ZWJwbGF0Zm9ybXRlc3RzJyBvcmdhbml6YXRp
b24gb24gRG9ja2VyIEh1YjsgcGluZyBASGV4Y2xlcyBvciBAc3RlcGhlbm1jZ3J1ZXIKK2lmIHlv
dSBhcmUgbm90IGEgbWVtYmVyLgorCitJbiB0aGlzIGRpcmVjdG9yeSwgcnVuIHRoZSBmb2xsb3dp
bmcsIHdoZXJlIGA8dGFnPmAgaXMgb2YgdGhlIGZvcm0KK2B3ZWJwbGF0Zm9ybXRlc3RzL3dwdDp7
Y3VycmVudC12ZXJzaW9uICsgMC4wMX1gOgogCi1JbiB0aGlzIGRpcmVjdG9yeSwgcnVuCiBgYGBz
aAotZG9ja2VyIGJ1aWxkIC10IDx0YWc+IC4KKyMgLS1wdWxsIGZvcmNlcyBEb2NrZXIgdG8gZ2V0
IHRoZSBuZXdlc3QgYmFzZSBpbWFnZS4KK2RvY2tlciBidWlsZCAtLXB1bGwgLXQgPHRhZz4gLgog
ZG9ja2VyIHB1c2ggPHRhZz4KIGBgYAogCitUaGVuIHVwZGF0ZSB0aGUgZm9sbG93aW5nIFRhc2tj
bHVzdGVyIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSB0aGUgbmV3IGltYWdlOgorKiBgLnRhc2tjbHVz
dGVyLnltbGAgKHRoZSBkZWNpc2lvbiB0YXNrKQorKiBgdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55
bWxgIChhbGwgdGhlIG90aGVyIHRhc2tzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQppbmRleCA5NzYxNTZjZjY1YTAwODIxYTExYTMzNTEzMDFiNDdjMTA3OGM4NDE2Li41
OWExY2ZmMmViZDBlZmRhMDZmYWRkMTQ0YTg0YjVkMzViMmQ4MWM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtOCw2ICs4LDcgQEAgd3B0X3Jvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIGRl
ZiBidWlsZCgqYXJncywgKiprd2FyZ3MpOgogICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbImRv
Y2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tcHVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS10
YWciLCAid3B0OmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVdKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CmluZGV4IDYxMjZiNzgxYmZhZGQxNWU4MmI4
YTNhM2I5NDk0MDUwOTM5ZWFiNmMuLjVjOGU2ZDc5YzMwMzhkZGZmNDk2ODhkNGYxZmM3ZTdmMjk0
YWQwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CkBAIC0yMSwyMyArMjEs
MjggQEAgZGVmIGl0ZXJfcmFuZ2Uobik6CiAgICAgICAgIGkgKz0gMQogCiAKK2RlZiBsb2codmFs
dWUpOgorICAgIHByaW50KHZhbHVlKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKIGRlZiBt
YWluKCk6CiAgICAgYXJncyA9IGdldF9hcmdzKCkucGFyc2VfYXJncygpCiAKICAgICBpZiBub3Qg
YXJncy5jbWQ6Ci0gICAgICAgIHByaW50KCJObyBjb21tYW5kIHN1cHBsaWVkIikKKyAgICAgICAg
bG9nKCJObyBjb21tYW5kIHN1cHBsaWVkIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIHJl
dGNvZGUgPSBOb25lCiAKICAgICBmb3IgbiBpbiBpdGVyX3JhbmdlKGFyZ3MuY291bnQpOgogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCgiUnVubmluZyAlcyBbdHJ5ICVkLyVkXSIgJSAo
IiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCisgICAgICAgICAgICBsb2co
IlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0iICUgKCIgIi5qb2luKGFyZ3MuY21kKSwgKG4rMSksIGFy
Z3MuY291bnQpKQogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGFyZ3MuY21kKQog
ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAg
ICAgICAgIHJldGNvZGUgPSBlLnJldHVybmNvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHByaW50KCJDb21tYW5kIHN1Y2NlZWRlZCIpCisgICAgICAgICAgICBsb2coIkNvbW1hbmQgc3Vj
Y2VlZGVkIikKICAgICAgICAgICAgIHJldGNvZGUgPSAwCiAgICAgICAgICAgICBicmVhawogCkBA
IC00NiwxMCArNTEsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHdhaXRfdGltZSA9IGFyZ3MuZmFjdG9yKipuICogYXJncy5kZWxheQogICAgICAgICBpZiBuIDwg
YXJncy5jb3VudCAtIDE6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIHdhaXRp
bmcgJXMgc2Vjb25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCisgICAgICAgICAgICBsb2coIkNv
bW1hbmQgZmFpbGVkLCB3YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUgd2FpdF90aW1lKQog
ICAgICAgICAgICAgdGltZS5zbGVlcCh3YWl0X3RpbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKKyAgICAgICAgICAg
IGxvZygiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKIAogICAgIHN5cy5leGl0KHJl
dGNvZGUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpp
bmRleCBkNWVhNGE2YThmM2Q2NGQ0YWJhM2I4ZGNiZTVmZmU4NDliNzRlOTY5Li4wZjNkOTQ1MGQx
MjM0NDljMGRjYzNmZjNjMDRjYTg2YzgxYjI0YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CkBAIC0yNjksNyArMjY5LDcgQEAgY2xhc3MgUGF0aEZp
bHRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmQo
aXRlbSkKIAogICAgICAgICAgICAgZGlybmFtZXNbOl0gPSBrZWVwX2RpcnMKLSAgICAgICAgICAg
IGFzc2VydCAiLmdpdCIgbm90IGluIGRpcm5hbWVzCisgICAgICAgICAgICBhc3NlcnQgbm90IGFu
eSgiLmdpdCIgPT0gbmFtZSBmb3IgbmFtZSwgXyBpbiBkaXJuYW1lcykKICAgICAgICAgICAgIHlp
ZWxkIG9yaWdfZGlycGF0aCwgZGlybmFtZXMsIGtlZXBfZmlsZXMKIAogICAgIGRlZiBfX2NhbGxf
XyhzZWxmLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQppbmRleCBhMDUwY2ZhOGE4ZTRlMjY5
OWRiNDRjZTllNTJmOGYyMzBhMzRhODY5Li5mYzFhODE2ZjhhYmY4NWVmY2UzMWEzYThlNjE0YmE1
OTFiNjAwOTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpAQCAtMjAsNyArMjAsNyBA
QCBmcm9tIC4uZ2l0aWdub3JlLmdpdGlnbm9yZSBpbXBvcnQgUGF0aEZpbHRlcgogZnJvbSAuLndw
dCBpbXBvcnQgdGVzdGZpbGVzCiBmcm9tIC4ubWFuaWZlc3QudmNzIGltcG9ydCB3YWxrCiAKLWZy
b20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBw
eXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlfdmFyaWFudHMsIGdldF9kZWZhdWx0
X2FueV92YXJpYW50cworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZp
bGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92YXJp
YW50cwogZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMs
IHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIGZyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KQEAgLTQxLDcgKzQxLDEy
IEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVW5pb24KIAotICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQorICAgICMgVGhlIElnbm9yZWxpc3QgaXMgYSB0d28gbGV2ZWwg
ZGljdGlvbmFyeS4gVGhlIHRvcCBsZXZlbCBpcyBpbmRleGVkIGJ5CisgICAgIyBlcnJvciBuYW1l
cyAoZS5nLiAnVFJBSUxJTkcgV0hJVEVTUEFDRScpLiBFYWNoIG9mIHRob3NlIHRoZW4gaGFzIGEg
bWFwIG9mCisgICAgIyBmaWxlIHBhdHRlcm5zIChlLmcuICdmb28vKicpIHRvIGEgc2V0IG9mIHNw
ZWNpZmljIGxpbmUgbnVtYmVycyBmb3IgdGhlCisgICAgIyBleGNlcHRpb24uIFRoZSBsaW5lIG51
bWJlcnMgYXJlIG9wdGlvbmFsOyBpZiBtaXNzaW5nIHRoZSBlbnRpcmUgZmlsZQorICAgICMgaWdu
b3JlcyB0aGUgZXJyb3IuCisgICAgSWdub3JlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQogCiAKIGxvZ2dlciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxb
bG9nZ2luZy5Mb2dnZXJdCkBAIC03NSwxMiArODAsMTIgQEAgRVJST1JfTVNHID0gIiIiWW91IG11
c3QgZml4IGFsbCBlcnJvcnM7IGZvciBkZXRhaWxzIG9uIGhvdyB0byBmaXggdGhlbSwgc2VlCiBo
dHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9saW50LXRvb2wuaHRt
bAogCiBIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIgZXJyb3IsIGl0J3Mg
c29tZXRpbWVzCi1PSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlIGlu
IHRoZSByb290IG9mIHRoZQorT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC5pZ25vcmUgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUKIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFr
ZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KIAogRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxp
bnQgdG9vbCBpZ25vcmUgYWxsICclcycKIGVycm9ycyBpbiB0aGUgJXMgZmlsZSwKLXlvdSBjb3Vs
ZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgoreW91
IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQuaWdub3JlIGZpbGUuCiAK
ICVzOiAlcyIiIgogCkBAIC0zMTgsMTQgKzMyMyw1MiBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5
X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICByZXR1cm4gZXJyb3JzCiAKIAotZGVmIHBh
cnNlX3doaXRlbGlzdChmKToKLSAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+IFR1cGxlW1doaXRl
bGlzdCwgU2V0W1RleHRdXQorZGVmIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZXMo
cmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0cl0pIC0+IExpc3Rb
cnVsZXMuRXJyb3JdCisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgYWxsIHRlc3RoYXJuZXNzIGZp
bGVzIGhhdmUgdW5pcXVlIGJhc2VuYW1lIHBhdGhzLgorCisgICAgVGhlICdiYXNlbmFtZSBwYXRo
JyByZWZlcnMgdG8gdGhlIGVudGlyZSBwYXRoIGV4Y2x1ZGluZyB0aGUgZXh0ZW5zaW9uLiBGb3IK
KyAgICBleGFtcGxlLCAnZm9vL2Jhci9iYXouaHRtbCcgYW5kICdmb28vYmFyL2Jhei54aHRtbCcg
aGF2ZSB0aGUgc2FtZSBiYXNlbmFtZQorICAgIHBhdGgsIGJ1dCAnZm9vL2Jhci9iYXouaHRtbCcg
YW5kICdmb28vcXV4L2Jhei5odG1sJyBkbyBub3QuCisKKyAgICBUZXN0aGFybmVzcyBmaWxlcyB3
aXRoIGlkZW50aWNhbCBiYXNlbmFtZXMgaGF2ZSBjYXVzZWQgaXNzdWVzIGluIGRvd25zdHJlYW0K
KyAgICBpbmZyYXN0cnVjdHVyZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0L2lzc3Vlcy83NTcwKSwKKyAgICBhbmQgbWF5IGNhdXNlIGNvbmZ1c2lvbiBpbiBn
ZW5lcmFsLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAg
IDpwYXJhbSBwYXRoczogbGlzdCBvZiBhbGwgcGF0aHMKKyAgICA6cmV0dXJuczogYSBsaXN0IG9m
IGVycm9ycyBmb3VuZCBpbiBgYHBhdGhzYGAKKyAgICAiIiIKKworICAgIGVycm9ycyA9IFtdCisg
ICAgZmlsZV9kaWN0ID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3IgcGF0aCBpbiBwYXRoczoK
KyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQor
ICAgICAgICBpZiBzb3VyY2VfZmlsZS50eXBlICE9ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBmaWxlX25hbWUsIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5z
cGxpdGV4dChwYXRoKQorICAgICAgICBmaWxlX2RpY3RbZmlsZV9uYW1lXS5hcHBlbmQoZmlsZV9l
eHRlbnNpb24pCisgICAgZm9yIGssIHYgaW4gZmlsZV9kaWN0Lml0ZW1zKCk6CisgICAgICAgIGlm
IGxlbih2KSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY29udGV4dCA9ICgn
LCAnLmpvaW4odiksKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHY6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKHJ1bGVzLkR1cGxpY2F0ZUJhc2VuYW1lUGF0aC5lcnJvcihrICsgZXh0ZW5z
aW9uLCBjb250ZXh0KSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIHBhcnNlX2lnbm9yZWxp
c3QoZik6CisgICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtJZ25vcmVsaXN0LCBTZXRb
VGV4dF1dCiAgICAgIiIiCi0gICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxlIGdpdmVuIGJ5IGBm
YCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICBQYXJzZSB0aGUgaWdub3Jl
bGlzdCBmaWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4K
KworICAgIDpyZXR1cm5zOiBhIHR1cGxlIG9mIGFuIElnbm9yZWxpc3QgYW5kIGEgc2V0IG9mIGZp
bGVzIHRoYXQgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgc2tpcHBlZCBieSB0aGUgbGlu
dGVyIChpLmUuIGhhdmUgYSAnKicgZW50cnkpLgogICAgICIiIgogCi0gICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBXaGl0ZWxpc3QKLSAgICBp
Z25vcmVkX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBJZ25vcmVsaXN0CisgICAg
c2tpcHBlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgZm9yIGxpbmUg
aW4gZjoKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQpAQCAtMzQ0LDM3ICszODcsMzcgQEAg
ZGVmIHBhcnNlX3doaXRlbGlzdChmKToKICAgICAgICAgZmlsZV9tYXRjaCA9IG9zLnBhdGgubm9y
bWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3JfdHlwZXM6Ci0gICAg
ICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQorICAgICAgICAgICAgc2tpcHBl
ZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBl
cnJvcl90eXBlIGluIGVycm9yX3R5cGVzOgogICAgICAgICAgICAgICAgIGRhdGFbZXJyb3JfdHlw
ZV1bZmlsZV9tYXRjaF0uYWRkKGxpbmVfbnVtYmVyKQogCi0gICAgcmV0dXJuIGRhdGEsIGlnbm9y
ZWRfZmlsZXMKKyAgICByZXR1cm4gZGF0YSwgc2tpcHBlZF9maWxlcwogCiAKLWRlZiBmaWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgotICAgICMgdHlwZTogKFdoaXRlbGlzdCwg
U2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorZGVmIGZpbHRlcl9p
Z25vcmVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgorICAgICMgdHlwZTogKElnbm9yZWxpc3Qs
IFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KICAgICAiIiIKLSAg
ICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBpbiBgZGF0YWAu
CisgICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgaWdub3JlZCBpbiBgZGF0YWAu
CiAgICAgIiIiCiAKICAgICBpZiBub3QgZXJyb3JzOgogICAgICAgICByZXR1cm4gW10KIAotICAg
IHdoaXRlbGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KKyAg
ICBza2lwcGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KIAogICAg
IGZvciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVtZXJhdGUoZXJyb3Jz
KToKICAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgpCi0gICAgICAgICMg
QWxsb3cgd2hpdGVsaXN0aW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhlIElHTk9SRUQgUEFU
SCBsaW50LAotICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXggaXQgY29ycmVjdGx5
IGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZC4KKyAgICAgICAgIyBBbGxvdyBza2lwcGluZyBhbGwg
bGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVEIFBBVEggbGludCwKKyAgICAgICAgIyB3aGlj
aCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJlY3RseSBhbmQgc2hvdWxkbid0IGJlIHNraXBw
ZWQuCiAgICAgICAgIGlmIGVycm9yX3R5cGUgaW4gZGF0YSBhbmQgZXJyb3JfdHlwZSAhPSAiSUdO
T1JFRCBQQVRIIjoKICAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJvcl90eXBlXQogICAg
ICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRlcml0ZW1zKHdsX2Zp
bGVzKToKICAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGluZXMgb3IgbGluZSBp
biBhbGxvd2VkX2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hj
YXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRl
bGlzdGVkW2ldID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtpXSA9IFRy
dWUKIAotICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoZXJyb3JzKSBp
ZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisgICAgcmV0dXJuIFtpdGVtIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShlcnJvcnMpIGlmIG5vdCBza2lwcGVkW2ldXQogCiAKIHJlZ2V4cHMgPSBbaXRlbSgp
IGZvciBpdGVtIGluICAjIHR5cGU6IGlnbm9yZQpAQCAtMzkwLDcgKzQzMywxMCBAQCByZWdleHBz
ID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgICAgIHJ1bGVz
LlByaW50UmVnZXhwLAogICAgICAgICAgICAgcnVsZXMuTGF5b3V0VGVzdHNSZWdleHAsCiAgICAg
ICAgICAgICBydWxlcy5NaXNzaW5nRGVwc1JlZ2V4cCwKLSAgICAgICAgICAgIHJ1bGVzLlNwZWNp
YWxQb3dlcnNSZWdleHBdXQorICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBvd2Vyc1JlZ2V4cCwK
KyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFRocm93c1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVz
LlByb21pc2VSZWplY3RzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNzZXJ0UHJlY29uZGl0
aW9uUmVnZXhwXV0KIAogCiBkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19yb290LCBwYXRoLCBm
KToKQEAgLTQyMSw2ICs0NjcsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CiAKICAgICAgICAgaWYgKHNvdXJjZV9maWxlLnR5cGUgIT0gInN1cHBvcnQiIGFuZAogICAg
ICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFuZAorICAgICAgICAg
ICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfdGVudGF0aXZlIGFuZAogICAgICAgICAgICAgbm90
IHNvdXJjZV9maWxlLnNwZWNfbGlua3MpOgogICAgICAgICAgICAgcmV0dXJuIFtydWxlcy5NaXNz
aW5nTGluay5lcnJvcihwYXRoKV0KIApAQCAtNTg0LDcgKzYzMSw4IEBAIGFzdF9jaGVja2VycyA9
IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYgY2hlY2tfcHl0aG9u
X2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICMgdHlwZTogKHN0ciwgc3RyLCBJT1tieXRl
c10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCi0gICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5weSIp
OgorICAgICMgKi5xdWljLnB5IGFyZSBQeXRob24gMyBvbmx5IGFuZCBjYW5ub3QgYmUgcGFyc2Vk
IGJ5IFB5dGhvbiAyLgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBwYXRoLmVu
ZHN3aXRoKCIucXVpYy5weSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAgIHRyeToKQEAgLTYw
NSwzMCArNjUzLDEyIEBAIGJyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxlKGJyIiNc
cypNRVRBOiIpCiAKIGRlZiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUpOgogICAgICMgdHlw
ZTogKHN0cikgLT4gSXRlcmFibGVbVHVwbGVbVHlwZVtydWxlcy5SdWxlXSwgVHVwbGVbQW55LCAu
Li5dXV0KLSAgICBnbG9iYWxfdmFsdWVzID0ge2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9Ci0KLSAgICBpbmNsdWRlZF92YXJpYW50cyA9
IHNldC51bmlvbihnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKGdldF9hbnlfdmFyaWFudHModikgZm9yIHYgaW4gZ2xvYmFsX3Zh
bHVlcyBpZiBub3Qgdi5zdGFydHN3aXRoKGIiISIpKSkKKyAgICBnbG9iYWxfdmFsdWVzID0ge2l0
ZW0uc3RyaXAoKS5kZWNvZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiB2YWx1ZS5zcGxpdChiIiwiKSBp
ZiBpdGVtLnN0cmlwKCl9CiAKKyAgICAjIFRPRE86IHRoaXMgY291bGQgY2hlY2sgZm9yIGR1cGxp
Y2F0ZXMgYW5kIHN1Y2gKICAgICBmb3IgZ2xvYmFsX3ZhbHVlIGluIGdsb2JhbF92YWx1ZXM6Ci0g
ICAgICAgIGlmIGdsb2JhbF92YWx1ZS5zdGFydHN3aXRoKGIiISIpOgotICAgICAgICAgICAgZXhj
bHVkZWRfdmFsdWUgPSBnbG9iYWxfdmFsdWVbMTpdCi0gICAgICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhleGNsdWRlZF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVz
LlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCi0KLSAgICAgICAgICAgIGVsaWYgZXhjbHVkZWRf
dmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuQnJv
a2VuR2xvYmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICgoIkNhbm5vdCBzcGVj
aWZ5IGJvdGggJXMgYW5kICVzIiAlIChnbG9iYWxfdmFsdWUsIGV4Y2x1ZGVkX3ZhbHVlKSksKSkK
LQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGNsdWRlZF92YXJpYW50cyA9
IGdldF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgbm90
IChleGNsdWRlZF92YXJpYW50cyAmIGluY2x1ZGVkX3ZhcmlhbnRzKToKLSAgICAgICAgICAgICAg
ICAgICAgeWllbGQgKHJ1bGVzLkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90IGluY2x1ZGVkIiAl
IChleGNsdWRlZF92YWx1ZSwpKSwpKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBu
b3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgotICAgICAgICAgICAgICAgIHlpZWxk
IChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQorICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgorICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25v
d25HbG9iYWxNZXRhZGF0YSwgKCkpCiAKIAogZGVmIGNoZWNrX3NjcmlwdF9tZXRhZGF0YShyZXBv
X3Jvb3QsIHBhdGgsIGYpOgpAQCAtNjU3LDEzICs2ODcsNyBAQCBkZWYgY2hlY2tfc2NyaXB0X21l
dGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CiAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0g
YiJsb25nIjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3du
VGltZW91dE1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25vPWlkeCArIDEp
KQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiAoYiJ0
aXRsZSIsIGIic2NyaXB0IiwgYiJ2YXJpYW50IiwgYiJxdWljIik6CiAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3duTWV0YWRhdGEuZXJyb3IocGF0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25v
PWlkeCArIDEpKQogICAgICAgICBlbHNlOgpAQCAtODI1LDcgKzg0OSw3IEBAIGRlZiBsaW50X3Bh
dGhzKGt3YXJncywgd3B0X3Jvb3QpOgogICAgICAgICBmb3JjZV9hbGwgPSBGYWxzZQogICAgICAg
ICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhzOgogICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVw
bGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICAgICAgaWYgcGF0aCA9PSAibGludC53aGl0
ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKKyAgICAgICAgICAgIGlm
IHBhdGggPT0gImxpbnQuaWdub3JlIiBvciBwYXRoLnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6
CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFr
CiAgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90IGZvcmNlX2FsbCAg
IyB0eXBlOiBpZ25vcmUKQEAgLTg0Myw3ICs4NjcsNyBAQCBkZWYgY3JlYXRlX3BhcnNlcigpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNP
TiBmb3JtYXQiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249
InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtk
b3duIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBX
UFQgZGlyZWN0b3J5LiBVc2UgdGhpcyIKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8t
cm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAib3B0aW9uIGlmIHRoZSBsaW50IHNjcmlwdCBleGlzdHMgb3V0c2lkZSB0aGUg
cmVwb3NpdG9yeSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtZ2xvYiIsIGhl
bHA9IkFkZGl0aW9uYWwgZmlsZSBnbG9iIHRvIGlnbm9yZS4iKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYgbm8gcGF0aHMgYXJl
IHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKQEAgLTg3OSwxMSArOTAzLDExIEBAIGRl
ZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigp
KToKICAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGludCkgICMgdHlwZTogRGljdFtUZXh0
LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVw
b19yb290LCAibGludC53aGl0ZWxpc3QiKSkgYXMgZjoKLSAgICAgICAgd2hpdGVsaXN0LCBpZ25v
cmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0KGYpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bihyZXBvX3Jvb3QsICJsaW50Lmlnbm9yZSIpKSBhcyBmOgorICAgICAgICBpZ25vcmVsaXN0LCBz
a2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChmKQogCiAgICAgaWYgaWdub3JlX2dsb2I6
Ci0gICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQorICAgICAgICBza2lwcGVk
X2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKIAogICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24iOiBv
dXRwdXRfZXJyb3JzX2pzb24sCiAgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBvdXRw
dXRfZXJyb3JzX21hcmtkb3duLApAQCAtODk5LDcgKzkyMyw3IEBAIGRlZiBsaW50KHJlcG9fcm9v
dCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigpKToKICAgICAgICAgICAg
ICAgICAgIGEgdHVwbGUgb2YgdGhlIGVycm9yIHR5cGUgYW5kIHRoZSBwYXRoIG90aGVyd2lzZQog
ICAgICAgICAiIiIKIAotICAgICAgICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIGVycm9ycykKKyAgICAgICAgZXJyb3JzID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJy
b3JzKGlnbm9yZWxpc3QsIGVycm9ycykKIAogICAgICAgICBpZiBub3QgZXJyb3JzOgogICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKQEAgLTkxNiw3ICs5NDAsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAgICAgICAgICAgICBw
YXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgYW55
KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBpZ25v
cmVkX2ZpbGVzKToKKyAgICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21h
dGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBza2lwcGVkX2ZpbGVzKToKICAgICAgICAgICAgIHBhdGhz
LnJlbW92ZShwYXRoKQogICAgICAgICAgICAgY29udGludWUKIApAQCAtOTQyLDcgKzk2Niw3IEBA
IGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0
cigpKToKIAogcGF0aF9saW50cyA9IFtjaGVja19maWxlX3R5cGUsIGNoZWNrX3BhdGhfbGVuZ3Ro
LCBjaGVja193b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHksCiAgICAgICAgICAgICAg
IGNoZWNrX2dpdGlnbm9yZV9maWxlXQotYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNrX2Nzc19nbG9i
YWxseV91bmlxdWVdCithbGxfcGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1
ZSwgY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lc10KIGZpbGVfbGludHMgPSBbY2hl
Y2tfcmVnZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2Ny
aXB0X21ldGFkYXRhLAogICAgICAgICAgICAgICBjaGVja19haGVtX3N5c3RlbV9mb250XQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKaW5kZXggZmFhMjg1ZmQ3Y2RiY2M0MDZmOGMwMmFi
MDNlZDZiZWIzNmViMGJlZi4uNjk1ZjZjZDRlNTMyOGNhZjJmMDg1YTExNWQzMWE5YzBiNGFlMjcx
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpAQCAtMzIyLDYgKzMyMiwxNSBAQCBj
bGFzcyBUZXN0aGFybmVzc0luT3RoZXJUeXBlKFJ1bGUpOgogICAgIGRlc2NyaXB0aW9uID0gInRl
c3RoYXJuZXNzLmpzIGluY2x1ZGVkIGluIGEgJXMgdGVzdCIKIAogCitjbGFzcyBEdXBsaWNhdGVC
YXNlbmFtZVBhdGgoUnVsZSk6CisgICAgbmFtZSA9ICJEVVBMSUNBVEUtQkFTRU5BTUUtUEFUSCIK
KyAgICBkZXNjcmlwdGlvbiA9IGNvbGxhcHNlKCIiIgorICAgICAgICAgICAgRmlsZSBoYXMgaWRl
bnRpY2FsIGJhc2VuYW1lIHBhdGggKHBhdGggZXhjbHVkaW5nIGV4dGVuc2lvbikgYXMKKyAgICAg
ICAgICAgIG90aGVyIGZpbGUocykgKGZvdW5kIGV4dGVuc2lvbnM6ICVzKQorICAgICIiIikKKyAg
ICB0b19maXggPSAicmVuYW1lIGZpbGVzIHNvIHRoZXkgaGF2ZSB1bmlxdWUgYmFzZW5hbWUgcGF0
aHMiCisKKwogY2xhc3MgUmVnZXhwKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkpOgog
ICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgIGRlZiBwYXR0ZXJuKHNlbGYpOgpAQCAtNDYy
LDMgKzQ3MSwyNyBAQCBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAoUmVnZXhwKToKICAg
ICBkZXNjcmlwdGlvbiA9ICJXaGl0ZXNwYWNlIGF0IEVPTCIKICAgICBwYXR0ZXJuID0gYiJbIFx0
XGZcdl0kIgogICAgIHRvX2ZpeCA9ICIiIlJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20g
YWxsIGxpbmVzIGluIHRoZSBmaWxlLiIiIgorCisKK2NsYXNzIEFzc2VydFRocm93c1JlZ2V4cChS
ZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJbXi5dYXNzZXJ0X3Rocm93c1woIgorICAgIG5hbWUg
PSAiQVNTRVJUX1RIUk9XUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlRl
c3QtZmlsZSBsaW5lIGhhcyBhbiBgYXNzZXJ0X3Rocm93cyguLi4pYCBjYWxsIgorICAgIHRvX2Zp
eCA9ICIiIlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X3Rocm93c19kb21gIG9yIGBhc3NlcnRfdGhyb3dz
X2pzYCBvciBgYXNzZXJ0X3Rocm93c19leGFjdGx5YCIiIgorCisKK2NsYXNzIFByb21pc2VSZWpl
Y3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyInByb21pc2VfcmVqZWN0c1woIgor
ICAgIG5hbWUgPSAiUFJPTUlTRV9SRUpFQ1RTIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0
bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3Jp
cHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGEgYHByb21pc2VfcmVqZWN0cyguLi4pYCBjYWxs
IgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBwcm9taXNlX3JlamVjdHNfZG9tIG9yIHBy
b21pc2VfcmVqZWN0c19qcyBvciBgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHlgIiIiCisKKworY2xh
c3MgQXNzZXJ0UHJlY29uZGl0aW9uUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyIlte
Ll1hc3NlcnRfcHJlY29uZGl0aW9uXCgiCisgICAgbmFtZSA9ICJBU1NFUlQtUFJFQ09ORElUSU9O
IgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIs
ICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFz
IGFuIGBhc3NlcnRfcHJlY29uZGl0aW9uKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVw
bGFjZSB3aXRoIGBhc3NlcnRfaW1wbGVtZW50c2Agb3IgYGFzc2VydF9pbXBsZW1lbnRzX29wdGlv
bmFsYCIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xp
bnQuaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEw
ZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKQEAgLTAsMCAr
MSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53
aGl0ZWxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEwZmZkZDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQu
d2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKjpicm9rZW5faWdub3JlZC5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMS9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1ZTU4NTNk
ZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2Eu
aHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1NWRhYjZhNzdjYjI4MTAzY2MxNThmZjBmOWNjZGU5NmI1
MjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuanMKQEAgLTAs
MCArMSw2IEBACisvLyBUaGlzIGlzIGEgZHVtbXkgSmF2YVNjcmlwdCBmaWxlLCBtZWFudCB0byBp
bmRpY2F0ZSBhICdzdXBwb3J0JyBmaWxlIG9mCisvLyBzb3J0cyB0aGF0IG1heSBiZSBpbmNsdWRl
ZCBieSBzb21lIHRlc3QuCisKK2Z1bmN0aW9uIGhlbGxvV29ybGQoKSB7CisgIHJldHVybiAnSGVs
bG8sIHdvcmxkISc7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGI0Y2MyZTUyMjNh
ODYyNTVlZmI1MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjEvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1
ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2IuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjI5OTFkOWJl
NmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi9hLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4NjI1NWVmYjUzMWE0
ZDVhNDQzMGY5NTFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9h
LnhodG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNjY5ZTY1M2JmYzIzN2I2
Mzc4ZjNhZTllZTY2NzUwYzU1MGJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0
cy9kaXIyL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS90ZXN0cy9kaXIyL2EueGh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwppbmRleCA0NjA1NmU2NzEzZmQzMTNkZmUyNGIx
Yjg4MmMyODM4OWNiZWNmYzljLi5mMzRkMTY3MzBmNzAwNGY3NGQyMzRjOWNjYWRiMmMwZWNlZDJi
NTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3czYy1pbXBvcnQubG9nCkBAIC0xOCw1ICsxOCw1IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Jyb2tlbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvZGVwZW5kZW5jeS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2xpbnQuaWdub3JlCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
ZmlsZV9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKaW5kZXggMDhjMDliNmIwOTUw
YjJjZjU0OGMzYjVlNDE1MzAzNTk3ZGQ4YzY1NC4uN2RhY2ZhZDYzODBkYzhiNjY4YTIyZGM3YzRm
ZTJlNzRkMzc1NDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC02MzMsNiArNjMzLDggQEAgZGVmIHRlc3RfbGF0ZV90
aW1lb3V0KCk6CiAgICAgICAgICAgICBdCiAKIAorIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBwcmludCAqc3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCisj
ICAgICAgIFRoZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5j
dGlvbiBiZWxvdy4KIEBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3Qg
cGFyc2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKIGRlZiB0ZXN0X3ByaW50X3N0
YXRlbWVudCgpOgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6
XG4gIHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQpAQCAtNzk0LDYgKzc5NiwyMCBAQCBk
ZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgogICAgIF0KIAogCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX3RlbnRhdGl2ZSgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisKKyAgICAjIFRoZSB0
ZW50YXRpdmUgZmxhZyBjb3ZlcnMgdGVzdHMgdGhhdCBtYWtlIGFzc2VydGlvbnMgJ25vdCB5ZXQg
cmVxdWlyZWQgYnkKKyAgICAjIGFueSBzcGVjaWZpY2F0aW9uJywgc28gdGhleSBuZWVkIG5vdCBo
YXZlIGEgc3BlY2lmaWNhdGlvbiBsaW5rLgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci50ZW50YXRpdmUuaHRtbCIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgIGFzc2VydCBub3QgZXJyb3JzCisKKwogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaWxl
bmFtZSIsIFsKICAgICAiZm9vLndvcmtlci5qcyIsCiAgICAgImZvby5hbnkuanMiLApAQCAtODQy
LDE3ICs4NTgsMTcgQEAgZGVmIHRlc3Rfc2NyaXB0X21ldGFkYXRhKGZpbGVuYW1lLCBpbnB1dCwg
ZXJyb3IpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdsb2JhbHMsZXJyb3IiLCBbCiAg
ICAgKGIiIiwgTm9uZSksCi0gICAgKGIiZGVmYXVsdCIsIE5vbmUpLAotICAgIChiIiFkZWZhdWx0
IiwgTm9uZSksCisgICAgKGIiZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAor
ICAgIChiIiFkZWZhdWx0IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiAgICAgKGIid2lu
ZG93IiwgTm9uZSksCi0gICAgKGIiIXdpbmRvdyIsIE5vbmUpLAotICAgIChiIiFkZWRpY2F0ZWR3
b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiQlJPS0VOLUdMT0JBTC1N
RVRBREFUQSIpLAotICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1HTE9CQUwtTUVUQURB
VEEiKSwKLSAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIsICJCUk9LRU4tR0xP
QkFMLU1FVEFEQVRBIiksCi0gICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29ya2VyIiwgTm9uZSks
Ci0gICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsIE5vbmUpLAotICAgIChiIiF3b3JrZXIi
LCBOb25lKSwKKyAgICAoYiIhd2luZG93IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisg
ICAgKGIiIWRlZGljYXRlZHdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAg
IChiIndpbmRvdywgIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChi
IiFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIic2Vy
dmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwK
KyAgICAoYiJ3b3JrZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURB
VEEiKSwKKyAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIiIXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAog
ICAgIChiImZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAgIChiIiFmb28iLCAi
VU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKIF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCBhZjJiN2QzZDRhYTE5ZjBjMWQ3MmE1NTc1YjUw
MTNjNzg5N2UxZGM0Li4xMGQ5NzI4YjQwNTc1MWJkYjI4ZGI1ZTAxOTMxNjJlYzdmNmRmNDg2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTgs
NyArOCw3IEBAIGltcG9ydCBzaXgKIAogZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9ydCByZXBvX3Jv
b3QKIGZyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKLWZyb20gLi5saW50IGltcG9ydCBm
aWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBjcmVhdGVfcGFy
c2VyCitmcm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzLCBwYXJzZV9p
Z25vcmVsaXN0LCBsaW50LCBjcmVhdGVfcGFyc2VyCiAKIF9kdW1teV9yZXBvID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkdW1teSIpCiAKQEAgLTE3LDggKzE3LDgg
QEAgZGVmIF9tb2NrX2xpbnQobmFtZSwgKiprd2FyZ3MpOgogICAgIHJldHVybiBtb2NrLnBhdGNo
KGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9d3JhcHBlZCwgKiprd2FyZ3Mp
CiAKIAotZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoKToKLSAgICB3aGl0ZWxpc3Qg
PSB7CitkZWYgdGVzdF9maWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoKToKKyAgICBpZ25vcmVsaXN0
ID0gewogICAgICAgICAnQ09OU09MRSc6IHsKICAgICAgICAgICAgICdzdmcvKic6IHsxMn0KICAg
ICAgICAgfSwKQEAgLTI2LDM0ICsyNiwzNCBAQCBkZWYgdGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vy
cm9ycygpOgogICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFsaXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRj
aCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIHdoaXRlbGlzdCA9IHtlOiB7b3Mu
cGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9Ci0gICAgICAgICAgICAg
ICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5pdGVtcygpfQotICAgICMgcGF0aHMgcGFzc2VkIGlu
dG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMgYXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgIyBw
YXJzZV9pZ25vcmVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUgbWF0Y2ggc3Ry
aW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAgICBpZ25vcmVsaXN0ID0ge2U6IHtvcy5wYXRo
Lm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAg
Zm9yIGUsIHAgaW4gaWdub3JlbGlzdC5pdGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQogICAgIGZpbHRl
cmVkZmlsZSA9ICdzdmcvdGVzdC5odG1sJwogICAgIHVuZmlsdGVyZWRmaWxlID0gJ2h0bWwvdGVz
dC5odG1sJwogICAgICMgVGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGZpbHRlcmVkID0g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVs
aXN0LCBbXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVs
aXN0LCBbXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KICAgICAjIFRlc3RzIGZvciBmaWx0
ZXJpbmcgb24gZmlsZSBhbmQgbGluZSBudW1iZXIKLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEy
XV0pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwg
W1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVk
ID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3Qs
IFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgZmlsdGVyZWQgPSBm
aWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snQ09OU09MRScsICcnLCB1bmZp
bHRlcmVkZmlsZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCB1bmZpbHRlcmVkZmlsZSwgMTJdXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAg
ICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydDT05T
T0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1sn
Q09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0KICAgICAjIFRlc3RzIGZvciBmaWx0ZXJp
bmcgb24ganVzdCBmaWxlCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBm
aWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQg
VEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtd
Ci0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lO
REVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRl
cl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0
ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycs
IHVuZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3Rf
ZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAx
MV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRl
cmVkZmlsZSwgMTFdXQogCiAKLWRlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgpOgorZGVmIHRlc3Rf
cGFyc2VfaWdub3JlbGlzdCgpOgogICAgIGlucHV0X2J1ZmZlciA9IHNpeC5TdHJpbmdJTygiIiIK
ICMgQ29tbWVudAogQ1IgQVQgRU9MOiBzdmcvaW1wb3J0LyoKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IENSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCiAgICAgfQogICAgIGV4
cGVjdGVkX2RhdGEgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5p
dGVtcygpfQogICAgICAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5p
dGVtcygpfQotICAgIGV4cGVjdGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3Ig
eCBpbiB7IioucGRmIiwgInJlc291cmNlcy8qIiwgIioucG5nIn19Ci0gICAgZGF0YSwgaWdub3Jl
ZCA9IHBhcnNlX3doaXRlbGlzdChpbnB1dF9idWZmZXIpCisgICAgZXhwZWN0ZWRfc2tpcHBlZCA9
IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVzb3VyY2VzLyoiLCAi
Ki5wbmcifX0KKyAgICBkYXRhLCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChpbnB1
dF9idWZmZXIpCiAgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQotICAgIGFzc2VydCBp
Z25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKyAgICBhc3NlcnQgc2tpcHBlZF9maWxlcyA9PSBl
eHBlY3RlZF9za2lwcGVkCiAKIAogZGVmIHRlc3RfbGludF9ub19maWxlcyhjYXBsb2cpOgpAQCAt
Mzk4LDYgKzM5OCw2NSBAQCBkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9y
ZWRfZGlyKGNhcGxvZyk6CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCiAKIAorZGVmIHRl
c3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lX3NhbWVfYmFzZW5hbWUoY2FwbG9n
KToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHRlc3RoYXJuZXNzIGZpbGVzIHdpdGgg
Y29uZmxpY3RpbmcgYmFzZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikg
YXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmls
ZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAg
cnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEv
YS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBiZSBvbmUgZmFp
bHVyZSBmb3IgZWFjaCBmaWxlLgorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAg
ICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBh
c3NlcnQgIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfbmFtZShjYXBs
b2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3RoYXJuZXNzIGZpbGVz
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoCisgICAgIyBkaWZmZXJlbnQgbmFtZXMuCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYi5odG1sJykpCisKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVzdHMvZGly
MS9hLmh0bWwiLCAidGVzdHMvZGlyMS9iLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfZGlyKGNhcGxv
Zyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0d28gdGVzdGhhcm5lc3MgZmlsZXMg
aW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzCisgICAgIyB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lLgor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIyJywgJ2EueGh0bWwnKSkKKworICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tf
ZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0
cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIyL2EueGh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAg
ICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRo
LmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisK
K2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9ub3RfdGVzdGhhcm5l
c3MoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIG5vbi10ZXN0aGFybmVz
cyBmaWxlcyB3aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAgIGFzc2VydCBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2Eu
aHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3Jl
cG8sICd0ZXN0cycsICdkaXIxJywgJ2EuanMnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0
ZXN0cy9kaXIxL2EuanMiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKIGRlZiB0ZXN0X2lnbm9yZV9nbG9i
KGNhcGxvZyk6CiAgICAgIyBMaW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBkaXJlY3RvcnksIGFu
ZCBwYXNzIGluIGlnbm9yZV9nbG9iIHRvIG9taXQgb25lCiAgICAgIyBvZiB0aGVtLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
b2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IGY2ZTI0YjQ4NmQ1OGI3ODhiOTQ0MTE3NWM1ZTFj
ODlmOTM4NzRmZWIuLmNlM2I0MWUzMDBjOWYxMTM4MGVhMDY1ZjViMjg4ZDVhZWY4MTI1ODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbG9jYWxwYXRocy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKQEAgLTYsNyArNiw3IEBAIHJlcG9fcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyKSkKIAogc3lzLnBh
dGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgIndwdHNlcnZlIikpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKGhlcmUsICJweXdlYnNvY2tldCIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl3ZWJzb2NrZXQzIikpCiBzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJhdG9taWN3cml0ZXMiKSkKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImF0dHJz
IiwgInNyYyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRf
cGFydHkiLCAiZnVuY3NpZ3MiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDQzMDdiMWMyYzQzMzJiMjk0OTk5YTVmYTMxM2E2YTI4
ZWVjNTdmZjYuLjgwNDIzNDgwYmM1OTc1NDI2OTEwMTBhNTBjYTJjMTZmOTQ1YTcwODQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZApAQCAt
MSwyMTI1ICsxLDIxMjUgQEAKLTwhRU5USVRZIFRhYiAiJiN4OTsiPgotPCFFTlRJVFkgTmV3TGlu
ZSAiJiN4QTsiPgotPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KLTwhRU5USVRZIHF1b3QgIiYjeDIy
OyI+Ci08IUVOVElUWSBRVU9UICImI3gyMjsiPgotPCFFTlRJVFkgbnVtICImI3gyMzsiPgotPCFF
TlRJVFkgZG9sbGFyICImI3gyNDsiPgotPCFFTlRJVFkgcGVyY250ICImI3gyNTsiPgotPCFFTlRJ
VFkgYW1wICImI3gyNjsjeDI2OyI+Ci08IUVOVElUWSBBTVAgIiYjeDI2OyN4MjY7Ij4KLTwhRU5U
SVRZIGFwb3MgIiYjeDI3OyI+Ci08IUVOVElUWSBscGFyICImI3gyODsiPgotPCFFTlRJVFkgcnBh
ciAiJiN4Mjk7Ij4KLTwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZIG1pZGFzdCAiJiN4
MkE7Ij4KLTwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Ci08IUVOVElUWSBjb21tYSAiJiN4MkM7Ij4K
LTwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KLTwhRU5USVRZIHNvbCAiJiN4MkY7Ij4KLTwhRU5U
SVRZIGNvbG9uICImI3gzQTsiPgotPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij4KLTwhRU5USVRZIGx0
ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiPgotPCFFTlRJVFkgbnZs
dCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBlcXVhbHMgIiYjeDNEOyI+Ci08IUVO
VElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGd0ICImI3gzRTsiPgotPCFFTlRJ
VFkgR1QgIiYjeDNFOyI+Ci08IUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQyOyI+Ci08IUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ij4KLTwhRU5USVRZIGNvbW1hdCAiJiN4NDA7Ij4KLTwhRU5USVRZIGxz
cWIgIiYjeDVCOyI+Ci08IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Ci08IUVOVElUWSBic29sICIm
I3g1QzsiPgotPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KLTwhRU5USVRZIHJicmFjayAiJiN4NUQ7
Ij4KLTwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KLTwhRU5USVRZIGxvd2JhciAiJiN4NUY7Ij4KLTwh
RU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgotPCFFTlRJVFkgZ3JhdmUgIiYjeDYwOyI+Ci08IUVO
VElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgotPCFFTlRJVFkgZmpsaWcgIiYjeDY2OyYj
eDZBOyI+Ci08IUVOVElUWSBsY3ViICImI3g3QjsiPgotPCFFTlRJVFkgbGJyYWNlICImI3g3Qjsi
PgotPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgotPCFFTlRJVFkgdmVydCAiJiN4N0M7Ij4KLTwh
RU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KLTwhRU5USVRZIHJjdWIgIiYjeDdEOyI+Ci08
IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Ci08IUVOVElUWSBuYnNwICImI3hBMDsiPgotPCFFTlRJ
VFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KLTwhRU5USVRZIGlleGNsICImI3hBMTsiPgot
PCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KLTwhRU5USVRZIHBvdW5kICImI3hBMzsiPgotPCFFTlRJ
VFkgY3VycmVuICImI3hBNDsiPgotPCFFTlRJVFkgeWVuICImI3hBNTsiPgotPCFFTlRJVFkgYnJ2
YmFyICImI3hBNjsiPgotPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KLTwhRU5USVRZIERvdCAiJiN4
QTg7Ij4KLTwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KLTwhRU5USVRZIERvdWJsZURvdCAiJiN4QTg7
Ij4KLTwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KLTwhRU5USVRZIGNvcHkgIiYjeEE5OyI+Ci08IUVO
VElUWSBDT1BZICImI3hBOTsiPgotPCFFTlRJVFkgb3JkZiAiJiN4QUE7Ij4KLTwhRU5USVRZIGxh
cXVvICImI3hBQjsiPgotPCFFTlRJVFkgbm90ICImI3hBQzsiPgotPCFFTlRJVFkgc2h5ICImI3hB
RDsiPgotPCFFTlRJVFkgcmVnICImI3hBRTsiPgotPCFFTlRJVFkgY2lyY2xlZFIgIiYjeEFFOyI+
Ci08IUVOVElUWSBSRUcgIiYjeEFFOyI+Ci08IUVOVElUWSBtYWNyICImI3hBRjsiPgotPCFFTlRJ
VFkgc3RybnMgIiYjeEFGOyI+Ci08IUVOVElUWSBkZWcgIiYjeEIwOyI+Ci08IUVOVElUWSBwbHVz
bW4gIiYjeEIxOyI+Ci08IUVOVElUWSBwbSAiJiN4QjE7Ij4KLTwhRU5USVRZIFBsdXNNaW51cyAi
JiN4QjE7Ij4KLTwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Ci08IUVOVElUWSBzdXAzICImI3hCMzsi
PgotPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICIm
I3hCNDsiPgotPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Ci08IUVOVElUWSBwYXJhICImI3hCNjsi
PgotPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VudGVyZG90ICImI3hCNzsi
PgotPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VkaWwgIiYjeEI4OyI+
Ci08IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgotPCFFTlRJVFkgc3VwMSAiJiN4Qjk7Ij4KLTwh
RU5USVRZIG9yZG0gIiYjeEJBOyI+Ci08IUVOVElUWSByYXF1byAiJiN4QkI7Ij4KLTwhRU5USVRZ
IGZyYWMxNCAiJiN4QkM7Ij4KLTwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij4KLTwhRU5USVRZIGhh
bGYgIiYjeEJEOyI+Ci08IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Ci08IUVOVElUWSBpcXVlc3Qg
IiYjeEJGOyI+Ci08IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Ci08IUVOVElUWSBBYWN1dGUgIiYj
eEMxOyI+Ci08IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KLTwhRU5USVRZIEF0aWxkZSAiJiN4QzM7
Ij4KLTwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Ci08IUVOVElUWSBBcmluZyAiJiN4QzU7Ij4KLTwh
RU5USVRZIGFuZ3N0ICImI3hDNTsiPgotPCFFTlRJVFkgQUVsaWcgIiYjeEM2OyI+Ci08IUVOVElU
WSBDY2VkaWwgIiYjeEM3OyI+Ci08IUVOVElUWSBFZ3JhdmUgIiYjeEM4OyI+Ci08IUVOVElUWSBF
YWN1dGUgIiYjeEM5OyI+Ci08IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4KLTwhRU5USVRZIEV1bWwg
IiYjeENCOyI+Ci08IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Ci08IUVOVElUWSBJYWN1dGUgIiYj
eENEOyI+Ci08IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KLTwhRU5USVRZIEl1bWwgIiYjeENGOyI+
Ci08IUVOVElUWSBFVEggIiYjeEQwOyI+Ci08IUVOVElUWSBOdGlsZGUgIiYjeEQxOyI+Ci08IUVO
VElUWSBPZ3JhdmUgIiYjeEQyOyI+Ci08IUVOVElUWSBPYWN1dGUgIiYjeEQzOyI+Ci08IUVOVElU
WSBPY2lyYyAiJiN4RDQ7Ij4KLTwhRU5USVRZIE90aWxkZSAiJiN4RDU7Ij4KLTwhRU5USVRZIE91
bWwgIiYjeEQ2OyI+Ci08IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KLTwhRU5USVRZIE9zbGFzaCAi
JiN4RDg7Ij4KLTwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KLTwhRU5USVRZIFVhY3V0ZSAiJiN4
REE7Ij4KLTwhRU5USVRZIFVjaXJjICImI3hEQjsiPgotPCFFTlRJVFkgVXVtbCAiJiN4REM7Ij4K
LTwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KLTwhRU5USVRZIFRIT1JOICImI3hERTsiPgotPCFF
TlRJVFkgc3psaWcgIiYjeERGOyI+Ci08IUVOVElUWSBhZ3JhdmUgIiYjeEUwOyI+Ci08IUVOVElU
WSBhYWN1dGUgIiYjeEUxOyI+Ci08IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij4KLTwhRU5USVRZIGF0
aWxkZSAiJiN4RTM7Ij4KLTwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Ci08IUVOVElUWSBhcmluZyAi
JiN4RTU7Ij4KLTwhRU5USVRZIGFlbGlnICImI3hFNjsiPgotPCFFTlRJVFkgY2NlZGlsICImI3hF
NzsiPgotPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgotPCFFTlRJVFkgZWFjdXRlICImI3hFOTsi
PgotPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Ci08IUVOVElUWSBldW1sICImI3hFQjsiPgotPCFF
TlRJVFkgaWdyYXZlICImI3hFQzsiPgotPCFFTlRJVFkgaWFjdXRlICImI3hFRDsiPgotPCFFTlRJ
VFkgaWNpcmMgIiYjeEVFOyI+Ci08IUVOVElUWSBpdW1sICImI3hFRjsiPgotPCFFTlRJVFkgZXRo
ICImI3hGMDsiPgotPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgotPCFFTlRJVFkgb2dyYXZlICIm
I3hGMjsiPgotPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgotPCFFTlRJVFkgb2NpcmMgIiYjeEY0
OyI+Ci08IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Ci08IUVOVElUWSBvdW1sICImI3hGNjsiPgot
PCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgotPCFFTlRJVFkgZGl2ICImI3hGNzsiPgotPCFFTlRJ
VFkgb3NsYXNoICImI3hGODsiPgotPCFFTlRJVFkgdWdyYXZlICImI3hGOTsiPgotPCFFTlRJVFkg
dWFjdXRlICImI3hGQTsiPgotPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+Ci08IUVOVElUWSB1dW1s
ICImI3hGQzsiPgotPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgotPCFFTlRJVFkgdGhvcm4gIiYj
eEZFOyI+Ci08IUVOVElUWSB5dW1sICImI3hGRjsiPgotPCFFTlRJVFkgQW1hY3IgIiYjeDEwMDsi
PgotPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgotPCFFTlRJVFkgQWJyZXZlICImI3gxMDI7Ij4K
LTwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Ci08IUVOVElUWSBBb2dvbiAiJiN4MTA0OyI+Ci08
IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Ci08IUVOVElUWSBDYWN1dGUgIiYjeDEwNjsiPgotPCFF
TlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KLTwhRU5USVRZIENjaXJjICImI3gxMDg7Ij4KLTwhRU5U
SVRZIGNjaXJjICImI3gxMDk7Ij4KLTwhRU5USVRZIENkb3QgIiYjeDEwQTsiPgotPCFFTlRJVFkg
Y2RvdCAiJiN4MTBCOyI+Ci08IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiPgotPCFFTlRJVFkgY2Nh
cm9uICImI3gxMEQ7Ij4KLTwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+Ci08IUVOVElUWSBkY2Fy
b24gIiYjeDEwRjsiPgotPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4KLTwhRU5USVRZIGRzdHJv
ayAiJiN4MTExOyI+Ci08IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Ci08IUVOVElUWSBlbWFjciAi
JiN4MTEzOyI+Ci08IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KLTwhRU5USVRZIGVkb3QgIiYjeDEx
NzsiPgotPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgotPCFFTlRJVFkgZW9nb24gIiYjeDExOTsi
PgotPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KLTwhRU5USVRZIGVjYXJvbiAiJiN4MTFCOyI+
Ci08IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Ci08IUVOVElUWSBnY2lyYyAiJiN4MTFEOyI+Ci08
IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgotPCFFTlRJVFkgZ2JyZXZlICImI3gxMUY7Ij4KLTwh
RU5USVRZIEdkb3QgIiYjeDEyMDsiPgotPCFFTlRJVFkgZ2RvdCAiJiN4MTIxOyI+Ci08IUVOVElU
WSBHY2VkaWwgIiYjeDEyMjsiPgotPCFFTlRJVFkgSGNpcmMgIiYjeDEyNDsiPgotPCFFTlRJVFkg
aGNpcmMgIiYjeDEyNTsiPgotPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij4KLTwhRU5USVRZIGhz
dHJvayAiJiN4MTI3OyI+Ci08IUVOVElUWSBJdGlsZGUgIiYjeDEyODsiPgotPCFFTlRJVFkgaXRp
bGRlICImI3gxMjk7Ij4KLTwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4KLTwhRU5USVRZIGltYWNy
ICImI3gxMkI7Ij4KLTwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KLTwhRU5USVRZIGlvZ29uICIm
I3gxMkY7Ij4KLTwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgotPCFFTlRJVFkgaW1hdGggIiYjeDEz
MTsiPgotPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KLTwhRU5USVRZIElKbGlnICImI3gxMzI7
Ij4KLTwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KLTwhRU5USVRZIEpjaXJjICImI3gxMzQ7Ij4K
LTwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KLTwhRU5USVRZIEtjZWRpbCAiJiN4MTM2OyI+Ci08
IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgotPCFFTlRJVFkga2dyZWVuICImI3gxMzg7Ij4KLTwh
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Ci08IUVOVElUWSBsYWN1dGUgIiYjeDEzQTsiPgotPCFF
TlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KLTwhRU5USVRZIGxjZWRpbCAiJiN4MTNDOyI+Ci08IUVO
VElUWSBMY2Fyb24gIiYjeDEzRDsiPgotPCFFTlRJVFkgbGNhcm9uICImI3gxM0U7Ij4KLTwhRU5U
SVRZIExtaWRvdCAiJiN4MTNGOyI+Ci08IUVOVElUWSBsbWlkb3QgIiYjeDE0MDsiPgotPCFFTlRJ
VFkgTHN0cm9rICImI3gxNDE7Ij4KLTwhRU5USVRZIGxzdHJvayAiJiN4MTQyOyI+Ci08IUVOVElU
WSBOYWN1dGUgIiYjeDE0MzsiPgotPCFFTlRJVFkgbmFjdXRlICImI3gxNDQ7Ij4KLTwhRU5USVRZ
IE5jZWRpbCAiJiN4MTQ1OyI+Ci08IUVOVElUWSBuY2VkaWwgIiYjeDE0NjsiPgotPCFFTlRJVFkg
TmNhcm9uICImI3gxNDc7Ij4KLTwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI+Ci08IUVOVElUWSBu
YXBvcyAiJiN4MTQ5OyI+Ci08IUVOVElUWSBFTkcgIiYjeDE0QTsiPgotPCFFTlRJVFkgZW5nICIm
I3gxNEI7Ij4KLTwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KLTwhRU5USVRZIG9tYWNyICImI3gx
NEQ7Ij4KLTwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Ci08IUVOVElUWSBvZGJsYWMgIiYjeDE1
MTsiPgotPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgotPCFFTlRJVFkgb2VsaWcgIiYjeDE1Mzsi
PgotPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KLTwhRU5USVRZIHJhY3V0ZSAiJiN4MTU1OyI+
Ci08IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgotPCFFTlRJVFkgcmNlZGlsICImI3gxNTc7Ij4K
LTwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Ci08IUVOVElUWSByY2Fyb24gIiYjeDE1OTsiPgot
PCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KLTwhRU5USVRZIHNhY3V0ZSAiJiN4MTVCOyI+Ci08
IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Ci08IUVOVElUWSBzY2lyYyAiJiN4MTVEOyI+Ci08IUVO
VElUWSBTY2VkaWwgIiYjeDE1RTsiPgotPCFFTlRJVFkgc2NlZGlsICImI3gxNUY7Ij4KLTwhRU5U
SVRZIFNjYXJvbiAiJiN4MTYwOyI+Ci08IUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiPgotPCFFTlRJ
VFkgVGNlZGlsICImI3gxNjI7Ij4KLTwhRU5USVRZIHRjZWRpbCAiJiN4MTYzOyI+Ci08IUVOVElU
WSBUY2Fyb24gIiYjeDE2NDsiPgotPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7Ij4KLTwhRU5USVRZ
IFRzdHJvayAiJiN4MTY2OyI+Ci08IUVOVElUWSB0c3Ryb2sgIiYjeDE2NzsiPgotPCFFTlRJVFkg
VXRpbGRlICImI3gxNjg7Ij4KLTwhRU5USVRZIHV0aWxkZSAiJiN4MTY5OyI+Ci08IUVOVElUWSBV
bWFjciAiJiN4MTZBOyI+Ci08IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+Ci08IUVOVElUWSBVYnJl
dmUgIiYjeDE2QzsiPgotPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4KLTwhRU5USVRZIFVyaW5n
ICImI3gxNkU7Ij4KLTwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KLTwhRU5USVRZIFVkYmxhYyAi
JiN4MTcwOyI+Ci08IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgotPCFFTlRJVFkgVW9nb24gIiYj
eDE3MjsiPgotPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgotPCFFTlRJVFkgV2NpcmMgIiYjeDE3
NDsiPgotPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgotPCFFTlRJVFkgWWNpcmMgIiYjeDE3Njsi
PgotPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgotPCFFTlRJVFkgWXVtbCAiJiN4MTc4OyI+Ci08
IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgotPCFFTlRJVFkgemFjdXRlICImI3gxN0E7Ij4KLTwh
RU5USVRZIFpkb3QgIiYjeDE3QjsiPgotPCFFTlRJVFkgemRvdCAiJiN4MTdDOyI+Ci08IUVOVElU
WSBaY2Fyb24gIiYjeDE3RDsiPgotPCFFTlRJVFkgemNhcm9uICImI3gxN0U7Ij4KLTwhRU5USVRZ
IGZub2YgIiYjeDE5MjsiPgotPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPgotPCFFTlRJVFkgZ2Fj
dXRlICImI3gxRjU7Ij4KLTwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4KLTwhRU5USVRZIGNpcmMg
IiYjeDJDNjsiPgotPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgotPCFFTlRJVFkgSGFjZWsgIiYj
eDJDNzsiPgotPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkgQnJldmUgIiYjeDJE
ODsiPgotPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsRG90ICIm
I3gyRDk7Ij4KLTwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgotPCFFTlRJVFkgb2dvbiAiJiN4MkRC
OyI+Ci08IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbFRpbGRl
ICImI3gyREM7Ij4KLTwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KLTwhRU5USVRZIERpYWNyaXRp
Y2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgotPCFFTlRJVFkgRG93bkJyZXZlICImI3gzMTE7Ij4K
LTwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KLTwhRU5USVRZIEJldGEgIiYjeDM5MjsiPgotPCFF
TlRJVFkgR2FtbWEgIiYjeDM5MzsiPgotPCFFTlRJVFkgRGVsdGEgIiYjeDM5NDsiPgotPCFFTlRJ
VFkgRXBzaWxvbiAiJiN4Mzk1OyI+Ci08IUVOVElUWSBaZXRhICImI3gzOTY7Ij4KLTwhRU5USVRZ
IEV0YSAiJiN4Mzk3OyI+Ci08IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+Ci08IUVOVElUWSBJb3Rh
ICImI3gzOTk7Ij4KLTwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KLTwhRU5USVRZIExhbWJkYSAi
JiN4MzlCOyI+Ci08IUVOVElUWSBNdSAiJiN4MzlDOyI+Ci08IUVOVElUWSBOdSAiJiN4MzlEOyI+
Ci08IUVOVElUWSBYaSAiJiN4MzlFOyI+Ci08IUVOVElUWSBPbWljcm9uICImI3gzOUY7Ij4KLTwh
RU5USVRZIFBpICImI3gzQTA7Ij4KLTwhRU5USVRZIFJobyAiJiN4M0ExOyI+Ci08IUVOVElUWSBT
aWdtYSAiJiN4M0EzOyI+Ci08IUVOVElUWSBUYXUgIiYjeDNBNDsiPgotPCFFTlRJVFkgVXBzaWxv
biAiJiN4M0E1OyI+Ci08IUVOVElUWSBQaGkgIiYjeDNBNjsiPgotPCFFTlRJVFkgQ2hpICImI3gz
QTc7Ij4KLTwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Ci08IUVOVElUWSBPbWVnYSAiJiN4M0E5OyI+
Ci08IUVOVElUWSBvaG0gIiYjeDNBOTsiPgotPCFFTlRJVFkgYWxwaGEgIiYjeDNCMTsiPgotPCFF
TlRJVFkgYmV0YSAiJiN4M0IyOyI+Ci08IUVOVElUWSBnYW1tYSAiJiN4M0IzOyI+Ci08IUVOVElU
WSBkZWx0YSAiJiN4M0I0OyI+Ci08IUVOVElUWSBlcHNpICImI3gzQjU7Ij4KLTwhRU5USVRZIGVw
c2lsb24gIiYjeDNCNTsiPgotPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+Ci08IUVOVElUWSBldGEg
IiYjeDNCNzsiPgotPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgotPCFFTlRJVFkgaW90YSAiJiN4
M0I5OyI+Ci08IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Ci08IUVOVElUWSBsYW1iZGEgIiYjeDNC
QjsiPgotPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgotPCFFTlRJVFkgbnUgIiYjeDNCRDsiPgotPCFF
TlRJVFkgeGkgIiYjeDNCRTsiPgotPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JGOyI+Ci08IUVOVElU
WSBwaSAiJiN4M0MwOyI+Ci08IUVOVElUWSByaG8gIiYjeDNDMTsiPgotPCFFTlRJVFkgc2lnbWF2
ICImI3gzQzI7Ij4KLTwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4KLTwhRU5USVRZIHNpZ21h
ZiAiJiN4M0MyOyI+Ci08IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Ci08IUVOVElUWSB0YXUgIiYj
eDNDNDsiPgotPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Ci08IUVOVElUWSB1cHNpbG9uICImI3gz
QzU7Ij4KLTwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Ci08IUVOVElUWSBjaGkgIiYjeDNDNzsiPgot
PCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KLTwhRU5USVRZIG9tZWdhICImI3gzQzk7Ij4KLTwhRU5U
SVRZIHRoZXRhdiAiJiN4M0QxOyI+Ci08IUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyI+Ci08IUVO
VElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Ci08IUVOVElUWSBVcHNpICImI3gzRDI7Ij4KLTwhRU5U
SVRZIHVwc2loICImI3gzRDI7Ij4KLTwhRU5USVRZIHN0cmFpZ2h0cGhpICImI3gzRDU7Ij4KLTwh
RU5USVRZIHBoaXYgIiYjeDNENTsiPgotPCFFTlRJVFkgdmFycGhpICImI3gzRDU7Ij4KLTwhRU5U
SVRZIHBpdiAiJiN4M0Q2OyI+Ci08IUVOVElUWSB2YXJwaSAiJiN4M0Q2OyI+Ci08IUVOVElUWSBH
YW1tYWQgIiYjeDNEQzsiPgotPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7Ij4KLTwhRU5USVRZIGRp
Z2FtbWEgIiYjeDNERDsiPgotPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij4KLTwhRU5USVRZIHZh
cmthcHBhICImI3gzRjA7Ij4KLTwhRU5USVRZIHJob3YgIiYjeDNGMTsiPgotPCFFTlRJVFkgdmFy
cmhvICImI3gzRjE7Ij4KLTwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4KLTwhRU5USVRZIHN0cmFp
Z2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Ci08IUVOVElUWSB2YXJlcHNpbG9uICImI3gzRjU7Ij4KLTwh
RU5USVRZIGJlcHNpICImI3gzRjY7Ij4KLTwhRU5USVRZIGJhY2tlcHNpbG9uICImI3gzRjY7Ij4K
LTwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgotPCFFTlRJVFkgREpjeSAiJiN4NDAyOyI+Ci08IUVO
VElUWSBHSmN5ICImI3g0MDM7Ij4KLTwhRU5USVRZIEp1a2N5ICImI3g0MDQ7Ij4KLTwhRU5USVRZ
IERTY3kgIiYjeDQwNTsiPgotPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsiPgotPCFFTlRJVFkgWUlj
eSAiJiN4NDA3OyI+Ci08IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgotPCFFTlRJVFkgTEpjeSAi
JiN4NDA5OyI+Ci08IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KLTwhRU5USVRZIFRTSGN5ICImI3g0
MEI7Ij4KLTwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgotPCFFTlRJVFkgVWJyY3kgIiYjeDQwRTsi
PgotPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Ci08IUVOVElUWSBBY3kgIiYjeDQxMDsiPgotPCFF
TlRJVFkgQmN5ICImI3g0MTE7Ij4KLTwhRU5USVRZIFZjeSAiJiN4NDEyOyI+Ci08IUVOVElUWSBH
Y3kgIiYjeDQxMzsiPgotPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KLTwhRU5USVRZIElFY3kgIiYj
eDQxNTsiPgotPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Ci08IUVOVElUWSBaY3kgIiYjeDQxNzsi
PgotPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KLTwhRU5USVRZIEpjeSAiJiN4NDE5OyI+Ci08IUVO
VElUWSBLY3kgIiYjeDQxQTsiPgotPCFFTlRJVFkgTGN5ICImI3g0MUI7Ij4KLTwhRU5USVRZIE1j
eSAiJiN4NDFDOyI+Ci08IUVOVElUWSBOY3kgIiYjeDQxRDsiPgotPCFFTlRJVFkgT2N5ICImI3g0
MUU7Ij4KLTwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Ci08IUVOVElUWSBSY3kgIiYjeDQyMDsiPgot
PCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KLTwhRU5USVRZIFRjeSAiJiN4NDIyOyI+Ci08IUVOVElU
WSBVY3kgIiYjeDQyMzsiPgotPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4KLTwhRU5USVRZIEtIY3kg
IiYjeDQyNTsiPgotPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Ci08IUVOVElUWSBDSGN5ICImI3g0
Mjc7Ij4KLTwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgotPCFFTlRJVFkgU0hDSGN5ICImI3g0Mjk7
Ij4KLTwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Ci08IUVOVElUWSBZY3kgIiYjeDQyQjsiPgot
PCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KLTwhRU5USVRZIEVjeSAiJiN4NDJEOyI+Ci08IUVO
VElUWSBZVWN5ICImI3g0MkU7Ij4KLTwhRU5USVRZIFlBY3kgIiYjeDQyRjsiPgotPCFFTlRJVFkg
YWN5ICImI3g0MzA7Ij4KLTwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Ci08IUVOVElUWSB2Y3kgIiYj
eDQzMjsiPgotPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KLTwhRU5USVRZIGRjeSAiJiN4NDM0OyI+
Ci08IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KLTwhRU5USVRZIHpoY3kgIiYjeDQzNjsiPgotPCFF
TlRJVFkgemN5ICImI3g0Mzc7Ij4KLTwhRU5USVRZIGljeSAiJiN4NDM4OyI+Ci08IUVOVElUWSBq
Y3kgIiYjeDQzOTsiPgotPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KLTwhRU5USVRZIGxjeSAiJiN4
NDNCOyI+Ci08IUVOVElUWSBtY3kgIiYjeDQzQzsiPgotPCFFTlRJVFkgbmN5ICImI3g0M0Q7Ij4K
LTwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Ci08IUVOVElUWSBwY3kgIiYjeDQzRjsiPgotPCFFTlRJ
VFkgcmN5ICImI3g0NDA7Ij4KLTwhRU5USVRZIHNjeSAiJiN4NDQxOyI+Ci08IUVOVElUWSB0Y3kg
IiYjeDQ0MjsiPgotPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KLTwhRU5USVRZIGZjeSAiJiN4NDQ0
OyI+Ci08IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KLTwhRU5USVRZIHRzY3kgIiYjeDQ0NjsiPgot
PCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Ci08IUVOVElUWSBzaGN5ICImI3g0NDg7Ij4KLTwhRU5U
SVRZIHNoY2hjeSAiJiN4NDQ5OyI+Ci08IUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiPgotPCFFTlRJ
VFkgeWN5ICImI3g0NEI7Ij4KLTwhRU5USVRZIHNvZnRjeSAiJiN4NDRDOyI+Ci08IUVOVElUWSBl
Y3kgIiYjeDQ0RDsiPgotPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Ci08IUVOVElUWSB5YWN5ICIm
I3g0NEY7Ij4KLTwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgotPCFFTlRJVFkgZGpjeSAiJiN4NDUy
OyI+Ci08IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KLTwhRU5USVRZIGp1a2N5ICImI3g0NTQ7Ij4K
LTwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgotPCFFTlRJVFkgaXVrY3kgIiYjeDQ1NjsiPgotPCFF
TlRJVFkgeWljeSAiJiN4NDU3OyI+Ci08IUVOVElUWSBqc2VyY3kgIiYjeDQ1ODsiPgotPCFFTlRJ
VFkgbGpjeSAiJiN4NDU5OyI+Ci08IUVOVElUWSBuamN5ICImI3g0NUE7Ij4KLTwhRU5USVRZIHRz
aGN5ICImI3g0NUI7Ij4KLTwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgotPCFFTlRJVFkgdWJyY3kg
IiYjeDQ1RTsiPgotPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Ci08IUVOVElUWSBlbnNwICImI3gy
MDAyOyI+Ci08IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Ci08IUVOVElUWSBlbXNwMTMgIiYjeDIw
MDQ7Ij4KLTwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgotPCFFTlRJVFkgbnVtc3AgIiYjeDIw
MDc7Ij4KLTwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgotPCFFTlRJVFkgdGhpbnNwICImI3gy
MDA5OyI+Ci08IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KLTwhRU5USVRZIGhhaXJzcCAi
JiN4MjAwQTsiPgotPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsiPgotPCFFTlRJVFkg
WmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlVmVyeVRoaW5TcGFj
ZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ij4KLTwh
RU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZl
VGhpY2tTcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgenduaiAiJiN4MjAwQzsiPgotPCFFTlRJ
VFkgendqICImI3gyMDBEOyI+Ci08IUVOVElUWSBscm0gIiYjeDIwMEU7Ij4KLTwhRU5USVRZIHJs
bSAiJiN4MjAwRjsiPgotPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+Ci08IUVOVElUWSBkYXNo
ICImI3gyMDEwOyI+Ci08IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgotPCFFTlRJVFkgbWRhc2gg
IiYjeDIwMTQ7Ij4KLTwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgotPCFFTlRJVFkgVmVyYmFy
ICImI3gyMDE2OyI+Ci08IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Ci08IUVOVElUWSBsc3F1byAi
JiN4MjAxODsiPgotPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ij4KLTwhRU5USVRZ
IHJzcXVvICImI3gyMDE5OyI+Ci08IUVOVElUWSByc3F1b3IgIiYjeDIwMTk7Ij4KLTwhRU5USVRZ
IENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgotPCFFTlRJVFkgbHNxdW9yICImI3gyMDFBOyI+
Ci08IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgotPCFFTlRJVFkgbGRxdW8gIiYjeDIwMUM7Ij4K
LTwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+Ci08IUVOVElUWSByZHF1
byAiJiN4MjAxRDsiPgotPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+Ci08IUVOVElUWSBDbG9z
ZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIGxkcXVvciAiJiN4MjAxRTsi
PgotPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KLTwhRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsi
PgotPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBkZGFnZ2VyICImI3gyMDIx
OyI+Ci08IUVOVElUWSBidWxsICImI3gyMDIyOyI+Ci08IUVOVElUWSBidWxsZXQgIiYjeDIwMjI7
Ij4KLTwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KLTwhRU5USVRZIGhlbGxpcCAiJiN4MjAyNjsi
PgotPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgotPCFFTlRJVFkgcGVybWlsICImI3gyMDMwOyI+
Ci08IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Ci08IUVOVElUWSBwcmltZSAiJiN4MjAzMjsi
PgotPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KLTwhRU5USVRZIHRwcmltZSAiJiN4MjAzNDsi
PgotPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Ci08IUVOVElUWSBiYWNrcHJpbWUgIiYjeDIw
MzU7Ij4KLTwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgotPCFFTlRJVFkgcnNhcXVvICImI3gy
MDNBOyI+Ci08IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgotPCFFTlRJVFkgT3ZlckJhciAiJiN4
MjAzRTsiPgotPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KLTwhRU5USVRZIGh5YnVsbCAiJiN4
MjA0MzsiPgotPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KLTwhRU5USVRZIGJzZW1pICImI3gy
MDRGOyI+Ci08IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KLTwhRU5USVRZIE1lZGl1bVNwYWNl
ICImI3gyMDVGOyI+Ci08IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYjeDIwMEE7Ij4KLTwh
RU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KLTwhRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIw
NjE7Ij4KLTwhRU5USVRZIGFmICImI3gyMDYxOyI+Ci08IUVOVElUWSBJbnZpc2libGVUaW1lcyAi
JiN4MjA2MjsiPgotPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KLTwhRU5USVRZIEludmlzaWJsZUNv
bW1hICImI3gyMDYzOyI+Ci08IUVOVElUWSBpYyAiJiN4MjA2MzsiPgotPCFFTlRJVFkgZXVybyAi
JiN4MjBBQzsiPgotPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgotPCFFTlRJVFkgVHJpcGxlRG90
ICImI3gyMERCOyI+Ci08IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4KLTwhRU5USVRZIENvcGYg
IiYjeDIxMDI7Ij4KLTwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsiPgotPCFFTlRJVFkgaW5j
YXJlICImI3gyMTA1OyI+Ci08IUVOVElUWSBnc2NyICImI3gyMTBBOyI+Ci08IUVOVElUWSBoYW1p
bHQgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiPgotPCFFTlRJ
VFkgSHNjciAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGZyICImI3gyMTBDOyI+Ci08IUVOVElUWSBQ
b2luY2FyZXBsYW5lICImI3gyMTBDOyI+Ci08IUVOVElUWSBxdWF0ZXJuaW9ucyAiJiN4MjEwRDsi
PgotPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgotPCFFTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
PgotPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Ci08IUVOVElUWSBoYmFyICImI3gyMTBGOyI+
Ci08IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIGhzbGFzaCAiJiN4MjEwRjsi
PgotPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7
Ij4KLTwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Ci08IUVOVElUWSBJbSAiJiN4MjExMTsiPgot
PCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KLTwhRU5USVRZIElmciAiJiN4MjExMTsiPgot
PCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgotPCFFTlRJVFkgbGFncmFuICImI3gyMTEyOyI+Ci08
IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Ci08IUVOVElUWSBlbGwgIiYjeDIxMTM7Ij4K
LTwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG5hdHVyYWxzICImI3gyMTE1OyI+
Ci08IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KLTwhRU5USVRZIGNvcHlzciAiJiN4MjExNzsi
PgotPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Ci08IUVOVElUWSB3cCAiJiN4MjExODsiPgot
PCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgotPCFFTlRJVFkgcHJpbWVzICImI3gyMTE5OyI+Ci08
IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KLTwhRU5USVRZIFFvcGYgIiYjeDIxMUE7Ij4K
LTwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWxpbmUgIiYjeDIxMUI7Ij4K
LTwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJlICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscGFydCAiJiN4MjExQzsiPgotPCFFTlRJVFkgUmZyICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscyAiJiN4MjExRDsiPgotPCFFTlRJVFkgUm9wZiAiJiN4MjExRDsiPgotPCFFTlRJ
VFkgcnggIiYjeDIxMUU7Ij4KLTwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+Ci08IUVOVElUWSBU
UkFERSAiJiN4MjEyMjsiPgotPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZ
IFpvcGYgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZIG1obyAiJiN4MjEyNzsiPgotPCFFTlRJVFkgWmZy
ICImI3gyMTI4OyI+Ci08IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4KLTwhRU5USVRZIGlpb3Rh
ICImI3gyMTI5OyI+Ci08IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJlcm5v
dWxsaXMgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJzY3IgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIENm
ciAiJiN4MjEyRDsiPgotPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiPgotPCFFTlRJVFkgZXNj
ciAiJiN4MjEyRjsiPgotPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgotPCFFTlRJVFkgZXhwZWN0
YXRpb24gIiYjeDIxMzA7Ij4KLTwhRU5USVRZIEZzY3IgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIEZv
dXJpZXJ0cmYgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIHBobW1hdCAiJiN4MjEzMzsiPgotPCFFTlRJ
VFkgTWVsbGludHJmICImI3gyMTMzOyI+Ci08IUVOVElUWSBNc2NyICImI3gyMTMzOyI+Ci08IUVO
VElUWSBvcmRlciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgb3JkZXJvZiAiJiN4MjEzNDsiPgotPCFF
TlRJVFkgb3NjciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgYWxlZnN5bSAiJiN4MjEzNTsiPgotPCFF
TlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KLTwhRU5USVRZIGJldGggIiYjeDIxMzY7Ij4KLTwhRU5U
SVRZIGdpbWVsICImI3gyMTM3OyI+Ci08IUVOVElUWSBkYWxldGggIiYjeDIxMzg7Ij4KLTwhRU5U
SVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Ci08IUVOVElUWSBERCAiJiN4MjE0
NTsiPgotPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgotPCFFTlRJVFkgZGQgIiYj
eDIxNDY7Ij4KLTwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0NzsiPgotPCFFTlRJVFkgZXhw
b25lbnRpYWxlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBlZSAiJiN4MjE0NzsiPgotPCFFTlRJVFkg
SW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgaWkgIiYjeDIxNDg7Ij4KLTwhRU5USVRZ
IGZyYWMxMyAiJiN4MjE1MzsiPgotPCFFTlRJVFkgZnJhYzIzICImI3gyMTU0OyI+Ci08IUVOVElU
WSBmcmFjMTUgIiYjeDIxNTU7Ij4KLTwhRU5USVRZIGZyYWMyNSAiJiN4MjE1NjsiPgotPCFFTlRJ
VFkgZnJhYzM1ICImI3gyMTU3OyI+Ci08IUVOVElUWSBmcmFjNDUgIiYjeDIxNTg7Ij4KLTwhRU5U
SVRZIGZyYWMxNiAiJiN4MjE1OTsiPgotPCFFTlRJVFkgZnJhYzU2ICImI3gyMTVBOyI+Ci08IUVO
VElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KLTwhRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiPgotPCFF
TlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Ci08IUVOVElUWSBmcmFjNzggIiYjeDIxNUU7Ij4KLTwh
RU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIGxlZnRhcnJvdyAiJiN4MjE5MDsiPgot
PCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBzbGFyciAiJiN4MjE5MDsi
PgotPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIHVhcnIgIiYj
eDIxOTE7Ij4KLTwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIFVwQXJyb3cg
IiYjeDIxOTE7Ij4KLTwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsiPgotPCFFTlRJVFkg
cmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJ
VFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ij4KLTwh
RU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgZGFyciAiJiN4MjE5
MzsiPgotPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Ci08IUVOVElUWSBEb3duQXJyb3cg
IiYjeDIxOTM7Ij4KLTwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkzOyI+Ci08IUVOVElU
WSBoYXJyICImI3gyMTk0OyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAiJiN4MjE5NDsiPgot
PCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZIHZhcnIgIiYjeDIx
OTU7Ij4KLTwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Ci08IUVOVElUWSBVcERvd25B
cnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij4KLTwhRU5USVRZIFVw
cGVyTGVmdEFycm93ICImI3gyMTk2OyI+Ci08IUVOVElUWSBud2Fycm93ICImI3gyMTk2OyI+Ci08
IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgotPCFFTlRJVFkgVXBwZXJSaWdodEFycm93ICImI3gy
MTk3OyI+Ci08IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Ci08IUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiPgotPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJVFkgTG93ZXJSaWdo
dEFycm93ICImI3gyMTk4OyI+Ci08IUVOVElUWSBzd2FyciAiJiN4MjE5OTsiPgotPCFFTlRJVFkg
c3dhcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgTG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ij4K
LTwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Ci08IUVOVElUWSBubGVmdGFycm93ICImI3gyMTlB
OyI+Ci08IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgotPCFFTlRJVFkgbnJpZ2h0YXJyb3cgIiYj
eDIxOUI7Ij4KLTwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Ci08IUVOVElUWSByaWdodHNxdWln
YXJyb3cgIiYjeDIxOUQ7Ij4KLTwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ij4KLTwh
RU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIHR3b2hlYWRsZWZ0YXJyb3cgIiYjeDIx
OUU7Ij4KLTwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KLTwhRU5USVRZIFJhcnIgIiYjeDIxQTA7
Ij4KLTwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+Ci08IUVOVElUWSBEYXJy
ICImI3gyMUExOyI+Ci08IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIGxlZnRh
cnJvd3RhaWwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiPgotPCFFTlRJ
VFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KLTwhRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4
MjFBNDsiPgotPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgotPCFFTlRJVFkgVXBUZWVB
cnJvdyAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ij4KLTwhRU5USVRZ
IG1hcCAiJiN4MjFBNjsiPgotPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAiJiN4MjFBNjsiPgotPCFF
TlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Ci08IUVOVElUWSBEb3duVGVlQXJyb3cgIiYjeDIxQTc7
Ij4KLTwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KLTwhRU5USVRZIGxhcnJoayAiJiN4
MjFBOTsiPgotPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPgotPCFFTlRJVFkgcmFy
cmhrICImI3gyMUFBOyI+Ci08IUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiPgotPCFF
TlRJVFkgbGFycmxwICImI3gyMUFCOyI+Ci08IUVOVElUWSBsb29wYXJyb3dsZWZ0ICImI3gyMUFC
OyI+Ci08IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGxvb3BhcnJvd3JpZ2h0
ICImI3gyMUFDOyI+Ci08IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbGVmdHJp
Z2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ij4KLTwh
RU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgotPCFFTlRJVFkgbHNoICImI3gyMUIw
OyI+Ci08IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIHJzaCAiJiN4MjFCMTsiPgot
PCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBsZHNoICImI3gyMUIyOyI+Ci08IUVO
VElUWSByZHNoICImI3gyMUIzOyI+Ci08IUVOVElUWSBjcmFyciAiJiN4MjFCNTsiPgotPCFFTlRJ
VFkgY3VsYXJyICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93bGVmdCAiJiN4MjFCNjsi
PgotPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93cmlnaHQg
IiYjeDIxQjc7Ij4KLTwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Ci08IUVOVElUWSBjaXJjbGVh
cnJvd2xlZnQgIiYjeDIxQkE7Ij4KLTwhRU5USVRZIG9yYXJyICImI3gyMUJCOyI+Ci08IUVOVElU
WSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Ci08IUVOVElUWSBsaGFydSAiJiN4MjFCQzsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGVmdGhhcnBvb251
cCAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIGxlZnRo
YXJwb29uZG93biAiJiN4MjFCRDsiPgotPCFFTlRJVFkgRG93bkxlZnRWZWN0b3IgIiYjeDIxQkQ7
Ij4KLTwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Ci08IUVOVElUWSB1cGhhcnBvb25yaWdodCAi
JiN4MjFCRTsiPgotPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFCRTsiPgotPCFFTlRJVFkg
dWhhcmwgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ij4KLTwh
RU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgotPCFFTlRJVFkgcmhhcnUgIiYjeDIxQzA7
Ij4KLTwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Ci08IUVOVElUWSByaWdodGhhcnBv
b251cCAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7Ij4KLTwhRU5USVRZIHJp
Z2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvciAiJiN4
MjFDMTsiPgotPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blZl
Y3RvciAiJiN4MjFDMjsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25yaWdodCAiJiN4MjFDMjsiPgot
PCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIExlZnREb3duVmVjdG9yICImI3gy
MUMzOyI+Ci08IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIHJs
YXJyICImI3gyMUM0OyI+Ci08IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KLTwhRU5USVRZIHVkYXJyICIm
I3gyMUM1OyI+Ci08IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyI+Ci08IUVOVElU
WSBscmFyciAiJiN4MjFDNjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3dzICImI3gyMUM2OyI+
Ci08IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+Ci08IUVOVElUWSBsbGFy
ciAiJiN4MjFDNzsiPgotPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ij4KLTwhRU5U
SVRZIHV1YXJyICImI3gyMUM4OyI+Ci08IUVOVElUWSB1cHVwYXJyb3dzICImI3gyMUM4OyI+Ci08
IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgotPCFFTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4
MjFDOTsiPgotPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZIGRvd25kb3duYXJy
b3dzICImI3gyMUNBOyI+Ci08IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPgotPCFFTlRJVFkgUmV2
ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRoYXJwb29ucyAi
JiN4MjFDQjsiPgotPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KLTwhRU5USVRZIHJpZ2h0bGVm
dGhhcnBvb25zICImI3gyMUNDOyI+Ci08IUVOVElUWSBFcXVpbGlicml1bSAiJiN4MjFDQzsiPgot
PCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5MZWZ0YXJyb3cgIiYjeDIxQ0Q7
Ij4KLTwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Ci08IUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cg
IiYjeDIxQ0U7Ij4KLTwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Ci08IUVOVElUWSBuUmlnaHRh
cnJvdyAiJiN4MjFDRjsiPgotPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPgotPCFFTlRJVFkgTGVm
dGFycm93ICImI3gyMUQwOyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0QXJyb3cgIiYjeDIxRDA7Ij4K
LTwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIFVwYXJyb3cgIiYjeDIxRDE7Ij4K
LTwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIHJBcnIgIiYjeDIx
RDI7Ij4KLTwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIEltcGxpZXMg
IiYjeDIxRDI7Ij4KLTwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5U
SVRZIGRBcnIgIiYjeDIxRDM7Ij4KLTwhRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiPgotPCFF
TlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBoQXJyICImI3gyMUQ0
OyI+Ci08IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgotPCFFTlRJVFkgRG91Ymxl
TGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIGlmZiAiJiN4MjFENDsiPgotPCFF
TlRJVFkgdkFyciAiJiN4MjFENTsiPgotPCFFTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7Ij4K
LTwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Ci08IUVOVElUWSBud0FyciAi
JiN4MjFENjsiPgotPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KLTwhRU5USVRZIHNlQXJyICIm
I3gyMUQ4OyI+Ci08IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgotPCFFTlRJVFkgbEFhcnIgIiYj
eDIxREE7Ij4KLTwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4KLTwhRU5USVRZIHJBYXJy
ICImI3gyMURCOyI+Ci08IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiPgotPCFFTlRJVFkg
emlncmFyciAiJiN4MjFERDsiPgotPCFFTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ij4KLTwhRU5USVRZ
IExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgotPCFFTlRJVFkgcmFycmIgIiYjeDIxRTU7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KLTwhRU5USVRZIGR1YXJyICImI3gyMUY1
OyI+Ci08IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+Ci08IUVOVElUWSBsb2Fy
ciAiJiN4MjFGRDsiPgotPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4KLTwhRU5USVRZIGhvYXJy
ICImI3gyMUZGOyI+Ci08IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4KLTwhRU5USVRZIEZvckFs
bCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgY29tcGxl
bWVudCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPgotPCFFTlRJVFkgUGFy
dGlhbEQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYjeDMzODsiPgotPCFF
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KLTwhRU5USVRZIEV4aXN0cyAiJiN4MjIwMzsiPgotPCFF
TlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Ci08IUVOVElUWSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ij4K
LTwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KLTwhRU5USVRZIGVtcHR5ICImI3gyMjA1OyI+
Ci08IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgotPCFFTlRJVFkgZW1wdHl2ICImI3gyMjA1
OyI+Ci08IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Ci08IUVOVElUWSBuYWJsYSAiJiN4
MjIwNzsiPgotPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Ci08IUVOVElUWSBpc2luICImI3gyMjA4
OyI+Ci08IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgotPCFFTlRJVFkgRWxlbWVudCAiJiN4MjIw
ODsiPgotPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIG5vdGluICImI3gyMjA5OyI+
Ci08IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Ci08IUVOVElUWSBub3RpbnZhICImI3gy
MjA5OyI+Ci08IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFJldmVyc2VFbGVtZW50
ICImI3gyMjBCOyI+Ci08IUVOVElUWSBuaSAiJiN4MjIwQjsiPgotPCFFTlRJVFkgU3VjaFRoYXQg
IiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Ci08IUVOVElUWSBub3RuaXZh
ICImI3gyMjBDOyI+Ci08IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiPgotPCFF
TlRJVFkgcHJvZCAiJiN4MjIwRjsiPgotPCFFTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsiPgotPCFF
TlRJVFkgY29wcm9kICImI3gyMjEwOyI+Ci08IUVOVElUWSBDb3Byb2R1Y3QgIiYjeDIyMTA7Ij4K
LTwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgotPCFFTlRJVFkgU3VtICImI3gyMjExOyI+Ci08IUVO
VElUWSBtaW51cyAiJiN4MjIxMjsiPgotPCFFTlRJVFkgbW5wbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBtcCAiJiN4MjIxMzsiPgotPCFFTlRJVFkgTWludXNQbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KLTwhRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ij4KLTwh
RU5USVRZIHNldG1uICImI3gyMjE2OyI+Ci08IUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiPgot
PCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Ci08IUVOVElUWSBzc2V0bW4gIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KLTwhRU5USVRZIGxvd2FzdCAi
JiN4MjIxNzsiPgotPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Ci08IUVOVElUWSBTbWFsbENp
cmNsZSAiJiN4MjIxODsiPgotPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIFNx
cnQgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHByb3B0
byAiJiN4MjIxRDsiPgotPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFEOyI+Ci08IUVOVElU
WSB2cHJvcCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyI+Ci08IUVO
VElUWSBpbmZpbiAiJiN4MjIxRTsiPgotPCFFTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ij4KLTwhRU5U
SVRZIGFuZyAiJiN4MjIyMDsiPgotPCFFTlRJVFkgYW5nbGUgIiYjeDIyMjA7Ij4KLTwhRU5USVRZ
IG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgotPCFFTlRJVFkgYW5nbXNkICImI3gyMjIxOyI+Ci08
IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Ci08IUVOVElUWSBhbmdzcGggIiYjeDIy
MjI7Ij4KLTwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgVmVydGljYWxCYXIgIiYj
eDIyMjM7Ij4KLTwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIHNob3J0bWlkICIm
I3gyMjIzOyI+Ci08IUVOVElUWSBubWlkICImI3gyMjI0OyI+Ci08IUVOVElUWSBOb3RWZXJ0aWNh
bEJhciAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIG5z
aG9ydG1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgcGFyICImI3gyMjI1OyI+Ci08IUVOVElUWSBw
YXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgRG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjU7
Ij4KLTwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ij4KLTwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KLTwhRU5USVRZIG5wYXJhbGxlbCAi
JiN4MjIyNjsiPgotPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjY7Ij4KLTwh
RU5USVRZIG5zcGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NjsiPgotPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Ci08IUVOVElUWSB3ZWRnZSAiJiN4MjIyNzsi
PgotPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KLTwhRU5USVRZIHZlZSAiJiN4MjIyODsiPgotPCFF
TlRJVFkgY2FwICImI3gyMjI5OyI+Ci08IUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZFMDA7Ij4K
LTwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgotPCFFTlRJVFkgY3VwcyAiJiN4MjIyQTsmI3hGRTAw
OyI+Ci08IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludGVncmFsICImI3gyMjJC
OyI+Ci08IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KLTwhRU5USVRZIHRpbnQgIiYjeDIyMkQ7Ij4K
LTwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Ci08IUVOVElUWSBjb25pbnQgIiYjeDIyMkU7Ij4K
LTwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4
MjIyRTsiPgotPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Ci08IUVOVElUWSBEb3VibGVDb250
b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KLTwhRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ij4KLTwh
RU5USVRZIGN3aW50ICImI3gyMjMxOyI+Ci08IUVOVElUWSBjd2NvbmludCAiJiN4MjIzMjsiPgot
PCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI+Ci08IUVOVElUWSBh
d2NvbmludCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRl
Z3JhbCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI+Ci08IUVOVElUWSB0
aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIFRoZXJlZm9yZSAiJiN4MjIzNDsiPgotPCFF
TlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Ci08IUVOVElUWSBiZWNhdXNlICImI3gyMjM1OyI+Ci08
IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Ci08IUVOVElUWSByYXRpbyAiJiN4MjIzNjsiPgot
PCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7
Ij4KLTwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgotPCFFTlRJVFkgZG90bWludXMgIiYjeDIy
Mzg7Ij4KLTwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Ci08IUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ij4KLTwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgVGlsZGUgIiYjeDIyM0M7
Ij4KLTwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhpY2tzaW0gIiYjeDIy
M0M7Ij4KLTwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGJzaW0g
IiYjeDIyM0Q7Ij4KLTwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4KLTwhRU5USVRZIHJhY2Ug
IiYjeDIyM0Q7JiN4MzMxOyI+Ci08IUVOVElUWSBhYyAiJiN4MjIzRTsiPgotPCFFTlRJVFkgbXN0
cG9zICImI3gyMjNFOyI+Ci08IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyI+Ci08IUVOVElU
WSBhY2QgIiYjeDIyM0Y7Ij4KLTwhRU5USVRZIHdyZWF0aCAiJiN4MjI0MDsiPgotPCFFTlRJVFkg
VmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgotPCFFTlRJVFkgd3IgIiYjeDIyNDA7Ij4KLTwhRU5U
SVRZIG5zaW0gIiYjeDIyNDE7Ij4KLTwhRU5USVRZIE5vdFRpbGRlICImI3gyMjQxOyI+Ci08IUVO
VElUWSBlc2ltICImI3gyMjQyOyI+Ci08IUVOVElUWSBFcXVhbFRpbGRlICImI3gyMjQyOyI+Ci08
IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0
MjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsiPgotPCFFTlRJVFkg
c2ltZSAiJiN4MjI0MzsiPgotPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiPgotPCFFTlRJ
VFkgc2ltZXEgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIG5zaW1lICImI3gyMjQ0OyI+Ci08IUVOVElU
WSBuc2ltZXEgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRXF1YWwgIiYjeDIyNDQ7Ij4K
LTwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ1OyI+Ci08IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgotPCFFTlRJVFkgbmNvbmcgIiYjeDIy
NDc7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI+Ci08IUVOVElUWSBh
c3ltcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIFRpbGRl
VGlsZGUgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwcHJveCAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
dGhrYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyI+Ci08IUVO
VElUWSBuYXAgIiYjeDIyNDk7Ij4KLTwhRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYjeDIyNDk7Ij4K
LTwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KLTwhRU5USVRZIGFwZSAiJiN4MjI0QTsiPgot
PCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KLTwhRU5USVRZIGFwaWQgIiYjeDIyNEI7Ij4K
LTwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgotPCFFTlRJVFkgYmNvbmcgIiYjeDIy
NEM7Ij4KLTwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Ci08IUVOVElUWSBhc3ltcGVxICIm
I3gyMjREOyI+Ci08IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KLTwhRU5USVRZIG52YXAgIiYj
eDIyNEQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsiPgotPCFFTlRJVFkgSHVt
cERvd25IdW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ij4KLTwhRU5U
SVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5idW1wICIm
I3gyMjRFOyYjeDMzODsiPgotPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIEh1
bXBFcXVhbCAiJiN4MjI0RjsiPgotPCFFTlRJVFkgYnVtcGVxICImI3gyMjRGOyI+Ci08IUVOVElU
WSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RIdW1wRXF1YWwgIiYjeDIy
NEY7JiN4MzM4OyI+Ci08IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgotPCFFTlRJVFkgRG90RXF1
YWwgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+Ci08IUVOVElUWSBuZWRv
dCAiJiN4MjI1MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVEb3QgIiYjeDIyNTE7Ij4KLTwhRU5USVRZ
IGRvdGVxZG90ICImI3gyMjUxOyI+Ci08IUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiPgotPCFFTlRJ
VFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgotPCFFTlRJVFkgZXJEb3QgIiYjeDIyNTM7Ij4K
LTwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgotPCFFTlRJVFkgY29sb25lICImI3gy
MjU0OyI+Ci08IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Ci08IUVOVElUWSBBc3NpZ24gIiYj
eDIyNTQ7Ij4KLTwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJVFkgZXFjb2xvbiAi
JiN4MjI1NTsiPgotPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgotPCFFTlRJVFkgZXFjaXJjICIm
I3gyMjU2OyI+Ci08IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Ci08IUVOVElUWSBjaXJjZXEgIiYj
eDIyNTc7Ij4KLTwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgotPCFFTlRJVFkgdmVlZXEgIiYj
eDIyNUE7Ij4KLTwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcSAi
JiN4MjI1QzsiPgotPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Ci08IUVOVElUWSBxdWVzdGVx
ICImI3gyMjVGOyI+Ci08IUVOVElUWSBuZSAiJiN4MjI2MDsiPgotPCFFTlRJVFkgTm90RXF1YWwg
IiYjeDIyNjA7Ij4KLTwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Ci08IUVOVElUWSBDb25ncnVl
bnQgIiYjeDIyNjE7Ij4KLTwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4MjBFNTsiPgotPCFF
TlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Ci08IUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7
Ij4KLTwhRU5USVRZIGxlICImI3gyMjY0OyI+Ci08IUVOVElUWSBsZXEgIiYjeDIyNjQ7Ij4KLTwh
RU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgZ2UgIiYjeDIyNjU7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgotPCFFTlRJVFkgZ2VxICImI3gyMjY1
OyI+Ci08IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KLTwhRU5USVRZIGxFICImI3gy
MjY2OyI+Ci08IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+Ci08IUVOVElUWSBsZXFx
ICImI3gyMjY2OyI+Ci08IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4OyI+Ci08IUVOVElUWSBu
bGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdFICImI3gyMjY3OyI+Ci08IUVOVElU
WSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Ci08IUVOVElUWSBnZXFxICImI3gyMjY3OyI+
Ci08IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2VxcSAiJiN4MjI2
NzsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4
OyI+Ci08IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGxuZXFxICImI3gyMjY4OyI+
Ci08IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZIGx2ZXJ0bmVxcSAi
JiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBnbkUgIiYjeDIyNjk7Ij4KLTwhRU5USVRZIGdu
ZXFxICImI3gyMjY5OyI+Ci08IUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZFMDA7Ij4KLTwhRU5U
SVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08IUVOVElUWSBMdCAiJiN4MjI2QTsi
PgotPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KLTwhRU5USVRZIGxsICImI3gy
MjZBOyI+Ci08IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgotPCFFTlRJVFkgTm90TGVz
c0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Ci08IUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBEMjsi
PgotPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIE5lc3RlZEdyZWF0ZXJHcmVhdGVy
ICImI3gyMjZCOyI+Ci08IUVOVElUWSBnZyAiJiN4MjI2QjsiPgotPCFFTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyYjeDMz
ODsiPgotPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHR3aXh0ICIm
I3gyMjZDOyI+Ci08IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Ci08IUVOVElUWSBOb3RDdXBD
YXAgIiYjeDIyNkQ7Ij4KLTwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgotPCFFTlRJVFkgTm90TGVz
cyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIG5ndCAi
JiN4MjI2RjsiPgotPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmd0
ciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Ci08IUVOVElUWSBOb3RMZXNz
RXF1YWwgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5sZXEgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5n
ZSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gyMjcxOyI+Ci08IUVO
VElUWSBuZ2VxICImI3gyMjcxOyI+Ci08IUVOVElUWSBsc2ltICImI3gyMjcyOyI+Ci08IUVOVElU
WSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KLTwhRU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ij4KLTwh
RU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KLTwhRU5USVRZIGd0cnNpbSAiJiN4MjI3MzsiPgotPCFF
TlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Ci08IUVOVElUWSBubHNpbSAiJiN4MjI3NDsi
PgotPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Ci08IUVOVElUWSBuZ3NpbSAiJiN4
MjI3NTsiPgotPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI+Ci08IUVOVElUWSBs
ZyAiJiN4MjI3NjsiPgotPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiPgotPCFFTlRJVFkgTGVz
c0dyZWF0ZXIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGdsICImI3gyMjc3OyI+Ci08IUVOVElUWSBn
dHJsZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiPgotPCFF
TlRJVFkgbnRsZyAiJiN4MjI3ODsiPgotPCFFTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7
Ij4KLTwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJMZXNzICIm
I3gyMjc5OyI+Ci08IUVOVElUWSBwciAiJiN4MjI3QTsiPgotPCFFTlRJVFkgUHJlY2VkZXMgIiYj
eDIyN0E7Ij4KLTwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIHNjICImI3gyMjdC
OyI+Ci08IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgotPCFFTlRJVFkgc3VjYyAiJiN4MjI3
QjsiPgotPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIFByZWNlZGVzU2xhbnRF
cXVhbCAiJiN4MjI3QzsiPgotPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIyN0M7Ij4KLTwhRU5U
SVRZIHNjY3VlICImI3gyMjdEOyI+Ci08IUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
N0Q7Ij4KLTwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Ci08IUVOVElUWSBwcnNpbSAi
JiN4MjI3RTsiPgotPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgUHJlY2Vk
ZXNUaWxkZSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZ
IHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7Ij4K
LTwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyI+Ci08IUVOVElUWSBu
cHIgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+Ci08IUVOVElUWSBOb3RQ
cmVjZWRlcyAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnNjICImI3gyMjgxOyI+Ci08IUVOVElUWSBu
c3VjYyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIyODE7Ij4KLTwhRU5U
SVRZIHN1YiAiJiN4MjI4MjsiPgotPCFFTlRJVFkgc3Vic2V0ICImI3gyMjgyOyI+Ci08IUVOVElU
WSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYj
eDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElU
WSBzdXAgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiPgotPCFFTlRJVFkg
U3VwZXJzZXQgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHZuc3VwICImI3gyMjgzOyYjeDIwRDI7Ij4K
LTwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgTm90U3VwZXJz
ZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YiAiJiN4MjI4NDsiPgotPCFFTlRJ
VFkgbnN1cCAiJiN4MjI4NTsiPgotPCFFTlRJVFkgc3ViZSAiJiN4MjI4NjsiPgotPCFFTlRJVFkg
U3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyI+Ci08
IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Ci08IUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiPgot
PCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgotPCFFTlRJVFkgbnN1YmUgIiYjeDIy
ODg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgotPCFFTlRJVFkgTm90U3Vic2V0
RXF1YWwgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdXBlICImI3gyMjg5OyI+Ci08IUVOVElUWSBu
c3Vwc2V0ZXEgIiYjeDIyODk7Ij4KLTwhRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYjeDIyODk7
Ij4KLTwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Ci08IUVOVElUWSBzdWJzZXRuZXEgIiYjeDIy
OEE7Ij4KLTwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJz
dWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ij4K
LTwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgdnN1cG5lICImI3gyMjhC
OyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyI+Ci08
IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KLTwhRU5USVRZIHVwbHVzICImI3gyMjhFOyI+Ci08
IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIHNxc3ViICImI3gyMjhGOyI+
Ci08IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIHNxc3Vic2V0ICIm
I3gyMjhGOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4MzM4OyI+Ci08
IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIy
OTA7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiPgot
PCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3Vic2V0
ZXEgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiPgotPCFFTlRJVFkgU3F1
YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FzdXBzZXRlcSAiJiN4MjI5
MjsiPgotPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KLTwhRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiPgotPCFFTlRJVFkgc3FjYXBzICImI3gyMjkzOyYjeEZFMDA7Ij4KLTwh
RU5USVRZIHNxY3VwICImI3gyMjk0OyI+Ci08IUVOVElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsi
PgotPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KLTwhRU5USVRZIG9wbHVzICIm
I3gyMjk1OyI+Ci08IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+Ci08IUVOVElUWSBvbWlu
dXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyI+Ci08IUVOVElU
WSBvdGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIENpcmNsZVRpbWVzICImI3gyMjk3OyI+Ci08
IUVOVElUWSBvc29sICImI3gyMjk4OyI+Ci08IUVOVElUWSBvZG90ICImI3gyMjk5OyI+Ci08IUVO
VElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIG9jaXIgIiYjeDIyOUE7Ij4KLTwh
RU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Ci08IUVOVElUWSBvYXN0ICImI3gyMjlCOyI+
Ci08IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Ci08IUVOVElUWSBvZGFzaCAiJiN4MjI5
RDsiPgotPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KLTwhRU5USVRZIHBsdXNiICIm
I3gyMjlFOyI+Ci08IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Ci08IUVOVElUWSBtaW51c2Ig
IiYjeDIyOUY7Ij4KLTwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+Ci08IUVOVElUWSB0aW1l
c2IgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIGJveHRpbWVzICImI3gyMkEwOyI+Ci08IUVOVElUWSBz
ZG90YiAiJiN4MjJBMTsiPgotPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyI+Ci08IUVOVElU
WSB2ZGFzaCAiJiN4MjJBMjsiPgotPCFFTlRJVFkgUmlnaHRUZWUgIiYjeDIyQTI7Ij4KLTwhRU5U
SVRZIGRhc2h2ICImI3gyMkEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlICImI3gyMkEzOyI+Ci08IUVO
VElUWSB0b3AgIiYjeDIyQTQ7Ij4KLTwhRU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ij4KLTwhRU5U
SVRZIGJvdHRvbSAiJiN4MjJBNTsiPgotPCFFTlRJVFkgYm90ICImI3gyMkE1OyI+Ci08IUVOVElU
WSBwZXJwICImI3gyMkE1OyI+Ci08IUVOVElUWSBVcFRlZSAiJiN4MjJBNTsiPgotPCFFTlRJVFkg
bW9kZWxzICImI3gyMkE3OyI+Ci08IUVOVElUWSB2RGFzaCAiJiN4MjJBODsiPgotPCFFTlRJVFkg
RG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KLTwhRU5USVRZIFZkYXNoICImI3gyMkE5OyI+Ci08
IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KLTwhRU5USVRZIFZEYXNoICImI3gyMkFCOyI+Ci08
IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KLTwhRU5USVRZIG52RGFzaCAiJiN4MjJBRDsiPgot
PCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Ci08IUVOVElUWSBuVkRhc2ggIiYjeDIyQUY7Ij4K
LTwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgotPCFFTlRJVFkgdmx0cmkgIiYjeDIyQjI7Ij4K
LTwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgotPCFFTlRJVFkgTGVmdFRyaWFu
Z2xlICImI3gyMkIyOyI+Ci08IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiPgotPCFFTlRJVFkgdmFy
dHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgotPCFFTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJC
MzsiPgotPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlbGVmdGVx
ICImI3gyMkI0OyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiPgotPCFF
TlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Ci08IUVOVElUWSBydHJpZSAiJiN4MjJC
NTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+Ci08IUVOVElUWSBSaWdo
dFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4
MjBEMjsiPgotPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Ci08IUVOVElUWSBpbW9mICImI3gy
MkI3OyI+Ci08IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkgbXVsdGltYXAgIiYj
eDIyQjg7Ij4KLTwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgotPCFFTlRJVFkgaW50Y2FsICIm
I3gyMkJBOyI+Ci08IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgotPCFFTlRJVFkgdmVlYmFy
ICImI3gyMkJCOyI+Ci08IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4KLTwhRU5USVRZIGFuZ3J0
dmIgIiYjeDIyQkU7Ij4KLTwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+Ci08IUVOVElUWSB4d2Vk
Z2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSBiaWd3
ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgVmVl
ICImI3gyMkMxOyI+Ci08IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZIHhjYXAg
IiYjeDIyQzI7Ij4KLTwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiPgotPCFFTlRJVFkg
YmlnY2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSB4Y3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBV
bmlvbiAiJiN4MjJDMzsiPgotPCFFTlRJVFkgYmlnY3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBk
aWFtICImI3gyMkM0OyI+Ci08IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBE
aWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBzZG90ICImI3gyMkM1OyI+Ci08IUVOVElUWSBz
c3RhcmYgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIFN0YXIgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIGRp
dm9ueCAiJiN4MjJDNzsiPgotPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiPgotPCFF
TlRJVFkgYm93dGllICImI3gyMkM4OyI+Ci08IUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ij4KLTwh
RU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgotPCFFTlRJVFkgbHRocmVlICImI3gyMkNCOyI+Ci08
IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgotPCFFTlRJVFkgcnRocmVlICImI3gy
MkNDOyI+Ci08IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7Ij4KLTwhRU5USVRZIGJz
aW1lICImI3gyMkNEOyI+Ci08IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ij4KLTwhRU5USVRZ
IGN1dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXJseXZlZSAiJiN4MjJDRTsiPgotPCFFTlRJ
VFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KLTwhRU5USVRZIGN1cmx5d2VkZ2UgIiYjeDIyQ0Y7Ij4KLTwh
RU5USVRZIFN1YiAiJiN4MjJEMDsiPgotPCFFTlRJVFkgU3Vic2V0ICImI3gyMkQwOyI+Ci08IUVO
VElUWSBTdXAgIiYjeDIyRDE7Ij4KLTwhRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiPgotPCFFTlRJ
VFkgQ2FwICImI3gyMkQyOyI+Ci08IUVOVElUWSBDdXAgIiYjeDIyRDM7Ij4KLTwhRU5USVRZIGZv
cmsgIiYjeDIyRDQ7Ij4KLTwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiPgotPCFFTlRJVFkg
ZXBhciAiJiN4MjJENTsiPgotPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGxl
c3Nkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGd0ZG90ICImI3gyMkQ3OyI+Ci08IUVOVElUWSBn
dHJkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIExsICImI3gyMkQ4OyI+Ci08IUVOVElUWSBuTGwg
IiYjeDIyRDg7JiN4MzM4OyI+Ci08IUVOVElUWSBHZyAiJiN4MjJEOTsiPgotPCFFTlRJVFkgZ2dn
ICImI3gyMkQ5OyI+Ci08IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4OyI+Ci08IUVOVElUWSBs
ZWcgIiYjeDIyREE7Ij4KLTwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ij4KLTwh
RU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzZyAiJiN4MjJEQTsmI3hG
RTAwOyI+Ci08IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KLTwhRU5USVRZIGd0cmVxbGVzcyAiJiN4
MjJEQjsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJEQjsiPgotPCFFTlRJVFkg
Z2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Ci08IUVOVElUWSBjdWVwciAiJiN4MjJERTsiPgotPCFF
TlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KLTwhRU5USVRZIGN1ZXNjICImI3gyMkRGOyI+
Ci08IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgotPCFFTlRJVFkgbnByY3VlICImI3gy
MkUwOyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ij4KLTwhRU5U
SVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNTbGFudEVxdWFsICIm
I3gyMkUxOyI+Ci08IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Ci08IUVOVElUWSBOb3RTcXVh
cmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgotPCFFTlRJVFkgbnNxc3VwZSAiJiN4MjJFMzsiPgot
PCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPgotPCFFTlRJVFkgbG5z
aW0gIiYjeDIyRTY7Ij4KLTwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+Ci08IUVOVElUWSBwcm5z
aW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyI+Ci08IUVOVElUWSBz
Y25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyI+Ci08IUVOVElU
WSBubHRyaSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiPgot
PCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Ci08IUVOVElUWSBucnRyaSAiJiN4
MjJFQjsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIG5sdHJpZSAiJiN4MjJFQzsiPgot
PCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVFcXVhbCAiJiN4MjJFQzsiPgotPCFFTlRJVFkgbnJ0cmllICImI3gyMkVEOyI+Ci08IUVO
VElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Ci08IUVOVElUWSBOb3RSaWdodFRyaWFu
Z2xlRXF1YWwgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIHZlbGxpcCAiJiN4MjJFRTsiPgotPCFFTlRJ
VFkgY3Rkb3QgIiYjeDIyRUY7Ij4KLTwhRU5USVRZIHV0ZG90ICImI3gyMkYwOyI+Ci08IUVOVElU
WSBkdGRvdCAiJiN4MjJGMTsiPgotPCFFTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ij4KLTwhRU5USVRZ
IGlzaW5zdiAiJiN4MjJGMzsiPgotPCFFTlRJVFkgaXNpbnMgIiYjeDIyRjQ7Ij4KLTwhRU5USVRZ
IGlzaW5kb3QgIiYjeDIyRjU7Ij4KLTwhRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
PgotPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgotPCFFTlRJVFkgbm90aW52YiAiJiN4MjJG
NzsiPgotPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KLTwhRU5USVRZIG5vdGluRSAiJiN4MjJG
OTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KLTwhRU5USVRZIHhuaXMgIiYj
eDIyRkI7Ij4KLTwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgotPCFFTlRJVFkgbm90bml2YyAiJiN4
MjJGRDsiPgotPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgotPCFFTlRJVFkgYmFyd2VkICIm
I3gyMzA1OyI+Ci08IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgotPCFFTlRJVFkgQmFyd2Vk
ICImI3gyMzA2OyI+Ci08IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4MjMwNjsiPgotPCFFTlRJ
VFkgbGNlaWwgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyI+Ci08
IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgotPCFFTlRJVFkgUmlnaHRDZWlsaW5nICImI3gyMzA5
OyI+Ci08IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KLTwhRU5USVRZIExlZnRGbG9vciAiJiN4
MjMwQTsiPgotPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Ci08IUVOVElUWSBSaWdodEZsb29y
ICImI3gyMzBCOyI+Ci08IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4KLTwhRU5USVRZIGRsY3Jv
cCAiJiN4MjMwRDsiPgotPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+Ci08IUVOVElUWSB1bGNy
b3AgIiYjeDIzMEY7Ij4KLTwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4KLTwhRU5USVRZIHByb2Zs
aW5lICImI3gyMzEyOyI+Ci08IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMxMzsiPgotPCFFTlRJVFkg
dGVscmVjICImI3gyMzE1OyI+Ci08IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ij4KLTwhRU5USVRZ
IHVsY29ybiAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdWxjb3JuZXIgIiYjeDIzMUM7Ij4KLTwhRU5U
SVRZIHVyY29ybiAiJiN4MjMxRDsiPgotPCFFTlRJVFkgdXJjb3JuZXIgIiYjeDIzMUQ7Ij4KLTwh
RU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgotPCFFTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ij4K
LTwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgotPCFFTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7
Ij4KLTwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Ci08IUVOVElUWSBzZnJvd24gIiYjeDIzMjI7
Ij4KLTwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Ci08IUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ij4KLTwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgotPCFFTlRJVFkgcHJvZmFsYXIgIiYjeDIz
MkU7Ij4KLTwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgotPCFFTlRJVFkgb3ZiYXIgIiYjeDIz
M0Q7Ij4KLTwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgotPCFFTlRJVFkgYW5nemFyciAiJiN4
MjM3QzsiPgotPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Ci08IUVOVElUWSBsbW91c3RhY2hl
ICImI3gyM0IwOyI+Ci08IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHJtb3Vz
dGFjaGUgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHRicmsgIiYjeDIzQjQ7Ij4KLTwhRU5USVRZIE92
ZXJCcmFja2V0ICImI3gyM0I0OyI+Ci08IUVOVElUWSBiYnJrICImI3gyM0I1OyI+Ci08IUVOVElU
WSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyI+
Ci08IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KLTwhRU5USVRZIFVuZGVyUGFy
ZW50aGVzaXMgIiYjeDIzREQ7Ij4KLTwhRU5USVRZIE92ZXJCcmFjZSAiJiN4MjNERTsiPgotPCFF
TlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgotPCFFTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7
Ij4KLTwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Ci08IUVOVElUWSBibGFuayAiJiN4MjQy
MzsiPgotPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGNpcmNsZWRTICImI3gyNEM4
OyI+Ci08IUVOVElUWSBib3hoICImI3gyNTAwOyI+Ci08IUVOVElUWSBIb3Jpem9udGFsTGluZSAi
JiN4MjUwMDsiPgotPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgotPCFFTlRJVFkgYm94ZHIgIiYj
eDI1MEM7Ij4KLTwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Ci08IUVOVElUWSBib3h1ciAiJiN4
MjUxNDsiPgotPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KLTwhRU5USVRZIGJveHZyICImI3gy
NTFDOyI+Ci08IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgotPCFFTlRJVFkgYm94aGQgIiYjeDI1
MkM7Ij4KLTwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Ci08IUVOVElUWSBib3h2aCAiJiN4MjUz
QzsiPgotPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgotPCFFTlRJVFkgYm94ViAiJiN4MjU1MTsi
PgotPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KLTwhRU5USVRZIGJveERyICImI3gyNTUzOyI+
Ci08IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgotPCFFTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ij4K
LTwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Ci08IUVOVElUWSBib3hETCAiJiN4MjU1NzsiPgot
PCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KLTwhRU5USVRZIGJveFVyICImI3gyNTU5OyI+Ci08
IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgotPCFFTlRJVFkgYm94dUwgIiYjeDI1NUI7Ij4KLTwh
RU5USVRZIGJveFVsICImI3gyNTVDOyI+Ci08IUVOVElUWSBib3hVTCAiJiN4MjU1RDsiPgotPCFF
TlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KLTwhRU5USVRZIGJveFZyICImI3gyNTVGOyI+Ci08IUVO
VElUWSBib3hWUiAiJiN4MjU2MDsiPgotPCFFTlRJVFkgYm94dkwgIiYjeDI1NjE7Ij4KLTwhRU5U
SVRZIGJveFZsICImI3gyNTYyOyI+Ci08IUVOVElUWSBib3hWTCAiJiN4MjU2MzsiPgotPCFFTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ij4KLTwhRU5USVRZIGJveGhEICImI3gyNTY1OyI+Ci08IUVOVElU
WSBib3hIRCAiJiN4MjU2NjsiPgotPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7Ij4KLTwhRU5USVRZ
IGJveGhVICImI3gyNTY4OyI+Ci08IUVOVElUWSBib3hIVSAiJiN4MjU2OTsiPgotPCFFTlRJVFkg
Ym94dkggIiYjeDI1NkE7Ij4KLTwhRU5USVRZIGJveFZoICImI3gyNTZCOyI+Ci08IUVOVElUWSBi
b3hWSCAiJiN4MjU2QzsiPgotPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij4KLTwhRU5USVRZIGxo
YmxrICImI3gyNTg0OyI+Ci08IUVOVElUWSBibG9jayAiJiN4MjU4ODsiPgotPCFFTlRJVFkgYmxr
MTQgIiYjeDI1OTE7Ij4KLTwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+Ci08IUVOVElUWSBibGsz
NCAiJiN4MjU5MzsiPgotPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Ci08IUVOVElUWSBzcXVhcmUg
IiYjeDI1QTE7Ij4KLTwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgc3F1ZiAi
JiN4MjVBQTsiPgotPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Ci08IUVOVElUWSBibGFja3Nx
dWFyZSAiJiN4MjVBQTsiPgotPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFB
OyI+Ci08IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsiPgotPCFFTlRJVFkg
cmVjdCAiJiN4MjVBRDsiPgotPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI+Ci08IUVOVElUWSBm
bHRucyAiJiN4MjVCMTsiPgotPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIGJp
Z3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIHV0cmlmICImI3gyNUI0OyI+Ci08IUVO
VElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Ci08IUVOVElUWSB1dHJpICImI3gyNUI1OyI+
Ci08IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgotPCFFTlRJVFkgcnRyaWYgIiYjeDI1Qjg7
Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPgotPCFFTlRJVFkgcnRy
aSAiJiN4MjVCOTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVCOTsiPgotPCFFTlRJ
VFkgeGR0cmkgIiYjeDI1QkQ7Ij4KLTwhRU5USVRZIGJpZ3RyaWFuZ2xlZG93biAiJiN4MjVCRDsi
PgotPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVkb3du
ICImI3gyNUJFOyI+Ci08IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Ci08IUVOVElUWSB0cmlhbmds
ZWRvd24gIiYjeDI1QkY7Ij4KLTwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI+Ci08IUVOVElUWSBi
bGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgotPCFFTlRJVFkgbHRyaSAiJiN4MjVDMzsiPgot
PCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Ci08IUVOVElUWSBsb3ogIiYjeDI1Q0E7
Ij4KLTwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGNpciAiJiN4MjVDQjsi
PgotPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Ci08IUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsi
PgotPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgdWx0cmkgIiYjeDI1Rjg7
Ij4KLTwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Ci08IUVOVElUWSBsbHRyaSAiJiN4MjVGQTsi
PgotPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgotPCFFTlRJVFkgRmlsbGVk
U21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KLTwhRU5USVRZIHN0YXJmICImI3gyNjA1OyI+Ci08IUVO
VElUWSBiaWdzdGFyICImI3gyNjA1OyI+Ci08IUVOVElUWSBzdGFyICImI3gyNjA2OyI+Ci08IUVO
VElUWSBwaG9uZSAiJiN4MjYwRTsiPgotPCFFTlRJVFkgZmVtYWxlICImI3gyNjQwOyI+Ci08IUVO
VElUWSBtYWxlICImI3gyNjQyOyI+Ci08IUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ij4KLTwhRU5U
SVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgotPCFFTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ij4KLTwh
RU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Ci08IUVOVElUWSBoZWFydHMgIiYjeDI2NjU7Ij4K
LTwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgotPCFFTlRJVFkgZGlhbXMgIiYjeDI2NjY7
Ij4KLTwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Ci08IUVOVElUWSBzdW5nICImI3gy
NjZBOyI+Ci08IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Ci08IUVOVElUWSBuYXR1ciAiJiN4MjY2
RTsiPgotPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgotPCFFTlRJVFkgc2hhcnAgIiYjeDI2
NkY7Ij4KLTwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Ci08IUVOVElUWSBjaGVja21hcmsgIiYj
eDI3MTM7Ij4KLTwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Ci08IUVOVElUWSBtYWx0ICImI3gy
NzIwOyI+Ci08IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Ci08IUVOVElUWSBzZXh0ICImI3gy
NzM2OyI+Ci08IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1ODsiPgotPCFFTlRJVFkg
bGJicmsgIiYjeDI3NzI7Ij4KLTwhRU5USVRZIHJiYnJrICImI3gyNzczOyI+Ci08IUVOVElUWSBi
c29saHN1YiAiJiN4MjdDODsiPgotPCFFTlRJVFkgc3VwaHNvbCAiJiN4MjdDOTsiPgotPCFFTlRJ
VFkgbG9icmsgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIExlZnREb3VibGVCcmFja2V0ICImI3gyN0U2
OyI+Ci08IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgotPCFFTlRJVFkgUmlnaHREb3VibGVCcmFj
a2V0ICImI3gyN0U3OyI+Ci08IUVOVElUWSBsYW5nICImI3gyN0U4OyI+Ci08IUVOVElUWSBMZWZ0
QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Ci08IUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ij4KLTwh
RU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gy
N0U5OyI+Ci08IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIExhbmcgIiYjeDI3
RUE7Ij4KLTwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KLTwhRU5USVRZIGxvYW5nICImI3gyN0VD
OyI+Ci08IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgotPCFFTlRJVFkgeGxhcnIgIiYjeDI3RjU7
Ij4KLTwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIExvbmdMZWZ0
QXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIHhyYXJyICImI3gyN0Y2OyI+Ci08IUVOVElUWSBs
b25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3
RjY7Ij4KLTwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Ci08IUVOVElUWSBsb25nbGVmdHJpZ2h0
YXJyb3cgIiYjeDI3Rjc7Ij4KLTwhRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGNzsi
PgotPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYj
eDI3Rjg7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYjeDI3Rjg7Ij4KLTwhRU5U
SVRZIHhyQXJyICImI3gyN0Y5OyI+Ci08IUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
PgotPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7Ij4KLTwhRU5USVRZIHho
QXJyICImI3gyN0ZBOyI+Ci08IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ij4K
LTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsiPgotPCFFTlRJVFkg
eG1hcCAiJiN4MjdGQzsiPgotPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiPgotPCFFTlRJ
VFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KLTwhRU5USVRZIG52bEFyciAiJiN4MjkwMjsiPgotPCFF
TlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Ci08IUVOVElUWSBudkhhcnIgIiYjeDI5MDQ7Ij4KLTwh
RU5USVRZIE1hcCAiJiN4MjkwNTsiPgotPCFFTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ij4KLTwhRU5U
SVRZIHJiYXJyICImI3gyOTBEOyI+Ci08IUVOVElUWSBia2Fyb3cgIiYjeDI5MEQ7Ij4KLTwhRU5U
SVRZIGxCYXJyICImI3gyOTBFOyI+Ci08IUVOVElUWSByQmFyciAiJiN4MjkwRjsiPgotPCFFTlRJ
VFkgZGJrYXJvdyAiJiN4MjkwRjsiPgotPCFFTlRJVFkgUkJhcnIgIiYjeDI5MTA7Ij4KLTwhRU5U
SVRZIGRyYmthcm93ICImI3gyOTEwOyI+Ci08IUVOVElUWSBERG90cmFoZCAiJiN4MjkxMTsiPgot
PCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgotPCFFTlRJVFkgRG93bkFycm93QmFyICIm
I3gyOTEzOyI+Ci08IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KLTwhRU5USVRZIGxhdGFpbCAi
JiN4MjkxOTsiPgotPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Ci08IUVOVElUWSBsQXRhaWwg
IiYjeDI5MUI7Ij4KLTwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgotPCFFTlRJVFkgbGFycmZz
ICImI3gyOTFEOyI+Ci08IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4KLTwhRU5USVRZIGxhcnJi
ZnMgIiYjeDI5MUY7Ij4KLTwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ij4KLTwhRU5USVRZIG53
YXJoayAiJiN4MjkyMzsiPgotPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI+Ci08IUVOVElUWSBz
ZWFyaGsgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1OyI+Ci08IUVOVElU
WSBzd2FyaGsgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIGhrc3dhcm93ICImI3gyOTI2OyI+Ci08IUVO
VElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KLTwhRU5USVRZIG5lc2VhciAiJiN4MjkyODsiPgotPCFF
TlRJVFkgdG9lYSAiJiN4MjkyODsiPgotPCFFTlRJVFkgc2Vzd2FyICImI3gyOTI5OyI+Ci08IUVO
VElUWSB0b3NhICImI3gyOTI5OyI+Ci08IUVOVElUWSBzd253YXIgIiYjeDI5MkE7Ij4KLTwhRU5U
SVRZIHJhcnJjICImI3gyOTMzOyI+Ci08IUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4MzM4OyI+
Ci08IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Ci08IUVOVElUWSBsZGNhICImI3gyOTM2OyI+
Ci08IUVOVElUWSByZGNhICImI3gyOTM3OyI+Ci08IUVOVElUWSBjdWRhcnJsICImI3gyOTM4OyI+
Ci08IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KLTwhRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7
Ij4KLTwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KLTwhRU5USVRZIHJhcnJwbCAiJiN4Mjk0
NTsiPgotPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgotPCFFTlRJVFkgVWFycm9jaXIgIiYj
eDI5NDk7Ij4KLTwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Ci08IUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICImI3gyOTRFOyI+Ci08IUVO
VElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgotPCFFTlRJVFkgRG93bkxlZnRSaWdo
dFZlY3RvciAiJiN4Mjk1MDsiPgotPCFFTlRJVFkgTGVmdFVwRG93blZlY3RvciAiJiN4Mjk1MTsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgotPCFFTlRJVFkgUmlnaHRWZWN0
b3JCYXIgIiYjeDI5NTM7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIgIiYjeDI5NTQ7Ij4K
LTwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgotPCFFTlRJVFkgRG93bkxl
ZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvckJhciAiJiN4
Mjk1NzsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyI+Ci08IUVOVElUWSBM
ZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgotPCFFTlRJVFkgTGVmdFRlZVZlY3RvciAiJiN4
Mjk1QTsiPgotPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ij4KLTwhRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blRlZVZlY3RvciAi
JiN4Mjk1RDsiPgotPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYjeDI5NUU7Ij4KLTwhRU5U
SVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgotPCFFTlRJVFkgTGVmdFVwVGVlVmVj
dG9yICImI3gyOTYwOyI+Ci08IUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiPgot
PCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgotPCFFTlRJVFkgdUhhciAiJiN4Mjk2MzsiPgotPCFF
TlRJVFkgckhhciAiJiN4Mjk2NDsiPgotPCFFTlRJVFkgZEhhciAiJiN4Mjk2NTsiPgotPCFFTlRJ
VFkgbHVydWhhciAiJiN4Mjk2NjsiPgotPCFFTlRJVFkgbGRyZGhhciAiJiN4Mjk2NzsiPgotPCFF
TlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgotPCFFTlRJVFkgcmRsZGhhciAiJiN4Mjk2OTsiPgot
PCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Ci08IUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7Ij4K
LTwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgotPCFFTlRJVFkgbHJoYXJkICImI3gyOTZEOyI+
Ci08IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgVXBFcXVpbGlicml1bSAiJiN4
Mjk2RTsiPgotPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KLTwhRU5USVRZIFJldmVyc2VVcEVx
dWlsaWJyaXVtICImI3gyOTZGOyI+Ci08IUVOVElUWSBSb3VuZEltcGxpZXMgIiYjeDI5NzA7Ij4K
LTwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Ci08IUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyI+
Ci08IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Ci08IUVOVElUWSByYXJyc2ltICImI3gyOTc0
OyI+Ci08IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KLTwhRU5USVRZIGx0bGFyciAiJiN4Mjk3
NjsiPgotPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Ci08IUVOVElUWSBzdWJyYXJyICImI3gy
OTc5OyI+Ci08IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Ci08IUVOVElUWSBsZmlzaHQgIiYj
eDI5N0M7Ij4KLTwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgotPCFFTlRJVFkgdWZpc2h0ICIm
I3gyOTdFOyI+Ci08IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KLTwhRU5USVRZIGxvcGFyICIm
I3gyOTg1OyI+Ci08IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgotPCFFTlRJVFkgbGJya2UgIiYj
eDI5OEI7Ij4KLTwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Ci08IUVOVElUWSBsYnJrc2x1ICIm
I3gyOThEOyI+Ci08IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Ci08IUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyI+Ci08IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+Ci08IUVOVElUWSBsYW5n
ZCAiJiN4Mjk5MTsiPgotPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4KLTwhRU5USVRZIGxwYXJs
dCAiJiN4Mjk5MzsiPgotPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+Ci08IUVOVElUWSBndGxQ
YXIgIiYjeDI5OTU7Ij4KLTwhRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiPgotPCFFTlRJVFkgdnpp
Z3phZyAiJiN4Mjk5QTsiPgotPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI+Ci08IUVOVElUWSBh
bmdydHZiZCAiJiN4Mjk5RDsiPgotPCFFTlRJVFkgYW5nZSAiJiN4MjlBNDsiPgotPCFFTlRJVFkg
cmFuZ2UgIiYjeDI5QTU7Ij4KLTwhRU5USVRZIGR3YW5nbGUgIiYjeDI5QTY7Ij4KLTwhRU5USVRZ
IHV3YW5nbGUgIiYjeDI5QTc7Ij4KLTwhRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyI+Ci08IUVO
VElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgotPCFFTlRJVFkgYW5nbXNkYWMgIiYjeDI5QUE7Ij4K
LTwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Ci08IUVOVElUWSBhbmdtc2RhZSAiJiN4MjlB
QzsiPgotPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KLTwhRU5USVRZIGFuZ21zZGFnICIm
I3gyOUFFOyI+Ci08IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgotPCFFTlRJVFkgYmVtcHR5
diAiJiN4MjlCMDsiPgotPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPgotPCFFTlRJVFkgY2Vt
cHR5diAiJiN4MjlCMjsiPgotPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ij4KLTwhRU5USVRZ
IGxhZW1wdHl2ICImI3gyOUI0OyI+Ci08IUVOVElUWSBvaGJhciAiJiN4MjlCNTsiPgotPCFFTlRJ
VFkgb21pZCAiJiN4MjlCNjsiPgotPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsiPgotPCFFTlRJVFkg
b3BlcnAgIiYjeDI5Qjk7Ij4KLTwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5QkI7Ij4KLTwhRU5USVRZ
IG9kc29sZCAiJiN4MjlCQzsiPgotPCFFTlRJVFkgb2xjaXIgIiYjeDI5QkU7Ij4KLTwhRU5USVRZ
IG9mY2lyICImI3gyOUJGOyI+Ci08IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij4KLTwhRU5USVRZIG9n
dCAiJiN4MjlDMTsiPgotPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiPgotPCFFTlRJVFkgY2ly
RSAiJiN4MjlDMzsiPgotPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgotPCFFTlRJVFkgYnNvbGIg
IiYjeDI5QzU7Ij4KLTwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgotPCFFTlRJVFkgdHJpc2Ig
IiYjeDI5Q0Q7Ij4KLTwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+Ci08IUVOVElUWSBMZWZ0
VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZUJhciAiJiN4
MjlDRjsmI3gzMzg7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7Ij4KLTwh
RU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI+Ci08IUVOVElUWSBp
aW5maW4gIiYjeDI5REM7Ij4KLTwhRU5USVRZIGluZmludGllICImI3gyOUREOyI+Ci08IUVOVElU
WSBudmluZmluICImI3gyOURFOyI+Ci08IUVOVElUWSBlcGFyc2wgIiYjeDI5RTM7Ij4KLTwhRU5U
SVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Ci08IUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiPgot
PCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgotPCFFTlRJVFkgYmxhY2tsb3plbmdlICImI3gyOUVC
OyI+Ci08IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgotPCFFTlRJVFkgZHNvbCAiJiN4
MjlGNjsiPgotPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZIGJpZ29kb3QgIiYj
eDJBMDA7Ij4KLTwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJVFkgYmlnb3BsdXMg
IiYjeDJBMDE7Ij4KLTwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgotPCFFTlRJVFkgYmlnb3Rp
bWVzICImI3gyQTAyOyI+Ci08IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ij4KLTwhRU5USVRZIGJp
Z3VwbHVzICImI3gyQTA0OyI+Ci08IUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7Ij4KLTwhRU5USVRZ
IGJpZ3NxY3VwICImI3gyQTA2OyI+Ci08IUVOVElUWSBxaW50ICImI3gyQTBDOyI+Ci08IUVOVElU
WSBpaWlpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGZwYXJ0aW50ICImI3gyQTBEOyI+Ci08IUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiPgotPCFFTlRJVFkgYXdpbnQgIiYjeDJBMTE7Ij4KLTwh
RU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Ci08IUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsi
PgotPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgotPCFFTlRJVFkgcG9pbnRpbnQgIiYjeDJB
MTU7Ij4KLTwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KLTwhRU5USVRZIGludGxhcmhrICIm
I3gyQTE3OyI+Ci08IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Ci08IUVOVElUWSBwbHVzYWNp
ciAiJiN4MkEyMzsiPgotPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsiPgotPCFFTlRJVFkgcGx1
c2R1ICImI3gyQTI1OyI+Ci08IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI+Ci08IUVOVElUWSBw
bHVzdHdvICImI3gyQTI3OyI+Ci08IUVOVElUWSBtY29tbWEgIiYjeDJBMjk7Ij4KLTwhRU5USVRZ
IG1pbnVzZHUgIiYjeDJBMkE7Ij4KLTwhRU5USVRZIGxvcGx1cyAiJiN4MkEyRDsiPgotPCFFTlRJ
VFkgcm9wbHVzICImI3gyQTJFOyI+Ci08IUVOVElUWSBDcm9zcyAiJiN4MkEyRjsiPgotPCFFTlRJ
VFkgdGltZXNkICImI3gyQTMwOyI+Ci08IUVOVElUWSB0aW1lc2JhciAiJiN4MkEzMTsiPgotPCFF
TlRJVFkgc21hc2hwICImI3gyQTMzOyI+Ci08IUVOVElUWSBsb3RpbWVzICImI3gyQTM0OyI+Ci08
IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Ci08IUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsi
PgotPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Ci08IUVOVElUWSBvZGl2ICImI3gyQTM4OyI+
Ci08IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Ci08IUVOVElUWSB0cmltaW51cyAiJiN4MkEz
QTsiPgotPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgotPCFFTlRJVFkgaXByb2QgIiYjeDJB
M0M7Ij4KLTwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZIGFtYWxnICImI3gy
QTNGOyI+Ci08IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KLTwhRU5USVRZIG5jdXAgIiYjeDJB
NDI7Ij4KLTwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KLTwhRU5USVRZIGNhcGFuZCAiJiN4MkE0
NDsiPgotPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KLTwhRU5USVRZIGN1cGNhcCAiJiN4MkE0
NjsiPgotPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Ci08IUVOVElUWSBjdXBicmNhcCAiJiN4
MkE0ODsiPgotPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KLTwhRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiPgotPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Ci08IUVOVElUWSBjY3VwcyAi
JiN4MkE0QzsiPgotPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KLTwhRU5USVRZIGNjdXBzc20g
IiYjeDJBNTA7Ij4KLTwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgotPCFFTlRJVFkgT3IgIiYjeDJB
NTQ7Ij4KLTwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgotPCFFTlRJVFkgb3JvciAiJiN4MkE1
NjsiPgotPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgotPCFFTlRJVFkgYW5kc2xvcGUgIiYj
eDJBNTg7Ij4KLTwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KLTwhRU5USVRZIG9ydiAiJiN4MkE1
QjsiPgotPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgotPCFFTlRJVFkgb3JkICImI3gyQTVEOyI+
Ci08IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KLTwhRU5USVRZIHNkb3RlICImI3gyQTY2OyI+
Ci08IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KLTwhRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7
Ij4KLTwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgotPCFFTlRJVFkgZWFzdGVy
ICImI3gyQTZFOyI+Ci08IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4KLTwhRU5USVRZIGFwRSAi
JiN4MkE3MDsiPgotPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVw
bHVzICImI3gyQTcxOyI+Ci08IUVOVElUWSBwbHVzZSAiJiN4MkE3MjsiPgotPCFFTlRJVFkgRXNp
bSAiJiN4MkE3MzsiPgotPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+Ci08IUVOVElUWSBFcXVh
bCAiJiN4MkE3NTsiPgotPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGRkb3Rz
ZXEgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ij4KLTwhRU5USVRZIGx0
Y2lyICImI3gyQTc5OyI+Ci08IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPgotPCFFTlRJVFkgbHRx
dWVzdCAiJiN4MkE3QjsiPgotPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3QzsiPgotPCFFTlRJVFkg
bGVzICImI3gyQTdEOyI+Ci08IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsiPgotPCFF
TlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4
OyI+Ci08IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5U
SVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGdlcyAiJiN4MkE3RTsi
PgotPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4KLTwhRU5USVRZIGdlcXNs
YW50ICImI3gyQTdFOyI+Ci08IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJ
VFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2Vx
c2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ij4KLTwh
RU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgotPCFFTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiPgot
PCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgotPCFFTlRJVFkgbGVzZG90b3IgIiYjeDJBODM7
Ij4KLTwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Ci08IUVOVElUWSBsYXAgIiYjeDJBODU7
Ij4KLTwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KLTwhRU5USVRZIGdhcCAiJiN4MkE4
NjsiPgotPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Ci08IUVOVElUWSBsbmUgIiYjeDJB
ODc7Ij4KLTwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGduZSAiJiN4MkE4ODsi
PgotPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgbG5hcCAiJiN4MkE4OTsiPgot
PCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KLTwhRU5USVRZIGduYXAgIiYjeDJBOEE7Ij4K
LTwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Ci08IUVOVElUWSBsRWcgIiYjeDJBOEI7Ij4K
LTwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KLTwhRU5USVRZIGdFbCAiJiN4MkE4Qzsi
PgotPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgotPCFFTlRJVFkgbHNpbWUgIiYjeDJB
OEQ7Ij4KLTwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Ci08IUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiPgotPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KLTwhRU5USVRZIGxnRSAiJiN4MkE5MTsi
PgotPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Ci08IUVOVElUWSBsZXNnZXMgIiYjeDJBOTM7Ij4K
LTwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgotPCFFTlRJVFkgZWxzICImI3gyQTk1OyI+Ci08
IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgotPCFFTlRJVFkgZWdzICImI3gyQTk2OyI+
Ci08IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Ci08IUVOVElUWSBlbHNkb3QgIiYjeDJB
OTc7Ij4KLTwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgotPCFFTlRJVFkgZWwgIiYjeDJBOTk7
Ij4KLTwhRU5USVRZIGVnICImI3gyQTlBOyI+Ci08IUVOVElUWSBzaW1sICImI3gyQTlEOyI+Ci08
IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Ci08IUVOVElUWSBzaW1sRSAiJiN4MkE5RjsiPgotPCFF
TlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KLTwhRU5USVRZIExlc3NMZXNzICImI3gyQUExOyI+Ci08
IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ij4KLTwhRU5USVRZIEdy
ZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRl
ciAiJiN4MkFBMjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdsaiAiJiN4MkFBNDsiPgotPCFFTlRJVFkg
Z2xhICImI3gyQUE1OyI+Ci08IUVOVElUWSBsdGNjICImI3gyQUE2OyI+Ci08IUVOVElUWSBndGNj
ICImI3gyQUE3OyI+Ci08IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgotPCFFTlRJVFkgZ2VzY2Mg
IiYjeDJBQTk7Ij4KLTwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgotPCFFTlRJVFkgbGF0ICImI3gy
QUFCOyI+Ci08IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Ci08IUVOVElUWSBzbXRlcyAiJiN4MkFB
QzsmI3hGRTAwOyI+Ci08IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Ci08IUVOVElUWSBsYXRlcyAi
JiN4MkFBRDsmI3hGRTAwOyI+Ci08IUVOVElUWSBidW1wRSAiJiN4MkFBRTsiPgotPCFFTlRJVFkg
cHJlICImI3gyQUFGOyI+Ci08IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyI+
Ci08IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgotPCFFTlRJVFkgTm90UHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNjZSAiJiN4MkFCMDsiPgotPCFF
TlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Ci08IUVOVElUWSBTdWNjZWVkc0VxdWFsICImI3gyQUIw
OyI+Ci08IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJVFkgbnN1Y2NlcSAi
JiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7JiN4
MzM4OyI+Ci08IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KLTwhRU5USVRZIHNjRSAiJiN4MkFCNDsi
PgotPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7
Ij4KLTwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHN1Y2NuZXFxICImI3gyQUI2
OyI+Ci08IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Ci08IUVOVElUWSBwcmVjYXBwcm94ICImI3gy
QUI3OyI+Ci08IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Ci08IUVOVElUWSBzdWNjYXBwcm94ICIm
I3gyQUI4OyI+Ci08IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgotPCFFTlRJVFkgcHJlY25hcHBy
b3ggIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+Ci08IUVOVElUWSBzdWNj
bmFwcHJveCAiJiN4MkFCQTsiPgotPCFFTlRJVFkgUHIgIiYjeDJBQkI7Ij4KLTwhRU5USVRZIFNj
ICImI3gyQUJDOyI+Ci08IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4KLTwhRU5USVRZIHN1cGRv
dCAiJiN4MkFCRTsiPgotPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiPgotPCFFTlRJVFkgc3Vw
cGx1cyAiJiN4MkFDMDsiPgotPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFDMTsiPgotPCFFTlRJVFkg
c3VwbXVsdCAiJiN4MkFDMjsiPgotPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiPgotPCFFTlRJ
VFkgc3VwZWRvdCAiJiN4MkFDNDsiPgotPCFFTlRJVFkgc3ViRSAiJiN4MkFDNTsiPgotPCFFTlRJ
VFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Ci08IUVOVElUWSBuc3ViRSAiJiN4MkFDNTsmI3gzMzg7
Ij4KLTwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+Ci08IUVOVElUWSBzdXBF
ICImI3gyQUM2OyI+Ci08IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ij4KLTwhRU5USVRZIG5z
dXBFICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gz
Mzg7Ij4KLTwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgotPCFFTlRJVFkgc3Vwc2ltICImI3gy
QUM4OyI+Ci08IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgotPCFFTlRJVFkgc3Vic2V0bmVxcSAi
JiN4MkFDQjsiPgotPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbkUgIiYjeDJB
Q0M7Ij4KLTwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KLTwhRU5USVRZIHZzdXBuRSAi
JiN4MkFDQzsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXFxICImI3gyQUNDOyYjeEZF
MDA7Ij4KLTwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KLTwhRU5USVRZIGNzdXAgIiYjeDJBRDA7
Ij4KLTwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Ci08IUVOVElUWSBjc3VwZSAiJiN4MkFEMjsi
PgotPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Ci08IUVOVElUWSBzdXBzdWIgIiYjeDJBRDQ7
Ij4KLTwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgotPCFFTlRJVFkgc3Vwc3VwICImI3gyQUQ2
OyI+Ci08IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Ci08IUVOVElUWSBzdXBkc3ViICImI3gy
QUQ4OyI+Ci08IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgotPCFFTlRJVFkgdG9wZm9yayAiJiN4
MkFEQTsiPgotPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgotPCFFTlRJVFkgRGFzaHYgIiYjeDJB
RTQ7Ij4KLTwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4KLTwhRU5USVRZIFZkYXNo
bCAiJiN4MkFFNjsiPgotPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgotPCFFTlRJVFkgdkJhciAi
JiN4MkFFODsiPgotPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KLTwhRU5USVRZIFZiYXIgIiYj
eDJBRUI7Ij4KLTwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgotPCFFTlRJVFkgYk5vdCAiJiN4MkFF
RDsiPgotPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KLTwhRU5USVRZIGNpcm1pZCAiJiN4MkFF
RjsiPgotPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Ci08IUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ij4KLTwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Ci08IUVOVElUWSBwYXJzaW0gIiYjeDJB
RjM7Ij4KLTwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Ci08IUVOVElUWSBucGFyc2wgIiYjeDJB
RkQ7JiN4MjBFNTsiPgotPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4KLTwhRU5USVRZIGZpbGln
ICImI3hGQjAxOyI+Ci08IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgotPCFFTlRJVFkgZmZpbGln
ICImI3hGQjAzOyI+Ci08IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4KLTwhRU5USVRZIEFzY3Ig
IiYjeDFENDlDOyI+Ci08IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgotPCFFTlRJVFkgRHNjciAi
JiN4MUQ0OUY7Ij4KLTwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Ci08IUVOVElUWSBKc2NyICIm
I3gxRDRBNTsiPgotPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KLTwhRU5USVRZIE5zY3IgIiYj
eDFENEE5OyI+Ci08IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgotPCFFTlRJVFkgUHNjciAiJiN4
MUQ0QUI7Ij4KLTwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Ci08IUVOVElUWSBTc2NyICImI3gx
RDRBRTsiPgotPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KLTwhRU5USVRZIFVzY3IgIiYjeDFE
NEIwOyI+Ci08IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgotPCFFTlRJVFkgV3NjciAiJiN4MUQ0
QjI7Ij4KLTwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Ci08IUVOVElUWSBZc2NyICImI3gxRDRC
NDsiPgotPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KLTwhRU5USVRZIGFzY3IgIiYjeDFENEI2
OyI+Ci08IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgotPCFFTlRJVFkgY3NjciAiJiN4MUQ0Qjg7
Ij4KLTwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Ci08IUVOVElUWSBmc2NyICImI3gxRDRCQjsi
PgotPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KLTwhRU5USVRZIGlzY3IgIiYjeDFENEJFOyI+
Ci08IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgotPCFFTlRJVFkga3NjciAiJiN4MUQ0QzA7Ij4K
LTwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Ci08IUVOVElUWSBtc2NyICImI3gxRDRDMjsiPgot
PCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KLTwhRU5USVRZIHBzY3IgIiYjeDFENEM1OyI+Ci08
IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgotPCFFTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ij4KLTwh
RU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Ci08IUVOVElUWSB0c2NyICImI3gxRDRDOTsiPgotPCFF
TlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KLTwhRU5USVRZIHZzY3IgIiYjeDFENENCOyI+Ci08IUVO
VElUWSB3c2NyICImI3gxRDRDQzsiPgotPCFFTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ij4KLTwhRU5U
SVRZIHlzY3IgIiYjeDFENENFOyI+Ci08IUVOVElUWSB6c2NyICImI3gxRDRDRjsiPgotPCFFTlRJ
VFkgQWZyICImI3gxRDUwNDsiPgotPCFFTlRJVFkgQmZyICImI3gxRDUwNTsiPgotPCFFTlRJVFkg
RGZyICImI3gxRDUwNzsiPgotPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPgotPCFFTlRJVFkgRmZy
ICImI3gxRDUwOTsiPgotPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgotPCFFTlRJVFkgSmZyICIm
I3gxRDUwRDsiPgotPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgotPCFFTlRJVFkgTGZyICImI3gx
RDUwRjsiPgotPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgotPCFFTlRJVFkgTmZyICImI3gxRDUx
MTsiPgotPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgotPCFFTlRJVFkgUGZyICImI3gxRDUxMzsi
PgotPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgotPCFFTlRJVFkgU2ZyICImI3gxRDUxNjsiPgot
PCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgotPCFFTlRJVFkgVWZyICImI3gxRDUxODsiPgotPCFF
TlRJVFkgVmZyICImI3gxRDUxOTsiPgotPCFFTlRJVFkgV2ZyICImI3gxRDUxQTsiPgotPCFFTlRJ
VFkgWGZyICImI3gxRDUxQjsiPgotPCFFTlRJVFkgWWZyICImI3gxRDUxQzsiPgotPCFFTlRJVFkg
YWZyICImI3gxRDUxRTsiPgotPCFFTlRJVFkgYmZyICImI3gxRDUxRjsiPgotPCFFTlRJVFkgY2Zy
ICImI3gxRDUyMDsiPgotPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgotPCFFTlRJVFkgZWZyICIm
I3gxRDUyMjsiPgotPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgotPCFFTlRJVFkgZ2ZyICImI3gx
RDUyNDsiPgotPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgotPCFFTlRJVFkgaWZyICImI3gxRDUy
NjsiPgotPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgotPCFFTlRJVFkga2ZyICImI3gxRDUyODsi
PgotPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgotPCFFTlRJVFkgbWZyICImI3gxRDUyQTsiPgot
PCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgotPCFFTlRJVFkgb2ZyICImI3gxRDUyQzsiPgotPCFF
TlRJVFkgcGZyICImI3gxRDUyRDsiPgotPCFFTlRJVFkgcWZyICImI3gxRDUyRTsiPgotPCFFTlRJ
VFkgcmZyICImI3gxRDUyRjsiPgotPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsiPgotPCFFTlRJVFkg
dGZyICImI3gxRDUzMTsiPgotPCFFTlRJVFkgdWZyICImI3gxRDUzMjsiPgotPCFFTlRJVFkgdmZy
ICImI3gxRDUzMzsiPgotPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgotPCFFTlRJVFkgeGZyICIm
I3gxRDUzNTsiPgotPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgotPCFFTlRJVFkgemZyICImI3gx
RDUzNzsiPgotPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KLTwhRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyI+Ci08IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgotPCFFTlRJVFkgRW9wZiAiJiN4MUQ1
M0M7Ij4KLTwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Ci08IUVOVElUWSBHb3BmICImI3gxRDUz
RTsiPgotPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KLTwhRU5USVRZIEpvcGYgIiYjeDFENTQx
OyI+Ci08IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgotPCFFTlRJVFkgTG9wZiAiJiN4MUQ1NDM7
Ij4KLTwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Ci08IUVOVElUWSBPb3BmICImI3gxRDU0Njsi
PgotPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KLTwhRU5USVRZIFRvcGYgIiYjeDFENTRCOyI+
Ci08IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgotPCFFTlRJVFkgVm9wZiAiJiN4MUQ1NEQ7Ij4K
LTwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Ci08IUVOVElUWSBYb3BmICImI3gxRDU0RjsiPgot
PCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KLTwhRU5USVRZIGFvcGYgIiYjeDFENTUyOyI+Ci08
IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgotPCFFTlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ij4KLTwh
RU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Ci08IUVOVElUWSBlb3BmICImI3gxRDU1NjsiPgotPCFF
TlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KLTwhRU5USVRZIGdvcGYgIiYjeDFENTU4OyI+Ci08IUVO
VElUWSBob3BmICImI3gxRDU1OTsiPgotPCFFTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ij4KLTwhRU5U
SVRZIGpvcGYgIiYjeDFENTVCOyI+Ci08IUVOVElUWSBrb3BmICImI3gxRDU1QzsiPgotPCFFTlRJ
VFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KLTwhRU5USVRZIG1vcGYgIiYjeDFENTVFOyI+Ci08IUVOVElU
WSBub3BmICImI3gxRDU1RjsiPgotPCFFTlRJVFkgb29wZiAiJiN4MUQ1NjA7Ij4KLTwhRU5USVRZ
IHBvcGYgIiYjeDFENTYxOyI+Ci08IUVOVElUWSBxb3BmICImI3gxRDU2MjsiPgotPCFFTlRJVFkg
cm9wZiAiJiN4MUQ1NjM7Ij4KLTwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI+Ci08IUVOVElUWSB0
b3BmICImI3gxRDU2NTsiPgotPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ij4KLTwhRU5USVRZIHZv
cGYgIiYjeDFENTY3OyI+Ci08IUVOVElUWSB3b3BmICImI3gxRDU2ODsiPgotPCFFTlRJVFkgeG9w
ZiAiJiN4MUQ1Njk7Ij4KLTwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+Ci08IUVOVElUWSB6b3Bm
ICImI3gxRDU2QjsiPgorPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgorPCEtLUVOVElUWSBOZXdM
aW5lICImI3hBOyItLT4KKzwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgorPCEtLUVOVElUWSBx
dW90ICImI3gyMjsiLS0+Cis8IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KKzwhLS1FTlRJVFkg
bnVtICImI3gyMzsiLS0+Cis8IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgorPCEtLUVOVElU
WSBwZXJjbnQgIiYjeDI1OyItLT4KKzwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KKzwh
LS1FTlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KKzwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0t
PgorPCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Cis8IS0tRU5USVRZIHJwYXIgIiYjeDI5OyIt
LT4KKzwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7
Ii0tPgorPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Cis8IS0tRU5USVRZIGNvbW1hICImI3gy
QzsiLS0+Cis8IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgorPCEtLUVOVElUWSBzb2wgIiYj
eDJGOyItLT4KKzwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KKzwhLS1FTlRJVFkgc2VtaSAi
JiN4M0I7Ii0tPgorPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Cis8IS0tRU5USVRZIExU
ICImI3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyIt
LT4KKzwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Cis8IS0tRU5USVRZIGJuZSAiJiN4M0Q7
JiN4MjBFNTsiLS0+Cis8IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Cis8IS0tRU5USVRZIEdUICIm
I3gzRTsiLS0+Cis8IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ii0tPgorPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KKzwhLS1F
TlRJVFkgbHNxYiAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KKzwh
LS1FTlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgorPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Cis8
IS0tRU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgorPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4K
KzwhLS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQmFyICImI3g1
RjsiLS0+Cis8IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRp
Y2FsR3JhdmUgIiYjeDYwOyItLT4KKzwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4K
KzwhLS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyIt
LT4KKzwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHZlcnQgIiYjeDdD
OyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHJj
dWIgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Cis8IS0tRU5USVRZ
IG5ic3AgIiYjeEEwOyItLT4KKzwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0t
PgorPCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgorPCEtLUVOVElUWSBjZW50ICImI3hBMjsi
LS0+Cis8IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Cis8IS0tRU5USVRZIGN1cnJlbiAiJiN4
QTQ7Ii0tPgorPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KKzwhLS1FTlRJVFkgYnJ2YmFyICIm
I3hBNjsiLS0+Cis8IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KKzwhLS1FTlRJVFkgRG90ICIm
I3hBODsiLS0+Cis8IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVE
b3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Cis8IS0tRU5USVRZIGNv
cHkgIiYjeEE5OyItLT4KKzwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgorPCEtLUVOVElUWSBv
cmRmICImI3hBQTsiLS0+Cis8IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Cis8IS0tRU5USVRZ
IG5vdCAiJiN4QUM7Ii0tPgorPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KKzwhLS1FTlRJVFkg
cmVnICImI3hBRTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Cis8IS0tRU5U
SVRZIFJFRyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Cis8IS0tRU5U
SVRZIHN0cm5zICImI3hBRjsiLS0+Cis8IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgorPCEtLUVO
VElUWSBwbHVzbW4gIiYjeEIxOyItLT4KKzwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KKzwhLS1F
TlRJVFkgUGx1c01pbnVzICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4K
KzwhLS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgorPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0t
PgorPCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Cis8IS0tRU5USVRZIG1p
Y3JvICImI3hCNTsiLS0+Cis8IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KKzwhLS1FTlRJVFkg
bWlkZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgorPCEt
LUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyIt
LT4KKzwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgorPCEtLUVOVElUWSBzdXAxICImI3hC
OTsiLS0+Cis8IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KKzwhLS1FTlRJVFkgcmFxdW8gIiYj
eEJCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Cis8IS0tRU5USVRZIGZyYWMx
MiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Cis8IS0tRU5USVRZIGZy
YWMzNCAiJiN4QkU7Ii0tPgorPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KKzwhLS1FTlRJ
VFkgQWdyYXZlICImI3hDMDsiLS0+Cis8IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgorPCEt
LUVOVElUWSBBY2lyYyAiJiN4QzI7Ii0tPgorPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4K
KzwhLS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgorPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0t
PgorPCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7
Ii0tPgorPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KKzwhLS1FTlRJVFkgRWdyYXZlICIm
I3hDODsiLS0+Cis8IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgorPCEtLUVOVElUWSBFY2ly
YyAiJiN4Q0E7Ii0tPgorPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Cis8IS0tRU5USVRZIEln
cmF2ZSAiJiN4Q0M7Ii0tPgorPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KKzwhLS1FTlRJ
VFkgSWNpcmMgIiYjeENFOyItLT4KKzwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgorPCEtLUVO
VElUWSBFVEggIiYjeEQwOyItLT4KKzwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Cis8IS0t
RU5USVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgorPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4K
KzwhLS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KKzwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsi
LS0+Cis8IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KKzwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3
OyItLT4KKzwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Cis8IS0tRU5USVRZIFVncmF2ZSAi
JiN4RDk7Ii0tPgorPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KKzwhLS1FTlRJVFkgVWNp
cmMgIiYjeERCOyItLT4KKzwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgorPCEtLUVOVElUWSBZ
YWN1dGUgIiYjeEREOyItLT4KKzwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KKzwhLS1FTlRJ
VFkgc3psaWcgIiYjeERGOyItLT4KKzwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Cis8IS0t
RU5USVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgorPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgor
PCEtLUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KKzwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0t
PgorPCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgorPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7
Ii0tPgorPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KKzwhLS1FTlRJVFkgZWdyYXZlICIm
I3hFODsiLS0+Cis8IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgorPCEtLUVOVElUWSBlY2ly
YyAiJiN4RUE7Ii0tPgorPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Cis8IS0tRU5USVRZIGln
cmF2ZSAiJiN4RUM7Ii0tPgorPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KKzwhLS1FTlRJ
VFkgaWNpcmMgIiYjeEVFOyItLT4KKzwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgorPCEtLUVO
VElUWSBldGggIiYjeEYwOyItLT4KKzwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Cis8IS0t
RU5USVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgorPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4K
KzwhLS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KKzwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsi
LS0+Cis8IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KKzwhLS1FTlRJVFkgZGl2aWRlICImI3hG
NzsiLS0+Cis8IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgorPCEtLUVOVElUWSBvc2xhc2ggIiYj
eEY4OyItLT4KKzwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Cis8IS0tRU5USVRZIHVhY3V0
ZSAiJiN4RkE7Ii0tPgorPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgorPCEtLUVOVElUWSB1
dW1sICImI3hGQzsiLS0+Cis8IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgorPCEtLUVOVElU
WSB0aG9ybiAiJiN4RkU7Ii0tPgorPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Cis8IS0tRU5U
SVRZIEFtYWNyICImI3gxMDA7Ii0tPgorPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KKzwh
LS1FTlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgorPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsi
LS0+Cis8IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgorPCEtLUVOVElUWSBhb2dvbiAiJiN4
MTA1OyItLT4KKzwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgorPCEtLUVOVElUWSBjYWN1
dGUgIiYjeDEwNzsiLS0+Cis8IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgorPCEtLUVOVElU
WSBjY2lyYyAiJiN4MTA5OyItLT4KKzwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KKzwhLS1F
TlRJVFkgY2RvdCAiJiN4MTBCOyItLT4KKzwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgor
PCEtLUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Cis8IS0tRU5USVRZIERjYXJvbiAiJiN4MTBF
OyItLT4KKzwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgorPCEtLUVOVElUWSBEc3Ryb2sg
IiYjeDExMDsiLS0+Cis8IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KKzwhLS1FTlRJVFkg
RW1hY3IgIiYjeDExMjsiLS0+Cis8IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgorPCEtLUVO
VElUWSBFZG90ICImI3gxMTY7Ii0tPgorPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgorPCEt
LUVOVElUWSBFb2dvbiAiJiN4MTE4OyItLT4KKzwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+
Cis8IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KKzwhLS1FTlRJVFkgZWNhcm9uICImI3gx
MUI7Ii0tPgorPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KKzwhLS1FTlRJVFkgZ2NpcmMg
IiYjeDExRDsiLS0+Cis8IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KKzwhLS1FTlRJVFkg
Z2JyZXZlICImI3gxMUY7Ii0tPgorPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgorPCEtLUVO
VElUWSBnZG90ICImI3gxMjE7Ii0tPgorPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Cis8
IS0tRU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgorPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyIt
LT4KKzwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgorPCEtLUVOVElUWSBoc3Ryb2sgIiYj
eDEyNzsiLS0+Cis8IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KKzwhLS1FTlRJVFkgaXRp
bGRlICImI3gxMjk7Ii0tPgorPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KKzwhLS1FTlRJ
VFkgaW1hY3IgIiYjeDEyQjsiLS0+Cis8IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgorPCEt
LUVOVElUWSBpb2dvbiAiJiN4MTJGOyItLT4KKzwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4K
KzwhLS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Cis8IS0tRU5USVRZIGlub2RvdCAiJiN4MTMx
OyItLT4KKzwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Cis8IS0tRU5USVRZIGlqbGlnICIm
I3gxMzM7Ii0tPgorPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KKzwhLS1FTlRJVFkgamNp
cmMgIiYjeDEzNTsiLS0+Cis8IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KKzwhLS1FTlRJ
VFkga2NlZGlsICImI3gxMzc7Ii0tPgorPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Cis8
IS0tRU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KKzwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7
Ii0tPgorPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Cis8IS0tRU5USVRZIGxjZWRpbCAi
JiN4MTNDOyItLT4KKzwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgorPCEtLUVOVElUWSBs
Y2Fyb24gIiYjeDEzRTsiLS0+Cis8IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KKzwhLS1F
TlRJVFkgbG1pZG90ICImI3gxNDA7Ii0tPgorPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+
Cis8IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KKzwhLS1FTlRJVFkgTmFjdXRlICImI3gx
NDM7Ii0tPgorPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Cis8IS0tRU5USVRZIE5jZWRp
bCAiJiN4MTQ1OyItLT4KKzwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgorPCEtLUVOVElU
WSBOY2Fyb24gIiYjeDE0NzsiLS0+Cis8IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KKzwh
LS1FTlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Cis8IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4K
KzwhLS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgorPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyIt
LT4KKzwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Cis8IS0tRU5USVRZIE9kYmxhYyAiJiN4
MTUwOyItLT4KKzwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgorPCEtLUVOVElUWSBPRWxp
ZyAiJiN4MTUyOyItLT4KKzwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Cis8IS0tRU5USVRZ
IFJhY3V0ZSAiJiN4MTU0OyItLT4KKzwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgorPCEt
LUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Cis8IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyIt
LT4KKzwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgorPCEtLUVOVElUWSByY2Fyb24gIiYj
eDE1OTsiLS0+Cis8IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KKzwhLS1FTlRJVFkgc2Fj
dXRlICImI3gxNUI7Ii0tPgorPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KKzwhLS1FTlRJ
VFkgc2NpcmMgIiYjeDE1RDsiLS0+Cis8IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KKzwh
LS1FTlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgorPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsi
LS0+Cis8IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KKzwhLS1FTlRJVFkgVGNlZGlsICIm
I3gxNjI7Ii0tPgorPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Cis8IS0tRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyItLT4KKzwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgorPCEtLUVO
VElUWSBUc3Ryb2sgIiYjeDE2NjsiLS0+Cis8IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4K
KzwhLS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgorPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2
OTsiLS0+Cis8IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgorPCEtLUVOVElUWSB1bWFjciAi
JiN4MTZCOyItLT4KKzwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgorPCEtLUVOVElUWSB1
YnJldmUgIiYjeDE2RDsiLS0+Cis8IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgorPCEtLUVO
VElUWSB1cmluZyAiJiN4MTZGOyItLT4KKzwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgor
PCEtLUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Cis8IS0tRU5USVRZIFVvZ29uICImI3gxNzI7
Ii0tPgorPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KKzwhLS1FTlRJVFkgV2NpcmMgIiYj
eDE3NDsiLS0+Cis8IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgorPCEtLUVOVElUWSBZY2ly
YyAiJiN4MTc2OyItLT4KKzwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Cis8IS0tRU5USVRZ
IFl1bWwgIiYjeDE3ODsiLS0+Cis8IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KKzwhLS1F
TlRJVFkgemFjdXRlICImI3gxN0E7Ii0tPgorPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgor
PCEtLUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgorPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsi
LS0+Cis8IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KKzwhLS1FTlRJVFkgZm5vZiAiJiN4
MTkyOyItLT4KKzwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Cis8IS0tRU5USVRZIGdhY3V0
ZSAiJiN4MUY1OyItLT4KKzwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Cis8IS0tRU5USVRZ
IGNpcmMgIiYjeDJDNjsiLS0+Cis8IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgorPCEtLUVO
VElUWSBIYWNlayAiJiN4MkM3OyItLT4KKzwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Cis8
IS0tRU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgorPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+
Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgorPCEtLUVOVElUWSByaW5n
ICImI3gyREE7Ii0tPgorPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgorPCEtLUVOVElUWSB0
aWxkZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyIt
LT4KKzwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2Fs
RG91YmxlQWN1dGUgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyIt
LT4KKzwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Cis8IS0tRU5USVRZIEJldGEgIiYjeDM5
MjsiLS0+Cis8IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgorPCEtLUVOVElUWSBEZWx0YSAi
JiN4Mzk0OyItLT4KKzwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KKzwhLS1FTlRJVFkg
WmV0YSAiJiN4Mzk2OyItLT4KKzwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgorPCEtLUVOVElU
WSBUaGV0YSAiJiN4Mzk4OyItLT4KKzwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KKzwhLS1F
TlRJVFkgS2FwcGEgIiYjeDM5QTsiLS0+Cis8IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4K
KzwhLS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Cis8IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgor
PCEtLUVOVElUWSBYaSAiJiN4MzlFOyItLT4KKzwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyIt
LT4KKzwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Cis8IS0tRU5USVRZIFJobyAiJiN4M0ExOyIt
LT4KKzwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Cis8IS0tRU5USVRZIFRhdSAiJiN4M0E0
OyItLT4KKzwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KKzwhLS1FTlRJVFkgUGhpICIm
I3gzQTY7Ii0tPgorPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Cis8IS0tRU5USVRZIFBzaSAi
JiN4M0E4OyItLT4KKzwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Cis8IS0tRU5USVRZIG9o
bSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Cis8IS0tRU5USVRZ
IGJldGEgIiYjeDNCMjsiLS0+Cis8IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgorPCEtLUVO
VElUWSBkZWx0YSAiJiN4M0I0OyItLT4KKzwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KKzwh
LS1FTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KKzwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyIt
LT4KKzwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgorPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4
OyItLT4KKzwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KKzwhLS1FTlRJVFkga2FwcGEgIiYj
eDNCQTsiLS0+Cis8IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KKzwhLS1FTlRJVFkgbXUg
IiYjeDNCQzsiLS0+Cis8IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgorPCEtLUVOVElUWSB4aSAi
JiN4M0JFOyItLT4KKzwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KKzwhLS1FTlRJVFkg
cGkgIiYjeDNDMDsiLS0+Cis8IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KKzwhLS1FTlRJVFkg
c2lnbWF2ICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KKzwh
LS1FTlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyIt
LT4KKzwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgorPCEtLUVOVElUWSB1cHNpICImI3gzQzU7
Ii0tPgorPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgorPCEtLUVOVElUWSBwaGkgIiYj
eDNDNjsiLS0+Cis8IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KKzwhLS1FTlRJVFkgcHNpICIm
I3gzQzg7Ii0tPgorPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KKzwhLS1FTlRJVFkgdGhl
dGF2ICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KKzwhLS1F
TlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+
Cis8IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgorPCEtLUVOVElUWSBzdHJhaWdodHBoaSAi
JiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgdmFy
cGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Cis8IS0tRU5USVRZ
IHZhcnBpICImI3gzRDY7Ii0tPgorPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Cis8IS0t
RU5USVRZIGdhbW1hZCAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyIt
LT4KKzwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgorPCEtLUVOVElUWSB2YXJrYXBwYSAi
JiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KKzwhLS1FTlRJVFkgdmFy
cmhvICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJ
VFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSB2YXJlcHNpbG9uICIm
I3gzRjU7Ii0tPgorPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KKzwhLS1FTlRJVFkgYmFj
a2Vwc2lsb24gIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Cis8IS0t
RU5USVRZIERKY3kgIiYjeDQwMjsiLS0+Cis8IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Cis8
IS0tRU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgorPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0t
PgorPCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KKzwhLS1FTlRJVFkgWUljeSAiJiN4NDA3
OyItLT4KKzwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgorPCEtLUVOVElUWSBMSmN5ICIm
I3g0MDk7Ii0tPgorPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgorPCEtLUVOVElUWSBUU0hj
eSAiJiN4NDBCOyItLT4KKzwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KKzwhLS1FTlRJVFkg
VWJyY3kgIiYjeDQwRTsiLS0+Cis8IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Cis8IS0tRU5U
SVRZIEFjeSAiJiN4NDEwOyItLT4KKzwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgorPCEtLUVO
VElUWSBWY3kgIiYjeDQxMjsiLS0+Cis8IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KKzwhLS1F
TlRJVFkgRGN5ICImI3g0MTQ7Ii0tPgorPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgorPCEt
LUVOVElUWSBaSGN5ICImI3g0MTY7Ii0tPgorPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Cis8
IS0tRU5USVRZIEljeSAiJiN4NDE4OyItLT4KKzwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgor
PCEtLUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Cis8IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4K
KzwhLS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgorPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+
Cis8IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KKzwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0t
PgorPCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Cis8IS0tRU5USVRZIFNjeSAiJiN4NDIxOyIt
LT4KKzwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgorPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsi
LS0+Cis8IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KKzwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1
OyItLT4KKzwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KKzwhLS1FTlRJVFkgQ0hjeSAiJiN4
NDI3OyItLT4KKzwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KKzwhLS1FTlRJVFkgU0hDSGN5
ICImI3g0Mjk7Ii0tPgorPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Cis8IS0tRU5USVRZ
IFljeSAiJiN4NDJCOyItLT4KKzwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgorPCEtLUVO
VElUWSBFY3kgIiYjeDQyRDsiLS0+Cis8IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Cis8IS0t
RU5USVRZIFlBY3kgIiYjeDQyRjsiLS0+Cis8IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KKzwh
LS1FTlRJVFkgYmN5ICImI3g0MzE7Ii0tPgorPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Cis8
IS0tRU5USVRZIGdjeSAiJiN4NDMzOyItLT4KKzwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgor
PCEtLUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgorPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0t
PgorPCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Cis8IS0tRU5USVRZIGljeSAiJiN4NDM4OyIt
LT4KKzwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgorPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsi
LS0+Cis8IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KKzwhLS1FTlRJVFkgbWN5ICImI3g0M0M7
Ii0tPgorPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Cis8IS0tRU5USVRZIG9jeSAiJiN4NDNF
OyItLT4KKzwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgorPCEtLUVOVElUWSByY3kgIiYjeDQ0
MDsiLS0+Cis8IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KKzwhLS1FTlRJVFkgdGN5ICImI3g0
NDI7Ii0tPgorPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Cis8IS0tRU5USVRZIGZjeSAiJiN4
NDQ0OyItLT4KKzwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KKzwhLS1FTlRJVFkgdHNjeSAi
JiN4NDQ2OyItLT4KKzwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KKzwhLS1FTlRJVFkgc2hj
eSAiJiN4NDQ4OyItLT4KKzwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgorPCEtLUVOVElU
WSBoYXJkY3kgIiYjeDQ0QTsiLS0+Cis8IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KKzwhLS1F
TlRJVFkgc29mdGN5ICImI3g0NEM7Ii0tPgorPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Cis8
IS0tRU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Cis8IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+
Cis8IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Cis8IS0tRU5USVRZIGRqY3kgIiYjeDQ1Mjsi
LS0+Cis8IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Cis8IS0tRU5USVRZIGp1a2N5ICImI3g0
NTQ7Ii0tPgorPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgorPCEtLUVOVElUWSBpdWtjeSAi
JiN4NDU2OyItLT4KKzwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KKzwhLS1FTlRJVFkganNl
cmN5ICImI3g0NTg7Ii0tPgorPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgorPCEtLUVOVElU
WSBuamN5ICImI3g0NUE7Ii0tPgorPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KKzwhLS1F
TlRJVFkga2pjeSAiJiN4NDVDOyItLT4KKzwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Cis8
IS0tRU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Cis8IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0t
PgorPCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KKzwhLS1FTlRJVFkgZW1zcDEzICImI3gy
MDA0OyItLT4KKzwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KKzwhLS1FTlRJVFkgbnVt
c3AgIiYjeDIwMDc7Ii0tPgorPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgorPCEtLUVO
VElUWSB0aGluc3AgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7
Ii0tPgorPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgorPCEtLUVOVElUWSBWZXJ5VGhp
blNwYWNlICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7
Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEt
LUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0
aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3Bh
Y2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KKzwhLS1FTlRJ
VFkgendqICImI3gyMDBEOyItLT4KKzwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KKzwhLS1F
TlRJVFkgcmxtICImI3gyMDBGOyItLT4KKzwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4K
KzwhLS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Cis8IS0tRU5USVRZIG5kYXNoICImI3gyMDEz
OyItLT4KKzwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgorPCEtLUVOVElUWSBob3JiYXIg
IiYjeDIwMTU7Ii0tPgorPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgorPCEtLUVOVElU
WSBWZXJ0ICImI3gyMDE2OyItLT4KKzwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgorPCEt
LUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Cis8IS0tRU5USVRZIHJzcXVvICIm
I3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkg
Q2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFB
OyItLT4KKzwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgorPCEtLUVOVElUWSBsZHF1byAi
JiN4MjAxQzsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyIt
LT4KKzwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSByZHF1b3IgIiYj
eDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0t
PgorPCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgorPCEtLUVOVElUWSBiZHF1byAiJiN4
MjAxRTsiLS0+Cis8IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Cis8IS0tRU5USVRZIERh
Z2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgorPCEt
LUVOVElUWSBidWxsICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyIt
LT4KKzwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Cis8IS0tRU5USVRZIGhlbGxpcCAiJiN4
MjAyNjsiLS0+Cis8IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgorPCEtLUVOVElUWSBwZXJt
aWwgIiYjeDIwMzA7Ii0tPgorPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KKzwhLS1F
TlRJVFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgorPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+
Cis8IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Cis8IS0tRU5USVRZIGJwcmltZSAiJiN4
MjAzNTsiLS0+Cis8IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Cis8IS0tRU5USVRZ
IGxzYXF1byAiJiN4MjAzOTsiLS0+Cis8IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Cis8
IS0tRU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAz
RTsiLS0+Cis8IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KKzwhLS1FTlRJVFkgaHlidWxs
ICImI3gyMDQzOyItLT4KKzwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgorPCEtLUVOVElU
WSBic2VtaSAiJiN4MjA0RjsiLS0+Cis8IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Cis8
IS0tRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KKzwhLS1FTlRJVFkgVGhpY2tTcGFj
ZSAiJiN4MjA1RjsmI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+
Cis8IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgorPCEtLUVOVElUWSBhZiAi
JiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KKzwh
LS1FTlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4
MjA2MzsiLS0+Cis8IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KKzwhLS1FTlRJVFkgZXVybyAi
JiN4MjBBQzsiLS0+Cis8IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBU
cmlwbGVEb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgor
PCEtLUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgY29tcGxleGVzICImI3gy
MTAyOyItLT4KKzwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KKzwhLS1FTlRJVFkgZ3Nj
ciAiJiN4MjEwQTsiLS0+Cis8IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Cis8IS0tRU5U
SVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7
Ii0tPgorPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElUWSBQb2luY2FyZXBs
YW5lICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgor
PCEtLUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KKzwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEw
RTsiLS0+Cis8IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIGhiYXIg
IiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElU
WSBoc2xhc2ggIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KKzwh
LS1FTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBpbWFnZSAiJiN4MjEx
MTsiLS0+Cis8IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgaW1hZ3BhcnQg
IiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBM
c2NyICImI3gyMTEyOyItLT4KKzwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KKzwhLS1F
TlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGVsbCAiJiN4MjExMzsi
LS0+Cis8IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFscyAi
JiN4MjExNTsiLS0+Cis8IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Cis8IS0tRU5USVRZ
IGNvcHlzciAiJiN4MjExNzsiLS0+Cis8IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Cis8
IS0tRU5USVRZIHdwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+
Cis8IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Cis8IS0tRU5USVRZIHJhdGlvbmFscyAi
JiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgorPCEtLUVOVElUWSBS
c2NyICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Cis8IS0t
RU5USVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Cis8
IS0tRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgUmZyICImI3gyMTFD
OyItLT4KKzwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgorPCEtLUVOVElUWSBSb3BmICIm
I3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgorPCEtLUVOVElUWSB0cmFk
ZSAiJiN4MjEyMjsiLS0+Cis8IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KKzwhLS1FTlRJ
VFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4K
KzwhLS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KKzwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyIt
LT4KKzwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KKzwhLS1FTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ii0tPgorPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgorPCEtLUVOVElUWSBC
ZXJub3VsbGlzICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Cis8
IS0tRU5USVRZIENmciAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7
Ii0tPgorPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KKzwhLS1FTlRJVFkgRXNjciAiJiN4
MjEzMDsiLS0+Cis8IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KKzwhLS1FTlRJ
VFkgRnNjciAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0t
PgorPCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNZWxsaW50cmYg
IiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkg
b3JkZXIgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KKzwh
LS1FTlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7
Ii0tPgorPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Cis8IS0tRU5USVRZIGJldGggIiYj
eDIxMzY7Ii0tPgorPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Cis8IS0tRU5USVRZIGRh
bGV0aCAiJiN4MjEzODsiLS0+Cis8IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gy
MTQ1OyItLT4KKzwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgorPCEtLUVOVElUWSBEaWZmZXJl
bnRpYWxEICImI3gyMTQ2OyItLT4KKzwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgorPCEtLUVO
VElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBleHBvbmVudGlhbGUg
IiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Cis8IS0tRU5USVRZIElt
YWdpbmFyeUkgIiYjeDIxNDg7Ii0tPgorPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Cis8IS0t
RU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Cis8IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsi
LS0+Cis8IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Cis8IS0tRU5USVRZIGZyYWMyNSAi
JiN4MjE1NjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Cis8IS0tRU5USVRZ
IGZyYWM0NSAiJiN4MjE1ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Cis8
IS0tRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Cis8IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1
QjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Cis8IS0tRU5USVRZIGZyYWM1
OCAiJiN4MjE1RDsiLS0+Cis8IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Cis8IS0tRU5U
SVRZIGxhcnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0t
PgorPCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBzbGFyciAi
JiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KKzwh
LS1FTlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7
Ii0tPgorPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgU2hvcnRV
cEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Cis8IS0t
RU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93ICIm
I3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBT
aG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyIt
LT4KKzwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgRG93bkFy
cm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0t
PgorPCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJy
b3cgIiYjeDIxOTQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+
Cis8IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSB1cGRvd25hcnJvdyAi
JiN4MjE5NTsiLS0+Cis8IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KKzwhLS1F
TlRJVFkgbndhcnIgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4
MjE5NjsiLS0+Cis8IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBu
ZWFyciAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5Nzsi
LS0+Cis8IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgorPCEtLUVOVElUWSBzZWFyciAi
JiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElU
WSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5
OTsiLS0+Cis8IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEtLUVOVElUWSBMb3dl
ckxlZnRBcnJvdyAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4K
KzwhLS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Cis8IS0tRU5USVRZIG5yYXJyICIm
I3gyMTlCOyItLT4KKzwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgorPCEtLUVO
VElUWSByYXJydyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4
MjE5RDsiLS0+Cis8IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBMYXJyICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4
MjE5RTsiLS0+Cis8IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgorPCEtLUVOVElUWSBSYXJy
ICImI3gyMUEwOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0t
PgorPCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KKzwhLS1FTlRJVFkgbGFycnRsICImI3gy
MUEyOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Cis8IS0tRU5U
SVRZIHJhcnJ0bCAiJiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gy
MUEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KKzwhLS1FTlRJ
VFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Cis8IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIx
QTU7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Cis8IS0tRU5USVRZIG1h
cCAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgor
PCEtLUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBEb3duVGVlQXJyb3cg
IiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KKzwhLS1F
TlRJVFkgbGFycmhrICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4
MjFBOTsiLS0+Cis8IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Cis8IS0tRU5USVRZIGhv
b2tyaWdodGFycm93ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyIt
LT4KKzwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Cis8IS0tRU5USVRZIHJh
cnJscCAiJiN4MjFBQzsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyIt
LT4KKzwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgor
PCEtLUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgorPCEtLUVOVElUWSBsc2gg
IiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBy
c2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElU
WSBsZHNoICImI3gyMUIyOyItLT4KKzwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Cis8IS0t
RU5USVRZIGNyYXJyICImI3gyMUI1OyItLT4KKzwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyIt
LT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgorPCEtLUVOVElUWSBj
dXJhcnIgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7
Ii0tPgorPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWFy
cm93bGVmdCAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KKzwh
LS1FTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Cis8IS0tRU5USVRZIGxoYXJ1
ICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Cis8IS0t
RU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElUWSBsaGFyZCAiJiN4
MjFCRDsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Cis8IS0t
RU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgdWhhcnIgIiYj
eDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1aGFybCAiJiN4
MjFCRjsiLS0+Cis8IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSByaGFydSAiJiN4MjFD
MDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkg
cmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsi
LS0+Cis8IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElU
WSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElUWSBkaGFyciAiJiN4MjFD
MjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Cis8IS0tRU5U
SVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgorPCEtLUVOVElUWSBkaGFybCAiJiN4
MjFDMzsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KKzwhLS1F
TlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KKzwhLS1FTlRJVFkgcmxhcnIgIiYj
eDIxQzQ7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgorPCEt
LUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KKzwhLS1FTlRJVFkgdWRh
cnIgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyIt
LT4KKzwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRh
cnJvd3MgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gy
MUM2OyItLT4KKzwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgorPCEtLUVOVElUWSBsZWZ0
bGVmdGFycm93cyAiJiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4K
KzwhLS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Cis8IS0tRU5USVRZIHJyYXJyICIm
I3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Cis8
IS0tRU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ii0tPgorPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZ
IFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodGhh
cnBvb25zICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgorPCEt
LUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIEVxdWls
aWJyaXVtICImI3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgorPCEt
LUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KKzwhLS1FTlRJVFkgbmhBcnIgIiYjeDIx
Q0U7Ii0tPgorPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgorPCEtLUVO
VElUWSBuckFyciAiJiN4MjFDRjsiLS0+Cis8IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNG
OyItLT4KKzwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIExlZnRhcnJv
dyAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+
Cis8IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBVcGFycm93ICImI3gy
MUQxOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Cis8IS0tRU5U
SVRZIHJBcnIgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyIt
LT4KKzwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0QXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KKzwh
LS1FTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlRG93bkFy
cm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Cis8IS0tRU5U
SVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTGVmdFJp
Z2h0QXJyb3cgIiYjeDIxRDQ7Ii0tPgorPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgorPCEt
LUVOVElUWSB2QXJyICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIx
RDU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Cis8IS0t
RU5USVRZIG53QXJyICImI3gyMUQ2OyItLT4KKzwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0t
PgorPCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Cis8IS0tRU5USVRZIHN3QXJyICImI3gy
MUQ5OyItLT4KKzwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgorPCEtLUVOVElUWSBMbGVm
dGFycm93ICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgorPCEt
LUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZIHppZ3JhcnIgIiYj
eDIxREQ7Ii0tPgorPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIExl
ZnRBcnJvd0JhciAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4K
KzwhLS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Cis8IS0tRU5USVRZIGR1YXJy
ICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+
Cis8IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KKzwhLS1FTlRJVFkgcm9hcnIgIiYjeDIx
RkU7Ii0tPgorPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Cis8IS0tRU5USVRZIGZvcmFs
bCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5U
SVRZIGNvbXAgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyIt
LT4KKzwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZIFBhcnRpYWxEICIm
I3gyMjAyOyItLT4KKzwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0t
PgorPCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RFeGlzdHMg
IiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KKzwhLS1FTlRJ
VFkgZW1wdHkgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+
Cis8IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIHZhcm5vdGhpbmcg
IiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZ
IERlbCAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgorPCEtLUVO
VElUWSBpc2ludiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0t
PgorPCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIG5vdGluICImI3gyMjA5
OyItLT4KKzwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Cis8IS0tRU5USVRZIG5v
dGludmEgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgorPCEtLUVO
VElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIG5pICImI3gyMjBC
OyItLT4KKzwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBub3Ru
aSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgorPCEtLUVO
VElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIHByb2QgIiYj
eDIyMEY7Ii0tPgorPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KKzwhLS1FTlRJVFkg
Y29wcm9kICImI3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4K
KzwhLS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgU3VtICImI3gyMjExOyIt
LT4KKzwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgorPCEtLUVOVElUWSBtbnBsdXMgIiYj
eDIyMTM7Ii0tPgorPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIE1pbnVz
UGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Cis8IS0t
RU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgorPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsi
LS0+Cis8IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgQmFja3Ns
YXNoICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KKzwhLS1F
TlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIGxvd2FzdCAiJiN4
MjIxNzsiLS0+Cis8IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Cis8IS0tRU5USVRZIFNt
YWxsQ2lyY2xlICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgor
PCEtLUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KKzwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsi
LS0+Cis8IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIFByb3BvcnRp
b25hbCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KKzwhLS1F
TlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7
Ii0tPgorPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Cis8IS0tRU5USVRZIGFuZyAiJiN4
MjIyMDsiLS0+Cis8IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KKzwhLS1FTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4K
KzwhLS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Cis8IS0tRU5USVRZIGFuZ3Nw
aCAiJiN4MjIyMjsiLS0+Cis8IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZ
IFZlcnRpY2FsQmFyICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+
Cis8IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgbm1pZCAiJiN4
MjIyNDsiLS0+Cis8IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KKzwhLS1F
TlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7
Ii0tPgorPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBwYXJhbGxlbCAi
JiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4K
KzwhLS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIHNob3J0cGFyYWxsZWwg
IiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkg
bnBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIg
IiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZ
IG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyIt
LT4KKzwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElUWSBvciAiJiN4MjIy
ODsiLS0+Cis8IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Cis8IS0tRU5USVRZIGNhcCAiJiN4
MjIyOTsiLS0+Cis8IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Cis8IS0tRU5U
SVRZIGN1cCAiJiN4MjIyQTsiLS0+Cis8IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsi
LS0+Cis8IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZIEludGVncmFsICIm
I3gyMjJCOyItLT4KKzwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KKzwhLS1FTlRJVFkgdGlu
dCAiJiN4MjIyRDsiLS0+Cis8IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KKzwhLS1FTlRJ
VFkgY29uaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Cis8
IS0tRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Cis8IS0tRU5USVRZIENvbmlu
dCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIy
RjsiLS0+Cis8IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgorPCEtLUVOVElUWSBjd2lu
dCAiJiN4MjIzMTsiLS0+Cis8IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KKzwhLS1F
TlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KKzwhLS1FTlRJVFkg
YXdjb25pbnQgIiYjeDIyMzM7Ii0tPgorPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91
ckludGVncmFsICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4K
KzwhLS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgVGhlcmVmb3Jl
ICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KKzwhLS1FTlRJ
VFkgYmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0t
PgorPCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Cis8IS0tRU5USVRZIENvbG9uICImI3gy
MjM3OyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Cis8IS0tRU5USVRZ
IG1pbnVzZCAiJiN4MjIzODsiLS0+Cis8IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4K
KzwhLS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgorPCEtLUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ii0tPgorPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVOVElUWSBUaWxkZSAi
JiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZ
IHRoaWNrc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2lt
ICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgorPCEt
LUVOVElUWSBhYyAiJiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+
Cis8IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgorPCEtLUVOVElUWSBhY2QgIiYj
eDIyM0Y7Ii0tPgorPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgorPCEtLUVOVElUWSBW
ZXJ0aWNhbFRpbGRlICImI3gyMjQwOyItLT4KKzwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIy
NDE7Ii0tPgorPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KKzwhLS1FTlRJVFkgRXF1YWxU
aWxkZSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KKzwhLS1F
TlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuZXNp
bSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KKzwh
LS1FTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZIHNpbWVxICImI3gy
MjQzOyItLT4KKzwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBuc2lt
ZXEgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4K
KzwhLS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFs
ICImI3gyMjQ1OyItLT4KKzwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgorPCEtLUVOVElU
WSBuY29uZyAiJiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ3OyItLT4KKzwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSBhcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgorPCEtLUVO
VElUWSBhcHByb3ggIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+
Cis8IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgbmFwICIm
I3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Cis8IS0t
RU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0t
PgorPCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5USVRZIGFwaWQgIiYj
eDIyNEI7Ii0tPgorPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBiY29uZyAiJiN4MjI0QzsiLS0+Cis8IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyIt
LT4KKzwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIEN1cENhcCAi
JiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIy
NEU7Ii0tPgorPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBOb3RI
dW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElU
WSBIdW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0t
PgorPCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90
SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVzZG90ICImI3gyMjUw
OyItLT4KKzwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBkb3Rl
cSAiJiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgorPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1
MTsiLS0+Cis8IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KKzwhLS1FTlRJVFkgZmFsbGlu
Z2RvdHNlcSAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KKzwh
LS1FTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KKzwhLS1FTlRJVFkgY29sb25lICIm
I3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZ
IEFzc2lnbiAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Cis8
IS0tRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgorPCEtLUVOVElUWSBlY2lyICImI3gyMjU2
OyItLT4KKzwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KKzwhLS1FTlRJVFkgY2lyZSAi
JiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZ
IHdlZGdlcSAiJiN4MjI1OTsiLS0+Cis8IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KKzwh
LS1FTlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1
QzsiLS0+Cis8IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Cis8IS0tRU5USVRZIHF1ZXN0
ZXEgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Cis8IS0tRU5USVRZ
IE5vdEVxdWFsICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgor
PCEtLUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgorPCEtLUVOVElUWSBibmVxdWl2ICIm
I3gyMjYxOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgorPCEt
LUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgorPCEtLUVOVElUWSBsZSAiJiN4MjI2
NDsiLS0+Cis8IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5USVRZIG52bGUgIiYj
eDIyNjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KKzwhLS1FTlRJ
VFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyIt
LT4KKzwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbEUg
IiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KKzwh
LS1FTlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBnRSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7
Ii0tPgorPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KKzwhLS1FTlRJVFkgbmdFICImI3gy
MjY3OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbG5FICImI3gyMjY4OyItLT4KKzwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgor
PCEtLUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBsdmVydG5l
cXEgIiYjeDIyNjg7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Cis8
IS0tRU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsm
I3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICIm
I3gyMjZBOyItLT4KKzwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBuTHR2
ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJ
VFkgR3QgIiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4
MjI2QjsiLS0+Cis8IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgbkd0diAi
JiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIHR3aXh0ICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2Qzsi
LS0+Cis8IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Cis8IS0tRU5USVRZIG5sdCAi
JiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElU
WSBubGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Cis8IS0t
RU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBuZ3RyICImI3gyMjZG
OyItLT4KKzwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgTm90TGVzc0Vx
dWFsICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Cis8IS0tRU5U
SVRZIG5nZSAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3
MTsiLS0+Cis8IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgorPCEtLUVOVElUWSBsc2ltICIm
I3gyMjcyOyItLT4KKzwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KKzwhLS1FTlRJ
VFkgbGVzc3NpbSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgor
PCEtLUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUg
IiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZ
IE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyIt
LT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KKzwhLS1FTlRJVFkg
bGcgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KKzwhLS1F
TlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBnbCAiJiN4MjI3Nzsi
LS0+Cis8IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVy
TGVzcyAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgorPCEtLUVO
VElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZIG50Z2wgIiYjeDIy
Nzk7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Cis8IS0tRU5U
SVRZIHByICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgor
PCEtLUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0t
PgorPCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIHN1Y2MgIiYj
eDIyN0I7Ii0tPgorPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIFBy
ZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHByZWNjdXJseWVxICIm
I3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBT
dWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBzdWNjY3VybHllcSAi
JiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KKzwhLS1FTlRJVFkg
cHJlY3NpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7
Ii0tPgorPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5USVRZIHN1Y2NzaW0g
IiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KKzwh
LS1FTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBucHIgIiYjeDIyODA7Ii0tPgorPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Cis8IS0t
RU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgbnNjICImI3gyMjgx
OyItLT4KKzwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNj
ZWVkcyAiJiN4MjI4MTsiLS0+Cis8IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Cis8IS0tRU5U
SVRZIHN1YnNldCAiJiN4MjI4MjsiLS0+Cis8IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIw
RDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHN1cCAiJiN4
MjI4MzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIFN1
cGVyc2V0ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsi
LS0+Cis8IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZ
IE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBuc3ViICImI3gy
Mjg0OyItLT4KKzwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Cis8IS0tRU5USVRZIHN1YmUg
IiYjeDIyODY7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Cis8IS0t
RU5USVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4Nzsi
LS0+Cis8IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KKzwhLS1FTlRJVFkgU3VwZXJz
ZXRFcXVhbCAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KKzwh
LS1FTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkgTm90U3Vic2V0RXF1
YWwgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5U
SVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwg
IiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZ
IHN1YnNldG5lcSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hG
RTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4
MjI4QjsiLS0+Cis8IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KKzwhLS1F
TlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBjdXBk
b3QgIiYjeDIyOEQ7Ii0tPgorPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyIt
LT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgc3Fz
dWJzZXQgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBT
cXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkw
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0
RXF1YWwgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4K
KzwhLS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3VwZXJz
ZXRFcXVhbCAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0t
PgorPCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZUludGVy
c2VjdGlvbiAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVV
bmlvbiAiJiN4MjI5NDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVQbHVz
ICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7
Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Cis8IS0tRU5USVRZIG9z
b2wgIiYjeDIyOTg7Ii0tPgorPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlRG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+
Cis8IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KKzwhLS1FTlRJVFkgb2FzdCAi
JiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgorPCEtLUVO
VElUWSBvZGFzaCAiJiN4MjI5RDsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlE
OyItLT4KKzwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgorPCEtLUVOVElUWSBib3hwbHVz
ICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KKzwhLS1FTlRJ
VFkgYm94bWludXMgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0t
PgorPCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Cis8IS0tRU5USVRZIHNkb3RiICIm
I3gyMkExOyItLT4KKzwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KKzwhLS1FTlRJ
VFkgdmRhc2ggIiYjeDIyQTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+
Cis8IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4
MjJBMzsiLS0+Cis8IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Cis8IS0tRU5USVRZIERvd25U
ZWUgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgorPCEtLUVO
VElUWSBib3QgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KKzwh
LS1FTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7
Ii0tPgorPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0VGVlICImI3gyMkE4OyItLT4KKzwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgorPCEt
LUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgorPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsi
LS0+Cis8IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Cis8IS0tRU5USVRZIG52RGFzaCAi
JiN4MjJBRDsiLS0+Cis8IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Cis8IS0tRU5USVRZ
IG5WRGFzaCAiJiN4MjJBRjsiLS0+Cis8IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Cis8
IS0tRU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0
ICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KKzwh
LS1FTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0
ICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Cis8
IS0tRU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEg
IiYjeDIyQjQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+
Cis8IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHJ0
cmllICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KKzwhLS1FTlRJ
VFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgb3JpZ29mICImI3gy
MkI2OyItLT4KKzwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Cis8IS0tRU5USVRZIG11bWFw
ICImI3gyMkI4OyItLT4KKzwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgorPCEtLUVO
VElUWSBoZXJjb24gIiYjeDIyQjk7Ii0tPgorPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0t
PgorPCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5USVRZIHZlZWJhciAi
JiN4MjJCQjsiLS0+Cis8IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Cis8IS0tRU5USVRZ
IGFuZ3J0dmIgIiYjeDIyQkU7Ii0tPgorPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Cis8
IS0tRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIFdlZGdlICImI3gyMkMw
OyItLT4KKzwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSB4dmVl
ICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkg
YmlndmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Cis8IS0t
RU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZIGJpZ2NhcCAiJiN4
MjJDMjsiLS0+Cis8IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgorPCEtLUVOVElUWSBVbmlv
biAiJiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Cis8IS0tRU5U
SVRZIGRpYW0gIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4K
KzwhLS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Cis8IS0tRU5USVRZIHNkb3QgIiYjeDIy
QzU7Ii0tPgorPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgorPCEtLUVOVElUWSBTdGFy
ICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KKzwhLS1FTlRJ
VFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Cis8IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJD
ODsiLS0+Cis8IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Cis8IS0tRU5USVRZIHJ0aW1l
cyAiJiN4MjJDQTsiLS0+Cis8IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Cis8IS0tRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkgcnRocmVlICImI3gy
MkNDOyItLT4KKzwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KKzwhLS1F
TlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7
Ii0tPgorPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5USVRZIGN1cmx5dmVl
ICImI3gyMkNFOyItLT4KKzwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgorPCEtLUVOVElU
WSBjdXJseXdlZGdlICImI3gyMkNGOyItLT4KKzwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4K
KzwhLS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KKzwhLS1FTlRJVFkgU3VwICImI3gyMkQx
OyItLT4KKzwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KKzwhLS1FTlRJVFkgQ2FwICIm
I3gyMkQyOyItLT4KKzwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KKzwhLS1FTlRJVFkgZm9y
ayAiJiN4MjJENDsiLS0+Cis8IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Cis8IS0t
RU5USVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgorPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+
Cis8IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgorPCEtLUVOVElUWSBndGRvdCAiJiN4
MjJENzsiLS0+Cis8IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Cis8IS0tRU5USVRZIExs
ICImI3gyMkQ4OyItLT4KKzwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIEdnICImI3gyMkQ5OyItLT4KKzwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KKzwh
LS1FTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGxlZyAiJiN4MjJE
QTsiLS0+Cis8IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgorPCEtLUVO
VElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgorPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBndHJl
cWxlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRC
OyItLT4KKzwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkg
Y3VlcHIgIiYjeDIyREU7Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+
Cis8IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkgY3VybHllcXN1Y2Mg
IiYjeDIyREY7Ii0tPgorPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElU
WSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElUWSBuc2NjdWUg
IiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7
Ii0tPgorPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1
YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgorPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUz
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Cis8
IS0tRU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KKzwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7
Ii0tPgorPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVOVElUWSBwcmVjbnNp
bSAiJiN4MjJFODsiLS0+Cis8IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgTm90
TGVmdFRyaWFuZ2xlICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Cis8IS0tRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7
Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIG5ydHJpZSAi
JiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgor
PCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgorPCEtLUVOVElU
WSB2ZWxsaXAgIiYjeDIyRUU7Ii0tPgorPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Cis8
IS0tRU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KKzwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7
Ii0tPgorPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Cis8IS0tRU5USVRZIGlzaW5zdiAi
JiN4MjJGMzsiLS0+Cis8IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KKzwhLS1FTlRJVFkg
aXNpbmRvdCAiJiN4MjJGNTsiLS0+Cis8IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMz
ODsiLS0+Cis8IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgorPCEtLUVOVElUWSBub3Rp
bnZiICImI3gyMkY3OyItLT4KKzwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgorPCEtLUVO
VElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmlzZCAiJiN4MjJG
QTsiLS0+Cis8IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgorPCEtLUVOVElUWSBuaXMgIiYj
eDIyRkM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KKzwhLS1FTlRJVFkg
bm90bml2YiAiJiN4MjJGRTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Cis8
IS0tRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkgQmFyd2VkICImI3gy
MzA2OyItLT4KKzwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgorPCEtLUVO
VElUWSBsY2VpbCAiJiN4MjMwODsiLS0+Cis8IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4
OyItLT4KKzwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBSaWdodENl
aWxpbmcgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEt
LUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEtLUVOVElUWSByZmxvb3IgIiYjeDIz
MEI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KKzwhLS1FTlRJVFkg
ZHJjcm9wICImI3gyMzBDOyItLT4KKzwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KKzwh
LS1FTlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KKzwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBG
OyItLT4KKzwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Cis8IS0tRU5USVRZIHByb2ZsaW5l
ICImI3gyMzEyOyItLT4KKzwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgorPCEtLUVO
VElUWSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgorPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0t
PgorPCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElUWSB1bGNvcm5lciAi
JiN4MjMxQzsiLS0+Cis8IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Cis8IS0tRU5USVRZ
IHVyY29ybmVyICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4K
KzwhLS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElUWSBkcmNvcm4gIiYj
eDIzMUY7Ii0tPgorPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Cis8IS0tRU5USVRZ
IGZyb3duICImI3gyMzIyOyItLT4KKzwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KKzwh
LS1FTlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ii0tPgorPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgorPCEtLUVOVElUWSBwcm9mYWxh
ciAiJiN4MjMyRTsiLS0+Cis8IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Cis8IS0tRU5U
SVRZIG92YmFyICImI3gyMzNEOyItLT4KKzwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4K
KzwhLS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdCAiJiN4
MjNCMDsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgorPCEtLUVOVElU
WSBybW91c3QgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyIt
LT4KKzwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFja2V0
ICImI3gyM0I0OyItLT4KKzwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZ
IFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2
OyItLT4KKzwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KKzwhLS1FTlRJ
VFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFjZSAi
JiN4MjNERTsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgorPCEtLUVO
VElUWSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Cis8IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3
OyItLT4KKzwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgorPCEtLUVOVElUWSBvUyAiJiN4
MjRDODsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KKzwhLS1FTlRJVFkg
Ym94aCAiJiN4MjUwMDsiLS0+Cis8IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyIt
LT4KKzwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Cis8IS0tRU5USVRZIGJveGRyICImI3gy
NTBDOyItLT4KKzwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgorPCEtLUVOVElUWSBib3h1
ciAiJiN4MjUxNDsiLS0+Cis8IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KKzwhLS1FTlRJ
VFkgYm94dnIgIiYjeDI1MUM7Ii0tPgorPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Cis8
IS0tRU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KKzwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7
Ii0tPgorPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Cis8IS0tRU5USVRZIGJveEggIiYj
eDI1NTA7Ii0tPgorPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KKzwhLS1FTlRJVFkgYm94
ZFIgIiYjeDI1NTI7Ii0tPgorPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Cis8IS0tRU5U
SVRZIGJveERSICImI3gyNTU0OyItLT4KKzwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgor
PCEtLUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Cis8IS0tRU5USVRZIGJveERMICImI3gyNTU3
OyItLT4KKzwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgorPCEtLUVOVElUWSBib3hVciAi
JiN4MjU1OTsiLS0+Cis8IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KKzwhLS1FTlRJVFkg
Ym94dUwgIiYjeDI1NUI7Ii0tPgorPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Cis8IS0t
RU5USVRZIGJveFVMICImI3gyNTVEOyItLT4KKzwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0t
PgorPCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Cis8IS0tRU5USVRZIGJveFZSICImI3gy
NTYwOyItLT4KKzwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgorPCEtLUVOVElUWSBib3hW
bCAiJiN4MjU2MjsiLS0+Cis8IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KKzwhLS1FTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ii0tPgorPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Cis8
IS0tRU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KKzwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7
Ii0tPgorPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Cis8IS0tRU5USVRZIGJveEhVICIm
I3gyNTY5OyItLT4KKzwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgorPCEtLUVOVElUWSBi
b3hWaCAiJiN4MjU2QjsiLS0+Cis8IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KKzwhLS1F
TlRJVFkgdWhibGsgIiYjeDI1ODA7Ii0tPgorPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+
Cis8IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KKzwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1
OTE7Ii0tPgorPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Cis8IS0tRU5USVRZIGJsazM0
ICImI3gyNTkzOyItLT4KKzwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkg
c3F1YXJlICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KKzwh
LS1FTlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsi
LS0+Cis8IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRmls
bGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRW1wdHlWZXJ5U21h
bGxTcXVhcmUgIiYjeDI1QUI7Ii0tPgorPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KKzwh
LS1FTlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KKzwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7
Ii0tPgorPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Cis8IS0tRU5USVRZIGJpZ3RyaWFu
Z2xldXAgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Cis8IS0t
RU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgorPCEtLUVOVElUWSB1dHJpICImI3gy
NUI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgorPCEtLUVOVElUWSBy
dHJpZiAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVC
ODsiLS0+Cis8IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmds
ZXJpZ2h0ICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgorPCEt
LUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgorPCEtLUVOVElUWSBkdHJpZiAi
JiN4MjVCRTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4K
KzwhLS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlZG93biAi
JiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KKzwhLS1FTlRJVFkg
YmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBsdHJpICImI3gyNUMz
OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KKzwhLS1FTlRJVFkg
bG96ICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Cis8IS0t
RU5USVRZIGNpciAiJiN4MjVDQjsiLS0+Cis8IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+
Cis8IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4
MjVFRjsiLS0+Cis8IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KKzwhLS1FTlRJVFkgdXJ0
cmkgIiYjeDI1Rjk7Ii0tPgorPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Cis8IS0tRU5U
SVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgorPCEtLUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiLS0+Cis8IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KKzwh
LS1FTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Cis8IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7
Ii0tPgorPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Cis8IS0tRU5USVRZIGZlbWFsZSAi
JiN4MjY0MDsiLS0+Cis8IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgorPCEtLUVOVElUWSBz
cGFkZXMgIiYjeDI2NjA7Ii0tPgorPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgor
PCEtLUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGNsdWJzdWl0ICImI3gy
NjYzOyItLT4KKzwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgaGVh
cnRzdWl0ICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgorPCEt
LUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZIHN1bmcgIiYjeDI2
NkE7Ii0tPgorPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KKzwhLS1FTlRJVFkgbmF0dXIg
IiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KKzwhLS1FTlRJ
VFkgc2hhcnAgIiYjeDI2NkY7Ii0tPgorPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Cis8
IS0tRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Cis8IS0tRU5USVRZIGNyb3NzICImI3gy
NzE3OyItLT4KKzwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Cis8IS0tRU5USVRZIG1hbHRl
c2UgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KKzwhLS1FTlRJ
VFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgorPCEtLUVOVElUWSBsYmJyayAiJiN4
Mjc3MjsiLS0+Cis8IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KKzwhLS1FTlRJVFkgYnNv
bGhzdWIgIiYjeDI3Qzg7Ii0tPgorPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KKzwh
LS1FTlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tl
dCAiJiN4MjdFNjsiLS0+Cis8IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KKzwhLS1FTlRJ
VFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KKzwhLS1FTlRJVFkgbGFuZyAiJiN4
MjdFODsiLS0+Cis8IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgorPCEt
LUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElU
WSByYW5nbGUgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KKzwh
LS1FTlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Cis8IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyIt
LT4KKzwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgorPCEtLUVOVElUWSB4bGFyciAiJiN4
MjdGNTsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgorPCEtLUVO
VElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3
RjY7Ii0tPgorPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Cis8IS0tRU5U
SVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3
Rjc7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEt
LUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEtLUVOVElUWSB4bEFy
ciAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgor
PCEtLUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KKzwhLS1FTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
LS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KKzwhLS1F
TlRJVFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cg
IiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3
RkE7Ii0tPgorPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KKzwhLS1FTlRJVFkgbG9uZ21h
cHN0byAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KKzwh
LS1FTlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KKzwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAz
OyItLT4KKzwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KKzwhLS1FTlRJVFkgTWFwICIm
I3gyOTA1OyItLT4KKzwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgorPCEtLUVOVElUWSBy
YmFyciAiJiN4MjkwRDsiLS0+Cis8IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Cis8IS0t
RU5USVRZIGxCYXJyICImI3gyOTBFOyItLT4KKzwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0t
PgorPCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KKzwhLS1FTlRJVFkgUkJhcnIgIiYj
eDI5MTA7Ii0tPgorPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Cis8IS0tRU5USVRZ
IEREb3RyYWhkICImI3gyOTExOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsi
LS0+Cis8IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Cis8IS0tRU5USVRZIFJh
cnJ0bCAiJiN4MjkxNjsiLS0+Cis8IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Cis8IS0t
RU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Cis8IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsi
LS0+Cis8IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Cis8IS0tRU5USVRZIGxhcnJmcyAi
JiN4MjkxRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Cis8IS0tRU5USVRZ
IGxhcnJiZnMgIiYjeDI5MUY7Ii0tPgorPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4K
KzwhLS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KKzwhLS1FTlRJVFkgbmVhcmhrICImI3gy
OTI0OyItLT4KKzwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KKzwhLS1FTlRJVFkgaGtz
ZWFyb3cgIiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgorPCEt
LUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIG53bmVhciAiJiN4Mjky
NzsiLS0+Cis8IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Cis8IS0tRU5USVRZIHRvZWEg
IiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgorPCEtLUVOVElU
WSB0b3NhICImI3gyOTI5OyItLT4KKzwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KKzwh
LS1FTlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgorPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Cis8IS0tRU5USVRZ
IGxkY2EgIiYjeDI5MzY7Ii0tPgorPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KKzwhLS1F
TlRJVFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Cis8IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsi
LS0+Cis8IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgorPCEtLUVOVElUWSBjdWxhcnJw
ICImI3gyOTNEOyItLT4KKzwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KKzwhLS1FTlRJ
VFkgaGFycmNpciAiJiN4Mjk0ODsiLS0+Cis8IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyIt
LT4KKzwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgorPCEtLUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiLS0+Cis8IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+
Cis8IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KKzwhLS1FTlRJVFkg
RG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Cis8IS0tRU5USVRZIExlZnRVcERvd25W
ZWN0b3IgIiYjeDI5NTE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9y
QmFyICImI3gyOTU1OyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7
Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG93blZl
Y3RvckJhciAiJiN4Mjk1OTsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7
Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Cis8IS0tRU5USVRZ
IFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvd25UZWVW
ZWN0b3IgIiYjeDI5NUQ7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1
RTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Cis8IS0t
RU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Cis8IS0tRU5USVRZIExlZnREb3du
VGVlVmVjdG9yICImI3gyOTYxOyItLT4KKzwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Cis8
IS0tRU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgorPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyIt
LT4KKzwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Cis8IS0tRU5USVRZIGx1cnVoYXIgIiYj
eDI5NjY7Ii0tPgorPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KKzwhLS1FTlRJVFkg
cnVsdWhhciAiJiN4Mjk2ODsiLS0+Cis8IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgor
PCEtLUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgorPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5
NkI7Ii0tPgorPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgorPCEtLUVOVElUWSBscmhh
cmQgIiYjeDI5NkQ7Ii0tPgorPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Cis8IS0tRU5U
SVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgorPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2
RjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KKzwh
LS1FTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KKzwhLS1FTlRJVFkgZXJhcnIgIiYj
eDI5NzE7Ii0tPgorPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KKzwhLS1FTlRJVFkg
bGFycnNpbSAiJiN4Mjk3MzsiLS0+Cis8IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgor
PCEtLUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgorPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5
NzY7Ii0tPgorPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgorPCEtLUVOVElUWSBzdWJy
YXJyICImI3gyOTc5OyItLT4KKzwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Cis8IS0t
RU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Cis8IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsi
LS0+Cis8IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Cis8IS0tRU5USVRZIGRmaXNodCAi
JiN4Mjk3RjsiLS0+Cis8IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KKzwhLS1FTlRJVFkg
cm9wYXIgIiYjeDI5ODY7Ii0tPgorPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Cis8IS0t
RU5USVRZIHJicmtlICImI3gyOThDOyItLT4KKzwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsi
LS0+Cis8IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgorPCEtLUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Cis8IS0tRU5U
SVRZIGxhbmdkICImI3gyOTkxOyItLT4KKzwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgor
PCEtLUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgorPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5
OTQ7Ii0tPgorPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgorPCEtLUVOVElUWSBsdHJQ
YXIgIiYjeDI5OTY7Ii0tPgorPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KKzwhLS1F
TlRJVFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7
Ii0tPgorPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KKzwhLS1FTlRJVFkgcmFuZ2UgIiYj
eDI5QTU7Ii0tPgorPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KKzwhLS1FTlRJVFkg
dXdhbmdsZSAiJiN4MjlBNzsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4K
KzwhLS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYyAi
JiN4MjlBQTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KKzwhLS1FTlRJ
VFkgYW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsi
LS0+Cis8IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNk
YWggIiYjeDI5QUY7Ii0tPgorPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KKzwhLS1F
TlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Cis8IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7
Ii0tPgorPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Cis8IS0tRU5USVRZIGxhZW1w
dHl2ICImI3gyOUI0OyItLT4KKzwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgorPCEtLUVO
VElUWSBvbWlkICImI3gyOUI2OyItLT4KKzwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Cis8
IS0tRU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KKzwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlC
QjsiLS0+Cis8IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Cis8IS0tRU5USVRZIG9sY2ly
ICImI3gyOUJFOyItLT4KKzwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgorPCEtLUVOVElU
WSBvbHQgIiYjeDI5QzA7Ii0tPgorPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgorPCEtLUVO
VElUWSBjaXJzY2lyICImI3gyOUMyOyItLT4KKzwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+
Cis8IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgorPCEtLUVOVElUWSBic29sYiAiJiN4MjlD
NTsiLS0+Cis8IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Cis8IS0tRU5USVRZIHRyaXNi
ICImI3gyOUNEOyItLT4KKzwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgorPCEtLUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJh
ciAiJiN4MjlEMDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KKzwhLS1FTlRJVFkg
aW5maW50aWUgIiYjeDI5REQ7Ii0tPgorPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4K
KzwhLS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KKzwhLS1FTlRJVFkgc21lcGFyc2wgIiYj
eDI5RTQ7Ii0tPgorPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Cis8IS0tRU5USVRZ
IGxvemYgIiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0t
PgorPCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Cis8IS0tRU5USVRZIGRzb2wg
IiYjeDI5RjY7Ii0tPgorPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Cis8IS0tRU5USVRZ
IGJpZ29kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgor
PCEtLUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZIHhvdGltZSAiJiN4
MkEwMjsiLS0+Cis8IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Cis8IS0tRU5USVRZ
IHh1cGx1cyAiJiN4MkEwNDsiLS0+Cis8IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4K
KzwhLS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkgYmlnc3FjdXAgIiYj
eDJBMDY7Ii0tPgorPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgaWlp
aW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgorPCEt
LUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Cis8IS0tRU5USVRZIGF3aW50ICImI3gyQTEx
OyItLT4KKzwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgorPCEtLUVOVElUWSBzY3Bv
bGludCAiJiN4MkExMzsiLS0+Cis8IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgorPCEt
LUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Cis8IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJB
MTY7Ii0tPgorPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Cis8IS0tRU5USVRZIHBs
dXNjaXIgIiYjeDJBMjI7Ii0tPgorPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Cis8
IS0tRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgorPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJB
MjU7Ii0tPgorPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KKzwhLS1FTlRJVFkgcGx1
c3R3byAiJiN4MkEyNzsiLS0+Cis8IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Cis8IS0t
RU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgorPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7
Ii0tPgorPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgorPCEtLUVOVElUWSBDcm9zcyAi
JiN4MkEyRjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Cis8IS0tRU5USVRZ
IHRpbWVzYmFyICImI3gyQTMxOyItLT4KKzwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4K
KzwhLS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Cis8IS0tRU5USVRZIHJvdGltZXMgIiYj
eDJBMzU7Ii0tPgorPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Cis8IS0tRU5USVRZ
IE90aW1lcyAiJiN4MkEzNzsiLS0+Cis8IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgorPCEt
LUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KKzwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJB
M0E7Ii0tPgorPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KKzwhLS1FTlRJVFkgaXBy
b2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KKzwhLS1F
TlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgorPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0t
PgorPCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KKzwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0
MzsiLS0+Cis8IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Cis8IS0tRU5USVRZIGN1cG9y
ICImI3gyQTQ1OyItLT4KKzwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KKzwhLS1FTlRJ
VFkgY2FwY3VwICImI3gyQTQ3OyItLT4KKzwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0t
PgorPCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Cis8IS0tRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiLS0+Cis8IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Cis8IS0tRU5USVRZ
IGNjdXBzICImI3gyQTRDOyItLT4KKzwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgorPCEt
LUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KKzwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyIt
LT4KKzwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgorPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJB
NTU7Ii0tPgorPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KKzwhLS1FTlRJVFkgb3JzbG9w
ZSAiJiN4MkE1NzsiLS0+Cis8IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KKzwhLS1F
TlRJVFkgYW5kdiAiJiN4MkE1QTsiLS0+Cis8IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Cis8
IS0tRU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgorPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0t
PgorPCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgorPCEtLUVOVElUWSBzZG90ZSAiJiN4
MkE2NjsiLS0+Cis8IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Cis8IS0tRU5USVRZIGNv
bmdkb3QgIiYjeDJBNkQ7Ii0tPgorPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgorPCEtLUVOVElUWSBhcGFjaXIg
IiYjeDJBNkY7Ii0tPgorPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgorPCEtLUVOVElUWSBu
YXBFICImI3gyQTcwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4K
KzwhLS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgorPCEtLUVOVElUWSBFc2ltICImI3gyQTcz
OyItLT4KKzwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KKzwhLS1FTlRJVFkgRXF1YWwg
IiYjeDJBNzU7Ii0tPgorPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Cis8IS0tRU5USVRZ
IGRkb3RzZXEgIiYjeDJBNzc7Ii0tPgorPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4K
KzwhLS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgorPCEtLUVOVElUWSBndGNpciAiJiN4MkE3
QTsiLS0+Cis8IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgorPCEtLUVOVElUWSBndHF1
ZXN0ICImI3gyQTdDOyItLT4KKzwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KKzwhLS1FTlRJ
VFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4
MkE3RDsiLS0+Cis8IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmxl
cXNsYW50ICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+
Cis8IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkg
Z2Vxc2xhbnQgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+
Cis8IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBs
ZXNkb3QgIiYjeDJBN0Y7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgorPCEt
LUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KKzwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4
MjsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KKzwhLS1FTlRJVFkgZ2Vz
ZG90b2wgIiYjeDJBODQ7Ii0tPgorPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgorPCEtLUVO
VElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KKzwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyIt
LT4KKzwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KKzwhLS1FTlRJVFkgbG5lICIm
I3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Cis8IS0tRU5USVRZIGdu
ZSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgorPCEtLUVOVElU
WSBsbmFwICImI3gyQTg5OyItLT4KKzwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgor
PCEtLUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KKzwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJB
OEE7Ii0tPgorPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgorPCEtLUVOVElUWSBsZXNzZXFx
Z3RyICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KKzwhLS1FTlRJ
VFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Cis8IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyIt
LT4KKzwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgorPCEtLUVOVElUWSBsc2ltZyAiJiN4
MkE4RjsiLS0+Cis8IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KKzwhLS1FTlRJVFkgbGdF
ICImI3gyQTkxOyItLT4KKzwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KKzwhLS1FTlRJVFkg
bGVzZ2VzICImI3gyQTkzOyItLT4KKzwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KKzwh
LS1FTlRJVFkgZWxzICImI3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJB
OTU7Ii0tPgorPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgorPCEtLUVOVElUWSBlcXNsYW50
Z3RyICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KKzwhLS1F
TlRJVFkgZWdzZG90ICImI3gyQTk4OyItLT4KKzwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgor
PCEtLUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Cis8IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0t
PgorPCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KKzwhLS1FTlRJVFkgc2ltbEUgIiYjeDJB
OUY7Ii0tPgorPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Cis8IS0tRU5USVRZIExlc3NM
ZXNzICImI3gyQUExOyItLT4KKzwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgorPCEt
LUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgorPCEt
LUVOVElUWSBnbGogIiYjeDJBQTQ7Ii0tPgorPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgor
PCEtLUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KKzwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsi
LS0+Cis8IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KKzwhLS1FTlRJVFkgZ2VzY2MgIiYj
eDJBQTk7Ii0tPgorPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgorPCEtLUVOVElUWSBsYXQg
IiYjeDJBQUI7Ii0tPgorPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KKzwhLS1FTlRJVFkg
c210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0t
PgorPCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgYnVt
cEUgIiYjeDJBQUU7Ii0tPgorPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElU
WSBwcmVjZXEgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFG
OyItLT4KKzwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBu
cHJlY2VxICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwg
IiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KKzwhLS1F
TlRJVFkgc3VjY2VxICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4
MkFCMDsiLS0+Cis8IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc0Vx
dWFsICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Cis8
IS0tRU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Cis8IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0t
PgorPCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5USVRZIHNjbkUgIiYj
eDJBQjY7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Cis8IS0tRU5USVRZ
IHByYXAgIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4K
KzwhLS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYj
eDJBQjg7Ii0tPgorPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Cis8IS0tRU5USVRZIHBy
ZWNuYXBwcm94ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgor
PCEtLUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5USVRZIFByICImI3gy
QUJCOyItLT4KKzwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgorPCEtLUVOVElUWSBzdWJkb3Qg
IiYjeDJBQkQ7Ii0tPgorPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgorPCEtLUVOVElU
WSBzdWJwbHVzICImI3gyQUJGOyItLT4KKzwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+
Cis8IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgorPCEtLUVOVElUWSBzdXBtdWx0ICIm
I3gyQUMyOyItLT4KKzwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Cis8IS0tRU5USVRZ
IHN1cGVkb3QgIiYjeDJBQzQ7Ii0tPgorPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KKzwh
LS1FTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KKzwhLS1FTlRJVFkgbnN1YkUgIiYjeDJB
QzU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0ZXFxICIm
I3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzdWJzaW0g
IiYjeDJBQzc7Ii0tPgorPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgorPCEtLUVOVElU
WSBzdWJuRSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0t
PgorPCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZh
cnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHN1cG5FICImI3gy
QUNDOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Cis8IS0tRU5USVRZ
IHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAi
JiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Cis8IS0t
RU5USVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgorPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+
Cis8IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KKzwhLS1FTlRJVFkgc3Vic3VwICImI3gy
QUQzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KKzwhLS1FTlRJVFkgc3Vi
c3ViICImI3gyQUQ1OyItLT4KKzwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KKzwhLS1F
TlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Cis8IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ii0tPgorPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Cis8IS0tRU5USVRZIHRvcGZvcmsg
IiYjeDJBREE7Ii0tPgorPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KKzwhLS1FTlRJVFkg
RGFzaHYgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyIt
LT4KKzwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KKzwhLS1FTlRJVFkgQmFydiAiJiN4
MkFFNzsiLS0+Cis8IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgorPCEtLUVOVElUWSB2QmFy
diAiJiN4MkFFOTsiLS0+Cis8IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgorPCEtLUVOVElU
WSBOb3QgIiYjeDJBRUM7Ii0tPgorPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KKzwhLS1F
TlRJVFkgcm5taWQgIiYjeDJBRUU7Ii0tPgorPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0t
PgorPCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgorPCEtLUVOVElUWSB0b3BjaXIgIiYj
eDJBRjE7Ii0tPgorPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Cis8IS0tRU5USVRZIHBh
cnNpbSAiJiN4MkFGMzsiLS0+Cis8IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KKzwhLS1F
TlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBmZmxpZyAiJiN4
RkIwMDsiLS0+Cis8IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KKzwhLS1FTlRJVFkgZmxs
aWcgIiYjeEZCMDI7Ii0tPgorPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgorPCEtLUVO
VElUWSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgorPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+
Cis8IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KKzwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0
OUY7Ii0tPgorPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Cis8IS0tRU5USVRZIEpzY3Ig
IiYjeDFENEE1OyItLT4KKzwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgorPCEtLUVOVElU
WSBOc2NyICImI3gxRDRBOTsiLS0+Cis8IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KKzwh
LS1FTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgorPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsi
LS0+Cis8IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KKzwhLS1FTlRJVFkgVHNjciAiJiN4
MUQ0QUY7Ii0tPgorPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Cis8IS0tRU5USVRZIFZz
Y3IgIiYjeDFENEIxOyItLT4KKzwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgorPCEtLUVO
VElUWSBYc2NyICImI3gxRDRCMzsiLS0+Cis8IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4K
KzwhLS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgorPCEtLUVOVElUWSBhc2NyICImI3gxRDRC
NjsiLS0+Cis8IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KKzwhLS1FTlRJVFkgY3NjciAi
JiN4MUQ0Qjg7Ii0tPgorPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Cis8IS0tRU5USVRZ
IGZzY3IgIiYjeDFENEJCOyItLT4KKzwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgorPCEt
LUVOVElUWSBpc2NyICImI3gxRDRCRTsiLS0+Cis8IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyIt
LT4KKzwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgorPCEtLUVOVElUWSBsc2NyICImI3gx
RDRDMTsiLS0+Cis8IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KKzwhLS1FTlRJVFkgbnNj
ciAiJiN4MUQ0QzM7Ii0tPgorPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Cis8IS0tRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyItLT4KKzwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgor
PCEtLUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Cis8IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5
OyItLT4KKzwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgorPCEtLUVOVElUWSB2c2NyICIm
I3gxRDRDQjsiLS0+Cis8IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KKzwhLS1FTlRJVFkg
eHNjciAiJiN4MUQ0Q0Q7Ii0tPgorPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Cis8IS0t
RU5USVRZIHpzY3IgIiYjeDFENENGOyItLT4KKzwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+
Cis8IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgorPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3
OyItLT4KKzwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Cis8IS0tRU5USVRZIEZmciAiJiN4
MUQ1MDk7Ii0tPgorPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KKzwhLS1FTlRJVFkgSmZy
ICImI3gxRDUwRDsiLS0+Cis8IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgorPCEtLUVOVElU
WSBMZnIgIiYjeDFENTBGOyItLT4KKzwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Cis8IS0t
RU5USVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgorPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4K
KzwhLS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Cis8IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7
Ii0tPgorPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KKzwhLS1FTlRJVFkgVGZyICImI3gx
RDUxNzsiLS0+Cis8IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgorPCEtLUVOVElUWSBWZnIg
IiYjeDFENTE5OyItLT4KKzwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Cis8IS0tRU5USVRZ
IFhmciAiJiN4MUQ1MUI7Ii0tPgorPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KKzwhLS1F
TlRJVFkgYWZyICImI3gxRDUxRTsiLS0+Cis8IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgor
PCEtLUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KKzwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsi
LS0+Cis8IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgorPCEtLUVOVElUWSBmZnIgIiYjeDFE
NTIzOyItLT4KKzwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Cis8IS0tRU5USVRZIGhmciAi
JiN4MUQ1MjU7Ii0tPgorPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KKzwhLS1FTlRJVFkg
amZyICImI3gxRDUyNzsiLS0+Cis8IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgorPCEtLUVO
VElUWSBsZnIgIiYjeDFENTI5OyItLT4KKzwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Cis8
IS0tRU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgorPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyIt
LT4KKzwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Cis8IS0tRU5USVRZIHFmciAiJiN4MUQ1
MkU7Ii0tPgorPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KKzwhLS1FTlRJVFkgc2ZyICIm
I3gxRDUzMDsiLS0+Cis8IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgorPCEtLUVOVElUWSB1
ZnIgIiYjeDFENTMyOyItLT4KKzwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Cis8IS0tRU5U
SVRZIHdmciAiJiN4MUQ1MzQ7Ii0tPgorPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KKzwh
LS1FTlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Cis8IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0t
PgorPCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Cis8IS0tRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyItLT4KKzwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgorPCEtLUVOVElUWSBFb3Bm
ICImI3gxRDUzQzsiLS0+Cis8IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KKzwhLS1FTlRJ
VFkgR29wZiAiJiN4MUQ1M0U7Ii0tPgorPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Cis8
IS0tRU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KKzwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7
Ii0tPgorPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Cis8IS0tRU5USVRZIE1vcGYgIiYj
eDFENTQ0OyItLT4KKzwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgorPCEtLUVOVElUWSBT
b3BmICImI3gxRDU0QTsiLS0+Cis8IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KKzwhLS1F
TlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgorPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+
Cis8IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KKzwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1
NEY7Ii0tPgorPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Cis8IS0tRU5USVRZIGFvcGYg
IiYjeDFENTUyOyItLT4KKzwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgorPCEtLUVOVElU
WSBjb3BmICImI3gxRDU1NDsiLS0+Cis8IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KKzwh
LS1FTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgorPCEtLUVOVElUWSBmb3BmICImI3gxRDU1Nzsi
LS0+Cis8IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KKzwhLS1FTlRJVFkgaG9wZiAiJiN4
MUQ1NTk7Ii0tPgorPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Cis8IS0tRU5USVRZIGpv
cGYgIiYjeDFENTVCOyItLT4KKzwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgorPCEtLUVO
VElUWSBsb3BmICImI3gxRDU1RDsiLS0+Cis8IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4K
KzwhLS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgorPCEtLUVOVElUWSBvb3BmICImI3gxRDU2
MDsiLS0+Cis8IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KKzwhLS1FTlRJVFkgcW9wZiAi
JiN4MUQ1NjI7Ii0tPgorPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Cis8IS0tRU5USVRZ
IHNvcGYgIiYjeDFENTY0OyItLT4KKzwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgorPCEt
LUVOVElUWSB1b3BmICImI3gxRDU2NjsiLS0+Cis8IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyIt
LT4KKzwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgorPCEtLUVOVElUWSB4b3BmICImI3gx
RDU2OTsiLS0+Cis8IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KKzwhLS1FTlRJVFkgem9w
ZiAiJiN4MUQ1NkI7Ii0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQu
cHkKaW5kZXggMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUzZGIzMC4uZjhiZTAz
ZWZiMjc1MGFkNzU0YzYwMzhmNzM0MWE5NzYxMjkxZGYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9h
ZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGlmIE1ZUFk6CiAgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
ICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VGV4dAogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCkBAIC01MCw5ICs1MSw5
IEBAIGRlZiBzaG91bGRfZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWlsZF90aW1lPXRpbWVk
ZWx0YShkYXlzPTUpKToKIAogCiBkZWYgbWVyZ2VfcHJfdGFncyhyZXBvX3Jvb3QsIG1heF9jb3Vu
dD01MCk6Ci0gICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3Rbc3RyXQorICAgICMgdHlwZTog
KHN0ciwgaW50KSAtPiBMaXN0W1RleHRdCiAgICAgZ2l0ZnVuYyA9IGdpdChyZXBvX3Jvb3QpCi0g
ICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHRhZ3MgPSBbXSAgIyB0eXBlOiBM
aXN0W1RleHRdCiAgICAgaWYgZ2l0ZnVuYyBpcyBOb25lOgogICAgICAgICByZXR1cm4gdGFncwog
ICAgIGZvciBsaW5lIGluIGdpdGZ1bmMoImxvZyIsICItLWZvcm1hdD0lRCIsICItLW1heC1jb3Vu
dD0lcyIgJSBtYXhfY291bnQpLnNwbGl0KCJcbiIpOgpAQCAtNzksNyArODAsNyBAQCBkZWYgc2Nv
cmVfbmFtZShuYW1lKToKIAogCiBkZWYgZ2l0aHViX3VybCh0YWdzKToKLSAgICAjIHR5cGU6IChM
aXN0W3N0cl0pIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAjIHR5cGU6IChMaXN0W1RleHRd
KSAtPiBPcHRpb25hbFtMaXN0W1RleHRdXQogICAgIGZvciB0YWcgaW4gdGFnczoKICAgICAgICAg
dXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dC9yZWxlYXNlcy90YWdzLyVzIiAlIHRhZwogICAgICAgICB0cnk6CkBAIC0xMTEsOCArMTEyLDgg
QEAgZGVmIGdpdGh1Yl91cmwodGFncyk6CiAKIGRlZiBkb3dubG9hZF9tYW5pZmVzdCgKICAgICAg
ICAgbWFuaWZlc3RfcGF0aCwgICMgdHlwZTogc3RyCi0gICAgICAgIHRhZ3NfZnVuYywgICMgdHlw
ZTogQ2FsbGFibGVbW10sIExpc3Rbc3RyXV0KLSAgICAgICAgdXJsX2Z1bmMsICAjIHR5cGU6IENh
bGxhYmxlW1tMaXN0W3N0cl1dLCBPcHRpb25hbFtMaXN0W3N0cl1dXQorICAgICAgICB0YWdzX2Z1
bmMsICAjIHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W1RleHRdXQorICAgICAgICB1cmxfZnVuYywg
ICMgdHlwZTogQ2FsbGFibGVbW0xpc3RbVGV4dF1dLCBPcHRpb25hbFtMaXN0W1RleHRdXV0KICAg
ICAgICAgZm9yY2U9RmFsc2UgICMgdHlwZTogYm9vbAogKToKICAgICAjIHR5cGU6ICguLi4pIC0+
IGJvb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCAxYzQwMzRhZDA1
Zjk5YTI2MzE1OTAxYTE4YzhmNDAyZDVmYTY0YzEwLi5lZTA3ZjBkMWQ3OTcxNzUzNzRiMTY5YTQ2
OGI0YzJjODUwNTc5NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CkBA
IC0xLDQgKzEsNCBAQAotZnJvbSBjb3B5IGltcG9ydCBjb3B5CitpbXBvcnQgb3MucGF0aAogZnJv
bSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCB3
aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
LCB1cmxwYXJzZQpAQCAtNjEsNiArNjEsMTEgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKICAgICAgICAgIiIiVGhlIGl0ZW0ncyB0eXBlIiIi
CiAgICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXRoX3BhcnRzKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYucGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBkZWYga2V5KHNlbGYp
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIiIkEgdW5pcXVlIGlk
ZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCkBAIC0xMDQsMTQgKzEwOSwxNCBAQCBjbGFzcyBVUkxN
YW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwg
ICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAgICAg
ICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgIHVy
bCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlvbmFs
W1RleHRdCiAgICAgICAgICAgICAgICAgICoqZXh0cmFzICAjIHR5cGU6IEFueQogICAgICAgICAg
ICAgICAgICApOgogICAgICAgICAjIHR5cGU6ICguLi4pIC0+IE5vbmUKICAgICAgICAgc3VwZXIo
VVJMTWFuaWZlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19yb290LCBwYXRoKQogICAgICAg
ICBhc3NlcnQgdXJsX2Jhc2VbMF0gPT0gIi8iCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1cmxf
YmFzZQotICAgICAgICBhc3NlcnQgdXJsWzBdICE9ICIvIgorICAgICAgICBhc3NlcnQgdXJsIGlz
IE5vbmUgb3IgdXJsWzBdICE9ICIvIgogICAgICAgICBzZWxmLl91cmwgPSB1cmwKICAgICAgICAg
c2VsZi5fZXh0cmFzID0gZXh0cmFzCiAKQEAgLTEyMywyMCArMTI4LDI4IEBAIGNsYXNzIFVSTE1h
bmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB1cmwoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAorICAgICAgICByZWxfdXJsID0gc2VsZi5f
dXJsIG9yIHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKQogICAgICAgICAjIHdl
IGNhbiBvdXRwZXJmb3JtIHVybGpvaW4sIGJlY2F1c2Ugd2Uga25vdyB3ZSBqdXN0IGhhdmUgcGF0
aCByZWxhdGl2ZSBVUkxzCiAgICAgICAgIGlmIHNlbGYudXJsX2Jhc2UgPT0gIi8iOgotICAgICAg
ICAgICAgcmV0dXJuICIvIiArIHNlbGYuX3VybAotICAgICAgICByZXR1cm4gdXJsam9pbihzZWxm
LnVybF9iYXNlLCBzZWxmLl91cmwpCisgICAgICAgICAgICByZXR1cm4gIi8iICsgcmVsX3VybAor
ICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLCByZWxfdXJsKQogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
ICAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICgiaHR0cHMiIGluIGZsYWdz
IG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgaDIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICBmbGFncyA9
IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxpdCgiLiIp
WzE6LTFdKQorICAgICAgICByZXR1cm4gImgyIiBpbiBmbGFncwogCiAgICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1d
Ci0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwge30pICAjIHR5cGU6IFR1cGxlW1RleHQsIERpY3Rb
QW55LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBE
aWN0W0FueSwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5fdXJsID09IHNl
bGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKSBlbHNlIHNlbGYuX3VybAorICAgICAg
ICBydiA9IChyZWxfdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3Rb
QW55LCBBbnldXQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTc3
LDEzICsxOTAsMTggQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAg
ICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4dHJhcy5nZXQoImpzc2hlbGwiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHF1aWMoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V4dHJhcy5nZXQoInF1aWMiKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHNjcmlw
dF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQog
ICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgic2NyaXB0X21ldGFkYXRhIikKIAogICAg
IGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERp
Y3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0
XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVyKFRlc3RoYXJuZXNzVGVzdCwg
c2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0xOTEsMjMgKzIw
OSwyNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAg
ICAgIHJ2Wy0xXVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAgICAgICAgIGlmIHNl
bGYuanNzaGVsbDoKICAgICAgICAgICAgIHJ2Wy0xXVsianNzaGVsbCJdID0gVHJ1ZQorICAgICAg
ICBpZiBzZWxmLnF1aWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBydlstMV1bInF1aWMiXSA9
IHNlbGYucXVpYwogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAg
IHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBzZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAg
ICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IFsoaywgdikgZm9yIChrLHYpIGluIHNl
bGYuc2NyaXB0X21ldGFkYXRhXQogICAgICAgICByZXR1cm4gcnYKIAogCi1jbGFzcyBSZWZUZXN0
QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgorY2xhc3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgog
ICAgIF9fc2xvdHNfXyA9ICgicmVmZXJlbmNlcyIsKQogCisgICAgaXRlbV90eXBlID0gInJlZnRl
c3QiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9v
dCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAg
ICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAg
IHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlv
bmFsW1RleHRdCiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9Tm9uZSwgICMgdHlwZTogT3B0
aW9uYWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgICAgICAgICAgICoqZXh0cmFz
ICAjIHR5cGU6IEFueQogICAgICAgICAgICAgICAgICApOgotICAgICAgICBzdXBlcihSZWZUZXN0
QmFzZSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jhc2UsIHVybCwgKipl
eHRyYXMpCisgICAgICAgIHN1cGVyKFJlZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3Qs
IHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0cmFzKQogICAgICAgICBpZiByZWZlcmVuY2VzIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlZmVyZW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1
cGxlW1RleHQsIFRleHRdXQogICAgICAgICBlbHNlOgpAQCAtMjQ3LDggKzI2OSw5IEBAIGNsYXNz
IFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVybiBydgogCiAgICAg
ZGVmIHRvX2pzb24oc2VsZik6ICAjIHR5cGU6IGlnbm9yZQotICAgICAgICAjIHR5cGU6ICgpIC0+
IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCi0g
ICAgICAgIHJ2ID0gKHNlbGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVw
bGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtUdXBsZVtUZXh0LCBU
ZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5f
dXJsID09IHNlbGYucGF0aCBlbHNlIHNlbGYuX3VybAorICAgICAgICBydiA9IChyZWxfdXJsLCBz
ZWxmLnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgZXh0cmFzID0gcnZb
LTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4
dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0yNjYsNyArMjg5LDcgQEAgY2xhc3Mg
UmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgIHBhdGgsICAj
IHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgIG9iaiAgIyB0eXBlOiBUdXBsZVtUZXh0LCBM
aXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtBbnksIEFueV1dCiAgICAgICAgICAgICAgICAg
ICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFJlZlRlc3RCYXNlCisgICAgICAgICMgdHlw
ZTogKC4uLikgLT4gUmVmVGVzdAogICAgICAgICB0ZXN0c19yb290ID0gbWFuaWZlc3QudGVzdHNf
cm9vdAogICAgICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBwYXRo
ID0gdG9fb3NfcGF0aChwYXRoKQpAQCAtMjc4LDM4ICszMDEsNiBAQCBjbGFzcyBSZWZUZXN0QmFz
ZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsCiAgICAg
ICAgICAgICAgICAgICAgKipleHRyYXMpCiAKLSAgICBkZWYgdG9fUmVmVGVzdChzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgPT0gUmVm
VGVzdDoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRlc3QpCi0gICAg
ICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikKLSAgICAgICAgcnYu
X19jbGFzc19fID0gUmVmVGVzdAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShydiwgUmVmVGVz
dCkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgdG9fUmVmVGVzdE5vZGUoc2VsZik6Ci0g
ICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdE5vZGUKLSAgICAgICAgaWYgdHlwZShzZWxmKSA9
PSBSZWZUZXN0Tm9kZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRl
c3ROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBjb3B5KHNlbGYp
Ci0gICAgICAgIHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3ROb2RlCi0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJ2LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLQotY2xhc3MgUmVm
VGVzdE5vZGUoUmVmVGVzdEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5
cGUgPSAicmVmdGVzdF9ub2RlIgotCi0KLWNsYXNzIFJlZlRlc3QoUmVmVGVzdEJhc2UpOgotICAg
IF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIKLQogCiBjbGFzcyBN
YW51YWxUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0gKCkKQEAgLTM1MSw3
ICszNDIsNyBAQCBjbGFzcyBXZWJEcml2ZXJTcGVjVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAKICAgICBkZWYgdG9fanNv
bihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBEaWN0W1RleHQsIEFu
eV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3RbVGV4
dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVzdCwgc2VsZikudG9f
anNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCAyYWQ3ZmNjZjQ4Njc1YmRjYzdiNTQ0NzQ3ZTFkMTgy
NGE1OTg1NDJmLi4zNDVlZWI2ZDJiMGJlZWIzY2UzYzEzOTA5NDljYjllMmQxOWE0MzVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKQEAgLTEsMTUgKzEsMjUg
QEAKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGpzb24KIGltcG9ydCBvcwot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIGRlZmF1bHRkaWN0Ci1mcm9t
IHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywgc3RyaW5nX3R5cGVz
LCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCitmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9t
IG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbCwgY3B1X2NvdW50Citmcm9tIHNpeCBpbXBvcnQg
KAorICAgIFBZMywKKyAgICBiaW5hcnlfdHlwZSwKKyAgICBlbnN1cmVfdGV4dCwKKyAgICBpdGVy
aXRlbXMsCisgICAgaXRlcnZhbHVlcywKKyAgICBzdHJpbmdfdHlwZXMsCisgICAgdGV4dF90eXBl
LAorKQogCiBmcm9tIC4gaW1wb3J0IHZjcwotZnJvbSAuaXRlbSBpbXBvcnQgKENvbmZvcm1hbmNl
Q2hlY2tlclRlc3QsIE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVzdCwgUmVmVGVzdE5v
ZGUsCi0gICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKK2Zyb20gLml0ZW0gaW1wb3J0
IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJlZlRl
c3QsIFN1cHBvcnRGaWxlLAorICAgICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKIGZyb20gLmxvZyBpbXBvcnQg
Z2V0X2xvZ2dlcgogZnJvbSAuc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQotZnJvbSAudXRp
bHMgaW1wb3J0IGZyb21fb3NfcGF0aCwgdG9fb3NfcGF0aAorZnJvbSAudHlwZWRhdGEgaW1wb3J0
IFR5cGVEYXRhCiAKIE1ZUFkgPSBGYWxzZQogaWYgTVlQWToKQEAgLTE5LDE2ICsyOSwxNCBAQCBp
ZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWluZXIKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgRGljdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJTwotICAgIGZyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgotICAgIGZy
b20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCiAg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNl
dAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KLSAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAogCiB0cnk6CiAgICAgaW1wb3J0IHVq
c29uCkBAIC0zNiw3ICs0NCw3IEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmYXN0
X2pzb24gPSBqc29uICAjIHR5cGU6IGlnbm9yZQogCi1DVVJSRU5UX1ZFUlNJT04gPSA3CitDVVJS
RU5UX1ZFUlNJT04gPSA4ICAjIHR5cGU6IGludAogCiAKIGNsYXNzIE1hbmlmZXN0RXJyb3IoRXhj
ZXB0aW9uKToKQEAgLTQ5LDcgKzU3LDYgQEAgY2xhc3MgTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2go
TWFuaWZlc3RFcnJvcik6CiAKIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBUZXN0aGFy
bmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBSZWZUZXN0LAotICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogQ3Jhc2hUZXN0LAogICAgICAgICAgICAgICAgICJtYW51YWwiOiBNYW51YWxUZXN0
LAogICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZWJEcml2ZXJTcGVjVGVzdCwKQEAgLTU4LDE1
NiArNjUsMTIgQEAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3RoYXJuZXNzVGVz
dCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IFN1cHBvcnRGaWxlfSAgIyB0eXBlOiBEaWN0
W3N0ciwgVHlwZVtNYW5pZmVzdEl0ZW1dXQogCiAKLWlmIE1ZUFk6Ci0gICAgVHlwZURhdGFUeXBl
ID0gTXV0YWJsZU1hcHBpbmdbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi1lbHNlOgotICAgIFR5
cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCi0KLWNsYXNzIFR5cGVEYXRhKFR5cGVEYXRhVHlw
ZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmlmZXN0LCB0eXBlX2Nscyk6Ci0gICAgICAg
ICMgdHlwZTogKE1hbmlmZXN0LCBUeXBlW01hbmlmZXN0SXRlbV0pIC0+IE5vbmUKLSAgICAgICAg
IiIiRGljdC1saWtlIG9iamVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVz
dCB0eXBlLgotCi0gICAgICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2gg
dGVzdCBpcyB1bm5lY2Vzc2FyaWx5Ci0gICAgICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dz
IGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAotICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZl
c3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSByYXcganNvbgotICAgICAgICBjb3JyZXNwb25kaW5n
IHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCi0gICAgICAgIHN1YmNs
YXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJlbWFpbgotICAgICAg
ICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFu
IEl0ZW0KLSAgICAgICAgZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVt
cyB3aGVuIGl0ZXJhdGluZwotICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIKLSAgICAgICAgc2Vs
Zi5tYW5pZmVzdCA9IG1hbmlmZXN0Ci0gICAgICAgIHNlbGYudHlwZV9jbHMgPSB0eXBlX2Nscwot
ICAgICAgICBzZWxmLmpzb25fZGF0YSA9IHt9ICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwg
TGlzdFtBbnldXV0KLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtzdHJdCi0gICAgICAgIHNlbGYuZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0
W01hbmlmZXN0SXRlbV1dCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAg
ICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W01hbmlmZXN0SXRlbV0KLSAgICAgICAgaWYga2V5IG5v
dCBpbiBzZWxmLmRhdGEgYW5kIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5sb2FkKGtleSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtrZXldCi0KLSAgICBk
ZWYgX19ub256ZXJvX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLmRhdGEpIG9yIGJvb2woc2VsZi5qc29uX2RhdGEpCi0KLSAgICBk
ZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKLSAgICAgICAgcnYg
PSBsZW4oc2VsZi5kYXRhKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJ2ICs9IGxlbihzZWxmLmpzb25fZGF0YSkKLSAgICAgICAgcmV0dXJuIHJ2
Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4
dCkgLT4gTm9uZQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgZGVs
IHNlbGYuZGF0YVtrZXldCi0gICAgICAgIGVsaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbZnJvbV9vc19wYXRoKGtleSldCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcgotCi0gICAgZGVmIF9fc2V0aXRl
bV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBTZXRbTWFuaWZl
c3RJdGVtXSkgLT4gTm9uZQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAgICAgICAgaWYgcGF0
aCBpbiBzZWxmLmpzb25fZGF0YToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFb
cGF0aF0KLSAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQotCi0gICAgZGVmIF9fY29udGFp
bnNfXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJvb2wKLSAgICAgICAg
c2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5kYXRhCi0KLSAgICBk
ZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gSXRlcmF0b3JbVGV4dF0K
LSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEuX19pdGVy
X18oKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbU2V0W01hbmlmZXN0SXRlbV1dCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAg
ICAgICByZXR1cm4gaXRlcnZhbHVlcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYgaXRlcml0ZW1zKHNl
bGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1RleHQsIFNldFtNYW5p
ZmVzdEl0ZW1dXV0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAgICAgICAgIyB0eXBl
OiAoKSAtPiBMaXN0W1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICByZXR1cm4gbGlzdChzZWxm
Lml0ZXJ2YWx1ZXMoKSkKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBMaXN0W1R1cGxlW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAgICAgICAgcmV0dXJu
IGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKLQotICAgIGRlZiBsb2FkKHNlbGYsIGtleSk6Ci0gICAg
ICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBhIHNwZWNpZmljIEl0
ZW0gZ2l2ZW4gYSBwYXRoIiIiCi0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZGF0YSA9IHNldCgpCi0gICAgICAgICAgICBwYXRoID0gZnJvbV9vc19w
YXRoKGtleSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRo
LCBbXSk6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlwZV9jbHMuZnJv
bV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAgICAgICAgZGF0YS5h
ZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwg
c2VsZi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGRhdGEKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLQotICAgIGRlZiBsb2FkX2Fs
bChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCi0gICAgICAgICIiIkxvYWQgYWxs
IHRlc3QgaXRlbXMgaW4gdGhpcyBjbGFzcyIiIgotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBwYXRoLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5qc29uX2RhdGEpOgotICAgICAgICAgICAgICAgIGtleSA9IHRvX29zX3BhdGgocGF0aCkKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAgICAgICAgICAgIGZv
ciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRoLCBbXSk6Ci0gICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xzLmZyb21fanNvbihzZWxmLm1hbmlmZXN0
LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVt
KQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAgICAgICAgICAgc2Vs
Zi5qc29uX2RhdGEgPSBOb25lCi0KLSAgICBkZWYgc2V0X2pzb24oc2VsZiwgdGVzdHNfcm9vdCwg
ZGF0YSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldKSAtPiBOb25lCi0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiR290IGEgJXMgZXhwZWN0ZWQgYSBkaWN0IiAlICh0eXBlKGRhdGEpKSkKLSAg
ICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAotICAgICAgICBzZWxmLmpzb25fZGF0
YSA9IGRhdGEKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgQW55XQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgZnJvbV9vc19w
YXRoKHBhdGgpOgotICAgICAgICAgICAgW3QgZm9yIHQgaW4gc29ydGVkKHRlc3QudG9fanNvbigp
IGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICAj
IGF2b2lkIGNvcHlpbmcgaWYgdGhlcmUncyBub3RoaW5nIGhlcmUgeWV0Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuanNvbl9kYXRhCi0gICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLmpz
b25fZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHBhdGhzKHNlbGYpOgot
ICAgICAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0XQotICAgICAgICAiIiJHZXQgYSBsaXN0IG9m
IGFsbCBwYXRocyBjb250YWluaW5nIGl0ZW1zIG9mIHRoaXMgdHlwZSwKLSAgICAgICAgd2l0aG91
dCBhY3R1YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgotICAgICAgICBydiA9IHNl
dChpdGVya2V5cyhzZWxmLmRhdGEpKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YToKLSAgICAg
ICAgICAgIHJ2IHw9IHt0b19vc19wYXRoKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYu
anNvbl9kYXRhKX0KLSAgICAgICAgcmV0dXJuIHJ2Ci0KK2RlZiBjb21wdXRlX21hbmlmZXN0X2l0
ZW1zKHNvdXJjZV9maWxlKToKKyAgICAjIHR5cGU6IChTb3VyY2VGaWxlKSAtPiBUdXBsZVtUdXBs
ZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF0KKyAgICByZWxfcGF0
aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgbmV3X3R5cGUsIG1hbmlm
ZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQorICAgIGZpbGVfaGFzaCA9
IHNvdXJjZV9maWxlLmhhc2gKKyAgICByZXR1cm4gcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBz
ZXQobWFuaWZlc3RfaXRlbXMpLCBmaWxlX2hhc2gKIAogaWYgTVlQWToKICAgICBNYW5pZmVzdERh
dGFUeXBlID0gRGljdFtBbnksIFR5cGVEYXRhXQpAQCAtMjM3LDE3ICsxMDAsMjUgQEAgY2xhc3Mg
TWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0YVR5cGUpOgogICAgICAgICB3aXRob3V0IGFjdHVhbGx5
IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlw
ZTogU2V0W1RleHRdCiAgICAgICAgIGZvciBpdGVtX2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToK
LSAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0aHMoKSkKKyAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydi5hZGQob3MucGF0aC5zZXAu
am9pbihpdGVtKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgdHlwZV9ieV9wYXRoKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVHVwbGVbVGV4dCwgLi4uXSwgc3RyXQor
ICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBpdGVtX3R5cGUsIGl0ZW1fZGF0YSBpbiBpdGVy
aXRlbXMoc2VsZik6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtX2RhdGE6CisgICAgICAg
ICAgICAgICAgcnZbaXRlbV0gPSBpdGVtX3R5cGUKKyAgICAgICAgcmV0dXJuIHJ2CisKKwogCiBj
bGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290
PU5vbmUsIHVybF9iYXNlPSIvIik6CiAgICAgICAgICMgdHlwZTogKE9wdGlvbmFsW3N0cl0sIFRl
eHQpIC0+IE5vbmUKICAgICAgICAgYXNzZXJ0IHVybF9iYXNlIGlzIG5vdCBOb25lCi0gICAgICAg
IHNlbGYuX3BhdGhfaGFzaCA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4
dF1dCiAgICAgICAgIHNlbGYuX2RhdGEgPSBNYW5pZmVzdERhdGEoc2VsZikgICMgdHlwZTogTWFu
aWZlc3REYXRhCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gTm9uZSAgIyB0
eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV1dCiAg
ICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UgICMgdHlwZTogVGV4dAogCkBAIC0y
NTgsNDcgKzEyOSwzNCBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBpdGVydHlw
ZXMoc2VsZiwgKnR5cGVzKToKICAgICAgICAgIyB0eXBlOiAoKnN0cikgLT4gSXRlcmF0b3JbVHVw
bGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCiAgICAgICAgIGZvciBpdGVtX3R5cGUg
aW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMoKSkpOgotICAgICAgICAgICAgZm9y
IHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBlXSk6CisgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLl9kYXRhW2l0ZW1fdHlwZV06CisgICAgICAgICAgICAgICAgc3RyX3BhdGgg
PSBvcy5zZXAuam9pbihwYXRoKQogICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZGF0YVtp
dGVtX3R5cGVdW3BhdGhdCi0gICAgICAgICAgICAgICAgeWllbGQgaXRlbV90eXBlLCBwYXRoLCB0
ZXN0cworICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgc3RyX3BhdGgsIHRlc3RzCiAK
ICAgICBkZWYgaXRlcnBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+
IEl0ZXJhdG9yW01hbmlmZXN0SXRlbV0KKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFi
bGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0
aC5zZXApKQorCiAgICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6
Ci0gICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQocGF0aCwgc2V0KCkpCisgICAgICAgICAg
ICBpID0gdHlwZV90ZXN0cy5nZXQodHBhdGgsIHNldCgpKQogICAgICAgICAgICAgYXNzZXJ0IGkg
aXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciB0ZXN0IGluIGk6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdAogCiAgICAgZGVmIGl0ZXJkaXIoc2VsZiwgZGlyX25hbWUpOgotICAgICAgICAj
IHR5cGU6IChUZXh0KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCi0gICAgICAgIGlmIG5vdCBk
aXJfbmFtZS5lbmRzd2l0aChvcy5wYXRoLnNlcCk6Ci0gICAgICAgICAgICBkaXJfbmFtZSA9IGRp
cl9uYW1lICsgb3MucGF0aC5zZXAKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFibGVb
TWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKGRpcl9uYW1lLnNwbGl0KG9zLnBh
dGguc2VwKSkKKyAgICAgICAgdHBhdGhfbGVuID0gbGVuKHRwYXRoKQorCiAgICAgICAgIGZvciB0
eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcGF0aCwg
dGVzdHMgaW4gdHlwZV90ZXN0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBwYXRo
LnN0YXJ0c3dpdGgoZGlyX25hbWUpOgorICAgICAgICAgICAgZm9yIHBhdGgsIHRlc3RzIGluIGl0
ZXJpdGVtcyh0eXBlX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoWzp0cGF0aF9sZW5d
ID09IHRwYXRoOgogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBy
ZWZ0ZXN0X25vZGVzX2J5X3VybChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1Rl
eHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV0KLSAgICAgICAgaWYgc2VsZi5fcmVmdGVz
dF9ub2Rlc19ieV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIGJ5X3VybCA9IHt9Ci0gICAgICAg
ICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9k
YXRhWyJyZWZ0ZXN0Il0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0pKToKLSAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKLSAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0gYnlfdXJsCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5
X3VybAotCi0gICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKLSAgICAgICAgIyB0eXBl
OiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQotICAgICAgICByZXR1cm4gc2VsZi5y
ZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVl
KToKLSAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNlRmlsZSwgYnl0
ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHRyZWUsIHBhcmFsbGVs
PVRydWUpOgorICAgICAgICAjIHR5cGU6IChJdGVyYWJsZVtUdXBsZVtVbmlvbltTb3VyY2VGaWxl
LCBieXRlc10sIGJvb2xdXSwgYm9vbCkgLT4gYm9vbAogICAgICAgICAiIiJVcGRhdGUgdGhlIG1h
bmlmZXN0IGdpdmVuIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIHRoYXQgbWFrZSB1cCB0aGUgdXBkYXRl
ZCBtYW5pZmVzdC4KIAogICAgICAgICBUaGUgaXRlcmFibGUgbXVzdCBlaXRoZXIgZ2VuZXJhdGUg
dHVwbGVzIG9mIHRoZSBmb3JtIChTb3VyY2VGaWxlLCBUcnVlKSBmb3IgcGF0aHMKQEAgLTMwNiwx
NzAgKzE2NCwxMjcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAgICAgdW51c3VhbCBB
UEkgaXMgZGVzaWduZWQgYXMgYW4gb3B0aW1pc3RhaW9uIG1lYW5pbmcgdGhhdCBTb3VyY2VGaWxl
IGl0ZW1zIG5lZWQgbm90IGJlCiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFy
ZSBub3QgdXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAg
ICAgICAgIHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVz
IGZyb20gdGhlIG1hbmlmZXN0LiIiIgotICAgICAgICBhbGxfcmVmdGVzdF9ub2RlcyA9IFtdICAj
IHR5cGU6IExpc3RbVHVwbGVbTWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAgICAgc2Vlbl9maWxl
cyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgICAgIGNoYW5nZWQgPSBGYWxzZQot
ICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2Fs
IHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCiAgICAg
ICAgICMgYXR0cmlidXRlIGFjY2VzcyBpbiB0aGUgaG90IGxvb3AgYmVsb3cKLSAgICAgICAgcGF0
aF9oYXNoID0gc2VsZi5fcGF0aF9oYXNoICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwg
VGV4dF1dCiAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhCiAKLSAgICAgICAgcHJldl9maWxlcyA9
IGRhdGEucGF0aHMoKSAgIyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgdHlwZXMgPSBkYXRhLnR5
cGVfYnlfcGF0aCgpCisgICAgICAgIGRlbGV0ZWQgPSBzZXQodHlwZXMpCiAKLSAgICAgICAgcmVm
dGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorICAgICAgICB0b191cGRh
dGUgPSBbXQogCi0gICAgICAgIGZvciBzb3VyY2VfZmlsZSwgdXBkYXRlIGluIHRyZWU6CisgICAg
ICAgIGZvciBzb3VyY2VfZmlsZV9vcl9wYXRoLCB1cGRhdGUgaW4gdHJlZToKICAgICAgICAgICAg
IGlmIG5vdCB1cGRhdGU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNl
X2ZpbGUsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlICAjIHR5cGU6IFRleHQKLSAgICAgICAgICAgICAgICBzZWVuX2ZpbGVz
LmFkZChyZWxfcGF0aCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVsX3BhdGggaW4gcGF0aF9o
YXNoCi0gICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9w
YXRoXSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBUZXh0XQotICAgICAgICAgICAgICAgIGlmIG9sZF90
eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW1z
ID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdICAjIHR5cGU6IEl0ZXJhYmxlW01hbmlmZXN0SXRl
bV0KLSAgICAgICAgICAgICAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMuZXh0ZW5kKChpdGVtLCBv
bGRfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5
cGUpKQorICAgICAgICAgICAgICAgIHBhdGggPSBlbnN1cmVfdGV4dChzb3VyY2VfZmlsZV9vcl9w
YXRoKQorICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHR1cGxlKHBhdGguc3BsaXQob3Mu
cGF0aC5zZXApKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5v
dCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCBieXRlcykKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlLnJlbF9wYXRoCi0gICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQo
cmVsX3BhdGgpCi0KLSAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNo
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc291
cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKQorICAgICAgICAgICAg
ICAgIHNvdXJjZV9maWxlID0gc291cmNlX2ZpbGVfb3JfcGF0aAorICAgICAgICAgICAgICAgIHJl
bF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3BhdGhfcGFydHMKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZWxfcGF0aF9wYXJ0cywgdHVwbGUpCiAKLSAgICAgICAgICAg
ICAgICBpc19uZXcgPSByZWxfcGF0aCBub3QgaW4gcGF0aF9oYXNoICAjIHR5cGU6IGJvb2wKKyAg
ICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aF9wYXJ0cyBub3QgaW4gZGVsZXRlZCAgIyB0
eXBlOiBib29sCiAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gRmFsc2UgICMgdHlwZTog
Ym9vbAogCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAgICAgICAgICAgICAg
ICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkLnJlbW92ZShyZWxfcGF0aF9wYXJ0cykKKyAgICAgICAgICAgICAgICAg
ICAgb2xkX3R5cGUgPSB0eXBlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAgICAgICAgICAgICAg
b2xkX2hhc2ggPSBkYXRhW29sZF90eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFydHNdCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMgdHlwZTogVGV4dAog
ICAgICAgICAgICAgICAgICAgICBpZiBvbGRfaGFzaCAhPSBmaWxlX2hhc2g6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2NoYW5nZWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSAhPSBvbGRfdHlwZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAg
ICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3R5cGUg
PSBvbGRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVz
dF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtcyA9IGRh
dGFbb2xkX3R5cGVdW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0
X2l0ZW1zKCkKLQotICAgICAgICAgICAgICAgIGlmIG5ld190eXBlIGluIHJlZnRlc3RfdHlwZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRlbSwgZmls
ZV9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVzdF9pdGVtcykKLSAgICAgICAgICAgICAgICAgICAg
aWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRl
c3RfY2hhbmdlcyA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzX25ldyBvciBoYXNoX2No
YW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3JlbF9wYXRoXSA9IHNl
dChtYW5pZmVzdF9pdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW29sZF90
eXBlXVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICAgICAgICAgIGlmIGlzX25ldyBvciBoYXNo
X2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfaGFzaFtyZWxfcGF0aF0gPSAoZmls
ZV9oYXNoLCBuZXdfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKKyAg
ICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLmFwcGVuZChzb3VyY2VfZmlsZSkKKworICAgICAg
ICBpZiB0b191cGRhdGU6CisgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQorCisgICAgICAgIGlm
IHBhcmFsbGVsIGFuZCBsZW4odG9fdXBkYXRlKSA+IDI1IGFuZCBjcHVfY291bnQoKSA+IDE6Cisg
ICAgICAgICAgICAjIDI1IGRlcml2ZWQgZXhwZXJpbWVudGFsbHkgKDIwMjAtMDEpIHRvIGJlIGFw
cHJveGltYXRlbHkKKyAgICAgICAgICAgICMgdGhlIHBvaW50IGF0IHdoaWNoIGl0IGlzIHF1aWNr
ZXIgdG8gY3JlYXRlIFBvb2wgYW5kCisgICAgICAgICAgICAjIHBhcmFsbGVsaXplIHRoaXMKKyAg
ICAgICAgICAgIHBvb2wgPSBQb29sKCkKKworICAgICAgICAgICAgIyBjaHVua3NpemUgc2V0ID4g
MSB3aGVuIG1vcmUgdGhhbiAxMDAwMCB0ZXN0cywgYmVjYXVzZQorICAgICAgICAgICAgIyBjaHVu
a2luZyBpcyBhIG5ldC1nYWluIG9uY2Ugd2UgZ2V0IHRvIHZlcnkgbGFyZ2UgbnVtYmVycworICAg
ICAgICAgICAgIyBvZiBpdGVtcyAoYWdhaW4sIGV4cGVyaW1lbnRhbGx5LCAyMDIwLTAxKQorICAg
ICAgICAgICAgcmVzdWx0cyA9IHBvb2wuaW1hcF91bm9yZGVyZWQoY29tcHV0ZV9tYW5pZmVzdF9p
dGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3VwZGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rc2l6ZT1t
YXgoMSwgbGVuKHRvX3VwZGF0ZSkgLy8gMTAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApICAjIHR5cGU6IEl0ZXJhdG9yW1R1cGxlW1R1cGxlW1RleHQsIC4u
Ll0sIFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dLCBUZXh0XV0KKyAgICAgICAgZWxpZiBQWTM6Cisg
ICAgICAgICAgICByZXN1bHRzID0gbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsIHRvX3VwZGF0
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBpdGVydG9vbHMuaW1hcChj
b21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCisKKyAgICAgICAgZm9yIHJlc3VsdCBp
biByZXN1bHRzOgorICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVz
dF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0CisgICAgICAgICAgICBkYXRhW25ld190eXBlXVty
ZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9pdGVtcworICAgICAgICAgICAgZGF0YVtuZXdfdHlw
ZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9IGZpbGVfaGFzaAogCi0gICAgICAgIGRlbGV0ZWQg
PSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcwogICAgICAgICBpZiBkZWxldGVkOgogICAgICAgICAg
ICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgIGZvciByZWxfcGF0aCBpbiBkZWxldGVkOgot
ICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKLSAgICAgICAgICAgICAg
ICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGRlbCBwYXRoX2hh
c2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gaXRlcnZh
bHVlcyhkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHRlc3Rf
ZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRo
XQotCi0gICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKLSAgICAgICAgICAgIHJlZnRlc3RzLCBy
ZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVfcmVmdGVzdHMoYWxs
X3JlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBkYXRhWyJyZWZ0ZXN0
Il0KLSAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3IgcGF0
aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZ
OgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBjYXN0KFNldFtNYW5p
ZmVzdEl0ZW1dLCBpdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcwotCi0gICAgICAgICAgICByZWZ0ZXN0X25v
ZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCi0gICAgICAgICAgICByZWZ0ZXN0X25vZGVf
ZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2RlX2l0ZW1zIGluIGl0
ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZOgotICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gY2FzdChTZXRbTWFu
aWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9kZV9pdGVtcwotCi0g
ICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVzKQorICAgICAgICAgICAg
Zm9yIHJlbF9wYXRoX3BhcnRzIGluIGRlbGV0ZWQ6CisgICAgICAgICAgICAgICAgZm9yIHRlc3Rf
ZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0
aF9wYXJ0cyBpbiB0ZXN0X2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9k
YXRhW3JlbF9wYXRoX3BhcnRzXQogCiAgICAgICAgIHJldHVybiBjaGFuZ2VkCiAKLSAgICBkZWYg
X2NvbXB1dGVfcmVmdGVzdHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVz
dF9ub2RlcyAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikgLT4gVHVwbGVbRGlj
dFtUZXh0LCBTZXRbUmVmVGVzdF1dLCBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dLCBEaWN0
W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXV0KLSAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19i
eV91cmwgPSB7fQotICAgICAgICBoYXNfaW5ib3VuZCA9IHNldCgpCi0gICAgICAgIGZvciBpdGVt
LCBfIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgZm9yIHJlZl91cmwsIHJlZl90
eXBlIGluIGl0ZW0ucmVmZXJlbmNlczoKLSAgICAgICAgICAgICAgICBoYXNfaW5ib3VuZC5hZGQo
cmVmX3VybCkKLQotICAgICAgICByZWZ0ZXN0cyA9IGRlZmF1bHRkaWN0KHNldCkgICMgdHlwZTog
RGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dCi0gICAgICAgIHJlZmVyZW5jZXMgPSBkZWZhdWx0ZGlj
dChzZXQpICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0KLSAgICAgICAgY2hh
bmdlZF9oYXNoZXMgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXQot
Ci0gICAgICAgIGZvciBpdGVtLCBmaWxlX2hhc2ggaW4gcmVmdGVzdF9ub2RlczoKLSAgICAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0gICAg
ICAgICAgICBpZiBpdGVtLnVybCBpbiBoYXNfaW5ib3VuZDoKLSAgICAgICAgICAgICAgICAjIFRo
aXMgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3QpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19SZWZUZXN0Tm9kZSgp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9o
YXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3ROb2RlKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5wYXRoXS5hZGQoaXRl
bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0Tm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRvX1JlZlRl
c3QoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZp
bGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0KQotICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0aF0uYWRkKGl0ZW0p
Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRl
c3QpKQotICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxbaXRlbS51cmxdID0g
aXRlbQotCi0gICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywgY2hhbmdlZF9oYXNo
ZXMKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3Rb
VGV4dCwgQW55XQorICAgIGRlZiB0b19qc29uKHNlbGYsIGNhbGxlcl9vd25zX29iaj1UcnVlKToK
KyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgICIiIkR1
bXAgYSBtYW5pZmVzdCBpbnRvIGEgb2JqZWN0IHdoaWNoIGNhbiBiZSBzZXJpYWxpemVkIGFzIEpT
T04KKworICAgICAgICBJZiBjYWxsZXJfb3duc19vYmogaXMgRmFsc2UsIHRoZW4gdGhlIHJldHVy
biB2YWx1ZSByZW1haW5zCisgICAgICAgIG93bmVkIGJ5IHRoZSBtYW5pZmVzdDsgaXQgaXMgX3Zp
dGFsbHkgaW1wb3J0YW50XyB0aGF0IF9ub18KKyAgICAgICAgKGV2ZW4gcmVhZCkgb3BlcmF0aW9u
IGlzIGRvbmUgb24gdGhlIG1hbmlmZXN0LCBhcyBvdGhlcndpc2UKKyAgICAgICAgb2JqZWN0cyB3
aXRoaW4gdGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQgdGhlIHJldHVybiB2YWx1ZSBjYW4KKyAg
ICAgICAgYmUgbXV0YXRlZC4gVGhpcyBlc3NlbnRpYWxseSBtYWtlcyB0aGlzIG1vZGUgdmVyeSBk
YW5nZXJvdXMKKyAgICAgICAgYW5kIG9ubHkgdG8gYmUgdXNlZCB1bmRlciBleHRyZW1lIGNhcmUu
CisKKyAgICAgICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3Rf
dHlwZTogdHlwZV9wYXRocy50b19qc29uKCkKICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5
cGVfcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKICAgICAgICAg
fQorCisgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKKyAgICAgICAgICAgIG91dF9pdGVtcyA9
IGRlZXBjb3B5KG91dF9pdGVtcykKKwogICAgICAgICBydiA9IHsidXJsX2Jhc2UiOiBzZWxmLnVy
bF9iYXNlLAotICAgICAgICAgICAgICAicGF0aHMiOiB7ZnJvbV9vc19wYXRoKGspOiB2IGZvciBr
LCB2IGluIGl0ZXJpdGVtcyhzZWxmLl9wYXRoX2hhc2gpfSwKICAgICAgICAgICAgICAgIml0ZW1z
Ijogb3V0X2l0ZW1zLAogICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJFTlRfVkVSU0lPTn0g
ICMgdHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9u
ZSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250
YWluZXJbVGV4dF1dKSAtPiBNYW5pZmVzdAorICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19y
b290LCBvYmosIHR5cGVzPU5vbmUsIGNhbGxlZV9vd25zX29iaj1GYWxzZSk6CisgICAgICAgICMg
dHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250YWluZXJbVGV4dF1dLCBi
b29sKSAtPiBNYW5pZmVzdAorICAgICAgICAiIiJMb2FkIGEgbWFuaWZlc3QgZnJvbSBhIEpTT04g
b2JqZWN0CisKKyAgICAgICAgVGhpcyBsb2FkcyBhIG1hbmlmZXN0IGZvciBhIGdpdmVuIGxvY2Fs
IHRlc3Rfcm9vdCBwYXRoIGZyb20gYW4KKyAgICAgICAgb2JqZWN0IG9iaiwgcG90ZW50aWFsbHkg
cGFydGlhbGx5IGxvYWRpbmcgaXQgdG8gb25seSBsb2FkIHRoZQorICAgICAgICB0eXBlcyBnaXZl
biBieSB0eXBlcy4KKworICAgICAgICBJZiBjYWxsZWVfb3duc19vYmogaXMgVHJ1ZSwgdGhlbiBv
d25lcnNoaXAgb2Ygb2JqIHRyYW5zZmVycworICAgICAgICB0byB0aGlzIGZ1bmN0aW9uIHdoZW4g
Y2FsbGVkLCBhbmQgdGhlIGNhbGxlciBtdXN0IG5ldmVyIG11dGF0ZQorICAgICAgICB0aGUgb2Jq
IG9yIGFueXRoaW5nIHJlZmVycmVkIHRvIGluIHRoZSBvYmplY3QgZ3JhcGggcm9vdGVkIGF0Cisg
ICAgICAgIG9iai4KKworICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9IG9iai5nZXQoInZl
cnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTjoKICAgICAgICAg
ICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKICAgICAgICAgc2VsZiA9IGNscyh0
ZXN0c19yb290LCB1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikpCi0gICAgICAgIGlm
IG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIikgYW5kIGhhc2F0dHIob2JqLCAicGF0aHMiKToKKyAg
ICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKToKICAgICAgICAgICAgIHJhaXNlIE1h
bmlmZXN0RXJyb3IKIAotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7dG9fb3NfcGF0aChrKTog
diBmb3IgaywgdiBpbiBpdGVyaXRlbXMob2JqWyJwYXRocyJdKX0KLQogICAgICAgICBmb3IgdGVz
dF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0pOgogICAgICAgICAg
ICAgaWYgdGVzdF90eXBlIG5vdCBpbiBpdGVtX2NsYXNzZXM6CiAgICAgICAgICAgICAgICAgcmFp
c2UgTWFuaWZlc3RFcnJvcgpAQCAtNDc3LDcgKzI5MiwxMCBAQCBjbGFzcyBNYW5pZmVzdChvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgdHlwZXMgYW5kIHRlc3RfdHlwZSBub3QgaW4gdHlwZXM6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2VsZi5fZGF0YVt0ZXN0X3R5
cGVdLnNldF9qc29uKHRlc3RzX3Jvb3QsIHR5cGVfcGF0aHMpCisgICAgICAgICAgICBpZiBub3Qg
Y2FsbGVlX293bnNfb2JqOgorICAgICAgICAgICAgICAgIHR5cGVfcGF0aHMgPSBkZWVwY29weSh0
eXBlX3BhdGhzKQorCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24o
dHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC01MTEsMTAgKzMyOSwxMSBA
QCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0ICVzIiAlIG1hbmlm
ZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyYiIp
IGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLm9wZW4obWFuaWZlc3QsICJyIiwgZW5jb2Rpbmc9
InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBydiA9IE1hbmlmZXN0LmZyb21fanNvbih0
ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rf
anNvbi5sb2FkKGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVz
PXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9v
d25zX29iaj1UcnVlKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTIzLDcgKzM0Miw4IEBAIGRl
ZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgIGVsc2U6CiAgICAgICAgIHJ2ID0g
TWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVfb3duc19v
Ymo9VHJ1ZSkKIAogICAgIGlmIGFsbG93X2NhY2hlZDoKICAgICAgICAgX19sb2FkX2NhY2hlW21h
bmlmZXN0X3BhdGhdID0gcnYKQEAgLTU0MCw3ICszNjAsOCBAQCBkZWYgbG9hZF9hbmRfdXBkYXRl
KHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdf
Y29weT1UcnVlLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAgIHR5cGVzPU5vbmUs
ICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KICAgICAgICAgICAgICAgICAgICAg
d3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAotICAgICAgICAgICAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIGFsbG93
X2NhY2hlZD1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVs
PVRydWUgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICApOgogICAgICMgdHlwZTog
KC4uLikgLT4gTWFuaWZlc3QKICAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkKQEAgLTU2OCw3ICsz
ODksNyBAQCBkZWYgbG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAg
ICAgaWYgcmVidWlsZCBvciB1cGRhdGU6CiAgICAgICAgIHRyZWUgPSB2Y3MuZ2V0X3RyZWUodGVz
dHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNhY2hlX3Jvb3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAgICAgICBjaGFuZ2Vk
ID0gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgICAgIGNoYW5nZWQgPSBtYW5pZmVzdC51cGRh
dGUodHJlZSwgcGFyYWxsZWwpCiAgICAgICAgIGlmIHdyaXRlX21hbmlmZXN0IGFuZCBjaGFuZ2Vk
OgogICAgICAgICAgICAgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpCiAgICAgICAgIHRy
ZWUuZHVtcF9jYWNoZXMoKQpAQCAtNTgxLDkgKzQwMiw5IEBAIGRlZiB3cml0ZShtYW5pZmVzdCwg
bWFuaWZlc3RfcGF0aCk6CiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUobWFuaWZlc3Rf
cGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgogICAgICAgICBvcy5t
YWtlZGlycyhkaXJfbmFtZSkKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgIndiIikgYXMg
ZjoKKyAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInciKSBhcyBmOgogICAgICAgICAjIFVz
ZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRy
YWlsaW5nCiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJh
cnkvanNvbi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNv
bigpLCBmLAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxsZXJfb3duc19v
Ymo9VHJ1ZSksIGYsCiAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTEs
IHNlcGFyYXRvcnM9KCcsJywgJzogJykpCiAgICAgICAgIGYud3JpdGUoIlxuIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQppbmRleCBiOWRjYzhmNTM2MzZk
M2RiODBlNDUxOGY3ZDgzODAyN2YwOThhOGQ3Li4yOTlhZDIxMmY3NjgwZTc1MTc1MDU2NjdjNmUw
OWJkNjBlZDBiN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2Vm
aWxlLnB5CkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHJlCiBpbXBvcnQg
b3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIFBZMworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBlbnN1cmVfdGV4dCwgaXRl
cml0ZW1zLCB0ZXh0X3R5cGUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTMzLDcgKzMzLDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogaW1wb3J0IGh0bWw1bGliCiAKIGZyb20gLiBpbXBvcnQgWE1MUGFy
c2VyCi1mcm9tIC5pdGVtIGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBXZWJEcml2
ZXJTcGVjVGVzdCwgUmVmVGVzdE5vZGUsIFRlc3RoYXJuZXNzVGVzdCwKK2Zyb20gLml0ZW0gaW1w
b3J0IChNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBSZWZUZXN0
LCBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIENyYXNo
VGVzdCwgQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgVmlzdWFsVGVzdCkKIGZyb20gLnV0aWxzIGlt
cG9ydCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hlZF9wcm9wZXJ0eQogCkBAIC01Niw5ICs1
Niw5IEBAIGRlZiByZXBsYWNlX2VuZChzLCBvbGQsIG5ldyk6CiAKIAogZGVmIHJlYWRfc2NyaXB0
X21ldGFkYXRhKGYsIHJlZ2V4cCk6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8sIFBhdHRlcm5bYnl0
ZXNdKSAtPiBJdGVyYWJsZVtUdXBsZVtieXRlcywgYnl0ZXNdXQorICAgICMgdHlwZTogKEJpbmFy
eUlPLCBQYXR0ZXJuW2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbVGV4dCwgVGV4dF1dCiAgICAg
IiIiCi0gICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0cmluZ3MpIGZyb20g
dGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAorICAgIFlpZWxkcyBhbnkgbWV0YWRhdGEgKHBhaXJz
IG9mIHN0cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAogICAgIGFzIHNwZWNp
ZmllZCBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCiAKICAgICBgcmVnZXhwYCAtIFJl
Z2V4cCBjb250YWluaW5nIHR3byBncm91cHMgY29udGFpbmluZyB0aGUgbWV0YWRhdGEgbmFtZSBh
bmQKQEAgLTcwLDI3ICs3MCwyNSBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhw
KToKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHlpZWxk
IChtLmdyb3VwcygpWzBdLCBtLmdyb3VwcygpWzFdKQorICAgICAgICB5aWVsZCAobS5ncm91cHMo
KVswXS5kZWNvZGUoInV0ZjgiKSwgbS5ncm91cHMoKVsxXS5kZWNvZGUoInV0ZjgiKSkKIAogCiBf
YW55X3ZhcmlhbnRzID0gewotICAgIGIiZGVmYXVsdCI6IHsibG9uZ2hhbmQiOiB7YiJ3aW5kb3ci
LCBiImRlZGljYXRlZHdvcmtlciJ9fSwKLSAgICBiIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnku
aHRtbCJ9LAotICAgIGIic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKLSAg
ICBiInNoYXJlZHdvcmtlciI6IHt9LAotICAgIGIiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgi
OiAiLmFueS53b3JrZXIuaHRtbCJ9LAotICAgIGIid29ya2VyIjogeyJsb25naGFuZCI6IHtiImRl
ZGljYXRlZHdvcmtlciIsIGIic2hhcmVkd29ya2VyIiwgYiJzZXJ2aWNld29ya2VyIn19LAotICAg
IGIianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKLX0gICMgdHlwZTogRGljdFtieXRl
cywgRGljdFtzdHIsIEFueV1dCisgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAorICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzaGFy
ZWR3b3JrZXIiOiB7fSwKKyAgICAiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53
b3JrZXIuaHRtbCJ9LAorICAgICJ3b3JrZXIiOiB7ImxvbmdoYW5kIjogeyJkZWRpY2F0ZWR3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIifX0sCisgICAgImpzc2hlbGwiOiB7
InN1ZmZpeCI6ICIuYW55LmpzIn0sCit9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGljdFtUZXh0LCBB
bnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgotICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIi
Ci0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkg
dGhlIGdpdmVuIGtleXdvcmQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5n
cykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCBiaW5hcnlfdHlwZSksIGl0ZW0KLSAgICBhc3NlcnQgbm90IGl0ZW0uc3Rh
cnRzd2l0aChiIiEiKSwgaXRlbQorICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlw
ZSksIGl0ZW0KIAogICAgIHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzLmdldChpdGVtLCBOb25lKQog
ICAgIGlmIHZhcmlhbnQgaXMgTm9uZToKQEAgLTEwMCw0OCArOTgsNDYgQEAgZGVmIGdldF9hbnlf
dmFyaWFudHMoaXRlbSk6CiAKIAogZGVmIGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpOgotICAg
ICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCiAg
ICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIHRoYXQg
d2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAo
c3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KICAgICAiIiIKLSAgICByZXR1
cm4gc2V0KF9hbnlfdmFyaWFudHNbYiJkZWZhdWx0Il1bImxvbmdoYW5kIl0pCisgICAgcmV0dXJu
IHNldCh7IndpbmRvdyIsICJkZWRpY2F0ZWR3b3JrZXIifSkKIAogCiBkZWYgcGFyc2VfdmFyaWFu
dHModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBl
OiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJp
YW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgYSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCisg
ICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5ncykgZGVmaW5lZCBieSBhIGNvbW1h
LXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwg
YmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5
cGUpLCB2YWx1ZQogCi0gICAgZ2xvYmFscyA9IGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpCisg
ICAgaWYgdmFsdWUgPT0gIiI6CisgICAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFu
dHMoKQogCi0gICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIik6CisgICAgZ2xvYmFscyA9
IHNldCgpCisgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoIiwiKToKICAgICAgICAgaXRlbSA9
IGl0ZW0uc3RyaXAoKQotICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoYiIhIik6Ci0gICAgICAg
ICAgICBnbG9iYWxzIC09IGdldF9hbnlfdmFyaWFudHMoaXRlbVsxOl0pCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKLQorICAgICAg
ICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKICAgICByZXR1cm4gZ2xvYmFscwog
CiAKIGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBT
ZXRbVHVwbGVbYnl0ZXMsIGJvb2xdXQorICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtUdXBsZVtU
ZXh0LCBib29sXV0KICAgICAiIiIKICAgICBZaWVsZHMgdHVwbGVzIG9mIHRoZSByZWxldmFudCBm
aWxlbmFtZSBzdWZmaXggKGEgc3RyaW5nKSBhbmQgd2hldGhlciB0aGUKICAgICB2YXJpYW50IGlz
IGludGVuZGVkIHRvIHJ1biBpbiBhIEpTIHNoZWxsLCBmb3IgdGhlIHZhcmlhbnRzIGRlZmluZWQg
YnkgdGhlCiAgICAgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAgIGFz
c2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlz
aW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKICAg
ICBnbG9iYWxfdHlwZXMgPSBwYXJzZV92YXJpYW50cyh2YWx1ZSkKICAgICBmb3IgZ2xvYmFsX3R5
cGUgaW4gZ2xvYmFsX3R5cGVzOgogICAgICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50c1tnbG9i
YWxfdHlwZV0KLSAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZpeCIsICIuYW55LiVz
Lmh0bWwiICUgZ2xvYmFsX3R5cGUuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICBydi5hZGQoKHN1
ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gYiJqc3NoZWxsIikpCisgICAgICAgIHN1ZmZpeCA9IHZhcmlh
bnQuZ2V0KCJzdWZmaXgiLCAiLmFueS4lcy5odG1sIiAlIGdsb2JhbF90eXBlKQorICAgICAgICBy
di5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gImpzc2hlbGwiKSkKIAogICAgIHJldHVybiBy
dgogCkBAIC0xNTYsNiArMTUyLDggQEAgZGVmIGdsb2JhbF92YXJpYW50X3VybCh1cmwsIHN1ZmZp
eCk6CiAgICAgIyB0aGUgZm9ybSAuaHR0cHMuYW55LmpzCiAgICAgaWYgIi5odHRwcy4iIGluIHVy
bCBhbmQgc3VmZml4LnN0YXJ0c3dpdGgoIi5odHRwcy4iKToKICAgICAgICAgdXJsID0gdXJsLnJl
cGxhY2UoIi5odHRwcy4iLCAiLiIpCisgICAgZWxpZiAiLmgyLiIgaW4gdXJsIGFuZCBzdWZmaXgu
c3RhcnRzd2l0aCgiLmgyLiIpOgorICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgiLmgyLiIsICIu
IikKICAgICByZXR1cm4gcmVwbGFjZV9lbmQodXJsLCAiLmpzIiwgc3VmZml4KQogCiAKQEAgLTE5
MiwyNCArMTkwLDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMgdHlwZTogU2V0W1R1cGxlW2J5dGVzLCAuLi5d
XQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFz
ZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToKLSAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBB
bnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoX3N0ciwgdXJsX2Jhc2Us
IGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKEFueVN0ciwgQW55
U3RyLCBUZXh0LCBPcHRpb25hbFtUZXh0XSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCiAgICAg
ICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291cmNlIHRyZWUuCiAKICAg
ICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlCi0gICAgICAgIDpwYXJhbSByZWxfcGF0aDogRmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRlc3Rz
X3Jvb3QKKyAgICAgICAgOnBhcmFtIHJlbF9wYXRoX3N0cjogRmlsZSBwYXRoIHJlbGF0aXZlIHRv
IHRlc3RzX3Jvb3QKICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIFVSTCB1c2VkIHdoZW4g
Y29udmVydGluZyBmaWxlIHBhdGhzIHRvIHVybHMKICAgICAgICAgOnBhcmFtIGNvbnRlbnRzOiBC
eXRlIGFycmF5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBgYE5vbmVgYC4KICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcmVsX3BhdGggPSBlbnN1cmVfdGV4dChyZWxfcGF0aF9zdHIpCiAg
ICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5pc2FicyhyZWxfcGF0aCksIHJlbF9wYXRoCi0KICAg
ICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgIyBkbyBzbGFzaCBub3JtYWxp
emF0aW9uIG9uIFdpbmRvd3MKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVsX3BhdGgsIGJp
bmFyeV90eXBlKToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHJlbF9wYXRoLnJlcGxhY2Uo
YiIvIiwgYiJcXCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlbF9wYXRo
ID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKKyAgICAgICAgICAgIHJlbF9wYXRoID0g
cmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAogICAgICAgICBkaXJfcGF0aCwgZmlsZW5h
bWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQogICAgICAgICBuYW1lLCBleHQgPSBvcy5wYXRo
LnNwbGl0ZXh0KGZpbGVuYW1lKQpAQCAtMjIwLDEzICsyMTUsMTMgQEAgY2xhc3MgU291cmNlRmls
ZShvYmplY3QpOgogCiAgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0KCIuIilbMTpdCiAK
LSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdCAgIyB0eXBlOiBVbmlvbltieXRl
cywgVGV4dF0KLSAgICAgICAgc2VsZi5yZWxfcGF0aCA9IHJlbF9wYXRoICAjIHR5cGU6IFVuaW9u
W2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmRpcl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTog
VW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0
eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBl
OiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVW5p
b25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5
cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0XV0KKyAgICAgICAgc2VsZi50ZXN0c19yb290
ID0gZW5zdXJlX3RleHQodGVzdHNfcm9vdCkgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnJl
bF9wYXRoID0gcmVsX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmRpcl9wYXRoID0g
ZGlyX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUg
ICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5cGU6IFRleHQKKyAg
ICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnR5cGVfZmxh
ZyA9IHR5cGVfZmxhZyAgIyB0eXBlOiBPcHRpb25hbFtUZXh0XQogICAgICAgICBzZWxmLm1ldGFf
ZmxhZ3MgPSBtZXRhX2ZsYWdzICAjIHR5cGU6IFVuaW9uW0xpc3RbYnl0ZXNdLCBMaXN0W1RleHRd
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKICAgICAgICAgc2VsZi5jb250ZW50
cyA9IGNvbnRlbnRzCkBAIC0yNDAsOSArMjM1LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogCiAgICAgICAgIGlmICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHJ2OgogICAgICAgICAg
ICAgY2FjaGVkX3Byb3BlcnRpZXMgPSBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KLSAgICAg
ICAgICAgIGZvciBrZXkgaW4gcnYua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBj
YWNoZWRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHJ2W2tleV0KKyAgICAg
ICAgICAgIHJ2ID0ge2tleTp2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMocnYpIGlm
IGtleSBub3QgaW4gY2FjaGVkX3Byb3BlcnRpZXN9CiAgICAgICAgICAgICBkZWwgcnZbIl9fY2Fj
aGVkX3Byb3BlcnRpZXNfXyJdCiAgICAgICAgIHJldHVybiBydgogCkBAIC0yNzksOSArMjcyLDE0
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgIGZpbGVfb2JqID0gb3Bl
bihzZWxmLnBhdGgsICdyYicpCiAgICAgICAgIHJldHVybiBmaWxlX29iagogCisgICAgQGNhY2hl
ZF9wcm9wZXJ0eQorICAgIGRlZiByZWxfcGF0aF9wYXJ0cyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLnJlbF9w
YXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKwogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYg
cGF0aChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBVbmlvbltieXRlcywgVGV4dF0KKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2Vs
Zi50ZXN0c19yb290LCBzZWxmLnJlbF9wYXRoKQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQpAQCAt
Mjk3LDE3ICsyOTUsMTMgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hl
ZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IGJ5
dGVzCisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBpZiBub3Qgc2VsZi5faGFz
aDoKICAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKCkgYXMgZjoKICAgICAgICAgICAgICAgICBj
b250ZW50ID0gZi5yZWFkKCkKIAogICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKChiImJsb2Ig
IiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKLSAgICAgICAgICAgIGhh
c2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5cGU6IHN0cgotICAg
ICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoX3N0ci5l
bmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
aGFzaCA9IGhhc2hfc3RyCisgICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hs
aWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSkKIAogICAgICAgICByZXR1cm4gc2VsZi5faGFzaAog
CkBAIC0zMTYsMTggKzMxMCwxNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
IGlmIHNlbGYuZGlyX3BhdGggPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAg
ICAgIHBhcnRzID0gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgcGFy
dHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCiAKICAgICAgICAgaWYgKHBhcnRzWzBdIGluIHNlbGYu
cm9vdF9kaXJfbm9uX3Rlc3Qgb3IKICAgICAgICAgICAgIGFueShpdGVtIGluIHNlbGYuZGlyX25v
bl90ZXN0IGZvciBpdGVtIGluIHBhcnRzKSBvcgotICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4o
cGF0aCldID09IGxpc3QocGF0aCkgZm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0aF9ub25fdGVzdCkp
OgorICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4ocGF0aCldID09IHBhdGggZm9yIHBhdGggaW4g
c2VsZi5kaXJfcGF0aF9ub25fdGVzdCkpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaW5fY29uZm9ybWFuY2VfY2hlY2tlcl9kaXIoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICByZXR1cm4gKHNlbGYuZGly
X3BhdGggPT0gImNvbmZvcm1hbmNlLWNoZWNrZXJzIiBvcgotICAgICAgICAgICAgICAgIHNlbGYu
ZGlyX3BhdGguc3RhcnRzd2l0aCgiY29uZm9ybWFuY2UtY2hlY2tlcnMiICsgb3MucGF0aC5zZXAp
KQorICAgICAgICByZXR1cm4gc2VsZi5yZWxfcGF0aF9wYXJ0c1swXSA9PSAiY29uZm9ybWFuY2Ut
Y2hlY2tlcnMiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19ub25fdGVzdChzZWxm
KToKQEAgLTMzOSw2ICszMzIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9PSAiTUVUQS55bWwiIG9yCiAgICAgICAgICAgICAgICAg
c2VsZi5maWxlbmFtZS5zdGFydHN3aXRoKCIuIikgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZp
bGVuYW1lLmVuZHN3aXRoKCIuaGVhZGVycyIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi5maWxl
bmFtZS5lbmRzd2l0aCgiLmluaSIpIG9yCiAgICAgICAgICAgICAgICAgc2VsZi5pbl9ub25fdGVz
dF9kaXIoKSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzk0LDEwICszODgsMTAgQEAgY2xhc3MgU291
cmNlRmlsZShvYmplY3QpOgogICAgICAgICBiZSBhIHdlYmRyaXZlciBzcGVjIHRlc3QgZmlsZSIi
IgogICAgICAgICAjIHdkc3BlYyB0ZXN0cyBhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3dlYmRy
aXZlciBleGNsdWRpbmcgX19pbml0X18ucHkKICAgICAgICAgIyBmaWxlcy4KLSAgICAgICAgcmVs
X2Rpcl90cmVlID0gc2VsZi5yZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgICAgICAgcmV0
dXJuICgoKHJlbF9kaXJfdHJlZVswXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVuKHJlbF9kaXJfdHJl
ZSkgPiAxKSBvcgotICAgICAgICAgICAgICAgICAocmVsX2Rpcl90cmVlWzoyXSA9PSBbImluZnJh
c3RydWN0dXJlIiwgIndlYmRyaXZlciJdIGFuZAotICAgICAgICAgICAgICAgICAgbGVuKHJlbF9k
aXJfdHJlZSkgPiAyKSkgYW5kCisgICAgICAgIHJlbF9wYXRoX3BhcnRzID0gc2VsZi5yZWxfcGF0
aF9wYXJ0cworICAgICAgICByZXR1cm4gKCgocmVsX3BhdGhfcGFydHNbMF0gPT0gIndlYmRyaXZl
ciIgYW5kIGxlbihyZWxfcGF0aF9wYXJ0cykgPiAxKSBvcgorICAgICAgICAgICAgICAgICAocmVs
X3BhdGhfcGFydHNbOjJdID09ICgiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJpdmVyIikgYW5kCisg
ICAgICAgICAgICAgICAgICBsZW4ocmVsX3BhdGhfcGFydHMpID4gMikpIGFuZAogICAgICAgICAg
ICAgICAgIHNlbGYuZmlsZW5hbWUgbm90IGluICgiX19pbml0X18ucHkiLCAiY29uZnRlc3QucHki
KSBhbmQKICAgICAgICAgICAgICAgICBmbm1hdGNoKHNlbGYuZmlsZW5hbWUsIHdkX3BhdHRlcm4p
KQogCkBAIC00MTMsNiArNDA3LDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfZmxhZyA9PSAi
Y3Jhc2giIG9yICJjcmFzaHRlc3RzIiBpbiBzZWxmLmRpcl9wYXRoLnNwbGl0KG9zLnBhdGguc2Vw
KQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWVfaXNfdGVudGF0aXZlKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0byBiZSBhCisgICAgICAgIHRl
bnRhdGl2ZSBmaWxlLgorCisgICAgICAgIFNlZSBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5v
cmcvd3JpdGluZy10ZXN0cy9maWxlLW5hbWVzLmh0bWwjdGVzdC1mZWF0dXJlcyIiIgorICAgICAg
ICByZXR1cm4gInRlbnRhdGl2ZSIgaW4gc2VsZi5tZXRhX2ZsYWdzCisKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgbWFya3VwX3R5cGUoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9u
YWxbVGV4dF0KQEAgLTQ2NSw3ICs0NjgsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAK
ICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNjcmlwdF9tZXRhZGF0YShzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW2J5dGVzLCBieXRlc11dXQor
ICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQog
ICAgICAgICBpZiBzZWxmLm5hbWVfaXNfd29ya2VyIG9yIHNlbGYubmFtZV9pc19tdWx0aV9nbG9i
YWwgb3Igc2VsZi5uYW1lX2lzX3dpbmRvdzoKICAgICAgICAgICAgIHJlZ2V4cCA9IGpzX21ldGFf
cmUKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfd2ViZHJpdmVyOgpAQCAtNDgyLDcgKzQ4NSw3
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgIiIiVGhlIHRpbWVvdXQgb2Yg
YSB0ZXN0IG9yIHJlZmVyZW5jZSBmaWxlLiAibG9uZyIgaWYgdGhlIGZpbGUgaGFzIGFuIGV4dGVu
ZGVkIHRpbWVvdXQKICAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UiIiIKICAgICAgICAgaWYgc2Vs
Zi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICBpZiBhbnkobSA9PSAoYiJ0aW1lb3V0Iiwg
YiJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGEpOgorICAgICAgICAgICAgaWYg
YW55KG0gPT0gKCJ0aW1lb3V0IiwgImxvbmciKSBmb3IgbSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0
YSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJsb25nIgogCiAgICAgICAgIGlmIHNlbGYucm9v
dCBpcyBOb25lOgpAQCAtNjQ0LDggKzY0Nyw4IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAg
ICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlLmRl
Y29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBpZiBrZXkgPT0gInZhcmlhbnQiOgorICAg
ICAgICAgICAgICAgICAgICBydi5hcHBlbmQodmFsdWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLnZhcmlhbnRfbm9kZXM6CiAgICAgICAgICAgICAgICAg
aWYgImNvbnRlbnQiIGluIGVsZW1lbnQuYXR0cmliOgpAQCAtNjc3LDYgKzY4MCwzNiBAQCBjbGFz
cyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5
CisgICAgZGVmIHF1aWNfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtF
bGVtZW50VHJlZS5FbGVtZW50XQorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1l
bnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKKyAgICAgICAgc3BlY2lm
eSB3aGV0aGVyIGl0IG5lZWRzIFFVSUMgc2VydmVyLiIiIgorICAgICAgICBhc3NlcnQgc2VsZi5y
b290IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ncXVpYyddIikKKworICAgIEBj
YWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAt
PiBPcHRpb25hbFtib29sXQorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBh
IHRlc3QgcmVxdWlyZXMgUVVJQyBzZXJ2ZXIKKworICAgICAgICBEZXRlcm1pbmVkIGJ5IDxtZXRh
PiBlbGVtZW50cyAoYHF1aWNfbm9kZXMoKWApIGFuZCAiLy8gTUVUQSIgY29tbWVudHMKKyAgICAg
ICAgKGBzY3JpcHRfbWV0YWRhdGEoKWApLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5z
Y3JpcHRfbWV0YWRhdGE6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInF1aWMiLCAidHJ1ZSIp
IGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICBpZiBzZWxmLnF1aWNfbm9kZXM6CisgICAgICAgICAgICBxdWljX3N0
ciA9IHNlbGYucXVpY19ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgImZhbHNlIikgICMg
dHlwZTogVGV4dAorICAgICAgICAgICAgaWYgcXVpY19zdHIubG93ZXIoKSA9PSAidHJ1ZSI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAg
QGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgogICAgICAgICAj
IHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KQEAgLTc4NCw2ICs4MTcsOCBA
QCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuaXRlbXNfY2FjaGU6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCisgICAgICAgIGRyb3BfY2Fj
aGVkID0gInJvb3QiIG5vdCBpbiBzZWxmLl9fZGljdF9fCisKICAgICAgICAgaWYgc2VsZi5uYW1l
X2lzX25vbl90ZXN0OgogICAgICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFsKICAgICAgICAgICAg
ICAgICBTdXBwb3J0RmlsZSgKQEAgLTgzNSwxMSArODcwLDExIEBAIGNsYXNzIFNvdXJjZUZpbGUo
b2JqZWN0KToKICAgICAgICAgICAgICAgICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lz
X211bHRpX2dsb2JhbDoKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAgICAgICAgICAgIGds
b2JhbHMgPSB1IiIKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAg
ICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAi
Z2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCiAKQEAgLTg1MSw2ICs4ODYsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF92YXJpYW50X3VybChzZWxmLnJlbF91
cmwsIHN1ZmZpeCkgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYu
dGltZW91dCwKICAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxsLAorICAgICAgICAg
ICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21l
dGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgIGZvciAoc3VmZml4LCBqc3NoZWxsKSBpbiBzb3J0ZWQoZ2xvYmFsX3N1ZmZpeGVzKGds
b2JhbHMpKQpAQCAtODY3LDYgKzkwMyw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgdGVz
dF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHMKQEAg
LTg4Miw2ICs5MTksNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsICsgdmFy
aWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAg
ICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICBzY3JpcHRf
bWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCkBAIC05MTgsMTkgKzk1
NiwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5x
dWljLAogICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2ZXIsCiAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAg
ICAgICAgICAgICkpCiAKICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6Ci0g
ICAgICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWwotICAgICAgICAgICAgICAg
IFJlZlRlc3ROb2RlKAorICAgICAgICAgICAgcnYgPSBSZWZUZXN0Lml0ZW1fdHlwZSwgWworICAg
ICAgICAgICAgICAgIFJlZlRlc3QoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9v
dCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfdXJsLAogICAg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPXNlbGYucmVmZXJlbmNlcywKICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9
c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXplPXNlbGYudmlld3Bv
cnRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAogICAgICAgICAgICAg
ICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CkBAIC05NTYsNCArOTk2LDExIEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgICAgICBzZWxmLml0ZW1zX2NhY2hlID0gcnYKIAorICAgICAg
ICBpZiBkcm9wX2NhY2hlZCBhbmQgIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIgaW4gc2VsZi5fX2Rp
Y3RfXzoKKyAgICAgICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gc2VsZi5fX2RpY3RfX1siX19j
YWNoZWRfcHJvcGVydGllc19fIl0KKyAgICAgICAgICAgIGZvciBwcm9wIGluIGNhY2hlZF9wcm9w
ZXJ0aWVzOgorICAgICAgICAgICAgICAgIGlmIHByb3AgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAg
ICAgICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bcHJvcF0KKyAgICAgICAgICAgIGRlbCBz
ZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorCiAgICAgICAgIHJldHVybiBy
dgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21h
bmlmZXN0LnB5CmluZGV4IDczM2NhZmRjYmU5ZGM5Y2UwN2NiM2U4NDNiZDk1NmQwMmM2ZmQyZmUu
LmI2MThkNzVlYzFlZDJlOTU1ZTI3Zjc2MzQ0NmMxYjBmYzM5ODdmMWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dGVzdHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKQEAg
LTUsNyArNSw3IEBAIGltcG9ydCBtb2NrCiBpbXBvcnQgaHlwb3RoZXNpcyBhcyBoCiBpbXBvcnQg
aHlwb3RoZXNpcy5zdHJhdGVnaWVzIGFzIGhzCiAKLWltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGlt
cG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLiBpbXBvcnQgbWFuaWZlc3QsIHNvdXJjZWZpbGUsIGl0
ZW0sIHV0aWxzCiAKQEAgLTE4LDcgKzE4LDEwIEBAIGlmIE1ZUFk6CiAKIGRlZiBTb3VyY2VGaWxl
V2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoc3RyLCBz
dHIsIFR5cGVbaXRlbS5NYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmlsZS5Tb3VyY2VG
aWxlCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcmVs
X3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICBzID0gbW9j
ay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxfcGF0aF9wYXJ0cz1y
ZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkKICAgICBpZiBjbHMg
PT0gaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgp
CiAgICAgZWxzZToKQEAgLTI5LDUxICszMiw4MyBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBh
dGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0cyhwYXRo
LCBoYXNoLCBjbHMsIHZhcmlhbnRzKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVt
LlVSTE1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJjZUZpbGUKLSAgICBz
ID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICByZWxfcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIHMgPSBtb2NrLk1vY2socmVs
X3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3Bh
cnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogICAgIHRlc3RzID0gW2NscygiL2Zv
b2JhciIsIHBhdGgsICIvIiwgaXRlbVswXSwgKippdGVtWzFdKSBmb3IgaXRlbSBpbiB2YXJpYW50
c10KICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0
ZW1fdHlwZSwgdGVzdHMpKQogICAgIHJldHVybiBzICAjIHR5cGU6IGlnbm9yZQogCiAKLUBocy5j
b21wb3NpdGUKLWRlZiByZWxfZGlyX2ZpbGVfcGF0aChkcmF3KToKLSAgICBsZW5ndGggPSBkcmF3
KGhzLmludGVnZXJzKG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MjApKQotICAgIGlmIGxlbmd0aCA9
PSAxOgotICAgICAgICByZXR1cm4gImEiCi0gICAgZWxzZToKLSAgICAgICAgcmVtYWluaW5nID0g
bGVuZ3RoIC0gMgotICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGguc2VwCi0gICAgICAg
IG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3NpemU9cmVtYWluaW5n
LCBtYXhfc2l6ZT1yZW1haW5pbmcpKQotICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZSgi
YSIgKyBtaWQgKyAiYSIpCi0KLQogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJjZWZpbGVfc3RyYXRl
Z3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5lc3NUZXN0LCBpdGVt
LlJlZlRlc3ROb2RlLAorICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwg
aXRlbS5SZWZUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLk1hbnVhbFRlc3QsIGl0ZW0u
V2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uQ29uZm9ybWFuY2VD
aGVja2VyVGVzdCwgaXRlbS5TdXBwb3J0RmlsZV0KICAgICBjbHMgPSBkcmF3KGhzLnNhbXBsZWRf
ZnJvbShpdGVtX2NsYXNzZXMpKQogCi0gICAgcGF0aCA9IGRyYXcocmVsX2Rpcl9maWxlX3BhdGgo
KSkKLSAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PSIwMTIzNDU2Nzg5YWJjZGVmIiwg
bWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBh
dGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoID0gdSJhIgorICAgIHJlbF9wYXRoX3BhcnRzID0gdHVw
bGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgaGFzaCA9IGRyYXcoaHMudGV4dChhbHBo
YWJldD11IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQorICAg
IHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRo
X3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogCi0g
ICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdE5vZGU6Ci0gICAgICAgIHJlZl9wYXRoID0gZHJhdyhy
ZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgICAgICBoLmFzc3VtZShwYXRoICE9IHJlZl9wYXRoKQor
ICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3Q6CisgICAgICAgIHJlZl9wYXRoID0gdSJiIgogICAg
ICAgICByZWZfZXEgPSBkcmF3KGhzLnNhbXBsZWRfZnJvbShbIj09IiwgIiE9Il0pKQogICAgICAg
ICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0
aCksIHJlZmVyZW5jZXM9Wyh1dGlscy5mcm9tX29zX3BhdGgocmVmX3BhdGgpLCByZWZfZXEpXSkK
ICAgICBlbGlmIGNscyBpcyBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAgICB0ZXN0ID0gY2xzKCIv
Zm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwg
cGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0aCkpCisgICAgICAgIHRlc3QgPSBjbHMo
Ii9mb29iYXIiLCBwYXRoLCAiLyIsICJmb29iYXIiKQogCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9
IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkpCiAgICAgcmV0
dXJuIHMKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCi0gICAg
ICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCBtYXhfc2l6ZT0xMDAwLCB1bmlxdWVfYnk9bGFtYmRh
IHg6IHgucmVsX3BhdGgpKQorQGhzLmNvbXBvc2l0ZQorZGVmIG1hbmlmZXN0X3RyZWUoZHJhdyk6
CisgICAgbmFtZXMgPSBocy50ZXh0KGFscGhhYmV0PWhzLmNoYXJhY3RlcnMoYmxhY2tsaXN0X2No
YXJhY3RlcnM9dSJcMC9cXDoqXCI/PD58IiksIG1pbl9zaXplPTEpCisgICAgdHJlZSA9IGhzLnJl
Y3Vyc2l2ZShzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCisgICAgICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgY2hpbGRyZW46IGhzLmRpY3Rpb25hcmllcyhuYW1lcywgY2hpbGRyZW4sIG1pbl9zaXpl
PTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlYXZlcz0xMCkKKworICAgIGdlbmVy
YXRlZF9yb290ID0gZHJhdyh0cmVlKQorICAgIGguYXNzdW1lKGlzaW5zdGFuY2UoZ2VuZXJhdGVk
X3Jvb3QsIGRpY3QpKQorCisgICAgcmVmdGVzdF91cmxzID0gW10KKyAgICBvdXRwdXQgPSBbXQor
ICAgIHN0YWNrID0gWygoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZ2VuZXJhdGVkX3Jv
b3QpXQorICAgIHdoaWxlIHN0YWNrOgorICAgICAgICBwYXRoLCBub2RlID0gc3RhY2sucG9wKCkK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgIHN0YWNrLmV4
dGVuZCgocGF0aCArIChrLCksIHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhub2RlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihwYXRoKQor
ICAgICAgICAgICAgbm9kZS5yZWxfcGF0aCA9IHJlbF9wYXRoCisgICAgICAgICAgICBub2RlLnJl
bF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aCkKKyAgICAgICAgICAgIGZvciB0ZXN0X2l0ZW0gaW4g
bm9kZS5tYW5pZmVzdF9pdGVtcy5yZXR1cm5fdmFsdWVbMV06CisgICAgICAgICAgICAgICAgdGVz
dF9pdGVtLnBhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGVz
dF9pdGVtLCBpdGVtLlJlZlRlc3QpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWZ0ZXN0X3Vy
bHM6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzID0gaHMuc2FtcGxlZF9m
cm9tKHJlZnRlc3RfdXJscykgfCBuYW1lcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IG5hbWVzCisgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZSA9IGhzLnR1cGxlcyhocy5zYW1wbGVkX2Zyb20oW3UiPT0iLCB1IiE9
Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVf
dXJscykKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyA9IGhzLmxpc3RzKHJlZmVyZW5j
ZSwgbWluX3NpemU9MSwgdW5pcXVlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRlc3RfaXRl
bS5yZWZlcmVuY2VzID0gZHJhdyhyZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICByZWZ0
ZXN0X3VybHMuYXBwZW5kKHRlc3RfaXRlbS51cmwpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KG5vZGUpCisKKyAgICByZXR1cm4gb3V0cHV0CisKKworQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgp
KQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hl
Y2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRo
VGVzdCgiYSIsICIwIio0MCwgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0KV0pCiBkZWYgdGVz
dF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCkBAIC04
OCwxMCArMTIzLDExIEBAIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6CiAgICAgYXNzZXJ0
IGxvYWRlZC50b19qc29uKCkgPT0ganNvbl9zdHIKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3Vy
Y2VmaWxlX3N0cmF0ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCB1bmlxdWVf
Ynk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgpKQorIyBG
SVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hlY2s9KGgu
SGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgi
YSIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXSkKLUBoLmV4YW1wbGUoW1NvdXJjZUZp
bGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
YWEiLCAiPT0iKV0pXSkKK0BoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0
MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQogZGVmIHRlc3Rf
bWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCkBA
IC0xMDcsMTkxICsxNDMsNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKIGRl
ZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fZm9yd2FyZHNsYXNoKCk6CiAgICAgbSA9IG1hbmlmZXN0
Lk1hbmlmZXN0KCkKIAotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEvYiIsICIwIio0MCwg
aXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzLCBUcnVlKV0p
IGlzIFRydWUKLQotICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAgICAgICdwYXRocyc6
IHsKLSAgICAgICAgICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6
IDcsCi0gICAgICAgICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1zJzogewotICAgICAg
ICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2InOiBbKCdhL2InLCB7
fSldCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotQHB5dGVzdC5tYXJrLnNr
aXBpZihvcy5zZXAgIT0gIlxcIiwgcmVhc29uPSJiYWNrc2xhc2ggcGF0aCIpCi1kZWYgdGVzdF9t
YW5pZmVzdF90b19qc29uX2JhY2tzbGFzaCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgp
Ci0KLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhXFxiIiwgIjAiKjQwLCBpdGVtLlRlc3Ro
YXJuZXNzVGVzdCkKKyAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhIiArIG9zLnBhdGguc2Vw
ICsgImIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQogCiAgICAgYXNzZXJ0IG0udXBk
YXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBhc3NlcnQgbS50b19qc29uKCkgPT0gewot
ICAgICAgICAncGF0aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgfSwKLSAg
ICAgICAgJ3ZlcnNpb24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICdp
dGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAn
YS9iJzogWygnYS9iJywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0K
LWRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKLSAgICBqc29uX29iaiA9
IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2FcXGInOiAoJzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9
LAotICAgICAgICAndmVyc2lvbic6IDcsCisgICAgICAgICd2ZXJzaW9uJzogOCwKICAgICAgICAg
J3VybF9iYXNlJzogJy8nLAogICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhh
cm5lc3MnOiB7Ci0gICAgICAgICAgICAgICAgJ2FcXGInOiBbWydhL2InLCB7fV1dCi0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7J2EnOiB7J2InOiBbCisgICAgICAg
ICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLAorICAg
ICAgICAgICAgICAgIChOb25lLCB7fSkKKyAgICAgICAgICAgIF19fSwKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgbWFuaWZl
c3QuTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwganNvbl9vYmopCiAKIAogZGVmIHRlc3RfcmVmdGVz
dF9jb21wdXRhdGlvbl9jaGFpbigpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
dGVzdDMiLCAiPT0iKV0pCisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAi
KjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQorICAgIHMy
ID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZl
cmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAogICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAo
czIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogICAg
IHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgYXNzZXJ0IGxpc3QobSkg
PT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0K
LQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9hZGQoKToKLSAg
ICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgpfSldCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHRlc3QxID0gczEubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQg
aGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBub2RlCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygi
cmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9yZW1vdmUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9
PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0u
UmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgdGVzdDEg
PSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVt
cygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0
aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRl
c3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5j
aGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIG5vZGUgdG8gYSB0ZXN0Ci0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0g
WygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mi50b19SZWZUZXN0KCl9KV0KLQotCi1kZWYg
dGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV90ZXN0X3R5cGUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QtcmVmIiwg
Ij09IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpXSkgaXMgVHJ1ZQotCi0g
ICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdCht
KSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pXQotCi0g
ICAgIyB0ZXN0IGJlY29tZXMgYSB0ZXN0aGFybmVzcyB0ZXN0IChoYXNoIGNoYW5nZSBiZWNhdXNl
IHRoYXQgaXMgZGV0ZXJtaW5lZAotICAgICMgYmFzZWQgb24gdGhlIGZpbGUgY29udGVudHMpLiBU
aGUgdXBkYXRlZCBtYW5pZmVzdCBzaG91bGQgbm90IGluY2x1ZGVzIHRoZQotICAgICMgb2xkIHJl
ZnRlc3QuCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QiLCAiMSIqNDAsIGl0ZW0u
VGVzdGhhcm5lc3NUZXN0KQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRy
dWUKLQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZSgpOgot
ICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3Qy
IiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCi0KLSAgICBh
c3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0
ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0
X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0
MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICAjdGVzdDIgY2hhbmdl
cyB0byBzdXBwb3J0IHR5cGUKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAi
MSIqNDAsIGl0ZW0uU3VwcG9ydEZpbGUpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1
ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0gICAgdGVzdDMgPSBzMi5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwg
e3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInN1cHBvcnQi
LCB0ZXN0My5wYXRoLCB7dGVzdDN9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9u
X2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZV9wYXJ0aWFsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1h
bmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIg
PSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCBy
ZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMx
LCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3Rf
aXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0g
ICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19S
ZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0
Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIs
ICIxIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0p
Ci0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpLCAoczIsIFRydWUp
XSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBh
dGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0
ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQgbGlzdChtKSA9PSBb
KCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICgicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAKIGRlZiB0ZXN0X2l0ZXJwYXRo
KCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHNvdXJjZXMgPSBbU291cmNl
RmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNl
cz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICBzb3VyY2VzID0gW1NvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNlcz1bKCIvdGVzdDEt
cmVmIiwgIj09IildKSwKICAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdHMoInRlc3Qy
IiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5odG1sIiwge30pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAgICAgICAgICAgICAg
IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0
KV0KQEAgLTMwMiwyNCArMTg5LDYgQEAgZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBhc3NlcnQg
c2V0KG0uaXRlcnBhdGgoIm1pc3NpbmciKSkgPT0gc2V0KCkKIAogCi1kZWYgdGVzdF9yZWZ0ZXN0
X25vZGVfYnlfdXJsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLQotICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkKLQotICAg
IHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rlc19ieV91cmwgPT0g
eyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLSAgICBtLl9yZWZ0ZXN0X25vZGVzX2J5X3Vy
bCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6
IHRlc3QxLnRvX1JlZlRlc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0MiI6IHRlc3QyfQotCi0KIGRlZiB0ZXN0X25vX3VwZGF0ZSgpOgogICAgIG0gPSBt
YW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTM1NCw5ICsyMjMsNyBAQCBkZWYgdGVzdF9ub191cGRh
dGVfZGVsZXRlKCk6CiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAot
ICAgIHMxXzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVtLk1hbnVh
bFRlc3QpCi0KLSAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNlKV0pCisgICAgbS51
cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpXSkKIAogICAgIGFzc2VydCBsaXN0KG0pID09IFso
InRlc3RoYXJuZXNzIiwgdGVzdDEucGF0aCwge3Rlc3QxfSldCiAKQEAgLTM5NCw5ICsyNjEsMTAg
QEAgZGVmIHRlc3RfdXBkYXRlX2Zyb21fanNvbl9tb2RpZmllZCgpOgogICAgIG0udXBkYXRlKFso
czIsIFRydWUpXSkKICAgICBqc29uX3N0ciA9IG0udG9fanNvbigpCiAgICAgYXNzZXJ0IGpzb25f
c3RyID09IHsKLSAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsndGVzdDEnOiBbKCd0
ZXN0MScsIHsidGltZW91dCI6ICJsb25nIn0pXX19LAotICAgICAgICAncGF0aHMnOiB7J3Rlc3Qx
JzogKCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MnKX0sCisgICAgICAgICdpdGVtcyc6IHsn
dGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzogWworICAgICAgICAgICAgIjEiKjQwLAorICAgICAgICAg
ICAgKE5vbmUsIHsndGltZW91dCc6ICdsb25nJ30pCisgICAgICAgIF19fSwKICAgICAgICAgJ3Vy
bF9iYXNlJzogJy8nLAotICAgICAgICAndmVyc2lvbic6IDcKKyAgICAgICAgJ3ZlcnNpb24nOiA4
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc291cmNlZmlsZS5weQppbmRleCAwYTdhMWNhMGI0MWE5YzFiOTVmY2VhMzA5NTRjZWZm
NGJjYzc0YWQ4Li44YjBmYjk0NGVhNTY3NGE3ZDIxYjhkZGFhYzg5MDg1NjRkNDQ0MWJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291
cmNlZmlsZS5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8KIGZyb20g
Li4ubGludC5saW50IGltcG9ydCBjaGVja19nbG9iYWxfbWV0YWRhdGEKIGZyb20gLi5zb3VyY2Vm
aWxlIGltcG9ydCBTb3VyY2VGaWxlLCByZWFkX3NjcmlwdF9tZXRhZGF0YSwganNfbWV0YV9yZSwg
cHl0aG9uX21ldGFfcmUKIAorCiBkZWYgY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50cz1iIiIpOgog
ICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcykKICAgICByZXR1cm4gU291cmNl
RmlsZSgiLyIsIGZpbGVuYW1lLCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpAQCAtMzYsNiArMzcs
NyBAQCBkZWYgaXRlbXMocyk6CiAgICAgImZvby9yZXNvdXJjZXMvdGVzdC5odG1sIiwKICAgICAi
Zm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKICAgICAiZm9vL2Zvby1tYW51YWwuaHRtbC5oZWFkZXJz
IiwKKyAgICAiY3Jhc2h0ZXN0cy9mb28uaHRtbC5pbmkiLAogICAgICJjc3MvY29tbW9uL3Rlc3Qu
aHRtbCIsCiAgICAgImNzcy9DU1MyL2FyY2hpdmUvdGVzdC5odG1sIiwKIF0pCkBAIC0xMDYsOCAr
MTA4LDggQEAgZGVmIHRlc3RfbmFtZV9pc192aXN1YWwocmVsX3BhdGgpOgogICAgICJjc3MyMS9m
bG9hdHMvZmxvYXRzLXBsYWNlbWVudC12ZXJ0aWNhbC0wMDQtcmVmMi54aHQiLAogICAgICJjc3My
MS9ib3gvcnRsLWxpbmVicmVhay1ub3RyZWYxLnhodCIsCiAgICAgImNzczIxL2JveC9ydGwtbGlu
ZWJyZWFrLW5vdHJlZjIueGh0IiwKLSAgICAiMmRjb250ZXh0L2RyYXdpbmctaW1hZ2VzLXRvLXRo
ZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYuaHRtbCIsCi0gICAgIjJkY29udGV4
dC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAorICAgICJodG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYu
aHRtbCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvbGluZS1zdHlsZXMvbGluZXRvX3JlZi5o
dG1sIiwKICAgICAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3RoZS1maWVs
ZHNldC1lbGVtZW50LTAvcmVmLmh0bWwiCiBdKQogZGVmIHRlc3RfbmFtZV9pc19yZWZlcmVuY2Uo
cmVsX3BhdGgpOgpAQCAtMTIwLDYgKzEyMiwxNCBAQCBkZWYgdGVzdF9uYW1lX2lzX3JlZmVyZW5j
ZShyZWxfcGF0aCk6CiAgICAgYXNzZXJ0IGl0ZW1zKHMpID09IFtdCiAKIAorZGVmIHRlc3RfbmFt
ZV9pc190ZW50YXRpdmUoKToKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVpL2FwcGVhcmFuY2Ut
cmV2ZXJ0LTAwMS50ZW50YXRpdmUuaHRtbCIpCisgICAgYXNzZXJ0IHMubmFtZV9pc190ZW50YXRp
dmUKKworICAgIHMgPSBjcmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1yZXZlcnQtMDAxLmh0
bWwiKQorICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisKIGRlZiB0ZXN0X3dv
cmtlcigpOgogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC53b3JrZXIuanMiKQogICAgIGFzc2Vy
dCBub3Qgcy5uYW1lX2lzX25vbl90ZXN0CkBAIC0xNDMsNiArMTUzLDggQEAgZGVmIHRlc3Rfd29y
a2VyKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgog
ICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVv
dXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKKwogCiBkZWYgdGVz
dF93aW5kb3coKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93LmpzIikKQEAgLTE2
Nyw2ICsxNzksNyBAQCBkZWYgdGVzdF93aW5kb3coKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHpp
cChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwK
ICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVt
LnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3dvcmtlcl9sb25nX3RpbWVvdXQoKToKQEAgLTE3
NSw3ICsxODgsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykK
IHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5
dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhi
InRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIs
ICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2VyLmpzIiwgY29udGVu
dHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193b3JrZXIKQEAgLTE5Miw3ICsyMDUs
NyBAQCBkZWYgdGVzdF93aW5kb3dfbG9uZ190aW1lb3V0KCk6CiB0ZXN0KCkiIiIKIAogICAgIG1l
dGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRlbnRzKSwganNf
bWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0IiwgYiJsb25nIild
CisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIpXQogCiAgICAgcyA9
IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAgIGFz
c2VydCBzLm5hbWVfaXNfd2luZG93CkBAIC0yMzIsNiArMjQ1LDcgQEAgdGVzdCgpIiIiCiAgICAg
Zm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3Nl
cnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQor
ICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVzdF93aW5kb3dfd2l0
aF92YXJpYW50cygpOgpAQCAtMjYyLDYgKzI3Niw3IEBAIHRlc3QoKSIiIgogICAgIGZvciBpdGVt
LCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0u
dXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAg
YXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfcHl0aG9uX2xvbmdfdGltZW91
dCgpOgpAQCAtMjcxLDcgKzI4Niw3IEBAIGRlZiB0ZXN0X3B5dGhvbl9sb25nX3RpbWVvdXQoKToK
IAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRl
bnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21l
dGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQor
ICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBj
cmVhdGUoIndlYmRyaXZlci90ZXN0LnB5IiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0
IHMubmFtZV9pc193ZWJkcml2ZXIKQEAgLTMwNiw2ICszMjEsNyBAQCBkZWYgdGVzdF9tdWx0aV9n
bG9iYWwoKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6
CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF9sb25nX3RpbWVvdXQoKToKQEAgLTMxNCw3ICszMzAsNyBAQCBpbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykKIHRlc3QoKSIiIgogCiAgICAg
bWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBq
c19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmci
KV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25nIildCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNz
ZXJ0IHMubmFtZV9pc19tdWx0aV9nbG9iYWwKQEAgLTMyNywyNSArMzQzLDEwIEBAIHRlc3QoKSIi
IgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0ZWQiLCBbCi0gICAg
KGIiIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiImRlZmF1bHQiLCB7
ImRlZGljYXRlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZmF1bHQiLCB7fSksCi0g
ICAgKGIiIWRlZmF1bHQsd2luZG93IiwgeyJ3aW5kb3cifSksCi0gICAgKGIid2luZG93LCFkZWZh
dWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LGRlZGljYXRlZHdvcmtlciIsIHsiZGVkaWNhdGVk
d29ya2VyIn0pLAotICAgIChiImRlZGljYXRlZHdvcmtlciwhZGVmYXVsdCIsIHt9KSwKLSAgICAo
YiIhZGVmYXVsdCx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwg
InNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZmF1bHQiLCB7InNlcnZpY2V3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIiFkZWRpY2F0ZWR3b3JrZXIiLCB7IndpbmRv
dyJ9KSwKLSAgICAoYiIhd29ya2VyIiwgeyJ3aW5kb3cifSksCi0gICAgKGIiIXdpbmRvdyIsIHsi
ZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiIiF3aW5kb3csd29ya2VyIiwgeyJkZWRpY2F0ZWR3
b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAgKGIid29ya2Vy
LCFkZWRpY2F0ZWR3b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndp
bmRvdyJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyLHdvcmtlciIsIHsiZGVkaWNhdGVkd29y
a2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAo
YiJ3b3JrZXIsIXNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3Jr
ZXIiLCAid2luZG93In0pLAotICAgIChiIiFzaGFyZWR3b3JrZXIsd29ya2VyIiwgeyJkZWRpY2F0
ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93In0pLAot
ICAgIChiInNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7ImRlZGlj
YXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSks
CisgICAgKGIid2luZG93IiwgeyJ3aW5kb3cifSksCisgICAgKGIic2hhcmVkd29ya2VyIiwgeyJz
aGFyZWR3b3JrZXIifSksCisgICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7InNl
cnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAorICAgIChiIndvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAogXSkKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2N1c3RvbV9nbG9iYWxzKGlucHV0LCBleHBlY3RlZCk6CiAg
ICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPSVzCkBAIC0zODAsMTAgKzM4MSwxMSBA
QCB0ZXN0KCkiIiIgJSBpbnB1dAogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAg
ICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgaXMgRmFsc2UKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2pzc2hlbGxfZ2xvYmFscygpOgotICAgIGNvbnRlbnRzID0g
YiIiIi8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisgICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogdGVzdCgpIiIiCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCkBAIC00MTAs
NiArNDEyLDcgQEAgdGVzdCgpIiIiCiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAg
ICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCA9PSBqc3NoZWxsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF92YXJpYW50cygpOgpAQCAtNDQ4LDE3ICs0NTEsMTgg
QEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3Vy
bHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwotICAgIChiIiIiLy9N
RVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyBNRVRB
OiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyAgTUVUQTog
Zm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIiLy9NRVRBOiBmb289
YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxu
IiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vICBNRVRBOiBmb289YmFyXG4iIiIs
IFsoImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiXG4vLyBNRVRBOiBmb289YmFyXG4iIiIsIFtd
KSwKICAgICAoYiIiIiAvLyBNRVRBOiBmb289YmFyXG4iIiIsIFtdKSwKLSAgICAoYiIiIi8vIE1F
VEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28iLCBiImJhciIpLCAo
YiJiYXoiLCBiInF1dXgiKV0pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRB
OiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8gTUVUQTog
Zm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFso
YiJmb28iLCBiImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBNRVRBOiBi
YXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIiksICgiYmF6IiwgInF1dXgiKV0pLAorICAgIChi
IiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAi
YmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIFN0YXJ0IG9mIHRoZSB0ZXN0
XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKICAgICAoYiIiIi8v
IE1FVEE6XG4iIiIsIFtdKSwKICAgICAoYiIiIi8vIE1FVEE6IGZvb2JhclxuIiIiLCBbXSksCiBd
KQpAQCAtNjU3LDcgKzY2MSwzNiBAQCBkZWYgdGVzdF9yZWxhdGl2ZV90ZXN0ZHJpdmVyKGV4dCk6
CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0bSIsICJodG1sIl0pCi1k
ZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0KToKK2RlZiB0ZXN0X3F1aWNfaHRtbChleHQpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC4iICsgZXh0CisKKyAgICBjb250ZW50ID0gYic8bWV0YSBu
YW1lPSJxdWljIiBjb250ZW50PSJ0cnVlIj4nCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29u
dGVudCkKKyAgICBhc3NlcnQgcy5xdWljCisKKyAgICBjb250ZW50ID0gYic8bWV0YSBuYW1lPSJx
dWljIiBjb250ZW50PSJmYWxzZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQp
CisgICAgYXNzZXJ0IHMucXVpYyBpcyBOb25lCisKKworZGVmIHRlc3RfcXVpY19qcygpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC5hbnkuanMiCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRB
OiBxdWljPXRydWUiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVudCkKKyAgICBfLCBp
dGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAg
ICBhc3NlcnQgaXRlbS5xdWljCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRBOiBxdWljPWZhbHNl
IgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgXywgaXRlbXMgPSBzLm1h
bmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgYXNzZXJ0IGl0
ZW0ucXVpYyBpcyBOb25lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0
bSIsICJodG1sIl0pCitkZWYgdGVzdF9yZWZ0ZXN0KGV4dCk6CiAgICAgY29udGVudCA9IGIiPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+IgogCiAgICAgZmlsZW5hbWUgPSAiZm9vL3Rlc3Qu
IiArIGV4dApAQCAtNjczLDcgKzcwNiw3IEBAIGRlZiB0ZXN0X3JlZnRlc3Rfbm9kZShleHQpOgog
CiAgICAgYXNzZXJ0IHMuY29udGVudF9pc19yZWZfbm9kZQogCi0gICAgYXNzZXJ0IGl0ZW1zKHMp
ID09IFsoInJlZnRlc3Rfbm9kZSIsICIvIiArIGZpbGVuYW1lKV0KKyAgICBhc3NlcnQgaXRlbXMo
cykgPT0gWygicmVmdGVzdCIsICIvIiArIGZpbGVuYW1lKV0KIAogCiBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImV4dCIsIFsieGh0IiwgImh0bWwiLCAieGh0bWwiLCAiaHRtIiwgInhtbCIsICJz
dmciXSkKQEAgLTgzMSw0ICs4NjQsNCBAQCBkZWYgdGVzdF9yZWZ0ZXN0X2Z1enp5X211bHRpKGZ1
enp5LCBleHBlY3RlZCk6CiAKIGRlZiB0ZXN0X2hhc2goKToKICAgICBzID0gU291cmNlRmlsZSgi
LyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIpCi0gICAgYXNzZXJ0IGIi
YjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0gcy5oYXNoCisgICAg
YXNzZXJ0ICJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMwMjUzNjdiNzIxNjg0IiA9PSBzLmhh
c2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYTA0MWU1NGMzZTI0MGUyNmRiODNjMThhMWY1ODllMDVjZGM4NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0wLDAgKzEsMzQyIEBACitmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBNdXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcywgaXRlcml0
ZW1zCisKKworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1
ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
ZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworICAgICMgYXZvaWQgYWN0dWFs
bHkgaW1wb3J0aW5nIHRoZXNlLCB0aGV5J3JlIG9ubHkgdXNlZCBieSB0eXBlIGNvbW1lbnRzCisg
ICAgZnJvbSAuIGltcG9ydCBpdGVtCisgICAgZnJvbSAuIGltcG9ydCBtYW5pZmVzdAorCisKK2lm
IE1ZUFk6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVHVwbGVbVGV4dCwgLi4u
XSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXV0KKyAgICBQYXRoSGFzaFR5cGUgPSBNdXRhYmxlTWFw
cGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQorZWxzZToKKyAgICBUeXBlRGF0YVR5cGUgPSBN
dXRhYmxlTWFwcGluZworICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBwaW5nCisKKworY2xh
c3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbSwgdHlw
ZV9jbHMpOgorICAgICAgICAjIHR5cGU6IChtYW5pZmVzdC5NYW5pZmVzdCwgVHlwZVtpdGVtLk1h
bmlmZXN0SXRlbV0pIC0+IE5vbmUKKyAgICAgICAgIiIiRGljdC1saWtlIG9iamVjdCBjb250YWlu
aW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVzdCB0eXBlLgorCisgICAgICAgIExvYWRpbmcg
YW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vzc2FyaWx5CisgICAg
ICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAor
ICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSBy
YXcganNvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5
IGNyZWF0ZSBhbiBJdGVtCisgICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNz
ZWQuIEluIG9yZGVyIHRvIHJlbWFpbgorICAgICAgICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1
bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFuIEl0ZW0KKyAgICAgICAgZnJvbSBpdGVyYXRp
b24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGluZworICAgICAgICBv
dmVyIHRoZSBjbGFzcy4iIiIKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBtCisgICAgICAgIHNl
bGYuX3R5cGVfY2xzID0gdHlwZV9jbHMgICMgdHlwZTogVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0K
KyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCisg
ICAgICAgIHNlbGYuX2RhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KKyAgICAgICAg
c2VsZi5faGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQor
ICAgICAgICBzZWxmLmhhc2hlcyA9IFBhdGhIYXNoKHNlbGYpCisKKyAgICBkZWYgX2RlbGV0ZV9u
b2RlKHNlbGYsIGRhdGEsIGtleSk6CisgICAgICAgICMgdHlwZTogKERpY3RbVGV4dCwgQW55XSwg
VHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICAiIiJkZWxldGUgYSBwYXRoIGZyb20g
YSBEaWN0IGRhdGEgd2l0aCBhIGdpdmVuIGtleSIiIgorICAgICAgICBwYXRoID0gW10KKyAgICAg
ICAgbm9kZSA9IGRhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5WzotMV06CisgICAgICAg
ICAgICBwYXRoLmFwcGVuZCgobm9kZSwgcGF0aHNlZykpCisgICAgICAgICAgICBub2RlID0gbm9k
ZVtwYXRoc2VnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGRlbCBub2RlW2tl
eVstMV1dCisgICAgICAgIHdoaWxlIHBhdGg6CisgICAgICAgICAgICBub2RlLCBwYXRoc2VnID0g
cGF0aC5wb3AoKQorICAgICAgICAgICAgaWYgbGVuKG5vZGVbcGF0aHNlZ10pID09IDA6CisgICAg
ICAgICAgICAgICAgZGVsIG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAg
ICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IFVuaW9uW0RpY3RbVGV4dCwgQW55XSwg
U2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSwgTGlzdFtBbnldXQorICAgICAgICBmb3IgcGF0aHNlZyBp
biBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGRpY3QpIGFuZCBwYXRoc2Vn
IGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgc2V0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkp
CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pzb25fZGF0YQorICAgICAgICBmb3VuZCA9IEZhbHNl
CisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90
IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKG5vZGUsIGxpc3QpOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5
KQorCisgICAgICAgIHNlbGYuX2hhc2hlc1trZXldID0gbm9kZVswXQorCisgICAgICAgIGRhdGEg
PSBzZXQoKQorICAgICAgICBwYXRoID0gIi8iLmpvaW4oa2V5KQorICAgICAgICBmb3IgdGVzdCBp
biBub2RlWzE6XToKKyAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLl90eXBlX2Nscy5m
cm9tX2pzb24oc2VsZi5fbWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAgICAgICBkYXRhLmFk
ZChtYW5pZmVzdF9pdGVtKQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleVs6
LTFdOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVmYXVsdChwYXRoc2VnLCB7fSkKKyAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGFzc2VydCBr
ZXlbLTFdIG5vdCBpbiBub2RlCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSBkYXRhCisKKyAgICAg
ICAgc2VsZi5fZGVsZXRlX25vZGUoc2VsZi5fanNvbl9kYXRhLCBrZXkpCisKKyAgICAgICAgcmV0
dXJuIGRhdGEKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSkgLT4g
Tm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9q
c29uX2RhdGEsIGtleSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBpLCBwYXRoc2VnIGlu
IGVudW1lcmF0ZShrZXlbOi0xXSk6CisgICAgICAgICAgICBub2RlID0gbm9kZS5zZXRkZWZhdWx0
KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVyIGlzIGEgY2hpbGQgb2YgYSB0ZXN0
ICglcikiICUgKGtleSwga2V5WzppKzFdKSkKKyAgICAgICAgbm9kZVtrZXlbLTFdXSA9IHZhbHVl
CisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoVHVw
bGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9k
ZWxldGVfbm9kZShzZWxmLl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9oYXNo
ZXNba2V5XQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVy
YXRvcltUdXBsZVtUZXh0LCAuLi5dXQorICAgICAgICAiIiJJdGVyYXRvciBvdmVyIGtleXMgaW4g
dGhlIFR5cGVEYXRhIGluIGNvZGVwb2ludCBvcmRlciIiIgorICAgICAgICBkYXRhX25vZGUgPSBz
ZWxmLl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55XV0KKyAgICAgICAganNv
bl9ub2RlID0gc2VsZi5fanNvbl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55
XV0KKyAgICAgICAgcGF0aCA9IHR1cGxlKCkgICMgdHlwZTogVHVwbGVbVGV4dCwgLi4uXQorICAg
ICAgICBzdGFjayA9IFsoZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhdGgpXQorICAgICAgICB3aGls
ZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFfbm9kZSwganNvbl9ub2RlLCBwYXRoID0gc3RhY2su
cG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YV9ub2RlLCBzZXQpIG9yIGlzaW5z
dGFuY2UoanNvbl9ub2RlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGF0YV9ub2Rl
IGlzIE5vbmUgb3IganNvbl9ub2RlIGlzIE5vbmUKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRo
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhX25vZGUgaXMg
Tm9uZSBvciBpc2luc3RhbmNlKGRhdGFfbm9kZSwgZGljdCkKKyAgICAgICAgICAgICAgICBhc3Nl
cnQganNvbl9ub2RlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShqc29uX25vZGUsIGRpY3QpCisKKyAg
ICAgICAgICAgICAgICBrZXlzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgICAg
ICAgICAgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlz
IHw9IHNldChpdGVyKGRhdGFfbm9kZSkpCisgICAgICAgICAgICAgICAgaWYganNvbl9ub2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlzIHw9IHNldChpdGVyKGpzb25fbm9k
ZSkpCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChrZXlzLCByZXZlcnNlPVRy
dWUpOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoKGRhdGFfbm9kZS5nZXQoa2V5
KSBpZiBkYXRhX25vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzb25fbm9kZS5nZXQoa2V5KSBpZiBqc29uX25vZGUgaXMgbm90IE5v
bmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggKyAo
a2V5LCkpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
aW50CisgICAgICAgIGNvdW50ID0gMAorCisgICAgICAgIHN0YWNrID0gW3NlbGYuX2RhdGFdCisg
ICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQoaXRlcnZhbHVl
cyh2KSkKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9qc29uX2RhdGFdCisgICAgICAgIHdoaWxl
IHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHYsIGxpc3QpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2YWx1ZXModikpCisKKyAg
ICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9kYXRhKSBvciBi
b29sKHNlbGYuX2pzb25fZGF0YSkKKworICAgIF9fYm9vbF9fID0gX19ub256ZXJvX18KKworICAg
IGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoQW55KSAtPiBi
b29sCisgICAgICAgICMgd2UgcHJvdmlkZSBvdXIgb3duIGltcGwgb2YgdGhpcyB0byBhdm9pZCBj
YWxsaW5nIF9fZ2V0aXRlbV9fIGFuZCBnZW5lcmF0aW5nIGl0ZW1zIGZvcgorICAgICAgICAjIHRo
b3NlIGluIHNlbGYuX2pzb25fZGF0YQorICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRoc2VnIGluIG5vZGU6Cisg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBi
b29sKGlzaW5zdGFuY2Uobm9kZSwgc2V0KSkKKworICAgICAgICBub2RlID0gc2VsZi5fanNvbl9k
YXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIHBhdGhzZWcg
aW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBsaXN0KSkKKworICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25l
CisgICAgICAgICMgbXVjaCwgbXVjaCBzaW1wbGVyL3F1aWNrZXIgdGhhbiB0aGF0IGRlZmluZWQg
aW4gTXV0YWJsZU1hcHBpbmcKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhLmNsZWFyKCkKKyAgICAg
ICAgc2VsZi5fZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuX2hhc2hlcy5jbGVhcigpCisKKyAg
ICBkZWYgc2V0X2pzb24oc2VsZiwganNvbl9kYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtU
ZXh0LCBBbnldKSAtPiBOb25lCisgICAgICAgICIiIlByb3ZpZGUgdGhlIG9iamVjdCB3aXRoIGEg
cmF3IEpTT04gYmxvYgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBncmFwaCBpcyBh
c3N1bWVkIHRvIGJlIG93bmVkIGJ5IHRoZSBUeXBlRGF0YQorICAgICAgICBvYmplY3QgYWZ0ZXIg
dGhlIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZQor
ICAgICAgICBncmFwaC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2pzb25fZGF0YToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldF9qc29uIGNhbGwgd2hlbiBKU09OIGRh
dGEgaXMgbm90IGVtcHR5IikKKworICAgICAgICBzZWxmLl9qc29uX2RhdGEgPSBqc29uX2RhdGEK
KworICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4
dCwgQW55XQorICAgICAgICAiIiJDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGEgdG8gSlNPTgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgb2JqZWN0IG1heSBjb250YWluIHJlZmVyZW5j
ZXMgdG8gdGhlIGludGVybmFsCisgICAgICAgIGRhdGEgc3RydWN0dXJlcywgYW5kIGlzIG9ubHkg
Z3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgbmV4dAorICAgICAgICBfX2dldGl0ZW1f
XywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QK
KyAgICAgICAgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZSByZXR1cm5lZCBvYmplY3QgZ3JhcGguCisK
KyAgICAgICAgIiIiCisgICAgICAgIGpzb25fcnYgPSBzZWxmLl9qc29uX2RhdGEuY29weSgpCisK
KyAgICAgICAgZGVmIHNhZmVfc29ydGVyKGVsZW1lbnQpOgorICAgICAgICAgICAgIyB0eXBlOiAo
VHVwbGVbc3RyLHN0cl0pIC0+IFR1cGxlW3N0cixzdHJdCisgICAgICAgICAgICAiIiIga2V5IGZ1
bmN0aW9uIHRvIHNvcnQgbGlzdHMgd2l0aCBOb25lIHZhbHVlcy4KKworICAgICAgICAgICAgUHl0
aG9uMyBpcyBtb3JlIHN0cmljdCB0eXBld2lzZS4gQ29tcGFyaW5nIE5vbmUgYW5kIHN0ciBmb3Ig
ZXhhbXBsZSBpcyB2YWxpZAorICAgICAgICAgICAgaW4gcHl0aG9uMiBidXQgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBpbiBweXRob24zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpZiBlbGVt
ZW50IGFuZCBub3QgZWxlbWVudFswXToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCIiLCBlbGVt
ZW50WzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dAorCisgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBqc29uX3J2LCB0dXBsZSgpKV0gICMg
dHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERpY3RbVGV4dCwgQW55XSwgVHVwbGVb
VGV4dCwgLi4uXV1dCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgZGF0YV9ub2Rl
LCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBmb3Ig
aywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAgICAgICAgICAgICBmdWxsX2tleSA9
IHBhcl9mdWxsX2tleSArIChrLCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHNl
dCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBrIG5vdCBpbiBqc29uX25vZGUKKyAgICAg
ICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0gW3NlbGYuX2hhc2hlcy5nZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmdWxsX2tleSldICsgW3QgZm9yIHQgaW4gc29ydGVkKCh0ZXN0LnRv
X2pzb24oKSBmb3IgdGVzdCBpbiB2KSwga2V5PXNhZmVfc29ydGVyKV0KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10gPSBqc29uX25vZGUuZ2V0
KGssIHt9KS5jb3B5KCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKCh2LCBqc29u
X25vZGVba10sIGZ1bGxfa2V5KSkKKworICAgICAgICByZXR1cm4ganNvbl9ydgorCisKK2NsYXNz
IFBhdGhIYXNoKFBhdGhIYXNoVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgor
ICAgICAgICAjIHR5cGU6IChUeXBlRGF0YSkgLT4gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0g
ZGF0YQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgICAgICAjIHR5cGU6IChU
dXBsZVtUZXh0LCAuLi5dKSAtPiBUZXh0CisgICAgICAgIGlmIGsgbm90IGluIHNlbGYuX2RhdGE6
CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAgICAgIGlmIGsgaW4gc2VsZi5fZGF0
YS5faGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEuX2hhc2hlc1trXQorCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcg
aW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG5vZGVbMF0gICMgdHlwZTog
aWdub3JlCisKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAidW5yZWFjaGFibGUiCisgICAgICAgIHJh
aXNlIEtleUVycm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgdik6CisgICAgICAg
ICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFRleHQpIC0+IE5vbmUKKyAgICAgICAgaWYgayBu
b3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCisKKyAgICAgICAg
aWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhLl9oYXNo
ZXNba10gPSB2CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pzb25fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2RlOgorICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub2RlWzBdID0g
diAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2Rh
dGEuX2hhc2hlc1trXSA9IHYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJrZXlzIGhlcmUgbXVzdCBtYXRjaCB1bmRlcmx5aW5nIGRhdGEiKQorCisgICAgZGVm
IF9faXRlcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1Rl
eHQsIC4uLl1dCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGxl
bihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRl
eCBiZmJhYWY4OTcxMjZkOGVlY2E2OWRjZWY5NGJiMzEzMDg4OTdmZGUyLi4yOTY1MzNhNmJhYmYx
NzZlNDUxNGJjZjNmMjllMTYzZmRmOWE5ZmRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3VwZGF0ZS5weQpAQCAtMjYsNyArMjYsOCBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAj
IHR5cGU6IHN0cgogICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW3N0cl0KICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5cGU6IGJvb2wKICAg
ICAgICAgICAgY2FjaGVfcm9vdD1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCi0gICAgICAg
ICAgIHJlYnVpbGQ9RmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICAgICByZWJ1aWxkPUZhbHNl
LCAgIyB0eXBlOiBib29sCisgICAgICAgICAgIHBhcmFsbGVsPVRydWUgICMgdHlwZTogYm9vbAog
ICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbAogICAgIGxvZ2dlci53YXJu
aW5nKCJEZXByZWNhdGVkOyB1c2UgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlIGluc3RlYWQiKQpA
QCAtMzQsNyArMzUsNyBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IHN0cgogCiAg
ICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0
aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVi
dWlsZCkKLSAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgcmV0dXJuIG1hbmlm
ZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKIAogCiBkZWYgdXBkYXRlX2Zyb21fY2xpKCoqa3dh
cmdzKToKQEAgLTUxLDcgKzUyLDggQEAgZGVmIHVwZGF0ZV9mcm9tX2NsaSgqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sidXJsX2Jhc2UiXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1aWxkIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsPWt3YXJnc1sicGFyYWxsZWwiXSkKIAogCiBkZWYg
YWJzX3BhdGgocGF0aCk6CkBAIC03OCw2ICs4MCw5IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi0tY2FjaGUtcm9vdCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PW9zLnBhdGguam9pbih3cHRfcm9vdCwgIi53cHRjYWNoZSIpLAogICAg
ICAgICBoZWxwPSJQYXRoIGluIHdoaWNoIHRvIHN0b3JlIGFueSBjYWNoZXMgKGRlZmF1bHQgPHRl
c3RzX3Jvb3Q+Ly53cHRjYWNoZS8pIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLS1uby1wYXJhbGxlbCIsIGRlc3Q9InBhcmFsbGVsIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0iRG8gbm90IHBhcmFsbGVsaXplIGJ1aWxkaW5n
IHRoZSBtYW5pZmVzdCIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRp
bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IDJlZWQ3OWY0Mjc5ZDBlYzc4YzY5M2Y2MzJiOTZlMzZj
ZTNjOTZmYTkuLmFlZmMyYzk0ZjQwZTFhZTI5ZDM2NTdmZTQxMTRmNzlmOTc1NjhiYTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtNTUsMTYgKzU1LDE2IEBAIGRl
ZiB0b19vc19wYXRoKHBhdGgpOgogCiAKIGRlZiBnaXQocGF0aCk6Ci0gICAgIyB0eXBlOiAoYnl0
ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwgYnl0ZXNdXQorICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIFRleHRdXQogICAgIGRlZiBnaXRmdW5jKGNtZCwg
KmFyZ3MpOgotICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBieXRlcworICAgICAg
ICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBUZXh0CiAgICAgICAgIGZ1bGxfY21kID0gWyJn
aXQiLCBjbWRdICsgbGlzdChhcmdzKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJv
Y2Vzcy5TVERPVVQpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
ZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgndXRm
OCcpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIHBsYXRm
b3JtLnVuYW1lKClbMF0gPT0gIldpbmRvd3MiIGFuZCBpc2luc3RhbmNlKGUsIFdpbmRvd3NFcnJv
cik6CiAgICAgICAgICAgICAgICAgZnVsbF9jbWRbMF0gPSAiZ2l0LmJhdCIKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nl
c3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RE
T1VUKS5kZWNvZGUoJ3V0ZjgnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBy
YWlzZQogCkBAIC0xMDMsNCArMTAzLDUgQEAgY2xhc3MgY2FjaGVkX3Byb3BlcnR5KEdlbmVyaWNb
VF0pOgogICAgICAgICAjIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgYXNzaWduIGFzIG5leHQgdGlt
ZSB0aGlzIHdvbid0IGJlIGNhbGxlZAogICAgICAgICBhc3NlcnQgc2VsZi5uYW1lIG5vdCBpbiBv
YmouX19kaWN0X18KICAgICAgICAgcnYgPSBvYmouX19kaWN0X19bc2VsZi5uYW1lXSA9IHNlbGYu
ZnVuYyhvYmopCisgICAgICAgIG9iai5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfX2NhY2hlZF9wcm9w
ZXJ0aWVzX18iLCBzZXQoKSkuYWRkKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Zjcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CmluZGV4IGQ0ZjQ3ZjZiZjBhYjM1YzlkYTUxNGVk
YjRjNGI3Nzk2NDRmZjkwZGQuLjdjMGZlZWI4MTY0Nzk5NzUyNzViMWExYzRkODRmMTIxNWZhYzE0
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CkBAIC0zMyw3ICszMyw3IEBA
IGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVf
cm9vdCwKICAgICAjIHR5cGU6IChieXRlcywgTWFuaWZlc3QsIE9wdGlvbmFsW2J5dGVzXSwgT3B0
aW9uYWxbYnl0ZXNdLCBib29sLCBib29sKSAtPiBGaWxlU3lzdGVtCiAgICAgdHJlZSA9IE5vbmUK
ICAgICBpZiBjYWNoZV9yb290IGlzIE5vbmU6Ci0gICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRo
LmpvaW4odGVzdHNfcm9vdCwgYiIud3B0Y2FjaGUiKQorICAgICAgICBjYWNoZV9yb290ID0gb3Mu
cGF0aC5qb2luKHRlc3RzX3Jvb3QsICIud3B0Y2FjaGUiKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhjYWNoZV9yb290KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWFrZWRpcnMo
Y2FjaGVfcm9vdCkKQEAgLTU4LDIxICs1OCwyMSBAQCBjbGFzcyBHaXRIYXNoZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkKIAogICAgIGRlZiBfbG9jYWxfY2hhbmdlcyhz
ZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAgICAgICMgdHlwZTog
KCkgLT4gU2V0W1RleHRdCiAgICAgICAgICIiImdldCBhIHNldCBvZiBmaWxlcyB3aGljaCBoYXZl
IGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHkiIiIKICAgICAgICAgYXNzZXJ0
IHNlbGYuZ2l0IGlzIG5vdCBOb25lCiAgICAgICAgICMgbm90ZSB0aGF0IGdpdCBydW5zIHRoZSBj
b21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGljaCBtYXkKICAgICAgICAgIyBu
b3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4gYSBicm93c2VyIHJl
cG8pCi0gICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0tcmVsYXRpdmUiLCBiIi0tbm8t
cmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFEIl0KKyAgICAgICAgY21kID0g
WyJkaWZmLWluZGV4IiwgIi0tcmVsYXRpdmUiLCAiLS1uby1yZW5hbWVzIiwgIi0tbmFtZS1vbmx5
IiwgIi16IiwgIkhFQUQiXQogICAgICAgICBkYXRhID0gc2VsZi5naXQoKmNtZCkKLSAgICAgICAg
cmV0dXJuIHNldChkYXRhLnNwbGl0KGIiXDAiKSkKKyAgICAgICAgcmV0dXJuIHNldChkYXRhLnNw
bGl0KCJcMCIpKQogCiAgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6Ci0gICAgICAgICMgdHlwZTog
KCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAgICAgICAgICIiIgogICAgICAgICBBIGRpY3Qg
b2YgcmVsX3BhdGggLT4gY3VycmVudCBnaXQgb2JqZWN0IGlkIGlmIHRoZSB3b3JraW5nIHRyZWUg
bWF0Y2hlcyBIRUFEIGVsc2UgTm9uZQogICAgICAgICAiIiIKLSAgICAgICAgaGFzaF9jYWNoZSA9
IHt9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAgICAgICAgaGFzaF9j
YWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAKICAgICAgICAg
aWYgc2VsZi5naXQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBoYXNoX2NhY2hlCkBAIC04
MSw5ICs4MSw5IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAgICAjIG5vdCBiZSB0
aGUgcm9vdCBvZiB0aGUgZ2l0IHJlcG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dzZXIgcmVwbykKICAg
ICAgICAgY21kID0gWyJscy10cmVlIiwgIi1yIiwgIi16IiwgIkhFQUQiXQogICAgICAgICBsb2Nh
bF9jaGFuZ2VzID0gc2VsZi5fbG9jYWxfY2hhbmdlcygpCi0gICAgICAgIGZvciByZXN1bHQgaW4g
c2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6IGJ5dGVzCi0gICAgICAg
ICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIsIDEpCi0gICAgICAgICAg
ICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdl
cyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxm
LmdpdCgqY21kKS5zcGxpdCgiXDAiKVs6LTFdOiAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICBk
YXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoIlx0IiwgMSkKKyAgICAgICAgICAgIGhhc2hf
Y2FjaGVbcmVsX3BhdGhdID0gTm9uZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9jaGFuZ2VzIGVsc2Ug
ZGF0YS5zcGxpdCgiICIsIDMpWzJdCiAKICAgICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKIApAQCAt
MTc0LDcgKzE3NCw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogCiAKIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToKLSAgICBmaWxlX25hbWUgPSBi
Im10aW1lLmpzb24iCisgICAgZmlsZV9uYW1lID0gIm10aW1lLmpzb24iCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgbWFuaWZlc3RfcGF0aCwgcmVidWls
ZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKGJ5dGVzLCBieXRlcywgYnl0ZXMsIGJvb2wpIC0+
IE5vbmUKQEAgLTIyMiwxNiArMjIyLDE2IEBAIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToK
IAogCiBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVNYXBwaW5nKTogICMg
dHlwZTogaWdub3JlCi0gICAgZmlsZV9uYW1lID0gYiJnaXRpZ25vcmUuanNvbiIKKyAgICBmaWxl
X25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCiAKICAgICBkZWYgY2hlY2tfdmFsaWQoc2VsZiwgZGF0
YSk6CiAgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBBbnldKSAtPiBEaWN0W0FueSwgQW55XQot
ICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RzX3Jvb3QsIGIiLmdp
dGlnbm9yZSIpCisgICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdHNf
cm9vdCwgIi5naXRpZ25vcmUiKQogICAgICAgICBtdGltZSA9IG9zLnBhdGguZ2V0bXRpbWUoaWdu
b3JlX3BhdGgpCi0gICAgICAgIGlmIGRhdGEuZ2V0KGIiL2dpdGlnbm9yZV9maWxlIikgIT0gW2ln
bm9yZV9wYXRoLCBtdGltZV06CisgICAgICAgIGlmIGRhdGEuZ2V0KCIvZ2l0aWdub3JlX2ZpbGUi
KSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBU
cnVlCiAgICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGRhdGFbYiIvZ2l0aWdub3Jl
X2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgICAgICBkYXRhWyIvZ2l0aWdu
b3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCiAgICAgICAgIHJldHVybiBkYXRhCiAK
ICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CkBAIC0yODYsNyArMjg2LDcgQEAgZGVm
IHdhbGsocm9vdCk6CiAgICAgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAogCiAgICAgcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChyb290KQotICAgIHN0YWNrID0gZGVxdWUoWyhyb290LCBiIiIpXSkK
KyAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgIiIpXSkKIAogICAgIHdoaWxlIHN0YWNrOgogICAg
ICAgICBkaXJfcGF0aCwgcmVsX3BhdGggPSBzdGFjay5wb3BsZWZ0KCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCmluZGV4IGEwMTU0MjY4N2IxYTAxNmRm
YjQ3NTI1ZTBhZTJlZDRhYTJiMjE3ZjguLjM4OGZiYjExZWQ5ZDhkYTAxNDNmODJlZGMwMmQxMGM5
NzliZTM3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMjMsNiArMjMsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3NvdXJjZWZpbGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0
ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYWM4
ZWRkMzdkM2FjMjkwNDEzM2ExMmVlOWU3NTUwZGQ1YTQ4NzIzOC4uYjk0M2I2ZDA4OWE0YjhmODFl
OWI2ZTIzYzc2ODgwZmI5M2NmNjY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCkBAIC0xLDEyICsx
LDEzIEBACiBbbXlweV0KICNjaGVja191bnR5cGVkX2RlZnMgPSBUcnVlCi1kaXNhbGxvd191bnR5
cGVkX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCiBkaXNhbGxvd19p
bmNvbXBsZXRlX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19zdWJjbGFzc2luZ19hbnkgPSBUcnVlCiBk
aXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQogZGlzYWxsb3dfdW50eXBlZF9kZWNvcmF0b3Jz
ID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQogbm9faW1wbGljaXRfb3B0aW9u
YWwgPSBUcnVlCitzdHJpY3RfZXF1YWxpdHkgPSBUcnVlCiB3YXJuX3JlZHVuZGFudF9jYXN0cyA9
IFRydWUKIHdhcm5fcmV0dXJuX2FueSA9IFRydWUKIHdhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmluZGV4IDk5MzI0YjJhYWQxNGQ5MjFm
NDY5ZjUyOTM0ZjdmZjkzNzRhMWQ5ZWUuLmRkNmNlYjZmZWE0Yjk3M2MwMTI0ZGY0MzgyZjlmMWEz
YTlkNWEwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCkBAIC0yMiw2ICsy
Miw3IEBAIGlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIsRTMwMyxF
MzA1LEU0MDIsRTczMSxXNTA0LFc2MDEsVzYwNSxXCiBleGNsdWRlID0KICAgICAudG94LAogICAg
IHB5d2Vic29ja2V0LAorICAgIHF1aWMsCiAgICAgdGhpcmRfcGFydHksCiAgICAgd3B0c2VydmUv
ZG9jcy9jb25mLnB5LAogICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZh
bGlkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNjMWRj
NmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4
LmluaQpAQCAtMCwwICsxLDI3IEBACitbZmxha2U4XQorc2VsZWN0ID0gRSxXLEYsTgorIyBFMTI4
OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAorIyBF
MTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dp
Y2FsIGxpbmUKKyMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9w
ZXJhdG9yCisjIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZ
LCBvciDigJg64oCZCisjIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8g
cGFyYW1ldGVyIGVxdWFscworIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRo
IOKAmCMg4oCYCisjIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKKyMgRTMw
MzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCisjIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGlu
ZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCisjIEU0MDI6IG1vZHVsZSBsZXZlbCBp
bXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCisjIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEg
ZXhwcmVzc2lvbiwgdXNlIGEgZGVmCisjIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9w
ZXJhdG9yCisjIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisjIE44MDE6IGNsYXNzIG5h
bWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgorIyBOODAyOiBmdW5jdGlvbiBuYW1l
IHNob3VsZCBiZSBsb3dlcmNhc2UKKyMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxk
IGJlIGxvd2VyY2FzZQoraWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMw
MixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgorZXhjbHVkZSA9
CisgICAgLnRveCwKKyAgICBweXdlYnNvY2tldCwKKyAgICB0aGlyZF9wYXJ0eSwKKyAgICB3cHRy
dW5uZXIsCisgICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAorICAgIHdwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CittYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHkzNi1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5YTAyM2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi1bZmxha2U4XQotc2VsZWN0ID0gRSxXLEYsTgotIyBFMTI4OiBjb250
aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAotIyBFMTI5OiB2
aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dpY2FsIGxp
bmUKLSMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9wZXJhdG9y
Ci0jIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZLCBvciDi
gJg64oCZCi0jIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8gcGFyYW1l
dGVyIGVxdWFscwotIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRoIOKAmCMg
4oCYCi0jIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKLSMgRTMwMzogdG9v
IG1hbnkgYmxhbmsgbGluZXMgKDMpCi0jIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMgYWZ0
ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCi0jIEU0MDI6IG1vZHVsZSBsZXZlbCBpbXBvcnQg
bm90IGF0IHRvcCBvZiBmaWxlCi0jIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEgZXhwcmVz
c2lvbiwgdXNlIGEgZGVmCi0jIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9y
Ci0jIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCi0jIE44MDE6IGNsYXNzIG5hbWVzIHNo
b3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlvbiBuYW1lIHNob3Vs
ZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxkIGJlIGxv
d2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMwMixFMzAz
LEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgotZXhjbHVkZSA9Ci0gICAg
LnRveCwKLSAgICBweXdlYnNvY2tldCwKLSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRydW5uZXIs
Ci0gICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAotICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9pbnZhbGlkLnB5Ci1tYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9S
RUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNjRiNzAxY2ZiODU5MDBjMjE5NDYzNjI0
ZTZhZmEyOTlhMzgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzAg
QEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCitbUVVJQ10oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9vbHMuCisKKyMgUXVp
Y1RyYW5zcG9ydAorW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWljX3RyYW5zcG9ydF9z
ZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKK1tRdWljVHJhbnNwb3J0XShodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWljKSBzZXJ2ZXIKK2Zv
ciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fp
b3F1aWMvKSwgYW5kIHRlc3QKK2F1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0b20gaGFuZGxlcnMg
YnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgorW3dwdC93ZWJ0cmFuc3BvcnQvcXVpYy9oYW5k
bGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCisKKyMjIEN1c3RvbSBI
YW5kbGVycworVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rpb25zIGRlZmluZWQg
aW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KKworIC0gaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uIGlz
IGNhbGxlZCBkdXJpbmcgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MuCisgICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRocmVlIGFyZ3VtZW50czoKKyAgIAorICAgLSBjb25uZWN0
aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgLSBvcmlnaW46
IHN0ciBUaGUgb3JpZ2luIG9mIHRoZSBpbml0aWF0b3IuCisgICAtIHF1ZXJ5OiBEaWN0W3N0ciwg
c3RyXSBUaGUgZGljdGlvbmFyeSBvZiBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBVUkwgb2YgdGhl
CisgICAgICAgICAgICBjb25uZWN0aW9uLgorCisgICBBIGhhbmRsZXIgY2FuIGFib3J0IHRoZSBj
bGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzIGVpdGhlciBieSByYWlzaW5nIGFuCisgICBleGNlcHRp
b24gb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbi4KKwkgICAgCisgLSBoYW5kbGVfZXZlbnQgaXMg
Y2FsbGVkIHdoZW4gYSBRdWljRXZlbnQgYXJyaXZlcy4KKyAgIC0gY29ubmVjdGlvbjogYWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gZXZlbnQ6IGFpb3F1aWMucXVp
Yy5ldmVudHMuUXVpY0V2ZW50CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB1bnRp
bCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBmaW5pc2hlcworICAgc3VjY2Vzc2Z1bGx5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0
X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjE2Y2YxM2ZmZmMxYmJhODdkNjEwZTIyY2Y2MGUxMTA0M2Y1MzkxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKQEAgLTAsMCArMSwxMiBAQAorVG8gZ2VuZXJhdGUgY2Vy
dC5rZXkgYW5kIGNlcnQucGVtOgorCisgMS4gUmVtb3ZlIHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBh
bmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluIC4uLy4uL2NlcnRzLgorIDEuIEZyb20gdGhlIHJv
b3QsIHJ1bgorICAgIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29scy9xdWljL2NlcnRzL2NvbmZp
Zy5qc29uYCBhbmQgdGVybWluYXRlIGl0CisgICAgYWZ0ZXIgaXQgaGFzIHN0YXJ0ZWQgdXAuCisg
MS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkgdG8gdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LmtleS4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBl
bSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQucGVtLgorIDEuIFJlY292ZXIgdGhlIG9yaWdpbmFs
IHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluCisgICAg
Li4vLi4vY2VydHMuCisKK1NlZSBhbHNvOiAuLi8uLi9jZXJ0cy9SRUFETUUubWQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5r
ZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTkzY2RmYTU0MzcyOGI2MzY5YjA1ZWVmZTIwODExY2Q2NjYyYjcxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpAQCAtMCwwICsxLDI4IEBACistLS0tLUJF
R0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV3QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktv
d2dnU21BZ0VBQW9JQkFRRGJ5UHVpQkdweGhhdkYKKzNqN3BJNmcrQTBnQzRCVExUcU1PYktTVGtR
V3NqcTFHT2QyTEExbHdUUExPYndydmhJVUZ6YndvSWJPd29QTWUKK01ranNzRkNIRzNGTWo1NmNL
aUFRMkRGSTZkSzVQakdVVk5TUnhrL0Y0SGgyWng5RFRFTmwvRWIvY1JUMnl1dSsKK1c5SEN1L0JX
ZmJXd2x3d041dnh5bmVDb2g1Y0JCL2pkMUtUT1JndVlwdWF0SGI4NUFENUJSaFlMWHdIRjd5VkgK
K05WeEhldUdsSzMxeXVZQ0hOS3ZCSERnWkY1VHA4RnFLWG5WVStQbEtYQ1NVNTYwMmMyVTV4SElG
dktUeWlabE0KK2NZWE5TVXAwbGNOdy9pVFNWdHNQRTRrMXN0dTZxa1dkVDdIL3VVK0dVQithTHFP
K3N2QS9zOUdHWDhIWmd0K3IKK3ZTRkU4bElKQWdNQkFBRUNnZ0VCQUpBOTZEOWRqSW95Z3hoYUVv
bXBtQ29TdHprRDNVSE11eUNsVnFGdVJQNEoKK3FWaDBjNXhmTjF5SGM3YmRrNXk4S1IwMDk2NlM1
NzRjODFHM0NMc2x2OFBiMDlDK1ZRY0Njb2I3aStUaGFDV2cKKzFxTVZ4V2hpY1VwWlZsWEd1ZkxO
NDFIVWJyZ0lmQXk0QWwydEh3NGhqOHNEdDdGTWdHSERYWnpQVm5qa2U4cjEKK085WWlKbDFReDRM
N3ZNV3J1R2E5UVdqRmdIbkcrdWhhS2pzTDJ2N0pRT0d5NXQ4YWJvVnliN2g4ckdnL21DK2UKK0hJ
WU91Y1YxYUVNZ1lWYUFuaEdzS01Ia3g1QTF4V3BYQlNydUcrR1JCeC9rWFdaK2tDTmNrTFh1VmRy
aHE0SEkKK0FkYnhJenFRVFBNWHBPM1JBdWp5cnhrSGFiRU5NUEEvRkdINHN6bWRMb0VDZ1lFQTl6
OHBlNy92U2xXZ2Zoc0YKK3o1UW53V0h5RmpydWhnRC8yc2E0TEIvY213VFFkR3c4RTVUTkhEYkNn
bVM0OTlEWlVYSVp1Qk9UZWtkRVZEUWEKK25nOFZ5TDNvN0Rtcys1aVBpNWNxc2NwMUtrakxFTXlQ
cHFzNEpUdWl4UnBqbU1meWNkeFZUcFhoY3VxbkpwVEwKK1FDOXBSNU4velpjQU1EbEJ2MEZ6YzhU
NzhYa0NnWUVBNDVEdWVXR0hWZjJ1NHVNWXlXeHlaaGFORGFnbDEzeXgKKy9vU1NVVHpvTHZTcEdR
eEtrditmeFNOcUwzbnU1SWE2dUQ0R3U1TnViUDRIci9WZVNLUmZta1QxbHV2RmNWZkMKK2tuOHI4
YnNzWnE4NTVBVkp4WGE1SzFhdVdqQ3VGSGowcFlmNTZzZmhrUHhwWTBSUUVna3Z1RTNpb3NRMTJn
RlgKK3Z3MTQ3RnRRVVJFQ2dZRUE4NVJwVlA0NVMzMWlPUHA4VmcxNndSeXllRTRrc1NZSTZrcitK
SkpiTHVtbVNCeGQKK2Ixa1lYU1JocWo1NnI4STBadlhHK3I5bWVuLzloQXMwOGVTZ3JIelVITzJS
U3VqNCtpZTZLeC92SC9KSkJFclQKK2R2cVZ2TENzNGd2bWRSeis4RWVHVDM1L2RreFEwa1NpbktC
WTB1Z3diNlhFekwyTDFWVXczYXdDSGRrQ2dZRUEKK3F0UUlnT3Y2dVUybmRFREFRYXg4TURDcmtG
M3lrbEhVR0ZrU3NaTkVSTU43RVFlT0Q4MSs5WEZCYkFSZmxnT2gKK3RWOHlsS3IzRVRDZE9yUzZJ
MVBwUkppUnQ4cWp2Qk1DU0JEWlB5eWdCekZ4QnNBRmdncytzODd0TVYwcndNaVAKKzlwY2R2K1p1
YVBWaWM1YzdlRjZYQ1FiR3BDTWd2ZGVXTkNCNzd3b1pQOUVDZ1lFQWxvYmtQR0RZQ3kvUmFWaVUK
K0ZicTVHbzZ3MHBNVm5MellibjRHaDFBSlBlUUtJU3FYdEpaN3RxcGRXK2k3cXprTHc3NEVMYVlD
QlIyWkVscmoKK0VWZTVhUk94NlRGTjlSbmprRm55djlMZXlZTCtZUGM4QUl3VlVDZVNQaWtTR0xG
cEpmYS9qd0RtV2gzdkhtbUEKK05SVVA0MHdidEJpNDJDMnVkclR4VVdzSHhxYz0KKy0tLS0tRU5E
IFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUzNjdjODlmZjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCkBAIC0wLDAgKzEsMjQwIEBACitDZXJ0aWZp
Y2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAzICgweDIpCisgICAgICAgIFNlcmlh
bCBOdW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKKyAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0t
dGVzdHMKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEFwciAyMCAx
MToyMDo1NiAyMDIwIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDE4IDExOjIwOjU2
IDIwMzAgR01UCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CisgICAgICAg
IFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0
aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDgg
Yml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAgICAgICAgIDAwOmRi
OmM4OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgorICAgICAgICAgICAgICAg
ICAgICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5Mzo5MToKKyAgICAg
ICAgICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6NzA6NGM6ZjI6Y2U6
NmY6CisgICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJjOjI4OjIxOmIzOmIw
OmEwOmYzOjFlOjMyOgorICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1MDo4NzoxYjo3MTo0
Yzo4Zjo5ZTo5YzoyYToyMDoxMDpkODoKKyAgICAgICAgICAgICAgICAgICAgMzE6NDg6ZTk6ZDI6
Yjk6M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6CisgICAgICAgICAgICAgICAgICAgIDc4
Ojc2OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgorICAgICAgICAgICAg
ICAgICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5NzowYzowZDplNjoKKyAg
ICAgICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6Zjg6ZGQ6ZDQ6YTQ6
Y2U6NDY6CisgICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFkOmJmOjM5OjAwOjNl
OjQxOjQ2OjE2OjBiOjVmOgorICAgICAgICAgICAgICAgICAgICAwMTpjNTplZjoyNTo0NzozNTo1
Yzo0Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKKyAgICAgICAgICAgICAgICAgICAgODA6ODc6MzQ6
YWI6YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6CisgICAgICAgICAgICAgICAgICAg
IDc1OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0OgorICAgICAgICAg
ICAgICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0OTo0YTo3NDo5NToK
KyAgICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6MTM6ODk6MzU6YjI6
ZGI6YmE6YWE6CisgICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZmOmI5OjRmOjg2OjUw
OjFmOjlhOjJlOmEzOmJlOmIyOgorICAgICAgICAgICAgICAgICAgICBmMDozZjpiMzpkMTo4Njo1
ZjpjMTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKKyAgICAgICAgICAgICAgICAgICAgNTI6MDkK
KyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAg
ICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElk
ZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdDOjQxOjJCOjNCOjlG
OjFCOjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCisgICAgICAgICAgICBYNTA5djMgQXV0aG9y
aXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjow
NzowNTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQworCisgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAgICAgICBYNTA5djMg
RXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRo
ZW50aWNhdGlvbgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTog
CisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTku
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3
dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4t
LWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0CisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAg
ICAgICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1OmQ1OmRjOjk5Ojlm
OjNmOgorICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6NGU6Yzg6ZDQ6YWE6
MzQ6OTU6ZTQ6OWU6CisgICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMTozMTo2NzplNTphNjpk
YTo4NTo2YjowZjpkNzo2NDpiNzoKKyAgICAgICAgIGU3OmViOmZlOjA5OmI2Ojg4OmUxOjc0OjFk
OjBjOjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgorICAgICAgICAgN2M6YmE6ZTY6ZmI6NTI6MWQ6
NTg6Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6CisgICAgICAgICA0MTo3MTo5OTph
MzoxYTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoKKyAgICAgICAgIGE5
OmQ4OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAxOjk5OjdhOgorICAg
ICAgICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6ZWM6NzU6YjI6Nzc6
MTE6CisgICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpmZDphOTowYjphMjpl
ZDoyZDoxYzo2ZToKKyAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEwOmNhOmU4OmU2OmUw
OjdhOmE5OmY0OjI2Ojk0OjZiOgorICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6M2U6ZTA6ZWY6ZDI6
YmU6MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6CisgICAgICAgICAwYzoyNDo4Mzo3MjplMjplNDo2
ZjoyNTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKKyAgICAgICAgIGMzOmQ2OjA2OmFl
OjFkOmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgorICAgICAgICAgMTc6
ODc6MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6NGQ6MDQ6CisgICAg
ICAgICBmZjo2MDpmZTplMworLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlndkRDQ0g2
U2dBd0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCitZ
aTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3MHpNREEwTVRneE1U
SXdOVFphCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUlJQklqQU5C
Z2txaGtpRzl3MEJBUUVGCitBQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1JxY1lXcnhkNCs2U09v
UGdOSUF1QVV5MDZqRG15a2s1RUZySTZ0CitSam5kaXdOWmNFenl6bThLNzRTRkJjMjhLQ0d6c0tE
ekhqSkk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4CitsRlRVa2NaUHhlQjRkbWNmUTB4RFpm
eEcvM0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0CiszZFNremtZTG1LYm1y
UjIvT1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdSZVU2ZkJhCitpbDUx
VlBqNVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGswbGJiRHhPSk5iTGJ1
cXBGCituVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpTQ1FJREFRQUJvNEll
QkRDQ0hnQXdDUVlECitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZOOFFTczdueHNOMXFt
NHQwL21ZVnd3SHdZRFZSMGpCQmd3CitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3
WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCitDQ3NHQVFVRkJ3TUJNSUlkandZRFZSMFJC
SUlkaGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2CitjRGd1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0E1CitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXNXZkQzEz
CitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hW
dmNETXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlWYjNBeExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTVM1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1TVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F6T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4
T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EzTnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TkM1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F6TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E0Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TUM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F5TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlaYjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxtNXZkQzEzCitaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpi
M0ExCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6CitkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
M0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSVpiM0EwTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2CitkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TlRN
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2
CitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpF
dWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0E0CitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNk
ekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205
d01qRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2CitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitH
bTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xtNXZkQzEzWldJdGNH
eGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TmpVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxj
M1NDR205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2CitkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDCitHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNUxtNXZkQzEz
WldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TnprdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCitMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNETTVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNK
dExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTRMbTV2
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDCitHbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZeUxt
NXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitPQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNE
STJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
TTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDCitHbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0ExTkM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitOeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4w
Z2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlM
WEJzCitZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEUXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3T1RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0ExCitOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
CitaWE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOQzV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNERXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F4TXk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRsCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5CitO
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwCitaWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhO
UzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNERTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mk15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpndWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFi
M0EyTmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsCitZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0EzCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTROeTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaHQzZDNjeUxuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2Qz
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5kM2R5NTNkM2N5CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNN
aTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCitNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1Citk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2Qz
Y3VkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsCitjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0CitMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0kzZDNk
ekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0CitiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNk
bVV0CitObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCitlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzCitkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0
CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTE0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNXaDJNamhoTG5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNX
aDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0Cith
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2Rt
VXRObXhoCitaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akYzZDNjdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxCitObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2Rq
STRZUzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5CitkM2QzTVM1NGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1ND
TW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5CitiUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2
ZEMxM1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MlpTMDJiR0ZrCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCithM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG5odUxTMXNkbVV0
Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0CitObXhoWkM1
NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
CitjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyCitNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCitLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBdUxWV3Ew
WmFncU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCitOSlhrbmt2a2RPVEU3QkV4WitX
bTJvVnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpOCithS05Wakp0WHU0
a3lFRUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRmZUhRR1plazl5CitS
Mm1jbUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1RUYxRENtWkFRUXl1
am00SHFwCis5Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1RzhscU83RkVvbloz
WStDRk1QV0JxNGR1M3M4CisvSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5Nk5DNkJtOU5CUDln
L3VNPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5q
c29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTZkMDUyOWZiOTQ0OWM0YmZiMGM5
MzU0NmE3OTYyYTVhYmQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24KQEAg
LTAsMCArMSwxNyBAQAoreworICAgICJwb3J0cyI6IHsKKyAgICAgICAgImh0dHAiOiBbXSwKKyAg
ICAgICAgImh0dHBzIjogWyJhdXRvIl0sCisgICAgICAgICJ3cyI6IFtdLAorICAgICAgICAid3Nz
IjogW10KKyAgICB9LAorICAgICJjaGVja19zdWJkb21haW5zIjogZmFsc2UsCisgICAgInNzbCI6
IHsKKyAgICAgICAgInR5cGUiOiAib3BlbnNzbCIsCisgICAgICAgICJvcGVuc3NsIjogeworICAg
ICAgICAgICAgImR1cmF0aW9uIjogMzY1MCwKKyAgICAgICAgICAgICJmb3JjZV9yZWdlbmVyYXRl
IjogZmFsc2UsCisgICAgICAgICAgICAiYmFzZV9wYXRoIjogInRvb2xzL2NlcnRzIgorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZmM1YTE5ZjNjYjlkNjQzM2FlNDM0MzUxM2U4NDQ1ZGU4
NDg4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwy
MCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9jZXJ0cy9jb25maWcuanNvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDQzMjJlZWQzYmFmNDY3YzZkODA5ZmMyNmFjOTU4NTk4OTQyMzExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAic2Vy
dmVxdWljIjogeworICAgICJwYXRoIjogInNlcnZlLnB5IiwKKyAgICAic2NyaXB0IjogInJ1biIs
CisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAicHkzb25seSI6IHRydWUsCisgICAg
ImhlbHAiOiAiU3RhcnQgdGhlIFFVSUMgc2VydmVyIiwKKyAgICAidmlydHVhbGVudiI6IHRydWUs
CisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICJyZXF1aXJlbWVudHMudHh0IgorICAgIF0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9y
dF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNGFkMTdmMTk1YzZlNWQyMzNlODRhOWIyMzkwNGNj
Y2ZlY2NkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKQEAgLTAs
MCArMSwyNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IGFzeW5jaW8KK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdXJsbGliLnBhcnNlCitmcm9tIHR5cGluZyBpbXBv
cnQgRGljdCwgT3B0aW9uYWwKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGlt
cG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBpbXBv
cnQgRU5EX1NUQVRFUworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRh
UmVjZWl2ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tl
dAorCitTRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5zcG9ydCcKKworaGFuZGxlcnNfcGF0aCA9
IE5vbmUKKworCitjbGFzcyBFdmVudEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0OiBEaWN0KToKKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLmdsb2JhbF9k
aWN0ID0gZ2xvYmFsX2RpY3QKKworICAgIGRlZiBoYW5kbGVfY2xpZW50X2luZGljYXRpb24oCisg
ICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgb3JpZ2luOiBzdHIsCisgICAgICAgICAgICBx
dWVyeTogRGljdFtzdHIsIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSAnaGFuZGxlX2Ns
aWVudF9pbmRpY2F0aW9uJworICAgICAgICBpZiBuYW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6Cisg
ICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25hbWVdKHNlbGYuY29ubmVjdGlvbiwgb3JpZ2lu
LCBxdWVyeSkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkg
LT4gTm9uZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfZXZlbnQnCisgICAgICAgIGlmIG5hbWUg
aW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3RbbmFtZV0o
c2VsZi5jb25uZWN0aW9uLCBldmVudCkKKworCitjbGFzcyBRdWljVHJhbnNwb3J0UHJvdG9jb2wo
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCisgICAgICAgIHNlbGYuc3RyZWFtcyA9IGRpY3QoKQorICAgICAgICBzZWxmLnBlbmRpbmdf
ZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZGF0YSA9IGInJworICAgICAgICBz
ZWxmLmhhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBwcmVmaXggPSAnISEnCisgICAgICAg
IGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ1FVSUMgZXZlbnQ6ICVzJyAlIHR5cGUoZXZlbnQp
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuY2xpZW50X2luZGljYXRp
b25fZmluaXNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZXZlbnQsIFN0
cmVhbURhdGFSZWNlaXZlZCkgYW5kCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cmVhbV9p
ZCA9PSAyKToKKyAgICAgICAgICAgICAgICAjIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSAnQ2xpZW50IGluZGljYXRpb24gZXJyb3I6ICcKKyAgICAg
ICAgICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgKz0gZXZlbnQuZGF0YQorICAg
ICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEpID4gNjU1MzU6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndG9vIGxhcmdlIGRhdGEgZm9y
IGNsaWVudCBpbmRpY2F0aW9uJykKKyAgICAgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFt
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfY2xpZW50X2luZGljYXRpb24oKQor
ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0g
J0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIHNl
bGYucGVuZGluZ19ldmVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIu
aGFuZGxlX2V2ZW50KGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMu
Y2xlYXIoKQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5p
c2hlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAgICAgICAgICAgIHNl
bGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZlbnQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKyAgICAgICAgICAgIGxvZ2dp
bmcubG9nKGxvZ2dpbmcuV0FSTiwgcHJlZml4ICsgc3RyKGUpKQorICAgICAgICAgICAgc2VsZi5j
bG9zZSgpCisKKyAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2VsZiwgYnMpOgorICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAga2V5X2IgPSBicy5yZWFkKDIpCisgICAgICAg
ICAgICBpZiBsZW4oa2V5X2IpID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICBsZW5ndGhfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxlbihrZXlfYikgIT0g
MjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBnZXQgIktleSIg
ZmllbGQnKQorICAgICAgICAgICAgaWYgbGVuKGxlbmd0aF9iKSAhPSAyOgorICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiTGVuZ3RoIiBmaWVsZCcpCisgICAg
ICAgICAgICBrZXkgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGtleV9iKVswXQorICAgICAgICAgICAg
bGVuZ3RoID0gc3RydWN0LnVucGFjaygnIUgnLCBsZW5ndGhfYilbMF0KKyAgICAgICAgICAgIHZh
bHVlID0gYnMucmVhZChsZW5ndGgpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpICE9IGxlbmd0
aDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RydW5jYXRlZCAiVmFsdWUiIGZp
ZWxkJykKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQorCisgICAgZGVmIHByb2Nlc3Nf
Y2xpZW50X2luZGljYXRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgb3JpZ2luID0gTm9uZQor
ICAgICAgICBvcmlnaW5fc3RyaW5nID0gTm9uZQorICAgICAgICBwYXRoID0gTm9uZQorICAgICAg
ICBwYXRoX3N0cmluZyA9IE5vbmUKKyAgICAgICAgS0VZX09SSUdJTiA9IDAKKyAgICAgICAgS0VZ
X1BBVEggPSAxCisgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5wYXJzZV9jbGllbnRf
aW5kaWNhdGlvbigKKyAgICAgICAgICAgICAgICBpby5CeXRlc0lPKHNlbGYuY2xpZW50X2luZGlj
YXRpb25fZGF0YSkpOgorICAgICAgICAgICAgaWYga2V5ID09IEtFWV9PUklHSU46CisgICAgICAg
ICAgICAgICAgb3JpZ2luX3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKG9yaWdpbl9zdHJpbmcpCisgICAgICAgICAg
ICBlbGlmIGtleSA9PSBLRVlfUEFUSDoKKyAgICAgICAgICAgICAgICBwYXRoX3N0cmluZyA9IHZh
bHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51cmxwYXJz
ZShwYXRoX3N0cmluZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBt
dXN0IGlnbm9yZSB1bnJlY29nbml6ZWQgZmllbGRzLgorICAgICAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLAorICAgICAgICAgICAgICAgICAgICAnb3Jp
Z2luID0gJXMsIHBhdGggPSAlcycgJSAob3JpZ2luX3N0cmluZywgcGF0aF9zdHJpbmcpKQorICAg
ICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8g
b3JpZ2luIGlzIGdpdmVuJykKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdObyBwYXRoIGlzIGdpdmVuJykKKyAgICAgICAgaWYgb3JpZ2luLnNj
aGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1lICE9ICdodHRwJzoKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9yaWdpbl9zdHJpbmcpCisg
ICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5nKQorCisgICAgICAgICMgVG8g
bWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2NlcHQgb25seSBzaW1wbGUgcGF0aCBzdHJp
bmdzLgorICAgICAgICBtID0gcmUuY29tcGlsZSgnXi8oW2EtekEtWjAtOVwuX1wtXSspJCcpLm1h
dGNoKHBhdGgucGF0aCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICVzJyAlIHBhdGhfc3RyaW5nKQorCisgICAgICAgIGhh
bmRsZXJfbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgcXVlcnkgPSBkaWN0KHVybGxpYi5wYXJz
ZS5wYXJzZV9xc2wocGF0aC5xdWVyeSkpCisgICAgICAgIHNlbGYuaGFuZGxlciA9IHNlbGYuY3Jl
YXRlX2V2ZW50X2hhbmRsZXIoaGFuZGxlcl9uYW1lKQorICAgICAgICBzZWxmLmhhbmRsZXIuaGFu
ZGxlX2NsaWVudF9pbmRpY2F0aW9uKG9yaWdpbl9zdHJpbmcsIHF1ZXJ5KQorICAgICAgICBpZiBz
ZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IFRydWUKKyAgICAgICAgbG9nZ2luZy5s
b2cobG9nZ2luZy5JTkZPLCAnQ2xpZW50IGluZGljYXRpb24gZmluaXNoZWQnKQorCisgICAgZGVm
IGNyZWF0ZV9ldmVudF9oYW5kbGVyKHNlbGYsIGhhbmRsZXJfbmFtZTogc3RyKSAtPiBOb25lOgor
ICAgICAgICBnbG9iYWxfZGljdCA9IHt9CisgICAgICAgIHdpdGggb3BlbihoYW5kbGVyc19wYXRo
ICsgJy8nICsgaGFuZGxlcl9uYW1lKSBhcyBmOgorICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwg
Z2xvYmFsX2RpY3QpCisgICAgICAgIHJldHVybiBFdmVudEhhbmRsZXIoc2VsZiwgZ2xvYmFsX2Rp
Y3QpCisKKyAgICBkZWYgaXNfY2xvc2luZ19vcl9jbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgaWYgc2VsZi5fcXVpYy5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGlmIHNlbGYuX3F1aWMuX3N0YXRlIGluIEVORF9TVEFURVM6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBTZXNzaW9uVGlj
a2V0U3RvcmU6CisgICAgJycnCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lv
biB0aWNrZXRzLgorICAgICcnJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisg
ICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxm
LCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1
cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9u
PSdRVUlDIHNlcnZlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy1jJywK
KyAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVx
dWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20g
dGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0taG9zdCcsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBkZWZhdWx0PSc6Oics
CisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgKGRlZmF1bHRz
IHRvIDo6KScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXBv
cnQnLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMzLAorICAgICAgICBo
ZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0byA0NDMzKScsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctaycsCisgICAgICAgICct
LXByaXZhdGUta2V5JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUs
CisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZp
ZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWhh
bmRsZXJzLXBhdGgnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNUcmFuc3BvcnQgZXZlbnQg
aGFuZGxlcnMnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLXYn
LAorICAgICAgICAnLS12ZXJib3NlJywKKyAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCisgICAgKQorICAgIGFyZ3Mg
PSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAg
ICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMn
LAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dp
bmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24o
CisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsnd3EtdnZ2LTAxJ10gKyBbJ3NpZHVjayddLAorICAg
ICAgICBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1
NTM2LAorICAgICkKKworICAgIGhhbmRsZXJzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5leHBhbmR1c2VyKGFyZ3MuaGFuZGxlcnNfcGF0aCkpCisgICAgbG9nZ2luZy5sb2cobG9nZ2lu
Zy5JTkZPLCAncG9ydCA9ICVzJyAlIGFyZ3MucG9ydCkKKyAgICBsb2dnaW5nLmxvZyhsb2dnaW5n
LklORk8sICdoYW5kbGVycyBwYXRoID0gJXMnICUgaGFuZGxlcnNfcGF0aCkKKworICAgICMgbG9h
ZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQorICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2No
YWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3MucHJpdmF0ZV9rZXkpCisKKyAgICB0aWNrZXRfc3Rv
cmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50
X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBzZXJ2ZSgKKyAg
ICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAgICAgIGFyZ3MucG9ydCwKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1RdWljVHJhbnNwb3J0UHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICkKKyAgICApCisgICAgdHJ5OgorICAgICAgICBs
b29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAg
IHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY1MjYwYzc4ZjdhYzg1NzliZDkxMWJjZjljY2U2MzY0NWM4MGU0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEgQEAKK2Fpb3F1aWM9PTAuOC43CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5M2YyNWUyN2JkYjNhZmQ0
YmYzOTkyMWU5NmFiZGNjNDIzM2Y5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpAQCAtMCww
ICsxLDI4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IHN5cworCisKK2RlZiBnZXRfcGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJ0dXJuIG9uIHZlcmJvc2UgbG9nZ2luZyIpCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2Rl
ZiBydW4odmVudiwgKiprd2FyZ3MpOgorICAgICMgVE9ETyhIZXhjbGVzKTogUmVwbGFjZSB0aGlz
IHdpdGggYWN0dWFsIGltcGxlbWVudGF0aW9uLgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAg
IGFzc2VydCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBpbXBvcnQgYWlvcXVpYwor
ICAgIHByaW50KCdhaW9xdWljOiAnICsgYWlvcXVpYy5fX3ZlcnNpb25fXykKKworCitkZWYgbWFp
bigpOgorICAgIGt3YXJncyA9IHZhcnMoZ2V0X3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkKKyAgICBy
ZXR1cm4gcnVuKE5vbmUsICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzdkNTQ1OWUxNTFmMmU0MjkzOWRlOTk1N2I1MTUzM2FiYTZhMGRmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1F
Lm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRfc2VydmVyLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3Jl
cXVpcmVtZW50cy50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19mbGFrZTgudHh0CmluZGV4IDBhNDUyMjQwMTY0MTdjZGRiZjU5MjA5MTk2MzgwY2NlMGEw
ODllZGYuLmFlMTZiZTM5NTVmYmYzZDVmYTk2NDg5NjdjNmM4ZDM5NzUxOTAxM2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVx
dWlyZW1lbnRzX2ZsYWtlOC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dApAQCAtMSw0ICsxLDQg
QEAKLWZsYWtlOD09My43LjkKLXB5Y29kZXN0eWxlPT0yLjUuMAotcHlmbGFrZXM9PTIuMS4xCi1w
ZXA4LW5hbWluZz09MC45LjEKK2ZsYWtlOD09My44LjIKK3B5Y29kZXN0eWxlPT0yLjYuMAorcHlm
bGFrZXM9PTIuMi4wCitwZXA4LW5hbWluZz09MC4xMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDE5NGY0Mjg0YjI2OTAzYjFmYWY5NjliNmFiNWQz
MGY1YzQ4ZWI1NjIuLjk4OGZmZTg0ODE3NGY3MjE1Mjc4YzJjNDAxOWY5MjRiZWQzYTYxZjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX215cHkudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC0xLDMgKzEs
MyBAQAotbXlweT09MC43NTAKK215cHk9PTAuNzcwCiBteXB5LWV4dGVuc2lvbnM9PTAuNC4zCi10
eXBlZC1hc3Q9PTEuNC4wCit0eXBlZC1hc3Q9PTEuNC4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5l
ci9yZXBvcnQucHkKaW5kZXggNWViOGQ2N2M3ZjZkYTljNWZkMDFkZThkZTQwZjVjYzkyYzExYmU5
MC4uZTk5ODZmZGIzOTgyNWNkNWU0OWY4ZDRhMTU4Yzc5NDhhZDUyODFlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
cmVwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQpAQCAtNSwxMCArNSwxMSBAQCBmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBp
bXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKKwogZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQogZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLQotaW1wb3J0IHR5cGVzCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCiAKIAogZGVmIGh0bWxfZXNjYXBlKGl0ZW0sIGVzY2FwZV9xdW90ZT1G
YWxzZSk6CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIE5vZGUob2JqZWN0KToKICAgICAgICAgICAg
IGF0dHJzX3VuaWNvZGUgPSAiICIgKyAiICIuam9pbigiJXM9XCIlc1wiIiAlIChodG1sX2VzY2Fw
ZShrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWxfZXNjYXBlKHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZV9xdW90ZT1U
cnVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmF0
dHJzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dHJzX3VuaWNvZGUgPSAiIgogICAg
ICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2VsZi5uYW1lLApAQCAtMTU3LDcgKzE1
OCw3IEBAIGRlZiB0ZXN0X2lkKGlkKToKIAogZGVmIGFsbF90ZXN0cyhkYXRhKToKICAgICB0ZXN0
cyA9IGRlZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRl
bXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEpOgogICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAgIGlkID0gdGVzdF9p
ZChyZXN1bHRbInRlc3QiXSkKICAgICAgICAgICAgIHRlc3RzW2lkXSB8PSB7c3VidGVzdFsibmFt
ZSJdIGZvciBzdWJ0ZXN0IGluIHJlc3VsdFsic3VidGVzdHMiXX0KQEAgLTE4NSw3ICsxODYsNyBA
QCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKIAogICAgIHJlc3VsdHNfYnlfdGVzdCA9IGRlZmF1
bHRkaWN0KHJlc3VsdCkKIAotICAgIGZvciBVQSwgcmVzdWx0cyBpbiBkYXRhLml0ZXJpdGVtcygp
OgorICAgIGZvciBVQSwgcmVzdWx0cyBpbiBpdGVyaXRlbXMoZGF0YSk6CiAgICAgICAgIGZvciB0
ZXN0X2RhdGEgaW4gcmVzdWx0c1sicmVzdWx0cyJdOgogICAgICAgICAgICAgaWQgPSB0ZXN0X2lk
KHRlc3RfZGF0YVsidGVzdCJdKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0c19ieV90ZXN0
W2lkXQpAQCAtMjMwLDEwICsyMzEsMTAgQEAgZGVmIHRlc3RfbGluayh0ZXN0X2lkLCBzdWJ0ZXN0
PU5vbmUpOgogZGVmIHN1bW1hcnkoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgogICAgICIiIlJlbmRl
ciB0aGUgaW1wbGVtZW50YXRpb24gcmVwb3J0IHN1bW1hcnkiIiIKICAgICBub3RfcGFzc2luZyA9
IFtdCi0gICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gcmVzdWx0c19ieV90ZXN0Lml0ZXJpdGVtcygp
OgorICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRzX2J5X3Rlc3QpOgog
ICAgICAgICBpZiBub3QgYW55KGl0ZW1bMF0gaW4gKCJQQVNTIiwgIk9LIikgZm9yIGl0ZW0gaW4g
cmVzdWx0c1siaGFybmVzcyJdLnZhbHVlcygpKToKICAgICAgICAgICAgIG5vdF9wYXNzaW5nLmFw
cGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RfcmVz
dWx0cyBpbiByZXN1bHRzWyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3Vi
dGVzdF9uYW1lLCBzdWJ0ZXN0X3Jlc3VsdHMgaW4gaXRlcml0ZW1zKHJlc3VsdHNbInN1YnRlc3Rz
Il0pOgogICAgICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdID09ICJQQVNTIiBmb3IgaXRlbSBp
biBzdWJ0ZXN0X3Jlc3VsdHMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAgIG5vdF9wYXNzaW5n
LmFwcGVuZCgodGVzdCwgc3VidGVzdF9uYW1lKSkKICAgICBpZiBub3RfcGFzc2luZzoKQEAgLTI2
MCw3ICsyNjEsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1bHQpOgogICAgICAg
ICBjbGFzc189InRlc3QiCiAgICAgKQogCi0gICAgZm9yIG5hbWUsIHN1YnRlc3RfcmVzdWx0IGlu
IHNvcnRlZChyZXN1bHRbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCkpOgorICAgIGZvciBuYW1lLCBz
dWJ0ZXN0X3Jlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdFsic3VidGVzdHMiXSkpOgog
ICAgICAgICB5aWVsZCBoLnRyKAogICAgICAgICAgICAgaC50ZChuYW1lKSwKICAgICAgICAgICAg
IFtzdGF0dXNfY2VsbChzdGF0dXMsIG1lc3NhZ2UpCkBAIC0yNzEsNyArMjcyLDcgQEAgZGVmIHJl
c3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKIAogZGVmIHJlc3VsdF9ib2RpZXMoVUFzLCBy
ZXN1bHRzX2J5X3Rlc3QpOgogICAgIHJldHVybiBbaC50Ym9keShyZXN1bHRfcm93cyhVQXMsIHRl
c3QsIHJlc3VsdCkpCi0gICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHNvcnRlZChyZXN1
bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCkpXQorICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBp
biBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCkpXQogCiAKIGRlZiBnZW5lcmF0ZV9o
dG1sKFVBcywgcmVzdWx0c19ieV90ZXN0KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5l
ci5qcwppbmRleCBkYWFmOWQ0NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1MmQwMDM1Li4yNzk0
NmUxMzliOWFhM2I4MDZhMWFkMjQ1MTUzOTg4Y2Y3OGY3NDQyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvcnVubmVyLmpzCkBAIC0xNiwyMiArMTYsNiBAQCBNYW5pZmVzdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZ2VuZXJhdGUobG9hZGVkX2NhbGxiYWNrKTsKICAgICB9LAogCi0g
ICAgZG9fbG9hZDogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7Ci0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCEo
eGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCAiICsgdGhpcy5wYXRoICsgIiBmYWlsZWQgdG8g
bG9hZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJz
ZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGxvYWRlZF9jYWxsYmFjaygpOwotICAg
ICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCB0aGlzLnBhdGgpOwot
ICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9LAotCiAgICAgZ2VuZXJhdGU6IGZ1bmN0aW9u
KGxvYWRlZF9jYWxsYmFjaykgewogICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKQEAgLTQx
LDcgKzI1LDggQEAgTWFuaWZlc3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCEoeGhy
LnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7CiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCBnZW5lcmF0aW9uIGZhaWxlZCIpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhpcy5kb19sb2FkKGxvYWRlZF9jYWxsYmFjayk7CisgICAgICAg
ICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAg
ICAgbG9hZGVkX2NhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgeGhy
Lm9wZW4oIlBPU1QiLCAidXBkYXRlX21hbmlmZXN0LnB5Iik7CiAgICAgICAgIHhoci5zZW5kKG51
bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5
CmluZGV4IDcxNGQyYjUzYjM5YTk4OWQ0ZjMzY2UxZDU4N2Q2MzRkMjBhNjFkNDQuLjFhMjRlMTQz
NDc4ZWFjYzBmNjI0MzBiNWJiY2IyMzNjYzY1MDI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5p
ZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKQEAgLTcsMjEgKzcsMzAgQEAgbG9jYWxw
YXRocyA9IGltcC5sb2FkX3NvdXJjZSgibG9jYWxwYXRocyIsIG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4oaGVyZSwgb3MKIAogcm9vdCA9IGxvY2FscGF0aHMucmVwb19yb290CiAKLWZyb20g
bWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK2Zyb20gbWFuaWZlc3QgaW1wb3J0IG1h
bmlmZXN0CiAKIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHJvb3QsICJNQU5JRkVTVC5qc29uIikKIAotICAgIG1hbmlmZXN0X2ZpbGUgPSBOb25l
Ci0gICAgdHJ5OgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZChyb290LCBw
YXRoKQotICAgIGV4Y2VwdCBtYW5pZmVzdC5NYW5pZmVzdFZlcnNpb25NaXNtYXRjaDoKLSAgICAg
ICAgcGFzcwotICAgIGlmIG1hbmlmZXN0X2ZpbGUgaXMgTm9uZToKLSAgICAgICAgbWFuaWZlc3Rf
ZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCIvIikKLQotICAgIHVwZGF0ZS51cGRhdGUocm9vdCwg
bWFuaWZlc3RfZmlsZSkKLQotICAgIG1hbmlmZXN0LndyaXRlKG1hbmlmZXN0X2ZpbGUsIHBhdGgp
Ci0KLSAgICByZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKV0sIGpz
b24uZHVtcHMoeyJ1cmwiOiAiL01BTklGRVNULmpzb24ifSkKKyAgICAjIFRPRE8gbWFrZSB0aGlz
IGRvd25sb2FkIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHdoZW4gcG9zc2li
bGUKKyAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHJvb3QsIHBh
dGgsICIvIiwgcGFyYWxsZWw9RmFsc2UpCisKKyAgICBzdXBwb3J0ZWRfdHlwZXMgPSBbInRlc3Ro
YXJuZXNzIiwgInJlZnRlc3QiLCAibWFudWFsIl0KKyAgICBkYXRhID0geyJpdGVtcyI6IHt9LAor
ICAgICAgICAgICAgInVybF9iYXNlIjogIi8ifQorICAgIGZvciBpdGVtX3R5cGUgaW4gc3VwcG9y
dGVkX3R5cGVzOgorICAgICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0gPSB7fQorICAgIGZv
ciBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2ZpbGUuaXRlcnR5cGVzKCpzdXBw
b3J0ZWRfdHlwZXMpOgorICAgICAgICB0ZXN0c19kYXRhID0gW10KKyAgICAgICAgZm9yIGl0ZW0g
aW4gdGVzdHM6CisgICAgICAgICAgICB0ZXN0X2RhdGEgPSBbaXRlbS51cmxbMTpdXQorICAgICAg
ICAgICAgaWYgaXRlbV90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAgICAgICB0ZXN0X2Rh
dGEuYXBwZW5kKGl0ZW0ucmVmZXJlbmNlcykKKyAgICAgICAgICAgIHRlc3RfZGF0YS5hcHBlbmQo
e30pCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgIT0gIm1hbnVhbCI6CisgICAgICAgICAgICAg
ICAgdGVzdF9kYXRhWy0xXVsidGltZW91dCJdID0gaXRlbS50aW1lb3V0CisgICAgICAgICAgICB0
ZXN0c19kYXRhLmFwcGVuZCh0ZXN0X2RhdGEpCisgICAgICAgIGFzc2VydCBwYXRoIG5vdCBpbiBk
YXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0KKyAgICAgICAgZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVd
W3BhdGhdID0gdGVzdHNfZGF0YQorCisgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qc29uIildLCBqc29uLmR1bXBzKGRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9z
ZXJ2ZS5weQppbmRleCAxODY4YjFhMzZlNTFjMTg3NDkxZDczYWEyNzA4NDg0ZGE4ODIwNDJmLi40
M2ZmN2JkMGRmYmFjNWVhZTc0Y2JlNDMyMzVmMDE2YzRmZTE0ZDM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2VydmUvc2VydmUucHkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHN0YW5kYWxvbmUgYXMgcHl3ZWJzb2NrZXQKIAogCiBFRElUX0hPU1RTX0hFTFAgPSAo
IlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1YmRvbWFpbnMgIgotICAgICAg
ICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2aWNlIGluIC9ldGMvaG9z
dHMuICIKLSAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0I3J1bm5pbmctdGhlLXRlc3RzICIKKyAgICAgICAgICAgICAgICAgICAi
YXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3RzLlxuIgorICAgICAg
ICAgICAgICAgICAgICJTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmct
dGVzdHMvZnJvbS1sb2NhbC1zeXN0ZW0uaHRtbCNzeXN0ZW0tc2V0dXAgIgogICAgICAgICAgICAg
ICAgICAgICJmb3IgaW5zdHJ1Y3Rpb25zLiIpCiAKIApAQCAtMTc4LDkgKzE3OCw5IEBAIGNsYXNz
IEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAKICAgICBkZWYgY2hlY2tfZXhw
b3N1cmUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHNlbGYuZ2xvYmFsX3R5cGU6Ci0gICAg
ICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAgICBnbG9iYWxzID0gdSIiCiAgICAgICAg
ICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYuX2dldF9tZXRhZGF0YShyZXF1ZXN0KToKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtl
eSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE4OSwyMyArMTg5LDIzIEBAIGNsYXNzIEh0bWxX
cmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmdsb2JhbF90eXBlKQogCiAgICAgZGVmIF9tZXRhX3JlcGxhY2VtZW50
KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJ0aW1lb3V0IjoKLSAgICAg
ICAgICAgIGlmIHZhbHVlID09IGIibG9uZyI6CisgICAgICAgIGlmIGtleSA9PSAidGltZW91dCI6
CisgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibG9uZyI6CiAgICAgICAgICAgICAgICAgcmV0dXJu
ICc8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4nCi0gICAgICAgIGlmIGtleSA9
PSBiInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJl
cGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICAgICAgICBpZiBrZXkg
PT0gInRpdGxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiJiIsICImYW1w
OyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgICAgICAgICByZXR1cm4gJzx0aXRsZT4lczwv
dGl0bGU+JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3NjcmlwdF9y
ZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIic2NyaXB0
IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBsYWNl
KCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQorICAgICAgICBpZiBrZXkgPT0g
InNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCImIiwgIiZh
bXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQogICAgICAgICAgICAgcmV0dXJuICc8c2NyaXB0
IHNyYz0iJXMiPjwvc2NyaXB0PicgJSBhdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
CiBjbGFzcyBXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJkZWRpY2F0ZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5cGUgPSAiZGVkaWNhdGVkd29y
a2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIs
ICIuYW55Lndvcmtlci5qcyIpLAogICAgICAgICAgICAgICAgICAgICAoIi53b3JrZXIuaHRtbCIs
ICIud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjM0
LDcgKzIzNCw3IEBAIGNsYXNzIFdpbmRvd0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKIAog
CiBjbGFzcyBBbnlIdG1sSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJ3aW5kb3ciCisgICAgZ2xvYmFsX3R5cGUgPSAid2luZG93IgogICAgIHBhdGhfcmVw
bGFjZSA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9j
dHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzZWxm
LkdMT0JBTCA9IHsKIAogCiBjbGFzcyBTaGFyZWRXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhh
bmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzaGFyZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2hhcmVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkuc2hhcmVkd29y
a2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAgIHdyYXBwZXIgPSAi
IiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0yNjksNyArMjY5LDcg
QEAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigiJShwYXRoKXMlKHF1
ZXJ5KXMiKSk7CiAKIAogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFu
ZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiInNlcnZpY2V3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3
b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9
ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTMwNywxMSArMzA3
LDExIEBAIGRvbmUoKTsKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfc2NyaXB0X3Jl
cGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJzY3JpcHQi
OgotICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2Uo
IlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAic2Ny
aXB0IjoKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLnJlcGxhY2UoIlxcIiwgIlxcXFwi
KS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ2ltcG9ydFNjcmlwdHMo
IiVzIiknICUgYXR0cmlidXRlCi0gICAgICAgIGlmIGtleSA9PSBiInRpdGxlIjoKLSAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIlxcIiwgIlxcXFwiKS5y
ZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCIn
KQogICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFfVElUTEUgPSAiJXMiOycgJSB2YWx1ZQog
ICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNTEsNyArMzUxLDcgQEAgY2xhc3MgUm91dGVzQnVp
bGRlcihvYmplY3QpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBo
ZWFkZXJzID0ge30KICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzLlN0YXRpY0hhbmRsZXIocGF0
aCwgZm9ybWF0X2FyZ3MsIGNvbnRlbnRfdHlwZSwgKipoZWFkZXJzKQotICAgICAgICBzZWxmLmFk
ZF9oYW5kbGVyKGIiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRf
aGFuZGxlcigiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKIAogICAgIGRlZiBhZGRfbW91bnRf
cG9pbnQoc2VsZiwgdXJsX2Jhc2UsIHBhdGgpOgogICAgICAgICB1cmxfYmFzZSA9ICIvJXMvIiAl
IHVybF9iYXNlLnN0cmlwKCIvIikgaWYgdXJsX2Jhc2UgIT0gIi8iIGVsc2UgIi8iCkBAIC0zNjYs
NiArMzY2LDcgQEAgY2xhc3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAgICAgICAgICAgKCJH
RVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2VydmljZVdvcmtlcnNIYW5kbGVyKSwK
ICAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIsIEFueVdvcmtlckhhbmRsZXIp
LAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hc2lzIiwgaGFuZGxlcnMuQXNJc0hhbmRsZXIpLAor
ICAgICAgICAgICAgKCJHRVQiLCAiLy53ZWxsLWtub3duL29yaWdpbi1wb2xpY3kiLCBoYW5kbGVy
cy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAgICAgICAgICAgICgiKiIsICIqLnB5IiwgaGFuZGxl
cnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqIiwgaGFuZGxl
cnMuRmlsZUhhbmRsZXIpCiAgICAgICAgIF0KQEAgLTQxOCwxMCArNDE5LDEwIEBAIGNsYXNzIFNl
cnZlclByb2Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kYWVtb24g
PSBpbml0X2Z1bmMoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25m
aWcsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAg
cHJpbnQoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVzIiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikK
KyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU29ja2V0IGVycm9yIG9uIHBvcnQgJXMiICUg
cG9ydCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGZp
bGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCh0cmFjZWJhY2suZm9y
bWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBzZWxmLmRhZW1vbjoK
QEAgLTUxNSw3ICs1MTYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMs
IHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgYXNzZXJ0
IGxlbihwb3J0cykgPT0geyJodHRwIjogMn0uZ2V0KHNjaGVtZSwgMSkKIAogICAgICAgICAjIElm
IHRyeWluZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBhdGliaWxpdHkKLSAg
ICAgICAgaWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21wYXRpYmxlKCk6Cisg
ICAgICAgIGlmIHNjaGVtZSA9PSAnaDInIGFuZCBub3QgaHR0cDJfY29tcGF0aWJsZSgpOgogICAg
ICAgICAgICAgbG9nZ2VyLmVycm9yKCdDYW5ub3Qgc3RhcnQgSFRUUC8yLjAgc2VydmVyIGFzIHRo
ZSBlbnZpcm9ubWVudCBpcyBub3QgY29tcGF0aWJsZS4gJyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1JlcXVpcmVzIFB5dGhvbiAyLjcuMTArICg8IDMuMCkgYW5kIE9wZW5TU0wgMS4wLjIr
JykKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MjUsNyArNTI2LDcgQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGluaXRfZnVu
YyA9IHsiaHR0cCI6IHN0YXJ0X2h0dHBfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJodHRwcyI6IHN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Ijogc3RhcnRfaHR0cDJfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ3cyI6IHN0
YXJ0X3dzX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3NzIjogc3RhcnRfd3Nz
X3NlcnZlcn1bc2NoZW1lXQogCkBAIC01MzcsNTAgKzUzOCw2OCBAQCBkZWYgc3RhcnRfc2VydmVy
cyhob3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dh
cmdzKToKICAgICByZXR1cm4gc2VydmVycwogCiAKK2RlZiBzdGFydHVwX2ZhaWxlZChsb2c9VHJ1
ZSk6CisgICAgIyBMb2c9RmFsc2UgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICBpZiBsb2c6CisgICAg
ICAgIGxvZ2dlci5jcml0aWNhbChFRElUX0hPU1RTX0hFTFApCisgICAgZWxzZToKKyAgICAgICAg
cHJpbnQoIkNSSVRJQ0FMICVzIiAlIEVESVRfSE9TVFNfSEVMUCwgZmlsZT1zeXMuc3RkZXJyKQor
ICAgIHN5cy5leGl0KDEpCisKKwogZGVmIHN0YXJ0X2h0dHBfc2VydmVyKGhvc3QsIHBvcnQsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJu
IHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3J0PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJvdXRlcz1yb3V0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdy
aXRlcz1yZXdyaXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRk
cmVzcz1iaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPU5vbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IikpCisg
ICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRy
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPU5vbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nf
cm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xf
Y29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25u
ZWN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5PWt3YXJncy5n
ZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0
SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1w
YXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3Jp
dGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRf
YWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2Zp
bGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29u
bmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwMl9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfY2xzPXdwdHNlcnZl
Lkh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9z
c2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNvbmZp
Zy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xf
Y29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3
cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyX2Nscz13cHRzZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jv
b3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM9cm91dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5k
X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPWNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNz
bF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcu
c3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICBleGNlcHQgRXhj
ZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogY2xhc3MgV2ViU29ja2V0RGFl
bW9uKG9iamVjdCk6CkBAIC01OTEsMjEgKzYxMCw5IEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiLXciLCBoYW5kbGVyc19yb290XQogCiAgICAg
ICAgIGlmIHNzbF9jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdXN1
YWxseSBkb25lIHRocm91Z2ggcHl3ZWJzb2NrZXQubWFpbiwgaG93ZXZlciB3ZSdyZQotICAgICAg
ICAgICAgIyB3b3JraW5nIGFyb3VuZCB0aGF0IHRvIGdldCB0aGUgc2VydmVyIGluc3RhbmNlIGFu
ZCBtYW51YWxseQotICAgICAgICAgICAgIyBzZXR1cCB0aGUgd3NzIHNlcnZlci4KLSAgICAgICAg
ICAgIGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxzX21v
ZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfU1RBTkRBUkRfTU9EVUxFCi0gICAgICAgICAgICBl
bGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxz
X21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfUFlPUEVOU1NMCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHByaW50KCJObyBTU0wgbW9kdWxlIGF2YWlsYWJsZSIpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAgICAgY21kX2FyZ3MgKz0gWyItLXRs
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHJpdmF0ZS1rZXkiLCBzc2xfY29uZmln
WyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICItLWNlcnRpZmljYXRlIiwg
c3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tdGxz
LW1vZHVsZSIsIHRsc19tb2R1bGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY2VydGlm
aWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXV0KIAogICAgICAgICBpZiAoYmluZF9hZGRy
ZXNzKToKICAgICAgICAgICAgIGNtZF9hcmdzID0gWyItSCIsIGhvc3RdICsgY21kX2FyZ3MKQEAg
LTYxNCw2ICs2MjEsMTIgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CiAgICAgICAg
IG9wdHMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyID0g
cHl3ZWJzb2NrZXQuV2ViU29ja2V0U2VydmVyKG9wdHMpCiAgICAgICAgIHBvcnRzID0gW2l0ZW1b
MF0uZ2V0c29ja25hbWUoKVsxXSBmb3IgaXRlbSBpbiBzZWxmLnNlcnZlci5fc29ja2V0c10KKyAg
ICAgICAgaWYgbm90IHBvcnRzOgorICAgICAgICAgICAgIyBUT0RPOiBGaXggdGhlIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbiBpbiBXZWJTb2NrZXRzIHByb2Nlc3NlcworICAgICAgICAgICAgIyBzZWUg
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzE5Cisg
ICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIHN0YXJ0IHdlYnNvY2tldCBzZXJ2ZXIgb24gcG9y
dCAlcywgIgorICAgICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJlYWR5IHVzaW5nIHRo
YXQgcG9ydD8iICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcmFpc2UgT1NF
cnJvcigpCiAgICAgICAgIGFzc2VydCBhbGwoaXRlbSA9PSBwb3J0c1swXSBmb3IgaXRlbSBpbiBw
b3J0cykKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydHNbMF0KICAgICAgICAgc2VsZi5zdGFydGVk
ID0gRmFsc2UKQEAgLTY2MiwxMiArNjc1LDE1IEBAIGRlZiBzdGFydF93c19zZXJ2ZXIoaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAg
ICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9hZF9tb2R1bGUobG9n
Z2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4gV2ViU29ja2V0RGFl
bW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29uZmlnPU5v
bmUpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcucGF0aHNbIndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25m
aWc9Tm9uZSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZChs
b2c9RmFsc2UpCiAKIAogZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKQEAgLTY3NSwxMiArNjkxLDE1
IEBAIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRf
YWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBpbiB0aGUgbG9nZ2luZyBtb2R1bGUg
dW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2df
bG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19y
b290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9v
dCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLnNzbF9jb25maWcpCisgICAgdHJ5OgorICAgICAgICBy
ZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQorICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkKIAogCiBkZWYgc3Rh
cnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKQEAgLTcwNSw4ICs3MjQsMTEgQEAgZGVmIGl0
ZXJfcHJvY3Moc2VydmVycyk6CiBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgIHJ2ID0gQ29uZmlnQnVpbGRlcigpCiAKLSAgICBpZiBrd2FyZ3MuZ2V0
KCJoMiIpOgotICAgICAgICBydi5fZGVmYXVsdFsicG9ydHMiXVsiaHR0cDIiXSA9IFs5MDAwXQor
ICAgIGVuYWJsZV9odHRwMiA9IGt3YXJncy5nZXQoImgyIikKKyAgICBpZiBlbmFibGVfaHR0cDIg
aXMgTm9uZToKKyAgICAgICAgZW5hYmxlX2h0dHAyID0gVHJ1ZQorICAgIGlmIGVuYWJsZV9odHRw
MjoKKyAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImgyIl0gPSBbOTAwMF0KIAogICAgIGlm
IG92ZXJyaWRlX3BhdGggYW5kIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgpOgogICAgICAg
ICB3aXRoIG9wZW4ob3ZlcnJpZGVfcGF0aCkgYXMgZjoKQEAgLTczOSw2ICs3NjEsOSBAQCBkZWYg
YnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogZGVmIF9tYWtlX3N1
YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKICAgICByZXR1cm4ge3UiLiIuam9pbih4KSBm
b3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGluIHJhbmdlKDEsIGRl
cHRoKzEpKSl9CiAKK2RlZiBfbWFrZV9vcmlnaW5fcG9saWN5X3N1YmRvbWFpbnMobGltaXQpOgor
ICAgIHJldHVybiB7dSJvcCVkIiAlIHggZm9yIHggaW4gcmFuZ2UoMSxsaW1pdCsxKX0KKwogCiBf
c3ViZG9tYWlucyA9IHt1Ind3dyIsCiAgICAgICAgICAgICAgICB1Ind3dzEiLApAQCAtNzUwLDYg
Kzc3NSwxMiBAQCBfbm90X3N1YmRvbWFpbnMgPSB7dSJub25leGlzdGVudCJ9CiAKIF9zdWJkb21h
aW5zID0gX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9zdWJkb21haW5zKQogCisjIE9yaWdpbiBw
b2xpY3kgc3ViZG9tYWlucyBuZWVkIHRvIG5vdCBiZSByZXVzZWQgYnkgYW55IG90aGVyIHRlc3Rz
LCBzaW5jZSBvcmlnaW4gcG9saWNpZXMgaGF2ZQorIyBvcmlnaW4td2lkZSBpbXBhY3RzIGxpa2Ug
aW5zdGFsbGluZyBhIENTUCBvciBGZWF0dXJlIFBvbGljeSB0aGF0IGNvdWxkIGludGVyZmVyZSB3
aXRoIGZlYXR1cmVzCisjIHVuZGVyIHRlc3QuCisjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3JmY3MvcHVsbC80NC4KK19zdWJkb21haW5zIHw9IF9tYWtlX29yaWdp
bl9wb2xpY3lfc3ViZG9tYWlucyg5OSkKKwogX25vdF9zdWJkb21haW5zID0gX21ha2Vfc3ViZG9t
YWluc19wcm9kdWN0KF9ub3Rfc3ViZG9tYWlucykKIAogCkBAIC04NDUsOSArODc2LDEwIEBAIGRl
ZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIFdl
YlNvY2tldHMgZG9jdW1lbnQgcm9vdC4gT3ZlcnJpZGVzIGNvbmZpZy4iKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tYWxpYXNfZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJhbGlhc19m
aWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGUgd2l0aCBlbnRyaWVzIGZv
ciBhbGlhc2VzL211bHRpcGxlIGRvYyByb290cy4gSW4gZm9ybSBvZiBgL0FMSUFTX05BTUUvLCBE
T0NfUk9PVFxcbmAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGbGFn
IGZvciBlbmFibGluZyB0aGUgSFRUUC8yLjAgc2VydmVyIikKLSAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKGgyPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1u
by1oMiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIEhUVFAvMi4wIHNlcnZlciIp
CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKQEAgLTg5MCwxNiArOTIyLDIyIEBAIGRlZiBydW4oKipr
d2FyZ3MpOgogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgaGFuZGxl
X3NpZ25hbCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaGFuZGxl
X3NpZ25hbCkKIAotICAgICAgICAgICAgd2hpbGUgYWxsKGl0ZW0uaXNfYWxpdmUoKSBmb3IgaXRl
bSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQgbm90IHJlY2VpdmVkX3NpZ25hbC5pc19zZXQo
KToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgotICAg
ICAgICAgICAgICAgICAgICBpdGVtLmpvaW4oMSkKLSAgICAgICAgICAgIGV4aXRlZCA9IFtpdGVt
IGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykgaWYgbm90IGl0ZW0uaXNfYWxpdmUoKV0K
LSAgICAgICAgICAgIHN1YmplY3QgPSAic3VicHJvY2VzcyIgaWYgbGVuKGV4aXRlZCkgPT0gMSBl
bHNlICJzdWJwcm9jZXNzZXMiCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAlcyBleGl0
ZWQ6IiAlIChsZW4oZXhpdGVkKSwgc3ViamVjdCkpCi0KLSAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXR1
cyBvZiAlczpcdCVzIiAlIChpdGVtLm5hbWUsICJydW5uaW5nIiBpZiBpdGVtLmlzX2FsaXZlKCkg
ZWxzZSAibm90IHJ1bm5pbmciKSkKKyAgICAgICAgICAgIHdoaWxlIChhbGwoc3VicHJvYy5pc19h
bGl2ZSgpIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFuZAorICAgICAgICAg
ICAgICAgICAgIG5vdCByZWNlaXZlZF9zaWduYWwuaXNfc2V0KCkpOgorICAgICAgICAgICAgICAg
IGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAgICAgICAg
IHN1YnByb2Muam9pbigxKQorCisgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyA9IDAKKyAgICAg
ICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAg
ICAgaWYgc3VicHJvYy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5m
bygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogcnVubmluZycgJSBzdWJwcm9jLm5hbWUpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VicHJvYy5leGl0
Y29kZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1N0YXR1cyBv
ZiBzdWJwcm9jZXNzICIlcyI6IGV4aXRlZCBjb3JyZWN0bHknICUgc3VicHJvYy5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndh
cm5pbmcoJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGZhaWxlZC4gRXhpdCB3aXRoIG5vbi16
ZXJvIHN0YXR1czogJWQnICUgKHN1YnByb2MubmFtZSwgc3VicHJvYy5leGl0Y29kZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyArPSAxCisgICAgICAgICAgICByZXR1
cm4gZmFpbGVkX3N1YnByb2MKIAogCiBkZWYgbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
ZXJ2ZS90ZXN0X3NlcnZlLnB5CmluZGV4IGQ2YzA4MmE5NzAzNTdmNDc3ZTgyY2QyNWExYzA5NTJl
ZTc0NGRiNTQuLmQ5MDI0NzkzY2FmZGExYmIzNjNiNWQzYTM5OWFhOTNhNGQ2OTExMGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdGVzdF9zZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKQEAgLTgyLDcgKzgyLDcgQEAg
ZGVmIHRlc3RfY29uZmlnX2pzb25fbGVuZ3RoKCk6CiAgICAgIyB3ZSBzZXJpYWxpemUgdGhlIGNv
bmZpZyBhcyBKU09OIGZvciBweXRlc3RydW5uZXIgYW5kIHB1dCBpdCBpbiBhbiBlbnYKICAgICAj
IHZhcmlhYmxlLCB3aGljaCBvbiBXaW5kb3dzIG11c3QgaGF2ZSBhIGxlbmd0aCA8PSAweDdGRkYg
KGludDE2KQogICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6Ci0gICAgICAgIGRhdGEgPSBq
c29uLmR1bXBzKGMuYXNfZGljdCgpKQorICAgICAgICBkYXRhID0ganNvbi5kdW1wcyhjLmFzX2Rp
Y3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogICAgIGFzc2VydCBsZW4oZGF0YSkgPD0gMHg3RkZG
CiAKIGRlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X3Vuc3BlY2lmaWVkKCk6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTliMjFkNzQ1ODhlMGI1MTdk
NmU5N2U0N2M2YWVjNmZhZWYwNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApAQCAtMCwwICsxLDEyOCBAQAorbmFtZTogdGVzdHMK
Kworb246IFtwdXNoLCBwdWxsX3JlcXVlc3RdCisKK2pvYnM6CisKKyAgbGludDoKKyAgICBydW5z
LW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAg
d2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5hbWU6IEluc3Rh
bGwgcGFja2FnZXMKKyAgICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBmbGFrZTggaXNvcnQg
bXlweQorICAgICAgLSBuYW1lOiBSdW4gbGludGVycworICAgICAgICBydW46IHwKKyAgICAgICAg
ICBmbGFrZTggZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgaXNvcnQgLWMgLWRmIC1yYyBl
eGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBibGFjayAtLWNoZWNrIC0tZGlmZiBleGFtcGxl
cyBzcmMgdGVzdHMKKyAgICAgICAgICBteXB5IGV4YW1wbGVzIHNyYworCisgIHRlc3Q6CisgICAg
cnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1mYXN0
OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29z
LWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgICAgIHB5dGhvbjogWzMuOCwgMy43LCAzLjZd
CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBw
eXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAgIC0gbmFtZTogRGlzYWJs
ZSBmaXJld2FsbCBhbmQgY29uZmlndXJlIGNvbXBpbGVyCisgICAgICAgIGlmOiBtYXRyaXgub3Mg
PT0gJ21hY29zLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc3VkbyAvdXNyL2xp
YmV4ZWMvQXBwbGljYXRpb25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNldGdsb2JhbHN0YXRl
IG9mZgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNfU0tJUF9URVNUUzo6
Y2hhY2hhMjAiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZMQUdTOjotSS91c3Iv
bG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFt
ZT1MREZMQUdTOjotTC91c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgorICAgICAgLSBuYW1lOiBJ
bnN0YWxsIE9wZW5TU0wKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3Qn
CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNob2NvIGluc3RhbGwgb3BlbnNzbCAtLW5vLXBy
b2dyZXNzCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9JQzpcUHJvZ3JhfjFc
T3BlblNTTC1XaW42NFxpbmNsdWRlIgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxJ
Tks6Oi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorICAgICAgLSBuYW1l
OiBSdW4gdGVzdHMKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcGlwIGluc3RhbGwgLVUgcGlw
IHNldHVwdG9vbHMgd2hlZWwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjb3ZlcmFnZQorICAgICAg
ICAgIHBpcCBpbnN0YWxsIC4KKyAgICAgICAgICBjb3ZlcmFnZSBydW4gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXYKKyAgICAgICAgICBjb3ZlcmFnZSB4bWwKKyAgICAgICAgc2hlbGw6IGJhc2gKKyAg
ICAgIC0gbmFtZTogVXBsb2FkIGNvdmVyYWdlIHJlcG9ydAorICAgICAgICB1c2VzOiBjb2RlY292
L2NvZGVjb3YtYWN0aW9uQHYxCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9uICE9ICdweXB5MycK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMuQ09ERUNPVl9UT0tF
TiB9fQorCisgIHBhY2thZ2Utc291cmNlOgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAg
ICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2Vz
OiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhv
bi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTogQnVpbGQgc291cmNlIHBhY2thZ2UKKyAgICAg
ICAgcnVuOiBweXRob24gc2V0dXAucHkgc2Rpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHNvdXJj
ZSBwYWNrYWdlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHYxCisgICAg
ICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QvCisK
KyAgcGFja2FnZS13aGVlbDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19CisgICAgc3Ry
YXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3Mt
bGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9u
cy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTog
SW5zdGFsbCBuYXNtCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0Jwor
ICAgICAgICBydW46IGNob2NvIGluc3RhbGwgLXkgbmFzbQorICAgICAgLSBuYW1lOiBJbnN0YWxs
IG5tYWtlCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0JworICAgICAg
ICBydW46IHwKKyAgICAgICAgICAmICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXEluc3RhbGxlclx2c19pbnN0YWxsZXIuZXhlIiBtb2RpZnkgYAorICAgICAg
ICAgICAtLWluc3RhbGxQYXRoICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXDIwMTlcRW50ZXJwcmlzZSIgYAorICAgICAgICAgICAtLWFkZCBNaWNyb3NvZnQu
VmlzdWFsU3R1ZGlvLkNvbXBvbmVudC5WQy5Ub29scy54ODYueDY0IC0tcGFzc2l2ZSAtLW5vcmVz
dGFydAorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgLSBuYW1lOiBCdWlsZCB3aGVl
bHMKKyAgICAgICAgZW52OgorICAgICAgICAgIENJQldfQkVGT1JFX0JVSUxEOiBzY3JpcHRzL2J1
aWxkLW9wZW5zc2wgL3RtcC92ZW5kb3IKKyAgICAgICAgICBDSUJXX0JFRk9SRV9CVUlMRF9XSU5E
T1dTOiBzY3JpcHRzXGJ1aWxkLW9wZW5zc2wuYmF0IEM6XGNpYndcdmVuZG9yCisgICAgICAgICAg
Q0lCV19FTlZJUk9OTUVOVDogQUlPUVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9zcyBDRkxBR1M9LUkv
dG1wL3ZlbmRvci9pbmNsdWRlIExERkxBR1M9LUwvdG1wL3ZlbmRvci9saWIKKyAgICAgICAgICBD
SUJXX0VOVklST05NRU5UX1dJTkRPV1M6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxvc3MgQ0w9
Ii9JQzpcY2lid1x2ZW5kb3JcaW5jbHVkZSIgTElOSz0iL0xJQlBBVEg6QzpcY2lid1x2ZW5kb3Jc
bGliIgorICAgICAgICAgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0LSogY3AzNS0qIHBw
MjctKgorICAgICAgICAgIENJQldfVEVTVF9DT01NQU5EOiBweXRob24gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXQge3Byb2plY3R9IC1zIHtwcm9qZWN0fS90ZXN0cworICAgICAgICBydW46IHwKKyAg
ICAgICAgICBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKKyAgICAgICAgICBjaWJ1aWxkd2hlZWwg
LS1vdXRwdXQtZGlyIGRpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHdoZWVscworICAgICAgICB1
c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAg
IG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0LworCisgIHB1Ymxpc2g6CisgICAgcnVu
cy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIG5lZWRzOiBbbGludCwgdGVzdCwgcGFja2FnZS1zb3Vy
Y2UsIHBhY2thZ2Utd2hlZWxdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0Lwor
ICAgICAgLSBuYW1lOiBQdWJsaXNoIHRvIFB5UEkKKyAgICAgICAgaWY6IGdpdGh1Yi5ldmVudF9u
YW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYsICdyZWZzL3RhZ3Mv
JykKKyAgICAgICAgdXNlczogcHlwYS9naC1hY3Rpb24tcHlwaS1wdWJsaXNoQG1hc3RlcgorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHVzZXI6IF9fdG9rZW5fXworICAgICAgICAgIHBhc3N3b3Jk
OiAke3sgc2VjcmV0cy5QWVBJX1RPS0VOIH19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3Jr
Zmxvd3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JjMGFlOTliMjBmNDg5ZWU3N2E4NTU5
ZTUyYWM3OTQ1MzRkYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHVi
L3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkyNGE1
YWEwODM5ODZkMGJkNzA2OWVkYzZlZGRlYWI3Y2UwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQgKGMpIDIwMTkgSmVy
ZW15IExhaW7DqS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5CisgICAgICBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFO
SUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVlMDkwM2Fm
OTk0ZTM0YzM1ZDhiMmVlZTIwYjRiYjNiNzY5ZGUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUgTElDRU5TRQorcmVj
dXJzaXZlLWluY2x1ZGUgZG9jcyAqLnB5ICoucnN0IE1ha2VmaWxlCityZWN1cnNpdmUtaW5jbHVk
ZSBleGFtcGxlcyAqLmh0bWwgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdHMgKi5iaW4gKi5w
ZW0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzIyMDQyYzI0ZGQyNjZkZWExYjcyODQzNjRlOWE1
Y2NlYjY2YTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKQEAg
LTAsMCArMSwxNjQgQEAKK2Fpb3F1aWMKKz09PT09PT0KKworfHJ0ZHwgfHB5cGktdnwgfHB5cGkt
cHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwgfGJsYWNrfAorCisuLiB8cnRk
fCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2Fpb3F1aWMvYmFkZ2Uv
P3ZlcnNpb249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2Nz
LmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92
L2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9h
aW9xdWljCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL3B5dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5
cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8v
cHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGltYWdlOjogaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9iYWRnZS5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvYWN0aW9ucworCisu
LiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRo
dWIvYWlvcnRjL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2do
L2Fpb3J0Yy9haW9xdWljCisKKy4uIHxibGFja3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCisgICAgOnRhcmdldDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9ibGFjaworCitXaGF0IGlzIGBgYWlvcXVpY2BgPworLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJ
QyBuZXR3b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMKK2EgbWluaW1hbCBUTFMg
MS4zIGltcGxlbWVudGF0aW9uLCBhIFFVSUMgc3RhY2sgYW5kIGFuIEhUVFAvMyBzdGFjay4KKwor
UVVJQyBzdGFuZGFyZGlzYXRpb24gaXMgbm90IGZpbmFsaXNlZCB5ZXQsIGJ1dCBgYGFpb3F1aWNg
YCBjbG9zZWx5IHRyYWNrcyB0aGUKK3NwZWNpZmljYXRpb24gZHJhZnRzIGFuZCBpcyByZWd1bGFy
bHkgdGVzdGVkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGFnYWluc3Qgb3RoZXIKK2BRVUlDIGltcGxl
bWVudGF0aW9uc2BfLgorCitUbyBsZWFybiBtb3JlIGFib3V0IGBgYWlvcXVpY2BgIHBsZWFzZSBg
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbmBfLgorCitXaHkgc2hvdWxkIEkgdXNlIGBgYWlvcXVpY2Bg
PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaGFzIGJlZW4g
ZGVzaWduZWQgdG8gYmUgZW1iZWRkZWQgaW50byBQeXRob24gY2xpZW50IGFuZCBzZXJ2ZXIKK2xp
YnJhcmllcyB3aXNoaW5nIHRvIHN1cHBvcnQgUVVJQyBhbmQgLyBvciBIVFRQLzMuIFRoZSBnb2Fs
IGlzIHRvIHByb3ZpZGUgYQorY29tbW9uIGNvZGViYXNlIGZvciBQeXRob24gbGlicmFyaWVzIGlu
IHRoZSBob3BlIG9mIGF2b2lkaW5nIGR1cGxpY2F0ZWQgZWZmb3J0LgorCitCb3RoIHRoZSBRVUlD
IGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0
ZXJuLAorbGVhdmluZyBhY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlz
IGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRo
ZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCitkaWZmZXJlbnQg
Y29uY3VycmVuY3kgbW9kZWxzLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBRVUlDIHN0YWNr
IGNvbmZvcm1pbmcgd2l0aCBkcmFmdC0yNworLSBIVFRQLzMgc3RhY2sgY29uZm9ybWluZyB3aXRo
IGRyYWZ0LTI3CistIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbgorLSBJUHY0IGFuZCBJ
UHY2IHN1cHBvcnQKKy0gY29ubmVjdGlvbiBtaWdyYXRpb24gYW5kIE5BVCByZWJpbmRpbmcKKy0g
bG9nZ2luZyBUTFMgdHJhZmZpYyBzZWNyZXRzCistIGxvZ2dpbmcgUVVJQyBldmVudHMgaW4gUUxP
RyBmb3JtYXQKKy0gSFRUUC8zIHNlcnZlciBwdXNoIHN1cHBvcnQKKworUmVxdWlyZW1lbnRzCist
LS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgcmVxdWlyZXMgUHl0aG9uIDMuNiBvciBiZXR0ZXIs
IGFuZCB0aGUgT3BlblNTTCBkZXZlbG9wbWVudCBoZWFkZXJzLgorCitMaW51eAorLi4uLi4KKwor
T24gRGViaWFuL1VidW50dSBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQg
c3VkbyBhcHQgaW5zdGFsbCBsaWJzc2wtZGV2IHB5dGhvbjMtZGV2CisKK09uIEFscGluZSBMaW51
eCB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIGZvbGxvd2luZzoKKworLi4gY29kZS1ibG9jazo6IGNv
bnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGJzZC1jb21wYXQtaGVhZGVycyBsaWJmZmkt
ZGV2CisKK09TIFgKKy4uLi4KKworT24gT1MgWCBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25z
b2xlCisKKyAgICQgYnJldyBpbnN0YWxsIG9wZW5zc2wKKworWW91IHdpbGwgbmVlZCB0byBzZXQg
c29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBhZ2FpbnN0IE9wZW5TU0w6CisKKy4u
IGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgZXhwb3J0IENGTEFHUz0tSS91c3IvbG9jYWwv
b3B0L29wZW5zc2wvaW5jbHVkZQorICAgJCBleHBvcnQgTERGTEFHUz0tTC91c3IvbG9jYWwvb3B0
L29wZW5zc2wvbGliCisKK1dpbmRvd3MKKy4uLi4uLi4KKworT24gV2luZG93cyB0aGUgZWFzaWVz
dCB3YXkgdG8gaW5zdGFsbCBPcGVuU1NMIGlzIHRvIHVzZSBgQ2hvY29sYXRleWBfLgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICA+IGNob2NvIGluc3RhbGwgb3BlbnNzbAorCitZb3Ug
d2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBsaW5rIGFnYWlu
c3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICA+ICRFbnY6Q0wgPSAi
L0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgID4gJEVudjpMSU5LID0gIi9M
SUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorCitSdW5uaW5nIHRoZSBleGFt
cGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoZSBjb2Rl
IHVzaW5nIGdpdCB5b3UgY2FuIHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAg
JCBwaXAgaW5zdGFsbCAtZSAuCisgICAkIHBpcCBpbnN0YWxsIGFpb2ZpbGVzIGFzZ2lyZWYgaHR0
cGJpbiBzdGFybGV0dGUgd3Nwcm90bworCitIVFRQLzMgc2VydmVyCisuLi4uLi4uLi4uLi4uCisK
K1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIHNlcnZlciwgd2hpY2ggaGFuZGxlcyBib3RoIEhUVFAv
MC45IGFuZCBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgcHl0aG9u
IGV4YW1wbGVzL2h0dHAzX3NlcnZlci5weSAtLWNlcnRpZmljYXRlIHRlc3RzL3NzbF9jZXJ0LnBl
bSAtLXByaXZhdGUta2V5IHRlc3RzL3NzbF9rZXkucGVtCisKK0hUVFAvMyBjbGllbnQKKy4uLi4u
Li4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgY2xpZW50IHRvIHBlcmZvcm0gYW4g
SFRUUC8zIHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRob24g
ZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVtIGh0
dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK0FsdGVybmF0aXZlbHkgeW91IGNhbiBwZXJmb3JtIGFu
IEhUVFAvMC45IHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRo
b24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVt
IC0tbGVnYWN5LWh0dHAgaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworWW91IGNhbiBhbHNvIG9w
ZW4gYSBXZWJTb2NrZXQgb3ZlciBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHlj
YWNlcnQucGVtIHdzczovL2xvY2FsaG9zdDo0NDMzL3dzCisKK0xpY2Vuc2UKKy0tLS0tLS0KKwor
YGBhaW9xdWljYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5zZWBfLgorCisuLiBf
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlvL2Vu
L2xhdGVzdC8KKy4uIF9RVUlDIGltcGxlbWVudGF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL3F1
aWN3Zy9iYXNlLWRyYWZ0cy93aWtpL0ltcGxlbWVudGF0aW9ucworLi4gX2NyeXB0b2dyYXBoeTog
aHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfQ2hvY29sYXRleTogaHR0cHM6Ly9jaG9jb2xh
dGV5Lm9yZy8KKy4uIF9CU0QgbGljZW5zZTogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlv
L2VuL2xhdGVzdC9saWNlbnNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01h
a2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiNzM4Yjk2
MTdmYjJkOWRkMDY2ODRiZDIyNGYwYWQwM2UwNmEwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgTWluaW1hbCBtYWtlZmls
ZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJp
YWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorU1BISU5YT1BUUyAgICA9CitTUEhJTlhCVUlM
RCAgID0gc3BoaW54LWJ1aWxkCitTUEhJTlhQUk9KICAgID0gYWlvcXVpYworU09VUkNFRElSICAg
ICA9IC4KK0JVSUxERElSICAgICAgPSBfYnVpbGQKKworIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAi
bWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBsaWtlICJtYWtlIGhlbHAiLgoraGVscDoKKwlAJChT
UEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5Y
T1BUUykgJChPKQorCisuUEhPTlk6IGhlbHAgTWFrZWZpbGUKKworIyBDYXRjaC1hbGwgdGFyZ2V0
OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJt
YWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJ
TlhPUFRTKS4KKyU6IE1ha2VmaWxlCisJQCQoU1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJ
UikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWM1NjgwOTAxNDYwYjAzMjgz
YTRhYzZjZjY1NGU4YzJhYWM2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvYXN5bmNpby5yc3QKQEAgLTAsMCArMSwzMiBAQAorYXN5bmNpbyBBUEkKKz09PT09PT09PT09
CisKK1RoZSBhc3luY2lvIEFQSSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgUVVJQyBBUEkgYnVpbHQg
b24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLAorUHl0aG9uJ3Mgc3RhbmRhcmQgYXN5bmNocm9ub3Vz
IEkvTyBmcmFtZXdvcmsuCisKK2BgYWlvcXVpY2BgIGNvbWVzIHdpdGggYSBzZWxlY3Rpb24gb2Yg
ZXhhbXBsZXMsIGluY2x1ZGluZzoKKworLSBhbiBIVFRQLzMgY2xpZW50CistIGFuIEhUVFAvMyBz
ZXJ2ZXIKKworVGhlIGV4YW1wbGVzIGNhbiBiZSBicm93c2VkIG9uIEdpdEh1YjoKKworaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3RyZWUvbWFzdGVyL2V4YW1wbGVzCisKKy4uIGF1
dG9tb2R1bGU6OiBhaW9xdWljLmFzeW5jaW8KKworQ2xpZW50CistLS0tLS0KKworICAgIC4uIGF1
dG9mdW5jdGlvbjo6IGNvbm5lY3QKKworU2VydmVyCistLS0tLS0KKworICAgIC4uIGF1dG9mdW5j
dGlvbjo6IHNlcnZlCisKK0NvbW1vbgorLS0tLS0tCisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWlj
Q29ubmVjdGlvblByb3RvY29sCisgICAgICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg5MDYyYWM5NzUzMjZhNDdmODhlZGFlNGQ4ZDM0M2NmZTc2MGMwYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIGFpb3F1aWMg
ZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKKyMgc3Bo
aW54LXF1aWNrc3RhcnQgb24gVGh1IEZlYiAgOCAxNzoyMjoxNCAyMDE4LgorIworIyBUaGlzIGZp
bGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cwor
IyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29uZmln
dXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2VuZXJhdGVkIGZpbGUu
CisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRo
YXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KKworaW1w
b3J0IHN5cywgb3MKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdp
dGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0
b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0
aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQg
YWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFi
c3BhdGgoJy4uJykpCisKKworY2xhc3MgTW9ja0J1ZmZlcjoKKyAgICBCdWZmZXIgPSBOb25lCisg
ICAgQnVmZmVyUmVhZEVycm9yID0gTm9uZQorICAgIEJ1ZmZlcldyaXRlRXJyb3IgPSBOb25lCisK
KworY2xhc3MgTW9ja0NyeXB0bzoKKyAgICBBRUFEID0gTm9uZQorICAgIENyeXB0b0Vycm9yID0g
VmFsdWVFcnJvcgorICAgIEhlYWRlclByb3RlY3Rpb24gPSBOb25lCisKKworY2xhc3MgTW9ja1B5
bHNxcGFjazoKKyAgICBEZWNvZGVyID0gTm9uZQorICAgIEVuY29kZXIgPSBOb25lCisgICAgU3Ry
ZWFtQmxvY2tlZCA9IE5vbmUKKworCitzeXMubW9kdWxlcy51cGRhdGUoeworICAgICJhaW9xdWlj
Ll9idWZmZXIiOiBNb2NrQnVmZmVyKCksCisgICAgImFpb3F1aWMuX2NyeXB0byI6IE1vY2tDcnlw
dG8oKSwKKyAgICAicHlsc3FwYWNrIjogTW9ja1B5bHNxcGFjaygpLAorfSkKKworIyAtLSBHZW5l
cmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhp
bnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KKyMKKyMgbmVlZHNfc3BoaW54ID0gJzEuMCcKKwor
IyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3Mu
IFRoZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3Bo
aW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20KKyMgb25lcy4KK2V4dGVuc2lvbnMgPSBbCisgICAg
J3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJzcGhpbngnLAorICAg
ICdzcGhpbnhfYXV0b2RvY190eXBlaGludHMnLAorICAgICdzcGhpbnhjb250cmliLmFzeW5jaW8n
LAorXQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAnY3J5cHRvZ3JhcGh5JzogKCdodHRw
czovL2NyeXB0b2dyYXBoeS5pby9lbi9sYXRlc3QnLCBOb25lKSwKKyAgICAncHl0aG9uJzogKCdo
dHRwczovL2RvY3MucHl0aG9uLm9yZy8zJywgTm9uZSksCit9CisKKyMgQWRkIGFueSBwYXRocyB0
aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5Lgor
dGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXgoZXMpIG9mIHNv
dXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBzdWZmaXggYXMgYSBs
aXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcsICcubWQnXQorc291
cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1bWVudC4KK21h
c3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJv
amVjdC4KK3Byb2plY3QgPSAnYWlvcXVpYycKK2NvcHlyaWdodCA9IHUnMjAxOSwgSmVyZW15IExh
aW7DqScKK2F1dGhvciA9IHUnSmVyZW15IExhaW7DqScKKworIyBUaGUgdmVyc2lvbiBpbmZvIGZv
ciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9y
CisjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBw
bGFjZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIworIyBUaGUgc2hvcnQg
WC5ZIHZlcnNpb24uCit2ZXJzaW9uID0gJycKKyMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5jbHVkaW5n
IGFscGhhL2JldGEvcmMgdGFncy4KK3JlbGVhc2UgPSAnJworCisjIFRoZSBsYW5ndWFnZSBmb3Ig
Y29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgor
IyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjCisjIFRoaXMgaXMgYWxzbyB1
c2VkIGlmIHlvdSBkbyBjb250ZW50IHRyYW5zbGF0aW9uIHZpYSBnZXR0ZXh0IGNhdGFsb2dzLgor
IyBVc3VhbGx5IHlvdSBzZXQgImxhbmd1YWdlIiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRo
ZXNlIGNhc2VzLgorbGFuZ3VhZ2UgPSBOb25lCisKKyMgTGlzdCBvZiBwYXR0ZXJucywgcmVsYXRp
dmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQKKyMgZGlyZWN0b3Jp
ZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgorIyBUaGlzIHBhdHRl
cm5zIGFsc28gZWZmZWN0IHRvIGh0bWxfc3RhdGljX3BhdGggYW5kIGh0bWxfZXh0cmFfcGF0aAor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJywgJ1RodW1icy5kYicsICcuRFNfU3RvcmUnXQor
CisjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdodGluZykgc3R5bGUg
dG8gdXNlLgorcHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JworCisjIElmIHRydWUsIGB0b2RvYCBh
bmQgYHRvZG9MaXN0YCBwcm9kdWNlIG91dHB1dCwgZWxzZSB0aGV5IHByb2R1Y2Ugbm90aGluZy4K
K3RvZG9faW5jbHVkZV90b2RvcyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25zIGZvciBIVE1MIG91
dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMg
VGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBk
b2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCisjCitodG1sX3Ro
ZW1lID0gJ2FsYWJhc3RlcicKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBh
bmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMgZnVydGhlci4gIEZv
ciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKKyMg
ZG9jdW1lbnRhdGlvbi4KKyMKK2h0bWxfdGhlbWVfb3B0aW9ucyA9IHsKKyAgICAnZGVzY3JpcHRp
b24nOiAnQSBsaWJyYXJ5IGZvciBRVUlDIGluIFB5dGhvbi4nLAorICAgICdnaXRodWJfYnV0dG9u
JzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAnYWlvcnRjJywKKyAgICAnZ2l0aHViX3JlcG8n
OiAnYWlvcXVpYycsCit9CisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHN0
YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3RhdGljIGZp
bGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0ZSB0aGUg
YnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsnX3N0YXRpYyddCisK
KyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtdXN0IGJlIGEgZGljdGlvbmFyeSB0aGF0IG1h
cHMgZG9jdW1lbnQgbmFtZXMKKyMgdG8gdGVtcGxhdGUgbmFtZXMuCisjCisjIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHRoZSBhbGFiYXN0ZXIgdGhlbWUKKyMgcmVmczogaHR0cDovL2FsYWJhc3Rlci5y
ZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5zdGFsbGF0aW9uLmh0bWwjc2lkZWJhcnMKK2h0bWxf
c2lkZWJhcnMgPSB7CisgICAgJyoqJzogWworICAgICAgICAnYWJvdXQuaHRtbCcsCisgICAgICAg
ICduYXZpZ2F0aW9uLmh0bWwnLAorICAgICAgICAncmVsYXRpb25zLmh0bWwnLAorICAgICAgICAn
c2VhcmNoYm94Lmh0bWwnLAorICAgIF0KK30KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxw
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBP
dXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFz
ZW5hbWUgPSAnYWlvcXVpY2RvYycKKworCisjIC0tIE9wdGlvbnMgZm9yIExhVGVYIG91dHB1dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbGF0ZXhfZWxl
bWVudHMgPSB7CisgICAgIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBl
cicpLgorICAgICMKKyAgICAjICdwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAorCisgICAgIyBU
aGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgorICAgICMKKyAgICAjICdw
b2ludHNpemUnOiAnMTBwdCcsCisKKyAgICAjIEFkZGl0aW9uYWwgc3R1ZmYgZm9yIHRoZSBMYVRl
WCBwcmVhbWJsZS4KKyAgICAjCisgICAgIyAncHJlYW1ibGUnOiAnJywKKworICAgICMgTGF0ZXgg
ZmlndXJlIChmbG9hdCkgYWxpZ25tZW50CisgICAgIworICAgICMgJ2ZpZ3VyZV9hbGlnbic6ICdo
dGJwJywKK30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVz
LiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRs
ZSwKKyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNz
XSkuCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdhaW9xdWljLnRleCcs
ICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdtYW51YWwnKSwKK10KKwor
CisjIC0tIE9wdGlvbnMgZm9yIG1hbnVhbCBwYWdlIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0
IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRo
b3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdh
aW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRob3JdLCAxKQorXQor
CisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVlIGlu
dG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0
YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5LCBkZXNjcmlwdGlv
biwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2Fp
b3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9yLCAnYWlvcXVpYycs
ICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0LicsCisgICAgICdNaXNjZWxsYW5lb3Vz
JyksCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI5ZTc2MmY1YTYzNGUyYTM1Nzkx
ZTQ2NWI5MDQ5YmE0YmU2MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3Mv
ZGVzaWduLnJzdApAQCAtMCwwICsxLDM3IEBACitEZXNpZ24KKz09PT09PQorCitTYW5zLUlPIEFQ
SXMKKy4uLi4uLi4uLi4uLgorCitCb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9s
bG93IHRoZSBgc2FucyBJL09gXyBwYXR0ZXJuLCBsZWF2aW5nCithY3R1YWwgSS9PIG9wZXJhdGlv
bnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50
YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRl
Z3JhdGlvbiB3aXRoCitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgorCitUTFMgYW5kIGVu
Y3J5cHRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLgorCitUTFMgMS4zCisrKysrKysrCisKK2BgYWlv
cXVpY2BgIGZlYXR1cmVzIGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uIGJ1aWx0IHVw
b24gdGhlCitgY3J5cHRvZ3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNhdXNlIFFVSUMgcmVx
dWlyZXMgc29tZSBBUElzIHdoaWNoIGFyZQorY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIG1haW5z
dHJlYW0gVExTIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6CisKKy0gdGhlIGFiaWxp
dHkgdG8gZXh0cmFjdCB0cmFmZmljIHNlY3JldHMKKworLSB0aGUgYWJpbGl0eSB0byBvcGVyYXRl
IGRpcmVjdGx5IG9uIFRMUyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUgVExTCisgIHJlY29y
ZCBsYXllcgorCitIZWFkZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNyeXB0aW9uCisrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1FVSUMgbWFrZXMgZXh0ZW5z
aXZlIHVzZSBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVjdCBRVUlDIHBhY2tl
dAoraGVhZGVycyBhbmQgZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNlIG9wZXJhdGlvbnMg
b2NjdXIgZm9yIGV2ZXJ5IHNpbmdsZQorcGFja2V0IGFuZCBhcmUgYSBkZXRlcm1pbmluZyBmYWN0
b3IgZm9yIHBlcmZvcm1hbmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKK2FyZSBpbXBsZW1lbnRl
ZCBhcyBhIEMgZXh0ZW5zaW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgorCisuLiBfc2FucyBJL086
IGh0dHBzOi8vc2Fucy1pby5yZWFkdGhlZG9jcy5pby8KKy4uIF9jcnlwdG9ncmFwaHk6IGh0dHBz
Oi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3Jn
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvaDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZTIyMDFjNDNkNDZiMGNiYjJiYWMyOGRmY2Y1OTIwYTAx
MjkxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKQEAgLTAs
MCArMSw0NCBAQAorSFRUUC8zIEFQSQorPT09PT09PT09PQorCitUaGUgSFRUUC8zIEFQSSBwZXJm
b3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1Ro
aXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgSFRUUC8zIGluIGFueSBQeXRob24gYXBwbGljYXRp
b24sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3UgYXJlIHVzaW5nLgor
CitDb25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmNv
bm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6IEgzQ29ubmVjdGlvbgorICAgICAgICA6bWVt
YmVyczoKKworCitFdmVudHMKKy0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5l
dmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBEYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBIZWFkZXJzUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBQdXNoUHJvbWlzZVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMu
ZXhjZXB0aW9ucworCisgICAgLi4gYXV0b2NsYXNzOjogSDNFcnJvcgorICAgICAgICA6bWVtYmVy
czoKKworICAgIC4uIGF1dG9jbGFzczo6IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKyAgICAgICAg
Om1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0MTU2MWEyMjQwNDBiYzFhOGFj
ZTI2NmFkMDE1NjhmNjg0MTdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2Nz
L2luZGV4LnJzdApAQCAtMCwwICsxLDM5IEBACithaW9xdWljCis9PT09PT09CisKK3xweXBpLXZ8
IHxweXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8CisKKy4uIHxweXBp
LXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5
cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJz
aW9ucy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvYWlvcXVpYworCisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v
cHlwaS9sL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS9haW9xdWljCisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlv
cnRjL2Fpb3F1aWMvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxjb2RlY292fCBpbWFn
ZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVp
Yy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMK
KworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJQyBuZXR3b3JrIHByb3RvY29s
IGluIFB5dGhvbi4gSXQgZmVhdHVyZXMgc2V2ZXJhbAorQVBJczoKKworLSBhIFFVSUMgQVBJIGZv
bGxvd2luZyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwgc3VpdGFibGUgZm9yCisg
IGVtYmVkZGluZyBpbiBhbnkgZnJhbWV3b3JrLAorCistIGFuIEhUVFAvMyBBUEkgd2hpY2ggYWxz
byBmb2xsb3dzIHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLAorCistIGEgUVVJQyBj
b252ZW5pZW5jZSBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLCBQeXRob24ncyBz
dGFuZGFyZCBhc3luY2hyb25vdXMKKyAgSS9PIGZyYW1ld29yay4KKworLi4gdG9jdHJlZTo6Cisg
ICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBxdWljCisgICBoMworICAgYXN5bmNpbwor
ICAgbGljZW5zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkM2IwN2ZjOTNmNjQ3
ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCistLS0tLS0tCisKKy4u
IGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvcXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVi
ZWZiNDlkNTE0YTQ1MTVjMjIzY2RjODQzNjljZDE2YTEyYjczCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKQEAgLTAsMCArMSw1MSBAQAorUVVJQyBBUEkKKz09
PT09PT09CisKK1RoZSBRVUlDIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmlu
ZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgUVVJ
QyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mCit0aGUgY29uY3VycmVu
Y3kgbW9kZWwgeW91IGFyZSB1c2luZy4KKworQ29ubmVjdGlvbgorLS0tLS0tLS0tLQorCisuLiBh
dXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6
IFF1aWNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0NvbmZpZ3VyYXRpb24KKy0t
LS0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
CisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWljQ29uZmlndXJhdGlvbgorICAgICAgICA6bWVtYmVy
czoKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5sb2dnZXIKKworICAgIC4uIGF1dG9j
bGFzczo6IFF1aWNMb2dnZXIKKyAgICAgICAgOm1lbWJlcnM6CisKK0V2ZW50cworLS0tLS0tCisK
Ky4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuZXZlbnRzCisKKyAgICAuLiBhdXRvY2xhc3M6
OiBRdWljRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBDb25u
ZWN0aW9uVGVybWluYXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6
IEhhbmRzaGFrZUNvbXBsZXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFz
czo6IFBpbmdBY2tub3dsZWRnZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xh
c3M6OiBTdHJlYW1EYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBTdHJlYW1SZXNldAorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDgwZTc5OTkwNDNkMjk3NDFhMTM0OTE2Njc4ZDU0MDQ5OTJhOTc1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjQgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2Uu
cnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5CkBAIC0wLDAgKzEsMTA5IEBA
CisjCisjIGRlbW8gYXBwbGljYXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQorIworCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBvcworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQor
CitpbXBvcnQgaHR0cGJpbgorZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdzZ2lUb0FzZ2kKK2Zy
b20gc3RhcmxldHRlLmFwcGxpY2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCitmcm9tIHN0YXJsZXR0
ZS5yZXNwb25zZXMgaW1wb3J0IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25zZQorZnJvbSBzdGFy
bGV0dGUuc3RhdGljZmlsZXMgaW1wb3J0IFN0YXRpY0ZpbGVzCitmcm9tIHN0YXJsZXR0ZS50ZW1w
bGF0aW5nIGltcG9ydCBKaW5qYTJUZW1wbGF0ZXMKK2Zyb20gc3RhcmxldHRlLndlYnNvY2tldHMg
aW1wb3J0IFdlYlNvY2tldERpc2Nvbm5lY3QKKworUk9PVCA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKK1NUQVRJQ19ST09UID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19ST09UIiwgb3MucGF0
aC5qb2luKFJPT1QsICJodGRvY3MiKSkKK1NUQVRJQ19VUkwgPSAiLyIKK0xPR1NfUEFUSCA9IG9z
LnBhdGguam9pbihTVEFUSUNfUk9PVCwgImxvZ3MiKQorUVZJU19VUkwgPSAiaHR0cHM6Ly9xdmlz
LmVkbS51aGFzc2VsdC5iZS8iCisKK3RlbXBsYXRlcyA9IEppbmphMlRlbXBsYXRlcyhkaXJlY3Rv
cnk9b3MucGF0aC5qb2luKFJPT1QsICJ0ZW1wbGF0ZXMiKSkKK2FwcCA9IFN0YXJsZXR0ZSgpCisK
KworQGFwcC5yb3V0ZSgiLyIpCithc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVzdCk6CisgICAgIiIi
CisgICAgU2ltcGxlIGhvbWVwYWdlLgorICAgICIiIgorICAgIGF3YWl0IHJlcXVlc3Quc2VuZF9w
dXNoX3Byb21pc2UoIi9zdHlsZS5jc3MiKQorICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVS
ZXNwb25zZSgiaW5kZXguaHRtbCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQorCisKK0BhcHAucm91
dGUoIi9lY2hvIiwgbWV0aG9kcz1bIlBPU1QiXSkKK2FzeW5jIGRlZiBlY2hvKHJlcXVlc3QpOgor
ICAgICIiIgorICAgIEhUVFAgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAgICBjb250ZW50ID0g
YXdhaXQgcmVxdWVzdC5ib2R5KCkKKyAgICBtZWRpYV90eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdl
dCgiY29udGVudC10eXBlIikKKyAgICByZXR1cm4gUmVzcG9uc2UoY29udGVudCwgbWVkaWFfdHlw
ZT1tZWRpYV90eXBlKQorCisKK0BhcHAucm91dGUoIi9sb2dzLz8iKQorYXN5bmMgZGVmIGxvZ3Mo
cmVxdWVzdCk6CisgICAgIiIiCisgICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxPRyBmaWxlcy4KKyAg
ICAiIiIKKyAgICBsb2dzID0gW10KKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKExPR1NfUEFU
SCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5xbG9nIik6CisgICAgICAgICAgICBzID0g
b3Muc3RhdChvcy5wYXRoLmpvaW4oTE9HU19QQVRILCBuYW1lKSkKKyAgICAgICAgICAgIGZpbGVf
dXJsID0gImh0dHBzOi8vIiArIHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsgIi9sb2dzLyIgKyBu
YW1lCisgICAgICAgICAgICBsb2dzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJkYXRlIjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChz
LnN0X210aW1lKS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlWS0lbS0lZCAl
SDolTTolUyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgImZp
bGVfdXJsIjogZmlsZV91cmwsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZVs6LTVd
LAorICAgICAgICAgICAgICAgICAgICAicXZpc191cmwiOiBRVklTX1VSTAorICAgICAgICAgICAg
ICAgICAgICArICI/IgorICAgICAgICAgICAgICAgICAgICArIHVybGVuY29kZSh7ImZpbGUiOiBm
aWxlX3VybH0pCisgICAgICAgICAgICAgICAgICAgICsgIiMvc2VxdWVuY2UiLAorICAgICAgICAg
ICAgICAgICAgICAic2l6ZSI6IHMuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApCisgICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKAorICAgICAgICAi
bG9ncy5odG1sIiwKKyAgICAgICAgeworICAgICAgICAgICAgImxvZ3MiOiBzb3J0ZWQobG9ncywg
a2V5PWxhbWJkYSB4OiB4WyJkYXRlIl0sIHJldmVyc2U9VHJ1ZSksCisgICAgICAgICAgICAicmVx
dWVzdCI6IHJlcXVlc3QsCisgICAgICAgIH0sCisgICAgKQorCisKK0BhcHAucm91dGUoIi97c2l6
ZTppbnR9IikKK2RlZiBwYWRkaW5nKHJlcXVlc3QpOgorICAgICIiIgorICAgIER5bmFtaWNhbGx5
IGdlbmVyYXRlZCBkYXRhLCBtYXhpbXVtIDUwTUIuCisgICAgIiIiCisgICAgc2l6ZSA9IG1pbig1
MDAwMDAwMCwgcmVxdWVzdC5wYXRoX3BhcmFtc1sic2l6ZSJdKQorICAgIHJldHVybiBQbGFpblRl
eHRSZXNwb25zZSgiWiIgKiBzaXplKQorCisKK0BhcHAud2Vic29ja2V0X3JvdXRlKCIvd3MiKQor
YXN5bmMgZGVmIHdzKHdlYnNvY2tldCk6CisgICAgIiIiCisgICAgV2ViU29ja2V0IGVjaG8gZW5k
cG9pbnQuCisgICAgIiIiCisgICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5zY29wZVsic3VicHJv
dG9jb2xzIl06CisgICAgICAgIHN1YnByb3RvY29sID0gImNoYXQiCisgICAgZWxzZToKKyAgICAg
ICAgc3VicHJvdG9jb2wgPSBOb25lCisgICAgYXdhaXQgd2Vic29ja2V0LmFjY2VwdChzdWJwcm90
b2NvbD1zdWJwcm90b2NvbCkKKworICAgIHRyeToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0KCkKKyAgICAgICAg
ICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kX3RleHQobWVzc2FnZSkKKyAgICBleGNlcHQgV2ViU29j
a2V0RGlzY29ubmVjdDoKKyAgICAgICAgcGFzcworCisKK2FwcC5tb3VudCgiL2h0dHBiaW4iLCBX
c2dpVG9Bc2dpKGh0dHBiaW4uYXBwKSkKKworYXBwLm1vdW50KFNUQVRJQ19VUkwsIFN0YXRpY0Zp
bGVzKGRpcmVjdG9yeT1TVEFUSUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odGRvY3Mvcm9ib3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWFhMGJkZWFhY2U2MzcyYTdlYjEzMDEw
ZmQxNjY2YzY1NTQ2ODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L2h0ZG9jcy9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMiBAQAorVXNlci1hZ2VudDogKgorRGlzYWxs
b3c6IC9sb2dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxl
LmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxNTIzZGI4YWQ4ZDE2Zjc1MjYwYzU4MTdhYjQ4ZTg5ZTIxZWJiZDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpAQCAtMCwwICsxLDEw
IEBACitib2R5IHsKKyAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA0MGVtOworfQor
Cit0YWJsZS5sb2dzIHsKKyAgICB3aWR0aDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NjgyMGRmMGRmODA5YzdjOTg5
OTI3YThiOGIzMjhlMDQ5NTZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTg4OGEzNmVhN2ViYTI3ZjM2YTVkZDQwYjBjNzZhMDQyNDlkYzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpAQCAt
MCwwICsxLDQ1NSBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpz
b24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzc2wK
K2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcg
aW1wb3J0IENhbGxhYmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0
Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworaW1wb3J0IHdzcHJvdG8KK2lt
cG9ydCB3c3Byb3RvLmV2ZW50cworCitpbXBvcnQgYWlvcXVpYworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24g
aW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgKAorICAgIERhdGFSZWNlaXZlZCwKKyAgICBIM0V2ZW50LAorICAgIEhlYWRlcnNSZWNlaXZl
ZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50
cyBpbXBvcnQgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNM
b2dnZXIKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCitIdHRwQ29ubmVjdGlvbiA9
IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitVU0VSX0FHRU5UID0gImFpb3F1
aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBVUkw6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHVybDogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXJzZWQgPSB1cmxwYXJzZSh1
cmwpCisKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHNl
bGYuZnVsbF9wYXRoID0gcGFyc2VkLnBhdGgKKyAgICAgICAgaWYgcGFyc2VkLnF1ZXJ5OgorICAg
ICAgICAgICAgc2VsZi5mdWxsX3BhdGggKz0gIj8iICsgcGFyc2VkLnF1ZXJ5CisgICAgICAgIHNl
bGYuc2NoZW1lID0gcGFyc2VkLnNjaGVtZQorCisKK2NsYXNzIEh0dHBSZXF1ZXN0OgorICAgIGRl
ZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbWV0aG9kOiBzdHIsIHVybDogVVJMLCBjb250ZW50
OiBieXRlcyA9IGIiIiwgaGVhZGVyczogRGljdCA9IHt9CisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMK
KyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKwor
CitjbGFzcyBXZWJTb2NrZXQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBodHRw
OiBIdHRwQ29ubmVjdGlvbiwgc3RyZWFtX2lkOiBpbnQsIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwg
Tm9uZV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaHR0cCA9IGh0dHAKKyAgICAgICAg
c2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtzdHJdID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAg
IHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3VicHJvdG9jb2w6IE9w
dGlvbmFsW3N0cl0gPSBOb25lCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorICAg
ICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlvbih3c3Byb3RvLkNvbm5lY3Rp
b25UeXBlLkNMSUVOVCkKKworICAgIGFzeW5jIGRlZiBjbG9zZShzZWxmLCBjb2RlPTEwMDAsIHJl
YXNvbj0iIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFBlcmZvcm0gdGhlIGNsb3Np
bmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0
LnNlbmQoCisgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29kZT1j
b2RlLCByZWFzb249cmVhc29uKQorICAgICAgICApCisgICAgICAgIHNlbGYuaHR0cC5zZW5kX2Rh
dGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkK
KyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBkZWYgcmVjdihzZWxmKSAtPiBz
dHI6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5
bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBhIG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShtZXNzYWdlLCBzdHIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQo
d3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5o
dHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwgZW5kX3N0
cmVhbT1GYWxzZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBkZWYgaHR0cF9ldmVu
dF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIGZvciBoZWFkZXIs
IHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIi
c2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VicHJv
dG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldC5yZWNlaXZlX2RhdGEoZXZl
bnQuZGF0YSkKKworICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJzb2NrZXQuZXZlbnRz
KCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkK
KworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IHdzcHJvdG8u
ZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCB3c3By
b3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dh
aXQoZXZlbnQuZGF0YSkKKworCitjbGFzcyBIdHRwQ2xpZW50KFF1aWNDb25uZWN0aW9uUHJvdG9j
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6Cisg
ICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYu
cHVzaGVzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5faHR0
cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0
X2V2ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYuX3Jl
cXVlc3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVbSDNFdmVudF1dXSA9
IHt9CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHM6IERpY3RbaW50LCBXZWJTb2NrZXRdID0ge30K
KworICAgICAgICBpZiBzZWxmLl9xdWljLmNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHNbMF0u
c3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9u
KHNlbGYuX3F1aWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDND
b25uZWN0aW9uKHNlbGYuX3F1aWMpCisKKyAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIHVybDogc3Ry
LCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAg
ICAgICAgUGVyZm9ybSBhIEdFVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IGF3YWl0IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IkdF
VCIsIHVybD1VUkwodXJsKSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3lu
YyBkZWYgcG9zdChzZWxmLCB1cmw6IHN0ciwgZGF0YTogYnl0ZXMsIGhlYWRlcnM6IERpY3QgPSB7
fSkgLT4gRGVxdWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIGEgUE9T
VCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3JlcXVl
c3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IlBPU1QiLCB1cmw9VVJMKHVybCks
IGNvbnRlbnQ9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3luYyBk
ZWYgd2Vic29ja2V0KHNlbGYsIHVybDogc3RyLCBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtd
KSAtPiBXZWJTb2NrZXQ6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIGEgV2ViU29ja2V0Lgor
ICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IEh0dHBSZXF1ZXN0KG1ldGhvZD0iQ09OTkVD
VCIsIHVybD1VUkwodXJsKSkKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2Vic29ja2V0ID0gV2ViU29ja2V0KAor
ICAgICAgICAgICAgaHR0cD1zZWxmLl9odHRwLCBzdHJlYW1faWQ9c3RyZWFtX2lkLCB0cmFuc21p
dD1zZWxmLnRyYW5zbWl0CisgICAgICAgICkKKworICAgICAgICBzZWxmLl93ZWJzb2NrZXRzW3N0
cmVhbV9pZF0gPSB3ZWJzb2NrZXQKKworICAgICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiQ09OTkVDVCIpLAorICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1ZXN0LnVybC5hdXRob3JpdHku
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGgu
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnByb3RvY29sIiwgYiJ3ZWJzb2NrZXQiKSwKKyAg
ICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgpKSwKKyAgICAgICAg
ICAgIChiInNlYy13ZWJzb2NrZXQtdmVyc2lvbiIsIGIiMTMiKSwKKyAgICAgICAgXQorICAgICAg
ICBpZiBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwgIiwgIi5qb2luKHN1YnByb3RvY29s
cykuZW5jb2RlKCkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9oZWFk
ZXJzKHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAgICAgICBzZWxm
LnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4gd2Vic29ja2V0CisKKyAgICBkZWYgaHR0cF9l
dmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShldmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2VpdmVkKSk6CisgICAg
ICAgICAgICBzdHJlYW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCBpbiBzZWxmLl9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAgICAjIGh0dHAKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tldmVudC5zdHJlYW1faWRdLmFwcGVu
ZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1fZW5kZWQ6CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5fcmVxdWVzdF93YWl0ZXIucG9wKHN0
cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIuc2V0X3Jlc3VsdChz
ZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkKKworICAgICAgICAgICAgZWxpZiBz
dHJlYW1faWQgaW4gc2VsZi5fd2Vic29ja2V0czoKKyAgICAgICAgICAgICAgICAjIHdlYnNvY2tl
dAorICAgICAgICAgICAgICAgIHdlYnNvY2tldCA9IHNlbGYuX3dlYnNvY2tldHNbc3RyZWFtX2lk
XQorICAgICAgICAgICAgICAgIHdlYnNvY2tldC5odHRwX2V2ZW50X3JlY2VpdmVkKGV2ZW50KQor
CisgICAgICAgICAgICBlbGlmIGV2ZW50LnB1c2hfaWQgaW4gc2VsZi5wdXNoZXM6CisgICAgICAg
ICAgICAgICAgIyBwdXNoCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9p
ZF0uYXBwZW5kKGV2ZW50KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUHVzaFBy
b21pc2VSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXSA9
IGRlcXVlKCkKKyAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdLmFwcGVuZChl
dmVudCkKKworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZl
bnQpIC0+IE5vbmU6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBIVFRQIGxheWVyCisg
ICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaHR0cF9l
dmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAgICAgICAgICAgICAg
c2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKyAgICBhc3luYyBkZWYgX3Jl
cXVlc3Qoc2VsZiwgcmVxdWVzdDogSHR0cFJlcXVlc3QpOgorICAgICAgICBzdHJlYW1faWQgPSBz
ZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBzZWxmLl9o
dHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5t
ZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVy
bC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1
ZXN0LnVybC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
cmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiJ1c2Vy
LWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAg
ICArIFsoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkgZm9yIChrLCB2KSBpbiByZXF1ZXN0LmhlYWRl
cnMuaXRlbXMoKV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2RhdGEoc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LmNvbnRlbnQsIGVuZF9zdHJlYW09VHJ1ZSkK
KworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9y
ZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQo
KQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisKKworYXN5
bmMgZGVmIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgIGNsaWVudDogSHR0cENsaWVudCwgdXJs
OiBzdHIsIGRhdGE6IHN0ciwgaW5jbHVkZTogYm9vbCwgb3V0cHV0X2RpcjogT3B0aW9uYWxbc3Ry
XSwKKykgLT4gTm9uZToKKyAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgIHN0YXJ0ID0gdGltZS50
aW1lKCkKKyAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBodHRwX2V2ZW50cyA9IGF3
YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgdXJsLAorICAgICAgICAgICAgZGF0YT1kYXRh
LmVuY29kZSgpLAorICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAg
ICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisgICAgZWxhcHNlZCA9IHRp
bWUudGltZSgpIC0gc3RhcnQKKworICAgICMgcHJpbnQgc3BlZWQKKyAgICBvY3RldHMgPSAwCisg
ICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIG9jdGV0cyArPSBsZW4oaHR0
cF9ldmVudC5kYXRhKQorICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAiUmVjZWl2ZWQgJWQgYnl0
ZXMgaW4gJS4xZiBzICglLjNmIE1icHMpIgorICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9j
dGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICApCisKKyAgICAjIG91dHB1dCByZXNw
b25zZQorICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dF9wYXRo
ID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3V0cHV0X2Rpciwgb3MucGF0aC5iYXNlbmFt
ZSh1cmxwYXJzZSh1cmwpLnBhdGgpIG9yICJpbmRleC5odG1sIgorICAgICAgICApCisgICAgICAg
IHdpdGggb3BlbihvdXRwdXRfcGF0aCwgIndiIikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGluY2x1ZGU6CisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnMgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYg
aW4gaHR0cF9ldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyAr
PSBrICsgYiI6ICIgKyB2ICsgYiJcclxuIgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXJz
OgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoaGVhZGVycyArIGIi
XHJcbiIpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFS
ZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGh0dHBfZXZl
bnQuZGF0YSkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQ6IFNlc3Npb25UaWNr
ZXQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0
aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAgaXMgcmVjZWl2ZWQu
CisgICAgIiIiCisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIp
CisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vz
c2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0
LCBmcCkKKworCithc3luYyBkZWYgcnVuKAorICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1
cmF0aW9uLAorICAgIHVybHM6IExpc3Rbc3RyXSwKKyAgICBkYXRhOiBzdHIsCisgICAgaW5jbHVk
ZTogYm9vbCwKKyAgICBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorICAgIGxvY2FsX3BvcnQ6
IGludCwKKykgLT4gTm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNl
KHVybHNbMF0pCisgICAgYXNzZXJ0IHBhcnNlZC5zY2hlbWUgaW4gKAorICAgICAgICAiaHR0cHMi
LAorICAgICAgICAid3NzIiwKKyAgICApLCAiT25seSBodHRwczovLyBvciB3c3M6Ly8gVVJMcyBh
cmUgc3VwcG9ydGVkLiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoKKyAgICAgICAgaG9z
dCwgcG9ydF9zdHIgPSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGlu
dChwb3J0X3N0cikKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2VkLm5ldGxvYworICAg
ICAgICBwb3J0ID0gNDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3Qs
CisgICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAg
ICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgbG9jYWxfcG9ydD1sb2NhbF9w
b3J0LAorICAgICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0KEh0dHBDbGllbnQs
IGNsaWVudCkKKworICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICJ3c3MiOgorICAgICAgICAg
ICAgd3MgPSBhd2FpdCBjbGllbnQud2Vic29ja2V0KHVybHNbMF0sIHN1YnByb3RvY29scz1bImNo
YXQiLCAic3VwZXJjaGF0Il0pCisKKyAgICAgICAgICAgICMgc2VuZCBzb21lIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGx5CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gIkhlbGxvIHt9LCBXZWJTb2NrZXQhIi5mb3JtYXQoaSkKKyAgICAg
ICAgICAgICAgICBwcmludCgiPiAiICsgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBhd2FpdCB3
cy5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgd3MucmVj
digpCisgICAgICAgICAgICAgICAgcHJpbnQoIjwgIiArIG1lc3NhZ2UpCisKKyAgICAgICAgICAg
IGF3YWl0IHdzLmNsb3NlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGVyZm9ybSBy
ZXF1ZXN0CisgICAgICAgICAgICBjb3JvcyA9IFsKKyAgICAgICAgICAgICAgICBwZXJmb3JtX2h0
dHBfcmVxdWVzdCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50PWNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlPWluY2x1ZGUsCisgICAgICAgICAgICAgICAgICAgIG91
dHB1dF9kaXI9b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
Zm9yIHVybCBpbiB1cmxzCisgICAgICAgICAgICBdCisgICAgICAgICAgICBhd2FpdCBhc3luY2lv
LmdhdGhlcigqY29yb3MpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBkZWZh
dWx0cyA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorCisgICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBjbGllbnQiKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ1cmwiLCB0eXBlPXN0ciwgbmFyZ3M9Iisi
LCBoZWxwPSJ0aGUgVVJMIHRvIHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBlPXN0ciwgaGVscD0i
bG9hZCBDQSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEiLCB0eXBlPXN0ciwg
aGVscD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVlc3QiCisgICAgKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItaSIsCisgICAgICAgICItLWluY2x1
ZGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJpbmNsdWRl
IHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgaW4gdGhlIG91dHB1dCIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1kYXRhIiwKKyAgICAgICAgdHlwZT1p
bnQsCisgICAgICAgIGhlbHA9ImNvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQgKGRl
ZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfZGF0YSwKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbWF4LXN0cmVhbS1kYXRhIiwKKyAgICAgICAgdHlwZT1pbnQs
CisgICAgICAgIGhlbHA9InBlci1zdHJlYW0gZmxvdyBjb250cm9sIGxpbWl0IChkZWZhdWx0OiAl
ZCkiICUgZGVmYXVsdHMubWF4X3N0cmVhbV9kYXRhLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1pbnNlY3VyZSIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRvIG5vdCB2YWxpZGF0ZSBzZXJ2ZXIg
Y2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxlZ2FjeS1o
dHRwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0idXNlIEhUVFAvMC45IikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgdHlwZT1zdHIsIGhlbHA9
IndyaXRlIGRvd25sb2FkZWQgZmlsZXMgdG8gdGhpcyBkaXJlY3RvcnkiLAorICAgICkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3Ry
LCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNy
ZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0
byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisg
ICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRp
Y2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbG9jYWwtcG9ydCIsIHR5cGU9aW50LCBkZWZhdWx0PTAsIGhl
bHA9ImxvY2FsIHBvcnQgdG8gYmluZCBmb3IgY29ubmVjdGlvbnMiLAorICAgICkKKworICAgIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAg
ICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdl
KXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxv
Z2dpbmcuSU5GTywKKyAgICApCisKKyAgICBpZiBhcmdzLm91dHB1dF9kaXIgaXMgbm90IE5vbmUg
YW5kIG5vdCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0cHV0X2Rpcik6CisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGFyZ3Mub3V0cHV0X2RpcikKKworICAg
ICMgcHJlcGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2NvbHM9SDBfQUxQTiBp
ZiBhcmdzLmxlZ2FjeV9odHRwIGVsc2UgSDNfQUxQTgorICAgICkKKyAgICBpZiBhcmdzLmNhX2Nl
cnRzOgorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhhcmdzLmNh
X2NlcnRzKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24udmVy
aWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5tYXhfZGF0YToKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5tYXhfZGF0YSA9IGFyZ3MubWF4X2RhdGEKKyAgICBpZiBhcmdzLm1heF9z
dHJlYW1fZGF0YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEgPSBhcmdz
Lm1heF9zdHJlYW1fZGF0YQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9n
OgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2Vj
cmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgorICAgICAgICB0cnk6
CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgInJiIikgYXMgZnA6
CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9IHBpY2tsZS5s
b2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxs
KCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgdHJ5OgorICAgICAg
ICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgdXJscz1h
cmdzLnVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWFyZ3MuZGF0YSwKKyAgICAgICAgICAgICAg
ICBpbmNsdWRlPWFyZ3MuaW5jbHVkZSwKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPWFyZ3Mu
b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICBsb2NhbF9wb3J0PWFyZ3MubG9jYWxfcG9ydCwK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZp
Z3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4o
YXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5k
dW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVu
dD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1YjA0
YjAzYzE1NDNmMzYwZDA0Njg4Njk4MzUzNmNlMjVlYWE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKQEAgLTAsMCArMSw0ODQgQEAKK2lt
cG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBq
c29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IGZvcm1hdGRhdGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBV
bmlvbiwgY2FzdAorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8uZXZlbnRzCisKK2lt
cG9ydCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCwgc2VydmUKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBO
LCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBO
LCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZl
ZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBp
bXBvcnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBp
bXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBQcm90b2NvbE5lZ290aWF0ZWQsIFF1aWNFdmVu
dAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyLCBRdWljTG9nZ2Vy
VHJhY2UKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K0FzZ2lBcHBsaWNhdGlvbiA9IENhbGxhYmxlCitIdHRwQ29ubmVjdGlvbiA9IFVuaW9uW0gwQ29u
bmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitTRVJWRVJfTkFNRSA9ICJhaW9xdWljLyIgKyBhaW9x
dWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgSHR0cFJlcXVlc3RIYW5kbGVyOgorICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgYXV0aG9yaXR5OiBi
eXRlcywKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisgICAgICAgIHByb3Rv
Y29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgICAgICBzY29wZTogRGljdCwKKyAgICAg
ICAgc3RyZWFtX2VuZGVkOiBib29sLAorICAgICAgICBzdHJlYW1faWQ6IGludCwKKyAgICAgICAg
dHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuYXV0aG9yaXR5ID0gYXV0aG9yaXR5CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5l
Y3Rpb24KKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYucXVl
dWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5z
Y29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAg
IHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAg
ICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAiaHR0cC5yZXF1ZXN0In0p
CisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4g
Tm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImh0dHAucmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICJib2R5IjogZXZlbnQuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIm1vcmVfYm9keSI6IG5v
dCBldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50
LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAg
ICAgICAgICAgICB7InR5cGUiOiAiaHR0cC5yZXF1ZXN0IiwgImJvZHkiOiBiIiIsICJtb3JlX2Jv
ZHkiOiBGYWxzZX0KKyAgICAgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxm
LCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgYXdhaXQgYXBwbGljYXRp
b24oc2VsZi5zY29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisKKyAgICBhc3luYyBkZWYg
cmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5n
ZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogRGljdCkgLT4gTm9uZToK
KyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnN0YXJ0IjoKKyAg
ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgc3RyKG1lc3NhZ2VbInN0YXR1cyJdKS5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9OQU1FLmVuY29k
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1l
KCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICsgWyhrLCB2KSBmb3IgaywgdiBpbiBtZXNzYWdlWyJoZWFkZXJzIl1dLAorICAgICAg
ICAgICAgKQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5i
b2R5IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9bWVz
c2FnZS5nZXQoImJvZHkiLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09bm90IG1l
c3NhZ2UuZ2V0KCJtb3JlX2JvZHkiLCBGYWxzZSksCisgICAgICAgICAgICApCisgICAgICAgIGVs
aWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnB1c2giIGFuZCBpc2luc3RhbmNl
KAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb24KKyAgICAgICAgKToK
KyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IFsKKyAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzZWxmLmF1dGhvcml0eSksCisgICAgICAg
ICAgICAgICAgKGIiOnBhdGgiLCBtZXNzYWdlWyJwYXRoIl0uZW5jb2RlKCkpLAorICAgICAgICAg
ICAgXSArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJdXQorCisgICAgICAg
ICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcHVzaF9zdHJlYW1faWQgPSBzZWxmLmNvbm5lY3Rpb24uc2VuZF9wdXNoX3Byb21pc2UoCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwgaGVhZGVycz1yZXF1
ZXN0X2hlYWRlcnMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgTm9BdmFp
bGFibGVQdXNoSURFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAg
IyBmYWtlIHJlcXVlc3QKKyAgICAgICAgICAgIGNhc3QoSHR0cFNlcnZlclByb3RvY29sLCBzZWxm
LnByb3RvY29sKS5odHRwX2V2ZW50X3JlY2VpdmVkKAorICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1yZXF1ZXN0X2hlYWRlcnMsIHN0
cmVhbV9lbmRlZD1UcnVlLCBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK2NsYXNzIFdl
YlNvY2tldEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAg
ICAqLAorICAgICAgICBjb25uZWN0aW9uOiBIdHRwQ29ubmVjdGlvbiwKKyAgICAgICAgc2NvcGU6
IERpY3QsCisgICAgICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFuc21pdDogQ2FsbGFi
bGVbW10sIE5vbmVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxz
ZQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAgIHNlbGYuaHR0
cF9ldmVudF9xdWV1ZTogRGVxdWVbRGF0YVJlY2VpdmVkXSA9IGRlcXVlKCkKKyAgICAgICAgc2Vs
Zi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFzeW5jaW8uUXVldWUoKQorICAgICAgICBz
ZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKKyAg
ICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYud2Vic29ja2V0OiBP
cHRpb25hbFt3c3Byb3RvLkNvbm5lY3Rpb25dID0gTm9uZQorCisgICAgZGVmIGh0dHBfZXZlbnRf
cmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAg
ICAgIGlmIHNlbGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
d2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAgICAgICAgICAgZm9y
IHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBkZWxheSBldmVudCBwcm9jZXNzaW5nIHVudGlsIHdlIGdl
dCBgd2Vic29ja2V0LmFjY2VwdGAKKyAgICAgICAgICAgICAgICAjIGZyb20gdGhlIEFTR0kgYXBw
bGljYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcXVldWUuYXBwZW5kKGV2
ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogd3Nw
cm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQs
IHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0
X25vd2FpdCh7InR5cGUiOiAid2Vic29ja2V0LnJlY2VpdmUiLCAidGV4dCI6IGV2ZW50LmRhdGF9
KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLk1lc3NhZ2Up
OgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQu
cmVjZWl2ZSIsICJieXRlcyI6IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgICAgICBzZWxm
LnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5kaXNjb25uZWN0IiwgImNvZGUi
OiBldmVudC5jb2RlfSkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxmLCBhcHA6IEFzZ2lB
cHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlw
ZSI6ICJ3ZWJzb2NrZXQuY29ubmVjdCJ9KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF3
YWl0IGFwcGxpY2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2VsZi5zZW5kKQorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAg
ICAgICAgIGF3YWl0IHNlbGYuc2VuZCh7InR5cGUiOiAid2Vic29ja2V0LmNsb3NlIiwgImNvZGUi
OiAxMDAwfSkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6CisgICAgICAg
IHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxm
LCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBkYXRhID0gYiIiCisgICAgICAgIGVu
ZF9zdHJlYW0gPSBGYWxzZQorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gIndlYnNvY2tl
dC5hY2NlcHQiOgorICAgICAgICAgICAgc3VicHJvdG9jb2wgPSBtZXNzYWdlLmdldCgic3VicHJv
dG9jb2wiKQorCisgICAgICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlv
bih3c3Byb3RvLkNvbm5lY3Rpb25UeXBlLlNFUlZFUikKKworICAgICAgICAgICAgaGVhZGVycyA9
IFsKKyAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIi
ZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisg
ICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwg
c3VicHJvdG9jb2wuZW5jb2RlKCkpKQorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRf
aGVhZGVycyhzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAg
ICAgICAgICAgIyBjb25zdW1lIGJhY2tsb2cKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuaHR0cF9l
dmVudF9xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoc2Vs
Zi5odHRwX2V2ZW50X3F1ZXVlLnBvcGxlZnQoKSkKKworICAgICAgICBlbGlmIG1lc3NhZ2VbInR5
cGUiXSA9PSAid2Vic29ja2V0LmNsb3NlIjoKKyAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5k
KAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29k
ZT1tZXNzYWdlWyJjb2RlIl0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9WyhiIjpzdGF0dXMi
LCBiIjQwMyIpXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVuZF9zdHJlYW0gPSBU
cnVlCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuc2VuZCI6Cisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmdldCgidGV4dCIpIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAgICAgICAgICAgICAgICB3
c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShkYXRhPW1lc3NhZ2VbInRleHQiXSkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBlbGlmIG1lc3NhZ2UuZ2V0KCJieXRlcyIpIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAg
ICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5NZXNzYWdlKGRhdGE9bWVzc2FnZVsiYnl0ZXMi
XSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHNl
bGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYu
c3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbQorICAgICAgICAgICAg
KQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVl
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK0hhbmRsZXIgPSBVbmlvbltIdHRwUmVxdWVz
dEhhbmRsZXIsIFdlYlNvY2tldEhhbmRsZXJdCisKKworY2xhc3MgSHR0cFNlcnZlclByb3RvY29s
KFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBzZWxmLl9oYW5kbGVyczogRGljdFtpbnQsIEhhbmRsZXJdID0ge30KKyAg
ICAgICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorCisgICAg
ZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50LnN0
cmVhbV9pZCBub3QgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAgICBhdXRob3JpdHkgPSBO
b25lCisgICAgICAgICAgICBoZWFkZXJzID0gW10KKyAgICAgICAgICAgIGh0dHBfdmVyc2lvbiA9
ICIwLjkiIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDBDb25uZWN0aW9uKSBlbHNlICIzIgor
ICAgICAgICAgICAgcmF3X3BhdGggPSBiIiIKKyAgICAgICAgICAgIG1ldGhvZCA9ICIiCisgICAg
ICAgICAgICBwcm90b2NvbCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGlu
IGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOmF1dGhvcml0
eSI6CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IHZhbHVlCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnMuYXBwZW5kKChiImhvc3QiLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAg
ZWxpZiBoZWFkZXIgPT0gYiI6bWV0aG9kIjoKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0g
dmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjpwYXRoIjoK
KyAgICAgICAgICAgICAgICAgICAgcmF3X3BhdGggPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVs
aWYgaGVhZGVyID09IGIiOnByb3RvY29sIjoKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wg
PSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVyIGFuZCBub3QgaGVh
ZGVyLnN0YXJ0c3dpdGgoYiI6Iik6CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5k
KChoZWFkZXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgYiI/IiBpbiByYXdfcGF0aDoKKyAg
ICAgICAgICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aC5zcGxpdChi
Ij8iLCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXRo
X2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aCwgYiIiCisgICAgICAgICAgICBwYXRoID0g
cGF0aF9ieXRlcy5kZWNvZGUoKQorCisgICAgICAgICAgICAjIEZJWE1FOiBhZGQgYSBwdWJsaWMg
QVBJIHRvIHJldHJpZXZlIHBlZXIgYWRkcmVzcworICAgICAgICAgICAgY2xpZW50X2FkZHIgPSBz
ZWxmLl9odHRwLl9xdWljLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIKKyAgICAgICAgICAgIGNsaWVu
dCA9IChjbGllbnRfYWRkclswXSwgY2xpZW50X2FkZHJbMV0pCisKKyAgICAgICAgICAgIGhhbmRs
ZXI6IEhhbmRsZXIKKyAgICAgICAgICAgIHNjb3BlOiBEaWN0CisgICAgICAgICAgICBpZiBtZXRo
b2QgPT0gIkNPTk5FQ1QiIGFuZCBwcm90b2NvbCA9PSAid2Vic29ja2V0IjoKKyAgICAgICAgICAg
ICAgICBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGhl
YWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVh
ZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJwcm90b2NvbHMgPSBbeC5zdHJpcCgpIGZvciB4IGluIHZhbHVlLmRlY29kZSgpLnNwbGl0
KCIsIildCisgICAgICAgICAgICAgICAgc2NvcGUgPSB7CisgICAgICAgICAgICAgICAgICAgICJj
bGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgInBh
dGgiOiBwYXRoLAorICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3Ry
aW5nLAorICAgICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgInJvb3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAgICAgICAic2NoZW1l
IjogIndzcyIsCisgICAgICAgICAgICAgICAgICAgICJzdWJwcm90b2NvbHMiOiBzdWJwcm90b2Nv
bHMsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIndlYnNvY2tldCIsCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBXZWJTb2NrZXRIYW5kbGVyKAorICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAgICAg
ICAgIHNjb3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uczogRGljdFtzdHIsIERpY3RdID0ge30KKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHNlbGYuX2h0dHAsIEgzQ29ubmVjdGlvbik6CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnNbImh0dHAucmVzcG9uc2UucHVzaCJdID0ge30KKyAgICAgICAgICAgICAgICBzY29wZSA9IHsK
KyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVuc2lvbnMiOiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVy
cyI6IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNpb24iOiBodHRwX3Zl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2QsCisgICAgICAgICAg
ICAgICAgICAgICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X3N0cmlu
ZyI6IHF1ZXJ5X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19wYXRoIjogcmF3X3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgInNjaGVtZSI6ICJodHRwcyIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImh0
dHAiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gSHR0cFJl
cXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHk9YXV0aG9yaXR5LAor
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAg
ICAgICAgIHByb3RvY29sPXNlbGYsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlPXNjb3BlLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9ZXZlbnQuc3RyZWFtX2VuZGVkLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0gPSBoYW5kbGVyCisgICAgICAg
ICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaGFuZGxlci5ydW5fYXNnaShhcHBsaWNhdGlvbikp
CisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5jZShldmVudCwgKERhdGFSZWNl
aXZlZCwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIGFuZCBldmVudC5zdHJlYW1faWQg
aW4gc2VsZi5faGFuZGxlcnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxm
Ll9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdCisgICAgICAgICAgICBoYW5kbGVyLmh0dHBfZXZl
bnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBQ
cm90b2NvbE5lZ290aWF0ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5z
dGFydHN3aXRoKCJoMy0iKToKKyAgICAgICAgICAgICAgICBzZWxmLl9odHRwID0gSDNDb25uZWN0
aW9uKHNlbGYuX3F1aWMpCisgICAgICAgICAgICBlbGlmIGV2ZW50LmFscG5fcHJvdG9jb2wuc3Rh
cnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVjdGlv
bihzZWxmLl9xdWljKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFncmFtRnJh
bWVSZWNlaXZlZCk6CisgICAgICAgICAgICBpZiBldmVudC5kYXRhID09IGIicXVhY2siOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShiInF1YWNrLWFjayIp
CisKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYg
c2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNl
bGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBf
ZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6
CisgICAgIiIiCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lvbiB0aWNrZXRz
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYudGlj
a2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBsYWJlbDog
Ynl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitjbGFzcyBRdWljTG9nZ2VyQ3VzdG9tKFF1aWNM
b2dnZXIpOgorICAgICIiIgorICAgIEN1c3RvbSBRVUlDIGxvZ2dlciB3aGljaCB3cml0ZXMgb25l
IHRyYWNlIHBlciBmaWxlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg6
IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJRVUlDIGxvZyBvdXRwdXQgZGlyZWN0b3J5ICclcycg
ZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIGRlZiBlbmRfdHJhY2Uoc2VsZiwgdHJhY2U6IFF1
aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKKyAgICAgICAgdHJhY2VfZGljdCA9IHRyYWNlLnRvX2Rp
Y3QoKQorICAgICAgICB0cmFjZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgc2Vs
Zi5wYXRoLCB0cmFjZV9kaWN0WyJjb21tb25fZmllbGRzIl1bIk9EQ0lEIl0gKyAiLnFsb2ciCisg
ICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX3BhdGgsICJ3IikgYXMgbG9nZ2VyX2Zw
OgorICAgICAgICAgICAganNvbi5kdW1wKHsicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwgInRy
YWNlcyI6IFt0cmFjZV9kaWN0XX0sIGxvZ2dlcl9mcCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLnJl
bW92ZSh0cmFjZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJRVUlDIHNlcnZlciIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImFwcCIsCisgICAgICAgIHR5cGU9c3RyLAor
ICAgICAgICBuYXJncz0iPyIsCisgICAgICAgIGRlZmF1bHQ9ImRlbW86YXBwIiwKKyAgICAgICAg
aGVscD0idGhlIEFTR0kgYXBwbGljYXRpb24gYXMgPG1vZHVsZT46PGF0dHJpYnV0ZT4iLAorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWMiLAorICAgICAgICAiLS1j
ZXJ0aWZpY2F0ZSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAor
ICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVk
IGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1ob3N0
IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Ijo6IiwKKyAgICAgICAgaGVs
cD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tcG9ydCIsCisgICAgICAg
IHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhlbHA9Imxpc3RlbiBv
biB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0tcHJpdmF0ZS1rZXki
LAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVs
cD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
c2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3Jl
dHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVs
cD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAgICAgIi0tc3RhdGVsZXNz
LXJldHJ5IiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0ic2Vu
ZCBhIHN0YXRlbGVzcyByZXRyeSBmb3IgbmV3IGNvbm5lY3Rpb25zIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKyAgICBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAg
ICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2Fn
ZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBs
b2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBpbXBvcnQgQVNHSSBhcHBsaWNhdGlvbgorICAg
IG1vZHVsZV9zdHIsIGF0dHJfc3RyID0gYXJncy5hcHAuc3BsaXQoIjoiLCBtYXhzcGxpdD0xKQor
ICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9zdHIpCisgICAgYXBw
bGljYXRpb24gPSBnZXRhdHRyKG1vZHVsZSwgYXR0cl9zdHIpCisKKyAgICAjIGNyZWF0ZSBRVUlD
IGxvZ2dlcgorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIHF1aWNfbG9nZ2VyID0gUXVp
Y0xvZ2dlckN1c3RvbShhcmdzLnF1aWNfbG9nKQorICAgIGVsc2U6CisgICAgICAgIHF1aWNfbG9n
Z2VyID0gTm9uZQorCisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0
c19sb2c6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2cs
ICJhIikKKyAgICBlbHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29s
cz1IM19BTFBOICsgSDBfQUxQTiArIFsic2lkdWNrIl0sCisgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisgICAgICAgIHF1aWNf
bG9nZ2VyPXF1aWNfbG9nZ2VyLAorICAgICAgICBzZWNyZXRzX2xvZ19maWxlPXNlY3JldHNfbG9n
X2ZpbGUsCisgICAgKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5CisgICAg
Y29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0ZSwgYXJncy5wcml2
YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisKKyAg
ICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxsKCkKKyAgICBs
b29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAorICAgICAgICAgICAg
YXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBTZXJ2ZXJQcm90b2NvbCwKKyAgICAgICAgICAg
IHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAgICAgICAgICAgIHNl
c3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAgICAgICAgIHN0YXRl
bGVzc19yZXRyeT1hcmdzLnN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgKQorICAgICkKKyAgICB0
cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0
dHB4X2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMyOTk5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKQEAgLTAs
MCArMSwyMTMgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29u
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUK
K2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUs
IERpY3QsIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCitmcm9tIGh0
dHB4IGltcG9ydCBBc3luY0NsaWVudAorZnJvbSBodHRweC5jb25maWcgaW1wb3J0IFRpbWVvdXQK
K2Zyb20gaHR0cHguZGlzcGF0Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRjaGVyCitmcm9tIGh0
dHB4Lm1vZGVscyBpbXBvcnQgUmVxdWVzdCwgUmVzcG9uc2UKKworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQor
CisKK2NsYXNzIEgzRGlzcGF0Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29sLCBBc3luY0Rpc3Bh
dGNoZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9odHRw
ID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRz
OiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5fcmVxdWVzdF93
YWl0ZXI6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KKwor
ICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRpbWVvdXQ6IFRpbWVv
dXQgPSBOb25lKSAtPiBSZXNwb25zZToKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKworICAgICAgICAjIHByZXBhcmUgcmVxdWVz
dAorICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBzdHIocmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2RlKCkpLAor
ICAgICAgICAgICAgXQorICAgICAgICAgICAgKyBbCisgICAgICAgICAgICAgICAgKGsuZW5jb2Rl
KCksIHYuZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiByZXF1ZXN0Lmhl
YWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIGsgbm90IGluICgiY29ubmVjdGlvbiIs
ICJob3N0IikKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5z
ZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJlYWQoKSwgZW5kX3N0
cmVhbT1UcnVlKQorCisgICAgICAgICMgdHJhbnNtaXQgcmVxdWVzdAorICAgICAgICB3YWl0ZXIg
PSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50
c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJl
YW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgICAgICMgcHJv
Y2VzcyByZXNwb25zZQorICAgICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRdID0gYXdhaXQgYXN5
bmNpby5zaGllbGQod2FpdGVyKQorICAgICAgICBjb250ZW50ID0gYiIiCisgICAgICAgIGhlYWRl
cnMgPSBbXQorICAgICAgICBzdGF0dXNfY29kZSA9IE5vbmUKKyAgICAgICAgZm9yIGV2ZW50IGlu
IGV2ZW50czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXJbMDoxXSAhPSBiIjoiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUuZGVjb2RlKCkpKQor
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgKz0gZXZlbnQuZGF0YQorCisgICAgICAgIHJldHVybiBSZXNwb25z
ZSgKKyAgICAgICAgICAgIHN0YXR1c19jb2RlPXN0YXR1c19jb2RlLAorICAgICAgICAgICAgaHR0
cF92ZXJzaW9uPSJIVFRQLzMiLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAg
ICAgICAgY29udGVudD1jb250ZW50LAorICAgICAgICAgICAgcmVxdWVzdD1yZXF1ZXN0LAorICAg
ICAgICApCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVu
dCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFS
ZWNlaXZlZCkpOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAg
ICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQp
CisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQp
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVx
dWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZl
ZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhl
IEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAg
ICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitk
ZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICIiIgorICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tl
dAorICAgIGlzIHJlY2VpdmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lv
biB0aWNrZXQgcmVjZWl2ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAg
IHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAg
IHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9u
OiBRdWljQ29uZmlndXJhdGlvbiwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4gTm9uZToKKyAgICAj
IHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKyAgICBhc3NlcnQgcGFyc2Vk
LnNjaGVtZSA9PSAiaHR0cHMiLCAiT25seSBodHRwczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgor
ICAgIGlmICI6IiBpbiBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBh
cnNlZC5uZXRsb2Muc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQorICAg
IGVsc2U6CisgICAgICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHBvcnQgPSA0NDMK
KworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAgICAgICAgcG9ydCwK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9SDNEaXNwYXRjaGVyLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVf
c2Vzc2lvbl90aWNrZXQsCisgICAgKSBhcyBkaXNwYXRjaDoKKyAgICAgICAgY2xpZW50ID0gQXN5
bmNDbGllbnQoZGlzcGF0Y2g9Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3BhdGNoKSkKKworICAg
ICAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNs
aWVudC5wb3N0KAorICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWRh
dGEuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisK
KyAgICAgICAgZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICAjIHByaW50
IHNwZWVkCisgICAgICAgIG9jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50KQorICAgICAgICBs
b2dnZXIuaW5mbygKKyAgICAgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUu
M2YgTWJwcykiCisgICAgICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9jdGV0cyAqIDggLyBl
bGFwc2VkIC8gMTAwMDAwMCkKKyAgICAgICAgKQorCisgICAgICAgICMgcHJpbnQgcmVzcG9uc2UK
KyAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVycy5pdGVtcygpOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsgdmFsdWUgKyAiXHJc
biIpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlxyXG4iKQorICAgICAgICBzeXMuc3Rkb3V0
LmJ1ZmZlci53cml0ZShyZXNwb25zZS5jb250ZW50KQorICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZl
ci5mbHVzaCgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRoZSBVUkwgdG8gcXVl
cnkgKG11c3QgYmUgSFRUUFMpIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGlu
IGEgUE9TVCByZXF1ZXN0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8g
YSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3Ry
LAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJl
c2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXMiLAor
ICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBo
ZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmls
ZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJv
c2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9n
Z2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFt
ZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBp
ZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBwcmVwYXJl
IGNvbmZpZ3VyYXRpb24KKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4pCisgICAgaWYgYXJncy5xdWljX2xv
ZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQorICAg
IGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2df
ZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90
aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25f
dGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Np
b25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9s
b29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFyZ3MudXJsLCBkYXRh
PWFyZ3MuZGF0YSkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJn
cy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5kdW1w
KGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmFkMjBiNjZiNGI3NTEzZWNl
YTZiYTMzZDM3NGE0OTVlNGU1MmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2ludGVyb3AucHkKQEAgLTAsMCArMSw1MzIgQEAKKyMKKyMgISEhIFdBUk5JTkcgISEh
CisjCisjIFRoaXMgZXhhbXBsZSB1c2VzIHNvbWUgcHJpdmF0ZSBBUElzLgorIworCitpbXBvcnQg
YXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3Ms
IGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEZsYWcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bCwgY2FzdAorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCB1cmxsaWIzCitmcm9tIGh0dHAzX2Ns
aWVudCBpbXBvcnQgSHR0cENsaWVudAorCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgY29u
bmVjdAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4KK2Zyb20gYWlv
cXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlv
cXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNo
UHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBR
dWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9n
Z2VyCisKKworY2xhc3MgUmVzdWx0KEZsYWcpOgorICAgIFYgPSAweDAwMDAwMQorICAgIEggPSAw
eDAwMDAwMgorICAgIEQgPSAweDAwMDAwNAorICAgIEMgPSAweDAwMDAwOAorICAgIFIgPSAweDAw
MDAxMAorICAgIFogPSAweDAwMDAyMAorICAgIFMgPSAweDAwMDA0MAorICAgIFEgPSAweDAwMDA4
MAorCisgICAgTSA9IDB4MDAwMTAwCisgICAgQiA9IDB4MDAwMjAwCisgICAgQSA9IDB4MDAwNDAw
CisgICAgVSA9IDB4MDAwODAwCisgICAgUCA9IDB4MDAxMDAwCisgICAgRSA9IDB4MDAyMDAwCisg
ICAgTCA9IDB4MDA0MDAwCisgICAgVCA9IDB4MDA4MDAwCisKKyAgICB0aHJlZSA9IDB4MDEwMDAw
CisgICAgZCA9IDB4MDIwMDAwCisgICAgcCA9IDB4MDQwMDAwCisKKyAgICBkZWYgX19zdHJfXyhz
ZWxmKToKKyAgICAgICAgZmxhZ3MgPSBzb3J0ZWQoCisgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgbGFtYmRhIHg6IGdldGF0dHIoUmVzdWx0LCB4KSwKKyAgICAgICAgICAgICAgICBm
aWx0ZXIobGFtYmRhIHg6IG5vdCB4LnN0YXJ0c3dpdGgoIl8iKSwgZGlyKFJlc3VsdCkpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogeC52YWx1ZSwKKyAgICAgICAg
KQorICAgICAgICByZXN1bHRfc3RyID0gIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6Cisg
ICAgICAgICAgICBpZiBzZWxmICYgZmxhZzoKKyAgICAgICAgICAgICAgICByZXN1bHRfc3RyICs9
IGZsYWcubmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHRfc3Ry
ICs9ICItIgorICAgICAgICByZXR1cm4gcmVzdWx0X3N0cgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFNlcnZlcjoKKyAgICBuYW1lOiBzdHIKKyAgICBob3N0OiBzdHIKKyAgICBwb3J0OiBpbnQgPSA0
NDMzCisgICAgaHR0cDM6IGJvb2wgPSBUcnVlCisgICAgcmV0cnlfcG9ydDogT3B0aW9uYWxbaW50
XSA9IDQ0MzQKKyAgICBwYXRoOiBzdHIgPSAiLyIKKyAgICBwdXNoX3BhdGg6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgcmVzdWx0OiBSZXN1bHQgPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGFt
YmRhOiBSZXN1bHQoMCkpCisgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgc3RydWN0dXJlZF9sb2dnaW5nOiBib29sID0gRmFsc2UKKyAgICB0aHJv
dWdocHV0X2ZpbGVfc3VmZml4OiBzdHIgPSAiIgorICAgIHZlcmlmeV9tb2RlOiBPcHRpb25hbFtp
bnRdID0gTm9uZQorCisKK1NFUlZFUlMgPSBbCisgICAgU2VydmVyKCJha2FtYWlxdWljIiwgImll
dGYuYWthcXVpYy5jb20iLCBwb3J0PTQ0MywgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCisg
ICAgU2VydmVyKAorICAgICAgICAiYWlvcXVpYyIsICJxdWljLmFpb3J0Yy5vcmciLCBwb3J0PTQ0
MywgcHVzaF9wYXRoPSIvIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAgICApLAorICAgIFNl
cnZlcigiYXRzIiwgInF1aWMub2dyZS5jb20iKSwKKyAgICBTZXJ2ZXIoImY1IiwgImY1cXVpYy5j
b20iLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZlcigiaGFza2VsbCIsICJtZXcub3JnIiwg
cmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImdxdWljIiwgInF1aWMucm9ja3MiLCByZXRy
eV9wb3J0PU5vbmUpLAorICAgIFNlcnZlcigibHNxdWljIiwgImh0dHAzLXRlc3QubGl0ZXNwZWVk
dGVjaC5jb20iLCBwdXNoX3BhdGg9Ii8yMDA/cHVzaD0vMTAwIiksCisgICAgU2VydmVyKAorICAg
ICAgICAibXNxdWljIiwKKyAgICAgICAgInF1aWMud2VzdHVzLmNsb3VkYXBwLmF6dXJlLmNvbSIs
CisgICAgICAgIHBvcnQ9NDQzMywKKyAgICAgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ9NDQz
MywKKyAgICAgICAgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUsCisgICAgICAgIHRocm91Z2hwdXRf
ZmlsZV9zdWZmaXg9Ii50eHQiLAorICAgICAgICB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FLAor
ICAgICksCisgICAgU2VydmVyKAorICAgICAgICAibXZmc3QiLCAiZmIubXZmc3QubmV0IiwgcG9y
dD00NDMsIHB1c2hfcGF0aD0iL3B1c2giLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9VHJ1ZQorICAgICks
CisgICAgU2VydmVyKCJuZ3RjcDIiLCAibmdodHRwMi5vcmciLCBwdXNoX3BhdGg9Ii8/cHVzaD0v
MTAwIiksCisgICAgU2VydmVyKCJuZ3hfcXVpYyIsICJjbG91ZGZsYXJlLXF1aWMuY29tIiwgcG9y
dD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInBhbmRvcmEiLCAicGFuZG9yYS5j
bS5pbi50dW0uZGUiLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAgICBTZXJ2ZXIoInBp
Y29xdWljIiwgInRlc3QucHJpdmF0ZW9jdG9wdXMuY29tIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRy
dWUpLAorICAgIFNlcnZlcigicXVhbnQiLCAicXVhbnQuZWdnZXJ0Lm9yZyIsIGh0dHAzPUZhbHNl
KSwKKyAgICBTZXJ2ZXIoInF1aWMtZ28iLCAicXVpYy5zZWVtYW5uLmlvIiwgcG9ydD00NDMsIHJl
dHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInF1aWNoZSIsICJxdWljLnRlY2giLCBwb3J0PTg0
NDMsIHJldHJ5X3BvcnQ9ODQ0NCksCisgICAgU2VydmVyKCJxdWljbHkiLCAicXVpYy5leGFtcDFl
Lm5ldCIpLAorICAgIFNlcnZlcigicXVpbm4iLCAicmFsaXRoLmNvbSIpLAorXQorCisKK2FzeW5j
IGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb24oc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRp
b246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICAjIGZvcmNlIHZlcnNpb24gbmVnb3RpYXRpb24K
KyAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0
QSkKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInZlcnNpb25f
bmVnb3RpYXRpb24iCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1
bHQgfD0gUmVzdWx0LlYKKworCithc3luYyBkZWYgdGVzdF9oYW5kc2hha2VfYW5kX2Nsb3NlKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5
bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0
IHByb3RvY29sLnBpbmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ICisgICAg
c2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQworCisKK2FzeW5jIGRlZiB0ZXN0X3N0YXRlbGVzc19y
ZXRyeShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgor
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5yZXRy
eV9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInJldHJ5Igor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5T
CisKKworYXN5bmMgZGVmIHRlc3RfcXVhbnR1bV9yZWFkaW5lc3Moc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBjb25maWd1cmF0aW9uLnF1YW50
dW1fcmVhZGluZXNzX3Rlc3QgPSBUcnVlCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAg
ICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorICAgICAg
ICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5RCisKKworYXN5bmMgZGVmIHRlc3RfaHR0cF8wKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgaWYg
c2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBjb25maWd1cmF0aW9u
LmFscG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAg
ICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAgICBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBw
cm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0CisgICAgICAgIGV2ZW50
cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZv
cm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICApCisg
ICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ECisKKworYXN5bmMgZGVm
IHRlc3RfaHR0cF8zKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJh
dGlvbik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1IdHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2Fz
dChIdHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0
CisgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRw
czovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRo
KQorICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0s
IEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5E
CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC50aHJlZQorCisgICAgICAgICMg
cGVyZm9ybSBtb3JlIEhUVFAgcmVxdWVzdHMgdG8gdXNlIFFQQUNLIGR5bmFtaWMgdGFibGVzCisg
ICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJv
dG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZvcm1hdChzZXJ2
ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgor
ICAgICAgICAgICAgaHR0cCA9IGNhc3QoSDNDb25uZWN0aW9uLCBwcm90b2NvbC5faHR0cCkKKyAg
ICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICAgICAi
UVBBQ0sgZGVjb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAgICAgICAgaHR0cC5f
ZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5
dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fbG9n
Z2VyLmluZm8oCisgICAgICAgICAgICAgICAgIlFQQUNLIGVuY29kZXIgYnl0ZXMgUlggJWQgVFgg
JWQiLAorICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQsCisgICAg
ICAgICAgICAgICAgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50LAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNfcmVjZWl2
ZWQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZGVjb2Rlcl9ieXRlc19zZW50CisgICAgICAg
ICAgICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAg
ICBhbmQgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50CisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LmQKKworICAgICAgICAjIGNoZWNrIHB1c2gg
c3VwcG9ydAorICAgICAgICBpZiBzZXJ2ZXIucHVzaF9wYXRoIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgcHJvdG9jb2wucHVzaGVzLmNsZWFyKCkKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29s
LmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucHVzaF9wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjUpCisgICAgICAgICAgICBmb3IgcHVzaF9pZCwg
ZXZlbnRzIGluIHByb3RvY29sLnB1c2hlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICAgICAgbGVuKGV2ZW50cykgPj0gMworICAgICAgICAgICAgICAgICAg
ICBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIFB1c2hQcm9taXNlUmVjZWl2ZWQpCisgICAgICAg
ICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1sxXSwgSGVhZGVyc1JlY2VpdmVkKQor
ICAgICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMl0sIERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5fcXVp
Yy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAiUHVzaCBwcm9taXNlICVk
IGZvciAlcyByZWNlaXZlZCAoc3RhdHVzICVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGljdChldmVudHNbMF0uaGVhZGVycylb
YiI6cGF0aCJdLmRlY29kZSgiYXNjaWkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludChk
aWN0KGV2ZW50c1sxXS5oZWFkZXJzKVtiIjpzdGF0dXMiXSksCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5wCisKKwor
YXN5bmMgZGVmIHRlc3Rfc2Vzc2lvbl9yZXN1bXB0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgcG9ydCA9IHNlcnZlci5zZXNzaW9uX3Jl
c3VtcHRpb25fcG9ydCBvciBzZXJ2ZXIucG9ydAorICAgIHNhdmVkX3RpY2tldCA9IE5vbmUKKwor
ICAgIGRlZiBzZXNzaW9uX3RpY2tldF9oYW5kbGVyKHRpY2tldCk6CisgICAgICAgIG5vbmxvY2Fs
IHNhdmVkX3RpY2tldAorICAgICAgICBzYXZlZF90aWNrZXQgPSB0aWNrZXQKKworICAgICMgY29u
bmVjdCBhIGZpcnN0IHRpbWUsIHJlY2VpdmUgYSB0aWNrZXQKKyAgICBhc3luYyB3aXRoIGNvbm5l
Y3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vz
c2lvbl90aWNrZXRfaGFuZGxlciwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBhd2FpdCBw
cm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHNvbWUgc2VydmVycyBkb24ndCBzZW5kIHRoZSB0
aWNrZXQgaW1tZWRpYXRlbHkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCisgICAg
IyBjb25uZWN0IGEgc2Vjb25kIHRpbWUsIHdpdGggdGhlIHRpY2tldAorICAgIGlmIHNhdmVkX3Rp
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9
IHNhdmVkX3RpY2tldAorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2VydmVyLmhvc3QsIHBv
cnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikgYXMgcHJvdG9jb2w6CisgICAgICAgICAg
ICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHdh
cyByZXN1bWVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMuc2Vzc2lvbl9yZXN1
bWVkOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlIKKworICAgICAg
ICAgICAgIyBjaGVjayBlYXJseSBkYXRhIHdhcyBhY2NlcHRlZAorICAgICAgICAgICAgaWYgcHJv
dG9jb2wuX3F1aWMudGxzLmVhcmx5X2RhdGFfYWNjZXB0ZWQ6CisgICAgICAgICAgICAgICAgc2Vy
dmVyLnJlc3VsdCB8PSBSZXN1bHQuWgorCisKK2FzeW5jIGRlZiB0ZXN0X2tleV91cGRhdGUoc2Vy
dmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVz
ZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAg
IyByZXF1ZXN0IGtleSB1cGRhdGUKKyAgICAgICAgcHJvdG9jb2wucmVxdWVzdF9rZXlfdXBkYXRl
KCkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2Nv
bC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5VCisKKworYXN5bmMg
ZGVmIHRlc3RfbWlncmF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9z
dCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJv
dG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3Rv
Y29sLnBpbmcoKQorCisgICAgICAgICMgY2hhbmdlIGNvbm5lY3Rpb24gSUQgYW5kIHJlcGxhY2Ug
dHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgcHJvdG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0IGxvb3AuY3JlYXRl
X2RhdGFncmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2FkZHI9KCI6OiIsIDAp
KQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29s
LnBpbmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGRjaWRzID0gc2V0KCkKKyAg
ICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBdWzBd
WyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9
PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2Vp
dmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICIxUlRUIgor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBkY2lkcy5hZGQoZGF0YVsiaGVhZGVyIl1b
ImRjaWQiXSkKKyAgICAgICAgaWYgbGVuKGRjaWRzKSA9PSAyOgorICAgICAgICAgICAgc2VydmVy
LnJlc3VsdCB8PSBSZXN1bHQuTQorCisKK2FzeW5jIGRlZiB0ZXN0X3JlYmluZGluZyhzZXJ2ZXI6
IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdp
dGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNv
bWUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHJl
cGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQuY2xvc2UoKQorICAg
ICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1iZGE6IHByb3RvY29s
LCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYwor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9
IFJlc3VsdC5CCisKKworYXN5bmMgZGVmIHRlc3Rfc3Bpbl9iaXQoc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
CisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Cisg
ICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZwor
ICAgICAgICBzcGluX2JpdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBl
dmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAg
ICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYg
Y2F0ZWdvcnkgPT0gImNvbm5lY3Rpdml0eSIgYW5kIGV2ZW50ID09ICJzcGluX2JpdF91cGRhdGVk
IjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdHMuYWRkKGRhdGFbInN0YXRlIl0pCisgICAgICAg
IGlmIGxlbihzcGluX2JpdHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5QCisKKworYXN5bmMgZGVmIHRlc3RfdGhyb3VnaHB1dChzZXJ2ZXI6IFNlcnZlciwgY29u
ZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGZhaWx1cmVzID0gMAorCisgICAg
Zm9yIHNpemUgaW4gWzUwMDAwMDAsIDEwMDAwMDAwXToKKyAgICAgICAgcHJpbnQoIlRlc3Rpbmcg
JWQgYnl0ZXMgZG93bmxvYWQiICUgc2l6ZSkKKyAgICAgICAgcGF0aCA9ICIvJWQlcyIgJSAoc2l6
ZSwgc2VydmVyLnRocm91Z2hwdXRfZmlsZV9zdWZmaXgpCisKKyAgICAgICAgIyBwZXJmb3JtIEhU
VFAgcmVxdWVzdCBvdmVyIFRDUAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAg
IHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovLyIgKyBzZXJ2ZXIuaG9zdCArIHBhdGgs
IHZlcmlmeT1GYWxzZSkKKyAgICAgICAgdGNwX29jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50
KQorICAgICAgICB0Y3BfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgYXNz
ZXJ0IHRjcF9vY3RldHMgPT0gc2l6ZSwgIkhUVFAvVENQIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2gi
CisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFFVSUMKKyAgICAgICAgaWYg
c2VydmVyLmh0dHAzOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9
IEgzX0FMUE4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9w
cm90b2NvbHMgPSBIMF9BTFBOCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgICAg
ICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICAgICApIGFzIHBy
b3RvY29sOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29s
KQorCisgICAgICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAg
ICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5w
b3J0LCBwYXRoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcXVpY19lbGFwc2VkID0gdGlt
ZS50aW1lKCkgLSBzdGFydAorICAgICAgICAgICAgcXVpY19vY3RldHMgPSAwCisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIHF1
aWNfb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgICAgIGFzc2VydCBxdWljX29j
dGV0cyA9PSBzaXplLCAiSFRUUC9RVUlDIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2giCisKKyAgICAg
ICAgcHJpbnQoIiAtIEhUVFAvVENQICBjb21wbGV0ZWQgaW4gJS4zZiBzIiAlIHRjcF9lbGFwc2Vk
KQorICAgICAgICBwcmludCgiIC0gSFRUUC9RVUlDIGNvbXBsZXRlZCBpbiAlLjNmIHMiICUgcXVp
Y19lbGFwc2VkKQorCisgICAgICAgIGlmIHF1aWNfZWxhcHNlZCA+IDEuMSAqIHRjcF9lbGFwc2Vk
OgorICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQorICAgICAgICAgICAgcHJpbnQoIiA9PiBGQUlM
IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCIgPT4gUEFTUyIpCisKKyAgICBp
ZiBmYWlsdXJlcyA9PSAwOgorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5UCisKKwor
ZGVmIHByaW50X3Jlc3VsdChzZXJ2ZXI6IFNlcnZlcikgLT4gTm9uZToKKyAgICByZXN1bHQgPSBz
dHIoc2VydmVyLnJlc3VsdCkucmVwbGFjZSgidGhyZWUiLCAiMyIpCisgICAgcmVzdWx0ID0gcmVz
dWx0WzA6OF0gKyAiICIgKyByZXN1bHRbODoxNl0gKyAiICIgKyByZXN1bHRbMTY6XQorICAgIHBy
aW50KCIlcyVzJXMiICUgKHNlcnZlci5uYW1lLCAiICIgKiAoMjAgLSBsZW4oc2VydmVyLm5hbWUp
KSwgcmVzdWx0KSkKKworCithc3luYyBkZWYgcnVuKHNlcnZlcnMsIHRlc3RzLCBxdWljX2xvZz1G
YWxzZSwgc2VjcmV0c19sb2dfZmlsZT1Ob25lKSAtPiBOb25lOgorICAgIGZvciBzZXJ2ZXIgaW4g
c2VydmVyczoKKyAgICAgICAgaWYgc2VydmVyLnN0cnVjdHVyZWRfbG9nZ2luZzoKKyAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkwKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgdGVz
dF9mdW5jIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQoIlxuPT09ICVzICVzID09PVxuIiAl
IChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBR
dWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1IM19BTFBO
ICsgSDBfQUxQTiwKKyAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksCisgICAgICAgICAgICAgICAgc2VjcmV0c19s
b2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlPXNl
cnZlci52ZXJpZnlfbW9kZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHRlc3RfbmFt
ZSA9PSAidGVzdF90aHJvdWdocHV0IjoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gNjAKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDEwCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0X2ZvcigKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdF9mdW5jKHNlcnZlciwgY29uZmlndXJhdGlvbiksIHRpbWVvdXQ9dGlt
ZW91dAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICAgICAgICAgIHByaW50KGV4YykKKworICAgICAgICAgICAgaWYgcXVpY19s
b2c6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIlcy0lcy5xbG9nIiAlIChzZXJ2ZXIubmFt
ZSwgdGVzdF9uYW1lKSwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAgICAgIGpz
b24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBp
bmRlbnQ9NCkKKworICAgICAgICBwcmludCgiIikKKyAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZl
cikKKworICAgICMgcHJpbnQgc3VtbWFyeQorICAgIGlmIGxlbihzZXJ2ZXJzKSA+IDE6CisgICAg
ICAgIHByaW50KCJTVU1NQVJZIikKKyAgICAgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAg
ICAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZlcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJR
VUlDIGludGVyb3AgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LXEiLAorICAgICAgICAiLS1xdWljLWxvZyIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
CisgICAgICAgIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQi
LAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1zZXJ2ZXIiLCB0
eXBlPXN0ciwgaGVscD0ib25seSBydW4gYWdhaW5zdCB0aGUgc3BlY2lmaWVkIHNlcnZlci4iCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGVzdCIsIHR5cGU9c3RyLCBoZWxwPSJv
bmx5IHJ1biB0aGUgc3BlY2lmZWQgdGVzdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIs
CisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVz
aGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZl
cmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVs
bmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJV
RyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBvcGVu
IFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIHNlY3JldHNf
bG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBlbHNlOgorICAgICAg
ICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAgIyBkZXRlcm1pbmUgd2hhdCB0byBydW4K
KyAgICBzZXJ2ZXJzID0gU0VSVkVSUworICAgIHRlc3RzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6
IHhbMF0uc3RhcnRzd2l0aCgidGVzdF8iKSwgZ2xvYmFscygpLml0ZW1zKCkpKQorICAgIGlmIGFy
Z3Muc2VydmVyOgorICAgICAgICBzZXJ2ZXJzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHgubmFt
ZSA9PSBhcmdzLnNlcnZlciwgc2VydmVycykpCisgICAgaWYgYXJncy50ZXN0OgorICAgICAgICB0
ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdID09IGFyZ3MudGVzdCwgdGVzdHMpKQor
CisgICAgIyBkaXNhYmxlIHJlcXVlc3RzIFNTTCB3YXJuaW5ncworICAgIHVybGxpYjMuZGlzYWJs
ZV93YXJuaW5ncyh1cmxsaWIzLmV4Y2VwdGlvbnMuSW5zZWN1cmVSZXF1ZXN0V2FybmluZykKKwor
ICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb29wLnJ1bl91bnRpbF9j
b21wbGV0ZSgKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2VydmVycz1zZXJ2ZXJzLAorICAg
ICAgICAgICAgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBxdWljX2xvZz1hcmdzLnF1aWNfbG9n
LAorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAg
ICApCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGll
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjZhNWI3NmUwZTcwMTgyODI2N2MzMzNmMzM4NDc2ZDViMGU3MjJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKQEAgLTAsMCArMSwx
MDAgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29uCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHNzbAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsLCBjYXN0
CisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9x
dWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9t
IGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNlaXZlZCwgUXVpY0V2
ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgU2lkdWNrQ2xpZW50KFF1
aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5fYWNrX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9uZV1dID0gTm9u
ZQorCisgICAgYXN5bmMgZGVmIHF1YWNrKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBz
ZWxmLl9hY2tfd2FpdGVyIGlzIE5vbmUsICJPbmx5IG9uZSBxdWFjayBhdCBhIHRpbWUuIgorICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjayIpCisKKyAgICAgICAg
d2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgc2VsZi5fYWNrX3dh
aXRlciA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4g
YXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2
ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fYWNr
X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFncmFtRnJhbWVSZWNlaXZlZCkgYW5kIGV2ZW50LmRhdGEgPT0gYiJxdWFjay1hY2siOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Fja193YWl0ZXIKKyAgICAgICAgICAgICAgICBz
ZWxmLl9hY2tfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0
KE5vbmUpCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwgaG9zdDogc3RyLCBwb3J0OiBpbnQpIC0+IE5vbmU6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0
KAorICAgICAgICBob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNyZWF0
ZV9wcm90b2NvbD1TaWR1Y2tDbGllbnQKKyAgICApIGFzIGNsaWVudDoKKyAgICAgICAgY2xpZW50
ID0gY2FzdChTaWR1Y2tDbGllbnQsIGNsaWVudCkKKyAgICAgICAgbG9nZ2VyLmluZm8oInNlbmRp
bmcgcXVhY2siKQorICAgICAgICBhd2FpdCBjbGllbnQucXVhY2soKQorICAgICAgICBsb2dnZXIu
aW5mbygicmVjZWl2ZWQgcXVhY2stYWNrIikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJTaURV
Q0sgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiaG9zdCIsIHR5
cGU9c3RyLCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBob3N0IG5hbWUgb3IgSVAgYWRkcmVzcyIK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicG9ydCIsIHR5cGU9aW50LCBoZWxwPSJU
aGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2VydmVyIGNlcnRpZmlj
YXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0t
cXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBR
TE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1s
IiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAg
aGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5Igor
ICAgICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJh
c2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShu
YW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3Mu
dmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0g
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsic2lkdWNrIl0sIGlz
X2NsaWVudD1UcnVlLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02NTUzNgorICAgICkKKyAgICBp
ZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlID0gc3Ns
LkNFUlRfTk9ORQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
cXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAg
ICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19s
b2csICJhIikKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6
CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgcnVuKGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgaG9zdD1hcmdzLmhvc3QsIHBvcnQ9YXJncy5wb3J0KQor
ICAgICAgICApCisgICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAi
dyIpIGFzIGxvZ2dlcl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4NTQ4N2U4NDA4
MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCIvPgorICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+CisgICAgICAgIDxwPgorICAg
ICAgICAgICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu
Y29tL2Fpb3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCisgICAgICAgICAgICBhIFFVSUMgYW5k
IEhUVFAvMyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KKyAgICAgICAgPC9wPgor
eyUgaWYgcmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9CisgICAgICAgIDxw
PgorICAgICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRoaXMgcGFnZSB1c2lu
ZyBIVFRQLzMhCisgICAgICAgIDwvcD4KK3slIGVuZGlmICV9CisgICAgICAgIDxoMj5BdmFpbGFi
bGUgZW5kcG9pbnRzPC9oMj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+
R0VUIC88L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgorICAgICAgICAgICAgPGxp
PjxzdHJvbmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5dGVzIG9mIHBsYWlu
IHRleHQ8L2xpPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNobzwvc3Ryb25nPiBy
ZXR1cm5zIHRoZSByZXF1ZXN0IGRhdGE8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgIDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdlYlNvY2tldCBlY2hv
IHNlcnZpY2UuCisgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8ZW0+OnByb3RvY29s
PC9lbT4gcHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4KKyAgICAgICAgICAg
IDwvbGk+CisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBocmVmPSIvaHR0cGJp
bi8iPmh0dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9s
b2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MDk5ZjY3ZGNhMjJjNTdmYmM5MWQ4ZDE5YTBkNmE4OGYzYzFiOWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwKQEAg
LTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFpb3F1aWMgLSBsb2dz
PC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGUuY3Nz
Ii8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+UUxPRyBmaWxlczwvaDE+
CisgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9ncyI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAg
IDx0aD5uYW1lPC90aD4KKyAgICAgICAgICAgIDx0aD5kYXRlIChVVEMpPC90aD4KKyAgICAgICAg
ICAgIDx0aD5zaXplPC90aD4KKyAgICAgICAgPC90cj4KK3slIGZvciBsb2cgaW4gbG9ncyAlfQor
ICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgorICAgICAgICAgICAg
ICAgIDxhIGhyZWY9Int7IGxvZy5maWxlX3VybCB9fSI+e3sgbG9nLm5hbWUgfX08L2E+CisgICAg
ICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLnF2aXNfdXJsIH19Ij5bcXZpc108L2E+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJkYXRlIj57eyBsb2cuZGF0ZSB9
fTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPnt7IGxvZy5zaXplIH19PC90ZD4K
KyAgICAgICAgPC90cj4KK3slIGVuZGZvciAlfQorICAgICAgICA8L3RhYmxlPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3czYy1pbXBv
cnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2YmI5ZDM2NGQ3Y2RjMDJmMjY0M2UzZDdiZGQ3NDgyMWJmNDQ2
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0
ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjhmMjIwNGFkNDFlNDhmZjFkZjRiNWI0NzMxNjFkZGU2ZTgyN2ZjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9l
eGFtcGxlcy9odHRwM19jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2Vy
dmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19j
bGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzMzYTM5Nzg3
NGM2NTNjOTFhMjBhMGI5MjU2NzNkNWM0OWM3Yjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CkBAIC0wLDAgKzEsMyBAQAorY3J5cHRvZ3JhcGh5
CitzcGhpbnhfYXV0b2RvY190eXBlaGludHMKK3NwaGlueGNvbnRyaWItYXN5bmNpbwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVlMjJlNzRiZDIx
YTk0NjdjZjE2NmQ5NDA0YzYyNjlhMDlkNWEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxNyBAQAorVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQt
b3BlbnNzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NGRlZDcyYzE3MjRiYjAwNDMyMzI4YzVlMjI5YmE3Mzc2MmM1
ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNz
bApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2Rlc3RkaXI9JDEKK2Nh
Y2hlZGlyPSQxLiRQWVRIT05fQVJDSAorCitmb3IgZCBpbiBvcGVuc3NsICRkZXN0ZGlyOyBkbwor
ICAgIGlmIFsgLWUgJGQgXTsgdGhlbgorICAgICAgICBybSAtcmYgJGQKKyAgICBmaQorZG9uZQor
CitpZiBbICEgLWUgJGNhY2hlZGlyIF07IHRoZW4KKyAgICAjIGJ1aWxkIG9wZW5zc2wKKyAgICBt
a2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uv
b3BlbnNzbC0xLjEuMWYudGFyLmd6IHwgdGFyIHh6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25l
bnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICAuL2NvbmZpZyBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cworICAgIG1ha2UKKworICAgIG1rZGlyICRjYWNoZWRpcgorICAgIG1rZGlyICRjYWNo
ZWRpci9saWIKKyAgICBjcCAtUiBpbmNsdWRlICRjYWNoZWRpcgorICAgIGNwIGxpYmNyeXB0by5h
IGxpYnNzbC5hICRjYWNoZWRpci9saWIKK2ZpCisKK2NwIC1SICRjYWNoZWRpciAkZGVzdGRpcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTAwNzlkZGY4
MzIwZjc1NGJkOTQyMjE1N2U2NTQzOTQ2ZDYwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKQEAgLTAsMCArMSwzOSBAQAorc2V0IGRl
c3RkaXI9JTEKK3NldCBjYWNoZWRpcj0lMS4lUFlUSE9OX0FSQ0glCisKK2ZvciAlJWQgaW4gKG9w
ZW5zc2wgJWRlc3RkaXIlKSBkbyAoCisgICAgaWYgZXhpc3QgJSVkICgKKyAgICAgICAgcm1kaXIg
L3MgL3EgJSVkCisgICAgKQorKQorCitpZiAlUFlUSE9OX0FSQ0glID09IDY0ICgKKyAgIHNldCBP
UEVOU1NMX0NPTkZJRz1WQy1XSU42NEEKKyAgIHNldCBWQ19BUkNIPXg2NAorKSBlbHNlICgKKyAg
IHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU4zMgorICAgc2V0IFZDX0FSQ0g9eDg2CispCisKK2Nh
bGwgIkM6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxF
bnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiAlVkNfQVJDSCUKK1NF
VCBQQVRIPSVQQVRIJTtDOlxQcm9ncmFtIEZpbGVzXE5BU00KKworaWYgbm90IGV4aXN0ICVjYWNo
ZWRpciUgKAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0dHBzOi8vd3d3Lm9wZW5z
c2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogLW8gb3BlbnNzbC50YXIuZ3oKKyAg
ICB0YXIgeHpmIG9wZW5zc2wudGFyLmd6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25lbnRzIDEK
KyAgICBjZCBvcGVuc3NsCisKKyAgICBwZXJsIENvbmZpZ3VyZSBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cyAlT1BFTlNTTF9DT05GSUclCisgICAgbm1ha2UKKworICAgIG1rZGlyICVjYWNoZWRp
ciUKKyAgICBta2RpciAlY2FjaGVkaXIlXGluY2x1ZGUKKyAgICBta2RpciAlY2FjaGVkaXIlXGxp
YgorICAgIHhjb3B5IGluY2x1ZGUgJWNhY2hlZGlyJVxpbmNsdWRlXCAvRQorICAgIGNvcHkgbGli
Y3J5cHRvLmxpYiAlY2FjaGVkaXIlXGxpYlwKKyAgICBjb3B5IGxpYnNzbC5saWIgJWNhY2hlZGly
JVxsaWJcCispCisKK21rZGlyICVkZXN0ZGlyJQoreGNvcHkgJWNhY2hlZGlyJSAlZGVzdGRpciUg
L0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3ZjkzOWQ0Mjhm
NzEwNjk0MzQ3NTMzN2FiZDgyODBkZjBmMTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9i
dWlsZC1vcGVuc3NsLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMDI1YWQwZjczM2IzOGJiOTRmOGJi
OGViMDQ3ODVkYTNiNGY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5j
ZmcKQEAgLTAsMCArMSwyMSBAQAorW2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9IGFpb3F1aWMKKwor
W2ZsYWtlOF0KK2lnbm9yZT1FMjAzLFc1MDMKK21heC1saW5lLWxlbmd0aD0xNTAKKworW2lzb3J0
XQorZGVmYXVsdF9zZWN0aW9uID0gVEhJUkRQQVJUWQoraW5jbHVkZV90cmFpbGluZ19jb21tYSA9
IFRydWUKK2tub3duX2ZpcnN0X3BhcnR5ID0gYWlvcXVpYworbGluZV9sZW5ndGggPSA4OAorbXVs
dGlfbGluZV9vdXRwdXQgPSAzCisKK1tteXB5XQorZGlzYWxsb3dfdW50eXBlZF9jYWxscyA9IFRy
dWUKK2Rpc2FsbG93X3VudHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK2lnbm9yZV9taXNzaW5nX2lt
cG9ydHMgPSBUcnVlCitzdHJpY3Rfb3B0aW9uYWwgPSBGYWxzZQord2Fybl9yZWR1bmRhbnRfY2Fz
dHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzVl
YTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc2V0dXAucHkKQEAgLTAsMCArMSw2OSBAQAoraW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKKworaW1wb3J0IHNldHVwdG9vbHMKKworcm9vdF9kaXIgPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworYWJvdXQgPSB7fQorYWJvdXRfZmlsZSA9
IG9zLnBhdGguam9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFib3V0LnB5IikKK3dp
dGggb3BlbihhYm91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICBleGVjKGZw
LnJlYWQoKSwgYWJvdXQpCisKK3JlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAi
UkVBRE1FLnJzdCIpCit3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpIGFz
IGY6CisgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCisKK2lmIHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCisgICAgbGlicmFyaWVzID0g
WyJsaWJjcnlwdG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIsICJ1c2VyMzIiLCAi
d3MyXzMyIl0KK2Vsc2U6CisgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyItc3RkPWM5OSJdCisg
ICAgbGlicmFyaWVzID0gWyJjcnlwdG8iXQorCitzZXR1cHRvb2xzLnNldHVwKAorICAgIG5hbWU9
YWJvdXRbIl9fdGl0bGVfXyJdLAorICAgIHZlcnNpb249YWJvdXRbIl9fdmVyc2lvbl9fIl0sCisg
ICAgZGVzY3JpcHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCisgICAgbG9uZ19kZXNjcmlwdGlv
bj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD1hYm91dFsiX191cmlfXyJdLAorICAgIGF1dGhv
cj1hYm91dFsiX19hdXRob3JfXyJdLAorICAgIGF1dGhvcl9lbWFpbD1hYm91dFsiX19lbWFpbF9f
Il0sCisgICAgbGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKKyAgICBpbmNsdWRlX3BhY2th
Z2VfZGF0YT1UcnVlLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRldmVsb3BtZW50IFN0
YXR1cyA6OiA0IC0gQmV0YSIsCisgICAgICAgICJFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1l
bnQiLAorICAgICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAg
ICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisgICAgICAgICJPcGVy
YXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42
IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAorICAg
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIsCisgICAgICAgICJU
b3BpYyA6OiBJbnRlcm5ldCA6OiBXV1cvSFRUUCIsCisgICAgXSwKKyAgICBleHRfbW9kdWxlcz1b
CisgICAgICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAgICAgImFpb3F1aWMuX2J1
ZmZlciIsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdz
LAorICAgICAgICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIuYyJdLAorICAgICAg
ICApLAorICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAgICAgICJhaW9xdWlj
Ll9jcnlwdG8iLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVf
YXJncywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBzb3Vy
Y2VzPVsic3JjL2Fpb3F1aWMvX2NyeXB0by5jIl0sCisgICAgICAgICksCisgICAgXSwKKyAgICBw
YWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKKyAgICBwYWNrYWdlX2RhdGE9eyJhaW9xdWljIjogWyJw
eS50eXBlZCIsICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKKyAgICBwYWNrYWdlcz1b
ImFpb3F1aWMiLCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAiYWlvcXVpYy5oMyIs
ICJhaW9xdWljLnF1aWMiXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgImNlcnRp
ZmkiLAorICAgICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCisgICAgICAgICdkYXRhY2xhc3Nl
czsgcHl0aG9uX3ZlcnNpb24gPCAiMy43IicsCisgICAgICAgICJweWxzcXBhY2sgPj0gMC4zLjMs
IDwgMC40LjAiLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDRhY2ViZWVmODNlYTQxODliZmFlNGNhOWYwODBkMjNkODc3YThiNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQpAQCAtMCww
ICsxLDMgQEAKKyMgZmxha2U4OiBub3FhCisKK2Zyb20gLmFib3V0IGltcG9ydCBfX3ZlcnNpb25f
XwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzRkYjgxNzU5MGJl
OGQ3MzZiMzI2NDZkNGNmZjQxYzlmNjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKQEAgLTAsMCArMSw0NDAgQEAKKyNkZWZpbmUgUFlfU1NJ
WkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
KyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2J1ZmZlciIKKworc3RhdGljIFB5T2JqZWN0
ICpCdWZmZXJSZWFkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlcldyaXRlRXJyb3I7CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDhfdCAqYmFzZTsK
KyAgICB1aW50OF90ICplbmQ7CisgICAgdWludDhfdCAqcG9zOworfSBCdWZmZXJPYmplY3Q7CisK
KyNkZWZpbmUgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKSBcCisgICAgaWYgKGxlbiA8IDAg
fHwgc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3Ry
aW5nKEJ1ZmZlclJlYWRFcnJvciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOyBcCisgICAgICAgIHJl
dHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCBs
ZW4pIFwKKyAgICBpZiAoc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKEJ1ZmZlcldyaXRlRXJyb3IsICJXcml0ZSBvdXQgb2YgYm91bmRzIik7
IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKK3N0YXRpYyBpbnQKK0J1ZmZlcl9p
bml0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqa3dsaXN0W10gPSB7ImNhcGFjaXR5IiwgImRhdGEiLCBOVUxM
fTsKKyAgICBpbnQgY2FwYWNpdHkgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEg
PSBOVUxMOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4gPSAwOworCisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGl5IyIsIChjaGFyKiopa3dsaXN0
LCAmY2FwYWNpdHksICZkYXRhLCAmZGF0YV9sZW4pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmJhc2UgPSBtYWxsb2MoZGF0YV9s
ZW4pOworICAgICAgICBzZWxmLT5lbmQgPSBzZWxmLT5iYXNlICsgZGF0YV9sZW47CisgICAgICAg
IG1lbWNweShzZWxmLT5iYXNlLCBkYXRhLCBkYXRhX2xlbik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhjYXBhY2l0eSk7CisgICAgICAgIHNlbGYtPmVuZCA9IHNl
bGYtPmJhc2UgKyBjYXBhY2l0eTsKKyAgICB9CisgICAgc2VsZi0+cG9zID0gc2VsZi0+YmFzZTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0J1ZmZlcl9kZWFsbG9jKEJ1ZmZlck9i
amVjdCAqc2VsZikKK3sKKyAgICBmcmVlKHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMgUHlPYmpl
Y3QgKgorQnVmZmVyX2RhdGFfc2xpY2UoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn
cykKK3sKKyAgICBpbnQgc3RhcnQsIHN0b3A7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFy
Z3MsICJpaSIsICZzdGFydCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChzdGFydCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0YXJ0ID4gc2VsZi0+ZW5kIHx8CisgICAgICAg
IHN0b3AgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdG9wID4gc2VsZi0+ZW5kIHx8CisgICAgICAgIHN0
b3AgPCBzdGFydCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAi
UmVhZCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAg
IHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikoc2VsZi0+YmFz
ZSArIHN0YXJ0KSwgKHN0b3AgLSBzdGFydCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVm
ZmVyX2VvZihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChz
ZWxmLT5wb3MgPT0gc2VsZi0+ZW5kKQorICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBQeV9S
RVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF9ieXRlcyhC
dWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmxlbikpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKTsKKworICAgIFB5T2JqZWN0
ICpvID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+cG9zLCBs
ZW4pOworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgcmV0dXJuIG87Cit9CisKK3N0YXRpYyBQ
eU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50OChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDEpCisKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21VbnNpZ25lZExvbmcoCisgICAgICAgICh1aW50OF90KSgqKHNlbGYtPnBvcysr
KSkKKyAgICApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDE2KEJ1
ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9CT1VO
RFMoc2VsZiwgMikKKworICAgIHVpbnQxNl90IHZhbHVlID0gKHVpbnQxNl90KSgqKHNlbGYtPnBv
cykpIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyAr
IDEpKTsKKyAgICBzZWxmLT5wb3MgKz0gMjsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25l
ZExvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDMy
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9C
T1VORFMoc2VsZiwgNCkKKworICAgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYt
PnBvcykpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5w
b3MgKyAxKSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxm
LT5wb3MgKyAzKSk7CisgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9t
VW5zaWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxs
X3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNL
X1JFQURfQk9VTkRTKHNlbGYsIDgpCisKKyAgICB1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdCko
KihzZWxmLT5wb3MpKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCko
KihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDYpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1
aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7CisgICAgc2VsZi0+cG9zICs9IDg7CisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9i
amVjdCAqCitCdWZmZXJfcHVsbF91aW50X3ZhcihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAgIENIRUNLX1JFQURfQk9VTkRTKHNl
bGYsIDEpCisgICAgc3dpdGNoICgqKHNlbGYtPnBvcykgPj4gNikgeworICAgIGNhc2UgMDoKKyAg
ICAgICAgdmFsdWUgPSAqKHNlbGYtPnBvcysrKSAmIDB4M0Y7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMikKKyAgICAgICAgdmFs
dWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDggfAorICAgICAgICAgICAg
ICAgICh1aW50MTZfdCkoKihzZWxmLT5wb3MgKyAxKSk7CisgICAgICAgIHNlbGYtPnBvcyArPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIENIRUNLX1JFQURfQk9VTkRT
KHNlbGYsIDQpCisgICAgICAgIHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYtPnBvcykgJiAweDNG
KSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDEpKSA8
PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA4
IHwKKyAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMykpOworICAgICAg
ICBzZWxmLT5wb3MgKz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Q0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKyAgICAgICAgdmFsdWUgPSAodWludDY0X3QpKCoo
c2VsZi0+cG9zKSAmIDB4M0YpIDw8IDU2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2Vs
Zi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+
cG9zICsgMykpIDw8IDMyIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9z
ICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsg
NSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNikp
IDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7Cisg
ICAgICAgIHNlbGYtPnBvcyArPSA4OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVj
dCAqCitCdWZmZXJfcHVzaF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlfc3NpemVfdCBkYXRh
X2xlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjIiwgJmRhdGEsICZkYXRh
X2xlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNl
bGYsIGRhdGFfbGVuKQorCisgICAgbWVtY3B5KHNlbGYtPnBvcywgZGF0YSwgZGF0YV9sZW4pOwor
ICAgIHNlbGYtPnBvcyArPSBkYXRhX2xlbjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3Rh
dGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX3VpbnQ4KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlP
YmplY3QgKmFyZ3MpCit7CisgICAgdWludDhfdCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgIkIiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENI
RUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAxKQorCisgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsK
KyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNo
X3VpbnQxNihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQx
Nl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSCIsICZ2YWx1ZSkp
CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDIp
CisKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysr
KSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgor
QnVmZmVyX3B1c2hfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7
CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJ
IiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVDS19XUklURV9CT1VO
RFMoc2VsZiwgNCkKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAgKihz
ZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVl
ID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7
Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50NjQoQnVmZmVyT2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICooc2VsZi0+cG9zKysp
ID0gKHZhbHVlID4+IDU2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0OCk7Cisg
ICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDMyKTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05P
TkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50X3ZhcihCdWZmZXJP
YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAg
IGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgaWYgKHZhbHVlIDw9IDB4M0YpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVf
Qk9VTkRTKHNlbGYsIDEpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgICAg
IFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGKSB7CisgICAg
ICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAyKQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA4KSB8IDB4NDA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7Cisg
ICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGRkZG
RikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAgICAgICAgKihzZWxm
LT5wb3MrKykgPSAodmFsdWUgPj4gMjQpIHwgMHg4MDsKKyAgICAgICAgKihzZWxmLT5wb3MrKykg
PSAodmFsdWUgPj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7
CisgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkYpIHsKKyAgICAgICAg
Q0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDU2KSB8IDB4QzA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQ4
KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAzMik7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDI0KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAg
ICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnRlZ2VyIGlzIHRvbyBiaWcg
Zm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3NlZWsoQnVmZmVyT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9zOworICAgIGlmICghUHlBcmdfUGFy
c2VUdXBsZShhcmdzLCAiaSIsICZwb3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChwb3MgPCAwIHx8IHNlbGYtPmJhc2UgKyBwb3MgPiBzZWxmLT5lbmQpIHsKKyAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlNlZWsgb3V0IG9mIGJvdW5kcyIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlICsg
cG9zOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVy
X3RlbGwoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQnVmZmVyX21ldGhvZHNbXSA9IHsKKyAgICB7ImRhdGFfc2xpY2UiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX2RhdGFfc2xpY2UsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsiZW9m
IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9lb2YsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicHVs
bF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF9ieXRlcywgTUVUSF9WQVJBUkdTLCAi
UHVsbCBieXRlcy4ifSwKKyAgICB7InB1bGxfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1
bGxfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1bGwgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4i
fSwKKyAgICB7InB1bGxfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQxNiwg
TUVUSF9WQVJBUkdTLCAiUHVsbCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVsbF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDMyLCBNRVRIX1ZBUkFS
R1MsICJQdWxsIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnQ2
NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1bGwg
YSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludF92YXIiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSBRVUlD
IHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF9ieXRlcyIs
IChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF9ieXRlcywgTUVUSF9WQVJBUkdTLCAiUHVzaCBieXRl
cy4ifSwKKyAgICB7InB1c2hfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDgs
IE1FVEhfVkFSQVJHUywgIlB1c2ggYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7
InB1c2hfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQxNiwgTUVUSF9WQVJB
UkdTLCAiUHVzaCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50
MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDMyLCBNRVRIX1ZBUkFSR1MsICJQdXNo
IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnQ2NCIsIChQeUNG
dW5jdGlvbilCdWZmZXJfcHVzaF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSA2NC1iaXQg
dW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfdWludF92YXIiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3B1c2hfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSBRVUlDIHZhcmlhYmxl
LWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilC
dWZmZXJfc2VlaywgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9u
KUJ1ZmZlcl90ZWxsLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRp
YyBQeU9iamVjdCoKK0J1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIoQnVmZmVyT2JqZWN0KiBzZWxmLCB2
b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5lbmQg
LSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVyX2RhdGFfZ2V0dGVy
KEJ1ZmZlck9iamVjdCogc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUJ5dGVz
X0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5iYXNlLCBzZWxmLT5wb3MgLSBz
ZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIEJ1ZmZlcl9nZXRzZXRbXSA9IHsK
KyAgICB7ImNhcGFjaXR5IiwgKGdldHRlcikgQnVmZmVyX2NhcGFjaXR5X2dldHRlciwgTlVMTCwg
IiIsIE5VTEwgfSwKKyAgICB7ImRhdGEiLCAoZ2V0dGVyKSBCdWZmZXJfZGF0YV9nZXR0ZXIsIE5V
TEwsICIiLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJ1
ZmZlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9E
VUxFX05BTUUgIi5CdWZmZXIiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVv
ZihCdWZmZXJPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAg
KGRlc3RydWN0b3IpQnVmZmVyX2RlYWxsb2MsICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5j
ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21h
cHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9o
YXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Nh
bGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRy
byAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0
dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNf
YnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBf
ZmxhZ3MgKi8KKyAgICAiQnVmZmVyIG9iamVjdHMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9k
b2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2
ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Ns
ZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmlj
aGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJ1ZmZlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQnVmZmVyX2dldHNldCwgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJ1ZmZlcl9pbml0LCAg
ICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVE
ZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICBNT0RVTEVf
TkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICAiQSBmYXN0ZXIg
YnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5
SW5pdF9fYnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1
bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQnVmZmVyUmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQnVmZmVyUmVhZEVycm9yIiwgUHlFeGNfVmFsdWVFcnJvciwgTlVMTCk7CisgICAg
UHlfSU5DUkVGKEJ1ZmZlclJlYWRFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJC
dWZmZXJSZWFkRXJyb3IiLCBCdWZmZXJSZWFkRXJyb3IpOworCisgICAgQnVmZmVyV3JpdGVFcnJv
ciA9IFB5RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkJ1ZmZlcldyaXRlRXJyb3IiLCBQ
eUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVyV3JpdGVFcnJvcik7
CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCdWZmZXJXcml0ZUVycm9yIiwgQnVmZmVyV3Jp
dGVFcnJvcik7CisKKyAgICBCdWZmZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkJ1ZmZlclR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgUHlfSU5DUkVGKCZCdWZmZXJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3Qo
bSwgIkJ1ZmZlciIsIChQeU9iamVjdCAqKSZCdWZmZXJUeXBlKTsKKworICAgIHJldHVybiBtOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTQzY2NhM2E1
MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKQEAgLTAsMCArMSwyNyBAQAorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCisKK2NsYXNzIEJ1ZmZlclJlYWRFcnJvcihWYWx1ZUVycm9yKTog
Li4uCitjbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4KKworY2xhc3MgQnVm
ZmVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9uYWxbaW50XSA9IDAs
IGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0
YShzZWxmKSAtPiBieXRlczogLi4uCisgICAgZGVmIGRhdGFfc2xpY2Uoc2VsZiwgc3RhcnQ6IGlu
dCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW9mKHNlbGYpIC0+IGJvb2w6IC4u
LgorICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgdGVs
bChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYsIGxlbmd0aDogaW50
KSAtPiBieXRlczogLi4uCisgICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4gaW50OiAuLi4KKyAg
ICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50MzIo
c2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50NjQoc2VsZikgLT4gaW50OiAuLi4K
KyAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdXNoX2J5
dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDgo
c2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDE2KHNlbGYs
IHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQzMihzZWxmLCB2OiBp
bnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2OiBpbnQpIC0+IE5v
bmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6
IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxNTU0ZDRiMjEz
Y2QwN2ZjZWRmOGEzOTMwNGNkNjIwMDQ0ZjE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKQEAgLTAsMCArMSw0NTUgQEAKKyNkZWZpbmUgUFlf
U1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9l
cnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FICJh
aW9xdWljLl9jcnlwdG8iCisKKyNkZWZpbmUgQUVBRF9LRVlfTEVOR1RIX01BWCAzMgorI2RlZmlu
ZSBBRUFEX05PTkNFX0xFTkdUSCAxMgorI2RlZmluZSBBRUFEX1RBR19MRU5HVEggMTYKKworI2Rl
ZmluZSBQQUNLRVRfTEVOR1RIX01BWCAxNTAwCisjZGVmaW5lIFBBQ0tFVF9OVU1CRVJfTEVOR1RI
X01BWCA0CisjZGVmaW5lIFNBTVBMRV9MRU5HVEggMTYKKworI2RlZmluZSBDSEVDS19SRVNVTFQo
ZXhwcikgXAorICAgIGlmICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7
IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3BlblNTTCBjYWxsIGZh
aWxlZCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNL
X1JFU1VMVF9DVE9SKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisgICAgICAgIEVSUl9j
bGVhcl9lcnJvcigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9w
ZW5TU0wgY2FsbCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKK3N0
YXRpYyBQeU9iamVjdCAqQ3J5cHRvRXJyb3I7CisKKy8qIEFFQUQgKi8KKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAqZGVjcnlwdF9jdHg7
CisgICAgRVZQX0NJUEhFUl9DVFggKmVuY3J5cHRfY3R4OworICAgIHVuc2lnbmVkIGNoYXIgYnVm
ZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGtleVtBRUFEX0tFWV9M
RU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGl2W0FFQURfTk9OQ0VfTEVOR1RIXTsKKyAg
ICB1bnNpZ25lZCBjaGFyIG5vbmNlW0FFQURfTk9OQ0VfTEVOR1RIXTsKK30gQUVBRE9iamVjdDsK
Kworc3RhdGljIEVWUF9DSVBIRVJfQ1RYICoKK2NyZWF0ZV9jdHgoY29uc3QgRVZQX0NJUEhFUiAq
Y2lwaGVyLCBpbnQga2V5X2xlbmd0aCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBFVlBfQ0lQSEVS
X0NUWCAqY3R4OworICAgIGludCByZXM7CisKKyAgICBjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXco
KTsKKyAgICBDSEVDS19SRVNVTFQoY3R4ICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlcklu
aXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIG9wZXJhdGlvbik7CisgICAgQ0hF
Q0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlf
bGVuZ3RoKGN0eCwga2V5X2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX0lWTEVO
LCBBRUFEX05PTkNFX0xFTkdUSCwgTlVMTCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsK
KworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbnQKK0FFQURfaW5pdChBRUFET2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBj
aGFyICpjaXBoZXJfbmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksICppdjsKKyAg
ICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbiwgaXZfbGVuOworCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjeSMiLCAmY2lwaGVyX25hbWUsICZjaXBoZXJf
bmFtZV9sZW4sICZrZXksICZrZXlfbGVuLCAmaXYsICZpdl9sZW4pKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVSICpldnBfY2lwaGVyID0gRVZQX2dldF9jaXBoZXJi
eW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlmIChldnBfY2lwaGVyID09IDApIHsKKyAgICAgICAg
UHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAiSW52YWxpZCBjaXBoZXIgbmFtZTogJXMiLCBjaXBo
ZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGtleV9sZW4gPiBB
RUFEX0tFWV9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJv
ciwgIkludmFsaWQga2V5IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAg
IGlmIChpdl9sZW4gPiBBRUFEX05PTkNFX0xFTkdUSCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGl2IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisgICAgbWVtY3B5KHNlbGYtPmtleSwga2V5LCBrZXlfbGVuKTsKKyAgICBtZW1j
cHkoc2VsZi0+aXYsIGl2LCBpdl9sZW4pOworCisgICAgc2VsZi0+ZGVjcnlwdF9jdHggPSBjcmVh
dGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDApOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNl
bGYtPmRlY3J5cHRfY3R4ICE9IDApOworCisgICAgc2VsZi0+ZW5jcnlwdF9jdHggPSBjcmVhdGVf
Y3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNlbGYt
PmVuY3J5cHRfY3R4ICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitB
RUFEX2RlYWxsb2MoQUVBRE9iamVjdCAqc2VsZikKK3sKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVl
KHNlbGYtPmRlY3J5cHRfY3R4KTsKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKHNlbGYtPmVuY3J5
cHRfY3R4KTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQUVBRF9kZWNyeXB0KEFFQURPYmplY3Qg
KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEs
ICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4sIGFzc29jaWF0ZWRfbGVuOwor
ICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAgICB1aW50NjRfdCBwbjsKKworICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0siLCAmZGF0YSwgJmRhdGFfbGVuLCAmYXNz
b2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor
ICAgIGlmIChkYXRhX2xlbiA8IEFFQURfVEFHX0xFTkdUSCB8fCBkYXRhX2xlbiA+IFBBQ0tFVF9M
RU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFs
aWQgcGF5bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAg
bWVtY3B5KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5HVEgpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5vbmNlW0FFQURfTk9O
Q0VfTEVOR1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7CisgICAgfQorCisg
ICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3RybChzZWxmLT5kZWNyeXB0X2N0eCwgRVZQX0NUUkxf
Q0NNX1NFVF9UQUcsIEFFQURfVEFHX0xFTkdUSCwgKHZvaWQqKShkYXRhICsgKGRhdGFfbGVuIC0g
QUVBRF9UQUdfTEVOR1RIKSkpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBy
ZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2Vs
Zi0+a2V5LCBzZWxmLT5ub25jZSwgMCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRs
ZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRfbGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9
IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5kZWNyeXB0X2N0eCwgc2Vs
Zi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBkYXRhX2xlbiAtIEFFQURfVEFHX0xFTkdUSCk7Cisg
ICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJGaW5hbF9l
eChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIGlmIChyZXMgPT0gMCkg
eworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJQYXlsb2FkIGRlY3J5cHRp
b24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQ
eUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5idWZmZXIsIG91dGxl
bik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZW5jcnlwdChBRUFET2JqZWN0ICpzZWxm
LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCAqYXNz
b2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVkX2xlbjsKKyAgICBp
bnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisKKyAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xlbiwgJmFzc29jaWF0
ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBp
ZiAoZGF0YV9sZW4gPiBQQUNLRVRfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURf
Tk9OQ0VfTEVOR1RIKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAg
ICBzZWxmLT5ub25jZVtBRUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4g
Pj4gOCAqIGkpOworICAgIH0KKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmVu
Y3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNlLCAxKTsKKyAgICBD
SEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxm
LT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNzb2NpYXRlZF9sZW4p
OworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyVXBk
YXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4sIGRhdGEsIGRhdGFf
bGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
ckZpbmFsX2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVuMik7CisgICAgQ0hFQ0tf
UkVTVUxUKHJlcyAhPSAwICYmIG91dGxlbjIgPT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVS
X0NUWF9jdHJsKHNlbGYtPmVuY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgQUVBRF9U
QUdfTEVOR1RILCBzZWxmLT5idWZmZXIgKyBvdXRsZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hh
ciopc2VsZi0+YnVmZmVyLCBvdXRsZW4gKyBBRUFEX1RBR19MRU5HVEgpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQUVBRF9tZXRob2RzW10gPSB7CisgICAgeyJkZWNyeXB0IiwgKFB5Q0Z1bmN0
aW9uKUFFQURfZGVjcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJlbmNyeXB0IiwgKFB5
Q0Z1bmN0aW9uKUFFQURfZW5jcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQUVBRFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3Rf
SEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5BRUFEIiwgICAgICAgICAgICAg
ICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihBRUFET2JqZWN0KSwgICAgICAgICAgICAgICAg
IC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQUVBRF9kZWFsbG9jLCAgICAg
ICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZB
VUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQUVBRCBvYmplY3RzIiwg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEFFQURf
bWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisg
ICAgKGluaXRwcm9jKUFFQURfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9Owor
CisvKiBIZWFkZXJQcm90ZWN0aW9uICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVj
dF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAgICBpbnQgaXNfY2hhY2hhMjA7Cisg
ICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOworICAgIHVuc2lnbmVk
IGNoYXIgbWFza1szMV07CisgICAgdW5zaWduZWQgY2hhciB6ZXJvWzVdOworfSBIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0OworCitzdGF0aWMgaW50CitIZWFkZXJQcm90ZWN0aW9uX2luaXQoSGVhZGVy
UHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqa2V5OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVuLCBrZXlfbGVuOworICAgIGlu
dCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMiLCAmY2lwaGVy
X25hbWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRfY2lwaGVy
YnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7CisgICAgICAg
IFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVzIiwgY2lw
aGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KHNlbGYt
Pm1hc2ssIDAsIHNpemVvZihzZWxmLT5tYXNrKSk7CisgICAgbWVtc2V0KHNlbGYtPnplcm8sIDAs
IHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgc2VsZi0+aXNfY2hhY2hhMjAgPSBjaXBoZXJfbmFt
ZV9sZW4gPT0gOCAmJiBtZW1jbXAoY2lwaGVyX25hbWUsICJjaGFjaGEyMCIsIDgpID09IDA7CisK
KyAgICBzZWxmLT5jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKyAgICBDSEVDS19SRVNVTFRf
Q1RPUihzZWxmLT5jdHggIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxm
LT5jdHgsIGV2cF9jaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VM
VF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVu
Z3RoKHNlbGYtPmN0eCwga2V5X2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1IocmVzICE9IDAp
OworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4LCBOVUxMLCBOVUxMLCBr
ZXksIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorSGVhZGVyUHJvdGVjdGlvbl9kZWFsbG9jKEhlYWRl
clByb3RlY3Rpb25PYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxm
LT5jdHgpOworfQorCitzdGF0aWMgaW50IEhlYWRlclByb3RlY3Rpb25fbWFzayhIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0ICpzZWxmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzYW1wbGUpCit7CisgICAg
aW50IG91dGxlbjsKKyAgICBpZiAoc2VsZi0+aXNfY2hhY2hhMjApIHsKKyAgICAgICAgcmV0dXJu
IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVMTCwgTlVMTCwgc2FtcGxlLCAx
KSAmJgorICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5jdHgsIHNlbGYtPm1h
c2ssICZvdXRsZW4sIHNlbGYtPnplcm8sIHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBzZWxmLT5tYXNr
LCAmb3V0bGVuLCBzYW1wbGUsIFNBTVBMRV9MRU5HVEgpOworICAgIH0KK30KKworc3RhdGljIFB5
T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9hcHBseShIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkZXIs
ICpwYXlsb2FkOworICAgIFB5X3NzaXplX3QgaGVhZGVyX2xlbiwgcGF5bG9hZF9sZW47CisgICAg
aW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5IyIsICZoZWFk
ZXIsICZoZWFkZXJfbGVuLCAmcGF5bG9hZCwgJnBheWxvYWRfbGVuKSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKGhlYWRlclswXSAmIDB4MDMpICsgMTsKKyAg
ICBpbnQgcG5fb2Zmc2V0ID0gaGVhZGVyX2xlbiAtIHBuX2xlbmd0aDsKKworICAgIHJlcyA9IEhl
YWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYXlsb2FkICsgUEFDS0VUX05VTUJFUl9MRU5HVEhf
TUFYIC0gcG5fbGVuZ3RoKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgbWVt
Y3B5KHNlbGYtPmJ1ZmZlciwgaGVhZGVyLCBoZWFkZXJfbGVuKTsKKyAgICBtZW1jcHkoc2VsZi0+
YnVmZmVyICsgaGVhZGVyX2xlbiwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOworCisgICAgaWYgKHNl
bGYtPmJ1ZmZlclswXSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYt
Pm1hc2tbMF0gJiAweDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBe
PSBzZWxmLT5tYXNrWzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHBuX2xlbmd0aDsgKytpKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSBe
PSBzZWxmLT5tYXNrWzEgKyBpXTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3Ry
aW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBoZWFkZXJfbGVuICsgcGF5bG9h
ZF9sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZShI
ZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CisgICAgUHlfc3NpemVfdCBwYWNrZXRfbGVuOworICAg
IGludCBwbl9vZmZzZXQsIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
eSNJIiwgJnBhY2tldCwgJnBhY2tldF9sZW4sICZwbl9vZmZzZXQpKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYWNrZXQgKyBw
bl9vZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworICAgIENIRUNLX1JFU1VMVChy
ZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBwYWNrZXQsIHBuX29mZnNldCAr
IFBBQ0tFVF9OVU1CRVJfTEVOR1RIX01BWCk7CisKKyAgICBpZiAoc2VsZi0+YnVmZmVyWzBdICYg
MHg4MCkgeworICAgICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MEY7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0g
JiAweDFGOworICAgIH0KKworICAgIGludCBwbl9sZW5ndGggPSAoc2VsZi0+YnVmZmVyWzBdICYg
MHgwMykgKyAxOworICAgIHVpbnQzMl90IHBuX3RydW5jYXRlZCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zm
c2V0ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgICAgIHBuX3RydW5jYXRlZCA9IHNl
bGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSB8IChwbl90cnVuY2F0ZWQgPDwgOCk7CisgICAgfQor
CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInkjaSIsIHNlbGYtPmJ1ZmZlciwgcG5fb2Zmc2V0
ICsgcG5fbGVuZ3RoLCBwbl90cnVuY2F0ZWQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgSGVh
ZGVyUHJvdGVjdGlvbl9tZXRob2RzW10gPSB7CisgICAgeyJhcHBseSIsIChQeUNGdW5jdGlvbilI
ZWFkZXJQcm90ZWN0aW9uX2FwcGx5LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlbW92ZSIs
IChQeUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZSwgTUVUSF9WQVJBUkdTLCAiIn0s
CisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEhlYWRlclByb3RlY3Rpb25U
eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRFVMRV9O
QU1FICIuSGVhZGVyUHJvdGVjdGlvbiIsICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdCksICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0
cnVjdG9yKUhlYWRlclByb3RlY3Rpb25fZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLworICAgICJIZWFkZXJQcm90ZWN0aW9uIG9iamVjdHMiLCAgICAgICAgIC8qIHRwX2Rv
YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCisgICAgSGVhZGVyUHJvdGVjdGlvbl9tZXRob2RzLCAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpSGVhZGVyUHJvdGVjdGlv
bl9pbml0LCAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURl
ZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgIE1PRFVMRV9O
QU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgICJBIGZhc3RlciBi
dWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5p
dF9fY3J5cHRvKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1bGVf
Q3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ3J5cHRvRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUg
Ii5DcnlwdG9FcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAgIFB5X0lOQ1JFRihD
cnlwdG9FcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDcnlwdG9FcnJvciIsIENy
eXB0b0Vycm9yKTsKKworICAgIEFFQURUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkFFQURUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxM
OworICAgIFB5X0lOQ1JFRigmQUVBRFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAi
QUVBRCIsIChQeU9iamVjdCAqKSZBRUFEVHlwZSk7CisKKyAgICBIZWFkZXJQcm90ZWN0aW9uVHlw
ZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZIZWFk
ZXJQcm90ZWN0aW9uVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNS
RUYoJkhlYWRlclByb3RlY3Rpb25UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhl
YWRlclByb3RlY3Rpb24iLCAoUHlPYmplY3QgKikmSGVhZGVyUHJvdGVjdGlvblR5cGUpOworCisg
ICAgLy8gZW5zdXJlIHJlcXVpcmVkIGNpcGhlcnMgYXJlIGluaXRpYWxpc2VkCisgICAgRVZQX2Fk
ZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOworICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf
MTI4X2djbSgpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7CisgICAg
RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworCisgICAgcmV0dXJuIG07Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjNTIzMGQ5OTJlN2Yy
MTljOTNiZWMzY2I0NTcyMTRjMjUxOGM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQpAQCAtMCwwICsxLDE3IEBACitmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKKworY2xhc3MgQUVBRDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVy
X25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzLCBpdjogYnl0ZXMpOiAuLi4KKyAgICBkZWYgZGVjcnlw
dCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0YTogYnl0ZXMsIHBh
Y2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBlbmNyeXB0KAor
ICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRhOiBieXRlcywgcGFja2V0
X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczogLi4uCisKK2NsYXNzIENyeXB0b0Vycm9yKFZh
bHVlRXJyb3IpOiAuLi4KKworY2xhc3MgSGVhZGVyUHJvdGVjdGlvbjoKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzKTogLi4uCisgICAgZGVmIGFw
cGx5KHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHByb3RlY3RlZF9wYXlsb2FkOiBieXRlcykg
LT4gYnl0ZXM6IC4uLgorICAgIGRlZiByZW1vdmUoc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlw
dGVkX29mZnNldDogaW50KSAtPiBUdXBsZVtieXRlcywgaW50XTogLi4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYWJvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjZDhmMzNkNjVkY2JmMjM5N2QxMmM4M2M2NTFjYzg5
OWU5MTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91
dC5weQpAQCAtMCwwICsxLDcgQEAKK19fYXV0aG9yX18gPSAiSmVyZW15IExhaW7DqSIKK19fZW1h
aWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKK19fbGljZW5zZV9fID0gIkJTRCIKK19fc3Vt
bWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhUVFAvMyIKK19fdGl0bGVf
XyA9ICJhaW9xdWljIgorX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1
aWMiCitfX3ZlcnNpb25fXyA9ICIwLjguNyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fz
eW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYTY5ZDg5OTM0ZThmODdhMjFjNWI5OGU5
N2ExMTQ5MTJiZThjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9hc3luY2lvL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSAuY2xpZW50IGltcG9y
dCBjb25uZWN0ICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblBy
b3RvY29sICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgc2VydmUgICMgbm9xYQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOTM3ZTll
ODkyYmZlNzZjZDJjMmZjN2NiM2E2ZTRmZjczOTMzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKQEAgLTAsMCArMSw5NCBAQAor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBz
eXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBc3luY0dlbmVyYXRvciwgQ2FsbGFibGUsIE9wdGlvbmFs
LCBjYXN0CisKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbgorZnJvbSAu
LnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldEhhbmRsZXIKK2Zyb20gLmNvbXBhdCBpbXBvcnQgYXN5
bmNjb250ZXh0bWFuYWdlcgorZnJvbSAucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18gPSBbImNvbm5lY3QiXQorCisKK0Bh
c3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgY29ubmVjdCgKKyAgICBob3N0OiBzdHIsCisg
ICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJhdGlvbjogT3B0aW9uYWxbUXVpY0Nv
bmZpZ3VyYXRpb25dID0gTm9uZSwKKyAgICBjcmVhdGVfcHJvdG9jb2w6IE9wdGlvbmFsW0NhbGxh
YmxlXSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICBzdHJlYW1faGFu
ZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwKKyAgICB3YWl0X2Nvbm5l
Y3RlZDogYm9vbCA9IFRydWUsCisgICAgbG9jYWxfcG9ydDogaW50ID0gMCwKKykgLT4gQXN5bmNH
ZW5lcmF0b3JbUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgTm9uZV06CisgICAgIiIiCisgICAgQ29u
bmVjdCB0byBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9zdGAgYW5kIGBwb3J0YC4KKwor
ICAgIDptZXRoOmBjb25uZWN0KClgIHJldHVybnMgYW4gYXdhaXRhYmxlLiBBd2FpdGluZyBpdCB5
aWVsZHMgYQorICAgIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3Rv
Y29sYCB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBzdHJlYW1zLgorCisgICAgOmZ1
bmM6YGNvbm5lY3RgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50
czoKKworICAgICogYGBjb25maWd1cmF0aW9uYGAgaXMgYSA6Y2xhc3M6YH5haW9xdWljLnF1aWMu
Y29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICAgIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0LgorICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9taXppbmcgdGhlIDpj
bGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMgdGhlIGNvbm5lY3Rp
b24uIEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZQor
ICAgICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlv
blByb3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5h
aW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4KKyAg
ICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52
b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBp
cyByZWNlaXZlZC4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNo
IGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNyZWF0ZWQuIEl0IG11c3Qg
YWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVJlYWRlcmAKKyAg
ICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgorICAgICogYGBsb2NhbF9w
b3J0YGAgaXMgdGhlIFVEUCBwb3J0IG51bWJlciB0aGF0IHRoaXMgY2xpZW50IHdhbnRzIHRvIGJp
bmQuCisgICAgIiIiCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxv
Y2FsX2hvc3QgPSAiOjoiCisKKyAgICAjIGlmIGhvc3QgaXMgbm90IGFuIElQIGFkZHJlc3MsIHBh
c3MgaXQgdG8gZW5hYmxlIFNOSQorICAgIHRyeToKKyAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJl
c3MoaG9zdCkKKyAgICAgICAgc2VydmVyX25hbWUgPSBOb25lCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIHNlcnZlcl9uYW1lID0gaG9zdAorCisgICAgIyBsb29rdXAgcmVtb3RlIGFk
ZHJlc3MKKyAgICBpbmZvcyA9IGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgdHlw
ZT1zb2NrZXQuU09DS19ER1JBTSkKKyAgICBhZGRyID0gaW5mb3NbMF1bNF0KKyAgICBpZiBsZW4o
YWRkcikgPT0gMjoKKyAgICAgICAgIyBkZXRlcm1pbmUgYmVoYXZpb3VyIGZvciBJUHY0CisgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgIyBvbiBXaW5kb3dz
LCB3ZSBtdXN0IHVzZSBhbiBJUHY0IHNvY2tldCB0byByZWFjaCBhbiBJUHY0IGhvc3QKKyAgICAg
ICAgICAgIGxvY2FsX2hvc3QgPSAiMC4wLjAuMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgb3RoZXIgcGxhdGZvcm1zIHN1cHBvcnQgZHVhbC1zdGFjayBzb2NrZXRzCisgICAgICAgICAg
ICBhZGRyID0gKCI6OmZmZmY6IiArIGFkZHJbMF0sIGFkZHJbMV0sIDAsIDApCisKKyAgICAjIHBy
ZXBhcmUgUVVJQyBjb25uZWN0aW9uCisgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAg
ICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgaWYgc2VydmVyX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vy
dmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgIGNvbm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICApCisKKyAgICAjIGNvbm5lY3QKKyAgICBf
LCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAg
ICBsYW1iZGE6IGNyZWF0ZV9wcm90b2NvbChjb25uZWN0aW9uLCBzdHJlYW1faGFuZGxlcj1zdHJl
YW1faGFuZGxlciksCisgICAgICAgIGxvY2FsX2FkZHI9KGxvY2FsX2hvc3QsIGxvY2FsX3BvcnQp
LAorICAgICkKKyAgICBwcm90b2NvbCA9IGNhc3QoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgcHJv
dG9jb2wpCisgICAgcHJvdG9jb2wuY29ubmVjdChhZGRyKQorICAgIGlmIHdhaXRfY29ubmVjdGVk
OgorICAgICAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nvbm5lY3RlZCgpCisgICAgdHJ5OgorICAg
ICAgICB5aWVsZCBwcm90b2NvbAorICAgIGZpbmFsbHk6CisgICAgICAgIHByb3RvY29sLmNsb3Nl
KCkKKyAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nsb3NlZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxZTYyZjZkOTQyOTYxOTMzZmI2
ZmUwNzJhZTBmMjdlNjQzYjRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpAQCAtMCwwICsxLDMzIEBACitmcm9tIGNvbnRleHRs
aWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwor
Cit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCitl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9IE5vbmUKKworCitj
bGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihDb250ZXh0RGVjb3JhdG9yKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJncywga3dkcyk6CisgICAgICAgIHNlbGYuZ2Vu
ID0gZnVuYygqYXJncywgKiprd2RzKQorICAgICAgICBzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2Vs
Zi5rd2RzID0gZnVuYywgYXJncywga3dkcworICAgICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9f
ZG9jX18KKworICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
YXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKKworICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2Vs
ZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgaWYgdHlwIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRocm93KHR5cCwgdmFsdWUsIHRyYWNlYmFjaykK
KworCitkZWYgX2FzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CisgICAgQHdyYXBzKGZ1bmMpCisg
ICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIF9Bc3luY0dlbmVy
YXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCisKKyAgICByZXR1cm4gaGVscGVy
CisKKworaWYgYXN5bmNjb250ZXh0bWFuYWdlciBpcyBOb25lOgorICAgIGFzeW5jY29udGV4dG1h
bmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby9wcm90b2NvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAwNDMzNWI4ZmZmZjlkNzAyNWQzNjVl
Y2FhOTMxZjc3NDcyMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2FzeW5jaW8vcHJvdG9jb2wucHkKQEAgLTAsMCArMSwyNDAgQEAKK2ltcG9ydCBhc3luY2lv
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQs
IFR1cGxlLCBVbmlvbiwgY2FzdAorCitmcm9tIC4ucXVpYyBpbXBvcnQgZXZlbnRzCitmcm9tIC4u
cXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nvbm5lY3Rpb24KKwor
UXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBDYWxsYWJsZVtbYnl0ZXNdLCBOb25lXQorUXVpY1N0
cmVhbUhhbmRsZXIgPSBDYWxsYWJsZVtbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXSwgTm9uZV0KKworCitjbGFzcyBRdWljQ29ubmVjdGlvblByb3RvY29sKGFzeW5j
aW8uRGF0YWdyYW1Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBx
dWljOiBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFsW1F1aWNTdHJlYW1I
YW5kbGVyXSA9IE5vbmUKKyAgICApOgorICAgICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpCisKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gYXN5bmNpby5FdmVudCgpCisgICAgICAg
IHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXI6
IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9v
cCA9IGxvb3AKKyAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzOiBEaWN0W2ludCwgYXN5bmNpby5G
dXR1cmVbTm9uZV1dID0ge30KKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtX3JlYWRlcnM6IERpY3RbaW50LCBhc3luY2lvLlN0cmVhbVJlYWRlcl0gPSB7fQor
ICAgICAgICBzZWxmLl90aW1lcjogT3B0aW9uYWxbYXN5bmNpby5UaW1lckhhbmRsZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3RpbWVyX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuX3RyYW5zbWl0X3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uSGFuZGxlXSA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fdHJhbnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0
XSA9IE5vbmUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9jb25uZWN0aW9u
X2lkX2lzc3VlZF9oYW5kbGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBO
b25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyOiBRdWljQ29u
bmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rp
b25fdGVybWluYXRlZF9oYW5kbGVyOiBDYWxsYWJsZVtbXSwgTm9uZV0gPSBsYW1iZGE6IE5vbmUK
KyAgICAgICAgaWYgc3RyZWFtX2hhbmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IGxhbWJkYSByLCB3OiBOb25lCisKKyAgICBkZWYg
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IENoYW5nZSB0aGUgY29ubmVjdGlvbiBJRCB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBl
ZXIuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gSUQgd2lsbCBiZSByZXRpcmVk
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jaGFuZ2VfY29ubmVjdGlvbl9pZCgp
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2UuCisKKyAgICAgICAg
VGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0
aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jb25uZWN0KGFkZHIsIG5vdz1z
ZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBk
ZWYgY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wg
PSBGYWxzZQorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFVSUMgc3RyZWFtIGFu
ZCByZXR1cm4gYSBwYWlyIG9mIChyZWFkZXIsIHdyaXRlcikgb2JqZWN0cy4KKworICAgICAgICBU
aGUgcmV0dXJuZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0cyBhcmUgaW5zdGFuY2VzIG9mIDpj
bGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICAgIGFuZCA6Y2xhc3M6YGFzeW5jaW8u
U3RyZWFtV3JpdGVyYCBjbGFzc2VzLgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0g
c2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKAorICAgICAgICAgICAgaXNf
dW5pZGlyZWN0aW9uYWw9aXNfdW5pZGlyZWN0aW9uYWwKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisKKyAgICBkZWYgcmVxdWVzdF9rZXlf
dXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSZXF1ZXN0IGFuIHVw
ZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
cXVpYy5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAg
IGFzeW5jIGRlZiBwaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQaW5n
IHRoZSBwZWVyIGFuZCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAg
ICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICB1aWQgPSBpZCh3
YWl0ZXIpCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyc1t1aWRdID0gd2FpdGVyCisgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9waW5nKHVpZCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisgICAg
ICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiB0cmFuc21pdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBwZW5kaW5nIGRhdGFncmFtcyB0
byB0aGUgcGVlciBhbmQgYXJtIHRoZSB0aW1lciBpZiBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLl90cmFuc21pdF90YXNrID0gTm9uZQorCisgICAgICAgICMgc2VuZCBkYXRhZ3Jh
bXMKKyAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VsZi5fcXVpYy5kYXRhZ3JhbXNfdG9fc2Vu
ZChub3c9c2VsZi5fbG9vcC50aW1lKCkpOgorICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNl
bmR0byhkYXRhLCBhZGRyKQorCisgICAgICAgICMgcmUtYXJtIHRpbWVyCisgICAgICAgIHRpbWVy
X2F0ID0gc2VsZi5fcXVpYy5nZXRfdGltZXIoKQorICAgICAgICBpZiBzZWxmLl90aW1lciBpcyBu
b3QgTm9uZSBhbmQgc2VsZi5fdGltZXJfYXQgIT0gdGltZXJfYXQ6CisgICAgICAgICAgICBzZWxm
Ll90aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBOb25lCisgICAgICAg
IGlmIHNlbGYuX3RpbWVyIGlzIE5vbmUgYW5kIHRpbWVyX2F0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fdGltZXIgPSBzZWxmLl9sb29wLmNhbGxfYXQodGltZXJfYXQsIHNlbGYuX2hh
bmRsZV90aW1lcikKKyAgICAgICAgc2VsZi5fdGltZXJfYXQgPSB0aW1lcl9hdAorCisgICAgYXN5
bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBX
YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQuCisgICAgICAgICIiIgorICAgICAg
ICBhd2FpdCBzZWxmLl9jbG9zZWQud2FpdCgpCisKKyAgICBhc3luYyBkZWYgd2FpdF9jb25uZWN0
ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgZm9yIHRoZSBUTFMg
aGFuZHNoYWtlIHRvIGNvbXBsZXRlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYu
X2Nvbm5lY3RlZF93YWl0ZXIgaXMgTm9uZSwgImFscmVhZHkgYXdhaXRpbmcgY29ubmVjdGVkIgor
ICAgICAgICBpZiBub3Qgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAgc2VsZi5fY29ubmVj
dGVkX3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLl9jb25uZWN0ZWRfd2FpdGVyKQorCisgICAgIyBhc3luY2lv
LlRyYW5zcG9ydAorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6IGFz
eW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0g
Y2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisKKyAgICBkZWYgZGF0
YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0ZXMsIFRleHRdLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5yZWNlaXZlX2RhdGFncmFt
KGNhc3QoYnl0ZXMsIGRhdGEpLCBhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAg
IHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAj
IG92ZXJyaWRhYmxlCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
ZXZlbnRzLlF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxlZCB3
aGVuIGEgUVVJQyBldmVudCBpcyByZWNlaXZlZC4KKworICAgICAgICBSZWltcGxlbWVudCB0aGlz
IGluIHlvdXIgc3ViY2xhc3MgdG8gaGFuZGxlIHRoZSBldmVudHMuCisgICAgICAgICIiIgorICAg
ICAgICAjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBzdWJjbGFzcworICAgICAgICBpZiBpc2luc3Rh
bmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQpOgorICAgICAgICAgICAgZm9y
IHJlYWRlciBpbiBzZWxmLl9zdHJlYW1fcmVhZGVycy52YWx1ZXMoKToKKyAgICAgICAgICAgICAg
ICByZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50
cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5fc3RyZWFt
X3JlYWRlcnMuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIHJlYWRl
ciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gc2VsZi5fY3JlYXRl
X3N0cmVhbShldmVudC5zdHJlYW1faWQpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hh
bmRsZXIocmVhZGVyLCB3cml0ZXIpCisgICAgICAgICAgICByZWFkZXIuZmVlZF9kYXRhKGV2ZW50
LmRhdGEpCisgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFtOgorICAgICAgICAgICAgICAg
IHJlYWRlci5mZWVkX2VvZigpCisKKyAgICAjIHByaXZhdGUKKworICAgIGRlZiBfY3JlYXRlX3N0
cmVhbSgKKyAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+IFR1cGxlW2FzeW5j
aW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06CisgICAgICAgIGFkYXB0ZXIg
PSBRdWljU3RyZWFtQWRhcHRlcihzZWxmLCBzdHJlYW1faWQpCisgICAgICAgIHJlYWRlciA9IGFz
eW5jaW8uU3RyZWFtUmVhZGVyKCkKKyAgICAgICAgd3JpdGVyID0gYXN5bmNpby5TdHJlYW1Xcml0
ZXIoYWRhcHRlciwgTm9uZSwgcmVhZGVyLCBzZWxmLl9sb29wKQorICAgICAgICBzZWxmLl9zdHJl
YW1fcmVhZGVyc1tzdHJlYW1faWRdID0gcmVhZGVyCisgICAgICAgIHJldHVybiByZWFkZXIsIHdy
aXRlcgorCisgICAgZGVmIF9oYW5kbGVfdGltZXIoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbm93
ID0gbWF4KHNlbGYuX3RpbWVyX2F0LCBzZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi5f
dGltZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gTm9uZQorICAgICAgICBzZWxm
Ll9xdWljLmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50
cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIF9wcm9jZXNzX2V2ZW50cyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4dF9ldmVudCgpCisg
ICAgICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcihldmVudC5jb25uZWN0aW9uX2lkKQorICAg
ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvbklkUmV0aXJl
ZCk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hhbmRsZXIo
ZXZlbnQuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcigpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IGNv
bm5lY3Rpb24gd2FpdGVyCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkX3dhaXRl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5fY29ubmVj
dGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9u
RXJyb3IpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IHBpbmcgd2FpdGVycworICAgICAgICAg
ICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fcGluZ193YWl0ZXJzLnZhbHVlcygpOgorICAgICAg
ICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9uRXJyb3IpCisgICAg
ICAgICAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzLmNsZWFyKCkKKworICAgICAgICAgICAgICAg
IHNlbGYuX2Nsb3NlZC5zZXQoKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jb25u
ZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIgPSBz
ZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX3Bpbmdfd2FpdGVycy5wb3AoZXZlbnQudWlkLCBO
b25lKQorICAgICAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYucXVpY19l
dmVudF9yZWNlaXZlZChldmVudCkKKyAgICAgICAgICAgIGV2ZW50ID0gc2VsZi5fcXVpYy5uZXh0
X2V2ZW50KCkKKworICAgIGRlZiBfdHJhbnNtaXRfc29vbihzZWxmKSAtPiBOb25lOgorICAgICAg
ICBpZiBzZWxmLl90cmFuc21pdF90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl90cmFu
c21pdF90YXNrID0gc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi50cmFuc21pdCkKKworCitjbGFz
cyBRdWljU3RyZWFtQWRhcHRlcihhc3luY2lvLlRyYW5zcG9ydCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzdHJlYW1faWQ6IGludCk6
CisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxmLnN0cmVhbV9p
ZCA9IHN0cmVhbV9pZAorCisgICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lOiBz
dHIsIGRlZmF1bHQ6IEFueSA9IE5vbmUpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIEdl
dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBRVUlDIHN0cmVhbS4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIG5hbWUgPT0gInN0cmVhbV9pZCI6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdHJlYW1faWQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFtX2lkLCBkYXRhKQor
ICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKKworICAgIGRlZiB3cml0ZV9l
b2Yoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLnN0cmVhbV9pZCwgYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYucHJvdG9j
b2wuX3RyYW5zbWl0X3Nvb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2Vy
dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0MGVlNDYwYjZlZDY2ZTA5NDUzODVmMWY1NDg1OGNjMGVmOTE4
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9z
ZXJ2ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgb3MKK2Zy
b20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUs
IERpY3QsIE9wdGlvbmFsLCBUZXh0LCBVbmlvbiwgY2FzdAorCitmcm9tIC4uYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nv
bm5lY3Rpb24KK2Zyb20gLi5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9u
ZWdvdGlhdGlvbiwKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorKQorZnJvbSAuLnF1aWMucmV0cnkg
aW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorZnJvbSAuLnRscyBpbXBvcnQgU2Vzc2lvblRp
Y2tldEZldGNoZXIsIFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5wcm90b2NvbCBpbXBvcnQg
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKworX19hbGxfXyA9IFsi
c2VydmUiXQorCisKK2NsYXNzIFF1aWNTZXJ2ZXIoYXN5bmNpby5EYXRhZ3JhbVByb3RvY29sKToK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w6
IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAgc2Vzc2lvbl90aWNr
ZXRfZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJd
ID0gTm9uZSwKKyAgICAgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFsc2UsCisgICAgICAg
IHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0gPSBOb25lLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24K
KyAgICAgICAgc2VsZi5fY3JlYXRlX3Byb3RvY29sID0gY3JlYXRlX3Byb3RvY29sCisgICAgICAg
IHNlbGYuX2xvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAgICAgc2VsZi5fcHJv
dG9jb2xzOiBEaWN0W2J5dGVzLCBRdWljQ29ubmVjdGlvblByb3RvY29sXSA9IHt9CisgICAgICAg
IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tldF9mZXRjaGVyCisg
ICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRy
YW5zcG9ydF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1f
aGFuZGxlcgorCisgICAgICAgIGlmIHN0YXRlbGVzc19yZXRyeToKKyAgICAgICAgICAgIHNlbGYu
X3JldHJ5ID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX3JldHJ5ID0gTm9uZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBm
b3IgcHJvdG9jb2wgaW4gc2V0KHNlbGYuX3Byb3RvY29scy52YWx1ZXMoKSk6CisgICAgICAgICAg
ICBwcm90b2NvbC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3Byb3RvY29scy5jbGVhcigpCisgICAg
ICAgIHNlbGYuX3RyYW5zcG9ydC5jbG9zZSgpCisKKyAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNl
bGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3BvcnQsIHRyYW5zcG9y
dCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBVbmlvbltieXRlcywg
VGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAgICBkYXRhID0gY2Fz
dChieXRlcywgZGF0YSkKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAg
ICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlv
bl9pZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAg
ICAgaWYgKAorICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5vbmUKKyAgICAgICAg
ICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0
ZWRfdmVyc2lvbnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5zZW5k
dG8oCisgICAgICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJjZV9jaWQsCisgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwcm90b2Nv
bCA9IHNlbGYuX3Byb3RvY29scy5nZXQoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgTm9uZSkKKyAg
ICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAg
ICAgICBpZiAoCisgICAgICAgICAgICBwcm90b2NvbCBpcyBOb25lCisgICAgICAgICAgICBhbmQg
bGVuKGRhdGEpID49IDEyMDAKKyAgICAgICAgICAgIGFuZCBoZWFkZXIucGFja2V0X3R5cGUgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICApOgorICAgICAgICAgICAgIyBzdGF0ZWxlc3Mg
cmV0cnkKKyAgICAgICAgICAgIGlmIHNlbGYuX3JldHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIG5vdCBoZWFkZXIudG9rZW46CisgICAgICAgICAgICAgICAgICAgICMgY3JlYXRl
IGEgcmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0
bygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb249aGVhZGVyLnZlcnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlX2NpZD1vcy51cmFuZG9tKDgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2NpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLmRlc3Rp
bmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeV90b2tlbj1zZWxm
Ll9yZXRyeS5jcmVhdGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSByZXRy
eSB0b2tlbgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcmV0cnkudmFsaWRhdGVfdG9rZW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLnRva2VuCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY3JlYXRlIG5l
dyBjb25uZWN0aW9uCisgICAgICAgICAgICBjb25uZWN0aW9uID0gUXVpY0Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAg
ICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgb3Ig
aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0
aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQsCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90
aWNrZXRfZmV0Y2hlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAgICAgICAg
ICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sID0gc2VsZi5fY3JlYXRlX3Byb3Rv
Y29sKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyPXNlbGYuX3N0
cmVhbV9oYW5kbGVyCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5jb25uZWN0
aW9uX21hZGUoc2VsZi5fdHJhbnNwb3J0KQorCisgICAgICAgICAgICAjIHJlZ2lzdGVyIGNhbGxi
YWNrcworICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkLCBw
cm90b2NvbD1wcm90b2NvbAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX2Nv
bm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZCwg
cHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5fcHJv
dG9jb2xzW2hlYWRlci5kZXN0aW5hdGlvbl9jaWRdID0gcHJvdG9jb2wKKyAgICAgICAgICAgIHNl
bGYuX3Byb3RvY29sc1tjb25uZWN0aW9uLmhvc3RfY2lkXSA9IHByb3RvY29sCisKKyAgICAgICAg
aWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2NvbC5kYXRhZ3JhbV9y
ZWNlaXZlZChkYXRhLCBhZGRyKQorCisgICAgZGVmIF9jb25uZWN0aW9uX2lkX2lzc3VlZChzZWxm
LCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgICAg
IHNlbGYuX3Byb3RvY29sc1tjaWRdID0gcHJvdG9jb2wKKworICAgIGRlZiBfY29ubmVjdGlvbl9p
ZF9yZXRpcmVkKAorICAgICAgICBzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Byb3Rv
Y29sc1tjaWRdID09IHByb3RvY29sCisgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQor
CisgICAgZGVmIF9jb25uZWN0aW9uX3Rlcm1pbmF0ZWQoc2VsZiwgcHJvdG9jb2w6IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wpOgorICAgICAgICBmb3IgY2lkLCBwcm90byBpbiBsaXN0KHNlbGYuX3By
b3RvY29scy5pdGVtcygpKToKKyAgICAgICAgICAgIGlmIHByb3RvID09IHByb3RvY29sOgorICAg
ICAgICAgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQorCisKK2FzeW5jIGRlZiBzZXJ2
ZSgKKyAgICBob3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJh
dGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgY3JlYXRlX3Byb3RvY29sOiBDYWxsYWJsZSA9
IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgIHN0YXRl
bGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAgIHN0cmVhbV9oYW5kbGVyOiBRdWljU3RyZWFt
SGFuZGxlciA9IE5vbmUsCispIC0+IFF1aWNTZXJ2ZXI6CisgICAgIiIiCisgICAgU3RhcnQgYSBR
VUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAuCisKKyAgICA6ZnVuYzpg
c2VydmVgIHJlcXVpcmVzIGEgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24uUXVp
Y0NvbmZpZ3VyYXRpb25gCisgICAgY29udGFpbmluZyBUTFMgY2VydGlmaWNhdGUgYW5kIHByaXZh
dGUga2V5IGFzIHRoZSBgYGNvbmZpZ3VyYXRpb25gYCBhcmd1bWVudC4KKworICAgIDpmdW5jOmBz
ZXJ2ZWAgYWxzbyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgorCisg
ICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFsbG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+
YXN5bmNpby5Qcm90b2NvbGAgdGhhdAorICAgICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQg
c2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBzYW1lCisgICAgICBh
cmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9j
b2xgIGFuZCByZXR1cm5pbmcKKyAgICAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMu
YXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sYCBvciBhIHN1YmNsYXNzLgorICAgICogYGBz
ZXNzaW9uX3RpY2tldF9mZXRjaGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5
IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgc2Vzc2lvbiB0aWNrZXQgaXMgcHJlc2VudGVk
IGJ5IHRoZSBwZWVyLiBJdCBzaG91bGQgcmV0dXJuCisgICAgICB0aGUgc2Vzc2lvbiB0aWNrZXQg
d2l0aCB0aGUgc3BlY2lmaWVkIElEIG9yIGBOb25lYCBpZiBpdCBpcyBub3QgZm91bmQuCisgICAg
KiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0aWNrZXQgaXMg
aXNzdWVkLiBJdCBzaG91bGQgc3RvcmUgdGhlIHNlc3Npb24KKyAgICAgIHRpY2tldCBmb3IgZnV0
dXJlIGxvb2t1cC4KKyAgICAqIGBgc3RhdGVsZXNzX3JldHJ5YGAgc3BlY2lmaWVzIHdoZXRoZXIg
YSBzdGF0ZWxlc3MgcmV0cnkgc2hvdWxkIGJlCisgICAgICBwZXJmb3JtZWQgcHJpb3IgdG8gaGFu
ZGxpbmcgbmV3IGNvbm5lY3Rpb25zLgorICAgICogYGBzdHJlYW1faGFuZGxlcmBgIGlzIGEgY2Fs
bGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcworICAgICAgY3JlYXRl
ZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFt
UmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdyaXRlcmAuCisgICAg
IiIiCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKKyAgICBfLCBwcm90
b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAgICBsYW1i
ZGE6IFF1aWNTZXJ2ZXIoCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sLAorICAgICAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAg
ICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAg
ICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PXN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgICAgIHN0
cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyLAorICAgICAgICApLAorICAgICAgICBsb2NhbF9h
ZGRyPShob3N0LCBwb3J0KSwKKyAgICApCisgICAgcmV0dXJuIGNhc3QoUXVpY1NlcnZlciwgcHJv
dG9jb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4OGYxZWIxNTkyYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05v
bmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3lu
Y2lvL2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1
ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E0Mjk4Zjk1NGMyMmU1Mzg5YTEyOWExZWU2NzVlOGVmZWQ4
N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5w
eQpAQCAtMCwwICsxLDI5IEBACitmcm9tIC5fYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJl
YWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciAgIyBub3FhCisKK1VJTlRfVkFSX01BWCA9IDB4M0ZG
RkZGRkZGRkZGRkZGRgorCisKK2RlZiBlbmNvZGVfdWludF92YXIodmFsdWU6IGludCkgLT4gYnl0
ZXM6CisgICAgIiIiCisgICAgRW5jb2RlIGEgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVn
ZXIuCisgICAgIiIiCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgYnVmLnB1c2hf
dWludF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIHNpemVfdWludF92
YXIodmFsdWU6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUKKyAgICBhcyBhIFFVSUMg
dmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuCisgICAgIiIiCisgICAgaWYgdmFsdWUg
PD0gMHgzRjoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRjoKKyAg
ICAgICAgcmV0dXJuIDIKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA0CisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA4CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW50ZWdlciBpcyB0
b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9oMC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2gwL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIxZWU0ZTdkNmIxOGQ4
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0
aW9uLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0CisK
K2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVh
ZGVycywgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZl
bnQsIFN0cmVhbURhdGFSZWNlaXZlZAorCitIMF9BTFBOID0gWyJocS0yNyIsICJocS0yNiIsICJo
cS0yNSJdCisKKworY2xhc3MgSDBDb25uZWN0aW9uOgorICAgICIiIgorICAgIEFuIEhUVFAvMC45
IGNvbm5lY3Rpb24gb2JqZWN0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZDogRGlj
dFtpbnQsIGJvb2xdID0ge30KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1
cmF0aW9uLmlzX2NsaWVudAorICAgICAgICBzZWxmLl9xdWljID0gcXVpYworCisgICAgZGVmIGhh
bmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gzRXZlbnRdOgorICAg
ICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0cmVhbV9pZCAlIDQp
ID09IDA6CisgICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgRmFsc2UpOgorICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgaHR0
cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0cmVhbV9lbmRlZD1G
YWxzZSwgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxpdChiIiAiLCAxKQor
ICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1bKGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkW2V2ZW50LnN0cmVh
bV9pZF0gPSBUcnVlCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgc3Ry
ZWFtX2VuZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZl
bnRzCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRhOiBieXRl
cywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKKworICAgIGRlZiBzZW5kX2hl
YWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBl
bmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2lzX2NsaWVudDoKKyAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3QoaGVhZGVycykKKyAg
ICAgICAgICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBiIiAiICsgaGVhZGVy
c19kaWN0W2IiOnBhdGgiXSArIGIiXHJcbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRh
dGEgPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwg
ZGF0YSwgZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjM2MWVhNDA1NTFiNjI4NmIzZTFlZTVmMjlhNzc3NGFlNjA3MGI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBv
cnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0aW9u
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZjhjNTQyODNjZDc3Yzdm
OWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDc3NiBAQAoraW1wb3J0IGxv
Z2dpbmcKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKKworaW1wb3J0IHB5bHNxcGFjaworCitmcm9tIGFp
b3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgZW5jb2RlX3VpbnRf
dmFyCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0YVJlY2VpdmVkLAor
ICAgIEgzRXZlbnQsCisgICAgSGVhZGVycywKKyAgICBIZWFkZXJzUmVjZWl2ZWQsCisgICAgUHVz
aFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBO
b0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFp
b3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorCitsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigiaHR0cDMiKQorCitIM19BTFBOID0gWyJoMy0yNyIsICJoMy0yNiIsICJo
My0yNSJdCisKKworY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgorICAgIEhUVFBfTk9fRVJST1Ig
PSAweDEwMAorICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4MTAxCisgICAgSFRU
UF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCisgICAgSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1Ig
PSAweDEwMworICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4MTA0CisgICAgSFRU
UF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKKyAgICBIVFRQX0ZSQU1FX0VSUk9SID0gMHgxMDYK
KyAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKKyAgICBIVFRQX0lEX0VSUk9SID0gMHgx
MDgKKyAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKKyAgICBIVFRQX01JU1NJTkdfU0VU
VElOR1MgPSAweDEwQQorICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4MTBCCisgICAgSFRU
UF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCisgICAgSFRUUF9SRVFVRVNUX0lOQ09NUExFVEUg
PSAweDEwRAorICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQorICAgIEhUVFBfQ09OTkVD
VF9FUlJPUiA9IDB4MTBGCisgICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0gMHgxMTAKKyAgICBI
VFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKKyAgICBIVFRQX1FQQUNLX0VO
Q09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKKyAgICBIVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFN
X0VSUk9SID0gMHgyMDIKKworCitjbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6CisgICAgREFUQSA9
IDB4MAorICAgIEhFQURFUlMgPSAweDEKKyAgICBQUklPUklUWSA9IDB4MgorICAgIENBTkNFTF9Q
VVNIID0gMHgzCisgICAgU0VUVElOR1MgPSAweDQKKyAgICBQVVNIX1BST01JU0UgPSAweDUKKyAg
ICBHT0FXQVkgPSAweDcKKyAgICBNQVhfUFVTSF9JRCA9IDB4RAorICAgIERVUExJQ0FURV9QVVNI
ID0gMHhFCisKKworY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgorICAgIElOSVRJQUwgPSAwCisg
ICAgQUZURVJfSEVBREVSUyA9IDEKKyAgICBBRlRFUl9UUkFJTEVSUyA9IDIKKworCitjbGFzcyBT
ZXR0aW5nKEludEVudW0pOgorICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lUWSA9IDEKKyAgICBT
RVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKKyAgICBRUEFDS19CTE9DS0VEX1NUUkVB
TVMgPSA3CisgICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKKworCitjbGFzcyBTdHJl
YW1UeXBlKEludEVudW0pOgorICAgIENPTlRST0wgPSAwCisgICAgUFVTSCA9IDEKKyAgICBRUEFD
S19FTkNPREVSID0gMgorICAgIFFQQUNLX0RFQ09ERVIgPSAzCisKKworY2xhc3MgUHJvdG9jb2xF
cnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGVy
cm9ycy4KKworICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIEFQSSB1c2Vy
LCB0aGV5IGFyZSBoYW5kbGVkCisgICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlvbi5oYW5kbGVfZXZl
bnRgLgorICAgICIiIgorCisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0dFTkVSQUxf
UFJPVE9DT0xfRVJST1IKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFzb25fcGhyYXNlOiBz
dHIgPSAiIik6CisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKKwor
CitjbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJvcik6CisgICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVECisKKwor
Y2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3Jf
Y29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xh
c3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3JfY29k
ZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xhc3Mg
U3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJy
b3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCisKKworY2xhc3MgRnJhbWVVbmV4cGVj
dGVkKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9GUkFN
RV9VTkVYUEVDVEVECisKKworZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBlOiBpbnQsIGZyYW1l
X2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKKyAgICBmcmFtZV9sZW5ndGggPSBsZW4oZnJhbWVfZGF0
YSkKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsgMTYpCisgICAgYnVm
LnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKKyAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV9s
ZW5ndGgpCisgICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKKyAgICByZXR1cm4gYnVmLmRh
dGEKKworCitkZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2ludCwgaW50XSkgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAgZm9yIHNldHRpbmcs
IHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNl
dHRpbmcpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAgIHJldHVybiBidWYu
ZGF0YQorCisKK2RlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykgLT4gaW50OgorICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgbWF4X3B1c2hfaWQgPSBidWYucHVsbF91aW50
X3ZhcigpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBtYXhfcHVzaF9pZAorCisK
K2RlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQsIGludF06CisgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICBzZXR0aW5ncyA9IFtdCisgICAgd2hpbGUgbm90
IGJ1Zi5lb2YoKToKKyAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHNldHRpbmdzLmFwcGVuZCgo
c2V0dGluZywgdmFsdWUpKQorICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQorCisKK2RlZiBxbG9n
X2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBE
aWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0
aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0sCisgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworZGVmIHFsb2dfZW5jb2RlX2hl
YWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKKyAgICByZXR1cm4gWworICAg
ICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBoWzFdLmRlY29kZSgi
dXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCisgICAgXQorCisKK2RlZiBxbG9nX2VuY29kZV9oZWFk
ZXJzX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIHN0cmVh
bV9pZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAgImJ5dGVfbGVuZ3Ro
Ijogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFtZV90eXBlIjogImhl
YWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyl9LAorICAgICAg
ICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2RlZiBxbG9nX2VuY29k
ZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6IGludCwgaGVhZGVyczogSGVh
ZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAorKSAtPiBEaWN0OgorICAgIHJldHVy
biB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCksCisgICAgICAgICJm
cmFtZSI6IHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJvbWlzZSIsCisgICAg
ICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyksCisgICAgICAg
ICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmVh
bV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitjbGFzcyBIM1N0cmVhbToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
YmxvY2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9zaXplOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLmVu
ZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAg
IHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3RhdGUuSU5J
VElBTAorICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVyc1N0YXRlID0gSGVh
ZGVyc1N0YXRlLklOSVRJQUwKKyAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnN0
cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK2NsYXNzIEgzQ29ubmVjdGlvbjoK
KyAgICAiIiIKKyAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBvYmplY3QuCisKKyAg
ICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b25gIGluc3RhbmNlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWM6IFF1
aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5ID0gNDA5Ngor
ICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgorCisgICAgICAgIHNlbGYuX2lzX2Ns
aWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAgc2VsZi5faXNfZG9u
ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVpY19sb2dnZXIKKyAg
ICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAorICAgICAgICAgICAgc2Vs
Zi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAorICAgICAgICBzZWxmLl9k
ZWNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXIgPSBweWxzcXBhY2su
RW5jb2RlcigpCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgPSAwCisgICAg
ICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAgICAgc2VsZi5fc3RyZWFtOiBE
aWN0W2ludCwgSDNTdHJlYW1dID0ge30KKworICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZDogT3B0
aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQorICAgICAgICBzZWxm
Ll9uZXh0X3B1c2hfaWQ6IGludCA9IDAKKworICAgICAgICBzZWxmLl9sb2NhbF9jb250cm9sX3N0
cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rl
cl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2FsX2Vu
Y29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3Bl
ZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYu
X3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAg
ICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwg
ZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRUUCBldmVudHMuCisK
KyAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5kbGUuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFu
ZCBub3Qgc2VsZi5faXNfZG9uZToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0cmVh
bV9pZAorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbV9pZCAl
IDQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2VpdmVfcmVxdWVz
dF9vcl9wdXNoX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2ZW50LmRh
dGEsIGV2ZW50LmVuZF9zdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVhbQorICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJvciBhcyBl
eGM6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWV4Yy5l
cnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBzZW5kX3B1c2hfcHJvbWlzZShzZWxm
LCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50OgorICAgICAgICAiIiIK
KyAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgc3Ry
ZWFtLgorCisgICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGljaCBoZWFkZXJzIGFu
ZCBkYXRhIGNhbiBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJl
YW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBhcmFtIGhlYWRlcnM6
IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZlcnMgbWF5IHNlbmQg
YSBwdXNoIHByb21pc2UuIgorICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9pZCBpcyBOb25lIG9y
IHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKKyAgICAgICAgICAgIHJh
aXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKworICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNl
CisgICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKKyAgICAgICAgc2VsZi5fbmV4
dF9wdXNoX2lkICs9IDEKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAg
ICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICAgICAgZW5jb2RlX3Vp
bnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJz
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIMKgY3JlYXRlIHB1c2gg
c3RyZWFtCisgICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0o
U3RyZWFtVHlwZS5QVVNIKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEocHVz
aF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKKworICAgICAgICByZXR1cm4g
cHVzaF9zdHJlYW1faWQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmll
dmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0
aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhl
IGRhdGEuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5kLgorICAgICAgICA6
cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KKyAgICAgICAgIiIi
CisgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIHN0cmVhbSA9
IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAgaWYgc3RyZWFt
LmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUzoKKyAgICAg
ICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBp
biB0aGlzIHN0YXRlIikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxv
Z19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAg
ICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9cWxvZ19lbmNv
ZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9pZD1zdHJlYW1faWQp
LAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgK
KyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5EQVRBLCBkYXRh
KSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgc2VuZF9oZWFkZXJzKAorICAgICAg
ICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5kX3N0cmVhbTogYm9v
bCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBoZWFk
ZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmlldmUgZGF0YWdyYW0g
d2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0aGUgUVVJQworICAg
ICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICA6cGFyYW0g
c3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGhlYWRlcnMuCisg
ICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNlbmQuCisgICAgICAg
IDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFtLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICBpZiBz
dHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUzoK
KyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBpcyBub3Qg
YWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICBmcmFtZV9kYXRhID0gc2VsZi5fZW5j
b2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRw
IiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisgICAgICAgICAgICAg
ICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBi
eXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywgc3RyZWFtX2lkPXN0
cmVhbV9pZAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyB1
cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycworICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19z
ZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgorICAgICAgICAgICAgc3RyZWFtLmhl
YWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVyc1N0YXRl
LkFGVEVSX1RSQUlMRVJTCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAg
ICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBmcmFt
ZV9kYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgX2NyZWF0ZV91bmlfc3Ry
ZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAg
IENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVuIHR5cGUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcXVpYy5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV90eXBlKSkK
KyAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIF9kZWNvZGVfaGVhZGVycyhzZWxm
LCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdKSAtPiBIZWFkZXJz
OgorICAgICAgICAiIiIKKyAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBk
ZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgorCisgICAgICAgIFRoaXMgaXMg
Y2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVjb21lcyB1bmJsb2Nr
ZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmcmFtZV9kYXRh
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNlbGYuX2RlY29k
ZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRfaGVhZGVyKHN0cmVh
bV9pZCwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfc2VudCAr
PSBsZW4oZGVjb2RlcikKKyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKKyAgICAgICAgZXhjZXB0IHB5
bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFFw
YWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCisKKyAgICAgICAgcmV0dXJuIGhlYWRl
cnMKKworICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRl
cnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAgICAgICAgRW5jb2RlIGEgSEVB
REVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVuY29kZXIgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9IHNlbGYuX2VuY29k
ZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fZW5jb2Rlcl9ieXRl
c19zZW50ICs9IGxlbihlbmNvZGVyKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCisgICAgICAgIHJldHVy
biBmcmFtZV9kYXRhCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9pZDogaW50KSAtPiBIM1N0cmVhbToKKyAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBpbiBzZWxm
Ll9zdHJlYW06CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXSA9IEgzU3RyZWFt
KHN0cmVhbV9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAg
ICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6IGludCwgZnJhbWVf
ZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFt
ZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6CisgICAgICAgICAgICBz
ZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbmNvZGVy
ID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICBtYXhfdGFi
bGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NBUEFDSVRZ
LCAwKSwKKyAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGluZ3MuZ2V0KFNldHRp
bmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9p
ZCwgZW5jb2RlcikKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5NQVhfUFVT
SF9JRDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBNQVhfUFVTSF9JRCIp
CisgICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9wdXNoX2lkKGZyYW1l
X2RhdGEpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCisgICAgICAgICAgICBGcmFtZVR5
cGUuREFUQSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5EVVBMSUNBVEVfUFVT
SCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSW52YWxp
ZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKKworICAgIGRlZiBfaGFuZGxlX3JlcXVl
c3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJhbWVfdHlwZTogaW50
LAorICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCisgICAgICAgIHN0cmVhbTog
SDNTdHJlYW0sCisgICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICApIC0+IExpc3RbSDNF
dmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFtZSByZWNlaXZlZCBvbiBh
IHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBodHRwX2V2ZW50
czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5
cGUuREFUQToKKyAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAg
ICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRlcnNTdGF0ZS5BRlRF
Ul9IRUFERVJTOgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBm
cmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAgICAgaWYgc3Ry
ZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lk
PXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0
cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6CisgICAgICAgICAgICAjIGNo
ZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRl
cnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2Vk
IGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICAgICAjIHRyeSB0byBkZWNvZGUgSEVBREVSUywg
bWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCisgICAgICAgICAgICBoZWFkZXJzID0g
c2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKKworICAg
ICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAg
ICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2Vu
Y29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9
c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZnJh
bWVfZGF0YSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxlbihmcmFtZV9k
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB1cGRhdGUgc3Rh
dGUgYW5kIGVtaXQgaGVhZGVycworICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNfcmVjdl9z
dGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgICAgICBzdHJlYW0uaGVh
ZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lk
LAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgc3RyZWFtLmZyYW1lX3R5cGUgPT0gRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgcmFpc2UgRnJhbWVV
bmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNFIikKKyAgICAgICAg
ICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCisgICAgICAgICAgICBwdXNo
X2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgaGVhZGVycyA9IHNl
bGYuX2RlY29kZV9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsIGZy
YW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50
PSJmcmFtZV9wYXJzZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX3B1
c2hfcHJvbWlzZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPWxl
bihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbWl0IGV2ZW50CisgICAg
ICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgUHVzaFByb21pc2VS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLCBwdXNoX2lkPXB1
c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBSSU9SSVRZLAorICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNFTF9QVVNILAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgRnJhbWVUeXBlLlBVU0hf
UFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCisgICAgICAgICAgICBGcmFt
ZVR5cGUuTUFYX1BVU0hfSUQsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRFX1BVU0gs
CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoCisgICAgICAg
ICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVhbSIKKyAgICAgICAg
ICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCisgICAgICAgICAgICAgICAgZWxzZSAi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAg
ICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9pbml0X2Nvbm5lY3Rpb24oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncworICAgICAgICBzZWxmLl9sb2Nh
bF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKFN0cmVhbVR5cGUu
Q09OVFJPTCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAg
ICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCisgICAgICAgICAgICBlbmNvZGVfZnJh
bWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgICAg
IGVuY29kZV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNlbGYuX21heF90YWJs
ZV9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tfQkxPQ0tF
RF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBp
ZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgICAgIHNl
bGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGVuY29kZV9mcmFt
ZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxmLl9tYXhfcHVzaF9p
ZCkpLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgY3JlYXRlIGVuY29kZXIgYW5kIGRlY29k
ZXIgc3RyZWFtcworICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9pZCA9IHNlbGYu
X2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAgICAgICAgU3RyZWFtVHlwZS5RUEFDS19FTkNPREVS
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQgPSBzZWxm
Ll9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RF
UgorICAgICAgICApCisKKyAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoCisg
ICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1fZW5kZWQ6
IGJvb2wKKyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIi
IgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgc3Ry
ZWFtLmJ1ZmZlciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAg
IHN0cmVhbS5lbmRlZCA9IFRydWUKKyAgICAgICAgaWYgc3RyZWFtLmJsb2NrZWQ6CisgICAgICAg
ICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIHNob3J0Y3V0IGZvciBEQVRBIGZy
YW1lIGZyYWdtZW50cworICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfdHlw
ZSA9PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV9zaXplIGlz
IG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIpIDwgc3RyZWFtLmZy
YW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9c3Ry
ZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBsZW4oc3RyZWFtLmJ1
ZmZlcikKKyAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHJldHVy
biBodHRwX2V2ZW50cworCisgICAgICAgICMgaGFuZGxlIGxvbmUgRklOCisgICAgICAgIGlmIHN0
cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICBodHRwX2V2ZW50
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPWIiIiwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1bWVkID0gMAorCisg
ICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZldGNoIG5leHQgZnJh
bWUgaGVhZGVyCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3R5cGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9z
aXplID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJS
ZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29u
c3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV90eXBlID09IEZy
YW1lVHlwZS5EQVRBCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdv
cnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2RhdGFfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFtLmZyYW1lX3NpemUs
IHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgaG93IG11Y2ggZGF0
YSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc3RyZWFtLmZyYW1l
X3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQorICAgICAgICAgICAgaWYgc3RyZWFtLmZy
YW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBzdHJlYW0uZnJhbWVf
c2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIHJlYWQgYXZhaWxh
YmxlIGRhdGEKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9ieXRlcyhjaHVua19z
aXplKQorICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICMg
ZGV0ZWN0IGVuZCBvZiBmcmFtZQorICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgLT0gY2h1
bmtfc2l6ZQorICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXplOgorICAgICAgICAg
ICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2RhdGE9ZnJhbWVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVuZGVkIGFu
ZCBidWYuZW9mKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6CisgICAgICAgICAgICAg
ICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWRf
ZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAgICAgICAgc3RyZWFt
LmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgIHJldHVybiBodHRw
X2V2ZW50cworCisgICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAgc2Vs
Ziwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9vbAorICAg
ICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0g
PSBbXQorCisgICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAgICBpZiBzdHJlYW1f
ZW5kZWQ6CisgICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgY29uc3VtZWQgPSAwCisgICAgICAg
IHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCisKKyAgICAgICAgd2hpbGUgc3Ry
ZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVmLmVvZigpOgorICAg
ICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9uYWwgc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5cGUgPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50
ZWxsKCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQorICAgICAgICAgICAgICAg
IGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9yKCJPbmx5IG9u
ZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVI6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNvZGVyIHN0
cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFtLnN0cmVhbV9pZAor
ICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBB
Q0tfRU5DT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9lbmNvZGVyX3N0
cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0cmVh
bUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIFFQ
QUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQgPSBzdHJl
YW0uc3RyZWFtX2lkCisKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJl
YW1UeXBlLkNPTlRST0w6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0IGZyYW1lCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9i
eXRlcyhmcmFtZV9sZW5ndGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb250cm9sX2ZyYW1l
KGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBwdXNoIGlk
CisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2hfaWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFk
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMgcmVtb3ZlIHByb2Nl
c3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgICAgICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0
cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
Y2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbV9lbmRlZCkKKyAg
ICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBBQ0tfREVD
T0RFUjoKKyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBkZWNvZGVyCisg
ICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50
ZWxsKCkpCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyLmZlZWRfZGVjb2Rl
cihkYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVjb2RlclN0cmVhbUVy
cm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvZGVyU3RyZWFt
RXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfcmVj
ZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9
PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAgIyBmZWVkIHVuZnJh
bWVkIGRhdGEgdG8gZW5jb2RlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRl
cyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdW5i
bG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNvZGVyKGRhdGEpKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVhbUVycm9yIGFzIGV4
YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoKSBm
cm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgKz0g
bGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgdW5rbm93biBz
dHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCisgICAgICAgICAgICAgICAgYnVmLnNlZWsoYnVmLmNh
cGFjaXR5KQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAg
ICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgIHN0cmVhbS5idWZm
ZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAjIHByb2Nlc3MgdW5ibG9j
a2VkIHN0cmVhbXMKKyAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2NrZWRfc3RyZWFtczoK
KyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAgICAgICAg
ICAgICMgcmVzdW1lIGhlYWRlcnMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQgYW5kIG5v
dCBzdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0cmVhbS5ibG9ja2Vk
X2ZyYW1lX3NpemUgPSBOb25lCisKKyAgICAgICAgICAgICMgcmVzdW1lIHByb2Nlc3NpbmcKKyAg
ICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVz
aF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QyMWM1YWJjNDI3MGMyZThmMWJlNThhMDA5YWU3NTI4MTJkMWExNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMucHkK
QEAgLTAsMCArMSw2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK0hlYWRlcnMgPSBMaXN0W1R1
cGxlW2J5dGVzLCBieXRlc11dCisKKworY2xhc3MgSDNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBIVFRQLzMgZXZlbnRzLgorICAgICIiIgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IERhdGFSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYSBzdHJlYW0gZnJvbQor
ICAgIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRo
ZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJU
aGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworICAgIHN0
cmVhbV9lbmRlZDogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBG
SU4gYml0IHNldC4iCisKKyAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICJU
aGUgUHVzaCBJRCBvciBgTm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBIZWFkZXJzUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIEhl
YWRlcnNSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBoZWFkZXJzIGFyZSByZWNlaXZl
ZC4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhlYWRlcnMKKyAgICAiVGhlIGhlYWRlcnMuIgor
CisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGhlYWRl
cnMgd2VyZSByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBib29sCisgICAgIldo
ZXRoZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHB1c2hf
aWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9yIGBOb25lYCBpZiB0
aGlzIGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFB1c2hQcm9taXNlUmVj
ZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFB1c2hlZFN0cmVhbVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcHVzaGVkIHN0cmVhbSBoYXMgYmVlbgorICAgIHJlY2Vp
dmVkIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICIiIgorCisgICAgaGVhZGVyczogSGVhZGVy
cworICAgICJUaGUgcmVxdWVzdCBoZWFkZXJzLiIKKworICAgIHB1c2hfaWQ6IGludAorICAgICJU
aGUgUHVzaCBJRCBvZiB0aGUgcHVzaCBwcm9taXNlLiIKKworICAgIHN0cmVhbV9pZDogaW50Cisg
ICAgIlRoZSBTdHJlYW0gSUQgb2YgdGhlIHN0cmVhbSB0aGF0IHRoZSBwdXNoIGlzIHJlbGF0ZWQg
dG8uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTIwMGMxZDYxZmE1YjNhMTE1YjQzNDY0ZDU2N2VhM2FhMjg1NzZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKQEAgLTAsMCAr
MSwxMCBAQAorY2xhc3MgSDNFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xh
c3MgZm9yIEhUVFAvMyBleGNlcHRpb25zLgorICAgICIiIgorCisKK2NsYXNzIE5vQXZhaWxhYmxl
UHVzaElERXJyb3IoSDNFcnJvcik6CisgICAgIiIiCisgICAgVGhlcmUgYXJlIG5vIGF2YWlsYWJs
ZSBwdXNoIElEcyBsZWZ0LgorICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL3cz
Yy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzYzZTliNjA4MGIwZWYzZThiZDY4YWE1MzMwMjQ5
ZGZmMTIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2gzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRzLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9w
eS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTY0MmY3OWYyMWQ4NzJmMDEwOTc5ZGNmNmYwYzRhNDE1YWNj
MTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVk
CkBAIC0wLDAgKzEgQEAKK01hcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2lu
aXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJj
MjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19p
bml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29u
ZmlndXJhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZpZ3VyYXRp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3ZjNlYTYxZDBkYTA3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZp
Z3VyYXRpb24ucHkKQEAgLTAsMCArMSwxMjQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcywgZmllbGQKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4dElPLCBVbmlvbgorCitmcm9tIC4udGxzIGltcG9y
dCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9wcml2YXRlX2tleSwgbG9hZF9wZW1feDUwOV9jZXJ0
aWZpY2F0ZXMKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJvbSAucGFja2V0IGlt
cG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0NvbmZp
Z3VyYXRpb246CisgICAgIiIiCisgICAgQSBRVUlDIGNvbmZpZ3VyYXRpb24uCisgICAgIiIiCisK
KyAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICAiIiIK
KyAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFMUE4gcHJvdG9jb2xzLgorICAgICIiIgorCisgICAg
Y29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9IDgKKyAgICAiIiIKKyAgICBUaGUgbGVuZ3RoIGlu
IGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24gSURzLgorICAgICIiIgorCisgICAgaWRsZV90aW1l
b3V0OiBmbG9hdCA9IDYwLjAKKyAgICAiIiIKKyAgICBUaGUgaWRsZSB0aW1lb3V0IGluIHNlY29u
ZHMuCisKKyAgICBUaGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkIGlmIG5vdGhpbmcgaXMgcmVj
ZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KKyAgICAiIiIKKworICAgIGlzX2NsaWVudDog
Ym9vbCA9IFRydWUKKyAgICAiIiIKKyAgICBXaGV0aGVyIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRl
IG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBtYXhfZGF0YTogaW50ID0g
MTA0ODU3NgorICAgICIiIgorICAgIENvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQu
CisgICAgIiIiCisKKyAgICBtYXhfc3RyZWFtX2RhdGE6IGludCA9IDEwNDg1NzYKKyAgICAiIiIK
KyAgICBQZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIKKworICAgIHF1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyXSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUgOmNs
YXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5RdWljTG9nZ2VyYCBpbnN0YW5jZSB0byBsb2cgZXZl
bnRzIHRvLgorICAgICIiIgorCisgICAgc2VjcmV0c19sb2dfZmlsZTogVGV4dElPID0gTm9uZQor
ICAgICIiIgorICAgIEEgZmlsZS1saWtlIG9iamVjdCBpbiB3aGljaCB0byBsb2cgdHJhZmZpYyBz
ZWNyZXRzLgorCisgICAgVGhpcyBpcyB1c2VmdWwgdG8gYW5hbHl6ZSB0cmFmZmljIGNhcHR1cmVz
IHdpdGggV2lyZXNoYXJrLgorICAgICIiIgorCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgIiIiCisgICAgVGhlIHNlcnZlciBuYW1lIHRvIHNlbmQgZHVyaW5nIHRo
ZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgorCisgICAgLi4gbm90
ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNsaWVudHMuCisgICAgIiIiCisKKyAgICBzZXNzaW9u
X3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgIiIiCisgICAgVGhl
IFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3Igc2Vzc2lvbiByZXN1
bXB0aW9uLgorICAgICIiIgorCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNhcGF0aDogT3B0aW9uYWxbc3Ry
XSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0ZTogQW55ID0gTm9uZQorICAgIGNlcnRpZmljYXRlX2No
YWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKyAgICBtYXhfZGF0
YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBwcml2YXRlX2tleTog
QW55ID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzX3Rlc3Q6IGJvb2wgPSBGYWxzZQorICAg
IHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRf
ZmFjdG9yeT1sYW1iZGE6IFsKKyAgICAgICAgICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRf
MjcsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI2LAorICAgICAgICAg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICAgICAgXQorICAgICkKKyAgICB2
ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBsb2FkX2NlcnRfY2hh
aW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNlcnRmaWxlOiBQYXRoTGlrZSwKKyAgICAgICAg
a2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2VdID0gTm9uZSwKKyAgICAgICAgcGFzc3dvcmQ6IE9w
dGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBj
ZXJ0aWZpY2F0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3BlbihjZXJ0ZmlsZSwgInJi
IikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBsb2FkX3BlbV94NTA5X2NlcnRp
ZmljYXRlcyhmcC5yZWFkKCkpCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0
ZXNbMF0KKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbiA9IGNlcnRpZmljYXRlc1sxOl0K
KworICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVu
KGtleWZpbGUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNlbGYucHJpdmF0ZV9rZXkg
PSBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgZnAucmVhZCgpLAor
ICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZC5lbmNvZGUoInV0ZjgiKQorICAg
ICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhc3N3b3JkLCBzdHIpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGxv
YWRfdmVyaWZ5X2xvY2F0aW9ucygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgY2FmaWxlOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9y
aXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvCisgICAgICAgIHZhbGlkYXRlIG90aGVyIHBl
ZXJzJyBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNhZmlsZSA9IGNh
ZmlsZQorICAgICAgICBzZWxmLmNhcGF0aCA9IGNhcGF0aAorICAgICAgICBzZWxmLmNhZGF0YSA9
IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVj
dGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDYxZGY0ZmMxOTE2ZmRhM2VmYjQ2MWU2NjczNGVjMzU5YWUwYzMyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkK
QEAgLTAsMCArMSwyNjUyIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3MKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGRhdGFjbGFzc2VzIGlt
cG9ydCBkYXRhY2xhc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueSwgRGVxdWUsIERpY3QsIEZyb3plblNldCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBU
dXBsZQorCitmcm9tIC4uIGltcG9ydCB0bHMKK2Zyb20gLi5idWZmZXIgaW1wb3J0IFVJTlRfVkFS
X01BWCwgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIHNpemVfdWludF92YXIKK2Zyb20gLiBpbXBv
cnQgZXZlbnRzCitmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgor
ZnJvbSAuY3J5cHRvIGltcG9ydCBDcnlwdG9FcnJvciwgQ3J5cHRvUGFpciwgS2V5VW5hdmFpbGFi
bGVFcnJvcgorZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tl
dCBpbXBvcnQgKAorICAgIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tF
VF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9U
WVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVS
T19SVFQsCisgICAgUFJPQklOR19GUkFNRV9UWVBFUywKKyAgICBSRVRSWV9JTlRFR1JJVFlfVEFH
X1NJWkUsCisgICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIFF1aWNQ
cm90b2NvbFZlcnNpb24sCisgICAgUXVpY1N0cmVhbUZyYW1lLAorICAgIFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzLAorICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAgIGdldF9zcGluX2Jp
dCwKKyAgICBpc19sb25nX2hlYWRlciwKKyAgICBwdWxsX2Fja19mcmFtZSwKKyAgICBwdWxsX3F1
aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKyAgICBwdXNo
X2Fja19mcmFtZSwKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCispCitmcm9t
IC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgKAorICAgIFBBQ0tFVF9NQVhfU0laRSwKKyAgICBRdWlj
RGVsaXZlcnlTdGF0ZSwKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAgICBRdWljUGFja2V0QnVp
bGRlclN0b3AsCispCitmcm9tIC5yZWNvdmVyeSBpbXBvcnQgS19HUkFOVUxBUklUWSwgUXVpY1Bh
Y2tldFJlY292ZXJ5LCBRdWljUGFja2V0U3BhY2UKK2Zyb20gLnN0cmVhbSBpbXBvcnQgUXVpY1N0
cmVhbQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicXVpYyIpCisKK0VQT0NIX1NIT1JU
Q1VUUyA9IHsKKyAgICAiSSI6IHRscy5FcG9jaC5JTklUSUFMLAorICAgICJIIjogdGxzLkVwb2No
LkhBTkRTSEFLRSwKKyAgICAiMCI6IHRscy5FcG9jaC5aRVJPX1JUVCwKKyAgICAiMSI6IHRscy5F
cG9jaC5PTkVfUlRULAorfQorTUFYX0VBUkxZX0RBVEEgPSAweEZGRkZGRkZGCitTRUNSRVRTX0xB
QkVMUyA9IFsKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX0NMSUVOVF9FQVJM
WV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NMSUVOVF9IQU5EU0hBS0VfVFJBRkZJ
Q19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAg
XSwKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX1NF
UlZFUl9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19TRVJWRVJfVFJB
RkZJQ19TRUNSRVRfMCIsCisgICAgXSwKK10KK1NUUkVBTV9GTEFHUyA9IDB4MDcKKworTmV0d29y
a0FkZHJlc3MgPSBBbnkKKworIyBmcmFtZSBzaXplcworQUNLX0ZSQU1FX0NBUEFDSVRZID0gNjQg
ICMgRklYTUU6IHRoaXMgaXMgYXJiaXRyYXJ5IQorQVBQTElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQ
QUNJVFkgPSAxICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCitIQU5EU0hBS0VfRE9ORV9GUkFN
RV9DQVBBQ0lUWSA9IDEKK01BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK01BWF9TVFJF
QU1fREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOAorTkVXX0NPTk5FQ1RJT05fSURfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyAxICsgMjAgKyAxNgorUEFUSF9DSEFMTEVOR0VfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOAorUEFUSF9SRVNQT05TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4
CitQSU5HX0ZSQU1FX0NBUEFDSVRZID0gMQorUkVUSVJFX0NPTk5FQ1RJT05fSURfQ0FQQUNJVFkg
PSAxICsgOAorU1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZID0gMSArIDgKK1RSQU5TUE9SVF9DTE9T
RV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCisKKwor
ZGVmIEVQT0NIUyhzaG9ydGN1dDogc3RyKSAtPiBGcm96ZW5TZXRbdGxzLkVwb2NoXToKKyAgICBy
ZXR1cm4gZnJvemVuc2V0KEVQT0NIX1NIT1JUQ1VUU1tpXSBmb3IgaSBpbiBzaG9ydGN1dCkKKwor
CitkZWYgZHVtcF9jaWQoY2lkOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVybiBiaW5hc2NpaS5o
ZXhsaWZ5KGNpZCkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIGdldF9lcG9jaChwYWNrZXRfdHlw
ZTogaW50KSAtPiB0bHMuRXBvY2g6CisgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVf
SU5JVElBTDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5JTklUSUFMCisgICAgZWxpZiBwYWNr
ZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9aRVJPX1JUVDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9j
aC5aRVJPX1JUVAorICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSEFORFNIQUtF
OgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgIGVsc2U6CisgICAgICAg
IHJldHVybiB0bHMuRXBvY2guT05FX1JUVAorCisKK2RlZiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUg
aWYgdGhlIHN0cmVhbSBpcyBjbGllbnQgaW5pdGlhdGVkLgorICAgICIiIgorICAgIHJldHVybiBu
b3QgKHN0cmVhbV9pZCAmIDEpCisKKworZGVmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJl
YW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUgaWYgdGhlIHN0
cmVhbSBpcyB1bmlkaXJlY3Rpb25hbC4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbChzdHJlYW1f
aWQgJiAyKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uRXJyb3IoRXhjZXB0aW9uKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBlOiBpbnQsIHJlYXNv
bl9waHJhc2U6IHN0cik6CisgICAgICAgIHNlbGYuZXJyb3JfY29kZSA9IGVycm9yX2NvZGUKKyAg
ICAgICAgc2VsZi5mcmFtZV90eXBlID0gZnJhbWVfdHlwZQorICAgICAgICBzZWxmLnJlYXNvbl9w
aHJhc2UgPSByZWFzb25fcGhyYXNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6Cisg
ICAgICAgIHMgPSAiRXJyb3I6ICVkLCByZWFzb246ICVzIiAlIChzZWxmLmVycm9yX2NvZGUsIHNl
bGYucmVhc29uX3BocmFzZSkKKyAgICAgICAgaWYgc2VsZi5mcmFtZV90eXBlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcyArPSAiLCBmcmFtZV90eXBlOiAlcyIgJSBzZWxmLmZyYW1lX3R5cGUK
KyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkFkYXB0ZXIobG9nZ2lu
Zy5Mb2dnZXJBZGFwdGVyKToKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBtc2c6IHN0ciwga3dhcmdz
OiBBbnkpIC0+IFR1cGxlW3N0ciwgQW55XToKKyAgICAgICAgcmV0dXJuICJbJXNdICVzIiAlIChz
ZWxmLmV4dHJhWyJpZCJdLCBtc2cpLCBrd2FyZ3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWlj
Q29ubmVjdGlvbklkOgorICAgIGNpZDogYnl0ZXMKKyAgICBzZXF1ZW5jZV9udW1iZXI6IGludAor
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMgPSBiIiIKKyAgICB3YXNfc2VudDogYm9v
bCA9IEZhbHNlCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25TdGF0ZShFbnVtKToKKyAgICBGSVJT
VEZMSUdIVCA9IDAKKyAgICBDT05ORUNURUQgPSAxCisgICAgQ0xPU0lORyA9IDIKKyAgICBEUkFJ
TklORyA9IDMKKyAgICBURVJNSU5BVEVEID0gNAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNO
ZXR3b3JrUGF0aDoKKyAgICBhZGRyOiBOZXR3b3JrQWRkcmVzcworICAgIGJ5dGVzX3JlY2VpdmVk
OiBpbnQgPSAwCisgICAgYnl0ZXNfc2VudDogaW50ID0gMAorICAgIGlzX3ZhbGlkYXRlZDogYm9v
bCA9IEZhbHNlCisgICAgbG9jYWxfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgcmVtb3RlX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisgICAgZGVmIGNh
bl9zZW5kKHNlbGYsIHNpemU6IGludCkgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNf
dmFsaWRhdGVkIG9yIChzZWxmLmJ5dGVzX3NlbnQgKyBzaXplKSA8PSAzICogc2VsZi5ieXRlc19y
ZWNlaXZlZAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNSZWNlaXZlQ29udGV4dDoKKyAgICBl
cG9jaDogdGxzLkVwb2NoCisgICAgaG9zdF9jaWQ6IGJ5dGVzCisgICAgbmV0d29ya19wYXRoOiBR
dWljTmV0d29ya1BhdGgKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbQW55
XV0KKyAgICB0aW1lOiBmbG9hdAorCisKK0VORF9TVEFURVMgPSBmcm96ZW5zZXQoCisgICAgWwor
ICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcsCisgICAgICAgIFF1aWNDb25uZWN0
aW9uU3RhdGUuRFJBSU5JTkcsCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRF
RCwKKyAgICBdCispCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb246CisgICAgIiIiCisgICAgQSBR
VUlDIGNvbm5lY3Rpb24uCisKKyAgICBUaGUgc3RhdGUgbWFjaGluZSBpcyBkcml2ZW4gYnkgdGhy
ZWUga2luZHMgb2Ygc291cmNlczoKKworICAgIC0gdGhlIEFQSSB1c2VyIHJlcXVlc3RpbmcgZGF0
YSB0byBiZSBzZW5kIG91dCAoc2VlIDptZXRoOmBjb25uZWN0YCwKKyAgICAgIDptZXRoOmBzZW5k
X3BpbmdgLCA6bWV0aDpgc2VuZF9kYXRhZ3JhbV9kYXRhYCBhbmQgOm1ldGg6YHNlbmRfc3RyZWFt
X2RhdGFgKQorICAgIC0gZGF0YSBiZWluZyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIChzZWUg
Om1ldGg6YHJlY2VpdmVfZGF0YWdyYW1gKQorICAgIC0gYSB0aW1lciBmaXJpbmcgKHNlZSA6bWV0
aDpgaGFuZGxlX3RpbWVyYCkKKworICAgIDpwYXJhbSBjb25maWd1cmF0aW9uOiBUaGUgUVVJQyBj
b25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3Vy
YXRpb24sCisgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lv
blRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjog
T3B0aW9uYWxbdGxzLlNlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgKSAtPiBOb25l
OgorICAgICAgICBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudDoKKyAgICAgICAgICAgIGFzc2Vy
dCAoCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBpcyBOb25lCisgICAg
ICAgICAgICApLCAiQ2Fubm90IHNldCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGZvciBhIGNsaWVu
dCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKSwgIlNT
TCBjZXJ0aWZpY2F0ZSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisgICAgICAgICAgICBhc3Nl
cnQgKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkgaXMgbm90IE5v
bmUKKyAgICAgICAgICAgICksICJTU0wgcHJpdmF0ZSBrZXkgaXMgcmVxdWlyZWQgZm9yIGEgc2Vy
dmVyIgorCisgICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9jb25maWd1cmF0
aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9pc19jbGllbnQgPSBjb25maWd1cmF0
aW9uLmlzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Fja19kZWxheSA9IEtfR1JBTlVMQVJJVFkK
KyAgICAgICAgc2VsZi5fY2xvc2VfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fY2xvc2VfZXZlbnQ6IE9wdGlvbmFsW2V2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZF0g
PSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fY3J5cHRvczogRGljdFt0bHMuRXBvY2gsIENyeXB0b1BhaXJdID0ge30KKyAgICAgICAgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnM6IERpY3RbdGxzLkVwb2NoLCBCdWZmZXJdID0ge30KKyAgICAgICAg
c2VsZi5fY3J5cHRvX3N0cmVhbXM6IERpY3RbdGxzLkVwb2NoLCBRdWljU3RyZWFtXSA9IHt9Cisg
ICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbZXZlbnRzLlF1aWNFdmVudF0gPSBkZXF1ZSgpCisg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX2hh
bmRzaGFrZV9jb25maXJtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ob3N0X2NpZHMgPSBbCisg
ICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAgIGNpZD1vcy51cmFu
ZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcj0wLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tl
bj1vcy51cmFuZG9tKDE2KSwKKyAgICAgICAgICAgICAgICB3YXNfc2VudD1UcnVlLAorICAgICAg
ICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBzZWxmLl9ob3N0X2Np
ZHNbMF0uY2lkCisgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSA9IDEKKyAgICAgICAgc2VsZi5f
bG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9sb2NhbF9hY3RpdmVf
Y29ubmVjdGlvbl9pZF9saW1pdCA9IDgKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGEgPSBj
b25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQg
PSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Vz
ZWQgPSAwCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0g
Y29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IGNvbmZpZ3VyYXRpb24ubWF4
X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGkgPSAxMjgK
KyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pID0gMTI4CisgICAgICAgIHNlbGYu
X2xvc3NfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmV0d29ya19w
YXRoczogTGlzdFtRdWljTmV0d29ya1BhdGhdID0gW10KKyAgICAgICAgc2VsZi5fb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZCA9IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgc2VsZi5fcGFj
aW5nX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9udW1i
ZXIgPSAwCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAg
ICBzZWxmLl9wZWVyX2NpZCA9IG9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lk
X2xlbmd0aCkKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6IExpc3RbUXVpY0Nvbm5lY3Rpb25J
ZF0gPSBbXQorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gYiIiCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZQorICAgICAgICBzZWxm
Ll9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9yZW1vdGVfYWN0
aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9pZGxlX3Rp
bWVvdXQgPSAwLjAgICMgc2Vjb25kcworICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGEgPSAw
CisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkID0gMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCA9IDAKKyAgICAgICAg
c2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IDAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtc19iaWRpID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5p
ID0gMAorICAgICAgICBzZWxmLl9zcGFjZXM6IERpY3RbdGxzLkVwb2NoLCBRdWljUGFja2V0U3Bh
Y2VdID0ge30KKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
cGluX2hpZ2hlc3RfcG4gPSAwCisgICAgICAgIHNlbGYuX3N0YXRlID0gUXVpY0Nvbm5lY3Rpb25T
dGF0ZS5GSVJTVEZMSUdIVAorICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgPSAw
CisgICAgICAgIHNlbGYuX3N0cmVhbXM6IERpY3RbaW50LCBRdWljU3RyZWFtXSA9IHt9CisgICAg
ICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOiBMaXN0W1F1aWNTdHJlYW1dID0gW10KKyAg
ICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaTogTGlzdFtRdWljU3RyZWFtXSA9IFtdCisg
ICAgICAgIHNlbGYuX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAgICAgIyBs
b2dnaW5nCisgICAgICAgIGlmIGxvZ2dlcl9jb25uZWN0aW9uX2lkIGlzIE5vbmU6CisgICAgICAg
ICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IFF1aWNDb25uZWN0aW9uQWRhcHRlcigKKyAgICAgICAgICAgIGxvZ2dlciwgeyJp
ZCI6IGR1bXBfY2lkKGxvZ2dlcl9jb25uZWN0aW9uX2lkKX0KKyAgICAgICAgKQorICAgICAgICBp
ZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIgPSBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnN0YXJ0X3RyYWNlKAorICAgICAgICAgICAg
ICAgIGlzX2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9bG9nZ2VyX2Nvbm5l
Y3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvc3MgcmVjb3ZlcnkKKyAgICAg
ICAgc2VsZi5fbG9zcyA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAgICAgIGlzX2NsaWVu
dF93aXRob3V0XzFydHQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAgcXVpY19sb2dnZXI9
c2VsZi5fcXVpY19sb2dnZXIsCisgICAgICAgICAgICBzZW5kX3Byb2JlPXNlbGYuX3NlbmRfcHJv
YmUsCisgICAgICAgICkKKworICAgICAgICAjIHRoaW5ncyB0byBzZW5kCisgICAgICAgIHNlbGYu
X2Nsb3NlX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzog
RGVxdWVbYnl0ZXNdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5k
aW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nOiBMaXN0W2ludF0gPSBbXQor
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmV0aXJl
X2Nvbm5lY3Rpb25faWRzOiBMaXN0W2ludF0gPSBbXQorICAgICAgICBzZWxmLl9zdHJlYW1zX2Js
b2NrZWRfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAgICAg
ICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIK
KworICAgICAgICAjIGZyYW1lIGhhbmRsZXJzCisgICAgICAgIHNlbGYuX19mcmFtZV9oYW5kbGVy
cyA9IHsKKyAgICAgICAgICAgIDB4MDA6IChzZWxmLl9oYW5kbGVfcGFkZGluZ19mcmFtZSwgRVBP
Q0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMTogKHNlbGYuX2hhbmRsZV9waW5nX2ZyYW1l
LCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAweDAyOiAoc2VsZi5faGFuZGxlX2Fja19m
cmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDAzOiAoc2VsZi5faGFuZGxlX2Fj
a19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA0OiAoc2VsZi5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MDU6IChz
ZWxmLl9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgwNjogKHNlbGYuX2hhbmRsZV9jcnlwdG9fZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAg
ICAgICAgICAgMHgwNzogKHNlbGYuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUsIEVQT0NIUygiMSIp
KSwKKyAgICAgICAgICAgIDB4MDg6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgwOTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQ
T0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBBOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEI6IChzZWxmLl9oYW5kbGVfc3RyZWFt
X2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQzogKHNlbGYuX2hhbmRsZV9z
dHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBEOiAoc2VsZi5faGFu
ZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEU6IChzZWxm
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwRjog
KHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDEwOiAoc2VsZi5faGFuZGxlX21heF9kYXRhX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICAgICAgMHgxMTogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUsIEVQT0NIUygi
MDEiKSksCisgICAgICAgICAgICAweDEyOiAoc2VsZi5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEzOiAoc2VsZi5faGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTQ6IChz
ZWxmLl9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgxNTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxNjogKHNlbGYuX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE3OiAoc2VsZi5faGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTg6IChz
ZWxmLl9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAg
ICAgICAgICAweDE5OiAoc2VsZi5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lLCBF
UE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQTogKHNlbGYuX2hhbmRsZV9wYXRoX2NoYWxs
ZW5nZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUI6IChzZWxmLl9oYW5k
bGVfcGF0aF9yZXNwb25zZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUM6
IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisg
ICAgICAgICAgICAweDFEOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUsIEVQ
T0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MUU6IChzZWxmLl9oYW5kbGVfaGFuZHNoYWtlX2Rv
bmVfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MzA6IChzZWxmLl9oYW5kbGVf
ZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDMxOiAoc2VsZi5f
aGFuZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICB9CisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgY29uZmlndXJhdGlvbihzZWxmKSAtPiBRdWljQ29uZmlndXJhdGlv
bjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBjaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU3dpdGNo
IHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBjb25uZWN0aW9uIElEIGFuZCByZXRpcmUKKyAgICAgICAg
dGhlIHByZXZpb3VzIG9uZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNh
bGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAgIHdo
aWNoIG5lZWRzIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wZWVy
X2NpZF9hdmFpbGFibGU6CisgICAgICAgICAgICAjIHJldGlyZSBwcmV2aW91cyBDSUQKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiUmV0aXJpbmcgQ0lE
ICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3BlZXJfY2lkX3NlcQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFw
cGVuZChzZWxmLl9wZWVyX2NpZF9zZXEpCisKKyAgICAgICAgICAgICMgYXNzaWduIG5ldyBDSUQK
KyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUucG9w
KDApCisgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSBjb25uZWN0aW9uX2lkLnNlcXVl
bmNlX251bWJlcgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBjb25uZWN0aW9uX2lkLmNp
ZAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJTd2l0
Y2hpbmcgdG8gQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3Bl
ZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKAorICAgICAgICBzZWxm
LAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQgPSBRdWljRXJyb3JDb2RlLk5PX0VSUk9SLAorICAg
ICAgICBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgcmVhc29uX3Bo
cmFzZTogc3RyID0gIiIsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xv
c2UgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgOnBhcmFtIGVycm9yX2NvZGU6IEFuIGVycm9y
IGNvZGUgaW5kaWNhdGluZyB3aHkgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJlaW5nIGNsb3NlZC4KKyAgICAgICAgOnBhcmFtIHJlYXNvbl9waHJhc2U6IEEg
aHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2Ygd2h5IHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisgICAgICAgICIiIgorICAg
ICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHNlbGYu
X2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IFRydWUKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBub3c6IGZsb2F0KSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2Uu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFu
ZCBhIHNpbmdsZSB0aW1lLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2Fs
bCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hp
Y2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsg
YWRkcmVzcyBvZiB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJy
ZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2Vs
Zi5faXNfY2xpZW50IGFuZCBub3Qgc2VsZi5fY29ubmVjdF9jYWxsZWQKKyAgICAgICAgKSwgImNv
bm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUi
CisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX25l
dHdvcmtfcGF0aHMgPSBbUXVpY05ldHdvcmtQYXRoKGFkZHIsIGlzX3ZhbGlkYXRlZD1UcnVlKV0K
KyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3Zl
cnNpb25zWzBdCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKworICAgIGRlZiBkYXRh
Z3JhbXNfdG9fc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBMaXN0W1R1cGxlW2J5dGVzLCBOZXR3
b3JrQWRkcmVzc11dOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBgKGRh
dGEsIGFkZHIpYCB0dXBsZXMgb2YgZGF0YWdyYW1zIHdoaWNoIG5lZWQgdG8gYmUKKyAgICAgICAg
c2VudCwgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MgdG8gd2hpY2ggdGhleSBuZWVkIHRvIGJlIHNl
bnQuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBnZXRf
dGltZXJgIHRvIGtub3cgd2hlbiB0aGUgbmV4dAorICAgICAgICB0aW1lciBuZWVkcyB0byBiZSBz
ZXQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgIiIi
CisgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX25ldHdvcmtfcGF0aHNbMF0KKworICAgICAg
ICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
KyAgICAgICAgIyBidWlsZCBkYXRhZ3JhbXMKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRC
dWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9c2VsZi5ob3N0X2NpZCwKKyAgICAgICAgICAg
IGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNl
bGYuX3BhY2tldF9udW1iZXIsCisgICAgICAgICAgICBwZWVyX2NpZD1zZWxmLl9wZWVyX2NpZCwK
KyAgICAgICAgICAgIHBlZXJfdG9rZW49c2VsZi5fcGVlcl90b2tlbiwKKyAgICAgICAgICAgIHF1
aWNfbG9nZ2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc3Bpbl9iaXQ9c2VsZi5f
c3Bpbl9iaXQsCisgICAgICAgICAgICB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24sCisgICAgICAgICkK
KyAgICAgICAgaWYgc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIGZvciBlcG9jaCwg
cGFja2V0X3R5cGUgaW4gKAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2guT05FX1JUVCwgUEFD
S0VUX1RZUEVfT05FX1JUVCksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5IQU5EU0hBS0Us
IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5JTklU
SUFMLCBQQUNLRVRfVFlQRV9JTklUSUFMKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg
ICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgICAgICBpZiBjcnlw
dG8uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1zZWxmLl9jbG9z
ZV9ldmVudC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1z
ZWxmLl9jbG9zZV9ldmVudC5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT1zZWxmLl9jbG9zZV9ldmVudC5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBGYWxz
ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi5fY2xvc2VfYmVn
aW4oaXNfaW5pdGlhdG9yPVRydWUsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAjIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5
dGVzID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuY29uZ2VzdGlvbl93aW5kb3cgLSBz
ZWxmLl9sb3NzLmJ5dGVzX2luX2ZsaWdodAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYg
c2VsZi5fcHJvYmVfcGVuZGluZyBhbmQgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVzIDwgUEFDS0VU
X01BWF9TSVpFOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IFBB
Q0tFVF9NQVhfU0laRQorCisgICAgICAgICAgICAjIGxpbWl0IGRhdGEgb24gdW4tdmFsaWRhdGVk
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRh
dGVkOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gKAorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKiAzIC0gbmV0d29ya19w
YXRoLmJ5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZDoKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIGVwb2NoIGluIFt0bHMuRXBvY2guSU5JVElBTCwgdGxzLkVwb2NoLkhB
TkRTSEFLRV06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9oYW5kc2hha2Uo
YnVpbGRlciwgZXBvY2gsIG5vdykKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9hcHBsaWNh
dGlvbihidWlsZGVyLCBuZXR3b3JrX3BhdGgsIG5vdykKKyAgICAgICAgICAgIGV4Y2VwdCBRdWlj
UGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorCisgICAgICAgIGlmIGRhdGFncmFtczoK
KyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgPSBidWlsZGVyLnBhY2tldF9udW1iZXIK
KworICAgICAgICAgICAgIyByZWdpc3RlciBwYWNrZXRzCisgICAgICAgICAgICBzZW50X2hhbmRz
aGFrZSA9IEZhbHNlCisgICAgICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAg
ICAgICAgICAgcGFja2V0LnNlbnRfdGltZSA9IG5vdworICAgICAgICAgICAgICAgIHNlbGYuX2xv
c3Mub25fcGFja2V0X3NlbnQoCisgICAgICAgICAgICAgICAgICAgIHBhY2tldD1wYWNrZXQsIHNw
YWNlPXNlbGYuX3NwYWNlc1twYWNrZXQuZXBvY2hdCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGlmIHBhY2tldC5lcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAg
ICAgICAgICAgICAgICBzZW50X2hhbmRzaGFrZSA9IFRydWUKKworICAgICAgICAgICAgICAgICMg
bG9nIHBhY2tldAorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfc2VudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBzZWxm
Ll9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFja2V0LnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXQucGFja2V0X251bWJlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IHBhY2tldC5z
ZW50X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBf
Y2lkKHNlbGYuaG9zdF9jaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
X2xvbmdfaGVhZGVyKHBhY2tldC5wYWNrZXRfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQi
OiBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcGFja2V0LnF1aWNfbG9n
Z2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBjYW4gZGlzY2FyZCBpbml0aWFsIGtl
eXMKKyAgICAgICAgICAgIGlmIHNlbnRfaGFuZHNoYWtlIGFuZCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5JVElBTCkKKwor
ICAgICAgICAjIHJldHVybiBkYXRhZ3JhbXMgdG8gc2VuZCBhbmQgdGhlIGRlc3RpbmF0aW9uIG5l
dHdvcmsgYWRkcmVzcworICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgZGF0YWdyYW0gaW4g
ZGF0YWdyYW1zOgorICAgICAgICAgICAgYnl0ZV9sZW5ndGggPSBsZW4oZGF0YWdyYW0pCisgICAg
ICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudCArPSBieXRlX2xlbmd0aAorICAgICAgICAg
ICAgcmV0LmFwcGVuZCgoZGF0YWdyYW0sIG5ldHdvcmtfcGF0aC5hZGRyKSkKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
dHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFncmFtc19zZW50IiwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogYnl0ZV9sZW5ndGgsICJj
b3VudCI6IDF9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAg
ZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw9
RmFsc2UpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3RyZWFtIElE
IGZvciB0aGUgbmV4dCBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGVuZHBvaW50LgorICAgICAgICAi
IiIKKyAgICAgICAgc3RyZWFtX2lkID0gKGludChpc191bmlkaXJlY3Rpb25hbCkgPDwgMSkgfCBp
bnQobm90IHNlbGYuX2lzX2NsaWVudCkKKyAgICAgICAgd2hpbGUgc3RyZWFtX2lkIGluIHNlbGYu
X3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW1faWQgKz0gNAorICAgICAgICByZXR1cm4gc3Ry
ZWFtX2lkCisKKyAgICBkZWYgZ2V0X3RpbWVyKHNlbGYpIC0+IE9wdGlvbmFsW2Zsb2F0XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgdGltZXIgc2hv
dWxkIGZpcmUgb3IgTm9uZSBpZiBubyB0aW1lciBpcyBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICB0aW1lcl9hdCA9IHNlbGYuX2Nsb3NlX2F0CisgICAgICAgIGlmIHNlbGYuX3N0YXRlIG5v
dCBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgIyBhY2sgdGltZXIKKyAgICAgICAgICAgIGZv
ciBzcGFjZSBpbiBzZWxmLl9sb3NzLnNwYWNlczoKKyAgICAgICAgICAgICAgICBpZiBzcGFjZS5h
Y2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8IHRpbWVyX2F0OgorICAgICAgICAg
ICAgICAgICAgICB0aW1lcl9hdCA9IHNwYWNlLmFja19hdAorCisgICAgICAgICAgICAjIGxvc3Mg
ZGV0ZWN0aW9uIHRpbWVyCisgICAgICAgICAgICBzZWxmLl9sb3NzX2F0ID0gc2VsZi5fbG9zcy5n
ZXRfbG9zc19kZXRlY3Rpb25fdGltZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9sb3NzX2F0IGlz
IG5vdCBOb25lIGFuZCBzZWxmLl9sb3NzX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAgICAgICAg
dGltZXJfYXQgPSBzZWxmLl9sb3NzX2F0CisKKyAgICAgICAgICAgICMgcGFjaW5nIHRpbWVyCisg
ICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3BhY2lu
Z19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fcGFjaW5n
X2F0CisKKyAgICAgICAgcmV0dXJuIHRpbWVyX2F0CisKKyAgICBkZWYgaGFuZGxlX3RpbWVyKHNl
bGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhl
IHRpbWVyLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpg
ZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2ggbmVlZHMg
dG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVudCB0aW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgIyBlbmQgb2YgY2xvc2luZyBwZXJpb2Qgb3IgaWRsZSB0aW1lb3V0
CisgICAgICAgIGlmIG5vdyA+PSBzZWxmLl9jbG9zZV9hdDoKKyAgICAgICAgICAgIGlmIHNlbGYu
X2Nsb3NlX2V2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQg
PSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJZGxl
IHRpbWVvdXQiLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Vu
ZCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uIHRpbWVv
dXQKKyAgICAgICAgaWYgc2VsZi5fbG9zc19hdCBpcyBub3QgTm9uZSBhbmQgbm93ID49IHNlbGYu
X2xvc3NfYXQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkxvc3MgZGV0ZWN0aW9u
IHRyaWdnZXJlZCIpCisgICAgICAgICAgICBzZWxmLl9sb3NzLm9uX2xvc3NfZGV0ZWN0aW9uX3Rp
bWVvdXQobm93PW5vdykKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpIC0+IE9wdGlvbmFsW2V2
ZW50cy5RdWljRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0cmlldmUgdGhlIG5leHQg
ZXZlbnQgZnJvbSB0aGUgZXZlbnQgYnVmZmVyLgorCisgICAgICAgIFJldHVybnMgYE5vbmVgIGlm
IHRoZXJlIGFyZSBubyBidWZmZXJlZCBldmVudHMuCisgICAgICAgICIiIgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcGxlZnQoKQorICAgICAgICBleGNl
cHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVjZWl2
ZV9kYXRhZ3JhbShzZWxmLCBkYXRhOiBieXRlcywgYWRkcjogTmV0d29ya0FkZHJlc3MsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYW4gaW5jb21pbmcg
ZGF0YWdyYW0uCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRo
OmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAgICB3aGljaCBuZWVk
cyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YWdyYW0gd2hpY2gg
d2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsgYWRkcmVzcyBm
cm9tIHdoaWNoIHRoZSBkYXRhZ3JhbSB3YXMgcmVjZWl2ZWQuCisgICAgICAgIDpwYXJhbSBub3c6
IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIHN0b3AgaGFuZGxpbmcg
cGFja2V0cyB3aGVuIGNsb3NpbmcKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRF
UzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2ZW50
PSJkYXRhZ3JhbXNfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9eyJieXRlX2xlbmd0
aCI6IGxlbihkYXRhKSwgImNvdW50IjogMX0sCisgICAgICAgICAgICApCisKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAg
ICAgICAgIHN0YXJ0X29mZiA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAgICAgICAgICAgICBi
dWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVu
Z3RoCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hlY2sgZGVzdGluYXRpb24g
Q0lEIG1hdGNoZXMKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXE6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBzZWxmLl9ob3N0X2Np
ZHM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCA9PSBjb25uZWN0
aW9uX2lkLmNpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSA9IGNv
bm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIGRlc3RpbmF0aW9uX2NpZF9zZXEgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YT17InRyaWdnZXIiOiAidW5rbm93bl9jb25uZWN0aW9uX2lkIn0sCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBjaGVjayBw
cm90b2NvbCB2ZXJzaW9uCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5f
aXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0
aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLnZlcnNpb24g
PT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTgorICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAgICAgICB2ZXJzaW9u
cyA9IFtdCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKGJ1Zi5wdWxsX3VpbnQzMigpKQorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBj
YXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNr
ZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInZlcnNpb25fbmVnb3RpYXRpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0
aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbW1vbiA9IHNldChz
ZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucykuaW50ZXJzZWN0aW9uKAorICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9ucworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY29tbW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZXJy
b3IoIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24iKQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRF
Uk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNvdWxkIG5vdCBmaW5kIGEgY29t
bW9uIHByb3RvY29sIHZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xWZXJzaW9uKG1heChj
b21tb24pKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJSZXRyeWluZyB3aXRo
ICVzIiwgc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1u
b3cpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmICgKKyAgICAgICAg
ICAgICAgICBoZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBo
ZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lv
bnMKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgIyB1bnN1cHBvcnRlZCB2ZXJzaW9u
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9
eyJ0cmlnZ2VyIjogInVuc3VwcG9ydGVkX3ZlcnNpb24ifSwKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGll
bnQgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRSWToKKyAgICAgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBzdGF0ZWxlc3MgcmV0cnkgaW50ZWdyaXR5IHRhZworICAgICAg
ICAgICAgICAgIGludGVncml0eV90YWcgPSBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uoc3RhcnRfb2ZmLCBidWYudGVsbCgpIC0gUkVU
UllfSU5URUdSSVRZX1RBR19TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IHNlbGYuaG9zdF9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgYW5kIGhlYWRlci5pbnRlZ3JpdHlfdGFnID09IGludGVncml0eV90YWcK
KyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQK
KyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJh
bnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2Vp
dmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInJldHJ5IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGlu
YXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJjZV9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGhlYWRlci50b2tlbgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgKz0gMQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUGVyZm9ybWluZyBzdGF0ZWxlc3MgcmV0cnkiKQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX2ZpbmRfbmV0d29y
a19wYXRoKGFkZHIpCisKKyAgICAgICAgICAgICMgc2VydmVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9zdGF0ZSA9PSBRdWljQ29u
bmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAg
ICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFM
CisgICAgICAgICAgICAgICAgKSwgImZpcnN0IHBhY2tldCBtdXN0IGJlIElOSVRJQUwiCisgICAg
ICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtuZXR3b3JrX3BhdGhdCisgICAgICAg
ICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24oaGVhZGVyLnZlcnNp
b24pCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZShoZWFkZXIuZGVzdGluYXRpb25f
Y2lkKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBjcnlwdG8gYW5kIHBhY2tldCBzcGFjZQor
ICAgICAgICAgICAgZXBvY2ggPSBnZXRfZXBvY2goaGVhZGVyLnBhY2tldF90eXBlKQorICAgICAg
ICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgIGlmIGVwb2No
ID09IHRscy5FcG9jaC5aRVJPX1JUVDoKKyAgICAgICAgICAgICAgICBzcGFjZSA9IHNlbGYuX3Nw
YWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgICAgICMgZGVjcnlwdCBw
YWNrZXQKKyAgICAgICAgICAgIGVuY3J5cHRlZF9vZmYgPSBidWYudGVsbCgpIC0gc3RhcnRfb2Zm
CisgICAgICAgICAgICBlbmRfb2ZmID0gYnVmLnRlbGwoKSArIGhlYWRlci5yZXN0X2xlbmd0aAor
ICAgICAgICAgICAgYnVmLnNlZWsoZW5kX29mZikKKworICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IGNy
eXB0by5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtzdGFydF9vZmY6
ZW5kX29mZl0sIGVuY3J5cHRlZF9vZmYsIHNwYWNlLmV4cGVjdGVkX3BhY2tldF9udW1iZXIKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgS2V5VW5hdmFpbGFibGVFcnJvciBh
cyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4YykKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIi
OiAia2V5X3VuYXZhaWxhYmxlIn0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IENyeXB0b0Vycm9yIGFzIGV4YzoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29y
eT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJv
cHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJwYXlsb2Fk
X2RlY3J5cHRfZXJyb3IifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgY2hlY2sgcmVzZXJ2ZWQgYml0cworICAgICAgICAg
ICAgaWYgaGVhZGVyLmlzX2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDBDCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDE4CisgICAgICAgICAgICBpZiBwbGFpbl9oZWFkZXJbMF0gJiByZXNlcnZlZF9tYXNr
OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
UmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyByYWlzZSBleHBlY3RlZCBwYWNrZXQgbnVt
YmVyCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UuZXhwZWN0ZWRfcGFja2V0
X251bWJlcjoKKyAgICAgICAgICAgICAgICBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVyID0g
cGFja2V0X251bWJlciArIDEKKworICAgICAgICAgICAgIyBsb2cgcGFja2V0CisgICAgICAgICAg
ICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0gTm9uZQorICAgICAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cXVpY19sb2dnZXJfZnJhbWVzID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAor
ICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBz
ZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXIucGFja2V0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldF9udW1iZXIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IGVuZF9vZmYgLSBzdGFydF9vZmYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGluYXRpb25fY2lk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5z
b3VyY2VfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZnJhbWVzIjogcXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkaXNjYXJkIGluaXRpYWwg
a2V5cyBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50
IGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIHNlbGYu
X2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwpCisKKyAgICAgICAgICAgICMgdXBkYXRl
IHN0YXRlCisgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NpZF9zZXEgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lkCisgICAgICAgICAg
ICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gMAorCisgICAgICAgICAgICBpZiBzZWxmLl9zdGF0
ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkKKworICAgICAgICAg
ICAgIyB1cGRhdGUgc3BpbiBiaXQKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXIuaXNfbG9uZ19o
ZWFkZXIgYW5kIHBhY2tldF9udW1iZXIgPiBzZWxmLl9zcGluX2hpZ2hlc3RfcG46CisgICAgICAg
ICAgICAgICAgc3Bpbl9iaXQgPSBnZXRfc3Bpbl9iaXQocGxhaW5faGVhZGVyWzBdKQorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c3Bpbl9iaXQgPSBub3Qgc3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Bpbl9oaWdoZXN0X3BuID0gcGFja2V0X251bWJlcgorCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJjb25uZWN0aXZpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InNwaW5fYml0
X3VwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InN0YXRlIjogc2VsZi5f
c3Bpbl9iaXR9LAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaGFuZGxl
IHBheWxvYWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBRdWljUmVjZWl2ZUNvbnRleHQoCisgICAg
ICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICAgICAgaG9zdF9jaWQ9aGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGg9bmV0d29ya19w
YXRoLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1xdWljX2xvZ2dlcl9mcmFt
ZXMsCisgICAgICAgICAgICAgICAgdGltZT1ub3csCisgICAgICAgICAgICApCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNfcHJvYmluZyA9IHNl
bGYuX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBsYWlu
X3BheWxvYWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUXVpY0Nvbm5l
Y3Rpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
ZXhjKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZXhjLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ZXhjLnJl
YXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fc3Rh
dGUgaW4gRU5EX1NUQVRFUyBvciBzZWxmLl9jbG9zZV9wZW5kaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgICAgICAjIHVwZGF0ZSBpZGxlIHRpbWVvdXQKKyAgICAgICAgICAg
IHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVvdXQK
KworICAgICAgICAgICAgIyBoYW5kbGUgbWlncmF0aW9uCisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgbm90IHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgICAgIGFuZCBjb250
ZXh0Lmhvc3RfY2lkICE9IHNlbGYuaG9zdF9jaWQKKyAgICAgICAgICAgICAgICBhbmQgZXBvY2gg
PT0gdGxzLkVwb2NoLk9ORV9SVFQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBzd2l0Y2hpbmcgdG8g
Q0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChjb250ZXh0Lmhvc3Rf
Y2lkKSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NpZCA9IGNvbnRleHQuaG9zdF9j
aWQKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgbmV0d29yayBwYXRoCisgICAgICAgICAgICBpZiBub3QgbmV0d29ya19w
YXRoLmlzX3ZhbGlkYXRlZCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICJOZXR3
b3JrIHBhdGggJXMgdmFsaWRhdGVkIGJ5IGhhbmRzaGFrZSIsIG5ldHdvcmtfcGF0aC5hZGRyCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5pc192YWxpZGF0
ZWQgPSBUcnVlCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKz0gZW5k
X29mZiAtIHN0YXJ0X29mZgorICAgICAgICAgICAgaWYgbmV0d29ya19wYXRoIG5vdCBpbiBzZWxm
Ll9uZXR3b3JrX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuYXBw
ZW5kKG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlkeCA9IHNlbGYuX25ldHdvcmtfcGF0aHMu
aW5kZXgobmV0d29ya19wYXRoKQorICAgICAgICAgICAgaWYgaWR4IGFuZCBub3QgaXNfcHJvYmlu
ZyBhbmQgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRoICVzIHByb21vdGVk
IiwgbmV0d29ya19wYXRoLmFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRo
cy5wb3AoaWR4KQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuaW5zZXJ0KDAs
IG5ldHdvcmtfcGF0aCkKKworICAgICAgICAgICAgIyByZWNvcmQgcGFja2V0IGFzIHJlY2VpdmVk
CisgICAgICAgICAgICBpZiBub3Qgc3BhY2UuZGlzY2FyZGVkOgorICAgICAgICAgICAgICAgIGlm
IHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfdGltZSA9IG5vdwor
ICAgICAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5hZGQocGFja2V0X251bWJlcikKKyAgICAg
ICAgICAgICAgICBpZiBpc19hY2tfZWxpY2l0aW5nIGFuZCBzcGFjZS5hY2tfYXQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc3BhY2UuYWNrX2F0ID0gbm93ICsgc2VsZi5fYWNrX2RlbGF5
CisKKyAgICBkZWYgcmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBSZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAg
ICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSwgImNhbm5v
dCBjaGFuZ2Uga2V5IGJlZm9yZSBoYW5kc2hha2UgY29tcGxldGVzIgorICAgICAgICBzZWxmLl9j
cnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXS51cGRhdGVfa2V5KCkKKworICAgIGRlZiBzZW5kX3Bp
bmcoc2VsZiwgdWlkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEg
UElORyBmcmFtZSB0byB0aGUgcGVlci4KKworICAgICAgICA6cGFyYW0gdWlkOiBBIHVuaXF1ZSBJ
RCBmb3IgdGhpcyBQSU5HLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5n
LmFwcGVuZCh1aWQpCisKKyAgICBkZWYgc2VuZF9kYXRhZ3JhbV9mcmFtZShzZWxmLCBkYXRhOiBi
eXRlcykgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBEQVRBR1JBTSBmcmFt
ZS4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLmFwcGVuZChkYXRhKQorCisgICAg
ZGVmIHNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRh
OiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBzcGVjaWZpYyBzdHJlYW0uCisKKyAgICAg
ICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSdzIElELgorICAgICAgICA6cGFyYW0gZGF0
YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAgOnBhcmFtIGVuZF9zdHJlYW06IElmIHNl
dCB0byBgVHJ1ZWAsIHRoZSBGSU4gYml0IHdpbGwgYmUgc2V0LgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSAhPSBzZWxmLl9pc19j
bGllbnQ6CisgICAgICAgICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYuX3N0cmVhbXM6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQgZGF0YSBvbiB1bmtu
b3duIHBlZXItaW5pdGlhdGVkIHN0cmVhbSIpCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfdW5p
ZGlyZWN0aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNlbmQgZGF0YSBvbiBwZWVyLWluaXRpYXRl
ZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXQorICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVh
bV9pZF0KKyAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSkK
KworICAgICMgUHJpdmF0ZQorCisgICAgZGVmIF9hbHBuX2hhbmRsZXIoc2VsZiwgYWxwbl9wcm90
b2NvbDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hpY2gg
aXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIEFMUE4gbmVnb3RpYXRpb24gY29tcGxl
dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuUHJv
dG9jb2xOZWdvdGlhdGVkKGFscG5fcHJvdG9jb2w9YWxwbl9wcm90b2NvbCkpCisKKyAgICBkZWYg
X2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJlYW1f
aWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVjaWZp
ZWQgc3RyZWFtIGNhbiByZWNlaXZlIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3JlY2VpdmUo
c3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwK
KyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAg
cmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHNlbmQtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJl
YW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVj
aWZpZWQgc3RyZWFtIGNhbiBzZW5kIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3NlbmQoc3Ry
ZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iU3RyZWFtIGlzIHJlY2VpdmUtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Nsb3NlX2JlZ2luKHNlbGYsIGlzX2luaXRpYXRvcjogYm9vbCwgbm93OiBmbG9hdCkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEJlZ2luIHRoZSBjbG9zZSBwcm9jZWR1cmUu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIDMgKiBzZWxmLl9s
b3NzLmdldF9wcm9iZV90aW1lb3V0KCkKKyAgICAgICAgaWYgaXNfaW5pdGlhdG9yOgorICAgICAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xPU0lORykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRl
LkRSQUlOSU5HKQorCisgICAgZGVmIF9jbG9zZV9lbmQoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEVuZCB0aGUgY2xvc2UgcHJvY2VkdXJlLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fY2xvc2VfYXQgPSBOb25lCisgICAgICAgIGZvciBlcG9jaCBpbiBzZWxmLl9zcGFj
ZXMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaChlcG9jaCkKKyAgICAg
ICAgc2VsZi5fZXZlbnRzLmFwcGVuZChzZWxmLl9jbG9zZV9ldmVudCkKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRFRCkKKworICAgICAgICAjIHNp
Z25hbCBsb2cgZW5kCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5lbmRfdHJhY2Uoc2Vs
Zi5fcXVpY19sb2dnZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IE5vbmUKKwor
ICAgIGRlZiBfY29ubmVjdChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgU3RhcnQgdGhlIGNsaWVudCBoYW5kc2hha2UuCisgICAgICAgICIiIgorICAgICAg
ICBhc3NlcnQgc2VsZi5faXNfY2xpZW50CisKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cg
KyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorICAgICAgICBzZWxmLl9pbml0aWFs
aXplKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgIHNlbGYudGxzLmhhbmRsZV9tZXNzYWdlKGIi
Iiwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEo
KQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBRdWlj
U3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgUVVJQyBzdHJlYW0gaW4gb3Jk
ZXIgdG8gc2VuZCBkYXRhIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAgICAgIyBkZXRl
cm1pbmUgbGltaXRzCisgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1f
aWQpOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gMAorICAgICAgICAgICAg
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5p
CisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkK
KyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYu
X2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQor
ICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQor
ICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkK
KworICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFt
c1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWw9bWF4X3N0cmVhbV9kYXRhX2xv
Y2FsLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFf
cmVtb3RlLAorICAgICAgICApCisKKyAgICAgICAgIyBtYXJrIHN0cmVhbSBhcyBibG9ja2VkIGlm
IG5lZWRlZAorICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3RyZWFtczoKKyAgICAg
ICAgICAgIHN0cmVhbS5pc19ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtc19ibG9j
a2VkLmFwcGVuZChzdHJlYW0pCisgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVu
ZGluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2Rpc2NhcmRf
ZXBvY2goc2VsZiwgZXBvY2g6IHRscy5FcG9jaCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCJEaXNjYXJkaW5nIGVwb2NoICVzIiwgZXBvY2gpCisgICAgICAgIHNlbGYuX2Ny
eXB0b3NbZXBvY2hdLnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5fbG9zcy5kaXNjYXJkX3NwYWNl
KHNlbGYuX3NwYWNlc1tlcG9jaF0pCisgICAgICAgIHNlbGYuX3NwYWNlc1tlcG9jaF0uZGlzY2Fy
ZGVkID0gVHJ1ZQorCisgICAgZGVmIF9maW5kX25ldHdvcmtfcGF0aChzZWxmLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gUXVpY05ldHdvcmtQYXRoOgorICAgICAgICAjIGNoZWNrIGV4aXN0aW5n
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgZm9yIGlkeCwgbmV0d29ya19wYXRoIGluIGVudW1lcmF0
ZShzZWxmLl9uZXR3b3JrX3BhdGhzKToKKyAgICAgICAgICAgIGlmIG5ldHdvcmtfcGF0aC5hZGRy
ID09IGFkZHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtfcGF0aAorCisgICAgICAg
ICMgbmV3IG5ldHdvcmsgcGF0aAorICAgICAgICBuZXR3b3JrX3BhdGggPSBRdWljTmV0d29ya1Bh
dGgoYWRkcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3JrIHBhdGggJXMgZGlz
Y292ZXJlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICByZXR1cm4gbmV0d29ya19wYXRo
CisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
c3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgorICAgICAgICBHZXQg
b3IgY3JlYXRlIGEgc3RyZWFtIGluIHJlc3BvbnNlIHRvIGEgcmVjZWl2ZWQgZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zLmdldChzdHJlYW1faWQsIE5v
bmUpCisgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgorICAgICAgICAgICAgIyBjaGVjayBpbml0
aWF0b3IKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9p
ZCkgPT0gc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5T
VFJFQU1fU1RBVEVfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iV3Jvbmcgc3RyZWFtIGlu
aXRpYXRvciIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBs
aW1pdHMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQp
OgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21h
eF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
ID0gMAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVh
bXNfdW5pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAg
ICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfbG9jYWwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX2xv
Y2FsX21heF9zdHJlYW1zX2JpZGkKKworICAgICAgICAgICAgIyBjaGVjayBtYXggc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPSJUb28gbWFueSBzdHJlYW1zIG9wZW4iLAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
IlN0cmVhbSAlZCBjcmVhdGVkIGJ5IHBlZXIiICUgc3RyZWFtX2lkKQorICAgICAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgKQorICAg
ICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2hhbmRsZV9zZXNzaW9uX3RpY2tldChzZWxm
LCBzZXNzaW9uX3RpY2tldDogdGxzLlNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXpl
ICE9IE1BWF9FQVJMWV9EQVRBCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVU
eXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJbnZhbGlkIG1heF9l
YXJseV9kYXRhIHZhbHVlICVzIgorICAgICAgICAgICAgICAgICUgc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcihzZXNzaW9uX3RpY2tldCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZShzZWxm
LCBwZWVyX2NpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICMgVExTCisgICAgICAgIHNlbGYu
dGxzID0gdGxzLkNvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9jb25m
aWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRhPXNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2NvbmZpZ3VyYXRpb24u
Y2FmaWxlLAorICAgICAgICAgICAgY2FwYXRoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwYXRoLAor
ICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKKyAgICAgICAgICAgIGxvZ2dl
cj1zZWxmLl9sb2dnZXIsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0YT1Ob25lIGlmIHNlbGYu
X2lzX2NsaWVudCBlbHNlIE1BWF9FQVJMWV9EQVRBLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgIHZlcmlmeV9tb2Rl
PXNlbGYuX2NvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi50bHMuY2VydGlmaWNhdGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRpZmljYXRlCisgICAg
ICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX2NoYWluID0gc2VsZi5fY29uZmlndXJhdGlvbi5jZXJ0
aWZpY2F0ZV9jaGFpbgorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSA9
IHNlbGYuX2NvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2VsZi50bHMuaGFuZHNo
YWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4
dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgXQorCisgICAgICAgICMgVExTIHNlc3Npb24gcmVzdW1wdGlvbgorICAgICAgICBzZXNz
aW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQKKyAgICAgICAg
aWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICBhbmQgc2Vzc2lv
bl90aWNrZXQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192
YWxpZAorICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LnNlcnZlcl9uYW1lID09IHNlbGYu
X2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYu
dGxzLnNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldAor
CisgICAgICAgICAgICAjIHBhcnNlIHNhdmVkIFFVSUMgdHJhbnNwb3J0IHBhcmFtZXRlcnMgLSBm
b3IgMC1SVFQKKyAgICAgICAgICAgIGlmIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3Np
emUgPT0gTUFYX0VBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZm9yIGV4dF90eXBlLCBleHRf
ZGF0YSBpbiBzZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAg
ICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGEsIGZyb21fc2Vz
c2lvbl90aWNrZXQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRMUyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi50bHMuYWxwbl9jYiA9IHNlbGYuX2FscG5faGFuZGxlcgorICAgICAgICBpZiBzZWxmLl9zZXNz
aW9uX3RpY2tldF9mZXRjaGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi50bHMuZ2V0
X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgorICAgICAg
ICBpZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc2VsZi50bHMubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5faGFuZGxlX3Nlc3Npb25f
dGlja2V0CisgICAgICAgIHNlbGYudGxzLnVwZGF0ZV90cmFmZmljX2tleV9jYiA9IHNlbGYuX3Vw
ZGF0ZV90cmFmZmljX2tleQorCisgICAgICAgICMgcGFja2V0IHNwYWNlcworICAgICAgICBzZWxm
Ll9jcnlwdG9zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IENyeXB0b1BhaXIo
KSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5aRVJPX1JUVDogQ3J5cHRvUGFpcigpLAorICAgICAg
ICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQ3J5cHRvUGFpcigpLAorICAgICAgICAgICAgdGxz
LkVwb2NoLk9ORV9SVFQ6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLl9j
cnlwdG9fYnVmZmVycyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNh
cGFjaXR5PTQwOTYpLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0b19zdHJlYW1zID0g
eworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAg
ICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBRdWljU3RyZWFtKCksCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5fc3Bh
Y2VzID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNQYWNrZXRTcGFjZSgp
LAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVpY1BhY2tldFNwYWNlKCksCisg
ICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogUXVpY1BhY2tldFNwYWNlKCksCisgICAgICAg
IH0KKworICAgICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5JTklUSUFMXS5zZXR1cF9pbml0
aWFsKAorICAgICAgICAgICAgY2lkPXBlZXJfY2lkLCBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50
LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvc3Mu
c3BhY2VzID0gbGlzdChzZWxmLl9zcGFjZXMudmFsdWVzKCkpCisgICAgICAgIHNlbGYuX3BhY2tl
dF9udW1iZXIgPSAwCisKKyAgICBkZWYgX2hhbmRsZV9hY2tfZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhbiBBQ0sgZnJh
bWUuCisgICAgICAgICIiIgorICAgICAgICBhY2tfcmFuZ2VzZXQsIGFja19kZWxheV9lbmNvZGVk
ID0gcHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFt
ZVR5cGUuQUNLX0VDTjoKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
ICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgYWNrX2RlbGF5ID0gKGFja19kZWxheV9lbmNvZGVkIDw8IHNlbGYuX3JlbW90ZV9h
Y2tfZGVsYXlfZXhwb25lbnQpIC8gMTAwMDAwMAorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoYWNrX3Jhbmdlc2V0LCBhY2tfZGVsYXkpCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAg
ICBzcGFjZT1zZWxmLl9zcGFjZXNbY29udGV4dC5lcG9jaF0sCisgICAgICAgICAgICBhY2tfcmFu
Z2VzZXQ9YWNrX3Jhbmdlc2V0LAorICAgICAgICAgICAgYWNrX2RlbGF5PWFja19kZWxheSwKKyAg
ICAgICAgICAgIG5vdz1jb250ZXh0LnRpbWUsCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxl
X2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENPTk5FQ1RJT05fQ0xPU0UgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBlcnJvcl9jb2RlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAg
ICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JUX0NMT1NFOgorICAg
ICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBOb25lCisgICAgICAgIHJlYXNvbl9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYXNvbl9waHJh
c2UgPSBidWYucHVsbF9ieXRlcyhyZWFzb25fbGVuZ3RoKS5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9
ICIiCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rpb25f
Y2xvc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
IkNvbm5lY3Rpb24gY2xvc2UgY29kZSAweCVYLCByZWFzb24gJXMiLCBlcnJvcl9jb2RlLCByZWFz
b25fcGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMu
Q29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUs
IGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9yPUZhbHNlLCBub3c9
Y29udGV4dC50aW1lKQorCisgICAgZGVmIF9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBDUllQ
VE8gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBvZmZzZXQgPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgb2Zm
c2V0ICsgbGVuZ3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5l
Y3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRlJB
TUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxlbmd0aCBjYW5ub3Qg
ZXhjZWVkIDJeNjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJhbWUgPSBRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpKQorCisg
ICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9fZnJhbWUoZnJhbWUp
CisgICAgICAgICAgICApCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNb
Y29udGV4dC5lcG9jaF0KKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgcGFzcyBkYXRhIHRv
IFRMUyBsYXllcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGxzLmhh
bmRsZV9tZXNzYWdlKGV2ZW50LmRhdGEsIHNlbGYuX2NyeXB0b19idWZmZXJzKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEoKQorICAgICAgICAgICAgZXhjZXB0IHRscy5B
bGVydCBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkNSWVBUT19FUlJP
UiArIGludChleGMuZGVzY3JpcHRpb24pLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBl
PWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9c3RyKGV4Yyks
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHBhcnNlIHRyYW5zcG9ydCBwYXJh
bWV0ZXJzCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX3BhcmFt
ZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgc2VsZi50bHMucmVjZWl2ZWRfZXh0
ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBmb3Ig
ZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlbGYudGxzLnJlY2VpdmVkX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90
cmFuc3BvcnRfcGFyYW1ldGVycyhleHRfZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICApLCAiTm8gUVVJQyB0cmFuc3Bv
cnQgcGFyYW1ldGVycyByZWNlaXZlZCIKKworICAgICAgICAgICAgIyB1cGRhdGUgY3VycmVudCBl
cG9jaAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSBhbmQgc2Vs
Zi50bHMuc3RhdGUgaW4gWworICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5DTElFTlRfUE9TVF9I
QU5EU0hBS0UsCisgICAgICAgICAgICAgICAgdGxzLlN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFL
RSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBs
ZXRlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBmb3Igc2VydmVycywgdGhlIGhhbmRzaGFr
ZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVu
dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFO
RFNIQUtFKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0g
VHJ1ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5pc19jbGllbnRfd2l0aG91dF8xcnR0
ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29ubmVjdGlvbl9pZHMo
KQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBh
bHBuX3Byb3RvY29sPXNlbGYudGxzLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVhcmx5X2RhdGFfYWNjZXB0ZWQ9c2VsZi50bHMuZWFybHlfZGF0YV9hY2NlcHRlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fcmVzdW1lZD1zZWxmLnRscy5zZXNzaW9u
X3Jlc3VtZWQsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNl
KQorICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
ICAgICAgICAiQUxQTiBuZWdvdGlhdGVkIHByb3RvY29sICVzIiwgc2VsZi50bHMuYWxwbl9uZWdv
dGlhdGVkCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1l
X3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBIYW5kbGUgYSBEQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBs
aW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKGxpbWl0PWxpbWl0KQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERBVEFHUkFNIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgIGlmIGZy
YW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSDoKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIHN0YXJ0CisgICAgICAgIGRhdGEgPSBidWYucHVs
bF9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICApCisKKyAgICAgICAg
IyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYu
X2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgaXMgTm9uZQorICAgICAgICAg
ICAgb3IgYnVmLnRlbGwoKSAtIHN0YXJ0ID49IHNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFn
cmFtX2ZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIs
CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuRGF0
YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9ZGF0YSkpCisKKyAgICBkZWYgX2hhbmRsZV9oYW5kc2hh
a2VfZG9uZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgSGFuZGxlIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJh
bWUoKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMiLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgwqBmb3IgY2xpZW50cywgdGhlIGhhbmRzaGFrZSBpcyBub3cgY29u
ZmlybWVkCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkOgorICAgICAg
ICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFORFNIQUtFKQorICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IFRydWUKKworICAgIGRlZiBfaGFuZGxlX21h
eF9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBNQVhfREFUQSBmcmFtZS4KKworICAgICAgICBUaGlzIGFkanVz
dHMgdGhlIHRvdGFsIGFtb3VudCBvZiB3ZSBjYW4gc2VuZCB0byB0aGUgcGVlci4KKyAgICAgICAg
IiIiCisgICAgICAgIG1heF9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShtYXhpbXVtPW1heF9k
YXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9kYXRhID4gc2VsZi5fcmVtb3Rl
X21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X2Rh
dGEgcmFpc2VkIHRvICVkIiwgbWF4X2RhdGEpCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4
X2RhdGEgPSBtYXhfZGF0YQorCisgICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhpcyBhZGp1c3RzIHRo
ZSBhbW91bnQgb2YgZGF0YSB3ZSBjYW4gc2VuZCBvbiBhIHNwZWNpZmljIHN0cmVhbS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
bWF4X3N0cmVhbV9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIG1heGltdW09bWF4X3N0cmVhbV9kYXRhLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFt
IGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1lX3R5
cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0
cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG1heF9zdHJlYW1fZGF0YSA+
IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgcmVtb3RlIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICBtYXhfc3RyZWFtX2RhdGEsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0u
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YQorCisgICAgZGVmIF9oYW5k
bGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfQklESSBmcmFtZS4K
KworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgYmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdl
IGNhbiBpbml0aWF0ZSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9zdHJl
YW1zID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5p
ZGlyZWN0aW9uYWw9RmFsc2UsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9yZW1vdGVf
bWF4X3N0cmVhbXNfYmlkaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiUmVtb3Rl
IG1heF9zdHJlYW1zX2JpZGkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMpCisgICAgICAgICAg
ICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSA9IG1heF9zdHJlYW1zCisgICAgICAgICAg
ICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCisKKyAgICBk
ZWYgX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6
IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1TX1VOSSBm
cmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgdW5pZGlyZWN0aW9uYWwgc3Ry
ZWFtcyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIiIgorICAgICAgICBt
YXhfc3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAgICAgICAgICAgICAg
IGlzX3VuaWRpcmVjdGlvbmFsPVRydWUsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfdW5pOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJS
ZW1vdGUgbWF4X3N0cmVhbXNfdW5pIHJhaXNlZCB0byAlZCIsIG1heF9zdHJlYW1zKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSA9IG1heF9zdHJlYW1zCisgICAgICAg
ICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKworICAg
IGRlZiBfaGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBORVdfQ09OTkVDVElP
Tl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGNvbm5lY3Rp
b25faWQgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisgICAgICAgIHN0YXRlbGVzc19yZXNldF90
b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgICAgICByZXRpcmVf
cHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXI9c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKworICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUuYXBwZW5kKAorICAg
ICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBjaWQ9Y29ubmVjdGlv
bl9pZCwKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyLAor
ICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxlc3NfcmVzZXRfdG9r
ZW4sCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX25ld190b2tl
bl9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFt
ZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgSGFuZGxlIGEgTkVXX1RPS0VOIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgbGVu
Z3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0b2tlbiA9IGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbmV3X3Rv
a2VuX2ZyYW1lKHRva2VuPXRva2VuKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVz
IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAg
ICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBi
dWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBh
IFBBRERJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGNvbnN1bWUgcGFkZGluZwor
ICAgICAgICBwb3MgPSBidWYudGVsbCgpCisgICAgICAgIGZvciBieXRlIGluIGJ1Zi5kYXRhX3Ns
aWNlKHBvcywgYnVmLmNhcGFjaXR5KToKKyAgICAgICAgICAgIGlmIGJ5dGU6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGJ1Zi5zZWVrKHBvcykK
KworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5k
bGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBBVEhfQ0hBTExFTkdFIGZyYW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisKKyAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9ZGF0
YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBjb250ZXh0Lm5ldHdvcmtfcGF0aC5yZW1vdGVf
Y2hhbGxlbmdlID0gZGF0YQorCisgICAgZGVmIF9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgK
KyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBp
bnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFu
ZGxlIGEgUEFUSF9SRVNQT05TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBi
dWYucHVsbF9ieXRlcyg4KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAg
ICBpZiBkYXRhICE9IGNvbnRleHQubmV0d29ya19wYXRoLmxvY2FsX2NoYWxsZW5nZToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iUmVz
cG9uc2UgZG9lcyBub3QgbWF0Y2ggY2hhbGxlbmdlIiwKKyAgICAgICAgICAgICkKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIk5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0
ZWQgYnkgY2hhbGxlbmdlIiwgY29udGV4dC5uZXR3b3JrX3BhdGguYWRkcgorICAgICAgICApCisg
ICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRydWUKKworICAgIGRl
ZiBfaGFuZGxlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZl
Q29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5kbGVfcmVzZXRf
c3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBSRVNFVF9TVFJFQU0gZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVycm9yX2NvZGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGZpbmFsX3NpemUgPSBidWYucHVsbF91aW50
X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBm
aW5hbF9zaXplPWZpbmFsX3NpemUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgIlN0cmVhbSAl
ZCByZXNldCBieSBwZWVyIChlcnJvciBjb2RlICVkLCBmaW5hbCBzaXplICVkKSIsCisgICAgICAg
ICAgICBzdHJlYW1faWQsCisgICAgICAgICAgICBlcnJvcl9jb2RlLAorICAgICAgICAgICAgZmlu
YWxfc2l6ZSwKKyAgICAgICAgKQorICAgICAgICAjIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVh
dGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFw
cGVuZCgKKyAgICAgICAgICAgIGV2ZW50cy5TdHJlYW1SZXNldChlcnJvcl9jb2RlPWVycm9yX2Nv
ZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3Jl
dGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVRJUkVfQ09OTkVDVElPTl9JRCBmcmFt
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nv
bm5lY3Rpb25faWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAg
ICAgICMgZmluZCB0aGUgY29ubmVjdGlvbiBJRCBieSBzZXF1ZW5jZSBudW1iZXIKKyAgICAgICAg
Zm9yIGluZGV4LCBjb25uZWN0aW9uX2lkIGluIGVudW1lcmF0ZShzZWxmLl9ob3N0X2NpZHMpOgor
ICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIgPT0gc2VxdWVuY2Vf
bnVtYmVyOgorICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuY2lkID09IGNvbnRleHQu
aG9zdF9jaWQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2Fubm90IHJldGly
ZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBy
ZXRpcmluZyBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgIGR1bXBfY2lkKGNvbm5l
Y3Rpb25faWQuY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9o
b3N0X2NpZHNbaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQoY29ubmVjdGlvbl9p
ZD1jb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAjIGlzc3VlIGEgbmV3IGNvbm5lY3Rpb24gSUQKKyAgICAgICAgc2Vs
Zi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25faWRzKCkKKworICAgIGRlZiBfaGFuZGxlX3N0b3Bfc2Vu
ZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgU1RPUF9TRU5ESU5HIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAg
ICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlcnJvcl9jb2RlID0g
YnVmLnB1bGxfdWludF92YXIoKSAgIyBhcHBsaWNhdGlvbiBlcnJvciBjb2RlCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBzdHJlYW1faWQ9c3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3Ry
ZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1l
X3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShm
cmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDQ6CisgICAgICAgICAgICBv
ZmZzZXQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBv
ZmZzZXQgPSAwCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiAyOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGgg
PiBVSU5UX1ZBUl9NQVg6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19F
UlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAt
IDEiLAorICAgICAgICAgICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAg
ICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMobGVuZ3RoKSwgZmlu
PWJvb2woZnJhbWVfdHlwZSAmIDEpCisgICAgICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKGZyYW1lLCBzdHJlYW1faWQ9c3RyZWFtX2lk
KQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAg
ICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0cmVhbV9p
ZCkKKworICAgICAgICAjIGNoZWNrIGZsb3ctY29udHJvbCBsaW1pdHMKKyAgICAgICAgc3RyZWFt
ID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorICAg
ICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsOgor
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SLAorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgbmV3bHlf
cmVjZWl2ZWQgPSBtYXgoMCwgb2Zmc2V0ICsgbGVuZ3RoIC0gc3RyZWFtLl9yZWN2X2hpZ2hlc3Qp
CisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKyBuZXdseV9yZWNlaXZlZCA+
IHNlbGYuX2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05U
Uk9MX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJPdmVyIGNvbm5lY3Rpb24gZGF0YSBsaW1pdCIsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5h
cHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKz0gbmV3bHlf
cmVjZWl2ZWQKKworICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTV9EQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJl
YW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgc3Ry
ZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVh
bV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fZ2V0
X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgZGVmIF9oYW5k
bGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVFJFQU1TX0JMT0NLRUQgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNG
cmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9
bGltaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF9vbl9h
Y2tfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwg
c3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgaGlnaGVzdF9hY2tlZDogaW50CisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhbiBBQ0sgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSA9PSBR
dWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5zdWJ0
cmFjdCgwLCBoaWdoZXN0X2Fja2VkICsgMSkKKworICAgIGRlZiBfb25faGFuZHNoYWtlX2RvbmVf
ZGVsaXZlcnkoc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIEhBTkRTSEFLRV9ET05FIGZyYW1lIGlz
IGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkg
IT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
ZG9uZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9vbl9tYXhfZGF0YV9kZWxpdmVyeShzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX0RBVEEgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxv
c3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0
ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgPSAwCisKKyAg
ICBkZWYgX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZl
cnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX1NUUkVBTV9EQVRBIGZy
YW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVs
aXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSAwCisKKyAgICBkZWYgX29uX25ld19jb25uZWN0aW9u
X2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTkVXX0NPTk5FQ1RJT05fSUQgZnJhbWUgaXMg
YWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAh
PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQud2Fz
X3NlbnQgPSBGYWxzZQorCisgICAgZGVmIF9vbl9waW5nX2RlbGl2ZXJ5KAorICAgICAgICBzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHVpZHM6IFNlcXVlbmNlW2ludF0KKyAgICAp
IC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgUElORyBmcmFt
ZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2
ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCJSZWNlaXZlZCBQSU5HJXMgcmVzcG9uc2UiLCAiIiBpZiB1aWRzIGVsc2UgIiAocHJv
YmUpIikKKyAgICAgICAgICAgIGZvciB1aWQgaW4gdWlkczoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9ldmVudHMuYXBwZW5kKGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKHVpZD11aWQpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmV4dGVuZCh1aWRzKQorCisg
ICAgZGVmIF9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwg
ZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzZXF1ZW5jZV9udW1iZXI6IGludAorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBSRVRJUkVfQ09O
TkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAg
ICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFwcGVuZChzZXF1ZW5jZV9udW1iZXIpCisK
KyAgICBkZWYgX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNS
ZWNlaXZlQ29udGV4dCwgcGxhaW46IGJ5dGVzCisgICAgKSAtPiBUdXBsZVtib29sLCBib29sXToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgcGFja2V0IHBheWxvYWQuCisgICAg
ICAgICIiIgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1wbGFpbikKKworICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nID0gRmFsc2UKKyAgICAgICAgaXNfcHJvYmluZyA9IE5vbmUKKyAgICAgICAg
d2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgdHlwZSBpcyBrbm93bgorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIsIGZyYW1lX2Vwb2No
cyA9IHNlbGYuX19mcmFtZV9oYW5kbGVyc1tmcmFtZV90eXBlXQorICAgICAgICAgICAgZXhjZXB0
IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9M
QVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5rbm93biBmcmFtZSB0eXBlIiwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgaXMgYWxsb3dlZCBmb3Ig
dGhlIGVwb2NoCisgICAgICAgICAgICBpZiBjb250ZXh0LmVwb2NoIG5vdCBpbiBmcmFtZV9lcG9j
aHM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIGZyYW1lIHR5cGUiLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGZyYW1lCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlcihjb250ZXh0LCBmcmFtZV90eXBlLCBi
dWYpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiLAorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgQUNLIG9ubHkgLyBwcm9iaW5nIGZsYWdzCisgICAgICAgICAgICBpZiBm
cmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAg
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBmcmFtZV90
eXBlIG5vdCBpbiBQUk9CSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgICAgIGlzX3Byb2Jp
bmcgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBpc19wcm9iaW5nIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgaXNfcHJvYmluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gaXNfYWNrX2VsaWNp
dGluZywgYm9vbChpc19wcm9iaW5nKQorCisgICAgZGVmIF9yZXBsZW5pc2hfY29ubmVjdGlvbl9p
ZHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIG5ldyBjb25u
ZWN0aW9uIElEcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9ob3N0X2Np
ZHMpIDwgbWluKDgsIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCk6Cisg
ICAgICAgICAgICBzZWxmLl9ob3N0X2NpZHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIFF1aWND
b25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgICAgIGNpZD1vcy51cmFuZG9tKHNlbGYuX2Nv
bmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXI9c2VsZi5faG9zdF9jaWRfc2VxLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRfc2VxICs9IDEKKworICAg
IGRlZiBfcHVzaF9jcnlwdG9fZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAgICBmb3IgZXBvY2gs
IGJ1ZiBpbiBzZWxmLl9jcnlwdG9fYnVmZmVycy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5f
Y3J5cHRvX3N0cmVhbXNbZXBvY2hdLndyaXRlKGJ1Zi5kYXRhKQorICAgICAgICAgICAgYnVmLnNl
ZWsoMCkKKworICAgIGRlZiBfc2VuZF9wcm9iZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9wYXJzZV90cmFuc3BvcnRfcGFyYW1l
dGVycygKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGZyb21fc2Vzc2lvbl90aWNrZXQ6IGJv
b2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWRhdGEpLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQor
CisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lIGFuZCBub3QgZnJvbV9zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0
IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAorICAgICAgICAgICAg
ICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgICAgICBvd25lcj0icmVtb3RlIiwgcGFyYW1ldGVycz1xdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIHZhbGlkYXRlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAgIGlmICgKKyAgICAgICAg
ICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIG5vdCBmcm9tX3Nlc3Npb25fdGlj
a2V0CisgICAgICAgICAgICBhbmQgKAorICAgICAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAgICAgICE9IHNlbGYu
X29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlRSQU5TUE9SVF9QQVJBTUVURVJfRVJST1IsCisgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGRvZXMgbm90IG1hdGNoIiwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIHN0b3JlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAg
IGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWNrX2RlbGF5X2V4cG9uZW50IGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCA9IHNlbGYu
X3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9ICgKKyAgICAgICAg
ICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0CisgICAgICAgICAgICApCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMu
aWRsZV90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2lkbGVf
dGltZW91dCA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuaWRsZV90aW1lb3V0IC8gMTAwMC4w
CisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvc3MubWF4X2Fja19kZWxheSA9IHF1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSAvIDEwMDAuMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgPSAoCisgICAgICAgICAgICBxdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplCisgICAgICAgICkKKyAgICAg
ICAgZm9yIHBhcmFtIGluIFsKKyAgICAgICAgICAgICJtYXhfZGF0YSIsCisgICAgICAgICAgICAi
bWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1fZGF0
YV9iaWRpX3JlbW90ZSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX3VuaSIsCisgICAg
ICAgICAgICAibWF4X3N0cmVhbXNfYmlkaSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbXNfdW5p
IiwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihxdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLCAiaW5pdGlhbF8iICsgcGFyYW0pCisgICAgICAgICAgICBpZiB2YWx1ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJfcmVtb3RlXyIgKyBw
YXJhbSwgdmFsdWUpCisKKyAgICBkZWYgX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFyYW1ldGVycyhz
ZWxmKSAtPiBieXRlczoKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycyA9IFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50PXNlbGYu
X2xvY2FsX2Fja19kZWxheV9leHBvbmVudCwKKyAgICAgICAgICAgIGFjdGl2ZV9jb25uZWN0aW9u
X2lkX2xpbWl0PXNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0LAorICAgICAg
ICAgICAgaWRsZV90aW1lb3V0PWludChzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dCAq
IDEwMDApLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT1zZWxmLl9sb2NhbF9tYXhfZGF0
YSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwsCisgICAgICAgICAgICBpbml0aWFsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9yZW1vdGUsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVh
bXNfYmlkaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpLAorICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtc191bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pLAorICAgICAgICAg
ICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PXNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUsCisgICAgICAgICAg
ICBxdWFudHVtX3JlYWRpbmVzcz1iIlEiICogMTIwMAorICAgICAgICAgICAgaWYgc2VsZi5fY29u
ZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190ZXN0CisgICAgICAgICAgICBlbHNlIE5vbmUs
CisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9ICgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgICAgICAp
CisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAg
ICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9
InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAgICAgb3duZXI9
ImxvY2FsIiwgcGFyYW1ldGVycz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9
MyAqIFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzKAorICAgICAgICAgICAgYnVmLCBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLCBwcm90b2Nv
bF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorICAgICAgICByZXR1cm4gYnVmLmRh
dGEKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0YXRlOiBRdWljQ29ubmVjdGlvblN0YXRl
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIiVzIC0+ICVzIiwgc2VsZi5f
c3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICBkZWYgX3N0
cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAgICAgc3RyZWFtX2lk
CisgICAgICAgICkgIT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgc3RyZWFt
X2lkOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZCgKKyAgICAgICAgICAgIHN0cmVhbV9pZAorICAgICAgICApID09IHNlbGYuX2lzX2NsaWVu
dCBvciBub3Qgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCkKKworICAgIGRlZiBf
dW5ibG9ja19zdHJlYW1zKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sKSAtPiBOb25lOgor
ICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaQorICAgICAgICAgICAg
bWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pCisgICAgICAgICAgICBz
dHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9z
dHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2Vs
Zi5fc3RyZWFtc19ibG9ja2VkX2JpZGkKKworICAgICAgICB3aGlsZSBzdHJlYW1zX2Jsb2NrZWQg
YW5kIHN0cmVhbXNfYmxvY2tlZFswXS5zdHJlYW1faWQgLy8gNCA8IG1heF9zdHJlYW1zOgorICAg
ICAgICAgICAgc3RyZWFtID0gc3RyZWFtc19ibG9ja2VkLnBvcCgwKQorICAgICAgICAgICAgc3Ry
ZWFtLmlzX2Jsb2NrZWQgPSBGYWxzZQorICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisKKyAgICAgICAgaWYgbm90IHNlbGYu
X3N0cmVhbXNfYmxvY2tlZF9iaWRpIGFuZCBub3Qgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaToK
KyAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKKworICAg
IGRlZiBfdXBkYXRlX3RyYWZmaWNfa2V5KAorICAgICAgICBzZWxmLAorICAgICAgICBkaXJlY3Rp
b246IHRscy5EaXJlY3Rpb24sCisgICAgICAgIGVwb2NoOiB0bHMuRXBvY2gsCisgICAgICAgIGNp
cGhlcl9zdWl0ZTogdGxzLkNpcGhlclN1aXRlLAorICAgICAgICBzZWNyZXQ6IGJ5dGVzLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBuZXcgdHJhZmZpYyBrZXlzIGFyZQorICAgICAgICBh
dmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gc2VsZi5f
Y29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlCisgICAgICAgIGlmIHNlY3JldHNfbG9nX2Zp
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYWJlbF9yb3cgPSBzZWxmLl9pc19jbGllbnQg
PT0gKGRpcmVjdGlvbiA9PSB0bHMuRGlyZWN0aW9uLkRFQ1JZUFQpCisgICAgICAgICAgICBsYWJl
bCA9IFNFQ1JFVFNfTEFCRUxTW2xhYmVsX3Jvd11bZXBvY2gudmFsdWVdCisgICAgICAgICAgICBz
ZWNyZXRzX2xvZ19maWxlLndyaXRlKAorICAgICAgICAgICAgICAgICIlcyAlcyAlc1xuIiAlIChs
YWJlbCwgc2VsZi50bHMuY2xpZW50X3JhbmRvbS5oZXgoKSwgc2VjcmV0LmhleCgpKQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZS5mbHVzaCgpCisKKyAgICAgICAg
Y3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgaWYgZGlyZWN0aW9uID09IHRs
cy5EaXJlY3Rpb24uRU5DUllQVDoKKyAgICAgICAgICAgIGNyeXB0by5zZW5kLnNldHVwKAorICAg
ICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsIHNlY3JldD1zZWNyZXQsIHZl
cnNpb249c2VsZi5fdmVyc2lvbgorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgY3J5cHRvLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWNp
cGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX3dyaXRlX2FwcGxpY2F0aW9uKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgbmV0d29ya19wYXRoOiBRdWljTmV0d29ya1BhdGgsIG5v
dzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0b19zdHJlYW06IE9wdGlvbmFs
W1F1aWNTdHJlYW1dID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5P
TkVfUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlw
dG9zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgY3J5cHRvX3N0cmVhbSA9IHNlbGYu
X2NyeXB0b19zdHJlYW1zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5
cGUgPSBQQUNLRVRfVFlQRV9PTkVfUlRUCisgICAgICAgIGVsaWYgc2VsZi5fY3J5cHRvc1t0bHMu
RXBvY2guWkVST19SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIGNyeXB0byA9IHNl
bGYuX2NyeXB0b3NbdGxzLkVwb2NoLlpFUk9fUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5cGUg
PSBQQUNLRVRfVFlQRV9aRVJPX1JUVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQorCisgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIGFwcGx5IHBhY2luZywgZXhjZXB0IGlmIHdl
IGhhdmUgQUNLcyB0byBzZW5kCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgTm9uZSBv
ciBzcGFjZS5hY2tfYXQgPj0gbm93OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhY2luZ19hdCA9
IHNlbGYuX2xvc3MuX3BhY2VyLm5leHRfc2VuZF90aW1lKG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0
bykKKworICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlOgorICAgICAgICAg
ICAgICAgICMgQUNLCisgICAgICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIG5vdCBOb25l
IGFuZCBzcGFjZS5hY2tfYXQgPD0gbm93OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKKworICAg
ICAgICAgICAgICAgICMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9o
YW5kc2hha2VfZG9uZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9o
YW5kc2hha2VfZG9uZV9mcmFtZShidWlsZGVyPWJ1aWxkZXIpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAgICAg
IyBQQVRIIENIQUxMRU5HRQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAg
ICAgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgYW5k
IG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgaXMgTm9uZQorICAgICAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA9IG9zLnVyYW5kb20oOCkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5nZT1jaGFsbGVuZ2UKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGgubG9jYWxf
Y2hhbGxlbmdlID0gY2hhbGxlbmdlCisKKyAgICAgICAgICAgICAgICAjIFBBVEggUkVTUE9OU0UK
KyAgICAgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9yZXNwb25zZV9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgY2hhbGxlbmdlPW5l
dHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgPSBOb25lCisKKyAg
ICAgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lECisgICAgICAgICAgICAgICAgZm9yIGNv
bm5lY3Rpb25faWQgaW4gc2VsZi5faG9zdF9jaWRzOgorICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgY29ubmVjdGlvbl9pZC53YXNfc2VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIFJFVElSRV9DT05ORUNUSU9O
X0lECisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzOgor
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBzZWxmLl9yZXRpcmVfY29ubmVj
dGlvbl9pZHMucG9wKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JldGlyZV9j
b25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLCBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICMgU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmc6CisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPVF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX0JJREksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0cmVhbXNf
YmxvY2tlZF91bmk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJlYW1z
X2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlw
ZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFs
c2UKKworICAgICAgICAgICAgICAgICMgTUFYX0RBVEEKKyAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb25uZWN0aW9uX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlKQorCisg
ICAgICAgICAgICAjIHN0cmVhbS1sZXZlbCBsaW1pdHMKKyAgICAgICAgICAgIGZvciBzdHJlYW0g
aW4gc2VsZi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9z
dHJlYW1fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1zdHJlYW0p
CisKKyAgICAgICAgICAgICMgUElORyAodXNlci1yZXF1ZXN0KQorICAgICAgICAgICAgaWYgc2Vs
Zi5fcGluZ19wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUo
YnVpbGRlciwgc2VsZi5fcGluZ19wZW5kaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdf
cGVuZGluZy5jbGVhcigpCisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUpCisgICAgICAgICAg
ICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Bp
bmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0icHJvYmUiKQorICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIENSWVBUTworICAgICAgICAg
ICAgaWYgY3J5cHRvX3N0cmVhbSBpcyBub3QgTm9uZSBhbmQgbm90IGNyeXB0b19zdHJlYW0uc2Vu
ZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY3J5cHRvX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBz
dHJlYW09Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBE
QVRBR1JBTQorICAgICAgICAgICAgd2hpbGUgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmc6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fZGF0YWdyYW1zX3BlbmRpbmdbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lU
SF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1zX3BlbmRpbmcucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IFF1
aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICAgICAgIyBTVFJFQU0KKyAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gc2VsZi5fc3RyZWFtcy52
YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyZWFtLmlzX2Jsb2NrZWQgYW5kIG5v
dCBzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3JlbW90ZV9tYXhfZGF0YV91c2VkICs9IHNlbGYuX3dyaXRlX3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vZmZzZXQ9bWluKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyBzZWxmLl9yZW1vdGVfbWF4X2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBidWlsZGVyLnBh
Y2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLl9wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9
bm93KQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2UoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBlcG9jaDogdGxzLkVwb2NoLCBub3c6IGZsb2F0CisgICAgKSAt
PiBOb25lOgorICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQorICAgICAgICBp
ZiBub3QgY3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGNyeXB0b19zdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9jaF0KKyAgICAgICAg
c3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5JTklUSUFMOgorICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlID0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRQorICAgICAgICAg
ICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykKKworICAgICAgICAg
ICAgIyBBQ0sKKyAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1z
cGFjZSwgbm93PW5vdykKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAgICAgICAgIGlmIG5v
dCBjcnlwdG9fc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1i
dWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKwor
ICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nCisgICAgICAgICAgICAgICAgYW5kIGVwb2NoID09IHRs
cy5FcG9jaC5IQU5EU0hBS0UKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX2hhbmRzaGFr
ZV9jb21wbGV0ZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9w
aW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgaWYgYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfd3JpdGVfYWNrX2Zy
YW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBjYWxj
dWxhdGUgQUNLIGRlbGF5CisgICAgICAgIGFja19kZWxheSA9IG5vdyAtIHNwYWNlLmxhcmdlc3Rf
cmVjZWl2ZWRfdGltZQorICAgICAgICBhY2tfZGVsYXlfZW5jb2RlZCA9IGludChhY2tfZGVsYXkg
KiAxMDAwMDAwKSA+PiBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQKKworICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ss
CisgICAgICAgICAgICBjYXBhY2l0eT1BQ0tfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBo
YW5kbGVyPXNlbGYuX29uX2Fja19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0o
c3BhY2UsIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0KSwKKyAgICAgICAgKQorICAgICAg
ICByYW5nZXMgPSBwdXNoX2Fja19mcmFtZShidWYsIHNwYWNlLmFja19xdWV1ZSwgYWNrX2RlbGF5
X2VuY29kZWQpCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5vbmUKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBy
YW5nZXM9c3BhY2UuYWNrX3F1ZXVlLCBkZWxheT1hY2tfZGVsYXkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBuZWVkIHRvIHRyaWdnZXIg
YW4gQUNLLW9mLUFDSworICAgICAgICBpZiByYW5nZXMgPiAxIGFuZCBidWlsZGVyLnBhY2tldF9u
dW1iZXIgJSA4ID09IDA6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5nX2ZyYW1lKGJ1aWxk
ZXIsIGNvbW1lbnQ9IkFDSy1vZi1BQ0sgdHJpZ2dlciIpCisKKyAgICBkZWYgX3dyaXRlX2Nvbm5l
Y3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQsCisgICAgICAgIGZyYW1lX3R5
cGU6IE9wdGlvbmFsW2ludF0sCisgICAgICAgIHJlYXNvbl9waHJhc2U6IHN0ciwKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHJlYXNvbl9ieXRlcyA9IHJlYXNvbl9waHJhc2UuZW5jb2RlKCJ1dGY4
IikKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGxlbihyZWFzb25fYnl0ZXMpCisKKyAgICAgICAg
aWYgZnJhbWVfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAor
ICAgICAgICAgICAgICAgIGNhcGFjaXR5PUFQUExJQ0FUSU9OX0NMT1NFX0ZSQU1FX0NBUEFDSVRZ
ICsgcmVhc29uX2xlbmd0aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKGVycm9yX2NvZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZWFzb25f
bGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5dGVzKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgICAgICAgICBj
YXBhY2l0eT1UUkFOU1BPUlRfQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25fbGVuZ3RoLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJyb3JfY29kZSkK
KyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgICAgICAgICBi
dWYucHVzaF91aW50X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0
ZXMocmVhc29uX2J5dGVzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2Rl
PWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9s
aW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTog
UXVpY1BhY2tldFNwYWNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFp
c2UgTUFYX0RBVEEgaWYgbmVlZGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbG9j
YWxfbWF4X2RhdGFfdXNlZCAqIDIgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAg
IHNlbGYuX2xvY2FsX21heF9kYXRhICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygiTG9jYWwgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgc2VsZi5fbG9jYWxfbWF4X2RhdGEpCisg
ICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgIT0gc2VsZi5fbG9jYWxfbWF4X2Rh
dGE6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9TUFY
X0RBVEFfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9t
YXhfZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4
X2RhdGFfc2VudCA9IHNlbGYuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShzZWxmLl9s
b2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2NyeXB0
b19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkgLT4gYm9vbDoKKyAg
ICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAzICsgc2l6ZV91aW50X3ZhcihzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCkKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkKQorICAgICAgICBpZiBmcmFtZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9
ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9k
ZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJh
bWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNldCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDApCisgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnVpbGRlci5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZyYW1lKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0
QnVpbGRlciwgZGF0YTogYnl0ZXMsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUKKyAgICApIC0+
IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIERBVEFHUkFNIGZyYW1lLgorCisg
ICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnJhbWUgd2FzIHByb2Nlc3NlZCwgRmFsc2Ugb3Ro
ZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGZyYW1lX3R5cGUgPT0gUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSAorICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkK
KyAgICAgICAgZnJhbWVfc2l6ZSA9IDEgKyBzaXplX3VpbnRfdmFyKGxlbmd0aCkgKyBsZW5ndGgK
KworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKGZyYW1lX3R5cGUsIGNhcGFjaXR5
PWZyYW1lX3NpemUpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbmd0aCkKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZGF0YSkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0aCkKKyAgICAgICAgICAgICkKKworICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2VfZG9uZV9mcmFtZShz
ZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlcikgLT4gTm9uZToKKyAgICAgICAgYnVpbGRl
ci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUs
CisgICAgICAgICAgICBjYXBhY2l0eT1IQU5EU0hBS0VfRE9ORV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25faGFuZHNoYWtlX2RvbmVfZGVsaXZlcnksCisgICAg
ICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtl
X2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9uZXdfY29ubmVj
dGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IHJldGlyZV9wcmlvcl90byA9IDAgICMgRklYTUUKKworICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09OTkVDVElPTl9JRCwK
KyAgICAgICAgICAgIGNhcGFjaXR5PU5FV19DT05ORUNUSU9OX0lEX0ZSQU1FX0NBUEFDSVRZLAor
ICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9uZXdfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwK
KyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oY29ubmVjdGlvbl9pZCwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyKQor
ICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZXRpcmVfcHJpb3JfdG8pCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQ4KGxlbihjb25uZWN0aW9uX2lkLmNpZCkpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGNvbm5lY3Rpb25faWQuY2lkKQorICAgICAgICBidWYucHVzaF9ieXRlcyhjb25uZWN0aW9uX2lk
LnN0YXRlbGVzc19yZXNldF90b2tlbikKKworICAgICAgICBjb25uZWN0aW9uX2lkLndhc19zZW50
ID0gVHJ1ZQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5Db25uZWN0aW9uSWRJ
c3N1ZWQoY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkpCisKKyAgICAgICAgIyBsb2cg
ZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkLAorICAgICAgICAg
ICAgICAgICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXI9Y29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1jb25uZWN0aW9uX2lkLnN0
YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK
KyAgICBkZWYgX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAgICkgLT4gTm9uZToK
KyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuUEFUSF9DSEFMTEVOR0UsIGNhcGFjaXR5PVBBVEhfQ0hBTExFTkdFX0ZSQU1FX0NBUEFD
SVRZCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY2hhbGxlbmdlKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShk
YXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGF0aF9yZXNw
b25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGNo
YWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsIGNhcGFj
aXR5PVBBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNf
bG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1jaGFsbGVuZ2UpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1
aWNQYWNrZXRCdWlsZGVyLCB1aWRzOiBMaXN0W2ludF0gPSBbXSwgY29tbWVudD0iIgorICAgICk6
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBl
LlBJTkcsCisgICAgICAgICAgICBjYXBhY2l0eT1QSU5HX0ZSQU1FX0NBUEFDSVRZLAorICAgICAg
ICAgICAgaGFuZGxlcj1zZWxmLl9vbl9waW5nX2RlbGl2ZXJ5LAorICAgICAgICAgICAgaGFuZGxl
cl9hcmdzPSh0dXBsZSh1aWRzKSwpLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICJTZW5kaW5nIFBJTkclcyBpbiBwYWNrZXQgJWQiLAorICAgICAg
ICAgICAgIiAoJXMpIiAlIGNvbW1lbnQgaWYgY29tbWVudCBlbHNlICIiLAorICAgICAgICAgICAg
YnVpbGRlci5wYWNrZXRfbnVtYmVyLAorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJhbWUK
KyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBi
dWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJh
bWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzZXF1ZW5jZV9u
dW1iZXI6IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisg
ICAgICAgICAgICBjYXBhY2l0eT1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBBQ0lUWSwKKyAgICAg
ICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRfZGVsaXZlcnksCisg
ICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHNlcXVlbmNlX251bWJlciwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNlcXVlbmNlX251bWJlcikKKworICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoc2Vx
dWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fZnJh
bWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBzdHJlYW06IFF1aWNTdHJl
YW0sCisgICAgICAgIG1heF9vZmZzZXQ6IGludCwKKyAgICApIC0+IGludDoKKyAgICAgICAgIyB0
aGUgZnJhbWUgZGF0YSBzaXplIGlzIGNvbnN0cmFpbmVkIGJ5IG91ciBwZWVyJ3MgTUFYX0RBVEEg
YW5kCisgICAgICAgICMgdGhlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwYWNrZXQK
KyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAoCisgICAgICAgICAgICAzCisgICAgICAgICAgICAr
IHNpemVfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAgICAgICsgKHNpemVfdWlu
dF92YXIoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQpIGlmIHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
IGVsc2UgMCkKKyAgICAgICAgKQorICAgICAgICBwcmV2aW91c19zZW5kX2hpZ2hlc3QgPSBzdHJl
YW0uX3NlbmRfaGlnaGVzdAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoCisgICAg
ICAgICAgICBidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFtZV9vdmVyaGVhZCwg
bWF4X29mZnNldAorICAgICAgICApCisKKyAgICAgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDIgICMg
bGVuZ3RoCisgICAgICAgICAgICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAgICAgICAgICAgZnJh
bWVfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSB8PSAxCisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9ZnJh
bWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9kZWxp
dmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJhbWUu
b2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAgICBpZiBmcmFtZS5v
ZmZzZXQ6CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWUub2Zmc2V0KQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8IDB4NDAwMCkKKyAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAgICMgbG9n
IGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0
dXJuIHN0cmVhbS5fc2VuZF9oaWdoZXN0IC0gcHJldmlvdXNfc2VuZF9oaWdoZXN0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fbGlt
aXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmFpc2UgTUFYX1NUUkVBTV9EQVRBIGlmIG5lZWRlZC4KKworICAgICAg
ICBUaGUgb25seSBjYXNlIHdoZXJlIGBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsYCBpcyB6
ZXJvIGlzIGZvcgorICAgICAgICBsb2NhbGx5IGNyZWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFt
cy4gV2Ugc2tpcCBzdWNoIHN0cmVhbXMgdG8gYXZvaWQKKyAgICAgICAgc3B1cmlvdXMgbG9nZ2lu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uX3JlY3ZfaGlnaGVzdCAqIDIg
PiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICk6CisgICAgICAgICAgICBz
dHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIGxvY2FsIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwKKyAgICAgICAgICAgICkK
KyAgICAgICAgaWYgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ICE9IHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAg
ICAgICAgICAgICAgIGNhcGFjaXR5PU1BWF9TVFJFQU1fREFUQV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHN0cmVhbSwpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwpCisgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBzdHJlYW0ubWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVy
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhpbXVtPXN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIHN0cmVhbV9pZD1z
dHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUsIGxp
bWl0OiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9U1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZKQorICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihsaW1pdCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBp
c191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9D
S0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNkMzU4NzM0YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkK
QEAgLTAsMCArMSwxOTYgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB0eXBpbmcgaW1wb3J0IE9w
dGlvbmFsLCBUdXBsZQorCitmcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwgQ3J5cHRvRXJyb3Is
IEhlYWRlclByb3RlY3Rpb24KK2Zyb20gLi50bHMgaW1wb3J0IENpcGhlclN1aXRlLCBjaXBoZXJf
c3VpdGVfaGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAorZnJvbSAucGFja2V0
IGltcG9ydCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIKKworQ0lQSEVSX1NV
SVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6IChiImFlcy0xMjgt
ZWNiIiwgYiJhZXMtMTI4LWdjbSIpLAorICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4
NDogKGIiYWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCisgICAgQ2lwaGVyU3VpdGUuQ0hB
Q0hBMjBfUE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hhMjAtcG9seTEzMDUi
KSwKK30KK0lOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hB
MjU2CitJTklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVmNzEyYzcyZWJiNWEx
MWE3ZDI0MzJiYjQ2MzY1YmVmOWY1MDIiKQorU0FNUExFX1NJWkUgPSAxNgorCisKK2NsYXNzIEtl
eVVuYXZhaWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgorICAgIHBhc3MKKworCitkZWYgZGVyaXZl
X2tleV9pdl9ocCgKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNyZXQ6IGJ5dGVz
CispIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgorICAgIGFsZ29yaXRobSA9IGNpcGhl
cl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICBpZiBjaXBoZXJfc3VpdGUgaW4gWworICAg
ICAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAgIENpcGhlclN1aXRl
LkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICBdOgorICAgICAgICBrZXlfc2l6ZSA9IDMy
CisgICAgZWxzZToKKyAgICAgICAga2V5X3NpemUgPSAxNgorICAgIHJldHVybiAoCisgICAgICAg
IGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMga2V5IiwgYiIiLCBr
ZXlfc2l6ZSksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBi
InF1aWMgaXYiLCBiIiIsIDEyKSwKKyAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGht
LCBzZWNyZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAorICAgICkKKworCitjbGFzcyBD
cnlwdG9Db250ZXh0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhhc2U6IGludCA9IDAp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0gPSBOb25lCisgICAg
ICAgIHNlbGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9uZQorICAgICAgICBz
ZWxmLmtleV9waGFzZSA9IGtleV9waGFzZQorICAgICAgICBzZWxmLnNlY3JldDogT3B0aW9uYWxb
Ynl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25l
CisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMs
IGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAg
KSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06CisgICAgICAgIGlmIHNlbGYuYWVh
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVFcnJvcigiRGVjcnlw
dGlvbiBrZXkgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlv
bgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxmLmhwLnJlbW92ZShw
YWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQpCisgICAgICAgIGZpcnN0X2J5dGUgPSBwbGFpbl9oZWFk
ZXJbMF0KKworICAgICAgICAjIHBhY2tldCBudW1iZXIKKyAgICAgICAgcG5fbGVuZ3RoID0gKGZp
cnN0X2J5dGUgJiAweDAzKSArIDEKKyAgICAgICAgcGFja2V0X251bWJlciA9IGRlY29kZV9wYWNr
ZXRfbnVtYmVyKAorICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVuZ3RoICogOCwgZXhw
ZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgIyBkZXRlY3Qga2V5IHBo
YXNlIGNoYW5nZQorICAgICAgICBjcnlwdG8gPSBzZWxmCisgICAgICAgIGlmIG5vdCBpc19sb25n
X2hlYWRlcihmaXJzdF9ieXRlKToKKyAgICAgICAgICAgIGtleV9waGFzZSA9IChmaXJzdF9ieXRl
ICYgNCkgPj4gMgorICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYua2V5X3BoYXNlOgor
ICAgICAgICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYpCisKKyAgICAgICAg
IyBwYXlsb2FkIHByb3RlY3Rpb24KKyAgICAgICAgcGF5bG9hZCA9IGNyeXB0by5hZWFkLmRlY3J5
cHQoCisgICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0sIHBsYWluX2hlYWRl
ciwgcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRl
ciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKKworICAgIGRlZiBlbmNy
eXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5
bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6CisgICAgICAg
IGFzc2VydCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxl
IgorCisgICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHByb3RlY3RlZF9wYXls
b2FkID0gc2VsZi5hZWFkLmVuY3J5cHQoCisgICAgICAgICAgICBwbGFpbl9wYXlsb2FkLCBwbGFp
bl9oZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgICMgaGVhZGVyIHBy
b3RlY3Rpb24KKyAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5faGVhZGVyLCBwcm90
ZWN0ZWRfcGF5bG9hZCkKKworICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCisKKyAgICBkZWYgc2V0dXAoc2VsZiwgY2lw
aGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lvbjogaW50KSAtPiBO
b25lOgorICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFtZSA9IENJUEhFUl9T
VUlURVNbY2lwaGVyX3N1aXRlXQorCisgICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9p
dl9ocChjaXBoZXJfc3VpdGUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hZWFkID0gQUVBRChhZWFk
X2NpcGhlcl9uYW1lLCBrZXksIGl2KQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhl
cl9zdWl0ZQorICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbihocF9jaXBoZXJfbmFt
ZSwgaHApCisgICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0CisgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24KKworICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmFlYWQgPSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gTm9uZQorICAgICAg
ICBzZWxmLmhwID0gTm9uZQorICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUKKworCitkZWYgYXBw
bHlfa2V5X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5cHRvQ29udGV4dCkg
LT4gTm9uZToKKyAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAorICAgIHNlbGYua2V5X3BoYXNl
ID0gY3J5cHRvLmtleV9waGFzZQorICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRvLnNlY3JldAorCisK
K2RlZiBuZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBDcnlwdG9Db250ZXh0
OgorICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lwaGVyX3N1aXRlKQor
CisgICAgY3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5vdCBzZWxmLmtleV9w
aGFzZSkpCisgICAgY3J5cHRvLnNldHVwKAorICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5jaXBo
ZXJfc3VpdGUsCisgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAg
IGFsZ29yaXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplCisgICAgICAgICksCisgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAorICAgICkK
KyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3MgQ3J5cHRvUGFpcjoKKyAgICBkZWYgX19pbml0
X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXplID0gMTYKKyAgICAg
ICAgc2VsZi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYuc2VuZCA9IENyeXB0
b0NvbnRleHQoKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCisK
KyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVu
Y3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAgKSAt
PiBUdXBsZVtieXRlcywgYnl0ZXMsIGludF06CisgICAgICAgIHBsYWluX2hlYWRlciwgcGF5bG9h
ZCwgcGFja2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNyeXB0X3BhY2tldCgK
KyAgICAgICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0ZWRfcGFja2V0X251
bWJlcgorICAgICAgICApCisgICAgICAgIGlmIHVwZGF0ZV9rZXk6CisgICAgICAgICAgICBzZWxm
Ll91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFj
a2V0X251bWJlcgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwbGFp
bl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjogaW50
CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQ6
CisgICAgICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vu
ZC5lbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1i
ZXIpCisKKyAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVzLCBpc19jbGllbnQ6
IGJvb2wsIHZlcnNpb246IGludCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAg
ICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGluIiwgYiJjbGllbnQg
aW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xhYmVsID0g
YiJjbGllbnQgaW4iLCBiInNlcnZlciBpbiIKKworICAgICAgICBhbGdvcml0aG0gPSBjaXBoZXJf
c3VpdGVfaGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKKyAgICAgICAgaW5pdGlhbF9zZWNyZXQg
PSBoa2RmX2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkKKyAgICAgICAgc2Vs
Zi5yZWN2LnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NV
SVRFLAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAg
ICAgIGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIiIiwgYWxnb3JpdGht
LmRpZ2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9u
LAorICAgICAgICApCisgICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhl
cl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCBz
ZW5kX2xhYmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgKQorCisgICAgZGVmIHRlYXJkb3du
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigpCisgICAgICAgIHNl
bGYuc2VuZC50ZWFyZG93bigpCisKKyAgICBkZWYgdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgorICAgICAgICBpZiBzZWxmLl91cGRh
dGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHJldHVybiBpbnQobm90IHNlbGYucmVjdi5r
ZXlfcGhhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWN2Lmtl
eV9waGFzZQorCisgICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFw
cGx5X2tleV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYucmVjdikpCisgICAg
ICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNlKHNlbGYuc2VuZCkp
CisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMwNjkzOTM2YzE4ODE2YWUx
MTgzMjZkMmEyMjUxMjk1MjQ1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitmcm9tIGRhdGFjbGFz
c2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCisKK2Ns
YXNzIFF1aWNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBRVUlDIGV2ZW50cy4K
KyAgICAiIiIKKworICAgIHBhc3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uSWRJ
c3N1ZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9uX2lkOiBieXRlcworCisKK0BkYXRhY2xh
c3MKK2NsYXNzIENvbm5lY3Rpb25JZFJldGlyZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9u
X2lkOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25UZXJtaW5hdGVkKFF1
aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIENvbm5lY3Rpb25UZXJtaW5hdGVkIGV2ZW50IGlz
IGZpcmVkIHdoZW4gdGhlIFFVSUMgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkLgorICAgICIiIgor
CisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHdoaWNoIHdhcyBzcGVj
aWZpZWQgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiIKKworICAgIGZyYW1lX3R5cGU6IE9w
dGlvbmFsW2ludF0KKyAgICAiVGhlIGZyYW1lIHR5cGUgd2hpY2ggY2F1c2VkIHRoZSBjb25uZWN0
aW9uIHRvIGJlIGNsb3NlZCwgb3IgYE5vbmVgLiIKKworICAgIHJlYXNvbl9waHJhc2U6IHN0cgor
ICAgICJUaGUgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB3aGljaCB0aGUgY29ubmVjdGlvbiB3
YXMgY2xvc2VkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
UXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YWdyYW1GcmFtZVJlY2VpdmVkIGV2ZW50
IGlzIGZpcmVkIHdoZW4gYSBEQVRBR1JBTSBmcmFtZSBpcyByZWNlaXZlZC4KKyAgICAiIiIKKwor
ICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKwor
QGRhdGFjbGFzcworY2xhc3MgSGFuZHNoYWtlQ29tcGxldGVkKFF1aWNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIEhhbmRzaGFrZUNvbXBsZXRlZCBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBUTFMg
aGFuZHNoYWtlIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlv
bmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFM
UE4sIG9yIGBOb25lYC4iCisKKyAgICBlYXJseV9kYXRhX2FjY2VwdGVkOiBib29sCisgICAgIldo
ZXRoZXIgZWFybHkgKDAtUlRUKSBkYXRhIHdhcyBhY2NlcHRlZCBieSB0aGUgcmVtb3RlIHBlZXIu
IgorCisgICAgc2Vzc2lvbl9yZXN1bWVkOiBib29sCisgICAgIldoZXRoZXIgYSBUTFMgc2Vzc2lv
biB3YXMgcmVzdW1lZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUGluZ0Fja25vd2xlZGdlZChR
dWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrbm93bGVkZ2VkIGV2ZW50IGlzIGZp
cmVkIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZC4KKyAgICAiIiIKKworICAgIHVp
ZDogaW50CisgICAgIlRoZSB1bmlxdWUgSUQgb2YgdGhlIFBJTkcuIgorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIFByb3RvY29sTmVnb3RpYXRlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQ
cm90b2NvbE5lZ290aWF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBBTFBOIG5lZ290aWF0aW9uIGNv
bXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0KKyAg
ICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFMUE4sIG9yIGBOb25l
YC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgU3RyZWFtRGF0YVJlY2VpdmVkKFF1aWNFdmVudCk6
CisgICAgIiIiCisgICAgVGhlIFN0cmVhbURhdGFSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVu
ZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEKKyAgICBzdHJlYW0uCisgICAgIiIiCisKKyAgICBk
YXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgorCisgICAgZW5k
X3N0cmVhbTogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4g
Yml0IHNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQgb2YgdGhlIHN0cmVh
bSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBTdHJl
YW1SZXNldChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1SZXNldCBldmVudCBp
cyBmaXJlZCB3aGVuIHRoZSByZW1vdGUgcGVlciByZXNldHMgYSBzdHJlYW0uCisgICAgIiIiCisK
KyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAiVGhlIGVycm9yIGNvZGUgdGhhdCB0cmlnZ2VyZWQg
dGhlIHJlc2V0LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3Ry
ZWFtIHRoYXQgd2FzIHJlc2V0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDk3NWJkNTkyZTFjMDg3ODI1Y2Q5NWM2MDNjNjkwNmE3NDNkYjgxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5
CkBAIC0wLDAgKzEsMjY2IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0aW1lCitmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGVxdWUsIERp
Y3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5wYWNrZXQgaW1wb3J0ICgKKyAgICBQ
QUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNL
RVRfVFlQRV9NQVNLLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVf
UkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQsCisgICAgUXVpY1N0cmVhbUZyYW1lLAor
ICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorKQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJh
bmdlU2V0CisKK1BBQ0tFVF9UWVBFX05BTUVTID0geworICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUw6
ICJpbml0aWFsIiwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6ICJoYW5kc2hha2UiLAorICAg
IFBBQ0tFVF9UWVBFX1pFUk9fUlRUOiAiMFJUVCIsCisgICAgUEFDS0VUX1RZUEVfT05FX1JUVDog
IjFSVFQiLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZOiAicmV0cnkiLAorfQorCisKK2RlZiBoZXhk
dW1wKGRhdGE6IGJ5dGVzKSAtPiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkoZGF0
YSkuZGVjb2RlKCJhc2NpaSIpCisKKworY2xhc3MgUXVpY0xvZ2dlclRyYWNlOgorICAgICIiIgor
ICAgIEEgUVVJQyBldmVudCB0cmFjZS4KKworICAgIEV2ZW50cyBhcmUgbG9nZ2VkIGluIHRoZSBm
b3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2VlOiBodHRwczovL3F1aWNs
b2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFsb2ctZXZlbnQtZGVmaW5p
dGlvbnMtcXVpYy1oMy5odG1sCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwg
aXNfY2xpZW50OiBib29sLCBvZGNpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX29k
Y2lkID0gb2RjaWQKKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtUdXBsZVtmbG9hdCwgc3Ry
LCBzdHIsIERpY3Rbc3RyLCBBbnldXV0gPSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX3ZhbnRhZ2Vf
cG9pbnQgPSB7CisgICAgICAgICAgICAibmFtZSI6ICJhaW9xdWljIiwKKyAgICAgICAgICAgICJ0
eXBlIjogImNsaWVudCIgaWYgaXNfY2xpZW50IGVsc2UgInNlcnZlciIsCisgICAgICAgIH0KKwor
ICAgIGRlZiBlbmNvZGVfYWNrX2ZyYW1lKHNlbGYsIHJhbmdlczogUmFuZ2VTZXQsIGRlbGF5OiBm
bG9hdCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJhY2tfZGVsYXki
OiBzdHIoc2VsZi5lbmNvZGVfdGltZShkZWxheSkpLAorICAgICAgICAgICAgImFja2VkX3Jhbmdl
cyI6IFtbc3RyKHguc3RhcnQpLCBzdHIoeC5zdG9wIC0gMSldIGZvciB4IGluIHJhbmdlc10sCisg
ICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJhY2siLAorICAgICAgICB9CisKKyAgICBkZWYgZW5j
b2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGlu
dCwgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwgcmVhc29uX3BocmFzZTogc3RyCisgICAgKSAt
PiBEaWN0OgorICAgICAgICBhdHRycyA9IHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJy
b3JfY29kZSwKKyAgICAgICAgICAgICJlcnJvcl9zcGFjZSI6ICJhcHBsaWNhdGlvbiIgaWYgZnJh
bWVfdHlwZSBpcyBOb25lIGVsc2UgInRyYW5zcG9ydCIsCisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJjb25uZWN0aW9uX2Nsb3NlIiwKKyAgICAgICAgICAgICJyYXdfZXJyb3JfY29kZSI6IGVy
cm9yX2NvZGUsCisgICAgICAgICAgICAicmVhc29uIjogcmVhc29uX3BocmFzZSwKKyAgICAgICAg
fQorICAgICAgICBpZiBmcmFtZV90eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXR0cnNb
InRyaWdnZXJfZnJhbWVfdHlwZSJdID0gZnJhbWVfdHlwZQorCisgICAgICAgIHJldHVybiBhdHRy
cworCisgICAgZGVmIGVuY29kZV9jcnlwdG9fZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1G
cmFtZSkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBl
IjogImNyeXB0byIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGZyYW1lLmRhdGEpLAorICAg
ICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBsaW1pdDogaW50KSAtPiBEaWN0Ogor
ICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFfYmxvY2tlZCIsICJsaW1pdCI6IHN0
cihsaW1pdCl9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFncmFtX2ZyYW1lKHNlbGYsIGxlbmd0aDog
aW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFncmFtIiwg
Imxlbmd0aCI6IGxlbmd0aH0KKworICAgIGRlZiBlbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUo
c2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJoYW5kc2hha2Vf
ZG9uZSJ9CisKKyAgICBkZWYgZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYsIG1heGltdW06IGlu
dCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJtYXhfZGF0YSIsICJt
YXhpbXVtIjogc3RyKG1heGltdW0pfQorCisgICAgZGVmIGVuY29kZV9tYXhfc3RyZWFtX2RhdGFf
ZnJhbWUoc2VsZiwgbWF4aW11bTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogIm1heF9zdHJlYW1fZGF0YSIs
CisgICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAgICAgICAgICJzdHJl
YW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9tYXhf
c3RyZWFtc19mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCwgbWF4aW11bTogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAi
bWF4X3N0cmVhbXMiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4aW11bSksCisgICAg
ICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlmIGlzX3VuaWRpcmVjdGlv
bmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX25l
d19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBjb25uZWN0aW9u
X2lkOiBieXRlcywKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvOiBpbnQsCisgICAgICAgIHNlcXVl
bmNlX251bWJlcjogaW50LAorICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzLAor
ICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25uZWN0aW9u
X2lkIjogaGV4ZHVtcChjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjog
Im5ld19jb25uZWN0aW9uX2lkIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oY29ubmVjdGlv
bl9pZCksCisgICAgICAgICAgICAicmVzZXRfdG9rZW4iOiBoZXhkdW1wKHN0YXRlbGVzc19yZXNl
dF90b2tlbiksCisgICAgICAgICAgICAicmV0aXJlX3ByaW9yX3RvIjogc3RyKHJldGlyZV9wcmlv
cl90byksCisgICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNlcXVlbmNlX251bWJl
ciksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X3Rva2VuX2ZyYW1lKHNlbGYsIHRv
a2VuOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFt
ZV90eXBlIjogIm5ld190b2tlbiIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKHRva2VuKSwK
KyAgICAgICAgICAgICJ0b2tlbiI6IGhleGR1bXAodG9rZW4pLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX3BhZGRpbmdfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsi
ZnJhbWVfdHlwZSI6ICJwYWRkaW5nIn0KKworICAgIGRlZiBlbmNvZGVfcGF0aF9jaGFsbGVuZ2Vf
ZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImRhdGEi
OiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJwYXRoX2NoYWxsZW5nZSJ9CisKKyAgICBk
ZWYgZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6
CisgICAgICAgIHJldHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJw
YXRoX3Jlc3BvbnNlIn0KKworICAgIGRlZiBlbmNvZGVfcGluZ19mcmFtZShzZWxmKSAtPiBEaWN0
OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBpbmcifQorCisgICAgZGVmIGVuY29k
ZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGludCwgZmlu
YWxfc2l6ZTogaW50LCBzdHJlYW1faWQ6IGludAorICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAg
ICJmaW5hbF9zaXplIjogc3RyKGZpbmFsX3NpemUpLAorICAgICAgICAgICAgImZyYW1lX3R5cGUi
OiAicmVzZXRfc3RyZWFtIiwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lk
KSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFt
ZShzZWxmLCBzZXF1ZW5jZV9udW1iZXI6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInJldGlyZV9jb25uZWN0aW9uX2lkIiwKKyAgICAg
ICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgICAg
fQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYsIGxpbWl0
OiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtX2RhdGFfYmxvY2tlZCIsCisgICAgICAgICAgICAi
bGltaXQiOiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1f
aWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZShzZWxm
LCBlcnJvcl9jb2RlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RvcF9zZW5kaW5nIiwKKyAgICAgICAg
ICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBz
dHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZmluIjogZnJhbWUuZmluLAorICAgICAgICAg
ICAgImZyYW1lX3R5cGUiOiAic3RyZWFtIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oZnJh
bWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9mZnNldCksCisgICAg
ICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRl
ZiBlbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBi
b29sLCBsaW1pdDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ImZyYW1lX3R5cGUiOiAic3RyZWFtc19ibG9ja2VkIiwKKyAgICAgICAgICAgICJsaW1pdCI6IHN0
cihsaW1pdCksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlm
IGlzX3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAg
ICBkZWYgZW5jb2RlX3RpbWUoc2VsZiwgc2Vjb25kczogZmxvYXQpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIENvbnZlcnQgYSB0aW1lIHRvIGludGVnZXIgbWljcm9zZWNvbmRzLgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWNvbmRzICogMTAwMDAwMCkKKworICAgIGRl
ZiBlbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgIHNlbGYsIG93bmVyOiBzdHIs
IHBhcmFtZXRlcnM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzCisgICAgKSAtPiBEaWN0W3N0ciwg
QW55XToKKyAgICAgICAgZGF0YTogRGljdFtzdHIsIEFueV0gPSB7Im93bmVyIjogb3duZXJ9Cisg
ICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBwYXJhbWV0ZXJzLl9fZGljdF9f
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBib29sKToK
KyAgICAgICAgICAgICAgICBkYXRhW3BhcmFtX25hbWVdID0gcGFyYW1fdmFsdWUKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYnl0ZXMpOgorICAgICAgICAgICAgICAg
IGRhdGFbcGFyYW1fbmFtZV0gPSBoZXhkdW1wKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBpbnQpOgorICAgICAgICAgICAgICAgIGRhdGFbcGFy
YW1fbmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGxv
Z19ldmVudChzZWxmLCAqLCBjYXRlZ29yeTogc3RyLCBldmVudDogc3RyLCBkYXRhOiBEaWN0KSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCh0aW1lLnRpbWUoKSwgY2F0ZWdv
cnksIGV2ZW50LCBkYXRhKSkKKworICAgIGRlZiBwYWNrZXRfdHlwZShzZWxmLCBwYWNrZXRfdHlw
ZTogaW50KSAtPiBzdHI6CisgICAgICAgIHJldHVybiBQQUNLRVRfVFlQRV9OQU1FUy5nZXQocGFj
a2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLLCAiMVJUVCIpCisKKyAgICBkZWYgdG9fZGljdChz
ZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUg
dHJhY2UgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9ldmVudHM6CisgICAgICAgICAgICByZWZlcmVuY2Vf
dGltZSA9IHNlbGYuX2V2ZW50c1swXVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVm
ZXJlbmNlX3RpbWUgPSAwLjAKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25maWd1
cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAgICAiY29tbW9uX2ZpZWxk
cyI6IHsKKyAgICAgICAgICAgICAgICAiT0RDSUQiOiBoZXhkdW1wKHNlbGYuX29kY2lkKSwKKyAg
ICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiBzdHIoc2VsZi5lbmNvZGVfdGltZShyZWZl
cmVuY2VfdGltZSkpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJldmVudF9maWVsZHMi
OiBbInJlbGF0aXZlX3RpbWUiLCAiY2F0ZWdvcnkiLCAiZXZlbnRfdHlwZSIsICJkYXRhIl0sCisg
ICAgICAgICAgICAiZXZlbnRzIjogbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgICAgIGxhbWJkYSBldmVudDogKAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
KHNlbGYuZW5jb2RlX3RpbWUoZXZlbnRbMF0gLSByZWZlcmVuY2VfdGltZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFsy
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzNdLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJ2YW50YWdlX3BvaW50Ijogc2VsZi5fdmFu
dGFnZV9wb2ludCwKKyAgICAgICAgfQorCisKK2NsYXNzIFF1aWNMb2dnZXI6CisgICAgIiIiCisg
ICAgQSBRVUlDIGV2ZW50IGxvZ2dlci4KKworICAgIFNlcnZlcyBhcyBhIGNvbnRhaW5lciBmb3Ig
dHJhY2VzIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2Vl
OiBodHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFs
b2ctbWFpbi1zY2hlbWEuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYWNlczogTGlzdFtRdWljTG9nZ2VyVHJhY2VdID0gW10K
KworICAgIGRlZiBzdGFydF90cmFjZShzZWxmLCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRl
cykgLT4gUXVpY0xvZ2dlclRyYWNlOgorICAgICAgICB0cmFjZSA9IFF1aWNMb2dnZXJUcmFjZShp
c19jbGllbnQ9aXNfY2xpZW50LCBvZGNpZD1vZGNpZCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLmFw
cGVuZCh0cmFjZSkKKyAgICAgICAgcmV0dXJuIHRyYWNlCisKKyAgICBkZWYgZW5kX3RyYWNlKHNl
bGYsIHRyYWNlOiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCB0cmFj
ZSBpbiBzZWxmLl90cmFjZXMsICJRdWljTG9nZ2VyVHJhY2UgZG9lcyBub3QgYmVsb25nIHRvIFF1
aWNMb2dnZXIiCisKKyAgICBkZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdHJhY2VzIGFzIGEgZGljdGlvbmFyeSB3aGlj
aCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLAorICAgICAgICAgICAgInRy
YWNlcyI6IFt0cmFjZS50b19kaWN0KCkgZm9yIHRyYWNlIGluIHNlbGYuX3RyYWNlc10sCisgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYwYmNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CkBAIC0wLDAgKzEsNTA4
IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBvcworZnJvbSBk
YXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zy
b20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNHQ00KKworZnJvbSAu
LmJ1ZmZlciBpbXBvcnQgQnVmZmVyCitmcm9tIC4udGxzIGltcG9ydCBwdWxsX2Jsb2NrLCBwdXNo
X2Jsb2NrCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFDS0VUX0xPTkdfSEVB
REVSID0gMHg4MAorUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKK1BBQ0tFVF9TUElOX0JJVCA9IDB4
MjAKKworUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBBQ0tFVF9G
SVhFRF9CSVQgfCAweDAwCitQQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tFVF9MT05HX0hFQURF
UiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCitQQUNLRVRfVFlQRV9IQU5EU0hBS0UgPSBQQUNL
RVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAorUEFDS0VUX1RZUEVfUkVU
UlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgzMAorUEFDS0VU
X1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKK1BBQ0tFVF9UWVBFX01BU0sgPSAweEYw
CisKK0NPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAorUEFDS0VUX05VTUJFUl9NQVhfU0laRSA9
IDQKK1JFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMyZWNkYjJhMjEzM2M4
NDFlNDA0M2RmMjdkNDQzMCIpCitSRVRSWV9BRUFEX05PTkNFID0gYmluYXNjaWkudW5oZXhsaWZ5
KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQorUkVUUllfSU5URUdSSVRZX1RBR19TSVpFID0g
MTYKKworCitjbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgorICAgIE5PX0VSUk9SID0gMHgw
CisgICAgSU5URVJOQUxfRVJST1IgPSAweDEKKyAgICBTRVJWRVJfQlVTWSA9IDB4MgorICAgIEZM
T1dfQ09OVFJPTF9FUlJPUiA9IDB4MworICAgIFNUUkVBTV9MSU1JVF9FUlJPUiA9IDB4NAorICAg
IFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQorICAgIEZJTkFMX1NJWkVfRVJST1IgPSAweDYKKyAg
ICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NworICAgIFRSQU5TUE9SVF9QQVJBTUVURVJfRVJS
T1IgPSAweDgKKyAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5CisgICAgUFJPVE9D
T0xfVklPTEFUSU9OID0gMHhBCisgICAgSU5WQUxJRF9UT0tFTiA9IDB4QgorICAgIENSWVBUT19C
VUZGRVJfRVhDRUVERUQgPSAweEQKKyAgICBDUllQVE9fRVJST1IgPSAweDEwMAorCisKK2NsYXNz
IFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6CisgICAgTkVHT1RJQVRJT04gPSAwCisgICAg
RFJBRlRfMjUgPSAweEZGMDAwMDE5CisgICAgRFJBRlRfMjYgPSAweEZGMDAwMDFBCisgICAgRFJB
RlRfMjcgPSAweEZGMDAwMDFCCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0hlYWRlcjoKKyAg
ICBpc19sb25nX2hlYWRlcjogYm9vbAorICAgIHZlcnNpb246IE9wdGlvbmFsW2ludF0KKyAgICBw
YWNrZXRfdHlwZTogaW50CisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcworICAgIHNvdXJjZV9j
aWQ6IGJ5dGVzCisgICAgdG9rZW46IGJ5dGVzID0gYiIiCisgICAgaW50ZWdyaXR5X3RhZzogYnl0
ZXMgPSBiIiIKKyAgICByZXN0X2xlbmd0aDogaW50ID0gMAorCisKK2RlZiBkZWNvZGVfcGFja2V0
X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0ZWQ6IGludCkgLT4g
aW50OgorICAgICIiIgorICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZyb20gYSB0cnVuY2F0
ZWQgcGFja2V0IG51bWJlci4KKworICAgIFNlZTogQXBwZW5kaXggQSAtIFNhbXBsZSBQYWNrZXQg
TnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQorICAgICIiIgorICAgIHdpbmRvdyA9IDEgPDwgbnVt
X2JpdHMKKyAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCisgICAgY2FuZGlkYXRlID0gKGV4
cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKKyAgICBpZiBjYW5kaWRhdGUgPD0g
ZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwgNjIpIC0gd2luZG93
OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93CisgICAgZWxpZiBjYW5kaWRhdGUg
PiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2luZG93OgorICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZQorCisKK2RlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICBwYWNrZXRfd2l0
aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzCispIC0+IGJ5
dGVzOgorICAgICIiIgorICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRhZyBmb3IgYSBSRVRS
WSBwYWNrZXQuCisgICAgIiIiCisgICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8gcGFja2V0CisgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSAr
IGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdpbmFsX2Rlc3RpbmF0
aW9uX2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90YWcpCisgICAgYXNz
ZXJ0IGJ1Zi5lb2YoKQorCisgICAgIyBydW4gQUVTLTEyOC1HQ00KKyAgICBhZWFkID0gQUVTR0NN
KFJFVFJZX0FFQURfS0VZKQorICAgIGludGVncml0eV90YWcgPSBhZWFkLmVuY3J5cHQoUkVUUllf
QUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKKyAgICBhc3NlcnQgbGVuKGludGVncml0eV90YWcp
ID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQorICAgIHJldHVybiBpbnRlZ3JpdHlfdGFnCisK
KworZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6CisgICAgcmV0dXJu
IGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKKworCitkZWYgaXNfbG9uZ19oZWFk
ZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJldHVybiBib29sKGZpcnN0X2J5dGUg
JiBQQUNLRVRfTE9OR19IRUFERVIpCisKKworZGVmIHB1bGxfcXVpY19oZWFkZXIoYnVmOiBCdWZm
ZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IFF1aWNIZWFkZXI6
CisgICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKworICAgIGludGVncml0eV90YWcg
PSBiIiIKKyAgICB0b2tlbiA9IGIiIgorICAgIGlmIGlzX2xvbmdfaGVhZGVyKGZpcnN0X2J5dGUp
OgorICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAorICAgICAgICB2ZXJzaW9uID0gYnVmLnB1
bGxfdWludDMyKCkKKworICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID0gYnVmLnB1bGxf
dWludDgoKQorICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4gQ09OTkVDVElPTl9J
RF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIGRlc3RpbmF0aW9u
X2NpZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZGVzdGluYXRpb25fY2lkID0gYnVm
LnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKKworICAgICAgICBzb3VyY2VfY2lk
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgc291cmNlX2NpZF9sZW5ndGgg
PiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
U291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9jaWRfbGVuZ3RoKQor
ICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2NpZF9sZW5ndGgpCisK
KyAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OOgor
ICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAgICBwYWNrZXRfdHlw
ZSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRl
bGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IChmaXJzdF9ieXRlICYgUEFD
S0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0
IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBmaXJzdF9i
eXRlICYgUEFDS0VUX1RZUEVfTUFTSworICAgICAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFD
S0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVsbF9ieXRlcyh0b2tl
bl9sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JFVFJZOgor
ICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkg
LSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGJ1Zi5w
dWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBpbnRlZ3JpdHlfdGFnID0g
YnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQorICAgICAgICAgICAgICAg
IHJlc3RfbGVuZ3RoID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN0
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICByZXR1cm4gUXVpY0hlYWRl
cigKKyAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCisgICAgICAgICAgICB2ZXJzaW9u
PXZlcnNpb24sCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICBzb3VyY2Vf
Y2lkPXNvdXJjZV9jaWQsCisgICAgICAgICAgICB0b2tlbj10b2tlbiwKKyAgICAgICAgICAgIGlu
dGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoPXJlc3Rf
bGVuZ3RoLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgIyBzaG9ydCBoZWFkZXIgcGFj
a2V0CisgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhFRF9CSVQpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKwor
ICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNLCisgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lkX2xlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCisgICAgICAgICAgICBpc19sb25nX2hlYWRlcj1GYWxz
ZSwKKyAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPXBh
Y2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0aW9uX2NpZCwK
KyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAorICAgICAgICAgICAgdG9rZW49YiIiLAorICAg
ICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSwKKyAgICAgICAg
KQorCisKK2RlZiBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICB2ZXJzaW9uOiBpbnQsCisgICAgc291
cmNlX2NpZDogYnl0ZXMsCisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywKKyAgICBvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAorICAgIHJldHJ5X3Rva2VuOiBieXRlcywKKykgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBjYXBhY2l0eT03CisgICAgICAgICsg
bGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4oc291cmNlX2NpZCkKKyAgICAgICAg
KyBsZW4ocmV0cnlfdG9rZW4pCisgICAgICAgICsgUkVUUllfSU5URUdSSVRZX1RBR19TSVpFCisg
ICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQorICAgIGJ1Zi5wdXNo
X3VpbnQzMih2ZXJzaW9uKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0aW5hdGlvbl9jaWQp
KQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAgICBidWYucHVzaF91aW50
OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291cmNlX2NpZCkKKyAgICBi
dWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKKyAgICBidWYucHVzaF9ieXRlcyhnZXRfcmV0cnlf
aW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSkKKyAgICBh
c3NlcnQgYnVmLmVvZigpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIGVuY29kZV9xdWlj
X3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgc291cmNlX2NpZDogYnl0ZXMsIGRlc3RpbmF0aW9u
X2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCispIC0+IGJ5dGVzOgor
ICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAgICArIGxlbihkZXN0
aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAgICAgICsgNCAqIGxl
bihzdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KG9zLnVyYW5k
b20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCisgICAgYnVmLnB1c2hfdWludDMyKFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgYnVmLnB1c2hfdWludDgobGVuKGRlc3Rp
bmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25fY2lkKQorICAgIGJ1
Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhzb3VyY2Vf
Y2lkKQorICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoKKyAgICAgICAgYnVm
LnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworIyBUTFMgRVhU
RU5TSU9OCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAg
aXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgaXB2Nl9hZGRyZXNz
OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKKyAg
ICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVp
Y1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBt
YXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfZGF0
YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRp
X2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1z
X2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgYWNrX2RlbGF5X2V4cG9uZW50OiBPcHRpb25hbFtp
bnRdID0gTm9uZQorICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZhbHNlCisgICAgcHJl
ZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNzXSA9IE5vbmUKKyAg
ICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBxdWFudHVt
X3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisKK1BBUkFNUyA9IHsKKyAgICAw
OiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCisgICAgMTogKCJpZGxlX3RpbWVv
dXQiLCBpbnQpLAorICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwgYnl0ZXMpLAorICAg
IDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKKyAgICA0OiAoImluaXRpYWxfbWF4X2RhdGEi
LCBpbnQpLAorICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCIsIGlu
dCksCisgICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIsIGludCks
CisgICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQpLAorICAgIDg6ICgi
aW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKKyAgICA5OiAoImluaXRpYWxfbWF4X3N0
cmVhbXNfdW5pIiwgaW50KSwKKyAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25lbnQiLCBpbnQpLAor
ICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAorICAgIDEyOiAoImRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbiIsIGJvb2wpLAorICAgIDEzOiAoInByZWZlcnJlZF9hZGRyZXNzIiwgUXVpY1By
ZWZlcnJlZEFkZHJlc3MpLAorICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0Iiwg
aW50KSwKKyAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGludCksCisgICAgMzEy
NzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKK30KKworCitkZWYgcHVsbF9xdWljX3By
ZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAg
ICBpcHY0X2FkZHJlc3MgPSBOb25lCisgICAgaXB2NF9ob3N0ID0gYnVmLnB1bGxfYnl0ZXMoNCkK
KyAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlwdjRfaG9zdCAhPSBi
eXRlcyg0KToKKyAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2NEFkZHJl
c3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKKworICAgIGlwdjZfYWRkcmVzcyA9IE5vbmUKKyAg
ICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKKyAgICBpcHY2X3BvcnQgPSBidWYucHVs
bF91aW50MTYoKQorICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6CisgICAgICAgIGlwdjZf
YWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9zdCkpLCBpcHY2X3Bv
cnQpCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICBj
b25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9sZW5ndGgpCisgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisKKyAgICByZXR1cm4g
UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgIGlwdjRfYWRkcmVzcz1pcHY0X2FkZHJlc3Ms
CisgICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCisgICAgICAgIGNvbm5lY3Rpb25f
aWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0YXRlbGVz
c19yZXNldF90b2tlbiwKKyAgICApCisKKworZGVmIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVz
cygKKyAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQcmVmZXJyZWRBZGRy
ZXNzCispIC0+IE5vbmU6CisgICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzIGlz
IG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3Mo
cHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0pCisgICAgZWxzZToK
KyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCisKKyAgICBpZiBwcmVmZXJyZWRfYWRk
cmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGlw
YWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3NbMF0pLnBh
Y2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNzLmlwdjZfYWRk
cmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygxOCkpCisK
KyAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkp
CisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkKKyAg
ICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4p
CisKKworZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZl
ciwgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzOgor
ICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKKworICAgIGlmIHByb3RvY29s
X3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgorICAgICAgICB3aXRoIHB1
bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6CisgICAgICAgICAgICBlbmQgPSBidWYudGVsbCgp
ICsgbGVuZ3RoCisgICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgorICAgICAgICAg
ICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgICAgICBwYXJh
bV9sZW4gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgICAgIHBhcmFtX3N0YXJ0ID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xl
bikpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBUcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg
c2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBidWYucHVsbF9ieXRl
cyhwYXJhbV9sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gcGFyYW1f
c3RhcnQgKyBwYXJhbV9sZW4KKyAgICBlbHNlOgorICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigp
OgorICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAg
ICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBwYXJhbV9zdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIHBhcmFt
X25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAgICAgICAgICAgaWYg
cGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAgICAgIGVsaWYgcGFy
YW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBh
cmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCisgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAgICAg
ICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNz
KGJ1ZikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0
cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGJ1Zi5wdWxs
X2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09IHBhcmFt
X3N0YXJ0ICsgcGFyYW1fbGVuCisKKyAgICByZXR1cm4gcGFyYW1zCisKKworZGVmIHB1c2hfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZlciwgcGFyYW1zOiBRdWljVHJh
bnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IE5vbmU6CisgICAg
aWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjc6CisgICAg
ICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgZm9yIHBhcmFtX2lkLCAo
cGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkKKyAgICAgICAgICAg
ICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMgbm90IEZh
bHNlOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFyYW1faWQpCisgICAg
ICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlm
IHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFyYW1fdmFsdWUpCisg
ICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkg
aW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmUg
YW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbV9idWYg
PSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9
PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3VpbnRfdmFyKHBhcmFt
X3ZhbHVlKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAg
ICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAg
ICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFyYW1fYnVmLCBwYXJh
bV92YWx1ZSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9pZCkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVsbCgpKQorICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQorCisKKyMgRlJBTUVTCisK
KworY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKKyAgICBQQURESU5HID0gMHgwMAorICAg
IFBJTkcgPSAweDAxCisgICAgQUNLID0gMHgwMgorICAgIEFDS19FQ04gPSAweDAzCisgICAgUkVT
RVRfU1RSRUFNID0gMHgwNAorICAgIFNUT1BfU0VORElORyA9IDB4MDUKKyAgICBDUllQVE8gPSAw
eDA2CisgICAgTkVXX1RPS0VOID0gMHgwNworICAgIFNUUkVBTV9CQVNFID0gMHgwOAorICAgIE1B
WF9EQVRBID0gMHgxMAorICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKKyAgICBNQVhfU1RSRUFN
U19CSURJID0gMHgxMgorICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKKyAgICBEQVRBX0JMT0NL
RUQgPSAweDE0CisgICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKKyAgICBTVFJFQU1TX0JM
T0NLRURfQklESSA9IDB4MTYKKyAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0gMHgxNworICAgIE5F
V19DT05ORUNUSU9OX0lEID0gMHgxOAorICAgIFJFVElSRV9DT05ORUNUSU9OX0lEID0gMHgxOQor
ICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQorICAgIFBBVEhfUkVTUE9OU0UgPSAweDFCCisgICAg
VFJBTlNQT1JUX0NMT1NFID0gMHgxQworICAgIEFQUExJQ0FUSU9OX0NMT1NFID0gMHgxRAorICAg
IEhBTkRTSEFLRV9ET05FID0gMHgxRQorICAgIERBVEFHUkFNID0gMHgzMAorICAgIERBVEFHUkFN
X1dJVEhfTEVOR1RIID0gMHgzMQorCisKK05PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTID0g
ZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAgIFF1
aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5HLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCitOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVT
ID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAg
IFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRf
Q0xPU0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgXQor
KQorCitQUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVp
Y0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JF
U1BPTlNFLAorICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCisgICAgXQorKQorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFF1aWNTdHJlYW1GcmFtZToKKyAgICBkYXRhOiBieXRlcyA9IGIiIgorICAgIGZpbjogYm9vbCA9
IEZhbHNlCisgICAgb2Zmc2V0OiBpbnQgPSAwCisKKworZGVmIHB1bGxfYWNrX2ZyYW1lKGJ1Zjog
QnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKKyAgICByYW5nZXNldCA9IFJhbmdlU2V0
KCkKKyAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3QgYWNrbm93bGVkZ2Vk
CisgICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNrX3JhbmdlX2NvdW50ID0g
YnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkg
ICMgZmlyc3QgYWNrIHJhbmdlCisgICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFja19jb3VudCwgZW5k
ICsgMSkKKyAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgZm9yIF8gaW4gcmFuZ2UoYWNrX3Jhbmdl
X2NvdW50KToKKyAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgKyAyCisgICAgICAg
IGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKGVu
ZCAtIGFja19jb3VudCwgZW5kICsgMSkKKyAgICAgICAgZW5kIC09IGFja19jb3VudAorICAgIHJl
dHVybiByYW5nZXNldCwgZGVsYXkKKworCitkZWYgcHVzaF9hY2tfZnJhbWUoYnVmOiBCdWZmZXIs
IHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgorICAgIHJhbmdlcyA9IGxl
bihyYW5nZXNldCkKKyAgICBpbmRleCA9IHJhbmdlcyAtIDEKKyAgICByID0gcmFuZ2VzZXRbaW5k
ZXhdCisgICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKKyAgICBidWYucHVzaF91aW50
X3ZhcihkZWxheSkKKyAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKKyAgICBidWYucHVzaF91
aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKKyAgICBzdGFydCA9IHIuc3RhcnQKKyAgICB3
aGlsZSBpbmRleCA+IDA6CisgICAgICAgIGluZGV4IC09IDEKKyAgICAgICAgciA9IHJhbmdlc2V0
W2luZGV4XQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIuc3RvcCAtIDEpCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAxKQorICAgICAgICBz
dGFydCA9IHIuc3RhcnQKKyAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODM3YzJjMzMwNDky
MDY0NDVmYzlmYjgxNDczYWNmY2JmNGI2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDM2NiBAQAor
ZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVtIGltcG9y
dCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgTGlzdCwgT3B0
aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uYnVmZmVyIGltcG9ydCBCdWZmZXIsIHNp
emVfdWludF92YXIKK2Zyb20gLi50bHMgaW1wb3J0IEVwb2NoCitmcm9tIC5jcnlwdG8gaW1wb3J0
IENyeXB0b1BhaXIKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRyYWNlCitmcm9tIC5w
YWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUywKKyAgICBO
T05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tFVF9OVU1CRVJfTUFYX1NJWkUsCisg
ICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfTUFTSywKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGlzX2xvbmdfaGVhZGVy
LAorKQorCitQQUNLRVRfTUFYX1NJWkUgPSAxMjgwCitQQUNLRVRfTEVOR1RIX1NFTkRfU0laRSA9
IDIKK1BBQ0tFVF9OVU1CRVJfU0VORF9TSVpFID0gMgorCisKK1F1aWNEZWxpdmVyeUhhbmRsZXIg
PSBDYWxsYWJsZVsuLi4sIE5vbmVdCisKKworY2xhc3MgUXVpY0RlbGl2ZXJ5U3RhdGUoRW51bSk6
CisgICAgQUNLRUQgPSAwCisgICAgTE9TVCA9IDEKKyAgICBFWFBJUkVEID0gMgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFF1aWNTZW50UGFja2V0OgorICAgIGVwb2NoOiBFcG9jaAorICAgIGluX2Zs
aWdodDogYm9vbAorICAgIGlzX2Fja19lbGljaXRpbmc6IGJvb2wKKyAgICBpc19jcnlwdG9fcGFj
a2V0OiBib29sCisgICAgcGFja2V0X251bWJlcjogaW50CisgICAgcGFja2V0X3R5cGU6IGludAor
ICAgIHNlbnRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgIHNlbnRfYnl0ZXM6IGlu
dCA9IDAKKworICAgIGRlbGl2ZXJ5X2hhbmRsZXJzOiBMaXN0W1R1cGxlW1F1aWNEZWxpdmVyeUhh
bmRsZXIsIEFueV1dID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeT1saXN0CisgICAg
KQorICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogTGlzdFtEaWN0XSA9IGZpZWxkKGRlZmF1bHRfZmFj
dG9yeT1saXN0KQorCisKK2NsYXNzIFF1aWNQYWNrZXRCdWlsZGVyU3RvcChFeGNlcHRpb24pOgor
ICAgIHBhc3MKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlcjoKKyAgICAiIiIKKyAgICBIZWxw
ZXIgZm9yIGJ1aWxkaW5nIFFVSUMgcGFja2V0cy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdF9jaWQ6IGJ5dGVzLAor
ICAgICAgICBwZWVyX2NpZDogYnl0ZXMsCisgICAgICAgIHZlcnNpb246IGludCwKKyAgICAgICAg
aXNfY2xpZW50OiBib29sLAorICAgICAgICBwYWNrZXRfbnVtYmVyOiBpbnQgPSAwLAorICAgICAg
ICBwZWVyX3Rva2VuOiBieXRlcyA9IGIiIiwKKyAgICAgICAgcXVpY19sb2dnZXI6IE9wdGlvbmFs
W1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICAgICBzcGluX2JpdDogYm9vbCA9IEZhbHNl
LAorICAgICk6CisgICAgICAgIHNlbGYubWF4X2ZsaWdodF9ieXRlczogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdG90YWxfYnl0ZXM6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0W0RpY3RdXSA9
IE5vbmUKKworICAgICAgICBzZWxmLl9ob3N0X2NpZCA9IGhvc3RfY2lkCisgICAgICAgIHNlbGYu
X2lzX2NsaWVudCA9IGlzX2NsaWVudAorICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IHBlZXJfY2lk
CisgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBwZWVyX3Rva2VuCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBzcGluX2Jp
dAorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorCisgICAgICAgICMgYXNzZW1ibGVk
IGRhdGFncmFtcyBhbmQgcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXM6IExpc3RbYnl0
ZXNdID0gW10KKyAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzID0gMAorICAgICAg
ICBzZWxmLl9kYXRhZ3JhbV9pbml0ID0gVHJ1ZQorICAgICAgICBzZWxmLl9wYWNrZXRzOiBMaXN0
W1F1aWNTZW50UGFja2V0XSA9IFtdCisgICAgICAgIHNlbGYuX2ZsaWdodF9ieXRlcyA9IDAKKyAg
ICAgICAgc2VsZi5fdG90YWxfYnl0ZXMgPSAwCisKKyAgICAgICAgIyBjdXJyZW50IHBhY2tldAor
ICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fcGFja2V0OiBPcHRp
b25hbFtRdWljU2VudFBhY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG86
IE9wdGlvbmFsW0NyeXB0b1BhaXJdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRfbG9uZ19o
ZWFkZXIgPSBGYWxzZQorICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0gcGFja2V0X251bWJl
cgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX3BhY2tldF90
eXBlID0gMAorCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlcihQQUNLRVRfTUFYX1NJWkUp
CisgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IFBBQ0tFVF9NQVhfU0laRQorICAgICAg
ICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBwYWNrZXRfaXNfZW1wdHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisg
ICAgICAgIFJldHVybnMgYFRydWVgIGlmIHRoZSBjdXJyZW50IHBhY2tldCBpcyBlbXB0eS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9wYWNrZXQgaXMgbm90IE5vbmUKKyAgICAg
ICAgcGFja2V0X3NpemUgPSBzZWxmLl9idWZmZXIudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0
CisgICAgICAgIHJldHVybiBwYWNrZXRfc2l6ZSA8PSBzZWxmLl9oZWFkZXJfc2l6ZQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9udW1iZXIoc2VsZikgLT4gaW50OgorICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGFja2V0IG51bWJlciBmb3IgdGhlIG5leHQgcGFja2V0
LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tldF9udW1iZXIKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfYnVmZmVyX3NwYWNlKHNlbGYpIC0+IGludDoK
KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YgYnl0
ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgcGFja2V0LgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBh
Y2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVsbCgpCisgICAgICAgICAgICAtIHNl
bGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICApCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgcmVtYWluaW5nX2ZsaWdodF9zcGFjZShzZWxmKSAtPiBpbnQ6CisgICAgICAg
ICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIGJ5dGVzIHdoaWNo
IGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIi
CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkKKyAg
ICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAgLSBzZWxmLl9wYWNr
ZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgZGVmIGZsdXNoKHNlbGYp
IC0+IFR1cGxlW0xpc3RbYnl0ZXNdLCBMaXN0W1F1aWNTZW50UGFja2V0XV06CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIHRoZSBhc3NlbWJsZWQgZGF0YWdyYW1zLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
ZW5kX3BhY2tldCgpCisgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorCisg
ICAgICAgIGRhdGFncmFtcyA9IHNlbGYuX2RhdGFncmFtcworICAgICAgICBwYWNrZXRzID0gc2Vs
Zi5fcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXMgPSBbXQorICAgICAgICBzZWxmLl9w
YWNrZXRzID0gW10KKyAgICAgICAgcmV0dXJuIGRhdGFncmFtcywgcGFja2V0cworCisgICAgZGVm
IHN0YXJ0X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBmcmFtZV90eXBlOiBpbnQsCisg
ICAgICAgIGNhcGFjaXR5OiBpbnQgPSAxLAorICAgICAgICBoYW5kbGVyOiBPcHRpb25hbFtRdWlj
RGVsaXZlcnlIYW5kbGVyXSA9IE5vbmUsCisgICAgICAgIGhhbmRsZXJfYXJnczogU2VxdWVuY2Vb
QW55XSA9IFtdLAorICAgICkgLT4gQnVmZmVyOgorICAgICAgICAiIiIKKyAgICAgICAgU3RhcnRz
IGEgbmV3IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfYnVm
ZmVyX3NwYWNlIDwgY2FwYWNpdHkgb3IgKAorICAgICAgICAgICAgZnJhbWVfdHlwZSBub3QgaW4g
Tk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUworICAgICAgICAgICAgYW5kIHNlbGYucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSA8IGNhcGFjaXR5CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBR
dWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAgICBzZWxmLl9idWZmZXIucHVzaF91aW50X3Zh
cihmcmFtZV90eXBlKQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJ
VElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pc19hY2tfZWxpY2l0
aW5nID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fSU5fRkxJR0hUX0ZS
QU1FX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkNSWVBUTzoKKyAgICAgICAgICAg
IHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFja2V0ID0gVHJ1ZQorICAgICAgICBpZiBoYW5kbGVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmRlbGl2ZXJ5X2hhbmRsZXJz
LmFwcGVuZCgoaGFuZGxlciwgaGFuZGxlcl9hcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
ZmZlcgorCisgICAgZGVmIHN0YXJ0X3BhY2tldChzZWxmLCBwYWNrZXRfdHlwZTogaW50LCBjcnlw
dG86IENyeXB0b1BhaXIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMgYSBu
ZXcgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5fYnVmZmVyCisKKyAg
ICAgICAgIyBmaW5pc2ggcHJldmlvdXMgZGF0YWdyYW0KKyAgICAgICAgaWYgc2VsZi5fcGFja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZW5kX3BhY2tldCgpCisKKyAgICAgICAg
IyBpZiB0aGVyZSBpcyB0b28gbGl0dGxlIHNwYWNlIHJlbWFpbmluZywgc3RhcnQgYSBuZXcgZGF0
YWdyYW0KKyAgICAgICAgIyBGSVhNRTogdGhlIGxpbWl0IGlzIGFyYml0cmFyeSEKKyAgICAgICAg
cGFja2V0X3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBpZiBzZWxmLl9idWZmZXJfY2FwYWNp
dHkgLSBwYWNrZXRfc3RhcnQgPCAxMjg6CisgICAgICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50
X2RhdGFncmFtKCkKKyAgICAgICAgICAgIHBhY2tldF9zdGFydCA9IDAKKworICAgICAgICAjIGlu
aXRpYWxpemUgZGF0YWdyYW0gaWYgbmVlZGVkCisgICAgICAgIGlmIHNlbGYuX2RhdGFncmFtX2lu
aXQ6CisgICAgICAgICAgICBpZiBzZWxmLm1heF90b3RhbF9ieXRlcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmdfdG90YWxfYnl0ZXMgPSBzZWxmLm1heF90b3RhbF9ieXRl
cyAtIHNlbGYuX3RvdGFsX2J5dGVzCisgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nX3RvdGFs
X2J5dGVzIDwgc2VsZi5fYnVmZmVyX2NhcGFjaXR5OgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9idWZmZXJfY2FwYWNpdHkgPSByZW1haW5pbmdfdG90YWxfYnl0ZXMKKworICAgICAgICAgICAg
c2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gc2VsZi5fYnVmZmVyX2NhcGFjaXR5CisgICAgICAgICAg
ICBpZiBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nX2ZsaWdodF9ieXRlcyA9IHNlbGYubWF4X2ZsaWdodF9ieXRlcyAtIHNlbGYuX2Zs
aWdodF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPCBz
ZWxmLl9mbGlnaHRfY2FwYWNpdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsaWdodF9j
YXBhY2l0eSA9IHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2luaXQgPSBG
YWxzZQorCisgICAgICAgICMgY2FsY3VsYXRlIGhlYWRlciBzaXplCisgICAgICAgIHBhY2tldF9s
b25nX2hlYWRlciA9IGlzX2xvbmdfaGVhZGVyKHBhY2tldF90eXBlKQorICAgICAgICBpZiBwYWNr
ZXRfbG9uZ19oZWFkZXI6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDExICsgbGVuKHNlbGYu
X3BlZXJfY2lkKSArIGxlbihzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAgIGlmIChwYWNrZXRf
dHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAg
ICAgICAgICAgdG9rZW5fbGVuZ3RoID0gbGVuKHNlbGYuX3BlZXJfdG9rZW4pCisgICAgICAgICAg
ICAgICAgaGVhZGVyX3NpemUgKz0gc2l6ZV91aW50X3Zhcih0b2tlbl9sZW5ndGgpICsgdG9rZW5f
bGVuZ3RoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDMgKyBsZW4o
c2VsZi5fcGVlcl9jaWQpCisKKyAgICAgICAgIyBjaGVjayB3ZSBoYXZlIGVub3VnaCBzcGFjZQor
ICAgICAgICBpZiBwYWNrZXRfc3RhcnQgKyBoZWFkZXJfc2l6ZSA+PSBzZWxmLl9idWZmZXJfY2Fw
YWNpdHk6CisgICAgICAgICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAg
ICAjIGRldGVybWluZSBhY2sgZXBvY2gKKyAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VU
X1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSU5JVElBTAorICAgICAg
ICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRToKKyAgICAgICAgICAg
IGVwb2NoID0gRXBvY2guSEFORFNIQUtFCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlcG9j
aCA9IEVwb2NoLk9ORV9SVFQKKworICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IGhlYWRlcl9z
aXplCisgICAgICAgIHNlbGYuX3BhY2tldCA9IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICBpbl9mbGlnaHQ9RmFsc2UsCisgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxz
ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251bWJlciwKKyAgICAg
ICAgICAgIHBhY2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICApCisgICAgICAgIHNlbGYu
X3BhY2tldF9jcnlwdG8gPSBjcnlwdG8KKyAgICAgICAgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVy
ID0gcGFja2V0X2xvbmdfaGVhZGVyCisgICAgICAgIHNlbGYuX3BhY2tldF9zdGFydCA9IHBhY2tl
dF9zdGFydAorICAgICAgICBzZWxmLl9wYWNrZXRfdHlwZSA9IHBhY2tldF90eXBlCisgICAgICAg
IHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1l
cworCisgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHNlbGYuX2hlYWRlcl9z
aXplKQorCisgICAgZGVmIF9lbmRfcGFja2V0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgor
ICAgICAgICBFbmRzIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1
ZiA9IHNlbGYuX2J1ZmZlcgorICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBzZWxm
Ll9wYWNrZXRfc3RhcnQKKyAgICAgICAgaWYgcGFja2V0X3NpemUgPiBzZWxmLl9oZWFkZXJfc2l6
ZToKKyAgICAgICAgICAgICMgcGFkIGluaXRpYWwgZGF0YWdyYW0KKyAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBhbmQgc2Vs
Zi5fcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldAorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2U6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKHNlbGYucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplID0gYnVmLnRlbGwoKSAtIHNlbGYuX3BhY2tl
dF9zdGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0ID0gVHJ1
ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHdyaXRlIGhlYWRlcgor
ICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAg
IGxlbmd0aCA9ICgKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUKKyAgICAgICAgICAg
ICAgICAgICAgLSBzZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAgICAgICArIFBBQ0tF
VF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2VsZi5fcGFja2V0X2Ny
eXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg
YnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQ4KHNlbGYuX3BhY2tldF90eXBlIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDMyKHNlbGYuX3ZlcnNpb24pCisgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX3BlZXJfY2lkKSkKKyAgICAgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF91aW50OChsZW4oc2VsZi5faG9zdF9jaWQpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKHNlbGYuX2hvc3RfY2lkKQorICAgICAgICAgICAgICAgIGlmIChzZWxmLl9wYWNrZXRfdHlw
ZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbihzZWxmLl9wZWVyX3Rva2VuKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl90b2tlbikKKyAgICAgICAg
ICAgICAgICBidWYucHVzaF91aW50MTYobGVuZ3RoIHwgMHg0MDAwKQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNrZXRfbnVtYmVyICYgMHhGRkZGKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3NwaW5fYml0IDw8IDUp
CisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3BhY2tldF9jcnlwdG8ua2V5X3BoYXNlIDw8
IDIpCisgICAgICAgICAgICAgICAgICAgIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5f
cGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNlbGYuX3BhY2tldF9u
dW1iZXIgJiAweEZGRkYpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgd2UgbmVl
ZCBwYWRkaW5nCisgICAgICAgICAgICAgICAgcGFkZGluZ19zaXplID0gKAorICAgICAgICAgICAg
ICAgICAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpFCisgICAgICAgICAgICAgICAgICAgIC0gUEFD
S0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgKyBzZWxmLl9oZWFkZXJf
c2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHBhY2tldF9zaXplCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIHBhZGRpbmdfc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHBhY2tldF9zaXplKQorICAgICAgICAg
ICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhwYWRkaW5nX3NpemUpKQorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfc2l6ZSArPSBwYWRkaW5nX3NpemUKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBlbmNyeXB0IGluIHBsYWNlCisgICAgICAgICAgICBwbGFpbiA9IGJ1
Zi5kYXRhX3NsaWNlKHNlbGYuX3BhY2tldF9zdGFydCwgc2VsZi5fcGFja2V0X3N0YXJ0ICsgcGFj
a2V0X3NpemUpCisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcygKKyAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXRfY3J5
cHRvLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgICAgICAgICBwbGFpblswIDogc2VsZi5f
aGVhZGVyX3NpemVdLAorICAgICAgICAgICAgICAgICAgICBwbGFpbltzZWxmLl9oZWFkZXJfc2l6
ZSA6IHBhY2tldF9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJl
ciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9w
YWNrZXQuc2VudF9ieXRlcyA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAg
ICAgICAgIHNlbGYuX3BhY2tldHMuYXBwZW5kKHNlbGYuX3BhY2tldCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX3BhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1f
ZmxpZ2h0X2J5dGVzICs9IHNlbGYuX3BhY2tldC5zZW50X2J5dGVzCisKKyAgICAgICAgICAgICMg
c2hvcnQgaGVhZGVyIHBhY2tldHMgY2Fubm90IGJlIGNvYWxsZXNjZWQsIHdlIG5lZWQgYSBuZXcg
ZGF0YWdyYW0KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYWNrZXRfbG9uZ19oZWFkZXI6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3VycmVudF9kYXRhZ3JhbSgpCisKKyAgICAgICAg
ICAgIHNlbGYuX3BhY2tldF9udW1iZXIgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
IyAiY2FuY2VsIiB0aGUgcGFja2V0CisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRf
c3RhcnQpCisKKyAgICAgICAgc2VsZi5fcGFja2V0ID0gTm9uZQorICAgICAgICBzZWxmLnF1aWNf
bG9nZ2VyX2ZyYW1lcyA9IE5vbmUKKworICAgIGRlZiBfZmx1c2hfY3VycmVudF9kYXRhZ3JhbShz
ZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhZ3JhbV9ieXRlcyA9IHNlbGYuX2J1ZmZlci50ZWxs
KCkKKyAgICAgICAgaWYgZGF0YWdyYW1fYnl0ZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXMuYXBwZW5kKHNlbGYuX2J1ZmZlci5kYXRhKQorICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2J5
dGVzICs9IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcworICAgICAgICAgICAgc2VsZi5fdG90
YWxfYnl0ZXMgKz0gZGF0YWdyYW1fYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2lu
aXQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9idWZmZXIuc2VlaygwKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjA4NmM5Yzc0Zjc3NTYw
MzIwODY5MDA3NmJlZTk2MzgxNDYxMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKQEAgLTAsMCArMSw5OCBAQAorZnJvbSBjb2xs
ZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBJdGVy
YWJsZSwgTGlzdCwgT3B0aW9uYWwKKworCitjbGFzcyBSYW5nZVNldChTZXF1ZW5jZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhbmdlczogSXRlcmFibGVbcmFuZ2VdID0gW10pOgorICAgICAg
ICBzZWxmLl9fcmFuZ2VzOiBMaXN0W3JhbmdlXSA9IFtdCisgICAgICAgIGZvciByIGluIHJhbmdl
czoKKyAgICAgICAgICAgIGFzc2VydCByLnN0ZXAgPT0gMQorICAgICAgICAgICAgc2VsZi5hZGQo
ci5zdGFydCwgci5zdG9wKQorCisgICAgZGVmIGFkZChzZWxmLCBzdGFydDogaW50LCBzdG9wOiBP
cHRpb25hbFtpbnRdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc3RvcCBpcyBOb25lOgor
ICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMQorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0
CisKKyAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKHNlbGYuX19yYW5nZXMpOgorICAgICAg
ICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYmVmb3JlIGN1cnJlbnQgaXRlbSwg
aW5zZXJ0IGhlcmUKKyAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0YXJ0OgorICAgICAgICAgICAg
ICAgIHNlbGYuX19yYW5nZXMuaW5zZXJ0KGksIHJhbmdlKHN0YXJ0LCBzdG9wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJl
bHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAgICAgICAgICAgIGlmIHN0YXJ0
ID4gci5zdG9wOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGhl
IGFkZGVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbSwgbWVyZ2UgaXQKKyAgICAgICAg
ICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCByLnN0YXJ0KQorICAgICAgICAgICAgc3RvcCA9IG1heChz
dG9wLCByLnN0b3ApCisgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5nZXMpIC0g
MSBhbmQgc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RhcnQgPD0gc3RvcDoKKyAgICAgICAgICAgICAg
ICBzdG9wID0gbWF4KHNlbGYuX19yYW5nZXNbaSArIDFdLnN0b3AsIHN0b3ApCisgICAgICAgICAg
ICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSArIDEpCisgICAgICAgICAgICBzZWxmLl9fcmFuZ2Vz
W2ldID0gcmFuZ2Uoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAj
IHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBhbGwgZXhpc3RpbmcgaXRlbXMsIGFw
cGVuZCBpdAorICAgICAgICBzZWxmLl9fcmFuZ2VzLmFwcGVuZChyYW5nZShzdGFydCwgc3RvcCkp
CisKKyAgICBkZWYgYm91bmRzKHNlbGYpIC0+IHJhbmdlOgorICAgICAgICByZXR1cm4gcmFuZ2Uo
c2VsZi5fX3Jhbmdlc1swXS5zdGFydCwgc2VsZi5fX3Jhbmdlc1stMV0uc3RvcCkKKworICAgIGRl
ZiBzaGlmdChzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMucG9w
KDApCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgc3RhcnQ6IGludCwgc3RvcDogaW50KSAtPiBO
b25lOgorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0CisKKyAgICAgICAgaSA9IDAKKyAgICAg
ICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2VzKToKKyAgICAgICAgICAgIHIgPSBzZWxmLl9f
cmFuZ2VzW2ldCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgaXMgZW50aXJlbHkg
YmVmb3JlIGN1cnJlbnQgaXRlbSwgc3RvcCBoZXJlCisgICAgICAgICAgICBpZiBzdG9wIDw9IHIu
c3RhcnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92
ZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAg
ICAgICAgICAgIGlmIHN0YXJ0ID49IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBpICs9IDEKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdl
IGNvbXBsZXRlbHkgY292ZXJzIHRoZSBjdXJyZW50IGl0ZW0sIHJlbW92ZSBpdAorICAgICAgICAg
ICAgaWYgc3RhcnQgPD0gci5zdGFydCBhbmQgc3RvcCA+PSByLnN0b3A6CisgICAgICAgICAgICAg
ICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbQorICAg
ICAgICAgICAgaWYgc3RhcnQgPiByLnN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX19yYW5n
ZXNbaV0gPSByYW5nZShyLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgICAgICAgICBpZiBzdG9wIDwg
ci5zdG9wOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLmluc2VydChpICsgMSwg
cmFuZ2Uoc3RvcCwgci5zdG9wKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHN0b3AsIHIuc3RvcCkKKworICAgICAgICAgICAgaSAr
PSAxCisKKyAgICBkZWYgX19ib29sX18oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWw6IEFueSkg
LT4gYm9vbDoKKyAgICAgICAgZm9yIHIgaW4gc2VsZi5fX3JhbmdlczoKKyAgICAgICAgICAgIGlm
IHZhbCBpbiByOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUmFuZ2VTZXQpOgorICAgICAgICAgICAgcmV0
dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMgPT0gb3Ro
ZXIuX19yYW5nZXMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IEFueSkgLT4gcmFu
Z2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzW2tleV0KKworICAgIGRlZiBfX2xlbl9f
KHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9fcmFuZ2VzKQorCisgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJSYW5nZVNldCh7fSki
LmZvcm1hdChyZXByKHNlbGYuX19yYW5nZXMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJlYjFlY2Y1NjYxZjcxYzkzZTc3YmY3ZmE2MmE3
MTYyZjM4NzBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvcmVjb3ZlcnkucHkKQEAgLTAsMCArMSw0OTcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAorCitmcm9t
IC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0X2J1aWxkZXIgaW1w
b3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAorZnJvbSAucmFuZ2VzZXQgaW1w
b3J0IFJhbmdlU2V0CisKKyMgbG9zcyBkZXRlY3Rpb24KK0tfUEFDS0VUX1RIUkVTSE9MRCA9IDMK
K0tfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcworS19HUkFOVUxBUklUWSA9IDAuMDAxICAj
IHNlY29uZHMKK0tfVElNRV9USFJFU0hPTEQgPSA5IC8gOAorS19NSUNST19TRUNPTkQgPSAwLjAw
MDAwMQorS19TRUNPTkQgPSAxLjAKKworIyBjb25nZXN0aW9uIGNvbnRyb2wKK0tfTUFYX0RBVEFH
UkFNX1NJWkUgPSAxMjgwCitLX0lOSVRJQUxfV0lORE9XID0gMTAgKiBLX01BWF9EQVRBR1JBTV9T
SVpFCitLX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUKK0tfTE9TU19S
RURVQ1RJT05fRkFDVE9SID0gMC41CisKKworY2xhc3MgUXVpY1BhY2tldFNwYWNlOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFja19hdDogT3B0aW9uYWxb
ZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLmFja19xdWV1ZSA9IFJhbmdlU2V0KCkKKyAgICAg
ICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmV4cGVjdGVkX3BhY2tldF9u
dW1iZXIgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSAtMQorICAg
ICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQor
CisgICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCisgICAgICAgIHNlbGYuYWNrX2VsaWNp
dGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSAw
CisgICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQYWNrZXRdID0ge30KKworCitj
bGFzcyBRdWljUGFja2V0UGFjZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5idWNrZXRf
dGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5ldmFsdWF0aW9uX3RpbWU6IGZsb2F0ID0g
MC4wCisgICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKwor
ICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0KSAtPiBmbG9hdDoKKyAgICAg
ICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBk
YXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8PSAw
OgorICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBhY2tldF90aW1lCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX2FmdGVyX3NlbmQoc2VsZiwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2Vs
Zi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6CisgICAgICAgICAgICAgICAgc2VsZi5i
dWNrZXRfdGltZSA9IDAuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKKworICAgIGRlZiB1cGRhdGVfYnVja2V0
KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdyA+IHNlbGYuZXZhbHVh
dGlvbl90aW1lOgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IG1pbigKKyAgICAgICAg
ICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYuZXZhbHVhdGlvbl90aW1lKSwg
c2VsZi5idWNrZXRfbWF4CisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmV2YWx1YXRp
b25fdGltZSA9IG5vdworCisgICAgZGVmIHVwZGF0ZV9yYXRlKHNlbGYsIGNvbmdlc3Rpb25fd2lu
ZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHBhY2luZ19y
YXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRfcnR0LCBLX01JQ1JPX1NFQ09O
RCkKKyAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKKyAgICAgICAgICAgIEtfTUlDUk9f
U0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2luZ19yYXRlLCBLX1NFQ09ORCkK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYnVja2V0X21heCA9ICgKKyAgICAgICAgICAgIG1h
eCgKKyAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1fU0laRSwKKyAgICAgICAgICAg
ICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBLX01BWF9EQVRBR1JBTV9TSVpF
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIC8gcGFjaW5nX3JhdGUKKyAgICAgICAgKQor
ICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNrZXRfbWF4OgorICAgICAgICAg
ICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAorCisKK2NsYXNzIFF1aWNDb25n
ZXN0aW9uQ29udHJvbDoKKyAgICAiIiIKKyAgICBOZXcgUmVubyBjb25nZXN0aW9uIGNvbnRyb2wu
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgPSBL
X0lOSVRJQUxfV0lORE9XCisgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRf
dGltZSA9IDAuMAorICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoID0gMAorICAgICAgICBz
ZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKyAgICAgICAgc2VsZi5zc3RocmVz
aDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBvbl9wYWNrZXRfYWNrZWQoc2VsZiwg
cGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ieXRlc19pbl9m
bGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgICAgICAjIGRvbid0IGluY3JlYXNlIHdp
bmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5CisgICAgICAgIGlmIHBhY2tldC5zZW50X3RpbWUg
PD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lOgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIG9yIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgorICAgICAgICAgICAgIyBzbG93IHN0YXJ0CisgICAg
ICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZvaWRhbmNlCisgICAgICAgICAg
ICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAgICAgICAg
ICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2VsZi5jb25nZXN0aW9uX3dpbmRv
dworICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlv
bl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKyAgICAgICAgICAgICAg
ICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19NQVhfREFUQUdSQU1fU0laRQor
CisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDogUXVpY1NlbnRQYWNrZXQpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X2J5dGVz
CisKKyAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1
aWNTZW50UGFja2V0XSkgLT4gTm9uZToKKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgor
ICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKwor
ICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQ
YWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBsb3N0X2xhcmdlc3RfdGltZSA9
IDAuMAorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAgICAgICBzZWxmLmJ5
dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAgICAgICAgbG9zdF9sYXJn
ZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgIyBzdGFydCBhIG5ldyBjb25n
ZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0aGUKKyAgICAgICAgIyBzdGFy
dCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBwZXJpb2QuCisgICAgICAgIGlm
IGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1l
OgorICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lID0gbm93
CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0gbWF4KAorICAgICAgICAgICAg
ICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NTX1JFRFVDVElPTl9GQUNUT1Ip
LCBLX01JTklNVU1fV0lORE9XCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnNzdGhy
ZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisgICAgICAgICMgVE9ETyA6IGNvbGxhcHNl
IGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2VzdGlvbgorCisgICAgZGVmIG9u
X3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9hdCwgbm93OiBmbG9hdCkgLT4g
Tm9uZToKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3VsZCBleGl0IHNsb3cgc3RhcnQK
KyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBzZWxmLl9ydHRfbW9uaXRvci5p
c19ydHRfaW5jcmVhc2luZygKKyAgICAgICAgICAgIGxhdGVzdF9ydHQsIG5vdworICAgICAgICAp
OgorICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKwor
CitjbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6CisgICAgIiIiCisgICAgUGFja2V0IGxvc3MgYW5k
IGNvbmdlc3Rpb24gY29udHJvbGxlci4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dDogYm9vbCwKKyAgICAg
ICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICAgICBxdWljX2xvZ2dlcjog
T3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGllbnRfd2l0aG91dF8xcnR0Cisg
ICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1CisgICAgICAgIHNlbGYuc3BhY2VzOiBM
aXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQorCisgICAgICAgICMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc2VuZF9wcm9i
ZSA9IHNlbmRfcHJvYmUKKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uCisgICAgICAgIHNlbGYu
X3B0b19jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAorICAgICAgICBzZWxmLl9ydHRfbWluID0gbWF0
aC5pbmYKKyAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4wCisgICAgICAgIHNlbGYuX3J0
dF92YXJpYW5jZSA9IDAuMAorICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tfZWxp
Y2l0aW5nX3BhY2tldCA9IDAuMAorCisgICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCisgICAg
ICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkKKyAgICAgICAgc2VsZi5fcGFj
ZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJ5dGVzX2lu
X2ZsaWdodChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5ieXRlc19pbl9m
bGlnaHQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25nZXN0aW9uX3dpbmRvdyhzZWxmKSAt
PiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdworCisgICAg
ZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSkgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCisKKyAgICAgICAgc2VsZi5fY2Mu
b25fcGFja2V0c19leHBpcmVkKAorICAgICAgICAgICAgZmlsdGVyKGxhbWJkYSB4OiB4LmluX2Zs
aWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQorICAgICAgICApCisgICAgICAgIHNw
YWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCisKKyAgICAgICAgc3BhY2UuYWNrX2F0ID0gTm9uZQor
ICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAgICAgICAgc3BhY2Uu
bG9zc190aW1lID0gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisKKyAgICBkZWYg
Z2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9uYWxbUXVpY1BhY2tldFNwYWNl
XToKKyAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKKyAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYu
c3BhY2VzOgorICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIG5vdCBOb25lIGFuZCAo
CisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA8
IGxvc3Nfc3BhY2UubG9zc190aW1lCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGxv
c3Nfc3BhY2UgPSBzcGFjZQorICAgICAgICByZXR1cm4gbG9zc19zcGFjZQorCisgICAgZGVmIGdl
dF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0OgorICAgICAgICAjIGxvc3MgdGlt
ZXIKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2UoKQor
ICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxv
c3Nfc3BhY2UubG9zc190aW1lCisKKyAgICAgICAgIyBwYWNrZXQgdGltZXIKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0CisgICAgICAgICAgICBv
ciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9yIHNwYWNlIGluIHNlbGYuc3Bh
Y2VzKSA+IDAKKyAgICAgICAgKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBLX0lOSVRJQUxfUlRUICogKDIg
Kiogc2VsZi5fcHRvX2NvdW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0
aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIgKiogc2VsZi5fcHRvX2NvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRp
bmdfcGFja2V0ICsgdGltZW91dAorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0
X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICBzZWxmLl9ydHRfc21vb3RoZWQKKyAgICAgICAgICAgICsgbWF4KDQgKiBzZWxmLl9ydHRf
dmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCisgICAgICAgICAgICArIHNlbGYubWF4X2Fja19kZWxh
eQorICAgICAgICApCisKKyAgICBkZWYgb25fYWNrX3JlY2VpdmVkKAorICAgICAgICBzZWxmLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBhY2tfcmFuZ2VzZXQ6IFJh
bmdlU2V0LAorICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAorICAgICAgICBub3c6IGZsb2F0LAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSBtZXRyaWNzIGFzIHRo
ZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGxhcmdlc3RfYWNrZWQgPSBhY2tfcmFu
Z2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKKyAgICAgICAgbGFyZ2VzdF9uZXdseV9hY2tlZCA9IE5v
bmUKKyAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCisKKyAgICAgICAgaWYgbGFyZ2Vz
dF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0OgorICAgICAgICAgICAgc3BhY2Uu
bGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCisKKyAgICAgICAgZm9yIHBhY2tl
dF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5rZXlzKCkpOgorICAgICAgICAg
ICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNrX3Jhbmdlc2V0OgorICAgICAg
ICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNvdW50ZXJzCisgICAgICAgICAg
ICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChwYWNrZXRfbnVtYmVyKQorICAg
ICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAgICAg
ICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzcGFjZS5h
Y2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFja2V0Lmlu
X2ZsaWdodDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0X2Fja2VkKHBh
Y2tldCkKKyAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0gcGFja2V0X251bWJl
cgorICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gcGFja2V0LnNlbnRfdGltZQor
CisgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcworICAgICAgICAgICAgICAgIGZv
ciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5kbGVyczoKKyAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgKmFyZ3MpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXdseSBhY2tlZCBwYWNrZXRzCisg
ICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2VzdF9uZXdseV9hY2tlZCBhbmQg
aXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIGxhdGVzdF9ydHQgPSBub3cgLSBsYXJnZXN0
X3NlbnRfdGltZQorICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUKKworICAgICAgICAgICAgIyBs
aW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQorICAgICAgICAgICAgYWNrX2RlbGF5ID0g
bWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQorCisgICAgICAgICAgICAjIHVwZGF0
ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMKKyAgICAgICAgICAgIHNlbGYu
X3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCisgICAgICAgICAgICBpZiBzZWxm
Ll9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRf
bWluID0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgaWYgc2VsZi5fcnR0X2xhdGVzdCA+
IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X2xh
dGVzdCAtPSBhY2tfZGVsYXkKKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX3J0dF9pbml0aWFs
aXplZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0X3J0dCAvIDIKKyAgICAgICAg
ICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0CisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDMgLyA0ICogc2VsZi5fcnR0
X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9t
aW4gLSBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKKyAgICAgICAgICAgICAgICAgICAgNyAvIDggKiBzZWxm
Ll9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRlc3QKKyAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJvbGxlcgorICAgICAg
ICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVzdF9ydHQsIG5vdz1ub3cpCisg
ICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25n
ZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAg
ICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UKKworICAgICAgICBzZWxmLl9k
ZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQobG9n
X3J0dD1sb2dfcnR0KQorCisgICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKKworICAgIGRlZiBv
bl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAg
ICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNlKCkKKyAgICAgICAg
aWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RldGVjdF9sb3Nz
KGxvc3Nfc3BhY2UsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9w
dG9fY291bnQgKz0gMQorCisgICAgICAgICAgICAjIHJlc2NoZWR1bGUgc29tZSBkYXRhCisgICAg
ICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAgICAgICAgc2VsZi5f
b25fcGFja2V0c19sb3N0KAorICAgICAgICAgICAgICAgICAgICB0dXBsZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEg
aTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tldHMudmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAgICAgICAgICAgIG5vdz1ub3csCisgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLl9zZW5kX3Byb2JlKCkKKworICAgIGRl
ZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0LCBzcGFjZTogUXVp
Y1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBzcGFjZS5zZW50X3BhY2tldHNbcGFja2V0
LnBhY2tldF9udW1iZXJdID0gcGFja2V0CisKKyAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGlj
aXRpbmc6CisgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCArPSAxCisg
ICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNr
X2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tf
ZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKKworICAgICAgICAgICAgIyBhZGQg
cGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAorICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0
X3NlbnQocGFja2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAg
IGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHdoZXRoZXIgYW55IHBhY2tl
dHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBsb3NzX2Rl
bGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKKyAgICAgICAgICAgIG1heChzZWxmLl9ydHRfbGF0
ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCisgICAgICAgICAgICBpZiBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQKKyAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAorICAgICAgICApCisgICAgICAg
IHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldCAtIEtfUEFDS0VU
X1RIUkVTSE9MRAorICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5vdyAtIGxvc3NfZGVsYXkKKwor
ICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQorICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBOb25l
CisgICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4gc3BhY2Uuc2VudF9wYWNrZXRz
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9h
Y2tlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcGFj
a2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tldC5zZW50X3RpbWUgPD0gdGlt
ZV90aHJlc2hvbGQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzLmFwcGVuZChwYWNrZXQp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF9sb3NzX3RpbWUgPSBw
YWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQorICAgICAgICAgICAgICAgIGlmIHNwYWNlLmxv
c3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBhY2tldF9sb3NzX3RpbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBhY2tldF9sb3NzX3RpbWUKKwor
ICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNrZXRzLCBzcGFjZT1zcGFjZSwg
bm93PW5vdykKKworICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRlZChzZWxmLCBsb2dfcnR0PUZh
bHNlKSAtPiBOb25lOgorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImJ5dGVzX2luX2Zs
aWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKKyAgICAgICAgICAgICJjd25kIjogc2Vs
Zi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgIH0KKyAgICAgICAgaWYgc2VsZi5fY2Mu
c3N0aHJlc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyJzc3RocmVzaCJdID0gc2Vs
Zi5fY2Muc3N0aHJlc2gKKworICAgICAgICBpZiBsb2dfcnR0OgorICAgICAgICAgICAgZGF0YS51
cGRhdGUoCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF0ZXN0X3J0
dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9sYXRlc3QpLAorICAg
ICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF9taW4pLAorICAgICAgICAgICAgICAgICAgICAic21vb3RoZWRfcnR0Ijogc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Ntb290aGVkKSwKKyAgICAgICAg
ICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF92YXJpYW5jZSksCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
CisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgIGNhdGVn
b3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQiLCBkYXRhPWRhdGEKKyAgICAg
ICAgKQorCisgICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgIHNlbGYsIHBhY2tldHM6
IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBm
bG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9wYWNrZXRzX2NjID0gW10KKyAgICAg
ICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgZGVsIHNwYWNlLnNlbnRfcGFj
a2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KKworICAgICAgICAgICAgaWYgcGFja2V0LmluX2Zs
aWdodDoKKyAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2MuYXBwZW5kKHBhY2tldCkKKwor
ICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAg
c3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorCisgICAgICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIs
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9zdCIsCisgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiBzZWxmLl9xdWlj
X2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9udW1iZXIpLAorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxi
YWNrcworICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0LmRlbGl2ZXJ5X2hh
bmRsZXJzOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
KmFyZ3MpCisKKyAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBjb250cm9sbGVyCisgICAgICAg
IGlmIGxvc3RfcGFja2V0c19jYzoKKyAgICAgICAgICAgIHNlbGYuX2NjLm9uX3BhY2tldHNfbG9z
dChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCisgICAgICAgICAgICBzZWxmLl9wYWNlci51cGRh
dGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25n
ZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Nt
b290aGVkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgp
CisKKworY2xhc3MgUXVpY1J0dE1vbml0b3I6CisgICAgIiIiCisgICAgUm91bmR0cmlwIHRpbWUg
bW9uaXRvciBmb3IgSHlTdGFydC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHNlbGYuX2xhc3Rf
dGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
aXplID0gNQorCisgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjogT3B0aW9uYWxbZmxvYXRdID0g
Tm9uZQorCisgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAgIHNlbGYuX3NhbXBs
ZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2FtcGxlX21pbjog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zYW1wbGVfdGltZSA9IDAuMAor
ICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiByYW5nZShzZWxmLl9zaXplKV0K
KworICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKKyAgICAgICAgc2VsZi5fc2FtcGxl
X2lkeCArPSAxCisKKyAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lkeCA+PSBzZWxmLl9zaXplOgor
ICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3JlYWR5
ID0gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAgICAgc2VsZi5fc2Ft
cGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4g
PSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBmb3Igc2FtcGxlIGluIHNlbGYuX3NhbXBs
ZXNbMTpdOgorICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNlbGYuX3NhbXBsZV9taW46Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBzYW1wbGUKKyAgICAgICAgICAg
ICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKKworICAgIGRlZiBpc19ydHRfaW5jcmVhc2luZyhz
ZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgorICAgICAgICBpZiBub3cgPiBz
ZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6CisgICAgICAgICAgICBzZWxmLmFkZF9y
dHQocnR0KQorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSBub3cKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcmVhZHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsdGVyZWRfbWlu
IGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5fc2FtcGxlX21heDoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2VsZi5fc2FtcGxlX21heAorCisg
ICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWluIC0gc2VsZi5fZmlsdGVyZWRf
bWluCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNlbGYuX2ZpbHRlcmVkX21pbjoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVsdGEgPiAwOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHJldHVybiBGYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDVjM2E1
YzU1YzlhMzk1ODkzOThjOTdjZWU5NjVjMmIzNzA2NjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKQEAgLTAsMCArMSwzOSBAQAoraW1w
b3J0IGlwYWRkcmVzcworCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0
IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1w
b3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJp
YyBpbXBvcnQgcGFkZGluZywgcnNhCisKK2Zyb20gLmNvbm5lY3Rpb24gaW1wb3J0IE5ldHdvcmtB
ZGRyZXNzCisKKworZGVmIGVuY29kZV9hZGRyZXNzKGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBi
eXRlczoKKyAgICByZXR1cm4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoYWRkclswXSkucGFja2VkICsg
Ynl0ZXMoW2FkZHJbMV0gPj4gOCwgYWRkclsxXSAmIDB4RkZdKQorCisKK2NsYXNzIFF1aWNSZXRy
eVRva2VuSGFuZGxlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAg
c2VsZi5fa2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgcHVibGlj
X2V4cG9uZW50PTY1NTM3LCBrZXlfc2l6ZT0xMDI0LCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgp
CisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfdG9rZW4oc2VsZiwgYWRkcjogTmV0d29ya0Fk
ZHJlc3MsIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9t
ZXNzYWdlID0gZW5jb2RlX2FkZHJlc3MoYWRkcikgKyBiInwiICsgZGVzdGluYXRpb25fY2lkCisg
ICAgICAgIHJldHVybiBzZWxmLl9rZXkucHVibGljX2tleSgpLmVuY3J5cHQoCisgICAgICAgICAg
ICByZXRyeV9tZXNzYWdlLAorICAgICAgICAgICAgcGFkZGluZy5PQUVQKAorICAgICAgICAgICAg
ICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVzLlNIQTI1NigpKSwgYWxnb3JpdGhtPWhhc2hlcy5T
SEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHZhbGlkYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCB0b2tlbjogYnl0ZXMp
IC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9tZXNzYWdlID0gc2VsZi5fa2V5LmRlY3J5cHQoCisg
ICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgKKyAgICAgICAgICAg
ICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29yaXRobT1oYXNoZXMu
U0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAg
ZW5jb2RlZF9hZGRyLCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gcmV0cnlfbWVzc2FnZS5zcGxp
dChiInwiLCBtYXhzcGxpdD0xKQorICAgICAgICBpZiBlbmNvZGVkX2FkZHIgIT0gZW5jb2RlX2Fk
ZHJlc3MoYWRkcik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZW1vdGUgYWRkcmVz
cyBkb2VzIG5vdCBtYXRjaC4iKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxfY29ubmVjdGlvbl9p
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MjM2
ODZmNWQ2YmNkNmY5MGI0ZTUzZjM3MTRmM2JmOWI2ZjYxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKQEAgLTAsMCArMSwyMTQgQEAK
K2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworZnJv
bSAucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gLnBhY2tldF9idWlsZGVyIGlt
cG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisK
KworY2xhc3MgUXVpY1N0cmVhbToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHN0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIG1heF9zdHJl
YW1fZGF0YV9sb2NhbDogaW50ID0gMCwKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZTog
aW50ID0gMCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfYmxvY2tlZCA9IEZhbHNl
CisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gbWF4X3N0cmVhbV9kYXRhX2xv
Y2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gbWF4X3N0
cmVhbV9kYXRhX3JlbW90ZQorICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gVHJ1
ZQorCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgc2VsZi5fcmVjdl9oaWdoZXN0ID0gMCAgIyB0aGUgaGlnaGVzdCBvZmZz
ZXQgZXZlciBzZWVuCisgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHNlbGYuX3NlbmRfYWNrZWQgPSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuX3NlbmRf
YnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfZmluOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCA9IDAgICMg
dGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAgICAgc2VsZi5fc2Vu
ZF9idWZmZXJfc3RvcCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0b3Agb2YgdGhlIGJ1ZmZl
cgorICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSAwCisgICAgICAgIHNlbGYuX3NlbmRfcGVu
ZGluZyA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZhbHNl
CisKKyAgICAgICAgc2VsZi5fX3N0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIHN0cmVhbV9pZChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1
cm4gc2VsZi5fX3N0cmVhbV9pZAorCisgICAgIyByZWFkZXIKKworICAgIGRlZiBhZGRfZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSkgLT4gT3B0aW9uYWxbZXZlbnRzLlN0cmVhbURh
dGFSZWNlaXZlZF06CisgICAgICAgICIiIgorICAgICAgICBBZGQgYSBmcmFtZSBvZiByZWNlaXZl
ZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcG9zID0gZnJhbWUub2Zmc2V0IC0gc2VsZi5f
cmVjdl9idWZmZXJfc3RhcnQKKyAgICAgICAgY291bnQgPSBsZW4oZnJhbWUuZGF0YSkKKyAgICAg
ICAgZnJhbWVfZW5kID0gZnJhbWUub2Zmc2V0ICsgY291bnQKKworICAgICAgICAjIHdlIHNob3Vs
ZCByZWNlaXZlIG5vIG1vcmUgZGF0YSBiZXlvbmQgRklOIQorICAgICAgICBpZiBzZWxmLl9yZWN2
X2J1ZmZlcl9maW4gaXMgbm90IE5vbmUgYW5kIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfYnVmZmVy
X2ZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRGF0YSByZWNlaXZlZCBiZXlvbmQg
RklOIikKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXJfZmluID0gZnJhbWVfZW5kCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfaGln
aGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IGZyYW1lX2VuZAorCisgICAg
ICAgICMgZmFzdCBwYXRoOiBuZXcgaW4tb3JkZXIgY2h1bmsKKyAgICAgICAgaWYgcG9zID09IDAg
YW5kIGNvdW50IGFuZCBub3Qgc2VsZi5fcmVjdl9idWZmZXI6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCArPSBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJl
YW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1mcmFtZS5kYXRhLCBlbmRfc3Ry
ZWFtPWZyYW1lLmZpbiwgc3RyZWFtX2lkPXNlbGYuX19zdHJlYW1faWQKKyAgICAgICAgICAgICkK
KworICAgICAgICAjIGRpc2NhcmQgZHVwbGljYXRlIGRhdGEKKyAgICAgICAgaWYgcG9zIDwgMDoK
KyAgICAgICAgICAgIGZyYW1lLmRhdGEgPSBmcmFtZS5kYXRhWy1wb3M6XQorICAgICAgICAgICAg
ZnJhbWUub2Zmc2V0IC09IHBvcworICAgICAgICAgICAgcG9zID0gMAorCisgICAgICAgICMgbWFy
a2VkIHJlY2VpdmVkIHJhbmdlCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IGZyYW1lLm9mZnNldDoK
KyAgICAgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzLmFkZChmcmFtZS5vZmZzZXQsIGZyYW1lX2Vu
ZCkKKworICAgICAgICAjIGFkZCBuZXcgZGF0YQorICAgICAgICBnYXAgPSBwb3MgLSBsZW4oc2Vs
Zi5fcmVjdl9idWZmZXIpCisgICAgICAgIGlmIGdhcCA+IDA6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlciArPSBieXRlYXJyYXkoZ2FwKQorICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcltw
b3MgOiBwb3MgKyBjb3VudF0gPSBmcmFtZS5kYXRhCisKKyAgICAgICAgIyByZXR1cm4gZGF0YSBm
cm9tIHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGRhdGEgPSBzZWxmLl9wdWxsX2Rh
dGEoKQorICAgICAgICBlbmRfc3RyZWFtID0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPT0gc2Vs
Zi5fcmVjdl9idWZmZXJfZmluCisgICAgICAgIGlmIGRhdGEgb3IgZW5kX3N0cmVhbToKKyAgICAg
ICAgICAgIHJldHVybiBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c2VsZi5fX3N0cmVh
bV9pZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBfcHVsbF9kYXRhKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAg
ICAgICAgUmVtb3ZlIGRhdGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAg
IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBzZWxmLl9y
ZWN2X3Jhbmdlc1swXS5zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAorICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBGYWxzZQor
ICAgICAgICBpZiBub3QgaGFzX2RhdGFfdG9fcmVhZDoKKyAgICAgICAgICAgIHJldHVybiBiIiIK
KworICAgICAgICByID0gc2VsZi5fcmVjdl9yYW5nZXMuc2hpZnQoKQorICAgICAgICBwb3MgPSBy
LnN0b3AgLSByLnN0YXJ0CisgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9yZWN2X2J1ZmZlcls6
cG9zXSkKKyAgICAgICAgZGVsIHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdCisgICAgICAgIHNlbGYu
X3JlY3ZfYnVmZmVyX3N0YXJ0ID0gci5zdG9wCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAj
IHdyaXRlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5leHRfc2VuZF9vZmZzZXQoc2VsZikg
LT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIG9mZnNldCBmb3IgdGhlIG5leHQgZnJh
bWUgdG8gc2VuZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzcGFj
ZSBuZWVkZWQgZm9yIHRoZSBmcmFtZSdzIGBvZmZzZXRgIGZpZWxkLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfcGVuZGluZ1swXS5zdGFy
dAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9z
ZW5kX2J1ZmZlcl9zdG9wCisKKyAgICBkZWYgZ2V0X2ZyYW1lKAorICAgICAgICBzZWxmLCBtYXhf
c2l6ZTogaW50LCBtYXhfb2Zmc2V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICkgLT4gT3B0
aW9uYWxbUXVpY1N0cmVhbUZyYW1lXToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhIGZyYW1l
IG9mIGRhdGEgdG8gc2VuZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgZ2V0IHRoZSBmaXJzdCBw
ZW5kaW5nIGRhdGEgcmFuZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgciA9IHNlbGYuX3Nl
bmRfcGVuZGluZ1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGlm
IHNlbGYuX3NlbmRfcGVuZGluZ19lb2Y6CisgICAgICAgICAgICAgICAgIyBGSU4gb25seQorICAg
ICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBGYWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBRdWljU3RyZWFtRnJhbWUoZmluPVRydWUsIG9mZnNldD1zZWxmLl9zZW5kX2J1
ZmZlcl9maW4pCisKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVl
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYXBwbHkgZmxvdyBjb250cm9s
CisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgICAgICBzdG9wID0gbWluKHIuc3RvcCwgc3Rh
cnQgKyBtYXhfc2l6ZSkKKyAgICAgICAgaWYgbWF4X29mZnNldCBpcyBub3QgTm9uZSBhbmQgc3Rv
cCA+IG1heF9vZmZzZXQ6CisgICAgICAgICAgICBzdG9wID0gbWF4X29mZnNldAorICAgICAgICBp
ZiBzdG9wIDw9IHN0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNy
ZWF0ZSBmcmFtZQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAgICAgICAgICAg
IGRhdGE9Ynl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJbCisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0IC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgOiBzdG9wIC0gc2Vs
Zi5fc2VuZF9idWZmZXJfc3RhcnQKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgb2Zmc2V0PXN0YXJ0LAorICAgICAgICApCisgICAgICAgIHNlbGYuX3NlbmRf
cGVuZGluZy5zdWJ0cmFjdChzdGFydCwgc3RvcCkKKworICAgICAgICAjIHRyYWNrIHRoZSBoaWdo
ZXN0IG9mZnNldCBldmVyIHNlbnQKKyAgICAgICAgaWYgc3RvcCA+IHNlbGYuX3NlbmRfaGlnaGVz
dDoKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9IHN0b3AKKworICAgICAgICAjIGlm
IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIEVPRiB3YXMgd3JpdHRlbiwgc2V0IHRoZSBGSU4gYml0
CisgICAgICAgIGlmIHNlbGYuX3NlbmRfYnVmZmVyX2ZpbiA9PSBzdG9wOgorICAgICAgICAgICAg
ZnJhbWUuZmluID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZh
bHNlCisKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgb25fZGF0YV9kZWxpdmVyeSgK
KyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdGFydDogaW50LCBz
dG9wOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3
aGVuIHNlbnQgZGF0YSBpcyBBQ0snZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2VuZF9i
dWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICBpZiBkZWxpdmVyeSA9PSBRdWljRGVsaXZl
cnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2Fja2VkLmFkZChzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICBm
aXJzdF9yYW5nZSA9IHNlbGYuX3NlbmRfYWNrZWRbMF0KKyAgICAgICAgICAgICAgICBpZiBmaXJz
dF9yYW5nZS5zdGFydCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydDoKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IGZpcnN0X3JhbmdlLnN0b3AgLSBmaXJzdF9yYW5nZS5zdGFydAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLnNoaWZ0KCkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgKz0gc2l6ZQorICAgICAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5fc2VuZF9idWZmZXJbOnNpemVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBp
ZiBzdG9wID4gc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLmFkZChz
dGFydCwgc3RvcCkKKyAgICAgICAgICAgIGlmIHN0b3AgPT0gc2VsZi5fc2VuZF9idWZmZXJfZmlu
OgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfZW1wdHkgPSBGYWxzZQorICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFdyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgUVVJQyBzdHJl
YW0uCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fc2VuZF9idWZmZXJfZmluIGlz
IE5vbmUsICJjYW5ub3QgY2FsbCB3cml0ZSgpIGFmdGVyIEZJTiIKKyAgICAgICAgc2l6ZSA9IGxl
bihkYXRhKQorCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVy
X2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZy5hZGQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCwgc2VsZi5fc2VuZF9idWZmZXJf
c3RvcCArIHNpemUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVy
ICs9IGRhdGEKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AgKz0gc2l6ZQorICAg
ICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0
eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gPSBzZWxmLl9zZW5k
X2J1ZmZlcl9zdG9wCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gVHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OGI4YzI2ZmE0YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwyOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0
X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2V2ZW50cy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNv
dmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMGI2OWZmMmQzMjI3NDE2ZTcxNWRmZTE4YjgwMjY5ZTBiMWMyNTliCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpAQCAtMCwwICsx
LDE5MjggQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHNzbAoraW1wb3J0IHN0cnVjdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFu
YWdlcgorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVt
IGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJv
bSB0eXBpbmcgaW1wb3J0ICgKKyAgICBBbnksCisgICAgQ2FsbGFibGUsCisgICAgRGljdCwKKyAg
ICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBTZXF1ZW5jZSwKKyAg
ICBUdXBsZSwKKyAgICBUeXBlVmFyLAorICAgIFVuaW9uLAorKQorCitpbXBvcnQgY2VydGlmaQor
ZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3JhcGh5LmV4Y2VwdGlv
bnMgaW1wb3J0IEludmFsaWRTaWduYXR1cmUKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5iYWNr
ZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmlu
ZGluZ3Mub3BlbnNzbC5iaW5kaW5nIGltcG9ydCBCaW5kaW5nCitmcm9tIGNyeXB0b2dyYXBoeS5o
YXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBobWFjLCBzZXJpYWxpemF0aW9uCitmcm9t
IGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCAoCisgICAg
ZHNhLAorICAgIGVjLAorICAgIHBhZGRpbmcsCisgICAgcnNhLAorICAgIHg0NDgsCisgICAgeDI1
NTE5LAorKQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMua2RmLmhrZGYgaW1w
b3J0IEhLREZFeHBhbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLnNlcmlh
bGl6YXRpb24gaW1wb3J0IEVuY29kaW5nLCBQdWJsaWNGb3JtYXQKKworZnJvbSAuYnVmZmVyIGlt
cG9ydCBCdWZmZXIKKworYmluZGluZyA9IEJpbmRpbmcoKQorYmluZGluZy5pbml0X3N0YXRpY19s
b2NrcygpCitmZmkgPSBiaW5kaW5nLmZmaQorbGliID0gYmluZGluZy5saWIKKworVExTX1ZFUlNJ
T05fMV8yID0gMHgwMzAzCitUTFNfVkVSU0lPTl8xXzMgPSAweDAzMDQKK1RMU19WRVJTSU9OXzFf
M19EUkFGVF8yOCA9IDB4N0YxQworVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3ID0gMHg3RjFCCitU
TFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYgPSAweDdGMUEKKworVCA9IFR5cGVWYXIoIlQiKQorCisj
IGZhY2lsaXRhdGUgbW9ja2luZyBmb3IgdGhlIHRlc3Qgc3VpdGUKK3V0Y25vdyA9IGRhdGV0aW1l
LmRhdGV0aW1lLnV0Y25vdworCisKK2NsYXNzIEFsZXJ0RGVzY3JpcHRpb24oSW50RW51bSk6Cisg
ICAgY2xvc2Vfbm90aWZ5ID0gMAorICAgIHVuZXhwZWN0ZWRfbWVzc2FnZSA9IDEwCisgICAgYmFk
X3JlY29yZF9tYWMgPSAyMAorICAgIHJlY29yZF9vdmVyZmxvdyA9IDIyCisgICAgaGFuZHNoYWtl
X2ZhaWx1cmUgPSA0MAorICAgIGJhZF9jZXJ0aWZpY2F0ZSA9IDQyCisgICAgdW5zdXBwb3J0ZWRf
Y2VydGlmaWNhdGUgPSA0MworICAgIGNlcnRpZmljYXRlX3Jldm9rZWQgPSA0NAorICAgIGNlcnRp
ZmljYXRlX2V4cGlyZWQgPSA0NQorICAgIGNlcnRpZmljYXRlX3Vua25vd24gPSA0NgorICAgIGls
bGVnYWxfcGFyYW1ldGVyID0gNDcKKyAgICB1bmtub3duX2NhID0gNDgKKyAgICBhY2Nlc3NfZGVu
aWVkID0gNDkKKyAgICBkZWNvZGVfZXJyb3IgPSA1MAorICAgIGRlY3J5cHRfZXJyb3IgPSA1MQor
ICAgIHByb3RvY29sX3ZlcnNpb24gPSA3MAorICAgIGluc3VmZmljaWVudF9zZWN1cml0eSA9IDcx
CisgICAgaW50ZXJuYWxfZXJyb3IgPSA4MAorICAgIGluYXBwcm9wcmlhdGVfZmFsbGJhY2sgPSA4
NgorICAgIHVzZXJfY2FuY2VsZWQgPSA5MAorICAgIG1pc3NpbmdfZXh0ZW5zaW9uID0gMTA5Cisg
ICAgdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uID0gMTEwCisgICAgdW5yZWNvZ25pemVkX25hbWUgPSAx
MTIKKyAgICBiYWRfY2VydGlmaWNhdGVfc3RhdHVzX3Jlc3BvbnNlID0gMTEzCisgICAgdW5rbm93
bl9wc2tfaWRlbnRpdHkgPSAxMTUKKyAgICBjZXJ0aWZpY2F0ZV9yZXF1aXJlZCA9IDExNgorICAg
IG5vX2FwcGxpY2F0aW9uX3Byb3RvY29sID0gMTIwCisKKworY2xhc3MgQWxlcnQoRXhjZXB0aW9u
KToKKyAgICBkZXNjcmlwdGlvbjogQWxlcnREZXNjcmlwdGlvbgorCisKK2NsYXNzIEFsZXJ0QmFk
Q2VydGlmaWNhdGUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5i
YWRfY2VydGlmaWNhdGUKKworCitjbGFzcyBBbGVydENlcnRpZmljYXRlRXhwaXJlZChBbGVydCk6
CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmNlcnRpZmljYXRlX2V4cGlyZWQK
KworCitjbGFzcyBBbGVydERlY3J5cHRFcnJvcihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBB
bGVydERlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3IKKworCitjbGFzcyBBbGVydEhhbmRzaGFrZUZh
aWx1cmUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5oYW5kc2hh
a2VfZmFpbHVyZQorCisKK2NsYXNzIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcihBbGVydCk6CisgICAg
ZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCisKKworY2xh
c3MgQWxlcnRJbnRlcm5hbEVycm9yKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVz
Y3JpcHRpb24uaW50ZXJuYWxfZXJyb3IKKworCitjbGFzcyBBbGVydFByb3RvY29sVmVyc2lvbihB
bGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNp
b24KKworCitjbGFzcyBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlKEFsZXJ0KToKKyAgICBkZXNjcmlw
dGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlCisKKworY2xhc3MgRGly
ZWN0aW9uKEVudW0pOgorICAgIERFQ1JZUFQgPSAwCisgICAgRU5DUllQVCA9IDEKKworCitjbGFz
cyBFcG9jaChFbnVtKToKKyAgICBJTklUSUFMID0gMAorICAgIFpFUk9fUlRUID0gMQorICAgIEhB
TkRTSEFLRSA9IDIKKyAgICBPTkVfUlRUID0gMworCisKK2NsYXNzIFN0YXRlKEVudW0pOgorICAg
IENMSUVOVF9IQU5EU0hBS0VfU1RBUlQgPSAwCisgICAgQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVM
TE8gPSAxCisgICAgQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUyA9IDIKKyAgICBD
TElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEUgPSAzCisgICAg
Q0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9DRVJUSUZJQ0FURSA9IDQKKyAgICBDTElFTlRfRVhQ
RUNUX0NFUlRJRklDQVRFX1ZFUklGWSA9IDUKKyAgICBDTElFTlRfRVhQRUNUX0ZJTklTSEVEID0g
NgorICAgIENMSUVOVF9QT1NUX0hBTkRTSEFLRSA9IDcKKworICAgIFNFUlZFUl9FWFBFQ1RfQ0xJ
RU5UX0hFTExPID0gOAorICAgIFNFUlZFUl9FWFBFQ1RfRklOSVNIRUQgPSA5CisgICAgU0VSVkVS
X1BPU1RfSEFORFNIQUtFID0gMTAKKworCitkZWYgaGtkZl9sYWJlbChsYWJlbDogYnl0ZXMsIGhh
c2hfdmFsdWU6IGJ5dGVzLCBsZW5ndGg6IGludCkgLT4gYnl0ZXM6CisgICAgZnVsbF9sYWJlbCA9
IGIidGxzMTMgIiArIGxhYmVsCisgICAgcmV0dXJuICgKKyAgICAgICAgc3RydWN0LnBhY2soIiFI
QiIsIGxlbmd0aCwgbGVuKGZ1bGxfbGFiZWwpKQorICAgICAgICArIGZ1bGxfbGFiZWwKKyAgICAg
ICAgKyBzdHJ1Y3QucGFjaygiIUIiLCBsZW4oaGFzaF92YWx1ZSkpCisgICAgICAgICsgaGFzaF92
YWx1ZQorICAgICkKKworCitkZWYgaGtkZl9leHBhbmRfbGFiZWwoCisgICAgYWxnb3JpdGhtOiBo
YXNoZXMuSGFzaEFsZ29yaXRobSwKKyAgICBzZWNyZXQ6IGJ5dGVzLAorICAgIGxhYmVsOiBieXRl
cywKKyAgICBoYXNoX3ZhbHVlOiBieXRlcywKKyAgICBsZW5ndGg6IGludCwKKykgLT4gYnl0ZXM6
CisgICAgcmV0dXJuIEhLREZFeHBhbmQoCisgICAgICAgIGFsZ29yaXRobT1hbGdvcml0aG0sCisg
ICAgICAgIGxlbmd0aD1sZW5ndGgsCisgICAgICAgIGluZm89aGtkZl9sYWJlbChsYWJlbCwgaGFz
aF92YWx1ZSwgbGVuZ3RoKSwKKyAgICAgICAgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSwKKyAg
ICApLmRlcml2ZShzZWNyZXQpCisKKworZGVmIGhrZGZfZXh0cmFjdCgKKyAgICBhbGdvcml0aG06
IGhhc2hlcy5IYXNoQWxnb3JpdGhtLCBzYWx0OiBieXRlcywga2V5X21hdGVyaWFsOiBieXRlcwor
KSAtPiBieXRlczoKKyAgICBoID0gaG1hYy5ITUFDKHNhbHQsIGFsZ29yaXRobSwgYmFja2VuZD1k
ZWZhdWx0X2JhY2tlbmQoKSkKKyAgICBoLnVwZGF0ZShrZXlfbWF0ZXJpYWwpCisgICAgcmV0dXJu
IGguZmluYWxpemUoKQorCisKK2RlZiBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICBkYXRhOiBi
eXRlcywgcGFzc3dvcmQ6IE9wdGlvbmFsW2J5dGVzXQorKSAtPiBVbmlvbltkc2EuRFNBUHJpdmF0
ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2YXRlS2V5XToKKyAg
ICAiIiIKKyAgICBMb2FkIGEgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkuCisgICAgIiIiCisgICAg
cmV0dXJuIHNlcmlhbGl6YXRpb24ubG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgICAgIGRhdGEs
IHBhc3N3b3JkPXBhc3N3b3JkLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgKQorCisK
K2RlZiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhkYXRhOiBieXRlcykgLT4gTGlzdFt4NTA5
LkNlcnRpZmljYXRlXToKKyAgICAiIiIKKyAgICBMb2FkIGEgY2hhaW4gb2YgUEVNLWVuY29kZWQg
WDUwOSBjZXJ0aWZpY2F0ZXMuCisgICAgIiIiCisgICAgYm91bmRhcnkgPSBiIi0tLS0tRU5EIENF
UlRJRklDQVRFLS0tLS1cbiIKKyAgICBjZXJ0aWZpY2F0ZXMgPSBbXQorICAgIGZvciBjaHVuayBp
biBkYXRhLnNwbGl0KGJvdW5kYXJ5KToKKyAgICAgICAgaWYgY2h1bms6CisgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHg1MDkubG9hZF9wZW1feDUwOV9j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgKyBib3VuZGFyeSwgYmFja2Vu
ZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg
ICByZXR1cm4gY2VydGlmaWNhdGVzCisKKworZGVmIG9wZW5zc2xfYXNzZXJ0KG9rOiBib29sLCBm
dW5jOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgbm90IG9rOgorICAgICAgICBsaWIuRVJSX2NsZWFy
X2Vycm9yKCkKKyAgICAgICAgcmFpc2UgQWxlcnRJbnRlcm5hbEVycm9yKCJPcGVuU1NMIGNhbGwg
dG8gJXMgZmFpbGVkIiAlIGZ1bmMpCisKKworZGVmIG9wZW5zc2xfZGVjb2RlX3N0cmluZyhjaGFy
cCkgLT4gc3RyOgorICAgIHJldHVybiBmZmkuc3RyaW5nKGNoYXJwKS5kZWNvZGUoInV0Zi04Iikg
aWYgY2hhcnAgZWxzZSAiIgorCisKK2RlZiBvcGVuc3NsX2VuY29kZV9wYXRoKHM6IE9wdGlvbmFs
W3N0cl0pIC0+IEFueToKKyAgICBpZiBzIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gb3Mu
ZnNlbmNvZGUocykKKyAgICByZXR1cm4gZmZpLk5VTEwKKworCitkZWYgY2VydF94NTA5X3B0cihj
ZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSkgLT4gQW55OgorICAgICIiIgorICAgIEFjY2Vz
c29yIGZvciBwcml2YXRlIGF0dHJpYnV0ZS4KKyAgICAiIiIKKyAgICByZXR1cm4gZ2V0YXR0cihj
ZXJ0aWZpY2F0ZSwgIl94NTA5IikKKworCitkZWYgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgIGNl
cnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRlLAorICAgIGNoYWluOiBMaXN0W3g1MDkuQ2VydGlm
aWNhdGVdID0gW10sCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg
IGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICBjYWZpbGU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCispIC0+IE5vbmU6
CisgICAgIyB2ZXJpZnkgZGF0ZXMKKyAgICBub3cgPSB1dGNub3coKQorICAgIGlmIG5vdyA8IGNl
cnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmU6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKyAgICBpZiBub3cgPiBj
ZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXI6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIgdmFsaWQiKQorCisgICAgIyB2ZXJp
Znkgc3ViamVjdAorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBzdWJq
ZWN0ID0gW10KKyAgICAgICAgc3ViamVjdEFsdE5hbWU6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSA9
IFtdCisgICAgICAgIGZvciBhdHRyIGluIGNlcnRpZmljYXRlLnN1YmplY3Q6CisgICAgICAgICAg
ICBpZiBhdHRyLm9pZCA9PSB4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUU6CisgICAgICAgICAgICAg
ICAgc3ViamVjdC5hcHBlbmQoKCgiY29tbW9uTmFtZSIsIGF0dHIudmFsdWUpLCkpCisgICAgICAg
IGZvciBleHQgaW4gY2VydGlmaWNhdGUuZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXh0LnZhbHVlLCB4NTA5LlN1YmplY3RBbHRlcm5hdGl2ZU5hbWUpOgorICAgICAgICAg
ICAgICAgIGZvciBuYW1lIGluIGV4dC52YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShuYW1lLCB4NTA5LkROU05hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
amVjdEFsdE5hbWUuYXBwZW5kKCgiRE5TIiwgbmFtZS52YWx1ZSkpCisKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lKAorICAgICAgICAgICAgICAgIHsic3ViamVj
dCI6IHR1cGxlKHN1YmplY3QpLCAic3ViamVjdEFsdE5hbWUiOiB0dXBsZShzdWJqZWN0QWx0TmFt
ZSl9LAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorICAgICAg
ICBleGNlcHQgc3NsLkNlcnRpZmljYXRlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2Ug
QWxlcnRCYWRDZXJ0aWZpY2F0ZSgiXG4iLmpvaW4oZXhjLmFyZ3MpKSBmcm9tIGV4YworCisgICAg
IyB2ZXJpZnkgY2VydGlmaWNhdGUgY2hhaW4KKyAgICBzdG9yZSA9IGxpYi5YNTA5X1NUT1JFX25l
dygpCisgICAgb3BlbnNzbF9hc3NlcnQoc3RvcmUgIT0gZmZpLk5VTEwsICJYNTA5X3N0b3JlX25l
dyIpCisgICAgc3RvcmUgPSBmZmkuZ2Moc3RvcmUsIGxpYi5YNTA5X1NUT1JFX2ZyZWUpCisKKyAg
ICAjIGxvYWQgZGVmYXVsdCBDQXMKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgbGliLlg1
MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMoc3RvcmUpLCAiWDUwOV9TVE9SRV9zZXRfZGVmYXVs
dF9wYXRocyIKKyAgICApCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgIGxpYi5YNTA5X1NU
T1JFX2xvYWRfbG9jYXRpb25zKAorICAgICAgICAgICAgc3RvcmUsIG9wZW5zc2xfZW5jb2RlX3Bh
dGgoY2VydGlmaS53aGVyZSgpKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChOb25lKSwKKyAgICAgICAg
KSwKKyAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAorICAgICkKKworICAgICMg
bG9hZCBleHRyYSBDQXMKKyAgICBpZiBjYWRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBj
ZXJ0IGluIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGNhZGF0YSk6CisgICAgICAgICAgICBv
cGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgICAgICBsaWIuWDUwOV9TVE9SRV9hZGRfY2VydChz
dG9yZSwgY2VydF94NTA5X3B0cihjZXJ0KSksCisgICAgICAgICAgICAgICAgIlg1MDlfU1RPUkVf
YWRkX2NlcnQiLAorICAgICAgICAgICAgKQorCisgICAgaWYgY2FmaWxlIGlzIG5vdCBOb25lIG9y
IGNhcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAg
ICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAgICAgICBzdG9yZSwg
b3BlbnNzbF9lbmNvZGVfcGF0aChjYWZpbGUpLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNhcGF0aCkK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAiWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucyIs
CisgICAgICAgICkKKworICAgIGNoYWluX3N0YWNrID0gbGliLnNrX1g1MDlfbmV3X251bGwoKQor
ICAgIG9wZW5zc2xfYXNzZXJ0KGNoYWluX3N0YWNrICE9IGZmaS5OVUxMLCAic2tfWDUwOV9uZXdf
bnVsbCIpCisgICAgY2hhaW5fc3RhY2sgPSBmZmkuZ2MoY2hhaW5fc3RhY2ssIGxpYi5za19YNTA5
X2ZyZWUpCisgICAgZm9yIGNlcnQgaW4gY2hhaW46CisgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAor
ICAgICAgICAgICAgbGliLnNrX1g1MDlfcHVzaChjaGFpbl9zdGFjaywgY2VydF94NTA5X3B0cihj
ZXJ0KSksICJza19YNTA5X3B1c2giCisgICAgICAgICkKKworICAgIHN0b3JlX2N0eCA9IGxpYi5Y
NTA5X1NUT1JFX0NUWF9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3JlX2N0eCAhPSBmZmku
TlVMTCwgIlg1MDlfU1RPUkVfQ1RYX25ldyIpCisgICAgc3RvcmVfY3R4ID0gZmZpLmdjKHN0b3Jl
X2N0eCwgbGliLlg1MDlfU1RPUkVfQ1RYX2ZyZWUpCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAg
ICAgIGxpYi5YNTA5X1NUT1JFX0NUWF9pbml0KAorICAgICAgICAgICAgc3RvcmVfY3R4LCBzdG9y
ZSwgY2VydF94NTA5X3B0cihjZXJ0aWZpY2F0ZSksIGNoYWluX3N0YWNrCisgICAgICAgICksCisg
ICAgICAgICJYNTA5X1NUT1JFX0NUWF9pbml0IiwKKyAgICApCisKKyAgICByZXMgPSBsaWIuWDUw
OV92ZXJpZnlfY2VydChzdG9yZV9jdHgpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgZXJyID0g
bGliLlg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihzdG9yZV9jdHgpCisgICAgICAgIGVycl9zdHIg
PSBvcGVuc3NsX2RlY29kZV9zdHJpbmcobGliLlg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5n
KGVycikpCisgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoZXJyX3N0cikKKworCitj
bGFzcyBDaXBoZXJTdWl0ZShJbnRFbnVtKToKKyAgICBBRVNfMTI4X0dDTV9TSEEyNTYgPSAweDEz
MDEKKyAgICBBRVNfMjU2X0dDTV9TSEEzODQgPSAweDEzMDIKKyAgICBDSEFDSEEyMF9QT0xZMTMw
NV9TSEEyNTYgPSAweDEzMDMKKyAgICBFTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViA9IDB4
MDBGRgorCisKK2NsYXNzIENvbXByZXNzaW9uTWV0aG9kKEludEVudW0pOgorICAgIE5VTEwgPSAw
CisKKworY2xhc3MgRXh0ZW5zaW9uVHlwZShJbnRFbnVtKToKKyAgICBTRVJWRVJfTkFNRSA9IDAK
KyAgICBTVEFUVVNfUkVRVUVTVCA9IDUKKyAgICBTVVBQT1JURURfR1JPVVBTID0gMTAKKyAgICBT
SUdOQVRVUkVfQUxHT1JJVEhNUyA9IDEzCisgICAgQUxQTiA9IDE2CisgICAgQ09NUFJFU1NfQ0VS
VElGSUNBVEUgPSAyNworICAgIFBSRV9TSEFSRURfS0VZID0gNDEKKyAgICBFQVJMWV9EQVRBID0g
NDIKKyAgICBTVVBQT1JURURfVkVSU0lPTlMgPSA0MworICAgIENPT0tJRSA9IDQ0CisgICAgUFNL
X0tFWV9FWENIQU5HRV9NT0RFUyA9IDQ1CisgICAgS0VZX1NIQVJFID0gNTEKKyAgICBRVUlDX1RS
QU5TUE9SVF9QQVJBTUVURVJTID0gNjU0NDUKKyAgICBFTkNSWVBURURfU0VSVkVSX05BTUUgPSA2
NTQ4NgorCisKK2NsYXNzIEdyb3VwKEludEVudW0pOgorICAgIFNFQ1AyNTZSMSA9IDB4MDAxNwor
ICAgIFNFQ1AzODRSMSA9IDB4MDAxOAorICAgIFNFQ1A1MjFSMSA9IDB4MDAxOQorICAgIFgyNTUx
OSA9IDB4MDAxRAorICAgIFg0NDggPSAweDAwMUUKKyAgICBHUkVBU0UgPSAweEFBQUEKKworCitj
bGFzcyBIYW5kc2hha2VUeXBlKEludEVudW0pOgorICAgIENMSUVOVF9IRUxMTyA9IDEKKyAgICBT
RVJWRVJfSEVMTE8gPSAyCisgICAgTkVXX1NFU1NJT05fVElDS0VUID0gNAorICAgIEVORF9PRl9F
QVJMWV9EQVRBID0gNQorICAgIEVOQ1JZUFRFRF9FWFRFTlNJT05TID0gOAorICAgIENFUlRJRklD
QVRFID0gMTEKKyAgICBDRVJUSUZJQ0FURV9SRVFVRVNUID0gMTMKKyAgICBDRVJUSUZJQ0FURV9W
RVJJRlkgPSAxNQorICAgIEZJTklTSEVEID0gMjAKKyAgICBLRVlfVVBEQVRFID0gMjQKKyAgICBD
T01QUkVTU0VEX0NFUlRJRklDQVRFID0gMjUKKyAgICBNRVNTQUdFX0hBU0ggPSAyNTQKKworCitj
bGFzcyBQc2tLZXlFeGNoYW5nZU1vZGUoSW50RW51bSk6CisgICAgUFNLX0tFID0gMAorICAgIFBT
S19ESEVfS0UgPSAxCisKKworY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtKEludEVudW0pOgorICAg
IEVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYgPSAweDA0MDMKKyAgICBFQ0RTQV9TRUNQMzg0UjFfU0hB
Mzg0ID0gMHgwNTAzCisgICAgRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiA9IDB4MDYwMworICAgIEVE
MjU1MTkgPSAweDA4MDcKKyAgICBFRDQ0OCA9IDB4MDgwOAorICAgIFJTQV9QS0NTMV9TSEEyNTYg
PSAweDA0MDEKKyAgICBSU0FfUEtDUzFfU0hBMzg0ID0gMHgwNTAxCisgICAgUlNBX1BLQ1MxX1NI
QTUxMiA9IDB4MDYwMQorICAgIFJTQV9QU1NfUFNTX1NIQTI1NiA9IDB4MDgwOQorICAgIFJTQV9Q
U1NfUFNTX1NIQTM4NCA9IDB4MDgwQQorICAgIFJTQV9QU1NfUFNTX1NIQTUxMiA9IDB4MDgwQgor
ICAgIFJTQV9QU1NfUlNBRV9TSEEyNTYgPSAweDA4MDQKKyAgICBSU0FfUFNTX1JTQUVfU0hBMzg0
ID0gMHgwODA1CisgICAgUlNBX1BTU19SU0FFX1NIQTUxMiA9IDB4MDgwNgorCisgICAgIyBsZWdh
Y3kKKyAgICBSU0FfUEtDUzFfU0hBMSA9IDB4MDIwMQorICAgIFNIQTFfRFNBID0gMHgwMjAyCisg
ICAgRUNEU0FfU0hBMSA9IDB4MDIwMworCisKKyMgQkxPQ0tTCisKKworQGNvbnRleHRtYW5hZ2Vy
CitkZWYgcHVsbF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gR2VuZXJhdG9y
OgorICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgYiBpbiBidWYucHVsbF9ieXRlcyhjYXBhY2l0eSk6
CisgICAgICAgIGxlbmd0aCA9IChsZW5ndGggPDwgOCkgfCBiCisgICAgZW5kID0gYnVmLnRlbGwo
KSArIGxlbmd0aAorICAgIHlpZWxkIGxlbmd0aAorICAgIGFzc2VydCBidWYudGVsbCgpID09IGVu
ZAorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfYmxvY2soYnVmOiBCdWZmZXIsIGNhcGFj
aXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICAiIiIKKyAgICBDb250ZXh0IG1hbmFnZXIgdG8g
cHVzaCBhIHZhcmlhYmxlLWxlbmd0aCBibG9jaywgd2l0aCBgY2FwYWNpdHlgIGJ5dGVzCisgICAg
dG8gd3JpdGUgdGhlIGxlbmd0aC4KKyAgICAiIiIKKyAgICBzdGFydCA9IGJ1Zi50ZWxsKCkgKyBj
YXBhY2l0eQorICAgIGJ1Zi5zZWVrKHN0YXJ0KQorICAgIHlpZWxkCisgICAgZW5kID0gYnVmLnRl
bGwoKQorICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0CisgICAgd2hpbGUgY2FwYWNpdHk6CisgICAg
ICAgIGJ1Zi5zZWVrKHN0YXJ0IC0gY2FwYWNpdHkpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KChs
ZW5ndGggPj4gKDggKiAoY2FwYWNpdHkgLSAxKSkpICYgMHhGRikKKyAgICAgICAgY2FwYWNpdHkg
LT0gMQorICAgIGJ1Zi5zZWVrKGVuZCkKKworCisjIExJU1RTCisKKworZGVmIHB1bGxfbGlzdChi
dWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW10sIFRdKSAtPiBMaXN0
W1RdOgorICAgICIiIgorICAgIFB1bGwgYSBsaXN0IG9mIGl0ZW1zLgorICAgICIiIgorICAgIGl0
ZW1zID0gW10KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkgYXMgbGVuZ3RoOgor
ICAgICAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgIHdoaWxlIGJ1Zi50ZWxs
KCkgPCBlbmQ6CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoZnVuYygpKQorICAgIHJldHVybiBp
dGVtcworCisKK2RlZiBwdXNoX2xpc3QoCisgICAgYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IGZ1bmM6IENhbGxhYmxlW1tUXSwgTm9uZV0sIHZhbHVlczogU2VxdWVuY2VbVF0KKykgLT4gTm9u
ZToKKyAgICAiIiIKKyAgICBQdXNoIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAiIiIKKyAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6
CisgICAgICAgICAgICBmdW5jKHZhbHVlKQorCisKK2RlZiBwdWxsX29wYXF1ZShidWY6IEJ1ZmZl
ciwgY2FwYWNpdHk6IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgUHVsbCBhbiBvcGFxdWUg
dmFsdWUgcHJlZml4ZWQgYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdWxsX2Jsb2Nr
KGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKKyAgICAgICAgcmV0dXJuIGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworCitkZWYgcHVzaF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IHZhbHVlOiBieXRlcykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGFuIG9wYXF1ZSB2YWx1
ZSBwcmVmaXggYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Y2FwYWNpdHkpOgorICAgICAgICBidWYucHVzaF9ieXRlcyh2YWx1ZSkKKworCitAY29udGV4dG1h
bmFnZXIKK2RlZiBwdXNoX2V4dGVuc2lvbihidWY6IEJ1ZmZlciwgZXh0ZW5zaW9uX3R5cGU6IGlu
dCkgLT4gR2VuZXJhdG9yOgorICAgIGJ1Zi5wdXNoX3VpbnQxNihleHRlbnNpb25fdHlwZSkKKyAg
ICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgeWllbGQKKworCisjIEtleVNoYXJl
RW50cnkKKworCitLZXlTaGFyZUVudHJ5ID0gVHVwbGVbaW50LCBieXRlc10KKworCitkZWYgcHVs
bF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIpIC0+IEtleVNoYXJlRW50cnk6CisgICAgZ3JvdXAgPSBi
dWYucHVsbF91aW50MTYoKQorICAgIGRhdGEgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgcmV0
dXJuIChncm91cCwgZGF0YSkKKworCitkZWYgcHVzaF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIsIHZh
bHVlOiBLZXlTaGFyZUVudHJ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQxNih2YWx1ZVsw
XSkKKyAgICBwdXNoX29wYXF1ZShidWYsIDIsIHZhbHVlWzFdKQorCisKKyMgQUxQTgorCisKK2Rl
ZiBwdWxsX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIpIC0+IHN0cjoKKyAgICByZXR1cm4gcHVs
bF9vcGFxdWUoYnVmLCAxKS5kZWNvZGUoImFzY2lpIikKKworCitkZWYgcHVzaF9hbHBuX3Byb3Rv
Y29sKGJ1ZjogQnVmZmVyLCBwcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgcHJvdG9jb2wuZW5jb2RlKCJhc2NpaSIpKQorCisKKyMgUFJFIFNIQVJFRCBLRVkK
KworUHNrSWRlbnRpdHkgPSBUdXBsZVtieXRlcywgaW50XQorCisKK2RlZiBwdWxsX3Bza19pZGVu
dGl0eShidWY6IEJ1ZmZlcikgLT4gUHNrSWRlbnRpdHk6CisgICAgaWRlbnRpdHkgPSBwdWxsX29w
YXF1ZShidWYsIDIpCisgICAgb2JmdXNjYXRlZF90aWNrZXRfYWdlID0gYnVmLnB1bGxfdWludDMy
KCkKKyAgICByZXR1cm4gKGlkZW50aXR5LCBvYmZ1c2NhdGVkX3RpY2tldF9hZ2UpCisKKworZGVm
IHB1c2hfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyLCBlbnRyeTogUHNrSWRlbnRpdHkpIC0+IE5v
bmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVswXSkKKyAgICBidWYucHVzaF91aW50
MzIoZW50cnlbMV0pCisKKworZGVmIHB1bGxfcHNrX2JpbmRlcihidWY6IEJ1ZmZlcikgLT4gYnl0
ZXM6CisgICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKworCitkZWYgcHVzaF9wc2tfYmlu
ZGVyKGJ1ZjogQnVmZmVyLCBiaW5kZXI6IGJ5dGVzKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgYmluZGVyKQorCisKKyMgTUVTU0FHRVMKKworRXh0ZW5zaW9uID0gVHVwbGVbaW50
LCBieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBPZmZlcmVkUHNrczoKKyAgICBpZGVudGl0
aWVzOiBMaXN0W1Bza0lkZW50aXR5XQorICAgIGJpbmRlcnM6IExpc3RbYnl0ZXNdCisKKworQGRh
dGFjbGFzcworY2xhc3MgQ2xpZW50SGVsbG86CisgICAgcmFuZG9tOiBieXRlcworICAgIHNlc3Np
b25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlczogTGlzdFtpbnRdCisgICAgY29tcHJlc3Np
b25fbWV0aG9kczogTGlzdFtpbnRdCisKKyAgICAjIGV4dGVuc2lvbnMKKyAgICBhbHBuX3Byb3Rv
Y29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICBlYXJseV9kYXRhOiBib29sID0g
RmFsc2UKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVFbnRyeV1dID0gTm9u
ZQorICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10gPSBOb25lCisgICAg
cHNrX2tleV9leGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBz
ZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBzaWduYXR1cmVfYWxnb3JpdGht
czogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfZ3JvdXBzOiBPcHRp
b25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHN1cHBvcnRlZF92ZXJzaW9uczogT3B0aW9uYWxb
TGlzdFtpbnRdXSA9IE5vbmUKKworICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9u
XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2NsaWVudF9oZWxs
byhidWY6IEJ1ZmZlcikgLT4gQ2xpZW50SGVsbG86CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4
KCkgPT0gSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVm
LCAzKToKKyAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFf
MgorICAgICAgICBjbGllbnRfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIpCisKKyAgICAgICAg
aGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1jbGllbnRfcmFuZG9tLAor
ICAgICAgICAgICAgc2Vzc2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlcz1wdWxsX2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50MTYpLAorICAgICAg
ICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1wdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50
OCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgYWZ0ZXJfcHNr
ID0gRmFsc2UKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgorICAgICAg
ICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAgICAgIG5vbmxvY2Fs
IGFmdGVyX3BzaworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhZnRlcl9wc2sKKworICAgICAgICAg
ICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5z
aW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBpZiBleHRlbnNpb25f
dHlwZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAgICAgICBoZWxsby5r
ZXlfc2hhcmUgPSBwdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfa2V5X3NoYXJlLCBidWYp
KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNVUFBP
UlRFRF9WRVJTSU9OUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMg
PSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09SSVRITVM6CisgICAg
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBwdWxsX2xpc3QoYnVmLCAy
LCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4
dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfZ3JvdXBzID0gcHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWludDE2KQorICAgICAg
ICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBTS19LRVlfRVhDSEFO
R0VfTU9ERVM6CisgICAgICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcyA9
IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KQorICAgICAgICAgICAgZWxpZiBleHRl
bnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FOgorICAgICAgICAgICAgICAg
IHdpdGggcHVsbF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYnVm
LnB1bGxfdWludDgoKSA9PSAwCisgICAgICAgICAgICAgICAgICAgIGhlbGxvLnNlcnZlcl9uYW1l
ID0gcHVsbF9vcGFxdWUoYnVmLCAyKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGVsaWYg
ZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAgICAgICAgICAgIGhl
bGxvLmFscG5fcHJvdG9jb2xzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAgICAgICBidWYs
IDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RB
VEE6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRydWUKKyAgICAgICAgICAg
IGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWToKKyAg
ICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IE9mZmVyZWRQc2tzKAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGl0aWVzPXB1bGxfbGlzdChidWYsIDIsIHBhcnRpYWwocHVsbF9w
c2tfaWRlbnRpdHksIGJ1ZikpLAorICAgICAgICAgICAgICAgICAgICBiaW5kZXJzPXB1bGxfbGlz
dChidWYsIDIsIHBhcnRpYWwocHVsbF9wc2tfYmluZGVyLCBidWYpKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgYWZ0ZXJfcHNrID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVs
bF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVzaF9jbGllbnRfaGVs
bG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBDbGllbnRIZWxsbykgLT4gTm9uZToKKyAgICBidWYucHVz
aF91aW50OChIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTykKKyAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9OXzFfMikKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAgICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNo
X3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRlcykKKyAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwg
YnVmLnB1c2hfdWludDgsIGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMpCisKKyAgICAgICAgIyBl
eHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NIQVJFKToKKyAgICAg
ICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1c2hfa2V5X3NoYXJlLCBidWYp
LCBoZWxsby5rZXlfc2hhcmUpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAgICAgICAgICAgcHVz
aF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMp
CisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNJ
R05BVFVSRV9BTEdPUklUSE1TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBi
dWYucHVzaF91aW50MTYsIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zKQorCisgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBT
KToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYucHVzaF91aW50MTYsIGhl
bGxvLnN1cHBvcnRlZF9ncm91cHMpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLnBza19rZXlfZXhj
aGFuZ2VfbW9kZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVu
c2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUyk6CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQ4LCBoZWxsby5wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzKQorCisgICAgICAgICAgICBpZiBoZWxsby5zZXJ2ZXJfbmFtZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9i
bG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgaGVsbG8uc2VydmVy
X25hbWUuZW5jb2RlKCJhc2NpaSIpKQorCisgICAgICAgICAgICBpZiBoZWxsby5hbHBuX3Byb3Rv
Y29scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1
ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1c2hfYWxwbl9wcm90b2Nv
bCwgYnVmKSwgaGVsbG8uYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBoZWxsby5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0YToKKyAgICAg
ICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9E
QVRBKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAjIHByZV9zaGFy
ZWRfa2V5IE1VU1QgYmUgbGFzdAorICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4
dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX3Bza19pZGVudGl0eSwg
YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50
aXRpZXMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9s
aXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfYmluZGVyLCBi
dWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVy
cywKKyAgICAgICAgICAgICAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFNlcnZlckhl
bGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBzZXNzaW9uX2lkOiBieXRlcworICAgIGNpcGhl
cl9zdWl0ZTogaW50CisgICAgY29tcHJlc3Npb25fbWV0aG9kOiBpbnQKKworICAgICMgZXh0ZW5z
aW9ucworICAgIGtleV9zaGFyZTogT3B0aW9uYWxbS2V5U2hhcmVFbnRyeV0gPSBOb25lCisgICAg
cHJlX3NoYXJlZF9rZXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3VwcG9ydGVkX3ZlcnNp
b246IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBs
ZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVs
bF9zZXJ2ZXJfaGVsbG8oYnVmOiBCdWZmZXIpIC0+IFNlcnZlckhlbGxvOgorICAgIGFzc2VydCBi
dWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hFTExPCisgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50MTYoKSA9PSBU
TFNfVkVSU0lPTl8xXzIKKyAgICAgICAgc2VydmVyX3JhbmRvbSA9IGJ1Zi5wdWxsX2J5dGVzKDMy
KQorCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209c2Vy
dmVyX3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAxKSwK
KyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwKKyAgICAgICAgICAg
IGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAorICAgICAgICApCisKKyAgICAg
ICAgIyBleHRlbnNpb25zCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6Cisg
ICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgorICAgICAg
ICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxfdWludDE2KCkKKyAg
ICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkU6
CisgICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlfc2hhcmUoYnVmKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBSRV9TSEFS
RURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5ID0gYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVsbG8ub3RoZXJf
ZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwg
YnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGhl
bGxvCisKKworZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBoZWxsbzogU2VydmVy
SGVsbG8pIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5TRVJWRVJf
SEVMTE8pCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihUTFNfVkVSU0lPTl8xXzIpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGhlbGxvLnJhbmRv
bSkKKworICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5jaXBoZXJfc3VpdGUpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQ4KGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCkKKworICAgICAgICAjIGV4dGVuc2lvbnMK
KyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICBpZiBoZWxsby5z
dXBwb3J0ZWRfdmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hf
ZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lPTlMpOgorICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24pCisK
KyAgICAgICAgICAgIGlmIGhlbGxvLmtleV9zaGFyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkUpOgor
ICAgICAgICAgICAgICAgICAgICBwdXNoX2tleV9zaGFyZShidWYsIGhlbGxvLmtleV9zaGFyZSkK
KworICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFJFX1NI
QVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8ucHJl
X3NoYXJlZF9rZXkpCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9u
X3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgd2l0aCBw
dXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIE5l
d1Nlc3Npb25UaWNrZXQ6CisgICAgdGlja2V0X2xpZmV0aW1lOiBpbnQgPSAwCisgICAgdGlja2V0
X2FnZV9hZGQ6IGludCA9IDAKKyAgICB0aWNrZXRfbm9uY2U6IGJ5dGVzID0gYiIiCisgICAgdGlj
a2V0OiBieXRlcyA9IGIiIgorCisgICAgIyBleHRlbnNpb25zCisgICAgbWF4X2Vhcmx5X2RhdGFf
c2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1
cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBw
dWxsX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlcikgLT4gTmV3U2Vzc2lvblRpY2tldDoK
KyAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KCkKKworICAgIGFzc2Vy
dCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUCisg
ICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50
aWNrZXRfbGlmZXRpbWUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vzc2lvbl90
aWNrZXQudGlja2V0X2FnZV9hZGQgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vz
c2lvbl90aWNrZXQudGlja2V0X25vbmNlID0gcHVsbF9vcGFxdWUoYnVmLCAxKQorICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0ID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorCisgICAgICAg
IGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fdHlw
ZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVm
LnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lv
blR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhl
eHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0
KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gbmV3X3Nlc3Npb25fdGlja2V0
CisKKworZGVmIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZjogQnVmZmVyLCBuZXdfc2Vzc2lv
bl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgo
SGFuZHNoYWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQpCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0
X2xpZmV0aW1lKQorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0LnRp
Y2tldF9hZ2VfYWRkKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIG5ld19zZXNzaW9uX3Rp
Y2tldC50aWNrZXRfbm9uY2UpCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgbmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldCkKKworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAg
ICAgICAgICAgIGlmIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNp
b25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MzIo
bmV3X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUpCisKKyAgICAgICAgICAgIGZv
ciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIG5ld19zZXNzaW9uX3RpY2tldC5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBFbmNyeXB0ZWRFeHRlbnNpb25z
OgorICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgZWFybHlfZGF0
YTogYm9vbCA9IEZhbHNlCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwg
Ynl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVmZmVyKSAtPiBFbmNyeXB0ZWRFeHRlbnNpb25zOgorICAg
IGV4dGVuc2lvbnMgPSBFbmNyeXB0ZWRFeHRlbnNpb25zKCkKKworICAgIGFzc2VydCBidWYucHVs
bF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlMKKyAgICB3aXRo
IHB1bGxfYmxvY2soYnVmLCAzKToKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBO
b25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAg
ICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFMUE46CisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAg
ICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAg
ICAgICAgKVswXQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5lYXJseV9kYXRhID0g
VHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLm90aGVy
X2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUs
IGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVybiBl
eHRlbnNpb25zCisKKworZGVmIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmOiBCdWZmZXIs
IGV4dGVuc2lvbnM6IEVuY3J5cHRlZEV4dGVuc2lvbnMpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hf
dWludDgoSGFuZHNoYWtlVHlwZS5FTkNSWVBURURfRVhURU5TSU9OUykKKyAgICB3aXRoIHB1c2hf
YmxvY2soYnVmLCAzKToKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAg
ICAgICBpZiBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuQUxQTik6CisgICAg
ICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0
aWFsKHB1c2hfYWxwbl9wcm90b2NvbCwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtl
eHRlbnNpb25zLmFscG5fcHJvdG9jb2xdLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbnMuZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHB1
c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAg
ICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lv
bl92YWx1ZSBpbiBleHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0NlcnRpZmljYXRlRW50
cnkgPSBUdXBsZVtieXRlcywgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgQ2VydGlmaWNh
dGU6CisgICAgcmVxdWVzdF9jb250ZXh0OiBieXRlcyA9IGIiIgorICAgIGNlcnRpZmljYXRlczog
TGlzdFtDZXJ0aWZpY2F0ZUVudHJ5XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisK
K2RlZiBwdWxsX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZToKKyAgICBj
ZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKCkKKworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgp
ID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAz
KToKKyAgICAgICAgY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0ID0gcHVsbF9vcGFxdWUoYnVm
LCAxKQorCisgICAgICAgIGRlZiBwdWxsX2NlcnRpZmljYXRlX2VudHJ5KGJ1ZjogQnVmZmVyKSAt
PiBDZXJ0aWZpY2F0ZUVudHJ5OgorICAgICAgICAgICAgZGF0YSA9IHB1bGxfb3BhcXVlKGJ1Ziwg
MykKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgICAg
ICAgICByZXR1cm4gKGRhdGEsIGV4dGVuc2lvbnMpCisKKyAgICAgICAgY2VydGlmaWNhdGUuY2Vy
dGlmaWNhdGVzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1bGxf
Y2VydGlmaWNhdGVfZW50cnksIGJ1ZikKKyAgICAgICAgKQorCisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGUoYnVmOiBCdWZmZXIsIGNlcnRpZmljYXRlOiBD
ZXJ0aWZpY2F0ZSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNF
UlRJRklDQVRFKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBwdXNoX29w
YXF1ZShidWYsIDEsIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCkKKworICAgICAgICBkZWYg
cHVzaF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZlciwgZW50cnk6IENlcnRpZmljYXRlRW50
cnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDMsIGVudHJ5WzBdKQor
ICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVsxXSkKKworICAgICAgICBwdXNo
X2xpc3QoCisgICAgICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVzaF9jZXJ0aWZpY2F0ZV9lbnRy
eSwgYnVmKSwgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzCisgICAgICAgICkKKworCitAZGF0YWNs
YXNzCitjbGFzcyBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhbGdvcml0aG06IGludAorICAgIHNp
Z25hdHVyZTogYnl0ZXMKKworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZm
ZXIpIC0+IENlcnRpZmljYXRlVmVyaWZ5OgorICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09
IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGFsZ29yaXRobSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNp
Z25hdHVyZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAgIHJldHVybiBDZXJ0aWZpY2F0ZVZl
cmlmeShhbGdvcml0aG09YWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0dXJlKQorCisKK2RlZiBw
dXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlciwgdmVyaWZ5OiBDZXJ0aWZpY2F0ZVZl
cmlmeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNFUlRJRklD
QVRFX1ZFUklGWSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1
c2hfdWludDE2KHZlcmlmeS5hbGdvcml0aG0pCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
dmVyaWZ5LnNpZ25hdHVyZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBGaW5pc2hlZDoKKyAgICB2
ZXJpZnlfZGF0YTogYnl0ZXMgPSBiIiIKKworCitkZWYgcHVsbF9maW5pc2hlZChidWY6IEJ1ZmZl
cikgLT4gRmluaXNoZWQ6CisgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgpCisKKyAgICBhc3NlcnQg
YnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkZJTklTSEVECisgICAgZmluaXNoZWQu
dmVyaWZ5X2RhdGEgPSBwdWxsX29wYXF1ZShidWYsIDMpCisKKyAgICByZXR1cm4gZmluaXNoZWQK
KworCitkZWYgcHVzaF9maW5pc2hlZChidWY6IEJ1ZmZlciwgZmluaXNoZWQ6IEZpbmlzaGVkKSAt
PiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRklOSVNIRUQpCisgICAg
cHVzaF9vcGFxdWUoYnVmLCAzLCBmaW5pc2hlZC52ZXJpZnlfZGF0YSkKKworCisjIENPTlRFWFQK
KworCitjbGFzcyBLZXlTY2hlZHVsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZSk6CisgICAgICAgIHNlbGYuYWxnb3JpdGhtID0gY2lwaGVyX3N1aXRl
X2hhc2goY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhlcl9z
dWl0ZQorICAgICAgICBzZWxmLmdlbmVyYXRpb24gPSAwCisgICAgICAgIHNlbGYuaGFzaCA9IGhh
c2hlcy5IYXNoKHNlbGYuYWxnb3JpdGhtLCBkZWZhdWx0X2JhY2tlbmQoKSkKKyAgICAgICAgc2Vs
Zi5oYXNoX2VtcHR5X3ZhbHVlID0gc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6ZSgpCisgICAgICAg
IHNlbGYuc2VjcmV0ID0gYnl0ZXMoc2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUpCisKKyAgICBk
ZWYgY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZiwgY29udGV4dF9zdHJpbmc6IGJ5dGVzKSAt
PiBieXRlczoKKyAgICAgICAgcmV0dXJuIGIiICIgKiA2NCArIGNvbnRleHRfc3RyaW5nICsgYiJc
eDAwIiArIHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorCisgICAgZGVmIGZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYsIHNlY3JldDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICBobWFjX2tl
eSA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLAorICAgICAgICAgICAgc2VjcmV0PXNlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWIiZmlu
aXNoZWQiLAorICAgICAgICAgICAgaGFzaF92YWx1ZT1iIiIsCisgICAgICAgICAgICBsZW5ndGg9
c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAgICAgICBoID0gaG1h
Yy5ITUFDKGhtYWNfa2V5LCBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sIGJhY2tlbmQ9ZGVmYXVs
dF9iYWNrZW5kKCkpCisgICAgICAgIGgudXBkYXRlKHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisgICAgZGVmIGRlcml2ZV9zZWNyZXQo
c2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJuIGhrZGZfZXhwYW5k
X2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAgICAg
ICAgc2VjcmV0PXNlbGYuc2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9bGFiZWwsCisgICAgICAg
ICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKSwKKyAgICAgICAgICAg
IGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisgICAgZGVm
IGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAtPiBO
b25lOgorICAgICAgICBpZiBrZXlfbWF0ZXJpYWwgaXMgTm9uZToKKyAgICAgICAgICAgIGtleV9t
YXRlcmlhbCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQorCisgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc2VjcmV0ID0gaGtkZl9leHBhbmRf
bGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAg
ICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgICAgICBsYWJlbD1iImRl
cml2ZWQiLAorICAgICAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNoX2VtcHR5X3ZhbHVl
LAorICAgICAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdlbmVyYXRpb24gKz0gMQorICAgICAgICBzZWxm
LnNlY3JldCA9IGhrZGZfZXh0cmFjdCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29y
aXRobSwgc2FsdD1zZWxmLnNlY3JldCwga2V5X21hdGVyaWFsPWtleV9tYXRlcmlhbAorICAgICAg
ICApCisKKyAgICBkZWYgdXBkYXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuaGFzaC51cGRhdGUoZGF0YSkKKworCitjbGFzcyBLZXlTY2hlZHVsZVByb3h5
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGVzOiBMaXN0W0NpcGhlclN1aXRl
XSk6CisgICAgICAgIHNlbGYuX19zY2hlZHVsZXMgPSBkaWN0KG1hcChsYW1iZGEgYzogKGMsIEtl
eVNjaGVkdWxlKGMpKSwgY2lwaGVyX3N1aXRlcykpCisKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBr
ZXlfbWF0ZXJpYWw6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGZv
ciBrIGluIHNlbGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAgICBrLmV4dHJhY3Qo
a2V5X21hdGVyaWFsKQorCisgICAgZGVmIHNlbGVjdChzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhl
clN1aXRlKSAtPiBLZXlTY2hlZHVsZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zY2hlZHVsZXNb
Y2lwaGVyX3N1aXRlXQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6IGJ5dGVzKSAt
PiBOb25lOgorICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgorICAg
ICAgICAgICAgay51cGRhdGVfaGFzaChkYXRhKQorCisKK0NJUEhFUl9TVUlURVMgPSB7CisgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiBoYXNoZXMuU0hBMjU2LAorICAgIENpcGhl
clN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogaGFzaGVzLlNIQTM4NCwKKyAgICBDaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IGhhc2hlcy5TSEEyNTYsCit9CisKK1NJR05BVFVS
RV9BTEdPUklUSE1TOiBEaWN0ID0geworICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQ
MjU2UjFfU0hBMjU2OiAoTm9uZSwgaGFzaGVzLlNIQTI1NiksCisgICAgU2lnbmF0dXJlQWxnb3Jp
dGhtLkVDRFNBX1NFQ1AzODRSMV9TSEEzODQ6IChOb25lLCBoYXNoZXMuU0hBMzg0KSwKKyAgICBT
aWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMjogKE5vbmUsIGhhc2hlcy5T
SEE1MTIpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMTogKHBhZGRpbmcu
UEtDUzF2MTUsIGhhc2hlcy5TSEExKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1Mx
X1NIQTI1NjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0OiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNI
QTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTI6IChwYWRkaW5n
LlBLQ1MxdjE1LCBoYXNoZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BT
U19SU0FFX1NIQTI1NjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBMjU2KSwKKyAgICBTaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NDogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hB
Mzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTUxMjogKHBhZGRp
bmcuUFNTLCBoYXNoZXMuU0hBNTEyKSwKK30KKworR1JPVVBfVE9fQ1VSVkU6IERpY3QgPSB7Cisg
ICAgR3JvdXAuU0VDUDI1NlIxOiBlYy5TRUNQMjU2UjEsCisgICAgR3JvdXAuU0VDUDM4NFIxOiBl
Yy5TRUNQMzg0UjEsCisgICAgR3JvdXAuU0VDUDUyMVIxOiBlYy5TRUNQNTIxUjEsCit9CitDVVJW
RV9UT19HUk9VUCA9IGRpY3QoKHYsIGspIGZvciBrLCB2IGluIEdST1VQX1RPX0NVUlZFLml0ZW1z
KCkpCisKKworZGVmIGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUp
IC0+IGhhc2hlcy5IYXNoQWxnb3JpdGhtOgorICAgIHJldHVybiBDSVBIRVJfU1VJVEVTW2NpcGhl
cl9zdWl0ZV0oKQorCisKK2RlZiBkZWNvZGVfcHVibGljX2tleSgKKyAgICBrZXlfc2hhcmU6IEtl
eVNoYXJlRW50cnksCispIC0+IFVuaW9uW2VjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUx
OS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleSwgTm9uZV06CisgICAgaWYga2V5
X3NoYXJlWzBdID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgcmV0dXJuIHgyNTUxOS5YMjU1MTlQ
dWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3No
YXJlWzBdID09IEdyb3VwLlg0NDg6CisgICAgICAgIHJldHVybiB4NDQ4Llg0NDhQdWJsaWNLZXku
ZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3NoYXJlWzBdIGlu
IEdST1VQX1RPX0NVUlZFOgorICAgICAgICByZXR1cm4gZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tl
eS5mcm9tX2VuY29kZWRfcG9pbnQoCisgICAgICAgICAgICBHUk9VUF9UT19DVVJWRVtrZXlfc2hh
cmVbMF1dKCksIGtleV9zaGFyZVsxXQorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworCitkZWYgZW5jb2RlX3B1YmxpY19rZXkoCisgICAgcHVibGljX2tleTogVW5p
b25bCisgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUxOS5YMjU1MTlQdWJs
aWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgIF0KKykgLT4gS2V5U2hhcmVFbnRyeToKKyAg
ICBpZiBpc2luc3RhbmNlKHB1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAg
ICAgICByZXR1cm4gKEdyb3VwLlgyNTUxOSwgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2Rp
bmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkKKyAgICBlbGlmIGlzaW5zdGFuY2UocHVibGljX2tl
eSwgeDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgcmV0dXJuIChHcm91cC5YNDQ4LCBwdWJs
aWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1hdC5SYXcpKQorICAg
IHJldHVybiAoCisgICAgICAgIENVUlZFX1RPX0dST1VQW3B1YmxpY19rZXkuY3VydmUuX19jbGFz
c19fXSwKKyAgICAgICAgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuWDk2MiwgUHVi
bGljRm9ybWF0LlVuY29tcHJlc3NlZFBvaW50KSwKKyAgICApCisKKworZGVmIG5lZ290aWF0ZSgK
KyAgICBzdXBwb3J0ZWQ6IExpc3RbVF0sIG9mZmVyZWQ6IE9wdGlvbmFsW0xpc3RbQW55XV0sIGV4
YzogT3B0aW9uYWxbQWxlcnRdID0gTm9uZQorKSAtPiBUOgorICAgIGlmIG9mZmVyZWQgaXMgbm90
IE5vbmU6CisgICAgICAgIGZvciBjIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIGlmIGMgaW4g
b2ZmZXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYworCisgICAgaWYgZXhjIGlzIG5vdCBO
b25lOgorICAgICAgICByYWlzZSBleGMKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBzaWduYXR1
cmVfYWxnb3JpdGhtX3BhcmFtcygKKyAgICBzaWduYXR1cmVfYWxnb3JpdGhtOiBpbnQsCispIC0+
IFVuaW9uW1R1cGxlW2VjLkVDRFNBXSwgVHVwbGVbcGFkZGluZy5Bc3ltbWV0cmljUGFkZGluZywg
aGFzaGVzLkhhc2hBbGdvcml0aG1dXToKKyAgICBwYWRkaW5nX2NscywgYWxnb3JpdGhtX2NscyA9
IFNJR05BVFVSRV9BTEdPUklUSE1TW3NpZ25hdHVyZV9hbGdvcml0aG1dCisgICAgYWxnb3JpdGht
ID0gYWxnb3JpdGhtX2NscygpCisgICAgaWYgcGFkZGluZ19jbHMgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIChlYy5FQ0RTQShhbGdvcml0aG0pLCkKKyAgICBlbGlmIHBhZGRpbmdfY2xzID09IHBh
ZGRpbmcuUFNTOgorICAgICAgICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xzKAorICAgICAgICAg
ICAgbWdmPXBhZGRpbmcuTUdGMShhbGdvcml0aG0pLCBzYWx0X2xlbmd0aD1hbGdvcml0aG0uZGln
ZXN0X3NpemUKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHBhZGRpbmdfb2JqID0gcGFk
ZGluZ19jbHMoKQorICAgIHJldHVybiBwYWRkaW5nX29iaiwgYWxnb3JpdGhtCisKKworQGNvbnRl
eHRtYW5hZ2VyCitkZWYgcHVzaF9tZXNzYWdlKAorICAgIGtleV9zY2hlZHVsZTogVW5pb25bS2V5
U2NoZWR1bGUsIEtleVNjaGVkdWxlUHJveHldLCBidWY6IEJ1ZmZlcgorKSAtPiBHZW5lcmF0b3I6
CisgICAgaGFzaF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICB5aWVsZAorICAgIGtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChidWYuZGF0YV9zbGljZShoYXNoX3N0YXJ0LCBidWYudGVsbCgpKSkKKwor
CisjIGNhbGxiYWNrIHR5cGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgU2Vzc2lvblRpY2tldDoK
KyAgICAiIiIKKyAgICBBIFRMUyBzZXNzaW9uIHRpY2tldCBmb3Igc2Vzc2lvbiByZXN1bXB0aW9u
LgorICAgICIiIgorCisgICAgYWdlX2FkZDogaW50CisgICAgY2lwaGVyX3N1aXRlOiBDaXBoZXJT
dWl0ZQorICAgIG5vdF92YWxpZF9hZnRlcjogZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICBub3RfdmFs
aWRfYmVmb3JlOiBkYXRldGltZS5kYXRldGltZQorICAgIHJlc3VtcHRpb25fc2VjcmV0OiBieXRl
cworICAgIHNlcnZlcl9uYW1lOiBzdHIKKyAgICB0aWNrZXQ6IGJ5dGVzCisKKyAgICBtYXhfZWFy
bHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVyX2V4dGVuc2lvbnM6
IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
bm93ID0gdXRjbm93KCkKKyAgICAgICAgcmV0dXJuIG5vdyA+PSBzZWxmLm5vdF92YWxpZF9iZWZv
cmUgYW5kIG5vdyA8PSBzZWxmLm5vdF92YWxpZF9hZnRlcgorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIG9iZnVzY2F0ZWRfYWdlKHNlbGYpIC0+IGludDoKKyAgICAgICAgYWdlID0gaW50KCh1dGNu
b3coKSAtIHNlbGYubm90X3ZhbGlkX2JlZm9yZSkudG90YWxfc2Vjb25kcygpKQorICAgICAgICBy
ZXR1cm4gKGFnZSArIHNlbGYuYWdlX2FkZCkgJSAoMSA8PCAzMikKKworCitBbHBuSGFuZGxlciA9
IENhbGxhYmxlW1tzdHJdLCBOb25lXQorU2Vzc2lvblRpY2tldEZldGNoZXIgPSBDYWxsYWJsZVtb
Ynl0ZXNdLCBPcHRpb25hbFtTZXNzaW9uVGlja2V0XV0KK1Nlc3Npb25UaWNrZXRIYW5kbGVyID0g
Q2FsbGFibGVbW1Nlc3Npb25UaWNrZXRdLCBOb25lXQorCisKK2NsYXNzIENvbnRleHQ6CisgICAg
ZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGllbnQ6IGJvb2wsCisg
ICAgICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0gTm9uZSwKKyAgICAg
ICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICAgICBjYWZpbGU6IE9wdGlv
bmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICBsb2dnZXI6IE9wdGlvbmFsW1VuaW9uW2xvZ2dpbmcuTG9nZ2VyLCBsb2dnaW5nLkxv
Z2dlckFkYXB0ZXJdXSA9IE5vbmUsCisgICAgICAgIG1heF9lYXJseV9kYXRhOiBPcHRpb25hbFtp
bnRdID0gTm9uZSwKKyAgICAgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgKToKKyAgICAg
ICAgIyBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2FscG5fcHJvdG9jb2xzID0gYWxwbl9w
cm90b2NvbHMKKyAgICAgICAgc2VsZi5fY2FkYXRhID0gY2FkYXRhCisgICAgICAgIHNlbGYuX2Nh
ZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLl9jYXBhdGggPSBjYXBhdGgKKyAgICAgICAgc2Vs
Zi5jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25lCisgICAgICAg
IHNlbGYuY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBbXQorICAg
ICAgICBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5OiBPcHRpb25hbFsKKyAgICAgICAgICAg
IFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleSwgcnNh
LlJTQVByaXZhdGVLZXldCisgICAgICAgIF0gPSBOb25lCisgICAgICAgIHNlbGYuaGFuZHNoYWtl
X2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IFtdCisgICAgICAgIHNlbGYuX21heF9lYXJs
eV9kYXRhID0gbWF4X2Vhcmx5X2RhdGEKKyAgICAgICAgc2VsZi5zZXNzaW9uX3RpY2tldDogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0g
c2VydmVyX25hbWUKKyAgICAgICAgaWYgdmVyaWZ5X21vZGUgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHZlcmlmeV9tb2RlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVEIGlmIGlzX2NsaWVu
dCBlbHNlIHNzbC5DRVJUX05PTkUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxm
LmFscG5fY2I6IE9wdGlvbmFsW0FscG5IYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5nZXRf
c2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUK
KyAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRIYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2I6IENh
bGxhYmxlWworICAgICAgICAgICAgW0RpcmVjdGlvbiwgRXBvY2gsIENpcGhlclN1aXRlLCBieXRl
c10sIE5vbmUKKyAgICAgICAgXSA9IGxhbWJkYSBkLCBlLCBjLCBzOiBOb25lCisKKyAgICAgICAg
IyBzdXBwb3J0ZWQgcGFyYW1ldGVycworICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzID0gWwor
ICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgQ2lwaGVyU3VpdGUu
Q0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICBdCisgICAgICAgIHNlbGYuX2NvbXBy
ZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XSA9IFtDb21wcmVzc2lvbk1ldGhvZC5OVUxMXQorICAg
ICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBMaXN0W2ludF0gPSBbUHNrS2V5RXhj
aGFuZ2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZV9hbGdvcml0aG1z
OiBMaXN0W2ludF0gPSBbCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19S
U0FFX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2
UjFfU0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAg
ICAgIF0KKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3VwcyA9IFtHcm91cC5TRUNQMjU2UjFd
CisgICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLngyNTUxOV9zdXBwb3J0ZWQoKToKKyAgICAg
ICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAg
ICAgaWYgZGVmYXVsdF9iYWNrZW5kKCkueDQ0OF9zdXBwb3J0ZWQoKToKKyAgICAgICAgICAgIHNl
bGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlg0NDgpCisgICAgICAgIHNlbGYuX3N1
cHBvcnRlZF92ZXJzaW9ucyA9IFtUTFNfVkVSU0lPTl8xXzNdCisKKyAgICAgICAgIyBzdGF0ZQor
ICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGU6IE9wdGlvbmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNlaXZl
ZF9leHRlbnNpb25zOiBPcHRpb25hbFtMaXN0W0V4dGVuc2lvbl1dID0gTm9uZQorICAgICAgICBz
ZWxmLl9rZXlfc2NoZWR1bGVfcHNrOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eTogT3B0aW9uYWxbS2V5U2NoZWR1bGVQcm94eV0g
PSBOb25lCisgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbTmV3U2Vz
c2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGU6IE9wdGlv
bmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmlj
YXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10KKyAgICAgICAgc2VsZi5fcmVj
ZWl2ZV9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fZW5jX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBz
ZWxmLl9kZWNfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYuX19sb2dn
ZXIgPSBsb2dnZXIKKworICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleTogT3B0aW9uYWxbZWMu
RWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxmLl94MjU1MTlfcHJp
dmF0ZV9rZXk6IE9wdGlvbmFsW3gyNTUxOS5YMjU1MTlQcml2YXRlS2V5XSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleTogT3B0aW9uYWxbeDQ0OC5YNDQ4UHJpdmF0ZUtleV0g
PSBOb25lCisKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAgICAgICAgICAgc2VsZi5jbGllbnRf
cmFuZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IG9z
LnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuQ0xJRU5UX0hBTkRT
SEFLRV9TVEFSVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbGllbnRfcmFuZG9t
ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQorICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXN1bWVkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBzdWNjZXNz
ZnVsbHkgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zZXNzaW9uX3Jl
c3VtZWQKKworICAgIGRlZiBoYW5kbGVfbWVzc2FnZSgKKyAgICAgICAgc2VsZiwgaW5wdXRfZGF0
YTogYnl0ZXMsIG91dHB1dF9idWY6IERpY3RbRXBvY2gsIEJ1ZmZlcl0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVDoK
KyAgICAgICAgICAgIHNlbGYuX2NsaWVudF9zZW5kX2hlbGxvKG91dHB1dF9idWZbRXBvY2guSU5J
VElBTF0pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZl
ciArPSBpbnB1dF9kYXRhCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9yZWNlaXZlX2J1ZmZlcikg
Pj0gNDoKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIG1lc3NhZ2UgbGVuZ3RoCisgICAgICAgICAg
ICBtZXNzYWdlX3R5cGUgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclswXQorICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAwCisgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLl9yZWNlaXZlX2J1ZmZl
clsxOjRdOgorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoID0gKG1lc3NhZ2VfbGVuZ3Ro
IDw8IDgpIHwgYgorICAgICAgICAgICAgbWVzc2FnZV9sZW5ndGggKz0gNAorCisgICAgICAgICAg
ICAjIGNoZWNrIG1lc3NhZ2UgaXMgY29tcGxldGUKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9y
ZWNlaXZlX2J1ZmZlcikgPCBtZXNzYWdlX2xlbmd0aDoKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfYnVmZmVyWzptZXNzYWdlX2xlbmd0
aF0KKyAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyID0gc2VsZi5fcmVjZWl2ZV9idWZm
ZXJbbWVzc2FnZV9sZW5ndGg6XQorCisgICAgICAgICAgICBpbnB1dF9idWYgPSBCdWZmZXIoZGF0
YT1tZXNzYWdlKQorCisgICAgICAgICAgICAjIGNsaWVudCBzdGF0ZXMKKworICAgICAgICAgICAg
aWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTzoKKyAgICAg
ICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5TRVJWRVJfSEVMTE86
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfaGVsbG8oaW5wdXRfYnVm
LCBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAg
IGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJ
T05TOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkVO
Q1JZUFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFu
ZGxlX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAg
ICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlw
ZSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgY2VydGlmaWNhdGUgcmVx
dWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisg
ICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJ
Q0FURV9WRVJJRlk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFr
ZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGll
bnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1dF9idWYpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNI
RUQ6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRklO
SVNIRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZmluaXNoZWQo
aW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFLRV0pCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5ORVdf
U0VTU0lPTl9USUNLRVQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVf
bmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAg
ICAgICMgc2VydmVyIHN0YXRlcworCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3Rh
dGUuU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE86CisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZltFcG9jaC5JTklUSUFM
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guSEFORFNIQUtFXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guT05FX1JUVF0sCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYu
c3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICBp
ZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZb
RXBvY2guT05FX1JUVF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0
YXRlID09IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRToKKyAgICAgICAgICAgICAgICByYWlz
ZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAgICAgIGFzc2VydCBpbnB1dF9idWYu
ZW9mKCkKKworICAgIGRlZiBfYnVpbGRfc2Vzc2lvbl90aWNrZXQoCisgICAgICAgIHNlbGYsIG5l
d19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldAorICAgICkgLT4gU2Vzc2lvblRpY2tl
dDoKKyAgICAgICAgcmVzdW1wdGlvbl9tYXN0ZXJfc2VjcmV0ID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZGVyaXZlX3NlY3JldChiInJlcyBtYXN0ZXIiKQorICAgICAgICByZXN1bXB0aW9uX3NlY3JldCA9
IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYua2V5X3NjaGVk
dWxlLmFsZ29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1yZXN1bXB0aW9uX21hc3Rlcl9zZWNy
ZXQsCisgICAgICAgICAgICBsYWJlbD1iInJlc3VtcHRpb24iLAorICAgICAgICAgICAgaGFzaF92
YWx1ZT1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlLAorICAgICAgICAgICAgbGVuZ3Ro
PXNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisg
ICAgICAgIHRpbWVzdGFtcCA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBTZXNzaW9uVGlja2V0
KAorICAgICAgICAgICAgYWdlX2FkZD1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQs
CisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRl
LAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1uZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgIG5vdF92YWxpZF9hZnRlcj10aW1lc3RhbXAK
KyAgICAgICAgICAgICsgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bmV3X3Nlc3Npb25fdGlj
a2V0LnRpY2tldF9saWZldGltZSksCisgICAgICAgICAgICBub3RfdmFsaWRfYmVmb3JlPXRpbWVz
dGFtcCwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0PXJlc3VtcHRpb25fc2VjcmV0LAor
ICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICB0
aWNrZXQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCwKKyAgICAgICAgKQorCisgICAgZGVmIF9j
bGllbnRfc2VuZF9oZWxsbyhzZWxmLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAg
ICAgIGtleV9zaGFyZTogTGlzdFtLZXlTaGFyZUVudHJ5XSA9IFtdCisgICAgICAgIHN1cHBvcnRl
ZF9ncm91cHM6IExpc3RbaW50XSA9IFtdCisKKyAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX3N1
cHBvcnRlZF9ncm91cHM6CisgICAgICAgICAgICBpZiBncm91cCA9PSBHcm91cC5TRUNQMjU2UjE6
CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgPSBlYy5nZW5lcmF0ZV9wcml2
YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVbR3JvdXAuU0VDUDI1
NlIxXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX2VjX3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBl
bmQoR3JvdXAuU0VDUDI1NlIxKQorICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YMjU1
MTk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5ID0geDI1NTE5Llgy
NTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX3gyNTUxOV9w
cml2YXRlX2tleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAgICAgICAgIGVs
aWYgZ3JvdXAgPT0gR3JvdXAuWDQ0ODoKKyAgICAgICAgICAgICAgICBzZWxmLl94NDQ4X3ByaXZh
dGVfa2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAg
a2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl94NDQ4X3ByaXZhdGVfa2V5
LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDQ0OCkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAuR1JFQVNFOgorICAg
ICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoKEdyb3VwLkdSRUFTRSwgYiJceDAwIikpCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3JvdXAuR1JFQVNFKQorCisg
ICAgICAgIGFzc2VydCBsZW4oa2V5X3NoYXJlKSwgIm5vIGtleSBzaGFyZSBlbnRyaWVzIgorCisg
ICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209c2VsZi5jbGll
bnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNlc3Npb25faWQsCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGVzPVtpbnQoeCkgZm9yIHggaW4gc2VsZi5fY2lwaGVyX3N1aXRl
c10sCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXNlbGYuX2NvbXByZXNzaW9uX21l
dGhvZHMsCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBuX3Byb3RvY29scywK
KyAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCisgICAgICAgICAgICBwc2tfa2V5X2V4
Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAgICAgICAgICAgIGlm
IChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5v
dCBOb25lKQorICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcz1zZWxm
Ll9zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9c3Vw
cG9ydGVkX2dyb3VwcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9zdXBw
b3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNo
YWtlX2V4dGVuc2lvbnMsCisgICAgICAgICkKKworICAgICAgICAjIFBTSworICAgICAgICBpZiBz
ZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0LmlzX3ZhbGlkOgorICAg
ICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxlKHNlbGYuc2Vzc2lv
bl90aWNrZXQuY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisgICAgICAg
ICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJpdmVfc2VjcmV0KGIi
cmVzIGJpbmRlciIpCisgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5fa2V5X3NjaGVk
dWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgIyB1cGRhdGUgaGVs
bG8KKyAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9kYXRhID0gVHJ1ZQor
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKKyAgICAgICAg
ICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2Vzc2lvbl90
aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRfYWdlKQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMoYmluZGVyX2xlbmd0
aCldLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlcmlhbGl6ZSBoZWxsbyB3aXRo
b3V0IGJpbmRlcgorICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQor
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8pCisKKyAgICAgICAg
ICAgICMgY2FsY3VsYXRlIGJpbmRlcgorICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSB0bXBfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCisg
ICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZpbmlzaGVkX3Zlcmlm
eV9kYXRhKGJpbmRlcl9rZXkpCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5k
ZXJzWzBdID0gYmluZGVyCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0
ZV9oYXNoKAorICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0
YToKKyAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmRl
cml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
dHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAor
ICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICAgICAgICAg
IGVhcmx5X2tleSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3VpdGVzKQorICAgICAg
ICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQorCisgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0X2J1Zik6CisgICAg
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykKKworICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisKKyAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91dHB1dF9i
dWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfc2VydmVyX2hl
bGxvKGlucHV0X2J1ZikKKworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlhdGUoCisgICAg
ICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgW3BlZXJfaGVsbG8uY2lw
aGVyX3N1aXRlXSwKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiVW5zdXBwb3J0
ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8u
Y29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMKKyAgICAgICAg
YXNzZXJ0IHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaW4gc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAgIGlmIHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayBpcyBOb25lCisgICAgICAgICAgICAg
ICAgb3IgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSAhPSAwCisgICAgICAgICAgICAgICAgb3Ig
Y2lwaGVyX3N1aXRlICE9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVyX3N1aXRlCisgICAg
ICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcgor
ICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrCisg
ICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eS5z
ZWxlY3QoY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrID0gTm9u
ZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBOb25lCisKKyAgICAgICAgIyBw
ZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVi
bGljX2tleShwZWVyX2hlbGxvLmtleV9zaGFyZSkKKyAgICAgICAgc2hhcmVkX2tleTogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBl
ZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSkKKyAgICAgICAgICAgIGFuZCBz
ZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgKToKKyAgICAgICAg
ICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9w
dWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpCisgICAgICAgICAgICBhbmQgc2VsZi5feDQ0
OF9wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVk
X2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQor
ICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCBl
Yy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZh
dGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fZWNfcHJpdmF0ZV9rZXku
cHVibGljX2tleSgpLmN1cnZlLl9fY2xhc3NfXworICAgICAgICAgICAgPT0gcGVlcl9wdWJsaWNf
a2V5LmN1cnZlLl9fY2xhc3NfXworICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVkX2tleSA9
IHNlbGYuX2VjX3ByaXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5
KQorICAgICAgICBhc3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorICAgICAgICBzZWxmLmtl
eV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJh
ZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLkhB
TkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUykKKworICAgIGRl
ZiBfY2xpZW50X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmLCBpbnB1dF9idWY6IEJ1
ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZW5jcnlwdGVkX2V4dGVuc2lvbnMgPSBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRl
ZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmFscG5fcHJvdG9jb2wKKyAgICAgICAgc2VsZi5lYXJs
eV9kYXRhX2FjY2VwdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuZWFybHlfZGF0YQorICAgICAg
ICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5vdGhlcl9l
eHRlbnNpb25zCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAgIHNlbGYuYWxw
bl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmlj
X3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guSEFORFNI
QUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIg
YWNjZXB0ZWQgb3VyIFBTSyB3ZSBhcmUgZG9uZSwgb3RoZXIgd2Ugd2FudCBpdHMgY2VydGlmaWNh
dGUKKyAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkOgorICAgICAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFKQorCisgICAgZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRp
ZmljYXRlKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICBjZXJ0aWZp
Y2F0ZSA9IHB1bGxfY2VydGlmaWNhdGUoaW5wdXRfYnVmKQorCisgICAgICAgIHNlbGYuX3BlZXJf
Y2VydGlmaWNhdGUgPSB4NTA5LmxvYWRfZGVyX3g1MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbMF1bMF0sIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5k
KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluID0gWwor
ICAgICAgICAgICAgeDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1tpXVswXSwgYmFja2VuZD1kZWZhdWx0X2JhY2tl
bmQoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGNl
cnRpZmljYXRlLmNlcnRpZmljYXRlcykpCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkpCisKKyAgICBkZWYg
X2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVy
KSAtPiBOb25lOgorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1
dF9idWYpCisKKyAgICAgICAgYXNzZXJ0IHZlcmlmeS5hbGdvcml0aG0gaW4gc2VsZi5fc2lnbmF0
dXJlX2FsZ29yaXRobXMKKworICAgICAgICAjIGNoZWNrIHNpZ25hdHVyZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlLnB1YmxpY19rZXkoKS52ZXJpZnko
CisgICAgICAgICAgICAgICAgdmVyaWZ5LnNpZ25hdHVyZSwKKyAgICAgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXModmVyaWZ5LmFs
Z29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBJbnZhbGlkU2lnbmF0dXJl
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAgICAgICAjIGNoZWNr
IGNlcnRpZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3ZlcmlmeV9tb2RlICE9IHNzbC5DRVJUX05P
TkU6CisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2Fk
YXRhPXNlbGYuX2NhZGF0YSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9c2VsZi5fY2FmaWxlLAor
ICAgICAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jYXBhdGgsCisgICAgICAgICAgICAgICAgY2Vy
dGlmaWNhdGU9c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBjaGFpbj1z
ZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1l
PXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgIHNlbGYuX3NldF9z
dGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9jbGllbnRfaGFu
ZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIp
IC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisK
KyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBleHBlY3RlZF92ZXJpZnlfZGF0
YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2RlY19rZXkp
CisgICAgICAgIGlmIGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IGV4cGVjdGVkX3ZlcmlmeV9kYXRh
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKyAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgIyBwcmVwYXJl
IHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1bGUuZ2VuZXJhdGlv
biA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAgICAg
c2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRF
Q1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAgICApCisgICAgICAg
IG5leHRfZW5jX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJjIGFwIHRy
YWZmaWMiKQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3aXRoIHB1c2hfbWVz
c2FnZShzZWxmLmtleV9zY2hlZHVsZSwgb3V0cHV0X2J1Zik6CisgICAgICAgICAgICBwdXNoX2Zp
bmlzaGVkKAorICAgICAgICAgICAgICAgIG91dHB1dF9idWYsCisgICAgICAgICAgICAgICAgRmlu
aXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxl
LmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIGNvbW1pdCB0cmFmZmljIGtleQorICAgICAgICBz
ZWxmLl9lbmNfa2V5ID0gbmV4dF9lbmNfa2V5CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNf
a2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAgICAgICAgICBFcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAor
ICAgICAgICAgICAgc2VsZi5fZW5jX2tleSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3Nl
dF9zdGF0ZShTdGF0ZS5DTElFTlRfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBkZWYgX2NsaWVudF9o
YW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25l
OgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChp
bnB1dF9idWYpCisKKyAgICAgICAgIyBub3RpZnkgYXBwbGljYXRpb24KKyAgICAgICAgaWYgc2Vs
Zi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aWNrZXQg
PSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAg
ICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAgICBkZWYgX3NlcnZl
cl9oYW5kbGVfaGVsbG8oCisgICAgICAgIHNlbGYsCisgICAgICAgIGlucHV0X2J1ZjogQnVmZmVy
LAorICAgICAgICBpbml0aWFsX2J1ZjogQnVmZmVyLAorICAgICAgICBoYW5kc2hha2VfYnVmOiBC
dWZmZXIsCisgICAgICAgIG9uZXJ0dF9idWY6IEJ1ZmZlciwKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIHBlZXJfaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhpbnB1dF9idWYpCisKKyAgICAgICAg
IyBkZXRlcm1pbmUgYXBwbGljYWJsZSBzaWduYXR1cmUgYWxnb3JpdGhtcworICAgICAgICBzaWdu
YXR1cmVfYWxnb3JpdGhtczogTGlzdFtTaWduYXR1cmVBbGdvcml0aG1dID0gW10KKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LCByc2EuUlNBUHJpdmF0
ZUtleSk6CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFsKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAgICAgICBdCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0
ZV9rZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5CisgICAgICAgICkgYW5kIGlzaW5zdGFu
Y2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleS5jdXJ2ZSwgZWMuU0VDUDI1NlIxKToKKyAg
ICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zID0gW1NpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2XQorCisgICAgICAgICMgbmVnb3RpYXRlIHBhcmFtZXRlcnMKKyAg
ICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fY2lwaGVy
X3N1aXRlcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAg
ICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpLAor
ICAgICAgICApCisgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZCA9IG5lZ290aWF0ZSgKKyAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBwZWVyX2hlbGxv
LmNvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUo
Ik5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwKKyAgICAgICAgKQorICAgICAgICBw
c2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCisgICAgICAgICAgICBzZWxmLl9wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAg
ICAgICAgKQorICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtID0gbmVnb3RpYXRlKAorICAgICAg
ICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBwZWVyX2hlbGxvLnNpZ25h
dHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJObyBz
dXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAorICAgICAgICApCisgICAgICAgIHN1cHBv
cnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAg
ICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZlcnNp
b24iKSwKKyAgICAgICAgKQorCisgICAgICAgICMgbmVnb3RpYXRlIEFMUE4KKyAgICAgICAgaWYg
c2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFscG5f
bmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9hbHBuX3Byb3Rv
Y29scywKKyAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFscG5fcHJvdG9jb2xzLAorICAgICAg
ICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gY29tbW9uIEFMUE4gcHJvdG9jb2xz
IiksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAg
IHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLmNsaWVu
dF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQorICAgICAgICBzZWxmLnNlcnZlcl9yYW5kb20g
PSBvcy51cmFuZG9tKDMyKQorICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBwZWVyX2hlbGxvLnNl
c3Npb25faWQKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gcGVlcl9oZWxsby5v
dGhlcl9leHRlbnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAg
IHByZV9zaGFyZWRfa2V5ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLmdl
dF9zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBza19rZXlf
ZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBlZXJfaGVsbG8ucHJl
X3NoYXJlZF9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5w
cmVfc2hhcmVkX2tleS5pZGVudGl0aWVzKSA9PSAxCisgICAgICAgICAgICBhbmQgbGVuKHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVycykgPT0gMQorICAgICAgICApOgorICAgICAgICAg
ICAgIyBhc2sgYXBwbGljYXRpb24gdG8gZmluZCBzZXNzaW9uIHRpY2tldAorICAgICAgICAgICAg
aWRlbnRpdHkgPSBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRpZXNbMF0KKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5nZXRfc2Vzc2lvbl90aWNrZXRfY2IoaWRlbnRp
dHlbMF0pCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAg
ICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192YWxpZAorICAgICAgICAgICAgICAg
IGFuZCBzZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUgPT0gY2lwaGVyX3N1aXRlCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gS2V5U2NoZWR1bGUo
Y2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qo
c2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisKKyAgICAgICAgICAgICAgICBiaW5k
ZXJfa2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJlcyBiaW5kZXIiKQor
ICAgICAgICAgICAgICAgIGJpbmRlcl9sZW5ndGggPSBzZWxmLmtleV9zY2hlZHVsZS5hbGdvcml0
aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ID0gaW5wdXRfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICAgICAgYmluZGVyID0gaW5w
dXRfYnVmLmRhdGFfc2xpY2UoCisgICAgICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ICsgMywg
aGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRh
X3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9iaW5kZXIg
PSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShiaW5kZXJfa2V5KQorCisg
ICAgICAgICAgICAgICAgaWYgYmluZGVyICE9IGV4cGVjdGVkX2JpbmRlcjoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJQU0sgdmFsaWRhdGlvbiBmYWls
ZWQiKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goCisg
ICAgICAgICAgICAgICAgICAgIGlucHV0X2J1Zi5kYXRhX3NsaWNlKGhhc2hfb2Zmc2V0LCBoYXNo
X29mZnNldCArIDMgKyBiaW5kZXJfbGVuZ3RoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgICAgIGlmIHBlZXJfaGVsbG8u
ZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxm
LnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlv
bi5ERUNSWVBULAorICAgICAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVST19SVFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gMAorCisgICAgICAgICMgaWYgUFNLIGlz
IG5vdCB1c2VkLCBpbml0aWFsaXplIGtleSBzY2hlZHVsZQorICAgICAgICBpZiBwcmVfc2hhcmVk
X2tleSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVs
ZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5v
bmUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYu
ZGF0YSkKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAgICAgIHB1YmxpY19r
ZXk6IFVuaW9uWworICAgICAgICAgICAgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSwgeDI1NTE5
LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5CisgICAgICAgIF0KKyAgICAgICAg
c2hhcmVkX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBmb3Iga2V5X3NoYXJl
IGluIHBlZXJfaGVsbG8ua2V5X3NoYXJlOgorICAgICAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0g
ZGVjb2RlX3B1YmxpY19rZXkoa2V5X3NoYXJlKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShw
ZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUxOS5YMjU1MTlQcml2YXRlS2V5LmdlbmVy
YXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1
MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4NDQ4
Llg0NDhQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkg
PSB4NDQ4Llg0NDhQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNf
a2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAg
ICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5leGNoYW5nZShwZWVyX3B1Ymxp
Y19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVfcHJpdmF0ZV9rZXkoCisg
ICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVswXV0oKSwgZGVmYXVs
dF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcHVibGljX2tl
eSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNo
YXJlZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJf
cHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBhc3NlcnQgc2hhcmVk
X2tleSBpcyBub3QgTm9uZQorCisgICAgICAgICMgc2VuZCBoZWxsbworICAgICAgICBoZWxsbyA9
IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYuc2VydmVyX3JhbmRvbSwKKyAg
ICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAorICAgICAgICAgICAgY2lwaGVy
X3N1aXRlPWNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1jb21w
cmVzc2lvbl9tZXRob2QsCisgICAgICAgICAgICBrZXlfc2hhcmU9ZW5jb2RlX3B1YmxpY19rZXko
cHVibGljX2tleSksCisgICAgICAgICAgICBwcmVfc2hhcmVkX2tleT1wcmVfc2hhcmVkX2tleSwK
KyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXN1cHBvcnRlZF92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBpbml0aWFs
X2J1Zik6CisgICAgICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhpbml0aWFsX2J1ZiwgaGVsbG8p
CisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tleSkKKworICAgICAg
ICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24u
RU5DUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rp
b24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQor
CisgICAgICAgICMgc2VuZCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hf
bWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYs
CisgICAgICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAg
ICAgYWxwbl9wcm90b2NvbD1zZWxmLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgZWFybHlfZGF0YT1zZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQsCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlz
IE5vbmU6CisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUKKyAgICAgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAg
ICAgICAgICBwdXNoX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfY29udGV4dD1iIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
aWZpY2F0ZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB1YmxpY19ieXRlcyhF
bmNvZGluZy5ERVIpLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g
W3NlbGYuY2VydGlmaWNhdGVdICsgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgc2VuZCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgICAgIHNp
Z25hdHVyZSA9IHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuc2lnbigKKyAgICAgICAgICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAg
ICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXMo
c2lnbmF0dXJlX2FsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHB1
c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAg
ICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoCisgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlVmVyaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNpZ25hdHVyZV9hbGdvcml0aG0sIHNpZ25hdHVy
ZT1zaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYu
a2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZmluaXNoZWQo
CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICBGaW5pc2hl
ZCgKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X2RhdGE9c2VsZi5rZXlfc2NoZWR1bGUuZmlu
aXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZW5jX2tleSkKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgcHJlcGFyZSB0cmFmZmljIGtleXMKKyAgICAgICAgYXNz
ZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVyYXRpb24gPT0gMgorICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVj
dGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMg
YXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBzZWxm
LmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBhcCB0cmFmZmljIikKKworICAgICAgICAj
IGFudGljaXBhdGUgY2xpZW50J3MgRklOSVNIRUQgYXMgd2UgZG9uJ3QgdXNlIGNsaWVudCBhdXRo
CisgICAgICAgIHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZmluaXNoZWRfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICBzZWxmLl9kZWNfa2V5CisgICAgICAg
ICkKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTY0KQorICAgICAgICBwdXNoX2Zpbmlz
aGVkKGJ1ZiwgRmluaXNoZWQodmVyaWZ5X2RhdGE9c2VsZi5fZXhwZWN0ZWRfdmVyaWZ5X2RhdGEp
KQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYuZGF0YSkKKworICAg
ICAgICAjIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgICAgICBpZiBzZWxmLm5ld19z
ZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZSBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vz
c2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCisgICAg
ICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9c3RydWN0LnVucGFjaygiSSIsIG9zLnVyYW5kb20o
NCkpWzBdLAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1iIiIsCisgICAgICAgICAgICAg
ICAgdGlja2V0PW9zLnVyYW5kb20oNjQpLAorICAgICAgICAgICAgICAgIG1heF9lYXJseV9kYXRh
X3NpemU9c2VsZi5fbWF4X2Vhcmx5X2RhdGEsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgc2VuZCBtZXNzc2FnZQorICAgICAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQob25l
cnR0X2J1Ziwgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorCisgICAgICAgICAgICAjIG5vdGlm
eSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgdGlja2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90
aWNrZXQoc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICAgICAgc2VsZi5uZXdfc2Vz
c2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9zZXJ2ZXJfaGFuZGxlX2ZpbmlzaGVk
KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6Cisg
ICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisKKyAgICAgICAgIyBj
aGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBzZWxm
Ll9leHBlY3RlZF92ZXJpZnlfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVy
cm9yCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAgICAgc2VsZi5fZGVjX2tl
eSA9IHNlbGYuX25leHRfZGVjX2tleQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBOb25l
CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0
aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICBFcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgc2VsZi5fZGVjX2tleSwK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5TRVJWRVJfUE9TVF9I
QU5EU0hBS0UpCisKKyAgICBkZWYgX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAg
c2VsZiwgZGlyZWN0aW9uOiBEaXJlY3Rpb24sIGVwb2NoOiBFcG9jaCwgbGFiZWw6IGJ5dGVzCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBrZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2Vj
cmV0KGxhYmVsKQorCisgICAgICAgIGlmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRU5DUllQVDoK
KyAgICAgICAgICAgIHNlbGYuX2VuY19rZXkgPSBrZXkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2RlY19rZXkgPSBrZXkKKworICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tl
eV9jYigKKyAgICAgICAgICAgIGRpcmVjdGlvbiwgZXBvY2gsIHNlbGYua2V5X3NjaGVkdWxlLmNp
cGhlcl9zdWl0ZSwga2V5CisgICAgICAgICkKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0
YXRlOiBTdGF0ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fX2xvZ2dlcjoKKyAgICAgICAg
ICAgIHNlbGYuX19sb2dnZXIuZGVidWcoIlRMUyAlcyAtPiAlcyIsIHNlbGYuc3RhdGUsIHN0YXRl
KQorICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93M2Mt
aW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiMGNlZTQ2NjEzNDJmZWU0ZWMwMzFjMDYyZjkzNTc0
NzBjNWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjUgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvX2NyeXB0by5jCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5p
dGlhbF9jbGllbnQuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2I3MDU1Y2RhYWNhOTVlZmZiOTNlNTE5ZWNl
NWUzZWQ1M2NkNWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyODAKemNtVitiMV5AY1l7e1Iz
UDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5sO0toPTl1PWkla0IkRSUtRVliZ3djCnpvNm5Y
cC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1RT1FVzJTMGMyZWdPRVlOUXJIUiRHI01TJk5T
O1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+WnpJbyNmMVY9T3I9RHM2MldoQUJHUWFeQlpf
Ym5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYwUTxUOzZRenI4e24leilnLTA+QFd7PGRBJnAm
V3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8dUshfXYycF54fk14QHxUPzJnc3BkNnJeflpJ
Klo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdAKm4lfgp6WSZrWU8ycn1Ccyl8VXI8aTIjNk0m
cSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVKc1lNNykyMCZ1NHo3P1IKenM8JDtSdHYjTD1Y
fU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2hoUEp1VFRwbFQrKj9gdzY+c1pqc2V0c1M3Cnow
YnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRmb1NaYEh5VGkjO3FYVGErdFJAfENSJG1PYkFZ
Wnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1WkArI253eC1NNypmcHkjbyo3PG0rIWNsaj5I
WFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCReVk07N3h+dGY1ZiRfeCozTiR3WGFlQ0lxR1VU
flF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7SnxJXiV8PVZCT3FwbHJmd2ZWRDc4SWBtNzxl
XkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/I0FKJml6Tgp6clojU0U4QUFIIyVKdXApN3Rv
RmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7Vmo/NlhFQlptKVU1PEZTQUwKej1hbjJZJDBS
Q01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFpPD1iIXhTfksleGtZTGBzZlBNbG58OTh5PWNq
Cno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJGcl5MVlFQR1RecG80O1YmNDsjTWhDYFlROGhu
dzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdIdDUlNl9TKXRGOVVqN08jQTJTT0plR0VmY0I3
NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05XcUtHYEQ8Zi18anFGKCVRSU57NjElcjArSn5Y
JTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5eCnpWdkkqUF9LeGBZdmlUfHhRYEl3enArR0Fl
OFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRLckVVU3hoX31saAp6dUg/YndGViU2OXshe0ly
QkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9SKSNweiNJSy1WX0dDfCZeTn1nbkkKenRuSnMm
JnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFqZFIoS3M+e2t9P2EmfCZfMV47KEplQE0+XnV2
aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7SFkpVH4kc1NgZSRUXy1aQEp3KTF4fmkyclIk
bFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYqRi08eDFobklBNil9bWJJbGFCWG1pVHRPKGpI
KTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwlVHdsNU5TOWkmWXw5QD1HKW9NcCVsaitkUW1I
JCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhvNzwjCnp2N20kfXBRYWRnRntHKUMqKnJTbzdo
VktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6TX1Hbys/KDIqOW4xKwp6RUhwejl5YHt7ZFE8
P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZXVCEzSXwqQDRVST93JnQ/SEBjQ3N4NmUKcSl5
Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVDKjlSY1ZjTk95N0wjSTxBYjYzekh8b3cKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0
aWFsX3NlcnZlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9zZXJ2ZXIuYmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YmJiOWMwYWZmODk0NzRmZDcwMjFmNmUxYjQ0ZTA1YmExYTFjNDcKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDIwMgp6Y21WOyowNSQpP3t7UjNQMDA8ZGVYZiNlSilPaTN2eFZx
WVBxdDxHPWVzV0tQbnxBdVNWSz82eXdSNWUwVT11PDMKekZyI0VVOXV7bjxXQlAoT0U/ZXlObDcm
Rm5MQ1dhZlUwcGBHS29WTTtPV1RLc1l+IzJ9OWZDZnJEZXRGUDk8SEl8CnplYzREfmtjelJnJFV2
PWdZPX56UjliYE9VWD90X2hBeyVBZzxGVyZIKCE4ITYmP15fdXF3bElBeGZaN1Y2P0smegp6KVBK
SlI0dnxGPDdpVyp0Z0tyPTB1XkhTTlVPT0Yjdn1LUW9nJCglbkZFMXRYcn44JEl1b0UqNFF2dkcj
RmVHPmIKRWNlNzdsSk9CVXkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNl
cnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTUwYzk2MGYzNTgxNGRlZjJjMmJjNWZhZjdiZGZlYjhkYWIz
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtCkBA
IC0wLDAgKzEsOTkgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246
IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIGNiOjJkOjgwOjk5
OjVhOjY5OjUyOjViCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9u
IENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3Qg
QmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6
IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAorICAgICAgICBTdWJqZWN0OiBDPVhZLCBPPVB5dGhv
biBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFN1Ympl
Y3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3MiBiaXQpCisgICAg
ICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6OTc6ZWQ6NTU6NDE6
YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6CisgICAgICAgICAgICAgICAgICAgIGFjOjU4
OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgorICAgICAgICAgICAgICAg
ICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4ZTpkZjoKKyAgICAg
ICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6YzY6ZWM6NzA6YjA6
M2E6CisgICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2OjRjOmM0OmE3Ojgx
OmU3OmI2OjI0OjY4OgorICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZTozNTowNzoyZjphMDo1
YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKKyAgICAgICAgICAgICAgICAgICAgMTE6ZmU6Y2E6MWE6
M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6CisgICAgICAgICAgICAgICAgICAgIGUx
OmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgorICAgICAgICAgICAg
ICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1ZjozNjpmMjo3ODoKKyAg
ICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6MWI6OGQ6ZmE6MjU6
ZmU6ZDQ6CisgICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVmOmVhOjE3OmNiOjU0
OmM4OjI3Ojk5OjgwOmNiOgorICAgICAgICAgICAgICAgICAgICAzYzo0NTpmMToyYzo1MjoxYzpk
ZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKKyAgICAgICAgICAgICAgICAgICAgNTc6NzM6MWI6
NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6CisgICAgICAgICAgICAgICAgICAg
IDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4OgorICAgICAgICAg
ICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5ZTo5NTpjZTo0YzoK
KyAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6MzU6NTc6Y2U6MDI6
ZGM6ZWM6Y2E6CisgICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5OmNiOjE2OjIwOjE1
OjAzOjI0OjYxOjZjOmY0OjdhOgorICAgICAgICAgICAgICAgICAgICBmYzpiNjo0ODplNTo1OTox
MDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKKyAgICAgICAgICAgICAgICAgICAgZTk6Njg6
OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6CisgICAgICAgICAgICAgICAg
ICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBiOjY4OgorICAgICAg
ICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoyODo5NDo5Nzo3MTo1
NDoKKyAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6YzU6ZGM6MWI6OWU6
ODk6NmQ6MDk6YWM6CisgICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNiOjZkOmYxOjk3OjMx
OmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgorICAgICAgICAgICAgICAgICAgICBhMDplMDpkYzo2OTox
MTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKKyAgICAgICAgICAgICAgICAgICAgYTc6
MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6CisgICAgICAgICAgICAg
ICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCisgICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAg
ICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBE
RDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoyODpGMjozNTpCNjo0
OAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAg
ICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6MjE6Q0E6NkY6OUE6
MDg6Mjg6RjI6MzU6QjY6NDgKKworICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRz
OiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIDMzOjZhOjU0OmQzOjZiOmMwOmQ3OjAxOjVm
OjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgorICAgICAgICAgYjc6MTg6ZTk6YjA6MWU6NGE6
YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6CisgICAgICAgICAxNToxMzplNDpk
ZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToKKyAgICAgICAgIDdk
OjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3OjgwOjlhOjYzOgorICAg
ICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6Yjc6NGQ6YTc6ODQ6
Y2E6CisgICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpkZjpkNzo5OTphYjox
YjplZTo4YjozMDoKKyAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFlOjk3OmJmOmU0Ojdi
OmZkOjBmOmE3OmI0Ojg1Ojc5OgorICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6YmY6MWY6Mjk6NDU6
MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6CisgICAgICAgICBlYzoyYjo0Mjo2YTplNTpiYjpj
ODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKKyAgICAgICAgIGI4OmJmOmQ1OmY3
OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3OgorICAgICAgICAgODc6
YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6NDM6ZDM6CisgICAg
ICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3NjpmNzo3NjoxZjpiMzpm
ZToKKyAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVlOjA4OmQ4OmY0OmZm
OjVhOmRjOjI1OgorICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6NTA6NzM6NzY6MjU6
MzU6ZmM6YjY6MjU6MjY6MTU6CisgICAgICAgICBjYjplYjpjNDoyYjo2MTowYzoxYzplNzplZToy
ZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKKyAgICAgICAgIGQyOmFmOmRlOmU0OjFiOjI0OjE0
OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgorICAgICAgICAgMGE6ZTA6OGQ6ZDc6
NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6CisgICAgICAgICBjNDo5
Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTowMTowNToKKyAgICAg
ICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3OmFjOmViOjRiOjdk
OgorICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6Yzc6Zjk6NmE6NDA6
ZTE6Yjg6NjQ6CisgICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3ZDo1ODo3ZDo2NDo3
OTplNTphNDowOTphYzoxZToKKyAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4CistLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KK01JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NT
cUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9i
MjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05o
TFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgKK05ESXpNVFphTUUw
eEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1Jt
OTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZ
SktvWkkKK2h2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJG
aHo0OGFXenlzZnVBajEKK25VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNj
TEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KKzRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2Fw
WDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKK3J5WDQrRUozTFcxZk52SjRIbjFLaDJo
amJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKKzNSOVJSU0JRSGw2clYz
TWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKK3JGT2Vs
YzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1
LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRr
YzE0elNpVWwzRlUKKys4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0Rj
YVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lzV3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFB
Qm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKK05MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZS
MGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKK0RBWURWUjBUQkFVd0F3RUIv
ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRndaTm0KK2tGRFF0eGpw
c0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMK
K1NZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNi
N29zd3pQZjgKKzU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0
Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdr
ZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKK0RFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEky
UFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKK0syRU1IT2Z1THhlYjdQRFVvWVRu
MHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkKK1Q0c0R4SmFmN1B0
SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKK2p1
VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCistLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjNiZDQ5ODFhNGE2NTk2
YjUwZWM2NWVkYmQ1MWIwYjRjYTNiZWU0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjUKemNt
Vi1AMER9TVV7e1IzUDI8ZyNBKndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtEQSUrTF4qbWopfGZk
dzZINXJHCnpHSU14WV5oVlJGLTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhSUT1fREVYKnJNUz1Q
Mnc5N2tGIWg+Y1dnKW5wKQpmbkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+bXFwTFphQ1g5fWha
PwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Nob3J0X2hlYWRlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yODM2ODNkMmQ1YjU1NWQ5YjAyMzE5OTkwMmZjZWU1N2QxYjU5MzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4KQEAgLTAs
MCArMSBAQAorXfRap7WcDhrW5mj1MEzU/R+zeZMnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3MTI3YTRiMDI1YWEyMzMyMzE5
M2YwNmNmMTc3M2E1NjBlMzgxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9zc2xfY2VydC5wZW0KQEAgLTAsMCArMSwzNCBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FHU0liM0RRRUJDd1VB
TUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21V
Z1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3
MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhDekFKQmdOVkJBWVRB
bGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VHQTFVRUNnd2FVSGww
YUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2CitZMkZzYUc5
emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUo4b0x6ZEI3Mzlr
CitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdPcW5rTHBCNXRuTTgy
NTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VSaHpHRGQzZGtqVWVC
alh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4
NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllvK01kZ1pPY3krN2pF
ak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6ME9CbWg0d2VRcG00
K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpDCitXWXhIQUZwQlFz
NnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JOekV6STZiNHpVCitO
c3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUy
M1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldI
WXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRH
QTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFV
SEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6TmNBQmF6aTI5cmI5
Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCitiNW9JS1BJMXRraWhV
YVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltCitkSGRo
Y21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNvSUpB
TXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gw
ZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhK
MExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpY
TjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRvRGFnTklZeWFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2Y21WMmIyTmhkR2x2
Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5LQUMvCit1bzE3RXdQ
eEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitmUjdzS0trMjJaSFNZ
CitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJ
UEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURmcFNFTG4rdjUzT005
bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JXYm53cmwra0g4eEt4
TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkz
bFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3QXR5ZlRaU1FvRnlN
bU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJCitBWTY1Q2xUVSt6
UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0YWVUUEIxQVV2CitT
dFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29tT29pdz09CistLS0t
LUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9j
aGFpbi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwYWQ0MTY4N2UyYWZkN2EwZjk0ZDE1NjFhYmRlYTFlNWRk
NDM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRo
X2NoYWluLnBlbQpAQCAtMCwwICsxLDYwIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K
K01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1zdGdKbGFhVkpjTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4
Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05
MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9E
QTRNamt4TkRJek1UWmFGdzB5T0RBM01EY3gKK05ESXpNVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpN
UmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1
SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERD
Q0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSjhvTHpkQjczOWsKK1l4
WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9zRHoxTVQ3RGxqY1pMQkx5N09xbmtMcEI1dG5NODI1NkR3
ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZCVzJINWNNQ296N1gxN2tvZVJoekdEZDNka2pVZUJqWHZS
NXFSb3NHOHdNM2xRdWcKK1U3QWl6WSszQXphajF5TjNtWjlLNWEyMGpyNThLcWlueitYeHg2c2Iy
SmZZWWZmMm5lSmJCYWhObTVpZDBBRDIKK3BpL1R0aFpxTzVEVVJKWW8rTWRnWk9jeSs3akVqT0pz
TFdaZDNZenE3OGlNMDdxRGpicElvVnBFTlpDVEhUV0EKK2hYOExJcXowT0JtaDR3ZVFwbTQrcGxV
N0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0QUJXTzduOWZXeVNtZjlRWkMKK1dZeEhBRnBCUXM2elVW
cUFEN25oRmRUcXBROWJSaWFFbmpFNEhpQWNjUFcrTUFvU3hGbnYvck56RXpJNmI0elUKK05zcEZN
ZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5UEp5a3FFWDRQWmwzTGExQmUycTdZWjF3eWRSNTIzWGQr
ZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZSdmliMTc1TDRyMldWMUNYUUg3Z0Z3WllDb2Q2V0hZcTVU
UUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BNEdBMVVk
RHdFQi93UUVBd0lGb0RBZEJnTlYKK0hTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJ
d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEUKK0ZnUVVqK29kNHpOY0FCYXppMjlyYjlOTXk3
WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNiL0sydWJSTkxvM2RTSEsKK2I1b0lLUEkxdGtpaFVhUlBN
RTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW0KK2RIZGhjbVVn
Um05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY29JSkFNc3QK
K2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFjQkFRUjNNSFV3UEFZSUt3WUJCUVVITUFLR01HaDBkSEE2
THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNCNVkyRmpaWEowTG1O
bGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBhSFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExt
NWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3WUQKK1ZSMGZCRHd3T2pBNG9EYWdOSVl5YUhSMGNEb3ZM
M1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjAKK1kyRXZjbVYyYjJOaGRHbHZiaTVq
Y213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFDZjFqRmtROU1ibktBQy8KK3VvMTdFd1B4SEta
ZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJSNVpXY2hEQ3BWN2tDT2haK2ZSN3NLS2syMlpIU1kKK29I
K3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdXdklkM0p2YXBwZFZXa0MvVnBVeUZmTHNHVURGdUlQQURt
WlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4Sy8xbVY2R3E5TVJyUnFpRGZwU0VMbit2NTNPTTltR3Nw
d1crTloxQ0lyYkN1VzAKK0t4Wi90UGtxbjhQU2Q5Zk5aUjcwYkI3cldibndybCtrSDh4S3hMbDZx
ZGxyTW1nNzRXV3doTGVReEs3KzlEZFAKK0lhRGVuenF4NWN3V0JHWS9DMEhjUWowZ1B1eTNsU3Mx
Vi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3WFM3NWlSQXIKKytVRkdUendBdHlmVFpTUW9GeU1tTVVM
cWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExXRXN0VTFOSUIxSy9DUkk3Z0kKK0FZNjVDbFRVK3pSUy90
bEY4SUE3dHNGdmd0RWY4anNJOWthbWxpZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQQjFBVXYKK1N0UFlR
a0tOTStOanl0V0hsNXROdUJvRE5Mc2MwZ0kvV1NQaUk0Q0lZOEx3b21Pb2l3PT0KKy0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRWJUQ0NB
dFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgor
QkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZi
aUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6
TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dHUEFEQ0NB
WW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQorblV0THh6RDJ1QXV6
VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVwNEhudGlSbworNHFC
K05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVaTDF5UUFSZHVmajU5
eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9XbEY3SHY2aGZMVk1n
bm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1JVTJXSGwyb05KaHlC
dXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFWODRDM096S2FmaUtX
am5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtBSjdZL1RMSFoyMk4v
WjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgvd045N0pKc1hjRzU2
SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3cHhEWQoraXNXcUc4
Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVUzYi9LMnVi
UgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1YlJOTG8zZFNIS2I1
b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFN
MnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0RlZReEZSUGszbjVP
RE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6RFFMeVAxQ3JhUHRI
dUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2Nlh2K1I3L1ErbnRJ
VjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6WQorZlUzUnVML1Y5
eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpwazV5aUQwY1NOdgor
REVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdIUEpRYzNZbE5meTJK
U1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09yS1ZoR29ObkFDdUNO
MTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdFRml2T1NDdDJKYkpl
aHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdTbWxYODk5V0gxa2Vl
V2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5
LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGZkZWMxMDFjOGQ2NzRjNTIwN2QxMDBmNzRiNmE3MjQyNGNiNTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCkBAIC0w
LDAgKzEsNDAgQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRy9RSUJBREFOQmdr
cWhraUc5dzBCQVFFRkFBU0NCdWN3Z2diakFnRUFBb0lCZ1FDZktDODNRZTkvWkdNVworWWhicEFS
UmlLY282bUpJOUNOTmVhZjdBODlURSt3NVkzR1N3Uzh1enFwNUM2UWViWnpQTnVlZzhIWW9Ud044
NQorWjN4TTAzNi9RdzlLaFFWdGgrWERBcU0rMTllNUtIa1ljeGczZDNaSTFIZ1kxNzBlYWthTEJ2
TURONVVMb0ZPdworSXMyUHR3TTJvOWNqZDVtZlN1V3R0STYrZkNxb3A4L2w4Y2VyRzlpWDJHSDM5
cDNpV3dXb1RadVluZEFBOXFZdgorMDdZV2FqdVExRVNXS1BqSFlHVG5NdnU0eEl6aWJDMW1YZDJN
NnUvSWpOTzZnNDI2U0tGYVJEV1FreDAxZ0lWLworQ3lLczlEZ1pvZU1Ia0tadVBxWlZPeE9LK0Ev
TnJtcnFIRnNQSXNyczV3azdRQVZqdTUvWDFza3BuL1VHUWxtTQorUndCYVFVTE9zMUZhZ0ErNTRS
WFU2cVVQVzBZbWhKNHhPQjRnSEhEMXZqQUtFc1JaNy82emN4TXlPbStNMURiSworUlRINE5XalZX
cG5ZOFhhVkdkUmh0VHBIOU1qeWNwS2hGK0QyWmR5MnRRWHRxdTJHZGNNblVlZHQxM2ZuOXhEdQor
UDRQb3BoRTBpcC9JTWduK2tiNG05ZStTK0s5bGxkUWwwQis0QmNHV0FxSGVsaDJLdVUwQ0F3RUFB
UUtDQVlFQQorbEtpV0lZam15UmpkTEtVR1BURVM5dldOdk5tUmpvelYwUlEwTGNvU2JNTUxEWmtl
TzBVd3lXcU9WSFVROCtpYgorakljZkVqZU5KeEk1N29ab3BlSE9PNXZKaHBObEZIK2c3bHRpVzJx
RVJxQTFLODhsU1htOTlCenc2Rk5xaENSRQorSzh1YjVOOWZ5ZkpBK1A0by94bTBXSzhFWGs1eUlV
VjE3cC85ekpKeHpnS2d2MmpzVlRpM1FHMk9aR3ZuNE91ZworQnlvbU1aRUdIa0JEemR4ejhjL2NQ
MVRsazFSRnV3U2dld3MxNzhrMnhxN0FZU00vczBZbUhpN2IvUlN2cHRYNgorMXY4UDhrWE5VZTRB
d1RhTnlybHZGMmx3SWFkWjhoMWhBN3RDRTJuNDRiN2E3S2ZoQWt3Y2JyMVQ1OWlvWWg2UAorenhz
eVBUNjc4dUQ1MWRidEQvRFhKQ2NvZWVGT2I4dXprUjJLTmNyblF6WnBDSm5ScTRHcDV5Ynh3c3h4
dXpwcgorZ3owZ2JObGh1V3RFN0VvU3ptSUs5dCtXVFM3SU0yQ3ZaeW1kNi9PQWgxRnV3NkFRaFNw
NjRYUnAzT2ZNTUFBQworSWUyRVB0S2o0aXNsV0dUOFZvVWp1UllHbWRSaDRkdUFIMWRraUFYT1dB
M1I3eTVhMS95L2lFOEtFOEJ0eG9jQgorQW9IQkFNOGFpVVJncHUxRnMwT3F6Nml6ZWM3S1NMTDNs
OGhtVytNS1VPZmsvWWJuZzZGclRGc0w1WXR6UitBcAord1c0d3dXbm5JS0VjMUpMaVo3ZzhhZ1JF
VEs4aHI1UHdGWFVuL0dTV0MwU01zYXpMSlRveVNRUzVMT1YwdEx6Swora0ozanROVTd0bmxER05r
Q0hUSFNvVkwyVC84dCtJa1pJL2g1WjZ3amxZUHZVMkl1MG5WSVh0aUcrYWx2NEE2TQorSHJoOWw1
b3I0bWpCNnJHblZYZVlvaExrQ202cy9XOTdhaFZ4TE1jRWRic0JvMXBybTJKcUduU29pUi90RUZD
LworUUhRbmJRS0J3UURFdTdrVzBZZzlzWjg5UXRZdFZRMVlwaXhGWk9SYVVlUklSTG5wRXMxdzdM
MW1DYk9aMkxqOQorSkh4c0gwNWNZQWM3SEpmUHd3eHYzKzNhR0FJQy9kZnU0VlN3RUZ0YXRBelVw
emxoektTNStIUUNXQjRKVU5OVQorTVEzK0Z3SzJ4UVg0UGg4dCtPenJGaVljSzJnMEFuNVV4V01h
MkhXSUFXVU9oblRPeWRBVnNvSDZ5UDMxY1ZtNAorMGh4b0FCQ3dmbGFOTE5HalJVeWZCcExUQWNO
dS9ZdGNFK0tSRXk3WUFBZ1hYcmhSU080WHBMc1NYd0xuTFQ3LworWU9rb0JXRGNUV0VDZ2NCUFdu
U1VEWkNJUTNlZml0aE1aSkJjaXFkMlkyWDE5RHBxOE8zMUhJbUQ0anRPWTBWNworY1VCL3dTa2VI
QUd3amQvZUN5QTJlMHg4QjJJRWRxbU1mdnIrODZKSnhla0MzZEpZWENGdkg1V0loc0g1M1lDYQor
M2JUMUtsV0NMUDlpYi9nKzU4VlFDMFIvQ2M5VDRzZkxlUE5IN0Q1WmtaZDF3bGJWMzBDUHIraThL
d0theTZNRAoreGh2dEx4K2prMDdHRStFOXdtamJDTW83VGNseXJMb1ZFT2xxWk1BcXNoZ0FwVCtw
OWV5Q1BldHdYdURId2EzbgorV3hoSGNsY1pDVjdSNHJVQ2djQWtkR1NueGN2cElyRFBPVU5Xd3h2
bUFXVFN0dzlaYlROUDhPeENOQ205Y3lEbAorZDRiQVMxaDhEL2ErVWs3QzcwaG51N1NsMnc3QzdF
dTJ6aHdSVWRoaGUzK2w0R0lOUEsvajk5aTZOcUdQbEdwcQoreE1sTUVKNFlTNzY4QnFlS0ZwZzBs
ODVQUm9FZ1RzcGhEZW9ST1NVUHNFUGRCWjlCeElCbFlLVGtiS0VTWkRHUgordHd6WUhsangxbjFO
Q0RZUGZsbXJiMUtwWG40RU9jT2JOZ2h3MktxcU5VVVdmT2VCUHdCQTFGeHpNNEJyQVN0cAorREJJ
TnBHUzREYzBtalZpVmVnRUNnY0EzaFR0bTgyWGR4UVhqOUxRbWIvRTNsS3gvN0g4N1hJT2VOTW12
all1WgoraVM5d0tya0YrdTQydnlvRHhjS01DbnhQNTA1NndwZFNUNHA1NnIrU0J3VlRIY2MzbEdC
U0djTVRJZndSWHJqMwordGhPQTJvdXIybjRvdU5Jc1l5VGxjc1FTemlmd21wUm1WTVJQeGw5ZllW
ZEVXVWdCODNGZ0hUMEQ5YXZ2Wm5GOQordDlPY2NuR0pYU2hBSVpJQkFEaFZqL0p3RzRGYmFYNDJO
aWpENVBOcFZMazFZMTdPVjBJNTc2VDlTZmFRb0JqSgorYUgxTS96QzRhVmFTMERZQi9HeHE3djg9
CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9hc3luY2lvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDllY2Q1Zjc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpAQCAtMCww
ICsxLDM3NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHJhbmRv
bQoraW1wb3J0IHNvY2tldAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgor
ZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorCitmcm9tIGFpb3F1aWMuYXN5bmNp
by5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGlt
cG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitmcm9tIGFpb3F1aWMuYXN5bmNpby5zZXJ2ZXIg
aW1wb3J0IHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWlj
Q29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2Vy
CisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VS
VkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIFNLSVBfVEVTVFMsCisgICAg
Z2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgcnVuLAorKQorCityZWFsX3NlbmR0byA9IHNv
Y2tldC5zb2NrZXQuc2VuZHRvCisKKworZGVmIHNlbmR0b193aXRoX2xvc3Moc2VsZiwgZGF0YSwg
YWRkcj1Ob25lKToKKyAgICAiIiIKKyAgICBTaW11bGF0ZSAyNSUgcGFja2V0IGxvc3MuCisgICAg
IiIiCisgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC4yNToKKyAgICAgICAgcmVhbF9zZW5kdG8o
c2VsZiwgZGF0YSwgYWRkcikKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgaGFuZGxlX3N0cmVhbShyZWFkZXIsIHdy
aXRlcik6CisgICAgYXN5bmMgZGVmIHNlcnZlKCk6CisgICAgICAgIGRhdGEgPSBhd2FpdCByZWFk
ZXIucmVhZCgpCisgICAgICAgIHdyaXRlci53cml0ZShieXRlcyhyZXZlcnNlZChkYXRhKSkpCisg
ICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKHNl
cnZlKCkpCisKKworY2xhc3MgSGlnaExldmVsVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5zZXJ2ZXJf
aG9zdCA9ICJsb2NhbGhvc3QiCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSA0NDMzCisKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorCisgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGhvc3Q9Tm9uZSwKKyAgICAgICAgcG9ydD1O
b25lLAorICAgICAgICBjYWRhdGE9Tm9uZSwKKyAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRG
SUxFLAorICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgIHJlcXVlc3Q9YiJwaW5n
IiwKKyAgICAgICAgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBpZiBob3N0IGlzIE5vbmU6Cisg
ICAgICAgICAgICBob3N0ID0gc2VsZi5zZXJ2ZXJfaG9zdAorICAgICAgICBpZiBwb3J0IGlzIE5v
bmU6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXJfcG9ydAorICAgICAgICBpZiBjb25m
aWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZp
Z3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJp
ZnlfbG9jYXRpb25zKGNhZGF0YT1jYWRhdGEsIGNhZmlsZT1jYWZpbGUpCisgICAgICAgIGFzeW5j
IHdpdGggY29ubmVjdChob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sICoq
a3dhcmdzKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAjIHdhaXRpbmcgZm9yIGNvbm5lY3RlZCB3
aGVuIGNvbm5lY3RlZCByZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgICAgICBhd2FpdCBjbGll
bnQud2FpdF9jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0
IGNsaWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3Jp
dGVyLmNhbl93cml0ZV9lb2YoKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
d3JpdGVyLmdldF9leHRyYV9pbmZvKCJzdHJlYW1faWQiKSwgMCkKKworICAgICAgICAgICAgd3Jp
dGVyLndyaXRlKHJlcXVlc3QpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKKworICAg
ICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAgICAgICAgIyB3YWl0
aW5nIGZvciBjbG9zZWQgd2hlbiBjbG9zZWQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgICAgICBh
d2FpdCBjbGllbnQud2FpdF9jbG9zZWQoKQorCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisg
ICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBob3N0PSI6
OiIsICoqa3dhcmdzKToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklM
RSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyID0gYXdhaXQgc2VydmUoCisg
ICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICBwb3J0PXNlbGYuc2VydmVyX3BvcnQs
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBz
dHJlYW1faGFuZGxlcj1oYW5kbGVfc3RyZWFtLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rf
YW5kX3NlcnZlKHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAg
IHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
aXB2NChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihob3N0PSIwLjAuMC4wIikp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0PSIxMjcuMC4wLjEi
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIEBz
a2lwSWYoImlwdjYiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBJUHY2IHRlc3RzIikKKyAgICBk
ZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY2KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKGhvc3Q9Ijo6IikpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2Ns
aWVudChob3N0PSI6OjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJn
bmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2NlcnRpZmljYXRlKHNl
bGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19jZXJ0
aWZpY2F0ZShjb21tb25fbmFtZT0ibG9jYWxob3N0IikKKworICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsIHByaXZhdGVfa2V5PXByaXZhdGVfa2V5LCBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2UgPSBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY2FkYXRh
PWNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisg
ICAgICAgICAgICAgICAgY2FmaWxlPU5vbmUsCisgICAgICAgICAgICApCisgICAgICAgICkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRl
c3RfY29ubmVjdF9hbmRfc2VydmVfbGFyZ2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBU
cmFuc2ZlciBlbm91Z2ggZGF0YSB0byByZXF1aXJlIHJhaXNpbmcgTUFYX0RBVEEgYW5kIE1BWF9T
VFJFQU1fREFUQS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogMjA5NzE1Mgor
ICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNl
bGYucnVuX2NsaWVudChyZXF1ZXN0PWRhdGEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aG91dF9j
bGllbnRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRf
d2l0aG91dF9jb25maWcoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChzZWxmLnNl
cnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
YXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAg
ICAgcnVuKHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xp
ZW50X3dyaXRlbGluZXMoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFz
eW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxm
LnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkg
YXMgY2xpZW50OgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50
LmNyZWF0ZV9zdHJlYW0oKQorICAgICAgICAgICAgICAgIGFzc2VydCB3cml0ZXIuY2FuX3dyaXRl
X2VvZigpIGlzIFRydWUKKworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZWxpbmVzKFtiIjAx
MjM0NTY3IiwgYiI4OTAxMjM0NSJdKQorICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9lb2Yo
KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKCkKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHJ1bl9jbGll
bnRfd3JpdGVsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiIjU0
MzIxMDk4NzY1NDMyMTAiKQorCisgICAgQHNraXBJZigibG9zcyIgaW4gU0tJUF9URVNUUywgIlNr
aXBwaW5nIGxvc3MgdGVzdHMiKQorICAgIEBwYXRjaCgic29ja2V0LnNvY2tldC5zZW5kdG8iLCBu
ZXdfY2FsbGFibGU9bGFtYmRhOiBzZW5kdG9fd2l0aF9sb3NzKQorICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dpdGhfcGFja2V0X2xvc3Moc2VsZiwgbW9ja19zZW5kdG8pOgorICAgICAg
ICAiIiIKKyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1Y2Nlc3MgYW5kIHN0
cmVhbSBkYXRhIGlzIHN1Y2Nlc3NmdWxseSBzZW50CisgICAgICAgIGFuZCByZWNlaXZlZCBpbiB0
aGUgcHJlc2VuY2Ugb2YgcGFja2V0IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGluIGVhY2ggZGlyZWN0
aW9uKS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogNjU1MzYKKworICAgICAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
aXNfY2xpZW50PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAgICAgICAgKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjb25maWd1cmF0
aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKSkKKworICAgICAgICByZXNwb25zZSA9IHJ1bigKKyAg
ICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwg
cXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0PWRhdGEsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5k
X3NlcnZlX3dpdGhfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VydmVy
CisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHN0b3JlID0gU2Vzc2lvblRp
Y2tldFN0b3JlKCkKKworICAgICAgICBkZWYgc2F2ZV90aWNrZXQodCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdAorCisg
ICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAgICAgICAgICAgICAg
ICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cj1zdG9yZS5hZGQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgZmlyc3Qg
cmVxdWVzdAorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcj1zYXZlX3RpY2tldCksKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiImduaXAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNsaWVudF90
aWNrZXQpCisKKyAgICAgICAgIyBzZWNvbmQgcmVxdWVzdAorICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsIHNlc3Np
b25fdGlja2V0PWNsaWVudF90aWNrZXQKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIp
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeShz
ZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9
IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3RhdGVs
ZXNzX3JldHJ5X2JhZF9vcmlnaW5hbF9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgSWYgdGhlIHNlcnZlcidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZl
IHRoZSBjb3JyZWN0CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgdGhlIGNvbm5lY3Rp
b24gZmFpbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9wcm90b2NvbCgqYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBRdWljQ29ubmVjdGlvblByb3Rv
Y29sKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9vcmlnaW5h
bF9jb25uZWN0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHByb3RvY29sCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29s
LCBzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKwor
ICAgIEBwYXRjaCgiYWlvcXVpYy5xdWljLnJldHJ5LlF1aWNSZXRyeVRva2VuSGFuZGxlci52YWxp
ZGF0ZV90b2tlbiIpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxl
c3NfcmV0cnlfYmFkKHNlbGYsIG1vY2tfdmFsaWRhdGUpOgorICAgICAgICBtb2NrX3ZhbGlkYXRl
LnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigiRGVjcnlwdGlvbiBmYWlsZWQuIikKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAor
ICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90aW1lb3V0
PTQuMCksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9hbmRfc2VydmVfd2l0aF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYpOgorICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisKKyAgICAgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290
aWF0aW9uCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpKQorICAgICAgICBjb25maWd1cmF0aW9u
LnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0QSkKKworICAgICAgICByZXNw
b25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNl
bGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgcG9ydD00NDAwLAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
LCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0X25vX3dhaXRfY29ubmVjdGVkKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZChjb25maWd1cmF0aW9u
KToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgIDQ0MDAsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgIHdhaXRfY29ubmVjdGVkPUZhbHNlLAorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAg
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBydW5fY2xpZW50X25vX3dhaXRfY29ubmVjdGVkKAorICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVv
dXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9sb2NhbF9wb3J0KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChsb2NhbF9wb3J0PTM0NTYp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVm
IHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5f
Y2xpZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisg
ICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2
ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisg
ICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGlu
ZygpCisgICAgICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpKQor
CisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnRfa2V5X3VwZGF0ZSgpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2Fk
X3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNl
bGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAgICAgICAg
KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorICAgICAg
ICAgICAgICAgIGNsaWVudC5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICAgICAgICAgIGF3
YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAg
ICAgIHJ1bihydW5fY2xpZW50X2tleV91cGRhdGUoKSkKKworICAgIGRlZiB0ZXN0X3Bpbmcoc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FD
RVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAg
ICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIGF3YWl0
IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9waW5n
KCkpCisKKyAgICBkZWYgdGVzdF9waW5nX3BhcmFsbGVsKHNlbGYpOgorICAgICAgICBhc3luYyBk
ZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwg
c2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgICAgICAg
ICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBjb3JvcyA9IFtjbGllbnQucGluZygpIGZv
ciB4IGluIHJhbmdlKDE2KV0KKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLmdhdGhlcigq
Y29yb3MpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVu
X2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2ZXNfZ2FyYmFnZShz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBz
ZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJjMDAwMDAwMDAwODAi
KSwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNlcnZlci5jbG9zZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmRiZjUxMTI0Y2Ri
NjMyYWRhMzBiNjZjM2YyZTQ0NmVmYmMyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQg
YXN5bmNpbworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmFz
eW5jaW8uY29tcGF0IGltcG9ydCBfYXN5bmNjb250ZXh0bWFuYWdlcgorCitmcm9tIC51dGlscyBp
bXBvcnQgcnVuCisKKworQF9hc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgc29tZV9jb250
ZXh0KCk6CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorICAgIHlpZWxkCisgICAgYXdhaXQg
YXN5bmNpby5zbGVlcCgwKQorCisKK2NsYXNzIEFzeW5jaW9Db21wYXRUZXN0KFRlc3RDYXNlKToK
KyAgICBkZWYgdGVzdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAg
ICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcGFzcwor
CisgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIHNv
bWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29tZSBy
ZWFzb24iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToK
KyAgICAgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb25f
dHlwZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzeW5j
IHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAg
ICAgICAgcnVuKHRlc3QoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1
ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MWRiYzQ0ZDBkZDI2ZjFlZjY4NTY4MjRkNTViYjg4MDk5Mjg4NzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAgKzEsMjAxIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciwgc2l6ZV91aW50X3Zh
cgorCisKK2NsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RhdGFfc2xp
Y2Uoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhX3NsaWNl
KDAsIDgpLCBiIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YV9zbGljZSgxLCAzKSwgYiJceDA3XHgwNiIpCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLmRhdGFfc2xpY2UoLTEsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVm
ZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDkpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1
Zi5kYXRhX3NsaWNlKDEsIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAx
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygzKSwgYiJceDA4XHgw
N1x4MDYiKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc19uZWdhdGl2ZShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAg
ICAgICAgIGJ1Zi5wdWxsX2J5dGVzKC0xKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc190cnVu
Y2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYu
cHVsbF9ieXRlcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisK
KyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3plcm8oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wdWxs
X3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4
MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91
aW50OCgpLCAweDA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEpCisK
KyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ4X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MTYoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAz
XHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQxNigpLCAw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMikKKworICAgIGRl
ZiB0ZXN0X3B1bGxfdWludDE2X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDMyKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJc
eDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50MzIoKSwgMHgwODA3
MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgZGVm
IHRlc3RfcHVsbF91aW50MzJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJy
b3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50NjQoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4
MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ2NCgpLCAweDA4MDcw
NjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKwor
ICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ2NCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXMoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGIiXHgwOFx4MDdceDA2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAz
KQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlcldyaXRlRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiJceDA4XHgwN1x4
MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ZGVmIHRlc3RfcHVzaF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9MykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDgoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICBidWYucHVzaF91aW50OCgweDA4KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDgiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQxNihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTIpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNigw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDciKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAgICBkZWYgdGVzdF9w
dXNoX3VpbnQzMihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQzMigweDA4MDcwNjA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhLCBiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ2NChzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ2NCgweDA4
MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDgpCisKKyAgICBkZWYgdGVzdF9zZWVrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1iIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWYu
ZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgICAg
ICBidWYuc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgICAgIGJ1Zi5zZWVrKDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2VlaygtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2Vlayg5KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKworY2xhc3MgVWludFZhclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiByb3VuZHRyaXAoc2VsZiwgZGF0YSwgdmFsdWUpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3Vp
bnRfdmFyKCksIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIGxl
bihkYXRhKSkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkKKyAgICAgICAgYnVm
LnB1c2hfdWludF92YXIodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGRhdGEpCisKKyAgICBkZWYgdGVzdF91aW50X3ZhcihzZWxmKToKKyAgICAgICAgIyAxIGJ5dGUK
KyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDAwIiwgMCkKKyAgICAgICAgc2VsZi5yb3VuZHRy
aXAoYiJceDAxIiwgMSkKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDI1IiwgMzcpCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHgzZiIsIDYzKQorCisgICAgICAgICMgMiBieXRlcworICAg
ICAgICBzZWxmLnJvdW5kdHJpcChiIlx4N2JceGJkIiwgMTUyOTMpCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHg3Zlx4ZmYiLCAxNjM4MykKKworICAgICAgICAjIDQgYnl0ZXMKKyAgICAgICAg
c2VsZi5yb3VuZHRyaXAoYiJceDlkXHg3Zlx4M2VceDdkIiwgNDk0ODc4MzMzKQorICAgICAgICBz
ZWxmLnJvdW5kdHJpcChiIlx4YmZceGZmXHhmZlx4ZmYiLCAxMDczNzQxODIzKQorCisgICAgICAg
ICMgOCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YzJceDE5XHg3Y1x4NWVceGZm
XHgxNFx4ZThceDhjIiwgMTUxMjg4ODA5OTQxOTUyNjUyKQorICAgICAgICBzZWxmLnJvdW5kdHJp
cChiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwgNDYxMTY4NjAxODQyNzM4Nzkw
MykKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludF92YXJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhmZiIpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludF92YXJfdG9vX2JpZyhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBidWYucHVzaF91aW50X3Zhcig0NjExNjg2
MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
KGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3Ro
IGludGVnZXIiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NpemVfdWludF92YXIoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig2MyksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxNjM4MyksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxMDczNzQxODIzKSwgNCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDMpLCA4KQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAg
ICBzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVnZXIgaXMgdG9vIGJp
ZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYTVjZGM1OGY1OWM2ZTk5OGIwZDM5
NDlhYTc0Zjc3ZDIxNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxODAwIEBACitpbXBvcnQgYXN5bmNpbworaW1w
b3J0IGJpbmFzY2lpCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitpbXBvcnQgdGltZQor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljIGltcG9ydCB0bHMK
K2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBlbmNvZGVf
dWludF92YXIKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgUXVpY0Nvbm5lY3Rpb24sCisgICAgUXVpY0Nv
bm5lY3Rpb25FcnJvciwKKyAgICBRdWljTmV0d29ya1BhdGgsCisgICAgUXVpY1JlY2VpdmVDb250
ZXh0LAorKQorZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9t
IGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gYWlvcXVpYy5xdWlj
LnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgUXVpY0Vycm9y
Q29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGVuY29kZV9xdWljX3JldHJ5LAorICAgIGVu
Y29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNr
ZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNrZXRCdWlsZGVyCitm
cm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBhY2VyCisKK2Zyb20g
LnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRG
SUxFLAorICAgIFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAorICAgIFNFUlZFUl9LRVlGSUxF
LAorKQorCitDTElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCisKK1NFUlZFUl9BRERSID0g
KCIyLjMuNC41IiwgNDQzMykKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQsIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRUKToKKyAgICByZXR1cm4gUXVpY1JlY2VpdmVD
b250ZXh0KAorICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Lmhv
c3RfY2lkLAorICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3JrX3BhdGhzWzBdLAor
ICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9W10sCisgICAgICAgIHRpbWU9YXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnRpbWUoKSwKKyAgICApCisKKworZGVmIGNvbnN1bWVfZXZlbnRzKGNvbm5l
Y3Rpb24pOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV2ZW50ID0gY29ubmVjdGlvbi5uZXh0
X2V2ZW50KCkKKyAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisK
KworZGVmIGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVudF9vcHRpb25zKToK
KyAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1R
dWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICAgICAgKQorICAgICkKKyAgICBjbGll
bnQuX2Fja19kZWxheSA9IDAKKworICAgICMga2ljay1vZmYgaGFuZHNoYWtlCisgICAgY2xpZW50
LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIHJldHVybiBjbGllbnQKKworCitAY29udGV4dGxp
Yi5jb250ZXh0bWFuYWdlcgorZGVmIGNsaWVudF9hbmRfc2VydmVyKAorICAgIGNsaWVudF9rd2Fy
Z3M9e30sCisgICAgY2xpZW50X29wdGlvbnM9e30sCisgICAgY2xpZW50X3BhdGNoPWxhbWJkYSB4
OiBOb25lLAorICAgIGhhbmRzaGFrZT1UcnVlLAorICAgIHNlcnZlcl9rd2FyZ3M9e30sCisgICAg
c2VydmVyX2NlcnRmaWxlPVNFUlZFUl9DRVJURklMRSwKKyAgICBzZXJ2ZXJfa2V5ZmlsZT1TRVJW
RVJfS0VZRklMRSwKKyAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKKyAgICBzZXJ2ZXJfcGF0Y2g9bGFt
YmRhIHg6IE5vbmUsCispOgorICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCks
ICoqY2xpZW50X29wdGlvbnMKKyAgICApCisgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKworICAgIGNsaWVudCA9
IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24sICoqY2xp
ZW50X2t3YXJncykKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tl
dF9wYWNpbmcoY2xpZW50KQorICAgIGNsaWVudF9wYXRjaChjbGllbnQpCisKKyAgICBzZXJ2ZXJf
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9RmFs
c2UsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9ucworICAgICkKKyAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVyX2NlcnRmaWxlLCBz
ZXJ2ZXJfa2V5ZmlsZSkKKworICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRp
b249c2VydmVyX2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKKyAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVyKQorICAgIHNlcnZl
cl9wYXRjaChzZXJ2ZXIpCisKKyAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCisgICAgaWYgaGFuZHNo
YWtlOgorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgp
KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlcikKKworICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCisKKyAgICAjIGNsb3NlCisg
ICAgY2xpZW50LmNsb3NlKCkKKyAgICBzZXJ2ZXIuY2xvc2UoKQorCisKK2RlZiBkaXNhYmxlX3Bh
Y2tldF9wYWNpbmcoY29ubmVjdGlvbik6CisgICAgY2xhc3MgRHVtbXlQYWNrZXRQYWNlcihRdWlj
UGFja2V0UGFjZXIpOgorICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93KToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBjb25uZWN0aW9uLl9sb3NzLl9wYWNlciA9IER1
bW15UGFja2V0UGFjZXIoKQorCisKK2RlZiBzZXF1ZW5jZV9udW1iZXJzKGNvbm5lY3Rpb25faWRz
KToKKyAgICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2VfbnVtYmVyLCBjb25u
ZWN0aW9uX2lkcykpCisKKworZGVmIGRyb3Aoc2VuZGVyKToKKyAgICAiIiIKKyAgICBEcm9wIGRh
dGFncmFtcyBmcm9tIGBzZW5kZXJgLgorICAgICIiIgorICAgIHJldHVybiBsZW4oc2VuZGVyLmRh
dGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCisKKworZGVmIHJvdW5kdHJpcChzZW5k
ZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJg
IHRvIGByZWNlaXZlcmAgYW5kIGJhY2suCisgICAgIiIiCisgICAgcmV0dXJuICh0cmFuc2Zlcihz
ZW5kZXIsIHJlY2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikpCisKKworZGVmIHRy
YW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAgIFNlbmQgZGF0YWdyYW1zIGZy
b20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYC4KKyAgICAiIiIKKyAgICBkYXRhZ3JhbXMgPSAwCisg
ICAgZnJvbV9hZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGllbnQgZWxzZSBTRVJW
RVJfQUREUgorICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9dGltZS50aW1lKCkpOgorICAgICAgICBkYXRhZ3JhbXMgKz0gMQorICAgICAgICByZWNlaXZl
ci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUudGltZSgpKQorICAg
IHJldHVybiBkYXRhZ3JhbXMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvblRlc3QoVGVzdENhc2Up
OgorICAgIGRlZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIsIGFscG5fcHJv
dG9jb2w9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBoYW5kc2hha2UgY29tcGxl
dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290
aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxw
bl9wcm90b2NvbCkKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90
b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9kYXRhX2FjY2VwdGVk
LCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNzaW9uX3Jlc3VtZWQs
IEZhbHNlKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElz
c3VlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKKwor
ICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAg
ICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBmb3Ig
aSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIu
bmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Qo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAg
ICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQorCisg
ICAgICAgICAgICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJsZSBjb25uZWN0aW9u
IElEcyBmb3IgdGhlIHBlZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsx
LCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNlcnZlci5fcGVlcl9j
aWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgY2xp
ZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50
LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9u
IHRoZSBjbGllbnQgc2lkZQorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihjbGllbnQu
Z2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbGll
bnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2Vz
IG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcihzZXJ2
ZXIuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShz
ZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNsaWVudCBsb2cKKyAg
ICAgICAgICAgIGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50
b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2xpZW50X2xvZ1si
dHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICAgICAgICAgICMgY2hlY2sgc2VydmVy
IGxvZworICAgICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1cmF0aW9uLnF1aWNf
bG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzZXJ2
ZXJfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3Rfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAg
ICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsiaDMtMjUiLCAiaHEt
MjUiXX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogWyJo
cS0yNSJdfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBj
aGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFr
ZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPSJocS0yNSIpCisK
KyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6CisgICAgICAgIGNs
aWVudF9sb2dfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VydmVyX2xvZ19maWxlID0g
aW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50X2xvZ19maWxlfSwK
KyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IHNlcnZlcl9s
b2dfZmlsZX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMg
Y2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hh
a2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgICAgICAgICAgIyBjaGVjayBz
ZWNyZXRzIHdlcmUgbG9nZ2VkCisgICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50X2xvZ19m
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXJfbG9nX2ZpbGUu
Z2V0dmFsdWUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfbG9nLCBzZXJ2
ZXJfbG9nKQorICAgICAgICAgICAgbGFiZWxzID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGlu
IGNsaWVudF9sb2cuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQo
bGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBsYWJlbHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
UVVJQ19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2VydF9jaGFpbihzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2VydGZpbGU9U0VSVkVS
X0NFUlRGSUxFX1dJVEhfQ0hBSU4pIGFzICgKKyAgICAgICAgICAgIGNsaWVudCwKKyAgICAgICAg
ICAgIHNlcnZlciwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNv
bXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwg
c2VydmVyPXNlcnZlcikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzEoc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGV2
ZW4gaW4gdGhlIGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1zKToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhb
MF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVp
Y0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0
aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAg
ICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmln
dXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVy
X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAg
ICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUs
IFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5
ID0gMAorCisgICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4w
CisgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQorCisgICAgICAgICMgSU5JVElBTCBp
cyBsb3N0CisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBjbGllbnQuaGFuZGxlX3RpbWVyKG5v
dz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAzLjApCisKKyAg
ICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFL
RQorICAgICAgICBub3cgPSAxLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFn
cmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlcnZlci5nZXRfdGltZXIoKSwgMi4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMu
UHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4
dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBub3JtYWxseQorICAg
ICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3Jh
bShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xp
ZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RF
cXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVu
dC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5v
dyA9IDEuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJ
RU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3Rp
bWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Mu
c3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29t
cGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQo
KSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAg
IyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzIoc2VsZik6
CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4g
W2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29u
ZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxF
KQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50
X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAg
IHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNl
KQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NF
UlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5v
dyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNl
cnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFIGJ1dCBzZWNv
bmQgZGF0YWdyYW0gaXMgbG9zdAorICAgICAgICBub3cgPSAwLjEKKyAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAg
ICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2Vu
dF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2VpdmVzIGZpcnN0IGRh
dGFncmFtIGFuZCBzZW5kcyBBQ0tTCisgICAgICAgIG5vdyA9IDAuMgorICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAg
ICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQorICAgICAgICBzZWxm
LmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29s
TmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQo
KSkKKworICAgICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORworICAgICAgICBub3cg
PSBjbGllbnQuZ2V0X3RpbWVyKCkgICMgfjAuNjI1CisgICAgICAgIGNsaWVudC5oYW5kbGVfdGlt
ZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93
PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0
NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAx
Ljg3NSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNjYXJkcyBJTklUSUFM
IGFuZCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC43MjUKKyAgICAgICAgc2VydmVyLnJlY2Vp
dmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFj
a2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIEFDS3MgYXJlIGxvc3QsIHNlcnZl
ciByZXRyYW5zbWl0cyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gc2VydmVyLmdldF90aW1lcigp
CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNr
ZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkK
KworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKKyAgICAgICAgbm93ID0g
MS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJf
QUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzMyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50
LmdldF90aW1lcigpLCAyLjQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50
Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25J
ZElzc3VlZCkKKworICAgICAgICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2
ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAgICAgIGNs
aWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykK
KyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxl
IHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMoc2VsZik6CisgICAg
ICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4gW2xlbih4
WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1
aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29uZmlndXJh
dGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorCisg
ICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZp
Z3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgIHNlcnZl
cl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fja19kZWxh
eSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5vdyA9IDAu
MAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAg
aXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9
IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5U
X0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5k
KG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
LCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1l
cigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFj
ZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vy
dmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAgICAgICMgY2xpZW50
IHJlY2VpdmVzIElOSVRJQUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gMC4yCisgICAgICAg
IGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5v
dykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9B
RERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwg
WzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50
KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBjb21wbGV0ZXMgaGFuZHNo
YWtlCisgICAgICAgIG5vdyA9IDAuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShp
dGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVy
LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVu
dHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2Vy
dmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rp
b25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQSU5HCisgICAgICAg
IG5vdyA9IDAuODI1CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkKKworICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC45CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkK
KworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRzIEhBTkRTSEFLRV9E
T05FCisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5f
aGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAgICAgICBpdGVtcyA9IHNlcnZl
ci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
cnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjRdKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRo
X3F1YW50dW1fcmVhZGluZXNzKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KGNsaWVudF9vcHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRydWV9LCkgYXMgKAor
ICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAgICAgICApOgorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxv
IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQorICAgICAgICAgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVudC5kYXRhCisgICAg
ICAgICAgICAgICAgZWxpZiBldmVudCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVh
aworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBiImhlbGxvIikKKwor
ICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgorICAgICAgICBjbGllbnRfdGlj
a2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0
CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNsaWVudF9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCisg
ICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tl
dF9zdG9yZS5hZGR9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNs
aWVudF9vcHRpb25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0fSwKKyAgICAgICAg
ICAgIHNlcnZlcl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjogdGlja2V0X3N0b3Jl
LnBvcH0sCisgICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCisgICAgICAgICkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9
dGltZS50aW1lKCkpCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShz
dHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgyLCAxKSkKKworICAgICAgICAgICAgZXZlbnQgPSBzZXJ2
ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQp
LCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCks
IGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBydHRf
YmFkX21heF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQor
ICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgICAgIGRl
ZiBwYXRjaChzZXJ2ZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBQYXRjaCBzZXJ2
ZXIncyBUTFMgaW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKKyAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhIHZhbHVlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICByZWFsX2lu
aXRpYWxpemUgPSBzZXJ2ZXIuX2luaXRpYWxpemUKKworICAgICAgICAgICAgZGVmIHBhdGNoZWRf
aW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAgIHJlYWxfaW5pdGlh
bGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9tYXhfZWFybHlfZGF0
YSA9IDEyMzQ1CisKKyAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5p
dGlhbGl6ZQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAg
ICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0
ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAg
IGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3Rp
Y2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxl
ciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICAgICAgc2VydmVyX3BhdGNoPXBhdGNoLAor
ICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRz
aGFrZSBmYWlsZWQKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBb
MSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUg
Y2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9j
b25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xp
ZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIs
IDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZl
ciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lk
X2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdfY29ubmVjdGlvbl9p
ZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5n
ZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lk
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYs
IDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBh
IG5ldyBjb25uZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJf
Y2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQKKyAgICAgICAgICAg
IHNlcnZlci5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgICAgICAgICAg
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFdCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50
KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2Vx
dWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2
LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25f
aWRfcmV0cmFuc21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9w
ZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRCwgUkVUSVJF
X0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0
aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgcmV0
cmFuc21pdHRlZAorICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9k
ZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgICMgdGhl
IHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3Bl
ZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmKToKKyAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICAgICAjIGNsaWVudAorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1f
aWQsIDApCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIi
aGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwg
NCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxs
byIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbV9pZCwgMikKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgICMg
c2VydmVyCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMSkK
KyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIp
CisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3Ry
ZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA1KQorICAg
ICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKwor
ICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1f
aWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtX2lkLCAzKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0
X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQorICAgICAgICAgICAgc2VydmVyLnNlbmRf
c3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2RhdGFncmFt
X2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAg
ICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUz
Nn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sg
aGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xp
ZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKQorCisgICAgICAg
ICAgICAjIHNlbmQgZGF0YWdyYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFtX2Zy
YW1lKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGll
bnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQo
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkRhdGFn
cmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0
YSwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8yKHNlbGYpOgorICAg
ICAgICAjIHBheWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUgcGFja2V0CisgICAg
ICAgIHBheWxvYWQgPSBiIloiICogMTI1MAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
IjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJh
bWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNr
X2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPU5v
bmUpCisKKyAgICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCisgICAgICAgICAgICBmb3Ig
aSBpbiByYW5nZSgyMCk6CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJh
bWUocGF5bG9hZCkKKworICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkgMTEgZGF0YWdyYW1z
IGFyZSBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKKyAgICAgICAgICAgIGZvciBp
IGluIHJhbmdlKDExKToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50
KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMu
RGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgQUNLCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkK
KworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFncmFtcworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDkpCisgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZSg5KToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRp
b25fZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlwdGlvbiBrZXkKKyAg
ICAgICAgICAgIHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0uc2VuZC5zZXR1cCgK
KyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NN
X1NIQTI1NiwKKyAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAorICAgICAgICAgICAg
ICAgIHZlcnNpb249c2VydmVyLl92ZXJzaW9uLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIHNlcnZlciBzZW5kcyBjbG9zZQorICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGlu
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6CisgICAgICAgIGRlZiBwYXRj
aChjbGllbnQpOgorICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xpZW50Ll9pbml0aWFs
aXplCisKKyAgICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVz
KToKKyAgICAgICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQpCisgICAgICAgICAg
ICAgICAgY2xpZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5UTFNfVkVSU0lPTl8x
XzNfRFJBRlRfMjhdCisKKyAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6ZSA9IHBhdGNoZWRf
aW5pdGlhbGl6ZQorCisgICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAgICAgICAgICAgIHNl
cnZlci5oYW5kbGVfdGltZXIodGltZXJfYXQpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVy
Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5lcnJvcl9jb2RlLCAzMjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
ZW50LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZl
cnNpb24iKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJiYWdlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAg
ICBkYXRhZ3JhbSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgwIikKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2VydmVkX2JpdHNfbm9u
X3plcm8oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChz
ZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKKyAgICAgICAgICAg
IGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19jbGllbnQ9RmFsc2Us
CisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICB2ZXJz
aW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNf
Y2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAgY3J5cHRvLmVu
Y3J5cHRfcGFja2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKKworICAgICAgICBkZWYg
ZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
KToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKKyAgICAgICAgICAgIHBs
YWluX2hlYWRlciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkgKyBwbGFpbl9oZWFk
ZXJbMTpdCisgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwoCisg
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICApCisKKyAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0ID0gZW5jcnlw
dF9wYWNrZXQKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklU
SUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBidWlsZGVyLmZs
dXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhZ3JhbSwg
U0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
cm9wKGNsaWVudCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
bGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9W
SU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fd3Jvbmdf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAg
ICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAgICAgICAgICAgIHZl
cnNpb249MHhGRjAwMDAxMSwgICMgRFJBRlRfMTYKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8g
PSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVy
X2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAg
ICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFERElORykKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkK
KworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBdOgorICAgICAgICAg
ICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGlt
ZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgY2xpZW50LnJlY2Vp
dmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICAgICAgICAg
ICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lk
PWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAorICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICAgICAgb3JpZ2lu
YWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgcmV0
cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9B
RERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9k
YXRhZ3JhbV9yZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5yZWNl
aXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAgICAg
ICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgc291cmNlX2Np
ZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNmZThmNWYwZmY0Iiks
CisgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgp
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2Fja19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBzZXJ2ZXIuY2xvc2UoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFt
ZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZy
YW1lIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisgICAgICAgICAgICAg
ICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1l
X2FwcChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLk5PX0VSUk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZl
bnQsCisgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iZ29vZGJ5ZSIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcF9ub3RfdXRmOChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisK
KyAgICAgICAgY2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisg
ICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBlPU5vbmUsIHJlYXNv
bl9waHJhc2U9IiIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfY3J5cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
IyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1l
bmNvZGVfdWludF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElO
R19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhy
YXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUKKyAgICAgICAgICAg
IGNsaWVudC5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBX0JMT0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKDEyMzQ1KSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdy
YW1fZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVu
dChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAg
IEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1G
cmFtZVJlY2VpdmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hh
bmRsZV9kYXRhZ3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgY2xpZW50ID0g
Y3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPU5v
bmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9y
KSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAg
ICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAg
ICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFt
ZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJl
YXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT01
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikg
YXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1i
ImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVU
eXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT03
KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhl
bGxvanVuayIpLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNsaWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
ZGF0YT1iImhlbGxvIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFt
X2ZyYW1lX3dpdGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBj
cmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9u
ZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3Ip
IGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJP
VE9DT0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBE
QVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0
aF9sZW5ndGhfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRh
bG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKKworICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9O
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2FsbG93ZWQoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUgZnJhbWUKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2VydmVyKSwKKyAgICAg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YiIiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLAorICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNI
QUtFX0RPTkUgZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9t
YXhfZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5f
cmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBNQVhfREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhf
ZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwKKyAgICAgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfZGF0YSwg
MTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisg
ICAgICAgICAgICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNX0RB
VEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9k
YXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKKyAgICAg
ICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1Nzcp
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIE1BWF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1B
WF9TVFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5j
b2RlX3VpbnRfdmFyKDEwNDg1NzUpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2VpdmVfb25seShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAzCisg
ICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MywgZGF0YT1iImhl
bGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBOiAz
LCAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJy
b3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0
YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIpLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9y
X2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5NQVhf
U1RSRUFNX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5y
ZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkKKworICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5nIGxpbWl0CisgICAg
ICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjkpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgbG93ZXJpbmcgbGlt
aXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI3KSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEy
OSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmks
IDEyOCkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJh
aXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9m
cmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAgICAg
ICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191
bmksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5J
IHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3Vu
aV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFt
c191bmksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RP
S0VOLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgw
MTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X25ld190b2tlbl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBORVdfVE9LRU4KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVp
Y0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVf
bmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VO
LAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjA4
MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2xpZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBkYXRhCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikKKyAgICAgICAgICAg
IGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1l
KCkpOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4y
LjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1lKCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgcGF0
aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbmV0d29ya19wYXRo
cyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRo
c1swXS5hZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIs
IDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRo
c1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIFBBVEhfQ0hB
TExFTkdFIGFuZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCisgICAgICAgICAgICBmb3IgZGF0YSwg
YWRkciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKKyAgICAg
ICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRhdGFn
cmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUoKSkK
KworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlk
YXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhz
WzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIg
cmVjZWl2ZXMgdW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgc2VydmVyLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiXHgxMVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQ
T05TRSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNlbGYpOgorICAgICAg
ICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAjIG5v
IG1vcmUgcGFkZGluZworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIpCisgICAgICAgIGNs
aWVudC5faGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgICAgICMgcGFkZGlu
ZyB1bnRpbCBlbmQKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApKQorICAgICAg
ICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisKKyAgICAgICAgIyBw
YWRkaW5nIHRoZW4gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0
ZXMoMTApICsgYiJceDAxIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgK
KyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlw
ZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDEwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAg
ICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVs
bG8iKQorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0s
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMDAxMDAi
KSksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZl
bnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0
cmVhbVJlc2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5zdHJlYW1faWQsIDApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVzZXRfc3Ry
ZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFU0VU
X1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KCIwMjExMDAiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RB
VEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFt
ZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5
IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNl
X251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5F
Q1RJT05fSUQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lELAorICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJz
KGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhdCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWVfY3Vy
cmVudF9jaWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQs
IDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IFJFVElSRV9DT05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlJFVElSRV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
Q2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJl
cnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikK
KworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5HCisgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MTEi
KSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkg
YXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5pZGly
ZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nv
bm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Rv
cF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5E
SU5HLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNceDExIiksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlNUT1BfU0VORElORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0gMQorICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3Zh
cihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcihV
SU5UX1ZBUl9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3Zhcigx
KQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2Nv
ZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1l
X3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQg
Ml42MiAtIDEiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2Zy
YW1lX292ZXJfbWF4X2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2Ug
cmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRh
X3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5
cGUuU1RSRUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAg
ICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoc3RyZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwg
UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgY29ubmVj
dGlvbiBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zl
cl9tYXhfc3RyZWFtX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RS
RUFNIGZyYW1lCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1f
QkFTRSB8IDQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsgZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlICsgMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBzdHJlYW0gZGF0YSBs
aW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X3N0cmVh
bXMoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNt
OgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAgICAgICAgICAgICBC
dWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihjbGll
bnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKKyAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1
aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBvcGVuIikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgorICAgICAgICB3
aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
ICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAgICAgICAgICAgIGNs
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8iKQorCisgICAg
ICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMiIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9S
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9yKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDAwIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0aWF0b3IiKQorCisg
ICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9C
TE9DS0VEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF91bmlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2
ZXMgU1RSRUFNU19CTE9DS0VEX1VOSTogMAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Ry
ZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tF
RF9VTkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdfb25seShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKKyAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MDAiICog
MTIwMAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hY2tf
ZWxpY2l0aW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Byb2JpbmcpCisKKyAg
ICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAg
ICBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LCBiIlx4MWYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJy
b3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFGKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVua25vd24g
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3VuZXhwZWN0ZWRf
ZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZUFRPIGZyYW1lIGlu
IDAtUlRUCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVwb2No
PXRscy5FcG9jaC5aRVJPX1JUVCksIGIiXHgwNiIKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JD
b2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQg
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX21hbGZvcm1lZF9m
cmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxmb3JtZWQgVFJBTlNQ
T1JUX0NMT1NFIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9y
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLCBiIlx4MWNceDAwXHgwMSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBR
dWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFDKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkZh
aWxlZCB0byBwYXJzZSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX2Jsb2Nr
ZWRfYnlfY2Moc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9uIGNvbnRyb2wKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVzX2luX2ZsaWdodCwg
MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmNvbmdlc3Rpb25f
d2luZG93LCAxNDMwMykKKworICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2
ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQg
PSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
cnZlci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGFydGlmaWNp
YWxseSByYWlzZSBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIGNsaWVudC5fbG9zcy5fY2Mu
Ynl0ZXNfaW5fZmxpZ2h0ID0gMTQzMDMKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBub3Qg
c2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfcmV0cmFu
c21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRh
IGNvdW50ZXIKKyAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVu
dC5fbG9jYWxfbWF4X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9y
ZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgc2Vu
dCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2Vu
dCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVf
bWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21p
dHRlZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tYXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNs
aWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIHN0cmVhbSA9
IGNsaWVudC5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwganVzdCBiZWZvcmUg
cmFpc2luZyBNQVhfU1RSRUFNX0RBVEEKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9k
YXRhKDAsIGIiWiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgorICAgICAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2Nh
bCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJl
YW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIHNlcnZlciBzZW5k
cyBvbmUgbW9yZSBieXRlCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgwLCBi
IloiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVu
dCksIDEpCisKKyAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNlbnQgYW5kIGxvc3QK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsX3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBjbGllbnQuX29uX21heF9zdHJlYW1fZGF0
YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxf
c2VudCwgMCkKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBh
Y2tlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKworICAgIGRlZiB0ZXN0
X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0CisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNo
ZWNrIGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVk
Z2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY29uc3Vt
ZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBhbm90aGVyIHBp
bmcsIFBJTkcgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgICAg
ICAgICAgIyBQSU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBjbGll
bnQuX29uX3BpbmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgKDEyMzQ1LCkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgx
LCAxKSkKKworICAgICAgICAgICAgIyBjaGVjayBldmVudAorICAgICAgICAgICAgZXZlbnQgPSBj
bGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuUGluZ0Fja25vd2xlZGdlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQudWlkLCAxMjM0NSkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zl
cl9tYXhfc3RyZWFtc19iaWRpKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
ID0gaSAqIDQKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQsIGIiIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFt
c1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKKwor
ICAgICAgICAgICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gMTI4ICogNAorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xp
ZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwg
KDEsIDEpKQorCisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9
ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3VuaShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNyZWF0ZSBzdHJlYW1zCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgp
OgorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgorICAgICAgICAgICAgICAg
IGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2Vk
X2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJl
YW1zX2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBvbmUg
dG9vIG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJlYW1faWQgPSAxMjgg
KiA0ICsgMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBi
IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9p
ZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5f
c3RyZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAg
ICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9t
YXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29u
dGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNf
VU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2Rh
dGFfcGVlcl9pbml0aWF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMSwg
YiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIs
IGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJl
Y3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDMsIGIi
aGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBj
bGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rp
b25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVs
bG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRhdGEgb24gc2VydmVy
LWluaXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQg
Y3JlYXRlIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoMiwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQgdHJp
ZXMgdG8gc2VuZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhlbGxvIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlv
biksCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0aWF0ZWQg
dW5pZGlyZWN0aW9uYWwgc3RyZWFtIiwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBj
bGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWluaXRpYXRlZCBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSg1
LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1p
bml0aWF0ZWQgc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtX2Rp
cmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4XToKKyAgICAgICAg
ICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmKSkK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2Vp
dmUob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1f
Y2FuX3NlbmQob2ZmKSkKKworICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgQmlk
aXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
Y2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAxKSkK
KworICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZl
KG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fc2VuZChvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKKworICAgICAgICAg
ICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChv
ZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFt
X2Nhbl9yZWNlaXZlKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
ZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25f
bmVnb3RpYXRpb25fZmFpbChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxv
bmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBubyBjb21tb24gdmVyc2lvbiwgbm8gcmV0cnkK
KyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVp
Y192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50
Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3Rf
Y2lkLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhGRjAwMDAxMV0sICAj
IERSQUZUXzE2CisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIsCisgICAg
ICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVu
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBldmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJv
dG9jb2wgdmVyc2lvbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlh
dGlvbl9vayhzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCByZXRyeQorICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNp
b25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJf
Y2lkLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3ZlcnNpb25dLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRp
bWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGll
bnQpLCAxKQorCisKK2NsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2Nhbl9zZW5kKHNlbGYpOgorICAgICAgICBwYXRoID0gUXVpY05ldHdvcmtQYXRoKCgi
MS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguaXNfdmFsaWRh
dGVkKQorCisgICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkgZGF0YQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwYXRoLmNhbl9zZW5kKDEpKQorCisgICAgICAgICMgcmVjZWl2ZSBzb21lIGRhdGEKKyAg
ICAgICAgcGF0aC5ieXRlc19yZWNlaXZlZCArPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgx
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBhdGguY2FuX3NlbmQoNCkpCisKKyAgICAgICAgIyBzZW5kIHNvbWUgZGF0YQorICAgICAgICBw
YXRoLmJ5dGVzX3NlbnQgKz0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2Vu
ZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNGU0ZGNmNWUxOGU0NzAyNDUwZDFiZWJm
NDlkZmZjMjEzZTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jcnlwdG8ucHkKQEAgLTAsMCArMSwzMTkgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB1bml0
dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgKAorICAgIElOSVRJQUxf
Q0lQSEVSX1NVSVRFLAorICAgIENyeXB0b0Vycm9yLAorICAgIENyeXB0b1BhaXIsCisgICAgZGVy
aXZlX2tleV9pdl9ocCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUEFDS0VU
X0ZJWEVEX0JJVCwgUXVpY1Byb3RvY29sVmVyc2lvbgorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
Q2lwaGVyU3VpdGUKKworZnJvbSAudXRpbHMgaW1wb3J0IFNLSVBfVEVTVFMKKworUFJPVE9DT0xf
VkVSU0lPTiA9IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKworQ0hBQ0hBMjBfQ0xJRU5U
X1BBQ0tFVF9OVU1CRVIgPSAyCitDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICJlMWZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1MjRiMDg1MGZjMmEy
OGUyNDBmZDc2NDAxNzAwMDIiCispCitDSEFDSEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgiMDIwMTAwMDAwMCIpCitDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVE
X1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZThmZjAwMDAxNjA4ODBiNTdjN2I3
MGQ4NTI0YjA4NTBmYzJhMjhlMjQwZmQ3NjQwMTc4MzEzYjA0YmU5ODQ0OSIKKyAgICAiZWIxMDU2
N2UyNWNlOTMwMzgxZjJhNWI3ZGEyZGI4ZGIiCispCisKK0xPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1C
RVIgPSAyCitMT05HX0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgImMzZmYwMDAwMTcwODgzOTRjOGYwM2U1MTU3MDgwMDAwNDQ5ZTAwMDAwMDAyIgorKQorTE9O
R19DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYwMDQw
YzQwMTAwMDBjMDAzMDM2NjYwMjYxZmY5NDdjZWE0OWNjZTZjZmFkNjg3ZjQ1N2NmMWIxNDUzMWJh
MSIKKyAgICAiNDEzMWEwZThmMzA5YTFkMGI5YzQwMDAwMDYxMzAxMTMwMzEzMDIwMTAwMDA5MTAw
MDAwMDBiMDAwOTAwMDAwNiIKKyAgICAiNzM2NTcyNzY2NTcyZmYwMTAwMDEwMDAwMGEwMDE0MDAx
MjAwMWQwMDE3MDAxODAwMTkwMTAwMDEwMTAxMDIwMSIKKyAgICAiMDMwMTA0MDAyMzAwMDAwMDMz
MDAyNjAwMjQwMDFkMDAyMDRjZmRmY2QxNzhiNzg0YmYzMjhjYWU3OTNiMTM2ZiIKKyAgICAiMmFl
ZGNlMDA1ZmYxODNkN2JiMTQ5NTIwNzIzNjY0NzAzNzAwMmIwMDAzMDIwMzA0MDAwZDAwMjAwMDFl
MDQwMyIKKyAgICAiMDUwMzA2MDMwMjAzMDgwNDA4MDUwODA2MDQwMTA1MDEwNjAxMDIwMTA0MDIw
NTAyMDYwMjAyMDIwMDJkMDAwMiIKKyAgICAiMDEwMTAwMWMwMDAyNDAwMSIKKykgKyBieXRlcyg5
NjIpCitMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICJjMGZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUzYjM0M2FhODUzNTA2NGE0
MjY4YTBkOWQ3YjFjIgorICAgICI5ZDI1MGFlMzU1MTYyMjc2ZTliMWUzMDExZWY2YmJjMGFiNDhh
ZDViY2MyNjgxZTk1Mzg1N2NhNjJiZWNkNzUyIgorICAgICI0ZGFhYzQ3M2U2OGQ3NDA1ZmJiYTRl
OWVlNjE2Yzg3MDM4YmRiZTkwOGMwNmQ5NjA1ZDlhYzQ5MDMwMzU5ZWVjIgorICAgICJiMWQwNWEx
NGUxMTdkYjhjZWRlMmJiMDlkMGRiYmZlZTI3MWNiMzc0ZDhmMTBhYmVjODJkMGY1OWExZGVlMjlm
IgorICAgICJlOTU2MzhlZDhkZDQxZGEwNzQ4NzQ2ODc5MWI3MTljNTVjNDY5NjhlYjNiNTQ2ODAw
MzcxMDJhMjhlNTNkYzFkIgorICAgICIxMjkwM2RiMGFmNTgyMTc5NGI0MWM0YTkzMzU3ZmE1OWNl
NjljZmU3ZjZiZGZhNjI5ZWVmNzg2MTY0NDdlMWQ2IgorICAgICIxMWM0YmFmNzFiZjMzZmViY2Iw
MzEzN2MyYzc1ZDI1MzE3ZDNlMTNiNjg0MzcwZjY2ODQxMWMwZjAwMzA0YjUwIgorICAgICIxYzhm
ZDQyMmJkOWI5YWQ4MWQ2NDNiMjBkYTg5Y2EwNTI1ZDI0ZDJiMTQyMDQxY2FlMGFmMjA1MDkyZTQz
MDA4IgorICAgICIwY2Q4NTU5ZWE0YzVjNmU0ZmEzZjY2MDgyYjdkMzAzZTUyY2UwMTYyYmFhOTU4
NTMyYjBiYmMyYmM3ODU2ODFmIgorICAgICJjZjM3NDg1ZGZmNjU5NWUwMWU3MzljOGFjOWVmYmEz
MWI5ODVkNWY2NTZjYzA5MjQzMmQ3ODFkYjk1MjIxNzI0IgorICAgICI4NzY0MWM0ZDNhYjhlY2Uw
MWUzOWJjODViMTU0MzY2MTQ3NzVhOThiYThmYTEyZDQ2ZjliMzVlMmE1NWViNzJkIgorICAgICI3
Zjg1MTgxYTM2NjY2MzM4N2RkYzIwNTUxODA3ZTAwNzY3M2JkN2UyNmJmOWIyOWI1YWIxMGExY2E4
N2NiYjdhIgorICAgICJkOTdlOTllYjY2OTU5YzJhOWJjM2NiZGU0NzA3ZmY3NzIwYjExMGZhOTUz
NTQ2NzRlMzk1ODEyZTQ3YTBhZTUzIgorICAgICJiNDY0ZGNiMmQxZjM0NWRmMzYwZGMyMjcyNzBj
NzUwNjc2ZjY3MjRlYjQ3OWYwZDJmYmI2MTI0NDI5OTkwNDU3IgorICAgICJhYzZjOTE2N2Y0MGFh
YjczOTk5OGYzOGI5ZWNjYjI0ZmQ0N2M4NDEwMTMxYmY2NWE1MmFmODQxMjc1ZDViM2QxIgorICAg
ICI4ODBiMTk3ZGYyYjVkZWEzZTZkZTU2ZWJjZTNmZmI2ZTkyNzdhODIwODJmOGQ5Njc3YTY3Njcw
ODliNjcxZWJkIgorICAgICIyNDRjMjE0ZjBiZGU5NWMyYmViMDJjZDExNzJkNThiZGYzOWRjZTU2
ZmY2OGViMzVhYjM5YjQ5YjRlYWM3YzgxIgorICAgICI1ZWE2MDQ1MWQ2ZTZhYjgyMTE5MTE4ZGYw
MmE1ODY4NDRhOWZmZTE2MmJhMDA2ZDA2NjllZjU3NjY4Y2FiMzhiIgorICAgICI2MmY3MWEyNTIz
YTA4NDg1MmNkMWQwNzliMzY1OGRjMmYzZTg3OTQ5YjU1MGJhYjNlMTc3Y2ZjNDllZDE5MGRmIgor
ICAgICJmMDYzMGU0MzA3N2MzMGRlOGY2YWUwODE1MzdmMWU4M2RhNTM3ZGE5ODBhZmE2NjhlN2I3
ZmIyNTMwMWNmNzQxIgorICAgICI1MjRiZTNjNDk4ODRiNDI4MjFmMTc1NTJmYmQxOTMxYTgxMzAx
N2I2YjY1OTBhNDFlYTE4YjZiYTQ5Y2Q0OGE0IgorICAgICI0MGJkOWEzMzQ2YTc2MjNmYjRiYTM0
YTNlZTU3MWUzYzczMWYzNWE3YTNjZjI1YjU1MWE2ODBmYTY4NzYzNTA3IgorICAgICJiN2ZkZTNh
YWYwMjNjNTBiOWQyMmRhNjg3NmJhMzM3ZWI1ZTlkZDllYzNkYWY5NzAyNDJiNmM1YWFiM2FhNGIy
IgorICAgICI5NmFkOGI5ZjY4MzJmNjg2ZWY3MGZhOTM4YjMxYjRlNWRkZDczNjQ0NDJkM2VhNzJl
NzNkNjY4ZmIwOTM3Nzk2IgorICAgICJmNDYyOTIzYTgxYTQ3ZTFjZWU3NDI2ZmY2ZDkyMjEyNjli
NWE2MmVjMDNkNmVjOTRkMTI2MDZjYjQ4NTU2MGJhIgorICAgICJiNTc0ODE2MDA5ZTk2NTA0MjQ5
Mzg1YmI2MWE4MTliZTA0ZjYyYzIwNjYyMTRkODM2MGEyMDIyYmViMzE2MjQwIgorICAgICJiNmM3
ZDc4YmJlNTZjMTMwODJlMGNhMjcyNjYxMjEwYWJmMDIwYmYzYjU3ODNmMTQyNjQzNmNmOWZmNDE4
NDA1IgorICAgICI5M2E1ZDA2MzhkMzJmYzUxYzVjNjVmZjI5MWEzYTdhNTJmZDY3NzVlNjIzYTQ0
MzljYzA4ZGQyNTU4MmZlYmM5IgorICAgICI0NGVmOTJkOGRiZDMyOWM5MWRlM2U5Yzk1ODJlNDFm
MTdmM2QxODZmMTA0YWQzZjkwOTk1MTE2YzY4MmEyYTE0IgorICAgICJhM2I0YjFmNTQ3YzMzNWYw
YmU3MTBmYzlmYzAzZTBlNTg3YjhjZGEzMWNlNjViOTY5ODc4YTRhZDQyODNlNmQ1IgorICAgICJi
MDM3M2Y0M2RhODZlOWUwZmZlMWFlMGZkZGQzNTE2MjU1YmQ3NDU2NmYzNmEzODcwM2Q1ZjM0MjQ5
ZGVkMWY2IgorICAgICI2YjNkOWI0NWI5YWYyY2NmZWZlOTg0ZTEzMzc2YjFiMmM2NDA0YWE0OGM4
MDI2MTMyMzQzZGEzZjNhMzM2NTllIgorICAgICJjMWIzZTk1MDgwNTQwYjI4YjdmM2ZjZDM1ZmE1
ZDg0M2I1NzlhODRjMDg5MTIxYTYwZDhjMTc1NDkxNWMzNDRlIgorICAgICJlYWY0NWE5YmYyN2Rj
MGMxZTc4NDE2MTY5MTIyMDkxMzEzZWIwZTg3NTU1YWJkNzA2NjI2ZTU1N2ZjMzZhMDRmIgorICAg
ICJjZDE5MWE1ODgyOTEwNGQ2MDc1YzU1OTRmNjI3Y2E1MDZiZjE4MWRhZWM5NDBmNGE0ZjNhZjAw
NzRlZWU4OWRhIgorICAgICJhY2RlNjc1ODMxMjYyMmQ0ZmE2NzViMzlmNzI4ZTA2MmQyYmVlNjgw
ZDhmNDFhNTk3YzI2MjY0OGJiMThiY2ZjIgorICAgICIxM2M4YjNkOTdiMWE3N2IyYWMzYWY3NDVk
NjFhMzRjYzQ3MDk4NjViYWM4MjRhOTRiYjE5MDU4MDE1ZTRlNDJkIgorICAgICJjOWJlNmM3ODAz
NTY3MzIxODI5ZGQ4NTg1MzM5NjI2OSIKKykKKworTE9OR19TRVJWRVJfUEFDS0VUX05VTUJFUiA9
IDEKK0xPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAi
YzFmZjAwMDAxNzAwMDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MDAwMSIKKykKK0xPTkdfU0VSVkVS
X1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjBkMDAwMDAwMDAxODQx
MGEwMjAwMDA1NjAzMDNlZWZjZTdmN2IzN2JhMWQxNjMyZTk2Njc3ODI1ZGRmNzM5ODgiCisgICAg
ImNmYzc5ODI1ZGY1NjZkYzU0MzBiOWEwNDVhMTIwMDEzMDEwMDAwMmUwMDMzMDAyNDAwMWQwMDIw
OWQzYzk0MGQiCisgICAgIjg5NjkwYjg0ZDA4YTYwOTkzYzE0NGVjYTY4NGQxMDgxMjg3YzgzNGQ1
MzExYmNmMzJiYjlkYTFhMDAyYjAwMDIiCisgICAgIjAzMDQiCispCitMT05HX1NFUlZFUl9FTkNS
WVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjOWZmMDAwMDE3MDAwOGYw
NjdhNTUwMmE0MjYyYjUwMDQwNzQxNjhiZjIyYjcwMDI1OTZmOTlhZTY3YWJmNjVhIgorICAgICI1
ODUyZjU0ZjU4YzM3YzgwODY4MmUyZTQwNDkyZDhhMzg5OWZiMDRmYzBhZmU5YWFiYzg3NjdiMThh
MGFhNDkzIgorICAgICI1Mzc0MjYzNzNiNDhkNTAyMjE0ZGQ4NTZkNjNiNzhjZWUzN2JjNjY0YjNm
ZTg2ZDQ4N2FjN2E3N2M1MzAzOGEzIgorICAgICJjZDMyZjBiNTAwNGQ5ZjU3NTRjNGY3ZjJkMWYz
NWNmM2Y3MTE2MzUxYzkyYjljZjliYjZkMDkxZGRmYzhiMzJkIgorICAgICI0MzIzNDhhMmM0MTMi
CispCisKK1NIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMworU0hPUlRfU0VSVkVSX1BMQUlO
X0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNDFiMDFmZDI0YTU4NmE5Y2YzMDAwMyIpCitT
SE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYw
MDM5MDQwMDAwMzUwMDAxNTE4MDVhNGJlYmY1MDAwMDIwYjA5OGM4ZGM0MTgzZTRjMTgyNTcyZTEw
YWMzZSIKKyAgICAiMmI4ODg5N2UwNTI0Yzg0NjE4NDc1NDhiZDJkZmZhMmMwYWU2MDAwODAwMmEw
MDA0ZmZmZmZmZmYiCispCitTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAiNWRiMDFmZDI0YTU4NmE5Y2YzM2RlYzA5NGFhZWM2ZDZiNGI3YTVl
MTVmNWEzZjA1ZDA2Y2YxYWQwMzU1YzE5ZCIKKyAgICAiY2NlMDgwN2VlY2Y3YmYxYzg0NGE2NmUx
ZWNkMWY3NGIyYTJkNjliZmQyNWQyMTc4MzNlZGQ5NzMyNDY1OTdiZCIKKyAgICAiNTEwN2VhMTVj
YjFlMjEwMDQ1Mzk2YWZhNjAyZmUyMzQzMmY0YWIyNGNlMjUxYiIKKykKKworCitjbGFzcyBDcnlw
dG9UZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZlY3RvcnMgZnJvbToKKworICAg
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMtdGxzLTE4I2FwcGVu
ZGl4LUEKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfY3J5cHRvKHNlbGYsIGlzX2NsaWVudCk6
CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZXR1cF9pbml0aWFs
KAorICAgICAgICAgICAgY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIp
LAorICAgICAgICAgICAgaXNfY2xpZW50PWlzX2NsaWVudCwKKyAgICAgICAgICAgIHZlcnNpb249
UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gcGFpcgorCisgICAg
ZGVmIHRlc3RfZGVyaXZlX2tleV9pdl9ocChzZWxmKToKKyAgICAgICAgIyBjbGllbnQKKyAgICAg
ICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhhMzUxNWExNGFl
M2MzMWI5YzJkNmQ1YmM1ODUzOGNhNWNkMmJhYTExOTA4NzE0M2U2MDg4NzQyOGRjYjUyZjYiCisg
ICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hwKElOSVRJQUxf
Q0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5LCBiaW5h
c2NpaS51bmhleGxpZnkoIjk4YjBkN2U1ZTdhNDAyYzY3YzMzZjM1MGZhNjVlYTU0IikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgiMTllOTQzODc4MDVl
YjBiNDZjMDNhNzg4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAsIGJpbmFzY2lpLnVu
aGV4bGlmeSgiMGVkZDk4MmE2YWM1MjdmMmVkZGNiYjczNDhkZWE1ZDciKSkKKworICAgICAgICAj
IHNlcnZlcgorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAiNDdiMmVhZWE2YzI2NmUzMmMwNjk3YTllMmE4OThiZGY1YzRmYjNlNWFjMzRmMGU1NDliZjJj
NTg1ODFhMzgxMSIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBocCA9IGRlcml2ZV9rZXlf
aXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWE4YmU5MDJhOWJkZDkxZDE2MDY0Y2ExMTgw
NDVmYjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmluYXNjaWkudW5oZXhsaWZ5
KCIwYTgyMDg2ZDMyMjA1YmEyMjI0MWQ4ZGMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
cCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5NGI5NDUyZDJiM2M3YzdmNmRhN2ZkZDg1OTM1MzdmZCIp
KQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFj
aGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZGVjcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAor
ICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
YjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2Iy
ODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZF
UlNJT04sCisgICAgICAgICkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgQ0hBQ0hB
MjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDI1LCAwCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgQ0hBQ0hBMjBfQ0xJRU5U
X1BMQUlOX1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwg
Q0hBQ0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X2xv
bmdfY2xpZW50KHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2Ns
aWVudD1GYWxzZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tl
dF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9OR19DTElFTlRf
RU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBsYWluX2hlYWRlciwgTE9OR19DTElFTlRfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfQ0xJRU5UX1BMQUlOX1BBWUxPQUQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19DTElFTlRfUEFDS0VU
X05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCisKKyAgICAgICAg
cGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0
X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAw
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIExPTkdf
U0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXls
b2FkLCBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhY2tldF9udW1iZXIsIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVz
dF9kZWNyeXB0X25vX2tleShzZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENyeXB0b0Vycm9yKToKKyAgICAgICAgICAgIHBh
aXIuZGVjcnlwdF9wYWNrZXQoTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDApCisK
KyAgICBkZWYgdGVzdF9kZWNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMxYzEyMTJkNzg0
YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAg
ICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVj
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwg
OSwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWlu
X3BheWxvYWQsIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldF9udW1iZXIsIFNIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQorCisgICAg
QHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFjaGEyMCB0ZXN0
cyIpCisgICAgZGVmIHRlc3RfZW5jcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYjQyNzcyZGYz
M2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2IyODlhZThjMCIK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisg
ICAgICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIENIQUNIQTIw
X0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BBQ0tF
VF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIENI
QUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9s
b25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19j
bGllbnQ9VHJ1ZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAg
ICAgICAgICAgTE9OR19DTElFTlRfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19DTElF
TlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfQ0xJRU5U
X0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xvbmdfc2VydmVyKHNl
bGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkK
KworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9O
R19TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19TRVJWRVJfUExBSU5fUEFZ
TE9BRCwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9Q
QUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNy
ZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMx
YzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAg
KQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BMQUlO
X1BBWUxPQUQsCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgU0hPUlRfU0VSVkVSX0VOQ1JZ
UFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlbGYpOgorICAgICAgICBw
YWlyMSA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgcGFpcjIg
PSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIGRlZiBjcmVh
dGVfcGFja2V0KGtleV9waGFzZSwgcGFja2V0X251bWJlcik6CisgICAgICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9MTAwKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoUEFDS0VUX0ZJ
WEVEX0JJVCB8IGtleV9waGFzZSA8PCAyIHwgMSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIpKQorICAgICAgICAgICAgYnVm
LnB1c2hfdWludDE2KHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gYnVmLmRhdGEs
IGIiXHgwMFx4MDFceDAyXHgwMyIKKworICAgICAgICBkZWYgc2VuZChzZW5kZXIsIHJlY2VpdmVy
LCBwYWNrZXRfbnVtYmVyPTApOgorICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkID0gY3JlYXRlX3BhY2tldCgKKyAgICAgICAgICAgICAgICBrZXlfcGhhc2U9c2VuZGVyLmtl
eV9waGFzZSwgcGFja2V0X251bWJlcj1wYWNrZXRfbnVtYmVyCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBlbmNyeXB0ZWQgPSBzZW5kZXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAg
ICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICAg
ICApCisgICAgICAgICAgICByZWNvdl9oZWFkZXIsIHJlY292X3BheWxvYWQsIHJlY292X3BhY2tl
dF9udW1iZXIgPSByZWNlaXZlci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICBlbmNy
eXB0ZWQsIGxlbihwbGFpbl9oZWFkZXIpIC0gMiwgMAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9oZWFkZXIsIHBsYWluX2hlYWRlcikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGF5bG9hZCwgcGxhaW5fcGF5bG9hZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGFja2V0X251bWJlciwgcGFja2V0X251bWJl
cikKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMCkK
KyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFpcjEua2V5X3BoYXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9w
aGFzZSwgMCkKKworICAgICAgICAjIHBhaXIgMSBrZXkgdXBkYXRlCisgICAgICAgIHBhaXIxLnVw
ZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNlbmQocGFpcjEsIHBh
aXIyLCAxKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFp
cjIua2V5X3BoYXNlLCAxKQorCisgICAgICAgICMgcGFpciAyIGtleSB1cGRhdGUKKyAgICAgICAg
cGFpcjIudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChw
YWlyMiwgcGFpcjEsIDIpCisgICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYWlyMi5rZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEga2V5IC0gdXBkYXRl
LCBidXQgbm90IG5leHQgdG8gc2VuZAorICAgICAgICBwYWlyMS51cGRhdGVfa2V5KCkKKworICAg
ICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMykKKyAgICAgICAg
c2VuZChwYWlyMSwgcGFpcjIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFpcjEua2V5
X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9waGFzZSwgMSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfaDAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjY2Y2NWUxMTc0OThjZmRkNWIwN2JlZGUx
ZjA3NjNkMWNhMjBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2gwLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQor
Citmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwgSDBDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNl
aXZlZAorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVudF9hbmRfc2VydmVyLCB0
cmFuc2ZlcgorCisKK2RlZiBoMF9jbGllbnRfYW5kX3NlcnZlcigpOgorICAgIHJldHVybiBjbGll
bnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IEgwX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDBf
QUxQTn0sCisgICAgKQorCisKK2RlZiBoMF90cmFuc2ZlcihxdWljX3NlbmRlciwgaDBfcmVjZWl2
ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoMF9yZWNlaXZlci5fcXVpYworICAgIHRyYW5zZmVy
KHF1aWNfc2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRz
CisgICAgaHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2
ZW50KCkKKyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKGgwX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0g
cXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitj
bGFzcyBIMENvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb25uZWN0KHNl
bGYpOgorICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50
LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24ocXVp
Y19jbGllbnQpCisgICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19zZXJ2
ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1faWQg
PSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBoMF9jbGllbnQuc2VuZF9kYXRhKHN0cmVh
bV9pZD1zdHJlYW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRob2QiLCBiIkdFVCIpLCAo
YiI6cGF0aCIsIGIiLyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKwor
ICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBoMF9zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5Pjwv
aHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiPGh0bWw+PGJvZHk+
aGVsbG88L2JvZHk+PC9odG1sPiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcnNfb25s
eShzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2Ns
aWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0gSDBDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25uZWN0aW9uKHF1aWNf
c2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRo
b2QiLCBiIkhFQUQiKSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRh
UmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBz
dHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1f
ZW5kZWQsIFRydWUpCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAg
aDBfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwg
YiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sw
XS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMwOTRmZTk4OThjNTQzMTc1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKQEAgLTAsMCAr
MSwxMjkyIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3ZhcgorZnJvbSBhaW9x
dWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAgICBIM19BTFBOLAorICAgIEVycm9yQ29kZSwK
KyAgICBGcmFtZVR5cGUsCisgICAgRnJhbWVVbmV4cGVjdGVkLAorICAgIEgzQ29ubmVjdGlvbiwK
KyAgICBTdHJlYW1UeXBlLAorICAgIGVuY29kZV9mcmFtZSwKKykKK2Zyb20gYWlvcXVpYy5oMy5l
dmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNoUHJvbWlzZVJl
Y2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQdXNo
SURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZp
Z3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2Vp
dmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworZnJvbSAu
dGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJhbnNmZXIKKworCitk
ZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4gY2xpZW50X2FuZF9zZXJ2ZXIo
CisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwKKyAg
ICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAorICAgICkK
KworCitkZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVyKToKKyAgICBxdWlj
X3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKKyAgICBpZiBoYXNhdHRyKHF1aWNfc2VuZGVy
LCAic3RyZWFtX3F1ZXVlIik6CisgICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2ZW50cy5leHRlbmQo
cXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQorICAgICAgICBxdWljX3NlbmRlci5zdHJlYW1fcXVl
dWUuY2xlYXIoKQorICAgIGVsc2U6CisgICAgICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBxdWlj
X3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCisgICAgaHR0cF9ldmVudHMg
PSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICB3aGlsZSBl
dmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKGgzX3JlY2VpdmVy
LmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0
X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitjbGFzcyBGYWtlUXVpY0Nvbm5l
Y3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICBz
ZWxmLmNsb3NlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJh
dGlvbgorICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2V2ZW50
cyA9IFtdCisgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlmIGNvbmZpZ3VyYXRp
b24uaXNfY2xpZW50IGVsc2UgMQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgPSAyIGlm
IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMworICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKKyAgICAgICAgICAgIGlzX2NsaWVudD1jb25m
aWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCisgICAgICAgICkKKworICAgIGRlZiBjbG9z
ZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKKyAgICAgICAgc2VsZi5jbG9zZWQg
PSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKKworICAgIGRlZiBnZXRfbmV4dF9hdmFpbGFi
bGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToKKyAgICAgICAgaWYg
aXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0
cmVhbV91bmkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSArPSA0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpCisg
ICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKKyAgICAgICAgcmV0dXJuIHN0
cmVhbV9pZAorCisgICAgZGVmIG5leHRfZXZlbnQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCisgICAgICAgIGV4Y2VwdCBJbmRleEVy
cm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZW5kX3N0cmVhbV9kYXRh
KHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6CisgICAgICAgICMgY2hv
cCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcworICAgICAgICBmb3IgYyBpbiBkYXRhOgor
ICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1ieXRlcyhbY10pLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5z
dHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQorICAg
ICAgICAgICAgKQorCisKK2NsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgorICAgIG1h
eERpZmYgPSBOb25lCisKKyAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBoM19jbGllbnQsIGgz
X3NlcnZlcik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9xdWljCisgICAgICAg
IHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCisKKyAgICAgICAgIyBzZW5kIHJlcXVlc3QK
KyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVhbT1U
cnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2ZW50cyA9IGgzX3Ry
YW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJjbGllbnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBz
dHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxv
PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAp
CisKKyAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5z
ZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVhZGVy
c1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0
bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNvbnRyb2wgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpCisgICAgICAg
ICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksCisgICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlkIGZy
YW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUgTUFYX1BVU0hfSUQg
b24gdGhlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuTUFY
X1BVU0hfSUQsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1F
X1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hfSUQiKSwKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIGNv
bnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgY29udHJvbCBz
dHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAg
ICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGNvbnRyb2wgc3Ry
ZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRhdGE9ZW5jb2RlX3Vp
bnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVp
Y19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29k
ZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAiT25seSBvbmUg
Y29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBTRVRUSU5HUyBvbiBh
IHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAg
ICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0x
NSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlBVU0gp
CisgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVzaCBJRAorICAgICAg
ICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAg
ICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQs
CisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQg
ZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVyIHN0cmVhbS4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0KKyAgICAgICAgaDNf
Y2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAgICAgICAgICBlbmRf
c3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNl
aXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZl
bnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
IEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAi
T25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9zdHJlYW1f
ZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBvbiB0
aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9uLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAg
ICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2Vp
dmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAgICAgICAgICAgICBkYXRh
PWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsgYiJceDAwIiwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIFFQ
QUNLIGVuY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBG
YWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgz
Q29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUgYSBmaXJzdCBlbmNv
ZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
U3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBzdHJlYW0KKyAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAgZGF0YT1l
bmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKKyAgICAgICAgICAgICAg
ICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VS
Uk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBpcyBh
bGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSB0cmlnZ2VycyBh
biBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWlj
Q29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24o
aXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0
aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAg
ICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTcs
CisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19F
TkNPREVSKSArIGIiXHgwMCIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5DT0RFUl9T
VFJFQU1fRVJST1IsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVz
dF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3Vs
ZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVkLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJh
bWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlMRUQsICIi
KQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9kYXRhX2Jl
Zm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBy
ZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgorICAgICAgICAiIiIKKyAgICAg
ICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNf
c2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkRB
VEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQ
RUNURUQsCisgICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhp
cyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0ZXIgcmVjZWl2aW5n
IHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWND
b25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihp
c19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9v
IildLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgKQorICAgICAgICBoM190cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3RyZWFt
PUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAorICAgICAgICAgICAg
ICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVf
cHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBz
ZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJlcXVlc3Qgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLCBiIiIpLAor
ICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNs
b3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAiQ2xp
ZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAg
ICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19z
ZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX2Zy
YW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFt
PUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JD
b2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0
IHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgorICAg
ICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3Nl
cnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLl9tYWtlX3Jl
cXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSBzZWNvbmQg
cmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2Vy
dmVyKQorCisgICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBkeW5hbWljIHRhYmxl
CisgICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisK
KyAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBo
M19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAg
ICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAg
ICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAj
IHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25l
eHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFk
ZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAg
ICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJj
bGllbnQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09
VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAg
ICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAg
ICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAo
YiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBl
IiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
eC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUg
cmVzcG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBo
M19jbGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2VsZik6CisgICAgICAg
IHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisKKyAg
ICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICBoM19z
ZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyBzZW5kIHJlcXVl
c3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwK
KyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngt
Zm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNf
Y2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRf
c3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
ImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwK
KyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBz
ZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgzX3NlcnZlci5zZW5k
X3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKKworICAgICAgICAjIHNlbmQgcmVzcG9uc2UK
KyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6c3Rh
dHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAg
ICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVy
cygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKKyAgICAgICAgICAgIGhl
YWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxh
aW4iKV0sCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICApCisgICAgICAg
IGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkLCBkYXRhPWIidGV4
dCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcHVzaCBwcm9taXNlIC8g
cmVwb25zZQorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZlciwgaDNfY2xp
ZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXZlbnRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhv
ZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRw
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC50eHQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
aCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAor
ICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibCIs
IHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFS
ZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKKyAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxhaW4iKV0s
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBz
dHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1G
YWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIngi
LCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRl
ZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
IiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9MCksCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1
c2goc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19j
bGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlv
bihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVh
bV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
M190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9z
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIHB1c2hfc3Ry
ZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvYXBw
LmNzcyIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCisKKyAgICAgICAgICAgIHB1
c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0
aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBi
Ii9hcHAuanMiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxo
dG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyDCoGZ1bGZpbGwgcHVzaCBw
cm9taXNlcworICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvY3NzIild
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1w
dXNoX3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgZGF0YT1iImJvZHkgeyBjb2xvcjog
cGluayB9IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7Iiwg
ZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSBw
dXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKKworICAgICAgICAgICAg
ZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50
LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQtdHlwZSIsIGIidGV4
dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFt
X2lkX2NzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0
cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4X3B1c2hfaWQoc2Vs
Zik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQs
IHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWlj
X2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZl
cikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFu
c2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDAsIDgpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1hdChpKS5lbmNvZGUo
ImFzY2lpIikpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQorICAgICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKKyAgICAgICAgICAgICAgICBoM19z
ZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLzguY3NzIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJhaWxlcnMuCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJl
YW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9z
dHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZy
YW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCisKKyAgICBkZWYg
dGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAg
c3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxv
IiwgZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfaGVhZGVyc19hZnRlcl90
cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBI
RUFERVJTIGFmdGVyIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2Ns
aWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hl
YWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNv
bWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJhaWxlciIsIGIiZm9v
IildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJjYzAw
MDAwMDBmYWNlYjAwYyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9
NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3Ry
ZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjAwNDA4
ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJjMjA3MjY1NjE2MzY4
MjAiCisgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcwNmY2
OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2OTYx
NjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCisgICAgICAgICAgICAgICAg
ICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50Lmhh
bmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJpbmFz
Y2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIzZmUxMDFjNjk2ZDA3YWJl
OTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0
aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNo
byByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0
cmVhbV90cmFpbGVyKHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVj
dGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1
aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAg
ICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAg
ICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBjIgor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgwMiIs
IGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9l
dmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRhdGE9
YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgwMTdk
NDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJkYXRlIiwgYiJN
b24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwMDQwOGQ3OTZmNzUy
MDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYxNjM2ODIwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5NmU3
NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCisgICAgICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2MTcy
Njk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgorICAgICAgICAgICAg
ICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTczIgorICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0aGUgL2VjaG8g
ZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNobyByZXNwb25z
ZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIKKyAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdW5pX3N0cmVh
bV9ncmVhc2Uoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9zdHJl
YW1fZGF0YSgKKyAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
CisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICB3aXRo
IGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6Cisg
ICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1
aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDNf
Y2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwg
YiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0g
aDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgZW5k
X3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5k
X2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIildLAorICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBy
ZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9k
eT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBoM19jbGllbnRfYW5k
X3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDNf
c2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHVua25v
d24gc3RyZWFtIHR5cGUgOQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAgICAgICBxdWljX2Ns
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtleXMo
KSksIFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1b
Ml0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorCisgICAgICAgICAgICAjIHVua25vd24gc3RyZWFt
IHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1U
cnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCisKKyAgICAg
ICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNf
c2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2VydmVy
Ll9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
M19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwgYiJceDQwIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uc3RyZWFtX3R5
cGUsIE5vbmUpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zl
cihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUs
IDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1
ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVh
bVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI3YzUyMDkzOGUyY2YyNGFlYjc2YjkxOWQ5NjdhZmJjNmM2ZWVlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQpAQCAtMCwwICsxLDM3IEBA
Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5sb2dn
ZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBRdWljTG9nZ2VyVGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIGxvZ2dlciA9IFF1aWNMb2dnZXIo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci50b19kaWN0KCksIHsicWxvZ192ZXJz
aW9uIjogImRyYWZ0LTAxIiwgInRyYWNlcyI6IFtdfSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3Ry
YWNlKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICAgICAgdHJhY2Ug
PSBsb2dnZXIuc3RhcnRfdHJhY2UoaXNfY2xpZW50PVRydWUsIG9kY2lkPWJ5dGVzKDgpKQorICAg
ICAgICBsb2dnZXIuZW5kX3RyYWNlKHRyYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgbG9nZ2VyLnRvX2RpY3QoKSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAgICAgICAidHJhY2Vz
IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY29t
bW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0RDSUQiOiAiMDAw
MDAwMDAwMDAwMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZV90
aW1lIjogIjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZXZlbnRfZmllbGRzIjogWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZWxhdGl2ZV90aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdv
cnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF90eXBlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbnRhZ2VfcG9pbnQiOiB7Im5hbWUiOiAiYWlvcXVpYyIsICJ0eXBlIjogImNsaWVu
dCJ9LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Bh
Y2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjliN2FhOWE2MTk3NjdhN2Y1YzAzNWY3NzMwZmYzNzFkN2Q1Zjc5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CkBAIC0wLDAgKzEsNTEzIEBACitp
bXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlv
cXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yCitmcm9tIGFpb3F1aWMu
cXVpYyBpbXBvcnQgcGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAg
ICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZLAorICAgIFF1aWNQ
cmVmZXJyZWRBZGRyZXNzLAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMsCisgICAgZGVjb2RlX3BhY2tldF9udW1iZXIsCisgICAgZW5jb2RlX3F1
aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZywKKyAg
ICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcywKKyAg
ICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAgcHVzaF9xdWljX3ByZWZlcnJl
ZF9hZGRyZXNzLAorICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKykKKworZnJv
bSAudXRpbHMgaW1wb3J0IGxvYWQKKworCitjbGFzcyBQYWNrZXRUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9kZWNvZGVfcGFja2V0X251bWJlcihzZWxmKToKKyAgICAgICAgIyBleHBlY3Rl
ZCA9IDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MCksIGkpCisK
KyAgICAgICAgIyBleHBlY3RlZCA9IDEyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29k
ZV9wYWNrZXRfbnVtYmVyKDAsIDgsIGV4cGVjdGVkPTEyOCksIDI1NikKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3Bh
Y2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI4KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVk
ID0gMTI5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwg
OCwgZXhwZWN0ZWQ9MTI5KSwgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9w
YWNrZXRfbnVtYmVyKDEsIDgsIGV4cGVjdGVkPTEyOSksIDI1NykKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoMiwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tl
dF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI5KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVkID0g
MjU2CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDEyOCk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTI1NiksIDI1NiAr
IGkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MjU2KSwgaSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3Ip
OgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQor
CisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX2NsaWVudChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9jbGllbnQuYmluIikpCisgICAgICAgIGhlYWRlciA9
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX0lOSVRJQUwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNj
aWkudW5oZXhsaWZ5KCI4NThiMzkzNjhiOGUzYzZlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5
X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwg
MTI2MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRl
ZiB0ZXN0X3B1bGxfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWxvYWQoImluaXRpYWxfc2VydmVyLmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1
aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklUSUFMKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCIx
OTVjNjgzNDRlMjhkNDc5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2Vu
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDE4NCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRlZiB0ZXN0X3B1
bGxfcmV0cnkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInJldHJ5LmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBl
LCBQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVz
dGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImU5ZDE0NmQ4ZDE0Y2IyOGUiKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5zb3VyY2VfY2lkLAor
ICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KCIwYjBhMjA1YTY0OGZjZjgyZDg1ZjEyOGI2
N2JiZTA4MDUzZTYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVhZGVyLnRva2VuLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICI0NDM5N2EzNWQ2OTgzOTNjMTM0YjA4YTkzMjczNzg1OWY0NDZkM2Fh
ZGQwMGVkODE1NDBjOGQ4ZGUxNzIiCisgICAgICAgICAgICAgICAgIjkwNmQzZTdhMTExYjUwM2Y5
NzI5Yjg5MjhlNzUyOGY5YTg2YTQ1ODFmOWViYjRjYjNiNTNjMjgzNjYxZSIKKyAgICAgICAgICAg
ICAgICAiODUzMDc0MWE5OTE5MmVlNTY5MTRjNTYyNjk5OGVjMGYiCisgICAgICAgICAgICApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIu
aW50ZWdyaXR5X3RhZywgYmluYXNjaWkudW5oZXhsaWZ5KCJlMWEzYzgwYzc5N2VhNDAxYzA4ZmM5
YzM0MmEyZDkwZCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIu
cmVzdF9sZW5ndGgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTI1
KQorCisgICAgICAgICMgY2hlY2sgaW50ZWdyaXR5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAgICAgICAgICAgICBi
dWYuZGF0YV9zbGljZSgwLCAxMDkpLCBiaW5hc2NpaS51bmhleGxpZnkoImZiYmQyMTliNzM2M2I2
NGIiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBoZWFkZXIuaW50ZWdyaXR5X3RhZywK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVsbF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ2ZXJzaW9uX25lZ290aWF0aW9uLmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uTkVHT1RJQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90
eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9j
aWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY5MmY0
MzM2ZmE5NTFiYTEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyMykKKworICAgIGRlZiB0ZXN0X3B1bGxfbG9u
Z19oZWFkZXJfZGNpZF90b29fbG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKAorICAg
ICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImM2ZmYw
MDAwMTYxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Igor
ICAgICAgICAgICAgICAgICIwMWM1MTRmOTllYzRiYmYxZjdhMzBmOWIwYzk0ZmVmNzE3ZjFjMWQw
N2ZlYzI0Yzk5YTg2NGRhN2VkZSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVs
bF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGVzdGluYXRpb24gQ0lEIGlzIHRvbyBsb25nICgy
MSBieXRlcykiKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9zY2lkX3Rvb19sb25n
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBkYXRhPWJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYzJmZjAwMDAxNjAwMTUwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAgICAgICAgIjAxY2Zj
ZWU5OWVjNGJiZjFmN2EzMGY5YjBjOTQxN2I4YzI2M2NkZDhjYzk3MmE0NDM5ZDY4YTQ2MzIwIgor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9z
dF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlv
biksICJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICgyMSBieXRlcykiKQorCisgICAgZGVmIHRlc3Rf
cHVsbF9sb25nX2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHg4MFx4ZmZceDAwXHgwMFx4MTFceDAwXHgwMCIpCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNf
aGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgZGVm
IHRlc3RfcHVsbF9sb25nX2hlYWRlcl90b29fc2hvcnQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWIiXHhjMFx4MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9j
aWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hlYWRlcihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgic2hvcnRfaGVhZGVyLmJpbiIpKQorICAgICAg
ICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgMHg1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY0NWFhN2I1OWMwZTFh
ZDYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWYudGVsbCgpLCA5KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9oZWFkZXJfbm9fZml4
ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDAiKQorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAg
cHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikK
KworICAgIGRlZiB0ZXN0X2VuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAg
ICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIp
LAorICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoImY5MmY0MzM2ZmE5
NTFiYTEiKSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHg0NTQ3NDcxNiwgUXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhWzE6XSwgbG9hZCgidmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4iKVsxOl0pCisK
KworY2xhc3MgUGFyYW1zVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAg
IGRlZiB0ZXN0X3BhcmFtcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICIwMTAyNjcxMDAyMTBjYzJmZDZlN2Q5N2E1M2FiNWJlODViMjhkNzVj
ODAwODAzMDI0N2U0MDQwNDgwMDVmZmYiCisgICAgICAgICAgICAiYTA1MDQ4MDAwZmZmZjA2MDQ4
MDAwZmZmZjA4MDEwNjBhMDEwMzBiMDExOSIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTEwMDAwLAorICAg
ICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhkNlx4ZTdceGQ5elNc
eGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBtYXhfcGFja2V0X3Np
emU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5MzIxMCwKKyAgICAg
ICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY1NTM1LAorICAg
ICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY1NTM1LAor
ICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1Ob25lLAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4
cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJv
dG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfbGVnYWN5
KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjAwNDcwMDAyMDAxMGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4MDAwODAwMDEwNjAw
MDEwMDAyNiIKKyAgICAgICAgICAgICI3MTAwMDA2MDAwNDgwMDBmZmZmMDAwNTAwMDQ4MDAwZmZm
ZjAwMDQwMDA0ODAwNWZmZmEwMDBhMDAwMTAzMDAiCisgICAgICAgICAgICAiMGIwMDAxMTkwMDAz
MDAwMjQ3ZTQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwKKyAgICAgICAgICAgICAgICBzdGF0
ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhkOXpTXHhhYltceGU4WyhceGQ3XFxc
eDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTIwMjAsCisgICAgICAg
ICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisgICAgICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwKKyAgICAgICAgICAgICAgICBpbml0
aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUzNSwKKyAgICAgICAgICAgICAgICBp
bml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAgICAgICAgICAgICAgICBpbml0aWFs
X21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1z
X3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAg
ICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAg
ICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2Rpc2FibGVfYWN0aXZlX21pZ3JhdGlv
bihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMGMwMCIpCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBw
YXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYs
IHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cyhkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uX2xlZ2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwNDAwMGMwMDAwIikKKworICAgICAgICAjIHBhcnNlCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lv
bj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbj1UcnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWlj
UHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19wcmVmZXJyZWRfYWRk
cmVzcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICIwZDNiOGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUz
MTI2MmM0NTE4ZDYiCisgICAgICAgICAgICAiMzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZi
MmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1
bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzPVF1
aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIx
MzkuMTYyLjEyMy4xMzQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNz
PSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4
OTBceDk1YDciLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJG
XHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwMCkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249
UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcHJlZmVycmVk
X2FkZHJlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgIjAwM2YwMDBkMDAzYjhiYTI3Yjg2MTE1MzI0MDA4OTAyMDAwMDAwMDBm
MDNjOTFmZmZlNjlhNDU0MTE1MzEyNiIKKyAgICAgICAgICAgICIyYzQ1MThkNjMwMTNmMGMyODdl
ZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDgiCisgICAgICAgICAg
ICAiZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJh
bWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZl
cnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisg
ICAgICAgICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisg
ICAgICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFm
ZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1i
ImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5c
XG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAg
ICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd24oc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjgwMDBmZjAwMDEwMCIpCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxs
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3Zl
cnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygpKQorCisgICAg
ZGVmIHRlc3RfcGFyYW1zX3Vua25vd25fbGVnYWN5KHNlbGYpOgorICAgICAgICAjIGZiLm12ZnN0
Lm5ldCBzZW5kcyBhIHByb3ByaWV0YXJ5IHBhcmFtZXRlciA2NTI4MAorICAgICAgICBkYXRhID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwNjQwMDA1MDAwNDgwMDEwNDAwMDAw
NjAwMDQ4MDAxMDQwMDAwMDcwMDA0ODAwMTA0MDAwMDA0MDAwNDgwMSIKKyAgICAgICAgICAgICIw
MDAwMDAwMDgwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDkwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDEw
MDA0ODAiCisgICAgICAgICAgICAiMDBlYTYwMDAwYTAwMDEwMzAwMDMwMDAyNTAwMDAwMDIwMDEw
NjE2MTYxNjE2MjYyNjI2MjYzNjM2MzYzNjQ2IgorICAgICAgICAgICAgIjQ2NDY0ZmYwMDAwMDEw
MCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICAgICAgaWRsZV90aW1lb3V0PTYwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19y
ZXNldF90b2tlbj1iImFhYWFiYmJiY2NjY2RkZGQiLAorICAgICAgICAgICAgICAgIG1heF9wYWNr
ZXRfc2l6ZT00MDk2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9MTA0ODU3NiwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY2NTYw
LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY2
NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT02NjU2MCwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NDI5NDk2NzI5NSwKKyAg
ICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT00Mjk0OTY3Mjk1LAorICAgICAg
ICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2NF9vbmx5KHNlbGYpOgorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhiYTI3Yjg2MTE1
MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyNjJjNDUxOGQ2MzAxMyIKKyAg
ICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2
ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9IHB1bGxfcXVpY19w
cmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNz
KAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz1Ob25lLAorICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDci
LAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4
MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEp
KQorICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmLCBwcmVmZXJyZWRfYWRk
cmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRl
ZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjZfb25seShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDAwMDAwMDAwMDAyNDAwODkwMjAw
MDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNjMwMTMiCisgICAgICAgICAgICAi
ZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNiNCIK
KyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9
ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1aWNfcHJlZmVycmVkX2Fk
ZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlZmVy
cmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAg
ICAgICAgICBpcHY0X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9
KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5
NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAt
RUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcHJlZmVycmVk
X2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKwor
Y2xhc3MgRnJhbWVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWUoc2VsZik6
CisgICAgICAgIGRhdGEgPSBiIlx4MDBceDAyXHgwMFx4MDAiCisKKyAgICAgICAgIyBwYXJzZQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNldCwgZGVsYXkg
PSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdl
c2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZShzZWxmKToKKyAgICAgICAgZGF0
YSA9IGIiXHgwMlx4MDJceDAxXHgwMFx4MDBceDAwIgorCisgICAgICAgICMgcGFyc2UKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFj
a2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1
ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBk
YXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlXzIoc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAwXHgwMyIKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBk
ZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KSwgcmFuZ2UoNSwgNildKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fj
a19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZV8z
KHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgwMVx4MDIiCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBy
YW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyksIHJhbmdlKDUsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6
ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNr
ZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF90
d29fcmFuZ2VzKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA0XHgwMlx4MDJceDAwXHgwMFx4
MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShi
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KSwgcmFuZ2UoMiwgMyksIHJhbmdlKDQsIDUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5n
ZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZTIz
MTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVjNmY3Y2FkODkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDU2OSBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMuY3J5
cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgK
KyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAg
ICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFF1aWNGcmFtZVR5cGUsCisgICAgUXVpY1Byb3Rv
Y29sVmVyc2lvbiwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCAo
CisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tldEJ1aWxkZXJTdG9wLAorICAg
IFF1aWNTZW50UGFja2V0LAorKQorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgRXBvY2gKKworCitk
ZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKKyAgICByZXR1cm4gUXVpY1BhY2tl
dEJ1aWxkZXIoCisgICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAorICAgICAgICBpc19jbGllbnQ9
aXNfY2xpZW50LAorICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgIHBlZXJfY2lkPWJ5
dGVzKDgpLAorICAgICAgICBwZWVyX3Rva2VuPWIiIiwKKyAgICAgICAgc3Bpbl9iaXQ9RmFsc2Us
CisgICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICApCisK
KworZGVmIGNyZWF0ZV9jcnlwdG8oKToKKyAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKKyAgICBj
cnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRydWUsIHZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3Mg
UXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRl
cl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAg
ICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0
X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVp
bGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisK
KyAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBh
Y2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5CisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5J
VElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRl
c3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9
IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVf
Y3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAg
ICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAg
ICAgICAgIyBJTklUSUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDEw
MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisK
KyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQ
QUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWls
ZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAg
ICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdy
YW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBh
Y2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisg
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5n
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5
dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAg
ICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19l
bGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVl
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVy
X2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIo
KQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwK
KyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRv
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBl
LkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJ
QUwsIGVtcHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJ
QUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFj
a2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAx
NDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFD
S0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xNDUsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fc2hvcnRfaGVhZGVyKHNl
bGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEy
MzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1w
dHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGZ1bGwgbGVu
Z3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVy
LnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGVtcHR5CisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hl
Y2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2go
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElB
TCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQs
CisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAg
IGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2VsZik6CisgICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNL
RVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRl
ci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhi
eXRlcygxOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgSEFORFNIQUtFCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0
KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgICMgT05FX1JUVAorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCisgICAgICAgIGJ1ZiA9IGJ1
aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdy
YW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFt
c1swXSksIDkxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tl
dHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAg
ICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
dHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVz
PTI0NCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hBS0UsCisgICAgICAgICAg
ICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxp
Y2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MzQzLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0yLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTMyNywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRl
c3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMg
T05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VU
X1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIu
cmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFt
cworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgYnVp
bGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVz
ID0gMTAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDk3MykKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNl
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMDAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTAwMCwKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3pl
cm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5dGVzID0gMCBvbmx5
IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgorCisgICAgICAgIENoZWNrIENSWVBU
TyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAg
ICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorCisgICAgICAgICMgY2hlY2sg
YnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwg
MCkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3plcm9fYWNr
KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyA9IDAgb25seSBh
bGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBDaGVjayBBQ0sgaXMg
YWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigp
CisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
UXVpY0ZyYW1lVHlwZS5BQ0spCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDY0KSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCA5MikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAg
ICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNL
RVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTkyLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18xKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGRvZXNuJ3QgYWxsb3cg
YW55IHBhY2tldHMuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxk
ZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDExCisKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQo
UEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1z
CisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3Rfc2hvcnRf
aGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAg
IGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5
dGVzID0gODAwCisKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNzczKQor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToK
KyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
ODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxp
Z2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBB
Q0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9ODAwLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAj
IGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9u
dW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzMo
c2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxk
ZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlw
dG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQs
IGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5w
YWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2Vu
dFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAg
ICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fj
a19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAg
ICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Jhbmdlc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDA4YzhhYzZjNTIzNmQxMzYzNDhhZDI0YWJmOWZh
NmQ4NTkzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5n
ZXNldC5weQpAQCAtMCwwICsxLDIzNyBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UK
KworZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKKworY2xhc3Mg
UmFuZ2VTZXRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRfc2luZ2xlX2R1cGxpY2F0
ZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5n
ZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICBkZWYgdGVzdF9hZGRf
c2luZ2xlX29yZGVyZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2Vz
ZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9tZXJnZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDMpXSkK
KworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDMpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKKwor
ICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vcmRlcmVkKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5n
ZXNldC5hZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDAsIDQpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMs
IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KSwgcmFuZ2UoMywgNSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCAzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNSldKQorCisgICAgZGVm
IHRlc3RfYWRkX3JhbmdlX292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDUpXSkKKworICAg
IGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwXzIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0g
UmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAgICAgICByYW5nZXNl
dC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEwLCAxMikKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDE2LCAxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgpLCByYW5nZSgxMCwgMTIpLCBy
YW5nZSgxNiwgMTgpXQorICAgICAgICApCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDE1KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgMTUpLCBy
YW5nZSgxNiwgMTgpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoNiwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDYsIDgp
XSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgcmFuZ2Vz
ZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNCwgNildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgy
LCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwg
NildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9zcGFyc2Uoc2VsZik6Cisg
ICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMild
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDYsIDgpXSkKKworICAgICAgICBy
YW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQorCisgICAgZGVmIHRl
c3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAg
ICByYW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyMCwgMzApCisKKyAg
ICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDEwKSwgcmFuZ2UoMjAsIDMwKV0pCisKKyAgICBkZWYg
dGVzdF9zdWJ0cmFjdF9ub19jaGFuZ2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoNSwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgx
NSwgMjApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyNSwgMzApCisKKyAgICAgICAgcmFuZ2VzZXQu
c3VidHJhY3QoMCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMwKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuc3VidHJhY3QoMTAsIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjApLCByYW5nZSgyNSwgMzApXSkK
KworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0
ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMSwgNCkKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMjApCisgICAgICAgIHJhbmdl
c2V0LmFkZCgzMCwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwg
cmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAs
IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwgcmFuZ2UoMzAsIDQw
KV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDMsIDExKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgMyksIHJhbmdlKDEx
LCAyMCksIHJhbmdlKDMwLCA0MCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Rfc3BsaXQoc2Vs
Zik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQo
MCwgMTApCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDIsIDUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNSwgMTApXSkKKwor
ICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Tm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBib29sKFJhbmdlU2V0KCkpCisKKyAg
ICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiByYW5nZXNldCkKKworICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgw
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCisK
KyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSksIHJhbmdlKDMsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgyIGluIHJh
bmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiByYW5nZXNldCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKDQgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gcmFuZ2VzZXQpCisK
KyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgcjAgPSBSYW5nZVNldChbcmFuZ2UoMCwg
MSldKQorICAgICAgICByMSA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQor
ICAgICAgICByMiA9IFJhbmdlU2V0KFtyYW5nZSgzLCA0KSwgcmFuZ2UoMSwgMildKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMCA9PSByMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
MCA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMCA9PSAwKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyMSA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMSA9PSBy
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIyKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHIxID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIyKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocjIgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cjIgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjIgPT0gMCkKKworICAgIGRlZiB0
ZXN0X2xlbihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdlc2V0KSwgMCkKKworICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdl
c2V0KSwgMSkKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBS
YW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAgICAgciA9IHJhbmdlc2V0
LnNoaWZ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCByYW5nZSgxLCAyKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDQpXSkKKworICAg
IGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3Jhbmdl
KDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyYW5n
ZXNldCksICJSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkiKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzEzZjhmYzhhNGM0MGZiNjQzMTE0NGI4
YzBmYmJkYjdhODBiYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcmVjb3ZlcnkucHkKQEAgLTAsMCArMSwyMjcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHVuaXR0
ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9x
dWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfVFlQRV9JTklUSUFMLCBQQUNLRVRfVFlQRV9P
TkVfUlRUCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY1NlbnRQ
YWNrZXQKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNldAorZnJvbSBh
aW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0UGFjZXIsCisgICAg
UXVpY1BhY2tldFJlY292ZXJ5LAorICAgIFF1aWNQYWNrZXRTcGFjZSwKKyAgICBRdWljUnR0TW9u
aXRvciwKKykKKworCitkZWYgc2VuZF9wcm9iZSgpOgorICAgIHBhc3MKKworCitjbGFzcyBRdWlj
UGFja2V0UGFjZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHNlbGYucGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgZGVmIHRlc3Rfbm9fbWVhc3Vy
ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTAuMCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2Vu
ZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5v
dz0wLjApCisKKyAgICBkZWYgdGVzdF93aXRoX21lYXN1cmVtZW50KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAg
ICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0wLjApCisKKyAgICAgICAgc2Vs
Zi5wYWNlci51cGRhdGVfcmF0ZShjb25nZXN0aW9uX3dpbmRvdz0xMjgwMDAwLCBzbW9vdGhlZF9y
dHQ9MC4wNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF9tYXgs
IDAuMDAwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF90aW1l
LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5wYWNrZXRfdGltZSwg
MC4wMDAwNSkKKworICAgICAgICAjIDE2IHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRf
dGltZShub3c9MS4wKSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRf
c2VuZF90aW1lKG5vdz0xLjApLCAxLjAwMDA1KQorCisgICAgICAgICMgMiBwYWNrZXRzCisgICAg
ICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2Vs
Zi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAwNSkpCisgICAgICAgICAgICBzZWxmLnBh
Y2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDA1KQorICAgICAgICBzZWxmLmFzc2VydEFs
bW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMDUpLCAxLjAwMDEp
CisKKyAgICAgICAgIyAxIHBhY2tldAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBh
Y2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDEpKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0
ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwo
c2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSwgMS4wMDAxNSkKKworICAgICAg
ICAjIDIgcGFja2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpKQor
ICAgICAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAxNSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0xLjAwMDE1KSwgMS4wMDAyKQorCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNvdmVyeVRlc3QoVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNF
ID0gUXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UgPSBRdWlj
UGFja2V0U3BhY2UoKQorICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0UgPSBRdWljUGFja2V0U3Bh
Y2UoKQorCisgICAgICAgIHNlbGYucmVjb3ZlcnkgPSBRdWljUGFja2V0UmVjb3ZlcnkoCisgICAg
ICAgICAgICBpc19jbGllbnRfd2l0aG91dF8xcnR0PUZhbHNlLCBzZW5kX3Byb2JlPXNlbmRfcHJv
YmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLnJlY292ZXJ5LnNwYWNlcyA9IFsKKyAgICAgICAg
ICAgIHNlbGYuSU5JVElBTF9TUEFDRSwKKyAgICAgICAgICAgIHNlbGYuSEFORFNIQUtFX1NQQUNF
LAorICAgICAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFLAorICAgICAgICBdCisKKyAgICBkZWYg
dGVzdF9kaXNjYXJkX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLnJlY292ZXJ5LmRpc2NhcmRf
c3BhY2Uoc2VsZi5JTklUSUFMX1NQQUNFKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X2Fja19lbGljaXRpbmcoc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
c2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwKKyAgICAgICAgKQor
ICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAgICMgwqBwYWNrZXQg
c2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwgc3BhY2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQs
IDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5v
bl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdlc2V0PVJhbmdlU2V0
KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQsIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQsIDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0cyksIDApCisK
KyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucmVjb3Zl
cnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292
ZXJ5Ll9ydHRfbGF0ZXN0LCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVj
b3ZlcnkuX3J0dF9taW4sIDEwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNv
dmVyeS5fcnR0X3Ntb290aGVkLCAxMC4wKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X25vbl9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBhY2tl
dCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9
MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MTIzLjQ1LAorICAg
ICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNFCisKKyAgICAgICAgIyDC
oHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFja2V0X3NlbnQocGFja2V0
LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2lu
X2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0
aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2Vu
dF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBhY2snZAorICAgICAgICBzZWxmLnJl
Y292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlLCBhY2tfcmFuZ2VzZXQ9
UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5vdz0xMC4wCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdo
dCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2Zs
aWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRz
KSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAwLjApCisKKyAgICBkZWYgdGVzdF9vbl9w
YWNrZXRfbG9zdF9jcnlwdG8oc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICBpbl9m
bGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAg
ICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwK
KyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAg
ICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MC4wLAorICAgICAgICAp
CisgICAgICAgIHNwYWNlID0gc2VsZi5JTklUSUFMX1NQQUNFCisKKyAgICAgICAgc2VsZi5yZWNv
dmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisgICAgICAgIHNlbGYu
cmVjb3ZlcnkuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9MS4wKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisKK2NsYXNzIFF1aWNS
dHRNb25pdG9yVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbW9uaXRvcihzZWxmKToKKyAg
ICAgICAgbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwLCBub3c9MTAwMCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAw
LjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAg
ICMgbm90IHRha2VuIGludG8gYWNjb3VudAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0
b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAwLjBdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5vdz0xMDAxKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAwLjAsIDAu
MCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEyLCBu
b3c9MTAwMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEw
LCAxMSwgMTIsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9y
ZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTEzLCBub3c9MTAwMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
c2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgICMgd2Ugbm93IGhhdmUgZW5vdWdoIHNhbXBsZXMK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0x
NCwgbm93PTEwMDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMs
IFsxMCwgMTEsIDEyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9uaXRvci5f
cmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFz
aW5nKHJ0dD0yMCwgbm93PTEwMDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3Iu
X2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0
X2luY3JlYXNpbmcocnR0PTMwLCBub3c9MTAwNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NDAsIG5vdz0xMDA3KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD01MCwgbm93PTEwMDgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTYwLCBub3c9MTAwOSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAxKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NzAsIG5vdz0x
MDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD04
MCwgbm93PTEwMTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNl
cywgMykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTkwLCBub3c9MTAxMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
aW5jcmVhc2VzLCA0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25pdG9yLmlzX3J0dF9p
bmNyZWFzaW5nKHJ0dD0xMDAsIG5vdz0xMDEzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
b25pdG9yLl9pbmNyZWFzZXMsIDUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3NmYwMjNiZjkzZGE0YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpAQCAtMCwwICsxLDMwIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5yZXRyeSBp
bXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCisKKworY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5k
bGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmV0cnlfdG9rZW4oc2VsZik6CisgICAg
ICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQpCisgICAgICAgIGNpZCA9IGIiXHgwOFx4MDdc
eDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKKworICAgICAgICBoYW5kbGVyID0gUXVpY1JldHJ5VG9r
ZW5IYW5kbGVyKCkKKworICAgICAgICAjIGNyZWF0ZSB0b2tlbgorICAgICAgICB0b2tlbiA9IGhh
bmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5v
bmUodG9rZW4pCisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIG9rCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCB0b2tlbiksIGNpZCkKKwor
ICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1wdHkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRsZXIudmFsaWRhdGVf
dG9rZW4oYWRkciwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0IGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIGtl
eSBzaXplLiIKKyAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSB3cm9uZyBh
ZGRyZXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRlX3Rva2VuKCgiMS4yLjMuNCIsIDEyMzQ1KSwg
dG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJSZW1v
dGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1MzdhZTJlZDEyYjZmNmMwNDJkMDk5MDRlY2ZiNGYwYzJkZjU3ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKQEAgLTAsMCAr
MSw0NDYgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5w
YWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFtZQorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0X2J1
aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9tIGFpb3F1aWMucXVpYy5zdHJlYW0g
aW1wb3J0IFF1aWNTdHJlYW0KKworCitjbGFzcyBRdWljU3RyZWFtVGVzdChUZXN0Q2FzZSk6Cisg
ICAgZGVmIHRlc3RfcmVjdl9lbXB0eShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIikp
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZm
ZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFu
Z2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9z
dGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3JkZXJlZChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IHN0
YXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFs
c2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5
dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBtb3JlIGRhdGEK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSksCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwg
c3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMo
c3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgICAgICAjIGFkZCBkYXRhIGFuZCBmaW4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD0xNiwgZGF0YT1iIjY3ODkwMTIzIiwgZmluPVRydWUpKSwK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiNjc4OTAxMjMiLCBlbmRfc3Ry
ZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMjQpCisKKyAgICBkZWYgdGVzdF9yZWN2
X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9
MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIlx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwODkwMTIzNDUiCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbcmFuZ2UoOCwg
MTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0
LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9m
ZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9
MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVmIHRlc3RfcmVjdl9vZmZzZXRfb25seShzZWxmKToK
KyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFk
ZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAg
ICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIiIpKSwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVj
dl9idWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9mdWxseV9jb25zdW1lZChzZWxmKToKKyAgICAg
ICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRh
IGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBk
YXRhIGFnYWluIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAx
MjM0NTY3IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICBkZWYgdGVzdF9yZWN2X2FscmVhZHlf
cGFydGlhbGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0
cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiKSksCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lk
PTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9y
ZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5f
cmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3Zf
YnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVk
KGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVl
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfZmluX291dF9vZl9vcmRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShz
dHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4IHdpdGggRklOCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1
aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAg
ICAgICAgICAgIE5vbmUsCisgICAgICAgICkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNl
dCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY3Zf
ZmluX3RoZW5fZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1f
aWQ9MCkKKyAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAs
IGRhdGE9YiIiLCBmaW49VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhj
ZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZy
YW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHIoY20uZXhjZXB0aW9uKSwgIkRhdGEgcmVjZWl2ZWQgYmV5b25kIEZJTiIpCisKKyAgICBk
ZWYgdGVzdF9yZWN2X2Zpbl90d2ljZShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1Njci
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5k
X3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEy
MzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIi
IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X3JlY3ZfZmluX3dpdGhvdXRfZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIiwgZmlu
PVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiIiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRf
ZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBub3Ro
aW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEKKyAg
ICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3Nl
bmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5r
CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdl
dF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMg
Zmlyc3QgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVs
aXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDAsIDgpCisKKyAgICAgICAgIyBzZWNvbmQg
Y2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDgsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRh
X2FuZF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisgICAgICAg
ICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBk
YXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVu
ZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2Vu
ZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAj
IHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEyMzQ1IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
NikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0KHNlbGYpOgorICAgICAgICBzdHJlYW0g
PSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0
ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3Iiwg
ZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNl
bmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZp
bj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8g
c2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAg
ICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVy
eShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgOCldKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2Vu
ZCBjaHVuayBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
ZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1G
YWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2xvc3Rf
ZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5v
dGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBh
bmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3Ry
ZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3Ry
ZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
cmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVh
bUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisK
KyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
bmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAg
ICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCA4LCAx
NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFt
RnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbSgpCisgICAgICAgIG1heF9vZmZzZXQgPSAxMgorCisgICAgICAgICMgbm90aGluZyB0byBz
ZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgd3JpdGUgZGF0YSwg
c2VuZCBhIGNodW5rCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiKQor
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShm
cmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2Uo
OCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgOCkKKworICAgICAgICAjIHNlbmQgaXMgbGltaXRlZCBieSBwZWVyCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiODkwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAx
NildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
MikKKworICAgICAgICAjIHVuYWJsZSB0byBzZW5kLCBibG9ja2VkCisgICAgICAgIGZyYW1lID0g
c3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5k
aW5nKSwgW3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHdyaXRlIG1vcmUgZGF0YSwgc3RpbGwg
YmxvY2tlZAorICAgICAgICBzdHJlYW0ud3JpdGUoYiJhYmNkZWZnaCIpCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDEyLCAyNCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHBlZXIgcmFpc2VzIGxpbWl0LCBz
ZW5kIHNvbWUgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBz
dHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIyMzQ1YWJjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMTIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgyMCwg
MjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwg
MjApCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCBhZ2Fpbiwgc2VuZCByZW1haW5pbmcg
ZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0
YSwgYiJlZmdoIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDI0KQorCisgICAgICAgICMgbm90aGluZyBt
b3JlIHRvIHNlbmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9maW5fb25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0u
c2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIEVP
RgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFt
ZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5k
YXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGluZyBtb3Jl
IHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZmZXJfaXNf
ZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Zpbl9vbmx5
X2Rlc3BpdGVfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisK
KyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdy
aXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAg
ICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGlu
ZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZm
ZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF90bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzJkZDU2ZGViOGJhZWFjOTZmY2QxYTNmZTBiYjVmOTQzNWQ3YzBjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpAQCAtMCwwICsxLDE0
MDAgQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3NsCitmcm9t
IHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRj
aAorCitmcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEFsZ29y
aXRobQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IHNlcmlhbGl6
YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1w
b3J0IGVjCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1aWMuYnVmZmVyIGlt
cG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0ICgK
KyAgICBDZXJ0aWZpY2F0ZSwKKyAgICBDZXJ0aWZpY2F0ZVZlcmlmeSwKKyAgICBDbGllbnRIZWxs
bywKKyAgICBDb250ZXh0LAorICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMsCisgICAgRmluaXNoZWQs
CisgICAgTmV3U2Vzc2lvblRpY2tldCwKKyAgICBTZXJ2ZXJIZWxsbywKKyAgICBTdGF0ZSwKKyAg
ICBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcywKKyAgICBwdWxsX2Jsb2NrLAorICAgIHB1bGxf
Y2VydGlmaWNhdGUsCisgICAgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisgICAgcHVsbF9jbGll
bnRfaGVsbG8sCisgICAgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAgICBwdWxsX2Zpbmlz
aGVkLAorICAgIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1bGxfc2VydmVyX2hlbGxv
LAorICAgIHB1c2hfY2VydGlmaWNhdGUsCisgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisg
ICAgcHVzaF9jbGllbnRfaGVsbG8sCisgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAg
ICBwdXNoX2ZpbmlzaGVkLAorICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1c2hf
c2VydmVyX2hlbGxvLAorICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSwKKykKKworZnJvbSAudXRpbHMg
aW1wb3J0ICgKKyAgICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisg
ICAgU0VSVkVSX0tFWUZJTEUsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgbG9h
ZCwKKykKKworQ0VSVElGSUNBVEVfREFUQSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKVsx
MTotMl0KK0NFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUgPSBsb2FkKCJ0bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiIpWy0zODQ6XQorCitDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDExMDAzMTAwMDUwMDA0ODAxMDAw
MDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4MDEwMDAwMDAwMCIKKyAgICBiIjQwMDA0ODEwMDAw
MDAwMDAxMDAwMjQyNTgwMDA4MDAwMjQwNjQwMDBhMDAwMTBhIgorKQorCitTRVJWRVJfUVVJQ19U
UkFOU1BPUlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDEx
MDRmZjAwMDAxMTAwNDUwMDA1MDAwNDgwMTAwMDAwMDAwNjAwMDQ4MDEwMDAwMDAwMDcwMDA0OCIK
KyAgICBiIjAxMDAwMDAwMDA0MDAwNDgxMDAwMDAwMDAwMTAwMDI0MjU4MDAwMjAwMTAwMDAwMDAw
MDAwMDAwMDAwMDAwMCIKKyAgICBiIjAwMDAwMDAwMDAwMDAwMDgwMDAyNDA2NDAwMGEwMDAxMGEi
CispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgYiIwMDU3MDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAwMGZmZmYwMDAyMDAx
MGM1YWM0MTBmYmRkNGZlNmUyYzEiCisgICAgYiI0MjI3OWYyMzFlOGUwMDAwYTAwMDEwMzAwMDQw
MDA0ODAwNWZmZmEwMDBiMDAwMTE5MDAwMTAwMDI2NzEwZmYiCisgICAgYiI0MjAwMGM1YzA2N2Yy
N2UzOTMyMWM2M2UyOGU3YzkwMDAzMDAwMjQ3ZTQwMDA4MDAwMTA2IgorKQorCitTRVJWRVJfUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSU18zID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgIGIiMDA1
NDAwMDIwMDEwMGRjYjUwYTQ0MjUxMzI5NWI0Njc5YmFmMDRjYjVlZmZmZjhhMDAwOWM4YWZlNzJh
NjM5NyIKKyAgICBiIjI1NTQwNzAwMDYwMDA0ODAwMGZmZmYwMDA4MDAwMTA2MDAwNDAwMDQ4MDA1
ZmZmYTAwMDUwMDA0ODAwMGZmZmYiCisgICAgYiIwMDAzMDAwMjQ3ZTQwMDBhMDAwMTAzMDAwMTAw
MDI2NzEwMDAwYjAwMDExOSIKKykKKworCitjbGFzcyBCdWZmZXJUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9wdWxsX2Jsb2NrX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVh
ZEVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDEpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworCitkZWYgY3JlYXRlX2J1ZmZlcnMoKToKKyAgICByZXR1cm4geworICAg
ICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB0
bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgfQorCisKK2RlZiBtZXJn
ZV9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIHJldHVybiBiIiIuam9pbih4LmRhdGEgZm9yIHggaW4g
YnVmZmVycy52YWx1ZXMoKSkKKworCitkZWYgcmVzZXRfYnVmZmVycyhidWZmZXJzKToKKyAgICBm
b3IgayBpbiBidWZmZXJzLmtleXMoKToKKyAgICAgICAgYnVmZmVyc1trXS5zZWVrKDApCisKKwor
Y2xhc3MgQ29udGV4dFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfY2xpZW50KAorICAg
ICAgICBzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lLCBjYWRhdGE9Tm9uZSwgY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFLCAqKmt3YXJncworICAgICk6CisgICAgICAgIGNsaWVudCA9IENvbnRleHQo
CisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAg
IGNhZGF0YT1jYWRhdGEsCisgICAgICAgICAgICBjYWZpbGU9Y2FmaWxlLAorICAgICAgICAgICAg
aXNfY2xpZW50PVRydWUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisgICAgICAg
IGNsaWVudC5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAg
ICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAg
ICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUKQorICAgICAgICByZXR1cm4gY2xpZW50CisKKyAg
ICBkZWYgY3JlYXRlX3NlcnZlcihzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lKToKKyAgICAgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJf
S0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBDb250ZXh0KAorICAgICAgICAgICAgYWxwbl9w
cm90b2NvbHM9YWxwbl9wcm90b2NvbHMsIGlzX2NsaWVudD1GYWxzZSwgbWF4X2Vhcmx5X2RhdGE9
MHhGRkZGRkZGRgorICAgICAgICApCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSA9IGNvbmZp
Z3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VydmVyLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5ID0gY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQorICAgICAgICBzZXJ2ZXIuaGFuZHNoYWtl
X2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4dGVu
c2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBTRVJW
RVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICkKKyAgICAgICAgXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVD
VF9DTElFTlRfSEVMTE8pCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Ns
aWVudF91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudCgpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJc
eDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3Rh
dGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJT05TCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9i
dWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9D
RVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisK
KyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9W
RVJJRlkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0
ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
dGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9t
ZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAg
Y2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZm
ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2NlcnRpZmljYXRlX3ZlcmlmeV9kYXRh
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVs
bG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0
X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAg
ICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmlj
YXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBj
cmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikK
KworICAgICAgICAjIG1lc3Mgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgY2xpZW50
X2lucHV0ID0gY2xpZW50X2lucHV0WzotNTZdICsgYnl0ZXMoNCkgKyBjbGllbnRfaW5wdXRbLTUy
Ol0KKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25z
LCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6CisgICAgICAgICAgICBj
bGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorCisgICAgZGVm
IHRlc3RfY2xpZW50X2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVf
c2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9i
dWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIs
IGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0
ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVy
Z2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYp
CisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICMgc2VuZCBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAg
ICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9G
SU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVm
KQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgIyBtZXNzIHdp
dGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgY2xpZW50X2lucHV0ID0gY2xpZW50X2lu
cHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5j
cnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlz
aGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9y
KToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVu
dF9idWYpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5leHBlY3RlZF9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlcnZlci5z
dGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAg
c2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJz
KCkpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hF
RAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNz
YWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4
MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNF
UlZFUl9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2Fn
ZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgZGVmIF9zZXJ2
ZXJfZmFpbF9oZWxsbyhzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMgc2VuZCBjbGll
bnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAg
IHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVs
bG8KKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVy
LmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKworICAgIGRlZiB0ZXN0
X3NlcnZlcl91bnN1cHBvcnRlZF9jaXBoZXJfc3VpdGUoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fY2lwaGVyX3N1aXRlcyA9IFt0
bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2XQorCisgICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5fY2lwaGVyX3N1aXRlcyA9IFt0bHMu
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0XQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAgICAgICAgICBz
ZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3VpdGUiKQor
CisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG0oc2Vs
Zik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVu
dC5fc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FRDQ0OF0K
KworICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBzaWduYXR1
cmUgYWxnb3JpdGhtIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF92ZXJzaW9u
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBj
bGllbnQuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJT05fMV8yXQorCisgICAg
ICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyh0bHMuQWxlcnRQcm90b2NvbFZlcnNpb24pIGFzIGNtOgorICAgICAgICAgICAg
c2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lv
biIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfYmFkX2ZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYp
OgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8KKyAg
ICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZl
cnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBj
ZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVf
YnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNl
cnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZm
ZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAg
ICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZp
Y2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAjIHNlbmQgZmluaXNo
ZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1
ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBt
ZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgc2VydmVyX2lucHV0ID0gc2Vy
dmVyX2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9yKToKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisKKyAgICBkZWYgX2hhbmRzaGFrZShzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAyMTMp
CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzNTgpCisg
ICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGll
bnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lvbiB0
aWNrZXQpCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNl
cnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVE
KQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCA2MDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAyMzE2KQorCisgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZCwgKHNlc3Npb24gdGlja2V0KQorICAgICAgICAjIHNlbmQgZmluaXNoZWQK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NU
X0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA1MikKKyAg
ICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMgaGFuZGxlIGZpbmlz
aGVkCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9i
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJf
UE9TVF9IQU5EU0hBS0UpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2Vy
dmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMCkK
KworICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAgICAjIGNoZWNrIGNp
cGhlciBzdWl0ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50
LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9T
SEEzODQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c2VydmVyLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2
X0dDTV9TSEEzODQKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNl
cnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2hhbmRz
aGFrZV9lY2RzYV9zZWNwMjU2cjEoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSwgc2VydmVyLmNlcnRpZmljYXRl
X3ByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisg
ICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgKKyAgICAgICAgICAgIGNhZGF0YT1z
ZXJ2ZXIuY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVN
KSwKKyAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
aGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sgQUxQTiBtYXRjaGVz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3RpYXRlZCwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQor
CisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiXSkKKyAgICAgICAg
c2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiLCAiaDMt
MjAiXSkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAg
ICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQu
YWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZl
ci5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0
aF9hbHBuX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudChh
bHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcihhbHBuX3Byb3RvY29scz1bImgzLTIwIl0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoY20uZXhjZXB0aW9uKSwgIk5vIGNvbW1vbiBBTFBOIHByb3RvY29scyIpCisKKyAgICBkZWYg
dGVzdF9oYW5kc2hha2Vfd2l0aF9yc2FfcGtjczFfc2hhMjU2X3NpZ25hdHVyZShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zaWdu
YXR1cmVfYWxnb3JpdGhtcyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTZdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dp
dGhfY2VydGlmaWNhdGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudChjYWZpbGU9Tm9uZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmlj
YXRlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVuYWJsZSB0byBn
ZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93
aXRoX2NlcnRpZmljYXRlX25vX3ZlcmlmeShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2dyZWFz
ZV9ncm91cChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAg
ICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5HUkVBU0UsIHRscy5H
cm91cC5TRUNQMjU2UjFdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisK
KyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
aGFuZHNoYWtlX3dpdGhfeDI1NTE5KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0
ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMgPSBbdGxzLkdyb3Vw
LlgyNTUxOV0KKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIGV4Y2VwdCBVbnN1cHBvcnRlZEFsZ29yaXRobSBhcyBleGM6CisgICAgICAgICAgICBzZWxm
LnNraXBUZXN0KHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfeDQ0OChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xp
ZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5YNDQ4XQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
X2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkQWxn
b3JpdGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCisKKyAg
ICBkZWYgdGVzdF9zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgY2xpZW50X3RpY2tldHMg
PSBbXQorICAgICAgICBzZXJ2ZXJfdGlja2V0cyA9IFtdCisKKyAgICAgICAgZGVmIGNsaWVudF9u
ZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBjbGllbnRfdGlja2V0cy5hcHBlbmQodGlj
a2V0KQorCisgICAgICAgIGRlZiBzZXJ2ZXJfZ2V0X3RpY2tldChsYWJlbCk6CisgICAgICAgICAg
ICBmb3IgdCBpbiBzZXJ2ZXJfdGlja2V0czoKKyAgICAgICAgICAgICAgICBpZiB0LnRpY2tldCA9
PSBsYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgZGVmIHNlcnZlcl9uZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAg
ICAgICBzZXJ2ZXJfdGlja2V0cy5hcHBlbmQodGlja2V0KQorCisgICAgICAgIGRlZiBmaXJzdF9o
YW5kc2hha2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisg
ICAgICAgICAgICBjbGllbnQubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gY2xpZW50X25ld190aWNr
ZXQKKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAg
ICAgIHNlcnZlci5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfbmV3X3RpY2tldAorCisg
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBub3QgdXNlZAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAgICAgICAgICAjIGNoZWNr
IHRpY2tldHMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF90
aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl90aWNr
ZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3RpY2tldHNbMF0u
dGlja2V0LCBzZXJ2ZXJfdGlja2V0c1swXS50aWNrZXQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudF90aWNrZXRzWzBdLnJlc3VtcHRpb25fc2Vj
cmV0LCBzZXJ2ZXJfdGlja2V0c1swXS5yZXN1bXB0aW9uX3NlY3JldAorICAgICAgICAgICAgKQor
CisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlKCk6CisgICAgICAgICAgICBjbGllbnQgPSBz
ZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0g
Y2xpZW50X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2Vy
dmVyKCkKKyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJf
Z2V0X3RpY2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3No
YXJlZF9rZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAg
ICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VS
VkVSX0hFTExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9p
bnB1dCksIDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJf
aW5wdXQpLCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAg
ICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2
ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNz
YWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICAg
ICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAgICAgICAgICAgcmVz
ZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVs
bG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5
LCBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgICAgICBjbGll
bnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RSkKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQorICAg
ICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRs
ZSBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIG5ld19zZXNzaW9uX3RpY2tldAorICAgICAg
ICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfUE9T
VF9IQU5EU0hBS0UpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNl
cnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnRfaW5wdXQp
LCAwKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAg
ICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9kZWNfa2V5KQorCisgICAgICAgICAgICAjIGNoZWNr
IHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgdXNlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNsaWVudC5zZXNzaW9uX3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRf
YmluZGVyKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAg
ICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0KKworICAg
ICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAgIHNlcnZl
ci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAgICAgICAg
ICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAgICAgIGNs
aWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICAgICAg
c2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAgICAgICAg
ICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgdGFtcGVyIHdpdGgg
YmluZGVyCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5
dGVzKDQpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAg
ICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBTSyB2
YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hha2VfYmFkX3By
ZV9zaGFyZWRfa2V5KCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0K
KworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAg
IHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAg
ICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAg
ICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFu
ZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAg
ICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxl
IGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVk
IGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwg
c2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgICAgICAgICAjIHRhbXBlciB3aXRo
IHByZV9zaGFyZV9rZXkgaW5kZXgKKyAgICAgICAgICAgIGJ1ZiA9IHNlcnZlcl9idWZbdGxzLkVw
b2NoLklOSVRJQUxdCisgICAgICAgICAgICBidWYuc2VlayhidWYudGVsbCgpIC0gMSkKKyAgICAg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDEpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYp
CisKKyAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbyBhbmQgYm9tYgorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbGxlZ2FsUGFyYW1ldGVyKToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRf
YnVmKQorCisgICAgICAgIGZpcnN0X2hhbmRzaGFrZSgpCisgICAgICAgIHNlY29uZF9oYW5kc2hh
a2UoKQorICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKQorICAgICAgICBzZWNv
bmRfaGFuZHNoYWtlX2JhZF9wcmVfc2hhcmVkX2tleSgpCisKKworY2xhc3MgVGxzVGVzdChUZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG8oc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikpCisgICAgICAgIGhl
bGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVm
LmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5y
YW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1
YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlk
Y2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8u
Y2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVy
U3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0
ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNI
QUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXBy
ZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZS
MSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNmZmE4MjQwNWEyMTFi
NjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAgICAiOTNjNzY2NWE1
NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFmOThhMWU4NGYxNSIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBb
dGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1Nf
UlNBRV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsIFt0bHMuR3JvdXAuU0VDUDI1
NlIxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnN1cHBv
cnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjgs
CisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5v
dGhlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAg
ICAgICAiZWQ1NzVjNmZiZDU5OWM0ZGZhYWJkMDAzZGNhNmU4NjBjY2RiMGUxNzgyYzFhZjAyZTU3
YmYyN2NiNjQ3OWI3NiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWxsby5zZXNzaW9uX2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAg
ICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5FTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5j
b21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAg
ICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJv
dG9jb2xzLCBbImgzLTE5Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uZWFybHlf
ZGF0YSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4ODQyMzE1YzQzN2Ji
MGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGViYjBkNCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5MTU1ODY2ZTI2NGM5
ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgorICAgICAgICAgICAgICAgICAgICAgICAgIjIy
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2ZXJf
bmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hB
MjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDM4
NFIxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNB
X1NFQ1A1MjFSMV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRo
bS5FRDI1NTE5LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUQ0NDgs
CisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19T
SEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BT
U19TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisg
ICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKKyAgICAgICAgICAgICAgICB0bHMuR3Jv
dXAuU0VDUDM4NFIxLAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQNTIxUjEsCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3Vw
cG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hl
bGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAgICAgICBo
ZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKKyAgICAgICAgICAgIHRscy5PZmZlcmVkUHNr
cygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBlNjAxNTkxYTc1MGI4
MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
NDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBhNGJmZTQwMmQ2YTA2
YTAwNTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUyMDg1MjMzYjY5ZDBk
ZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFiIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJmNGE5OTRmY2E3NGVl
N2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bCisgICAgICAgICAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIx
Nzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3ZGEzMjgxMWI1YmFl
NGU3OCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5YjcxMzg3MmYyYmIyODgx
OGNhMWE2YjAxIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQor
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQor
CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5ZjdmNjE5NjNkN2I2NDA0
ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIyNmIxOWJkZDMwZGJm
NzUxMDE1YTNhMTZlMTNiZDU5MDAyZGZlNDIwYjc5OWQyYTVjZDVlMTFiOGZhN2JjYjY2IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2Rz
LCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0YjYyZDcwZjkwN2M4MTRjZDY1ZDBmNzNiOGI5OTFm
MDZiNzBjNzcxNTNmNTQ4NDEwYTE5MWQyYjE5NzY0YTIiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZWNjMDYwNjVhNDgwZWZhOWUxZjEwYzhkYTZlNzM3ZDViZmMwNGJlM2Y3NzNlMjBhMGM5OTdm
NTFiNTYyMTI4MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI0MCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hh
bmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsICJjbG91ZGZsYXJl
LXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxv
LnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9y
dGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMsCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9u
VHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICBDTElF
TlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0
aF9zbmkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX2NsaWVudF9oZWxsbyhzZWxmKToKKyAg
ICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1iaW5hc2NpaS51
bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1
ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMx
MzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1bCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1bdGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTExdLAorICAgICAgICAgICAga2V5X3NoYXJlPVsKKyAgICAgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAg
ICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNDdi
ZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFlYjhkMWQ5NDRlNjdh
ZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2QwMzJjZmFmMjJhNzNk
YTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCisgICAgICAgICAgICAgICAg
ICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM9W3Rscy5Q
c2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0sCisgICAgICAgICAgICBzaWduYXR1cmVfYWxn
b3JpdGhtcz1bCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNE
U0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBzdXBwb3J0
ZWRfZ3JvdXBzPVt0bHMuR3JvdXAuU0VDUDI1NlIxXSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9ucz1bCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfMywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAorICAgICAgICAgICAgICAgIHRs
cy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJT
SU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBvdGhlcl9leHRl
bnNpb25zPVsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5FeHRl
bnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAg
IENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAg
ICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsby5iaW4iKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1s
b2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVy
X2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAg
ICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2
MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4
NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJl
c3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0
YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAg
ICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNh
MTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9OXzFfMykKKworICAg
IGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAg
ICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICJjY2JhYWYwNGZjMWJkNTE0M2IyY2M2Yjk3NTIwY2YzN2Q5MTQ3MGRiZmM4MTI3MTMx
YTdiZjBmOTQxZTNhMTM3IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAg
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTQ4M2U3ZTg5NWQwZjRjZWMx
NzA4NmIwODQ5NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFiMCIKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJf
c3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRo
b2QuTlVMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtl
eV9zaGFyZSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1
NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgIjA0ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQwNTZiMTY0YTI3Zjc3
MDJjYTMxOGMxNmU0ODgiCisgICAgICAgICAgICAgICAgICAgICIxOGI2NDA5NTkzYjE1YzY2NDlk
NmY0NTkzODdhNTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYyIgorICAgICAgICAg
ICAgICAgICAgICAiNzYiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRM
U19WRVJTSU9OXzFfMykKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bz
ay5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2
ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBw
dWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLAorICAgICAg
ICAgICAgU2VydmVySGVsbG8oCisgICAgICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUz
ZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVh
NTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEws
CisgICAgICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5YzRmMTNl
Y2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJjYTE5NThkN2YzODcz
MTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMiIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5z
aW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVz
aF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
ZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIp
KQorCisgICAgZGVmIHRlc3RfcHVzaF9zZXJ2ZXJfaGVsbG8oc2VsZik6CisgICAgICAgIGhlbGxv
ID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYz
YjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNl
c3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQx
ODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1Igor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMuQ2lwaGVyU3VpdGUu
QUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5D
b21wcmVzc2lvbk1ldGhvZC5OVUxMLAorICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAg
ICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5
YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAg
ICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4
NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbj10bHMuVExT
X1ZFUlNJT05fMV8zLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisg
ICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikpCisKKyAgICBkZWYg
dGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4iKSkKKyAgICAgICAgbmV3X3Nl
c3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNrZXQoCisgICAg
ICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAgICAgIHRpY2tl
dF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25vbmNlPWIiIiwK
KyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkwNjE4NzA0NzA5
NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICksCisgICAgICAgICkK
KworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwKQorICAgICAg
ICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3RpY2tldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tl
dC5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5r
bm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAg
ICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNr
ZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAg
ICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25v
bmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkw
NjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICBv
dGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCisg
ICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnVmLmRhdGEsIGxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKQorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAg
ZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9ucy5iaW4iKQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRf
ZXh0ZW5zaW9ucyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRF
eHRlbnNpb25zKAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5R
VUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS
X1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAgICAgICAgcHVzaF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9u
c193aXRoX2FscG4oc2VsZik6CisgICAgICAgIGRhdGEgPSBsb2FkKCJ0bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
CisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAg
ICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEtMjAiLAorICAgICAgICAgICAgICAgIG90aGVyX2V4
dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VSVkVS
X05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18yLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEx
NSkKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxsX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhf
YWxwbl9hbmRfZWFybHlfZGF0YS5iaW4iKSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5j
cnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRl
bnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAgRW5j
cnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0yMCIs
CisgICAgICAgICAgICAgICAgZWFybHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgIG90aGVy
X2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VS
VkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18zLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVy
KDExNikKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2NlcnRpZmljYXRlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNf
Y2VydGlmaWNhdGUuYmluIikpCisgICAgICAgIGNlcnRpZmljYXRlID0gcHVsbF9jZXJ0aWZpY2F0
ZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMsIFsoQ0VSVElGSUNBVEVf
REFUQSwgYiIiKV0pCisKKyAgICBkZWYgdGVzdF9wdXNoX2NlcnRpZmljYXRlKHNlbGYpOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKAorICAgICAgICAgICAgcmVxdWVzdF9jb250
ZXh0PWIiIiwgY2VydGlmaWNhdGVzPVsoQ0VSVElGSUNBVEVfREFUQSwgYiIiKV0KKyAgICAgICAg
KQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxNjAwKQorICAgICAgICBwdXNoX2NlcnRpZmljYXRl
KGJ1ZiwgY2VydGlmaWNhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxv
YWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2VydGlmaWNh
dGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2Vy
dGlmaWNhdGVfdmVyaWZ5LmJpbiIpKQorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRl
X3ZlcmlmeShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuYWxnb3JpdGhtLCB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyaWZ5
LnNpZ25hdHVyZSwgQ0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICB2ZXJpZnkgPSBDZXJ0aWZp
Y2F0ZVZlcmlmeSgKKyAgICAgICAgICAgIGFsZ29yaXRobT10bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBzaWduYXR1cmU9Q0VSVElGSUNBVEVf
VkVSSUZZX1NJR05BVFVSRSwKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcig0MDAp
CisgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZiwgdmVyaWZ5KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJp
biIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9maW5pc2hlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQorICAgICAgICBmaW5pc2hlZCA9
IHB1bGxfZmluaXNoZWQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBmaW5pc2hlZC52ZXJpZnlf
ZGF0YSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
ZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhm
NDA4ZWM2OCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3B1c2hf
ZmluaXNoZWQoc2VsZik6CisgICAgICAgIGZpbmlzaGVkID0gRmluaXNoZWQoCisgICAgICAgICAg
ICB2ZXJpZnlfZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImYxNTc5
MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZmOWFmMjY4ZjQwOGVj
NjgiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTI4
KQorICAgICAgICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgZmluaXNoZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkKKworCitjbGFzcyBW
ZXJpZnlDZXJ0aWZpY2F0ZVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0
aWZpY2F0ZV9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFNFUlZFUl9DRVJURklMRSwg
InJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZSA9IGxvYWRfcGVtX3g1MDlfY2Vy
dGlmaWNhdGVzKGZwLnJlYWQoKSlbMF0KKworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRs
cy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVy
bl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKworICAgICAgICAgICAgIyBm
YWlsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRp
ZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoY2VydGlm
aWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgInVu
YWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIgorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAorICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2No
YWluX3NlbGZfc2lnbmVkKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1
cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVp
Yy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5y
ZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAg
ICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJzZWxmIHNpZ25lZCBjZXJ0
aWZpY2F0ZSIpCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZp
Y2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNl
cmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1j
ZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICkKKworICAgIEBwYXRjaCgiYWlvcXVpYy50bHMubGliLlg1MDlfU1RPUkVfbmV3
IikKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5faW50ZXJuYWxfZXJyb3Io
c2VsZiwgbW9ja19zdG9yZV9uZXcpOgorICAgICAgICBtb2NrX3N0b3JlX25ldy5yZXR1cm5fdmFs
dWUgPSB0bHMuZmZpLk5VTEwKKworICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2Vj
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRJbnRlcm5hbEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVz
KHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0
ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9u
KSwgIk9wZW5TU0wgY2FsbCB0byBYNTA5X3N0b3JlX25ldyBmYWlsZWQiKQorCisgICAgZGVmIHRl
c3RfdmVyaWZ5X2RhdGVzKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwg
Y3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNh
dGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgICMg
wqB0b28gZWFybHkKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSAoCisg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZSAtIGRhdGV0aW1lLnRp
bWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJlZCkgYXMgY206CisgICAgICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9
Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNt
LmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKworICAgICAgICAj
IHZhbGlkCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tf
dXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNh
dGUubm90X3ZhbGlkX2JlZm9yZQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRj
aCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2Nr
X3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIKKyAgICAg
ICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRh
LCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgdG9vIGxhdGUKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlv
cXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25v
dy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIgKyBkYXRldGltZS50
aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgc2Vjb25kcz0xCisgICAgICAgICAgICApCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJl
ZCkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAg
ICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVy
X25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIg
dmFsaWQiKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Qoc2VsZik6CisgICAgICAgIGNl
cnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorICAg
ICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNv
ZGluZy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0
aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFsaWQKKyAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAg
ICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIiwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0
cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAndGVzdC5leGFtcGxl
LmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIiwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkg
YXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25h
bWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJob3N0bmFtZSAnYWNt
ZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIKKyAgICAgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0X3dpdGhfc3ViamFsdG5hbWUoc2VsZik6CisgICAgICAg
IGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBh
bHRlcm5hdGl2ZV9uYW1lcz1bIiouZXhhbXBsZS5jb20iLCAiZXhhbXBsZS5jb20iXSwKKyAgICAg
ICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsCisgICAgICAgICAgICBjdXJ2ZT1lYy5T
RUNQMjU2UjEsCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNhdGUucHVibGlj
X2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgIHdpdGggcGF0Y2go
ImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191
dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAg
ICAgICAgICAjIHZhbGlkCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9u
YW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0
aWZpY2F0ZSwgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgaW52YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZp
Y2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNt
LmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICdhY21lLmNvbScgZG9lc24n
dCBtYXRjaCBlaXRoZXIgb2YgJyouZXhhbXBsZS5jb20nLCAnZXhhbXBsZS5jb20nIiwKKyAgICAg
ICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUu
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3NmFjZDdjOQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTUzOAp6Y21kO1BWRXhDeSExe31VXntZVj4+cW1ub21kRkxuT3BIdVNvRDhSUjgp
aW1qMkVgY2d2VDxzKWQ5OzEhV258PUwKeldpYXFIPFRsYEJWLTk2dTZLMEJ0RyptTkMwZGNyXldD
SlFvR1Y9MmpnN2VjIyRgZ3hINzJOVm1eSExIXkdKI153CnpqKXIwZUF8UTNsSmlQZyhNWV9wfXky
WXRRV3ZOOTVhXmsjKDc2dWtabVdDIXEjKWY4NTs9RCF7MklkQ2xQXzk4ZAp6cyYoUTlxOTl8fmRI
OT9ZaSVXNys2JiYrUUdLdnhfNDMhTk9BP31kRT9HOGdCMHxBSTVJQ0p1bzZMVHsxaSVTZmUKejcj
QVVYayYlXnd4cndvIzBWditaKVdxMXhGa2VJOC0wXipWTzBybXoqaEB4e0IrWE0rR2JZKGBUI24y
OWNpezd0CnpCZnQzfj94YncrS0R+TD5KZzFsSnYodF53P3RFYiorYS1NOXpHWnJpJippJVAmaXIx
anRod3peND5LKmN5TUJHQQp6TXh7aXRnbjQ8SCRDVjArPndEJDArYDhGNUduLUg0VUokJU4+MV9Y
WVgweWZEbUNJKyZfajxaXk9XKGQ0dHJnNDkKekttQi1vd2UqZVlIeGo+cG9CSnI1YiVwUWo4Rk1j
JWR8UmV9ZDdEXzReQEotZig9PmhAUGVeJWdebjFzVm88fSpsCnpYfFo+RVVjRW9qYjlxO0Q/PUZ2
cFE3KXp2Q2QtO093QU9QZ3RAJmFoeCRyVWpna15ibCVSO1MleU1GTVdVNj1Kcgp6Q1lvUkEpU0tz
PSkoKSk2eVhSbE9jMmFaeFMybX19OShSVClOMmhhfTFFVSlGY1JtIW9AQGdyNnczfU1YSlZPZ1AK
ejEofH1jYHdYfipqenFyeXg0QnJAJFNTfCppckZidyF5bCNAU0VGWCRfKmdib0A9REBYRUI3eGFK
ezMoYERFe0RFCno+WVome1M+TFhEK2c1czVKQDkkJV80NFE2MT5WXj16Z1EreyhsITV0NSRDXiZg
XyNVXnBZJnNXPmVNVCQ3dnkpYQp6OS1QTHNAWkwxcHVBUlAyJSF+fC1pPD1rXjBBcGtpSTEkTVR2
aFcma0h6Q0MjQTIzI0JgNTc3aXYjPkJUdWBWIT4KejFAVG9gS3h2TGNufmpsYG03U1JwJlNFbSkw
Wjl2a2xydEdIS29zK19oX1EoRHptazF5OUsjXkN4alIyUXxGWH5OCnp0KjJ7MzRRZkcobTA4TFJO
KllBJj9tdTx3KityOUc9QjB8S0BASHtxZEB8a1V1YHFDbktiMTJANkZtMXQ4I0ZlPAp6OUx+dGRR
Zl5SY1U8MmJERnRyKEVsI349JD5GYnhJN01DT14+SkAtPEFjJil2bXMkYzkpaTA8X1BFMVpNRCR4
VEgKejJCdlZgakJUMzQ9Kn58ckYzPmt7MV9ncFZpO2FQbWZ5RHh8MXR4N3EjT04oYkVkeXBWUHpq
KXlUJEY+SCVZWCQ1CnpGcWJ0bHNESkg9NiE+IU54ZHl9alVBQCk5JXBZWnojY3lUe1U4MXp9X05K
P0RkJXlHQ2I8VyNUblZQUTFxWlJ0agp6cHw1clJlRH5kNFRFNSMtTkBnc21Vdzd4RC1mZ0ZIaTNn
P0tZTmk+NzlwN2YzQ0A7Iy1uaVUoRyRARGlXPFY1KUMKejRYTW14a042b1pYUW5OZi03IzdHUUl1
fF9ZNWVyP2lYLWQ0Jld2a1llT1lqPSlGUiRySz58RGY/Vm8kal8tNU90CnpJYnVKcW0yITA1PTZi
cUNUZGFQfFBwJGNmRk9eP0VuPTFEdU5BN2p4JkpYTTJtJmwqLUk8bThCPDtgclA0Q3t4Zgp6OChP
d2NJSWB+RjdqdThiMV40RCNaRzN1MGozdiNVK3dxUSp0JUJXfj9OaFopISstNm8tKTZQemx6K3Mo
UWFnQEwKem90X1BgZE90ZV93MH1DZmBQKHBUU0hHTzlxOUx4Vlg2Vz4pJlRzT1E+V3ErNl5XOHFi
Kk04WmB2JGJXQFJhMjlPCnpRdGJ+RG0zTUczX1UrXmZ4JEBnMj0tKkEoNC1NQWE0KDJ5cWw+Y1BT
QHklYDdIMSRPOTIlez1LKn5wX1ZZdlpJVQp6alNwVTcpJVV1NSFeeEBGXztLPjd0TEBXZ2B8Z2xw
SHJYdzZpT0RgdmBIXnglTkFqVCRpO2BEI0djVylFVUxyfTQKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZjA4Mzk1MGI1MzhjMTIzZWI5ZWRjOGZjYmVkOTJlMTkzMjk1NzM1CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAzOTIKemNtVjszMGVBaW4wMEQjdTFPYjQ4ck91PTljT2QwQXZ2MyU5
QzI9bSU3PXIqIyE8YiZhPld7JUclfFdDT0BgclZhCnpsOzhHemVsQDVzJlZpWDc2eDs7flJXJjde
eiVBenUpZil6bEdDK0k2Tz9wY3MhfTxtKDNBWG0qYmhucVgoIS1HWgp6byE0fkJYUmAkWXpHUD1U
ZSZofD5UP2UjVDxJZFdobzVeMEBoZlh3RFU3OUJweUFSM0peP2FAQngzIUB+QkprTTUKekgxPUFE
JjEhRGZ4MnJ4Yz1mJl9qZCpmJTRsLVZsbUUyNkV4dkUqYWImcE5ONzE+bHlDP1hsO2xOTDx1V0Q2
fGUzCnpgRj5FNHZ1MkE5NUA3YSpkKkp8V0BtJkI3c0xublFyen5zKHQ7TGlQPDI9PTEkfX0yZExN
PTE4P28mM2IrPmI/dgp6MV5fRn4jbXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQqUGFKNzdUeFhkYXww
QmRsMzY+ajFDQzBhVE9iOzg4cVpDNSgKemFiSTNZS21FalpxSHxTMVZGWmJJQVl+S0heeyVZZW5g
VT9TJlgob1dtNUR8UU0jc2JIR0Z3XyRveTh7UTNfX0JYCm07e2A+ejg+UFNHOGpXVGAwISV5bjgm
SFd+dEhDJihaKCRFdHlVTVFBUTJ8QDhYVEFGWAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNDBhZWNmYzY5
ZmI4NGQ1YmVkNmIxYWFjOTE2MmVjMTNhMDQ2ODYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1
OAp6Y21aUSVWRUQoKEVVe15tXzIoenZ1fGE0NFJsVjYwfEl1Jmw7bWUtQ19CWiR6ZW9TM2dfV1l7
Q3Rhblh8RjE4JiEKelpNMGJQPUFDfkdVUSo2bzdkKWJaa0xeRG5kZUNUKmt0cVk0RnExSCZGZiRf
cSErSGl8MjZxTm0yNXw7UW1nO3x0CnpVRUU0ZFMpRyElJEclVEV8RXRMJU4+TXVGO19GYDdEU3Fr
ZWVvUWB8NzhPIV8hUlkqWXJSQkRaYG5JZShePzxTTgp6cUg2Zm9POEZUSlUtKmt8Vjk7alo8WH5w
MG0jTFNvbXR4PiQ7OX10NVV9MGZxVlBzK2l2Uk4zSWZWU3V8RmZsVXoKeVUmPihxcE1nUDshSHxL
S2Z1JXUhZnF7VnlPMHo/MDc2ejZecGZDZD8xQ3Z0KDB8eF8+TGtpRmdNbEp4JEkjR0g2CgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Ns
aWVudF9oZWxsb193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEzYTNlNzVlMTRkNmQ5MjkwZjVkYTQy
OWEzMjUwMmQ3YzRjMjZjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDYKemNtWlElVkFOd35l
ajZUPnpjK0dAQDJ9TXRuQ35vbWsjT2NWcExvOzNeLU5FektoPG49cEl5ZWx6IyteaSVwfWFyCnpA
U2wtXjtxVSpZNDVrZG00NkY8KzRKLUB7M35XJUU5Wkl0UlgjdD0oMkxtR2AxMUFITUxrYV5VUD43
K18wNE9OSQp6QWpaSFRvU2MoaW52I34yU2ReKztTZWx1dm16PHg9enxGd0klKXJSUnp5KlhINEJg
eTNLKCYkIyUwTjg9S3QzQzUKemhPd0BwQn1nfD1qKTglZkw1QEwmZ18pSV5qaFRhO2dNKSpVZ051
V2tnTjF7WWdOPW9lbTY0NStMN1JiQGlKNjUjCnptd15mQjN9WGcmMjNNZClOMHRzSiF4LW80NGQq
bTlQbCl8e14zdiV8JShtTkUqfFdiWFdpV1FVLWYoNEcoNmI0fgppLV5KUWlGYGhtP0Z8O2pEJjFi
JnhtI0JyPXl1U24lRExyMTZzUlJJKyhNTV9rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Y2OTVjM2E3YjM3YzI3MDE5YWZhNTFhNjA1MjVjYmJjMTA5NjZiOApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIjR21yQXV6Y3NxTkdF
aXtCe29KK1I2Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+OWx4WGAmWSQ7I3p4
R2VkOFV7OURDU2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlXS2R7VzlgUy1QfV9X
M1YqWTkwJTBzKExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5eDNBCnopJShsLVVI
T3xHKW1YTmNMN1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/XjZnK00+KEEjS18z
Tgp6eiN6alEjbFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERUNjd7VTkxYyY0Rlcq
NVkqM21WTzB6SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9AXkhlRWV2KFBIczdo
T3syYUhgWnF8SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEzZUcpdEA1NXtrb1ZP
anBNZE1xaT1QRWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+QDNIbz50Kl4+UUNn
P1NIJVktVms/dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3RWhuJXp0V3JSR2F6
RVZsWHJpP154Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYkYT4jTnFNClN1R311
JXVDS2tSTCprVEZIWHtJQ0FGQGdTCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU2OGE4NjE2N2ZmMTYxODMxZjNlOTc5ZTc0NTAyYzMwM2UxNmE1ZQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjg2CnpjbVpRJVYzY0JKbz5BTHJCRXJxKGJTQmk1VUVZM3ZlZDA5Uj5KKm1PPXt+
KnQwP2stVnZLNz1lJmMxN0tgK0ZjYAp6bCRGPis+I0d4KD9tdG8zS0ooSmp2dkdudWVwUjFOVl8q
fHo1QHItO1dAS1BFJjB4Jm4mZnYtKiZmdihoT31GNEQKemB3NVk9c1RhT21jaDhoKCtzOyFpWTlH
PWZ1eUVwfmpuaCpXeSpaR094fUBSIyU3LTYkZFkzJm56cTxjYF92NyF5CnprR09iZCkoMzcpNV44
V0AmfVFKfFV9bVk4c2g2Jm9WJkctcVYmTEZsVlBSJXJXTVR4ZVNzMGpydyYqZjJGI0BlKwp6a1lF
c0ZVPVU4dSR1Q1Z3JVNrTHMpaCNUfE94OD16Jjs3clkhVGRpMWdDSyg7MTFrZWRnOCkhMTg8Yns7
KGt1KXQKWGpYK0ByTWd9SVEybkclWUNXalFEYEhXbHUxfENyVAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5z
aW9ucy5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3Mzk3NTUzZWE2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MAp6Y21kO0pVPGhMZmBNO0RROzZEUntBUGIwS2FBamEr
VX0rRndVfD9XXygoRiowZ0BMNkpEOXBnZnp+bUljentDSmoKUWc5PG5wbT5nMFZ4RUw2QDA0fVR1
KiNIMGwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDg0MzZhN2IzMzgzMDc3ZjRhMzlhZDMxOGE1OGIyOGUzYmQzNTcyCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwxLTg2cHxOOFEyKEQ4
V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUzKjErNCNuRj5vXzVO
LXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5dlFWMVFSCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlf
ZGF0YS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5MDY5ZjZiZTNkMmU0NTdlNjNjOTQyZmM5ZjA1NGNkYmFj
NGE5MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE2CnpjbWQ7SlU/XmI3ViptakcxYFktYCl7
SGAzQkxmQzQyOFJEajhOd0pzNz8+Q1ljdXhsYGFTQWs9eCtRKH5kWTAzMQp6fE5uT31hR3FISVRx
fTlIWTZ2PzY4dnshTiF+ZyQ0JjVTQE1raStgXzdYdkYpa2VQd1d7UnNtWDEweXA3QkxoPnEKSzAw
VER6cWEqLW9fOFo2bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Zp
bmlzaGVkLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0YWI3OTRmMzllZjc3
NmZkNWZhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNgp1Y21WKzwwTmVpKjAwMUVJU0NUUmB8
QyZpNXNAcENPJEZaWGkmVTU+b3p7RHFTbih9RCQyPCZKYU5ELVI9CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3Rp
Y2tldC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQzOWI0NzMxZTA0YjNiNmQ2ZDNhNjE1ZmMzM2RlNWRmNzQ2Y2Y1YgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkmfENmZ1RuMStBRDM1RTlC
fDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZFR1JPMER3anFKXiVtIQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Mzc5Mjg5MGFjZTc1MTNjZmI1YWExOGEzNzNhOTQ5ZjQxZGI4Y2Nm
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NAp6Y21aUSFWNmI2ZTN+Vl5eWSZ8Q2ZnVG4xK0FE
MzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUViQ1lAPHkKVDtBaFpjVkVHUk8yOV54V1k1
RG04RjtmfSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGE2YzUxZmU1NjAyOTUxM2I4MzhjNmQyNDMxOWNl
NWM4ZmZkYmY0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTUKemNtVjtNMEEmOUgwMDVUKjFG
ZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ayc0VBSTJmRlBSZ2Z9K3VlCnohT0pxRURj
UmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMihfRCp5cm0xT1BKdE1GMUI3Sz9JOEAmP3E4
OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFsaUNvR1lQJkBFOWlwRzxDSEF4Wj9afVRN
KENjTDRRamVqX0UKSjdSV20wJiQxTipLe0B+YwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlY2NkZjU5YWI5NWU4OWU0MDRjZTIzNGRiM2Y4MWQxOGRlMWUwZWIKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3QjAwNWw+MUkpVXcxcEZKLTZndz0meHBnNFZI
YHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQKel52PU8+aE9tVHwwbDtHPlYkRjY9ZnshbldG
SEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdLP0hAQCZkY2xrCnpSRkI0Mnpmcmo4K0pxYFZS
PFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NTdlkhQTV7bmk9YyYqNGw3bi1kQgpQKGBATm9W
cy0jMjAwSUMyNkkoO2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlNWI3MDczZmRiZTNjYjdiZmZiNzE4YjE0NmRlMjUxMDgz
YmVkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYyCnpjbVY7VDBBMnFBMDA1bz8xRmZpMWFu
WTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6IU9KcUVEY1JpcTA3
QER8aXFKP31RXnZvflJsemMlR0JwemQwMDM0MUQqeXJtMU9QSnRNRjFCN0s/SThAJj9xODgKeipo
XyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hBeFo/Wn1UTShDY0w0
UWplal9FClE3UldtMCYkMkslMDBVLWtafFJkbF95N09eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiYWIyYjY4YTI0OGZiYzUzNDBmMjNlMmE3OTc2
NzA1MGE1ZjVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5w
eQpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gY3J5cHRvZ3JhcGh5IGlt
cG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0IGRlZmF1
bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhh
c2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBv
cnQgZWMKKworCitkZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9uX25hbWUsIGN1cnZl
PWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgorICAgIGtleSA9IGVjLmdlbmVy
YXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1cnZlPWN1cnZlKQor
CisgICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKKyAgICAgICAgW3g1MDkuTmFtZUF0
dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1lKV0KKyAgICApCisK
KyAgICBidWlsZGVyID0gKAorICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVpbGRlcigpCisgICAg
ICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgLmlzc3Vlcl9uYW1lKGlzc3VlcikK
KyAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKKyAgICAgICAgLnNlcmlhbF9u
dW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAgICAubm90X3ZhbGlkX2Jl
Zm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKKyAgICAgICAgLm5vdF92YWxpZF9hZnRl
cihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVkZWx0YShkYXlzPTEw
KSkKKyAgICApCisgICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6CisgICAgICAgIGJ1aWxkZXIgPSBi
dWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAgICB4NTA5LlN1YmplY3RBbHRlcm5hdGl2
ZU5hbWUoCisgICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBmb3IgbmFtZSBpbiBh
bHRlcm5hdGl2ZV9uYW1lc10KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBjcml0aWNhbD1G
YWxzZSwKKyAgICAgICAgKQorICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5LCBoYXNoZXMuU0hB
MjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQorICAgIHJldHVybiBjZXJ0LCBrZXkKKworCitkZWYg
bG9hZChuYW1lKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksIG5hbWUpCisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICBy
ZXR1cm4gZnAucmVhZCgpCisKKworZGVmIHJ1bihjb3JvKToKKyAgICByZXR1cm4gYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQorCisKK1NFUlZFUl9DQUNF
UlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJweWNhY2Vy
dC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFX1dJVEhfQ0hBSU4gPSBv
cy5wYXRoLmpvaW4oCisgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtIgorKQorU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKK1NLSVBfVEVTVFMgPSBmcm96ZW5zZXQo
b3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxpdCgiLCIpKQorCitp
ZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgorICAgIGxvZ2dpbmcuYmFzaWNDb25m
aWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKKworaWYgKAorICAgIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMworICAgIGFuZCBzeXMudmVy
c2lvbl9pbmZvLm1pbm9yID09IDgKKyk6CisgICAgIyBQeXRob24gMy44IHVzZXMgUHJvYWN0b3JF
dmVudExvb3AgYnkgZGVmYXVsdCwKKyAgICAjIHdoaWNoIGJyZWFrcyBVRFAgLyBJUHY2IHN1cHBv
cnQsIHNlZToKKyAgICAjCisgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM5MTQ4
CisKKyAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lvLldpbmRvd3NTZWxl
Y3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3Rp
YXRpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTA5YzkwOTljZWE4YWVlMjhkZWZmYjU1MDYyZDM5M2Qx
YzNiYTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxCmxjbWFGRzAwYlBmKTxrKmtZRzJ7V0Bs
KVR+P0FLSzNnfDY9SVYqZVEhQm11SUozaitXRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGYxM2UxYjJjMzc1M2UyODY5M2Zh
ZTIzODI1MmFmNjdhNzg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSw1NyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfY2xpZW50LmJpbgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvcHljYWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0
LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5j
aW8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9oMC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF90bHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlLmJpbgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50
X2hlbGxvX3dpdGhfYWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
b193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRo
X3NuaS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9h
bHBuX2FuZF9lYXJseV9kYXRhLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQu
YmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXQuYmluCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsby5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy92ZXJzaW9uX25l
Z290aWF0aW9uLmJpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNGVjOTVjOWExNjE2N2Nj
M2VjMGMzMTczNTMyYzU0MDBjMTE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL0xJ
Q0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJz
dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L0NPTlRSSUJVVElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc1YmUxMjZmYjQ1ODljODY1OTk0YzU5ZDYxM2Uz
ZDQxYTdhOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVU
SU5HCkBAIC0wLDAgKzEsMzAgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKworV2UnZCBsb3ZlIHRv
IGFjY2VwdCB5b3VyIHBhdGNoZXMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0LiBU
aGVyZSBhcmUKK2p1c3QgYSBmZXcgc21hbGwgZ3VpZGVsaW5lcyB5b3UgbmVlZCB0byBmb2xsb3cu
CisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50CisKK0NvbnRyaWJ1dGlvbnMgdG8g
dGhpcyBwcm9qZWN0IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBDb250cmlidXRvciBMaWNlbnNl
CitBZ3JlZW1lbnQuIFlvdSAob3IgeW91ciBlbXBsb3llcikgcmV0YWluIHRoZSBjb3B5cmlnaHQg
dG8geW91ciBjb250cmlidXRpb247Cit0aGlzIHNpbXBseSBnaXZlcyB1cyBwZXJtaXNzaW9uIHRv
IHVzZSBhbmQgcmVkaXN0cmlidXRlIHlvdXIgY29udHJpYnV0aW9ucyBhcworcGFydCBvZiB0aGUg
cHJvamVjdC4gSGVhZCBvdmVyIHRvIDxodHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5jb20v
PiB0byBzZWUKK3lvdXIgY3VycmVudCBhZ3JlZW1lbnRzIG9uIGZpbGUgb3IgdG8gc2lnbiBhIG5l
dyBvbmUuCisKK1lvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1pdCBhIENMQSBvbmNlLCBz
byBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCisoZXZlbiBpZiBpdCB3YXMgZm9yIGEg
ZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBkbyBpdAorYWdh
aW4uCisKKyMjIENvZGUgcmV2aWV3cworCitBbGwgc3VibWlzc2lvbnMsIGluY2x1ZGluZyBzdWJt
aXNzaW9ucyBieSBwcm9qZWN0IG1lbWJlcnMsIHJlcXVpcmUgcmV2aWV3LiBXZQordXNlIEdpdEh1
YiBwdWxsIHJlcXVlc3RzIGZvciB0aGlzIHB1cnBvc2UuIENvbnN1bHQKK1tHaXRIdWIgSGVscF0o
aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvYWJvdXQtcHVsbC1yZXF1ZXN0cy8pIGZv
ciBtb3JlCitpbmZvcm1hdGlvbiBvbiB1c2luZyBwdWxsIHJlcXVlc3RzLgorRm9yIGluc3RydWN0
aW9ucyBmb3IgY29udHJpYnV0aW5nIGNvZGUsIHBsZWFzZSByZWFkOgoraHR0cHM6Ly9naXRodWIu
Y29tL2dvb2dsZS9weXdlYnNvY2tldC93aWtpL0NvZGVSZXZpZXdJbnN0cnVjdGlvbgorCisjIyBD
b21tdW5pdHkgR3VpZGVsaW5lcworCitUaGlzIHByb2plY3QgZm9sbG93cworW0dvb2dsZSdzIE9w
ZW4gU291cmNlIENvbW11bml0eSBHdWlkZWxpbmVzXShodHRwczovL29wZW5zb3VyY2UuZ29vZ2xl
L2NvbmR1Y3QvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWJlYTkwMjU0Mjg3NzllMTY0NDU5
YzJhMTIwZTFhMDdhYTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9M
SUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24u
CisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZF
U1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5NzllNjNlNGEw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCkBAIC0w
LDAgKzEsNiBAQAoraW5jbHVkZSBDT1BZSU5HCitpbmNsdWRlIE1BTklGRVNULmluCitpbmNsdWRl
IFJFQURNRQorcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5CityZWN1cnNpdmUtaW5jbHVk
ZSBtb2RfcHl3ZWJzb2NrZXQgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9S
RUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3Y2JlNTUwYzA2NTc4MmIwZTMxNWRlMDQ2NTFjOWUwNjhj
YjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZApAQCAt
MCwwICsxLDM2IEBACisKKyMgcHl3ZWJzb2NrZXQzICMKKworVGhlIHB5d2Vic29ja2V0IHByb2pl
Y3QgYWltcyB0byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUpIHN0YW5kYWxvbmUgc2VydmVyLgorCitweXdlYnNvY2tldCBpcyBpbnRlbmRl
ZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBlcmltZW50YWwqKiBwdXJwb3Nlcy4KKworUnVuIHRo
aXMgdG8gcmVhZCB0aGUgZ2VuZXJhbCBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJz
b2NrZXQKK2BgYAorCitQbGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBmb3IgbW9yZSBkZXRh
aWxzLgorCisjIElOU1RBTEwgIworCitUbyBpbnN0YWxsIHRoaXMgcGFja2FnZSB0byB0aGUgc3lz
dGVtLCBydW4gdGhpczoKK2BgYAorJCBweXRob24gc2V0dXAucHkgYnVpbGQKKyQgc3VkbyBweXRo
b24gc2V0dXAucHkgaW5zdGFsbAorYGBgCisKK1RvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6CisKK2BgYAorJCBweXRob24gc2V0dXAucHkg
YnVpbGQKKyQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCitgYGAKKyMgTEFVTkNIICMK
KworVG8gdXNlIHB5d2Vic29ja2V0IGFzIHN0YW5kYWxvbmUgc2VydmVyLCBydW4gdGhpcyB0byBy
ZWFkIHRoZSBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3RhbmRhbG9u
ZQorYGBgCisjIERpc2NsYWltZXIgIworVGhpcyBpcyBub3QgYW4gb2ZmaWNpYWxseSBzdXBwb3J0
ZWQgR29vZ2xlIHByb2R1Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
YWJvcnRfaGFuZHNoYWtlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRf
aGFuZHNoYWtlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjcxOWNhODk3MzcxMDU3MTljNzFjMmE0MmVh
ZmYwZDQ2NDQ3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbigKKyAgICAgICAgIkFib3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ui
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNGMyNDBiZjJjMWNiMGJkNTM4ZWMzN2JmNTUxYzExMjU2Mzk2YjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkK
QEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAiQWJvcnRlZCBpbiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODY5Y2Q3ZTFlZTY1M2Q1OWYwNGI4MDJmZjM0YzhkMDgxMzE3Y2E4OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVu
Y2htYXJrLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitk
aXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIFBSSU5U
X1NJWkUgPSB0cnVlOworCisvLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgordmFyIFNUQVJUX1NJ
WkUgPSAxMCAqIDEwMjQ7CisvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBh
cnJheSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgordmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAw
ICogMTAyNDsKKy8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3Jl
YWQgdGhlIGFycmF5IG11bHRpcGxlIHRpbWVzCisvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJl
YWNoZXMgdGhpcyB0aHJlc2hvbGQuCit2YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKK3Zh
ciBNVUxUSVBMSUVSUyA9IFs1LCAyXTsKKworLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJh
bCB0aW1lcyB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAorLy8gKHN1Y2ggYXMg
SklUKSBydW4uCit2YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOworCitmdW5jdGlvbiB3cml0ZUJl
bmNobWFyayhzaXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUg
KHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKHNpemUpOworCisgICAgLy8gV3JpdGUgJ2Ency4KKyAgICBmaWxsQXJyYXlCdWZmZXIo
YXJyYXlCdWZmZXIsIDB4NjEpOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0
dXJuIHRvdGFsU2l6ZTsKK30KKworZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3Rh
bCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFs
KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAg
aWYgKCF2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKKyAgICAgIHF1ZXVl
TG9nKCdWZXJpZmljYXRpb24gZmFpbGVkJyk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg
ICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworZnVu
Y3Rpb24gcnVuQmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKKyAgICAgICAg
ICAgICAgICAgICAgICBtaW5Ub3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVy
cywKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKKyAgd2hpbGUgKHNp
emUgPD0gc3RvcFRocmVzaG9sZCkgeworICAgIHZhciBtYXhTcGVlZCA9IDA7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKKyAgICAgIHZhciBzdGFy
dFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5j
aG1hcmtGdW5jdGlvbihzaXplLCBtaW5Ub3RhbCk7CisKKyAgICAgIG1heFNwZWVkID0gTWF0aC5t
YXgobWF4U3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5L
Qih0b3RhbFNpemUsIHN0YXJ0VGltZUluTXMpKTsKKyAgICB9CisgICAgcXVldWVMb2coZm9ybWF0
UmVzdWx0SW5LaUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKKworICAgIHNpemUgKj0g
bXVsdGlwbGllcnNbbXVsdGlwbGllckluZGV4XTsKKyAgICBtdWx0aXBsaWVySW5kZXggPSAobXVs
dGlwbGllckluZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7CisgIH0KK30KKworZnVuY3Rp
b24gcnVuQmVuY2htYXJrcygpIHsKKyAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNw
ZWVkIGluIGtCL3MnKTsKKworICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7CisgIHJ1bkJl
bmNobWFyaygKKyAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9M
RCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwor
CisgIHF1ZXVlTG9nKCdSZWFkIGJlbmNobWFyaycpOworICBydW5CZW5jaG1hcmsoCisgICAgICBy
ZWFkQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxU
SVBMSUVSUywgMCk7CisgIGFkZFRvTG9nKCdGaW5pc2hlZCcpOworfQorCitmdW5jdGlvbiBpbml0
KCkgeworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisKKyAgcXVl
dWVMb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisKKyAgYWRk
VG9Mb2coJ1N0YXJ0ZWQuLi4nKTsKKworICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzx0ZXh0YXJl
YQorICAgIGlkPSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5Pjwv
dGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hf
d3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkZjUwZTc3ZGIyNzZjY2ExZGU0NzIwNTlhMDc0MDcxYjgxYTkz
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dz
aC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkEgc2ltcGxlIGxvYWQg
dGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KKworQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBh
IG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCit0aGlz
IGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNv
Y2tldCBtZXNzYWdlcworY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMu
IDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAordmFsdWUuIDxjb3VudD4gbXVzdCBiZSBh
biBpbnRlZ2VyIHZhbHVlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgdGltZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3
YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgIHBhcnRz
ID0gbGluZS5zcGxpdCgnICcpCisgICAgaWYgbGVuKHBhcnRzKSAhPSAzOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdCYWQgcGFyYW1ldGVyIGZvcm1hdCcpCisgICAgd2FpdCA9IGZsb2F0KHBh
cnRzWzBdKQorICAgIGNvdW50ID0gaW50KHBhcnRzWzFdKQorICAgIG1lc3NhZ2UgPSBwYXJ0c1sy
XQorICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKKyAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxZTVjOTdiM2E3MWJjZjllYmRlN2M0ZmNhZjE1Mzc1Mzg5YjFjNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCkBA
IC0wLDAgKzEsMTc1IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgor
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0Eg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgYmVuY2htYXJrPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGFk
ZHJlc3NCb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRDb25maWcoKSB7CisgIHJldHVybiB7Cisg
ICAgcHJlZml4VXJsOiBhZGRyZXNzQm94LnZhbHVlLAorICAgIHByaW50U2l6ZTogZ2V0Qm9vbEZy
b21DaGVja0JveCgncHJpbnRzaXplJyksCisgICAgbnVtU29ja2V0czogZ2V0SW50RnJvbUlucHV0
KCdudW1zb2NrZXRzJyksCisgICAgLy8gSW5pdGlhbCBzaXplIG9mIG1lc3NhZ2VzLgorICAgIG51
bUl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtaXRlcmF0aW9ucycpLAorICAgIG51bVdh
cm1VcEl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtd2FybXVwaXRlcmF0aW9ucycpLAor
ICAgIHN0YXJ0U2l6ZTogZ2V0SW50RnJvbUlucHV0KCdzdGFydHNpemUnKSwKKyAgICAvLyBTdG9w
cyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBtZXNzYWdlIGV4Y2VlZHMgdGhpcyB0aHJlc2hv
bGQuCisgICAgc3RvcFRocmVzaG9sZDogZ2V0SW50RnJvbUlucHV0KCdzdG9wdGhyZXNob2xkJyks
CisgICAgLy8gSWYgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlIGlzIHNtYWxsLCBzZW5kL3JlY2Vp
dmUgbXVsdGlwbGUgbWVzc2FnZXMKKyAgICAvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNo
ZXMgdGhpcyB0aHJlc2hvbGQuCisgICAgbWluVG90YWw6IGdldEludEZyb21JbnB1dCgnbWludG90
YWwnKSwKKyAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGll
cnMnKSwKKyAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyks
CisgICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogYWRkVG9TdW1tYXJ5
LAorICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAorICAgIG5vdGlmeUFib3J0OiBub3Rp
ZnlBYm9ydAorICB9OworfQorCitmdW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7CisgIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ3NlbmRCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rpb24gb25SZWNlaXZl
QmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNv
bmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7
Cit9CisKK2Z1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7CisgIHZhciBjb25maWcgPSBnZXRD
b25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ2JhdGNoQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3RvcCgpIHsKKyAgdmFyIGNv
bmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tC
b3goJ3dvcmtlcicpLCAnc3RvcCcpOworfQorCitmdW5jdGlvbiBpbml0KCkgeworICBhZGRyZXNz
Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgbG9nQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisgIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOworCisgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRp
b24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZh
dWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtf
aGVscGVyJzsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7CisKKyAgYWRk
VG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisgIGFkZFRv
U3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKKworICBp
ZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBp
cyBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBpbml0V29ya2VyKCcnKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8ZGl2IGlkPSJiZW5jaG1hcmtf
ZGl2Ij4KKyAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgor
ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2ht
YXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0i
b25SZWNlaXZlQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0
Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+CisKKyAgPGJyLz4KKworICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9InBy
aW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+CisgIDxpbnB1
dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9
InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KKyAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0id29ya2VyIj4KKyAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJl
bD4KKworICA8YnIvPgorCisgIFBhcmFtZXRlcnM6CisKKyAgPGJyLz4KKworICA8dGFibGU+Cisg
ICAgPHRyPgorICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwvdHI+CisgICAg
PHRyPgorICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KKyAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwv
dHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8
L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYQorICAgICAgaWQ9ImxvZyIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2
PgorPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgorICBTdW1tYXJ5CisgIDx0ZXh0YXJlYQorICAgICAg
aWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4
dGFyZWE+Cis8L2Rpdj4KKworTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWluYXRlZC4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzAxNDcyYTRmYWFjNDQ2YjFjOGJkMjQ1NmYyNzFlOTM0ZGI1NzFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKQEAg
LTAsMCArMSwyMzggQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCitpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7CisgIC8v
IFJ1bm5pbmcgb24gYSB3b3JrZXIKKyAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dv
cmtlci5qcycpOworfQorCisvLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KK3ZhciBi
ZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07CisKK3ZhciBzb2NrZXRzID0gW107Cit2YXIg
bnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKwordmFyIHRpbWVySUQgPSBudWxsOworCitmdW5j
dGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgeworICBzb2NrZXQub25vcGVuID0gbnVsbDsKKyAg
c29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7CisgIHNvY2tldC5vbmVycm9yID0gbnVsbDsKKyAgc29j
a2V0Lm9uY2xvc2UgPSBudWxsOworICBzb2NrZXQuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gZGVz
dHJveUFsbFNvY2tldHMoKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7
ICsraSkgeworICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7CisgIH0KKyAgc29ja2V0cyA9
IFtdOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2Fy
bVVwKSB7CisgIHRpbWVySUQgPSBudWxsOworCisgIHZhciB0b3RhbFNpemUgPSAwOworICB2YXIg
dG90YWxSZXBsaWVkID0gMDsKKworICB2YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBldmVudC5kYXRh
LCBzaXplKSkgeworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFsUmVwbGllZCArPSBz
aXplOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2FybVVwKTsKKworICAg
IHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2Nr
ZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07CisgICAgc29j
a2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICB2YXIgZGF0YUFycmF5
ID0gW107CisKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHZh
ciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBmaWxsQXJyYXlCdWZmZXIo
YnVmZmVyLCAweDYxKTsKKworICAgIGRhdGFBcnJheS5wdXNoKGJ1ZmZlcik7CisgICAgdG90YWxT
aXplICs9IHNpemU7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHRvdGFsU2l6ZSA9IDA7CisKKyAgdmFyIHNvY2tldEluZGV4ID0gMDsKKyAg
dmFyIGRhdGFJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwp
IHsKKyAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOworICAgIGNvbW1hbmQucHVzaChjb25maWcu
dmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChj
b21tYW5kLmpvaW4oJyAnKSk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChkYXRhQXJy
YXlbZGF0YUluZGV4XSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNv
Y2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgICAgKytkYXRhSW5kZXg7
CisgIH0KK30KKworZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBp
c1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxTaXplID0gMDsKKyAg
dmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5ieXRlTGVuZ3Ro
OworICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKKyAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCisgICAgICAgICAgYnl0
ZXNSZWNlaXZlZCArICdCJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29u
ZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbmZp
Zy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVudC5kYXRhLCAweDYxKSkgewor
ICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmljYXRpb24gZmFpbGVkJyk7Cisg
ICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7
CisKKyAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJr
LnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKKyAgICAgICAgaXNXYXJtVXApOworCisgICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKKyAgfTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMu
bGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKKyAgICBzb2NrZXQu
YmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7CisgICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVz
c2FnZUhhbmRsZXI7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBj
b25maWcubWluVG90YWwpIHsKKyAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKCdyZWNlaXZl
ICcgKyBzaXplKTsKKyAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0
cy5sZW5ndGg7CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorfQorCitmdW5jdGlvbiBj
cmVhdGVTb2NrZXQoY29uZmlnKSB7CisgIC8vIFRPRE8odHlvc2hpbm8pOiBBZGQgVENQIHdhcm0g
dXAuCisgIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOworCisgIGNvbmZpZy5hZGRUb0xvZygn
Q29ubmVjdCAnICsgdXJsKTsKKworICB2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
ICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBjb25maWcuYWRkVG9M
b2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRpbmcuJyk7CisgIH07CisgIHNv
Y2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdFcnJvcicp
OworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgY29uZmln
LmFkZFRvTG9nKCdDbG9zZWQnKTsKKyAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgfTsKKyAg
cmV0dXJuIHNvY2tldDsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7Cisg
IGNsZWFyVGltZW91dCh0aW1lcklEKTsKKyAgZGVzdHJveUFsbFNvY2tldHMoKTsKKworICBudW1F
c3RhYmxpc2hlZFNvY2tldHMgPSAwOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVNvY2tldHM7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQoY29uZmlnKTsK
KyAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICBjb25maWcuYWRkVG9Mb2co
J09wZW5lZCcpOworCisgICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKKworICAgICAgaWYg
KG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgeworICAgICAgICBydW5O
ZXh0VGFzayhjb25maWcpOworICAgICAgfQorICAgIH07CisgICAgc29ja2V0cy5wdXNoKHNvY2tl
dCk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgeworICByZXR1
cm4gJyhXZWJTb2NrZXQnICsKKyAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAi
dW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCisgICAgJywgbnVtU29ja2V0cz0nICsg
Y29uZmlnLm51bVNvY2tldHMgKworICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1J
dGVyYXRpb25zICsKKyAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCisg
ICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCisgICAgJywgbnVtV2FybVVwSXRl
cmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKworICAgICcpJzsKK30KKwor
ZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnQmF0
Y2ggYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIGFk
ZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRp
bmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKworICAgICAgZ2V0Q29uZmlnU3Ry
aW5nKGNvbmZpZykpOworICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiBj
bGVhbnVwKCkgeworICBkZXN0cm95QWxsU29ja2V0cygpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxNzUz
MzMzNTRjYzljODg1NjJjZjZmYzgxZWYzMjYwOTM3Mjk4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKQEAgLTAsMCAr
MSw4NCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4i
IiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4CisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCisgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBkYXRh
ID0gYicnCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjb21tYW5kID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgY29tbWFuZCBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWFuZCwgc2l4
LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1h
bmQgZGF0YTonICsgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZHMgPSBjb21tYW5kLnNwbGl0KCcg
JykKKyAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6ICcgKyBjb21tYW5kKQorCisgICAgICAgIGlm
IGNvbW1hbmRzWzBdID09ICdyZWNlaXZlJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsgY29t
bWFuZCkKKyAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0pCisKKyAgICAgICAgICAg
ICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSBz
aXplOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiJ2EnICogc2l6ZQorICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQorICAgICAgICBl
bGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWNlaXZlIGNvbW1hbmQnICsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKKyAgICAgICAgICAgIHZlcmlmeV9kYXRhID0g
Y29tbWFuZHNbMV0gPT0gJzEnCisKKyAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LndzX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgbm90IHJlY2VpdmVkJykKKyAgICAg
ICAgICAgIHNpemUgPSBsZW4oZGF0YSkKKworICAgICAgICAgICAgaWYgdmVyaWZ5X2RhdGE6Cisg
ICAgICAgICAgICAgICAgaWYgZGF0YSAhPSBiJ2EnICogc2l6ZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmljYXRpb24gZmFpbGVkJykKKworICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHN0cihzaXplKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZDog
JyArIGNvbW1hbmRzWzBdKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjAwMDVmZmVhOTkwNWQ2YzE5N2MwZjRk
ZDU5M2MwNmZmNDM3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw3MCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc3RydWN0CisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5lLnNwbGl0KCcgJywgMSkKKyAgICAgICAgaWYg
Y29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oaW50KGNvZGUpLCByZWFzb24p
CisgICAgICAgICMgY2xvc2VfY29ubmVjdGlvbigpIGluaXRpYXRlcyBjbG9zaW5nIGhhbmRzaGFr
ZS4gSXQgdmFsaWRhdGVzIGNvZGUKKyAgICAgICAgIyBhbmQgcmVhc29uLiBJZiB5b3Ugd2FudCB0
byBzZW5kIGEgYnJva2VuIGNsb3NlIGZyYW1lIGZvciBhIHRlc3QsCisgICAgICAgICMgZm9sbG93
aW5nIGNvZGUgd2lsbCBiZSB1c2VmdWwuCisgICAgICAgICMgPiBkYXRhID0gc3RydWN0LnBhY2so
JyFIJywgaW50KGNvZGUpKSArIHJlYXNvbi5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgIyA+IHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2Nsb3NlX2ZyYW1lKGRhdGEpKQor
ICAgICAgICAjID4gIyBTdXBwcmVzcyB0byByZS1yZXNwb25kIGNsaWVudCByZXNwb25kaW5nIGNs
b3NlIGZyYW1lLgorICAgICAgICAjID4gcmFpc2UgRXhjZXB0aW9uKCJjdXN0b21pemVkIHNlcnZl
ciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UiKQorCisKK2RlZiB3ZWJfc29ja2V0X3Bhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBTaW1wbHkgZWNobyBhIGNsb3Nl
IHN0YXR1cyBjb2RlCisgICAgY29kZSwgcmVhc29uID0gcmVxdWVzdC53c19jbG9zZV9jb2RlLCBy
ZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisgICAgIyBweXdlYnNvY2tldCBzZXRzIHBzZXVkbyBj
b2RlIGZvciByZWNlaXZpbmcgYW4gZW1wdHkgYm9keSBjbG9zZSBmcmFtZS4KKyAgICBpZiBjb2Rl
ID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEOgorICAgICAgICBjb2RlID0gTm9u
ZQorICAgICAgICByZWFzb24gPSAnJworICAgIHJldHVybiBjb2RlLCByZWFzb24KKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29u
c29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4MzQxMWRkZDBiMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCkBAIC0wLDAg
KzEsMzE3IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMg
cmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCEtLQorQSBzaW1w
bGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2NrZXQgc2VydmVyLgorCitUeXBlIGFuIGFkZHJl
c3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5kIGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNo
CitXZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBtZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0
IGlucHV0IGFuZCBjbGljayBzZW5kCit0byBzZW5kIHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50
IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRlIHdpbGwgYmUgc2hvd24KK29uIHRoZSBtaWRk
bGUgdGV4dGFyZWEuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgY29u
c29sZTwvdGl0bGU+Cis8c2NyaXB0PgordmFyIHNvY2tldCA9IG51bGw7CisKK3ZhciBzaG93VGlt
ZVN0YW1wID0gZmFsc2U7CisKK3ZhciBhZGRyZXNzQm94ID0gbnVsbDsKK3ZhciBwcm90b2NvbHNC
b3ggPSBudWxsOwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgbWVzc2FnZUJveCA9IG51bGw7Cit2
YXIgZmlsZUJveCA9IG51bGw7Cit2YXIgY29kZUJveCA9IG51bGw7Cit2YXIgcmVhc29uQm94ID0g
bnVsbDsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICByZXR1cm4gbmV3IERhdGUoKS5n
ZXRUaW1lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBpZiAoc2hvd1RpbWVT
dGFtcCkgeworICAgIGxvZ0JveC52YWx1ZSArPSAnWycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7
CisgIH0KKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdcbicKKyAgLy8gTGFyZ2UgZW5vdWdoIHRv
IGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3NhZ2UuCisgIGxvZ0JveC5zY3JvbGxUb3AgPSAx
MDAwMDAwOworfQorCitmdW5jdGlvbiBzZXRiaW5hcnl0eXBlKGJpbmFyeVR5cGUpIHsKKyAgaWYg
KCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsK
KyAgfQorCisgIHNvY2tldC5iaW5hcnlUeXBlID0gYmluYXJ5VHlwZTsKKyAgYWRkVG9Mb2coJ1Nl
dCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBlKTsKK30KKworZnVuY3Rpb24gc2VuZCgpIHsK
KyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJl
dHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKG1lc3NhZ2VCb3gudmFsdWUpOworICBhZGRUb0xv
ZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7CisgIG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKK30K
KworZnVuY3Rpb24gc2VuZGZpbGUoKSB7CisgIGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2co
J05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgZmlsZXMgPSBmaWxl
Qm94LmZpbGVzOworCisgIGlmIChmaWxlcy5sZW5ndGggPT0gMCkgeworICAgIGFkZFRvTG9nKCdG
aWxlIG5vdCBzZWxlY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKGZp
bGVzWzBdKTsKKyAgYWRkVG9Mb2coJz4gU2VuZCAnICsgZmlsZXNbMF0ubmFtZSk7Cit9CisKK2Z1
bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc1RleHQpIHsKKyAgdmFyIHByb3RvY29scyA9
IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2Nv
bHMubGVuZ3RoOyArK2kpIHsKKyAgICBwcm90b2NvbHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgp
OworICB9CisKKyAgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMCkgeworICAgIC8vIERvbid0IHBh
c3MuCisgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgfSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3Ro
ID09IDEpIHsKKyAgICBpZiAocHJvdG9jb2xzWzBdLmxlbmd0aCA9PSAwKSB7CisgICAgICAvLyBE
b24ndCBwYXNzLgorICAgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgICB9IGVsc2UgeworICAgICAg
Ly8gUGFzcyBhcyBhIHN0cmluZy4KKyAgICAgIHByb3RvY29scyA9IHByb3RvY29sc1swXTsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitmdW5jdGlvbiBjb25uZWN0KCkg
eworICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1ZTsKKyAgdmFyIHByb3RvY29scyA9IHBhcnNl
UHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7CisKKyAgaWYgKCdXZWJTb2NrZXQnIGluIHdp
bmRvdykgeworICAgIGlmIChwcm90b2NvbHMpIHsKKyAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2Nr
ZXQodXJsLCBwcm90b2NvbHMpOworICAgIH0gZWxzZSB7CisgICAgICBzb2NrZXQgPSBuZXcgV2Vi
U29ja2V0KHVybCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldHVybjsKKyAgfQorCisgIHNv
Y2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGV4dHJhSW5mbyA9IFtdOworICAg
IGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYmIHNvY2tldC5wcm90b2NvbCkgeworICAgICAg
ZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyArIHNvY2tldC5wcm90b2NvbCk7CisgICAgfQor
ICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tldCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsK
KyAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNpb25zID0gJyArIHNvY2tldC5leHRlbnNpb25z
KTsKKyAgICB9CisKKyAgICB2YXIgbG9nTWVzc2FnZSA9ICdPcGVuZWQnOworICAgIGlmIChleHRy
YUluZm8ubGVuZ3RoID4gMCkgeworICAgICAgbG9nTWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZv
LmpvaW4oJywgJykgKyAnKSc7CisgICAgfQorICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UpOworICB9
OworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgaWYgKCgnQXJy
YXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl
cikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBl
dmVudC5kYXRhLmJ5dGVMZW5ndGggKworICAgICAgICAgICAgICAgJyBieXRlcycpCisgICAgfSBl
bHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9i
KSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRh
LnNpemUgKyAnIGJ5dGVzJykKKyAgICB9IGVsc2UgeworICAgICAgYWRkVG9Mb2coJzwgJyArIGV2
ZW50LmRhdGEpOworICAgIH0KKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
CisgICAgYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnQ2xvc2VkICgnOworICAgIGlmICgo
YXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Nsb3NlRXZlbnQnIGluIHdpbmRvdykgJiYKKyAg
ICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VFdmVudCkpIHsKKyAgICAgIGxvZ01lc3NhZ2Ug
Kz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0NsZWFuOworICAgICAgLy8gY29kZSBhbmQgcmVh
c29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCisgICAgICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vi
c29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCisgICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7
CisgICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29kZSA9ICcgKyBldmVudC5jb2RlOworICAgICAg
fQorICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50KSB7CisgICAgICAgIGxvZ01lc3NhZ2UgKz0g
JywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBpcyBub3QgYXZhaWxhYmxlJzsKKyAgICB9Cisg
ICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7CisgIH07CisKKyAgaWYgKHByb3RvY29scykg
eworICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJv
dG9jb2xzICsgJyknKTsKKyAgfSBlbHNlIHsKKyAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJs
KTsKKyAgfQorfQorCitmdW5jdGlvbiBjbG9zZVNvY2tldCgpIHsKKyAgaWYgKCFzb2NrZXQpIHsK
KyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52YWx1ZSkgeworICAgIHNvY2tldC5jbG9zZShj
b2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUpOworICB9IGVsc2UgeworICAgIHNvY2tldC5j
bG9zZSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3RhdGUoKSB7CisgIGlmICghc29ja2V0
KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBhZGRUb0xvZygKKyAgICAgICd1cmwgPSAnICsgc29ja2V0LnVybCArCisgICAgICAnLCByZWFk
eVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRlICsKKyAgICAgICcsIGJ1ZmZlcmVkQW1vdW50
ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7Cisg
IHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3Nz
Oi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5s
b2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKKworICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgcHJvdG9jb2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Byb3RvY29scycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bG9nJyk7CisgIG1lc3NhZ2VCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScp
OworICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUnKTsKKyAgY29kZUJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CisgIHJlYXNvbkJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVm
YXVsdEFkZHJlc3M7CisKKyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgeworICAgIGFk
ZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9Cit9Cis8L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citmb3JtIHsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNj
b25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2RpdiwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2Rp
diwgI3ByaW50c3RhdGVfZGl2IHsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDVweDsKKyAg
Ym9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4OworICBib3JkZXItc3R5bGU6IHNvbGlkOwor
ICBib3JkZXItY29sb3I6IHNpbHZlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImluaXQoKSI+CisKKzxkaXY+CisKKzxkaXYgaWQ9ImNvbm5lY3RfZGl2Ij4KKyAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+CisgICAgPGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgorICAgIDxici8+CisgICAgcHJvdG9jb2xzIDxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xzIiBzaXplPSIyMCI+CisgIDwvZm9ybT4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4KKyAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEw
IiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAgPGJyLz4KKyAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IgorICAgICAgICAgbmFtZT0ic2hvd3RpbWVzdGFtcCIKKyAgICAgICAgIHZhbHVl
PSJzaG93dGltZXN0YW1wIgorICAgICAgICAgb25jbGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMu
Y2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCis8L2Rpdj4KKworPGRpdiBpZD0ic2VuZF9kaXYiPgor
ICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kKCk7IHJldHVybiBmYWxzZTsiPgorICAg
IGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJtZXNzYWdlIiBzaXplPSI0MCI+CisgICAgPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQiPgorICA8L2Zvcm0+Cis8L2Rpdj4KKworPGRp
diBpZD0ic2VuZGZpbGVfZGl2Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZp
bGUoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBz
aXplPSI0MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Cisg
IDwvZm9ybT4KKworICBTZXQgYmluYXJ5VHlwZQorICA8aW5wdXQgdHlwZT0icmFkaW8iCisgICAg
ICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImJsb2IiCisgICAgICAgICBv
bmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJykiIGNoZWNrZWQ+YmxvYgorICA8aW5wdXQgdHlw
ZT0icmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImFy
cmF5YnVmZmVyIgorICAgICAgICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXIn
KSI+YXJyYXlidWZmZXIKKzwvZGl2PgorCis8ZGl2IGlkPSJjbG9zZV9kaXYiPgorICA8Zm9ybSBh
Y3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tldCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICBj
b2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29kZSIgc2l6ZT0iMTAiPgorICAgIHJlYXNvbiA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIgc2l6ZT0iMjAiPgorICAgIDxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+CisgIDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJw
cmludHN0YXRlX2RpdiI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0
ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Cis8L2Rpdj4KKworPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTUyMDk2OTRlM2ZmMjMyMGY1NjgzZWUwNTk2YWUzNDQyOGIxNWViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5CkBAIC0wLDAgKzEs
NTQgQEAKKyMgQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCisKKworZGVmIF9hZGRfc2V0X2Nvb2tp
ZShyZXF1ZXN0LCB2YWx1ZSk6CisgICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1Nl
dC1Db29raWUnLCB2YWx1ZSkpCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIGNvbXBvbmVudHMgPSB1cmxsaWIucGFyc2UudXJscGFyc2UocmVxdWVz
dC51cmkpCisgICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KKworICAgIE9ORV9EQVlfTElGRSA9
ICdNYXgtQWdlPTg2NDAwJworCisgICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKKyAgICAgICAgX2Fk
ZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVd
KSkKKyAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6CisgICAgICAgIF9hZGRfc2V0
X2Nvb2tpZSgKKyAgICAgICAgICAgIHJlcXVlc3QsICc7ICcuam9pbihbJ2h0dHBPbmx5Rm9vPWJh
cicsIE9ORV9EQVlfTElGRSwgJ2h0dHBPbmx5J10pKQorICAgIGVsaWYgY29tbWFuZCA9PSAnY2xl
YXInOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2Zvbz0wOyBNYXgtQWdlPTAn
KQorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2h0dHBPbmx5Rm9vPTA7IE1heC1B
Z2U9MCcpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDQ1OWExOWJjNjhjNzg3OWExNzRmNTcyMTIyMzgyOTE0ZTZmN2RkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpAQCAtMCwwICsxLDY5
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KKworbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2VydmVyIHNldHVwCisgJSBjZCAkcHl3
ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQorCisjIHJ1
biBjbGllbnQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCisgICAgIC1zIGxvY2FsaG9zdCBcCisgICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
CitpbXBvcnQgYmFzZTY0CitpbXBvcnQgY29kZWNzCitmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEK
K2ltcG9ydCBsb2dnaW5nCitmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9y
dCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2l4CitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5leHRlbnNpb25zIGltcG9ydCBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIKK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9wYXJzZV93aW5kb3dfYml0cworZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKKworX1RJTUVPVVRfU0VDID0gMTAKK19VTkRFRklORURfUE9SVCA9IC0xCisKK19VUEdS
QURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5FQ1RJT05fSEVBREVS
ID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCisjIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRl
bGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQorX0dPT0RCWUVf
TUVTU0FHRSA9ICdHb29kYnllJworCitfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEz
JworCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcwor
CisKK2RlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIs
IG9yaWdpbik6CisgICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3Jp
Z2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKKyAgICAjIGFuZCB0aGUgL29yaWdpbi8g
dmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgorICAgIHJl
dHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKKworCitkZWYgX2Zv
cm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgorICAgICMgNC4xIDkuIExldCAv
aG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAv
aG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCisgICAgIyAvaG9z
dHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKKyAgICAjIDQuMSAxMS4gSWYgL3Nl
Y3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLworICAg
ICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBD
T0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQv
LCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAorICAgICMgdG8gL2hvc3Rwb3J0Lwor
ICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VU
X1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3Ry
KHBvcnQpCisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoi
LCBhIFUrMDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2Zp
ZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhv
c3Rwb3J0KQorCisKK2RlZiBfcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVj
dl9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0gbGVuZ3RoCisgICAgd2hpbGUgcmVtYWluaW5n
ID4gMDoKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCisg
ICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3Io
CisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVx
dWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0
IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVu
Z3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjdl9ieXRlcy5hcHBlbmQocmVjZWl2ZWRfYnl0
ZXMpCisgICAgICAgIHJlbWFpbmluZyAtPSBsZW4ocmVjZWl2ZWRfYnl0ZXMpCisgICAgcmV0dXJu
IGInJy5qb2luKHJlY3ZfYnl0ZXMpCisKKworZGVmIF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVs
ZHMsIG5hbWUpOgorICAgICIiIkdldHMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgc3BlY2lmaWVk
IGJ5IG5hbWUgZnJvbSBmaWVsZHMuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhhdCB0
aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQorICAgIGluIGZp
ZWxkcy4gT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCisgICAgIiIi
CisKKyAgICB2YWx1ZXMgPSBmaWVsZHMuZ2V0KG5hbWUubG93ZXIoKSkKKyAgICBpZiB2YWx1ZXMg
aXMgTm9uZSBvciBsZW4odmFsdWVzKSA9PSAwOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcignJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCisgICAg
aWYgbGVuKHZhbHVlcykgPiAxOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcign
TXVsdGlwbGUgJXMgaGVhZGVycyBmb3VuZDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5hbWUsIHZhbHVlcykpCisgICAgcmV0dXJuIHZhbHVlc1swXQorCisKK2Rl
ZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX3NlbnNpdGl2ZT1G
YWxzZSk6CisgICAgIiIiR2V0cyBhbmQgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVy
IHNwZWNpZmllZCBieSBuYW1lIGZyb20KKyAgICBmaWVsZHMuCisKKyAgICBJZiBleHBlY3RlZF92
YWx1ZSBpcyBzcGVjaWZpZWQsIGNvbXBhcmVzIGV4cGVjdGVkIHZhbHVlIGFuZCBhY3R1YWwgdmFs
dWUKKyAgICBhbmQgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yIG9uIGZhaWx1cmUuIFlv
dSBjYW4gc3BlY2lmeSBjYXNlCisgICAgc2Vuc2l0aXZlbmVzcyBpbiB0aGlzIGNvbXBhcmlzb24g
YnkgY2FzZV9zZW5zaXRpdmUgcGFyYW1ldGVyLiBUaGlzIGZ1bmN0aW9uCisgICAgZXhwZWN0cyB0
aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGZp
ZWxkcy4KKyAgICBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvci4KKyAg
ICAiIiIKKworICAgIHZhbHVlID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSkK
KworICAgIGlmICgoY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlKSBv
cgorICAgICAgICAobm90IGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZS5sb3dlcigpICE9IGV4cGVj
dGVkX3ZhbHVlLmxvd2VyKCkpKToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3Io
CisgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAobmFtZSwgZXhwZWN0ZWRfdmFsdWUsIHZh
bHVlKSkKKworCitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3Ig
YSBUTFMgY29ubmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisg
ICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCkKKwor
ICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBkb25lIG9uIHdyYXBf
c29ja2V0IGNhbGwuCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJDaXBoZXI6ICVzIiwgc2Vs
Zi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKKworICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC53cml0ZShkYXRhKQorCisgICAgZGVmIHNlbmRh
bGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnNlbmRhbGwo
ZGF0YSkKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdGxzX3NvY2tldC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl90bHNfc29ja2V0LmNsb3NlKCkKKworICAgIGRlZiBnZXRwZWVybmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisK
K2NsYXNzIENsaWVudEhhbmRzaGFrZUJhc2Uob2JqZWN0KToKKyAgICAiIiJBIGJhc2UgY2xhc3Mg
Zm9yIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBlYWNoCisgICAg
cHJvdG9jb2wgdmVyc2lvbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVm
IF9yZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBh
IGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgICAgICBmaWVs
ZHMgPSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAgICAgICAgICAjIDQu
MSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICAgICAgbmFtZSA9IGInJworICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgICAgICMg
NC4xIDM0LiByZWFkIC9uYW1lLworICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3JlYWRfbmFtZSgp
CisgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgICMgNC4xIDM1LiByZWFkIHNwYWNlcworICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjaCA9IHNlbGYuX3NraXBfc3BhY2VzKCkKKyAgICAgICAgICAgICMgNC4xIDM2LiBy
ZWFkIC92YWx1ZS8KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fcmVhZF92YWx1ZShjaCkKKyAg
ICAgICAgICAgICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAg
ICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYg
Y2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCisgICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCisgICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCisgICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQorICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCisgICAgICAg
ICAgICAjIHN0cmVhbS4KKyAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUuZGVjb2Rl
KCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLmFwcGVuZCh2YWx1
ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAi
RmllbGQiIHN0ZXAgYWJvdmUKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisgICAgZGVmIF9yZWFk
X25hbWUoc2VsZik6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUg
YXJyYXlzCisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAg
ICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYgY2ggPT0g
Yidccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAg
ZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhh
bmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJl
YWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gYic6
JzogICMgMHgzQQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxvd2VyKCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSArPSBjaAorCisgICAgZGVmIF9za2lwX3Nw
YWNlcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZl
cgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJyAnOiAgIyAweDIwCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybiBjaAorCisgICAgZGVmIF9y
ZWFkX3ZhbHVlKHNlbGYsIGNoKToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVt
cHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICMgNC4xIDM2LiBy
ZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisg
ICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgICAgICBjaCA9IF9yZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKworCitkZWYgX2dldF9wZXJtZXNzYWdlX2RlZmxh
dGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6CisgICAgIiIiVmFsaWRhdGUgdGhlIHJlc3Bv
bnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGluCisg
ICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCB0aGUgc2VydmVyXy4q
IHBhcmFtZXRlcnMuCisgICAgIiIiCisKKyAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gTm9u
ZQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQorCisgICAgY2xpZW50X21h
eF93aW5kb3dfYml0c19uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3Zlcl9uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCisKKyAgICAj
IFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgorICAgICMgSGFuZGxlIHRo
b3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCisKKyAg
ICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3df
Yml0c19uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignTXVsdGlw
bGUgJXMgZm91bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCisKKyAgICAgICAgICAgIHBhcnNlZF92YWx1
ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGlmIHBhcnNl
ZF92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFkICVzOiAlcicgJSAoY2xpZW50X21heF93aW5k
b3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzID0gcGFyc2VkX3ZhbHVlCisgICAgICAgIGVsaWYgcGFyYW1fbmFtZSA9PSBjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoJ011bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkKKwor
ICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6
IEhhcyB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAgICAoY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXJfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBp
cyBOb25lOgorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCisKKyAg
ICByZXR1cm4gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKGNsaWVudF9tYXhfd2luZG93X2JpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlcikKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoQ2xpZW50SGFuZHNo
YWtlQmFzZSk6CisgICAgIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvcgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgorICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKKworICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAg
ICAiIiIKKworICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAg
ZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy51c2VfdGxzKSkKKyAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFE
RVIpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgX29yaWdpbl9oZWFkZXIoY29tbW9uLk9SSUdJTl9IRUFE
RVIsIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51
cmFuZG9tKDE2KQorICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFs
X2tleSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVzKScsIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9rZXksIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCisgICAgICAgIGZpZWxkcy5hcHBlbmQo
CisgICAgICAgICAgICAnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleS5kZWNvZGUoJ1VURi04JykpKQorCisgICAgICAg
IGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVkXHJcbicgJQorICAgICAgICAgICAg
KGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLCBjb21tb24uVkVSU0lPTl9IWUJJ
X0xBVEVTVCkpCisKKyAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6CisgICAgICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICAgICAgIyBBY2NlcHQg
dGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0
LgorICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAg
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCisgICAgICAgICAgICAgICAgX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sIE5vbmUpCisgICAgICAgICAgICBleHRlbnNpb25z
X3RvX3JlcXVlc3QuYXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBpZiBsZW4oZXh0ZW5zaW9u
c190b19yZXF1ZXN0KSAhPSAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJc
bicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhU
RU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190b19yZXF1ZXN0KSkpCisKKyAgICAgICAgZm9yIGZpZWxk
IGluIGZpZWxkczoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkLmVuY29k
ZSgnVVRGLTgnKSkKKworICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChiJ1xyXG4nKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQorCisg
ICAgICAgIHN0YXR1c19saW5lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIHN0YXR1
c19saW5lICs9IGNoCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xuJzoKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIG0gPSByZS5tYXRjaChiJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxk
XFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1h
dDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19s
aW5lKQorICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgc3RhdHVz
X2NvZGUgIT0gYicxMDEnOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICVzIHdpdGggZm9sbG93aW5nIGhlYWRl
cnM6ICVyJywKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgc2VsZi5fcmVhZF9maWVsZHMo
KSkKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAg
ICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXInICUgc3RhdHVz
X2NvZGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCB2YWxpZCBTdGF0
dXMtTGluZScpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3RhcnQgcmVhZGluZyBoZWFk
ZXJzIHVudGlsIHdlIHNlZSBhbiBlbXB0eSBsaW5lJykKKworICAgICAgICBmaWVsZHMgPSBzZWxm
Ll9yZWFkX2ZpZWxkcygpCisKKyAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0
IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCisgICAgICAgICAg
ICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLCBmaWVsZHMp
CisKKyAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBjb21tb24uVVBH
UkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5X
RUJTT0NLRVRfVVBHUkFERV9UWVBFLCBGYWxzZSkKKworICAgICAgICBfdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLCBG
YWxzZSkKKworICAgICAgICBhY2NlcHQgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICAjIFZhbGlkYXRlCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0KSkK
KworICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6CisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBv
ZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCisgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19X
RUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jl
c3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywgYWNjZXB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCisKKyAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoc2VsZi5fa2V5ICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkK
KyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0
ZWRfYWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgcmVzcG9u
c2UgZm9yIGNoYWxsZW5nZTogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShi
aW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRf
YWNjZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAorICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVk
OiAlcyknICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hF
QURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9hY2NlcHRlZCA9IEZhbHNlCisKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVs
ZHMuZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFE
RVIubG93ZXIoKSkKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgIGlm
IGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFkZXIp
ICE9IDA6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4
dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCisKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBp
biBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWUgPSBleHRl
bnNpb24ubmFtZSgpCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUgPT0gY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04KKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6CisgICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKKyAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lKQorCisgICAgICAgIGlmIChzZWxmLl9vcHRp
b25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAgICAgICAgICAgICBhbmQgbm90IHBlcm1l
c3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCk6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkICVzLCBidXQgdGhlIHNlcnZlciBy
ZWplY3RlZCBpdCcgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVf
RVhURU5TSU9OKQorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29j
a2V0LVByb3RvY29sCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0
Yy4KKworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiQSB3cmFwcGVy
IGZvciBzb2NrZXQgb2JqZWN0IHRvIHByb3ZpZGUgdGhlIG1wX2Nvbm4gaW50ZXJmYWNlLgorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9zb2Nr
ZXQgPSBzb2NrZXQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIG4pOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKKworICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisgICAgcmVt
b3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisKKworY2xhc3MgQ2xpZW50UmVx
dWVzdChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBqdXN0IHRvIG1ha2UgaXQgYWJs
ZSB0byBwYXNzIGEgc29ja2V0IG9iamVjdCB0bworICAgIGZ1bmN0aW9ucyB0aGF0IGV4cGVjdCBh
IG1wX3JlcXVlc3Qgb2JqZWN0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2Nr
ZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCisgICAgICAgIHNlbGYud3NfdmVyc2lvbiA9IGNv
bW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisKKworY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgor
ICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYu
X3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICIiIlJ1biB0aGUgY2xp
ZW50LgorCisgICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3Nh
Z2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0
KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jb25uZWN0KAorICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LCBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKKyAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQgPSBfVExT
U29ja2V0KHNlbGYuX3NvY2tldCkKKworICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gQ2xp
ZW50SGFuZHNoYWtlUHJvY2Vzc29yKHNlbGYuX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zKQorCisgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKKworICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAgICAgICAgICByZXF1
ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgICAgIHN0cmVhbV9v
cHRpb24gPSBTdHJlYW1PcHRpb25zKCkKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb24ubWFza19z
ZW5kID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtX29wdGlvbi51bm1hc2tfcmVjZWl2ZSA9IEZh
bHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgZnJhbWVyLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb24pCisKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0
cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBmb3IgbGluZSBpbiBz
ZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDogJXMnICUgbGluZSkK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gc2Vs
Zi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlY3Y6
ICVzJyAlIHJlY2VpdmVkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgICAgICAg
ICByYWlzZQorCisgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVm
IF9kb19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5n
IGhhbmRzaGFrZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01F
U1NBR0U6CisgICAgICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3Npbmcg
aGFuZHNoYWtlLCBzbworICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2Ug
bWVzc2FnZSBmcm9tIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0
IGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIG1l
c3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmVjdiBjbG9zZScpCisgICAg
ICAgICAgICAgICAgcHJpbnQoJ1NlbmQgYWNrJykKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQorICAgICAgICBz
ZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCisKKworZGVmIG1haW4oKToK
KyAgICBpZiBzaXguUFkyOgorICAgICAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcign
dXRmLTgnKShzeXMuc3Rkb3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKKyAgICAj
IFdlIGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBz
YW1lIGFzIEdvb2dsZQorICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1h
bmQtbGluZS1mbGFnIHN0eWxlIGZsYWdzLgorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsCisg
ICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJf
aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J3NlcnZlciBob3N0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX3BvcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2Vy
dmVyIHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tb3JpZ2luJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdvcmlnaW4nLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J29yaWdpbicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1yZXNv
dXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVzb3VyY2UnLAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nL2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jlc291cmNlIHBhdGgnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbWVz
c2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWVzc2FnZScsCisgICAgICAgICAg
ICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
Y29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4n
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAgICctLXF1aWV0JywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywKKyAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGxz
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfdGxzJywKKyAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIFRMUyAod3NzOi8vKS4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
c29ja2V0LXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNvY2tldF90aW1lb3V0
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PV9USU1FT1VUX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaW1lb3V0KHNlYykg
Zm9yIHNvY2tldHMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXVzZS1wZXJtZXNzYWdlLWRl
ZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2Ug
dGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uJykKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4n
LAorICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4n
LCAnZXJyb3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cg
bGV2ZWwuJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQorCisgICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVy
IGRlcGVuZHMgb24gd2hldGhlciBUTFMgaXMgdXNlZC4KKyAgICBpZiBvcHRpb25zLnNlcnZlcl9w
b3J0ID09IF9VTkRFRklORURfUE9SVDoKKyAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgorICAg
ICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3Bv
cnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworICAgICMgb3B0cGFyc2UgZG9l
c24ndCBzZWVtIHRvIGhhbmRsZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMuCisgICAgIyBTZXQg
ZGVmYXVsdCBtZXNzYWdlIGhlcmUuCisgICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKKyAgICAg
ICAgb3B0aW9ucy5tZXNzYWdlID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAjICJKYXBhbiIgaW4g
SmFwYW5lc2UKKworICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYTUw
MzIyMThkMjY5OTU4YmY3NTFiZjYwOGJiYjUyNTU2YzZmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CkBAIC0wLDAgKzEsNjIg
QEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc2l4CisKK19HT09EQllFX01FU1NBR0UgPSB1
J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUg
aXMgcGFyc2VkIGludG8KKyAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdl
YnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgorICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3Jl
IGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAorICAgIGFmdGVy
IHRoZSBjYWxsLgorCisgICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0
aGUgcHJvY2Vzc29yIGxpc3QuCisgICAgIiIiCisKKyAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9w
cm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHkuIiIiCisKKyAgICB3aGlsZSBUcnVl
OgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAg
ICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlz
aW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
ZWNob193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2M2YzUzMTFiYmI5OWYzMzRmMzM1N2Q4MDFhMmY0
MjA1NjAwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNo
b193c2gucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzaXgK
KworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUaGlzIGV4YW1wbGUgaGFuZGxlciBhY2Nl
cHRzIGFueSByZXF1ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3IgaG93CisgICAgIyB0
byByZWplY3QgYWNjZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQgb24gb3JpZ2luIHZh
bHVlLgorCisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJl
cXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxp
bmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FH
RToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFu
ZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1OTkwNTg2Nzg0MmFlYjg2NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKyMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkg
c3RhbmRhbG9uZS5weSAtbSBvcHRpb24uCisjIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBh
IGNvbW1lbnQgbGluZS4KKyMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9w
YXRoJyBhbmQgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnCisjIHNlcGFyYXRlZCBieSBzcGFjZXMu
CisjIEFsaWFzaW5nIGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0
aGUgbGluZSwgYW5kCisjICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9y
ZSBpdCBpcyBhbGlhc2VkLgorIyBGb3IgZXhhbXBsZSwKKyMgIC8gL2VjaG8KKyMgbWVhbnMgdGhh
dCBhIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hv
Jy4KKy8gL2VjaG8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3Rz
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKQEAgLTAsMCArMSw0
MCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCisgICAgICAg
ICgnU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNGFhNjg0MjgzYTYwM2Y1YjMzZGRhNTI2MzAxOTk5YjQ0NzkyZGRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
bXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICByYWlzZSBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9vcmlnaW5f
Y2hlY2tfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTc2N2FiOTMyZmI1ODI4MjRhYWYxYTU3ZDkyNDlj
MzA0YmQ1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29y
aWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
VGhpcyBleGFtcGxlIGlzIGRlcml2ZWQgZnJvbSB0ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdp
bl9jaGVja193c2gucHkuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20n
OgorICAgICAgICByZXR1cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3Jp
Z2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2No
ZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4YjJjMDhmNmEyMjU0
YTFmOWQ3NjUwNzkwMmMxYTZiNWFlZTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IS0tCitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJm
b3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDQwOWFhNmViNWZk
MWExMWFlMmQ1YmExNTZiYjhhYWMyZmNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCkBAIC0wLDAgKzEsODYg
QEAKKy8vIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gcGVyZlRlc3RBZGRUb0xvZyh0ZXh0KSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1h
bmQnOiAnbG9nJywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0
QWRkVG9TdW1tYXJ5KHRleHQpIHsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RNZWFzdXJlVmFsdWUo
dmFsdWUpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdtZWFzdXJlVmFsdWUn
LCAndmFsdWUnOiB2YWx1ZX0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0Tm90aWZ5QWJv
cnQoKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90aWZ5QWJvcnQnfSwg
JyonKTsKK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGFUeXBl
LCBhc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlEYXRh
LCBudW1JdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVdhcm1VcEl0ZXJhdGlvbnMpIHsKKworICByZXR1cm4geworICAgIHByZWZpeFVybDogJ3dzOi8v
JyArIGxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInLAorICAgIHByaW50U2l6ZTog
dHJ1ZSwKKyAgICBudW1Tb2NrZXRzOiAxLAorICAgIC8vICsgMSBpcyBmb3IgYSB3YXJtdXAgaXRl
cmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgorICAgIG51bUl0ZXJhdGlvbnM6IG51
bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKKyAgICBudW1XYXJtVXBJdGVy
YXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAorICAgIG1pblRvdGFsOiAxMDI0MDAwMCwKKyAg
ICBzdGFydFNpemU6IDEwMjQwMDAwLAorICAgIHN0b3BUaHJlc2hvbGQ6IDEwMjQwMDAwLAorICAg
IG11bHRpcGxpZXJzOiBbMl0sCisgICAgdmVyaWZ5RGF0YTogdmVyaWZ5RGF0YSwKKyAgICBkYXRh
VHlwZTogZGF0YVR5cGUsCisgICAgYXN5bmM6IGFzeW5jLAorICAgIGFkZFRvTG9nOiBwZXJmVGVz
dEFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRUb1N1bW1hcnksCisgICAg
bWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKKyAgICBub3RpZnlBYm9ydDogcGVy
ZlRlc3ROb3RpZnlBYm9ydAorICB9OworfQorCit2YXIgZGF0YTsKK29ubWVzc2FnZSA9IGZ1bmN0
aW9uKG1lc3NhZ2UpIHsKKyAgdmFyIGFjdGlvbjsKKyAgaWYgKG1lc3NhZ2UuZGF0YS5jb21tYW5k
ID09PSAnc3RhcnQnKSB7CisgICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKKyAgICBpbml0V29ya2Vy
KCdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QpOworICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJr
TmFtZTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rpb24gPSAnc3RvcCc7CisgIH0KKworICB2YXIgY29u
ZmlnID0gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGEuZGF0YVR5cGUsIGRhdGEuYXN5
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52ZXJp
ZnlEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFs
X2hlYWRlcnMuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwM2NiNzQwMWI3ODdhYzZlMTFjNjc0NmM2ODQyZTU3
ZDM4MDk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3Nw
ZWNpYWxfaGVhZGVycy5jZ2kKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKKyMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCisiIiJDR0kg
c2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRUUCBoZWFkZXJzIG9uIHRoZSBv
cmlnaW4gcGFnZS4KKworTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRvbid0IHdvcmsgb24gdGhlIHN0
YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKK21vZGUuCisiIiIKKworcHJpbnQg
IiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKK0NvbnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25u
ZWN0LXNyYyBzZWxmCisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1w
bGUuY29tIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTAxNjBjYjQwYzRjNzgwMGNkOWU3NjMwMDE0MGI5YmZl
OWYxNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
LmpzCkBAIC0wLDAgKzEsMzIzIEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9y
IGJvdGggbWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCisKK3ZhciByZXN1bHRzID0ge307CisKK2Z1
bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIERhdGUubm93KCk7Cit9CisKK2Z1bmN0
aW9uIGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLAorICAgIHNwZWVkLCBwcmludFNpemUpIHsKKyAgaWYgKHByaW50U2l6
ZSkgeworICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKKyAgICAgICAgJ1x0JyArIHRpbWVQZXJN
ZXNzYWdlSW5Ncy50b0ZpeGVkKDMpICsKKyAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5N
cyA9PSAtMSA/CisgICAgICAgICAgICAnJyA6CisgICAgICAgICAgICAnXHQnICsgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKKyAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4
ZWQoMyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7CisgIH0KK30K
KworZnVuY3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKKyAgcmVzdWx0cyA9IHt9OworfQorCitm
dW5jdGlvbiByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvU3VtbWFy
eSgKKyAgICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0
U3BlZWRbS0Ivc10nKTsKKyAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7CisgICAgdmFyIGF2
ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tz
aXplXS5uOworICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdl
VGltZVBlck1lc3NhZ2VJbk1zKTsKKyAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRl
dmlhdGlvbgorICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCisg
ICAgICAgIChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCisgICAgICAg
ICAgICBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5N
cykgKgorICAgICAgICByZXN1bHRzW3NpemVdLm4gLworICAgICAgICAocmVzdWx0c1tzaXplXS5u
IC0gMSkpOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCisgICAg
ICAgIHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdl
SW5Ncywgc3BlZWQsCisgICAgICAgIHRydWUpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYWxjdWxh
dGVTcGVlZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgeworICByZXR1cm4gTWF0aC5yb3VuZChz
aXplIC8gdGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKK30KKworZnVuY3Rpb24gY2FsY3Vs
YXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAor
ICAgIGlzV2FybVVwKSB7CisgIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBz
dGFydFRpbWVJbk1zOworICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXpl
LCB0aW1lU3BlbnRJbk1zKTsKKyAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudElu
TXMgLyAodG90YWxTaXplIC8gc2l6ZSk7CisgIGlmICghaXNXYXJtVXApIHsKKyAgICBjb25maWcu
bWVhc3VyZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgaWYgKCFyZXN1bHRzW3NpemVd
KSB7CisgICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9Owor
ICAgIH0KKyAgICByZXN1bHRzW3NpemVdLm4gKys7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdCAr
PSB0aW1lUGVyTWVzc2FnZUluTXM7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBl
ck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOworICB9CisgIGNvbmZpZy5hZGRUb0xv
Zyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwK
KyAgICAgIGNvbmZpZy5wcmludFNpemUpKTsKK30KKworZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0
ciwgY291bnQpIHsKKyAgdmFyIGRhdGEgPSAnJzsKKyAgdmFyIGV4cENodW5rID0gc3RyOworICB2
YXIgcmVtYWluID0gY291bnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYgKHJlbWFpbiAlIDIp
IHsKKyAgICAgIGRhdGEgKz0gZXhwQ2h1bms7CisgICAgICByZW1haW4gPSAocmVtYWluIC0gMSkg
LyAyOworICAgIH0gZWxzZSB7CisgICAgICByZW1haW4gLz0gMjsKKyAgICB9CisKKyAgICBpZiAo
cmVtYWluID09IDApCisgICAgICBicmVhazsKKworICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBl
eHBDaHVuazsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZmlsbEFycmF5QnVm
ZmVyKGJ1ZmZlciwgYykgeworICB2YXIgaTsKKworICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAx
MDEwMTAxOworCisgIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3Ro
IC8gNCk7CisgIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxv
Y2tzKTsKKyAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNl
IGl0IGZvciBsb29wIGNvbmRpdGlvbi4KKyAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytp
KSB7CisgICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7CisgIH0KKworICAvLyBGcmFjdGlvbgor
ICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7CisgIHZh
ciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tz
KTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAgICB1OFZpZXdbaV0gPSBj
OworICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRD
aGFyKSB7CisgIHZhciBpOworCisgIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFy
ICogMHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0
ZUxlbmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAs
IHUzMkJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgeworICAgIGlm
ICh1MzJWaWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJs
b2NrcyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2Nr
cyAqIDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAg
ICBpZiAodThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgeworICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB2ZXJpZnlCbG9iKGNv
bmZpZywgYmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKKyAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKGJsb2IpOworICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewor
ICAgIGNvbmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5t
ZXNzYWdlKTsKKyAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7CisgIH0KKyAgcmVh
ZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJh
eUJ1ZmZlcihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOworICAgIGRvbmVDYWxsYmFjayhi
bG9iLnNpemUsIHJlc3VsdCk7CisgIH0KKyAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2Ip
OworfQorCitmdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBz
aXplKSB7CisgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgeworICAgIGNvbmZpZy5h
ZGRUb0xvZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOworICBp
ZiAoaXNOYU4ocGFyc2VkQWNrKSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sg
dmFsdWU6ICcgKyBtZXNzYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHBhcnNl
ZEFjayAhPSBzaXplKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKAorICAgICAgICAnRXhwZWN0ZWQg
YWNrIGZvciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sg
KworICAgICAgICAnQicpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKKyAgdmFyIG5ld09iaiA9IHt9Owor
ICBmb3IgKGtleSBpbiBvYmopIHsKKyAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOworICB9Cisg
IHJldHVybiBuZXdPYmo7Cit9CisKK3ZhciB0YXNrcyA9IFtdOworCitmdW5jdGlvbiBydW5OZXh0
VGFzayhjb25maWcpIHsKKyAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOworICBpZiAodGFzayA9
PSB1bmRlZmluZWQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7CisgICAgY2xl
YW51cCgpOworICAgIHJldHVybjsKKyAgfQorICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAw
KTsKK30KKworZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7CisgIHZhciBsZWdl
bmQgPSAnJworICBpZiAoY29uZmlnLnByaW50U2l6ZSkKKyAgICBsZWdlbmQgPSAnTWVzc2FnZSBz
aXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOworICBsZWdlbmQgKz0gJ1NwZWVkIGlu
IGtCL3MnOworICByZXR1cm4gbGVnZW5kOworfQorCitmdW5jdGlvbiBhZGRUYXNrcyhjb25maWcs
IHN0ZXBGdW5jKSB7CisgIGZvciAodmFyIGkgPSAwOworICAgICAgaSA8IGNvbmZpZy5udW1XYXJt
VXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgeworICAgIHZhciBtdWx0
aXBsaWVySW5kZXggPSAwOworICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwor
ICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKKyAgICAgICAgICsrbXVsdGlw
bGllckluZGV4KSB7CisgICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCisgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICBzaXplLAorICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICAgICAgdGFza3MucHVzaCh0YXNrKTsKKyAg
ICAgIHZhciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWworICAgICAgICBtdWx0aXBs
aWVySW5kZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKKyAgICAgIGlmIChtdWx0aXBs
aWVyIDw9IDEpIHsKKyAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIg
JyArIG11bHRpcGxpZXIpOworICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOworICAgICAgfQorICAgICAgc2l6
ZSA9IE1hdGguY2VpbChzaXplICogbXVsdGlwbGllcik7CisgICAgfQorICB9Cit9CisKK2Z1bmN0
aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgeworICB0YXNrcy5wdXNo
KGZ1bmN0aW9uKCl7CisgICAgICB0aW1lcklEID0gbnVsbDsKKyAgICAgIGNvbmZpZy5hZGRUb1N1
bW1hcnkodGl0bGUpOworICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKKyAgICAgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH0pOworfQor
CitmdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2coJ1Nl
bmQgYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0
YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29u
ZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKKyAgY29uZmln
LmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107Cisg
IGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJr
U3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAorICAgICAgJ1JlY2VpdmUg
QmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0YXJ0QmVuY2htYXJr
KGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoY29uZmlnKSB7CisgIGNsZWFyVGltZW91dCh0
aW1lcklEKTsKKyAgdGltZXJJRCA9IG51bGw7CisgIHRhc2tzID0gW107CisgIGNvbmZpZy5hZGRU
b0xvZygnU3RvcHBlZCcpOworICBjbGVhbnVwKCk7Cit9CisKK3ZhciB3b3JrZXI7CisKK2Z1bmN0
aW9uIGluaXRXb3JrZXIob3JpZ2luKSB7CisgIHdvcmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsg
Jy9iZW5jaG1hcmsuanMnKTsKK30KKworZnVuY3Rpb24gZG9BY3Rpb24oY29uZmlnLCBpc1dpbmRv
d1RvV29ya2VyLCBhY3Rpb24pIHsKKyAgaWYgKGlzV2luZG93VG9Xb3JrZXIpIHsKKyAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9Mb2csIGFkZFRvU3VtbWFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZVZhbHVlLCBub3RpZnlBYm9ydCwgbWVzc2Fn
ZSkgeworICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQorICAgICAg
ICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRh
dGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCisgICAgICAgIGFkZFRvU3VtbWFyeShtZXNzYWdl
LmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ21lYXN1
cmVWYWx1ZScpCisgICAgICAgIG1lYXN1cmVWYWx1ZShtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAg
ICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ25vdGlmeUFib3J0JykKKyAgICAgICAg
bm90aWZ5QWJvcnQoKTsKKyAgICB9LmJpbmQodW5kZWZpbmVkLCBjb25maWcuYWRkVG9Mb2csIGNv
bmZpZy5hZGRUb1N1bW1hcnksCisgICAgICAgICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUsIGNvbmZp
Zy5ub3RpZnlBYm9ydCk7CisgICAgY29uZmlnLmFkZFRvTG9nID0gdW5kZWZpbmVkOworICAgIGNv
bmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9
IHVuZGVmaW5lZDsKKyAgICBjb25maWcubm90aWZ5QWJvcnQgPSB1bmRlZmluZWQ7CisgICAgd29y
a2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24sIGNvbmZpZzogY29uZmlnfSk7CisgIH0gZWxz
ZSB7CisgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRCZW5jaG1hcmsnKQorICAgICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlY2VpdmVCZW5jaG1hcmsn
KQorICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9
PT0gJ2JhdGNoQmVuY2htYXJrJykKKyAgICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7CisgICAg
ZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCisgICAgICBzdG9wKGNvbmZpZyk7CisgIH0KK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhZGQ0ODcz
MWY4OGZlODVlZWVhNDBlNmUwMTljZjE3Y2NjZTNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCkBAIC0wLDAgKzEsODkgQEAKKy8vIENv
cHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgorCit2
YXIgbG9nQm94ID0gbnVsbDsKK3ZhciBxdWV1ZWRMb2cgPSAnJzsKKwordmFyIHN1bW1hcnlCb3gg
PSBudWxsOworCitmdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKKyAgcXVldWVkTG9nICs9IGxvZyAr
ICdcbic7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBsb2dCb3gudmFsdWUgKz0g
cXVldWVkTG9nOworICBxdWV1ZWRMb2cgPSAnJzsKKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdc
bic7CisgIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5jdGlvbiBhZGRUb1N1
bW1hcnkobG9nKSB7CisgIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKKyAgc3VtbWFy
eUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCisvLyB2YWx1ZTogZXhlY3V0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgorLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0byBi
ZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgorLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1Q
ZXJmb3JtYW5jZVRlc3QuCitmdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKK30KKworLy8g
Y29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1hcmsgZmFpbGVkIGFu
ZCBhYm9ydGVkLCBhbmQKKy8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVz
dHMuCisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KK2Z1bmN0aW9u
IG5vdGlmeUFib3J0KCkgeworfQorCitmdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKKyAg
cmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Cit9CisK
K2Z1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7CisgIHZhciBsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNr
ZWQpCisgICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOworICByZXR1cm4gdW5kZWZpbmVk
OworfQorZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgeworICByZXR1cm4gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Cit9CisKK2Z1bmN0aW9uIGdldEludEFycmF5
RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0
cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOworfQorCitmdW5jdGlvbiBnZXRGbG9h
dEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKHBhcnNl
RmxvYXQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX3dv
cmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGQ5MDQ0OWE5MGE3ZDc4MmI5NzAyM2U4ZDlkNWE3YWFlZTk0YTMyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKQEAgLTAs
MCArMSw0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2Vy
IHRocmVhZHMgb25seSkuCisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CisgIHZh
ciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmlnOworICBjb25maWcuYWRkVG9Mb2cgPSBmdW5j
dGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTog
dGV4dH0pOyB9OworICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gZnVuY3Rpb24odGV4dCkgeworICAg
ICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Cisg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcG9zdE1lc3Nh
Z2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOyB9OworICBjb25maWcubm90
aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9
KTsgfTsKKworICBkb0FjdGlvbihjb25maWcsIGZhbHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Cit9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
M2QzOGUyYWI2MmZhNzYxZTU0MWMzZTQ3YjUxNTY0ZDkxMzFhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwzOSBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3No
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2NvbnNvbGUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9lY2hvX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDVmNTk1MGYzNDc1MzFiOTI2MmMzMWI3N2Qw
YzI5ZDQyNmU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
IiIiIEEgU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzCisK
K21vZF9weXdlYnNvY2tldCBpcyBhbiBBUEkgdGhhdCBwcm92aWRlcyBXZWJTb2NrZXQgZnVuY3Rp
b25hbGl0aWVzIHdpdGgKK2Egc3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVyLiBJdCBpcyBpbnRl
bmRlZCBmb3IgdGVzdGluZyBvcgorZXhwZXJpbWVudGFsIHB1cnBvc2VzLgorCitJbnN0YWxsYXRp
b24KKz09PT09PT09PT09PQorMS4gRm9sbG93IHN0YW5kYWxvbmUgc2VydmVyIGRvY3VtZW50YXRp
b24gdG8gc3RhcnQgcnVubmluZyB0aGUKK3N0YW5kYWxvbmUgc2VydmVyLiBJdCBjYW4gYmUgcmVh
ZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0LnN0YW5kYWxvbmUKKworMi4gT25jZSB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgaXMg
bGF1bmNoZWQgdmVyaWZ5IGl0IGJ5IGFjY2Vzc2luZworaHR0cDovL2xvY2FsaG9zdFs6cG9ydF0v
Y29uc29sZS5odG1sLiBJbmNsdWRlIHRoZSBwb3J0IG51bWJlciB3aGVuCitzcGVjaWZpZWQgb24g
bGF1bmNoLiBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgY29ycmVjdGx5LCB5b3UKK3dpbGwgc2Vl
IGEgc2ltcGxlIGVjaG8gY29uc29sZS4KKworCitXcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwor
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNv
bWVzIGluLCB0aGUgcmVzb3VyY2UgbmFtZQorc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMg
Y29uc2lkZXJlZCBhcyBpZiBpdCBpcyBhIGZpbGUgcGF0aCB1bmRlcgorPHdlYnNvY2tfaGFuZGxl
cnM+IGFuZCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5kbGVycz4vPHJlc291
cmNlX25hbWU+X3dzaC5weSBpcyBpbnZva2VkLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291
cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hhdCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNv
Y2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hhdF93c2gucHkgaXMgaW52b2tlZC4KKworQSBXZWJTb2Nr
ZXQgaGFuZGxlciBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoK
KworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCisgICAgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmlu
ZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZCBhbmQgV2ViU29ja2V0IHByb3BlcnRpZXMgKHdzX29yaWdpbiwKK2FuZCB3c19yZXNvdXJjZSkg
YXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBi
eSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQorZXh0cmEgaGFuZHNo
YWtlICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CistIHdzX3Jlc291cmNlCistIHdz
X29yaWdpbgorLSB3c192ZXJzaW9uCistIHdzX2V4dGVuc2lvbnMKKy0gd3NfZGVmbGF0ZQorLSB3
c19wcm90b2NvbAorLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzCisKK1RoZSBsYXN0IHR3byBhcmUg
YSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlvbi4KKworCitTdWJwcm90b2NvbCBO
ZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKword3NfcHJvdG9jb2wgaXMgYWx3
YXlzIHNldCB0byBOb25lIHdoZW4KK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNh
bGxlZC4gSWYgd3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKK05vbmUsIHlvdSBtdXN0IGNo
b29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bword3NfcHJv
dG9jb2wuCisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKword2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAorc3VjY2Vz
c2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBj
bGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92
aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRyYW5zZmVyLgorCitZb3UgY2FuIHJlY2VpdmUgYSBt
ZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgbWVzc2FnZSA9IHJlcXVl
c3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKK1RoaXMgY2FsbCBibG9ja3MgdW50aWwg
YW55IGNvbXBsZXRlIHRleHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKK29m
IHRoZSBpbmNvbWluZyBmcmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91
J3JlIHVzaW5nIElFVEYKK0h5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2Fn
ZSgpIHdpbGwgcmV0dXJuIE5vbmUgb24gcmVjZWl2aW5nCitjbGllbnQtaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlLiBXaGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCit3
aWxsIHJhaXNlIHNvbWUgZXhjZXB0aW9uLgorCitZb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKG1lc3NhZ2UpCisKKworQ2xvc2luZyBDb25uZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0K
KworRXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBm
cm9tCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KKwor
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorCitjbG9zZV9jb25uZWN0
aW9uIHdpbGwgd2FpdAorZm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21p
bmcgZnJvbSB0aGUgY2xpZW50LiBXaGVuIGl0Citjb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNr
bm93bGVkZ2VtZW50LCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCit3ZWJfc29ja2V0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKK2lu
Y29taW5nIGNsb3NpbmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlv
dSBjYW4gc3BlY2lmeQorY29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJl
IHNlbnQgYXMgYSBvdXRnb2luZyBjbG9zaW5nIGZyYW1lCitmcm9tIHRoZSBzZXJ2ZXIuIEEgcmVx
dWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KK3Vz
ZSBpbiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCistIHdzX2Nsb3NlX2Nv
ZGUKKy0gd3NfY2xvc2VfcmVhc29uCisKKworVGhyZWFkaW5nCistLS0tLS0tLS0KKworQSBXZWJT
b2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGUgc3RhbmRhbG9uZQorc2VydmVy
IHVzZXMgdGhyZWFkcyBieSBkZWZhdWx0LgorCisKK0NvbmZpZ3VyaW5nIFdlYlNvY2tldCBFeHRl
bnNpb24gUHJvY2Vzc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1NlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29ja2V0IGV4dGVuc2lv
bnMuIE5vdGUgdGhhdCB0aGV5IGFyZQordW5zdGFibGUgYW5kIHRoZWlyIEFQSXMgYXJlIHN1Ympl
Y3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCisKK0EgcmVxdWVzdCBvYmplY3QgaGFzIHRoZXNl
IGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KKworLSB3c19yZXF1ZXN0
ZWRfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBp
bnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJzIHJlY2VpdmVkIGZy
b20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBz
aG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgorCistIHdzX2V4dGVuc2lvbnM6CisKKyAgQSBs
aXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBl
eHRlbnNpb24KKyAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNsaWVudCBpbiB0aGUg
c2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBzaG91bGRuJ3QgdG91Y2ggaXQgZGly
ZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KKyAgcHJvY2Vzc29ycy4K
KworLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKKworICBBIGxpc3Qgb2YgbG9hZGVkIGV4dGVu
c2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQorICBleHRlbnNpb24g
eW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBtZXRob2RzLgorIiIi
CisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
ODc4YmM0YTM3OWI1YWQ4YzQyM2E4ZTM4ZGY0MDVhOTZjY2JmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkK
QEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdHJlYW0gRXhjZXB0aW9ucy4K
KyIiIgorCisjIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGlu
IHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhh
dCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgorIyBoYW5kbGVycy4gVW5m
b3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKKyMgcmVx
dWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93
IGRpcmVjdCByYXcgYnl0ZXMKKyMgd3JpdGluZy9yZWFkaW5nLgorCisKKyMgRXhjZXB0aW9ucwor
Y2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJU
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5h
dGVkCisgICAgdW5leHBlY3RlZGx5LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6CisgICAg
IiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZh
bGlkIGZyYW1lIHdlCisgICAgY2Fubm90IHBhcnNlLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhj
ZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCisg
ICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBj
YWxsZWQgb24KKyAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToK
KyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBm
cmFtZSB3aXRoIGZsYWcsIG9wY29kZQorICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNh
biBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCisgICAgY2FsbCByZWNl
aXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1l
LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSBy
ZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAorICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3Ry
aW5ncy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYjEx
ZjE1Y2IyZjU4MmU2YzI5ZTY5OGVlNWZmZjJhZmRlOGE3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CkBAIC0wLDAgKzEsMjcz
IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55
IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgorIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRp
b25zLgorTE9HTEVWRUxfRklORSA9IDkKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgdmVyc2lvbi4KK1ZFUlNJT05fSFlCSTEzID0gMTMKK1ZFUlNJT05fSFlCSTE0
ID0gMTMKK1ZFUlNJT05fSFlCSTE1ID0gMTMKK1ZFUlNJT05fSFlCSTE2ID0gMTMKK1ZFUlNJT05f
SFlCSTE3ID0gMTMKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJvdG9jb2wg
bGF0ZXN0IHZlcnNpb24uCitWRVJTSU9OX0hZQklfTEFURVNUID0gVkVSU0lPTl9IWUJJMTMKKwor
IyBQb3J0IG51bWJlcnMKK0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKK0RFRkFVTFRfV0VC
X1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIFNjaGVtZXMKK1dFQl9TT0NLRVRfU0NIRU1F
ID0gJ3dzJworV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycKKworIyBGcmFtZSBvcGNv
ZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENP
REVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorT1BDT0RFX0NMT1NFID0gMHg4CitP
UENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKKworIyBVVUlEIGZvciB0aGUgb3Bl
bmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tpbmcuCitXRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKworIyBPcGVuaW5nIGhh
bmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5kIGV4cGVjdGVkIHZhbHVlcy4KK1VQR1JBREVfSEVBREVS
ID0gJ1VwZ3JhZGUnCitXRUJTT0NLRVRfVVBHUkFERV9UWVBFID0gJ3dlYnNvY2tldCcKK0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCitVUEdSQURFX0NPTk5FQ1RJT05fVFlQRSA9ICdV
cGdyYWRlJworSE9TVF9IRUFERVIgPSAnSG9zdCcKK09SSUdJTl9IRUFERVIgPSAnT3JpZ2luJwor
U0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5JworU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JworU0VDX1dFQlNPQ0tF
VF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCitTRUNfV0VCU09DS0VU
X1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJworU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnCisKKyMgRXh0
ZW5zaW9ucworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxh
dGUnCisKKyMgU3RhdHVzIGNvZGVzCisjIENvZGUgU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCwg
U1RBVFVTX0FCTk9STUFMX0NMT1NVUkUsIGFuZAorIyBTVEFUVVNfVExTX0hBTkRTSEFLRSBhcmUg
cHNldWRvIGNvZGVzIHRvIGluZGljYXRlIHNwZWNpZmljIGVycm9yIGNhc2VzLgorIyBDb3VsZCBu
b3QgYmUgdXNlZCBmb3IgY29kZXMgaW4gYWN0dWFsIGNsb3NpbmcgZnJhbWVzLgorIyBBcHBsaWNh
dGlvbiBsZXZlbCBlcnJvcnMgbXVzdCB1c2UgY29kZXMgaW4gdGhlIHJhbmdlCisjIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4gVGhlIGNvZGVz
IGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VT
RVJfUkVHSVNURVJFRF9NQVggYXJlIG1hbmFnZWQKKyMgYnkgSUFOQS4gVXN1YWxseSBhcHBsaWNh
dGlvbiBtdXN0IGRlZmluZSB1c2VyIHByb3RvY29sIGxldmVsIGVycm9ycyBpbiB0aGUKKyMgcmFu
Z2UgU1RBVFVTX1VTRVJfUFJJVkFURV9CQVNFIHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLgor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VO
RFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CitTVEFUVVNf
VVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCitTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCA9
IDM5OTkKK1NUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSA9IDQwMDAKK1NUQVRVU19VU0VSX1BSSVZB
VEVfTUFYID0gNDk5OQorIyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGFsaWFzZXMgdG8ga2Vl
cCBjb21wYXRpYmlsaXR5LiBBcHBsaWNhdGlvbnMgbXVzdAorIyBub3QgdXNlIHRoZXNlIG9ic29s
ZXRlZCBkZWZpbml0aW9ucyBhbnltb3JlLgorU1RBVFVTX05PUk1BTCA9IFNUQVRVU19OT1JNQUxf
Q0xPU1VSRQorU1RBVFVTX1VOU1VQUE9SVEVEID0gU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEKK1NU
QVRVU19DT0RFX05PVF9BVkFJTEFCTEUgPSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECitTVEFU
VVNfQUJOT1JNQUxfQ0xPU0UgPSBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRQorU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRCA9IFNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQQorU1RB
VFVTX01BTkRBVE9SWV9FWFQgPSBTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTgorCisjIEhUVFAg
c3RhdHVzIGNvZGVzCitIVFRQX1NUQVRVU19CQURfUkVRVUVTVCA9IDQwMAorSFRUUF9TVEFUVVNf
Rk9SQklEREVOID0gNDAzCitIVFRQX1NUQVRVU19OT1RfRk9VTkQgPSA0MDQKKworCitkZWYgaXNf
Y29udHJvbF9vcGNvZGUob3Bjb2RlKToKKyAgICByZXR1cm4gKG9wY29kZSA+PiAzKSA9PSAxCisK
KworY2xhc3MgRXh0ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CisgICAgIiIiVGhpcyBpcyBleGNo
YW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGluIG9wZW5pbmcgaGFuZHNoYWtlLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUK
KyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBt
b3JlIGVmZmljaWVudCBvbmUgc3VjaAorICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBj
aGFuZ2VzIHRvIHNheSBsaWtlCisgICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1
bmlxdWUKKyAgICAgICAgIyAtIFRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZp
Y2FudAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gW10KKworICAgIGRlZiBuYW1lKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dGVuc2lvbiBuYW1lLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUp
OgorICAgICAgICAiIiJBZGQgYSBwYXJhbWV0ZXIuIiIiCisgICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6
CisgICAgICAgICIiIlJldHVybiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcmFtZXRlcnMKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgorICAgICAgICBy
ZXR1cm4gW25hbWUgZm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQor
CisgICAgZGVmIGhhc19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlRlc3QgaWYg
YSBwYXJhbWV0ZXIgZXhpc3RzLiIiIgorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFs
dWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFt
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQg
dGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgcGFyYW1ldGVyLiIiIgorICAgICAgICBmb3IgcGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBh
cmFtX25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKKwor
CitjbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiRXhj
ZXB0aW9uIHRvIGhhbmRsZSBlcnJvcnMgaW4gZXh0ZW5zaW9uIHBhcnNpbmcuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhj
ZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorCisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uX3Bh
cmFtKHN0YXRlLCBkZWZpbml0aW9uKToKKyAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3Rva2VuKHN0YXRlKQorCisgICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgorICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3VuZCcpCisKKyAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0n
KToKKyAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCisg
ICAgICAgIHJldHVybgorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRl
KQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJz
ZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KKyAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQorICAgIGlmIHBhcmFtX3Zh
bHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCisg
ICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1o
YW5kIHNpZGUgb2YgJworICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQor
CisgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQor
CisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKKyAgICBleHRlbnNpb25fdG9rZW4gPSBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgaWYgZXh0ZW5zaW9uX3Rv
a2VuIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBleHRlbnNpb24gPSBFeHRl
bnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIG5v
dCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgorICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0
ZSwgZXh0ZW5zaW9uKQorICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJSAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKKworICAgIHJldHVybiBleHRlbnNpb24KKworCitkZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKKyAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgorCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCisgICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCisgICAgIiIiCisg
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
CisgICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JworICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJSBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAg
ICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgZXh0ZW5zaW9u
IGVudHJ5IGZvdW5kJykKKworICAgIHJldHVybiBleHRlbnNpb25fbGlzdAorCisKK2RlZiBmb3Jt
YXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6CisgICAgIiIiRm9ybWF0IGFuIEV4dGVuc2lvblBhcmFt
ZXRlciBvYmplY3QuIiIiCisgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgp
XQorICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFt
ZXRlcnMoKToKKyAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIGZv
cm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShw
YXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycg
JSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKKyAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1h
dHRlZF9wYXJhbXMpCisKKworZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToK
KyAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgor
ICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCisgICAgZm9yIGV4dGVuc2lvbiBpbiBl
eHRlbnNpb25fbGlzdDoKKyAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChm
b3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCisgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0
ZWRfZXh0ZW5zaW9uX2xpc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlOTQzYTVi
ODBhZmRjMGJkYTk1M2FhMmE3MzE5OGI5OWE0NTliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpAQCAtMCwwICsxLDM4NSBA
QAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisiIiJEaXNwYXRjaCBXZWJTb2NrZXQgcmVxdWVzdC4KKyIiIgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgc3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCitf
U09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dzaFwucHkkJykKK19TT1VS
Q0VfU1VGRklYID0gJ193c2gucHknCitfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9
ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKK19UUkFOU0ZFUl9EQVRBX0hBTkRMRVJf
TkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCitfUEFTU0lWRV9DTE9TSU5HX0hBTkRT
SEFLRV9IQU5ETEVSX05BTUUgPSAoCisgICAgJ3dlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZScpCisKKworY2xhc3MgRGlzcGF0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAi
IiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViU29ja2V0IHJlcXVlc3QuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5E
KToKKyAgICAgICAgc3VwZXIoRGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUp
CisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworZGVmIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KToKKyAgICAiIiJEZWZhdWx0IHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgorCisgICAgcmV0dXJu
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICcnCisKKworZGVmIF9ub3JtYWxpemVfcGF0
aChwYXRoKToKKyAgICAiIiJOb3JtYWxpemUgcGF0aC4KKworICAgIEFyZ3M6CisgICAgICAgIHBh
dGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KKworICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRo
ZSBhYnNvbHV0ZSBwYXRoLgorICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcg
b3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCisgICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMg
dXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCisgICAgIiIiCisKKyAgICBwYXRo
ID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQorICAgIHBhdGggPSBvcy5wYXRoLnJl
YWxwYXRoKHBhdGgpCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCisgICAgcmV0
dXJuIHBhdGgKKworCitkZWYgX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNl
X2Rpcik6CisgICAgIiIiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGgg
b2YgYSBXZWJTb2NrZXQgaGFuZGxlciBzb3VyY2UKKyAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3Ry
aW5nIGJ5IHJlbW92aW5nIHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCisgICAg
aXRzIGhlYWQsIHJlbW92aW5nIF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBs
YWNpbmcgcGF0aAorICAgIHNlcGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCisKKyAgICBBcmdzOgor
ICAgICAgICBiYXNlX2RpcjogdGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgorICAgICIi
IgorCisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCisKKyAgICBiYXNl
X2xlbiA9IGxlbihiYXNlX2RpcikKKyAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklY
KQorCisgICAgZGVmIGNvbnZlcnRlcihwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dp
dGgoX1NPVVJDRV9TVUZGSVgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBf
bm9ybWFsaXplX3BhdGggbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5r
IGJyZWFrcworICAgICAgICAjIGZvbGxvd2luZyBwYXRoIGNoZWNrLgorICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChi
YXNlX2Rpcik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gcGF0aFti
YXNlX2xlbjotc3VmZml4X2xlbl0KKworICAgIHJldHVybiBjb252ZXJ0ZXIKKworCitkZWYgX2Vu
dW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAiIiJSZXR1cm5zIGEg
Z2VuZXJhdG9yIHRoYXQgZW51bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBu
YW1lcworICAgIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCisgICAgIiIiCisKKyAgICBmb3Igcm9v
dCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAgICAgZm9y
IGJhc2UgaW4gZmlsZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJh
c2UpCisgICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Cisg
ICAgICAgICAgICAgICAgeWllbGQgcGF0aAorCisKK2NsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0
KToKKyAgICAiIiJBIGhhbmRsZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGEsCisgICAgICAgICAg
ICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgorICAgICAgICBzZWxmLmRvX2V4dHJh
X2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICBzZWxmLnRyYW5zZmVyX2Rh
dGEgPSB0cmFuc2Zlcl9kYXRhCisgICAgICAgIHNlbGYucGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKKworCitkZWYgX3NvdXJjZV9oYW5kbGVyX2Zp
bGUoaGFuZGxlcl9kZWZpbml0aW9uKToKKyAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRp
b24gc3RyaW5nLgorCisgICAgQXJnczoKKyAgICAgICAgaGFuZGxlcl9kZWZpbml0aW9uOiBhIHN0
cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVmaW5lCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCisgICAgIiIiCisKKyAgICBnbG9i
YWxfZGljID0ge30KKyAgICB0cnk6CisgICAgICAgICMgVGhpcyBzdGF0ZW1lbnQgaXMgZ3JhbWF0
aWNhbGx5IGRpZmZlcmVudCBpbiBweXRob24gMiBhbmQgMy4KKyAgICAgICAgIyBIZW5jZSwgeWFw
ZiB3aWxsIGNvbXBsYWluIGFib3V0IHRoaXMuIFRvIG92ZXJjb21lIHRoaXMsIHdlIGRpc2FibGUK
KyAgICAgICAgIyB5YXBmIGZvciB0aGlzIGxpbmUuCisgICAgICAgIGV4ZWMoaGFuZGxlcl9kZWZp
bml0aW9uLCBnbG9iYWxfZGljKSAjIHlhcGY6IGRpc2FibGUKKyAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFu
ZGxlcjonICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKKyAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCisg
ICAgdHJ5OgorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0
cmFjdF9oYW5kbGVyKAorICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19I
QU5EU0hBS0VfSEFORExFUl9OQU1FKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHBh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKKyAgICAgICAgICAgIF9kZWZhdWx0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKKyAgICByZXR1cm4gX0hhbmRsZXJT
dWl0ZSgKKyAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFO
RFNIQUtFX0hBTkRMRVJfTkFNRSksCisgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5n
X2hhbmRzaGFrZV9oYW5kbGVyKQorCisKK2RlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6
CisgICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9t
IHRoZSBnaXZlbiBkaWN0aW9uYXJ5CisgICAgZGljLgorICAgICIiIgorCisgICAgaWYgbmFtZSBu
b3QgaW4gZGljOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRl
ZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRpY1tuYW1lXQorICAgIGlmIG5vdCBjYWxs
YWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5v
dCBjYWxsYWJsZS4nICUgbmFtZSkKKyAgICByZXR1cm4gaGFuZGxlcgorCisKK2NsYXNzIERpc3Bh
dGNoZXIob2JqZWN0KToKKyAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KKwor
ICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5k
bGVycy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAg
cm9vdF9kaXIsCisgICAgICAgICAgICAgICAgIHNjYW5fZGlyPU5vbmUsCisgICAgICAgICAgICAg
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6CisgICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcm9vdF9k
aXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVzIGFyZQorICAg
ICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5fZGlyOiBUaGUgZGly
ZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAgICAgICAgICAgICAg
ICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciByb290
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9kaXIgaXRzZWxmLiAg
SWYgc2Nhbl9kaXIgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICByb290X2RpciBpcyB1
c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCisgICAgICAgICAgICAgICAg
ICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRhaW5zIG1hbnkKKyAg
ICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIGFsbG93X2hh
bmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmlsZXMgZXZlbiBpZiB0aGVp
cgorICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciByb290
X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXAgPSB7fQor
ICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQorICAgICAgICBpZiBzY2FuX2RpciBp
cyBOb25lOgorICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2RpcgorICAgICAgICBpZiBub3Qg
b3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICBv
cy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4
Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMuJyAlIChzY2FuX2Rpciwg
cm9vdF9kaXIpKQorICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIocm9v
dF9kaXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKworICAgIGRlZiBhZGRfcmVzb3Vy
Y2VfcGF0aF9hbGlhcyhzZWxmLCBhbGlhc19yZXNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKKyAgICAgICAgIiIiQWRk
IHJlc291cmNlIHBhdGggYWxpYXMuCisKKyAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0byBh
bGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgaGFuZGxlciBy
ZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCisgICAg
ICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRoCisg
ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2Vs
Zi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KKyAgICAgICAgICAg
IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhdID0gaGFuZGxlcl9z
dWl0ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRj
aEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAgZGVmIHNvdXJjZV93
YXJuaW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5nIGhh
bmRsZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKKworICAg
IGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkRvIGV4
dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICAgICAgU2VsZWN0IGEg
aGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKKyAgICAgICAgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQK
KyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFi
b3J0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBvcGVu
aW5nIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgaGFuZGxlcl9zdWl0
ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAg
aWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAg
ICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRyYV9oYW5kc2hha2UK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0KQor
ICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24g
dG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcg
YW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAnICUKKyAgICAg
ICAgICAgICAgICAoX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLCBlKQorICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2Vw
dGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVOKQorCisgICAgZGVmIHRyYW5zZmVy
X2RhdGEoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkxldCBhIGhhbmRsZXIgdHJhbnNmZXJf
ZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVy
IGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2FzIG5vdCBmb3VuZAorICAg
ICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2VyIGhhbmRsZXIgYWJvcnQg
Y29ubmVjdGlvbgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBUZXJt
aW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4KKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVx
dWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6
ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSkKKyAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0ZS50
cmFuc2Zlcl9kYXRhCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQorCisgICAg
ICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAgICAgIyBDYXRjaCBu
b24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUgaGFuZGxlciBkaWRuJ3QgaGFuZGxlLgorICAgICAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIEludmFs
aWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBiZWZvcmUKKyAgICAgICAgICAgICMgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbi4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RP
Q09MX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19V
TlNVUFBPUlRFRF9EQVRBKQorICAgICAgICBleGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKKyAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAjIEFueSBvdGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQg
dG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAgICAgICAjIGZ1bmN0aW9uLgorICAgICAgICAg
ICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICcl
cyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisgICAgICAgICAgICAgICAgKF9UUkFOU0ZF
Ul9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUpCisgICAgICAgICAg
ICByYWlzZQorCisgICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciByZXNwb25kaW5nIGNs
aWVudCBpbml0aWF0ZWQgY2xvc2luZworICAgICAgICBoYW5kc2hha2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9jbG9zaW5nX2hhbmRz
aGFrZShyZXF1ZXN0KQorCisgICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNlbGYsIHJlc291cmNl
KToKKyAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZvciBleHRyYSBoYW5k
c2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQorICAgICAgICBmb3IgZGF0YSB0cmFuc2ZlcikgZm9y
IHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgZnJhZ21lbnQgPSBOb25lCisgICAgICAgIGlmICcjJyBpbiByZXNvdXJjZToK
KyAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNwbGl0KCcjJywgMSkK
KyAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVzb3VyY2UgPSByZXNv
dXJjZS5zcGxpdCgnPycsIDEpWzBdCisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLl9oYW5k
bGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgYW5k
IGZyYWdtZW50OgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gV2ViU29j
a2V0IFVSSXMnLAorICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKKworICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKToK
KyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMgaW4gdGhlIHNj
YW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBpcyBkZXRlcm1p
bmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIGJ1
aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5nIHRoYXQgdGhl
cmUncworICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBzY2FuX2RpciBh
bmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5CisgICAgICAgICMgY29tcGFyaW5nIHJlYWxwYXRoIG9m
IHRoZW0uCisKKyAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4gU2VlCisgICAg
ICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjAzCisKKyAg
ICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocm9vdF9k
aXIpCisgICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKQor
ICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2RpcikKKyAgICAg
ICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nhbl9yZWFscGF0
aCk6CisgICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIg
YW5kCisgICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpLnN0YXJ0c3dp
dGgocm9vdF9yZWFscGF0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
CisgICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBub3QgdW5kZXIg
cm9vdCBkaXJlY3RvcnknICUgcGF0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBoYW5kbGVyX2Zp
bGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJf
ZmlsZShoYW5kbGVyX2ZpbGUucmVhZCgpKQorICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzLmFwcGVu
ZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmVzb3VyY2UgPSBjb252ZXJ0KHBhdGgpCisgICAgICAgICAgICBpZiByZXNvdXJjZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUGF0aCB0byByZXNv
dXJjZSBjb252ZXJzaW9uIG9uICVzIGZhaWxlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJfc3VpdGUKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2V4dGVuc2lvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0NTM5ZjZmY2UxNGJlZTY1ZDdmYTdhNTgzYWNi
YjY1ZjAyM2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5CkBAIC0wLDAgKzEsNDczIEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldC5odHRwX2hlYWRlcl91dGlsIGltcG9ydCBxdW90ZV9pZl9uZWNl
c3NhcnkKKworIyBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzc2VzLgorX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KKworCitjbGFzcyBF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYu
X2FjdGl2ZSA9IFRydWUKKworICAgIGRlZiByZXF1ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKHNlbGYs
IHByb2Nlc3NvcnMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0X2FjdGl2ZShzZWxmLCBh
Y3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUKKworICAgIGRlZiBpc19hY3Rp
dmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgIGRlZiBfZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHRlbnNpb24gJXMg
aXMgZGVhY3RpdmF0ZWQnLCBzZWxmLm5hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFs
KCkKKyAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2
ZSA9IEZhbHNlCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIF9zZXR1cF9zdHJl
YW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX3N0cmVhbV9v
cHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQorCisKK2RlZiBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6CisgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxv
YXQoJ2luZicpCisgICAgaWYgb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8gPSBm
bG9hdChmaWx0ZXJlZF9ieXRlcykgLyBvcmlnaW5hbF9ieXRlcworCisgICAgbG9nZ2VyLmRlYnVn
KCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAg
ICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfbG9nX2luY29taW5n
X2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6Cisg
ICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0g
ZmxvYXQoJ2luZicpCisgICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8g
PSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcworCisgICAgbG9nZ2VyLmRl
YnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAg
ICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfcGFyc2Vfd2lu
ZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVlIGlmZiB0
aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAgIGdyYW1tYXIgb2YgdGhlIHdpbmRv
dyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAgaWYgYml0cyBpcyBO
b25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcpCisKKyAg
ICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJyb3Igd2ls
bCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0cykKKworICAgICMgRmlyc3QgY29u
ZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgorICAgIGlmIGJp
dHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAxNToKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykKKworICAg
IHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKG9iamVj
dCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1bHQgZGF0
YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJhdGlvLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdG90YWxfb3Jp
Z2luYWxfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKKwor
ICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUK
KworICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fdG90
YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5f
dG90YWxfcmVzdWx0X2J5dGVzKSAvCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29y
aWdpbmFsX2J5dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdp
bmYnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIicGVybWVzc2FnZS1kZWZsYXRlIGV4dGVu
c2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Cisg
ICAgIiIiCisKKyAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJworICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJworICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLiIiIgorCisgICAgICAgIEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICMg
VGhpcyBtZXRob2QgcmV0dXJucyAiZGVmbGF0ZSIgKG5vdCAicGVybWVzc2FnZS1kZWZsYXRlIikg
Zm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgcmV0dXJuICdkZWZsYXRlJwor
CisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgorICAgICAg
ICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKToKKyAgICAg
ICAgICAgIGlmIG5hbWUgbm90IGluIFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0KKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFtZXRlcjogJXInLCBuYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0
cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1NF
UlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93
X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKKyAgICAgICAgaWYgKHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisg
ICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlz
IG5vdCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJvbSBh
IGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgorICAgICAgICAjIGFjY2Vw
dCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgorICAgICAgICBj
bGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cigKKyAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAg
ICAgIGlmIChjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKKyAgICAgICAgICAgICAgICAnY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93
aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorCisgICAgICAg
ICMgTm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQg
d2l0aCB3aW5kb3cKKyAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xp
ZW50X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQorICAgICAgICAjIHNlbnQgdG8gdGhlIGNs
aWVudC4KKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVy
KHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKyAgICAgICAgc2Vs
Zi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29t
cHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgICAgIHJlc3BvbnNlID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKworICAgICAgICBpZiBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2Uu
YWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX21heF93aW5kb3dfYml0cykp
CisKKyAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBy
ZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BB
UkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisgICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgaWYgbm90IGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ1Byb2Nl
c3NvciBpcyBjb25maWd1cmVkIHRvIHVzZSAlcyBidXQgJworICAgICAgICAgICAgICAgICAgICAn
dGhlIGNsaWVudCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Q0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQorCisgICAgICAgIGlmIHNl
bGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgcmVzcG9uc2UuYWRk
X3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXNwb25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
PSVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgp
LCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKSkKKworICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgc2V0X2NsaWVudF9tYXhfd2luZG93
X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZp
ZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyBl
eHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsCisgICAgICAgIGJ1
dCBkb2Vzbid0IHJlZHVjZSB0aGUgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXplIG9mIGl0cyBpbmZs
YXRlci4KKyAgICAgICAgSS5lLiwgeW91IGNhbiB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQg
aW1wbGVtZW50YXRpb24gYnV0IGNhbm5vdAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9m
IHRoaXMgY2xhc3MuCisKKyAgICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIHdp
dGggVHJ1ZSBhbmQgYW4gb2ZmZXIgd2l0aG91dCB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5k
b3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIGlzIHJlY2VpdmVkLAorICAgICAgICAtIChXaGVu
IHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24pIHRoaXMgcHJvY2Vz
c29yCisgICAgICAgICAgZGVjbGluZXMgdGhlIHJlcXVlc3QuCisgICAgICAgIC0gKFdoZW4gcHJv
Y2Vzc2luZyB0aGUgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29y
CisgICAgICAgICAgYWNjZXB0cyB0aGUgcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSB2YWx1ZQorCisgICAgZGVm
IHNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6CisgICAgICAgICIi
IklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAgICAg
ICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBo
YW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlc2V0IGluZmxhdGVyIGZv
ciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBjYW4KKyAgICAgICAgdXNlIHRoaXMgZm9yIHRlc3Rp
bmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QgcmVkdWNlIG1lbW9yeQorICAgICAg
ICB1c2FnZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9jbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxm
LCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZhbHVlKQorCisgICAg
ZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisKKyAgICBkZWYgZGlzYWJs
ZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZhbHNlKQorCisKK2NsYXNzIF9QZXJNZXNzYWdlRGVm
bGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEgZnJhbWVyIGZvciBleHRlbnNpb25zIHdpdGgg
cGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
ZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAg
ICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAg
ICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92
ZXIpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKKworICAgICAgICBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKKworICAgICAgICAjIFRydWUgaWYgYSBt
ZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9uIGlzIG9uZ29pbmcuCisgICAgICAg
IHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQorCisgICAgICAgICMgQ2FsY3VsYXRlcwor
ICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0
ZXIpIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0
ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2Vf
cmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKKworICAgICAgICAj
IENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVk
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCisKKyAgICBk
ZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVl
CisKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgor
ICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gdmFsdWUKKworICAgIGRl
ZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgor
ICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKKyAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisK
KyAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCisgICAgICAgIHNl
bGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAor
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAgICAgIGZpbHRlcmVk
X3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25f
cmF0aW8oCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKKworICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKwor
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygK
KyAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1lbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmluYWw9c2VsZi5fYmZpbmFsKQorCisg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxm
Ll9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKKyAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBfbG9nX291dGdvaW5n
X2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLCBvcmlnaW5hbF9w
YXlsb2FkX3NpemUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQorCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgorICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQorICAgICAgICBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nID0gbm90IGVuZAorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisg
ICAgZGVmIF9wcm9jZXNzX2luY29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAgICAgaWYg
ZnJhbWUucnN2MSA9PSAxIGFuZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSk6CisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXBy
ZXNzX25leHRfbWVzc2FnZSgpCisgICAgICAgICAgICBmcmFtZS5yc3YxID0gMAorCisgICAgZGVm
IF9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgor
ICAgICAgICBpZiAobm90IGNvbXByZXNzaW9uX2JpdCBvciBjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmcmFtZS5y
c3YxID0gMQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0
cmVhbU9wdGlvbnMuIiIiCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2Jq
ZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNl
bGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSgKKyAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgY2xhc3MgX0luY29taW5n
TWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0ID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQoc2Vs
Zik6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUKKwor
ICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKGZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxz
ZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1l
KQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1l
RmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNv
bWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVu
ZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikKKworICAgICAgICBz
dHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQorCisKK19h
dmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0g
PSAoCisgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisKKworZGVmIGdl
dF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToKKyAgICAiIiJHaXZlbiBh
biBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVuc2lvbiBvZmZlciByZWNl
aXZlZAorICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBleHRlbnNpb24gcHJvY2Vzc29yIGNsYXNzLgor
ICAgICIiIgorCisgICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJsZV9wcm9jZXNzb3JzLmdl
dChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCisgICAgaWYgcHJvY2Vzc29yX2NsYXNzIGlzIE5v
bmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHByb2Nlc3Nvcl9jbGFzcyhleHRl
bnNpb25fcmVxdWVzdCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGFhZDI3
ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCkBAIC0wLDAgKzEs
OTggQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisl
bW9kdWxlIGZhc3RfbWFza2luZworCislaW5jbHVkZSAiY3N0cmluZy5pIgorCisleworI2luY2x1
ZGUgPGNzdHJpbmc+CisKKyNpZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgor
I2VuZGlmCislfQorCislYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgeworICAgIChj
b25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAorICAgIChjb25zdCBjaGFy
KiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKKyVjc3RyaW5nX291dHB1
dF9hbGxvY2F0ZV9zaXplKAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwg
ZGVsZXRlIFtdICokMSk7CisKKyVpbmxpbmUgJXsKKwordm9pZCBtYXNrKAorICAgIGNvbnN0IGNo
YXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKKyAgICBjb25zdCBjaGFyKiBtYXNraW5n
X2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKKyAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgs
CisgICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7CisgICpyZXN1bHQgPSBu
ZXcgY2hhcltwYXlsb2FkX2xlbmd0aF07CisgICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5n
dGg7CisgIG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7CisKKyAgY2hh
ciogY3Vyc29yID0gKnJlc3VsdDsKKyAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVz
dWx0X2xlbmd0aDsKKworI2lmZGVmIF9fU1NFMl9fCisgIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29y
X2VuZCkgJiYKKyAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4
ZikpIHsKKyAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAg
ICArK2N1cnNvcjsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCAr
IDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisgIGlmIChjdXJzb3IgPT0gY3Vyc29yX2Vu
ZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Cisg
IF9fbTEyOGkgbWFza2luZ19rZXlfYmxvY2s7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2Nr
U2l6ZTsgKytpKSB7CisgICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlf
YmxvY2spICsgaSkgPQorICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Cisg
ICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdf
a2V5X2xlbmd0aDsKKyAgfQorCisgIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNv
cl9lbmQpIHsKKyAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQorICAgICAgICBfbW1fbG9hZF9z
aTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKKyAgICBfbW1fc3RyZWFt
X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCisgICAgICAgICAgICAg
ICAgICAgICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7
CisgICAgY3Vyc29yICs9IGtCbG9ja1NpemU7CisgIH0KKyNlbmRpZgorCisgIHdoaWxlIChjdXJz
b3IgPCBjdXJzb3JfZW5kKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF07CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2lu
Z19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorfQorCislfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiZTVhZTlmZGZkNDZkMTg5NzBiZjk5MmNjMWFkZWEyNWFj
YzVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMgQ29weXJpZ2h0IDIw
MTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4gVGhpcyBjbGFzcyB0
cnkgdG8gYXBwbHkgYXZhaWxhYmxlCitvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBl
YWNoIHByb3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCitzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaQorIyBFeHBvcnQgQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwgSGFuZHNoYWtlRXhjZXB0aW9uLCBhbmQgVmVyc2lvbkV4Y2Vw
dGlvbgorIyBzeW1ib2wgZnJvbSB0aGlzIG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgor
CitfTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIGRvX2hhbmRz
aGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAiIiJQZXJmb3JtcyBXZWJTb2NrZXQgaGFu
ZHNoYWtlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgorICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4K
KworICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNl
IGluIHBlcmZvcm1pbmcKKyAgICBoYW5kc2hha2UuCisgICAgIiIiCisKKyAgICBfTE9HR0VSLmRl
YnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgcmVzb3VyY2U6ICVyJywgcmVxdWVzdC51
cmkpCisgICAgIyBUbyBwcmludCBtaW1ldG9vbHMuTWVzc2FnZSBhcyBlc2NhcGVkIG9uZS1saW5l
IHN0cmluZywgd2UgY29udmVydHMKKyAgICAjIGhlYWRlcnNfaW4gdG8gZGljdCBvYmplY3QuIFdp
dGhvdXQgY29udmVyc2lvbiwgaWYgd2UgdXNlICVyLCBpdCBqdXN0CisgICAgIyBwcmludHMgdGhl
IHR5cGUgYW5kIGFkZHJlc3MsIGFuZCBpZiB3ZSB1c2UgJXMsIGl0IHByaW50cyB0aGUgb3JpZ2lu
YWwKKyAgICAjIGhlYWRlciBzdHJpbmcgYXMgbXVsdGlwbGUgbGluZXMuCisgICAgIworICAgICMg
Qm90aCBtaW1ldG9vbHMuTWVzc2FnZSBhbmQgTXBUYWJsZV9UeXBlIG9mIG1vZF9weXRob24gY2Fu
IGJlCisgICAgIyBjb252ZXJ0ZWQgdG8gZGljdC4KKyAgICAjCisgICAgIyBtaW1ldG9vbHMuTWVz
c2FnZS5fX3N0cl9fIHJldHVybnMgdGhlIG9yaWdpbmFsIGhlYWRlciBzdHJpbmcuCisgICAgIyBk
aWN0KG1pbWV0b29scy5NZXNzYWdlIG9iamVjdCkgcmV0dXJucyB0aGUgbWFwIGZyb20gaGVhZGVy
IG5hbWVzIHRvCisgICAgIyBoZWFkZXIgdmFsdWVzLiBXaGlsZSBNcFRhYmxlX1R5cGUgZG9lc24n
dCBoYXZlIHN1Y2ggX19zdHJfXyBidXQganVzdAorICAgICMgX19yZXByX18gd2hpY2ggZm9ybWF0
cyBpdHNlbGYgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgICBfTE9HR0VSLmRlYnVn
KCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAg
ICAgICAgZGljdChyZXF1ZXN0LmhlYWRlcnNfaW4pKQorCisgICAgaGFuZHNoYWtlcnMgPSBbXQor
ICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgoJ1JGQyA2NDU1JywgaHliaS5IYW5kc2hha2VyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpKSkKKworICAgIGZvciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFr
ZXJzOgorICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycs
IG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKKyAgICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVzIHByb3RvY29sKScs
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
RmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcics
CisgICAgICAgICAgICAgICAgbmFtZSwgZSkKKyAgICAgICAgICAgIGlmIGUuc3RhdHVzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorCisgICAgIyBUT0RPKHRveW9zaGltKTogQWRk
IGEgdGVzdCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFpbC4KKyAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3Blbmlu
ZyBoYW5kc2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKKyAgICAgICAgc3RhdHVz
PWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1OGRkOGQ0OTdkOWQ4OWRkOWMxMDQzMmJjZGJhM2U5MDNlMWI2
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CkBAIC0wLDAgKzEsMTc5IEBACisjIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkNvbW1vbiBmdW5jdGlvbnMgYW5kIGV4Y2VwdGlvbnMgdXNlZCBieSBXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UKK3Byb2Nlc3NvcnMuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKworY2xhc3MgQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRp
bmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFsbHkuCisKKyAgICBJZiB0aGlzIGV4Y2VwdGlvbiBp
cyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCisg
ICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRs
ZXIgd2lsbCBiZSBpbnZva2VkLgorCisgICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlu
IHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAorICAgIGJlIGNsb3Nl
ZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChT
KSBoYW5kbGVyCisgICAgd2lsbCBiZSBpbnZva2VkLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2lu
ZworICAgIFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgc3RhdHVzPU5vbmUpOgorICAgICAgICBzdXBlcihIYW5kc2hha2VF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3Rh
dHVzCisKKworY2xhc3MgVmVyc2lvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMg
ZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSB2ZXJzaW9uIG9mIGNsaWVudCByZXF1ZXN0
IGRvZXMgbm90CisgICAgbWF0Y2ggd2l0aCB2ZXJzaW9uIHRoZSBzZXJ2ZXIgc3VwcG9ydHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0n
Jyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEgc3RyIG9iamVjdCB0byBzaG93IHN1cHBv
cnRlZCBoeWJpIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcu
ICcxMycpCisgICAgICAgICIiIgorICAgICAgICBzdXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxm
KS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBv
cnRlZF92ZXJzaW9ucworCisKK2RlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6CisgICAg
aWYgaXNfc2VjdXJlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9T
RUNVUkVfUE9SVAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQKKworCitkZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgor
ICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmll
bGQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMg
NjQ1NS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBzdWJwcm90b2NvbDoKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29sIG5hbWU6IGVtcHR5JykKKwor
ICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4uCisgICAgc3RhdGUg
PSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShzdWJwcm90b2NvbCkKKyAgICB0b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICByZXN0ID0gaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQorICAgICMgSWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3Vi
cHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3IgaW52YWxpZC4gSWYKKyAgICAjIHxyZXN0fCBp
cyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlz
CisgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5v
bmUuCisgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9jb2wgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJlc3QpCisKKworZGVmIHBh
cnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgorICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19p
bltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKKyAgICBpZiBsZW4oZmllbGRzKSA9
PSAxOgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3Qu
aXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVs
ZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUgZSkKKworCitk
ZWYgZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSk6CisgICAgcmV0dXJuIHUnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCisKKworZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6CisgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKKyAgICBpZiB2YWx1
ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6CisgICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
CisKKyAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6CisgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKKyAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksCisgICAgICAgICAgICBzdGF0dXM9ZmFp
bF9zdGF0dXMpCisKKworZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KToKKyAgICAjIDUu
MSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4KKyAgICAjIDUuMSAy
LiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRlKS4KKyAg
ICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSB1J0dFVCc6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisgICAg
aWYgcmVxdWVzdC5wcm90b2NvbCAhPSB1J0hUVFAvMS4xJzoKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCisKKworZGVmIHBhcnNlX3Rv
a2VuX2xpc3QoZGF0YSk6CisgICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxv
d3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKKyAgICBhcyBhIGxpc3Qgb2Yg
c3RyaW5ncy4KKworICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgorICAgICIiIgor
CisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAg
dG9rZW5fbGlzdCA9IFtdCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0b2tlbiA9IGh0dHBf
aGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKKworICAgICAgICBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbih0b2tlbl9saXN0KSA9PSAwOgorICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ05vIHZhbGlkIHRva2VuIGZvdW5kJykKKworICAg
IHJldHVybiB0b2tlbl9saXN0CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZkNjNlYjYzZWRkMWY0YWNmODg3ZGYzNWQ0YmRjM2I2ZTEzOTkxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5w
eQpAQCAtMCwwICsxLDM5NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgcHJvdmlk
ZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAorcHJv
dG9jb2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydAoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJl
Citmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVu
c2lvbl9wcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgY2hlY2tfcmVxdWVzdF9saW5lCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9z
dWJwcm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBW
ZXJzaW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAor
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKyMgVXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFs
dWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2NDgKKyMg
ZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQgYmVmb3Jl
ID09IG11c3QgYmUgYW55IG9mCisjIEEsIFEsIGcgYW5kIHcuCitfU0VDX1dFQlNPQ0tFVF9LRVlf
UkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQorCisjIERl
ZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRF
U1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9
IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJT
SU9OX0xBVEVTVCwKK10KKworCitkZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKKyAgICAiIiJDb21w
dXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9tIHZhbHVl
IG9mIHRoZQorICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAiIiIKKworICAgIGFj
Y2VwdF9iaW5hcnkgPSBzaGExKGtleSArIGNvbW1vbi5XRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRp
Z2VzdCgpCisgICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2NlcHRfYmluYXJ5KQorCisg
ICAgcmV0dXJuIGFjY2VwdAorCisKK2RlZiBjb21wdXRlX2FjY2VwdF9mcm9tX3VuaWNvZGUodW5p
Y29kZV9rZXkpOgorICAgICIiIkEgd3JhcHBlciBmdW5jdGlvbiBmb3IgY29tcHV0ZV9hY2NlcHQg
d2hpY2ggdGFrZXMgYSB1bmljb2RlIHN0cmluZyBhcyBhbgorICAgIGFyZ3VtZW50LCBhbmQgZW5j
b2RlcyBpdCB0byBieXRlIHN0cmluZy4gSXQgdGhlbiBwYXNzZXMgaXQgb24gdG8KKyAgICBjb21w
dXRlX2FjY2VwdC4KKyAgICAiIiIKKworICAgIGtleSA9IHVuaWNvZGVfa2V5LmVuY29kZSgnVVRG
LTgnKQorICAgIHJldHVybiBjb21wdXRlX2FjY2VwdChrZXkpCisKKworY2xhc3MgSGFuZHNoYWtl
cihvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
CisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVy
KS4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19y
ZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9s
b2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisg
ICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgY29ubmVj
dGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tl
bl9saXN0KGNvbm5lY3Rpb24pCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRmFpbGVkIHRvIHBhcnNl
ICVzOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24u
Q09OTkVDVElPTl9IRUFERVIsIGUpKQorCisgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBG
YWxzZQorICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6CisgICAgICAgICAg
ICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dl
cigpOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6CisgICAg
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIGhl
YWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLkNP
Tk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQorCisgICAg
ZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9j
b2RlID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUK
KworICAgICAgICAjIFBhcnNpbmcuCisKKyAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYu
X3JlcXVlc3QpCisKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1
ZXN0LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCisKKyAgICAgICAgc2VsZi5fdmFs
aWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVz
b3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIHVudXNlZF9ob3N0ID0gZ2V0X21h
bmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgY29tbW9uLkhPU1RfSEVBREVSKQorCisgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3ZlcnNpb24oKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQorICAgICAgICAgICAg
c2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMo
KQorCisgICAgICAgICAgICAjIEtleSB2YWxpZGF0aW9uLCByZXNwb25zZSBnZW5lcmF0aW9uLgor
CisgICAgICAgICAgICBrZXkgPSBzZWxmLl9nZXRfa2V5KCkKKyAgICAgICAgICAgIGFjY2VwdCA9
IGNvbXB1dGVfYWNjZXB0KGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6
ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1dGlsLmhleGlmeShiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkpKQorCisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQorCisg
ICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorCisgICAgICAgICAgICBw
cm9jZXNzb3JzID0gW10KKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVk
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9y
ZXF1ZXN0IGluIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NvciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lv
bl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVl
c3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHBy
b2Nlc3NvcikKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMgPSBwcm9jZXNzb3JzCisKKyAgICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBU
aGUgZXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IGFkZCBoZWFkZXIKKyAgICAgICAgICAgICMg
ZGF0YSBhcyBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBw
ZW5kcworICAgICAgICAgICAgIyB0aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFkZXJzID0gW10KKworICAgICAgICAgICAg
IyBFeHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgor
ICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVx
dWVzdCkKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yCisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgICMgQXNrIGVhY2ggcHJvY2Vzc29yIGlm
IHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdoaWNoCisgICAgICAgICAgICAj
IGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRlZCBvdGhlciBwcm9jZXNzb3Jz
IGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0LCB0aGUgcHJvY2Vzc29yIG1h
cmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMgImluYWN0aXZlIi4gVGhlIGZp
cnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0bworICAgICAgICAgICAgIyBt
YWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiByZXZlcnNl
ZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19jb25zaXN0ZW5jeV93aXRoX290
aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQorICAg
ICAgICAgICAgcHJvY2Vzc29ycyA9IFsKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgZm9yIHBy
b2Nlc3NvciBpbiBwcm9jZXNzb3JzIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKQorICAgICAgICAg
ICAgXQorCisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KKworICAgICAgICAg
ICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKworICAgICAgICAgICAgZm9yIGlu
ZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3Bv
bnNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgUmVqZWN0ZWQuCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25z
LmFwcGVuZChleHRlbnNpb25fcmVzcG9uc2UpCisKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICAgICAgICAgICAgICAj
IEluYWN0aXZhdGUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcHJlc3Npb24gZXh0ZW5zaW9ucy4K
KyAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3Jz
KSk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkK
KworICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25z
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAg
ICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAgICBsaXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zKSkpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9ucyA9IE5vbmUKKworICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxm
Ll9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
ZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQg
dG8gd3NfcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xp
ZW50IGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnBy
b3RvY29sJykKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQorICAg
ICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBub3Qg
ZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAgYmFkIHJlcXVlc3Qg
YnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVAorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgZGVmIF9nZXRfb3JpZ2lu
KHNlbGYpOgorICAgICAgICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJTl9IRUFERVIKKyAg
ICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChvcmlnaW5faGVhZGVy
KQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50IHJlcXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVhZGVyJykKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmlnaW4KKworICAgIGRlZiBfY2hlY2tfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYu
X3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUikKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVS
U0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAor
CisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICgl
cikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAgICAgICAgICAodmVy
c2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAorICAgICAgICAgICAg
ICAgIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisgICAgICAgIHJhaXNl
IFZlcnNpb25FeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQorCisgICAgZGVmIF9zZXRf
cHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
CisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKKwor
ICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rv
a2VuX2xpc3QoCisgICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQorCisgICAg
ZGVmIF9wYXJzZV9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9
IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCisgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUikKKyAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVh
ZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAgICAgICAgZXhjZXB0
IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAor
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBrZXkpOgor
ICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVnYWwgY2hh
cmFjdGVyIFwnLFwnOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisgICAgICAgICMgVmFs
aWRhdGUKKyAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBhcnNpbmcg
YnkgYmFzZTY0CisgICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9kdWxlIHNr
aXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQorICAgICAgICAgICAgIyB0byBkbyB0aGlz
IGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxsZWdhbAor
ICAgICAgICAgICAgIyBrZXlzLgorICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRfS0VZX1JF
R0VYLm1hdGNoKGtleSk6CisgICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNlNjQuYjY0
ZGVjb2RlKGtleSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09IDE2Ogor
ICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBU
eXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBub3Qga2V5X2lz
X3ZhbGlkOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbGxlZ2FsIHZh
bHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSkpCisKKyAgICAgICAg
cmV0dXJuIGRlY29kZWRfa2V5CisKKyAgICBkZWYgX2dldF9rZXkoc2VsZik6CisgICAgICAgIGtl
eSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCisKKyAg
ICAgICAgZGVjb2RlZF9rZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQorCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlf
SEVBREVSLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShkZWNv
ZGVkX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGtleS5lbmNvZGUoJ1VURi04JykKKworICAgIGRl
ZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHJldHVybiBT
dHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKKyAgICAgICAgcmVzcG9uc2UgPSBbXQor
CisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9j
b2xzXHJcbicpCisKKyAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycworICAgICAgICByZXNwb25z
ZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNvbW1vbi5VUEdSQURFX0hFQURF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZ
UEUpKQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVy
KGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAor
ICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVB
REVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQuZGVjb2RlKCdVVEYtOCcpKSkK
KyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNv
bW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQorICAgICAgICBpZiAoc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYW5kIGxl
bihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKAorICAgICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoCisgICAgICAgICAgICAg
ICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLAorICAgICAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0
CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6
CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkp
CisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUnXHJcbicpCisKKyAgICAgICAgcmV0dXJuIHUn
Jy5qb2luKHJlc3BvbnNlKQorCisgICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQp
OgorICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
KGFjY2VwdCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHJhd19yZXNw
b25zZS5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBz
ZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhd19yZXNwb25zZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1OThmNTcwZjJkYzFlZTAxNjJkOTk2ZDY4ODVjYTBiZDZhYjdmMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlZDkwYjI0N2I4ZGVkOWYyNTRkYWJhNzA5MDljYmM4ZmYzYzgyZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJf
dXRpbC5weQpAQCAtMCwwICsxLDI1NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJVdGlsaXRpZXMg
Zm9yIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVhZGVycyB0aGF0IGZvbGxvdyB0aGUgZ3JhbW1h
ciBkZWZpbmVkCitpbiBIVFRQIFJGQyBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjE2LnR4
dC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UKKworX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/
PXt9IFx0JworCisKK2RlZiBfaXNfY2hhcihjKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMg
aXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCisKKyAgICByZXR1cm4gb3Jk
KGMpIDw9IDEyNworCisKK2RlZiBfaXNfY3RsKGMpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZmYg
YyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisgICAgcmV0dXJuIG9y
ZChjKSA8PSAzMSBvciBvcmQoYykgPT0gMTI3CisKKworY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGEgPSBk
YXRhCisgICAgICAgIHNlbGYuaGVhZCA9IDAKKworCitkZWYgcGVlayhzdGF0ZSwgcG9zPTApOgor
ICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20gdGhlIGhlYWQgb2YgZGF0YS4i
IiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0YXRlLmRhdGEpOgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgcmV0dXJuIHN0YXRlLmRhdGFbc3RhdGUuaGVhZCArIHBvc10K
KworCitkZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgorICAgICIiIkNvbnN1bWVzIHNwZWNp
ZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQgcmV0dXJucyB0aGUKKyAgICBj
b25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5dGVzIHRvIGNvbnN1bWUsIHJl
dHVybnMgTm9uZS4KKyAgICAiIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBhbW91bnQgPiBsZW4o
c3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXN1bHQgPSBzdGF0ZS5k
YXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KKyAgICBzdGF0ZS5oZWFkID0gc3Rh
dGUuaGVhZCArIGFtb3VudAorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgY29uc3VtZV9zdHJp
bmcoc3RhdGUsIGV4cGVjdGVkKToKKyAgICAiIiJHaXZlbiBhIHBhcnNpbmcgc3RhdGUgYW5kIGEg
ZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZyb20KKyAgICB0aGUgaGVhZC4g
UmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3aXNlLCByZXR1cm5z
CisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBwb3MgPSAwCisKKyAgICBmb3IgYyBpbiBleHBl
Y3RlZDoKKyAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3MpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHBvcyArPSAxCisKKyAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3Moc3RhdGUpOgorICAgICIiIkNvbnN1
bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBpZiBhbnkgTFdTIGlzIGNvbnN1
bWVkLgorICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KKworICAgIExXUyA9IFtDUkxGXSAx
KiggU1AgfCBIVCApCisgICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0gc3RhdGUuaGVhZAor
CisgICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKKworICAgIHBvcyA9IDAKKworICAg
IHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlmIGMg
PT0gJyAnIG9yIGMgPT0gJ1x0JzoKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBpZiBwb3MgPT0gMDoKKyAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkID0g
b3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3NlcyhzdGF0ZSk6CisgICAgIiIiQ29u
c3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgorCisgICAgd2hpbGUgY29uc3VtZV9sd3Moc3Rh
dGUpOgorICAgICAgICBwYXNzCisKKworZGVmIGNvbnN1bWVfdG9rZW4oc3RhdGUpOgorICAgICIi
IkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJucyB0aGUgdG9rZW4gb3IgTm9u
ZSBpZiBubyB0b2tlbgorICAgIHdhcyBmb3VuZC4KKyAgICAiIiIKKworICAgIHBvcyA9IDAKKwor
ICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlm
IGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19j
aGFyKGMpOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3RhdGUsIHBvcykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHBvcyArPSAxCisKKworZGVmIGNvbnN1bWVfdG9rZW5fb3JfcXVv
dGVkX3N0cmluZyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBvciBhIHF1b3RlZC1z
dHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3RlZAorICAgIHN0cmluZy4gSWYg
bm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJldHVybnMgTm9uZS4KKyAgICAi
IiIKKworICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBpZiBub3QgY29uc3Vt
ZV9zdHJpbmcoc3RhdGUsICciJyk6CisgICAgICAgIHJldHVybiBjb25zdW1lX3Rva2VuKHN0YXRl
KQorCisgICAgcmVzdWx0ID0gW10KKworICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCisK
KyAgICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBub3QgZXhwZWN0X3F1b3RlZF9wYWlyIGFuZCBj
b25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJykKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYyA9IGNvbnN1bWUoc3RhdGUpCisgICAgICAgIGlm
IGMgaXMgTm9uZToKKyAgICAgICAgICAgICMgcXVvdGVkLXN0cmluZyBpcyBub3QgZW5jbG9zZWQg
d2l0aCBkb3VibGUgcXVvdGF0aW9uCisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxf
aGVhZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBleHBlY3RfcXVvdGVk
X3BhaXI6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxzZQorICAgICAgICAg
ICAgaWYgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vbiBDSEFSIGNoYXJhY3RlciBmb3Vu
ZCBpbiBxdW90ZWQtcGFpcgorICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9o
ZWFkCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBjID09ICdcXCc6
CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVlCisgICAgICAgIGVsaWYgYyA9
PSAnIic6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisgICAgICAgIGVsaWYg
X2lzX2N0bChjKToKKyAgICAgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXIgJXIgZm91bmQgaW4g
cWR0ZXh0CisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YykKKworCitkZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgorICAgICIiIlF1b3RlcyBhcmJpdHJh
cnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKKworICAgIHF1b3RlID0gRmFsc2UKKyAg
ICBpZiBzID09ICcnOgorICAgICAgICByZXR1cm4gJyIiJworCisgICAgcmVzdWx0ID0gW10KKyAg
ICBmb3IgYyBpbiBzOgorICAgICAgICBpZiBjID09ICciJyBvciBjIGluIF9TRVBBUkFUT1JTIG9y
IF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVl
CisKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xcJyArIGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGMpCisKKyAgICBpZiBxdW90ZToKKyAgICAgICAgcmV0dXJuICciJyArICcnLmpvaW4ocmVz
dWx0KSArICciJworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgcGFyc2VfdXJpKHVyaSk6CisgICAgIiIiUGFyc2UgYWJzb2x1dGUgVVJJIHRoZW4gcmV0
dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgorCisgICAgcGFyc2VkID0gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmkpCisgICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3Nz
JyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgorICAgICAgICAjIHx1cml8IG11c3QgYmUgYSBy
ZWxhdGl2ZSBVUkkuCisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8
dXJpfC4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVyaQorCisgICAgaWYgcGFyc2VkLmhv
c3RuYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAgICBw
b3J0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0CisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICMgVGhlIHBvcnQgcHJvcGVydHkgY2F1c2UgVmFsdWVF
cnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbnMKKyAgICAgICAgIyBsaWtlICd3
czovL2hvc3Q6SU5WQUxJRF9QT1JUL3BhdGgnLCB3aGVyZSB0aGUgYXNzaWduZWQgcG9ydCBpcyBu
b3QKKyAgICAgICAgIyAqRElHSVQuIEZvciBweXRob24gMy42IGFuZCBsYXRlciwgVmFsdWVFcnJv
ciBhbHNvIHJhaXNlcyB3aGVuCisgICAgICAgICMgYXNzaWduaW5nIGludmFsaWQgcG9ydCBudW1i
ZXJzIHN1Y2ggYXMgJ3dzOi8vaG9zdDotMS9wYXRoJy4gRWFybGllcgorICAgICAgICAjIHZlcnNp
b25zIHNpbXBseSByZXR1cm4gTm9uZSBhbmQgaWdub3JlIGludmFsaWQgcG9ydCBhdHRyaWJ1dGVz
LgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgaWYgcG9ydCBpcyBOb25l
OgorICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICd3cyc6CisgICAgICAgICAgICBwb3J0ID0g
ODAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcnQgPSA0NDMKKworICAgIHBhdGggPSBw
YXJzZWQucGF0aAorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoICs9ICcvJworICAgIGlm
IHBhcnNlZC5xdWVyeToKKyAgICAgICAgcGF0aCArPSAnPycgKyBwYXJzZWQucXVlcnkKKyAgICBp
ZiBwYXJzZWQuZnJhZ21lbnQ6CisgICAgICAgIHBhdGggKz0gJyMnICsgcGFyc2VkLmZyYWdtZW50
CisKKyAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lLCBwb3J0LCBwYXRoCisKKworIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVt
b3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1Mzk2NzYxODQ3YTY4NDA0NjQ4NDBiMGU3MmVi
YzdiYTE1MGU0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTWVtb3JpemluZyBmaWxlLgorCitBIG1l
bW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJl
YWRsaW5lLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgc3lzCisKKworY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKKyAgICAiIiJNZW1v
cml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRs
aW5lLgorCisgICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3Qg
bWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCisgICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXpp
bmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBiZWZvcmUKKyAgICB0aGUgY29udHJvbCBy
ZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlXywgbWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4c2l6ZSk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg
ZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAgbWF4X21lbW9yaXpl
ZF9saW5lczogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgorICAgICAg
ICAgICAgICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXpl
ZC4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCisgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9
IFtdCisgICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xp
bmVzCisgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fYnVmZmVy
ZWRfbGluZSA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgor
ICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgCisgICAgICAgIFJl
dHVybnMgdGhlIHZhbHVlIG92ZXJyaWRkZW4gYnkgdGhpcyBjbGFzcyBmb3Igc29tZSBhdHRyaWJ1
dGVzLAorICAgICAgICBhbmQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gX2ZpbGUgZm9yIHRoZSBvdGhl
ciBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSBpbiAoJ19maWxlJywg
J19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAorICAgICAgICAgICAg
ICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3JlYWRsaW5lJywKKyAgICAg
ICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwg
c2l6ZT0tMSk6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUgYW5kIG1lbW9yaXpl
IHRoZSBsaW5lIHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGV2ZW4gaWYgc2l6ZSBpcyBzcGVj
aWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKKyAgICAgICAgdGhlIHdob2xlIGxp
bmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgYnkKKyAgICAg
ICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuX2J1ZmZlcmVkOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcmVkX2xpbmUKKyAg
ICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5k
IGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21lbW9yaXplZF9saW5lczoK
KyAgICAgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMuYXBwZW5kKGxpbmUpCisgICAg
ICAgIGlmIHNpemUgPj0gMCBhbmQgc2l6ZSA8IGxlbihsaW5lKToKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlcmVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IGxpbmVb
c2l6ZTpdCisgICAgICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIGxp
bmUKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQg
bGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21lbW9yaXpl
ZF9saW5lcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThjYTc4ZTE0YWQyNWU3YTQ0ZDFh
YjI2MmU3YmQzNWNlYWVhNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KKworTm90ZTogcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCitt
b2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4g
Y29ubmVjdGlvbgoraGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0
aW9ucy4gRm9yIGV4YW1wbGUsCityZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBi
ZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdworYnl0ZXMgd3JpdGluZy9yZWFkaW5n
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
c2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCisKKyMgRXhwb3J0IEV4Y2VwdGlvbiBz
eW1ib2xzIGZyb20gbXNndXRpbCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9y
dCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhj
ZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KKwor
CisjIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2ViU29ja2V0IG1lc3NhZ2Vz
LgorZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgIiIiQ2xvc2UgY29ubmVjdGlv
bi4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAg
ICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKworCitkZWYg
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6CisgICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBtZXNzYWdlKS4KKworICAg
IEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgcGF5
bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBzZW5kLgorICAgICAgICBl
bmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KKyAgICAgICAgICAgICBGYWxzZSB0byBz
ZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0IGlzIHRvIGJlCisgICAg
ICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRfbWVzc2FnZSBjYWxsIHdp
dGggZW5kPVRydWUuCisgICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2FkX2RhdGEgYXMgYmluYXJ5
IGZyYW1lKHMpLgorICAgIFJhaXNlczoKKyAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3
aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpCisKKworZGVmIHJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKKyAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1l
IGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisgICAgdW5pY29kZSBvciBhIGJp
bmFyeSBpbiBzdHIuCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJl
cXVlc3QuCisgICAgUmFpc2VzOgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246ICAgICB3
aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCisgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVF
eGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJhbWUgZS5nLiBzb21lCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2VydmVkIGJpdCBpcyBzZXQg
YnV0IG5vIGV4dGVuc2lvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjb2duaXplIGl0LgorICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlvbjogICAgICB3aGVuIGNs
aWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAgICAgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRseS4KKyAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFkeSB0ZXJtaW5hdGVkLgor
ICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQor
CisKK2RlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keSk6CisgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9waW5nKGJvZHkpCisKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRocmVhZGluZy5UaHJl
YWQpOgorICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50
LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJlY2VpdmUgbWVzc2Fn
ZXM6IGJsb2NraW5nLAorICAgIG5vbi1ibG9ja2luZywgYW5kIHZpYSBjYWxsYmFjay4gQ2FsbGJh
Y2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNo
b3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAg
YmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9y
IGlmIHRoZSBzb2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBvbm1lc3Nh
Z2U6IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgor
ICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5j
dGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQu
IEluIHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKKyAgICAgICAgICAgICAgICAg
ICAgICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcworICAg
ICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1l
c3NhZ2VzLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuX3F1
ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5fb25tZXNzYWdlID0g
b25tZXNzYWdlCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisKKyAgICBkZWYgcnVu
KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9y
ZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxm
Ll9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCisK
KyAgICBkZWYgcmVjZWl2ZShzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZy
b20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg
ICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fcXVldWUuZ2V0KCkKKworICAgIGRlZiByZWNlaXZlX25vd2FpdChzZWxmKToKKyAg
ICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2lu
Zy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUg
c3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCisg
ICAgICAgIGV4Y2VwdCBzaXgubW92ZXMucXVldWUuRW1wdHk6CisgICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIHN0b3Aoc2VsZik6Cisg
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgorCisgICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
CisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKKyAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCisKKworY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKKyAgICBtZXNzYWdlcy4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAorICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9xdWV1
ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUp
CisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdl
dCgpCisgICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBzZW5kX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5ub3Rp
ZnkoKQorICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmQoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKKwor
ICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgY29uZGl0
aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlv
bikpCisgICAgICAgIGNvbmRpdGlvbi53YWl0KCkKKworICAgIGRlZiBzZW5kX25vd2FpdChzZWxm
LCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIK
KworICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24o
KSkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDM4ZDlmNDNh
Y2QzN2JmNWExYjEwYTBjZTU1ODViZDUxZWQ2MDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpAQCAtMCwwICsx
LDMxOSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSZXF1ZXN0IEhhbmRsZXIgYW5kIFJlcXVlc3Qv
Q29ubmVjdGlvbiBjbGFzc2VzIGZvciBzdGFuZGFsb25lIHNlcnZlci4KKyIiIgorCitpbXBvcnQg
b3MKKworZnJvbSBzaXgubW92ZXMgaW1wb3J0IENHSUhUVFBTZXJ2ZXIKK2Zyb20gc2l4Lm1vdmVz
IGltcG9ydCBodHRwX2NsaWVudAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9u
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hl
YWRlcl91dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKyMgMTAyNCBpcyBwcmFjdGljYWxseSBs
YXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgorX01BWF9N
RU1PUklaRURfTElORVMgPSAxMDI0CisKKworY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisKKyAgICBkZWYgZ2V0X2xv
Y2FsX2FkZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2Fs
X2FkZHIuIiIiCisKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVy
LnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2
ZXIuc2VydmVyX3BvcnQpCisKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2Fk
ZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIg
dG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KKworICAgICAgICBTZXR0aW5nIHRoZSBwcm9w
ZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKKyAgICAgICAg
aGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgorCisgICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKKworICAgIHJlbW90ZV9hZGRy
ID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEp
OgorICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQorCisgICAgZGVmIHJlYWQo
c2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi5yZWFkKCkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5yZWFkKGxlbmd0aCkKKwor
ICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQgbWVtb3Jp
emVkIGxpbmVzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZp
bGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisKKworY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgorICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFu
ZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisgICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCisg
ICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCisgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9
IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKKyAgICBkZWYgZ2V0X3VyaShzZWxmKToKKyAgICAg
ICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgorCisgICAgICAgIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQorICAg
ICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9i
amVjdCBvZiBtb2RfcHl0aG9uCisgICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRl
ciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAgICAgICBrZXB0IGZv
ciBjb21wYXRpYmlsaXR5LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVx
dWVzdF9oYW5kbGVyLnBhdGgKKworICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCisKKyAgICBk
ZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJl
cXVlc3QudW5wYXJzZWRfdXJpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hh
bmRsZXIucGF0aAorCisgICAgdW5wYXJzZWRfdXJpID0gcHJvcGVydHkoZ2V0X3VucGFyc2VkX3Vy
aSkKKworICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWlt
aWMgcmVxdWVzdC5tZXRob2QuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFu
ZGxlci5jb21tYW5kCisKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9kKQorCisgICAg
ZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVl
c3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZXF1ZXN0X3ZlcnNpb24KKworICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0X3Byb3RvY29sKQor
CisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pYyByZXF1ZXN0LmlzX2h0
dHBzKCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKKworCitjbGFzcyBXZWJT
b2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6
CisgICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCisKKyAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xz
Lk1lc3NhZ2UuCisgICAgTWVzc2FnZUNsYXNzID0gaHR0cF9jbGllbnQuSFRUUE1lc3NhZ2UKKwor
ICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0
cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAgcmZpbGUKKyAgICAgICAgd2l0aCBNZW1v
cml6aW5nRmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNl
UmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICBiZWZvcmUgY2FsbGluZyBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KKyAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxl
ci5oYW5kbGUgd2lsbCBjYWxsCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxl
X29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKKyAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIucGFyc2VfcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBDYWxsIHN1cGVy
Y2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3ZmlsZSwgZXRjLiBTZWUgc2V0dXAKKyAg
ICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNsYXNzIFNvY2tldFNlcnZlci5TdHJlYW1S
ZXF1ZXN0SGFuZGxlciB0bworICAgICAgICAjIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuCisg
ICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnNldHVwKHNlbGYpCisK
KyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAorICAg
ICAgICAgICAgc2VsZi5yZmlsZSwgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9SSVpFRF9M
SU5FUykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywg
c2VydmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29w
dGlvbnMKKworICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhhbmRsZXIu
Y2dpX2RpcmVjdG9yaWVzLgorICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNlbGYuX29w
dGlvbnMuY2dpX2RpcmVjdG9yaWVzCisgICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVxdWVzdEhh
bmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaXNf
ZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmlzX2V4ZWN1
dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCisKKyAgICAgICAgIyBU
aGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KKyAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgcmVxdWVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2FkZHJlc3MsIHNlcnZlcikKKworICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVy
LnBhcnNlX3JlcXVlc3QuCisKKyAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJvY2Vz
c2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgICAgIFNlZSBCYXNlSFRU
UFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMKKyAg
ICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorCisgICAgICAgICMgV2UgaG9vayBwYXJzZV9yZXF1
ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxzZSwK
KyAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNvbnRp
bnVlcyBwcm9jZXNzaW5nIGFuZAorICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQgYnkg
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAgICMKKyAgICAgICAg
IyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdlYlNv
Y2tldCByZXF1ZXN0CisgICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21tYW5k
LCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCisgICAgICAgICMgaG93IF9TdGFuZGFs
b25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCisgICAgICAg
ICMgYXR0cmlidXRlcykuCisgICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKKyAgICAgICAgICAg
IGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKKyAgICAgICAg
ICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6CisgICAg
ICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMSkKKyAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdCYXNpYyByZWFsbT0iUHl3ZWJzb2NrZXQiJykKKyAgICAgICAgICAgICAgICBz
ZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVx
dWVzdCBiYXNpYyBhdXRoZW50aWNhdGlvbicpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaShzZWxmLnBhdGgpCisgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBVUkk6ICVyJywgc2VsZi5wYXRoKQorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxl
cicpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNl
bGYuc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworICAgICAgICBpZiBob3N0IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0ID0gc2VydmVyX29wdGlvbnMudmFs
aWRhdGlvbl9ob3N0CisgICAgICAgICAgICBpZiB2YWxpZGF0aW9uX2hvc3QgaXMgbm90IE5vbmUg
YW5kIGhvc3QgIT0gdmFsaWRhdGlvbl9ob3N0OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdJbnZhbGlkIGhvc3Q6ICVyIChleHBlY3RlZDogJXIpJywgaG9zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRp
b25fcG9ydAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBw
b3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIHBvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHNlbGYucGF0aCA9IHJlc291cmNlCisK
KyAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChzZWxmLCBzZWxmLl9vcHRpb25z
LnVzZV90bHMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBkZWZh
dWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gKKyAgICAgICAgICAg
ICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgorICAgICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShzZWxmLnBhdGgpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5kbGVyIGZvciByZXNvdXJjZTog
JXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxi
YWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMn
LCBlKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2Vw
dCBjbGF1c2Ugc2V0dXAgKGluY2x1ZGluZworICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBp
cyByYWlzZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKKyAgICAgICAgIyBh
bmQgbG9nZ2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZShyZXF1ZXN0LCBz
ZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIpCisgICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZl
cnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisg
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVk
X3ZlcnNpb25zKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mocykg
ZmFpbGVkLgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFp
bGVkIGZvciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihl
LnN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmVx
dWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcgorICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRlZDogJXMnLCBlKQorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgorICAg
ICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfcmVxdWVzdC4iIiIKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAlcyAlcycsIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQorCisgICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6CisgICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKKworICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCisgICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
IHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1swXSAlIGFyZ3NbMTpdKQorCisgICAgZGVmIGlzX2NnaShzZWxmKToKKyAgICAgICAgIiIiVGVz
dCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCisKKyAgICAg
ICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KKyAg
ICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3Qu
CisgICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFz
IHN0YXRpYyBmaWxlIG9yIGRpcgorICAgICAgICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCisg
ICAgICAgICIiIgorCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5k
bGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJh
bWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxm
LnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25h
bWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAgICAgICAgc2NyaXB0
ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjllMjczZTk3NzA4NDRiN2NiNDQ2MTZlYmY5ODI1ODg2YmY0NGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5CkBAIC0w
LDAgKzEsODcgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2VydmVyIHJlbGF0ZWQgdXRpbGl0aWVz
LiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKworZGVmIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3MoYyk6CisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAo
Yy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKKworCitkZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdG
SU5FJykKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCisg
ICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuaGFuZGxl
cnMuUm90YXRpbmdGaWxlSGFuZGxlcihvcHRpb25zLmxvZ19maWxlLCAnYScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2df
bWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIgPSBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAor
ICAgICAgICAnWyUoYXNjdGltZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2Fn
ZSlzJykKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoaGFuZGxlcikKKworICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5n
LmdldExldmVsTmFtZSgKKyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigp
KQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKGRl
ZmxhdGVfbG9nX2xldmVsX25hbWUpCisgICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9J
bmZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKworCitjbGFzcyBUaHJl
YWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRhZW1vbiA9IFRydWUKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgorICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3InKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2lu
dGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYworCisgICAgZGVmIHJ1bihzZWxmKToKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QgPSBbXQorICAg
ICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCk6CisgICAgICAgICAg
ICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygiJWQgYWN0aXZlIHRocmVhZHM6ICVzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkKKyAgICAgICAgICAg
IHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQorCisKKyMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDQyYzQ5NmM1OGEyM2I2Y2U0YzIzZWVlMGJhNDYyMDk1NDUyNjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkKQEAgLTAsMCArMSw0NzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJTdGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCisKK1VzZSB0aGlzIGZp
bGUgdG8gbGF1bmNoIHB5d2Vic29ja2V0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIuCisKKworQkFT
SUMgVVNBR0UKKz09PT09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4K
KworICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tf
aGFuZGxlcnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQg
PGRvY3VtZW50X3Jvb3Q+XQorCis8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBm
b3Igd3M6Ly8gY29ubmVjdGlvbi4KKworPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRo
ZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgorCis8d2Vic29ja19oYW5kbGVycz4gaXMg
dGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KK0lm
IG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRf
Xy5weSAob3IKK3J1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBX
ZWJTb2NrZXQgaGFuZGxlcnMuCisKK0ZvciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywg
cnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCisK
K29yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCisKK0ZvciB0cm91Ymxl
IHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KKwor
CitUUlkgREVNTworPT09PT09PT0KKworR28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBz
dGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKK2RvY3VtZW50IHJvb3QgdG8g
dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2Ug
dGhpczoKKworICAkIGNkIHNyYworICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQorCit0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0
aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3BlbgoraHR0cDovL2xv
Y2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21l
dGhpbmcgaW50bwordGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGlj
ayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKK2lzIHdvcmtpbmcsIHlvdSdsbCBzZWUg
dGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgorCisKK1VTSU5HIFRM
UworPT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3Vw
cG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKK29wdGlvbnMuIFdoZW4gVExTIGlzIGVu
YWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24u
CisKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxv
Y2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxl
IHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCitFeGFtcGxlOgorCisgICQgUFlUSE9OUEFU
SD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCisgICAgICAgIC1kIGV4
YW1wbGUgXAorICAgICAgICAtcCAxMDQ0MyBcCisgICAgICAgIC10IFwKKyAgICAgICAgLWMgLi4v
dGVzdC9jZXJ0L2NlcnQucGVtIFwKKyAgICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAor
CitOb3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0
aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCit1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkgYXMgdGhlIGJhc2UuCisKKworVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRo
IFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKKy0tdGxzLWNs
aWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVz
IHJlcXVpcmVkIGZvcgorVExTIHN1cHBvcnQuCisKK0V4YW1wbGU6CisKKyAgJCBQWVRIT05QQVRI
PS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0
NDMgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0
L2tleS5wZW0gXAorICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCisgICAgICAgIC0tdGxzLWNs
aWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorCitOb3RlIHRoYXQgd2hlbiBwYXNzaW5n
IGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCity
ZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCisK
KworQ09ORklHVVJBVElPTiBGSUxFCis9PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiBhbHNv
IHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUg
cGF0aCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFz
ZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorZm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAorZW50cnkg
bXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBs
ZXZlbCB0byBkZWJ1ZywKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK2xvZ19sZXZlbD1kZWJ1
ZworCitGb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29t
ZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgorLS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBs
aW5lOgorCit0bHM9VHJ1ZQorCitOb3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlm
IHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKK2Zha2UuCisKK1doZW4g
Ym90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50
cnkgYXJlIHNldCBmb3IKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQg
bGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4K
KworCitUSFJFQURJTkcKKz09PT09PT09PQorCitUaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20g
U29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBpcwordXNlZCBmb3Ig
ZWFjaCByZXF1ZXN0LgorCisKK1NFQ1VSSVRZIFdBUk5JTkcKKz09PT09PT09PT09PT09PT0KKwor
VGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4K
K0l0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFt
cy4gSXQgc2hvdWxkIG5vdCBiZQordXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwuCisiIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9y
dCBjb25maWdwYXJzZXIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0
cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHNlcnZlcl91dGlsCitmcm9tIG1vZF9w
eXdlYnNvY2tldC53ZWJzb2NrZXRfc2VydmVyIGltcG9ydCBXZWJTb2NrZXRTZXJ2ZXIKKworX0RF
RkFVTFRfTE9HX01BWF9CWVRFUyA9IDEwMjQgKiAyNTYKK19ERUZBVUxUX0xPR19CQUNLVVBfQ09V
TlQgPSA1CisKK19ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAorCisKK2RlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
CisKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2NvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJp
bmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBj
b21tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlz
IGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZmlsZSBmb3JtYXQnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLUgnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1WJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uLWhvc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRpb25faG9zdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ndmFsaWRhdGlvbl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRv
IHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBsaXN0ZW4gdG8nKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctUCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbi1w
b3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX3BvcnQnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsCisgICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRhdGUgaW4gYWJz
b2x1dGUgcGF0aC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0td2Vic29jay1oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
d2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19o
YW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nLicsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxl
ciBmaWxlcy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyBy
ZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcyB0aGUgYmFzZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
V2ViU29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRl
ZCBieSBzcGFjZXMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1zY2FuLWRpcicsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2Nhbl9k
aXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NjYW5fZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011
c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJl
IHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0
byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Ig
c2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhh
bmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvblwn
dCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcicsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2Nr
ZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCisgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1kJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVu
dC1yb290JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVudF9yb290JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCBy
b290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2dpLXBhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZ2lf
cGF0aHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NnaV9wYXRocycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9odGJpbikgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVudF9yb290L2NnaV9w
YXRoIGFyZSBoYW5kbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgQ0dJIHBy
b2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbign
LWsnLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGUta2V5JywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1wcml2YXRlX2tleScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAorICAgICAgICAgICAgICAgICAgICAgICctLWNlcnRpZmljYXRlJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZXJ0aWZpY2F0ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMgY2Vy
dGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0
aCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWVzdHMg
VExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQgY2VydGlmaWNhdGUg
b3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUTFMg
Y2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMt
Y2xpZW50LWNhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NhJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMg
d2hpY2ggYXJlIHVzZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0
ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWJhc2ljLWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9iYXNp
Y19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0ndGVzdDp0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhl
IGNyZWRlbnRpYWwgb2YgYmFzaWMgYXV0aGVudGljYXRpb24gJworICAgICAgICAgICAgICAgICAg
ICAgICdieSB1c2VybmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZy1maWxl
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfZmlsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nbG9nX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGZpbGUuJykKKyAgICAjIEN1c3RvbSBs
b2cgbGV2ZWw6CisgICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9j
ZXNzaW5nIHN0ZXAKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAgICAgICAg
IGNob2ljZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZScsICdkZWJ1ZycsICdp
bmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdjcml0aWNhbCcKKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAg
ICAnLS1kZWZsYXRlLWxvZy1sZXZlbCcsCisgICAgICAgICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nZGVmbGF0ZV9sb2dfbGV2ZWwn
LAorICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2lu
Zm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCisgICAgICAgIGhl
bHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKKyAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9LTEsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVn
ZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0aHJlYWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGlu
dGV2YWwgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1w
b3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkaXNhYmxlIHRoZSB0aHJlYWQgbW9uaXRvci4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbWF4JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX01B
WF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRlcycp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1sb2dfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19jb3Vu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1x
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWV1ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXplJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBl
PSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6
ZScpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIF9wYXJzZV9hcmdzX2FuZF9jb25maWco
YXJncyk6CisgICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJzZXIoKQorCisgICAgIyBGaXJz
dCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICB0ZW1wb3Jh
cnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3Mp
CisgICAgaWYgdGVtcG9yYXJ5X2FyZ3M6CisgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VucmVj
b2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBvcmFyeV9hcmdzKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgdGVtcG9y
YXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZp
Z19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKKyAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0ZhaWxl
ZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgZSkKKyAgICAgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICAgICAgY29uZmlnX3BhcnNlciA9IGNvbmZpZ3BhcnNlci5TYWZl
Q29uZmlnUGFyc2VyKCkKKyAgICAgICAgY29uZmlnX3BhcnNlci5yZWFkZnAoY29uZmlnX2ZwKQor
ICAgICAgICBjb25maWdfZnAuY2xvc2UoKQorCisgICAgICAgIGFyZ3NfZnJvbV9jb25maWcgPSBb
XQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnX3BhcnNlci5pdGVtcygncHl3ZWJz
b2NrZXQnKToKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKCctLScgKyBuYW1l
KQorICAgICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQodmFsdWUpCisgICAgICAgIGlm
IGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZpZyArIGFyZ3MKKyAg
ICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBlbHNlOgorICAg
ICAgICByZXR1cm4gdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzCisKKworZGVmIF9t
YWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSB5
b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRoaXMgZnVuY3Rpb24g
aGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIgcHJvZ3JhbS4gRm9y
CisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBpbiB0aGlzIG1ldGhv
ZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4KKyAgICAiIiIKKwor
ICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3M9YXJncykKKwor
ICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIHNlcnZlcl91dGlsLmNv
bmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1
cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQorICAgICMg
b2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0
dGVyLgorICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gW10KKyAgICBvcHRpb25zLmlzX2V4
ZWN1dGFibGVfbWV0aG9kID0gTm9uZQorICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgorICAgICAg
ICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykK
KyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAg
ICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKKyAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwg
aXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAorICAgICAgICAgICAgIyBpcyBzZXQgdG8g
YSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgorICAgICAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCisg
ICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgorICAgICAg
ICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN5
Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQorICAgICAgICAgICAgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19jaGVj
a19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3Nj
cmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisKKyAgICAgICAgICAgIG9wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAorCisgICAgaWYgb3B0aW9u
cy51c2VfdGxzOgorICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKKwor
ICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZp
Y2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAgICAgICAgICAgICAgJ1Rv
IHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRlLicpCisgICAgICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIChvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbCBhbmQgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8g
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2NlcnRf
b3B0aW9uYWwnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBp
ZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJs
ZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkK
KworICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgorICAgICAgICBvcHRpb25zLnNjYW5fZGly
ID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCisKKyAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19h
dXRoOgorICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsg
YmFzZTY0LmI2NGVuY29kZSgKKyAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50
aWFsLmVuY29kZSgnVVRGLTgnKSkuZGVjb2RlKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgb3B0
aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMgPiAwOgorICAgICAgICAgICAgIyBS
dW4gYSB0aHJlYWQgbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMg
Zm9yCisgICAgICAgICAgICAjIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNlcnZlcl91dGlsLlRo
cmVhZE1vbml0b3IoCisgICAgICAgICAgICAgICAgb3B0aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMpLnN0YXJ0KCkKKworICAgICAgICBzZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIo
b3B0aW9ucykKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSBlKQorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbihzeXMuYXJndlsxOl0pCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmMzOTlmMmE4NWI5ZmU2YzUyZWM1NjkwZjU4MGQwNmIyMjJlNDc0OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKQEAgLTAsMCArMSw5NTAgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhpcyBmaWxlIHByb3Zp
ZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJh
bWVzCitvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCisKK1NwZWNpZmljYXRp
b246CitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIKKworZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
dHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc2l4CisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1
dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25z
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFVURjhFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCitfTk9PUF9NQVNLRVIgPSB1dGlsLk5vb3BNYXNrZXIo
KQorCisKK2NsYXNzIEZyYW1lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAg
ICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICByc3YxPTAsCisgICAgICAgICAg
ICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mz0wLAorICAgICAgICAgICAgICAg
ICBvcGNvZGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGF5bG9hZD1iJycpOgorICAgICAgICBz
ZWxmLmZpbiA9IGZpbgorICAgICAgICBzZWxmLnJzdjEgPSByc3YxCisgICAgICAgIHNlbGYucnN2
MiA9IHJzdjIKKyAgICAgICAgc2VsZi5yc3YzID0gcnN2MworICAgICAgICBzZWxmLm9wY29kZSA9
IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCisKKworIyBIZWxwZXIgZnVu
Y3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQgZm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBX
ZWJTb2NrZXQKKyMgY2xpZW50cy4KKworCitkZWYgY3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3Ro
LCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgbGVuZ3RoIGhlYWRlci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBNdXN0IGJlIGxlc3MgdGhhbiAyXjYzLgorICAg
ICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBib29sZWFuLgorCisgICAgUmFpc2VzOgorICAg
ICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVuLgorICAgICIiIgorCisgICAg
aWYgbWFzazoKKyAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICBlbHNlOgorICAgICAgICBt
YXNrX2JpdCA9IDAKKworICAgIGlmIGxlbmd0aCA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyJykKKyAgICBlbGlmIGxlbmd0
aCA8PSAxMjU6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8IGxlbmd0
aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFj
a19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIGxlbmd0aCkKKyAgICBl
bGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFja19ieXRlKG1h
c2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScp
CisKKworZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3Yx
LCByc3YyLCByc3YzLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgorCisg
ICAgUmFpc2VzOgorICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCisg
ICAgIiIiCisKKyAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCisKKyAgICBpZiBwYXlsb2FkX2xl
bmd0aCA8IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgorICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQorCisgICAgaWYgKGZpbiB8
IHJzdjEgfCByc3YyIHwgcnN2MykgJiB+MToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklO
IGJpdCBhbmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCisKKyAgICBo
ZWFkZXIgPSBiJycKKworICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQorICAgICAgICAgICAg
ICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkKKyAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShmaXJzdF9i
eXRlKQorICAgIGhlYWRlciArPSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwg
bWFzaykKKworICAgIHJldHVybiBoZWFkZXIKKworCitkZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwg
Ym9keSwgbWFzayk6CisgICAgaWYgbm90IG1hc2s6CisgICAgICAgIHJldHVybiBoZWFkZXIgKyBi
b2R5CisKKyAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQorICAgIG1hc2tlciA9IHV0
aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgIHJldHVybiBoZWFkZXIg
KyBtYXNraW5nX25vbmNlICsgbWFza2VyLm1hc2soYm9keSkKKworCitkZWYgX2ZpbHRlcl9hbmRf
Zm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZm9y
IGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmls
dGVyKGZyYW1lKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFtZS5vcGNvZGUsIGxl
bihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAgICByZXR1cm4gX2J1
aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitkZWYgY3JlYXRlX2Jp
bmFyeV9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGZyYW1lID0gRnJhbWUoZmlu
PWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQorICAgIHJldHVybiBfZmlsdGVy
X2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisK
K2RlZiBjcmVhdGVfdGV4dF9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBm
cmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIHRleHQgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGVuY29kZWRfbWVzc2FnZSA9
IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
ZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBwYXJzZV9mcmFtZShyZWNlaXZlX2J5
dGVzLAorICAgICAgICAgICAgICAgIGxvZ2dlcj1Ob25lLAorICAgICAgICAgICAgICAgIHdzX3Zl
cnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCisgICAgICAgICAgICAgICAgdW5tYXNr
X3JlY2VpdmU9VHJ1ZSk6CisgICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0dXBsZSBj
b250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAorICAgIHBheWxvYWQuCisKKyAgICBBcmdz
OgorICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJhbWUgZGF0
YSBmcm9tIGEgc3RyZWFtIG9yCisgICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4gVGhlIGZ1
bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKKyAgICAgICAgICAgIHJlYWQu
IFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGlm
CisgICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4KKyAgICAg
ICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgorICAgICAgICB3c192ZXJzaW9uOiB0aGUgdmVy
c2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCisgICAgICAgIHVubWFza19yZWNlaXZlOiB1bm1h
c2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCisgICAgICAgICAgICBm
cmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KKworICAgIFJhaXNlczoKKyAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRlcyByYWlz
ZXMgaXQuCisgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29u
dGFpbnMgaW52YWxpZCBkYXRhLgorICAgICIiIgorCisgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJhbWUnKQor
CisgICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAgIGZpbiA9IChmaXJz
dF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKKyAgICBy
c3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisgICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQp
ICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKKworICAgIHNlY29uZF9ieXRlID0g
b3JkKHJlY2VpdmVfYnl0ZXMoMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEK
KyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgbG9nZ2VyLmxv
ZygKKyAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9
JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5n
dGg9JXMnLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywKKyAgICAgICAgcGF5
bG9hZF9sZW5ndGgpCisKKyAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKKyAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgJ01hc2sgYml0
IG9uIHRoZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJworICAgICAgICAg
ICAgJ2NvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCisKKyAgICAjIFRoZSBIeUJp
IGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgor
ICAgICMgaW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3Ig
MHgwLTB4RkQgaW4KKyAgICAjIDItb2N0ZXQgZmllbGQpLgorICAgIHZhbGlkX2xlbmd0aF9lbmNv
ZGluZyA9IFRydWUKKyAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCisgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPT0gMTI3OgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRl
cyg4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFRJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZG
RkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKCdF
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAwOgorICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9
IDgKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgpCisg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRl
bmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgg
PSByZWNlaXZlX2J5dGVzKDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFj
aygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgd3NfdmVyc2lv
biA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6CisgICAgICAgICAgICB2YWxpZF9sZW5n
dGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0g
MgorCisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEZWNvZGVkX3Bh
eWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CisgICAgICAgIGxvZ2dlci53YXJuaW5n
KAorICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBt
aW5pbWFsIG51bWJlciBvZiAnCisgICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNp
bmcgJWQgYnl0ZXMpJywgcGF5bG9hZF9sZW5ndGgsCisgICAgICAgICAgICBsZW5ndGhfZW5jb2Rp
bmdfYnl0ZXMpCisKKyAgICBpZiBtYXNrID09IDE6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQorCisgICAgICAgIG1hc2tpbmdfbm9uY2Ug
PSByZWNlaXZlX2J5dGVzKDQpCisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9G
SU5FLCAnTWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCisgICAgZWxzZToKKyAgICAgICAgbWFza2Vy
ID0gX05PT1BfTUFTS0VSCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
UmVjZWl2ZSBwYXlsb2FkIGRhdGEnKQorICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKKwor
ICAgIHJhd19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAg
ICBsb2dnZXIubG9nKAorICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEb25lIHJl
Y2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAgICBwYXlsb2FkX2xl
bmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEwMDApCisgICAg
bG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2FkIGRhdGEnKQor
CisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAg
ICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICB1bm1hc2tlZF9ieXRlcyA9IG1h
c2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZv
cihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0
YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1l
LnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKKworICAgIHJldHVybiBvcGNv
ZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKKworCitjbGFzcyBGcmFn
bWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6CisgICAgIiIiQSBzdGF0ZWZ1bCBjbGFzcyB0byBz
ZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
c2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgorICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgorCisgICAgICAgIHNlbGYuX21hc2sgPSBtYXNrCisgICAg
ICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCisgICAgICAgICMgVGhpcyBp
cyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0IHR5cGUgZnJh
bWVzCisgICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIHNlbGYuX2VuY29k
ZV91dGY4ID0gZW5jb2RlX3V0ZjgKKworICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFsc2UKKwor
ICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNzYWdlcyB0byB2
ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKKyAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1lc3NhZ2UgYXJl
IGFsbCB0aGUgc2FtZS4KKyAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhU
CisKKyAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSk6CisgICAg
ICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX0JJ
TkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENP
REVfVEVYVAorICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgorICAgICAgICAgICAgaWYgc2VsZi5f
b3Bjb2RlICE9IGZyYW1lX3R5cGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
TWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQorICAgICAgICAgICAgb3Bj
b2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgICAgIHNlbGYuX29wY29kZSA9IGZyYW1l
X3R5cGUKKworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFs
c2UKKyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
X3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAgICAgaWYgYmluYXJ5
IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVfYmlu
YXJ5X2ZyYW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKHBheWxvYWRf
ZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykKKworCitkZWYgX2NyZWF0ZV9jb250cm9s
X2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZnJhbWUgPSBG
cmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkpCisKKyAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIGZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisK
KyAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6CisgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9s
IGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNzJykKKworICAgIGhlYWRlciA9IGNyZWF0
ZV9oZWFkZXIoZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMsIG1hc2spCisgICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIsIGZyYW1lLnBheWxvYWQs
IG1hc2spCisKKworZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1l
X2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9Q
Q09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfcG9u
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKKworCitkZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2Us
IGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29t
bW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9i
b2R5KGNvZGUsIHJlYXNvbik6CisgICAgYm9keSA9IGInJworICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6CisgICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYCisg
ICAgICAgICAgICAgICAgb3IgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBv
dXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5P
Uk1BTF9DTE9TVVJFCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24uU1RBVFVTX1RM
U19IQU5EU0hBS0UpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdT
dGF0dXMgY29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb2RlJykKKyAgICAgICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSAr
IGVuY29kZWRfcmVhc29uCisgICAgcmV0dXJuIGJvZHkKKworCitjbGFzcyBTdHJlYW1PcHRpb25z
KG9iamVjdCk6CisgICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFt
IG9iamVjdHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJDb25zdHJ1
Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gZnJh
bWVzLgorICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorICAgICAgICBz
ZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorCisgICAgICAgICMgRmlsdGVycyBhcHBs
aWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZW0u
CisgICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKyAgICAgICAgc2Vs
Zi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQorCisgICAgICAgIHNlbGYuZW5jb2RlX3Rl
eHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQorICAgICAgICBzZWxmLm1hc2tfc2VuZCA9IEZhbHNl
CisgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCisKKworY2xhc3MgU3RyZWFtKG9i
amVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldCBwcm90b2NvbAorICAgIChSRkMgNjQ1NSkuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisKKyAgICAgICAgc2VsZi5fcmVxdWVz
dC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVy
X3Rlcm1pbmF0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBm
cmFnbWVudHMuCisgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCisgICAgICAg
ICMgSG9sZHMgdGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCisgICAgICAgIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9IE5vbmUKKworICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVu
dGVkRnJhbWVCdWlsZGVyKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4KQorCisgICAgICAgIHNlbGYuX3Bpbmdf
cXVldWUgPSBkZXF1ZSgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBh
bnkgZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhj
ZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
YWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCisgICAgICAg
ICAgICBpZiBub3QgcmVhZF9ieXRlczoKKyAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBi
eXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCisgICAgICAgICAgICAg
ICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsICkp
KQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhjZXB0IElPRXJyb3Ig
YXMgZToKKyAgICAgICAgICAgICMgQWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5
dGhvbiB0aHJvd3MgaXQuCisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vy
cm9yICglcykgb2NjdXJyZWQnICUKKyAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKKworICAg
IGRlZiBfd3JpdGUoc2VsZiwgYnl0ZXNfdG9fd3JpdGUpOgorICAgICAgICAiIiJXcml0ZXMgZ2l2
ZW4gYnl0ZXMgdG8gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAor
ICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ug
YW5kIHJhaXNlIGFnYWluLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdl
X3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0
byAlcjogJyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1v
dGVfYWRkciwgKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgcmVjZWl2ZV9ieXRl
cyhzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWNlaXZlcyBtdWx0aXBsZSBieXRlcy4gUmV0
cmllcyByZWFkIHdoZW4gd2UgY291bGRuJ3QgcmVjZWl2ZSB0aGUKKyAgICAgICAgc3BlY2lmaWVk
IGFtb3VudC4gVGhpcyBtZXRob2QgcmV0dXJucyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVhZF9ieXRl
cyA9IFtdCisgICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6CisgICAgICAgICAgICBuZXdfcmVhZF9i
eXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQorICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQo
bmV3X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVz
KQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVhZF9ieXRlcykKKworICAgIGRlZiBfcmVhZF91
bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKKyAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2Ug
ZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKKyAgICAgICAgY29udGFp
biBkZWxpbV9jaGFyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAg
ICAgICIiIgorCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCisgICAgICAgICAgICBpZiBjaCA9PSBkZWxp
bV9jaGFyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZWFkX2J5dGVzLmFw
cGVuZChjaCkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMpCisKKyAgICBkZWYg
X3JlY2VpdmVfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIHJl
dHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcKKyAgICAgICAgZWFj
aCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KKworICAgICAgICBSYWlzZXM6
CisgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJl
dHVybnMgZW1wdHkKKyAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICBJbnZhbGlk
RnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgcmV0dXJuIHBh
cnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQor
CisgICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKKyAgICAgICAg
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZSgpCisKKyAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sCisgICAgICAgICAg
ICAgICAgICAgICByc3YxPXJzdjEsCisgICAgICAgICAgICAgICAgICAgICByc3YyPXJzdjIsCisg
ICAgICAgICAgICAgICAgICAgICByc3YzPXJzdjMsCisgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGU9b3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykK
KworICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNl
aXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVy
cy4KKyAgICAgICAgVGhlIGZyYW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAgICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCisg
ICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCisKKyAg
ICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2Zy
YW1lX29iamVjdCgpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFt
ZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9m
aWx0ZXJlZF9mcmFtZSgpJykKKyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BD
T0RFX1RFWFQKKyAgICAgICAgICAgICAgICBhbmQgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENP
REVfQklOQVJZKToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcK
KyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKKworICAgICAgICBm
b3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoK
KyAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgICAgIGZvciBtZXNz
YWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKKyAg
ICAgICAgICAgIGZyYW1lLnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAiIiJTZW5kIG1lc3Nh
Z2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29k
ZSBvciBiaW5hcnkgaW4gc3RyIHRvIHNlbmQuCisgICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVz
c2FnZSBhcyBiaW5hcnkgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVz
c2FnZSB0eXBlIG9yCisgICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVx
dWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtl
JykKKworICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgc2l4LnRleHRf
dHlwZSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IG5vdCBiZSBpbnN0YW5jZSBv
ZiBVbmljb2RlJykKKworICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2Fn
ZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIgdG8gbGltaXQgbWF4
aW11bSBzaXplIG9mIGRhdGEgaW4KKyAgICAgICAgICAgICMgcGF5bG9hZCBkYXRhIG9mIGVhY2gg
ZnJhbWUuCisgICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAtMQorCisgICAgICAg
ICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKKyAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5hcnkpKQorICAgICAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBieXRlc193cml0dGVuID0gMAorICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJhbWUgPSBl
bmQKKyAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNzYWdlKSAtIGJ5dGVz
X3dyaXR0ZW4KKyAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFUQV9TSVpFID4gMAor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5dGVzX3RvX3dyaXRlID4gTUFYX1BBWUxPQURf
REFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRB
X1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fd3JpdGVyLmJ1aWxkKAorICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5
dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lLCBi
aW5hcnkpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICAgICAgICAg
ICAgICBieXRlc193cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAgICAgICAgICAgICAj
IFRoaXMgaWYgbXVzdCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28g
dGhhdAorICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCisgICAg
ICAgICAgICAgICAgaWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oZSkKKworICAgIGRlZiBfZ2V0X21lc3Nh
Z2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZy
b20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKKyAgICAg
ICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUs
IHRoaXMgbWV0aG9kCisgICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2ls
bCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0CisgICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMg
cGFzc2VkIHRvIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdt
ZW50YXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMg
aW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVj
ZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24g
JworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1l
IGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRl
ZCcpCisKKyAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAjIEVuZCBv
ZiBmcmFnbWVudGF0aW9uIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJh
Z21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBi
Jycuam9pbihzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBmcmFtZQor
ICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZy
YW1lLmZpbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFt
ZSB3aXRob3V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBleGlzdGlu
ZyBmcmFnbWVudGF0aW9uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAnTmV3IGZyYWdtZW50YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0aW5nICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKworICAgICAgICAg
ICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVudGVkIGZyYW1lCisK
KyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKworICAgICAgICAg
ICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZCcpCisKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHJvY2Vzc19jbG9zZV9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgY2xvc2UgbWVzc2Fn
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogY2xvc2UgbWVzc2FnZS4K
KworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICAjIFN0YXR1cyBjb2Rl
IGlzIG9wdGlvbmFsLiBXZSBjYW4gaGF2ZSBzdGF0dXMgcmVhc29uIG9ubHkgaWYgd2UKKyAgICAg
ICAgIyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBlbXB0eSBzdHJpbmcu
IFNvLAorICAgICAgICAjIGFsbG93ZWQgY2FzZXMgYXJlCisgICAgICAgICMgLSBubyBhcHBsaWNh
dGlvbiBkYXRhOiBubyBjb2RlIG5vIHJlYXNvbgorICAgICAgICAjIC0gMiBvY3RldCBvZiBhcHBs
aWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCisgICAgICAgICMgLSAzIG9yIG1v
cmUgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogYm90aCBjb2RlIGFuZCByZWFzb24KKyAgICAg
ICAgaWYgbGVuKG1lc3NhZ2UpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAor
ICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBz
dGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2Rl
IG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6CisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcs
IG1lc3NhZ2VbMDoyXSlbMF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVh
c29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBs
YWNlJykKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJh
bWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgICAgICAjIEFzIHdlJ3Zl
IHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUK
KyAgICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0
aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAjIFJTVCBzZW5kaW5nLgorCisgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCisg
ICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19k
aXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlz
cGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBpZiBjb2RlIGlzIE5v
bmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAnSGFuZGxl
ciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKKyAgICAgICAgICAg
ICAgICByZWFzb24gPSAnJworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFr
ZShjb2RlLCByZWFzb24pCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAg
ICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcK
KyAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKKworICAg
IGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlBy
b2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3Nh
Z2U6IHBpbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCisgICAgICAgICAgICBp
ZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKKwor
ICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIi
IlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1l
c3NhZ2U6IHBvbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5kbGluZy4KKworICAgICAgICBpbmZsaWdodF9waW5n
cyA9IGRlcXVlKCkKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkgPSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQor
ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBjb250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQor
ICAgICAgICAgICAgICAgICAgICAjIG90aGVyIHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdQaW5nICVyIGlzIGFja2VkICglZCBwaW5ncyB3ZXJlIGlnbm9yZWQpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHksIGxlbihpbmZsaWdodF9waW5ncykpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBwZW5kKGV4cGVjdGVkX2JvZHkpCisgICAgICAgICAg
ICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25n
IHdhcyB1bnNvbGljaXRlZCBwb25nLiBLZWVwIHRoZQorICAgICAgICAgICAgICAgICMgcGluZyBx
dWV1ZSBhcyBpcy4KKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRf
cGluZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5z
b2xpY2l0ZWQgcG9uZycpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKKyAgICAg
ICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0
LCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZl
IGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisg
ICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgorCisgICAgICAgIFJldHVybnM6Cisg
ICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCisgICAgICAgICAgICAtIGFzIHVu
aWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQorICAgICAgICAgICAgLSBhcyBz
dHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCisgICAgICAgICAgICBvciBOb25l
IGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgUmFpc2VzOgorICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJt
aW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQorICAgICAgICAg
ICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0
aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAorICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAg
ICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBo
YXMKKyAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBj
YW4gaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJl
Y2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBh
ZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKKyAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykK
KworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBi
bG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgICAgICBmcmFtZSA9IHNl
bGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKworICAgICAgICAgICAgIyBDaGVj
ayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwor
ICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCisgICAg
ICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2Vj
dGlvbi01LjUKKyAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKQorICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKworICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CisgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKworICAgICAg
ICAgICAgaWYgZnJhbWUucnN2MSBvciBmcmFtZS5yc3YyIG9yIGZyYW1lLnJzdjM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMgc2V0IChyc3YgPSAlZCVkJWQpJyAlCisgICAgICAg
ICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzKSkKKworICAg
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoZnJhbWUpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21p
bmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlX2Zp
bHRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICAgICAgaWYgc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfVEVYVDoKKyAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2Nr
ZXQgcHJvdG9jb2wgc2VjdGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAorICAgICAgICAg
ICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VN
RU5UCisgICAgICAgICAgICAgICAgIyBDSEFSQUNURVIuCisgICAgICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykKKyAgICAg
ICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uKGUpCisgICAgICAgICAgICBlbGlmIHNl
bGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9DTE9TRToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNz
X2Nsb3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5H
OgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCisg
ICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BP
Tkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFt
ZUV4Y2VwdGlvbignT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSkK
KworICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgor
ICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29u
KQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgIGJvZHks
CisgICAgICAgICAgICBtYXNrPXNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAg
ZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICBz
ZWxmLl93cml0ZShmcmFtZSkKKworICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbAorICAgICAgICBp
dCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJh
bWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQorICAgICAgICAgICAgICAgIGZyYW1lIHdpdGgg
ZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCisgICAgICAgICAgICByZWFzb246IHN0cmluZyByZXBy
ZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3
aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgorICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmll
ZCB3aXRoIGNvZGUgTm9uZQorICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5j
ZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNl
cnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9z
ZV9tZXNzYWdlKCkuCisgICAgICAgICMgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0
ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90ZXJtaW5hdGVkIHRvCisgICAgICAgICMgVHJ1
ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNs
b3NlCisgICAgICAgICMgZnJhbWUuIFdlJ3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFr
ZS4KKworICAgICAgICBpZiBjb2RlIGlzIE5vbmU6CisgICAgICAgICAgICBpZiByZWFzb24gaXMg
bm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVz
dCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCisgICAgICAgICAgICByZWFzb24g
PSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29u
LCBieXRlcykgYW5kIG5vdCBpc2luc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICByZWFzb24s
IHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIGJ5dGVzIG9yIHVuaWNvZGUnKQorCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19o
YW5kc2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0luaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlLCByZWFzb24pCisKKyAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24u
U1RBVFVTX1BST1RPQ09MX0VSUk9SKSBvciBub3Qgd2FpdF9yZXNwb25zZToKKyAgICAgICAgICAg
ICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUgaWYgdGhl
IHJlYXNvbiBpcworICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvciBvciB0aGF0IHRoZSBzZXJ2
ZXIgaXMgZ29pbmcgYXdheS4gRm9yIHNvbWUgb2YKKyAgICAgICAgICAgICMgb3RoZXIgcmVhc29u
cywgaXQgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSwKKyAg
ICAgICAgICAgICMgYnV0IGl0J3Mgbm90IGNsZWFyLCB5ZXQuCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWlu
YXRlZC8gZmxhZyBoYXMgYmVlbiBzZXQsCisgICAgICAgICMgb3IgdW50aWwgYSBzZXJ2ZXItZGVm
aW5lZCB0aW1lb3V0IGV4cGlyZXMuCisgICAgICAgICMKKyAgICAgICAgIyBGb3Igbm93LCB3ZSBl
eHBlY3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVyIHNlbmRpbmcKKyAg
ICAgICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJl
Y2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2luZyBoYW5kc2hha2UnKQorICAg
ICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKyAgICAgICAg
IyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4pIGRvZXNuJ3QgaGF2ZSBjbG9z
ZSBtZXRob2QuCisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHksIGJpbmFyeT1GYWxzZSk6
CisgICAgICAgIGlmIG5vdCBiaW5hcnkgYW5kIGlzaW5zdGFuY2UoYm9keSwgc2l4LnRleHRfdHlw
ZSk6CisgICAgICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgZnJh
bWUgPSBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgICAgIHNlbGYu
X3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5
KToKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25z
Lm1hc2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQor
CisgICAgZGVmIGdldF9sYXN0X3JlY2VpdmVkX29wY29kZShzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgb3Bjb2RlIG9mIHRoZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGljaCB0aGUgbGFzdCBy
ZWNlaXZlZAorICAgICAgICBmcmFtZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHZh
bGlkIGlmZiBpbW1lZGlhdGVseSBhZnRlcgorICAgICAgICByZWNlaXZlX21lc3NhZ2UgY2FsbC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRp
bC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTY0ZTZiOGU0NjgyNDY3MTg3ZmMzODk0YjFjYTc5ZWM4MmE0MTNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0
aWwucHkKQEAgLTAsMCArMSw0MDUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IHV0
aWxpdGllcy4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzaXgKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHps
aWIKKwordHJ5OgorICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKKworZGVmIHByZXBlbmRfbWVzc2FnZV90
b19leGNlcHRpb24obWVzc2FnZSwgZXhjKToKKyAgICAiIiJQcmVwZW5kIG1lc3NhZ2UgdG8gdGhl
IGV4Y2VwdGlvbi4iIiIKKyAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3RyKGV4YyksICkKKyAg
ICByZXR1cm4KKworCitkZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgp
OgorICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24g
dG8gcnVuIGN5Z3dpbiBwcm9ncmFtCisgICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9l
c24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKKyAgICB3aGljaCBpcyB0eXBp
Y2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCisgICAgRm9y
IFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFy
aWVzLgorCisgICAgQXJnczoKKyAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQorICAg
ICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUK
KyAgICBSZXR1cm5zOgorICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgorICAg
ICIiIgorICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKKyAgICAgICAgcmV0dXJuIGludGVycAorICAg
IG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCisgICAgaWYgbToK
KyAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQorICAg
ICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQorICAgIHJldHVybiBpbnRlcnAKKworCitkZWYg
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgorICAgIHIi
IiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KKworICAg
IEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQs
IGUuZy4gaW4gV2ViS2l0LAorICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVs
bG8ucGwiLgorICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0s
IGl0IGNvdWxkbid0LiAgU28sIGZpeAorICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9w
YXRoPlxwZXJsLmV4ZSIuCisKKyAgICBBcmdzOgorICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1l
IG9mIHRoZSBzY3JpcHQKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3
aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgorICAgICIiIgorICAg
IGZwID0gb3BlbihzY3JpcHRfcGF0aCkKKyAgICBsaW5lID0gZnAucmVhZGxpbmUoKQorICAgIGZw
LmNsb3NlKCkKKyAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQorICAgIGlmIG06Cisg
ICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgp
CisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0
aCk6CisgICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4K
KworICAgIEFyZ3M6CisgICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkg
aWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KKyAgICAiIiIKKyAgICBf
X29yaWdfcG9wZW4zID0gb3MucG9wZW4zCisKKyAgICBkZWYgX193cmFwX3BvcGVuMyhjbWQsIG1v
ZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAgICAgY21kbGluZSA9IGNtZC5zcGxpdCgnICcpCisg
ICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5Z3dpbl9wYXRo
KQorICAgICAgICBpZiBpbnRlcnA6CisgICAgICAgICAgICBjbWQgPSBpbnRlcnAgKyAnICcgKyBj
bWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZzaXplKQorCisg
ICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMworCisKK2RlZiBoZXhpZnkocyk6CisgICAgcmV0
dXJuICcgJy5qb2luKFsnJTAyeCcgJSB4IGZvciB4IGluIHNpeC5pdGVyYnl0ZXMocyldKQorCisK
K2RlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgorICAgICIiIlJldHVybiB0aGUgbG9nZ2luZyBjbGFz
cyBpbmZvcm1hdGlvbi4iIiIKKyAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoJyVzLiVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCisKKworZGVmIHBhY2tfYnl0ZShiKToKKyAgICAiIiJQYWNr
IGFuIGludGVnZXIgdG8gbmV0d29yay1vcmRlcmVkIGJ5dGUiIiIKKyAgICByZXR1cm4gc3RydWN0
LnBhY2soJyFCJywgYikKKworCitjbGFzcyBOb29wTWFza2VyKG9iamVjdCk6CisgICAgIiIiQSBO
b09wIG1hc2tpbmcgb2JqZWN0LgorCisgICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFz
IFJlcGVhdGVkWG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKKyAgICB0aGUgc3RyaW5nIHBhc3Nl
ZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgIiIiTm9PcC4iIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIG1h
c2soc2VsZiwgcyk6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHJldHVybiBzCisKKwor
Y2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIG1hc2tpbmcgb2JqZWN0
IHRoYXQgYXBwbGllcyBYT1Igb24gdGhlIHN0cmluZy4KKworICAgIEFwcGxpZXMgWE9SIG9uIHRo
ZSBieXRlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhvZCB3aXRoIHRoZSBtYXNraW5nIGJ5dGVz
CisgICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJlcGVhdGVkbHkuIFRoaXMgb2JqZWN0IHJl
bWVtYmVycyB0aGUgcG9zaXRpb24KKyAgICBpbiB0aGUgbWFza2luZyBieXRlcyB0aGUgbGFzdCBt
YXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVzIGZyb20KKyAgICB0aGF0IHBvaW50IG9u
IHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1hc2tpbmdfa2V5KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkgPSBtYXNraW5nX2tl
eQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9IDAKKworICAgIGRlZiBfbWFza191
c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBtYXNrIHZpYSBTV0lH
LiIiIgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3RfbWFza2luZy5tYXNrKHMsIHNlbGYuX21h
c2tpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4KQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9ICgo
c2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKKyAgICAgICAgcmV0dXJuIG1h
c2tlZF9kYXRhCisKKyAgICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwgcyk6CisgICAgICAg
ICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIHB5dGhvbi4iIiIKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShzLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnTWFza2luZyBPcGVyYXRpb24gc2hvdWxkIG5vdCBwcm9jZXNzIHVuaWNvZGUg
c3RyaW5ncycpCisKKyAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KHMpCisKKyAgICAgICAgIyBV
c2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNvc3QgdG8gYWNj
ZXNzCisgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICBtYXNraW5nX2tleSA9IFtjIGZvciBj
IGluIHNpeC5pdGVyYnl0ZXMoc2VsZi5fbWFza2luZ19rZXkpXQorICAgICAgICBtYXNraW5nX2tl
eV9zaXplID0gbGVuKG1hc2tpbmdfa2V5KQorICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJlc3Vs
dCkpOgorICAgICAgICAgICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XQorICAgICAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXgg
KyAxKSAlIG1hc2tpbmdfa2V5X3NpemUKKworICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRl
eCA9IG1hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKwor
ICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAgbWFzayA9IF9tYXNr
X3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkK
KworCisjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBD
TUYvRkxHICgyIG9jdGV0KSBhbmQKKyMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIg
c28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKKyMgZGVmbGF0ZSBsaWJyYXJ5
LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5
LgorIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9u
IGFuZCBkZWNvbXByZXNzaW9uLgorIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNl
IDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKKyMgY29tcHJlc3Npb24sIHdlIHVz
ZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KKyMKKyMgQ29tcHJlc3Npb24gbGV2ZWwg
aXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCisj
IHRvIGRlY29kZS4KKyMKKyMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2Yg
emxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCisjIFB5dGhvbi4gU2VlIGFsc28gUkZD
MTk1MCAoWkxJQiAzLjMpLgorCisKK2NsYXNzIF9EZWZsYXRlcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9j
bGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA5IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KKyAgICAgICAgIyBPbiBXZWJT
b2NrZXQgc3BlYywgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXQgaXMgOC4gSG93ZXZlciwgemxpYiBk
b2VzCisgICAgICAgICMgbm90IGFjY2VwdCB3aW5kb3dfYml0ID0gOC4KKyAgICAgICAgIworICAg
ICAgICAjIEJlY2F1c2Ugb2YgYSB6bGliIGRlZmxhdGUgcXVpcmssIGJhY2stcmVmZXJlbmNlcyB3
aWxsIG5vdCB1c2UgdGhlCisgICAgICAgICMgZW50aXJlIHJhbmdlIG9mIDEgPDwgd2luZG93X2Jp
dHMsIGJ1dCB3aWxsIGluc3RlYWQgdXNlIGEgcmVzdHJpY3RlZAorICAgICAgICAjIHJhbmdlIG9m
ICgxIDw8IHdpbmRvd19iaXRzKSAtIDI2Mi4gV2l0aCBhbiBpbmNyZWFzZWQgd2luZG93X2JpdHMg
PSA5LAorICAgICAgICAjIGJhY2stcmVmZXJlbmNlcyB3aWxsIGJlIHdpdGhpbiBhIHJhbmdlIG9m
IDI1MC4gVGhlc2UgY2FuIHN0aWxsIGJlCisgICAgICAgICMgZGVjb21wcmVzc2VkIHdpdGggd2lu
ZG93X2JpdHMgPSA4IGFuZCB0aGUgMjU2LWJ5dGUgd2luZG93IHVzZWQgdGhlcmUuCisgICAgICAg
ICMKKyAgICAgICAgIyBTaW1pbGFyIGRpc3NjdXNzaW9ucyBjYW4gYmUgZm91bmQgaW4gaHR0cHM6
Ly9jcmJ1Zy5jb20vNjkxMDc0CisgICAgICAgIHdpbmRvd19iaXRzID0gbWF4KHdpbmRvd19iaXRz
LCA5KQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHpsaWIuREVGTEFURUQsIC13aW5kb3dfYml0cykKKworICAgIGRlZiBjb21wcmVzcyhz
ZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5j
b21wcmVzcyhieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1
dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3Vs
dCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVz
CisKKyAgICBkZWYgY29tcHJlc3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29t
cHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBj
b21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMp
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJl
c3NlZF9ieXRlcykKKyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworICAgIGRlZiBj
b21wcmVzc19hbmRfZmluaXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29tcHJlc3NlZF9ieXRl
cyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBjb21wcmVzc2VkX2J5
dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAg
ICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcworCisKK2NsYXNzIF9JbmZsYXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAgICAgICAgc2VsZi5fd2luZG93X2JpdHMg
PSB3aW5kb3dfYml0cworCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKworICAgICAg
ICBzZWxmLnJlc2V0KCkKKworICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIHNpemUpOgorICAgICAg
ICBpZiBub3QgKHNpemUgPT0gLTEgb3Igc2l6ZSA+IDApOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdzaXplIG11c3QgYmUgLTEgb3IgcG9zaXRpdmUnKQorCisgICAgICAgIGRhdGEgPSBi
JycKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9kZWNv
bXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzaXplIC0gbGVuKGRhdGEpKSkKKyAg
ICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRf
dGFpbAorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKKyAgICAg
ICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGgg
QkZJTkFMID0gMSkgYW5kCisgICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVu
dXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICMgemxp
Yi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldworICAg
ICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9u
ZS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdu
b3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKKyAgICAgICAgICAgICAg
ICAjIGVtcHR5LgorICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNv
bXByZXNzLnVudXNlZF9kYXRhCisgICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAg
ICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8g
ZGVjb21wcmVzcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVm
b3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCisgICAgICAgICAgICAgICAgICAg
ICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVz
ZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKKyAgICAgICAgICAg
ICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBp
biBkYXRhLiBXZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhl
cmUuCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBkYXRhOgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQorICAgICAgICBy
ZXR1cm4gZGF0YQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCisgICAgICAgIHNlbGYuX3VuY29uc3Vt
ZWQgKz0gZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1Jlc2V0JykKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVz
c29iaigtc2VsZi5fd2luZG93X2JpdHMpCisKKworIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBn
aXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCisKKwor
Y2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgorICAgICIiIkEgY29tcHJlc3NvciBjbGFz
cyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAorICAgIGZs
dXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlv
biAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzLCBub19j
b250ZXh0X3Rha2VvdmVyKToKKyAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAg
IGlmIHdpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICB3aW5kb3dfYml0cyA9IHpsaWIu
TUFYX1dCSVRTCisgICAgICAgIHNlbGYuX3dpbmRvd19iaXRzID0gd2luZG93X2JpdHMKKyAgICAg
ICAgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciA9IG5vX2NvbnRleHRfdGFrZW92ZXIKKworICAg
IGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGVuZD1UcnVlLCBiZmluYWw9RmFsc2UpOgorICAgICAg
ICBpZiBzZWxmLl9kZWZsYXRlciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIg
PSBfRGVmbGF0ZXIoc2VsZi5fd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYgYmZpbmFsOgorICAg
ICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaChieXRl
cykKKyAgICAgICAgICAgICMgQWRkIGEgcGFkZGluZyBibG9jayB3aXRoIEJGSU5BTCA9IDAgYW5k
IEJUWVBFID0gMC4KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHBhY2tfYnl0ZSgwKQor
ICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0CisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNo
KGJ5dGVzKQorICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICAjIFN0cmlwIGxhc3QgNCBvY3Rl
dHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAgICAgICAgICMgbm9uLWNv
bXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdFs6LTRdCisKKyAgICAgICAgaWYgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciBh
bmQgZW5kOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisKK2NsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0KToKKyAgICAiIiJB
IGRlY29tcHJlc3NvciBjbGFzcyBhIGxhIFJGQzE5NzkuCisKKyAgICBBIGRlY29tcHJlc3NvciBj
bGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkIGZvbGxvd2luZwor
ICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNlY3Rpb24gMi4xLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklU
Uyk6CisgICAgICAgIHNlbGYuX2luZmxhdGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQorCisg
ICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcyk6CisgICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBM
RU4gYW5kIE5MRU4gZmllbGQgb2YgYSBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZAorICAgICAg
ICAjIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRl
cyArIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQorCisKK2NsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKKyAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQorICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KKyAgICAiIiIKKworICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgorICAgIF9SRUNWX1NJWkUgPSA0
MDk2CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0CisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQorCisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKKwor
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgorICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAorICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KKyAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgor
ICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55CisgICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCisgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKKworICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQorICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQo
cmVhZF9kYXRhKQorCisgICAgZGVmIHNlbmRhbGwoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxm
LnNlbmQoYnl0ZXMpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykp
CisgICAgICAgIHJldHVybiBsZW4oYnl0ZXMpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDYxNDI1ZTExNGQxNGQ4NmY4MWJjZDE0MWY2MmY3N2Q2NjRiOWNjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDMxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9leGNlcHRpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvc2VydmVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRmOGNkMzkzYzdlZTgwNjk2NzU3MTM2NjVkODViZTdkOTc2NTdiNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0
X3NlcnZlci5weQpAQCAtMCwwICsxLDI4NSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdGFuZGFs
b25lIFdlYnNvY2tldFNlcnZlcgorCitUaGlzIGZpbGUgZGVhbHMgd2l0aCB0aGUgbWFpbiBtb2R1
bGUgb2Ygc3RhbmRhbG9uZSBzZXJ2ZXIuIEFsdGhvdWdoIGl0IGlzIGZpbmUKK3RvIGltcG9ydCB0
aGlzIGZpbGUgZGlyZWN0bHkgdG8gdXNlIFdlYlNvY2tldFNlcnZlciwgaXQgaXMgc3Ryb25nbHkg
cmVjb21tZW5kZWQKK3RvIHVzZSBzdGFuZGFsb25lLnB5LCBzaW5jZSBpdCBpcyBpbnRlbmRlZCB0
byBhY3QgYXMgYSBza2VsZXRvbiBvZiB0aGlzIG1vZHVsZS4KKyIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQ
U2VydmVyCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgc29ja2V0c2VydmVyCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitp
bXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LnJlcXVlc3RfaGFuZGxlciBpbXBvcnQgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIKKworCitkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxl
cnNfbWFwX2ZpbGUpOgorICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3ZWJzb2NrX2hh
bmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KKworICAgIEFyZ3M6CisgICAgICAgIGRpc3Bh
dGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKKyAgICAgICAgd2Vic29ja19oYW5k
bGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQorICAgICIiIgorCisgICAgd2l0aCBvcGVuKHdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6Cisg
ICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUysp
JCcsIGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAgZmlsZTonICsgbGluZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpc3BhdGNo
ZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMobS5ncm91cCgxKSwgbS5ncm91cCgyKSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQorCisKK2NsYXNzIFdlYlNvY2tldFNlcnZlcihz
b2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgor
ICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4iIiIKKworICAgICMg
T3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi5kYWVtb25fdGhyZWFkcworICAg
IGRhZW1vbl90aHJlYWRzID0gVHJ1ZQorICAgICMgT3ZlcnJpZGVzIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcworICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBU
cnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18gdG8gc2V0IFNTTCBlbmFibGVkCisg
ICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2NrZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFu
ZCBzZXJ2ZXJfYWN0aXZhdGUsCisgICAgICAgIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1vbmcgcmVxdWVzdCBoYW5kbGVycyB0byBz
YXZlIHRpbWUgZm9yCisgICAgICAgICMgaW5zdGFudGlhdGlvbi4gIERpc3BhdGNoZXIgY2FuIGJl
IHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZlLgorICAgICAgICBvcHRpb25zLmRpc3Bh
dGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAorICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzLCBvcHRpb25zLnNjYW5fZGlyLAorICAgICAgICAgICAgb3B0aW9ucy5hbGxvd19o
YW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQorICAgICAgICBpZiBvcHRpb25zLndlYnNvY2tfaGFu
ZGxlcnNfbWFwX2ZpbGU6CisgICAgICAgICAgICBfYWxpYXNfaGFuZGxlcnMob3B0aW9ucy5kaXNw
YXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5k
bGVyc19tYXBfZmlsZSkKKyAgICAgICAgd2FybmluZ3MgPSBvcHRpb25zLmRpc3BhdGNoZXIuc291
cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgaWYgd2FybmluZ3M6CisgICAgICAgICAgICBmb3Igd2Fy
bmluZyBpbiB3YXJuaW5nczoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5p
bmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5yZXF1ZXN0
X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAgICAgICBzZWxmLl9f
d3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5fX3dzX3Nl
cnZpbmcgPSBGYWxzZQorCisgICAgICAgIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLl9faW5pdF9f
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25z
LnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcikKKworICAgICAgICAjIEV4cG9z
ZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFuZGxlciBvYmplY3RzIGFjY2VzcyBpdC4g
V2UgbmFtZQorICAgICAgICAjIGl0IHdpdGggd2Vic29ja2V0XyBwcmVmaXggdG8gYXZvaWQgY29u
ZmxpY3QuCisgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYmlu
ZCgpCisgICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRlZiBfY3JlYXRlX3Nv
Y2tldHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX25hbWUsIHNlbGYuc2VydmVyX3BvcnQg
PSBzZWxmLnNlcnZlcl9hZGRyZXNzCisgICAgICAgIHNlbGYuX3NvY2tldHMgPSBbXQorICAgICAg
ICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRo
YXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJzdCBiaW5kIGZhaWxzLgorICAgICAgICAg
ICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJUHY2CisgICAgICAgICAgICAjIC0gSWYg
aXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNhbGwgd2l0aCBBRl9JTkVUNiwgdGhlCisg
ICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVkcyBhbmQgdGhlIHNlY29uZCBmYWlscyAo
d2UnbGwgc2VlICdBZGRyZXNzCisgICAgICAgICAgICAjICAgYWxyZWFkeSBpbiB1c2UnIGVycm9y
KS4KKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBvbmx5IElQdjYgb24gY2FsbCB3aXRoIEFG
X0lORVQ2LCBib3RoIGNhbGwgYXJlCisgICAgICAgICAgICAjICAgZXhwZWN0ZWQgdG8gc3VjY2Vl
ZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0g
Wyhzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZv
KHNlbGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BFQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RP
X1RDUCkKKyAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCisg
ICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9
IGFkZHJpbmZvCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNv
Y2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWls
dXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcnZl
cl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgICAgIGlm
IHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlv
bnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlSRUQK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNzbC53cmFwX3NvY2tl
dCgKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0XywKKyAgICAgICAgICAgICAgICAgICAga2V5
ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgY2Vy
dGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgIGNh
X2NlcnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCisgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLmFwcGVu
ZCgoc29ja2V0XywgYWRkcmluZm8pKQorCisgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgorICAg
ICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kIHRvIGVu
YWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGJpbmQuCisgICAgICAgICIiIgorCisgICAg
ICAgIGZhaWxlZF9zb2NrZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxm
Ll9zb2NrZXRzOgorICAgICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQmluZCBvbjogJXInLCBhZGRyaW5mbykKKyAg
ICAgICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBz
b2NrZXRfLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIs
IDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0Xy5iaW5kKHNlbGYu
c2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQor
ICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9z
b2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQorICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRk
cmVzc1sxXSA9PSAwOgorICAgICAgICAgICAgICAgICMgVGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNz
aWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBwb3J0CisgICAgICAgICAgICAgICAgIyBu
dW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFuZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1
c2UKKyAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBvcnQgbnVtYmVyLiBBbHNvIHNlbGYuc2Vy
dmVyX3BvcnQgaXMgcmV3cml0dGVuCisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4
cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVybmFsIGNvZGUuCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IChzZWxmLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFdKQorICAg
ICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdCisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWduZWQnLCBz
ZWxmLnNlcnZlcl9wb3J0KQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2Nr
ZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAg
IGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNl
cnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAg
ICBzb2NrZXRzIGxpc3Rlbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFpbGVkX3NvY2tldHMg
PSBbXQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAg
ICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUpCisg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQorICAgICAgICAgICAgICAgIHNv
Y2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2Nr
ZXRpbmZvKQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgorICAg
ICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAgICAgICBpZiBs
ZW4oc2VsZi5fc29ja2V0cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNh
bCgKKyAgICAgICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBs
ZXZlbCB0byBzZWUgdGhlIHJlYXNvbi4nKQorCisgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2Ug
dG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgY2xvc2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAgICAgICBz
b2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdDbG9zZSBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIHNvY2tldF8uY2xvc2Uo
KQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2Vy
dmVyLlRDUFNlcnZlci5maWxlbm8uIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KCdOb3Qgc3VwcG9ydGVkOiBmaWxlbm8nKQorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1sw
XVswXS5maWxlbm8oKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGll
bnRfYWRkcmVzcyk6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJy
b3IuIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKCdFeGNlcHRpb24gaW4gcHJvY2Vz
c2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfYWRkcmVzcywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgIyBOb3RlOiBj
bGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgorCisgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QuIiIiCisKKyAgICAgICAg
YWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisK
KyAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwor
ICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAgICAgIyBQcmludCBj
aXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiBhY2NlcHQuCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2NrZXQuY2lwaGVyKCkp
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkp
CisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MKKworICAg
IGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWw9MC41KToKKyAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlci4iIiIKKworICAg
ICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IFRydWUKKyAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRf
ZG93bi5jbGVhcigpCisgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5oYW5kbGVfcmVxdWVz
dAorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaGFuZGxlX3JlcXVlc3Rfbm9ibG9jaycpOgor
ICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2Nr
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnRmFsbGJh
Y2sgdG8gYmxvY2tpbmcgcmVxdWVzdCBoYW5kbGVyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgd2hpbGUgc2VsZi5fX3dzX3NlcnZpbmc6CisgICAgICAgICAgICAgICAgciwgdywgZSA9IHNl
bGVjdC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIFtzb2NrZXRfWzBdIGZvciBzb2NrZXRf
IGluIHNlbGYuX3NvY2tldHNdLCBbXSwgW10sCisgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50
ZXJ2YWwpCisgICAgICAgICAgICAgICAgZm9yIHNvY2tldF8gaW4gcjoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXRfCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9y
ZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uc2V0KCkKKworICAgIGRl
ZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VT
ZXJ2ZXIuc2h1dGRvd24uIiIiCisKKyAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQor
ICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLndhaXQoKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U5NDI4ZDY5MWQ3NTZjZjNkNjg3ZTc1NmI3
MzgxNGNjZDNiZTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAu
cHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KKyIiIgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9u
CitpbXBvcnQgc3lzCisKK19QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29ja2V0JworCisjIEJ1
aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBmYXN0ZXIgbWFza2luZy4gU1dJRyBpcyBy
ZXF1aXJlZC4KK19VU0VfRkFTVF9NQVNLSU5HID0gRmFsc2UKKworIyBUaGlzIGlzIHVzZWQgc2lu
Y2UgcHl0aG9uX3JlcXVpcmVzIGZpZWxkIGlzIG5vdCByZWNvZ25pemVkIHdpdGgKKyMgcGlwIHZl
cnNpb24gOS4wLjAgYW5kIGVhcmxpZXIKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNyc6CisgICAgcHJp
bnQoJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjcgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUsIGZp
bGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitpZiBfVVNFX0ZBU1RfTUFTS0lORzoK
KyAgICBzZXR1cChleHRfbW9kdWxlcz1bCisgICAgICAgIEV4dGVuc2lvbignbW9kX3B5d2Vic29j
a2V0L19mYXN0X21hc2tpbmcnLAorICAgICAgICAgICAgICAgICAgWydtb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmknXSwKKyAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSkK
KyAgICBdKQorCitzZXR1cCgKKyAgICBhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKKyAgICBhdXRo
b3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3JnJywKKyAgICBkZXNjcmlwdGlvbj0nU3RhbmRhbG9u
ZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLicsCisgICAgbG9uZ19kZXNj
cmlwdGlvbj0oJ21vZF9weXdlYnNvY2tldCBpcyBhIHN0YW5kYWxvbmUgc2VydmVyIGZvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJGQyA2NDU1KS4g
JworICAgICAgICAgICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
IGZvciBtb3JlIGRldGFpbC4nKSwKKyAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCisgICAgbmFt
ZT1fUEFDS0FHRV9OQU1FLAorICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9O
QU1FICsgJy5oYW5kc2hha2UnXSwKKyAgICBweXRob25fcmVxdWlyZXM9Jz49Mi43JywKKyAgICBp
bnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgI1RPRE8oc3V6dWtpa2VpdGEpOiBVcGRhdGUg
dGhpcyB0byBuZXcgR2l0aHViIFVSTAorICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3B5d2Vic29ja2V0LycsCisgICAgdmVyc2lvbj0nMy4wLjAnLAorKQorCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVz
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2Nh
Y2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1
NTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNl
cnQucGVtCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJ
Q3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNEUUVCQlFVQU1Fa3hDekFK
QmdOVgorQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldK
emIyTnJaWFF4RkRBUworQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0WERURXlNRFl3TmpBM01q
UXpNMW9YRFRNNU1UQXlNekEzTWpRegorTTFvd1NURUxNQWtHQTFVRUJoTUNTbEF4RGpBTUJnTlZC
QWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAorWW5OdlkydGxkREVVTUJJR0ExVUVBeE1M
Y0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAorZ1kwQU1JR0pBb0dCQUtv
U0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWprQ1lpYWhYVwordTJDYlRU
aGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0VU5xdFFPaFFhcXFLK0Na
OQorTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytxVWYyTWpoNC8rU3p4QkRO
UDdBZ01CQUFHagorZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMr
K2J6TUhrR0ExVWRJd1J5TUhDQQorRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8zKytiem9VMmtTekJK
TVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQorQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNC
NWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgorWTJ0bGRJSUpBS3FWZ2hrR0Yx
clNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQQorZ3NNSTFXRVlx
TncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJrUThiQ3I2eFkrS3c3cwor
WnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJMbytldDk4c2VsWnlkcEhl
bUYzREpKMworZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2RjZWNGpVMDdoUT0KKy0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNTM3OWE3MmIwZGFjNWY0MTk3OWM4MDJjNjYzZGY4Yjg4ZGVhODI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCkBAIC0w
LDAgKzEsNjEgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246IDMg
KDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQorICAgICAgICBTaWduYXR1cmUg
QWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPUpQLCBT
VD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAgICAgICAgVmFsaWRpdHkK
KyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEyIEdNVAorICAgICAg
ICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCisgICAgICAgIFN1Ympl
Y3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNvY2tldAorICAgICAg
ICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3Jp
dGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0
KQorICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKyAgICAgICAgICAgICAgICAg
ICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6MWE6CisgICAgICAg
ICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2Ojg5OjAzOmEyOjIx
OgorICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjozNToyNzozYTphMjo5
Mjo4ZToxMjo2MjoKKyAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6Nzg6ZGY6YjY6OTQ6
Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6CisgICAgICAgICAgICAgICAgICAgIDVjOjA4OmYwOjA5OjNl
OmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgorICAgICAgICAgICAgICAgICAgICBlNTpm
YjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKKyAgICAgICAgICAgICAg
ICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6MDc6OWE6CisgICAg
ICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5OjgyOjgzOmRiOjY4OmJm
OmI4OgorICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1NDo3Mzo3YgorICAg
ICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4
dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAg
ICAgICAgICAgIENBOkZBTFNFCisgICAgICAgICAgICBOZXRzY2FwZSBDZXJ0IFR5cGU6IAorICAg
ICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKKyAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAor
ICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCisgICAgICAgICAg
ICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAgODI6QTE6
NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6RTk6MDY6MDAKKyAg
ICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAg
ICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZGOkEwOjY4OjRFOjFB
OjM3OkZCOkU2OkYzCisKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6ZDc6N2Y6YTA6MWU6
MGQ6MWE6ZWI6MmY6CisgICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1OjhjOjFiOmYwOjUxOmQ2
OjUyOmU3OjhkOjg0OjNiOjlmOgorICAgICAgICBkODplZDoyMjo5YzphYTpiZDplZTo5Yjo5MDox
ZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKKyAgICAgICAgYmE6Zjc6MTU6Y2U6ZGE6NWY6ZGI6
OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6CisgICAgICAgIGQzOmYxOmJlOjUyOjRm
OmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgorICAgICAgICBmOTowNTo1
MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpkNToKKyAgICAgICAg
OTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6MzQ6NjA6YjE6Cisg
ICAgICAgIGNiOmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNtRENDQWdHZ0F3
SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdKS1VERU8KK01Bd0dB
MVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3
dHcKK2VYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpPVEV3TWpNd056STFN
RGhhTUVreEN6QUoKK0JnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVF
Q2hNTGNIbDNaV0p6YjJOclpYUXgKK0ZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNSUdmTUEw
R0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKK2dRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0Fl
WXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKK0gvUjQzN2FVeXlmV3k5WTMx
MXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEyZHYKK0JJWWQ3Mklj
VmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJvNEdQTUlHTU1Ba0cK
K0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NHU0FHRytFSUJEUVFm
RmgxUGNHVnUKK1UxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdR
VWdxRnppeFlNZk9UVFJwVVQKK2xSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0ZvQVU2eFozRUpLN0tI
QnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKK2h2Y05BUUVGQlFBRGdZRUFhN05HS1FMZnNNaU94
TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKKzJPMGluS3E5N3B1UUhZU2pUQXZM
NjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoKK1l6dFI3YWVCK1FW
UmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4eTY0PQorLS0tLS1F
TkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9j
ZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMxYWYxMTM0OTlkNmE1
YThiMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4Mgp6Y21ZK0ZYSCpqaTdLTWAjMHRCZzJx
ekZpdFAhZjxQSEEtKk5Mb0BWX2djZjB0OFdCKCNJP3slWVJGeCp1YCUpeUoKejFuRyFLMzVicWhY
clg3QWI5USVqZjg2dWx4JVp2LT4lSF5BYVpwd2VrUDQyWW59ZzZ2I091WUE4R3RtdlZqU0lqCnpG
cGg1VSgoWiVmQVN3U3VrWVhHcD1GKkEpMFJmaTxgJWVPZF5GcEJpLWYjczdmaXI/PjJjVyRUIzsy
KkdBUF9BZQp6MV8jbHJuMkUoZUtPTUo2TjI2WUpuZV9AaHB9U0tQWFVCN0ZNZXJffjV8MXFnQ3tU
cW5uQnV2MSRrcHA1T0J6JUAKejxteVN3Kz9ZPl5qQVo0I1hBLX0qIVFzYnVPaFcoc084MzY2KCQ7
KDFBPm1vKE8tJXgoaG4oPXlaO3l+TkcjUVgxCnpnSGtTaV5eOGN2NFRUU0w5dm41cVIoPl9EM2Ym
b2MqandQZ0kjS0BRI0FzTClEO0JEJldiMmQrSTFeSjduPn1ZWgp6YkNYbzlmT0BnIUBkV1lhMlYl
fTspIXs8ekRjfChwdkpJYXhXN05kTyVPNmY+ciZhT3JwSGt7b19SOW1RNDd1b2IKej9sPjl8bnxY
M2BhZ3BeRztMd1hSNTwobHIrUjxjTDVqVFEoP15EPGtSbyFIX1QjcD95M2R9XnRDWVYhOFJeTj99
CnpDKiVYbTlMZWY+ajdobHItP2pIbHB8d2ZBJl5uLXM7PCF6JHFEMXhQcSE4S1ExfX5kdXB3fkJN
MWdzfkBBbztDcQp6d1JnVXwyXmR9Ti1nVjtAYVlrdThJJX18PGw2UU0/PWR+RllwYkdGSDkmdk5n
S1oqU3ljSVN8bWN1T1I/bCZDT3cKenN7emQ1em1lbHhxTjFEUXl7fVBnQj11I2Z6SU5Qa0Iwb04q
Y2szdmArMXshWVhQfntFVkk3VnFoKn51YVdfflVDCnpsUjMzUlowNUhoa0MtMWVJcCktQFleeXZj
LXxSJSEqOWR3N25mVyl5amNISVlmNnI9YUN0KFVoaS1GSm0ybntfKQp6JXt1bEJVWFJgMjw+bHh9
ZUdtU21SSj41b3RrQCgrcGpzUHE7NGhaNkZJS2wje254UCFBTCEyOF9fQVlmbGBWZ3sKemxSUmFB
UnxWbXkxX2BeYmJqWnJ6QXtRJGxZZWpJWWReQSRaPlcmanluTT1LYFRsNHdWKTN3QGQxSmNgLTUt
Q0dKCnp4cV5AOF8oITxaRjJxbGhfWn19bnI/UyY1KnorRkApdihaMUVJcztIbX0hMX5NVEwhajFA
YyRaSExSfVYoPTtebwp6ZFVwZnk/bz55em9sX3NpPDxVRUI9dChlZUJ6Z0peV1l3c0hDRzkzNHMk
ZClAcXFId2deeVpNe2BeakohOTt0cjYKemVvVWF5JiQrQnlHfE5eX3pvQUhedFlJZz5oYVl3fEB8
YzMxXncoblVkN2soWW1FSjc2Vlk3OSsoQyhfJDsxTXNVCnpoaU5pK0I1Z1NyRGp8OT48QD82UiY4
emJtOGJyP0MtTm4xY2soKzxOSyU3KTZ2LXdXcTQ9TV9UYnQxOTR6VSp5Rgp6aDxvdDxIQldub3hC
JTFrOShNMG88TmcpUmdIUygjP2VkRVFCIV58RmstXyhhYGJVQkxBSypofmF6fiFfeHU9VDQKejZH
NUstYVhKb3RIUWxFQzhDVTV8UnlNUnVRa1hFKT9edjYoaT1NdSk9JF5vJTAheXM1R1ZSYVhaMlMy
SDRJODNMCnpxKWJgfFB4eyg4OVczMnpxNHNxekgrQkFLUDl1YURFcEQ4SUlBOUQtSDQ1QyVWVD9K
SiNNYStCQGk5TVBkRi0jIwp6TnhGNVR1fWl6X2h6JFNLWjBfXyYhWXAxeWFkVnpvY0BFeStCZWZK
Q3RDU1ZkNShKeSg8QzZJY0NXfURtSHdDOFQKelJ7a3F2UkA/M3J6TEcyJFpkY3gtNXZGUkBkJFEj
REQrfntkaEBtZF9lYEJCNipVWTZSKzReI1UlejRsdHg5QiU7CnpOVjh6KntHY0dNO2dxMlJ0eWRq
e0gwUzBwI3o8NiU3bTMhJXs/TVF1YTxgQGU1Yk90YmQhRWM/R151eGY0Z3hjSQp6LUY3U1RZaX52
RGJtdkNaM05EY2ZIajg+QzlGVjZqZDF9KHBTd3JnR2sqUVo5UnI0KTYhc1NrVFVxYnhiYWVhMnUK
endTYCR5b3NRKWViJW9fdkpPKiFBYGRSO1k0az4mcVl6dWEtWk5FPDNGRT1JK2VTVTt4IXB0XkEz
NT5vSW9QYEpxCnpabH4pckM2MEwra1N4QWdvUEV8ckdqVkA/MkF5KlhiPSRjYGNfTDM9RXpoakJV
RD1oMV80JWVCQ2ZsaiZFSFptTwp6c3sxYnxOdXg2KztLI0tCPVRrX3xpa3x7KjAxZGskOUthNmBj
UlU9TWNZaU4hay1hKTJQRDMxaDxjVHMla1Bob1oKek8pMndfVDktOHcyTk0mJnEycGw0XktxfUNQ
ZT1sOWhxJFc0IXQ7SkQlfFVKKDI4dkRiTSpMPlZGN2JXX1h7YjE0CnpHTncodz5FX1M5YDw7eFFs
UGBAc2Q+Nm0zbjIpTCkwcCFYUnJEIzI1aUlrUkRzKTF1ak4lU3N5dyM2MnZkdiZBbAp6Y2RqLVls
IzYrQGEwV3NjVTwzYGd2VyQydy0oXkhmRVJ5eHNOc3E2bUswZDg7PzBMU2VOaCVORWUwQllKNElM
KGEKeiRXWG5kKVBCVzxBVGt7eSUyUzlHUGEycXlKVyReSkpfY29fWFAxbTlFfWopUT9ebCQjKk1E
eFA1fG1ZMXpjcTN5CnpiPUB6eUNYdWd3ZHtOang/aTI3ait6WE80KlY+fVplLXpCUXgpSHlud0xg
TmooITl0KTU0ZE87elRWfi1PIztVOwp6TXdwMFBVLXVVTD8jIzhMLSkmdm1ibkFtbiNAJmE+dj1j
UH1FVVFKVndhRHc5VjwtSXdZdGlUOXcoVE1lYTIlRHkKenxBNDAkTjV1b2lRRV5fe1MxLWlgcTVs
dHRwZz5TRDRwYWZoZmxCfDZQRT4hPnNoV2tvRW1aaGcrfjBIcDwzS1RACno5amskcU1DPTAmQmJr
XmZSbzRmMzhKfmlXQ3x4R1AwYHdaM0YjazhnKklkTlkkR0YtQXg4XjxEckJeajI4WGI2cwp6Unw7
VnZhciU8fFRaS34+MzBrRDMpVyRBRCModHRgI0B4N1E4T1lhcFRfSnlNMXZUP2xieC0rX0YoSkYl
eVMwTyQKenBTI2x9dyowaj5ifU0zZTs0ST57cE1NPnMlYD9mU0FFX1FiYEFuPl9WIWtpfSQ5d01O
OShmVTF1SkdtME1pN2hLCnpBNWwwZTF3VmNeJHFsPzVnbT44RXZCcFNhV2Y1VElnM1pTYnVKaHA7
YSUoWitrY3tjZHYxUHVYJGUyR0FOP0pmOAp6V0tOZ1M8KE0yRk5VYFJ4ZEJHfWY9UzFyblEqZVIx
MnFGX0MmJnBuQGB5JUN+TDleUV9aOWxoJkc9WHZHQyE0MTAKenluKTVvPSl4MmlKWSteP15FTGpu
dEhIYH1LKXphP0k9fHYhJGhMMG4mR3p5cHphTHdOZGVNPU9qV3wtLT1tUl9qCnp5dD9+VnhfXzlC
RXZjaEw/OWh1VW9iLTVuK3IxPzx4QGNnfTVhfFZ8RmNGUU8qZUlwd1pFbn5WR0xlcXZTQFdrMgp6
KSErRDMtO3s0QE9PKWIrYlFPIz0tRStCZU9AZiEzPGlUMG1iMnBiMzg4e0dJUmFyamRuVGklQD80
cXd5I3E2MFkKenFpQXx7dDZvNDlFTTE4SiZ3OERBI3dRRERzRndOJEhHKk1UTDIxQlFqKVlSYFc1
TDtaZk1NPCpyTD1GSWd8MGJKCnpUOXI3RmxCTExeclYlMVVPITN8R0RFYU0hakhQTHI/NVFCdUND
IVcpPmRyZl5SQ2BgN1lSWVooSz5pZTA+cEpkXgp6SldfSHslKV5jITY+bHw5UDg/Yz1qKEI1N1lK
ejg/WHlRekU5dUdhfWRWMFBUcDMhO3AhU0YpfXQtaT5DPEVkSCsKek1LQVNuViMhJlNXZmR9MGRs
alhzeVFmenNANmkwK2RxU0hKTH5GN35vdHwkSHdmK0YqMGpDSyp3NVdvRkBROWhOCnpobGslU3to
NkM1N0NJMl81Ujk7ZjM7cC0xPkRVbipVXmVvR2pocW87KlIqJGtWRTAxSj5USlFSc3Y5b3omayEz
egp6a1dUOyowUWUwTTNVQ0x3MEQ9SitmR2ZjRnZKVXxgVWRzS18zNHRUdkh7ZiYtWThXRkdoP15Q
IVg1O3k9Rlp1RHMKZmZyV2swJU0oT0duVE1OPGgmcUB5TGREVV8mTWNBZj98MWtNZWpVTm8KCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
Y2VydC9rZXkucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFlODU4MzE4ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtCkBAIC0wLDAgKzEs
MTUgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNYZ0lCQUFLQmdRRGVF
TTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczEKK0p6cWlrbzRT
WWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0IK
K2lONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6
ZXdJREFRQUIKK0FvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4VGxkYWZhNlh2YXdF
WVVUUDBTNzd2LzFsbGcxWXYKK1VJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMvWjNlMWZzb3Q1dERZ
c3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKK1FTbzdZRkNhanVIdEUrVy9nekYrVUhiZHp6WElE
alFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKKzNVUjhmOG9la0VSd3NtRU1mOURI
NVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EKK29nQU0rNE5YNFFK
QkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0YmxNSlE1T3EKK1Fk
T0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQeWxHM3VyY0MybWZR
eEJra1cKK1pDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0OVVObXFjME4wZnBl
MmZBZWhqM1VFQ1FRQ20KK0ZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6M2Nia0I0QjNGY2hE
bGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKK1FEazF0VUtvcnR4dlFaSmFBRDRCQWtFQWhHT0hRcVBk
NmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKK0NsUmlNbjJnOFNBTGlJTDNCRGdHWEtj
S0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OTA0NDE5MGY1OGJlNzc0NTYxNTIzYjNhN2ViOWNkZGFiYTgyMzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9r
ZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVz
dGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ1MGE2YWNkNTM3NjIyM2M2MDNhYmUyNjRiOTY3Nzk2ODMyZmI1NzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5w
eQpAQCAtMCwwICsxLDcxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGluZy4KKworVGhpcyBt
b2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgaGFuZHNoYWtlLCBm
cmFtZQorc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50LgorCitUaGlzIGlz
IGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMgY29kZSBpbmRlcGVu
ZGVudCBmcm9tCittb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcuIFN0cmVhbSBjbGFz
cyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKK3Rlc3RpbmcuIFVzaW5nIHV0aWwuaGV4aWZ5LCBl
dGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3NpbmcKK2lzIGFsbG93
ZWQuCisKK05vdGU6CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcuLCB3ZSBjdXQg
Y29ybmVycyBpbiBoYW5kc2hha2UuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBv
cnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBoYXNobGliIGltcG9ydCBzaGExCitmcm9tIHNp
eCBpbXBvcnQgaXRlcmJ5dGVzCitmcm9tIHNpeCBpbXBvcnQgaW5kZXhieXRlcworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KKworREVGQVVMVF9QT1JUID0gODAKK0RFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKKwor
IyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcg
Zm9ybWF0CitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENPREVfQ0xPU0UgPSAweDgKK09Q
Q09ERV9QSU5HID0gMHg5CitPUENPREVfUE9ORyA9IDB4YQorT1BDT0RFX1RFWFQgPSAweDEKK09Q
Q09ERV9CSU5BUlkgPSAweDIKKworIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQorX1VQR1JB
REVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCitfQ09OTkVDVElPTl9IRUFERVIg
PSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKK1dFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9IGIn
MjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJworCisjIFN0YXR1cyBjb2Rlcwor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5U
X0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CisKKyMgRXh0ZW5zaW9u
IHRva2VucworX1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZs
YXRlJworCisKK2RlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfc2VjX29yaWdpbl9oZWFkZXIob3Jp
Z2luKToKKyAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2lu
Lmxvd2VyKCkKKworCitkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKKyAgICAjIDQuMSAxMy4g
Y29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hh
cmFjdGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBv
cmlnaW4ubG93ZXIoKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNl
Y3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5nLgor
ICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9ydCA9IGhvc3QubG93
ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBu
b3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0
NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAgICMgKDopIGZvbGxv
d2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVn
ZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9
IERFRkFVTFRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVM
VF9TRUNVUkVfUE9SVCkpOgorICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKKyAg
ICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIw
IFNQQUNFCisgICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJ0hvc3Q6ICVzXHJcbicgJSBob3N0cG9ydAorCisKKyMgVE9ETyh0eW9zaGlubyk6
IERlZmluZSBhIGJhc2UgY2xhc3MgYW5kIG1vdmUgdGhlc2Ugc2hhcmVkIG1ldGhvZHMgdG8gdGhh
dC4KKworCitkZWYgcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVjZWl2ZWRf
Ynl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxlIHJlbWFpbmluZyA+
IDA6CisgICAgICAgIG5ld19yZWNlaXZlZF9ieXRlcyA9IHNvY2tldC5yZWN2KHJlbWFpbmluZykK
KyAgICAgICAgaWYgbm90IG5ld19yZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQgYmVmb3JlIHJlY2Vp
dmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAnKHJlcXVlc3RlZCAlZCBi
eXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUKKyAgICAgICAgICAgICAgICAobGVu
Z3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICByZWNlaXZlZF9ieXRlcy5hcHBlbmQo
bmV3X3JlY2VpdmVkX2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVuKG5ld19yZWNlaXZl
ZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWRfYnl0ZXMpCisKKworIyBUT0RP
KHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xhc3MgZGl2ZXJ0cyB0aGVz
ZSBtZXRob2RzLiBXZQorIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNlciBhcyBzcGVjaWZpZWQg
aW4gUkZDIDY0NTUuCisKKworZGVmIF9yZWFkX2ZpZWxkcyhzb2NrZXQpOgorICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KKyAgICBmaWVsZHMgPSB7fQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgNC4xIDMz
LiBsZXQgL25hbWUvIGFuZCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIG5h
bWUgPSBiJycKKyAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25h
bWUvCisgICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKKyAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2Vz
CisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBzcGVjLgorICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCisgICAg
ICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShz
b2NrZXQsIGNoKQorICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVy
CisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9
IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZv
ciBoZWFkZXIgJworICAgICAgICAgICAgICAgICclcicgJSAoY2gsIG5hbWUsIHZhbHVlKSkKKyAg
ICAgICAgIyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0
IGhhcyB0aGUgbmFtZQorICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkg
aW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAjIGFycmF5IGFzIGEgVVRGLTgg
c3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZworICAgICAgICAjIG9idGFp
bmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0
ZQorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgZmllbGRzLnNldGRlZmF1bHQobmFtZS5kZWNv
ZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5hcHBlbmQodmFsdWUu
ZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKKyAgICByZXR1cm4gZmllbGRzCisKKworZGVmIF9yZWFkX25hbWUoc29ja2V0
KToKKyAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIG5h
bWUgPSBiJycKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQuMSAzNC4gcmVhZCBhIGJ5dGUg
ZnJvbSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisg
ICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUp
CisgICAgICAgIGVsaWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAgICAgcmV0dXJuIG5h
bWUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSArPSBjaAorCisKK2Rl
ZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKKyAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0
aGUgc2VydmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgcmV0dXJuIGNoCisKKworZGVmIF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gp
OgorICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIHZh
bHVlID0gYicnCisgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgorICAgIHdo
aWxlIFRydWU6CisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFs
dWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpCisKKworZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6CisKKyAgICBmaXJz
dF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkKKyAgICBmaW4gPSAoZmlyc3Rf
Ynl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCisgICAgcnN2
MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAm
IDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNvbmRfYnl0ZSA9IG9y
ZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3
KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgaWYg
bWFzayAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ01hc2sgYml0IG11c3QgYmUgMCBm
b3IgZnJhbWVzIGNvbWluZyBmcm9tIHNlcnZlcicpCisKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9
PSAxMjc6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygnIVEnLCBl
eHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPiAw
eDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0
LCAyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFIJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisKKyAgICByZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3Yz
LCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCisKKworY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgor
ICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJhd19zb2NrZXQpOgorICAgICAgICBzZWxmLl9zc2wgPSBzb2NrZXQuc3NsKHJhd19z
b2NrZXQpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9zc2wud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3NzbC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6Cisg
ICAgICAgICMgTm90aGluZyB0byBkby4KKyAgICAgICAgcGFzcworCisKK2NsYXNzIEh0dHBTdGF0
dXNFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIHVuZXhwZWN0ZWQgaHR0cCBzdGF0dXMgY29kZSB3YXMKKyAgICByZWNlaXZlZCBh
cyBhIHJlc3VsdCBvZiBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHN0YXR1cyk6CisgICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYp
Ll9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworY2xhc3Mg
V2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgorICAgICAgICAiIiJIYW5kc2hha2Ug
V2ViU29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFu
ZHNoYWtlIGZhaWxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0CisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMgPSBb
XQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAgICAgICAgZmllbGRz
LmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAg
ICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxz
KSkKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKKyAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
c2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorCisgICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5k
b20oMTYpCisgICAgICAgIGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfa2V5KSkK
KyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2NrZXQtS2V5OiAlc1xyXG4nICUga2V5
LmRlY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tl
dC1WZXJzaW9uOiAlZFxyXG4nICUgc2VsZi5fb3B0aW9ucy52ZXJzaW9uKQorCisgICAgICAgICMg
U2V0dGluZyB1cCBleHRlbnNpb25zLgorICAgICAgICBpZiBsZW4oc2VsZi5fb3B0aW9ucy5leHRl
bnNpb25zKSA+IDA6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zOiAlc1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2lu
KHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQorCisgICAg
ICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChmaWVsZC5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGIn
XHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hh
a2UgcmVxdWVzdCcpCisKKyAgICAgICAgZmllbGQgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAg
ICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNo
YWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGEg
VW5pY29kZURlY29kZUVycm9yIHdoZW4gdGhlIGRlY29kZSBmYWlscworICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoYidcclxuJyk6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcycgJSBmaWVsZC5kZWNvZGUoJ0xh
dGluLTEnKSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKGInW14gXSogKFteIF0qKSAuKicsIGZpZWxk
KQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVzJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpCisgICAgICAgIGNvZGUg
PSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCByZS5tYXRjaChiJ1swLTldWzAtOV1bMC05XSQn
LCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
SFRUUCBzdGF0dXMgY29kZSAlcyBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVz
JyAlCisgICAgICAgICAgICAgICAgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29k
ZSgnTGF0aW4tMScpKSkKKyAgICAgICAgaWYgY29kZSAhPSBiJzEwMSc6CisgICAgICAgICAgICBy
YWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQ
IHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXMgaW4gc3RhdHVzIGxpbmU6ICcKKyAgICAgICAg
ICAgICAgICAnJXInICUgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29kZSgnTGF0
aW4tMScpKSwKKyAgICAgICAgICAgICAgICBpbnQoY29kZSkpCisgICAgICAgIGZpZWxkcyA9IF9y
ZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCisKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFk
ZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICAjIENoZWNrIC9maWVsZHMvCisgICAgICAgIGlm
IGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1sndXBncmFkZSddKQorICAgICAgICBpZiBsZW4oZmllbGRzWydj
b25uZWN0aW9uJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011bHRpcGxl
IENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKKyAgICAgICAgaWYgZmllbGRzWyd1cGdyYWRlJ11b
MF0gIT0gJ3dlYnNvY2tldCc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmllbGRzWyd1cGdyYWRlJ11bMF0pCisgICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbidd
WzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQorCisgICAgICAgIGlmIGxlbihm
aWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFj
Y2VwdCddKQorCisgICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XVswXQorCisgICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVj
b2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAgICAgZXhjZXB0IFR5
cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICcgKyBhY2NlcHQpCisKKyAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
RGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25n
JykKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkKKworICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQgPSBzaGExKGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKKyAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2ViU29ja2V0
LUFjY2VwdDogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9h
Y2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQu
ZGVjb2RlKCdVVEYtOCcpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVk
KSAhPSAlciAnCisgICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVk
X2FjY2VwdCkpCisKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdl
dCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IFtdCisgICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9u
cygKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkK
KworICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhl
cmUgaXMgYW55IHVucmVjb2duaXplZAorICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9u
cyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCisgICAgICAgICMgZXh0ZW5zaW9u
cyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwg
YmUKKyAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgorICAgICAgICBmb3Ig
ZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBleHRlbnNp
b24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OOgorICAgICAgICAgICAg
ICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQorICAg
ICAgICAgICAgICAgIGlmIGNoZWNrZXI6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0
ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKKworCitjbGFzcyBXZWJT
b2NrZXRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJT
b2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29j
a2V0LCBoYW5kc2hha2UpOgorICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKKyAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQg
dG8gYXBwbGljYXRpb24gZGF0YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgorICAgICAgICBzZWxmLl9v
dXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1l
X2ZpbHRlciA9IE5vbmUKKworICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UKKworICAg
IGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBvcy51
cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJZgorICAgICAgICAj
IHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGlicmFyeSBjYWxsIHRo
YXQgZ2VuZXJhdGVzCisgICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkbyBy
YW5kb20gbnVtYmVyIHNlcXVlbmNlLgorICAgICAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRv
bSg0KQorICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KKyAgICAgICAgY291bnQgPSAw
CisgICAgICAgIGZvciBjIGluIGl0ZXJieXRlcyhzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodXRpbC5wYWNrX2J5dGUoYyBeIGluZGV4Ynl0ZXMobWFza2luZ19ub25jZSwgY291bnQpKSkK
KyAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKKyAg
ICAgICAgcmV0dXJuIGInJy5qb2luKHJlc3VsdCkKKworICAgIGRlZiBzZW5kX2ZyYW1lX29mX2Fy
Yml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAgICAgICBzZWxmLl9zb2NrZXQu
c2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCisKKyAgICBkZWYgc2VuZF9k
YXRhKHNlbGYsCisgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgbWFzaz1UcnVlLAorICAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAgICAgICAgICAgICAg
ICAgcnN2Mj0wLAorICAgICAgICAgICAgICAgICAgcnN2Mz0wKToKKyAgICAgICAgaWYgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGF5bG9hZCA9
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkKKworICAgICAgICBp
ZiBzZWxmLl9mcmFnbWVudGVkOgorICAgICAgICAgICAgb3Bjb2RlID0gT1BDT0RFX0NPTlRJTlVB
VElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQorCisg
ICAgICAgIGlmIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQorICAg
ICAgICAgICAgZmluID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZnJhZ21l
bnRlZCA9IFRydWUKKyAgICAgICAgICAgIGZpbiA9IDAKKworICAgICAgICBpZiBtYXNrOgorICAg
ICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1h
c2tfYml0ID0gMAorCisgICAgICAgIGhlYWRlciA9IHV0aWwucGFja19ieXRlKGZpbiA8PCA3IHwg
cnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2Fk
KQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6CisgICAgICAgICAgICBoZWFkZXIg
Kz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgZWxp
ZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6CisgICAgICAgICAgICBoZWFkZXIgKz0gdXRpbC5w
YWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAg
JyFIJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8
IDYzOgorICAgICAgICAgICAgaGVhZGVyICs9IHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI3
KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICchUScsIHBheWxvYWRfbGVuZ3RoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUb28gbG9uZyBwYXls
b2FkICglZCBieXRlKScgJSBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgaWYgbWFzazoKKyAgICAg
ICAgICAgIHBheWxvYWQgPSBzZWxmLl9tYXNrX2h5YmkocGF5bG9hZCkKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoaGVhZGVyICsgcGF5bG9hZCkKKworICAgIGRlZiBzZW5kX2JpbmFyeShz
ZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5kX2Rh
dGEocGF5bG9hZCwgT1BDT0RFX0JJTkFSWSwgZW5kLCBtYXNrKQorCisgICAgZGVmIHNlbmRfdGV4
dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5k
X2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisK
KyAgICBkZWYgX2Fzc2VydF9yZWNlaXZlX2RhdGEoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMpOgorICAgICAgICAoYWN0dWFsX2ZpbiwgYWN0dWFsX3JzdjEsIGFj
dHVhbF9yc3YyLCBhY3R1YWxfcnN2MywgYWN0dWFsX29wY29kZSwKKyAgICAgICAgIHBheWxvYWRf
bGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVhZGVyKHNlbGYuX3NvY2tldCkKKworICAgICAgICBpZiBh
Y3R1YWxfb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5l
eHBlY3RlZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkKKworICAgICAgICBp
ZiBhY3R1YWxfZmluICE9IGZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmluLCBhY3R1YWxfZmluKSkKKworICAgICAgICBpZiByc3YxIGlzIE5v
bmU6CisgICAgICAgICAgICByc3YxID0gMAorCisgICAgICAgIGlmIHJzdjIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJzdjIgPSAwCisKKyAgICAgICAgaWYgcnN2MyBpcyBOb25lOgorICAgICAgICAg
ICAgcnN2MyA9IDAKKworICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSByc3YxOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIg
KGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2MSwgYWN0dWFsX3Jz
djEpKQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJzdjI6CisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCisK
KyAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2MzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKKworICAgICAg
ICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkK
KworICAgICAgICBpZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIo
cmVjZWl2ZWQpCisKKyAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
cGF5bG9hZCBsZW5ndGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAobGVuKHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKKworICAgICAgICBpZiBwYXls
b2FkICE9IHJlY2VpdmVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQorCisgICAgZGVmIGFzc2Vy
dF9yZWNlaXZlX2JpbmFyeShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5
bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1PUENPREVfQklOQVJZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29kZSwgZmluLCByc3Yx
LCByc3YyLCByc3YzKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz
djM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNv
ZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgX2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYs
IGNvZGUsIHJlYXNvbiwgbWFzayk6CisgICAgICAgIGZyYW1lID0gdXRpbC5wYWNrX2J5dGUoMSA8
PCA3IHwgT1BDT0RFX0NMT1NFKQorCisgICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24uZW5jb2RlKCd1
dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBib2R5ID0gYicnCisgICAgICAgIGlm
IG1hc2s6CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZSgxIDw8IDcgfCBsZW4o
Ym9keSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZShsZW4oYm9keSkpICsgYm9keQorICAgICAgICByZXR1
cm4gZnJhbWUKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6CisgICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJl
YXNvbiwgVHJ1ZSkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZSwg
cmVhc29uKToKKyAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIEZhbHNlKQorICAgICAgICBhY3R1YWxfZnJhbWUgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKKyAgICAgICAgaWYgYWN0dWFs
X2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAor
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2ZyYW1lLCBhY3R1YWxf
ZnJhbWUpKQorCisKK2NsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJIb2xkcyBv
cHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCisgICAgICAgIHNlbGYu
c2VydmVyX2hvc3QgPSAnJworICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCisgICAgICAgIHNlbGYu
cmVzb3VyY2UgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKKyAgICAgICAgc2Vs
Zi5zb2NrZXRfdGltZW91dCA9IDEwMDAKKyAgICAgICAgc2VsZi51c2VfdGxzID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KKworCitkZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9y
ZXRyeShob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VfdGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk9MTAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGVlcF9zZWM9MC4xKToKKyAgICByZXRyeV9j
b3VudCA9IDAKKyAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQo
dGltZW91dCkKKyAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCisgICAgICAgICAg
ICBpZiB1c2VfdGxzOgorICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29ja2V0KHMpCisgICAg
ICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAg
ICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKKyAgICAgICAgICAgICAg
ICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXRyeV9jb3VudCA9
IHJldHJ5X2NvdW50ICsgMQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xlZXBfc2VjKQor
CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBDbGllbnQob2JqZWN0KToKKyAgICAiIiJXZWJT
b2NrZXQgY2xpZW50LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hh
a2UsIHN0cmVhbV9jbGFzcyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAg
IHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hh
a2UKKyAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNzCisKKyAgICBkZWYg
Y29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0
aF9yZXRyeShzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zb2NrZXRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAgICAgc2VsZi5faGFu
ZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgc2VsZi5fc3RyZWFtID0g
c2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQorCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKKworICAgIGRl
ZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBi
b2R5KQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICAgYmluYXJ5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcmF3PUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKToKKyAgICAgICAgaWYgYmluYXJ5OgorICAgICAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKKyAgICAg
ICAgZWxpZiByYXc6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2Us
IE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW0uc2VuZF90ZXh0KG1lc3NhZ2UsIGVuZCwgbWFzaykKKworICAgIGRlZiBhc3NlcnRf
cmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBiaW5hcnk6
CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
dGV4dChwYXlsb2FkKQorCisgICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3Nl
KGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2Rl
PVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAgICAgICAgc2VsZi5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBjbG9zZV9zb2Nr
ZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0
X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFk
X2RhdGEgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCisgICAgICAgICAgICAg
ICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5n
dGggJworICAgICAgICAgICAgKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKKyAg
ICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5S
RVNFVCddOgorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX251bWJlciA9PSBnZXRhdHRy
KGVycm5vLCBlcnJvcl9uYW1lKSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICBy
YWlzZSBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25uZWN0aW9uIGlzIG5vdCBjbG9z
ZWQgKFJlYWQ6ICVyKScgJSByZWFkX2RhdGEpCisKKworZGVmIGNyZWF0ZV9jbGllbnQob3B0aW9u
cyk6CisgICAgcmV0dXJuIENsaWVudChvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9u
cyksIFdlYlNvY2tldFN0cmVhbSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWFlZjUyZWNmMDE5N2Y3ZTU3ZjM0NmE3MTU0ODI1MmEzODYx
ZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5CkBA
IC0wLDAgKzEsMjI3IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1vY2tzIGZvciB0ZXN0aW5nLgor
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4
Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2l4
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitjbGFzcyBfTW9ja0Nvbm5CYXNlKG9iamVjdCk6
CisgICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8g
YSAobW9jaykgbXBfY29ubi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQorICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gYidm
YWtlX2FkZHJlc3MnCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk92
ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuCisKKyAgICAgICAgZGF0YSBz
aG91bGQgYmUgYnl0ZXMgd2hlbiB0b3VjaGluZyB0aGlzIG1ldGhvZCBtYW51YWxseS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKKworICAgIGRl
ZiB3cml0dGVuX2RhdGEoc2VsZik6CisgICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRo
aXMgbW9jay4iIiIKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5fd3JpdGVfZGF0YSkK
KworCitjbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJNb2NrIGZvciBtb2Rf
cHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNp
Znkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxs
IGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVhZF9kYXRhKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5j
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNo
b3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCisgICAgICAgICAgICBjYWxs
ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikK
KyAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCisgICAgICAgIHNlbGYuX3JlYWRf
cG9zID0gMAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgorCisgICAgICAgIGlmIHNlbGYu
X3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAgcmV0dXJuIGIn
JworICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZChiJ1xuJywgc2VsZi5f
cmVhZF9wb3MpICsgMQorICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAgICAgICAgICAgZW5k
X2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRf
dXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAg
IGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAg
cmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSks
IHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90
byhlbmRfaW5kZXgpCisKKyAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToKKyAg
ICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCisg
ICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4CisgICAgICAgIHJldHVybiBsaW5lCisK
KworY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJCbG9ja2lu
ZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVz
IHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nv
bm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICBD
YWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBh
dmFpbGFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBfTW9j
a0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVz
LnF1ZXVlLlF1ZXVlKCkKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3Zl
cnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKKyAgICAgICAgbGlu
ZSA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2Vs
Zi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpCisgICAgICAgICAgICBp
ZiBjID09IG9yZChiJ1xuJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKGxpbmUpCisK
KyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0
aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9IGJ5dGVhcnJheSgp
CisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgIGRhdGEu
YXBwZW5kKHNlbGYuX3F1ZXVlLmdldCgpKQorCisgICAgICAgIHJldHVybiBieXRlcyhkYXRhKQor
CisgICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIiIlB1dCBieXRlcyB0
byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBi
eXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIGJ5dGUg
aW4gc2l4Lml0ZXJieXRlcyhieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoYnl0
ZSkKKworCitjbGFzcyBNb2NrVGFibGUoZGljdCk6CisgICAgIiIiTW9jayB0YWJsZS4KKworICAg
IFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBvbmx5IHRoZSBtZXRo
b2RzIHVzZWQgYnkKKyAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KKyAgICAiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5
X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29weV9mcm9tID0gbGlzdChjb3B5X2Zyb20uaXRl
bXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgorICAgICAgICAgICAg
c2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYs
IGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fZ2V0aXRlbV9f
KGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgor
ICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtleS5sb3dlcigpLCB2
YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9uZSk6CisgICAgICAg
IHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIoKSwgZGVmX3ZhbHVl
KQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTW9jayByZXF1ZXN0Lgor
CisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICB1cmk9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgaGVhZGVyc19pbj17fSwKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1Ob25lLAorICAg
ICAgICAgICAgICAgICBtZXRob2Q9J0dFVCcsCisgICAgICAgICAgICAgICAgIHByb3RvY29sPSdI
VFRQLzEuMScsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToKKyAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAg
IHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVz
dCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0
aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCisgICAgICAg
ICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCisKKyAgICAg
ICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCisg
ICAgICAgICIiIgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLnVucGFyc2Vk
X3VyaSA9IHVyaQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAg
IHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAor
ICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKKyAgICAgICAg
IyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBh
dm9pZCBuYW1lCisgICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlz
IG5hbWVkIGFzIHN1Y2guCisgICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKKyAgICAg
ICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW0oc2VsZiwgU3RyZWFtT3B0aW9ucygpKQorICAgICAg
ICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29u
ID0gTm9uZQorICAgICAgICBzZWxmLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xB
VEVTVAorICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQorCisgICAgZGVmIGlzX2h0dHBz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXworCisKK2NsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6CisgICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtl
X2NhbGxlZCA9IEZhbHNlCisKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5f
Y29udGV4dCk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUK
KworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHBh
c3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjIyMDE1NTM5ZTQ3ZmRmNTE4ODc1MTU4ZjZiZDZmMzY5OTRmYWJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5CkBAIC0wLDAgKzEs
ODcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSdW4g
YWxsIHRlc3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworVGhpcyBzdWl0ZSBpcyBleHBlY3Rl
ZCB0byBiZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5LCBpLmUuIHRoZQor
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBldGMuCisKK1RvIGNo
YW5nZSBsb2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVsIG9wdGlvbi4KKyAg
ICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZworCitUbyBwYXNzIGFu
eSBvcHRpb24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBvcHRpb25zIGFmdGVy
ICctLScuIEZvcgorZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUgdGVzdCBydW5uZXIg
dmVyYm9zZS4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZyAt
LSAtdgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK19URVNUX01PRFVMRV9QQVRURVJOID0gcmUuY29tcGls
ZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9kdWxlcyhkaXJlY3Rv
cnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3Rk
aXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVfUEFUVEVSTi5zZWFy
Y2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgbW9kdWxlX25hbWVz
LmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25hbWVzCisKKworZGVm
IF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgIHJldHVy
biBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMo
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLicpKSkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cigpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWxvZy1sZXZlbCcsCisgICAg
ICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGRlc3Q9
J2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnLAorICAgICAgICBjaG9pY2Vz
PVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwn
XSkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwu
dXBwZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKXMg
JShhc2N0aW1lKXMgJworICAgICAgICAgICAgICAgICAgICAgICAgJyUoZmlsZW5hbWUpczolKGxp
bmVubylkXSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQorICAgIHVuaXR0ZXN0Lm1haW4o
ZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBdXSArIGFyZ3MpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lz
X3BhdGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZmNlN2IzNGI2NzUxZDYzNWRjZGE2ZTBkNGE1NzExOTUxYTBhMzNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkKQEAgLTAsMCAr
MSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nLgor
CitUZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBtb2R1bGUgYmVmb3JlIG1vZF9weXdlYnNv
Y2tldC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IG9zCitpbXBvcnQgc3lzCisKKyMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5w
YXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgorc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlNjM5ODBmMjU4MWY5ZjYxMzZlODVkYzE2YmI2NGNjYmUzNzNkYzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKQEAg
LTAsMCArMSwyOTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSB0ZXN0IGltcG9ydCBtb2NrCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlwCisKK19URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGgu
am9pbigKKyAgICBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJywgJ2hhbmRs
ZXJzJykKKworX1RFU1RfSEFORExFUlNfU1VCX0RJUiA9IG9zLnBhdGguam9pbihfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInKQorCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkaXNwYXRjaCBtb2R1bGUuIiIiCisgICAgZGVm
IHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxh
Y2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxh
XFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFi
c3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5f
bm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQorCisgICAgZGVmIHRl
c3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRl
X3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAgICAgICAgIyBQeXRob24gYnVp
bHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCku
CisgICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNp
bmcgcmVhbHBhdGgoKSBhbmQgdXNlcworICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRy
aXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCisgICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRo
LnJlYWxwYXRoKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIo
b3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Mv
aCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQorCisg
ICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252
ZXJ0ZXIoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhL2IvaF93
c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3Rv
X3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1h
bGl6ZV9wYXRoKCcvYS9iLy4uL2IvaF93c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0g
ZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigKKyAgICAgICAgICAg
ICcvYS8uLi9hL2IvLi4vYi8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRp
c3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3No
LnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3Qg
KyByJ2EvYi9oX3dzaC5weScpKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmls
ZV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBsaXN0KAorICAgICAgICAgICAgZGlzcGF0
Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKKyAg
ICAgICAgcGF0aHMuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhz
KSkKKyAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwKKyAgICAgICAgICAg
IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSwKKyAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3No
LnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5w
eScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1Yics
ICdub25fY2FsbGFibGVfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
d3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICBdCisgICAgICAgIGZvciBleHBl
Y3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc291cmNl
X2hhbmRsZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9z
b3VyY2VfaGFuZGxlcl9maWxlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0
Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNo
Ll9zb3VyY2VfaGFuZGxlcl9maWxlLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKAorICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUoCisgICAgICAg
ICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KTpwYXNz
XG4nCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6cGFzc1xuJykpCisKKyAgICBkZWYgdGVzdF9zb3VyY2Vfd2FybmluZ3Moc2VsZik6CisgICAg
ICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKKyAgICAgICAgd2FybmluZ3MgPSBkaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCisg
ICAgICAgIHdhcm5pbmdzLnNvcnQoKQorICAgICAgICBleHBlY3RlZF93YXJuaW5ncyA9IFsKKyAg
ICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdibGFua193c2gucHknKSkKKyAgICAgICAgICAgICArICc6IHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgKG9zLnBhdGgucmVh
bHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwg
J3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpCisgICAgICAgICAgICAgKyAnOiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisgICAgICAgICAgICAo
b3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAgIChvcy5wYXRoLnJl
YWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2ln
X3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlz
IG5vdCBkZWZpbmVkLicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwg
bGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVj
dGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAg
ICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qu
d3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKKyAgICAgICAgZGlzcGF0Y2hlci5kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgorCisg
ICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNl
cHRpb24gd2l0aCA0MDMgc3RhdHVzJykKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDAzLCBlLnN0
YXR1cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5m
YWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0
X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5
X3VzZXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJh
X2hhbmRzaGFrZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJworICAgICAgICByZXF1
ZXN0LndzX3Byb3RvY29sID0gJ3AxJworICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInb3JpZ2lu
X2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAxJworICAgICAgICAg
ICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29u
bmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAz
XHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9
ICcvc3ViL3BsYWluPycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluPywgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAy
XHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluP3E9
dicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluP3E9diwg
Tm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxl
cihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gWworICAgICAgICAg
ICAgICAgICcvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLCAnL3N1Yi9ub193c2hfYXRfdGhl
X2VuZCcsCisgICAgICAgICAgICAgICAgJy9kb2VzL25vdC9leGlzdCcKKyAgICAgICAgXToKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJycpKQorICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0
Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyKGUp
LmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInJykpCisgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWls
KCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKAorICAgICAgICAgICAgICAgIHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0x
LAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkKKworICAg
IGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIg
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNl
ID0gJy9hYm9ydF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2Uu
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2Vs
Zik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5fY2hlY2snIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAg
ICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgorICAgICAg
ICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hB
TkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnL29yaWdpbl9jaGVj
aycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1Yi9wbGFpbicgaW4gZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9v
dChzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExF
UlNfU1VCX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFO
RExFUlNfU1VCX0RJUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcvb3JpZ2luX2NoZWNr
JyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9zdWIvcGxhaW4nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9leGNlcHRp
b25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBk
ZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6CisgICAgICAgIGRpc3BhdGNo
LkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCisgICAgICAgIGRpc3BhdGNoLkRpc3Bh
dGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhk
aXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guRGlzcGF0Y2hlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EvYi9jJywgJ2EvYicpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJj
ZV9wYXRoX2FsaWFzKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihf
VEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcv
b3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBk
aXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvc3ViL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25vdC1leGlzdCcpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQ1ZDI5YzY3ZGRmMDdiM2YxMjMyNDU5NzdmOTVjZmUwMTQ4YzgzYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpAQCAt
MCwwICsxLDYzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitp
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3RpbmcKKwor
IyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xv
c2luZyBoYW5kc2hha2UKK19HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKKworX1NFUlZFUl9X
QVJNVVBfSU5fU0VDID0gMC4yCisKKworIyBUZXN0IGJvZHkgZnVuY3Rpb25zCitkZWYgX2VjaG9f
Y2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xp
ZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0
JykKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKKyAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5l
Y3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5
KGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2Fn
ZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShiJ2Jp
bmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoYidceDAwXHg4MFx4
ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUo
YidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKworICAgIGNsaWVudC5z
ZW5kX2Nsb3NlKCkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2dvb2RieWUoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rl
c3QnKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZShfR09PREJZRV9NRVNTQUdFKQorICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZShfR09PREJZRV9NRVNTQUdFKQorCisgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfY29kZV9hbmRfcmVhc29uKGNsaWVudCwgY29kZSwgcmVhc29uKToKKyAgICBjbGllbnQu
Y29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9jbG9zZShjb2RlLCByZWFzb24pCisgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGNsaWVudC5hc3Nl
cnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJv
Y2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRf
bWVzc2FnZSgndGVzdCcsIG1hc2s9RmFsc2UpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IsICcnKQorCisgICAg
Y2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworY2xhc3MgRW5kVG9FbmRUZXN0
QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVu
ZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCisgICAgc2VydmVyIGFz
IGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90
ZXN0aW5nCisgICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJl
Y3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKKyAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVy
IGEgVENQIGNvbm5lY3Rpb24uCisgICAgIiIiCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKKyAgICAgICAgb3MucHV0
ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBhdGgpKQorICAgICAg
ICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdt
b2RfcHl3ZWJzb2NrZXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc3RhbmRhbG9uZS5weScpCisgICAgICAgIHNlbGYuZG9jdW1lbnRfcm9vdCA9IG9z
LnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFtcGxlJykKKyAgICAgICAgcyA9IHNvY2tldC5z
b2NrZXQoKQorICAgICAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgKF8sIHNl
bGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBzLmNsb3NlKCkKKworICAg
ICAgICBzZWxmLl9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQor
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKKyAgICAgICAg
c2VsZi5fb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKKyAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKKworICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9wb3J0ID0gc2VsZi50ZXN0X3BvcnQKKworICAgICMgVE9ETyh0eW9zaGlubyk6IFVzZSB0ZWFy
RG93biB0byBraWxsIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX3J1bl9weXRob25fY29tbWFuZChz
ZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKKworICAgIGRlZiBfcnVuX3NlcnZlcihzZWxmKToK
KyAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kLCAn
LUgnLCAnbG9jYWxob3N0JywgJy1WJywgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAnLXAnLAor
ICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1QJywKKyAgICAgICAgICAgIHN0cihz
ZWxmLnRlc3RfcG9ydCksICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdAorICAgICAgICBdCisKKyAg
ICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9nZ2VyIGJ5IHRlc3Qg
cnVubmVyLgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAg
ICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICBp
ZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1sb2ctbGV2ZWwnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2luZy5nZXRMZXZlbE5h
bWUobG9nX2xldmVsKS5sb3dlcigpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3RkZXJyPXNlbGYuc2VydmVyX3N0ZGVycikKKworICAgIGRlZiBfY2xv
c2Vfc2VydmVyKHNlbGYsIHNlcnZlcik6CisgICAgICAgICIiIgorCisgICAgICAgIFRoaXMgbWV0
aG9kIG1pbWljcyBQb3Blbi5fX2V4aXRfXyB0byBncmFjZWZ1bGx5IGtpbGwgdGhlIHNlcnZlciBw
cm9jZXNzLgorICAgICAgICBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIG1haW50YWluIGNvbXB0YWli
aWxpdHkgYmV0d2VlbiBweXRob24gMiBhbmQgMywKKyAgICAgICAgc2luY2UgUG9wZW4gaW4gcHl0
aG9uIDIgZG9lcyBub3QgaGF2ZSBfX2V4aXRfXyBhdHRyaWJ1dGUuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHNlcnZlci5raWxsKCkKKworICAgICAgICBpZiBzZXJ2ZXIuc3Rkb3V0OgorICAgICAg
ICAgICAgc2VydmVyLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZlci5zdGRlcnI6Cisg
ICAgICAgICAgICBzZXJ2ZXIuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VydmVyLnN0ZGlu
OgorICAgICAgICAgICAgc2VydmVyLnN0ZGluLmNsb3NlKCkKKworICAgICAgICBzZXJ2ZXIud2Fp
dCgpCisKKworY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKKwor
ICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1bmN0aW9u
LCBvcHRpb25zKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2ljIHRvIHBv
bGwgdGhlIHNlcnZlciB1bnRpbCBpdAorICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAg
Y2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKyAgICAg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQor
CisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgc2VsZi5f
cnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25z
KQorCisgICAgZGVmIF9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qoc2VsZiwgb2ZmZXIsIHJl
c3BvbnNlX2NoZWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zICs9IG9mZmVyCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZSA9IHJlc3BvbnNlX2NoZWNr
ZXIKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50
KHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjbGll
bnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0X2Z1bmN0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKworICAgICAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorICAgICAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKyAgICBk
ZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rp
b24sIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFzb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAg
ICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29w
dGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihj
bGllbnQsIGNvZGUsIHJlYXNvbikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190
ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNy
ZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0
Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCisgICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90
ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2Vw
dGlvbicpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jbG9z
ZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2Vy
dmVyKHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAgICAgIHNlbGYuX3J1
bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5
KHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0
aF9iaW5hcnkpCisKKyAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKKyAgICAg
ICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKKwor
ICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVz
dChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQorCisgICAgZGVmIHRlc3RfZWNob19w
ZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcK
KyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEp
CisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKwor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFtZXMoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9k
YXRhKGInXHhmMlx4NDhceGNkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4XHhjZFx4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVyLmdldF9wYXJh
bWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsn
cGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3Rf
ZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5z
ZW5kX2RhdGEoYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4
XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAg
ICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAg
IGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAg
ICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJh
bWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVy
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0
ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Cisg
ICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAg
Y2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDAwXHgxMVx4
MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmlu
YXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRf
cmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4
MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFy
YW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
KyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3ByZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGIn
XHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxs
bywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwgcmVzcG9uc2VfY2hlY2tlciwK
KyAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVj
LgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2Vk
X2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5h
cnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJz
djE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tl
cihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Wygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsKKyAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcKKyAgICAgICAgICAg
ICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICAgICAgXSwgcmVzcG9uc2VfY2hlY2tl
ciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRl
X3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNw
b25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNl
bGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKKyAgICAgICAgICAg
IHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Bl
cm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgor
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRl
JykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAg
ICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAw
J10sCisgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVy
KHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2Fn
ZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qo
WydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAg
ICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAgc2VsZi5fcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQorCisg
ICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6CisgICAgICAgIHNl
bGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJworICAgICAgICBzZWxmLl9ydW5fY2xvc2Vf
d2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKKyAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCisKKyAgICBkZWYgdGVzdF9jbG9z
ZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2Vy
dmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJvciBzdGF0dXMKKyAgICAg
ICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNvbWUgcHJvdG9jb2wgZXJy
b3IuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAg
ICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBm
cmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRhdGlvbgorICAgICAg
ICAgICAgIyBmcmFtZS4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFy
eV9ieXRlcyhiJ1x4ODBceDgwJywgJycpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQorCisg
ICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6CisgICAgICAgICIi
IlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0
ZWQgb3BlcmF0aW9uCisgICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBk
YXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCisgICAgICAgIG5vdCBzdXBwb3J0ZWQg
YnkgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICMgVGV4
dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Zy
YW1lX29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4OTFceDgwJywgJycpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0
aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRl
c3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlkX2ZyYW1lKHNlbGYp
OgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAorICAgICAgICBkYXRhIHN0YXR1cyBjb2RlIHdoZW4g
dGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFpbmluZworICAgICAg
ICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgorICAgICAgICAg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZShiJ1x4ODAnLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5h
bF9lbmRwb2ludF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVy
IHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRwb2ludAorICAgICAgICBlcnJv
ciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJhdGlvbi4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJy
b3InCisKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAg
ICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFsaWQgYWJzb2x1dGUg
dXJpIGhhbmRsaW5nIGxpa2UKKyAgICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBp
bnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBvcnQKKyAgICAjIG51bWJlciku
CisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGFi
c29sdXRlIHVyaSByZXF1ZXN0LiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25z
CisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBv
cHRpb25zLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29w
dGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQorCisgICAgZGVmIHRlc3Rfb3Jp
Z2luX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdp
biBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAg
ICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAgICAgIyBTZXJ2ZXIg
c2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxsYmFjay4gVGhpcyB3YXJuaW5n
CisgICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxvd2luZyBwaXBlIGRpc3Bvc2Vz
IHdhcm5pbmcgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IHN1YnByb2Nl
c3MuUElQRQorICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQw
MykKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6CisgICAgICAgICIiIlRlc3Rz
IGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9IDk5CisgICAgICAg
IHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAwKQorCisKK2NsYXNzIEVu
ZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgorICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQorCisgICAgZGVm
IF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBlY3RlZCwgc3Rkb3V0
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmRh
dGEpOgorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAg
ICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAgICAgaWYgc3RkZXJy
ZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3Rl
ZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKKworICAgIGRlZiB0ZXN0X2V4YW1wbGVf
ZWNob19jbGllbnQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50
LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgorCisgICAgICAgIHNlcnZl
ciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNs
ZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50X2NvbW1hbmQg
PSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZWNob19jbGllbnQucHknKQorCisgICAgICAgICAg
ICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMuCisgICAgICAgICAg
ICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQgY2xvc2VcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdSZWN2IGFja1xuJykKKworICAgICAgICAgICAgYXJncyA9IFtj
bGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpXQorICAg
ICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xp
ZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19j
bGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQorCisg
ICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5
bG9hZCBsZW5ndGggaXMgdXNlZC4KKyAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBh
eWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCisgICAgICAgICAgICAj
IGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkg
c2V0LgorICAgICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0CisgICAgICAgICAgICBh
cmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAnLAorICAgICAgICAg
ICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy1tJywgYmlnX21lc3NhZ2UK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29t
bWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgc3Rkb3V0ZGF0
YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleHBlY3Rl
ZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5SZWN2IGFja1xuJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19tZXNzYWdlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGV4cGVjdGVkLCBzdGRv
dXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkZXJyZGF0YSkKKworICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxh
dGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICBjbGll
bnRfY29tbWFuZCwgJy1wJywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCksICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGll
bnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4
dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWExMTE4ODhiZTkwMDViZDdiNjg0MzY2YWViZmQxZDkxNGY0YTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkK
QEAgLTAsMCArMSwxOTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6bGliCisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZXh0ZW5zaW9ucworCisKK2NsYXNzIEV4dGVuc2lv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBub24tY2xh
c3MgbWV0aG9kcyBpbiBleHRlbnNpb25zLnB5IiIiCisgICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93
X2JpdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVu
c2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnIDggJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzkuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
LTgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
MTYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMDAwMDAwJykK
KworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvclBhcnNpbmdUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcworICAgIGdpdmVuIGV4
dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRlZiB0ZXN0X3JlZ2lz
dHJ5KHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25f
cHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxm
KToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoemxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9y
ZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
cm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICBk
ZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKKyAgICAgICAgcGFyYW1l
dGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAg
ICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAn
MTAnKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVy
bWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQorCisg
ICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX21h
eF93aW5kb3dfYml0cycsICcwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6
CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAg
cGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRl
JykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgcmVzcG9uc2Ug
PSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRl
eHRfdGFrZW92ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92
ZXJfd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2JhcicpCisgICAgICAg
IHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25f
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignZm9vJywgJ2JhcicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKworY2xh
c3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGluZ1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCisgICAgYSByZXNwb25zZSBiYXNl
ZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCisgICAgIiIiCisgICAgZGVmIHRlc3Rf
cmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkK
KyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93
aW5kb3dfYml0cygxMCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZs
YXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVu
dF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4
X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2VsZik6CisgICAgICAgIHBy
b2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Io
CisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxh
dGUnKSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQor
CisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQor
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X3Jlc3Bv
bnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigK
KyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX2ZhbHNlX2Zv
cl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAgICAg
cHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihGYWxzZSkKKworICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygp
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQor
CisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9oYW5kc2hha2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwZTIyNzhkZmU2NTAxOWQ3NjU5NDg5YjUzOGZjYzg1YWQ1N2Q0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5z
aW9uUGFyYW1ldGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2Vf
ZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKKworCitjbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29s
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVf
c3VicHJvdG9jb2wgbWV0aG9kLiIiIgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29s
KHNlbGYpOgorICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgorICAgICAgICB2YWxpZGF0ZV9zdWJw
cm90b2NvbCgnc2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScp
CisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKQorCisg
ICAgICAgICMgU2hvdWxkIGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3RvY29sLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb24s
CisgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAgICAgICMgIkphcGFu
IiBpbiBKYXBhbmVzZQorICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQorCisKK19URVNUX1RP
S0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCisgICAg
KCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFy
PWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdmb287IGJhcj1iYXo7
IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6Jyld
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXInLCBbKCdjZHInLCBOb25l
KV0pXSksCisgICAgKCdhLCBiLCBjLCBkJywgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBb
XSksICgnZCcsIFtdKV0pLAorXQorCitfVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisg
ICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCisgICAgKCdmb287
IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAorICAgICgnZm9v
OyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKKyAgICAoJ2Zv
bzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSks
CisgICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicp
XSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAg
ICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAorICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2Zv
bycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBb
KCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygn
Zm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2Zvbycs
IFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCitdCisKK19URVNUX1JFRFVOREFOVF9R
VU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiIn
LCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCitdCisKKworY2xhc3MgRXh0ZW5zaW9u
c1BhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAgIiIiVmVy
aWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZl
IHRoZQorICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4
cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgorICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0
ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQorICAgICAgICBwYXJhbWV0
ZXIgZGljdGlvbmFyeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIGZvciBleHBlY3Rl
ZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAgICAgICAg
ICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYp
OgorICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tF
Tl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlz
dChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9x
dW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRp
b24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgorICAgICAgICBmb3IgKGZvcm1h
dHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5U
X1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIChmb3JtYXR0ZWRf
c3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9U
RURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xp
c3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2Vf
YmFkX2RhdGEoc2VsZik6CisgICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQSA9IFsKKyAg
ICAgICAgICAgICgnZm9vOyA7ICcpLAorICAgICAgICAgICAgKCdmb287IGEgYScpLAorICAgICAg
ICAgICAgKCdmb28gZm9vJyksCisgICAgICAgICAgICAoJywsLCcpLAorICAgICAgICAgICAgKCdm
b287IGJhcj0nKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwKKyAgICAgICAgICAg
ICgnZm9vOyBiYXI9ImFcciInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9IlxcXHhmZiInKSwK
KyAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCisgICAgICAgIF0KKworICAgICAgICBmb3Ig
Zm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRl
bnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX3N0cmluZykK
KworCitjbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRf
c3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVm
aW5pdGlvbnM6CisgICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlv
bgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lv
bnMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigp
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hh
bmRzaGFrZV9oeWJpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ODQxZjFmNzlmYTg5ZjAzZjBlMDIxOWUwNmIy
MTNjMzRmNWYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkucHkKQEAgLTAsMCArMSw0MjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4i
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0
dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Lmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKKworZnJvbSB0ZXN0IGltcG9ydCBtb2NrCisKKworY2xh
c3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBob2xkaW5n
IGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZvcgorICAg
IHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgorICAgICAgICBzZWxmLm1l
dGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLmhlYWRl
cnMgPSBoZWFkZXJzCisKKworZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgorICAgIHJl
dHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKKyAgICAgICAgJ0dFVCcsICcvZGVtbycsIHsKKyAgICAg
ICAgICAgICdIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnVXBncmFk
ZSc6ICd3ZWJzb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCisg
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09
JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAorICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIH0pCisKKworZGVmIF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oYicn
KQorICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmLnVyaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVmLmhlYWRlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3Jl
YXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6CisgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgIHJldHVybiBoYW5kc2hha2VyCisKKwor
Y2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRp
c3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnBy
b3RvY29sCisgICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBn
aXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKKyAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMg
bmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJvdG9jb2wuCisgICAg
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlPU5vbmUpOgor
ICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0g
ZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2Nv
bnRleHQpOgorICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6CisgICAgICAgICAgICBjb25uX2Nv
bnRleHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVkX3Byb3RvY29sc1sK
KyAgICAgICAgICAgICAgICBzZWxmLmluZGV4XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y29ubl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVlCisKKyAgICBkZWYg
dHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworY2xh
c3MgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitj
bGFzcyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRpc3BhdGNoZXIgZm9y
IHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9uIGluCisgICAgZG9f
ZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBkZWYg
ZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVl
c3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAg
ICAgcGFzcworCisKK2NsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6CisgICAg
IiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCisg
ICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0
IHRoZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwg
Y29ubl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4g
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShz
ZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworX0VYUEVDVEVEX1JFU1BPTlNF
ID0gKAorICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIGIn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwor
ICAgIGInU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1c
clxuXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2Nv
bC0wNiBhbmQgbGF0ZXIKKyAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgorICAgICIiIgorICAgIGRl
ZiB0ZXN0X2RvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSkKKyAgICAgICAgZGlzcGF0Y2hlciA9IG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKQorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxl
ZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
ZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCisKKyAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgICMgQWRkIGhl
YWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScKKyAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCisKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVf
aGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9j
YXBpdGFsaXplZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWyd1cGdyYWRlJ10g
PSAnV0VCU09DS0VUJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VQR1JBREUnCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BP
TlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAn
CisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVE
X1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0
J3Mgbm90IGNhdWdodCBieQorICAgICAgICAjIGRvX2hhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbChzZWxmKToK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hhdCwg
c3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIFN1YnByb3RvY29s
Q2hvb3NpbmdEaXNwYXRjaGVyKDApKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgp
CisKKyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAgICBiJ0hUVFAvMS4x
IDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGInVXBncmFkZTogd2Vi
c29ja2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAg
ICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5c
clxuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm90
b2NvbENob29zaW5nRGlzcGF0Y2hlcigtMSwgJ2Zvb2JhcicpKQorICAgICAgICAjIE5vIHJlcXVl
c3QgaGFzIGJlZW4gbWFkZSBidXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5kc2hha2VFeGNlcHRp
b24KKyAgICAgICAgIyBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3NlbGVjdGlvbihzZWxm
KToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hh
dCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgIyB3c19wcm90b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24gbXVz
dCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXInKQorCisgICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0g
KAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisg
ICAgICAgICAgICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgICAgICAgICBiJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJworICAgICAgICAgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9uczogJworICAgICAgICAgICAgYidwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKKyAgICAgICAgICAgIGInXHJcbicpCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9O
U0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAgICAgICAgZXh0ZW5zaW9u
ID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sIGV4dGVuc2lvbi5uYW1lKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBleHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLCByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZSwg
LCAnCisgICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAg
IFxcXHJmICAiOyBwdj1ucnQnKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKKyAgICAg
ICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQorICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9uc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtub3duJywg
c2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydlJywg
J21hJywgJ3B2J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kX2V4dGVuc2lvbi5n
ZXRfcGFyYW1ldGVyX25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBz
ZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J21hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24u
Z2V0X3BhcmFtZXRlcl92YWx1ZSgncHYnKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlW
YWx1ZSddID0gJycKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1
ZScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAg
ICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCisgICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVl
JywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQorCisgICAgZGVmIHRlc3RfYWJv
cnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbi4g
Q2hlY2sgdGhhdCBpdCdzCisgICAgICAgICMgbm90IGNhdWdodCBieSBkb19oYW5kc2hha2UuCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNlbGYpOgorICAg
ICAgICBiYWRfY2FzZXMgPSBbCisgICAgICAgICAgICAoJ0hUVFAgcmVxdWVzdCcsCisgICAgICAg
ICAgICAgUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgICdHRVQnLCAnL2RlbW8n
LCB7CisgICAgICAgICAgICAgICAgICAgICAnSG9zdCc6CisgICAgICAgICAgICAgICAgICAgICAn
d3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgorICAg
ICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBP
UyBYIDEwLjU7JworICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vj
a28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKKyAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBH
VEJBJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOgorICAgICAgICAgICAgICAgICAg
ICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45
LCcKKyAgICAgICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAorICAgICAgICAgICAgICAgICAg
ICAgJ0FjY2VwdC1MYW5ndWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAnZW4tdXMsZW47cT0w
LjUnLAorICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6CisgICAgICAgICAg
ICAgICAgICAgICAnZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQt
Q2hhcnNldCc6CisgICAgICAgICAgICAgICAgICAgICAnSVNPLTg4NTktMSx1dGYtODtxPTAuNywq
O3E9MC43JywKKyAgICAgICAgICAgICAgICAgICAgICdLZWVwLUFsaXZlJzoKKyAgICAgICAgICAg
ICAgICAgICAgICczMDAnLAorICAgICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOgorICAg
ICAgICAgICAgICAgICAgICAgJ2tlZXAtYWxpdmUnCisgICAgICAgICAgICAgICAgIH0pLCBOb25l
LCBUcnVlKQorICAgICAgICBdCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9TVCcKKyAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KKyAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKwor
ICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAg
IGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KKyAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCisgICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQorICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRy
dWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rvd25ncmFkZScK
KyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCByZXF1ZXN0X2Rl
ZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tl
dC1LZXknXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0
LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1
alpRPT1nYXJiYWdlJykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScKKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkg
KGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciByaWdodCBiZWZv
cmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KKyAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0n
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5IChwYWRkaW5nIGJpdHMgYXJlIG5vdCB6ZXJvKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LUtleSddID0gKAorICAgICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PSxkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT0nKQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3Jvbmcg
U2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFk
ZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAor
ICAgICAgICAgICAgKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVy
c2lvbiddID0gJzMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBGYWxzZSkpCisK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICcxMywgMTMn
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24g
KG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2Rl
ZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICdpbGxlZ2FsXHgwOXByb3RvY29sJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAorICAgICAgICAgICAgKCdJbGxlZ2FsIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0
X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnXSA9ICcnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkK
KworICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywK
KyAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgor
ICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3du
IGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCisgICAgICAgICAgICBleGNlcHQgSGFuZHNo
YWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVj
dF9oYW5kc2hha2VfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RfaGFu
ZHNoYWtlX2V4Y2VwdGlvbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMDFlZjI4Mzkx
M2UzZmM4Nzc1YjNiMjczMTFmNjE5NWM1N2JlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0wLDAgKzEsOTMgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3Ig
aHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworCitjbGFzcyBVbml0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgaHR0cF9oZWFkZXJfdXRpbCBt
b2R1bGUuIiIiCisgICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNlbGYpOgorICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCcvd3Mv
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1dGVfdXJpKHNlbGYp
OgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAorICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwMDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3MvdGVzdCcs
IHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbS93cy90ZXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzczovL2V4YW1wbGUuY29tLycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0NDMsIHBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKKwor
ICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJp
KAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4
MDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCisKKyAg
ICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKKyAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCBy
ZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8v
bG9jYWxob3N0OklOVkFMSURfUE9SVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
cmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDotMS93cycpCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCByZXNvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgw
LCBwb3J0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzJywgcmVzb3VyY2UpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyODhjNTEwYjg5YmIyODkzMWRmZjlhNzc5MTgzYTQ5OTE3
NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIi
CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRl
c3QKK2ltcG9ydCBzaXgKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGgg
dG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCisg
ICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xp
c3QpOgorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKKyAgICAgICAgICAg
IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3Jp
emluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVj
dGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiBjaGVja193
aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3Qp
OgorICAgICAgICByZWFkX2xpc3QgPSBbXQorICAgICAgICByZWFkX2xpbmUgPSAnJworICAgICAg
ICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGlu
ZShyZWFkX3NpemUpCisgICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKKyAgICAgICAg
ICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6CisgICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9
ICcnOgorICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKKyAgICAg
ICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgorICAgICAgICAgICAgICAg
IHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9
ICcnCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRf
bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVu
KGFjdHVhbF9saXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlz
dCksIGxlbihyZWFkX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBp
biB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgcmVhZCkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Cisg
ICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAor
ICAgICAgICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKKyAgICAg
ICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJywg
J1dlbGNvbWUnXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGltaXRfbWVt
b3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5n
ZmlsZS5NZW1vcml6aW5nRmlsZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldv
cmxkXG5XZWxjb21lJyksIDIpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAz
LCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9s
aW5lc19lbXB0eV9maWxlKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShzaXguU3RyaW5nSU8oJycpKQorICAgICAgICBzZWxmLmNo
ZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXpl
ZF9saW5lc193aXRoX3NpemUoc2VsZik6CisgICAgICAgIGZvciBzaXplIGluIHJhbmdlKDEsIDEw
KToKKyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXpp
bmdGaWxlKAorICAgICAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldvcmxkXG5XZWxj
b21lJykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1vcml6aW5nX2ZpbGUs
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hlbGxvXG4nLCAnV29y
bGRcbicsICdXZWxjb21lJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3Mzg3M2RkZTk3ZGYwM2YyMGRmNWFjOTcyMmY2YWQ2NWRk
MDJlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9j
ay5weQpAQCAtMCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0
ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0
IGltcG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKGInQUJDXHJcbkRFRkdc
clxuXHJcbkhJSksnKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKwor
ICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNc
clxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VG
R1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YicnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorCisgICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxp
bmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuRCcsIHNlbGYuX2Nv
bm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuSElKSycsIHNl
bGYuX2Nvbm4ucmVhZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nv
bm4ucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9jb25uLndyaXRlKGInSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29ubi53cml0ZShiJ1dv
cmxkXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidIZWxsb1xyXG5Xb3JsZFxyXG4n
LCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQorCisKK2NsYXNzIE1vY2tCbG9ja2luZ0Nvbm5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQmxvY2tp
bmdDb25uIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgICIiIlRl
c3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRfYnl0ZXMgbWV0aG9k
IGNhbiBiZQorICAgICAgICByZWFkIGZyb20gaXQuCisgICAgICAgICIiIgorICAgICAgICBjbGFz
cyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAgIiIiQSB0ZXN0IGNs
YXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQorICAgICAg
ICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRv
IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHF1ZXVlLgorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgorICAgICAgICAgICAgICAg
IHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWV1ZSA9IHF1ZXVlCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNvbm4KKyAgICAgICAg
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnQo
KQorCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEpCisKKyAgICAgICAgY29ubiA9
IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCisgICAgICAgIHF1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVl
LlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHF1ZXVlLmVtcHR5KCkpCisgICAgICAgIGNvbm4ucHV0X2J5dGVz
KGInRm9vIGJhclxyXG4nKQorICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ0ZvbyBiYXJcclxuJywgcmVhZCkKKworCitjbGFzcyBNb2NrVGFibGVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrVGFibGUg
Y2xhc3MuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21f
bGlzdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdLZXknLCAnVmFs
dWUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2Nr
Lk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwgKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgor
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUn
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tleScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZVsnS0VZJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9tc2d1dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2YyMWI4ZDI5NzY2ODc3MGNiOTFjNTAx
YzJiMmZjODI1OGI5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDkxNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KK2lt
cG9ydCBhcnJheQoraW1wb3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0
IHN0cnVjdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitpbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
KworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSB0
ZXN0IGltcG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNpeC5tb3Zl
cyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKKworIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCitfTUFTS0lOR19OT05DRSA9IGInQUJDRCcKKworCitkZWYgX21hc2tfaHliaShm
cmFtZSk6CisgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAg
IEV4Y2VwdGlvbignbWFza2luZyBkb2VzIG5vdCBhY2NlcHQgVGV4dHMnKQorCisgICAgZnJhbWVf
a2V5ID0gbGlzdChpdGVyYnl0ZXMoX01BU0tJTkdfTk9OQ0UpKQorICAgIGZyYW1lX2tleV9sZW4g
PSBsZW4oZnJhbWVfa2V5KQorICAgIHJlc3VsdCA9IGJ5dGVhcnJheShmcmFtZSkKKyAgICBjb3Vu
dCA9IDAKKworICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXN1bHQpKToKKyAgICAgICAgcmVzdWx0
W2ldIF49IGZyYW1lX2tleVtjb3VudF0KKyAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZy
YW1lX2tleV9sZW4KKworICAgIHJldHVybiBfTUFTS0lOR19OT05DRSArIGJ5dGVzKHJlc3VsdCkK
KworCitkZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVlc3Qs
IHN0cmVhbV9vcHRpb25zKToKKyAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKKyAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisKKworZGVmIF9jcmVh
dGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1Ob25lKToKKyAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5N
b2NrQ29ubihyZWFkX2RhdGEpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05f
SFlCSV9MQVRFU1QKKyAgICByZXEud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQorCisgICAg
cHJvY2Vzc29yID0gTm9uZQorICAgIGlmIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0IGlzIG5v
dCBOb25lOgorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQorCisgICAg
c3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICBpZiBwcm9jZXNzb3IgaXMgbm90
IE5vbmU6CisgICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCBy
ZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJl
YW1fb3B0aW9ucykKKworICAgIHJldHVybiByZXEKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0KCpm
cmFtZXMpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBm
cmFtZXMuCisKKyAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3Qu
Y29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAorICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICAgIiIiCisKKyAgICByZWFkX2RhdGEgPSBbXQorICAg
IGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6CisgICAgICAgIHJlYWRfZGF0YS5hcHBlbmQo
aGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKKworICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKGInJy5qb2luKHJlYWRfZGF0YSkpCisKKworZGVmIF9jcmVhdGVfYmxvY2tp
bmdfcmVxdWVzdCgpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QuCisKKyAgICBEYXRhIHdy
aXR0ZW4gdG8gYSBNb2NrUmVxdWVzdCBjYW4gYmUgcmVhZCBvdXQgYnkgY2FsbGluZworICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKS4KKyAgICAiIiIKKworICAgIHJlcSA9IG1v
Y2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKKyAgICBy
ZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisgICAgc3RyZWFtX29w
dGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtKHJlcSwg
c3RyZWFtX29wdGlvbnMpCisgICAgcmV0dXJuIHJlcQorCisKK2NsYXNzIEJhc2ljTWVzc2FnZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0uIiIi
CisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hl
bGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEy
NQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4ODFceDdkJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0
X3NlbmRfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjYK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAg
ICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXls
b2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2VceGZmXHhmZicgKyBwYXls
b2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2xhcmdlX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBi
J1x4ODFceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsKKyAgICAgICAgICAg
IHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsIHUnXHU2NWU1JykKKyAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5
NyxhNSBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDNceGU2XHg5
N1x4YTUnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICchJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDA1
SGVsbG9ceDAwXHgwMSBceDAwXHgwNVdvcmxkXHg4MFx4MDEhJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVz
dF9zZW5kX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJtaW5hdGlvbihzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdIZWxsbyBXb3JsZCEnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4
MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIn
XHg4MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4ODFceGZkJywgcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lZGl1bV9tZXNz
YWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHgwMFx4N2UnLCBwYXlsb2FkKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9IGInYScgKiAo
MSA8PCAxNikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAg
IChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5nX21pbmltYWxfbnVt
YmVyX29mX2J5dGVzKHNlbGYpOgorICAgICAgICAjIExvZyB3YXJuaW5nIG9uIHJlY2VpdmluZyBi
YWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQorICAgICAgICAjIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgorCisgICAgICAgIHBh
eWxvYWQgPSBiJ2EnCisgICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0
IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNv
ZGUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ODMn
LCBiJ1x4ZTZceDljXHhhYycpKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDlj
LGFjIGluIFVURi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBp
bnZhbGlkIGFzIFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4
ODFceDgyJywgYidceDgwXHg4MScpKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91
bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFVURjhFeGNlcHRpb24sIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVu
dHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODUn
LCBiJ0hlbGxvJyksIChiJ1x4MDBceDgxJywgYicgJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGInXHgwMFx4ODUnLCBiJ1dvcmxkJyksIChiJ1x4ODBceDgxJywgYichJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfdW5p
Y29kZShzZWxmKToKKyAgICAgICAgIyBVVEYtOCBlbmNvZGVzIFUrNmYyMiBpbnRvIGU2YmNhMiBh
bmQgVSs1YjU3IGludG8gZTVhZDk3LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4MDFceDgyJywgYidceGU2XHhiYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiJ1x4MDBceDgyJywgYidceGEyXHhlNScpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiJ1x4ODBceDgyJywgYidceGFkXHg5NycpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHUnXHU2ZjIyXHU1YjU3JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJt
aW5hdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAx
XHg4YycsIGInSGVsbG8gV29ybGQhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGInXHg4MFx4ODAnLCBiJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYidceDAxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3RhcnRl
ZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAwXHg4NScs
IGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJh
bWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfZW5kX2J1
dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDgwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNz
YWdlX2Rpc2NhcmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisg
ICAgICAgICAgICAoYidceDhmXHg4NicsIGInSUdOT1JFJyksIChiJ1x4ODFceDg1JywgYidIZWxs
bycpLAorICAgICAgICAgICAgKGInXHg4Zlx4ODknLCBiJ0RJU1JFR0FSRCcpLCAoYidceDgxXHg4
NicsIGInV29ybGQhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBw
b3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceDhhJywgc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZWFzb24gPSAnYScgKiAxMjMKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceGZk
Jywgc3RydWN0LnBhY2soJyFIJywgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSkgKworICAg
ICAgICAgICAgIHJlYXNvbi5lbmNvZGUoJ1VURi04JykpKQorICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX3Jl
YXNvbiwgcmVhc29uKQorCisgICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV90b29fbG9uZyhzZWxmKToK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwgcmVxdWVzdC53c19zdHJlYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICdhJyAq
IDEyNCkKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfaW5jb25zaXN0ZW50X2NvZGVfYW5kX3Jl
YXNvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
ICMgcmVhc29uIHBhcmFtZXRlciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb2RlIGlzIE5v
bmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwg
cmVxdWVzdC53c19zdHJlYW0sIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhJykK
KworICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbyBX
b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MGNIZWxsbyBXb3JsZCEn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ2EnICogMTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4N2QnICsg
YidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfdG9vX2xvbmcoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwgbXNndXRpbC5zZW5kX3Bpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsICdhJyAqIDEyNikKKworICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfcGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEg
cGluZyBjb250cm9sIGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNz
YWdlKToKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgICMgU3Ry
ZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3aXRob3V0IGFueSBh
Y3Rpb24KKyAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDA1SGVsbG8nLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hh
bmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1
ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZkJywgYidhJyAqIDEy
NSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dv
cmxkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDhhXHg3ZCcg
KyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDBc
eDdlJywgYidhJyAqIDEyNikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxm
KToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgor
ICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAgICAgICAgIHJlcXVl
c3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGIn
XHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25fcG9uZ19oYW5kbGVy
ID0gaGFuZGxlcgorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8nKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBi
dXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAg
ICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29saWNpdGVkX3Bvbmco
c2VsZik6CisgICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2VkIGZyb20gSHlCaSAw
Ny4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVs
bG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGIn
V29ybGQnKSkKKyAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKworICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcp
KQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSnVtYm8nKQorICAgICAgICAj
IEJvZHkgbWlzbWF0Y2guCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX2Nhbm5vdF9iZV9mcmFnbWVudGVkKHNlbGYpOgorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDlceDg1JywgYidIZWxsbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDFceDAwJywgYidhJyAq
IDI1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwgcmVxdWVzdCkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIi
IgorICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVS
TUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29y
ID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQorICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25l
LCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
cicpKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAg
ZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQor
ICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
KDgpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1
ZSkKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnOCcsIHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2NsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBy
ZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcicp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4YzElYycgJSBs
ZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxs
bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X21lc3NhZ2Uoc2VsZik6
CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNvbXByZXNzZWQgY29y
cmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAg
ICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKworICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICAjIFBheWxvYWQgaW4g
YmluYXJ5OiAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAgICAgICMgLSAxIGJp
dCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNz
aW9uKQorICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChiJ1x4YzFceDAxXHgwMCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV93aXRoX251bGxfY2hhcmFjdGVyKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0IHRoYXQgYSBzaW1wbGUgcGF5bG9hZCAob25lIG51bGwpIGlzIGZyYW1l
ZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
KQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAg
ICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorCisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKKworICAgICAgICAjIFBh
eWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAwMAorICAgICAg
ICAjIEZyb20gTFNCLAorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAj
IC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCisgICAgICAg
ICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMgdGhlIGNvZGUg
Zm9yIHRoZSBsaXRlcmFsCisgICAgICAgICMgICBhbHBoYWJldCAweDAwKQorICAgICAgICAjIC0g
NyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0
aGUKKyAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5B
TCAoMCkKKyAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCisgICAg
ICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhj
MVx4MDNceDYyXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdHdvX21lc3NhZ2Vz
KHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGV4
cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisKKyAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGInV29ybGQnKQorICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCisgICAgICAg
IGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4
dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywg
ZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5
ZScsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dv
cmxkJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4
NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgPSBjb21wcmVzcy5jb21wcmVz
cyhiJ0dvb2RieWUnKQorICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkICs9IGInXHgwMCVjJyAlIGxl
bihjb21wcmVzc2VkX2dvb2RieWUpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZ29v
ZGJ5ZQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoYidXb3Js
ZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzot
NF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQp
CisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2Vs
Zik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAg
ICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4
cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVj
dGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXBy
ZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0g
Y29tcHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxl
bihjb21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5
CisgICAgICAgIHByaW50KCclcicgJSBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKKyAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICcnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBl
Y3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
cy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
c2VkX2VtcHR5WzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXBy
ZXNzZWRfZW1wdHkpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhz
ZWxmKToKKyAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon
CisgICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21t
b25fcGFydAorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
CisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcp
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAg
ICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKKworICAgICAgICBl
eHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCisgICAgICAgIGV4cGVjdGVkX3dlYnNv
Y2tldF9wYXlsb2FkX3NpemUgPSA5MQorCisgICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplICsgZXhwZWN0ZWRfd2Vic29j
a2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIGxlbihhY3R1YWxfZnJhbWUpKQorICAgICAg
ICBhY3R1YWxfaGVhZGVyID0gYWN0dWFsX2ZyYW1lWzA6ZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRl
cl9zaXplXQorICAgICAgICBhY3R1YWxfcGF5bG9hZCA9IGFjdHVhbF9mcmFtZVtleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemU6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGMx
JWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3R1YWxfaGVhZGVyKQorICAgICAgICBkZWNvbXByZXNzID0gemxpYi5kZWNvbXBy
ZXNzb2JqKC04KQorICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSA9IGRlY29tcHJlc3MuZGVj
b21wcmVzcyhhY3R1YWxfcGF5bG9hZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIGRlY29t
cHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3NhZ2UuZGVjb2RlKCdVVEYtOCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNzLnVudXNlZF9kYXRh
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVzcy51bmNvbnN1bWVk
X3RhaWwpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRleHRfdGFrZW92ZXJf
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
CisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPVRydWUpCisKKyAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFY
X1dCSVRTKQorCisgICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxs
bycpCisgICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihmaXJzdF9oZWxsbykKKyAg
ICAgICAgZXhwZWN0ZWQgKz0gZmlyc3RfaGVsbG8KKyAgICAgICAgc2Vjb25kX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25k
X2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKHNlY29uZF9o
ZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgorICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVf
cmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQorICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLnNldF9iZmluYWwoVHJ1ZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBlbmQ9VHJ1ZSkKKworICAgICAgICBleHBlY3RlZCA9
IGInJworCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzc2VkX2hlbGxvICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAgICAgZXhwZWN0ZWQg
Kz0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIHN0cnVjdC5wYWNrKCchQicsIDApCisgICAg
ICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykK
KworICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycp
CisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
KyAgICAgICAgZGF0YSA9IGInXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgw
KQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKKworICAgICAg
ICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRo
YXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlz
CisgICAgICAgIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFu
ZG9tLnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisgICAgICAgICAgICBb
c3RydWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4gcmFuZ2Uo
MTAwMCldKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3MuY29tcHJlc3MocGF5bG9hZCkKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2Vk
X3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorCisgICAgICAgICMgRnJhZ21lbnQg
dGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgorICAgICAgICBieXRl
c19jaHVua2VkID0gMAorICAgICAgICBkYXRhID0gYicnCisgICAgICAgIGZyYW1lX2NvdW50ID0g
MAorCisgICAgICAgIGNodW5rX3NpemVzID0gW10KKworICAgICAgICB3aGlsZSBieXRlc19jaHVu
a2VkIDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0
aGF0CisgICAgICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxl
c3MgdGhhbiAxMjUgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBs
ZW5ndGggaGVhZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KKyAgICAgICAgICAgICMgLSBhdCBs
ZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICBjaHVua19zaXplID0gcmFu
ZG9tLnJhbmRpbnQoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICBtaW4oMTI1
LAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSAvLyAxMCwKKyAg
ICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXplKQorICAgICAgICAg
ICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2Vk
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemVdCisg
ICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAgICAgICAgICAgZmly
c3Rfb2N0ZXQgPSAweDAwCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0MgorICAgICAgICAgICAgaWYg
Ynl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToKKyAgICAgICAgICAgICAg
ICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAorCisgICAgICAgICAgICBkYXRhICs9
IGInJWMlYycgJSAoZmlyc3Rfb2N0ZXQsIGNodW5rX3NpemUgfCAweDgwKQorICAgICAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNodW5rKQorCisgICAgICAgICAgICBmcmFtZV9jb3VudCArPSAx
CisKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKworICAgICAgICAjIENs
b3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2
ZV90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAgICBkYXRh
ID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGIn
SGVsbG9XZWJTb2NrZXQnKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCisgICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRf
aGVsbG8pIC8vIDIKKyAgICAgICAgZGF0YSArPSBiJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24g
fCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3Bs
aXRfcG9zaXRpb25dKQorCisgICAgICAgIGRhdGEgKz0gYidceDgwJWMnICUgKChsZW4oY29tcHJl
c3NlZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQorICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQorCisgICAgICAgIGNv
bXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1B
WF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3Mo
YidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dv
cmxkWzotNF0KKyAgICAgICAgZGF0YSArPSBiJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29y
bGQpIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQp
CisKKyAgICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsg
X21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdl
X2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlw
ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5n
IGxvdHMgb2YgREVGTEFURSBibG9ja3Mgd2l0aAorICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUg
aXMgY29ycmVjdGx5IHJlY2VpdmVkLgorICAgICAgICAiIiIKKworICAgICAgICByYW5kb20uc2Vl
ZChhPTApCisgICAgICAgIHBheWxvYWQgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtzdHJ1Y3Qu
cGFjaygnIUInLCByYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAwKV0p
CisKKyAgICAgICAgY29tcHJlc3MgPSBOb25lCisKKyAgICAgICAgIyBGcmFnbWVudCB0aGUgY29t
cHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCisgICAgICAgIGJ5dGVzX2NodW5r
ZWQgPSAwCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGInJworCisgICAgICAgIGNodW5r
X3NpemVzID0gW10KKyAgICAgICAgbWV0aG9kcyA9IFtdCisgICAgICAgIHN5bmNfdXNlZCA9IEZh
bHNlCisgICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKKworICAgICAgICB3aGlsZSBieXRlc19j
aHVua2VkIDwgbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYXQgbGVhc3Qg
MTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5y
YW5kaW50KDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKDEw
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHBheWxv
YWQpIC0gYnl0ZXNfY2h1bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1
bmtfc2l6ZSkKKyAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5dGVz
X2NodW5rZWQgKyBjaHVua19zaXplXQorCisgICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNo
dW5rX3NpemUKKworICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVG
TEFURUQsIC16bGliLk1BWF9XQklUUykKKworICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9
PSBsZW4ocGF5bG9hZCk6CisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5kb20ucmFuZGludCgwLCAxKQorICAg
ICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBt
ZXRob2QgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgICAgICAg
ICAgICAgIHN5bmNfdXNlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmsp
CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfRklOSVNIKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyA9IE5vbmUKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVlCisKKyAgICAgICAgcHJpbnQoIkNo
dW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxl
bihjaHVua19zaXplcykgPiAxMCkKKyAgICAgICAgcHJpbnQoIk1ldGhvZHM6ICVyIiAlIG1ldGhv
ZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeW5jX3VzZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmaW5pc2hfdXNlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoMTI1IDwgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY29tcHJl
c3NlZF9wYXlsb2FkKSA8IDY1NTM2KQorICAgICAgICBkYXRhID0gYidceGMyXHhmZScgKyBzdHJ1
Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAgICAgZGF0YSArPSBf
bWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKKworICAgICAgICAjIENsb3NlIGZyYW1lCisg
ICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
KyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVz
c2FnZVJlY2VpdmVyLiIiIgorICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVjZWl2ZXIgPSBtc2d1
dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKKworICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsgX21hc2tfaHliaShiJ0hlbGxvIScpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCisKKyAg
ICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IHNp
eC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1l
c3NhZ2UpOgorICAgICAgICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQorCisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICByZWNlaXZl
ciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQor
CisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgxXHg4NicgKyBfbWFz
a19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9u
bWVzc2FnZV9xdWV1ZS5nZXQoKSkKKworCitjbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdl
U2VuZGVyLiIiIgorICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3Nh
Z2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5kZXIuc2VuZCgnV29ybGQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgorICAgICAg
ICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5k
ZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBi
ZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNl
cGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1
ZSgpCisKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAgIHNlbmRfcXVldWUu
cHV0KGJ5dGVzKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3Qo
KQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQorCisgICAgICAgIHNl
bmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbmRlci5z
ZW5kX25vd2FpdCgnSGVsbG8nKQorICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCBzZW5kX3F1ZXVlLmdl
dCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHNlbmRfcXVl
dWUuZ2V0KCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVh
bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTM4OTlkMjA1MzNlYjRjZjBhOTgxNmM4YjNiMmJjOGM1MDU0OGJm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVhbS5w
eQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNf
cGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUu
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KKworCitjbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0
X2NyZWF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgICMgbW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFy
ZSBhbGwgdHJ1ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24u
T1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidceGYxXHg4MScsIGhlYWRlcikKKworICAgICAgICAjIE1heGltdW0gcGF5bG9hZCBzaXplCisg
ICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwg
KDEgPDwgNjMpIC0gMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDdmXHg3Zlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCisKKyAgICAgICAgIyBJbnZhbGlkIG9w
Y29kZSAweDEwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5j
cmVhdGVfaGVhZGVyLCAweDEwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwKQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFy
YW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVh
dGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDB4ZiwgMCwgMCwgMCwgMCkKKworICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3Ro
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVhdGVfaGVh
ZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwg
NjMsIDAsIDAsIDAsIDAsIDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQ3OTQxMDUxNDU1ZWJlZTU4ODIzYjRiMGJlOTM3NjI5
MTJiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRp
bC5weQpAQCAtMCwwICsxLDE5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0CitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBp
bXBvcnQgUFkzCitmcm9tIHNpeCBpbXBvcnQgaW50MmJ5dGUKKworX1RFU1RfREFUQV9ESVIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScpCisKKwor
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IHV0aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3ByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oc2VsZik6CisgICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29ybGQnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQorICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2dldF9zY3JpcHRfaW50
ZXJwKHNlbGYpOgorICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxcY3lnd2luXFxiaW4nCisgICAg
ICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCAncGVybCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRUFETUUnKSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgdXRpbC5nZXRf
c2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy91c3IvYmluL3BlcmwgLXdUJywKKyAgICAg
ICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElS
LCAnaGVsbG8ucGwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
eWd3aW5fcGVybCArICcgLXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAo
b3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorCisgICAgZGVmIHRlc3RfaGV4aWZ5
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAw
OSAwZCAwYSAwMCBmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoYidh
ekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkKKworCitjbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFz
a2VyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X21hc2soc2VsZik6CisgICAgICAgICMgU2FtcGxl
IGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYtOAorICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKGInXHhmZlx4ZmZceGZmXHhmZicpCisgICAgICAgIHJlc3VsdCA9
IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4MTlceDY4XHg1YScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVk
WG9yTWFza2VyKGInXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ZTZceDk3
XHhhNScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2Vy
KGInXHhlNlx4OTdceGE1XHgyMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHhl
Nlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBceDAwXHgwMCcsIHJl
c3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6CisgICAgICAgIG1hc2tlciA9
IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHg3Zlx4ZmZceDIwJykKKyAgICAgICAgIyBt
YXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2VkLgorICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQorICAgICAgICAjIG1hc2tbMl0sIG1h
c2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCisgICAgICAgIHJlc3Vs
dCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCByZXN1bHQpCisKKyAgICBkZWYgdGVz
dF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6CisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRY
b3JNYXNrZXIoYidtQVNrJykKKyAgICAgICAgb3JpZ2luYWwgPSBiJycuam9pbihbdXRpbC5wYWNr
X2J5dGUoaSAlIDI1NikgZm9yIGkgaW4gcmFuZ2UoMTAwMCldKQorICAgICAgICByZXN1bHQgPSBt
YXNrZXIubWFzayhvcmlnaW5hbCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycuam9pbihbCisgICAg
ICAgICAgICB1dGlsLnBhY2tfYnl0ZSgoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kgJSA0XSkpIGZv
ciBpIGluIHJhbmdlKDEwMDApCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFz
a2VyKGInTWFTaycpCisgICAgICAgIGZpcnN0X3BhcnQgPSBiJ1RoZSBXZWJTb2NrZXQgUHJvdG9j
b2wgZW5hYmxlcyB0d28td2F5IGNvbW11bmljYXRpb24uJworICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhmaXJzdF9wYXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgYidceDE5XHQ2S1x4MWFceDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJceDE1PFx4MDgiXHJz
XHgwZSMnCisgICAgICAgICAgICBiJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgwZX5ceDFjLFx4MThz
XHgwOCJceDBjPlx4MWUjXHgwODBcbjknCisgICAgICAgICAgICBiJ1x4MDg8XHgwNWMnLCByZXN1
bHQpCisgICAgICAgIHNlY29uZF9wYXJ0ID0gYidJdCBoYXMgdHdvIHBhcnRzOiBhIGhhbmRzaGFr
ZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJworICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhz
ZWNvbmRfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGIiKCdL
JVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlceDEyO1xuJlx4MDRzXG4jIgor
ICAgICAgICAgICAgYiJceDA1c1x4MWYlXHgwNHNceDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZc
eDE5YyIsIHJlc3VsdCkKKworCitkZWYgZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgbWluX251
bV9jaHVua3MpOgorICAgIGNodW5rcyA9IFtdCisgICAgYnl0ZXNfY2h1bmtlZCA9IDAKKworICAg
IHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291cmNlKToKKyAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgMSwgbWluKGxlbihzb3VyY2UpIC8gbWluX251
bV9jaHVua3MsCisgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgY2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsg
Y2h1bmtfc2l6ZV0KKyAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKKyAgICAgICAgYnl0ZXNf
Y2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICByZXR1cm4gY2h1bmtzCisKKworY2xhc3MgSW5m
bGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X2luZmxh
dGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgYict
JyAqIDMwMDAwICsgYidoZWxsbycKKyAgICAgICAgaW5mbGF0ZXIxNSA9IHV0aWwuX0luZmxhdGVy
KDE1KQorICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVmbGF0ZXIoMTUpCisgICAgICAgIGlu
ZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCisgICAgICAgIGRlZmxhdGVyOCA9IHV0aWwuX0Rl
ZmxhdGVyKDgpCisKKyAgICAgICAgY29tcHJlc3NlZDE1ID0gZGVmbGF0ZXIxNS5jb21wcmVzc19h
bmRfZmluaXNoKGlucHV0KQorICAgICAgICBjb21wcmVzc2VkOCA9IGRlZmxhdGVyOC5jb21wcmVz
c19hbmRfZmluaXNoKGlucHV0KQorCisgICAgICAgIGluZmxhdGVyMTUuYXBwZW5kKGNvbXByZXNz
ZWQxNSkKKyAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21wcmVzc2VkOCkKKworICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29tcHJlc3NlZDgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVjb21wcmVzcygtMSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5kZWNvbXByZXNzKC0xKSkKKworICAg
IGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICByYW5kb20uc2VlZChhPTAp
CisgICAgICAgIHNvdXJjZSA9IGInJy5qb2luKAorICAgICAgICAgICAgW2ludDJieXRlKHJhbmRv
bS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMCAqIDEwMjQpXSkKKworICAgICAg
ICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCisgICAgICAg
IHByaW50KCJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2Vk
X2lucHV0XSkKKworICAgICAgICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQorICAgICAg
ICBjb21wcmVzc2VkID0gW10KKyAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Cisg
ICAgICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCisg
ICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYicn
KSkKKworICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNv
dXJjZSwgMTApCisgICAgICAgIHByaW50KCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUK
KyAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2V4cGVjdGF0aW9uXSkKKwor
ICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxhdGVyKDE1KQorICAgICAgICBpbmZsYXRlci5h
cHBlbmQoYicnLmpvaW4oY29tcHJlc3NlZCkpCisgICAgICAgIGZvciBjaHVuayBpbiBjaHVua2Vk
X2V4cGVjdGF0aW9uOgorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21w
cmVzcyhsZW4oY2h1bmspKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVj
b21wcmVzc2VkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBpbmZsYXRlci5kZWNv
bXByZXNzKC0xKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0
Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2
M2VmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
UkVBRE1FCkBAIC0wLDAgKzEgQEAKK1Rlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3Vz
ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2I1NDFiYjdlYzQwNDQ3NDU3OThhYjk3YWU3Y2NiYTU3
ZTA0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJhaXNlIGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzk4ZTk2Nzc4ZDhmNzVjOGQ3NDI0YzI3YjQwYzFm
YWQ5OTE4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmY2NDQyZTY1Yjk5ZGQ3ZDQ1NWNiMDlhMGFmYzlkNDk1OGRmMDQxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
b3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgaWYgcmVx
dWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAgICAgIHJldHVybgor
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qu
d3Nfb3JpZ2luKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbWVzc2FnZSA9ICdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAl
ICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDM5MDk5NGQ3MTJkZmU4ZjFlNGRmZGQ5NGZmNTZhYmU2
NjczZDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpAQCAtMCwwICsxLDQy
IEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEoKS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVz
JyAlCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0Lndz
X3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmZGRiNzQ0OTVlZWYxZDFmMzUxZTMzNGFjNDg1MDQ3
M2VkMTY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCisi
IiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVz
c2FnZSA9ICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUg
KAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhZmNmYTk3YTk1NGEyYmU2OTZjMTQ4ZGQxZjU1MzYyOGYxMjFlYTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25f
Y2FsbGFibGVfd3NoLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTm9u
LWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisKK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
ID0gVHJ1ZQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQorCisjIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3BsYWluX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdkYjFlNWFjMzI2ZGY1MWM2OGUzZWQy
NjkwYmUyYTAzYzg3M2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMn
ICUgKHJlcXVlc3Qud3NfcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2NWRiZTMyYWFj
OTEyMjkxYTM2M2E4YzgzZWJlOGUwZmVkNjBlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCkBAIC0w
LDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9z
aWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
d3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViYjBkYTFhYjZiMGJkZDA3
N2I4MzMyODEzNzZjMWE4MTE1NTBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgorIiIiCisKKworZGVmIG5vX3dlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3dyb25nX2hhbmRz
aGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZDI3ZDZiY2ZlZWFmMDJhOTQyYThiMzBiN2QzMzQwZmIyMGQyMzMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJh
bnNmZXJfc2lnX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldy
b25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KKyIiIgorCisKK2RlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVm
IG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjMGY2NTcyYjEyZmMxYjE0
NjY2M2ZmZWFkNThjNDgyNWMyMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE5IEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0
X2J5X3VzZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzZiOGUxOTIwZGMzYmVjYTZlZTUwZGQzMjJi
ZDYwYTU4Y2M0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5ZWVhMTkxNGI5MWQ2ZjU1ZTU0NjdkYjkwODE1MWQ2ODdl
OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMCwwICsxLDMyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitO
b25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19f
aW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3J1bl9hbGwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9leHRl
bnNpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmZkYmMx
ZjYxODk5NDZkYWViYzhlZjBjNWRjNTI3NThmY2E5NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTElDRU5T
RQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvUkVB
RE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L0NIQU5HRVMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCmluZGV4IGIzOTk4ODI1NjFlYzI5NWQ4ZGVmY2Fk
YmUxYjliOTk1YjFlYjllMTEuLmZmYTcwMjYwMWI2NTA5YjI1ZmJkNjc4N2QxZTc2ODJlNWFjMzkz
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwpA
QCAtMyw2ICszLDI4IEBAIENoYW5nZWxvZyBmb3Igc2l4CiAKIFRoaXMgZmlsZSBsaXN0cyB0aGUg
Y2hhbmdlcyBpbiBlYWNoIHNpeCB2ZXJzaW9uLgogCisxLjEzLjAKKy0tLS0tLQorCistIElzc3Vl
ICMyOTgsIHB1bGwgcmVxdWVzdCAjMjk5OiBBZGQgYHNpeC5tb3Zlcy5kYm1fbmRibWAuCisKKy0g
SXNzdWUgIzE1NTogQWRkIGBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjYCwgd2hpY2ggYWxpYXNl
cyB0aGUgYGNvbGxlY3Rpb25zYAorICBtb2R1bGUgb24gUHl0aG9uIDItMy4yIGFuZCB0aGUgYGNv
bGxlY3Rpb25zLmFiY2Agb24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlci4KKworLSBQdWxsIHJlcXVl
c3QgIzMwNDogUmUtYWRkIGRpc3R1dGlscyBmYWxsYmFjayBpbiBgc2V0dXAucHlgLgorCistIFB1
bGwgcmVxdWVzdCAjMzA1OiBPbiBQeXRob24gMy43LCBgd2l0aF9tZXRhY2xhc3NgIHN1cHBvcnRz
IGNsYXNzZXMgdXNpbmcgUEVQCisgIDU2MCBmZWF0dXJlcy4KKworMS4xMi4wCistLS0tLS0KKwor
LSBJc3N1ZSAjMjU5LCBwdWxsIHJlcXVlc3QgIzI2MDogYHNpeC5hZGRfbWV0YWNsYXNzYCBub3cg
cHJlc2VydmVzCisgIGBfX3F1YWxuYW1lX19gIGZyb20gdGhlIG9yaWdpbmFsIGNsYXNzLgorCist
IFB1bGwgcmVxdWVzdCAjMjA0OiBBZGQgYHNpeC5lbnN1cmVfYmluYXJ5YCwgYHNpeC5lbnN1cmVf
dGV4dGAsIGFuZAorICBgc2l4LmVuc3VyZV9zdHJgLgorCiAxLjExLjAKIC0tLS0tLQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQppbmRleCBmMzA2OGJm
ZDllMGNkODZkZTZiMmNlNWY1ZmE3ZmFmMzhjNjhlNWNlLi40YjA1YTU0NTI2MWMwZjliMzFhYmUz
ZWRlYzcxMDU4NzU4N2E2NTlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1Db3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBC
ZW5qYW1pbiBQZXRlcnNvbgorQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJz
b24KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNkNWZmNGJiOGU0ZmEwYTFjYWY2ZDNkZjUyOGFiYzIwYjNkZjVh
ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1NZXRhZGF0YS1WZXJz
aW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5OiBQeXRob24gMiBh
bmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgotQXV0aG9yLWVtYWls
OiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0aW9uOiAuLiBpbWFn
ZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgICAgICAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAgICAKLSAgICAgICAg
Li4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNo
PW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jlbmph
bWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6dGFyZ2V0OiBodHRw
czovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCi0gICAgICAg
IAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnku
ICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Igc21vb3RoaW5nIG92
ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBn
b2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIG9u
IGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1bWVudGF0aW9uIGZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAgICAgIAotICAgICAg
ICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQgaXMgY29u
dGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
LSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAKLSAgICAgICAgT25s
aW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KLSAgICAgICAgCi0g
ICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1p
bnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQgdGhlcmUuCi0gICAg
ICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVy
YWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAgIGxpc3Q6IGh0dHBz
Oi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcKLSAgICAg
ICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCi1DbGFz
c2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xhc3NpZmll
cjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFzc2lmaWVy
OiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9SRUFETUUucnN0CmluZGV4IGMxN2Q4ZDczMmFmODU5ZGUyYzQ2YWJhZDAwNjQ0MzRh
ODRkYzE2MGEuLmE5OWU2ZjU1ODVhOTE4YjhhNjhjZWFiYWNlMmZiNmUzNGU5MjE4M2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdApAQCAt
MSwxMSArMSwxOCBAQAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3Np
eC5zdmcKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4CisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6YWx0OiBzaXggb24gUHlQSQogCiAu
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4LnN2Zz9icmFuY2g9
bWFzdGVyCi0gICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgK
KyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4CisgICA6YWx0
OiBzaXggb24gVHJhdmlzQ0kKIAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFk
Z2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mu
b3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBz
Oi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBS
ZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9s
aWNlbnNlLU1JVC1ncmVlbi5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5q
YW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdl
CiAKIFNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHBy
b3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCiBmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVu
Y2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCkBAIC0xNiw3
ICsyMyw3IEBAIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJ
dCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCiBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
IG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKIAotT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQg
aHR0cDovL3NpeC5ydGZkLm9yZy4KK09ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHBzOi8v
c2l4LnJlYWR0aGVkb2NzLmlvLy4KIAogQnVncyBjYW4gYmUgcmVwb3J0ZWQgdG8gaHR0cHM6Ly9n
aXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwogYmUgZm91bmQgdGhl
cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9kb2N1bWVudGF0aW9uL2NvbmYucHkKaW5kZXggYWQ5MjVjMWMxZDFlODM2MTQ5MzcwNzJiYmU5
NGU2YzMwNTZkMTg4ZC4uYjNkMTMyOGFkYzJhNDJhZmRlNzE5MTUxOTMwNjA0MzM1MDRjZTIwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMzMsNyArMzMsNyBAQCBtYXN0ZXJfZG9jID0gImlu
ZGV4IgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCiBwcm9qZWN0
ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNywgQmVuamFtaW4gUGV0ZXJzb24iCitj
b3B5cmlnaHQgPSB1IjIwMTAtMjAxOSwgQmVuamFtaW4gUGV0ZXJzb24iCiAKIHN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikpKQogZnJvbSBzaXgg
aW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9k
b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0
CmluZGV4IGRkMGRjNmUzYmRlOGM0NThkYzRmMTEzMzFlZjdiZTEyZWQ2N2FiYTguLmI3ZWMyNzU0
ZWNmODNkNWEyOTFjMTM5ODg3MzhmZWY2MjA0NWM5ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2Rv
Y3VtZW50YXRpb24vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgu
cnN0CkBAIC0xMyw3ICsxMyw3IEBAIFB5dGhvbiAzLiAgSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9y
dCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMKIHdpdGhvdXQgbW9k
aWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBmaWxlLCBzbyBpdCBp
cyBwYWlubGVzcwogdG8gY29weSBpbnRvIGEgcHJvamVjdC4KIAotU2l4IGNhbiBiZSBkb3dubG9h
ZGVkIG9uIGBQeVBpIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8+YF8uICBJdHMg
YnVnCitTaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJv
amVjdC9zaXgvPmBfLiAgSXRzIGJ1ZwogdHJhY2tlciBhbmQgY29kZSBob3N0aW5nIGlzIG9uIGBH
aXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4PmBfLgogCiBUaGUgbmFtZSwg
InNpeCIsIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCAyKjMgZXF1YWxzIDYuICBXaHkgbm90IGFk
ZGl0aW9uPwpAQCAtNTAsOCArNTAsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAKIC4uIGRhdGE6
OiBjbGFzc190eXBlcwogCi0gICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIEluIFB5dGhvbiAyLCB0
aGlzIGVuY29tcGFzc2VzIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlCi0gICBjbGFzc2VzLiAgSW4g
UHl0aG9uIDMsIHRoaXMgaXMganVzdCBuZXctc3R5bGVzLgorICAgUG9zc2libGUgY2xhc3MgdHlw
ZXMuICBJbiBQeXRob24gMiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUKKyAgIDpkYXRhOmBw
eTI6dHlwZXMuQ2xhc3NUeXBlYCBhbmQgbmV3LXN0eWxlIGBgdHlwZWBgIGNsYXNzZXMuICBJbiBQ
eXRob24gMywKKyAgIHRoaXMgaXMganVzdCBgYHR5cGVgYC4KIAogCiAuLiBkYXRhOjogaW50ZWdl
cl90eXBlcwpAQCAtNzUsNyArNzYsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAuLiBkYXRhOjog
YmluYXJ5X3R5cGUKIAogICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFyeSBkYXRhLiAgVGhp
cyBpcyA6ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOmJ5dGVz
YCBpbiBQeXRob24gMy4KKyAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhvbiAzLiAgUHl0aG9u
IDIuNiBhbmQgMi43IGluY2x1ZGUgYGBieXRlc2BgIGFzIGEKKyAgIGJ1aWx0aW4gYWxpYXMgb2Yg
YGBzdHJgYCwgc28gc2l44oCZcyB2ZXJzaW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBQeXRob24g
Mi41CisgICBjb21wYXRpYmlsaXR5LgogCiAKIC4uIGRhdGE6OiBNQVhTSVpFCkBAIC0zNzEsNyAr
Mzc0LDcgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4KIC4uIGZ1bmN0aW9u
OjogYihkYXRhKQogCiAgICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBh
bHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5j
OmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNv
ZGVkCisgICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYW4gOC1iaXQgc3RyaW5nLiAgSW4g
UHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5n
IHRvIGJ5dGVzLgogCiAKQEAgLTQzMyw2ICs0MzYsMjQgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5
dGhvbiB2ZXJzaW9ucy4KICAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgog
CiAKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJv
cnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YGJpbmFyeV90eXBlYC4gKmVu
Y29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNv
ZGVgCisKKworLi4gZnVuY3Rpb246OiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVy
cm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byBgYHN0cmBgLiAqZW5jb2RpbmcqLCAq
ZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCisu
LiBmdW5jdGlvbjo6IGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3Ry
aWN0JykKKworICAgQ29lcmNlICpzKiB0byA6ZGF0YTpgdGV4dF90eXBlYC4gKmVuY29kaW5nKiwg
KmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNvZGVgCisKKwog
Li4gZGF0YTo6IFN0cmluZ0lPCiAKICAgIFRoaXMgaXMgYSBmYWtlIGZpbGUgb2JqZWN0IGZvciB0
ZXh0dWFsIGRhdGEuICBJdCdzIGFuIGFsaWFzIGZvcgpAQCAtNTAzLDcgKzUyNCw3IEBAIFB5dGhv
biAyIG9yIDMsIHdyaXRlOjoKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCBodG1sX3BhcnNlcgog
CiBTaW1pbGFybHksIHRvIGdldCB0aGUgZnVuY3Rpb24gdG8gcmVsb2FkIG1vZHVsZXMsIHdoaWNo
IHdhcyBtb3ZlZCBmcm9tIHRoZQotYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wYGAgbW9kdWxl
LCB1c2U6OgorYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLCB1c2U6
OgogCiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmVsb2FkX21vZHVsZQogCkBAIC01NjMsNyAr
NTg0LDExIEBAIFN1cHBvcnRlZCByZW5hbWVzOgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBjU3RyaW5nSU9gYCAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6Y1N0cmluZ0lPLlN0cmluZ0lPYCAgICAgIHwgOmNsYXNzOmBweTM6aW8u
U3RyaW5nSU9gICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwg
OmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MzpkYm0uZ251
YCAgICAgICAgICAgICAgICAgIHwKK3wgYGBjb2xsZWN0aW9uc19hYmNgYCAgICAgICAgICB8IDpt
b2Q6YHB5Mjpjb2xsZWN0aW9uc2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvbGxlY3Rpb25z
LmFiY2AgKDMuMyspICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmdkYm1gICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJtLmdudWAgICAgICAg
ICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCit8IGBgZGJtX25kYm1gYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
ZGJtYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpkYm0ubmRibWAgICAgICAgICAg
ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKIHwgYGBfZHVtbXlfdGhyZWFkYGAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkdW1t
eV90aHJlYWRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOl9kdW1teV90aHJlYWRgICAgICAgICAg
ICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2Zn
CmluZGV4IGUxMjA2OGM1NzNjNmY2ZWZkM2E5Mzc5NmU2ZGNlZWFlMTg4YjM1Y2QuLjMxN2UwMTZj
OGNjMDRkMDk3YjNiNjk2Mzk3MTAzNTdkZWIxYzk3MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Nl
dHVwLmNmZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKQEAgLTUsMTcgKzUsMTYgQEAgdW5pdmVy
c2FsID0gMQogbWF4LWxpbmUtbGVuZ3RoID0gMTAwCiBpZ25vcmUgPSBGODIxCiAKLVt0b29sOnB5
dGVzdF0KLW1pbnZlcnNpb24gPSAyLjIuMAotcGVwOGlnbm9yZSA9IAotCWRvY3VtZW50YXRpb24v
Ki5weSBBTEwKLQl0ZXN0X3NpeC5weSBBTEwKLWZsYWtlcy1pZ25vcmUgPSAKLQlkb2N1bWVudGF0
aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi0Jc2l4LnB5IFVuZGVmaW5lZE5hbWUKK1tt
ZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKIAotW2VnZ19pbmZvXQotdGFnX2J1aWxk
ID0gCi10YWdfZGF0ZSA9IDAKK1t0b29sOnB5dGVzdF0KK21pbnZlcnNpb249Mi4yLjAKK3BlcDhp
Z25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0ZXN0X3NpeC5weSBBTEwK
IAorZmxha2VzLWlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8qLnB5IEFMTAorICAgIHRlc3Rf
c2l4LnB5IEFMTAorICAgIHNpeC5weSBVbmRlZmluZWROYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmluZGV4IGNhNDRlMTAwZTQyN2VjZjU0MjRi
YWNiODRkNWViNmY1YzcxMmYyMzEuLjk3YzY4NWI1YTUwYmQ5NzY5ODA0ODYxZjRhZDdhODM5NjIx
NWQyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQ
ZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwog
IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0zMSw2ICsz
MSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBzaXgKIAogc2l4X2NsYXNzaWZpZXJz
ID0gWworICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlIiwK
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIiLAogICAgICJQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCiAgICAgIkludGVuZGVkIEF1ZGllbmNlIDo6
IERldmVsb3BlcnMiLApAQCAtNDYsMTEgKzQ3LDEyIEBAIHNldHVwKG5hbWU9InNpeCIsCiAgICAg
ICB2ZXJzaW9uPXNpeC5fX3ZlcnNpb25fXywKICAgICAgIGF1dGhvcj0iQmVuamFtaW4gUGV0ZXJz
b24iLAogICAgICAgYXV0aG9yX2VtYWlsPSJiZW5qYW1pbkBweXRob24ub3JnIiwKLSAgICAgIHVy
bD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iLAorICAgICAgdXJsPSJodHRwczov
L2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeCIsCiAgICAgICB0ZXN0c19yZXF1aXJlPVsicHl0ZXN0
Il0sCiAgICAgICBweV9tb2R1bGVzPVsic2l4Il0sCiAgICAgICBkZXNjcmlwdGlvbj0iUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMiLAogICAgICAgbG9uZ19kZXNjcmlwdGlv
bj1zaXhfbG9uZ19kZXNjcmlwdGlvbiwKICAgICAgIGxpY2Vuc2U9Ik1JVCIsCi0gICAgICBjbGFz
c2lmaWVycz1zaXhfY2xhc3NpZmllcnMKKyAgICAgIGNsYXNzaWZpZXJzPXNpeF9jbGFzc2lmaWVy
cywKKyAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjYsICE9My4wLiosICE9My4xLioiLAogICAg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVS
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
YjU4OWUzOGEzMjA0MWU0OTMzMmU1ZTgxYzJkMzYzZGM0MThkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKQEAgLTAsMCArMSBAQAor
cGlwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjA1YTU0
NTI2MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpAQCAtMCwwICsxLDE4IEBACitDb3B5
cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgorCitQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5IG9mCit0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgordGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwordXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbCBjb3BpZXMgb2YKK3RoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKK3N1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKK2NvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SCitDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIKK0lOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCitDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGM4ZjUxZTFmMzY2
MTM4ZDM4MTZhYmUwZGRiM2VmZWU0MTc1YzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKQEAgLTAsMCArMSw1MiBAQAorTWV0YWRhdGEt
VmVyc2lvbjogMi4xCitOYW1lOiBzaXgKK1ZlcnNpb246IDEuMTMuMAorU3VtbWFyeTogUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRo
dWIuY29tL2JlbmphbWlucC9zaXgKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24KK0F1dGhvci1l
bWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZworTGljZW5zZTogTUlUCitQbGF0Zm9ybTogVU5LTk9X
TgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZQorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKK0NsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitDbGFzc2lmaWVyOiBJ
bnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9T
SSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMK
K1JlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4wLiosICE9My4xLioKKworLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFyZ2V0OiBodHRwczov
L3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkKKworLi4gaW1hZ2U6
OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNoPW1hc3Rlcgor
ICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgKKyAgIDphbHQ6
IHNpeCBvbiBUcmF2aXNDSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3By
b2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vc2l4
LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBSZWFkIHRo
ZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNl
LU1JVC1ncmVlbi5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAv
c2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdlCisKK1Np
eCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVz
IHV0aWxpdHkgZnVuY3Rpb25zCitmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCit3cml0aW5nIFB5dGhv
biBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0
aGUKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBpcyBwcm92aWRl
ZC4KKworU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlz
IGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KK2ZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkg
Y29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQorbm90
aWNlIG11c3QgYmUgcmV0YWluZWQuKQorCitPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
czovL3NpeC5yZWFkdGhlZG9jcy5pby8uCisKK0J1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KK2JlIGZvdW5k
IHRoZXJlLgorCitGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVyYWws
IGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCitsaXN0OiBodHRwczovL21haWwucHl0
aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JEIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vUkVDT1JECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NzY2NWM5OTY0MjU1ZDE3MDJmMDE2Yzhi
ZDExZGFlZGU1MTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRp
c3QtaW5mby9SRUNPUkQKQEAgLTAsMCArMSw4IEBACitzaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNU
QUxMRVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJBUDd6ZU51d3ZGUWcs
NA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2JqQWNYR25pb3cyd3ln
NUJWS09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL01F
VEFEQVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEzbWtfeGtuWjhSVjR3
LDE5NDANCitzaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KK3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BDR21FUEhjLWdwQ3E1
QlJnLDExMA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQsc2hhMjU2PV9pVkhf
aVlFdEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KK3NpeC5weSxzaGEyNTY9
bzlXSE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywzMzA1MQ0KK3NpeC5w
eWMsLA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwMTIzNTUz
MzNlMDY2NGZhYzMxMjM4YWEwNDIxNmZmNTM2MjIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCkBAIC0wLDAgKzEsNiBAQAorV2hlZWwtVmVy
c2lvbjogMS4wCitHZW5lcmF0b3I6IGJkaXN0X3doZWVsICgwLjMyLjEpCitSb290LUlzLVB1cmVs
aWI6IHRydWUKK1RhZzogcHkyLW5vbmUtYW55CitUYWc6IHB5My1ub25lLWFueQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmUyZmNl
NDk4OTU1YjYyODAxNDYxOGIyOGM2YmNmMTUyNDY2YTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApAQCAtMCwwICsxIEBACitz
aXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzVlMWQyMmNiODYzMGNjZDIwYzIwM2Q2Mzg5YTVhZTYyNTAwYWY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lO
U1RBTExFUgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL1JFQ09SRAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5CmluZGV4IDZiZjRmZDM4MTA0NjIwN2E0Nzk0
YWVlMTdiZTZkMjJkYjIzN2YzMGEuLmQwYWVjZTg5ZmE0YWFlOTQ4ZDc1ZThlZjIyNzdjZTI0OTUx
ZWJiMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVy
c29uCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTI5LDcgKzI5LDcg
QEAgaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAKIF9fYXV0aG9yX18gPSAiQmVuamFtaW4gUGV0
ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IgotX192ZXJzaW9uX18gPSAiMS4xMS4wIgorX192
ZXJzaW9uX18gPSAiMS4xMy4wIgogCiAKICMgVXNlZnVsIGZvciB2ZXJ5IGNvYXJzZSB2ZXJzaW9u
IGRpZmZlcmVudGlhdGlvbi4KQEAgLTI1NSw4ICsyNTUsMTAgQEAgX21vdmVkX2F0dHJpYnV0ZXMg
PSBbCiAgICAgTW92ZWRBdHRyaWJ1dGUoInppcF9sb25nZXN0IiwgIml0ZXJ0b29scyIsICJpdGVy
dG9vbHMiLCAiaXppcF9sb25nZXN0IiwgInppcF9sb25nZXN0IiksCiAgICAgTW92ZWRNb2R1bGUo
ImJ1aWx0aW5zIiwgIl9fYnVpbHRpbl9fIiksCiAgICAgTW92ZWRNb2R1bGUoImNvbmZpZ3BhcnNl
ciIsICJDb25maWdQYXJzZXIiKSwKKyAgICBNb3ZlZE1vZHVsZSgiY29sbGVjdGlvbnNfYWJjIiwg
ImNvbGxlY3Rpb25zIiwgImNvbGxlY3Rpb25zLmFiYyIgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMykgZWxzZSAiY29sbGVjdGlvbnMiKSwKICAgICBNb3ZlZE1vZHVsZSgiY29weXJlZyIsICJj
b3B5X3JlZyIpLAogICAgIE1vdmVkTW9kdWxlKCJkYm1fZ251IiwgImdkYm0iLCAiZGJtLmdudSIp
LAorICAgIE1vdmVkTW9kdWxlKCJkYm1fbmRibSIsICJkYm0iLCAiZGJtLm5kYm0iKSwKICAgICBN
b3ZlZE1vZHVsZSgiX2R1bW15X3RocmVhZCIsICJkdW1teV90aHJlYWQiLCAiX2R1bW15X3RocmVh
ZCIpLAogICAgIE1vdmVkTW9kdWxlKCJodHRwX2Nvb2tpZWphciIsICJjb29raWVsaWIiLCAiaHR0
cC5jb29raWVqYXIiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVzIiwgIkNvb2tpZSIs
ICJodHRwLmNvb2tpZXMiKSwKQEAgLTYzNyw2ICs2MzksNyBAQCBpZiBQWTM6CiAgICAgaW1wb3J0
IGlvCiAgICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwogICAgIEJ5dGVzSU8gPSBpby5CeXRlc0lP
CisgICAgZGVsIGlvCiAgICAgX2Fzc2VydENvdW50RXF1YWwgPSAiYXNzZXJ0Q291bnRFcXVhbCIK
ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzFdIDw9IDE6CiAgICAgICAgIF9hc3NlcnRSYWlzZXNS
ZWdleCA9ICJhc3NlcnRSYWlzZXNSZWdleHAiCkBAIC04MjQsNyArODI3LDE1IEBAIGRlZiB3aXRo
X21ldGFjbGFzcyhtZXRhLCAqYmFzZXMpOgogICAgIGNsYXNzIG1ldGFjbGFzcyh0eXBlKToKIAog
ICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQpOgotICAgICAgICAg
ICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvWzoyXSA+PSAoMywgNyk6CisgICAgICAgICAgICAgICAgIyBUaGlzIHZlcnNpb24gaW50
cm9kdWNlZCBQRVAgNTYwIHRoYXQgcmVxdWlyZXMgYSBiaXQKKyAgICAgICAgICAgICAgICAjIG9m
IGV4dHJhIGNhcmUgKHdlIG1pbWljIHdoYXQgaXMgZG9uZSBieSBfX2J1aWxkX2NsYXNzX18pLgor
ICAgICAgICAgICAgICAgIHJlc29sdmVkX2Jhc2VzID0gdHlwZXMucmVzb2x2ZV9iYXNlcyhiYXNl
cykKKyAgICAgICAgICAgICAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3QgYmFzZXM6CisgICAg
ICAgICAgICAgICAgICAgIGRbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcworICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IGJhc2VzCisgICAgICAgICAg
ICByZXR1cm4gbWV0YShuYW1lLCByZXNvbHZlZF9iYXNlcywgZCkKIAogICAgICAgICBAY2xhc3Nt
ZXRob2QKICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKGNscywgbmFtZSwgdGhpc19iYXNlcyk6CkBA
IC04NDQsMTMgKzg1NSw3NCBAQCBkZWYgYWRkX21ldGFjbGFzcyhtZXRhY2xhc3MpOgogICAgICAg
ICAgICAgICAgIG9yaWdfdmFycy5wb3Aoc2xvdHNfdmFyKQogICAgICAgICBvcmlnX3ZhcnMucG9w
KCdfX2RpY3RfXycsIE5vbmUpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19fd2Vha3JlZl9fJywg
Tm9uZSkKKyAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX3F1YWxuYW1lX18nKToKKyAgICAgICAg
ICAgIG9yaWdfdmFyc1snX19xdWFsbmFtZV9fJ10gPSBjbHMuX19xdWFsbmFtZV9fCiAgICAgICAg
IHJldHVybiBtZXRhY2xhc3MoY2xzLl9fbmFtZV9fLCBjbHMuX19iYXNlc19fLCBvcmlnX3ZhcnMp
CiAgICAgcmV0dXJuIHdyYXBwZXIKIAogCitkZWYgZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0n
dXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIiIkNvZXJjZSAqKnMqKiB0byBzaXguYmlu
YXJ5X3R5cGUuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmljb2RlYCAtPiBlbmNv
ZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisKKyAgICBGb3IgUHl0aG9uIDM6
CisgICAgICAtIGBzdHJgIC0+IGVuY29kZWQgdG8gYGJ5dGVzYAorICAgICAgLSBgYnl0ZXNgIC0+
IGBieXRlc2AKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAg
ICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVsaWYgaXNpbnN0YW5j
ZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToKKyAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorCisK
K2RlZiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Cisg
ICAgIiIiQ29lcmNlICpzKiB0byBgc3RyYC4KKworICAgIEZvciBQeXRob24gMjoKKyAgICAgIC0g
YHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKwor
ICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAgICAgIC0gYGJ5dGVz
YCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uocywg
KHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3Qg
ZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorICAgIGlmIFBZMiBhbmQgaXNpbnN0YW5j
ZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykK
KyAgICBlbGlmIFBZMyBhbmQgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHMg
PSBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIHJldHVybiBzCisKKworZGVmIGVuc3Vy
ZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgIiIiQ29l
cmNlICpzKiB0byBzaXgudGV4dF90eXBlLgorCisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBg
dW5pY29kZWAgLT4gYHVuaWNvZGVgCisgICAgICAtIGBzdHJgIC0+IGB1bmljb2RlYAorCisgICAg
Rm9yIFB5dGhvbiAzOgorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorICAgICAgLSBgYnl0ZXNgIC0+
IGRlY29kZWQgdG8gYHN0cmAKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90
eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCisgICAgZWxp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBl
KHMpKQorCisKKwogZGVmIHB5dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZShrbGFzcyk6CiAgICAg
IiIiCi0gICAgQSBkZWNvcmF0b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9f
IG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCisgICAgQSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBkZWZp
bmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCiAgICAg
VW5kZXIgUHl0aG9uIDMgaXQgZG9lcyBub3RoaW5nLgogCiAgICAgVG8gc3VwcG9ydCBQeXRob24g
MiBhbmQgMyB3aXRoIGEgc2luZ2xlIGNvZGUgYmFzZSwgZGVmaW5lIGEgX19zdHJfXyBtZXRob2QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkK
aW5kZXggNDNlNzQyNmRlYTEyNDFiYmQzNzFkMmYyNGY2M2Y1MTA0MjdhNTE5Zi4uM2VlZmNlMzdj
MzI4ZDdiMTViMjNlZTgzZGQ4OThjNGIzZTU3NjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVz
dF9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykg
MjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTIyLDggKzIyLDkgQEAgaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGFiYwogCi1p
bXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKIAogaW1wb3J0IHNpeAogCkBAIC04MCw3ICs4MSw3IEBA
IGRlZiB0ZXN0X01BWFNJWkUoKToKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAg
ICMgQmVmb3JlIFB5dGhvbiAyLjYuCiAgICAgICAgIHBhc3MKLSAgICBweS50ZXN0LnJhaXNlcygK
KyAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciks
CiAgICAgICAgIG9wZXJhdG9yLm11bCwgW05vbmVdLCBzaXguTUFYU0laRSArIDEpCiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICBoYXZlX2dkYm0gPSBGYWxzZQogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fbW92ZWRf
YXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5z
dXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0xMjIsMzYgKzEyMywz
NiBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgICAgICAgICBfX2ltcG9y
dF9fKCJzaXgubW92ZXMuIiArIGl0ZW1fbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAiemlwX2xvbmdlc3QiIGFuZCBzeXMudmVyc2lvbl9p
bmZvIDwgKDIsIDYpOgotICAgICAgICAgICAgcHkudGVzdC5za2lwKCJ6aXBfbG9uZ2VzdCBvbmx5
IGF2YWlsYWJsZSBvbiAyLjYrIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ6aXBfbG9uZ2Vz
dCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgIGlmIGl0ZW1fbmFtZSA9PSAid2lucmVnIiBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCJ3aW4iKToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVs
ZSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVsZSIpCiAgICAg
ICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJ0a2ludGVyIik6CiAgICAgICAgICAgICBpZiBu
b3QgaGF2ZV90a2ludGVyOgotICAgICAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgicmVxdWlyZXMg
dGtpbnRlciIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIHRraW50ZXIi
KQogICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ0a2ludGVyX3R0ayIgYW5kIHN5cy52ZXJz
aW9uX2luZm9bOjJdIDw9ICgyLCA2KToKLSAgICAgICAgICAgICAgICBweS50ZXN0LnNraXAoInR0
ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgi
dHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogICAgICAgICBpZiBpdGVtX25hbWUuc3RhcnRz
d2l0aCgiZGJtX2dudSIpIGFuZCBub3QgaGF2ZV9nZGJtOgotICAgICAgICAgICAgcHkudGVzdC5z
a2lwKCJyZXF1aXJlcyBnZGJtIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBn
ZGJtIikKICAgICAgICAgcmFpc2UKICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwg
Nik6CiAgICAgICAgIGFzc2VydCBpdGVtX25hbWUgaW4gZGlyKHNpeC5tb3ZlcykKIAogCi1AcHku
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZv
ciBpdGVtIGluIHNpeC5fdXJsbGliX3BhcnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3Rf
bW92ZV9pdGVtc191cmxsaWJfcGFyc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBl
dmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKICAgICBpZiBpdGVtX25hbWUgPT0gIlBhcnNl
UmVzdWx0IiBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgyLCA1KToKLSAgICAgICAgcHkudGVzdC5z
a2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZvdW5kIG9uIDIuNSsiKQorICAgICAgICBweXRlc3Qu
c2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKICAgICBpZiBpdGVtX25h
bWUgaW4gKCJwYXJzZV9xcyIsICJwYXJzZV9xc2wiKSBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgy
LCA2KToKLSAgICAgICAgcHkudGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBuZXcgaW4gMi42IikK
KyAgICAgICAgcHl0ZXN0LnNraXAoInBhcnNlX3FzW2xdIGlzIG5ldyBpbiAyLjYiKQogICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNzZXJ0IGl0ZW1fbmFt
ZSBpbiBkaXIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSkKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
dGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX2Vy
cm9yX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfZXJyb3Io
aXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3Rs
eS4iIiIKQEAgLTE2MCw3ICsxNjEsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9lcnJv
cihpdGVtX25hbWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5lcnJvciwgaXRlbV9u
YW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVxdWVzdF9tb3ZlZF9hdHRyaWJ1
dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JlcXVlc3QoaXRlbV9uYW1lKToKICAg
ICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE2OSw3
ICsxNzAsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0KGl0ZW1fbmFtZSk6
CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlcXVlc3QsIGl0ZW1fbmFtZSkKIAogCi1A
cHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1l
IGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3Jlc3BvbnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVm
IHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1
cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE3OCw3ICsxNzksNyBA
QCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNwb25zZShpdGVtX25hbWUpOgogICAgIGdl
dGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZSwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Iml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0
ZW0gaW4gc2l4Ll91cmxsaWJfcm9ib3RwYXJzZXJfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVz
dF9tb3ZlX2l0ZW1zX3VybGxpYl9yb2JvdHBhcnNlcihpdGVtX25hbWUpOgogICAgICIiIkVuc3Vy
ZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMjQzLDcgKzI0NCw3IEBA
IGRlZiB0ZXN0X3ppcCgpOgogICAgIGFzc2VydCBzaXguYWR2YW5jZV9pdGVyYXRvcih6aXAocmFu
Z2UoMiksIHJhbmdlKDIpKSkgPT0gKDAsIDApCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm8gPCAoMiwgNikiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KSIpCiBkZWYgdGVzdF96aXBfbG9uZ2VzdCgpOgogICAgIGZyb20gc2l4
Lm1vdmVzIGltcG9ydCB6aXBfbG9uZ2VzdAogICAgIGl0ID0gemlwX2xvbmdlc3QocmFuZ2UoMiks
IHJhbmdlKDEpKQpAQCAtMzIxLDcgKzMyMiw3IEBAIGNsYXNzIFRlc3RDdXN0b21pemVkTW92ZXM6
CiAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3JlbW92ZShzZWxmKToKLSAgICAgICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5yZW1vdmVfbW92ZSwgImVnZ3MiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUsICJlZ2dzIikKIAog
CiBkZWYgdGVzdF9nZXRfdW5ib3VuZF9mdW5jdGlvbigpOgpAQCAtMzM3LDcgKzMzOCw3IEBAIGRl
ZiB0ZXN0X2dldF9tZXRob2Rfc2VsZigpOgogICAgICAgICAgICAgcGFzcwogICAgIHggPSBYKCkK
ICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2Rfc2VsZih4Lm0pIGlzIHgKLSAgICBweS50ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCisgICAgcHl0ZXN0
LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCiAKIAogZGVm
IHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlZiB0ZXN0
X2dldF9tZXRob2RfZnVuY3Rpb24oKToKICAgICAgICAgICAgIHBhc3MKICAgICB4ID0gWCgpCiAg
ICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uKHgubSkgaXMgWC5fX2RpY3RfX1sibSJd
Ci0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX2Z1bmN0
aW9uLCBoYXNhdHRyKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRf
bWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9jbG9z
dXJlKCk6CkBAIC0zNjQsNyArMzY1LDcgQEAgZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2NvZGUoKToK
ICAgICAgICAgcGFzcwogICAgIGFzc2VydCBpc2luc3RhbmNlKHNpeC5nZXRfZnVuY3Rpb25fY29k
ZShmKSwgdHlwZXMuQ29kZVR5cGUpCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAicHlweV92ZXJz
aW9uX2luZm8iKToKLSAgICAgICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5n
ZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dl
dF9mdW5jdGlvbl9kZWZhdWx0cygpOgpAQCAtNDA0LDcgKzQwNSw3IEBAIGRlZiB0ZXN0X2RpY3Rp
b25hcnlfaXRlcmF0b3JzKG1vbmtleXBhdGNoKToKICAgICAgICAgaXQgPSBtZXRoKGQpCiAgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpdCwgbGlzdCkKICAgICAgICAgYXNzZXJ0IGxpc3Qo
aXQpID09IGxpc3QoZ2V0YXR0cihkLCBuYW1lKSgpKQotICAgICAgICBweS50ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXguYWR2YW5jZV9pdGVyYXRvciwgaXQpCisgICAgICAgIHB5dGVzdC5y
YWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0KQogICAgICAgICBy
ZWNvcmQgPSBbXQogICAgICAgICBkZWYgd2l0aF9rdygqYXJncywgKiprdyk6CiAgICAgICAgICAg
ICByZWNvcmQuYXBwZW5kKGt3WyJrdyJdKQpAQCAtNDE2LDE3ICs0MTcsOSBAQCBkZWYgdGVzdF9k
aWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnVu
ZG8oKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgy
LCA3KSIsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3
KSIsCiAgICAgICAgICAgICAgICAgcmVhc29uPSJ2aWV3IG1ldGhvZHMgb24gZGljdGlvbmFyaWVz
IG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogZGVmIHRlc3RfZGljdGlvbmFyeV92aWV3cygpOgot
ICAgIGRlZiBzdG9ja19tZXRob2RfbmFtZSh2aWV3d2hhdCk6Ci0gICAgICAgICIiIkdpdmVuIGEg
bWV0aG9kIHN1ZmZpeCBsaWtlICJrZXlzIiBvciAidmFsdWVzIiwgcmV0dXJuIHRoZSBuYW1lCi0g
ICAgICAgIG9mIHRoZSBkaWN0IG1ldGhvZCB0aGF0IGRlbGl2ZXJzIHRob3NlIG9uIHRoZSB2ZXJz
aW9uIG9mIFB5dGhvbgotICAgICAgICB3ZSdyZSBydW5uaW5nIGluLiIiIgotICAgICAgICBpZiBz
aXguUFkzOgotICAgICAgICAgICAgcmV0dXJuIHZpZXd3aGF0Ci0gICAgICAgIHJldHVybiAndmll
dycgKyB2aWV3d2hhdAotCiAgICAgZCA9IGRpY3QoemlwKHJhbmdlKDEwKSwgKHJhbmdlKDExLCAy
MCkpKSkKICAgICBmb3IgbmFtZSBpbiAia2V5cyIsICJ2YWx1ZXMiLCAiaXRlbXMiOgogICAgICAg
ICBtZXRoID0gZ2V0YXR0cihzaXgsICJ2aWV3IiArIG5hbWUpCkBAIC00NDAsOCArNDMzLDggQEAg
ZGVmIHRlc3RfYWR2YW5jZV9pdGVyYXRvcigpOgogICAgIGl0ID0gaXRlcihsKQogICAgIGFzc2Vy
dCBzaXgubmV4dChpdCkgPT0gMQogICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gMgotICAgIHB5
LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKLSAgICBweS50ZXN0LnJh
aXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9w
SXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9u
LCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfaXRlcmF0b3IoKToKQEAgLTQ4OSw3ICs0ODIs
NyBAQCBkZWYgdGVzdF9jcmVhdGVfdW5ib3VuZF9tZXRob2QoKToKICAgICBkZWYgZihzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYKICAgICB1ID0gc2l4LmNyZWF0ZV91bmJvdW5kX21ldGhvZChm
LCBYKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKKyAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgdSkKICAgICBpZiBzaXguUFkyOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh1LCB0eXBlcy5NZXRob2RUeXBlKQogICAgIHggPSBYKCkKQEAgLTUzNywxMyArNTMwLDEzIEBA
IGRlZiB0ZXN0X3VuaWNocigpOgogCiBkZWYgdGVzdF9pbnQyYnl0ZSgpOgogICAgIGFzc2VydCBz
aXguaW50MmJ5dGUoMykgPT0gc2l4LmIoIlx4MDMiKQotICAgIHB5LnRlc3QucmFpc2VzKEV4Y2Vw
dGlvbiwgc2l4LmludDJieXRlLCAyNTYpCisgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIHNp
eC5pbnQyYnl0ZSwgMjU2KQogCiAKIGRlZiB0ZXN0X2J5dGUyaW50KCk6CiAgICAgYXNzZXJ0IHNp
eC5ieXRlMmludChzaXguYigiXHgwMyIpKSA9PSAzCiAgICAgYXNzZXJ0IHNpeC5ieXRlMmludChz
aXguYigiXHgwM1x4MDQiKSkgPT0gMwotICAgIHB5LnRlc3QucmFpc2VzKEluZGV4RXJyb3IsIHNp
eC5ieXRlMmludCwgc2l4LmIoIiIpKQorICAgIHB5dGVzdC5yYWlzZXMoSW5kZXhFcnJvciwgc2l4
LmJ5dGUyaW50LCBzaXguYigiIikpCiAKIAogZGVmIHRlc3RfYnl0ZXNpbmRleCgpOgpAQCAtNTU0
LDcgKzU0Nyw3IEBAIGRlZiB0ZXN0X2J5dGVzaXRlcigpOgogICAgIGl0ID0gc2l4Lml0ZXJieXRl
cyhzaXguYigiaGkiKSkKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9yZCgiaCIpCiAgICAg
YXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImkiKQotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJ
dGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24s
IHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVzdF9TdHJpbmdJTygpOgpAQCAtNjg5LDcgKzY4Miw3
IEBAIGRlZiB0ZXN0X3ByaW50XygpOgogICAgIGFzc2VydCBvdXQuZmx1c2hlZAogCiAKLUBweS50
ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwgNikiKQorQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYpIikKIGRlZiB0ZXN0
X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICAjIEZvb2wgdGhlIHR5cGUgY2hlY2tp
bmcgaW4gcHJpbnRfLgogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2l4LCAiZmlsZSIsIHNpeC5C
eXRlc0lPLCByYWlzaW5nPUZhbHNlKQpAQCAtNzAxLDE2ICs2OTQsMTYgQEAgZGVmIHRlc3RfcHJp
bnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gpOgogICAgIG91dCA9IHNpeC5CeXRlc0lPKCkKICAgICBv
dXQuZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgb3V0LmVycm9ycyA9ICJzdHJpY3QiCi0gICAgcHku
dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgucHJpbnRfLCBzaXgudSgiXHUwNTNj
IiksIGZpbGU9b3V0KQorICAgIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgu
cHJpbnRfLCBzaXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQogICAgIG91dC5lcnJvcnMgPSAiYmFj
a3NsYXNocmVwbGFjZSIKICAgICBzaXgucHJpbnRfKHNpeC51KCJcdTA1M2MiKSwgZW5kPSIiLCBm
aWxlPW91dCkKICAgICBhc3NlcnQgb3V0LmdldHZhbHVlKCkgPT0gc2l4LmIoIlxcdTA1M2MiKQog
CiAKIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbnMoKToKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIHNpeC5wcmludF8sIHg9MykKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNp
eC5wcmludF8sIGVuZD0zKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50
Xywgc2VwPTQyKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCB4PTMp
CisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIGVuZD0zKQorICAgIHB5
dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCiAKIAogZGVmIHRlc3Rf
d2l0aF9tZXRhY2xhc3MoKToKQEAgLTc0NCw3ICs3MzcsNTQgQEAgZGVmIHRlc3Rfd2l0aF9tZXRh
Y2xhc3MoKToKICAgICBhc3NlcnQgWS5fX21yb19fID09IChZLCBYLCBvYmplY3QpCiAKIAotQHB5
LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDApIikKK0BweXRl
c3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK2RlZiB0ZXN0
X3dpdGhfbWV0YWNsYXNzX3R5cGluZygpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHR5cGlu
ZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNraXAoInR5cGluZyBt
b2R1bGUgcmVxdWlyZWQiKQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KToKKyAgICAgICAgIyBHZW5lcmljcyB3
aXRoIGN1c3RvbSBtZXRhY2xhc3NlcyB3ZXJlIGJyb2tlbiBvbiBvbGRlciB2ZXJzaW9ucy4KKyAg
ICAgICAgY2xhc3MgTWV0YShNZXRhLCB0eXBpbmcuR2VuZXJpY01ldGEpOgorICAgICAgICAgICAg
cGFzcworICAgIFQgPSB0eXBpbmcuVHlwZVZhcignVCcpCisgICAgY2xhc3MgRyhzaXgud2l0aF9t
ZXRhY2xhc3MoTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0pKToKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0p
KToKKyAgICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHW2ludF0gaXMgbm90
IEdbR1tpbnRdXQorICAgIGFzc2VydCBHQVtpbnRdIGlzIG5vdCBHQVtHQVtpbnRdXQorICAgIGFz
c2VydCBHLl9fYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWMsKQorICAgIGFzc2VydCBHLl9fb3Jp
Z19iYXNlc19fID09ICh0eXBpbmcuR2VuZXJpY1tUXSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBp
Zigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykiKQorZGVmIHRlc3Rfd2l0aF9tZXRhY2xh
c3NfcGVwXzU2MCgpOgorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAgICBj
bGFzcyBBOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgQjoKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEZha2U6CisgICAgICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwgYmFzZXMpOgorICAg
ICAgICAgICAgcmV0dXJuIChBLCBCKQorICAgIGZha2UgPSBGYWtlKCkKKyAgICBjbGFzcyBHKHNp
eC53aXRoX21ldGFjbGFzcyhNZXRhLCBmYWtlKSk6CisgICAgICAgIHBhc3MKKyAgICBjbGFzcyBH
QShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIGZha2UpKToKKyAgICAgICAgcGFzcwor
ICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoR0Es
IGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAoQSwgQikKKyAgICBhc3Nl
cnQgRy5fX29yaWdfYmFzZXNfXyA9PSAoZmFrZSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBpZigi
c3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMCkiKQogZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3Nf
cHJlcGFyZSgpOgogICAgICIiIlRlc3QgdGhhdCB3aXRoX21ldGFjbGFzcyBjYXVzZXMgTWV0YS5f
X3ByZXBhcmVfXyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMuIiIiCiAK
QEAgLTg1Nyw3ICs4OTcsNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0
IE15U2xvdHMuX19zbG90c19fID09IFsiYSIsICJiIl0KICAgICBpbnN0YW5jZSA9IE15U2xvdHMo
KQogICAgIGluc3RhbmNlLmEgPSAiZm9vIgotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0
dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKIAogICAgICMgVGVz
dCBhIGNsYXNzIHdpdGggc3RyaW5nIGZvciBzbG90cy4KICAgICBjbGFzcyBNeVN0cmluZ1Nsb3Rz
KG9iamVjdCk6CkBAIC04NjYsOCArOTA2LDggQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygpOgog
ICAgIGFzc2VydCBNeVN0cmluZ1Nsb3RzLl9fc2xvdHNfXyA9PSAiYWIiCiAgICAgaW5zdGFuY2Ug
PSBNeVN0cmluZ1Nsb3RzKCkKICAgICBpbnN0YW5jZS5hYiA9ICJmb28iCi0gICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIsICJiYXoiKQotICAg
IHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImIiLCAi
YmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5j
ZSwgImEiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRy
LCBpbnN0YW5jZSwgImIiLCAiYmF6IikKIAogICAgIGNsYXNzIE15U2xvdHNXZWFrcmVmKG9iamVj
dCk6CiAgICAgICAgIF9fc2xvdHNfXyA9ICJfX3dlYWtyZWZfXyIsCkBAIC04NzUsNyArOTE1LDI3
IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgdHlwZShNeVNsb3RzV2Vh
a3JlZikgaXMgTWV0YQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkp
IikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpIikK
K2RlZiB0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkKCk6CisgICAgIyBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2lzc3Vlcy8yNTkKKyAgICBjbGFz
cyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBBOgorICAgICAgICBjbGFz
cyBCOiBwYXNzCisKKyAgICBleHBlY3RlZCA9ICd0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkLjxs
b2NhbHM+LkEuQicKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09IGV4cGVjdGVkCisK
KyAgICBjbGFzcyBBOgorICAgICAgICBAc2l4LmFkZF9tZXRhY2xhc3MoTWV0YSkKKyAgICAgICAg
Y2xhc3MgQjogcGFzcworCisgICAgYXNzZXJ0IEEuQi5fX3F1YWxuYW1lX18gPT0gZXhwZWN0ZWQK
KworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSBv
ciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkpIikKIGRlZiB0ZXN0X2Fz
c2VydENvdW50RXF1YWwoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0Q291bnRFcXVhbCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtODg3LDcgKzk0Nyw3IEBA
IGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBUZXN0QXNzZXJ0Q291bnRFcXVhbCgn
dGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIGNsYXNzIFRlc3RBc3Nl
cnRSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAt
ODk5LDcgKzk1OSw3IEBAIGRlZiB0ZXN0X2Fzc2VydFJlZ2V4KCk6CiAgICAgVGVzdEFzc2VydFJl
Z2V4KCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9u
X2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2lu
Zm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2VydFJhaXNlc1JlZ2V4KCk6CiAgICAgY2xh
c3MgVGVzdEFzc2VydFJhaXNlc1JlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVm
IHRlc3Qoc2VsZik6CkBAIC05MzIsMyArOTkyLDYxIEBAIGRlZiB0ZXN0X3B5dGhvbl8yX3VuaWNv
ZGVfY29tcGF0aWJsZSgpOgogICAgICAgICBhc3NlcnQgc3RyKG15X3Rlc3QpID09IHNpeC51KCJo
ZWxsbyIpCiAKICAgICBhc3NlcnQgZ2V0YXR0cihzaXgubW92ZXMuYnVpbHRpbnMsICdieXRlcycs
IHN0cikobXlfdGVzdCkgPT0gc2l4LmIoImhlbGxvIikKKworCitjbGFzcyBFbnN1cmVUZXN0czoK
KworICAgICMgZ3Jpbm5pbmcgZmFjZSBlbW9qaQorICAgIFVOSUNPREVfRU1PSkkgPSBzaXgudSgi
XFUwMDAxRjYwMCIpCisgICAgQklOQVJZX0VNT0pJID0gYiJceGYwXHg5Zlx4OThceDgwIgorCisg
ICAgZGVmIHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVf
c3RyKDgpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfYW5kX2VuY29kaW5nKHNlbGYpOgorICAgICAg
ICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSdsYXRpbi0x
JywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVu
Y29kZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9F
TU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgICBkZWYgdGVz
dF9lbnN1cmVfYmluYXJ5X3JhaXNlKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9i
aW5hcnkoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0
JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0
cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VN
T0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAj
IFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0g
c2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBieXRlcworICAgICAgICAg
ICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFuZCBpc2lu
c3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBieXRlcykKKyAgICAgICAgICAgICMgUFkzOiBieXRl
cyAtPiBieXRlcworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgYnl0ZXMpCisKKyAg
ICBkZWYgdGVzdF9lbnN1cmVfc3RyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfc3RyKHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJy
b3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9zdHIo
c2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0JykKKyAg
ICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0cgorICAg
ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFu
ZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAjIFBZMjog
c3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2Vy
dCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2Uo
Y29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkzOiBieXRlcyAtPiBzdHIK
KyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYuVU5JQ09ERV9FTU9K
SSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorCisgICAgZGVmIHRlc3Rf
ZW5zdXJlX3RleHQoc2VsZik6CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3Vy
ZV90ZXh0KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJp
Y3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV90ZXh0KHNlbGYuQklO
QVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGlm
IHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiB1bmljb2RlCisgICAgICAg
ICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBp
c2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1bmljb2RlKQorICAgICAgICAgICAgIyBQWTI6
IHN0ciAtPiB1bmljb2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBz
ZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHVuaWNv
ZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzogc3RyIC0+IHN0cgorICAgICAg
ICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09ERV9FTU9KSSBhbmQg
aXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAgICAgIyBQWTM6IGJ5
dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5V
TklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9n
CmluZGV4IDcwOTRkZjgyMzQyMmVkNDgzMjAzZDU2N2EwN2I1YjhhNDIxMTkzMWQuLmYwZjIyY2Ey
ZDZjMzRjMzVhMzM4YWUxN2EyNzEyNDIxYTM1NWVjZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCkBAIC0xNyw3ICsxNyw2
IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVB
RE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Rv
eC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RveC5pbmkKaW5kZXggZTg2NzNkYjBhNjlhZTQ2OTVlN2IxZmExNTJjNTMzYWExYjBmOThkMS4u
YmJlYzFhZmJiNmRkMmZkNmMwNDIyZWQ4OTNlMDlhYTJmYzlmMzhjMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94
LmluaQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkz
NyxweXB5LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkzNixweTM3fS1teXB5
CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5MzUscHkzNixweTM3
LHB5Mzh9LWZsYWtlOCx7cHkzNSxweTM2LHB5MzcscHkzOH0tbXlweQogc2tpcHNkaXN0PVRydWUK
K3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQpA
QCAtMTQsNyArMTUsNyBAQCBkZXBzID0KICAganNvbi1lCiAgIGpzb25zY2hlbWEKIAotY29tbWFu
ZHMgPSBweXRlc3Qge3Bvc2FyZ3N9Citjb21tYW5kcyA9IHB5dGVzdCAtLWNvdj10b29scyAtLWNv
di1yZXBvcnQ9dGVybSB7cG9zYXJnc30KIAogcGFzc2VudiA9CiAgIEhZUE9USEVTSVNfUFJPRklM
RQpAQCAtMjcsMTUgKzI4LDE5IEBAIGNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17
dG94aW5pZGlyfS9weTI3LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzUtZmxh
a2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4
IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citj
b21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5p
bmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzYtZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5p
ZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVu
ZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52
OnB5MzctZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRz
ID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bv
c2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkz
LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CisKK1t0ZXN0ZW52OnB5MzgtZmxha2U4XQorZGVwcyA9IC1y
cmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZp
Zz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNS1t
eXB5XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC01NCwzICs1OSw5IEBAIGRl
cHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAogY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4K
IGNvbW1hbmRzID0KICAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0t
bm8taW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0
b29scy5naXRpZ25vcmUKKworW3Rlc3RlbnY6cHkzOC1teXB5XQorZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX215cHkudHh0CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29tbWFuZHMgPQorICBt
eXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAt
LXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKaW5kZXggYzRjMWJjMjVjOGZkNDg5MzQ2M2I0
ZTEzYmQ4YjU0N2U2N2ZjZWM2Ny4uYzY3MjI5NDA2YmFhMjczZTQ3YzhmOGU0ZWNiZTc0NDlhY2Q5
ZjljNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCkBAIC0yMCw3ICsyMCw3IEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTgu
aW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXRlc3QuaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRy
aXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQppbmRleCAw
YzViYmZmNTYyOTg2OGZkYzQ4YTFhNDFjZjg4MmZhYmU1NjE3YzFiLi42NThlZDBlMDBmOGEzNDQ5
NDE2NzNlZWQ2NzFiYTlkZTMxNzg1OGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKQEAgLTM3MywxMCArMzczLDggQEAgY2xh
c3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICBwb3J0LAogICAgICAgICAgICAg
ICAgICB1cmxfcHJlZml4PSIvIiwKICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPU5vbmUs
Ci0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVBy
b3RvY29sKAotICAgICAgICAgICAgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCwgdGltZW91dD10aW1l
b3V0KQorICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVByb3RvY29s
KGhvc3QsIHBvcnQsIHVybF9wcmVmaXgpCiAgICAgICAgIHNlbGYucmVxdWVzdGVkX2NhcGFiaWxp
dGllcyA9IGNhcGFiaWxpdGllcwogICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IE5vbmUKICAg
ICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNDQ2LDcgKzQ0NCw3IEBAIGNsYXNzIFNl
c3Npb24ob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2Vzc2lv
bl9pZCA9IE5vbmUKIAotICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmwsIGJv
ZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gdGhlIHJlbW90ZSBlbmQgYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgogCkBAIC00NjcsNyAr
NDY1LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYu
dHJhbnNwb3J0LnNlbmQoCiAgICAgICAgICAgICBtZXRob2QsIHVybCwgYm9keSwKICAgICAgICAg
ICAgIGVuY29kZXI9cHJvdG9jb2wuRW5jb2RlciwgZGVjb2Rlcj1wcm90b2NvbC5EZWNvZGVyLAot
ICAgICAgICAgICAgc2Vzc2lvbj1zZWxmKQorICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLCB0aW1l
b3V0PXRpbWVvdXQpCiAKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDoKICAgICAg
ICAgICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC00OTUsNyArNDkz
LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiB2YWx1ZQogCi0g
ICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJpLCBib2R5PU5vbmUp
OgorICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gYW4gZXN0YWJsaXNoZWQgc2Vzc2lvbiBhbmQgdmFsaWRhdGUgaXRzIHN1Y2Nlc3MuCiAKQEAg
LTUxMiw3ICs1MTAsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgICAgICBhbiBl
cnJvci4KICAgICAgICAgIiIiCiAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oInNlc3Np
b24vJXMvIiAlIHNlbGYuc2Vzc2lvbl9pZCwgdXJpKQotICAgICAgICByZXR1cm4gc2VsZi5zZW5k
X2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHkpCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29t
bWFuZChtZXRob2QsIHVybCwgYm9keSwgdGltZW91dCkKIAogICAgIEBwcm9wZXJ0eQogICAgIEBj
b21tYW5kCkBAIC03MzcsNiArNzM1LDEwIEBAIGNsYXNzIEVsZW1lbnQob2JqZWN0KToKICAgICBk
ZWYgc2VsZWN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21t
YW5kKCJHRVQiLCAic2VsZWN0ZWQiKQogCisgICAgQGNvbW1hbmQKKyAgICBkZWYgc2NyZWVuc2hv
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIs
ICJzY3JlZW5zaG90IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBu
YW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJh
dHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCAxOGEzZDUyYzhhM2I1MzdiYTc1ZDQ4
N2ZkN2Y2YzVjZGUyMDZlYzNlLi5jODExZjZmMjZkYjc5MDhjYWU1MjhkMDRkMjVkNjg4Mjc4NGU3
NGExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJp
dmVyL3Byb3RvY29sLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQganNvbgogCiBpbXBvcnQgd2Vi
ZHJpdmVyCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKKwogCiAiIiJXZWJEcml2ZXIgd2ly
ZSBwcm90b2NvbCBjb2RlY3MuIiIiCiAKQEAgLTM5LDUgKzQxLDUgQEAgY2xhc3MgRGVjb2Rlcihq
c29uLkpTT05EZWNvZGVyKToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3Qp
IGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoKICAgICAgICAgICAg
IHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24p
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAgICAgICAgIHJl
dHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBwYXlsb2FkLml0ZXJpdGVt
cygpfQorICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29rKHYpIGZvciBrLCB2
IGluIGl0ZXJpdGVtcyhwYXlsb2FkKX0KICAgICAgICAgcmV0dXJuIHBheWxvYWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5
CmluZGV4IDMyYmEzMWEyYWU5YTk5NmE1YzU3ZmQwNDA2MTI5M2YzMTdlNWJmMDQuLmY4MTdlYzgx
YTk2ZmI5M2NjNWM2MDE1NGYwNTdkNzJlOTgzNzU2OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSwxMiAr
MSwxMiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzZWxlY3QKKworZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZSwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5l
Y3Rpb24KIGZyb20gc2l4Lm1vdmVzLnVybGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudCBhcyBodHRwbGliCiAKIGZyb20gLiBpbXBv
cnQgZXJyb3IKIAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCiAiIiJJbXBsZW1lbnRzIEhU
VFAgdHJhbnNwb3J0IGZvciB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wuIiIiCiAKIApAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICMg
PT4gd2ViZHJpdmVyLkVsZW1lbnQKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0LCB1cmxfcHJlZml4PSIvIiwgdGltZW91dD1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIpOgogICAgICAgICAiIiIKICAgICAg
ICAgQ29uc3RydWN0IGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSByZW1vdGUg
c2VydmVyLgogCkBAIC04NSw5ICs4NSw4IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0
KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAg
ICAgICAgIHNlbGYudXJsX3ByZWZpeCA9IHVybF9wcmVmaXgKLQogICAgICAgICBzZWxmLl9jb25u
ID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dAorICAgICAgICBzZWxmLl9s
YXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToK
ICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMDIsMTEgKzEwMSwxMSBAQCBjbGFzcyBIVFRQV2ly
ZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICIiIkdldHMgdGhlIGN1cnJlbnQgSFRUUCBjb25u
ZWN0aW9uLCBvciBsYXppbHkgY3JlYXRlcyBvbmUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
b25uOgogICAgICAgICAgICAgY29ubl9rd2FyZ3MgPSB7fQotICAgICAgICAgICAgaWYgc2VsZi5f
dGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjb25uX2t3YXJnc1sidGltZW91
dCJdID0gc2VsZi5fdGltZW91dAotCi0gICAgICAgICAgICBzZWxmLl9jb25uID0gaHR0cGxpYi5I
VFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3Ry
aWN0PVRydWUsICoqY29ubl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBub3QgUFkzOgorICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJzdHJpY3QiXSA9IFRydWUKKyAgICAgICAgICAgICMgV2Ug
YXJlIG5vdCBzZXR0aW5nIGFuIEhUVFAgdGltZW91dCBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IHdo
ZW4gdGhlCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gaXRzIGNyZWF0ZWQuIFRoZSBzZW5kIG1l
dGhvZCBoYXMgYSB0aW1lb3V0IHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIHNlbGYuX2Nv
bm4gPSBIVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QsIHNlbGYucG9ydCwgKipjb25uX2t3YXJncykK
IAogICAgICAgICByZXR1cm4gc2VsZi5fY29ubgogCkBAIC0xMjQsNiArMTIzLDcgQEAgY2xhc3Mg
SFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgIGhlYWRlcnM9Tm9uZSwKICAg
ICAgICAgICAgICBlbmNvZGVyPWpzb24uSlNPTkVuY29kZXIsCiAgICAgICAgICAgICAgZGVjb2Rl
cj1qc29uLkpTT05EZWNvZGVyLAorICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAg
ICAgICAqKmNvZGVjX2t3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBTZW5kIGEgY29tbWFu
ZCB0byB0aGUgcmVtb3RlLgpAQCAtMTcyLDEwICsxNzIsMTggQEAgY2xhc3MgSFRUUFdpcmVQcm90
b2NvbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZhaWxlZCB0
byBlbmNvZGUgcmVxdWVzdCBib2R5IGFzIEpTT046XG4iCiAgICAgICAgICAgICAgICAgICAgICIl
cyIgJSBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKIAotICAgICAgICByZXNwb25zZSA9IHNl
bGYuX3JlcXVlc3QobWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnMpCisgICAgICAgICMgV2hl
biB0aGUgdGltZW91dCB0cmlnZ2VycywgdGhlIFRlc3RSdW5uZXJNYW5hZ2VyIHRocmVhZCB3aWxs
IHJldXNlCisgICAgICAgICMgdGhpcyBjb25uZWN0aW9uIHRvIGNoZWNrIGlmIHRoZSBXZWJEcml2
ZXIgaXRzIGFsaXZlIGFuZCB3ZSBtYXkgZW5kCisgICAgICAgICMgcmFpc2luZyBhbiBodHRwbGli
LkNhbm5vdFNlbmRSZXF1ZXN0IGV4Y2VwdGlvbiBpZiB0aGUgV2ViRHJpdmVyIGlzCisgICAgICAg
ICMgbm90IHJlc3BvbmRpbmcgYW5kIHRoaXMgaHR0cGxpYi5yZXF1ZXN0KCkgY2FsbCBpcyBibG9j
a2VkIG9uIHRoZQorICAgICAgICAjIHJ1bm5lciB0aHJlYWQuIFdlIHVzZSB0aGUgYm9vbGVhbiBi
ZWxvdyB0byBjaGVjayBmb3IgdGhhdCBhbmQgcmVzdGFydAorICAgICAgICAjIHRoZSBjb25uZWN0
aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQg
PSBUcnVlCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRob2QsIHVyaSwgcGF5
bG9hZCwgaGVhZGVycywgdGltZW91dD1Ob25lKQorICAgICAgICBzZWxmLl9sYXN0X3JlcXVlc3Rf
aXNfYmxvY2tlZCA9IEZhbHNlCiAgICAgICAgIHJldHVybiBSZXNwb25zZS5mcm9tX2h0dHAocmVz
cG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipjb2RlY19rd2FyZ3MpCiAKLSAgICBkZWYgX3JlcXVl
c3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIF9y
ZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUsIHRpbWVvdXQ9
Tm9uZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90eXBlKToKICAgICAg
ICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCkBAIC0xODUsMTAgKzE5
MywyMyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAKICAgICAgICAgdXJsID0g
c2VsZi51cmwodXJpKQogCi0gICAgICAgIGlmIHNlbGYuX2hhc191bnJlYWRfZGF0YSgpOgorICAg
ICAgICBpZiBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCBvciBzZWxmLl9oYXNfdW5yZWFk
X2RhdGEoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBwYXlsb2FkLCBoZWFkZXJzKQotICAgICAgICByZXR1
cm4gc2VsZi5jb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKKworICAgICAgICAjIHRpbWVvdXQgZm9y
IHJlcXVlc3QgaGFzIHRvIGJlIHNldCBqdXN0IGJlZm9yZSBjYWxsaW5nIGh0dHBsaWIuZ2V0cmVz
cG9uc2UoKQorICAgICAgICAjIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgcmVzdG9yZWQganVzdCBh
ZnRlciB0aGF0LCBldmVuIG9uIGV4Y2VwdGlvbiByYWlzZWQKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c190aW1lb3V0ID0gc2Vs
Zi5fY29ubi5nZXR0aW1lb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uLnNldHRpbWVv
dXQodGltZW91dCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5jb25uZWN0aW9uLmdldHJl
c3BvbnNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQ6CisgICAg
ICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0aW1lb3V0KHByZXZpb3VzX3RpbWVvdXQpCisKKyAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgX2hhc191bnJlYWRfZGF0YShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4gYW5kIHNlbGYuX2Nvbm4uc29jayBhbmQgc2VsZWN0
LnNlbGVjdChbc2VsZi5fY29ubi5zb2NrXSwgW10sIFtdLCAwKVswXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9p
ZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2FuZHJvaWQucHkKaW5kZXggNTFkZWI3MWUzMTY1MzgxNDhlMDZiMTQ2YmNhNzU1NWZiN2Iw
NDZkZi4uNzQ0ZTEzNGQzODI2ZWFmZmViYTYzODc3MTNhMmNiMTMyYWUxYTlkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
YW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CkBAIC04OSw4ICs4OSw4IEBAIGRlZiBpbnN0YWxsX2Fu
ZHJvaWRfcGFja2FnZXMobG9nZ2VyLCBzZGtfcGF0aCwgbm9fcHJvbXB0PUZhbHNlKToKIAogICAg
ICNUT0RPOiBOb3Qgc3VyZSB3aGF0J3MgcmVhbGx5IG5lZWRlZCBoZXJlCiAgICAgcGFja2FnZXMg
PSBbInBsYXRmb3JtLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAiYnVpbGQtdG9vbHM7MjguMC4z
IiwKLSAgICAgICAgICAgICAgICAicGxhdGZvcm1zO2FuZHJvaWQtMjgiLAorICAgICAgICAgICAg
ICAgICJidWlsZC10b29sczsyOS4wLjMiLAorICAgICAgICAgICAgICAgICJwbGF0Zm9ybXM7YW5k
cm9pZC0yOSIsCiAgICAgICAgICAgICAgICAgImVtdWxhdG9yIl0KIAogICAgICMgVE9ETzogbWFr
ZSB0aGlzIHdvcmsgbm9uLWludGVybmFjdGl2ZWx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nl
ci5weQppbmRleCAzZWU5OGQ5NTllYzViZWZjNThiODg0ZTBlYzUzODVkNTU0YmM4NzI1Li4zNjZk
Yzc4MWQ5MGVlMjFiODIwYjkzMzRjNjllZGUyYzQ1MWNiNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2Jyb3dzZXIucHkKQEAgLTYsMjAgKzYsMTkgQEAgaW1wb3J0IHN0YXQKIGltcG9ydCBlcnJu
bwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVybHBhcnNlCiBm
cm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5k
X2V4ZWN1dGFibGUKIAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxp
dAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gdXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIs
IHVuemlwCitmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwgdW56aXAKIAogdW5h
bWUgPSBwbGF0Zm9ybS51bmFtZSgpCiAKICMgdGhlIHJvb3RVcmwgZm9yIHRoZSBmaXJlZm94LWNp
IGRlcGxveW1lbnQgb2YgVGFza2NsdXN0ZXIKLSMgKGFmdGVyIE5vdmVtYmVyIDksIGh0dHBzOi8v
ZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5tb3ppbGxhLmNvbS8pCi1GSVJFRk9YX0NJX1JPT1RfVVJM
ID0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JworRklSRUZPWF9DSV9ST09UX1VSTCA9ICdodHRw
czovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20nCiAKIAogZGVmIF9nZXRfZmls
ZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CkBAIC00MSw2ICs0MCwyMyBAQCBkZWYgaGFu
ZGxlX3JlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBleGMpOgogICAgICAgICByYWlzZQogCiAK
K2RlZiBnZXRfZXh0KGZpbGVuYW1lKToKKyAgICAiIiJHZXQgdGhlIGV4dGVuc2lvbiBmcm9tIGEg
ZmlsZW5hbWUgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciAudGFyLmZvbyIiIgorICAgIG5hbWUs
IGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgaWYgbmFtZS5lbmRzd2l0aCgi
LnRhciIpOgorICAgICAgICBleHQgPSAiLnRhciVzIiAlIGV4dAorICAgIHJldHVybiBleHQKKwor
CitkZWYgZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KGluZGV4LCBwYXRoKToKKyAgICBUQ19JTkRF
WF9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL2luZGV4L3YxLyIKKworICAgIHJl
c3AgPSBnZXQoVENfSU5ERVhfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJSAoaW5kZXgs
IHBhdGgpKQorICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisKKyAgICByZXR1cm4gcmVzcAor
CisKIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQog
CkBAIC00OCw4ICs2NCwxMyBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
bG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZG93bmxvYWQo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgotICAgICAgICAiIiJEb3dubG9hZCBhIHBh
Y2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlciIiIgorICAgIGRlZiBkb3dubG9hZChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgorICAgICAgICAiIiJE
b3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlcgorICAgICAgICA6
cGFyYW0gZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHB1dCB0aGUgZG93bG9hZGVkIHBhY2th
Z2UKKyAgICAgICAgOnBhcmFtIGNoYW5uZWw6IEJyb3dzZXIgY2hhbm5lbCB0byBkb3dubG9hZAor
ICAgICAgICA6cGFyYW0gcmVuYW1lOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBw
YWNrYWdlOyB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGlz
IHByZXNlcnZlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAog
CiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0xMzMsNyArMTU0LDcgQEAgY2xhc3MgRmlyZWZveChC
cm93c2VyKToKIAogICAgICAgICByZXR1cm4gZGVzdAogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHByb2R1
Y3QgPSB7CiAgICAgICAgICAgICAibmlnaHRseSI6ICJmaXJlZm94LW5pZ2h0bHktbGF0ZXN0LXNz
bCIsCiAgICAgICAgICAgICAiYmV0YSI6ICJmaXJlZm94LWJldGEtbGF0ZXN0LXNzbCIsCkBAIC0x
NjEsNyArMTgyLDcgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0
dHBzOi8vZG93bmxvYWQubW96aWxsYS5vcmcvP3Byb2R1Y3Q9JXMmb3M9JXMmbGFuZz1lbi1VUyIg
JSAocHJvZHVjdFtjaGFubmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NfYnVpbGRzW29zX2tl
eV0pCiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIEZpcmVmb3ggZnJvbSAl
cyIgJSB1cmwpCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsKQorICAgICAgICByZXNw
ID0gZ2V0KHVybCkKIAogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKIApAQCAtMTcyLDExICsxOTMs
MTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lc1swXQogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZp
bGVuYW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlb
MV0KKyAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxl
bmFtZSA9ICJmaXJlZm94LnRhci5iejIiCiAKKyAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAg
ICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAocmVuYW1lLCBnZXRfZXh0KGZpbGVuYW1lKSkKKwogICAg
ICAgICBpbnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKIAogICAg
ICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CkBAIC0zNjMsMTQgKzM4
NywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICB0YWdzID0gY2FsbCgiZ2l0
IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAiLS1yZWZzIiwKICAgICAgICAgICAgICAgICAgICAg
Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyLmdpdCIpCiAgICAgICAgIHJl
bGVhc2VfcmUgPSByZS5jb21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4oXGQrKVwuKFxkKyki
KQotICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IDAKKyAgICAgICAgbGF0ZXN0X3JlbGVhc2UgPSAo
MCwwLDApCiAgICAgICAgIGZvciBpdGVtIGluIHRhZ3Muc3BsaXQoIlxuIik6CiAgICAgICAgICAg
ICBtID0gcmVsZWFzZV9yZS5tYXRjaChpdGVtKQogICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdyb3VwcygpXQorICAg
ICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gbS5ncm91
cHMoKSkKICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID4gbGF0ZXN0X3JlbGVhc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGxhdGVzdF9yZWxlYXNlID0gdmVyc2lvbgotICAgICAgICBhc3NlcnQg
bGF0ZXN0X3JlbGVhc2UgIT0gMAorICAgICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2UgIT0gKDAs
MCwwKQogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKICAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgpAQCAtMzk3LDMy
ICs0MjEsMzIgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgcmV0dXJuIGZpbmRf
ZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyIikpCiAKICAgICBkZWYg
aW5zdGFsbF9nZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgotICAgICAgICBpbXBvcnQg
dGFyZmlsZQotICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKICAgICAgICAgc2VsZi5sb2dnZXIu
aW5mbygiQXR0ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5pZ2h0bHkiKQorCisg
ICAgICAgIHBsYXRmb3JtX2JpdHMgPSAoIjY0IiBpZiB1bmFtZVs0XSA9PSAieDg2XzY0IiBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgKCIzMiIgaWYgc2VsZi5wbGF0Zm9ybSA9PSAid2lu
IiBlbHNlICIiKSkKKyAgICAgICAgdGNfcGxhdGZvcm0gPSAiJXMlcyIgJSAoc2VsZi5wbGF0Zm9y
bSwgcGxhdGZvcm1fYml0cykKKworICAgICAgICBhcmNoaXZlX2V4dCA9ICIuemlwIiBpZiB1bmFt
ZVswXSA9PSAiV2luZG93cyIgZWxzZSAiLnRhci5neiIKKyAgICAgICAgYXJjaGl2ZV9uYW1lID0g
InB1YmxpYy9nZWNrb2RyaXZlciVzIiAlIGFyY2hpdmVfZXh0CisKICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcyA9IG1vemRvd25sb2FkLkRhaWx5U2NyYXBlcihicmFuY2g9Im1vemlsbGEtY2Vu
dHJhbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bj0iY29tbW9uLnRlc3RzLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uPWRlc3QpCi0gICAgICAgICAgICBwYWNrYWdlX3BhdGggPSBz
LmRvd25sb2FkKCkKLSAgICAgICAgZXhjZXB0IG1vemRvd25sb2FkLmVycm9ycy5Ob3RGb3VuZEVy
cm9yOgorICAgICAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rlcl9hcnRpZmFjdCgKKyAgICAg
ICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5nZWNrb2RyaXZlci4l
cyIgJSB0Y19wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICBhcmNoaXZlX25hbWUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJHZWNrb2Ry
aXZlciBkb3dubG9hZCBmYWlsZWQiKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZXhlX3N1ZmZpeCA9ICIuZXhlIiBpZiB1bmFtZVswXSA9PSAiV2luZG93
cyIgZWxzZSAiIgotICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4ocGFja2FnZV9wYXRoLCAi
ciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtZW1i
ZXIgPSBmLmdldG1lbWJlcigiYmluJXNnZWNrb2RyaXZlciVzIiAlIChvcy5wYXRoLnNlcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlX3N1ZmZpeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAjIFJlbW92ZSBiaW4vIGZy
b20gdGhlIHBhdGguCi0gICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG1lbWJlci5uYW1lKQotICAgICAgICAgICAgICAgIGYuZXh0cmFjdGFsbChtZW1iZXJzPVtt
ZW1iZXJdLCBwYXRoPWRlc3QpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihk
ZXN0LCBtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkV4dHJhY3Rl
ZCBnZWNrb2RyaXZlciB0byAlcyIgJSBwYXRoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgb3MudW5saW5rKHBhY2thZ2VfcGF0aCkKKyAgICAgICAgaWYgYXJjaGl2ZV9leHQgPT0gIi56
aXAiOgorICAgICAgICAgICAgdW56aXAocmVzcC5yYXcsIGRlc3QpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB1bnRhcihyZXNwLnJhdywgZGVzdCkKKworICAgICAgICBleGVfZXh0ID0gIi5l
eGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyJXMiICUgZXhlX2V4dCkKKworICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJFeHRyYWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUgcGF0aCkKIAogICAg
ICAgICByZXR1cm4gcGF0aAogCkBAIC00NDEsMzAgKzQ2NSwxOSBAQCBjbGFzcyBGaXJlZm94QW5k
cm9pZChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImZpcmVmb3hfYW5kcm9pZCIKICAgICByZXF1
aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IgogCi0gICAgZGVmIGRvd25sb2Fk
KHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgaWYgZGVzdCBp
cyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAogCi0gICAgICAgIGlmIEZJUkVGT1hf
Q0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAgICAgICAgICAgICMg
Tk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgTm92ZW1iZXIgOSwgMjAx
OQotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJodHRwczovL3F1ZXVlLnRhc2tjbHVzdGVy
Lm5ldC92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gImh0dHBzOi8vaW5kZXgudGFz
a2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFRDX1FVRVVFX0JB
U0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvcXVldWUvdjEvIgotICAgICAgICAgICAg
VENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9pbmRleC92MS8iCi0K
LQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX0lOREVYX0JBU0UgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3Qu
bW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCi0gICAgICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1
cygpCi0gICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkKLSAgICAgICAgdGFza19pZCA9IGluZGV4
WyJ0YXNrSWQiXQogCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQoVENfUVVFVUVfQkFTRSAr
ICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKSkKLSAgICAg
ICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rl
cl9hcnRpZmFjdCgKKyAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxhLWNlbnRyYWwubGF0ZXN0
Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiLAorICAgICAgICAgICAgInB1YmxpYy9idWlsZC9n
ZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKIAotICAgICAgICBhcGtfcGF0aCA9IG9zLnBhdGgu
am9pbihkZXN0LCAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCisgICAgICAgIGZpbGVuYW1l
ID0gImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiCisgICAgICAgIGlmIHJlbmFtZToKKyAgICAg
ICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChmaWxlbmFtZSlbMV0p
CisgICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGZpbGVuYW1lKQogCiAgICAg
ICAgIHdpdGggb3BlbihhcGtfcGF0aCwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUo
cmVzcC5jb250ZW50KQpAQCAtNTAwLDcgKzUxMyw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICBwcm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRz
X2Nocm9tZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVs
PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwg
cmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC02NTgsNyArNjcx
LDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJhc2UoQnJvd3Nlcik6CiAgICAgICAgIHN1cGVyKENo
cm9tZUFuZHJvaWRCYXNlLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAgICAgIHNlbGYuZGV2
aWNlX3NlcmlhbCA9IE5vbmUKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTc2Niw3
ICs3NzksNyBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJjaHJv
bWVfaW9zIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hyb21lX2lvcy50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04MDIsNyArODE1LDcgQEAgY2xhc3Mg
T3BlcmEoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlVuYWJsZSB0byBm
aW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODc0LDcgKzg4Nyw3IEBAIGNsYXNzIEVkZ2VDaHJvbWl1
bShCcm93c2VyKToKICAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJpdmVyIgogICAgIHJl
cXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04ODgsMTEgKzkwMSwxMyBAQCBjbGFzcyBFZGdlQ2hyb21p
dW0oQnJvd3Nlcik6CiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAg
ICMgVXNlIHBhdGhzIGZyb20gZGlmZmVyZW50IEVkZ2UgY2hhbm5lbHMgc3RhcnRpbmcgd2l0aCBS
ZWxlYXNlXEJldGFcRGV2XENhbmFyeQogICAgICAgICAgICAgICAgIHdpbnBhdGhzID0gW29zLnBh
dGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZVxcQXBwbGlj
YXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMo
IiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNhdGlv
biIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZ
U1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxcQXBwbGljYXRp
b24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIERldlxcQXBwbGljYXRp
b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNh
dGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygi
JFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxc
QXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFu
ZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdl
IERldlxcQXBwbGljYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZSBTeFNcXEFwcGxp
Y2F0aW9uIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2Vy
KCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBwbGljYXRpb24iKV0K
ICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKGJpbmFyeW5hbWUsIG9zLnBh
dGhzZXAuam9pbih3aW5wYXRocykpCiAgICAgICAgIGlmIHNlbGYucGxhdGZvcm0gPT0gIm1hY29z
IjoKICAgICAgICAgICAgIGJpbmFyeW5hbWUgPSAiTWljcm9zb2Z0IEVkZ2UgQ2FuYXJ5IgpAQCAt
OTczLDcgKzk4OCw3IEBAIGNsYXNzIEVkZ2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJlZGdl
IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMDA3LDcgKzEwMjIsNyBAQCBjbGFzcyBJbnRlcm5ldEV4
cGxvcmVyKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiaWUiCiAgICAgcmVxdWlyZW1lbnRzID0g
InJlcXVpcmVtZW50c19pZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0x
MDM1LDcgKzEwNTAsNyBAQCBjbGFzcyBTYWZhcmkoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YWZhcmkiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYWZhcmkudHh0IgogCi0g
ICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTEwNSwxNCArMTEyMCwxNSBAQCBjbGFzcyBT
ZXJ2byhCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQuc2Vydm8ub3Jn
L25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRlbnNpb24pCiAgICAg
ICAgIHJldHVybiBnZXQodXJsKQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwg
Y2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRlc3QgaXMgTm9uZToK
ICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAogICAgICAgICByZXNwID0gc2VsZi5fZ2V0KGRl
c3QsIGNoYW5uZWwpCiAgICAgICAgIF8sIGV4dGVuc2lvbiwgXyA9IHNlbGYucGxhdGZvcm1fY29t
cG9uZW50cygpCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAic2Vydm8t
bGF0ZXN0JXMiICUgKGV4dGVuc2lvbiwpKSwgInciKSBhcyBmOgorICAgICAgICBmaWxlbmFtZSA9
IHJlbmFtZSBpZiByZW5hbWUgaXMgbm90IE5vbmUgZWxzZSAic2Vydm8tbGF0ZXN0IgorICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICIlcyVzIiAlIChmaWxlbmFtZSwgZXh0ZW5z
aW9uLCkpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHJlc3AuY29udGVudCkKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgpAQCAt
MTE1OSw3ICsxMTc1LDcgQEAgY2xhc3MgU2F1Y2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YXVjZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhdWNlLnR4dCIKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExODQsNyArMTIwMCw3IEBAIGNsYXNzIFdlYktp
dChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC0xMjUwLDcgKzEyNjYsNyBAQCBjbGFzcyBFcGlwaGFueShCcm93c2VyKToKICAgICBwcm9kdWN0
ID0gImVwaXBoYW55IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZXBpcGhhbnku
dHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1O
b25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNv
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L2NvbW1hbmRzLmpzb24KaW5kZXggNjBmZTE2MjFhZjBkZWNkMGZhYTQzNGYyNmRjYmE5OTUxNTQx
NzNlNy4uYTQ3YWI0MGQ3Mjg0N2Q1ZjUzNmUwYWMyZTAyZWIzZmUwZmVhMjMzYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
Y29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCkBAIC01Miw3ICs1Miw2IEBACiAgICAgInBh
cnNlciI6ICJnZXRfcGFyc2VyIiwKICAgICAiaGVscCI6ICJJbnN0YWxsIGJyb3dzZXIgY29tcG9u
ZW50cyIsCiAgICAgImluc3RhbGwiOiBbCi0gICAgICAibW96ZG93bmxvYWQiLAogICAgICAgIm1v
emluc3RhbGwiCiAgICAgXQogICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKaW5k
ZXggMjQ5MTVmMGM5OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4Yy4uNmViNTlmODE0YmYw
OGQxMzlkNTk3YTRiNGIyNmE3ZDdhYTkyMGZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0
YWxsLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYnJvd3Nlcgog
aW1wb3J0IHN5cwotCitmcm9tIC4gaW1wb3J0IGJyb3dzZXIKIAogbGF0ZXN0X2NoYW5uZWxzID0g
ewogICAgICdmaXJlZm94JzogJ25pZ2h0bHknLApAQCAtNDQsNiArNDMsOSBAQCBkZWYgZ2V0X3Bh
cnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93c2VyIHJlbGVhc2Ug
b24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRv
d25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQgZG9uJ3QgaW5zdGFs
bCBpdCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZW5hbWUnLCBhY3Rpb249InN0b3Jl
IiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRmlsZW5hbWUs
IGV4Y2x1ZGluZyBleHRlbnNpb24gZm9yIGRvd25sb2FkZWQgYXJjaGl2ZSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiKG9ubHkgd2l0aCAtLWRvd25sb2FkLW9ubHkpIikKICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctZCcsICctLWRlc3RpbmF0aW9uJywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2ZpbGVzeXN0ZW0gZGlyZWN0b3J5IHRvIHBsYWNlIHRoZSBjb21wb25lbnQnKQog
ICAgIHJldHVybiBwYXJzZXIKQEAgLTc2LDEwICs3OCwxMSBAQCBkZWYgcnVuKHZlbnYsICoqa3dh
cmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIC0tZGVz
dGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52aXJvbm1lbnQiKQog
CiAgICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBkZXN0aW5hdGlvbiwg
Y2hhbm5lbCwKLSAgICAgICAgICAgIGRvd25sb2FkX29ubHk9a3dhcmdzWyJkb3dubG9hZF9vbmx5
Il0pCisgICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxvYWRfb25seSJdLCBy
ZW5hbWU9a3dhcmdzWyJyZW5hbWUiXSkKIAogCi1kZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQs
IGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sb2FkX29u
bHk9RmFsc2UpOgorZGVmIGluc3RhbGwobmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbiwgY2hh
bm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9hZF9vbmx5PUZhbHNlLAorICAgICAg
ICAgICAgcmVuYW1lPU5vbmUpOgogICAgIGlmIGxvZ2dlciBpcyBOb25lOgogICAgICAgICBpbXBv
cnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaW5zdGFsbCIp
CkBAIC05MSw2ICs5NCw5IEBAIGRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRp
b24sIGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvCiAKICAgICBzdWJjbGFz
cyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5cy5zdGRvdXQud3JpdGUo
J05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBvbmVudCkpCi0gICAgcGF0
aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3RpbmF0aW9uLCBj
aGFubmVsPWNoYW5uZWwpCisgICAga3dhcmdzID0ge30KKyAgICBpZiBkb3dubG9hZF9vbmx5IGFu
ZCByZW5hbWU6CisgICAgICAgIGt3YXJnc1sicmVuYW1lIl0gPSByZW5hbWUKKyAgICBwYXRoID0g
Z2V0YXR0cihzdWJjbGFzcyhsb2dnZXIpLCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24sIGNoYW5u
ZWw9Y2hhbm5lbCwgKiprd2FyZ3MpCiAgICAgaWYgcGF0aDoKICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBkb3dubG9hZF9vbmx5
IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKaW5kZXggMzU4
NjdjNGNjYmZlOTVjNGU3MWE4ZDcxY2U5MGE3YjM3ODk1MWZkNS4uNmIwOWNjOGJkYWJlYzljNmEz
NmVlMjU3MjkzYmU5MDJjNzk4YjE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKQEAgLTIsNSAr
Miw2IEBAIHRvb2xzL2NpLwogdG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8KIHRvb2xzL21hbmlm
ZXN0LwordG9vbHMvcXVpYy8KIHRvb2xzL3NlcnZlLwogdG9vbHMvd3B0LwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVx
dWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKaW5kZXggNTY2MDgzY2I2YmU4OWEwM2U0OGNj
NWMxYTBhODhmYzVjZTUzYTg1My4uM2JhZWZhNTBlYTk4MTk3NGJlNjZiNmUyMjZlMDUwZTU5ZTAz
NGMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CkBAIC0x
ICsxLDIgQEAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3RzPT0yLjIzLjAKK21vemluZm89PTEu
Mi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEy
MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CmluZGV4IGM0Y2JjMjk0M2I3Y2UwMmVm
MmE1OGY2NWQzNGFiNzE3YmZiMGM5ODEuLjE4OTNmZGVmYTgzNDZlOGY5NjllNDE3ODlkZjZlM2Rk
ZDg1NDA2MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQpAQCAtMTA2LDExICsx
MDYsMTQgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWF4aW11bSBudW1iZXIgb2YgcmV2
aXNpb25zIHRvIGJlIHJldHVybmVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRoZSBjb21tYW5kIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBoZWxwPSJkZWJ1ZyBsb2dnaW5nIikKICAgICByZXR1cm4gcGFyc2Vy
CiAKIAogZGVmIHJ1bl9yZXZfbGlzdCgqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+
IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KCd2ZXJib3NlJyk6CisgICAgICAgIGxvZ2dlci5zZXRM
ZXZlbChsb2dnaW5nLkRFQlVHKQogICAgICMgImVwb2NoX3RocmVzaG9sZCIgaXMgYSBzYWZldHkg
bWFyZ2luLiBBZnRlciB0aGlzIHRpbWUgaXQgaXMgZmluZSB0bwogICAgICMgYXNzdW1lIHRoYXQg
YW55IHRhZ3MgYXJlIGNyZWF0ZWQgYW5kIHB1c2hlZC4KICAgICBlcG9jaF90aHJlc2hvbGQgPSA2
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCAwYzczMmU3YWU4YWVlN2Q0NDEwMTU2NDJi
YThmMmZjYmQ3ZTY2ZTBlLi5hOWZkZWFkYTFlYzc4MGE1MDA5M2YyMjE2NzNjZjQwNjg2NGUzNmMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0xODMsNiArMTgzLDE2IEBAIGNsYXNzIEJy
b3dzZXJTZXR1cChvYmplY3QpOgogICAgIGRlZiBzZXR1cChzZWxmLCBrd2FyZ3MpOgogICAgICAg
ICBzZWxmLnNldHVwX2t3YXJncyhrd2FyZ3MpCiAKK2RlZiBzYWZlX3Vuc2V0ZW52KGVudl92YXIp
OgorICAgICIiIlNhZmVseSByZW1vdmUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICBQ
eXRob24zIGRvZXMgbm90IHN1cHBvcnQgb3MudW5zZXRlbnYgaW4gV2luZG93cyBmb3IgcHl0aG9u
PDMuOSwgc28gd2UgYmV0dGVyCisgICAgcmVtb3ZlIHRoZSB2YXJpYWJsZSBkaXJlY3RseSBmcm9t
IG9zLmVudmlyb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBkZWwgb3MuZW52aXJvbltl
bnZfdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwogCiBjbGFzcyBGaXJl
Zm94KEJyb3dzZXJTZXR1cCk6CiAgICAgbmFtZSA9ICJmaXJlZm94IgpAQCAtMjQzLDkgKzI1Myw5
IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlhIHlvdXIgT1MgcGFja2FnZSBtYW5h
Z2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSdW5uaW5nIGlu
IGhlYWRsZXNzIG1vZGUsIHBhc3MgLS1uby1oZWFkbGVzcyB0byBkaXNhYmxlIikKIAogICAgICAg
ICAjIFR1cm4gb2ZmIEZpcmVmb3ggV2ViUlRDIElDRSBsb2dnaW5nIG9uIFdQVCAodHVybmVkIG9u
IGJ5IG1venJ1bm5lcikKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0xFVkVMJykKLSAgICAg
ICAgb3MudW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKLSAgICAgICAgb3MudW5zZXRlbnYo
J1JfTE9HX1ZFUkJPU0UnKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19MRVZFTCcpCisg
ICAgICAgIHNhZmVfdW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKKyAgICAgICAgc2FmZV91
bnNldGVudignUl9MT0dfVkVSQk9TRScpCiAKICAgICAgICAgIyBBbGxvdyBXZWJSVEMgdGVzdHMg
dG8gY2FsbCBnZXRVc2VyTWVkaWEuCiAgICAgICAgIGt3YXJnc1siZXh0cmFfcHJlZnMiXS5hcHBl
bmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCkBAIC03MDUsOCArNzE1LDkg
QEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0
ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVudiwgcHJvbXB0PVRy
dWUsIGluc3RhbGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgogICAgIGZyb20gd3B0cnVubmVy
IGltcG9ydCB3cHRjb21tYW5kbGluZQorICAgIGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAot
ICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhrd2FyZ3MuaXRlcml0ZW1zKCkpCisgICAga3dhcmdz
ID0gdXRpbHMuS3dhcmdzKGl0ZXJpdGVtcyhrd2FyZ3MpKQogCiAgICAgcHJvZHVjdF9wYXJ0cyA9
IGt3YXJnc1sicHJvZHVjdCJdLnNwbGl0KCI6IikKICAgICBrd2FyZ3NbInByb2R1Y3QiXSA9IHBy
b2R1Y3RfcGFydHNbMF0ucmVwbGFjZSgiLSIsICJfIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RmaWxlcy5weQppbmRleCBjZjEyYTU5YzhlNjhhNzBmNzgyNTYzYTgxYzE1MTEyNDI5NjJlZGYz
Li5mMjk2MGU4ZjUxZTQ0NWUzZjZmNTNiYThlN2MwMTQ1YWE1MDcyMDM4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdGZpbGVzLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAgZGVmIGFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtUZXh0XQogICAgIG5v
bnRlc3RzX2NoYW5nZWQgPSBzZXQoZmlsZXNfY2hhbmdlZCkKICAgICB3cHRfbWFuaWZlc3QgPSBs
b2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIG1hbmlmZXN0X3VwZGF0ZSkKIAotICAgIHRlc3Rf
dHlwZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0KKyAgICB0ZXN0X3R5
cGVzID0gWyJjcmFzaHRlc3QiLCAidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQog
ICAgIHN1cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQogICAgICAg
ICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0ZXJ0eXBlcygi
c3VwcG9ydCIpfQogICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9v
dCwgcGF0aCkKQEAgLTI3OCw4ICsyNzgsOCBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVz
X2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgICAgICAgICBmdWxsX3BhdGgg
PSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHJlcG9fcGF0aFsxOl0ucmVwbGFjZSgiLyIsIG9zLnBh
dGguc2VwKSkKICAgICAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzLmFkZCgoZnVsbF9wYXRoLCBy
ZXBvX3BhdGgpKQogCi0gICAgaW50ZXJmYWNlX25hbWUgPSBsYW1iZGEgeDogb3MucGF0aC5zcGxp
dGV4dChvcy5wYXRoLmJhc2VuYW1lKHgpKVswXQotICAgIGludGVyZmFjZXNfY2hhbmdlZF9uYW1l
cyA9IG1hcChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlc19jaGFuZ2VkKQorICAgIGludGVyZmFj
ZXNfY2hhbmdlZF9uYW1lcyA9IFtvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaW50
ZXJmYWNlKSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGludGVyZmFj
ZSBpbiBpbnRlcmZhY2VzX2NoYW5nZWRdCiAKICAgICBkZWYgYWZmZWN0ZWRfYnlfd2RzcGVjKHRl
c3QpOgogICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKQEAgLTMyNCw5ICszMjQsOSBAQCBk
ZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1Rl
eHRdCiAKICAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwgInJiIikgYXMgZmg6
CiAgICAgICAgICAgICAgICAgcmF3X2ZpbGVfY29udGVudHMgPSBmaC5yZWFkKCkgICMgdHlwZTog
Ynl0ZXMKLSAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJc
eGZlXHhmZiIpOgorICAgICAgICAgICAgICAgIGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZlXHhmZiIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikgICMgdHlwZTogVGV4
dAotICAgICAgICAgICAgICAgIGVsaWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhm
Zlx4ZmUiKToKKyAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZmXHhmZSIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVf
Y29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQpAQCAtMzk2LDcgKzM5Niw3IEBAIGRl
ZiBydW5fY2hhbmdlZF9maWxlcygqKmt3YXJncyk6CiAgICAgc2VwYXJhdG9yID0gIlwwIiBpZiBr
d2FyZ3NbIm51bGwiXSBlbHNlICJcbiIKIAogICAgIGZvciBpdGVtIGluIHNvcnRlZChjaGFuZ2Vk
KToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvcy5wYXRoLnJlbHBhdGgoaXRlbS5lbmNvZGUo
InV0ZjgiKSwgd3B0X3Jvb3QpICsgc2VwYXJhdG9yKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KG9zLnBhdGgucmVscGF0aChzaXguZW5zdXJlX3N0cihpdGVtKSwgd3B0X3Jvb3QpICsgc2VwYXJh
dG9yKQogCiAKIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4IDI1YjY2ZTdkOTIy
ZjU0ZWRmMTk3YmFhYWY0MmMyNmM5ZmNlMDQ2MjEuLmU3YzMyYTM2MjExODYwODYxMDJkNWI0NGFh
ZGUzYzdmMTc1ZjA3YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90
ZXN0X2Jyb3dzZXIucHkKQEAgLTE1LDExICsxNSwxMSBAQCBkZWYgdGVzdF9zYWZhcmlfdmVyc2lv
bihtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBzYWZhcmkgPSBicm93c2VyLlNhZmFyaShsb2dn
ZXIpCiAKICAgICAjIFNhZmFyaQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJworICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNhZmFyaSAxMi4xICgx
NDYwNy4xLjExKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0i
c2FmYXJpZHJpdmVyIikgPT0gJzEyLjEgKDE0NjA3LjEuMTEpJwogCiAgICAgIyBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3Ci0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
SW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYw
Ny4xLjkuMC4xKScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInSW5j
bHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYwNy4x
LjkuMC4xKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2Fm
YXJpZHJpdmVyIikgPT0gJ1RlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2MDcuMS45
LjAuMSknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBAIC0zMCwx
MSArMzAsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3ZlcnNpb25fZXJyb3JzKG1vY2tlZF9jaGVja19v
dXRwdXQpOgogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYHNh
ZmFyaWRyaXZlciAtLXZlcnNpb25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnJldHVybl92YWx1ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2VkX2NoZWNrX291dHB1
dC5yZXR1cm5fdmFsdWUgPSBiJ2dpYmJlcmlzaCcKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24o
d2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCiAgICAgIyBgc2FmYXJp
ZHJpdmVyIC0tdmVyc2lvbmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIFNhZmFyaSA8PTEyLjApCi0g
ICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZHVtbXknCisgICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15JwogICAgIG1vY2tlZF9jaGVja19v
dXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigxLCAnY21k
JykKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJp
dmVyIikgaXMgTm9uZQogCkBAIC00NCwxMSArNDQsMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21p
bmlicm93c2VyX3ZlcnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgd2Via2l0Z3RrX21p
bmlicm93c2VyID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3Nlcihsb2dnZXIpCiAKICAgICAj
IHN0YWJsZSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
V2ViS2l0R1RLIDIuMjYuMVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gYidXZWJLaXRHVEsgMi4yNi4xXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nl
ci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNi4xJwogCiAgICAgIyBuaWdo
dGx5IHZlcnNpb24KLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdXZWJL
aXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJu
X3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJwogICAgIGFzc2VydCB3ZWJr
aXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgPT0gJzIuMjcu
MSAocjI1MDgyMyknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBA
IC01OSwxMSArNTksMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmlicm93c2VyX3ZlcnNpb25f
ZXJyb3JzKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2VyIC0tdmVyc2lvbmAg
cmV0dXJuIGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0g
J2dpYmJlcmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInZ2li
YmVyaXNoJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9
J01pbmlCcm93c2VyJykgaXMgTm9uZQogCiAgICAgIyBgTWluaUJyb3dzZXIgLS12ZXJzaW9uYCBm
YWlscyAoYXMgaXQgZG9lcyBmb3IgTWluaUJyb3dzZXIgPD0gMi4yNi4wKQotICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1vY2tlZF9jaGVja19vdXRw
dXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnNpZGVf
ZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpCiAgICAgYXNz
ZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSBp
cyBOb25lCiAKQEAgLTkzLDExICs5MywxMSBAQCBkZWYgdGVzdF93ZWJraXRndGtfbWluaWJyb3dz
ZXJfZmluZF9iaW5hcnkobW9ja2VkX29zX3BhdGhfaXNmaWxlKToKICAgICAjIEZvdW5kIG9uIHRo
ZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBTUQ2NCAoZ2NjIGF2YWlsYWJsZSBidXQgZ2l2ZXMg
YW4gZXJyb3IpCiAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQgPSAnL3Vzci9saWIv
eDg2XzY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICBtb2NrZWRf
b3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgcGF0aDogcGF0aCBpbiBbZGViaWFu
X21pbmlicm93c2VyX3BhdGhfYW1kNjQsICcvdXNyL2Jpbi9nY2MnXQotICAgIHdpdGggbW9jay5w
YXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSAnZXJyb3InLCBz
aWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKSk6Cisg
ICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1
ZSA9IGInZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
KDEsICdjbWQnKSk6CiAgICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIuZmluZF9i
aW5hcnkoKSA9PSBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NAogCiAgICAgICAgICMgRm91
bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFSTTY0IChnY2MgYXZhaWxhYmxlKQog
ICAgICAgICBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCA9ICcvdXNyL2xpYi9hYXJjaDY0
LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICAgICAgbW9ja2VkX29z
X3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGggaW4gW2RlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICAgICAgd2l0aCBtb2Nr
LnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1ZSA9ICdhYXJjaDY0
LWxpbnV4LWdudScpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tf
b3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidhYXJjaDY0LWxpbnV4LWdudScpOgogICAgICAgICAg
ICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgpID09IGRlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9tYXJrZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5YWQ5YzQ4OTA2NzY2NjI0ZWM1OTRj
OTk0ZDUyZTcwYzk2ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQpA
QCAtMCwwICsxLDM1IEBACitmcm9tIHRvb2xzLndwdCBpbXBvcnQgbWFya2Rvd24KKworZGVmIHRl
c3RfZm9ybWF0X2NvbW1lbnRfdGl0bGUoKToKKyAgICBhc3NlcnQgJyMgQnJvd3NlciAjJyA9PSBt
YXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgiYnJvd3NlciIpCisgICAgYXNzZXJ0ICcjIEJy
b3dzZXIgKGNoYW5uZWwpICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50X3RpdGxlKCJicm93
c2VyOmNoYW5uZWwiKQorCitkZWYgdGVzdF9tYXJrZG93bl9hZGp1c3QoKToKKyAgICBhc3NlcnQg
dSdcXHQnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHQnKQorICAgIGFzc2VydCB1J1xc
cicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdccicpCisgICAgYXNzZXJ0IHUnXFxuJyA9
PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1xuJykKKyAgICBhc3NlcnQgdScnID09IG1hcmtk
b3duLm1hcmtkb3duX2FkanVzdCgnYCcpCisgICAgYXNzZXJ0IHUnXFx8JyA9PSBtYXJrZG93bi5t
YXJrZG93bl9hZGp1c3QoJ3wnKQorICAgIGFzc2VydCB1J1xcdFxcclxcblxcfCcgPT0gbWFya2Rv
d24ubWFya2Rvd25fYWRqdXN0KCdcdFxyXG5gfCcpCisKK3Jlc3VsdCA9ICcnCitkZWYgbG9nKHRl
eHQpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICByZXN1bHQgKz0gdGV4dAorCitkZWYgdGVzdF90
YWJsZSgpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICBoZWFkaW5ncyA9IFsnaDEnLCdoMiddCisg
ICAgZGF0YSA9IFtbJzAnLCAnMSddXQorICAgIG1hcmtkb3duLnRhYmxlKGhlYWRpbmdzLCBkYXRh
LCBsb2cpCisgICAgYXNzZXJ0ICgifCBoMSB8IGgyIHwiCisgICAgICAgICAgICAifC0tLS18LS0t
LXwiCisgICAgICAgICAgICAifCAwICB8IDEgIHwiKSA9PSByZXN1bHQKKworICAgIHJlc3VsdCA9
ICcnCisgICAgZGF0YS5hcHBlbmQoWydhYWEnLCAnYmInXSkKKyAgICBtYXJrZG93bi50YWJsZSho
ZWFkaW5ncywgZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgIGgxIHwgaDIgfCIKKyAgICAgICAg
ICAgICJ8LS0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICAgfCAxICB8IgorICAgICAgICAg
ICAgInwgYWFhIHwgYmIgfCIpID09IHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF9yZXZsaXN0LnB5CmluZGV4IGVjMmE2Yjg5OWQ1ZDFhOTI3ZGNhZDFmOWE3
NTgzZjk4N2EzYWQ5NDcuLjMwMjA4ZjRjZjY4ZDc5NTk2NmU3ODU4ZGFhMDczMGI2OGZhM2U5MGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkK
QEAgLTExLDEwICsxMSwxMyBAQCBkZWYgdGVzdF9jYWxjdWxhdGVfY3V0b2ZmX2RhdGUoKToKIAog
CiBkZWYgdGVzdF9wYXJzZV9lcG9jaCgpOgotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2No
KGIiMTBoIikgPT0gMzYwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaChiIjEwZCIp
ID09IDg2NDAwMAotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIiMTB3IikgPT0gNjA0
ODAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGgiKSA9PSAzNjAwMAorICAg
IGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGQiKSA9PSA4NjQwMDAKKyAgICBhc3NlcnQg
cmV2bGlzdC5wYXJzZV9lcG9jaCgiMTB3IikgPT0gNjA0ODAwMAogCitkZWYgY2hlY2tfcmV2aXNp
b25zKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6CisgICAgZm9yIHRhZ2dl
ZCwgZXhwZWN0ZWQgaW4gemlwKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6
CisgICAgICAgIGFzc2VydCB0YWdnZWQgPT0gZXhwZWN0ZWQKIAogQG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JykKIGRlZiB0ZXN0X2dldF9lcG9jaF9yZXZpc2lvbnMobW9ja2Vk
X2NoZWNrX291dHB1dCk6CkBAIC01MCwxNiArNTMsOSBAQCBtZXJnZV9wcl9DIEMgNDc1MjAwIF90
dWVfCiBtZXJnZV9wcl9CIEIgNDUzNjAwIF90dWVfCiBtZXJnZV9wcl9BIEEgMzg4ODAwIF9tb25f
CiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMo
ZXBvY2gsIHVudGlsLCA4KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdO
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdNJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdLJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdKJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4
dCgpID09ICdBJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5nZXRf
ZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgOCkKKyAgICBjaGVja19yZXZpc2lvbnModGFn
Z2VkX3JldmlzaW9ucywgWydOJywgJ00nLCAnSycsICdKJywgJ0cnLCAnRicsICdDJywgJ0EnXSkK
KyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9y
IGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBlbm91Z2ggY2FuZGlk
YXRlIGl0ZW1zIGluIHRoZSByZXZpc2lvbiBsaXN0CkBAIC04MiwxMyArNzgsOSBAQCBtZXJnZV9w
cl9EIEQgNjQ4MDAwIF90aHVfCiBtZXJnZV9wcl9DIEMgNTYxNjAwIF93ZWRfCiBtZXJnZV9wcl9C
IEIgNDc1MjAwIF90aHVfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9l
cG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNv
bnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdG
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdFJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdEJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdDJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAw
ICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVja19yZXZpc2lvbnMo
dGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnLCAnRScsICdEJywgJ0MnXSkKKyAgICBhc3NlcnQg
bGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAog
CiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBsZXNzIHJldHVybmVkIGNhbmRpZGF0ZXMg
aXRlbXMgdGhhbiB0aGUgbmVlZGVkCkBAIC0xMDcsMTAgKzk5LDkgQEAgbWVyZ2VfcHJfSCBIIDk5
MzYwMCBfbW9uXwogbWVyZ2VfcHJfRyBHIDkwNzIwMCBfc3VuXwogbWVyZ2VfcHJfRiBGIDgyMDgw
MCBfc2F0XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2
aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQo
KSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBh
c3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVz
dGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhl
cG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsn
RycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogaW5pdGlhbCB1bnRpbCB2YWx1
ZSBpcyBvbiBhbiBlcG9jaCBib3VuZGFyeQpAQCAtMTM0LDEwICsxMjUsOSBAQCBtZXJnZV9wcl9I
IEggMTI5NjAwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1MDQwMCBfbW9uXwogbWVyZ2VfcHJfRiBG
IDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBv
Y2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25z
Lm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicK
LSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3Ig
ZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3Jldmlz
aW9ucyhlcG9jaCwgdW50aWwsIDMpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lv
bnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9
PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogdW50aWwgYWxpZ25l
ZCB3aXRoIE1vbmRheSwgNSBKYW51YXJ5IDE5NzAgMDowMDowMCAoMzQ1NjAwKQpAQCAtMTU4LDYg
KzE0OCw2IEBAIG1lcmdlX3ByX0ggSCAxMTgwODAwIF93ZWRfCiBtZXJnZV9wcl9HIEcgOTUwNDAw
IF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNv
bnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAxKQotICAgIGFz
c2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0
YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRf
cmV2aXNpb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMSkK
KyAgICBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydGJ10pCisgICAgYXNzZXJ0
IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkK
aW5kZXggMzMxMzVkZmRjMmQ1YjVhZTBjNzIyZGNlMzRmMzViNTgxMjdiZjMzOS4uOWZkNmM2Zjli
ODUxNTM3ZGYwNDQyODYxMjNiYTY0YzliM2UxOWU4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKQEAgLTEsNSArMSw3IEBACitpbXBv
cnQgb3MucGF0aAogZnJvbSBtb2NrIGltcG9ydCBwYXRjaAogCitmcm9tIHRvb2xzLm1hbmlmZXN0
Lm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAogZnJvbSB0b29scy53cHQgaW1wb3J0IHRlc3RmaWxl
cwogCiAKQEAgLTExLDMgKzEzLDM0IEBAIGRlZiB0ZXN0X2dldHJldmlzaF9rd2FyZygpOgogZGVm
IHRlc3RfZ2V0cmV2aXNoX2ltcGxpY2l0KCk6CiAgICAgd2l0aCBwYXRjaCgidG9vbHMud3B0LnRl
c3RmaWxlcy5icmFuY2hfcG9pbnQiLCByZXR1cm5fdmFsdWU9dSJiYXNlIik6CiAgICAgICAgIGFz
c2VydCB0ZXN0ZmlsZXMuZ2V0X3JldmlzaCgpID09IGIiYmFzZS4uSEVBRCIKKworCitkZWYgdGVz
dF9hZmZlY3RlZF90ZXN0ZmlsZXMoKToKKyAgICBtYW5pZmVzdF9qc29uID0geworICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogeworICAgICAgICAgICAgICAgICJh
IjogeworICAgICAgICAgICAgICAgICAgICAiYiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJjIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28tY3Jhc2guaHRtbCI6IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjZGVmZ2gxMjM0NTYiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bGwiLCB7fV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAidXJsX2Jhc2UiOiAiLyIsCisgICAgICAgICJ2ZXJzaW9uIjogOCwKKyAgICB9CisgICAg
bWFuaWZlc3QgPSBNYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBtYW5pZmVzdF9qc29uKQorICAgIHdp
dGggcGF0Y2goInRvb2xzLndwdC50ZXN0ZmlsZXMubG9hZF9tYW5pZmVzdCIsIHJldHVybl92YWx1
ZT1tYW5pZmVzdCk6CisgICAgICAgICMgRGVwZW5kZW50IGFmZmVjdGVkIHRlc3RzIGFyZSBkZXRl
cm1pbmVkIGJ5IHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0sCisgICAgICAgICMgd2hpY2ggZG9lc24n
dCB3b3JrIGluIG91ciB0ZXN0IHNldHVwLiBXZSB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yCisgICAg
ICAgICMgdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyBvciBoYXZlIGEgbW9yZSBjb21wbGV4
IHRlc3Qgc2V0dXAgdG8KKyAgICAgICAgIyBzdXBwb3J0IHRlc3RpbmcgdGhvc2UuCisgICAgICAg
IGZ1bGxfdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgdGVzdGZpbGVzLndw
dF9yb290LCAiYSIsICJiIiwgImMiLCAiZm9vLWNyYXNoLmh0bWwiKQorICAgICAgICB0ZXN0c19j
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyhbZnVsbF90ZXN0X3BhdGhd
KQorICAgICAgICBhc3NlcnQgdGVzdHNfY2hhbmdlZCA9PSBzZXQoW2Z1bGxfdGVzdF9wYXRoXSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKaW5kZXggNjU2OTU4
MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4Ni4uZjg5N2I2ODhhZDZmNjgyYmU5ZDc2
OWRhOTg1NzljNzg4NTA1YzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF93cHQucHkKQEAgLTEsMTIgKzEsMTggQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCi1pbXBvcnQg
dXJsbGliMgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3Blbgor
ICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvcgorZXhjZXB0IEltcG9ydEVycm9y
OgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgVVJMRXJyb3IKIAogaW1wb3J0IHB5
dGVzdAogCkBAIC0zOCw2ICs0NCw5IEBAIGRlZiBnZXRfcGVyc2lzdGVudF9tYW5pZmVzdF9wYXRo
KCk6CiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQogZGVm
IGluaXRfbWFuaWZlc3QoKToKKyAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHlwYS92aXJ0
dWFsZW52L2lzc3Vlcy8xNzEwCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzIGFuZCBw
bGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgIHB5dGVzdC54ZmFpbChyZWFz
b249InZpcnR1YWxlbnYgYWN0aXZhdGlvbiBmYWlscyBpbiBXaW5kb3dzIGZvciBweXRob24zIikK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAg
d3B0Lm1haW4oYXJndj1bIm1hbmlmZXN0IiwgIi0tbm8tZG93bmxvYWQiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wYXRoIiwgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3RfcGF0aCgpXSkKQEAg
LTIzMyw5ICsyNDIsOSBAQCBkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxlKHRlbXBfdGVzdCk6
CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJp
dmVyKCk6CiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIGNocm9tZWRy
aXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52
IiwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVyLmV4ZSIpCisgICAgICAgIGNocm9tZWRyaXZlcl9w
YXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGly
KCksICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQogICAgIGVsc2U6Ci0gICAgICAgIGNo
cm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwg
Il92ZW52IiwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQorICAgICAgICBjaHJvbWVkcml2ZXJfcGF0
aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2Rpcigp
LCAiYmluIiwgImNocm9tZWRyaXZlciIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoY2hyb21lZHJp
dmVyX3BhdGgpOgogICAgICAgICBvcy51bmxpbmsoY2hyb21lZHJpdmVyX3BhdGgpCiAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CkBAIC0yNTEsOSArMjYwLDkg
QEAgZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICAgICAgICAgICAgICAgICBy
ZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8x
NzA3NCIpCiBkZWYgdGVzdF9pbnN0YWxsX2ZpcmVmb3goKToKICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImRhcndpbiI6Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0
aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJlZm94IE5p
Z2h0bHkuYXBwIikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRo
cy5yZXBvX3Jvb3QsIHdwdC52ZW52X2RpcigpLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJl
Zm94IE5pZ2h0bHkuYXBwIikKICAgICBlbHNlOgotICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5q
b2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwgIm5pZ2h0
bHkiLCAiZmlyZWZveCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAi
ZmlyZWZveCIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhfcGF0aCk6CiAgICAgICAgIHNodXRp
bC5ybXRyZWUoZnhfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMg
ZXhjaW5mbzoKQEAgLTM4OCw5ICszOTcsOSBAQCBkZWYgdGVzdF9zZXJ2ZSgpOgogICAgICAgICAg
ICAgaWYgdGltZS50aW1lKCkgLSBzdGFydCA+IDYwOgogICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgInNlcnZlciBkaWQgbm90IHN0YXJ0IHJlc3BvbmRpbmcgd2l0aGluIDYwcyIKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwID0gdXJsbGliMi51cmxvcGVuKCJodHRw
Oi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCisgICAgICAgICAgICAgICAgcmVzcCA9IHVybG9w
ZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKICAgICAgICAgICAgICAgICBwcmlu
dChyZXNwKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3I6CisgICAgICAgICAg
ICBleGNlcHQgVVJMRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIlVSTEVycm9yIikKICAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwppbmRleCA1YzQzZjNjYTZi
MjZhYTYwNTY2YWNmZmMzMGU4ZWM4ZWEyYjk2NGUzLi41YmYyNTk5OTIyYWFkNTYzMzRjYzFiYWRh
MTY5YmJjY2ZkODYxYjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpAQCAtMTYsNiArMTYsNyBAQCBOb25lCiBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9tYXJrZG93bi5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF90ZXN0ZmlsZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCmluZGV4IDZhMDQ0NDcz
YTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIuLjhlM2UyNmUxMzViNGQzNzZhNDkyYWVh
NWFkYmQyNDI3OTdiMDNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQpAQCAtMSw2ICsx
LDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNworZW52bGlzdCA9IHB5MjcscHkzNSxweTM2LHB5
MzcscHkzOAogc2tpcHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxz
ZQogCiBbdGVzdGVudl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQppbmRleCAy
ZDQyNzcxM2U0ZTgyNDg0NWI2ZDc4NzFiNjFjZDZmMTFlYzI1MWY2Li45YTZjMDY0NjcxMjA2NGUx
ODNmMzY2ZGZkNTYyOWExYjUyZTgxMTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQpA
QCAtNDYsNyArNDYsNyBAQCBkZWYgY2FsbCgqYXJncyk6CiAgICAgIiIiCiAgICAgbG9nZ2VyLmRl
YnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3Mu
Y2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChhcmdzKS5kZWNvZGUoJ3V0ZjgnKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvciBhcyBlOgogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiVzIGV4aXRlZCB3aXRoIHJl
dHVybiBjb2RlICVpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJu
Y29kZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQppbmRleCA0MDBkZWJj
ODhlNDY5MTBkMjY0MWU3MjhmYzRhZGI4NmE4ODU2OGUwLi4xOGVkY2MwNGZiNGQ1MjhlNjU2NmRh
MTA5MDJhOWFjOTY0YjQyYTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYu
cHkKQEAgLTMyLDcgKzMyLDkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3QpOgogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGV4aXN0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNk
aXIoc2VsZi5wYXRoKQorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgYWxzbyBmb3IgbGliX3Bh
dGggYmVjYXVzZSBkaWZmZXJlbnQgcHl0aG9uIHZlcnNpb25zCisgICAgICAgICMgY3JlYXRlIGRp
ZmZlcmVudCBsaWJyYXJ5IHBhdGhzLgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxm
LnBhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYubGliX3BhdGgpCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKaW5kZXgg
OTMzMDFkZDg2YjRmZmUyMDI5MDJhNDkyMjA0ZWJhNjUzN2ZiNTBkNS4uMzk1ZGIwMzk0ZGE2N2Nh
YThiZGMxYWQ5ZTY4OWU1ODMxNzUxOTJiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQpAQCAt
MzEsNiArMzEsNyBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAgICAgICAgICAgICAi
c2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAgICAicGFyc2VyIjog
cHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2tub3duIjog
cHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgInB5
M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFs
ZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAg
ICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNDAsMTMgKzQxLDE0IEBA
IGRlZiBsb2FkX2NvbW1hbmRzKCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVmIHBhcnNlX2FyZ3Mo
YXJndiwgY29tbWFuZHMpOgorZGVmIHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHM9bG9hZF9jb21t
YW5kcygpKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlBhdGggdG8g
YW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4gTXVzdCBzZXQgLS12
ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVidWciLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ugb2YgYW4gZXhjZXB0
aW9uIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXB5MyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9IlJ1biB3aXRoIHB5dGhvbjMiKQogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRk
X3N1YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIpCiAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGluIGl0
ZXJpdGVtcyhjb21tYW5kcyk6CiAgICAgICAgIHN1YnBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5k
LCBoZWxwPXByb3BzWyJoZWxwIl0sIGFkZF9oZWxwPUZhbHNlKQpAQCAtOTMsNyArOTUsOCBAQCBk
ZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigpOgogICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRz
OgogICAgICAgICBwcm9wcyA9IGNvbW1hbmRzW2NvbW1hbmRdCiAKLSAgICAgICAgaWYgcHJvcHNb
InZpcnR1YWxlbnYiXToKKyAgICAgICAgaWYgKHByb3BzWyJ2aXJ0dWFsZW52Il0gYW5kCisgICAg
ICAgICAgICAobm90IHByb3BzWyJweTNvbmx5Il0gb3Igc3lzLnZlcnNpb25faW5mby5tYWpvciA9
PSAzKSk6CiAgICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KE5vbmUsIEZhbHNlLCBwcm9wcykK
IAogICAgICAgICBzdWJwYXJzZXIgPSBpbXBvcnRfY29tbWFuZCgnd3B0JywgY29tbWFuZCwgcHJv
cHMpWzFdCkBAIC0xMDgsMTIgKzExMSwxNiBAQCBkZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigp
OgogICAgIHJldHVybiBwYXJzZXIKIAogCitkZWYgdmVudl9kaXIoKToKKyAgICByZXR1cm4gIl92
ZW52IiArIHN0cihzeXMudmVyc2lvbl9pbmZvWzBdKQorCisKIGRlZiBzZXR1cF92aXJ0dWFsZW52
KHBhdGgsIHNraXBfdmVudl9zZXR1cCwgcHJvcHMpOgogICAgIGlmIHNraXBfdmVudl9zZXR1cCBh
bmQgcGF0aCBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNdXN0IHNldCAtLXZl
bnYgd2hlbiAtLXNraXAtdmVudi1zZXR1cCBpcyB1c2VkIikKICAgICBzaG91bGRfc2tpcF9zZXR1
cCA9IHBhdGggaXMgbm90IE5vbmUgYW5kIHNraXBfdmVudl9zZXR1cAogICAgIGlmIHBhdGggaXMg
Tm9uZToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgIl92ZW52IikKKyAg
ICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgdmVudl9kaXIoKSkKICAgICB2ZW52
ID0gdmlydHVhbGVudi5WaXJ0dWFsZW52KHBhdGgsIHNob3VsZF9za2lwX3NldHVwKQogICAgIGlm
IG5vdCBzaG91bGRfc2tpcF9zZXR1cDoKICAgICAgICAgdmVudi5zdGFydCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCisrKyAvZGV2L251bGwK
QEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0KLWh0dHA6Ly93d3cu
dzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5zZS5odG1sCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9ucyBvZiB3b3JrcyBt
dXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwKLSAgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvcHlyaWdo
dAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSAgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgd29yayB3aXRo
b3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHMudHh0CmluZGV4IDNjZDAxNDQ2ZTI1YmNlYjRkYWRlZjQ4MjU5MTE3YmQwNTdlYTZmNDgu
LjUzMTA3MjFiYmI5MGZhOTRiOTBiNGMxMGQyMDJmYzVhMTNjMDRkNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApAQCAtMSw4ICsxLDkg
QEAKIGh0bWw1bGliPT0xLjAuMQotbW96aW5mbz09MS4xLjAKLW1vemxvZz09NS4wCi1tb3pkZWJ1
Zz09MC4xLjEKLXBpbGxvdz09Ni4yLjEKLXVybGxpYjNbc2VjdXJlXT09MS4yNS43Ci1yZXF1ZXN0
cz09Mi4yMi4wCi1zaXg9PTEuMTMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgorbW96bG9nPT02LjAKK21vemRl
YnVnPT0wLjIKKyMgUGlsbG93IDcgcmVxdWlyZXMgUHl0aG9uIDMKK3BpbGxvdz09Ni4yLjIgICMg
cHl1cDogPDcuMAordXJsbGliM1tzZWN1cmVdPT0xLjI1LjkKK3JlcXVlc3RzPT0yLjIzLjAKK3Np
eD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZmlyZWZveC50eHQKaW5kZXggNGNiYjdhNWVjMDI5M2VmZjFlZjE5OGEyMWVj
ZGM5MGZlY2Y0MTQxMS4uMTc2NzA1ZjNhZjUwOGFjYjMxMTdkNzNkNWFiNGYwYzMwNjAyNDY2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19maXJlZm94LnR4dApAQCAtMSwxMSArMSwxMCBAQAogbWFyaW9uZXR0ZV9kcml2ZXI9PTMu
MC4wCi1tb3pjcmFzaD09MS4xLjAKLW1vemRvd25sb2FkPT0xLjI2LjAKK21vemNyYXNoPT0yLjAu
MAogbW96aW5zdGFsbD09Mi4wLjAKIG1vemxlYWs9PTAuMgotbW96bmV0d29yaz09MC4yNworbW96
bmV0d29yaz09MS4xLjAKIG1venByb2Nlc3M9PTEuMC4wCi1tb3pwcm9maWxlPT0yLjQuMAotbW96
cnVubmVyPT03LjcuMAotbW96dmVyc2lvbj09Mi4yLjAKLXBzdXRpbD09NS42LjcKK21venByb2Zp
bGU9PTIuNS4wCittb3pydW5uZXI9PTcuOC4wCittb3p2ZXJzaW9uPT0yLjMuMAorcHN1dGlsPT01
LjcuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19zYXVjZS50eHQKaW5kZXggMzJiNWY2NGQxNGZkMDNkZjRlZWFjYjU3ODM5MjEwYTI2YTI4
M2ZhNy4uZTllOTc2NDc3OTZlN2Y5NDBmMmVlZjk4YzcyYjE5ODcxZDMyM2M3MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2Uu
dHh0CkBAIC0xLDMgKzEsMyBAQAogbW96cHJvY2Vzcz09MS4wLjAKIHNlbGVuaXVtPT0zLjE0MS4w
Ci1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKaW5kZXggOGYzMjNhMzM4NmM5OTdjYmNmYTAxM2U2
NTg1MDg2NDcxZGRmYTIwOC4uNDJlN2FiYmJhYjQ5MDkyMzcwNjVjYjAxMjVkYjcxMWExODYwNzg5
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpAQCAt
MSw1ICsxLDQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWltcG9y
dCBDb25maWdQYXJzZXIKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBA
IC03LDYgKzYsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxv
ZwogZnJvbSBtb3psb2cuaGFuZGxlcnMgaW1wb3J0IEJhc2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVy
CiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBNYWNoRm9ybWF0dGVyCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCitmcm9tIHNpeC5tb3Zlcy5jb25maWdwYXJzZXIgaW1wb3J0IENvbmZp
Z1BhcnNlcgogZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5lLCB3cHRydW5uZXIK
IAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQpAQCAt
NTgsNyArNTksNyBAQCBkZWYgdGVzdF9zZXR0aW5ncygpOgogICAgIH0KIAogZGVmIHJlYWRfY29u
ZmlnKCk6Ci0gICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgcGFy
c2VyID0gQ29uZmlnUGFyc2VyKCkKICAgICBwYXJzZXIucmVhZCgidGVzdC5jZmciKQogCiAgICAg
cnYgPSB7ImdlbmVyYWwiOnt9LApAQCAtODMsNyArODQsNyBAQCBkZWYgcnVuX3Rlc3RzKHByb2R1
Y3QsIGt3YXJncyk6CiAKIGRlZiBzZXR0aW5nc190b19hcmd2KHNldHRpbmdzKToKICAgICBydiA9
IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVtcygpOgorICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgogICAgICAgICBrZXkgPSAiLS0l
cyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFwcGVuZChr
ZXkpCkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0
dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZXJpdGVtcygpOgorICAgIGZvciBwcm9kdWN0
LCBwcm9kdWN0X3NldHRpbmdzIGluIGl0ZXJpdGVtcyhjb25maWdbInByb2R1Y3RzIl0pOgogICAg
ICAgICBpZiBhcmdzLnByb2R1Y3QgYW5kIHByb2R1Y3Qgbm90IGluIGFyZ3MucHJvZHVjdDoKICAg
ICAgICAgICAgIGNvbnRpbnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5p
CmluZGV4IGFkMzUwMmUwMmE5ZTgxMDE2OTQwYzhmMzlmNTY1NDBmNWFiMWYyNmQuLmM1NDRkYTdh
OTVkMmE5ODJjYWI4YjY4YWY1Mzc0NDBiNzFmYTA5NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdG94LmluaQpAQCAtMiw4ICsyLDggQEAKIHhmYWlsX3N0cmljdD10cnVlCiAKIFt0
b3hdCi1lbnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNh
ZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSxw
eTM2LWJhc2UKLXNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCitlbnZsaXN0ID0gcHky
Ny17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3
ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNSxweTM2LHB5MzcscHkz
OH0tYmFzZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAKIFt0ZXN0ZW52XQog
ZGVwcyA9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9n
CmluZGV4IDQwNmE1ZmFlMjU2NDI3MjI4NGFjNTcwMGNjMDQ2ZmIwYjY3YzFmNmEuLjU4ZTk3MGEw
ZWRmNmVkZmMxNjA3Yzc2NmE3NjNiZjk1MTUwZjYzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBv
cnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3ICsxNCw2IEBAIFByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5pbgogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURN
RS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lk
X3dlYmxheWVyLnB5CmluZGV4IDkzZjRkNmI2MzBkMjg4Yzc1Zjg4OGNiNzMwNGJiZjhhNDE5NWRi
NmMuLmY3NTU4N2Q4MzlmZmZjZjAzOTAxNzc5YTBiNjUxMjYxOTBiOWQ0ODEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xh
c3MgV2VibGF5ZXJTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRy
b2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5
CmluZGV4IGRjNjg3YjQ4ZWQ3YTlkZGU4MjczMzRhZThiNTkwOTZjYzU4ZDI0ZDcuLjg3OTA1Njc3
MDdlOTU3YTdiNjVkN2RjMTViYWFkNWUzMTkwYjhiYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2FuZHJvaWRfd2Vidmlldy5weQpAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNzIFN5c3RlbVdlYlZp
ZXdTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0
ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhp
bmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4K
LSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2Vs
Zi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggNjU1MzQ0NTgxOTczYzE1YjY1NzcyOWZl
YjczNmRkMjA3M2Q3OWEzMC4uYTAyN2NmMzI2MTBhNDllNjFmNDE0MWJmYjVmY2U1ZDA1MTM4NWIz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKQEAgLTMsNiArMyw3IEBAIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHNvY2tldAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBm
cm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZy
b20gLi53cHRjb21tYW5kbGluZSBpbXBvcnQgcmVxdWlyZV9hcmcgICMgbm9xYTogRjQwMQogCkBA
IC0xNDcsMTAgKzE0OCw2IEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICAgICAgIiIiQm9v
bGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyb3dzZXIgcHJvY2VzcyBpcyBzdGlsbCBydW5u
aW5nIiIiCiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR1cF9zc2woc2VsZiwgaG9zdHMpOgot
ICAgICAgICAiIiJSZXR1cm4gYSBjZXJ0aWZpY2F0ZSB0byB1c2UgZm9yIHRlc3RzIHJlcXVpcmlu
ZyBzc2wgdGhhdCB3aWxsIGJlIHRydXN0ZWQgYnkgdGhlIGJyb3dzZXIiIiIKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3NsIHRlc3Rpbmcgbm90IHN1cHBvcnRlZCIpCi0KICAg
ICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiQnJvd3Nlci1zcGVjaWZpYyBjbGVhbnVw
IHRoYXQgaXMgcnVuIGFmdGVyIHRoZSB0ZXN0cnVuIGlzIGZpbmlzaGVkIiIiCiAgICAgICAgIHBh
c3MKQEAgLTE5OSw1ICsxOTYsNSBAQCBjbGFzcyBFeGVjdXRvckJyb3dzZXIob2JqZWN0KToKICAg
ICB1cCB0aGUgYnJvd3NlciBmcm9tIHRoZSBydW5uZXIgcHJvY2Vzcy4KICAgICAiIiIKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3Mu
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhrd2FyZ3MpOgogICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXgg
NTEzZmQ1ZjQyNDkyZmNhNGY2MTE1NmU1NDU5NTc2ZDFjODQ2Njk4YS4uYmFjMWFmZmQzNjUwZTI0
YzRiOTZlZmM2NWU2YjQ2OTJjOWIyYjI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2Nocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CkBAIC0x
MjUsNyArMTI1LDcgQEAgY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBU
T0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAg
ICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vz
c2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlz
X2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYg
Y2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9j
aHJvbWVfYW5kcm9pZC5weQppbmRleCBiNGVkYzA1MGQwYzcwOWNmYTQ2N2E0M2I2ZTZhNDEyMDBh
YTA0YzczLi5jZDhjNDBmYWIxZmViMDYyOWE4MTRiMmJiYTY4ZWRlY2FhM2VlOGQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xh
c3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBU
aGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRv
ZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAg
ICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvY2hyb21lX2lvcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5Cmlu
ZGV4IGEwNDI5NjY1YzliYzU3ZTI3YzAyY2U4MWE3ZGViOTA5YjhmYTAwZjUuLjZkYjAxODhlNTVl
YmZmOGQzYTQwZjlhMTVkYzcxNDQxOWVkYWNiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9jaHJvbWVfaW9zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVf
aW9zLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIENocm9tZWlPU0Jyb3dzZXIoQnJvd3Nlcik6
CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMg
YWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIg
YSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBz
ZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUo
KQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlLnB5CmluZGV4IGQ5ZDBhZjExNWNjOWU5YzY0ZTkyN2IxNWNkZDI5MWYzMTRiMDdhZTUu
LjE4YTFlZDc4MTE4OWNjYTIzZGYyYTRlMWI1YjVkY2E4MzBiZDBlYTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAg
ICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIgaXMgYWxp
dmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBi
cm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQog
CiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2VkZ2VjaHJvbWl1bS5weQppbmRleCA2MzY4MGI2Nzc0YTI3NTkyNDkxZTY3MWY1M2Yx
NDBiNjVlMTcwNDJiLi41YzUxZjA2NmYwNDQxMzIxNjYwY2FiOTZmNmRlNTFhZjg2OGQzMTBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKQEAgLTEwNyw3ICsxMDcsNyBAQCBj
bGFzcyBFZGdlQ2hyb21pdW1Ccm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTog
VGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLA0KICAgICAgICAgIyBhbmQg
ZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbg0KICAg
ICAgICAgIyBpcyBhY3RpdmUuDQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUN
CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQogDQogICAgIGRlZiBjbGVh
bnVwKHNlbGYpOg0KICAgICAgICAgc2VsZi5zdG9wKCkNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnku
cHkKaW5kZXggOGEwZTVmNTc4YjJmZWI4NzFkZGQ1MGFiMDgxNjhjNmI5ZDQ1ZTRiMC4uZjZjNGM2
MDJhMzhjMDQzNjM3Y2Y5ZGJjOGJiYjUzNTBlYzk0NTI3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlw
aGFueS5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVs
dGlwbGllciwgbWF5YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9saXMKIGZyb20gLndl
YmtpdCBpbXBvcnQgV2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0
b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTog
RjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2Via2l0IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAx
CiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZXBpcGhhbnkiLApAQCAtMTEsNyArMTIs
OCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwKICAgICAgICAgICAg
ICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAg
ICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1
dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZl
clJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhl
Y3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9r
d2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2ZpcmVmb3gucHkKaW5kZXggMGY4MDc1MzM3ODEzNzgzYzc2ZTRiZTRkZWM5Y2M5MzFhNDI1MmM0
MS4uMmRlN2RmMzk2YmQyYTQ4Yjc4NjRhNjZhZWU0YjYyY2ZhMWZiMzY3NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2ZpcmVmb3gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNp
Z25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2Zyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBpbXBvcnQgbW96aW5mbwogaW1wb3J0IG1vemxlYWsKQEAg
LTI1LDYgKzI2LDcgQEAgZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcm1hcmlvbmV0dGUgaW1wb3J0
IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgICMg
bm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlV2RzcGVjRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAg
IyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKIAogCiBoZXJlID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQpAQCAtNjMsNiArNjUsOCBA
QCBkZWYgZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsICoq
a3dhcmdzKToKICAgICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Mzg3MjUKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0gIndpbiIgYW5kIHJ1
bl9pbmZvX2RhdGFbInByb2Nlc3NvciJdID09ICJhYXJjaDY0IjoKICAgICAgICAgcmV0dXJuIDQK
KyAgICBlbGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CisgICAgICAgIHJldHVybiAyCiAg
ICAgcmV0dXJuIDEKIAogCkBAIC04Miw2ICs4Niw3IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgImNh
X2NlcnRpZmljYXRlX3BhdGgiOiBjb25maWcuc3NsX2NvbmZpZ1siY2FfY2VydF9wYXRoIl0sCiAg
ICAgICAgICAgICAiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAogICAgICAgICAgICAgImVu
YWJsZV93ZWJyZW5kZXIiOiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSwKKyAgICAgICAgICAg
ICJlbmFibGVfZmlzc2lvbiI6IGt3YXJnc1siZW5hYmxlX2Zpc3Npb24iXSwKICAgICAgICAgICAg
ICJzdGFja2ZpeF9kaXIiOiBrd2FyZ3NbInN0YWNrZml4X2RpciJdLAogICAgICAgICAgICAgImJp
bmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJdLAogICAgICAgICAgICAgInRpbWVvdXRf
bXVsdGlwbGllciI6IGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBlLApAQCAtOTMsNyAr
OTgsOCBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25m
aWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdzIjoga3dhcmdzWyJj
aGFvc19tb2RlX2ZsYWdzIl0sCiAgICAgICAgICAgICAiY29uZmlnIjogY29uZmlnLAogICAgICAg
ICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0sCi0gICAg
ICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CisgICAgICAgICAgICAiaGVh
ZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAicHJlbG9hZF9icm93c2Vy
Ijoga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXX0KIAogCiBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKQEAg
LTE2OCwxNyArMTc0LDEzIEBAIGRlZiBydW5faW5mb19leHRyYXMoKiprd2FyZ3MpOgogICAgICAg
ICAgICJ3YXNtIjoga3dhcmdzLmdldCgid2FzbSIsIFRydWUpLAogICAgICAgICAgICJ2ZXJpZnki
OiBrd2FyZ3NbInZlcmlmeSJdLAogICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJncy5nZXQoImhl
YWRsZXNzIiwgRmFsc2UpIG9yICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmlyb24sCi0gICAgICAg
ICAgImZpc3Npb24iOiBnZXRfYm9vbF9wcmVmKCJmaXNzaW9uLmF1dG9zdGFydCIpfQorICAgICAg
ICAgICJzdy1lMTBzIjogVHJ1ZSwKKyAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVu
YWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KIAog
ICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0aGVyIHRoZSAicGFy
ZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBj
dXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLAogICAgICMgY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwcmVmIHdpdGggdGhlIGAtLXNldHByZWZgIENM
SQotICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLiBJZiBub3Qgc3VwcGxpZWQsIHRo
ZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgIyBgc3ctZTEwc2Agd2lsbCBiZSBmaWxsZWQgaW4gaW4g
YFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCi0gICAgIwotICAgICMgV2UgY2FuJ3QgY2FwdHVyZSB0
aGUgZGVmYXVsdCB2YWx1ZSByaWdodCBub3cgYmVjYXVzZSAoY3VycmVudGx5KSwgaXQKLSAgICAj
IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbmlnaHRseV9idWlsZGAsIHdoaWNoIGlzbid0IGtu
b3duIHVudGlsCi0gICAgIyBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KKyAgICAjIGZsYWcsIHdo
aWNoIGlzIGNoZWNrZWQgaGVyZS4KICAgICBzd19lMTBzX292ZXJyaWRlID0gZ2V0X2Jvb2xfcHJl
Zl9pZl9leGlzdHMoImRvbS5zZXJ2aWNlV29ya2Vycy5wYXJlbnRfaW50ZXJjZXB0IikKICAgICBp
ZiBzd19lMTBzX292ZXJyaWRlIGlzIG5vdCBOb25lOgogICAgICAgICBydlsic3ctZTEwcyJdID0g
c3dfZTEwc19vdmVycmlkZQpAQCAtMjAzLDc5ICsyMDUsNjAgQEAgZGVmIHVwZGF0ZV9wcm9wZXJ0
aWVzKCk6CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJp
dHMiXX0pCiAKIAotY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0gICAgaW5pdF90aW1l
b3V0ID0gNzAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKK2NsYXNzIEZpcmVmb3hJbnN0YW5j
ZU1hbmFnZXIob2JqZWN0KToKKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4
dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3ltYm9s
c19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUs
Ci0gICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwg
ZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGlyPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25lLCBsZWFrX2NoZWNr
PUZhbHNlLCBhc2FuPUZhbHNlLAotICAgICAgICAgICAgICAgICBzdHlsb190aHJlYWRzPTEsIGNo
YW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJyb3dzZXJfY2hhbm5lbD0ibmlnaHRs
eSIsIGhlYWRsZXNzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhz
ZWxmLCBsb2dnZXIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBiaW5h
cnlfYXJncywgcHJvZmlsZV9jcmVhdG9yLCBkZWJ1Z19pbmZvLAorICAgICAgICAgICAgICAgICBj
aGFvc19tb2RlX2ZsYWdzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwgc3R5bG9fdGhyZWFk
cywKKyAgICAgICAgICAgICAgICAgbGVha19jaGVjaywgc3RhY2tmaXhfZGlyLCBzeW1ib2xzX3Bh
dGgsIGFzYW4pOgorICAgICAgICAiIiJPYmplY3QgdGhhdCBtYW5hZ2VzIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBpbnN0YW5jZXMgb2YgRmlyZWZveC4iIiIKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKLSAgICAgICAgc2VsZi5wcmVmc19y
b290ID0gcHJlZnNfcm9vdAotICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQotICAg
ICAgICBzZWxmLmV4dHJhX3ByZWZzID0gZXh0cmFfcHJlZnMKLSAgICAgICAgc2VsZi5tYXJpb25l
dHRlX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAgICAgc2VsZi5iYXNlX3Byb2ZpbGUgPSBw
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdf
aW5mbwotICAgICAgICBzZWxmLnByb2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuc3ltYm9sc19w
YXRoID0gc3ltYm9sc19wYXRoCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFyeSA9IHN0YWNr
d2Fsa19iaW5hcnkKLSAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlm
aWNhdGVfcGF0aAotICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGlsX2JpbmFy
eQotICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuY2hhb3NfbW9kZV9mbGFn
cyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5oZWFkbGVzcyA9IGhlYWRsZXNzCiAg
ICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKLSAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0gICAgICAgIGlmIHN0YWNrZml4X2RpcjoKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4
ZXIgPSBnZXRfc3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bWJvbHNf
cGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25l
CisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2Vs
Zi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAg
ICAgICBzZWxmLmFzYW4gPSBhc2FuCiAKLSAgICAgICAgaWYgdGltZW91dF9tdWx0aXBsaWVyOgot
ICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGltZW91dCAqIHRpbWVv
dXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxm
LmN1cnJlbnQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5hc2FuID0gYXNhbgotICAgICAgICBzZWxm
LmxzYW5fYWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5sc2FuX21heF9zdGFja19kZXB0aCA9
IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0gTm9uZQotICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFr
X2NoZWNrCi0gICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5sc2FuX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxv
X3RocmVhZHMKLSAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFn
cwotICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAotICAgICAg
ICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYg
dGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2V0
dGluZ3Moc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5s
ZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAgICAibHNhbl9hbGxv
d2VkIjogdGVzdC5sc2FuX2FsbG93ZWQsCi0gICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNr
X2RlcHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKLSAgICAgICAgICAgICAgICAibW96
bGVha19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwK
LSAgICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFu
ZCB0ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBn
ZXQoc2VsZik6CisgICAgICAgICIiIkdldCBhIEJyb3dzZXJJbnN0YW5jZSBmb3IgYSBydW5uaW5n
IEZpcmVmb3guCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgotICAgICAgICAgICAg
Z3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
IHBlciBpbnN0YW5jZSwgYW5kIGJldHdlZW4gY2FsbHMgc3RvcF9jdXJyZW50KCkKKyAgICAgICAg
bXVzdCBiZSBjYWxsZWQuIiIiCisgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmdyb3VwX21l
dGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEKLSAgICAgICAgc2VsZi5sc2FuX2FsbG93ZWQgPSBrd2Fy
Z3MuZ2V0KCJsc2FuX2FsbG93ZWQiKQotICAgICAgICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRo
ID0ga3dhcmdzLmdldCgibHNhbl9tYXhfc3RhY2tfZGVwdGgiKQotICAgICAgICBzZWxmLm1vemxl
YWtfYWxsb3dlZCA9IGt3YXJncy5nZXQoIm1vemxlYWtfYWxsb3dlZCIpCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0ga3dhcmdzLmdldCgibW96bGVha190aHJlc2hvbGRzIikKKyAg
ICBkZWYgc3RvcF9jdXJyZW50KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgIiIiU2h1dGRv
d24gdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgRmlyZWZveC4KIAotICAgICAgICBpZiBzZWxmLm1h
cmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQg
PSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgVGhlIEJyb3dzZXJJbnN0YW5jZSByZW1haW5zIGF2
YWlsYWJsZSB0aHJvdWdoIHNlbGYucHJldmlvdXMsIHNpbmNlIHNvbWUKKyAgICAgICAgb3BlcmF0
aW9ucyBoYXBwZW4gYWZ0ZXIgc2h1dGRvd24uIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmN1cnJl
bnQ6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmFzYW46Ci0gICAgICAg
ICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsuTFNBTkxlYWtzKHNlbGYubG9nZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZT1n
cm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5fYWxsb3dlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVj
b3JkZWRGcmFtZXM9c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKKyAgICAgICAgc2VsZi5jdXJy
ZW50LnN0b3AoZm9yY2UpCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxmLmN1cnJlbnQKKyAg
ICAgICAgc2VsZi5jdXJyZW50ID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAg
ICAiIiJTdGFydCBhbiBpbnN0YW5jZSBvZiBGaXJlZm94LCByZXR1cm5pbmcgYSBCcm93c2VySW5z
dGFuY2UgaGFuZGxlIiIiCisgICAgICAgIHByb2ZpbGUgPSBzZWxmLmJhc2VfcHJvZmlsZS5jbG9u
ZShzZWxmLmJhc2VfcHJvZmlsZS5wcm9maWxlKQorCisgICAgICAgIG1hcmlvbmV0dGVfcG9ydCA9
IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Im1hcmlv
bmV0dGUucG9ydCI6IG1hcmlvbmV0dGVfcG9ydH0pCiAKICAgICAgICAgZW52ID0gdGVzdF9lbnZp
cm9ubWVudCh4cmVQYXRoPW9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9c2VsZi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25l
LApAQCAtMjkyLDQwICsyNzUsNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCiAKLSAg
ICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQotCi0gICAgICAgIHNlbGYucHJv
ZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAgICBz
ZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRlLnBv
cnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKLSAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2Nh
bERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCi0gICAgICAgICAg
ICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCi0gICAgICAgICAgICAjIFRPRE86IFJl
bW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcgOTA1NDA0KQot
ICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCi0gICAgICAgICAgICAicGxhY2Vz
Lmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6
IFRydWUsCi0gICAgICAgIH0pCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAgICAgICAgICAgIHNl
bGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFy
dCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKLSAg
ICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXlvdXQuaW50ZXJydXB0
aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKLQotICAgICAgICBpZiBzZWxmLmxlYWtfY2hl
Y2s6Ci0gICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ciICUgb3MuZ2V0cGlkKCkp
Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpOgot
ICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpCi0gICAgICAg
ICAgICBlbnZbIlhQQ09NX01FTV9CTE9BVF9MT0ciXSA9IHNlbGYubGVha19yZXBvcnRfZmlsZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQot
Ci0gICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEwcywgZGlzYWJsZSBod2FjY2VsCi0g
ICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpIGluICgiV2luZG93cyIs
ICJNaWNyb3NvZnQiKSBhbmQKLSAgICAgICAgICAgICc1LjEnIGluIHBsYXRmb3JtLnZlcnNpb24o
KSk6Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5ZXJzLmFj
Y2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYuY2FfY2VydGlm
aWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3NsKCkKLQog
ICAgICAgICBhcmdzID0gc2VsZi5iaW5hcnlfYXJnc1s6XSBpZiBzZWxmLmJpbmFyeV9hcmdzIGVs
c2UgW10KICAgICAgICAgYXJncyArPSBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJvdXQ6Ymxh
bmsiXQogCkBAIC0zMzMsNjAgKzI4MiwxMDEgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nl
cik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQog
Ci0gICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXNlbGYucHJvZmls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT1jbWRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJncz17InByb2Nlc3NPdXRw
dXRMaW5lIjogW3NlbGYub25fb3V0cHV0XX0pCisgICAgICAgIGlmIHNlbGYubGVha19jaGVjazoK
KyAgICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocHJvZmlsZS5wcm9m
aWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBpZCgpKQorICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMobGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICAgICAgICAgb3Mu
cmVtb3ZlKGxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgICAgICBlbnZbIlhQQ09NX01FTV9CTE9B
VF9MT0ciXSA9IGxlYWtfcmVwb3J0X2ZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxl
YWtfcmVwb3J0X2ZpbGUgPSBOb25lCisKKyAgICAgICAgb3V0cHV0X2hhbmRsZXIgPSBPdXRwdXRI
YW5kbGVyKHNlbGYubG9nZ2VyLCBzZWxmLnN0YWNrZml4X2Rpciwgc2VsZi5zeW1ib2xzX3BhdGgs
IHNlbGYuYXNhbikKKyAgICAgICAgcnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXByb2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PWNtZFswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0TGluZSI6IFtvdXRw
dXRfaGFuZGxlcl19KQorICAgICAgICBpbnN0YW5jZSA9IEJyb3dzZXJJbnN0YW5jZShzZWxmLmxv
Z2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9oYW5kbGVyLCBsZWFrX3JlcG9ydF9maWxlKQogCiAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBGaXJlZm94IikKLQotICAgICAgICBzZWxmLnJ1bm5l
ci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVyYWN0aXZlPXNlbGYuZGVidWdfaW5m
byBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQorICAgICAgICBydW5uZXIuc3RhcnQo
ZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVnX2luZm8gYW5kIHNl
bGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZp
cmVmb3ggU3RhcnRlZCIpCiAKLSAgICBkZWYgbG9hZF9wcmVmcyhzZWxmKToKLSAgICAgICAgcHJl
ZnMgPSBQcmVmZXJlbmNlcygpCi0KLSAgICAgICAgcHJlZl9wYXRocyA9IFtdCi0KLSAgICAgICAg
cHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJvZmlsZXMuanNvbicp
Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKLSAgICAgICAgICAgIHdpdGgg
b3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBq
c29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAgICAgICAgICAgICAgICAg
aWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19y
b290LCBuYW1lLCAndXNlci5qcycpKQotICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgIT0g
J3VuaXR0ZXN0LWZlYXR1cmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMu
YXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZpbGVzIHVzZWQgYmVm
b3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hlbiBubyBsb25nZXIg
c3VwcG9ydGVkKQotICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAoCi0gICAgICAgICAg
ICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZzX2dlbmVyYWwuanMnKSwg
ICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKLSAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMnKSwgICMgVXNlZCBpbiBG
aXJlZm94IDYxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBsZWdhY3lf
cHJlZl9wYXRoczoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkKLQotICAgICAgICBmb3Ig
cGF0aCBpbiBwcmVmX3BhdGhzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6
Ci0gICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJlYWRfcHJlZnMocGF0aCkp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBwYXRoKQotCi0gICAgICAg
ICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKLSAgICAgICAgcHJlZnMuYWRkKHNlbGYuZXh0
cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworY2xhc3Mg
U2luZ2xlSW5zdGFuY2VNYW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIpOgorICAgICIiIkZp
cmVmb3hJbnN0YW5jZU1hbmFnZXIgdGhhdCBtYW5hZ2VzIGEgc2luZ2xlIEZpcmVmb3ggaW5zdGFu
Y2UiIiIKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuY3VycmVu
dCwgKCJUcmllZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0aGF0IGhhcyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5nIGluc3RhbmNlIikK
KyAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMuY2xl
YW51cCgpCisgICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLmN1
cnJlbnQgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudAorCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9yIGluc3RhbmNlIGlu
IFtzZWxmLnByZXZpb3VzLCBzZWxmLmN1cnJlbnRdOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6
CisgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSkKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBQcmVsb2FkSW5zdGFuY2VNYW5hZ2VyKEZpcmVm
b3hJbnN0YW5jZU1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICAiIiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQga2VlcHMgb25jZSBG
aXJlZm94IGluc3RhbmNlIHByZWxvYWRlZAorICAgICAgICB0byBhbGxvdyByYXBpZCByZXN1bXB0
aW9uIGFmdGVyIGFuIGluc3RhbmNlIHNodXRzIGRvd24uIiIiCisgICAgICAgIHN1cGVyKFByZWxv
YWRJbnN0YW5jZU1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5wZW5kaW5nID0gTm9uZQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLmN1cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBvbiBJbnN0YW5jZU1h
bmFnZXIgdGhhdCBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBl
eGlzdGluZyBpbnN0YW5jZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6CisgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5v
bmUKKyAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZzoKKyAgICAgICAgICAgIHNlbGYucGVuZGlu
ZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBzZWxmLnBlbmRpbmcKKyAg
ICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1
cnJlbnQKKworICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGZv
ciBpbnN0YW5jZSwgc2tpcF9tYXJpb25ldHRlIGluIFsoc2VsZi5wcmV2aW91cywgRmFsc2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY3VycmVudCwg
RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
cGVuZGluZywgVHJ1ZSldOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6CisgICAgICAgICAgICAg
ICAgaW5zdGFuY2Uuc3RvcChmb3JjZSwgc2tpcF9tYXJpb25ldHRlPXNraXBfbWFyaW9uZXR0ZSkK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBCcm93c2VySW5z
dGFuY2Uob2JqZWN0KToKKyAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKIAotICAgICAgICByZXR1
cm4gcHJlZnMoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHJ1bm5lciwgbWFyaW9u
ZXR0ZV9wb3J0LCBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICIi
IkhhbmRsZSB0byBhIHJ1bm5pbmcgRmlyZWZveCBpbnN0YW5jZSIiIgorICAgICAgICBzZWxmLmxv
Z2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgorICAgICAgICBzZWxm
Lm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0dGVfcG9ydAorICAgICAgICBzZWxmLm91dHB1dF9o
YW5kbGVyID0gb3V0cHV0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0g
bGVha19yZXBvcnRfZmlsZQogCi0gICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAg
IGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlLCBza2lwX21hcmlvbmV0dGU9RmFsc2UpOgorICAg
ICAgICAiIiJTdG9wIEZpcmVmb3giIiIKICAgICAgICAgaWYgc2VsZi5ydW5uZXIgaXMgbm90IE5v
bmUgYW5kIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJTdG9wcGluZyBGaXJlZm94ICVzIiAlIHNlbGYucGlkKCkpCisgICAgICAgICAgICBz
aHV0ZG93bl9tZXRob2RzID0gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVyLndhaXQoc2VsZi5z
aHV0ZG93bl90aW1lb3V0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxz
ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdURVJNKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNp
Z25hbC5TSUdLSUxMKSldCisgICAgICAgICAgICBpZiBza2lwX21hcmlvbmV0dGU6CisgICAgICAg
ICAgICAgICAgc2h1dGRvd25fbWV0aG9kcyA9IHNodXRkb3duX21ldGhvZHNbMTpdCiAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBGb3IgRmlyZWZveCB3ZSBhc3N1bWUgdGhhdCBz
dG9wcGluZyB0aGUgcnVubmVyIHByb21wdHMgdGhlCiAgICAgICAgICAgICAgICAgIyBicm93c2Vy
IHRvIHNodXQgZG93bi4gVGhpcyBhbGxvd3MgdGhlIGxlYWsgbG9nIHRvIGJlIHdyaXR0ZW4KLSAg
ICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBbKFRydWUsIGxhbWJkYTogc2VsZi5y
dW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFs
LlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNl
LCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV06CisgICAgICAgICAg
ICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gc2h1dGRvd25fbWV0aG9kczoKICAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGZvcmNlIG9yIG5vdCBjbGVhbjoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldGNvZGUgPSBzdG9wX2YoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29k
ZSBpcyBub3QgTm9uZToKQEAgLTM5NSwyMyArMzg1LDggQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAj
IFRoaXMgY2FuIGhhcHBlbiBvbiBXaW5kb3dzIGlmIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgZGVh
ZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5wcm9jZXNzX2xlYWtzKCkKLSAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQotCi0gICAgZGVmIHByb2Nlc3NfbGVh
a3Moc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlBST0NFU1MgTEVBS1MgJXMiICUg
c2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAgICAgICBpZiBzZWxmLmxzYW5faGFuZGxlcjoKLSAg
ICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyLnByb2Nlc3MoKQotICAgICAgICBpZiBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtb3psZWFrLnByb2Nlc3Nf
bGVha19sb2coCi0gICAgICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlLAotICAgICAg
ICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKLSAgICAg
ICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0sCi0gICAgICAgICAg
ICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNrX2ZpeGVyPXNlbGYu
c3RhY2tfZml4ZXIsCi0gICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5ncm91cF9tZXRhZGF0YS5n
ZXQoInNjb3BlIiksCi0gICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLm1vemxlYWtfYWxsb3dl
ZAotICAgICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc2tpcF9tYXJpb25ldHRlOgorICAgICAg
ICAgICAgc2VsZi5vdXRwdXRfaGFuZGxlci5hZnRlcl9zdG9wKCkKIAogICAgIGRlZiBwaWQoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBpcyBOb25lOgpAQCAt
NDIyLDQ0ICszOTcsMjA4IEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIG9uX291dHB1dChzZWxmLCBsaW5lKToKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAg
ICAgIGlmIHNlbGYucnVubmVyOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1
bm5pbmcoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgor
ICAgICAgICAjIG1venByb2ZpbGUgaGFuZGxlcyBkZWxldGluZyB0aGUgcHJvZmlsZSB3aGVuIHRo
ZSByZWZjb3VudCByZWFjaGVzIDAKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKworY2xh
c3MgT3V0cHV0SGFuZGxlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHN0YWNrZml4X2Rpciwgc3ltYm9sc19wYXRoLCBhc2FuKToKKyAgICAgICAgIiIiRmlsdGVyIGZv
ciBoYW5kbGluZyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFRoaXMgcmVjZWl2
ZXMgRmlyZWZveCBwcm9jZXNzIG91dHB1dCBpbiB0aGUgX19jYWxsX18gZnVuY3Rpb24sIGRvZXMK
KyAgICAgICAgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aGF0J3MgcmVxdWlyZWQsIGFuZCBk
ZWNpZGVzIHdoZXRoZXIgdG8gbG9nCisgICAgICAgIHRoZSBvdXRwdXQuIEJlY2F1c2UgdGhlIEZp
cmVmb3ggcHJvY2VzcyBjYW4gYmUgc3RhcnRlZCBiZWZvcmUgd2Uga25vdworICAgICAgICB3aGlj
aCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgd2UgYnVmZmVyIGFsbCBvdXRwdXQg
dW50aWwKKyAgICAgICAgc2V0dXAoKSBpcyBjYWxsZWQuIFRoaXMgaXMgcmVzcG9uc2libGUgZm9y
IGRvaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uCisgICAgICAgIG9mIHRoZSBvdXRwdXQgaGFu
ZGxlcnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgICMgVGhlc2UgYXJlIGZpbGxlZCBpbiBhZnRlciBzZXR1cCgpIGlzIGNhbGxlZAorICAgICAg
ICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoID0gc3lt
Ym9sc19wYXRoCisgICAgICAgIGlmIHN0YWNrZml4X2RpcjoKKyAgICAgICAgICAgICMgV2UgaGlk
ZSBlcnJvcnMgYmVjYXVzZSB0aGV5IGNhdXNlIGRpc2NvbmNlcnRpbmcgYENSSVRJQ0FMYAorICAg
ICAgICAgICAgIyB3YXJuaW5ncyBpbiB3ZWIgcGxhdGZvcm0gdGVzdCBvdXRwdXQuCisgICAgICAg
ICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0aW9uKHN0YWNrZml4
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcnM9VHJ1ZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25lCisgICAgICAgIHNlbGYuYXNhbiA9
IGFzYW4KKworICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t
b3psZWFrX2FsbG93ZWQgPSBOb25lCisgICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0g
Tm9uZQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0ge30KKworICAgICAgICBzZWxmLmxp
bmVfYnVmZmVyID0gW10KKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBGYWxzZQorCisgICAgZGVm
IHNldHVwKHNlbGYsIGluc3RhbmNlPU5vbmUsIGdyb3VwX21ldGFkYXRhPU5vbmUsIGxzYW5fZGlz
YWJsZWQ9RmFsc2UsCisgICAgICAgICAgICAgIGxzYW5fYWxsb3dlZD1Ob25lLCBsc2FuX21heF9z
dGFja19kZXB0aD1Ob25lLCBtb3psZWFrX2FsbG93ZWQ9Tm9uZSwKKyAgICAgICAgICAgICAgbW96
bGVha190aHJlc2hvbGRzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ29uZmlndXJlIHRo
ZSBvdXRwdXQgaGFuZGxlciIiIgorICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKKwor
ICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbWV0
YWRhdGEgPSB7fQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEK
KworICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IG1vemxlYWtfYWxsb3dlZAorICAgICAg
ICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IG1vemxlYWtfdGhyZXNob2xkcworCisgICAgICAg
IGlmIHNlbGYuYXNhbjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gbW96bGVhay5M
U0FOTGVha3Moc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiLCAiLyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2Vk
PWxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9bHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93QWxsPWxz
YW5fZGlzYWJsZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxl
ciA9IE5vbmUKKworICAgICAgICBzZWxmLnNldHVwX3JhbiA9IFRydWUKKworICAgICAgICBmb3Ig
bGluZSBpbiBzZWxmLmxpbmVfYnVmZmVyOgorICAgICAgICAgICAgc2VsZi5fX2NhbGxfXyhsaW5l
KQorICAgICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKworICAgIGRlZiBhZnRlcl9zdG9wKHNl
bGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtTICVzIiAlIHNlbGYu
aW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSkKKyAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6
CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKKyAgICAgICAgaWYgc2Vs
Zi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBX
ZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5nIGxlYWtzIGluIHRoZSB0YWIgYmVjYXVzZSBpdCBjYW4g
aGFwcGVuIHRoYXQgdGhlCisgICAgICAgICAgICAjIGNvbnRlbnQgcHJvY2VzcyBjcmFzaGVkIGFu
ZCBpbiB0aGF0IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBmYWlsLgorICAgICAgICAg
ICAgIyBJZGVhbGx5IHdlIHdvdWxkIHJlY29yZCB3aGljaCBjb250ZW50IHByb2Nlc3MgY3Jhc2hl
ZCBhbmQganVzdCBza2lwIHRob3NlLgorICAgICAgICAgICAgbW96bGVhay5wcm9jZXNzX2xlYWtf
bG9nKAorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSwKKyAg
ICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3RocmVzaG9sZHMsCisg
ICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJ0YWIiLCAiZ21wbHVnaW4iXSwK
KyAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgc3RhY2tf
Zml4ZXI9c2VsZi5zdGFja19maXhlciwKKyAgICAgICAgICAgICAgICBzY29wZT1zZWxmLmdyb3Vw
X21ldGFkYXRhLmdldCgic2NvcGUiKSwKKyAgICAgICAgICAgICAgICBhbGxvd2VkPXNlbGYubW96
bGVha19hbGxvd2VkKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGxpbmUpOgogICAgICAgICAi
IiJXcml0ZSBhIGxpbmUgb2Ygb3V0cHV0IGZyb20gdGhlIGZpcmVmb3ggcHJvY2VzcyB0byB0aGUg
bG9nIiIiCi0gICAgICAgIGlmICJHTGliLUdPYmplY3QtQ1JJVElDQUwiIGluIGxpbmU6CisgICAg
ICAgIGlmIGIiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgogICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXR1cF9yYW46
CisgICAgICAgICAgICAgICAgc2VsZi5saW5lX2J1ZmZlci5hcHBlbmQobGluZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRhdGEgPSBsaW5lLmRlY29kZSgidXRmOCIsICJy
ZXBsYWNlIikKICAgICAgICAgICAgIGlmIHNlbGYuc3RhY2tfZml4ZXI6CiAgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYuc3RhY2tfZml4ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIHNlbGYubHNh
bl9oYW5kbGVyOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmxzYW5faGFuZGxlci5sb2co
ZGF0YSkKICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5waWQoKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLmluc3RhbmNlIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UucnVubmVyLnByb2Nl
c3NfaGFuZGxlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIucGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0iICIuam9pbihzZWxmLnJ1bm5lci5jb21t
YW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PSIgIi5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLmNvbW1hbmQpKQogCi0gICAgZGVmIGlzX2Fs
aXZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJ1bm5lci5pc19ydW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYg
Y2xlYW51cChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc3RvcChmb3JjZSkKK2Ns
YXNzIFByb2ZpbGVDcmVhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLCBlMTBzLAorICAg
ICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBiaW5hcnksIGNl
cnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jvb3QKKyAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKKyAgICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUK
KyAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCisgICAgICAgIHNlbGYuZTEw
cyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfZmlzc2lvbiA9IGVuYWJsZV9maXNzaW9uCisg
ICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNl
bGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKKyAgICAgICAgc2Vs
Zi5iaW5hcnkgPSBiaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRp
bF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlmaWNh
dGVfcGF0aAogCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIGFzc2Vy
dCBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBub3QgTm9uZQotICAgICAgICByZXR1cm4gRXhlY3V0
b3JCcm93c2VyLCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fQorICAg
IGRlZiBjcmVhdGUoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSBhIEZpcmVmb3ggcHJvZmlsZSBh
bmQgcmV0dXJuIHRoZSBtb3pwcm9maWxlIFByb2ZpbGUgb2JqZWN0IHBvaW50aW5nIGF0IHRoYXQK
KyAgICAgICAgcHJvZmlsZSIiIgorICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYuX2xvYWRfcHJl
ZnMoKQogCi0gICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgotICAgICAg
ICBkdW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgIm1pbmlkdW1w
cyIpCisgICAgICAgIHByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJl
bmNlcykKKyAgICAgICAgc2VsZi5fc2V0X3JlcXVpcmVkX3ByZWZzKHByb2ZpbGUpCisgICAgICAg
IGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX3NldHVwX3NzbChwcm9maWxlKQorCisgICAgICAgIHJldHVybiBwcm9maWxlCisKKyAgICBk
ZWYgX2xvYWRfcHJlZnMoc2VsZik6CisgICAgICAgIHByZWZzID0gUHJlZmVyZW5jZXMoKQorCisg
ICAgICAgIHByZWZfcGF0aHMgPSBbXQogCi0gICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxv
Z19jcmFzaGVzKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxrX2JpbmFy
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9j
ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3Qp
KQorICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdwcm9m
aWxlcy5qc29uJykKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocHJvZmlsZXMpOgorICAgICAg
ICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZv
ciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10ZXN0cyddOgorICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAoTm9uZSwgJ25pZ2h0bHknKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihz
ZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCisgICAgICAgICAgICAgICAgICAgIGVs
aWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgbmFtZSwgJ3Vz
ZXIuanMnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT2xkIHByZWZlcmVuY2UgZmls
ZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVzLmpzb24gKHJlbW92ZSB3aGVu
IG5vIGxvbmdlciBzdXBwb3J0ZWQpCisgICAgICAgICAgICBsZWdhY3lfcHJlZl9wYXRocyA9ICgK
KyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJlZnNfZ2Vu
ZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBiZWxvdworICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21tb24nLCAndXNlci5qcycpLCAg
IyBVc2VkIGluIEZpcmVmb3ggNjEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBwYXRo
IGluIGxlZ2FjeV9wcmVmX3BhdGhzOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChwYXRoKQorCisg
ICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBwcmVmcy5hZGQoUHJlZmVyZW5jZXMucmVhZF9w
cmVmcyhwYXRoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBmaWxlIGluICVzIiAlIHBhdGgp
CiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYpOgorICAgICAgICAjIEFkZCBhbnkgY3VzdG9tIHBy
ZWZlcmVuY2VzCisgICAgICAgIHByZWZzLmFkZChzZWxmLmV4dHJhX3ByZWZzLCBjYXN0PVRydWUp
CisKKyAgICAgICAgcmV0dXJuIHByZWZzKCkKKworICAgIGRlZiBfc2V0X3JlcXVpcmVkX3ByZWZz
KHNlbGYsIHByb2ZpbGUpOgorICAgICAgICAiIiJTZXQgcHJlZmVyZW5jZXMgcmVxdWlyZWQgZm9y
IHdwdHJ1bm5lciB0byBmdW5jdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0
IHNldCB0aGUgbWFyaW9uZXR0ZSBwb3J0LCBzaW5jZSB3ZSBkb24ndCBhbHdheXMKKyAgICAgICAg
a25vdyB0aGF0IGF0IHByb2ZpbGUgY3JlYXRpb24gdGltZS4gU28gdGhlIGNhbGxlciBpcyByZXNw
b25pc2JsZSBmb3IKKyAgICAgICAgc2V0dGluZyB0aGF0IG9uY2UgaXQncyBhdmFpbGFibGUuIiIi
CisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAgICAgICJuZXR3b3Jr
LmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCisg
ICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCisgICAgICAgICAgICAj
IFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcg
OTA1NDA0KQorICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCisgICAgICAgICAg
ICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAorICAgICAgICAgICAgIm5ldHdvcmsu
cHJlbG9hZCI6IFRydWUsCisgICAgICAgIH0pCisgICAgICAgIGlmIHNlbGYuZTEwczoKKyAgICAg
ICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRv
c3RhcnQiOiBUcnVlfSkKKworICAgICAgICBpZiBzZWxmLmVuYWJsZV9maXNzaW9uOgorICAgICAg
ICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJmaXNzaW9uLmF1dG9zdGFydCI6IFRydWV9
KQorCisgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAg
IHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVycnVwdGlibGUtcmVmbG93LmVu
YWJsZWQiOiBGYWxzZX0pCisKKyAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lueHAgKyBlMTBzLCBk
aXNhYmxlIGh3YWNjZWwKKyAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxhdGZvcm0uc3lzdGVt
KCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAorICAgICAgICAgICAgIjUuMSIgaW4g
cGxhdGZvcm0udmVyc2lvbigpKToKKyAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0pCisKKyAgICBkZWYg
X3NldHVwX3NzbChzZWxmLCBwcm9maWxlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgY2VydGlmaWNh
dGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMgaXMgY29uZmlndXJl
ZAogICAgICAgICB0byB0cnVzdCB0aGUgQ0EgQ2VydGlmaWNhdGUgdGhhdCBoYXMgc2lnbmVkIHRo
ZSB3ZWItcGxhdGZvcm0udGVzdCBzZXJ2ZXIKICAgICAgICAgY2VydGlmaWNhdGUuIiIiCkBAIC00
OTAsMTYgKzYyOSwxNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
ICAgIGNtZCA9IFtzZWxmLmNlcnR1dGlsX2JpbmFyeV0gKyBsaXN0KGFyZ3MpCiAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dCgiY2VydHV0aWwiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnBy
b2Nlc3MuU1RET1VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
Ii5qb2luKGNtZCkpCiAKLSAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnByb2Zp
bGUucHJvZmlsZSwgIi5jcnRkYnB3IikKKyAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihw
cm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCiAgICAgICAgIHdpdGggb3Blbihwd19wYXRoLCAi
dyIpIGFzIGY6CiAgICAgICAgICAgICAjIFVzZSBlbXB0eSBwYXNzd29yZCBmb3IgY2VydGlmaWNh
dGUgZGIKICAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgICAgICBjZXJ0X2RiX3BhdGgg
PSBzZWxmLnByb2ZpbGUucHJvZmlsZQorICAgICAgICBjZXJ0X2RiX3BhdGggPSBwcm9maWxlLnBy
b2ZpbGUKIAogICAgICAgICAjIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBkYgogICAgICAgICBj
ZXJ0dXRpbCgiLU4iLCAiLWQiLCBjZXJ0X2RiX3BhdGgsICItZiIsIHB3X3BhdGgpCkBAIC01MTAs
MyArNjQ5LDEwNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKIAogICAgICAgICAj
IExpc3QgYWxsIGNlcnRzIGluIHRoZSBkYXRhYmFzZQogICAgICAgICBjZXJ0dXRpbCgiLUwiLCAi
LWQiLCBjZXJ0X2RiX3BhdGgpCisKKworCitjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToK
KyAgICBpbml0X3RpbWVvdXQgPSA3MAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19i
aW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAgICAgICAgIGNhX2Nl
cnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwg
ZW5hYmxlX2Zpc3Npb249RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0YWNrZml4X2Rpcj1Ob25l
LCBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgYXNhbj1GYWxzZSwgc3R5bG9fdGhyZWFkcz0xLCBjaGFv
c19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLAorICAgICAgICAgICAgICAgICBicm93c2Vy
X2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFkbGVzcz1Ob25lLCBwcmVsb2FkX2Jyb3dzZXI9RmFsc2Us
ICoqa3dhcmdzKToKKyAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBpZiB0aW1lb3V0X211bHRpcGxp
ZXI6CisgICAgICAgICAgICBzZWxmLmluaXRfdGltZW91dCA9IHNlbGYuaW5pdF90aW1lb3V0ICog
dGltZW91dF9tdWx0aXBsaWVyCisKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKKworICAg
ICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJv
bHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBz
dGFja3dhbGtfYmluYXJ5CisKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgorICAgICAgICBzZWxm
LmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisKKyAgICAgICAgcHJvZmlsZV9jcmVhdG9yID0gUHJv
ZmlsZUNyZWF0b3IobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJl
ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQor
CisgICAgICAgIGlmIHByZWxvYWRfYnJvd3NlcjoKKyAgICAgICAgICAgIGluc3RhbmNlX21hbmFn
ZXJfY2xzID0gUHJlbG9hZEluc3RhbmNlTWFuYWdlcgorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBTaW5nbGVJbnN0YW5jZU1hbmFnZXIKKyAgICAgICAg
c2VsZi5pbnN0YW5jZV9tYW5hZ2VyID0gaW5zdGFuY2VfbWFuYWdlcl9jbHMobG9nZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
bmFyeV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlX2NyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxhZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRsZXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi
bGVfd2VicmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFrX2NoZWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNh
bikKKworCisgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgorICAgICAgICByZXR1cm4geyJj
aGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVha3MsCisgICAgICAg
ICAgICAgICAgImxzYW5fZGlzYWJsZWQiOiB0ZXN0LmxzYW5fZGlzYWJsZWQsCisgICAgICAgICAg
ICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAg
ICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5t
b3psZWFrX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNl
bGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKworICAgIGRlZiBzdGFy
dChzZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW5z
dGFuY2UgPSBzZWxmLmluc3RhbmNlX21hbmFnZXIuZ2V0KCkKKyAgICAgICAgc2VsZi5pbnN0YW5j
ZS5vdXRwdXRfaGFuZGxlci5zZXR1cChzZWxmLmluc3RhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCisgICAgZGVmIHN0b3Aoc2Vs
ZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIuc3RvcF9jdXJy
ZW50KGZvcmNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3RvcHBlZCIpCisKKyAgICBk
ZWYgcGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5waWQoKQorCisgICAg
ZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZSBhbmQgc2Vs
Zi5pbnN0YW5jZS5pc19hbGl2ZSgpCisKKyAgICBkZWYgY2xlYW51cChzZWxmLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlci50ZWFyZG93bihmb3JjZSkKKworICAg
IGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5pbnN0YW5j
ZSBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Im1hcmlvbmV0
dGVfcG9ydCI6IHNlbGYuaW5zdGFuY2UubWFyaW9uZXR0ZV9wb3J0fQorCisgICAgZGVmIGNoZWNr
X2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgorICAgICAgICBkdW1wX2RpciA9IG9zLnBhdGgu
am9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9maWxlLnByb2ZpbGUsICJtaW5pZHVtcHMiKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxvZ19jcmFz
aGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxr
X2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3M9cHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiTG9va2luZyBmb3IgY3Jhc2ggZHVtcCBmaWxlcyBmYWlsZWQiKQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5k
cm9pZC5weQppbmRleCAzM2I1ZDUxZTU0ZTgyYWRiNmNkYmU0NjEyMjYzYmMzMDg4M2RkMTA4Li5h
NmNiOGYwZGQzZTBmNjY5ZDQ3YjRhOWE0YTcyOGQ5OWZjNjQ4OTg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKQEAgLTEsMjYgKzEsMzAgQEAKIGltcG9ydCBvcwog
CiBpbXBvcnQgbW96bmV0d29yawotZnJvbSBtb3pwcm9maWxlIGltcG9ydCBGaXJlZm94UHJvZmls
ZQogZnJvbSBtb3pydW5uZXIgaW1wb3J0IEZlbm5lY0VtdWxhdG9yUnVubmVyCiAKIGZyb20gLmJh
c2UgaW1wb3J0IChnZXRfZnJlZV9wb3J0LAogICAgICAgICAgICAgICAgICAgIGNtZF9hcmcsCiAg
ICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jb21tYW5kKQogZnJvbSAuLmV4ZWN1dG9ycy5leGVj
dXRvcm1hcmlvbmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMg
bm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2Vz
cyBpbXBvcnQgY2FzdF9lbnYKK2Zyb20gLmJhc2UgaW1wb3J0IChCcm93c2VyLAorICAgICAgICAg
ICAgICAgICAgIEV4ZWN1dG9yQnJvd3NlcikKIGZyb20gLmZpcmVmb3ggaW1wb3J0IChnZXRfdGlt
ZW91dF9tdWx0aXBsaWVyLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAgcnVu
X2luZm9fZXh0cmFzIGFzIGZ4X3J1bl9pbmZvX2V4dHJhcywKICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfcHJvcGVydGllcywgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dG9yX2t3YXJncywgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgIEZp
cmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgUHJvZmls
ZUNyZWF0b3IgYXMgRmlyZWZveFByb2ZpbGVDcmVhdG9yKQogCiAKIF9fd3B0cnVubmVyX18gPSB7
InByb2R1Y3QiOiAiZmlyZWZveF9hbmRyb2lkIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2Fy
Z3MiOiAiY2hlY2tfYXJncyIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkZpcmVmb3hB
bmRyb2lkQnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5l
c3MiOiAiTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIk1h
cmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9r
d2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dh
cmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLApAQCAtNTEsNiArNTUsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJ0aW1l
b3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncyksCisgICAgICAgICAgICAiZTEwcyI6IHJ1bl9pbmZvX2RhdGFb
ImUxMHMiXSwKICAgICAgICAgICAgICMgZGVza3RvcCBvbmx5CiAgICAgICAgICAgICAibGVha19j
aGVjayI6IEZhbHNlLAogICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBrd2FyZ3NbInN0eWxv
X3RocmVhZHMiXSwKQEAgLTgwLDQwICs4NSwxNSBAQCBkZWYgZW52X29wdGlvbnMoKToKICAgICAg
ICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9CiAKIAotY2xhc3MgRmlyZWZveEFuZHJv
aWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQgPSAzMDAKLSAgICBz
aHV0ZG93bl90aW1lb3V0ID0gNjAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBy
ZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcu
dGVzdCIsCi0gICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCAq
Kmt3YXJncyk6Ci0gICAgICAgIEZpcmVmb3hCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
Tm9uZSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wYWNr
YWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gZGV2
aWNlX3NlcmlhbAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBrd2FyZ3NbInRlc3RzX3Jvb3Qi
XQotICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBrd2FyZ3NbImluc3RhbGxfZm9udHMiXQot
ICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBrd2FyZ3NbInN0YWNrd2Fsa19iaW5hcnki
XQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5tYXJp
b25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0g
Z2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgZW52ID0ge30KLSAgICAgICAgZW52WyJNT1pfQ1JB
U0hSRVBPUlRFUiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVJfU0hVVERP
V04iXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FMX0NPTk5FQ1RJT05T
Il0gPSAiMSIKLSAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIoc2VsZi5zdHlsb190
aHJlYWRzKQotICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNoYW9zX21vZGVfZmxh
Z3MpCi0gICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKLSAgICAgICAgICAgIGVudlsi
TU9aX1dFQlJFTkRFUiJdID0gIjEiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbnZbIk1P
Wl9XRUJSRU5ERVIiXSA9ICIwIgotCi0gICAgICAgIHByZWZlcmVuY2VzID0gc2VsZi5sb2FkX3By
ZWZzKCkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUs
IGV4dHJhX3ByZWZzLCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJv
d3Nlcl9jaGFubmVsLCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRlX3BhdGgpOgorICAg
ICAgICBzdXBlcihQcm9maWxlQ3JlYXRvciwgc2VsZikuX19pbml0X18obG9nZ2VyLCBwcmVmc19y
b290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLCBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9j
aGFubmVsLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCi0gICAgICAgIHNlbGYu
cHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAg
ICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRl
LnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKKyAgICBkZWYgX3NldF9yZXF1aXJlZF9wcmVm
cyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoewogICAg
ICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2luKHNlbGYuY29uZmln
LmRvbWFpbnNfc2V0KSwKICAgICAgICAgICAgICJkb20uZGlzYWJsZV9vcGVuX2R1cmluZ19sb2Fk
IjogRmFsc2UsCiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLApA
QCAtMTIxLDkgKzEwMSwxMiBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJy
b3dzZXIpOgogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUsCiAgICAgICAgIH0p
CiAKKyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9KQorCiAgICAgICAg
IGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmluZm8oIlNldHRpbmcgYW5kcm9pZCByZWZ0ZXN0IHByZWZlcmVuY2VzIikKLSAgICAgICAgICAg
IHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeworICAgICAgICAgICAgcHJvZmlsZS5zZXRf
cHJlZmVyZW5jZXMoewogICAgICAgICAgICAgICAgICJicm93c2VyLnZpZXdwb3J0LmRlc2t0b3BX
aWR0aCI6IDgwMCwKICAgICAgICAgICAgICAgICAjIERpc2FibGUgaGlnaCBEUEkKICAgICAgICAg
ICAgICAgICAibGF5b3V0LmNzcy5kZXZQaXhlbHNQZXJQeCI6ICIxLjAiLApAQCAtMTM1LDYgKzEx
OCw3MyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgogICAg
ICAgICAgICAgICAgICJsYXlvdXQudGVzdGluZy5vdmVybGF5LXNjcm9sbGJhcnMuYWx3YXlzLXZp
c2libGUiOiBUcnVlLAogICAgICAgICAgICAgfSkKIAorCisKK2NsYXNzIEZpcmVmb3hBbmRyb2lk
QnJvd3NlcihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSAzMDAKKyAgICBzaHV0ZG93bl90
aW1lb3V0ID0gNjAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3Qs
IHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcudGVzdCIsCisg
ICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCBleHRyYV9wcmVm
cz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1O
b25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1Ob25lLAorICAgICAg
ICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93
ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5h
cnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwg
YXNhbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2Rl
X2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLAorICAg
ICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5vbmUsICoqa3dh
cmdzKToKKworICAgICAgICBzdXBlcihGaXJlZm94QW5kcm9pZEJyb3dzZXIsIHNlbGYpLl9faW5p
dF9fKGxvZ2dlcikKKyAgICAgICAgc2VsZi5wcmVmc19yb290ID0gcHJlZnNfcm9vdAorICAgICAg
ICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9
IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFs
CisgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KKyAgICAgICAgc2VsZi5zeW1i
b2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5ID0g
c3RhY2t3YWxrX2JpbmFyeQorICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGls
X2JpbmFyeQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0
ZV9wYXRoCisgICAgICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfd2Vi
cmVuZGVyID0gZW5hYmxlX3dlYnJlbmRlcgorICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAg
ICAgc2VsZi50aW1lb3V0X211bHRpcGxpZXIgPSB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAg
c2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCisg
ICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2VsZi5j
aGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZworICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAor
ICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBpbnN0YWxsX2ZvbnRzCisgICAgICAgIHNlbGYu
dGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKworICAgICAgICBzZWxmLnByb2ZpbGVfY3JlYXRvciA9
IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgpCisKKyAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYucHJvZmlsZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKyAgICBkZWYgc2V0dGluZ3Moc2VsZiwgdGVz
dCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBu
b3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2Fu
X2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2RlcHRoIjogdGVzdC5s
c2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVha19hbGxvd2VkIjog
c2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAgICAgICAgICAgICAg
ICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtf
dGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaWYg
c2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0
ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgc2VsZi5wcm9maWxlID0gc2VsZi5w
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJl
bmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fSkKKwogICAgICAg
ICBpZiBzZWxmLmluc3RhbGxfZm9udHM6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
Q29weWluZyBBaGVtIGZvbnQgdG8gcHJvZmlsZSIpCiAgICAgICAgICAgICBmb250X2RpciA9IG9z
LnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgImZvbnRzIikKQEAgLTE0NiwxOCArMTk2
LDI3IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAKICAg
ICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogCi0gICAgICAgIGlmIHNlbGYuY2Ff
Y2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3Ns
KCkKLQogICAgICAgICBkZWJ1Z19hcmdzLCBjbWQgPSBicm93c2VyX2NvbW1hbmQoc2VsZi5wYWNr
YWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJv
dXQ6YmxhbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVidWdfaW5mbykKIAorICAgICAgICBlbnYgPSB7fQorICAgICAgICBlbnZbIk1PWl9DUkFT
SFJFUE9SVEVSIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9X
TiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMi
XSA9ICIxIgorICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3Ro
cmVhZHMpCisgICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFn
cykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAgICAgICAgZW52WyJN
T1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudlsiTU9a
X1dFQlJFTkRFUiJdID0gIjAiCisKICAgICAgICAgc2VsZi5ydW5uZXIgPSBGZW5uZWNFbXVsYXRv
clJ1bm5lcihhcHA9c2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZT1zZWxmLnByb2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9s
c19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlh
bD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKQEAgLTE5Niw2ICsy
NTUsMjYgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKICAg
ICAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
c3RvcHBlZCIpCiAKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJ1bm5lci5w
cm9jZXNzX2hhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlci5w
aWQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5uZXI6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBz
ZWxmLnN0b3AoZm9yY2UpCisKKyAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQiOiBzZWxmLm1hcmlv
bmV0dGVfcG9ydH0KKwogICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToK
ICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCJNSU5JRFVNUF9TVEFDS1dBTEsiLCAiIikg
YW5kIHNlbGYuc3RhY2t3YWxrX2JpbmFyeToKICAgICAgICAgICAgIG9zLmVudmlyb25bIk1JTklE
VU1QX1NUQUNLV0FMSyJdID0gc2VsZi5zdGFja3dhbGtfYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKaW5k
ZXggNjM1ZTgyN2MyOTViNWIxMTkyODIyZjUxZDkzYTRiMDllMzc2NDE5Mi4uNzhjMjJiOTA5YWNm
NDEwMDM4ZmYwNjc2OTM2NjY2MmFiMGM1ODlhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2llLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQpAQCAtNjQsNyAr
NjQsNyBAQCBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5w
eQppbmRleCA1NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2MmNlNDBkNzQ5ZGRhY2I2YTgzLi44MDVmZWRl
ZTYzNmNkMjIxNTVlZDE0M2NmMTE0OGYzYzJmNWQ5OGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvb3BlcmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5
CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJp
LnB5CmluZGV4IGY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5NTA2OTQ2Yjk1MzhiNjcuLmNiMmIx
NzVkNGRmYmMzMTY2ZTRhZDVhNmFmZTE3NGZmZGJjNmZmOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFy
aS5weQpAQCAtMyw3ICszLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFy
aURyaXZlclNlcnZlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFz
IGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVy
IGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2FmYXJpIGlt
cG9ydCBTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIApAQCAtMTIs
NyArMTMsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogInNhZmFyaSIsCiAgICAgICAg
ICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3Ii
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVm
VGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAi
U2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRv
ciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3Mi
LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIs
CiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLApAQCAtNzksNyAr
ODEsNyBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRv
KTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFu
ZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAg
ICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVw
KHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CmluZGV4IDMz
MDFjNzViMjEwMDRhNTU0ZjkxZDQ3NjdiODU2MGZjNDAyMTQ0MTIuLmZlODM2ODJmNWZjMTZmNGIy
ZGE2NjRiOGU2Y2E0ZGJjOGRkYzUwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKQEAgLTksMTAg
KzksMTEgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiBpbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aW1lCi1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8gYXMgQ1N0cmlu
Z0lPCiAKIGltcG9ydCByZXF1ZXN0cwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lP
IGFzIFN0cmluZ0lPCisKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nl
ciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIg
ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBh
cyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTI0LDcgKzEyNSw3IEBAIGRlZiBlbnZfb3B0aW9u
cygpOgogZGVmIGdldF90YXIodXJsLCBkZXN0KToKICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KHVy
bCwgc3RyZWFtPVRydWUpCiAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKLSAgICB3aXRoIHRh
cmZpbGUub3BlbihmaWxlb2JqPUNTdHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkpKSBhcyBmOgorICAg
IHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9U3RyaW5nSU8ocmVzcC5yYXcucmVhZCgpKSkgYXMg
ZjoKICAgICAgICAgZi5leHRyYWN0YWxsKHBhdGg9ZGVzdCkKIAogCkBAIC0xNzgsNyArMTc5LDcg
QEAgY2xhc3MgU2F1Y2VDb25uZWN0KCk6CiAKICAgICAgICAgdG90X3dhaXQgPSAwCiAgICAgICAg
IHdoaWxlIG5vdCBvcy5wYXRoLmV4aXN0cygnLi9zYXVjZV9pc19yZWFkeScpIGFuZCBzZWxmLnNj
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiB0b3Rfd2FpdCA+PSBzZWxm
LnNhdWNlX2luaXRfdGltZW91dDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNhdWNlX2luaXRf
dGltZW91dCBvciAodG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3RpbWVvdXQpOgogICAgICAg
ICAgICAgICAgIHNlbGYucXVpdCgpCiAKICAgICAgICAgICAgICAgICByYWlzZSBTYXVjZUV4Y2Vw
dGlvbigiU2F1Y2UgQ29ubmVjdCBQcm94eSB3YXMgbm90IHJlYWR5IGFmdGVyICVkIHNlY29uZHMi
ICUgdG90X3dhaXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2
ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKaW5kZXggMjk1M2Rl
MTgxNzRlZjc1ZDUwNWRiMGI4ZDUxOGZlMzMzOWY3MDY1ZS4uMDJiNzk2Yjc1NjAzODVjZDAwOTAy
YmJmYzFiMzYxYTU0MjI0OWY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nl
cnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQpA
QCAtMTEsNiArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVy
ICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3Mg
YXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZXJ2b2Ry
aXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTog
RjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vydm9X
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNzIGlt
cG9ydCBjYXN0X2VudgogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdKQogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlckJyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRlYnVnX2luZm8gb3Igbm90IHNlbGYu
ZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NI
YW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJv
Yy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vz
cy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBz
dWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVudikpCiAKICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZvIFN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtp
dC5weQppbmRleCBhYTI4NjIxMzk0NTBmNjgyZTYwNTFjNWY2MTdhYjhjYWYxOTYwNzg0Li5kYTkz
Y2YxNjQzOTk1ZDk1YjhkNmRlMWY3MGM3NzMxYjU1NTk3NjhiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJr
aXQucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9y
QnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRp
cGxpZXIsIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJu
ZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhl
Y3V0b3IgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFdlYktp
dERyaXZlclNlcnZlcgogCkBAIC0xMyw3ICsxNCw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0IiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dz
ZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6
ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9y
In0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRl
c3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4
ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52
X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjog
ImVudl9vcHRpb25zIiwKQEAgLTk5LDcgKzEwMSw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2
ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdo
ZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNf
YWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQppbmRleCBk
NzM1ZjNjMDc5MmE2MzU2YzYyNzAxNDMyMDVjNTViN2MwMmVlZjQ3Li5kOGI5NzQ0YmQ3NDNlMzlj
ZTE5ZjAwOGU3ZjQwY2JjODBlODAxMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0
IGdldF90aW1lb3V0X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0aWZpY2F0ZV9kb21h
aW5fbGlzCiBmcm9tIC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZyb20gLi5leGVjdXRv
cnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNz
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhl
Y3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogIndlYmtpdGd0
a19taW5pYnJvd3NlciIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJf
a3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjog
eyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRv
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAg
ICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAg
ICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAg
ImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
bnZpcm9ubWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQppbmRleCBlNzlhZTM3
NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4Li5mNzY4MzZlYTY2YjU5YmIxNmYyZDM3
OTI0NTFiY2YyOGVjYjJmYjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBv
cnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgZ2V0X2RlZmF1bHRfbG9n
Z2VyLCBoYW5kbGVycywgcHJveHkKIApAQCAtNTIsNyArNTMsOSBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnRFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAg
ICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdGVzdCBlbnZpcm9ubWVudCBpLmUu
IHRoZSBodHRwIGFuZAogICAgIHdlYnNvY2tldHMgc2VydmVycyIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciwgcGF1c2Vf
YWZ0ZXJfdGVzdCwgZGVidWdfaW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywgZW52X2V4dHJhcyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRf
bXVsdGlwbGVyLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZv
LCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBlbmFi
bGVfcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAg
ICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IE5vbmUK
QEAgLTY4LDYgKzcxLDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzX2Nt
cyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZpZworICAgICAgICBz
ZWxmLmVuYWJsZV9xdWljID0gZW5hYmxlX3F1aWMKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6
CiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IHNlbGYuYnVpbGRfY29uZmlnKCkKQEAgLTkxLDYg
Kzk1LDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5z
ZXJ2ZXJzID0gc2VydmUuc3RhcnQoc2VsZi5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3JvdXRlcygpKQorCiAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5nZXQoInN1cHBvcnRzX2RlYnVnZ2VyIikgYW5kIHNlbGYuZGVidWdfaW5mbyBhbmQgc2VsZi5k
ZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAgICAgICAgICAgc2VsZi5pZ25vcmVfaW50ZXJydXB0
cygpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC05OCw3ICsxMDMsNyBAQCBjbGFzcyBUZXN0RW52
aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192
YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRzKCkKIAotICAgICAg
ICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2ZXJzKToKICAgICAg
ICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAgICAgICAgICBzZXJ2
ZXIua2lsbCgpCiAgICAgICAgIGZvciBjbSBpbiBzZWxmLmVudl9leHRyYXNfY21zOgpAQCAtMTI2
LDcgKzEzMSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAg
ICJodHRwcyI6IFs4NDQzXSwKICAgICAgICAgICAgICJ3cyI6IFs4ODg4XSwKICAgICAgICAgICAg
ICJ3c3MiOiBbODg4OV0sCisgICAgICAgICAgICAiaDIiOiBbOTAwMF0sCiAgICAgICAgIH0KKyAg
ICAgICAgaWYgc2VsZi5lbmFibGVfcXVpYzoKKyAgICAgICAgICAgIGNvbmZpZy5wb3J0c1sicXVp
YyJdID0gWzEwMDAwXQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgp
OgogICAgICAgICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6CkBAIC0xOTEsMTAg
KzE5OSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIGRh
dGEgKz0gZnAucmVhZCgpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Rkcml2ZXItZXh0cmEuanMiKSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICBkYXRhICs9IGZw
LnJlYWQoKQotICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKGIiR0VUIiwgYiIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXIuanMiLAorICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVy
KCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFzY3JpcHQiKSkKIAot
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVyaXRlbXMo
KToKKyAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMoc2VsZi50ZXN0X3Bh
dGhzKToKICAgICAgICAgICAgIGlmIHVybF9iYXNlID09ICIvIjoKICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfbW91bnRfcG9pbnQodXJsX2Jh
c2UsIHBhdGhzWyJ0ZXN0c19wYXRoIl0pCkBAIC0yMTAsOCArMjE4LDEwIEBAIGNsYXNzIFRlc3RF
bnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBlYWNoX3NsZWVwX3NlY3MgPSAwLjUKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MKICAgICAgICAgd2hp
bGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKLSAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYudGVz
dF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CisgICAgICAgICAgICBmYWls
ZWQsIHBlbmRpbmcgPSBzZWxmLnRlc3Rfc2VydmVycygpCisgICAgICAgICAgICBpZiBmYWlsZWQ6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nOgogICAg
ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdGltZS5zbGVlcChlYWNoX3NsZWVwX3Nl
Y3MpCiAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXJyb3IoIlNlcnZlcnMgZmFpbGVkIHRvIHN0
YXJ0OiAlcyIgJQpAQCAtMjE5LDE5ICsyMjksMjMgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzKHNlbGYpOgogICAgICAgICBmYWlsZWQgPSBb
XQorICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2
ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0
ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxm
LnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBzZXJ2ZXJzOgotICAg
ICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBl
bmQoKHNjaGVtZSwgcG9ydCkpCisKKyAgICAgICAgaWYgbm90IGZhaWxlZCBhbmQgc2VsZi50ZXN0
X3NlcnZlcl9wb3J0OgorICAgICAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRl
bXMoc2VsZi5zZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNl
cnZlcnM6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMSkKICAgICAgICAgICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWxlZC5hcHBlbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGVu
ZGluZy5hcHBlbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQo
KHNjaGVtZSwgcG9ydCkpCi0gICAgICAgIHJldHVybiBmYWlsZWQKKyAgICAgICAgcmV0dXJuIGZh
aWxlZCwgcGVuZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25z
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDNk
ZDY2NWEyZjNiYzU1NzZjYjUzNWYyOWQ0OWFiYmM5NTkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKQEAgLTAsMCArMSwxODQgQEAKKworY2xh
c3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImNsaWNrIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJd
CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVj
dG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcgZWxlbWVu
dDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxlbWVudChl
bGVtZW50KQorCisKK2NsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJz
ZW5kX2tleXMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Cisg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90
b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBzZWxlY3Rv
ciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQor
ICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3Rv
cihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBl
bGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMu
c2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24o
b2JqZWN0KToKKyAgICBuYW1lID0gImFjdGlvbl9zZXF1ZW5jZSIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6CisgICAgICAgICMgVE9ETzogc29tZSBzb3J0IG9mIHNoYWxsb3cgZXJyb3Ig
Y2hlY2tpbmcKKyAgICAgICAgYWN0aW9ucyA9IHBheWxvYWRbImFjdGlvbnMiXQorICAgICAgICBm
b3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9uczoKKyAgICAgICAgICAgIGlmIGFjdGlvblNlcXVl
bmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgorICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4g
YWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlv
blsidHlwZSJdID09ICJwb2ludGVyTW92ZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBp
c2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0sIGRpY3QpKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxmLmdldF9lbGVtZW50KGFjdGlvblsib3JpZ2luIl1b
InNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUiXVsiZnJhbWUiXSkKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9hY3Rpb25zKHsiYWN0aW9ucyI6IGFjdGlvbnN9KQor
CisgICAgZGVmIGdldF9lbGVtZW50KHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKKyAg
ICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Io
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIHJldHVybiBlbGVtZW50CisKK2NsYXNz
IEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiZ2VuZXJhdGVf
dGVzdF9yZXBvcnQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBw
cm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBtZXNz
YWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5l
cmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzZWxmLnByb3RvY29s
LmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCisKK2Ns
YXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF9wZXJtaXNz
aW9uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgcGVybWlzc2lvbl9w
YXJhbXMgPSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCisgICAgICAgIGRlc2NyaXB0b3Ig
PSBwZXJtaXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCisgICAgICAgIG5hbWUgPSBkZXNjcmlw
dG9yWyJuYW1lIl0KKyAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFtc1sic3RhdGUiXQor
ICAgICAgICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9uZVJlYWxtIiwgRmFs
c2UpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1pc3Npb24gJXMgdG8g
JXMsIG9uZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNjcmlwdG9yLCBzdGF0
ZSwgb25lX3JlYWxtKQorCitjbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmpl
Y3QpOgorICAgIG5hbWUgPSAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgdmly
dHVhbCBhdXRoZW50aWNhdG9yIikKKyAgICAgICAgY29uZmlnID0gcGF5bG9hZFsiY29uZmlnIl0K
KyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50
aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMiICUgYXV0aGVudGlj
YXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKKworY2xhc3MgUmVtb3Zl
VmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInJlbW92ZV92
aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoYXV0aGVudGljYXRv
cl9pZCkKKworCitjbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9
ICJhZGRfY3JlZGVudGlhbCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3Rv
Y29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2Nv
bCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAg
IGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAg
Y3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQorICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50aWNhdG9yICVzICIgJSBh
dXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlhbCkK
KworY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImdldF9j
cmVkZW50aWFscyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToK
KyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhl
bnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0dWFsIGF1dGhlbnRpY2F0
b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29s
LnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkK
KworY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAicmVt
b3ZlX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIGNy
ZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KKyAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50aWNhdG9yICVzIiAl
IChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50aWFsKGF1dGhlbnRp
Y2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCisKK2NsYXNzIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfYWxsX2NyZWRlbnRpYWxzIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3Zp
bmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9y
X2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iu
cmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitjbGFzcyBTZXRVc2Vy
VmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF91c2VyX3ZlcmlmaWVkIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9
IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBheWxvYWRbInV2Il0K
KyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0dGluZyB1c2VyIHZl
cmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0aGVudGljYXRvcl9p
ZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52
aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVudGljYXRvcl9pZCwg
dXYpCisKKworYWN0aW9ucyA9IFtDbGlja0FjdGlvbiwKKyAgICAgICAgICAgU2VuZEtleXNBY3Rp
b24sCisgICAgICAgICAgIEFjdGlvblNlcXVlbmNlQWN0aW9uLAorICAgICAgICAgICBHZW5lcmF0
ZVRlc3RSZXBvcnRBY3Rpb24sCisgICAgICAgICAgIFNldFBlcm1pc3Npb25BY3Rpb24sCisgICAg
ICAgICAgIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAorICAgICAgICAgICBSZW1vdmVW
aXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgQWRkQ3JlZGVudGlhbEFjdGlv
biwKKyAgICAgICAgICAgR2V0Q3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUNy
ZWRlbnRpYWxBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0aW9uLAor
ICAgICAgICAgICBTZXRVc2VyVmVyaWZpZWRBY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKaW5k
ZXggM2Q4YWY0ZGU0ODY4ZTlkYTg2YjM4ZDFjOWQ3YjMyZWQwYmZkMjY1Yi4uYzc1YThlZjMyMGYy
ZDE0OTIwNmM5YWI4MmNlNTViYjc1NGRkYmI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQpAQCAt
MSw2ICsxLDUgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBoYXNobGliCi1mcm9tIHNpeC5tb3Zl
cy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KIGltcG9ydCBpbwogaW1wb3J0IGpz
b24KIGltcG9ydCBvcwpAQCAtOCwxMCArNywxMyBAQCBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiBmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUK
K2Zyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgorZnJvbSBz
aXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdCwgdXJsdW5zcGxp
dAogCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorZnJvbSAuYWN0aW9ucyBpbXBvcnQg
YWN0aW9ucwogZnJvbSAucHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNlUHJvdG9jb2xQYXJ0
CiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXQpAQCAtMTYyLDE0ICsxNjQsMTgg
QEAgY2xhc3MgVGltZWRSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3Vs
dCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgIiVzLnJ1bl9mdW5jIGRpZG4ndCBzZXQgYSBy
ZXN1bHQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMgbWF5IGluZGljYXRlIGEg
aGFuZylcbiIKLSAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBmb3IgdGhlIGN1cnJl
bnQgc3RhY2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtl
eGVjdXRvci5pZGVudF0pKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgi
RVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5wcm90
b2NvbC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkV4ZWN1dG9y
IGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0ZSBhIGhhbmcpXG4iCisgICAg
ICAgICAgICAgICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBv
ZiB0aGUgZXhlY3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiIu
am9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtleGVjdXRv
ci5pZGVudF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVY
VEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRpbmcsIHNl
dHRpbmcgc3RhdHVzIHRvIENSQVNIIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBGYWxzZSwgKCJDUkFTSCIsIE5vbmUpCiAgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRbMV0gaXMg
Tm9uZToKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCBhbnkgZGF0YSBiYWNrIGZyb20gdGhl
IHRlc3QsIHNvIGNoZWNrIGlmIHRoZQogICAgICAgICAgICAgIyBicm93c2VyIGlzIHN0aWxsIHJl
c3BvbnNpdmUKLSAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxpdmU6CisgICAgICAg
ICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIE5vbmUpCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRp
bmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKQEAgLTIxMCw4ICsyMTYsOSBAQCBjbGFzcyBU
ZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBleHRyYV90aW1lb3V0ID0gNSAgIyBzZWNvbmRzCiAK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgZGVi
dWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAg
ICAgICAgIHNlbGYucnVubmVyID0gTm9uZQogICAgICAgICBzZWxmLmJyb3dzZXIgPSBicm93c2Vy
CiAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZyA9IHNlcnZlcl9jb25maWcKQEAgLTIyMSwxMiAr
MjI4LDYgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicHJlZnMiOiB7fX0KICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE5vbmUg
ICMgVGhpcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzCiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbG9nZ2VyKHNlbGYpOgotICAgICAgICAiIiJTdHJ1Y3R1cmVkTG9nZ2VyIGZvciB0aGlzIGV4
ZWN1dG9yIiIiCi0gICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucnVubmVyLmxvZ2dlcgotCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5l
cik6CiAgICAgICAgICIiIlJ1biBzdGVwcyBuZWVkZWQgYmVmb3JlIHRlc3RzIGNhbiBiZSBzdGFy
dGVkIGUuZy4gY29ubmVjdGluZyB0bwogICAgICAgICBicm93c2VyIGluc3RhbmNlCkBAIC0yNTUs
OCArMjU2LDkgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZG9fdGVzdCh0ZXN0KQogICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1bHRfZnJvbV9leGNl
cHRpb24odGVzdCwgZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9zdHJpbmcgPSB0cmFjZWJhY2su
Zm9ybWF0X2V4YygpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKGV4Y2VwdGlvbl9z
dHJpbmcpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9tX2V4Y2VwdGlvbih0
ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKQogCiAgICAgICAgIGlmIHJlc3VsdCBpcyBTdG9wOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjcwLDcgKzI3Miw4IEBAIGNsYXNzIFRlc3RF
eGVjdXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bm5lci5zZW5kX21lc3NhZ2UoInRlc3Rf
ZW5kZWQiLCB0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2VydmVyX3VybChzZWxmLCBwcm90b2Nv
bCk6Ci0gICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAocHJvdG9jb2wsCisgICAgICAgIHNj
aGVtZSA9ICJodHRwcyIgaWYgcHJvdG9jb2wgPT0gImgyIiBlbHNlIHByb3RvY29sCisgICAgICAg
IHJldHVybiAiJXM6Ly8lczolcyIgJSAoc2NoZW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1siYnJvd3Nlcl9ob3N0Il0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJdW3Byb3RvY29sXVsw
XSkKIApAQCAtMjg4LDE1ICsyOTEsMTUgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAg
ICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNlbGYsIHRlc3QsIGUp
OgorICAgIGRlZiByZXN1bHRfZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwgZSwgZXhjZXB0aW9u
X3N0cmluZyk6CiAgICAgICAgIGlmIGhhc2F0dHIoZSwgInN0YXR1cyIpIGFuZCBlLnN0YXR1cyBp
biB0ZXN0LnJlc3VsdF9jbHMuc3RhdHVzZXM6CiAgICAgICAgICAgICBzdGF0dXMgPSBlLnN0YXR1
cwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RhdHVzID0gIklOVEVSTkFMLUVSUk9SIgot
ICAgICAgICBtZXNzYWdlID0gdW5pY29kZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQorICAg
ICAgICBtZXNzYWdlID0gdGV4dF90eXBlKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAg
ICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICBtZXNzYWdlICs9IGV4Y2Vw
dGlvbl9zdHJpbmcKICAgICAgICAgcmV0dXJuIHRlc3QucmVzdWx0X2NscyhzdGF0dXMsIG1lc3Nh
Z2UpLCBbXQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0zMTAsOSArMzEzLDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogY2xhc3MgUmVmVGVzdEV4ZWN1dG9y
KFRlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSByZWZ0ZXN0X3Jlc3VsdF9jb252
ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLCBzY3JlZW5zaG90X2NhY2hlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2lu
Zm89Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwg
YnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAKQEAgLTQ5Niwx
MSArNDk5LDExIEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgY29u
dmVydF9yZXN1bHQgPSBweXRlc3RfcmVzdWx0X2NvbnZlcnRlcgogICAgIHByb3RvY29sX2NscyA9
IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB3
ZWJkcml2ZXJfYmluYXJ5LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAg
ICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmRv
X2RlbGF5ZWRfaW1wb3J0cygpCi0gICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXJfYmluYXJ5ID0gd2ViZHJpdmVyX2JpbmFyeQpAQCAtNTEwLDcgKzUxMyw3IEBA
IGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBzZWxmLnByb3RvY29sX2NscyhzZWxmLCBicm93c2VyKQogCiAgICAgZGVmIGlzX2FsaXZl
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAgICBy
ZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRf
Y2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MKQEAgLTU3Myw3ICs1
NzYsNyBAQCBjbGFzcyBXZHNwZWNSdW4ob2JqZWN0KToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBn
ZXRhdHRyKGUsICJtZXNzYWdlIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBt
ZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5z
ZXQoKQpAQCAtNjM2LDEwICs2MzksOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2Nv
bCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2FsaXZlOgorICAgICAg
ICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToK
ICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCi0gICAgQHByb3BlcnR5CiAgICAgZGVm
IGlzX2FsaXZlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMg
c3RpbGwgYWxpdmUuCiAKQEAgLTY3NSwyMCArNjc3LDcgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAiY29tcGxldGUiOiBzZWxmLnByb2Nlc3NfY29tcGxldGUK
ICAgICAgICAgfQogCi0gICAgICAgIHNlbGYuYWN0aW9ucyA9IHsKLSAgICAgICAgICAgICJjbGlj
ayI6IENsaWNrQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAg
ICJzZW5kX2tleXMiOiBTZW5kS2V5c0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAiYWN0aW9uX3NlcXVlbmNlIjogQWN0aW9uU2VxdWVuY2VBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdlbmVyYXRlX3Rlc3RfcmVw
b3J0IjogR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29s
KSwKLSAgICAgICAgICAgICJzZXRfcGVybWlzc2lvbiI6IFNldFBlcm1pc3Npb25BY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF92aXJ0dWFsX2F1dGhl
bnRpY2F0b3IiOiBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2Vs
Zi5wcm90b2NvbCksCi0gICAgICAgICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6
IFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3Rv
Y29sKSwKLSAgICAgICAgICAgICJhZGRfY3JlZGVudGlhbCI6IEFkZENyZWRlbnRpYWxBY3Rpb24o
c2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdldF9jcmVkZW50aWFs
cyI6IEdldENyZWRlbnRpYWxzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAg
ICAgICAgICAgICJyZW1vdmVfY3JlZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV9hbGxfY3JlZGVu
dGlhbHMiOiBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgICAgICAic2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRVc2VyVmVyaWZpZWRB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICB9CisgICAgICAgIHNl
bGYuYWN0aW9ucyA9IHtjbHMubmFtZTogY2xzKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSBm
b3IgY2xzIGluIGFjdGlvbnN9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0KToKICAg
ICAgICAgdXJsLCBjb21tYW5kLCBwYXlsb2FkID0gcmVzdWx0CkBAIC03MjksMTUwICs3MTgsMyBA
QCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKIAogICAgIGRlZiBfc2VuZF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICBzZWxm
LnByb3RvY29sLnRlc3Rkcml2ZXIuc2VuZF9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBt
ZXNzYWdlPW1lc3NhZ2UpCi0KLQotY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9y
Il0KLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDbGlja2luZyBlbGVt
ZW50OiAlcyIgJSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50
KGVsZW1lbnQpCi0KLQotY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0K
LSAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQotICAgICAgICBlbGVtZW50ID0gc2VsZi5w
cm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikK
LSAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMp
Ci0KLQotY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2Vy
Ci0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYsIHBheWxvYWQpOgotICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVycm9y
IGNoZWNraW5nCi0gICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KLSAgICAgICAg
Zm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBpZiBhY3Rpb25TZXF1
ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKLSAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGlu
IGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rp
b25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAg
aXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdpbiJd
WyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCi0gICAgICAgIHNlbGYucHJv
dG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25zfSkK
LQotICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6Ci0g
ICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9y
KGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQotICAgICAgICByZXR1cm4gZWxlbWVudAotCi1jbGFz
cyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgotICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQot
ICAgICAgICBzZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3Rf
cmVwb3J0KG1lc3NhZ2UpCi0KLWNsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBwZXJtaXNzaW9uX3BhcmFtcyA9IHBh
eWxvYWRbInBlcm1pc3Npb25fcGFyYW1zIl0KLSAgICAgICAgZGVzY3JpcHRvciA9IHBlcm1pc3Np
b25fcGFyYW1zWyJkZXNjcmlwdG9yIl0KLSAgICAgICAgbmFtZSA9IGRlc2NyaXB0b3JbIm5hbWUi
XQotICAgICAgICBzdGF0ZSA9IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJdCi0gICAgICAgIG9u
ZV9yZWFsbSA9IHBlcm1pc3Npb25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0byAlcywgb25lUmVh
bG09JXMiICUgKG5hbWUsIHN0YXRlLCBvbmVfcmVhbG0pKQotICAgICAgICBzZWxmLnByb3RvY29s
LnNldF9wZXJtaXNzaW9uLnNldF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0YXRlLCBvbmVfcmVh
bG0pCi0KLWNsYXNzIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGlu
ZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQotICAgICAgICBjb25maWcgPSBwYXlsb2FkWyJjb25m
aWciXQotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcpCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRo
ZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9pZAotCi1jbGFzcyBS
ZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
LSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50
aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2Vs
Zi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGlj
YXRvcihhdXRoZW50aWNhdG9yX2lkKQotCi0KLWNsYXNzIEFkZENyZWRlbnRpYWxBY3Rpb24ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAg
IHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAot
Ci0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9y
X2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIGNyZWRlbnRpYWwgPSBw
YXlsb2FkWyJjcmVkZW50aWFsIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBj
cmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9p
ZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmFk
ZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCi0KLWNsYXNzIEdldENy
ZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
cHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAg
ICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBmcm9tIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50aWFscyhhdXRoZW50
aWNhdG9yX2lkKQotCi1jbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsi
Y3JlZGVudGlhbF9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVk
ZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVu
dGljYXRvcl9pZCkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVu
dGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lk
KQotCi1jbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJh
dXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGFs
bCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkK
LSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92
ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKLQotY2xhc3MgU2V0VXNlclZlcmlm
aWVkQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAg
YXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICB1
diA9IHBheWxvYWRbInV2Il0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAiU2V0dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIg
JSAoYXV0aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQotICAgICAgICByZXR1
cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQo
YXV0aGVudGljYXRvcl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9ybWFyaW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3Jt
YXJpb25ldHRlLnB5CmluZGV4IDU5ZjdlODY1YTViODcxMWZhNzFjOWM4OTU1ZWNhNzMxZTAwNDhj
M2YuLjJlYWYyNTgwMWRmNTAyNzZmMmIwMjQ0N2Q2OGEzZmM5OGM1YzM3N2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0zLDkgKzMsMTEgQEAg
aW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAogCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0
ZW1zLCBpdGVya2V5cworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
CisKIGVycm9ycyA9IE5vbmUKIG1hcmlvbmV0dGUgPSBOb25lCiBweXRlc3RydW5uZXIgPSBOb25l
CkBAIC0xMTMsOCArMTE1LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFz
ZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU29ja2V0IGNsb3NlZCIpCiAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC0x
MzIsMTcgKzEzNCwxNiBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQo
VGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgICAgICAjIENoZWNrIGlmIHdlIHByZXZpb3Vz
bHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBtYWtlIHN1cmUgaXQncyBj
bG9zZWQKICAgICAgICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi5f
Y2xvc2Vfd2luZG93cygpCi0gICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJl
bnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAgICAgICB1cmwgPSB1
cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwgIi90
ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2Fk
aW5nICVzIiAlIHVybCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kaXNtaXNzX2Fs
ZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmNyaXRpY2FsKAogICAgICAgICAgICAgICAgICJMb2FkaW5nIGluaXRpYWwg
cGFnZSAlcyBmYWlsZWQuIEVuc3VyZSB0aGF0IHRoZSAiCiAgICAgICAgICAgICAgICAgInRoZXJl
IGFyZSBubyBvdGhlciBwcm9ncmFtcyBib3VuZCB0byB0aGlzIHBvcnQgYW5kICIKICAgICAgICAg
ICAgICAgICAidGhhdCB5b3VyIGZpcmV3YWxsIHJ1bGVzIG9yIG5ldHdvcmsgc2V0dXAgZG9lcyBu
b3QgIgotICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIgJSAodXJsLCB0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkpCisgICAgICAgICAgICAgICAgciJwcmV2ZW50IGFjY2Vzcy5c
ZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQogICAgICAgICAgICAgcmFpc2UK
ICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi5tYXJpb25ldHRlLmN1cnJlbnRfd2lu
ZG93X2hhbmRsZQogICAgICAgICBmb3JtYXRfbWFwID0geyJ0aXRsZSI6IHRocmVhZGluZy5jdXJy
ZW50X3RocmVhZCgpLm5hbWUucmVwbGFjZSgiJyIsICciJyl9CkBAIC01OTIsNyArNTkzLDYgQEAg
Y2xhc3MgTWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgIGRlbCBzZWxm
Lm1hcmlvbmV0dGUKICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVByb3RvY29sLCBzZWxmKS50ZWFy
ZG93bigpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50X3dpbmRvd19oYW5kbGUK
QEAgLTYwMiwxNCArNjAyLDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6
CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVudCwg
bmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xkIHByZWZzCi0gICAg
ICAgIGZvciBuYW1lIGluIG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pLml0ZXJrZXlz
KCk6CisgICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9ubWVudC5nZXQoInBy
ZWZzIiwge30pKToKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5leGVjdXRvci5vcmlnaW5hbF9w
cmVmX3ZhbHVlc1tuYW1lXQogICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAg
ICAgICAgICBzZWxmLnByZWZzLmNsZWFyKG5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCi0gICAgICAgIGZvciBuYW1l
LCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVyaXRlbXMoKToK
KyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1lbnQuZ2V0
KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZf
dmFsdWVzW25hbWVdID0gc2VsZi5wcmVmcy5nZXQobmFtZSkKICAgICAgICAgICAgIHNlbGYucHJl
ZnMuc2V0KG5hbWUsIHZhbHVlKQogCkBAIC02NTksNyArNjU5LDcgQEAgY2xhc3MgRXhlY3V0ZUFz
eW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0
YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRy
YWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNl
LCAoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKQEAgLTY2OSwx
MSArNjY5LDExIEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiBj
bGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToK
ICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVs
dGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGRlYnVn
X2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnPUZh
bHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQg
ZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAg
VGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZl
cl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9t
dWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTY5OCw3ICs2OTgsNyBAQCBjbGFzcyBNYXJp
b25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAg
c2VsZi5wcm90b2NvbC50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmxhc3RfZW52aXJvbm1l
bnRbInByb3RvY29sIl0pCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlz
X2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmly
b25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
Zi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC03NjUsMTMgKzc2NSwxNCBA
QCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9y
KToKIAogCiBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNl
cnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3Jl
ZW5zaG90X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAg
ICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAgICAg
ICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9
RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBm
b3IgcmVmdGVzdHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
bnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTc5OCw3ICs3OTksNyBAQCBjbGFzcyBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBz
ZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fQogCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5lcik6Ci0gICAgICAgIHN1cGVyKHNlbGYuX19j
bGFzc19fLCBzZWxmKS5zZXR1cChydW5uZXIpCisgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IsIHNlbGYpLnNldHVwKHJ1bm5lcikKICAgICAgICAgc2VsZi5pbXBsZW1lbnRh
dGlvbi5zZXR1cCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAgICAgZGVmIHRlYXJk
b3duKHNlbGYpOgpAQCAtODA4LDE3ICs4MDksMTcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxm
LnByb3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBo
YW5kbGVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dp
dGNoX3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNz
X18sIHNlbGYpLnRlYXJkb3duKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2VsZikudGVhcmRvd24o
KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3Jz
IGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRXhjZXB0
aW9uIGR1cmluZyByZWZ0ZXN0IHRlYXJkb3duOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKICAgICBkZWYgcmVzZXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKipzZWxmLmltcGxlbWVudGF0
aW9uX2t3YXJncykKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1l
bnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLmxh
c3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTg5Myw4ICs4OTQsOSBAQCBjbGFz
cyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgog
ICAgIGRlZiBzZXR1cChzZWxmLCBzY3JlZW5zaG90PSJ1bmV4cGVjdGVkIik6CiAgICAgICAgIGRh
dGEgPSB7InNjcmVlbnNob3QiOiBzY3JlZW5zaG90fQogICAgICAgICBpZiBzZWxmLmV4ZWN1dG9y
Lmdyb3VwX21ldGFkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsidXJsQ291bnQi
XSA9IHt1cmxwYXJzZS51cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3VybChrZXlbMF0pLCBr
ZXlbMV0pOnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxfY291bnQiLCB7fSku
aXRlcml0ZW1zKCkKKyAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihzZWxm
LmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRh
LmdldCgidXJsX2NvdW50Iiwge30pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB2YWx1ZSA+IDF9CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5z
ZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJP
TUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5fc2VuZF9tZXNz
YWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKQEAgLTkzNCw5ICs5MzYsOSBAQCBjbGFzcyBJbnRl
cm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgogICAgICAg
ICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUud2lu
ZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBoYW5kbGVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyho
YW5kbGVzWzBdKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVyaW5nIHRlYXJkb3du
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4Yygp
KQogCiAKIGNsYXNzIEdlY2tvRHJpdmVyUHJvdG9jb2woV2ViRHJpdmVyUHJvdG9jb2wpOgpAQCAt
OTQ4LDExICs5NTAsMTEgQEAgY2xhc3MgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1dG9yKFdkc3BlY0V4
ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0
RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmln
LCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9RmFsc2UsCiAg
ICAgICAgICAgICAgICAgIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9u
ZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAg
Q3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywK
KyAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTk3Miw3ICs5NzQsNyBAQCBjbGFzcyBN
YXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgogICAgICAgICAg
ICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBu
ZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTk5MSwxNSAr
OTkzLDE2IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVj
dXRvcik6CiAgICAgICAgIGlmIG5vdCBzdWNjZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gZGF0
YVswXQogCisgICAgICAgIGV4dHJhID0gTm9uZQogICAgICAgICBpZiBzZWxmLmRlYnVnIGFuZCAo
c3VjY2VzcyBvciBzdGF0dXMgbm90IGluICgiQ1JBU0giLCAiSU5URVJOQUwtRVJST1IiKSk6CiAg
ICAgICAgICAgICBhc3NlcnRpb25fY291bnQgPSBzZWxmLnByb3RvY29sLmFzc2VydHMuZ2V0KCkK
ICAgICAgICAgICAgIGlmIGFzc2VydGlvbl9jb3VudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBkYXRhWyJleHRyYSJdID0geyJhc3NlcnRpb25fY291bnQiOiBhc3NlcnRpb25fY291bnR9
CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7ImFzc2VydGlvbl9jb3VudCI6IGFzc2VydGlvbl9j
b3VudH0KIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29u
dmVydF9yZXN1bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2Ns
cygqKmRhdGEpLCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoZXh0cmE9ZXh0
cmEsICpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYsIHByb3RvY29sLCB1
cmwsIHRpbWVvdXQpOgogICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVyYWdlLmlzX2VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKaW5kZXggY2Vj
YTgxMjExZTExNDA1NzdjYzNhNWYxNjNmZmUxN2M3M2RkNTZhMy4uOTYzMTJmM2Y5Zjk1NDJmZWRl
NjA5ZTZmOTllZjkzMTI3ZjEyMmQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcnNlbGVuaXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3JzZWxlbml1bS5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJs
cGFyc2UKIGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVy
bGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwKICAgICAgICAgICAg
ICAgICAgICBSZWZUZXN0RXhlY3V0b3IsCkBAIC03Miw4ICs3Myw4IEBAIGNsYXNzIFNlbGVuaXVt
QmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgICAgIGV4Y2VwdCAo
c29ja2V0LnRpbWVvdXQsIGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLkVycm9ySW5SZXNwb25zZUV4Y2VwdGlvbiwgSU9FcnJv
cik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0
X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgICAg
ICBicmVhawogCiAKQEAgLTg3LDggKzg4LDggQEAgY2xhc3MgU2VsZW5pdW1UZXN0aGFybmVzc1By
b3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVy
KHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAg
ICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3aXRjaF90b193aW5kb3coc2VsZi5ydW5uZXJfaGFu
ZGxlKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9y
LnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJsID0gdXJsam9pbihzZWxm
LnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCisgICAgICAgICAgICAg
ICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZ2V0KHVy
bCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi53ZWJkcml2ZXIuY3VycmVudF93
aW5kb3dfaGFuZGxlCkBAIC0yNjEsNyArMjYyLDcgQEAgY2xhc3MgU2VsZW5pdW1SdW4oVGltZWRS
dW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAg
c2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBAIC0yNzAsMTEg
KzI3MSwxMSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiBjbGFzcyBTZWxlbml1
bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNf
dGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAg
ICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19lYWdlcl9wYWdlbG9h
ZD1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlNlbGVuaXVtLWJhc2VkIGV4ZWN1dG9yIGZv
ciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10
aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3RvY29sID0gU2VsZW5pdW1Q
cm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMpCkBAIC0zNTUsMTEgKzM1NiwxMiBA
QCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikgewogCiAKIGNsYXNzIFNlbGVu
aXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNs
b3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBj
YXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxlbml1bSBXZWJEcml2
ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC0zNzEs
OCArMzczLDggQEAgY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKICAgICAgICAgc2VsZi5jbG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0ZXJfZG9uZQogICAg
ICAgICBzZWxmLmhhc193aW5kb3cgPSBGYWxzZQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fSkpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKKyAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIikpIGFzIGY6Cisg
ICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxl
bWVudGF0aW9uLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JzZXJ2by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weQpp
bmRleCA5Y2VmMWZiMmQ3Zjc4ZTg3MjllNTFmZjQwMGIzZGYyNDAyYTJlOTRlLi5mODNmMDExNWUw
MDY4MTE0YmI2MmE4MDRiMzA1NWNiNTEwODE0YjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9l
eGVjdXRvcnNlcnZvLnB5CkBAIC03LDYgKzcsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCitmcm9tIHNpeCBpbXBvcnQg
ZW5zdXJlX3N0ciwgaXRlcml0ZW1zCiAKIGZyb20gbW96cHJvY2VzcyBpbXBvcnQgUHJvY2Vzc0hh
bmRsZXIKIApAQCAtMjIsOCArMjMsMTAgQEAgZnJvbSAuYmFzZSBpbXBvcnQgKENvbm5lY3Rpb25s
ZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUHJvdG9jb2wpCiBmcm9t
IC5wcm9jZXNzIGltcG9ydCBQcm9jZXNzVGVzdEV4ZWN1dG9yCiBmcm9tIC4uYnJvd3NlcnMuYmFz
ZSBpbXBvcnQgYnJvd3Nlcl9jb21tYW5kCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYK
IGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBTZXJ2b0RyaXZlclNlcnZlcgogCisKIHB5
dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZlciA9IE5vbmUKIApAQCAtNDUsNyArNDgsNyBAQCBk
ZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3VybF9mdW5jLCBicm93c2VyLCBiaW5h
cnksIHBhdXNlX2FmdGVyX3Rlc3QsCiAgICAgICAgIGFyZ3MgKz0gWyItWiIsIGRlYnVnX29wdHNd
CiAgICAgZm9yIHN0eWxlc2hlZXQgaW4gYnJvd3Nlci51c2VyX3N0eWxlc2hlZXRzOgogICAgICAg
ICBhcmdzICs9IFsiLS11c2VyLXN0eWxlc2hlZXQiLCBzdHlsZXNoZWV0XQotICAgIGZvciBwcmVm
LCB2YWx1ZSBpbiB0ZXN0LmVudmlyb25tZW50LmdldCgncHJlZnMnLCB7fSkuaXRlcml0ZW1zKCk6
CisgICAgZm9yIHByZWYsIHZhbHVlIGluIGl0ZXJpdGVtcyh0ZXN0LmVudmlyb25tZW50LmdldCgn
cHJlZnMnLCB7fSkpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVzPSVzIiAlIChwcmVm
LCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoOgogICAgICAgICBh
cmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRo
XQpAQCAtNjIsOSArNjUsOSBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3Vy
bF9mdW5jLCBicm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiBjbGFzcyBTZXJ2b1Rl
c3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1
bHQgPSB0ZXN0aGFybmVzc19yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAg
ICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIFByb2Nl
c3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAg
ICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucGF1
c2VfYWZ0ZXJfdGVzdCA9IHBhdXNlX2FmdGVyX3Rlc3QKQEAgLTEwMCwxMSArMTAzLDExIEBAIGNs
YXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9u
X291dHB1dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlz
aD1zZWxmLm9uX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2Fz
dF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
T3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwg
ZW52PWVudikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5j
b21tYW5kLCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0
aW1lb3V0ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIKQEAgLTE3OSwx
MCArMTgyLDExIEBAIGNsYXNzIFRlbXBGaWxlbmFtZShvYmplY3QpOgogY2xhc3MgU2Vydm9SZWZU
ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBy
ZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5
PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90
X2NhY2hlPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0
aXBsaWVyLApAQCAtMjMxLDcgKzIzNSw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFBy
b2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6
CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoc2VsZi5jb21tYW5k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRw
dXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSkKIAogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAt
MjQzLDcgKzI0Nyw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhl
Y3V0b3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYo
ZW52KSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2ID0gc2Vs
Zi5wcm9jLndhaXQoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
QEAgLTI1NywxMCArMjYxLDEwIEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NU
ZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgcnYgIT0gMCBvciBub3Qgb3MucGF0aC5leGlz
dHMob3V0cHV0X3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgKCJDUkFTSCIs
IE5vbmUpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCkgYXMgZjoKKyAgICAg
ICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAg
ICAjIE1pZ2h0IG5lZWQgdG8gc3RyaXAgdmFyaWFibGUgaGVhZGVycyBvciBzb21ldGhpbmcgaGVy
ZQogICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlLCBiYXNlNjQuYjY0ZW5jb2RlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUsIGVuc3VyZV9zdHIoYmFzZTY0LmI2NGVuY29kZShkYXRhKSkKIAogICAgIGRlZiBkb190ZXN0
KHNlbGYsIHRlc3QpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmltcGxlbWVudGF0aW9uLnJ1bl90
ZXN0KHRlc3QpCkBAIC0zMDUsMTAgKzMwOSwxMSBAQCBjbGFzcyBTZXJ2b1RpbWVkUnVubmVyKFRp
bWVkUnVubmVyKToKIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVj
dXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBjcmFzaHRlc3RfcmVzdWx0X2NvbnZlcnRlcgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJpbmFyeT1O
b25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVy
PTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgZGVidWdfaW5mbz1O
b25lLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
CiAgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0zMjksNiArMzM0LDgg
QEAgY2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAg
ICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2Vydm9UaW1l
ZFJ1bm5lcihzZWxmLmxvZ2dlciwgc2VsZi5kb19jcmFzaHRlc3QsIHNlbGYucHJvdG9jb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsLCB0aW1lb3V0
LCBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCisgICAgICAgICMgRW5zdXJlIHRoYXQgbm8gcHJv
Y2Vzc2VzIGhhbmcgYXJvdW5kIGlmIHRoZXkgdGltZW91dC4KKyAgICAgICAgc2VsZi5wcm9jLmtp
bGwoKQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252
ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQpAQCAtMzUwLDExICszNTcsMTEgQEAgY2xhc3MgU2Vydm9D
cmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKIAogICAgICAgICBpZiBub3Qg
c2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVy
KGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVu
diksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1G
YWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9ZW52KQorICAg
ICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9Y2FzdF9l
bnYoZW52KSkKIAogICAgICAgICBzZWxmLnByb2Mud2FpdCgpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQppbmRleCAwMmVjYzc1NjY0NzY1NmU2YjIw
ZTA2MzcxZDI4NzY3ZmEwZWIwMGYxLi4wNjgwYzRlZDIyOTkwMzUxNDZjMmIxZTQ3OGY0YjNmYTFj
MzAxMTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9k
cml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVy
LnB5CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJQcm90b2NvbChQcm90
b2NvbCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQu
dGltZW91dCwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0
cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg
ICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
ICAgICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBTZXJ2
b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0
cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZv
cm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMo
KQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIGUp
CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBA
IC0xNTUsMTAgKzE1NSwxMCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6
CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVl
LCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAq
Kmt3YXJncyk6Ci0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgICAgIFRlc3Ro
YXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z19pbmZvPU5vbmUpCiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBTZXJ2b1dl
YkRyaXZlclByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1jYXBhYmlsaXRpZXMp
CiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3NlcnZv
ZHJpdmVyLmpzIikpIGFzIGY6CkBAIC0yMjEsMTEgKzIyMSwxMiBAQCBjbGFzcyBUaW1lb3V0RXJy
b3IoRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihS
ZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAg
ICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgICIiIlNl
bGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAgICAgICAg
UmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9j
YWNoZSwKQEAgLTIzNSw4ICsyMzYsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVj
dXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKQogICAgICAgICBzZWxmLmlt
cGxlbWVudGF0aW9uID0gUmVmVGVzdEltcGxlbWVudGF0aW9uKHNlbGYpCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IE5vbmUKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVm
dGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgotICAgICAgICAgICAgc2VsZi53YWl0X3Nj
cmlwdCA9IGYucmVhZCgpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Qtd2FpdC5qcyIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVh
ZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13YWl0In0KIAogICAgIGRlZiByZXNldChzZWxm
KToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICByZXR1cm4gdGVzdC5y
ZXN1bHRfY2xzKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpLCBbXQogCiAgICAgZGVmIHNjcmVl
bnNob3Qoc2VsZiwgdGVzdCwgdmlld3BvcnRfc2l6ZSwgZHBpKToKQEAgLTI3Nyw3ICsyNzgsNyBA
QCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
CiAgICAgICAgIHJldHVybiBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi50ZXN0X3VybCh0ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmV4dHJhX3RpbWVvdXQpLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yd2ViZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndl
YmRyaXZlci5weQppbmRleCA5YjVmMzk3NjQwMjVlYmQ5MTJmOWZkMDgwYWQwNWRkMGRlZWE4Mjdj
Li5jNWYyOTY1ZWMxODU4NjEzMWJjMjBkMzk0ZjU2Yjc4ODI3YzEwMmVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFj
a0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IsCkBAIC02Niwx
MyArNjcsMjAgQEAgY2xhc3MgV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQ
YXJ0KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCgiIikKLSAgICAgICAgICAg
IGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhj
ZXB0aW9uKToKKyAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICBjbGllbnQuSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uKToKKyAgICAgICAg
ICAgICAgICAjIEEgSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uIHdpbGwgaGFwcGVuIHdoZW4gd2Ug
bmF2aWdhdGU7CisgICAgICAgICAgICAgICAgIyBieSBpZ25vcmluZyBpdCBpdCdzIHBvc3NpYmxl
IHRvIHJlbG9hZCB0aGUgdGVzdCB3aGlsc3QgdGhlCisgICAgICAgICAgICAgICAgIyBoYXJuZXNz
IHJlbWFpbnMgcGF1c2VkCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZXhjZXB0
IChzb2NrZXQudGltZW91dCwgY2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgSU9FcnJvcik6CisgICAg
ICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBjbGll
bnQuTm9TdWNoV2luZG93RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKToKICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQor
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAK
IApAQCAtODYsOCArOTQsOCBAQCBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc1Byb3RvY29sUGFy
dChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVyKHNlbGYsIHVy
bF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAgICAgICAgICAg
IHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGUgPSBzZWxmLnJ1bm5lcl9oYW5kbGUKLSAgICAg
ICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJs
KHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFy
bmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2VsZi5wYXJlbnQuZXhl
Y3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAgICAgICAgICAgICAgICIv
dGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9h
ZGluZyAlcyIgJSB1cmwpCiAKICAgICAgICAgc2VsZi53ZWJkcml2ZXIudXJsID0gdXJsCkBAIC0y
ODgsMTUgKzI5NiwxOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2NvbCk6CiAgICAg
ICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZyhtZXNzYWdlKQogICAgICAgICBzZWxmLndlYmRyaXZlciA9IE5vbmUKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgYSBzaW1wbGUg
cHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIu
d2luZG93X2hhbmRsZQotICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgR2V0IGEgc2ltcGxlIHByb3BlcnR5
IG92ZXIgdGhlIGNvbm5lY3Rpb24sIHdpdGggMiBzZWNvbmRzIG9mIHRpbWVvdXQKKyAgICAgICAg
ICAgICMgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBjaGVjayBpZiB0aGUgV2Vi
RHJpdmVyIGl0cworICAgICAgICAgICAgIyBzdGlsbCBhbGl2ZSwgYW5kIGFsbG93cyB0byBjb21w
bGV0ZSB0aGUgY2hlY2sgd2l0aGluIHRoZSB0ZXN0cnVubmVyCisgICAgICAgICAgICAjIDUgc2Vj
b25kcyBvZiBleHRyYV90aW1lb3V0IHdlIGhhdmUgYXMgbWF4aW11bSB0byBlbmQgdGhlIHRlc3Qg
YmVmb3JlCisgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCB0aW1lb3V0IGZyb20gdGVzdHJ1bm5l
ciB0cmlnZ2Vycy4KKyAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnNlbmRfc2Vzc2lvbl9jb21t
YW5kKCJHRVQiLCAid2luZG93IiwgdGltZW91dD0yKQorICAgICAgICBleGNlcHQgKHNvY2tldC50
aW1lb3V0LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLCBjbGllbnQuSW52YWxpZFNlc3Np
b25JZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJu
IFRydWUKIApAQCAtMzI5LDcgKzM0MSw3IEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1bm5l
cik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1h
dF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9S
IiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcuc2V0KCkKQEAgLTMzOCwxMSArMzUwLDExIEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1
bm5lcik6CiBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhl
Y3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9VHJ1
ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAg
c3VwcG9ydHNfZWFnZXJfcGFnZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJXZWJE
cml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBXZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRp
ZXMpCkBAIC00MzcsMTEgKzQ0OSwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJs
YW5rIikgewogCiAKIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAg
ICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAg
ICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90
X2NhY2hlLApAQCAtNTA1LDExICs1MTgsMTIgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1
dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKIAogY2xhc3MgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0
b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwK
ICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25l
PVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5v
bmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciBy
ZWZ0ZXN0cyIiIgogICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTUzNSw3ICs1NDksNyBAQCBj
bGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6CiAgICAg
ICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0
ZXN0LCBkYXRhKQogCi0gICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKCoqZGF0YSksIFtd
KQorICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqZGF0YSksIFtdKQogCiAgICAgZGVm
IGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgcHJv
dG9jb2wuYmFzZS5sb2FkKHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
cHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CmluZGV4IDk1
ZmRlYzdjOTgxNjg4YWE5OWNhMTNlZWFmNGM3YjZjNDA1MmM5MTcuLjRlY2RkNTFhMGVmNWVjYTgx
NTNmZmI4NDhmMDI1M2VlYjZkN2Y3MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQpA
QCAtMzIsNyArMzIsNiBAQCBjbGFzcyBQcm90b2NvbChvYmplY3QpOgogICAgICAgICAiIiI6cmV0
dXJuczogQ3VycmVudCBsb2dnZXIiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IubG9n
Z2VyCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgICIi
IklzIHRoZSBicm93c2VyIGNvbm5lY3Rpb24gc3RpbGwgYWN0aXZlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQppbmRleCBjMTkzNmViOTY2Zjc4ODM0
ZDgzOWM3OTQwOTMyMmIwYTk2YWYxMjg0Li4zZDMyOTE3NjU5YjM5MDBmOWU0NjQ2NzBkMmNkYzM5
YjhmZjE4MGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5l
ci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBydW4ocGF0aCwgc2VydmVyX2NvbmZpZywgc2Vz
c2lvbl9jb25maWcsIHRpbWVvdXQ9MCk6CiAgICAgb3MuZW52aXJvblsiV0RfSE9TVCJdID0gc2Vz
c2lvbl9jb25maWdbImhvc3QiXQogICAgIG9zLmVudmlyb25bIldEX1BPUlQiXSA9IHN0cihzZXNz
aW9uX2NvbmZpZ1sicG9ydCJdKQogICAgIG9zLmVudmlyb25bIldEX0NBUEFCSUxJVElFUyJdID0g
anNvbi5kdW1wcyhzZXNzaW9uX2NvbmZpZ1siY2FwYWJpbGl0aWVzIl0pCi0gICAgb3MuZW52aXJv
blsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3Qo
KSkKKyAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29uLmR1bXBzKHNlcnZl
cl9jb25maWcuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAKICAgICBoYXJuZXNzID0g
SGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKICAgICBzdWJ0ZXN0cyA9IFN1YnRlc3RSZXN1bHRSZWNv
cmRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCmluZGV4IDhhN2VkYjc5ZDYyMjU2
ZWVmNjNjNzFlYWJkNDUwZDQyYmNlN2M0ZDIuLmFkMDhhZDdkNzZmYjAyOTlhYWRlZGI1NzIxOTNj
MzhjNTA1NWU2NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0
LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCkBAIC0zMiw3ICsz
Miw4IEBAIGZ1bmN0aW9uIHdhaXRfcGFpbnRzKCkgewogfQogCiBmdW5jdGlvbiBzY3JlZW5zaG90
X2lmX3JlYWR5KCkgewotICBpZiAocm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUoY2xhc3NuYW1l
KXMiKSAmJgorICBpZiAocm9vdCAmJgorICAgICAgcm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUo
Y2xhc3NuYW1lKXMiKSAmJgogICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsKICAgICBvYnNlcnZl
ciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKICAgICBvYnNlcnZlci5vYnNl
cnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1w
b3J0LmxvZwppbmRleCA1ZDliNjk4ZjNjYTM1YWJhN2ZkZTAyNTI1Yjg1ODU5OTU4ZDIzOGFhLi42
MTE2OGEyMDdiZmI0MDc2MzY4ZDZkNGQxOTE5MWJiZGNkNTZmNzczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvdzNjLWltcG9ydC5sb2cKQEAgLTE1LDYgKzE1LDcgQEAgTm9uZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvX19pbml0X18ucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2Jhc2UucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5CiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2UucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5Cmlu
ZGV4IDRkNTA1MDg2YmQ4ZDk5MWM5NTNjMzRkMzhkOGUxZmEwY2I5MjBmOTkuLjc1MjFmMjViMTM0
NGY1YzUwYjgxODJhMmI3YTY4Mjc4ODU4ZjliNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQpAQCAtMSw1
ICsxLDYgQEAKIGZyb20gbWF0aCBpbXBvcnQgbG9nCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcwogCiBjbGFz
cyBOb2RlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3AsIHZhbHVlKToKQEAg
LTMzLDcgKzM0LDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICByZXN1bHRfY291bnRz
ID0gZGVmYXVsdGRpY3QoaW50KQogICAgIHRvdGFsID0gZmxvYXQobGVuKHJlc3VsdHMpKQotICAg
IGZvciB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6CisgICAgZm9yIHZhbHVlcyBpbiBp
dGVydmFsdWVzKHJlc3VsdHMpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBv
c3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAgICAgICMgZGlzdGlu
Y3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKQEAgLTQxLDcgKzQyLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBl
bnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291bnRzLml0ZXJ2YWx1
ZXMoKToKKyAgICBmb3IgY291bnQgaW4gaXRlcnZhbHVlcyhyZXN1bHRfY291bnRzKToKICAgICAg
ICAgcHJvcCA9IGZsb2F0KGNvdW50KSAvIHRvdGFsCiAgICAgICAgIGVudHJvcHlfc3VtIC09IHBy
b3AgKiBsb2cocHJvcCwgMikKIApAQCAtNTIsNyArNTMsNyBAQCBkZWYgc3BsaXRfcmVzdWx0cyhw
cm9wLCByZXN1bHRzKToKICAgICAiIiJTcGxpdCBhIGRpY3Rpb25hcnkgb2YgcmVzdWx0cyBpbnRv
IGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMgd2hlcmUKICAgICBlYWNoIHN1Yi1kaWN0aW9u
YXJ5IGhhcyBhIHNwZWNpZmljIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSIiIgogICAgIGJ5
X3Byb3AgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgIGZvciBydW5faW5mbywgdmFsdWUgaW4gcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGluIGl0ZXJpdGVtcyhy
ZXN1bHRzKToKICAgICAgICAgYnlfcHJvcFtydW5faW5mb1twcm9wXV1bcnVuX2luZm9dID0gdmFs
dWUKIAogICAgIHJldHVybiBieV9wcm9wCkBAIC03NywxMyArNzgsMTMgQEAgZGVmIGJ1aWxkX3Ry
ZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUpOgogICAg
IHByb3BfaW5kZXggPSB7cHJvcDogaSBmb3IgaSwgcHJvcCBpbiBlbnVtZXJhdGUocHJvcGVydGll
cyl9CiAKICAgICBhbGxfcmVzdWx0cyA9IGRlZmF1bHRkaWN0KGludCkKLSAgICBmb3IgcmVzdWx0
X3ZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgZm9yIHJlc3VsdF92YWx1
ZSwgY291bnQgaW4gcmVzdWx0X3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcmVzdWx0X3Zh
bHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgorICAgICAgICBmb3IgcmVzdWx0X3ZhbHVlLCBj
b3VudCBpbiBpdGVyaXRlbXMocmVzdWx0X3ZhbHVlcyk6CiAgICAgICAgICAgICBhbGxfcmVzdWx0
c1tyZXN1bHRfdmFsdWVdICs9IGNvdW50CiAKICAgICAjIElmIHRoZXJlIGlzIG9ubHkgb25lIHJl
c3VsdCB3ZSBhcmUgZG9uZQogICAgIGlmIG5vdCBwcm9wZXJ0aWVzIG9yIGxlbihhbGxfcmVzdWx0
cykgPT0gMToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBhbGxfcmVzdWx0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMoYWxsX3Jlc3VsdHMp
OgogICAgICAgICAgICAgdHJlZS5yZXN1bHRfdmFsdWVzW3ZhbHVlXSArPSBjb3VudAogICAgICAg
ICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1bHRzLmtleXMoKSkKICAgICAgICAgcmV0dXJuIHRy
ZWUKQEAgLTk5LDcgKzEwMCw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVu
dF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgIG5ld19lbnRyb3B5ID0gMC4KICAgICAgICAgcmVzdWx0c19zZXRzX2VudHJvcHkgPSBbXQot
ICAgICAgICBmb3IgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCBpbiByZXN1bHRfc2V0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJl
c3VsdF9zZXRzKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50
cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBu
ZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiBy
ZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTA5LDcgKzExMCw3IEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
IAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3Bh
Y2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdmFsdWUsIGNvdW50
IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVlLnJlc3VsdF92YWx1
ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0gc2V0KHJlc3VsdHMu
a2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQppbmRleCA2NjQ3YTg1ODBiZTdhYjQwNTBiYmQz
NzU5M2IyZTY1OTViYzNhYzcyLi42MjI2ZmM2NmZlZGYyYWZjOTZiNTExMGYzNTI0YjAwZDE4NWNj
NTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9udC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBjdHlwZXMKLWltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHBsaXN0bGliCkBAIC0xMiw3ICsxMSw4
IEBAIFNZU1RFTSA9IHBsYXRmb3JtLnN5c3RlbSgpLmxvd2VyKCkKIAogCiBjbGFzcyBGb250SW5z
dGFsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAgICBzZWxmLmZvbnRf
ZGlyID0gZm9udF9kaXIKICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBGYWxzZQogICAg
ICAgICBzZWxmLmNyZWF0ZWRfZGlyID0gRmFsc2UKQEAgLTI2LDE0ICsyNiwxMyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250X3BhdGgu
c3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIGluc3RhbGwgPSBnZXRhdHRyKHNlbGYsICdpbnN0
YWxsXyVzX2ZvbnQnICUgU1lTVEVNLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IGluc3RhbGw6
Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IGluc3RhbGxhdGlvbiBub3Qg
c3VwcG9ydGVkIG9uICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTVEVN
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQgaW5zdGFsbGF0aW9u
IG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICAgICAgaWYgaW5zdGFsbChmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBUcnVlCi0gICAgICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCdJbnN0YWxsZWQgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdVbmFi
bGUgdG8gaW5zdGFsbCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycgJSBmb250X25hbWUp
CiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLmluc3RhbGxlZF9mb250czoKQEAgLTQzLDEyICs0MiwxMiBAQCBj
bGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250
X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIHJlbW92ZSA9IGdldGF0dHIoc2VsZiwg
J3JlbW92ZV8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCByZW1v
dmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IHJlbW92YWwgbm90IHN1
cHBvcnRlZCBvbiAlcycsIFNZU1RFTSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCdGb250IHJlbW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNURU0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiByZW1vdmUoZm9udF9uYW1lLCBm
b250X3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnUmVtb3ZlZCBmb250OiAl
cycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSZW1vdmVk
IGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCdVbmFibGUgdG8gcmVtb3ZlIGZvbnQ6ICVzJywgZm9udF9uYW1l
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byByZW1vdmUg
Zm9udDogJXMnICUgZm9udF9uYW1lKQogCiAgICAgZGVmIGluc3RhbGxfbGludXhfZm9udChzZWxm
LCBmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZvbnRfZGlyOgpA
QCAtNjIsNyArNjEsNyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICBmY19jYWNoZV9yZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0
dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJ
ZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxh
YmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAog
ICAgIGRlZiBpbnN0YWxsX2Rhcndpbl9mb250KHNlbGYsIGZvbnRfbmFtZSwgZm9udF9wYXRoKToK
QEAgLTc5LDcgKzc4LDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAgICAg
IyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXN1bHRzLWNvbGxl
Y3Rpb24vaXNzdWVzLzIxOAogICAgICAgICAjIGluc3RhbGxpbmcgQWhlbSBvbiBtYWNPUyBpcyBm
bGFreSwgc28gY2hlY2sgaWYgaXQgYWN0dWFsbHkgaW5zdGFsbGVkCiAgICAgICAgIGZvbnRzID0g
Y2hlY2tfb3V0cHV0KFsnL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlcicsICcteG1sJywgJ1NQRm9u
dHNEYXRhVHlwZSddKQotICAgICAgICBmb250cyA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJp
bmcoZm9udHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgcHkzCisgICAgICAgICAg
ICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tQnl0ZXMKKyAgICAg
ICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmVhZFBsaXN0RnJvbUJ5dGVz
ID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZworICAgICAgICBmb250cyA9IHJlYWRQbGlz
dEZyb21CeXRlcyhmb250cykKICAgICAgICAgYXNzZXJ0IGxlbihmb250cykgPT0gMQogICAgICAg
ICBmb3IgZm9udCBpbiBmb250c1swXVsnX2l0ZW1zJ106CiAgICAgICAgICAgICBpZiBmb250Wydw
YXRoJ10gPT0gaW5zdGFsbGVkX2ZvbnRfcGF0aDoKQEAgLTExMCw3ICsxMTQsNyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmY19jYWNoZV9yZXR1cm5jb2RlID0g
Y2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5j
b2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhp
c3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignZm9udGNvbmZpZyBu
b3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiByZW1vdmVfZGFyd2luX2Zv
bnQoc2VsZiwgZm9udF9uYW1lLCBfKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0
ZXJzL2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKaW5k
ZXggNTY0MzVlYWJmNGJiZWFkYmVlN2FmYTI5NGUzZTBiYjFlNzY4NWI5OS4uMDg2NTYwYjZhODcz
Y2RjOWZlZmQzYjhiOGI3YTUzYjAxNzNiMzg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
cm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21p
dW0ucHkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKICAgICAgICAgOnBhcmFtIHN0ciB0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgdGVz
dAogICAgICAgICA6cGFyYW0gc3RyIHN1YnRlc3Q6IHRoZSBuYW1lIG9mIHRoZSBzdWJ0ZXN0IHdp
dGggdGhlIG1lc3NhZ2UKICAgICAgICAgOnBhcmFtIHN0ciBzdGF0dXM6IHRoZSBzdWJ0ZXN0IHN0
YXR1cwotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiB0aGUgZXhwZWN0ZWQgc3VidGVzdCBz
dGF0dXMKKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVjdGVkIHN1YnRlc3Qg
c3RhdHVzZXMKICAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB0aGUgc3RyaW5nIHRvIGFwcGVu
ZCB0byB0aGUgbWVzc2FnZSBmb3IgdGhpcyB0ZXN0CiAKICAgICAgICAgSGVyZSdzIGFuIGV4YW1w
bGUgb2YgYSBtZXNzYWdlOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRl
cihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMgQWRk
IHRoZSBwcmVmaXgsIHdpdGggdGhlIHRlc3Qgc3RhdHVzIGFuZCBzdWJ0ZXN0IG5hbWUgKGlmIGF2
YWlsYWJsZSkKICAgICAgICAgcHJlZml4ID0gIlslcyIgJSBzdGF0dXMKLSAgICAgICAgaWYgZXhw
ZWN0ZWQgYW5kIGV4cGVjdGVkICE9IHN0YXR1czoKKyAgICAgICAgaWYgZXhwZWN0ZWQgYW5kIHN0
YXR1cyBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiBleHBlY3RlZCAl
c10gIiAlIGV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggKz0gIl0g
IgpAQCAtNTUsMTMgKzU1LDI4IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZv
cm1hdHRlcik6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiVzOiAiICUgc3VidGVzdAogICAgICAg
ICBzZWxmLm1lc3NhZ2VzW3Rlc3RdICs9IHByZWZpeCArIG1lc3NhZ2UgKyAiXG4iCiAKLSAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOgorICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRpZmFjdF9u
YW1lLCBhcnRpZmFjdF92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBBcHBlbmRzIGFydGlm
YWN0cyB0byB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkuCisgICAgICAgIDpwYXJhbSBkaWN0IGN1
cl9kaWN0OiB0aGUgdGVzdCBsZWFmIGRpY3Rpb25hcnkgdG8gYXBwZW5kIHRvCisgICAgICAgIDpw
YXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CisgICAgICAg
IDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmICJhcnRpZmFjdHMiIG5vdCBpbiBjdXJfZGljdC5rZXlzKCk6
CisgICAgICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7fQorICAgICAgICAjIEFydGlm
YWN0cyBhcmUgYWxsIGV4cGVjdGVkIHRvIGJlIGxpc3RzLCBzbyBldmVuIHRob3VnaCB3ZSBvbmx5
IGhhdmUgYQorICAgICAgICAjIHNpbmdsZSB8YXJ0aWZhY3RfdmFsdWV8IHdlIHN0aWxsIHB1dCBp
dCBpbiBhIGxpc3QuCisgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVthcnRpZmFjdF9uYW1l
XSA9IFthcnRpZmFjdF92YWx1ZV0KKworICAgIGRlZiBfc3RvcmVfdGVzdF9yZXN1bHQoc2VsZiwg
bmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgd3B0X2FjdHVhbCwgc3VidGVzdF9mYWls
dXJlKToKICAgICAgICAgIiIiCiAgICAgICAgIFN0b3JlcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xl
IHRlc3QgaW4gfHNlbGYudGVzdHN8CiAgICAgICAgIDpwYXJhbSBzdHIgbmFtZTogbmFtZSBvZiB0
aGUgdGVzdC4KICAgICAgICAgOnBhcmFtIHN0ciBhY3R1YWw6IGFjdHVhbCBzdGF0dXMgb2YgdGhl
IHRlc3QuCi0gICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVkIHN0YXR1cyBvZiB0
aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogZXhwZWN0ZWQgc3RhdHVzZXMg
b2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGVzdCBvdXRwdXQsIHN1
Y2ggYXMgc3RhdHVzLCBzdWJ0ZXN0LCBlcnJvcnMgZXRjLgorICAgICAgICA6cGFyYW0gc3RyIHdw
dF9hY3R1YWw6IGFjdHVhbCBzdGF0dXMgcmVwb3J0ZWQgYnkgd3B0LCBtYXkgZGlmZmVyIGZyb20g
fGFjdHVhbHwuCisgICAgICAgIDpwYXJhbSBib29sIHN1YnRlc3RfZmFpbHVyZTogd2hldGhlciB0
aGlzIHRlc3QgZmFpbGVkIGJlY2F1c2Ugb2Ygc3VidGVzdHMKICAgICAgICAgIiIiCiAgICAgICAg
ICMgVGhlIHRlc3QgbmFtZSBjYW4gY29udGFpbiBhIGxlYWRpbmcgLyB3aGljaCB3aWxsIHByb2R1
Y2UgYW4gZW1wdHkKICAgICAgICAgIyBzdHJpbmcgaW4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRo
ZSBsaXN0IHJldHVybmVkIGJ5IHNwbGl0LiBXZSB1c2UKQEAgLTcyLDEzICs4NywxNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgY3Vy
X2RpY3QgPSBjdXJfZGljdC5zZXRkZWZhdWx0KG5hbWVfcGFydCwge30pCiAgICAgICAgIGN1cl9k
aWN0WyJhY3R1YWwiXSA9IGFjdHVhbAogICAgICAgICBjdXJfZGljdFsiZXhwZWN0ZWQiXSA9IGV4
cGVjdGVkCisgICAgICAgIGlmIHN1YnRlc3RfZmFpbHVyZToKKyAgICAgICAgICAgIHNlbGYuX2Fw
cGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiLCAidHJ1ZSIpCisg
ICAgICAgIGlmIHdwdF9hY3R1YWwgIT0gYWN0dWFsOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9zdGF0dXMiLCB3cHRfYWN0dWFsKQogICAg
ICAgICBpZiBtZXNzYWdlICE9ICIiOgotICAgICAgICAgICAgY3VyX2RpY3RbImFydGlmYWN0cyJd
ID0geyJsb2ciOiBtZXNzYWdlfQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1
cl9kaWN0LCAibG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIEZpZ3VyZSBvdXQgaWYgdGhlcmUg
d2FzIGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIHN0YXR1cy4gVGhpcyBvbmx5CiAgICAgICAg
ICMgaGFwcGVucyBmb3IgdGVzdHMgdGhhdCB3ZXJlIHJ1bgogICAgICAgICBpZiBhY3R1YWwgIT0g
IlNLSVAiOgotICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAg
aWYgYWN0dWFsIG5vdCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgICAgICBjdXJfZGljdFsiaXNf
dW5leHBlY3RlZCJdID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGFjdHVhbCAhPSAiUEFTUyI6
CiAgICAgICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc19yZWdyZXNzaW9uIl0gPSBUcnVlCkBA
IC0xMDMsNyArMTIyLDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0
dGVyKToKICAgICAgICAgICAgIHJldHVybiAiU0tJUCIKICAgICAgICAgaWYgc3RhdHVzID09ICJF
WFRFUk5BTC1USU1FT1VUIjoKICAgICAgICAgICAgIHJldHVybiAiVElNRU9VVCIKLSAgICAgICAg
aWYgc3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giKToKKyAgICAgICAgaWYgc3RhdHVzIGluICgi
RVJST1IiLCAiQ1JBU0giLCAiUFJFQ09ORElUSU9OX0ZBSUxFRCIpOgogICAgICAgICAgICAgIyBD
UkFTSCBpbiBXUFQgbWVhbnMgYSBicm93c2VyIGNyYXNoLCB3aGljaCBDaHJvbWl1bSB0cmVhdHMg
YXMgYQogICAgICAgICAgICAgIyB0ZXN0IGZhaWx1cmUuCiAgICAgICAgICAgICByZXR1cm4gIkZB
SUwiCkBAIC0xMTYsNyArMTM1LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKIAogICAgIGRlZiBfZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoc2Vs
ZiwgYWN0dWFsX3N0YXR1cywgZGF0YSk6CiAgICAgICAgICIiIgotICAgICAgICBHZXRzIHRoZSBl
eHBlY3RlZCBzdGF0dXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgorICAgICAgICBHZXRzIHRo
ZSBleHBlY3RlZCBzdGF0dXNlcyBmcm9tIGEgfGRhdGF8IGRpY3Rpb25hcnkuCiAKICAgICAgICAg
SWYgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgc3RhdHVzIGluIGRhdGEsIHRoZSBhY3R1YWwgc3RhdHVz
IGlzIHJldHVybmVkLgogICAgICAgICBUaGlzIGlzIGJlY2F1c2UgbW96bG9nIHdpbGwgZGVsZXRl
ICJleHBlY3RlZCIgZnJvbSB8ZGF0YXwgaWYgaXQgaXMgdGhlCkBAIC0xMjUsNDcgKzE0NCw2MSBA
QCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICBp
cyBleHBlY3RlZC4gU28gd2UgdXNlIHRoZSAiZXhwZWN0ZWQiIHN0YXR1cyBpZiBpdCdzIHRoZXJl
IG9yIGZhbGwgYmFjawogICAgICAgICB0byB0aGUgYWN0dWFsIHN0YXR1cyBpZiBpdCdzIG5vdC4K
IAorICAgICAgICBJZiB0aGUgdGVzdCBoYXMgbXVsdGlwbGUgc3RhdHVzZXMsIGl0IHdpbGwgaGF2
ZSBvdGhlciBzdGF0dXNlcyBsaXN0ZWQgYXMKKyAgICAgICAgImtub3duX2ludGVybWl0dGVudCIg
aW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvCisgICAg
ICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vlbi4KKwogICAgICAg
ICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0
CiAgICAgICAgIDpwYXJhbSBkYXRhOiBhIGRhdGEgZGljdGlvbmFyeSB0byBleHRyYWN0IGV4cGVj
dGVkIHN0YXR1cyBmcm9tCi0gICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVz
CisgICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMgYXMgYSBzdHJpbmcK
ICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRhdGFb
ImV4cGVjdGVkIl0pCi0gICAgICAgICAgICAgICAgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2Ug
YWN0dWFsX3N0YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9tYXBfc3Rh
dHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2UgYWN0
dWFsX3N0YXR1cworICAgICAgICBpZiBkYXRhLmdldCgia25vd25faW50ZXJtaXR0ZW50Iik6Cisg
ICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyArPSAiICIgKyAiICIuam9pbigKKyAgICAgICAg
ICAgICAgICBbc2VsZi5fbWFwX3N0YXR1c19uYW1lKG90aGVyX3N0YXR1cykgZm9yIG90aGVyX3N0
YXR1cyBpbiBkYXRhWyJrbm93bl9pbnRlcm1pdHRlbnQiXV0pCisgICAgICAgIHJldHVybiBleHBl
Y3RlZF9zdGF0dXNlcwogCiAgICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRhdGEpOgotICAgICAg
ICBzZWxmLnN0YXJ0X3RpbWVzdGFtcF9zZWNvbmRzID0gKGRhdGFbInRpbWUiXSBpZiAidGltZSIg
aW4gZGF0YQorICAgICAgICAjIHxkYXRhfCBjb250YWlucyBhIHRpbWVzdGFtcCBpbiBtaWNyb3Nl
Y29uZHMsIHdoaWxlIHRpbWUudGltZSgpIGdpdmVzCisgICAgICAgICMgaXQgaW4gc2Vjb25kcy4K
KyAgICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChmbG9hdChkYXRhWyJ0aW1l
Il0pIC8gMTAwMCBpZiAidGltZSIgaW4gZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgdGltZS50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9zdGF0dXMoc2Vs
ZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFbInRlc3QiXQotICAgICAgICBpc191
bmV4cGVjdGVkID0gTm9uZQogICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxmLl9n
ZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQorICAgICAg
ICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAKLSAgICAgICAgaXNfdW5leHBlY3RlZCA9IGFjdHVhbF9z
dGF0dXMgIT0gZXhwZWN0ZWRfc3RhdHVzCisgICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBhY3R1YWxf
c3RhdHVzIG5vdCBpbiBleHBlY3RlZF9zdGF0dXNlcwogICAgICAgICBpZiBpc191bmV4cGVjdGVk
IGFuZCB0ZXN0X25hbWUgbm90IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgogICAg
ICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMuYWRkKHRlc3RfbmFtZSkKICAg
ICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9hcHBlbmRfdGVz
dF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3VidGVzdCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAg
ICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBkYXRhWyJzdWJ0ZXN0
Il0sIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJtZXNzYWdlIl0pCiAK
ICAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFb
InRlc3QiXQotICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRh
dGFbInN0YXR1cyJdKQotICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQQVNTIiBhbmQgdGVz
dF9uYW1lIGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgotICAgICAgICAgICAgIyBU
aGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0ZXN0cywgc28gd2UgZmxpcCB0
aGUgc3RhdHVzCi0gICAgICAgICAgICAjIHRvIEZBSUwuCi0gICAgICAgICAgICBhY3R1YWxfc3Rh
dHVzID0gIkZBSUwiCisgICAgICAgICMgU2F2ZSB0aGUgc3RhdHVzIHJlcG9ydGVkIGJ5IFdQVCBz
aW5jZSB3ZSBtaWdodCBjaGFuZ2UgaXQgd2hlbiByZXBvcnRpbmcKKyAgICAgICAgIyB0byBDaHJv
bWl1bS4KKyAgICAgICAgd3B0X2FjdHVhbF9zdGF0dXMgPSBkYXRhWyJzdGF0dXMiXQorICAgICAg
ICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKHdwdF9hY3R1YWxfc3RhdHVz
KQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNf
ZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9
IEZhbHNlCisgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9m
YWlsczoKKyAgICAgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9IFRydWUKICAgICAgICAgICAgICMg
Q2xlYW4gdXAgdGhlIHRlc3QgbGlzdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAg
ICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscy5yZW1vdmUodGVzdF9uYW1l
KQorICAgICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0
ZXN0cy4gU2luY2Ugd2UgY2FuIG9ubHkKKyAgICAgICAgICAgICMgcmVwb3J0IGEgc2luZ2xlIHN0
YXR1cyB0byBDaHJvbWl1bSwgd2UgY2hvb3NlIEZBSUwgdG8gaW5kaWNhdGUKKyAgICAgICAgICAg
ICMgdGhhdCBzb21ldGhpbmcgYWJvdXQgdGhpcyB0ZXN0IGRpZCBub3QgcnVuIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGF0dXMgPT0gIlBBU1MiOgorICAgICAgICAgICAgICAg
IGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKIAotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxm
Ll9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQogICAg
ICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0
X21lc3NhZ2UodGVzdF9uYW1lLCBOb25lLCBhY3R1YWxfc3RhdHVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMsIGRhdGFbIm1lc3NhZ2UiXSkK
LSAgICAgICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVz
LCBleHBlY3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
bWVzc2FnZXNbdGVzdF9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfc3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAgICAgc2VsZi5fc3Rv
cmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0X25h
bWVdLCB3cHRfYWN0dWFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VidGVzdF9mYWlsdXJlKQogCiAgICAgICAgICMgUmVtb3ZlIHRoZSB0ZXN0IGZyb20gbWVzc2Fn
ZXMgZGljdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAgICAgICAgIHNlbGYubWVz
c2FnZXMucG9wKHRlc3RfbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJz
L3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90
ZXN0X2Nocm9taXVtLnB5CmluZGV4IDgzYzEyOGFjNWNiNDZhNjUzNzNhMmZlYTAwOGM2YmE2MDM1
MGZkOGYuLjJhNWQzZTc5MjgwY2I1NTYzNzQ3YmVjZGRhNGFmZTE4OGQzYjYwZTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQpAQCAtMTU2LDEy
ICsxNTYsMTMgQEAgZGVmIHRlc3Rfc3VidGVzdF9tZXNzYWdlcyhjYXBmZCk6CiAgICAgb3V0cHV0
LnNlZWsoMCkKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKLSAgICB0MV9s
b2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXVsiYXJ0aWZhY3RzIl1bImxvZyJdCi0gICAg
YXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdl
XG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
Ci0KLSAgICB0Ml9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsiYXJ0aWZhY3RzIl1b
ImxvZyJdCi0gICAgYXNzZXJ0IHQyX2xvZyA9PSAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDJf
bWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJd
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iXQorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQorICAgIHQy
X2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXQorICAg
IGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10g
dDJfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiIG5vdCBpbiB0
Ml9hcnRpZmFjdHMua2V5cygpCiAKIAogZGVmIHRlc3Rfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToK
QEAgLTIwMiwxMyArMjAzLDE3IEBAIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAg
ICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCiAgICAgdGVzdF9vYmogPSBvdXRw
dXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9h
OiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0
MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUIGV4cGVjdGVk
IFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IHRlc3Rfb2Jq
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0MV9jOiB0
MV9jX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFp
bHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBv
dXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLAotICAgICMgZGVzcGl0
ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQuCisgICAgIyBkZXNw
aXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0IHRoZSB0ZXN0IHBhc3NlZC4gQnV0IHRoZSBo
YXJuZXNzIHN0YXR1cworICAgICMgaXMgbG9nZ2VkIGFzIGFuIGFydGlmYWN0LgorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNTIl0KICAgICBhc3Nl
cnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhw
ZWN0ZWQiXSA9PSAiUEFTUyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdHRlciBj
bGVhbmVkIHVwIGl0cyBpbnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEiIG5vdCBpbiBmb3Jt
YXR0ZXIudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTI1MywxMiArMjU4LDEzIEBAIGRl
ZiB0ZXN0X2V4cGVjdGVkX3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAKICAgICB0ZXN0X29iaiA9
IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfbG9nID0gdGVzdF9vYmpbImFydGlm
YWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0MV9iX21lc3Nh
Z2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3Nh
Z2VcbiIKKyAgICBhc3NlcnQgdDFfbG9nID09IFsiW0ZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiJdCiAg
ICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBwYXNzIGJlY2F1
c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVjdGVkLgogICAgIGFz
c2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJl
eHBlY3RlZCJdID09ICJQQVNTIgogCiAKIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVzdF9wYXNz
KGNhcGZkKToKQEAgLTI5NiwxMCArMzAyLDE0IEBAIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVz
dF9wYXNzKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKICAg
ICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0gdGVz
dF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltQQVNTIGV4
cGVjdGVkIEZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgotICAgICMgU2luY2UgdGhlIHN1YnRl
c3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuCisgICAgdDFfYXJ0aWZh
Y3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sibG9n
Il0gPT0gWyJbUEFTUyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiJdCisgICAg
YXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCisg
ICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwgd2UgZmFpbCB0aGUg
dGVzdC4gQnV0IHdlIHJlcG9ydAorICAgICMgd3B0X2FjdHVhbF9zdGF0dXMgYXMgYW4gYXJ0aWZh
Y3QKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUEFT
UyJdCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQg
dGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IHRo
ZSBmb3JtYXR0ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAgICBhc3NlcnQgInQx
IiBub3QgaW4gZm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwogCkBAIC0zNjcsNiAr
Mzc3LDE0NCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3Rlc3RfZmFpbChjYXBmZCk6CiAgICAgIyBP
Sy0+UEFTUwogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgotICAgICMgLi5hbmQgdGhpcyB0ZXN0
IHNob3VsZCBub3QgYmUgYSByZWdyZXNzaW9uIG5vciB1bmV4cGVjdGVkCisgICAgIyAuLmFuZCB0
aGlzIHRlc3Qgc2hvdWxkIGJlIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3RlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3RfZmxha3lfdGVzdF9leHBlY3Rl
ZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRoIG11bHRpcGxlIHBv
c3NpYmxlIHN0YXR1c2VzIGlzIHNlZW4gYXMKKyAgICAjIGV4cGVjdGVkIGlmIGl0cyBhY3R1YWwg
c3RhdHVzIGlzIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMgc2V0IHVwIHRoZSBo
YW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhh
bmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAg
ICMgUnVuIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAgbG9nZ2VyLnN1aXRl
X3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0
YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBl
Y3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJFUlJPUiIsICJUSU1FT1VUIl0pCisgICAg
bG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBz
dGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMg
ZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVk
LmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0
dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRw
dXQpCisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBU
aGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBh
bmQgT0stPlBBU1MKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAg
ICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGlu
dG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIEZB
SUwgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBvciB1bmV4cGVj
dGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCisgICAgIyBvZiB0aGUgZXhwZWN0
ZWQgb25lcworICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rfb2JqCisgICAg
YXNzZXJ0ICJpc191bmV4cGVjdGVkIiBub3QgaW4gdGVzdF9vYmoKKworCitkZWYgdGVzdF9mbGFr
eV90ZXN0X3VuZXhwZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBhIGZsYWt5IHRlc3Qg
d2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisgICAgIyB1bmV4cGVj
dGVkIGlmIGl0cyBhY3R1YWwgc3RhdHVzIGlzIE5PVCBvbmUgb2YgdGhlIHBvc3NpYmxlIG9uZXMu
CisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAg
IGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21p
dW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBm
bGFreQorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEy
MykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEi
LCBzdGF0dXM9IkVSUk9SIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJtaXR0ZW50PVsiVElN
RU9VVCJdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdv
dCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0
cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0g
Y2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFz
c2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQg
b2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBq
c29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsi
dDEiXQorICAgICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBlZCwgY2hhbmdpbmcg
RVJST1ItPkZBSUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9
PSAiRkFJTCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIGNvbmNhdGVuYXRl
ZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQi
XSA9PSAiUEFTUyBUSU1FT1VUIgorICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Npb24gYW5kIHVu
ZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKKyAgICAjIG9uZSBvZiB0
aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlz
IFRydWUKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKwor
ZGVmIHRlc3RfcHJlY29uZGl0aW9uX2ZhaWxlZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEg
ZmFpbGVkIHByZWNvbmRpdGlvbiBnZXRzIHByb3Blcmx5IGhhbmRsZWQuCisKKyAgICAjIHNldCB1
cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3Ry
dWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFu
ZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkp
CisKKyAgICAjIFJ1biBhIHRlc3Qgd2l0aCBhIHByZWNvbmRpdGlvbiBmYWlsdXJlCisgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dl
ci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iUFJF
Q09ORElUSU9OX0ZBSUxFRCIsIGV4cGVjdGVkPSJPSyIpCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgp
CisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAg
IyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRv
IHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQg
Y2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAg
IyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNl
ZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0X29i
aiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgcHJlY29uZGl0aW9uIGZh
aWx1cmUgc2hvdWxkIG1hcCB0byBGQUlMIHN0YXR1cywgYnV0IHdlIHNob3VsZCBhbHNvCisgICAg
IyBoYXZlIGFuIGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIFBSRUNPTkRJVElPTl9G
QUlMRUQgc3RhdHVzLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2FjdHVhbF9zdGF0dXMiXSA9PSBb
IlBSRUNPTkRJVElPTl9GQUlMRUQiXQorICAgICMgLi4udGhpcyBpcyBhbiB1bmV4cGVjdGVkIHJl
Z3Jlc3Npb24gYmVjYXVzZSB3ZSBleHBlY3RlZCBhIHBhc3MgYnV0IGZhaWxlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50
X2VtcHR5KGNhcGZkKToKKyAgICAjIElmIHRoZSBrbm93bl9pbnRlcm1pdHRlbnQgbGlzdCBpcyBl
bXB0eSwgd2Ugd2FudCB0byBlbnN1cmUgd2UgZG9uJ3QgYXBwZW5kCisgICAgIyBhbnkgZXh0cmFu
ZW91cyBjaGFyYWN0ZXJzIHRvIHRoZSBvdXRwdXQuCisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxl
ci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5T
dHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVy
cy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1
biBhIHRlc3QgYW5kIGluY2x1ZGUgYW4gZW1wdHkga25vd25faW50ZXJtaXR0ZW50IGxpc3QKKyAg
ICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGltZT0xMjMpCisgICAg
bG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQoInQxIiwgc3RhdHVz
PSJPSyIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1bXSkKKyAgICBsb2dnZXIu
c3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9z
dGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcg
aGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQor
ICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3NlcnQgY2FwdHVyZWQuZXJyID09
ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAg
ICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKwor
ICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICAjIEJvdGggYWN0
dWFsIGFuZCBleHBlY3RlZCBzdGF0dXNlcyBnZXQgbWFwcGVkIHRvIFBhc3MuIE5vIGV4dHJhIHdo
aXRlc3BhY2UKKyAgICAjIGFueXdoZXJlLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0g
PT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3Ry
dW1lbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODdjZjRmZGE3MjQyNmI4OTIxM2NjNDAzN2Y3NDVjZTUy
MzI5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKQEAg
LTAsMCArMSwxMTcgQEAKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHNpeC5t
b3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKKworIiIiSW5zdHJ1bWVudGF0aW9uIGZvciBtZWFzdXJp
bmcgaGlnaC1sZXZlbCB0aW1lIHNwZW50IG9uIHZhcmlvdXMgdGFza3MgaW5zaWRlIHRoZSBydW5u
ZXIuCisKK1RoaXMgaXMgbG93ZXIgZmlkZWxpdHkgdGhhbiBhbiBhY3R1YWwgcHJvZmlsZSwgYnV0
IGFsbG93cyBjdXN0b20gZGF0YSB0byBiZSBjb25zaWRlcmVkLAorc28gdGhhdCB3ZSBjYW4gc2Vl
IHRoZSB0aW1lIHNwZW50IGluIHNwZWNpZmljIHRlc3RzIGFuZCB0ZXN0IGRpcmVjdG9yaWVzLgor
CisKK0luc3RydW1lbnRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdl
cnMgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIF9fZW50ZXJfXworY29udGFpbmluZyB0aGUgdXNl
ci1mYWNpbmcgQVBJIGUuZy4KKword2l0aCBJbnN0cnVtZW50KCphcmdzKSBhcyByZWNvcmRpbmc6
CisgICAgcmVjb3JkaW5nLnNldChbImluaXQiXSkKKyAgICBkb19pbml0KCkKKyAgICByZWNvcmRp
bmcucGF1c2UoKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRzOgorICAgICAgIHRocmVh
ZC5zdGFydChyZWNvcmRpbmcsICphcmdzKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRz
OgorICAgICAgIHRocmVhZC5qb2luKCkKKyAgICByZWNvcmRpbmcuc2V0KFsidGVhcmRvd24iXSkg
ICAjIHVuLXBhdXNlcyB0aGUgSW5zdHJ1bWVudAorICAgIGRvX3RlYXJkb3duKCkKKyIiIgorCitj
bGFzcyBOdWxsSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBzZXQoc2VsZiwgc3RhY2spOgor
ICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgdGFzayB0byBzdGFjaworCisgICAgICAgIDpwYXJh
bSBzdGFjazogQSBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIGN1cnJlbnQgdGFzay4KKyAg
ICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgaW50ZXJwcmV0ZWQgbGlrZSBhIHN0YWNrIHRy
YWNlIHNvIHRoYXQgWyJmb28iXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJi
YXIiXSBib3RoIHNob3cgdXAgYXMgZGVzY2VuZGFudHMgb2YgImZvbyIKKyAgICAgICAgIiIiCisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAgIiIiU3RvcCByZWNv
cmRpbmcgYSB0YXNrIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhl
IHRocmVhZAorICAgICAgICBpcyBwdXJlbHkgd2FpdGluZyBvbiB0aGUgcmVzdWx0cyBvZiBvdGhl
ciB0aHJlYWRzIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgSW5zdHJ1bWVudFdyaXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6CisgICAgICAgIHNlbGYucXVldWUgPSBx
dWV1ZQorCisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgIHN0YWNrLmluc2VydCgw
LCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQorICAgICAgICBzdGFjayA9IHNlbGYu
X2NoZWNrX3N0YWNrKHN0YWNrKQorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInNldCIsIHRocmVh
ZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgc3RhY2spKQorCisgICAg
ZGVmIHBhdXNlKHNlbGYpOgorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInBhdXNlIiwgdGhyZWFk
aW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQsIHRpbWUudGltZSgpLCBOb25lKSkKKworICAgIGRl
ZiBfY2hlY2tfc3RhY2soc2VsZiwgc3RhY2spOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShz
dGFjaywgKHR1cGxlLCBsaXN0KSkKKyAgICAgICAgcmV0dXJuIFtpdGVtLnJlcGxhY2UoIiAiLCAi
XyIpIGZvciBpdGVtIGluIHN0YWNrXQorCisKK2NsYXNzIEluc3RydW1lbnQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiSW5zdHJ1bWVudCB0
aGF0IGNvbGxlY3RzIGRhdGEgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBzdW1zIHRoZSB0aW1l
IGluIGVhY2gKKyAgICAgICAgdGhyZWFkLiBUaGUgb3V0cHV0IGlzIGluIHRoZSBmb3JtYXQgcmVx
dWlyZWQgYnkgZmxhbWVncmFwaC5wbCB0byBlbmFibGUgdmlzdWFsaXNhdGlvbgorICAgICAgICBv
ZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHRhc2suCisKKyAgICAgICAgOnBhcmFtIGZpbGVfcGF0
aDogLSBUaGUgcGF0aCBvbiB3aGljaCB0byB3cml0ZSBpbnN0cnVtZW50IG91dHB1dC4gQW55IGV4
aXN0aW5nIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgcGF0aCB3aWxs
IGJlIG92ZXJ3cml0dGVuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBhdGggPSBmaWxlX3Bh
dGgKKyAgICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gTm9u
ZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYudGhyZWFkID0g
Tm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYudGhy
ZWFkIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucXVldWUgaXMgTm9uZQorICAgICAgICBz
ZWxmLnF1ZXVlID0gUXVldWUoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJl
YWQodGFyZ2V0PXNlbGYucnVuKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAg
IHJldHVybiBJbnN0cnVtZW50V3JpdGVyKHNlbGYucXVldWUpCisKKyAgICBkZWYgX19leGl0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJzdG9wIiwg
Tm9uZSwgdGltZS50aW1lKCksIE5vbmUpKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKyAg
ICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYucXVldWUgPSBOb25lCisKKyAg
ICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBrbm93bl9jb21tYW5kcyA9IHsic3RvcCIsICJwYXVz
ZSIsICJzZXQifQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAidyIpIGFzIGY6CisgICAg
ICAgICAgICB0aHJlYWRfZGF0YSA9IHt9CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgICAgIGNvbW1hbmQsIHRocmVhZCwgdGltZV9zdGFtcCwgc3RhY2sgPSBzZWxmLnF1ZXVl
LmdldCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaW4ga25vd25fY29tbWFuZHMK
KworICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIGRvbmUgcmVjb3JkaW5nLCBkdW1wIHRoZSBp
bmZvcm1hdGlvbiBmcm9tIGFsbCB0aHJlYWRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAg
IyBiZWZvcmUgZXhpdGluZy4gT3RoZXJ3aXNlIGZvciBlaXRoZXIgJ3NldCcgb3IgJ3BhdXNlJyB3
ZSBvbmx5IG5lZWQgdG8gZHVtcAorICAgICAgICAgICAgICAgICMgaW5mb3JtYXRpb24gZnJvbSB0
aGUgY3VycmVudCBzdGFjayAoaWYgYW55KSB0aGF0IHdhcyByZWNvcmRpbmcgb24gdGhlIHJlcG9y
dGluZworICAgICAgICAgICAgICAgICMgdGhyZWFkIChhcyB0aGF0IHN0YWNrIGlzIG5vIGxvbmdl
ciBhY3RpdmUpLgorICAgICAgICAgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgICAgICAgICBp
ZiBjb21tYW5kID09ICJzdG9wIjoKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aHJlYWRf
ZGF0YS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGVsaWYgdGhyZWFkIGluIHRocmVhZF9kYXRh
OgorICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQodGhyZWFkX2RhdGEucG9wKHRocmVh
ZCkpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9zdGFjaywgc3RhcnRfdGltZSBpbiBpdGVt
czoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJWRcbiIgJSAoIjsiLmpvaW4ob3V0
cHV0X3N0YWNrKSwgaW50KDEwMDAgKiAodGltZV9zdGFtcCAtIHN0YXJ0X3RpbWUpKSkpCisKKyAg
ICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICJzZXQiOgorICAgICAgICAgICAgICAgICAgICB0
aHJlYWRfZGF0YVt0aHJlYWRdID0gKHN0YWNrLCB0aW1lX3N0YW1wKQorICAgICAgICAgICAgICAg
IGVsaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9t
YW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IGVhZTg1YjFmNjY2MWE2N2RmZjU5ZWY3OGE5ZWQ2Mjdl
M2UzNjAzZDguLjMxYzU3ZTljYjczNGY3NDFlNDI3NWU3NGU4ZmNmN2NkMGFkNGVlMzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0xLDYgKzEsOCBAQAogaW1wb3J0IG9zCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5cGUKK2Zyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorCiAKIGZyb20gLndwdG1hbmlm
ZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmJh
c2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtMTUsNiArMTcsNyBAQCBFYWNoIFRlc3ROb2RlIGhh
cyB6ZXJvIG9yIG1vcmUgU3VidGVzdE5vZGUgY2hpbGRyZW4sIG9uZSBmb3IgZWFjaAoga25vd24g
c3VidGVzdCBvZiB0aGUgdGVzdC4KICIiIgogCisKIGRlZiBkYXRhX2Nsc19nZXR0ZXIob3V0cHV0
X25vZGUsIHZpc2l0ZWRfbm9kZSk6CiAgICAgIyB2aXNpdGVkX25vZGUgaXMgaW50ZW50aW9uYWxs
eSB1bnVzZWQKICAgICBpZiBvdXRwdXRfbm9kZSBpcyBOb25lOgpAQCAtMjksNyArMzIsNyBAQCBk
ZWYgZGF0YV9jbHNfZ2V0dGVyKG91dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUpOgogZGVmIGJvb2xf
cHJvcChuYW1lLCBub2RlKToKICAgICAiIiJCb29sZWFuIHByb3BlcnR5IiIiCiAgICAgdHJ5Ogot
ICAgICAgICByZXR1cm4gbm9kZS5nZXQobmFtZSkKKyAgICAgICAgcmV0dXJuIGJvb2wobm9kZS5n
ZXQobmFtZSkpCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1cm4gTm9uZQogCkBA
IC00NiwxOCArNDksMjggQEAgZGVmIGxpc3RfcHJvcChuYW1lLCBub2RlKToKICAgICAiIiJMaXN0
IHByb3BlcnR5IiIiCiAgICAgdHJ5OgogICAgICAgICBsaXN0X3Byb3AgPSBub2RlLmdldChuYW1l
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgYmFzZXN0cmluZyk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmV0
dXJuIFtsaXN0X3Byb3BdCiAgICAgICAgIHJldHVybiBsaXN0KGxpc3RfcHJvcCkKICAgICBleGNl
cHQgS2V5RXJyb3I6CiAgICAgICAgIHJldHVybiBbXQogCiAKK2RlZiBzdHJfcHJvcChuYW1lLCBu
b2RlKToKKyAgICB0cnk6CisgICAgICAgIHByb3AgPSBub2RlLmdldChuYW1lKQorICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShwcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgorICAgICAgICByZXR1cm4gcHJvcAorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCiBkZWYgdGFncyhub2RlKToKICAgICAiIiJTZXQgb2YgdGFn
cyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAgdHJ5OgogICAgICAg
ICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
KHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUp
OgogICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZX0KICAgICAgICAgcmV0dXJuIHNldCh2YWx1ZSkK
ICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC02Niw3ICs3OSw3IEBAIGRlZiB0YWdzKG5vZGUpOgog
CiBkZWYgcHJlZnMobm9kZSk6CiAgICAgZGVmIHZhbHVlKGluaV92YWx1ZSk6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoaW5pX3ZhbHVlLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBy
ZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUuc3BsaXQoJzonLCAx
KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgdGhpbmdzIGxp
a2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3QnCkBAIC03NCw3ICs4
Nyw3IEBAIGRlZiBwcmVmcyhub2RlKToKIAogICAgIHRyeToKICAgICAgICAgbm9kZV9wcmVmcyA9
IG5vZGUuZ2V0KCJwcmVmcyIpCi0gICAgICAgIGlmIHR5cGUobm9kZV9wcmVmcykgaW4gKHN0ciwg
dW5pY29kZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9wcmVmcywgdGV4dF90eXBlKToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShub2RlX3ByZWZzKSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShpdGVtKSBmb3IgaXRlbSBpbiBub2RlX3ByZWZz
KQpAQCAtODYsNyArOTksNyBAQCBkZWYgcHJlZnMobm9kZSk6CiBkZWYgc2V0X3Byb3AobmFtZSwg
bm9kZSk6CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5nZXQobmFtZSkKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAgICAgICAgICAgIHJ2ID0g
e25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9IHNldChub2RlX2l0
ZW1zKQpAQCAtOTksNyArMTEyLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAgIHJ2
ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10aHJl
c2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChzdHIsIHVuaWNvZGUp
KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0ZXh0X3R5cGUpOgogICAgICAg
ICAgICAgbm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQogICAgICAgICBmb3IgaXRlbSBpbiBub2Rl
X2l0ZW1zOgogICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJzcGxpdCgiOiIsIDEp
CkBAIC0xNTYsNyArMTY5LDcgQEAgZGVmIGZ1enp5X3Byb3Aobm9kZSk6CiAgICAgaWYgbm90IGlz
aW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICBmb3Ig
aXRlbSBpbiB2YWx1ZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5p
Y29kZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgogICAg
ICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBw
YXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTI3OSw2ICsyOTIsMTAgQEAgY2xhc3MgRXhw
ZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNh
YmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxlZCIsIHNl
bGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0zMDcsNiArMzI0LDEw
IEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYga25vd25f
aW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICByZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIs
IHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBsZW1lbnRhdGlvbi1zdGF0dXMi
LCBzZWxmKQorCiAKIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAg
QHByb3BlcnR5CkBAIC0zMzcsNiArMzU4LDEwIEBAIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1h
bmlmZXN0SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMo
c2VsZikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJv
cCgibHNhbi1hbGxvd2VkIiwgc2VsZikKQEAgLTM1Nyw2ICszODIsMTAgQEAgY2xhc3MgRGlyZWN0
b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgZnV6enkoc2VsZik6CiAgICAgICAg
IHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW1wbGVt
ZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3Byb3AoImltcGxlbWVu
dGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgpAQCAtNDE0LDYgKzQ0Mywx
MCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNh
bl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxl
ZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC00NDIsNiAr
NDc1LDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGtub3duX2lu
dGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgiZXhwZWN0ZWQiLCBz
ZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMo
c2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3RhdHVzIiwg
c2VsZikKKwogICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIkFkZCBhIHN1
YnRlc3QgdG8gdGhlIGN1cnJlbnQgdGVzdAogCkBAIC00NzgsNyArNTE1LDcgQEAgZGVmIGdldF9t
YW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mbyk6CiAg
ICAgIiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVkX3BhdGgobWV0YWRh
dGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0
X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIiKSBhcyBm
OgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YV9jbHNfZ2V0dGVyPWRhdGFfY2xzX2dldHRlciwKQEAgLTQ5Nyw3ICs1MzQsNyBA
QCBkZWYgZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLCBydW5faW5mbyk6CiAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMgc2hvdWxkIGJlIGNvbXB1dGVkLgogICAgICIiIgogICAgIHRyeToKLSAgICAg
ICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBh
cyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IERpcmVjdG9yeU1hbmlmZXN0KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggZDMwMjgzMWE1N2FiYmFhZGQ3NWZlNDllMDk0NDgy
ZGMxNDIyM2VhMy4uNzliNWIxOWIzYTNmNjE3ZTVkZDQwMTE4MDQyZGEwYjNlYThlNDExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDYgKzYsNyBAQCBiZSBpbmNsdWRlZCBvciBleGNs
dWRlZC4KICIiIgogaW1wb3J0IGdsb2IKIGltcG9ydCBvcworZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgdXJsc3Bs
aXQKIAogZnJvbSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUKQEAgLTk0LDcgKzk1
LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIGlmIHBh
dGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRo
czoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMu
aXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBkYXRhIGluIGl0ZXJp
dGVtcyh0ZXN0X21hbmlmZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UK
ICAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgZGF0
YVsidGVzdHNfcGF0aCJdKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1hbmlmZXN0
Lml0ZXJwYXRoIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGVsc2UgbWFuaWZlc3QuaXRlcmRpcgpA
QCAtMTUwLDUgKzE1MSw1IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
CiAKIGRlZiBnZXRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCk6Ci0gICAgd2l0aCBvcGVuKG1hbmlm
ZXN0X3BhdGgpIGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFzIGY6
CiAgICAgICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxlKGYsIGRhdGFfY2xzX2dldHRlcj1s
YW1iZGEgeCwgeTogSW5jbHVkZU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21h
bmlmZXN0dXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CmluZGV4IGFm
OWFmMThkOTA3MTVkNDNiYmNkMmFlNDdjZTc2Mjc1YmIwZTE1NzcuLjEyOTQ1N2IzZmQxMjcwZGM2
NjAyOWQzZWE4NzNkMzUzNzE0YWE2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVz
dHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKQEAgLTMsNyAr
Myw3IEBAIGltcG9ydCBvcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxq
b2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgZGVmYXVs
dGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4IGltcG9ydCBpdGVy
a2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgaW50ZWdlcl90eXBl
cywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcywgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5
cGUKIAogZnJvbSAud3B0bWFuaWZlc3QgaW1wb3J0IHNlcmlhbGl6ZQogZnJvbSAud3B0bWFuaWZl
c3Qubm9kZSBpbXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJpbmFyeUV4cHJlc3Np
b25Ob2RlLApAQCAtNDExLDcgKzQxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6
CiAgICAgICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICAgICAgIGlmIGRpc2FibGVfaW50ZXJt
aXR0ZW50OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5jaGlsZHJlblswXSBp
ZiBlLmNvbmQgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1p
dHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0ciwgdW5pY29kZSkp
IGVsc2UgInVuc3RhYmxlIgorICAgICAgICAgICAgICAgIG1zZyA9IGRpc2FibGVfaW50ZXJtaXR0
ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIHN0cmluZ190eXBlcysodGV4
dF90eXBlLCkpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQo
ImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5l
d19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC01MTMsNyArNTEzLDcgQEAg
Y2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgIHRvcF9sZXZlbF9wcm9w
cywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5ub2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcwog
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQogICAg
ICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgotICAgICAg
ICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChkZXBlbmRlbnRfcHJvcHMpCisgICAg
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAgICAgICAgICAgICBm
b3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAgICAgICAgICBpZiAo
KG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQK
ICAgICAgICAgICAgICAgICAgICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRpb25bY29uZGl0aW9u
XSkpOgpAQCAtNzc0LDcgKzc3NCw3IEBAIGNsYXNzIEFwcGVuZE9ubHlMaXN0VXBkYXRlKFByb3Bl
cnR5VXBkYXRlKToKICAgICAgICAgZm9yIGl0ZW0gaW4gbmV3OgogICAgICAgICAgICAgaWYgaXRl
bSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICAgICAgcnYuYWRkKGl0ZW0pCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAgLTg5NywxMCArODk3
LDEwIEBAIGRlZiBtYWtlX2V4cHIocHJvcF9zZXQsIHJocyk6CiAKIAogZGVmIG1ha2Vfbm9kZSh2
YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxvbmcpOgorICAgIGlm
IGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgogICAgICAgICBub2Rl
ID0gTnVtYmVyTm9kZSh2YWx1ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGluIChzdHIsIHVuaWNv
ZGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh1bmljb2RlKHZhbHVlKSkKKyAgICBlbGlm
IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBTdHJpbmdOb2Rl
KHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAiX19pdGVyX18iKToK
ICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6CkBA
IC05MDksMTAgKzkwOSwxMCBAQCBkZWYgbWFrZV9ub2RlKHZhbHVlKToKIAogCiBkZWYgbWFrZV92
YWx1ZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBpbiAoaW50LCBmbG9hdCwgbG9u
Zyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90eXBlcysoZmxvYXQsKSk6CiAg
ICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBlKHZhbHVlKSBpbiAo
c3RyLCB1bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh1bmljb2RlKHZhbHVlKSkK
KyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBW
YWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIodmFsdWUsICJfX2l0
ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAgICBmb3IgaXRlbSBpbiB2
YWx1ZToKQEAgLTkzMSw3ICs5MzEsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3Qs
IHRlc3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZQogICAgIDpw
YXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGluIHRoaXMgbWFu
aWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0ZWRfcGF0aChtZXRh
ZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4obWFuaWZl
c3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFz
IGY6CiAgICAgICAgICAgICBydiA9IGNvbXBpbGUoZiwgdGVzdF9wYXRoLCB1cmxfYmFzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGVfaW50ZXJt
aXR0ZW50LCByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgIGV4Y2VwdCBJT0Vycm9yOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5
CmluZGV4IGMzMjhkY2VmYTcyNTNkZGVhOTUyNTQ5YzcwMjcyM2U5OGI0Y2FkYzQuLmRmMzFhYzQw
ZGU4YjhlZTcwODEzYzNiMmUwM2QxODY1ZjY3MmUyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tZXRhZGF0YS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKQEAgLTEsMTAgKzEs
MTIgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBhcnJh
eQogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IGludGVybgorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9zdHIsIGVu
c3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0X3R5cGUKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCiAKIGZyb20gLiBpbXBvcnQgbWFuaWZl
c3R1cGRhdGUKIGZyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgpAQCAtNDMsMTEgKzQ1LDExIEBAIGNs
YXNzIFJ1bkluZm8ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuY2Fub25pY2FsX3JlcHIg
PT0gb3RoZXIuY2Fub25pY2FsX3JlcHIKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CiAgICAgICAgICAgICB5aWVsZCBr
ZXksIHZhbHVlCiAKICAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBsaXN0KHNl
bGYuaXRlcml0ZW1zKCkpCisgICAgICAgIHJldHVybiBsaXN0KGl0ZXJpdGVtcyhzZWxmKSkKIAog
CiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxvZ19maWxlX25h
bWVzLApAQCAtMTI3LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMobWFuaWZlc3Rz
LCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdlZCA9IHNldChm
aWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBmb3IgbWFuaWZl
c3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgbWFuaWZlc3QsIHBh
dGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgogICAgICAgICBpZiBwYXRoc1sidXJsX2Jhc2Ui
XSA9PSAiLyI6CiAgICAgICAgICAgICByb290X21hbmlmZXN0ID0gbWFuaWZlc3QKICAgICAgICAg
ICAgIGJyZWFrCkBAIC0xOTgsNyArMjAwLDcgQEAgY2xhc3MgSW50ZXJuZWREYXRhKG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAg
Zm9yIGkgaW4geHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CisgICAgICAgIGZvciBpIGlu
IHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CiAgICAgICAgICAgICB5aWVsZCBzZWxmLmdl
dChpKQogCiAKQEAgLTIzOCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6CiBkZWYg
dW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6CiAgICAg
ICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYgaXNpbnN0
YW5jZShkYXRhLCB1bmljb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHRleHRfdHlwZSk6
CiAgICAgICAgIHJldHVybiAoZGF0YSwgTm9uZSkKICAgICAjIFVucGFjayBtdWx0aXBsZSBzdGF0
dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNlZCBpbiB0aGUgUmVzdWx0cyBuYW1lZCB0dXBsZSBi
ZWxvdywKICAgICAjIHNlcGFyYXRpbmcgYHN0YXR1c2AgYW5kIGBrbm93bl9pbnRlcm1pdHRlbnRg
LgpAQCAtMjU3LDcgKzI1OSw3IEBAIGRlZiBsb2FkX3Rlc3RfZGF0YSh0ZXN0X3BhdGhzKToKICAg
ICBtYW5pZmVzdHMgPSBtYW5pZmVzdF9sb2FkZXIubG9hZCgpCiAKICAgICBpZF90ZXN0X21hcCA9
IHt9Ci0gICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6
CiAgICAgICAgIGlkX3Rlc3RfbWFwLnVwZGF0ZShjcmVhdGVfdGVzdF90cmVlKHBhdGhzWyJtZXRh
ZGF0YV9wYXRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfbWFuaWZlc3QpKQogICAgIHJldHVybiBpZF90ZXN0X21hcApAQCAtMjg1LDEwICsyODcs
MTAgQEAgZGVmIHVwZGF0ZV9yZXN1bHRzKGlkX3Rlc3RfbWFwLAogICAgICAgICAgICAgICAgICAg
IGRpc2FibGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pbnRlcm1p
dHRlbnQsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudCk6Ci0gICAgdGVz
dF9maWxlX2l0ZW1zID0gc2V0KGlkX3Rlc3RfbWFwLml0ZXJ2YWx1ZXMoKSkKKyAgICB0ZXN0X2Zp
bGVfaXRlbXMgPSBzZXQoaXRlcnZhbHVlcyhpZF90ZXN0X21hcCkpCiAKICAgICBkZWZhdWx0X2V4
cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfY2xzIGluIHdwdHRl
c3QubWFuaWZlc3RfdGVzdF9jbHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVz
dF9jbHMgaW4gaXRlcml0ZW1zKHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMpOgogICAgICAgICBp
ZiB0ZXN0X2Nscy5yZXN1bHRfY2xzOgogICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RlZF9ieV90
eXBlWyh0ZXN0X3R5cGUsIEZhbHNlKV0gPSB0ZXN0X2Nscy5yZXN1bHRfY2xzLmRlZmF1bHRfZXhw
ZWN0ZWQKICAgICAgICAgaWYgdGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xzOgpAQCAtMzI0LDgg
KzMyNiwxMSBAQCBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRhX3BhdGgsIGV4cGVjdGVk
KToKICAgICAgICAgdG1wX3BhdGggPSBwYXRoICsgIi50bXAiCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHdpdGggb3Blbih0bXBfcGF0aCwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBm
LndyaXRlKG1hbmlmZXN0X3N0cikKLSAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0
aCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0ci5lbmNvZGUoInV0ZjgiKSkK
KyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAg
ICAgIG9zLnJlcGxhY2UodG1wX3BhdGgsIHBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0aCkKICAgICAgICAgZXhjZXB0IChFeGNl
cHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBvcy51bmxpbmsodG1wX3BhdGgpCkBAIC00MjYsNyArNDMxLDcgQEAgY2xhc3MgRXhwZWN0
ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJsc2FuX2xlYWsiXShp
dGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3psZWFrIiwge30pCi0g
ICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBtb3psZWFrX2RhdGEuaXRlcml0ZW1zKCk6
CisgICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96bGVha19kYXRh
KToKICAgICAgICAgICAgIGZvciBrZXksIGFjdGlvbiBpbiBbKCJvYmplY3RzIiwgIm1vemxlYWtf
b2JqZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidG90YWwiLCAibW96
bGVha190b3RhbCIpXToKICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzY29wZV9kYXRhLmdl
dChrZXksIFtdKToKQEAgLTQzOCw3ICs0NDMsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVybi5zdG9yZShSdW5J
bmZvKGRhdGFbInJ1bl9pbmZvIl0pKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0YSk6
Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5pZF90ZXN0X21hcFt0ZXN0X2lkXQogICAgICAgICBl
eGNlcHQgS2V5RXJyb3I6CkBAIC00NDgsOCArNDUzLDggQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXSA9IHNldCgpCiAK
ICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRl
cm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQotICAgICAgICBzdWJ0ZXN0ID0gaW50ZXJu
KGRhdGFbInN1YnRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVy
bihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCisgICAgICAgIHN1YnRlc3QgPSBpbnRlcm4oZW5z
dXJlX3N0cihkYXRhWyJzdWJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rl
c3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToKICAgICAg
ICAgICAgIHJldHVybgpAQCAtNDY2LDcgKzQ3MSw3IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihv
YmplY3QpOgogICAgICAgICBpZiBkYXRhWyJzdGF0dXMiXSA9PSAiU0tJUCI6CiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUo
InV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3Qi
XSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQpCiAg
ICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00Nzks
NyArNDg0LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGRlbCBz
ZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0KIAogICAgIGRlZiBhc3NlcnRpb25fY291bnQoc2Vs
ZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgi
dXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJd
KSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5pZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAg
ICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTQ5MCwx
MiArNDk1LDE1IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RfZm9yX3Njb3BlKHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9IGRhdGEuZ2V0KCJz
Y29wZSIsICIvIikKLSAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGguam9pbihkaXJfcGF0
aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICBkaXJfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihvcy5wYXRoLmpvaW4oZGlyX3BhdGgs
ICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkpCiAgICAgICAgIGlmIGRpcl9p
ZC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfaWRbMTpdCiAgICAg
ICAgIHJldHVybiBkaXJfaWQsIHNlbGYuaWRfdGVzdF9tYXBbZGlyX2lkXQogCiAgICAgZGVmIGxz
YW5fbGVhayhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6Cisg
ICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIGxzYW4gYW5ub3RhdGlvbnMg
Zm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRpcl9pZCwgdGVz
dF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICB0ZXN0X2RhdGEuc2V0
KGRpcl9pZCwgTm9uZSwgImxzYW4iLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX2lu
Zm8sIChkYXRhWyJmcmFtZXMiXSwgZGF0YS5nZXQoImFsbG93ZWRfbWF0Y2giKSkpCkBAIC01MDMs
NiArNTExLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha19vYmplY3Qo
c2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8iOgorICAgICAgICAg
ICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90YXRpb25zIGZvciBy
b290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJfaWQsIHRlc3RfZGF0
YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRhLnNldChkaXJf
aWQsIE5vbmUsICJsZWFrLW9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5f
aW5mbywgKCIlczolcyIsIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbIm5hbWUiXSksCkBAIC01MTEs
NiArNTIyLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha190b3RhbChz
ZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6CisgICAgICAgICAg
ICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIG1vemxlYWsgYW5ub3RhdGlvbnMgZm9yIHJv
b3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRhdGFbImJ5dGVzIl06
CiAgICAgICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0
YSkKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAibGVhay10aHJlc2hv
bGQiLApAQCAtNTI5LDMxICs1NDMsMzAgQEAgZGVmIGNyZWF0ZV90ZXN0X3RyZWUobWV0YWRhdGFf
cGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgYXNzZXJ0IGFsbF90eXBlcyA+IGV4Y2x1ZGVfdHlw
ZXMKICAgICBpbmNsdWRlX3R5cGVzID0gYWxsX3R5cGVzIC0gZXhjbHVkZV90eXBlcwogICAgIGZv
ciBpdGVtX3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gdGVzdF9tYW5pZmVzdC5pdGVydHlwZXMo
KmluY2x1ZGVfdHlwZXMpOgotICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShp
bnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihpdGVtX3R5cGUuZW5jb2RlKCJ1dGY4
IikpLAorICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4oZW5zdXJl
X3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybihlbnN1cmVfc3RyKGl0ZW1fdHlwZSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzKQogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAg
ICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybih0ZXN0LmlkLmVuY29kZSgidXRmOCIpKV0gPSB0ZXN0
X2ZpbGVfZGF0YQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKGVuc3VyZV9zdHIodGVz
dC5pZCkpXSA9IHRlc3RfZmlsZV9kYXRhCiAKLSAgICAgICAgZGlyX3BhdGggPSBvcy5wYXRoLnNw
bGl0KHRlc3RfcGF0aClbMF0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgICAgICBkaXJf
cGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICBpZiBkaXJfcGF0aDoKLSAgICAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfcGF0
aCArICIvX19kaXJfXyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2lk
ID0gIl9fZGlyX18iCi0gICAgICAgICAgICBkaXJfaWQgPSBpbnRlcm4oKHRlc3RfbWFuaWZlc3Qu
dXJsX2Jhc2UgKyBkaXJfaWQpLmxzdHJpcCgiLyIpLmVuY29kZSgidXRmOCIpKQotICAgICAgICAg
ICAgaWYgZGlyX2lkIG5vdCBpbiBpZF90ZXN0X21hcDoKLSAgICAgICAgICAgICAgICB0ZXN0X2Zp
bGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNv
ZGUoInV0ZjgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSkKLSAgICAgICAgICAgICAgICBpZF90ZXN0X21hcFtkaXJfaWRdID0gdGVzdF9maWxlX2Rh
dGEKLSAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aCBvciBkaXJfcGF0aCBpbiBpZF90ZXN0X21h
cDoKKyAgICAgICAgICAgIGRpcl9tZXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsICJf
X2Rpcl9fIikKKyAgICAgICAgICAgIGRpcl9pZCA9ICh0ZXN0X21hbmlmZXN0LnVybF9iYXNlICsg
ZGlyX21ldGFfcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpKS5sc3RyaXAoIi8iKQorICAg
ICAgICAgICAgaWYgZGlyX2lkIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybihlbnN1
cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyX21ldGFfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGlyX2lkXSA9IHRlc3Rf
ZmlsZV9kYXRhCisgICAgICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShkaXJfcGF0
aCkKKyAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aDoKICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZGlyX3BhdGggPSBkaXJfcGF0aC5yc3BsaXQoIi8iLCAxKVswXSBpZiAiLyIg
aW4gZGlyX3BhdGggZWxzZSAiIgogCiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFwCiAKQEAgLTYxNCw3
ICs2MjcsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgc2VsZi5pdGVt
X3R5cGUgPSBpdGVtX3R5cGUKICAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKICAg
ICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFfcGF0aAotICAgICAgICBzZWxmLnRl
c3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIpKSBmb3IgaXRlbSBpbiB0ZXN0c30K
KyAgICAgICAgc2VsZi50ZXN0cyA9IHtpbnRlcm4oZW5zdXJlX3N0cihpdGVtLmlkKSkgZm9yIGl0
ZW0gaW4gdGVzdHN9CiAgICAgICAgIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZSA9IEZhbHNlCiAgICAg
ICAgIHNlbGYuZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QoUGFja2VkUmVz
dWx0TGlzdCkpCiAKQEAgLTY1NSwxMSArNjY4LDExIEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmpl
Y3QpOgogICAgICAgICAjIFJldHVybiBzdWJ0ZXN0IG5vZGVzIHByZXNlbnQgaW4gdGhlIGV4cGVj
dGVkIGZpbGUsIGJ1dCBtaXNzaW5nIGZyb20gdGhlIGRhdGEKICAgICAgICAgcnYgPSBbXQogCi0g
ICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6Ci0g
ICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZC5kZWNvZGUoInV0Zjgi
KSkKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEp
OgorICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KGVuc3VyZV90ZXh0KHRlc3Rf
aWQpKQogICAgICAgICAgICAgaWYgbm90IHRlc3Q6CiAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNvZGUoInV0ZjgiKSBmb3Ig
aXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90IE5vbmUpCisgICAgICAg
ICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGVuc3VyZV90ZXh0KGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJrZXlzKHN1YnRlc3RzKSBpZiBpdGVtIGlzIG5vdCBOb25lKQogICAgICAgICAgICAgbWlzc2lu
Z19zdWJ0ZXN0cyA9IHNldCh0ZXN0LnN1YnRlc3RzLmtleXMoKSkgLSBzZWVuX3N1YnRlc3RzCiAg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBtaXNzaW5nX3N1YnRlc3RzOgogICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3N1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KGl0ZW0pCkBAIC02NzMsNiArNjg2
LDI5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBydgog
CisgICAgZGVmIGZpbHRlcl91bmtub3duX3Byb3BzKHNlbGYsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBz
dWJ0ZXN0cyk6CisgICAgICAgICMgUmVtb3ZlIHN1YnRlc3RzIHdoaWNoIGhhdmUgc29tZSBjb25k
aXRpb25zIHRoYXQgYXJlbid0IGluIHVwZGF0ZV9wcm9wZXJ0aWVzCisgICAgICAgICMgc2luY2Ug
cmVtb3ZpbmcgdGhlc2UgbWF5IGJlIGluYXBwcm9wcmlhdGUKKyAgICAgICAgdG9wX2xldmVsX3By
b3BzLCBkZXBlbmRlbnRfcHJvcHMgPSB1cGRhdGVfcHJvcGVydGllcworICAgICAgICBhbGxfcHJv
cGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJ2
YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKKyAgICAgICAgICAgIGFsbF9wcm9wZXJ0aWVzIHw9IHNl
dChpdGVtKQorCisgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgZm9yIHN1YnRlc3QgaW4g
c3VidGVzdHM6CisgICAgICAgICAgICBpbmNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgZm9yIGtl
eSwgXyBpbiBzdWJ0ZXN0Lml0ZXJfcHJvcGVydGllcygpOgorICAgICAgICAgICAgICAgIGNvbmRp
dGlvbnMgPSBzdWJ0ZXN0LmdldF9jb25kaXRpb25zKGtleSkKKyAgICAgICAgICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25k
aXRpb24udmFyaWFibGVzLmlzc3Vic2V0KGFsbF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiBub3QgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIGluY2x1ZGU6CisgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCiAgICAgZGVmIHVwZGF0ZShz
ZWxmLCBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUsIHVwZGF0ZV9wcm9wZXJ0aWVzLAogICAgICAg
ICAgICAgICAgZnVsbF91cGRhdGU9RmFsc2UsIGRpc2FibGVfaW50ZXJtaXR0ZW50PU5vbmUsIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsCiAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0
ZW50PUZhbHNlKToKQEAgLTY4Nyw2ICs3MjMsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0
KToKIAogICAgICAgICBpZiBmdWxsX3VwZGF0ZToKICAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxm
Lm9ycGhhbl9zdWJ0ZXN0cyhleHBlY3RlZCkKKyAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxmLmZp
bHRlcl91bmtub3duX3Byb3BzKHVwZGF0ZV9wcm9wZXJ0aWVzLCBvcnBoYW5zKQogCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBvcnBoYW5zOgogICAgICAg
ICAgICAgICAgIHJldHVybgpAQCAtNzA0LDkgKzc0MSw5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkLmdldF90ZXN0KHRl
c3RfaWQpCiAgICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRdID0gdGVzdF9leHBl
Y3RlZAogCi0gICAgICAgIGZvciB0ZXN0X2lkLCB0ZXN0X2RhdGEgaW4gc2VsZi5kYXRhLml0ZXJp
dGVtcygpOgotICAgICAgICAgICAgdGVzdF9pZCA9IHRlc3RfaWQuZGVjb2RlKCJ1dGY4IikKLSAg
ICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gdGVzdF9kYXRhLml0ZXJp
dGVtcygpOgorICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIGl0ZXJpdGVtcyhzZWxm
LmRhdGEpOgorICAgICAgICAgICAgdGVzdF9pZCA9IGVuc3VyZV9zdHIodGVzdF9pZCkKKyAgICAg
ICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gaXRlcml0ZW1zKHRlc3RfZGF0
YSk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRz
X2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGRpcmVjdG9yeSBtZXRh
ZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5vbmUgYW5kIHRlc3Rf
aWQuZW5kc3dpdGgoIl9fZGlyX18iKToKQEAgLTcyMiw4ICs3NTksNyBAQCBjbGFzcyBUZXN0Rmls
ZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQK
ICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2Uoc3VidGVzdF9pZCwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5kZWNvZGUoInV0ZjgiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3VidGVzdF9pZCA9IGVuc3VyZV90ZXh0KHN1YnRlc3RfaWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpdGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZC5nZXRfc3VidGVzdChzdWJ0
ZXN0X2lkKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHByb3AgPT0gInN0YXR1cyI6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMmI4OTRjYjc0ZDRlYzA5MTkzMWJmNDE3YzkyZDViZWEwNzFjYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQpAQCAtMCwwICsxLDExIEBA
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBzaXgKKworCitkZWYgY2FzdF9lbnYoZW52KToKKyAgICAi
IiJFbmNvZGUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgYXMgdGhlIGFwcHJvcHJpYXRlIHR5
cGUgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24KKyAgICBUaGlzIGFzc3VtZXMgdGhhdCBhbGwgdGhl
IGRhdGEgaXMgb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIFVURjgiIiIKKworICAgIGVudl90eXBl
ID0gc2l4LmVuc3VyZV9iaW5hcnkgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgZWxzZSBzaXgu
ZW5zdXJlX3N0cgorICAgIHJldHVybiB7ZW52X3R5cGUoa2V5KTogZW52X3R5cGUodmFsdWUpIGZv
ciBrZXksIHZhbHVlIGluIHNpeC5pdGVyaXRlbXMoZW52KX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9wcm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQppbmRleCBlMzExNzA0
MjcwOWY5OWY0ZTA0NDNkYzBkZmFmNTYxYWQwYjU0OGIwLi5hYmQ4NDA5NGJiMzNkYmQxM2IzNTk0
YTdhY2JlODQ2NzUxMmE5OWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGlt
cG9ydGxpYgogaW1wb3J0IGltcAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5i
cm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJv
ZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRpcGxpZXIgPSBnZXRh
dHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAgICAgICAgc2VsZi5l
eGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xzX25hbWUgaW4g
ZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xz
X25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgogICAgICAgICAgICAgY2xzID0g
Z2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQogICAgICAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFz
c2VzW3Rlc3RfdHlwZV0gPSBjbHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggYzA2ZjdlNWU5ZDZiMTBiNGU2
MTljOTVhNjI0MTdlNTJhNTk2YmU1My4uM2Y4OTg5NzI5ZmRlMGVlNDVjZjc4M2JjNjk4MzA3ZTM4
Yzg0NGQ5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBvcnQgaW8KIGltcG9ydCBv
cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBm
cm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBK
U09ORm9ybWF0dGVyCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vzc19yZXN1bHRzKGxv
ZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRlci5o
YW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhhbmRs
ZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAg
ICAgaWYgaXNfaW5jb25zaXN0ZW50KHRlc3RbInN0YXR1cyJdLCBpdGVyYXRpb25zKToKICAgICAg
ICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgTm9uZSwgdGVzdFsic3RhdHVz
Il0sIFtdKSkKLSAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0
ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGlu
IGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKICAgICAgICAgICAgIGlmIGlzX2luY29uc2lz
dGVudChzdWJ0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAgICAgICAgICAgICAgICAgaW5j
b25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RbInN0YXR1
cyJdLCBzdWJ0ZXN0WyJtZXNzYWdlcyJdKSkKIApAQCAtMjA4LDcgKzIwOSw3IEBAIGRlZiB3cml0
ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVyPU5vbmUsIHVzZV9k
ZXRhaWxzPUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3RzIiBpZiBsZW4ocmVzdWx0cykgPiAxCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRlc3QiKSkKIAotICAgIGZvciB0
ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9uYW1l
LCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYmFzZXVybCA9ICJodHRwOi8v
dzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMiIGluIG9zLnBhdGgu
c3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAgICAgICAgIGJhc2V1
cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0yMzYsNyArMjM3LDcg
QEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVyYXRpb25zLCBwcl9udW1iZXI9
Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogCiAKIGRlZiBydW5fc3RlcChsb2dnZXIsIGl0ZXJh
dGlvbnMsIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFzLCAqKmt3YXJncyk6
Ci0gICAgaW1wb3J0IHdwdHJ1bm5lcgorICAgIGZyb20gLiBpbXBvcnQgd3B0cnVubmVyCiAgICAg
a3dhcmdzID0gY29weS5kZWVwY29weShrd2FyZ3MpCiAKICAgICBpZiByZXN0YXJ0X2FmdGVyX2l0
ZXJhdGlvbjoKQEAgLTI3OCw3ICsyNzksNyBAQCBkZWYgZ2V0X3N0ZXBzKGxvZ2dlciwgcmVwZWF0
X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBrd2FyZ3NfZXh0cmFzKToKICAgICBmb3Iga3dhcmdzX2V4
dHJhIGluIGt3YXJnc19leHRyYXM6CiAgICAgICAgIGlmIGt3YXJnc19leHRyYToKICAgICAgICAg
ICAgIGZsYWdzX3N0cmluZyA9ICIgd2l0aCBmbGFncyAlcyIgJSAiICIuam9pbigKLSAgICAgICAg
ICAgICAgICAiJXM9JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBrd2FyZ3NfZXh0cmEuaXRlcml0ZW1z
KCkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1z
KGt3YXJnc19leHRyYSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcg
PSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IGZhNTRjYTM2MTU3NjMxOGNiMzVlYzcxNmExYTE1OWJk
YjUzMmU2YzguLjNhMjZlZmM1NTQyMTFhNTI0OGE3OTA5MDlkOTk4OTNhZmU5ZmY2NzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
bG9hZGVyLnB5CkBAIC01LDYgKzUsOCBAQCBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJh
Y3RtZXRob2QKIGZyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQogZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBv
cnQgUXVldWUKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfYmluYXJ5LCBpdGVyaXRlbXMKK2Zyb20g
c2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQog
ZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCkBAIC0xNSw2ICsxNyw3IEBAIG1hbmlmZXN0
ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93bmxvYWRfZnJvbV9naXRodWIgPSBO
b25lCiAKKwogZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogICAgICMgVGhpcyByZWxpZXMgb24g
YW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIGhhdmluZyBzZXQgdGhlIHN5cy5wYXRoIGNvcnJlY3Rs
eSA6KAogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBkb3dubG9hZF9mcm9t
X2dpdGh1YgpAQCAtMjQsMTIgKzI3LDEzIEBAIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToKIAog
CiBjbGFzcyBUZXN0Q2h1bmtlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3Rh
bF9jaHVua3MsIGNodW5rX251bWJlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsX2No
dW5rcywgY2h1bmtfbnVtYmVyLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYudG90YWxfY2h1bmtz
ID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYuY2h1bmtfbnVtYmVyID0gY2h1bmtfbnVtYmVy
CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rX251bWJlciA8PSBzZWxmLnRvdGFsX2NodW5rcwog
ICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRfbG9nZ2VyKCkKICAg
ICAgICAgYXNzZXJ0IHNlbGYubG9nZ2VyCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFVuY2h1bmtlZChUZXN0Q2h1bmtl
cik6CiAgICAgICAgIFRlc3RDaHVua2VyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykK
ICAgICAgICAgYXNzZXJ0IHNlbGYudG90YWxfY2h1bmtzID09IDEKIAotICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBtYW5pZmVzdCk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0LCAqKmt3
YXJncyk6CiAgICAgICAgIGZvciBpdGVtIGluIG1hbmlmZXN0OgogICAgICAgICAgICAgeWllbGQg
aXRlbQogCkBAIC00OSw3ICs1Myw3IEBAIGNsYXNzIEhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9
IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQogICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgs
IHRlc3RzIGluIG1hbmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNSh0ZXN0
X3BhdGgpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
ZW5zdXJlX2JpbmFyeSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAgICAgICAgICAgICBp
ZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTYyLDggKzY2LDEzIEBAIGNs
YXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToKICAgICAiIiIKICAgICBkZWYg
X19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9IHNlbGYuY2h1
bmtfbnVtYmVyIC0gMQorICAgICAgICBkZXB0aCA9IHNlbGYua3dhcmdzLmdldCgiZGVwdGgiKQog
ICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0OgotICAg
ICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKSku
aGV4ZGlnZXN0KCksIDE2KQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAgICAgICAgICAgICAg
aGFzaF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKS5z
cGxpdChvcy5wYXRoLnNlcCwgZGVwdGgpWzpkZXB0aF0pCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCisgICAg
ICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1KGVuc3VyZV9iaW5hcnkoaGFzaF9wYXRoKSkuaGV4
ZGlnZXN0KCksIDE2KQogICAgICAgICAgICAgaWYgaCAlIHNlbGYudG90YWxfY2h1bmtzID09IGNo
dW5rX2luZGV4OgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0
ZXN0cwogCkBAIC0xMjQsNyArMTMzLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2FkZXIob2JqZWN0KToK
IAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZvciB1cmxf
YmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
dXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgogICAgICAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IHNlbGYubG9hZF9tYW5pZmVzdCh1cmxfYmFzZT11cmxfYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipwYXRocykK
ICAgICAgICAgICAgIHBhdGhfZGF0YSA9IHsidXJsX2Jhc2UiOiB1cmxfYmFzZX0KQEAgLTE1OSw3
ICsxNjgsMTAgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICB0
b3RhbF9jaHVua3M9MSwKICAgICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPTEsCiAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfaHR0cHM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgc2tpcF90aW1l
b3V0PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9xdWljPUZhbHNlLAorICAgICAg
ICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNraXBfaW1w
bGVtZW50YXRpb25fc3RhdHVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdz
PU5vbmUpOgogCiAgICAgICAgIHNlbGYudGVzdF90eXBlcyA9IHRlc3RfdHlwZXMKICAgICAgICAg
c2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvCkBAIC0xNzAsMTYgKzE4MiwyMSBAQCBjbGFzcyBUZXN0
TG9hZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYu
ZGlzYWJsZWRfdGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYuaW5jbHVkZV9odHRwcyA9IGluY2x1
ZGVfaHR0cHMKKyAgICAgICAgc2VsZi5pbmNsdWRlX3F1aWMgPSBpbmNsdWRlX3F1aWMKICAgICAg
ICAgc2VsZi5za2lwX3RpbWVvdXQgPSBza2lwX3RpbWVvdXQKKyAgICAgICAgc2VsZi5za2lwX2lt
cGxlbWVudGF0aW9uX3N0YXR1cyA9IHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzCiAKICAgICAg
ICAgc2VsZi5jaHVua190eXBlID0gY2h1bmtfdHlwZQogICAgICAgICBzZWxmLnRvdGFsX2NodW5r
cyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9IGNodW5rX251bWJl
cgogCisgICAgICAgIGlmIGNodW5rZXJfa3dhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBjaHVu
a2VyX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuY2h1bmtlciA9IHsibm9uZSI6IFVuY2h1bmtl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNoIjogSGFzaENodW5rZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGlyX2hhc2giOiBEaXJlY3RvcnlIYXNoQ2h1bmtlcn1bY2h1bmtf
dHlwZV0odG90YWxfY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaHVua19udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjaHVua2VyX2t3YXJncykKIAogICAg
ICAgICBzZWxmLl90ZXN0X2lkcyA9IE5vbmUKIApAQCAtMjA2LDcgKzIyMyw3IEBAIGNsYXNzIFRl
c3RMb2FkZXIob2JqZWN0KToKICAgICBkZWYgbG9hZF9kaXJfbWV0YWRhdGEoc2VsZiwgdGVzdF9t
YW5pZmVzdCwgbWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKToKICAgICAgICAgcnYgPSBbXQogICAg
ICAgICBwYXRoX3BhcnRzID0gb3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0aCkuc3BsaXQob3MucGF0
aC5zZXApCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocGF0aF9wYXJ0cykgKyAxKToKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6CiAgICAgICAgICAgICBw
YXRoID0gb3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIG9zLnBhdGguc2VwLmpvaW4ocGF0aF9w
YXJ0c1s6aV0pLCAiX19kaXJfXy5pbmkiKQogICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gc2Vs
Zi5kaXJlY3RvcnlfbWFuaWZlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuZGlyZWN0b3J5X21h
bmlmZXN0c1twYXRoXSA9IG1hbmlmZXN0ZXhwZWN0ZWQuZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLApA
QCAtMjM2LDcgKzI1Myw3IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgICAg
IG1hbmlmZXN0X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1zKQogCiAgICAgICAg
IGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3RfaXRlbXM6Ci0gICAg
ICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNlW2l0ZXIodGVzdHMp
Lm5leHQoKS51cmxfYmFzZV0KKyAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5pZmVzdHNf
YnlfdXJsX2Jhc2VbbmV4dChpdGVyKHRlc3RzKSkudXJsX2Jhc2VdCiAgICAgICAgICAgICBtZXRh
ZGF0YV9wYXRoID0gc2VsZi5tYW5pZmVzdHNbbWFuaWZlc3RfZmlsZV1bIm1ldGFkYXRhX3BhdGgi
XQogCiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhID0gc2VsZi5s
b2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFkYXRhX3BhdGgsIHRlc3RfcGF0aCkKQEAg
LTI1Miw4ICsyNjksMTIgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAg
ZW5hYmxlZCA9IG5vdCB0ZXN0LmRpc2FibGVkKCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlu
Y2x1ZGVfaHR0cHMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0gPT0gImh0dHBzIjoK
ICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmluY2x1ZGVfcXVpYyBhbmQgdGVzdC5lbnZpcm9ubWVudFsicXVpYyJdOgorICAgICAgICAgICAg
ICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5za2lwX3RpbWVvdXQgYW5k
IHRlc3QuZXhwZWN0ZWQoKSA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAgICAgZW5hYmxlZCA9
IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLnNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzIGFu
ZCB0ZXN0LmltcGxlbWVudGF0aW9uX3N0YXR1cygpIGluIHNlbGYuc2tpcF9pbXBsZW1lbnRhdGlv
bl9zdGF0dXM6CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgICAgICBr
ZXkgPSAiZW5hYmxlZCIgaWYgZW5hYmxlZCBlbHNlICJkaXNhYmxlZCIKICAgICAgICAgICAgIHRl
c3RzW2tleV1bdGVzdF90eXBlXS5hcHBlbmQodGVzdCkKIApAQCAtMjg0LDYgKzMwNSwxMCBAQCBj
bGFzcyBUZXN0U291cmNlKG9iamVjdCk6CiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywg
Kiprd2FyZ3MpOiAgIyBub3FhOiBOODA1CiAgICAgICAgIHBhc3MKIAorICAgIEBhYnN0cmFjdG1l
dGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5v
cWE6IE44MDUKKyAgICAgICAgcGFzcworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdyb3Vw
X21ldGFkYXRhKGNscywgc3RhdGUpOgogICAgICAgICByZXR1cm4geyJzY29wZSI6ICIvIn0KQEAg
LTMyMiwxNCArMzQ3LDI1IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNvdXJjZSk6CiAgICAg
ICAgICAgICB0ZXN0X3F1ZXVlLnB1dChpdGVtKQogICAgICAgICByZXR1cm4gdGVzdF9xdWV1ZQog
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3VwKGNscywgdGVzdHMsICoq
a3dhcmdzKToKKyAgICAgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgc3Rh
dGUgPSB7fQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0
czoKKyAgICAgICAgICAgIGlmIGNscy5uZXdfZ3JvdXAoc3RhdGUsIHRlc3QsICoqa3dhcmdzKToK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2xzLmdyb3VwX21ldGFkYXRhKHN0YXRlKVsnc2Nv
cGUnXQorICAgICAgICAgICAgZ3JvdXBzW2N1cnJlbnRdLmFwcGVuZCh0ZXN0LmlkKQorICAgICAg
ICByZXR1cm4gZ3JvdXBzCisKIAogY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShUZXN0U291cmNlKToK
ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJn
cyk6CiAgICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHByb2Nlc3NlcyA9IGt3
YXJnc1sicHJvY2Vzc2VzIl0KLSAgICAgICAgcXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiB4
cmFuZ2UocHJvY2Vzc2VzKV0KLSAgICAgICAgbWV0YWRhdGFzID0gW2Nscy5ncm91cF9tZXRhZGF0
YShOb25lKSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAgcXVldWVzID0gW2Rl
cXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQorICAgICAgICBtZXRhZGF0YXMgPSBb
Y2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nlc3NlcyldCiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgaWR4ID0gaGFzaCh0ZXN0LmlkKSAl
IHByb2Nlc3NlcwogICAgICAgICAgICAgZ3JvdXAgPSBxdWV1ZXNbaWR4XQpAQCAtMzQyLDYgKzM3
OCwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgogCiAgICAgICAgIHJl
dHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVzdHNfYnlfZ3Jv
dXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4ge2Nscy5ncm91cF9tZXRh
ZGF0YShOb25lKVsnc2NvcGUnXTogW3QuaWQgZm9yIHQgaW4gdGVzdHNdfQorCiAKIGNsYXNzIFBh
dGhHcm91cGVkU291cmNlKEdyb3VwZWRTb3VyY2UpOgogICAgIEBjbGFzc21ldGhvZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weQppbmRleCA3YjZiZjU3ZDE1OTkyOWNkY2E4N2U5Y2EzMjE2MTA0MDFiMzcxNjZhLi40OWEz
NTI1ZTg4M2QxNWEwNTkwMjJhNTQ5MTFlZWNmNTMxZDgzNmZmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQpAQCAt
MTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IucnVuX3Rlc3QodGVzdCkKICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJh
Y2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiB3YWl0KHNlbGYp
OgpAQCAtMTU4LDcgKzE1OCw3IEBAIGRlZiBzdGFydF9ydW5uZXIocnVubmVyX2NvbW1hbmRfcXVl
dWUsIHJ1bm5lcl9yZXN1bHRfcXVldWUsCiAgICAgd2l0aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dn
ZXIsIGNhcHR1cmVfc3RkaW8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBicm93c2VyID0g
ZXhlY3V0b3JfYnJvd3Nlcl9jbHMoKipleGVjdXRvcl9icm93c2VyX2t3YXJncykKLSAgICAgICAg
ICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGJyb3dzZXIsICoqZXhlY3V0b3Jfa3dhcmdzKQor
ICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMobG9nZ2VyLCBicm93c2VyLCAqKmV4
ZWN1dG9yX2t3YXJncykKICAgICAgICAgICAgIHdpdGggVGVzdFJ1bm5lcihsb2dnZXIsIHJ1bm5l
cl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRvcikgYXMgcnVubmVy
OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcnVubmVyLnJ1bigp
CkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHRlc3RfcXVldWUsIHRl
c3Rfc291cmNlX2NscywgYnJvd3Nlcl9jbHMsIGJyb3dzZXJfa3dhcmdzLAogICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9jbHMsIGV4ZWN1dG9yX2t3YXJncywgc3RvcF9mbGFnLCByZXJ1bj0xLCBw
YXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVj
dGVkPUZhbHNlLCByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLAot
ICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgorICAgICAgICAgICAgICAgICBj
YXB0dXJlX3N0ZGlvPVRydWUsIHJlY29yZGluZz1Ob25lKToKICAgICAgICAgIiIiVGhyZWFkIHRo
YXQgb3ducyBhIHNpbmdsZSBUZXN0UnVubmVyIHByb2Nlc3MgYW5kIGFueSBwcm9jZXNzZXMgcmVx
dWlyZWQKICAgICAgICAgYnkgdGhlIFRlc3RSdW5uZXIgKGUuZy4gdGhlIEZpcmVmb3ggYmluYXJ5
KS4KIApAQCAtMzE4LDYgKzMxOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCiAKICAgICAg
ICAgc2VsZi5tYW5hZ2VyX251bWJlciA9IG5leHRfbWFuYWdlcl9udW1iZXIoKQorICAgICAgICBh
c3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCiAKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQogICAgICAgICBz
ZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKQEAgLTM1MCw2ICszNTIsNyBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgbWF5IGFsc28gaGF2ZSBh
IHN0b3AgZmxhZyBzZXQgYnkgdGhlIG1haW4gdGhyZWFkIGluZGljYXRpbmcKICAgICAgICAgdGhh
dCB0aGUgbWFuYWdlciBzaG91bGQgc2h1dCBkb3duIHRoZSBuZXh0IHRpbWUgdGhlIGV2ZW50IGxv
b3AKICAgICAgICAgc3BpbnMuIiIiCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3Ry
dW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWRsb2cu
U3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5icm93
c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBhcyBicm93c2VyOgog
ICAgICAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nlck1hbmFnZXIoc2VsZi5sb2dnZXIsCkBA
IC0zOTAsOCArMzkzLDggQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBuZXdfc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIm5ldyBzdGF0ZTogJXMiICUgc2VsZi5zdGF0ZS5fX2NsYXNzX18uX19uYW1lX18p
Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3RSdW5uZXJNYW5hZ2Vy
IG1haW4gbG9vcCB0ZXJtaW5hdGluZywgc3RhcnRpbmcgY2xlYW51cCIpCkBAIC00NjcsNiArNDcw
LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKICAgICBk
ZWYgc3RhcnRfaW5pdChzZWxmKToKICAgICAgICAgdGVzdCwgdGVzdF9ncm91cCwgZ3JvdXBfbWV0
YWRhdGEgPSBzZWxmLmdldF9uZXh0X3Rlc3QoKQorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImluaXQiXSkKICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIFJ1bm5lck1hbmFnZXJTdGF0ZS5zdG9wKCkKICAgICAgICAgZWxzZToKQEAg
LTU1Niw2ICs1NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFk
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnN0YXRlLnRlc3RfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5zdGF0ZS5ncm91cF9tZXRhZGF0YSkKIAorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInRlc3QiXSArIHNlbGYuc3RhdGUudGVzdC5pZC5z
cGxpdCgiLyIpWzE6XSkKICAgICAgICAgc2VsZi5sb2dnZXIudGVzdF9zdGFydChzZWxmLnN0YXRl
LnRlc3QuaWQpCiAgICAgICAgIGlmIHNlbGYucmVydW4gPiAxOgogICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiUnVuICVkLyVkIiAlIChzZWxmLnJ1bl9jb3VudCwgc2VsZi5yZXJ1bikpCkBA
IC02NzIsNiArNjc3LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdWJ0ZXN0X3VuZXhwZWN0ZWQg
b3IgaXNfdW5leHBlY3RlZCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucmVzdGFydF9vbl91bmV4cGVjdGVkKSkKIAorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImFmdGVyLXRlc3QiXSkKICAgICAgICAgaWYgKG5vdCBmaWxlX3Jlc3Vs
dC5zdGF0dXMgPT0gIkNSQVNIIiBhbmQKICAgICAgICAgICAgIHNlbGYucGF1c2VfYWZ0ZXJfdGVz
dCBvcgogICAgICAgICAgICAgKHNlbGYucGF1c2Vfb25fdW5leHBlY3RlZCBhbmQgKHN1YnRlc3Rf
dW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSkpOgpAQCAtNzIwLDYgKzcyNiw3IEBAIGNsYXNz
IFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAgZGVmIHN0b3BfcnVu
bmVyKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIiIiU3RvcCB0aGUgVGVzdFJ1bm5lciBh
bmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIiIgorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0
ZXN0cnVubmVyIiwgInN0b3BfcnVubmVyIl0pCiAgICAgICAgIGlmIHNlbGYudGVzdF9ydW5uZXJf
cHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTczOCw2ICs3NDUsNyBAQCBj
bGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5y
ZW1vdGVfcXVldWUuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUgPSBOb25lCiAg
ICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gTm9uZQorICAgICAgICBzZWxmLnJlY29yZGluZy5w
YXVzZSgpCiAKICAgICBkZWYgZW5zdXJlX3J1bm5lcl9zdG9wcGVkKHNlbGYpOgogICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiZW5zdXJlX3J1bm5lcl9zdG9wcGVkIikKQEAgLTgyNSw3ICs4MzMs
OCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAgcGF1c2Vf
b25fdW5leHBlY3RlZD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcmVzdGFydF9vbl91bmV4cGVj
dGVkPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRp
bz1UcnVlLAorICAgICAgICAgICAgICAgICByZWNvcmRpbmc9Tm9uZSk6CiAgICAgICAgIHNlbGYu
c3VpdGVfbmFtZSA9IHN1aXRlX25hbWUKICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAg
ICBzZWxmLnRlc3Rfc291cmNlX2NscyA9IHRlc3Rfc291cmNlX2NscwpAQCAtODQwLDYgKzg0OSw4
IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3QpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8g
PSBkZWJ1Z19pbmZvCiAgICAgICAgIHNlbGYucmVydW4gPSByZXJ1bgogICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8gPSBjYXB0dXJlX3N0ZGlvCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUKIAogICAgICAgICBz
ZWxmLnBvb2wgPSBzZXQoKQogICAgICAgICAjIEV2ZW50IHRoYXQgaXMgcG9sbGVkIGJ5IHRocmVh
ZHMgc28gdGhhdCB0aGV5IGNhbiBncmFjZWZ1bGx5IGV4aXQgaW4gdGhlIGZhY2UKQEAgLTg3Nyw3
ICs4ODgsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVy
ZV9zdGRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
b3JkaW5nPXNlbGYucmVjb3JkaW5nKQogICAgICAgICAgICAgbWFuYWdlci5zdGFydCgpCiAgICAg
ICAgICAgICBzZWxmLnBvb2wuYWRkKG1hbmFnZXIpCiAgICAgICAgIHNlbGYud2FpdCgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVjZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5CmluZGV4IDA2YTU2NDFkNTBmYmJh
ZWQ0ZGU5ZGY1MTFjNTY3NzUzZWYxYTMyNmQuLmUxZTE4ZWM1ZTljZDIxZGFhODlmOTE3NjkwYWQx
Mjg1MmY5YTI4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0
X3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5
CkBAIC0xLDkgKzEsMTAgQEAKIGltcG9ydCBzeXMKLWZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwg
ZGlybmFtZQogCiBpbXBvcnQgbW9jawogaW1wb3J0IHB5dGVzdAogCitmcm9tIG9zLnBhdGggaW1w
b3J0IGpvaW4sIGRpcm5hbWUKKwogc3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2Zp
bGVfXyksICIuLiIsICIuLiIsICIuLiIpKQogCiBzYXVjZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAo
IndwdHJ1bm5lci5icm93c2Vycy5zYXVjZSIpCkBAIC05NSw3ICs5Niw2IEBAIGRlZiB0ZXN0X3Nh
dWNlY29ubmVjdF9jbGVhbnVwKCk6CiAKICAgICAgICAgc2xlZXAuYXNzZXJ0X2NhbGxlZCgpCiAK
LQogZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfbmV2ZXJfcmVhZHkoKToKICAgICB3aXRo
IG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLlNhdWNlQ29ubmVjdCwgInVwbG9hZF9wcmVydW5fZXhl
YyIpLFwKICAgICAgICAgICAgIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLnN1YnByb2Nlc3MsICJQ
b3BlbiIpIGFzIFBvcGVuLFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4
cGVjdGVkdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weQpp
bmRleCAyMzA4YmU5NTkwZTkwMDRmNDFhNDkyNjgyZDE4N2E3YjRmYzU3MjMxLi5kNzEyMzdhNDJk
YWQ1OGM2OWI2ODZlNjA0MGI2NWY0MDA2NGM5NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
ZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDcgKzEsMyBAQAotaW1wb3J0IHN5cwotCi1pbXBvcnQgcHl0
ZXN0Ci0KIGZyb20gLi4gaW1wb3J0IGV4cGVjdGVkdHJlZSwgbWV0YWRhdGEKIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTMyLDggKzI4LDYgQEAgZGVmIHJlc3VsdHNf
b2JqZWN0KHJlc3VsdHMpOgogICAgIHJldHVybiByZXN1bHRzX29iagogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMCgp
OgogICAgICMgUGFzcyBpZiBkZWJ1ZwogICAgIHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAi
dmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiRkFJTCIpLApAQCAtNTMsOCArNDcs
NiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzAoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUp
ID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgIyBQYXNzIGlmIGxpbnV4IG9yIHdp
bmRvd3MgMTAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAiMTgu
MDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTc3LDggKzY5LDYgQEAgZGVmIHRlc3Rf
YnVpbGRfdHJlZV8xKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X2J1aWxkX3RyZWVfMigpOgogICAgICMgRmFpbHMgaW4gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9u
CiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRl
YnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC0xMDQsOCArOTQsNiBAQCBkZWYgdGVzdF9idWlsZF90
cmVlXzIoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRf
dHJlZV8zKCk6CiAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAi
MTguMDQiLCAiZGVidWciOiBUcnVlLCAidW51c2VkIjogRmFsc2V9LCAiUEFTUyIpLApAQCAtMTE4
LDggKzEwNiw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMygpOgogICAgIGFzc2VydCBkdW1wX3Ry
ZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzQoKToKICAgICAjIENoZWNrIGNvdW50
cyBmb3IgbXVsdGlwbGUgc3RhdHVzZXMKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4Iiwg
InZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBGYWxzZX0sICJGQUlMIiksCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA3MmYzYTU5MWFkN2Y5MDUzMjY3MWNjYjg5N2Rm
Y2IxNjFiYzhmNDVkLi42MGIxYjBhNWE4NzhjZGE5YzUwMGVhYWUyNWYzZmU4OWVhZGY4MTljIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAgLTcsNiArNyw3IEBAIGltcG9y
dCBtb2NrCiBmcm9tIG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVyZWRsb2cKIAogZnJv
bSAuLmZvcm1hdHRlcnMgaW1wb3J0IHdwdHJlcG9ydAorZnJvbSAuLmZvcm1hdHRlcnMud3B0c2Ny
ZWVuc2hvdCBpbXBvcnQgV3B0c2NyZWVuc2hvdEZvcm1hdHRlcgogZnJvbSAuLmZvcm1hdHRlcnMu
d3B0cmVwb3J0IGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKIAogCkBAIC0xNjYsMyArMTY3LDI2
IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9rbm93bl9pbnRlcm1pdHRlbnQoY2FwZmQpOgogICAgIHN1
YnRlc3QgPSB0ZXN0WyJzdWJ0ZXN0cyJdWzBdCiAgICAgYXNzZXJ0IHN1YnRlc3RbImV4cGVjdGVk
Il0gPT0gdSJQQVNTIgogICAgIGFzc2VydCBzdWJ0ZXN0WyJrbm93bl9pbnRlcm1pdHRlbnQiXSA9
PSBbdSdGQUlMJ10KKworCitkZWYgdGVzdF93cHRzY3JlZW5zaG90X3Rlc3RfZW5kKGNhcGZkKToK
KyAgICBmb3JtYXR0ZXIgPSBXcHRzY3JlZW5zaG90Rm9ybWF0dGVyKCkKKworICAgICMgRW1wdHkK
KyAgICBkYXRhID0ge30KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5v
bmUKKworICAgICMgTm8gaXRlbXMKKyAgICBkYXRhWydleHRyYSddID0geyJyZWZ0ZXN0X3NjcmVl
bnNob3RzIjogW119CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKSBpcyBOb25l
CisKKyAgICAjIEludmFsaWQgaXRlbQorICAgIGRhdGFbJ2V4dHJhJ11bJ3JlZnRlc3Rfc2NyZWVu
c2hvdHMnXSA9IFsibm8gZGljdCBpdGVtIl0KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5k
KGRhdGEpIGlzIE5vbmUKKworICAgICMgUmFuZG9tIGhhc2gKKyAgICBkYXRhWydleHRyYSddWydy
ZWZ0ZXN0X3NjcmVlbnNob3RzJ10gPSBbeyJoYXNoIjogIkhBU0giLCAic2NyZWVuc2hvdCI6ICJE
QVRBIn1dCisgICAgYXNzZXJ0ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsREFUQVxuJyA9PSBmb3Jt
YXR0ZXIudGVzdF9lbmQoZGF0YSkKKworICAgICMgQWxyZWFkeSBjYWNoZWQgaGFzaAorICAgIGFz
c2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggNTI1OTE1ZDE4MzJhYzhhZjE5NTdhNzk5
NjE1OTY5ZTA1OGVlZmNhNS4uZjNlNGNlNzk2YTQ1YzQ3MmE4OGZlMDIyMjc3ZTAzNDdiNGU5ODk0
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0x
LDQgKzEsMyBAQAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQg
cHl0ZXN0CkBAIC02LDggKzUsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBtYW5p
ZmVzdGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5
MyIpCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3RlZCIsIFsKICAgICAo
YiJyZWYuaHRtbDoxOzIwMCIsIFsoInJlZi5odG1sIiwgKCgxLCAxKSwgKDIwMCwgMjAwKSkpXSks
CiAgICAgKGIicmVmLmh0bWw6MC0xOzEwMC0yMDAiLCBbKCJyZWYuaHRtbCIsICgoMCwgMSksICgx
MDAsIDIwMCkpKV0pLApAQCAtMjUsNyArMjIsNyBAQCBmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4
cGVjdGVkCiAgICAgICAoKHUidGVzdC5odG1sIiwgdSJyZWYxLmh0bWwiLCAiPT0iKSwgKCg1LDEw
KSwgKDEwMCwgMTAwKSkpXSksCiBdKQogZGVmIHRlc3RfZnV6enkoZnV6enksIGV4cGVjdGVkKToK
LSAgICBkYXRhID0gIiIiCisgICAgZGF0YSA9IGIiIiIKIFt0ZXN0Lmh0bWxdCiAgIGZ1enp5OiAl
cyIiIiAlIGZ1enp5CiAgICAgZiA9IEJ5dGVzSU8oZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0
YWJpbGl0eS5weQppbmRleCA0NzQwNTZkZGU2YzY3YmIwYWFkMjEwMDYxM2U2Y2EzMzE5NjIzOTYy
Li45YThmY2NmOTM1YTEzNmM2MDUwZTg1MmY5YTU3MDQxMzhiMGQzZjQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CkBAIC0xLDUgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgc3Rh
YmlsaXR5Ci0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGlj
dAogCiBkZWYgdGVzdF9pc19pbmNvbnNpc3RlbnQoKToKICAgICBhc3NlcnQgc3RhYmlsaXR5Lmlz
X2luY29uc2lzdGVudCh7IlBBU1MiOiAxMH0sIDEwKSBpcyBGYWxzZQpAQCAtMjksMyArMjksMTE0
IEBAIGRlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKICAgICAgICAgInRpbWVvdXQiOiAxMDB9
KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgc3RhYmlsaXR5LmZpbmRfc2xvd19zdGF0dXMoewogICAg
ICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiU0tJUCI6IDB9fSkgaXMgTm9uZQorCisKK2RlZiB0
ZXN0X2dldF9zdGVwcygpOgorICAgIGxvZ2dlciA9IE5vbmUKKworICAgIHN0ZXBzID0gc3RhYmls
aXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFtdKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09
IDAKKworICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFt7fV0p
CisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgcmVwZWF0X2xvb3AgPSAxCisgICAg
ZmxhZ19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICd5JworICAgIHN0ZXBzID0gc3Rh
YmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCAwLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkKKyAgICBhc3NlcnQg
bGVuKHN0ZXBzKSA9PSAxCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3Rz
IGluIGEgbG9vcCAlZCB0aW1lcyB3aXRoIGZsYWdzICVzPSVzIiAlICgKKyAgICAgICAgcmVwZWF0
X2xvb3AsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkKKworICAgIHJlcGVhdF9sb29wID0gMAorICAg
IHJlcGVhdF9yZXN0YXJ0ID0gMQorICAgIGZsYWdfbmFtZSA9ICdmbGFnJworICAgIGZsYWdfdmFs
dWUgPSAnbicKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRf
bG9vcCwgcmVwZWF0X3Jlc3RhcnQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2ZsYWdfbmFtZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDEKKyAg
ICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVz
dGFydHMgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAgIHJlcGVhdF9yZXN0
YXJ0LCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9vcCA9IDEwCisgICAg
cmVwZWF0X3Jlc3RhcnQgPSA1CisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dl
ciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbe31dKQorICAgIGFzc2VydCBsZW4oc3Rl
cHMpID09IDIKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBs
b29wICVkIHRpbWVzIiAlIHJlcGVhdF9sb29wCisgICAgYXNzZXJ0IHN0ZXBzWzFdWzBdID09ICgK
KyAgICAgICAgIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVzdGFydHMgJWQgdGltZXMi
ICUgcmVwZWF0X3Jlc3RhcnQpCisKKworZGVmIHRlc3RfbG9nX2hhbmRsZXIoKToKKyAgICBoYW5k
bGVyID0gc3RhYmlsaXR5LkxvZ0hhbmRsZXIoKQorICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCisg
ICAgZGF0YVsidGVzdCJdID0gInRlc3RfbmFtZSIKKyAgICB0ZXN0ID0gaGFuZGxlci5maW5kX29y
X2NyZWF0ZV90ZXN0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN1YnRlc3RzIl0gPT0gT3JkZXJl
ZERpY3QoKQorICAgIGFzc2VydCB0ZXN0WyJzdGF0dXMiXSA9PSBkZWZhdWx0ZGljdChpbnQpCisg
ICAgYXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXSA9PSBkZWZhdWx0ZGljdChmbG9hdCkK
KyAgICBhc3NlcnQgdGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKwor
ICAgIHN0YXJ0X3RpbWUgPSAxMDAKKyAgICBkYXRhWyJ0aW1lIl0gPSBzdGFydF90aW1lCisgICAg
aGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN0YXJ0X3RpbWUiXSA9
PSBzdGFydF90aW1lCisKKyAgICBkYXRhWyJzdWJ0ZXN0Il0gPSAic3VidGVzdF9uYW1lIgorICAg
IHN1YnRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkKKyAgICBhc3Nl
cnQgc3VidGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50KQorICAgIGFzc2VydCBzdWJ0
ZXN0WyJtZXNzYWdlcyJdID09IHNldCgpCisgICAgYXNzZXJ0IHN1YnRlc3QgPT0gaGFuZGxlci5m
aW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisKKyAgICBkYXRhWyJzdGF0dXMiXSA9IDAKKyAg
ICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDAKKyAgICBoYW5k
bGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFb
InN0YXR1cyJdXSA9PSAxCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2Vy
dCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMgorICAgIGRhdGFbInN0YXR1
cyJdID0gMQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0g
MAorICAgIG1lc3NhZ2UgPSAidGVzdCBtZXNzYWdlIgorICAgIGRhdGFbIm1lc3NhZ2UiXSA9IG1l
c3NhZ2UKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3Rb
InN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgYXNzZXJ0IGxlbihzdWJ0ZXN0WyJt
ZXNzYWdlcyJdKSA9PSAxCisgICAgYXNzZXJ0IG1lc3NhZ2UgaW4gc3VidGVzdFsibWVzc2FnZXMi
XQorCisgICAgdGVzdF9kdXJhdGlvbiA9IDEwCisgICAgZGF0YVsidGltZSJdID0gZGF0YVsidGlt
ZSJdICsgdGVzdF9kdXJhdGlvbgorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9PSB0ZXN0X2R1cmF0
aW9uCisgICAgYXNzZXJ0ICJ0aW1lb3V0IiBub3QgaW4gdGVzdAorCisgICAgZGF0YVsidGVzdDIi
XSA9ICJ0ZXN0X25hbWVfMiIKKyAgICB0aW1lb3V0ID0gNQorICAgIGRhdGFbImV4dHJhIl0gPSB7
fQorICAgIGRhdGFbImV4dHJhIl1bInRlc3RfdGltZW91dCJdID0gdGltZW91dAorICAgIGhhbmRs
ZXIudGVzdF9zdGFydChkYXRhKQorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsidGltZW91dCJdID09IHRpbWVvdXQgKiAxMDAwCisKKworZGVmIHRlc3RfZXJyX3N0
cmluZygpOgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnT0sn
OiAxLCB1J0ZBSUwnOiAxfSwgMSkgPT0gdSIqKkR1cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUqKiIKKyAg
ICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMiwgdSdGQUlM
JzogMX0sIDIpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioiCisgICAgYXNzZXJ0IHN0
YWJpbGl0eS5lcnJfc3RyaW5nKHt1J1NLSVAnOiAxfSwgMCkgPT0gdSJEdXBsaWNhdGUgc3VidGVz
dCBuYW1lIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnU0tJ
UCc6IDEsIHUnT0snOiAxfSwgMSkgPT0gdSJEdXBsaWNhdGUgc3VidGVzdCBuYW1lIgorCisgICAg
YXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlMJzogMX0sIDIpID09
IHUiKipGQUlMOiAxLzIsIE1JU1NJTkc6IDEvMioqIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJy
X3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnT0snOiAxfSwgMykgPT0gdSIqKkZBSUw6
IDEvMywgT0s6IDEvMywgTUlTU0lORzogMS8zKioiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVy
cl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMSwgdSdGQUlMJzogMX0sIDIpID09IHUiKipGQUlM
OiAxLzIsIE9LOiAxLzIqKiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxfSwgNCkgPT0gdSJGQUlMOiAx
LzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxLCB1J09LJzogMn0sIDQpID09IHUiRkFJ
TDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRl
ci5weQppbmRleCBlODU3Y2Q0M2RiNmQyODFmOTU0MTQyMzBmNTJjOTg0YWFkOTE1MTE4Li44MzYw
MDNkMTA2MDM4YWI0MzAzMDM1ZWVjY2EzMTc3NGM5YTI2Y2UxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3Rlc3Rsb2FkZXIucHkKQEAgLTIwLDggKzIwLDYgQEAgc2tpcDogdHJ1ZQogCiBAcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVkIG9uIFdpbjMyIikK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF9maWx0ZXJfdW5pY29kZSgpOgogICAgIHRlc3RzID0gbWFrZV9tb2NrX21hbmlmZXN0
KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRl
LnB5CmluZGV4IDVkOTAwYTNkNmM5Y2QyMzY5NmZlMGQyYjdjMjBkOGZmNTE0MmI5ZTUuLjZkYzA0
Y2VkZjM0YzdhOGZiNjY3M2YxYzVmNDc3ZDA1NjFlYjFmZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91
cGRhdGUucHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRs
b2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3Mu
cGFyZGlyLCBvcy5wYXJkaXIpKQotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0g
YXMgbWFuaWZlc3RfaXRlbQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0gYXMg
bWFuaWZlc3RfaXRlbSwgdXRpbHMKIAogCiBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3Bh
dGgpOgpAQCAtMjEsNyArMjEsOSBAQCBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3BhdGgp
OgogCiAKIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqYXJncyk6Ci0g
ICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQoIi8iKSkKKyAgICBwYXRoID0gdXRpbHMudG9fb3NfcGF0aChw
YXRoKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgcmVsX3BhdGhfcGFydHM9cGF0
aF9wYXJ0cywgaGFzaD1oYXNoKQogICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIs
IHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHBhdGgpLCAqYXJncykKICAgICBzLm1hbmlmZXN0X2l0ZW1z
ID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0ZW1fdHlwZSwgW3Rlc3RdKSkKICAgICBy
ZXR1cm4gcwpAQCAtMjksNyArMzEsNiBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhh
c2gsIGNscywgKmFyZ3MpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJuZXNzIjogbWFuaWZl
c3RfaXRlbS5UZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBtYW5p
ZmVzdF9pdGVtLlJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rfbm9kZSI6IG1hbmlm
ZXN0X2l0ZW0uUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAgIm1hbnVhbCI6IG1hbmlmZXN0
X2l0ZW0uTWFudWFsVGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjogbWFuaWZlc3RfaXRl
bS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAgICAgICAgICAiY29uZm9ybWFuY2VjaGVja2Vy
IjogbWFuaWZlc3RfaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LApAQCAtNjcsMTEgKzY4LDEy
IEBAIGRlZiB1cGRhdGUodGVzdHMsICpsb2dzLCAqKmt3YXJncyk6CiAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlX2Zyb21fbG9nKGxvZykKIAogICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gKFsiZGVidWci
LCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQorICAgICAgICAgICAg
ICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJdfSkK
IAogICAgIGV4cGVjdGVkX2RhdGEgPSB7fQogICAgIG1ldGFkYXRhLmxvYWRfZXhwZWN0ZWQgPSBs
YW1iZGEgXywgX18sIHRlc3RfcGF0aCwgKmFyZ3M6IGV4cGVjdGVkX2RhdGEuZ2V0KHRlc3RfcGF0
aCkKICAgICBmb3IgdGVzdF9wYXRoLCB0ZXN0X2lkcywgdGVzdF90eXBlLCBtYW5pZmVzdF9zdHIg
aW4gdGVzdHM6CisgICAgICAgIHRlc3RfcGF0aCA9IHV0aWxzLnRvX29zX3BhdGgodGVzdF9wYXRo
KQogICAgICAgICBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0gPSBtYW5pZmVzdHVwZGF0ZS5jb21w
aWxlKEJ5dGVzSU8obWFuaWZlc3Rfc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLApAQCAtMTA5LDcg
KzExMSw3IEBAIGRlZiBjcmVhdGVfbG9nKGVudHJpZXMpOgogICAgICAgICAgICAgZ2V0YXR0cihs
b2dnZXIsIGFjdGlvbikoKiprd2FyZ3MpCiAgICAgICAgIGxvZ2dlci5yZW1vdmVfaGFuZGxlciho
YW5kbGVyKQogICAgIGVsc2U6Ci0gICAgICAgIGpzb24uZHVtcChlbnRyaWVzLCBkYXRhKQorICAg
ICAgICBkYXRhLndyaXRlKGpzb24uZHVtcHMoZW50cmllcykuZW5jb2RlKCkpCiAgICAgZGF0YS5z
ZWVrKDApCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtMTMzLDExICsxMzUsOSBAQCBkZWYgY3JlYXRl
X3Rlc3RfbWFuaWZlc3QodGVzdHMsIHVybF9iYXNlPSIvIik6CiAgICAgcmV0dXJuIG0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC0x
NTUsMTEgKzE1NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgYXNzZXJ0IHVwZGF0ZWRb
MF1bMV0uaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTc4LDExICsxNzYsOSBAQCBkZWYgdGVzdF91cGRhdGVfMSgp
OgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0u
Z2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9rbm93
bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAg
ICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFBBU1Mi
IiIpXQogCkBAIC0yMTksMTEgKzIxNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1p
dHRlbnRfMSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBB
U1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgdGVzdHMg
PSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAg
ICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0
ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTI0NCwxMSArMjM4LDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgICAgICJleHBlY3RlZCIs
IGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93bl9pbnRl
cm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAg
ICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0i
IiIpXQogCkBAIC0yODcsMTEgKzI3OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93
bl9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykg
PT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlvdXNfaW50
ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxd
IiIiKV0KIApAQCAtMzM1LDggKzMyNSw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlv
dXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8p
ID09IFsiUEFTUyIsICJFUlJPUiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50
KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBOb25lKV0KIApAQCAtMzc0LDggKzM2Miw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9uZXdf
dGVzdF93aXRoX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1
bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2V4cGVjdGVkX3RpZV9yZXNvbHV0
aW9uKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCBOb25lKV0KIApAQCAtNDAzLDExICszODksOSBAQCBkZWYgdGVzdF91cGRhdGVf
ZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9y
dW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KIApAQCAt
NDQ2LDEwICs0MzAsOCBAQCBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZCgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFu
ZHJvaWQiOiBbUEFTUywgRkFJTF0KQEAgLTQ4OSwxMSArNDcxLDkgQEAgZGVmIHRlc3RfdXBkYXRl
X2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dp
dGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC01MTQsMTAgKzQ5NCw4IEBA
IGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9z
dGF0dXMoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkVSUk9S
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIi
IiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFT
UywgRkFJTF0iIiIpXQpAQCAtNTQ5LDEwICs1MjcsOCBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJt
aXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18x
KSA9PSBbIlBBU1MiLCAiVElNRU9VVCIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRl
cm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0K
ICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0iIiIpXQpA
QCAtNTg0LDExICs1NjAsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRlcm1pdHRl
bnRfd2l0aF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09
IFsiUEFTUyIsICJUSU1FT1VUIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGwoKToKICAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0g
ICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0K
ICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBU
SU1FT1VUXQpAQCAtNjI0LDExICs1OTgsOSBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50
X2Z1bGwoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVQsIFBBU1Nd
CkBAIC02NzUsMTEgKzY0Nyw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbF9y
ZW1vdmUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfZnVsbF91cGRhdGUoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAg
aWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNzE1LDExICs2ODUsOSBAQCBkZWYg
dGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZv
KSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMi
LAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5
MyIpCiBkZWYgdGVzdF9mdWxsX29ycGhhbigpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEZBSUwKICAgICBbc3Vic3ViIHRlc3RdCkBAIC03NDgsMTEgKzcxNiw5IEBAIGRlZiB0ZXN0
X2Z1bGxfb3JwaGFuKCk6CiAgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVz
dF9pZCkuY2hpbGRyZW4pID09IDEKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRp
dGlvbnMoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0g
Im1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtODA5LDExICs3NzUsOSBAQCBkZWYgdGVzdF91cGRh
dGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICAgICAgImV4cGVjdGVk
IiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3NraXBfMCgpOgogICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwK
LSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRt
XQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04MjksMTAgKzc5Myw4
IEBAIGRlZiB0ZXN0X3NraXBfMCgpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X25ld19zdWJ0
ZXN0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04NTQsMTAgKzgxNiw4IEBAIGRlZiB0ZXN0X25l
d19zdWJ0ZXN0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5j
aGlsZHJlblsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1d
CiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTg5MywxMCArODUzLDgg
QEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICAgICAgImV4cGVjdGVkIiwgeyJk
ZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRp
cGxlXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTkzNywxMCArODk1LDggQEAgZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMykgPT0g
IkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTk3Nywx
MCArOTMzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKICAgICAgICAgImV4cGVj
dGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzMoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3Rl
ZDoKICAgICAgIGlmIGRlYnVnOiBGQUlMCkBAIC0xMDE5LDEwICs5NzMsOCBAQCBkZWYgdGVzdF91
cGRhdGVfbXVsdGlwbGVfMygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAi
VElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAot
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBkZWJ1
ZzogVElNRU9VVApAQCAtMTA2MSw4ICsxMDEzLDYgQEAgZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9l
eGlzdGluZygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiTk9UUlVOIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9uZXdfdGVzdCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTEwODUsMTAgKzEwMzUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9f
MSkgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExMDcsMTAgKzEwNTUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfZHVwbGljYXRlKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZv
XzEpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTI5LDEw
ICsxMDc1LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0ZW50KCk6CiAgICAg
ICAgICJkaXNhYmxlZCIsIHJ1bl9pbmZvXzEpID09ICJTb21lIG1lc3NhZ2UiCiAKIAotQHB5dGVz
dC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICBy
ZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3N0
YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExNjUsMTAgKzExMDksOCBAQCBk
ZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmlsaXR5KCk6CiAgICAg
ICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6CiAgICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTIxNywxMCArMTE1OSw4IEBAIGRlZiB0
ZXN0X3VwZGF0ZV9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJF
UlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiByZWxlYXNlX29y
X2JldGE6IEVSUk9SCkBAIC0xMjYwLDExICsxMjAwLDI5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9mdWxs
X3Vua25vd24oKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkVSUk9SIgog
CiAKK2RlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd25fbWlzc2luZygpOgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KKyAgW3N1YnRlc3RfZGVsZXRlZF0KKyAgICBleHBlY3RlZDoKKyAgICAgIGlmIHJlbGVh
c2Vfb3JfYmV0YTogRVJST1IKKyAgICAgIEZBSUwKKyIiIildCisKKyAgICBsb2dfMCA9IHN1aXRl
X2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0sCisgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAicmVsZWFzZV9vcl9i
ZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGZ1bGxf
dXBkYXRlPVRydWUpCisgICAgYXNzZXJ0IGxlbih1cGRhdGVkKSA9PSAwCisKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1
bHQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAg
ICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBGQUlMCkBAIC0xMjk0LDEwICsxMjUy
LDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5o
dG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VUCkBAIC0xMzI2LDEw
ICsxMjgyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gIm1hYyI6IFRJ
TUVPVVQKQEAgLTEzNTgsMTAgKzEzMTIsOCBAQCBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6
CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xMzgyLDEwICsx
MzM0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6CiAgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czogMgogIiIiKV0KQEAg
LTE0MDYsMTAgKzEzNTYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEoKToK
ICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1h
c3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0
ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3Nl
cnRzOiAyCiAiIiIpXQpAQCAtMTQyNiwxMCArMTM3NCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3Nl
cnRpb25fY291bnRfMigpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRp
b25fY291bnRfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgbWF4
LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDYwLDEwICsxNDA2LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6CiAgICAgYXNzZXJ0IG5ld19t
YW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIiCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBk
YXRlX2Fzc2VydGlvbl9jb3VudF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dIiIiKV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAgICgiYXNzZXJ0aW9uX2Nv
dW50IiwgeyJ0ZXN0IjogdGVzdF9pZCwKQEAgLTE0OTEsMTEgKzE0MzUsOSBAQCBkZWYgdGVzdF91
cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90
ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNh
bl8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lk
XSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIs
IFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibHNhbl9s
ZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSkKQEAgLTE1MDgsMTEgKzE0NTAs
OSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
IGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2co
WygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNTI4LDEzICsxNDY4LDEx
IEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzIoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9fX2Rpcl9fIl0sIE5v
bmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9f
X2Rpcl9fIl0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpLAotICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICAgICAgICAg
ICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXSwK
QEAgLTE1NTAsMTEgKzE0ODgsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKICAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJf
aWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9f
IiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2Fu
X2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSldLApAQCAtMTU3MiwxMSArMTUw
OCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzMoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0
XzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIi
Ilt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtMTU5
NCwxMSArMTUyOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgogICAgIGFzc2Vy
dCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25l
LCBiIiIpXQogCiAgICAgbG9nID0geyJydW5faW5mbyI6IGRlZmF1bHRfcnVuX2luZm8uY29weSgp
LAogICAgICAgICAgICAicmVzdWx0cyI6IFtdLApAQCAtMTYxMSwxMSArMTU0Myw5IEBAIGRlZiB0
ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgogICAgIGFzc2VydCB1cGRhdGVkWzBdWzFdLmdldCgi
bHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzAoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIild
CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5v
bmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJz
Y29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicHJvY2VzcyI6ICJkZWZhdWx0IiwKQEAgLTE2MzAsMTEgKzE1NjAsOSBAQCBkZWYgdGVz
dF91cGRhdGVfbGVha190b3RhbF8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxl
YWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0OjUxMjAwJ10KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0
YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190
b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjQ2LDExICsxNTc0LDkg
QEAgZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgogICAgIGFzc2VydCBub3QgdXBkYXRl
ZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgv
dG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAg
KCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTEw
IiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3Bl
IjogInBhdGgvdG8vIiwKQEAgLTE2NjMsMTEgKzE1ODksOSBAQCBsZWFrLXRvdGFsOiAxMTAiIiIp
XQogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzMoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9u
ZSwgYiIiIgogbGVhay10b3RhbDogMTAwIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
Im1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2ODMsMTEgKzE2MDcs
OSBAQCBsZWFrLXRvdGFsOiAxMDAiIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJs
ZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxf
NCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0s
IE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAgICAgbG9nXzAgPSBz
dWl0ZV9sb2coWwpAQCAtMTcxNiw4ICsxNjM4LDYgQEAgY2xhc3MgVXBkYXRlUnVubmVyKFN0ZXBS
dW5uZXIpOgogICAgIHN0ZXBzID0gW1Rlc3RTdGVwXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ1cGRhdGUu
c3RhdGUgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcGlja2xlKCk6CiAg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJleHBlY3RlZF90ZXN0
IikKICAgICBhcmdzID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0
dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKaW5kZXggOWJiM2Ux
ZmQzNGUzN2M0NDMwZjc1MmI4N2U0YmI0ZTNiZmE3Zjk1OS4uZGJjY2Q5MGUzMzk1ODBhOGQ1ZmEx
MDA1YmUwNDM0MDk1YzQ2ODI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
d3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CkBAIC0x
LDM1ICsxLDM0IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBC
eXRlc0lPCiBmcm9tIG1vY2sgaW1wb3J0IE1vY2sKIAogZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFu
aWZlc3QgYXMgd3B0bWFuaWZlc3QKLWZyb20gbWFuaWZlc3QuaXRlbSBpbXBvcnQgVGVzdGhhcm5l
c3NUZXN0Citmcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNzVGVzdCwgUmVmVGVz
dAorZnJvbSBtYW5pZmVzdC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aAogZnJvbSAuLiBpbXBvcnQg
bWFuaWZlc3RleHBlY3RlZCwgd3B0dGVzdAogCi1kaXJfaW5pXzAgPSAiIiJcCitkaXJfaW5pXzAg
PSBiIiIiXAogcHJlZnM6IFthOmJdCiAiIiIKIAotZGlyX2luaV8xID0gIiIiXAorZGlyX2luaV8x
ID0gYiIiIlwKIHByZWZzOiBbQFJlc2V0LCBiOmNdCiBtYXgtYXNzZXJ0czogMgogbWluLWFzc2Vy
dHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKLWRpcl9pbmlfMiA9ICIiIlwKK2Rpcl9pbmlfMiA9
IGIiIiJcCiBsc2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0XzAgPSAiIiJcCit0
ZXN0XzAgPSBiIiIiXAogWzAuaHRtbF0KICAgcHJlZnM6IFtjOmRdCiAgIG1heC1hc3NlcnRzOiAz
CiAgIHRhZ3M6IFthLCBAUmVzZXRdCiAiIiIKIAotdGVzdF8xID0gIiIiXAordGVzdF8xID0gYiIi
IlwKIFsxLmh0bWxdCiAgIHByZWZzOgogICAgIGlmIG9zID09ICd3aW4nOiBbYTpiLCBjOmRdCkBA
IC0zNywxMiArMzYsMTIgQEAgdGVzdF8xID0gIiIiXAogICAgIGlmIG9zID09ICd3aW4nOiBGQUlM
CiAiIiIKIAotdGVzdF8yID0gIiIiXAordGVzdF8yID0gYiIiIlwKIFsyLmh0bWxdCiAgIGxzYW4t
bWF4LXN0YWNrLWRlcHRoOiA0MgogIiIiCiAKLXRlc3RfMyA9ICIiIlwKK3Rlc3RfMyA9IGIiIiJc
CiBbMy5odG1sXQogICBbc3VidGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXQpAQCAt
NTQsMzIgKzUzLDMyIEBAIHRlc3RfMyA9ICIiIlwKICAgICBleHBlY3RlZDogRkFJTAogIiIiCiAK
LXRlc3RfNCA9ICIiIlwKK3Rlc3RfNCA9IGIiIiJcCiBbNC5odG1sXQogICBleHBlY3RlZDogRkFJ
TAogIiIiCiAKLXRlc3RfNSA9ICIiIlwKK3Rlc3RfNSA9IGIiIiJcCiBbNS5odG1sXQogIiIiCiAK
LXRlc3RfNiA9ICIiIlwKK3Rlc3RfNiA9IGIiIiJcCiBbNi5odG1sXQogICBleHBlY3RlZDogW09L
LCBGQUlMXQogIiIiCiAKLXRlc3RfNyA9ICIiIlwKK3Rlc3RfNyA9IGIiIiJcCiBbNy5odG1sXQog
ICBibGlua19leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOiB5ZXAKICIiIgogCi10ZXN0X2Z1enp5
ID0gIiIiXAordGVzdF9mdXp6eSA9IGIiIiJcCiBbZnV6enkuaHRtbF0KICAgZnV6enk6IGZ1enp5
LXJlZi5odG1sOjE7MjAwCiAiIiIKIAogCi10ZXN0aGFybmVzc190ZXN0ID0gIiIiPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgordGVzdGhhcm5lc3NfdGVz
dCA9IGIiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
IiIiCiAKIApAQCAtMTE3LDggKzExNiw2IEBAIGRlZiBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfbmFt
ZSwKICAgICByZXR1cm4gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3RzLCB0ZXN0LCBpbmhlcml0
X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfaW5o
ZXJpdCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApLCAoInRlc3QiLCAiYyIsIDEwKV0KICAgICBpbmhlcml0X21ldGFkYXRhID0gWwpAQCAtMTM2
LDggKzEzMyw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKICAgICBhc3NlcnQgdGVz
dF9vYmoudGFncyA9PSB7ImEiLCAiZGlyOmEifQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0
IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfY29uZGl0aW9uYWwoKToKICAgICBpdGVtcyA9
IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAx
MCldCiAKQEAgLTE0Nyw4ICsxNDIsNiBAQCBkZWYgdGVzdF9jb25kaXRpb25hbCgpOgogICAgIGFz
c2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRl
cy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApXQogCkBAIC0xNzIsOCArMTY1LDYgQEAgZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5sc2FuX21heF9zdGFja19kZXB0aCA9PSA0Mgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
c3VidGVzdHMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF8zLCAiYS8z
Lmh0bWwiLCAzLCAoInRlc3QiLCAiYSIsIDQpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0ZWQoInN1YnRlc3QxIikgPT0gIlBBU1MiCkBAIC0xODQsNTcgKzE3NSw1MCBA
QCBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1p
dHRlbnQoInN1YnRlc3QzIikgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25m
dXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWwoKToKICAgICB0ZXN0X29iaiA9
IG1ha2VfdGVzdF9vYmplY3QodGVzdF80LCAiYS80Lmh0bWwiLCA0LCAoInRlc3QiLCAiYSIsIDUp
LCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiRkFJTCIK
ICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0gW10KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X25vX2V4cGVj
dGVkKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNSwgImEvNS5odG1s
IiwgNSwgKCJ0ZXN0IiwgImEiLCA2KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRl
bnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMi
KQogZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rl
c3Rfb2JqZWN0KHRlc3RfNiwgImEvNi5odG1sIiwgNiwgKCJ0ZXN0IiwgImEiLCA3KSwgTm9uZSwg
RmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2Vy
dCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbIkZBSUwiXQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfZXhwZWN0X2FueV9z
dWJ0ZXN0X3N0YXR1cygpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0Xzcs
ICJhLzcuaHRtbCIsIDcsICgidGVzdCIsICJhIiwgOCksIE5vbmUsIEZhbHNlKQogICAgIGFzc2Vy
dCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0
X2FueV9zdWJ0ZXN0X3N0YXR1cygpIGlzIFRydWUKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4
dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2Z1enp5KCk6Ci0gICAgbWFu
aWZlc3RfZGF0YSA9IHsKLSAgICAgICAgIml0ZW1zIjogeyJyZWZ0ZXN0IjogeyJhL2Z1enp5Lmh0
bWwiOiBbWyJhL2Z1enp5Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImZ1enp5IjogW1tbIi9hL2Z1
enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwg
MTVdXV1dfV1dfX0sCi0gICAgICAgICJwYXRocyI6IHsiYS9mdXp6eS5odG1sIjogWyIwIio0MCwg
InJlZnRlc3QiXX0sCi0gICAgICAgICJ2ZXJzaW9uIjogNywKLSAgICAgICAgInVybF9iYXNlIjog
Ii8ifQotICAgIG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QuZnJvbV9qc29uKCIuIiwg
bWFuaWZlc3RfZGF0YSkKKyAgICBpdGVtID0gUmVmVGVzdCgiLiIsICJhL2Z1enp5Lmh0bWwiLCAi
LyIsICJhL2Z1enp5Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9W1siL2Ev
ZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCisgICAgICAgICAgICAgICAgICAgZnV6enk9W1tbIi9h
L2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwgMTVdXV1dKQorICAgIHMgPSBNb2NrKHJlbF9wYXRo
PSJhL2Z1enp5Lmh0bWwiLCByZWxfcGF0aF9wYXJ0cz0oImEiLCAiZnV6enkuaHRtbCIpLCBoYXNo
PSIwIio0MCkKKyAgICBzLm1hbmlmZXN0X2l0ZW1zID0gTW9jayhyZXR1cm5fdmFsdWU9KGl0ZW0u
aXRlbV90eXBlLCBbaXRlbV0pKQorCisKKyAgICBtYW5pZmVzdCA9IHdwdG1hbmlmZXN0Lk1hbmlm
ZXN0KCkKKworICAgIGFzc2VydCBtYW5pZmVzdC51cGRhdGUoWyhzLCBUcnVlKV0pIGlzIFRydWUK
KwogICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxlKEJ5
dGVzSU8odGVzdF9mdXp6eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0ZXhwZWN0ZWQuZGF0YV9jbHNf
Z2V0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIpCiAKLSAgICB0ZXN0ID0gbWFu
aWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQorICAgIHRlc3QgPSBuZXh0KG1h
bmlmZXN0Lml0ZXJwYXRoKHRvX29zX3BhdGgoImEvZnV6enkuaHRtbCIpKSkKICAgICB0ZXN0X29i
aiA9IHdwdHRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdCwgdGVzdCwgW10sIHRlc3RfbWV0YWRh
dGEuZ2V0X3Rlc3QodGVzdC5pZCkpCiAKICAgICBhc3NlcnQgdGVzdF9vYmouZnV6enkgPT0geygn
L2EvZnV6enkuaHRtbCcsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PScpOiBbWzIsIDNdLCBbMTAs
IDE1XV19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCAyNjI2MTgzZmM4MGRiYzc1ZDNkMjg1
ZGU3OWE3ZDM4NmY1M2NlNmUzLi43OGNkYTljMmQ2NTVmNDJkNjgxMTNmNzkxMDdlMjRhZTQxN2Fm
ZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcgQEAgZGVmIHJlbW92
ZV9sb2dnaW5nX2FyZ3MoYXJncyk6CiAKICAgICA6cGFyYW0gYXJnczogRGljdGlvbmFyeSBvZiBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogICAgICIiIgotICAgIGZvciBuYW1lIGluIGFyZ3Mua2V5
cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlzKCkpOgogICAgICAgICBpZiBuYW1l
LnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFyZ3MucG9wKG5hbWUpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N0YXRlLnB5CmluZGV4IDY0ZGJmMTE4MDYwNGNkOGRmN2E0NjhlMDM2NDQ3Zjk1YjgwMzcxYjAu
LmY4YTgzNTI1Y2JkNDcwNmJkZmJjOTlhNTE4ZDJiYWMxMjNkMzRlOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0
ZS5weQpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBCYXNlU3RhdGUob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBydgogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gZXhpc3Rpbmcgc3RhdGUg
Zm91bmQiKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCBsb2dnZXIpCisgICAg
ICAgIHJldHVybiBzdXBlcihCYXNlU3RhdGUsIGNscykuX19uZXdfXyhjbHMpCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyKToKICAgICAgICAgIiIiT2JqZWN0IGNvbnRhaW5pbmcgc3Rh
dGUgdmFyaWFibGVzIGNyZWF0ZWQgd2hlbiBydW5uaW5nIFN0ZXBzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5Cmlu
ZGV4IDBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYuLjBhNDFmNzA2ZWJj
Mzc2MDcyOWQ5YmE1NTMwNzZmZTBkN2UwYjQwYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKQEAgLTEwLDM3
ICsxMCw2IEBAIGZyb20gLnRyZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0gb3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQogCi1ic2RfbGljZW5zZSA9ICIiIlczQyAz
LWNsYXVzZSBCU0QgTGljZW5zZQotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIGNvcHly
aWdodCBub3RpY2UsIHRoaXMKLSAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLUlTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi1J
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQotQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIiIgotCiAKIGRlZiBj
b3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1ZGVzPU5vbmUpOgog
ICAgICIiIkNvcHkgdGhlIHdvcmtpbmcgY29weSBvZiBhIFRyZWUgdG8gYSBkZXN0aW5hdGlvbiBk
aXJlY3RvcnkuCkBAIC04NCwxNiArNTMsNiBAQCBkZWYgY29weV93cHRfdHJlZSh0cmVlLCBkZXN0
LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25lKToKICAgICAgICAgZGVzdF9wYXRoID0gb3Mu
cGF0aC5qb2luKGRlc3QsIGRlc3RpbmF0aW9uLCBvcy5wYXRoLnNwbGl0KHNvdXJjZSlbMV0pCiAg
ICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQogCi0gICAgYWRkX2xp
Y2Vuc2UoZGVzdCkKLQotCi1kZWYgYWRkX2xpY2Vuc2UoZGVzdCk6Ci0gICAgIiIiV3JpdGUgdGhl
IGJzZCBsaWNlbnNlIHN0cmluZyB0byBhIExJQ0VOU0UgZmlsZS4KLQotICAgIDpwYXJhbSBkZXN0
OiBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIExJQ0VOU0UgZmlsZS4iIiIKLSAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICJMSUNFTlNFIiksICJ3IikgYXMgZjoKLSAgICAg
ICAgZi53cml0ZShic2RfbGljZW5zZSkKLQogCiBjbGFzcyBVcGRhdGVDaGVja291dChTdGVwKToK
ICAgICAiIiJQdWxsIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBpbnRvIHRoZSBsb2NhbCBzeW5jIHRy
ZWUuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3RyZWUucHkKaW5kZXggOTAwNmRmNjcxOTMzMmFlNTkyZWUzODYxNDg1ZDgy
YzIxMjQyM2I0OC4uZjM2Mjc3MGZmMTZkMzBlNDQ5ZGU4NTNmNjg3NDY3Mjk3YjBlZDA3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvdHJlZS5weQpAQCAtMyw2ICszLDggQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCiBmcm9t
IC4uIGltcG9ydCB2Y3MKIGZyb20gLi52Y3MgaW1wb3J0IGdpdCwgaGcKIApAQCAtMTYsNyArMTgs
NyBAQCBkZWYgZ2V0X3VuaXF1ZV9uYW1lKGV4aXN0aW5nLCBpbml0aWFsKToKICAgICA6cGFyYW0g
aW5pdGlhbDogTmFtZSwgb3IgbmFtZSBwcmVmaXgsIHRvIHVzZSIiIgogICAgIGlmIGluaXRpYWwg
bm90IGluIGV4aXN0aW5nOgogICAgICAgICByZXR1cm4gaW5pdGlhbAotICAgIGZvciBpIGluIHhy
YW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGV4aXN0aW5n
KSArIDEpOgogICAgICAgICB0ZXN0ID0gIiVzXyVzIiAlIChpbml0aWFsLCBpICsgMSkKICAgICAg
ICAgaWYgdGVzdCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICByZXR1cm4gdGVzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQppbmRleCA5NjMwMmVlMjY3ZTkwNWFhOGE0OGFmMTJiNjU5NzhlMDI1ZWJk
NDkyLi44MGU1MDlkZDM4M2IzOGVmNGEzMzdlZjEzMDc1ZjU4ODI2Y2Y4MTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3VwZGF0ZS5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCitmcm9t
IHNpeCBpbXBvcnQgaXRlcnZhbHVlcworCiBmcm9tIC5tZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFV
cGRhdGVSdW5uZXIKIGZyb20gLnN5bmMgaW1wb3J0IFN5bmNGcm9tVXBzdHJlYW1SdW5uZXIKIGZy
b20gLnRyZWUgaW1wb3J0IEdpdFRyZWUsIEhnVHJlZSwgTm9WQ1NUcmVlCkBAIC0xMDksNyArMTEx
LDcgQEAgY2xhc3MgUmVtb3ZlT2Jzb2xldGUoU3RlcCk6CiAgICAgICAgIHN0YXRlLnRlc3RzX3Bh
dGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KICAgICAgICAgc3RhdGUubWV0YWRh
dGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3BhdGgiXQogCi0gICAgICAgIGZv
ciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAgICAgICBmb3IgdXJsX3BhdGhz
IGluIGl0ZXJ2YWx1ZXMocGF0aHMpOgogICAgICAgICAgICAgdGVzdHNfcGF0aCA9IHVybF9wYXRo
c1sidGVzdHNfcGF0aCJdCiAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoID0gdXJsX3BhdGhzWyJt
ZXRhZGF0YV9wYXRoIl0KICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5h
bWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0aCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKaW5kZXggYWIwNmM0
MWFmOThmNWMyYzg4Y2I4OWVlNThiYjdhYTIzNGU5MDI0My4uZmFhZjg2ZmVkNmE2MzhkZGI1MTg0
NDY3YThlMDcwODIzN2E0NjllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMjAsMTAgKzIwLDEyIEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5CiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4cGVjdGVkdHJlZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2lu
c3RydW1lbnRzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvcHJvZHVjdHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3Rkcml2ZXItZXh0cmEuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
ZWJkcml2ZXJfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKaW5k
ZXggMTYyZmZhZTNmYzkzYWVlYjI5YTI1MzVlODI5YWY0NWI5ZTE1YzFmMy4uMThiZTY4MDYwNzRk
YTg2ODVjZDM5Mjg2MTk0NTVlZDI3NWJmZThlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dl
YmRyaXZlcl9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkK
QEAgLTgsNiArOCw4IEBAIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IG1venByb2Nlc3MKIAor
ZnJvbSAucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKKwogCiBfX2FsbF9fID0gWyJTZWxlbml1bVNl
cnZlciIsICJDaHJvbWVEcml2ZXJTZXJ2ZXIiLCAiQ1dUQ2hyb21lRHJpdmVyU2VydmVyIiwKICAg
ICAgICAgICAgIkVkZ2VDaHJvbWl1bURyaXZlclNlcnZlciIsICJPcGVyYURyaXZlclNlcnZlciIs
ICJHZWNrb0RyaXZlclNlcnZlciIsCkBAIC01NSw3ICs1Nyw3IEBAIGNsYXNzIFdlYkRyaXZlclNl
cnZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcm9jID0gbW96cHJvY2Vzcy5Qcm9jZXNzSGFu
ZGxlcigKICAgICAgICAgICAgIHNlbGYuX2NtZCwKICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRM
aW5lPXNlbGYub25fb3V0cHV0LAotICAgICAgICAgICAgZW52PXNlbGYuZW52LAorICAgICAgICAg
ICAgZW52PWNhc3RfZW52KHNlbGYuZW52KSwKICAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNl
KQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBXZWJEcml2ZXI6ICVzIiAl
ICcgJy5qb2luKHNlbGYuX2NtZCkpCkBAIC04MiwxNCArODQsMTMgQEAgY2xhc3MgV2ViRHJpdmVy
U2VydmVyKG9iamVjdCk6CiAKICAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBXZWJEcml2ZXIiKQotICAgICAgICBpZiBz
ZWxmLmlzX2FsaXZlOgorICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBr
aWxsX3Jlc3VsdCA9IHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgICBpZiBmb3JjZSBhbmQg
a2lsbF9yZXN1bHQgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvYy5raWxs
KDkpCiAgICAgICAgICAgICByZXR1cm4ga2lsbF9yZXN1bHQKLSAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2ZSgpCiAKLSAgICBA
cHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNhdHRy
KHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUKIApAQCAt
MTg0LDcgKzE4NSwxMSBAQCBjbGFzcyBHZWNrb0RyaXZlclNlcnZlcihXZWJEcml2ZXJTZXJ2ZXIp
OgogICAgICAgICAgICAgICAgICBob3N0PSIxMjcuMC4wLjEiLCBwb3J0PU5vbmUsIGFyZ3M9Tm9u
ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUlVTVF9C
QUNLVFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52LCBhcmdzPWFyZ3Mp
CisgICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0
dGVfcG9ydAogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxmKToKQEAgLTIwOSw3ICsyMTQsMTEg
QEAgY2xhc3MgU2Vydm9Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKICAgICAgICAgICAg
ICAgICAgcG9ydD1Ob25lLCBhcmdzPU5vbmUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNv
cHkoKQogICAgICAgICBlbnZbIlJVU1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAgICAgICAgV2ViRHJp
dmVyU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0PWhvc3QsIHBvcnQ9
cG9ydCwgZW52PWVudiwgYXJncz1hcmdzKQorICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBob3N0PWhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncykKICAgICAgICAgc2VsZi5i
aW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCiAKICAgICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgpA
QCAtMjY0LDcgKzI3Myw3IEBAIGRlZiB3YWl0X2Zvcl9zZXJ2aWNlKGFkZHIsIHRpbWVvdXQ9NjAp
OgogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGVbMF0gIT0gZXJy
bm8uRUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJF
RlVTRUQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggOTIzYmRhYTU1ODU3ZTc5M2U4
ZDZlOGM1ODcxNjczNjBhZWQ0YWU5NC4uOTYyMjdiYjQ2OTA1ZTE2OGQ2OTFlMzUwOTQ2ZGJmYmE2
ODA5ODI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MK
IGltcG9ydCBzeXMKQEAgLTE2LDkgKzE2LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogCiAKIGRl
ZiB1cmxfb3JfcGF0aChwYXRoKToKLSAgICBpbXBvcnQgdXJscGFyc2UKKyAgICBmcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAKLSAgICBwYXJzZWQgPSB1cmxwYXJz
ZS51cmxwYXJzZShwYXRoKQorICAgIHBhcnNlZCA9IHVybHBhcnNlKHBhdGgpCiAgICAgaWYgbGVu
KHBhcnNlZC5zY2hlbWUpID4gMjoKICAgICAgICAgcmV0dXJuIHBhdGgKICAgICBlbHNlOgpAQCAt
MzcsNyArMzcsNyBAQCBkZWYgcmVxdWlyZV9hcmcoa3dhcmdzLCBuYW1lLCB2YWx1ZV9mdW5jPU5v
bmUpOgogZGVmIGNyZWF0ZV9wYXJzZXIocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgIGZyb20g
bW96bG9nIGltcG9ydCBjb21tYW5kbGluZQogCi0gICAgaW1wb3J0IHByb2R1Y3RzCisgICAgZnJv
bSAuIGltcG9ydCBwcm9kdWN0cwogCiAgICAgaWYgcHJvZHVjdF9jaG9pY2VzIGlzIE5vbmU6CiAg
ICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnLmxvYWQoKQpAQCAtMTM3LDYgKzEzNywxNCBAQCBz
Y2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgbGlzdGluZyB0ZXN0cyB0byBpbmNsdWRlIikK
ICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2tpcC10aW1lb3V0Iiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byB0aW1lIG91dCIpCisgICAg
dGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtaW1wbGVtZW50YXRpb24t
c3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJh
cHBlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
bm90LWltcGxlbWVudGluZyIsICJiYWNrbG9nIiwgImltcGxlbWVudGluZyJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3RzIHRoYXQgaGF2ZSB0
aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24gc3RhdHVzIikKKyAgICAjIFRPRE86IFJlbW92ZSB0aGlz
IHdoZW4gUVVJQyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgdGVzdF9zZWxlY3Rpb25fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1xdWljIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RW5hYmxlIHRlc3RzIHRoYXQgcmVxdWlyZSBRVUlDIHNlcnZlciAoZGVmYXVsdDogZmFsc2UpIikK
KwogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10YWciLCBhY3Rpb249
ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRlIGluIHRoZSBydW4u
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGFiZWxzIHN0
YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVjdG9yaWVzLiIpCkBA
IC0yMTAsMTMgKzIxOCwxNyBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxlIikKICAgICBjb25m
aWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxsb3cgdGhlIHdwdHJ1bm5lciB0byBpbnN0
YWxsIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9Ikluc3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91ciBzeXN0ZW0iKQor
ICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8taW5zdGFsbC1mb250cyIsIGRlc3Q9
Imluc3RhbGxfZm9udHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBpbnN0YWxsIGFkZGl0aW9uYWwgc3lzdGVtIGZvbnRz
IG9uIHlvdXIgc3lzdGVtIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWZvbnQt
ZGlyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImZvbnRfZGlyIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbG9jYWwgZm9udCBpbnN0
YWxsYXRpb24gZGlyZWN0b3J5IiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZpZ19ncm91cC5hZGRf
YXJndW1lbnQoIi0taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZSIsIGRl
ZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWhlYWRsZXNz
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImhlYWRsZXNzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJ1biBicm93c2VyIGluIGhlYWRsZXNzIG1vZGUi
KQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5zdHJ1bWVudC10by1maWxlIiwg
YWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRo
IHRvIHdyaXRlIGluc3RydW1lbnRhdGlvbiBsb2dzIHRvIikKIAogICAgIGJ1aWxkX3R5cGUgPSBw
YXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgYnVpbGRfdHlwZS5hZGRf
YXJndW1lbnQoIi0tZGVidWctYnVpbGQiLCBkZXN0PSJkZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCkBAIC0yNTUsMTIgKzI2NywyMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAg
Z2Vja29fZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZWNrby1zcGVjaWZpYyIp
CiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXByZWZzLXJvb3QiLCBkZXN0PSJwcmVm
c19yb290IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGZvbGRlciBjb250YWluaW5nIGJyb3dzZXIg
cHJlZnMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVsb2FkLWJyb3dzZXIi
LCBkZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IlByZWxvYWQgYSBnZWNrbyBp
bnN0YW5jZSBmb3IgZmFzdGVyIHJlc3RhcnRzIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tbm8tcHJlbG9hZC1icm93c2VyIiwgZGVzdD0icHJlbG9hZF9icm93c2VyIiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0iRG9uJ3QgcHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBmYXN0ZXIgcmVzdGFy
dHMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWUxMHMiLCBkZXN0
PSJnZWNrb19lMTBzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGhvdXQgZWxlY3Ryb2x5
c2lzIHByZWZlcmVuY2VzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5hYmxl
LXdlYnJlbmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJs
ZSB0aGUgV2ViUmVuZGVyIGNvbXBvc2l0b3IgaW4gR2Vja28gKGRlZmF1bHRzIHRvIGRpc2FibGVk
KS4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFibGUtd2VicmVuZGVy
IiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBXZWJSZW5kZXIgY29tcG9z
aXRvciBpbiBHZWNrby4iKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUt
Zmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNzaW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgZmlz
c2lvbiBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAgZ2Vja29fZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5hYmxlX2Zpc3Npb24i
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRGlzYWJsZSBmaXNzaW9uIGluIEdlY2tvLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLXN0YWNrZml4LWRpciIsIGRlc3Q9InN0YWNrZml4X2RpciIsIGFjdGlvbj0ic3RvcmUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBj
b250YWluaW5nIGFzc2VydGlvbiBzdGFjayBmaXhpbmcgc2NyaXB0cyIpCiAgICAgZ2Vja29fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLXNldHByZWYiLCBkZXN0PSJleHRyYV9wcmVmcyIsIGFjdGlvbj0n
YXBwZW5kJywKQEAgLTUzNCw5ICs1NTQsNiBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAg
ICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJdID0gcGF0aAogCiAgICAgaWYga3dhcmdzWydl
eHRyYV9wcmVmcyddOgotICAgICAgICAjIElmIGEgc2luZ2xlIHByZWYgaXMgcGFzc2VkIGluIGFz
IGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAotICAgICAgICBpZiB0eXBlKGt3YXJnc1snZXh0cmFf
cHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICBrd2FyZ3NbJ2V4dHJhX3By
ZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcyddXQogICAgICAgICBtaXNzaW5nID0gYW55KCc9
JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBpbiBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10pCiAg
ICAgICAgIGlmIG1pc3Npbmc6CiAgICAgICAgICAgICBwcmludCgiUHJlZmVyZW5jZXMgdmlhIC0t
c2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5cy5zdGRlcnIpCkBA
IC01NTMsNiArNTcwLDEwIEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgaWYga3dhcmdz
WyJlbmFibGVfd2VicmVuZGVyIl0gaXMgTm9uZToKICAgICAgICAga3dhcmdzWyJlbmFibGVfd2Vi
cmVuZGVyIl0gPSBGYWxzZQogCisgICAgaWYga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXSBpcyBO
b25lOgorICAgICAgICAjIERlZmF1bHQgdG8gcHJlbG9hZGluZyBhIGdlY2tvIGluc3RhbmNlIGlm
IHdlJ3JlIG9ubHkgcnVubmluZyBhIHNpbmdsZSBwcm9jZXNzCisgICAgICAgIGt3YXJnc1sicHJl
bG9hZF9icm93c2VyIl0gPSBrd2FyZ3NbInByb2Nlc3NlcyJdID09IDEKKwogICAgIHJldHVybiBr
d2FyZ3MKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRsb2dnaW5nLnB5CmluZGV4IDY5Y2VlNzQ0ODc5ZWI2NzgwY2I5OWVjOTMxMjM5
MjJlMTY2ZDllMTYuLjQ0NGQxZDk2MmQyNTg3MzEwOTk3N2I5MzdkOTZjODZjYjI5M2NkOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRsb2dnaW5nLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBzZXR1cChhcmdzLCBkZWZhdWx0cywg
Zm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0ZXJfZGVmYXVsdHMpCiAgICAg
c2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKLSAgICBmb3IgbmFtZSBpbiBhcmdzLmtleXMoKToKKyAg
ICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3
aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CmluZGV4IDQ1ZTIxNDdmYzRjYTUwOWE5ZGUyOGZj
ZGNiYjcwN2Q4MjM0NTk3MTEuLmM1MzlkNDM2N2U5NGE1ZTUyNWM1ZDhkOGU5ZWRjMzExNmU4YWZm
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CkBAIC0xLDQg
KzEsNSBAQAogaW1wb3J0IGFiYworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMs
IGl0ZXJ2YWx1ZXMKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yCiBmcm9tIC4ucGFy
c2VyIGltcG9ydCBwYXJzZQpAQCAtMTg2LDIxICsxODcsMjEgQEAgY2xhc3MgTWFuaWZlc3RJdGVt
KG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9CiAgICAg
ICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9yIG5hbWUs
IHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgbmFtZSwg
dmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
bm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZhbHVlCiAgICAgICAg
IHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0g
aW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVy
aXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRl
ZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0
ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcnZhbHVlcyhzZWxmKToKLSAg
ICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWll
bGQgaXRlbQogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBjaGlsZCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKaW5kZXggYWFjZDc4NTcwNzJm
NDIwYTIwOWFlZWZmNTU5ZWMyYWUyOTQxNzBiYS4uM2IxMWU4MzAxMmFiNTBmZTBlYTI0MGFlMDU2
ZDAyYzg5NjhiNmE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5k
cy9jb25kaXRpb25hbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcGVyYXRvcgorZnJvbSBz
aXggaW1wb3J0IGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCB0ZXh0X3R5cGUKIAog
ZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2Rl
LCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2Rl
LCBWYXJpYWJsZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC00Miw5ICs0Myw3
IEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYu
Y29uZGl0aW9uX2Z1bmMocnVuX2luZm8pCiAKICAgICBkZWYgc2V0X3ZhbHVlKHNlbGYsIHZhbHVl
KToKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChzdHIsIHVuaWNvZGUpOgotICAgICAg
ICAgICAgdmFsdWUgPSB1bmljb2RlKHZhbHVlKQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUK
KyAgICAgICAgc2VsZi52YWx1ZSA9IGVuc3VyZV90ZXh0KHZhbHVlKQogCiAgICAgZGVmIHZhbHVl
X2FzKHNlbGYsIHR5cGVfZnVuYyk6CiAgICAgICAgICIiIkdldCB2YWx1ZSBhbmQgY29udmVydCB0
byBhIGdpdmVuIHR5cGUuCkBAIC0zMDEsOSArMzAwLDkgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9i
amVjdCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAg
dmFsdWVfbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgot
ICAgICAgICAgICAgICAgIHZhbHVlX25vZGUuYXBwZW5kKFZhbHVlTm9kZSh1bmljb2RlKGl0ZW0p
KSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodGV4dF90eXBl
KGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5v
ZGUodW5pY29kZSh2YWx1ZSkpCisgICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFsdWVOb2RlKHRl
eHRfdHlwZSh2YWx1ZSkpCiAgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgQ29uZGl0aW9uYWxOb2RlKToKICAg
ICAgICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxOb2RlKCkKQEAgLTM2
OSwxOSArMzY4LDIzIEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgogICAgIGRlZiBfZmxh
dHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3Igbm9kZSBpbiBbc2VsZiwg
c2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2Rl
Ll9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoKICAgICAgICAgICAg
ICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBp
dGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVy
aXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAg
ICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVya2V5cygpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWllbGQgaXRl
bQogCisgICAgZGVmIGl0ZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW0gaW4g
c2VsZi5fZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGl0ZW0sIHNlbGYuX2RhdGFbaXRlbV0KKwog
ICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIGtleSBu
b3QgaW4gc2VsZi5fZGF0YToKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQppbmRleCA3N2IxN2E1MDMyNWM3NzA2NzM5MWFiNjYzOWQwZTAyOWUzMzk1MDQ3Li4wZjgy
ZDcwMDZiNjllZDBlNDg1MjkwMzg3YjY1NzY4Yjg1OWE4NzAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
bm9kZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB4cmFuZ2UKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBjbGFzcyBOb2RlVmlzaXRvcihvYmplY3QpOgog
ICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRGF0YU5v
ZGUoTm9kZSk6CiAgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLmNoaWxkcmVuKQogICAgICAg
ICAgICAgd2hpbGUgaW5kZXggPiAwIGFuZCBpc2luc3RhbmNlKHNlbGYuY2hpbGRyZW5baW5kZXgg
LSAxXSwgRGF0YU5vZGUpOgogICAgICAgICAgICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgICAg
IGZvciBpIGluIHhyYW5nZShpbmRleCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpbmRl
eCk6CiAgICAgICAgICAgICAgICAgaWYgb3RoZXIuZGF0YSA9PSBzZWxmLmNoaWxkcmVuW2ldLmRh
dGE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkR1cGxpY2F0ZSBrZXkg
JXMiICUgc2VsZi5jaGlsZHJlbltpXS5kYXRhKQogICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5p
bnNlcnQoaW5kZXgsIG90aGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKaW5kZXggNjJj
NWY3ZDNhNDY3OWNhOWFlYTk2MWFmZWNjNjNmMjVlN2E1NDk2Mi4uOTExZWZhYzgwZjI3ZWU5MmRm
N2ZiZWE1NzdjNDE0NjkxODk5Nzc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBA
IC0xNCw4ICsxNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFs
cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0
ZXh0X3R5cGUsIEJ5dGVzSU8sIHVuaWNocgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAK
IGZyb20gLm5vZGUgaW1wb3J0IChOb2RlLCBBdG9tTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUs
IEJpbmFyeU9wZXJhdG9yTm9kZSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25hbE5vZGUs
IERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICBzZWxmLnN0YXRlID0gc2Vs
Zi5saW5lX3N0YXJ0X3N0YXRlCiAgICAgICAgIHNlbGYubmV4dF9zdGF0ZSA9IHNlbGYuZGF0YV9s
aW5lX3N0YXRlCiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSAwCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSAiIgogCiAgICAgZGVmIHRva2VuaXplKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgIHNl
bGYucmVzZXQoKQpAQCAtMTM2LDkgKzEzNywxMCBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5hcHBlbmQoc2VsZi5pbmRleCkKICAgICAg
ICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9zdGFydCwgTm9uZSkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9sZXZlbHNbLTFd
OgotICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQotICAgICAgICAgICAg
ICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCisgICAgICAgICAgICBpZiBz
ZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICB3aGls
ZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbmRlbnRfbGV2ZWxzLnBvcCgpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkICh0
b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRl
cnJpYmxlOyBpZiB3ZSB3ZXJlIHBhcnNpbmcgYW4gZXhwcmVzc2lvbgogICAgICAgICAgICAgICAg
ICMgdGhlbiB0aGUgbmV4dF9zdGF0ZSB3aWxsIGJlIGV4cHJfb3JfdmFsdWUgYnV0IHdoZW4gd2Ug
ZGVpbmRlbnQKICAgICAgICAgICAgICAgICAjIGl0IG11c3QgYWx3YXlzIGJlIGEgaGVhZGluZyBv
ciBrZXkgbmV4dCBzbyB3ZSBnbyBiYWNrIHRvIGRhdGFfbGluZV9zdGF0ZQpAQCAtMzAzLDcgKzMw
NSw4IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogCiAgICAgZGVmIHZhbHVlX3N0YXRlKHNl
bGYpOgogICAgICAgICBzZWxmLnNraXBfd2hpdGVzcGFjZSgpCi0gICAgICAgIGlmIHNlbGYuY2hh
cigpIGluICgiJyIsICciJyk6CisgICAgICAgIGMgPSBzZWxmLmNoYXIoKQorICAgICAgICBpZiBj
IGluICgiJyIsICciJyk6CiAgICAgICAgICAgICBxdW90ZV9jaGFyID0gc2VsZi5jaGFyKCkKICAg
ICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMu
c3RyaW5nLCBzZWxmLmNvbnN1bWVfc3RyaW5nKHF1b3RlX2NoYXIpKQpAQCAtMzExLDEwICszMTQs
MTIgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0
ZSA9IHNlbGYuY29tbWVudF9zdGF0ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBzZWxmLnN0YXRlID0gc2VsZi5saW5lX2VuZF9zdGF0ZQotICAgICAgICBlbGlmIHNlbGYuY2hh
cigpID09ICJAIjoKKyAgICAgICAgZWxpZiBjID09ICJAIjoKICAgICAgICAgICAgIHNlbGYuY29u
c3VtZSgpCiAgICAgICAgICAgICBmb3IgXywgdmFsdWUgaW4gc2VsZi52YWx1ZV9pbm5lcl9zdGF0
ZSgpOgogICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuX3R5cGVzLmF0b20sIHZhbHVlCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5saXN0X3N0
YXJ0X3N0YXRlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi52
YWx1ZV9pbm5lcl9zdGF0ZQogCkBAIC00OTQsNyArNDk5LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9i
amVjdCk6CiAKICAgICBkZWYgZGVjb2RlX2VzY2FwZShzZWxmLCBsZW5ndGgpOgogICAgICAgICB2
YWx1ZSA9IDAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbmd0aCk6CisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbmd0aCk6CiAgICAgICAgICAgICBjID0gc2VsZi5jaGFyKCkKICAgICAgICAg
ICAgIHZhbHVlICo9IDE2CiAgICAgICAgICAgICB2YWx1ZSArPSBzZWxmLmVzY2FwZV92YWx1ZShj
KQpAQCAtNTk2LDYgKzYwMSw5IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAg
c2VsZi5leHByZXNzaW9uX3ZhbHVlcygpCiAgICAgICAgICAgICBpZiBzZWxmLnRva2VuWzBdID09
IHRva2VuX3R5cGVzLnN0cmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlKCkKKyAgICAg
ICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5saXN0X3N0YXJ0OgorICAg
ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCisgICAgICAgICAgICAgICAgc2VsZi5saXN0X3Zh
bHVlKCkKICAgICAgICAgICAgIHNlbGYuZW9mX29yX2VuZF9ncm91cCgpCiAgICAgICAgIGVsaWYg
c2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5hdG9tOgogICAgICAgICAgICAgc2VsZi5hdG9t
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKaW5kZXggM2IyOWM5OWVkZTdj
YWM1OGVkZTVkNDgyMzc2OTZlMzBjOWQ4NTZjNy4uZWM4ZDgwZWQ2ZjcxNTFiMjkxM2Y5NzVkZjBm
YzM4N2ExMjdkZTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Nlcmlh
bGl6ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKQEAg
LTEsNyArMSwxMCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCitm
cm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQKKwogZnJvbSAubm9kZSBpbXBvcnQgTm9kZVZpc2l0
b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlCiBmcm9tIC5wYXJz
ZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMgPSB7djoiQCVzIiAlIGsg
Zm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CithdG9tX25hbWVzID0ge3Y6ICJAJXMiICUgayBm
b3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAogbmFtZWRfZXNjYXBlcyA9IHsiXGEiLCAiXGIi
LCAiXGYiLCAiXG4iLCAiXHIiLCAiXHQiLCAiXHYifQogCkBAIC0xMCw3ICsxMyw3IEBAIGRlZiBl
c2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgIHJ2ID0gIiIKICAgICBmb3IgYyBpbiBzdHJp
bmc6CiAgICAgICAgIGlmIGMgaW4gbmFtZWRfZXNjYXBlczoKLSAgICAgICAgICAgIHJ2ICs9IGMu
ZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICBydiArPSBjLmVuY29kZSgidW5p
Y29kZV9lc2NhcGUiKS5kZWNvZGUoKQogICAgICAgICBlbGlmIGMgPT0gIlxcIjoKICAgICAgICAg
ICAgIHJ2ICs9ICJcXFxcIgogICAgICAgICBlbGlmIGMgPCAnXHgyMCc6CkBAIC0xOSwxMCArMjIs
NyBAQCBkZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICAgICAgICAgIHJ2ICs9ICJc
XCIgKyBjCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiArPSBjCi0gICAgaWYgaXNpbnN0
YW5jZShydiwgdW5pY29kZSk6Ci0gICAgICAgIHJldHVybiBydi5lbmNvZGUoInV0ZjgiKQotICAg
IGVsc2U6Ci0gICAgICAgIHJldHVybiBydgorICAgIHJldHVybiBlbnN1cmVfdGV4dChydikKIAog
CiBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgpAQCAtNzQsMTAgKzc0LDcg
QEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJu
IFsiIi5qb2luKHJ2KV0KIAogICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2VsZiwgbm9kZSk6Ci0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUuZGF0YSwgKHN0ciwgdW5pY29kZSkpOgotICAg
ICAgICAgICAgZGF0YSA9IHVuaWNvZGUobm9kZS5kYXRhKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZGF0YSA9IG5vZGUuZGF0YQorICAgICAgICBkYXRhID0gZW5zdXJlX3RleHQobm9kZS5k
YXRhKQogICAgICAgICBpZiAoIiMiIGluIGRhdGEgb3IKICAgICAgICAgICAgIGRhdGEuc3RhcnRz
d2l0aCgiaWYgIikgb3IKICAgICAgICAgICAgIChpc2luc3RhbmNlKG5vZGUucGFyZW50LCBMaXN0
Tm9kZSkgYW5kCkBAIC0xMDMsNyArMTAwLDcgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5v
ZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdmlzaXRfTnVtYmVyTm9k
ZShzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAg
cmV0dXJuIFtlbnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZpc2l0X1ZhcmlhYmxl
Tm9kZShzZWxmLCBub2RlKToKICAgICAgICAgcnYgPSBlc2NhcGUobm9kZS5kYXRhKQpAQCAtMTM3
LDEwICsxMzQsMTAgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAg
ICAgICAgcmV0dXJuIFsiICIuam9pbihjaGlsZHJlbildCiAKICAgICBkZWYgdmlzaXRfVW5hcnlP
cGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5vZGUuZGF0YSld
CisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogICAgIGRlZiB2aXNp
dF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5v
ZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogCiBk
ZWYgc2VyaWFsaXplKHRyZWUsICphcmdzLCAqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CmluZGV4IGZiYzc1ZWM4Mzkw
ZmEzNGFiN2UzY2FhMzkxYzNlNmU3ODM3YTU1NGQuLmFmNGQ5OTYwMzIyYzdlOGRmY2NiMDc2YTJl
NDY2MTI1NDU3ZDE4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CkBAIC0xLDE5ICsxLDE1IEBACi1pbXBvcnQgcHl0ZXN0Ci1p
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLmJhY2tlbmRzIGltcG9ydCBjb25k
aXRpb25hbAogZnJvbSAuLm5vZGUgaW1wb3J0IEJpbmFyeUV4cHJlc3Npb25Ob2RlLCBCaW5hcnlP
cGVyYXRvck5vZGUsIFZhcmlhYmxlTm9kZSwgTnVtYmVyTm9kZQogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3
cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUZXN0Q29uZGl0
aW9uYWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNlbGYsIGlucHV0X3Rl
eHQpOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShpbnB1dF90ZXh0KQogCiAg
ICAgZGVmIHRlc3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0
YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI1LDE5ICsyMSwxOSBAQCBr
ZXk6IHZhbHVlCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCiAgICAg
ICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJl
bigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hpbGRyZW4pLCAxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAgICAgICAgIHNlY3Rpb24gPSBj
aGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLm5hbWUsICJIZWFk
aW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcg
MSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIs
IHsiYSI6IDF9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSksICJ2YWx1ZV8zIikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIpLCAidmFsdWUiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAx
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3Ro
ZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikKIAogICAgIGRlZiB0
ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIi
CiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MiwxMSArNDgsMTEgQEAga2V5OiB2YWx1
ZQogICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVy
Y2hpbGRyZW4oKSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6ICIxIn0pLCAidmFs
dWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXki
LCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMyIp
CiAKICAgICBkZWYgdGVzdF9nZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAg
ICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhWzFdID09ICJiIjogdmFsdWVfMQogICBpZiBhWzFd
ID09IDI6IHZhbHVlXzIKQEAgLTY1LDExICs2MSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5p
ZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYWIi
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtl
eSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVzdF9nZXRfMyhzZWxm
KToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBh
WzFdID09ICJhYiJbMV06IHZhbHVlXzEKICAgaWYgYVsxXSA9PSAyOiB2YWx1ZV8yCkBAIC03OCwx
MSArNzQsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEp
CiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAi
YWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0
KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0pLCAidmFsdWVfMSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZh
bHVlXzIiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIK
KyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6IHZhbHVlXzEKICAgaWYg
YSA9PSAiYiI6IHZhbHVlXzIKQEAgLTkyLDEwICs4OCwxMCBAQCBrZXk6CiAKICAgICAgICAgbWFu
aWZlc3Quc2V0KCJuZXdfa2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJuZXdfa2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVfbmV3IikKIAogICAg
IGRlZiB0ZXN0X3NldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEg
PSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2YWx1
ZV8yCkBAIC0xMDYsMTEgKzEwMiwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0KCJr
ZXkiLCAidmFsdWVfbmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5n
ZXQoImtleSIpLCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZl
c3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKIAog
ICAgIGRlZiB0ZXN0X3NldF8yKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRh
dGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2
YWx1ZV8yCkBAIC0xMjUsMTEgKzEyMSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0
KCJrZXkiLCAidmFsdWVfbmV3IiwgZXhwcikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
YW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwg
InZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBpXzAoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAx
LjU6IHZhbHVlXzEKICAgdmFsdWVfMgpAQCAtMTM4LDggKzEzNCw4IEBAIGtleV8xOiBvdGhlcl92
YWx1ZQogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNf
a2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5p
dGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggODA1ZTQ3YjM3MWY1YTcz
MDc2NWYzZTVkMWFjNWY2Yzk0ZGMzZTk5Ny4uMjNiZWIyYmVmMjA4YTIxMTA3YjEwODYyMGZkNTRm
MWVjNTY1NGQ4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3RfcGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Bh
cnNlci5weQpAQCAtMTgsOSArMTgsOSBAQCBjbGFzcyBUZXN0RXhwcmVzc2lvbih1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkKIAogICAgIGRl
ZiBtYXRjaChzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25h
bWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9kZVsxXSwgYWN0dWFs
X25vZGUuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGV4cGVjdGVkX25vZGVb
Ml0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxfbm9kZS5kYXRhKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9ub2RlWzJdKSwgbGVuKGFjdHVh
bF9ub2RlLmNoaWxkcmVuKSkKICAgICAgICAgZm9yIGV4cGVjdGVkX2NoaWxkLCBhY3R1YWxfY2hp
bGQgaW4gemlwKGV4cGVjdGVkX25vZGVbMl0sIGFjdHVhbF9ub2RlLmNoaWxkcmVuKToKICAgICAg
ICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGlsZCkKIApAQCAtMTA1
LDYgKzEwNSw0NSBAQCBrZXk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTogQHRydWUiKQogCisg
ICAgZGVmIHRlc3RfbGlzdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoCisgICAg
ICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTogW2FdCisgIFtiXSIiIiwKKyAgICAgICAg
ICAgIFsiRGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZhbHVlTm9kZSIsICJr
ZXkiLAorICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9uZSwKKyAgICAgICAg
ICAgICAgICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAg
ICAgIFtbIkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAgICAgICAgICAgICAg
ICAgWyJWYXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWyJO
dW1iZXJOb2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBbWyJW
YWx1ZU5vZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIs
ICJiIiwgW11dXV1dXV1dKQorCisgICAgZGVmIHRlc3RfbGlzdF9oZWFkaW5nKHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTog
W2FdCitbYl0iIiIsCisgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKKyAgICAgICAgICAg
ICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKKyAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFs
Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJlc3Npb25Ob2RlIiwg
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5vZGUiLCAiPT0iLCBb
XV0sCisgICAgICAgICAgICAgICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngiLCBbXV0sCisgICAg
ICAgICAgICAgICAgICAgICAgIFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisgICAgICAgICAgICAg
ICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwKKyAgICAgICAgICAg
ICAgICAgIF1dXV0sCisgICAgICAgICAgICAgIFsiRGF0YU5vZGUiLCAiYiIsIFtdXV1dKQorCiAg
ICAgZGVmIHRlc3RfaWZfMShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhw
YXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGIia2V5OiBpZiBmb28i
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFs
aXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIu
cHkKaW5kZXggN2ZlN2FjODVjYjhhMTRmMDUxMTNjYmZkNDgzYjhkMDQyYTA3Yjk4OS4uYjI0Nzg1
NTgwMWVhYzY1ODlhZWJkNDU1NWM2ZDllODY1M2UxMmU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC02LDggKzYsNiBAQCBp
bXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBwYXJzZXIsIHNlcmlhbGl6ZXIKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgog
ICAgICAgICBzZWxmLnNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyLk1hbmlmZXN0U2VyaWFsaXplcigp
CkBAIC0xOCwyNiArMTYsMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbnB1dF9zdHIsIGV4cGVjdGVkPU5vbmUpOgog
ICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnB1
dF9zdHIKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5lbmNvZGUoInV0ZjgiKQorICAgICAg
ICAgICAgZXhwZWN0ZWQgPSBpbnB1dF9zdHIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGFjdHVh
bCA9IHNlbGYuc2VyaWFsaXplKGlucHV0X3N0cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
YWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVj
dGVkKQogCiAgICAgZGVmIHRlc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtl
eTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAx
XQogICBvdGhlcl9rZXk6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9y
IGI6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
dmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9yIGI6IG90aGVyX3Zh
bHVlCkBAIC00NSw3ICs0Miw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJl
KCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVh
ZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAxOiBvdGhlcl92YWx1ZQpAQCAtNTMs
NyArNTAsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikK
IAogICAgIGRlZiB0ZXN0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZh
bHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAg
b3RoZXJfa2V5OgogICAgIGlmIGEgPT0gIjEiOiBvdGhlcl92YWx1ZQpAQCAtNjEsNyArNTgsNyBA
QCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRl
ZiB0ZXN0XzUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5
OgogICAgIGlmIGEgPT0gImFiYyJbMV06IG90aGVyX3ZhbHVlCkBAIC02OSw3ICs2Niw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAg
ICAgaWYgYSA9PSAiYWJjIltjXTogb3RoZXJfdmFsdWUKQEAgLTc3LDcgKzc0LDcgQEAgY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF83
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBp
ZiAoYSBvciBiKSBhbmQgYzogb3RoZXJfdmFsdWUKQEAgLTkxLDcgKzg4LDcgQEAgY2xhc3MgVG9r
ZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF84KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNv
bXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBh
IG9yIChiIGFuZCBjKTogb3RoZXJfdmFsdWUKQEAgLTk5LDcgKzk2LDcgQEAgY2xhc3MgVG9rZW5p
emVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF85KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBub3Qg
KGEgYW5kIGIpOiBvdGhlcl92YWx1ZQpAQCAtMTA3LDcgKzEwNCw3IEBAIGNsYXNzIFRva2VuaXpl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgc29tZV9rZXk6IHNvbWVfdmFsdWUKIApA
QCAtMTE2LDEyMSArMTEzLDEyNSBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzExKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUoIiIia2V5OgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleToKICAgaWYgbm90IGEgYW5k
IGIgYW5kIGMgYW5kIGQ6IHRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0XzEyKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIiW0hlYWRpbmcgMV0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIi
IiJbSGVhZGluZyAxXQogICBrZXk6IFthOjEsIGI6Ml0KICIiIikKIAogICAgIGRlZiB0ZXN0XzEz
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbYToxLCAiYjojIl0KKyAgICAg
ICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthOjEsICJiOiMiXQogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsiLCJdCisgICAgICAg
IHNlbGYuY29tcGFyZShiIiIia2V5OiBbIiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfMTUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6ICwKKyAgICAgICAgc2VsZi5jb21wYXJl
KGIiIiJrZXk6ICwKICIiIikKIAogICAgIGRlZiB0ZXN0XzE2KHNlbGYpOgotICAgICAgICBzZWxm
LmNvbXBhcmUoIiIia2V5OiBbIl0iLCBiXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
WyJdIiwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE3KHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUoIiIia2V5OiBdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBdCiAiIiIpCiAK
ICAgICBkZWYgdGVzdF8xOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFxd
CisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXF0KICAgICAgICAgIiIiLCAiIiJrZXk6
IF0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8wKHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUociIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCisgICAgICAgIHNlbGYuY29tcGFy
ZShiciIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCiAgICAgICAgICAgICAgICAgICAgICBy
IiIia1x0XDp5OiBceDA3XHgwOFx4MGNcblxyXHRceDBiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9l
c2NhcGVfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHgwMDogXHgxMkFceDQ1
IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHgwMDogXHgxMkFceDQ1IiIiLAogICAg
ICAgICAgICAgICAgICAgICAgciIiImtceDAwOiBceDEyQUUKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtcdTAwNDV5OiBcdTEy
MzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHUwMDQ1eTogXHUxMjM0
QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrRXk6IFx1MTIzNEFcdWFiYzYK
ICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8zKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUociIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUo
YnIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrRXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV80KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogJ1x1MTIzNEFcdUFCYzYnIiIiLAorICAg
ICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIiIiwKICAgICAgICAg
ICAgICAgICAgICAgIHUiIiJrZXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW1x1MTIzNEFc
dUFCYzZdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2
XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFtcdTEyMzRBXHVhYmM2XQogIiIi
KQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShy
IiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6
IFsiXHUxMjM0QVx1YWJjNiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzcoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBbXCxcXVwjXSIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBbXCxcXVwjXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHIi
IiJrZXk6IFsiLF0jIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV84KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXCMiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXCMiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia2V5OiAiIyIKICIiIikK
IAogICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMubWF4dW5pY29kZSA9PSAweEZGRkYsIHJlYXNv
bj0ibmFycm93IHVuaWNvZGUiKQogICAgIGRlZiB0ZXN0X2VzY2FwZV85KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogXFUxMEZGRkZhYmMiIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogXFUxMEZGRkZhYmMiIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIi
a2V5OiBcVTAwMTBGRkZGYWJjCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcdTEwRkZhYiIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBcdTEwRkZhYiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrZXk6IFx1MTBGRmFiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTEoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcXGFiCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXFxhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8xKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogQFRydWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBAVHJ1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUociIiImtleTogQEZhbHNlCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtl
eTogQEZhbHNlCiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzMoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBAUmVzZXQKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5
OiBAUmVzZXQKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fNChzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKHIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogW2EsIEBSZXNldCwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2NvbmRpdGlvbmFs
XzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286CisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQogCiAgICAgZGVmIHRlc3Rf
aWZfc3RyaW5nXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286ICJpZiBiYXIi
CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOiAiaWYgYmFyIgorIiIiKQorCisgICAgZGVm
IHRlc3Rfbm9uX2FzY2lpXzEoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiW1x4ZjBc
eDlmXHg5OVx4ODRdCiAiIiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVz
dF9zdGF0aWMucHkKaW5kZXggYWFmODQ2NTkxNTI0NmFhYzU4YTA2OGRjZmMwNjk3YjhjOWFmNDE4
MS4uZTgxMWEyYjQyYjQ1NTBjY2VjMWNkYTlmNmIxYTJiOWJiMjcwZmFjZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAtMSw1ICsxLDMgQEAK
LWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uYmFj
a2VuZHMgaW1wb3J0IHN0YXRpYwpAQCAtOCwxNCArNiwxMiBAQCBmcm9tIC4uYmFja2VuZHMgaW1w
b3J0IHN0YXRpYwogIyB1c2UgdGVzdF9zZXJpYWxpemVyIGZvciB0aGUgbWFqb3JpdHkgb2YgY2Fz
ZXMKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogY2xhc3MgVGVzdFN0YXRpYyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNvbXBp
bGUoc2VsZiwgaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSk6CiAgICAgICAgIHJldHVybiBzdGF0aWMu
Y29tcGlsZShpbnB1dF90ZXh0LCBpbnB1dF9kYXRhKQogCiAgICAgZGVmIHRlc3RfZ2V0XzAoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUK
IAogW0hlYWRpbmcgMV0KQEAgLTI3LDE3ICsyMywxNyBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAg
bWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMn0pCiAKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQogICAgICAgICBjaGlsZHJl
biA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRyZW4oKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9uID0gY2hpbGRyZW5bMF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFkaW5nIDEiKQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzIi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIpLCAidmFs
dWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoImtleSIpLCAidmFs
dWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTUwLDMyICs0
NiwzMiBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0
ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rpb24gPSBjaGlsZHJl
blswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5Iiks
ICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJf
a2V5IiksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYpOgotICAgICAgICBk
YXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYgYSA9PSAiMSI6IHZh
bHVlXzEKICAgaWYgYVswXSA9PSAiYWIiWzBdOiB2YWx1ZV8yCiAiIiIKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogIjEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgICAgICBtYW5pZmVz
dCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAiYWMifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAgIGRlZiB0ZXN0X2dl
dF80KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtl
eToKICAgaWYgbm90IGE6IHZhbHVlXzEKICAgdmFsdWVfMgogIiIiCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IFRydWV9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQogCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IEZhbHNlfSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X2Fw
aShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIiIiJrZXk6
CiAgIGlmIGEgPT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKIGtleV8xOiBvdGhlcl92YWx1ZQpA
QCAtODMsMTUgKzc5LDE1IEBAIGtleV8xOiBvdGhlcl92YWx1ZQogICAgICAgICBtYW5pZmVzdCA9
IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAxLjV9KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0
LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LnJvb3Qs
IG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3QuaGFzX2tleSgia2V5
XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMiIp
KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwg
eyJrZXkiLCAia2V5XzEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0
Lml0ZXJ2YWx1ZXMoKSksIHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcnZhbHVlcygpKSwgeyJ2
YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIn0pCiAKICAgICBkZWYgdGVzdF9pc19lbXB0eV8xKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBbU2VjdGlvbl0KICAg
W1N1YnNlY3Rpb25dCiAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CmluZGV4IGNhYzE3MmE1OTQwZWM2OTZlM2EzYjI3
OTE3MGY5NzEyYWFmNDY2OGQuLmQwY2MxOTQ4MWRiZGVkYzQ1ZWRmZWU5NjA4ZDgyZGViNGExOTY1
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdHJ1bm5lci5weQpAQCAtMywxOSArMywyMSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGZy
b20gd3B0c2VydmUgaW1wb3J0IHNzbHV0aWxzCiAKLWltcG9ydCBlbnZpcm9ubWVudCBhcyBlbnYK
LWltcG9ydCBwcm9kdWN0cwotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3cHRjb21tYW5kbGlu
ZQotaW1wb3J0IHdwdGxvZ2dpbmcKLWltcG9ydCB3cHR0ZXN0Citmcm9tIC4gaW1wb3J0IGVudmly
b25tZW50IGFzIGVudgorZnJvbSAuIGltcG9ydCBpbnN0cnVtZW50cworZnJvbSAuIGltcG9ydCBw
cm9kdWN0cworZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCitmcm9tIC4gaW1wb3J0IHdwdGNvbW1h
bmRsaW5lCitmcm9tIC4gaW1wb3J0IHdwdGxvZ2dpbmcKK2Zyb20gLiBpbXBvcnQgd3B0dGVzdAog
ZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCi1mcm9tIGZvbnQgaW1wb3J0IEZv
bnRJbnN0YWxsZXIKLWZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCi1mcm9tIGJy
b3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCitmcm9tIC5mb250IGltcG9ydCBGb250SW5z
dGFsbGVyCitmcm9tIC50ZXN0cnVubmVyIGltcG9ydCBNYW5hZ2VyR3JvdXAKK2Zyb20gLmJyb3dz
ZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmls
ZV9fKVswXQogCkBAIC00Myw3ICs0NSw3IEBAIGRlZiBzZXR1cF9sb2dnaW5nKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIGxvZ2dlcgogCiAKLWRlZiBnZXRfbG9hZGVyKHRlc3RfcGF0aHMs
IHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAqKmt3YXJncyk6Citk
ZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19l
eHRyYXM9Tm9uZSwgY2h1bmtlcl9rd2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgIGlmIHJ1bl9p
bmZvX2V4dHJhcyBpcyBOb25lOgogICAgICAgICBydW5faW5mb19leHRyYXMgPSB7fQogCkBAIC03
Niw3ICs3OCwxMCBAQCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1O
b25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz1rd2FyZ3NbInRvdGFsX2NodW5rcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcj1r
d2FyZ3NbInRoaXNfY2h1bmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlX2h0dHBzPXNzbF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGltZW91dCJdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcXVpYz1rd2FyZ3Nb
ImVuYWJsZV9xdWljIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2tpcF90aW1lb3V0PWt3YXJnc1sic2tpcF90aW1lb3V0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXM9a3dhcmdzWyJz
a2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzKQogICAgIHJldHVybiBy
dW5faW5mbywgdGVzdF9sb2FkZXIKIAogCkBAIC0xMDIsNyArMTA3LDcgQEAgZGVmIGxpc3RfZGlz
YWJsZWQodGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgIHJ1bl9pbmZvLCB0ZXN0
X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1ydW5faW5mb19leHRyYXMs
ICoqa3dhcmdzKQogCi0gICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlz
YWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gaXRl
cml0ZW1zKHRlc3RfbG9hZGVyLmRpc2FibGVkX3Rlc3RzKToKICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6
IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpA
QCAtMTI3LDcgKzEzMiw3IEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0ZXN0X2xvYWRlciwg
Kiprd2FyZ3MpOgogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgdGVzdHMgPSB0ZXN0X2xvYWRlci50ZXN0cwotICAgICAgICBp
c19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0cy5p
dGVydmFsdWVzKCkpID09IDEgYW5kCisgICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChz
dW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgidGVzdGhhcm5lc3Mi
LCBbXSkpID09IDEpCiAgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0gMSBhbmQga3dhcmdz
WyJyZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCkBAIC0xMzgsNyArMTQzLDEyIEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0
ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMs
IHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAiIiJTZXQgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQs
IGxvYWQgdGhlIGxpc3Qgb2YgdGVzdHMgdG8gYmUgZXhlY3V0ZWQsIGFuZAogICAgIGludm9rZSB0
aGUgcmVtYWluZGVyIG9mIHRoZSBjb2RlIHRvIGV4ZWN1dGUgdGVzdHMiIiIKLSAgICB3aXRoIGNh
cHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRpbyJdKToK
KyAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6CisgICAgICAgIHJl
Y29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQorICAgIGVsc2U6CisgICAgICAg
IHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImluc3RydW1lbnRfdG9f
ZmlsZSJdKQorICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJ
Tyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgICAgIHJlY29y
ZGluZy5zZXQoWyJzdGFydHVwIl0pCiAgICAgICAgIGVudi5kb19kZWxheWVkX2ltcG9ydHMobG9n
Z2VyLCB0ZXN0X3BhdGhzKQogCiAgICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0cy5sb2FkX3Byb2R1
Y3QoY29uZmlnLCBwcm9kdWN0LCBsb2FkX2Nscz1UcnVlKQpAQCAtMTQ5LDIyICsxNTksMjkgQEAg
ZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAog
ICAgICAgICBpZiBrd2FyZ3NbImluc3RhbGxfZm9udHMiXToKICAgICAgICAgICAgIGVudl9leHRy
YXMuYXBwZW5kKEZvbnRJbnN0YWxsZXIoCisgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAg
ICAgICAgICAgIGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKICAgICAgICAgICAgICAgICBh
aGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgiXSwgImZvbnRzL0Fo
ZW0udHRmIikKICAgICAgICAgICAgICkpCiAKLSAgICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVy
ID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKipr
d2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJsb2FkX3Rlc3RzIl0pCiAK
ICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBrd2FyZ3NbInByb2Nl
c3NlcyJdfQorICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAgIGlmIGt3YXJnc1si
cnVuX2J5X2RpciJdIGlzIEZhbHNlOgogICAgICAgICAgICAgdGVzdF9zb3VyY2VfY2xzID0gdGVz
dGxvYWRlci5TaW5nbGVUZXN0U291cmNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEg
dmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgaW5maW5pdGUgZGVwdGgKICAgICAgICAgICAgIHRlc3Rf
c291cmNlX2NscyA9IHRlc3Rsb2FkZXIuUGF0aEdyb3VwZWRTb3VyY2UKICAgICAgICAgICAgIHRl
c3Rfc291cmNlX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisgICAgICAg
ICAgICBjaHVua2VyX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisKKyAg
ICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9
cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCiAKICAg
ICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nICVpIGNsaWVudCBwcm9jZXNzZXMiICUga3dhcmdzWyJw
cm9jZXNzZXMiXSkKIApAQCAtMTg4LDE5ICsyMDUsMjQgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcs
IHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICB0ZXN0aGFybmVzc190
aW1lb3V0X211bHRpcGxlciA9IHByb2R1Y3QuZ2V0X3RpbWVvdXRfbXVsdGlwbGllcigidGVzdGhh
cm5lc3MiLCBydW5faW5mbywgKiprd2FyZ3MpCiAKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0
YXJ0dXAiLCAic3RhcnRfZW52aXJvbm1lbnQiXSkKICAgICAgICAgd2l0aCBlbnYuVGVzdEVudmly
b25tZW50KHRlc3RfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aGFybmVzc190aW1lb3V0X211bHRpcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9kdWN0LmVudl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3NsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9l
eHRyYXMpIGFzIHRlc3RfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdz
WyJlbmFibGVfcXVpYyJdKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgcmVjb3Jk
aW5nLnNldChbInN0YXJ0dXAiLCAiZW5zdXJlX2Vudmlyb25tZW50Il0pCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5lbnN1cmVfc3RhcnRlZCgpCiAg
ICAgICAgICAgICBleGNlcHQgZW52LlRlc3RFbnZpcm9ubWVudEVycm9yIGFzIGU6CiAgICAgICAg
ICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJFcnJvciBzdGFydGluZyB0ZXN0IGVudmlyb25tZW50
OiAlcyIgJSBlLm1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAg
cmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKKwogICAgICAgICAgICAgcmVwZWF0ID0ga3dhcmdz
WyJyZXBlYXQiXQogICAgICAgICAgICAgcmVwZWF0X2NvdW50ID0gMAogICAgICAgICAgICAgcmVw
ZWF0X3VudGlsX3VuZXhwZWN0ZWQgPSBrd2FyZ3NbInJlcGVhdF91bnRpbF91bmV4cGVjdGVkIl0K
QEAgLTIxNCw3ICsyMzYsMTIgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICAgICAgICAgIHRlc3RfY291bnQgPSAwCiAgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICBsb2dnZXIu
c3VpdGVfc3RhcnQodGVzdF9sb2FkZXIudGVzdF9pZHMsCisKKyAgICAgICAgICAgICAgICB0ZXN0
cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X2xvYWRlci50ZXN0
X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQodGVzdF9sb2FkZXIudGVz
dHNbdGVzdF90eXBlXSkKKworICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0
X3NvdXJjZV9jbHMudGVzdHNfYnlfZ3JvdXAodGVzdHMsICoqdGVzdF9zb3VyY2Vfa3dhcmdzKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nd2ViLXBsYXRmb3JtLXRl
c3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz1ydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9eyJydW5fYnlfZGly
Ijoga3dhcmdzWyJydW5fYnlfZGlyIl19KQpAQCAtMjY2LDYgKzI5Myw3IEBAIGRlZiBydW5fdGVz
dHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVzdHMgPSB0ZXN0X2xv
YWRlci50ZXN0cwogCisgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZy5wYXVzZSgpCiAgICAg
ICAgICAgICAgICAgICAgIHdpdGggTWFuYWdlckdyb3VwKCJ3ZWItcGxhdGZvcm0tdGVzdHMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInByb2Nlc3NlcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NvdXJjZV9jbHMs
CkBAIC0yNzksNyArMzA3LDggQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJwYXVzZV9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJnc1sicmVzdGFydF9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0
ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPXJlY29yZGluZykgYXMgbWFuYWdlcl9ncm91
cDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5hZ2VyX2dyb3VwLnJ1bih0ZXN0X3R5cGUsIHJ1bl90ZXN0cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKQEAgLTI4OCw3ICszMTcsNyBA
QCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudGVzdF9jb3VudCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudW5leHBlY3RlZF9j
b3VudCgpCi0KKyAgICAgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsiYWZ0ZXItZW5kIl0pCiAg
ICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBlY3RlZF9jb3VudCkK
QEAgLTMxNyw3ICszNDYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJv
ZHVjdCwgKiprd2FyZ3MpOgogCiAKIGRlZiBjaGVja19zdGFiaWxpdHkoKiprd2FyZ3MpOgotICAg
IGltcG9ydCBzdGFiaWxpdHkKKyAgICBmcm9tIC4gaW1wb3J0IHN0YWJpbGl0eQogICAgIGlmIGt3
YXJnc1sic3RhYmlsaXR5Il06CiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCItLXN0YWJpbGl0eSBp
cyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIC0tdmVyaWZ5IGluc3RlYWQhIikKICAgICAgICAga3dh
cmdzWyd2ZXJpZnlfbWF4X3RpbWUnXSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKaW5kZXggMWQxNGY0ZWZlZWFlMjc5
YzJjMzYwZmJhMTM4OGVhNWYzYTQzODc3Zi4uNmIwZmFiNmVlYmFmNTA1ZmZkMjA3MTBlMWEyY2E0
NmUzZDZmNTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgb3MKIGltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKIAogZnJvbSAud3B0bWFuaWZlc3QucGFyc2Vy
IGltcG9ydCBhdG9tcwogCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9tb3ppbmZvKG1ldGFkYXRhX3Jvb3QpCiAgICAgICAgIHNlbGYu
dXBkYXRlKG1vemluZm8uaW5mbykKIAotICAgICAgICBmcm9tIHVwZGF0ZS50cmVlIGltcG9ydCBH
aXRUcmVlCisgICAgICAgIGZyb20gLnVwZGF0ZS50cmVlIGltcG9ydCBHaXRUcmVlCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgICMgR2l0VHJlZS5fX2luaXRfXyB0aHJvd3MgaWYgd2UgYXJlIG5v
dCBpbiBhIGdpdCB0cmVlLgogICAgICAgICAgICAgcmV2ID0gR2l0VHJlZShsb2dfZXJyb3I9RmFs
c2UpLnJldgpAQCAtMTAxLDYgKzEwMyw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAg
IGlmIHJldjoKICAgICAgICAgICAgIHNlbGZbInJldmlzaW9uIl0gPSByZXYKIAorICAgICAgICBz
ZWxmWyJweXRob25fdmVyc2lvbiJdID0gc3lzLnZlcnNpb25faW5mby5tYWpvcgogICAgICAgICBz
ZWxmWyJwcm9kdWN0Il0gPSBwcm9kdWN0CiAgICAgICAgIGlmIGRlYnVnIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgc2VsZlsiZGVidWciXSA9IGRlYnVnCkBAIC0xMTgsMjIgKzEyMSw5IEBAIGNs
YXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIGlmIGV4dHJhcyBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHNlbGYudXBkYXRlKGV4dHJhcykKIAotICAgICAgICAjIFVudGlsIHRoZSB0ZXN0IGhh
cm5lc3MgY2FuIHVuZGVyc3RhbmQgZGVmYXVsdCBwcmVmIHZhbHVlcywKLSAgICAgICAgIyAoaHR0
cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzkxMikgdGhpcyB2
YWx1ZQotICAgICAgICAjIHNob3VsZCBieSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgZGVmYXVsdCBw
cmVmIHZhbHVlIGluZGljYXRlZCBpbgotICAgICAgICAjIFN0YXRpY1ByZWZMaXN0LnlhbWwuCi0g
ICAgICAgICMKLSAgICAgICAgIyBDdXJyZW50bHkgZm9yIGF1dG9tYXRpb24sIHRoZSBwcmVmIChh
bmQgYHN3LWUxMHNgKSBkZWZhdWx0cyB0byB0cnVlIGluCi0gICAgICAgICMgbmlnaHRseSBidWls
ZHMgYW5kIGZhbHNlIG90aGVyd2lzZSBidXQgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aAotICAgICAg
ICAjIGAtLXNldHByZWZgLiBJZiBvdmVycmlkZGVuLCB0aGUgdmFsdWUgd291bGQgYmUgaW5pdGlh
bGl6ZWQgaW4KLSAgICAgICAgIyBgcnVuX2luZm9fZXh0cmFzYCBhbmQgYmUgc3VwcGxpZWQgaW4g
dGhlIGBleHRyYXNgIHBhcmFtZXRlci4KLSAgICAgICAgaWYgInN3LWUxMHMiIG5vdCBpbiBzZWxm
OgotICAgICAgICAgICAgc2VsZlsic3ctZTEwcyJdID0gc2VsZi5nZXQoIm5pZ2h0bHlfYnVpbGQi
LCBGYWxzZSkKLQogICAgICAgICBzZWxmWyJoZWFkbGVzcyJdID0gZXh0cmFzLmdldCgiaGVhZGxl
c3MiLCBGYWxzZSkKICAgICAgICAgc2VsZlsid2VicmVuZGVyIl0gPSBlbmFibGVfd2VicmVuZGVy
CiAKLQogICAgIGRlZiBfdXBkYXRlX21vemluZm8oc2VsZiwgbWV0YWRhdGFfcm9vdCk6CiAgICAg
ICAgICIiIkFkZCBleHRyYSBidWlsZCBpbmZvcm1hdGlvbiBmcm9tIGEgbW96aW5mby5qc29uIGZp
bGUgaW4gYSBwYXJlbnQKICAgICAgICAgZGlyZWN0b3J5IiIiCkBAIC0xNTAsNiArMTQwLDE0IEBA
IGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIG1vemluZm8uZmluZF9hbmRfdXBkYXRlX2Zy
b21fanNvbigqZGlycykKIAogCitkZWYgc2VydmVyX3Byb3RvY29sKG1hbmlmZXN0X2l0ZW0pOgor
ICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImgyIikgYW5kIG1hbmlmZXN0X2l0ZW0uaDI6
CisgICAgICAgIHJldHVybiAiaDIiCisgICAgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAiaHR0
cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwczoKKyAgICAgICAgcmV0dXJuICJodHRwcyIKKyAg
ICByZXR1cm4gImh0dHAiCisKKwogY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgcmVzdWx0X2Ns
cyA9IE5vbmUKQEAgLTE2MCwxNCArMTU4LDE0IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICBs
b25nX3RpbWVvdXQgPSA2MCAgIyBzZWNvbmRzCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLAotICAgICAgICAg
ICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiKToKKyAgICAg
ICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgcXVp
Yz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKICAgICAgICAg
c2VsZi51cmwgPSB1cmwKICAgICAgICAgc2VsZi5faW5oZXJpdF9tZXRhZGF0YSA9IGluaGVyaXRf
bWV0YWRhdGEKICAgICAgICAgc2VsZi5fdGVzdF9tZXRhZGF0YSA9IHRlc3RfbWV0YWRhdGEKICAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGVsc2Ug
c2VsZi5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotICAgICAgICBz
ZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAicHJlZnMiOiBzZWxmLnBy
ZWZzfQorICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAi
cHJlZnMiOiBzZWxmLnByZWZzLCAicXVpYyI6IHF1aWN9CiAKICAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRlc3QpOgpAQCAtMTg2
LDE0ICsxODQsMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfaXRlbSwgaW5o
ZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9u
Z190aW1lb3V0IGlmIG1hbmlmZXN0X2l0ZW0udGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVm
YXVsdF90aW1lb3V0Ci0gICAgICAgIHByb3RvY29sID0gImh0dHBzIiBpZiBoYXNhdHRyKG1hbmlm
ZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVsc2UgImh0dHAiCiAg
ICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAg
ICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0
YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpv
aW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAotICAgICAg
ICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQorICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVtKSkKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpZChzZWxmKToKQEAgLTI2Miw2ICsyNTksMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudAogICAgICAgICByZXR1cm4gMAogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIGZvciBtZXRhIGlu
IHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGlmIG1ldGEubHNhbl9kaXNhYmxlZCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0YS5sc2FuX2Rpc2FibGVkCisgICAg
ICAgIHJldHVybiBGYWxzZQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChz
ZWxmKToKICAgICAgICAgbHNhbl9hbGxvd2VkID0gc2V0KCkKQEAgLTI5NSw3ICsyOTksNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG1ldGEgaW4g
c2VsZi5pdGVybWV0YShOb25lKToKICAgICAgICAgICAgIHRocmVzaG9sZCA9IG1ldGEubGVha190
aHJlc2hvbGQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHRocmVzaG9sZC5pdGVyaXRl
bXMoKToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyh0aHJlc2hvbGQp
OgogICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAgICAg
IHJ2W2tleV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKQEAgLTMzNyw3ICszNDEsNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0ZWQg
PSBtZXRhZGF0YS5nZXQoImV4cGVjdGVkIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhw
ZWN0ZWQsIChiYXNlc3RyaW5nKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVk
LCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZAogICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRbMF0KQEAgLTM0Niw2ICszNTAsMTYgQEAgY2xhc3MgVGVzdChvYmplY3Qp
OgogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAog
CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgaW1wbGVtZW50
YXRpb25fc3RhdHVzID0gTm9uZQorICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKCk6
CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBtZXRhLmltcGxlbWVudGF0aW9u
X3N0YXR1cworICAgICAgICAgICAgaWYgaW1wbGVtZW50YXRpb25fc3RhdHVzOgorICAgICAgICAg
ICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMKKworICAgICAgICAjIGFzc3VtaW5n
IG5vIHNwZWNpZmljIGNhc2UsIHdlIGFyZSBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgcmV0dXJu
ICJpbXBsZW1lbnRpbmciCisKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYsIHN1YnRl
c3Q9Tm9uZSk6CiAgICAgICAgIG1ldGFkYXRhID0gc2VsZi5fZ2V0X21ldGFkYXRhKHN1YnRlc3Qp
CiAgICAgICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6CkBAIC0zODEsOSArMzk1LDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NUZXN0KFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jv
b3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgdGVzdGRyaXZlcj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lKToKKyAg
ICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lLCBxdWljPUZhbHNlKToK
ICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMp
CiAKICAgICAgICAgc2VsZi50ZXN0ZHJpdmVyID0gdGVzdGRyaXZlcgogICAgICAgICBzZWxmLmpz
c2hlbGwgPSBqc3NoZWxsCkBAIC0zOTIsMjIgKzQwNiwyMyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rl
c3QoVGVzdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBt
YW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFk
YXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRl
bS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLSAgICAgICAgcHJv
dG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1h
bmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRyaXZlciA9IG1hbmlm
ZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJ0ZXN0ZHJpdmVy
IikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRlbS5qc3NoZWxsIGlm
IGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNlCisgICAgICAgIHF1
aWMgPSBtYW5pZmVzdF9pdGVtLnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAicXVpYyIp
IGVsc2UgRmFsc2UKICAgICAgICAgc2NyaXB0X21ldGFkYXRhID0gbWFuaWZlc3RfaXRlbS5zY3Jp
cHRfbWV0YWRhdGEgb3IgW10KLSAgICAgICAgc2NyaXB0cyA9IFt2IGZvciAoaywgdikgaW4gc2Ny
aXB0X21ldGFkYXRhIGlmIGsgPT0gYiJzY3JpcHQiXQorICAgICAgICBzY3JpcHRzID0gW3YgZm9y
IChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICBpZiBrID09ICJz
Y3JpcHQiXQogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAgICAgICAgICAgICBp
bmhlcml0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHBhdGg9
b3MucGF0aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZlc3RfaXRlbS5wYXRo
KSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCwKKyAgICAgICAgICAgICAg
ICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSksCiAgICAgICAgICAg
ICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAgICAgICAgICAgICAgICAgIGpzc2hl
bGw9anNzaGVsbCwKLSAgICAgICAgICAgICAgICAgICBzY3JpcHRzPXNjcmlwdHMKLSAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3JpcHRzLAorICAgICAg
ICAgICAgICAgICAgIHF1aWM9cXVpYykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChzZWxm
KToKQEAgLTQyMywxMyArNDM4LDI0IEBAIGNsYXNzIE1hbnVhbFRlc3QoVGVzdCk6CiAKIAogY2xh
c3MgUmVmdGVzdFRlc3QoVGVzdCk6CisgICAgIiIiQSByZWZ0ZXN0CisKKyAgICBBIHJlZnRlc3Qg
c2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gcGFzcyBpZiBvbmUgb2YgaXRzIHJlZmVyZW5jZXMgbWF0
Y2hlcyAoc2VlIGJlbG93KSAqYW5kKiB0aGUKKyAgICByZWZlcmVuY2UgcGFzc2VzIGlmIGl0IGhh
cyBhbnkgcmVmZXJlbmNlcyByZWN1cnNpdmVseS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICAg
IHJlZmVyZW5jZXMgKExpc3RbVHVwbGVbc3RyLCBzdHJdXSk6IGEgbGlzdCBvZiBhbHRlcm5hdGUg
cmVmZXJlbmNlcywgd2hlcmUgb25lIG11c3QgbWF0Y2ggZm9yIHRoZSB0ZXN0IHRvIHBhc3MKKyAg
ICAgICAgdmlld3BvcnRfc2l6ZSAoT3B0aW9uYWxbVHVwbGVbaW50LCBpbnRdXSk6IHNpemUgb2Yg
dGhlIHZpZXdwb3J0IGZvciB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0CisgICAgICAgIGRwaSAo
T3B0aW9uYWxbaW50XSk6IGRwaSB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhpcyB0ZXN0LCBpZiBu
b3QgZGVmYXVsdAorCisgICAgIiIiCiAgICAgcmVzdWx0X2NscyA9IFJlZnRlc3RSZXN1bHQKICAg
ICB0ZXN0X3R5cGUgPSAicmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19y
b290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCi0g
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5v
bmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAg
ICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6ZT1Ob25lLCBkcGk9Tm9u
ZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVz
dC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3Rf
bWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wp
CisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMpCiAKICAgICAgICAg
Zm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBpZiByZWZfdHlwZSBu
b3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNDQ1LDE2ICs0NzEsMTAgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAgICAgICAgICAgICAgIGluaGVy
aXRfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICBub2Rlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXNfc2Vlbj1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21ldGFkYXRhKToK
IAogICAgICAgICB0aW1lb3V0ID0gY2xzLmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF90ZXN0LnRp
bWVvdXQgPT0gImxvbmciIGVsc2UgY2xzLmRlZmF1bHRfdGltZW91dAotCi0gICAgICAgIGlmIG5v
ZGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlcyA9IHt9Ci0gICAgICAgIGlmIHJlZmVyZW5j
ZXNfc2VlbiBpcyBOb25lOgotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuID0gc2V0KCkKKyAg
ICAgICAgcXVpYyA9IG1hbmlmZXN0X3Rlc3QucXVpYyBpZiBoYXNhdHRyKG1hbmlmZXN0X3Rlc3Qs
ICJxdWljIikgZWxzZSBGYWxzZQogCiAgICAgICAgIHVybCA9IG1hbmlmZXN0X3Rlc3QudXJsCiAK
QEAgLTQ2Nyw0MSArNDg3LDYwIEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgIHBhdGg9bWFuaWZlc3RfdGVzdC5wYXRoLAogICAgICAgICAgICAgICAgICAgIHZp
ZXdwb3J0X3NpemU9bWFuaWZlc3RfdGVzdC52aWV3cG9ydF9zaXplLAogICAgICAgICAgICAgICAg
ICAgIGRwaT1tYW5pZmVzdF90ZXN0LmRwaSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD0i
aHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBzIikgYW5kIG1hbmlmZXN0X3Rl
c3QuaHR0cHMgZWxzZSAiaHR0cCIsCi0gICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3Rf
dGVzdC5mdXp6eSkKKyAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wo
bWFuaWZlc3RfdGVzdCksCisgICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3RfdGVzdC5m
dXp6eSwKKyAgICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKLSAgICAgICAgbm9kZXNbdXJs
XSA9IG5vZGUKKyAgICAgICAgcmVmc19ieV90eXBlID0gZGVmYXVsdGRpY3QobGlzdCkKIAogICAg
ICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gbWFuaWZlc3RfdGVzdC5yZWZlcmVuY2VzOgot
ICAgICAgICAgICAgY29tcGFyaXNvbl9rZXkgPSAocmVmX3R5cGUsKSArIHR1cGxlKHNvcnRlZChb
dXJsLCByZWZfdXJsXSkpCi0gICAgICAgICAgICBpZiByZWZfdXJsIGluIG5vZGVzOgotICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSByZWZfdXJsCi0gICAgICAgICAgICAgICAgaWYgY29t
cGFyaXNvbl9rZXkgaW4gcmVmZXJlbmNlc19zZWVuOgotICAgICAgICAgICAgICAgICAgICAjIFdl
IGhhdmUgcmVhY2hlZCBhIGN5Y2xlIHNvIHN0b3AgaGVyZQotICAgICAgICAgICAgICAgICAgICAj
IE5vdGUgdGhhdCBqdXN0IHNlZWluZyBhIG5vZGUgZm9yIHRoZSBzZWNvbmQgdGltZSBpcyBub3QK
LSAgICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IGEgY3ljbGUgYmVjYXVzZQot
ICAgICAgICAgICAgICAgICAgICAjIEEgIT0gQiAhPSBDICE9IEEgbXVzdCBpbmNsdWRlIEMgIT0g
QQotICAgICAgICAgICAgICAgICAgICAjIGJ1dCBBID09IEIgPT0gQSBzaG91bGQgbm90IGluY2x1
ZGUgdGhlIHJlZHVuZGFudCBCID09IEEuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0K
LSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2Vlbi5hZGQoY29tcGFyaXNvbl9rZXkpCi0KLSAgICAg
ICAgICAgIG1hbmlmZXN0X25vZGUgPSBtYW5pZmVzdF9maWxlLmdldF9yZWZlcmVuY2UocmVmX3Vy
bCkKLSAgICAgICAgICAgIGlmIG1hbmlmZXN0X25vZGU6Ci0gICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdF9maWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAg
ICAgICAgIHJlZnNfYnlfdHlwZVtyZWZfdHlwZV0uYXBwZW5kKHJlZl91cmwpCisKKyAgICAgICAg
IyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGFsbCB0aGUgbWlzbWF0Y2hlcywgd2hlcmUgd2UgZW5kIHVw
IHdpdGggbWlzbWF0Y2hfMSAhPSB1cmwgIT0KKyAgICAgICAgIyBtaXNtYXRjaF8yICE9IHVybCAh
PSBtaXNtYXRjaF8zIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9j
dW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1pc21hdGNoZXMgcHJv
dmlkZWQgbWF0Y2gsCisgICAgICAgIG1pc21hdGNoX3dhbGsgPSBOb25lCisgICAgICAgIGlmIHJl
ZnNfYnlfdHlwZVsiIT0iXToKKyAgICAgICAgICAgIG1pc21hdGNoX3dhbGsgPSBSZWZ0ZXN0VGVz
dChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmc19ieV90eXBlWyIhPSJdWzBdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
Ci0KLSAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZmVyZW5jZSwgcmVmX3R5
cGUpKQorICAgICAgICAgICAgY21wX3JlZiA9IG1pc21hdGNoX3dhbGsKKyAgICAgICAgICAgIGZv
ciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiIT0iXVsxOl06CisgICAgICAgICAgICAgICAgY21w
X3NlbGYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKKyAg
ICAgICAgICAgICAgICBjbXBfcmVmLnJlZmVyZW5jZXMuYXBwZW5kKChjbXBfc2VsZiwgIiE9Iikp
CisgICAgICAgICAgICAgICAgY21wX3JlZiA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0X2ZpbGUudGVz
dHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9zZWxmLnJlZmVyZW5jZXMuYXBw
ZW5kKChjbXBfcmVmLCAiIT0iKSkKKworICAgICAgICBpZiBtaXNtYXRjaF93YWxrIGlzIE5vbmU6
CisgICAgICAgICAgICBtaXNtYXRjaF9yZWZzID0gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG1pc21hdGNoX3JlZnMgPSBbKG1pc21hdGNoX3dhbGssICIhPSIpXQorCisgICAgICAgIGlm
IHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAgICAgICAgICMgRm9yIGVhY2ggPT0gcmVmLCBhZGQg
YSByZWZlcmVuY2UgdG8gdGhpcyBub2RlIHdob3NlIHRhaWwgaXMgdGhlIG1pc21hdGNoIGxpc3Qu
CisgICAgICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFu
cyBhbnkgb25lIG9mIHRoZSBtYXRjaGVzIG11c3QgcGFzcyBwbHVzIGFsbCB0aGUgbWlzbWF0Y2hl
cy4KKyAgICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAg
ICAgICAgICAgICByZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc21hdGNoX3JlZnMp
CisgICAgICAgICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmFwcGVuZCgocmVmLCAiPT0iKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBqdXN0IGFkZCB0aGUgbWlz
bWF0Y2hlcyBkaXJlY3RseSBhcyB3ZSBhcmUgaW1tZWRpYXRlbHkgaW50byB0aGUKKyAgICAgICAg
ICAgICMgbWlzbWF0Y2ggY2hhaW4gd2l0aCBubyBhbHRlcm5hdGVzLgorICAgICAgICAgICAgbm9k
ZS5yZWZlcmVuY2VzLmV4dGVuZChtaXNtYXRjaF9yZWZzKQogCiAgICAgICAgIHJldHVybiBub2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1c2UgQlNEIExpY2Vuc2UKLQot
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNlLmh0
bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSogUmVkaXN0cmlidXRpb25z
IG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLAotICB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0q
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgb3JpZ2lu
YWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAu
cHkKaW5kZXggYzljMzY0YjhiYWNjNzJhNmZmNzdmOWQwYzgxMWIyZDdkMTgxMGQxMy4uNzU5Y2I0
OGQxZjY1ZjUyZjY1MDBlZDJiODcxYzdlZjQzMDUxOGFiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSBzZXR1cHRvb2xzIGltcG9y
dCBzZXR1cAogCi1QQUNLQUdFX1ZFUlNJT04gPSAnMi4wJworUEFDS0FHRV9WRVJTSU9OID0gJzMu
MCcKIGRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCiAKIHNldHVwKG5hbWU9J3dwdHNl
cnZlJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDJlMmQwZDY3NzFiYTI2YTFm
YmU3ZThmYzhiYjJlMjU5OGJjMzQyMjMuLjY0ZWFiMmQ4MDZiNTJkZTkzM2IyOGQ1ODQxNmI2OWQz
NmJkY2IyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAtMTAsNyArMTAsNyBA
QCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYg
dGVzdF9uYW1lX3ZhbHVlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxl
cgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgICAgIHJlc3BvbnNl
LnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3Qi
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9uYW1lX3ZhbHVlIiwgaGFuZGxlcikK
QEAgLTIyLDggKzIyLDggQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1Nl
cnZlcik6CiAgICAgZGVmIHRlc3RfdW5zZXQoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5k
bGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICAg
ICAgcmVzcG9uc2UudW5zZXRfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLnNl
dF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCisgICAgICAgICAgICByZXNwb25zZS51bnNldF9j
b29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0
ZSA9ICgiR0VUIiwgIi90ZXN0L3Vuc2V0IiwgaGFuZGxlcikKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3Rf
ZGVsZXRlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAg
ICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXNwb25zZS5k
ZWxldGVfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLmRlbGV0ZV9jb29raWUo
YiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0ZSA9ICgi
R0VUIiwgIi90ZXN0L2RlbGV0ZSIsIGhhbmRsZXIpCkBAIC00NywxOCArNDcsMjAgQEAgY2xhc3Mg
VGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJ0c1sibmFtZSJdLCAiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJ0c1siUGF0aCJdLCAiLyIpCi0gICAgICAgICNTaG91bGQgYWxzbyBjaGVjayB0aGF0IGV4cGly
ZXMgaXMgaW4gdGhlIHBhc3QKKyAgICAgICAgIyBUT0RPOiBTaG91bGQgYWxzbyBjaGVjayB0aGF0
IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKwogCiBjbGFzcyBUZXN0UmVxdWVzdENvb2tpZXMoVGVz
dFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zZXRfY29va2llKHNlbGYpOgogICAgICAgICBA
d3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBy
ZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVzWyJuYW1lIl0udmFs
dWUKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvb2tpZXNbYiJuYW1lIl0udmFsdWUKIAog
ICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3NldF9jb29raWUiLCBoYW5kbGVyKQogICAg
ICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICByZXNwID0g
c2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBoZWFkZXJzPXsiQ29va2llIjogIm5hbWU9dmFsdWUifSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJ2YWx1ZSIpCiAKKwogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZDhkNjRkNTRjY2M3OGEzYzZkZWJhMjFiNzM0MjhlNzFh
ZWIxYmU2MC4uNmU5NDdlNDc4ZDllMTRlMzM2NzZjYmQ2MmJiYmFkYTJmMTE4ZWM3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBzeXMK
IGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeCBpbXBvcnQgY3JlYXRlX2JvdW5kX21l
dGhvZAorZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZMworZnJvbSBzaXgu
bW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdT
ZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMTY3LDcgKzE2Nyw2IEBAIGNs
YXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLnNlcnZlci5y
b3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICBzZWxmLnJlcXVlc3Qocm91dGVbMV0pCiAK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
InB5MyB1cmxsaWIgZG9lc24ndCBoYW5kbGUgaW52YWxpZCBIVFRQIHZlcnkgd2VsbCIpCiAgICAg
ZGVmIHRlc3Rfd3JpdGVfcmF3X2NvbnRlbnRzX2ludmFsaWRfaHR0cChzZWxmKToKICAgICAgICAg
cmVzcF9jb250ZW50ID0gYiJJTlZBTElEIEhUVFAiCiAKQEAgLTE3Nyw5ICsxNzYsMTQgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgcm91dGUgPSAoIkdF
VCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikKICAgICAgICAgc2Vs
Zi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKLSAgICAgICAgcmVzcCA9IHNlbGYucmVx
dWVzdChyb3V0ZVsxXSkKLSAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVu
dAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVb
MV0pCisgICAgICAgICAgICBhc3NlcnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9jb250ZW50CisgICAg
ICAgIGV4Y2VwdCBCYWRTdGF0dXNMaW5lIGFzIGU6CisgICAgICAgICAgICAjIEluIFB5dGhvbjMs
IGFuIGludmFsaWQgSFRUUCByZXF1ZXN0IHNob3VsZCB0aHJvdyBCYWRTdGF0dXNMaW5lLgorICAg
ICAgICAgICAgYXNzZXJ0IFBZMworICAgICAgICAgICAgYXNzZXJ0IHN0cihlKSA9PSByZXNwX2Nv
bnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gy
U2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19zdHJlYW0oc2VsZik6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDMwOWRkOWU1NzdhMDMzNWI3YTU2OTkyYzgy
YTQ4YjQzYTI1OWEyOGQuLjFjNGM5YWQ5MzNhMzc3NDY2MjNhMDE5NWY1NTNhZDhjZmU3MDY4OGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CkBAIC0xOCwxMCArMTgsMTAgQEAgY2xhc3MgVGVz
dFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIEB3cHRzZXJ2ZS5o
YW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToK
ICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KCJpZCIpLCByZXF1
ZXN0LlBPU1QuZmlyc3QoImRhdGEiKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNlcnZlci5z
dGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KGIiaWQiKSwgcmVxdWVzdC5QT1NULmZpcnN0KGIi
ZGF0YSIpKQogICAgICAgICAgICAgICAgIGRhdGEgPSAiT0siCiAgICAgICAgICAgICBlbGlmIHJl
cXVlc3QubWV0aG9kID09ICJHRVQiOgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNl
cnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KCJpZCIpKQorICAgICAgICAgICAgICAg
IGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KGIiaWQi
KSkKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiTk9UIEZPVU5EIgogICAgICAgICAgICAgcmV0dXJuIGRhdGEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY5ZDNkNDYwNDQwOTQxMTk4NGNiNDlmY2Q0MGViN2U5NzFiM2M1MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9y
dCBtb2NrCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKKworZnJvbSB3cHRzZXJ2ZS5yZXF1
ZXN0IGltcG9ydCBSZXF1ZXN0LCBSZXF1ZXN0SGVhZGVycworCisKK2NsYXNzIE1vY2tIVFRQTWVz
c2FnZShkaWN0KToKKyAgICAiIiJBIG1pbmltdW0gKGFuZCBub3QgY29tcGxldGVseSBjb3JyZWN0
bHkpIG1vY2sgb2YgSFRUUE1lc3NhZ2UgZm9yIHRlc3RpbmcuCisKKyAgICBDb25zdHJ1Y3Rpbmcg
SFRUUE1lc3NhZ2UgaXMgYW5ub3lpbmcgYW5kIGRpZmZlcmVudCBpbiBQeXRob24gMiBhbmQgMy4g
VGhpcworICAgIG9ubHkgaW1wbGVtZW50cyB0aGUgcGFydHMgdXNlZCBieSBSZXF1ZXN0SGVhZGVy
cy4KKworICAgIFJlcXVpcmVtZW50cyBmb3IgY29uc3RydWN0aW9uOgorICAgICogS2V5cyBhcmUg
aGVhZGVyIG5hbWVzIGFuZCBNVVNUIGJlIGxvd2VyLWNhc2UuCisgICAgKiBWYWx1ZXMgYXJlIGxp
c3RzIG9mIGhlYWRlciB2YWx1ZXMgKGV2ZW4gaWYgdGhlcmUncyBvbmx5IG9uZSkuCisgICAgKiBL
ZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzIHRvIG1hdGNoIHN0ZGxpYidz
IGJlaGF2aW91cnMuCisgICAgIiIiCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Cisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgc3RyKQorICAgICAgICB2YWx1ZXMgPSBkaWN0
Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh2YWx1ZXMsIGxpc3QpCisgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKworICAgIGRlZiBnZXQo
c2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0CisKKyAgICBkZWYgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKHNlbGYsIGtleSk6Cisg
ICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCisgICAg
ICAgIHJldHVybiBbInt9OiB7fVxuIi5mb3JtYXQoa2V5LCB2KSBmb3IgdiBpbiB2YWx1ZXNdCisK
KworZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2dldCgpOgorICAgIHJhd19oZWFkZXJzID0gTW9j
a0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwKKyAgICAgICAgJ3gtYmFy
JzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMgPSBSZXF1ZXN0SGVhZGVy
cyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaGVhZGVyc1sneC1mb28nXSA9PSBiJ2ZvbycKKyAg
ICBhc3NlcnQgaGVhZGVyc1snWC1CYXInXSA9PSBiJ2JhcjEsIGJhcjInCisgICAgYXNzZXJ0IGhl
YWRlcnMuZ2V0KCd4LWJhcicpID09IGInYmFyMSwgYmFyMicKKworCitkZWYgdGVzdF9yZXF1ZXN0
X2hlYWRlcnNfZW5jb2RpbmcoKToKKyAgICByYXdfaGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSh7
CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4LWJhcic6IFsnYmFyMScsICdi
YXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhlYWRlcnMocmF3X2hlYWRlcnMp
CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1mb28nXSwgYmluYXJ5X3R5cGUpCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1iYXInXSwgYmluYXJ5X3R5cGUpCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVycy5nZXRfbGlzdCgneC1iYXInKVswXSwgYmluYXJ5X3R5
cGUpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJvbV9zZXJ2ZXJfYWRkcmVzcygpOgorICAg
IHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZl
ci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9hZGRy
ZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVxdWVzdF9oYW5kbGVyLnBhdGggPSAn
L2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMgPSBNb2NrSFRUUE1lc3NhZ2UoKQor
CisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAgIGFzc2VydCByZXF1
ZXN0LnVybCA9PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RlbW8nCisgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocmVxdWVzdC51cmwsIHN0cikKKworCitkZWYgdGVzdF9yZXF1ZXN0X3VybF9mcm9tX2hv
c3RfaGVhZGVyKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2NrKCkKKyAgICByZXF1
ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVlc3RfaGFuZGxlci5z
ZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykKKyAgICByZXF1ZXN0
X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycyA9IE1v
Y2tIVFRQTWVzc2FnZSh7J2hvc3QnOiBbJ3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDEnXX0pCisKKyAg
ICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1ZXN0X2hhbmRsZXIpCisgICAgYXNzZXJ0IHJlcXVlc3Qu
dXJsID09ICdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMS9kZW1vJworICAgIGFzc2VydCBp
c2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rh
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMWVhOTljMDYwOWY1YmVkODU5NjUx
Mjg0ZWIzZGE4MGE0Y2RkZjczNy4uMzFhZjE1NThiMGNjNWMwNDY4NDNlMGU5NjU2OWRiNDJjNDY3
Y2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9zdGFzaC5weQpAQCAtNCw2ICs0LDcgQEAgaW1wb3J0IHRocmVhZGluZwogZnJvbSBtdWx0aXBy
b2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKK2Zy
b20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2
ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTU3LDcgKzU4LDggQEAgZGVmIHJ1bihwcm9jZXNzX3F1ZXVl
LCByZXF1ZXN0X2xvY2ssIHJlc3BvbnNlX2xvY2spOgogICAgIHByb2Nlc3NfcXVldWUucHV0KHRo
cmVhZF9xdWV1ZS5nZXQoKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IK
KyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0
aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBkZWYgdGVzdF9k
ZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRlbGF5cyBpbiBw
cm94aWVkIExvY2sgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0aApAQCAtOTYsNyArOTgs
OCBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBp
bnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3
aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRf
c3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBk
ZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRl
bGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVyZmVyZSB3aXRoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0Lmxv
ZwppbmRleCBlZjlkNmE4MGFhNmFjMTQyM2Y1NDg1YmIyNWJkMzM2OTc1ZDlhYjU3Li41ZjllYjZi
MzhiNjUxNDlmZGU3ZGFkMTliODA1NmYzY2M1YmYxMzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAgLTE2LDQgKzE2LDUg
QEAgTm9uZQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy90ZXN0X3JlcGxhY2VtZW50X3Rva2VuaXplci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93M2MtaW1wb3J0LmxvZwppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYxOWQ5MDZlNDVkOGQ3
OTAzM2MxLi5mYWFhZjY3ZTk4NThhMTA3ZGM4M2E5NTI4NWYyYjkzOTQ3ZmIwMTMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKQEAgLTE0LDcgKzE0
LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBOb25lCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9NQU5JRkVTVC5p
bgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvUkVBRE1FLm1kCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25m
aWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQppbmRleCBlMTFjYWUxMzdiOWM1MWQ4Njc3NDAw
MWVhZDcxOTM4ZmQ1NWMwNTU1Li43NzY2NTY1ZmU0ZmQxNzU1OThiOGI2Y2NlMGU0ZmY0YjQwZjEw
ZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2Nv
bmZpZy5weQpAQCAtNjksNiArNjksMzEgQEAgY2xhc3MgQ29uZmlnKE1hcHBpbmcpOgogICAgIGRl
ZiBhc19kaWN0KHNlbGYpOgogICAgICAgICByZXR1cm4ganNvbl90eXBlcyhzZWxmLl9fZGljdF9f
KQogCisgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGxpbWl0ZWQgaW4gc2l6ZSBzbyB3
ZSBuZWVkIHRvIHBydW5lIHRoZSBtb3N0IGVncmVnaW91cyBjb250cmlidXRvcnMKKyAgICAjIHRv
IHNpemUsIHRoZSBvcmlnaW4gcG9saWN5IHN1YmRvbWFpbnMuCisgICAgZGVmIGFzX2RpY3RfZm9y
X3dkX2Vudl92YXJpYWJsZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5hc19kaWN0KCkK
KworICAgICAgICBmb3Iga2V5IGluIFsKKyAgICAgICAgICAgICgic3ViZG9tYWlucyIsKSwKKyAg
ICAgICAgICAgICgiZG9tYWlucyIsICJhbHQiKSwKKyAgICAgICAgICAgICgiZG9tYWlucyIsICIi
KSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiYWx0IiksCisgICAgICAgICAgICAoImFs
bF9kb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJkb21haW5zX3NldCIsKSwKKyAgICAgICAg
ICAgICgiYWxsX2RvbWFpbnNfc2V0IiwpCisgICAgICAgIF06CisgICAgICAgICAgICB0YXJnZXQg
PSByZXN1bHQKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIGtleVs6LTFdOgorICAgICAgICAgICAg
ICAgIHRhcmdldCA9IHRhcmdldFtwYXJ0XQorICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXRba2V5
Wy0xXV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgorICAgICAgICAg
ICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIGl0ZXJpdGVtcyh2YWx1
ZSkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUgaWYgbm90IHguc3Rh
cnRzd2l0aCgib3AiKV0KKworICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogZGVmIGpzb25fdHlw
ZXMob2JqKToKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQppbmRleCBjYTUxMTgw
MDljZmM5YzQ3NjNmOTllMmE2Mjk2ZDc4NGE2NTM5MjE2Li5mZWExMjc3YjBkMWNiNWNhYzhjYTQ0
NWFiMDU5OTQ3NDEyNjY5YWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgY2dpCiBp
bXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0xNCw2ICsxMywxMSBAQCBmcm9t
IC5yZXF1ZXN0IGltcG9ydCBBdXRoZW50aWNhdGlvbgogZnJvbSAucmVzcG9uc2UgaW1wb3J0IE11
bHRpcGFydENvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKK3RyeToK
KyAgICBmcm9tIGh0bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZy
b20gY2dpIGltcG9ydCBlc2NhcGUKKwogX19hbGxfXyA9IFsiZmlsZV9oYW5kbGVyIiwgInB5dGhv
bl9zY3JpcHRfaGFuZGxlciIsCiAgICAgICAgICAgICJGdW5jdGlvbkhhbmRsZXIiLCAiaGFuZGxl
ciIsICJqc29uX2hhbmRsZXIiLAogICAgICAgICAgICAiYXNfaXNfaGFuZGxlciIsICJFcnJvckhh
bmRsZXIiLCAiQmFzaWNBdXRoSGFuZGxlciJdCkBAIC03Niw3ICs4MCw3IEBAIGNsYXNzIERpcmVj
dG9yeUhhbmRsZXIob2JqZWN0KToKIDx1bD4KICUoaXRlbXMpcwogPC91bD4KLSIiIiAlIHsicGF0
aCI6IGNnaS5lc2NhcGUodXJsX3BhdGgpLAorIiIiICUgeyJwYXRoIjogZXNjYXBlKHVybF9wYXRo
KSwKICAgICAgICAiaXRlbXMiOiAiXG4iLmpvaW4oc2VsZi5saXN0X2l0ZW1zKHVybF9wYXRoLCBw
YXRoKSl9ICAjIG5vcWE6IEUxMjIKIAogICAgIGRlZiBsaXN0X2l0ZW1zKHNlbGYsIGJhc2VfcGF0
aCwgcGF0aCk6CkBAIC05MiwxNSArOTYsMjkgQEAgY2xhc3MgRGlyZWN0b3J5SGFuZGxlcihvYmpl
Y3QpOgogICAgICAgICAgICAgbGluayA9IHVybGpvaW4oYmFzZV9wYXRoLCAiLi4iKQogICAgICAg
ICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iZGlyIj48YSBocmVmPSIlKGxpbmspcyI+JShuYW1l
KXM8L2E+PC9saT4iIiIgJQogICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1l
IjogIi4uIn0pCisgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgcHJldl9pdGVtID0gTm9uZQog
ICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSk6Ci0gICAgICAgICAg
ICBsaW5rID0gY2dpLmVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAgIGlmIHByZXZfaXRl
bSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgorICAgICAgICAgICAgICAgIGl0
ZW1zWy0xXVsxXSA9IGl0ZW0KKyAgICAgICAgICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChbaXRlbSwgTm9u
ZV0pCisgICAgICAgICAgICBwcmV2X2l0ZW0gPSBpdGVtCisgICAgICAgIGZvciBpdGVtLCBkb3Rf
aGVhZGVycyBpbiBpdGVtczoKKyAgICAgICAgICAgIGxpbmsgPSBlc2NhcGUocXVvdGUoaXRlbSkp
CisgICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAiIgorICAgICAgICAgICAgaWYgZG90
X2hlYWRlcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90X2hlYWRlcnNfbWFya3Vw
ID0gKCIiIiAoPGEgaHJlZj0iJShsaW5rKXMiPi5oZWFkZXJzPC9hPikiIiIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBlc2NhcGUocXVvdGUoZG90X2hl
YWRlcnMpKX0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRo
LCBpdGVtKSk6CiAgICAgICAgICAgICAgICAgbGluayArPSAiLyIKICAgICAgICAgICAgICAgICBj
bGFzc18gPSAiZGlyIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjbGFzc18g
PSAiZmlsZSIKLSAgICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9IiUoY2xhc3MpcyI+PGEg
aHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPjwvbGk+IiIiICUKLSAgICAgICAgICAgICAgICAg
ICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGNnaS5lc2NhcGUoaXRlbSksICJjbGFzcyI6IGNsYXNz
X30pCisgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNzKXMiPjxhIGhyZWY9
IiUobGluaylzIj4lKG5hbWUpczwvYT4lKGhlYWRlcnMpczwvbGk+IiIiICUKKyAgICAgICAgICAg
ICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGVzY2FwZShpdGVtKSwgImNsYXNzIjogY2xh
c3NfLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGRvdF9oZWFkZXJzX21hcmt1cH0p
CiAKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwgcmVzcG9uc2UpOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKaW5kZXggY2Vi
MzRjYzNmNGY5OTRlZDA0OTkxNWM3Nzg0ZjdjNjljNzEyYWJjYS4uYmJmMjVlNmZlMTExMmUxODFk
YTVhN2I2YTljNmVlMmI3NTYzYWJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBjZ2kgaW1wb3J0
IGVzY2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGltcG9ydCBiYXNlNjQKIGlt
cG9ydCBnemlwIGFzIGd6aXBfbW9kdWxlCkBAIC03LDEwICs2LDE1IEBAIGltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgdGltZQogaW1wb3J0IHV1aWQKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBT
dHJpbmdJTwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCiAKK3RyeToKKyAgICBmcm9tIGh0bWwgaW1wb3J0IGVz
Y2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKKwog
ZGVmIHJlc29sdmVfY29udGVudChyZXNwb25zZSk6CiAgICAgcmV0dXJuIGIiIi5qb2luKGl0ZW0g
Zm9yIGl0ZW0gaW4gcmVzcG9uc2UuaXRlcl9jb250ZW50KHJlYWRfZmlsZT1UcnVlKSkKIApAQCAt
MzE2LDYgKzMyMCw4IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUo
J2lzby04ODU5LTEnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1zLmZpcnN0KGtleSkK
ICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCkBAIC0zOTMs
OCArMzk5LDggQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAgICAgZGVmIHV1aWQocmVx
dWVzdCk6CiAgICAgICAgIHJldHVybiBzdHIodXVpZC51dWlkNCgpKQogCi0gICAgIyBNYWludGFp
biBhIHdoaXRlbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJpY3RlZCB0byB0aG9z
ZSB0aGF0Ci0gICAgIyBhcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgWzFdLiBUaGlzIGVu
c3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CisgICAgIyBNYWludGFpbiBhIGxpc3Qgb2Yg
c3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdGhhdCBhcmUKKyAgICAj
IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhpcyBlbnN1cmVzIHRoYXQgdGVzdCBh
dXRob3JzIGRvIG5vdAogICAgICMgdW5rbm93aW5nbHkgaW50cm9kdWNlIHBsYXRmb3JtLXNwZWNp
ZmljIHRlc3RzLgogICAgICMKICAgICAjIFsxXSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xp
YnJhcnkvaGFzaGxpYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3JlcXVlc3QucHkKaW5kZXggYTgwYmMwYzgzMDBhY2ZjZjc2NjUxMmI4OWVjZmVl
MzM4YmFjMjI5NS4uN2M0ZDAyZDZkZTZmMWEwYjBlY2NjMDVhYjAzMDRjZmZiYzEwZjk1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5w
eQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNnaQotZnJvbSBzaXgu
bW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNpeCBpbXBvcnQgQnl0
ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1zLCBQWTMKIGltcG9ydCB0ZW1w
ZmlsZQogCitmcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIGl0ZXJpdGVtcywg
UFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUKIGZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxzcGxpdAogCiBmcm9t
IC4gaW1wb3J0IHN0YXNoCi1mcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgorZnJvbSAu
dXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZW5jb2RlLCBpc29tb3JwaGlj
X2RlY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIApAQCAtMjE5LDIyICsyMTksMjMgQEAgY2xh
c3MgUmVxdWVzdChvYmplY3QpOgogICAgIE11bHRpRGljdCByZXByZXNlbnRpbmcgdGhlIHBhcmFt
ZXRlcnMgc3VwcGxpZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICBOb3RlIHRoYXQgdGhlc2UgbWF5
IGJlIHByZXNlbnQgb24gbm9uLUdFVCByZXF1ZXN0czsgdGhlIG5hbWUgaXMKICAgICBjaG9zZW4g
dG8gYmUgZmFtaWxpYXIgdG8gdXNlcnMgb2Ygb3RoZXIgc3lzdGVtcyBzdWNoIGFzIFBIUC4KKyAg
ICBCb3RoIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCiAKICAgICAuLiBhdHRy
aWJ1dGU6OiBQT1NUCiAKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0IGJv
ZHkgcGFyYW1ldGVycy4gTW9zdCBwYXJhbWV0ZXJzCiAgICAgYXJlIHByZXNlbnQgYXMgc3RyaW5n
IHZhbHVlcywgYnV0IGZpbGUgdXBsb2FkcyBoYXZlIGZpbGUtbGlrZQotICAgIHZhbHVlcy4KKyAg
ICB2YWx1ZXMuIEFsbCBzdHJpbmcgdmFsdWVzIChpbmNsdWRpbmcga2V5cykgaGF2ZSBiaW5hcnkg
dHlwZS4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IGNvb2tpZXMKIAotICAgIENvb2tpZXMgb2JqZWN0
IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVzdCB3aXRoIGEKKyAgICBB
IENvb2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVz
dCB3aXRoIGEKICAgICBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlLgogCiAgICAgLi4gYXR0cmli
dXRlOjogYXV0aAogCi0gICAgT2JqZWN0IHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHByb3Bl
cnRpZXMgcmVwcmVzZW50aW5nIGFueQotICAgIGNyZWRlbnRpYWxzIHN1cHBsaWVkIHVzaW5nIEhU
VFAgYXV0aGVudGljYXRpb24uCisgICAgQW4gaW5zdGFuY2Ugb2YgQXV0aGVudGljYXRpb24gd2l0
aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcworICAgIHJlcHJlc2VudGluZyBhbnkg
Y3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4KIAogICAgIC4u
IGF0dHJpYnV0ZTo6IHNlcnZlcgogCkBAIC0yNDgsOCArMjQ5LDEyIEBAIGNsYXNzIFJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID0gcmVxdWVzdF9oYW5kbGVy
LnByb3RvY29sX3ZlcnNpb24KICAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1ZXN0X2hhbmRsZXIu
Y29tbWFuZAogCisgICAgICAgICMgS2V5cyBhbmQgdmFsdWVzIGluIHJhdyBoZWFkZXJzIGFyZSBu
YXRpdmUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKICAgICAgICAgc2NoZW1l
ID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUKLSAgICAgICAgaG9zdCA9IHJlcXVlc3Rf
aGFuZGxlci5oZWFkZXJzLmdldCgiSG9zdCIpCisgICAgICAgIGhvc3QgPSBzZWxmLnJhd19oZWFk
ZXJzLmdldCgiSG9zdCIpCiAgICAgICAgIHBvcnQgPSByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNl
cnZlcl9hZGRyZXNzWzFdCiAKICAgICAgICAgaWYgaG9zdCBpcyBOb25lOgpAQCAtMjYyLDIyICsy
NjcsMTcgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLnVybF9iYXNlID0g
Ii8iCiAKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3BhdGguc3RhcnRzd2l0aChzY2hlbWUgKyAi
Oi8vIik6Ci0gICAgICAgICAgICBzZWxmLnVybCA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAg
ICAgICAgICBzZWxmLnVybCA9IHNlbGYucmVxdWVzdF9wYXRoCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnVybCA9ICIlczovLyVzOiVzJXMiICUgKHNjaGVtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXF1ZXN0X3BhdGgpCisgICAgICAgICAgICAjIFRPRE8oIzIzMzYyKTogU3RvcCB1
c2luZyBuYXRpdmUgc3RyaW5ncyBmb3IgVVJMcy4KKyAgICAgICAgICAgIHNlbGYudXJsID0gIiVz
Oi8vJXM6JXMlcyIgJSAoCisgICAgICAgICAgICAgICAgc2NoZW1lLCBob3N0LCBwb3J0LCBzZWxm
LnJlcXVlc3RfcGF0aCkKICAgICAgICAgc2VsZi51cmxfcGFydHMgPSB1cmxzcGxpdChzZWxmLnVy
bCkKIAotICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMK
LQogICAgICAgICBzZWxmLnJlcXVlc3RfbGluZSA9IHJlcXVlc3RfaGFuZGxlci5yYXdfcmVxdWVz
dGxpbmUKIAotICAgICAgICBzZWxmLl9oZWFkZXJzID0gTm9uZQotCiAgICAgICAgIHNlbGYucmF3
X2lucHV0ID0gSW5wdXRGaWxlKHJlcXVlc3RfaGFuZGxlci5yZmlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3Ro
IiwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5yYXdf
aGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiwgMCkpKQogCiAgICAgICAgIHNlbGYuX2JvZHkg
PSBOb25lCiAKQEAgLTI5NywxOSArMjk3LDI0IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAg
ICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5xdWVyeSwga2VlcF9i
bGFua192YWx1ZXM9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX0dFVCA9IE11bHRpRGljdCgpCiAg
ICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXM6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fR0VULmFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX0dFVC5hZGQoaXNv
bW9ycGhpY19lbmNvZGUoa2V5KSwgaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fR0VUCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgUE9TVChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fUE9TVCBpcyBOb25lOgotICAgICAgICAgICAgI1dvcmsgb3V0IHRoZSBw
b3N0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICMgV29yayBvdXQgdGhlIHBvc3QgcGFyYW1ldGVy
cwogICAgICAgICAgICAgcG9zID0gc2VsZi5yYXdfaW5wdXQudGVsbCgpCiAgICAgICAgICAgICBz
ZWxmLnJhd19pbnB1dC5zZWVrKDApCi0gICAgICAgICAgICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2Uo
ZnA9c2VsZi5yYXdfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdfaGVhZGVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQorICAgICAgICAgICAg
a3dhcmdzID0geworICAgICAgICAgICAgICAgICJmcCI6IHNlbGYucmF3X2lucHV0LAorICAgICAg
ICAgICAgICAgICJlbnZpcm9uIjogeyJSRVFVRVNUX01FVEhPRCI6IHNlbGYubWV0aG9kfSwKKyAg
ICAgICAgICAgICAgICAiaGVhZGVycyI6IHNlbGYucmF3X2hlYWRlcnMsCisgICAgICAgICAgICAg
ICAgImtlZXBfYmxhbmtfdmFsdWVzIjogVHJ1ZSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIFBZMzoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0gPSAiaXNvLTg4NTkt
MSIKKyAgICAgICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZSgqKmt3YXJncykKICAgICAgICAg
ICAgIHNlbGYuX1BPU1QgPSBNdWx0aURpY3QuZnJvbV9maWVsZF9zdG9yYWdlKGZzKQogICAgICAg
ICAgICAgc2VsZi5yYXdfaW5wdXQuc2Vlayhwb3MpCiAgICAgICAgIHJldHVybiBzZWxmLl9QT1NU
CkBAIC0zMTcsMTQgKzMyMiwxMiBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIGNvb2tpZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2Nvb2tpZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQorICAgICAgICAgICAgcGFy
c2VyID0gQmluYXJ5Q29va2llUGFyc2VyKCkKICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0g
c2VsZi5oZWFkZXJzLmdldCgiY29va2llIiwgYiIiKQotICAgICAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0gY29va2llX2hlYWRlcnMuZGVjb2RlKCJpc28t
ODg1OS0xIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAg
ICAgICAgY29va2llcyA9IENvb2tpZXMoKQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
aXRlcml0ZW1zKHBhcnNlcik6Ci0gICAgICAgICAgICAgICAgY29va2llc1trZXldID0gQ29va2ll
VmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgY29va2llc1tpc29tb3JwaGljX2VuY29kZShr
ZXkpXSA9IENvb2tpZVZhbHVlKHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IGNv
b2tpZXMKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvb2tpZXMKIApAQCAtMzU3LDI0ICszNjAsNiBA
QCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVzdCk6CiAgICAgICAgIHN1cGVyKEgyUmVxdWVzdCwgc2Vs
ZikuX19pbml0X18ocmVxdWVzdF9oYW5kbGVyKQogCiAKLWRlZiBfbWF5YmVfZW5jb2RlKHMpOgot
ICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcg
aXNvLTg4NTktMS4KLQotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2Ag
aW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50
IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShz
LCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzCi0KLSAgICAjIFB5dGhvbiAzIGFzc3Vt
ZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNpbmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4
dAotICAgICMgd2l0aCBub24gQVNDSUkgY2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUg
dGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5
dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0
dHAvY2xpZW50LnB5I0wyMTMKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Ci0gICAg
ICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCi0KLSAgICByYWlzZSBUeXBlRXJyb3Io
IlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVxdWVzdEhlYWRlcnM6ICVyIiAlIHMpCi0KLQogY2xhc3Mg
UmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiUmVhZC1vbmx5IGRpY3Rpb25hcnktbGlrZSBB
UEkgZm9yIGFjY2Vzc2luZyByZXF1ZXN0IGhlYWRlcnMuCiAKQEAgLTM4NCw3ICszNjksNyBAQCBj
bGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVhZGVyIGluIGl0ZW1zLmtleXMoKToKLSAgICAgICAg
ICAgIGtleSA9IF9tYXliZV9lbmNvZGUoaGVhZGVyKS5sb3dlcigpCisgICAgICAgICAgICBrZXkg
PSBpc29tb3JwaGljX2VuY29kZShoZWFkZXIpLmxvd2VyKCkKICAgICAgICAgICAgICMgZ2V0IGFs
bCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICAgICAgdmFsdWVzID0gaXRlbXMu
Z2V0YWxsbWF0Y2hpbmdoZWFkZXJzKGhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbih2YWx1ZXMp
ID4gMToKQEAgLTM5NCwyMiArMzc5LDIxIEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgog
ICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAg
ICMgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzIHJldHVybnMgcmF3IGhlYWRlciBsaW5lcywgc28KICAg
ICAgICAgICAgICAgICAgICAgIyBzcGxpdCB0byBnZXQgbmFtZSwgdmFsdWUKLSAgICAgICAgICAg
ICAgICAgICAgbXVsdGlwbGVzLmFwcGVuZChfbWF5YmVfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzon
LCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKGlz
b21vcnBoaWNfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzonLCAxKVsxXS5zdHJpcCgpKQogICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBtdWx0aXBsZXMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaGVhZGVycyA9IFtfbWF5YmVfZW5jb2RlKGl0ZW1zW2hlYWRlcl0pXQorICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBbaXNvbW9ycGhpY19lbmNvZGUoaXRlbXNbaGVhZGVyXSldCiAg
ICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgaGVhZGVycykKIAotCiAgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIkdldCBhbGwgaGVhZGVycyBv
ZiBhIGNlcnRhaW4gKGNhc2UtaW5zZW5zaXRpdmUpIG5hbWUuIElmIHRoZXJlIGlzCiAgICAgICAg
IG1vcmUgdGhhbiBvbmUsIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGNvbW1hIHNlcGFyYXRlZCIi
IgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0gaXNvbW9y
cGhpY19lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYs
IGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlc1swXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIsICIu
am9pbih2YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gYiIsICIuam9pbih2YWx1ZXMpCiAKICAg
ICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBFeGNl
cHRpb24KQEAgLTQzMCw3ICs0MTQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAg
ICBkZWYgZ2V0X2xpc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgogICAgICAgICAiIiJH
ZXQgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgZmllbGQgbmFtZSBhcwog
ICAgICAgICBhIGxpc3QiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAg
ICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0MCw3ICs0MjQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhk
aWN0KToKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxm
LCBrZXkpOgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0g
aXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICByZXR1cm4gZGljdC5fX2NvbnRhaW5zX18o
c2VsZiwga2V5Lmxvd2VyKCkpCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgpAQCAtNDUxLDYg
KzQzNSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAgICBmb3IgaXRlbSBp
biBzZWxmOgogICAgICAgICAgICAgeWllbGQgc2VsZltpdGVtXQogCisKIGNsYXNzIENvb2tpZVZh
bHVlKG9iamVjdCk6CiAgICAgIiIiUmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KIApAQCAtNTI0
LDkgKzUwOSw4IEBAIGNsYXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAKIAogY2xhc3MgTXVsdGlE
aWN0KGRpY3QpOgotICAgICIiIkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRzIG11bHRpcGxlIHZh
bHVlcyBmb3IgZWFjaAotICAgIGtleSIiIgotICAgICNUT0RPOiB0aGlzIHNob3VsZCBwZXJoYXBz
IGFsc28gb3JkZXIgdGhlIGtleXMKKyAgICAiIiJEaWN0aW9uYXJ5IHR5cGUgdGhhdCBob2xkcyBt
dWx0aXBsZSB2YWx1ZXMgZm9yIGVhY2gga2V5IiIiCisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBw
ZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAg
ICAgIHBhc3MKIApAQCAtNTQxLDcgKzUyNSw2IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAog
ICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgdGhlIGZpcnN0
IHZhbHVlIHdpdGggYSBnaXZlbiBrZXkiIiIKLSAgICAgICAgI1RPRE86IHNob3VsZCB0aGlzIGlu
c3RlYWQgYmUgdGhlIGxhc3QgdmFsdWU/CiAgICAgICAgIHJldHVybiBzZWxmLmZpcnN0KGtleSkK
IAogICAgIGRlZiBmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlzc2luZyk6CkBAIC01ODQsNiAr
NTY3LDEwIEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX2ZpZWxkX3N0b3JhZ2UoY2xzLCBmcyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBh
IE11bHRpRGljdCBmcm9tIGEgY2dpLkZpZWxkU3RvcmFnZQorCisgICAgICAgIE5vdGUgdGhhdCBh
bGwga2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5ncy4KKyAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYgPSBjbHMoKQogICAgICAgICBpZiBmcy5saXN0IGlzIE5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZgpAQCAtNTk0LDEzICs1ODEsNDYgQEAgY2xhc3MgTXVsdGlEaWN0KGRpY3Qp
OgogCiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAgIGlm
IG5vdCB2YWx1ZS5maWxlbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52
YWx1ZQotICAgICAgICAgICAgICAgIHNlbGYuYWRkKGtleSwgdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUudmFsdWUpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IGNnaS5GaWVsZFN0b3JhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hZGQoaXNvbW9ycGhpY19l
bmNvZGUoa2V5KSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBzZWxmCiAKIAorY2xhc3MgQmluYXJ5
Q29va2llUGFyc2VyKEJhc2VDb29raWUpOgorICAgICIiIkEgc3ViY2xhc3Mgb2YgQmFzZUNvb2tp
ZSB0aGF0IHJldHVybnMgdmFsdWVzIGluIGJpbmFyeSBzdHJpbmdzCisKKyAgICBUaGlzIGlzIG5v
dCBpbnRlbmRlZCB0byBzdG9yZSB0aGUgY29va2llczsgdXNlIENvb2tpZXMgaW5zdGVhZC4KKyAg
ICAiIiIKKyAgICBkZWYgdmFsdWVfZGVjb2RlKHNlbGYsIHZhbCk6CisgICAgICAgICIiIkRlY29k
ZSB2YWx1ZSBmcm9tIG5ldHdvcmsgdG8gKHJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlKS4KKworICAg
ICAgICBPdmVycmlkZSBCYXNlQ29va2llLnZhbHVlX2RlY29kZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZSh2YWwpLCB2YWwKKworICAgIGRlZiB2YWx1ZV9l
bmNvZGUoc2VsZiwgdmFsKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmlu
YXJ5Q29va2llUGFyc2VyIGlzIG5vdCBmb3Igc2V0dGluZyBjb29raWVzJykKKworICAgIGRlZiBs
b2FkKHNlbGYsIHJhd2RhdGEpOgorICAgICAgICAiIiJMb2FkIGNvb2tpZXMgZnJvbSBhIGJpbmFy
eSBzdHJpbmcuCisKKyAgICAgICAgVGhpcyBvdmVycmlkZXMgYW5kIGNhbGxzIEJhc2VDb29raWUu
bG9hZC4gVW5saWtlIEJhc2VDb29raWUubG9hZCwgaXQKKyAgICAgICAgZG9lcyBub3QgYWNjZXB0
IGRpY3Rpb25hcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJh
d2RhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBpZiBQWTM6CisgICAgICAgICAgICAjIEJhc2VD
b29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZywgd2hpY2ggaW4gUHl0aG9uIDMgaXMg
dGV4dC4KKyAgICAgICAgICAgIHJhd2RhdGEgPSBpc29tb3JwaGljX2RlY29kZShyYXdkYXRhKQor
ICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQocmF3ZGF0YSkKKwor
CiBjbGFzcyBDb29raWVzKE11bHRpRGljdCk6Ci0gICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2Vk
IGZvciBDb29raWUgdmFsdWVzIiIiCisgICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2VkIGZvciBD
b29raWUgdmFsdWVzCisKKyAgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFyeSBzdHJpbmdzLgor
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQppbmRl
eCAzYTYwYzJiYWJiMzlkOGQ3Nzk5OTAyMmE3ZmI0ZDE4NGNiMDE5YWE4Li5iNmYyNzQ0NzQ1MTk4
NDZkMjk4YTI5ZGEwYjNkYjM5NjE5OTliMjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3Bv
bnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRldGltZSwgdGltZWRlbHRhCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGpzb24KLWlt
cG9ydCB1dWlkCiBpbXBvcnQgc29ja2V0Ci1mcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNl
X2NvZGVzLCBoMl9oZWFkZXJzCi1mcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20g
aW8gaW1wb3J0IEJ5dGVzSU8KK2ltcG9ydCB1dWlkCiAKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKLWZyb20gaHlw
ZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlv
bkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKK2Zyb20gaHlwZXJm
cmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlvbkZy
YW1lCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBl
cywgaXRlcnZhbHVlcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorCitmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVz
LCBoMl9oZWFkZXJzCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKK2Zyb20gLnV0aWxz
IGltcG9ydCBpc29tb3JwaGljX2RlY29kZSwgaXNvbW9ycGhpY19lbmNvZGUKIAogbWlzc2luZyA9
IG9iamVjdCgpCiAKKwogY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAiIiJPYmplY3QgcmVw
cmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBhIEhUVFAgcmVxdWVzdAogCkBAIC03OSw3ICs4Miw2
IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVhZGVycyA9IFJlc3Bv
bnNlSGVhZGVycygpCiAgICAgICAgIHNlbGYuY29udGVudCA9IFtdCiAKLQogICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXMKQEAg
LTk5LDggKzEwMSw4IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgICIiIlNldCBh
IGNvb2tpZSB0byBiZSBzZW50IHdpdGggYSBTZXQtQ29va2llIGhlYWRlciBpbiB0aGUKICAgICAg
ICAgcmVzcG9uc2UKIAotICAgICAgICA6cGFyYW0gbmFtZTogU3RyaW5nIG5hbWUgb2YgdGhlIGNv
b2tpZQotICAgICAgICA6cGFyYW0gdmFsdWU6IFN0cmluZyB2YWx1ZSBvZiB0aGUgY29va2llCisg
ICAgICAgIDpwYXJhbSBuYW1lOiBuYW1lIG9mIHRoZSBjb29raWUgKGEgYmluYXJ5IHN0cmluZykK
KyAgICAgICAgOnBhcmFtIHZhbHVlOiB2YWx1ZSBvZiB0aGUgY29va2llIChhIGJpbmFyeSBzdHJp
bmcsIG9yIE5vbmUpCiAgICAgICAgIDpwYXJhbSBtYXhfYWdlOiBkYXRldGltZS50aW1lZGVsdGEg
aW50IHJlcHJlc2VudGluZyB0aGUgdGltZSAoaW4gc2Vjb25kcykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudGlsIHRoZSBjb29raWUgZXhwaXJlcwogICAgICAgICA6cGFyYW0gcGF0aDogU3Ry
aW5nIHBhdGggdG8gd2hpY2ggdGhlIGNvb2tpZSBhcHBsaWVzCkBAIC0xMTMsMTQgKzExNSwyMCBA
QCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBv
ciBpbnRlcnZhbCBmcm9tIG5vdyB3aGVuIHRoZSBjb29raWUgZXhwaXJlcwogCiAgICAgICAgICIi
IgorICAgICAgICAjIFRPRE8oUHl0aG9uIDMpOiBDb252ZXJ0IG90aGVyIHBhcmFtZXRlcnMgKGUu
Zy4gcGF0aCkgdG8gYnl0ZXMsIHRvby4KKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAg
ICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAgICBtYXhfYWdlID0gMAorICAgICAgICAgICAg
ZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQorCisgICAgICAgIGlmIFBZMzoKKyAgICAgICAg
ICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICAgICAgdmFsdWUgPSBp
c29tb3JwaGljX2RlY29kZSh2YWx1ZSkKKwogICAgICAgICBkYXlzID0ge2krMTogbmFtZSBmb3Ig
aSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIsICJtYXkiLCAianVu
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
anVsIiwgImF1ZyIsICJzZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJvY3QiLCAibm92IiwgImRlYyJdKX0KLSAgICAgICAgaWYgdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgIG1heF9hZ2UgPSAw
Ci0gICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAKICAgICAgICAgaWYg
aXNpbnN0YW5jZShleHBpcmVzLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgZXhwaXJlcyA9IGRh
dGV0aW1lLnV0Y25vdygpICsgZXhwaXJlcwpAQCAtMTU0LDExICsxNjIsMTQgQEAgY2xhc3MgUmVz
cG9uc2Uob2JqZWN0KToKIAogICAgIGRlZiB1bnNldF9jb29raWUoc2VsZiwgbmFtZSk6CiAgICAg
ICAgICIiIlJlbW92ZSBhIGNvb2tpZSBmcm9tIHRob3NlIHRoYXQgYXJlIGJlaW5nIHNlbnQgd2l0
aCB0aGUgcmVzcG9uc2UiIiIKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgbmFtZSA9IGlz
b21vcnBoaWNfZGVjb2RlKG5hbWUpCiAgICAgICAgIGNvb2tpZXMgPSBzZWxmLmhlYWRlcnMuZ2V0
KCJTZXQtQ29va2llIikKICAgICAgICAgcGFyc2VyID0gQmFzZUNvb2tpZSgpCiAgICAgICAgIGZv
ciBjb29raWUgaW4gY29va2llczoKICAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAg
ICBjb29raWUgPSBjb29raWUuZGVjb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgICAgICAj
IEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICAgICAgICAg
Y29va2llID0gaXNvbW9ycGhpY19kZWNvZGUoY29va2llKQogICAgICAgICAgICAgcGFyc2VyLmxv
YWQoY29va2llKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMoKToKQEAgLTIyMyw5
ICsyMzQsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi53cml0ZV9z
dGF0dXNfaGVhZGVycygpCiAgICAgICAgIHNlbGYud3JpdGVfY29udGVudCgpCiAKLSAgICBkZWYg
c2V0X2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9IiIpOgotICAgICAgICAiIiJTZXQgdGhlIHJl
c3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCBib2R5IHRvIGluZGljYXRlIGFuCi0gICAgICAgIGVy
cm9yIiIiCisgICAgZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPXUiIik6CisgICAg
ICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIHJldHVybiBhIEpTT04g
ZXJyb3Igb2JqZWN0OgorCisgICAgICAgIHsiZXJyb3IiOiB7ImNvZGUiOiBjb2RlLCAibWVzc2Fn
ZSI6IG1lc3NhZ2V9fQorICAgICAgICBjb2RlIGlzIGFuIGludCAoSFRUUCBzdGF0dXMgY29kZSks
IGFuZCBtZXNzYWdlIGlzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICIiIgogICAgICAgICBlcnIg
PSB7ImNvZGUiOiBjb2RlLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiBtZXNzYWdlfQogICAg
ICAgICBkYXRhID0ganNvbi5kdW1wcyh7ImVycm9yIjogZXJyfSkKQEAgLTI5NywyNCArMzExLDEw
IEBAIGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKIAogCiBkZWYgX21heWJlX2VuY29kZShz
KToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJpbmFyeSBkYXRhIHVz
aW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhvbiAyIGFuZCBgYnl0
ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAgIGlmIHRoZSBhcmd1
bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFu
Y2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAgIyBQeXRob24gMyBh
c3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNoIHdpbGwgZ2FyYmxl
IHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRyeSB0byBlbmNvZGUg
dGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFkMDMyZmI4L0xp
Yi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgot
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCisgICAgIiIiRW5jb2RlIGEg
c3RyaW5nIG9yIGFuIGludCBpbnRvIGJpbmFyeSBkYXRhIHVzaW5nIGlzb21vcnBoaWNfZW5jb2Rl
KCkuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShzLCBpbnRlZ2VyX3R5cGVzKToKICAgICAgICAgcmV0
dXJuIGIiJWkiICUgKHMsKQotCi0gICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVkIHZhbHVl
IGluIFJlc3BvbnNlSGVhZGVyczogJXIiICUgcykKKyAgICByZXR1cm4gaXNvbW9ycGhpY19lbmNv
ZGUocykKIAogCiBjbGFzcyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKaW5kZXggYzAzNzczMmE2
YmFlZjMxZDU4YjNkZmY5MjdiMDc0ZGZjZmFiYjRmZi4uYzI0OThjNGVlMWU4ZjQ1ZGU2MDRmNzEz
OTRjM2Q2ZmVlZjgyYWVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTY0LDEyICs2NCw2IEBAIGhhbmRsZXIgcmV0dXJucywg
b3IgZm9yIGRpcmVjdGx5IHdyaXRpbmcgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAiIiIKIAogCi1F
RElUX0hPU1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1
YmRvbWFpbnMgIgotICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8gYSBsb29wYmFjayBk
ZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCi0gICAg
ICAgICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQotCi0KIGNsYXNzIFJlcXVlc3RSZXdy
aXRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6CiAgICAgICAgICIi
Ik9iamVjdCBmb3IgcmV3cml0aW5nIHRoZSByZXF1ZXN0IHBhdGguCkBAIC02NzYsNyArNjcwLDgg
QEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAgIF9ob3N0LCBzZWxm
LnBvcnQgPSBzZWxmLmh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0
YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRfSE9TVFNfSEVMUCkpCisgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyIG9uIHBv
cnQgJXM7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBzb21ldGhpbmcg
YWxyZWFkeSB1c2luZyB0aGF0IHBvcnQ/IiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYsIGJsb2NrPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
c3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQppbmRl
eCBhZWExYzczODBiMTc5Y2VkMTM2NmI2NjE3MDU3NTc4YjM1ZDllMTRiLi42NGY2ZDVmYjJkYjI3
OTU4ZjMzZGQzNmI1N2I3YzE3NGRmMGJkN2U5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL29wZW5zc2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CkBAIC00
MDIsNiArNDAyLDggQEAgY2xhc3MgT3BlblNTTEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICBk
ZWYgX2dlbmVyYXRlX2hvc3RfY2VydChzZWxmLCBob3N0cyk6CiAgICAgICAgIGhvc3QgPSBob3N0
c1swXQorICAgICAgICBpZiBub3Qgc2VsZi5mb3JjZV9yZWdlbmVyYXRlOgorICAgICAgICAgICAg
c2VsZi5fbG9hZF9jYV9jZXJ0KCkKICAgICAgICAgaWYgc2VsZi5fY2Ffa2V5X3BhdGggaXMgTm9u
ZToKICAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKGhvc3RzKQogICAgICAgICBjYV9rZXlf
cGF0aCA9IHNlbGYuX2NhX2tleV9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQppbmRleCA4YjZmZDM0ZjAyYzBlOWI3MDczZDBjOTQwMTE3
MDdlYWE0ZTVhMWYxLi42YjM1MTg0NzQ5MWJmZWUxZjhlMTdhNDIxMjdjODhiZTk3YTYyOTIzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkK
QEAgLTQsNyArNCw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcK
IGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNl
TWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCitmcm9tIHNpeCBp
bXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQorCitmcm9tIC51dGlscyBpbXBvcnQgaXNvbW9y
cGhpY19lbmNvZGUKIAogCiBjbGFzcyBTZXJ2ZXJEaWN0TWFuYWdlcihCYXNlTWFuYWdlcik6CkBA
IC0xNDUsOSArMTQ3LDEyIEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgIGlmIHBhdGgg
aXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzZWxmLmRlZmF1bHRfcGF0aAogICAgICAgICAj
IFRoaXMga2V5IGZvcm1hdCBpcyByZXF1aXJlZCB0byBzdXBwb3J0IHVzaW5nIHRoZSBwYXRoLiBT
aW5jZSB0aGUgZGF0YQotICAgICAgICAjIHBhc3NlZCBpbnRvIHRoZSBzdGFzaCBjYW4gYmUgYSBE
aWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0IGNoYW5nZXMKLSAgICAgICAgIyB3aGVuIHdy
aXRpbmcgdG8gYSBzdWJkaWN0LgotICAgICAgICByZXR1cm4gKHN0cihwYXRoKSwgc3RyKHV1aWQu
VVVJRChrZXkpKSkKKyAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2ggY2FuIGJlIGEgRGlj
dFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdAorICAgICAgICAjIGNoYW5nZXMgd2hlbiB3cml0
aW5nIHRvIGEgc3ViZGljdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBl
KToKKyAgICAgICAgICAgICMgVVVJRHMgYXJlIHdpdGhpbiB0aGUgQVNDSUkgY2hhcnNldC4KKyAg
ICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgcmV0dXJuIChpc29t
b3JwaGljX2VuY29kZShwYXRoKSwgdXVpZC5VVUlEKGtleSkuYnl0ZXMpCiAKICAgICBkZWYgcHV0
KHNlbGYsIGtleSwgdmFsdWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIlBsYWNlIGEgdmFsdWUg
aW4gdGhlIHNoYXJlZCBzdGFzaC4KQEAgLTE2Miw3ICsxNjcsNyBAQCBjbGFzcyBTdGFzaChvYmpl
Y3QpOgogICAgICAgICBpZiBpbnRlcm5hbF9rZXkgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAg
cmFpc2UgU3Rhc2hFcnJvcigiVHJpZWQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIHNoYXJlZCBzdGFz
aCB2YWx1ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5ICVzIChvbGQg
dmFsdWUgd2FzICVzLCBuZXcgdmFsdWUgaXMgJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYuZGF0YVtzdHIoaW50ZXJuYWxfa2V5KV0sIHZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tleSwgc2VsZi5kYXRh
W2ludGVybmFsX2tleV0sIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
ZGF0YVtpbnRlcm5hbF9rZXldID0gdmFsdWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGls
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggNjRiMDhhMjdhYThiMzNkNGNlYTg2Nzdi
MzBkMzMwOTZjYWUyMTJkNS4uYjAwNWI0MTdkNzQzZjIwZjA2NWMxOTVlNzQzZDhhYmNmYjA0YWRm
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxz
LnB5CkBAIC0xLDYgKzEsNDUgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIAorZnJvbSBz
aXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKKworCitkZWYgaXNvbW9ycGhpY19kZWNv
ZGUocyk6CisgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBhIHRleHQgc3RyaW5n
IHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGB1bmljb2RlYCBpbiBQeXRob24gMiBh
bmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCisgICAgbm8tb3AgaWYgdGhl
IGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBi
ZWNhdXNlCisgICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29kZSBwb2ludHMgcmFu
Z2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCisgICAgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0
aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuCisgICAg
YmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3aXRob3V0IGFueSBl
cnJvcnMgb3IgZGF0YQorICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBpc28tODg1OS0xIChv
ciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJm
YjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMs
IHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJp
bmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCJpc28tODg1OS0xIikKKworICAg
IHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtl
KTogJXIiICUgcykKKworCitkZWYgaXNvbW9ycGhpY19lbmNvZGUocyk6CisgICAgIiIiRW5jb2Rl
cyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgor
CisgICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4g
VGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKKyAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMg
YSBiaW5hcnkgdHlwZS4gVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgb2YKKyAgICBpc29tb3JwaGlj
X2RlY29kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAg
ICAgICAgcmV0dXJuIHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAg
ICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKworICAgIHJhaXNlIFR5cGVFcnJvcigi
VW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtlKTogJXIiICUgcykKKworCiBk
ZWYgaW52ZXJ0X2RpY3QoZGljdCk6CiAgICAgcnYgPSB7fQogICAgIGZvciBrZXksIHZhbHVlcyBp
biBkaWN0Lml0ZW1zKCk6CkBAIC0yNSw2ICs2NCw3IEBAIGRlZiBfb3Blbl9zb2NrZXQoaG9zdCwg
cG9ydCk6CiAgICAgc29jay5saXN0ZW4oNSkKICAgICByZXR1cm4gc29jawogCisKIGRlZiBpc19i
YWRfcG9ydChwb3J0KToKICAgICAiIiIKICAgICBCYWQgcG9ydCBhcyBwZXIgaHR0cHM6Ly9mZXRj
aC5zcGVjLndoYXR3Zy5vcmcvI3BvcnQtYmxvY2tpbmcKQEAgLTk5LDYgKzEzOSw3IEBAIGRlZiBp
c19iYWRfcG9ydChwb3J0KToKICAgICAgICAgNjY5NywgICMgaXJjK3RscwogICAgIF0KIAorCiBk
ZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgaG9zdCA9IGhvc3Qgb3IgJzEyNy4wLjAuMScKICAg
ICBwb3J0ID0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBpbGUuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVj
dG9yL2NvbXBpbGUuYW55LmpzCmluZGV4IDZjNDEyMzk0M2U3NzVmNDZlODU0YjJjMDcyNThhN2Qw
OGM1Y2Y2OTIuLmU5NGNlMTE3MTczNjlmYjY1ZWYwNGM2ZWM2YTEzZGExOTI4OTMwNzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5h
bnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNzZXJ0X01vZHVs
ZShtb2R1bGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS1iYWQtaW1wb3J0
cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCmluZGV4
IDM3MDcyNDM0MjA4YTU4ODE5YTBhNDFmYWE2YTE5MTA3MDRjMTA4NDUuLjMwMjUyYmQ2ZWViM2Fi
OTcyODYzMzFhYTc2OTY4MjI1ZGFkNWE1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50
aWF0ZS1iYWQtaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1p
bXBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0
PS93YXNtL2pzYXBpL2JhZC1pbXBvcnRzLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0
YW50aWF0ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUuYW55LmpzCmluZGV4IDAyMThk
ZTJiNDUyOTJjMjNlOGZjYzcyMGRiZjhjMmM0YTVjOWI2OTMuLjgxNTJmM2E1NmYzZjQzOTk5NzY1
YzM0OWU0ODhkZGIzMTM0NDIxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUt
YnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL211bHRpLXZhbHVl
LmFueS5qcwppbmRleCAyYzUzZTM2MTFlMDQ0YzhiYTQ0YTVjMDQzNmQ0NDA5YmM5ZjFhZjQyLi40
YjA2ZDFkYTNjNDliOTM0MDZlOTllY2IzZTZhNzJjYTc2YzlkMWJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3Ry
dWN0b3IvbXVsdGktdmFsdWUuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5hbnku
anMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNt
L2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
Y29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCmluZGV4IGE1MjNhY2M3OTI1YzllZjc2NDZkMjk2
YTc4YmY5ODMxZWRhODZkNzEuLjhiNGY0NTgyYWIyOTg3NzMyZDQwNDk5NDg5OWU5YTc3NjYyZTJh
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9y
L3ZhbGlkYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlN
b2R1bGVCaW5hcnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwv
Y29uc3RydWN0b3IuYW55LmpzCmluZGV4IDI3MDE0OWVjMTQ0MzA0NWU0MTM0ZWViODA0MDM2NTFh
M2QwYTEyZmYuLmIwMDhlZjMwMTYwMWViNGU0YTI1NTU3ZWZhZjFlYzEzNWNlZTEwYjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2Fz
bS9qc2FwaS9hc3NlcnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9HbG9iYWwoYWN0dWFsLCBl
eHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3Ry
aW5nLmFueS5qcwppbmRleCA1ZjY0ZDcyZGU5ZDlkZjRhOTllNDgyY2RlZDVhMzBhYzFjOGEzNDNj
Li4zNTljNDI3M2I1YmQ3ODY3YWNkYTQ0ZmM0NmE2ZGRjMDBhY2M5NzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xv
YmFsL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCBhcmd1bWVudCA9
IHsgInZhbHVlIjogImkzMiIgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCmluZGV4IDY5ZjBlNDYzNzlmZmQyMGEzYjli
ZmIxOTA0ODczNzZkNjE2ZDkxNmUuLjQzZDg0NzRhMjVkMTgyZDc0MjI2NTRmNjE3NjliZjg3ZDNh
YmEyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92
YWx1ZS1nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3No
ZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRl
c3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1
ZU9mLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKaW5kZXggMGQ0ZGU5M2E2YmQyMjlmOGQ5
ZmFiNzk0MWIyNGExOTQ0ZGM2YWE3OC4uMDY5NWE1YTYxZmJjNmUyNDUwMTlhN2JmNDI4MTBjYjg0
YTBkZmEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1ZU9mLmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVl
T2YuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAidmFsdWUiOiAiaTMyIiB9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1i
YWQtaW1wb3J0cy5hbnkuanMKaW5kZXggZTg4ZDAyYjY0OTY4NGIwZDdjZWVjYjBkMGEzZDFlODc1
ZGQyMWM0OS4uZTRhNWFiYjhlYjIxNjlmYmNlMTdiNjBkYTI3MzEyYmE5NGEwYjlkMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2Uv
Y29uc3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTog
Z2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpz
c2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpz
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYmFkLWltcG9ydHMuanMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2luc3RhbmNlL2NvbnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9y
LWNhY2hpbmcuYW55LmpzCmluZGV4IDY5NWIwNzhhMGY5NDc4NjIwNzE1YjBmZWYyNTlmNzIwNzQz
N2YyOWQuLjFhYTQ3MzliNjI5NGQwMTM3ZWFkMzA5N2Q1ZGJjZWMzZTNhMWYyMjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1jYWNoaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3Ry
dWN0b3ItY2FjaGluZy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rp
b24gZ2V0RXhwb3J0cygpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
aW5zdGFuY2UvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IDA2YzZkN2E4OGMwOTIzNWFiZDQwYTcx
YTM3OWYwZDgwMDVhMzM2MTguLjI2MzkwZWJkMmNkYjJlNGM0OGRjMzBiZDUwZjZlNTc5NGU4MDc5
MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2Nv
bnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2Ny
aXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvZXhwb3J0cy5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvaW5zdGFuY2UvZXhwb3J0cy5hbnkuanMKaW5kZXggN2M4MWE0MTI5NWIwYTFmMmUyMGVlNzk3
MjI5MWUxMDk5ZjIzNzVmZS4uNmRjZmJjZWU5NTBkODcxY2Q2ZWUzZTVhZjk0YmVlMzlmZDhmNTFl
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRz
LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlNb2R1bGVCaW5h
cnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5n
LmFueS5qcwppbmRleCA3MDFlYzhmOWJhZDk5OGJjMjYzMTBlNzRhOGE3ZTIzZjJjYmY1YzRkLi41
NDdhOWNhODI5NWY1YjY4MTNhM2QxNzliYmZkM2NhOTA1NGU0OTcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFu
Y2UvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0cmluZy5hbnkuanMKQEAgLTEsNCAr
MSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20t
bW9kdWxlLWJ1aWxkZXIuanMKIAogdGVzdCgoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9pbnRlcmZhY2UuYW55LmpzCmluZGV4IDg4OTQwYmU1MWE3ZjU3MjdjMjdlMTY3ZDllMTBh
YmJhZWIwNGEwNmIuLjQ1NTFlNmU2ZTNkNDNlNTRlMGRiYjZhNjRmMDdmYjU3ZWY5OGFjNDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCkBAIC0xLDQgKzEs
NCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRp
b25zLmpzCiAKIGZ1bmN0aW9uIHRlc3Rfb3BlcmF0aW9ucyhvYmplY3QsIG9iamVjdF9uYW1lLCBv
cGVyYXRpb25zKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZl
ci5hbnkuanMKaW5kZXggYTgzNWU2NTExYTBhNmM1M2MzNmEwZmZkODE0M2Y0YTFhNzM4OGVjYS4u
ZmIxZDEyMDBiODkyYmUxZWI3YWVhNjZkYjM0M2RiNDkxZTkyMWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9idWZmZXIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYnVmZmVyLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS5qcwppbmRleCAwM2VlZDUyNzA4MzFiNTA0ZTZhYjIxYmNjOGVlMzZmZGZkMDUwMzA0Li5mNTA1
NzE5ZDJjNWU0MTFjYTlkZWJjMDA3NmEyYjQwZGVkMDIwZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0
aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfTWVtb3J5KG1lbW9yeSwgZXhwZWN0ZWQpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCmluZGV4IDBjZWE4
YjRiMWE2MzNmMWY2ZGE5MjMxMzMyZTM5NGI3ZmNkNzYxOTcuLmRiOWU3ODEzNjE3Yjk2NDcxYTkw
YzM1Yzk2Yjg1ZjA5MjY5OThkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIGZ1bmN0
aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihhY3R1YWwsIHsgc2l6ZT0wLCBzaGFyZWQ9ZmFsc2UsIGRl
dGFjaGVkPWZhbHNlIH0sIG1lc3NhZ2UpIHsKICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L3NwZWMvaXNzdWVzLzg0MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L3RvU3RyaW5nLmFueS5qcwppbmRleCBiYjkwODFkMTg2MTdlMWFmNzI0MjRlYTcwMGQz
MGU1Y2IwZWZkOThkLi5mNDA1OWY3NjU3NzIyNzU5Y2U0ZmM5NTBjNDg1MDkxNmQxMDJkZWRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5q
cwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25z
dCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVj
dG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IGFjNGNkZTJlMzE3ZTVl
Y2IxODdhOTY0ZjRmNTJmNmE3ZGM3NmRkOTguLjk5NzhmN2U2YWM4ZjJiMTFiY2FjYTgyM2I4Nzdl
YTgxN2RmZTdlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpz
c2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1
c3RvbVNlY3Rpb25zLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCmluZGV4IDhj
MjE1ZDE3YmQyNTgzNGFkMjk4M2U4ODE3MjM3MWM0ZWUxZjY1YzIuLjQwMjk4NzdlOTJjN2I4YjNi
ZDMyMTg0ODUzOTQ3NWMzYWY1MmVkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAot
Ly8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1i
dWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVk
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5q
cwppbmRleCAxMzI5YzZhNjAyMWYyZDU5MDJmNzU5ZTRkYTkyZDIwOTk3NGRhNzBlLi42MGIyYzA0
ZjQzNjk2OGFjMTE1NTc4NjAyNzVkNzViYzg5ZTQ5ZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9y
dHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBN
RVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxk
ZXIuanMKIAogbGV0IGVtcHR5TW9kdWxlQmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRz
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tb2R1bGUvaW1wb3J0cy5hbnkuanMKaW5kZXggOWE3ZDYxMTU5ODZlYTA2NmM1MDc1
ZDE0ZjYwZDNjYjAyNzdhNzhhMS4uZDY3NTRjOWVmYmRjNDRjZDk2MzcwOGY1Yjc1MWYxNTQ2ZGRm
Y2QxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0v
d2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9Nb2R1
bGVJbXBvcnREZXNjcmlwdG9yKGltcG9ydF8sIGV4cGVjdGVkKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxl
L3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCmluZGV4IDdkZDg1YTFjNGFj
NmU1MjVlMWU0YzBmOWJhY2MzMjk1ZTdlZGE3ZmMuLjFjMjBjZDYxMDhjODRlNTZlMjE5ZjBlNzM4
ZTA2NzJjZDdjMmQwNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hl
bGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1F
VEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIHRlc3QoKCkg
PT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rv
ci5hbnkuanMKaW5kZXggNWM5YTZmMTNkOTFlYmEwOThhYjU5ZTg5MzE0NTIyMjM3NWUxYjZjYy4u
ZTllNzdhMTMyYjc2YTQ3OWEyODk1YzE4YzY5YjQwMmJlNzFmZTNlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQg
KzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3Nl
cnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9UYWJsZShhY3R1YWwsIGV4cGVjdGVkKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKaW5kZXgg
NGUwYTVmOGMxMDQ4ZjRiNzcxYzM4ZmYwYWVmOTkxMGVkMzdiMjVjMi4uMmUxNjM0NmM2NDc5ZWM1
NWUxNmEzMzQ5ZjEyYjZjYTRiNmRhN2Q0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55Lmpz
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS9nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2Jh
bD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxs
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8g
TUVUQTogc2NyaXB0PWFzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVmdHlw
ZXMudGVudGF0aXZlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMK
aW5kZXggZWRmYjMzNDk5MWUwNGQyY2FiZmVlYjQ0MjZhZDA1Mzc5NmM2N2VjNS4uODVkY2JkMWQw
MDY0M2EwMjJkMDY2NTI2YjVjMDA4MWM5YzZlMGJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVm
dHlwZXMudGVudGF0aXZlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1yZWZ0eXBlcy50ZW50YXRpdmUu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD1h
c3NlcnRpb25zLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1jb25zdGFudHMu
anMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMKaW5kZXggZjU0M2Nj
NjIwYmNjNGNjYzBlNzA2ZDBkY2I4ZTY4YWY0MjEwYTI0ZS4uM2IyZWU1ZmE4ZWY2NmRkNmE3ZDAy
YzU5NzY5YTQxMzAzZTZhMWM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJs
ZS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9YXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBudWxscyhuKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFi
bGUvbGVuZ3RoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCmluZGV4IGY0ZTExNDg0Nzk3Mjkw
NjFhN2Y0MGU2ODMxMWFkZDQzZTBjNTFiMWMuLmE5ZWYwOTVkZWQ0NDU4MWQ0NGRlY2U1OTU3NzU3
N2ZhNmZlMjU0MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5n
dGguYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IHRoaXNWYWx1ZXMgPSBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L3RhYmxlL3RvU3RyaW5nLmFueS5qcwppbmRleCA3MDhjMTdiM2FjYWRmZGUyYzlhYmRhMzAwYzJk
NTdlNjFmNWE3MGNlLi44YTA5ZjI4MzJjMWQ2NDU5NDE4MmZhZTQ2NTFiYzliMDdhNTA4ZDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMK
QEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3Qg
YXJndW1lbnQgPSB7ICJlbGVtZW50IjogImFueWZ1bmMiLCAiaW5pdGlhbCI6IDAgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy9iYXNpYy1hdXRoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy9iYXNpYy1hdXRoLmFueS5qcwppbmRleCA0NWU0ZGFkYjNi
OWNlNWZiZWFkODhkYzg1ZDY4ODMyYjZkZDA0YjVhLi40NDdiY2RlZmJlNWZiNzg2ZGUzMWZhZmZj
OWM0NDYyOTQ4ZjRlMmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2Jhc2ljLWF1
dGguYW55LmpzCkBAIC0xLDUgKzEsNSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIK
IC8vIE1FVEE6IHNjcmlwdD13ZWJzb2NrZXQuc3ViLmpzCi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVk
d29ya2VyLHNlcnZpY2V3b3JrZXIKIAogYXN5bmNfdGVzdCh0ID0+IHsKICAgY29uc3QgaXNTZWN1
cmUgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpLnNjaGVtZSA9PT0gJ2h0dHBzJzsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1v
dW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKaW5kZXggODM5N2ZhZjNjNTc1NzNiNmVk
NzBjN2FiY2I3ZGI4NzBlMmY1ZmYxYy4uNTNjYTY3ZTI2OWJmZTZhZGFiMTZiYjJkNjdjNWI2Y2Q0
Zjc5OTg3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKQEAg
LTEsNSArMSw1IEBACiAvLyBNRVRBOiBzY3JpcHQ9d2Vic29ja2V0LnN1Yi5qcwotLy8gTUVUQTog
Z2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsc2hhcmVkd29ya2VyCiAKIGFzeW5jX3Rlc3QodCA9PiB7CiAgIGNvbnN0IHVybCA9ICd3c3M6
Ly8nICsgX19TRVJWRVJfX05BTUUgKyAnOicgKyBfX1NFQ1VSRV9fUE9SVCArICcvZWNobyc7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9pZGxoYXJuZXNzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL2lkbGhhcm5lc3MuYW55LmpzCmluZGV4IGQ0NWU1MmUyMzQxYjhjZTQzZDNl
N2UxNDRhZmU1MThlYmE3NGMxNzMuLmQ4MmE4MjYzNTc2NmIxOWFjOWE5NTZkNDAzMjdiNGIyYjlh
MjUwNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2lkbGhhcm5lc3MuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2lkbGhhcm5lc3MuYW55LmpzCkBAIC0xLDQgKzEsNCBA
QAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9X
ZWJJRExQYXJzZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMK
IC8vIE1FVEE6IHRpbWVvdXQ9bG9uZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc3luYy1uby10aW1lb3V0LmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5bmMtbm8tdGltZW91
dC5hbnkuanMKaW5kZXggZDIzZmJiOGM2NmRlZjQ3ZTMxYWQwMWFhN2EzMTEwNjRiYThmZGRiZC4u
YWM3M2UwYmYwNWQyMzA4NTNkMzQ2NGViM2M3NTNhM2U0Njk0Y2QyNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvc3luYy1uby10aW1l
b3V0LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3hoci9zeW5jLW5vLXRpbWVvdXQuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTog
Z2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRBOiB0aW1lb3V0PWxvbmcKIAogLy8gVGhpcyBpcyBhIHJl
Z3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9jcmJ1Zy5jb20vODQ0MjY4LCB3aGVuIGEgdGltZW91
dCBvZiAxMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400533</attachid>
            <date>2020-05-28 17:59:11 -0700</date>
            <delta_ts>2020-05-28 19:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200528175910.patch</filename>
            <type>text/plain</type>
            <size>2339697</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVk
LWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggMTYwMGNhMjJhZDQ2
MjA3YzExMTQ5N2U1YTBkM2QxMzRjOWE5NDA2Zi4uM2E1MjcxNjNhOTA1M2IxZjE3OGY5ZTk5NzFh
MjBhMWVmZTE1ZTRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQt
Y3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNl
c3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN25vbmUlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5
PSYjeDI3O25vbmUmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVj
dGl2ZSB3aXRoIGEgdmFsdWUgJ25vbmUnIHNob3VsZCBibG9jayByZW5kZXJpbmcgaW4gbmVzdGVk
IGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzogVGhlIElGcmFtZSBz
aG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0IHdhc24ndC4gUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2Vz
dG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVz
dGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggYmQ1YjMwODEz
NGJjNTY1NDY1NDAxNWFlYzhhZDQ0MTAxYjY4NDQ2Ny4uZGUzZjViMWFkNTgxZTQxNDU5OWY5OGRk
NTdjMGNiMmEwZDIzYWRlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMv
ZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0
ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgw
MS9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1h
bmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN3NlbGYlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9s
aWN5PSYjeDI3O3NlbGYmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRp
cmVjdGl2ZSB3aXRoIGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1v
cmlnaW4gbmVzdGVkIGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzog
VGhlIElGcmFtZSBzaG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0
IHdhc24ndC4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxm
LWFsbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFu
Y2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGNhMzUzYTg0NzAxN2FiYjY5YWE3ZTQ2OGM4NWVlNzk5YmYxM2IzMGYuLjE5ZWI5MWYzNzgyNWEy
NGM5NDcxNTJhNDAxYjY1NjM2NWU2MmZhMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUt
YW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAogCiAKLVBBU1MgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGgg
YSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQg
ZnJhbWVzLiAKK0ZBSUwgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2
YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJh
bWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGJsb2NrZWQuIEl0IHdhcy4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZp
Z2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24v
amF2YXNjcmlwdC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CmluZGV4
IGExYmMzYjY0NDJlNmY1ZjliNmFjYzU5ZWQ5NTIyZDQ3NTMwOTk2NGIuLjhiMTM3ODkxNzkxZmU5
NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdh
dGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5o
ZXJpdHMtY3NwLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxIEBACiAKLUZBSUwgVmlvbGF0aW9uIHJl
cG9ydCBzdGF0dXMgT0suIGFzc2VydF90cnVlOiB2aW9sYXRlZC1kaXJlY3RpdmUgdmFsdWUgb2Yg
ICJkZWZhdWx0LXNyYyAnbm9uZSciIGRpZCBub3QgbWF0Y2ggZnJhbWUtc3JjLiBleHBlY3RlZCB0
cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L2ludGVncml0eS5zdWIuYW55LmpzCmluZGV4IGQ0ODdjMzczOGFjNDk4ZjRiOTM2ZTI2OWMwOTNj
YTJiYWQ1ODFjYjAuLjU2ZGJkNDkwOWY2YTQzZTQ4OWVlNWI2YzUwMDU0ZDJiNDRkMDcwOWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3V0aWxzLmpzCiAKIGZ1bmN0aW9uIGludGVncml0eShkZXNj
LCB1cmwsIGludGVncml0eSwgaW5pdFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CkBAIC0yMCw3
ICsyMCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIGludGVncml0eSwgaW5pdFJl
cXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CiAgICAgfSwgZGVzYyk7CiAgIH0gZWxzZSB7CiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwsIGZldGNoUmVxdWVzdEluaXQpKTsK
KyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1
cmwsIGZldGNoUmVxdWVzdEluaXQpKTsKICAgICB9LCBkZXNjKTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRp
b24uYW55LmpzCmluZGV4IDE4MGQzMzg2NTkwMjFmZWQzZDI5ZTA4Y2NlYTQxNWNjNTg1MmZlZDIu
LjM3YzgyMWNlNzNmMjVjNWUyYzVkMDJhNjg3ZDZhODAwNmVmNTA2MGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zdHJlYW0tc2FmZS1jcmVhdGlv
bi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9d29ya2VyCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcgogCiAvLyBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBzdHJl
YW0gY3JlYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8KIC8vIE9iamVjdC5wcm90
b3R5cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbAppbmRleCA3Y2MyMmEyOGMyMGMwMWYyYzYwMmI2Yjc5
ODE0ZmM2ODQ0MDU0MzA2Li4zZWI4OTNmNGU2NWMzYzBlNTU2NzY4OGJkMzA3MjViYzIxZWI0MGNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNCArMSw1IEBACiBzdWdnZXN0ZWRfcmV2aWV3
ZXJzOgogICAtIGpncmFoYW0KLSAgLSBnc25lZGRlcnMKLSAgLSBqdWdnbGlubWlrZQorICAtIEhl
eGNsZXMKKyAgLSBzdGVwaGVubWNncnVlcgorICAtIEx1a2VaaWVsaW5za2kKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMv
Y2FjZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LmtleQppbmRleCAxYTEyMWRmYWM5NTJkZmU4ODg2YjFiNWU0MWU3
YzczMTFkNWYwYjMyLi40NDVhYWUxYjlmYjk3NjBlMzkwZTdlNGQwNDc2YTgwOGM0ZTNmODBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CkBAIC0xLDMwICsxLDMwIEBACi0t
LS0tLUJFR0lOIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi1NSUlGSHpCSkJna3Foa2lHOXcw
QkJRMHdQREFiQmdrcWhraUc5dzBCQlF3d0RnUUltaW5IVHprWGhyc0NBZ2dBCi1NQjBHQ1dDR1NB
RmxBd1FCS2dRUVhWd0pjcVd6ZTZBM1ZZdUFTMEJQZ3dTQ0JOQ1J0dnJvQjZxcm9RbEY1OEhFCi01
U0pIRi9qUVJKUnhmMDUxbHJxK2pmVXhNN2tadWNOTitteVYyemlMb2dhNk9RTTU3OUQ4dnk4dHFr
ckxwbnNUCi1jWGtnSHV3dEJKRjQ3dzFZQVBHR0FSZTNLc3YvMkM5c1VWY1B2bW5WcnpTTVg4NkVz
ZXJmZnFNM3pmd1oySDNTCi1qeFREU3lJdkpVVSs0WGZ4cldlZ1RpUVFQTnFEeUxmTzVkQmZhdFQy
enRYQ211M0JGaXB1aEdGcHd3Q0ppcktyCi0xeGI2WFBFdVQwUEN6VE5wZVNVUnBYRktITURNa2Nq
T2tOQVV5Z0lFdytMZzdldFZmTGNzZ0J1ekVBM1JXd2YzCi1PTVkxbVRCSmx2eDZ6WnhkWDdhMFFt
eGVyVURrRFM5WVlBRUdTRmErRng2Y0dXNVB5ZWVmOXh0bEh4WkhpK3BtCi1UeEN3Y3ZKeVhxZUQ0
Z1dtM3MxZ3dPamk1V21Ydm8yRWlyY3hmU0trOFRVd2FweGZDWVFiT2pRSVBhSG5FR29hCi1DUWhT
RWdEWDV1ZndzWEo5L3BTUDZralcreStmMGduaEhWdUtKS3NPQm1qZzZpcXducUVodyt1TkZXS0ts
L01vCi1URlQ3Q3JheUpUdm8rOVVkUVRKVjlNQkFzTVVRUzdkK0hIOWtOT0FuL2hmbUV6ekdVS1ZU
WjB6SWQwZktIMTNwCi1Ubm9ZZ01ZYm0yVXJuME5YQkZPOFJ2elkzS3BLeVJoTWNPTEt4a1BWVWpL
VUE1QnVBdjZyY3ZNZmxJNkhuNXdVCi1xUE0rdUVDU2dkT25OZUltaTFGZitjVzhkVEdHUmIraWhh
K0VuQUJvWDN3UjVPdnpnQ1lIZUVOSmIzMkZVb1ZzCi1JRDJUNU1adFFOQXJraXMveFdaN0p5UGJt
c1FvMnd5aUZMYXNYOFdnaCs4TWdGeG9scHZqbFgzL1FkVFRKcUVjCi1yb2ZWR09QT21mb0hvM2VZ
TkpPbExiYUpUREllOE9ySzQ5UElldTFnbTh6cUIyV1lxbUYvM0FZeTRJQUl3VVl1Ci1yYlB3VUM5
SHljZVJQU1llUE05V2YxeE0ycHJvSzNubXA2YXBkSENSTmpiZDQ2ODlFTG1COTBiMmF3Nk5GaWFt
Ci0zdGFLUG1GTGIvdnQyWXhncU90YWdQclRsYzFRTEhCS3JzbnBnL0JoY0JqdXBxUktHRm1YQ0p6
aVBJYURLdkFzCi1qdGc0S0RvOGpOSXhtd1FBd0VWNCthSDBoaE11bXhhOHlhWG9DLzNHNkp4RDJz
ZG9yYU9wK3ZyVHpqVU1rSW9jCi14THFXbDhHSFZMRjA5ZlpKNFN0SmZJV0lPbW1waWNTeFcxdkRJ
Q2FadVUraVB3bE5PekY3c2VQUmtpeGJhckhyCi1pcVRsTEcvLytIdXEvbjlJUnhoem1TT3VyNjNX
TVhGUnkwc0tXNVcrdVE5eHNuVjhTZGp3Um1BR0x0blpIcTRZCi1OT0NRLyt5T1JsNHl4a1B2VjAx
SHlrQWw0Q1J0UEJHUis0WkM1TktocHloSmJ1NldjcXdpWHlBZWhVL2NQZ0wrCi1oOE53RW95UCtP
SHJ2RVlkeTRvY0JuSnEvNDM2V3d6ZldpczhuSUc0YlNsRDNEU0VnSkYvUVVtcTRpL0VVcS9BCi1E
NlNmemJGcFBHdFRqM0taNkQ4RFByd1dHNjhPQ0ZzcVJXOVlFdlVJSzhKVDI2NUJOM016STVpMC8r
azRDZEFnCi1hU2FpQzk3cWc3cUphVk05YjlFSHNjVVhSL2ZlRnh2TzVRa2trWTVDVFUzQnhiMHMx
STRSdzJNWW9BZE1HdGJBCi02bWR6bVJWWW9SdjlOTWR6TDZ6T1RvUFU2b09nNm1iakhnWlFnTmQ3
dzhHdFRGVytzZnNsTE9YWEM4ZXJ6YkhsCi1CeVFKR2NGR3RLVEJVRCs3VkhaaHB3TTdiUE9idHp5
QTJyMFViUzFReDBJem52dWJkRlZjWHlFN2RJalc3Y0FnCi1JYkJ6S2VpRVJ3cHUzck1xMmJZVlcz
REEzM1ZsclRmcGpYdWpoSHYxaVgxNWk2cXNXZDdPdFp3Nng3VGNjSDFaCi1qZG1oOVhCOXhEeWRu
c3MzdTlEd0dSRU1ZQzlUZFBaWS9udWk2bGdDampPaGFUYXVuTXVpZ0ZCTVdVQmtEbEliCi11anUr
QXR2K1BTQlQ5RG1UeVRRR2hQWlJJdz09Ci0tLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVkt
LS0tLQorLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0KK01JSUZIREJPQmdr
cWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSUF3c3VaN3lKeExzQ0FnZ0ENCitN
QXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDQ0tSc3dMWHNoOVBCSUlFeUtPdDQy
bUxlTDZoDQordVBCaDYzZG9Ib3FKeEI5NXB3cHRSNjNmcXAyUmZ2WlVVemZyV25JMmRubjB4UnRS
Y1BtZjUyQlI0c2xpSUpKeg0KK0sraDEwVk80YWlsRzRtTWVQKzJWUEhGdWZsUW41eGdTQzVWZDdq
ZWRWMFZleWNNcjBnZloxWGJjTXVWSXJyVzINCit3UVZNL0RiYjNBNk5IVDV5VUErWlR5YW0zU1lo
MFZyQkxwOEZRbi8yMnhpdm1qQzVqcVpiRnF2VWwrTm5CRjBIDQordTkrbWRDbmxZcWNxOXFUMWIy
aEMvVlZTZU95aUNaWFZFRThYbjd0ckxHbFNHSWpmZ05XbWRISllhZEw5SnVXWA0KKy81eEVVMy9N
WnRmajdEZmFyWXZKWU9OVjlwbkJFdXVjV1VqUkpnYlBnTXVxWjJzYjdJcC85L1haSHZnRmdWcnkN
CitMSUplc0xpRmxrOEVtZTdrREg4RVBueTRJNVJVdXVmdE9mWHo1c2VtQ09pUUtxc1Y1aktsQnlQ
eFlNZGgrQURWDQoramlvMHVFNTVMYjRNR2ZoeFd1emNXRC9Sb3Y2SXdJZzB1dVhXcEV6aktyMEp5
VmwvODR3Z25pNUhxMU85RWdlWQ0KKzA3VkJRT3VpRXptaGxtVkdsa3FpMS9rRkFaK1BrZE5VU043
SlBndm5WQS9WZ2ZpZ3RsY0lKOWFtcHNxYXUyeW0NCitLV2gzYlVLaVYwZUpWUEEzL3R2RWRCb29Y
bis4RFFidDQ0c3lEN1A1Mk1mbC9iUzJMYzV5Nm1QdHRWTy9tRHp1DQorWGc2Ym9ETnphWEIvSERV
RjJUZDhSYWNrdnFySFBLS1hYb0F6OXc4c3hZRkdlOEpWZXVPd2ZPNUhYNkpIeXNjZA0KK2NLcUVa
Tk1CTGp4ZWRwTDBFWk16cDcyYnNlMVhjdnZJdi9YQ2habmZLMllmaGZ4Y2wzUklpVFB4M3M2RmVl
SW8NCitUc3JOaVRGOGQvY09MSzExLzAyaEVVZG8ycjVqZzhQSG9abVhsMEE4bjZhYlhWY09uV2k1
TTF0RWpOZHV3S002DQorQVFVUlk3WjlBbFNzUVh3NnhqMno2MHppOCtJd3UzdGdENEhQN05xd1pS
c0Q5OWxhMDlIZGNJMGNTbWVhRU9URQ0KK0J5clZ5cW5PQnI4WkpWTUx1ZTR5TTcrQmRsR1VhYlRX
KzB1MHF5OVExQXh1ZVF6VW1FNFZGS3RmalJxSVVsQUENCis2SHJmRXNPZTdIUkxLeG5kY3RKN3VC
WEk1Z2h2M3pHZDB1Wm1SeWpYc0VqR3IySnFhWmExSGV4cmFCL0dIWEdEDQorOVBaVEpXUzFtTDhL
RTNvMWhTajF5VGdsaGZoSjdXZi9lcmZCR3pjdFVQS1FCa2twelZxWk1TNlkyQUlIVEI1Rw0KK2Iy
d294L2x3dkZBMmNsb2RvVDN0YmVEbWhOSHhJdUdsT25ZdGNQaElMRDdNUmVETnVsMVI5SEwvU3NX
N0FCNisNCitxNlI1NFBzU2NoTmdGaExTZHowcTZhelhVbGs2bWNGNUJnUk92Z3lvYSs3R3YwVWxi
U1FiVXVWdUxEMGszU01VDQorRG1wci93OU9tcVVzT2N6WWxuUFdvdmgrR2JWaHplK2VGVE5JR1Yv
d1ZOTkpRUkMxUlVOckMvZThhZjRjcC8vcg0KKzZqaVE1ZU5mOHJWQjhWTWVNWFJVSHhQd1JYdEZW
RUN1dVRkTWRQbjRVMlRISm8rNDVaMGJWRzl5dFo2Q1VQMG4NCis1NkRXSDYvZEtlSWl2RUZ6L2JZ
NG9DWm1zSWZrak5lbzU0NUdSZmhGTk5HUmdyZGpDZXZyMHBKdFk0aDVWakkyDQoraVBVTDg1UjB4
emU4b0NUMGEvR0hZNlh2cGJuUno1cXJ5MWMyRG9SM0llRFFrcTl5UWpBN1dhdXRUYnA4VXpDZA0K
KzFTN1JYSWtyelBDZzRYQklwUXU1aHN3S0M3Vy9VaUg3SDkycHR5bDJncmlDN0UwSk9mWi9Ndmd4
WnBGaTh1cGUNCit5WThqMUdESWd3cHRmOVFHTGttL2Vwdi9RTTZMMjV3R0VFOTE2elErM3JrVVhU
WFQyb1BJaThqYVFSc2xvWGNpDQorTkkzbDFGRkVRak40VjRpdDNHMnRWbmVnY0FRZFg5bnNaOTdw
QXErTk9LMjhPaU45a0ROOW9sVitBMExNZTc1aQ0KK0JJQi96UlVmSWVnL1RTYllpRlYyY1E9PQ0K
Ky0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQu
cGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy9jYWNlcnQucGVtCmluZGV4IGUxYjVhZGQ1NGU3OTdkYjFjNmMxZDNlZGE5NjFhZjNlNTRi
YzdhNzcuLmVlYmE1MjhkMjZkMzU3MzIwYmE0MmY1MTZmMTdlMzI0NDdhODNhZDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvY2FjZXJ0LnBlbQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KQEAgLTEsMTI1ICsxLDM0NCBAQAotLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlXNXpDQ0ZjK2dBd0lCQWdJREJiRkhNQTBHQ1NxR1NJ
YjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVG
dzB4T1RFd01UUXhNelE1TWpsYUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQjB4R3pBWkJnTlZCQU1N
RW5kbFlpMXdiR0YwWm05eWJTMTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCi1CUUFEZ2dF
UEFEQ0NBUW9DZ2dFQkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2ZqeDJOV2svV0ZFTG9j
Ci1EblV2MnpScDVFMjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09uNE9pL0tOSm5ERTJY
ZVNqUUgvYXdQCi1NaTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjErV1VTYWViSncrOHdI
TG9KVVdJYmVVN0tMVmdYc2NmCi1oTEdCUUI2cC91UWV3em1tYjFiVWJpekYzR25iRnhTYkZna0sz
VHRmOU5wSHFxUnRnVUFhWnRQOWVkYS9rUlA3Ci1qMGlJUW5jQ3lod1VNY0VnLzlZc0tlTE9TVUd6
TGpVU0NKcU9JdlVMblF3UkJZaklFd3VpMDBxZENocVY4Y2h6Ci1LYmszMmRqNnZMRnMzdDdQK3hv
ai9KalpYWmlXUUZUekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdHCi1BMVVkRXdRRk1B
TUJBZjh3SFFZRFZSME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpjYU1FY0dBMVVkCi1J
d1JBTUQ2QUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1Sc3dHUVlEVlFRRERC
SjNaV0l0Ci1jR3hoZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVCQU1DQWdRd2dnb0ZC
Z05WSFI0RWdnbjhNSUlKCi0rS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElW
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wTUJlQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2haM2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1CaUNGbmQzZHpJdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVk
R1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzCi1kekl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5Ci1iUzUwWlhOME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlD
R25kM2R6SXVkM2QzCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVkM2QzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wCi1NQnlDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUIyQ0czZDNkekV1ZDNkM01TNTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNk
M2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCi1kM2QzTWk1M2QzY3lMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkREFmZ2gxM2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWdnaDUz
Ci1kM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNUzUzZDNj
dWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6Ci1kREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdJSUllZDNkM01pNTNkM2N1Ci1ibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNHQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdJWUlmZDNk
M01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzCi1kM2N4TG5kM2R6
RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01pNXViM1F0Ci1k
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNH
eGhkR1p2Ci1jbTB1ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1NDCi1Jbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdKWUlqZDNkM01pNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdKWUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdK
WUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3Ci1LSUlt
ZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tJSW1k
M2QzCi1Mbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUlu
ZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNt
Q0ozZDNkekl1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QXBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUw
WlhOME1DdUNLWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3Ci1iR0YwWm05
eWJTNTBaWE4wTUMyQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
Ci1ZWFJtYjNKdExuUmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R5NTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNRd01JSXVkM2Qz
TVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQXdnaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4Ci1MbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5Ci1P
R0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1Ci1kM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRiaTB0YkhabExUWnNZ
V1F1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXpnakY0
YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTURPQ01YZDNkeTU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0WVM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0Ci1iamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05JSXllRzR0Ci1MVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3Ci1OSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0Ci1MblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25G
b2RqSTRZUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3T0lJMmVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyCi1iR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTURpQ05uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0
WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZV1F1Ci1lRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRHlD
Ci1Pbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNR
dGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd1I0SkZlRzR0TFc0NGFqWmtjelV6Ci1iSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1MFpYTjBNQk1HQTFV
ZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDCi1FWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzCi1a
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Qz
ZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpkM2QzCi1MbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlhZDNkM01p
NTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCi1MbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliCi1kM2Qz
TVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZ
WFJtCi1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUli
ZDNkM01pNTNkM2N4Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NI
bmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekV1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0Ci1kMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
Ci1jM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpF
dWQzZDNNUzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0Ci1iaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOMGdp
TjNkM2N5TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpkM2QzCi1N
UzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5t
eGhaQzUzCi1kM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lXUXVk
M2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXRObXho
WkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNj
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluCi1kM2QzTWk1NGJpMHRiSFpsTFRac1lX
UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1Ci1MUzFzZG1VdE5teGha
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N5
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0
YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNk
M2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJs
YzNTQ0xuZDNkekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhS
bWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZp
Ci1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R6SXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGha
QzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCi1MWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ci1ibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCi1N
amhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5Ci1PR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTW5odUxTMXVP
R28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdqSjNkM2N5TG5odUxTMXVPR28yCi1aSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWVH
NHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0Ci1iaTB0YkhabExUWnNZ
V1F1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0Ci1MblJs
YzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuaHVMUzFzCi1kbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVho
dUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1na1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0Ci1ZUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlxMXZBCi14amM4aWoz
NGk0Yis4aW5WQlZ3VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6K2RiMzZVNll3SGFr
Ci1JM0hZaGlwUE1CMVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQL1I1azl2dDhBRW0w
Wm1FV2tOWXRMCi1vcGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4VnErZnEvT3p3K1lR
YlJiVTFLbEhDTmF5aXN2UWE0Ci1UTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFhNlJuSXdvOHp2Q3Fr
MFpSUEF4ZXVsZEFlL3UxUHp0ZVhSekVIVEFFCi1ETVZMTXdNNzUyYkxGdWZ2MUdSQ1pOSEVMWkt5
aFVvRnJQMzBBcUU3cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCi11NS90SGVmUEtEN2JtL1k9Ci0t
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0NCitN
SUpBR3pDQ1B3T2dBd0lCQWdJREMvT3VNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJB
TU1FbmRsDQorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5TURJNU5EZGFGdzB6
TURBeU1UVXlNREk1TkRkYQ0KK01CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBabTl5YlMxMFpY
TjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUINCitCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMOTlhV2sz
ZFJpWXhJak5IbHhMelpMTXFhZmEvd0FyRzVROVQyRUx4YjByDQorT2dEa1ZVTXBpVkJtQTRyV3BH
SXU4UmdlL3RIb2EzRk03NnZreHl1M0I2L3NJZlNQV3BuVTdZTi9QUTk0YmpCNA0KK1dUVUZRUjBM
Qm5LVUdiWTFYVnhlNUFPMWQxZlkzdEFtejNOSEE0NmlmV3piVnFSUFpTelhwdU5nNWV0Qm1mSjIN
CitmWjZyZVl0Z1M5VklxdVVvUFNBRk1LTXQzSjQ2YkQ2VlA4UVBjVkZ6WUlMMERyblJscWQxb29N
RkZCTWl6WHE2DQorOVpTbFkyU1hBK001N2E0bExtdlVUNTFmNVcvQnRCN3VjS2JhT254ZVpaTFlB
TDkrMCtycDkyMkVlMkRyb0l0Rg0KK01na0FRUWN2Y3VEb3RXUzg2VmdTRjdkUFRqUTEyRS83ZUgr
OW9QUUZTeHNDQXdFQUFhT0NQV0l3Z2oxZU1Bd0cNCitBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9C
QllFRlBhNTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc01FY0dBMVVkDQorSXdSQU1ENkFGUGE1MmhZ
SEJidHZ5V013eG1kQXl3UFRIcERzb1NHa0h6QWRNUnN3R1FZRFZRUUREQkozWldJdA0KK2NHeGhk
R1p2Y20wdGRHVnpkSE9DQXd2enJqQUxCZ05WSFE4RUJBTUNBZ1F3Z2g5akJnTlZIUjRFZ2g5YU1J
SWYNCitWcUNDSDFJd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYjNBeUxuZGxZaTF3
YkdGMFptOXliUzUwDQorWlhOME1CZUNGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWGdo
VnZjRGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3RjRJVmIzQXhMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmVDRlc5d015NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVhnaFZ2Y0RZdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwDQorWm05eWJTNTBaWE4w
TUJlQ0ZXOXdOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEUXVkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzUXdGNElWYjNBNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CZUNGWGQzZHk1
M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGczTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdPREF1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTVOQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NERTJMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
QmlDRm05d05EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBeE55NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNG
bTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5TXk1M1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZERBWWdoWnZjREk0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNVE11
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpOaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNERXhMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d056a3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMg0KK01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QVlnaFp2Y0RRNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TVRrdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdo
WnZjRFEyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1F3R0lJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEWTJM
bmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmlDRm5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBeU5pNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZM0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpNdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNR
d0dJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRFl5TG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJ
V2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESXlMbmRsWWkxd2JHRjBabTl5
YlM1MA0KK1pYTjBNQmlDRm05d01qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXZDNkM01p
NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVlnaFp2Y0RFNExuZGxZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TnpRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TVM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE16TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4w
TUJpQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXoNCitNQzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFZZ2hadmNETTVMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQor
Rm05d05USXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME15NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWeg0KK2REQVlnaFp2Y0RnMUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TXpR
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0dJSVdiM0F5TVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBWWdoWnZjRGN4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVEF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTROQzUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpk
REFZZ2hadmNETXhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05UUXUNCitkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2
DQorY0RRMExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRVdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRdw0KK0dJSVdiM0F6TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGMy
TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3R0lJV2IzQTRNUzUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNEZzRMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qQXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMz
UXdHSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVeExuZGwNCitZaTF3
YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdi
M0ExDQorTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREkzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUJpQw0KK0ZtOXdNVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTNO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTNMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNQmlDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBNU15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhO
ME1CaUNGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0ExTXk1M1pXSXQNCitj
R3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREk1TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0Zt
OXdNalV1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFZZ2hadg0KK2NEazNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05E
RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek1pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVlnaFp2Y0Rjd0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TmpBdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TWk1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6
ZERBWWdoWnZjRGM0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPRGt1ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXhNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
dmNEYzNMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05Ua3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdHSUlXYjNBeA0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZ
MUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TmpndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0dJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRGd5TG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOaTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRM
blJsYzNRd0c0SVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWJnaGx2Y0RrdWJt
OTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5d05DNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3DQorRzRJWmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYmdo
bDNkM2N1ZDNkM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CdUNHVzl3TWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBeExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFiZ2hsM2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wDQorTUJ1Q0dXOXdOUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F6TG01dmRDMTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemREQWNnaHB2Y0RJM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hw
dmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFExTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNESTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RGd6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RNekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTJMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZERBY2docDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RZeQ0K
K0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTRMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RRekxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RrMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGt4DQorTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dQ0KK2RHVnpkREFjZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RFk1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNeUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRGs0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RF
NUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzINCitMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdW
emREQWNnaHB2Y0RjNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3lMbmQz
ZHk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcyTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjRFUxTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2do
cHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrMExtNXZkQzEzDQor
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBYw0KK2docHZjRE13TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNj
eExuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTFMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkwDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RJd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEVXhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF4TG01dmRDMTMNCitaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
DQorZ2hwdmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGN5TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJeUxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RZM0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3dMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2
Y0RNeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXpMbTV2ZEMxM1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RNMQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTJM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFl6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNExtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEVTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMExtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGN3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNERTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRFkxTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGczTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemREQWNnaHB2Y0RjNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3UN
CitkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd5TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwM2QzY3VkM2QzTVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
Y2docHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJMA0KK0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHUNCitkR1Z6ZERBY2docHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
UTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREUzDQorTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkREFjZ2hwdmNEZzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFUzTG01
dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
ZGdodDNkM2N5TG5kM2R6RXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdIWUliZDNkM01TNTNk
M2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWRnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxj
M1F3SDRJZGQzZDNMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJSUllZDNkMw0K
K01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXho
WkM1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3DQorSUlJZWQzZDNMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ0NDSG5kM2R5NTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWhnaDkzZDNjeExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOME1DR0NIM2Qz
ZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lZSWZkM2QzDQorTWk1M2Qz
Y3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N5TG5kM2R6SXVibTkwTFhk
bA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNRd0pJSWllRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWtnaUozDQorZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1dDSTNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNXQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGwNCitZaTF3YkdGMFptOXli
UzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNpQw0KK0puZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQ2lDSm5odUxTMXMNCitkbVV0Tm14aFpDNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DbUNKM2QzZHpFdWVHNHRMV3gyDQorWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBcGdpZDNkM2N5TG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWJtOTANCitMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNQ21DSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemREQXJnaWw0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXRnaXQ0YmkwdGJIWmxMVFpzWVdRdWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQytDTFhodUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBdmdpMTRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdM
NEl0ZDNkM0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXcNCitiR0YwWm05
eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
DQorTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1ZDNkM01TNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0YmpocU5tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1M2QzY3gNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRENDTG5odUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzDQorZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd01ZSXZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3TTRJeGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkNCitPR0V1
ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6Z2pGM2QzY3VlRzR0TFc0NGFqWmtj
elV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDTW5k
M2R6RXVlRzR0TFc0NA0KK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNRFNDTW5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDDQorTW5kM2R6SXVlRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNRFNDTW5o
dUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjANCita
bTl5YlM1MFpYTjBNRGlDTm5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2Rt
VXRObXhoDQorWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBNGdqWjRiaTB0YkhabExUWnNZV1F1
ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdQSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0DQorYmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1FT0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTEN
CitNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUVlQ1JYaHVMUzF1T0dv
MlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFj
REFUQ0NIVnNHQTFVZEVRU0NIVkl3Z2gxT2doRjMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0F5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEa3VkMlZpDQorTFhCc1lYUm1iM0p0TG5S
bGMzU0NGVzl3Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXhMbmRsWWkxdw0KK2JHRjBa
bTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOaTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlWYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRFV1
ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDRlc5d05DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVZiM0E0TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3T0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPREF1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d09UUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TVRZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d01UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpJdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qTXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdNVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016WXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TVRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOemt1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TkRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVGt1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d05ESXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRZdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09U
Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpZdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qWXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3TmpjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOek11
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMz
U0NGbTl3TmpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDRm05d05UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpJdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0ZtOXdOelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09URXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdO
amt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016QXVkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NGbTl3TXprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEl1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d05ETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RVdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d01qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EUXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdOVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05Ea3VkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TkRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORFV1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d016VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpZ
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d09ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0RndWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdNakF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UVXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdPRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UVXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TWpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVEl1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TkRjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVFl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09UTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRjdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05U
TXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWprdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdNalV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09ETXVkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3T1RjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREV1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TnpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakF1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm05d09USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGt1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d01UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpjdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01UVXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3TmpVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOamd1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3T0RJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0dXOXdOaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdPQzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dX
OXdPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOQzV1YjNRdA0KK2QyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDMN
CitkeTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsDQorYzNTQ0dXOXdNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDNk
eTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0dXOXdOUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dXOXdNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
amN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF3DQorTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NH
bTl3T1RZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNExtNXZkQzEzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d016TXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2QzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdOakl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREU0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT0M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TkRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNQ0KK0xt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk1DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmwNCitjM1NDR205d09UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3pM
bTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTVNUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOREl1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
REkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0EyT1M1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBn
aHB2Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU9DNXViM1F0ZDJWaQ0K
K0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEYzINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNeTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdOemt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocDNkM2N5TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0Tmk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpjdWJtOTANCitMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMU5T
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhkbFlpMXdiR0YwWm05
eQ0KK2JTNTBaWE4wZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTFO
QzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRE0wDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0F6TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbmQzZHpFdWQzZDNMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlhYjNBMk5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01qQXVibTkwDQorTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYQ0KK2IzQTBNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEl1Ym05MExY
ZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0EzTWk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpJdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBM05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d05q
Y3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3dMbTV2ZEMxM1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJYWIzQTROQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
ekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWENCitiM0F5TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TXpVdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFMkxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxj
M1NDR205d016Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTQNCitMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0dtOXdNVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt3TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TVRFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFMUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk5TNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d05UQXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNRdGQyVmkNCitMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNk
M2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0TWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdWQzZDNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBeU1TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056RXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTRPQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNalF1Ym05MExYZGxZaTF3YkdGMFptOXkNCiti
UzUwWlhOMGdocHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT1M1dWIz
UXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RRMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d016a3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIz
QXhOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOelV1Ym05MA0KK0xYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWEN
CitiM0ExTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWJtOTBMWGRsWWkx
d2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RneExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01pNTNkM2N4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2h0M2QzY3hMbmQzZHpJ
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaDEzZDNj
dWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUzZDNjdQ0KK2JtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0huZDNkekV1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUll
ZDNkM0xuZDNkekV1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDMNCitNUzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1ND
SDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxcw0KK2Rt
VXRObXhoWkM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1
dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NJM2QzZHpFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeQ0KK0xuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDMNCitkekl1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBa
WE4wZ2laM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0K
K2RJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SjNkM2R6RXUNCitlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SW5kM2QzTWk1NGJpMHRiSFpsDQorTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2lkNGJpMHRiSFpsTFRac1lXUXVkM2QzTVM1dQ0KK2IzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NKM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6
ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtDQorYjNKdExu
UmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHUNCitkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNk
M0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpJdWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5kM2R6RXVl
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNT
Q0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1ZDJWaUxY
QnNZWFJtYjNKdExuUmwNCitjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2pGM2QzY3VlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjANCitabTl5YlM1MFpY
TjBnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNN
UzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekl1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXUNCitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKNGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVlRzR0TFd4MlpTMDJi
R0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJpMHRiSFpsTFRac1lXUXUNCitlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFz
DQorZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1
TFMxc2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NRWGh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Seg0KK05UTnNkM2RyY25Gb2Rq
STRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnMNCitZWFJt
YjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUllVHUySXlUcEFQYlVZQ3hmUjNU
NkJxDQorZDVZbW8zVEc4cG5acnNZcXpIdENJdkdvTzgxSkVJSmRoUHlpdGJKZC91c2J0a0VUaExo
YWZlUWk5Um1pQ1pZdg0KK0NVZXgwSWRVeEhhVzM2Wng0a0l6TkxmMDJ6Y3h3Qkp0QUZwZi95QXNR
ZEtJSTBaRk5HUjFXa1JxbmF0Zno1dHkNCitTSy9TNTkzTVk5c083eGR4c1BjUW5KN1dQYVhLNjYw
eU8xR290Ymg0YlJ3cGRMOHVKdkZWcGU2K1VBT1M2NE1rDQorakt5Rkl5M1o5SGxiK0hQVjB3RkJT
ODlXcXFFZkFvTGticmYwS0Vqb0JydklsSVhmOC90TG9nVFRVU2JaZDY2Nw0KK3FmODhTWC8wdFlW
TUVZQzYvSVVpeWlnQXgvaE1pdVdDRENTMTBtV0x3WWZQczJKd0RRUmxTSW92ZU5CcCt3Zz0NCist
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCBiNjJhZjIwOGMzNGNiMzE2N2FlNjQwMzhj
ZGZmNjk2ZjA0Nzg5M2ViLi5jZmFjY2NlNDIzZWRlZGRiODkwZDRhODA2ODNjNzQ3NjkyZTIzZmUw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0
LmtleQpAQCAtMSwyOCArMSwyOCBAQAotLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlF
dmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1NrQWdFQUFvSUJBUUNyWlhWWG1PUGxx
by8rCi0yeGoxNVBnY1pHSEdvL2JvZmlRUTNnbDZKTDFWWDFHcHRZSU5oVHEyc1VoZk44dENiK2NI
eXphcE85b1Vtd3F3Ci1wNVVwN3RKNElwN3VFMS93d1N4VmN2Q2F3RzUvUE41aUQ3SDJ3c21FcHBI
WE9jM0xsMDg1L2d6ZXMrMStObitxCi1BUm1wMWJGL3ZqcGxENlZkSDJyQlczc0ozREFvQmFvWGxB
TWZlUkFGRHBhcWErOWx4TXJNNVdrVUhuZFErdUVNCi02a1p5ZXZoeXAwMlhEUDB2THdOQ3RQTEdC
MGVtQUFmQzd4cHdSR1ZHU3RFc1VoZi9tYzl5Tk5hS2dxQktJMG5vCi1vVm51VTNSR2RLSFAxOHZj
anRCU1YwbFlnamZnOWEwN09CdTFoZ1FmZmhvZmkyQnlkZmFDcEJBTXpGaGx1MXV5Ci1zNmFoVmtK
cEFnTUJBQUVDZ2dFQWZtdnp4WTBNYkZjR3AyRk1ZL05qM3UxY0FYem5uazJNcExSaUlTb0FUWHhs
Ci1hOXhwOVRjVU83VkFRSnVTM1lwVXlyYmx0cVpqRVZmYTVycDFsOXlFZWdCdllnUUFmRURBUnJi
bEtnQk9nS09SCi1GSnVuRlBCUVcvdlJEd09mL0UrN0xIZHJYc2t3b0N2cXRxYmhHeGg0T0ZWRUZV
OFpGanNhTDAwZTBBTU5zalpsCi0wT3NFT05sSUg0bkNhN0U2RFRhc0h4YzFWa0hRcjN1dkJsNS80
SGZPYzA1dHIrWktsTVlYekFQV2tMMHNDMjE2Ci1EcXk0QXhKME0wYXg4QllFWnVvMGdxUW1NQW9u
SlRrRW5weW9ENHo4OVM4Nzd2RnA4dzFWUGJHWWtWNDh5alYvCi1JN2ZRNllqdDN5ZythcytzNGFy
R0VzVUIwbCtYQXBCWVlZL0orcWNZVVFLQmdRRGVkN0RPTUpVYzNrUFRGRWNOCi1wL0ViU2g5VFh4
Uy83NGNJeUdpZDlJRWlSRUpZeFl2OGt6MEtwbEd1Sm9sSVEzL0lrOVJhYzZCM1R1NFdrVzBnCi1U
UGJOdW5ZRXN5ZFpCQW5hUTRlQVZkT2Z2UlE2VjNlQloydkVyc0hKUkZhajVjT2Nlc1VYeEJaSTZt
MnRRRVN4Ci1kQldGRE5HOWt6dHIwSG1hTDZQdXo0elpJd0tCZ1FERk94ZlI3RmNwR2R3NjF6aVNz
Wm10dmtmNmVwa0czK291Ci11aFk1MEowVXJUYks3VHVpbWtvUncvWEhlQmU0ZGIrZWpPT3VMRDlR
RS95WHZtdEVXdXlVVFRZT1Z2WitIdU5qCi1ScDNrZGkxR3VXWG42Z1J2ZGxrZjlYd1c3akhtZ2tw
YkE1QSt1RFhzM0VZWWExOEx4UE5mTVN2aHlIZGtGblVHCi1hVHp5WU5wZEF3S0JnR3YvUU5hbjRR
dDFud2x1VTV2K2hsNlFHaXI0QW5PMnpSL25ZbG9qNHppR1dJc053NHBtCi0xQUJDZzI1K2lMQ0xE
QktNS1UrTHlEK0RFclBqLzB6cDcvb3BaYmVjWFNLcWdqbnlCR3E1djVWUlRldVFvSlF5Ci1aNi9B
Z3BTNVZ6SVRqV1YrZUFXMGpIanpUVEVJL1JBRVlab0lnaDE4eHlEc3dNdW9DdllZemJCdkFvR0JB
TU0yCi1JL053K3l3QkhvdFdyZlh6dHVuU3BpZHk1TGQ3Tkt5ZkhwU0d1SkxZaHB6L2hjRUErVUx3
TS9vRUVXWlBsU04yCi15M3QrN0FOMFpOUkVjcU1yWTNHOW9qMDdNYW5QSkwwRURnOHNNTkFKZktX
NGFEOXlZZkJSNTBwQzVEMEV4RmVsCi1CVVl1eWFEd3ZLZzZ6YzQyVjdQbVZVcWFRaUZjWU9QQmtj
Tk12WlRGQW9HQkFMQnRkdDBpSXZ0Qm9wcCtJUWFWCi16Wk1BNVpRSVE1bjV2MDcxTEthMXM3YXIz
K2hJb0RSc1piTTdYa1VJQTh6UWxyd0ZSaGJVNVlGTmNicG9vUVNtCi03ajQrZkl1ZGNweGo5dEFN
R0FiNXlnODlrMURqVHk3RlVXTDllbEdJZ3ZKTXFnRjZJUTUzK3ZSOHh3R0R5UUxCCi1zUDVtaXpG
MXdpNDdEWVBKUWNEUkN6VSsKLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4g
UFJJVkFURSBLRVktLS0tLQ0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dn
U2pBZ0VBQW9JQkFRQy9mdVlxYkpMWUtvVHcNCitGemF1blNKMzYybXBBN0JvV09JTWlURmtHSzF0
WkFncHoycnZ6QkQ1c3pOTUlySGFKRi9ETWZIeGUyQ1hzbmtEDQorWFdiYzBjdUQ3Tk1NNGRLYmZS
YmpudHhZM1d5SmQ1aWpETEo4YnRDL1BTd1pvY21Id2dwT3FCNDBxRy9hTFFwTg0KK3dMUnhCa2xo
NmhyQVpNSFRzSS9BTzRJQktNVG9NWXNIUzdYN1loZE1LZzNlcTg3Y2dHaS9xeDFGNHFTaUFXb0YN
CiszMEhtL2ZpVUx1S2ZwQUZWZmV2QlBUNWhVS0RxTnlyVnh4aE03UFVOT1cxVTB3UXhSdGdTb0Fx
Q1kyMkNwSTdXDQorZ2tOaG14MlVtckFkTlFMNHUxVi9qUGNoNG1VMlFxbUxXQkdRb0h3b1JkaWJp
SldhSnVuOVJ3ZURjSXFZR3d0Tw0KK2hJd0d0K0xqQWdNQkFBRUNnZ0VBY0Rlb0g3SlNkelNyaEpy
RjQ1dVhxRmlmS1hsTTlra241cHE3QStKbU54V0kNCitweCt5bGVXckNQalhsY1U3SGc5MHdzbFE4
K2NPR3JkdXJPY2VNVWNNRVRwR0QyV0NhclhxSk9kaVR2MHE3bi9VDQorUmJCYUpBczRidWtsSDd3
c2drN1doWE9GaCt3dzU5Uy9GZ05ZZW1kcHQyUmQydUx3cHVIdnk0SFQxR1FVeDgvQw0KKzlxaE51
dTkyQk5FdzVZWFpqV2xVWHNYNC9NT2hRczZpYUVmZUdwaG8yMHVoVVJSWmxHNWt2L3pDcTl5Q1gr
c2ENCitPNUM1MDR6a1pnWG9qQ3ZlYWhPWGVXTHJoTm5ScDFkdDNESFZwM2NGMmZ5UDBJUmIrK3l3
MFpZZHZjYnljODJzDQorQkhlbmpDM3ZCd25nN2FBOTVRZWh5ZUxRTzNQVlZqOFFQbmRWQjcyYVFR
S0JnUUQ3MXlZMnRCeVh6akhnRFJhRw0KK2RERFlRdGd5VmZ6NGNYK2tTK0JZV1d6dUNRbzkvVW9i
d3VjVVRtVXoxUmMwNC9xdVNrL3A2M2FnMXZicXh5b0cNCitwVnlWMlA2SVk1K0YzcEVrbFd0Zlht
eTdBbnVrOGpVZ1hqZ1MyKzc4Z3hQenk0OU53ZVROVFVjbExBWkpTRmtMDQorR0FCNm9YVzB0YWVW
UnNDWjlnZ3B2MFVTb1FLQmdRRENxSmgrTW10cDA0emNqUm0wZ1VabWY4RXJGWFlqNnVxcg0KK3JW
c0dRTG42d1JSY2M4SnJOQTRYYmxxN3JqZjdCNUQyRHM4SXBvUGVGb0I4R2ErUEdlNE1RSlpkRzBV
bXZRRmcNCitSWHBBaUI2TzduNCs4b2FYU09tRnBGTDVKZDAvQ2RHdXRXRzQ0Q3dKb3JiQ0JZcVY4
ZklGNVVhWUZHaWdKRVVUDQorV3JjUFEwUExBd0tCZ0hSWG5HdkJJVVJ3R1ZKc09XKzcxYVRTbkpZ
RWEyMUs0YkRBN005ajRKTEcwbGg0M3ZlYw0KK1BxeCsydm5yQTJHSHdKTXIrV2NUUkNaaHFJZ2xv
aUNYM0FITjBTaW8vVlVXME82WnFKVFNSbURPY05odW5HUnINCitvblB6N3AvdzNoTE9nMUZrdFpL
eWxKOXppeVBuckZzWHA0RC9maVVSbG0yNzFkWktkdEx5YmJLQkFvR0FTUkV2DQorN0c3UWt2Q3R0
enZmb2puRVMwVTVKUXJ4Ulpvd2JEQ3VNaktwbk01TTdrY2xlMGdXNGdTeVdqQ1RJczg4UXFCYw0K
K1prcmF4TXA5Z0JmRUpscjlWK3dHaFB4dmdKTUJxVGxySWozMStvRGJNcFdtbjdMbXRSdHhhY1Fr
d0R6WFVGVVYNCitVV2dVSDZuTUlCZ2taUlJrWElJcmRYcHpxMmp4NU1ud1hQSkt5REVDZ1lFQTA5
UDJad2VCSkU5YTlvb0tHV29pDQorMmlSVjRHQWVJWkdVWHkxc1QvRFdNNmVVc3B1RnNJRTFkYWsw
SjVWVktkSWNlN0NWM0lwREU4UFo1UDBpVWZpZQ0KK2dMMTcwS3hmSlJrT2ZJNnB4NHdCV0dlL1JN
MG5JbldKSUlSNW9HY2lmekJ4N3RWUXFLYnpOY2xMVWtNT2hoZzcNCitlcFpkUEpKdVpTZ3JpeGFQ
bzd5bXo0MD0NCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxh
dGZvcm0udGVzdC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQppbmRleCA1OTU5MzE2YmI1YjQ4
MjVlNjQwYmIxZjdjYWIwOGJjOWY0MDVhNjNhLi42OGE5Yjk2ZjNlZTlkOWNkYTU3ZGFlYjY3OTZi
NWI2NzRkNzVhYzQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1w
bGF0Zm9ybS50ZXN0LnBlbQpAQCAtMSwxMzMgKzEsMjM5IEBACi1DZXJ0aWZpY2F0ZToKLSAgICBE
YXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDM3
MzA2NCAoMHg1YjE0OCkKLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5j
cnlwdGlvbgotICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cwotICAgICAgICBW
YWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDE0IDEzOjQ5OjI5IDIwMTkgR01U
Ci0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTEgMTM6NDk6MjkgMjAyOSBHTVQKLSAgICAg
ICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QKLSAgICAgICAgU3ViamVjdCBQdWJsaWMg
S2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlv
bgotICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKLSAgICAgICAgICAgICAg
ICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDphYjo2NTo3NTo1Nzo5ODplMzplNTph
YTo4ZjpmZTpkYjoxODpmNTplNDoKLSAgICAgICAgICAgICAgICAgICAgZjg6MWM6NjQ6NjE6YzY6
YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Ci0gICAgICAgICAgICAgICAgICAgIGJkOjU1
OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4OjVmOjM3OgotICAgICAgICAgICAgICAg
ICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpkYToxNDo5YjowYTpiMDphNzoKLSAgICAg
ICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6OWU6ZWU6MTM6NWY6ZjA6YzE6MmM6NTU6
NzI6Ci0gICAgICAgICAgICAgICAgICAgIGYwOjlhOmMwOjZlOjdmOjNjOmRlOjYyOjBmOmIxOmY2
OmMyOmM5Ojg0OmE2OgotICAgICAgICAgICAgICAgICAgICA5MTpkNzozOTpjZDpjYjo5Nzo0Zjoz
OTpmZTowYzpkZTpiMzplZDo3ZTozNjoKLSAgICAgICAgICAgICAgICAgICAgN2Y6YWE6MDE6MTk6
YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6Ci0gICAgICAgICAgICAgICAgICAgIDZh
OmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0OjAzOjFmOjc5OgotICAgICAgICAgICAg
ICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpjNDpjYTpjYzplNTo2OToxNDoxZToKLSAg
ICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6ZWE6NDY6NzI6N2E6Zjg6NzI6YTc6NGQ6
OTc6MGM6Ci0gICAgICAgICAgICAgICAgICAgIGZkOjJmOjJmOjAzOjQyOmI0OmYyOmM2OjA3OjQ3
OmE2OjAwOjA3OmMyOmVmOgotICAgICAgICAgICAgICAgICAgICAxYTo3MDo0NDo2NTo0Njo0YTpk
MToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKLSAgICAgICAgICAgICAgICAgICAgZDY6OGE6ODI6
YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6NzQ6Ci0gICAgICAgICAgICAgICAgICAg
IGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4OjgyOjM3OmUwOmY1OgotICAgICAgICAg
ICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDoxZjo3ZToxYToxZjo4Yjo2MDo3Mjo3NToK
LSAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6MGM6Y2M6NTg6NjU6YmI6NWI6YjI6YjM6
YTY6YTE6NTY6Ci0gICAgICAgICAgICAgICAgICAgIDQyOjY5Ci0gICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKLSAgICAg
ICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCi0gICAgICAgICAgICAgICAgQ0E6RkFM
U0UKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAg
ICAgICAgICAyQToxODowQjowOToyMjo2RToyODpEMjpEQjpGRDpDMjoyRDo0MDpBNjpGMzozODo2
Mjo2RTpDNzpDNQotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjog
Ci0gICAgICAgICAgICAgICAga2V5aWQ6NDE6NDk6RkY6OEM6NjY6NTA6NUY6ODc6QTE6MDY6QTg6
QkI6QUI6OEE6REQ6NzM6MEQ6MEU6Mzc6MUEKLQotICAgICAgICAgICAgWDUwOXYzIEtleSBVc2Fn
ZTogCi0gICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwg
S2V5IEVuY2lwaGVybWVudAotICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTog
Ci0gICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24KLSAgICAgICAg
ICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IAotICAgICAgICAgICAgICAgIERO
Uzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdAotICAgIFNpZ25h
dHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICBhZjpjMjpl
YTpjYzo2YTo1ZTo0OTplMDpkYjo3MjoxNDowNTozYzoyMTphMDo4YjpmZjpiNjoKLSAgICAgICAg
IGE5OjcxOjgyOmY3OjYxOmNkOjIzOjJhOjAwOjY2OjkxOmFjOjAxOjk5OjYzOjM4OjExOjIxOgot
ICAgICAgICAgODU6YjI6NTc6OTI6MGI6M2Y6Nzk6Njg6ZjU6ZDg6NTk6OGI6YTc6NzQ6MTk6ZWI6
MGI6ZTc6Ci0gICAgICAgICAzZDo4Njo0ZTo2NjpkNDplNjoyZjpmZjplZDo2Yzo3ZDo5YTo1ZTox
Mjo0ZTpiZjozOTpmZjoKLSAgICAgICAgIGY3OmQwOmZiOjUyOjUzOmEwOmZiOmIxOjVjOjlhOjkx
OjkyOjM2OjAwOmQ4OmE0OjZmOmY5OgotICAgICAgICAgOWM6MzY6MjE6YjI6YzI6NWU6MTQ6MTE6
Y2E6NTU6ZTc6ODg6MzA6NjA6OGQ6ODY6ZGE6NjU6Ci0gICAgICAgICAyNjpmZjplMjo0NTozNjoy
YTowOTozZDphNDpiYjozODo2MTo0ZDo1NzplNDpjOTpiNjo1MDoKLSAgICAgICAgIDNjOjA2OjJm
OjZiOmJmOjA0OjM0OjQyOjU0OmRjOjUzOmI2OjYxOmM1OjRlOjQwOjAwOmQ2OgotICAgICAgICAg
NWU6MTk6MTc6M2E6NTQ6MmM6YzU6MTY6N2E6NmQ6NGE6NzA6NTY6NDU6Y2Q6OTk6NWE6MmE6Ci0g
ICAgICAgICBkMTphNzo0ZTozNTo5NzozZDpkODpjOTo5NTo4MDphYjoxNTo0Mjo4NjpmNjphMDph
NjpjMzoKLSAgICAgICAgIDIxOmMxOjlhOjA3OjM0OjQ5OmFkOjYxOjNjOmJjOjk0OmIyOjJkOjky
OmY3OjQ0OjgwOjAxOgotICAgICAgICAgNWY6Mjc6YmQ6ODM6ZjU6NTE6MjI6Mzk6Y2Q6OTg6YjE6
Mzk6MjM6Yjg6ZjQ6NWM6MDg6MjA6Ci0gICAgICAgICA5ZTpmZTpmMToyZDo5YTplOTo5YjpjNzo1
ZTpiODozMzo4YjoxNjo3Nzo1MjozZDpjOTo3YToKLSAgICAgICAgIDQzOjllOjI1OmQwOmM3OjVh
Ojk2OjA4OjUzOjFhOmRjOjc1OjUzOjc1OjQ0OjYyOjE4OjdjOgotICAgICAgICAgZWY6ZmI6NzM6
NTIKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJTXNqQ0NDNXFnQXdJQkFnSURCYkZJ
TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMx
MFpYTjBjekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1TWpsYQotTUJ3eEdq
QVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFF
RgotQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxMlYxVjVqajVhcVAvdHNZOWVUNEhHUmh4cVAyNkg0a0VO
NEplaVM5VlY5UgotcWJXQ0RZVTZ0ckZJWHpmTFFtL25COHMycVR2YUZKc0tzS2VWS2U3U2VDS2U3
aE5mOE1Fc1ZYTHdtc0J1Znp6ZQotWWcreDlzTEpoS2FSMXpuTnk1ZFBPZjRNM3JQdGZqWi9xZ0Va
cWRXeGY3NDZaUStsWFI5cXdWdDdDZHd3S0FXcQotRjVRREgza1FCUTZXcW12dlpjVEt6T1ZwRkI1
M1VQcmhET3BHY25yNGNxZE5sd3o5THk4RFFyVHl4Z2RIcGdBSAotd3U4YWNFUmxSa3JSTEZJWC81
blBjalRXaW9LZ1NpTko2S0ZaN2xOMFJuU2h6OWZMM0k3UVVsZEpXSUkzNFBXdAotT3pnYnRZWUVI
MzRhSDR0Z2NuWDJncVFRRE14WVpidGJzck9tb1ZaQ2FRSURBUUFCbzRJSitqQ0NDZll3Q1FZRAot
VlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVS2hnTENTSnVLTkxiL2NJdFFLYnpPR0p1eDhVd0h3WURW
UjBqQkJndwotRm9BVVFVbi9qR1pRWDRlaEJxaTdxNHJkY3cwT054b3dDd1lEVlIwUEJBUURBZ1hn
TUJNR0ExVWRKUVFNTUFvRwotQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDRVhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdQotYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZY
ZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkMwotTVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkMwotTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJ
YWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3
YkdGMAotWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWQzZDNNaTUzZDNjdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwMwotZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBnaHQzZDNjeExuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1MwotWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxMwotZDNjdWQz
ZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNMbmQzZHpJdWJtOTBMWGRsWWkx
dwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5odQotTFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNM
bmQzZHpFdWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkMwotZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSDNkM2R6RXVk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1Mwot
ZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlM
WEJzWVhSbQotYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNodQotTFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU4zZDNjeUxuaHVMUzFzZG1VdAotTm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWpkM2QzTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0kzaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2laNGJpMHRiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odQotTFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1MwotZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MAotTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSzNodUxTMXNkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhodQotTFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dAotTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTEzZDNjdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5k
M2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdQotZUc0dExXNDRhalprY3pVemJI
ZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxcwot
ZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akY0YmkwdAotYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGMwotZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXllRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1ND
TW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxdwotYkdG
MFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2
ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MgotWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NAotYmkwdGJqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odQotTFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExu
UmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
MwotZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25GbwotZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbAotYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFLL0M2c3hx
WGtuZzIzSVVCVHdob0l2L3RxbHhndmRoelNNcQotQUdhUnJBR1pZemdSSVlXeVY1SUxQM2xvOWRo
Wmk2ZDBHZXNMNXoyR1RtYlU1aS8vN1d4OW1sNFNUcjg1Ly9mUQotKzFKVG9QdXhYSnFSa2pZQTJL
UnYrWncySWJMQ1hoUVJ5bFhuaURCZ2pZYmFaU2IvNGtVMktnazlwTHM0WVUxWAotNU1tMlVEd0dM
MnUvQkRSQ1ZOeFR0bUhGVGtBQTFsNFpGenBVTE1VV2VtMUtjRlpGelpsYUt0R25UaldYUGRqSgot
bFlDckZVS0c5cUNtd3lIQm1nYzBTYTFoUEx5VXNpMlM5MFNBQVY4bnZZUDFVU0k1elppeE9TTzQ5
RndJSUo3KwotOFMyYTZadkhYcmd6aXhaM1VqM0pla09lSmRESFdwWUlVeHJjZFZOMVJHSVlmTy83
YzFJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorQ2VydGlmaWNhdGU6DQorICAgIERhdGE6
DQorICAgICAgICBWZXJzaW9uOiAzICgweDIpDQorICAgICAgICBTZXJpYWwgTnVtYmVyOiA3ODMy
NzkgKDB4YmYzYWYpDQorICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNB
RW5jcnlwdGlvbg0KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVzdHMNCisgICAg
ICAgIFZhbGlkaXR5DQorICAgICAgICAgICAgTm90IEJlZm9yZTogRmViIDE4IDIwOjI5OjQ3IDIw
MjAgR01UDQorICAgICAgICAgICAgTm90IEFmdGVyIDogRmViIDE1IDIwOjI5OjQ3IDIwMzAgR01U
DQorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdA0KKyAgICAgICAgU3ViamVj
dCBQdWJsaWMgS2V5IEluZm86DQorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24NCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkN
CisgICAgICAgICAgICAgICAgTW9kdWx1czoNCisgICAgICAgICAgICAgICAgICAgIDAwOmJmOjdl
OmU2OjJhOjZjOjkyOmQ4OjJhOjg0OmYwOjE3OjM2OmFlOjlkOg0KKyAgICAgICAgICAgICAgICAg
ICAgMjI6Nzc6ZWI6Njk6YTk6MDM6YjA6Njg6NTg6ZTI6MGM6ODk6MzE6NjQ6MTg6DQorICAgICAg
ICAgICAgICAgICAgICBhZDo2ZDo2NDowODoyOTpjZjo2YTplZjpjYzoxMDpmOTpiMzozMzo0Yzoy
MjoNCisgICAgICAgICAgICAgICAgICAgIGIxOmRhOjI0OjVmOmMzOjMxOmYxOmYxOjdiOjYwOjk3
OmIyOjc5OjAzOjVkOg0KKyAgICAgICAgICAgICAgICAgICAgNjY6ZGM6ZDE6Y2I6ODM6ZWM6ZDM6
MGM6ZTE6ZDI6OWI6N2Q6MTY6ZTM6OWU6DQorICAgICAgICAgICAgICAgICAgICBkYzo1ODpkZDo2
Yzo4OTo3Nzo5ODphMzowYzpiMjo3Yzo2ZTpkMDpiZjozZDoNCisgICAgICAgICAgICAgICAgICAg
IDJjOjE5OmExOmM5Ojg3OmMyOjBhOjRlOmE4OjFlOjM0OmE4OjZmOmRhOjJkOg0KKyAgICAgICAg
ICAgICAgICAgICAgMGE6NGQ6YzA6YjQ6NzE6MDY6NDk6NjE6ZWE6MWE6YzA6NjQ6YzE6ZDM6YjA6
DQorICAgICAgICAgICAgICAgICAgICA4ZjpjMDozYjo4MjowMToyODpjNDplODozMTo4YjowNzo0
YjpiNTpmYjo2MjoNCisgICAgICAgICAgICAgICAgICAgIDE3OjRjOjJhOjBkOmRlOmFiOmNlOmRj
OjgwOjY4OmJmOmFiOjFkOjQ1OmUyOg0KKyAgICAgICAgICAgICAgICAgICAgYTQ6YTI6MDE6NmE6
MDU6ZGY6NDE6ZTY6ZmQ6Zjg6OTQ6MmU6ZTI6OWY6YTQ6DQorICAgICAgICAgICAgICAgICAgICAw
MTo1NTo3ZDplYjpjMTozZDozZTo2MTo1MDphMDplYTozNzoyYTpkNTpjNzoNCisgICAgICAgICAg
ICAgICAgICAgIDE4OjRjOmVjOmY1OjBkOjM5OjZkOjU0OmQzOjA0OjMxOjQ2OmQ4OjEyOmEwOg0K
KyAgICAgICAgICAgICAgICAgICAgMGE6ODI6NjM6NmQ6ODI6YTQ6OGU6ZDY6ODI6NDM6NjE6OWI6
MWQ6OTQ6OWE6DQorICAgICAgICAgICAgICAgICAgICBiMDoxZDozNTowMjpmODpiYjo1NTo3Zjo4
YzpmNzoyMTplMjo2NTozNjo0MjoNCisgICAgICAgICAgICAgICAgICAgIGE5OjhiOjU4OjExOjkw
OmEwOjdjOjI4OjQ1OmQ4OjliOjg4Ojk1OjlhOjI2Og0KKyAgICAgICAgICAgICAgICAgICAgZTk6
ZmQ6NDc6MDc6ODM6NzA6OGE6OTg6MWI6MGI6NGU6ODQ6OGM6MDY6Yjc6DQorICAgICAgICAgICAg
ICAgICAgICBlMjplMw0KKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
DQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoNCisgICAgICAgICAgICBYNTA5djMgQmFzaWMg
Q29uc3RyYWludHM6IA0KKyAgICAgICAgICAgICAgICBDQTpGQUxTRQ0KKyAgICAgICAgICAgIFg1
MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAgICAgQUU6RDg6MkY6
OTk6QkE6QjE6RTg6MDM6RDI6QTU6QzU6MkM6MEQ6QkI6MTY6NUM6OUI6OUY6Rjc6MDgNCisgICAg
ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAg
ICAga2V5aWQ6RjY6Qjk6REE6MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6Njc6NDA6Q0I6MDM6
RDM6MUU6OTA6RUMNCisNCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiANCisgICAgICAg
ICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVy
bWVudA0KKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6IA0KKyAgICAgICAg
ICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbg0KKyAgICAgICAgICAgIFg1MDl2
MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IA0KKyAgICAgICAgICAgICAgICBETlM6d2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcwLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQz
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDM1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUw
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A4OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
ODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZs
YWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRz
NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QNCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24NCisgICAgICAgICA4OTphNDo0NDo0MzplZjowZjphNjoz
Njo3MjozMTo4Nzo0NDo3NTo4NjpiNjo1Yjo1ODoyYzoNCisgICAgICAgICBjYjoxYzowYToyZToz
NTozMjo4Mzo4MDo3MDo3MDoxYzpiNzo0YTpkMTo0NTo0NDo3ODpjNDoNCisgICAgICAgICAxNzpk
ODo3NzozNDo0ZTo0MjpkMjo3MjoyMjpmZTowZDowYTphZTpiODowNjo5NDpkMDo2ZDoNCisgICAg
ICAgICA3YToyMTpkODphNDo4MzozMzoxNzpkMzowNDphODo5Mzo2Zjo2NjpmMDozMzoxOTowNTow
NzoNCisgICAgICAgICBiNTozNTo4MzoyODphOTo4Zjo4NToxODoxYTo4NjpkZjplODpiZTo4ZDpj
Zjo2YToyNDpjMToNCisgICAgICAgICAwODoyNjpkZDowMjo5ODoxYzowMTpkODo4MTo0YTplNDoy
MDoxNDoxOTo3YzplZjo5MTpiNToNCisgICAgICAgICAzZTpkYTo1YTpmNjoxNDo0NToxODo3ZDo0
NTo0YjoyODo3NjozMzo1ODpjNTo4YzpjOToyZDoNCisgICAgICAgICBlZjo4OToxMTo3MDo3ZDpl
Yjo0Nzo5ZToxMjpiMDo4MToxOTpjODowNzpkOTpjYzo4NzpmMToNCisgICAgICAgICAxYjpmZTpm
MDo4ZjpiMjpjMzpmMTpkYTpmMDo1NTplNTo0YTo5YjpmZjowZDowMTo1Zjo2NToNCisgICAgICAg
ICA5NTowNzo5MjpjNjo3Yjo3Mzo5NTo1OTphYTo2YjpjNjo5YzowMTo0ZTphMjoyYjplYTo3NzoN
CisgICAgICAgICBkNDpmNDphYjpkNjplNTo5NDplYjo4MTozNzo1NTo5Yzo5MDozZjo3MzoyMzox
ZDo4NDpjMjoNCisgICAgICAgICA4Mjo0Mjo1Njo5YToxMzo2OTozMzo0ODpkNjowZDowZTo1ODo4
MjphYzo5MDplZjpiMzphMDoNCisgICAgICAgICA2YzpkZTo3OTpmNjoxNzpjNTpmMDoxZTpmMzoz
Nzo3NDowMTpmMDo0Nzo5Yzo3Nzo5YzphNzoNCisgICAgICAgICBhZjplMDo2MDpjYTpkNzowMjpk
ZDo1MDo0ODo2OTpiMToxYjo4Mzo4Nzo1YTo3Yzo3NDo0NDoNCisgICAgICAgICBkYTpjNTpkZTpi
OA0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSWdpRENDSDNDZ0F3SUJBZ0lEQy9P
dk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZaTF3YkdGMFptOXli
UzEwWlhOMGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1ESTVORGRhDQorTUJ3
eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBC
QVFFRg0KK0FBT0NBUThBTUlJQkNnS0NBUUVBdjM3bUtteVMyQ3FFOEJjMnJwMGlkK3RwcVFPd2FG
amlESWt4WkJpdGJXUUkNCitLYzlxNzh3UStiTXpUQ0t4MmlSZnd6SHg4WHRnbDdKNUExMW0zTkhM
Zyt6VERPSFNtMzBXNDU3Y1dOMXNpWGVZDQorb3d5eWZHN1F2ejBzR2FISmg4SUtUcWdlTktodjJp
MEtUY0MwY1FaSlllb2F3R1RCMDdDUHdEdUNBU2pFNkRHTA0KK0IwdTErMklYVENvTjNxdk8zSUJv
djZzZFJlS2tvZ0ZxQmQ5QjV2MzRsQzdpbjZRQlZYM3J3VDArWVZDZzZqY3ENCisxY2NZVE96MURU
bHRWTk1FTVViWUVxQUtnbU50Z3FTTzFvSkRZWnNkbEpxd0hUVUMrTHRWZjR6M0llSmxOa0twDQor
aTFnUmtLQjhLRVhZbTRpVm1pYnAvVWNIZzNDS21Cc0xUb1NNQnJmaTR3SURBUUFCbzRJZDBEQ0NI
Y3d3Q1FZRA0KK1ZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVXJ0Z3ZtYnF4NkFQU3BjVXNEYnNXWEp1
Zjl3Z3dId1lEVlIwakJCZ3cNCitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3WURW
UjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HDQorQ0NzR0FRVUZCd01CTUlJZFd3WURWUjBSQklJ
ZFVqQ0NIVTZDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdg0KK2NESXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTMNCitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNeTUz
DQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
VnViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVZiM0EwTG5kbFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2hWdmNEZ3VkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0E1TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOaTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tnk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
Mk5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXlPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhN
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTWk1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBek55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNaTUzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTmk1
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBeU5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM05DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
V2IzQXpNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpPUzUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
TXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBek5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBOQzUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F6TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
eU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTFNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5pNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOeTUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBNU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
YjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5TNTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVO
eTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBNE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTRNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkSUla
YjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaDQor
YjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhk
R1p2Y20wdQ0KK2RHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
eExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlaYjNBMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
ekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeQ0KK055NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d05EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hw
dmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlMWEJz
DQorWVhSbWIzSnRMblJsYzNTQ0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGd6TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6TXk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBMk1pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UZ3VibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTANCitNeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRGt1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwDQorWlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1TlM1
dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpNdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RreExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
ME1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qWXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEWTVMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJ
YWIzQXpNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNemN1Ym05MExYZGwNCitZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGs0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0F4DQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpZdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RFekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBM09TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVkM2Qz
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNamt1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUxTG01dmRDMTNaV0l0Y0d4aGRHWnYN
CitjbTB1ZEdWemRJSWFiM0E1TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRR
dWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBNQ0KK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d016UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNETXdMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNUzUzZDNjdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNT
Q0dtOXdNalV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkwTG01dg0KK2RDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0MNCitHbTl3TlRFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RReExtNXZkQzEz
WldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeE1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR205d01UQXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitNaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRGMw
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzU0NHbTl3T0RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rn
MExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDDQorR205d05UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNESXpMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXpOUzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVFl1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6DQorT0M1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0K
K1pYTjBnaHB2Y0RZeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d09UQXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEY3dMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNVFV1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFkxTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0Ex
TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpndWJtOTBMWGRsDQorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mw0KK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R5NTNkM2N5TG5kbFlpMXdi
R0YwWm05eWJTNTANCitaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTVNeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNkeTUzZDNjeExuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjREl4TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0EzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3T1RjdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20w
dWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qWXVibTkw
TFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTENCitPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORFl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F6T1M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3
TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFM0xtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQor
R205d09EVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTNMbTV2ZEMxM1pXSXRj
R3hoZEdadg0KK2NtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdPREV1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNkM2N5TG5kM2R6RXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpFdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2h0M2QzY3hM
bmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0hYZDNkeTUzZDNjdWJtOTANCitMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM01T
NTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5kM2R5NTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWZkM2QzTVM1M2QzY3lMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJZmQzZDNNUzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUlmZDNkM01p
NTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTWk1M2QzY3kNCitMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJaQ0KK2QzZDNMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJamQzZDNNUzU0YmkwdGJIWmwNCitMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdpTjRi
aTB0YkhabExUWnNZV1F1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RJSWplRzR0TFd4
MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKbmQzZHk1NGJpMHQNCiti
SFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lX
UXVkM2QzDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2QzTVM1NGJpMHRiSFps
TFRac1lXUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3lMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbmVHNHRMV3gyWlMwMmJH
RmtMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWw0YmkwdA0KK2JqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXJlRzR0TFd4MlpTMDIN
CitiR0ZrTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0
NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTE0YmkwdGJqaHFObVJ6TlROcw0KK2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDTFhkM2R5NTRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJdWQzZDNNaTU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJ
NFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTVM1NGJpMHRiamhxTm1Seg0KK05UTnNk
M2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExXNDRhalprY3pVemJI
ZDMNCithM0p4YUhZeU9HRXVkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWVHNHRMVzQ0
YWpaa2N6VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SXZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0KK0xTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDTVhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1qaGhMbmQzZHk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGQzZHk1NGJpMHRiamhxDQorTm1Sek5UTnNkM2Ry
Y25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekV1ZUc0dA0KK0xX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pK
NGJpMHQNCitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUl5DQorZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHlj
V2gyTWpoaExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdqWjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpDQorTFhCc1lYUm1i
M0p0TG5SbGMzU0NObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gbw0K
K2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHVMUzF1
T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
STZlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmtMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElKQg0KK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NSWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQU5CZ2txaGtp
Rw0KKzl3MEJBUXNGQUFPQ0FRRUFpYVJFUSs4UHBqWnlNWWRFZFlhMlcxZ3N5eHdLTGpVeWc0Qndj
QnkzU3RGRlJIakUNCitGOWgzTkU1QzBuSWkvZzBLcnJnR2xOQnRlaUhZcElNekY5TUVxSk52WnZB
ekdRVUh0VFdES0ttUGhSZ2FodC9vDQordm8zUGFpVEJDQ2JkQXBnY0FkaUJTdVFnRkJsODc1RzFQ
dHBhOWhSRkdIMUZTeWgyTTFqRmpNa3Q3NGtSY0gzcg0KK1I1NFNzSUVaeUFmWnpJZnhHLzd3ajdM
RDhkcndWZVZLbS84TkFWOWxsUWVTeG50emxWbXFhOGFjQVU2aUsrcDMNCisxUFNyMXVXVTY0RTNW
WnlRUDNNakhZVENna0pXbWhOcE0waldEUTVZZ3F5UTc3T2diTjU1OWhmRjhCN3pOM1FCDQorOEVl
Y2Q1eW5yK0JneXRjQzNWQklhYkViZzRkYWZIUkUyc1hldUE9PQ0KKy0tLS0tRU5EIENFUlRJRklD
QVRFLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRf
dGVzdHMueW1sCmluZGV4IDc4MTFiYTk1OTE3YmIzY2M2YjVkMzJlY2JlOWU4OTUyOTc2MWFkYzMu
LjQ5NGZmMWVmYTE5Y2MwMjEzMzM3MDk0ODM4M2U1ZmIyMjE0NGQ0ZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
YWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCkBAIC0xNSw3ICsx
NSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1sCiAtIHRlbXBsYXRl
OiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZlc3QueW1sCi0tIHNj
cmlwdDogbm9fcHJveHk9JyonIC4vd3B0IHJ1biAtLXllcyAtLW5vLXBhdXNlIC0tbm8tZmFpbC1v
bi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0tYWZmZWN0ZWQgJHt7IHBh
cmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQgJChCdWlsZC5BcnRpZmFj
dFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13cHRzY3JlZW5zaG90ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVuc2hvdC50eHQgLS1jaGFu
bmVsIHByZXZpZXcgc2FmYXJpCistIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2Ug
LS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZl
Y3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1
aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNj
cmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90
LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKICAgZGlzcGxheU5hbWU6ICdSdW4gdGVzdHMn
CiAtIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCiAgIGRpc3BsYXlOYW1lOiAnUHVibGlz
aCByZXN1bHRzJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20u
YXBwbGUuU2FmYXJpLnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjIwODA5
NzJjOWY2MzQxMDA2MmVlOGQzM2QwZWQwMjg2YWY4ZjExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9F
TiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBs
aXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkFsbG93UmVtb3RlQXV0b21hdGlvbjwv
a2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
Y2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDZiZDVjMjMzNGFkNGUzZTRk
NWQ2ZmFhZjgwMDVmNGUwYjQ0Y2YxZmUuLmZkNjUwZTgwYWFhZDMwOWM4ZTk4MzI3NGQyYjgyM2Ji
YTkxYjFmYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFs
bF9jaHJvbWUueW1sCkBAIC0xLDYgKzEsOSBAQAogc3RlcHM6Ci0jIFRoaXMgaXMgZXF1aXZhbGVu
dCB0byBgSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9nb29nbGUtY2hyb21lLWRldmAs
Ci0jIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6
IEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcu
Z2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFz
dGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisjIFRoZSBjb25mbGljdGluZyBnb29nbGUt
Y2hyb21lIGFuZCBjaHJvbWVkcml2ZXIgY2Fza3MgYXJlIGZpcnN0IHVuaW5zdGFsbGVkLgorIyBU
aGUgcmF3IGdvb2dsZS1jaHJvbWUtZGV2IGNhc2sgVVJMIGlzIHVzZWQgdG8gYnlwYXNzIGNhY2hp
bmcuCistIHNjcmlwdDogfAorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNr
IHVuaW5zdGFsbCBnb29nbGUtY2hyb21lIHx8IHRydWUKKyAgICBIT01FQlJFV19OT19BVVRPX1VQ
REFURT0xIGJyZXcgY2FzayB1bmluc3RhbGwgY2hyb21lZHJpdmVyIHx8IHRydWUKKyAgICBIT01F
QlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBzOi8vcmF3LmdpdGh1
YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9D
YXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgogICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgQ2hyb21l
IERldicKICAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQu
T1MnXSwgJ0RhcndpbicpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2VkZ2UueW1sCmluZGV4IGU0YzQyNWFiN2EwZjAzMjE4ZDkyMmU3MzEwZWE5ZDhmZGUwZjUx
YWEuLjI5N2I2ZTYwYjI5ZjNhOWJiZDAwYjNlZTAwYjcwNTYzNTEzOGYyY2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvaW5zdGFsbF9lZGdlLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwKQEAgLTQsNiArNCwy
NiBAQCBwYXJhbWV0ZXJzOgogIyBTaG91bGQgbWF0Y2ggaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVz
dHMub3JnL3J1bm5pbmctdGVzdHMvY2hyb21lLmh0bWwKICMgSnVzdCByZXBsYWNlIGNocm9tZSB3
aXRoIGVkZ2VjaHJvbWl1bQogc3RlcHM6CistICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWws
ICdzdGFibGUnKSB9fToKKyAgLSBwb3dlcnNoZWxsOiB8CisgICAgICAkZWRnZUluc3RhbGxlck5h
bWUgPSAnTWljcm9zb2Z0RWRnZVNldHVwLmV4ZScKKyAgICAgICMgTGluayB0byBTdGFibGUgY2hh
bm5lbCBpbnN0YWxsZXIKKyAgICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291cmNlICdodHRwczov
L2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjEwODgzNCZDaGFubmVsPVN0YWJsZSZs
YW5ndWFnZT1lbicgLURlc3RpbmF0aW9uIE1pY3Jvc29mdEVkZ2VTZXR1cC5leGUKKyAgICAgIGlm
ICgtbm90IChUZXN0LVBhdGggJGVkZ2VJbnN0YWxsZXJOYW1lKSkgeworICAgICAgICBUaHJvdyAi
RmFpbGVkIHRvIGRvd25sb2FkIEVkZ2UgaW5zdGFsbGVyIHRvICRlZGdlSW5zdGFsbGVyTmFtZS4i
CisgICAgICB9CisgICAgICBjbWQgL2MgU1RBUlQgL1dBSVQgJGVkZ2VJbnN0YWxsZXJOYW1lIC9z
aWxlbnQgL2luc3RhbGwKKyAgICAgICRlZGdlUGF0aCA9ICIkZW52OnN5c3RlbWRyaXZlXFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb24iCisgICAgICBpZiAoVGVz
dC1QYXRoICRlZGdlUGF0aCkgeworICAgICAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBl
bmRwYXRoXSRlZGdlUGF0aCIKKyAgICAgICAgV3JpdGUtSG9zdCAiRWRnZSBTdGFibGUgaW5zdGFs
bGVkIGF0ICRlZGdlUGF0aC4iCisgICAgICAgIChHZXQtSXRlbSAtUGF0aCAiJGVkZ2VQYXRoXG1z
ZWRnZS5leGUiKS5WZXJzaW9uSW5mbyB8IEZvcm1hdC1MaXN0CisgICAgICB9IGVsc2UgeworICAg
ICAgICBDb3B5LUl0ZW0gLVBhdGggIiRlbnY6dGVtcFwqZWRnZSoubG9nIiAtRGVzdGluYXRpb24g
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpICAtRm9yY2UKKyAgICAgICAgVGhyb3cg
IkZhaWxlZCB0byBpbnN0YWxsIEVkZ2UgYXQgJGVkZ2VQYXRoIgorICAgICAgfQorICAgIGRpc3Bs
YXlOYW1lOiAnSW5zdGFsbCBFZGdlIFN0YWJsZScKKwogLSAke3sgaWYgZXEocGFyYW1ldGVycy5j
aGFubmVsLCAnY2FuYXJ5JykgfX06CiAgIC0gcG93ZXJzaGVsbDogfAogICAgICAgJGVkZ2VJbnN0
YWxsZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3Rh
bGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IGE4NjQxNDY1YWM4ZWFl
NzAwODZiZDBjZWQ0YTgwZDNhMmRhMzUxMTMuLmQwNjYwZDE1MmJiZGZjODlmMzA4YmZjMDQ4Y2Qy
MjIxZTllYTc1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9zYWZhcmkueW1sCkBAIC0zLDYgKzMsOSBAQCBwYXJhbWV0ZXJzOgogCiAjIFNob3VsZCBt
YXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9zYWZhcmku
aHRtbAogc3RlcHM6CistIHNjcmlwdDogZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLldlYkRyaXZl
ciBEaWFnbm9zdGljc0VuYWJsZWQgMQorICBkaXNwbGF5TmFtZTogJ0VuYWJsZSBzYWZhcmlkcml2
ZXIgZGlhZ25vc3RpY3MnCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJf
ZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZp
ZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKICAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEg
YnJldyBjYXNrIGluc3RhbGwgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmll
dy5yYgpAQCAtMTIsOSArMTUsNiBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwg
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5l
bCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgIyBXb3JrYXJvdW5kIGZvciBg
c3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmc6Ci0gICAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xOTg0NQotICAgICAgbWtk
aXIgLXAgfi9MaWJyYXJ5L1dlYkRyaXZlci8KLSAgICAgIGNwIHRvb2xzL2NpL2F6dXJlL2NvbS5h
cHBsZS5TYWZhcmkucGxpc3Qgfi9MaWJyYXJ5L1dlYkRyaXZlci8KKyAgICAgIHN1ZG8gc2FmYXJp
ZHJpdmVyIC0tZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdl
YktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlO
YW1lOiAnQ29uZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9waXBfaW5zdGFsbC55bWwKaW5kZXggYzg3OTUzNDVmNmJjZjRhOTQzZTA3YTQ1OTk0N2U3MThh
ZDZhMGFmYy4uMThkMTg3OWU5NzE2MTM1MzJmYWM1NjczZDlhODA0YWNjMWJjODY3MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9waXBfaW5zdGFsbC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKQEAgLTIsMTQg
KzIsNSBAQCBwYXJhbWV0ZXJzOgogICBwYWNrYWdlczogJycKIAogc3RlcHM6Ci0tIHNjcmlwdDog
fAotICAgICMgYHN1ZG8gcGlwIGluc3RhbGxgIGlzIG5vdCB1c2VkIGJlY2F1c2Ugc29tZSBwYWNr
YWdlcyAoZS5nLiB0b3gpIGRlcGVuZCBvbgotICAgICMgc3lzdGVtIHBhY2thZ2VzIChlLmcuIHNl
dHVwdG9vbHMpIHdoaWNoIGNhbm5vdCBiZSB1cGdyYWRlZCBkdWUgdG8gU3lzdGVtCi0gICAgIyBJ
bnRlZ3JpdHkgUHJvdGVjdGlvbiwgc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMzAw
NDkyMC4KLSAgICBwaXAgaW5zdGFsbCAtLXVzZXIgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0K
LSAgICBlY2hvICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXSRIT01FL0xpYnJhcnkvUHl0aG9uLzIu
Ny9iaW4iCi0gIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMgKG1hY09TKScK
LSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQuT1MnXSwg
J0RhcndpbicpKQogLSBzY3JpcHQ6IHBpcCAtLWRpc2FibGUtcGlwLXZlcnNpb24tY2hlY2sgaW5z
dGFsbCAtLXVwZ3JhZGUgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0KLSAgZGlzcGxheU5hbWU6
ICdJbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyAoV2luZG93cyknCi0gIGNvbmRpdGlvbjogYW5kKHN1
Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCisgIGRp
c3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxp
c2hfbG9ncy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5Mzk3YTkxYWQ3
Y2E0MjQ4NjRjNTMyNmI1ZmU3YjRhMzY4NWE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlz
aF9sb2dzLnltbApAQCAtMCwwICsxLDcgQEAKK3N0ZXBzOgorLSB0YXNrOiBQdWJsaXNoQnVpbGRB
cnRpZmFjdHNAMQorICBkaXNwbGF5TmFtZTogJ1B1Ymxpc2ggc2FmYXJpZHJpdmVyIGxvZ3MnCisg
IGlucHV0czoKKyAgICBwYXRodG9QdWJsaXNoOiAvVXNlcnMvcnVubmVyL0xpYnJhcnkvTG9ncy9j
b20uYXBwbGUuV2ViRHJpdmVyLworICAgIGFydGlmYWN0TmFtZTogc2FmYXJpZHJpdmVyLWxvZ3MK
KyAgY29uZGl0aW9uOiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFnbm9zZSddLCB0cnVl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3LnJiCmluZGV4IGIzMjczOWJlNThhNzAyOGQ1ZmY0YTJkZTliNTZk
ZmI3ZWEwOTk4MmIuLmVhZTAzNDc0YTQ5ZmY3YmVjZTMyZGFmNDgyMzkwMDI1YzNjZTllMmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10
ZWNobm9sb2d5LXByZXZpZXcucmIKQEAgLTEsMTAgKzEsMTAgQEAKIGNhc2sgJ3NhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcnIGRvCiAgIGlmIE1hY09TLnZlcnNpb24gPD0gOm1vamF2ZQotICAgIHZl
cnNpb24gJzk2LDA2MS00NDA1Ni0yMDE5MTEyMC1hYzdiYjE5Ni0yNzI0LTQ4NDAtYmNlOS02Yzgz
ZWNkYmZiMmMnCi0gICAgc2hhMjU2ICdlODBjZWFjZGZmN2U3NTIxODM2NTk5M2U1YWYxYzgxYzli
Y2M0Nzg1MjkxYWUwMGFiYmEzZDE0YWM1NjE0MzE3JworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU5
NjYtMjAyMDA1MTMtODY1NzFiZTYtODc4ZS00MTFiLWE1YjktNjVhOTcxNTczZmFlJworICAgIHNo
YTI1NiAnODUxOGM4OTE3YTkxNzJhZWI3NWRlZWI2MTA2MGQzNTMyMjk3NjBmZDU0ZGM4NWJkMzhh
MDg5N2NjMWQxMjEwNScKICAgZWxzZQotICAgIHZlcnNpb24gJzk2LDA2MS00NzcxOC0yMDE5MTEy
MC0wMmJjNzU2OS1lZTZiLTRjMjgtOWVjNC0wY2VlZGEzYzNjM2EnCi0gICAgc2hhMjU2ICdiYmZj
ZGMzNmJmOWI1NWFlYzU4MzhkNjZlMzRjNDFkZDNmNmE2NDA5MTQwNmJjMzhmNDVjODg4MzYwZjE5
MWZlJworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU4OTAtMjAyMDA1MTMtMzIxYTY5YjQtZGU1OC00
NDBlLTgxODItOGFjMDNkNjVmNmNlJworICAgIHNoYTI1NiAnZjNjMDczZDliNjBmZjZkMTFmODJh
YmJjNmNjMTMxZTU5MTNlNmQwZjJhMTFmMDk2OGFlNzdkYjFiNTFlMWUzNScKICAgZW5kCiAKICAg
dXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRl
cl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hf
cHl0ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKaW5kZXggYmM5MzA4MzZkM2Q3YjY2YmM2M2Fj
MjM5MmI1MDVmZDk5YWYzZTExZC4uMTJlZDY2YTlhMDIwNmY2ODY2ZmIxMjBlMjY0YmUzOWRjN2Uy
OTJlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1s
CkBAIC0xLDcgKzEsNyBAQAogcGFyYW1ldGVyczoKICAgZGlyZWN0b3J5OiAnJwogICB0b3hlbnY6
ICdBTEwnCi0KKyAgCiBzdGVwczoKIC0gdGVtcGxhdGU6IHBpcF9pbnN0YWxsLnltbAogICBwYXJh
bWV0ZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cK
aW5kZXggNDRmNTQzMTljMmI5ZjAyNGVhOTI1YTZjM2VjN2NlMjBlZTRkNTBkMi4uY2U3MDEyZjcz
Mzk5YTYyODZmNzdkNzMxNjIxNDAxNzRiMDljMzI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0
LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCkBAIC0xOCw3ICsxOCw2IEBAIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY2xlYW51cF93
aW4xMC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9ob29rLnltbAogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9jZXJ0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbApAQCAtMjgsNiArMjcsNyBA
QCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFy
aS55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJp
LXRlY2hub2xvZ3ktcHJldmlldy5yYgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0
LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCmluZGV4IDcwOWNj
MmFhN2U2ODY3ZjU0OGQ0ZWZkZDYyZDc0YWJjMTg1ZTY1N2IuLmY4YWUzZTYxYmY3NTZkOTdjNzhl
MmQ5NTg5MTIxYjdkNjAxMDY2ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0
X2RpZmYuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQCBtYWluKCkgewogCiAgICAgI8KgRXhjbHVkZSB0
ZXN0cyB0aGF0IHJlbHkgb24gZm9udCByZW5kZXJpbmcKICAgICBleGNsdWRlZD0oCi0gICAgICAg
ICcyZGNvbnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwu
YmFzaWMucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKLSAgICAgICAgJzJkY29udGV4
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5ydGwucG5nJwot
ICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJh
dy5zdHJva2UuYmFzaWMucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAgICdvZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKLSAgICAgICAgJ29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKKyAgICAgICAgJ2h0
bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3
LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRl
eHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCisg
ICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJk
LnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2Ry
YXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwor
ICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LmZpbGwuYmFz
aWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3
LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVu
L3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29m
ZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwogICAgICkKIAogICAg
IC4vdXBkYXRlLWJ1aWx0LXRlc3RzLnNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVj
dHVyZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCmluZGV4IDhkYjA4Nzk0YWRlMjZi
ZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIuLjg5MjY3YjUwY2I2NDMyYzQ5NWQ0MjhhMTgwYzU5
NjU5YjVjNWE2MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCkBAIC01LDMxICs1LDI1IEBAIFNDUklQVF9ESVI9
JChjZCAkKGRpcm5hbWUgIiQwIikgJiYgcHdkIC1QKQogV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4v
Li4KIGNkICRXUFRfUk9PVAogCi1hZGRfd3B0X2hvc3RzKCkgewotICAgIC4vd3B0IG1ha2UtaG9z
dHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMKLX0KLQogdGVzdF9pbmZyYXN0cnVjdHVy
ZSgpIHsKLSAgICBsb2NhbCBBUkdTPSIiOwotICAgIGlmIFsgJFBST0RVQ1QgPT0gImZpcmVmb3gi
IF07IHRoZW4KLSAgICAgICAgQVJHUz0iLS1pbnN0YWxsLWJyb3dzZXIiCi0gICAgZWxzZQotICAg
ICAgICBBUkdTPSQxCi0gICAgZmkKLSAgICBURVJNPWR1bWIgLi93cHQgcnVuIC0tbG9nLW1hY2gg
LSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFz
dHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0
cnVjdHVyZS8KKyAgICBQWTNfRkxBRz0iJDIiCisgICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxB
RyBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24g
LS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzICQxICRQ
Uk9EVUNUIGluZnJhc3RydWN0dXJlLwogfQogCiBtYWluKCkgewotICAgIFBST0RVQ1RTPSggImZp
cmVmb3giICJjaHJvbWUiICkKKyAgICBpZiBbWyAkIyAtZXEgMSAmJiAiJDEiID0gIi0tcHkzIiBd
XTsgdGhlbgorICAgICAgICBQUk9EVUNUUz0oICJjaHJvbWUiICkKKyAgICBlbHNlCisgICAgICAg
IFBST0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBmaQogICAgIC4vd3B0IG1hbmlm
ZXN0IC0tcmVidWlsZCAtcCB+L21ldGEvTUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGlu
ICIke1BST0RVQ1RTW0BdfSI7IGRvCiAgICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9t
ZSIgXV07IHRoZW4KLSAgICAgICAgICAgIGFkZF93cHRfaG9zdHMKLSAgICAgICAgICAgIHRlc3Rf
aW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkg
LS1jaGFubmVsIGRldiIKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5
PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlCisgICAgICAgICAgICB0
ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKICAg
ICAgICAgZmkKICAgICBkb25lCiB9CiAKLW1haW4KK21haW4gJDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9i
cy5weQppbmRleCAzZDgwOWVmYTM3Y2NmZjJjMjU4MzQzYjY0NzkxNzYyZmM1MDdhOTBmLi43NjI0
ZWIwZDUxNmZjMTZhNTcyNGE2NzE0ZDI3NjdiYzRlMTIzMjVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9q
b2JzLnB5CkBAIC0zMywxNSArMzMsMTYgQEAgam9iX3BhdGhfbWFwID0gewogICAgICJ3cHRydW5u
ZXJfdW5pdHRlc3QiOiBbInRvb2xzLyJdLAogICAgICJidWlsZF9jc3MiOiBbImNzcy8iXSwKICAg
ICAidXBkYXRlX2J1aWx0IjogWyJ1cGRhdGUtYnVpbHQtdGVzdHNcXC5zaCIsCi0gICAgICAgICAg
ICAgICAgICAgICAiMmRjb250ZXh0LyIsCiAgICAgICAgICAgICAgICAgICAgICAiaW5mcmFzdHJ1
Y3R1cmUvIiwKICAgICAgICAgICAgICAgICAgICAgICJodG1sLyIsCi0gICAgICAgICAgICAgICAg
ICAgICAib2Zmc2NyZWVuLWNhbnZhcy8iLAogICAgICAgICAgICAgICAgICAgICAgIm1pbWVzbmlm
Zi8iLAogICAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdWkvIiwKICAgICAgICAgICAgICAg
ICAgICAgICJXZWJJREwiXSwKICAgICAid3B0X2ludGVncmF0aW9uIjogWyJ0b29scy8iXSwKLSAg
ICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZyYXN0cnVjdHVyZS8iLCAidG9vbHMv
IiwgInJlc291cmNlcy8iXSwKKyAgICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZy
YXN0cnVjdHVyZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VzLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZHJpdmVyL3Rlc3RzL3N1cHBvcnQiXSwKIH0K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQppbmRleCAxZTM4
OGRmYTc0MTlhMjFiMjA1MDNiMzA3NWMzNmJjMTExMzZkZDdkLi4yMGY5NmQ5YTNlZWVjNjM5OTc0
Y2E0NjFkOWQ0NWY5MWM5NmMwMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZl
c3RfYnVpbGQucHkKQEAgLTg0LDggKzg0LDcgQEAgZGVmIHJlcXVlc3QodXJsLCBkZXNjLCBtZXRo
b2Q9Tm9uZSwgZGF0YT1Ob25lLCBqc29uX2RhdGE9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWQKICAg
ICB0cnk6CiAgICAgICAgIHJldHVybiByZXNwLmpzb24oKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQgZGF0YSB3YXMgbm90
IEpTT04gUmVzcG9uc2U6IiAlCi0gICAgICAgICAgICAgICAgICAgICAoZGVzYywgcmVzcC5zdGF0
dXNfY29kZSkpCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgZmFpbGVkOiBSZXR1cm5lZCBkYXRh
IHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUgZGVzYykKICAgICAgICAgbG9nZ2VyLmVycm9yKHJl
c3AudGV4dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKaW5kZXggYmE3
Nzc0NDQ2ZTA4MzZlMzE5YzBkMDcxZDYyNjJlNTYyZmIxNDZlMS4uYmE1OTk3ZjY4YTYxNWY0OTMy
MmFjMDA5YTE1YWViZjBhNWEwNzFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmll
dy5weQpAQCAtMTIzLDYgKzEyMywyNyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAgICAg
ICAgcmV0dXJuIGRhdGFbJ2l0ZW1zJ10KIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIHB1
bGxfcmVxdWVzdF9pc19mcm9tX2Zvcmsoc2VsZiwgcHVsbF9yZXF1ZXN0KToKKyAgICAgICAgcHJf
bnVtYmVyID0gcHVsbF9yZXF1ZXN0WydudW1iZXInXQorICAgICAgICB1cmwgPSAne30vcmVwb3Mv
e30vcHVsbHMve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1
Yl9wcm9qZWN0LCBwcl9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdD
aGVja2luZyBpZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCisK
KyAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKworICAgICAgICByZXBvX25h
bWUgPSBkYXRhWydoZWFkJ11bJ3JlcG8nXVsnZnVsbF9uYW1lJ10KKyAgICAgICAgaXNfZm9yayA9
IHJlcG9fbmFtZSAhPSBzZWxmLl9naXRodWJfcHJvamVjdAorCisgICAgICAgIGxvZ2dlci5pbmZv
KAorICAgICAgICAgICAgJ1B1bGwgcmVxdWVzdCAlcyBpcyBmcm9tIFwnJXNcJy4gSXMgYSBmb3Jr
OiAlcycsCisgICAgICAgICAgICBwcl9udW1iZXIsIHJlcG9fbmFtZSwgaXNfZm9yaworICAgICAg
ICApCisKKyAgICAgICAgcmV0dXJuIGlzX2ZvcmsKKwogICAgIEBndWFyZCgnY29yZScpCiAgICAg
ZGVmIGNyZWF0ZV9yZWYoc2VsZiwgcmVmc3BlYywgcmV2aXNpb24pOgogICAgICAgICB1cmwgPSAn
e30vcmVwb3Mve30vZ2l0L3JlZnMnLmZvcm1hdChzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJv
amVjdCkKQEAgLTE4MCw5ICsyMDEsOCBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgQGd1
YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX2RlcGxveW1lbnQoc2VsZiwgdGFyZ2V0LCBkZXBs
b3ltZW50LCBzdGF0ZSwgZGVzY3JpcHRpb249JycpOgogICAgICAgICBpZiBzdGF0ZSBpbiAoJ3Bl
bmRpbmcnLCAnc3VjY2VzcycpOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3N1
Ym1pc3Npb25zL3t9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0LCBkZXBsb3ltZW50
WydlbnZpcm9ubWVudCddCi0gICAgICAgICAgICApCisgICAgICAgICAgICBwcl9udW1iZXIgPSBk
ZXBsb3ltZW50WydlbnZpcm9ubWVudCddW2xlbihERVBMT1lNRU5UX1BSRUZJWCk6XQorICAgICAg
ICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3t9Jy5mb3JtYXQodGFyZ2V0LCBwcl9udW1iZXIp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwgPSBOb25lCiAgICAg
ICAgIHVybCA9ICd7fS9yZXBvcy97fS9kZXBsb3ltZW50cy97fS9zdGF0dXNlcycuZm9ybWF0KApA
QCAtMjQ2LDEzICsyNjYsMTYgQEAgZGVmIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1ZXN0
KToKIAogICAgIHJldHVybiBGYWxzZQogCi1kZWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVx
dWVzdCk6CitkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAg
ICAgcmV0dXJuICgKLSAgICAgICAgaXNfb3BlbihwdWxsX3JlcXVlc3QpIGFuZAotICAgICAgICBw
dWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElPTl9HSVRIVUJfVVNF
UlMgYW5kICgKLSAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10g
aW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TIG9yCi0gICAgICAgICAgICBoYXNfbWlycm9y
aW5nX2xhYmVsKHB1bGxfcmVxdWVzdCkKLSAgICAgICAgKQorICAgICAgICBpc19vcGVuKHB1bGxf
cmVxdWVzdCkgYW5kICgKKyAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1
ZXN0KSBvciAoCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10g
bm90IGluIEFVVE9NQVRJT05fR0lUSFVCX1VTRVJTIGFuZAorICAgICAgICAgICAgICAgIHB1bGxf
cmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJ
T05TCisgICAgICAgICAgICApCisgICAgICAgICkgYW5kCisgICAgICAgICMgUXVlcnkgdGhpcyBs
YXN0IGFzIGl0IHJlcXVpcmVzIGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5CisgICAgICAgIG5v
dCBwcm9qZWN0LnB1bGxfcmVxdWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQogICAgICkK
IAogZGVmIGlzX2RlcGxveWVkKGhvc3QsIGRlcGxveW1lbnQpOgpAQCAtMjkxLDcgKzMxNCw3IEBA
IGRlZiBzeW5jaHJvbml6ZShob3N0LCBnaXRodWJfcHJvamVjdCwgd2luZG93KToKICAgICAgICAg
cmV2aXNpb25fdHJ1c3RlZCA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3BlY190cnVzdGVkKQog
ICAgICAgICByZXZpc2lvbl9vcGVuID0gcmVtb3RlLmdldF9yZXZpc2lvbihyZWZzcGVjX29wZW4p
CiAKLSAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVxdWVzdCk6CisgICAgICAg
IGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgogICAgICAgICAg
ICAgbG9nZ2VyLmluZm8oJ1B1bGwgUmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQogCiAgICAg
ICAgICAgICBpZiByZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IGY5MDg2YTMxYmQ5M2JhZjcyODE5ZmM0NTBmOTBhMjkwZDY1Njc0ZmQuLmE1
YThjYTdkYjI5YWI0ODRmZTM5NzQ3NWY5YjVjZmM0MTJkNjUxN2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcnVuX3RjLnB5CkBAIC0zNiwxMSArMzYsMTUgQEAgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBH
aXRIdWIgZXZlbnQgcGF5bG9hZC4KICIiIgogCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBmbm1h
dGNoCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cworaW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCB6
aXBmaWxlCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgU29ja2V0RXJyb3IgICMgTk9RQTog
TjgxMgogaW1wb3J0IGVycm5vCiB0cnk6CkBAIC0xNDcsMTMgKzE1MSwxNCBAQCBkZWYgaW5zdGFs
bF9jaHJvbWUoY2hhbm5lbCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXpl
ZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKICAgICBkZXN0ID0gb3MucGF0aC5q
b2luKCIvdG1wIiwgZGViX2FyY2hpdmUpCi0gICAgcmVzcCA9IHVybG9wZW4oImh0dHBzOi8vZGwu
Z29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUpCisgICAgZGViX3VybCA9
ICJodHRwczovL2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRlYl9hcmNoaXZlCiAg
ICAgd2l0aCBvcGVuKGRlc3QsICJ3IikgYXMgZjoKLSAgICAgICAgZi53cml0ZShyZXNwLnJlYWQo
KSkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgZGViX3VybCkKIAogICAg
IHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQogICAgIHJ1bihbInN1
ZG8iLCAiZ2RlYmkiLCAiLXFuIiwgIi90bXAvJXMiICUgZGViX2FyY2hpdmVdKQogCisKIGRlZiBp
bnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwpOgogICAgICMgQ29u
ZmlndXJlIHdlYmtpdGd0ay5vcmcvZGViaWFuIHJlcG9zaXRvcnkgZm9yICRjaGFubmVsIGFuZCBw
aW4gaXQgd2l0aCBtYXhpbXVtIHByaW9yaXR5CiAgICAgcnVuKFsic3VkbyIsICJhcHQta2V5Iiwg
ImFkdiIsICItLWZldGNoLWtleXMiLCAiaHR0cHM6Ly93ZWJraXRndGsub3JnL2RlYmlhbi9hcHQu
a2V5Il0pCkBAIC0xNjksMTUgKzE3NCwxNiBAQCBkZWYgaW5zdGFsbF93ZWJraXRndGtfZnJvbV9h
cHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFx
eSIsICItdCIsICJiaW9uaWMtd3B0LXdlYmtpdC11cGRhdGVzIiwgImluc3RhbGwiLCAid2Via2l0
Mmd0ay1kcml2ZXIiXSkKIAogCi0jIERvd25sb2FkIGFuIFVSTCBpbiBjaHVua3MgYW5kIHNhdmVz
IGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0cnVuY2F0aW5nIGl0KQotIyBJdCBkb2Vzbid0IGNs
b3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgotIyBJdCByZXRy
aWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8gbWF4X3JldHJpZXMu
Ci1kZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4X3JldHJpZXM9Myk6
Ci0gICAgZG93bmxvYWRfc3VjY2VlZCA9IEZhbHNlCi0gICAgaWYgbWF4X3JldHJpZXMgPCAwOgot
ICAgICAgICBtYXhfcmV0cmllcyA9IDAKLSAgICBmb3IgY3VycmVudF9yZXRyeSBpbiByYW5nZSht
YXhfcmV0cmllcysxKToKK2RlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBt
YXhfcmV0cmllcz01KToKKyAgICAiIiJEb3dubG9hZCBhbiBVUkwgaW4gY2h1bmtzIGFuZCBzYXZl
cyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKKyAgICBJdCBkb2Vzbid0
IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgorICAgIEl0
IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2YgRUNPTk5SRVNFVCB1cCB0byBtYXhfcmV0
cmllcy4iIiIKKyAgICBpZiBtYXhfcmV0cmllcyA8IDE6CisgICAgICAgIG1heF9yZXRyaWVzID0g
MQorICAgIHdhaXQgPSAyCisgICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFuZ2UoMSwgbWF4X3Jl
dHJpZXMrMSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJJTkZPOiBEb3dubG9h
ZGluZyAlcyBUcnkgJWQvJWQiICUgKHVybCwgY3VycmVudF9yZXRyeSwgbWF4X3JldHJpZXMpKQog
ICAgICAgICAgICAgcmVzcCA9IHVybG9wZW4odXJsKQogICAgICAgICAgICAgIyBXZSBtYXkgY29t
ZSBoZXJlIGluIGEgcmV0cnksIGVuc3VyZSB0byB0cnVuY2F0ZSBmZCBiZWZvcmUgc3RhcnQgd3Jp
dGluZy4KICAgICAgICAgICAgIGZkLnNlZWsoMCkKQEAgLTE4OCwyMiArMTk0LDIzIEBAIGRlZiBk
b3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBtYXhfcmV0cmllcz0zKToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsgICMgRG93bmxvYWQgZmluaXNoZWQKICAgICAgICAgICAgICAg
ICBmZC53cml0ZShjaHVuaykKICAgICAgICAgICAgIGZkLmZsdXNoKCkKLSAgICAgICAgICAgIGRv
d25sb2FkX3N1Y2NlZWQgPSBUcnVlCi0gICAgICAgICAgICBicmVhayAgIyBTdWNlc3MKKyAgICAg
ICAgICAgICMgU3VjY2VzcworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGV4Y2VwdCBTb2Nr
ZXRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFU0VU
OgotICAgICAgICAgICAgICAgIHJhaXNlICAjIFVua25vd24gZXJyb3IKLSAgICAgICAgICAgIGlm
IGN1cnJlbnRfcmV0cnkgPCBtYXhfcmV0cmllczoKLSAgICAgICAgICAgICAgICBwcmludCgiRVJS
T1I6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gUmV0cnlpbmcgLi4uIikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZSAgIyBSZXRyeQotICAgIHJldHVybiBkb3dubG9hZF9zdWNjZWVkCisgICAg
ICAgICAgICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXMgYW5kIGUuZXJybm8gPT0gZXJy
bm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAjIFJldHJ5CisgICAgICAgICAgICAgICAg
cHJpbnQoIkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5aW5nIGFmdGVyICVk
cy4uLiIgJSB3YWl0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICAgICAg
ICAgICAgICB3YWl0ICo9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBN
YXhpbXVtIHJldHJpZXMgb3IgdW5rbm93biBlcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlCiAK
IAogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fdGFyYmFsbF9idW5kbGUoY2hhbm5lbCk6CiAg
ICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIudGFyLnh6IikgYXMg
dGVtcF90YXJiYWxsOgogICAgICAgICBkb3dubG9hZF91cmwgPSAiaHR0cHM6Ly93ZWJraXRndGsu
b3JnL2J1aWx0LXByb2R1Y3RzL25pZ2h0bHkvd2Via2l0Z3RrLW5pZ2h0bHktYnVpbGQtbGFzdC50
YXIueHoiCi0gICAgICAgIGlmIG5vdCBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcih0ZW1wX3Rh
cmJhbGwsIGRvd25sb2FkX3VybCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNh
bid0IGRvd25sb2FkICVzLiBBYm9ydGluZyIgJSBkb3dubG9hZF91cmwpCisgICAgICAgIGRvd25s
b2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRfdXJsKQogICAgICAg
ICBydW4oWyJzdWRvIiwgInRhciIsICJ4ZmEiLCB0ZW1wX3RhcmJhbGwubmFtZSwgIi1DIiwgIi8i
XSkKICAgICAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0
IiwgIi1xcXkiLCAidXBkYXRlIl0pCkBAIC0yMTgsNiArMjI1LDcgQEAgZGVmIGluc3RhbGxfd2Vi
a2l0Z3RrKGNoYW5uZWwpOgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVu
cmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKKwogZGVmIHN0YXJ0
X3h2ZmIoKToKICAgICBzdGFydChbInN1ZG8iLCAiWHZmYiIsIG9zLmVudmlyb25bIkRJU1BMQVki
XSwgIi1zY3JlZW4iLCAiMCIsCiAgICAgICAgICAgICIlc3glc3glcyIgJSAob3MuZW52aXJvblsi
U0NSRUVOX1dJRFRIIl0sCkBAIC0yNDYsNyArMjU0LDY3IEBAIGRlZiBzZXRfdmFyaWFibGVzKGV2
ZW50KToKICAgICAgICAgb3MuZW52aXJvblsiR0lUSFVCX0JSQU5DSCJdID0gYnJhbmNoCiAKIAor
ZGVmIHRhc2tfdXJsKHRhc2tfaWQpOgorICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NM
VVNURVJfUk9PVF9VUkwnXQorICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVy
Lm5ldCc6CisgICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5u
ZXQvdjEvdGFzayIKKyAgICBlbHNlOgorICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAi
L2FwaS9xdWV1ZS92MS90YXNrIgorCisgICAgcmV0dXJuICIlcy8lcyIgJSAocXVldWVfYmFzZSwg
dGFza19pZCkKKworCitkZWYgZG93bmxvYWRfYXJ0aWZhY3RzKGFydGlmYWN0cyk6CisgICAgYXJ0
aWZhY3RfbGlzdF9ieV90YXNrID0ge30KKyAgICBmb3IgYXJ0aWZhY3QgaW4gYXJ0aWZhY3RzOgor
ICAgICAgICBiYXNlX3VybCA9IHRhc2tfdXJsKGFydGlmYWN0WyJ0YXNrIl0pCisgICAgICAgIGlm
IGFydGlmYWN0WyJ0YXNrIl0gbm90IGluIGFydGlmYWN0X2xpc3RfYnlfdGFzazoKKyAgICAgICAg
ICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAgICAgICAgICAgICAg
ZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgYmFzZV91cmwgKyAiL2FydGlmYWN0cyIpCisg
ICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgYXJ0aWZhY3RzX2RhdGEg
PSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgIGFydGlmYWN0X2xpc3RfYnlfdGFza1thcnRpZmFj
dFsidGFzayJdXSA9IGFydGlmYWN0c19kYXRhCisKKyAgICAgICAgYXJ0aWZhY3RzX2RhdGEgPSBh
cnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0aWZhY3RbInRhc2siXV0KKyAgICAgICAgcHJpbnQoIkRF
QlVHOiBHb3QgYXJ0aWZhY3RzICVzIiAlIGFydGlmYWN0c19kYXRhKQorICAgICAgICBmb3VuZCA9
IEZhbHNlCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gYXJ0aWZhY3RzX2RhdGFbImFydGlmYWN0
cyJdOgorICAgICAgICAgICAgcHJpbnQoIkRFQlVHOiBjYW5kaWRhdGU6ICVzIGdsb2I6ICVzIiAl
IChjYW5kaWRhdGVbIm5hbWUiXSwgYXJ0aWZhY3RbImdsb2IiXSkpCisgICAgICAgICAgICBpZiBm
bm1hdGNoLmZubWF0Y2goY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJnbG9iIl0pOgorICAg
ICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIHByaW50KCJJTkZPOiBG
ZXRjaGluZyBhcml0ZmFjdCAlcyBmcm9tIHRhc2sgJXMiICUgKGNhbmRpZGF0ZVsibmFtZSJdLCBh
cnRpZmFjdFsidGFzayJdKSkKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBjYW5kaWRhdGVb
Im5hbWUiXS5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgICAgIHVybCA9IGJhc2VfdXJs
ICsgIi9hcnRpZmFjdHMvIiArIGNhbmRpZGF0ZVsibmFtZSJdCisgICAgICAgICAgICAgICAgZGVz
dF9wYXRoID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIsIGFydGlmYWN0WyJk
ZXN0Il0sIGZpbGVfbmFtZSkpCisgICAgICAgICAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUoZGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhk
ZXN0X2Rpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAg
ICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0X3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIHVybCkKKworICAgICAgICAg
ICAgICAgIGlmIGFydGlmYWN0LmdldCgiZXh0cmFjdCIpOgorICAgICAgICAgICAgICAgICAgICB1
bnBhY2soZGVzdF9wYXRoKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBwcmlu
dCgiV0FSTklORzogTm8gYXJ0aWZhY3QgZm91bmQgbWF0Y2hpbmcgJXMgaW4gdGFzayAlcyIgJSAo
YXJ0aWZhY3RbImdsb2IiXSwgYXJ0aWZhY3RbInRhc2siXSkpCisKKworZGVmIHVucGFjayhwYXRo
KToKKyAgICBkZXN0ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisgICAgaWYgdGFyZmlsZS5pc190
YXJmaWxlKHBhdGgpOgorICAgICAgICBydW4oWyJ0YXIiLCAiLXhmIiwgcGF0aF0sIGN3ZD1vcy5w
YXRoLmRpcm5hbWUocGF0aCkpCisgICAgZWxpZiB6aXBmaWxlLmlzX3ppcGZpbGUocGF0aCk6Cisg
ICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHBhdGgpIGFzIGFyY2hpdmU6CisgICAgICAgICAg
ICBhcmNoaXZlLmV4dHJhY3RhbGwoZGVzdCkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiRVJS
T1I6IERvbid0IGtub3cgaG93IHRvIGV4dHJhY3QgJXMiICUgcGF0aCkKKyAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uCisKKwogZGVmIHNldHVwX2Vudmlyb25tZW50KGFyZ3MpOgorICAgIGlmICJUQVNL
X0FSVElGQUNUUyIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJ0aWZhY3RzID0ganNvbi5sb2Fk
cyhvcy5lbnZpcm9uWyJUQVNLX0FSVElGQUNUUyJdKQorICAgICAgICBkb3dubG9hZF9hcnRpZmFj
dHMoYXJ0aWZhY3RzKQorCiAgICAgaWYgYXJncy5ob3N0c19maWxlOgogICAgICAgICBtYWtlX2hv
c3RzX2ZpbGUoKQogCkBAIC0zNjQsMTYgKzQzMiwxMCBAQCBkZWYgZmV0Y2hfZXZlbnRfZGF0YSgp
OgogICAgICAgICAjIEZvciBleGFtcGxlIHVuZGVyIGxvY2FsIHRlc3RpbmcKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NMVVNURVJfUk9PVF9V
UkwnXQotICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCc6Ci0gICAg
ICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5uZXQvdjEvdGFzayIK
LSAgICBlbHNlOgotICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAiL2FwaS9xdWV1ZS92
MS90YXNrIgotCi0KLSAgICByZXNwID0gdXJsb3BlbigiJXMvJXMiICUgKHF1ZXVlX2Jhc2UsIHRh
c2tfaWQpKQotCi0gICAgdGFza19kYXRhID0ganNvbi5sb2FkKHJlc3ApCisgICAgd2l0aCB0ZW1w
ZmlsZS5UZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2Ny
aXB0b3IoZiwgdGFza191cmwodGFza19pZCkpCisgICAgICAgIGYuc2VlaygwKQorICAgICAgICB0
YXNrX2RhdGEgPSBqc29uLmxvYWQoZikKICAgICBldmVudF9kYXRhID0gdGFza19kYXRhLmdldCgi
ZXh0cmEiLCB7fSkuZ2V0KCJnaXRodWJfZXZlbnQiKQogICAgIGlmIGV2ZW50X2RhdGEgaXMgbm90
IE5vbmU6CiAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGV2ZW50X2RhdGEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rh
c2tjbHVzdGVyLXJ1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CmluZGV4IGFjNWFiYzEyYjFmMTdkMmZj
OTNjNmFjNTYzNmJmZDZmZTdjYWZhMDQuLmQ4ZTQyY2NlYTIxMTI2OTRjNmQzYjhiMWFhNmNhNzAz
NGVhMjIyODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5
CkBAIC05LDEwICs5LDE4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKIGJyb3dz
ZXJfc3BlY2lmaWNfYXJncyA9IHsKLSAgICAiZmlyZWZveCI6IFsiLS1pbnN0YWxsLWJyb3dzZXIi
XSwKICAgICAic2Vydm8iOiBbIi0taW5zdGFsbC1icm93c2VyIiwgIi0tcHJvY2Vzc2VzPTEyIl0K
IH0KIAorZGVmIGdldF9icm93c2VyX2FyZ3MocHJvZHVjdCk6CisgICAgaWYgcHJvZHVjdCA9PSAi
ZmlyZWZveCI6CisgICAgICAgIGxvY2FsX2JpbmFyeSA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5w
YXRoLmpvaW4oIn4iLCAiYnVpbGQiLCAiZmlyZWZveCIsICJmaXJlZm94IikpCisgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGxvY2FsX2JpbmFyeSk6CisgICAgICAgICAgICByZXR1cm4gWyItLWJp
bmFyeT0lcyIgJSBsb2NhbF9iaW5hcnldCisgICAgICAgIHByaW50KCJXQVJOSU5HOiBMb2NhbCBm
aXJlZm94IGJpbmFyeSBub3QgZm91bmQiKQorICAgICAgICByZXR1cm4gWyItLWluc3RhbGwtYnJv
d3NlciJdCisgICAgcmV0dXJuIGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQocHJvZHVjdCwgW10p
CisKIAogZGVmIGZpbmRfd3B0cmVwb3J0KGFyZ3MpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKCkKQEAgLTY2LDcgKzc0LDcgQEAgZGVmIG1haW4ocHJvZHVjdCwgY29tbWl0
X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgICAgICItLW5vLWhlYWRsZXNzIiwKICAgICAgICAgIi0t
dmVyaWZ5LWxvZy1mdWxsIgogICAgIF0KLSAgICB3cHRfYXJncyArPSBicm93c2VyX3NwZWNpZmlj
X2FyZ3MuZ2V0KHByb2R1Y3QsIFtdKQorICAgIHdwdF9hcmdzICs9IGdldF9icm93c2VyX2FyZ3Mo
cHJvZHVjdCkKIAogICAgICMgSGFjayB0byBydW4gc2Vydm8gd2l0aCBvbmUgcHJvY2VzcyBvbmx5
IGZvciB3ZHNwZWMKICAgICBpZiBwcm9kdWN0ID09ICJzZXJ2byIgYW5kICItLXRlc3QtdHlwZT13
ZHNwZWMiIGluIHdwdF9hcmdzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAppbmRl
eCAxMWYzNjdmOTg2Zjk3ZmRiZmU0MGYwOWIyYWU0MTE0ZjI2MzkxNmY3Li43ODVjODJjY2EzOWNk
ZmIxODZmZGEyNDEwM2E1YTZmZDY0OWJlZTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JF
QURNRS5tZApAQCAtNDAsNiArNDAsMTQgQEAgdG9wLWxldmVsIHByb3BlcnRpZXM6CiAqIGBuYW1l
YDogT3B0aW9uYWwgU3RyaW5nLiBOYW1lIHRvIHVzZSBmb3IgdGhlIHRhc2sgb3ZlcnJpZGluZyB0
aGUKICAgcHJvcGVydHkgbmFtZS4gVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBz
dWJzdGl0dXRpb25zCiAgIGRlc2NyaWJlZCBiZWxvdy4KKyogYGRvd25sb2FkLWFydGlmYWN0c2A6
IE9wdGlvbmFsIE9iamVjdC4gQW4gYXJ0aWZhY3QgdG8gZG93bmxvYWQgZnJvbQorICBhIHRhc2sg
dGhhdCB0aGlzIHRhc2sgZGVwZW5kcyBvbi4gVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgorICAtIGB0YXNrYCAtIE5hbWUgb2YgdGhlIHRhc2sgcHJvZHVjaW5nIHRoZSBhcnRpZmFj
dAorICAtIGBnbG9iYCAtIEEgZ2xvYiBwYXR0ZXJuIGZvciB0aGUgZmlsZW5hbWUgb2YgdGhlIGFy
dGlmYWN0CisgIC0gYGRlc3RgIC0gQSBkaXJlY3RvcnkgcmVsdGl2ZSB0byB0aGUgaG9tZSBkaXJl
Y3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UKKyAgICAgICAgICAgICB0aGUgYXJ0aWZhY3QKKyAgLSBg
ZXh0cmFjdGAgLSBPcHRpb25hbC4gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhbiBhcmNo
aXZlIGFydGlmYWN0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbi1wbGFj
ZS4KIAogIyMgVGFzayBFeHBhbnNpb25zCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lz
aW9uLnB5CmluZGV4IDBjOTM1YjkzZjhlZTg3ZjY2ZGFkZWZkZGQzYTExNjE2MGVkOWRkM2YuLmY4
ZjE4NmY3NDRkODA4Mjc5MGE4YzNiZWM4NjU0ZmExNWNhN2YzZTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNp
b24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kZWNpc2lvbi5weQpAQCAtMTk5LDYgKzE5OSw3IEBAIGRlZiBidWlsZF9mdWxs
X2NvbW1hbmQoZXZlbnQsIHRhc2spOgogfi9zdGFydC5zaCBcCiAgICUocmVwb191cmwpcyBcCiAg
ICUoZmV0Y2hfcmVmKXM7CitzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6ZGVhZHNuYWtlcy9w
cGEKICUoaW5zdGFsbF9zdHIpcwogY2Qgd2ViLXBsYXRmb3JtLXRlc3RzOwogLi90b29scy9jaS9y
dW5fdGMucHkgJShvcHRpb25zX3N0cilzIC0tICUodGFza19jbWQpczsKQEAgLTIxMyw3ICsyMTQs
NyBAQCBkZWYgZ2V0X293bmVyKGV2ZW50KToKICAgICByZXR1cm4gIndlYi1wbGF0Zm9ybS10ZXN0
c0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20iCiAKIAotZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50
LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKK2RlZiBjcmVhdGVfdGNfdGFz
ayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywgZW52X2V4dHJhPU5v
bmUpOgogICAgIGNvbW1hbmQgPSBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQsIHRhc2spCiAgICAg
dGFza19pZCA9IHRhc2tjbHVzdGVyLnNsdWdJZCgpCiAgICAgdGFza19kYXRhID0gewpAQCAtMjQw
LDEyICsyNDEsMjQgQEAgZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBf
aWQsIGRlcGVuZHNfb25faWRzKToKICAgICAgICAgICAgICJnaXRodWJfZXZlbnQiOiBqc29uLmR1
bXBzKGV2ZW50KQogICAgICAgICB9CiAgICAgfQorICAgIGlmIGVudl9leHRyYToKKyAgICAgICAg
dGFza19kYXRhWyJwYXlsb2FkIl1bImVudiJdLnVwZGF0ZShlbnZfZXh0cmEpCiAgICAgaWYgZGVw
ZW5kc19vbl9pZHM6CiAgICAgICAgIHRhc2tfZGF0YVsiZGVwZW5kZW5jaWVzIl0gPSBkZXBlbmRz
X29uX2lkcwogICAgICAgICB0YXNrX2RhdGFbInJlcXVpcmVzIl0gPSAiYWxsLWNvbXBsZXRlZCIK
ICAgICByZXR1cm4gdGFza19pZCwgdGFza19kYXRhCiAKIAorZGVmIGdldF9hcnRpZmFjdF9kYXRh
KGFydGlmYWN0LCB0YXNrX2lkX21hcCk6CisgICAgdGFza19pZCwgZGF0YSA9IHRhc2tfaWRfbWFw
W2FydGlmYWN0WyJ0YXNrIl1dCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRhc2siOiB0YXNrX2lk
LAorICAgICAgICAiZ2xvYiI6IGFydGlmYWN0WyJnbG9iIl0sCisgICAgICAgICJkZXN0IjogYXJ0
aWZhY3RbImRlc3QiXSwKKyAgICAgICAgImV4dHJhY3QiOiBhcnRpZmFjdC5nZXQoImV4dHJhY3Qi
LCBGYWxzZSkKKyAgICB9CisKKwogZGVmIGJ1aWxkX3Rhc2tfZ3JhcGgoZXZlbnQsIGFsbF90YXNr
cywgdGFza3MpOgogICAgIHRhc2tfaWRfbWFwID0gT3JkZXJlZERpY3QoKQogICAgIHRhc2tncm91
cF9pZCA9IG9zLmVudmlyb24uZ2V0KCJUQVNLX0lEIiwgdGFza2NsdXN0ZXIuc2x1Z0lkKCkpCkBA
IC0yNTgsNyArMjcxLDE0IEBAIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50LCBhbGxfdGFza3Ms
IHRhc2tzKToKICAgICAgICAgICAgICAgICAgICAgYWRkX3Rhc2soZGVwZW5kc19uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGFza3NbZGVwZW5kc19uYW1lXSkKICAgICAg
ICAgICAgICAgICBkZXBlbmRzX29uX2lkcy5hcHBlbmQodGFza19pZF9tYXBbZGVwZW5kc19uYW1l
XVswXSkKLSAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQs
IHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpCisgICAgICAgIGVudl9leHRyYSA9
IHt9CisgICAgICAgIGlmICJkb3dubG9hZC1hcnRpZmFjdHMiIGluIHRhc2s6CisgICAgICAgICAg
ICBlbnZfZXh0cmFbIlRBU0tfQVJUSUZBQ1RTIl0gPSBqc29uLmR1bXBzKAorICAgICAgICAgICAg
ICAgIFtnZXRfYXJ0aWZhY3RfZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXApCisgICAgICAgICAg
ICAgICAgIGZvciBhcnRpZmFjdCBpbiB0YXNrWyJkb3dubG9hZC1hcnRpZmFjdHMiXV0pCisKKyAg
ICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQsIHRhc2ssIHRh
c2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudl9leHRyYT1lbnZfZXh0cmEpCiAgICAgICAgIHRhc2tfaWRfbWFw
W3Rhc2tfbmFtZV0gPSAodGFza19pZCwgdGFza19kYXRhKQogCiAgICAgZm9yIHRhc2tfbmFtZSwg
dGFzayBpbiBpdGVyaXRlbXModGFza3MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFz
a3MvdGVzdC55bWwKaW5kZXggZTgwZTc5NDIwM2VkY2EzYzhkNWYxOWVhOTgzM2E0Zjc5ZTk3OWYw
OC4uMzE4NDM3YTgwZWMzMjQwNzIxYTE3Y2M2MjUzZjI0MTEwOTAzOGI2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC00LDcgKzQsNyBAQCBjb21wb25l
bnRzOgogICAgIHdvcmtlclR5cGU6IGNpCiAgICAgc2NoZWR1bGVySWQ6IHRhc2tjbHVzdGVyLWdp
dGh1YgogICAgIGRlYWRsaW5lOiAiMjQgaG91cnMiCi0gICAgaW1hZ2U6IGhhcmpnYW0vd2ViLXBs
YXRmb3JtLXRlc3RzOjAuMzQKKyAgICBpbWFnZTogd2VicGxhdGZvcm10ZXN0cy93cHQ6MC4zNwog
ICAgIG1heFJ1blRpbWU6IDcyMDAKICAgICBhcnRpZmFjdHM6CiAgICAgICBwdWJsaWMvcmVzdWx0
czoKQEAgLTgyLDYgKzgyLDExIEBAIGNvbXBvbmVudHM6CiAgIGJyb3dzZXItZmlyZWZveDoKICAg
ICBkZXBlbmRzLW9uOgogICAgICAgLSBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFubmVsfQor
ICAgIGRvd25sb2FkLWFydGlmYWN0czoKKyAgICAgIC0gdGFzazogZG93bmxvYWQtZmlyZWZveC0k
e3ZhcnMuY2hhbm5lbH0KKyAgICAgICAgZ2xvYjogcHVibGljL3Jlc3VsdHMvZmlyZWZveC0ke3Zh
cnMuY2hhbm5lbH0uKgorICAgICAgICBkZXN0OiBidWlsZC8KKyAgICAgICAgZXh0cmFjdDogdHJ1
ZQogCiAgIGJyb3dzZXItd2Via2l0Z3RrX21pbmlicm93c2VyOiB7fQogCkBAIC05OCw4ICsxMDMs
MTUgQEAgY29tcG9uZW50czoKICAgICBlbnY6CiAgICAgICBUT1hFTlY6IHB5MzYKICAgICAgIFBZ
X0NPTE9SUzogMAorCisgIHRveC1weXRob24zODoKKyAgICBlbnY6CisgICAgICBUT1hFTlY6IHB5
MzgKKyAgICAgIFBZX0NPTE9SUzogMAogICAgIGluc3RhbGw6Ci0gICAgICAtIHB5dGhvbjMtcGlw
CisgICAgICAtIHB5dGhvbjMuOAorICAgICAgLSBweXRob24zLjgtZGlzdHV0aWxzCisgICAgICAt
IHB5dGhvbjMuOC1kZXYKIAogICB0ZXN0cy1hZmZlY3RlZDoKICAgICBvcHRpb25zOgpAQCAtMjE4
LDYgKzIzMCw3IEBAIHRhc2tzOgogICAgICAgICAgICAgICAtLQogICAgICAgICAgICAgICAtLWNo
YW5uZWw9JHt2YXJzLmNoYW5uZWx9CiAgICAgICAgICAgICAgIC0tdmVyaWZ5CisgICAgICAgICAg
ICAgIC0tdmVyaWZ5LW5vLWNoYW9zLW1vZGUKIAogICAgICAgICAtIHdwdC0ke3ZhcnMuYnJvd3Nl
cn0tJHt2YXJzLmNoYW5uZWx9LXJlc3VsdHM6CiAgICAgICAgICAgICB1c2U6CkBAIC0yNzIsNyAr
Mjg1LDcgQEAgdGFza3M6CiAgICAgICAgIGRvd25sb2FkLWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9
OgogICAgICAgICAgIHVzZToKICAgICAgICAgICAgIC0gd3B0LWJhc2UKLSAgICAgICAgICBjb21t
YW5kOiAiLi93cHQgaW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5hdGlvbiAvaG9tZS90
ZXN0L2FydGlmYWN0cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSBmaXJlZm94IGJyb3dzZXIi
CisgICAgICAgICAgY29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9hZC1vbmx5IC0tZGVz
dGluYXRpb24gL2hvbWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0g
IC0tcmVuYW1lPWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJvd3NlciIKIAogICAt
IGxpbnQ6CiAgICAgICB1c2U6CkBAIC0zMDYsOSArMzE5LDkgQEAgdGFza3M6CiAgICAgICAgIHJ1
bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMvIHVuaXR0ZXN0
cyAoUHl0aG9uIDMpOgorICAtIHRvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzLjYpOgogICAgICAg
ZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5k
ZXIgUHl0aG9uIDMsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3Ig
dG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42LCBleGNsdWRpbmcgd3B0cnVubmVyCiAgICAg
ICB1c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCkBAIC0zMjAs
NyArMzMzLDIxIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gdG9vbHNf
dW5pdHRlc3QKIAotICAtIHRvb2xzL3dwdC8gdGVzdHM6CisgIC0gdG9vbHMvIHVuaXR0ZXN0cyAo
UHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgVW5pdCB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy44LCBleGNsdWRpbmcgd3B0cnVubmVyCisg
ICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAg
ICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xzX3Vu
aXR0ZXN0LnNoCisgICAgICBlbnY6CisgICAgICAgIEhZUE9USEVTSVNfUFJPRklMRTogY2kKKyAg
ICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0gdG9vbHNfdW5p
dHRlc3QKKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAyKToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNvbW1hbmRzCiAgICAg
ICB1c2U6CkBAIC0zNDIsNiArMzY5LDUwIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAg
ICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24g
My42KToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3Igd3B0IGNvbW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAg
LSB0cmlnZ2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjMKKyAgICAgIGNvbW1hbmQ6IC4vdG9v
bHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMK
KyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3Nl
cjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFu
bmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1
ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRf
aW50ZWdyYXRpb24KKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpOgorICAgICAg
ZGVzY3JpcHRpb246ID4tCisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZvciB3cHQgY29tbWFu
ZHMKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIK
KyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0
LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgIG9wdGlv
bnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3NlcjoKKyAgICAgICAg
ICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFubmVsOiBleHBlcmlt
ZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1ZQorICAgICAgc2No
ZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRfaW50ZWdyYXRpb24K
KwogICAtIHJlc291cmNlcy8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAg
VGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJjZXMvCkBA
IC0zNjIsMTAgKzQzMywxMiBAQCB0YXNrczoKICAgLSBpbmZyYXN0cnVjdHVyZS8gdGVzdHM6CiAg
ICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisg
ICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CiAgICAgICB1c2U6CiAgICAgICAg
IC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCi0gICAgICAgIC0gdG94LXB5dGhvbjIK
KyAgICAgICAgLSBicm93c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCiAgICAgICBpbnN0YWxsOgogICAgICAgICAtIGxp
Ym5zczMtdG9vbHMKQEAgLTM4MiwzICs0NTUsMjggQEAgdGFza3M6CiAgICAgICBzY2hlZHVsZS1p
ZjoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHdwdHJ1bm5lcl9pbmZyYXN0cnVjdHVy
ZQorCisgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMyk6CisgICAgICBkZXNjcmlw
dGlvbjogPi0KKyAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisgICAgICB2YXJzOgor
ICAgICAgICBjaGFubmVsOiBuaWdodGx5CisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UK
KyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3dwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZS5zaCAtLXB5MworICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBw
eXRob24zLXBpcAorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgICAgLSBsaWJhcHBpbmRp
Y2F0b3IxCisgICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgorICAgICAgb3B0aW9uczoKKyAgICAg
ICAgb29tLWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gY2hyb21l
CisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZiOiB0cnVlCisgICAg
ICAgIGhvc3RzOiBmYWxzZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6Cisg
ICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQppbmRleCBiMTcwOTI4YjI5MGEyN2Y3NWVh
ZGE2NjE2MmVhNDA0YTFkYmFlOWY5Li40N2NiYzJlODdiYjgwNTk3ZGQ5ODBlOWY5OGJjNDEzYjA0
MTZiNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3Zh
bGlkLnB5CkBAIC02LDcgKzYsNiBAQCBpbXBvcnQganNvbmUKIGltcG9ydCBtb2NrCiBpbXBvcnQg
cHl0ZXN0CiBpbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKIGltcG9ydCB5YW1sCiBmcm9tIGpz
b25zY2hlbWEgaW1wb3J0IHZhbGlkYXRlCiAKQEAgLTIwLDkgKzE5LDYgQEAgZGVmIGRhdGFfcGF0
aChmaWxlbmFtZSk6CiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihoZXJlLCAiLi4iLCAidGVzdGRh
dGEiLCBmaWxlbmFtZSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mby5t
YWpvciA9PSAyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idGFza2NsdXN0ZXIgbGlicmFy
eSBoYXMgYW4gZW5jb2RpbmcgYnVnICIKLSAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc2tjbHVzdGVyL2pzb24tZS9pc3N1ZXMvMzM4IikKIGRlZiB0ZXN0X3ZlcmlmeV90
YXNrY2x1c3Rlcl95bWwoKToKICAgICAiIiJWZXJpZnkgdGhhdCB0aGUganNvbi1lIGluIHRoZSAu
dGFza2NsdXN0ZXIueW1sIGlzIHZhbGlkIiIiCiAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihy
b290LCAiLnRhc2tjbHVzdGVyLnltbCIpLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CkBAIC00Niwx
MSArNDIsMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAiIiJWZXJpZnkgdGhh
dCB0aGUgZGVjaXNpb24gdGFzayBwcm9kdWNlcyB0YXNrcyB3aXRoIGEgdmFsaWQgcGF5bG9hZCIi
IgogICAgIGZyb20gdG9vbHMuY2kudGMuZGVjaXNpb24gaW1wb3J0IGRlY2lkZQogCi0gICAgY3Jl
YXRlX3Rhc2tfc2NoZW1hID0gcmVxdWVzdHMuZ2V0KAotICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tjbHVzdGVyL2Jsb2IvbWFzdGVyL3Nl
cnZpY2VzL3F1ZXVlL3NjaGVtYXMvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC55bWwiKQotICAgIGNy
ZWF0ZV90YXNrX3NjaGVtYSA9IHlhbWwuc2FmZV9sb2FkKGNyZWF0ZV90YXNrX3NjaGVtYS5jb250
ZW50KQorICAgIHIgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vY29tbXVuaXR5LXRjLnNlcnZpY2Vz
Lm1vemlsbGEuY29tL3NjaGVtYXMvcXVldWUvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC5qc29uIikK
KyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIGNyZWF0ZV90YXNrX3NjaGVtYSA9IHIuanNv
bigpCiAKLSAgICBwYXlsb2FkX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL2RvY2tlci13b3JrZXIvbWFzdGVyL3NjaGVt
YXMvdjEvcGF5bG9hZC5qc29uIikuanNvbigpCisgICAgIyBUT0RPKEhleGNsZXMpOiBDaGFuZ2Ug
aXQgdG8gaHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5jb20vcmVmZXJlbmNl
cy9zY2hlbWFzL2RvY2tlci13b3JrZXIvdjEvcGF5bG9hZC5qc29uCisgICAgIyBhZnRlciB0aGUg
bmV4dCBDb21tdW5pdHktVEMgcmVsZWFzZSAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mzk3MzIpLi4KKyAgICByID0gcmVxdWVzdHMuZ2V0KAorICAg
ICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tj
bHVzdGVyLyIKKyAgICAgICAgIjNlZDUxMWVmOTExOWRhNTRmYzA5M2U5NzZiN2I1OTU1ODc0Yzli
NTQvd29ya2Vycy9kb2NrZXItd29ya2VyL3NjaGVtYXMvdjEvcGF5bG9hZC5qc29uIikKKyAgICBy
LnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIHBheWxvYWRfc2NoZW1hID0gci5qc29uKCkKIAogICAg
IGpvYnMgPSBbImxpbnQiLAogICAgICAgICAgICAgIm1hbmlmZXN0X3VwbG9hZCIsCkBAIC0xMjcs
MTIgKzEyOSwxNyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ3dwdC1jaHJv
bWUtZGV2LWNyYXNodGVzdC0xJywKICAgICAgICdsaW50J30pLAogICAgICgicHJfZXZlbnQuanNv
biIsIFRydWUsIHsiLnRhc2tjbHVzdGVyLnltbCIsIi50cmF2aXMueW1sIiwidG9vbHMvY2kvc3Rh
cnQuc2gifSwKLSAgICAgeydsaW50JywKKyAgICAgeydkb3dubG9hZC1maXJlZm94LW5pZ2h0bHkn
LAorICAgICAgJ2xpbnQnLAogICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAyKScsCi0g
ICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpJywKLSAgICAgICd0b29scy93cHQvIHRl
c3RzJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KScsCisgICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5
dGhvbiAyKScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMuNiknLAorICAgICAg
J3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpJywKICAgICAgICdyZXNvdXJjZXMvIHRlc3Rz
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnfSksCisgICAgICAnaW5mcmFzdHJ1Y3R1
cmUvIHRlc3RzJywKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKSd9KSwK
ICAgICAjIE1vcmUgdGVzdHMgYXJlIGFmZmVjdGVkIGluIHRoZSBhY3R1YWwgUFIgYnV0IGl0IHNo
b3VsZG4ndCBhZmZlY3QgdGhlIHNjaGVkdWxlZCB0YXNrcwogICAgICgicHJfZXZlbnRfdGVzdHNf
YWZmZWN0ZWQuanNvbiIsIFRydWUsIHsibGF5b3V0LWluc3RhYmlsaXR5L2NsaXAtbmVnYXRpdmUt
Ym90dG9tLW1hcmdpbi5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxheW91dC1pbnN0YWJpbGl0eS9jb21wb3NpdGVkLWVsZW1lbnQtbW92ZW1lbnQu
aHRtbCJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQppbmRl
eCA5NGY3OTk4NzcwY2Y1ZDhiYWQzNmQxODhkZDYzZTI1M2Y5ODE5OWE4Li5hYTEyNzM4MjA0ZjM2
NTJlMmRmOTY0NDQ0NjkzNjhlMGU2MjYxOTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3Rlc3Rfam9icy5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVmIHRlc3RfYnVpbGRf
Y3NzKCk6CiAKIAogZGVmIHRlc3RfdXBkYXRlX2J1aWx0KCk6Ci0gICAgYXNzZXJ0IGpvYnMuZ2V0
X2pvYnMoWyIyZGNvbnRleHQvZm9vLmh0bWwiXSwKKyAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
Imh0bWwvY2FudmFzL2VsZW1lbnQvZm9vLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9CiAgICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQotICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsib2Zmc2NyZWVuLWNhbnZhcy9mb28uaHRtbCJdLAorICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvb2Zmc2NyZWVuL2Zvby5odG1sIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0g
eyJ1cGRhdGVfYnVpbHQifQogCiAKQEAgLTEzNCwzICsxMzQsNyBAQCBkZWYgdGVzdF93cHRfaW5m
cmFzdHJ1Y3R1cmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CiAg
ICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJpbmZyYXN0cnVjdHVyZS9hc3N1bXB0aW9ucy9haGVt
Lmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl9p
bmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CisKK2RlZiB0
ZXN0X3dkc3BlY19zdXBwb3J0KCk6CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ3ZWJkcml2
ZXIvdGVzdHMvc3VwcG9ydC9fX2luaXRfXy5weSJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0
X3ByX3ByZXZpZXcucHkKaW5kZXggNjM0ODJmYjE4NGM3ZjE0ZGIwZWJkNDVjMTg3OTRlM2E5Nzcx
YzkwYi4uMmQ5OTY2ZmM4Y2Y0MTg3OTEzYWRjZTg2MDllZTc1MGFkZTFiOTc5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiBjbGFz
cyBSZXF1ZXN0cyhvYmplY3QpOgogICAgIGdldF9yYXRlID0gKCdHRVQnLCAnL3JhdGVfbGltaXQn
LCB7fSkKICAgICBzZWFyY2ggPSAoJ0dFVCcsICcvc2VhcmNoL2lzc3VlcycsIHt9KQorICAgIHBy
X2RldGFpbHMgPSAoJ0dFVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL3B1bGxzLzIzJywg
e30pCiAgICAgcmVmX2NyZWF0ZV9vcGVuID0gKAogICAgICAgICAnUE9TVCcsICcvcmVwb3MvdGVz
dC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidyZWZzL3Bycy1vcGVuLzIzJ30KICAg
ICApCkBAIC0zNzYsNiArMzc3LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19jb2xsYWJv
cmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQp
LAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMu
c2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7CkBAIC0zOTEsNiArMzkz
LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29sbGFib3JhdG9yKCk6CiAgICAgICAg
ICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAg
ICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8n
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3Qt
cmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgy
MDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwge30pKSwKQEAgLTQ1
Miw2ICs0NjMsNDEgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250
cmlidXRvcigpOgogICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKICAgICBhc3NlcnQgc2FtZV9t
ZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCitkZWYgdGVzdF9zeW5j
aHJvbml6ZV9pZ25vcmVfcHVsbF9yZXF1ZXN0X2Zyb21fZm9yaygpOgorICAgIGV4cGVjdGVkX3Ry
YWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0
KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAg
ICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnbGFiZWxzJzogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6ICdncmFjZSd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFU
T1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzog
eworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICdzb21lLW90aGVyLW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAorICAgIF0KKworICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisKKyAg
ICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKwogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190
cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLApAQCAtNDU5LDEyICs1MDUs
MTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAog
ICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdpdGVtcyc6
IFsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJl
cic6IDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBjb250cmli
dXRvciAodW50cnVzdGVkKSwgYnV0IHRoZSBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAg
IyBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xh
YmVscyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIn
OiB7J2xvZ2luJzogJ0hleGNsZXMnfSwKQEAgLTQ3NCw2ICs1MjMsNjAgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgICAgICAgICAgICAgJ2lu
Y29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAg
ICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgyMDAsIHt9KSksCisg
ICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCisgICAgICAg
IChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCisgICAgXQorCisgICAgcmV0dXJuY29kZSwg
YWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZp
YykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgc2FtZV9tZW1iZXJz
KGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQorCitkZWYgdGVzdF9zeW5jaHJvbml6
ZV9zeW5jX2JvdF93aXRoX2xhYmVsKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5n
ZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRl
LCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAgICAgICAgMjAwLAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9ybWFsbHkgbm90
IG1pcnJvcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlzc3VlIGhhcyBi
ZWVuIGxhYmVsbGVkIGFzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1
bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0
cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFk
JzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAg
ICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmRl
cGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLApAQCAtNDkyLDYgKzU5NSw3IEBAIGRlZiB0ZXN0X3N5
bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTUwNiw2ICs2MTAsMTUgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAgICAgICAgICdpbmNvbXBs
ZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAgICAgICAg
KFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkp
LAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCiAgICAgICAg
IChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCkBAIC01MjgsNiArNjQxLDcgQEAgZGVm
IHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgyMDAsCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAtNTQyLDYgKzY1NiwxNSBAQCBkZWYgdGVzdF9z
eW5jaHJvbml6ZV91cGRhdGVfbWVtYmVyKCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVf
cmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVx
dWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAn
aGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAg
ICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW3snc29tZSc6ICdkZXBsb3lt
ZW50J31dKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSks
CiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
ZG9ja2VyL0RvY2tlcmZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCmluZGV4IDBhODQyZGUxYWI4NTdkMWY2NTVi
OTM2NWRmNjFmM2ZhOTc4ZTMxYmUuLmYzOTI3ZmQwZDcxY2NmMjkyZDk2OTlkNTk3YTQ3OTk0NWE4
ZTUxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQpAQCAtMjUsNiAr
MjUsOCBAQCBSVU4gYXB0LWdldCAtcXF5IHVwZGF0ZSBcCiAgICAgcHVsc2VhdWRpbyBcCiAgICAg
cHl0aG9uIFwKICAgICBweXRob24tcGlwIFwKKyAgICBweXRob24zIFwKKyAgICBweXRob24zLXBp
cCBcCiAgICAgcWVtdS1rdm0gXAogICAgIHR6ZGF0YSBcCiAgICAgc3VkbyBcCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9SRUFETUUubWQKaW5kZXggNDUwOTgxZjY4NmJmYWNlMmQ5MjQzZTU2Mjgw
NDBiYjZiMmY2YzRlMC4uOTM0MmFkZWQyOThiZGQwZTVkYWFjMTIyODljNzgxNjNkMWQ1YmVjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZApAQCAtMSwxMCArMSwxOCBAQAog
VGhpcyBkb2NrZXIgaW1hZ2VzIGlzIHVzZWQgZm9yIHRlc3RpbmcgQ2hyb21lLCBGaXJlZm94LCBX
ZWJLaXRHVEsgYW5kIHJ1bm5pbmcKIG90aGVyIHRhc2tzIG9uIFRhc2tjbHVzdGVyLiBXaGVuIGFu
eSBvZiB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2hhbmdlLCB0aGUKLWltYWdlcyBtdXN0
IGJlIHVwZGF0ZWQgYXMgd2VsbC4gVG8gZG8gdGhpcywgYXNzdW1pbmcgeW91IGhhdmUgZG9ja2Vy
IGluc3RhbGxlZDoKK2ltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4gRG9pbmcgdGhpcyBy
ZXF1aXJlcyB5b3UgYmUgcGFydCBvZiB0aGUKKyd3ZWJwbGF0Zm9ybXRlc3RzJyBvcmdhbml6YXRp
b24gb24gRG9ja2VyIEh1YjsgcGluZyBASGV4Y2xlcyBvciBAc3RlcGhlbm1jZ3J1ZXIKK2lmIHlv
dSBhcmUgbm90IGEgbWVtYmVyLgorCitJbiB0aGlzIGRpcmVjdG9yeSwgcnVuIHRoZSBmb2xsb3dp
bmcsIHdoZXJlIGA8dGFnPmAgaXMgb2YgdGhlIGZvcm0KK2B3ZWJwbGF0Zm9ybXRlc3RzL3dwdDp7
Y3VycmVudC12ZXJzaW9uICsgMC4wMX1gOgogCi1JbiB0aGlzIGRpcmVjdG9yeSwgcnVuCiBgYGBz
aAotZG9ja2VyIGJ1aWxkIC10IDx0YWc+IC4KKyMgLS1wdWxsIGZvcmNlcyBEb2NrZXIgdG8gZ2V0
IHRoZSBuZXdlc3QgYmFzZSBpbWFnZS4KK2RvY2tlciBidWlsZCAtLXB1bGwgLXQgPHRhZz4gLgog
ZG9ja2VyIHB1c2ggPHRhZz4KIGBgYAogCitUaGVuIHVwZGF0ZSB0aGUgZm9sbG93aW5nIFRhc2tj
bHVzdGVyIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSB0aGUgbmV3IGltYWdlOgorKiBgLnRhc2tjbHVz
dGVyLnltbGAgKHRoZSBkZWNpc2lvbiB0YXNrKQorKiBgdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55
bWxgIChhbGwgdGhlIG90aGVyIHRhc2tzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQppbmRleCA5NzYxNTZjZjY1YTAwODIxYTExYTMzNTEzMDFiNDdjMTA3OGM4NDE2Li41
OWExY2ZmMmViZDBlZmRhMDZmYWRkMTQ0YTg0YjVkMzViMmQ4MWM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtOCw2ICs4LDcgQEAgd3B0X3Jvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIGRl
ZiBidWlsZCgqYXJncywgKiprd2FyZ3MpOgogICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbImRv
Y2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tcHVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS10
YWciLCAid3B0OmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVdKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CmluZGV4IDYxMjZiNzgxYmZhZGQxNWU4MmI4
YTNhM2I5NDk0MDUwOTM5ZWFiNmMuLjVjOGU2ZDc5YzMwMzhkZGZmNDk2ODhkNGYxZmM3ZTdmMjk0
YWQwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CkBAIC0yMSwyMyArMjEs
MjggQEAgZGVmIGl0ZXJfcmFuZ2Uobik6CiAgICAgICAgIGkgKz0gMQogCiAKK2RlZiBsb2codmFs
dWUpOgorICAgIHByaW50KHZhbHVlKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKIGRlZiBt
YWluKCk6CiAgICAgYXJncyA9IGdldF9hcmdzKCkucGFyc2VfYXJncygpCiAKICAgICBpZiBub3Qg
YXJncy5jbWQ6Ci0gICAgICAgIHByaW50KCJObyBjb21tYW5kIHN1cHBsaWVkIikKKyAgICAgICAg
bG9nKCJObyBjb21tYW5kIHN1cHBsaWVkIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIHJl
dGNvZGUgPSBOb25lCiAKICAgICBmb3IgbiBpbiBpdGVyX3JhbmdlKGFyZ3MuY291bnQpOgogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCgiUnVubmluZyAlcyBbdHJ5ICVkLyVkXSIgJSAo
IiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCisgICAgICAgICAgICBsb2co
IlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0iICUgKCIgIi5qb2luKGFyZ3MuY21kKSwgKG4rMSksIGFy
Z3MuY291bnQpKQogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGFyZ3MuY21kKQog
ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAg
ICAgICAgIHJldGNvZGUgPSBlLnJldHVybmNvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHByaW50KCJDb21tYW5kIHN1Y2NlZWRlZCIpCisgICAgICAgICAgICBsb2coIkNvbW1hbmQgc3Vj
Y2VlZGVkIikKICAgICAgICAgICAgIHJldGNvZGUgPSAwCiAgICAgICAgICAgICBicmVhawogCkBA
IC00NiwxMCArNTEsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHdhaXRfdGltZSA9IGFyZ3MuZmFjdG9yKipuICogYXJncy5kZWxheQogICAgICAgICBpZiBuIDwg
YXJncy5jb3VudCAtIDE6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIHdhaXRp
bmcgJXMgc2Vjb25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCisgICAgICAgICAgICBsb2coIkNv
bW1hbmQgZmFpbGVkLCB3YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUgd2FpdF90aW1lKQog
ICAgICAgICAgICAgdGltZS5zbGVlcCh3YWl0X3RpbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKKyAgICAgICAgICAg
IGxvZygiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKIAogICAgIHN5cy5leGl0KHJl
dGNvZGUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpp
bmRleCBkNWVhNGE2YThmM2Q2NGQ0YWJhM2I4ZGNiZTVmZmU4NDliNzRlOTY5Li4wZjNkOTQ1MGQx
MjM0NDljMGRjYzNmZjNjMDRjYTg2YzgxYjI0YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CkBAIC0yNjksNyArMjY5LDcgQEAgY2xhc3MgUGF0aEZp
bHRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmQo
aXRlbSkKIAogICAgICAgICAgICAgZGlybmFtZXNbOl0gPSBrZWVwX2RpcnMKLSAgICAgICAgICAg
IGFzc2VydCAiLmdpdCIgbm90IGluIGRpcm5hbWVzCisgICAgICAgICAgICBhc3NlcnQgbm90IGFu
eSgiLmdpdCIgPT0gbmFtZSBmb3IgbmFtZSwgXyBpbiBkaXJuYW1lcykKICAgICAgICAgICAgIHlp
ZWxkIG9yaWdfZGlycGF0aCwgZGlybmFtZXMsIGtlZXBfZmlsZXMKIAogICAgIGRlZiBfX2NhbGxf
XyhzZWxmLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQppbmRleCBhMDUwY2ZhOGE4ZTRlMjY5
OWRiNDRjZTllNTJmOGYyMzBhMzRhODY5Li5mYzFhODE2ZjhhYmY4NWVmY2UzMWEzYThlNjE0YmE1
OTFiNjAwOTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpAQCAtMjAsNyArMjAsNyBA
QCBmcm9tIC4uZ2l0aWdub3JlLmdpdGlnbm9yZSBpbXBvcnQgUGF0aEZpbHRlcgogZnJvbSAuLndw
dCBpbXBvcnQgdGVzdGZpbGVzCiBmcm9tIC4ubWFuaWZlc3QudmNzIGltcG9ydCB3YWxrCiAKLWZy
b20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBw
eXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlfdmFyaWFudHMsIGdldF9kZWZhdWx0
X2FueV92YXJpYW50cworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZp
bGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92YXJp
YW50cwogZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMs
IHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIGZyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KQEAgLTQxLDcgKzQxLDEy
IEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVW5pb24KIAotICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQorICAgICMgVGhlIElnbm9yZWxpc3QgaXMgYSB0d28gbGV2ZWwg
ZGljdGlvbmFyeS4gVGhlIHRvcCBsZXZlbCBpcyBpbmRleGVkIGJ5CisgICAgIyBlcnJvciBuYW1l
cyAoZS5nLiAnVFJBSUxJTkcgV0hJVEVTUEFDRScpLiBFYWNoIG9mIHRob3NlIHRoZW4gaGFzIGEg
bWFwIG9mCisgICAgIyBmaWxlIHBhdHRlcm5zIChlLmcuICdmb28vKicpIHRvIGEgc2V0IG9mIHNw
ZWNpZmljIGxpbmUgbnVtYmVycyBmb3IgdGhlCisgICAgIyBleGNlcHRpb24uIFRoZSBsaW5lIG51
bWJlcnMgYXJlIG9wdGlvbmFsOyBpZiBtaXNzaW5nIHRoZSBlbnRpcmUgZmlsZQorICAgICMgaWdu
b3JlcyB0aGUgZXJyb3IuCisgICAgSWdub3JlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQogCiAKIGxvZ2dlciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxb
bG9nZ2luZy5Mb2dnZXJdCkBAIC03NSwxMiArODAsMTIgQEAgRVJST1JfTVNHID0gIiIiWW91IG11
c3QgZml4IGFsbCBlcnJvcnM7IGZvciBkZXRhaWxzIG9uIGhvdyB0byBmaXggdGhlbSwgc2VlCiBo
dHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9saW50LXRvb2wuaHRt
bAogCiBIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIgZXJyb3IsIGl0J3Mg
c29tZXRpbWVzCi1PSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlIGlu
IHRoZSByb290IG9mIHRoZQorT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC5pZ25vcmUgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUKIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFr
ZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KIAogRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxp
bnQgdG9vbCBpZ25vcmUgYWxsICclcycKIGVycm9ycyBpbiB0aGUgJXMgZmlsZSwKLXlvdSBjb3Vs
ZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgoreW91
IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQuaWdub3JlIGZpbGUuCiAK
ICVzOiAlcyIiIgogCkBAIC0zMTgsMTQgKzMyMyw1MiBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5
X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICByZXR1cm4gZXJyb3JzCiAKIAotZGVmIHBh
cnNlX3doaXRlbGlzdChmKToKLSAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+IFR1cGxlW1doaXRl
bGlzdCwgU2V0W1RleHRdXQorZGVmIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZXMo
cmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0cl0pIC0+IExpc3Rb
cnVsZXMuRXJyb3JdCisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgYWxsIHRlc3RoYXJuZXNzIGZp
bGVzIGhhdmUgdW5pcXVlIGJhc2VuYW1lIHBhdGhzLgorCisgICAgVGhlICdiYXNlbmFtZSBwYXRo
JyByZWZlcnMgdG8gdGhlIGVudGlyZSBwYXRoIGV4Y2x1ZGluZyB0aGUgZXh0ZW5zaW9uLiBGb3IK
KyAgICBleGFtcGxlLCAnZm9vL2Jhci9iYXouaHRtbCcgYW5kICdmb28vYmFyL2Jhei54aHRtbCcg
aGF2ZSB0aGUgc2FtZSBiYXNlbmFtZQorICAgIHBhdGgsIGJ1dCAnZm9vL2Jhci9iYXouaHRtbCcg
YW5kICdmb28vcXV4L2Jhei5odG1sJyBkbyBub3QuCisKKyAgICBUZXN0aGFybmVzcyBmaWxlcyB3
aXRoIGlkZW50aWNhbCBiYXNlbmFtZXMgaGF2ZSBjYXVzZWQgaXNzdWVzIGluIGRvd25zdHJlYW0K
KyAgICBpbmZyYXN0cnVjdHVyZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0L2lzc3Vlcy83NTcwKSwKKyAgICBhbmQgbWF5IGNhdXNlIGNvbmZ1c2lvbiBpbiBn
ZW5lcmFsLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAg
IDpwYXJhbSBwYXRoczogbGlzdCBvZiBhbGwgcGF0aHMKKyAgICA6cmV0dXJuczogYSBsaXN0IG9m
IGVycm9ycyBmb3VuZCBpbiBgYHBhdGhzYGAKKyAgICAiIiIKKworICAgIGVycm9ycyA9IFtdCisg
ICAgZmlsZV9kaWN0ID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3IgcGF0aCBpbiBwYXRoczoK
KyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQor
ICAgICAgICBpZiBzb3VyY2VfZmlsZS50eXBlICE9ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBmaWxlX25hbWUsIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5z
cGxpdGV4dChwYXRoKQorICAgICAgICBmaWxlX2RpY3RbZmlsZV9uYW1lXS5hcHBlbmQoZmlsZV9l
eHRlbnNpb24pCisgICAgZm9yIGssIHYgaW4gZmlsZV9kaWN0Lml0ZW1zKCk6CisgICAgICAgIGlm
IGxlbih2KSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY29udGV4dCA9ICgn
LCAnLmpvaW4odiksKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHY6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKHJ1bGVzLkR1cGxpY2F0ZUJhc2VuYW1lUGF0aC5lcnJvcihrICsgZXh0ZW5z
aW9uLCBjb250ZXh0KSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIHBhcnNlX2lnbm9yZWxp
c3QoZik6CisgICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtJZ25vcmVsaXN0LCBTZXRb
VGV4dF1dCiAgICAgIiIiCi0gICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxlIGdpdmVuIGJ5IGBm
YCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICBQYXJzZSB0aGUgaWdub3Jl
bGlzdCBmaWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4K
KworICAgIDpyZXR1cm5zOiBhIHR1cGxlIG9mIGFuIElnbm9yZWxpc3QgYW5kIGEgc2V0IG9mIGZp
bGVzIHRoYXQgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgc2tpcHBlZCBieSB0aGUgbGlu
dGVyIChpLmUuIGhhdmUgYSAnKicgZW50cnkpLgogICAgICIiIgogCi0gICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBXaGl0ZWxpc3QKLSAgICBp
Z25vcmVkX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBJZ25vcmVsaXN0CisgICAg
c2tpcHBlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgZm9yIGxpbmUg
aW4gZjoKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQpAQCAtMzQ0LDM3ICszODcsMzcgQEAg
ZGVmIHBhcnNlX3doaXRlbGlzdChmKToKICAgICAgICAgZmlsZV9tYXRjaCA9IG9zLnBhdGgubm9y
bWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3JfdHlwZXM6Ci0gICAg
ICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQorICAgICAgICAgICAgc2tpcHBl
ZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBl
cnJvcl90eXBlIGluIGVycm9yX3R5cGVzOgogICAgICAgICAgICAgICAgIGRhdGFbZXJyb3JfdHlw
ZV1bZmlsZV9tYXRjaF0uYWRkKGxpbmVfbnVtYmVyKQogCi0gICAgcmV0dXJuIGRhdGEsIGlnbm9y
ZWRfZmlsZXMKKyAgICByZXR1cm4gZGF0YSwgc2tpcHBlZF9maWxlcwogCiAKLWRlZiBmaWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgotICAgICMgdHlwZTogKFdoaXRlbGlzdCwg
U2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorZGVmIGZpbHRlcl9p
Z25vcmVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgorICAgICMgdHlwZTogKElnbm9yZWxpc3Qs
IFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KICAgICAiIiIKLSAg
ICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBpbiBgZGF0YWAu
CisgICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgaWdub3JlZCBpbiBgZGF0YWAu
CiAgICAgIiIiCiAKICAgICBpZiBub3QgZXJyb3JzOgogICAgICAgICByZXR1cm4gW10KIAotICAg
IHdoaXRlbGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KKyAg
ICBza2lwcGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KIAogICAg
IGZvciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVtZXJhdGUoZXJyb3Jz
KToKICAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgpCi0gICAgICAgICMg
QWxsb3cgd2hpdGVsaXN0aW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhlIElHTk9SRUQgUEFU
SCBsaW50LAotICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXggaXQgY29ycmVjdGx5
IGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZC4KKyAgICAgICAgIyBBbGxvdyBza2lwcGluZyBhbGwg
bGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVEIFBBVEggbGludCwKKyAgICAgICAgIyB3aGlj
aCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJlY3RseSBhbmQgc2hvdWxkbid0IGJlIHNraXBw
ZWQuCiAgICAgICAgIGlmIGVycm9yX3R5cGUgaW4gZGF0YSBhbmQgZXJyb3JfdHlwZSAhPSAiSUdO
T1JFRCBQQVRIIjoKICAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJvcl90eXBlXQogICAg
ICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRlcml0ZW1zKHdsX2Zp
bGVzKToKICAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGluZXMgb3IgbGluZSBp
biBhbGxvd2VkX2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hj
YXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRl
bGlzdGVkW2ldID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtpXSA9IFRy
dWUKIAotICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoZXJyb3JzKSBp
ZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisgICAgcmV0dXJuIFtpdGVtIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShlcnJvcnMpIGlmIG5vdCBza2lwcGVkW2ldXQogCiAKIHJlZ2V4cHMgPSBbaXRlbSgp
IGZvciBpdGVtIGluICAjIHR5cGU6IGlnbm9yZQpAQCAtMzkwLDcgKzQzMywxMCBAQCByZWdleHBz
ID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgICAgIHJ1bGVz
LlByaW50UmVnZXhwLAogICAgICAgICAgICAgcnVsZXMuTGF5b3V0VGVzdHNSZWdleHAsCiAgICAg
ICAgICAgICBydWxlcy5NaXNzaW5nRGVwc1JlZ2V4cCwKLSAgICAgICAgICAgIHJ1bGVzLlNwZWNp
YWxQb3dlcnNSZWdleHBdXQorICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBvd2Vyc1JlZ2V4cCwK
KyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFRocm93c1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVz
LlByb21pc2VSZWplY3RzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNzZXJ0UHJlY29uZGl0
aW9uUmVnZXhwXV0KIAogCiBkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19yb290LCBwYXRoLCBm
KToKQEAgLTQyMSw2ICs0NjcsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CiAKICAgICAgICAgaWYgKHNvdXJjZV9maWxlLnR5cGUgIT0gInN1cHBvcnQiIGFuZAogICAg
ICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFuZAorICAgICAgICAg
ICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfdGVudGF0aXZlIGFuZAogICAgICAgICAgICAgbm90
IHNvdXJjZV9maWxlLnNwZWNfbGlua3MpOgogICAgICAgICAgICAgcmV0dXJuIFtydWxlcy5NaXNz
aW5nTGluay5lcnJvcihwYXRoKV0KIApAQCAtNTg0LDcgKzYzMSw4IEBAIGFzdF9jaGVja2VycyA9
IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYgY2hlY2tfcHl0aG9u
X2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICMgdHlwZTogKHN0ciwgc3RyLCBJT1tieXRl
c10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCi0gICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5weSIp
OgorICAgICMgKi5xdWljLnB5IGFyZSBQeXRob24gMyBvbmx5IGFuZCBjYW5ub3QgYmUgcGFyc2Vk
IGJ5IFB5dGhvbiAyLgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBwYXRoLmVu
ZHN3aXRoKCIucXVpYy5weSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAgIHRyeToKQEAgLTYw
NSwzMCArNjUzLDEyIEBAIGJyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxlKGJyIiNc
cypNRVRBOiIpCiAKIGRlZiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUpOgogICAgICMgdHlw
ZTogKHN0cikgLT4gSXRlcmFibGVbVHVwbGVbVHlwZVtydWxlcy5SdWxlXSwgVHVwbGVbQW55LCAu
Li5dXV0KLSAgICBnbG9iYWxfdmFsdWVzID0ge2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9Ci0KLSAgICBpbmNsdWRlZF92YXJpYW50cyA9
IHNldC51bmlvbihnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKGdldF9hbnlfdmFyaWFudHModikgZm9yIHYgaW4gZ2xvYmFsX3Zh
bHVlcyBpZiBub3Qgdi5zdGFydHN3aXRoKGIiISIpKSkKKyAgICBnbG9iYWxfdmFsdWVzID0ge2l0
ZW0uc3RyaXAoKS5kZWNvZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiB2YWx1ZS5zcGxpdChiIiwiKSBp
ZiBpdGVtLnN0cmlwKCl9CiAKKyAgICAjIFRPRE86IHRoaXMgY291bGQgY2hlY2sgZm9yIGR1cGxp
Y2F0ZXMgYW5kIHN1Y2gKICAgICBmb3IgZ2xvYmFsX3ZhbHVlIGluIGdsb2JhbF92YWx1ZXM6Ci0g
ICAgICAgIGlmIGdsb2JhbF92YWx1ZS5zdGFydHN3aXRoKGIiISIpOgotICAgICAgICAgICAgZXhj
bHVkZWRfdmFsdWUgPSBnbG9iYWxfdmFsdWVbMTpdCi0gICAgICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhleGNsdWRlZF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVz
LlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCi0KLSAgICAgICAgICAgIGVsaWYgZXhjbHVkZWRf
dmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuQnJv
a2VuR2xvYmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICgoIkNhbm5vdCBzcGVj
aWZ5IGJvdGggJXMgYW5kICVzIiAlIChnbG9iYWxfdmFsdWUsIGV4Y2x1ZGVkX3ZhbHVlKSksKSkK
LQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGNsdWRlZF92YXJpYW50cyA9
IGdldF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgbm90
IChleGNsdWRlZF92YXJpYW50cyAmIGluY2x1ZGVkX3ZhcmlhbnRzKToKLSAgICAgICAgICAgICAg
ICAgICAgeWllbGQgKHJ1bGVzLkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90IGluY2x1ZGVkIiAl
IChleGNsdWRlZF92YWx1ZSwpKSwpKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBu
b3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgotICAgICAgICAgICAgICAgIHlpZWxk
IChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQorICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgorICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25v
d25HbG9iYWxNZXRhZGF0YSwgKCkpCiAKIAogZGVmIGNoZWNrX3NjcmlwdF9tZXRhZGF0YShyZXBv
X3Jvb3QsIHBhdGgsIGYpOgpAQCAtNjU3LDEzICs2ODcsNyBAQCBkZWYgY2hlY2tfc2NyaXB0X21l
dGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CiAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0g
YiJsb25nIjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3du
VGltZW91dE1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25vPWlkeCArIDEp
KQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiAoYiJ0
aXRsZSIsIGIic2NyaXB0IiwgYiJ2YXJpYW50IiwgYiJxdWljIik6CiAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3duTWV0YWRhdGEuZXJyb3IocGF0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25v
PWlkeCArIDEpKQogICAgICAgICBlbHNlOgpAQCAtODI1LDcgKzg0OSw3IEBAIGRlZiBsaW50X3Bh
dGhzKGt3YXJncywgd3B0X3Jvb3QpOgogICAgICAgICBmb3JjZV9hbGwgPSBGYWxzZQogICAgICAg
ICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhzOgogICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVw
bGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICAgICAgaWYgcGF0aCA9PSAibGludC53aGl0
ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKKyAgICAgICAgICAgIGlm
IHBhdGggPT0gImxpbnQuaWdub3JlIiBvciBwYXRoLnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6
CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFr
CiAgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90IGZvcmNlX2FsbCAg
IyB0eXBlOiBpZ25vcmUKQEAgLTg0Myw3ICs4NjcsNyBAQCBkZWYgY3JlYXRlX3BhcnNlcigpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNP
TiBmb3JtYXQiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249
InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtk
b3duIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBX
UFQgZGlyZWN0b3J5LiBVc2UgdGhpcyIKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8t
cm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAib3B0aW9uIGlmIHRoZSBsaW50IHNjcmlwdCBleGlzdHMgb3V0c2lkZSB0aGUg
cmVwb3NpdG9yeSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtZ2xvYiIsIGhl
bHA9IkFkZGl0aW9uYWwgZmlsZSBnbG9iIHRvIGlnbm9yZS4iKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYgbm8gcGF0aHMgYXJl
IHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKQEAgLTg3OSwxMSArOTAzLDExIEBAIGRl
ZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigp
KToKICAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGludCkgICMgdHlwZTogRGljdFtUZXh0
LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVw
b19yb290LCAibGludC53aGl0ZWxpc3QiKSkgYXMgZjoKLSAgICAgICAgd2hpdGVsaXN0LCBpZ25v
cmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0KGYpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bihyZXBvX3Jvb3QsICJsaW50Lmlnbm9yZSIpKSBhcyBmOgorICAgICAgICBpZ25vcmVsaXN0LCBz
a2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChmKQogCiAgICAgaWYgaWdub3JlX2dsb2I6
Ci0gICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQorICAgICAgICBza2lwcGVk
X2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKIAogICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24iOiBv
dXRwdXRfZXJyb3JzX2pzb24sCiAgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBvdXRw
dXRfZXJyb3JzX21hcmtkb3duLApAQCAtODk5LDcgKzkyMyw3IEBAIGRlZiBsaW50KHJlcG9fcm9v
dCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigpKToKICAgICAgICAgICAg
ICAgICAgIGEgdHVwbGUgb2YgdGhlIGVycm9yIHR5cGUgYW5kIHRoZSBwYXRoIG90aGVyd2lzZQog
ICAgICAgICAiIiIKIAotICAgICAgICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIGVycm9ycykKKyAgICAgICAgZXJyb3JzID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJy
b3JzKGlnbm9yZWxpc3QsIGVycm9ycykKIAogICAgICAgICBpZiBub3QgZXJyb3JzOgogICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKQEAgLTkxNiw3ICs5NDAsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAgICAgICAgICAgICBw
YXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgYW55
KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBpZ25v
cmVkX2ZpbGVzKToKKyAgICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21h
dGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBza2lwcGVkX2ZpbGVzKToKICAgICAgICAgICAgIHBhdGhz
LnJlbW92ZShwYXRoKQogICAgICAgICAgICAgY29udGludWUKIApAQCAtOTQyLDcgKzk2Niw3IEBA
IGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0
cigpKToKIAogcGF0aF9saW50cyA9IFtjaGVja19maWxlX3R5cGUsIGNoZWNrX3BhdGhfbGVuZ3Ro
LCBjaGVja193b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHksCiAgICAgICAgICAgICAg
IGNoZWNrX2dpdGlnbm9yZV9maWxlXQotYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNrX2Nzc19nbG9i
YWxseV91bmlxdWVdCithbGxfcGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1
ZSwgY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lc10KIGZpbGVfbGludHMgPSBbY2hl
Y2tfcmVnZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2Ny
aXB0X21ldGFkYXRhLAogICAgICAgICAgICAgICBjaGVja19haGVtX3N5c3RlbV9mb250XQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKaW5kZXggZmFhMjg1ZmQ3Y2RiY2M0MDZmOGMwMmFi
MDNlZDZiZWIzNmViMGJlZi4uNjk1ZjZjZDRlNTMyOGNhZjJmMDg1YTExNWQzMWE5YzBiNGFlMjcx
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpAQCAtMzIyLDYgKzMyMiwxNSBAQCBj
bGFzcyBUZXN0aGFybmVzc0luT3RoZXJUeXBlKFJ1bGUpOgogICAgIGRlc2NyaXB0aW9uID0gInRl
c3RoYXJuZXNzLmpzIGluY2x1ZGVkIGluIGEgJXMgdGVzdCIKIAogCitjbGFzcyBEdXBsaWNhdGVC
YXNlbmFtZVBhdGgoUnVsZSk6CisgICAgbmFtZSA9ICJEVVBMSUNBVEUtQkFTRU5BTUUtUEFUSCIK
KyAgICBkZXNjcmlwdGlvbiA9IGNvbGxhcHNlKCIiIgorICAgICAgICAgICAgRmlsZSBoYXMgaWRl
bnRpY2FsIGJhc2VuYW1lIHBhdGggKHBhdGggZXhjbHVkaW5nIGV4dGVuc2lvbikgYXMKKyAgICAg
ICAgICAgIG90aGVyIGZpbGUocykgKGZvdW5kIGV4dGVuc2lvbnM6ICVzKQorICAgICIiIikKKyAg
ICB0b19maXggPSAicmVuYW1lIGZpbGVzIHNvIHRoZXkgaGF2ZSB1bmlxdWUgYmFzZW5hbWUgcGF0
aHMiCisKKwogY2xhc3MgUmVnZXhwKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkpOgog
ICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgIGRlZiBwYXR0ZXJuKHNlbGYpOgpAQCAtNDYy
LDMgKzQ3MSwyNyBAQCBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAoUmVnZXhwKToKICAg
ICBkZXNjcmlwdGlvbiA9ICJXaGl0ZXNwYWNlIGF0IEVPTCIKICAgICBwYXR0ZXJuID0gYiJbIFx0
XGZcdl0kIgogICAgIHRvX2ZpeCA9ICIiIlJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20g
YWxsIGxpbmVzIGluIHRoZSBmaWxlLiIiIgorCisKK2NsYXNzIEFzc2VydFRocm93c1JlZ2V4cChS
ZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJbXi5dYXNzZXJ0X3Rocm93c1woIgorICAgIG5hbWUg
PSAiQVNTRVJUX1RIUk9XUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlRl
c3QtZmlsZSBsaW5lIGhhcyBhbiBgYXNzZXJ0X3Rocm93cyguLi4pYCBjYWxsIgorICAgIHRvX2Zp
eCA9ICIiIlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X3Rocm93c19kb21gIG9yIGBhc3NlcnRfdGhyb3dz
X2pzYCBvciBgYXNzZXJ0X3Rocm93c19leGFjdGx5YCIiIgorCisKK2NsYXNzIFByb21pc2VSZWpl
Y3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyInByb21pc2VfcmVqZWN0c1woIgor
ICAgIG5hbWUgPSAiUFJPTUlTRV9SRUpFQ1RTIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0
bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3Jp
cHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGEgYHByb21pc2VfcmVqZWN0cyguLi4pYCBjYWxs
IgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBwcm9taXNlX3JlamVjdHNfZG9tIG9yIHBy
b21pc2VfcmVqZWN0c19qcyBvciBgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHlgIiIiCisKKworY2xh
c3MgQXNzZXJ0UHJlY29uZGl0aW9uUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyIlte
Ll1hc3NlcnRfcHJlY29uZGl0aW9uXCgiCisgICAgbmFtZSA9ICJBU1NFUlQtUFJFQ09ORElUSU9O
IgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIs
ICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFz
IGFuIGBhc3NlcnRfcHJlY29uZGl0aW9uKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVw
bGFjZSB3aXRoIGBhc3NlcnRfaW1wbGVtZW50c2Agb3IgYGFzc2VydF9pbXBsZW1lbnRzX29wdGlv
bmFsYCIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xp
bnQuaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEw
ZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKQEAgLTAsMCAr
MSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53
aGl0ZWxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEwZmZkZDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQu
d2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKjpicm9rZW5faWdub3JlZC5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMS9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1ZTU4NTNk
ZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2Eu
aHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1NWRhYjZhNzdjYjI4MTAzY2MxNThmZjBmOWNjZGU5NmI1
MjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuanMKQEAgLTAs
MCArMSw2IEBACisvLyBUaGlzIGlzIGEgZHVtbXkgSmF2YVNjcmlwdCBmaWxlLCBtZWFudCB0byBp
bmRpY2F0ZSBhICdzdXBwb3J0JyBmaWxlIG9mCisvLyBzb3J0cyB0aGF0IG1heSBiZSBpbmNsdWRl
ZCBieSBzb21lIHRlc3QuCisKK2Z1bmN0aW9uIGhlbGxvV29ybGQoKSB7CisgIHJldHVybiAnSGVs
bG8sIHdvcmxkISc7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGI0Y2MyZTUyMjNh
ODYyNTVlZmI1MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjEvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1
ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2IuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjI5OTFkOWJl
NmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi9hLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4NjI1NWVmYjUzMWE0
ZDVhNDQzMGY5NTFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9h
LnhodG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNjY5ZTY1M2JmYzIzN2I2
Mzc4ZjNhZTllZTY2NzUwYzU1MGJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0
cy9kaXIyL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS90ZXN0cy9kaXIyL2EueGh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwppbmRleCA0NjA1NmU2NzEzZmQzMTNkZmUyNGIx
Yjg4MmMyODM4OWNiZWNmYzljLi5mMzRkMTY3MzBmNzAwNGY3NGQyMzRjOWNjYWRiMmMwZWNlZDJi
NTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3czYy1pbXBvcnQubG9nCkBAIC0xOCw1ICsxOCw1IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Jyb2tlbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvZGVwZW5kZW5jeS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2xpbnQuaWdub3JlCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
ZmlsZV9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKaW5kZXggMDhjMDliNmIwOTUw
YjJjZjU0OGMzYjVlNDE1MzAzNTk3ZGQ4YzY1NC4uN2RhY2ZhZDYzODBkYzhiNjY4YTIyZGM3YzRm
ZTJlNzRkMzc1NDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC02MzMsNiArNjMzLDggQEAgZGVmIHRlc3RfbGF0ZV90
aW1lb3V0KCk6CiAgICAgICAgICAgICBdCiAKIAorIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBwcmludCAqc3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCisj
ICAgICAgIFRoZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5j
dGlvbiBiZWxvdy4KIEBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3Qg
cGFyc2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKIGRlZiB0ZXN0X3ByaW50X3N0
YXRlbWVudCgpOgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6
XG4gIHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQpAQCAtNzk0LDYgKzc5NiwyMCBAQCBk
ZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgogICAgIF0KIAogCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX3RlbnRhdGl2ZSgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisKKyAgICAjIFRoZSB0
ZW50YXRpdmUgZmxhZyBjb3ZlcnMgdGVzdHMgdGhhdCBtYWtlIGFzc2VydGlvbnMgJ25vdCB5ZXQg
cmVxdWlyZWQgYnkKKyAgICAjIGFueSBzcGVjaWZpY2F0aW9uJywgc28gdGhleSBuZWVkIG5vdCBo
YXZlIGEgc3BlY2lmaWNhdGlvbiBsaW5rLgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci50ZW50YXRpdmUuaHRtbCIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgIGFzc2VydCBub3QgZXJyb3JzCisKKwogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaWxl
bmFtZSIsIFsKICAgICAiZm9vLndvcmtlci5qcyIsCiAgICAgImZvby5hbnkuanMiLApAQCAtODQy
LDE3ICs4NTgsMTcgQEAgZGVmIHRlc3Rfc2NyaXB0X21ldGFkYXRhKGZpbGVuYW1lLCBpbnB1dCwg
ZXJyb3IpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdsb2JhbHMsZXJyb3IiLCBbCiAg
ICAgKGIiIiwgTm9uZSksCi0gICAgKGIiZGVmYXVsdCIsIE5vbmUpLAotICAgIChiIiFkZWZhdWx0
IiwgTm9uZSksCisgICAgKGIiZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAor
ICAgIChiIiFkZWZhdWx0IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiAgICAgKGIid2lu
ZG93IiwgTm9uZSksCi0gICAgKGIiIXdpbmRvdyIsIE5vbmUpLAotICAgIChiIiFkZWRpY2F0ZWR3
b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiQlJPS0VOLUdMT0JBTC1N
RVRBREFUQSIpLAotICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1HTE9CQUwtTUVUQURB
VEEiKSwKLSAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIsICJCUk9LRU4tR0xP
QkFMLU1FVEFEQVRBIiksCi0gICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29ya2VyIiwgTm9uZSks
Ci0gICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsIE5vbmUpLAotICAgIChiIiF3b3JrZXIi
LCBOb25lKSwKKyAgICAoYiIhd2luZG93IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisg
ICAgKGIiIWRlZGljYXRlZHdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAg
IChiIndpbmRvdywgIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChi
IiFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIic2Vy
dmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwK
KyAgICAoYiJ3b3JrZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURB
VEEiKSwKKyAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIiIXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAog
ICAgIChiImZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAgIChiIiFmb28iLCAi
VU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKIF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCBhZjJiN2QzZDRhYTE5ZjBjMWQ3MmE1NTc1YjUw
MTNjNzg5N2UxZGM0Li4xMGQ5NzI4YjQwNTc1MWJkYjI4ZGI1ZTAxOTMxNjJlYzdmNmRmNDg2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTgs
NyArOCw3IEBAIGltcG9ydCBzaXgKIAogZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9ydCByZXBvX3Jv
b3QKIGZyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKLWZyb20gLi5saW50IGltcG9ydCBm
aWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBjcmVhdGVfcGFy
c2VyCitmcm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzLCBwYXJzZV9p
Z25vcmVsaXN0LCBsaW50LCBjcmVhdGVfcGFyc2VyCiAKIF9kdW1teV9yZXBvID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkdW1teSIpCiAKQEAgLTE3LDggKzE3LDgg
QEAgZGVmIF9tb2NrX2xpbnQobmFtZSwgKiprd2FyZ3MpOgogICAgIHJldHVybiBtb2NrLnBhdGNo
KGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9d3JhcHBlZCwgKiprd2FyZ3Mp
CiAKIAotZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoKToKLSAgICB3aGl0ZWxpc3Qg
PSB7CitkZWYgdGVzdF9maWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoKToKKyAgICBpZ25vcmVsaXN0
ID0gewogICAgICAgICAnQ09OU09MRSc6IHsKICAgICAgICAgICAgICdzdmcvKic6IHsxMn0KICAg
ICAgICAgfSwKQEAgLTI2LDM0ICsyNiwzNCBAQCBkZWYgdGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vy
cm9ycygpOgogICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFsaXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRj
aCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIHdoaXRlbGlzdCA9IHtlOiB7b3Mu
cGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9Ci0gICAgICAgICAgICAg
ICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5pdGVtcygpfQotICAgICMgcGF0aHMgcGFzc2VkIGlu
dG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMgYXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgIyBw
YXJzZV9pZ25vcmVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUgbWF0Y2ggc3Ry
aW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAgICBpZ25vcmVsaXN0ID0ge2U6IHtvcy5wYXRo
Lm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAg
Zm9yIGUsIHAgaW4gaWdub3JlbGlzdC5pdGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQogICAgIGZpbHRl
cmVkZmlsZSA9ICdzdmcvdGVzdC5odG1sJwogICAgIHVuZmlsdGVyZWRmaWxlID0gJ2h0bWwvdGVz
dC5odG1sJwogICAgICMgVGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGZpbHRlcmVkID0g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVs
aXN0LCBbXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVs
aXN0LCBbXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KICAgICAjIFRlc3RzIGZvciBmaWx0
ZXJpbmcgb24gZmlsZSBhbmQgbGluZSBudW1iZXIKLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEy
XV0pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwg
W1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVk
ID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3Qs
IFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgZmlsdGVyZWQgPSBm
aWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snQ09OU09MRScsICcnLCB1bmZp
bHRlcmVkZmlsZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCB1bmZpbHRlcmVkZmlsZSwgMTJdXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAg
ICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydDT05T
T0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1sn
Q09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0KICAgICAjIFRlc3RzIGZvciBmaWx0ZXJp
bmcgb24ganVzdCBmaWxlCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBm
aWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQg
VEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtd
Ci0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lO
REVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRl
cl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0
ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycs
IHVuZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3Rf
ZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAx
MV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRl
cmVkZmlsZSwgMTFdXQogCiAKLWRlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgpOgorZGVmIHRlc3Rf
cGFyc2VfaWdub3JlbGlzdCgpOgogICAgIGlucHV0X2J1ZmZlciA9IHNpeC5TdHJpbmdJTygiIiIK
ICMgQ29tbWVudAogQ1IgQVQgRU9MOiBzdmcvaW1wb3J0LyoKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IENSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCiAgICAgfQogICAgIGV4
cGVjdGVkX2RhdGEgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5p
dGVtcygpfQogICAgICAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5p
dGVtcygpfQotICAgIGV4cGVjdGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3Ig
eCBpbiB7IioucGRmIiwgInJlc291cmNlcy8qIiwgIioucG5nIn19Ci0gICAgZGF0YSwgaWdub3Jl
ZCA9IHBhcnNlX3doaXRlbGlzdChpbnB1dF9idWZmZXIpCisgICAgZXhwZWN0ZWRfc2tpcHBlZCA9
IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVzb3VyY2VzLyoiLCAi
Ki5wbmcifX0KKyAgICBkYXRhLCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChpbnB1
dF9idWZmZXIpCiAgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQotICAgIGFzc2VydCBp
Z25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKyAgICBhc3NlcnQgc2tpcHBlZF9maWxlcyA9PSBl
eHBlY3RlZF9za2lwcGVkCiAKIAogZGVmIHRlc3RfbGludF9ub19maWxlcyhjYXBsb2cpOgpAQCAt
Mzk4LDYgKzM5OCw2NSBAQCBkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9y
ZWRfZGlyKGNhcGxvZyk6CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCiAKIAorZGVmIHRl
c3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lX3NhbWVfYmFzZW5hbWUoY2FwbG9n
KToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHRlc3RoYXJuZXNzIGZpbGVzIHdpdGgg
Y29uZmxpY3RpbmcgYmFzZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikg
YXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmls
ZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAg
cnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEv
YS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBiZSBvbmUgZmFp
bHVyZSBmb3IgZWFjaCBmaWxlLgorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAg
ICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBh
c3NlcnQgIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfbmFtZShjYXBs
b2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3RoYXJuZXNzIGZpbGVz
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoCisgICAgIyBkaWZmZXJlbnQgbmFtZXMuCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYi5odG1sJykpCisKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVzdHMvZGly
MS9hLmh0bWwiLCAidGVzdHMvZGlyMS9iLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfZGlyKGNhcGxv
Zyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0d28gdGVzdGhhcm5lc3MgZmlsZXMg
aW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzCisgICAgIyB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lLgor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIyJywgJ2EueGh0bWwnKSkKKworICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tf
ZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0
cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIyL2EueGh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAg
ICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRo
LmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisK
K2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9ub3RfdGVzdGhhcm5l
c3MoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIG5vbi10ZXN0aGFybmVz
cyBmaWxlcyB3aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAgIGFzc2VydCBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2Eu
aHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3Jl
cG8sICd0ZXN0cycsICdkaXIxJywgJ2EuanMnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0
ZXN0cy9kaXIxL2EuanMiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKIGRlZiB0ZXN0X2lnbm9yZV9nbG9i
KGNhcGxvZyk6CiAgICAgIyBMaW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBkaXJlY3RvcnksIGFu
ZCBwYXNzIGluIGlnbm9yZV9nbG9iIHRvIG9taXQgb25lCiAgICAgIyBvZiB0aGVtLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
b2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IGY2ZTI0YjQ4NmQ1OGI3ODhiOTQ0MTE3NWM1ZTFj
ODlmOTM4NzRmZWIuLmNlM2I0MWUzMDBjOWYxMTM4MGVhMDY1ZjViMjg4ZDVhZWY4MTI1ODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbG9jYWxwYXRocy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKQEAgLTYsNyArNiw3IEBAIHJlcG9fcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyKSkKIAogc3lzLnBh
dGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgIndwdHNlcnZlIikpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKGhlcmUsICJweXdlYnNvY2tldCIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl3ZWJzb2NrZXQzIikpCiBzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJhdG9taWN3cml0ZXMiKSkKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImF0dHJz
IiwgInNyYyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRf
cGFydHkiLCAiZnVuY3NpZ3MiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDQzMDdiMWMyYzQzMzJiMjk0OTk5YTVmYTMxM2E2YTI4
ZWVjNTdmZjYuLjgwNDIzNDgwYmM1OTc1NDI2OTEwMTBhNTBjYTJjMTZmOTQ1YTcwODQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZApAQCAt
MSwyMTI1ICsxLDIxMjUgQEAKLTwhRU5USVRZIFRhYiAiJiN4OTsiPgotPCFFTlRJVFkgTmV3TGlu
ZSAiJiN4QTsiPgotPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KLTwhRU5USVRZIHF1b3QgIiYjeDIy
OyI+Ci08IUVOVElUWSBRVU9UICImI3gyMjsiPgotPCFFTlRJVFkgbnVtICImI3gyMzsiPgotPCFF
TlRJVFkgZG9sbGFyICImI3gyNDsiPgotPCFFTlRJVFkgcGVyY250ICImI3gyNTsiPgotPCFFTlRJ
VFkgYW1wICImI3gyNjsjeDI2OyI+Ci08IUVOVElUWSBBTVAgIiYjeDI2OyN4MjY7Ij4KLTwhRU5U
SVRZIGFwb3MgIiYjeDI3OyI+Ci08IUVOVElUWSBscGFyICImI3gyODsiPgotPCFFTlRJVFkgcnBh
ciAiJiN4Mjk7Ij4KLTwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZIG1pZGFzdCAiJiN4
MkE7Ij4KLTwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Ci08IUVOVElUWSBjb21tYSAiJiN4MkM7Ij4K
LTwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KLTwhRU5USVRZIHNvbCAiJiN4MkY7Ij4KLTwhRU5U
SVRZIGNvbG9uICImI3gzQTsiPgotPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij4KLTwhRU5USVRZIGx0
ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiPgotPCFFTlRJVFkgbnZs
dCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBlcXVhbHMgIiYjeDNEOyI+Ci08IUVO
VElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGd0ICImI3gzRTsiPgotPCFFTlRJ
VFkgR1QgIiYjeDNFOyI+Ci08IUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQyOyI+Ci08IUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ij4KLTwhRU5USVRZIGNvbW1hdCAiJiN4NDA7Ij4KLTwhRU5USVRZIGxz
cWIgIiYjeDVCOyI+Ci08IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Ci08IUVOVElUWSBic29sICIm
I3g1QzsiPgotPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KLTwhRU5USVRZIHJicmFjayAiJiN4NUQ7
Ij4KLTwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KLTwhRU5USVRZIGxvd2JhciAiJiN4NUY7Ij4KLTwh
RU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgotPCFFTlRJVFkgZ3JhdmUgIiYjeDYwOyI+Ci08IUVO
VElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgotPCFFTlRJVFkgZmpsaWcgIiYjeDY2OyYj
eDZBOyI+Ci08IUVOVElUWSBsY3ViICImI3g3QjsiPgotPCFFTlRJVFkgbGJyYWNlICImI3g3Qjsi
PgotPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgotPCFFTlRJVFkgdmVydCAiJiN4N0M7Ij4KLTwh
RU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KLTwhRU5USVRZIHJjdWIgIiYjeDdEOyI+Ci08
IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Ci08IUVOVElUWSBuYnNwICImI3hBMDsiPgotPCFFTlRJ
VFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KLTwhRU5USVRZIGlleGNsICImI3hBMTsiPgot
PCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KLTwhRU5USVRZIHBvdW5kICImI3hBMzsiPgotPCFFTlRJ
VFkgY3VycmVuICImI3hBNDsiPgotPCFFTlRJVFkgeWVuICImI3hBNTsiPgotPCFFTlRJVFkgYnJ2
YmFyICImI3hBNjsiPgotPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KLTwhRU5USVRZIERvdCAiJiN4
QTg7Ij4KLTwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KLTwhRU5USVRZIERvdWJsZURvdCAiJiN4QTg7
Ij4KLTwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KLTwhRU5USVRZIGNvcHkgIiYjeEE5OyI+Ci08IUVO
VElUWSBDT1BZICImI3hBOTsiPgotPCFFTlRJVFkgb3JkZiAiJiN4QUE7Ij4KLTwhRU5USVRZIGxh
cXVvICImI3hBQjsiPgotPCFFTlRJVFkgbm90ICImI3hBQzsiPgotPCFFTlRJVFkgc2h5ICImI3hB
RDsiPgotPCFFTlRJVFkgcmVnICImI3hBRTsiPgotPCFFTlRJVFkgY2lyY2xlZFIgIiYjeEFFOyI+
Ci08IUVOVElUWSBSRUcgIiYjeEFFOyI+Ci08IUVOVElUWSBtYWNyICImI3hBRjsiPgotPCFFTlRJ
VFkgc3RybnMgIiYjeEFGOyI+Ci08IUVOVElUWSBkZWcgIiYjeEIwOyI+Ci08IUVOVElUWSBwbHVz
bW4gIiYjeEIxOyI+Ci08IUVOVElUWSBwbSAiJiN4QjE7Ij4KLTwhRU5USVRZIFBsdXNNaW51cyAi
JiN4QjE7Ij4KLTwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Ci08IUVOVElUWSBzdXAzICImI3hCMzsi
PgotPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICIm
I3hCNDsiPgotPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Ci08IUVOVElUWSBwYXJhICImI3hCNjsi
PgotPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VudGVyZG90ICImI3hCNzsi
PgotPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VkaWwgIiYjeEI4OyI+
Ci08IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgotPCFFTlRJVFkgc3VwMSAiJiN4Qjk7Ij4KLTwh
RU5USVRZIG9yZG0gIiYjeEJBOyI+Ci08IUVOVElUWSByYXF1byAiJiN4QkI7Ij4KLTwhRU5USVRZ
IGZyYWMxNCAiJiN4QkM7Ij4KLTwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij4KLTwhRU5USVRZIGhh
bGYgIiYjeEJEOyI+Ci08IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Ci08IUVOVElUWSBpcXVlc3Qg
IiYjeEJGOyI+Ci08IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Ci08IUVOVElUWSBBYWN1dGUgIiYj
eEMxOyI+Ci08IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KLTwhRU5USVRZIEF0aWxkZSAiJiN4QzM7
Ij4KLTwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Ci08IUVOVElUWSBBcmluZyAiJiN4QzU7Ij4KLTwh
RU5USVRZIGFuZ3N0ICImI3hDNTsiPgotPCFFTlRJVFkgQUVsaWcgIiYjeEM2OyI+Ci08IUVOVElU
WSBDY2VkaWwgIiYjeEM3OyI+Ci08IUVOVElUWSBFZ3JhdmUgIiYjeEM4OyI+Ci08IUVOVElUWSBF
YWN1dGUgIiYjeEM5OyI+Ci08IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4KLTwhRU5USVRZIEV1bWwg
IiYjeENCOyI+Ci08IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Ci08IUVOVElUWSBJYWN1dGUgIiYj
eENEOyI+Ci08IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KLTwhRU5USVRZIEl1bWwgIiYjeENGOyI+
Ci08IUVOVElUWSBFVEggIiYjeEQwOyI+Ci08IUVOVElUWSBOdGlsZGUgIiYjeEQxOyI+Ci08IUVO
VElUWSBPZ3JhdmUgIiYjeEQyOyI+Ci08IUVOVElUWSBPYWN1dGUgIiYjeEQzOyI+Ci08IUVOVElU
WSBPY2lyYyAiJiN4RDQ7Ij4KLTwhRU5USVRZIE90aWxkZSAiJiN4RDU7Ij4KLTwhRU5USVRZIE91
bWwgIiYjeEQ2OyI+Ci08IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KLTwhRU5USVRZIE9zbGFzaCAi
JiN4RDg7Ij4KLTwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KLTwhRU5USVRZIFVhY3V0ZSAiJiN4
REE7Ij4KLTwhRU5USVRZIFVjaXJjICImI3hEQjsiPgotPCFFTlRJVFkgVXVtbCAiJiN4REM7Ij4K
LTwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KLTwhRU5USVRZIFRIT1JOICImI3hERTsiPgotPCFF
TlRJVFkgc3psaWcgIiYjeERGOyI+Ci08IUVOVElUWSBhZ3JhdmUgIiYjeEUwOyI+Ci08IUVOVElU
WSBhYWN1dGUgIiYjeEUxOyI+Ci08IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij4KLTwhRU5USVRZIGF0
aWxkZSAiJiN4RTM7Ij4KLTwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Ci08IUVOVElUWSBhcmluZyAi
JiN4RTU7Ij4KLTwhRU5USVRZIGFlbGlnICImI3hFNjsiPgotPCFFTlRJVFkgY2NlZGlsICImI3hF
NzsiPgotPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgotPCFFTlRJVFkgZWFjdXRlICImI3hFOTsi
PgotPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Ci08IUVOVElUWSBldW1sICImI3hFQjsiPgotPCFF
TlRJVFkgaWdyYXZlICImI3hFQzsiPgotPCFFTlRJVFkgaWFjdXRlICImI3hFRDsiPgotPCFFTlRJ
VFkgaWNpcmMgIiYjeEVFOyI+Ci08IUVOVElUWSBpdW1sICImI3hFRjsiPgotPCFFTlRJVFkgZXRo
ICImI3hGMDsiPgotPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgotPCFFTlRJVFkgb2dyYXZlICIm
I3hGMjsiPgotPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgotPCFFTlRJVFkgb2NpcmMgIiYjeEY0
OyI+Ci08IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Ci08IUVOVElUWSBvdW1sICImI3hGNjsiPgot
PCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgotPCFFTlRJVFkgZGl2ICImI3hGNzsiPgotPCFFTlRJ
VFkgb3NsYXNoICImI3hGODsiPgotPCFFTlRJVFkgdWdyYXZlICImI3hGOTsiPgotPCFFTlRJVFkg
dWFjdXRlICImI3hGQTsiPgotPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+Ci08IUVOVElUWSB1dW1s
ICImI3hGQzsiPgotPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgotPCFFTlRJVFkgdGhvcm4gIiYj
eEZFOyI+Ci08IUVOVElUWSB5dW1sICImI3hGRjsiPgotPCFFTlRJVFkgQW1hY3IgIiYjeDEwMDsi
PgotPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgotPCFFTlRJVFkgQWJyZXZlICImI3gxMDI7Ij4K
LTwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Ci08IUVOVElUWSBBb2dvbiAiJiN4MTA0OyI+Ci08
IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Ci08IUVOVElUWSBDYWN1dGUgIiYjeDEwNjsiPgotPCFF
TlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KLTwhRU5USVRZIENjaXJjICImI3gxMDg7Ij4KLTwhRU5U
SVRZIGNjaXJjICImI3gxMDk7Ij4KLTwhRU5USVRZIENkb3QgIiYjeDEwQTsiPgotPCFFTlRJVFkg
Y2RvdCAiJiN4MTBCOyI+Ci08IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiPgotPCFFTlRJVFkgY2Nh
cm9uICImI3gxMEQ7Ij4KLTwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+Ci08IUVOVElUWSBkY2Fy
b24gIiYjeDEwRjsiPgotPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4KLTwhRU5USVRZIGRzdHJv
ayAiJiN4MTExOyI+Ci08IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Ci08IUVOVElUWSBlbWFjciAi
JiN4MTEzOyI+Ci08IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KLTwhRU5USVRZIGVkb3QgIiYjeDEx
NzsiPgotPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgotPCFFTlRJVFkgZW9nb24gIiYjeDExOTsi
PgotPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KLTwhRU5USVRZIGVjYXJvbiAiJiN4MTFCOyI+
Ci08IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Ci08IUVOVElUWSBnY2lyYyAiJiN4MTFEOyI+Ci08
IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgotPCFFTlRJVFkgZ2JyZXZlICImI3gxMUY7Ij4KLTwh
RU5USVRZIEdkb3QgIiYjeDEyMDsiPgotPCFFTlRJVFkgZ2RvdCAiJiN4MTIxOyI+Ci08IUVOVElU
WSBHY2VkaWwgIiYjeDEyMjsiPgotPCFFTlRJVFkgSGNpcmMgIiYjeDEyNDsiPgotPCFFTlRJVFkg
aGNpcmMgIiYjeDEyNTsiPgotPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij4KLTwhRU5USVRZIGhz
dHJvayAiJiN4MTI3OyI+Ci08IUVOVElUWSBJdGlsZGUgIiYjeDEyODsiPgotPCFFTlRJVFkgaXRp
bGRlICImI3gxMjk7Ij4KLTwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4KLTwhRU5USVRZIGltYWNy
ICImI3gxMkI7Ij4KLTwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KLTwhRU5USVRZIGlvZ29uICIm
I3gxMkY7Ij4KLTwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgotPCFFTlRJVFkgaW1hdGggIiYjeDEz
MTsiPgotPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KLTwhRU5USVRZIElKbGlnICImI3gxMzI7
Ij4KLTwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KLTwhRU5USVRZIEpjaXJjICImI3gxMzQ7Ij4K
LTwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KLTwhRU5USVRZIEtjZWRpbCAiJiN4MTM2OyI+Ci08
IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgotPCFFTlRJVFkga2dyZWVuICImI3gxMzg7Ij4KLTwh
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Ci08IUVOVElUWSBsYWN1dGUgIiYjeDEzQTsiPgotPCFF
TlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KLTwhRU5USVRZIGxjZWRpbCAiJiN4MTNDOyI+Ci08IUVO
VElUWSBMY2Fyb24gIiYjeDEzRDsiPgotPCFFTlRJVFkgbGNhcm9uICImI3gxM0U7Ij4KLTwhRU5U
SVRZIExtaWRvdCAiJiN4MTNGOyI+Ci08IUVOVElUWSBsbWlkb3QgIiYjeDE0MDsiPgotPCFFTlRJ
VFkgTHN0cm9rICImI3gxNDE7Ij4KLTwhRU5USVRZIGxzdHJvayAiJiN4MTQyOyI+Ci08IUVOVElU
WSBOYWN1dGUgIiYjeDE0MzsiPgotPCFFTlRJVFkgbmFjdXRlICImI3gxNDQ7Ij4KLTwhRU5USVRZ
IE5jZWRpbCAiJiN4MTQ1OyI+Ci08IUVOVElUWSBuY2VkaWwgIiYjeDE0NjsiPgotPCFFTlRJVFkg
TmNhcm9uICImI3gxNDc7Ij4KLTwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI+Ci08IUVOVElUWSBu
YXBvcyAiJiN4MTQ5OyI+Ci08IUVOVElUWSBFTkcgIiYjeDE0QTsiPgotPCFFTlRJVFkgZW5nICIm
I3gxNEI7Ij4KLTwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KLTwhRU5USVRZIG9tYWNyICImI3gx
NEQ7Ij4KLTwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Ci08IUVOVElUWSBvZGJsYWMgIiYjeDE1
MTsiPgotPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgotPCFFTlRJVFkgb2VsaWcgIiYjeDE1Mzsi
PgotPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KLTwhRU5USVRZIHJhY3V0ZSAiJiN4MTU1OyI+
Ci08IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgotPCFFTlRJVFkgcmNlZGlsICImI3gxNTc7Ij4K
LTwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Ci08IUVOVElUWSByY2Fyb24gIiYjeDE1OTsiPgot
PCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KLTwhRU5USVRZIHNhY3V0ZSAiJiN4MTVCOyI+Ci08
IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Ci08IUVOVElUWSBzY2lyYyAiJiN4MTVEOyI+Ci08IUVO
VElUWSBTY2VkaWwgIiYjeDE1RTsiPgotPCFFTlRJVFkgc2NlZGlsICImI3gxNUY7Ij4KLTwhRU5U
SVRZIFNjYXJvbiAiJiN4MTYwOyI+Ci08IUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiPgotPCFFTlRJ
VFkgVGNlZGlsICImI3gxNjI7Ij4KLTwhRU5USVRZIHRjZWRpbCAiJiN4MTYzOyI+Ci08IUVOVElU
WSBUY2Fyb24gIiYjeDE2NDsiPgotPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7Ij4KLTwhRU5USVRZ
IFRzdHJvayAiJiN4MTY2OyI+Ci08IUVOVElUWSB0c3Ryb2sgIiYjeDE2NzsiPgotPCFFTlRJVFkg
VXRpbGRlICImI3gxNjg7Ij4KLTwhRU5USVRZIHV0aWxkZSAiJiN4MTY5OyI+Ci08IUVOVElUWSBV
bWFjciAiJiN4MTZBOyI+Ci08IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+Ci08IUVOVElUWSBVYnJl
dmUgIiYjeDE2QzsiPgotPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4KLTwhRU5USVRZIFVyaW5n
ICImI3gxNkU7Ij4KLTwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KLTwhRU5USVRZIFVkYmxhYyAi
JiN4MTcwOyI+Ci08IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgotPCFFTlRJVFkgVW9nb24gIiYj
eDE3MjsiPgotPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgotPCFFTlRJVFkgV2NpcmMgIiYjeDE3
NDsiPgotPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgotPCFFTlRJVFkgWWNpcmMgIiYjeDE3Njsi
PgotPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgotPCFFTlRJVFkgWXVtbCAiJiN4MTc4OyI+Ci08
IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgotPCFFTlRJVFkgemFjdXRlICImI3gxN0E7Ij4KLTwh
RU5USVRZIFpkb3QgIiYjeDE3QjsiPgotPCFFTlRJVFkgemRvdCAiJiN4MTdDOyI+Ci08IUVOVElU
WSBaY2Fyb24gIiYjeDE3RDsiPgotPCFFTlRJVFkgemNhcm9uICImI3gxN0U7Ij4KLTwhRU5USVRZ
IGZub2YgIiYjeDE5MjsiPgotPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPgotPCFFTlRJVFkgZ2Fj
dXRlICImI3gxRjU7Ij4KLTwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4KLTwhRU5USVRZIGNpcmMg
IiYjeDJDNjsiPgotPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgotPCFFTlRJVFkgSGFjZWsgIiYj
eDJDNzsiPgotPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkgQnJldmUgIiYjeDJE
ODsiPgotPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsRG90ICIm
I3gyRDk7Ij4KLTwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgotPCFFTlRJVFkgb2dvbiAiJiN4MkRC
OyI+Ci08IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbFRpbGRl
ICImI3gyREM7Ij4KLTwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KLTwhRU5USVRZIERpYWNyaXRp
Y2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgotPCFFTlRJVFkgRG93bkJyZXZlICImI3gzMTE7Ij4K
LTwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KLTwhRU5USVRZIEJldGEgIiYjeDM5MjsiPgotPCFF
TlRJVFkgR2FtbWEgIiYjeDM5MzsiPgotPCFFTlRJVFkgRGVsdGEgIiYjeDM5NDsiPgotPCFFTlRJ
VFkgRXBzaWxvbiAiJiN4Mzk1OyI+Ci08IUVOVElUWSBaZXRhICImI3gzOTY7Ij4KLTwhRU5USVRZ
IEV0YSAiJiN4Mzk3OyI+Ci08IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+Ci08IUVOVElUWSBJb3Rh
ICImI3gzOTk7Ij4KLTwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KLTwhRU5USVRZIExhbWJkYSAi
JiN4MzlCOyI+Ci08IUVOVElUWSBNdSAiJiN4MzlDOyI+Ci08IUVOVElUWSBOdSAiJiN4MzlEOyI+
Ci08IUVOVElUWSBYaSAiJiN4MzlFOyI+Ci08IUVOVElUWSBPbWljcm9uICImI3gzOUY7Ij4KLTwh
RU5USVRZIFBpICImI3gzQTA7Ij4KLTwhRU5USVRZIFJobyAiJiN4M0ExOyI+Ci08IUVOVElUWSBT
aWdtYSAiJiN4M0EzOyI+Ci08IUVOVElUWSBUYXUgIiYjeDNBNDsiPgotPCFFTlRJVFkgVXBzaWxv
biAiJiN4M0E1OyI+Ci08IUVOVElUWSBQaGkgIiYjeDNBNjsiPgotPCFFTlRJVFkgQ2hpICImI3gz
QTc7Ij4KLTwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Ci08IUVOVElUWSBPbWVnYSAiJiN4M0E5OyI+
Ci08IUVOVElUWSBvaG0gIiYjeDNBOTsiPgotPCFFTlRJVFkgYWxwaGEgIiYjeDNCMTsiPgotPCFF
TlRJVFkgYmV0YSAiJiN4M0IyOyI+Ci08IUVOVElUWSBnYW1tYSAiJiN4M0IzOyI+Ci08IUVOVElU
WSBkZWx0YSAiJiN4M0I0OyI+Ci08IUVOVElUWSBlcHNpICImI3gzQjU7Ij4KLTwhRU5USVRZIGVw
c2lsb24gIiYjeDNCNTsiPgotPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+Ci08IUVOVElUWSBldGEg
IiYjeDNCNzsiPgotPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgotPCFFTlRJVFkgaW90YSAiJiN4
M0I5OyI+Ci08IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Ci08IUVOVElUWSBsYW1iZGEgIiYjeDNC
QjsiPgotPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgotPCFFTlRJVFkgbnUgIiYjeDNCRDsiPgotPCFF
TlRJVFkgeGkgIiYjeDNCRTsiPgotPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JGOyI+Ci08IUVOVElU
WSBwaSAiJiN4M0MwOyI+Ci08IUVOVElUWSByaG8gIiYjeDNDMTsiPgotPCFFTlRJVFkgc2lnbWF2
ICImI3gzQzI7Ij4KLTwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4KLTwhRU5USVRZIHNpZ21h
ZiAiJiN4M0MyOyI+Ci08IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Ci08IUVOVElUWSB0YXUgIiYj
eDNDNDsiPgotPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Ci08IUVOVElUWSB1cHNpbG9uICImI3gz
QzU7Ij4KLTwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Ci08IUVOVElUWSBjaGkgIiYjeDNDNzsiPgot
PCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KLTwhRU5USVRZIG9tZWdhICImI3gzQzk7Ij4KLTwhRU5U
SVRZIHRoZXRhdiAiJiN4M0QxOyI+Ci08IUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyI+Ci08IUVO
VElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Ci08IUVOVElUWSBVcHNpICImI3gzRDI7Ij4KLTwhRU5U
SVRZIHVwc2loICImI3gzRDI7Ij4KLTwhRU5USVRZIHN0cmFpZ2h0cGhpICImI3gzRDU7Ij4KLTwh
RU5USVRZIHBoaXYgIiYjeDNENTsiPgotPCFFTlRJVFkgdmFycGhpICImI3gzRDU7Ij4KLTwhRU5U
SVRZIHBpdiAiJiN4M0Q2OyI+Ci08IUVOVElUWSB2YXJwaSAiJiN4M0Q2OyI+Ci08IUVOVElUWSBH
YW1tYWQgIiYjeDNEQzsiPgotPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7Ij4KLTwhRU5USVRZIGRp
Z2FtbWEgIiYjeDNERDsiPgotPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij4KLTwhRU5USVRZIHZh
cmthcHBhICImI3gzRjA7Ij4KLTwhRU5USVRZIHJob3YgIiYjeDNGMTsiPgotPCFFTlRJVFkgdmFy
cmhvICImI3gzRjE7Ij4KLTwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4KLTwhRU5USVRZIHN0cmFp
Z2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Ci08IUVOVElUWSB2YXJlcHNpbG9uICImI3gzRjU7Ij4KLTwh
RU5USVRZIGJlcHNpICImI3gzRjY7Ij4KLTwhRU5USVRZIGJhY2tlcHNpbG9uICImI3gzRjY7Ij4K
LTwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgotPCFFTlRJVFkgREpjeSAiJiN4NDAyOyI+Ci08IUVO
VElUWSBHSmN5ICImI3g0MDM7Ij4KLTwhRU5USVRZIEp1a2N5ICImI3g0MDQ7Ij4KLTwhRU5USVRZ
IERTY3kgIiYjeDQwNTsiPgotPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsiPgotPCFFTlRJVFkgWUlj
eSAiJiN4NDA3OyI+Ci08IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgotPCFFTlRJVFkgTEpjeSAi
JiN4NDA5OyI+Ci08IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KLTwhRU5USVRZIFRTSGN5ICImI3g0
MEI7Ij4KLTwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgotPCFFTlRJVFkgVWJyY3kgIiYjeDQwRTsi
PgotPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Ci08IUVOVElUWSBBY3kgIiYjeDQxMDsiPgotPCFF
TlRJVFkgQmN5ICImI3g0MTE7Ij4KLTwhRU5USVRZIFZjeSAiJiN4NDEyOyI+Ci08IUVOVElUWSBH
Y3kgIiYjeDQxMzsiPgotPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KLTwhRU5USVRZIElFY3kgIiYj
eDQxNTsiPgotPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Ci08IUVOVElUWSBaY3kgIiYjeDQxNzsi
PgotPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KLTwhRU5USVRZIEpjeSAiJiN4NDE5OyI+Ci08IUVO
VElUWSBLY3kgIiYjeDQxQTsiPgotPCFFTlRJVFkgTGN5ICImI3g0MUI7Ij4KLTwhRU5USVRZIE1j
eSAiJiN4NDFDOyI+Ci08IUVOVElUWSBOY3kgIiYjeDQxRDsiPgotPCFFTlRJVFkgT2N5ICImI3g0
MUU7Ij4KLTwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Ci08IUVOVElUWSBSY3kgIiYjeDQyMDsiPgot
PCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KLTwhRU5USVRZIFRjeSAiJiN4NDIyOyI+Ci08IUVOVElU
WSBVY3kgIiYjeDQyMzsiPgotPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4KLTwhRU5USVRZIEtIY3kg
IiYjeDQyNTsiPgotPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Ci08IUVOVElUWSBDSGN5ICImI3g0
Mjc7Ij4KLTwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgotPCFFTlRJVFkgU0hDSGN5ICImI3g0Mjk7
Ij4KLTwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Ci08IUVOVElUWSBZY3kgIiYjeDQyQjsiPgot
PCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KLTwhRU5USVRZIEVjeSAiJiN4NDJEOyI+Ci08IUVO
VElUWSBZVWN5ICImI3g0MkU7Ij4KLTwhRU5USVRZIFlBY3kgIiYjeDQyRjsiPgotPCFFTlRJVFkg
YWN5ICImI3g0MzA7Ij4KLTwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Ci08IUVOVElUWSB2Y3kgIiYj
eDQzMjsiPgotPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KLTwhRU5USVRZIGRjeSAiJiN4NDM0OyI+
Ci08IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KLTwhRU5USVRZIHpoY3kgIiYjeDQzNjsiPgotPCFF
TlRJVFkgemN5ICImI3g0Mzc7Ij4KLTwhRU5USVRZIGljeSAiJiN4NDM4OyI+Ci08IUVOVElUWSBq
Y3kgIiYjeDQzOTsiPgotPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KLTwhRU5USVRZIGxjeSAiJiN4
NDNCOyI+Ci08IUVOVElUWSBtY3kgIiYjeDQzQzsiPgotPCFFTlRJVFkgbmN5ICImI3g0M0Q7Ij4K
LTwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Ci08IUVOVElUWSBwY3kgIiYjeDQzRjsiPgotPCFFTlRJ
VFkgcmN5ICImI3g0NDA7Ij4KLTwhRU5USVRZIHNjeSAiJiN4NDQxOyI+Ci08IUVOVElUWSB0Y3kg
IiYjeDQ0MjsiPgotPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KLTwhRU5USVRZIGZjeSAiJiN4NDQ0
OyI+Ci08IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KLTwhRU5USVRZIHRzY3kgIiYjeDQ0NjsiPgot
PCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Ci08IUVOVElUWSBzaGN5ICImI3g0NDg7Ij4KLTwhRU5U
SVRZIHNoY2hjeSAiJiN4NDQ5OyI+Ci08IUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiPgotPCFFTlRJ
VFkgeWN5ICImI3g0NEI7Ij4KLTwhRU5USVRZIHNvZnRjeSAiJiN4NDRDOyI+Ci08IUVOVElUWSBl
Y3kgIiYjeDQ0RDsiPgotPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Ci08IUVOVElUWSB5YWN5ICIm
I3g0NEY7Ij4KLTwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgotPCFFTlRJVFkgZGpjeSAiJiN4NDUy
OyI+Ci08IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KLTwhRU5USVRZIGp1a2N5ICImI3g0NTQ7Ij4K
LTwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgotPCFFTlRJVFkgaXVrY3kgIiYjeDQ1NjsiPgotPCFF
TlRJVFkgeWljeSAiJiN4NDU3OyI+Ci08IUVOVElUWSBqc2VyY3kgIiYjeDQ1ODsiPgotPCFFTlRJ
VFkgbGpjeSAiJiN4NDU5OyI+Ci08IUVOVElUWSBuamN5ICImI3g0NUE7Ij4KLTwhRU5USVRZIHRz
aGN5ICImI3g0NUI7Ij4KLTwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgotPCFFTlRJVFkgdWJyY3kg
IiYjeDQ1RTsiPgotPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Ci08IUVOVElUWSBlbnNwICImI3gy
MDAyOyI+Ci08IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Ci08IUVOVElUWSBlbXNwMTMgIiYjeDIw
MDQ7Ij4KLTwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgotPCFFTlRJVFkgbnVtc3AgIiYjeDIw
MDc7Ij4KLTwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgotPCFFTlRJVFkgdGhpbnNwICImI3gy
MDA5OyI+Ci08IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KLTwhRU5USVRZIGhhaXJzcCAi
JiN4MjAwQTsiPgotPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsiPgotPCFFTlRJVFkg
WmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlVmVyeVRoaW5TcGFj
ZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ij4KLTwh
RU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZl
VGhpY2tTcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgenduaiAiJiN4MjAwQzsiPgotPCFFTlRJ
VFkgendqICImI3gyMDBEOyI+Ci08IUVOVElUWSBscm0gIiYjeDIwMEU7Ij4KLTwhRU5USVRZIHJs
bSAiJiN4MjAwRjsiPgotPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+Ci08IUVOVElUWSBkYXNo
ICImI3gyMDEwOyI+Ci08IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgotPCFFTlRJVFkgbWRhc2gg
IiYjeDIwMTQ7Ij4KLTwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgotPCFFTlRJVFkgVmVyYmFy
ICImI3gyMDE2OyI+Ci08IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Ci08IUVOVElUWSBsc3F1byAi
JiN4MjAxODsiPgotPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ij4KLTwhRU5USVRZ
IHJzcXVvICImI3gyMDE5OyI+Ci08IUVOVElUWSByc3F1b3IgIiYjeDIwMTk7Ij4KLTwhRU5USVRZ
IENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgotPCFFTlRJVFkgbHNxdW9yICImI3gyMDFBOyI+
Ci08IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgotPCFFTlRJVFkgbGRxdW8gIiYjeDIwMUM7Ij4K
LTwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+Ci08IUVOVElUWSByZHF1
byAiJiN4MjAxRDsiPgotPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+Ci08IUVOVElUWSBDbG9z
ZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIGxkcXVvciAiJiN4MjAxRTsi
PgotPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KLTwhRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsi
PgotPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBkZGFnZ2VyICImI3gyMDIx
OyI+Ci08IUVOVElUWSBidWxsICImI3gyMDIyOyI+Ci08IUVOVElUWSBidWxsZXQgIiYjeDIwMjI7
Ij4KLTwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KLTwhRU5USVRZIGhlbGxpcCAiJiN4MjAyNjsi
PgotPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgotPCFFTlRJVFkgcGVybWlsICImI3gyMDMwOyI+
Ci08IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Ci08IUVOVElUWSBwcmltZSAiJiN4MjAzMjsi
PgotPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KLTwhRU5USVRZIHRwcmltZSAiJiN4MjAzNDsi
PgotPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Ci08IUVOVElUWSBiYWNrcHJpbWUgIiYjeDIw
MzU7Ij4KLTwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgotPCFFTlRJVFkgcnNhcXVvICImI3gy
MDNBOyI+Ci08IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgotPCFFTlRJVFkgT3ZlckJhciAiJiN4
MjAzRTsiPgotPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KLTwhRU5USVRZIGh5YnVsbCAiJiN4
MjA0MzsiPgotPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KLTwhRU5USVRZIGJzZW1pICImI3gy
MDRGOyI+Ci08IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KLTwhRU5USVRZIE1lZGl1bVNwYWNl
ICImI3gyMDVGOyI+Ci08IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYjeDIwMEE7Ij4KLTwh
RU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KLTwhRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIw
NjE7Ij4KLTwhRU5USVRZIGFmICImI3gyMDYxOyI+Ci08IUVOVElUWSBJbnZpc2libGVUaW1lcyAi
JiN4MjA2MjsiPgotPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KLTwhRU5USVRZIEludmlzaWJsZUNv
bW1hICImI3gyMDYzOyI+Ci08IUVOVElUWSBpYyAiJiN4MjA2MzsiPgotPCFFTlRJVFkgZXVybyAi
JiN4MjBBQzsiPgotPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgotPCFFTlRJVFkgVHJpcGxlRG90
ICImI3gyMERCOyI+Ci08IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4KLTwhRU5USVRZIENvcGYg
IiYjeDIxMDI7Ij4KLTwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsiPgotPCFFTlRJVFkgaW5j
YXJlICImI3gyMTA1OyI+Ci08IUVOVElUWSBnc2NyICImI3gyMTBBOyI+Ci08IUVOVElUWSBoYW1p
bHQgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiPgotPCFFTlRJ
VFkgSHNjciAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGZyICImI3gyMTBDOyI+Ci08IUVOVElUWSBQ
b2luY2FyZXBsYW5lICImI3gyMTBDOyI+Ci08IUVOVElUWSBxdWF0ZXJuaW9ucyAiJiN4MjEwRDsi
PgotPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgotPCFFTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
PgotPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Ci08IUVOVElUWSBoYmFyICImI3gyMTBGOyI+
Ci08IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIGhzbGFzaCAiJiN4MjEwRjsi
PgotPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7
Ij4KLTwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Ci08IUVOVElUWSBJbSAiJiN4MjExMTsiPgot
PCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KLTwhRU5USVRZIElmciAiJiN4MjExMTsiPgot
PCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgotPCFFTlRJVFkgbGFncmFuICImI3gyMTEyOyI+Ci08
IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Ci08IUVOVElUWSBlbGwgIiYjeDIxMTM7Ij4K
LTwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG5hdHVyYWxzICImI3gyMTE1OyI+
Ci08IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KLTwhRU5USVRZIGNvcHlzciAiJiN4MjExNzsi
PgotPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Ci08IUVOVElUWSB3cCAiJiN4MjExODsiPgot
PCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgotPCFFTlRJVFkgcHJpbWVzICImI3gyMTE5OyI+Ci08
IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KLTwhRU5USVRZIFFvcGYgIiYjeDIxMUE7Ij4K
LTwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWxpbmUgIiYjeDIxMUI7Ij4K
LTwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJlICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscGFydCAiJiN4MjExQzsiPgotPCFFTlRJVFkgUmZyICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscyAiJiN4MjExRDsiPgotPCFFTlRJVFkgUm9wZiAiJiN4MjExRDsiPgotPCFFTlRJ
VFkgcnggIiYjeDIxMUU7Ij4KLTwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+Ci08IUVOVElUWSBU
UkFERSAiJiN4MjEyMjsiPgotPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZ
IFpvcGYgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZIG1obyAiJiN4MjEyNzsiPgotPCFFTlRJVFkgWmZy
ICImI3gyMTI4OyI+Ci08IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4KLTwhRU5USVRZIGlpb3Rh
ICImI3gyMTI5OyI+Ci08IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJlcm5v
dWxsaXMgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJzY3IgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIENm
ciAiJiN4MjEyRDsiPgotPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiPgotPCFFTlRJVFkgZXNj
ciAiJiN4MjEyRjsiPgotPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgotPCFFTlRJVFkgZXhwZWN0
YXRpb24gIiYjeDIxMzA7Ij4KLTwhRU5USVRZIEZzY3IgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIEZv
dXJpZXJ0cmYgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIHBobW1hdCAiJiN4MjEzMzsiPgotPCFFTlRJ
VFkgTWVsbGludHJmICImI3gyMTMzOyI+Ci08IUVOVElUWSBNc2NyICImI3gyMTMzOyI+Ci08IUVO
VElUWSBvcmRlciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgb3JkZXJvZiAiJiN4MjEzNDsiPgotPCFF
TlRJVFkgb3NjciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgYWxlZnN5bSAiJiN4MjEzNTsiPgotPCFF
TlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KLTwhRU5USVRZIGJldGggIiYjeDIxMzY7Ij4KLTwhRU5U
SVRZIGdpbWVsICImI3gyMTM3OyI+Ci08IUVOVElUWSBkYWxldGggIiYjeDIxMzg7Ij4KLTwhRU5U
SVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Ci08IUVOVElUWSBERCAiJiN4MjE0
NTsiPgotPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgotPCFFTlRJVFkgZGQgIiYj
eDIxNDY7Ij4KLTwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0NzsiPgotPCFFTlRJVFkgZXhw
b25lbnRpYWxlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBlZSAiJiN4MjE0NzsiPgotPCFFTlRJVFkg
SW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgaWkgIiYjeDIxNDg7Ij4KLTwhRU5USVRZ
IGZyYWMxMyAiJiN4MjE1MzsiPgotPCFFTlRJVFkgZnJhYzIzICImI3gyMTU0OyI+Ci08IUVOVElU
WSBmcmFjMTUgIiYjeDIxNTU7Ij4KLTwhRU5USVRZIGZyYWMyNSAiJiN4MjE1NjsiPgotPCFFTlRJ
VFkgZnJhYzM1ICImI3gyMTU3OyI+Ci08IUVOVElUWSBmcmFjNDUgIiYjeDIxNTg7Ij4KLTwhRU5U
SVRZIGZyYWMxNiAiJiN4MjE1OTsiPgotPCFFTlRJVFkgZnJhYzU2ICImI3gyMTVBOyI+Ci08IUVO
VElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KLTwhRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiPgotPCFF
TlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Ci08IUVOVElUWSBmcmFjNzggIiYjeDIxNUU7Ij4KLTwh
RU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIGxlZnRhcnJvdyAiJiN4MjE5MDsiPgot
PCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBzbGFyciAiJiN4MjE5MDsi
PgotPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIHVhcnIgIiYj
eDIxOTE7Ij4KLTwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIFVwQXJyb3cg
IiYjeDIxOTE7Ij4KLTwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsiPgotPCFFTlRJVFkg
cmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJ
VFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ij4KLTwh
RU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgZGFyciAiJiN4MjE5
MzsiPgotPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Ci08IUVOVElUWSBEb3duQXJyb3cg
IiYjeDIxOTM7Ij4KLTwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkzOyI+Ci08IUVOVElU
WSBoYXJyICImI3gyMTk0OyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAiJiN4MjE5NDsiPgot
PCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZIHZhcnIgIiYjeDIx
OTU7Ij4KLTwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Ci08IUVOVElUWSBVcERvd25B
cnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij4KLTwhRU5USVRZIFVw
cGVyTGVmdEFycm93ICImI3gyMTk2OyI+Ci08IUVOVElUWSBud2Fycm93ICImI3gyMTk2OyI+Ci08
IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgotPCFFTlRJVFkgVXBwZXJSaWdodEFycm93ICImI3gy
MTk3OyI+Ci08IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Ci08IUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiPgotPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJVFkgTG93ZXJSaWdo
dEFycm93ICImI3gyMTk4OyI+Ci08IUVOVElUWSBzd2FyciAiJiN4MjE5OTsiPgotPCFFTlRJVFkg
c3dhcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgTG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ij4K
LTwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Ci08IUVOVElUWSBubGVmdGFycm93ICImI3gyMTlB
OyI+Ci08IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgotPCFFTlRJVFkgbnJpZ2h0YXJyb3cgIiYj
eDIxOUI7Ij4KLTwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Ci08IUVOVElUWSByaWdodHNxdWln
YXJyb3cgIiYjeDIxOUQ7Ij4KLTwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ij4KLTwh
RU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIHR3b2hlYWRsZWZ0YXJyb3cgIiYjeDIx
OUU7Ij4KLTwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KLTwhRU5USVRZIFJhcnIgIiYjeDIxQTA7
Ij4KLTwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+Ci08IUVOVElUWSBEYXJy
ICImI3gyMUExOyI+Ci08IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIGxlZnRh
cnJvd3RhaWwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiPgotPCFFTlRJ
VFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KLTwhRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4
MjFBNDsiPgotPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgotPCFFTlRJVFkgVXBUZWVB
cnJvdyAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ij4KLTwhRU5USVRZ
IG1hcCAiJiN4MjFBNjsiPgotPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAiJiN4MjFBNjsiPgotPCFF
TlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Ci08IUVOVElUWSBEb3duVGVlQXJyb3cgIiYjeDIxQTc7
Ij4KLTwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KLTwhRU5USVRZIGxhcnJoayAiJiN4
MjFBOTsiPgotPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPgotPCFFTlRJVFkgcmFy
cmhrICImI3gyMUFBOyI+Ci08IUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiPgotPCFF
TlRJVFkgbGFycmxwICImI3gyMUFCOyI+Ci08IUVOVElUWSBsb29wYXJyb3dsZWZ0ICImI3gyMUFC
OyI+Ci08IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGxvb3BhcnJvd3JpZ2h0
ICImI3gyMUFDOyI+Ci08IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbGVmdHJp
Z2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ij4KLTwh
RU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgotPCFFTlRJVFkgbHNoICImI3gyMUIw
OyI+Ci08IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIHJzaCAiJiN4MjFCMTsiPgot
PCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBsZHNoICImI3gyMUIyOyI+Ci08IUVO
VElUWSByZHNoICImI3gyMUIzOyI+Ci08IUVOVElUWSBjcmFyciAiJiN4MjFCNTsiPgotPCFFTlRJ
VFkgY3VsYXJyICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93bGVmdCAiJiN4MjFCNjsi
PgotPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93cmlnaHQg
IiYjeDIxQjc7Ij4KLTwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Ci08IUVOVElUWSBjaXJjbGVh
cnJvd2xlZnQgIiYjeDIxQkE7Ij4KLTwhRU5USVRZIG9yYXJyICImI3gyMUJCOyI+Ci08IUVOVElU
WSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Ci08IUVOVElUWSBsaGFydSAiJiN4MjFCQzsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGVmdGhhcnBvb251
cCAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIGxlZnRo
YXJwb29uZG93biAiJiN4MjFCRDsiPgotPCFFTlRJVFkgRG93bkxlZnRWZWN0b3IgIiYjeDIxQkQ7
Ij4KLTwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Ci08IUVOVElUWSB1cGhhcnBvb25yaWdodCAi
JiN4MjFCRTsiPgotPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFCRTsiPgotPCFFTlRJVFkg
dWhhcmwgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ij4KLTwh
RU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgotPCFFTlRJVFkgcmhhcnUgIiYjeDIxQzA7
Ij4KLTwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Ci08IUVOVElUWSByaWdodGhhcnBv
b251cCAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7Ij4KLTwhRU5USVRZIHJp
Z2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvciAiJiN4
MjFDMTsiPgotPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blZl
Y3RvciAiJiN4MjFDMjsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25yaWdodCAiJiN4MjFDMjsiPgot
PCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIExlZnREb3duVmVjdG9yICImI3gy
MUMzOyI+Ci08IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIHJs
YXJyICImI3gyMUM0OyI+Ci08IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KLTwhRU5USVRZIHVkYXJyICIm
I3gyMUM1OyI+Ci08IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyI+Ci08IUVOVElU
WSBscmFyciAiJiN4MjFDNjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3dzICImI3gyMUM2OyI+
Ci08IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+Ci08IUVOVElUWSBsbGFy
ciAiJiN4MjFDNzsiPgotPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ij4KLTwhRU5U
SVRZIHV1YXJyICImI3gyMUM4OyI+Ci08IUVOVElUWSB1cHVwYXJyb3dzICImI3gyMUM4OyI+Ci08
IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgotPCFFTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4
MjFDOTsiPgotPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZIGRvd25kb3duYXJy
b3dzICImI3gyMUNBOyI+Ci08IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPgotPCFFTlRJVFkgUmV2
ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRoYXJwb29ucyAi
JiN4MjFDQjsiPgotPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KLTwhRU5USVRZIHJpZ2h0bGVm
dGhhcnBvb25zICImI3gyMUNDOyI+Ci08IUVOVElUWSBFcXVpbGlicml1bSAiJiN4MjFDQzsiPgot
PCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5MZWZ0YXJyb3cgIiYjeDIxQ0Q7
Ij4KLTwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Ci08IUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cg
IiYjeDIxQ0U7Ij4KLTwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Ci08IUVOVElUWSBuUmlnaHRh
cnJvdyAiJiN4MjFDRjsiPgotPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPgotPCFFTlRJVFkgTGVm
dGFycm93ICImI3gyMUQwOyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0QXJyb3cgIiYjeDIxRDA7Ij4K
LTwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIFVwYXJyb3cgIiYjeDIxRDE7Ij4K
LTwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIHJBcnIgIiYjeDIx
RDI7Ij4KLTwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIEltcGxpZXMg
IiYjeDIxRDI7Ij4KLTwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5U
SVRZIGRBcnIgIiYjeDIxRDM7Ij4KLTwhRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiPgotPCFF
TlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBoQXJyICImI3gyMUQ0
OyI+Ci08IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgotPCFFTlRJVFkgRG91Ymxl
TGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIGlmZiAiJiN4MjFENDsiPgotPCFF
TlRJVFkgdkFyciAiJiN4MjFENTsiPgotPCFFTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7Ij4K
LTwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Ci08IUVOVElUWSBud0FyciAi
JiN4MjFENjsiPgotPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KLTwhRU5USVRZIHNlQXJyICIm
I3gyMUQ4OyI+Ci08IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgotPCFFTlRJVFkgbEFhcnIgIiYj
eDIxREE7Ij4KLTwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4KLTwhRU5USVRZIHJBYXJy
ICImI3gyMURCOyI+Ci08IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiPgotPCFFTlRJVFkg
emlncmFyciAiJiN4MjFERDsiPgotPCFFTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ij4KLTwhRU5USVRZ
IExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgotPCFFTlRJVFkgcmFycmIgIiYjeDIxRTU7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KLTwhRU5USVRZIGR1YXJyICImI3gyMUY1
OyI+Ci08IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+Ci08IUVOVElUWSBsb2Fy
ciAiJiN4MjFGRDsiPgotPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4KLTwhRU5USVRZIGhvYXJy
ICImI3gyMUZGOyI+Ci08IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4KLTwhRU5USVRZIEZvckFs
bCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgY29tcGxl
bWVudCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPgotPCFFTlRJVFkgUGFy
dGlhbEQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYjeDMzODsiPgotPCFF
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KLTwhRU5USVRZIEV4aXN0cyAiJiN4MjIwMzsiPgotPCFF
TlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Ci08IUVOVElUWSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ij4K
LTwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KLTwhRU5USVRZIGVtcHR5ICImI3gyMjA1OyI+
Ci08IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgotPCFFTlRJVFkgZW1wdHl2ICImI3gyMjA1
OyI+Ci08IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Ci08IUVOVElUWSBuYWJsYSAiJiN4
MjIwNzsiPgotPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Ci08IUVOVElUWSBpc2luICImI3gyMjA4
OyI+Ci08IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgotPCFFTlRJVFkgRWxlbWVudCAiJiN4MjIw
ODsiPgotPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIG5vdGluICImI3gyMjA5OyI+
Ci08IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Ci08IUVOVElUWSBub3RpbnZhICImI3gy
MjA5OyI+Ci08IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFJldmVyc2VFbGVtZW50
ICImI3gyMjBCOyI+Ci08IUVOVElUWSBuaSAiJiN4MjIwQjsiPgotPCFFTlRJVFkgU3VjaFRoYXQg
IiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Ci08IUVOVElUWSBub3RuaXZh
ICImI3gyMjBDOyI+Ci08IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiPgotPCFF
TlRJVFkgcHJvZCAiJiN4MjIwRjsiPgotPCFFTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsiPgotPCFF
TlRJVFkgY29wcm9kICImI3gyMjEwOyI+Ci08IUVOVElUWSBDb3Byb2R1Y3QgIiYjeDIyMTA7Ij4K
LTwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgotPCFFTlRJVFkgU3VtICImI3gyMjExOyI+Ci08IUVO
VElUWSBtaW51cyAiJiN4MjIxMjsiPgotPCFFTlRJVFkgbW5wbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBtcCAiJiN4MjIxMzsiPgotPCFFTlRJVFkgTWludXNQbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KLTwhRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ij4KLTwh
RU5USVRZIHNldG1uICImI3gyMjE2OyI+Ci08IUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiPgot
PCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Ci08IUVOVElUWSBzc2V0bW4gIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KLTwhRU5USVRZIGxvd2FzdCAi
JiN4MjIxNzsiPgotPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Ci08IUVOVElUWSBTbWFsbENp
cmNsZSAiJiN4MjIxODsiPgotPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIFNx
cnQgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHByb3B0
byAiJiN4MjIxRDsiPgotPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFEOyI+Ci08IUVOVElU
WSB2cHJvcCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyI+Ci08IUVO
VElUWSBpbmZpbiAiJiN4MjIxRTsiPgotPCFFTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ij4KLTwhRU5U
SVRZIGFuZyAiJiN4MjIyMDsiPgotPCFFTlRJVFkgYW5nbGUgIiYjeDIyMjA7Ij4KLTwhRU5USVRZ
IG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgotPCFFTlRJVFkgYW5nbXNkICImI3gyMjIxOyI+Ci08
IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Ci08IUVOVElUWSBhbmdzcGggIiYjeDIy
MjI7Ij4KLTwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgVmVydGljYWxCYXIgIiYj
eDIyMjM7Ij4KLTwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIHNob3J0bWlkICIm
I3gyMjIzOyI+Ci08IUVOVElUWSBubWlkICImI3gyMjI0OyI+Ci08IUVOVElUWSBOb3RWZXJ0aWNh
bEJhciAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIG5z
aG9ydG1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgcGFyICImI3gyMjI1OyI+Ci08IUVOVElUWSBw
YXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgRG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjU7
Ij4KLTwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ij4KLTwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KLTwhRU5USVRZIG5wYXJhbGxlbCAi
JiN4MjIyNjsiPgotPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjY7Ij4KLTwh
RU5USVRZIG5zcGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NjsiPgotPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Ci08IUVOVElUWSB3ZWRnZSAiJiN4MjIyNzsi
PgotPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KLTwhRU5USVRZIHZlZSAiJiN4MjIyODsiPgotPCFF
TlRJVFkgY2FwICImI3gyMjI5OyI+Ci08IUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZFMDA7Ij4K
LTwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgotPCFFTlRJVFkgY3VwcyAiJiN4MjIyQTsmI3hGRTAw
OyI+Ci08IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludGVncmFsICImI3gyMjJC
OyI+Ci08IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KLTwhRU5USVRZIHRpbnQgIiYjeDIyMkQ7Ij4K
LTwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Ci08IUVOVElUWSBjb25pbnQgIiYjeDIyMkU7Ij4K
LTwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4
MjIyRTsiPgotPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Ci08IUVOVElUWSBEb3VibGVDb250
b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KLTwhRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ij4KLTwh
RU5USVRZIGN3aW50ICImI3gyMjMxOyI+Ci08IUVOVElUWSBjd2NvbmludCAiJiN4MjIzMjsiPgot
PCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI+Ci08IUVOVElUWSBh
d2NvbmludCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRl
Z3JhbCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI+Ci08IUVOVElUWSB0
aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIFRoZXJlZm9yZSAiJiN4MjIzNDsiPgotPCFF
TlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Ci08IUVOVElUWSBiZWNhdXNlICImI3gyMjM1OyI+Ci08
IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Ci08IUVOVElUWSByYXRpbyAiJiN4MjIzNjsiPgot
PCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7
Ij4KLTwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgotPCFFTlRJVFkgZG90bWludXMgIiYjeDIy
Mzg7Ij4KLTwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Ci08IUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ij4KLTwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgVGlsZGUgIiYjeDIyM0M7
Ij4KLTwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhpY2tzaW0gIiYjeDIy
M0M7Ij4KLTwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGJzaW0g
IiYjeDIyM0Q7Ij4KLTwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4KLTwhRU5USVRZIHJhY2Ug
IiYjeDIyM0Q7JiN4MzMxOyI+Ci08IUVOVElUWSBhYyAiJiN4MjIzRTsiPgotPCFFTlRJVFkgbXN0
cG9zICImI3gyMjNFOyI+Ci08IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyI+Ci08IUVOVElU
WSBhY2QgIiYjeDIyM0Y7Ij4KLTwhRU5USVRZIHdyZWF0aCAiJiN4MjI0MDsiPgotPCFFTlRJVFkg
VmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgotPCFFTlRJVFkgd3IgIiYjeDIyNDA7Ij4KLTwhRU5U
SVRZIG5zaW0gIiYjeDIyNDE7Ij4KLTwhRU5USVRZIE5vdFRpbGRlICImI3gyMjQxOyI+Ci08IUVO
VElUWSBlc2ltICImI3gyMjQyOyI+Ci08IUVOVElUWSBFcXVhbFRpbGRlICImI3gyMjQyOyI+Ci08
IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0
MjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsiPgotPCFFTlRJVFkg
c2ltZSAiJiN4MjI0MzsiPgotPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiPgotPCFFTlRJ
VFkgc2ltZXEgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIG5zaW1lICImI3gyMjQ0OyI+Ci08IUVOVElU
WSBuc2ltZXEgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRXF1YWwgIiYjeDIyNDQ7Ij4K
LTwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ1OyI+Ci08IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgotPCFFTlRJVFkgbmNvbmcgIiYjeDIy
NDc7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI+Ci08IUVOVElUWSBh
c3ltcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIFRpbGRl
VGlsZGUgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwcHJveCAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
dGhrYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyI+Ci08IUVO
VElUWSBuYXAgIiYjeDIyNDk7Ij4KLTwhRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYjeDIyNDk7Ij4K
LTwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KLTwhRU5USVRZIGFwZSAiJiN4MjI0QTsiPgot
PCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KLTwhRU5USVRZIGFwaWQgIiYjeDIyNEI7Ij4K
LTwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgotPCFFTlRJVFkgYmNvbmcgIiYjeDIy
NEM7Ij4KLTwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Ci08IUVOVElUWSBhc3ltcGVxICIm
I3gyMjREOyI+Ci08IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KLTwhRU5USVRZIG52YXAgIiYj
eDIyNEQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsiPgotPCFFTlRJVFkgSHVt
cERvd25IdW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ij4KLTwhRU5U
SVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5idW1wICIm
I3gyMjRFOyYjeDMzODsiPgotPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIEh1
bXBFcXVhbCAiJiN4MjI0RjsiPgotPCFFTlRJVFkgYnVtcGVxICImI3gyMjRGOyI+Ci08IUVOVElU
WSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RIdW1wRXF1YWwgIiYjeDIy
NEY7JiN4MzM4OyI+Ci08IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgotPCFFTlRJVFkgRG90RXF1
YWwgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+Ci08IUVOVElUWSBuZWRv
dCAiJiN4MjI1MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVEb3QgIiYjeDIyNTE7Ij4KLTwhRU5USVRZ
IGRvdGVxZG90ICImI3gyMjUxOyI+Ci08IUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiPgotPCFFTlRJ
VFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgotPCFFTlRJVFkgZXJEb3QgIiYjeDIyNTM7Ij4K
LTwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgotPCFFTlRJVFkgY29sb25lICImI3gy
MjU0OyI+Ci08IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Ci08IUVOVElUWSBBc3NpZ24gIiYj
eDIyNTQ7Ij4KLTwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJVFkgZXFjb2xvbiAi
JiN4MjI1NTsiPgotPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgotPCFFTlRJVFkgZXFjaXJjICIm
I3gyMjU2OyI+Ci08IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Ci08IUVOVElUWSBjaXJjZXEgIiYj
eDIyNTc7Ij4KLTwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgotPCFFTlRJVFkgdmVlZXEgIiYj
eDIyNUE7Ij4KLTwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcSAi
JiN4MjI1QzsiPgotPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Ci08IUVOVElUWSBxdWVzdGVx
ICImI3gyMjVGOyI+Ci08IUVOVElUWSBuZSAiJiN4MjI2MDsiPgotPCFFTlRJVFkgTm90RXF1YWwg
IiYjeDIyNjA7Ij4KLTwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Ci08IUVOVElUWSBDb25ncnVl
bnQgIiYjeDIyNjE7Ij4KLTwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4MjBFNTsiPgotPCFF
TlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Ci08IUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7
Ij4KLTwhRU5USVRZIGxlICImI3gyMjY0OyI+Ci08IUVOVElUWSBsZXEgIiYjeDIyNjQ7Ij4KLTwh
RU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgZ2UgIiYjeDIyNjU7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgotPCFFTlRJVFkgZ2VxICImI3gyMjY1
OyI+Ci08IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KLTwhRU5USVRZIGxFICImI3gy
MjY2OyI+Ci08IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+Ci08IUVOVElUWSBsZXFx
ICImI3gyMjY2OyI+Ci08IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4OyI+Ci08IUVOVElUWSBu
bGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdFICImI3gyMjY3OyI+Ci08IUVOVElU
WSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Ci08IUVOVElUWSBnZXFxICImI3gyMjY3OyI+
Ci08IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2VxcSAiJiN4MjI2
NzsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4
OyI+Ci08IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGxuZXFxICImI3gyMjY4OyI+
Ci08IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZIGx2ZXJ0bmVxcSAi
JiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBnbkUgIiYjeDIyNjk7Ij4KLTwhRU5USVRZIGdu
ZXFxICImI3gyMjY5OyI+Ci08IUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZFMDA7Ij4KLTwhRU5U
SVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08IUVOVElUWSBMdCAiJiN4MjI2QTsi
PgotPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KLTwhRU5USVRZIGxsICImI3gy
MjZBOyI+Ci08IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgotPCFFTlRJVFkgTm90TGVz
c0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Ci08IUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBEMjsi
PgotPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIE5lc3RlZEdyZWF0ZXJHcmVhdGVy
ICImI3gyMjZCOyI+Ci08IUVOVElUWSBnZyAiJiN4MjI2QjsiPgotPCFFTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyYjeDMz
ODsiPgotPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHR3aXh0ICIm
I3gyMjZDOyI+Ci08IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Ci08IUVOVElUWSBOb3RDdXBD
YXAgIiYjeDIyNkQ7Ij4KLTwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgotPCFFTlRJVFkgTm90TGVz
cyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIG5ndCAi
JiN4MjI2RjsiPgotPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmd0
ciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Ci08IUVOVElUWSBOb3RMZXNz
RXF1YWwgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5sZXEgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5n
ZSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gyMjcxOyI+Ci08IUVO
VElUWSBuZ2VxICImI3gyMjcxOyI+Ci08IUVOVElUWSBsc2ltICImI3gyMjcyOyI+Ci08IUVOVElU
WSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KLTwhRU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ij4KLTwh
RU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KLTwhRU5USVRZIGd0cnNpbSAiJiN4MjI3MzsiPgotPCFF
TlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Ci08IUVOVElUWSBubHNpbSAiJiN4MjI3NDsi
PgotPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Ci08IUVOVElUWSBuZ3NpbSAiJiN4
MjI3NTsiPgotPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI+Ci08IUVOVElUWSBs
ZyAiJiN4MjI3NjsiPgotPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiPgotPCFFTlRJVFkgTGVz
c0dyZWF0ZXIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGdsICImI3gyMjc3OyI+Ci08IUVOVElUWSBn
dHJsZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiPgotPCFF
TlRJVFkgbnRsZyAiJiN4MjI3ODsiPgotPCFFTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7
Ij4KLTwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJMZXNzICIm
I3gyMjc5OyI+Ci08IUVOVElUWSBwciAiJiN4MjI3QTsiPgotPCFFTlRJVFkgUHJlY2VkZXMgIiYj
eDIyN0E7Ij4KLTwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIHNjICImI3gyMjdC
OyI+Ci08IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgotPCFFTlRJVFkgc3VjYyAiJiN4MjI3
QjsiPgotPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIFByZWNlZGVzU2xhbnRF
cXVhbCAiJiN4MjI3QzsiPgotPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIyN0M7Ij4KLTwhRU5U
SVRZIHNjY3VlICImI3gyMjdEOyI+Ci08IUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
N0Q7Ij4KLTwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Ci08IUVOVElUWSBwcnNpbSAi
JiN4MjI3RTsiPgotPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgUHJlY2Vk
ZXNUaWxkZSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZ
IHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7Ij4K
LTwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyI+Ci08IUVOVElUWSBu
cHIgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+Ci08IUVOVElUWSBOb3RQ
cmVjZWRlcyAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnNjICImI3gyMjgxOyI+Ci08IUVOVElUWSBu
c3VjYyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIyODE7Ij4KLTwhRU5U
SVRZIHN1YiAiJiN4MjI4MjsiPgotPCFFTlRJVFkgc3Vic2V0ICImI3gyMjgyOyI+Ci08IUVOVElU
WSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYj
eDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElU
WSBzdXAgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiPgotPCFFTlRJVFkg
U3VwZXJzZXQgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHZuc3VwICImI3gyMjgzOyYjeDIwRDI7Ij4K
LTwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgTm90U3VwZXJz
ZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YiAiJiN4MjI4NDsiPgotPCFFTlRJ
VFkgbnN1cCAiJiN4MjI4NTsiPgotPCFFTlRJVFkgc3ViZSAiJiN4MjI4NjsiPgotPCFFTlRJVFkg
U3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyI+Ci08
IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Ci08IUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiPgot
PCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgotPCFFTlRJVFkgbnN1YmUgIiYjeDIy
ODg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgotPCFFTlRJVFkgTm90U3Vic2V0
RXF1YWwgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdXBlICImI3gyMjg5OyI+Ci08IUVOVElUWSBu
c3Vwc2V0ZXEgIiYjeDIyODk7Ij4KLTwhRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYjeDIyODk7
Ij4KLTwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Ci08IUVOVElUWSBzdWJzZXRuZXEgIiYjeDIy
OEE7Ij4KLTwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJz
dWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ij4K
LTwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgdnN1cG5lICImI3gyMjhC
OyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyI+Ci08
IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KLTwhRU5USVRZIHVwbHVzICImI3gyMjhFOyI+Ci08
IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIHNxc3ViICImI3gyMjhGOyI+
Ci08IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIHNxc3Vic2V0ICIm
I3gyMjhGOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4MzM4OyI+Ci08
IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIy
OTA7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiPgot
PCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3Vic2V0
ZXEgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiPgotPCFFTlRJVFkgU3F1
YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FzdXBzZXRlcSAiJiN4MjI5
MjsiPgotPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KLTwhRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiPgotPCFFTlRJVFkgc3FjYXBzICImI3gyMjkzOyYjeEZFMDA7Ij4KLTwh
RU5USVRZIHNxY3VwICImI3gyMjk0OyI+Ci08IUVOVElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsi
PgotPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KLTwhRU5USVRZIG9wbHVzICIm
I3gyMjk1OyI+Ci08IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+Ci08IUVOVElUWSBvbWlu
dXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyI+Ci08IUVOVElU
WSBvdGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIENpcmNsZVRpbWVzICImI3gyMjk3OyI+Ci08
IUVOVElUWSBvc29sICImI3gyMjk4OyI+Ci08IUVOVElUWSBvZG90ICImI3gyMjk5OyI+Ci08IUVO
VElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIG9jaXIgIiYjeDIyOUE7Ij4KLTwh
RU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Ci08IUVOVElUWSBvYXN0ICImI3gyMjlCOyI+
Ci08IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Ci08IUVOVElUWSBvZGFzaCAiJiN4MjI5
RDsiPgotPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KLTwhRU5USVRZIHBsdXNiICIm
I3gyMjlFOyI+Ci08IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Ci08IUVOVElUWSBtaW51c2Ig
IiYjeDIyOUY7Ij4KLTwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+Ci08IUVOVElUWSB0aW1l
c2IgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIGJveHRpbWVzICImI3gyMkEwOyI+Ci08IUVOVElUWSBz
ZG90YiAiJiN4MjJBMTsiPgotPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyI+Ci08IUVOVElU
WSB2ZGFzaCAiJiN4MjJBMjsiPgotPCFFTlRJVFkgUmlnaHRUZWUgIiYjeDIyQTI7Ij4KLTwhRU5U
SVRZIGRhc2h2ICImI3gyMkEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlICImI3gyMkEzOyI+Ci08IUVO
VElUWSB0b3AgIiYjeDIyQTQ7Ij4KLTwhRU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ij4KLTwhRU5U
SVRZIGJvdHRvbSAiJiN4MjJBNTsiPgotPCFFTlRJVFkgYm90ICImI3gyMkE1OyI+Ci08IUVOVElU
WSBwZXJwICImI3gyMkE1OyI+Ci08IUVOVElUWSBVcFRlZSAiJiN4MjJBNTsiPgotPCFFTlRJVFkg
bW9kZWxzICImI3gyMkE3OyI+Ci08IUVOVElUWSB2RGFzaCAiJiN4MjJBODsiPgotPCFFTlRJVFkg
RG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KLTwhRU5USVRZIFZkYXNoICImI3gyMkE5OyI+Ci08
IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KLTwhRU5USVRZIFZEYXNoICImI3gyMkFCOyI+Ci08
IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KLTwhRU5USVRZIG52RGFzaCAiJiN4MjJBRDsiPgot
PCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Ci08IUVOVElUWSBuVkRhc2ggIiYjeDIyQUY7Ij4K
LTwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgotPCFFTlRJVFkgdmx0cmkgIiYjeDIyQjI7Ij4K
LTwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgotPCFFTlRJVFkgTGVmdFRyaWFu
Z2xlICImI3gyMkIyOyI+Ci08IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiPgotPCFFTlRJVFkgdmFy
dHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgotPCFFTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJC
MzsiPgotPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlbGVmdGVx
ICImI3gyMkI0OyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiPgotPCFF
TlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Ci08IUVOVElUWSBydHJpZSAiJiN4MjJC
NTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+Ci08IUVOVElUWSBSaWdo
dFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4
MjBEMjsiPgotPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Ci08IUVOVElUWSBpbW9mICImI3gy
MkI3OyI+Ci08IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkgbXVsdGltYXAgIiYj
eDIyQjg7Ij4KLTwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgotPCFFTlRJVFkgaW50Y2FsICIm
I3gyMkJBOyI+Ci08IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgotPCFFTlRJVFkgdmVlYmFy
ICImI3gyMkJCOyI+Ci08IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4KLTwhRU5USVRZIGFuZ3J0
dmIgIiYjeDIyQkU7Ij4KLTwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+Ci08IUVOVElUWSB4d2Vk
Z2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSBiaWd3
ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgVmVl
ICImI3gyMkMxOyI+Ci08IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZIHhjYXAg
IiYjeDIyQzI7Ij4KLTwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiPgotPCFFTlRJVFkg
YmlnY2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSB4Y3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBV
bmlvbiAiJiN4MjJDMzsiPgotPCFFTlRJVFkgYmlnY3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBk
aWFtICImI3gyMkM0OyI+Ci08IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBE
aWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBzZG90ICImI3gyMkM1OyI+Ci08IUVOVElUWSBz
c3RhcmYgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIFN0YXIgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIGRp
dm9ueCAiJiN4MjJDNzsiPgotPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiPgotPCFF
TlRJVFkgYm93dGllICImI3gyMkM4OyI+Ci08IUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ij4KLTwh
RU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgotPCFFTlRJVFkgbHRocmVlICImI3gyMkNCOyI+Ci08
IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgotPCFFTlRJVFkgcnRocmVlICImI3gy
MkNDOyI+Ci08IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7Ij4KLTwhRU5USVRZIGJz
aW1lICImI3gyMkNEOyI+Ci08IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ij4KLTwhRU5USVRZ
IGN1dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXJseXZlZSAiJiN4MjJDRTsiPgotPCFFTlRJ
VFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KLTwhRU5USVRZIGN1cmx5d2VkZ2UgIiYjeDIyQ0Y7Ij4KLTwh
RU5USVRZIFN1YiAiJiN4MjJEMDsiPgotPCFFTlRJVFkgU3Vic2V0ICImI3gyMkQwOyI+Ci08IUVO
VElUWSBTdXAgIiYjeDIyRDE7Ij4KLTwhRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiPgotPCFFTlRJ
VFkgQ2FwICImI3gyMkQyOyI+Ci08IUVOVElUWSBDdXAgIiYjeDIyRDM7Ij4KLTwhRU5USVRZIGZv
cmsgIiYjeDIyRDQ7Ij4KLTwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiPgotPCFFTlRJVFkg
ZXBhciAiJiN4MjJENTsiPgotPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGxl
c3Nkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGd0ZG90ICImI3gyMkQ3OyI+Ci08IUVOVElUWSBn
dHJkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIExsICImI3gyMkQ4OyI+Ci08IUVOVElUWSBuTGwg
IiYjeDIyRDg7JiN4MzM4OyI+Ci08IUVOVElUWSBHZyAiJiN4MjJEOTsiPgotPCFFTlRJVFkgZ2dn
ICImI3gyMkQ5OyI+Ci08IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4OyI+Ci08IUVOVElUWSBs
ZWcgIiYjeDIyREE7Ij4KLTwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ij4KLTwh
RU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzZyAiJiN4MjJEQTsmI3hG
RTAwOyI+Ci08IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KLTwhRU5USVRZIGd0cmVxbGVzcyAiJiN4
MjJEQjsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJEQjsiPgotPCFFTlRJVFkg
Z2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Ci08IUVOVElUWSBjdWVwciAiJiN4MjJERTsiPgotPCFF
TlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KLTwhRU5USVRZIGN1ZXNjICImI3gyMkRGOyI+
Ci08IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgotPCFFTlRJVFkgbnByY3VlICImI3gy
MkUwOyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ij4KLTwhRU5U
SVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNTbGFudEVxdWFsICIm
I3gyMkUxOyI+Ci08IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Ci08IUVOVElUWSBOb3RTcXVh
cmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgotPCFFTlRJVFkgbnNxc3VwZSAiJiN4MjJFMzsiPgot
PCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPgotPCFFTlRJVFkgbG5z
aW0gIiYjeDIyRTY7Ij4KLTwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+Ci08IUVOVElUWSBwcm5z
aW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyI+Ci08IUVOVElUWSBz
Y25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyI+Ci08IUVOVElU
WSBubHRyaSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiPgot
PCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Ci08IUVOVElUWSBucnRyaSAiJiN4
MjJFQjsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIG5sdHJpZSAiJiN4MjJFQzsiPgot
PCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVFcXVhbCAiJiN4MjJFQzsiPgotPCFFTlRJVFkgbnJ0cmllICImI3gyMkVEOyI+Ci08IUVO
VElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Ci08IUVOVElUWSBOb3RSaWdodFRyaWFu
Z2xlRXF1YWwgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIHZlbGxpcCAiJiN4MjJFRTsiPgotPCFFTlRJ
VFkgY3Rkb3QgIiYjeDIyRUY7Ij4KLTwhRU5USVRZIHV0ZG90ICImI3gyMkYwOyI+Ci08IUVOVElU
WSBkdGRvdCAiJiN4MjJGMTsiPgotPCFFTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ij4KLTwhRU5USVRZ
IGlzaW5zdiAiJiN4MjJGMzsiPgotPCFFTlRJVFkgaXNpbnMgIiYjeDIyRjQ7Ij4KLTwhRU5USVRZ
IGlzaW5kb3QgIiYjeDIyRjU7Ij4KLTwhRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
PgotPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgotPCFFTlRJVFkgbm90aW52YiAiJiN4MjJG
NzsiPgotPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KLTwhRU5USVRZIG5vdGluRSAiJiN4MjJG
OTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KLTwhRU5USVRZIHhuaXMgIiYj
eDIyRkI7Ij4KLTwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgotPCFFTlRJVFkgbm90bml2YyAiJiN4
MjJGRDsiPgotPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgotPCFFTlRJVFkgYmFyd2VkICIm
I3gyMzA1OyI+Ci08IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgotPCFFTlRJVFkgQmFyd2Vk
ICImI3gyMzA2OyI+Ci08IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4MjMwNjsiPgotPCFFTlRJ
VFkgbGNlaWwgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyI+Ci08
IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgotPCFFTlRJVFkgUmlnaHRDZWlsaW5nICImI3gyMzA5
OyI+Ci08IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KLTwhRU5USVRZIExlZnRGbG9vciAiJiN4
MjMwQTsiPgotPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Ci08IUVOVElUWSBSaWdodEZsb29y
ICImI3gyMzBCOyI+Ci08IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4KLTwhRU5USVRZIGRsY3Jv
cCAiJiN4MjMwRDsiPgotPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+Ci08IUVOVElUWSB1bGNy
b3AgIiYjeDIzMEY7Ij4KLTwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4KLTwhRU5USVRZIHByb2Zs
aW5lICImI3gyMzEyOyI+Ci08IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMxMzsiPgotPCFFTlRJVFkg
dGVscmVjICImI3gyMzE1OyI+Ci08IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ij4KLTwhRU5USVRZ
IHVsY29ybiAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdWxjb3JuZXIgIiYjeDIzMUM7Ij4KLTwhRU5U
SVRZIHVyY29ybiAiJiN4MjMxRDsiPgotPCFFTlRJVFkgdXJjb3JuZXIgIiYjeDIzMUQ7Ij4KLTwh
RU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgotPCFFTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ij4K
LTwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgotPCFFTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7
Ij4KLTwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Ci08IUVOVElUWSBzZnJvd24gIiYjeDIzMjI7
Ij4KLTwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Ci08IUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ij4KLTwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgotPCFFTlRJVFkgcHJvZmFsYXIgIiYjeDIz
MkU7Ij4KLTwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgotPCFFTlRJVFkgb3ZiYXIgIiYjeDIz
M0Q7Ij4KLTwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgotPCFFTlRJVFkgYW5nemFyciAiJiN4
MjM3QzsiPgotPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Ci08IUVOVElUWSBsbW91c3RhY2hl
ICImI3gyM0IwOyI+Ci08IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHJtb3Vz
dGFjaGUgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHRicmsgIiYjeDIzQjQ7Ij4KLTwhRU5USVRZIE92
ZXJCcmFja2V0ICImI3gyM0I0OyI+Ci08IUVOVElUWSBiYnJrICImI3gyM0I1OyI+Ci08IUVOVElU
WSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyI+
Ci08IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KLTwhRU5USVRZIFVuZGVyUGFy
ZW50aGVzaXMgIiYjeDIzREQ7Ij4KLTwhRU5USVRZIE92ZXJCcmFjZSAiJiN4MjNERTsiPgotPCFF
TlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgotPCFFTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7
Ij4KLTwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Ci08IUVOVElUWSBibGFuayAiJiN4MjQy
MzsiPgotPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGNpcmNsZWRTICImI3gyNEM4
OyI+Ci08IUVOVElUWSBib3hoICImI3gyNTAwOyI+Ci08IUVOVElUWSBIb3Jpem9udGFsTGluZSAi
JiN4MjUwMDsiPgotPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgotPCFFTlRJVFkgYm94ZHIgIiYj
eDI1MEM7Ij4KLTwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Ci08IUVOVElUWSBib3h1ciAiJiN4
MjUxNDsiPgotPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KLTwhRU5USVRZIGJveHZyICImI3gy
NTFDOyI+Ci08IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgotPCFFTlRJVFkgYm94aGQgIiYjeDI1
MkM7Ij4KLTwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Ci08IUVOVElUWSBib3h2aCAiJiN4MjUz
QzsiPgotPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgotPCFFTlRJVFkgYm94ViAiJiN4MjU1MTsi
PgotPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KLTwhRU5USVRZIGJveERyICImI3gyNTUzOyI+
Ci08IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgotPCFFTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ij4K
LTwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Ci08IUVOVElUWSBib3hETCAiJiN4MjU1NzsiPgot
PCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KLTwhRU5USVRZIGJveFVyICImI3gyNTU5OyI+Ci08
IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgotPCFFTlRJVFkgYm94dUwgIiYjeDI1NUI7Ij4KLTwh
RU5USVRZIGJveFVsICImI3gyNTVDOyI+Ci08IUVOVElUWSBib3hVTCAiJiN4MjU1RDsiPgotPCFF
TlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KLTwhRU5USVRZIGJveFZyICImI3gyNTVGOyI+Ci08IUVO
VElUWSBib3hWUiAiJiN4MjU2MDsiPgotPCFFTlRJVFkgYm94dkwgIiYjeDI1NjE7Ij4KLTwhRU5U
SVRZIGJveFZsICImI3gyNTYyOyI+Ci08IUVOVElUWSBib3hWTCAiJiN4MjU2MzsiPgotPCFFTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ij4KLTwhRU5USVRZIGJveGhEICImI3gyNTY1OyI+Ci08IUVOVElU
WSBib3hIRCAiJiN4MjU2NjsiPgotPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7Ij4KLTwhRU5USVRZ
IGJveGhVICImI3gyNTY4OyI+Ci08IUVOVElUWSBib3hIVSAiJiN4MjU2OTsiPgotPCFFTlRJVFkg
Ym94dkggIiYjeDI1NkE7Ij4KLTwhRU5USVRZIGJveFZoICImI3gyNTZCOyI+Ci08IUVOVElUWSBi
b3hWSCAiJiN4MjU2QzsiPgotPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij4KLTwhRU5USVRZIGxo
YmxrICImI3gyNTg0OyI+Ci08IUVOVElUWSBibG9jayAiJiN4MjU4ODsiPgotPCFFTlRJVFkgYmxr
MTQgIiYjeDI1OTE7Ij4KLTwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+Ci08IUVOVElUWSBibGsz
NCAiJiN4MjU5MzsiPgotPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Ci08IUVOVElUWSBzcXVhcmUg
IiYjeDI1QTE7Ij4KLTwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgc3F1ZiAi
JiN4MjVBQTsiPgotPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Ci08IUVOVElUWSBibGFja3Nx
dWFyZSAiJiN4MjVBQTsiPgotPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFB
OyI+Ci08IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsiPgotPCFFTlRJVFkg
cmVjdCAiJiN4MjVBRDsiPgotPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI+Ci08IUVOVElUWSBm
bHRucyAiJiN4MjVCMTsiPgotPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIGJp
Z3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIHV0cmlmICImI3gyNUI0OyI+Ci08IUVO
VElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Ci08IUVOVElUWSB1dHJpICImI3gyNUI1OyI+
Ci08IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgotPCFFTlRJVFkgcnRyaWYgIiYjeDI1Qjg7
Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPgotPCFFTlRJVFkgcnRy
aSAiJiN4MjVCOTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVCOTsiPgotPCFFTlRJ
VFkgeGR0cmkgIiYjeDI1QkQ7Ij4KLTwhRU5USVRZIGJpZ3RyaWFuZ2xlZG93biAiJiN4MjVCRDsi
PgotPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVkb3du
ICImI3gyNUJFOyI+Ci08IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Ci08IUVOVElUWSB0cmlhbmds
ZWRvd24gIiYjeDI1QkY7Ij4KLTwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI+Ci08IUVOVElUWSBi
bGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgotPCFFTlRJVFkgbHRyaSAiJiN4MjVDMzsiPgot
PCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Ci08IUVOVElUWSBsb3ogIiYjeDI1Q0E7
Ij4KLTwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGNpciAiJiN4MjVDQjsi
PgotPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Ci08IUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsi
PgotPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgdWx0cmkgIiYjeDI1Rjg7
Ij4KLTwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Ci08IUVOVElUWSBsbHRyaSAiJiN4MjVGQTsi
PgotPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgotPCFFTlRJVFkgRmlsbGVk
U21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KLTwhRU5USVRZIHN0YXJmICImI3gyNjA1OyI+Ci08IUVO
VElUWSBiaWdzdGFyICImI3gyNjA1OyI+Ci08IUVOVElUWSBzdGFyICImI3gyNjA2OyI+Ci08IUVO
VElUWSBwaG9uZSAiJiN4MjYwRTsiPgotPCFFTlRJVFkgZmVtYWxlICImI3gyNjQwOyI+Ci08IUVO
VElUWSBtYWxlICImI3gyNjQyOyI+Ci08IUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ij4KLTwhRU5U
SVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgotPCFFTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ij4KLTwh
RU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Ci08IUVOVElUWSBoZWFydHMgIiYjeDI2NjU7Ij4K
LTwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgotPCFFTlRJVFkgZGlhbXMgIiYjeDI2NjY7
Ij4KLTwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Ci08IUVOVElUWSBzdW5nICImI3gy
NjZBOyI+Ci08IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Ci08IUVOVElUWSBuYXR1ciAiJiN4MjY2
RTsiPgotPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgotPCFFTlRJVFkgc2hhcnAgIiYjeDI2
NkY7Ij4KLTwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Ci08IUVOVElUWSBjaGVja21hcmsgIiYj
eDI3MTM7Ij4KLTwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Ci08IUVOVElUWSBtYWx0ICImI3gy
NzIwOyI+Ci08IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Ci08IUVOVElUWSBzZXh0ICImI3gy
NzM2OyI+Ci08IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1ODsiPgotPCFFTlRJVFkg
bGJicmsgIiYjeDI3NzI7Ij4KLTwhRU5USVRZIHJiYnJrICImI3gyNzczOyI+Ci08IUVOVElUWSBi
c29saHN1YiAiJiN4MjdDODsiPgotPCFFTlRJVFkgc3VwaHNvbCAiJiN4MjdDOTsiPgotPCFFTlRJ
VFkgbG9icmsgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIExlZnREb3VibGVCcmFja2V0ICImI3gyN0U2
OyI+Ci08IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgotPCFFTlRJVFkgUmlnaHREb3VibGVCcmFj
a2V0ICImI3gyN0U3OyI+Ci08IUVOVElUWSBsYW5nICImI3gyN0U4OyI+Ci08IUVOVElUWSBMZWZ0
QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Ci08IUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ij4KLTwh
RU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gy
N0U5OyI+Ci08IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIExhbmcgIiYjeDI3
RUE7Ij4KLTwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KLTwhRU5USVRZIGxvYW5nICImI3gyN0VD
OyI+Ci08IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgotPCFFTlRJVFkgeGxhcnIgIiYjeDI3RjU7
Ij4KLTwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIExvbmdMZWZ0
QXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIHhyYXJyICImI3gyN0Y2OyI+Ci08IUVOVElUWSBs
b25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3
RjY7Ij4KLTwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Ci08IUVOVElUWSBsb25nbGVmdHJpZ2h0
YXJyb3cgIiYjeDI3Rjc7Ij4KLTwhRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGNzsi
PgotPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYj
eDI3Rjg7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYjeDI3Rjg7Ij4KLTwhRU5U
SVRZIHhyQXJyICImI3gyN0Y5OyI+Ci08IUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
PgotPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7Ij4KLTwhRU5USVRZIHho
QXJyICImI3gyN0ZBOyI+Ci08IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ij4K
LTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsiPgotPCFFTlRJVFkg
eG1hcCAiJiN4MjdGQzsiPgotPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiPgotPCFFTlRJ
VFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KLTwhRU5USVRZIG52bEFyciAiJiN4MjkwMjsiPgotPCFF
TlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Ci08IUVOVElUWSBudkhhcnIgIiYjeDI5MDQ7Ij4KLTwh
RU5USVRZIE1hcCAiJiN4MjkwNTsiPgotPCFFTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ij4KLTwhRU5U
SVRZIHJiYXJyICImI3gyOTBEOyI+Ci08IUVOVElUWSBia2Fyb3cgIiYjeDI5MEQ7Ij4KLTwhRU5U
SVRZIGxCYXJyICImI3gyOTBFOyI+Ci08IUVOVElUWSByQmFyciAiJiN4MjkwRjsiPgotPCFFTlRJ
VFkgZGJrYXJvdyAiJiN4MjkwRjsiPgotPCFFTlRJVFkgUkJhcnIgIiYjeDI5MTA7Ij4KLTwhRU5U
SVRZIGRyYmthcm93ICImI3gyOTEwOyI+Ci08IUVOVElUWSBERG90cmFoZCAiJiN4MjkxMTsiPgot
PCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgotPCFFTlRJVFkgRG93bkFycm93QmFyICIm
I3gyOTEzOyI+Ci08IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KLTwhRU5USVRZIGxhdGFpbCAi
JiN4MjkxOTsiPgotPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Ci08IUVOVElUWSBsQXRhaWwg
IiYjeDI5MUI7Ij4KLTwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgotPCFFTlRJVFkgbGFycmZz
ICImI3gyOTFEOyI+Ci08IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4KLTwhRU5USVRZIGxhcnJi
ZnMgIiYjeDI5MUY7Ij4KLTwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ij4KLTwhRU5USVRZIG53
YXJoayAiJiN4MjkyMzsiPgotPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI+Ci08IUVOVElUWSBz
ZWFyaGsgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1OyI+Ci08IUVOVElU
WSBzd2FyaGsgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIGhrc3dhcm93ICImI3gyOTI2OyI+Ci08IUVO
VElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KLTwhRU5USVRZIG5lc2VhciAiJiN4MjkyODsiPgotPCFF
TlRJVFkgdG9lYSAiJiN4MjkyODsiPgotPCFFTlRJVFkgc2Vzd2FyICImI3gyOTI5OyI+Ci08IUVO
VElUWSB0b3NhICImI3gyOTI5OyI+Ci08IUVOVElUWSBzd253YXIgIiYjeDI5MkE7Ij4KLTwhRU5U
SVRZIHJhcnJjICImI3gyOTMzOyI+Ci08IUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4MzM4OyI+
Ci08IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Ci08IUVOVElUWSBsZGNhICImI3gyOTM2OyI+
Ci08IUVOVElUWSByZGNhICImI3gyOTM3OyI+Ci08IUVOVElUWSBjdWRhcnJsICImI3gyOTM4OyI+
Ci08IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KLTwhRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7
Ij4KLTwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KLTwhRU5USVRZIHJhcnJwbCAiJiN4Mjk0
NTsiPgotPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgotPCFFTlRJVFkgVWFycm9jaXIgIiYj
eDI5NDk7Ij4KLTwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Ci08IUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICImI3gyOTRFOyI+Ci08IUVO
VElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgotPCFFTlRJVFkgRG93bkxlZnRSaWdo
dFZlY3RvciAiJiN4Mjk1MDsiPgotPCFFTlRJVFkgTGVmdFVwRG93blZlY3RvciAiJiN4Mjk1MTsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgotPCFFTlRJVFkgUmlnaHRWZWN0
b3JCYXIgIiYjeDI5NTM7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIgIiYjeDI5NTQ7Ij4K
LTwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgotPCFFTlRJVFkgRG93bkxl
ZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvckJhciAiJiN4
Mjk1NzsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyI+Ci08IUVOVElUWSBM
ZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgotPCFFTlRJVFkgTGVmdFRlZVZlY3RvciAiJiN4
Mjk1QTsiPgotPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ij4KLTwhRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blRlZVZlY3RvciAi
JiN4Mjk1RDsiPgotPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYjeDI5NUU7Ij4KLTwhRU5U
SVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgotPCFFTlRJVFkgTGVmdFVwVGVlVmVj
dG9yICImI3gyOTYwOyI+Ci08IUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiPgot
PCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgotPCFFTlRJVFkgdUhhciAiJiN4Mjk2MzsiPgotPCFF
TlRJVFkgckhhciAiJiN4Mjk2NDsiPgotPCFFTlRJVFkgZEhhciAiJiN4Mjk2NTsiPgotPCFFTlRJ
VFkgbHVydWhhciAiJiN4Mjk2NjsiPgotPCFFTlRJVFkgbGRyZGhhciAiJiN4Mjk2NzsiPgotPCFF
TlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgotPCFFTlRJVFkgcmRsZGhhciAiJiN4Mjk2OTsiPgot
PCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Ci08IUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7Ij4K
LTwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgotPCFFTlRJVFkgbHJoYXJkICImI3gyOTZEOyI+
Ci08IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgVXBFcXVpbGlicml1bSAiJiN4
Mjk2RTsiPgotPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KLTwhRU5USVRZIFJldmVyc2VVcEVx
dWlsaWJyaXVtICImI3gyOTZGOyI+Ci08IUVOVElUWSBSb3VuZEltcGxpZXMgIiYjeDI5NzA7Ij4K
LTwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Ci08IUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyI+
Ci08IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Ci08IUVOVElUWSByYXJyc2ltICImI3gyOTc0
OyI+Ci08IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KLTwhRU5USVRZIGx0bGFyciAiJiN4Mjk3
NjsiPgotPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Ci08IUVOVElUWSBzdWJyYXJyICImI3gy
OTc5OyI+Ci08IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Ci08IUVOVElUWSBsZmlzaHQgIiYj
eDI5N0M7Ij4KLTwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgotPCFFTlRJVFkgdWZpc2h0ICIm
I3gyOTdFOyI+Ci08IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KLTwhRU5USVRZIGxvcGFyICIm
I3gyOTg1OyI+Ci08IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgotPCFFTlRJVFkgbGJya2UgIiYj
eDI5OEI7Ij4KLTwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Ci08IUVOVElUWSBsYnJrc2x1ICIm
I3gyOThEOyI+Ci08IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Ci08IUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyI+Ci08IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+Ci08IUVOVElUWSBsYW5n
ZCAiJiN4Mjk5MTsiPgotPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4KLTwhRU5USVRZIGxwYXJs
dCAiJiN4Mjk5MzsiPgotPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+Ci08IUVOVElUWSBndGxQ
YXIgIiYjeDI5OTU7Ij4KLTwhRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiPgotPCFFTlRJVFkgdnpp
Z3phZyAiJiN4Mjk5QTsiPgotPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI+Ci08IUVOVElUWSBh
bmdydHZiZCAiJiN4Mjk5RDsiPgotPCFFTlRJVFkgYW5nZSAiJiN4MjlBNDsiPgotPCFFTlRJVFkg
cmFuZ2UgIiYjeDI5QTU7Ij4KLTwhRU5USVRZIGR3YW5nbGUgIiYjeDI5QTY7Ij4KLTwhRU5USVRZ
IHV3YW5nbGUgIiYjeDI5QTc7Ij4KLTwhRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyI+Ci08IUVO
VElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgotPCFFTlRJVFkgYW5nbXNkYWMgIiYjeDI5QUE7Ij4K
LTwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Ci08IUVOVElUWSBhbmdtc2RhZSAiJiN4MjlB
QzsiPgotPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KLTwhRU5USVRZIGFuZ21zZGFnICIm
I3gyOUFFOyI+Ci08IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgotPCFFTlRJVFkgYmVtcHR5
diAiJiN4MjlCMDsiPgotPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPgotPCFFTlRJVFkgY2Vt
cHR5diAiJiN4MjlCMjsiPgotPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ij4KLTwhRU5USVRZ
IGxhZW1wdHl2ICImI3gyOUI0OyI+Ci08IUVOVElUWSBvaGJhciAiJiN4MjlCNTsiPgotPCFFTlRJ
VFkgb21pZCAiJiN4MjlCNjsiPgotPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsiPgotPCFFTlRJVFkg
b3BlcnAgIiYjeDI5Qjk7Ij4KLTwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5QkI7Ij4KLTwhRU5USVRZ
IG9kc29sZCAiJiN4MjlCQzsiPgotPCFFTlRJVFkgb2xjaXIgIiYjeDI5QkU7Ij4KLTwhRU5USVRZ
IG9mY2lyICImI3gyOUJGOyI+Ci08IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij4KLTwhRU5USVRZIG9n
dCAiJiN4MjlDMTsiPgotPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiPgotPCFFTlRJVFkgY2ly
RSAiJiN4MjlDMzsiPgotPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgotPCFFTlRJVFkgYnNvbGIg
IiYjeDI5QzU7Ij4KLTwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgotPCFFTlRJVFkgdHJpc2Ig
IiYjeDI5Q0Q7Ij4KLTwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+Ci08IUVOVElUWSBMZWZ0
VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZUJhciAiJiN4
MjlDRjsmI3gzMzg7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7Ij4KLTwh
RU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI+Ci08IUVOVElUWSBp
aW5maW4gIiYjeDI5REM7Ij4KLTwhRU5USVRZIGluZmludGllICImI3gyOUREOyI+Ci08IUVOVElU
WSBudmluZmluICImI3gyOURFOyI+Ci08IUVOVElUWSBlcGFyc2wgIiYjeDI5RTM7Ij4KLTwhRU5U
SVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Ci08IUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiPgot
PCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgotPCFFTlRJVFkgYmxhY2tsb3plbmdlICImI3gyOUVC
OyI+Ci08IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgotPCFFTlRJVFkgZHNvbCAiJiN4
MjlGNjsiPgotPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZIGJpZ29kb3QgIiYj
eDJBMDA7Ij4KLTwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJVFkgYmlnb3BsdXMg
IiYjeDJBMDE7Ij4KLTwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgotPCFFTlRJVFkgYmlnb3Rp
bWVzICImI3gyQTAyOyI+Ci08IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ij4KLTwhRU5USVRZIGJp
Z3VwbHVzICImI3gyQTA0OyI+Ci08IUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7Ij4KLTwhRU5USVRZ
IGJpZ3NxY3VwICImI3gyQTA2OyI+Ci08IUVOVElUWSBxaW50ICImI3gyQTBDOyI+Ci08IUVOVElU
WSBpaWlpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGZwYXJ0aW50ICImI3gyQTBEOyI+Ci08IUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiPgotPCFFTlRJVFkgYXdpbnQgIiYjeDJBMTE7Ij4KLTwh
RU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Ci08IUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsi
PgotPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgotPCFFTlRJVFkgcG9pbnRpbnQgIiYjeDJB
MTU7Ij4KLTwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KLTwhRU5USVRZIGludGxhcmhrICIm
I3gyQTE3OyI+Ci08IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Ci08IUVOVElUWSBwbHVzYWNp
ciAiJiN4MkEyMzsiPgotPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsiPgotPCFFTlRJVFkgcGx1
c2R1ICImI3gyQTI1OyI+Ci08IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI+Ci08IUVOVElUWSBw
bHVzdHdvICImI3gyQTI3OyI+Ci08IUVOVElUWSBtY29tbWEgIiYjeDJBMjk7Ij4KLTwhRU5USVRZ
IG1pbnVzZHUgIiYjeDJBMkE7Ij4KLTwhRU5USVRZIGxvcGx1cyAiJiN4MkEyRDsiPgotPCFFTlRJ
VFkgcm9wbHVzICImI3gyQTJFOyI+Ci08IUVOVElUWSBDcm9zcyAiJiN4MkEyRjsiPgotPCFFTlRJ
VFkgdGltZXNkICImI3gyQTMwOyI+Ci08IUVOVElUWSB0aW1lc2JhciAiJiN4MkEzMTsiPgotPCFF
TlRJVFkgc21hc2hwICImI3gyQTMzOyI+Ci08IUVOVElUWSBsb3RpbWVzICImI3gyQTM0OyI+Ci08
IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Ci08IUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsi
PgotPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Ci08IUVOVElUWSBvZGl2ICImI3gyQTM4OyI+
Ci08IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Ci08IUVOVElUWSB0cmltaW51cyAiJiN4MkEz
QTsiPgotPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgotPCFFTlRJVFkgaXByb2QgIiYjeDJB
M0M7Ij4KLTwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZIGFtYWxnICImI3gy
QTNGOyI+Ci08IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KLTwhRU5USVRZIG5jdXAgIiYjeDJB
NDI7Ij4KLTwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KLTwhRU5USVRZIGNhcGFuZCAiJiN4MkE0
NDsiPgotPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KLTwhRU5USVRZIGN1cGNhcCAiJiN4MkE0
NjsiPgotPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Ci08IUVOVElUWSBjdXBicmNhcCAiJiN4
MkE0ODsiPgotPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KLTwhRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiPgotPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Ci08IUVOVElUWSBjY3VwcyAi
JiN4MkE0QzsiPgotPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KLTwhRU5USVRZIGNjdXBzc20g
IiYjeDJBNTA7Ij4KLTwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgotPCFFTlRJVFkgT3IgIiYjeDJB
NTQ7Ij4KLTwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgotPCFFTlRJVFkgb3JvciAiJiN4MkE1
NjsiPgotPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgotPCFFTlRJVFkgYW5kc2xvcGUgIiYj
eDJBNTg7Ij4KLTwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KLTwhRU5USVRZIG9ydiAiJiN4MkE1
QjsiPgotPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgotPCFFTlRJVFkgb3JkICImI3gyQTVEOyI+
Ci08IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KLTwhRU5USVRZIHNkb3RlICImI3gyQTY2OyI+
Ci08IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KLTwhRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7
Ij4KLTwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgotPCFFTlRJVFkgZWFzdGVy
ICImI3gyQTZFOyI+Ci08IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4KLTwhRU5USVRZIGFwRSAi
JiN4MkE3MDsiPgotPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVw
bHVzICImI3gyQTcxOyI+Ci08IUVOVElUWSBwbHVzZSAiJiN4MkE3MjsiPgotPCFFTlRJVFkgRXNp
bSAiJiN4MkE3MzsiPgotPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+Ci08IUVOVElUWSBFcXVh
bCAiJiN4MkE3NTsiPgotPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGRkb3Rz
ZXEgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ij4KLTwhRU5USVRZIGx0
Y2lyICImI3gyQTc5OyI+Ci08IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPgotPCFFTlRJVFkgbHRx
dWVzdCAiJiN4MkE3QjsiPgotPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3QzsiPgotPCFFTlRJVFkg
bGVzICImI3gyQTdEOyI+Ci08IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsiPgotPCFF
TlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4
OyI+Ci08IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5U
SVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGdlcyAiJiN4MkE3RTsi
PgotPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4KLTwhRU5USVRZIGdlcXNs
YW50ICImI3gyQTdFOyI+Ci08IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJ
VFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2Vx
c2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ij4KLTwh
RU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgotPCFFTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiPgot
PCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgotPCFFTlRJVFkgbGVzZG90b3IgIiYjeDJBODM7
Ij4KLTwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Ci08IUVOVElUWSBsYXAgIiYjeDJBODU7
Ij4KLTwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KLTwhRU5USVRZIGdhcCAiJiN4MkE4
NjsiPgotPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Ci08IUVOVElUWSBsbmUgIiYjeDJB
ODc7Ij4KLTwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGduZSAiJiN4MkE4ODsi
PgotPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgbG5hcCAiJiN4MkE4OTsiPgot
PCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KLTwhRU5USVRZIGduYXAgIiYjeDJBOEE7Ij4K
LTwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Ci08IUVOVElUWSBsRWcgIiYjeDJBOEI7Ij4K
LTwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KLTwhRU5USVRZIGdFbCAiJiN4MkE4Qzsi
PgotPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgotPCFFTlRJVFkgbHNpbWUgIiYjeDJB
OEQ7Ij4KLTwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Ci08IUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiPgotPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KLTwhRU5USVRZIGxnRSAiJiN4MkE5MTsi
PgotPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Ci08IUVOVElUWSBsZXNnZXMgIiYjeDJBOTM7Ij4K
LTwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgotPCFFTlRJVFkgZWxzICImI3gyQTk1OyI+Ci08
IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgotPCFFTlRJVFkgZWdzICImI3gyQTk2OyI+
Ci08IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Ci08IUVOVElUWSBlbHNkb3QgIiYjeDJB
OTc7Ij4KLTwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgotPCFFTlRJVFkgZWwgIiYjeDJBOTk7
Ij4KLTwhRU5USVRZIGVnICImI3gyQTlBOyI+Ci08IUVOVElUWSBzaW1sICImI3gyQTlEOyI+Ci08
IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Ci08IUVOVElUWSBzaW1sRSAiJiN4MkE5RjsiPgotPCFF
TlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KLTwhRU5USVRZIExlc3NMZXNzICImI3gyQUExOyI+Ci08
IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ij4KLTwhRU5USVRZIEdy
ZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRl
ciAiJiN4MkFBMjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdsaiAiJiN4MkFBNDsiPgotPCFFTlRJVFkg
Z2xhICImI3gyQUE1OyI+Ci08IUVOVElUWSBsdGNjICImI3gyQUE2OyI+Ci08IUVOVElUWSBndGNj
ICImI3gyQUE3OyI+Ci08IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgotPCFFTlRJVFkgZ2VzY2Mg
IiYjeDJBQTk7Ij4KLTwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgotPCFFTlRJVFkgbGF0ICImI3gy
QUFCOyI+Ci08IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Ci08IUVOVElUWSBzbXRlcyAiJiN4MkFB
QzsmI3hGRTAwOyI+Ci08IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Ci08IUVOVElUWSBsYXRlcyAi
JiN4MkFBRDsmI3hGRTAwOyI+Ci08IUVOVElUWSBidW1wRSAiJiN4MkFBRTsiPgotPCFFTlRJVFkg
cHJlICImI3gyQUFGOyI+Ci08IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyI+
Ci08IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgotPCFFTlRJVFkgTm90UHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNjZSAiJiN4MkFCMDsiPgotPCFF
TlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Ci08IUVOVElUWSBTdWNjZWVkc0VxdWFsICImI3gyQUIw
OyI+Ci08IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJVFkgbnN1Y2NlcSAi
JiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7JiN4
MzM4OyI+Ci08IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KLTwhRU5USVRZIHNjRSAiJiN4MkFCNDsi
PgotPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7
Ij4KLTwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHN1Y2NuZXFxICImI3gyQUI2
OyI+Ci08IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Ci08IUVOVElUWSBwcmVjYXBwcm94ICImI3gy
QUI3OyI+Ci08IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Ci08IUVOVElUWSBzdWNjYXBwcm94ICIm
I3gyQUI4OyI+Ci08IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgotPCFFTlRJVFkgcHJlY25hcHBy
b3ggIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+Ci08IUVOVElUWSBzdWNj
bmFwcHJveCAiJiN4MkFCQTsiPgotPCFFTlRJVFkgUHIgIiYjeDJBQkI7Ij4KLTwhRU5USVRZIFNj
ICImI3gyQUJDOyI+Ci08IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4KLTwhRU5USVRZIHN1cGRv
dCAiJiN4MkFCRTsiPgotPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiPgotPCFFTlRJVFkgc3Vw
cGx1cyAiJiN4MkFDMDsiPgotPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFDMTsiPgotPCFFTlRJVFkg
c3VwbXVsdCAiJiN4MkFDMjsiPgotPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiPgotPCFFTlRJ
VFkgc3VwZWRvdCAiJiN4MkFDNDsiPgotPCFFTlRJVFkgc3ViRSAiJiN4MkFDNTsiPgotPCFFTlRJ
VFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Ci08IUVOVElUWSBuc3ViRSAiJiN4MkFDNTsmI3gzMzg7
Ij4KLTwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+Ci08IUVOVElUWSBzdXBF
ICImI3gyQUM2OyI+Ci08IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ij4KLTwhRU5USVRZIG5z
dXBFICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gz
Mzg7Ij4KLTwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgotPCFFTlRJVFkgc3Vwc2ltICImI3gy
QUM4OyI+Ci08IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgotPCFFTlRJVFkgc3Vic2V0bmVxcSAi
JiN4MkFDQjsiPgotPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbkUgIiYjeDJB
Q0M7Ij4KLTwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KLTwhRU5USVRZIHZzdXBuRSAi
JiN4MkFDQzsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXFxICImI3gyQUNDOyYjeEZF
MDA7Ij4KLTwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KLTwhRU5USVRZIGNzdXAgIiYjeDJBRDA7
Ij4KLTwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Ci08IUVOVElUWSBjc3VwZSAiJiN4MkFEMjsi
PgotPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Ci08IUVOVElUWSBzdXBzdWIgIiYjeDJBRDQ7
Ij4KLTwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgotPCFFTlRJVFkgc3Vwc3VwICImI3gyQUQ2
OyI+Ci08IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Ci08IUVOVElUWSBzdXBkc3ViICImI3gy
QUQ4OyI+Ci08IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgotPCFFTlRJVFkgdG9wZm9yayAiJiN4
MkFEQTsiPgotPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgotPCFFTlRJVFkgRGFzaHYgIiYjeDJB
RTQ7Ij4KLTwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4KLTwhRU5USVRZIFZkYXNo
bCAiJiN4MkFFNjsiPgotPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgotPCFFTlRJVFkgdkJhciAi
JiN4MkFFODsiPgotPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KLTwhRU5USVRZIFZiYXIgIiYj
eDJBRUI7Ij4KLTwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgotPCFFTlRJVFkgYk5vdCAiJiN4MkFF
RDsiPgotPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KLTwhRU5USVRZIGNpcm1pZCAiJiN4MkFF
RjsiPgotPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Ci08IUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ij4KLTwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Ci08IUVOVElUWSBwYXJzaW0gIiYjeDJB
RjM7Ij4KLTwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Ci08IUVOVElUWSBucGFyc2wgIiYjeDJB
RkQ7JiN4MjBFNTsiPgotPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4KLTwhRU5USVRZIGZpbGln
ICImI3hGQjAxOyI+Ci08IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgotPCFFTlRJVFkgZmZpbGln
ICImI3hGQjAzOyI+Ci08IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4KLTwhRU5USVRZIEFzY3Ig
IiYjeDFENDlDOyI+Ci08IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgotPCFFTlRJVFkgRHNjciAi
JiN4MUQ0OUY7Ij4KLTwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Ci08IUVOVElUWSBKc2NyICIm
I3gxRDRBNTsiPgotPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KLTwhRU5USVRZIE5zY3IgIiYj
eDFENEE5OyI+Ci08IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgotPCFFTlRJVFkgUHNjciAiJiN4
MUQ0QUI7Ij4KLTwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Ci08IUVOVElUWSBTc2NyICImI3gx
RDRBRTsiPgotPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KLTwhRU5USVRZIFVzY3IgIiYjeDFE
NEIwOyI+Ci08IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgotPCFFTlRJVFkgV3NjciAiJiN4MUQ0
QjI7Ij4KLTwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Ci08IUVOVElUWSBZc2NyICImI3gxRDRC
NDsiPgotPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KLTwhRU5USVRZIGFzY3IgIiYjeDFENEI2
OyI+Ci08IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgotPCFFTlRJVFkgY3NjciAiJiN4MUQ0Qjg7
Ij4KLTwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Ci08IUVOVElUWSBmc2NyICImI3gxRDRCQjsi
PgotPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KLTwhRU5USVRZIGlzY3IgIiYjeDFENEJFOyI+
Ci08IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgotPCFFTlRJVFkga3NjciAiJiN4MUQ0QzA7Ij4K
LTwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Ci08IUVOVElUWSBtc2NyICImI3gxRDRDMjsiPgot
PCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KLTwhRU5USVRZIHBzY3IgIiYjeDFENEM1OyI+Ci08
IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgotPCFFTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ij4KLTwh
RU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Ci08IUVOVElUWSB0c2NyICImI3gxRDRDOTsiPgotPCFF
TlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KLTwhRU5USVRZIHZzY3IgIiYjeDFENENCOyI+Ci08IUVO
VElUWSB3c2NyICImI3gxRDRDQzsiPgotPCFFTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ij4KLTwhRU5U
SVRZIHlzY3IgIiYjeDFENENFOyI+Ci08IUVOVElUWSB6c2NyICImI3gxRDRDRjsiPgotPCFFTlRJ
VFkgQWZyICImI3gxRDUwNDsiPgotPCFFTlRJVFkgQmZyICImI3gxRDUwNTsiPgotPCFFTlRJVFkg
RGZyICImI3gxRDUwNzsiPgotPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPgotPCFFTlRJVFkgRmZy
ICImI3gxRDUwOTsiPgotPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgotPCFFTlRJVFkgSmZyICIm
I3gxRDUwRDsiPgotPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgotPCFFTlRJVFkgTGZyICImI3gx
RDUwRjsiPgotPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgotPCFFTlRJVFkgTmZyICImI3gxRDUx
MTsiPgotPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgotPCFFTlRJVFkgUGZyICImI3gxRDUxMzsi
PgotPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgotPCFFTlRJVFkgU2ZyICImI3gxRDUxNjsiPgot
PCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgotPCFFTlRJVFkgVWZyICImI3gxRDUxODsiPgotPCFF
TlRJVFkgVmZyICImI3gxRDUxOTsiPgotPCFFTlRJVFkgV2ZyICImI3gxRDUxQTsiPgotPCFFTlRJ
VFkgWGZyICImI3gxRDUxQjsiPgotPCFFTlRJVFkgWWZyICImI3gxRDUxQzsiPgotPCFFTlRJVFkg
YWZyICImI3gxRDUxRTsiPgotPCFFTlRJVFkgYmZyICImI3gxRDUxRjsiPgotPCFFTlRJVFkgY2Zy
ICImI3gxRDUyMDsiPgotPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgotPCFFTlRJVFkgZWZyICIm
I3gxRDUyMjsiPgotPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgotPCFFTlRJVFkgZ2ZyICImI3gx
RDUyNDsiPgotPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgotPCFFTlRJVFkgaWZyICImI3gxRDUy
NjsiPgotPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgotPCFFTlRJVFkga2ZyICImI3gxRDUyODsi
PgotPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgotPCFFTlRJVFkgbWZyICImI3gxRDUyQTsiPgot
PCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgotPCFFTlRJVFkgb2ZyICImI3gxRDUyQzsiPgotPCFF
TlRJVFkgcGZyICImI3gxRDUyRDsiPgotPCFFTlRJVFkgcWZyICImI3gxRDUyRTsiPgotPCFFTlRJ
VFkgcmZyICImI3gxRDUyRjsiPgotPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsiPgotPCFFTlRJVFkg
dGZyICImI3gxRDUzMTsiPgotPCFFTlRJVFkgdWZyICImI3gxRDUzMjsiPgotPCFFTlRJVFkgdmZy
ICImI3gxRDUzMzsiPgotPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgotPCFFTlRJVFkgeGZyICIm
I3gxRDUzNTsiPgotPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgotPCFFTlRJVFkgemZyICImI3gx
RDUzNzsiPgotPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KLTwhRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyI+Ci08IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgotPCFFTlRJVFkgRW9wZiAiJiN4MUQ1
M0M7Ij4KLTwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Ci08IUVOVElUWSBHb3BmICImI3gxRDUz
RTsiPgotPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KLTwhRU5USVRZIEpvcGYgIiYjeDFENTQx
OyI+Ci08IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgotPCFFTlRJVFkgTG9wZiAiJiN4MUQ1NDM7
Ij4KLTwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Ci08IUVOVElUWSBPb3BmICImI3gxRDU0Njsi
PgotPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KLTwhRU5USVRZIFRvcGYgIiYjeDFENTRCOyI+
Ci08IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgotPCFFTlRJVFkgVm9wZiAiJiN4MUQ1NEQ7Ij4K
LTwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Ci08IUVOVElUWSBYb3BmICImI3gxRDU0RjsiPgot
PCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KLTwhRU5USVRZIGFvcGYgIiYjeDFENTUyOyI+Ci08
IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgotPCFFTlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ij4KLTwh
RU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Ci08IUVOVElUWSBlb3BmICImI3gxRDU1NjsiPgotPCFF
TlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KLTwhRU5USVRZIGdvcGYgIiYjeDFENTU4OyI+Ci08IUVO
VElUWSBob3BmICImI3gxRDU1OTsiPgotPCFFTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ij4KLTwhRU5U
SVRZIGpvcGYgIiYjeDFENTVCOyI+Ci08IUVOVElUWSBrb3BmICImI3gxRDU1QzsiPgotPCFFTlRJ
VFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KLTwhRU5USVRZIG1vcGYgIiYjeDFENTVFOyI+Ci08IUVOVElU
WSBub3BmICImI3gxRDU1RjsiPgotPCFFTlRJVFkgb29wZiAiJiN4MUQ1NjA7Ij4KLTwhRU5USVRZ
IHBvcGYgIiYjeDFENTYxOyI+Ci08IUVOVElUWSBxb3BmICImI3gxRDU2MjsiPgotPCFFTlRJVFkg
cm9wZiAiJiN4MUQ1NjM7Ij4KLTwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI+Ci08IUVOVElUWSB0
b3BmICImI3gxRDU2NTsiPgotPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ij4KLTwhRU5USVRZIHZv
cGYgIiYjeDFENTY3OyI+Ci08IUVOVElUWSB3b3BmICImI3gxRDU2ODsiPgotPCFFTlRJVFkgeG9w
ZiAiJiN4MUQ1Njk7Ij4KLTwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+Ci08IUVOVElUWSB6b3Bm
ICImI3gxRDU2QjsiPgorPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgorPCEtLUVOVElUWSBOZXdM
aW5lICImI3hBOyItLT4KKzwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgorPCEtLUVOVElUWSBx
dW90ICImI3gyMjsiLS0+Cis8IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KKzwhLS1FTlRJVFkg
bnVtICImI3gyMzsiLS0+Cis8IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgorPCEtLUVOVElU
WSBwZXJjbnQgIiYjeDI1OyItLT4KKzwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KKzwh
LS1FTlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KKzwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0t
PgorPCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Cis8IS0tRU5USVRZIHJwYXIgIiYjeDI5OyIt
LT4KKzwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7
Ii0tPgorPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Cis8IS0tRU5USVRZIGNvbW1hICImI3gy
QzsiLS0+Cis8IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgorPCEtLUVOVElUWSBzb2wgIiYj
eDJGOyItLT4KKzwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KKzwhLS1FTlRJVFkgc2VtaSAi
JiN4M0I7Ii0tPgorPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Cis8IS0tRU5USVRZIExU
ICImI3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyIt
LT4KKzwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Cis8IS0tRU5USVRZIGJuZSAiJiN4M0Q7
JiN4MjBFNTsiLS0+Cis8IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Cis8IS0tRU5USVRZIEdUICIm
I3gzRTsiLS0+Cis8IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ii0tPgorPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KKzwhLS1F
TlRJVFkgbHNxYiAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KKzwh
LS1FTlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgorPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Cis8
IS0tRU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgorPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4K
KzwhLS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQmFyICImI3g1
RjsiLS0+Cis8IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRp
Y2FsR3JhdmUgIiYjeDYwOyItLT4KKzwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4K
KzwhLS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyIt
LT4KKzwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHZlcnQgIiYjeDdD
OyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHJj
dWIgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Cis8IS0tRU5USVRZ
IG5ic3AgIiYjeEEwOyItLT4KKzwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0t
PgorPCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgorPCEtLUVOVElUWSBjZW50ICImI3hBMjsi
LS0+Cis8IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Cis8IS0tRU5USVRZIGN1cnJlbiAiJiN4
QTQ7Ii0tPgorPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KKzwhLS1FTlRJVFkgYnJ2YmFyICIm
I3hBNjsiLS0+Cis8IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KKzwhLS1FTlRJVFkgRG90ICIm
I3hBODsiLS0+Cis8IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVE
b3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Cis8IS0tRU5USVRZIGNv
cHkgIiYjeEE5OyItLT4KKzwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgorPCEtLUVOVElUWSBv
cmRmICImI3hBQTsiLS0+Cis8IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Cis8IS0tRU5USVRZ
IG5vdCAiJiN4QUM7Ii0tPgorPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KKzwhLS1FTlRJVFkg
cmVnICImI3hBRTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Cis8IS0tRU5U
SVRZIFJFRyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Cis8IS0tRU5U
SVRZIHN0cm5zICImI3hBRjsiLS0+Cis8IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgorPCEtLUVO
VElUWSBwbHVzbW4gIiYjeEIxOyItLT4KKzwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KKzwhLS1F
TlRJVFkgUGx1c01pbnVzICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4K
KzwhLS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgorPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0t
PgorPCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Cis8IS0tRU5USVRZIG1p
Y3JvICImI3hCNTsiLS0+Cis8IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KKzwhLS1FTlRJVFkg
bWlkZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgorPCEt
LUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyIt
LT4KKzwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgorPCEtLUVOVElUWSBzdXAxICImI3hC
OTsiLS0+Cis8IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KKzwhLS1FTlRJVFkgcmFxdW8gIiYj
eEJCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Cis8IS0tRU5USVRZIGZyYWMx
MiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Cis8IS0tRU5USVRZIGZy
YWMzNCAiJiN4QkU7Ii0tPgorPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KKzwhLS1FTlRJ
VFkgQWdyYXZlICImI3hDMDsiLS0+Cis8IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgorPCEt
LUVOVElUWSBBY2lyYyAiJiN4QzI7Ii0tPgorPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4K
KzwhLS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgorPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0t
PgorPCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7
Ii0tPgorPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KKzwhLS1FTlRJVFkgRWdyYXZlICIm
I3hDODsiLS0+Cis8IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgorPCEtLUVOVElUWSBFY2ly
YyAiJiN4Q0E7Ii0tPgorPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Cis8IS0tRU5USVRZIEln
cmF2ZSAiJiN4Q0M7Ii0tPgorPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KKzwhLS1FTlRJ
VFkgSWNpcmMgIiYjeENFOyItLT4KKzwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgorPCEtLUVO
VElUWSBFVEggIiYjeEQwOyItLT4KKzwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Cis8IS0t
RU5USVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgorPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4K
KzwhLS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KKzwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsi
LS0+Cis8IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KKzwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3
OyItLT4KKzwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Cis8IS0tRU5USVRZIFVncmF2ZSAi
JiN4RDk7Ii0tPgorPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KKzwhLS1FTlRJVFkgVWNp
cmMgIiYjeERCOyItLT4KKzwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgorPCEtLUVOVElUWSBZ
YWN1dGUgIiYjeEREOyItLT4KKzwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KKzwhLS1FTlRJ
VFkgc3psaWcgIiYjeERGOyItLT4KKzwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Cis8IS0t
RU5USVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgorPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgor
PCEtLUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KKzwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0t
PgorPCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgorPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7
Ii0tPgorPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KKzwhLS1FTlRJVFkgZWdyYXZlICIm
I3hFODsiLS0+Cis8IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgorPCEtLUVOVElUWSBlY2ly
YyAiJiN4RUE7Ii0tPgorPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Cis8IS0tRU5USVRZIGln
cmF2ZSAiJiN4RUM7Ii0tPgorPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KKzwhLS1FTlRJ
VFkgaWNpcmMgIiYjeEVFOyItLT4KKzwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgorPCEtLUVO
VElUWSBldGggIiYjeEYwOyItLT4KKzwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Cis8IS0t
RU5USVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgorPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4K
KzwhLS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KKzwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsi
LS0+Cis8IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KKzwhLS1FTlRJVFkgZGl2aWRlICImI3hG
NzsiLS0+Cis8IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgorPCEtLUVOVElUWSBvc2xhc2ggIiYj
eEY4OyItLT4KKzwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Cis8IS0tRU5USVRZIHVhY3V0
ZSAiJiN4RkE7Ii0tPgorPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgorPCEtLUVOVElUWSB1
dW1sICImI3hGQzsiLS0+Cis8IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgorPCEtLUVOVElU
WSB0aG9ybiAiJiN4RkU7Ii0tPgorPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Cis8IS0tRU5U
SVRZIEFtYWNyICImI3gxMDA7Ii0tPgorPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KKzwh
LS1FTlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgorPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsi
LS0+Cis8IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgorPCEtLUVOVElUWSBhb2dvbiAiJiN4
MTA1OyItLT4KKzwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgorPCEtLUVOVElUWSBjYWN1
dGUgIiYjeDEwNzsiLS0+Cis8IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgorPCEtLUVOVElU
WSBjY2lyYyAiJiN4MTA5OyItLT4KKzwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KKzwhLS1F
TlRJVFkgY2RvdCAiJiN4MTBCOyItLT4KKzwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgor
PCEtLUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Cis8IS0tRU5USVRZIERjYXJvbiAiJiN4MTBF
OyItLT4KKzwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgorPCEtLUVOVElUWSBEc3Ryb2sg
IiYjeDExMDsiLS0+Cis8IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KKzwhLS1FTlRJVFkg
RW1hY3IgIiYjeDExMjsiLS0+Cis8IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgorPCEtLUVO
VElUWSBFZG90ICImI3gxMTY7Ii0tPgorPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgorPCEt
LUVOVElUWSBFb2dvbiAiJiN4MTE4OyItLT4KKzwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+
Cis8IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KKzwhLS1FTlRJVFkgZWNhcm9uICImI3gx
MUI7Ii0tPgorPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KKzwhLS1FTlRJVFkgZ2NpcmMg
IiYjeDExRDsiLS0+Cis8IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KKzwhLS1FTlRJVFkg
Z2JyZXZlICImI3gxMUY7Ii0tPgorPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgorPCEtLUVO
VElUWSBnZG90ICImI3gxMjE7Ii0tPgorPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Cis8
IS0tRU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgorPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyIt
LT4KKzwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgorPCEtLUVOVElUWSBoc3Ryb2sgIiYj
eDEyNzsiLS0+Cis8IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KKzwhLS1FTlRJVFkgaXRp
bGRlICImI3gxMjk7Ii0tPgorPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KKzwhLS1FTlRJ
VFkgaW1hY3IgIiYjeDEyQjsiLS0+Cis8IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgorPCEt
LUVOVElUWSBpb2dvbiAiJiN4MTJGOyItLT4KKzwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4K
KzwhLS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Cis8IS0tRU5USVRZIGlub2RvdCAiJiN4MTMx
OyItLT4KKzwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Cis8IS0tRU5USVRZIGlqbGlnICIm
I3gxMzM7Ii0tPgorPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KKzwhLS1FTlRJVFkgamNp
cmMgIiYjeDEzNTsiLS0+Cis8IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KKzwhLS1FTlRJ
VFkga2NlZGlsICImI3gxMzc7Ii0tPgorPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Cis8
IS0tRU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KKzwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7
Ii0tPgorPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Cis8IS0tRU5USVRZIGxjZWRpbCAi
JiN4MTNDOyItLT4KKzwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgorPCEtLUVOVElUWSBs
Y2Fyb24gIiYjeDEzRTsiLS0+Cis8IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KKzwhLS1F
TlRJVFkgbG1pZG90ICImI3gxNDA7Ii0tPgorPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+
Cis8IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KKzwhLS1FTlRJVFkgTmFjdXRlICImI3gx
NDM7Ii0tPgorPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Cis8IS0tRU5USVRZIE5jZWRp
bCAiJiN4MTQ1OyItLT4KKzwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgorPCEtLUVOVElU
WSBOY2Fyb24gIiYjeDE0NzsiLS0+Cis8IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KKzwh
LS1FTlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Cis8IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4K
KzwhLS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgorPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyIt
LT4KKzwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Cis8IS0tRU5USVRZIE9kYmxhYyAiJiN4
MTUwOyItLT4KKzwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgorPCEtLUVOVElUWSBPRWxp
ZyAiJiN4MTUyOyItLT4KKzwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Cis8IS0tRU5USVRZ
IFJhY3V0ZSAiJiN4MTU0OyItLT4KKzwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgorPCEt
LUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Cis8IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyIt
LT4KKzwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgorPCEtLUVOVElUWSByY2Fyb24gIiYj
eDE1OTsiLS0+Cis8IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KKzwhLS1FTlRJVFkgc2Fj
dXRlICImI3gxNUI7Ii0tPgorPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KKzwhLS1FTlRJ
VFkgc2NpcmMgIiYjeDE1RDsiLS0+Cis8IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KKzwh
LS1FTlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgorPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsi
LS0+Cis8IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KKzwhLS1FTlRJVFkgVGNlZGlsICIm
I3gxNjI7Ii0tPgorPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Cis8IS0tRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyItLT4KKzwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgorPCEtLUVO
VElUWSBUc3Ryb2sgIiYjeDE2NjsiLS0+Cis8IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4K
KzwhLS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgorPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2
OTsiLS0+Cis8IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgorPCEtLUVOVElUWSB1bWFjciAi
JiN4MTZCOyItLT4KKzwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgorPCEtLUVOVElUWSB1
YnJldmUgIiYjeDE2RDsiLS0+Cis8IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgorPCEtLUVO
VElUWSB1cmluZyAiJiN4MTZGOyItLT4KKzwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgor
PCEtLUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Cis8IS0tRU5USVRZIFVvZ29uICImI3gxNzI7
Ii0tPgorPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KKzwhLS1FTlRJVFkgV2NpcmMgIiYj
eDE3NDsiLS0+Cis8IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgorPCEtLUVOVElUWSBZY2ly
YyAiJiN4MTc2OyItLT4KKzwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Cis8IS0tRU5USVRZ
IFl1bWwgIiYjeDE3ODsiLS0+Cis8IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KKzwhLS1F
TlRJVFkgemFjdXRlICImI3gxN0E7Ii0tPgorPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgor
PCEtLUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgorPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsi
LS0+Cis8IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KKzwhLS1FTlRJVFkgZm5vZiAiJiN4
MTkyOyItLT4KKzwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Cis8IS0tRU5USVRZIGdhY3V0
ZSAiJiN4MUY1OyItLT4KKzwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Cis8IS0tRU5USVRZ
IGNpcmMgIiYjeDJDNjsiLS0+Cis8IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgorPCEtLUVO
VElUWSBIYWNlayAiJiN4MkM3OyItLT4KKzwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Cis8
IS0tRU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgorPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+
Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgorPCEtLUVOVElUWSByaW5n
ICImI3gyREE7Ii0tPgorPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgorPCEtLUVOVElUWSB0
aWxkZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyIt
LT4KKzwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2Fs
RG91YmxlQWN1dGUgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyIt
LT4KKzwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Cis8IS0tRU5USVRZIEJldGEgIiYjeDM5
MjsiLS0+Cis8IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgorPCEtLUVOVElUWSBEZWx0YSAi
JiN4Mzk0OyItLT4KKzwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KKzwhLS1FTlRJVFkg
WmV0YSAiJiN4Mzk2OyItLT4KKzwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgorPCEtLUVOVElU
WSBUaGV0YSAiJiN4Mzk4OyItLT4KKzwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KKzwhLS1F
TlRJVFkgS2FwcGEgIiYjeDM5QTsiLS0+Cis8IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4K
KzwhLS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Cis8IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgor
PCEtLUVOVElUWSBYaSAiJiN4MzlFOyItLT4KKzwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyIt
LT4KKzwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Cis8IS0tRU5USVRZIFJobyAiJiN4M0ExOyIt
LT4KKzwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Cis8IS0tRU5USVRZIFRhdSAiJiN4M0E0
OyItLT4KKzwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KKzwhLS1FTlRJVFkgUGhpICIm
I3gzQTY7Ii0tPgorPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Cis8IS0tRU5USVRZIFBzaSAi
JiN4M0E4OyItLT4KKzwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Cis8IS0tRU5USVRZIG9o
bSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Cis8IS0tRU5USVRZ
IGJldGEgIiYjeDNCMjsiLS0+Cis8IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgorPCEtLUVO
VElUWSBkZWx0YSAiJiN4M0I0OyItLT4KKzwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KKzwh
LS1FTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KKzwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyIt
LT4KKzwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgorPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4
OyItLT4KKzwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KKzwhLS1FTlRJVFkga2FwcGEgIiYj
eDNCQTsiLS0+Cis8IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KKzwhLS1FTlRJVFkgbXUg
IiYjeDNCQzsiLS0+Cis8IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgorPCEtLUVOVElUWSB4aSAi
JiN4M0JFOyItLT4KKzwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KKzwhLS1FTlRJVFkg
cGkgIiYjeDNDMDsiLS0+Cis8IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KKzwhLS1FTlRJVFkg
c2lnbWF2ICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KKzwh
LS1FTlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyIt
LT4KKzwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgorPCEtLUVOVElUWSB1cHNpICImI3gzQzU7
Ii0tPgorPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgorPCEtLUVOVElUWSBwaGkgIiYj
eDNDNjsiLS0+Cis8IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KKzwhLS1FTlRJVFkgcHNpICIm
I3gzQzg7Ii0tPgorPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KKzwhLS1FTlRJVFkgdGhl
dGF2ICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KKzwhLS1F
TlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+
Cis8IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgorPCEtLUVOVElUWSBzdHJhaWdodHBoaSAi
JiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgdmFy
cGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Cis8IS0tRU5USVRZ
IHZhcnBpICImI3gzRDY7Ii0tPgorPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Cis8IS0t
RU5USVRZIGdhbW1hZCAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyIt
LT4KKzwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgorPCEtLUVOVElUWSB2YXJrYXBwYSAi
JiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KKzwhLS1FTlRJVFkgdmFy
cmhvICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJ
VFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSB2YXJlcHNpbG9uICIm
I3gzRjU7Ii0tPgorPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KKzwhLS1FTlRJVFkgYmFj
a2Vwc2lsb24gIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Cis8IS0t
RU5USVRZIERKY3kgIiYjeDQwMjsiLS0+Cis8IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Cis8
IS0tRU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgorPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0t
PgorPCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KKzwhLS1FTlRJVFkgWUljeSAiJiN4NDA3
OyItLT4KKzwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgorPCEtLUVOVElUWSBMSmN5ICIm
I3g0MDk7Ii0tPgorPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgorPCEtLUVOVElUWSBUU0hj
eSAiJiN4NDBCOyItLT4KKzwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KKzwhLS1FTlRJVFkg
VWJyY3kgIiYjeDQwRTsiLS0+Cis8IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Cis8IS0tRU5U
SVRZIEFjeSAiJiN4NDEwOyItLT4KKzwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgorPCEtLUVO
VElUWSBWY3kgIiYjeDQxMjsiLS0+Cis8IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KKzwhLS1F
TlRJVFkgRGN5ICImI3g0MTQ7Ii0tPgorPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgorPCEt
LUVOVElUWSBaSGN5ICImI3g0MTY7Ii0tPgorPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Cis8
IS0tRU5USVRZIEljeSAiJiN4NDE4OyItLT4KKzwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgor
PCEtLUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Cis8IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4K
KzwhLS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgorPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+
Cis8IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KKzwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0t
PgorPCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Cis8IS0tRU5USVRZIFNjeSAiJiN4NDIxOyIt
LT4KKzwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgorPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsi
LS0+Cis8IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KKzwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1
OyItLT4KKzwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KKzwhLS1FTlRJVFkgQ0hjeSAiJiN4
NDI3OyItLT4KKzwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KKzwhLS1FTlRJVFkgU0hDSGN5
ICImI3g0Mjk7Ii0tPgorPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Cis8IS0tRU5USVRZ
IFljeSAiJiN4NDJCOyItLT4KKzwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgorPCEtLUVO
VElUWSBFY3kgIiYjeDQyRDsiLS0+Cis8IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Cis8IS0t
RU5USVRZIFlBY3kgIiYjeDQyRjsiLS0+Cis8IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KKzwh
LS1FTlRJVFkgYmN5ICImI3g0MzE7Ii0tPgorPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Cis8
IS0tRU5USVRZIGdjeSAiJiN4NDMzOyItLT4KKzwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgor
PCEtLUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgorPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0t
PgorPCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Cis8IS0tRU5USVRZIGljeSAiJiN4NDM4OyIt
LT4KKzwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgorPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsi
LS0+Cis8IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KKzwhLS1FTlRJVFkgbWN5ICImI3g0M0M7
Ii0tPgorPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Cis8IS0tRU5USVRZIG9jeSAiJiN4NDNF
OyItLT4KKzwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgorPCEtLUVOVElUWSByY3kgIiYjeDQ0
MDsiLS0+Cis8IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KKzwhLS1FTlRJVFkgdGN5ICImI3g0
NDI7Ii0tPgorPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Cis8IS0tRU5USVRZIGZjeSAiJiN4
NDQ0OyItLT4KKzwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KKzwhLS1FTlRJVFkgdHNjeSAi
JiN4NDQ2OyItLT4KKzwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KKzwhLS1FTlRJVFkgc2hj
eSAiJiN4NDQ4OyItLT4KKzwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgorPCEtLUVOVElU
WSBoYXJkY3kgIiYjeDQ0QTsiLS0+Cis8IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KKzwhLS1F
TlRJVFkgc29mdGN5ICImI3g0NEM7Ii0tPgorPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Cis8
IS0tRU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Cis8IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+
Cis8IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Cis8IS0tRU5USVRZIGRqY3kgIiYjeDQ1Mjsi
LS0+Cis8IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Cis8IS0tRU5USVRZIGp1a2N5ICImI3g0
NTQ7Ii0tPgorPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgorPCEtLUVOVElUWSBpdWtjeSAi
JiN4NDU2OyItLT4KKzwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KKzwhLS1FTlRJVFkganNl
cmN5ICImI3g0NTg7Ii0tPgorPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgorPCEtLUVOVElU
WSBuamN5ICImI3g0NUE7Ii0tPgorPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KKzwhLS1F
TlRJVFkga2pjeSAiJiN4NDVDOyItLT4KKzwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Cis8
IS0tRU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Cis8IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0t
PgorPCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KKzwhLS1FTlRJVFkgZW1zcDEzICImI3gy
MDA0OyItLT4KKzwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KKzwhLS1FTlRJVFkgbnVt
c3AgIiYjeDIwMDc7Ii0tPgorPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgorPCEtLUVO
VElUWSB0aGluc3AgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7
Ii0tPgorPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgorPCEtLUVOVElUWSBWZXJ5VGhp
blNwYWNlICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7
Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEt
LUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0
aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3Bh
Y2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KKzwhLS1FTlRJ
VFkgendqICImI3gyMDBEOyItLT4KKzwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KKzwhLS1F
TlRJVFkgcmxtICImI3gyMDBGOyItLT4KKzwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4K
KzwhLS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Cis8IS0tRU5USVRZIG5kYXNoICImI3gyMDEz
OyItLT4KKzwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgorPCEtLUVOVElUWSBob3JiYXIg
IiYjeDIwMTU7Ii0tPgorPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgorPCEtLUVOVElU
WSBWZXJ0ICImI3gyMDE2OyItLT4KKzwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgorPCEt
LUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Cis8IS0tRU5USVRZIHJzcXVvICIm
I3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkg
Q2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFB
OyItLT4KKzwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgorPCEtLUVOVElUWSBsZHF1byAi
JiN4MjAxQzsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyIt
LT4KKzwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSByZHF1b3IgIiYj
eDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0t
PgorPCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgorPCEtLUVOVElUWSBiZHF1byAiJiN4
MjAxRTsiLS0+Cis8IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Cis8IS0tRU5USVRZIERh
Z2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgorPCEt
LUVOVElUWSBidWxsICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyIt
LT4KKzwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Cis8IS0tRU5USVRZIGhlbGxpcCAiJiN4
MjAyNjsiLS0+Cis8IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgorPCEtLUVOVElUWSBwZXJt
aWwgIiYjeDIwMzA7Ii0tPgorPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KKzwhLS1F
TlRJVFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgorPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+
Cis8IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Cis8IS0tRU5USVRZIGJwcmltZSAiJiN4
MjAzNTsiLS0+Cis8IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Cis8IS0tRU5USVRZ
IGxzYXF1byAiJiN4MjAzOTsiLS0+Cis8IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Cis8
IS0tRU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAz
RTsiLS0+Cis8IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KKzwhLS1FTlRJVFkgaHlidWxs
ICImI3gyMDQzOyItLT4KKzwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgorPCEtLUVOVElU
WSBic2VtaSAiJiN4MjA0RjsiLS0+Cis8IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Cis8
IS0tRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KKzwhLS1FTlRJVFkgVGhpY2tTcGFj
ZSAiJiN4MjA1RjsmI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+
Cis8IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgorPCEtLUVOVElUWSBhZiAi
JiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KKzwh
LS1FTlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4
MjA2MzsiLS0+Cis8IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KKzwhLS1FTlRJVFkgZXVybyAi
JiN4MjBBQzsiLS0+Cis8IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBU
cmlwbGVEb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgor
PCEtLUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgY29tcGxleGVzICImI3gy
MTAyOyItLT4KKzwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KKzwhLS1FTlRJVFkgZ3Nj
ciAiJiN4MjEwQTsiLS0+Cis8IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Cis8IS0tRU5U
SVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7
Ii0tPgorPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElUWSBQb2luY2FyZXBs
YW5lICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgor
PCEtLUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KKzwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEw
RTsiLS0+Cis8IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIGhiYXIg
IiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElU
WSBoc2xhc2ggIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KKzwh
LS1FTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBpbWFnZSAiJiN4MjEx
MTsiLS0+Cis8IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgaW1hZ3BhcnQg
IiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBM
c2NyICImI3gyMTEyOyItLT4KKzwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KKzwhLS1F
TlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGVsbCAiJiN4MjExMzsi
LS0+Cis8IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFscyAi
JiN4MjExNTsiLS0+Cis8IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Cis8IS0tRU5USVRZ
IGNvcHlzciAiJiN4MjExNzsiLS0+Cis8IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Cis8
IS0tRU5USVRZIHdwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+
Cis8IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Cis8IS0tRU5USVRZIHJhdGlvbmFscyAi
JiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgorPCEtLUVOVElUWSBS
c2NyICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Cis8IS0t
RU5USVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Cis8
IS0tRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgUmZyICImI3gyMTFD
OyItLT4KKzwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgorPCEtLUVOVElUWSBSb3BmICIm
I3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgorPCEtLUVOVElUWSB0cmFk
ZSAiJiN4MjEyMjsiLS0+Cis8IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KKzwhLS1FTlRJ
VFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4K
KzwhLS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KKzwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyIt
LT4KKzwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KKzwhLS1FTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ii0tPgorPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgorPCEtLUVOVElUWSBC
ZXJub3VsbGlzICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Cis8
IS0tRU5USVRZIENmciAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7
Ii0tPgorPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KKzwhLS1FTlRJVFkgRXNjciAiJiN4
MjEzMDsiLS0+Cis8IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KKzwhLS1FTlRJ
VFkgRnNjciAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0t
PgorPCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNZWxsaW50cmYg
IiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkg
b3JkZXIgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KKzwh
LS1FTlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7
Ii0tPgorPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Cis8IS0tRU5USVRZIGJldGggIiYj
eDIxMzY7Ii0tPgorPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Cis8IS0tRU5USVRZIGRh
bGV0aCAiJiN4MjEzODsiLS0+Cis8IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gy
MTQ1OyItLT4KKzwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgorPCEtLUVOVElUWSBEaWZmZXJl
bnRpYWxEICImI3gyMTQ2OyItLT4KKzwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgorPCEtLUVO
VElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBleHBvbmVudGlhbGUg
IiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Cis8IS0tRU5USVRZIElt
YWdpbmFyeUkgIiYjeDIxNDg7Ii0tPgorPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Cis8IS0t
RU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Cis8IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsi
LS0+Cis8IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Cis8IS0tRU5USVRZIGZyYWMyNSAi
JiN4MjE1NjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Cis8IS0tRU5USVRZ
IGZyYWM0NSAiJiN4MjE1ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Cis8
IS0tRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Cis8IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1
QjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Cis8IS0tRU5USVRZIGZyYWM1
OCAiJiN4MjE1RDsiLS0+Cis8IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Cis8IS0tRU5U
SVRZIGxhcnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0t
PgorPCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBzbGFyciAi
JiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KKzwh
LS1FTlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7
Ii0tPgorPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgU2hvcnRV
cEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Cis8IS0t
RU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93ICIm
I3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBT
aG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyIt
LT4KKzwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgRG93bkFy
cm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0t
PgorPCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJy
b3cgIiYjeDIxOTQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+
Cis8IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSB1cGRvd25hcnJvdyAi
JiN4MjE5NTsiLS0+Cis8IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KKzwhLS1F
TlRJVFkgbndhcnIgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4
MjE5NjsiLS0+Cis8IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBu
ZWFyciAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5Nzsi
LS0+Cis8IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgorPCEtLUVOVElUWSBzZWFyciAi
JiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElU
WSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5
OTsiLS0+Cis8IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEtLUVOVElUWSBMb3dl
ckxlZnRBcnJvdyAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4K
KzwhLS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Cis8IS0tRU5USVRZIG5yYXJyICIm
I3gyMTlCOyItLT4KKzwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgorPCEtLUVO
VElUWSByYXJydyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4
MjE5RDsiLS0+Cis8IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBMYXJyICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4
MjE5RTsiLS0+Cis8IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgorPCEtLUVOVElUWSBSYXJy
ICImI3gyMUEwOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0t
PgorPCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KKzwhLS1FTlRJVFkgbGFycnRsICImI3gy
MUEyOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Cis8IS0tRU5U
SVRZIHJhcnJ0bCAiJiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gy
MUEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KKzwhLS1FTlRJ
VFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Cis8IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIx
QTU7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Cis8IS0tRU5USVRZIG1h
cCAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgor
PCEtLUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBEb3duVGVlQXJyb3cg
IiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KKzwhLS1F
TlRJVFkgbGFycmhrICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4
MjFBOTsiLS0+Cis8IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Cis8IS0tRU5USVRZIGhv
b2tyaWdodGFycm93ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyIt
LT4KKzwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Cis8IS0tRU5USVRZIHJh
cnJscCAiJiN4MjFBQzsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyIt
LT4KKzwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgor
PCEtLUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgorPCEtLUVOVElUWSBsc2gg
IiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBy
c2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElU
WSBsZHNoICImI3gyMUIyOyItLT4KKzwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Cis8IS0t
RU5USVRZIGNyYXJyICImI3gyMUI1OyItLT4KKzwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyIt
LT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgorPCEtLUVOVElUWSBj
dXJhcnIgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7
Ii0tPgorPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWFy
cm93bGVmdCAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KKzwh
LS1FTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Cis8IS0tRU5USVRZIGxoYXJ1
ICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Cis8IS0t
RU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElUWSBsaGFyZCAiJiN4
MjFCRDsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Cis8IS0t
RU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgdWhhcnIgIiYj
eDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1aGFybCAiJiN4
MjFCRjsiLS0+Cis8IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSByaGFydSAiJiN4MjFD
MDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkg
cmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsi
LS0+Cis8IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElU
WSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElUWSBkaGFyciAiJiN4MjFD
MjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Cis8IS0tRU5U
SVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgorPCEtLUVOVElUWSBkaGFybCAiJiN4
MjFDMzsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KKzwhLS1F
TlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KKzwhLS1FTlRJVFkgcmxhcnIgIiYj
eDIxQzQ7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgorPCEt
LUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KKzwhLS1FTlRJVFkgdWRh
cnIgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyIt
LT4KKzwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRh
cnJvd3MgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gy
MUM2OyItLT4KKzwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgorPCEtLUVOVElUWSBsZWZ0
bGVmdGFycm93cyAiJiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4K
KzwhLS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Cis8IS0tRU5USVRZIHJyYXJyICIm
I3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Cis8
IS0tRU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ii0tPgorPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZ
IFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodGhh
cnBvb25zICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgorPCEt
LUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIEVxdWls
aWJyaXVtICImI3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgorPCEt
LUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KKzwhLS1FTlRJVFkgbmhBcnIgIiYjeDIx
Q0U7Ii0tPgorPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgorPCEtLUVO
VElUWSBuckFyciAiJiN4MjFDRjsiLS0+Cis8IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNG
OyItLT4KKzwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIExlZnRhcnJv
dyAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+
Cis8IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBVcGFycm93ICImI3gy
MUQxOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Cis8IS0tRU5U
SVRZIHJBcnIgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyIt
LT4KKzwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0QXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KKzwh
LS1FTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlRG93bkFy
cm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Cis8IS0tRU5U
SVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTGVmdFJp
Z2h0QXJyb3cgIiYjeDIxRDQ7Ii0tPgorPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgorPCEt
LUVOVElUWSB2QXJyICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIx
RDU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Cis8IS0t
RU5USVRZIG53QXJyICImI3gyMUQ2OyItLT4KKzwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0t
PgorPCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Cis8IS0tRU5USVRZIHN3QXJyICImI3gy
MUQ5OyItLT4KKzwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgorPCEtLUVOVElUWSBMbGVm
dGFycm93ICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgorPCEt
LUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZIHppZ3JhcnIgIiYj
eDIxREQ7Ii0tPgorPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIExl
ZnRBcnJvd0JhciAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4K
KzwhLS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Cis8IS0tRU5USVRZIGR1YXJy
ICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+
Cis8IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KKzwhLS1FTlRJVFkgcm9hcnIgIiYjeDIx
RkU7Ii0tPgorPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Cis8IS0tRU5USVRZIGZvcmFs
bCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5U
SVRZIGNvbXAgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyIt
LT4KKzwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZIFBhcnRpYWxEICIm
I3gyMjAyOyItLT4KKzwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0t
PgorPCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RFeGlzdHMg
IiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KKzwhLS1FTlRJ
VFkgZW1wdHkgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+
Cis8IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIHZhcm5vdGhpbmcg
IiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZ
IERlbCAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgorPCEtLUVO
VElUWSBpc2ludiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0t
PgorPCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIG5vdGluICImI3gyMjA5
OyItLT4KKzwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Cis8IS0tRU5USVRZIG5v
dGludmEgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgorPCEtLUVO
VElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIG5pICImI3gyMjBC
OyItLT4KKzwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBub3Ru
aSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgorPCEtLUVO
VElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIHByb2QgIiYj
eDIyMEY7Ii0tPgorPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KKzwhLS1FTlRJVFkg
Y29wcm9kICImI3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4K
KzwhLS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgU3VtICImI3gyMjExOyIt
LT4KKzwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgorPCEtLUVOVElUWSBtbnBsdXMgIiYj
eDIyMTM7Ii0tPgorPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIE1pbnVz
UGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Cis8IS0t
RU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgorPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsi
LS0+Cis8IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgQmFja3Ns
YXNoICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KKzwhLS1F
TlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIGxvd2FzdCAiJiN4
MjIxNzsiLS0+Cis8IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Cis8IS0tRU5USVRZIFNt
YWxsQ2lyY2xlICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgor
PCEtLUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KKzwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsi
LS0+Cis8IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIFByb3BvcnRp
b25hbCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KKzwhLS1F
TlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7
Ii0tPgorPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Cis8IS0tRU5USVRZIGFuZyAiJiN4
MjIyMDsiLS0+Cis8IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KKzwhLS1FTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4K
KzwhLS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Cis8IS0tRU5USVRZIGFuZ3Nw
aCAiJiN4MjIyMjsiLS0+Cis8IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZ
IFZlcnRpY2FsQmFyICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+
Cis8IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgbm1pZCAiJiN4
MjIyNDsiLS0+Cis8IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KKzwhLS1F
TlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7
Ii0tPgorPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBwYXJhbGxlbCAi
JiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4K
KzwhLS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIHNob3J0cGFyYWxsZWwg
IiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkg
bnBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIg
IiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZ
IG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyIt
LT4KKzwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElUWSBvciAiJiN4MjIy
ODsiLS0+Cis8IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Cis8IS0tRU5USVRZIGNhcCAiJiN4
MjIyOTsiLS0+Cis8IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Cis8IS0tRU5U
SVRZIGN1cCAiJiN4MjIyQTsiLS0+Cis8IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsi
LS0+Cis8IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZIEludGVncmFsICIm
I3gyMjJCOyItLT4KKzwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KKzwhLS1FTlRJVFkgdGlu
dCAiJiN4MjIyRDsiLS0+Cis8IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KKzwhLS1FTlRJ
VFkgY29uaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Cis8
IS0tRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Cis8IS0tRU5USVRZIENvbmlu
dCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIy
RjsiLS0+Cis8IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgorPCEtLUVOVElUWSBjd2lu
dCAiJiN4MjIzMTsiLS0+Cis8IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KKzwhLS1F
TlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KKzwhLS1FTlRJVFkg
YXdjb25pbnQgIiYjeDIyMzM7Ii0tPgorPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91
ckludGVncmFsICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4K
KzwhLS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgVGhlcmVmb3Jl
ICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KKzwhLS1FTlRJ
VFkgYmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0t
PgorPCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Cis8IS0tRU5USVRZIENvbG9uICImI3gy
MjM3OyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Cis8IS0tRU5USVRZ
IG1pbnVzZCAiJiN4MjIzODsiLS0+Cis8IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4K
KzwhLS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgorPCEtLUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ii0tPgorPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVOVElUWSBUaWxkZSAi
JiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZ
IHRoaWNrc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2lt
ICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgorPCEt
LUVOVElUWSBhYyAiJiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+
Cis8IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgorPCEtLUVOVElUWSBhY2QgIiYj
eDIyM0Y7Ii0tPgorPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgorPCEtLUVOVElUWSBW
ZXJ0aWNhbFRpbGRlICImI3gyMjQwOyItLT4KKzwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIy
NDE7Ii0tPgorPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KKzwhLS1FTlRJVFkgRXF1YWxU
aWxkZSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KKzwhLS1F
TlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuZXNp
bSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KKzwh
LS1FTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZIHNpbWVxICImI3gy
MjQzOyItLT4KKzwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBuc2lt
ZXEgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4K
KzwhLS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFs
ICImI3gyMjQ1OyItLT4KKzwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgorPCEtLUVOVElU
WSBuY29uZyAiJiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ3OyItLT4KKzwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSBhcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgorPCEtLUVO
VElUWSBhcHByb3ggIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+
Cis8IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgbmFwICIm
I3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Cis8IS0t
RU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0t
PgorPCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5USVRZIGFwaWQgIiYj
eDIyNEI7Ii0tPgorPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBiY29uZyAiJiN4MjI0QzsiLS0+Cis8IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyIt
LT4KKzwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIEN1cENhcCAi
JiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIy
NEU7Ii0tPgorPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBOb3RI
dW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElU
WSBIdW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0t
PgorPCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90
SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVzZG90ICImI3gyMjUw
OyItLT4KKzwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBkb3Rl
cSAiJiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgorPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1
MTsiLS0+Cis8IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KKzwhLS1FTlRJVFkgZmFsbGlu
Z2RvdHNlcSAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KKzwh
LS1FTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KKzwhLS1FTlRJVFkgY29sb25lICIm
I3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZ
IEFzc2lnbiAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Cis8
IS0tRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgorPCEtLUVOVElUWSBlY2lyICImI3gyMjU2
OyItLT4KKzwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KKzwhLS1FTlRJVFkgY2lyZSAi
JiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZ
IHdlZGdlcSAiJiN4MjI1OTsiLS0+Cis8IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KKzwh
LS1FTlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1
QzsiLS0+Cis8IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Cis8IS0tRU5USVRZIHF1ZXN0
ZXEgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Cis8IS0tRU5USVRZ
IE5vdEVxdWFsICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgor
PCEtLUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgorPCEtLUVOVElUWSBibmVxdWl2ICIm
I3gyMjYxOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgorPCEt
LUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgorPCEtLUVOVElUWSBsZSAiJiN4MjI2
NDsiLS0+Cis8IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5USVRZIG52bGUgIiYj
eDIyNjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KKzwhLS1FTlRJ
VFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyIt
LT4KKzwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbEUg
IiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KKzwh
LS1FTlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBnRSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7
Ii0tPgorPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KKzwhLS1FTlRJVFkgbmdFICImI3gy
MjY3OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbG5FICImI3gyMjY4OyItLT4KKzwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgor
PCEtLUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBsdmVydG5l
cXEgIiYjeDIyNjg7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Cis8
IS0tRU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsm
I3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICIm
I3gyMjZBOyItLT4KKzwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBuTHR2
ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJ
VFkgR3QgIiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4
MjI2QjsiLS0+Cis8IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgbkd0diAi
JiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIHR3aXh0ICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2Qzsi
LS0+Cis8IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Cis8IS0tRU5USVRZIG5sdCAi
JiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElU
WSBubGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Cis8IS0t
RU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBuZ3RyICImI3gyMjZG
OyItLT4KKzwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgTm90TGVzc0Vx
dWFsICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Cis8IS0tRU5U
SVRZIG5nZSAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3
MTsiLS0+Cis8IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgorPCEtLUVOVElUWSBsc2ltICIm
I3gyMjcyOyItLT4KKzwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KKzwhLS1FTlRJ
VFkgbGVzc3NpbSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgor
PCEtLUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUg
IiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZ
IE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyIt
LT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KKzwhLS1FTlRJVFkg
bGcgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KKzwhLS1F
TlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBnbCAiJiN4MjI3Nzsi
LS0+Cis8IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVy
TGVzcyAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgorPCEtLUVO
VElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZIG50Z2wgIiYjeDIy
Nzk7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Cis8IS0tRU5U
SVRZIHByICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgor
PCEtLUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0t
PgorPCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIHN1Y2MgIiYj
eDIyN0I7Ii0tPgorPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIFBy
ZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHByZWNjdXJseWVxICIm
I3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBT
dWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBzdWNjY3VybHllcSAi
JiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KKzwhLS1FTlRJVFkg
cHJlY3NpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7
Ii0tPgorPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5USVRZIHN1Y2NzaW0g
IiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KKzwh
LS1FTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBucHIgIiYjeDIyODA7Ii0tPgorPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Cis8IS0t
RU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgbnNjICImI3gyMjgx
OyItLT4KKzwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNj
ZWVkcyAiJiN4MjI4MTsiLS0+Cis8IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Cis8IS0tRU5U
SVRZIHN1YnNldCAiJiN4MjI4MjsiLS0+Cis8IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIw
RDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHN1cCAiJiN4
MjI4MzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIFN1
cGVyc2V0ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsi
LS0+Cis8IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZ
IE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBuc3ViICImI3gy
Mjg0OyItLT4KKzwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Cis8IS0tRU5USVRZIHN1YmUg
IiYjeDIyODY7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Cis8IS0t
RU5USVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4Nzsi
LS0+Cis8IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KKzwhLS1FTlRJVFkgU3VwZXJz
ZXRFcXVhbCAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KKzwh
LS1FTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkgTm90U3Vic2V0RXF1
YWwgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5U
SVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwg
IiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZ
IHN1YnNldG5lcSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hG
RTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4
MjI4QjsiLS0+Cis8IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KKzwhLS1F
TlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBjdXBk
b3QgIiYjeDIyOEQ7Ii0tPgorPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyIt
LT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgc3Fz
dWJzZXQgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBT
cXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkw
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0
RXF1YWwgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4K
KzwhLS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3VwZXJz
ZXRFcXVhbCAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0t
PgorPCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZUludGVy
c2VjdGlvbiAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVV
bmlvbiAiJiN4MjI5NDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVQbHVz
ICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7
Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Cis8IS0tRU5USVRZIG9z
b2wgIiYjeDIyOTg7Ii0tPgorPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlRG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+
Cis8IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KKzwhLS1FTlRJVFkgb2FzdCAi
JiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgorPCEtLUVO
VElUWSBvZGFzaCAiJiN4MjI5RDsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlE
OyItLT4KKzwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgorPCEtLUVOVElUWSBib3hwbHVz
ICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KKzwhLS1FTlRJ
VFkgYm94bWludXMgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0t
PgorPCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Cis8IS0tRU5USVRZIHNkb3RiICIm
I3gyMkExOyItLT4KKzwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KKzwhLS1FTlRJ
VFkgdmRhc2ggIiYjeDIyQTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+
Cis8IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4
MjJBMzsiLS0+Cis8IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Cis8IS0tRU5USVRZIERvd25U
ZWUgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgorPCEtLUVO
VElUWSBib3QgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KKzwh
LS1FTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7
Ii0tPgorPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0VGVlICImI3gyMkE4OyItLT4KKzwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgorPCEt
LUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgorPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsi
LS0+Cis8IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Cis8IS0tRU5USVRZIG52RGFzaCAi
JiN4MjJBRDsiLS0+Cis8IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Cis8IS0tRU5USVRZ
IG5WRGFzaCAiJiN4MjJBRjsiLS0+Cis8IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Cis8
IS0tRU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0
ICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KKzwh
LS1FTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0
ICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Cis8
IS0tRU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEg
IiYjeDIyQjQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+
Cis8IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHJ0
cmllICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KKzwhLS1FTlRJ
VFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgb3JpZ29mICImI3gy
MkI2OyItLT4KKzwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Cis8IS0tRU5USVRZIG11bWFw
ICImI3gyMkI4OyItLT4KKzwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgorPCEtLUVO
VElUWSBoZXJjb24gIiYjeDIyQjk7Ii0tPgorPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0t
PgorPCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5USVRZIHZlZWJhciAi
JiN4MjJCQjsiLS0+Cis8IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Cis8IS0tRU5USVRZ
IGFuZ3J0dmIgIiYjeDIyQkU7Ii0tPgorPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Cis8
IS0tRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIFdlZGdlICImI3gyMkMw
OyItLT4KKzwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSB4dmVl
ICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkg
YmlndmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Cis8IS0t
RU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZIGJpZ2NhcCAiJiN4
MjJDMjsiLS0+Cis8IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgorPCEtLUVOVElUWSBVbmlv
biAiJiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Cis8IS0tRU5U
SVRZIGRpYW0gIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4K
KzwhLS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Cis8IS0tRU5USVRZIHNkb3QgIiYjeDIy
QzU7Ii0tPgorPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgorPCEtLUVOVElUWSBTdGFy
ICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KKzwhLS1FTlRJ
VFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Cis8IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJD
ODsiLS0+Cis8IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Cis8IS0tRU5USVRZIHJ0aW1l
cyAiJiN4MjJDQTsiLS0+Cis8IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Cis8IS0tRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkgcnRocmVlICImI3gy
MkNDOyItLT4KKzwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KKzwhLS1F
TlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7
Ii0tPgorPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5USVRZIGN1cmx5dmVl
ICImI3gyMkNFOyItLT4KKzwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgorPCEtLUVOVElU
WSBjdXJseXdlZGdlICImI3gyMkNGOyItLT4KKzwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4K
KzwhLS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KKzwhLS1FTlRJVFkgU3VwICImI3gyMkQx
OyItLT4KKzwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KKzwhLS1FTlRJVFkgQ2FwICIm
I3gyMkQyOyItLT4KKzwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KKzwhLS1FTlRJVFkgZm9y
ayAiJiN4MjJENDsiLS0+Cis8IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Cis8IS0t
RU5USVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgorPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+
Cis8IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgorPCEtLUVOVElUWSBndGRvdCAiJiN4
MjJENzsiLS0+Cis8IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Cis8IS0tRU5USVRZIExs
ICImI3gyMkQ4OyItLT4KKzwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIEdnICImI3gyMkQ5OyItLT4KKzwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KKzwh
LS1FTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGxlZyAiJiN4MjJE
QTsiLS0+Cis8IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgorPCEtLUVO
VElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgorPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBndHJl
cWxlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRC
OyItLT4KKzwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkg
Y3VlcHIgIiYjeDIyREU7Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+
Cis8IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkgY3VybHllcXN1Y2Mg
IiYjeDIyREY7Ii0tPgorPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElU
WSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElUWSBuc2NjdWUg
IiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7
Ii0tPgorPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1
YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgorPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUz
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Cis8
IS0tRU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KKzwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7
Ii0tPgorPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVOVElUWSBwcmVjbnNp
bSAiJiN4MjJFODsiLS0+Cis8IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgTm90
TGVmdFRyaWFuZ2xlICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Cis8IS0tRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7
Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIG5ydHJpZSAi
JiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgor
PCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgorPCEtLUVOVElU
WSB2ZWxsaXAgIiYjeDIyRUU7Ii0tPgorPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Cis8
IS0tRU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KKzwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7
Ii0tPgorPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Cis8IS0tRU5USVRZIGlzaW5zdiAi
JiN4MjJGMzsiLS0+Cis8IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KKzwhLS1FTlRJVFkg
aXNpbmRvdCAiJiN4MjJGNTsiLS0+Cis8IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMz
ODsiLS0+Cis8IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgorPCEtLUVOVElUWSBub3Rp
bnZiICImI3gyMkY3OyItLT4KKzwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgorPCEtLUVO
VElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmlzZCAiJiN4MjJG
QTsiLS0+Cis8IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgorPCEtLUVOVElUWSBuaXMgIiYj
eDIyRkM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KKzwhLS1FTlRJVFkg
bm90bml2YiAiJiN4MjJGRTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Cis8
IS0tRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkgQmFyd2VkICImI3gy
MzA2OyItLT4KKzwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgorPCEtLUVO
VElUWSBsY2VpbCAiJiN4MjMwODsiLS0+Cis8IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4
OyItLT4KKzwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBSaWdodENl
aWxpbmcgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEt
LUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEtLUVOVElUWSByZmxvb3IgIiYjeDIz
MEI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KKzwhLS1FTlRJVFkg
ZHJjcm9wICImI3gyMzBDOyItLT4KKzwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KKzwh
LS1FTlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KKzwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBG
OyItLT4KKzwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Cis8IS0tRU5USVRZIHByb2ZsaW5l
ICImI3gyMzEyOyItLT4KKzwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgorPCEtLUVO
VElUWSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgorPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0t
PgorPCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElUWSB1bGNvcm5lciAi
JiN4MjMxQzsiLS0+Cis8IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Cis8IS0tRU5USVRZ
IHVyY29ybmVyICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4K
KzwhLS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElUWSBkcmNvcm4gIiYj
eDIzMUY7Ii0tPgorPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Cis8IS0tRU5USVRZ
IGZyb3duICImI3gyMzIyOyItLT4KKzwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KKzwh
LS1FTlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ii0tPgorPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgorPCEtLUVOVElUWSBwcm9mYWxh
ciAiJiN4MjMyRTsiLS0+Cis8IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Cis8IS0tRU5U
SVRZIG92YmFyICImI3gyMzNEOyItLT4KKzwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4K
KzwhLS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdCAiJiN4
MjNCMDsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgorPCEtLUVOVElU
WSBybW91c3QgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyIt
LT4KKzwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFja2V0
ICImI3gyM0I0OyItLT4KKzwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZ
IFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2
OyItLT4KKzwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KKzwhLS1FTlRJ
VFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFjZSAi
JiN4MjNERTsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgorPCEtLUVO
VElUWSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Cis8IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3
OyItLT4KKzwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgorPCEtLUVOVElUWSBvUyAiJiN4
MjRDODsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KKzwhLS1FTlRJVFkg
Ym94aCAiJiN4MjUwMDsiLS0+Cis8IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyIt
LT4KKzwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Cis8IS0tRU5USVRZIGJveGRyICImI3gy
NTBDOyItLT4KKzwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgorPCEtLUVOVElUWSBib3h1
ciAiJiN4MjUxNDsiLS0+Cis8IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KKzwhLS1FTlRJ
VFkgYm94dnIgIiYjeDI1MUM7Ii0tPgorPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Cis8
IS0tRU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KKzwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7
Ii0tPgorPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Cis8IS0tRU5USVRZIGJveEggIiYj
eDI1NTA7Ii0tPgorPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KKzwhLS1FTlRJVFkgYm94
ZFIgIiYjeDI1NTI7Ii0tPgorPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Cis8IS0tRU5U
SVRZIGJveERSICImI3gyNTU0OyItLT4KKzwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgor
PCEtLUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Cis8IS0tRU5USVRZIGJveERMICImI3gyNTU3
OyItLT4KKzwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgorPCEtLUVOVElUWSBib3hVciAi
JiN4MjU1OTsiLS0+Cis8IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KKzwhLS1FTlRJVFkg
Ym94dUwgIiYjeDI1NUI7Ii0tPgorPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Cis8IS0t
RU5USVRZIGJveFVMICImI3gyNTVEOyItLT4KKzwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0t
PgorPCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Cis8IS0tRU5USVRZIGJveFZSICImI3gy
NTYwOyItLT4KKzwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgorPCEtLUVOVElUWSBib3hW
bCAiJiN4MjU2MjsiLS0+Cis8IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KKzwhLS1FTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ii0tPgorPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Cis8
IS0tRU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KKzwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7
Ii0tPgorPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Cis8IS0tRU5USVRZIGJveEhVICIm
I3gyNTY5OyItLT4KKzwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgorPCEtLUVOVElUWSBi
b3hWaCAiJiN4MjU2QjsiLS0+Cis8IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KKzwhLS1F
TlRJVFkgdWhibGsgIiYjeDI1ODA7Ii0tPgorPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+
Cis8IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KKzwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1
OTE7Ii0tPgorPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Cis8IS0tRU5USVRZIGJsazM0
ICImI3gyNTkzOyItLT4KKzwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkg
c3F1YXJlICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KKzwh
LS1FTlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsi
LS0+Cis8IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRmls
bGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRW1wdHlWZXJ5U21h
bGxTcXVhcmUgIiYjeDI1QUI7Ii0tPgorPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KKzwh
LS1FTlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KKzwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7
Ii0tPgorPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Cis8IS0tRU5USVRZIGJpZ3RyaWFu
Z2xldXAgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Cis8IS0t
RU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgorPCEtLUVOVElUWSB1dHJpICImI3gy
NUI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgorPCEtLUVOVElUWSBy
dHJpZiAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVC
ODsiLS0+Cis8IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmds
ZXJpZ2h0ICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgorPCEt
LUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgorPCEtLUVOVElUWSBkdHJpZiAi
JiN4MjVCRTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4K
KzwhLS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlZG93biAi
JiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KKzwhLS1FTlRJVFkg
YmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBsdHJpICImI3gyNUMz
OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KKzwhLS1FTlRJVFkg
bG96ICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Cis8IS0t
RU5USVRZIGNpciAiJiN4MjVDQjsiLS0+Cis8IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+
Cis8IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4
MjVFRjsiLS0+Cis8IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KKzwhLS1FTlRJVFkgdXJ0
cmkgIiYjeDI1Rjk7Ii0tPgorPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Cis8IS0tRU5U
SVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgorPCEtLUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiLS0+Cis8IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KKzwh
LS1FTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Cis8IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7
Ii0tPgorPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Cis8IS0tRU5USVRZIGZlbWFsZSAi
JiN4MjY0MDsiLS0+Cis8IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgorPCEtLUVOVElUWSBz
cGFkZXMgIiYjeDI2NjA7Ii0tPgorPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgor
PCEtLUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGNsdWJzdWl0ICImI3gy
NjYzOyItLT4KKzwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgaGVh
cnRzdWl0ICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgorPCEt
LUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZIHN1bmcgIiYjeDI2
NkE7Ii0tPgorPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KKzwhLS1FTlRJVFkgbmF0dXIg
IiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KKzwhLS1FTlRJ
VFkgc2hhcnAgIiYjeDI2NkY7Ii0tPgorPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Cis8
IS0tRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Cis8IS0tRU5USVRZIGNyb3NzICImI3gy
NzE3OyItLT4KKzwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Cis8IS0tRU5USVRZIG1hbHRl
c2UgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KKzwhLS1FTlRJ
VFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgorPCEtLUVOVElUWSBsYmJyayAiJiN4
Mjc3MjsiLS0+Cis8IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KKzwhLS1FTlRJVFkgYnNv
bGhzdWIgIiYjeDI3Qzg7Ii0tPgorPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KKzwh
LS1FTlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tl
dCAiJiN4MjdFNjsiLS0+Cis8IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KKzwhLS1FTlRJ
VFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KKzwhLS1FTlRJVFkgbGFuZyAiJiN4
MjdFODsiLS0+Cis8IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgorPCEt
LUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElU
WSByYW5nbGUgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KKzwh
LS1FTlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Cis8IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyIt
LT4KKzwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgorPCEtLUVOVElUWSB4bGFyciAiJiN4
MjdGNTsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgorPCEtLUVO
VElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3
RjY7Ii0tPgorPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Cis8IS0tRU5U
SVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3
Rjc7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEt
LUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEtLUVOVElUWSB4bEFy
ciAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgor
PCEtLUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KKzwhLS1FTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
LS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KKzwhLS1F
TlRJVFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cg
IiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3
RkE7Ii0tPgorPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KKzwhLS1FTlRJVFkgbG9uZ21h
cHN0byAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KKzwh
LS1FTlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KKzwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAz
OyItLT4KKzwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KKzwhLS1FTlRJVFkgTWFwICIm
I3gyOTA1OyItLT4KKzwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgorPCEtLUVOVElUWSBy
YmFyciAiJiN4MjkwRDsiLS0+Cis8IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Cis8IS0t
RU5USVRZIGxCYXJyICImI3gyOTBFOyItLT4KKzwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0t
PgorPCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KKzwhLS1FTlRJVFkgUkJhcnIgIiYj
eDI5MTA7Ii0tPgorPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Cis8IS0tRU5USVRZ
IEREb3RyYWhkICImI3gyOTExOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsi
LS0+Cis8IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Cis8IS0tRU5USVRZIFJh
cnJ0bCAiJiN4MjkxNjsiLS0+Cis8IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Cis8IS0t
RU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Cis8IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsi
LS0+Cis8IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Cis8IS0tRU5USVRZIGxhcnJmcyAi
JiN4MjkxRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Cis8IS0tRU5USVRZ
IGxhcnJiZnMgIiYjeDI5MUY7Ii0tPgorPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4K
KzwhLS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KKzwhLS1FTlRJVFkgbmVhcmhrICImI3gy
OTI0OyItLT4KKzwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KKzwhLS1FTlRJVFkgaGtz
ZWFyb3cgIiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgorPCEt
LUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIG53bmVhciAiJiN4Mjky
NzsiLS0+Cis8IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Cis8IS0tRU5USVRZIHRvZWEg
IiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgorPCEtLUVOVElU
WSB0b3NhICImI3gyOTI5OyItLT4KKzwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KKzwh
LS1FTlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgorPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Cis8IS0tRU5USVRZ
IGxkY2EgIiYjeDI5MzY7Ii0tPgorPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KKzwhLS1F
TlRJVFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Cis8IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsi
LS0+Cis8IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgorPCEtLUVOVElUWSBjdWxhcnJw
ICImI3gyOTNEOyItLT4KKzwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KKzwhLS1FTlRJ
VFkgaGFycmNpciAiJiN4Mjk0ODsiLS0+Cis8IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyIt
LT4KKzwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgorPCEtLUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiLS0+Cis8IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+
Cis8IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KKzwhLS1FTlRJVFkg
RG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Cis8IS0tRU5USVRZIExlZnRVcERvd25W
ZWN0b3IgIiYjeDI5NTE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9y
QmFyICImI3gyOTU1OyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7
Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG93blZl
Y3RvckJhciAiJiN4Mjk1OTsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7
Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Cis8IS0tRU5USVRZ
IFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvd25UZWVW
ZWN0b3IgIiYjeDI5NUQ7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1
RTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Cis8IS0t
RU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Cis8IS0tRU5USVRZIExlZnREb3du
VGVlVmVjdG9yICImI3gyOTYxOyItLT4KKzwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Cis8
IS0tRU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgorPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyIt
LT4KKzwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Cis8IS0tRU5USVRZIGx1cnVoYXIgIiYj
eDI5NjY7Ii0tPgorPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KKzwhLS1FTlRJVFkg
cnVsdWhhciAiJiN4Mjk2ODsiLS0+Cis8IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgor
PCEtLUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgorPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5
NkI7Ii0tPgorPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgorPCEtLUVOVElUWSBscmhh
cmQgIiYjeDI5NkQ7Ii0tPgorPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Cis8IS0tRU5U
SVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgorPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2
RjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KKzwh
LS1FTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KKzwhLS1FTlRJVFkgZXJhcnIgIiYj
eDI5NzE7Ii0tPgorPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KKzwhLS1FTlRJVFkg
bGFycnNpbSAiJiN4Mjk3MzsiLS0+Cis8IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgor
PCEtLUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgorPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5
NzY7Ii0tPgorPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgorPCEtLUVOVElUWSBzdWJy
YXJyICImI3gyOTc5OyItLT4KKzwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Cis8IS0t
RU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Cis8IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsi
LS0+Cis8IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Cis8IS0tRU5USVRZIGRmaXNodCAi
JiN4Mjk3RjsiLS0+Cis8IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KKzwhLS1FTlRJVFkg
cm9wYXIgIiYjeDI5ODY7Ii0tPgorPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Cis8IS0t
RU5USVRZIHJicmtlICImI3gyOThDOyItLT4KKzwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsi
LS0+Cis8IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgorPCEtLUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Cis8IS0tRU5U
SVRZIGxhbmdkICImI3gyOTkxOyItLT4KKzwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgor
PCEtLUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgorPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5
OTQ7Ii0tPgorPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgorPCEtLUVOVElUWSBsdHJQ
YXIgIiYjeDI5OTY7Ii0tPgorPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KKzwhLS1F
TlRJVFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7
Ii0tPgorPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KKzwhLS1FTlRJVFkgcmFuZ2UgIiYj
eDI5QTU7Ii0tPgorPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KKzwhLS1FTlRJVFkg
dXdhbmdsZSAiJiN4MjlBNzsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4K
KzwhLS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYyAi
JiN4MjlBQTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KKzwhLS1FTlRJ
VFkgYW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsi
LS0+Cis8IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNk
YWggIiYjeDI5QUY7Ii0tPgorPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KKzwhLS1F
TlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Cis8IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7
Ii0tPgorPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Cis8IS0tRU5USVRZIGxhZW1w
dHl2ICImI3gyOUI0OyItLT4KKzwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgorPCEtLUVO
VElUWSBvbWlkICImI3gyOUI2OyItLT4KKzwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Cis8
IS0tRU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KKzwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlC
QjsiLS0+Cis8IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Cis8IS0tRU5USVRZIG9sY2ly
ICImI3gyOUJFOyItLT4KKzwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgorPCEtLUVOVElU
WSBvbHQgIiYjeDI5QzA7Ii0tPgorPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgorPCEtLUVO
VElUWSBjaXJzY2lyICImI3gyOUMyOyItLT4KKzwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+
Cis8IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgorPCEtLUVOVElUWSBic29sYiAiJiN4MjlD
NTsiLS0+Cis8IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Cis8IS0tRU5USVRZIHRyaXNi
ICImI3gyOUNEOyItLT4KKzwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgorPCEtLUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJh
ciAiJiN4MjlEMDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KKzwhLS1FTlRJVFkg
aW5maW50aWUgIiYjeDI5REQ7Ii0tPgorPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4K
KzwhLS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KKzwhLS1FTlRJVFkgc21lcGFyc2wgIiYj
eDI5RTQ7Ii0tPgorPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Cis8IS0tRU5USVRZ
IGxvemYgIiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0t
PgorPCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Cis8IS0tRU5USVRZIGRzb2wg
IiYjeDI5RjY7Ii0tPgorPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Cis8IS0tRU5USVRZ
IGJpZ29kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgor
PCEtLUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZIHhvdGltZSAiJiN4
MkEwMjsiLS0+Cis8IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Cis8IS0tRU5USVRZ
IHh1cGx1cyAiJiN4MkEwNDsiLS0+Cis8IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4K
KzwhLS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkgYmlnc3FjdXAgIiYj
eDJBMDY7Ii0tPgorPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgaWlp
aW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgorPCEt
LUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Cis8IS0tRU5USVRZIGF3aW50ICImI3gyQTEx
OyItLT4KKzwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgorPCEtLUVOVElUWSBzY3Bv
bGludCAiJiN4MkExMzsiLS0+Cis8IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgorPCEt
LUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Cis8IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJB
MTY7Ii0tPgorPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Cis8IS0tRU5USVRZIHBs
dXNjaXIgIiYjeDJBMjI7Ii0tPgorPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Cis8
IS0tRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgorPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJB
MjU7Ii0tPgorPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KKzwhLS1FTlRJVFkgcGx1
c3R3byAiJiN4MkEyNzsiLS0+Cis8IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Cis8IS0t
RU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgorPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7
Ii0tPgorPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgorPCEtLUVOVElUWSBDcm9zcyAi
JiN4MkEyRjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Cis8IS0tRU5USVRZ
IHRpbWVzYmFyICImI3gyQTMxOyItLT4KKzwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4K
KzwhLS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Cis8IS0tRU5USVRZIHJvdGltZXMgIiYj
eDJBMzU7Ii0tPgorPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Cis8IS0tRU5USVRZ
IE90aW1lcyAiJiN4MkEzNzsiLS0+Cis8IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgorPCEt
LUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KKzwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJB
M0E7Ii0tPgorPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KKzwhLS1FTlRJVFkgaXBy
b2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KKzwhLS1F
TlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgorPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0t
PgorPCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KKzwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0
MzsiLS0+Cis8IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Cis8IS0tRU5USVRZIGN1cG9y
ICImI3gyQTQ1OyItLT4KKzwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KKzwhLS1FTlRJ
VFkgY2FwY3VwICImI3gyQTQ3OyItLT4KKzwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0t
PgorPCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Cis8IS0tRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiLS0+Cis8IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Cis8IS0tRU5USVRZ
IGNjdXBzICImI3gyQTRDOyItLT4KKzwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgorPCEt
LUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KKzwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyIt
LT4KKzwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgorPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJB
NTU7Ii0tPgorPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KKzwhLS1FTlRJVFkgb3JzbG9w
ZSAiJiN4MkE1NzsiLS0+Cis8IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KKzwhLS1F
TlRJVFkgYW5kdiAiJiN4MkE1QTsiLS0+Cis8IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Cis8
IS0tRU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgorPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0t
PgorPCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgorPCEtLUVOVElUWSBzZG90ZSAiJiN4
MkE2NjsiLS0+Cis8IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Cis8IS0tRU5USVRZIGNv
bmdkb3QgIiYjeDJBNkQ7Ii0tPgorPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgorPCEtLUVOVElUWSBhcGFjaXIg
IiYjeDJBNkY7Ii0tPgorPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgorPCEtLUVOVElUWSBu
YXBFICImI3gyQTcwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4K
KzwhLS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgorPCEtLUVOVElUWSBFc2ltICImI3gyQTcz
OyItLT4KKzwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KKzwhLS1FTlRJVFkgRXF1YWwg
IiYjeDJBNzU7Ii0tPgorPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Cis8IS0tRU5USVRZ
IGRkb3RzZXEgIiYjeDJBNzc7Ii0tPgorPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4K
KzwhLS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgorPCEtLUVOVElUWSBndGNpciAiJiN4MkE3
QTsiLS0+Cis8IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgorPCEtLUVOVElUWSBndHF1
ZXN0ICImI3gyQTdDOyItLT4KKzwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KKzwhLS1FTlRJ
VFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4
MkE3RDsiLS0+Cis8IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmxl
cXNsYW50ICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+
Cis8IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkg
Z2Vxc2xhbnQgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+
Cis8IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBs
ZXNkb3QgIiYjeDJBN0Y7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgorPCEt
LUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KKzwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4
MjsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KKzwhLS1FTlRJVFkgZ2Vz
ZG90b2wgIiYjeDJBODQ7Ii0tPgorPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgorPCEtLUVO
VElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KKzwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyIt
LT4KKzwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KKzwhLS1FTlRJVFkgbG5lICIm
I3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Cis8IS0tRU5USVRZIGdu
ZSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgorPCEtLUVOVElU
WSBsbmFwICImI3gyQTg5OyItLT4KKzwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgor
PCEtLUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KKzwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJB
OEE7Ii0tPgorPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgorPCEtLUVOVElUWSBsZXNzZXFx
Z3RyICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KKzwhLS1FTlRJ
VFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Cis8IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyIt
LT4KKzwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgorPCEtLUVOVElUWSBsc2ltZyAiJiN4
MkE4RjsiLS0+Cis8IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KKzwhLS1FTlRJVFkgbGdF
ICImI3gyQTkxOyItLT4KKzwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KKzwhLS1FTlRJVFkg
bGVzZ2VzICImI3gyQTkzOyItLT4KKzwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KKzwh
LS1FTlRJVFkgZWxzICImI3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJB
OTU7Ii0tPgorPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgorPCEtLUVOVElUWSBlcXNsYW50
Z3RyICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KKzwhLS1F
TlRJVFkgZWdzZG90ICImI3gyQTk4OyItLT4KKzwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgor
PCEtLUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Cis8IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0t
PgorPCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KKzwhLS1FTlRJVFkgc2ltbEUgIiYjeDJB
OUY7Ii0tPgorPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Cis8IS0tRU5USVRZIExlc3NM
ZXNzICImI3gyQUExOyItLT4KKzwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgorPCEt
LUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgorPCEt
LUVOVElUWSBnbGogIiYjeDJBQTQ7Ii0tPgorPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgor
PCEtLUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KKzwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsi
LS0+Cis8IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KKzwhLS1FTlRJVFkgZ2VzY2MgIiYj
eDJBQTk7Ii0tPgorPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgorPCEtLUVOVElUWSBsYXQg
IiYjeDJBQUI7Ii0tPgorPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KKzwhLS1FTlRJVFkg
c210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0t
PgorPCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgYnVt
cEUgIiYjeDJBQUU7Ii0tPgorPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElU
WSBwcmVjZXEgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFG
OyItLT4KKzwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBu
cHJlY2VxICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwg
IiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KKzwhLS1F
TlRJVFkgc3VjY2VxICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4
MkFCMDsiLS0+Cis8IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc0Vx
dWFsICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Cis8
IS0tRU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Cis8IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0t
PgorPCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5USVRZIHNjbkUgIiYj
eDJBQjY7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Cis8IS0tRU5USVRZ
IHByYXAgIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4K
KzwhLS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYj
eDJBQjg7Ii0tPgorPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Cis8IS0tRU5USVRZIHBy
ZWNuYXBwcm94ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgor
PCEtLUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5USVRZIFByICImI3gy
QUJCOyItLT4KKzwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgorPCEtLUVOVElUWSBzdWJkb3Qg
IiYjeDJBQkQ7Ii0tPgorPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgorPCEtLUVOVElU
WSBzdWJwbHVzICImI3gyQUJGOyItLT4KKzwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+
Cis8IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgorPCEtLUVOVElUWSBzdXBtdWx0ICIm
I3gyQUMyOyItLT4KKzwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Cis8IS0tRU5USVRZ
IHN1cGVkb3QgIiYjeDJBQzQ7Ii0tPgorPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KKzwh
LS1FTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KKzwhLS1FTlRJVFkgbnN1YkUgIiYjeDJB
QzU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0ZXFxICIm
I3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzdWJzaW0g
IiYjeDJBQzc7Ii0tPgorPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgorPCEtLUVOVElU
WSBzdWJuRSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0t
PgorPCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZh
cnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHN1cG5FICImI3gy
QUNDOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Cis8IS0tRU5USVRZ
IHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAi
JiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Cis8IS0t
RU5USVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgorPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+
Cis8IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KKzwhLS1FTlRJVFkgc3Vic3VwICImI3gy
QUQzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KKzwhLS1FTlRJVFkgc3Vi
c3ViICImI3gyQUQ1OyItLT4KKzwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KKzwhLS1F
TlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Cis8IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ii0tPgorPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Cis8IS0tRU5USVRZIHRvcGZvcmsg
IiYjeDJBREE7Ii0tPgorPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KKzwhLS1FTlRJVFkg
RGFzaHYgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyIt
LT4KKzwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KKzwhLS1FTlRJVFkgQmFydiAiJiN4
MkFFNzsiLS0+Cis8IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgorPCEtLUVOVElUWSB2QmFy
diAiJiN4MkFFOTsiLS0+Cis8IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgorPCEtLUVOVElU
WSBOb3QgIiYjeDJBRUM7Ii0tPgorPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KKzwhLS1F
TlRJVFkgcm5taWQgIiYjeDJBRUU7Ii0tPgorPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0t
PgorPCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgorPCEtLUVOVElUWSB0b3BjaXIgIiYj
eDJBRjE7Ii0tPgorPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Cis8IS0tRU5USVRZIHBh
cnNpbSAiJiN4MkFGMzsiLS0+Cis8IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KKzwhLS1F
TlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBmZmxpZyAiJiN4
RkIwMDsiLS0+Cis8IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KKzwhLS1FTlRJVFkgZmxs
aWcgIiYjeEZCMDI7Ii0tPgorPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgorPCEtLUVO
VElUWSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgorPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+
Cis8IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KKzwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0
OUY7Ii0tPgorPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Cis8IS0tRU5USVRZIEpzY3Ig
IiYjeDFENEE1OyItLT4KKzwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgorPCEtLUVOVElU
WSBOc2NyICImI3gxRDRBOTsiLS0+Cis8IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KKzwh
LS1FTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgorPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsi
LS0+Cis8IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KKzwhLS1FTlRJVFkgVHNjciAiJiN4
MUQ0QUY7Ii0tPgorPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Cis8IS0tRU5USVRZIFZz
Y3IgIiYjeDFENEIxOyItLT4KKzwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgorPCEtLUVO
VElUWSBYc2NyICImI3gxRDRCMzsiLS0+Cis8IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4K
KzwhLS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgorPCEtLUVOVElUWSBhc2NyICImI3gxRDRC
NjsiLS0+Cis8IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KKzwhLS1FTlRJVFkgY3NjciAi
JiN4MUQ0Qjg7Ii0tPgorPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Cis8IS0tRU5USVRZ
IGZzY3IgIiYjeDFENEJCOyItLT4KKzwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgorPCEt
LUVOVElUWSBpc2NyICImI3gxRDRCRTsiLS0+Cis8IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyIt
LT4KKzwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgorPCEtLUVOVElUWSBsc2NyICImI3gx
RDRDMTsiLS0+Cis8IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KKzwhLS1FTlRJVFkgbnNj
ciAiJiN4MUQ0QzM7Ii0tPgorPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Cis8IS0tRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyItLT4KKzwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgor
PCEtLUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Cis8IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5
OyItLT4KKzwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgorPCEtLUVOVElUWSB2c2NyICIm
I3gxRDRDQjsiLS0+Cis8IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KKzwhLS1FTlRJVFkg
eHNjciAiJiN4MUQ0Q0Q7Ii0tPgorPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Cis8IS0t
RU5USVRZIHpzY3IgIiYjeDFENENGOyItLT4KKzwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+
Cis8IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgorPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3
OyItLT4KKzwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Cis8IS0tRU5USVRZIEZmciAiJiN4
MUQ1MDk7Ii0tPgorPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KKzwhLS1FTlRJVFkgSmZy
ICImI3gxRDUwRDsiLS0+Cis8IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgorPCEtLUVOVElU
WSBMZnIgIiYjeDFENTBGOyItLT4KKzwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Cis8IS0t
RU5USVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgorPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4K
KzwhLS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Cis8IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7
Ii0tPgorPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KKzwhLS1FTlRJVFkgVGZyICImI3gx
RDUxNzsiLS0+Cis8IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgorPCEtLUVOVElUWSBWZnIg
IiYjeDFENTE5OyItLT4KKzwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Cis8IS0tRU5USVRZ
IFhmciAiJiN4MUQ1MUI7Ii0tPgorPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KKzwhLS1F
TlRJVFkgYWZyICImI3gxRDUxRTsiLS0+Cis8IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgor
PCEtLUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KKzwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsi
LS0+Cis8IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgorPCEtLUVOVElUWSBmZnIgIiYjeDFE
NTIzOyItLT4KKzwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Cis8IS0tRU5USVRZIGhmciAi
JiN4MUQ1MjU7Ii0tPgorPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KKzwhLS1FTlRJVFkg
amZyICImI3gxRDUyNzsiLS0+Cis8IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgorPCEtLUVO
VElUWSBsZnIgIiYjeDFENTI5OyItLT4KKzwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Cis8
IS0tRU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgorPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyIt
LT4KKzwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Cis8IS0tRU5USVRZIHFmciAiJiN4MUQ1
MkU7Ii0tPgorPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KKzwhLS1FTlRJVFkgc2ZyICIm
I3gxRDUzMDsiLS0+Cis8IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgorPCEtLUVOVElUWSB1
ZnIgIiYjeDFENTMyOyItLT4KKzwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Cis8IS0tRU5U
SVRZIHdmciAiJiN4MUQ1MzQ7Ii0tPgorPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KKzwh
LS1FTlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Cis8IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0t
PgorPCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Cis8IS0tRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyItLT4KKzwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgorPCEtLUVOVElUWSBFb3Bm
ICImI3gxRDUzQzsiLS0+Cis8IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KKzwhLS1FTlRJ
VFkgR29wZiAiJiN4MUQ1M0U7Ii0tPgorPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Cis8
IS0tRU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KKzwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7
Ii0tPgorPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Cis8IS0tRU5USVRZIE1vcGYgIiYj
eDFENTQ0OyItLT4KKzwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgorPCEtLUVOVElUWSBT
b3BmICImI3gxRDU0QTsiLS0+Cis8IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KKzwhLS1F
TlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgorPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+
Cis8IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KKzwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1
NEY7Ii0tPgorPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Cis8IS0tRU5USVRZIGFvcGYg
IiYjeDFENTUyOyItLT4KKzwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgorPCEtLUVOVElU
WSBjb3BmICImI3gxRDU1NDsiLS0+Cis8IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KKzwh
LS1FTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgorPCEtLUVOVElUWSBmb3BmICImI3gxRDU1Nzsi
LS0+Cis8IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KKzwhLS1FTlRJVFkgaG9wZiAiJiN4
MUQ1NTk7Ii0tPgorPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Cis8IS0tRU5USVRZIGpv
cGYgIiYjeDFENTVCOyItLT4KKzwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgorPCEtLUVO
VElUWSBsb3BmICImI3gxRDU1RDsiLS0+Cis8IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4K
KzwhLS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgorPCEtLUVOVElUWSBvb3BmICImI3gxRDU2
MDsiLS0+Cis8IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KKzwhLS1FTlRJVFkgcW9wZiAi
JiN4MUQ1NjI7Ii0tPgorPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Cis8IS0tRU5USVRZ
IHNvcGYgIiYjeDFENTY0OyItLT4KKzwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgorPCEt
LUVOVElUWSB1b3BmICImI3gxRDU2NjsiLS0+Cis8IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyIt
LT4KKzwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgorPCEtLUVOVElUWSB4b3BmICImI3gx
RDU2OTsiLS0+Cis8IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KKzwhLS1FTlRJVFkgem9w
ZiAiJiN4MUQ1NkI7Ii0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQu
cHkKaW5kZXggMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUzZGIzMC4uZjhiZTAz
ZWZiMjc1MGFkNzU0YzYwMzhmNzM0MWE5NzYxMjkxZGYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9h
ZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGlmIE1ZUFk6CiAgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
ICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VGV4dAogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCkBAIC01MCw5ICs1MSw5
IEBAIGRlZiBzaG91bGRfZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWlsZF90aW1lPXRpbWVk
ZWx0YShkYXlzPTUpKToKIAogCiBkZWYgbWVyZ2VfcHJfdGFncyhyZXBvX3Jvb3QsIG1heF9jb3Vu
dD01MCk6Ci0gICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3Rbc3RyXQorICAgICMgdHlwZTog
KHN0ciwgaW50KSAtPiBMaXN0W1RleHRdCiAgICAgZ2l0ZnVuYyA9IGdpdChyZXBvX3Jvb3QpCi0g
ICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHRhZ3MgPSBbXSAgIyB0eXBlOiBM
aXN0W1RleHRdCiAgICAgaWYgZ2l0ZnVuYyBpcyBOb25lOgogICAgICAgICByZXR1cm4gdGFncwog
ICAgIGZvciBsaW5lIGluIGdpdGZ1bmMoImxvZyIsICItLWZvcm1hdD0lRCIsICItLW1heC1jb3Vu
dD0lcyIgJSBtYXhfY291bnQpLnNwbGl0KCJcbiIpOgpAQCAtNzksNyArODAsNyBAQCBkZWYgc2Nv
cmVfbmFtZShuYW1lKToKIAogCiBkZWYgZ2l0aHViX3VybCh0YWdzKToKLSAgICAjIHR5cGU6IChM
aXN0W3N0cl0pIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAjIHR5cGU6IChMaXN0W1RleHRd
KSAtPiBPcHRpb25hbFtMaXN0W1RleHRdXQogICAgIGZvciB0YWcgaW4gdGFnczoKICAgICAgICAg
dXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dC9yZWxlYXNlcy90YWdzLyVzIiAlIHRhZwogICAgICAgICB0cnk6CkBAIC0xMTEsOCArMTEyLDgg
QEAgZGVmIGdpdGh1Yl91cmwodGFncyk6CiAKIGRlZiBkb3dubG9hZF9tYW5pZmVzdCgKICAgICAg
ICAgbWFuaWZlc3RfcGF0aCwgICMgdHlwZTogc3RyCi0gICAgICAgIHRhZ3NfZnVuYywgICMgdHlw
ZTogQ2FsbGFibGVbW10sIExpc3Rbc3RyXV0KLSAgICAgICAgdXJsX2Z1bmMsICAjIHR5cGU6IENh
bGxhYmxlW1tMaXN0W3N0cl1dLCBPcHRpb25hbFtMaXN0W3N0cl1dXQorICAgICAgICB0YWdzX2Z1
bmMsICAjIHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W1RleHRdXQorICAgICAgICB1cmxfZnVuYywg
ICMgdHlwZTogQ2FsbGFibGVbW0xpc3RbVGV4dF1dLCBPcHRpb25hbFtMaXN0W1RleHRdXV0KICAg
ICAgICAgZm9yY2U9RmFsc2UgICMgdHlwZTogYm9vbAogKToKICAgICAjIHR5cGU6ICguLi4pIC0+
IGJvb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCAxYzQwMzRhZDA1
Zjk5YTI2MzE1OTAxYTE4YzhmNDAyZDVmYTY0YzEwLi5lZTA3ZjBkMWQ3OTcxNzUzNzRiMTY5YTQ2
OGI0YzJjODUwNTc5NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CkBA
IC0xLDQgKzEsNCBAQAotZnJvbSBjb3B5IGltcG9ydCBjb3B5CitpbXBvcnQgb3MucGF0aAogZnJv
bSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCB3
aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
LCB1cmxwYXJzZQpAQCAtNjEsNiArNjEsMTEgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKICAgICAgICAgIiIiVGhlIGl0ZW0ncyB0eXBlIiIi
CiAgICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXRoX3BhcnRzKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYucGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBkZWYga2V5KHNlbGYp
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIiIkEgdW5pcXVlIGlk
ZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCkBAIC0xMDQsMTQgKzEwOSwxNCBAQCBjbGFzcyBVUkxN
YW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwg
ICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAgICAg
ICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgIHVy
bCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlvbmFs
W1RleHRdCiAgICAgICAgICAgICAgICAgICoqZXh0cmFzICAjIHR5cGU6IEFueQogICAgICAgICAg
ICAgICAgICApOgogICAgICAgICAjIHR5cGU6ICguLi4pIC0+IE5vbmUKICAgICAgICAgc3VwZXIo
VVJMTWFuaWZlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19yb290LCBwYXRoKQogICAgICAg
ICBhc3NlcnQgdXJsX2Jhc2VbMF0gPT0gIi8iCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1cmxf
YmFzZQotICAgICAgICBhc3NlcnQgdXJsWzBdICE9ICIvIgorICAgICAgICBhc3NlcnQgdXJsIGlz
IE5vbmUgb3IgdXJsWzBdICE9ICIvIgogICAgICAgICBzZWxmLl91cmwgPSB1cmwKICAgICAgICAg
c2VsZi5fZXh0cmFzID0gZXh0cmFzCiAKQEAgLTEyMywyMCArMTI4LDI4IEBAIGNsYXNzIFVSTE1h
bmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB1cmwoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAorICAgICAgICByZWxfdXJsID0gc2VsZi5f
dXJsIG9yIHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKQogICAgICAgICAjIHdl
IGNhbiBvdXRwZXJmb3JtIHVybGpvaW4sIGJlY2F1c2Ugd2Uga25vdyB3ZSBqdXN0IGhhdmUgcGF0
aCByZWxhdGl2ZSBVUkxzCiAgICAgICAgIGlmIHNlbGYudXJsX2Jhc2UgPT0gIi8iOgotICAgICAg
ICAgICAgcmV0dXJuICIvIiArIHNlbGYuX3VybAotICAgICAgICByZXR1cm4gdXJsam9pbihzZWxm
LnVybF9iYXNlLCBzZWxmLl91cmwpCisgICAgICAgICAgICByZXR1cm4gIi8iICsgcmVsX3VybAor
ICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLCByZWxfdXJsKQogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
ICAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICgiaHR0cHMiIGluIGZsYWdz
IG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgaDIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICBmbGFncyA9
IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxpdCgiLiIp
WzE6LTFdKQorICAgICAgICByZXR1cm4gImgyIiBpbiBmbGFncwogCiAgICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1d
Ci0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwge30pICAjIHR5cGU6IFR1cGxlW1RleHQsIERpY3Rb
QW55LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBE
aWN0W0FueSwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5fdXJsID09IHNl
bGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKSBlbHNlIHNlbGYuX3VybAorICAgICAg
ICBydiA9IChyZWxfdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3Rb
QW55LCBBbnldXQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTc3
LDEzICsxOTAsMTggQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAg
ICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4dHJhcy5nZXQoImpzc2hlbGwiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHF1aWMoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V4dHJhcy5nZXQoInF1aWMiKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHNjcmlw
dF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQog
ICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgic2NyaXB0X21ldGFkYXRhIikKIAogICAg
IGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERp
Y3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0
XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVyKFRlc3RoYXJuZXNzVGVzdCwg
c2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0xOTEsMjMgKzIw
OSwyNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAg
ICAgIHJ2Wy0xXVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAgICAgICAgIGlmIHNl
bGYuanNzaGVsbDoKICAgICAgICAgICAgIHJ2Wy0xXVsianNzaGVsbCJdID0gVHJ1ZQorICAgICAg
ICBpZiBzZWxmLnF1aWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBydlstMV1bInF1aWMiXSA9
IHNlbGYucXVpYwogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAg
IHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBzZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAg
ICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IFsoaywgdikgZm9yIChrLHYpIGluIHNl
bGYuc2NyaXB0X21ldGFkYXRhXQogICAgICAgICByZXR1cm4gcnYKIAogCi1jbGFzcyBSZWZUZXN0
QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgorY2xhc3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgog
ICAgIF9fc2xvdHNfXyA9ICgicmVmZXJlbmNlcyIsKQogCisgICAgaXRlbV90eXBlID0gInJlZnRl
c3QiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9v
dCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAg
ICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAg
IHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlv
bmFsW1RleHRdCiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9Tm9uZSwgICMgdHlwZTogT3B0
aW9uYWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgICAgICAgICAgICoqZXh0cmFz
ICAjIHR5cGU6IEFueQogICAgICAgICAgICAgICAgICApOgotICAgICAgICBzdXBlcihSZWZUZXN0
QmFzZSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jhc2UsIHVybCwgKipl
eHRyYXMpCisgICAgICAgIHN1cGVyKFJlZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3Qs
IHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0cmFzKQogICAgICAgICBpZiByZWZlcmVuY2VzIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlZmVyZW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1
cGxlW1RleHQsIFRleHRdXQogICAgICAgICBlbHNlOgpAQCAtMjQ3LDggKzI2OSw5IEBAIGNsYXNz
IFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVybiBydgogCiAgICAg
ZGVmIHRvX2pzb24oc2VsZik6ICAjIHR5cGU6IGlnbm9yZQotICAgICAgICAjIHR5cGU6ICgpIC0+
IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCi0g
ICAgICAgIHJ2ID0gKHNlbGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVw
bGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtUdXBsZVtUZXh0LCBU
ZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5f
dXJsID09IHNlbGYucGF0aCBlbHNlIHNlbGYuX3VybAorICAgICAgICBydiA9IChyZWxfdXJsLCBz
ZWxmLnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgZXh0cmFzID0gcnZb
LTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4
dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0yNjYsNyArMjg5LDcgQEAgY2xhc3Mg
UmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgIHBhdGgsICAj
IHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgIG9iaiAgIyB0eXBlOiBUdXBsZVtUZXh0LCBM
aXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtBbnksIEFueV1dCiAgICAgICAgICAgICAgICAg
ICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFJlZlRlc3RCYXNlCisgICAgICAgICMgdHlw
ZTogKC4uLikgLT4gUmVmVGVzdAogICAgICAgICB0ZXN0c19yb290ID0gbWFuaWZlc3QudGVzdHNf
cm9vdAogICAgICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBwYXRo
ID0gdG9fb3NfcGF0aChwYXRoKQpAQCAtMjc4LDM4ICszMDEsNiBAQCBjbGFzcyBSZWZUZXN0QmFz
ZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsCiAgICAg
ICAgICAgICAgICAgICAgKipleHRyYXMpCiAKLSAgICBkZWYgdG9fUmVmVGVzdChzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgPT0gUmVm
VGVzdDoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRlc3QpCi0gICAg
ICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikKLSAgICAgICAgcnYu
X19jbGFzc19fID0gUmVmVGVzdAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShydiwgUmVmVGVz
dCkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgdG9fUmVmVGVzdE5vZGUoc2VsZik6Ci0g
ICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdE5vZGUKLSAgICAgICAgaWYgdHlwZShzZWxmKSA9
PSBSZWZUZXN0Tm9kZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRl
c3ROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBjb3B5KHNlbGYp
Ci0gICAgICAgIHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3ROb2RlCi0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJ2LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLQotY2xhc3MgUmVm
VGVzdE5vZGUoUmVmVGVzdEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5
cGUgPSAicmVmdGVzdF9ub2RlIgotCi0KLWNsYXNzIFJlZlRlc3QoUmVmVGVzdEJhc2UpOgotICAg
IF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIKLQogCiBjbGFzcyBN
YW51YWxUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0gKCkKQEAgLTM1MSw3
ICszNDIsNyBAQCBjbGFzcyBXZWJEcml2ZXJTcGVjVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAKICAgICBkZWYgdG9fanNv
bihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBEaWN0W1RleHQsIEFu
eV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3RbVGV4
dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVzdCwgc2VsZikudG9f
anNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCAyYWQ3ZmNjZjQ4Njc1YmRjYzdiNTQ0NzQ3ZTFkMTgy
NGE1OTg1NDJmLi4zNDVlZWI2ZDJiMGJlZWIzY2UzYzEzOTA5NDljYjllMmQxOWE0MzVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKQEAgLTEsMTUgKzEsMjUg
QEAKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGpzb24KIGltcG9ydCBvcwot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIGRlZmF1bHRkaWN0Ci1mcm9t
IHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywgc3RyaW5nX3R5cGVz
LCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCitmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9t
IG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbCwgY3B1X2NvdW50Citmcm9tIHNpeCBpbXBvcnQg
KAorICAgIFBZMywKKyAgICBiaW5hcnlfdHlwZSwKKyAgICBlbnN1cmVfdGV4dCwKKyAgICBpdGVy
aXRlbXMsCisgICAgaXRlcnZhbHVlcywKKyAgICBzdHJpbmdfdHlwZXMsCisgICAgdGV4dF90eXBl
LAorKQogCiBmcm9tIC4gaW1wb3J0IHZjcwotZnJvbSAuaXRlbSBpbXBvcnQgKENvbmZvcm1hbmNl
Q2hlY2tlclRlc3QsIE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVzdCwgUmVmVGVzdE5v
ZGUsCi0gICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKK2Zyb20gLml0ZW0gaW1wb3J0
IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJlZlRl
c3QsIFN1cHBvcnRGaWxlLAorICAgICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKIGZyb20gLmxvZyBpbXBvcnQg
Z2V0X2xvZ2dlcgogZnJvbSAuc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQotZnJvbSAudXRp
bHMgaW1wb3J0IGZyb21fb3NfcGF0aCwgdG9fb3NfcGF0aAorZnJvbSAudHlwZWRhdGEgaW1wb3J0
IFR5cGVEYXRhCiAKIE1ZUFkgPSBGYWxzZQogaWYgTVlQWToKQEAgLTE5LDE2ICsyOSwxNCBAQCBp
ZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWluZXIKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgRGljdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJTwotICAgIGZyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgotICAgIGZy
b20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCiAg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNl
dAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KLSAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAogCiB0cnk6CiAgICAgaW1wb3J0IHVq
c29uCkBAIC0zNiw3ICs0NCw3IEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmYXN0
X2pzb24gPSBqc29uICAjIHR5cGU6IGlnbm9yZQogCi1DVVJSRU5UX1ZFUlNJT04gPSA3CitDVVJS
RU5UX1ZFUlNJT04gPSA4ICAjIHR5cGU6IGludAogCiAKIGNsYXNzIE1hbmlmZXN0RXJyb3IoRXhj
ZXB0aW9uKToKQEAgLTQ5LDcgKzU3LDYgQEAgY2xhc3MgTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2go
TWFuaWZlc3RFcnJvcik6CiAKIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBUZXN0aGFy
bmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBSZWZUZXN0LAotICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogQ3Jhc2hUZXN0LAogICAgICAgICAgICAgICAgICJtYW51YWwiOiBNYW51YWxUZXN0
LAogICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZWJEcml2ZXJTcGVjVGVzdCwKQEAgLTU4LDE1
NiArNjUsMTIgQEAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3RoYXJuZXNzVGVz
dCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IFN1cHBvcnRGaWxlfSAgIyB0eXBlOiBEaWN0
W3N0ciwgVHlwZVtNYW5pZmVzdEl0ZW1dXQogCiAKLWlmIE1ZUFk6Ci0gICAgVHlwZURhdGFUeXBl
ID0gTXV0YWJsZU1hcHBpbmdbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi1lbHNlOgotICAgIFR5
cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCi0KLWNsYXNzIFR5cGVEYXRhKFR5cGVEYXRhVHlw
ZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmlmZXN0LCB0eXBlX2Nscyk6Ci0gICAgICAg
ICMgdHlwZTogKE1hbmlmZXN0LCBUeXBlW01hbmlmZXN0SXRlbV0pIC0+IE5vbmUKLSAgICAgICAg
IiIiRGljdC1saWtlIG9iamVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVz
dCB0eXBlLgotCi0gICAgICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2gg
dGVzdCBpcyB1bm5lY2Vzc2FyaWx5Ci0gICAgICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dz
IGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAotICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZl
c3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSByYXcganNvbgotICAgICAgICBjb3JyZXNwb25kaW5n
IHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCi0gICAgICAgIHN1YmNs
YXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJlbWFpbgotICAgICAg
ICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFu
IEl0ZW0KLSAgICAgICAgZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVt
cyB3aGVuIGl0ZXJhdGluZwotICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIKLSAgICAgICAgc2Vs
Zi5tYW5pZmVzdCA9IG1hbmlmZXN0Ci0gICAgICAgIHNlbGYudHlwZV9jbHMgPSB0eXBlX2Nscwot
ICAgICAgICBzZWxmLmpzb25fZGF0YSA9IHt9ICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwg
TGlzdFtBbnldXV0KLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtzdHJdCi0gICAgICAgIHNlbGYuZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0
W01hbmlmZXN0SXRlbV1dCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAg
ICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W01hbmlmZXN0SXRlbV0KLSAgICAgICAgaWYga2V5IG5v
dCBpbiBzZWxmLmRhdGEgYW5kIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5sb2FkKGtleSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtrZXldCi0KLSAgICBk
ZWYgX19ub256ZXJvX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLmRhdGEpIG9yIGJvb2woc2VsZi5qc29uX2RhdGEpCi0KLSAgICBk
ZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKLSAgICAgICAgcnYg
PSBsZW4oc2VsZi5kYXRhKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJ2ICs9IGxlbihzZWxmLmpzb25fZGF0YSkKLSAgICAgICAgcmV0dXJuIHJ2
Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4
dCkgLT4gTm9uZQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgZGVs
IHNlbGYuZGF0YVtrZXldCi0gICAgICAgIGVsaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbZnJvbV9vc19wYXRoKGtleSldCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcgotCi0gICAgZGVmIF9fc2V0aXRl
bV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBTZXRbTWFuaWZl
c3RJdGVtXSkgLT4gTm9uZQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAgICAgICAgaWYgcGF0
aCBpbiBzZWxmLmpzb25fZGF0YToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFb
cGF0aF0KLSAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQotCi0gICAgZGVmIF9fY29udGFp
bnNfXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJvb2wKLSAgICAgICAg
c2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5kYXRhCi0KLSAgICBk
ZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gSXRlcmF0b3JbVGV4dF0K
LSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEuX19pdGVy
X18oKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbU2V0W01hbmlmZXN0SXRlbV1dCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAg
ICAgICByZXR1cm4gaXRlcnZhbHVlcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYgaXRlcml0ZW1zKHNl
bGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1RleHQsIFNldFtNYW5p
ZmVzdEl0ZW1dXV0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAgICAgICAgIyB0eXBl
OiAoKSAtPiBMaXN0W1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICByZXR1cm4gbGlzdChzZWxm
Lml0ZXJ2YWx1ZXMoKSkKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBMaXN0W1R1cGxlW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAgICAgICAgcmV0dXJu
IGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKLQotICAgIGRlZiBsb2FkKHNlbGYsIGtleSk6Ci0gICAg
ICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBhIHNwZWNpZmljIEl0
ZW0gZ2l2ZW4gYSBwYXRoIiIiCi0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZGF0YSA9IHNldCgpCi0gICAgICAgICAgICBwYXRoID0gZnJvbV9vc19w
YXRoKGtleSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRo
LCBbXSk6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlwZV9jbHMuZnJv
bV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAgICAgICAgZGF0YS5h
ZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwg
c2VsZi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGRhdGEKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLQotICAgIGRlZiBsb2FkX2Fs
bChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCi0gICAgICAgICIiIkxvYWQgYWxs
IHRlc3QgaXRlbXMgaW4gdGhpcyBjbGFzcyIiIgotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBwYXRoLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5qc29uX2RhdGEpOgotICAgICAgICAgICAgICAgIGtleSA9IHRvX29zX3BhdGgocGF0aCkKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAgICAgICAgICAgIGZv
ciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRoLCBbXSk6Ci0gICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xzLmZyb21fanNvbihzZWxmLm1hbmlmZXN0
LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVt
KQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAgICAgICAgICAgc2Vs
Zi5qc29uX2RhdGEgPSBOb25lCi0KLSAgICBkZWYgc2V0X2pzb24oc2VsZiwgdGVzdHNfcm9vdCwg
ZGF0YSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldKSAtPiBOb25lCi0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiR290IGEgJXMgZXhwZWN0ZWQgYSBkaWN0IiAlICh0eXBlKGRhdGEpKSkKLSAg
ICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAotICAgICAgICBzZWxmLmpzb25fZGF0
YSA9IGRhdGEKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgQW55XQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgZnJvbV9vc19w
YXRoKHBhdGgpOgotICAgICAgICAgICAgW3QgZm9yIHQgaW4gc29ydGVkKHRlc3QudG9fanNvbigp
IGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICAj
IGF2b2lkIGNvcHlpbmcgaWYgdGhlcmUncyBub3RoaW5nIGhlcmUgeWV0Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuanNvbl9kYXRhCi0gICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLmpz
b25fZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHBhdGhzKHNlbGYpOgot
ICAgICAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0XQotICAgICAgICAiIiJHZXQgYSBsaXN0IG9m
IGFsbCBwYXRocyBjb250YWluaW5nIGl0ZW1zIG9mIHRoaXMgdHlwZSwKLSAgICAgICAgd2l0aG91
dCBhY3R1YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgotICAgICAgICBydiA9IHNl
dChpdGVya2V5cyhzZWxmLmRhdGEpKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YToKLSAgICAg
ICAgICAgIHJ2IHw9IHt0b19vc19wYXRoKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYu
anNvbl9kYXRhKX0KLSAgICAgICAgcmV0dXJuIHJ2Ci0KK2RlZiBjb21wdXRlX21hbmlmZXN0X2l0
ZW1zKHNvdXJjZV9maWxlKToKKyAgICAjIHR5cGU6IChTb3VyY2VGaWxlKSAtPiBUdXBsZVtUdXBs
ZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF0KKyAgICByZWxfcGF0
aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgbmV3X3R5cGUsIG1hbmlm
ZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQorICAgIGZpbGVfaGFzaCA9
IHNvdXJjZV9maWxlLmhhc2gKKyAgICByZXR1cm4gcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBz
ZXQobWFuaWZlc3RfaXRlbXMpLCBmaWxlX2hhc2gKIAogaWYgTVlQWToKICAgICBNYW5pZmVzdERh
dGFUeXBlID0gRGljdFtBbnksIFR5cGVEYXRhXQpAQCAtMjM3LDE3ICsxMDAsMjUgQEAgY2xhc3Mg
TWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0YVR5cGUpOgogICAgICAgICB3aXRob3V0IGFjdHVhbGx5
IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlw
ZTogU2V0W1RleHRdCiAgICAgICAgIGZvciBpdGVtX2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToK
LSAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0aHMoKSkKKyAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydi5hZGQob3MucGF0aC5zZXAu
am9pbihpdGVtKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgdHlwZV9ieV9wYXRoKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVHVwbGVbVGV4dCwgLi4uXSwgc3RyXQor
ICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBpdGVtX3R5cGUsIGl0ZW1fZGF0YSBpbiBpdGVy
aXRlbXMoc2VsZik6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtX2RhdGE6CisgICAgICAg
ICAgICAgICAgcnZbaXRlbV0gPSBpdGVtX3R5cGUKKyAgICAgICAgcmV0dXJuIHJ2CisKKwogCiBj
bGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290
PU5vbmUsIHVybF9iYXNlPSIvIik6CiAgICAgICAgICMgdHlwZTogKE9wdGlvbmFsW3N0cl0sIFRl
eHQpIC0+IE5vbmUKICAgICAgICAgYXNzZXJ0IHVybF9iYXNlIGlzIG5vdCBOb25lCi0gICAgICAg
IHNlbGYuX3BhdGhfaGFzaCA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4
dF1dCiAgICAgICAgIHNlbGYuX2RhdGEgPSBNYW5pZmVzdERhdGEoc2VsZikgICMgdHlwZTogTWFu
aWZlc3REYXRhCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gTm9uZSAgIyB0
eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV1dCiAg
ICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UgICMgdHlwZTogVGV4dAogCkBAIC0y
NTgsNDcgKzEyOSwzNCBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBpdGVydHlw
ZXMoc2VsZiwgKnR5cGVzKToKICAgICAgICAgIyB0eXBlOiAoKnN0cikgLT4gSXRlcmF0b3JbVHVw
bGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCiAgICAgICAgIGZvciBpdGVtX3R5cGUg
aW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMoKSkpOgotICAgICAgICAgICAgZm9y
IHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBlXSk6CisgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLl9kYXRhW2l0ZW1fdHlwZV06CisgICAgICAgICAgICAgICAgc3RyX3BhdGgg
PSBvcy5zZXAuam9pbihwYXRoKQogICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZGF0YVtp
dGVtX3R5cGVdW3BhdGhdCi0gICAgICAgICAgICAgICAgeWllbGQgaXRlbV90eXBlLCBwYXRoLCB0
ZXN0cworICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgc3RyX3BhdGgsIHRlc3RzCiAK
ICAgICBkZWYgaXRlcnBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+
IEl0ZXJhdG9yW01hbmlmZXN0SXRlbV0KKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFi
bGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0
aC5zZXApKQorCiAgICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6
Ci0gICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQocGF0aCwgc2V0KCkpCisgICAgICAgICAg
ICBpID0gdHlwZV90ZXN0cy5nZXQodHBhdGgsIHNldCgpKQogICAgICAgICAgICAgYXNzZXJ0IGkg
aXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciB0ZXN0IGluIGk6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdAogCiAgICAgZGVmIGl0ZXJkaXIoc2VsZiwgZGlyX25hbWUpOgotICAgICAgICAj
IHR5cGU6IChUZXh0KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCi0gICAgICAgIGlmIG5vdCBk
aXJfbmFtZS5lbmRzd2l0aChvcy5wYXRoLnNlcCk6Ci0gICAgICAgICAgICBkaXJfbmFtZSA9IGRp
cl9uYW1lICsgb3MucGF0aC5zZXAKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFibGVb
TWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKGRpcl9uYW1lLnNwbGl0KG9zLnBh
dGguc2VwKSkKKyAgICAgICAgdHBhdGhfbGVuID0gbGVuKHRwYXRoKQorCiAgICAgICAgIGZvciB0
eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcGF0aCwg
dGVzdHMgaW4gdHlwZV90ZXN0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBwYXRo
LnN0YXJ0c3dpdGgoZGlyX25hbWUpOgorICAgICAgICAgICAgZm9yIHBhdGgsIHRlc3RzIGluIGl0
ZXJpdGVtcyh0eXBlX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoWzp0cGF0aF9sZW5d
ID09IHRwYXRoOgogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBy
ZWZ0ZXN0X25vZGVzX2J5X3VybChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1Rl
eHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV0KLSAgICAgICAgaWYgc2VsZi5fcmVmdGVz
dF9ub2Rlc19ieV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIGJ5X3VybCA9IHt9Ci0gICAgICAg
ICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9k
YXRhWyJyZWZ0ZXN0Il0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0pKToKLSAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKLSAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0gYnlfdXJsCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5
X3VybAotCi0gICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKLSAgICAgICAgIyB0eXBl
OiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQotICAgICAgICByZXR1cm4gc2VsZi5y
ZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVl
KToKLSAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNlRmlsZSwgYnl0
ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHRyZWUsIHBhcmFsbGVs
PVRydWUpOgorICAgICAgICAjIHR5cGU6IChJdGVyYWJsZVtUdXBsZVtVbmlvbltTb3VyY2VGaWxl
LCBieXRlc10sIGJvb2xdXSwgYm9vbCkgLT4gYm9vbAogICAgICAgICAiIiJVcGRhdGUgdGhlIG1h
bmlmZXN0IGdpdmVuIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIHRoYXQgbWFrZSB1cCB0aGUgdXBkYXRl
ZCBtYW5pZmVzdC4KIAogICAgICAgICBUaGUgaXRlcmFibGUgbXVzdCBlaXRoZXIgZ2VuZXJhdGUg
dHVwbGVzIG9mIHRoZSBmb3JtIChTb3VyY2VGaWxlLCBUcnVlKSBmb3IgcGF0aHMKQEAgLTMwNiwx
NzAgKzE2NCwxMjcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAgICAgdW51c3VhbCBB
UEkgaXMgZGVzaWduZWQgYXMgYW4gb3B0aW1pc3RhaW9uIG1lYW5pbmcgdGhhdCBTb3VyY2VGaWxl
IGl0ZW1zIG5lZWQgbm90IGJlCiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFy
ZSBub3QgdXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAg
ICAgICAgIHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVz
IGZyb20gdGhlIG1hbmlmZXN0LiIiIgotICAgICAgICBhbGxfcmVmdGVzdF9ub2RlcyA9IFtdICAj
IHR5cGU6IExpc3RbVHVwbGVbTWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAgICAgc2Vlbl9maWxl
cyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgICAgIGNoYW5nZWQgPSBGYWxzZQot
ICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2Fs
IHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCiAgICAg
ICAgICMgYXR0cmlidXRlIGFjY2VzcyBpbiB0aGUgaG90IGxvb3AgYmVsb3cKLSAgICAgICAgcGF0
aF9oYXNoID0gc2VsZi5fcGF0aF9oYXNoICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwg
VGV4dF1dCiAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhCiAKLSAgICAgICAgcHJldl9maWxlcyA9
IGRhdGEucGF0aHMoKSAgIyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgdHlwZXMgPSBkYXRhLnR5
cGVfYnlfcGF0aCgpCisgICAgICAgIGRlbGV0ZWQgPSBzZXQodHlwZXMpCiAKLSAgICAgICAgcmVm
dGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorICAgICAgICB0b191cGRh
dGUgPSBbXQogCi0gICAgICAgIGZvciBzb3VyY2VfZmlsZSwgdXBkYXRlIGluIHRyZWU6CisgICAg
ICAgIGZvciBzb3VyY2VfZmlsZV9vcl9wYXRoLCB1cGRhdGUgaW4gdHJlZToKICAgICAgICAgICAg
IGlmIG5vdCB1cGRhdGU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNl
X2ZpbGUsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlICAjIHR5cGU6IFRleHQKLSAgICAgICAgICAgICAgICBzZWVuX2ZpbGVz
LmFkZChyZWxfcGF0aCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVsX3BhdGggaW4gcGF0aF9o
YXNoCi0gICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9w
YXRoXSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBUZXh0XQotICAgICAgICAgICAgICAgIGlmIG9sZF90
eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW1z
ID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdICAjIHR5cGU6IEl0ZXJhYmxlW01hbmlmZXN0SXRl
bV0KLSAgICAgICAgICAgICAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMuZXh0ZW5kKChpdGVtLCBv
bGRfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5
cGUpKQorICAgICAgICAgICAgICAgIHBhdGggPSBlbnN1cmVfdGV4dChzb3VyY2VfZmlsZV9vcl9w
YXRoKQorICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHR1cGxlKHBhdGguc3BsaXQob3Mu
cGF0aC5zZXApKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5v
dCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCBieXRlcykKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlLnJlbF9wYXRoCi0gICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQo
cmVsX3BhdGgpCi0KLSAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNo
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc291
cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKQorICAgICAgICAgICAg
ICAgIHNvdXJjZV9maWxlID0gc291cmNlX2ZpbGVfb3JfcGF0aAorICAgICAgICAgICAgICAgIHJl
bF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3BhdGhfcGFydHMKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZWxfcGF0aF9wYXJ0cywgdHVwbGUpCiAKLSAgICAgICAgICAg
ICAgICBpc19uZXcgPSByZWxfcGF0aCBub3QgaW4gcGF0aF9oYXNoICAjIHR5cGU6IGJvb2wKKyAg
ICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aF9wYXJ0cyBub3QgaW4gZGVsZXRlZCAgIyB0
eXBlOiBib29sCiAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gRmFsc2UgICMgdHlwZTog
Ym9vbAogCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAgICAgICAgICAgICAg
ICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkLnJlbW92ZShyZWxfcGF0aF9wYXJ0cykKKyAgICAgICAgICAgICAgICAg
ICAgb2xkX3R5cGUgPSB0eXBlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAgICAgICAgICAgICAg
b2xkX2hhc2ggPSBkYXRhW29sZF90eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFydHNdCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMgdHlwZTogVGV4dAog
ICAgICAgICAgICAgICAgICAgICBpZiBvbGRfaGFzaCAhPSBmaWxlX2hhc2g6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2NoYW5nZWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSAhPSBvbGRfdHlwZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAg
ICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3R5cGUg
PSBvbGRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVz
dF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtcyA9IGRh
dGFbb2xkX3R5cGVdW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0
X2l0ZW1zKCkKLQotICAgICAgICAgICAgICAgIGlmIG5ld190eXBlIGluIHJlZnRlc3RfdHlwZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRlbSwgZmls
ZV9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVzdF9pdGVtcykKLSAgICAgICAgICAgICAgICAgICAg
aWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRl
c3RfY2hhbmdlcyA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzX25ldyBvciBoYXNoX2No
YW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3JlbF9wYXRoXSA9IHNl
dChtYW5pZmVzdF9pdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW29sZF90
eXBlXVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICAgICAgICAgIGlmIGlzX25ldyBvciBoYXNo
X2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfaGFzaFtyZWxfcGF0aF0gPSAoZmls
ZV9oYXNoLCBuZXdfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKKyAg
ICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLmFwcGVuZChzb3VyY2VfZmlsZSkKKworICAgICAg
ICBpZiB0b191cGRhdGU6CisgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQorCisgICAgICAgIGlm
IHBhcmFsbGVsIGFuZCBsZW4odG9fdXBkYXRlKSA+IDI1IGFuZCBjcHVfY291bnQoKSA+IDE6Cisg
ICAgICAgICAgICAjIDI1IGRlcml2ZWQgZXhwZXJpbWVudGFsbHkgKDIwMjAtMDEpIHRvIGJlIGFw
cHJveGltYXRlbHkKKyAgICAgICAgICAgICMgdGhlIHBvaW50IGF0IHdoaWNoIGl0IGlzIHF1aWNr
ZXIgdG8gY3JlYXRlIFBvb2wgYW5kCisgICAgICAgICAgICAjIHBhcmFsbGVsaXplIHRoaXMKKyAg
ICAgICAgICAgIHBvb2wgPSBQb29sKCkKKworICAgICAgICAgICAgIyBjaHVua3NpemUgc2V0ID4g
MSB3aGVuIG1vcmUgdGhhbiAxMDAwMCB0ZXN0cywgYmVjYXVzZQorICAgICAgICAgICAgIyBjaHVu
a2luZyBpcyBhIG5ldC1nYWluIG9uY2Ugd2UgZ2V0IHRvIHZlcnkgbGFyZ2UgbnVtYmVycworICAg
ICAgICAgICAgIyBvZiBpdGVtcyAoYWdhaW4sIGV4cGVyaW1lbnRhbGx5LCAyMDIwLTAxKQorICAg
ICAgICAgICAgcmVzdWx0cyA9IHBvb2wuaW1hcF91bm9yZGVyZWQoY29tcHV0ZV9tYW5pZmVzdF9p
dGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3VwZGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rc2l6ZT1t
YXgoMSwgbGVuKHRvX3VwZGF0ZSkgLy8gMTAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApICAjIHR5cGU6IEl0ZXJhdG9yW1R1cGxlW1R1cGxlW1RleHQsIC4u
Ll0sIFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dLCBUZXh0XV0KKyAgICAgICAgZWxpZiBQWTM6Cisg
ICAgICAgICAgICByZXN1bHRzID0gbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsIHRvX3VwZGF0
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBpdGVydG9vbHMuaW1hcChj
b21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCisKKyAgICAgICAgZm9yIHJlc3VsdCBp
biByZXN1bHRzOgorICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVz
dF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0CisgICAgICAgICAgICBkYXRhW25ld190eXBlXVty
ZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9pdGVtcworICAgICAgICAgICAgZGF0YVtuZXdfdHlw
ZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9IGZpbGVfaGFzaAogCi0gICAgICAgIGRlbGV0ZWQg
PSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcwogICAgICAgICBpZiBkZWxldGVkOgogICAgICAgICAg
ICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgIGZvciByZWxfcGF0aCBpbiBkZWxldGVkOgot
ICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKLSAgICAgICAgICAgICAg
ICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGRlbCBwYXRoX2hh
c2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gaXRlcnZh
bHVlcyhkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHRlc3Rf
ZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRo
XQotCi0gICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKLSAgICAgICAgICAgIHJlZnRlc3RzLCBy
ZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVfcmVmdGVzdHMoYWxs
X3JlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBkYXRhWyJyZWZ0ZXN0
Il0KLSAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3IgcGF0
aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZ
OgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBjYXN0KFNldFtNYW5p
ZmVzdEl0ZW1dLCBpdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcwotCi0gICAgICAgICAgICByZWZ0ZXN0X25v
ZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCi0gICAgICAgICAgICByZWZ0ZXN0X25vZGVf
ZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2RlX2l0ZW1zIGluIGl0
ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZOgotICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gY2FzdChTZXRbTWFu
aWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9kZV9pdGVtcwotCi0g
ICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVzKQorICAgICAgICAgICAg
Zm9yIHJlbF9wYXRoX3BhcnRzIGluIGRlbGV0ZWQ6CisgICAgICAgICAgICAgICAgZm9yIHRlc3Rf
ZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0
aF9wYXJ0cyBpbiB0ZXN0X2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9k
YXRhW3JlbF9wYXRoX3BhcnRzXQogCiAgICAgICAgIHJldHVybiBjaGFuZ2VkCiAKLSAgICBkZWYg
X2NvbXB1dGVfcmVmdGVzdHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVz
dF9ub2RlcyAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikgLT4gVHVwbGVbRGlj
dFtUZXh0LCBTZXRbUmVmVGVzdF1dLCBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dLCBEaWN0
W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXV0KLSAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19i
eV91cmwgPSB7fQotICAgICAgICBoYXNfaW5ib3VuZCA9IHNldCgpCi0gICAgICAgIGZvciBpdGVt
LCBfIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgZm9yIHJlZl91cmwsIHJlZl90
eXBlIGluIGl0ZW0ucmVmZXJlbmNlczoKLSAgICAgICAgICAgICAgICBoYXNfaW5ib3VuZC5hZGQo
cmVmX3VybCkKLQotICAgICAgICByZWZ0ZXN0cyA9IGRlZmF1bHRkaWN0KHNldCkgICMgdHlwZTog
RGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dCi0gICAgICAgIHJlZmVyZW5jZXMgPSBkZWZhdWx0ZGlj
dChzZXQpICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0KLSAgICAgICAgY2hh
bmdlZF9oYXNoZXMgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXQot
Ci0gICAgICAgIGZvciBpdGVtLCBmaWxlX2hhc2ggaW4gcmVmdGVzdF9ub2RlczoKLSAgICAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0gICAg
ICAgICAgICBpZiBpdGVtLnVybCBpbiBoYXNfaW5ib3VuZDoKLSAgICAgICAgICAgICAgICAjIFRo
aXMgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3QpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19SZWZUZXN0Tm9kZSgp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9o
YXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3ROb2RlKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5wYXRoXS5hZGQoaXRl
bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0Tm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRvX1JlZlRl
c3QoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZp
bGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0KQotICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0aF0uYWRkKGl0ZW0p
Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRl
c3QpKQotICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxbaXRlbS51cmxdID0g
aXRlbQotCi0gICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywgY2hhbmdlZF9oYXNo
ZXMKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3Rb
VGV4dCwgQW55XQorICAgIGRlZiB0b19qc29uKHNlbGYsIGNhbGxlcl9vd25zX29iaj1UcnVlKToK
KyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgICIiIkR1
bXAgYSBtYW5pZmVzdCBpbnRvIGEgb2JqZWN0IHdoaWNoIGNhbiBiZSBzZXJpYWxpemVkIGFzIEpT
T04KKworICAgICAgICBJZiBjYWxsZXJfb3duc19vYmogaXMgRmFsc2UsIHRoZW4gdGhlIHJldHVy
biB2YWx1ZSByZW1haW5zCisgICAgICAgIG93bmVkIGJ5IHRoZSBtYW5pZmVzdDsgaXQgaXMgX3Zp
dGFsbHkgaW1wb3J0YW50XyB0aGF0IF9ub18KKyAgICAgICAgKGV2ZW4gcmVhZCkgb3BlcmF0aW9u
IGlzIGRvbmUgb24gdGhlIG1hbmlmZXN0LCBhcyBvdGhlcndpc2UKKyAgICAgICAgb2JqZWN0cyB3
aXRoaW4gdGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQgdGhlIHJldHVybiB2YWx1ZSBjYW4KKyAg
ICAgICAgYmUgbXV0YXRlZC4gVGhpcyBlc3NlbnRpYWxseSBtYWtlcyB0aGlzIG1vZGUgdmVyeSBk
YW5nZXJvdXMKKyAgICAgICAgYW5kIG9ubHkgdG8gYmUgdXNlZCB1bmRlciBleHRyZW1lIGNhcmUu
CisKKyAgICAgICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3Rf
dHlwZTogdHlwZV9wYXRocy50b19qc29uKCkKICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5
cGVfcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKICAgICAgICAg
fQorCisgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKKyAgICAgICAgICAgIG91dF9pdGVtcyA9
IGRlZXBjb3B5KG91dF9pdGVtcykKKwogICAgICAgICBydiA9IHsidXJsX2Jhc2UiOiBzZWxmLnVy
bF9iYXNlLAotICAgICAgICAgICAgICAicGF0aHMiOiB7ZnJvbV9vc19wYXRoKGspOiB2IGZvciBr
LCB2IGluIGl0ZXJpdGVtcyhzZWxmLl9wYXRoX2hhc2gpfSwKICAgICAgICAgICAgICAgIml0ZW1z
Ijogb3V0X2l0ZW1zLAogICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJFTlRfVkVSU0lPTn0g
ICMgdHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9u
ZSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250
YWluZXJbVGV4dF1dKSAtPiBNYW5pZmVzdAorICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19y
b290LCBvYmosIHR5cGVzPU5vbmUsIGNhbGxlZV9vd25zX29iaj1GYWxzZSk6CisgICAgICAgICMg
dHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250YWluZXJbVGV4dF1dLCBi
b29sKSAtPiBNYW5pZmVzdAorICAgICAgICAiIiJMb2FkIGEgbWFuaWZlc3QgZnJvbSBhIEpTT04g
b2JqZWN0CisKKyAgICAgICAgVGhpcyBsb2FkcyBhIG1hbmlmZXN0IGZvciBhIGdpdmVuIGxvY2Fs
IHRlc3Rfcm9vdCBwYXRoIGZyb20gYW4KKyAgICAgICAgb2JqZWN0IG9iaiwgcG90ZW50aWFsbHkg
cGFydGlhbGx5IGxvYWRpbmcgaXQgdG8gb25seSBsb2FkIHRoZQorICAgICAgICB0eXBlcyBnaXZl
biBieSB0eXBlcy4KKworICAgICAgICBJZiBjYWxsZWVfb3duc19vYmogaXMgVHJ1ZSwgdGhlbiBv
d25lcnNoaXAgb2Ygb2JqIHRyYW5zZmVycworICAgICAgICB0byB0aGlzIGZ1bmN0aW9uIHdoZW4g
Y2FsbGVkLCBhbmQgdGhlIGNhbGxlciBtdXN0IG5ldmVyIG11dGF0ZQorICAgICAgICB0aGUgb2Jq
IG9yIGFueXRoaW5nIHJlZmVycmVkIHRvIGluIHRoZSBvYmplY3QgZ3JhcGggcm9vdGVkIGF0Cisg
ICAgICAgIG9iai4KKworICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9IG9iai5nZXQoInZl
cnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTjoKICAgICAgICAg
ICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKICAgICAgICAgc2VsZiA9IGNscyh0
ZXN0c19yb290LCB1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikpCi0gICAgICAgIGlm
IG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIikgYW5kIGhhc2F0dHIob2JqLCAicGF0aHMiKToKKyAg
ICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKToKICAgICAgICAgICAgIHJhaXNlIE1h
bmlmZXN0RXJyb3IKIAotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7dG9fb3NfcGF0aChrKTog
diBmb3IgaywgdiBpbiBpdGVyaXRlbXMob2JqWyJwYXRocyJdKX0KLQogICAgICAgICBmb3IgdGVz
dF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0pOgogICAgICAgICAg
ICAgaWYgdGVzdF90eXBlIG5vdCBpbiBpdGVtX2NsYXNzZXM6CiAgICAgICAgICAgICAgICAgcmFp
c2UgTWFuaWZlc3RFcnJvcgpAQCAtNDc3LDcgKzI5MiwxMCBAQCBjbGFzcyBNYW5pZmVzdChvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgdHlwZXMgYW5kIHRlc3RfdHlwZSBub3QgaW4gdHlwZXM6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2VsZi5fZGF0YVt0ZXN0X3R5
cGVdLnNldF9qc29uKHRlc3RzX3Jvb3QsIHR5cGVfcGF0aHMpCisgICAgICAgICAgICBpZiBub3Qg
Y2FsbGVlX293bnNfb2JqOgorICAgICAgICAgICAgICAgIHR5cGVfcGF0aHMgPSBkZWVwY29weSh0
eXBlX3BhdGhzKQorCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24o
dHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC01MTEsMTAgKzMyOSwxMSBA
QCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0ICVzIiAlIG1hbmlm
ZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyYiIp
IGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLm9wZW4obWFuaWZlc3QsICJyIiwgZW5jb2Rpbmc9
InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBydiA9IE1hbmlmZXN0LmZyb21fanNvbih0
ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rf
anNvbi5sb2FkKGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVz
PXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9v
d25zX29iaj1UcnVlKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTIzLDcgKzM0Miw4IEBAIGRl
ZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgIGVsc2U6CiAgICAgICAgIHJ2ID0g
TWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVfb3duc19v
Ymo9VHJ1ZSkKIAogICAgIGlmIGFsbG93X2NhY2hlZDoKICAgICAgICAgX19sb2FkX2NhY2hlW21h
bmlmZXN0X3BhdGhdID0gcnYKQEAgLTU0MCw3ICszNjAsOCBAQCBkZWYgbG9hZF9hbmRfdXBkYXRl
KHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdf
Y29weT1UcnVlLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAgIHR5cGVzPU5vbmUs
ICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KICAgICAgICAgICAgICAgICAgICAg
d3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAotICAgICAgICAgICAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIGFsbG93
X2NhY2hlZD1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVs
PVRydWUgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICApOgogICAgICMgdHlwZTog
KC4uLikgLT4gTWFuaWZlc3QKICAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkKQEAgLTU2OCw3ICsz
ODksNyBAQCBkZWYgbG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAg
ICAgaWYgcmVidWlsZCBvciB1cGRhdGU6CiAgICAgICAgIHRyZWUgPSB2Y3MuZ2V0X3RyZWUodGVz
dHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNhY2hlX3Jvb3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAgICAgICBjaGFuZ2Vk
ID0gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgICAgIGNoYW5nZWQgPSBtYW5pZmVzdC51cGRh
dGUodHJlZSwgcGFyYWxsZWwpCiAgICAgICAgIGlmIHdyaXRlX21hbmlmZXN0IGFuZCBjaGFuZ2Vk
OgogICAgICAgICAgICAgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpCiAgICAgICAgIHRy
ZWUuZHVtcF9jYWNoZXMoKQpAQCAtNTgxLDkgKzQwMiw5IEBAIGRlZiB3cml0ZShtYW5pZmVzdCwg
bWFuaWZlc3RfcGF0aCk6CiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUobWFuaWZlc3Rf
cGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgogICAgICAgICBvcy5t
YWtlZGlycyhkaXJfbmFtZSkKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgIndiIikgYXMg
ZjoKKyAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInciKSBhcyBmOgogICAgICAgICAjIFVz
ZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRy
YWlsaW5nCiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJh
cnkvanNvbi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNv
bigpLCBmLAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxsZXJfb3duc19v
Ymo9VHJ1ZSksIGYsCiAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTEs
IHNlcGFyYXRvcnM9KCcsJywgJzogJykpCiAgICAgICAgIGYud3JpdGUoIlxuIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQppbmRleCBiOWRjYzhmNTM2MzZk
M2RiODBlNDUxOGY3ZDgzODAyN2YwOThhOGQ3Li4yOTlhZDIxMmY3NjgwZTc1MTc1MDU2NjdjNmUw
OWJkNjBlZDBiN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2Vm
aWxlLnB5CkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHJlCiBpbXBvcnQg
b3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIFBZMworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBlbnN1cmVfdGV4dCwgaXRl
cml0ZW1zLCB0ZXh0X3R5cGUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTMzLDcgKzMzLDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogaW1wb3J0IGh0bWw1bGliCiAKIGZyb20gLiBpbXBvcnQgWE1MUGFy
c2VyCi1mcm9tIC5pdGVtIGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBXZWJEcml2
ZXJTcGVjVGVzdCwgUmVmVGVzdE5vZGUsIFRlc3RoYXJuZXNzVGVzdCwKK2Zyb20gLml0ZW0gaW1w
b3J0IChNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBSZWZUZXN0
LCBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIENyYXNo
VGVzdCwgQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgVmlzdWFsVGVzdCkKIGZyb20gLnV0aWxzIGlt
cG9ydCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hlZF9wcm9wZXJ0eQogCkBAIC01Niw5ICs1
Niw5IEBAIGRlZiByZXBsYWNlX2VuZChzLCBvbGQsIG5ldyk6CiAKIAogZGVmIHJlYWRfc2NyaXB0
X21ldGFkYXRhKGYsIHJlZ2V4cCk6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8sIFBhdHRlcm5bYnl0
ZXNdKSAtPiBJdGVyYWJsZVtUdXBsZVtieXRlcywgYnl0ZXNdXQorICAgICMgdHlwZTogKEJpbmFy
eUlPLCBQYXR0ZXJuW2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbVGV4dCwgVGV4dF1dCiAgICAg
IiIiCi0gICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0cmluZ3MpIGZyb20g
dGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAorICAgIFlpZWxkcyBhbnkgbWV0YWRhdGEgKHBhaXJz
IG9mIHN0cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAogICAgIGFzIHNwZWNp
ZmllZCBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCiAKICAgICBgcmVnZXhwYCAtIFJl
Z2V4cCBjb250YWluaW5nIHR3byBncm91cHMgY29udGFpbmluZyB0aGUgbWV0YWRhdGEgbmFtZSBh
bmQKQEAgLTcwLDI3ICs3MCwyNSBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhw
KToKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHlpZWxk
IChtLmdyb3VwcygpWzBdLCBtLmdyb3VwcygpWzFdKQorICAgICAgICB5aWVsZCAobS5ncm91cHMo
KVswXS5kZWNvZGUoInV0ZjgiKSwgbS5ncm91cHMoKVsxXS5kZWNvZGUoInV0ZjgiKSkKIAogCiBf
YW55X3ZhcmlhbnRzID0gewotICAgIGIiZGVmYXVsdCI6IHsibG9uZ2hhbmQiOiB7YiJ3aW5kb3ci
LCBiImRlZGljYXRlZHdvcmtlciJ9fSwKLSAgICBiIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnku
aHRtbCJ9LAotICAgIGIic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKLSAg
ICBiInNoYXJlZHdvcmtlciI6IHt9LAotICAgIGIiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgi
OiAiLmFueS53b3JrZXIuaHRtbCJ9LAotICAgIGIid29ya2VyIjogeyJsb25naGFuZCI6IHtiImRl
ZGljYXRlZHdvcmtlciIsIGIic2hhcmVkd29ya2VyIiwgYiJzZXJ2aWNld29ya2VyIn19LAotICAg
IGIianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKLX0gICMgdHlwZTogRGljdFtieXRl
cywgRGljdFtzdHIsIEFueV1dCisgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAorICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzaGFy
ZWR3b3JrZXIiOiB7fSwKKyAgICAiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53
b3JrZXIuaHRtbCJ9LAorICAgICJ3b3JrZXIiOiB7ImxvbmdoYW5kIjogeyJkZWRpY2F0ZWR3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIifX0sCisgICAgImpzc2hlbGwiOiB7
InN1ZmZpeCI6ICIuYW55LmpzIn0sCit9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGljdFtUZXh0LCBB
bnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgotICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIi
Ci0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkg
dGhlIGdpdmVuIGtleXdvcmQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5n
cykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCBiaW5hcnlfdHlwZSksIGl0ZW0KLSAgICBhc3NlcnQgbm90IGl0ZW0uc3Rh
cnRzd2l0aChiIiEiKSwgaXRlbQorICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlw
ZSksIGl0ZW0KIAogICAgIHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzLmdldChpdGVtLCBOb25lKQog
ICAgIGlmIHZhcmlhbnQgaXMgTm9uZToKQEAgLTEwMCw0OCArOTgsNDYgQEAgZGVmIGdldF9hbnlf
dmFyaWFudHMoaXRlbSk6CiAKIAogZGVmIGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpOgotICAg
ICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCiAg
ICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIHRoYXQg
d2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAo
c3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KICAgICAiIiIKLSAgICByZXR1
cm4gc2V0KF9hbnlfdmFyaWFudHNbYiJkZWZhdWx0Il1bImxvbmdoYW5kIl0pCisgICAgcmV0dXJu
IHNldCh7IndpbmRvdyIsICJkZWRpY2F0ZWR3b3JrZXIifSkKIAogCiBkZWYgcGFyc2VfdmFyaWFu
dHModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBl
OiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJp
YW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgYSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCisg
ICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5ncykgZGVmaW5lZCBieSBhIGNvbW1h
LXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwg
YmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5
cGUpLCB2YWx1ZQogCi0gICAgZ2xvYmFscyA9IGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpCisg
ICAgaWYgdmFsdWUgPT0gIiI6CisgICAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFu
dHMoKQogCi0gICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIik6CisgICAgZ2xvYmFscyA9
IHNldCgpCisgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoIiwiKToKICAgICAgICAgaXRlbSA9
IGl0ZW0uc3RyaXAoKQotICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoYiIhIik6Ci0gICAgICAg
ICAgICBnbG9iYWxzIC09IGdldF9hbnlfdmFyaWFudHMoaXRlbVsxOl0pCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKLQorICAgICAg
ICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKICAgICByZXR1cm4gZ2xvYmFscwog
CiAKIGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBT
ZXRbVHVwbGVbYnl0ZXMsIGJvb2xdXQorICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtUdXBsZVtU
ZXh0LCBib29sXV0KICAgICAiIiIKICAgICBZaWVsZHMgdHVwbGVzIG9mIHRoZSByZWxldmFudCBm
aWxlbmFtZSBzdWZmaXggKGEgc3RyaW5nKSBhbmQgd2hldGhlciB0aGUKICAgICB2YXJpYW50IGlz
IGludGVuZGVkIHRvIHJ1biBpbiBhIEpTIHNoZWxsLCBmb3IgdGhlIHZhcmlhbnRzIGRlZmluZWQg
YnkgdGhlCiAgICAgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAgIGFz
c2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlz
aW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKICAg
ICBnbG9iYWxfdHlwZXMgPSBwYXJzZV92YXJpYW50cyh2YWx1ZSkKICAgICBmb3IgZ2xvYmFsX3R5
cGUgaW4gZ2xvYmFsX3R5cGVzOgogICAgICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50c1tnbG9i
YWxfdHlwZV0KLSAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZpeCIsICIuYW55LiVz
Lmh0bWwiICUgZ2xvYmFsX3R5cGUuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICBydi5hZGQoKHN1
ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gYiJqc3NoZWxsIikpCisgICAgICAgIHN1ZmZpeCA9IHZhcmlh
bnQuZ2V0KCJzdWZmaXgiLCAiLmFueS4lcy5odG1sIiAlIGdsb2JhbF90eXBlKQorICAgICAgICBy
di5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gImpzc2hlbGwiKSkKIAogICAgIHJldHVybiBy
dgogCkBAIC0xNTYsNiArMTUyLDggQEAgZGVmIGdsb2JhbF92YXJpYW50X3VybCh1cmwsIHN1ZmZp
eCk6CiAgICAgIyB0aGUgZm9ybSAuaHR0cHMuYW55LmpzCiAgICAgaWYgIi5odHRwcy4iIGluIHVy
bCBhbmQgc3VmZml4LnN0YXJ0c3dpdGgoIi5odHRwcy4iKToKICAgICAgICAgdXJsID0gdXJsLnJl
cGxhY2UoIi5odHRwcy4iLCAiLiIpCisgICAgZWxpZiAiLmgyLiIgaW4gdXJsIGFuZCBzdWZmaXgu
c3RhcnRzd2l0aCgiLmgyLiIpOgorICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgiLmgyLiIsICIu
IikKICAgICByZXR1cm4gcmVwbGFjZV9lbmQodXJsLCAiLmpzIiwgc3VmZml4KQogCiAKQEAgLTE5
MiwyNCArMTkwLDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMgdHlwZTogU2V0W1R1cGxlW2J5dGVzLCAuLi5d
XQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFz
ZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToKLSAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBB
bnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoX3N0ciwgdXJsX2Jhc2Us
IGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKEFueVN0ciwgQW55
U3RyLCBUZXh0LCBPcHRpb25hbFtUZXh0XSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCiAgICAg
ICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291cmNlIHRyZWUuCiAKICAg
ICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlCi0gICAgICAgIDpwYXJhbSByZWxfcGF0aDogRmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRlc3Rz
X3Jvb3QKKyAgICAgICAgOnBhcmFtIHJlbF9wYXRoX3N0cjogRmlsZSBwYXRoIHJlbGF0aXZlIHRv
IHRlc3RzX3Jvb3QKICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIFVSTCB1c2VkIHdoZW4g
Y29udmVydGluZyBmaWxlIHBhdGhzIHRvIHVybHMKICAgICAgICAgOnBhcmFtIGNvbnRlbnRzOiBC
eXRlIGFycmF5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBgYE5vbmVgYC4KICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcmVsX3BhdGggPSBlbnN1cmVfdGV4dChyZWxfcGF0aF9zdHIpCiAg
ICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5pc2FicyhyZWxfcGF0aCksIHJlbF9wYXRoCi0KICAg
ICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgIyBkbyBzbGFzaCBub3JtYWxp
emF0aW9uIG9uIFdpbmRvd3MKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVsX3BhdGgsIGJp
bmFyeV90eXBlKToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHJlbF9wYXRoLnJlcGxhY2Uo
YiIvIiwgYiJcXCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlbF9wYXRo
ID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKKyAgICAgICAgICAgIHJlbF9wYXRoID0g
cmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAogICAgICAgICBkaXJfcGF0aCwgZmlsZW5h
bWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQogICAgICAgICBuYW1lLCBleHQgPSBvcy5wYXRo
LnNwbGl0ZXh0KGZpbGVuYW1lKQpAQCAtMjIwLDEzICsyMTUsMTMgQEAgY2xhc3MgU291cmNlRmls
ZShvYmplY3QpOgogCiAgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0KCIuIilbMTpdCiAK
LSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdCAgIyB0eXBlOiBVbmlvbltieXRl
cywgVGV4dF0KLSAgICAgICAgc2VsZi5yZWxfcGF0aCA9IHJlbF9wYXRoICAjIHR5cGU6IFVuaW9u
W2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmRpcl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTog
VW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0
eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBl
OiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVW5p
b25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5
cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0XV0KKyAgICAgICAgc2VsZi50ZXN0c19yb290
ID0gZW5zdXJlX3RleHQodGVzdHNfcm9vdCkgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnJl
bF9wYXRoID0gcmVsX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmRpcl9wYXRoID0g
ZGlyX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUg
ICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5cGU6IFRleHQKKyAg
ICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnR5cGVfZmxh
ZyA9IHR5cGVfZmxhZyAgIyB0eXBlOiBPcHRpb25hbFtUZXh0XQogICAgICAgICBzZWxmLm1ldGFf
ZmxhZ3MgPSBtZXRhX2ZsYWdzICAjIHR5cGU6IFVuaW9uW0xpc3RbYnl0ZXNdLCBMaXN0W1RleHRd
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKICAgICAgICAgc2VsZi5jb250ZW50
cyA9IGNvbnRlbnRzCkBAIC0yNDAsOSArMjM1LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogCiAgICAgICAgIGlmICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHJ2OgogICAgICAgICAg
ICAgY2FjaGVkX3Byb3BlcnRpZXMgPSBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KLSAgICAg
ICAgICAgIGZvciBrZXkgaW4gcnYua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBj
YWNoZWRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHJ2W2tleV0KKyAgICAg
ICAgICAgIHJ2ID0ge2tleTp2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMocnYpIGlm
IGtleSBub3QgaW4gY2FjaGVkX3Byb3BlcnRpZXN9CiAgICAgICAgICAgICBkZWwgcnZbIl9fY2Fj
aGVkX3Byb3BlcnRpZXNfXyJdCiAgICAgICAgIHJldHVybiBydgogCkBAIC0yNzksOSArMjcyLDE0
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgIGZpbGVfb2JqID0gb3Bl
bihzZWxmLnBhdGgsICdyYicpCiAgICAgICAgIHJldHVybiBmaWxlX29iagogCisgICAgQGNhY2hl
ZF9wcm9wZXJ0eQorICAgIGRlZiByZWxfcGF0aF9wYXJ0cyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLnJlbF9w
YXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKwogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYg
cGF0aChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBVbmlvbltieXRlcywgVGV4dF0KKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2Vs
Zi50ZXN0c19yb290LCBzZWxmLnJlbF9wYXRoKQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQpAQCAt
Mjk3LDE3ICsyOTUsMTMgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hl
ZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IGJ5
dGVzCisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBpZiBub3Qgc2VsZi5faGFz
aDoKICAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKCkgYXMgZjoKICAgICAgICAgICAgICAgICBj
b250ZW50ID0gZi5yZWFkKCkKIAogICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKChiImJsb2Ig
IiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKLSAgICAgICAgICAgIGhh
c2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5cGU6IHN0cgotICAg
ICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoX3N0ci5l
bmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
aGFzaCA9IGhhc2hfc3RyCisgICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hs
aWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSkKIAogICAgICAgICByZXR1cm4gc2VsZi5faGFzaAog
CkBAIC0zMTYsMTggKzMxMCwxNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
IGlmIHNlbGYuZGlyX3BhdGggPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAg
ICAgIHBhcnRzID0gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgcGFy
dHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCiAKICAgICAgICAgaWYgKHBhcnRzWzBdIGluIHNlbGYu
cm9vdF9kaXJfbm9uX3Rlc3Qgb3IKICAgICAgICAgICAgIGFueShpdGVtIGluIHNlbGYuZGlyX25v
bl90ZXN0IGZvciBpdGVtIGluIHBhcnRzKSBvcgotICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4o
cGF0aCldID09IGxpc3QocGF0aCkgZm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0aF9ub25fdGVzdCkp
OgorICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4ocGF0aCldID09IHBhdGggZm9yIHBhdGggaW4g
c2VsZi5kaXJfcGF0aF9ub25fdGVzdCkpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaW5fY29uZm9ybWFuY2VfY2hlY2tlcl9kaXIoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICByZXR1cm4gKHNlbGYuZGly
X3BhdGggPT0gImNvbmZvcm1hbmNlLWNoZWNrZXJzIiBvcgotICAgICAgICAgICAgICAgIHNlbGYu
ZGlyX3BhdGguc3RhcnRzd2l0aCgiY29uZm9ybWFuY2UtY2hlY2tlcnMiICsgb3MucGF0aC5zZXAp
KQorICAgICAgICByZXR1cm4gc2VsZi5yZWxfcGF0aF9wYXJ0c1swXSA9PSAiY29uZm9ybWFuY2Ut
Y2hlY2tlcnMiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19ub25fdGVzdChzZWxm
KToKQEAgLTMzOSw2ICszMzIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9PSAiTUVUQS55bWwiIG9yCiAgICAgICAgICAgICAgICAg
c2VsZi5maWxlbmFtZS5zdGFydHN3aXRoKCIuIikgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZp
bGVuYW1lLmVuZHN3aXRoKCIuaGVhZGVycyIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi5maWxl
bmFtZS5lbmRzd2l0aCgiLmluaSIpIG9yCiAgICAgICAgICAgICAgICAgc2VsZi5pbl9ub25fdGVz
dF9kaXIoKSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzk0LDEwICszODgsMTAgQEAgY2xhc3MgU291
cmNlRmlsZShvYmplY3QpOgogICAgICAgICBiZSBhIHdlYmRyaXZlciBzcGVjIHRlc3QgZmlsZSIi
IgogICAgICAgICAjIHdkc3BlYyB0ZXN0cyBhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3dlYmRy
aXZlciBleGNsdWRpbmcgX19pbml0X18ucHkKICAgICAgICAgIyBmaWxlcy4KLSAgICAgICAgcmVs
X2Rpcl90cmVlID0gc2VsZi5yZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgICAgICAgcmV0
dXJuICgoKHJlbF9kaXJfdHJlZVswXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVuKHJlbF9kaXJfdHJl
ZSkgPiAxKSBvcgotICAgICAgICAgICAgICAgICAocmVsX2Rpcl90cmVlWzoyXSA9PSBbImluZnJh
c3RydWN0dXJlIiwgIndlYmRyaXZlciJdIGFuZAotICAgICAgICAgICAgICAgICAgbGVuKHJlbF9k
aXJfdHJlZSkgPiAyKSkgYW5kCisgICAgICAgIHJlbF9wYXRoX3BhcnRzID0gc2VsZi5yZWxfcGF0
aF9wYXJ0cworICAgICAgICByZXR1cm4gKCgocmVsX3BhdGhfcGFydHNbMF0gPT0gIndlYmRyaXZl
ciIgYW5kIGxlbihyZWxfcGF0aF9wYXJ0cykgPiAxKSBvcgorICAgICAgICAgICAgICAgICAocmVs
X3BhdGhfcGFydHNbOjJdID09ICgiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJpdmVyIikgYW5kCisg
ICAgICAgICAgICAgICAgICBsZW4ocmVsX3BhdGhfcGFydHMpID4gMikpIGFuZAogICAgICAgICAg
ICAgICAgIHNlbGYuZmlsZW5hbWUgbm90IGluICgiX19pbml0X18ucHkiLCAiY29uZnRlc3QucHki
KSBhbmQKICAgICAgICAgICAgICAgICBmbm1hdGNoKHNlbGYuZmlsZW5hbWUsIHdkX3BhdHRlcm4p
KQogCkBAIC00MTMsNiArNDA3LDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfZmxhZyA9PSAi
Y3Jhc2giIG9yICJjcmFzaHRlc3RzIiBpbiBzZWxmLmRpcl9wYXRoLnNwbGl0KG9zLnBhdGguc2Vw
KQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWVfaXNfdGVudGF0aXZlKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0byBiZSBhCisgICAgICAgIHRl
bnRhdGl2ZSBmaWxlLgorCisgICAgICAgIFNlZSBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5v
cmcvd3JpdGluZy10ZXN0cy9maWxlLW5hbWVzLmh0bWwjdGVzdC1mZWF0dXJlcyIiIgorICAgICAg
ICByZXR1cm4gInRlbnRhdGl2ZSIgaW4gc2VsZi5tZXRhX2ZsYWdzCisKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgbWFya3VwX3R5cGUoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9u
YWxbVGV4dF0KQEAgLTQ2NSw3ICs0NjgsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAK
ICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNjcmlwdF9tZXRhZGF0YShzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW2J5dGVzLCBieXRlc11dXQor
ICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQog
ICAgICAgICBpZiBzZWxmLm5hbWVfaXNfd29ya2VyIG9yIHNlbGYubmFtZV9pc19tdWx0aV9nbG9i
YWwgb3Igc2VsZi5uYW1lX2lzX3dpbmRvdzoKICAgICAgICAgICAgIHJlZ2V4cCA9IGpzX21ldGFf
cmUKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfd2ViZHJpdmVyOgpAQCAtNDgyLDcgKzQ4NSw3
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgIiIiVGhlIHRpbWVvdXQgb2Yg
YSB0ZXN0IG9yIHJlZmVyZW5jZSBmaWxlLiAibG9uZyIgaWYgdGhlIGZpbGUgaGFzIGFuIGV4dGVu
ZGVkIHRpbWVvdXQKICAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UiIiIKICAgICAgICAgaWYgc2Vs
Zi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICBpZiBhbnkobSA9PSAoYiJ0aW1lb3V0Iiwg
YiJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGEpOgorICAgICAgICAgICAgaWYg
YW55KG0gPT0gKCJ0aW1lb3V0IiwgImxvbmciKSBmb3IgbSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0
YSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJsb25nIgogCiAgICAgICAgIGlmIHNlbGYucm9v
dCBpcyBOb25lOgpAQCAtNjQ0LDggKzY0Nyw4IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAg
ICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlLmRl
Y29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBpZiBrZXkgPT0gInZhcmlhbnQiOgorICAg
ICAgICAgICAgICAgICAgICBydi5hcHBlbmQodmFsdWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLnZhcmlhbnRfbm9kZXM6CiAgICAgICAgICAgICAgICAg
aWYgImNvbnRlbnQiIGluIGVsZW1lbnQuYXR0cmliOgpAQCAtNjc3LDYgKzY4MCwzNiBAQCBjbGFz
cyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5
CisgICAgZGVmIHF1aWNfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtF
bGVtZW50VHJlZS5FbGVtZW50XQorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1l
bnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKKyAgICAgICAgc3BlY2lm
eSB3aGV0aGVyIGl0IG5lZWRzIFFVSUMgc2VydmVyLiIiIgorICAgICAgICBhc3NlcnQgc2VsZi5y
b290IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ncXVpYyddIikKKworICAgIEBj
YWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAt
PiBPcHRpb25hbFtib29sXQorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBh
IHRlc3QgcmVxdWlyZXMgUVVJQyBzZXJ2ZXIKKworICAgICAgICBEZXRlcm1pbmVkIGJ5IDxtZXRh
PiBlbGVtZW50cyAoYHF1aWNfbm9kZXMoKWApIGFuZCAiLy8gTUVUQSIgY29tbWVudHMKKyAgICAg
ICAgKGBzY3JpcHRfbWV0YWRhdGEoKWApLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5z
Y3JpcHRfbWV0YWRhdGE6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInF1aWMiLCAidHJ1ZSIp
IGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICBpZiBzZWxmLnF1aWNfbm9kZXM6CisgICAgICAgICAgICBxdWljX3N0
ciA9IHNlbGYucXVpY19ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgImZhbHNlIikgICMg
dHlwZTogVGV4dAorICAgICAgICAgICAgaWYgcXVpY19zdHIubG93ZXIoKSA9PSAidHJ1ZSI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAg
QGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgogICAgICAgICAj
IHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KQEAgLTc4NCw2ICs4MTcsOCBA
QCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuaXRlbXNfY2FjaGU6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCisgICAgICAgIGRyb3BfY2Fj
aGVkID0gInJvb3QiIG5vdCBpbiBzZWxmLl9fZGljdF9fCisKICAgICAgICAgaWYgc2VsZi5uYW1l
X2lzX25vbl90ZXN0OgogICAgICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFsKICAgICAgICAgICAg
ICAgICBTdXBwb3J0RmlsZSgKQEAgLTgzNSwxMSArODcwLDExIEBAIGNsYXNzIFNvdXJjZUZpbGUo
b2JqZWN0KToKICAgICAgICAgICAgICAgICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lz
X211bHRpX2dsb2JhbDoKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAgICAgICAgICAgIGds
b2JhbHMgPSB1IiIKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAg
ICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAi
Z2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCiAKQEAgLTg1MSw2ICs4ODYsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF92YXJpYW50X3VybChzZWxmLnJlbF91
cmwsIHN1ZmZpeCkgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYu
dGltZW91dCwKICAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxsLAorICAgICAgICAg
ICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21l
dGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgIGZvciAoc3VmZml4LCBqc3NoZWxsKSBpbiBzb3J0ZWQoZ2xvYmFsX3N1ZmZpeGVzKGds
b2JhbHMpKQpAQCAtODY3LDYgKzkwMyw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgdGVz
dF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHMKQEAg
LTg4Miw2ICs5MTksNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsICsgdmFy
aWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAg
ICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICBzY3JpcHRf
bWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCkBAIC05MTgsMTkgKzk1
NiwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5x
dWljLAogICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2ZXIsCiAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAg
ICAgICAgICAgICkpCiAKICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6Ci0g
ICAgICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWwotICAgICAgICAgICAgICAg
IFJlZlRlc3ROb2RlKAorICAgICAgICAgICAgcnYgPSBSZWZUZXN0Lml0ZW1fdHlwZSwgWworICAg
ICAgICAgICAgICAgIFJlZlRlc3QoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9v
dCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfdXJsLAogICAg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPXNlbGYucmVmZXJlbmNlcywKICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9
c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXplPXNlbGYudmlld3Bv
cnRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAogICAgICAgICAgICAg
ICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CkBAIC05NTYsNCArOTk2LDExIEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgICAgICBzZWxmLml0ZW1zX2NhY2hlID0gcnYKIAorICAgICAg
ICBpZiBkcm9wX2NhY2hlZCBhbmQgIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIgaW4gc2VsZi5fX2Rp
Y3RfXzoKKyAgICAgICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gc2VsZi5fX2RpY3RfX1siX19j
YWNoZWRfcHJvcGVydGllc19fIl0KKyAgICAgICAgICAgIGZvciBwcm9wIGluIGNhY2hlZF9wcm9w
ZXJ0aWVzOgorICAgICAgICAgICAgICAgIGlmIHByb3AgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAg
ICAgICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bcHJvcF0KKyAgICAgICAgICAgIGRlbCBz
ZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorCiAgICAgICAgIHJldHVybiBy
dgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21h
bmlmZXN0LnB5CmluZGV4IDczM2NhZmRjYmU5ZGM5Y2UwN2NiM2U4NDNiZDk1NmQwMmM2ZmQyZmUu
LmI2MThkNzVlYzFlZDJlOTU1ZTI3Zjc2MzQ0NmMxYjBmYzM5ODdmMWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dGVzdHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKQEAg
LTUsNyArNSw3IEBAIGltcG9ydCBtb2NrCiBpbXBvcnQgaHlwb3RoZXNpcyBhcyBoCiBpbXBvcnQg
aHlwb3RoZXNpcy5zdHJhdGVnaWVzIGFzIGhzCiAKLWltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGlt
cG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLiBpbXBvcnQgbWFuaWZlc3QsIHNvdXJjZWZpbGUsIGl0
ZW0sIHV0aWxzCiAKQEAgLTE4LDcgKzE4LDEwIEBAIGlmIE1ZUFk6CiAKIGRlZiBTb3VyY2VGaWxl
V2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoc3RyLCBz
dHIsIFR5cGVbaXRlbS5NYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmlsZS5Tb3VyY2VG
aWxlCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcmVs
X3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICBzID0gbW9j
ay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxfcGF0aF9wYXJ0cz1y
ZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkKICAgICBpZiBjbHMg
PT0gaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgp
CiAgICAgZWxzZToKQEAgLTI5LDUxICszMiw4MyBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBh
dGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0cyhwYXRo
LCBoYXNoLCBjbHMsIHZhcmlhbnRzKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVt
LlVSTE1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJjZUZpbGUKLSAgICBz
ID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICByZWxfcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIHMgPSBtb2NrLk1vY2socmVs
X3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3Bh
cnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogICAgIHRlc3RzID0gW2NscygiL2Zv
b2JhciIsIHBhdGgsICIvIiwgaXRlbVswXSwgKippdGVtWzFdKSBmb3IgaXRlbSBpbiB2YXJpYW50
c10KICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0
ZW1fdHlwZSwgdGVzdHMpKQogICAgIHJldHVybiBzICAjIHR5cGU6IGlnbm9yZQogCiAKLUBocy5j
b21wb3NpdGUKLWRlZiByZWxfZGlyX2ZpbGVfcGF0aChkcmF3KToKLSAgICBsZW5ndGggPSBkcmF3
KGhzLmludGVnZXJzKG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MjApKQotICAgIGlmIGxlbmd0aCA9
PSAxOgotICAgICAgICByZXR1cm4gImEiCi0gICAgZWxzZToKLSAgICAgICAgcmVtYWluaW5nID0g
bGVuZ3RoIC0gMgotICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGguc2VwCi0gICAgICAg
IG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3NpemU9cmVtYWluaW5n
LCBtYXhfc2l6ZT1yZW1haW5pbmcpKQotICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZSgi
YSIgKyBtaWQgKyAiYSIpCi0KLQogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJjZWZpbGVfc3RyYXRl
Z3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5lc3NUZXN0LCBpdGVt
LlJlZlRlc3ROb2RlLAorICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwg
aXRlbS5SZWZUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLk1hbnVhbFRlc3QsIGl0ZW0u
V2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uQ29uZm9ybWFuY2VD
aGVja2VyVGVzdCwgaXRlbS5TdXBwb3J0RmlsZV0KICAgICBjbHMgPSBkcmF3KGhzLnNhbXBsZWRf
ZnJvbShpdGVtX2NsYXNzZXMpKQogCi0gICAgcGF0aCA9IGRyYXcocmVsX2Rpcl9maWxlX3BhdGgo
KSkKLSAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PSIwMTIzNDU2Nzg5YWJjZGVmIiwg
bWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBh
dGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoID0gdSJhIgorICAgIHJlbF9wYXRoX3BhcnRzID0gdHVw
bGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgaGFzaCA9IGRyYXcoaHMudGV4dChhbHBo
YWJldD11IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQorICAg
IHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRo
X3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogCi0g
ICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdE5vZGU6Ci0gICAgICAgIHJlZl9wYXRoID0gZHJhdyhy
ZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgICAgICBoLmFzc3VtZShwYXRoICE9IHJlZl9wYXRoKQor
ICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3Q6CisgICAgICAgIHJlZl9wYXRoID0gdSJiIgogICAg
ICAgICByZWZfZXEgPSBkcmF3KGhzLnNhbXBsZWRfZnJvbShbIj09IiwgIiE9Il0pKQogICAgICAg
ICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0
aCksIHJlZmVyZW5jZXM9Wyh1dGlscy5mcm9tX29zX3BhdGgocmVmX3BhdGgpLCByZWZfZXEpXSkK
ICAgICBlbGlmIGNscyBpcyBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAgICB0ZXN0ID0gY2xzKCIv
Zm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwg
cGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0aCkpCisgICAgICAgIHRlc3QgPSBjbHMo
Ii9mb29iYXIiLCBwYXRoLCAiLyIsICJmb29iYXIiKQogCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9
IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkpCiAgICAgcmV0
dXJuIHMKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCi0gICAg
ICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCBtYXhfc2l6ZT0xMDAwLCB1bmlxdWVfYnk9bGFtYmRh
IHg6IHgucmVsX3BhdGgpKQorQGhzLmNvbXBvc2l0ZQorZGVmIG1hbmlmZXN0X3RyZWUoZHJhdyk6
CisgICAgbmFtZXMgPSBocy50ZXh0KGFscGhhYmV0PWhzLmNoYXJhY3RlcnMoYmxhY2tsaXN0X2No
YXJhY3RlcnM9dSJcMC9cXDoqXCI/PD58IiksIG1pbl9zaXplPTEpCisgICAgdHJlZSA9IGhzLnJl
Y3Vyc2l2ZShzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCisgICAgICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgY2hpbGRyZW46IGhzLmRpY3Rpb25hcmllcyhuYW1lcywgY2hpbGRyZW4sIG1pbl9zaXpl
PTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlYXZlcz0xMCkKKworICAgIGdlbmVy
YXRlZF9yb290ID0gZHJhdyh0cmVlKQorICAgIGguYXNzdW1lKGlzaW5zdGFuY2UoZ2VuZXJhdGVk
X3Jvb3QsIGRpY3QpKQorCisgICAgcmVmdGVzdF91cmxzID0gW10KKyAgICBvdXRwdXQgPSBbXQor
ICAgIHN0YWNrID0gWygoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZ2VuZXJhdGVkX3Jv
b3QpXQorICAgIHdoaWxlIHN0YWNrOgorICAgICAgICBwYXRoLCBub2RlID0gc3RhY2sucG9wKCkK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgIHN0YWNrLmV4
dGVuZCgocGF0aCArIChrLCksIHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhub2RlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihwYXRoKQor
ICAgICAgICAgICAgbm9kZS5yZWxfcGF0aCA9IHJlbF9wYXRoCisgICAgICAgICAgICBub2RlLnJl
bF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aCkKKyAgICAgICAgICAgIGZvciB0ZXN0X2l0ZW0gaW4g
bm9kZS5tYW5pZmVzdF9pdGVtcy5yZXR1cm5fdmFsdWVbMV06CisgICAgICAgICAgICAgICAgdGVz
dF9pdGVtLnBhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGVz
dF9pdGVtLCBpdGVtLlJlZlRlc3QpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWZ0ZXN0X3Vy
bHM6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzID0gaHMuc2FtcGxlZF9m
cm9tKHJlZnRlc3RfdXJscykgfCBuYW1lcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IG5hbWVzCisgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZSA9IGhzLnR1cGxlcyhocy5zYW1wbGVkX2Zyb20oW3UiPT0iLCB1IiE9
Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVf
dXJscykKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyA9IGhzLmxpc3RzKHJlZmVyZW5j
ZSwgbWluX3NpemU9MSwgdW5pcXVlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRlc3RfaXRl
bS5yZWZlcmVuY2VzID0gZHJhdyhyZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICByZWZ0
ZXN0X3VybHMuYXBwZW5kKHRlc3RfaXRlbS51cmwpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KG5vZGUpCisKKyAgICByZXR1cm4gb3V0cHV0CisKKworQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgp
KQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hl
Y2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRo
VGVzdCgiYSIsICIwIio0MCwgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0KV0pCiBkZWYgdGVz
dF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCkBAIC04
OCwxMCArMTIzLDExIEBAIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6CiAgICAgYXNzZXJ0
IGxvYWRlZC50b19qc29uKCkgPT0ganNvbl9zdHIKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3Vy
Y2VmaWxlX3N0cmF0ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCB1bmlxdWVf
Ynk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgpKQorIyBG
SVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hlY2s9KGgu
SGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgi
YSIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXSkKLUBoLmV4YW1wbGUoW1NvdXJjZUZp
bGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
YWEiLCAiPT0iKV0pXSkKK0BoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0
MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQogZGVmIHRlc3Rf
bWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCkBA
IC0xMDcsMTkxICsxNDMsNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKIGRl
ZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fZm9yd2FyZHNsYXNoKCk6CiAgICAgbSA9IG1hbmlmZXN0
Lk1hbmlmZXN0KCkKIAotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEvYiIsICIwIio0MCwg
aXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzLCBUcnVlKV0p
IGlzIFRydWUKLQotICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAgICAgICdwYXRocyc6
IHsKLSAgICAgICAgICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6
IDcsCi0gICAgICAgICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1zJzogewotICAgICAg
ICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2InOiBbKCdhL2InLCB7
fSldCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotQHB5dGVzdC5tYXJrLnNr
aXBpZihvcy5zZXAgIT0gIlxcIiwgcmVhc29uPSJiYWNrc2xhc2ggcGF0aCIpCi1kZWYgdGVzdF9t
YW5pZmVzdF90b19qc29uX2JhY2tzbGFzaCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgp
Ci0KLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhXFxiIiwgIjAiKjQwLCBpdGVtLlRlc3Ro
YXJuZXNzVGVzdCkKKyAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhIiArIG9zLnBhdGguc2Vw
ICsgImIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQogCiAgICAgYXNzZXJ0IG0udXBk
YXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBhc3NlcnQgbS50b19qc29uKCkgPT0gewot
ICAgICAgICAncGF0aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgfSwKLSAg
ICAgICAgJ3ZlcnNpb24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICdp
dGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAn
YS9iJzogWygnYS9iJywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0K
LWRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKLSAgICBqc29uX29iaiA9
IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2FcXGInOiAoJzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9
LAotICAgICAgICAndmVyc2lvbic6IDcsCisgICAgICAgICd2ZXJzaW9uJzogOCwKICAgICAgICAg
J3VybF9iYXNlJzogJy8nLAogICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhh
cm5lc3MnOiB7Ci0gICAgICAgICAgICAgICAgJ2FcXGInOiBbWydhL2InLCB7fV1dCi0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7J2EnOiB7J2InOiBbCisgICAgICAg
ICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLAorICAg
ICAgICAgICAgICAgIChOb25lLCB7fSkKKyAgICAgICAgICAgIF19fSwKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgbWFuaWZl
c3QuTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwganNvbl9vYmopCiAKIAogZGVmIHRlc3RfcmVmdGVz
dF9jb21wdXRhdGlvbl9jaGFpbigpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
dGVzdDMiLCAiPT0iKV0pCisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAi
KjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQorICAgIHMy
ID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZl
cmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAogICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAo
czIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogICAg
IHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgYXNzZXJ0IGxpc3QobSkg
PT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0K
LQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9hZGQoKToKLSAg
ICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgpfSldCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHRlc3QxID0gczEubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQg
aGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBub2RlCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygi
cmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9yZW1vdmUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9
PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0u
UmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgdGVzdDEg
PSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVt
cygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0
aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRl
c3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5j
aGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIG5vZGUgdG8gYSB0ZXN0Ci0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0g
WygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mi50b19SZWZUZXN0KCl9KV0KLQotCi1kZWYg
dGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV90ZXN0X3R5cGUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QtcmVmIiwg
Ij09IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpXSkgaXMgVHJ1ZQotCi0g
ICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdCht
KSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pXQotCi0g
ICAgIyB0ZXN0IGJlY29tZXMgYSB0ZXN0aGFybmVzcyB0ZXN0IChoYXNoIGNoYW5nZSBiZWNhdXNl
IHRoYXQgaXMgZGV0ZXJtaW5lZAotICAgICMgYmFzZWQgb24gdGhlIGZpbGUgY29udGVudHMpLiBU
aGUgdXBkYXRlZCBtYW5pZmVzdCBzaG91bGQgbm90IGluY2x1ZGVzIHRoZQotICAgICMgb2xkIHJl
ZnRlc3QuCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QiLCAiMSIqNDAsIGl0ZW0u
VGVzdGhhcm5lc3NUZXN0KQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRy
dWUKLQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZSgpOgot
ICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3Qy
IiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCi0KLSAgICBh
c3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0
ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0
X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0
MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICAjdGVzdDIgY2hhbmdl
cyB0byBzdXBwb3J0IHR5cGUKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAi
MSIqNDAsIGl0ZW0uU3VwcG9ydEZpbGUpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1
ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0gICAgdGVzdDMgPSBzMi5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwg
e3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInN1cHBvcnQi
LCB0ZXN0My5wYXRoLCB7dGVzdDN9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9u
X2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZV9wYXJ0aWFsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1h
bmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIg
PSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCBy
ZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMx
LCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3Rf
aXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0g
ICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19S
ZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0
Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIs
ICIxIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0p
Ci0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpLCAoczIsIFRydWUp
XSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBh
dGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0
ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQgbGlzdChtKSA9PSBb
KCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICgicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAKIGRlZiB0ZXN0X2l0ZXJwYXRo
KCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHNvdXJjZXMgPSBbU291cmNl
RmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNl
cz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICBzb3VyY2VzID0gW1NvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNlcz1bKCIvdGVzdDEt
cmVmIiwgIj09IildKSwKICAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdHMoInRlc3Qy
IiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5odG1sIiwge30pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAgICAgICAgICAgICAg
IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0
KV0KQEAgLTMwMiwyNCArMTg5LDYgQEAgZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBhc3NlcnQg
c2V0KG0uaXRlcnBhdGgoIm1pc3NpbmciKSkgPT0gc2V0KCkKIAogCi1kZWYgdGVzdF9yZWZ0ZXN0
X25vZGVfYnlfdXJsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLQotICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkKLQotICAg
IHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rlc19ieV91cmwgPT0g
eyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLSAgICBtLl9yZWZ0ZXN0X25vZGVzX2J5X3Vy
bCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6
IHRlc3QxLnRvX1JlZlRlc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0MiI6IHRlc3QyfQotCi0KIGRlZiB0ZXN0X25vX3VwZGF0ZSgpOgogICAgIG0gPSBt
YW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTM1NCw5ICsyMjMsNyBAQCBkZWYgdGVzdF9ub191cGRh
dGVfZGVsZXRlKCk6CiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAot
ICAgIHMxXzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVtLk1hbnVh
bFRlc3QpCi0KLSAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNlKV0pCisgICAgbS51
cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpXSkKIAogICAgIGFzc2VydCBsaXN0KG0pID09IFso
InRlc3RoYXJuZXNzIiwgdGVzdDEucGF0aCwge3Rlc3QxfSldCiAKQEAgLTM5NCw5ICsyNjEsMTAg
QEAgZGVmIHRlc3RfdXBkYXRlX2Zyb21fanNvbl9tb2RpZmllZCgpOgogICAgIG0udXBkYXRlKFso
czIsIFRydWUpXSkKICAgICBqc29uX3N0ciA9IG0udG9fanNvbigpCiAgICAgYXNzZXJ0IGpzb25f
c3RyID09IHsKLSAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsndGVzdDEnOiBbKCd0
ZXN0MScsIHsidGltZW91dCI6ICJsb25nIn0pXX19LAotICAgICAgICAncGF0aHMnOiB7J3Rlc3Qx
JzogKCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MnKX0sCisgICAgICAgICdpdGVtcyc6IHsn
dGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzogWworICAgICAgICAgICAgIjEiKjQwLAorICAgICAgICAg
ICAgKE5vbmUsIHsndGltZW91dCc6ICdsb25nJ30pCisgICAgICAgIF19fSwKICAgICAgICAgJ3Vy
bF9iYXNlJzogJy8nLAotICAgICAgICAndmVyc2lvbic6IDcKKyAgICAgICAgJ3ZlcnNpb24nOiA4
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc291cmNlZmlsZS5weQppbmRleCAwYTdhMWNhMGI0MWE5YzFiOTVmY2VhMzA5NTRjZWZm
NGJjYzc0YWQ4Li44YjBmYjk0NGVhNTY3NGE3ZDIxYjhkZGFhYzg5MDg1NjRkNDQ0MWJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291
cmNlZmlsZS5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8KIGZyb20g
Li4ubGludC5saW50IGltcG9ydCBjaGVja19nbG9iYWxfbWV0YWRhdGEKIGZyb20gLi5zb3VyY2Vm
aWxlIGltcG9ydCBTb3VyY2VGaWxlLCByZWFkX3NjcmlwdF9tZXRhZGF0YSwganNfbWV0YV9yZSwg
cHl0aG9uX21ldGFfcmUKIAorCiBkZWYgY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50cz1iIiIpOgog
ICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcykKICAgICByZXR1cm4gU291cmNl
RmlsZSgiLyIsIGZpbGVuYW1lLCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpAQCAtMzYsNiArMzcs
NyBAQCBkZWYgaXRlbXMocyk6CiAgICAgImZvby9yZXNvdXJjZXMvdGVzdC5odG1sIiwKICAgICAi
Zm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKICAgICAiZm9vL2Zvby1tYW51YWwuaHRtbC5oZWFkZXJz
IiwKKyAgICAiY3Jhc2h0ZXN0cy9mb28uaHRtbC5pbmkiLAogICAgICJjc3MvY29tbW9uL3Rlc3Qu
aHRtbCIsCiAgICAgImNzcy9DU1MyL2FyY2hpdmUvdGVzdC5odG1sIiwKIF0pCkBAIC0xMDYsOCAr
MTA4LDggQEAgZGVmIHRlc3RfbmFtZV9pc192aXN1YWwocmVsX3BhdGgpOgogICAgICJjc3MyMS9m
bG9hdHMvZmxvYXRzLXBsYWNlbWVudC12ZXJ0aWNhbC0wMDQtcmVmMi54aHQiLAogICAgICJjc3My
MS9ib3gvcnRsLWxpbmVicmVhay1ub3RyZWYxLnhodCIsCiAgICAgImNzczIxL2JveC9ydGwtbGlu
ZWJyZWFrLW5vdHJlZjIueGh0IiwKLSAgICAiMmRjb250ZXh0L2RyYXdpbmctaW1hZ2VzLXRvLXRo
ZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYuaHRtbCIsCi0gICAgIjJkY29udGV4
dC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAorICAgICJodG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYu
aHRtbCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvbGluZS1zdHlsZXMvbGluZXRvX3JlZi5o
dG1sIiwKICAgICAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3RoZS1maWVs
ZHNldC1lbGVtZW50LTAvcmVmLmh0bWwiCiBdKQogZGVmIHRlc3RfbmFtZV9pc19yZWZlcmVuY2Uo
cmVsX3BhdGgpOgpAQCAtMTIwLDYgKzEyMiwxNCBAQCBkZWYgdGVzdF9uYW1lX2lzX3JlZmVyZW5j
ZShyZWxfcGF0aCk6CiAgICAgYXNzZXJ0IGl0ZW1zKHMpID09IFtdCiAKIAorZGVmIHRlc3RfbmFt
ZV9pc190ZW50YXRpdmUoKToKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVpL2FwcGVhcmFuY2Ut
cmV2ZXJ0LTAwMS50ZW50YXRpdmUuaHRtbCIpCisgICAgYXNzZXJ0IHMubmFtZV9pc190ZW50YXRp
dmUKKworICAgIHMgPSBjcmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1yZXZlcnQtMDAxLmh0
bWwiKQorICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisKIGRlZiB0ZXN0X3dv
cmtlcigpOgogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC53b3JrZXIuanMiKQogICAgIGFzc2Vy
dCBub3Qgcy5uYW1lX2lzX25vbl90ZXN0CkBAIC0xNDMsNiArMTUzLDggQEAgZGVmIHRlc3Rfd29y
a2VyKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgog
ICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVv
dXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKKwogCiBkZWYgdGVz
dF93aW5kb3coKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93LmpzIikKQEAgLTE2
Nyw2ICsxNzksNyBAQCBkZWYgdGVzdF93aW5kb3coKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHpp
cChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwK
ICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVt
LnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3dvcmtlcl9sb25nX3RpbWVvdXQoKToKQEAgLTE3
NSw3ICsxODgsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykK
IHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5
dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhi
InRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIs
ICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2VyLmpzIiwgY29udGVu
dHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193b3JrZXIKQEAgLTE5Miw3ICsyMDUs
NyBAQCBkZWYgdGVzdF93aW5kb3dfbG9uZ190aW1lb3V0KCk6CiB0ZXN0KCkiIiIKIAogICAgIG1l
dGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRlbnRzKSwganNf
bWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0IiwgYiJsb25nIild
CisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIpXQogCiAgICAgcyA9
IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAgIGFz
c2VydCBzLm5hbWVfaXNfd2luZG93CkBAIC0yMzIsNiArMjQ1LDcgQEAgdGVzdCgpIiIiCiAgICAg
Zm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3Nl
cnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQor
ICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVzdF93aW5kb3dfd2l0
aF92YXJpYW50cygpOgpAQCAtMjYyLDYgKzI3Niw3IEBAIHRlc3QoKSIiIgogICAgIGZvciBpdGVt
LCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0u
dXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAg
YXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfcHl0aG9uX2xvbmdfdGltZW91
dCgpOgpAQCAtMjcxLDcgKzI4Niw3IEBAIGRlZiB0ZXN0X3B5dGhvbl9sb25nX3RpbWVvdXQoKToK
IAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRl
bnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21l
dGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQor
ICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBj
cmVhdGUoIndlYmRyaXZlci90ZXN0LnB5IiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0
IHMubmFtZV9pc193ZWJkcml2ZXIKQEAgLTMwNiw2ICszMjEsNyBAQCBkZWYgdGVzdF9tdWx0aV9n
bG9iYWwoKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6
CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF9sb25nX3RpbWVvdXQoKToKQEAgLTMxNCw3ICszMzAsNyBAQCBpbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykKIHRlc3QoKSIiIgogCiAgICAg
bWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBq
c19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmci
KV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25nIildCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNz
ZXJ0IHMubmFtZV9pc19tdWx0aV9nbG9iYWwKQEAgLTMyNywyNSArMzQzLDEwIEBAIHRlc3QoKSIi
IgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0ZWQiLCBbCi0gICAg
KGIiIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiImRlZmF1bHQiLCB7
ImRlZGljYXRlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZmF1bHQiLCB7fSksCi0g
ICAgKGIiIWRlZmF1bHQsd2luZG93IiwgeyJ3aW5kb3cifSksCi0gICAgKGIid2luZG93LCFkZWZh
dWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LGRlZGljYXRlZHdvcmtlciIsIHsiZGVkaWNhdGVk
d29ya2VyIn0pLAotICAgIChiImRlZGljYXRlZHdvcmtlciwhZGVmYXVsdCIsIHt9KSwKLSAgICAo
YiIhZGVmYXVsdCx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwg
InNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZmF1bHQiLCB7InNlcnZpY2V3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIiFkZWRpY2F0ZWR3b3JrZXIiLCB7IndpbmRv
dyJ9KSwKLSAgICAoYiIhd29ya2VyIiwgeyJ3aW5kb3cifSksCi0gICAgKGIiIXdpbmRvdyIsIHsi
ZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiIiF3aW5kb3csd29ya2VyIiwgeyJkZWRpY2F0ZWR3
b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAgKGIid29ya2Vy
LCFkZWRpY2F0ZWR3b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndp
bmRvdyJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyLHdvcmtlciIsIHsiZGVkaWNhdGVkd29y
a2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAo
YiJ3b3JrZXIsIXNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3Jr
ZXIiLCAid2luZG93In0pLAotICAgIChiIiFzaGFyZWR3b3JrZXIsd29ya2VyIiwgeyJkZWRpY2F0
ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93In0pLAot
ICAgIChiInNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7ImRlZGlj
YXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSks
CisgICAgKGIid2luZG93IiwgeyJ3aW5kb3cifSksCisgICAgKGIic2hhcmVkd29ya2VyIiwgeyJz
aGFyZWR3b3JrZXIifSksCisgICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7InNl
cnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAorICAgIChiIndvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAogXSkKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2N1c3RvbV9nbG9iYWxzKGlucHV0LCBleHBlY3RlZCk6CiAg
ICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPSVzCkBAIC0zODAsMTAgKzM4MSwxMSBA
QCB0ZXN0KCkiIiIgJSBpbnB1dAogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAg
ICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgaXMgRmFsc2UKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2pzc2hlbGxfZ2xvYmFscygpOgotICAgIGNvbnRlbnRzID0g
YiIiIi8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisgICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogdGVzdCgpIiIiCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCkBAIC00MTAs
NiArNDEyLDcgQEAgdGVzdCgpIiIiCiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAg
ICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCA9PSBqc3NoZWxsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF92YXJpYW50cygpOgpAQCAtNDQ4LDE3ICs0NTEsMTgg
QEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3Vy
bHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwotICAgIChiIiIiLy9N
RVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyBNRVRB
OiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyAgTUVUQTog
Zm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIiLy9NRVRBOiBmb289
YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxu
IiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vICBNRVRBOiBmb289YmFyXG4iIiIs
IFsoImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiXG4vLyBNRVRBOiBmb289YmFyXG4iIiIsIFtd
KSwKICAgICAoYiIiIiAvLyBNRVRBOiBmb289YmFyXG4iIiIsIFtdKSwKLSAgICAoYiIiIi8vIE1F
VEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28iLCBiImJhciIpLCAo
YiJiYXoiLCBiInF1dXgiKV0pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRB
OiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8gTUVUQTog
Zm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFso
YiJmb28iLCBiImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBNRVRBOiBi
YXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIiksICgiYmF6IiwgInF1dXgiKV0pLAorICAgIChi
IiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAi
YmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIFN0YXJ0IG9mIHRoZSB0ZXN0
XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKICAgICAoYiIiIi8v
IE1FVEE6XG4iIiIsIFtdKSwKICAgICAoYiIiIi8vIE1FVEE6IGZvb2JhclxuIiIiLCBbXSksCiBd
KQpAQCAtNjU3LDcgKzY2MSwzNiBAQCBkZWYgdGVzdF9yZWxhdGl2ZV90ZXN0ZHJpdmVyKGV4dCk6
CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0bSIsICJodG1sIl0pCi1k
ZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0KToKK2RlZiB0ZXN0X3F1aWNfaHRtbChleHQpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC4iICsgZXh0CisKKyAgICBjb250ZW50ID0gYic8bWV0YSBu
YW1lPSJxdWljIiBjb250ZW50PSJ0cnVlIj4nCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29u
dGVudCkKKyAgICBhc3NlcnQgcy5xdWljCisKKyAgICBjb250ZW50ID0gYic8bWV0YSBuYW1lPSJx
dWljIiBjb250ZW50PSJmYWxzZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQp
CisgICAgYXNzZXJ0IHMucXVpYyBpcyBOb25lCisKKworZGVmIHRlc3RfcXVpY19qcygpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC5hbnkuanMiCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRB
OiBxdWljPXRydWUiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVudCkKKyAgICBfLCBp
dGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAg
ICBhc3NlcnQgaXRlbS5xdWljCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRBOiBxdWljPWZhbHNl
IgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgXywgaXRlbXMgPSBzLm1h
bmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgYXNzZXJ0IGl0
ZW0ucXVpYyBpcyBOb25lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0
bSIsICJodG1sIl0pCitkZWYgdGVzdF9yZWZ0ZXN0KGV4dCk6CiAgICAgY29udGVudCA9IGIiPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+IgogCiAgICAgZmlsZW5hbWUgPSAiZm9vL3Rlc3Qu
IiArIGV4dApAQCAtNjczLDcgKzcwNiw3IEBAIGRlZiB0ZXN0X3JlZnRlc3Rfbm9kZShleHQpOgog
CiAgICAgYXNzZXJ0IHMuY29udGVudF9pc19yZWZfbm9kZQogCi0gICAgYXNzZXJ0IGl0ZW1zKHMp
ID09IFsoInJlZnRlc3Rfbm9kZSIsICIvIiArIGZpbGVuYW1lKV0KKyAgICBhc3NlcnQgaXRlbXMo
cykgPT0gWygicmVmdGVzdCIsICIvIiArIGZpbGVuYW1lKV0KIAogCiBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImV4dCIsIFsieGh0IiwgImh0bWwiLCAieGh0bWwiLCAiaHRtIiwgInhtbCIsICJz
dmciXSkKQEAgLTgzMSw0ICs4NjQsNCBAQCBkZWYgdGVzdF9yZWZ0ZXN0X2Z1enp5X211bHRpKGZ1
enp5LCBleHBlY3RlZCk6CiAKIGRlZiB0ZXN0X2hhc2goKToKICAgICBzID0gU291cmNlRmlsZSgi
LyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIpCi0gICAgYXNzZXJ0IGIi
YjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0gcy5oYXNoCisgICAg
YXNzZXJ0ICJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMwMjUzNjdiNzIxNjg0IiA9PSBzLmhh
c2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYTA0MWU1NGMzZTI0MGUyNmRiODNjMThhMWY1ODllMDVjZGM4NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0wLDAgKzEsMzQyIEBACitmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBNdXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcywgaXRlcml0
ZW1zCisKKworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1
ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
ZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworICAgICMgYXZvaWQgYWN0dWFs
bHkgaW1wb3J0aW5nIHRoZXNlLCB0aGV5J3JlIG9ubHkgdXNlZCBieSB0eXBlIGNvbW1lbnRzCisg
ICAgZnJvbSAuIGltcG9ydCBpdGVtCisgICAgZnJvbSAuIGltcG9ydCBtYW5pZmVzdAorCisKK2lm
IE1ZUFk6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVHVwbGVbVGV4dCwgLi4u
XSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXV0KKyAgICBQYXRoSGFzaFR5cGUgPSBNdXRhYmxlTWFw
cGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQorZWxzZToKKyAgICBUeXBlRGF0YVR5cGUgPSBN
dXRhYmxlTWFwcGluZworICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBwaW5nCisKKworY2xh
c3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbSwgdHlw
ZV9jbHMpOgorICAgICAgICAjIHR5cGU6IChtYW5pZmVzdC5NYW5pZmVzdCwgVHlwZVtpdGVtLk1h
bmlmZXN0SXRlbV0pIC0+IE5vbmUKKyAgICAgICAgIiIiRGljdC1saWtlIG9iamVjdCBjb250YWlu
aW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVzdCB0eXBlLgorCisgICAgICAgIExvYWRpbmcg
YW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vzc2FyaWx5CisgICAg
ICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAor
ICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSBy
YXcganNvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5
IGNyZWF0ZSBhbiBJdGVtCisgICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNz
ZWQuIEluIG9yZGVyIHRvIHJlbWFpbgorICAgICAgICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1
bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFuIEl0ZW0KKyAgICAgICAgZnJvbSBpdGVyYXRp
b24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGluZworICAgICAgICBv
dmVyIHRoZSBjbGFzcy4iIiIKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBtCisgICAgICAgIHNl
bGYuX3R5cGVfY2xzID0gdHlwZV9jbHMgICMgdHlwZTogVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0K
KyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCisg
ICAgICAgIHNlbGYuX2RhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KKyAgICAgICAg
c2VsZi5faGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQor
ICAgICAgICBzZWxmLmhhc2hlcyA9IFBhdGhIYXNoKHNlbGYpCisKKyAgICBkZWYgX2RlbGV0ZV9u
b2RlKHNlbGYsIGRhdGEsIGtleSk6CisgICAgICAgICMgdHlwZTogKERpY3RbVGV4dCwgQW55XSwg
VHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICAiIiJkZWxldGUgYSBwYXRoIGZyb20g
YSBEaWN0IGRhdGEgd2l0aCBhIGdpdmVuIGtleSIiIgorICAgICAgICBwYXRoID0gW10KKyAgICAg
ICAgbm9kZSA9IGRhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5WzotMV06CisgICAgICAg
ICAgICBwYXRoLmFwcGVuZCgobm9kZSwgcGF0aHNlZykpCisgICAgICAgICAgICBub2RlID0gbm9k
ZVtwYXRoc2VnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGRlbCBub2RlW2tl
eVstMV1dCisgICAgICAgIHdoaWxlIHBhdGg6CisgICAgICAgICAgICBub2RlLCBwYXRoc2VnID0g
cGF0aC5wb3AoKQorICAgICAgICAgICAgaWYgbGVuKG5vZGVbcGF0aHNlZ10pID09IDA6CisgICAg
ICAgICAgICAgICAgZGVsIG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAg
ICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IFVuaW9uW0RpY3RbVGV4dCwgQW55XSwg
U2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSwgTGlzdFtBbnldXQorICAgICAgICBmb3IgcGF0aHNlZyBp
biBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGRpY3QpIGFuZCBwYXRoc2Vn
IGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgc2V0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkp
CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pzb25fZGF0YQorICAgICAgICBmb3VuZCA9IEZhbHNl
CisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90
IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKG5vZGUsIGxpc3QpOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5
KQorCisgICAgICAgIHNlbGYuX2hhc2hlc1trZXldID0gbm9kZVswXQorCisgICAgICAgIGRhdGEg
PSBzZXQoKQorICAgICAgICBwYXRoID0gIi8iLmpvaW4oa2V5KQorICAgICAgICBmb3IgdGVzdCBp
biBub2RlWzE6XToKKyAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLl90eXBlX2Nscy5m
cm9tX2pzb24oc2VsZi5fbWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAgICAgICBkYXRhLmFk
ZChtYW5pZmVzdF9pdGVtKQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleVs6
LTFdOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVmYXVsdChwYXRoc2VnLCB7fSkKKyAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGFzc2VydCBr
ZXlbLTFdIG5vdCBpbiBub2RlCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSBkYXRhCisKKyAgICAg
ICAgc2VsZi5fZGVsZXRlX25vZGUoc2VsZi5fanNvbl9kYXRhLCBrZXkpCisKKyAgICAgICAgcmV0
dXJuIGRhdGEKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSkgLT4g
Tm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9q
c29uX2RhdGEsIGtleSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBpLCBwYXRoc2VnIGlu
IGVudW1lcmF0ZShrZXlbOi0xXSk6CisgICAgICAgICAgICBub2RlID0gbm9kZS5zZXRkZWZhdWx0
KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVyIGlzIGEgY2hpbGQgb2YgYSB0ZXN0
ICglcikiICUgKGtleSwga2V5WzppKzFdKSkKKyAgICAgICAgbm9kZVtrZXlbLTFdXSA9IHZhbHVl
CisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoVHVw
bGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9k
ZWxldGVfbm9kZShzZWxmLl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9oYXNo
ZXNba2V5XQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVy
YXRvcltUdXBsZVtUZXh0LCAuLi5dXQorICAgICAgICAiIiJJdGVyYXRvciBvdmVyIGtleXMgaW4g
dGhlIFR5cGVEYXRhIGluIGNvZGVwb2ludCBvcmRlciIiIgorICAgICAgICBkYXRhX25vZGUgPSBz
ZWxmLl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55XV0KKyAgICAgICAganNv
bl9ub2RlID0gc2VsZi5fanNvbl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55
XV0KKyAgICAgICAgcGF0aCA9IHR1cGxlKCkgICMgdHlwZTogVHVwbGVbVGV4dCwgLi4uXQorICAg
ICAgICBzdGFjayA9IFsoZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhdGgpXQorICAgICAgICB3aGls
ZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFfbm9kZSwganNvbl9ub2RlLCBwYXRoID0gc3RhY2su
cG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YV9ub2RlLCBzZXQpIG9yIGlzaW5z
dGFuY2UoanNvbl9ub2RlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGF0YV9ub2Rl
IGlzIE5vbmUgb3IganNvbl9ub2RlIGlzIE5vbmUKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRo
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhX25vZGUgaXMg
Tm9uZSBvciBpc2luc3RhbmNlKGRhdGFfbm9kZSwgZGljdCkKKyAgICAgICAgICAgICAgICBhc3Nl
cnQganNvbl9ub2RlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShqc29uX25vZGUsIGRpY3QpCisKKyAg
ICAgICAgICAgICAgICBrZXlzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgICAg
ICAgICAgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlz
IHw9IHNldChpdGVyKGRhdGFfbm9kZSkpCisgICAgICAgICAgICAgICAgaWYganNvbl9ub2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlzIHw9IHNldChpdGVyKGpzb25fbm9k
ZSkpCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChrZXlzLCByZXZlcnNlPVRy
dWUpOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoKGRhdGFfbm9kZS5nZXQoa2V5
KSBpZiBkYXRhX25vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzb25fbm9kZS5nZXQoa2V5KSBpZiBqc29uX25vZGUgaXMgbm90IE5v
bmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggKyAo
a2V5LCkpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
aW50CisgICAgICAgIGNvdW50ID0gMAorCisgICAgICAgIHN0YWNrID0gW3NlbGYuX2RhdGFdCisg
ICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQoaXRlcnZhbHVl
cyh2KSkKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9qc29uX2RhdGFdCisgICAgICAgIHdoaWxl
IHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHYsIGxpc3QpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2YWx1ZXModikpCisKKyAg
ICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9kYXRhKSBvciBi
b29sKHNlbGYuX2pzb25fZGF0YSkKKworICAgIF9fYm9vbF9fID0gX19ub256ZXJvX18KKworICAg
IGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoQW55KSAtPiBi
b29sCisgICAgICAgICMgd2UgcHJvdmlkZSBvdXIgb3duIGltcGwgb2YgdGhpcyB0byBhdm9pZCBj
YWxsaW5nIF9fZ2V0aXRlbV9fIGFuZCBnZW5lcmF0aW5nIGl0ZW1zIGZvcgorICAgICAgICAjIHRo
b3NlIGluIHNlbGYuX2pzb25fZGF0YQorICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRoc2VnIGluIG5vZGU6Cisg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBi
b29sKGlzaW5zdGFuY2Uobm9kZSwgc2V0KSkKKworICAgICAgICBub2RlID0gc2VsZi5fanNvbl9k
YXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIHBhdGhzZWcg
aW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBsaXN0KSkKKworICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25l
CisgICAgICAgICMgbXVjaCwgbXVjaCBzaW1wbGVyL3F1aWNrZXIgdGhhbiB0aGF0IGRlZmluZWQg
aW4gTXV0YWJsZU1hcHBpbmcKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhLmNsZWFyKCkKKyAgICAg
ICAgc2VsZi5fZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuX2hhc2hlcy5jbGVhcigpCisKKyAg
ICBkZWYgc2V0X2pzb24oc2VsZiwganNvbl9kYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtU
ZXh0LCBBbnldKSAtPiBOb25lCisgICAgICAgICIiIlByb3ZpZGUgdGhlIG9iamVjdCB3aXRoIGEg
cmF3IEpTT04gYmxvYgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBncmFwaCBpcyBh
c3N1bWVkIHRvIGJlIG93bmVkIGJ5IHRoZSBUeXBlRGF0YQorICAgICAgICBvYmplY3QgYWZ0ZXIg
dGhlIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZQor
ICAgICAgICBncmFwaC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2pzb25fZGF0YToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldF9qc29uIGNhbGwgd2hlbiBKU09OIGRh
dGEgaXMgbm90IGVtcHR5IikKKworICAgICAgICBzZWxmLl9qc29uX2RhdGEgPSBqc29uX2RhdGEK
KworICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4
dCwgQW55XQorICAgICAgICAiIiJDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGEgdG8gSlNPTgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgb2JqZWN0IG1heSBjb250YWluIHJlZmVyZW5j
ZXMgdG8gdGhlIGludGVybmFsCisgICAgICAgIGRhdGEgc3RydWN0dXJlcywgYW5kIGlzIG9ubHkg
Z3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgbmV4dAorICAgICAgICBfX2dldGl0ZW1f
XywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QK
KyAgICAgICAgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZSByZXR1cm5lZCBvYmplY3QgZ3JhcGguCisK
KyAgICAgICAgIiIiCisgICAgICAgIGpzb25fcnYgPSBzZWxmLl9qc29uX2RhdGEuY29weSgpCisK
KyAgICAgICAgZGVmIHNhZmVfc29ydGVyKGVsZW1lbnQpOgorICAgICAgICAgICAgIyB0eXBlOiAo
VHVwbGVbc3RyLHN0cl0pIC0+IFR1cGxlW3N0cixzdHJdCisgICAgICAgICAgICAiIiIga2V5IGZ1
bmN0aW9uIHRvIHNvcnQgbGlzdHMgd2l0aCBOb25lIHZhbHVlcy4KKworICAgICAgICAgICAgUHl0
aG9uMyBpcyBtb3JlIHN0cmljdCB0eXBld2lzZS4gQ29tcGFyaW5nIE5vbmUgYW5kIHN0ciBmb3Ig
ZXhhbXBsZSBpcyB2YWxpZAorICAgICAgICAgICAgaW4gcHl0aG9uMiBidXQgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBpbiBweXRob24zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpZiBlbGVt
ZW50IGFuZCBub3QgZWxlbWVudFswXToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCIiLCBlbGVt
ZW50WzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dAorCisgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBqc29uX3J2LCB0dXBsZSgpKV0gICMg
dHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERpY3RbVGV4dCwgQW55XSwgVHVwbGVb
VGV4dCwgLi4uXV1dCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgZGF0YV9ub2Rl
LCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBmb3Ig
aywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAgICAgICAgICAgICBmdWxsX2tleSA9
IHBhcl9mdWxsX2tleSArIChrLCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHNl
dCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBrIG5vdCBpbiBqc29uX25vZGUKKyAgICAg
ICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0gW3NlbGYuX2hhc2hlcy5nZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmdWxsX2tleSldICsgW3QgZm9yIHQgaW4gc29ydGVkKCh0ZXN0LnRv
X2pzb24oKSBmb3IgdGVzdCBpbiB2KSwga2V5PXNhZmVfc29ydGVyKV0KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10gPSBqc29uX25vZGUuZ2V0
KGssIHt9KS5jb3B5KCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKCh2LCBqc29u
X25vZGVba10sIGZ1bGxfa2V5KSkKKworICAgICAgICByZXR1cm4ganNvbl9ydgorCisKK2NsYXNz
IFBhdGhIYXNoKFBhdGhIYXNoVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgor
ICAgICAgICAjIHR5cGU6IChUeXBlRGF0YSkgLT4gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0g
ZGF0YQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgICAgICAjIHR5cGU6IChU
dXBsZVtUZXh0LCAuLi5dKSAtPiBUZXh0CisgICAgICAgIGlmIGsgbm90IGluIHNlbGYuX2RhdGE6
CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAgICAgIGlmIGsgaW4gc2VsZi5fZGF0
YS5faGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEuX2hhc2hlc1trXQorCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcg
aW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG5vZGVbMF0gICMgdHlwZTog
aWdub3JlCisKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAidW5yZWFjaGFibGUiCisgICAgICAgIHJh
aXNlIEtleUVycm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgdik6CisgICAgICAg
ICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFRleHQpIC0+IE5vbmUKKyAgICAgICAgaWYgayBu
b3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCisKKyAgICAgICAg
aWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhLl9oYXNo
ZXNba10gPSB2CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pzb25fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2RlOgorICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub2RlWzBdID0g
diAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2Rh
dGEuX2hhc2hlc1trXSA9IHYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJrZXlzIGhlcmUgbXVzdCBtYXRjaCB1bmRlcmx5aW5nIGRhdGEiKQorCisgICAgZGVm
IF9faXRlcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1Rl
eHQsIC4uLl1dCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGxl
bihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRl
eCBiZmJhYWY4OTcxMjZkOGVlY2E2OWRjZWY5NGJiMzEzMDg4OTdmZGUyLi4yOTY1MzNhNmJhYmYx
NzZlNDUxNGJjZjNmMjllMTYzZmRmOWE5ZmRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3VwZGF0ZS5weQpAQCAtMjYsNyArMjYsOCBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAj
IHR5cGU6IHN0cgogICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW3N0cl0KICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5cGU6IGJvb2wKICAg
ICAgICAgICAgY2FjaGVfcm9vdD1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCi0gICAgICAg
ICAgIHJlYnVpbGQ9RmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICAgICByZWJ1aWxkPUZhbHNl
LCAgIyB0eXBlOiBib29sCisgICAgICAgICAgIHBhcmFsbGVsPVRydWUgICMgdHlwZTogYm9vbAog
ICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbAogICAgIGxvZ2dlci53YXJu
aW5nKCJEZXByZWNhdGVkOyB1c2UgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlIGluc3RlYWQiKQpA
QCAtMzQsNyArMzUsNyBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IHN0cgogCiAg
ICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0
aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVi
dWlsZCkKLSAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgcmV0dXJuIG1hbmlm
ZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKIAogCiBkZWYgdXBkYXRlX2Zyb21fY2xpKCoqa3dh
cmdzKToKQEAgLTUxLDcgKzUyLDggQEAgZGVmIHVwZGF0ZV9mcm9tX2NsaSgqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sidXJsX2Jhc2UiXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1aWxkIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsPWt3YXJnc1sicGFyYWxsZWwiXSkKIAogCiBkZWYg
YWJzX3BhdGgocGF0aCk6CkBAIC03OCw2ICs4MCw5IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi0tY2FjaGUtcm9vdCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PW9zLnBhdGguam9pbih3cHRfcm9vdCwgIi53cHRjYWNoZSIpLAogICAg
ICAgICBoZWxwPSJQYXRoIGluIHdoaWNoIHRvIHN0b3JlIGFueSBjYWNoZXMgKGRlZmF1bHQgPHRl
c3RzX3Jvb3Q+Ly53cHRjYWNoZS8pIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLS1uby1wYXJhbGxlbCIsIGRlc3Q9InBhcmFsbGVsIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0iRG8gbm90IHBhcmFsbGVsaXplIGJ1aWxkaW5n
IHRoZSBtYW5pZmVzdCIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRp
bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IDJlZWQ3OWY0Mjc5ZDBlYzc4YzY5M2Y2MzJiOTZlMzZj
ZTNjOTZmYTkuLmFlZmMyYzk0ZjQwZTFhZTI5ZDM2NTdmZTQxMTRmNzlmOTc1NjhiYTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtNTUsMTYgKzU1LDE2IEBAIGRl
ZiB0b19vc19wYXRoKHBhdGgpOgogCiAKIGRlZiBnaXQocGF0aCk6Ci0gICAgIyB0eXBlOiAoYnl0
ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwgYnl0ZXNdXQorICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIFRleHRdXQogICAgIGRlZiBnaXRmdW5jKGNtZCwg
KmFyZ3MpOgotICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBieXRlcworICAgICAg
ICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBUZXh0CiAgICAgICAgIGZ1bGxfY21kID0gWyJn
aXQiLCBjbWRdICsgbGlzdChhcmdzKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJv
Y2Vzcy5TVERPVVQpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
ZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgndXRm
OCcpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIHBsYXRm
b3JtLnVuYW1lKClbMF0gPT0gIldpbmRvd3MiIGFuZCBpc2luc3RhbmNlKGUsIFdpbmRvd3NFcnJv
cik6CiAgICAgICAgICAgICAgICAgZnVsbF9jbWRbMF0gPSAiZ2l0LmJhdCIKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nl
c3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RE
T1VUKS5kZWNvZGUoJ3V0ZjgnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBy
YWlzZQogCkBAIC0xMDMsNCArMTAzLDUgQEAgY2xhc3MgY2FjaGVkX3Byb3BlcnR5KEdlbmVyaWNb
VF0pOgogICAgICAgICAjIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgYXNzaWduIGFzIG5leHQgdGlt
ZSB0aGlzIHdvbid0IGJlIGNhbGxlZAogICAgICAgICBhc3NlcnQgc2VsZi5uYW1lIG5vdCBpbiBv
YmouX19kaWN0X18KICAgICAgICAgcnYgPSBvYmouX19kaWN0X19bc2VsZi5uYW1lXSA9IHNlbGYu
ZnVuYyhvYmopCisgICAgICAgIG9iai5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfX2NhY2hlZF9wcm9w
ZXJ0aWVzX18iLCBzZXQoKSkuYWRkKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Zjcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CmluZGV4IGQ0ZjQ3ZjZiZjBhYjM1YzlkYTUxNGVk
YjRjNGI3Nzk2NDRmZjkwZGQuLjdjMGZlZWI4MTY0Nzk5NzUyNzViMWExYzRkODRmMTIxNWZhYzE0
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CkBAIC0zMyw3ICszMyw3IEBA
IGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVf
cm9vdCwKICAgICAjIHR5cGU6IChieXRlcywgTWFuaWZlc3QsIE9wdGlvbmFsW2J5dGVzXSwgT3B0
aW9uYWxbYnl0ZXNdLCBib29sLCBib29sKSAtPiBGaWxlU3lzdGVtCiAgICAgdHJlZSA9IE5vbmUK
ICAgICBpZiBjYWNoZV9yb290IGlzIE5vbmU6Ci0gICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRo
LmpvaW4odGVzdHNfcm9vdCwgYiIud3B0Y2FjaGUiKQorICAgICAgICBjYWNoZV9yb290ID0gb3Mu
cGF0aC5qb2luKHRlc3RzX3Jvb3QsICIud3B0Y2FjaGUiKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhjYWNoZV9yb290KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWFrZWRpcnMo
Y2FjaGVfcm9vdCkKQEAgLTU4LDIxICs1OCwyMSBAQCBjbGFzcyBHaXRIYXNoZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkKIAogICAgIGRlZiBfbG9jYWxfY2hhbmdlcyhz
ZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAgICAgICMgdHlwZTog
KCkgLT4gU2V0W1RleHRdCiAgICAgICAgICIiImdldCBhIHNldCBvZiBmaWxlcyB3aGljaCBoYXZl
IGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHkiIiIKICAgICAgICAgYXNzZXJ0
IHNlbGYuZ2l0IGlzIG5vdCBOb25lCiAgICAgICAgICMgbm90ZSB0aGF0IGdpdCBydW5zIHRoZSBj
b21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGljaCBtYXkKICAgICAgICAgIyBu
b3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4gYSBicm93c2VyIHJl
cG8pCi0gICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0tcmVsYXRpdmUiLCBiIi0tbm8t
cmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFEIl0KKyAgICAgICAgY21kID0g
WyJkaWZmLWluZGV4IiwgIi0tcmVsYXRpdmUiLCAiLS1uby1yZW5hbWVzIiwgIi0tbmFtZS1vbmx5
IiwgIi16IiwgIkhFQUQiXQogICAgICAgICBkYXRhID0gc2VsZi5naXQoKmNtZCkKLSAgICAgICAg
cmV0dXJuIHNldChkYXRhLnNwbGl0KGIiXDAiKSkKKyAgICAgICAgcmV0dXJuIHNldChkYXRhLnNw
bGl0KCJcMCIpKQogCiAgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6Ci0gICAgICAgICMgdHlwZTog
KCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAgICAgICAgICIiIgogICAgICAgICBBIGRpY3Qg
b2YgcmVsX3BhdGggLT4gY3VycmVudCBnaXQgb2JqZWN0IGlkIGlmIHRoZSB3b3JraW5nIHRyZWUg
bWF0Y2hlcyBIRUFEIGVsc2UgTm9uZQogICAgICAgICAiIiIKLSAgICAgICAgaGFzaF9jYWNoZSA9
IHt9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAgICAgICAgaGFzaF9j
YWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAKICAgICAgICAg
aWYgc2VsZi5naXQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBoYXNoX2NhY2hlCkBAIC04
MSw5ICs4MSw5IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAgICAjIG5vdCBiZSB0
aGUgcm9vdCBvZiB0aGUgZ2l0IHJlcG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dzZXIgcmVwbykKICAg
ICAgICAgY21kID0gWyJscy10cmVlIiwgIi1yIiwgIi16IiwgIkhFQUQiXQogICAgICAgICBsb2Nh
bF9jaGFuZ2VzID0gc2VsZi5fbG9jYWxfY2hhbmdlcygpCi0gICAgICAgIGZvciByZXN1bHQgaW4g
c2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6IGJ5dGVzCi0gICAgICAg
ICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIsIDEpCi0gICAgICAgICAg
ICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdl
cyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxm
LmdpdCgqY21kKS5zcGxpdCgiXDAiKVs6LTFdOiAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICBk
YXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoIlx0IiwgMSkKKyAgICAgICAgICAgIGhhc2hf
Y2FjaGVbcmVsX3BhdGhdID0gTm9uZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9jaGFuZ2VzIGVsc2Ug
ZGF0YS5zcGxpdCgiICIsIDMpWzJdCiAKICAgICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKIApAQCAt
MTc0LDcgKzE3NCw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogCiAKIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToKLSAgICBmaWxlX25hbWUgPSBi
Im10aW1lLmpzb24iCisgICAgZmlsZV9uYW1lID0gIm10aW1lLmpzb24iCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgbWFuaWZlc3RfcGF0aCwgcmVidWls
ZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKGJ5dGVzLCBieXRlcywgYnl0ZXMsIGJvb2wpIC0+
IE5vbmUKQEAgLTIyMiwxNiArMjIyLDE2IEBAIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToK
IAogCiBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVNYXBwaW5nKTogICMg
dHlwZTogaWdub3JlCi0gICAgZmlsZV9uYW1lID0gYiJnaXRpZ25vcmUuanNvbiIKKyAgICBmaWxl
X25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCiAKICAgICBkZWYgY2hlY2tfdmFsaWQoc2VsZiwgZGF0
YSk6CiAgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBBbnldKSAtPiBEaWN0W0FueSwgQW55XQot
ICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RzX3Jvb3QsIGIiLmdp
dGlnbm9yZSIpCisgICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdHNf
cm9vdCwgIi5naXRpZ25vcmUiKQogICAgICAgICBtdGltZSA9IG9zLnBhdGguZ2V0bXRpbWUoaWdu
b3JlX3BhdGgpCi0gICAgICAgIGlmIGRhdGEuZ2V0KGIiL2dpdGlnbm9yZV9maWxlIikgIT0gW2ln
bm9yZV9wYXRoLCBtdGltZV06CisgICAgICAgIGlmIGRhdGEuZ2V0KCIvZ2l0aWdub3JlX2ZpbGUi
KSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBU
cnVlCiAgICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGRhdGFbYiIvZ2l0aWdub3Jl
X2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgICAgICBkYXRhWyIvZ2l0aWdu
b3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCiAgICAgICAgIHJldHVybiBkYXRhCiAK
ICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CkBAIC0yODYsNyArMjg2LDcgQEAgZGVm
IHdhbGsocm9vdCk6CiAgICAgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAogCiAgICAgcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChyb290KQotICAgIHN0YWNrID0gZGVxdWUoWyhyb290LCBiIiIpXSkK
KyAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgIiIpXSkKIAogICAgIHdoaWxlIHN0YWNrOgogICAg
ICAgICBkaXJfcGF0aCwgcmVsX3BhdGggPSBzdGFjay5wb3BsZWZ0KCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCmluZGV4IGEwMTU0MjY4N2IxYTAxNmRm
YjQ3NTI1ZTBhZTJlZDRhYTJiMjE3ZjguLjM4OGZiYjExZWQ5ZDhkYTAxNDNmODJlZGMwMmQxMGM5
NzliZTM3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMjMsNiArMjMsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3NvdXJjZWZpbGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0
ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYWM4
ZWRkMzdkM2FjMjkwNDEzM2ExMmVlOWU3NTUwZGQ1YTQ4NzIzOC4uYjk0M2I2ZDA4OWE0YjhmODFl
OWI2ZTIzYzc2ODgwZmI5M2NmNjY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCkBAIC0xLDEyICsx
LDEzIEBACiBbbXlweV0KICNjaGVja191bnR5cGVkX2RlZnMgPSBUcnVlCi1kaXNhbGxvd191bnR5
cGVkX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCiBkaXNhbGxvd19p
bmNvbXBsZXRlX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19zdWJjbGFzc2luZ19hbnkgPSBUcnVlCiBk
aXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQogZGlzYWxsb3dfdW50eXBlZF9kZWNvcmF0b3Jz
ID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQogbm9faW1wbGljaXRfb3B0aW9u
YWwgPSBUcnVlCitzdHJpY3RfZXF1YWxpdHkgPSBUcnVlCiB3YXJuX3JlZHVuZGFudF9jYXN0cyA9
IFRydWUKIHdhcm5fcmV0dXJuX2FueSA9IFRydWUKIHdhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmluZGV4IDk5MzI0YjJhYWQxNGQ5MjFm
NDY5ZjUyOTM0ZjdmZjkzNzRhMWQ5ZWUuLmRkNmNlYjZmZWE0Yjk3M2MwMTI0ZGY0MzgyZjlmMWEz
YTlkNWEwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCkBAIC0yMiw2ICsy
Miw3IEBAIGlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIsRTMwMyxF
MzA1LEU0MDIsRTczMSxXNTA0LFc2MDEsVzYwNSxXCiBleGNsdWRlID0KICAgICAudG94LAogICAg
IHB5d2Vic29ja2V0LAorICAgIHF1aWMsCiAgICAgdGhpcmRfcGFydHksCiAgICAgd3B0c2VydmUv
ZG9jcy9jb25mLnB5LAogICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZh
bGlkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNjMWRj
NmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4
LmluaQpAQCAtMCwwICsxLDI3IEBACitbZmxha2U4XQorc2VsZWN0ID0gRSxXLEYsTgorIyBFMTI4
OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAorIyBF
MTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dp
Y2FsIGxpbmUKKyMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9w
ZXJhdG9yCisjIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZ
LCBvciDigJg64oCZCisjIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8g
cGFyYW1ldGVyIGVxdWFscworIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRo
IOKAmCMg4oCYCisjIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKKyMgRTMw
MzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCisjIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGlu
ZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCisjIEU0MDI6IG1vZHVsZSBsZXZlbCBp
bXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCisjIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEg
ZXhwcmVzc2lvbiwgdXNlIGEgZGVmCisjIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9w
ZXJhdG9yCisjIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisjIE44MDE6IGNsYXNzIG5h
bWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgorIyBOODAyOiBmdW5jdGlvbiBuYW1l
IHNob3VsZCBiZSBsb3dlcmNhc2UKKyMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxk
IGJlIGxvd2VyY2FzZQoraWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMw
MixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgorZXhjbHVkZSA9
CisgICAgLnRveCwKKyAgICBweXdlYnNvY2tldCwKKyAgICB0aGlyZF9wYXJ0eSwKKyAgICB3cHRy
dW5uZXIsCisgICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAorICAgIHdwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CittYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHkzNi1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5YTAyM2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi1bZmxha2U4XQotc2VsZWN0ID0gRSxXLEYsTgotIyBFMTI4OiBjb250
aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAotIyBFMTI5OiB2
aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dpY2FsIGxp
bmUKLSMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9wZXJhdG9y
Ci0jIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZLCBvciDi
gJg64oCZCi0jIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8gcGFyYW1l
dGVyIGVxdWFscwotIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRoIOKAmCMg
4oCYCi0jIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKLSMgRTMwMzogdG9v
IG1hbnkgYmxhbmsgbGluZXMgKDMpCi0jIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMgYWZ0
ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCi0jIEU0MDI6IG1vZHVsZSBsZXZlbCBpbXBvcnQg
bm90IGF0IHRvcCBvZiBmaWxlCi0jIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEgZXhwcmVz
c2lvbiwgdXNlIGEgZGVmCi0jIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9y
Ci0jIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCi0jIE44MDE6IGNsYXNzIG5hbWVzIHNo
b3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlvbiBuYW1lIHNob3Vs
ZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxkIGJlIGxv
d2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMwMixFMzAz
LEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgotZXhjbHVkZSA9Ci0gICAg
LnRveCwKLSAgICBweXdlYnNvY2tldCwKLSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRydW5uZXIs
Ci0gICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAotICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9pbnZhbGlkLnB5Ci1tYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9S
RUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNjRiNzAxY2ZiODU5MDBjMjE5NDYzNjI0
ZTZhZmEyOTlhMzgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzAg
QEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCitbUVVJQ10oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9vbHMuCisKKyMgUXVp
Y1RyYW5zcG9ydAorW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWljX3RyYW5zcG9ydF9z
ZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKK1tRdWljVHJhbnNwb3J0XShodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWljKSBzZXJ2ZXIKK2Zv
ciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fp
b3F1aWMvKSwgYW5kIHRlc3QKK2F1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0b20gaGFuZGxlcnMg
YnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgorW3dwdC93ZWJ0cmFuc3BvcnQvcXVpYy9oYW5k
bGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCisKKyMjIEN1c3RvbSBI
YW5kbGVycworVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rpb25zIGRlZmluZWQg
aW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KKworIC0gaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uIGlz
IGNhbGxlZCBkdXJpbmcgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MuCisgICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRocmVlIGFyZ3VtZW50czoKKyAgIAorICAgLSBjb25uZWN0
aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgLSBvcmlnaW46
IHN0ciBUaGUgb3JpZ2luIG9mIHRoZSBpbml0aWF0b3IuCisgICAtIHF1ZXJ5OiBEaWN0W3N0ciwg
c3RyXSBUaGUgZGljdGlvbmFyeSBvZiBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBVUkwgb2YgdGhl
CisgICAgICAgICAgICBjb25uZWN0aW9uLgorCisgICBBIGhhbmRsZXIgY2FuIGFib3J0IHRoZSBj
bGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzIGVpdGhlciBieSByYWlzaW5nIGFuCisgICBleGNlcHRp
b24gb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbi4KKwkgICAgCisgLSBoYW5kbGVfZXZlbnQgaXMg
Y2FsbGVkIHdoZW4gYSBRdWljRXZlbnQgYXJyaXZlcy4KKyAgIC0gY29ubmVjdGlvbjogYWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gZXZlbnQ6IGFpb3F1aWMucXVp
Yy5ldmVudHMuUXVpY0V2ZW50CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB1bnRp
bCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBmaW5pc2hlcworICAgc3VjY2Vzc2Z1bGx5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0
X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjE2Y2YxM2ZmZmMxYmJhODdkNjEwZTIyY2Y2MGUxMTA0M2Y1MzkxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKQEAgLTAsMCArMSwxMiBAQAorVG8gZ2VuZXJhdGUgY2Vy
dC5rZXkgYW5kIGNlcnQucGVtOgorCisgMS4gUmVtb3ZlIHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBh
bmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluIC4uLy4uL2NlcnRzLgorIDEuIEZyb20gdGhlIHJv
b3QsIHJ1bgorICAgIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29scy9xdWljL2NlcnRzL2NvbmZp
Zy5qc29uYCBhbmQgdGVybWluYXRlIGl0CisgICAgYWZ0ZXIgaXQgaGFzIHN0YXJ0ZWQgdXAuCisg
MS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkgdG8gdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LmtleS4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBl
bSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQucGVtLgorIDEuIFJlY292ZXIgdGhlIG9yaWdpbmFs
IHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluCisgICAg
Li4vLi4vY2VydHMuCisKK1NlZSBhbHNvOiAuLi8uLi9jZXJ0cy9SRUFETUUubWQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5r
ZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTkzY2RmYTU0MzcyOGI2MzY5YjA1ZWVmZTIwODExY2Q2NjYyYjcxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpAQCAtMCwwICsxLDI4IEBACistLS0tLUJF
R0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV3QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktv
d2dnU21BZ0VBQW9JQkFRRGJ5UHVpQkdweGhhdkYKKzNqN3BJNmcrQTBnQzRCVExUcU1PYktTVGtR
V3NqcTFHT2QyTEExbHdUUExPYndydmhJVUZ6YndvSWJPd29QTWUKK01ranNzRkNIRzNGTWo1NmNL
aUFRMkRGSTZkSzVQakdVVk5TUnhrL0Y0SGgyWng5RFRFTmwvRWIvY1JUMnl1dSsKK1c5SEN1L0JX
ZmJXd2x3d041dnh5bmVDb2g1Y0JCL2pkMUtUT1JndVlwdWF0SGI4NUFENUJSaFlMWHdIRjd5VkgK
K05WeEhldUdsSzMxeXVZQ0hOS3ZCSERnWkY1VHA4RnFLWG5WVStQbEtYQ1NVNTYwMmMyVTV4SElG
dktUeWlabE0KK2NZWE5TVXAwbGNOdy9pVFNWdHNQRTRrMXN0dTZxa1dkVDdIL3VVK0dVQithTHFP
K3N2QS9zOUdHWDhIWmd0K3IKK3ZTRkU4bElKQWdNQkFBRUNnZ0VCQUpBOTZEOWRqSW95Z3hoYUVv
bXBtQ29TdHprRDNVSE11eUNsVnFGdVJQNEoKK3FWaDBjNXhmTjF5SGM3YmRrNXk4S1IwMDk2NlM1
NzRjODFHM0NMc2x2OFBiMDlDK1ZRY0Njb2I3aStUaGFDV2cKKzFxTVZ4V2hpY1VwWlZsWEd1ZkxO
NDFIVWJyZ0lmQXk0QWwydEh3NGhqOHNEdDdGTWdHSERYWnpQVm5qa2U4cjEKK085WWlKbDFReDRM
N3ZNV3J1R2E5UVdqRmdIbkcrdWhhS2pzTDJ2N0pRT0d5NXQ4YWJvVnliN2g4ckdnL21DK2UKK0hJ
WU91Y1YxYUVNZ1lWYUFuaEdzS01Ia3g1QTF4V3BYQlNydUcrR1JCeC9rWFdaK2tDTmNrTFh1VmRy
aHE0SEkKK0FkYnhJenFRVFBNWHBPM1JBdWp5cnhrSGFiRU5NUEEvRkdINHN6bWRMb0VDZ1lFQTl6
OHBlNy92U2xXZ2Zoc0YKK3o1UW53V0h5RmpydWhnRC8yc2E0TEIvY213VFFkR3c4RTVUTkhEYkNn
bVM0OTlEWlVYSVp1Qk9UZWtkRVZEUWEKK25nOFZ5TDNvN0Rtcys1aVBpNWNxc2NwMUtrakxFTXlQ
cHFzNEpUdWl4UnBqbU1meWNkeFZUcFhoY3VxbkpwVEwKK1FDOXBSNU4velpjQU1EbEJ2MEZ6YzhU
NzhYa0NnWUVBNDVEdWVXR0hWZjJ1NHVNWXlXeHlaaGFORGFnbDEzeXgKKy9vU1NVVHpvTHZTcEdR
eEtrditmeFNOcUwzbnU1SWE2dUQ0R3U1TnViUDRIci9WZVNLUmZta1QxbHV2RmNWZkMKK2tuOHI4
YnNzWnE4NTVBVkp4WGE1SzFhdVdqQ3VGSGowcFlmNTZzZmhrUHhwWTBSUUVna3Z1RTNpb3NRMTJn
RlgKK3Z3MTQ3RnRRVVJFQ2dZRUE4NVJwVlA0NVMzMWlPUHA4VmcxNndSeXllRTRrc1NZSTZrcitK
SkpiTHVtbVNCeGQKK2Ixa1lYU1JocWo1NnI4STBadlhHK3I5bWVuLzloQXMwOGVTZ3JIelVITzJS
U3VqNCtpZTZLeC92SC9KSkJFclQKK2R2cVZ2TENzNGd2bWRSeis4RWVHVDM1L2RreFEwa1NpbktC
WTB1Z3diNlhFekwyTDFWVXczYXdDSGRrQ2dZRUEKK3F0UUlnT3Y2dVUybmRFREFRYXg4TURDcmtG
M3lrbEhVR0ZrU3NaTkVSTU43RVFlT0Q4MSs5WEZCYkFSZmxnT2gKK3RWOHlsS3IzRVRDZE9yUzZJ
MVBwUkppUnQ4cWp2Qk1DU0JEWlB5eWdCekZ4QnNBRmdncytzODd0TVYwcndNaVAKKzlwY2R2K1p1
YVBWaWM1YzdlRjZYQ1FiR3BDTWd2ZGVXTkNCNzd3b1pQOUVDZ1lFQWxvYmtQR0RZQ3kvUmFWaVUK
K0ZicTVHbzZ3MHBNVm5MellibjRHaDFBSlBlUUtJU3FYdEpaN3RxcGRXK2k3cXprTHc3NEVMYVlD
QlIyWkVscmoKK0VWZTVhUk94NlRGTjlSbmprRm55djlMZXlZTCtZUGM4QUl3VlVDZVNQaWtTR0xG
cEpmYS9qd0RtV2gzdkhtbUEKK05SVVA0MHdidEJpNDJDMnVkclR4VVdzSHhxYz0KKy0tLS0tRU5E
IFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUzNjdjODlmZjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCkBAIC0wLDAgKzEsMjQwIEBACitDZXJ0aWZp
Y2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAzICgweDIpCisgICAgICAgIFNlcmlh
bCBOdW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKKyAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0t
dGVzdHMKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEFwciAyMCAx
MToyMDo1NiAyMDIwIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDE4IDExOjIwOjU2
IDIwMzAgR01UCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CisgICAgICAg
IFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0
aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDgg
Yml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAgICAgICAgIDAwOmRi
OmM4OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgorICAgICAgICAgICAgICAg
ICAgICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5Mzo5MToKKyAgICAg
ICAgICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6NzA6NGM6ZjI6Y2U6
NmY6CisgICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJjOjI4OjIxOmIzOmIw
OmEwOmYzOjFlOjMyOgorICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1MDo4NzoxYjo3MTo0
Yzo4Zjo5ZTo5YzoyYToyMDoxMDpkODoKKyAgICAgICAgICAgICAgICAgICAgMzE6NDg6ZTk6ZDI6
Yjk6M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6CisgICAgICAgICAgICAgICAgICAgIDc4
Ojc2OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgorICAgICAgICAgICAg
ICAgICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5NzowYzowZDplNjoKKyAg
ICAgICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6Zjg6ZGQ6ZDQ6YTQ6
Y2U6NDY6CisgICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFkOmJmOjM5OjAwOjNl
OjQxOjQ2OjE2OjBiOjVmOgorICAgICAgICAgICAgICAgICAgICAwMTpjNTplZjoyNTo0NzozNTo1
Yzo0Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKKyAgICAgICAgICAgICAgICAgICAgODA6ODc6MzQ6
YWI6YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6CisgICAgICAgICAgICAgICAgICAg
IDc1OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0OgorICAgICAgICAg
ICAgICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0OTo0YTo3NDo5NToK
KyAgICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6MTM6ODk6MzU6YjI6
ZGI6YmE6YWE6CisgICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZmOmI5OjRmOjg2OjUw
OjFmOjlhOjJlOmEzOmJlOmIyOgorICAgICAgICAgICAgICAgICAgICBmMDozZjpiMzpkMTo4Njo1
ZjpjMTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKKyAgICAgICAgICAgICAgICAgICAgNTI6MDkK
KyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAg
ICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElk
ZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdDOjQxOjJCOjNCOjlG
OjFCOjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCisgICAgICAgICAgICBYNTA5djMgQXV0aG9y
aXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjow
NzowNTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQworCisgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAgICAgICBYNTA5djMg
RXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRo
ZW50aWNhdGlvbgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTog
CisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTku
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3
dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4t
LWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0CisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAg
ICAgICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1OmQ1OmRjOjk5Ojlm
OjNmOgorICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6NGU6Yzg6ZDQ6YWE6
MzQ6OTU6ZTQ6OWU6CisgICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMTozMTo2NzplNTphNjpk
YTo4NTo2YjowZjpkNzo2NDpiNzoKKyAgICAgICAgIGU3OmViOmZlOjA5OmI2Ojg4OmUxOjc0OjFk
OjBjOjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgorICAgICAgICAgN2M6YmE6ZTY6ZmI6NTI6MWQ6
NTg6Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6CisgICAgICAgICA0MTo3MTo5OTph
MzoxYTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoKKyAgICAgICAgIGE5
OmQ4OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAxOjk5OjdhOgorICAg
ICAgICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6ZWM6NzU6YjI6Nzc6
MTE6CisgICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpmZDphOTowYjphMjpl
ZDoyZDoxYzo2ZToKKyAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEwOmNhOmU4OmU2OmUw
OjdhOmE5OmY0OjI2Ojk0OjZiOgorICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6M2U6ZTA6ZWY6ZDI6
YmU6MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6CisgICAgICAgICAwYzoyNDo4Mzo3MjplMjplNDo2
ZjoyNTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKKyAgICAgICAgIGMzOmQ2OjA2OmFl
OjFkOmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgorICAgICAgICAgMTc6
ODc6MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6NGQ6MDQ6CisgICAg
ICAgICBmZjo2MDpmZTplMworLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlndkRDQ0g2
U2dBd0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCitZ
aTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3MHpNREEwTVRneE1U
SXdOVFphCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUlJQklqQU5C
Z2txaGtpRzl3MEJBUUVGCitBQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1JxY1lXcnhkNCs2U09v
UGdOSUF1QVV5MDZqRG15a2s1RUZySTZ0CitSam5kaXdOWmNFenl6bThLNzRTRkJjMjhLQ0d6c0tE
ekhqSkk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4CitsRlRVa2NaUHhlQjRkbWNmUTB4RFpm
eEcvM0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0CiszZFNremtZTG1LYm1y
UjIvT1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdSZVU2ZkJhCitpbDUx
VlBqNVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGswbGJiRHhPSk5iTGJ1
cXBGCituVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpTQ1FJREFRQUJvNEll
QkRDQ0hnQXdDUVlECitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZOOFFTczdueHNOMXFt
NHQwL21ZVnd3SHdZRFZSMGpCQmd3CitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3
WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCitDQ3NHQVFVRkJ3TUJNSUlkandZRFZSMFJC
SUlkaGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2CitjRGd1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0E1CitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXNXZkQzEz
CitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hW
dmNETXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlWYjNBeExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTVM1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1TVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F6T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4
T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EzTnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TkM1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F6TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E0Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TUM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F5TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlaYjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxtNXZkQzEzCitaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpi
M0ExCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6CitkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
M0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSVpiM0EwTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2CitkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TlRN
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2
CitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpF
dWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0E0CitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNk
ekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205
d01qRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2CitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitH
bTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xtNXZkQzEzWldJdGNH
eGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TmpVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxj
M1NDR205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2CitkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDCitHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNUxtNXZkQzEz
WldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TnprdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCitMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNETTVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNK
dExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTRMbTV2
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDCitHbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZeUxt
NXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitPQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNE
STJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
TTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDCitHbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0ExTkM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitOeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4w
Z2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlM
WEJzCitZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEUXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3T1RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0ExCitOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
CitaWE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOQzV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNERXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F4TXk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRsCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5CitO
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwCitaWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhO
UzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNERTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mk15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpndWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFi
M0EyTmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsCitZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0EzCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTROeTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaHQzZDNjeUxuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2Qz
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5kM2R5NTNkM2N5CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNN
aTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCitNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1Citk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2Qz
Y3VkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsCitjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0CitMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0kzZDNk
ekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0CitiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNk
bVV0CitObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCitlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzCitkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0
CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTE0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNXaDJNamhoTG5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNX
aDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0Cith
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2Rt
VXRObXhoCitaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akYzZDNjdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxCitObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2Rq
STRZUzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5CitkM2QzTVM1NGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1ND
TW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5CitiUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2
ZEMxM1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MlpTMDJiR0ZrCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCithM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG5odUxTMXNkbVV0
Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0CitObXhoWkM1
NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
CitjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyCitNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCitLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBdUxWV3Ew
WmFncU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCitOSlhrbmt2a2RPVEU3QkV4WitX
bTJvVnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpOCithS05Wakp0WHU0
a3lFRUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRmZUhRR1plazl5CitS
Mm1jbUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1RUYxRENtWkFRUXl1
am00SHFwCis5Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1RzhscU83RkVvbloz
WStDRk1QV0JxNGR1M3M4CisvSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5Nk5DNkJtOU5CUDln
L3VNPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5q
c29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTZkMDUyOWZiOTQ0OWM0YmZiMGM5
MzU0NmE3OTYyYTVhYmQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24KQEAg
LTAsMCArMSwxNyBAQAoreworICAgICJwb3J0cyI6IHsKKyAgICAgICAgImh0dHAiOiBbXSwKKyAg
ICAgICAgImh0dHBzIjogWyJhdXRvIl0sCisgICAgICAgICJ3cyI6IFtdLAorICAgICAgICAid3Nz
IjogW10KKyAgICB9LAorICAgICJjaGVja19zdWJkb21haW5zIjogZmFsc2UsCisgICAgInNzbCI6
IHsKKyAgICAgICAgInR5cGUiOiAib3BlbnNzbCIsCisgICAgICAgICJvcGVuc3NsIjogeworICAg
ICAgICAgICAgImR1cmF0aW9uIjogMzY1MCwKKyAgICAgICAgICAgICJmb3JjZV9yZWdlbmVyYXRl
IjogZmFsc2UsCisgICAgICAgICAgICAiYmFzZV9wYXRoIjogInRvb2xzL2NlcnRzIgorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZmM1YTE5ZjNjYjlkNjQzM2FlNDM0MzUxM2U4NDQ1ZGU4
NDg4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwy
MCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9jZXJ0cy9jb25maWcuanNvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDQzMjJlZWQzYmFmNDY3YzZkODA5ZmMyNmFjOTU4NTk4OTQyMzExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAic2Vy
dmVxdWljIjogeworICAgICJwYXRoIjogInNlcnZlLnB5IiwKKyAgICAic2NyaXB0IjogInJ1biIs
CisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAicHkzb25seSI6IHRydWUsCisgICAg
ImhlbHAiOiAiU3RhcnQgdGhlIFFVSUMgc2VydmVyIiwKKyAgICAidmlydHVhbGVudiI6IHRydWUs
CisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICJyZXF1aXJlbWVudHMudHh0IgorICAgIF0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9y
dF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNGFkMTdmMTk1YzZlNWQyMzNlODRhOWIyMzkwNGNj
Y2ZlY2NkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKQEAgLTAs
MCArMSwyNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IGFzeW5jaW8KK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdXJsbGliLnBhcnNlCitmcm9tIHR5cGluZyBpbXBv
cnQgRGljdCwgT3B0aW9uYWwKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGlt
cG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBpbXBv
cnQgRU5EX1NUQVRFUworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRh
UmVjZWl2ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tl
dAorCitTRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5zcG9ydCcKKworaGFuZGxlcnNfcGF0aCA9
IE5vbmUKKworCitjbGFzcyBFdmVudEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0OiBEaWN0KToKKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLmdsb2JhbF9k
aWN0ID0gZ2xvYmFsX2RpY3QKKworICAgIGRlZiBoYW5kbGVfY2xpZW50X2luZGljYXRpb24oCisg
ICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgb3JpZ2luOiBzdHIsCisgICAgICAgICAgICBx
dWVyeTogRGljdFtzdHIsIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSAnaGFuZGxlX2Ns
aWVudF9pbmRpY2F0aW9uJworICAgICAgICBpZiBuYW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6Cisg
ICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25hbWVdKHNlbGYuY29ubmVjdGlvbiwgb3JpZ2lu
LCBxdWVyeSkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkg
LT4gTm9uZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfZXZlbnQnCisgICAgICAgIGlmIG5hbWUg
aW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3RbbmFtZV0o
c2VsZi5jb25uZWN0aW9uLCBldmVudCkKKworCitjbGFzcyBRdWljVHJhbnNwb3J0UHJvdG9jb2wo
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCisgICAgICAgIHNlbGYuc3RyZWFtcyA9IGRpY3QoKQorICAgICAgICBzZWxmLnBlbmRpbmdf
ZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZGF0YSA9IGInJworICAgICAgICBz
ZWxmLmhhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBwcmVmaXggPSAnISEnCisgICAgICAg
IGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ1FVSUMgZXZlbnQ6ICVzJyAlIHR5cGUoZXZlbnQp
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuY2xpZW50X2luZGljYXRp
b25fZmluaXNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZXZlbnQsIFN0
cmVhbURhdGFSZWNlaXZlZCkgYW5kCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cmVhbV9p
ZCA9PSAyKToKKyAgICAgICAgICAgICAgICAjIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSAnQ2xpZW50IGluZGljYXRpb24gZXJyb3I6ICcKKyAgICAg
ICAgICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgKz0gZXZlbnQuZGF0YQorICAg
ICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEpID4gNjU1MzU6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndG9vIGxhcmdlIGRhdGEgZm9y
IGNsaWVudCBpbmRpY2F0aW9uJykKKyAgICAgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFt
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfY2xpZW50X2luZGljYXRpb24oKQor
ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0g
J0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIHNl
bGYucGVuZGluZ19ldmVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIu
aGFuZGxlX2V2ZW50KGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMu
Y2xlYXIoKQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5p
c2hlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAgICAgICAgICAgIHNl
bGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZlbnQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKyAgICAgICAgICAgIGxvZ2dp
bmcubG9nKGxvZ2dpbmcuV0FSTiwgcHJlZml4ICsgc3RyKGUpKQorICAgICAgICAgICAgc2VsZi5j
bG9zZSgpCisKKyAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2VsZiwgYnMpOgorICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAga2V5X2IgPSBicy5yZWFkKDIpCisgICAgICAg
ICAgICBpZiBsZW4oa2V5X2IpID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICBsZW5ndGhfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxlbihrZXlfYikgIT0g
MjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBnZXQgIktleSIg
ZmllbGQnKQorICAgICAgICAgICAgaWYgbGVuKGxlbmd0aF9iKSAhPSAyOgorICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiTGVuZ3RoIiBmaWVsZCcpCisgICAg
ICAgICAgICBrZXkgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGtleV9iKVswXQorICAgICAgICAgICAg
bGVuZ3RoID0gc3RydWN0LnVucGFjaygnIUgnLCBsZW5ndGhfYilbMF0KKyAgICAgICAgICAgIHZh
bHVlID0gYnMucmVhZChsZW5ndGgpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpICE9IGxlbmd0
aDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RydW5jYXRlZCAiVmFsdWUiIGZp
ZWxkJykKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQorCisgICAgZGVmIHByb2Nlc3Nf
Y2xpZW50X2luZGljYXRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgb3JpZ2luID0gTm9uZQor
ICAgICAgICBvcmlnaW5fc3RyaW5nID0gTm9uZQorICAgICAgICBwYXRoID0gTm9uZQorICAgICAg
ICBwYXRoX3N0cmluZyA9IE5vbmUKKyAgICAgICAgS0VZX09SSUdJTiA9IDAKKyAgICAgICAgS0VZ
X1BBVEggPSAxCisgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5wYXJzZV9jbGllbnRf
aW5kaWNhdGlvbigKKyAgICAgICAgICAgICAgICBpby5CeXRlc0lPKHNlbGYuY2xpZW50X2luZGlj
YXRpb25fZGF0YSkpOgorICAgICAgICAgICAgaWYga2V5ID09IEtFWV9PUklHSU46CisgICAgICAg
ICAgICAgICAgb3JpZ2luX3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKG9yaWdpbl9zdHJpbmcpCisgICAgICAgICAg
ICBlbGlmIGtleSA9PSBLRVlfUEFUSDoKKyAgICAgICAgICAgICAgICBwYXRoX3N0cmluZyA9IHZh
bHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51cmxwYXJz
ZShwYXRoX3N0cmluZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBt
dXN0IGlnbm9yZSB1bnJlY29nbml6ZWQgZmllbGRzLgorICAgICAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLAorICAgICAgICAgICAgICAgICAgICAnb3Jp
Z2luID0gJXMsIHBhdGggPSAlcycgJSAob3JpZ2luX3N0cmluZywgcGF0aF9zdHJpbmcpKQorICAg
ICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8g
b3JpZ2luIGlzIGdpdmVuJykKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdObyBwYXRoIGlzIGdpdmVuJykKKyAgICAgICAgaWYgb3JpZ2luLnNj
aGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1lICE9ICdodHRwJzoKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9yaWdpbl9zdHJpbmcpCisg
ICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5nKQorCisgICAgICAgICMgVG8g
bWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2NlcHQgb25seSBzaW1wbGUgcGF0aCBzdHJp
bmdzLgorICAgICAgICBtID0gcmUuY29tcGlsZSgnXi8oW2EtekEtWjAtOVwuX1wtXSspJCcpLm1h
dGNoKHBhdGgucGF0aCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICVzJyAlIHBhdGhfc3RyaW5nKQorCisgICAgICAgIGhh
bmRsZXJfbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgcXVlcnkgPSBkaWN0KHVybGxpYi5wYXJz
ZS5wYXJzZV9xc2wocGF0aC5xdWVyeSkpCisgICAgICAgIHNlbGYuaGFuZGxlciA9IHNlbGYuY3Jl
YXRlX2V2ZW50X2hhbmRsZXIoaGFuZGxlcl9uYW1lKQorICAgICAgICBzZWxmLmhhbmRsZXIuaGFu
ZGxlX2NsaWVudF9pbmRpY2F0aW9uKG9yaWdpbl9zdHJpbmcsIHF1ZXJ5KQorICAgICAgICBpZiBz
ZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IFRydWUKKyAgICAgICAgbG9nZ2luZy5s
b2cobG9nZ2luZy5JTkZPLCAnQ2xpZW50IGluZGljYXRpb24gZmluaXNoZWQnKQorCisgICAgZGVm
IGNyZWF0ZV9ldmVudF9oYW5kbGVyKHNlbGYsIGhhbmRsZXJfbmFtZTogc3RyKSAtPiBOb25lOgor
ICAgICAgICBnbG9iYWxfZGljdCA9IHt9CisgICAgICAgIHdpdGggb3BlbihoYW5kbGVyc19wYXRo
ICsgJy8nICsgaGFuZGxlcl9uYW1lKSBhcyBmOgorICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwg
Z2xvYmFsX2RpY3QpCisgICAgICAgIHJldHVybiBFdmVudEhhbmRsZXIoc2VsZiwgZ2xvYmFsX2Rp
Y3QpCisKKyAgICBkZWYgaXNfY2xvc2luZ19vcl9jbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgaWYgc2VsZi5fcXVpYy5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGlmIHNlbGYuX3F1aWMuX3N0YXRlIGluIEVORF9TVEFURVM6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBTZXNzaW9uVGlj
a2V0U3RvcmU6CisgICAgJycnCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lv
biB0aWNrZXRzLgorICAgICcnJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisg
ICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxm
LCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1
cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9u
PSdRVUlDIHNlcnZlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy1jJywK
KyAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVx
dWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20g
dGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0taG9zdCcsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBkZWZhdWx0PSc6Oics
CisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgKGRlZmF1bHRz
IHRvIDo6KScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXBv
cnQnLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMzLAorICAgICAgICBo
ZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0byA0NDMzKScsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctaycsCisgICAgICAgICct
LXByaXZhdGUta2V5JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUs
CisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZp
ZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWhh
bmRsZXJzLXBhdGgnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNUcmFuc3BvcnQgZXZlbnQg
aGFuZGxlcnMnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLXYn
LAorICAgICAgICAnLS12ZXJib3NlJywKKyAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCisgICAgKQorICAgIGFyZ3Mg
PSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAg
ICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMn
LAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dp
bmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24o
CisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsnd3EtdnZ2LTAxJ10gKyBbJ3NpZHVjayddLAorICAg
ICAgICBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1
NTM2LAorICAgICkKKworICAgIGhhbmRsZXJzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5leHBhbmR1c2VyKGFyZ3MuaGFuZGxlcnNfcGF0aCkpCisgICAgbG9nZ2luZy5sb2cobG9nZ2lu
Zy5JTkZPLCAncG9ydCA9ICVzJyAlIGFyZ3MucG9ydCkKKyAgICBsb2dnaW5nLmxvZyhsb2dnaW5n
LklORk8sICdoYW5kbGVycyBwYXRoID0gJXMnICUgaGFuZGxlcnNfcGF0aCkKKworICAgICMgbG9h
ZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQorICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2No
YWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3MucHJpdmF0ZV9rZXkpCisKKyAgICB0aWNrZXRfc3Rv
cmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50
X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBzZXJ2ZSgKKyAg
ICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAgICAgIGFyZ3MucG9ydCwKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1RdWljVHJhbnNwb3J0UHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICkKKyAgICApCisgICAgdHJ5OgorICAgICAgICBs
b29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAg
IHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY1MjYwYzc4ZjdhYzg1NzliZDkxMWJjZjljY2U2MzY0NWM4MGU0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEgQEAKK2Fpb3F1aWM9PTAuOC43CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5M2YyNWUyN2JkYjNhZmQ0
YmYzOTkyMWU5NmFiZGNjNDIzM2Y5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpAQCAtMCww
ICsxLDI4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IHN5cworCisKK2RlZiBnZXRfcGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJ0dXJuIG9uIHZlcmJvc2UgbG9nZ2luZyIpCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2Rl
ZiBydW4odmVudiwgKiprd2FyZ3MpOgorICAgICMgVE9ETyhIZXhjbGVzKTogUmVwbGFjZSB0aGlz
IHdpdGggYWN0dWFsIGltcGxlbWVudGF0aW9uLgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAg
IGFzc2VydCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBpbXBvcnQgYWlvcXVpYwor
ICAgIHByaW50KCdhaW9xdWljOiAnICsgYWlvcXVpYy5fX3ZlcnNpb25fXykKKworCitkZWYgbWFp
bigpOgorICAgIGt3YXJncyA9IHZhcnMoZ2V0X3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkKKyAgICBy
ZXR1cm4gcnVuKE5vbmUsICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzdkNTQ1OWUxNTFmMmU0MjkzOWRlOTk1N2I1MTUzM2FiYTZhMGRmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1F
Lm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRfc2VydmVyLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3Jl
cXVpcmVtZW50cy50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19mbGFrZTgudHh0CmluZGV4IDBhNDUyMjQwMTY0MTdjZGRiZjU5MjA5MTk2MzgwY2NlMGEw
ODllZGYuLmFlMTZiZTM5NTVmYmYzZDVmYTk2NDg5NjdjNmM4ZDM5NzUxOTAxM2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVx
dWlyZW1lbnRzX2ZsYWtlOC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dApAQCAtMSw0ICsxLDQg
QEAKLWZsYWtlOD09My43LjkKLXB5Y29kZXN0eWxlPT0yLjUuMAotcHlmbGFrZXM9PTIuMS4xCi1w
ZXA4LW5hbWluZz09MC45LjEKK2ZsYWtlOD09My44LjIKK3B5Y29kZXN0eWxlPT0yLjYuMAorcHlm
bGFrZXM9PTIuMi4wCitwZXA4LW5hbWluZz09MC4xMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDE5NGY0Mjg0YjI2OTAzYjFmYWY5NjliNmFiNWQz
MGY1YzQ4ZWI1NjIuLjk4OGZmZTg0ODE3NGY3MjE1Mjc4YzJjNDAxOWY5MjRiZWQzYTYxZjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX215cHkudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC0xLDMgKzEs
MyBAQAotbXlweT09MC43NTAKK215cHk9PTAuNzcwCiBteXB5LWV4dGVuc2lvbnM9PTAuNC4zCi10
eXBlZC1hc3Q9PTEuNC4wCit0eXBlZC1hc3Q9PTEuNC4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5l
ci9yZXBvcnQucHkKaW5kZXggNWViOGQ2N2M3ZjZkYTljNWZkMDFkZThkZTQwZjVjYzkyYzExYmU5
MC4uZTk5ODZmZGIzOTgyNWNkNWU0OWY4ZDRhMTU4Yzc5NDhhZDUyODFlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
cmVwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQpAQCAtNSwxMCArNSwxMSBAQCBmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBp
bXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKKwogZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQogZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLQotaW1wb3J0IHR5cGVzCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCiAKIAogZGVmIGh0bWxfZXNjYXBlKGl0ZW0sIGVzY2FwZV9xdW90ZT1G
YWxzZSk6CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIE5vZGUob2JqZWN0KToKICAgICAgICAgICAg
IGF0dHJzX3VuaWNvZGUgPSAiICIgKyAiICIuam9pbigiJXM9XCIlc1wiIiAlIChodG1sX2VzY2Fw
ZShrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWxfZXNjYXBlKHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZV9xdW90ZT1U
cnVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmF0
dHJzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dHJzX3VuaWNvZGUgPSAiIgogICAg
ICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2VsZi5uYW1lLApAQCAtMTU3LDcgKzE1
OCw3IEBAIGRlZiB0ZXN0X2lkKGlkKToKIAogZGVmIGFsbF90ZXN0cyhkYXRhKToKICAgICB0ZXN0
cyA9IGRlZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRl
bXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEpOgogICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAgIGlkID0gdGVzdF9p
ZChyZXN1bHRbInRlc3QiXSkKICAgICAgICAgICAgIHRlc3RzW2lkXSB8PSB7c3VidGVzdFsibmFt
ZSJdIGZvciBzdWJ0ZXN0IGluIHJlc3VsdFsic3VidGVzdHMiXX0KQEAgLTE4NSw3ICsxODYsNyBA
QCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKIAogICAgIHJlc3VsdHNfYnlfdGVzdCA9IGRlZmF1
bHRkaWN0KHJlc3VsdCkKIAotICAgIGZvciBVQSwgcmVzdWx0cyBpbiBkYXRhLml0ZXJpdGVtcygp
OgorICAgIGZvciBVQSwgcmVzdWx0cyBpbiBpdGVyaXRlbXMoZGF0YSk6CiAgICAgICAgIGZvciB0
ZXN0X2RhdGEgaW4gcmVzdWx0c1sicmVzdWx0cyJdOgogICAgICAgICAgICAgaWQgPSB0ZXN0X2lk
KHRlc3RfZGF0YVsidGVzdCJdKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0c19ieV90ZXN0
W2lkXQpAQCAtMjMwLDEwICsyMzEsMTAgQEAgZGVmIHRlc3RfbGluayh0ZXN0X2lkLCBzdWJ0ZXN0
PU5vbmUpOgogZGVmIHN1bW1hcnkoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgogICAgICIiIlJlbmRl
ciB0aGUgaW1wbGVtZW50YXRpb24gcmVwb3J0IHN1bW1hcnkiIiIKICAgICBub3RfcGFzc2luZyA9
IFtdCi0gICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gcmVzdWx0c19ieV90ZXN0Lml0ZXJpdGVtcygp
OgorICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRzX2J5X3Rlc3QpOgog
ICAgICAgICBpZiBub3QgYW55KGl0ZW1bMF0gaW4gKCJQQVNTIiwgIk9LIikgZm9yIGl0ZW0gaW4g
cmVzdWx0c1siaGFybmVzcyJdLnZhbHVlcygpKToKICAgICAgICAgICAgIG5vdF9wYXNzaW5nLmFw
cGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RfcmVz
dWx0cyBpbiByZXN1bHRzWyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3Vi
dGVzdF9uYW1lLCBzdWJ0ZXN0X3Jlc3VsdHMgaW4gaXRlcml0ZW1zKHJlc3VsdHNbInN1YnRlc3Rz
Il0pOgogICAgICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdID09ICJQQVNTIiBmb3IgaXRlbSBp
biBzdWJ0ZXN0X3Jlc3VsdHMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAgIG5vdF9wYXNzaW5n
LmFwcGVuZCgodGVzdCwgc3VidGVzdF9uYW1lKSkKICAgICBpZiBub3RfcGFzc2luZzoKQEAgLTI2
MCw3ICsyNjEsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1bHQpOgogICAgICAg
ICBjbGFzc189InRlc3QiCiAgICAgKQogCi0gICAgZm9yIG5hbWUsIHN1YnRlc3RfcmVzdWx0IGlu
IHNvcnRlZChyZXN1bHRbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCkpOgorICAgIGZvciBuYW1lLCBz
dWJ0ZXN0X3Jlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdFsic3VidGVzdHMiXSkpOgog
ICAgICAgICB5aWVsZCBoLnRyKAogICAgICAgICAgICAgaC50ZChuYW1lKSwKICAgICAgICAgICAg
IFtzdGF0dXNfY2VsbChzdGF0dXMsIG1lc3NhZ2UpCkBAIC0yNzEsNyArMjcyLDcgQEAgZGVmIHJl
c3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKIAogZGVmIHJlc3VsdF9ib2RpZXMoVUFzLCBy
ZXN1bHRzX2J5X3Rlc3QpOgogICAgIHJldHVybiBbaC50Ym9keShyZXN1bHRfcm93cyhVQXMsIHRl
c3QsIHJlc3VsdCkpCi0gICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHNvcnRlZChyZXN1
bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCkpXQorICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBp
biBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCkpXQogCiAKIGRlZiBnZW5lcmF0ZV9o
dG1sKFVBcywgcmVzdWx0c19ieV90ZXN0KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5l
ci5qcwppbmRleCBkYWFmOWQ0NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1MmQwMDM1Li4yNzk0
NmUxMzliOWFhM2I4MDZhMWFkMjQ1MTUzOTg4Y2Y3OGY3NDQyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvcnVubmVyLmpzCkBAIC0xNiwyMiArMTYsNiBAQCBNYW5pZmVzdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZ2VuZXJhdGUobG9hZGVkX2NhbGxiYWNrKTsKICAgICB9LAogCi0g
ICAgZG9fbG9hZDogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7Ci0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCEo
eGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCAiICsgdGhpcy5wYXRoICsgIiBmYWlsZWQgdG8g
bG9hZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJz
ZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGxvYWRlZF9jYWxsYmFjaygpOwotICAg
ICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCB0aGlzLnBhdGgpOwot
ICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9LAotCiAgICAgZ2VuZXJhdGU6IGZ1bmN0aW9u
KGxvYWRlZF9jYWxsYmFjaykgewogICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKQEAgLTQx
LDcgKzI1LDggQEAgTWFuaWZlc3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCEoeGhy
LnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7CiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCBnZW5lcmF0aW9uIGZhaWxlZCIpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhpcy5kb19sb2FkKGxvYWRlZF9jYWxsYmFjayk7CisgICAgICAg
ICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAg
ICAgbG9hZGVkX2NhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgeGhy
Lm9wZW4oIlBPU1QiLCAidXBkYXRlX21hbmlmZXN0LnB5Iik7CiAgICAgICAgIHhoci5zZW5kKG51
bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5
CmluZGV4IDcxNGQyYjUzYjM5YTk4OWQ0ZjMzY2UxZDU4N2Q2MzRkMjBhNjFkNDQuLjFhMjRlMTQz
NDc4ZWFjYzBmNjI0MzBiNWJiY2IyMzNjYzY1MDI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5p
ZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKQEAgLTcsMjEgKzcsMzAgQEAgbG9jYWxw
YXRocyA9IGltcC5sb2FkX3NvdXJjZSgibG9jYWxwYXRocyIsIG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4oaGVyZSwgb3MKIAogcm9vdCA9IGxvY2FscGF0aHMucmVwb19yb290CiAKLWZyb20g
bWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK2Zyb20gbWFuaWZlc3QgaW1wb3J0IG1h
bmlmZXN0CiAKIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHJvb3QsICJNQU5JRkVTVC5qc29uIikKIAotICAgIG1hbmlmZXN0X2ZpbGUgPSBOb25l
Ci0gICAgdHJ5OgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZChyb290LCBw
YXRoKQotICAgIGV4Y2VwdCBtYW5pZmVzdC5NYW5pZmVzdFZlcnNpb25NaXNtYXRjaDoKLSAgICAg
ICAgcGFzcwotICAgIGlmIG1hbmlmZXN0X2ZpbGUgaXMgTm9uZToKLSAgICAgICAgbWFuaWZlc3Rf
ZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCIvIikKLQotICAgIHVwZGF0ZS51cGRhdGUocm9vdCwg
bWFuaWZlc3RfZmlsZSkKLQotICAgIG1hbmlmZXN0LndyaXRlKG1hbmlmZXN0X2ZpbGUsIHBhdGgp
Ci0KLSAgICByZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKV0sIGpz
b24uZHVtcHMoeyJ1cmwiOiAiL01BTklGRVNULmpzb24ifSkKKyAgICAjIFRPRE8gbWFrZSB0aGlz
IGRvd25sb2FkIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHdoZW4gcG9zc2li
bGUKKyAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHJvb3QsIHBh
dGgsICIvIiwgcGFyYWxsZWw9RmFsc2UpCisKKyAgICBzdXBwb3J0ZWRfdHlwZXMgPSBbInRlc3Ro
YXJuZXNzIiwgInJlZnRlc3QiLCAibWFudWFsIl0KKyAgICBkYXRhID0geyJpdGVtcyI6IHt9LAor
ICAgICAgICAgICAgInVybF9iYXNlIjogIi8ifQorICAgIGZvciBpdGVtX3R5cGUgaW4gc3VwcG9y
dGVkX3R5cGVzOgorICAgICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0gPSB7fQorICAgIGZv
ciBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2ZpbGUuaXRlcnR5cGVzKCpzdXBw
b3J0ZWRfdHlwZXMpOgorICAgICAgICB0ZXN0c19kYXRhID0gW10KKyAgICAgICAgZm9yIGl0ZW0g
aW4gdGVzdHM6CisgICAgICAgICAgICB0ZXN0X2RhdGEgPSBbaXRlbS51cmxbMTpdXQorICAgICAg
ICAgICAgaWYgaXRlbV90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAgICAgICB0ZXN0X2Rh
dGEuYXBwZW5kKGl0ZW0ucmVmZXJlbmNlcykKKyAgICAgICAgICAgIHRlc3RfZGF0YS5hcHBlbmQo
e30pCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgIT0gIm1hbnVhbCI6CisgICAgICAgICAgICAg
ICAgdGVzdF9kYXRhWy0xXVsidGltZW91dCJdID0gaXRlbS50aW1lb3V0CisgICAgICAgICAgICB0
ZXN0c19kYXRhLmFwcGVuZCh0ZXN0X2RhdGEpCisgICAgICAgIGFzc2VydCBwYXRoIG5vdCBpbiBk
YXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0KKyAgICAgICAgZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVd
W3BhdGhdID0gdGVzdHNfZGF0YQorCisgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qc29uIildLCBqc29uLmR1bXBzKGRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9z
ZXJ2ZS5weQppbmRleCAxODY4YjFhMzZlNTFjMTg3NDkxZDczYWEyNzA4NDg0ZGE4ODIwNDJmLi40
M2ZmN2JkMGRmYmFjNWVhZTc0Y2JlNDMyMzVmMDE2YzRmZTE0ZDM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2VydmUvc2VydmUucHkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHN0YW5kYWxvbmUgYXMgcHl3ZWJzb2NrZXQKIAogCiBFRElUX0hPU1RTX0hFTFAgPSAo
IlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1YmRvbWFpbnMgIgotICAgICAg
ICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2aWNlIGluIC9ldGMvaG9z
dHMuICIKLSAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0I3J1bm5pbmctdGhlLXRlc3RzICIKKyAgICAgICAgICAgICAgICAgICAi
YXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3RzLlxuIgorICAgICAg
ICAgICAgICAgICAgICJTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmct
dGVzdHMvZnJvbS1sb2NhbC1zeXN0ZW0uaHRtbCNzeXN0ZW0tc2V0dXAgIgogICAgICAgICAgICAg
ICAgICAgICJmb3IgaW5zdHJ1Y3Rpb25zLiIpCiAKIApAQCAtMTc4LDkgKzE3OCw5IEBAIGNsYXNz
IEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAKICAgICBkZWYgY2hlY2tfZXhw
b3N1cmUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHNlbGYuZ2xvYmFsX3R5cGU6Ci0gICAg
ICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAgICBnbG9iYWxzID0gdSIiCiAgICAgICAg
ICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYuX2dldF9tZXRhZGF0YShyZXF1ZXN0KToKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtl
eSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE4OSwyMyArMTg5LDIzIEBAIGNsYXNzIEh0bWxX
cmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmdsb2JhbF90eXBlKQogCiAgICAgZGVmIF9tZXRhX3JlcGxhY2VtZW50
KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJ0aW1lb3V0IjoKLSAgICAg
ICAgICAgIGlmIHZhbHVlID09IGIibG9uZyI6CisgICAgICAgIGlmIGtleSA9PSAidGltZW91dCI6
CisgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibG9uZyI6CiAgICAgICAgICAgICAgICAgcmV0dXJu
ICc8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4nCi0gICAgICAgIGlmIGtleSA9
PSBiInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJl
cGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICAgICAgICBpZiBrZXkg
PT0gInRpdGxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiJiIsICImYW1w
OyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgICAgICAgICByZXR1cm4gJzx0aXRsZT4lczwv
dGl0bGU+JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3NjcmlwdF9y
ZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIic2NyaXB0
IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBsYWNl
KCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQorICAgICAgICBpZiBrZXkgPT0g
InNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCImIiwgIiZh
bXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQogICAgICAgICAgICAgcmV0dXJuICc8c2NyaXB0
IHNyYz0iJXMiPjwvc2NyaXB0PicgJSBhdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
CiBjbGFzcyBXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJkZWRpY2F0ZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5cGUgPSAiZGVkaWNhdGVkd29y
a2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIs
ICIuYW55Lndvcmtlci5qcyIpLAogICAgICAgICAgICAgICAgICAgICAoIi53b3JrZXIuaHRtbCIs
ICIud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjM0
LDcgKzIzNCw3IEBAIGNsYXNzIFdpbmRvd0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKIAog
CiBjbGFzcyBBbnlIdG1sSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJ3aW5kb3ciCisgICAgZ2xvYmFsX3R5cGUgPSAid2luZG93IgogICAgIHBhdGhfcmVw
bGFjZSA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9j
dHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzZWxm
LkdMT0JBTCA9IHsKIAogCiBjbGFzcyBTaGFyZWRXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhh
bmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzaGFyZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2hhcmVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkuc2hhcmVkd29y
a2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAgIHdyYXBwZXIgPSAi
IiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0yNjksNyArMjY5LDcg
QEAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigiJShwYXRoKXMlKHF1
ZXJ5KXMiKSk7CiAKIAogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFu
ZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiInNlcnZpY2V3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3
b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9
ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTMwNywxMSArMzA3
LDExIEBAIGRvbmUoKTsKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfc2NyaXB0X3Jl
cGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJzY3JpcHQi
OgotICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2Uo
IlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAic2Ny
aXB0IjoKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLnJlcGxhY2UoIlxcIiwgIlxcXFwi
KS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ2ltcG9ydFNjcmlwdHMo
IiVzIiknICUgYXR0cmlidXRlCi0gICAgICAgIGlmIGtleSA9PSBiInRpdGxlIjoKLSAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIlxcIiwgIlxcXFwiKS5y
ZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCIn
KQogICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFfVElUTEUgPSAiJXMiOycgJSB2YWx1ZQog
ICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNTEsNyArMzUxLDcgQEAgY2xhc3MgUm91dGVzQnVp
bGRlcihvYmplY3QpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBo
ZWFkZXJzID0ge30KICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzLlN0YXRpY0hhbmRsZXIocGF0
aCwgZm9ybWF0X2FyZ3MsIGNvbnRlbnRfdHlwZSwgKipoZWFkZXJzKQotICAgICAgICBzZWxmLmFk
ZF9oYW5kbGVyKGIiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRf
aGFuZGxlcigiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKIAogICAgIGRlZiBhZGRfbW91bnRf
cG9pbnQoc2VsZiwgdXJsX2Jhc2UsIHBhdGgpOgogICAgICAgICB1cmxfYmFzZSA9ICIvJXMvIiAl
IHVybF9iYXNlLnN0cmlwKCIvIikgaWYgdXJsX2Jhc2UgIT0gIi8iIGVsc2UgIi8iCkBAIC0zNjYs
NiArMzY2LDcgQEAgY2xhc3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAgICAgICAgICAgKCJH
RVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2VydmljZVdvcmtlcnNIYW5kbGVyKSwK
ICAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIsIEFueVdvcmtlckhhbmRsZXIp
LAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hc2lzIiwgaGFuZGxlcnMuQXNJc0hhbmRsZXIpLAor
ICAgICAgICAgICAgKCJHRVQiLCAiLy53ZWxsLWtub3duL29yaWdpbi1wb2xpY3kiLCBoYW5kbGVy
cy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAgICAgICAgICAgICgiKiIsICIqLnB5IiwgaGFuZGxl
cnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqIiwgaGFuZGxl
cnMuRmlsZUhhbmRsZXIpCiAgICAgICAgIF0KQEAgLTQxOCwxMCArNDE5LDEwIEBAIGNsYXNzIFNl
cnZlclByb2Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kYWVtb24g
PSBpbml0X2Z1bmMoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25m
aWcsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAg
cHJpbnQoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVzIiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikK
KyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU29ja2V0IGVycm9yIG9uIHBvcnQgJXMiICUg
cG9ydCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGZp
bGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCh0cmFjZWJhY2suZm9y
bWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBzZWxmLmRhZW1vbjoK
QEAgLTUxNSw3ICs1MTYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMs
IHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgYXNzZXJ0
IGxlbihwb3J0cykgPT0geyJodHRwIjogMn0uZ2V0KHNjaGVtZSwgMSkKIAogICAgICAgICAjIElm
IHRyeWluZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBhdGliaWxpdHkKLSAg
ICAgICAgaWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21wYXRpYmxlKCk6Cisg
ICAgICAgIGlmIHNjaGVtZSA9PSAnaDInIGFuZCBub3QgaHR0cDJfY29tcGF0aWJsZSgpOgogICAg
ICAgICAgICAgbG9nZ2VyLmVycm9yKCdDYW5ub3Qgc3RhcnQgSFRUUC8yLjAgc2VydmVyIGFzIHRo
ZSBlbnZpcm9ubWVudCBpcyBub3QgY29tcGF0aWJsZS4gJyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1JlcXVpcmVzIFB5dGhvbiAyLjcuMTArICg8IDMuMCkgYW5kIE9wZW5TU0wgMS4wLjIr
JykKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MjUsNyArNTI2LDcgQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGluaXRfZnVu
YyA9IHsiaHR0cCI6IHN0YXJ0X2h0dHBfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJodHRwcyI6IHN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Ijogc3RhcnRfaHR0cDJfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ3cyI6IHN0
YXJ0X3dzX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3NzIjogc3RhcnRfd3Nz
X3NlcnZlcn1bc2NoZW1lXQogCkBAIC01MzcsNTAgKzUzOCw2OCBAQCBkZWYgc3RhcnRfc2VydmVy
cyhob3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dh
cmdzKToKICAgICByZXR1cm4gc2VydmVycwogCiAKK2RlZiBzdGFydHVwX2ZhaWxlZChsb2c9VHJ1
ZSk6CisgICAgIyBMb2c9RmFsc2UgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICBpZiBsb2c6CisgICAg
ICAgIGxvZ2dlci5jcml0aWNhbChFRElUX0hPU1RTX0hFTFApCisgICAgZWxzZToKKyAgICAgICAg
cHJpbnQoIkNSSVRJQ0FMICVzIiAlIEVESVRfSE9TVFNfSEVMUCwgZmlsZT1zeXMuc3RkZXJyKQor
ICAgIHN5cy5leGl0KDEpCisKKwogZGVmIHN0YXJ0X2h0dHBfc2VydmVyKGhvc3QsIHBvcnQsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJu
IHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3J0PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJvdXRlcz1yb3V0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdy
aXRlcz1yZXdyaXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRk
cmVzcz1iaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPU5vbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IikpCisg
ICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRy
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPU5vbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nf
cm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xf
Y29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25u
ZWN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5PWt3YXJncy5n
ZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0
SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1w
YXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3Jp
dGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRf
YWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2Zp
bGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29u
bmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwMl9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfY2xzPXdwdHNlcnZl
Lkh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9z
c2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNvbmZp
Zy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xf
Y29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3
cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyX2Nscz13cHRzZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jv
b3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM9cm91dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5k
X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPWNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNz
bF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcu
c3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICBleGNlcHQgRXhj
ZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogY2xhc3MgV2ViU29ja2V0RGFl
bW9uKG9iamVjdCk6CkBAIC01OTEsMjEgKzYxMCw5IEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiLXciLCBoYW5kbGVyc19yb290XQogCiAgICAg
ICAgIGlmIHNzbF9jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdXN1
YWxseSBkb25lIHRocm91Z2ggcHl3ZWJzb2NrZXQubWFpbiwgaG93ZXZlciB3ZSdyZQotICAgICAg
ICAgICAgIyB3b3JraW5nIGFyb3VuZCB0aGF0IHRvIGdldCB0aGUgc2VydmVyIGluc3RhbmNlIGFu
ZCBtYW51YWxseQotICAgICAgICAgICAgIyBzZXR1cCB0aGUgd3NzIHNlcnZlci4KLSAgICAgICAg
ICAgIGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxzX21v
ZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfU1RBTkRBUkRfTU9EVUxFCi0gICAgICAgICAgICBl
bGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxz
X21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfUFlPUEVOU1NMCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHByaW50KCJObyBTU0wgbW9kdWxlIGF2YWlsYWJsZSIpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAgICAgY21kX2FyZ3MgKz0gWyItLXRs
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHJpdmF0ZS1rZXkiLCBzc2xfY29uZmln
WyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICItLWNlcnRpZmljYXRlIiwg
c3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tdGxz
LW1vZHVsZSIsIHRsc19tb2R1bGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY2VydGlm
aWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXV0KIAogICAgICAgICBpZiAoYmluZF9hZGRy
ZXNzKToKICAgICAgICAgICAgIGNtZF9hcmdzID0gWyItSCIsIGhvc3RdICsgY21kX2FyZ3MKQEAg
LTYxNCw2ICs2MjEsMTIgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CiAgICAgICAg
IG9wdHMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyID0g
cHl3ZWJzb2NrZXQuV2ViU29ja2V0U2VydmVyKG9wdHMpCiAgICAgICAgIHBvcnRzID0gW2l0ZW1b
MF0uZ2V0c29ja25hbWUoKVsxXSBmb3IgaXRlbSBpbiBzZWxmLnNlcnZlci5fc29ja2V0c10KKyAg
ICAgICAgaWYgbm90IHBvcnRzOgorICAgICAgICAgICAgIyBUT0RPOiBGaXggdGhlIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbiBpbiBXZWJTb2NrZXRzIHByb2Nlc3NlcworICAgICAgICAgICAgIyBzZWUg
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzE5Cisg
ICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIHN0YXJ0IHdlYnNvY2tldCBzZXJ2ZXIgb24gcG9y
dCAlcywgIgorICAgICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJlYWR5IHVzaW5nIHRo
YXQgcG9ydD8iICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcmFpc2UgT1NF
cnJvcigpCiAgICAgICAgIGFzc2VydCBhbGwoaXRlbSA9PSBwb3J0c1swXSBmb3IgaXRlbSBpbiBw
b3J0cykKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydHNbMF0KICAgICAgICAgc2VsZi5zdGFydGVk
ID0gRmFsc2UKQEAgLTY2MiwxMiArNjc1LDE1IEBAIGRlZiBzdGFydF93c19zZXJ2ZXIoaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAg
ICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9hZF9tb2R1bGUobG9n
Z2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4gV2ViU29ja2V0RGFl
bW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29uZmlnPU5v
bmUpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcucGF0aHNbIndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25m
aWc9Tm9uZSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZChs
b2c9RmFsc2UpCiAKIAogZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKQEAgLTY3NSwxMiArNjkxLDE1
IEBAIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRf
YWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBpbiB0aGUgbG9nZ2luZyBtb2R1bGUg
dW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2df
bG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19y
b290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9v
dCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLnNzbF9jb25maWcpCisgICAgdHJ5OgorICAgICAgICBy
ZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQorICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkKIAogCiBkZWYgc3Rh
cnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKQEAgLTcwNSw4ICs3MjQsMTEgQEAgZGVmIGl0
ZXJfcHJvY3Moc2VydmVycyk6CiBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgIHJ2ID0gQ29uZmlnQnVpbGRlcigpCiAKLSAgICBpZiBrd2FyZ3MuZ2V0
KCJoMiIpOgotICAgICAgICBydi5fZGVmYXVsdFsicG9ydHMiXVsiaHR0cDIiXSA9IFs5MDAwXQor
ICAgIGVuYWJsZV9odHRwMiA9IGt3YXJncy5nZXQoImgyIikKKyAgICBpZiBlbmFibGVfaHR0cDIg
aXMgTm9uZToKKyAgICAgICAgZW5hYmxlX2h0dHAyID0gVHJ1ZQorICAgIGlmIGVuYWJsZV9odHRw
MjoKKyAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImgyIl0gPSBbOTAwMF0KIAogICAgIGlm
IG92ZXJyaWRlX3BhdGggYW5kIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgpOgogICAgICAg
ICB3aXRoIG9wZW4ob3ZlcnJpZGVfcGF0aCkgYXMgZjoKQEAgLTczOSw2ICs3NjEsOSBAQCBkZWYg
YnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogZGVmIF9tYWtlX3N1
YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKICAgICByZXR1cm4ge3UiLiIuam9pbih4KSBm
b3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGluIHJhbmdlKDEsIGRl
cHRoKzEpKSl9CiAKK2RlZiBfbWFrZV9vcmlnaW5fcG9saWN5X3N1YmRvbWFpbnMobGltaXQpOgor
ICAgIHJldHVybiB7dSJvcCVkIiAlIHggZm9yIHggaW4gcmFuZ2UoMSxsaW1pdCsxKX0KKwogCiBf
c3ViZG9tYWlucyA9IHt1Ind3dyIsCiAgICAgICAgICAgICAgICB1Ind3dzEiLApAQCAtNzUwLDYg
Kzc3NSwxMiBAQCBfbm90X3N1YmRvbWFpbnMgPSB7dSJub25leGlzdGVudCJ9CiAKIF9zdWJkb21h
aW5zID0gX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9zdWJkb21haW5zKQogCisjIE9yaWdpbiBw
b2xpY3kgc3ViZG9tYWlucyBuZWVkIHRvIG5vdCBiZSByZXVzZWQgYnkgYW55IG90aGVyIHRlc3Rz
LCBzaW5jZSBvcmlnaW4gcG9saWNpZXMgaGF2ZQorIyBvcmlnaW4td2lkZSBpbXBhY3RzIGxpa2Ug
aW5zdGFsbGluZyBhIENTUCBvciBGZWF0dXJlIFBvbGljeSB0aGF0IGNvdWxkIGludGVyZmVyZSB3
aXRoIGZlYXR1cmVzCisjIHVuZGVyIHRlc3QuCisjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3JmY3MvcHVsbC80NC4KK19zdWJkb21haW5zIHw9IF9tYWtlX29yaWdp
bl9wb2xpY3lfc3ViZG9tYWlucyg5OSkKKwogX25vdF9zdWJkb21haW5zID0gX21ha2Vfc3ViZG9t
YWluc19wcm9kdWN0KF9ub3Rfc3ViZG9tYWlucykKIAogCkBAIC04NDUsOSArODc2LDEwIEBAIGRl
ZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIFdl
YlNvY2tldHMgZG9jdW1lbnQgcm9vdC4gT3ZlcnJpZGVzIGNvbmZpZy4iKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tYWxpYXNfZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJhbGlhc19m
aWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGUgd2l0aCBlbnRyaWVzIGZv
ciBhbGlhc2VzL211bHRpcGxlIGRvYyByb290cy4gSW4gZm9ybSBvZiBgL0FMSUFTX05BTUUvLCBE
T0NfUk9PVFxcbmAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGbGFn
IGZvciBlbmFibGluZyB0aGUgSFRUUC8yLjAgc2VydmVyIikKLSAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKGgyPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1u
by1oMiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIEhUVFAvMi4wIHNlcnZlciIp
CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKQEAgLTg5MCwxNiArOTIyLDIyIEBAIGRlZiBydW4oKipr
d2FyZ3MpOgogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgaGFuZGxl
X3NpZ25hbCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaGFuZGxl
X3NpZ25hbCkKIAotICAgICAgICAgICAgd2hpbGUgYWxsKGl0ZW0uaXNfYWxpdmUoKSBmb3IgaXRl
bSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQgbm90IHJlY2VpdmVkX3NpZ25hbC5pc19zZXQo
KToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgotICAg
ICAgICAgICAgICAgICAgICBpdGVtLmpvaW4oMSkKLSAgICAgICAgICAgIGV4aXRlZCA9IFtpdGVt
IGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykgaWYgbm90IGl0ZW0uaXNfYWxpdmUoKV0K
LSAgICAgICAgICAgIHN1YmplY3QgPSAic3VicHJvY2VzcyIgaWYgbGVuKGV4aXRlZCkgPT0gMSBl
bHNlICJzdWJwcm9jZXNzZXMiCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAlcyBleGl0
ZWQ6IiAlIChsZW4oZXhpdGVkKSwgc3ViamVjdCkpCi0KLSAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXR1
cyBvZiAlczpcdCVzIiAlIChpdGVtLm5hbWUsICJydW5uaW5nIiBpZiBpdGVtLmlzX2FsaXZlKCkg
ZWxzZSAibm90IHJ1bm5pbmciKSkKKyAgICAgICAgICAgIHdoaWxlIChhbGwoc3VicHJvYy5pc19h
bGl2ZSgpIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFuZAorICAgICAgICAg
ICAgICAgICAgIG5vdCByZWNlaXZlZF9zaWduYWwuaXNfc2V0KCkpOgorICAgICAgICAgICAgICAg
IGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAgICAgICAg
IHN1YnByb2Muam9pbigxKQorCisgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyA9IDAKKyAgICAg
ICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAg
ICAgaWYgc3VicHJvYy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5m
bygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogcnVubmluZycgJSBzdWJwcm9jLm5hbWUpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VicHJvYy5leGl0
Y29kZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1N0YXR1cyBv
ZiBzdWJwcm9jZXNzICIlcyI6IGV4aXRlZCBjb3JyZWN0bHknICUgc3VicHJvYy5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndh
cm5pbmcoJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGZhaWxlZC4gRXhpdCB3aXRoIG5vbi16
ZXJvIHN0YXR1czogJWQnICUgKHN1YnByb2MubmFtZSwgc3VicHJvYy5leGl0Y29kZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyArPSAxCisgICAgICAgICAgICByZXR1
cm4gZmFpbGVkX3N1YnByb2MKIAogCiBkZWYgbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
ZXJ2ZS90ZXN0X3NlcnZlLnB5CmluZGV4IGQ2YzA4MmE5NzAzNTdmNDc3ZTgyY2QyNWExYzA5NTJl
ZTc0NGRiNTQuLmQ5MDI0NzkzY2FmZGExYmIzNjNiNWQzYTM5OWFhOTNhNGQ2OTExMGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdGVzdF9zZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKQEAgLTgyLDcgKzgyLDcgQEAg
ZGVmIHRlc3RfY29uZmlnX2pzb25fbGVuZ3RoKCk6CiAgICAgIyB3ZSBzZXJpYWxpemUgdGhlIGNv
bmZpZyBhcyBKU09OIGZvciBweXRlc3RydW5uZXIgYW5kIHB1dCBpdCBpbiBhbiBlbnYKICAgICAj
IHZhcmlhYmxlLCB3aGljaCBvbiBXaW5kb3dzIG11c3QgaGF2ZSBhIGxlbmd0aCA8PSAweDdGRkYg
KGludDE2KQogICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6Ci0gICAgICAgIGRhdGEgPSBq
c29uLmR1bXBzKGMuYXNfZGljdCgpKQorICAgICAgICBkYXRhID0ganNvbi5kdW1wcyhjLmFzX2Rp
Y3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogICAgIGFzc2VydCBsZW4oZGF0YSkgPD0gMHg3RkZG
CiAKIGRlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X3Vuc3BlY2lmaWVkKCk6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTliMjFkNzQ1ODhlMGI1MTdk
NmU5N2U0N2M2YWVjNmZhZWYwNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApAQCAtMCwwICsxLDEyOCBAQAorbmFtZTogdGVzdHMK
Kworb246IFtwdXNoLCBwdWxsX3JlcXVlc3RdCisKK2pvYnM6CisKKyAgbGludDoKKyAgICBydW5z
LW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAg
d2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5hbWU6IEluc3Rh
bGwgcGFja2FnZXMKKyAgICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBmbGFrZTggaXNvcnQg
bXlweQorICAgICAgLSBuYW1lOiBSdW4gbGludGVycworICAgICAgICBydW46IHwKKyAgICAgICAg
ICBmbGFrZTggZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgaXNvcnQgLWMgLWRmIC1yYyBl
eGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBibGFjayAtLWNoZWNrIC0tZGlmZiBleGFtcGxl
cyBzcmMgdGVzdHMKKyAgICAgICAgICBteXB5IGV4YW1wbGVzIHNyYworCisgIHRlc3Q6CisgICAg
cnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1mYXN0
OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29z
LWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgICAgIHB5dGhvbjogWzMuOCwgMy43LCAzLjZd
CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBw
eXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAgIC0gbmFtZTogRGlzYWJs
ZSBmaXJld2FsbCBhbmQgY29uZmlndXJlIGNvbXBpbGVyCisgICAgICAgIGlmOiBtYXRyaXgub3Mg
PT0gJ21hY29zLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc3VkbyAvdXNyL2xp
YmV4ZWMvQXBwbGljYXRpb25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNldGdsb2JhbHN0YXRl
IG9mZgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNfU0tJUF9URVNUUzo6
Y2hhY2hhMjAiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZMQUdTOjotSS91c3Iv
bG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFt
ZT1MREZMQUdTOjotTC91c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgorICAgICAgLSBuYW1lOiBJ
bnN0YWxsIE9wZW5TU0wKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3Qn
CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNob2NvIGluc3RhbGwgb3BlbnNzbCAtLW5vLXBy
b2dyZXNzCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9JQzpcUHJvZ3JhfjFc
T3BlblNTTC1XaW42NFxpbmNsdWRlIgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxJ
Tks6Oi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorICAgICAgLSBuYW1l
OiBSdW4gdGVzdHMKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcGlwIGluc3RhbGwgLVUgcGlw
IHNldHVwdG9vbHMgd2hlZWwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjb3ZlcmFnZQorICAgICAg
ICAgIHBpcCBpbnN0YWxsIC4KKyAgICAgICAgICBjb3ZlcmFnZSBydW4gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXYKKyAgICAgICAgICBjb3ZlcmFnZSB4bWwKKyAgICAgICAgc2hlbGw6IGJhc2gKKyAg
ICAgIC0gbmFtZTogVXBsb2FkIGNvdmVyYWdlIHJlcG9ydAorICAgICAgICB1c2VzOiBjb2RlY292
L2NvZGVjb3YtYWN0aW9uQHYxCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9uICE9ICdweXB5MycK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMuQ09ERUNPVl9UT0tF
TiB9fQorCisgIHBhY2thZ2Utc291cmNlOgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAg
ICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2Vz
OiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhv
bi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTogQnVpbGQgc291cmNlIHBhY2thZ2UKKyAgICAg
ICAgcnVuOiBweXRob24gc2V0dXAucHkgc2Rpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHNvdXJj
ZSBwYWNrYWdlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHYxCisgICAg
ICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QvCisK
KyAgcGFja2FnZS13aGVlbDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19CisgICAgc3Ry
YXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3Mt
bGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9u
cy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTog
SW5zdGFsbCBuYXNtCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0Jwor
ICAgICAgICBydW46IGNob2NvIGluc3RhbGwgLXkgbmFzbQorICAgICAgLSBuYW1lOiBJbnN0YWxs
IG5tYWtlCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0JworICAgICAg
ICBydW46IHwKKyAgICAgICAgICAmICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXEluc3RhbGxlclx2c19pbnN0YWxsZXIuZXhlIiBtb2RpZnkgYAorICAgICAg
ICAgICAtLWluc3RhbGxQYXRoICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXDIwMTlcRW50ZXJwcmlzZSIgYAorICAgICAgICAgICAtLWFkZCBNaWNyb3NvZnQu
VmlzdWFsU3R1ZGlvLkNvbXBvbmVudC5WQy5Ub29scy54ODYueDY0IC0tcGFzc2l2ZSAtLW5vcmVz
dGFydAorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgLSBuYW1lOiBCdWlsZCB3aGVl
bHMKKyAgICAgICAgZW52OgorICAgICAgICAgIENJQldfQkVGT1JFX0JVSUxEOiBzY3JpcHRzL2J1
aWxkLW9wZW5zc2wgL3RtcC92ZW5kb3IKKyAgICAgICAgICBDSUJXX0JFRk9SRV9CVUlMRF9XSU5E
T1dTOiBzY3JpcHRzXGJ1aWxkLW9wZW5zc2wuYmF0IEM6XGNpYndcdmVuZG9yCisgICAgICAgICAg
Q0lCV19FTlZJUk9OTUVOVDogQUlPUVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9zcyBDRkxBR1M9LUkv
dG1wL3ZlbmRvci9pbmNsdWRlIExERkxBR1M9LUwvdG1wL3ZlbmRvci9saWIKKyAgICAgICAgICBD
SUJXX0VOVklST05NRU5UX1dJTkRPV1M6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxvc3MgQ0w9
Ii9JQzpcY2lid1x2ZW5kb3JcaW5jbHVkZSIgTElOSz0iL0xJQlBBVEg6QzpcY2lid1x2ZW5kb3Jc
bGliIgorICAgICAgICAgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0LSogY3AzNS0qIHBw
MjctKgorICAgICAgICAgIENJQldfVEVTVF9DT01NQU5EOiBweXRob24gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXQge3Byb2plY3R9IC1zIHtwcm9qZWN0fS90ZXN0cworICAgICAgICBydW46IHwKKyAg
ICAgICAgICBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKKyAgICAgICAgICBjaWJ1aWxkd2hlZWwg
LS1vdXRwdXQtZGlyIGRpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHdoZWVscworICAgICAgICB1
c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAg
IG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0LworCisgIHB1Ymxpc2g6CisgICAgcnVu
cy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIG5lZWRzOiBbbGludCwgdGVzdCwgcGFja2FnZS1zb3Vy
Y2UsIHBhY2thZ2Utd2hlZWxdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0Lwor
ICAgICAgLSBuYW1lOiBQdWJsaXNoIHRvIFB5UEkKKyAgICAgICAgaWY6IGdpdGh1Yi5ldmVudF9u
YW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYsICdyZWZzL3RhZ3Mv
JykKKyAgICAgICAgdXNlczogcHlwYS9naC1hY3Rpb24tcHlwaS1wdWJsaXNoQG1hc3RlcgorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHVzZXI6IF9fdG9rZW5fXworICAgICAgICAgIHBhc3N3b3Jk
OiAke3sgc2VjcmV0cy5QWVBJX1RPS0VOIH19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3Jr
Zmxvd3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JjMGFlOTliMjBmNDg5ZWU3N2E4NTU5
ZTUyYWM3OTQ1MzRkYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHVi
L3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkyNGE1
YWEwODM5ODZkMGJkNzA2OWVkYzZlZGRlYWI3Y2UwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQgKGMpIDIwMTkgSmVy
ZW15IExhaW7DqS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5CisgICAgICBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFO
SUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVlMDkwM2Fm
OTk0ZTM0YzM1ZDhiMmVlZTIwYjRiYjNiNzY5ZGUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUgTElDRU5TRQorcmVj
dXJzaXZlLWluY2x1ZGUgZG9jcyAqLnB5ICoucnN0IE1ha2VmaWxlCityZWN1cnNpdmUtaW5jbHVk
ZSBleGFtcGxlcyAqLmh0bWwgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdHMgKi5iaW4gKi5w
ZW0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzIyMDQyYzI0ZGQyNjZkZWExYjcyODQzNjRlOWE1
Y2NlYjY2YTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKQEAg
LTAsMCArMSwxNjQgQEAKK2Fpb3F1aWMKKz09PT09PT0KKworfHJ0ZHwgfHB5cGktdnwgfHB5cGkt
cHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwgfGJsYWNrfAorCisuLiB8cnRk
fCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2Fpb3F1aWMvYmFkZ2Uv
P3ZlcnNpb249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2Nz
LmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92
L2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9h
aW9xdWljCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL3B5dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5
cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8v
cHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGltYWdlOjogaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9iYWRnZS5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvYWN0aW9ucworCisu
LiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRo
dWIvYWlvcnRjL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2do
L2Fpb3J0Yy9haW9xdWljCisKKy4uIHxibGFja3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCisgICAgOnRhcmdldDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9ibGFjaworCitXaGF0IGlzIGBgYWlvcXVpY2BgPworLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJ
QyBuZXR3b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMKK2EgbWluaW1hbCBUTFMg
MS4zIGltcGxlbWVudGF0aW9uLCBhIFFVSUMgc3RhY2sgYW5kIGFuIEhUVFAvMyBzdGFjay4KKwor
UVVJQyBzdGFuZGFyZGlzYXRpb24gaXMgbm90IGZpbmFsaXNlZCB5ZXQsIGJ1dCBgYGFpb3F1aWNg
YCBjbG9zZWx5IHRyYWNrcyB0aGUKK3NwZWNpZmljYXRpb24gZHJhZnRzIGFuZCBpcyByZWd1bGFy
bHkgdGVzdGVkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGFnYWluc3Qgb3RoZXIKK2BRVUlDIGltcGxl
bWVudGF0aW9uc2BfLgorCitUbyBsZWFybiBtb3JlIGFib3V0IGBgYWlvcXVpY2BgIHBsZWFzZSBg
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbmBfLgorCitXaHkgc2hvdWxkIEkgdXNlIGBgYWlvcXVpY2Bg
PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaGFzIGJlZW4g
ZGVzaWduZWQgdG8gYmUgZW1iZWRkZWQgaW50byBQeXRob24gY2xpZW50IGFuZCBzZXJ2ZXIKK2xp
YnJhcmllcyB3aXNoaW5nIHRvIHN1cHBvcnQgUVVJQyBhbmQgLyBvciBIVFRQLzMuIFRoZSBnb2Fs
IGlzIHRvIHByb3ZpZGUgYQorY29tbW9uIGNvZGViYXNlIGZvciBQeXRob24gbGlicmFyaWVzIGlu
IHRoZSBob3BlIG9mIGF2b2lkaW5nIGR1cGxpY2F0ZWQgZWZmb3J0LgorCitCb3RoIHRoZSBRVUlD
IGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0
ZXJuLAorbGVhdmluZyBhY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlz
IGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRo
ZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCitkaWZmZXJlbnQg
Y29uY3VycmVuY3kgbW9kZWxzLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBRVUlDIHN0YWNr
IGNvbmZvcm1pbmcgd2l0aCBkcmFmdC0yNworLSBIVFRQLzMgc3RhY2sgY29uZm9ybWluZyB3aXRo
IGRyYWZ0LTI3CistIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbgorLSBJUHY0IGFuZCBJ
UHY2IHN1cHBvcnQKKy0gY29ubmVjdGlvbiBtaWdyYXRpb24gYW5kIE5BVCByZWJpbmRpbmcKKy0g
bG9nZ2luZyBUTFMgdHJhZmZpYyBzZWNyZXRzCistIGxvZ2dpbmcgUVVJQyBldmVudHMgaW4gUUxP
RyBmb3JtYXQKKy0gSFRUUC8zIHNlcnZlciBwdXNoIHN1cHBvcnQKKworUmVxdWlyZW1lbnRzCist
LS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgcmVxdWlyZXMgUHl0aG9uIDMuNiBvciBiZXR0ZXIs
IGFuZCB0aGUgT3BlblNTTCBkZXZlbG9wbWVudCBoZWFkZXJzLgorCitMaW51eAorLi4uLi4KKwor
T24gRGViaWFuL1VidW50dSBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQg
c3VkbyBhcHQgaW5zdGFsbCBsaWJzc2wtZGV2IHB5dGhvbjMtZGV2CisKK09uIEFscGluZSBMaW51
eCB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIGZvbGxvd2luZzoKKworLi4gY29kZS1ibG9jazo6IGNv
bnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGJzZC1jb21wYXQtaGVhZGVycyBsaWJmZmkt
ZGV2CisKK09TIFgKKy4uLi4KKworT24gT1MgWCBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25z
b2xlCisKKyAgICQgYnJldyBpbnN0YWxsIG9wZW5zc2wKKworWW91IHdpbGwgbmVlZCB0byBzZXQg
c29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBhZ2FpbnN0IE9wZW5TU0w6CisKKy4u
IGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgZXhwb3J0IENGTEFHUz0tSS91c3IvbG9jYWwv
b3B0L29wZW5zc2wvaW5jbHVkZQorICAgJCBleHBvcnQgTERGTEFHUz0tTC91c3IvbG9jYWwvb3B0
L29wZW5zc2wvbGliCisKK1dpbmRvd3MKKy4uLi4uLi4KKworT24gV2luZG93cyB0aGUgZWFzaWVz
dCB3YXkgdG8gaW5zdGFsbCBPcGVuU1NMIGlzIHRvIHVzZSBgQ2hvY29sYXRleWBfLgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICA+IGNob2NvIGluc3RhbGwgb3BlbnNzbAorCitZb3Ug
d2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBsaW5rIGFnYWlu
c3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICA+ICRFbnY6Q0wgPSAi
L0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgID4gJEVudjpMSU5LID0gIi9M
SUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorCitSdW5uaW5nIHRoZSBleGFt
cGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoZSBjb2Rl
IHVzaW5nIGdpdCB5b3UgY2FuIHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAg
JCBwaXAgaW5zdGFsbCAtZSAuCisgICAkIHBpcCBpbnN0YWxsIGFpb2ZpbGVzIGFzZ2lyZWYgaHR0
cGJpbiBzdGFybGV0dGUgd3Nwcm90bworCitIVFRQLzMgc2VydmVyCisuLi4uLi4uLi4uLi4uCisK
K1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIHNlcnZlciwgd2hpY2ggaGFuZGxlcyBib3RoIEhUVFAv
MC45IGFuZCBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgcHl0aG9u
IGV4YW1wbGVzL2h0dHAzX3NlcnZlci5weSAtLWNlcnRpZmljYXRlIHRlc3RzL3NzbF9jZXJ0LnBl
bSAtLXByaXZhdGUta2V5IHRlc3RzL3NzbF9rZXkucGVtCisKK0hUVFAvMyBjbGllbnQKKy4uLi4u
Li4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgY2xpZW50IHRvIHBlcmZvcm0gYW4g
SFRUUC8zIHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRob24g
ZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVtIGh0
dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK0FsdGVybmF0aXZlbHkgeW91IGNhbiBwZXJmb3JtIGFu
IEhUVFAvMC45IHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRo
b24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVt
IC0tbGVnYWN5LWh0dHAgaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworWW91IGNhbiBhbHNvIG9w
ZW4gYSBXZWJTb2NrZXQgb3ZlciBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHlj
YWNlcnQucGVtIHdzczovL2xvY2FsaG9zdDo0NDMzL3dzCisKK0xpY2Vuc2UKKy0tLS0tLS0KKwor
YGBhaW9xdWljYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5zZWBfLgorCisuLiBf
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlvL2Vu
L2xhdGVzdC8KKy4uIF9RVUlDIGltcGxlbWVudGF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL3F1
aWN3Zy9iYXNlLWRyYWZ0cy93aWtpL0ltcGxlbWVudGF0aW9ucworLi4gX2NyeXB0b2dyYXBoeTog
aHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfQ2hvY29sYXRleTogaHR0cHM6Ly9jaG9jb2xh
dGV5Lm9yZy8KKy4uIF9CU0QgbGljZW5zZTogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlv
L2VuL2xhdGVzdC9saWNlbnNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01h
a2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiNzM4Yjk2
MTdmYjJkOWRkMDY2ODRiZDIyNGYwYWQwM2UwNmEwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgTWluaW1hbCBtYWtlZmls
ZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJp
YWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorU1BISU5YT1BUUyAgICA9CitTUEhJTlhCVUlM
RCAgID0gc3BoaW54LWJ1aWxkCitTUEhJTlhQUk9KICAgID0gYWlvcXVpYworU09VUkNFRElSICAg
ICA9IC4KK0JVSUxERElSICAgICAgPSBfYnVpbGQKKworIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAi
bWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBsaWtlICJtYWtlIGhlbHAiLgoraGVscDoKKwlAJChT
UEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5Y
T1BUUykgJChPKQorCisuUEhPTlk6IGhlbHAgTWFrZWZpbGUKKworIyBDYXRjaC1hbGwgdGFyZ2V0
OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJt
YWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJ
TlhPUFRTKS4KKyU6IE1ha2VmaWxlCisJQCQoU1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJ
UikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWM1NjgwOTAxNDYwYjAzMjgz
YTRhYzZjZjY1NGU4YzJhYWM2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvYXN5bmNpby5yc3QKQEAgLTAsMCArMSwzMiBAQAorYXN5bmNpbyBBUEkKKz09PT09PT09PT09
CisKK1RoZSBhc3luY2lvIEFQSSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgUVVJQyBBUEkgYnVpbHQg
b24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLAorUHl0aG9uJ3Mgc3RhbmRhcmQgYXN5bmNocm9ub3Vz
IEkvTyBmcmFtZXdvcmsuCisKK2BgYWlvcXVpY2BgIGNvbWVzIHdpdGggYSBzZWxlY3Rpb24gb2Yg
ZXhhbXBsZXMsIGluY2x1ZGluZzoKKworLSBhbiBIVFRQLzMgY2xpZW50CistIGFuIEhUVFAvMyBz
ZXJ2ZXIKKworVGhlIGV4YW1wbGVzIGNhbiBiZSBicm93c2VkIG9uIEdpdEh1YjoKKworaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3RyZWUvbWFzdGVyL2V4YW1wbGVzCisKKy4uIGF1
dG9tb2R1bGU6OiBhaW9xdWljLmFzeW5jaW8KKworQ2xpZW50CistLS0tLS0KKworICAgIC4uIGF1
dG9mdW5jdGlvbjo6IGNvbm5lY3QKKworU2VydmVyCistLS0tLS0KKworICAgIC4uIGF1dG9mdW5j
dGlvbjo6IHNlcnZlCisKK0NvbW1vbgorLS0tLS0tCisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWlj
Q29ubmVjdGlvblByb3RvY29sCisgICAgICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg5MDYyYWM5NzUzMjZhNDdmODhlZGFlNGQ4ZDM0M2NmZTc2MGMwYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIGFpb3F1aWMg
ZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKKyMgc3Bo
aW54LXF1aWNrc3RhcnQgb24gVGh1IEZlYiAgOCAxNzoyMjoxNCAyMDE4LgorIworIyBUaGlzIGZp
bGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cwor
IyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29uZmln
dXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2VuZXJhdGVkIGZpbGUu
CisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRo
YXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KKworaW1w
b3J0IHN5cywgb3MKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdp
dGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0
b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0
aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQg
YWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFi
c3BhdGgoJy4uJykpCisKKworY2xhc3MgTW9ja0J1ZmZlcjoKKyAgICBCdWZmZXIgPSBOb25lCisg
ICAgQnVmZmVyUmVhZEVycm9yID0gTm9uZQorICAgIEJ1ZmZlcldyaXRlRXJyb3IgPSBOb25lCisK
KworY2xhc3MgTW9ja0NyeXB0bzoKKyAgICBBRUFEID0gTm9uZQorICAgIENyeXB0b0Vycm9yID0g
VmFsdWVFcnJvcgorICAgIEhlYWRlclByb3RlY3Rpb24gPSBOb25lCisKKworY2xhc3MgTW9ja1B5
bHNxcGFjazoKKyAgICBEZWNvZGVyID0gTm9uZQorICAgIEVuY29kZXIgPSBOb25lCisgICAgU3Ry
ZWFtQmxvY2tlZCA9IE5vbmUKKworCitzeXMubW9kdWxlcy51cGRhdGUoeworICAgICJhaW9xdWlj
Ll9idWZmZXIiOiBNb2NrQnVmZmVyKCksCisgICAgImFpb3F1aWMuX2NyeXB0byI6IE1vY2tDcnlw
dG8oKSwKKyAgICAicHlsc3FwYWNrIjogTW9ja1B5bHNxcGFjaygpLAorfSkKKworIyAtLSBHZW5l
cmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhp
bnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KKyMKKyMgbmVlZHNfc3BoaW54ID0gJzEuMCcKKwor
IyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3Mu
IFRoZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3Bo
aW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20KKyMgb25lcy4KK2V4dGVuc2lvbnMgPSBbCisgICAg
J3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJzcGhpbngnLAorICAg
ICdzcGhpbnhfYXV0b2RvY190eXBlaGludHMnLAorICAgICdzcGhpbnhjb250cmliLmFzeW5jaW8n
LAorXQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAnY3J5cHRvZ3JhcGh5JzogKCdodHRw
czovL2NyeXB0b2dyYXBoeS5pby9lbi9sYXRlc3QnLCBOb25lKSwKKyAgICAncHl0aG9uJzogKCdo
dHRwczovL2RvY3MucHl0aG9uLm9yZy8zJywgTm9uZSksCit9CisKKyMgQWRkIGFueSBwYXRocyB0
aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5Lgor
dGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXgoZXMpIG9mIHNv
dXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBzdWZmaXggYXMgYSBs
aXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcsICcubWQnXQorc291
cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1bWVudC4KK21h
c3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJv
amVjdC4KK3Byb2plY3QgPSAnYWlvcXVpYycKK2NvcHlyaWdodCA9IHUnMjAxOSwgSmVyZW15IExh
aW7DqScKK2F1dGhvciA9IHUnSmVyZW15IExhaW7DqScKKworIyBUaGUgdmVyc2lvbiBpbmZvIGZv
ciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9y
CisjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBw
bGFjZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIworIyBUaGUgc2hvcnQg
WC5ZIHZlcnNpb24uCit2ZXJzaW9uID0gJycKKyMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5jbHVkaW5n
IGFscGhhL2JldGEvcmMgdGFncy4KK3JlbGVhc2UgPSAnJworCisjIFRoZSBsYW5ndWFnZSBmb3Ig
Y29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgor
IyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjCisjIFRoaXMgaXMgYWxzbyB1
c2VkIGlmIHlvdSBkbyBjb250ZW50IHRyYW5zbGF0aW9uIHZpYSBnZXR0ZXh0IGNhdGFsb2dzLgor
IyBVc3VhbGx5IHlvdSBzZXQgImxhbmd1YWdlIiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRo
ZXNlIGNhc2VzLgorbGFuZ3VhZ2UgPSBOb25lCisKKyMgTGlzdCBvZiBwYXR0ZXJucywgcmVsYXRp
dmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQKKyMgZGlyZWN0b3Jp
ZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgorIyBUaGlzIHBhdHRl
cm5zIGFsc28gZWZmZWN0IHRvIGh0bWxfc3RhdGljX3BhdGggYW5kIGh0bWxfZXh0cmFfcGF0aAor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJywgJ1RodW1icy5kYicsICcuRFNfU3RvcmUnXQor
CisjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdodGluZykgc3R5bGUg
dG8gdXNlLgorcHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JworCisjIElmIHRydWUsIGB0b2RvYCBh
bmQgYHRvZG9MaXN0YCBwcm9kdWNlIG91dHB1dCwgZWxzZSB0aGV5IHByb2R1Y2Ugbm90aGluZy4K
K3RvZG9faW5jbHVkZV90b2RvcyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25zIGZvciBIVE1MIG91
dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMg
VGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBk
b2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCisjCitodG1sX3Ro
ZW1lID0gJ2FsYWJhc3RlcicKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBh
bmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMgZnVydGhlci4gIEZv
ciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKKyMg
ZG9jdW1lbnRhdGlvbi4KKyMKK2h0bWxfdGhlbWVfb3B0aW9ucyA9IHsKKyAgICAnZGVzY3JpcHRp
b24nOiAnQSBsaWJyYXJ5IGZvciBRVUlDIGluIFB5dGhvbi4nLAorICAgICdnaXRodWJfYnV0dG9u
JzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAnYWlvcnRjJywKKyAgICAnZ2l0aHViX3JlcG8n
OiAnYWlvcXVpYycsCit9CisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHN0
YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3RhdGljIGZp
bGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0ZSB0aGUg
YnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsnX3N0YXRpYyddCisK
KyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtdXN0IGJlIGEgZGljdGlvbmFyeSB0aGF0IG1h
cHMgZG9jdW1lbnQgbmFtZXMKKyMgdG8gdGVtcGxhdGUgbmFtZXMuCisjCisjIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHRoZSBhbGFiYXN0ZXIgdGhlbWUKKyMgcmVmczogaHR0cDovL2FsYWJhc3Rlci5y
ZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5zdGFsbGF0aW9uLmh0bWwjc2lkZWJhcnMKK2h0bWxf
c2lkZWJhcnMgPSB7CisgICAgJyoqJzogWworICAgICAgICAnYWJvdXQuaHRtbCcsCisgICAgICAg
ICduYXZpZ2F0aW9uLmh0bWwnLAorICAgICAgICAncmVsYXRpb25zLmh0bWwnLAorICAgICAgICAn
c2VhcmNoYm94Lmh0bWwnLAorICAgIF0KK30KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxw
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBP
dXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFz
ZW5hbWUgPSAnYWlvcXVpY2RvYycKKworCisjIC0tIE9wdGlvbnMgZm9yIExhVGVYIG91dHB1dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbGF0ZXhfZWxl
bWVudHMgPSB7CisgICAgIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBl
cicpLgorICAgICMKKyAgICAjICdwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAorCisgICAgIyBU
aGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgorICAgICMKKyAgICAjICdw
b2ludHNpemUnOiAnMTBwdCcsCisKKyAgICAjIEFkZGl0aW9uYWwgc3R1ZmYgZm9yIHRoZSBMYVRl
WCBwcmVhbWJsZS4KKyAgICAjCisgICAgIyAncHJlYW1ibGUnOiAnJywKKworICAgICMgTGF0ZXgg
ZmlndXJlIChmbG9hdCkgYWxpZ25tZW50CisgICAgIworICAgICMgJ2ZpZ3VyZV9hbGlnbic6ICdo
dGJwJywKK30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVz
LiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRs
ZSwKKyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNz
XSkuCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdhaW9xdWljLnRleCcs
ICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdtYW51YWwnKSwKK10KKwor
CisjIC0tIE9wdGlvbnMgZm9yIG1hbnVhbCBwYWdlIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0
IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRo
b3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdh
aW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRob3JdLCAxKQorXQor
CisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVlIGlu
dG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0
YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5LCBkZXNjcmlwdGlv
biwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2Fp
b3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9yLCAnYWlvcXVpYycs
ICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0LicsCisgICAgICdNaXNjZWxsYW5lb3Vz
JyksCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI5ZTc2MmY1YTYzNGUyYTM1Nzkx
ZTQ2NWI5MDQ5YmE0YmU2MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3Mv
ZGVzaWduLnJzdApAQCAtMCwwICsxLDM3IEBACitEZXNpZ24KKz09PT09PQorCitTYW5zLUlPIEFQ
SXMKKy4uLi4uLi4uLi4uLgorCitCb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9s
bG93IHRoZSBgc2FucyBJL09gXyBwYXR0ZXJuLCBsZWF2aW5nCithY3R1YWwgSS9PIG9wZXJhdGlv
bnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50
YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRl
Z3JhdGlvbiB3aXRoCitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgorCitUTFMgYW5kIGVu
Y3J5cHRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLgorCitUTFMgMS4zCisrKysrKysrCisKK2BgYWlv
cXVpY2BgIGZlYXR1cmVzIGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uIGJ1aWx0IHVw
b24gdGhlCitgY3J5cHRvZ3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNhdXNlIFFVSUMgcmVx
dWlyZXMgc29tZSBBUElzIHdoaWNoIGFyZQorY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIG1haW5z
dHJlYW0gVExTIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6CisKKy0gdGhlIGFiaWxp
dHkgdG8gZXh0cmFjdCB0cmFmZmljIHNlY3JldHMKKworLSB0aGUgYWJpbGl0eSB0byBvcGVyYXRl
IGRpcmVjdGx5IG9uIFRMUyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUgVExTCisgIHJlY29y
ZCBsYXllcgorCitIZWFkZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNyeXB0aW9uCisrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1FVSUMgbWFrZXMgZXh0ZW5z
aXZlIHVzZSBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVjdCBRVUlDIHBhY2tl
dAoraGVhZGVycyBhbmQgZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNlIG9wZXJhdGlvbnMg
b2NjdXIgZm9yIGV2ZXJ5IHNpbmdsZQorcGFja2V0IGFuZCBhcmUgYSBkZXRlcm1pbmluZyBmYWN0
b3IgZm9yIHBlcmZvcm1hbmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKK2FyZSBpbXBsZW1lbnRl
ZCBhcyBhIEMgZXh0ZW5zaW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgorCisuLiBfc2FucyBJL086
IGh0dHBzOi8vc2Fucy1pby5yZWFkdGhlZG9jcy5pby8KKy4uIF9jcnlwdG9ncmFwaHk6IGh0dHBz
Oi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3Jn
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvaDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZTIyMDFjNDNkNDZiMGNiYjJiYWMyOGRmY2Y1OTIwYTAx
MjkxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKQEAgLTAs
MCArMSw0NCBAQAorSFRUUC8zIEFQSQorPT09PT09PT09PQorCitUaGUgSFRUUC8zIEFQSSBwZXJm
b3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1Ro
aXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgSFRUUC8zIGluIGFueSBQeXRob24gYXBwbGljYXRp
b24sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3UgYXJlIHVzaW5nLgor
CitDb25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmNv
bm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6IEgzQ29ubmVjdGlvbgorICAgICAgICA6bWVt
YmVyczoKKworCitFdmVudHMKKy0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5l
dmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBEYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBIZWFkZXJzUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBQdXNoUHJvbWlzZVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMu
ZXhjZXB0aW9ucworCisgICAgLi4gYXV0b2NsYXNzOjogSDNFcnJvcgorICAgICAgICA6bWVtYmVy
czoKKworICAgIC4uIGF1dG9jbGFzczo6IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKyAgICAgICAg
Om1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0MTU2MWEyMjQwNDBiYzFhOGFj
ZTI2NmFkMDE1NjhmNjg0MTdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2Nz
L2luZGV4LnJzdApAQCAtMCwwICsxLDM5IEBACithaW9xdWljCis9PT09PT09CisKK3xweXBpLXZ8
IHxweXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8CisKKy4uIHxweXBp
LXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5
cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJz
aW9ucy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvYWlvcXVpYworCisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v
cHlwaS9sL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS9haW9xdWljCisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlv
cnRjL2Fpb3F1aWMvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxjb2RlY292fCBpbWFn
ZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVp
Yy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMK
KworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJQyBuZXR3b3JrIHByb3RvY29s
IGluIFB5dGhvbi4gSXQgZmVhdHVyZXMgc2V2ZXJhbAorQVBJczoKKworLSBhIFFVSUMgQVBJIGZv
bGxvd2luZyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwgc3VpdGFibGUgZm9yCisg
IGVtYmVkZGluZyBpbiBhbnkgZnJhbWV3b3JrLAorCistIGFuIEhUVFAvMyBBUEkgd2hpY2ggYWxz
byBmb2xsb3dzIHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLAorCistIGEgUVVJQyBj
b252ZW5pZW5jZSBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLCBQeXRob24ncyBz
dGFuZGFyZCBhc3luY2hyb25vdXMKKyAgSS9PIGZyYW1ld29yay4KKworLi4gdG9jdHJlZTo6Cisg
ICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBxdWljCisgICBoMworICAgYXN5bmNpbwor
ICAgbGljZW5zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkM2IwN2ZjOTNmNjQ3
ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCistLS0tLS0tCisKKy4u
IGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvcXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVi
ZWZiNDlkNTE0YTQ1MTVjMjIzY2RjODQzNjljZDE2YTEyYjczCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKQEAgLTAsMCArMSw1MSBAQAorUVVJQyBBUEkKKz09
PT09PT09CisKK1RoZSBRVUlDIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmlu
ZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgUVVJ
QyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mCit0aGUgY29uY3VycmVu
Y3kgbW9kZWwgeW91IGFyZSB1c2luZy4KKworQ29ubmVjdGlvbgorLS0tLS0tLS0tLQorCisuLiBh
dXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6
IFF1aWNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0NvbmZpZ3VyYXRpb24KKy0t
LS0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
CisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWljQ29uZmlndXJhdGlvbgorICAgICAgICA6bWVtYmVy
czoKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5sb2dnZXIKKworICAgIC4uIGF1dG9j
bGFzczo6IFF1aWNMb2dnZXIKKyAgICAgICAgOm1lbWJlcnM6CisKK0V2ZW50cworLS0tLS0tCisK
Ky4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuZXZlbnRzCisKKyAgICAuLiBhdXRvY2xhc3M6
OiBRdWljRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBDb25u
ZWN0aW9uVGVybWluYXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6
IEhhbmRzaGFrZUNvbXBsZXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFz
czo6IFBpbmdBY2tub3dsZWRnZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xh
c3M6OiBTdHJlYW1EYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBTdHJlYW1SZXNldAorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDgwZTc5OTkwNDNkMjk3NDFhMTM0OTE2Njc4ZDU0MDQ5OTJhOTc1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjQgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2Uu
cnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5CkBAIC0wLDAgKzEsMTA5IEBA
CisjCisjIGRlbW8gYXBwbGljYXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQorIworCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBvcworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQor
CitpbXBvcnQgaHR0cGJpbgorZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdzZ2lUb0FzZ2kKK2Zy
b20gc3RhcmxldHRlLmFwcGxpY2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCitmcm9tIHN0YXJsZXR0
ZS5yZXNwb25zZXMgaW1wb3J0IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25zZQorZnJvbSBzdGFy
bGV0dGUuc3RhdGljZmlsZXMgaW1wb3J0IFN0YXRpY0ZpbGVzCitmcm9tIHN0YXJsZXR0ZS50ZW1w
bGF0aW5nIGltcG9ydCBKaW5qYTJUZW1wbGF0ZXMKK2Zyb20gc3RhcmxldHRlLndlYnNvY2tldHMg
aW1wb3J0IFdlYlNvY2tldERpc2Nvbm5lY3QKKworUk9PVCA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKK1NUQVRJQ19ST09UID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19ST09UIiwgb3MucGF0
aC5qb2luKFJPT1QsICJodGRvY3MiKSkKK1NUQVRJQ19VUkwgPSAiLyIKK0xPR1NfUEFUSCA9IG9z
LnBhdGguam9pbihTVEFUSUNfUk9PVCwgImxvZ3MiKQorUVZJU19VUkwgPSAiaHR0cHM6Ly9xdmlz
LmVkbS51aGFzc2VsdC5iZS8iCisKK3RlbXBsYXRlcyA9IEppbmphMlRlbXBsYXRlcyhkaXJlY3Rv
cnk9b3MucGF0aC5qb2luKFJPT1QsICJ0ZW1wbGF0ZXMiKSkKK2FwcCA9IFN0YXJsZXR0ZSgpCisK
KworQGFwcC5yb3V0ZSgiLyIpCithc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVzdCk6CisgICAgIiIi
CisgICAgU2ltcGxlIGhvbWVwYWdlLgorICAgICIiIgorICAgIGF3YWl0IHJlcXVlc3Quc2VuZF9w
dXNoX3Byb21pc2UoIi9zdHlsZS5jc3MiKQorICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVS
ZXNwb25zZSgiaW5kZXguaHRtbCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQorCisKK0BhcHAucm91
dGUoIi9lY2hvIiwgbWV0aG9kcz1bIlBPU1QiXSkKK2FzeW5jIGRlZiBlY2hvKHJlcXVlc3QpOgor
ICAgICIiIgorICAgIEhUVFAgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAgICBjb250ZW50ID0g
YXdhaXQgcmVxdWVzdC5ib2R5KCkKKyAgICBtZWRpYV90eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdl
dCgiY29udGVudC10eXBlIikKKyAgICByZXR1cm4gUmVzcG9uc2UoY29udGVudCwgbWVkaWFfdHlw
ZT1tZWRpYV90eXBlKQorCisKK0BhcHAucm91dGUoIi9sb2dzLz8iKQorYXN5bmMgZGVmIGxvZ3Mo
cmVxdWVzdCk6CisgICAgIiIiCisgICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxPRyBmaWxlcy4KKyAg
ICAiIiIKKyAgICBsb2dzID0gW10KKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKExPR1NfUEFU
SCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5xbG9nIik6CisgICAgICAgICAgICBzID0g
b3Muc3RhdChvcy5wYXRoLmpvaW4oTE9HU19QQVRILCBuYW1lKSkKKyAgICAgICAgICAgIGZpbGVf
dXJsID0gImh0dHBzOi8vIiArIHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsgIi9sb2dzLyIgKyBu
YW1lCisgICAgICAgICAgICBsb2dzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJkYXRlIjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChz
LnN0X210aW1lKS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlWS0lbS0lZCAl
SDolTTolUyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgImZp
bGVfdXJsIjogZmlsZV91cmwsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZVs6LTVd
LAorICAgICAgICAgICAgICAgICAgICAicXZpc191cmwiOiBRVklTX1VSTAorICAgICAgICAgICAg
ICAgICAgICArICI/IgorICAgICAgICAgICAgICAgICAgICArIHVybGVuY29kZSh7ImZpbGUiOiBm
aWxlX3VybH0pCisgICAgICAgICAgICAgICAgICAgICsgIiMvc2VxdWVuY2UiLAorICAgICAgICAg
ICAgICAgICAgICAic2l6ZSI6IHMuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApCisgICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKAorICAgICAgICAi
bG9ncy5odG1sIiwKKyAgICAgICAgeworICAgICAgICAgICAgImxvZ3MiOiBzb3J0ZWQobG9ncywg
a2V5PWxhbWJkYSB4OiB4WyJkYXRlIl0sIHJldmVyc2U9VHJ1ZSksCisgICAgICAgICAgICAicmVx
dWVzdCI6IHJlcXVlc3QsCisgICAgICAgIH0sCisgICAgKQorCisKK0BhcHAucm91dGUoIi97c2l6
ZTppbnR9IikKK2RlZiBwYWRkaW5nKHJlcXVlc3QpOgorICAgICIiIgorICAgIER5bmFtaWNhbGx5
IGdlbmVyYXRlZCBkYXRhLCBtYXhpbXVtIDUwTUIuCisgICAgIiIiCisgICAgc2l6ZSA9IG1pbig1
MDAwMDAwMCwgcmVxdWVzdC5wYXRoX3BhcmFtc1sic2l6ZSJdKQorICAgIHJldHVybiBQbGFpblRl
eHRSZXNwb25zZSgiWiIgKiBzaXplKQorCisKK0BhcHAud2Vic29ja2V0X3JvdXRlKCIvd3MiKQor
YXN5bmMgZGVmIHdzKHdlYnNvY2tldCk6CisgICAgIiIiCisgICAgV2ViU29ja2V0IGVjaG8gZW5k
cG9pbnQuCisgICAgIiIiCisgICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5zY29wZVsic3VicHJv
dG9jb2xzIl06CisgICAgICAgIHN1YnByb3RvY29sID0gImNoYXQiCisgICAgZWxzZToKKyAgICAg
ICAgc3VicHJvdG9jb2wgPSBOb25lCisgICAgYXdhaXQgd2Vic29ja2V0LmFjY2VwdChzdWJwcm90
b2NvbD1zdWJwcm90b2NvbCkKKworICAgIHRyeToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0KCkKKyAgICAgICAg
ICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kX3RleHQobWVzc2FnZSkKKyAgICBleGNlcHQgV2ViU29j
a2V0RGlzY29ubmVjdDoKKyAgICAgICAgcGFzcworCisKK2FwcC5tb3VudCgiL2h0dHBiaW4iLCBX
c2dpVG9Bc2dpKGh0dHBiaW4uYXBwKSkKKworYXBwLm1vdW50KFNUQVRJQ19VUkwsIFN0YXRpY0Zp
bGVzKGRpcmVjdG9yeT1TVEFUSUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odGRvY3Mvcm9ib3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWFhMGJkZWFhY2U2MzcyYTdlYjEzMDEw
ZmQxNjY2YzY1NTQ2ODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L2h0ZG9jcy9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMiBAQAorVXNlci1hZ2VudDogKgorRGlzYWxs
b3c6IC9sb2dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxl
LmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxNTIzZGI4YWQ4ZDE2Zjc1MjYwYzU4MTdhYjQ4ZTg5ZTIxZWJiZDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpAQCAtMCwwICsxLDEw
IEBACitib2R5IHsKKyAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA0MGVtOworfQor
Cit0YWJsZS5sb2dzIHsKKyAgICB3aWR0aDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NjgyMGRmMGRmODA5YzdjOTg5
OTI3YThiOGIzMjhlMDQ5NTZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTg4OGEzNmVhN2ViYTI3ZjM2YTVkZDQwYjBjNzZhMDQyNDlkYzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpAQCAt
MCwwICsxLDQ1NSBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpz
b24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzc2wK
K2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcg
aW1wb3J0IENhbGxhYmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0
Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworaW1wb3J0IHdzcHJvdG8KK2lt
cG9ydCB3c3Byb3RvLmV2ZW50cworCitpbXBvcnQgYWlvcXVpYworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24g
aW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgKAorICAgIERhdGFSZWNlaXZlZCwKKyAgICBIM0V2ZW50LAorICAgIEhlYWRlcnNSZWNlaXZl
ZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50
cyBpbXBvcnQgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNM
b2dnZXIKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCitIdHRwQ29ubmVjdGlvbiA9
IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitVU0VSX0FHRU5UID0gImFpb3F1
aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBVUkw6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHVybDogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXJzZWQgPSB1cmxwYXJzZSh1
cmwpCisKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHNl
bGYuZnVsbF9wYXRoID0gcGFyc2VkLnBhdGgKKyAgICAgICAgaWYgcGFyc2VkLnF1ZXJ5OgorICAg
ICAgICAgICAgc2VsZi5mdWxsX3BhdGggKz0gIj8iICsgcGFyc2VkLnF1ZXJ5CisgICAgICAgIHNl
bGYuc2NoZW1lID0gcGFyc2VkLnNjaGVtZQorCisKK2NsYXNzIEh0dHBSZXF1ZXN0OgorICAgIGRl
ZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbWV0aG9kOiBzdHIsIHVybDogVVJMLCBjb250ZW50
OiBieXRlcyA9IGIiIiwgaGVhZGVyczogRGljdCA9IHt9CisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMK
KyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKwor
CitjbGFzcyBXZWJTb2NrZXQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBodHRw
OiBIdHRwQ29ubmVjdGlvbiwgc3RyZWFtX2lkOiBpbnQsIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwg
Tm9uZV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaHR0cCA9IGh0dHAKKyAgICAgICAg
c2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtzdHJdID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAg
IHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3VicHJvdG9jb2w6IE9w
dGlvbmFsW3N0cl0gPSBOb25lCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorICAg
ICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlvbih3c3Byb3RvLkNvbm5lY3Rp
b25UeXBlLkNMSUVOVCkKKworICAgIGFzeW5jIGRlZiBjbG9zZShzZWxmLCBjb2RlPTEwMDAsIHJl
YXNvbj0iIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFBlcmZvcm0gdGhlIGNsb3Np
bmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0
LnNlbmQoCisgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29kZT1j
b2RlLCByZWFzb249cmVhc29uKQorICAgICAgICApCisgICAgICAgIHNlbGYuaHR0cC5zZW5kX2Rh
dGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkK
KyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBkZWYgcmVjdihzZWxmKSAtPiBz
dHI6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5
bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBhIG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShtZXNzYWdlLCBzdHIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQo
d3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5o
dHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwgZW5kX3N0
cmVhbT1GYWxzZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBkZWYgaHR0cF9ldmVu
dF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIGZvciBoZWFkZXIs
IHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIi
c2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VicHJv
dG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldC5yZWNlaXZlX2RhdGEoZXZl
bnQuZGF0YSkKKworICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJzb2NrZXQuZXZlbnRz
KCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkK
KworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IHdzcHJvdG8u
ZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCB3c3By
b3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dh
aXQoZXZlbnQuZGF0YSkKKworCitjbGFzcyBIdHRwQ2xpZW50KFF1aWNDb25uZWN0aW9uUHJvdG9j
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6Cisg
ICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYu
cHVzaGVzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5faHR0
cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0
X2V2ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYuX3Jl
cXVlc3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVbSDNFdmVudF1dXSA9
IHt9CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHM6IERpY3RbaW50LCBXZWJTb2NrZXRdID0ge30K
KworICAgICAgICBpZiBzZWxmLl9xdWljLmNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHNbMF0u
c3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9u
KHNlbGYuX3F1aWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDND
b25uZWN0aW9uKHNlbGYuX3F1aWMpCisKKyAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIHVybDogc3Ry
LCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAg
ICAgICAgUGVyZm9ybSBhIEdFVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IGF3YWl0IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IkdF
VCIsIHVybD1VUkwodXJsKSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3lu
YyBkZWYgcG9zdChzZWxmLCB1cmw6IHN0ciwgZGF0YTogYnl0ZXMsIGhlYWRlcnM6IERpY3QgPSB7
fSkgLT4gRGVxdWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIGEgUE9T
VCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3JlcXVl
c3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IlBPU1QiLCB1cmw9VVJMKHVybCks
IGNvbnRlbnQ9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3luYyBk
ZWYgd2Vic29ja2V0KHNlbGYsIHVybDogc3RyLCBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtd
KSAtPiBXZWJTb2NrZXQ6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIGEgV2ViU29ja2V0Lgor
ICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IEh0dHBSZXF1ZXN0KG1ldGhvZD0iQ09OTkVD
VCIsIHVybD1VUkwodXJsKSkKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2Vic29ja2V0ID0gV2ViU29ja2V0KAor
ICAgICAgICAgICAgaHR0cD1zZWxmLl9odHRwLCBzdHJlYW1faWQ9c3RyZWFtX2lkLCB0cmFuc21p
dD1zZWxmLnRyYW5zbWl0CisgICAgICAgICkKKworICAgICAgICBzZWxmLl93ZWJzb2NrZXRzW3N0
cmVhbV9pZF0gPSB3ZWJzb2NrZXQKKworICAgICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiQ09OTkVDVCIpLAorICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1ZXN0LnVybC5hdXRob3JpdHku
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGgu
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnByb3RvY29sIiwgYiJ3ZWJzb2NrZXQiKSwKKyAg
ICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgpKSwKKyAgICAgICAg
ICAgIChiInNlYy13ZWJzb2NrZXQtdmVyc2lvbiIsIGIiMTMiKSwKKyAgICAgICAgXQorICAgICAg
ICBpZiBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwgIiwgIi5qb2luKHN1YnByb3RvY29s
cykuZW5jb2RlKCkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9oZWFk
ZXJzKHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAgICAgICBzZWxm
LnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4gd2Vic29ja2V0CisKKyAgICBkZWYgaHR0cF9l
dmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShldmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2VpdmVkKSk6CisgICAg
ICAgICAgICBzdHJlYW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCBpbiBzZWxmLl9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAgICAjIGh0dHAKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tldmVudC5zdHJlYW1faWRdLmFwcGVu
ZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1fZW5kZWQ6CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5fcmVxdWVzdF93YWl0ZXIucG9wKHN0
cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIuc2V0X3Jlc3VsdChz
ZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkKKworICAgICAgICAgICAgZWxpZiBz
dHJlYW1faWQgaW4gc2VsZi5fd2Vic29ja2V0czoKKyAgICAgICAgICAgICAgICAjIHdlYnNvY2tl
dAorICAgICAgICAgICAgICAgIHdlYnNvY2tldCA9IHNlbGYuX3dlYnNvY2tldHNbc3RyZWFtX2lk
XQorICAgICAgICAgICAgICAgIHdlYnNvY2tldC5odHRwX2V2ZW50X3JlY2VpdmVkKGV2ZW50KQor
CisgICAgICAgICAgICBlbGlmIGV2ZW50LnB1c2hfaWQgaW4gc2VsZi5wdXNoZXM6CisgICAgICAg
ICAgICAgICAgIyBwdXNoCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9p
ZF0uYXBwZW5kKGV2ZW50KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUHVzaFBy
b21pc2VSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXSA9
IGRlcXVlKCkKKyAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdLmFwcGVuZChl
dmVudCkKKworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZl
bnQpIC0+IE5vbmU6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBIVFRQIGxheWVyCisg
ICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaHR0cF9l
dmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAgICAgICAgICAgICAg
c2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKyAgICBhc3luYyBkZWYgX3Jl
cXVlc3Qoc2VsZiwgcmVxdWVzdDogSHR0cFJlcXVlc3QpOgorICAgICAgICBzdHJlYW1faWQgPSBz
ZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBzZWxmLl9o
dHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5t
ZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVy
bC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1
ZXN0LnVybC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
cmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiJ1c2Vy
LWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAg
ICArIFsoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkgZm9yIChrLCB2KSBpbiByZXF1ZXN0LmhlYWRl
cnMuaXRlbXMoKV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2RhdGEoc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LmNvbnRlbnQsIGVuZF9zdHJlYW09VHJ1ZSkK
KworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9y
ZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQo
KQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisKKworYXN5
bmMgZGVmIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgIGNsaWVudDogSHR0cENsaWVudCwgdXJs
OiBzdHIsIGRhdGE6IHN0ciwgaW5jbHVkZTogYm9vbCwgb3V0cHV0X2RpcjogT3B0aW9uYWxbc3Ry
XSwKKykgLT4gTm9uZToKKyAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgIHN0YXJ0ID0gdGltZS50
aW1lKCkKKyAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBodHRwX2V2ZW50cyA9IGF3
YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgdXJsLAorICAgICAgICAgICAgZGF0YT1kYXRh
LmVuY29kZSgpLAorICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAg
ICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisgICAgZWxhcHNlZCA9IHRp
bWUudGltZSgpIC0gc3RhcnQKKworICAgICMgcHJpbnQgc3BlZWQKKyAgICBvY3RldHMgPSAwCisg
ICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIG9jdGV0cyArPSBsZW4oaHR0
cF9ldmVudC5kYXRhKQorICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAiUmVjZWl2ZWQgJWQgYnl0
ZXMgaW4gJS4xZiBzICglLjNmIE1icHMpIgorICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9j
dGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICApCisKKyAgICAjIG91dHB1dCByZXNw
b25zZQorICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dF9wYXRo
ID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3V0cHV0X2Rpciwgb3MucGF0aC5iYXNlbmFt
ZSh1cmxwYXJzZSh1cmwpLnBhdGgpIG9yICJpbmRleC5odG1sIgorICAgICAgICApCisgICAgICAg
IHdpdGggb3BlbihvdXRwdXRfcGF0aCwgIndiIikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGluY2x1ZGU6CisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnMgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYg
aW4gaHR0cF9ldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyAr
PSBrICsgYiI6ICIgKyB2ICsgYiJcclxuIgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXJz
OgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoaGVhZGVycyArIGIi
XHJcbiIpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFS
ZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGh0dHBfZXZl
bnQuZGF0YSkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQ6IFNlc3Npb25UaWNr
ZXQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0
aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAgaXMgcmVjZWl2ZWQu
CisgICAgIiIiCisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIp
CisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vz
c2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0
LCBmcCkKKworCithc3luYyBkZWYgcnVuKAorICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1
cmF0aW9uLAorICAgIHVybHM6IExpc3Rbc3RyXSwKKyAgICBkYXRhOiBzdHIsCisgICAgaW5jbHVk
ZTogYm9vbCwKKyAgICBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorICAgIGxvY2FsX3BvcnQ6
IGludCwKKykgLT4gTm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNl
KHVybHNbMF0pCisgICAgYXNzZXJ0IHBhcnNlZC5zY2hlbWUgaW4gKAorICAgICAgICAiaHR0cHMi
LAorICAgICAgICAid3NzIiwKKyAgICApLCAiT25seSBodHRwczovLyBvciB3c3M6Ly8gVVJMcyBh
cmUgc3VwcG9ydGVkLiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoKKyAgICAgICAgaG9z
dCwgcG9ydF9zdHIgPSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGlu
dChwb3J0X3N0cikKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2VkLm5ldGxvYworICAg
ICAgICBwb3J0ID0gNDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3Qs
CisgICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAg
ICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgbG9jYWxfcG9ydD1sb2NhbF9w
b3J0LAorICAgICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0KEh0dHBDbGllbnQs
IGNsaWVudCkKKworICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICJ3c3MiOgorICAgICAgICAg
ICAgd3MgPSBhd2FpdCBjbGllbnQud2Vic29ja2V0KHVybHNbMF0sIHN1YnByb3RvY29scz1bImNo
YXQiLCAic3VwZXJjaGF0Il0pCisKKyAgICAgICAgICAgICMgc2VuZCBzb21lIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGx5CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gIkhlbGxvIHt9LCBXZWJTb2NrZXQhIi5mb3JtYXQoaSkKKyAgICAg
ICAgICAgICAgICBwcmludCgiPiAiICsgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBhd2FpdCB3
cy5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgd3MucmVj
digpCisgICAgICAgICAgICAgICAgcHJpbnQoIjwgIiArIG1lc3NhZ2UpCisKKyAgICAgICAgICAg
IGF3YWl0IHdzLmNsb3NlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGVyZm9ybSBy
ZXF1ZXN0CisgICAgICAgICAgICBjb3JvcyA9IFsKKyAgICAgICAgICAgICAgICBwZXJmb3JtX2h0
dHBfcmVxdWVzdCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50PWNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlPWluY2x1ZGUsCisgICAgICAgICAgICAgICAgICAgIG91
dHB1dF9kaXI9b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
Zm9yIHVybCBpbiB1cmxzCisgICAgICAgICAgICBdCisgICAgICAgICAgICBhd2FpdCBhc3luY2lv
LmdhdGhlcigqY29yb3MpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBkZWZh
dWx0cyA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorCisgICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBjbGllbnQiKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ1cmwiLCB0eXBlPXN0ciwgbmFyZ3M9Iisi
LCBoZWxwPSJ0aGUgVVJMIHRvIHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBlPXN0ciwgaGVscD0i
bG9hZCBDQSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEiLCB0eXBlPXN0ciwg
aGVscD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVlc3QiCisgICAgKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItaSIsCisgICAgICAgICItLWluY2x1
ZGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJpbmNsdWRl
IHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgaW4gdGhlIG91dHB1dCIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1kYXRhIiwKKyAgICAgICAgdHlwZT1p
bnQsCisgICAgICAgIGhlbHA9ImNvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQgKGRl
ZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfZGF0YSwKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbWF4LXN0cmVhbS1kYXRhIiwKKyAgICAgICAgdHlwZT1pbnQs
CisgICAgICAgIGhlbHA9InBlci1zdHJlYW0gZmxvdyBjb250cm9sIGxpbWl0IChkZWZhdWx0OiAl
ZCkiICUgZGVmYXVsdHMubWF4X3N0cmVhbV9kYXRhLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1pbnNlY3VyZSIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRvIG5vdCB2YWxpZGF0ZSBzZXJ2ZXIg
Y2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxlZ2FjeS1o
dHRwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0idXNlIEhUVFAvMC45IikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgdHlwZT1zdHIsIGhlbHA9
IndyaXRlIGRvd25sb2FkZWQgZmlsZXMgdG8gdGhpcyBkaXJlY3RvcnkiLAorICAgICkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3Ry
LCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNy
ZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0
byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisg
ICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRp
Y2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbG9jYWwtcG9ydCIsIHR5cGU9aW50LCBkZWZhdWx0PTAsIGhl
bHA9ImxvY2FsIHBvcnQgdG8gYmluZCBmb3IgY29ubmVjdGlvbnMiLAorICAgICkKKworICAgIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAg
ICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdl
KXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxv
Z2dpbmcuSU5GTywKKyAgICApCisKKyAgICBpZiBhcmdzLm91dHB1dF9kaXIgaXMgbm90IE5vbmUg
YW5kIG5vdCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0cHV0X2Rpcik6CisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGFyZ3Mub3V0cHV0X2RpcikKKworICAg
ICMgcHJlcGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2NvbHM9SDBfQUxQTiBp
ZiBhcmdzLmxlZ2FjeV9odHRwIGVsc2UgSDNfQUxQTgorICAgICkKKyAgICBpZiBhcmdzLmNhX2Nl
cnRzOgorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhhcmdzLmNh
X2NlcnRzKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24udmVy
aWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5tYXhfZGF0YToKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5tYXhfZGF0YSA9IGFyZ3MubWF4X2RhdGEKKyAgICBpZiBhcmdzLm1heF9z
dHJlYW1fZGF0YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEgPSBhcmdz
Lm1heF9zdHJlYW1fZGF0YQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9n
OgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2Vj
cmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgorICAgICAgICB0cnk6
CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgInJiIikgYXMgZnA6
CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9IHBpY2tsZS5s
b2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxs
KCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgdHJ5OgorICAgICAg
ICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgdXJscz1h
cmdzLnVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWFyZ3MuZGF0YSwKKyAgICAgICAgICAgICAg
ICBpbmNsdWRlPWFyZ3MuaW5jbHVkZSwKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPWFyZ3Mu
b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICBsb2NhbF9wb3J0PWFyZ3MubG9jYWxfcG9ydCwK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZp
Z3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4o
YXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5k
dW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVu
dD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1YjA0
YjAzYzE1NDNmMzYwZDA0Njg4Njk4MzUzNmNlMjVlYWE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKQEAgLTAsMCArMSw0ODQgQEAKK2lt
cG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBq
c29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IGZvcm1hdGRhdGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBV
bmlvbiwgY2FzdAorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8uZXZlbnRzCisKK2lt
cG9ydCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCwgc2VydmUKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBO
LCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBO
LCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZl
ZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBp
bXBvcnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBp
bXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBQcm90b2NvbE5lZ290aWF0ZWQsIFF1aWNFdmVu
dAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyLCBRdWljTG9nZ2Vy
VHJhY2UKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K0FzZ2lBcHBsaWNhdGlvbiA9IENhbGxhYmxlCitIdHRwQ29ubmVjdGlvbiA9IFVuaW9uW0gwQ29u
bmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitTRVJWRVJfTkFNRSA9ICJhaW9xdWljLyIgKyBhaW9x
dWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgSHR0cFJlcXVlc3RIYW5kbGVyOgorICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgYXV0aG9yaXR5OiBi
eXRlcywKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisgICAgICAgIHByb3Rv
Y29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgICAgICBzY29wZTogRGljdCwKKyAgICAg
ICAgc3RyZWFtX2VuZGVkOiBib29sLAorICAgICAgICBzdHJlYW1faWQ6IGludCwKKyAgICAgICAg
dHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuYXV0aG9yaXR5ID0gYXV0aG9yaXR5CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5l
Y3Rpb24KKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYucXVl
dWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5z
Y29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAg
IHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAg
ICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAiaHR0cC5yZXF1ZXN0In0p
CisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4g
Tm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImh0dHAucmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICJib2R5IjogZXZlbnQuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIm1vcmVfYm9keSI6IG5v
dCBldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50
LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAg
ICAgICAgICAgICB7InR5cGUiOiAiaHR0cC5yZXF1ZXN0IiwgImJvZHkiOiBiIiIsICJtb3JlX2Jv
ZHkiOiBGYWxzZX0KKyAgICAgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxm
LCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgYXdhaXQgYXBwbGljYXRp
b24oc2VsZi5zY29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisKKyAgICBhc3luYyBkZWYg
cmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5n
ZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogRGljdCkgLT4gTm9uZToK
KyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnN0YXJ0IjoKKyAg
ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgc3RyKG1lc3NhZ2VbInN0YXR1cyJdKS5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9OQU1FLmVuY29k
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1l
KCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICsgWyhrLCB2KSBmb3IgaywgdiBpbiBtZXNzYWdlWyJoZWFkZXJzIl1dLAorICAgICAg
ICAgICAgKQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5i
b2R5IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9bWVz
c2FnZS5nZXQoImJvZHkiLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09bm90IG1l
c3NhZ2UuZ2V0KCJtb3JlX2JvZHkiLCBGYWxzZSksCisgICAgICAgICAgICApCisgICAgICAgIGVs
aWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnB1c2giIGFuZCBpc2luc3RhbmNl
KAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb24KKyAgICAgICAgKToK
KyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IFsKKyAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzZWxmLmF1dGhvcml0eSksCisgICAgICAg
ICAgICAgICAgKGIiOnBhdGgiLCBtZXNzYWdlWyJwYXRoIl0uZW5jb2RlKCkpLAorICAgICAgICAg
ICAgXSArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJdXQorCisgICAgICAg
ICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcHVzaF9zdHJlYW1faWQgPSBzZWxmLmNvbm5lY3Rpb24uc2VuZF9wdXNoX3Byb21pc2UoCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwgaGVhZGVycz1yZXF1
ZXN0X2hlYWRlcnMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgTm9BdmFp
bGFibGVQdXNoSURFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAg
IyBmYWtlIHJlcXVlc3QKKyAgICAgICAgICAgIGNhc3QoSHR0cFNlcnZlclByb3RvY29sLCBzZWxm
LnByb3RvY29sKS5odHRwX2V2ZW50X3JlY2VpdmVkKAorICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1yZXF1ZXN0X2hlYWRlcnMsIHN0
cmVhbV9lbmRlZD1UcnVlLCBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK2NsYXNzIFdl
YlNvY2tldEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAg
ICAqLAorICAgICAgICBjb25uZWN0aW9uOiBIdHRwQ29ubmVjdGlvbiwKKyAgICAgICAgc2NvcGU6
IERpY3QsCisgICAgICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFuc21pdDogQ2FsbGFi
bGVbW10sIE5vbmVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxz
ZQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAgIHNlbGYuaHR0
cF9ldmVudF9xdWV1ZTogRGVxdWVbRGF0YVJlY2VpdmVkXSA9IGRlcXVlKCkKKyAgICAgICAgc2Vs
Zi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFzeW5jaW8uUXVldWUoKQorICAgICAgICBz
ZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKKyAg
ICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYud2Vic29ja2V0OiBP
cHRpb25hbFt3c3Byb3RvLkNvbm5lY3Rpb25dID0gTm9uZQorCisgICAgZGVmIGh0dHBfZXZlbnRf
cmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAg
ICAgIGlmIHNlbGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
d2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAgICAgICAgICAgZm9y
IHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBkZWxheSBldmVudCBwcm9jZXNzaW5nIHVudGlsIHdlIGdl
dCBgd2Vic29ja2V0LmFjY2VwdGAKKyAgICAgICAgICAgICAgICAjIGZyb20gdGhlIEFTR0kgYXBw
bGljYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcXVldWUuYXBwZW5kKGV2
ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogd3Nw
cm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQs
IHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0
X25vd2FpdCh7InR5cGUiOiAid2Vic29ja2V0LnJlY2VpdmUiLCAidGV4dCI6IGV2ZW50LmRhdGF9
KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLk1lc3NhZ2Up
OgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQu
cmVjZWl2ZSIsICJieXRlcyI6IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgICAgICBzZWxm
LnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5kaXNjb25uZWN0IiwgImNvZGUi
OiBldmVudC5jb2RlfSkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxmLCBhcHA6IEFzZ2lB
cHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlw
ZSI6ICJ3ZWJzb2NrZXQuY29ubmVjdCJ9KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF3
YWl0IGFwcGxpY2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2VsZi5zZW5kKQorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAg
ICAgICAgIGF3YWl0IHNlbGYuc2VuZCh7InR5cGUiOiAid2Vic29ja2V0LmNsb3NlIiwgImNvZGUi
OiAxMDAwfSkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6CisgICAgICAg
IHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxm
LCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBkYXRhID0gYiIiCisgICAgICAgIGVu
ZF9zdHJlYW0gPSBGYWxzZQorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gIndlYnNvY2tl
dC5hY2NlcHQiOgorICAgICAgICAgICAgc3VicHJvdG9jb2wgPSBtZXNzYWdlLmdldCgic3VicHJv
dG9jb2wiKQorCisgICAgICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlv
bih3c3Byb3RvLkNvbm5lY3Rpb25UeXBlLlNFUlZFUikKKworICAgICAgICAgICAgaGVhZGVycyA9
IFsKKyAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIi
ZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisg
ICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwg
c3VicHJvdG9jb2wuZW5jb2RlKCkpKQorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRf
aGVhZGVycyhzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAg
ICAgICAgICAgIyBjb25zdW1lIGJhY2tsb2cKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuaHR0cF9l
dmVudF9xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoc2Vs
Zi5odHRwX2V2ZW50X3F1ZXVlLnBvcGxlZnQoKSkKKworICAgICAgICBlbGlmIG1lc3NhZ2VbInR5
cGUiXSA9PSAid2Vic29ja2V0LmNsb3NlIjoKKyAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5k
KAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29k
ZT1tZXNzYWdlWyJjb2RlIl0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9WyhiIjpzdGF0dXMi
LCBiIjQwMyIpXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVuZF9zdHJlYW0gPSBU
cnVlCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuc2VuZCI6Cisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmdldCgidGV4dCIpIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAgICAgICAgICAgICAgICB3
c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShkYXRhPW1lc3NhZ2VbInRleHQiXSkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBlbGlmIG1lc3NhZ2UuZ2V0KCJieXRlcyIpIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAg
ICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5NZXNzYWdlKGRhdGE9bWVzc2FnZVsiYnl0ZXMi
XSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHNl
bGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYu
c3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbQorICAgICAgICAgICAg
KQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVl
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK0hhbmRsZXIgPSBVbmlvbltIdHRwUmVxdWVz
dEhhbmRsZXIsIFdlYlNvY2tldEhhbmRsZXJdCisKKworY2xhc3MgSHR0cFNlcnZlclByb3RvY29s
KFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBzZWxmLl9oYW5kbGVyczogRGljdFtpbnQsIEhhbmRsZXJdID0ge30KKyAg
ICAgICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorCisgICAg
ZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50LnN0
cmVhbV9pZCBub3QgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAgICBhdXRob3JpdHkgPSBO
b25lCisgICAgICAgICAgICBoZWFkZXJzID0gW10KKyAgICAgICAgICAgIGh0dHBfdmVyc2lvbiA9
ICIwLjkiIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDBDb25uZWN0aW9uKSBlbHNlICIzIgor
ICAgICAgICAgICAgcmF3X3BhdGggPSBiIiIKKyAgICAgICAgICAgIG1ldGhvZCA9ICIiCisgICAg
ICAgICAgICBwcm90b2NvbCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGlu
IGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOmF1dGhvcml0
eSI6CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IHZhbHVlCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnMuYXBwZW5kKChiImhvc3QiLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAg
ZWxpZiBoZWFkZXIgPT0gYiI6bWV0aG9kIjoKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0g
dmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjpwYXRoIjoK
KyAgICAgICAgICAgICAgICAgICAgcmF3X3BhdGggPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVs
aWYgaGVhZGVyID09IGIiOnByb3RvY29sIjoKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wg
PSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVyIGFuZCBub3QgaGVh
ZGVyLnN0YXJ0c3dpdGgoYiI6Iik6CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5k
KChoZWFkZXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgYiI/IiBpbiByYXdfcGF0aDoKKyAg
ICAgICAgICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aC5zcGxpdChi
Ij8iLCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXRo
X2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aCwgYiIiCisgICAgICAgICAgICBwYXRoID0g
cGF0aF9ieXRlcy5kZWNvZGUoKQorCisgICAgICAgICAgICAjIEZJWE1FOiBhZGQgYSBwdWJsaWMg
QVBJIHRvIHJldHJpZXZlIHBlZXIgYWRkcmVzcworICAgICAgICAgICAgY2xpZW50X2FkZHIgPSBz
ZWxmLl9odHRwLl9xdWljLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIKKyAgICAgICAgICAgIGNsaWVu
dCA9IChjbGllbnRfYWRkclswXSwgY2xpZW50X2FkZHJbMV0pCisKKyAgICAgICAgICAgIGhhbmRs
ZXI6IEhhbmRsZXIKKyAgICAgICAgICAgIHNjb3BlOiBEaWN0CisgICAgICAgICAgICBpZiBtZXRo
b2QgPT0gIkNPTk5FQ1QiIGFuZCBwcm90b2NvbCA9PSAid2Vic29ja2V0IjoKKyAgICAgICAgICAg
ICAgICBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGhl
YWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVh
ZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJwcm90b2NvbHMgPSBbeC5zdHJpcCgpIGZvciB4IGluIHZhbHVlLmRlY29kZSgpLnNwbGl0
KCIsIildCisgICAgICAgICAgICAgICAgc2NvcGUgPSB7CisgICAgICAgICAgICAgICAgICAgICJj
bGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgInBh
dGgiOiBwYXRoLAorICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3Ry
aW5nLAorICAgICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgInJvb3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAgICAgICAic2NoZW1l
IjogIndzcyIsCisgICAgICAgICAgICAgICAgICAgICJzdWJwcm90b2NvbHMiOiBzdWJwcm90b2Nv
bHMsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIndlYnNvY2tldCIsCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBXZWJTb2NrZXRIYW5kbGVyKAorICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAgICAg
ICAgIHNjb3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uczogRGljdFtzdHIsIERpY3RdID0ge30KKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHNlbGYuX2h0dHAsIEgzQ29ubmVjdGlvbik6CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnNbImh0dHAucmVzcG9uc2UucHVzaCJdID0ge30KKyAgICAgICAgICAgICAgICBzY29wZSA9IHsK
KyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVuc2lvbnMiOiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVy
cyI6IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNpb24iOiBodHRwX3Zl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2QsCisgICAgICAgICAg
ICAgICAgICAgICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X3N0cmlu
ZyI6IHF1ZXJ5X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19wYXRoIjogcmF3X3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgInNjaGVtZSI6ICJodHRwcyIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImh0
dHAiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gSHR0cFJl
cXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHk9YXV0aG9yaXR5LAor
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAg
ICAgICAgIHByb3RvY29sPXNlbGYsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlPXNjb3BlLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9ZXZlbnQuc3RyZWFtX2VuZGVkLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0gPSBoYW5kbGVyCisgICAgICAg
ICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaGFuZGxlci5ydW5fYXNnaShhcHBsaWNhdGlvbikp
CisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5jZShldmVudCwgKERhdGFSZWNl
aXZlZCwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIGFuZCBldmVudC5zdHJlYW1faWQg
aW4gc2VsZi5faGFuZGxlcnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxm
Ll9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdCisgICAgICAgICAgICBoYW5kbGVyLmh0dHBfZXZl
bnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBQ
cm90b2NvbE5lZ290aWF0ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5z
dGFydHN3aXRoKCJoMy0iKToKKyAgICAgICAgICAgICAgICBzZWxmLl9odHRwID0gSDNDb25uZWN0
aW9uKHNlbGYuX3F1aWMpCisgICAgICAgICAgICBlbGlmIGV2ZW50LmFscG5fcHJvdG9jb2wuc3Rh
cnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVjdGlv
bihzZWxmLl9xdWljKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFncmFtRnJh
bWVSZWNlaXZlZCk6CisgICAgICAgICAgICBpZiBldmVudC5kYXRhID09IGIicXVhY2siOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShiInF1YWNrLWFjayIp
CisKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYg
c2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNl
bGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBf
ZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6
CisgICAgIiIiCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lvbiB0aWNrZXRz
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYudGlj
a2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBsYWJlbDog
Ynl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitjbGFzcyBRdWljTG9nZ2VyQ3VzdG9tKFF1aWNM
b2dnZXIpOgorICAgICIiIgorICAgIEN1c3RvbSBRVUlDIGxvZ2dlciB3aGljaCB3cml0ZXMgb25l
IHRyYWNlIHBlciBmaWxlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg6
IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJRVUlDIGxvZyBvdXRwdXQgZGlyZWN0b3J5ICclcycg
ZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIGRlZiBlbmRfdHJhY2Uoc2VsZiwgdHJhY2U6IFF1
aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKKyAgICAgICAgdHJhY2VfZGljdCA9IHRyYWNlLnRvX2Rp
Y3QoKQorICAgICAgICB0cmFjZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgc2Vs
Zi5wYXRoLCB0cmFjZV9kaWN0WyJjb21tb25fZmllbGRzIl1bIk9EQ0lEIl0gKyAiLnFsb2ciCisg
ICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX3BhdGgsICJ3IikgYXMgbG9nZ2VyX2Zw
OgorICAgICAgICAgICAganNvbi5kdW1wKHsicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwgInRy
YWNlcyI6IFt0cmFjZV9kaWN0XX0sIGxvZ2dlcl9mcCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLnJl
bW92ZSh0cmFjZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJRVUlDIHNlcnZlciIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImFwcCIsCisgICAgICAgIHR5cGU9c3RyLAor
ICAgICAgICBuYXJncz0iPyIsCisgICAgICAgIGRlZmF1bHQ9ImRlbW86YXBwIiwKKyAgICAgICAg
aGVscD0idGhlIEFTR0kgYXBwbGljYXRpb24gYXMgPG1vZHVsZT46PGF0dHJpYnV0ZT4iLAorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWMiLAorICAgICAgICAiLS1j
ZXJ0aWZpY2F0ZSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAor
ICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVk
IGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1ob3N0
IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Ijo6IiwKKyAgICAgICAgaGVs
cD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tcG9ydCIsCisgICAgICAg
IHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhlbHA9Imxpc3RlbiBv
biB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0tcHJpdmF0ZS1rZXki
LAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVs
cD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
c2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3Jl
dHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVs
cD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAgICAgIi0tc3RhdGVsZXNz
LXJldHJ5IiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0ic2Vu
ZCBhIHN0YXRlbGVzcyByZXRyeSBmb3IgbmV3IGNvbm5lY3Rpb25zIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKyAgICBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAg
ICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2Fn
ZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBs
b2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBpbXBvcnQgQVNHSSBhcHBsaWNhdGlvbgorICAg
IG1vZHVsZV9zdHIsIGF0dHJfc3RyID0gYXJncy5hcHAuc3BsaXQoIjoiLCBtYXhzcGxpdD0xKQor
ICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9zdHIpCisgICAgYXBw
bGljYXRpb24gPSBnZXRhdHRyKG1vZHVsZSwgYXR0cl9zdHIpCisKKyAgICAjIGNyZWF0ZSBRVUlD
IGxvZ2dlcgorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIHF1aWNfbG9nZ2VyID0gUXVp
Y0xvZ2dlckN1c3RvbShhcmdzLnF1aWNfbG9nKQorICAgIGVsc2U6CisgICAgICAgIHF1aWNfbG9n
Z2VyID0gTm9uZQorCisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0
c19sb2c6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2cs
ICJhIikKKyAgICBlbHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29s
cz1IM19BTFBOICsgSDBfQUxQTiArIFsic2lkdWNrIl0sCisgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisgICAgICAgIHF1aWNf
bG9nZ2VyPXF1aWNfbG9nZ2VyLAorICAgICAgICBzZWNyZXRzX2xvZ19maWxlPXNlY3JldHNfbG9n
X2ZpbGUsCisgICAgKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5CisgICAg
Y29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0ZSwgYXJncy5wcml2
YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisKKyAg
ICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxsKCkKKyAgICBs
b29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAorICAgICAgICAgICAg
YXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBTZXJ2ZXJQcm90b2NvbCwKKyAgICAgICAgICAg
IHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAgICAgICAgICAgIHNl
c3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAgICAgICAgIHN0YXRl
bGVzc19yZXRyeT1hcmdzLnN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgKQorICAgICkKKyAgICB0
cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0
dHB4X2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMyOTk5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKQEAgLTAs
MCArMSwyMTMgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29u
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUK
K2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUs
IERpY3QsIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCitmcm9tIGh0
dHB4IGltcG9ydCBBc3luY0NsaWVudAorZnJvbSBodHRweC5jb25maWcgaW1wb3J0IFRpbWVvdXQK
K2Zyb20gaHR0cHguZGlzcGF0Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRjaGVyCitmcm9tIGh0
dHB4Lm1vZGVscyBpbXBvcnQgUmVxdWVzdCwgUmVzcG9uc2UKKworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQor
CisKK2NsYXNzIEgzRGlzcGF0Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29sLCBBc3luY0Rpc3Bh
dGNoZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9odHRw
ID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRz
OiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5fcmVxdWVzdF93
YWl0ZXI6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KKwor
ICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRpbWVvdXQ6IFRpbWVv
dXQgPSBOb25lKSAtPiBSZXNwb25zZToKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKworICAgICAgICAjIHByZXBhcmUgcmVxdWVz
dAorICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBzdHIocmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2RlKCkpLAor
ICAgICAgICAgICAgXQorICAgICAgICAgICAgKyBbCisgICAgICAgICAgICAgICAgKGsuZW5jb2Rl
KCksIHYuZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiByZXF1ZXN0Lmhl
YWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIGsgbm90IGluICgiY29ubmVjdGlvbiIs
ICJob3N0IikKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5z
ZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJlYWQoKSwgZW5kX3N0
cmVhbT1UcnVlKQorCisgICAgICAgICMgdHJhbnNtaXQgcmVxdWVzdAorICAgICAgICB3YWl0ZXIg
PSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50
c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJl
YW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgICAgICMgcHJv
Y2VzcyByZXNwb25zZQorICAgICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRdID0gYXdhaXQgYXN5
bmNpby5zaGllbGQod2FpdGVyKQorICAgICAgICBjb250ZW50ID0gYiIiCisgICAgICAgIGhlYWRl
cnMgPSBbXQorICAgICAgICBzdGF0dXNfY29kZSA9IE5vbmUKKyAgICAgICAgZm9yIGV2ZW50IGlu
IGV2ZW50czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXJbMDoxXSAhPSBiIjoiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUuZGVjb2RlKCkpKQor
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgKz0gZXZlbnQuZGF0YQorCisgICAgICAgIHJldHVybiBSZXNwb25z
ZSgKKyAgICAgICAgICAgIHN0YXR1c19jb2RlPXN0YXR1c19jb2RlLAorICAgICAgICAgICAgaHR0
cF92ZXJzaW9uPSJIVFRQLzMiLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAg
ICAgICAgY29udGVudD1jb250ZW50LAorICAgICAgICAgICAgcmVxdWVzdD1yZXF1ZXN0LAorICAg
ICAgICApCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVu
dCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFS
ZWNlaXZlZCkpOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAg
ICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQp
CisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQp
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVx
dWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZl
ZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhl
IEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAg
ICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitk
ZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICIiIgorICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tl
dAorICAgIGlzIHJlY2VpdmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lv
biB0aWNrZXQgcmVjZWl2ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAg
IHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAg
IHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9u
OiBRdWljQ29uZmlndXJhdGlvbiwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4gTm9uZToKKyAgICAj
IHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKyAgICBhc3NlcnQgcGFyc2Vk
LnNjaGVtZSA9PSAiaHR0cHMiLCAiT25seSBodHRwczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgor
ICAgIGlmICI6IiBpbiBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBh
cnNlZC5uZXRsb2Muc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQorICAg
IGVsc2U6CisgICAgICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHBvcnQgPSA0NDMK
KworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAgICAgICAgcG9ydCwK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9SDNEaXNwYXRjaGVyLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVf
c2Vzc2lvbl90aWNrZXQsCisgICAgKSBhcyBkaXNwYXRjaDoKKyAgICAgICAgY2xpZW50ID0gQXN5
bmNDbGllbnQoZGlzcGF0Y2g9Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3BhdGNoKSkKKworICAg
ICAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNs
aWVudC5wb3N0KAorICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWRh
dGEuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisK
KyAgICAgICAgZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICAjIHByaW50
IHNwZWVkCisgICAgICAgIG9jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50KQorICAgICAgICBs
b2dnZXIuaW5mbygKKyAgICAgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUu
M2YgTWJwcykiCisgICAgICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9jdGV0cyAqIDggLyBl
bGFwc2VkIC8gMTAwMDAwMCkKKyAgICAgICAgKQorCisgICAgICAgICMgcHJpbnQgcmVzcG9uc2UK
KyAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVycy5pdGVtcygpOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsgdmFsdWUgKyAiXHJc
biIpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlxyXG4iKQorICAgICAgICBzeXMuc3Rkb3V0
LmJ1ZmZlci53cml0ZShyZXNwb25zZS5jb250ZW50KQorICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZl
ci5mbHVzaCgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRoZSBVUkwgdG8gcXVl
cnkgKG11c3QgYmUgSFRUUFMpIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGlu
IGEgUE9TVCByZXF1ZXN0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8g
YSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3Ry
LAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJl
c2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXMiLAor
ICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBo
ZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmls
ZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJv
c2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9n
Z2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFt
ZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBp
ZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBwcmVwYXJl
IGNvbmZpZ3VyYXRpb24KKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4pCisgICAgaWYgYXJncy5xdWljX2xv
ZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQorICAg
IGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2df
ZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90
aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25f
dGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Np
b25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9s
b29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFyZ3MudXJsLCBkYXRh
PWFyZ3MuZGF0YSkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJn
cy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5kdW1w
KGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmFkMjBiNjZiNGI3NTEzZWNl
YTZiYTMzZDM3NGE0OTVlNGU1MmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2ludGVyb3AucHkKQEAgLTAsMCArMSw1MzIgQEAKKyMKKyMgISEhIFdBUk5JTkcgISEh
CisjCisjIFRoaXMgZXhhbXBsZSB1c2VzIHNvbWUgcHJpdmF0ZSBBUElzLgorIworCitpbXBvcnQg
YXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3Ms
IGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEZsYWcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bCwgY2FzdAorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCB1cmxsaWIzCitmcm9tIGh0dHAzX2Ns
aWVudCBpbXBvcnQgSHR0cENsaWVudAorCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgY29u
bmVjdAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4KK2Zyb20gYWlv
cXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlv
cXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNo
UHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBR
dWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9n
Z2VyCisKKworY2xhc3MgUmVzdWx0KEZsYWcpOgorICAgIFYgPSAweDAwMDAwMQorICAgIEggPSAw
eDAwMDAwMgorICAgIEQgPSAweDAwMDAwNAorICAgIEMgPSAweDAwMDAwOAorICAgIFIgPSAweDAw
MDAxMAorICAgIFogPSAweDAwMDAyMAorICAgIFMgPSAweDAwMDA0MAorICAgIFEgPSAweDAwMDA4
MAorCisgICAgTSA9IDB4MDAwMTAwCisgICAgQiA9IDB4MDAwMjAwCisgICAgQSA9IDB4MDAwNDAw
CisgICAgVSA9IDB4MDAwODAwCisgICAgUCA9IDB4MDAxMDAwCisgICAgRSA9IDB4MDAyMDAwCisg
ICAgTCA9IDB4MDA0MDAwCisgICAgVCA9IDB4MDA4MDAwCisKKyAgICB0aHJlZSA9IDB4MDEwMDAw
CisgICAgZCA9IDB4MDIwMDAwCisgICAgcCA9IDB4MDQwMDAwCisKKyAgICBkZWYgX19zdHJfXyhz
ZWxmKToKKyAgICAgICAgZmxhZ3MgPSBzb3J0ZWQoCisgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgbGFtYmRhIHg6IGdldGF0dHIoUmVzdWx0LCB4KSwKKyAgICAgICAgICAgICAgICBm
aWx0ZXIobGFtYmRhIHg6IG5vdCB4LnN0YXJ0c3dpdGgoIl8iKSwgZGlyKFJlc3VsdCkpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogeC52YWx1ZSwKKyAgICAgICAg
KQorICAgICAgICByZXN1bHRfc3RyID0gIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6Cisg
ICAgICAgICAgICBpZiBzZWxmICYgZmxhZzoKKyAgICAgICAgICAgICAgICByZXN1bHRfc3RyICs9
IGZsYWcubmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHRfc3Ry
ICs9ICItIgorICAgICAgICByZXR1cm4gcmVzdWx0X3N0cgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFNlcnZlcjoKKyAgICBuYW1lOiBzdHIKKyAgICBob3N0OiBzdHIKKyAgICBwb3J0OiBpbnQgPSA0
NDMzCisgICAgaHR0cDM6IGJvb2wgPSBUcnVlCisgICAgcmV0cnlfcG9ydDogT3B0aW9uYWxbaW50
XSA9IDQ0MzQKKyAgICBwYXRoOiBzdHIgPSAiLyIKKyAgICBwdXNoX3BhdGg6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgcmVzdWx0OiBSZXN1bHQgPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGFt
YmRhOiBSZXN1bHQoMCkpCisgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgc3RydWN0dXJlZF9sb2dnaW5nOiBib29sID0gRmFsc2UKKyAgICB0aHJv
dWdocHV0X2ZpbGVfc3VmZml4OiBzdHIgPSAiIgorICAgIHZlcmlmeV9tb2RlOiBPcHRpb25hbFtp
bnRdID0gTm9uZQorCisKK1NFUlZFUlMgPSBbCisgICAgU2VydmVyKCJha2FtYWlxdWljIiwgImll
dGYuYWthcXVpYy5jb20iLCBwb3J0PTQ0MywgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCisg
ICAgU2VydmVyKAorICAgICAgICAiYWlvcXVpYyIsICJxdWljLmFpb3J0Yy5vcmciLCBwb3J0PTQ0
MywgcHVzaF9wYXRoPSIvIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAgICApLAorICAgIFNl
cnZlcigiYXRzIiwgInF1aWMub2dyZS5jb20iKSwKKyAgICBTZXJ2ZXIoImY1IiwgImY1cXVpYy5j
b20iLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZlcigiaGFza2VsbCIsICJtZXcub3JnIiwg
cmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImdxdWljIiwgInF1aWMucm9ja3MiLCByZXRy
eV9wb3J0PU5vbmUpLAorICAgIFNlcnZlcigibHNxdWljIiwgImh0dHAzLXRlc3QubGl0ZXNwZWVk
dGVjaC5jb20iLCBwdXNoX3BhdGg9Ii8yMDA/cHVzaD0vMTAwIiksCisgICAgU2VydmVyKAorICAg
ICAgICAibXNxdWljIiwKKyAgICAgICAgInF1aWMud2VzdHVzLmNsb3VkYXBwLmF6dXJlLmNvbSIs
CisgICAgICAgIHBvcnQ9NDQzMywKKyAgICAgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ9NDQz
MywKKyAgICAgICAgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUsCisgICAgICAgIHRocm91Z2hwdXRf
ZmlsZV9zdWZmaXg9Ii50eHQiLAorICAgICAgICB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FLAor
ICAgICksCisgICAgU2VydmVyKAorICAgICAgICAibXZmc3QiLCAiZmIubXZmc3QubmV0IiwgcG9y
dD00NDMsIHB1c2hfcGF0aD0iL3B1c2giLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9VHJ1ZQorICAgICks
CisgICAgU2VydmVyKCJuZ3RjcDIiLCAibmdodHRwMi5vcmciLCBwdXNoX3BhdGg9Ii8/cHVzaD0v
MTAwIiksCisgICAgU2VydmVyKCJuZ3hfcXVpYyIsICJjbG91ZGZsYXJlLXF1aWMuY29tIiwgcG9y
dD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInBhbmRvcmEiLCAicGFuZG9yYS5j
bS5pbi50dW0uZGUiLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAgICBTZXJ2ZXIoInBp
Y29xdWljIiwgInRlc3QucHJpdmF0ZW9jdG9wdXMuY29tIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRy
dWUpLAorICAgIFNlcnZlcigicXVhbnQiLCAicXVhbnQuZWdnZXJ0Lm9yZyIsIGh0dHAzPUZhbHNl
KSwKKyAgICBTZXJ2ZXIoInF1aWMtZ28iLCAicXVpYy5zZWVtYW5uLmlvIiwgcG9ydD00NDMsIHJl
dHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInF1aWNoZSIsICJxdWljLnRlY2giLCBwb3J0PTg0
NDMsIHJldHJ5X3BvcnQ9ODQ0NCksCisgICAgU2VydmVyKCJxdWljbHkiLCAicXVpYy5leGFtcDFl
Lm5ldCIpLAorICAgIFNlcnZlcigicXVpbm4iLCAicmFsaXRoLmNvbSIpLAorXQorCisKK2FzeW5j
IGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb24oc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRp
b246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICAjIGZvcmNlIHZlcnNpb24gbmVnb3RpYXRpb24K
KyAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0
QSkKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInZlcnNpb25f
bmVnb3RpYXRpb24iCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1
bHQgfD0gUmVzdWx0LlYKKworCithc3luYyBkZWYgdGVzdF9oYW5kc2hha2VfYW5kX2Nsb3NlKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5
bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0
IHByb3RvY29sLnBpbmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ICisgICAg
c2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQworCisKK2FzeW5jIGRlZiB0ZXN0X3N0YXRlbGVzc19y
ZXRyeShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgor
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5yZXRy
eV9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInJldHJ5Igor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5T
CisKKworYXN5bmMgZGVmIHRlc3RfcXVhbnR1bV9yZWFkaW5lc3Moc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBjb25maWd1cmF0aW9uLnF1YW50
dW1fcmVhZGluZXNzX3Rlc3QgPSBUcnVlCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAg
ICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorICAgICAg
ICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5RCisKKworYXN5bmMgZGVmIHRlc3RfaHR0cF8wKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgaWYg
c2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBjb25maWd1cmF0aW9u
LmFscG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAg
ICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAgICBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBw
cm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0CisgICAgICAgIGV2ZW50
cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZv
cm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICApCisg
ICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ECisKKworYXN5bmMgZGVm
IHRlc3RfaHR0cF8zKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJh
dGlvbik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1IdHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2Fz
dChIdHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0
CisgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRw
czovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRo
KQorICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0s
IEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5E
CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC50aHJlZQorCisgICAgICAgICMg
cGVyZm9ybSBtb3JlIEhUVFAgcmVxdWVzdHMgdG8gdXNlIFFQQUNLIGR5bmFtaWMgdGFibGVzCisg
ICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJv
dG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZvcm1hdChzZXJ2
ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgor
ICAgICAgICAgICAgaHR0cCA9IGNhc3QoSDNDb25uZWN0aW9uLCBwcm90b2NvbC5faHR0cCkKKyAg
ICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICAgICAi
UVBBQ0sgZGVjb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAgICAgICAgaHR0cC5f
ZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5
dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fbG9n
Z2VyLmluZm8oCisgICAgICAgICAgICAgICAgIlFQQUNLIGVuY29kZXIgYnl0ZXMgUlggJWQgVFgg
JWQiLAorICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQsCisgICAg
ICAgICAgICAgICAgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50LAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNfcmVjZWl2
ZWQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZGVjb2Rlcl9ieXRlc19zZW50CisgICAgICAg
ICAgICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAg
ICBhbmQgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50CisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LmQKKworICAgICAgICAjIGNoZWNrIHB1c2gg
c3VwcG9ydAorICAgICAgICBpZiBzZXJ2ZXIucHVzaF9wYXRoIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgcHJvdG9jb2wucHVzaGVzLmNsZWFyKCkKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29s
LmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucHVzaF9wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjUpCisgICAgICAgICAgICBmb3IgcHVzaF9pZCwg
ZXZlbnRzIGluIHByb3RvY29sLnB1c2hlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICAgICAgbGVuKGV2ZW50cykgPj0gMworICAgICAgICAgICAgICAgICAg
ICBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIFB1c2hQcm9taXNlUmVjZWl2ZWQpCisgICAgICAg
ICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1sxXSwgSGVhZGVyc1JlY2VpdmVkKQor
ICAgICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMl0sIERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5fcXVp
Yy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAiUHVzaCBwcm9taXNlICVk
IGZvciAlcyByZWNlaXZlZCAoc3RhdHVzICVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGljdChldmVudHNbMF0uaGVhZGVycylb
YiI6cGF0aCJdLmRlY29kZSgiYXNjaWkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludChk
aWN0KGV2ZW50c1sxXS5oZWFkZXJzKVtiIjpzdGF0dXMiXSksCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5wCisKKwor
YXN5bmMgZGVmIHRlc3Rfc2Vzc2lvbl9yZXN1bXB0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgcG9ydCA9IHNlcnZlci5zZXNzaW9uX3Jl
c3VtcHRpb25fcG9ydCBvciBzZXJ2ZXIucG9ydAorICAgIHNhdmVkX3RpY2tldCA9IE5vbmUKKwor
ICAgIGRlZiBzZXNzaW9uX3RpY2tldF9oYW5kbGVyKHRpY2tldCk6CisgICAgICAgIG5vbmxvY2Fs
IHNhdmVkX3RpY2tldAorICAgICAgICBzYXZlZF90aWNrZXQgPSB0aWNrZXQKKworICAgICMgY29u
bmVjdCBhIGZpcnN0IHRpbWUsIHJlY2VpdmUgYSB0aWNrZXQKKyAgICBhc3luYyB3aXRoIGNvbm5l
Y3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vz
c2lvbl90aWNrZXRfaGFuZGxlciwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBhd2FpdCBw
cm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHNvbWUgc2VydmVycyBkb24ndCBzZW5kIHRoZSB0
aWNrZXQgaW1tZWRpYXRlbHkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCisgICAg
IyBjb25uZWN0IGEgc2Vjb25kIHRpbWUsIHdpdGggdGhlIHRpY2tldAorICAgIGlmIHNhdmVkX3Rp
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9
IHNhdmVkX3RpY2tldAorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2VydmVyLmhvc3QsIHBv
cnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikgYXMgcHJvdG9jb2w6CisgICAgICAgICAg
ICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHdh
cyByZXN1bWVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMuc2Vzc2lvbl9yZXN1
bWVkOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlIKKworICAgICAg
ICAgICAgIyBjaGVjayBlYXJseSBkYXRhIHdhcyBhY2NlcHRlZAorICAgICAgICAgICAgaWYgcHJv
dG9jb2wuX3F1aWMudGxzLmVhcmx5X2RhdGFfYWNjZXB0ZWQ6CisgICAgICAgICAgICAgICAgc2Vy
dmVyLnJlc3VsdCB8PSBSZXN1bHQuWgorCisKK2FzeW5jIGRlZiB0ZXN0X2tleV91cGRhdGUoc2Vy
dmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVz
ZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAg
IyByZXF1ZXN0IGtleSB1cGRhdGUKKyAgICAgICAgcHJvdG9jb2wucmVxdWVzdF9rZXlfdXBkYXRl
KCkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2Nv
bC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5VCisKKworYXN5bmMg
ZGVmIHRlc3RfbWlncmF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9z
dCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJv
dG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3Rv
Y29sLnBpbmcoKQorCisgICAgICAgICMgY2hhbmdlIGNvbm5lY3Rpb24gSUQgYW5kIHJlcGxhY2Ug
dHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgcHJvdG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0IGxvb3AuY3JlYXRl
X2RhdGFncmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2FkZHI9KCI6OiIsIDAp
KQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29s
LnBpbmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGRjaWRzID0gc2V0KCkKKyAg
ICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBdWzBd
WyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9
PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2Vp
dmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICIxUlRUIgor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBkY2lkcy5hZGQoZGF0YVsiaGVhZGVyIl1b
ImRjaWQiXSkKKyAgICAgICAgaWYgbGVuKGRjaWRzKSA9PSAyOgorICAgICAgICAgICAgc2VydmVy
LnJlc3VsdCB8PSBSZXN1bHQuTQorCisKK2FzeW5jIGRlZiB0ZXN0X3JlYmluZGluZyhzZXJ2ZXI6
IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdp
dGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNv
bWUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHJl
cGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQuY2xvc2UoKQorICAg
ICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1iZGE6IHByb3RvY29s
LCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYwor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9
IFJlc3VsdC5CCisKKworYXN5bmMgZGVmIHRlc3Rfc3Bpbl9iaXQoc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
CisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Cisg
ICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZwor
ICAgICAgICBzcGluX2JpdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBl
dmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAg
ICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYg
Y2F0ZWdvcnkgPT0gImNvbm5lY3Rpdml0eSIgYW5kIGV2ZW50ID09ICJzcGluX2JpdF91cGRhdGVk
IjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdHMuYWRkKGRhdGFbInN0YXRlIl0pCisgICAgICAg
IGlmIGxlbihzcGluX2JpdHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5QCisKKworYXN5bmMgZGVmIHRlc3RfdGhyb3VnaHB1dChzZXJ2ZXI6IFNlcnZlciwgY29u
ZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGZhaWx1cmVzID0gMAorCisgICAg
Zm9yIHNpemUgaW4gWzUwMDAwMDAsIDEwMDAwMDAwXToKKyAgICAgICAgcHJpbnQoIlRlc3Rpbmcg
JWQgYnl0ZXMgZG93bmxvYWQiICUgc2l6ZSkKKyAgICAgICAgcGF0aCA9ICIvJWQlcyIgJSAoc2l6
ZSwgc2VydmVyLnRocm91Z2hwdXRfZmlsZV9zdWZmaXgpCisKKyAgICAgICAgIyBwZXJmb3JtIEhU
VFAgcmVxdWVzdCBvdmVyIFRDUAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAg
IHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovLyIgKyBzZXJ2ZXIuaG9zdCArIHBhdGgs
IHZlcmlmeT1GYWxzZSkKKyAgICAgICAgdGNwX29jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50
KQorICAgICAgICB0Y3BfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgYXNz
ZXJ0IHRjcF9vY3RldHMgPT0gc2l6ZSwgIkhUVFAvVENQIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2gi
CisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFFVSUMKKyAgICAgICAgaWYg
c2VydmVyLmh0dHAzOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9
IEgzX0FMUE4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9w
cm90b2NvbHMgPSBIMF9BTFBOCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgICAg
ICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICAgICApIGFzIHBy
b3RvY29sOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29s
KQorCisgICAgICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAg
ICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5w
b3J0LCBwYXRoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcXVpY19lbGFwc2VkID0gdGlt
ZS50aW1lKCkgLSBzdGFydAorICAgICAgICAgICAgcXVpY19vY3RldHMgPSAwCisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIHF1
aWNfb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgICAgIGFzc2VydCBxdWljX29j
dGV0cyA9PSBzaXplLCAiSFRUUC9RVUlDIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2giCisKKyAgICAg
ICAgcHJpbnQoIiAtIEhUVFAvVENQICBjb21wbGV0ZWQgaW4gJS4zZiBzIiAlIHRjcF9lbGFwc2Vk
KQorICAgICAgICBwcmludCgiIC0gSFRUUC9RVUlDIGNvbXBsZXRlZCBpbiAlLjNmIHMiICUgcXVp
Y19lbGFwc2VkKQorCisgICAgICAgIGlmIHF1aWNfZWxhcHNlZCA+IDEuMSAqIHRjcF9lbGFwc2Vk
OgorICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQorICAgICAgICAgICAgcHJpbnQoIiA9PiBGQUlM
IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCIgPT4gUEFTUyIpCisKKyAgICBp
ZiBmYWlsdXJlcyA9PSAwOgorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5UCisKKwor
ZGVmIHByaW50X3Jlc3VsdChzZXJ2ZXI6IFNlcnZlcikgLT4gTm9uZToKKyAgICByZXN1bHQgPSBz
dHIoc2VydmVyLnJlc3VsdCkucmVwbGFjZSgidGhyZWUiLCAiMyIpCisgICAgcmVzdWx0ID0gcmVz
dWx0WzA6OF0gKyAiICIgKyByZXN1bHRbODoxNl0gKyAiICIgKyByZXN1bHRbMTY6XQorICAgIHBy
aW50KCIlcyVzJXMiICUgKHNlcnZlci5uYW1lLCAiICIgKiAoMjAgLSBsZW4oc2VydmVyLm5hbWUp
KSwgcmVzdWx0KSkKKworCithc3luYyBkZWYgcnVuKHNlcnZlcnMsIHRlc3RzLCBxdWljX2xvZz1G
YWxzZSwgc2VjcmV0c19sb2dfZmlsZT1Ob25lKSAtPiBOb25lOgorICAgIGZvciBzZXJ2ZXIgaW4g
c2VydmVyczoKKyAgICAgICAgaWYgc2VydmVyLnN0cnVjdHVyZWRfbG9nZ2luZzoKKyAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkwKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgdGVz
dF9mdW5jIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQoIlxuPT09ICVzICVzID09PVxuIiAl
IChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBR
dWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1IM19BTFBO
ICsgSDBfQUxQTiwKKyAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksCisgICAgICAgICAgICAgICAgc2VjcmV0c19s
b2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlPXNl
cnZlci52ZXJpZnlfbW9kZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHRlc3RfbmFt
ZSA9PSAidGVzdF90aHJvdWdocHV0IjoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gNjAKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDEwCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0X2ZvcigKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdF9mdW5jKHNlcnZlciwgY29uZmlndXJhdGlvbiksIHRpbWVvdXQ9dGlt
ZW91dAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICAgICAgICAgIHByaW50KGV4YykKKworICAgICAgICAgICAgaWYgcXVpY19s
b2c6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIlcy0lcy5xbG9nIiAlIChzZXJ2ZXIubmFt
ZSwgdGVzdF9uYW1lKSwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAgICAgIGpz
b24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBp
bmRlbnQ9NCkKKworICAgICAgICBwcmludCgiIikKKyAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZl
cikKKworICAgICMgcHJpbnQgc3VtbWFyeQorICAgIGlmIGxlbihzZXJ2ZXJzKSA+IDE6CisgICAg
ICAgIHByaW50KCJTVU1NQVJZIikKKyAgICAgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAg
ICAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZlcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJR
VUlDIGludGVyb3AgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LXEiLAorICAgICAgICAiLS1xdWljLWxvZyIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
CisgICAgICAgIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQi
LAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1zZXJ2ZXIiLCB0
eXBlPXN0ciwgaGVscD0ib25seSBydW4gYWdhaW5zdCB0aGUgc3BlY2lmaWVkIHNlcnZlci4iCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGVzdCIsIHR5cGU9c3RyLCBoZWxwPSJv
bmx5IHJ1biB0aGUgc3BlY2lmZWQgdGVzdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIs
CisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVz
aGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZl
cmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVs
bmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJV
RyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBvcGVu
IFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIHNlY3JldHNf
bG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBlbHNlOgorICAgICAg
ICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAgIyBkZXRlcm1pbmUgd2hhdCB0byBydW4K
KyAgICBzZXJ2ZXJzID0gU0VSVkVSUworICAgIHRlc3RzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6
IHhbMF0uc3RhcnRzd2l0aCgidGVzdF8iKSwgZ2xvYmFscygpLml0ZW1zKCkpKQorICAgIGlmIGFy
Z3Muc2VydmVyOgorICAgICAgICBzZXJ2ZXJzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHgubmFt
ZSA9PSBhcmdzLnNlcnZlciwgc2VydmVycykpCisgICAgaWYgYXJncy50ZXN0OgorICAgICAgICB0
ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdID09IGFyZ3MudGVzdCwgdGVzdHMpKQor
CisgICAgIyBkaXNhYmxlIHJlcXVlc3RzIFNTTCB3YXJuaW5ncworICAgIHVybGxpYjMuZGlzYWJs
ZV93YXJuaW5ncyh1cmxsaWIzLmV4Y2VwdGlvbnMuSW5zZWN1cmVSZXF1ZXN0V2FybmluZykKKwor
ICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb29wLnJ1bl91bnRpbF9j
b21wbGV0ZSgKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2VydmVycz1zZXJ2ZXJzLAorICAg
ICAgICAgICAgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBxdWljX2xvZz1hcmdzLnF1aWNfbG9n
LAorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAg
ICApCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGll
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjZhNWI3NmUwZTcwMTgyODI2N2MzMzNmMzM4NDc2ZDViMGU3MjJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKQEAgLTAsMCArMSwx
MDAgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29uCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHNzbAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsLCBjYXN0
CisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9x
dWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9t
IGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNlaXZlZCwgUXVpY0V2
ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgU2lkdWNrQ2xpZW50KFF1
aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5fYWNrX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9uZV1dID0gTm9u
ZQorCisgICAgYXN5bmMgZGVmIHF1YWNrKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBz
ZWxmLl9hY2tfd2FpdGVyIGlzIE5vbmUsICJPbmx5IG9uZSBxdWFjayBhdCBhIHRpbWUuIgorICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjayIpCisKKyAgICAgICAg
d2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgc2VsZi5fYWNrX3dh
aXRlciA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4g
YXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2
ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fYWNr
X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFncmFtRnJhbWVSZWNlaXZlZCkgYW5kIGV2ZW50LmRhdGEgPT0gYiJxdWFjay1hY2siOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Fja193YWl0ZXIKKyAgICAgICAgICAgICAgICBz
ZWxmLl9hY2tfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0
KE5vbmUpCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwgaG9zdDogc3RyLCBwb3J0OiBpbnQpIC0+IE5vbmU6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0
KAorICAgICAgICBob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNyZWF0
ZV9wcm90b2NvbD1TaWR1Y2tDbGllbnQKKyAgICApIGFzIGNsaWVudDoKKyAgICAgICAgY2xpZW50
ID0gY2FzdChTaWR1Y2tDbGllbnQsIGNsaWVudCkKKyAgICAgICAgbG9nZ2VyLmluZm8oInNlbmRp
bmcgcXVhY2siKQorICAgICAgICBhd2FpdCBjbGllbnQucXVhY2soKQorICAgICAgICBsb2dnZXIu
aW5mbygicmVjZWl2ZWQgcXVhY2stYWNrIikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJTaURV
Q0sgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiaG9zdCIsIHR5
cGU9c3RyLCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBob3N0IG5hbWUgb3IgSVAgYWRkcmVzcyIK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicG9ydCIsIHR5cGU9aW50LCBoZWxwPSJU
aGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2VydmVyIGNlcnRpZmlj
YXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0t
cXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBR
TE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1s
IiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAg
aGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5Igor
ICAgICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJh
c2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShu
YW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3Mu
dmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0g
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsic2lkdWNrIl0sIGlz
X2NsaWVudD1UcnVlLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02NTUzNgorICAgICkKKyAgICBp
ZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlID0gc3Ns
LkNFUlRfTk9ORQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
cXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAg
ICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19s
b2csICJhIikKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6
CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgcnVuKGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgaG9zdD1hcmdzLmhvc3QsIHBvcnQ9YXJncy5wb3J0KQor
ICAgICAgICApCisgICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAi
dyIpIGFzIGxvZ2dlcl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4NTQ4N2U4NDA4
MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCIvPgorICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+CisgICAgICAgIDxwPgorICAg
ICAgICAgICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu
Y29tL2Fpb3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCisgICAgICAgICAgICBhIFFVSUMgYW5k
IEhUVFAvMyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KKyAgICAgICAgPC9wPgor
eyUgaWYgcmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9CisgICAgICAgIDxw
PgorICAgICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRoaXMgcGFnZSB1c2lu
ZyBIVFRQLzMhCisgICAgICAgIDwvcD4KK3slIGVuZGlmICV9CisgICAgICAgIDxoMj5BdmFpbGFi
bGUgZW5kcG9pbnRzPC9oMj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+
R0VUIC88L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgorICAgICAgICAgICAgPGxp
PjxzdHJvbmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5dGVzIG9mIHBsYWlu
IHRleHQ8L2xpPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNobzwvc3Ryb25nPiBy
ZXR1cm5zIHRoZSByZXF1ZXN0IGRhdGE8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgIDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdlYlNvY2tldCBlY2hv
IHNlcnZpY2UuCisgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8ZW0+OnByb3RvY29s
PC9lbT4gcHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4KKyAgICAgICAgICAg
IDwvbGk+CisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBocmVmPSIvaHR0cGJp
bi8iPmh0dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9s
b2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MDk5ZjY3ZGNhMjJjNTdmYmM5MWQ4ZDE5YTBkNmE4OGYzYzFiOWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwKQEAg
LTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFpb3F1aWMgLSBsb2dz
PC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGUuY3Nz
Ii8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+UUxPRyBmaWxlczwvaDE+
CisgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9ncyI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAg
IDx0aD5uYW1lPC90aD4KKyAgICAgICAgICAgIDx0aD5kYXRlIChVVEMpPC90aD4KKyAgICAgICAg
ICAgIDx0aD5zaXplPC90aD4KKyAgICAgICAgPC90cj4KK3slIGZvciBsb2cgaW4gbG9ncyAlfQor
ICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgorICAgICAgICAgICAg
ICAgIDxhIGhyZWY9Int7IGxvZy5maWxlX3VybCB9fSI+e3sgbG9nLm5hbWUgfX08L2E+CisgICAg
ICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLnF2aXNfdXJsIH19Ij5bcXZpc108L2E+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJkYXRlIj57eyBsb2cuZGF0ZSB9
fTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPnt7IGxvZy5zaXplIH19PC90ZD4K
KyAgICAgICAgPC90cj4KK3slIGVuZGZvciAlfQorICAgICAgICA8L3RhYmxlPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3czYy1pbXBv
cnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2YmI5ZDM2NGQ3Y2RjMDJmMjY0M2UzZDdiZGQ3NDgyMWJmNDQ2
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0
ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjhmMjIwNGFkNDFlNDhmZjFkZjRiNWI0NzMxNjFkZGU2ZTgyN2ZjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9l
eGFtcGxlcy9odHRwM19jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2Vy
dmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19j
bGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzMzYTM5Nzg3
NGM2NTNjOTFhMjBhMGI5MjU2NzNkNWM0OWM3Yjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CkBAIC0wLDAgKzEsMyBAQAorY3J5cHRvZ3JhcGh5
CitzcGhpbnhfYXV0b2RvY190eXBlaGludHMKK3NwaGlueGNvbnRyaWItYXN5bmNpbwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVlMjJlNzRiZDIx
YTk0NjdjZjE2NmQ5NDA0YzYyNjlhMDlkNWEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxNyBAQAorVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQt
b3BlbnNzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NGRlZDcyYzE3MjRiYjAwNDMyMzI4YzVlMjI5YmE3Mzc2MmM1
ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNz
bApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2Rlc3RkaXI9JDEKK2Nh
Y2hlZGlyPSQxLiRQWVRIT05fQVJDSAorCitmb3IgZCBpbiBvcGVuc3NsICRkZXN0ZGlyOyBkbwor
ICAgIGlmIFsgLWUgJGQgXTsgdGhlbgorICAgICAgICBybSAtcmYgJGQKKyAgICBmaQorZG9uZQor
CitpZiBbICEgLWUgJGNhY2hlZGlyIF07IHRoZW4KKyAgICAjIGJ1aWxkIG9wZW5zc2wKKyAgICBt
a2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uv
b3BlbnNzbC0xLjEuMWYudGFyLmd6IHwgdGFyIHh6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25l
bnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICAuL2NvbmZpZyBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cworICAgIG1ha2UKKworICAgIG1rZGlyICRjYWNoZWRpcgorICAgIG1rZGlyICRjYWNo
ZWRpci9saWIKKyAgICBjcCAtUiBpbmNsdWRlICRjYWNoZWRpcgorICAgIGNwIGxpYmNyeXB0by5h
IGxpYnNzbC5hICRjYWNoZWRpci9saWIKK2ZpCisKK2NwIC1SICRjYWNoZWRpciAkZGVzdGRpcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTAwNzlkZGY4
MzIwZjc1NGJkOTQyMjE1N2U2NTQzOTQ2ZDYwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKQEAgLTAsMCArMSwzOSBAQAorc2V0IGRl
c3RkaXI9JTEKK3NldCBjYWNoZWRpcj0lMS4lUFlUSE9OX0FSQ0glCisKK2ZvciAlJWQgaW4gKG9w
ZW5zc2wgJWRlc3RkaXIlKSBkbyAoCisgICAgaWYgZXhpc3QgJSVkICgKKyAgICAgICAgcm1kaXIg
L3MgL3EgJSVkCisgICAgKQorKQorCitpZiAlUFlUSE9OX0FSQ0glID09IDY0ICgKKyAgIHNldCBP
UEVOU1NMX0NPTkZJRz1WQy1XSU42NEEKKyAgIHNldCBWQ19BUkNIPXg2NAorKSBlbHNlICgKKyAg
IHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU4zMgorICAgc2V0IFZDX0FSQ0g9eDg2CispCisKK2Nh
bGwgIkM6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxF
bnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiAlVkNfQVJDSCUKK1NF
VCBQQVRIPSVQQVRIJTtDOlxQcm9ncmFtIEZpbGVzXE5BU00KKworaWYgbm90IGV4aXN0ICVjYWNo
ZWRpciUgKAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0dHBzOi8vd3d3Lm9wZW5z
c2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogLW8gb3BlbnNzbC50YXIuZ3oKKyAg
ICB0YXIgeHpmIG9wZW5zc2wudGFyLmd6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25lbnRzIDEK
KyAgICBjZCBvcGVuc3NsCisKKyAgICBwZXJsIENvbmZpZ3VyZSBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cyAlT1BFTlNTTF9DT05GSUclCisgICAgbm1ha2UKKworICAgIG1rZGlyICVjYWNoZWRp
ciUKKyAgICBta2RpciAlY2FjaGVkaXIlXGluY2x1ZGUKKyAgICBta2RpciAlY2FjaGVkaXIlXGxp
YgorICAgIHhjb3B5IGluY2x1ZGUgJWNhY2hlZGlyJVxpbmNsdWRlXCAvRQorICAgIGNvcHkgbGli
Y3J5cHRvLmxpYiAlY2FjaGVkaXIlXGxpYlwKKyAgICBjb3B5IGxpYnNzbC5saWIgJWNhY2hlZGly
JVxsaWJcCispCisKK21rZGlyICVkZXN0ZGlyJQoreGNvcHkgJWNhY2hlZGlyJSAlZGVzdGRpciUg
L0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3ZjkzOWQ0Mjhm
NzEwNjk0MzQ3NTMzN2FiZDgyODBkZjBmMTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9i
dWlsZC1vcGVuc3NsLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMDI1YWQwZjczM2IzOGJiOTRmOGJi
OGViMDQ3ODVkYTNiNGY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5j
ZmcKQEAgLTAsMCArMSwyMSBAQAorW2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9IGFpb3F1aWMKKwor
W2ZsYWtlOF0KK2lnbm9yZT1FMjAzLFc1MDMKK21heC1saW5lLWxlbmd0aD0xNTAKKworW2lzb3J0
XQorZGVmYXVsdF9zZWN0aW9uID0gVEhJUkRQQVJUWQoraW5jbHVkZV90cmFpbGluZ19jb21tYSA9
IFRydWUKK2tub3duX2ZpcnN0X3BhcnR5ID0gYWlvcXVpYworbGluZV9sZW5ndGggPSA4OAorbXVs
dGlfbGluZV9vdXRwdXQgPSAzCisKK1tteXB5XQorZGlzYWxsb3dfdW50eXBlZF9jYWxscyA9IFRy
dWUKK2Rpc2FsbG93X3VudHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK2lnbm9yZV9taXNzaW5nX2lt
cG9ydHMgPSBUcnVlCitzdHJpY3Rfb3B0aW9uYWwgPSBGYWxzZQord2Fybl9yZWR1bmRhbnRfY2Fz
dHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzVl
YTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc2V0dXAucHkKQEAgLTAsMCArMSw2OSBAQAoraW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKKworaW1wb3J0IHNldHVwdG9vbHMKKworcm9vdF9kaXIgPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworYWJvdXQgPSB7fQorYWJvdXRfZmlsZSA9
IG9zLnBhdGguam9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFib3V0LnB5IikKK3dp
dGggb3BlbihhYm91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICBleGVjKGZw
LnJlYWQoKSwgYWJvdXQpCisKK3JlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAi
UkVBRE1FLnJzdCIpCit3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpIGFz
IGY6CisgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCisKK2lmIHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCisgICAgbGlicmFyaWVzID0g
WyJsaWJjcnlwdG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIsICJ1c2VyMzIiLCAi
d3MyXzMyIl0KK2Vsc2U6CisgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyItc3RkPWM5OSJdCisg
ICAgbGlicmFyaWVzID0gWyJjcnlwdG8iXQorCitzZXR1cHRvb2xzLnNldHVwKAorICAgIG5hbWU9
YWJvdXRbIl9fdGl0bGVfXyJdLAorICAgIHZlcnNpb249YWJvdXRbIl9fdmVyc2lvbl9fIl0sCisg
ICAgZGVzY3JpcHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCisgICAgbG9uZ19kZXNjcmlwdGlv
bj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD1hYm91dFsiX191cmlfXyJdLAorICAgIGF1dGhv
cj1hYm91dFsiX19hdXRob3JfXyJdLAorICAgIGF1dGhvcl9lbWFpbD1hYm91dFsiX19lbWFpbF9f
Il0sCisgICAgbGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKKyAgICBpbmNsdWRlX3BhY2th
Z2VfZGF0YT1UcnVlLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRldmVsb3BtZW50IFN0
YXR1cyA6OiA0IC0gQmV0YSIsCisgICAgICAgICJFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1l
bnQiLAorICAgICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAg
ICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisgICAgICAgICJPcGVy
YXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42
IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAorICAg
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIsCisgICAgICAgICJU
b3BpYyA6OiBJbnRlcm5ldCA6OiBXV1cvSFRUUCIsCisgICAgXSwKKyAgICBleHRfbW9kdWxlcz1b
CisgICAgICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAgICAgImFpb3F1aWMuX2J1
ZmZlciIsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdz
LAorICAgICAgICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIuYyJdLAorICAgICAg
ICApLAorICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAgICAgICJhaW9xdWlj
Ll9jcnlwdG8iLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVf
YXJncywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBzb3Vy
Y2VzPVsic3JjL2Fpb3F1aWMvX2NyeXB0by5jIl0sCisgICAgICAgICksCisgICAgXSwKKyAgICBw
YWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKKyAgICBwYWNrYWdlX2RhdGE9eyJhaW9xdWljIjogWyJw
eS50eXBlZCIsICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKKyAgICBwYWNrYWdlcz1b
ImFpb3F1aWMiLCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAiYWlvcXVpYy5oMyIs
ICJhaW9xdWljLnF1aWMiXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgImNlcnRp
ZmkiLAorICAgICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCisgICAgICAgICdkYXRhY2xhc3Nl
czsgcHl0aG9uX3ZlcnNpb24gPCAiMy43IicsCisgICAgICAgICJweWxzcXBhY2sgPj0gMC4zLjMs
IDwgMC40LjAiLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDRhY2ViZWVmODNlYTQxODliZmFlNGNhOWYwODBkMjNkODc3YThiNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQpAQCAtMCww
ICsxLDMgQEAKKyMgZmxha2U4OiBub3FhCisKK2Zyb20gLmFib3V0IGltcG9ydCBfX3ZlcnNpb25f
XwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzRkYjgxNzU5MGJl
OGQ3MzZiMzI2NDZkNGNmZjQxYzlmNjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKQEAgLTAsMCArMSw0NDAgQEAKKyNkZWZpbmUgUFlfU1NJ
WkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
KyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2J1ZmZlciIKKworc3RhdGljIFB5T2JqZWN0
ICpCdWZmZXJSZWFkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlcldyaXRlRXJyb3I7CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDhfdCAqYmFzZTsK
KyAgICB1aW50OF90ICplbmQ7CisgICAgdWludDhfdCAqcG9zOworfSBCdWZmZXJPYmplY3Q7CisK
KyNkZWZpbmUgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKSBcCisgICAgaWYgKGxlbiA8IDAg
fHwgc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3Ry
aW5nKEJ1ZmZlclJlYWRFcnJvciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOyBcCisgICAgICAgIHJl
dHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCBs
ZW4pIFwKKyAgICBpZiAoc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKEJ1ZmZlcldyaXRlRXJyb3IsICJXcml0ZSBvdXQgb2YgYm91bmRzIik7
IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKK3N0YXRpYyBpbnQKK0J1ZmZlcl9p
bml0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqa3dsaXN0W10gPSB7ImNhcGFjaXR5IiwgImRhdGEiLCBOVUxM
fTsKKyAgICBpbnQgY2FwYWNpdHkgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEg
PSBOVUxMOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4gPSAwOworCisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGl5IyIsIChjaGFyKiopa3dsaXN0
LCAmY2FwYWNpdHksICZkYXRhLCAmZGF0YV9sZW4pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmJhc2UgPSBtYWxsb2MoZGF0YV9s
ZW4pOworICAgICAgICBzZWxmLT5lbmQgPSBzZWxmLT5iYXNlICsgZGF0YV9sZW47CisgICAgICAg
IG1lbWNweShzZWxmLT5iYXNlLCBkYXRhLCBkYXRhX2xlbik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhjYXBhY2l0eSk7CisgICAgICAgIHNlbGYtPmVuZCA9IHNl
bGYtPmJhc2UgKyBjYXBhY2l0eTsKKyAgICB9CisgICAgc2VsZi0+cG9zID0gc2VsZi0+YmFzZTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0J1ZmZlcl9kZWFsbG9jKEJ1ZmZlck9i
amVjdCAqc2VsZikKK3sKKyAgICBmcmVlKHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMgUHlPYmpl
Y3QgKgorQnVmZmVyX2RhdGFfc2xpY2UoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn
cykKK3sKKyAgICBpbnQgc3RhcnQsIHN0b3A7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFy
Z3MsICJpaSIsICZzdGFydCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChzdGFydCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0YXJ0ID4gc2VsZi0+ZW5kIHx8CisgICAgICAg
IHN0b3AgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdG9wID4gc2VsZi0+ZW5kIHx8CisgICAgICAgIHN0
b3AgPCBzdGFydCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAi
UmVhZCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAg
IHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikoc2VsZi0+YmFz
ZSArIHN0YXJ0KSwgKHN0b3AgLSBzdGFydCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVm
ZmVyX2VvZihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChz
ZWxmLT5wb3MgPT0gc2VsZi0+ZW5kKQorICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBQeV9S
RVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF9ieXRlcyhC
dWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmxlbikpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKTsKKworICAgIFB5T2JqZWN0
ICpvID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+cG9zLCBs
ZW4pOworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgcmV0dXJuIG87Cit9CisKK3N0YXRpYyBQ
eU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50OChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDEpCisKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21VbnNpZ25lZExvbmcoCisgICAgICAgICh1aW50OF90KSgqKHNlbGYtPnBvcysr
KSkKKyAgICApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDE2KEJ1
ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9CT1VO
RFMoc2VsZiwgMikKKworICAgIHVpbnQxNl90IHZhbHVlID0gKHVpbnQxNl90KSgqKHNlbGYtPnBv
cykpIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyAr
IDEpKTsKKyAgICBzZWxmLT5wb3MgKz0gMjsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25l
ZExvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDMy
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9C
T1VORFMoc2VsZiwgNCkKKworICAgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYt
PnBvcykpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5w
b3MgKyAxKSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxm
LT5wb3MgKyAzKSk7CisgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9t
VW5zaWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxs
X3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNL
X1JFQURfQk9VTkRTKHNlbGYsIDgpCisKKyAgICB1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdCko
KihzZWxmLT5wb3MpKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCko
KihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDYpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1
aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7CisgICAgc2VsZi0+cG9zICs9IDg7CisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9i
amVjdCAqCitCdWZmZXJfcHVsbF91aW50X3ZhcihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAgIENIRUNLX1JFQURfQk9VTkRTKHNl
bGYsIDEpCisgICAgc3dpdGNoICgqKHNlbGYtPnBvcykgPj4gNikgeworICAgIGNhc2UgMDoKKyAg
ICAgICAgdmFsdWUgPSAqKHNlbGYtPnBvcysrKSAmIDB4M0Y7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMikKKyAgICAgICAgdmFs
dWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDggfAorICAgICAgICAgICAg
ICAgICh1aW50MTZfdCkoKihzZWxmLT5wb3MgKyAxKSk7CisgICAgICAgIHNlbGYtPnBvcyArPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIENIRUNLX1JFQURfQk9VTkRT
KHNlbGYsIDQpCisgICAgICAgIHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYtPnBvcykgJiAweDNG
KSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDEpKSA8
PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA4
IHwKKyAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMykpOworICAgICAg
ICBzZWxmLT5wb3MgKz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Q0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKyAgICAgICAgdmFsdWUgPSAodWludDY0X3QpKCoo
c2VsZi0+cG9zKSAmIDB4M0YpIDw8IDU2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2Vs
Zi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+
cG9zICsgMykpIDw8IDMyIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9z
ICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsg
NSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNikp
IDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7Cisg
ICAgICAgIHNlbGYtPnBvcyArPSA4OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVj
dCAqCitCdWZmZXJfcHVzaF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlfc3NpemVfdCBkYXRh
X2xlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjIiwgJmRhdGEsICZkYXRh
X2xlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNl
bGYsIGRhdGFfbGVuKQorCisgICAgbWVtY3B5KHNlbGYtPnBvcywgZGF0YSwgZGF0YV9sZW4pOwor
ICAgIHNlbGYtPnBvcyArPSBkYXRhX2xlbjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3Rh
dGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX3VpbnQ4KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlP
YmplY3QgKmFyZ3MpCit7CisgICAgdWludDhfdCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgIkIiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENI
RUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAxKQorCisgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsK
KyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNo
X3VpbnQxNihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQx
Nl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSCIsICZ2YWx1ZSkp
CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDIp
CisKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysr
KSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgor
QnVmZmVyX3B1c2hfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7
CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJ
IiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVDS19XUklURV9CT1VO
RFMoc2VsZiwgNCkKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAgKihz
ZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVl
ID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7
Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50NjQoQnVmZmVyT2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICooc2VsZi0+cG9zKysp
ID0gKHZhbHVlID4+IDU2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0OCk7Cisg
ICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDMyKTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05P
TkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50X3ZhcihCdWZmZXJP
YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAg
IGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgaWYgKHZhbHVlIDw9IDB4M0YpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVf
Qk9VTkRTKHNlbGYsIDEpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgICAg
IFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGKSB7CisgICAg
ICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAyKQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA4KSB8IDB4NDA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7Cisg
ICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGRkZG
RikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAgICAgICAgKihzZWxm
LT5wb3MrKykgPSAodmFsdWUgPj4gMjQpIHwgMHg4MDsKKyAgICAgICAgKihzZWxmLT5wb3MrKykg
PSAodmFsdWUgPj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7
CisgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkYpIHsKKyAgICAgICAg
Q0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDU2KSB8IDB4QzA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQ4
KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAzMik7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDI0KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAg
ICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnRlZ2VyIGlzIHRvbyBiaWcg
Zm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3NlZWsoQnVmZmVyT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9zOworICAgIGlmICghUHlBcmdfUGFy
c2VUdXBsZShhcmdzLCAiaSIsICZwb3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChwb3MgPCAwIHx8IHNlbGYtPmJhc2UgKyBwb3MgPiBzZWxmLT5lbmQpIHsKKyAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlNlZWsgb3V0IG9mIGJvdW5kcyIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlICsg
cG9zOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVy
X3RlbGwoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQnVmZmVyX21ldGhvZHNbXSA9IHsKKyAgICB7ImRhdGFfc2xpY2UiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX2RhdGFfc2xpY2UsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsiZW9m
IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9lb2YsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicHVs
bF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF9ieXRlcywgTUVUSF9WQVJBUkdTLCAi
UHVsbCBieXRlcy4ifSwKKyAgICB7InB1bGxfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1
bGxfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1bGwgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4i
fSwKKyAgICB7InB1bGxfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQxNiwg
TUVUSF9WQVJBUkdTLCAiUHVsbCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVsbF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDMyLCBNRVRIX1ZBUkFS
R1MsICJQdWxsIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnQ2
NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1bGwg
YSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludF92YXIiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSBRVUlD
IHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF9ieXRlcyIs
IChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF9ieXRlcywgTUVUSF9WQVJBUkdTLCAiUHVzaCBieXRl
cy4ifSwKKyAgICB7InB1c2hfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDgs
IE1FVEhfVkFSQVJHUywgIlB1c2ggYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7
InB1c2hfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQxNiwgTUVUSF9WQVJB
UkdTLCAiUHVzaCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50
MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDMyLCBNRVRIX1ZBUkFSR1MsICJQdXNo
IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnQ2NCIsIChQeUNG
dW5jdGlvbilCdWZmZXJfcHVzaF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSA2NC1iaXQg
dW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfdWludF92YXIiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3B1c2hfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSBRVUlDIHZhcmlhYmxl
LWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilC
dWZmZXJfc2VlaywgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9u
KUJ1ZmZlcl90ZWxsLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRp
YyBQeU9iamVjdCoKK0J1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIoQnVmZmVyT2JqZWN0KiBzZWxmLCB2
b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5lbmQg
LSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVyX2RhdGFfZ2V0dGVy
KEJ1ZmZlck9iamVjdCogc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUJ5dGVz
X0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5iYXNlLCBzZWxmLT5wb3MgLSBz
ZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIEJ1ZmZlcl9nZXRzZXRbXSA9IHsK
KyAgICB7ImNhcGFjaXR5IiwgKGdldHRlcikgQnVmZmVyX2NhcGFjaXR5X2dldHRlciwgTlVMTCwg
IiIsIE5VTEwgfSwKKyAgICB7ImRhdGEiLCAoZ2V0dGVyKSBCdWZmZXJfZGF0YV9nZXR0ZXIsIE5V
TEwsICIiLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJ1
ZmZlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9E
VUxFX05BTUUgIi5CdWZmZXIiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVv
ZihCdWZmZXJPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAg
KGRlc3RydWN0b3IpQnVmZmVyX2RlYWxsb2MsICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5j
ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21h
cHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9o
YXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Nh
bGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRy
byAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0
dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNf
YnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBf
ZmxhZ3MgKi8KKyAgICAiQnVmZmVyIG9iamVjdHMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9k
b2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2
ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Ns
ZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmlj
aGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJ1ZmZlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQnVmZmVyX2dldHNldCwgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJ1ZmZlcl9pbml0LCAg
ICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVE
ZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICBNT0RVTEVf
TkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICAiQSBmYXN0ZXIg
YnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5
SW5pdF9fYnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1
bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQnVmZmVyUmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQnVmZmVyUmVhZEVycm9yIiwgUHlFeGNfVmFsdWVFcnJvciwgTlVMTCk7CisgICAg
UHlfSU5DUkVGKEJ1ZmZlclJlYWRFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJC
dWZmZXJSZWFkRXJyb3IiLCBCdWZmZXJSZWFkRXJyb3IpOworCisgICAgQnVmZmVyV3JpdGVFcnJv
ciA9IFB5RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkJ1ZmZlcldyaXRlRXJyb3IiLCBQ
eUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVyV3JpdGVFcnJvcik7
CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCdWZmZXJXcml0ZUVycm9yIiwgQnVmZmVyV3Jp
dGVFcnJvcik7CisKKyAgICBCdWZmZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkJ1ZmZlclR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgUHlfSU5DUkVGKCZCdWZmZXJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3Qo
bSwgIkJ1ZmZlciIsIChQeU9iamVjdCAqKSZCdWZmZXJUeXBlKTsKKworICAgIHJldHVybiBtOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTQzY2NhM2E1
MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKQEAgLTAsMCArMSwyNyBAQAorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCisKK2NsYXNzIEJ1ZmZlclJlYWRFcnJvcihWYWx1ZUVycm9yKTog
Li4uCitjbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4KKworY2xhc3MgQnVm
ZmVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9uYWxbaW50XSA9IDAs
IGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0
YShzZWxmKSAtPiBieXRlczogLi4uCisgICAgZGVmIGRhdGFfc2xpY2Uoc2VsZiwgc3RhcnQ6IGlu
dCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW9mKHNlbGYpIC0+IGJvb2w6IC4u
LgorICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgdGVs
bChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYsIGxlbmd0aDogaW50
KSAtPiBieXRlczogLi4uCisgICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4gaW50OiAuLi4KKyAg
ICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50MzIo
c2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50NjQoc2VsZikgLT4gaW50OiAuLi4K
KyAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdXNoX2J5
dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDgo
c2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDE2KHNlbGYs
IHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQzMihzZWxmLCB2OiBp
bnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2OiBpbnQpIC0+IE5v
bmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6
IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxNTU0ZDRiMjEz
Y2QwN2ZjZWRmOGEzOTMwNGNkNjIwMDQ0ZjE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKQEAgLTAsMCArMSw0NTUgQEAKKyNkZWZpbmUgUFlf
U1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9l
cnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FICJh
aW9xdWljLl9jcnlwdG8iCisKKyNkZWZpbmUgQUVBRF9LRVlfTEVOR1RIX01BWCAzMgorI2RlZmlu
ZSBBRUFEX05PTkNFX0xFTkdUSCAxMgorI2RlZmluZSBBRUFEX1RBR19MRU5HVEggMTYKKworI2Rl
ZmluZSBQQUNLRVRfTEVOR1RIX01BWCAxNTAwCisjZGVmaW5lIFBBQ0tFVF9OVU1CRVJfTEVOR1RI
X01BWCA0CisjZGVmaW5lIFNBTVBMRV9MRU5HVEggMTYKKworI2RlZmluZSBDSEVDS19SRVNVTFQo
ZXhwcikgXAorICAgIGlmICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7
IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3BlblNTTCBjYWxsIGZh
aWxlZCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNL
X1JFU1VMVF9DVE9SKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisgICAgICAgIEVSUl9j
bGVhcl9lcnJvcigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9w
ZW5TU0wgY2FsbCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKK3N0
YXRpYyBQeU9iamVjdCAqQ3J5cHRvRXJyb3I7CisKKy8qIEFFQUQgKi8KKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAqZGVjcnlwdF9jdHg7
CisgICAgRVZQX0NJUEhFUl9DVFggKmVuY3J5cHRfY3R4OworICAgIHVuc2lnbmVkIGNoYXIgYnVm
ZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGtleVtBRUFEX0tFWV9M
RU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGl2W0FFQURfTk9OQ0VfTEVOR1RIXTsKKyAg
ICB1bnNpZ25lZCBjaGFyIG5vbmNlW0FFQURfTk9OQ0VfTEVOR1RIXTsKK30gQUVBRE9iamVjdDsK
Kworc3RhdGljIEVWUF9DSVBIRVJfQ1RYICoKK2NyZWF0ZV9jdHgoY29uc3QgRVZQX0NJUEhFUiAq
Y2lwaGVyLCBpbnQga2V5X2xlbmd0aCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBFVlBfQ0lQSEVS
X0NUWCAqY3R4OworICAgIGludCByZXM7CisKKyAgICBjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXco
KTsKKyAgICBDSEVDS19SRVNVTFQoY3R4ICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlcklu
aXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIG9wZXJhdGlvbik7CisgICAgQ0hF
Q0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlf
bGVuZ3RoKGN0eCwga2V5X2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX0lWTEVO
LCBBRUFEX05PTkNFX0xFTkdUSCwgTlVMTCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsK
KworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbnQKK0FFQURfaW5pdChBRUFET2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBj
aGFyICpjaXBoZXJfbmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksICppdjsKKyAg
ICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbiwgaXZfbGVuOworCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjeSMiLCAmY2lwaGVyX25hbWUsICZjaXBoZXJf
bmFtZV9sZW4sICZrZXksICZrZXlfbGVuLCAmaXYsICZpdl9sZW4pKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVSICpldnBfY2lwaGVyID0gRVZQX2dldF9jaXBoZXJi
eW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlmIChldnBfY2lwaGVyID09IDApIHsKKyAgICAgICAg
UHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAiSW52YWxpZCBjaXBoZXIgbmFtZTogJXMiLCBjaXBo
ZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGtleV9sZW4gPiBB
RUFEX0tFWV9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJv
ciwgIkludmFsaWQga2V5IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAg
IGlmIChpdl9sZW4gPiBBRUFEX05PTkNFX0xFTkdUSCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGl2IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisgICAgbWVtY3B5KHNlbGYtPmtleSwga2V5LCBrZXlfbGVuKTsKKyAgICBtZW1j
cHkoc2VsZi0+aXYsIGl2LCBpdl9sZW4pOworCisgICAgc2VsZi0+ZGVjcnlwdF9jdHggPSBjcmVh
dGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDApOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNl
bGYtPmRlY3J5cHRfY3R4ICE9IDApOworCisgICAgc2VsZi0+ZW5jcnlwdF9jdHggPSBjcmVhdGVf
Y3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNlbGYt
PmVuY3J5cHRfY3R4ICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitB
RUFEX2RlYWxsb2MoQUVBRE9iamVjdCAqc2VsZikKK3sKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVl
KHNlbGYtPmRlY3J5cHRfY3R4KTsKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKHNlbGYtPmVuY3J5
cHRfY3R4KTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQUVBRF9kZWNyeXB0KEFFQURPYmplY3Qg
KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEs
ICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4sIGFzc29jaWF0ZWRfbGVuOwor
ICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAgICB1aW50NjRfdCBwbjsKKworICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0siLCAmZGF0YSwgJmRhdGFfbGVuLCAmYXNz
b2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor
ICAgIGlmIChkYXRhX2xlbiA8IEFFQURfVEFHX0xFTkdUSCB8fCBkYXRhX2xlbiA+IFBBQ0tFVF9M
RU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFs
aWQgcGF5bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAg
bWVtY3B5KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5HVEgpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5vbmNlW0FFQURfTk9O
Q0VfTEVOR1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7CisgICAgfQorCisg
ICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3RybChzZWxmLT5kZWNyeXB0X2N0eCwgRVZQX0NUUkxf
Q0NNX1NFVF9UQUcsIEFFQURfVEFHX0xFTkdUSCwgKHZvaWQqKShkYXRhICsgKGRhdGFfbGVuIC0g
QUVBRF9UQUdfTEVOR1RIKSkpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBy
ZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2Vs
Zi0+a2V5LCBzZWxmLT5ub25jZSwgMCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRs
ZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRfbGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9
IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5kZWNyeXB0X2N0eCwgc2Vs
Zi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBkYXRhX2xlbiAtIEFFQURfVEFHX0xFTkdUSCk7Cisg
ICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJGaW5hbF9l
eChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIGlmIChyZXMgPT0gMCkg
eworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJQYXlsb2FkIGRlY3J5cHRp
b24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQ
eUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5idWZmZXIsIG91dGxl
bik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZW5jcnlwdChBRUFET2JqZWN0ICpzZWxm
LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCAqYXNz
b2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVkX2xlbjsKKyAgICBp
bnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisKKyAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xlbiwgJmFzc29jaWF0
ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBp
ZiAoZGF0YV9sZW4gPiBQQUNLRVRfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURf
Tk9OQ0VfTEVOR1RIKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAg
ICBzZWxmLT5ub25jZVtBRUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4g
Pj4gOCAqIGkpOworICAgIH0KKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmVu
Y3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNlLCAxKTsKKyAgICBD
SEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxm
LT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNzb2NpYXRlZF9sZW4p
OworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyVXBk
YXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4sIGRhdGEsIGRhdGFf
bGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
ckZpbmFsX2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVuMik7CisgICAgQ0hFQ0tf
UkVTVUxUKHJlcyAhPSAwICYmIG91dGxlbjIgPT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVS
X0NUWF9jdHJsKHNlbGYtPmVuY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgQUVBRF9U
QUdfTEVOR1RILCBzZWxmLT5idWZmZXIgKyBvdXRsZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hh
ciopc2VsZi0+YnVmZmVyLCBvdXRsZW4gKyBBRUFEX1RBR19MRU5HVEgpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQUVBRF9tZXRob2RzW10gPSB7CisgICAgeyJkZWNyeXB0IiwgKFB5Q0Z1bmN0
aW9uKUFFQURfZGVjcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJlbmNyeXB0IiwgKFB5
Q0Z1bmN0aW9uKUFFQURfZW5jcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQUVBRFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3Rf
SEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5BRUFEIiwgICAgICAgICAgICAg
ICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihBRUFET2JqZWN0KSwgICAgICAgICAgICAgICAg
IC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQUVBRF9kZWFsbG9jLCAgICAg
ICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZB
VUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQUVBRCBvYmplY3RzIiwg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEFFQURf
bWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisg
ICAgKGluaXRwcm9jKUFFQURfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9Owor
CisvKiBIZWFkZXJQcm90ZWN0aW9uICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVj
dF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAgICBpbnQgaXNfY2hhY2hhMjA7Cisg
ICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOworICAgIHVuc2lnbmVk
IGNoYXIgbWFza1szMV07CisgICAgdW5zaWduZWQgY2hhciB6ZXJvWzVdOworfSBIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0OworCitzdGF0aWMgaW50CitIZWFkZXJQcm90ZWN0aW9uX2luaXQoSGVhZGVy
UHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqa2V5OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVuLCBrZXlfbGVuOworICAgIGlu
dCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMiLCAmY2lwaGVy
X25hbWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRfY2lwaGVy
YnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7CisgICAgICAg
IFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVzIiwgY2lw
aGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KHNlbGYt
Pm1hc2ssIDAsIHNpemVvZihzZWxmLT5tYXNrKSk7CisgICAgbWVtc2V0KHNlbGYtPnplcm8sIDAs
IHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgc2VsZi0+aXNfY2hhY2hhMjAgPSBjaXBoZXJfbmFt
ZV9sZW4gPT0gOCAmJiBtZW1jbXAoY2lwaGVyX25hbWUsICJjaGFjaGEyMCIsIDgpID09IDA7CisK
KyAgICBzZWxmLT5jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKyAgICBDSEVDS19SRVNVTFRf
Q1RPUihzZWxmLT5jdHggIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxm
LT5jdHgsIGV2cF9jaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VM
VF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVu
Z3RoKHNlbGYtPmN0eCwga2V5X2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1IocmVzICE9IDAp
OworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4LCBOVUxMLCBOVUxMLCBr
ZXksIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorSGVhZGVyUHJvdGVjdGlvbl9kZWFsbG9jKEhlYWRl
clByb3RlY3Rpb25PYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxm
LT5jdHgpOworfQorCitzdGF0aWMgaW50IEhlYWRlclByb3RlY3Rpb25fbWFzayhIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0ICpzZWxmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzYW1wbGUpCit7CisgICAg
aW50IG91dGxlbjsKKyAgICBpZiAoc2VsZi0+aXNfY2hhY2hhMjApIHsKKyAgICAgICAgcmV0dXJu
IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVMTCwgTlVMTCwgc2FtcGxlLCAx
KSAmJgorICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5jdHgsIHNlbGYtPm1h
c2ssICZvdXRsZW4sIHNlbGYtPnplcm8sIHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBzZWxmLT5tYXNr
LCAmb3V0bGVuLCBzYW1wbGUsIFNBTVBMRV9MRU5HVEgpOworICAgIH0KK30KKworc3RhdGljIFB5
T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9hcHBseShIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkZXIs
ICpwYXlsb2FkOworICAgIFB5X3NzaXplX3QgaGVhZGVyX2xlbiwgcGF5bG9hZF9sZW47CisgICAg
aW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5IyIsICZoZWFk
ZXIsICZoZWFkZXJfbGVuLCAmcGF5bG9hZCwgJnBheWxvYWRfbGVuKSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKGhlYWRlclswXSAmIDB4MDMpICsgMTsKKyAg
ICBpbnQgcG5fb2Zmc2V0ID0gaGVhZGVyX2xlbiAtIHBuX2xlbmd0aDsKKworICAgIHJlcyA9IEhl
YWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYXlsb2FkICsgUEFDS0VUX05VTUJFUl9MRU5HVEhf
TUFYIC0gcG5fbGVuZ3RoKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgbWVt
Y3B5KHNlbGYtPmJ1ZmZlciwgaGVhZGVyLCBoZWFkZXJfbGVuKTsKKyAgICBtZW1jcHkoc2VsZi0+
YnVmZmVyICsgaGVhZGVyX2xlbiwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOworCisgICAgaWYgKHNl
bGYtPmJ1ZmZlclswXSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYt
Pm1hc2tbMF0gJiAweDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBe
PSBzZWxmLT5tYXNrWzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHBuX2xlbmd0aDsgKytpKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSBe
PSBzZWxmLT5tYXNrWzEgKyBpXTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3Ry
aW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBoZWFkZXJfbGVuICsgcGF5bG9h
ZF9sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZShI
ZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CisgICAgUHlfc3NpemVfdCBwYWNrZXRfbGVuOworICAg
IGludCBwbl9vZmZzZXQsIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
eSNJIiwgJnBhY2tldCwgJnBhY2tldF9sZW4sICZwbl9vZmZzZXQpKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYWNrZXQgKyBw
bl9vZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworICAgIENIRUNLX1JFU1VMVChy
ZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBwYWNrZXQsIHBuX29mZnNldCAr
IFBBQ0tFVF9OVU1CRVJfTEVOR1RIX01BWCk7CisKKyAgICBpZiAoc2VsZi0+YnVmZmVyWzBdICYg
MHg4MCkgeworICAgICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MEY7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0g
JiAweDFGOworICAgIH0KKworICAgIGludCBwbl9sZW5ndGggPSAoc2VsZi0+YnVmZmVyWzBdICYg
MHgwMykgKyAxOworICAgIHVpbnQzMl90IHBuX3RydW5jYXRlZCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zm
c2V0ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgICAgIHBuX3RydW5jYXRlZCA9IHNl
bGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSB8IChwbl90cnVuY2F0ZWQgPDwgOCk7CisgICAgfQor
CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInkjaSIsIHNlbGYtPmJ1ZmZlciwgcG5fb2Zmc2V0
ICsgcG5fbGVuZ3RoLCBwbl90cnVuY2F0ZWQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgSGVh
ZGVyUHJvdGVjdGlvbl9tZXRob2RzW10gPSB7CisgICAgeyJhcHBseSIsIChQeUNGdW5jdGlvbilI
ZWFkZXJQcm90ZWN0aW9uX2FwcGx5LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlbW92ZSIs
IChQeUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZSwgTUVUSF9WQVJBUkdTLCAiIn0s
CisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEhlYWRlclByb3RlY3Rpb25U
eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRFVMRV9O
QU1FICIuSGVhZGVyUHJvdGVjdGlvbiIsICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdCksICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0
cnVjdG9yKUhlYWRlclByb3RlY3Rpb25fZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLworICAgICJIZWFkZXJQcm90ZWN0aW9uIG9iamVjdHMiLCAgICAgICAgIC8qIHRwX2Rv
YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCisgICAgSGVhZGVyUHJvdGVjdGlvbl9tZXRob2RzLCAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpSGVhZGVyUHJvdGVjdGlv
bl9pbml0LCAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURl
ZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgIE1PRFVMRV9O
QU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgICJBIGZhc3RlciBi
dWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5p
dF9fY3J5cHRvKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1bGVf
Q3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ3J5cHRvRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUg
Ii5DcnlwdG9FcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAgIFB5X0lOQ1JFRihD
cnlwdG9FcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDcnlwdG9FcnJvciIsIENy
eXB0b0Vycm9yKTsKKworICAgIEFFQURUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkFFQURUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxM
OworICAgIFB5X0lOQ1JFRigmQUVBRFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAi
QUVBRCIsIChQeU9iamVjdCAqKSZBRUFEVHlwZSk7CisKKyAgICBIZWFkZXJQcm90ZWN0aW9uVHlw
ZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZIZWFk
ZXJQcm90ZWN0aW9uVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNS
RUYoJkhlYWRlclByb3RlY3Rpb25UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhl
YWRlclByb3RlY3Rpb24iLCAoUHlPYmplY3QgKikmSGVhZGVyUHJvdGVjdGlvblR5cGUpOworCisg
ICAgLy8gZW5zdXJlIHJlcXVpcmVkIGNpcGhlcnMgYXJlIGluaXRpYWxpc2VkCisgICAgRVZQX2Fk
ZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOworICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf
MTI4X2djbSgpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7CisgICAg
RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworCisgICAgcmV0dXJuIG07Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjNTIzMGQ5OTJlN2Yy
MTljOTNiZWMzY2I0NTcyMTRjMjUxOGM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQpAQCAtMCwwICsxLDE3IEBACitmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKKworY2xhc3MgQUVBRDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVy
X25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzLCBpdjogYnl0ZXMpOiAuLi4KKyAgICBkZWYgZGVjcnlw
dCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0YTogYnl0ZXMsIHBh
Y2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBlbmNyeXB0KAor
ICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRhOiBieXRlcywgcGFja2V0
X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczogLi4uCisKK2NsYXNzIENyeXB0b0Vycm9yKFZh
bHVlRXJyb3IpOiAuLi4KKworY2xhc3MgSGVhZGVyUHJvdGVjdGlvbjoKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzKTogLi4uCisgICAgZGVmIGFw
cGx5KHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHByb3RlY3RlZF9wYXlsb2FkOiBieXRlcykg
LT4gYnl0ZXM6IC4uLgorICAgIGRlZiByZW1vdmUoc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlw
dGVkX29mZnNldDogaW50KSAtPiBUdXBsZVtieXRlcywgaW50XTogLi4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYWJvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjZDhmMzNkNjVkY2JmMjM5N2QxMmM4M2M2NTFjYzg5
OWU5MTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91
dC5weQpAQCAtMCwwICsxLDcgQEAKK19fYXV0aG9yX18gPSAiSmVyZW15IExhaW7DqSIKK19fZW1h
aWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKK19fbGljZW5zZV9fID0gIkJTRCIKK19fc3Vt
bWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhUVFAvMyIKK19fdGl0bGVf
XyA9ICJhaW9xdWljIgorX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1
aWMiCitfX3ZlcnNpb25fXyA9ICIwLjguNyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fz
eW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYTY5ZDg5OTM0ZThmODdhMjFjNWI5OGU5
N2ExMTQ5MTJiZThjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9hc3luY2lvL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSAuY2xpZW50IGltcG9y
dCBjb25uZWN0ICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblBy
b3RvY29sICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgc2VydmUgICMgbm9xYQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOTM3ZTll
ODkyYmZlNzZjZDJjMmZjN2NiM2E2ZTRmZjczOTMzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKQEAgLTAsMCArMSw5NCBAQAor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBz
eXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBc3luY0dlbmVyYXRvciwgQ2FsbGFibGUsIE9wdGlvbmFs
LCBjYXN0CisKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbgorZnJvbSAu
LnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldEhhbmRsZXIKK2Zyb20gLmNvbXBhdCBpbXBvcnQgYXN5
bmNjb250ZXh0bWFuYWdlcgorZnJvbSAucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18gPSBbImNvbm5lY3QiXQorCisKK0Bh
c3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgY29ubmVjdCgKKyAgICBob3N0OiBzdHIsCisg
ICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJhdGlvbjogT3B0aW9uYWxbUXVpY0Nv
bmZpZ3VyYXRpb25dID0gTm9uZSwKKyAgICBjcmVhdGVfcHJvdG9jb2w6IE9wdGlvbmFsW0NhbGxh
YmxlXSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICBzdHJlYW1faGFu
ZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwKKyAgICB3YWl0X2Nvbm5l
Y3RlZDogYm9vbCA9IFRydWUsCisgICAgbG9jYWxfcG9ydDogaW50ID0gMCwKKykgLT4gQXN5bmNH
ZW5lcmF0b3JbUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgTm9uZV06CisgICAgIiIiCisgICAgQ29u
bmVjdCB0byBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9zdGAgYW5kIGBwb3J0YC4KKwor
ICAgIDptZXRoOmBjb25uZWN0KClgIHJldHVybnMgYW4gYXdhaXRhYmxlLiBBd2FpdGluZyBpdCB5
aWVsZHMgYQorICAgIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3Rv
Y29sYCB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBzdHJlYW1zLgorCisgICAgOmZ1
bmM6YGNvbm5lY3RgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50
czoKKworICAgICogYGBjb25maWd1cmF0aW9uYGAgaXMgYSA6Y2xhc3M6YH5haW9xdWljLnF1aWMu
Y29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICAgIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0LgorICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9taXppbmcgdGhlIDpj
bGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMgdGhlIGNvbm5lY3Rp
b24uIEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZQor
ICAgICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlv
blByb3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5h
aW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4KKyAg
ICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52
b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBp
cyByZWNlaXZlZC4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNo
IGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNyZWF0ZWQuIEl0IG11c3Qg
YWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVJlYWRlcmAKKyAg
ICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgorICAgICogYGBsb2NhbF9w
b3J0YGAgaXMgdGhlIFVEUCBwb3J0IG51bWJlciB0aGF0IHRoaXMgY2xpZW50IHdhbnRzIHRvIGJp
bmQuCisgICAgIiIiCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxv
Y2FsX2hvc3QgPSAiOjoiCisKKyAgICAjIGlmIGhvc3QgaXMgbm90IGFuIElQIGFkZHJlc3MsIHBh
c3MgaXQgdG8gZW5hYmxlIFNOSQorICAgIHRyeToKKyAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJl
c3MoaG9zdCkKKyAgICAgICAgc2VydmVyX25hbWUgPSBOb25lCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIHNlcnZlcl9uYW1lID0gaG9zdAorCisgICAgIyBsb29rdXAgcmVtb3RlIGFk
ZHJlc3MKKyAgICBpbmZvcyA9IGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgdHlw
ZT1zb2NrZXQuU09DS19ER1JBTSkKKyAgICBhZGRyID0gaW5mb3NbMF1bNF0KKyAgICBpZiBsZW4o
YWRkcikgPT0gMjoKKyAgICAgICAgIyBkZXRlcm1pbmUgYmVoYXZpb3VyIGZvciBJUHY0CisgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgIyBvbiBXaW5kb3dz
LCB3ZSBtdXN0IHVzZSBhbiBJUHY0IHNvY2tldCB0byByZWFjaCBhbiBJUHY0IGhvc3QKKyAgICAg
ICAgICAgIGxvY2FsX2hvc3QgPSAiMC4wLjAuMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgb3RoZXIgcGxhdGZvcm1zIHN1cHBvcnQgZHVhbC1zdGFjayBzb2NrZXRzCisgICAgICAgICAg
ICBhZGRyID0gKCI6OmZmZmY6IiArIGFkZHJbMF0sIGFkZHJbMV0sIDAsIDApCisKKyAgICAjIHBy
ZXBhcmUgUVVJQyBjb25uZWN0aW9uCisgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAg
ICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgaWYgc2VydmVyX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vy
dmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgIGNvbm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICApCisKKyAgICAjIGNvbm5lY3QKKyAgICBf
LCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAg
ICBsYW1iZGE6IGNyZWF0ZV9wcm90b2NvbChjb25uZWN0aW9uLCBzdHJlYW1faGFuZGxlcj1zdHJl
YW1faGFuZGxlciksCisgICAgICAgIGxvY2FsX2FkZHI9KGxvY2FsX2hvc3QsIGxvY2FsX3BvcnQp
LAorICAgICkKKyAgICBwcm90b2NvbCA9IGNhc3QoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgcHJv
dG9jb2wpCisgICAgcHJvdG9jb2wuY29ubmVjdChhZGRyKQorICAgIGlmIHdhaXRfY29ubmVjdGVk
OgorICAgICAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nvbm5lY3RlZCgpCisgICAgdHJ5OgorICAg
ICAgICB5aWVsZCBwcm90b2NvbAorICAgIGZpbmFsbHk6CisgICAgICAgIHByb3RvY29sLmNsb3Nl
KCkKKyAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nsb3NlZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxZTYyZjZkOTQyOTYxOTMzZmI2
ZmUwNzJhZTBmMjdlNjQzYjRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpAQCAtMCwwICsxLDMzIEBACitmcm9tIGNvbnRleHRs
aWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwor
Cit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCitl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9IE5vbmUKKworCitj
bGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihDb250ZXh0RGVjb3JhdG9yKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJncywga3dkcyk6CisgICAgICAgIHNlbGYuZ2Vu
ID0gZnVuYygqYXJncywgKiprd2RzKQorICAgICAgICBzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2Vs
Zi5rd2RzID0gZnVuYywgYXJncywga3dkcworICAgICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9f
ZG9jX18KKworICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
YXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKKworICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2Vs
ZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgaWYgdHlwIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRocm93KHR5cCwgdmFsdWUsIHRyYWNlYmFjaykK
KworCitkZWYgX2FzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CisgICAgQHdyYXBzKGZ1bmMpCisg
ICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIF9Bc3luY0dlbmVy
YXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCisKKyAgICByZXR1cm4gaGVscGVy
CisKKworaWYgYXN5bmNjb250ZXh0bWFuYWdlciBpcyBOb25lOgorICAgIGFzeW5jY29udGV4dG1h
bmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby9wcm90b2NvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAwNDMzNWI4ZmZmZjlkNzAyNWQzNjVl
Y2FhOTMxZjc3NDcyMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2FzeW5jaW8vcHJvdG9jb2wucHkKQEAgLTAsMCArMSwyNDAgQEAKK2ltcG9ydCBhc3luY2lv
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQs
IFR1cGxlLCBVbmlvbiwgY2FzdAorCitmcm9tIC4ucXVpYyBpbXBvcnQgZXZlbnRzCitmcm9tIC4u
cXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nvbm5lY3Rpb24KKwor
UXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBDYWxsYWJsZVtbYnl0ZXNdLCBOb25lXQorUXVpY1N0
cmVhbUhhbmRsZXIgPSBDYWxsYWJsZVtbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXSwgTm9uZV0KKworCitjbGFzcyBRdWljQ29ubmVjdGlvblByb3RvY29sKGFzeW5j
aW8uRGF0YWdyYW1Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBx
dWljOiBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFsW1F1aWNTdHJlYW1I
YW5kbGVyXSA9IE5vbmUKKyAgICApOgorICAgICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpCisKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gYXN5bmNpby5FdmVudCgpCisgICAgICAg
IHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXI6
IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9v
cCA9IGxvb3AKKyAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzOiBEaWN0W2ludCwgYXN5bmNpby5G
dXR1cmVbTm9uZV1dID0ge30KKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtX3JlYWRlcnM6IERpY3RbaW50LCBhc3luY2lvLlN0cmVhbVJlYWRlcl0gPSB7fQor
ICAgICAgICBzZWxmLl90aW1lcjogT3B0aW9uYWxbYXN5bmNpby5UaW1lckhhbmRsZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3RpbWVyX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuX3RyYW5zbWl0X3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uSGFuZGxlXSA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fdHJhbnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0
XSA9IE5vbmUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9jb25uZWN0aW9u
X2lkX2lzc3VlZF9oYW5kbGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBO
b25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyOiBRdWljQ29u
bmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rp
b25fdGVybWluYXRlZF9oYW5kbGVyOiBDYWxsYWJsZVtbXSwgTm9uZV0gPSBsYW1iZGE6IE5vbmUK
KyAgICAgICAgaWYgc3RyZWFtX2hhbmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IGxhbWJkYSByLCB3OiBOb25lCisKKyAgICBkZWYg
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IENoYW5nZSB0aGUgY29ubmVjdGlvbiBJRCB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBl
ZXIuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gSUQgd2lsbCBiZSByZXRpcmVk
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jaGFuZ2VfY29ubmVjdGlvbl9pZCgp
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2UuCisKKyAgICAgICAg
VGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0
aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jb25uZWN0KGFkZHIsIG5vdz1z
ZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBk
ZWYgY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wg
PSBGYWxzZQorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFVSUMgc3RyZWFtIGFu
ZCByZXR1cm4gYSBwYWlyIG9mIChyZWFkZXIsIHdyaXRlcikgb2JqZWN0cy4KKworICAgICAgICBU
aGUgcmV0dXJuZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0cyBhcmUgaW5zdGFuY2VzIG9mIDpj
bGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICAgIGFuZCA6Y2xhc3M6YGFzeW5jaW8u
U3RyZWFtV3JpdGVyYCBjbGFzc2VzLgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0g
c2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKAorICAgICAgICAgICAgaXNf
dW5pZGlyZWN0aW9uYWw9aXNfdW5pZGlyZWN0aW9uYWwKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisKKyAgICBkZWYgcmVxdWVzdF9rZXlf
dXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSZXF1ZXN0IGFuIHVw
ZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
cXVpYy5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAg
IGFzeW5jIGRlZiBwaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQaW5n
IHRoZSBwZWVyIGFuZCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAg
ICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICB1aWQgPSBpZCh3
YWl0ZXIpCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyc1t1aWRdID0gd2FpdGVyCisgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9waW5nKHVpZCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisgICAg
ICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiB0cmFuc21pdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBwZW5kaW5nIGRhdGFncmFtcyB0
byB0aGUgcGVlciBhbmQgYXJtIHRoZSB0aW1lciBpZiBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLl90cmFuc21pdF90YXNrID0gTm9uZQorCisgICAgICAgICMgc2VuZCBkYXRhZ3Jh
bXMKKyAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VsZi5fcXVpYy5kYXRhZ3JhbXNfdG9fc2Vu
ZChub3c9c2VsZi5fbG9vcC50aW1lKCkpOgorICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNl
bmR0byhkYXRhLCBhZGRyKQorCisgICAgICAgICMgcmUtYXJtIHRpbWVyCisgICAgICAgIHRpbWVy
X2F0ID0gc2VsZi5fcXVpYy5nZXRfdGltZXIoKQorICAgICAgICBpZiBzZWxmLl90aW1lciBpcyBu
b3QgTm9uZSBhbmQgc2VsZi5fdGltZXJfYXQgIT0gdGltZXJfYXQ6CisgICAgICAgICAgICBzZWxm
Ll90aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBOb25lCisgICAgICAg
IGlmIHNlbGYuX3RpbWVyIGlzIE5vbmUgYW5kIHRpbWVyX2F0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fdGltZXIgPSBzZWxmLl9sb29wLmNhbGxfYXQodGltZXJfYXQsIHNlbGYuX2hh
bmRsZV90aW1lcikKKyAgICAgICAgc2VsZi5fdGltZXJfYXQgPSB0aW1lcl9hdAorCisgICAgYXN5
bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBX
YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQuCisgICAgICAgICIiIgorICAgICAg
ICBhd2FpdCBzZWxmLl9jbG9zZWQud2FpdCgpCisKKyAgICBhc3luYyBkZWYgd2FpdF9jb25uZWN0
ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgZm9yIHRoZSBUTFMg
aGFuZHNoYWtlIHRvIGNvbXBsZXRlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYu
X2Nvbm5lY3RlZF93YWl0ZXIgaXMgTm9uZSwgImFscmVhZHkgYXdhaXRpbmcgY29ubmVjdGVkIgor
ICAgICAgICBpZiBub3Qgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAgc2VsZi5fY29ubmVj
dGVkX3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLl9jb25uZWN0ZWRfd2FpdGVyKQorCisgICAgIyBhc3luY2lv
LlRyYW5zcG9ydAorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6IGFz
eW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0g
Y2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisKKyAgICBkZWYgZGF0
YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0ZXMsIFRleHRdLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5yZWNlaXZlX2RhdGFncmFt
KGNhc3QoYnl0ZXMsIGRhdGEpLCBhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAg
IHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAj
IG92ZXJyaWRhYmxlCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
ZXZlbnRzLlF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxlZCB3
aGVuIGEgUVVJQyBldmVudCBpcyByZWNlaXZlZC4KKworICAgICAgICBSZWltcGxlbWVudCB0aGlz
IGluIHlvdXIgc3ViY2xhc3MgdG8gaGFuZGxlIHRoZSBldmVudHMuCisgICAgICAgICIiIgorICAg
ICAgICAjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBzdWJjbGFzcworICAgICAgICBpZiBpc2luc3Rh
bmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQpOgorICAgICAgICAgICAgZm9y
IHJlYWRlciBpbiBzZWxmLl9zdHJlYW1fcmVhZGVycy52YWx1ZXMoKToKKyAgICAgICAgICAgICAg
ICByZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50
cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5fc3RyZWFt
X3JlYWRlcnMuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIHJlYWRl
ciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gc2VsZi5fY3JlYXRl
X3N0cmVhbShldmVudC5zdHJlYW1faWQpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hh
bmRsZXIocmVhZGVyLCB3cml0ZXIpCisgICAgICAgICAgICByZWFkZXIuZmVlZF9kYXRhKGV2ZW50
LmRhdGEpCisgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFtOgorICAgICAgICAgICAgICAg
IHJlYWRlci5mZWVkX2VvZigpCisKKyAgICAjIHByaXZhdGUKKworICAgIGRlZiBfY3JlYXRlX3N0
cmVhbSgKKyAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+IFR1cGxlW2FzeW5j
aW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06CisgICAgICAgIGFkYXB0ZXIg
PSBRdWljU3RyZWFtQWRhcHRlcihzZWxmLCBzdHJlYW1faWQpCisgICAgICAgIHJlYWRlciA9IGFz
eW5jaW8uU3RyZWFtUmVhZGVyKCkKKyAgICAgICAgd3JpdGVyID0gYXN5bmNpby5TdHJlYW1Xcml0
ZXIoYWRhcHRlciwgTm9uZSwgcmVhZGVyLCBzZWxmLl9sb29wKQorICAgICAgICBzZWxmLl9zdHJl
YW1fcmVhZGVyc1tzdHJlYW1faWRdID0gcmVhZGVyCisgICAgICAgIHJldHVybiByZWFkZXIsIHdy
aXRlcgorCisgICAgZGVmIF9oYW5kbGVfdGltZXIoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbm93
ID0gbWF4KHNlbGYuX3RpbWVyX2F0LCBzZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi5f
dGltZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gTm9uZQorICAgICAgICBzZWxm
Ll9xdWljLmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50
cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIF9wcm9jZXNzX2V2ZW50cyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4dF9ldmVudCgpCisg
ICAgICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcihldmVudC5jb25uZWN0aW9uX2lkKQorICAg
ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvbklkUmV0aXJl
ZCk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hhbmRsZXIo
ZXZlbnQuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcigpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IGNv
bm5lY3Rpb24gd2FpdGVyCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkX3dhaXRl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5fY29ubmVj
dGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9u
RXJyb3IpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IHBpbmcgd2FpdGVycworICAgICAgICAg
ICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fcGluZ193YWl0ZXJzLnZhbHVlcygpOgorICAgICAg
ICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9uRXJyb3IpCisgICAg
ICAgICAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzLmNsZWFyKCkKKworICAgICAgICAgICAgICAg
IHNlbGYuX2Nsb3NlZC5zZXQoKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jb25u
ZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIgPSBz
ZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX3Bpbmdfd2FpdGVycy5wb3AoZXZlbnQudWlkLCBO
b25lKQorICAgICAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYucXVpY19l
dmVudF9yZWNlaXZlZChldmVudCkKKyAgICAgICAgICAgIGV2ZW50ID0gc2VsZi5fcXVpYy5uZXh0
X2V2ZW50KCkKKworICAgIGRlZiBfdHJhbnNtaXRfc29vbihzZWxmKSAtPiBOb25lOgorICAgICAg
ICBpZiBzZWxmLl90cmFuc21pdF90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl90cmFu
c21pdF90YXNrID0gc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi50cmFuc21pdCkKKworCitjbGFz
cyBRdWljU3RyZWFtQWRhcHRlcihhc3luY2lvLlRyYW5zcG9ydCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzdHJlYW1faWQ6IGludCk6
CisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxmLnN0cmVhbV9p
ZCA9IHN0cmVhbV9pZAorCisgICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lOiBz
dHIsIGRlZmF1bHQ6IEFueSA9IE5vbmUpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIEdl
dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBRVUlDIHN0cmVhbS4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIG5hbWUgPT0gInN0cmVhbV9pZCI6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdHJlYW1faWQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFtX2lkLCBkYXRhKQor
ICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKKworICAgIGRlZiB3cml0ZV9l
b2Yoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLnN0cmVhbV9pZCwgYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYucHJvdG9j
b2wuX3RyYW5zbWl0X3Nvb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2Vy
dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0MGVlNDYwYjZlZDY2ZTA5NDUzODVmMWY1NDg1OGNjMGVmOTE4
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9z
ZXJ2ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgb3MKK2Zy
b20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUs
IERpY3QsIE9wdGlvbmFsLCBUZXh0LCBVbmlvbiwgY2FzdAorCitmcm9tIC4uYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nv
bm5lY3Rpb24KK2Zyb20gLi5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9u
ZWdvdGlhdGlvbiwKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorKQorZnJvbSAuLnF1aWMucmV0cnkg
aW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorZnJvbSAuLnRscyBpbXBvcnQgU2Vzc2lvblRp
Y2tldEZldGNoZXIsIFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5wcm90b2NvbCBpbXBvcnQg
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKworX19hbGxfXyA9IFsi
c2VydmUiXQorCisKK2NsYXNzIFF1aWNTZXJ2ZXIoYXN5bmNpby5EYXRhZ3JhbVByb3RvY29sKToK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w6
IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAgc2Vzc2lvbl90aWNr
ZXRfZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJd
ID0gTm9uZSwKKyAgICAgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFsc2UsCisgICAgICAg
IHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0gPSBOb25lLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24K
KyAgICAgICAgc2VsZi5fY3JlYXRlX3Byb3RvY29sID0gY3JlYXRlX3Byb3RvY29sCisgICAgICAg
IHNlbGYuX2xvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAgICAgc2VsZi5fcHJv
dG9jb2xzOiBEaWN0W2J5dGVzLCBRdWljQ29ubmVjdGlvblByb3RvY29sXSA9IHt9CisgICAgICAg
IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tldF9mZXRjaGVyCisg
ICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRy
YW5zcG9ydF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1f
aGFuZGxlcgorCisgICAgICAgIGlmIHN0YXRlbGVzc19yZXRyeToKKyAgICAgICAgICAgIHNlbGYu
X3JldHJ5ID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX3JldHJ5ID0gTm9uZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBm
b3IgcHJvdG9jb2wgaW4gc2V0KHNlbGYuX3Byb3RvY29scy52YWx1ZXMoKSk6CisgICAgICAgICAg
ICBwcm90b2NvbC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3Byb3RvY29scy5jbGVhcigpCisgICAg
ICAgIHNlbGYuX3RyYW5zcG9ydC5jbG9zZSgpCisKKyAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNl
bGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3BvcnQsIHRyYW5zcG9y
dCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBVbmlvbltieXRlcywg
VGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAgICBkYXRhID0gY2Fz
dChieXRlcywgZGF0YSkKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAg
ICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlv
bl9pZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAg
ICAgaWYgKAorICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5vbmUKKyAgICAgICAg
ICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0
ZWRfdmVyc2lvbnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5zZW5k
dG8oCisgICAgICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJjZV9jaWQsCisgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwcm90b2Nv
bCA9IHNlbGYuX3Byb3RvY29scy5nZXQoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgTm9uZSkKKyAg
ICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAg
ICAgICBpZiAoCisgICAgICAgICAgICBwcm90b2NvbCBpcyBOb25lCisgICAgICAgICAgICBhbmQg
bGVuKGRhdGEpID49IDEyMDAKKyAgICAgICAgICAgIGFuZCBoZWFkZXIucGFja2V0X3R5cGUgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICApOgorICAgICAgICAgICAgIyBzdGF0ZWxlc3Mg
cmV0cnkKKyAgICAgICAgICAgIGlmIHNlbGYuX3JldHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIG5vdCBoZWFkZXIudG9rZW46CisgICAgICAgICAgICAgICAgICAgICMgY3JlYXRl
IGEgcmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0
bygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb249aGVhZGVyLnZlcnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlX2NpZD1vcy51cmFuZG9tKDgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2NpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLmRlc3Rp
bmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeV90b2tlbj1zZWxm
Ll9yZXRyeS5jcmVhdGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSByZXRy
eSB0b2tlbgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcmV0cnkudmFsaWRhdGVfdG9rZW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLnRva2VuCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY3JlYXRlIG5l
dyBjb25uZWN0aW9uCisgICAgICAgICAgICBjb25uZWN0aW9uID0gUXVpY0Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAg
ICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgb3Ig
aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0
aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQsCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90
aWNrZXRfZmV0Y2hlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAgICAgICAg
ICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sID0gc2VsZi5fY3JlYXRlX3Byb3Rv
Y29sKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyPXNlbGYuX3N0
cmVhbV9oYW5kbGVyCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5jb25uZWN0
aW9uX21hZGUoc2VsZi5fdHJhbnNwb3J0KQorCisgICAgICAgICAgICAjIHJlZ2lzdGVyIGNhbGxi
YWNrcworICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkLCBw
cm90b2NvbD1wcm90b2NvbAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX2Nv
bm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZCwg
cHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5fcHJv
dG9jb2xzW2hlYWRlci5kZXN0aW5hdGlvbl9jaWRdID0gcHJvdG9jb2wKKyAgICAgICAgICAgIHNl
bGYuX3Byb3RvY29sc1tjb25uZWN0aW9uLmhvc3RfY2lkXSA9IHByb3RvY29sCisKKyAgICAgICAg
aWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2NvbC5kYXRhZ3JhbV9y
ZWNlaXZlZChkYXRhLCBhZGRyKQorCisgICAgZGVmIF9jb25uZWN0aW9uX2lkX2lzc3VlZChzZWxm
LCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgICAg
IHNlbGYuX3Byb3RvY29sc1tjaWRdID0gcHJvdG9jb2wKKworICAgIGRlZiBfY29ubmVjdGlvbl9p
ZF9yZXRpcmVkKAorICAgICAgICBzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Byb3Rv
Y29sc1tjaWRdID09IHByb3RvY29sCisgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQor
CisgICAgZGVmIF9jb25uZWN0aW9uX3Rlcm1pbmF0ZWQoc2VsZiwgcHJvdG9jb2w6IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wpOgorICAgICAgICBmb3IgY2lkLCBwcm90byBpbiBsaXN0KHNlbGYuX3By
b3RvY29scy5pdGVtcygpKToKKyAgICAgICAgICAgIGlmIHByb3RvID09IHByb3RvY29sOgorICAg
ICAgICAgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQorCisKK2FzeW5jIGRlZiBzZXJ2
ZSgKKyAgICBob3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJh
dGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgY3JlYXRlX3Byb3RvY29sOiBDYWxsYWJsZSA9
IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgIHN0YXRl
bGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAgIHN0cmVhbV9oYW5kbGVyOiBRdWljU3RyZWFt
SGFuZGxlciA9IE5vbmUsCispIC0+IFF1aWNTZXJ2ZXI6CisgICAgIiIiCisgICAgU3RhcnQgYSBR
VUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAuCisKKyAgICA6ZnVuYzpg
c2VydmVgIHJlcXVpcmVzIGEgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24uUXVp
Y0NvbmZpZ3VyYXRpb25gCisgICAgY29udGFpbmluZyBUTFMgY2VydGlmaWNhdGUgYW5kIHByaXZh
dGUga2V5IGFzIHRoZSBgYGNvbmZpZ3VyYXRpb25gYCBhcmd1bWVudC4KKworICAgIDpmdW5jOmBz
ZXJ2ZWAgYWxzbyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgorCisg
ICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFsbG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+
YXN5bmNpby5Qcm90b2NvbGAgdGhhdAorICAgICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQg
c2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBzYW1lCisgICAgICBh
cmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9j
b2xgIGFuZCByZXR1cm5pbmcKKyAgICAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMu
YXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sYCBvciBhIHN1YmNsYXNzLgorICAgICogYGBz
ZXNzaW9uX3RpY2tldF9mZXRjaGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5
IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgc2Vzc2lvbiB0aWNrZXQgaXMgcHJlc2VudGVk
IGJ5IHRoZSBwZWVyLiBJdCBzaG91bGQgcmV0dXJuCisgICAgICB0aGUgc2Vzc2lvbiB0aWNrZXQg
d2l0aCB0aGUgc3BlY2lmaWVkIElEIG9yIGBOb25lYCBpZiBpdCBpcyBub3QgZm91bmQuCisgICAg
KiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0aWNrZXQgaXMg
aXNzdWVkLiBJdCBzaG91bGQgc3RvcmUgdGhlIHNlc3Npb24KKyAgICAgIHRpY2tldCBmb3IgZnV0
dXJlIGxvb2t1cC4KKyAgICAqIGBgc3RhdGVsZXNzX3JldHJ5YGAgc3BlY2lmaWVzIHdoZXRoZXIg
YSBzdGF0ZWxlc3MgcmV0cnkgc2hvdWxkIGJlCisgICAgICBwZXJmb3JtZWQgcHJpb3IgdG8gaGFu
ZGxpbmcgbmV3IGNvbm5lY3Rpb25zLgorICAgICogYGBzdHJlYW1faGFuZGxlcmBgIGlzIGEgY2Fs
bGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcworICAgICAgY3JlYXRl
ZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFt
UmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdyaXRlcmAuCisgICAg
IiIiCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKKyAgICBfLCBwcm90
b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAgICBsYW1i
ZGE6IFF1aWNTZXJ2ZXIoCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sLAorICAgICAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAg
ICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAg
ICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PXN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgICAgIHN0
cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyLAorICAgICAgICApLAorICAgICAgICBsb2NhbF9h
ZGRyPShob3N0LCBwb3J0KSwKKyAgICApCisgICAgcmV0dXJuIGNhc3QoUXVpY1NlcnZlciwgcHJv
dG9jb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4OGYxZWIxNTkyYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05v
bmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3lu
Y2lvL2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1
ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E0Mjk4Zjk1NGMyMmU1Mzg5YTEyOWExZWU2NzVlOGVmZWQ4
N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5w
eQpAQCAtMCwwICsxLDI5IEBACitmcm9tIC5fYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJl
YWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciAgIyBub3FhCisKK1VJTlRfVkFSX01BWCA9IDB4M0ZG
RkZGRkZGRkZGRkZGRgorCisKK2RlZiBlbmNvZGVfdWludF92YXIodmFsdWU6IGludCkgLT4gYnl0
ZXM6CisgICAgIiIiCisgICAgRW5jb2RlIGEgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVn
ZXIuCisgICAgIiIiCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgYnVmLnB1c2hf
dWludF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIHNpemVfdWludF92
YXIodmFsdWU6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUKKyAgICBhcyBhIFFVSUMg
dmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuCisgICAgIiIiCisgICAgaWYgdmFsdWUg
PD0gMHgzRjoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRjoKKyAg
ICAgICAgcmV0dXJuIDIKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA0CisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA4CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW50ZWdlciBpcyB0
b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9oMC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2gwL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIxZWU0ZTdkNmIxOGQ4
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0
aW9uLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0CisK
K2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVh
ZGVycywgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZl
bnQsIFN0cmVhbURhdGFSZWNlaXZlZAorCitIMF9BTFBOID0gWyJocS0yNyIsICJocS0yNiIsICJo
cS0yNSJdCisKKworY2xhc3MgSDBDb25uZWN0aW9uOgorICAgICIiIgorICAgIEFuIEhUVFAvMC45
IGNvbm5lY3Rpb24gb2JqZWN0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZDogRGlj
dFtpbnQsIGJvb2xdID0ge30KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1
cmF0aW9uLmlzX2NsaWVudAorICAgICAgICBzZWxmLl9xdWljID0gcXVpYworCisgICAgZGVmIGhh
bmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gzRXZlbnRdOgorICAg
ICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0cmVhbV9pZCAlIDQp
ID09IDA6CisgICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgRmFsc2UpOgorICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgaHR0
cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0cmVhbV9lbmRlZD1G
YWxzZSwgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxpdChiIiAiLCAxKQor
ICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1bKGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkW2V2ZW50LnN0cmVh
bV9pZF0gPSBUcnVlCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgc3Ry
ZWFtX2VuZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZl
bnRzCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRhOiBieXRl
cywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKKworICAgIGRlZiBzZW5kX2hl
YWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBl
bmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2lzX2NsaWVudDoKKyAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3QoaGVhZGVycykKKyAg
ICAgICAgICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBiIiAiICsgaGVhZGVy
c19kaWN0W2IiOnBhdGgiXSArIGIiXHJcbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRh
dGEgPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwg
ZGF0YSwgZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjM2MWVhNDA1NTFiNjI4NmIzZTFlZTVmMjlhNzc3NGFlNjA3MGI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBv
cnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0aW9u
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZjhjNTQyODNjZDc3Yzdm
OWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDc3NiBAQAoraW1wb3J0IGxv
Z2dpbmcKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKKworaW1wb3J0IHB5bHNxcGFjaworCitmcm9tIGFp
b3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgZW5jb2RlX3VpbnRf
dmFyCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0YVJlY2VpdmVkLAor
ICAgIEgzRXZlbnQsCisgICAgSGVhZGVycywKKyAgICBIZWFkZXJzUmVjZWl2ZWQsCisgICAgUHVz
aFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBO
b0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFp
b3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorCitsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigiaHR0cDMiKQorCitIM19BTFBOID0gWyJoMy0yNyIsICJoMy0yNiIsICJo
My0yNSJdCisKKworY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgorICAgIEhUVFBfTk9fRVJST1Ig
PSAweDEwMAorICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4MTAxCisgICAgSFRU
UF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCisgICAgSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1Ig
PSAweDEwMworICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4MTA0CisgICAgSFRU
UF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKKyAgICBIVFRQX0ZSQU1FX0VSUk9SID0gMHgxMDYK
KyAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKKyAgICBIVFRQX0lEX0VSUk9SID0gMHgx
MDgKKyAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKKyAgICBIVFRQX01JU1NJTkdfU0VU
VElOR1MgPSAweDEwQQorICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4MTBCCisgICAgSFRU
UF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCisgICAgSFRUUF9SRVFVRVNUX0lOQ09NUExFVEUg
PSAweDEwRAorICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQorICAgIEhUVFBfQ09OTkVD
VF9FUlJPUiA9IDB4MTBGCisgICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0gMHgxMTAKKyAgICBI
VFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKKyAgICBIVFRQX1FQQUNLX0VO
Q09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKKyAgICBIVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFN
X0VSUk9SID0gMHgyMDIKKworCitjbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6CisgICAgREFUQSA9
IDB4MAorICAgIEhFQURFUlMgPSAweDEKKyAgICBQUklPUklUWSA9IDB4MgorICAgIENBTkNFTF9Q
VVNIID0gMHgzCisgICAgU0VUVElOR1MgPSAweDQKKyAgICBQVVNIX1BST01JU0UgPSAweDUKKyAg
ICBHT0FXQVkgPSAweDcKKyAgICBNQVhfUFVTSF9JRCA9IDB4RAorICAgIERVUExJQ0FURV9QVVNI
ID0gMHhFCisKKworY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgorICAgIElOSVRJQUwgPSAwCisg
ICAgQUZURVJfSEVBREVSUyA9IDEKKyAgICBBRlRFUl9UUkFJTEVSUyA9IDIKKworCitjbGFzcyBT
ZXR0aW5nKEludEVudW0pOgorICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lUWSA9IDEKKyAgICBT
RVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKKyAgICBRUEFDS19CTE9DS0VEX1NUUkVB
TVMgPSA3CisgICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKKworCitjbGFzcyBTdHJl
YW1UeXBlKEludEVudW0pOgorICAgIENPTlRST0wgPSAwCisgICAgUFVTSCA9IDEKKyAgICBRUEFD
S19FTkNPREVSID0gMgorICAgIFFQQUNLX0RFQ09ERVIgPSAzCisKKworY2xhc3MgUHJvdG9jb2xF
cnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGVy
cm9ycy4KKworICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIEFQSSB1c2Vy
LCB0aGV5IGFyZSBoYW5kbGVkCisgICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlvbi5oYW5kbGVfZXZl
bnRgLgorICAgICIiIgorCisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0dFTkVSQUxf
UFJPVE9DT0xfRVJST1IKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFzb25fcGhyYXNlOiBz
dHIgPSAiIik6CisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKKwor
CitjbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJvcik6CisgICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVECisKKwor
Y2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3Jf
Y29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xh
c3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3JfY29k
ZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xhc3Mg
U3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJy
b3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCisKKworY2xhc3MgRnJhbWVVbmV4cGVj
dGVkKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9GUkFN
RV9VTkVYUEVDVEVECisKKworZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBlOiBpbnQsIGZyYW1l
X2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKKyAgICBmcmFtZV9sZW5ndGggPSBsZW4oZnJhbWVfZGF0
YSkKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsgMTYpCisgICAgYnVm
LnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKKyAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV9s
ZW5ndGgpCisgICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKKyAgICByZXR1cm4gYnVmLmRh
dGEKKworCitkZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2ludCwgaW50XSkgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAgZm9yIHNldHRpbmcs
IHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNl
dHRpbmcpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAgIHJldHVybiBidWYu
ZGF0YQorCisKK2RlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykgLT4gaW50OgorICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgbWF4X3B1c2hfaWQgPSBidWYucHVsbF91aW50
X3ZhcigpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBtYXhfcHVzaF9pZAorCisK
K2RlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQsIGludF06CisgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICBzZXR0aW5ncyA9IFtdCisgICAgd2hpbGUgbm90
IGJ1Zi5lb2YoKToKKyAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHNldHRpbmdzLmFwcGVuZCgo
c2V0dGluZywgdmFsdWUpKQorICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQorCisKK2RlZiBxbG9n
X2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBE
aWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0
aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0sCisgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworZGVmIHFsb2dfZW5jb2RlX2hl
YWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKKyAgICByZXR1cm4gWworICAg
ICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBoWzFdLmRlY29kZSgi
dXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCisgICAgXQorCisKK2RlZiBxbG9nX2VuY29kZV9oZWFk
ZXJzX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIHN0cmVh
bV9pZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAgImJ5dGVfbGVuZ3Ro
Ijogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFtZV90eXBlIjogImhl
YWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyl9LAorICAgICAg
ICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2RlZiBxbG9nX2VuY29k
ZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6IGludCwgaGVhZGVyczogSGVh
ZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAorKSAtPiBEaWN0OgorICAgIHJldHVy
biB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCksCisgICAgICAgICJm
cmFtZSI6IHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJvbWlzZSIsCisgICAg
ICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyksCisgICAgICAg
ICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmVh
bV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitjbGFzcyBIM1N0cmVhbToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
YmxvY2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9zaXplOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLmVu
ZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAg
IHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3RhdGUuSU5J
VElBTAorICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVyc1N0YXRlID0gSGVh
ZGVyc1N0YXRlLklOSVRJQUwKKyAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnN0
cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK2NsYXNzIEgzQ29ubmVjdGlvbjoK
KyAgICAiIiIKKyAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBvYmplY3QuCisKKyAg
ICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b25gIGluc3RhbmNlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWM6IFF1
aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5ID0gNDA5Ngor
ICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgorCisgICAgICAgIHNlbGYuX2lzX2Ns
aWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAgc2VsZi5faXNfZG9u
ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVpY19sb2dnZXIKKyAg
ICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAorICAgICAgICAgICAgc2Vs
Zi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAorICAgICAgICBzZWxmLl9k
ZWNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXIgPSBweWxzcXBhY2su
RW5jb2RlcigpCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgPSAwCisgICAg
ICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAgICAgc2VsZi5fc3RyZWFtOiBE
aWN0W2ludCwgSDNTdHJlYW1dID0ge30KKworICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZDogT3B0
aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQorICAgICAgICBzZWxm
Ll9uZXh0X3B1c2hfaWQ6IGludCA9IDAKKworICAgICAgICBzZWxmLl9sb2NhbF9jb250cm9sX3N0
cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rl
cl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2FsX2Vu
Y29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3Bl
ZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYu
X3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAg
ICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwg
ZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRUUCBldmVudHMuCisK
KyAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5kbGUuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFu
ZCBub3Qgc2VsZi5faXNfZG9uZToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0cmVh
bV9pZAorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbV9pZCAl
IDQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2VpdmVfcmVxdWVz
dF9vcl9wdXNoX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2ZW50LmRh
dGEsIGV2ZW50LmVuZF9zdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVhbQorICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJvciBhcyBl
eGM6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWV4Yy5l
cnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBzZW5kX3B1c2hfcHJvbWlzZShzZWxm
LCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50OgorICAgICAgICAiIiIK
KyAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgc3Ry
ZWFtLgorCisgICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGljaCBoZWFkZXJzIGFu
ZCBkYXRhIGNhbiBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJl
YW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBhcmFtIGhlYWRlcnM6
IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZlcnMgbWF5IHNlbmQg
YSBwdXNoIHByb21pc2UuIgorICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9pZCBpcyBOb25lIG9y
IHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKKyAgICAgICAgICAgIHJh
aXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKworICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNl
CisgICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKKyAgICAgICAgc2VsZi5fbmV4
dF9wdXNoX2lkICs9IDEKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAg
ICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICAgICAgZW5jb2RlX3Vp
bnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJz
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIMKgY3JlYXRlIHB1c2gg
c3RyZWFtCisgICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0o
U3RyZWFtVHlwZS5QVVNIKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEocHVz
aF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKKworICAgICAgICByZXR1cm4g
cHVzaF9zdHJlYW1faWQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmll
dmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0
aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhl
IGRhdGEuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5kLgorICAgICAgICA6
cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KKyAgICAgICAgIiIi
CisgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIHN0cmVhbSA9
IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAgaWYgc3RyZWFt
LmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUzoKKyAgICAg
ICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBp
biB0aGlzIHN0YXRlIikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxv
Z19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAg
ICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9cWxvZ19lbmNv
ZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9pZD1zdHJlYW1faWQp
LAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgK
KyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5EQVRBLCBkYXRh
KSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgc2VuZF9oZWFkZXJzKAorICAgICAg
ICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5kX3N0cmVhbTogYm9v
bCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBoZWFk
ZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmlldmUgZGF0YWdyYW0g
d2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0aGUgUVVJQworICAg
ICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICA6cGFyYW0g
c3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGhlYWRlcnMuCisg
ICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNlbmQuCisgICAgICAg
IDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFtLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICBpZiBz
dHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUzoK
KyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBpcyBub3Qg
YWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICBmcmFtZV9kYXRhID0gc2VsZi5fZW5j
b2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRw
IiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisgICAgICAgICAgICAg
ICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBi
eXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywgc3RyZWFtX2lkPXN0
cmVhbV9pZAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyB1
cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycworICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19z
ZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgorICAgICAgICAgICAgc3RyZWFtLmhl
YWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVyc1N0YXRl
LkFGVEVSX1RSQUlMRVJTCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAg
ICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBmcmFt
ZV9kYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgX2NyZWF0ZV91bmlfc3Ry
ZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAg
IENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVuIHR5cGUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcXVpYy5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV90eXBlKSkK
KyAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIF9kZWNvZGVfaGVhZGVycyhzZWxm
LCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdKSAtPiBIZWFkZXJz
OgorICAgICAgICAiIiIKKyAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBk
ZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgorCisgICAgICAgIFRoaXMgaXMg
Y2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVjb21lcyB1bmJsb2Nr
ZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmcmFtZV9kYXRh
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNlbGYuX2RlY29k
ZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRfaGVhZGVyKHN0cmVh
bV9pZCwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfc2VudCAr
PSBsZW4oZGVjb2RlcikKKyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKKyAgICAgICAgZXhjZXB0IHB5
bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFFw
YWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCisKKyAgICAgICAgcmV0dXJuIGhlYWRl
cnMKKworICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRl
cnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAgICAgICAgRW5jb2RlIGEgSEVB
REVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVuY29kZXIgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9IHNlbGYuX2VuY29k
ZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fZW5jb2Rlcl9ieXRl
c19zZW50ICs9IGxlbihlbmNvZGVyKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCisgICAgICAgIHJldHVy
biBmcmFtZV9kYXRhCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9pZDogaW50KSAtPiBIM1N0cmVhbToKKyAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBpbiBzZWxm
Ll9zdHJlYW06CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXSA9IEgzU3RyZWFt
KHN0cmVhbV9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAg
ICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6IGludCwgZnJhbWVf
ZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFt
ZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6CisgICAgICAgICAgICBz
ZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbmNvZGVy
ID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICBtYXhfdGFi
bGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NBUEFDSVRZ
LCAwKSwKKyAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGluZ3MuZ2V0KFNldHRp
bmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9p
ZCwgZW5jb2RlcikKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5NQVhfUFVT
SF9JRDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBNQVhfUFVTSF9JRCIp
CisgICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9wdXNoX2lkKGZyYW1l
X2RhdGEpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCisgICAgICAgICAgICBGcmFtZVR5
cGUuREFUQSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5EVVBMSUNBVEVfUFVT
SCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSW52YWxp
ZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKKworICAgIGRlZiBfaGFuZGxlX3JlcXVl
c3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJhbWVfdHlwZTogaW50
LAorICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCisgICAgICAgIHN0cmVhbTog
SDNTdHJlYW0sCisgICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICApIC0+IExpc3RbSDNF
dmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFtZSByZWNlaXZlZCBvbiBh
IHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBodHRwX2V2ZW50
czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5
cGUuREFUQToKKyAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAg
ICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRlcnNTdGF0ZS5BRlRF
Ul9IRUFERVJTOgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBm
cmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAgICAgaWYgc3Ry
ZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lk
PXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0
cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6CisgICAgICAgICAgICAjIGNo
ZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRl
cnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2Vk
IGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICAgICAjIHRyeSB0byBkZWNvZGUgSEVBREVSUywg
bWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCisgICAgICAgICAgICBoZWFkZXJzID0g
c2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKKworICAg
ICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAg
ICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2Vu
Y29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9
c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZnJh
bWVfZGF0YSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxlbihmcmFtZV9k
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB1cGRhdGUgc3Rh
dGUgYW5kIGVtaXQgaGVhZGVycworICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNfcmVjdl9z
dGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgICAgICBzdHJlYW0uaGVh
ZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lk
LAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgc3RyZWFtLmZyYW1lX3R5cGUgPT0gRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgcmFpc2UgRnJhbWVV
bmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNFIikKKyAgICAgICAg
ICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCisgICAgICAgICAgICBwdXNo
X2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgaGVhZGVycyA9IHNl
bGYuX2RlY29kZV9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsIGZy
YW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50
PSJmcmFtZV9wYXJzZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX3B1
c2hfcHJvbWlzZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPWxl
bihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbWl0IGV2ZW50CisgICAg
ICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgUHVzaFByb21pc2VS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLCBwdXNoX2lkPXB1
c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBSSU9SSVRZLAorICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNFTF9QVVNILAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgRnJhbWVUeXBlLlBVU0hf
UFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCisgICAgICAgICAgICBGcmFt
ZVR5cGUuTUFYX1BVU0hfSUQsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRFX1BVU0gs
CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoCisgICAgICAg
ICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVhbSIKKyAgICAgICAg
ICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCisgICAgICAgICAgICAgICAgZWxzZSAi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAg
ICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9pbml0X2Nvbm5lY3Rpb24oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncworICAgICAgICBzZWxmLl9sb2Nh
bF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKFN0cmVhbVR5cGUu
Q09OVFJPTCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAg
ICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCisgICAgICAgICAgICBlbmNvZGVfZnJh
bWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgICAg
IGVuY29kZV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNlbGYuX21heF90YWJs
ZV9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tfQkxPQ0tF
RF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBp
ZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgICAgIHNl
bGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGVuY29kZV9mcmFt
ZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxmLl9tYXhfcHVzaF9p
ZCkpLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgY3JlYXRlIGVuY29kZXIgYW5kIGRlY29k
ZXIgc3RyZWFtcworICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9pZCA9IHNlbGYu
X2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAgICAgICAgU3RyZWFtVHlwZS5RUEFDS19FTkNPREVS
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQgPSBzZWxm
Ll9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RF
UgorICAgICAgICApCisKKyAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoCisg
ICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1fZW5kZWQ6
IGJvb2wKKyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIi
IgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgc3Ry
ZWFtLmJ1ZmZlciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAg
IHN0cmVhbS5lbmRlZCA9IFRydWUKKyAgICAgICAgaWYgc3RyZWFtLmJsb2NrZWQ6CisgICAgICAg
ICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIHNob3J0Y3V0IGZvciBEQVRBIGZy
YW1lIGZyYWdtZW50cworICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfdHlw
ZSA9PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV9zaXplIGlz
IG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIpIDwgc3RyZWFtLmZy
YW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9c3Ry
ZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBsZW4oc3RyZWFtLmJ1
ZmZlcikKKyAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHJldHVy
biBodHRwX2V2ZW50cworCisgICAgICAgICMgaGFuZGxlIGxvbmUgRklOCisgICAgICAgIGlmIHN0
cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICBodHRwX2V2ZW50
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPWIiIiwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1bWVkID0gMAorCisg
ICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZldGNoIG5leHQgZnJh
bWUgaGVhZGVyCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3R5cGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9z
aXplID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJS
ZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29u
c3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV90eXBlID09IEZy
YW1lVHlwZS5EQVRBCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdv
cnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2RhdGFfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFtLmZyYW1lX3NpemUs
IHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgaG93IG11Y2ggZGF0
YSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc3RyZWFtLmZyYW1l
X3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQorICAgICAgICAgICAgaWYgc3RyZWFtLmZy
YW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBzdHJlYW0uZnJhbWVf
c2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIHJlYWQgYXZhaWxh
YmxlIGRhdGEKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9ieXRlcyhjaHVua19z
aXplKQorICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICMg
ZGV0ZWN0IGVuZCBvZiBmcmFtZQorICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgLT0gY2h1
bmtfc2l6ZQorICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXplOgorICAgICAgICAg
ICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2RhdGE9ZnJhbWVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVuZGVkIGFu
ZCBidWYuZW9mKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6CisgICAgICAgICAgICAg
ICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWRf
ZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAgICAgICAgc3RyZWFt
LmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgIHJldHVybiBodHRw
X2V2ZW50cworCisgICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAgc2Vs
Ziwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9vbAorICAg
ICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0g
PSBbXQorCisgICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAgICBpZiBzdHJlYW1f
ZW5kZWQ6CisgICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgY29uc3VtZWQgPSAwCisgICAgICAg
IHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCisKKyAgICAgICAgd2hpbGUgc3Ry
ZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVmLmVvZigpOgorICAg
ICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9uYWwgc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5cGUgPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50
ZWxsKCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQorICAgICAgICAgICAgICAg
IGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9yKCJPbmx5IG9u
ZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVI6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNvZGVyIHN0
cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFtLnN0cmVhbV9pZAor
ICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBB
Q0tfRU5DT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9lbmNvZGVyX3N0
cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0cmVh
bUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIFFQ
QUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQgPSBzdHJl
YW0uc3RyZWFtX2lkCisKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJl
YW1UeXBlLkNPTlRST0w6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0IGZyYW1lCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9i
eXRlcyhmcmFtZV9sZW5ndGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb250cm9sX2ZyYW1l
KGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBwdXNoIGlk
CisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2hfaWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFk
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMgcmVtb3ZlIHByb2Nl
c3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgICAgICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0
cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
Y2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbV9lbmRlZCkKKyAg
ICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBBQ0tfREVD
T0RFUjoKKyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBkZWNvZGVyCisg
ICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50
ZWxsKCkpCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyLmZlZWRfZGVjb2Rl
cihkYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVjb2RlclN0cmVhbUVy
cm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvZGVyU3RyZWFt
RXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfcmVj
ZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9
PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAgIyBmZWVkIHVuZnJh
bWVkIGRhdGEgdG8gZW5jb2RlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRl
cyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdW5i
bG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNvZGVyKGRhdGEpKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVhbUVycm9yIGFzIGV4
YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoKSBm
cm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgKz0g
bGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgdW5rbm93biBz
dHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCisgICAgICAgICAgICAgICAgYnVmLnNlZWsoYnVmLmNh
cGFjaXR5KQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAg
ICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgIHN0cmVhbS5idWZm
ZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAjIHByb2Nlc3MgdW5ibG9j
a2VkIHN0cmVhbXMKKyAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2NrZWRfc3RyZWFtczoK
KyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAgICAgICAg
ICAgICMgcmVzdW1lIGhlYWRlcnMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQgYW5kIG5v
dCBzdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0cmVhbS5ibG9ja2Vk
X2ZyYW1lX3NpemUgPSBOb25lCisKKyAgICAgICAgICAgICMgcmVzdW1lIHByb2Nlc3NpbmcKKyAg
ICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVz
aF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QyMWM1YWJjNDI3MGMyZThmMWJlNThhMDA5YWU3NTI4MTJkMWExNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMucHkK
QEAgLTAsMCArMSw2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK0hlYWRlcnMgPSBMaXN0W1R1
cGxlW2J5dGVzLCBieXRlc11dCisKKworY2xhc3MgSDNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBIVFRQLzMgZXZlbnRzLgorICAgICIiIgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IERhdGFSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYSBzdHJlYW0gZnJvbQor
ICAgIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRo
ZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJU
aGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworICAgIHN0
cmVhbV9lbmRlZDogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBG
SU4gYml0IHNldC4iCisKKyAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICJU
aGUgUHVzaCBJRCBvciBgTm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBIZWFkZXJzUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIEhl
YWRlcnNSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBoZWFkZXJzIGFyZSByZWNlaXZl
ZC4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhlYWRlcnMKKyAgICAiVGhlIGhlYWRlcnMuIgor
CisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGhlYWRl
cnMgd2VyZSByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBib29sCisgICAgIldo
ZXRoZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHB1c2hf
aWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9yIGBOb25lYCBpZiB0
aGlzIGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFB1c2hQcm9taXNlUmVj
ZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFB1c2hlZFN0cmVhbVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcHVzaGVkIHN0cmVhbSBoYXMgYmVlbgorICAgIHJlY2Vp
dmVkIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICIiIgorCisgICAgaGVhZGVyczogSGVhZGVy
cworICAgICJUaGUgcmVxdWVzdCBoZWFkZXJzLiIKKworICAgIHB1c2hfaWQ6IGludAorICAgICJU
aGUgUHVzaCBJRCBvZiB0aGUgcHVzaCBwcm9taXNlLiIKKworICAgIHN0cmVhbV9pZDogaW50Cisg
ICAgIlRoZSBTdHJlYW0gSUQgb2YgdGhlIHN0cmVhbSB0aGF0IHRoZSBwdXNoIGlzIHJlbGF0ZWQg
dG8uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTIwMGMxZDYxZmE1YjNhMTE1YjQzNDY0ZDU2N2VhM2FhMjg1NzZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKQEAgLTAsMCAr
MSwxMCBAQAorY2xhc3MgSDNFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xh
c3MgZm9yIEhUVFAvMyBleGNlcHRpb25zLgorICAgICIiIgorCisKK2NsYXNzIE5vQXZhaWxhYmxl
UHVzaElERXJyb3IoSDNFcnJvcik6CisgICAgIiIiCisgICAgVGhlcmUgYXJlIG5vIGF2YWlsYWJs
ZSBwdXNoIElEcyBsZWZ0LgorICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL3cz
Yy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzYzZTliNjA4MGIwZWYzZThiZDY4YWE1MzMwMjQ5
ZGZmMTIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2gzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRzLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9w
eS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTY0MmY3OWYyMWQ4NzJmMDEwOTc5ZGNmNmYwYzRhNDE1YWNj
MTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVk
CkBAIC0wLDAgKzEgQEAKK01hcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2lu
aXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJj
MjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19p
bml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29u
ZmlndXJhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZpZ3VyYXRp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3ZjNlYTYxZDBkYTA3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZp
Z3VyYXRpb24ucHkKQEAgLTAsMCArMSwxMjQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcywgZmllbGQKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4dElPLCBVbmlvbgorCitmcm9tIC4udGxzIGltcG9y
dCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9wcml2YXRlX2tleSwgbG9hZF9wZW1feDUwOV9jZXJ0
aWZpY2F0ZXMKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJvbSAucGFja2V0IGlt
cG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0NvbmZp
Z3VyYXRpb246CisgICAgIiIiCisgICAgQSBRVUlDIGNvbmZpZ3VyYXRpb24uCisgICAgIiIiCisK
KyAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICAiIiIK
KyAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFMUE4gcHJvdG9jb2xzLgorICAgICIiIgorCisgICAg
Y29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9IDgKKyAgICAiIiIKKyAgICBUaGUgbGVuZ3RoIGlu
IGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24gSURzLgorICAgICIiIgorCisgICAgaWRsZV90aW1l
b3V0OiBmbG9hdCA9IDYwLjAKKyAgICAiIiIKKyAgICBUaGUgaWRsZSB0aW1lb3V0IGluIHNlY29u
ZHMuCisKKyAgICBUaGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkIGlmIG5vdGhpbmcgaXMgcmVj
ZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KKyAgICAiIiIKKworICAgIGlzX2NsaWVudDog
Ym9vbCA9IFRydWUKKyAgICAiIiIKKyAgICBXaGV0aGVyIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRl
IG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBtYXhfZGF0YTogaW50ID0g
MTA0ODU3NgorICAgICIiIgorICAgIENvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQu
CisgICAgIiIiCisKKyAgICBtYXhfc3RyZWFtX2RhdGE6IGludCA9IDEwNDg1NzYKKyAgICAiIiIK
KyAgICBQZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIKKworICAgIHF1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyXSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUgOmNs
YXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5RdWljTG9nZ2VyYCBpbnN0YW5jZSB0byBsb2cgZXZl
bnRzIHRvLgorICAgICIiIgorCisgICAgc2VjcmV0c19sb2dfZmlsZTogVGV4dElPID0gTm9uZQor
ICAgICIiIgorICAgIEEgZmlsZS1saWtlIG9iamVjdCBpbiB3aGljaCB0byBsb2cgdHJhZmZpYyBz
ZWNyZXRzLgorCisgICAgVGhpcyBpcyB1c2VmdWwgdG8gYW5hbHl6ZSB0cmFmZmljIGNhcHR1cmVz
IHdpdGggV2lyZXNoYXJrLgorICAgICIiIgorCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgIiIiCisgICAgVGhlIHNlcnZlciBuYW1lIHRvIHNlbmQgZHVyaW5nIHRo
ZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgorCisgICAgLi4gbm90
ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNsaWVudHMuCisgICAgIiIiCisKKyAgICBzZXNzaW9u
X3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgIiIiCisgICAgVGhl
IFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3Igc2Vzc2lvbiByZXN1
bXB0aW9uLgorICAgICIiIgorCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNhcGF0aDogT3B0aW9uYWxbc3Ry
XSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0ZTogQW55ID0gTm9uZQorICAgIGNlcnRpZmljYXRlX2No
YWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKyAgICBtYXhfZGF0
YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBwcml2YXRlX2tleTog
QW55ID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzX3Rlc3Q6IGJvb2wgPSBGYWxzZQorICAg
IHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRf
ZmFjdG9yeT1sYW1iZGE6IFsKKyAgICAgICAgICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRf
MjcsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI2LAorICAgICAgICAg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICAgICAgXQorICAgICkKKyAgICB2
ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBsb2FkX2NlcnRfY2hh
aW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNlcnRmaWxlOiBQYXRoTGlrZSwKKyAgICAgICAg
a2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2VdID0gTm9uZSwKKyAgICAgICAgcGFzc3dvcmQ6IE9w
dGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBj
ZXJ0aWZpY2F0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3BlbihjZXJ0ZmlsZSwgInJi
IikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBsb2FkX3BlbV94NTA5X2NlcnRp
ZmljYXRlcyhmcC5yZWFkKCkpCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0
ZXNbMF0KKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbiA9IGNlcnRpZmljYXRlc1sxOl0K
KworICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVu
KGtleWZpbGUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNlbGYucHJpdmF0ZV9rZXkg
PSBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgZnAucmVhZCgpLAor
ICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZC5lbmNvZGUoInV0ZjgiKQorICAg
ICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhc3N3b3JkLCBzdHIpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGxv
YWRfdmVyaWZ5X2xvY2F0aW9ucygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgY2FmaWxlOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9y
aXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvCisgICAgICAgIHZhbGlkYXRlIG90aGVyIHBl
ZXJzJyBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNhZmlsZSA9IGNh
ZmlsZQorICAgICAgICBzZWxmLmNhcGF0aCA9IGNhcGF0aAorICAgICAgICBzZWxmLmNhZGF0YSA9
IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVj
dGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDYxZGY0ZmMxOTE2ZmRhM2VmYjQ2MWU2NjczNGVjMzU5YWUwYzMyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkK
QEAgLTAsMCArMSwyNjUyIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3MKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGRhdGFjbGFzc2VzIGlt
cG9ydCBkYXRhY2xhc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueSwgRGVxdWUsIERpY3QsIEZyb3plblNldCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBU
dXBsZQorCitmcm9tIC4uIGltcG9ydCB0bHMKK2Zyb20gLi5idWZmZXIgaW1wb3J0IFVJTlRfVkFS
X01BWCwgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIHNpemVfdWludF92YXIKK2Zyb20gLiBpbXBv
cnQgZXZlbnRzCitmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgor
ZnJvbSAuY3J5cHRvIGltcG9ydCBDcnlwdG9FcnJvciwgQ3J5cHRvUGFpciwgS2V5VW5hdmFpbGFi
bGVFcnJvcgorZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tl
dCBpbXBvcnQgKAorICAgIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tF
VF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9U
WVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVS
T19SVFQsCisgICAgUFJPQklOR19GUkFNRV9UWVBFUywKKyAgICBSRVRSWV9JTlRFR1JJVFlfVEFH
X1NJWkUsCisgICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIFF1aWNQ
cm90b2NvbFZlcnNpb24sCisgICAgUXVpY1N0cmVhbUZyYW1lLAorICAgIFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzLAorICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAgIGdldF9zcGluX2Jp
dCwKKyAgICBpc19sb25nX2hlYWRlciwKKyAgICBwdWxsX2Fja19mcmFtZSwKKyAgICBwdWxsX3F1
aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKyAgICBwdXNo
X2Fja19mcmFtZSwKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCispCitmcm9t
IC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgKAorICAgIFBBQ0tFVF9NQVhfU0laRSwKKyAgICBRdWlj
RGVsaXZlcnlTdGF0ZSwKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAgICBRdWljUGFja2V0QnVp
bGRlclN0b3AsCispCitmcm9tIC5yZWNvdmVyeSBpbXBvcnQgS19HUkFOVUxBUklUWSwgUXVpY1Bh
Y2tldFJlY292ZXJ5LCBRdWljUGFja2V0U3BhY2UKK2Zyb20gLnN0cmVhbSBpbXBvcnQgUXVpY1N0
cmVhbQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicXVpYyIpCisKK0VQT0NIX1NIT1JU
Q1VUUyA9IHsKKyAgICAiSSI6IHRscy5FcG9jaC5JTklUSUFMLAorICAgICJIIjogdGxzLkVwb2No
LkhBTkRTSEFLRSwKKyAgICAiMCI6IHRscy5FcG9jaC5aRVJPX1JUVCwKKyAgICAiMSI6IHRscy5F
cG9jaC5PTkVfUlRULAorfQorTUFYX0VBUkxZX0RBVEEgPSAweEZGRkZGRkZGCitTRUNSRVRTX0xB
QkVMUyA9IFsKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX0NMSUVOVF9FQVJM
WV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NMSUVOVF9IQU5EU0hBS0VfVFJBRkZJ
Q19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAg
XSwKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX1NF
UlZFUl9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19TRVJWRVJfVFJB
RkZJQ19TRUNSRVRfMCIsCisgICAgXSwKK10KK1NUUkVBTV9GTEFHUyA9IDB4MDcKKworTmV0d29y
a0FkZHJlc3MgPSBBbnkKKworIyBmcmFtZSBzaXplcworQUNLX0ZSQU1FX0NBUEFDSVRZID0gNjQg
ICMgRklYTUU6IHRoaXMgaXMgYXJiaXRyYXJ5IQorQVBQTElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQ
QUNJVFkgPSAxICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCitIQU5EU0hBS0VfRE9ORV9GUkFN
RV9DQVBBQ0lUWSA9IDEKK01BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK01BWF9TVFJF
QU1fREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOAorTkVXX0NPTk5FQ1RJT05fSURfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyAxICsgMjAgKyAxNgorUEFUSF9DSEFMTEVOR0VfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOAorUEFUSF9SRVNQT05TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4
CitQSU5HX0ZSQU1FX0NBUEFDSVRZID0gMQorUkVUSVJFX0NPTk5FQ1RJT05fSURfQ0FQQUNJVFkg
PSAxICsgOAorU1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZID0gMSArIDgKK1RSQU5TUE9SVF9DTE9T
RV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCisKKwor
ZGVmIEVQT0NIUyhzaG9ydGN1dDogc3RyKSAtPiBGcm96ZW5TZXRbdGxzLkVwb2NoXToKKyAgICBy
ZXR1cm4gZnJvemVuc2V0KEVQT0NIX1NIT1JUQ1VUU1tpXSBmb3IgaSBpbiBzaG9ydGN1dCkKKwor
CitkZWYgZHVtcF9jaWQoY2lkOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVybiBiaW5hc2NpaS5o
ZXhsaWZ5KGNpZCkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIGdldF9lcG9jaChwYWNrZXRfdHlw
ZTogaW50KSAtPiB0bHMuRXBvY2g6CisgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVf
SU5JVElBTDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5JTklUSUFMCisgICAgZWxpZiBwYWNr
ZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9aRVJPX1JUVDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9j
aC5aRVJPX1JUVAorICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSEFORFNIQUtF
OgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgIGVsc2U6CisgICAgICAg
IHJldHVybiB0bHMuRXBvY2guT05FX1JUVAorCisKK2RlZiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUg
aWYgdGhlIHN0cmVhbSBpcyBjbGllbnQgaW5pdGlhdGVkLgorICAgICIiIgorICAgIHJldHVybiBu
b3QgKHN0cmVhbV9pZCAmIDEpCisKKworZGVmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJl
YW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUgaWYgdGhlIHN0
cmVhbSBpcyB1bmlkaXJlY3Rpb25hbC4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbChzdHJlYW1f
aWQgJiAyKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uRXJyb3IoRXhjZXB0aW9uKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBlOiBpbnQsIHJlYXNv
bl9waHJhc2U6IHN0cik6CisgICAgICAgIHNlbGYuZXJyb3JfY29kZSA9IGVycm9yX2NvZGUKKyAg
ICAgICAgc2VsZi5mcmFtZV90eXBlID0gZnJhbWVfdHlwZQorICAgICAgICBzZWxmLnJlYXNvbl9w
aHJhc2UgPSByZWFzb25fcGhyYXNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6Cisg
ICAgICAgIHMgPSAiRXJyb3I6ICVkLCByZWFzb246ICVzIiAlIChzZWxmLmVycm9yX2NvZGUsIHNl
bGYucmVhc29uX3BocmFzZSkKKyAgICAgICAgaWYgc2VsZi5mcmFtZV90eXBlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcyArPSAiLCBmcmFtZV90eXBlOiAlcyIgJSBzZWxmLmZyYW1lX3R5cGUK
KyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkFkYXB0ZXIobG9nZ2lu
Zy5Mb2dnZXJBZGFwdGVyKToKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBtc2c6IHN0ciwga3dhcmdz
OiBBbnkpIC0+IFR1cGxlW3N0ciwgQW55XToKKyAgICAgICAgcmV0dXJuICJbJXNdICVzIiAlIChz
ZWxmLmV4dHJhWyJpZCJdLCBtc2cpLCBrd2FyZ3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWlj
Q29ubmVjdGlvbklkOgorICAgIGNpZDogYnl0ZXMKKyAgICBzZXF1ZW5jZV9udW1iZXI6IGludAor
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMgPSBiIiIKKyAgICB3YXNfc2VudDogYm9v
bCA9IEZhbHNlCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25TdGF0ZShFbnVtKToKKyAgICBGSVJT
VEZMSUdIVCA9IDAKKyAgICBDT05ORUNURUQgPSAxCisgICAgQ0xPU0lORyA9IDIKKyAgICBEUkFJ
TklORyA9IDMKKyAgICBURVJNSU5BVEVEID0gNAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNO
ZXR3b3JrUGF0aDoKKyAgICBhZGRyOiBOZXR3b3JrQWRkcmVzcworICAgIGJ5dGVzX3JlY2VpdmVk
OiBpbnQgPSAwCisgICAgYnl0ZXNfc2VudDogaW50ID0gMAorICAgIGlzX3ZhbGlkYXRlZDogYm9v
bCA9IEZhbHNlCisgICAgbG9jYWxfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgcmVtb3RlX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisgICAgZGVmIGNh
bl9zZW5kKHNlbGYsIHNpemU6IGludCkgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNf
dmFsaWRhdGVkIG9yIChzZWxmLmJ5dGVzX3NlbnQgKyBzaXplKSA8PSAzICogc2VsZi5ieXRlc19y
ZWNlaXZlZAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNSZWNlaXZlQ29udGV4dDoKKyAgICBl
cG9jaDogdGxzLkVwb2NoCisgICAgaG9zdF9jaWQ6IGJ5dGVzCisgICAgbmV0d29ya19wYXRoOiBR
dWljTmV0d29ya1BhdGgKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbQW55
XV0KKyAgICB0aW1lOiBmbG9hdAorCisKK0VORF9TVEFURVMgPSBmcm96ZW5zZXQoCisgICAgWwor
ICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcsCisgICAgICAgIFF1aWNDb25uZWN0
aW9uU3RhdGUuRFJBSU5JTkcsCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRF
RCwKKyAgICBdCispCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb246CisgICAgIiIiCisgICAgQSBR
VUlDIGNvbm5lY3Rpb24uCisKKyAgICBUaGUgc3RhdGUgbWFjaGluZSBpcyBkcml2ZW4gYnkgdGhy
ZWUga2luZHMgb2Ygc291cmNlczoKKworICAgIC0gdGhlIEFQSSB1c2VyIHJlcXVlc3RpbmcgZGF0
YSB0byBiZSBzZW5kIG91dCAoc2VlIDptZXRoOmBjb25uZWN0YCwKKyAgICAgIDptZXRoOmBzZW5k
X3BpbmdgLCA6bWV0aDpgc2VuZF9kYXRhZ3JhbV9kYXRhYCBhbmQgOm1ldGg6YHNlbmRfc3RyZWFt
X2RhdGFgKQorICAgIC0gZGF0YSBiZWluZyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIChzZWUg
Om1ldGg6YHJlY2VpdmVfZGF0YWdyYW1gKQorICAgIC0gYSB0aW1lciBmaXJpbmcgKHNlZSA6bWV0
aDpgaGFuZGxlX3RpbWVyYCkKKworICAgIDpwYXJhbSBjb25maWd1cmF0aW9uOiBUaGUgUVVJQyBj
b25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3Vy
YXRpb24sCisgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lv
blRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjog
T3B0aW9uYWxbdGxzLlNlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgKSAtPiBOb25l
OgorICAgICAgICBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudDoKKyAgICAgICAgICAgIGFzc2Vy
dCAoCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBpcyBOb25lCisgICAg
ICAgICAgICApLCAiQ2Fubm90IHNldCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGZvciBhIGNsaWVu
dCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKSwgIlNT
TCBjZXJ0aWZpY2F0ZSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisgICAgICAgICAgICBhc3Nl
cnQgKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkgaXMgbm90IE5v
bmUKKyAgICAgICAgICAgICksICJTU0wgcHJpdmF0ZSBrZXkgaXMgcmVxdWlyZWQgZm9yIGEgc2Vy
dmVyIgorCisgICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9jb25maWd1cmF0
aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9pc19jbGllbnQgPSBjb25maWd1cmF0
aW9uLmlzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Fja19kZWxheSA9IEtfR1JBTlVMQVJJVFkK
KyAgICAgICAgc2VsZi5fY2xvc2VfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fY2xvc2VfZXZlbnQ6IE9wdGlvbmFsW2V2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZF0g
PSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fY3J5cHRvczogRGljdFt0bHMuRXBvY2gsIENyeXB0b1BhaXJdID0ge30KKyAgICAgICAgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnM6IERpY3RbdGxzLkVwb2NoLCBCdWZmZXJdID0ge30KKyAgICAgICAg
c2VsZi5fY3J5cHRvX3N0cmVhbXM6IERpY3RbdGxzLkVwb2NoLCBRdWljU3RyZWFtXSA9IHt9Cisg
ICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbZXZlbnRzLlF1aWNFdmVudF0gPSBkZXF1ZSgpCisg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX2hh
bmRzaGFrZV9jb25maXJtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ob3N0X2NpZHMgPSBbCisg
ICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAgIGNpZD1vcy51cmFu
ZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcj0wLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tl
bj1vcy51cmFuZG9tKDE2KSwKKyAgICAgICAgICAgICAgICB3YXNfc2VudD1UcnVlLAorICAgICAg
ICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBzZWxmLl9ob3N0X2Np
ZHNbMF0uY2lkCisgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSA9IDEKKyAgICAgICAgc2VsZi5f
bG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9sb2NhbF9hY3RpdmVf
Y29ubmVjdGlvbl9pZF9saW1pdCA9IDgKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGEgPSBj
b25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQg
PSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Vz
ZWQgPSAwCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0g
Y29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IGNvbmZpZ3VyYXRpb24ubWF4
X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGkgPSAxMjgK
KyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pID0gMTI4CisgICAgICAgIHNlbGYu
X2xvc3NfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmV0d29ya19w
YXRoczogTGlzdFtRdWljTmV0d29ya1BhdGhdID0gW10KKyAgICAgICAgc2VsZi5fb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZCA9IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgc2VsZi5fcGFj
aW5nX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9udW1i
ZXIgPSAwCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAg
ICBzZWxmLl9wZWVyX2NpZCA9IG9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lk
X2xlbmd0aCkKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6IExpc3RbUXVpY0Nvbm5lY3Rpb25J
ZF0gPSBbXQorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gYiIiCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZQorICAgICAgICBzZWxm
Ll9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9yZW1vdGVfYWN0
aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9pZGxlX3Rp
bWVvdXQgPSAwLjAgICMgc2Vjb25kcworICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGEgPSAw
CisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkID0gMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCA9IDAKKyAgICAgICAg
c2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IDAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtc19iaWRpID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5p
ID0gMAorICAgICAgICBzZWxmLl9zcGFjZXM6IERpY3RbdGxzLkVwb2NoLCBRdWljUGFja2V0U3Bh
Y2VdID0ge30KKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
cGluX2hpZ2hlc3RfcG4gPSAwCisgICAgICAgIHNlbGYuX3N0YXRlID0gUXVpY0Nvbm5lY3Rpb25T
dGF0ZS5GSVJTVEZMSUdIVAorICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgPSAw
CisgICAgICAgIHNlbGYuX3N0cmVhbXM6IERpY3RbaW50LCBRdWljU3RyZWFtXSA9IHt9CisgICAg
ICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOiBMaXN0W1F1aWNTdHJlYW1dID0gW10KKyAg
ICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaTogTGlzdFtRdWljU3RyZWFtXSA9IFtdCisg
ICAgICAgIHNlbGYuX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAgICAgIyBs
b2dnaW5nCisgICAgICAgIGlmIGxvZ2dlcl9jb25uZWN0aW9uX2lkIGlzIE5vbmU6CisgICAgICAg
ICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IFF1aWNDb25uZWN0aW9uQWRhcHRlcigKKyAgICAgICAgICAgIGxvZ2dlciwgeyJp
ZCI6IGR1bXBfY2lkKGxvZ2dlcl9jb25uZWN0aW9uX2lkKX0KKyAgICAgICAgKQorICAgICAgICBp
ZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIgPSBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnN0YXJ0X3RyYWNlKAorICAgICAgICAgICAg
ICAgIGlzX2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9bG9nZ2VyX2Nvbm5l
Y3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvc3MgcmVjb3ZlcnkKKyAgICAg
ICAgc2VsZi5fbG9zcyA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAgICAgIGlzX2NsaWVu
dF93aXRob3V0XzFydHQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAgcXVpY19sb2dnZXI9
c2VsZi5fcXVpY19sb2dnZXIsCisgICAgICAgICAgICBzZW5kX3Byb2JlPXNlbGYuX3NlbmRfcHJv
YmUsCisgICAgICAgICkKKworICAgICAgICAjIHRoaW5ncyB0byBzZW5kCisgICAgICAgIHNlbGYu
X2Nsb3NlX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzog
RGVxdWVbYnl0ZXNdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5k
aW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nOiBMaXN0W2ludF0gPSBbXQor
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmV0aXJl
X2Nvbm5lY3Rpb25faWRzOiBMaXN0W2ludF0gPSBbXQorICAgICAgICBzZWxmLl9zdHJlYW1zX2Js
b2NrZWRfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAgICAg
ICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIK
KworICAgICAgICAjIGZyYW1lIGhhbmRsZXJzCisgICAgICAgIHNlbGYuX19mcmFtZV9oYW5kbGVy
cyA9IHsKKyAgICAgICAgICAgIDB4MDA6IChzZWxmLl9oYW5kbGVfcGFkZGluZ19mcmFtZSwgRVBP
Q0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMTogKHNlbGYuX2hhbmRsZV9waW5nX2ZyYW1l
LCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAweDAyOiAoc2VsZi5faGFuZGxlX2Fja19m
cmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDAzOiAoc2VsZi5faGFuZGxlX2Fj
a19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA0OiAoc2VsZi5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MDU6IChz
ZWxmLl9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgwNjogKHNlbGYuX2hhbmRsZV9jcnlwdG9fZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAg
ICAgICAgICAgMHgwNzogKHNlbGYuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUsIEVQT0NIUygiMSIp
KSwKKyAgICAgICAgICAgIDB4MDg6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgwOTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQ
T0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBBOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEI6IChzZWxmLl9oYW5kbGVfc3RyZWFt
X2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQzogKHNlbGYuX2hhbmRsZV9z
dHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBEOiAoc2VsZi5faGFu
ZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEU6IChzZWxm
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwRjog
KHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDEwOiAoc2VsZi5faGFuZGxlX21heF9kYXRhX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICAgICAgMHgxMTogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUsIEVQT0NIUygi
MDEiKSksCisgICAgICAgICAgICAweDEyOiAoc2VsZi5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEzOiAoc2VsZi5faGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTQ6IChz
ZWxmLl9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgxNTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxNjogKHNlbGYuX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE3OiAoc2VsZi5faGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTg6IChz
ZWxmLl9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAg
ICAgICAgICAweDE5OiAoc2VsZi5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lLCBF
UE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQTogKHNlbGYuX2hhbmRsZV9wYXRoX2NoYWxs
ZW5nZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUI6IChzZWxmLl9oYW5k
bGVfcGF0aF9yZXNwb25zZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUM6
IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisg
ICAgICAgICAgICAweDFEOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUsIEVQ
T0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MUU6IChzZWxmLl9oYW5kbGVfaGFuZHNoYWtlX2Rv
bmVfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MzA6IChzZWxmLl9oYW5kbGVf
ZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDMxOiAoc2VsZi5f
aGFuZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICB9CisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgY29uZmlndXJhdGlvbihzZWxmKSAtPiBRdWljQ29uZmlndXJhdGlv
bjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBjaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU3dpdGNo
IHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBjb25uZWN0aW9uIElEIGFuZCByZXRpcmUKKyAgICAgICAg
dGhlIHByZXZpb3VzIG9uZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNh
bGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAgIHdo
aWNoIG5lZWRzIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wZWVy
X2NpZF9hdmFpbGFibGU6CisgICAgICAgICAgICAjIHJldGlyZSBwcmV2aW91cyBDSUQKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiUmV0aXJpbmcgQ0lE
ICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3BlZXJfY2lkX3NlcQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFw
cGVuZChzZWxmLl9wZWVyX2NpZF9zZXEpCisKKyAgICAgICAgICAgICMgYXNzaWduIG5ldyBDSUQK
KyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUucG9w
KDApCisgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSBjb25uZWN0aW9uX2lkLnNlcXVl
bmNlX251bWJlcgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBjb25uZWN0aW9uX2lkLmNp
ZAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJTd2l0
Y2hpbmcgdG8gQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3Bl
ZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKAorICAgICAgICBzZWxm
LAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQgPSBRdWljRXJyb3JDb2RlLk5PX0VSUk9SLAorICAg
ICAgICBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgcmVhc29uX3Bo
cmFzZTogc3RyID0gIiIsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xv
c2UgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgOnBhcmFtIGVycm9yX2NvZGU6IEFuIGVycm9y
IGNvZGUgaW5kaWNhdGluZyB3aHkgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJlaW5nIGNsb3NlZC4KKyAgICAgICAgOnBhcmFtIHJlYXNvbl9waHJhc2U6IEEg
aHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2Ygd2h5IHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisgICAgICAgICIiIgorICAg
ICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHNlbGYu
X2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IFRydWUKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBub3c6IGZsb2F0KSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2Uu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFu
ZCBhIHNpbmdsZSB0aW1lLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2Fs
bCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hp
Y2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsg
YWRkcmVzcyBvZiB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJy
ZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2Vs
Zi5faXNfY2xpZW50IGFuZCBub3Qgc2VsZi5fY29ubmVjdF9jYWxsZWQKKyAgICAgICAgKSwgImNv
bm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUi
CisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX25l
dHdvcmtfcGF0aHMgPSBbUXVpY05ldHdvcmtQYXRoKGFkZHIsIGlzX3ZhbGlkYXRlZD1UcnVlKV0K
KyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3Zl
cnNpb25zWzBdCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKworICAgIGRlZiBkYXRh
Z3JhbXNfdG9fc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBMaXN0W1R1cGxlW2J5dGVzLCBOZXR3
b3JrQWRkcmVzc11dOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBgKGRh
dGEsIGFkZHIpYCB0dXBsZXMgb2YgZGF0YWdyYW1zIHdoaWNoIG5lZWQgdG8gYmUKKyAgICAgICAg
c2VudCwgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MgdG8gd2hpY2ggdGhleSBuZWVkIHRvIGJlIHNl
bnQuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBnZXRf
dGltZXJgIHRvIGtub3cgd2hlbiB0aGUgbmV4dAorICAgICAgICB0aW1lciBuZWVkcyB0byBiZSBz
ZXQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgIiIi
CisgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX25ldHdvcmtfcGF0aHNbMF0KKworICAgICAg
ICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
KyAgICAgICAgIyBidWlsZCBkYXRhZ3JhbXMKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRC
dWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9c2VsZi5ob3N0X2NpZCwKKyAgICAgICAgICAg
IGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNl
bGYuX3BhY2tldF9udW1iZXIsCisgICAgICAgICAgICBwZWVyX2NpZD1zZWxmLl9wZWVyX2NpZCwK
KyAgICAgICAgICAgIHBlZXJfdG9rZW49c2VsZi5fcGVlcl90b2tlbiwKKyAgICAgICAgICAgIHF1
aWNfbG9nZ2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc3Bpbl9iaXQ9c2VsZi5f
c3Bpbl9iaXQsCisgICAgICAgICAgICB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24sCisgICAgICAgICkK
KyAgICAgICAgaWYgc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIGZvciBlcG9jaCwg
cGFja2V0X3R5cGUgaW4gKAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2guT05FX1JUVCwgUEFD
S0VUX1RZUEVfT05FX1JUVCksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5IQU5EU0hBS0Us
IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5JTklU
SUFMLCBQQUNLRVRfVFlQRV9JTklUSUFMKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg
ICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgICAgICBpZiBjcnlw
dG8uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1zZWxmLl9jbG9z
ZV9ldmVudC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1z
ZWxmLl9jbG9zZV9ldmVudC5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT1zZWxmLl9jbG9zZV9ldmVudC5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBGYWxz
ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi5fY2xvc2VfYmVn
aW4oaXNfaW5pdGlhdG9yPVRydWUsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAjIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5
dGVzID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuY29uZ2VzdGlvbl93aW5kb3cgLSBz
ZWxmLl9sb3NzLmJ5dGVzX2luX2ZsaWdodAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYg
c2VsZi5fcHJvYmVfcGVuZGluZyBhbmQgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVzIDwgUEFDS0VU
X01BWF9TSVpFOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IFBB
Q0tFVF9NQVhfU0laRQorCisgICAgICAgICAgICAjIGxpbWl0IGRhdGEgb24gdW4tdmFsaWRhdGVk
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRh
dGVkOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gKAorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKiAzIC0gbmV0d29ya19w
YXRoLmJ5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZDoKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIGVwb2NoIGluIFt0bHMuRXBvY2guSU5JVElBTCwgdGxzLkVwb2NoLkhB
TkRTSEFLRV06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9oYW5kc2hha2Uo
YnVpbGRlciwgZXBvY2gsIG5vdykKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9hcHBsaWNh
dGlvbihidWlsZGVyLCBuZXR3b3JrX3BhdGgsIG5vdykKKyAgICAgICAgICAgIGV4Y2VwdCBRdWlj
UGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorCisgICAgICAgIGlmIGRhdGFncmFtczoK
KyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgPSBidWlsZGVyLnBhY2tldF9udW1iZXIK
KworICAgICAgICAgICAgIyByZWdpc3RlciBwYWNrZXRzCisgICAgICAgICAgICBzZW50X2hhbmRz
aGFrZSA9IEZhbHNlCisgICAgICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAg
ICAgICAgICAgcGFja2V0LnNlbnRfdGltZSA9IG5vdworICAgICAgICAgICAgICAgIHNlbGYuX2xv
c3Mub25fcGFja2V0X3NlbnQoCisgICAgICAgICAgICAgICAgICAgIHBhY2tldD1wYWNrZXQsIHNw
YWNlPXNlbGYuX3NwYWNlc1twYWNrZXQuZXBvY2hdCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGlmIHBhY2tldC5lcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAg
ICAgICAgICAgICAgICBzZW50X2hhbmRzaGFrZSA9IFRydWUKKworICAgICAgICAgICAgICAgICMg
bG9nIHBhY2tldAorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfc2VudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBzZWxm
Ll9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFja2V0LnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXQucGFja2V0X251bWJlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IHBhY2tldC5z
ZW50X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBf
Y2lkKHNlbGYuaG9zdF9jaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
X2xvbmdfaGVhZGVyKHBhY2tldC5wYWNrZXRfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQi
OiBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcGFja2V0LnF1aWNfbG9n
Z2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBjYW4gZGlzY2FyZCBpbml0aWFsIGtl
eXMKKyAgICAgICAgICAgIGlmIHNlbnRfaGFuZHNoYWtlIGFuZCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5JVElBTCkKKwor
ICAgICAgICAjIHJldHVybiBkYXRhZ3JhbXMgdG8gc2VuZCBhbmQgdGhlIGRlc3RpbmF0aW9uIG5l
dHdvcmsgYWRkcmVzcworICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgZGF0YWdyYW0gaW4g
ZGF0YWdyYW1zOgorICAgICAgICAgICAgYnl0ZV9sZW5ndGggPSBsZW4oZGF0YWdyYW0pCisgICAg
ICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudCArPSBieXRlX2xlbmd0aAorICAgICAgICAg
ICAgcmV0LmFwcGVuZCgoZGF0YWdyYW0sIG5ldHdvcmtfcGF0aC5hZGRyKSkKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
dHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFncmFtc19zZW50IiwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogYnl0ZV9sZW5ndGgsICJj
b3VudCI6IDF9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAg
ZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw9
RmFsc2UpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3RyZWFtIElE
IGZvciB0aGUgbmV4dCBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGVuZHBvaW50LgorICAgICAgICAi
IiIKKyAgICAgICAgc3RyZWFtX2lkID0gKGludChpc191bmlkaXJlY3Rpb25hbCkgPDwgMSkgfCBp
bnQobm90IHNlbGYuX2lzX2NsaWVudCkKKyAgICAgICAgd2hpbGUgc3RyZWFtX2lkIGluIHNlbGYu
X3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW1faWQgKz0gNAorICAgICAgICByZXR1cm4gc3Ry
ZWFtX2lkCisKKyAgICBkZWYgZ2V0X3RpbWVyKHNlbGYpIC0+IE9wdGlvbmFsW2Zsb2F0XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgdGltZXIgc2hv
dWxkIGZpcmUgb3IgTm9uZSBpZiBubyB0aW1lciBpcyBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICB0aW1lcl9hdCA9IHNlbGYuX2Nsb3NlX2F0CisgICAgICAgIGlmIHNlbGYuX3N0YXRlIG5v
dCBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgIyBhY2sgdGltZXIKKyAgICAgICAgICAgIGZv
ciBzcGFjZSBpbiBzZWxmLl9sb3NzLnNwYWNlczoKKyAgICAgICAgICAgICAgICBpZiBzcGFjZS5h
Y2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8IHRpbWVyX2F0OgorICAgICAgICAg
ICAgICAgICAgICB0aW1lcl9hdCA9IHNwYWNlLmFja19hdAorCisgICAgICAgICAgICAjIGxvc3Mg
ZGV0ZWN0aW9uIHRpbWVyCisgICAgICAgICAgICBzZWxmLl9sb3NzX2F0ID0gc2VsZi5fbG9zcy5n
ZXRfbG9zc19kZXRlY3Rpb25fdGltZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9sb3NzX2F0IGlz
IG5vdCBOb25lIGFuZCBzZWxmLl9sb3NzX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAgICAgICAg
dGltZXJfYXQgPSBzZWxmLl9sb3NzX2F0CisKKyAgICAgICAgICAgICMgcGFjaW5nIHRpbWVyCisg
ICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3BhY2lu
Z19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fcGFjaW5n
X2F0CisKKyAgICAgICAgcmV0dXJuIHRpbWVyX2F0CisKKyAgICBkZWYgaGFuZGxlX3RpbWVyKHNl
bGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhl
IHRpbWVyLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpg
ZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2ggbmVlZHMg
dG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVudCB0aW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgIyBlbmQgb2YgY2xvc2luZyBwZXJpb2Qgb3IgaWRsZSB0aW1lb3V0
CisgICAgICAgIGlmIG5vdyA+PSBzZWxmLl9jbG9zZV9hdDoKKyAgICAgICAgICAgIGlmIHNlbGYu
X2Nsb3NlX2V2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQg
PSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJZGxl
IHRpbWVvdXQiLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Vu
ZCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uIHRpbWVv
dXQKKyAgICAgICAgaWYgc2VsZi5fbG9zc19hdCBpcyBub3QgTm9uZSBhbmQgbm93ID49IHNlbGYu
X2xvc3NfYXQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkxvc3MgZGV0ZWN0aW9u
IHRyaWdnZXJlZCIpCisgICAgICAgICAgICBzZWxmLl9sb3NzLm9uX2xvc3NfZGV0ZWN0aW9uX3Rp
bWVvdXQobm93PW5vdykKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpIC0+IE9wdGlvbmFsW2V2
ZW50cy5RdWljRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0cmlldmUgdGhlIG5leHQg
ZXZlbnQgZnJvbSB0aGUgZXZlbnQgYnVmZmVyLgorCisgICAgICAgIFJldHVybnMgYE5vbmVgIGlm
IHRoZXJlIGFyZSBubyBidWZmZXJlZCBldmVudHMuCisgICAgICAgICIiIgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcGxlZnQoKQorICAgICAgICBleGNl
cHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVjZWl2
ZV9kYXRhZ3JhbShzZWxmLCBkYXRhOiBieXRlcywgYWRkcjogTmV0d29ya0FkZHJlc3MsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYW4gaW5jb21pbmcg
ZGF0YWdyYW0uCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRo
OmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAgICB3aGljaCBuZWVk
cyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YWdyYW0gd2hpY2gg
d2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsgYWRkcmVzcyBm
cm9tIHdoaWNoIHRoZSBkYXRhZ3JhbSB3YXMgcmVjZWl2ZWQuCisgICAgICAgIDpwYXJhbSBub3c6
IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIHN0b3AgaGFuZGxpbmcg
cGFja2V0cyB3aGVuIGNsb3NpbmcKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRF
UzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2ZW50
PSJkYXRhZ3JhbXNfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9eyJieXRlX2xlbmd0
aCI6IGxlbihkYXRhKSwgImNvdW50IjogMX0sCisgICAgICAgICAgICApCisKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAg
ICAgICAgIHN0YXJ0X29mZiA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAgICAgICAgICAgICBi
dWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVu
Z3RoCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hlY2sgZGVzdGluYXRpb24g
Q0lEIG1hdGNoZXMKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXE6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBzZWxmLl9ob3N0X2Np
ZHM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCA9PSBjb25uZWN0
aW9uX2lkLmNpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSA9IGNv
bm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIGRlc3RpbmF0aW9uX2NpZF9zZXEgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YT17InRyaWdnZXIiOiAidW5rbm93bl9jb25uZWN0aW9uX2lkIn0sCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBjaGVjayBw
cm90b2NvbCB2ZXJzaW9uCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5f
aXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0
aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLnZlcnNpb24g
PT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTgorICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAgICAgICB2ZXJzaW9u
cyA9IFtdCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKGJ1Zi5wdWxsX3VpbnQzMigpKQorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBj
YXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNr
ZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInZlcnNpb25fbmVnb3RpYXRpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0
aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbW1vbiA9IHNldChz
ZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucykuaW50ZXJzZWN0aW9uKAorICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9ucworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY29tbW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZXJy
b3IoIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24iKQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRF
Uk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNvdWxkIG5vdCBmaW5kIGEgY29t
bW9uIHByb3RvY29sIHZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xWZXJzaW9uKG1heChj
b21tb24pKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJSZXRyeWluZyB3aXRo
ICVzIiwgc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1u
b3cpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmICgKKyAgICAgICAg
ICAgICAgICBoZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBo
ZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lv
bnMKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgIyB1bnN1cHBvcnRlZCB2ZXJzaW9u
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9
eyJ0cmlnZ2VyIjogInVuc3VwcG9ydGVkX3ZlcnNpb24ifSwKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGll
bnQgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRSWToKKyAgICAgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBzdGF0ZWxlc3MgcmV0cnkgaW50ZWdyaXR5IHRhZworICAgICAg
ICAgICAgICAgIGludGVncml0eV90YWcgPSBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uoc3RhcnRfb2ZmLCBidWYudGVsbCgpIC0gUkVU
UllfSU5URUdSSVRZX1RBR19TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IHNlbGYuaG9zdF9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgYW5kIGhlYWRlci5pbnRlZ3JpdHlfdGFnID09IGludGVncml0eV90YWcK
KyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQK
KyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJh
bnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2Vp
dmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInJldHJ5IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGlu
YXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJjZV9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGhlYWRlci50b2tlbgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgKz0gMQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUGVyZm9ybWluZyBzdGF0ZWxlc3MgcmV0cnkiKQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX2ZpbmRfbmV0d29y
a19wYXRoKGFkZHIpCisKKyAgICAgICAgICAgICMgc2VydmVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9zdGF0ZSA9PSBRdWljQ29u
bmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAg
ICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFM
CisgICAgICAgICAgICAgICAgKSwgImZpcnN0IHBhY2tldCBtdXN0IGJlIElOSVRJQUwiCisgICAg
ICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtuZXR3b3JrX3BhdGhdCisgICAgICAg
ICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24oaGVhZGVyLnZlcnNp
b24pCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZShoZWFkZXIuZGVzdGluYXRpb25f
Y2lkKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBjcnlwdG8gYW5kIHBhY2tldCBzcGFjZQor
ICAgICAgICAgICAgZXBvY2ggPSBnZXRfZXBvY2goaGVhZGVyLnBhY2tldF90eXBlKQorICAgICAg
ICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgIGlmIGVwb2No
ID09IHRscy5FcG9jaC5aRVJPX1JUVDoKKyAgICAgICAgICAgICAgICBzcGFjZSA9IHNlbGYuX3Nw
YWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgICAgICMgZGVjcnlwdCBw
YWNrZXQKKyAgICAgICAgICAgIGVuY3J5cHRlZF9vZmYgPSBidWYudGVsbCgpIC0gc3RhcnRfb2Zm
CisgICAgICAgICAgICBlbmRfb2ZmID0gYnVmLnRlbGwoKSArIGhlYWRlci5yZXN0X2xlbmd0aAor
ICAgICAgICAgICAgYnVmLnNlZWsoZW5kX29mZikKKworICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IGNy
eXB0by5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtzdGFydF9vZmY6
ZW5kX29mZl0sIGVuY3J5cHRlZF9vZmYsIHNwYWNlLmV4cGVjdGVkX3BhY2tldF9udW1iZXIKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgS2V5VW5hdmFpbGFibGVFcnJvciBh
cyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4YykKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIi
OiAia2V5X3VuYXZhaWxhYmxlIn0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IENyeXB0b0Vycm9yIGFzIGV4YzoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29y
eT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJv
cHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJwYXlsb2Fk
X2RlY3J5cHRfZXJyb3IifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgY2hlY2sgcmVzZXJ2ZWQgYml0cworICAgICAgICAg
ICAgaWYgaGVhZGVyLmlzX2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDBDCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDE4CisgICAgICAgICAgICBpZiBwbGFpbl9oZWFkZXJbMF0gJiByZXNlcnZlZF9tYXNr
OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
UmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyByYWlzZSBleHBlY3RlZCBwYWNrZXQgbnVt
YmVyCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UuZXhwZWN0ZWRfcGFja2V0
X251bWJlcjoKKyAgICAgICAgICAgICAgICBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVyID0g
cGFja2V0X251bWJlciArIDEKKworICAgICAgICAgICAgIyBsb2cgcGFja2V0CisgICAgICAgICAg
ICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0gTm9uZQorICAgICAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cXVpY19sb2dnZXJfZnJhbWVzID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAor
ICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBz
ZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXIucGFja2V0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldF9udW1iZXIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IGVuZF9vZmYgLSBzdGFydF9vZmYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGluYXRpb25fY2lk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5z
b3VyY2VfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZnJhbWVzIjogcXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkaXNjYXJkIGluaXRpYWwg
a2V5cyBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50
IGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIHNlbGYu
X2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwpCisKKyAgICAgICAgICAgICMgdXBkYXRl
IHN0YXRlCisgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NpZF9zZXEgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lkCisgICAgICAgICAg
ICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gMAorCisgICAgICAgICAgICBpZiBzZWxmLl9zdGF0
ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkKKworICAgICAgICAg
ICAgIyB1cGRhdGUgc3BpbiBiaXQKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXIuaXNfbG9uZ19o
ZWFkZXIgYW5kIHBhY2tldF9udW1iZXIgPiBzZWxmLl9zcGluX2hpZ2hlc3RfcG46CisgICAgICAg
ICAgICAgICAgc3Bpbl9iaXQgPSBnZXRfc3Bpbl9iaXQocGxhaW5faGVhZGVyWzBdKQorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c3Bpbl9iaXQgPSBub3Qgc3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Bpbl9oaWdoZXN0X3BuID0gcGFja2V0X251bWJlcgorCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJjb25uZWN0aXZpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InNwaW5fYml0
X3VwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InN0YXRlIjogc2VsZi5f
c3Bpbl9iaXR9LAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaGFuZGxl
IHBheWxvYWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBRdWljUmVjZWl2ZUNvbnRleHQoCisgICAg
ICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICAgICAgaG9zdF9jaWQ9aGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGg9bmV0d29ya19w
YXRoLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1xdWljX2xvZ2dlcl9mcmFt
ZXMsCisgICAgICAgICAgICAgICAgdGltZT1ub3csCisgICAgICAgICAgICApCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNfcHJvYmluZyA9IHNl
bGYuX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBsYWlu
X3BheWxvYWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUXVpY0Nvbm5l
Y3Rpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
ZXhjKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZXhjLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ZXhjLnJl
YXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fc3Rh
dGUgaW4gRU5EX1NUQVRFUyBvciBzZWxmLl9jbG9zZV9wZW5kaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgICAgICAjIHVwZGF0ZSBpZGxlIHRpbWVvdXQKKyAgICAgICAgICAg
IHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVvdXQK
KworICAgICAgICAgICAgIyBoYW5kbGUgbWlncmF0aW9uCisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgbm90IHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgICAgIGFuZCBjb250
ZXh0Lmhvc3RfY2lkICE9IHNlbGYuaG9zdF9jaWQKKyAgICAgICAgICAgICAgICBhbmQgZXBvY2gg
PT0gdGxzLkVwb2NoLk9ORV9SVFQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBzd2l0Y2hpbmcgdG8g
Q0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChjb250ZXh0Lmhvc3Rf
Y2lkKSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NpZCA9IGNvbnRleHQuaG9zdF9j
aWQKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgbmV0d29yayBwYXRoCisgICAgICAgICAgICBpZiBub3QgbmV0d29ya19w
YXRoLmlzX3ZhbGlkYXRlZCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICJOZXR3
b3JrIHBhdGggJXMgdmFsaWRhdGVkIGJ5IGhhbmRzaGFrZSIsIG5ldHdvcmtfcGF0aC5hZGRyCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5pc192YWxpZGF0
ZWQgPSBUcnVlCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKz0gZW5k
X29mZiAtIHN0YXJ0X29mZgorICAgICAgICAgICAgaWYgbmV0d29ya19wYXRoIG5vdCBpbiBzZWxm
Ll9uZXR3b3JrX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuYXBw
ZW5kKG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlkeCA9IHNlbGYuX25ldHdvcmtfcGF0aHMu
aW5kZXgobmV0d29ya19wYXRoKQorICAgICAgICAgICAgaWYgaWR4IGFuZCBub3QgaXNfcHJvYmlu
ZyBhbmQgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRoICVzIHByb21vdGVk
IiwgbmV0d29ya19wYXRoLmFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRo
cy5wb3AoaWR4KQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuaW5zZXJ0KDAs
IG5ldHdvcmtfcGF0aCkKKworICAgICAgICAgICAgIyByZWNvcmQgcGFja2V0IGFzIHJlY2VpdmVk
CisgICAgICAgICAgICBpZiBub3Qgc3BhY2UuZGlzY2FyZGVkOgorICAgICAgICAgICAgICAgIGlm
IHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfdGltZSA9IG5vdwor
ICAgICAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5hZGQocGFja2V0X251bWJlcikKKyAgICAg
ICAgICAgICAgICBpZiBpc19hY2tfZWxpY2l0aW5nIGFuZCBzcGFjZS5hY2tfYXQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc3BhY2UuYWNrX2F0ID0gbm93ICsgc2VsZi5fYWNrX2RlbGF5
CisKKyAgICBkZWYgcmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBSZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAg
ICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSwgImNhbm5v
dCBjaGFuZ2Uga2V5IGJlZm9yZSBoYW5kc2hha2UgY29tcGxldGVzIgorICAgICAgICBzZWxmLl9j
cnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXS51cGRhdGVfa2V5KCkKKworICAgIGRlZiBzZW5kX3Bp
bmcoc2VsZiwgdWlkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEg
UElORyBmcmFtZSB0byB0aGUgcGVlci4KKworICAgICAgICA6cGFyYW0gdWlkOiBBIHVuaXF1ZSBJ
RCBmb3IgdGhpcyBQSU5HLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5n
LmFwcGVuZCh1aWQpCisKKyAgICBkZWYgc2VuZF9kYXRhZ3JhbV9mcmFtZShzZWxmLCBkYXRhOiBi
eXRlcykgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBEQVRBR1JBTSBmcmFt
ZS4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLmFwcGVuZChkYXRhKQorCisgICAg
ZGVmIHNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRh
OiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBzcGVjaWZpYyBzdHJlYW0uCisKKyAgICAg
ICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSdzIElELgorICAgICAgICA6cGFyYW0gZGF0
YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAgOnBhcmFtIGVuZF9zdHJlYW06IElmIHNl
dCB0byBgVHJ1ZWAsIHRoZSBGSU4gYml0IHdpbGwgYmUgc2V0LgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSAhPSBzZWxmLl9pc19j
bGllbnQ6CisgICAgICAgICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYuX3N0cmVhbXM6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQgZGF0YSBvbiB1bmtu
b3duIHBlZXItaW5pdGlhdGVkIHN0cmVhbSIpCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfdW5p
ZGlyZWN0aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNlbmQgZGF0YSBvbiBwZWVyLWluaXRpYXRl
ZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXQorICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVh
bV9pZF0KKyAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSkK
KworICAgICMgUHJpdmF0ZQorCisgICAgZGVmIF9hbHBuX2hhbmRsZXIoc2VsZiwgYWxwbl9wcm90
b2NvbDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hpY2gg
aXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIEFMUE4gbmVnb3RpYXRpb24gY29tcGxl
dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuUHJv
dG9jb2xOZWdvdGlhdGVkKGFscG5fcHJvdG9jb2w9YWxwbl9wcm90b2NvbCkpCisKKyAgICBkZWYg
X2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJlYW1f
aWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVjaWZp
ZWQgc3RyZWFtIGNhbiByZWNlaXZlIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3JlY2VpdmUo
c3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwK
KyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAg
cmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHNlbmQtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJl
YW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVj
aWZpZWQgc3RyZWFtIGNhbiBzZW5kIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3NlbmQoc3Ry
ZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iU3RyZWFtIGlzIHJlY2VpdmUtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Nsb3NlX2JlZ2luKHNlbGYsIGlzX2luaXRpYXRvcjogYm9vbCwgbm93OiBmbG9hdCkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEJlZ2luIHRoZSBjbG9zZSBwcm9jZWR1cmUu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIDMgKiBzZWxmLl9s
b3NzLmdldF9wcm9iZV90aW1lb3V0KCkKKyAgICAgICAgaWYgaXNfaW5pdGlhdG9yOgorICAgICAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xPU0lORykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRl
LkRSQUlOSU5HKQorCisgICAgZGVmIF9jbG9zZV9lbmQoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEVuZCB0aGUgY2xvc2UgcHJvY2VkdXJlLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fY2xvc2VfYXQgPSBOb25lCisgICAgICAgIGZvciBlcG9jaCBpbiBzZWxmLl9zcGFj
ZXMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaChlcG9jaCkKKyAgICAg
ICAgc2VsZi5fZXZlbnRzLmFwcGVuZChzZWxmLl9jbG9zZV9ldmVudCkKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRFRCkKKworICAgICAgICAjIHNp
Z25hbCBsb2cgZW5kCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5lbmRfdHJhY2Uoc2Vs
Zi5fcXVpY19sb2dnZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IE5vbmUKKwor
ICAgIGRlZiBfY29ubmVjdChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgU3RhcnQgdGhlIGNsaWVudCBoYW5kc2hha2UuCisgICAgICAgICIiIgorICAgICAg
ICBhc3NlcnQgc2VsZi5faXNfY2xpZW50CisKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cg
KyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorICAgICAgICBzZWxmLl9pbml0aWFs
aXplKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgIHNlbGYudGxzLmhhbmRsZV9tZXNzYWdlKGIi
Iiwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEo
KQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBRdWlj
U3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgUVVJQyBzdHJlYW0gaW4gb3Jk
ZXIgdG8gc2VuZCBkYXRhIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAgICAgIyBkZXRl
cm1pbmUgbGltaXRzCisgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1f
aWQpOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gMAorICAgICAgICAgICAg
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5p
CisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkK
KyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYu
X2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQor
ICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQor
ICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkK
KworICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFt
c1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWw9bWF4X3N0cmVhbV9kYXRhX2xv
Y2FsLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFf
cmVtb3RlLAorICAgICAgICApCisKKyAgICAgICAgIyBtYXJrIHN0cmVhbSBhcyBibG9ja2VkIGlm
IG5lZWRlZAorICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3RyZWFtczoKKyAgICAg
ICAgICAgIHN0cmVhbS5pc19ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtc19ibG9j
a2VkLmFwcGVuZChzdHJlYW0pCisgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVu
ZGluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2Rpc2NhcmRf
ZXBvY2goc2VsZiwgZXBvY2g6IHRscy5FcG9jaCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCJEaXNjYXJkaW5nIGVwb2NoICVzIiwgZXBvY2gpCisgICAgICAgIHNlbGYuX2Ny
eXB0b3NbZXBvY2hdLnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5fbG9zcy5kaXNjYXJkX3NwYWNl
KHNlbGYuX3NwYWNlc1tlcG9jaF0pCisgICAgICAgIHNlbGYuX3NwYWNlc1tlcG9jaF0uZGlzY2Fy
ZGVkID0gVHJ1ZQorCisgICAgZGVmIF9maW5kX25ldHdvcmtfcGF0aChzZWxmLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gUXVpY05ldHdvcmtQYXRoOgorICAgICAgICAjIGNoZWNrIGV4aXN0aW5n
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgZm9yIGlkeCwgbmV0d29ya19wYXRoIGluIGVudW1lcmF0
ZShzZWxmLl9uZXR3b3JrX3BhdGhzKToKKyAgICAgICAgICAgIGlmIG5ldHdvcmtfcGF0aC5hZGRy
ID09IGFkZHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtfcGF0aAorCisgICAgICAg
ICMgbmV3IG5ldHdvcmsgcGF0aAorICAgICAgICBuZXR3b3JrX3BhdGggPSBRdWljTmV0d29ya1Bh
dGgoYWRkcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3JrIHBhdGggJXMgZGlz
Y292ZXJlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICByZXR1cm4gbmV0d29ya19wYXRo
CisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
c3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgorICAgICAgICBHZXQg
b3IgY3JlYXRlIGEgc3RyZWFtIGluIHJlc3BvbnNlIHRvIGEgcmVjZWl2ZWQgZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zLmdldChzdHJlYW1faWQsIE5v
bmUpCisgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgorICAgICAgICAgICAgIyBjaGVjayBpbml0
aWF0b3IKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9p
ZCkgPT0gc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5T
VFJFQU1fU1RBVEVfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iV3Jvbmcgc3RyZWFtIGlu
aXRpYXRvciIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBs
aW1pdHMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQp
OgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21h
eF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
ID0gMAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVh
bXNfdW5pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAg
ICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfbG9jYWwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX2xv
Y2FsX21heF9zdHJlYW1zX2JpZGkKKworICAgICAgICAgICAgIyBjaGVjayBtYXggc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPSJUb28gbWFueSBzdHJlYW1zIG9wZW4iLAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
IlN0cmVhbSAlZCBjcmVhdGVkIGJ5IHBlZXIiICUgc3RyZWFtX2lkKQorICAgICAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgKQorICAg
ICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2hhbmRsZV9zZXNzaW9uX3RpY2tldChzZWxm
LCBzZXNzaW9uX3RpY2tldDogdGxzLlNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXpl
ICE9IE1BWF9FQVJMWV9EQVRBCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVU
eXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJbnZhbGlkIG1heF9l
YXJseV9kYXRhIHZhbHVlICVzIgorICAgICAgICAgICAgICAgICUgc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcihzZXNzaW9uX3RpY2tldCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZShzZWxm
LCBwZWVyX2NpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICMgVExTCisgICAgICAgIHNlbGYu
dGxzID0gdGxzLkNvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9jb25m
aWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRhPXNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2NvbmZpZ3VyYXRpb24u
Y2FmaWxlLAorICAgICAgICAgICAgY2FwYXRoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwYXRoLAor
ICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKKyAgICAgICAgICAgIGxvZ2dl
cj1zZWxmLl9sb2dnZXIsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0YT1Ob25lIGlmIHNlbGYu
X2lzX2NsaWVudCBlbHNlIE1BWF9FQVJMWV9EQVRBLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgIHZlcmlmeV9tb2Rl
PXNlbGYuX2NvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi50bHMuY2VydGlmaWNhdGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRpZmljYXRlCisgICAg
ICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX2NoYWluID0gc2VsZi5fY29uZmlndXJhdGlvbi5jZXJ0
aWZpY2F0ZV9jaGFpbgorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSA9
IHNlbGYuX2NvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2VsZi50bHMuaGFuZHNo
YWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4
dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgXQorCisgICAgICAgICMgVExTIHNlc3Npb24gcmVzdW1wdGlvbgorICAgICAgICBzZXNz
aW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQKKyAgICAgICAg
aWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICBhbmQgc2Vzc2lv
bl90aWNrZXQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192
YWxpZAorICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LnNlcnZlcl9uYW1lID09IHNlbGYu
X2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYu
dGxzLnNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldAor
CisgICAgICAgICAgICAjIHBhcnNlIHNhdmVkIFFVSUMgdHJhbnNwb3J0IHBhcmFtZXRlcnMgLSBm
b3IgMC1SVFQKKyAgICAgICAgICAgIGlmIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3Np
emUgPT0gTUFYX0VBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZm9yIGV4dF90eXBlLCBleHRf
ZGF0YSBpbiBzZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAg
ICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGEsIGZyb21fc2Vz
c2lvbl90aWNrZXQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRMUyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi50bHMuYWxwbl9jYiA9IHNlbGYuX2FscG5faGFuZGxlcgorICAgICAgICBpZiBzZWxmLl9zZXNz
aW9uX3RpY2tldF9mZXRjaGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi50bHMuZ2V0
X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgorICAgICAg
ICBpZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc2VsZi50bHMubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5faGFuZGxlX3Nlc3Npb25f
dGlja2V0CisgICAgICAgIHNlbGYudGxzLnVwZGF0ZV90cmFmZmljX2tleV9jYiA9IHNlbGYuX3Vw
ZGF0ZV90cmFmZmljX2tleQorCisgICAgICAgICMgcGFja2V0IHNwYWNlcworICAgICAgICBzZWxm
Ll9jcnlwdG9zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IENyeXB0b1BhaXIo
KSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5aRVJPX1JUVDogQ3J5cHRvUGFpcigpLAorICAgICAg
ICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQ3J5cHRvUGFpcigpLAorICAgICAgICAgICAgdGxz
LkVwb2NoLk9ORV9SVFQ6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLl9j
cnlwdG9fYnVmZmVycyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNh
cGFjaXR5PTQwOTYpLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0b19zdHJlYW1zID0g
eworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAg
ICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBRdWljU3RyZWFtKCksCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5fc3Bh
Y2VzID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNQYWNrZXRTcGFjZSgp
LAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVpY1BhY2tldFNwYWNlKCksCisg
ICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogUXVpY1BhY2tldFNwYWNlKCksCisgICAgICAg
IH0KKworICAgICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5JTklUSUFMXS5zZXR1cF9pbml0
aWFsKAorICAgICAgICAgICAgY2lkPXBlZXJfY2lkLCBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50
LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvc3Mu
c3BhY2VzID0gbGlzdChzZWxmLl9zcGFjZXMudmFsdWVzKCkpCisgICAgICAgIHNlbGYuX3BhY2tl
dF9udW1iZXIgPSAwCisKKyAgICBkZWYgX2hhbmRsZV9hY2tfZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhbiBBQ0sgZnJh
bWUuCisgICAgICAgICIiIgorICAgICAgICBhY2tfcmFuZ2VzZXQsIGFja19kZWxheV9lbmNvZGVk
ID0gcHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFt
ZVR5cGUuQUNLX0VDTjoKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
ICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgYWNrX2RlbGF5ID0gKGFja19kZWxheV9lbmNvZGVkIDw8IHNlbGYuX3JlbW90ZV9h
Y2tfZGVsYXlfZXhwb25lbnQpIC8gMTAwMDAwMAorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoYWNrX3Jhbmdlc2V0LCBhY2tfZGVsYXkpCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAg
ICBzcGFjZT1zZWxmLl9zcGFjZXNbY29udGV4dC5lcG9jaF0sCisgICAgICAgICAgICBhY2tfcmFu
Z2VzZXQ9YWNrX3Jhbmdlc2V0LAorICAgICAgICAgICAgYWNrX2RlbGF5PWFja19kZWxheSwKKyAg
ICAgICAgICAgIG5vdz1jb250ZXh0LnRpbWUsCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxl
X2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENPTk5FQ1RJT05fQ0xPU0UgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBlcnJvcl9jb2RlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAg
ICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JUX0NMT1NFOgorICAg
ICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBOb25lCisgICAgICAgIHJlYXNvbl9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYXNvbl9waHJh
c2UgPSBidWYucHVsbF9ieXRlcyhyZWFzb25fbGVuZ3RoKS5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9
ICIiCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rpb25f
Y2xvc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
IkNvbm5lY3Rpb24gY2xvc2UgY29kZSAweCVYLCByZWFzb24gJXMiLCBlcnJvcl9jb2RlLCByZWFz
b25fcGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMu
Q29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUs
IGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9yPUZhbHNlLCBub3c9
Y29udGV4dC50aW1lKQorCisgICAgZGVmIF9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBDUllQ
VE8gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBvZmZzZXQgPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgb2Zm
c2V0ICsgbGVuZ3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5l
Y3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRlJB
TUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxlbmd0aCBjYW5ub3Qg
ZXhjZWVkIDJeNjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJhbWUgPSBRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpKQorCisg
ICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9fZnJhbWUoZnJhbWUp
CisgICAgICAgICAgICApCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNb
Y29udGV4dC5lcG9jaF0KKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgcGFzcyBkYXRhIHRv
IFRMUyBsYXllcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGxzLmhh
bmRsZV9tZXNzYWdlKGV2ZW50LmRhdGEsIHNlbGYuX2NyeXB0b19idWZmZXJzKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEoKQorICAgICAgICAgICAgZXhjZXB0IHRscy5B
bGVydCBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkNSWVBUT19FUlJP
UiArIGludChleGMuZGVzY3JpcHRpb24pLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBl
PWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9c3RyKGV4Yyks
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHBhcnNlIHRyYW5zcG9ydCBwYXJh
bWV0ZXJzCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX3BhcmFt
ZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgc2VsZi50bHMucmVjZWl2ZWRfZXh0
ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBmb3Ig
ZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlbGYudGxzLnJlY2VpdmVkX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90
cmFuc3BvcnRfcGFyYW1ldGVycyhleHRfZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICApLCAiTm8gUVVJQyB0cmFuc3Bv
cnQgcGFyYW1ldGVycyByZWNlaXZlZCIKKworICAgICAgICAgICAgIyB1cGRhdGUgY3VycmVudCBl
cG9jaAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSBhbmQgc2Vs
Zi50bHMuc3RhdGUgaW4gWworICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5DTElFTlRfUE9TVF9I
QU5EU0hBS0UsCisgICAgICAgICAgICAgICAgdGxzLlN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFL
RSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBs
ZXRlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBmb3Igc2VydmVycywgdGhlIGhhbmRzaGFr
ZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVu
dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFO
RFNIQUtFKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0g
VHJ1ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5pc19jbGllbnRfd2l0aG91dF8xcnR0
ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29ubmVjdGlvbl9pZHMo
KQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBh
bHBuX3Byb3RvY29sPXNlbGYudGxzLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVhcmx5X2RhdGFfYWNjZXB0ZWQ9c2VsZi50bHMuZWFybHlfZGF0YV9hY2NlcHRlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fcmVzdW1lZD1zZWxmLnRscy5zZXNzaW9u
X3Jlc3VtZWQsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNl
KQorICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
ICAgICAgICAiQUxQTiBuZWdvdGlhdGVkIHByb3RvY29sICVzIiwgc2VsZi50bHMuYWxwbl9uZWdv
dGlhdGVkCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1l
X3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBIYW5kbGUgYSBEQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBs
aW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKGxpbWl0PWxpbWl0KQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERBVEFHUkFNIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgIGlmIGZy
YW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSDoKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIHN0YXJ0CisgICAgICAgIGRhdGEgPSBidWYucHVs
bF9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICApCisKKyAgICAgICAg
IyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYu
X2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgaXMgTm9uZQorICAgICAgICAg
ICAgb3IgYnVmLnRlbGwoKSAtIHN0YXJ0ID49IHNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFn
cmFtX2ZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIs
CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuRGF0
YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9ZGF0YSkpCisKKyAgICBkZWYgX2hhbmRsZV9oYW5kc2hh
a2VfZG9uZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgSGFuZGxlIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJh
bWUoKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMiLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgwqBmb3IgY2xpZW50cywgdGhlIGhhbmRzaGFrZSBpcyBub3cgY29u
ZmlybWVkCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkOgorICAgICAg
ICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFORFNIQUtFKQorICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IFRydWUKKworICAgIGRlZiBfaGFuZGxlX21h
eF9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBNQVhfREFUQSBmcmFtZS4KKworICAgICAgICBUaGlzIGFkanVz
dHMgdGhlIHRvdGFsIGFtb3VudCBvZiB3ZSBjYW4gc2VuZCB0byB0aGUgcGVlci4KKyAgICAgICAg
IiIiCisgICAgICAgIG1heF9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShtYXhpbXVtPW1heF9k
YXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9kYXRhID4gc2VsZi5fcmVtb3Rl
X21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X2Rh
dGEgcmFpc2VkIHRvICVkIiwgbWF4X2RhdGEpCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4
X2RhdGEgPSBtYXhfZGF0YQorCisgICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhpcyBhZGp1c3RzIHRo
ZSBhbW91bnQgb2YgZGF0YSB3ZSBjYW4gc2VuZCBvbiBhIHNwZWNpZmljIHN0cmVhbS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
bWF4X3N0cmVhbV9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIG1heGltdW09bWF4X3N0cmVhbV9kYXRhLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFt
IGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1lX3R5
cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0
cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG1heF9zdHJlYW1fZGF0YSA+
IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgcmVtb3RlIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICBtYXhfc3RyZWFtX2RhdGEsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0u
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YQorCisgICAgZGVmIF9oYW5k
bGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfQklESSBmcmFtZS4K
KworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgYmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdl
IGNhbiBpbml0aWF0ZSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9zdHJl
YW1zID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5p
ZGlyZWN0aW9uYWw9RmFsc2UsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9yZW1vdGVf
bWF4X3N0cmVhbXNfYmlkaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiUmVtb3Rl
IG1heF9zdHJlYW1zX2JpZGkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMpCisgICAgICAgICAg
ICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSA9IG1heF9zdHJlYW1zCisgICAgICAgICAg
ICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCisKKyAgICBk
ZWYgX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6
IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1TX1VOSSBm
cmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgdW5pZGlyZWN0aW9uYWwgc3Ry
ZWFtcyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIiIgorICAgICAgICBt
YXhfc3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAgICAgICAgICAgICAg
IGlzX3VuaWRpcmVjdGlvbmFsPVRydWUsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfdW5pOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJS
ZW1vdGUgbWF4X3N0cmVhbXNfdW5pIHJhaXNlZCB0byAlZCIsIG1heF9zdHJlYW1zKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSA9IG1heF9zdHJlYW1zCisgICAgICAg
ICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKworICAg
IGRlZiBfaGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBORVdfQ09OTkVDVElP
Tl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGNvbm5lY3Rp
b25faWQgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisgICAgICAgIHN0YXRlbGVzc19yZXNldF90
b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgICAgICByZXRpcmVf
cHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXI9c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKworICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUuYXBwZW5kKAorICAg
ICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBjaWQ9Y29ubmVjdGlv
bl9pZCwKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyLAor
ICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxlc3NfcmVzZXRfdG9r
ZW4sCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX25ld190b2tl
bl9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFt
ZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgSGFuZGxlIGEgTkVXX1RPS0VOIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgbGVu
Z3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0b2tlbiA9IGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbmV3X3Rv
a2VuX2ZyYW1lKHRva2VuPXRva2VuKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVz
IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAg
ICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBi
dWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBh
IFBBRERJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGNvbnN1bWUgcGFkZGluZwor
ICAgICAgICBwb3MgPSBidWYudGVsbCgpCisgICAgICAgIGZvciBieXRlIGluIGJ1Zi5kYXRhX3Ns
aWNlKHBvcywgYnVmLmNhcGFjaXR5KToKKyAgICAgICAgICAgIGlmIGJ5dGU6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGJ1Zi5zZWVrKHBvcykK
KworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5k
bGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBBVEhfQ0hBTExFTkdFIGZyYW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisKKyAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9ZGF0
YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBjb250ZXh0Lm5ldHdvcmtfcGF0aC5yZW1vdGVf
Y2hhbGxlbmdlID0gZGF0YQorCisgICAgZGVmIF9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgK
KyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBp
bnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFu
ZGxlIGEgUEFUSF9SRVNQT05TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBi
dWYucHVsbF9ieXRlcyg4KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAg
ICBpZiBkYXRhICE9IGNvbnRleHQubmV0d29ya19wYXRoLmxvY2FsX2NoYWxsZW5nZToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iUmVz
cG9uc2UgZG9lcyBub3QgbWF0Y2ggY2hhbGxlbmdlIiwKKyAgICAgICAgICAgICkKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIk5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0
ZWQgYnkgY2hhbGxlbmdlIiwgY29udGV4dC5uZXR3b3JrX3BhdGguYWRkcgorICAgICAgICApCisg
ICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRydWUKKworICAgIGRl
ZiBfaGFuZGxlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZl
Q29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5kbGVfcmVzZXRf
c3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBSRVNFVF9TVFJFQU0gZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVycm9yX2NvZGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGZpbmFsX3NpemUgPSBidWYucHVsbF91aW50
X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBm
aW5hbF9zaXplPWZpbmFsX3NpemUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgIlN0cmVhbSAl
ZCByZXNldCBieSBwZWVyIChlcnJvciBjb2RlICVkLCBmaW5hbCBzaXplICVkKSIsCisgICAgICAg
ICAgICBzdHJlYW1faWQsCisgICAgICAgICAgICBlcnJvcl9jb2RlLAorICAgICAgICAgICAgZmlu
YWxfc2l6ZSwKKyAgICAgICAgKQorICAgICAgICAjIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVh
dGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFw
cGVuZCgKKyAgICAgICAgICAgIGV2ZW50cy5TdHJlYW1SZXNldChlcnJvcl9jb2RlPWVycm9yX2Nv
ZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3Jl
dGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVRJUkVfQ09OTkVDVElPTl9JRCBmcmFt
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nv
bm5lY3Rpb25faWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAg
ICAgICMgZmluZCB0aGUgY29ubmVjdGlvbiBJRCBieSBzZXF1ZW5jZSBudW1iZXIKKyAgICAgICAg
Zm9yIGluZGV4LCBjb25uZWN0aW9uX2lkIGluIGVudW1lcmF0ZShzZWxmLl9ob3N0X2NpZHMpOgor
ICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIgPT0gc2VxdWVuY2Vf
bnVtYmVyOgorICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuY2lkID09IGNvbnRleHQu
aG9zdF9jaWQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2Fubm90IHJldGly
ZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBy
ZXRpcmluZyBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgIGR1bXBfY2lkKGNvbm5l
Y3Rpb25faWQuY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9o
b3N0X2NpZHNbaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQoY29ubmVjdGlvbl9p
ZD1jb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAjIGlzc3VlIGEgbmV3IGNvbm5lY3Rpb24gSUQKKyAgICAgICAgc2Vs
Zi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25faWRzKCkKKworICAgIGRlZiBfaGFuZGxlX3N0b3Bfc2Vu
ZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgU1RPUF9TRU5ESU5HIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAg
ICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlcnJvcl9jb2RlID0g
YnVmLnB1bGxfdWludF92YXIoKSAgIyBhcHBsaWNhdGlvbiBlcnJvciBjb2RlCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBzdHJlYW1faWQ9c3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3Ry
ZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1l
X3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShm
cmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDQ6CisgICAgICAgICAgICBv
ZmZzZXQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBv
ZmZzZXQgPSAwCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiAyOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGgg
PiBVSU5UX1ZBUl9NQVg6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19F
UlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAt
IDEiLAorICAgICAgICAgICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAg
ICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMobGVuZ3RoKSwgZmlu
PWJvb2woZnJhbWVfdHlwZSAmIDEpCisgICAgICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKGZyYW1lLCBzdHJlYW1faWQ9c3RyZWFtX2lk
KQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAg
ICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0cmVhbV9p
ZCkKKworICAgICAgICAjIGNoZWNrIGZsb3ctY29udHJvbCBsaW1pdHMKKyAgICAgICAgc3RyZWFt
ID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorICAg
ICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsOgor
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SLAorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgbmV3bHlf
cmVjZWl2ZWQgPSBtYXgoMCwgb2Zmc2V0ICsgbGVuZ3RoIC0gc3RyZWFtLl9yZWN2X2hpZ2hlc3Qp
CisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKyBuZXdseV9yZWNlaXZlZCA+
IHNlbGYuX2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05U
Uk9MX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJPdmVyIGNvbm5lY3Rpb24gZGF0YSBsaW1pdCIsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5h
cHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKz0gbmV3bHlf
cmVjZWl2ZWQKKworICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTV9EQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJl
YW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgc3Ry
ZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVh
bV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fZ2V0
X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgZGVmIF9oYW5k
bGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVFJFQU1TX0JMT0NLRUQgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNG
cmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9
bGltaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF9vbl9h
Y2tfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwg
c3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgaGlnaGVzdF9hY2tlZDogaW50CisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhbiBBQ0sgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSA9PSBR
dWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5zdWJ0
cmFjdCgwLCBoaWdoZXN0X2Fja2VkICsgMSkKKworICAgIGRlZiBfb25faGFuZHNoYWtlX2RvbmVf
ZGVsaXZlcnkoc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIEhBTkRTSEFLRV9ET05FIGZyYW1lIGlz
IGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkg
IT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
ZG9uZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9vbl9tYXhfZGF0YV9kZWxpdmVyeShzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX0RBVEEgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxv
c3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0
ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgPSAwCisKKyAg
ICBkZWYgX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZl
cnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX1NUUkVBTV9EQVRBIGZy
YW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVs
aXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSAwCisKKyAgICBkZWYgX29uX25ld19jb25uZWN0aW9u
X2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTkVXX0NPTk5FQ1RJT05fSUQgZnJhbWUgaXMg
YWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAh
PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQud2Fz
X3NlbnQgPSBGYWxzZQorCisgICAgZGVmIF9vbl9waW5nX2RlbGl2ZXJ5KAorICAgICAgICBzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHVpZHM6IFNlcXVlbmNlW2ludF0KKyAgICAp
IC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgUElORyBmcmFt
ZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2
ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCJSZWNlaXZlZCBQSU5HJXMgcmVzcG9uc2UiLCAiIiBpZiB1aWRzIGVsc2UgIiAocHJv
YmUpIikKKyAgICAgICAgICAgIGZvciB1aWQgaW4gdWlkczoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9ldmVudHMuYXBwZW5kKGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKHVpZD11aWQpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmV4dGVuZCh1aWRzKQorCisg
ICAgZGVmIF9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwg
ZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzZXF1ZW5jZV9udW1iZXI6IGludAorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBSRVRJUkVfQ09O
TkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAg
ICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFwcGVuZChzZXF1ZW5jZV9udW1iZXIpCisK
KyAgICBkZWYgX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNS
ZWNlaXZlQ29udGV4dCwgcGxhaW46IGJ5dGVzCisgICAgKSAtPiBUdXBsZVtib29sLCBib29sXToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgcGFja2V0IHBheWxvYWQuCisgICAg
ICAgICIiIgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1wbGFpbikKKworICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nID0gRmFsc2UKKyAgICAgICAgaXNfcHJvYmluZyA9IE5vbmUKKyAgICAgICAg
d2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgdHlwZSBpcyBrbm93bgorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIsIGZyYW1lX2Vwb2No
cyA9IHNlbGYuX19mcmFtZV9oYW5kbGVyc1tmcmFtZV90eXBlXQorICAgICAgICAgICAgZXhjZXB0
IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9M
QVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5rbm93biBmcmFtZSB0eXBlIiwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgaXMgYWxsb3dlZCBmb3Ig
dGhlIGVwb2NoCisgICAgICAgICAgICBpZiBjb250ZXh0LmVwb2NoIG5vdCBpbiBmcmFtZV9lcG9j
aHM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIGZyYW1lIHR5cGUiLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGZyYW1lCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlcihjb250ZXh0LCBmcmFtZV90eXBlLCBi
dWYpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiLAorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgQUNLIG9ubHkgLyBwcm9iaW5nIGZsYWdzCisgICAgICAgICAgICBpZiBm
cmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAg
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBmcmFtZV90
eXBlIG5vdCBpbiBQUk9CSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgICAgIGlzX3Byb2Jp
bmcgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBpc19wcm9iaW5nIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgaXNfcHJvYmluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gaXNfYWNrX2VsaWNp
dGluZywgYm9vbChpc19wcm9iaW5nKQorCisgICAgZGVmIF9yZXBsZW5pc2hfY29ubmVjdGlvbl9p
ZHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIG5ldyBjb25u
ZWN0aW9uIElEcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9ob3N0X2Np
ZHMpIDwgbWluKDgsIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCk6Cisg
ICAgICAgICAgICBzZWxmLl9ob3N0X2NpZHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIFF1aWND
b25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgICAgIGNpZD1vcy51cmFuZG9tKHNlbGYuX2Nv
bmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXI9c2VsZi5faG9zdF9jaWRfc2VxLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRfc2VxICs9IDEKKworICAg
IGRlZiBfcHVzaF9jcnlwdG9fZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAgICBmb3IgZXBvY2gs
IGJ1ZiBpbiBzZWxmLl9jcnlwdG9fYnVmZmVycy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5f
Y3J5cHRvX3N0cmVhbXNbZXBvY2hdLndyaXRlKGJ1Zi5kYXRhKQorICAgICAgICAgICAgYnVmLnNl
ZWsoMCkKKworICAgIGRlZiBfc2VuZF9wcm9iZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9wYXJzZV90cmFuc3BvcnRfcGFyYW1l
dGVycygKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGZyb21fc2Vzc2lvbl90aWNrZXQ6IGJv
b2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWRhdGEpLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQor
CisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lIGFuZCBub3QgZnJvbV9zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0
IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAorICAgICAgICAgICAg
ICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgICAgICBvd25lcj0icmVtb3RlIiwgcGFyYW1ldGVycz1xdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIHZhbGlkYXRlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAgIGlmICgKKyAgICAgICAg
ICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIG5vdCBmcm9tX3Nlc3Npb25fdGlj
a2V0CisgICAgICAgICAgICBhbmQgKAorICAgICAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAgICAgICE9IHNlbGYu
X29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlRSQU5TUE9SVF9QQVJBTUVURVJfRVJST1IsCisgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGRvZXMgbm90IG1hdGNoIiwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIHN0b3JlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAg
IGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWNrX2RlbGF5X2V4cG9uZW50IGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCA9IHNlbGYu
X3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9ICgKKyAgICAgICAg
ICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0CisgICAgICAgICAgICApCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMu
aWRsZV90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2lkbGVf
dGltZW91dCA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuaWRsZV90aW1lb3V0IC8gMTAwMC4w
CisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvc3MubWF4X2Fja19kZWxheSA9IHF1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSAvIDEwMDAuMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgPSAoCisgICAgICAgICAgICBxdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplCisgICAgICAgICkKKyAgICAg
ICAgZm9yIHBhcmFtIGluIFsKKyAgICAgICAgICAgICJtYXhfZGF0YSIsCisgICAgICAgICAgICAi
bWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1fZGF0
YV9iaWRpX3JlbW90ZSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX3VuaSIsCisgICAg
ICAgICAgICAibWF4X3N0cmVhbXNfYmlkaSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbXNfdW5p
IiwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihxdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLCAiaW5pdGlhbF8iICsgcGFyYW0pCisgICAgICAgICAgICBpZiB2YWx1ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJfcmVtb3RlXyIgKyBw
YXJhbSwgdmFsdWUpCisKKyAgICBkZWYgX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFyYW1ldGVycyhz
ZWxmKSAtPiBieXRlczoKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycyA9IFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50PXNlbGYu
X2xvY2FsX2Fja19kZWxheV9leHBvbmVudCwKKyAgICAgICAgICAgIGFjdGl2ZV9jb25uZWN0aW9u
X2lkX2xpbWl0PXNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0LAorICAgICAg
ICAgICAgaWRsZV90aW1lb3V0PWludChzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dCAq
IDEwMDApLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT1zZWxmLl9sb2NhbF9tYXhfZGF0
YSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwsCisgICAgICAgICAgICBpbml0aWFsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9yZW1vdGUsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVh
bXNfYmlkaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpLAorICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtc191bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pLAorICAgICAgICAg
ICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PXNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUsCisgICAgICAgICAg
ICBxdWFudHVtX3JlYWRpbmVzcz1iIlEiICogMTIwMAorICAgICAgICAgICAgaWYgc2VsZi5fY29u
ZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190ZXN0CisgICAgICAgICAgICBlbHNlIE5vbmUs
CisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9ICgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgICAgICAp
CisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAg
ICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9
InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAgICAgb3duZXI9
ImxvY2FsIiwgcGFyYW1ldGVycz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9
MyAqIFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzKAorICAgICAgICAgICAgYnVmLCBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLCBwcm90b2Nv
bF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorICAgICAgICByZXR1cm4gYnVmLmRh
dGEKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0YXRlOiBRdWljQ29ubmVjdGlvblN0YXRl
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIiVzIC0+ICVzIiwgc2VsZi5f
c3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICBkZWYgX3N0
cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAgICAgc3RyZWFtX2lk
CisgICAgICAgICkgIT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgc3RyZWFt
X2lkOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZCgKKyAgICAgICAgICAgIHN0cmVhbV9pZAorICAgICAgICApID09IHNlbGYuX2lzX2NsaWVu
dCBvciBub3Qgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCkKKworICAgIGRlZiBf
dW5ibG9ja19zdHJlYW1zKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sKSAtPiBOb25lOgor
ICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaQorICAgICAgICAgICAg
bWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pCisgICAgICAgICAgICBz
dHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9z
dHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2Vs
Zi5fc3RyZWFtc19ibG9ja2VkX2JpZGkKKworICAgICAgICB3aGlsZSBzdHJlYW1zX2Jsb2NrZWQg
YW5kIHN0cmVhbXNfYmxvY2tlZFswXS5zdHJlYW1faWQgLy8gNCA8IG1heF9zdHJlYW1zOgorICAg
ICAgICAgICAgc3RyZWFtID0gc3RyZWFtc19ibG9ja2VkLnBvcCgwKQorICAgICAgICAgICAgc3Ry
ZWFtLmlzX2Jsb2NrZWQgPSBGYWxzZQorICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisKKyAgICAgICAgaWYgbm90IHNlbGYu
X3N0cmVhbXNfYmxvY2tlZF9iaWRpIGFuZCBub3Qgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaToK
KyAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKKworICAg
IGRlZiBfdXBkYXRlX3RyYWZmaWNfa2V5KAorICAgICAgICBzZWxmLAorICAgICAgICBkaXJlY3Rp
b246IHRscy5EaXJlY3Rpb24sCisgICAgICAgIGVwb2NoOiB0bHMuRXBvY2gsCisgICAgICAgIGNp
cGhlcl9zdWl0ZTogdGxzLkNpcGhlclN1aXRlLAorICAgICAgICBzZWNyZXQ6IGJ5dGVzLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBuZXcgdHJhZmZpYyBrZXlzIGFyZQorICAgICAgICBh
dmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gc2VsZi5f
Y29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlCisgICAgICAgIGlmIHNlY3JldHNfbG9nX2Zp
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYWJlbF9yb3cgPSBzZWxmLl9pc19jbGllbnQg
PT0gKGRpcmVjdGlvbiA9PSB0bHMuRGlyZWN0aW9uLkRFQ1JZUFQpCisgICAgICAgICAgICBsYWJl
bCA9IFNFQ1JFVFNfTEFCRUxTW2xhYmVsX3Jvd11bZXBvY2gudmFsdWVdCisgICAgICAgICAgICBz
ZWNyZXRzX2xvZ19maWxlLndyaXRlKAorICAgICAgICAgICAgICAgICIlcyAlcyAlc1xuIiAlIChs
YWJlbCwgc2VsZi50bHMuY2xpZW50X3JhbmRvbS5oZXgoKSwgc2VjcmV0LmhleCgpKQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZS5mbHVzaCgpCisKKyAgICAgICAg
Y3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgaWYgZGlyZWN0aW9uID09IHRs
cy5EaXJlY3Rpb24uRU5DUllQVDoKKyAgICAgICAgICAgIGNyeXB0by5zZW5kLnNldHVwKAorICAg
ICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsIHNlY3JldD1zZWNyZXQsIHZl
cnNpb249c2VsZi5fdmVyc2lvbgorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgY3J5cHRvLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWNp
cGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX3dyaXRlX2FwcGxpY2F0aW9uKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgbmV0d29ya19wYXRoOiBRdWljTmV0d29ya1BhdGgsIG5v
dzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0b19zdHJlYW06IE9wdGlvbmFs
W1F1aWNTdHJlYW1dID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5P
TkVfUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlw
dG9zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgY3J5cHRvX3N0cmVhbSA9IHNlbGYu
X2NyeXB0b19zdHJlYW1zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5
cGUgPSBQQUNLRVRfVFlQRV9PTkVfUlRUCisgICAgICAgIGVsaWYgc2VsZi5fY3J5cHRvc1t0bHMu
RXBvY2guWkVST19SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIGNyeXB0byA9IHNl
bGYuX2NyeXB0b3NbdGxzLkVwb2NoLlpFUk9fUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5cGUg
PSBQQUNLRVRfVFlQRV9aRVJPX1JUVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQorCisgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIGFwcGx5IHBhY2luZywgZXhjZXB0IGlmIHdl
IGhhdmUgQUNLcyB0byBzZW5kCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgTm9uZSBv
ciBzcGFjZS5hY2tfYXQgPj0gbm93OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhY2luZ19hdCA9
IHNlbGYuX2xvc3MuX3BhY2VyLm5leHRfc2VuZF90aW1lKG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0
bykKKworICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlOgorICAgICAgICAg
ICAgICAgICMgQUNLCisgICAgICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIG5vdCBOb25l
IGFuZCBzcGFjZS5hY2tfYXQgPD0gbm93OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKKworICAg
ICAgICAgICAgICAgICMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9o
YW5kc2hha2VfZG9uZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9o
YW5kc2hha2VfZG9uZV9mcmFtZShidWlsZGVyPWJ1aWxkZXIpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAgICAg
IyBQQVRIIENIQUxMRU5HRQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAg
ICAgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgYW5k
IG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgaXMgTm9uZQorICAgICAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA9IG9zLnVyYW5kb20oOCkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5nZT1jaGFsbGVuZ2UKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGgubG9jYWxf
Y2hhbGxlbmdlID0gY2hhbGxlbmdlCisKKyAgICAgICAgICAgICAgICAjIFBBVEggUkVTUE9OU0UK
KyAgICAgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9yZXNwb25zZV9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgY2hhbGxlbmdlPW5l
dHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgPSBOb25lCisKKyAg
ICAgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lECisgICAgICAgICAgICAgICAgZm9yIGNv
bm5lY3Rpb25faWQgaW4gc2VsZi5faG9zdF9jaWRzOgorICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgY29ubmVjdGlvbl9pZC53YXNfc2VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIFJFVElSRV9DT05ORUNUSU9O
X0lECisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzOgor
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBzZWxmLl9yZXRpcmVfY29ubmVj
dGlvbl9pZHMucG9wKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JldGlyZV9j
b25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLCBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICMgU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmc6CisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPVF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX0JJREksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0cmVhbXNf
YmxvY2tlZF91bmk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJlYW1z
X2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlw
ZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFs
c2UKKworICAgICAgICAgICAgICAgICMgTUFYX0RBVEEKKyAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb25uZWN0aW9uX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlKQorCisg
ICAgICAgICAgICAjIHN0cmVhbS1sZXZlbCBsaW1pdHMKKyAgICAgICAgICAgIGZvciBzdHJlYW0g
aW4gc2VsZi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9z
dHJlYW1fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1zdHJlYW0p
CisKKyAgICAgICAgICAgICMgUElORyAodXNlci1yZXF1ZXN0KQorICAgICAgICAgICAgaWYgc2Vs
Zi5fcGluZ19wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUo
YnVpbGRlciwgc2VsZi5fcGluZ19wZW5kaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdf
cGVuZGluZy5jbGVhcigpCisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUpCisgICAgICAgICAg
ICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Bp
bmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0icHJvYmUiKQorICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIENSWVBUTworICAgICAgICAg
ICAgaWYgY3J5cHRvX3N0cmVhbSBpcyBub3QgTm9uZSBhbmQgbm90IGNyeXB0b19zdHJlYW0uc2Vu
ZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY3J5cHRvX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBz
dHJlYW09Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBE
QVRBR1JBTQorICAgICAgICAgICAgd2hpbGUgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmc6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fZGF0YWdyYW1zX3BlbmRpbmdbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lU
SF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1zX3BlbmRpbmcucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IFF1
aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICAgICAgIyBTVFJFQU0KKyAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gc2VsZi5fc3RyZWFtcy52
YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyZWFtLmlzX2Jsb2NrZWQgYW5kIG5v
dCBzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3JlbW90ZV9tYXhfZGF0YV91c2VkICs9IHNlbGYuX3dyaXRlX3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vZmZzZXQ9bWluKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyBzZWxmLl9yZW1vdGVfbWF4X2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBidWlsZGVyLnBh
Y2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLl9wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9
bm93KQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2UoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBlcG9jaDogdGxzLkVwb2NoLCBub3c6IGZsb2F0CisgICAgKSAt
PiBOb25lOgorICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQorICAgICAgICBp
ZiBub3QgY3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGNyeXB0b19zdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9jaF0KKyAgICAgICAg
c3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5JTklUSUFMOgorICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlID0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRQorICAgICAgICAg
ICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykKKworICAgICAgICAg
ICAgIyBBQ0sKKyAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1z
cGFjZSwgbm93PW5vdykKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAgICAgICAgIGlmIG5v
dCBjcnlwdG9fc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1i
dWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKwor
ICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nCisgICAgICAgICAgICAgICAgYW5kIGVwb2NoID09IHRs
cy5FcG9jaC5IQU5EU0hBS0UKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX2hhbmRzaGFr
ZV9jb21wbGV0ZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9w
aW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgaWYgYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfd3JpdGVfYWNrX2Zy
YW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBjYWxj
dWxhdGUgQUNLIGRlbGF5CisgICAgICAgIGFja19kZWxheSA9IG5vdyAtIHNwYWNlLmxhcmdlc3Rf
cmVjZWl2ZWRfdGltZQorICAgICAgICBhY2tfZGVsYXlfZW5jb2RlZCA9IGludChhY2tfZGVsYXkg
KiAxMDAwMDAwKSA+PiBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQKKworICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ss
CisgICAgICAgICAgICBjYXBhY2l0eT1BQ0tfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBo
YW5kbGVyPXNlbGYuX29uX2Fja19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0o
c3BhY2UsIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0KSwKKyAgICAgICAgKQorICAgICAg
ICByYW5nZXMgPSBwdXNoX2Fja19mcmFtZShidWYsIHNwYWNlLmFja19xdWV1ZSwgYWNrX2RlbGF5
X2VuY29kZWQpCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5vbmUKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBy
YW5nZXM9c3BhY2UuYWNrX3F1ZXVlLCBkZWxheT1hY2tfZGVsYXkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBuZWVkIHRvIHRyaWdnZXIg
YW4gQUNLLW9mLUFDSworICAgICAgICBpZiByYW5nZXMgPiAxIGFuZCBidWlsZGVyLnBhY2tldF9u
dW1iZXIgJSA4ID09IDA6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5nX2ZyYW1lKGJ1aWxk
ZXIsIGNvbW1lbnQ9IkFDSy1vZi1BQ0sgdHJpZ2dlciIpCisKKyAgICBkZWYgX3dyaXRlX2Nvbm5l
Y3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQsCisgICAgICAgIGZyYW1lX3R5
cGU6IE9wdGlvbmFsW2ludF0sCisgICAgICAgIHJlYXNvbl9waHJhc2U6IHN0ciwKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHJlYXNvbl9ieXRlcyA9IHJlYXNvbl9waHJhc2UuZW5jb2RlKCJ1dGY4
IikKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGxlbihyZWFzb25fYnl0ZXMpCisKKyAgICAgICAg
aWYgZnJhbWVfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAor
ICAgICAgICAgICAgICAgIGNhcGFjaXR5PUFQUExJQ0FUSU9OX0NMT1NFX0ZSQU1FX0NBUEFDSVRZ
ICsgcmVhc29uX2xlbmd0aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKGVycm9yX2NvZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZWFzb25f
bGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5dGVzKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgICAgICAgICBj
YXBhY2l0eT1UUkFOU1BPUlRfQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25fbGVuZ3RoLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJyb3JfY29kZSkK
KyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgICAgICAgICBi
dWYucHVzaF91aW50X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0
ZXMocmVhc29uX2J5dGVzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2Rl
PWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9s
aW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTog
UXVpY1BhY2tldFNwYWNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFp
c2UgTUFYX0RBVEEgaWYgbmVlZGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbG9j
YWxfbWF4X2RhdGFfdXNlZCAqIDIgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAg
IHNlbGYuX2xvY2FsX21heF9kYXRhICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygiTG9jYWwgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgc2VsZi5fbG9jYWxfbWF4X2RhdGEpCisg
ICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgIT0gc2VsZi5fbG9jYWxfbWF4X2Rh
dGE6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9TUFY
X0RBVEFfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9t
YXhfZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4
X2RhdGFfc2VudCA9IHNlbGYuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShzZWxmLl9s
b2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2NyeXB0
b19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkgLT4gYm9vbDoKKyAg
ICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAzICsgc2l6ZV91aW50X3ZhcihzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCkKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkKQorICAgICAgICBpZiBmcmFtZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9
ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9k
ZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJh
bWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNldCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDApCisgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnVpbGRlci5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZyYW1lKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0
QnVpbGRlciwgZGF0YTogYnl0ZXMsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUKKyAgICApIC0+
IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIERBVEFHUkFNIGZyYW1lLgorCisg
ICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnJhbWUgd2FzIHByb2Nlc3NlZCwgRmFsc2Ugb3Ro
ZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGZyYW1lX3R5cGUgPT0gUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSAorICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkK
KyAgICAgICAgZnJhbWVfc2l6ZSA9IDEgKyBzaXplX3VpbnRfdmFyKGxlbmd0aCkgKyBsZW5ndGgK
KworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKGZyYW1lX3R5cGUsIGNhcGFjaXR5
PWZyYW1lX3NpemUpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbmd0aCkKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZGF0YSkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0aCkKKyAgICAgICAgICAgICkKKworICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2VfZG9uZV9mcmFtZShz
ZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlcikgLT4gTm9uZToKKyAgICAgICAgYnVpbGRl
ci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUs
CisgICAgICAgICAgICBjYXBhY2l0eT1IQU5EU0hBS0VfRE9ORV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25faGFuZHNoYWtlX2RvbmVfZGVsaXZlcnksCisgICAg
ICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtl
X2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9uZXdfY29ubmVj
dGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IHJldGlyZV9wcmlvcl90byA9IDAgICMgRklYTUUKKworICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09OTkVDVElPTl9JRCwK
KyAgICAgICAgICAgIGNhcGFjaXR5PU5FV19DT05ORUNUSU9OX0lEX0ZSQU1FX0NBUEFDSVRZLAor
ICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9uZXdfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwK
KyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oY29ubmVjdGlvbl9pZCwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyKQor
ICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZXRpcmVfcHJpb3JfdG8pCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQ4KGxlbihjb25uZWN0aW9uX2lkLmNpZCkpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGNvbm5lY3Rpb25faWQuY2lkKQorICAgICAgICBidWYucHVzaF9ieXRlcyhjb25uZWN0aW9uX2lk
LnN0YXRlbGVzc19yZXNldF90b2tlbikKKworICAgICAgICBjb25uZWN0aW9uX2lkLndhc19zZW50
ID0gVHJ1ZQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5Db25uZWN0aW9uSWRJ
c3N1ZWQoY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkpCisKKyAgICAgICAgIyBsb2cg
ZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkLAorICAgICAgICAg
ICAgICAgICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXI9Y29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1jb25uZWN0aW9uX2lkLnN0
YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK
KyAgICBkZWYgX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAgICkgLT4gTm9uZToK
KyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuUEFUSF9DSEFMTEVOR0UsIGNhcGFjaXR5PVBBVEhfQ0hBTExFTkdFX0ZSQU1FX0NBUEFD
SVRZCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY2hhbGxlbmdlKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShk
YXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGF0aF9yZXNw
b25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGNo
YWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsIGNhcGFj
aXR5PVBBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNf
bG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1jaGFsbGVuZ2UpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1
aWNQYWNrZXRCdWlsZGVyLCB1aWRzOiBMaXN0W2ludF0gPSBbXSwgY29tbWVudD0iIgorICAgICk6
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBl
LlBJTkcsCisgICAgICAgICAgICBjYXBhY2l0eT1QSU5HX0ZSQU1FX0NBUEFDSVRZLAorICAgICAg
ICAgICAgaGFuZGxlcj1zZWxmLl9vbl9waW5nX2RlbGl2ZXJ5LAorICAgICAgICAgICAgaGFuZGxl
cl9hcmdzPSh0dXBsZSh1aWRzKSwpLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICJTZW5kaW5nIFBJTkclcyBpbiBwYWNrZXQgJWQiLAorICAgICAg
ICAgICAgIiAoJXMpIiAlIGNvbW1lbnQgaWYgY29tbWVudCBlbHNlICIiLAorICAgICAgICAgICAg
YnVpbGRlci5wYWNrZXRfbnVtYmVyLAorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJhbWUK
KyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBi
dWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJh
bWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzZXF1ZW5jZV9u
dW1iZXI6IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisg
ICAgICAgICAgICBjYXBhY2l0eT1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBBQ0lUWSwKKyAgICAg
ICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRfZGVsaXZlcnksCisg
ICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHNlcXVlbmNlX251bWJlciwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNlcXVlbmNlX251bWJlcikKKworICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoc2Vx
dWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fZnJh
bWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBzdHJlYW06IFF1aWNTdHJl
YW0sCisgICAgICAgIG1heF9vZmZzZXQ6IGludCwKKyAgICApIC0+IGludDoKKyAgICAgICAgIyB0
aGUgZnJhbWUgZGF0YSBzaXplIGlzIGNvbnN0cmFpbmVkIGJ5IG91ciBwZWVyJ3MgTUFYX0RBVEEg
YW5kCisgICAgICAgICMgdGhlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwYWNrZXQK
KyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAoCisgICAgICAgICAgICAzCisgICAgICAgICAgICAr
IHNpemVfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAgICAgICsgKHNpemVfdWlu
dF92YXIoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQpIGlmIHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
IGVsc2UgMCkKKyAgICAgICAgKQorICAgICAgICBwcmV2aW91c19zZW5kX2hpZ2hlc3QgPSBzdHJl
YW0uX3NlbmRfaGlnaGVzdAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoCisgICAg
ICAgICAgICBidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFtZV9vdmVyaGVhZCwg
bWF4X29mZnNldAorICAgICAgICApCisKKyAgICAgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDIgICMg
bGVuZ3RoCisgICAgICAgICAgICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAgICAgICAgICAgZnJh
bWVfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSB8PSAxCisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9ZnJh
bWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9kZWxp
dmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJhbWUu
b2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAgICBpZiBmcmFtZS5v
ZmZzZXQ6CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWUub2Zmc2V0KQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8IDB4NDAwMCkKKyAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAgICMgbG9n
IGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0
dXJuIHN0cmVhbS5fc2VuZF9oaWdoZXN0IC0gcHJldmlvdXNfc2VuZF9oaWdoZXN0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fbGlt
aXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmFpc2UgTUFYX1NUUkVBTV9EQVRBIGlmIG5lZWRlZC4KKworICAgICAg
ICBUaGUgb25seSBjYXNlIHdoZXJlIGBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsYCBpcyB6
ZXJvIGlzIGZvcgorICAgICAgICBsb2NhbGx5IGNyZWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFt
cy4gV2Ugc2tpcCBzdWNoIHN0cmVhbXMgdG8gYXZvaWQKKyAgICAgICAgc3B1cmlvdXMgbG9nZ2lu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uX3JlY3ZfaGlnaGVzdCAqIDIg
PiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICk6CisgICAgICAgICAgICBz
dHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIGxvY2FsIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwKKyAgICAgICAgICAgICkK
KyAgICAgICAgaWYgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ICE9IHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAg
ICAgICAgICAgICAgIGNhcGFjaXR5PU1BWF9TVFJFQU1fREFUQV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHN0cmVhbSwpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwpCisgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBzdHJlYW0ubWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVy
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhpbXVtPXN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIHN0cmVhbV9pZD1z
dHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUsIGxp
bWl0OiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9U1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZKQorICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihsaW1pdCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBp
c191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9D
S0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNkMzU4NzM0YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkK
QEAgLTAsMCArMSwxOTYgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB0eXBpbmcgaW1wb3J0IE9w
dGlvbmFsLCBUdXBsZQorCitmcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwgQ3J5cHRvRXJyb3Is
IEhlYWRlclByb3RlY3Rpb24KK2Zyb20gLi50bHMgaW1wb3J0IENpcGhlclN1aXRlLCBjaXBoZXJf
c3VpdGVfaGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAorZnJvbSAucGFja2V0
IGltcG9ydCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIKKworQ0lQSEVSX1NV
SVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6IChiImFlcy0xMjgt
ZWNiIiwgYiJhZXMtMTI4LWdjbSIpLAorICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4
NDogKGIiYWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCisgICAgQ2lwaGVyU3VpdGUuQ0hB
Q0hBMjBfUE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hhMjAtcG9seTEzMDUi
KSwKK30KK0lOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hB
MjU2CitJTklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVmNzEyYzcyZWJiNWEx
MWE3ZDI0MzJiYjQ2MzY1YmVmOWY1MDIiKQorU0FNUExFX1NJWkUgPSAxNgorCisKK2NsYXNzIEtl
eVVuYXZhaWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgorICAgIHBhc3MKKworCitkZWYgZGVyaXZl
X2tleV9pdl9ocCgKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNyZXQ6IGJ5dGVz
CispIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgorICAgIGFsZ29yaXRobSA9IGNpcGhl
cl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICBpZiBjaXBoZXJfc3VpdGUgaW4gWworICAg
ICAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAgIENpcGhlclN1aXRl
LkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICBdOgorICAgICAgICBrZXlfc2l6ZSA9IDMy
CisgICAgZWxzZToKKyAgICAgICAga2V5X3NpemUgPSAxNgorICAgIHJldHVybiAoCisgICAgICAg
IGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMga2V5IiwgYiIiLCBr
ZXlfc2l6ZSksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBi
InF1aWMgaXYiLCBiIiIsIDEyKSwKKyAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGht
LCBzZWNyZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAorICAgICkKKworCitjbGFzcyBD
cnlwdG9Db250ZXh0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhhc2U6IGludCA9IDAp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0gPSBOb25lCisgICAg
ICAgIHNlbGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9uZQorICAgICAgICBz
ZWxmLmtleV9waGFzZSA9IGtleV9waGFzZQorICAgICAgICBzZWxmLnNlY3JldDogT3B0aW9uYWxb
Ynl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25l
CisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMs
IGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAg
KSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06CisgICAgICAgIGlmIHNlbGYuYWVh
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVFcnJvcigiRGVjcnlw
dGlvbiBrZXkgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlv
bgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxmLmhwLnJlbW92ZShw
YWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQpCisgICAgICAgIGZpcnN0X2J5dGUgPSBwbGFpbl9oZWFk
ZXJbMF0KKworICAgICAgICAjIHBhY2tldCBudW1iZXIKKyAgICAgICAgcG5fbGVuZ3RoID0gKGZp
cnN0X2J5dGUgJiAweDAzKSArIDEKKyAgICAgICAgcGFja2V0X251bWJlciA9IGRlY29kZV9wYWNr
ZXRfbnVtYmVyKAorICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVuZ3RoICogOCwgZXhw
ZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgIyBkZXRlY3Qga2V5IHBo
YXNlIGNoYW5nZQorICAgICAgICBjcnlwdG8gPSBzZWxmCisgICAgICAgIGlmIG5vdCBpc19sb25n
X2hlYWRlcihmaXJzdF9ieXRlKToKKyAgICAgICAgICAgIGtleV9waGFzZSA9IChmaXJzdF9ieXRl
ICYgNCkgPj4gMgorICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYua2V5X3BoYXNlOgor
ICAgICAgICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYpCisKKyAgICAgICAg
IyBwYXlsb2FkIHByb3RlY3Rpb24KKyAgICAgICAgcGF5bG9hZCA9IGNyeXB0by5hZWFkLmRlY3J5
cHQoCisgICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0sIHBsYWluX2hlYWRl
ciwgcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRl
ciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKKworICAgIGRlZiBlbmNy
eXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5
bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6CisgICAgICAg
IGFzc2VydCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxl
IgorCisgICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHByb3RlY3RlZF9wYXls
b2FkID0gc2VsZi5hZWFkLmVuY3J5cHQoCisgICAgICAgICAgICBwbGFpbl9wYXlsb2FkLCBwbGFp
bl9oZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgICMgaGVhZGVyIHBy
b3RlY3Rpb24KKyAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5faGVhZGVyLCBwcm90
ZWN0ZWRfcGF5bG9hZCkKKworICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCisKKyAgICBkZWYgc2V0dXAoc2VsZiwgY2lw
aGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lvbjogaW50KSAtPiBO
b25lOgorICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFtZSA9IENJUEhFUl9T
VUlURVNbY2lwaGVyX3N1aXRlXQorCisgICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9p
dl9ocChjaXBoZXJfc3VpdGUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hZWFkID0gQUVBRChhZWFk
X2NpcGhlcl9uYW1lLCBrZXksIGl2KQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhl
cl9zdWl0ZQorICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbihocF9jaXBoZXJfbmFt
ZSwgaHApCisgICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0CisgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24KKworICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmFlYWQgPSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gTm9uZQorICAgICAg
ICBzZWxmLmhwID0gTm9uZQorICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUKKworCitkZWYgYXBw
bHlfa2V5X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5cHRvQ29udGV4dCkg
LT4gTm9uZToKKyAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAorICAgIHNlbGYua2V5X3BoYXNl
ID0gY3J5cHRvLmtleV9waGFzZQorICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRvLnNlY3JldAorCisK
K2RlZiBuZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBDcnlwdG9Db250ZXh0
OgorICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lwaGVyX3N1aXRlKQor
CisgICAgY3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5vdCBzZWxmLmtleV9w
aGFzZSkpCisgICAgY3J5cHRvLnNldHVwKAorICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5jaXBo
ZXJfc3VpdGUsCisgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAg
IGFsZ29yaXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplCisgICAgICAgICksCisgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAorICAgICkK
KyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3MgQ3J5cHRvUGFpcjoKKyAgICBkZWYgX19pbml0
X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXplID0gMTYKKyAgICAg
ICAgc2VsZi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYuc2VuZCA9IENyeXB0
b0NvbnRleHQoKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCisK
KyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVu
Y3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAgKSAt
PiBUdXBsZVtieXRlcywgYnl0ZXMsIGludF06CisgICAgICAgIHBsYWluX2hlYWRlciwgcGF5bG9h
ZCwgcGFja2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNyeXB0X3BhY2tldCgK
KyAgICAgICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0ZWRfcGFja2V0X251
bWJlcgorICAgICAgICApCisgICAgICAgIGlmIHVwZGF0ZV9rZXk6CisgICAgICAgICAgICBzZWxm
Ll91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFj
a2V0X251bWJlcgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwbGFp
bl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjogaW50
CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQ6
CisgICAgICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vu
ZC5lbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1i
ZXIpCisKKyAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVzLCBpc19jbGllbnQ6
IGJvb2wsIHZlcnNpb246IGludCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAg
ICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGluIiwgYiJjbGllbnQg
aW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xhYmVsID0g
YiJjbGllbnQgaW4iLCBiInNlcnZlciBpbiIKKworICAgICAgICBhbGdvcml0aG0gPSBjaXBoZXJf
c3VpdGVfaGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKKyAgICAgICAgaW5pdGlhbF9zZWNyZXQg
PSBoa2RmX2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkKKyAgICAgICAgc2Vs
Zi5yZWN2LnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NV
SVRFLAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAg
ICAgIGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIiIiwgYWxnb3JpdGht
LmRpZ2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9u
LAorICAgICAgICApCisgICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhl
cl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCBz
ZW5kX2xhYmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgKQorCisgICAgZGVmIHRlYXJkb3du
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigpCisgICAgICAgIHNl
bGYuc2VuZC50ZWFyZG93bigpCisKKyAgICBkZWYgdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgorICAgICAgICBpZiBzZWxmLl91cGRh
dGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHJldHVybiBpbnQobm90IHNlbGYucmVjdi5r
ZXlfcGhhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWN2Lmtl
eV9waGFzZQorCisgICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFw
cGx5X2tleV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYucmVjdikpCisgICAg
ICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNlKHNlbGYuc2VuZCkp
CisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMwNjkzOTM2YzE4ODE2YWUx
MTgzMjZkMmEyMjUxMjk1MjQ1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitmcm9tIGRhdGFjbGFz
c2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCisKK2Ns
YXNzIFF1aWNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBRVUlDIGV2ZW50cy4K
KyAgICAiIiIKKworICAgIHBhc3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uSWRJ
c3N1ZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9uX2lkOiBieXRlcworCisKK0BkYXRhY2xh
c3MKK2NsYXNzIENvbm5lY3Rpb25JZFJldGlyZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9u
X2lkOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25UZXJtaW5hdGVkKFF1
aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIENvbm5lY3Rpb25UZXJtaW5hdGVkIGV2ZW50IGlz
IGZpcmVkIHdoZW4gdGhlIFFVSUMgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkLgorICAgICIiIgor
CisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHdoaWNoIHdhcyBzcGVj
aWZpZWQgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiIKKworICAgIGZyYW1lX3R5cGU6IE9w
dGlvbmFsW2ludF0KKyAgICAiVGhlIGZyYW1lIHR5cGUgd2hpY2ggY2F1c2VkIHRoZSBjb25uZWN0
aW9uIHRvIGJlIGNsb3NlZCwgb3IgYE5vbmVgLiIKKworICAgIHJlYXNvbl9waHJhc2U6IHN0cgor
ICAgICJUaGUgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB3aGljaCB0aGUgY29ubmVjdGlvbiB3
YXMgY2xvc2VkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
UXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YWdyYW1GcmFtZVJlY2VpdmVkIGV2ZW50
IGlzIGZpcmVkIHdoZW4gYSBEQVRBR1JBTSBmcmFtZSBpcyByZWNlaXZlZC4KKyAgICAiIiIKKwor
ICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKwor
QGRhdGFjbGFzcworY2xhc3MgSGFuZHNoYWtlQ29tcGxldGVkKFF1aWNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIEhhbmRzaGFrZUNvbXBsZXRlZCBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBUTFMg
aGFuZHNoYWtlIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlv
bmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFM
UE4sIG9yIGBOb25lYC4iCisKKyAgICBlYXJseV9kYXRhX2FjY2VwdGVkOiBib29sCisgICAgIldo
ZXRoZXIgZWFybHkgKDAtUlRUKSBkYXRhIHdhcyBhY2NlcHRlZCBieSB0aGUgcmVtb3RlIHBlZXIu
IgorCisgICAgc2Vzc2lvbl9yZXN1bWVkOiBib29sCisgICAgIldoZXRoZXIgYSBUTFMgc2Vzc2lv
biB3YXMgcmVzdW1lZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUGluZ0Fja25vd2xlZGdlZChR
dWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrbm93bGVkZ2VkIGV2ZW50IGlzIGZp
cmVkIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZC4KKyAgICAiIiIKKworICAgIHVp
ZDogaW50CisgICAgIlRoZSB1bmlxdWUgSUQgb2YgdGhlIFBJTkcuIgorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIFByb3RvY29sTmVnb3RpYXRlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQ
cm90b2NvbE5lZ290aWF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBBTFBOIG5lZ290aWF0aW9uIGNv
bXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0KKyAg
ICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFMUE4sIG9yIGBOb25l
YC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgU3RyZWFtRGF0YVJlY2VpdmVkKFF1aWNFdmVudCk6
CisgICAgIiIiCisgICAgVGhlIFN0cmVhbURhdGFSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVu
ZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEKKyAgICBzdHJlYW0uCisgICAgIiIiCisKKyAgICBk
YXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgorCisgICAgZW5k
X3N0cmVhbTogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4g
Yml0IHNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQgb2YgdGhlIHN0cmVh
bSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBTdHJl
YW1SZXNldChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1SZXNldCBldmVudCBp
cyBmaXJlZCB3aGVuIHRoZSByZW1vdGUgcGVlciByZXNldHMgYSBzdHJlYW0uCisgICAgIiIiCisK
KyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAiVGhlIGVycm9yIGNvZGUgdGhhdCB0cmlnZ2VyZWQg
dGhlIHJlc2V0LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3Ry
ZWFtIHRoYXQgd2FzIHJlc2V0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDk3NWJkNTkyZTFjMDg3ODI1Y2Q5NWM2MDNjNjkwNmE3NDNkYjgxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5
CkBAIC0wLDAgKzEsMjY2IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0aW1lCitmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGVxdWUsIERp
Y3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5wYWNrZXQgaW1wb3J0ICgKKyAgICBQ
QUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNL
RVRfVFlQRV9NQVNLLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVf
UkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQsCisgICAgUXVpY1N0cmVhbUZyYW1lLAor
ICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorKQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJh
bmdlU2V0CisKK1BBQ0tFVF9UWVBFX05BTUVTID0geworICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUw6
ICJpbml0aWFsIiwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6ICJoYW5kc2hha2UiLAorICAg
IFBBQ0tFVF9UWVBFX1pFUk9fUlRUOiAiMFJUVCIsCisgICAgUEFDS0VUX1RZUEVfT05FX1JUVDog
IjFSVFQiLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZOiAicmV0cnkiLAorfQorCisKK2RlZiBoZXhk
dW1wKGRhdGE6IGJ5dGVzKSAtPiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkoZGF0
YSkuZGVjb2RlKCJhc2NpaSIpCisKKworY2xhc3MgUXVpY0xvZ2dlclRyYWNlOgorICAgICIiIgor
ICAgIEEgUVVJQyBldmVudCB0cmFjZS4KKworICAgIEV2ZW50cyBhcmUgbG9nZ2VkIGluIHRoZSBm
b3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2VlOiBodHRwczovL3F1aWNs
b2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFsb2ctZXZlbnQtZGVmaW5p
dGlvbnMtcXVpYy1oMy5odG1sCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwg
aXNfY2xpZW50OiBib29sLCBvZGNpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX29k
Y2lkID0gb2RjaWQKKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtUdXBsZVtmbG9hdCwgc3Ry
LCBzdHIsIERpY3Rbc3RyLCBBbnldXV0gPSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX3ZhbnRhZ2Vf
cG9pbnQgPSB7CisgICAgICAgICAgICAibmFtZSI6ICJhaW9xdWljIiwKKyAgICAgICAgICAgICJ0
eXBlIjogImNsaWVudCIgaWYgaXNfY2xpZW50IGVsc2UgInNlcnZlciIsCisgICAgICAgIH0KKwor
ICAgIGRlZiBlbmNvZGVfYWNrX2ZyYW1lKHNlbGYsIHJhbmdlczogUmFuZ2VTZXQsIGRlbGF5OiBm
bG9hdCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJhY2tfZGVsYXki
OiBzdHIoc2VsZi5lbmNvZGVfdGltZShkZWxheSkpLAorICAgICAgICAgICAgImFja2VkX3Jhbmdl
cyI6IFtbc3RyKHguc3RhcnQpLCBzdHIoeC5zdG9wIC0gMSldIGZvciB4IGluIHJhbmdlc10sCisg
ICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJhY2siLAorICAgICAgICB9CisKKyAgICBkZWYgZW5j
b2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGlu
dCwgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwgcmVhc29uX3BocmFzZTogc3RyCisgICAgKSAt
PiBEaWN0OgorICAgICAgICBhdHRycyA9IHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJy
b3JfY29kZSwKKyAgICAgICAgICAgICJlcnJvcl9zcGFjZSI6ICJhcHBsaWNhdGlvbiIgaWYgZnJh
bWVfdHlwZSBpcyBOb25lIGVsc2UgInRyYW5zcG9ydCIsCisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJjb25uZWN0aW9uX2Nsb3NlIiwKKyAgICAgICAgICAgICJyYXdfZXJyb3JfY29kZSI6IGVy
cm9yX2NvZGUsCisgICAgICAgICAgICAicmVhc29uIjogcmVhc29uX3BocmFzZSwKKyAgICAgICAg
fQorICAgICAgICBpZiBmcmFtZV90eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXR0cnNb
InRyaWdnZXJfZnJhbWVfdHlwZSJdID0gZnJhbWVfdHlwZQorCisgICAgICAgIHJldHVybiBhdHRy
cworCisgICAgZGVmIGVuY29kZV9jcnlwdG9fZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1G
cmFtZSkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBl
IjogImNyeXB0byIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGZyYW1lLmRhdGEpLAorICAg
ICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBsaW1pdDogaW50KSAtPiBEaWN0Ogor
ICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFfYmxvY2tlZCIsICJsaW1pdCI6IHN0
cihsaW1pdCl9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFncmFtX2ZyYW1lKHNlbGYsIGxlbmd0aDog
aW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFncmFtIiwg
Imxlbmd0aCI6IGxlbmd0aH0KKworICAgIGRlZiBlbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUo
c2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJoYW5kc2hha2Vf
ZG9uZSJ9CisKKyAgICBkZWYgZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYsIG1heGltdW06IGlu
dCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJtYXhfZGF0YSIsICJt
YXhpbXVtIjogc3RyKG1heGltdW0pfQorCisgICAgZGVmIGVuY29kZV9tYXhfc3RyZWFtX2RhdGFf
ZnJhbWUoc2VsZiwgbWF4aW11bTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogIm1heF9zdHJlYW1fZGF0YSIs
CisgICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAgICAgICAgICJzdHJl
YW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9tYXhf
c3RyZWFtc19mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCwgbWF4aW11bTogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAi
bWF4X3N0cmVhbXMiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4aW11bSksCisgICAg
ICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlmIGlzX3VuaWRpcmVjdGlv
bmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX25l
d19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBjb25uZWN0aW9u
X2lkOiBieXRlcywKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvOiBpbnQsCisgICAgICAgIHNlcXVl
bmNlX251bWJlcjogaW50LAorICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzLAor
ICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25uZWN0aW9u
X2lkIjogaGV4ZHVtcChjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjog
Im5ld19jb25uZWN0aW9uX2lkIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oY29ubmVjdGlv
bl9pZCksCisgICAgICAgICAgICAicmVzZXRfdG9rZW4iOiBoZXhkdW1wKHN0YXRlbGVzc19yZXNl
dF90b2tlbiksCisgICAgICAgICAgICAicmV0aXJlX3ByaW9yX3RvIjogc3RyKHJldGlyZV9wcmlv
cl90byksCisgICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNlcXVlbmNlX251bWJl
ciksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X3Rva2VuX2ZyYW1lKHNlbGYsIHRv
a2VuOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFt
ZV90eXBlIjogIm5ld190b2tlbiIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKHRva2VuKSwK
KyAgICAgICAgICAgICJ0b2tlbiI6IGhleGR1bXAodG9rZW4pLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX3BhZGRpbmdfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsi
ZnJhbWVfdHlwZSI6ICJwYWRkaW5nIn0KKworICAgIGRlZiBlbmNvZGVfcGF0aF9jaGFsbGVuZ2Vf
ZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImRhdGEi
OiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJwYXRoX2NoYWxsZW5nZSJ9CisKKyAgICBk
ZWYgZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6
CisgICAgICAgIHJldHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJw
YXRoX3Jlc3BvbnNlIn0KKworICAgIGRlZiBlbmNvZGVfcGluZ19mcmFtZShzZWxmKSAtPiBEaWN0
OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBpbmcifQorCisgICAgZGVmIGVuY29k
ZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGludCwgZmlu
YWxfc2l6ZTogaW50LCBzdHJlYW1faWQ6IGludAorICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAg
ICJmaW5hbF9zaXplIjogc3RyKGZpbmFsX3NpemUpLAorICAgICAgICAgICAgImZyYW1lX3R5cGUi
OiAicmVzZXRfc3RyZWFtIiwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lk
KSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFt
ZShzZWxmLCBzZXF1ZW5jZV9udW1iZXI6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInJldGlyZV9jb25uZWN0aW9uX2lkIiwKKyAgICAg
ICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgICAg
fQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYsIGxpbWl0
OiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtX2RhdGFfYmxvY2tlZCIsCisgICAgICAgICAgICAi
bGltaXQiOiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1f
aWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZShzZWxm
LCBlcnJvcl9jb2RlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RvcF9zZW5kaW5nIiwKKyAgICAgICAg
ICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBz
dHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZmluIjogZnJhbWUuZmluLAorICAgICAgICAg
ICAgImZyYW1lX3R5cGUiOiAic3RyZWFtIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oZnJh
bWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9mZnNldCksCisgICAg
ICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRl
ZiBlbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBi
b29sLCBsaW1pdDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ImZyYW1lX3R5cGUiOiAic3RyZWFtc19ibG9ja2VkIiwKKyAgICAgICAgICAgICJsaW1pdCI6IHN0
cihsaW1pdCksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlm
IGlzX3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAg
ICBkZWYgZW5jb2RlX3RpbWUoc2VsZiwgc2Vjb25kczogZmxvYXQpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIENvbnZlcnQgYSB0aW1lIHRvIGludGVnZXIgbWljcm9zZWNvbmRzLgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWNvbmRzICogMTAwMDAwMCkKKworICAgIGRl
ZiBlbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgIHNlbGYsIG93bmVyOiBzdHIs
IHBhcmFtZXRlcnM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzCisgICAgKSAtPiBEaWN0W3N0ciwg
QW55XToKKyAgICAgICAgZGF0YTogRGljdFtzdHIsIEFueV0gPSB7Im93bmVyIjogb3duZXJ9Cisg
ICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBwYXJhbWV0ZXJzLl9fZGljdF9f
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBib29sKToK
KyAgICAgICAgICAgICAgICBkYXRhW3BhcmFtX25hbWVdID0gcGFyYW1fdmFsdWUKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYnl0ZXMpOgorICAgICAgICAgICAgICAg
IGRhdGFbcGFyYW1fbmFtZV0gPSBoZXhkdW1wKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBpbnQpOgorICAgICAgICAgICAgICAgIGRhdGFbcGFy
YW1fbmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGxv
Z19ldmVudChzZWxmLCAqLCBjYXRlZ29yeTogc3RyLCBldmVudDogc3RyLCBkYXRhOiBEaWN0KSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCh0aW1lLnRpbWUoKSwgY2F0ZWdv
cnksIGV2ZW50LCBkYXRhKSkKKworICAgIGRlZiBwYWNrZXRfdHlwZShzZWxmLCBwYWNrZXRfdHlw
ZTogaW50KSAtPiBzdHI6CisgICAgICAgIHJldHVybiBQQUNLRVRfVFlQRV9OQU1FUy5nZXQocGFj
a2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLLCAiMVJUVCIpCisKKyAgICBkZWYgdG9fZGljdChz
ZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUg
dHJhY2UgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9ldmVudHM6CisgICAgICAgICAgICByZWZlcmVuY2Vf
dGltZSA9IHNlbGYuX2V2ZW50c1swXVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVm
ZXJlbmNlX3RpbWUgPSAwLjAKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25maWd1
cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAgICAiY29tbW9uX2ZpZWxk
cyI6IHsKKyAgICAgICAgICAgICAgICAiT0RDSUQiOiBoZXhkdW1wKHNlbGYuX29kY2lkKSwKKyAg
ICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiBzdHIoc2VsZi5lbmNvZGVfdGltZShyZWZl
cmVuY2VfdGltZSkpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJldmVudF9maWVsZHMi
OiBbInJlbGF0aXZlX3RpbWUiLCAiY2F0ZWdvcnkiLCAiZXZlbnRfdHlwZSIsICJkYXRhIl0sCisg
ICAgICAgICAgICAiZXZlbnRzIjogbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgICAgIGxhbWJkYSBldmVudDogKAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
KHNlbGYuZW5jb2RlX3RpbWUoZXZlbnRbMF0gLSByZWZlcmVuY2VfdGltZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFsy
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzNdLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJ2YW50YWdlX3BvaW50Ijogc2VsZi5fdmFu
dGFnZV9wb2ludCwKKyAgICAgICAgfQorCisKK2NsYXNzIFF1aWNMb2dnZXI6CisgICAgIiIiCisg
ICAgQSBRVUlDIGV2ZW50IGxvZ2dlci4KKworICAgIFNlcnZlcyBhcyBhIGNvbnRhaW5lciBmb3Ig
dHJhY2VzIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2Vl
OiBodHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFs
b2ctbWFpbi1zY2hlbWEuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYWNlczogTGlzdFtRdWljTG9nZ2VyVHJhY2VdID0gW10K
KworICAgIGRlZiBzdGFydF90cmFjZShzZWxmLCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRl
cykgLT4gUXVpY0xvZ2dlclRyYWNlOgorICAgICAgICB0cmFjZSA9IFF1aWNMb2dnZXJUcmFjZShp
c19jbGllbnQ9aXNfY2xpZW50LCBvZGNpZD1vZGNpZCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLmFw
cGVuZCh0cmFjZSkKKyAgICAgICAgcmV0dXJuIHRyYWNlCisKKyAgICBkZWYgZW5kX3RyYWNlKHNl
bGYsIHRyYWNlOiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCB0cmFj
ZSBpbiBzZWxmLl90cmFjZXMsICJRdWljTG9nZ2VyVHJhY2UgZG9lcyBub3QgYmVsb25nIHRvIFF1
aWNMb2dnZXIiCisKKyAgICBkZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdHJhY2VzIGFzIGEgZGljdGlvbmFyeSB3aGlj
aCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLAorICAgICAgICAgICAgInRy
YWNlcyI6IFt0cmFjZS50b19kaWN0KCkgZm9yIHRyYWNlIGluIHNlbGYuX3RyYWNlc10sCisgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYwYmNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CkBAIC0wLDAgKzEsNTA4
IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBvcworZnJvbSBk
YXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zy
b20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNHQ00KKworZnJvbSAu
LmJ1ZmZlciBpbXBvcnQgQnVmZmVyCitmcm9tIC4udGxzIGltcG9ydCBwdWxsX2Jsb2NrLCBwdXNo
X2Jsb2NrCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFDS0VUX0xPTkdfSEVB
REVSID0gMHg4MAorUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKK1BBQ0tFVF9TUElOX0JJVCA9IDB4
MjAKKworUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBBQ0tFVF9G
SVhFRF9CSVQgfCAweDAwCitQQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tFVF9MT05HX0hFQURF
UiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCitQQUNLRVRfVFlQRV9IQU5EU0hBS0UgPSBQQUNL
RVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAorUEFDS0VUX1RZUEVfUkVU
UlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgzMAorUEFDS0VU
X1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKK1BBQ0tFVF9UWVBFX01BU0sgPSAweEYw
CisKK0NPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAorUEFDS0VUX05VTUJFUl9NQVhfU0laRSA9
IDQKK1JFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMyZWNkYjJhMjEzM2M4
NDFlNDA0M2RmMjdkNDQzMCIpCitSRVRSWV9BRUFEX05PTkNFID0gYmluYXNjaWkudW5oZXhsaWZ5
KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQorUkVUUllfSU5URUdSSVRZX1RBR19TSVpFID0g
MTYKKworCitjbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgorICAgIE5PX0VSUk9SID0gMHgw
CisgICAgSU5URVJOQUxfRVJST1IgPSAweDEKKyAgICBTRVJWRVJfQlVTWSA9IDB4MgorICAgIEZM
T1dfQ09OVFJPTF9FUlJPUiA9IDB4MworICAgIFNUUkVBTV9MSU1JVF9FUlJPUiA9IDB4NAorICAg
IFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQorICAgIEZJTkFMX1NJWkVfRVJST1IgPSAweDYKKyAg
ICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NworICAgIFRSQU5TUE9SVF9QQVJBTUVURVJfRVJS
T1IgPSAweDgKKyAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5CisgICAgUFJPVE9D
T0xfVklPTEFUSU9OID0gMHhBCisgICAgSU5WQUxJRF9UT0tFTiA9IDB4QgorICAgIENSWVBUT19C
VUZGRVJfRVhDRUVERUQgPSAweEQKKyAgICBDUllQVE9fRVJST1IgPSAweDEwMAorCisKK2NsYXNz
IFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6CisgICAgTkVHT1RJQVRJT04gPSAwCisgICAg
RFJBRlRfMjUgPSAweEZGMDAwMDE5CisgICAgRFJBRlRfMjYgPSAweEZGMDAwMDFBCisgICAgRFJB
RlRfMjcgPSAweEZGMDAwMDFCCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0hlYWRlcjoKKyAg
ICBpc19sb25nX2hlYWRlcjogYm9vbAorICAgIHZlcnNpb246IE9wdGlvbmFsW2ludF0KKyAgICBw
YWNrZXRfdHlwZTogaW50CisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcworICAgIHNvdXJjZV9j
aWQ6IGJ5dGVzCisgICAgdG9rZW46IGJ5dGVzID0gYiIiCisgICAgaW50ZWdyaXR5X3RhZzogYnl0
ZXMgPSBiIiIKKyAgICByZXN0X2xlbmd0aDogaW50ID0gMAorCisKK2RlZiBkZWNvZGVfcGFja2V0
X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0ZWQ6IGludCkgLT4g
aW50OgorICAgICIiIgorICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZyb20gYSB0cnVuY2F0
ZWQgcGFja2V0IG51bWJlci4KKworICAgIFNlZTogQXBwZW5kaXggQSAtIFNhbXBsZSBQYWNrZXQg
TnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQorICAgICIiIgorICAgIHdpbmRvdyA9IDEgPDwgbnVt
X2JpdHMKKyAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCisgICAgY2FuZGlkYXRlID0gKGV4
cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKKyAgICBpZiBjYW5kaWRhdGUgPD0g
ZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwgNjIpIC0gd2luZG93
OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93CisgICAgZWxpZiBjYW5kaWRhdGUg
PiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2luZG93OgorICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZQorCisKK2RlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICBwYWNrZXRfd2l0
aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzCispIC0+IGJ5
dGVzOgorICAgICIiIgorICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRhZyBmb3IgYSBSRVRS
WSBwYWNrZXQuCisgICAgIiIiCisgICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8gcGFja2V0CisgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSAr
IGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdpbmFsX2Rlc3RpbmF0
aW9uX2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90YWcpCisgICAgYXNz
ZXJ0IGJ1Zi5lb2YoKQorCisgICAgIyBydW4gQUVTLTEyOC1HQ00KKyAgICBhZWFkID0gQUVTR0NN
KFJFVFJZX0FFQURfS0VZKQorICAgIGludGVncml0eV90YWcgPSBhZWFkLmVuY3J5cHQoUkVUUllf
QUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKKyAgICBhc3NlcnQgbGVuKGludGVncml0eV90YWcp
ID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQorICAgIHJldHVybiBpbnRlZ3JpdHlfdGFnCisK
KworZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6CisgICAgcmV0dXJu
IGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKKworCitkZWYgaXNfbG9uZ19oZWFk
ZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJldHVybiBib29sKGZpcnN0X2J5dGUg
JiBQQUNLRVRfTE9OR19IRUFERVIpCisKKworZGVmIHB1bGxfcXVpY19oZWFkZXIoYnVmOiBCdWZm
ZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IFF1aWNIZWFkZXI6
CisgICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKworICAgIGludGVncml0eV90YWcg
PSBiIiIKKyAgICB0b2tlbiA9IGIiIgorICAgIGlmIGlzX2xvbmdfaGVhZGVyKGZpcnN0X2J5dGUp
OgorICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAorICAgICAgICB2ZXJzaW9uID0gYnVmLnB1
bGxfdWludDMyKCkKKworICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID0gYnVmLnB1bGxf
dWludDgoKQorICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4gQ09OTkVDVElPTl9J
RF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIGRlc3RpbmF0aW9u
X2NpZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZGVzdGluYXRpb25fY2lkID0gYnVm
LnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKKworICAgICAgICBzb3VyY2VfY2lk
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgc291cmNlX2NpZF9sZW5ndGgg
PiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
U291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9jaWRfbGVuZ3RoKQor
ICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2NpZF9sZW5ndGgpCisK
KyAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OOgor
ICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAgICBwYWNrZXRfdHlw
ZSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRl
bGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IChmaXJzdF9ieXRlICYgUEFD
S0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0
IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBmaXJzdF9i
eXRlICYgUEFDS0VUX1RZUEVfTUFTSworICAgICAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFD
S0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVsbF9ieXRlcyh0b2tl
bl9sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JFVFJZOgor
ICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkg
LSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGJ1Zi5w
dWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBpbnRlZ3JpdHlfdGFnID0g
YnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQorICAgICAgICAgICAgICAg
IHJlc3RfbGVuZ3RoID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN0
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICByZXR1cm4gUXVpY0hlYWRl
cigKKyAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCisgICAgICAgICAgICB2ZXJzaW9u
PXZlcnNpb24sCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICBzb3VyY2Vf
Y2lkPXNvdXJjZV9jaWQsCisgICAgICAgICAgICB0b2tlbj10b2tlbiwKKyAgICAgICAgICAgIGlu
dGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoPXJlc3Rf
bGVuZ3RoLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgIyBzaG9ydCBoZWFkZXIgcGFj
a2V0CisgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhFRF9CSVQpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKwor
ICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNLCisgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lkX2xlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCisgICAgICAgICAgICBpc19sb25nX2hlYWRlcj1GYWxz
ZSwKKyAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPXBh
Y2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0aW9uX2NpZCwK
KyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAorICAgICAgICAgICAgdG9rZW49YiIiLAorICAg
ICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSwKKyAgICAgICAg
KQorCisKK2RlZiBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICB2ZXJzaW9uOiBpbnQsCisgICAgc291
cmNlX2NpZDogYnl0ZXMsCisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywKKyAgICBvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAorICAgIHJldHJ5X3Rva2VuOiBieXRlcywKKykgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBjYXBhY2l0eT03CisgICAgICAgICsg
bGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4oc291cmNlX2NpZCkKKyAgICAgICAg
KyBsZW4ocmV0cnlfdG9rZW4pCisgICAgICAgICsgUkVUUllfSU5URUdSSVRZX1RBR19TSVpFCisg
ICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQorICAgIGJ1Zi5wdXNo
X3VpbnQzMih2ZXJzaW9uKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0aW5hdGlvbl9jaWQp
KQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAgICBidWYucHVzaF91aW50
OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291cmNlX2NpZCkKKyAgICBi
dWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKKyAgICBidWYucHVzaF9ieXRlcyhnZXRfcmV0cnlf
aW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSkKKyAgICBh
c3NlcnQgYnVmLmVvZigpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIGVuY29kZV9xdWlj
X3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgc291cmNlX2NpZDogYnl0ZXMsIGRlc3RpbmF0aW9u
X2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCispIC0+IGJ5dGVzOgor
ICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAgICArIGxlbihkZXN0
aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAgICAgICsgNCAqIGxl
bihzdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KG9zLnVyYW5k
b20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCisgICAgYnVmLnB1c2hfdWludDMyKFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgYnVmLnB1c2hfdWludDgobGVuKGRlc3Rp
bmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25fY2lkKQorICAgIGJ1
Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhzb3VyY2Vf
Y2lkKQorICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoKKyAgICAgICAgYnVm
LnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworIyBUTFMgRVhU
RU5TSU9OCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAg
aXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgaXB2Nl9hZGRyZXNz
OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKKyAg
ICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVp
Y1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBt
YXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfZGF0
YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRp
X2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1z
X2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgYWNrX2RlbGF5X2V4cG9uZW50OiBPcHRpb25hbFtp
bnRdID0gTm9uZQorICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZhbHNlCisgICAgcHJl
ZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNzXSA9IE5vbmUKKyAg
ICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBxdWFudHVt
X3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisKK1BBUkFNUyA9IHsKKyAgICAw
OiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCisgICAgMTogKCJpZGxlX3RpbWVv
dXQiLCBpbnQpLAorICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwgYnl0ZXMpLAorICAg
IDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKKyAgICA0OiAoImluaXRpYWxfbWF4X2RhdGEi
LCBpbnQpLAorICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCIsIGlu
dCksCisgICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIsIGludCks
CisgICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQpLAorICAgIDg6ICgi
aW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKKyAgICA5OiAoImluaXRpYWxfbWF4X3N0
cmVhbXNfdW5pIiwgaW50KSwKKyAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25lbnQiLCBpbnQpLAor
ICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAorICAgIDEyOiAoImRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbiIsIGJvb2wpLAorICAgIDEzOiAoInByZWZlcnJlZF9hZGRyZXNzIiwgUXVpY1By
ZWZlcnJlZEFkZHJlc3MpLAorICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0Iiwg
aW50KSwKKyAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGludCksCisgICAgMzEy
NzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKK30KKworCitkZWYgcHVsbF9xdWljX3By
ZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAg
ICBpcHY0X2FkZHJlc3MgPSBOb25lCisgICAgaXB2NF9ob3N0ID0gYnVmLnB1bGxfYnl0ZXMoNCkK
KyAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlwdjRfaG9zdCAhPSBi
eXRlcyg0KToKKyAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2NEFkZHJl
c3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKKworICAgIGlwdjZfYWRkcmVzcyA9IE5vbmUKKyAg
ICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKKyAgICBpcHY2X3BvcnQgPSBidWYucHVs
bF91aW50MTYoKQorICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6CisgICAgICAgIGlwdjZf
YWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9zdCkpLCBpcHY2X3Bv
cnQpCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICBj
b25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9sZW5ndGgpCisgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisKKyAgICByZXR1cm4g
UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgIGlwdjRfYWRkcmVzcz1pcHY0X2FkZHJlc3Ms
CisgICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCisgICAgICAgIGNvbm5lY3Rpb25f
aWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0YXRlbGVz
c19yZXNldF90b2tlbiwKKyAgICApCisKKworZGVmIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVz
cygKKyAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQcmVmZXJyZWRBZGRy
ZXNzCispIC0+IE5vbmU6CisgICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzIGlz
IG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3Mo
cHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0pCisgICAgZWxzZToK
KyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCisKKyAgICBpZiBwcmVmZXJyZWRfYWRk
cmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGlw
YWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3NbMF0pLnBh
Y2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNzLmlwdjZfYWRk
cmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygxOCkpCisK
KyAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkp
CisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkKKyAg
ICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4p
CisKKworZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZl
ciwgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzOgor
ICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKKworICAgIGlmIHByb3RvY29s
X3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgorICAgICAgICB3aXRoIHB1
bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6CisgICAgICAgICAgICBlbmQgPSBidWYudGVsbCgp
ICsgbGVuZ3RoCisgICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgorICAgICAgICAg
ICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgICAgICBwYXJh
bV9sZW4gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgICAgIHBhcmFtX3N0YXJ0ID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xl
bikpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBUcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg
c2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBidWYucHVsbF9ieXRl
cyhwYXJhbV9sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gcGFyYW1f
c3RhcnQgKyBwYXJhbV9sZW4KKyAgICBlbHNlOgorICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigp
OgorICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAg
ICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBwYXJhbV9zdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIHBhcmFt
X25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAgICAgICAgICAgaWYg
cGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAgICAgIGVsaWYgcGFy
YW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBh
cmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCisgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAgICAg
ICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNz
KGJ1ZikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0
cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGJ1Zi5wdWxs
X2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09IHBhcmFt
X3N0YXJ0ICsgcGFyYW1fbGVuCisKKyAgICByZXR1cm4gcGFyYW1zCisKKworZGVmIHB1c2hfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZlciwgcGFyYW1zOiBRdWljVHJh
bnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IE5vbmU6CisgICAg
aWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjc6CisgICAg
ICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgZm9yIHBhcmFtX2lkLCAo
cGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkKKyAgICAgICAgICAg
ICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMgbm90IEZh
bHNlOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFyYW1faWQpCisgICAg
ICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlm
IHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFyYW1fdmFsdWUpCisg
ICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkg
aW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmUg
YW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbV9idWYg
PSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9
PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3VpbnRfdmFyKHBhcmFt
X3ZhbHVlKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAg
ICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAg
ICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFyYW1fYnVmLCBwYXJh
bV92YWx1ZSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9pZCkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVsbCgpKQorICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQorCisKKyMgRlJBTUVTCisK
KworY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKKyAgICBQQURESU5HID0gMHgwMAorICAg
IFBJTkcgPSAweDAxCisgICAgQUNLID0gMHgwMgorICAgIEFDS19FQ04gPSAweDAzCisgICAgUkVT
RVRfU1RSRUFNID0gMHgwNAorICAgIFNUT1BfU0VORElORyA9IDB4MDUKKyAgICBDUllQVE8gPSAw
eDA2CisgICAgTkVXX1RPS0VOID0gMHgwNworICAgIFNUUkVBTV9CQVNFID0gMHgwOAorICAgIE1B
WF9EQVRBID0gMHgxMAorICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKKyAgICBNQVhfU1RSRUFN
U19CSURJID0gMHgxMgorICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKKyAgICBEQVRBX0JMT0NL
RUQgPSAweDE0CisgICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKKyAgICBTVFJFQU1TX0JM
T0NLRURfQklESSA9IDB4MTYKKyAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0gMHgxNworICAgIE5F
V19DT05ORUNUSU9OX0lEID0gMHgxOAorICAgIFJFVElSRV9DT05ORUNUSU9OX0lEID0gMHgxOQor
ICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQorICAgIFBBVEhfUkVTUE9OU0UgPSAweDFCCisgICAg
VFJBTlNQT1JUX0NMT1NFID0gMHgxQworICAgIEFQUExJQ0FUSU9OX0NMT1NFID0gMHgxRAorICAg
IEhBTkRTSEFLRV9ET05FID0gMHgxRQorICAgIERBVEFHUkFNID0gMHgzMAorICAgIERBVEFHUkFN
X1dJVEhfTEVOR1RIID0gMHgzMQorCisKK05PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTID0g
ZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAgIFF1
aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5HLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCitOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVT
ID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAg
IFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRf
Q0xPU0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgXQor
KQorCitQUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVp
Y0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JF
U1BPTlNFLAorICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCisgICAgXQorKQorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFF1aWNTdHJlYW1GcmFtZToKKyAgICBkYXRhOiBieXRlcyA9IGIiIgorICAgIGZpbjogYm9vbCA9
IEZhbHNlCisgICAgb2Zmc2V0OiBpbnQgPSAwCisKKworZGVmIHB1bGxfYWNrX2ZyYW1lKGJ1Zjog
QnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKKyAgICByYW5nZXNldCA9IFJhbmdlU2V0
KCkKKyAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3QgYWNrbm93bGVkZ2Vk
CisgICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNrX3JhbmdlX2NvdW50ID0g
YnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkg
ICMgZmlyc3QgYWNrIHJhbmdlCisgICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFja19jb3VudCwgZW5k
ICsgMSkKKyAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgZm9yIF8gaW4gcmFuZ2UoYWNrX3Jhbmdl
X2NvdW50KToKKyAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgKyAyCisgICAgICAg
IGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKGVu
ZCAtIGFja19jb3VudCwgZW5kICsgMSkKKyAgICAgICAgZW5kIC09IGFja19jb3VudAorICAgIHJl
dHVybiByYW5nZXNldCwgZGVsYXkKKworCitkZWYgcHVzaF9hY2tfZnJhbWUoYnVmOiBCdWZmZXIs
IHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgorICAgIHJhbmdlcyA9IGxl
bihyYW5nZXNldCkKKyAgICBpbmRleCA9IHJhbmdlcyAtIDEKKyAgICByID0gcmFuZ2VzZXRbaW5k
ZXhdCisgICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKKyAgICBidWYucHVzaF91aW50
X3ZhcihkZWxheSkKKyAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKKyAgICBidWYucHVzaF91
aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKKyAgICBzdGFydCA9IHIuc3RhcnQKKyAgICB3
aGlsZSBpbmRleCA+IDA6CisgICAgICAgIGluZGV4IC09IDEKKyAgICAgICAgciA9IHJhbmdlc2V0
W2luZGV4XQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIuc3RvcCAtIDEpCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAxKQorICAgICAgICBz
dGFydCA9IHIuc3RhcnQKKyAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODM3YzJjMzMwNDky
MDY0NDVmYzlmYjgxNDczYWNmY2JmNGI2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDM2NiBAQAor
ZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVtIGltcG9y
dCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgTGlzdCwgT3B0
aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uYnVmZmVyIGltcG9ydCBCdWZmZXIsIHNp
emVfdWludF92YXIKK2Zyb20gLi50bHMgaW1wb3J0IEVwb2NoCitmcm9tIC5jcnlwdG8gaW1wb3J0
IENyeXB0b1BhaXIKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRyYWNlCitmcm9tIC5w
YWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUywKKyAgICBO
T05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tFVF9OVU1CRVJfTUFYX1NJWkUsCisg
ICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfTUFTSywKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGlzX2xvbmdfaGVhZGVy
LAorKQorCitQQUNLRVRfTUFYX1NJWkUgPSAxMjgwCitQQUNLRVRfTEVOR1RIX1NFTkRfU0laRSA9
IDIKK1BBQ0tFVF9OVU1CRVJfU0VORF9TSVpFID0gMgorCisKK1F1aWNEZWxpdmVyeUhhbmRsZXIg
PSBDYWxsYWJsZVsuLi4sIE5vbmVdCisKKworY2xhc3MgUXVpY0RlbGl2ZXJ5U3RhdGUoRW51bSk6
CisgICAgQUNLRUQgPSAwCisgICAgTE9TVCA9IDEKKyAgICBFWFBJUkVEID0gMgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFF1aWNTZW50UGFja2V0OgorICAgIGVwb2NoOiBFcG9jaAorICAgIGluX2Zs
aWdodDogYm9vbAorICAgIGlzX2Fja19lbGljaXRpbmc6IGJvb2wKKyAgICBpc19jcnlwdG9fcGFj
a2V0OiBib29sCisgICAgcGFja2V0X251bWJlcjogaW50CisgICAgcGFja2V0X3R5cGU6IGludAor
ICAgIHNlbnRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgIHNlbnRfYnl0ZXM6IGlu
dCA9IDAKKworICAgIGRlbGl2ZXJ5X2hhbmRsZXJzOiBMaXN0W1R1cGxlW1F1aWNEZWxpdmVyeUhh
bmRsZXIsIEFueV1dID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeT1saXN0CisgICAg
KQorICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogTGlzdFtEaWN0XSA9IGZpZWxkKGRlZmF1bHRfZmFj
dG9yeT1saXN0KQorCisKK2NsYXNzIFF1aWNQYWNrZXRCdWlsZGVyU3RvcChFeGNlcHRpb24pOgor
ICAgIHBhc3MKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlcjoKKyAgICAiIiIKKyAgICBIZWxw
ZXIgZm9yIGJ1aWxkaW5nIFFVSUMgcGFja2V0cy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdF9jaWQ6IGJ5dGVzLAor
ICAgICAgICBwZWVyX2NpZDogYnl0ZXMsCisgICAgICAgIHZlcnNpb246IGludCwKKyAgICAgICAg
aXNfY2xpZW50OiBib29sLAorICAgICAgICBwYWNrZXRfbnVtYmVyOiBpbnQgPSAwLAorICAgICAg
ICBwZWVyX3Rva2VuOiBieXRlcyA9IGIiIiwKKyAgICAgICAgcXVpY19sb2dnZXI6IE9wdGlvbmFs
W1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICAgICBzcGluX2JpdDogYm9vbCA9IEZhbHNl
LAorICAgICk6CisgICAgICAgIHNlbGYubWF4X2ZsaWdodF9ieXRlczogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdG90YWxfYnl0ZXM6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0W0RpY3RdXSA9
IE5vbmUKKworICAgICAgICBzZWxmLl9ob3N0X2NpZCA9IGhvc3RfY2lkCisgICAgICAgIHNlbGYu
X2lzX2NsaWVudCA9IGlzX2NsaWVudAorICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IHBlZXJfY2lk
CisgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBwZWVyX3Rva2VuCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBzcGluX2Jp
dAorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorCisgICAgICAgICMgYXNzZW1ibGVk
IGRhdGFncmFtcyBhbmQgcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXM6IExpc3RbYnl0
ZXNdID0gW10KKyAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzID0gMAorICAgICAg
ICBzZWxmLl9kYXRhZ3JhbV9pbml0ID0gVHJ1ZQorICAgICAgICBzZWxmLl9wYWNrZXRzOiBMaXN0
W1F1aWNTZW50UGFja2V0XSA9IFtdCisgICAgICAgIHNlbGYuX2ZsaWdodF9ieXRlcyA9IDAKKyAg
ICAgICAgc2VsZi5fdG90YWxfYnl0ZXMgPSAwCisKKyAgICAgICAgIyBjdXJyZW50IHBhY2tldAor
ICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fcGFja2V0OiBPcHRp
b25hbFtRdWljU2VudFBhY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG86
IE9wdGlvbmFsW0NyeXB0b1BhaXJdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRfbG9uZ19o
ZWFkZXIgPSBGYWxzZQorICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0gcGFja2V0X251bWJl
cgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX3BhY2tldF90
eXBlID0gMAorCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlcihQQUNLRVRfTUFYX1NJWkUp
CisgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IFBBQ0tFVF9NQVhfU0laRQorICAgICAg
ICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBwYWNrZXRfaXNfZW1wdHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisg
ICAgICAgIFJldHVybnMgYFRydWVgIGlmIHRoZSBjdXJyZW50IHBhY2tldCBpcyBlbXB0eS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9wYWNrZXQgaXMgbm90IE5vbmUKKyAgICAg
ICAgcGFja2V0X3NpemUgPSBzZWxmLl9idWZmZXIudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0
CisgICAgICAgIHJldHVybiBwYWNrZXRfc2l6ZSA8PSBzZWxmLl9oZWFkZXJfc2l6ZQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9udW1iZXIoc2VsZikgLT4gaW50OgorICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGFja2V0IG51bWJlciBmb3IgdGhlIG5leHQgcGFja2V0
LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tldF9udW1iZXIKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfYnVmZmVyX3NwYWNlKHNlbGYpIC0+IGludDoK
KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YgYnl0
ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgcGFja2V0LgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBh
Y2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVsbCgpCisgICAgICAgICAgICAtIHNl
bGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICApCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgcmVtYWluaW5nX2ZsaWdodF9zcGFjZShzZWxmKSAtPiBpbnQ6CisgICAgICAg
ICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIGJ5dGVzIHdoaWNo
IGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIi
CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkKKyAg
ICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAgLSBzZWxmLl9wYWNr
ZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgZGVmIGZsdXNoKHNlbGYp
IC0+IFR1cGxlW0xpc3RbYnl0ZXNdLCBMaXN0W1F1aWNTZW50UGFja2V0XV06CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIHRoZSBhc3NlbWJsZWQgZGF0YWdyYW1zLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
ZW5kX3BhY2tldCgpCisgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorCisg
ICAgICAgIGRhdGFncmFtcyA9IHNlbGYuX2RhdGFncmFtcworICAgICAgICBwYWNrZXRzID0gc2Vs
Zi5fcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXMgPSBbXQorICAgICAgICBzZWxmLl9w
YWNrZXRzID0gW10KKyAgICAgICAgcmV0dXJuIGRhdGFncmFtcywgcGFja2V0cworCisgICAgZGVm
IHN0YXJ0X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBmcmFtZV90eXBlOiBpbnQsCisg
ICAgICAgIGNhcGFjaXR5OiBpbnQgPSAxLAorICAgICAgICBoYW5kbGVyOiBPcHRpb25hbFtRdWlj
RGVsaXZlcnlIYW5kbGVyXSA9IE5vbmUsCisgICAgICAgIGhhbmRsZXJfYXJnczogU2VxdWVuY2Vb
QW55XSA9IFtdLAorICAgICkgLT4gQnVmZmVyOgorICAgICAgICAiIiIKKyAgICAgICAgU3RhcnRz
IGEgbmV3IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfYnVm
ZmVyX3NwYWNlIDwgY2FwYWNpdHkgb3IgKAorICAgICAgICAgICAgZnJhbWVfdHlwZSBub3QgaW4g
Tk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUworICAgICAgICAgICAgYW5kIHNlbGYucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSA8IGNhcGFjaXR5CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBR
dWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAgICBzZWxmLl9idWZmZXIucHVzaF91aW50X3Zh
cihmcmFtZV90eXBlKQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJ
VElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pc19hY2tfZWxpY2l0
aW5nID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fSU5fRkxJR0hUX0ZS
QU1FX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkNSWVBUTzoKKyAgICAgICAgICAg
IHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFja2V0ID0gVHJ1ZQorICAgICAgICBpZiBoYW5kbGVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmRlbGl2ZXJ5X2hhbmRsZXJz
LmFwcGVuZCgoaGFuZGxlciwgaGFuZGxlcl9hcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
ZmZlcgorCisgICAgZGVmIHN0YXJ0X3BhY2tldChzZWxmLCBwYWNrZXRfdHlwZTogaW50LCBjcnlw
dG86IENyeXB0b1BhaXIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMgYSBu
ZXcgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5fYnVmZmVyCisKKyAg
ICAgICAgIyBmaW5pc2ggcHJldmlvdXMgZGF0YWdyYW0KKyAgICAgICAgaWYgc2VsZi5fcGFja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZW5kX3BhY2tldCgpCisKKyAgICAgICAg
IyBpZiB0aGVyZSBpcyB0b28gbGl0dGxlIHNwYWNlIHJlbWFpbmluZywgc3RhcnQgYSBuZXcgZGF0
YWdyYW0KKyAgICAgICAgIyBGSVhNRTogdGhlIGxpbWl0IGlzIGFyYml0cmFyeSEKKyAgICAgICAg
cGFja2V0X3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBpZiBzZWxmLl9idWZmZXJfY2FwYWNp
dHkgLSBwYWNrZXRfc3RhcnQgPCAxMjg6CisgICAgICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50
X2RhdGFncmFtKCkKKyAgICAgICAgICAgIHBhY2tldF9zdGFydCA9IDAKKworICAgICAgICAjIGlu
aXRpYWxpemUgZGF0YWdyYW0gaWYgbmVlZGVkCisgICAgICAgIGlmIHNlbGYuX2RhdGFncmFtX2lu
aXQ6CisgICAgICAgICAgICBpZiBzZWxmLm1heF90b3RhbF9ieXRlcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmdfdG90YWxfYnl0ZXMgPSBzZWxmLm1heF90b3RhbF9ieXRl
cyAtIHNlbGYuX3RvdGFsX2J5dGVzCisgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nX3RvdGFs
X2J5dGVzIDwgc2VsZi5fYnVmZmVyX2NhcGFjaXR5OgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9idWZmZXJfY2FwYWNpdHkgPSByZW1haW5pbmdfdG90YWxfYnl0ZXMKKworICAgICAgICAgICAg
c2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gc2VsZi5fYnVmZmVyX2NhcGFjaXR5CisgICAgICAgICAg
ICBpZiBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nX2ZsaWdodF9ieXRlcyA9IHNlbGYubWF4X2ZsaWdodF9ieXRlcyAtIHNlbGYuX2Zs
aWdodF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPCBz
ZWxmLl9mbGlnaHRfY2FwYWNpdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsaWdodF9j
YXBhY2l0eSA9IHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2luaXQgPSBG
YWxzZQorCisgICAgICAgICMgY2FsY3VsYXRlIGhlYWRlciBzaXplCisgICAgICAgIHBhY2tldF9s
b25nX2hlYWRlciA9IGlzX2xvbmdfaGVhZGVyKHBhY2tldF90eXBlKQorICAgICAgICBpZiBwYWNr
ZXRfbG9uZ19oZWFkZXI6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDExICsgbGVuKHNlbGYu
X3BlZXJfY2lkKSArIGxlbihzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAgIGlmIChwYWNrZXRf
dHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAg
ICAgICAgICAgdG9rZW5fbGVuZ3RoID0gbGVuKHNlbGYuX3BlZXJfdG9rZW4pCisgICAgICAgICAg
ICAgICAgaGVhZGVyX3NpemUgKz0gc2l6ZV91aW50X3Zhcih0b2tlbl9sZW5ndGgpICsgdG9rZW5f
bGVuZ3RoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDMgKyBsZW4o
c2VsZi5fcGVlcl9jaWQpCisKKyAgICAgICAgIyBjaGVjayB3ZSBoYXZlIGVub3VnaCBzcGFjZQor
ICAgICAgICBpZiBwYWNrZXRfc3RhcnQgKyBoZWFkZXJfc2l6ZSA+PSBzZWxmLl9idWZmZXJfY2Fw
YWNpdHk6CisgICAgICAgICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAg
ICAjIGRldGVybWluZSBhY2sgZXBvY2gKKyAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VU
X1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSU5JVElBTAorICAgICAg
ICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRToKKyAgICAgICAgICAg
IGVwb2NoID0gRXBvY2guSEFORFNIQUtFCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlcG9j
aCA9IEVwb2NoLk9ORV9SVFQKKworICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IGhlYWRlcl9z
aXplCisgICAgICAgIHNlbGYuX3BhY2tldCA9IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICBpbl9mbGlnaHQ9RmFsc2UsCisgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxz
ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251bWJlciwKKyAgICAg
ICAgICAgIHBhY2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICApCisgICAgICAgIHNlbGYu
X3BhY2tldF9jcnlwdG8gPSBjcnlwdG8KKyAgICAgICAgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVy
ID0gcGFja2V0X2xvbmdfaGVhZGVyCisgICAgICAgIHNlbGYuX3BhY2tldF9zdGFydCA9IHBhY2tl
dF9zdGFydAorICAgICAgICBzZWxmLl9wYWNrZXRfdHlwZSA9IHBhY2tldF90eXBlCisgICAgICAg
IHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1l
cworCisgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHNlbGYuX2hlYWRlcl9z
aXplKQorCisgICAgZGVmIF9lbmRfcGFja2V0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgor
ICAgICAgICBFbmRzIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1
ZiA9IHNlbGYuX2J1ZmZlcgorICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBzZWxm
Ll9wYWNrZXRfc3RhcnQKKyAgICAgICAgaWYgcGFja2V0X3NpemUgPiBzZWxmLl9oZWFkZXJfc2l6
ZToKKyAgICAgICAgICAgICMgcGFkIGluaXRpYWwgZGF0YWdyYW0KKyAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBhbmQgc2Vs
Zi5fcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldAorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2U6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKHNlbGYucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplID0gYnVmLnRlbGwoKSAtIHNlbGYuX3BhY2tl
dF9zdGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0ID0gVHJ1
ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHdyaXRlIGhlYWRlcgor
ICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAg
IGxlbmd0aCA9ICgKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUKKyAgICAgICAgICAg
ICAgICAgICAgLSBzZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAgICAgICArIFBBQ0tF
VF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2VsZi5fcGFja2V0X2Ny
eXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg
YnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQ4KHNlbGYuX3BhY2tldF90eXBlIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDMyKHNlbGYuX3ZlcnNpb24pCisgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX3BlZXJfY2lkKSkKKyAgICAgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF91aW50OChsZW4oc2VsZi5faG9zdF9jaWQpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKHNlbGYuX2hvc3RfY2lkKQorICAgICAgICAgICAgICAgIGlmIChzZWxmLl9wYWNrZXRfdHlw
ZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbihzZWxmLl9wZWVyX3Rva2VuKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl90b2tlbikKKyAgICAgICAg
ICAgICAgICBidWYucHVzaF91aW50MTYobGVuZ3RoIHwgMHg0MDAwKQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNrZXRfbnVtYmVyICYgMHhGRkZGKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3NwaW5fYml0IDw8IDUp
CisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3BhY2tldF9jcnlwdG8ua2V5X3BoYXNlIDw8
IDIpCisgICAgICAgICAgICAgICAgICAgIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5f
cGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNlbGYuX3BhY2tldF9u
dW1iZXIgJiAweEZGRkYpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgd2UgbmVl
ZCBwYWRkaW5nCisgICAgICAgICAgICAgICAgcGFkZGluZ19zaXplID0gKAorICAgICAgICAgICAg
ICAgICAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpFCisgICAgICAgICAgICAgICAgICAgIC0gUEFD
S0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgKyBzZWxmLl9oZWFkZXJf
c2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHBhY2tldF9zaXplCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIHBhZGRpbmdfc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHBhY2tldF9zaXplKQorICAgICAgICAg
ICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhwYWRkaW5nX3NpemUpKQorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfc2l6ZSArPSBwYWRkaW5nX3NpemUKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBlbmNyeXB0IGluIHBsYWNlCisgICAgICAgICAgICBwbGFpbiA9IGJ1
Zi5kYXRhX3NsaWNlKHNlbGYuX3BhY2tldF9zdGFydCwgc2VsZi5fcGFja2V0X3N0YXJ0ICsgcGFj
a2V0X3NpemUpCisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcygKKyAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXRfY3J5
cHRvLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgICAgICAgICBwbGFpblswIDogc2VsZi5f
aGVhZGVyX3NpemVdLAorICAgICAgICAgICAgICAgICAgICBwbGFpbltzZWxmLl9oZWFkZXJfc2l6
ZSA6IHBhY2tldF9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJl
ciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9w
YWNrZXQuc2VudF9ieXRlcyA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAg
ICAgICAgIHNlbGYuX3BhY2tldHMuYXBwZW5kKHNlbGYuX3BhY2tldCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX3BhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1f
ZmxpZ2h0X2J5dGVzICs9IHNlbGYuX3BhY2tldC5zZW50X2J5dGVzCisKKyAgICAgICAgICAgICMg
c2hvcnQgaGVhZGVyIHBhY2tldHMgY2Fubm90IGJlIGNvYWxsZXNjZWQsIHdlIG5lZWQgYSBuZXcg
ZGF0YWdyYW0KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYWNrZXRfbG9uZ19oZWFkZXI6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3VycmVudF9kYXRhZ3JhbSgpCisKKyAgICAgICAg
ICAgIHNlbGYuX3BhY2tldF9udW1iZXIgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
IyAiY2FuY2VsIiB0aGUgcGFja2V0CisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRf
c3RhcnQpCisKKyAgICAgICAgc2VsZi5fcGFja2V0ID0gTm9uZQorICAgICAgICBzZWxmLnF1aWNf
bG9nZ2VyX2ZyYW1lcyA9IE5vbmUKKworICAgIGRlZiBfZmx1c2hfY3VycmVudF9kYXRhZ3JhbShz
ZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhZ3JhbV9ieXRlcyA9IHNlbGYuX2J1ZmZlci50ZWxs
KCkKKyAgICAgICAgaWYgZGF0YWdyYW1fYnl0ZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXMuYXBwZW5kKHNlbGYuX2J1ZmZlci5kYXRhKQorICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2J5
dGVzICs9IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcworICAgICAgICAgICAgc2VsZi5fdG90
YWxfYnl0ZXMgKz0gZGF0YWdyYW1fYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2lu
aXQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9idWZmZXIuc2VlaygwKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjA4NmM5Yzc0Zjc3NTYw
MzIwODY5MDA3NmJlZTk2MzgxNDYxMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKQEAgLTAsMCArMSw5OCBAQAorZnJvbSBjb2xs
ZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBJdGVy
YWJsZSwgTGlzdCwgT3B0aW9uYWwKKworCitjbGFzcyBSYW5nZVNldChTZXF1ZW5jZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhbmdlczogSXRlcmFibGVbcmFuZ2VdID0gW10pOgorICAgICAg
ICBzZWxmLl9fcmFuZ2VzOiBMaXN0W3JhbmdlXSA9IFtdCisgICAgICAgIGZvciByIGluIHJhbmdl
czoKKyAgICAgICAgICAgIGFzc2VydCByLnN0ZXAgPT0gMQorICAgICAgICAgICAgc2VsZi5hZGQo
ci5zdGFydCwgci5zdG9wKQorCisgICAgZGVmIGFkZChzZWxmLCBzdGFydDogaW50LCBzdG9wOiBP
cHRpb25hbFtpbnRdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc3RvcCBpcyBOb25lOgor
ICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMQorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0
CisKKyAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKHNlbGYuX19yYW5nZXMpOgorICAgICAg
ICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYmVmb3JlIGN1cnJlbnQgaXRlbSwg
aW5zZXJ0IGhlcmUKKyAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0YXJ0OgorICAgICAgICAgICAg
ICAgIHNlbGYuX19yYW5nZXMuaW5zZXJ0KGksIHJhbmdlKHN0YXJ0LCBzdG9wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJl
bHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAgICAgICAgICAgIGlmIHN0YXJ0
ID4gci5zdG9wOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGhl
IGFkZGVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbSwgbWVyZ2UgaXQKKyAgICAgICAg
ICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCByLnN0YXJ0KQorICAgICAgICAgICAgc3RvcCA9IG1heChz
dG9wLCByLnN0b3ApCisgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5nZXMpIC0g
MSBhbmQgc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RhcnQgPD0gc3RvcDoKKyAgICAgICAgICAgICAg
ICBzdG9wID0gbWF4KHNlbGYuX19yYW5nZXNbaSArIDFdLnN0b3AsIHN0b3ApCisgICAgICAgICAg
ICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSArIDEpCisgICAgICAgICAgICBzZWxmLl9fcmFuZ2Vz
W2ldID0gcmFuZ2Uoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAj
IHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBhbGwgZXhpc3RpbmcgaXRlbXMsIGFw
cGVuZCBpdAorICAgICAgICBzZWxmLl9fcmFuZ2VzLmFwcGVuZChyYW5nZShzdGFydCwgc3RvcCkp
CisKKyAgICBkZWYgYm91bmRzKHNlbGYpIC0+IHJhbmdlOgorICAgICAgICByZXR1cm4gcmFuZ2Uo
c2VsZi5fX3Jhbmdlc1swXS5zdGFydCwgc2VsZi5fX3Jhbmdlc1stMV0uc3RvcCkKKworICAgIGRl
ZiBzaGlmdChzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMucG9w
KDApCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgc3RhcnQ6IGludCwgc3RvcDogaW50KSAtPiBO
b25lOgorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0CisKKyAgICAgICAgaSA9IDAKKyAgICAg
ICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2VzKToKKyAgICAgICAgICAgIHIgPSBzZWxmLl9f
cmFuZ2VzW2ldCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgaXMgZW50aXJlbHkg
YmVmb3JlIGN1cnJlbnQgaXRlbSwgc3RvcCBoZXJlCisgICAgICAgICAgICBpZiBzdG9wIDw9IHIu
c3RhcnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92
ZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAg
ICAgICAgICAgIGlmIHN0YXJ0ID49IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBpICs9IDEKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdl
IGNvbXBsZXRlbHkgY292ZXJzIHRoZSBjdXJyZW50IGl0ZW0sIHJlbW92ZSBpdAorICAgICAgICAg
ICAgaWYgc3RhcnQgPD0gci5zdGFydCBhbmQgc3RvcCA+PSByLnN0b3A6CisgICAgICAgICAgICAg
ICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbQorICAg
ICAgICAgICAgaWYgc3RhcnQgPiByLnN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX19yYW5n
ZXNbaV0gPSByYW5nZShyLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgICAgICAgICBpZiBzdG9wIDwg
ci5zdG9wOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLmluc2VydChpICsgMSwg
cmFuZ2Uoc3RvcCwgci5zdG9wKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHN0b3AsIHIuc3RvcCkKKworICAgICAgICAgICAgaSAr
PSAxCisKKyAgICBkZWYgX19ib29sX18oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWw6IEFueSkg
LT4gYm9vbDoKKyAgICAgICAgZm9yIHIgaW4gc2VsZi5fX3JhbmdlczoKKyAgICAgICAgICAgIGlm
IHZhbCBpbiByOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUmFuZ2VTZXQpOgorICAgICAgICAgICAgcmV0
dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMgPT0gb3Ro
ZXIuX19yYW5nZXMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IEFueSkgLT4gcmFu
Z2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzW2tleV0KKworICAgIGRlZiBfX2xlbl9f
KHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9fcmFuZ2VzKQorCisgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJSYW5nZVNldCh7fSki
LmZvcm1hdChyZXByKHNlbGYuX19yYW5nZXMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJlYjFlY2Y1NjYxZjcxYzkzZTc3YmY3ZmE2MmE3
MTYyZjM4NzBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvcmVjb3ZlcnkucHkKQEAgLTAsMCArMSw0OTcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAorCitmcm9t
IC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0X2J1aWxkZXIgaW1w
b3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAorZnJvbSAucmFuZ2VzZXQgaW1w
b3J0IFJhbmdlU2V0CisKKyMgbG9zcyBkZXRlY3Rpb24KK0tfUEFDS0VUX1RIUkVTSE9MRCA9IDMK
K0tfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcworS19HUkFOVUxBUklUWSA9IDAuMDAxICAj
IHNlY29uZHMKK0tfVElNRV9USFJFU0hPTEQgPSA5IC8gOAorS19NSUNST19TRUNPTkQgPSAwLjAw
MDAwMQorS19TRUNPTkQgPSAxLjAKKworIyBjb25nZXN0aW9uIGNvbnRyb2wKK0tfTUFYX0RBVEFH
UkFNX1NJWkUgPSAxMjgwCitLX0lOSVRJQUxfV0lORE9XID0gMTAgKiBLX01BWF9EQVRBR1JBTV9T
SVpFCitLX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUKK0tfTE9TU19S
RURVQ1RJT05fRkFDVE9SID0gMC41CisKKworY2xhc3MgUXVpY1BhY2tldFNwYWNlOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFja19hdDogT3B0aW9uYWxb
ZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLmFja19xdWV1ZSA9IFJhbmdlU2V0KCkKKyAgICAg
ICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmV4cGVjdGVkX3BhY2tldF9u
dW1iZXIgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSAtMQorICAg
ICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQor
CisgICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCisgICAgICAgIHNlbGYuYWNrX2VsaWNp
dGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSAw
CisgICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQYWNrZXRdID0ge30KKworCitj
bGFzcyBRdWljUGFja2V0UGFjZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5idWNrZXRf
dGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5ldmFsdWF0aW9uX3RpbWU6IGZsb2F0ID0g
MC4wCisgICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKwor
ICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0KSAtPiBmbG9hdDoKKyAgICAg
ICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBk
YXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8PSAw
OgorICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBhY2tldF90aW1lCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX2FmdGVyX3NlbmQoc2VsZiwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2Vs
Zi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6CisgICAgICAgICAgICAgICAgc2VsZi5i
dWNrZXRfdGltZSA9IDAuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKKworICAgIGRlZiB1cGRhdGVfYnVja2V0
KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdyA+IHNlbGYuZXZhbHVh
dGlvbl90aW1lOgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IG1pbigKKyAgICAgICAg
ICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYuZXZhbHVhdGlvbl90aW1lKSwg
c2VsZi5idWNrZXRfbWF4CisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmV2YWx1YXRp
b25fdGltZSA9IG5vdworCisgICAgZGVmIHVwZGF0ZV9yYXRlKHNlbGYsIGNvbmdlc3Rpb25fd2lu
ZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHBhY2luZ19y
YXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRfcnR0LCBLX01JQ1JPX1NFQ09O
RCkKKyAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKKyAgICAgICAgICAgIEtfTUlDUk9f
U0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2luZ19yYXRlLCBLX1NFQ09ORCkK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYnVja2V0X21heCA9ICgKKyAgICAgICAgICAgIG1h
eCgKKyAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1fU0laRSwKKyAgICAgICAgICAg
ICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBLX01BWF9EQVRBR1JBTV9TSVpF
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIC8gcGFjaW5nX3JhdGUKKyAgICAgICAgKQor
ICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNrZXRfbWF4OgorICAgICAgICAg
ICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAorCisKK2NsYXNzIFF1aWNDb25n
ZXN0aW9uQ29udHJvbDoKKyAgICAiIiIKKyAgICBOZXcgUmVubyBjb25nZXN0aW9uIGNvbnRyb2wu
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgPSBL
X0lOSVRJQUxfV0lORE9XCisgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRf
dGltZSA9IDAuMAorICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoID0gMAorICAgICAgICBz
ZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKyAgICAgICAgc2VsZi5zc3RocmVz
aDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBvbl9wYWNrZXRfYWNrZWQoc2VsZiwg
cGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ieXRlc19pbl9m
bGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgICAgICAjIGRvbid0IGluY3JlYXNlIHdp
bmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5CisgICAgICAgIGlmIHBhY2tldC5zZW50X3RpbWUg
PD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lOgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIG9yIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgorICAgICAgICAgICAgIyBzbG93IHN0YXJ0CisgICAg
ICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZvaWRhbmNlCisgICAgICAgICAg
ICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAgICAgICAg
ICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2VsZi5jb25nZXN0aW9uX3dpbmRv
dworICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlv
bl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKyAgICAgICAgICAgICAg
ICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19NQVhfREFUQUdSQU1fU0laRQor
CisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDogUXVpY1NlbnRQYWNrZXQpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X2J5dGVz
CisKKyAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1
aWNTZW50UGFja2V0XSkgLT4gTm9uZToKKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgor
ICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKwor
ICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQ
YWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBsb3N0X2xhcmdlc3RfdGltZSA9
IDAuMAorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAgICAgICBzZWxmLmJ5
dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAgICAgICAgbG9zdF9sYXJn
ZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgIyBzdGFydCBhIG5ldyBjb25n
ZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0aGUKKyAgICAgICAgIyBzdGFy
dCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBwZXJpb2QuCisgICAgICAgIGlm
IGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1l
OgorICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lID0gbm93
CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0gbWF4KAorICAgICAgICAgICAg
ICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NTX1JFRFVDVElPTl9GQUNUT1Ip
LCBLX01JTklNVU1fV0lORE9XCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnNzdGhy
ZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisgICAgICAgICMgVE9ETyA6IGNvbGxhcHNl
IGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2VzdGlvbgorCisgICAgZGVmIG9u
X3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9hdCwgbm93OiBmbG9hdCkgLT4g
Tm9uZToKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3VsZCBleGl0IHNsb3cgc3RhcnQK
KyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBzZWxmLl9ydHRfbW9uaXRvci5p
c19ydHRfaW5jcmVhc2luZygKKyAgICAgICAgICAgIGxhdGVzdF9ydHQsIG5vdworICAgICAgICAp
OgorICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKwor
CitjbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6CisgICAgIiIiCisgICAgUGFja2V0IGxvc3MgYW5k
IGNvbmdlc3Rpb24gY29udHJvbGxlci4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dDogYm9vbCwKKyAgICAg
ICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICAgICBxdWljX2xvZ2dlcjog
T3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGllbnRfd2l0aG91dF8xcnR0Cisg
ICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1CisgICAgICAgIHNlbGYuc3BhY2VzOiBM
aXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQorCisgICAgICAgICMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc2VuZF9wcm9i
ZSA9IHNlbmRfcHJvYmUKKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uCisgICAgICAgIHNlbGYu
X3B0b19jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAorICAgICAgICBzZWxmLl9ydHRfbWluID0gbWF0
aC5pbmYKKyAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4wCisgICAgICAgIHNlbGYuX3J0
dF92YXJpYW5jZSA9IDAuMAorICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tfZWxp
Y2l0aW5nX3BhY2tldCA9IDAuMAorCisgICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCisgICAg
ICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkKKyAgICAgICAgc2VsZi5fcGFj
ZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJ5dGVzX2lu
X2ZsaWdodChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5ieXRlc19pbl9m
bGlnaHQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25nZXN0aW9uX3dpbmRvdyhzZWxmKSAt
PiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdworCisgICAg
ZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSkgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCisKKyAgICAgICAgc2VsZi5fY2Mu
b25fcGFja2V0c19leHBpcmVkKAorICAgICAgICAgICAgZmlsdGVyKGxhbWJkYSB4OiB4LmluX2Zs
aWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQorICAgICAgICApCisgICAgICAgIHNw
YWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCisKKyAgICAgICAgc3BhY2UuYWNrX2F0ID0gTm9uZQor
ICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAgICAgICAgc3BhY2Uu
bG9zc190aW1lID0gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisKKyAgICBkZWYg
Z2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9uYWxbUXVpY1BhY2tldFNwYWNl
XToKKyAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKKyAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYu
c3BhY2VzOgorICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIG5vdCBOb25lIGFuZCAo
CisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA8
IGxvc3Nfc3BhY2UubG9zc190aW1lCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGxv
c3Nfc3BhY2UgPSBzcGFjZQorICAgICAgICByZXR1cm4gbG9zc19zcGFjZQorCisgICAgZGVmIGdl
dF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0OgorICAgICAgICAjIGxvc3MgdGlt
ZXIKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2UoKQor
ICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxv
c3Nfc3BhY2UubG9zc190aW1lCisKKyAgICAgICAgIyBwYWNrZXQgdGltZXIKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0CisgICAgICAgICAgICBv
ciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9yIHNwYWNlIGluIHNlbGYuc3Bh
Y2VzKSA+IDAKKyAgICAgICAgKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBLX0lOSVRJQUxfUlRUICogKDIg
Kiogc2VsZi5fcHRvX2NvdW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0
aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIgKiogc2VsZi5fcHRvX2NvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRp
bmdfcGFja2V0ICsgdGltZW91dAorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0
X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICBzZWxmLl9ydHRfc21vb3RoZWQKKyAgICAgICAgICAgICsgbWF4KDQgKiBzZWxmLl9ydHRf
dmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCisgICAgICAgICAgICArIHNlbGYubWF4X2Fja19kZWxh
eQorICAgICAgICApCisKKyAgICBkZWYgb25fYWNrX3JlY2VpdmVkKAorICAgICAgICBzZWxmLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBhY2tfcmFuZ2VzZXQ6IFJh
bmdlU2V0LAorICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAorICAgICAgICBub3c6IGZsb2F0LAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSBtZXRyaWNzIGFzIHRo
ZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGxhcmdlc3RfYWNrZWQgPSBhY2tfcmFu
Z2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKKyAgICAgICAgbGFyZ2VzdF9uZXdseV9hY2tlZCA9IE5v
bmUKKyAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCisKKyAgICAgICAgaWYgbGFyZ2Vz
dF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0OgorICAgICAgICAgICAgc3BhY2Uu
bGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCisKKyAgICAgICAgZm9yIHBhY2tl
dF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5rZXlzKCkpOgorICAgICAgICAg
ICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNrX3Jhbmdlc2V0OgorICAgICAg
ICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNvdW50ZXJzCisgICAgICAgICAg
ICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChwYWNrZXRfbnVtYmVyKQorICAg
ICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAgICAg
ICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzcGFjZS5h
Y2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFja2V0Lmlu
X2ZsaWdodDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0X2Fja2VkKHBh
Y2tldCkKKyAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0gcGFja2V0X251bWJl
cgorICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gcGFja2V0LnNlbnRfdGltZQor
CisgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcworICAgICAgICAgICAgICAgIGZv
ciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5kbGVyczoKKyAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgKmFyZ3MpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXdseSBhY2tlZCBwYWNrZXRzCisg
ICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2VzdF9uZXdseV9hY2tlZCBhbmQg
aXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIGxhdGVzdF9ydHQgPSBub3cgLSBsYXJnZXN0
X3NlbnRfdGltZQorICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUKKworICAgICAgICAgICAgIyBs
aW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQorICAgICAgICAgICAgYWNrX2RlbGF5ID0g
bWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQorCisgICAgICAgICAgICAjIHVwZGF0
ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMKKyAgICAgICAgICAgIHNlbGYu
X3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCisgICAgICAgICAgICBpZiBzZWxm
Ll9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRf
bWluID0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgaWYgc2VsZi5fcnR0X2xhdGVzdCA+
IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X2xh
dGVzdCAtPSBhY2tfZGVsYXkKKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX3J0dF9pbml0aWFs
aXplZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0X3J0dCAvIDIKKyAgICAgICAg
ICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0CisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDMgLyA0ICogc2VsZi5fcnR0
X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9t
aW4gLSBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKKyAgICAgICAgICAgICAgICAgICAgNyAvIDggKiBzZWxm
Ll9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRlc3QKKyAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJvbGxlcgorICAgICAg
ICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVzdF9ydHQsIG5vdz1ub3cpCisg
ICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25n
ZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAg
ICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UKKworICAgICAgICBzZWxmLl9k
ZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQobG9n
X3J0dD1sb2dfcnR0KQorCisgICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKKworICAgIGRlZiBv
bl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAg
ICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNlKCkKKyAgICAgICAg
aWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RldGVjdF9sb3Nz
KGxvc3Nfc3BhY2UsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9w
dG9fY291bnQgKz0gMQorCisgICAgICAgICAgICAjIHJlc2NoZWR1bGUgc29tZSBkYXRhCisgICAg
ICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAgICAgICAgc2VsZi5f
b25fcGFja2V0c19sb3N0KAorICAgICAgICAgICAgICAgICAgICB0dXBsZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEg
aTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tldHMudmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAgICAgICAgICAgIG5vdz1ub3csCisgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLl9zZW5kX3Byb2JlKCkKKworICAgIGRl
ZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0LCBzcGFjZTogUXVp
Y1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBzcGFjZS5zZW50X3BhY2tldHNbcGFja2V0
LnBhY2tldF9udW1iZXJdID0gcGFja2V0CisKKyAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGlj
aXRpbmc6CisgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCArPSAxCisg
ICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNr
X2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tf
ZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKKworICAgICAgICAgICAgIyBhZGQg
cGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAorICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0
X3NlbnQocGFja2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAg
IGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHdoZXRoZXIgYW55IHBhY2tl
dHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBsb3NzX2Rl
bGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKKyAgICAgICAgICAgIG1heChzZWxmLl9ydHRfbGF0
ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCisgICAgICAgICAgICBpZiBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQKKyAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAorICAgICAgICApCisgICAgICAg
IHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldCAtIEtfUEFDS0VU
X1RIUkVTSE9MRAorICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5vdyAtIGxvc3NfZGVsYXkKKwor
ICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQorICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBOb25l
CisgICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4gc3BhY2Uuc2VudF9wYWNrZXRz
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9h
Y2tlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcGFj
a2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tldC5zZW50X3RpbWUgPD0gdGlt
ZV90aHJlc2hvbGQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzLmFwcGVuZChwYWNrZXQp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF9sb3NzX3RpbWUgPSBw
YWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQorICAgICAgICAgICAgICAgIGlmIHNwYWNlLmxv
c3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBhY2tldF9sb3NzX3RpbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBhY2tldF9sb3NzX3RpbWUKKwor
ICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNrZXRzLCBzcGFjZT1zcGFjZSwg
bm93PW5vdykKKworICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRlZChzZWxmLCBsb2dfcnR0PUZh
bHNlKSAtPiBOb25lOgorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImJ5dGVzX2luX2Zs
aWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKKyAgICAgICAgICAgICJjd25kIjogc2Vs
Zi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgIH0KKyAgICAgICAgaWYgc2VsZi5fY2Mu
c3N0aHJlc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyJzc3RocmVzaCJdID0gc2Vs
Zi5fY2Muc3N0aHJlc2gKKworICAgICAgICBpZiBsb2dfcnR0OgorICAgICAgICAgICAgZGF0YS51
cGRhdGUoCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF0ZXN0X3J0
dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9sYXRlc3QpLAorICAg
ICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF9taW4pLAorICAgICAgICAgICAgICAgICAgICAic21vb3RoZWRfcnR0Ijogc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Ntb290aGVkKSwKKyAgICAgICAg
ICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF92YXJpYW5jZSksCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
CisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgIGNhdGVn
b3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQiLCBkYXRhPWRhdGEKKyAgICAg
ICAgKQorCisgICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgIHNlbGYsIHBhY2tldHM6
IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBm
bG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9wYWNrZXRzX2NjID0gW10KKyAgICAg
ICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgZGVsIHNwYWNlLnNlbnRfcGFj
a2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KKworICAgICAgICAgICAgaWYgcGFja2V0LmluX2Zs
aWdodDoKKyAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2MuYXBwZW5kKHBhY2tldCkKKwor
ICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAg
c3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorCisgICAgICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIs
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9zdCIsCisgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiBzZWxmLl9xdWlj
X2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9udW1iZXIpLAorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxi
YWNrcworICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0LmRlbGl2ZXJ5X2hh
bmRsZXJzOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
KmFyZ3MpCisKKyAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBjb250cm9sbGVyCisgICAgICAg
IGlmIGxvc3RfcGFja2V0c19jYzoKKyAgICAgICAgICAgIHNlbGYuX2NjLm9uX3BhY2tldHNfbG9z
dChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCisgICAgICAgICAgICBzZWxmLl9wYWNlci51cGRh
dGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25n
ZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Nt
b290aGVkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgp
CisKKworY2xhc3MgUXVpY1J0dE1vbml0b3I6CisgICAgIiIiCisgICAgUm91bmR0cmlwIHRpbWUg
bW9uaXRvciBmb3IgSHlTdGFydC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHNlbGYuX2xhc3Rf
dGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
aXplID0gNQorCisgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjogT3B0aW9uYWxbZmxvYXRdID0g
Tm9uZQorCisgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAgIHNlbGYuX3NhbXBs
ZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2FtcGxlX21pbjog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zYW1wbGVfdGltZSA9IDAuMAor
ICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiByYW5nZShzZWxmLl9zaXplKV0K
KworICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKKyAgICAgICAgc2VsZi5fc2FtcGxl
X2lkeCArPSAxCisKKyAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lkeCA+PSBzZWxmLl9zaXplOgor
ICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3JlYWR5
ID0gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAgICAgc2VsZi5fc2Ft
cGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4g
PSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBmb3Igc2FtcGxlIGluIHNlbGYuX3NhbXBs
ZXNbMTpdOgorICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNlbGYuX3NhbXBsZV9taW46Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBzYW1wbGUKKyAgICAgICAgICAg
ICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKKworICAgIGRlZiBpc19ydHRfaW5jcmVhc2luZyhz
ZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgorICAgICAgICBpZiBub3cgPiBz
ZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6CisgICAgICAgICAgICBzZWxmLmFkZF9y
dHQocnR0KQorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSBub3cKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcmVhZHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsdGVyZWRfbWlu
IGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5fc2FtcGxlX21heDoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2VsZi5fc2FtcGxlX21heAorCisg
ICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWluIC0gc2VsZi5fZmlsdGVyZWRf
bWluCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNlbGYuX2ZpbHRlcmVkX21pbjoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVsdGEgPiAwOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHJldHVybiBGYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDVjM2E1
YzU1YzlhMzk1ODkzOThjOTdjZWU5NjVjMmIzNzA2NjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKQEAgLTAsMCArMSwzOSBAQAoraW1w
b3J0IGlwYWRkcmVzcworCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0
IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1w
b3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJp
YyBpbXBvcnQgcGFkZGluZywgcnNhCisKK2Zyb20gLmNvbm5lY3Rpb24gaW1wb3J0IE5ldHdvcmtB
ZGRyZXNzCisKKworZGVmIGVuY29kZV9hZGRyZXNzKGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBi
eXRlczoKKyAgICByZXR1cm4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoYWRkclswXSkucGFja2VkICsg
Ynl0ZXMoW2FkZHJbMV0gPj4gOCwgYWRkclsxXSAmIDB4RkZdKQorCisKK2NsYXNzIFF1aWNSZXRy
eVRva2VuSGFuZGxlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAg
c2VsZi5fa2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgcHVibGlj
X2V4cG9uZW50PTY1NTM3LCBrZXlfc2l6ZT0xMDI0LCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgp
CisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfdG9rZW4oc2VsZiwgYWRkcjogTmV0d29ya0Fk
ZHJlc3MsIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9t
ZXNzYWdlID0gZW5jb2RlX2FkZHJlc3MoYWRkcikgKyBiInwiICsgZGVzdGluYXRpb25fY2lkCisg
ICAgICAgIHJldHVybiBzZWxmLl9rZXkucHVibGljX2tleSgpLmVuY3J5cHQoCisgICAgICAgICAg
ICByZXRyeV9tZXNzYWdlLAorICAgICAgICAgICAgcGFkZGluZy5PQUVQKAorICAgICAgICAgICAg
ICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVzLlNIQTI1NigpKSwgYWxnb3JpdGhtPWhhc2hlcy5T
SEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHZhbGlkYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCB0b2tlbjogYnl0ZXMp
IC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9tZXNzYWdlID0gc2VsZi5fa2V5LmRlY3J5cHQoCisg
ICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgKKyAgICAgICAgICAg
ICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29yaXRobT1oYXNoZXMu
U0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAg
ZW5jb2RlZF9hZGRyLCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gcmV0cnlfbWVzc2FnZS5zcGxp
dChiInwiLCBtYXhzcGxpdD0xKQorICAgICAgICBpZiBlbmNvZGVkX2FkZHIgIT0gZW5jb2RlX2Fk
ZHJlc3MoYWRkcik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZW1vdGUgYWRkcmVz
cyBkb2VzIG5vdCBtYXRjaC4iKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxfY29ubmVjdGlvbl9p
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MjM2
ODZmNWQ2YmNkNmY5MGI0ZTUzZjM3MTRmM2JmOWI2ZjYxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKQEAgLTAsMCArMSwyMTQgQEAK
K2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworZnJv
bSAucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gLnBhY2tldF9idWlsZGVyIGlt
cG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisK
KworY2xhc3MgUXVpY1N0cmVhbToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHN0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIG1heF9zdHJl
YW1fZGF0YV9sb2NhbDogaW50ID0gMCwKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZTog
aW50ID0gMCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfYmxvY2tlZCA9IEZhbHNl
CisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gbWF4X3N0cmVhbV9kYXRhX2xv
Y2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gbWF4X3N0
cmVhbV9kYXRhX3JlbW90ZQorICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gVHJ1
ZQorCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgc2VsZi5fcmVjdl9oaWdoZXN0ID0gMCAgIyB0aGUgaGlnaGVzdCBvZmZz
ZXQgZXZlciBzZWVuCisgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHNlbGYuX3NlbmRfYWNrZWQgPSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuX3NlbmRf
YnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfZmluOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCA9IDAgICMg
dGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAgICAgc2VsZi5fc2Vu
ZF9idWZmZXJfc3RvcCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0b3Agb2YgdGhlIGJ1ZmZl
cgorICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSAwCisgICAgICAgIHNlbGYuX3NlbmRfcGVu
ZGluZyA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZhbHNl
CisKKyAgICAgICAgc2VsZi5fX3N0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIHN0cmVhbV9pZChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1
cm4gc2VsZi5fX3N0cmVhbV9pZAorCisgICAgIyByZWFkZXIKKworICAgIGRlZiBhZGRfZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSkgLT4gT3B0aW9uYWxbZXZlbnRzLlN0cmVhbURh
dGFSZWNlaXZlZF06CisgICAgICAgICIiIgorICAgICAgICBBZGQgYSBmcmFtZSBvZiByZWNlaXZl
ZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcG9zID0gZnJhbWUub2Zmc2V0IC0gc2VsZi5f
cmVjdl9idWZmZXJfc3RhcnQKKyAgICAgICAgY291bnQgPSBsZW4oZnJhbWUuZGF0YSkKKyAgICAg
ICAgZnJhbWVfZW5kID0gZnJhbWUub2Zmc2V0ICsgY291bnQKKworICAgICAgICAjIHdlIHNob3Vs
ZCByZWNlaXZlIG5vIG1vcmUgZGF0YSBiZXlvbmQgRklOIQorICAgICAgICBpZiBzZWxmLl9yZWN2
X2J1ZmZlcl9maW4gaXMgbm90IE5vbmUgYW5kIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfYnVmZmVy
X2ZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRGF0YSByZWNlaXZlZCBiZXlvbmQg
RklOIikKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXJfZmluID0gZnJhbWVfZW5kCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfaGln
aGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IGZyYW1lX2VuZAorCisgICAg
ICAgICMgZmFzdCBwYXRoOiBuZXcgaW4tb3JkZXIgY2h1bmsKKyAgICAgICAgaWYgcG9zID09IDAg
YW5kIGNvdW50IGFuZCBub3Qgc2VsZi5fcmVjdl9idWZmZXI6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCArPSBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJl
YW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1mcmFtZS5kYXRhLCBlbmRfc3Ry
ZWFtPWZyYW1lLmZpbiwgc3RyZWFtX2lkPXNlbGYuX19zdHJlYW1faWQKKyAgICAgICAgICAgICkK
KworICAgICAgICAjIGRpc2NhcmQgZHVwbGljYXRlIGRhdGEKKyAgICAgICAgaWYgcG9zIDwgMDoK
KyAgICAgICAgICAgIGZyYW1lLmRhdGEgPSBmcmFtZS5kYXRhWy1wb3M6XQorICAgICAgICAgICAg
ZnJhbWUub2Zmc2V0IC09IHBvcworICAgICAgICAgICAgcG9zID0gMAorCisgICAgICAgICMgbWFy
a2VkIHJlY2VpdmVkIHJhbmdlCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IGZyYW1lLm9mZnNldDoK
KyAgICAgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzLmFkZChmcmFtZS5vZmZzZXQsIGZyYW1lX2Vu
ZCkKKworICAgICAgICAjIGFkZCBuZXcgZGF0YQorICAgICAgICBnYXAgPSBwb3MgLSBsZW4oc2Vs
Zi5fcmVjdl9idWZmZXIpCisgICAgICAgIGlmIGdhcCA+IDA6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlciArPSBieXRlYXJyYXkoZ2FwKQorICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcltw
b3MgOiBwb3MgKyBjb3VudF0gPSBmcmFtZS5kYXRhCisKKyAgICAgICAgIyByZXR1cm4gZGF0YSBm
cm9tIHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGRhdGEgPSBzZWxmLl9wdWxsX2Rh
dGEoKQorICAgICAgICBlbmRfc3RyZWFtID0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPT0gc2Vs
Zi5fcmVjdl9idWZmZXJfZmluCisgICAgICAgIGlmIGRhdGEgb3IgZW5kX3N0cmVhbToKKyAgICAg
ICAgICAgIHJldHVybiBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c2VsZi5fX3N0cmVh
bV9pZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBfcHVsbF9kYXRhKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAg
ICAgICAgUmVtb3ZlIGRhdGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAg
IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBzZWxmLl9y
ZWN2X3Jhbmdlc1swXS5zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAorICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBGYWxzZQor
ICAgICAgICBpZiBub3QgaGFzX2RhdGFfdG9fcmVhZDoKKyAgICAgICAgICAgIHJldHVybiBiIiIK
KworICAgICAgICByID0gc2VsZi5fcmVjdl9yYW5nZXMuc2hpZnQoKQorICAgICAgICBwb3MgPSBy
LnN0b3AgLSByLnN0YXJ0CisgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9yZWN2X2J1ZmZlcls6
cG9zXSkKKyAgICAgICAgZGVsIHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdCisgICAgICAgIHNlbGYu
X3JlY3ZfYnVmZmVyX3N0YXJ0ID0gci5zdG9wCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAj
IHdyaXRlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5leHRfc2VuZF9vZmZzZXQoc2VsZikg
LT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIG9mZnNldCBmb3IgdGhlIG5leHQgZnJh
bWUgdG8gc2VuZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzcGFj
ZSBuZWVkZWQgZm9yIHRoZSBmcmFtZSdzIGBvZmZzZXRgIGZpZWxkLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfcGVuZGluZ1swXS5zdGFy
dAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9z
ZW5kX2J1ZmZlcl9zdG9wCisKKyAgICBkZWYgZ2V0X2ZyYW1lKAorICAgICAgICBzZWxmLCBtYXhf
c2l6ZTogaW50LCBtYXhfb2Zmc2V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICkgLT4gT3B0
aW9uYWxbUXVpY1N0cmVhbUZyYW1lXToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhIGZyYW1l
IG9mIGRhdGEgdG8gc2VuZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgZ2V0IHRoZSBmaXJzdCBw
ZW5kaW5nIGRhdGEgcmFuZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgciA9IHNlbGYuX3Nl
bmRfcGVuZGluZ1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGlm
IHNlbGYuX3NlbmRfcGVuZGluZ19lb2Y6CisgICAgICAgICAgICAgICAgIyBGSU4gb25seQorICAg
ICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBGYWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBRdWljU3RyZWFtRnJhbWUoZmluPVRydWUsIG9mZnNldD1zZWxmLl9zZW5kX2J1
ZmZlcl9maW4pCisKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVl
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYXBwbHkgZmxvdyBjb250cm9s
CisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgICAgICBzdG9wID0gbWluKHIuc3RvcCwgc3Rh
cnQgKyBtYXhfc2l6ZSkKKyAgICAgICAgaWYgbWF4X29mZnNldCBpcyBub3QgTm9uZSBhbmQgc3Rv
cCA+IG1heF9vZmZzZXQ6CisgICAgICAgICAgICBzdG9wID0gbWF4X29mZnNldAorICAgICAgICBp
ZiBzdG9wIDw9IHN0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNy
ZWF0ZSBmcmFtZQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAgICAgICAgICAg
IGRhdGE9Ynl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJbCisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0IC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgOiBzdG9wIC0gc2Vs
Zi5fc2VuZF9idWZmZXJfc3RhcnQKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgb2Zmc2V0PXN0YXJ0LAorICAgICAgICApCisgICAgICAgIHNlbGYuX3NlbmRf
cGVuZGluZy5zdWJ0cmFjdChzdGFydCwgc3RvcCkKKworICAgICAgICAjIHRyYWNrIHRoZSBoaWdo
ZXN0IG9mZnNldCBldmVyIHNlbnQKKyAgICAgICAgaWYgc3RvcCA+IHNlbGYuX3NlbmRfaGlnaGVz
dDoKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9IHN0b3AKKworICAgICAgICAjIGlm
IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIEVPRiB3YXMgd3JpdHRlbiwgc2V0IHRoZSBGSU4gYml0
CisgICAgICAgIGlmIHNlbGYuX3NlbmRfYnVmZmVyX2ZpbiA9PSBzdG9wOgorICAgICAgICAgICAg
ZnJhbWUuZmluID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZh
bHNlCisKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgb25fZGF0YV9kZWxpdmVyeSgK
KyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdGFydDogaW50LCBz
dG9wOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3
aGVuIHNlbnQgZGF0YSBpcyBBQ0snZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2VuZF9i
dWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICBpZiBkZWxpdmVyeSA9PSBRdWljRGVsaXZl
cnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2Fja2VkLmFkZChzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICBm
aXJzdF9yYW5nZSA9IHNlbGYuX3NlbmRfYWNrZWRbMF0KKyAgICAgICAgICAgICAgICBpZiBmaXJz
dF9yYW5nZS5zdGFydCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydDoKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IGZpcnN0X3JhbmdlLnN0b3AgLSBmaXJzdF9yYW5nZS5zdGFydAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLnNoaWZ0KCkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgKz0gc2l6ZQorICAgICAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5fc2VuZF9idWZmZXJbOnNpemVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBp
ZiBzdG9wID4gc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLmFkZChz
dGFydCwgc3RvcCkKKyAgICAgICAgICAgIGlmIHN0b3AgPT0gc2VsZi5fc2VuZF9idWZmZXJfZmlu
OgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfZW1wdHkgPSBGYWxzZQorICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFdyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgUVVJQyBzdHJl
YW0uCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fc2VuZF9idWZmZXJfZmluIGlz
IE5vbmUsICJjYW5ub3QgY2FsbCB3cml0ZSgpIGFmdGVyIEZJTiIKKyAgICAgICAgc2l6ZSA9IGxl
bihkYXRhKQorCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVy
X2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZy5hZGQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCwgc2VsZi5fc2VuZF9idWZmZXJf
c3RvcCArIHNpemUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVy
ICs9IGRhdGEKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AgKz0gc2l6ZQorICAg
ICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0
eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gPSBzZWxmLl9zZW5k
X2J1ZmZlcl9zdG9wCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gVHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OGI4YzI2ZmE0YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwyOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0
X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2V2ZW50cy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNv
dmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMGI2OWZmMmQzMjI3NDE2ZTcxNWRmZTE4YjgwMjY5ZTBiMWMyNTliCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpAQCAtMCwwICsx
LDE5MjggQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHNzbAoraW1wb3J0IHN0cnVjdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFu
YWdlcgorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVt
IGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJv
bSB0eXBpbmcgaW1wb3J0ICgKKyAgICBBbnksCisgICAgQ2FsbGFibGUsCisgICAgRGljdCwKKyAg
ICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBTZXF1ZW5jZSwKKyAg
ICBUdXBsZSwKKyAgICBUeXBlVmFyLAorICAgIFVuaW9uLAorKQorCitpbXBvcnQgY2VydGlmaQor
ZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3JhcGh5LmV4Y2VwdGlv
bnMgaW1wb3J0IEludmFsaWRTaWduYXR1cmUKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5iYWNr
ZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmlu
ZGluZ3Mub3BlbnNzbC5iaW5kaW5nIGltcG9ydCBCaW5kaW5nCitmcm9tIGNyeXB0b2dyYXBoeS5o
YXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBobWFjLCBzZXJpYWxpemF0aW9uCitmcm9t
IGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCAoCisgICAg
ZHNhLAorICAgIGVjLAorICAgIHBhZGRpbmcsCisgICAgcnNhLAorICAgIHg0NDgsCisgICAgeDI1
NTE5LAorKQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMua2RmLmhrZGYgaW1w
b3J0IEhLREZFeHBhbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLnNlcmlh
bGl6YXRpb24gaW1wb3J0IEVuY29kaW5nLCBQdWJsaWNGb3JtYXQKKworZnJvbSAuYnVmZmVyIGlt
cG9ydCBCdWZmZXIKKworYmluZGluZyA9IEJpbmRpbmcoKQorYmluZGluZy5pbml0X3N0YXRpY19s
b2NrcygpCitmZmkgPSBiaW5kaW5nLmZmaQorbGliID0gYmluZGluZy5saWIKKworVExTX1ZFUlNJ
T05fMV8yID0gMHgwMzAzCitUTFNfVkVSU0lPTl8xXzMgPSAweDAzMDQKK1RMU19WRVJTSU9OXzFf
M19EUkFGVF8yOCA9IDB4N0YxQworVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3ID0gMHg3RjFCCitU
TFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYgPSAweDdGMUEKKworVCA9IFR5cGVWYXIoIlQiKQorCisj
IGZhY2lsaXRhdGUgbW9ja2luZyBmb3IgdGhlIHRlc3Qgc3VpdGUKK3V0Y25vdyA9IGRhdGV0aW1l
LmRhdGV0aW1lLnV0Y25vdworCisKK2NsYXNzIEFsZXJ0RGVzY3JpcHRpb24oSW50RW51bSk6Cisg
ICAgY2xvc2Vfbm90aWZ5ID0gMAorICAgIHVuZXhwZWN0ZWRfbWVzc2FnZSA9IDEwCisgICAgYmFk
X3JlY29yZF9tYWMgPSAyMAorICAgIHJlY29yZF9vdmVyZmxvdyA9IDIyCisgICAgaGFuZHNoYWtl
X2ZhaWx1cmUgPSA0MAorICAgIGJhZF9jZXJ0aWZpY2F0ZSA9IDQyCisgICAgdW5zdXBwb3J0ZWRf
Y2VydGlmaWNhdGUgPSA0MworICAgIGNlcnRpZmljYXRlX3Jldm9rZWQgPSA0NAorICAgIGNlcnRp
ZmljYXRlX2V4cGlyZWQgPSA0NQorICAgIGNlcnRpZmljYXRlX3Vua25vd24gPSA0NgorICAgIGls
bGVnYWxfcGFyYW1ldGVyID0gNDcKKyAgICB1bmtub3duX2NhID0gNDgKKyAgICBhY2Nlc3NfZGVu
aWVkID0gNDkKKyAgICBkZWNvZGVfZXJyb3IgPSA1MAorICAgIGRlY3J5cHRfZXJyb3IgPSA1MQor
ICAgIHByb3RvY29sX3ZlcnNpb24gPSA3MAorICAgIGluc3VmZmljaWVudF9zZWN1cml0eSA9IDcx
CisgICAgaW50ZXJuYWxfZXJyb3IgPSA4MAorICAgIGluYXBwcm9wcmlhdGVfZmFsbGJhY2sgPSA4
NgorICAgIHVzZXJfY2FuY2VsZWQgPSA5MAorICAgIG1pc3NpbmdfZXh0ZW5zaW9uID0gMTA5Cisg
ICAgdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uID0gMTEwCisgICAgdW5yZWNvZ25pemVkX25hbWUgPSAx
MTIKKyAgICBiYWRfY2VydGlmaWNhdGVfc3RhdHVzX3Jlc3BvbnNlID0gMTEzCisgICAgdW5rbm93
bl9wc2tfaWRlbnRpdHkgPSAxMTUKKyAgICBjZXJ0aWZpY2F0ZV9yZXF1aXJlZCA9IDExNgorICAg
IG5vX2FwcGxpY2F0aW9uX3Byb3RvY29sID0gMTIwCisKKworY2xhc3MgQWxlcnQoRXhjZXB0aW9u
KToKKyAgICBkZXNjcmlwdGlvbjogQWxlcnREZXNjcmlwdGlvbgorCisKK2NsYXNzIEFsZXJ0QmFk
Q2VydGlmaWNhdGUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5i
YWRfY2VydGlmaWNhdGUKKworCitjbGFzcyBBbGVydENlcnRpZmljYXRlRXhwaXJlZChBbGVydCk6
CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmNlcnRpZmljYXRlX2V4cGlyZWQK
KworCitjbGFzcyBBbGVydERlY3J5cHRFcnJvcihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBB
bGVydERlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3IKKworCitjbGFzcyBBbGVydEhhbmRzaGFrZUZh
aWx1cmUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5oYW5kc2hh
a2VfZmFpbHVyZQorCisKK2NsYXNzIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcihBbGVydCk6CisgICAg
ZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCisKKworY2xh
c3MgQWxlcnRJbnRlcm5hbEVycm9yKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVz
Y3JpcHRpb24uaW50ZXJuYWxfZXJyb3IKKworCitjbGFzcyBBbGVydFByb3RvY29sVmVyc2lvbihB
bGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNp
b24KKworCitjbGFzcyBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlKEFsZXJ0KToKKyAgICBkZXNjcmlw
dGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlCisKKworY2xhc3MgRGly
ZWN0aW9uKEVudW0pOgorICAgIERFQ1JZUFQgPSAwCisgICAgRU5DUllQVCA9IDEKKworCitjbGFz
cyBFcG9jaChFbnVtKToKKyAgICBJTklUSUFMID0gMAorICAgIFpFUk9fUlRUID0gMQorICAgIEhB
TkRTSEFLRSA9IDIKKyAgICBPTkVfUlRUID0gMworCisKK2NsYXNzIFN0YXRlKEVudW0pOgorICAg
IENMSUVOVF9IQU5EU0hBS0VfU1RBUlQgPSAwCisgICAgQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVM
TE8gPSAxCisgICAgQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUyA9IDIKKyAgICBD
TElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEUgPSAzCisgICAg
Q0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9DRVJUSUZJQ0FURSA9IDQKKyAgICBDTElFTlRfRVhQ
RUNUX0NFUlRJRklDQVRFX1ZFUklGWSA9IDUKKyAgICBDTElFTlRfRVhQRUNUX0ZJTklTSEVEID0g
NgorICAgIENMSUVOVF9QT1NUX0hBTkRTSEFLRSA9IDcKKworICAgIFNFUlZFUl9FWFBFQ1RfQ0xJ
RU5UX0hFTExPID0gOAorICAgIFNFUlZFUl9FWFBFQ1RfRklOSVNIRUQgPSA5CisgICAgU0VSVkVS
X1BPU1RfSEFORFNIQUtFID0gMTAKKworCitkZWYgaGtkZl9sYWJlbChsYWJlbDogYnl0ZXMsIGhh
c2hfdmFsdWU6IGJ5dGVzLCBsZW5ndGg6IGludCkgLT4gYnl0ZXM6CisgICAgZnVsbF9sYWJlbCA9
IGIidGxzMTMgIiArIGxhYmVsCisgICAgcmV0dXJuICgKKyAgICAgICAgc3RydWN0LnBhY2soIiFI
QiIsIGxlbmd0aCwgbGVuKGZ1bGxfbGFiZWwpKQorICAgICAgICArIGZ1bGxfbGFiZWwKKyAgICAg
ICAgKyBzdHJ1Y3QucGFjaygiIUIiLCBsZW4oaGFzaF92YWx1ZSkpCisgICAgICAgICsgaGFzaF92
YWx1ZQorICAgICkKKworCitkZWYgaGtkZl9leHBhbmRfbGFiZWwoCisgICAgYWxnb3JpdGhtOiBo
YXNoZXMuSGFzaEFsZ29yaXRobSwKKyAgICBzZWNyZXQ6IGJ5dGVzLAorICAgIGxhYmVsOiBieXRl
cywKKyAgICBoYXNoX3ZhbHVlOiBieXRlcywKKyAgICBsZW5ndGg6IGludCwKKykgLT4gYnl0ZXM6
CisgICAgcmV0dXJuIEhLREZFeHBhbmQoCisgICAgICAgIGFsZ29yaXRobT1hbGdvcml0aG0sCisg
ICAgICAgIGxlbmd0aD1sZW5ndGgsCisgICAgICAgIGluZm89aGtkZl9sYWJlbChsYWJlbCwgaGFz
aF92YWx1ZSwgbGVuZ3RoKSwKKyAgICAgICAgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSwKKyAg
ICApLmRlcml2ZShzZWNyZXQpCisKKworZGVmIGhrZGZfZXh0cmFjdCgKKyAgICBhbGdvcml0aG06
IGhhc2hlcy5IYXNoQWxnb3JpdGhtLCBzYWx0OiBieXRlcywga2V5X21hdGVyaWFsOiBieXRlcwor
KSAtPiBieXRlczoKKyAgICBoID0gaG1hYy5ITUFDKHNhbHQsIGFsZ29yaXRobSwgYmFja2VuZD1k
ZWZhdWx0X2JhY2tlbmQoKSkKKyAgICBoLnVwZGF0ZShrZXlfbWF0ZXJpYWwpCisgICAgcmV0dXJu
IGguZmluYWxpemUoKQorCisKK2RlZiBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICBkYXRhOiBi
eXRlcywgcGFzc3dvcmQ6IE9wdGlvbmFsW2J5dGVzXQorKSAtPiBVbmlvbltkc2EuRFNBUHJpdmF0
ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2YXRlS2V5XToKKyAg
ICAiIiIKKyAgICBMb2FkIGEgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkuCisgICAgIiIiCisgICAg
cmV0dXJuIHNlcmlhbGl6YXRpb24ubG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgICAgIGRhdGEs
IHBhc3N3b3JkPXBhc3N3b3JkLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgKQorCisK
K2RlZiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhkYXRhOiBieXRlcykgLT4gTGlzdFt4NTA5
LkNlcnRpZmljYXRlXToKKyAgICAiIiIKKyAgICBMb2FkIGEgY2hhaW4gb2YgUEVNLWVuY29kZWQg
WDUwOSBjZXJ0aWZpY2F0ZXMuCisgICAgIiIiCisgICAgYm91bmRhcnkgPSBiIi0tLS0tRU5EIENF
UlRJRklDQVRFLS0tLS1cbiIKKyAgICBjZXJ0aWZpY2F0ZXMgPSBbXQorICAgIGZvciBjaHVuayBp
biBkYXRhLnNwbGl0KGJvdW5kYXJ5KToKKyAgICAgICAgaWYgY2h1bms6CisgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHg1MDkubG9hZF9wZW1feDUwOV9j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgKyBib3VuZGFyeSwgYmFja2Vu
ZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg
ICByZXR1cm4gY2VydGlmaWNhdGVzCisKKworZGVmIG9wZW5zc2xfYXNzZXJ0KG9rOiBib29sLCBm
dW5jOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgbm90IG9rOgorICAgICAgICBsaWIuRVJSX2NsZWFy
X2Vycm9yKCkKKyAgICAgICAgcmFpc2UgQWxlcnRJbnRlcm5hbEVycm9yKCJPcGVuU1NMIGNhbGwg
dG8gJXMgZmFpbGVkIiAlIGZ1bmMpCisKKworZGVmIG9wZW5zc2xfZGVjb2RlX3N0cmluZyhjaGFy
cCkgLT4gc3RyOgorICAgIHJldHVybiBmZmkuc3RyaW5nKGNoYXJwKS5kZWNvZGUoInV0Zi04Iikg
aWYgY2hhcnAgZWxzZSAiIgorCisKK2RlZiBvcGVuc3NsX2VuY29kZV9wYXRoKHM6IE9wdGlvbmFs
W3N0cl0pIC0+IEFueToKKyAgICBpZiBzIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gb3Mu
ZnNlbmNvZGUocykKKyAgICByZXR1cm4gZmZpLk5VTEwKKworCitkZWYgY2VydF94NTA5X3B0cihj
ZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSkgLT4gQW55OgorICAgICIiIgorICAgIEFjY2Vz
c29yIGZvciBwcml2YXRlIGF0dHJpYnV0ZS4KKyAgICAiIiIKKyAgICByZXR1cm4gZ2V0YXR0cihj
ZXJ0aWZpY2F0ZSwgIl94NTA5IikKKworCitkZWYgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgIGNl
cnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRlLAorICAgIGNoYWluOiBMaXN0W3g1MDkuQ2VydGlm
aWNhdGVdID0gW10sCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg
IGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICBjYWZpbGU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCispIC0+IE5vbmU6
CisgICAgIyB2ZXJpZnkgZGF0ZXMKKyAgICBub3cgPSB1dGNub3coKQorICAgIGlmIG5vdyA8IGNl
cnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmU6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKyAgICBpZiBub3cgPiBj
ZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXI6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIgdmFsaWQiKQorCisgICAgIyB2ZXJp
Znkgc3ViamVjdAorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBzdWJq
ZWN0ID0gW10KKyAgICAgICAgc3ViamVjdEFsdE5hbWU6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSA9
IFtdCisgICAgICAgIGZvciBhdHRyIGluIGNlcnRpZmljYXRlLnN1YmplY3Q6CisgICAgICAgICAg
ICBpZiBhdHRyLm9pZCA9PSB4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUU6CisgICAgICAgICAgICAg
ICAgc3ViamVjdC5hcHBlbmQoKCgiY29tbW9uTmFtZSIsIGF0dHIudmFsdWUpLCkpCisgICAgICAg
IGZvciBleHQgaW4gY2VydGlmaWNhdGUuZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXh0LnZhbHVlLCB4NTA5LlN1YmplY3RBbHRlcm5hdGl2ZU5hbWUpOgorICAgICAgICAg
ICAgICAgIGZvciBuYW1lIGluIGV4dC52YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShuYW1lLCB4NTA5LkROU05hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
amVjdEFsdE5hbWUuYXBwZW5kKCgiRE5TIiwgbmFtZS52YWx1ZSkpCisKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lKAorICAgICAgICAgICAgICAgIHsic3ViamVj
dCI6IHR1cGxlKHN1YmplY3QpLCAic3ViamVjdEFsdE5hbWUiOiB0dXBsZShzdWJqZWN0QWx0TmFt
ZSl9LAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorICAgICAg
ICBleGNlcHQgc3NsLkNlcnRpZmljYXRlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2Ug
QWxlcnRCYWRDZXJ0aWZpY2F0ZSgiXG4iLmpvaW4oZXhjLmFyZ3MpKSBmcm9tIGV4YworCisgICAg
IyB2ZXJpZnkgY2VydGlmaWNhdGUgY2hhaW4KKyAgICBzdG9yZSA9IGxpYi5YNTA5X1NUT1JFX25l
dygpCisgICAgb3BlbnNzbF9hc3NlcnQoc3RvcmUgIT0gZmZpLk5VTEwsICJYNTA5X3N0b3JlX25l
dyIpCisgICAgc3RvcmUgPSBmZmkuZ2Moc3RvcmUsIGxpYi5YNTA5X1NUT1JFX2ZyZWUpCisKKyAg
ICAjIGxvYWQgZGVmYXVsdCBDQXMKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgbGliLlg1
MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMoc3RvcmUpLCAiWDUwOV9TVE9SRV9zZXRfZGVmYXVs
dF9wYXRocyIKKyAgICApCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgIGxpYi5YNTA5X1NU
T1JFX2xvYWRfbG9jYXRpb25zKAorICAgICAgICAgICAgc3RvcmUsIG9wZW5zc2xfZW5jb2RlX3Bh
dGgoY2VydGlmaS53aGVyZSgpKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChOb25lKSwKKyAgICAgICAg
KSwKKyAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAorICAgICkKKworICAgICMg
bG9hZCBleHRyYSBDQXMKKyAgICBpZiBjYWRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBj
ZXJ0IGluIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGNhZGF0YSk6CisgICAgICAgICAgICBv
cGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgICAgICBsaWIuWDUwOV9TVE9SRV9hZGRfY2VydChz
dG9yZSwgY2VydF94NTA5X3B0cihjZXJ0KSksCisgICAgICAgICAgICAgICAgIlg1MDlfU1RPUkVf
YWRkX2NlcnQiLAorICAgICAgICAgICAgKQorCisgICAgaWYgY2FmaWxlIGlzIG5vdCBOb25lIG9y
IGNhcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAg
ICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAgICAgICBzdG9yZSwg
b3BlbnNzbF9lbmNvZGVfcGF0aChjYWZpbGUpLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNhcGF0aCkK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAiWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucyIs
CisgICAgICAgICkKKworICAgIGNoYWluX3N0YWNrID0gbGliLnNrX1g1MDlfbmV3X251bGwoKQor
ICAgIG9wZW5zc2xfYXNzZXJ0KGNoYWluX3N0YWNrICE9IGZmaS5OVUxMLCAic2tfWDUwOV9uZXdf
bnVsbCIpCisgICAgY2hhaW5fc3RhY2sgPSBmZmkuZ2MoY2hhaW5fc3RhY2ssIGxpYi5za19YNTA5
X2ZyZWUpCisgICAgZm9yIGNlcnQgaW4gY2hhaW46CisgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAor
ICAgICAgICAgICAgbGliLnNrX1g1MDlfcHVzaChjaGFpbl9zdGFjaywgY2VydF94NTA5X3B0cihj
ZXJ0KSksICJza19YNTA5X3B1c2giCisgICAgICAgICkKKworICAgIHN0b3JlX2N0eCA9IGxpYi5Y
NTA5X1NUT1JFX0NUWF9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3JlX2N0eCAhPSBmZmku
TlVMTCwgIlg1MDlfU1RPUkVfQ1RYX25ldyIpCisgICAgc3RvcmVfY3R4ID0gZmZpLmdjKHN0b3Jl
X2N0eCwgbGliLlg1MDlfU1RPUkVfQ1RYX2ZyZWUpCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAg
ICAgIGxpYi5YNTA5X1NUT1JFX0NUWF9pbml0KAorICAgICAgICAgICAgc3RvcmVfY3R4LCBzdG9y
ZSwgY2VydF94NTA5X3B0cihjZXJ0aWZpY2F0ZSksIGNoYWluX3N0YWNrCisgICAgICAgICksCisg
ICAgICAgICJYNTA5X1NUT1JFX0NUWF9pbml0IiwKKyAgICApCisKKyAgICByZXMgPSBsaWIuWDUw
OV92ZXJpZnlfY2VydChzdG9yZV9jdHgpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgZXJyID0g
bGliLlg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihzdG9yZV9jdHgpCisgICAgICAgIGVycl9zdHIg
PSBvcGVuc3NsX2RlY29kZV9zdHJpbmcobGliLlg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5n
KGVycikpCisgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoZXJyX3N0cikKKworCitj
bGFzcyBDaXBoZXJTdWl0ZShJbnRFbnVtKToKKyAgICBBRVNfMTI4X0dDTV9TSEEyNTYgPSAweDEz
MDEKKyAgICBBRVNfMjU2X0dDTV9TSEEzODQgPSAweDEzMDIKKyAgICBDSEFDSEEyMF9QT0xZMTMw
NV9TSEEyNTYgPSAweDEzMDMKKyAgICBFTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViA9IDB4
MDBGRgorCisKK2NsYXNzIENvbXByZXNzaW9uTWV0aG9kKEludEVudW0pOgorICAgIE5VTEwgPSAw
CisKKworY2xhc3MgRXh0ZW5zaW9uVHlwZShJbnRFbnVtKToKKyAgICBTRVJWRVJfTkFNRSA9IDAK
KyAgICBTVEFUVVNfUkVRVUVTVCA9IDUKKyAgICBTVVBQT1JURURfR1JPVVBTID0gMTAKKyAgICBT
SUdOQVRVUkVfQUxHT1JJVEhNUyA9IDEzCisgICAgQUxQTiA9IDE2CisgICAgQ09NUFJFU1NfQ0VS
VElGSUNBVEUgPSAyNworICAgIFBSRV9TSEFSRURfS0VZID0gNDEKKyAgICBFQVJMWV9EQVRBID0g
NDIKKyAgICBTVVBQT1JURURfVkVSU0lPTlMgPSA0MworICAgIENPT0tJRSA9IDQ0CisgICAgUFNL
X0tFWV9FWENIQU5HRV9NT0RFUyA9IDQ1CisgICAgS0VZX1NIQVJFID0gNTEKKyAgICBRVUlDX1RS
QU5TUE9SVF9QQVJBTUVURVJTID0gNjU0NDUKKyAgICBFTkNSWVBURURfU0VSVkVSX05BTUUgPSA2
NTQ4NgorCisKK2NsYXNzIEdyb3VwKEludEVudW0pOgorICAgIFNFQ1AyNTZSMSA9IDB4MDAxNwor
ICAgIFNFQ1AzODRSMSA9IDB4MDAxOAorICAgIFNFQ1A1MjFSMSA9IDB4MDAxOQorICAgIFgyNTUx
OSA9IDB4MDAxRAorICAgIFg0NDggPSAweDAwMUUKKyAgICBHUkVBU0UgPSAweEFBQUEKKworCitj
bGFzcyBIYW5kc2hha2VUeXBlKEludEVudW0pOgorICAgIENMSUVOVF9IRUxMTyA9IDEKKyAgICBT
RVJWRVJfSEVMTE8gPSAyCisgICAgTkVXX1NFU1NJT05fVElDS0VUID0gNAorICAgIEVORF9PRl9F
QVJMWV9EQVRBID0gNQorICAgIEVOQ1JZUFRFRF9FWFRFTlNJT05TID0gOAorICAgIENFUlRJRklD
QVRFID0gMTEKKyAgICBDRVJUSUZJQ0FURV9SRVFVRVNUID0gMTMKKyAgICBDRVJUSUZJQ0FURV9W
RVJJRlkgPSAxNQorICAgIEZJTklTSEVEID0gMjAKKyAgICBLRVlfVVBEQVRFID0gMjQKKyAgICBD
T01QUkVTU0VEX0NFUlRJRklDQVRFID0gMjUKKyAgICBNRVNTQUdFX0hBU0ggPSAyNTQKKworCitj
bGFzcyBQc2tLZXlFeGNoYW5nZU1vZGUoSW50RW51bSk6CisgICAgUFNLX0tFID0gMAorICAgIFBT
S19ESEVfS0UgPSAxCisKKworY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtKEludEVudW0pOgorICAg
IEVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYgPSAweDA0MDMKKyAgICBFQ0RTQV9TRUNQMzg0UjFfU0hB
Mzg0ID0gMHgwNTAzCisgICAgRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiA9IDB4MDYwMworICAgIEVE
MjU1MTkgPSAweDA4MDcKKyAgICBFRDQ0OCA9IDB4MDgwOAorICAgIFJTQV9QS0NTMV9TSEEyNTYg
PSAweDA0MDEKKyAgICBSU0FfUEtDUzFfU0hBMzg0ID0gMHgwNTAxCisgICAgUlNBX1BLQ1MxX1NI
QTUxMiA9IDB4MDYwMQorICAgIFJTQV9QU1NfUFNTX1NIQTI1NiA9IDB4MDgwOQorICAgIFJTQV9Q
U1NfUFNTX1NIQTM4NCA9IDB4MDgwQQorICAgIFJTQV9QU1NfUFNTX1NIQTUxMiA9IDB4MDgwQgor
ICAgIFJTQV9QU1NfUlNBRV9TSEEyNTYgPSAweDA4MDQKKyAgICBSU0FfUFNTX1JTQUVfU0hBMzg0
ID0gMHgwODA1CisgICAgUlNBX1BTU19SU0FFX1NIQTUxMiA9IDB4MDgwNgorCisgICAgIyBsZWdh
Y3kKKyAgICBSU0FfUEtDUzFfU0hBMSA9IDB4MDIwMQorICAgIFNIQTFfRFNBID0gMHgwMjAyCisg
ICAgRUNEU0FfU0hBMSA9IDB4MDIwMworCisKKyMgQkxPQ0tTCisKKworQGNvbnRleHRtYW5hZ2Vy
CitkZWYgcHVsbF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gR2VuZXJhdG9y
OgorICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgYiBpbiBidWYucHVsbF9ieXRlcyhjYXBhY2l0eSk6
CisgICAgICAgIGxlbmd0aCA9IChsZW5ndGggPDwgOCkgfCBiCisgICAgZW5kID0gYnVmLnRlbGwo
KSArIGxlbmd0aAorICAgIHlpZWxkIGxlbmd0aAorICAgIGFzc2VydCBidWYudGVsbCgpID09IGVu
ZAorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfYmxvY2soYnVmOiBCdWZmZXIsIGNhcGFj
aXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICAiIiIKKyAgICBDb250ZXh0IG1hbmFnZXIgdG8g
cHVzaCBhIHZhcmlhYmxlLWxlbmd0aCBibG9jaywgd2l0aCBgY2FwYWNpdHlgIGJ5dGVzCisgICAg
dG8gd3JpdGUgdGhlIGxlbmd0aC4KKyAgICAiIiIKKyAgICBzdGFydCA9IGJ1Zi50ZWxsKCkgKyBj
YXBhY2l0eQorICAgIGJ1Zi5zZWVrKHN0YXJ0KQorICAgIHlpZWxkCisgICAgZW5kID0gYnVmLnRl
bGwoKQorICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0CisgICAgd2hpbGUgY2FwYWNpdHk6CisgICAg
ICAgIGJ1Zi5zZWVrKHN0YXJ0IC0gY2FwYWNpdHkpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KChs
ZW5ndGggPj4gKDggKiAoY2FwYWNpdHkgLSAxKSkpICYgMHhGRikKKyAgICAgICAgY2FwYWNpdHkg
LT0gMQorICAgIGJ1Zi5zZWVrKGVuZCkKKworCisjIExJU1RTCisKKworZGVmIHB1bGxfbGlzdChi
dWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW10sIFRdKSAtPiBMaXN0
W1RdOgorICAgICIiIgorICAgIFB1bGwgYSBsaXN0IG9mIGl0ZW1zLgorICAgICIiIgorICAgIGl0
ZW1zID0gW10KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkgYXMgbGVuZ3RoOgor
ICAgICAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgIHdoaWxlIGJ1Zi50ZWxs
KCkgPCBlbmQ6CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoZnVuYygpKQorICAgIHJldHVybiBp
dGVtcworCisKK2RlZiBwdXNoX2xpc3QoCisgICAgYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IGZ1bmM6IENhbGxhYmxlW1tUXSwgTm9uZV0sIHZhbHVlczogU2VxdWVuY2VbVF0KKykgLT4gTm9u
ZToKKyAgICAiIiIKKyAgICBQdXNoIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAiIiIKKyAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6
CisgICAgICAgICAgICBmdW5jKHZhbHVlKQorCisKK2RlZiBwdWxsX29wYXF1ZShidWY6IEJ1ZmZl
ciwgY2FwYWNpdHk6IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgUHVsbCBhbiBvcGFxdWUg
dmFsdWUgcHJlZml4ZWQgYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdWxsX2Jsb2Nr
KGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKKyAgICAgICAgcmV0dXJuIGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworCitkZWYgcHVzaF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IHZhbHVlOiBieXRlcykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGFuIG9wYXF1ZSB2YWx1
ZSBwcmVmaXggYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Y2FwYWNpdHkpOgorICAgICAgICBidWYucHVzaF9ieXRlcyh2YWx1ZSkKKworCitAY29udGV4dG1h
bmFnZXIKK2RlZiBwdXNoX2V4dGVuc2lvbihidWY6IEJ1ZmZlciwgZXh0ZW5zaW9uX3R5cGU6IGlu
dCkgLT4gR2VuZXJhdG9yOgorICAgIGJ1Zi5wdXNoX3VpbnQxNihleHRlbnNpb25fdHlwZSkKKyAg
ICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgeWllbGQKKworCisjIEtleVNoYXJl
RW50cnkKKworCitLZXlTaGFyZUVudHJ5ID0gVHVwbGVbaW50LCBieXRlc10KKworCitkZWYgcHVs
bF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIpIC0+IEtleVNoYXJlRW50cnk6CisgICAgZ3JvdXAgPSBi
dWYucHVsbF91aW50MTYoKQorICAgIGRhdGEgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgcmV0
dXJuIChncm91cCwgZGF0YSkKKworCitkZWYgcHVzaF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIsIHZh
bHVlOiBLZXlTaGFyZUVudHJ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQxNih2YWx1ZVsw
XSkKKyAgICBwdXNoX29wYXF1ZShidWYsIDIsIHZhbHVlWzFdKQorCisKKyMgQUxQTgorCisKK2Rl
ZiBwdWxsX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIpIC0+IHN0cjoKKyAgICByZXR1cm4gcHVs
bF9vcGFxdWUoYnVmLCAxKS5kZWNvZGUoImFzY2lpIikKKworCitkZWYgcHVzaF9hbHBuX3Byb3Rv
Y29sKGJ1ZjogQnVmZmVyLCBwcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgcHJvdG9jb2wuZW5jb2RlKCJhc2NpaSIpKQorCisKKyMgUFJFIFNIQVJFRCBLRVkK
KworUHNrSWRlbnRpdHkgPSBUdXBsZVtieXRlcywgaW50XQorCisKK2RlZiBwdWxsX3Bza19pZGVu
dGl0eShidWY6IEJ1ZmZlcikgLT4gUHNrSWRlbnRpdHk6CisgICAgaWRlbnRpdHkgPSBwdWxsX29w
YXF1ZShidWYsIDIpCisgICAgb2JmdXNjYXRlZF90aWNrZXRfYWdlID0gYnVmLnB1bGxfdWludDMy
KCkKKyAgICByZXR1cm4gKGlkZW50aXR5LCBvYmZ1c2NhdGVkX3RpY2tldF9hZ2UpCisKKworZGVm
IHB1c2hfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyLCBlbnRyeTogUHNrSWRlbnRpdHkpIC0+IE5v
bmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVswXSkKKyAgICBidWYucHVzaF91aW50
MzIoZW50cnlbMV0pCisKKworZGVmIHB1bGxfcHNrX2JpbmRlcihidWY6IEJ1ZmZlcikgLT4gYnl0
ZXM6CisgICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKworCitkZWYgcHVzaF9wc2tfYmlu
ZGVyKGJ1ZjogQnVmZmVyLCBiaW5kZXI6IGJ5dGVzKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgYmluZGVyKQorCisKKyMgTUVTU0FHRVMKKworRXh0ZW5zaW9uID0gVHVwbGVbaW50
LCBieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBPZmZlcmVkUHNrczoKKyAgICBpZGVudGl0
aWVzOiBMaXN0W1Bza0lkZW50aXR5XQorICAgIGJpbmRlcnM6IExpc3RbYnl0ZXNdCisKKworQGRh
dGFjbGFzcworY2xhc3MgQ2xpZW50SGVsbG86CisgICAgcmFuZG9tOiBieXRlcworICAgIHNlc3Np
b25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlczogTGlzdFtpbnRdCisgICAgY29tcHJlc3Np
b25fbWV0aG9kczogTGlzdFtpbnRdCisKKyAgICAjIGV4dGVuc2lvbnMKKyAgICBhbHBuX3Byb3Rv
Y29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICBlYXJseV9kYXRhOiBib29sID0g
RmFsc2UKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVFbnRyeV1dID0gTm9u
ZQorICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10gPSBOb25lCisgICAg
cHNrX2tleV9leGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBz
ZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBzaWduYXR1cmVfYWxnb3JpdGht
czogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfZ3JvdXBzOiBPcHRp
b25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHN1cHBvcnRlZF92ZXJzaW9uczogT3B0aW9uYWxb
TGlzdFtpbnRdXSA9IE5vbmUKKworICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9u
XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2NsaWVudF9oZWxs
byhidWY6IEJ1ZmZlcikgLT4gQ2xpZW50SGVsbG86CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4
KCkgPT0gSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVm
LCAzKToKKyAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFf
MgorICAgICAgICBjbGllbnRfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIpCisKKyAgICAgICAg
aGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1jbGllbnRfcmFuZG9tLAor
ICAgICAgICAgICAgc2Vzc2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlcz1wdWxsX2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50MTYpLAorICAgICAg
ICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1wdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50
OCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgYWZ0ZXJfcHNr
ID0gRmFsc2UKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgorICAgICAg
ICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAgICAgIG5vbmxvY2Fs
IGFmdGVyX3BzaworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhZnRlcl9wc2sKKworICAgICAgICAg
ICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5z
aW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBpZiBleHRlbnNpb25f
dHlwZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAgICAgICBoZWxsby5r
ZXlfc2hhcmUgPSBwdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfa2V5X3NoYXJlLCBidWYp
KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNVUFBP
UlRFRF9WRVJTSU9OUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMg
PSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09SSVRITVM6CisgICAg
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBwdWxsX2xpc3QoYnVmLCAy
LCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4
dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfZ3JvdXBzID0gcHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWludDE2KQorICAgICAg
ICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBTS19LRVlfRVhDSEFO
R0VfTU9ERVM6CisgICAgICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcyA9
IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KQorICAgICAgICAgICAgZWxpZiBleHRl
bnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FOgorICAgICAgICAgICAgICAg
IHdpdGggcHVsbF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYnVm
LnB1bGxfdWludDgoKSA9PSAwCisgICAgICAgICAgICAgICAgICAgIGhlbGxvLnNlcnZlcl9uYW1l
ID0gcHVsbF9vcGFxdWUoYnVmLCAyKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGVsaWYg
ZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAgICAgICAgICAgIGhl
bGxvLmFscG5fcHJvdG9jb2xzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAgICAgICBidWYs
IDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RB
VEE6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRydWUKKyAgICAgICAgICAg
IGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWToKKyAg
ICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IE9mZmVyZWRQc2tzKAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGl0aWVzPXB1bGxfbGlzdChidWYsIDIsIHBhcnRpYWwocHVsbF9w
c2tfaWRlbnRpdHksIGJ1ZikpLAorICAgICAgICAgICAgICAgICAgICBiaW5kZXJzPXB1bGxfbGlz
dChidWYsIDIsIHBhcnRpYWwocHVsbF9wc2tfYmluZGVyLCBidWYpKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgYWZ0ZXJfcHNrID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVs
bF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVzaF9jbGllbnRfaGVs
bG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBDbGllbnRIZWxsbykgLT4gTm9uZToKKyAgICBidWYucHVz
aF91aW50OChIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTykKKyAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9OXzFfMikKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAgICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNo
X3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRlcykKKyAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwg
YnVmLnB1c2hfdWludDgsIGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMpCisKKyAgICAgICAgIyBl
eHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NIQVJFKToKKyAgICAg
ICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1c2hfa2V5X3NoYXJlLCBidWYp
LCBoZWxsby5rZXlfc2hhcmUpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAgICAgICAgICAgcHVz
aF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMp
CisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNJ
R05BVFVSRV9BTEdPUklUSE1TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBi
dWYucHVzaF91aW50MTYsIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zKQorCisgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBT
KToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYucHVzaF91aW50MTYsIGhl
bGxvLnN1cHBvcnRlZF9ncm91cHMpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLnBza19rZXlfZXhj
aGFuZ2VfbW9kZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVu
c2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUyk6CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQ4LCBoZWxsby5wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzKQorCisgICAgICAgICAgICBpZiBoZWxsby5zZXJ2ZXJfbmFtZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9i
bG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgaGVsbG8uc2VydmVy
X25hbWUuZW5jb2RlKCJhc2NpaSIpKQorCisgICAgICAgICAgICBpZiBoZWxsby5hbHBuX3Byb3Rv
Y29scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1
ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1c2hfYWxwbl9wcm90b2Nv
bCwgYnVmKSwgaGVsbG8uYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBoZWxsby5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0YToKKyAgICAg
ICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9E
QVRBKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAjIHByZV9zaGFy
ZWRfa2V5IE1VU1QgYmUgbGFzdAorICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4
dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX3Bza19pZGVudGl0eSwg
YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50
aXRpZXMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9s
aXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfYmluZGVyLCBi
dWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVy
cywKKyAgICAgICAgICAgICAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFNlcnZlckhl
bGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBzZXNzaW9uX2lkOiBieXRlcworICAgIGNpcGhl
cl9zdWl0ZTogaW50CisgICAgY29tcHJlc3Npb25fbWV0aG9kOiBpbnQKKworICAgICMgZXh0ZW5z
aW9ucworICAgIGtleV9zaGFyZTogT3B0aW9uYWxbS2V5U2hhcmVFbnRyeV0gPSBOb25lCisgICAg
cHJlX3NoYXJlZF9rZXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3VwcG9ydGVkX3ZlcnNp
b246IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBs
ZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVs
bF9zZXJ2ZXJfaGVsbG8oYnVmOiBCdWZmZXIpIC0+IFNlcnZlckhlbGxvOgorICAgIGFzc2VydCBi
dWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hFTExPCisgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50MTYoKSA9PSBU
TFNfVkVSU0lPTl8xXzIKKyAgICAgICAgc2VydmVyX3JhbmRvbSA9IGJ1Zi5wdWxsX2J5dGVzKDMy
KQorCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209c2Vy
dmVyX3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAxKSwK
KyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwKKyAgICAgICAgICAg
IGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAorICAgICAgICApCisKKyAgICAg
ICAgIyBleHRlbnNpb25zCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6Cisg
ICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgorICAgICAg
ICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxfdWludDE2KCkKKyAg
ICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkU6
CisgICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlfc2hhcmUoYnVmKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBSRV9TSEFS
RURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5ID0gYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVsbG8ub3RoZXJf
ZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwg
YnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGhl
bGxvCisKKworZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBoZWxsbzogU2VydmVy
SGVsbG8pIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5TRVJWRVJf
SEVMTE8pCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihUTFNfVkVSU0lPTl8xXzIpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGhlbGxvLnJhbmRv
bSkKKworICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5jaXBoZXJfc3VpdGUpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQ4KGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCkKKworICAgICAgICAjIGV4dGVuc2lvbnMK
KyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICBpZiBoZWxsby5z
dXBwb3J0ZWRfdmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hf
ZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lPTlMpOgorICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24pCisK
KyAgICAgICAgICAgIGlmIGhlbGxvLmtleV9zaGFyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkUpOgor
ICAgICAgICAgICAgICAgICAgICBwdXNoX2tleV9zaGFyZShidWYsIGhlbGxvLmtleV9zaGFyZSkK
KworICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFJFX1NI
QVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8ucHJl
X3NoYXJlZF9rZXkpCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9u
X3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgd2l0aCBw
dXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIE5l
d1Nlc3Npb25UaWNrZXQ6CisgICAgdGlja2V0X2xpZmV0aW1lOiBpbnQgPSAwCisgICAgdGlja2V0
X2FnZV9hZGQ6IGludCA9IDAKKyAgICB0aWNrZXRfbm9uY2U6IGJ5dGVzID0gYiIiCisgICAgdGlj
a2V0OiBieXRlcyA9IGIiIgorCisgICAgIyBleHRlbnNpb25zCisgICAgbWF4X2Vhcmx5X2RhdGFf
c2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1
cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBw
dWxsX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlcikgLT4gTmV3U2Vzc2lvblRpY2tldDoK
KyAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KCkKKworICAgIGFzc2Vy
dCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUCisg
ICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50
aWNrZXRfbGlmZXRpbWUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vzc2lvbl90
aWNrZXQudGlja2V0X2FnZV9hZGQgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vz
c2lvbl90aWNrZXQudGlja2V0X25vbmNlID0gcHVsbF9vcGFxdWUoYnVmLCAxKQorICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0ID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorCisgICAgICAg
IGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fdHlw
ZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVm
LnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lv
blR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhl
eHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0
KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gbmV3X3Nlc3Npb25fdGlja2V0
CisKKworZGVmIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZjogQnVmZmVyLCBuZXdfc2Vzc2lv
bl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgo
SGFuZHNoYWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQpCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0
X2xpZmV0aW1lKQorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0LnRp
Y2tldF9hZ2VfYWRkKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIG5ld19zZXNzaW9uX3Rp
Y2tldC50aWNrZXRfbm9uY2UpCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgbmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldCkKKworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAg
ICAgICAgICAgIGlmIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNp
b25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MzIo
bmV3X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUpCisKKyAgICAgICAgICAgIGZv
ciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIG5ld19zZXNzaW9uX3RpY2tldC5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBFbmNyeXB0ZWRFeHRlbnNpb25z
OgorICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgZWFybHlfZGF0
YTogYm9vbCA9IEZhbHNlCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwg
Ynl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVmZmVyKSAtPiBFbmNyeXB0ZWRFeHRlbnNpb25zOgorICAg
IGV4dGVuc2lvbnMgPSBFbmNyeXB0ZWRFeHRlbnNpb25zKCkKKworICAgIGFzc2VydCBidWYucHVs
bF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlMKKyAgICB3aXRo
IHB1bGxfYmxvY2soYnVmLCAzKToKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBO
b25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAg
ICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFMUE46CisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAg
ICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAg
ICAgICAgKVswXQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5lYXJseV9kYXRhID0g
VHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLm90aGVy
X2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUs
IGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVybiBl
eHRlbnNpb25zCisKKworZGVmIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmOiBCdWZmZXIs
IGV4dGVuc2lvbnM6IEVuY3J5cHRlZEV4dGVuc2lvbnMpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hf
dWludDgoSGFuZHNoYWtlVHlwZS5FTkNSWVBURURfRVhURU5TSU9OUykKKyAgICB3aXRoIHB1c2hf
YmxvY2soYnVmLCAzKToKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAg
ICAgICBpZiBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuQUxQTik6CisgICAg
ICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0
aWFsKHB1c2hfYWxwbl9wcm90b2NvbCwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtl
eHRlbnNpb25zLmFscG5fcHJvdG9jb2xdLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbnMuZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHB1
c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAg
ICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lv
bl92YWx1ZSBpbiBleHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0NlcnRpZmljYXRlRW50
cnkgPSBUdXBsZVtieXRlcywgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgQ2VydGlmaWNh
dGU6CisgICAgcmVxdWVzdF9jb250ZXh0OiBieXRlcyA9IGIiIgorICAgIGNlcnRpZmljYXRlczog
TGlzdFtDZXJ0aWZpY2F0ZUVudHJ5XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisK
K2RlZiBwdWxsX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZToKKyAgICBj
ZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKCkKKworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgp
ID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAz
KToKKyAgICAgICAgY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0ID0gcHVsbF9vcGFxdWUoYnVm
LCAxKQorCisgICAgICAgIGRlZiBwdWxsX2NlcnRpZmljYXRlX2VudHJ5KGJ1ZjogQnVmZmVyKSAt
PiBDZXJ0aWZpY2F0ZUVudHJ5OgorICAgICAgICAgICAgZGF0YSA9IHB1bGxfb3BhcXVlKGJ1Ziwg
MykKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgICAg
ICAgICByZXR1cm4gKGRhdGEsIGV4dGVuc2lvbnMpCisKKyAgICAgICAgY2VydGlmaWNhdGUuY2Vy
dGlmaWNhdGVzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1bGxf
Y2VydGlmaWNhdGVfZW50cnksIGJ1ZikKKyAgICAgICAgKQorCisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGUoYnVmOiBCdWZmZXIsIGNlcnRpZmljYXRlOiBD
ZXJ0aWZpY2F0ZSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNF
UlRJRklDQVRFKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBwdXNoX29w
YXF1ZShidWYsIDEsIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCkKKworICAgICAgICBkZWYg
cHVzaF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZlciwgZW50cnk6IENlcnRpZmljYXRlRW50
cnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDMsIGVudHJ5WzBdKQor
ICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVsxXSkKKworICAgICAgICBwdXNo
X2xpc3QoCisgICAgICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVzaF9jZXJ0aWZpY2F0ZV9lbnRy
eSwgYnVmKSwgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzCisgICAgICAgICkKKworCitAZGF0YWNs
YXNzCitjbGFzcyBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhbGdvcml0aG06IGludAorICAgIHNp
Z25hdHVyZTogYnl0ZXMKKworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZm
ZXIpIC0+IENlcnRpZmljYXRlVmVyaWZ5OgorICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09
IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGFsZ29yaXRobSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNp
Z25hdHVyZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAgIHJldHVybiBDZXJ0aWZpY2F0ZVZl
cmlmeShhbGdvcml0aG09YWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0dXJlKQorCisKK2RlZiBw
dXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlciwgdmVyaWZ5OiBDZXJ0aWZpY2F0ZVZl
cmlmeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNFUlRJRklD
QVRFX1ZFUklGWSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1
c2hfdWludDE2KHZlcmlmeS5hbGdvcml0aG0pCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
dmVyaWZ5LnNpZ25hdHVyZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBGaW5pc2hlZDoKKyAgICB2
ZXJpZnlfZGF0YTogYnl0ZXMgPSBiIiIKKworCitkZWYgcHVsbF9maW5pc2hlZChidWY6IEJ1ZmZl
cikgLT4gRmluaXNoZWQ6CisgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgpCisKKyAgICBhc3NlcnQg
YnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkZJTklTSEVECisgICAgZmluaXNoZWQu
dmVyaWZ5X2RhdGEgPSBwdWxsX29wYXF1ZShidWYsIDMpCisKKyAgICByZXR1cm4gZmluaXNoZWQK
KworCitkZWYgcHVzaF9maW5pc2hlZChidWY6IEJ1ZmZlciwgZmluaXNoZWQ6IEZpbmlzaGVkKSAt
PiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRklOSVNIRUQpCisgICAg
cHVzaF9vcGFxdWUoYnVmLCAzLCBmaW5pc2hlZC52ZXJpZnlfZGF0YSkKKworCisjIENPTlRFWFQK
KworCitjbGFzcyBLZXlTY2hlZHVsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZSk6CisgICAgICAgIHNlbGYuYWxnb3JpdGhtID0gY2lwaGVyX3N1aXRl
X2hhc2goY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhlcl9z
dWl0ZQorICAgICAgICBzZWxmLmdlbmVyYXRpb24gPSAwCisgICAgICAgIHNlbGYuaGFzaCA9IGhh
c2hlcy5IYXNoKHNlbGYuYWxnb3JpdGhtLCBkZWZhdWx0X2JhY2tlbmQoKSkKKyAgICAgICAgc2Vs
Zi5oYXNoX2VtcHR5X3ZhbHVlID0gc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6ZSgpCisgICAgICAg
IHNlbGYuc2VjcmV0ID0gYnl0ZXMoc2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUpCisKKyAgICBk
ZWYgY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZiwgY29udGV4dF9zdHJpbmc6IGJ5dGVzKSAt
PiBieXRlczoKKyAgICAgICAgcmV0dXJuIGIiICIgKiA2NCArIGNvbnRleHRfc3RyaW5nICsgYiJc
eDAwIiArIHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorCisgICAgZGVmIGZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYsIHNlY3JldDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICBobWFjX2tl
eSA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLAorICAgICAgICAgICAgc2VjcmV0PXNlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWIiZmlu
aXNoZWQiLAorICAgICAgICAgICAgaGFzaF92YWx1ZT1iIiIsCisgICAgICAgICAgICBsZW5ndGg9
c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAgICAgICBoID0gaG1h
Yy5ITUFDKGhtYWNfa2V5LCBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sIGJhY2tlbmQ9ZGVmYXVs
dF9iYWNrZW5kKCkpCisgICAgICAgIGgudXBkYXRlKHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisgICAgZGVmIGRlcml2ZV9zZWNyZXQo
c2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJuIGhrZGZfZXhwYW5k
X2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAgICAg
ICAgc2VjcmV0PXNlbGYuc2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9bGFiZWwsCisgICAgICAg
ICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKSwKKyAgICAgICAgICAg
IGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisgICAgZGVm
IGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAtPiBO
b25lOgorICAgICAgICBpZiBrZXlfbWF0ZXJpYWwgaXMgTm9uZToKKyAgICAgICAgICAgIGtleV9t
YXRlcmlhbCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQorCisgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc2VjcmV0ID0gaGtkZl9leHBhbmRf
bGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAg
ICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgICAgICBsYWJlbD1iImRl
cml2ZWQiLAorICAgICAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNoX2VtcHR5X3ZhbHVl
LAorICAgICAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdlbmVyYXRpb24gKz0gMQorICAgICAgICBzZWxm
LnNlY3JldCA9IGhrZGZfZXh0cmFjdCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29y
aXRobSwgc2FsdD1zZWxmLnNlY3JldCwga2V5X21hdGVyaWFsPWtleV9tYXRlcmlhbAorICAgICAg
ICApCisKKyAgICBkZWYgdXBkYXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuaGFzaC51cGRhdGUoZGF0YSkKKworCitjbGFzcyBLZXlTY2hlZHVsZVByb3h5
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGVzOiBMaXN0W0NpcGhlclN1aXRl
XSk6CisgICAgICAgIHNlbGYuX19zY2hlZHVsZXMgPSBkaWN0KG1hcChsYW1iZGEgYzogKGMsIEtl
eVNjaGVkdWxlKGMpKSwgY2lwaGVyX3N1aXRlcykpCisKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBr
ZXlfbWF0ZXJpYWw6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGZv
ciBrIGluIHNlbGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAgICBrLmV4dHJhY3Qo
a2V5X21hdGVyaWFsKQorCisgICAgZGVmIHNlbGVjdChzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhl
clN1aXRlKSAtPiBLZXlTY2hlZHVsZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zY2hlZHVsZXNb
Y2lwaGVyX3N1aXRlXQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6IGJ5dGVzKSAt
PiBOb25lOgorICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgorICAg
ICAgICAgICAgay51cGRhdGVfaGFzaChkYXRhKQorCisKK0NJUEhFUl9TVUlURVMgPSB7CisgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiBoYXNoZXMuU0hBMjU2LAorICAgIENpcGhl
clN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogaGFzaGVzLlNIQTM4NCwKKyAgICBDaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IGhhc2hlcy5TSEEyNTYsCit9CisKK1NJR05BVFVS
RV9BTEdPUklUSE1TOiBEaWN0ID0geworICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQ
MjU2UjFfU0hBMjU2OiAoTm9uZSwgaGFzaGVzLlNIQTI1NiksCisgICAgU2lnbmF0dXJlQWxnb3Jp
dGhtLkVDRFNBX1NFQ1AzODRSMV9TSEEzODQ6IChOb25lLCBoYXNoZXMuU0hBMzg0KSwKKyAgICBT
aWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMjogKE5vbmUsIGhhc2hlcy5T
SEE1MTIpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMTogKHBhZGRpbmcu
UEtDUzF2MTUsIGhhc2hlcy5TSEExKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1Mx
X1NIQTI1NjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0OiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNI
QTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTI6IChwYWRkaW5n
LlBLQ1MxdjE1LCBoYXNoZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BT
U19SU0FFX1NIQTI1NjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBMjU2KSwKKyAgICBTaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NDogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hB
Mzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTUxMjogKHBhZGRp
bmcuUFNTLCBoYXNoZXMuU0hBNTEyKSwKK30KKworR1JPVVBfVE9fQ1VSVkU6IERpY3QgPSB7Cisg
ICAgR3JvdXAuU0VDUDI1NlIxOiBlYy5TRUNQMjU2UjEsCisgICAgR3JvdXAuU0VDUDM4NFIxOiBl
Yy5TRUNQMzg0UjEsCisgICAgR3JvdXAuU0VDUDUyMVIxOiBlYy5TRUNQNTIxUjEsCit9CitDVVJW
RV9UT19HUk9VUCA9IGRpY3QoKHYsIGspIGZvciBrLCB2IGluIEdST1VQX1RPX0NVUlZFLml0ZW1z
KCkpCisKKworZGVmIGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUp
IC0+IGhhc2hlcy5IYXNoQWxnb3JpdGhtOgorICAgIHJldHVybiBDSVBIRVJfU1VJVEVTW2NpcGhl
cl9zdWl0ZV0oKQorCisKK2RlZiBkZWNvZGVfcHVibGljX2tleSgKKyAgICBrZXlfc2hhcmU6IEtl
eVNoYXJlRW50cnksCispIC0+IFVuaW9uW2VjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUx
OS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleSwgTm9uZV06CisgICAgaWYga2V5
X3NoYXJlWzBdID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgcmV0dXJuIHgyNTUxOS5YMjU1MTlQ
dWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3No
YXJlWzBdID09IEdyb3VwLlg0NDg6CisgICAgICAgIHJldHVybiB4NDQ4Llg0NDhQdWJsaWNLZXku
ZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3NoYXJlWzBdIGlu
IEdST1VQX1RPX0NVUlZFOgorICAgICAgICByZXR1cm4gZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tl
eS5mcm9tX2VuY29kZWRfcG9pbnQoCisgICAgICAgICAgICBHUk9VUF9UT19DVVJWRVtrZXlfc2hh
cmVbMF1dKCksIGtleV9zaGFyZVsxXQorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworCitkZWYgZW5jb2RlX3B1YmxpY19rZXkoCisgICAgcHVibGljX2tleTogVW5p
b25bCisgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUxOS5YMjU1MTlQdWJs
aWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgIF0KKykgLT4gS2V5U2hhcmVFbnRyeToKKyAg
ICBpZiBpc2luc3RhbmNlKHB1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAg
ICAgICByZXR1cm4gKEdyb3VwLlgyNTUxOSwgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2Rp
bmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkKKyAgICBlbGlmIGlzaW5zdGFuY2UocHVibGljX2tl
eSwgeDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgcmV0dXJuIChHcm91cC5YNDQ4LCBwdWJs
aWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1hdC5SYXcpKQorICAg
IHJldHVybiAoCisgICAgICAgIENVUlZFX1RPX0dST1VQW3B1YmxpY19rZXkuY3VydmUuX19jbGFz
c19fXSwKKyAgICAgICAgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuWDk2MiwgUHVi
bGljRm9ybWF0LlVuY29tcHJlc3NlZFBvaW50KSwKKyAgICApCisKKworZGVmIG5lZ290aWF0ZSgK
KyAgICBzdXBwb3J0ZWQ6IExpc3RbVF0sIG9mZmVyZWQ6IE9wdGlvbmFsW0xpc3RbQW55XV0sIGV4
YzogT3B0aW9uYWxbQWxlcnRdID0gTm9uZQorKSAtPiBUOgorICAgIGlmIG9mZmVyZWQgaXMgbm90
IE5vbmU6CisgICAgICAgIGZvciBjIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIGlmIGMgaW4g
b2ZmZXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYworCisgICAgaWYgZXhjIGlzIG5vdCBO
b25lOgorICAgICAgICByYWlzZSBleGMKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBzaWduYXR1
cmVfYWxnb3JpdGhtX3BhcmFtcygKKyAgICBzaWduYXR1cmVfYWxnb3JpdGhtOiBpbnQsCispIC0+
IFVuaW9uW1R1cGxlW2VjLkVDRFNBXSwgVHVwbGVbcGFkZGluZy5Bc3ltbWV0cmljUGFkZGluZywg
aGFzaGVzLkhhc2hBbGdvcml0aG1dXToKKyAgICBwYWRkaW5nX2NscywgYWxnb3JpdGhtX2NscyA9
IFNJR05BVFVSRV9BTEdPUklUSE1TW3NpZ25hdHVyZV9hbGdvcml0aG1dCisgICAgYWxnb3JpdGht
ID0gYWxnb3JpdGhtX2NscygpCisgICAgaWYgcGFkZGluZ19jbHMgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIChlYy5FQ0RTQShhbGdvcml0aG0pLCkKKyAgICBlbGlmIHBhZGRpbmdfY2xzID09IHBh
ZGRpbmcuUFNTOgorICAgICAgICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xzKAorICAgICAgICAg
ICAgbWdmPXBhZGRpbmcuTUdGMShhbGdvcml0aG0pLCBzYWx0X2xlbmd0aD1hbGdvcml0aG0uZGln
ZXN0X3NpemUKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHBhZGRpbmdfb2JqID0gcGFk
ZGluZ19jbHMoKQorICAgIHJldHVybiBwYWRkaW5nX29iaiwgYWxnb3JpdGhtCisKKworQGNvbnRl
eHRtYW5hZ2VyCitkZWYgcHVzaF9tZXNzYWdlKAorICAgIGtleV9zY2hlZHVsZTogVW5pb25bS2V5
U2NoZWR1bGUsIEtleVNjaGVkdWxlUHJveHldLCBidWY6IEJ1ZmZlcgorKSAtPiBHZW5lcmF0b3I6
CisgICAgaGFzaF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICB5aWVsZAorICAgIGtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChidWYuZGF0YV9zbGljZShoYXNoX3N0YXJ0LCBidWYudGVsbCgpKSkKKwor
CisjIGNhbGxiYWNrIHR5cGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgU2Vzc2lvblRpY2tldDoK
KyAgICAiIiIKKyAgICBBIFRMUyBzZXNzaW9uIHRpY2tldCBmb3Igc2Vzc2lvbiByZXN1bXB0aW9u
LgorICAgICIiIgorCisgICAgYWdlX2FkZDogaW50CisgICAgY2lwaGVyX3N1aXRlOiBDaXBoZXJT
dWl0ZQorICAgIG5vdF92YWxpZF9hZnRlcjogZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICBub3RfdmFs
aWRfYmVmb3JlOiBkYXRldGltZS5kYXRldGltZQorICAgIHJlc3VtcHRpb25fc2VjcmV0OiBieXRl
cworICAgIHNlcnZlcl9uYW1lOiBzdHIKKyAgICB0aWNrZXQ6IGJ5dGVzCisKKyAgICBtYXhfZWFy
bHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVyX2V4dGVuc2lvbnM6
IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
bm93ID0gdXRjbm93KCkKKyAgICAgICAgcmV0dXJuIG5vdyA+PSBzZWxmLm5vdF92YWxpZF9iZWZv
cmUgYW5kIG5vdyA8PSBzZWxmLm5vdF92YWxpZF9hZnRlcgorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIG9iZnVzY2F0ZWRfYWdlKHNlbGYpIC0+IGludDoKKyAgICAgICAgYWdlID0gaW50KCh1dGNu
b3coKSAtIHNlbGYubm90X3ZhbGlkX2JlZm9yZSkudG90YWxfc2Vjb25kcygpKQorICAgICAgICBy
ZXR1cm4gKGFnZSArIHNlbGYuYWdlX2FkZCkgJSAoMSA8PCAzMikKKworCitBbHBuSGFuZGxlciA9
IENhbGxhYmxlW1tzdHJdLCBOb25lXQorU2Vzc2lvblRpY2tldEZldGNoZXIgPSBDYWxsYWJsZVtb
Ynl0ZXNdLCBPcHRpb25hbFtTZXNzaW9uVGlja2V0XV0KK1Nlc3Npb25UaWNrZXRIYW5kbGVyID0g
Q2FsbGFibGVbW1Nlc3Npb25UaWNrZXRdLCBOb25lXQorCisKK2NsYXNzIENvbnRleHQ6CisgICAg
ZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGllbnQ6IGJvb2wsCisg
ICAgICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0gTm9uZSwKKyAgICAg
ICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICAgICBjYWZpbGU6IE9wdGlv
bmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICBsb2dnZXI6IE9wdGlvbmFsW1VuaW9uW2xvZ2dpbmcuTG9nZ2VyLCBsb2dnaW5nLkxv
Z2dlckFkYXB0ZXJdXSA9IE5vbmUsCisgICAgICAgIG1heF9lYXJseV9kYXRhOiBPcHRpb25hbFtp
bnRdID0gTm9uZSwKKyAgICAgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgKToKKyAgICAg
ICAgIyBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2FscG5fcHJvdG9jb2xzID0gYWxwbl9w
cm90b2NvbHMKKyAgICAgICAgc2VsZi5fY2FkYXRhID0gY2FkYXRhCisgICAgICAgIHNlbGYuX2Nh
ZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLl9jYXBhdGggPSBjYXBhdGgKKyAgICAgICAgc2Vs
Zi5jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25lCisgICAgICAg
IHNlbGYuY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBbXQorICAg
ICAgICBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5OiBPcHRpb25hbFsKKyAgICAgICAgICAg
IFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleSwgcnNh
LlJTQVByaXZhdGVLZXldCisgICAgICAgIF0gPSBOb25lCisgICAgICAgIHNlbGYuaGFuZHNoYWtl
X2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IFtdCisgICAgICAgIHNlbGYuX21heF9lYXJs
eV9kYXRhID0gbWF4X2Vhcmx5X2RhdGEKKyAgICAgICAgc2VsZi5zZXNzaW9uX3RpY2tldDogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0g
c2VydmVyX25hbWUKKyAgICAgICAgaWYgdmVyaWZ5X21vZGUgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHZlcmlmeV9tb2RlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVEIGlmIGlzX2NsaWVu
dCBlbHNlIHNzbC5DRVJUX05PTkUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxm
LmFscG5fY2I6IE9wdGlvbmFsW0FscG5IYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5nZXRf
c2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUK
KyAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRIYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2I6IENh
bGxhYmxlWworICAgICAgICAgICAgW0RpcmVjdGlvbiwgRXBvY2gsIENpcGhlclN1aXRlLCBieXRl
c10sIE5vbmUKKyAgICAgICAgXSA9IGxhbWJkYSBkLCBlLCBjLCBzOiBOb25lCisKKyAgICAgICAg
IyBzdXBwb3J0ZWQgcGFyYW1ldGVycworICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzID0gWwor
ICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgQ2lwaGVyU3VpdGUu
Q0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICBdCisgICAgICAgIHNlbGYuX2NvbXBy
ZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XSA9IFtDb21wcmVzc2lvbk1ldGhvZC5OVUxMXQorICAg
ICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBMaXN0W2ludF0gPSBbUHNrS2V5RXhj
aGFuZ2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZV9hbGdvcml0aG1z
OiBMaXN0W2ludF0gPSBbCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19S
U0FFX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2
UjFfU0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAg
ICAgIF0KKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3VwcyA9IFtHcm91cC5TRUNQMjU2UjFd
CisgICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLngyNTUxOV9zdXBwb3J0ZWQoKToKKyAgICAg
ICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAg
ICAgaWYgZGVmYXVsdF9iYWNrZW5kKCkueDQ0OF9zdXBwb3J0ZWQoKToKKyAgICAgICAgICAgIHNl
bGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlg0NDgpCisgICAgICAgIHNlbGYuX3N1
cHBvcnRlZF92ZXJzaW9ucyA9IFtUTFNfVkVSU0lPTl8xXzNdCisKKyAgICAgICAgIyBzdGF0ZQor
ICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGU6IE9wdGlvbmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNlaXZl
ZF9leHRlbnNpb25zOiBPcHRpb25hbFtMaXN0W0V4dGVuc2lvbl1dID0gTm9uZQorICAgICAgICBz
ZWxmLl9rZXlfc2NoZWR1bGVfcHNrOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eTogT3B0aW9uYWxbS2V5U2NoZWR1bGVQcm94eV0g
PSBOb25lCisgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbTmV3U2Vz
c2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGU6IE9wdGlv
bmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmlj
YXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10KKyAgICAgICAgc2VsZi5fcmVj
ZWl2ZV9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fZW5jX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBz
ZWxmLl9kZWNfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYuX19sb2dn
ZXIgPSBsb2dnZXIKKworICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleTogT3B0aW9uYWxbZWMu
RWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxmLl94MjU1MTlfcHJp
dmF0ZV9rZXk6IE9wdGlvbmFsW3gyNTUxOS5YMjU1MTlQcml2YXRlS2V5XSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleTogT3B0aW9uYWxbeDQ0OC5YNDQ4UHJpdmF0ZUtleV0g
PSBOb25lCisKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAgICAgICAgICAgc2VsZi5jbGllbnRf
cmFuZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IG9z
LnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuQ0xJRU5UX0hBTkRT
SEFLRV9TVEFSVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbGllbnRfcmFuZG9t
ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQorICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXN1bWVkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBzdWNjZXNz
ZnVsbHkgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zZXNzaW9uX3Jl
c3VtZWQKKworICAgIGRlZiBoYW5kbGVfbWVzc2FnZSgKKyAgICAgICAgc2VsZiwgaW5wdXRfZGF0
YTogYnl0ZXMsIG91dHB1dF9idWY6IERpY3RbRXBvY2gsIEJ1ZmZlcl0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVDoK
KyAgICAgICAgICAgIHNlbGYuX2NsaWVudF9zZW5kX2hlbGxvKG91dHB1dF9idWZbRXBvY2guSU5J
VElBTF0pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZl
ciArPSBpbnB1dF9kYXRhCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9yZWNlaXZlX2J1ZmZlcikg
Pj0gNDoKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIG1lc3NhZ2UgbGVuZ3RoCisgICAgICAgICAg
ICBtZXNzYWdlX3R5cGUgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclswXQorICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAwCisgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLl9yZWNlaXZlX2J1ZmZl
clsxOjRdOgorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoID0gKG1lc3NhZ2VfbGVuZ3Ro
IDw8IDgpIHwgYgorICAgICAgICAgICAgbWVzc2FnZV9sZW5ndGggKz0gNAorCisgICAgICAgICAg
ICAjIGNoZWNrIG1lc3NhZ2UgaXMgY29tcGxldGUKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9y
ZWNlaXZlX2J1ZmZlcikgPCBtZXNzYWdlX2xlbmd0aDoKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfYnVmZmVyWzptZXNzYWdlX2xlbmd0
aF0KKyAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyID0gc2VsZi5fcmVjZWl2ZV9idWZm
ZXJbbWVzc2FnZV9sZW5ndGg6XQorCisgICAgICAgICAgICBpbnB1dF9idWYgPSBCdWZmZXIoZGF0
YT1tZXNzYWdlKQorCisgICAgICAgICAgICAjIGNsaWVudCBzdGF0ZXMKKworICAgICAgICAgICAg
aWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTzoKKyAgICAg
ICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5TRVJWRVJfSEVMTE86
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfaGVsbG8oaW5wdXRfYnVm
LCBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAg
IGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJ
T05TOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkVO
Q1JZUFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFu
ZGxlX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAg
ICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlw
ZSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgY2VydGlmaWNhdGUgcmVx
dWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisg
ICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJ
Q0FURV9WRVJJRlk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFr
ZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGll
bnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1dF9idWYpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNI
RUQ6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRklO
SVNIRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZmluaXNoZWQo
aW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFLRV0pCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5ORVdf
U0VTU0lPTl9USUNLRVQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVf
bmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAg
ICAgICMgc2VydmVyIHN0YXRlcworCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3Rh
dGUuU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE86CisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZltFcG9jaC5JTklUSUFM
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guSEFORFNIQUtFXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guT05FX1JUVF0sCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYu
c3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICBp
ZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZb
RXBvY2guT05FX1JUVF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0
YXRlID09IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRToKKyAgICAgICAgICAgICAgICByYWlz
ZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAgICAgIGFzc2VydCBpbnB1dF9idWYu
ZW9mKCkKKworICAgIGRlZiBfYnVpbGRfc2Vzc2lvbl90aWNrZXQoCisgICAgICAgIHNlbGYsIG5l
d19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldAorICAgICkgLT4gU2Vzc2lvblRpY2tl
dDoKKyAgICAgICAgcmVzdW1wdGlvbl9tYXN0ZXJfc2VjcmV0ID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZGVyaXZlX3NlY3JldChiInJlcyBtYXN0ZXIiKQorICAgICAgICByZXN1bXB0aW9uX3NlY3JldCA9
IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYua2V5X3NjaGVk
dWxlLmFsZ29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1yZXN1bXB0aW9uX21hc3Rlcl9zZWNy
ZXQsCisgICAgICAgICAgICBsYWJlbD1iInJlc3VtcHRpb24iLAorICAgICAgICAgICAgaGFzaF92
YWx1ZT1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlLAorICAgICAgICAgICAgbGVuZ3Ro
PXNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisg
ICAgICAgIHRpbWVzdGFtcCA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBTZXNzaW9uVGlja2V0
KAorICAgICAgICAgICAgYWdlX2FkZD1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQs
CisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRl
LAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1uZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgIG5vdF92YWxpZF9hZnRlcj10aW1lc3RhbXAK
KyAgICAgICAgICAgICsgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bmV3X3Nlc3Npb25fdGlj
a2V0LnRpY2tldF9saWZldGltZSksCisgICAgICAgICAgICBub3RfdmFsaWRfYmVmb3JlPXRpbWVz
dGFtcCwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0PXJlc3VtcHRpb25fc2VjcmV0LAor
ICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICB0
aWNrZXQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCwKKyAgICAgICAgKQorCisgICAgZGVmIF9j
bGllbnRfc2VuZF9oZWxsbyhzZWxmLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAg
ICAgIGtleV9zaGFyZTogTGlzdFtLZXlTaGFyZUVudHJ5XSA9IFtdCisgICAgICAgIHN1cHBvcnRl
ZF9ncm91cHM6IExpc3RbaW50XSA9IFtdCisKKyAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX3N1
cHBvcnRlZF9ncm91cHM6CisgICAgICAgICAgICBpZiBncm91cCA9PSBHcm91cC5TRUNQMjU2UjE6
CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgPSBlYy5nZW5lcmF0ZV9wcml2
YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVbR3JvdXAuU0VDUDI1
NlIxXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX2VjX3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBl
bmQoR3JvdXAuU0VDUDI1NlIxKQorICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YMjU1
MTk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5ID0geDI1NTE5Llgy
NTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX3gyNTUxOV9w
cml2YXRlX2tleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAgICAgICAgIGVs
aWYgZ3JvdXAgPT0gR3JvdXAuWDQ0ODoKKyAgICAgICAgICAgICAgICBzZWxmLl94NDQ4X3ByaXZh
dGVfa2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAg
a2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl94NDQ4X3ByaXZhdGVfa2V5
LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDQ0OCkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAuR1JFQVNFOgorICAg
ICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoKEdyb3VwLkdSRUFTRSwgYiJceDAwIikpCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3JvdXAuR1JFQVNFKQorCisg
ICAgICAgIGFzc2VydCBsZW4oa2V5X3NoYXJlKSwgIm5vIGtleSBzaGFyZSBlbnRyaWVzIgorCisg
ICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209c2VsZi5jbGll
bnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNlc3Npb25faWQsCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGVzPVtpbnQoeCkgZm9yIHggaW4gc2VsZi5fY2lwaGVyX3N1aXRl
c10sCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXNlbGYuX2NvbXByZXNzaW9uX21l
dGhvZHMsCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBuX3Byb3RvY29scywK
KyAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCisgICAgICAgICAgICBwc2tfa2V5X2V4
Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAgICAgICAgICAgIGlm
IChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5v
dCBOb25lKQorICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcz1zZWxm
Ll9zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9c3Vw
cG9ydGVkX2dyb3VwcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9zdXBw
b3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNo
YWtlX2V4dGVuc2lvbnMsCisgICAgICAgICkKKworICAgICAgICAjIFBTSworICAgICAgICBpZiBz
ZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0LmlzX3ZhbGlkOgorICAg
ICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxlKHNlbGYuc2Vzc2lv
bl90aWNrZXQuY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisgICAgICAg
ICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJpdmVfc2VjcmV0KGIi
cmVzIGJpbmRlciIpCisgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5fa2V5X3NjaGVk
dWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgIyB1cGRhdGUgaGVs
bG8KKyAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9kYXRhID0gVHJ1ZQor
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKKyAgICAgICAg
ICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2Vzc2lvbl90
aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRfYWdlKQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMoYmluZGVyX2xlbmd0
aCldLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlcmlhbGl6ZSBoZWxsbyB3aXRo
b3V0IGJpbmRlcgorICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQor
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8pCisKKyAgICAgICAg
ICAgICMgY2FsY3VsYXRlIGJpbmRlcgorICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSB0bXBfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCisg
ICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZpbmlzaGVkX3Zlcmlm
eV9kYXRhKGJpbmRlcl9rZXkpCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5k
ZXJzWzBdID0gYmluZGVyCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0
ZV9oYXNoKAorICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0
YToKKyAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmRl
cml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
dHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAor
ICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICAgICAgICAg
IGVhcmx5X2tleSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3VpdGVzKQorICAgICAg
ICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQorCisgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0X2J1Zik6CisgICAg
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykKKworICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisKKyAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91dHB1dF9i
dWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfc2VydmVyX2hl
bGxvKGlucHV0X2J1ZikKKworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlhdGUoCisgICAg
ICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgW3BlZXJfaGVsbG8uY2lw
aGVyX3N1aXRlXSwKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiVW5zdXBwb3J0
ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8u
Y29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMKKyAgICAgICAg
YXNzZXJ0IHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaW4gc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAgIGlmIHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayBpcyBOb25lCisgICAgICAgICAgICAg
ICAgb3IgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSAhPSAwCisgICAgICAgICAgICAgICAgb3Ig
Y2lwaGVyX3N1aXRlICE9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVyX3N1aXRlCisgICAg
ICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcgor
ICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrCisg
ICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eS5z
ZWxlY3QoY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrID0gTm9u
ZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBOb25lCisKKyAgICAgICAgIyBw
ZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVi
bGljX2tleShwZWVyX2hlbGxvLmtleV9zaGFyZSkKKyAgICAgICAgc2hhcmVkX2tleTogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBl
ZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSkKKyAgICAgICAgICAgIGFuZCBz
ZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgKToKKyAgICAgICAg
ICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9w
dWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpCisgICAgICAgICAgICBhbmQgc2VsZi5feDQ0
OF9wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVk
X2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQor
ICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCBl
Yy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZh
dGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fZWNfcHJpdmF0ZV9rZXku
cHVibGljX2tleSgpLmN1cnZlLl9fY2xhc3NfXworICAgICAgICAgICAgPT0gcGVlcl9wdWJsaWNf
a2V5LmN1cnZlLl9fY2xhc3NfXworICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVkX2tleSA9
IHNlbGYuX2VjX3ByaXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5
KQorICAgICAgICBhc3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorICAgICAgICBzZWxmLmtl
eV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJh
ZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLkhB
TkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUykKKworICAgIGRl
ZiBfY2xpZW50X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmLCBpbnB1dF9idWY6IEJ1
ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZW5jcnlwdGVkX2V4dGVuc2lvbnMgPSBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRl
ZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmFscG5fcHJvdG9jb2wKKyAgICAgICAgc2VsZi5lYXJs
eV9kYXRhX2FjY2VwdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuZWFybHlfZGF0YQorICAgICAg
ICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5vdGhlcl9l
eHRlbnNpb25zCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAgIHNlbGYuYWxw
bl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmlj
X3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guSEFORFNI
QUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIg
YWNjZXB0ZWQgb3VyIFBTSyB3ZSBhcmUgZG9uZSwgb3RoZXIgd2Ugd2FudCBpdHMgY2VydGlmaWNh
dGUKKyAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkOgorICAgICAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFKQorCisgICAgZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRp
ZmljYXRlKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICBjZXJ0aWZp
Y2F0ZSA9IHB1bGxfY2VydGlmaWNhdGUoaW5wdXRfYnVmKQorCisgICAgICAgIHNlbGYuX3BlZXJf
Y2VydGlmaWNhdGUgPSB4NTA5LmxvYWRfZGVyX3g1MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbMF1bMF0sIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5k
KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluID0gWwor
ICAgICAgICAgICAgeDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1tpXVswXSwgYmFja2VuZD1kZWZhdWx0X2JhY2tl
bmQoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGNl
cnRpZmljYXRlLmNlcnRpZmljYXRlcykpCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkpCisKKyAgICBkZWYg
X2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVy
KSAtPiBOb25lOgorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1
dF9idWYpCisKKyAgICAgICAgYXNzZXJ0IHZlcmlmeS5hbGdvcml0aG0gaW4gc2VsZi5fc2lnbmF0
dXJlX2FsZ29yaXRobXMKKworICAgICAgICAjIGNoZWNrIHNpZ25hdHVyZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlLnB1YmxpY19rZXkoKS52ZXJpZnko
CisgICAgICAgICAgICAgICAgdmVyaWZ5LnNpZ25hdHVyZSwKKyAgICAgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXModmVyaWZ5LmFs
Z29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBJbnZhbGlkU2lnbmF0dXJl
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAgICAgICAjIGNoZWNr
IGNlcnRpZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3ZlcmlmeV9tb2RlICE9IHNzbC5DRVJUX05P
TkU6CisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2Fk
YXRhPXNlbGYuX2NhZGF0YSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9c2VsZi5fY2FmaWxlLAor
ICAgICAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jYXBhdGgsCisgICAgICAgICAgICAgICAgY2Vy
dGlmaWNhdGU9c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBjaGFpbj1z
ZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1l
PXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgIHNlbGYuX3NldF9z
dGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9jbGllbnRfaGFu
ZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIp
IC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisK
KyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBleHBlY3RlZF92ZXJpZnlfZGF0
YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2RlY19rZXkp
CisgICAgICAgIGlmIGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IGV4cGVjdGVkX3ZlcmlmeV9kYXRh
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKyAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgIyBwcmVwYXJl
IHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1bGUuZ2VuZXJhdGlv
biA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAgICAg
c2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRF
Q1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAgICApCisgICAgICAg
IG5leHRfZW5jX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJjIGFwIHRy
YWZmaWMiKQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3aXRoIHB1c2hfbWVz
c2FnZShzZWxmLmtleV9zY2hlZHVsZSwgb3V0cHV0X2J1Zik6CisgICAgICAgICAgICBwdXNoX2Zp
bmlzaGVkKAorICAgICAgICAgICAgICAgIG91dHB1dF9idWYsCisgICAgICAgICAgICAgICAgRmlu
aXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxl
LmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIGNvbW1pdCB0cmFmZmljIGtleQorICAgICAgICBz
ZWxmLl9lbmNfa2V5ID0gbmV4dF9lbmNfa2V5CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNf
a2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAgICAgICAgICBFcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAor
ICAgICAgICAgICAgc2VsZi5fZW5jX2tleSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3Nl
dF9zdGF0ZShTdGF0ZS5DTElFTlRfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBkZWYgX2NsaWVudF9o
YW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25l
OgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChp
bnB1dF9idWYpCisKKyAgICAgICAgIyBub3RpZnkgYXBwbGljYXRpb24KKyAgICAgICAgaWYgc2Vs
Zi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aWNrZXQg
PSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAg
ICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAgICBkZWYgX3NlcnZl
cl9oYW5kbGVfaGVsbG8oCisgICAgICAgIHNlbGYsCisgICAgICAgIGlucHV0X2J1ZjogQnVmZmVy
LAorICAgICAgICBpbml0aWFsX2J1ZjogQnVmZmVyLAorICAgICAgICBoYW5kc2hha2VfYnVmOiBC
dWZmZXIsCisgICAgICAgIG9uZXJ0dF9idWY6IEJ1ZmZlciwKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIHBlZXJfaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhpbnB1dF9idWYpCisKKyAgICAgICAg
IyBkZXRlcm1pbmUgYXBwbGljYWJsZSBzaWduYXR1cmUgYWxnb3JpdGhtcworICAgICAgICBzaWdu
YXR1cmVfYWxnb3JpdGhtczogTGlzdFtTaWduYXR1cmVBbGdvcml0aG1dID0gW10KKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LCByc2EuUlNBUHJpdmF0
ZUtleSk6CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFsKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAgICAgICBdCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0
ZV9rZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5CisgICAgICAgICkgYW5kIGlzaW5zdGFu
Y2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleS5jdXJ2ZSwgZWMuU0VDUDI1NlIxKToKKyAg
ICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zID0gW1NpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2XQorCisgICAgICAgICMgbmVnb3RpYXRlIHBhcmFtZXRlcnMKKyAg
ICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fY2lwaGVy
X3N1aXRlcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAg
ICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpLAor
ICAgICAgICApCisgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZCA9IG5lZ290aWF0ZSgKKyAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBwZWVyX2hlbGxv
LmNvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUo
Ik5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwKKyAgICAgICAgKQorICAgICAgICBw
c2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCisgICAgICAgICAgICBzZWxmLl9wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAg
ICAgICAgKQorICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtID0gbmVnb3RpYXRlKAorICAgICAg
ICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBwZWVyX2hlbGxvLnNpZ25h
dHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJObyBz
dXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAorICAgICAgICApCisgICAgICAgIHN1cHBv
cnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAg
ICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZlcnNp
b24iKSwKKyAgICAgICAgKQorCisgICAgICAgICMgbmVnb3RpYXRlIEFMUE4KKyAgICAgICAgaWYg
c2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFscG5f
bmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9hbHBuX3Byb3Rv
Y29scywKKyAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFscG5fcHJvdG9jb2xzLAorICAgICAg
ICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gY29tbW9uIEFMUE4gcHJvdG9jb2xz
IiksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAg
IHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLmNsaWVu
dF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQorICAgICAgICBzZWxmLnNlcnZlcl9yYW5kb20g
PSBvcy51cmFuZG9tKDMyKQorICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBwZWVyX2hlbGxvLnNl
c3Npb25faWQKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gcGVlcl9oZWxsby5v
dGhlcl9leHRlbnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAg
IHByZV9zaGFyZWRfa2V5ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLmdl
dF9zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBza19rZXlf
ZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBlZXJfaGVsbG8ucHJl
X3NoYXJlZF9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5w
cmVfc2hhcmVkX2tleS5pZGVudGl0aWVzKSA9PSAxCisgICAgICAgICAgICBhbmQgbGVuKHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVycykgPT0gMQorICAgICAgICApOgorICAgICAgICAg
ICAgIyBhc2sgYXBwbGljYXRpb24gdG8gZmluZCBzZXNzaW9uIHRpY2tldAorICAgICAgICAgICAg
aWRlbnRpdHkgPSBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRpZXNbMF0KKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5nZXRfc2Vzc2lvbl90aWNrZXRfY2IoaWRlbnRp
dHlbMF0pCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAg
ICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192YWxpZAorICAgICAgICAgICAgICAg
IGFuZCBzZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUgPT0gY2lwaGVyX3N1aXRlCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gS2V5U2NoZWR1bGUo
Y2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qo
c2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisKKyAgICAgICAgICAgICAgICBiaW5k
ZXJfa2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJlcyBiaW5kZXIiKQor
ICAgICAgICAgICAgICAgIGJpbmRlcl9sZW5ndGggPSBzZWxmLmtleV9zY2hlZHVsZS5hbGdvcml0
aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ID0gaW5wdXRfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICAgICAgYmluZGVyID0gaW5w
dXRfYnVmLmRhdGFfc2xpY2UoCisgICAgICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ICsgMywg
aGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRh
X3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9iaW5kZXIg
PSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShiaW5kZXJfa2V5KQorCisg
ICAgICAgICAgICAgICAgaWYgYmluZGVyICE9IGV4cGVjdGVkX2JpbmRlcjoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJQU0sgdmFsaWRhdGlvbiBmYWls
ZWQiKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goCisg
ICAgICAgICAgICAgICAgICAgIGlucHV0X2J1Zi5kYXRhX3NsaWNlKGhhc2hfb2Zmc2V0LCBoYXNo
X29mZnNldCArIDMgKyBiaW5kZXJfbGVuZ3RoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgICAgIGlmIHBlZXJfaGVsbG8u
ZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxm
LnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlv
bi5ERUNSWVBULAorICAgICAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVST19SVFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gMAorCisgICAgICAgICMgaWYgUFNLIGlz
IG5vdCB1c2VkLCBpbml0aWFsaXplIGtleSBzY2hlZHVsZQorICAgICAgICBpZiBwcmVfc2hhcmVk
X2tleSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVs
ZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5v
bmUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYu
ZGF0YSkKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAgICAgIHB1YmxpY19r
ZXk6IFVuaW9uWworICAgICAgICAgICAgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSwgeDI1NTE5
LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5CisgICAgICAgIF0KKyAgICAgICAg
c2hhcmVkX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBmb3Iga2V5X3NoYXJl
IGluIHBlZXJfaGVsbG8ua2V5X3NoYXJlOgorICAgICAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0g
ZGVjb2RlX3B1YmxpY19rZXkoa2V5X3NoYXJlKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShw
ZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUxOS5YMjU1MTlQcml2YXRlS2V5LmdlbmVy
YXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1
MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4NDQ4
Llg0NDhQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkg
PSB4NDQ4Llg0NDhQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNf
a2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAg
ICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5leGNoYW5nZShwZWVyX3B1Ymxp
Y19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVfcHJpdmF0ZV9rZXkoCisg
ICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVswXV0oKSwgZGVmYXVs
dF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcHVibGljX2tl
eSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNo
YXJlZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJf
cHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBhc3NlcnQgc2hhcmVk
X2tleSBpcyBub3QgTm9uZQorCisgICAgICAgICMgc2VuZCBoZWxsbworICAgICAgICBoZWxsbyA9
IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYuc2VydmVyX3JhbmRvbSwKKyAg
ICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAorICAgICAgICAgICAgY2lwaGVy
X3N1aXRlPWNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1jb21w
cmVzc2lvbl9tZXRob2QsCisgICAgICAgICAgICBrZXlfc2hhcmU9ZW5jb2RlX3B1YmxpY19rZXko
cHVibGljX2tleSksCisgICAgICAgICAgICBwcmVfc2hhcmVkX2tleT1wcmVfc2hhcmVkX2tleSwK
KyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXN1cHBvcnRlZF92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBpbml0aWFs
X2J1Zik6CisgICAgICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhpbml0aWFsX2J1ZiwgaGVsbG8p
CisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tleSkKKworICAgICAg
ICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24u
RU5DUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rp
b24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQor
CisgICAgICAgICMgc2VuZCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hf
bWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYs
CisgICAgICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAg
ICAgYWxwbl9wcm90b2NvbD1zZWxmLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgZWFybHlfZGF0YT1zZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQsCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlz
IE5vbmU6CisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUKKyAgICAgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAg
ICAgICAgICBwdXNoX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfY29udGV4dD1iIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
aWZpY2F0ZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB1YmxpY19ieXRlcyhF
bmNvZGluZy5ERVIpLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g
W3NlbGYuY2VydGlmaWNhdGVdICsgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgc2VuZCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgICAgIHNp
Z25hdHVyZSA9IHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuc2lnbigKKyAgICAgICAgICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAg
ICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXMo
c2lnbmF0dXJlX2FsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHB1
c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAg
ICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoCisgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlVmVyaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNpZ25hdHVyZV9hbGdvcml0aG0sIHNpZ25hdHVy
ZT1zaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYu
a2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZmluaXNoZWQo
CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICBGaW5pc2hl
ZCgKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X2RhdGE9c2VsZi5rZXlfc2NoZWR1bGUuZmlu
aXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZW5jX2tleSkKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgcHJlcGFyZSB0cmFmZmljIGtleXMKKyAgICAgICAgYXNz
ZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVyYXRpb24gPT0gMgorICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVj
dGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMg
YXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBzZWxm
LmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBhcCB0cmFmZmljIikKKworICAgICAgICAj
IGFudGljaXBhdGUgY2xpZW50J3MgRklOSVNIRUQgYXMgd2UgZG9uJ3QgdXNlIGNsaWVudCBhdXRo
CisgICAgICAgIHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZmluaXNoZWRfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICBzZWxmLl9kZWNfa2V5CisgICAgICAg
ICkKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTY0KQorICAgICAgICBwdXNoX2Zpbmlz
aGVkKGJ1ZiwgRmluaXNoZWQodmVyaWZ5X2RhdGE9c2VsZi5fZXhwZWN0ZWRfdmVyaWZ5X2RhdGEp
KQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYuZGF0YSkKKworICAg
ICAgICAjIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgICAgICBpZiBzZWxmLm5ld19z
ZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZSBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vz
c2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCisgICAg
ICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9c3RydWN0LnVucGFjaygiSSIsIG9zLnVyYW5kb20o
NCkpWzBdLAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1iIiIsCisgICAgICAgICAgICAg
ICAgdGlja2V0PW9zLnVyYW5kb20oNjQpLAorICAgICAgICAgICAgICAgIG1heF9lYXJseV9kYXRh
X3NpemU9c2VsZi5fbWF4X2Vhcmx5X2RhdGEsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgc2VuZCBtZXNzc2FnZQorICAgICAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQob25l
cnR0X2J1Ziwgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorCisgICAgICAgICAgICAjIG5vdGlm
eSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgdGlja2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90
aWNrZXQoc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICAgICAgc2VsZi5uZXdfc2Vz
c2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9zZXJ2ZXJfaGFuZGxlX2ZpbmlzaGVk
KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6Cisg
ICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisKKyAgICAgICAgIyBj
aGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBzZWxm
Ll9leHBlY3RlZF92ZXJpZnlfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVy
cm9yCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAgICAgc2VsZi5fZGVjX2tl
eSA9IHNlbGYuX25leHRfZGVjX2tleQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBOb25l
CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0
aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICBFcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgc2VsZi5fZGVjX2tleSwK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5TRVJWRVJfUE9TVF9I
QU5EU0hBS0UpCisKKyAgICBkZWYgX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAg
c2VsZiwgZGlyZWN0aW9uOiBEaXJlY3Rpb24sIGVwb2NoOiBFcG9jaCwgbGFiZWw6IGJ5dGVzCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBrZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2Vj
cmV0KGxhYmVsKQorCisgICAgICAgIGlmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRU5DUllQVDoK
KyAgICAgICAgICAgIHNlbGYuX2VuY19rZXkgPSBrZXkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2RlY19rZXkgPSBrZXkKKworICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tl
eV9jYigKKyAgICAgICAgICAgIGRpcmVjdGlvbiwgZXBvY2gsIHNlbGYua2V5X3NjaGVkdWxlLmNp
cGhlcl9zdWl0ZSwga2V5CisgICAgICAgICkKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0
YXRlOiBTdGF0ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fX2xvZ2dlcjoKKyAgICAgICAg
ICAgIHNlbGYuX19sb2dnZXIuZGVidWcoIlRMUyAlcyAtPiAlcyIsIHNlbGYuc3RhdGUsIHN0YXRl
KQorICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93M2Mt
aW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiMGNlZTQ2NjEzNDJmZWU0ZWMwMzFjMDYyZjkzNTc0
NzBjNWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjUgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvX2NyeXB0by5jCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5p
dGlhbF9jbGllbnQuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2I3MDU1Y2RhYWNhOTVlZmZiOTNlNTE5ZWNl
NWUzZWQ1M2NkNWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyODAKemNtVitiMV5AY1l7e1Iz
UDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5sO0toPTl1PWkla0IkRSUtRVliZ3djCnpvNm5Y
cC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1RT1FVzJTMGMyZWdPRVlOUXJIUiRHI01TJk5T
O1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+WnpJbyNmMVY9T3I9RHM2MldoQUJHUWFeQlpf
Ym5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYwUTxUOzZRenI4e24leilnLTA+QFd7PGRBJnAm
V3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8dUshfXYycF54fk14QHxUPzJnc3BkNnJeflpJ
Klo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdAKm4lfgp6WSZrWU8ycn1Ccyl8VXI8aTIjNk0m
cSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVKc1lNNykyMCZ1NHo3P1IKenM8JDtSdHYjTD1Y
fU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2hoUEp1VFRwbFQrKj9gdzY+c1pqc2V0c1M3Cnow
YnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRmb1NaYEh5VGkjO3FYVGErdFJAfENSJG1PYkFZ
Wnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1WkArI253eC1NNypmcHkjbyo3PG0rIWNsaj5I
WFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCReVk07N3h+dGY1ZiRfeCozTiR3WGFlQ0lxR1VU
flF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7SnxJXiV8PVZCT3FwbHJmd2ZWRDc4SWBtNzxl
XkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/I0FKJml6Tgp6clojU0U4QUFIIyVKdXApN3Rv
RmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7Vmo/NlhFQlptKVU1PEZTQUwKej1hbjJZJDBS
Q01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFpPD1iIXhTfksleGtZTGBzZlBNbG58OTh5PWNq
Cno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJGcl5MVlFQR1RecG80O1YmNDsjTWhDYFlROGhu
dzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdIdDUlNl9TKXRGOVVqN08jQTJTT0plR0VmY0I3
NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05XcUtHYEQ8Zi18anFGKCVRSU57NjElcjArSn5Y
JTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5eCnpWdkkqUF9LeGBZdmlUfHhRYEl3enArR0Fl
OFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRLckVVU3hoX31saAp6dUg/YndGViU2OXshe0ly
QkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9SKSNweiNJSy1WX0dDfCZeTn1nbkkKenRuSnMm
JnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFqZFIoS3M+e2t9P2EmfCZfMV47KEplQE0+XnV2
aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7SFkpVH4kc1NgZSRUXy1aQEp3KTF4fmkyclIk
bFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYqRi08eDFobklBNil9bWJJbGFCWG1pVHRPKGpI
KTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwlVHdsNU5TOWkmWXw5QD1HKW9NcCVsaitkUW1I
JCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhvNzwjCnp2N20kfXBRYWRnRntHKUMqKnJTbzdo
VktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6TX1Hbys/KDIqOW4xKwp6RUhwejl5YHt7ZFE8
P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZXVCEzSXwqQDRVST93JnQ/SEBjQ3N4NmUKcSl5
Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVDKjlSY1ZjTk95N0wjSTxBYjYzekh8b3cKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0
aWFsX3NlcnZlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9zZXJ2ZXIuYmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YmJiOWMwYWZmODk0NzRmZDcwMjFmNmUxYjQ0ZTA1YmExYTFjNDcKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDIwMgp6Y21WOyowNSQpP3t7UjNQMDA8ZGVYZiNlSilPaTN2eFZx
WVBxdDxHPWVzV0tQbnxBdVNWSz82eXdSNWUwVT11PDMKekZyI0VVOXV7bjxXQlAoT0U/ZXlObDcm
Rm5MQ1dhZlUwcGBHS29WTTtPV1RLc1l+IzJ9OWZDZnJEZXRGUDk8SEl8CnplYzREfmtjelJnJFV2
PWdZPX56UjliYE9VWD90X2hBeyVBZzxGVyZIKCE4ITYmP15fdXF3bElBeGZaN1Y2P0smegp6KVBK
SlI0dnxGPDdpVyp0Z0tyPTB1XkhTTlVPT0Yjdn1LUW9nJCglbkZFMXRYcn44JEl1b0UqNFF2dkcj
RmVHPmIKRWNlNzdsSk9CVXkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNl
cnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTUwYzk2MGYzNTgxNGRlZjJjMmJjNWZhZjdiZGZlYjhkYWIz
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtCkBA
IC0wLDAgKzEsOTkgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246
IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIGNiOjJkOjgwOjk5
OjVhOjY5OjUyOjViCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9u
IENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3Qg
QmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6
IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAorICAgICAgICBTdWJqZWN0OiBDPVhZLCBPPVB5dGhv
biBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFN1Ympl
Y3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3MiBiaXQpCisgICAg
ICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6OTc6ZWQ6NTU6NDE6
YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6CisgICAgICAgICAgICAgICAgICAgIGFjOjU4
OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgorICAgICAgICAgICAgICAg
ICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4ZTpkZjoKKyAgICAg
ICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6YzY6ZWM6NzA6YjA6
M2E6CisgICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2OjRjOmM0OmE3Ojgx
OmU3OmI2OjI0OjY4OgorICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZTozNTowNzoyZjphMDo1
YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKKyAgICAgICAgICAgICAgICAgICAgMTE6ZmU6Y2E6MWE6
M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6CisgICAgICAgICAgICAgICAgICAgIGUx
OmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgorICAgICAgICAgICAg
ICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1ZjozNjpmMjo3ODoKKyAg
ICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6MWI6OGQ6ZmE6MjU6
ZmU6ZDQ6CisgICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVmOmVhOjE3OmNiOjU0
OmM4OjI3Ojk5OjgwOmNiOgorICAgICAgICAgICAgICAgICAgICAzYzo0NTpmMToyYzo1MjoxYzpk
ZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKKyAgICAgICAgICAgICAgICAgICAgNTc6NzM6MWI6
NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6CisgICAgICAgICAgICAgICAgICAg
IDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4OgorICAgICAgICAg
ICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5ZTo5NTpjZTo0YzoK
KyAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6MzU6NTc6Y2U6MDI6
ZGM6ZWM6Y2E6CisgICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5OmNiOjE2OjIwOjE1
OjAzOjI0OjYxOjZjOmY0OjdhOgorICAgICAgICAgICAgICAgICAgICBmYzpiNjo0ODplNTo1OTox
MDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKKyAgICAgICAgICAgICAgICAgICAgZTk6Njg6
OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6CisgICAgICAgICAgICAgICAg
ICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBiOjY4OgorICAgICAg
ICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoyODo5NDo5Nzo3MTo1
NDoKKyAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6YzU6ZGM6MWI6OWU6
ODk6NmQ6MDk6YWM6CisgICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNiOjZkOmYxOjk3OjMx
OmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgorICAgICAgICAgICAgICAgICAgICBhMDplMDpkYzo2OTox
MTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKKyAgICAgICAgICAgICAgICAgICAgYTc6
MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6CisgICAgICAgICAgICAg
ICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCisgICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAg
ICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBE
RDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoyODpGMjozNTpCNjo0
OAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAg
ICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6MjE6Q0E6NkY6OUE6
MDg6Mjg6RjI6MzU6QjY6NDgKKworICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRz
OiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIDMzOjZhOjU0OmQzOjZiOmMwOmQ3OjAxOjVm
OjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgorICAgICAgICAgYjc6MTg6ZTk6YjA6MWU6NGE6
YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6CisgICAgICAgICAxNToxMzplNDpk
ZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToKKyAgICAgICAgIDdk
OjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3OjgwOjlhOjYzOgorICAg
ICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6Yjc6NGQ6YTc6ODQ6
Y2E6CisgICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpkZjpkNzo5OTphYjox
YjplZTo4YjozMDoKKyAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFlOjk3OmJmOmU0Ojdi
OmZkOjBmOmE3OmI0Ojg1Ojc5OgorICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6YmY6MWY6Mjk6NDU6
MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6CisgICAgICAgICBlYzoyYjo0Mjo2YTplNTpiYjpj
ODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKKyAgICAgICAgIGI4OmJmOmQ1OmY3
OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3OgorICAgICAgICAgODc6
YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6NDM6ZDM6CisgICAg
ICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3NjpmNzo3NjoxZjpiMzpm
ZToKKyAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVlOjA4OmQ4OmY0OmZm
OjVhOmRjOjI1OgorICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6NTA6NzM6NzY6MjU6
MzU6ZmM6YjY6MjU6MjY6MTU6CisgICAgICAgICBjYjplYjpjNDoyYjo2MTowYzoxYzplNzplZToy
ZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKKyAgICAgICAgIGQyOmFmOmRlOmU0OjFiOjI0OjE0
OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgorICAgICAgICAgMGE6ZTA6OGQ6ZDc6
NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6CisgICAgICAgICBjNDo5
Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTowMTowNToKKyAgICAg
ICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3OmFjOmViOjRiOjdk
OgorICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6Yzc6Zjk6NmE6NDA6
ZTE6Yjg6NjQ6CisgICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3ZDo1ODo3ZDo2NDo3
OTplNTphNDowOTphYzoxZToKKyAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4CistLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KK01JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NT
cUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9i
MjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05o
TFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgKK05ESXpNVFphTUUw
eEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1Jt
OTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZ
SktvWkkKK2h2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJG
aHo0OGFXenlzZnVBajEKK25VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNj
TEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KKzRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2Fw
WDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKK3J5WDQrRUozTFcxZk52SjRIbjFLaDJo
amJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKKzNSOVJSU0JRSGw2clYz
TWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKK3JGT2Vs
YzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1
LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRr
YzE0elNpVWwzRlUKKys4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0Rj
YVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lzV3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFB
Qm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKK05MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZS
MGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKK0RBWURWUjBUQkFVd0F3RUIv
ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRndaTm0KK2tGRFF0eGpw
c0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMK
K1NZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNi
N29zd3pQZjgKKzU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0
Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdr
ZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKK0RFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEky
UFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKK0syRU1IT2Z1THhlYjdQRFVvWVRu
MHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkKK1Q0c0R4SmFmN1B0
SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKK2p1
VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCistLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjNiZDQ5ODFhNGE2NTk2
YjUwZWM2NWVkYmQ1MWIwYjRjYTNiZWU0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjUKemNt
Vi1AMER9TVV7e1IzUDI8ZyNBKndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtEQSUrTF4qbWopfGZk
dzZINXJHCnpHSU14WV5oVlJGLTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhSUT1fREVYKnJNUz1Q
Mnc5N2tGIWg+Y1dnKW5wKQpmbkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+bXFwTFphQ1g5fWha
PwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Nob3J0X2hlYWRlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yODM2ODNkMmQ1YjU1NWQ5YjAyMzE5OTkwMmZjZWU1N2QxYjU5MzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4KQEAgLTAs
MCArMSBAQAorXfRap7WcDhrW5mj1MEzU/R+zeZMnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3MTI3YTRiMDI1YWEyMzMyMzE5
M2YwNmNmMTc3M2E1NjBlMzgxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9zc2xfY2VydC5wZW0KQEAgLTAsMCArMSwzNCBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FHU0liM0RRRUJDd1VB
TUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21V
Z1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3
MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhDekFKQmdOVkJBWVRB
bGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VHQTFVRUNnd2FVSGww
YUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2CitZMkZzYUc5
emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUo4b0x6ZEI3Mzlr
CitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdPcW5rTHBCNXRuTTgy
NTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VSaHpHRGQzZGtqVWVC
alh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4
NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllvK01kZ1pPY3krN2pF
ak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6ME9CbWg0d2VRcG00
K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpDCitXWXhIQUZwQlFz
NnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JOekV6STZiNHpVCitO
c3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUy
M1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldI
WXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRH
QTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFV
SEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6TmNBQmF6aTI5cmI5
Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCitiNW9JS1BJMXRraWhV
YVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltCitkSGRo
Y21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNvSUpB
TXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gw
ZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhK
MExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpY
TjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRvRGFnTklZeWFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2Y21WMmIyTmhkR2x2
Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5LQUMvCit1bzE3RXdQ
eEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitmUjdzS0trMjJaSFNZ
CitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJ
UEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURmcFNFTG4rdjUzT005
bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JXYm53cmwra0g4eEt4
TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkz
bFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3QXR5ZlRaU1FvRnlN
bU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJCitBWTY1Q2xUVSt6
UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0YWVUUEIxQVV2CitT
dFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29tT29pdz09CistLS0t
LUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9j
aGFpbi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwYWQ0MTY4N2UyYWZkN2EwZjk0ZDE1NjFhYmRlYTFlNWRk
NDM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRo
X2NoYWluLnBlbQpAQCAtMCwwICsxLDYwIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K
K01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1zdGdKbGFhVkpjTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4
Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05
MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9E
QTRNamt4TkRJek1UWmFGdzB5T0RBM01EY3gKK05ESXpNVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpN
UmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1
SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERD
Q0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSjhvTHpkQjczOWsKK1l4
WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9zRHoxTVQ3RGxqY1pMQkx5N09xbmtMcEI1dG5NODI1NkR3
ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZCVzJINWNNQ296N1gxN2tvZVJoekdEZDNka2pVZUJqWHZS
NXFSb3NHOHdNM2xRdWcKK1U3QWl6WSszQXphajF5TjNtWjlLNWEyMGpyNThLcWlueitYeHg2c2Iy
SmZZWWZmMm5lSmJCYWhObTVpZDBBRDIKK3BpL1R0aFpxTzVEVVJKWW8rTWRnWk9jeSs3akVqT0pz
TFdaZDNZenE3OGlNMDdxRGpicElvVnBFTlpDVEhUV0EKK2hYOExJcXowT0JtaDR3ZVFwbTQrcGxV
N0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0QUJXTzduOWZXeVNtZjlRWkMKK1dZeEhBRnBCUXM2elVW
cUFEN25oRmRUcXBROWJSaWFFbmpFNEhpQWNjUFcrTUFvU3hGbnYvck56RXpJNmI0elUKK05zcEZN
ZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5UEp5a3FFWDRQWmwzTGExQmUycTdZWjF3eWRSNTIzWGQr
ZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZSdmliMTc1TDRyMldWMUNYUUg3Z0Z3WllDb2Q2V0hZcTVU
UUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BNEdBMVVk
RHdFQi93UUVBd0lGb0RBZEJnTlYKK0hTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJ
d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEUKK0ZnUVVqK29kNHpOY0FCYXppMjlyYjlOTXk3
WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNiL0sydWJSTkxvM2RTSEsKK2I1b0lLUEkxdGtpaFVhUlBN
RTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW0KK2RIZGhjbVVn
Um05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY29JSkFNc3QK
K2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFjQkFRUjNNSFV3UEFZSUt3WUJCUVVITUFLR01HaDBkSEE2
THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNCNVkyRmpaWEowTG1O
bGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBhSFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExt
NWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3WUQKK1ZSMGZCRHd3T2pBNG9EYWdOSVl5YUhSMGNEb3ZM
M1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjAKK1kyRXZjbVYyYjJOaGRHbHZiaTVq
Y213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFDZjFqRmtROU1ibktBQy8KK3VvMTdFd1B4SEta
ZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJSNVpXY2hEQ3BWN2tDT2haK2ZSN3NLS2syMlpIU1kKK29I
K3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdXdklkM0p2YXBwZFZXa0MvVnBVeUZmTHNHVURGdUlQQURt
WlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4Sy8xbVY2R3E5TVJyUnFpRGZwU0VMbit2NTNPTTltR3Nw
d1crTloxQ0lyYkN1VzAKK0t4Wi90UGtxbjhQU2Q5Zk5aUjcwYkI3cldibndybCtrSDh4S3hMbDZx
ZGxyTW1nNzRXV3doTGVReEs3KzlEZFAKK0lhRGVuenF4NWN3V0JHWS9DMEhjUWowZ1B1eTNsU3Mx
Vi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3WFM3NWlSQXIKKytVRkdUendBdHlmVFpTUW9GeU1tTVVM
cWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExXRXN0VTFOSUIxSy9DUkk3Z0kKK0FZNjVDbFRVK3pSUy90
bEY4SUE3dHNGdmd0RWY4anNJOWthbWxpZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQQjFBVXYKK1N0UFlR
a0tOTStOanl0V0hsNXROdUJvRE5Mc2MwZ0kvV1NQaUk0Q0lZOEx3b21Pb2l3PT0KKy0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRWJUQ0NB
dFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgor
QkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZi
aUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6
TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dHUEFEQ0NB
WW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQorblV0THh6RDJ1QXV6
VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVwNEhudGlSbworNHFC
K05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVaTDF5UUFSZHVmajU5
eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9XbEY3SHY2aGZMVk1n
bm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1JVTJXSGwyb05KaHlC
dXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFWODRDM096S2FmaUtX
am5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtBSjdZL1RMSFoyMk4v
WjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgvd045N0pKc1hjRzU2
SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3cHhEWQoraXNXcUc4
Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVUzYi9LMnVi
UgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1YlJOTG8zZFNIS2I1
b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFN
MnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0RlZReEZSUGszbjVP
RE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6RFFMeVAxQ3JhUHRI
dUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2Nlh2K1I3L1ErbnRJ
VjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6WQorZlUzUnVML1Y5
eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpwazV5aUQwY1NOdgor
REVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdIUEpRYzNZbE5meTJK
U1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09yS1ZoR29ObkFDdUNO
MTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdFRml2T1NDdDJKYkpl
aHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdTbWxYODk5V0gxa2Vl
V2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5
LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGZkZWMxMDFjOGQ2NzRjNTIwN2QxMDBmNzRiNmE3MjQyNGNiNTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCkBAIC0w
LDAgKzEsNDAgQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRy9RSUJBREFOQmdr
cWhraUc5dzBCQVFFRkFBU0NCdWN3Z2diakFnRUFBb0lCZ1FDZktDODNRZTkvWkdNVworWWhicEFS
UmlLY282bUpJOUNOTmVhZjdBODlURSt3NVkzR1N3Uzh1enFwNUM2UWViWnpQTnVlZzhIWW9Ud044
NQorWjN4TTAzNi9RdzlLaFFWdGgrWERBcU0rMTllNUtIa1ljeGczZDNaSTFIZ1kxNzBlYWthTEJ2
TURONVVMb0ZPdworSXMyUHR3TTJvOWNqZDVtZlN1V3R0STYrZkNxb3A4L2w4Y2VyRzlpWDJHSDM5
cDNpV3dXb1RadVluZEFBOXFZdgorMDdZV2FqdVExRVNXS1BqSFlHVG5NdnU0eEl6aWJDMW1YZDJN
NnUvSWpOTzZnNDI2U0tGYVJEV1FreDAxZ0lWLworQ3lLczlEZ1pvZU1Ia0tadVBxWlZPeE9LK0Ev
TnJtcnFIRnNQSXNyczV3azdRQVZqdTUvWDFza3BuL1VHUWxtTQorUndCYVFVTE9zMUZhZ0ErNTRS
WFU2cVVQVzBZbWhKNHhPQjRnSEhEMXZqQUtFc1JaNy82emN4TXlPbStNMURiSworUlRINE5XalZX
cG5ZOFhhVkdkUmh0VHBIOU1qeWNwS2hGK0QyWmR5MnRRWHRxdTJHZGNNblVlZHQxM2ZuOXhEdQor
UDRQb3BoRTBpcC9JTWduK2tiNG05ZStTK0s5bGxkUWwwQis0QmNHV0FxSGVsaDJLdVUwQ0F3RUFB
UUtDQVlFQQorbEtpV0lZam15UmpkTEtVR1BURVM5dldOdk5tUmpvelYwUlEwTGNvU2JNTUxEWmtl
TzBVd3lXcU9WSFVROCtpYgorakljZkVqZU5KeEk1N29ab3BlSE9PNXZKaHBObEZIK2c3bHRpVzJx
RVJxQTFLODhsU1htOTlCenc2Rk5xaENSRQorSzh1YjVOOWZ5ZkpBK1A0by94bTBXSzhFWGs1eUlV
VjE3cC85ekpKeHpnS2d2MmpzVlRpM1FHMk9aR3ZuNE91ZworQnlvbU1aRUdIa0JEemR4ejhjL2NQ
MVRsazFSRnV3U2dld3MxNzhrMnhxN0FZU00vczBZbUhpN2IvUlN2cHRYNgorMXY4UDhrWE5VZTRB
d1RhTnlybHZGMmx3SWFkWjhoMWhBN3RDRTJuNDRiN2E3S2ZoQWt3Y2JyMVQ1OWlvWWg2UAorenhz
eVBUNjc4dUQ1MWRidEQvRFhKQ2NvZWVGT2I4dXprUjJLTmNyblF6WnBDSm5ScTRHcDV5Ynh3c3h4
dXpwcgorZ3owZ2JObGh1V3RFN0VvU3ptSUs5dCtXVFM3SU0yQ3ZaeW1kNi9PQWgxRnV3NkFRaFNw
NjRYUnAzT2ZNTUFBQworSWUyRVB0S2o0aXNsV0dUOFZvVWp1UllHbWRSaDRkdUFIMWRraUFYT1dB
M1I3eTVhMS95L2lFOEtFOEJ0eG9jQgorQW9IQkFNOGFpVVJncHUxRnMwT3F6Nml6ZWM3S1NMTDNs
OGhtVytNS1VPZmsvWWJuZzZGclRGc0w1WXR6UitBcAord1c0d3dXbm5JS0VjMUpMaVo3ZzhhZ1JF
VEs4aHI1UHdGWFVuL0dTV0MwU01zYXpMSlRveVNRUzVMT1YwdEx6Swora0ozanROVTd0bmxER05r
Q0hUSFNvVkwyVC84dCtJa1pJL2g1WjZ3amxZUHZVMkl1MG5WSVh0aUcrYWx2NEE2TQorSHJoOWw1
b3I0bWpCNnJHblZYZVlvaExrQ202cy9XOTdhaFZ4TE1jRWRic0JvMXBybTJKcUduU29pUi90RUZD
LworUUhRbmJRS0J3UURFdTdrVzBZZzlzWjg5UXRZdFZRMVlwaXhGWk9SYVVlUklSTG5wRXMxdzdM
MW1DYk9aMkxqOQorSkh4c0gwNWNZQWM3SEpmUHd3eHYzKzNhR0FJQy9kZnU0VlN3RUZ0YXRBelVw
emxoektTNStIUUNXQjRKVU5OVQorTVEzK0Z3SzJ4UVg0UGg4dCtPenJGaVljSzJnMEFuNVV4V01h
MkhXSUFXVU9oblRPeWRBVnNvSDZ5UDMxY1ZtNAorMGh4b0FCQ3dmbGFOTE5HalJVeWZCcExUQWNO
dS9ZdGNFK0tSRXk3WUFBZ1hYcmhSU080WHBMc1NYd0xuTFQ3LworWU9rb0JXRGNUV0VDZ2NCUFdu
U1VEWkNJUTNlZml0aE1aSkJjaXFkMlkyWDE5RHBxOE8zMUhJbUQ0anRPWTBWNworY1VCL3dTa2VI
QUd3amQvZUN5QTJlMHg4QjJJRWRxbU1mdnIrODZKSnhla0MzZEpZWENGdkg1V0loc0g1M1lDYQor
M2JUMUtsV0NMUDlpYi9nKzU4VlFDMFIvQ2M5VDRzZkxlUE5IN0Q1WmtaZDF3bGJWMzBDUHIraThL
d0theTZNRAoreGh2dEx4K2prMDdHRStFOXdtamJDTW83VGNseXJMb1ZFT2xxWk1BcXNoZ0FwVCtw
OWV5Q1BldHdYdURId2EzbgorV3hoSGNsY1pDVjdSNHJVQ2djQWtkR1NueGN2cElyRFBPVU5Xd3h2
bUFXVFN0dzlaYlROUDhPeENOQ205Y3lEbAorZDRiQVMxaDhEL2ErVWs3QzcwaG51N1NsMnc3QzdF
dTJ6aHdSVWRoaGUzK2w0R0lOUEsvajk5aTZOcUdQbEdwcQoreE1sTUVKNFlTNzY4QnFlS0ZwZzBs
ODVQUm9FZ1RzcGhEZW9ST1NVUHNFUGRCWjlCeElCbFlLVGtiS0VTWkRHUgordHd6WUhsangxbjFO
Q0RZUGZsbXJiMUtwWG40RU9jT2JOZ2h3MktxcU5VVVdmT2VCUHdCQTFGeHpNNEJyQVN0cAorREJJ
TnBHUzREYzBtalZpVmVnRUNnY0EzaFR0bTgyWGR4UVhqOUxRbWIvRTNsS3gvN0g4N1hJT2VOTW12
all1WgoraVM5d0tya0YrdTQydnlvRHhjS01DbnhQNTA1NndwZFNUNHA1NnIrU0J3VlRIY2MzbEdC
U0djTVRJZndSWHJqMwordGhPQTJvdXIybjRvdU5Jc1l5VGxjc1FTemlmd21wUm1WTVJQeGw5ZllW
ZEVXVWdCODNGZ0hUMEQ5YXZ2Wm5GOQordDlPY2NuR0pYU2hBSVpJQkFEaFZqL0p3RzRGYmFYNDJO
aWpENVBOcFZMazFZMTdPVjBJNTc2VDlTZmFRb0JqSgorYUgxTS96QzRhVmFTMERZQi9HeHE3djg9
CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9hc3luY2lvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDllY2Q1Zjc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpAQCAtMCww
ICsxLDM3NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHJhbmRv
bQoraW1wb3J0IHNvY2tldAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgor
ZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorCitmcm9tIGFpb3F1aWMuYXN5bmNp
by5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGlt
cG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitmcm9tIGFpb3F1aWMuYXN5bmNpby5zZXJ2ZXIg
aW1wb3J0IHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWlj
Q29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2Vy
CisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VS
VkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIFNLSVBfVEVTVFMsCisgICAg
Z2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgcnVuLAorKQorCityZWFsX3NlbmR0byA9IHNv
Y2tldC5zb2NrZXQuc2VuZHRvCisKKworZGVmIHNlbmR0b193aXRoX2xvc3Moc2VsZiwgZGF0YSwg
YWRkcj1Ob25lKToKKyAgICAiIiIKKyAgICBTaW11bGF0ZSAyNSUgcGFja2V0IGxvc3MuCisgICAg
IiIiCisgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC4yNToKKyAgICAgICAgcmVhbF9zZW5kdG8o
c2VsZiwgZGF0YSwgYWRkcikKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgaGFuZGxlX3N0cmVhbShyZWFkZXIsIHdy
aXRlcik6CisgICAgYXN5bmMgZGVmIHNlcnZlKCk6CisgICAgICAgIGRhdGEgPSBhd2FpdCByZWFk
ZXIucmVhZCgpCisgICAgICAgIHdyaXRlci53cml0ZShieXRlcyhyZXZlcnNlZChkYXRhKSkpCisg
ICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKHNl
cnZlKCkpCisKKworY2xhc3MgSGlnaExldmVsVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5zZXJ2ZXJf
aG9zdCA9ICJsb2NhbGhvc3QiCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSA0NDMzCisKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorCisgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGhvc3Q9Tm9uZSwKKyAgICAgICAgcG9ydD1O
b25lLAorICAgICAgICBjYWRhdGE9Tm9uZSwKKyAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRG
SUxFLAorICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgIHJlcXVlc3Q9YiJwaW5n
IiwKKyAgICAgICAgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBpZiBob3N0IGlzIE5vbmU6Cisg
ICAgICAgICAgICBob3N0ID0gc2VsZi5zZXJ2ZXJfaG9zdAorICAgICAgICBpZiBwb3J0IGlzIE5v
bmU6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXJfcG9ydAorICAgICAgICBpZiBjb25m
aWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZp
Z3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJp
ZnlfbG9jYXRpb25zKGNhZGF0YT1jYWRhdGEsIGNhZmlsZT1jYWZpbGUpCisgICAgICAgIGFzeW5j
IHdpdGggY29ubmVjdChob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sICoq
a3dhcmdzKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAjIHdhaXRpbmcgZm9yIGNvbm5lY3RlZCB3
aGVuIGNvbm5lY3RlZCByZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgICAgICBhd2FpdCBjbGll
bnQud2FpdF9jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0
IGNsaWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3Jp
dGVyLmNhbl93cml0ZV9lb2YoKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
d3JpdGVyLmdldF9leHRyYV9pbmZvKCJzdHJlYW1faWQiKSwgMCkKKworICAgICAgICAgICAgd3Jp
dGVyLndyaXRlKHJlcXVlc3QpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKKworICAg
ICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAgICAgICAgIyB3YWl0
aW5nIGZvciBjbG9zZWQgd2hlbiBjbG9zZWQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgICAgICBh
d2FpdCBjbGllbnQud2FpdF9jbG9zZWQoKQorCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisg
ICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBob3N0PSI6
OiIsICoqa3dhcmdzKToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklM
RSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyID0gYXdhaXQgc2VydmUoCisg
ICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICBwb3J0PXNlbGYuc2VydmVyX3BvcnQs
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBz
dHJlYW1faGFuZGxlcj1oYW5kbGVfc3RyZWFtLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rf
YW5kX3NlcnZlKHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAg
IHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
aXB2NChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihob3N0PSIwLjAuMC4wIikp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0PSIxMjcuMC4wLjEi
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIEBz
a2lwSWYoImlwdjYiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBJUHY2IHRlc3RzIikKKyAgICBk
ZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY2KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKGhvc3Q9Ijo6IikpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2Ns
aWVudChob3N0PSI6OjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJn
bmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2NlcnRpZmljYXRlKHNl
bGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19jZXJ0
aWZpY2F0ZShjb21tb25fbmFtZT0ibG9jYWxob3N0IikKKworICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsIHByaXZhdGVfa2V5PXByaXZhdGVfa2V5LCBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2UgPSBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY2FkYXRh
PWNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisg
ICAgICAgICAgICAgICAgY2FmaWxlPU5vbmUsCisgICAgICAgICAgICApCisgICAgICAgICkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRl
c3RfY29ubmVjdF9hbmRfc2VydmVfbGFyZ2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBU
cmFuc2ZlciBlbm91Z2ggZGF0YSB0byByZXF1aXJlIHJhaXNpbmcgTUFYX0RBVEEgYW5kIE1BWF9T
VFJFQU1fREFUQS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogMjA5NzE1Mgor
ICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNl
bGYucnVuX2NsaWVudChyZXF1ZXN0PWRhdGEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aG91dF9j
bGllbnRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRf
d2l0aG91dF9jb25maWcoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChzZWxmLnNl
cnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
YXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAg
ICAgcnVuKHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xp
ZW50X3dyaXRlbGluZXMoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFz
eW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxm
LnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkg
YXMgY2xpZW50OgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50
LmNyZWF0ZV9zdHJlYW0oKQorICAgICAgICAgICAgICAgIGFzc2VydCB3cml0ZXIuY2FuX3dyaXRl
X2VvZigpIGlzIFRydWUKKworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZWxpbmVzKFtiIjAx
MjM0NTY3IiwgYiI4OTAxMjM0NSJdKQorICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9lb2Yo
KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKCkKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHJ1bl9jbGll
bnRfd3JpdGVsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiIjU0
MzIxMDk4NzY1NDMyMTAiKQorCisgICAgQHNraXBJZigibG9zcyIgaW4gU0tJUF9URVNUUywgIlNr
aXBwaW5nIGxvc3MgdGVzdHMiKQorICAgIEBwYXRjaCgic29ja2V0LnNvY2tldC5zZW5kdG8iLCBu
ZXdfY2FsbGFibGU9bGFtYmRhOiBzZW5kdG9fd2l0aF9sb3NzKQorICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dpdGhfcGFja2V0X2xvc3Moc2VsZiwgbW9ja19zZW5kdG8pOgorICAgICAg
ICAiIiIKKyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1Y2Nlc3MgYW5kIHN0
cmVhbSBkYXRhIGlzIHN1Y2Nlc3NmdWxseSBzZW50CisgICAgICAgIGFuZCByZWNlaXZlZCBpbiB0
aGUgcHJlc2VuY2Ugb2YgcGFja2V0IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGluIGVhY2ggZGlyZWN0
aW9uKS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogNjU1MzYKKworICAgICAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
aXNfY2xpZW50PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAgICAgICAgKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjb25maWd1cmF0
aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKSkKKworICAgICAgICByZXNwb25zZSA9IHJ1bigKKyAg
ICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwg
cXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0PWRhdGEsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5k
X3NlcnZlX3dpdGhfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VydmVy
CisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHN0b3JlID0gU2Vzc2lvblRp
Y2tldFN0b3JlKCkKKworICAgICAgICBkZWYgc2F2ZV90aWNrZXQodCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdAorCisg
ICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAgICAgICAgICAgICAg
ICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cj1zdG9yZS5hZGQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgZmlyc3Qg
cmVxdWVzdAorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcj1zYXZlX3RpY2tldCksKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiImduaXAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNsaWVudF90
aWNrZXQpCisKKyAgICAgICAgIyBzZWNvbmQgcmVxdWVzdAorICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsIHNlc3Np
b25fdGlja2V0PWNsaWVudF90aWNrZXQKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIp
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeShz
ZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9
IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3RhdGVs
ZXNzX3JldHJ5X2JhZF9vcmlnaW5hbF9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgSWYgdGhlIHNlcnZlcidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZl
IHRoZSBjb3JyZWN0CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgdGhlIGNvbm5lY3Rp
b24gZmFpbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9wcm90b2NvbCgqYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBRdWljQ29ubmVjdGlvblByb3Rv
Y29sKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9vcmlnaW5h
bF9jb25uZWN0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHByb3RvY29sCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29s
LCBzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKwor
ICAgIEBwYXRjaCgiYWlvcXVpYy5xdWljLnJldHJ5LlF1aWNSZXRyeVRva2VuSGFuZGxlci52YWxp
ZGF0ZV90b2tlbiIpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxl
c3NfcmV0cnlfYmFkKHNlbGYsIG1vY2tfdmFsaWRhdGUpOgorICAgICAgICBtb2NrX3ZhbGlkYXRl
LnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigiRGVjcnlwdGlvbiBmYWlsZWQuIikKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAor
ICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90aW1lb3V0
PTQuMCksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9hbmRfc2VydmVfd2l0aF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYpOgorICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisKKyAgICAgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290
aWF0aW9uCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpKQorICAgICAgICBjb25maWd1cmF0aW9u
LnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0QSkKKworICAgICAgICByZXNw
b25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNl
bGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgcG9ydD00NDAwLAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
LCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0X25vX3dhaXRfY29ubmVjdGVkKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZChjb25maWd1cmF0aW9u
KToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgIDQ0MDAsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgIHdhaXRfY29ubmVjdGVkPUZhbHNlLAorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAg
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBydW5fY2xpZW50X25vX3dhaXRfY29ubmVjdGVkKAorICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVv
dXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9sb2NhbF9wb3J0KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChsb2NhbF9wb3J0PTM0NTYp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVm
IHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5f
Y2xpZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisg
ICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2
ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisg
ICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGlu
ZygpCisgICAgICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpKQor
CisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnRfa2V5X3VwZGF0ZSgpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2Fk
X3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNl
bGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAgICAgICAg
KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorICAgICAg
ICAgICAgICAgIGNsaWVudC5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICAgICAgICAgIGF3
YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAg
ICAgIHJ1bihydW5fY2xpZW50X2tleV91cGRhdGUoKSkKKworICAgIGRlZiB0ZXN0X3Bpbmcoc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FD
RVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAg
ICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIGF3YWl0
IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9waW5n
KCkpCisKKyAgICBkZWYgdGVzdF9waW5nX3BhcmFsbGVsKHNlbGYpOgorICAgICAgICBhc3luYyBk
ZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwg
c2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgICAgICAg
ICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBjb3JvcyA9IFtjbGllbnQucGluZygpIGZv
ciB4IGluIHJhbmdlKDE2KV0KKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLmdhdGhlcigq
Y29yb3MpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVu
X2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2ZXNfZ2FyYmFnZShz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBz
ZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJjMDAwMDAwMDAwODAi
KSwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNlcnZlci5jbG9zZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmRiZjUxMTI0Y2Ri
NjMyYWRhMzBiNjZjM2YyZTQ0NmVmYmMyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQg
YXN5bmNpbworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmFz
eW5jaW8uY29tcGF0IGltcG9ydCBfYXN5bmNjb250ZXh0bWFuYWdlcgorCitmcm9tIC51dGlscyBp
bXBvcnQgcnVuCisKKworQF9hc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgc29tZV9jb250
ZXh0KCk6CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorICAgIHlpZWxkCisgICAgYXdhaXQg
YXN5bmNpby5zbGVlcCgwKQorCisKK2NsYXNzIEFzeW5jaW9Db21wYXRUZXN0KFRlc3RDYXNlKToK
KyAgICBkZWYgdGVzdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAg
ICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcGFzcwor
CisgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIHNv
bWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29tZSBy
ZWFzb24iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToK
KyAgICAgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb25f
dHlwZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzeW5j
IHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAg
ICAgICAgcnVuKHRlc3QoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1
ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MWRiYzQ0ZDBkZDI2ZjFlZjY4NTY4MjRkNTViYjg4MDk5Mjg4NzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAgKzEsMjAxIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciwgc2l6ZV91aW50X3Zh
cgorCisKK2NsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RhdGFfc2xp
Y2Uoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhX3NsaWNl
KDAsIDgpLCBiIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YV9zbGljZSgxLCAzKSwgYiJceDA3XHgwNiIpCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLmRhdGFfc2xpY2UoLTEsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVm
ZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDkpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1
Zi5kYXRhX3NsaWNlKDEsIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAx
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygzKSwgYiJceDA4XHgw
N1x4MDYiKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc19uZWdhdGl2ZShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAg
ICAgICAgIGJ1Zi5wdWxsX2J5dGVzKC0xKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc190cnVu
Y2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYu
cHVsbF9ieXRlcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisK
KyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3plcm8oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wdWxs
X3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4
MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91
aW50OCgpLCAweDA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEpCisK
KyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ4X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MTYoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAz
XHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQxNigpLCAw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMikKKworICAgIGRl
ZiB0ZXN0X3B1bGxfdWludDE2X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDMyKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJc
eDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50MzIoKSwgMHgwODA3
MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgZGVm
IHRlc3RfcHVsbF91aW50MzJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJy
b3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50NjQoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4
MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ2NCgpLCAweDA4MDcw
NjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKwor
ICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ2NCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXMoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGIiXHgwOFx4MDdceDA2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAz
KQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlcldyaXRlRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiJceDA4XHgwN1x4
MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ZGVmIHRlc3RfcHVzaF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9MykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDgoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICBidWYucHVzaF91aW50OCgweDA4KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDgiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQxNihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTIpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNigw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDciKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAgICBkZWYgdGVzdF9w
dXNoX3VpbnQzMihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQzMigweDA4MDcwNjA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhLCBiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ2NChzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ2NCgweDA4
MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDgpCisKKyAgICBkZWYgdGVzdF9zZWVrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1iIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWYu
ZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgICAg
ICBidWYuc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgICAgIGJ1Zi5zZWVrKDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2VlaygtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2Vlayg5KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKworY2xhc3MgVWludFZhclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiByb3VuZHRyaXAoc2VsZiwgZGF0YSwgdmFsdWUpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3Vp
bnRfdmFyKCksIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIGxl
bihkYXRhKSkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkKKyAgICAgICAgYnVm
LnB1c2hfdWludF92YXIodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGRhdGEpCisKKyAgICBkZWYgdGVzdF91aW50X3ZhcihzZWxmKToKKyAgICAgICAgIyAxIGJ5dGUK
KyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDAwIiwgMCkKKyAgICAgICAgc2VsZi5yb3VuZHRy
aXAoYiJceDAxIiwgMSkKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDI1IiwgMzcpCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHgzZiIsIDYzKQorCisgICAgICAgICMgMiBieXRlcworICAg
ICAgICBzZWxmLnJvdW5kdHJpcChiIlx4N2JceGJkIiwgMTUyOTMpCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHg3Zlx4ZmYiLCAxNjM4MykKKworICAgICAgICAjIDQgYnl0ZXMKKyAgICAgICAg
c2VsZi5yb3VuZHRyaXAoYiJceDlkXHg3Zlx4M2VceDdkIiwgNDk0ODc4MzMzKQorICAgICAgICBz
ZWxmLnJvdW5kdHJpcChiIlx4YmZceGZmXHhmZlx4ZmYiLCAxMDczNzQxODIzKQorCisgICAgICAg
ICMgOCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YzJceDE5XHg3Y1x4NWVceGZm
XHgxNFx4ZThceDhjIiwgMTUxMjg4ODA5OTQxOTUyNjUyKQorICAgICAgICBzZWxmLnJvdW5kdHJp
cChiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwgNDYxMTY4NjAxODQyNzM4Nzkw
MykKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludF92YXJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhmZiIpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludF92YXJfdG9vX2JpZyhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBidWYucHVzaF91aW50X3Zhcig0NjExNjg2
MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
KGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3Ro
IGludGVnZXIiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NpemVfdWludF92YXIoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig2MyksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxNjM4MyksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxMDczNzQxODIzKSwgNCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDMpLCA4KQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAg
ICBzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVnZXIgaXMgdG9vIGJp
ZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYTVjZGM1OGY1OWM2ZTk5OGIwZDM5
NDlhYTc0Zjc3ZDIxNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxODAwIEBACitpbXBvcnQgYXN5bmNpbworaW1w
b3J0IGJpbmFzY2lpCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitpbXBvcnQgdGltZQor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljIGltcG9ydCB0bHMK
K2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBlbmNvZGVf
dWludF92YXIKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgUXVpY0Nvbm5lY3Rpb24sCisgICAgUXVpY0Nv
bm5lY3Rpb25FcnJvciwKKyAgICBRdWljTmV0d29ya1BhdGgsCisgICAgUXVpY1JlY2VpdmVDb250
ZXh0LAorKQorZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9t
IGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gYWlvcXVpYy5xdWlj
LnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgUXVpY0Vycm9y
Q29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGVuY29kZV9xdWljX3JldHJ5LAorICAgIGVu
Y29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNr
ZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNrZXRCdWlsZGVyCitm
cm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBhY2VyCisKK2Zyb20g
LnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRG
SUxFLAorICAgIFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAorICAgIFNFUlZFUl9LRVlGSUxF
LAorKQorCitDTElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCisKK1NFUlZFUl9BRERSID0g
KCIyLjMuNC41IiwgNDQzMykKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQsIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRUKToKKyAgICByZXR1cm4gUXVpY1JlY2VpdmVD
b250ZXh0KAorICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Lmhv
c3RfY2lkLAorICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3JrX3BhdGhzWzBdLAor
ICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9W10sCisgICAgICAgIHRpbWU9YXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnRpbWUoKSwKKyAgICApCisKKworZGVmIGNvbnN1bWVfZXZlbnRzKGNvbm5l
Y3Rpb24pOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV2ZW50ID0gY29ubmVjdGlvbi5uZXh0
X2V2ZW50KCkKKyAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisK
KworZGVmIGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVudF9vcHRpb25zKToK
KyAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1R
dWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICAgICAgKQorICAgICkKKyAgICBjbGll
bnQuX2Fja19kZWxheSA9IDAKKworICAgICMga2ljay1vZmYgaGFuZHNoYWtlCisgICAgY2xpZW50
LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIHJldHVybiBjbGllbnQKKworCitAY29udGV4dGxp
Yi5jb250ZXh0bWFuYWdlcgorZGVmIGNsaWVudF9hbmRfc2VydmVyKAorICAgIGNsaWVudF9rd2Fy
Z3M9e30sCisgICAgY2xpZW50X29wdGlvbnM9e30sCisgICAgY2xpZW50X3BhdGNoPWxhbWJkYSB4
OiBOb25lLAorICAgIGhhbmRzaGFrZT1UcnVlLAorICAgIHNlcnZlcl9rd2FyZ3M9e30sCisgICAg
c2VydmVyX2NlcnRmaWxlPVNFUlZFUl9DRVJURklMRSwKKyAgICBzZXJ2ZXJfa2V5ZmlsZT1TRVJW
RVJfS0VZRklMRSwKKyAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKKyAgICBzZXJ2ZXJfcGF0Y2g9bGFt
YmRhIHg6IE5vbmUsCispOgorICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCks
ICoqY2xpZW50X29wdGlvbnMKKyAgICApCisgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKworICAgIGNsaWVudCA9
IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24sICoqY2xp
ZW50X2t3YXJncykKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tl
dF9wYWNpbmcoY2xpZW50KQorICAgIGNsaWVudF9wYXRjaChjbGllbnQpCisKKyAgICBzZXJ2ZXJf
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9RmFs
c2UsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9ucworICAgICkKKyAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVyX2NlcnRmaWxlLCBz
ZXJ2ZXJfa2V5ZmlsZSkKKworICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRp
b249c2VydmVyX2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKKyAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVyKQorICAgIHNlcnZl
cl9wYXRjaChzZXJ2ZXIpCisKKyAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCisgICAgaWYgaGFuZHNo
YWtlOgorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgp
KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlcikKKworICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCisKKyAgICAjIGNsb3NlCisg
ICAgY2xpZW50LmNsb3NlKCkKKyAgICBzZXJ2ZXIuY2xvc2UoKQorCisKK2RlZiBkaXNhYmxlX3Bh
Y2tldF9wYWNpbmcoY29ubmVjdGlvbik6CisgICAgY2xhc3MgRHVtbXlQYWNrZXRQYWNlcihRdWlj
UGFja2V0UGFjZXIpOgorICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93KToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBjb25uZWN0aW9uLl9sb3NzLl9wYWNlciA9IER1
bW15UGFja2V0UGFjZXIoKQorCisKK2RlZiBzZXF1ZW5jZV9udW1iZXJzKGNvbm5lY3Rpb25faWRz
KToKKyAgICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2VfbnVtYmVyLCBjb25u
ZWN0aW9uX2lkcykpCisKKworZGVmIGRyb3Aoc2VuZGVyKToKKyAgICAiIiIKKyAgICBEcm9wIGRh
dGFncmFtcyBmcm9tIGBzZW5kZXJgLgorICAgICIiIgorICAgIHJldHVybiBsZW4oc2VuZGVyLmRh
dGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCisKKworZGVmIHJvdW5kdHJpcChzZW5k
ZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJg
IHRvIGByZWNlaXZlcmAgYW5kIGJhY2suCisgICAgIiIiCisgICAgcmV0dXJuICh0cmFuc2Zlcihz
ZW5kZXIsIHJlY2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikpCisKKworZGVmIHRy
YW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAgIFNlbmQgZGF0YWdyYW1zIGZy
b20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYC4KKyAgICAiIiIKKyAgICBkYXRhZ3JhbXMgPSAwCisg
ICAgZnJvbV9hZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGllbnQgZWxzZSBTRVJW
RVJfQUREUgorICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9dGltZS50aW1lKCkpOgorICAgICAgICBkYXRhZ3JhbXMgKz0gMQorICAgICAgICByZWNlaXZl
ci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUudGltZSgpKQorICAg
IHJldHVybiBkYXRhZ3JhbXMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvblRlc3QoVGVzdENhc2Up
OgorICAgIGRlZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIsIGFscG5fcHJv
dG9jb2w9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBoYW5kc2hha2UgY29tcGxl
dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290
aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxw
bl9wcm90b2NvbCkKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90
b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9kYXRhX2FjY2VwdGVk
LCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNzaW9uX3Jlc3VtZWQs
IEZhbHNlKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElz
c3VlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKKwor
ICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAg
ICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBmb3Ig
aSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIu
bmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Qo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAg
ICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQorCisg
ICAgICAgICAgICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJsZSBjb25uZWN0aW9u
IElEcyBmb3IgdGhlIHBlZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsx
LCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNlcnZlci5fcGVlcl9j
aWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgY2xp
ZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50
LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9u
IHRoZSBjbGllbnQgc2lkZQorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihjbGllbnQu
Z2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbGll
bnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2Vz
IG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcihzZXJ2
ZXIuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShz
ZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNsaWVudCBsb2cKKyAg
ICAgICAgICAgIGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50
b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2xpZW50X2xvZ1si
dHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICAgICAgICAgICMgY2hlY2sgc2VydmVy
IGxvZworICAgICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1cmF0aW9uLnF1aWNf
bG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzZXJ2
ZXJfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3Rfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAg
ICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsiaDMtMjUiLCAiaHEt
MjUiXX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogWyJo
cS0yNSJdfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBj
aGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFr
ZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPSJocS0yNSIpCisK
KyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6CisgICAgICAgIGNs
aWVudF9sb2dfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VydmVyX2xvZ19maWxlID0g
aW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50X2xvZ19maWxlfSwK
KyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IHNlcnZlcl9s
b2dfZmlsZX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMg
Y2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hh
a2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgICAgICAgICAgIyBjaGVjayBz
ZWNyZXRzIHdlcmUgbG9nZ2VkCisgICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50X2xvZ19m
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXJfbG9nX2ZpbGUu
Z2V0dmFsdWUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfbG9nLCBzZXJ2
ZXJfbG9nKQorICAgICAgICAgICAgbGFiZWxzID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGlu
IGNsaWVudF9sb2cuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQo
bGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBsYWJlbHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
UVVJQ19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2VydF9jaGFpbihzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2VydGZpbGU9U0VSVkVS
X0NFUlRGSUxFX1dJVEhfQ0hBSU4pIGFzICgKKyAgICAgICAgICAgIGNsaWVudCwKKyAgICAgICAg
ICAgIHNlcnZlciwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNv
bXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwg
c2VydmVyPXNlcnZlcikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzEoc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGV2
ZW4gaW4gdGhlIGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1zKToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhb
MF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVp
Y0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0
aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAg
ICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmln
dXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVy
X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAg
ICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUs
IFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5
ID0gMAorCisgICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4w
CisgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQorCisgICAgICAgICMgSU5JVElBTCBp
cyBsb3N0CisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBjbGllbnQuaGFuZGxlX3RpbWVyKG5v
dz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAzLjApCisKKyAg
ICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFL
RQorICAgICAgICBub3cgPSAxLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFn
cmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlcnZlci5nZXRfdGltZXIoKSwgMi4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMu
UHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4
dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBub3JtYWxseQorICAg
ICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3Jh
bShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xp
ZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RF
cXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVu
dC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5v
dyA9IDEuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJ
RU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3Rp
bWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Mu
c3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29t
cGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQo
KSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAg
IyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzIoc2VsZik6
CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4g
W2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29u
ZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxF
KQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50
X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAg
IHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNl
KQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NF
UlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5v
dyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNl
cnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFIGJ1dCBzZWNv
bmQgZGF0YWdyYW0gaXMgbG9zdAorICAgICAgICBub3cgPSAwLjEKKyAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAg
ICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2Vu
dF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2VpdmVzIGZpcnN0IGRh
dGFncmFtIGFuZCBzZW5kcyBBQ0tTCisgICAgICAgIG5vdyA9IDAuMgorICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAg
ICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQorICAgICAgICBzZWxm
LmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29s
TmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQo
KSkKKworICAgICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORworICAgICAgICBub3cg
PSBjbGllbnQuZ2V0X3RpbWVyKCkgICMgfjAuNjI1CisgICAgICAgIGNsaWVudC5oYW5kbGVfdGlt
ZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93
PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0
NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAx
Ljg3NSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNjYXJkcyBJTklUSUFM
IGFuZCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC43MjUKKyAgICAgICAgc2VydmVyLnJlY2Vp
dmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFj
a2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIEFDS3MgYXJlIGxvc3QsIHNlcnZl
ciByZXRyYW5zbWl0cyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gc2VydmVyLmdldF90aW1lcigp
CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNr
ZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkK
KworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKKyAgICAgICAgbm93ID0g
MS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJf
QUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzMyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50
LmdldF90aW1lcigpLCAyLjQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50
Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25J
ZElzc3VlZCkKKworICAgICAgICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2
ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAgICAgIGNs
aWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykK
KyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxl
IHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMoc2VsZik6CisgICAg
ICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4gW2xlbih4
WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1
aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29uZmlndXJh
dGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorCisg
ICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZp
Z3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgIHNlcnZl
cl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fja19kZWxh
eSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5vdyA9IDAu
MAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAg
aXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9
IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5U
X0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5k
KG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
LCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1l
cigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFj
ZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vy
dmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAgICAgICMgY2xpZW50
IHJlY2VpdmVzIElOSVRJQUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gMC4yCisgICAgICAg
IGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5v
dykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9B
RERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwg
WzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50
KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBjb21wbGV0ZXMgaGFuZHNo
YWtlCisgICAgICAgIG5vdyA9IDAuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShp
dGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVy
LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVu
dHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2Vy
dmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rp
b25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQSU5HCisgICAgICAg
IG5vdyA9IDAuODI1CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkKKworICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC45CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkK
KworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRzIEhBTkRTSEFLRV9E
T05FCisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5f
aGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAgICAgICBpdGVtcyA9IHNlcnZl
ci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
cnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjRdKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRo
X3F1YW50dW1fcmVhZGluZXNzKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KGNsaWVudF9vcHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRydWV9LCkgYXMgKAor
ICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAgICAgICApOgorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxv
IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQorICAgICAgICAgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVudC5kYXRhCisgICAg
ICAgICAgICAgICAgZWxpZiBldmVudCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVh
aworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBiImhlbGxvIikKKwor
ICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgorICAgICAgICBjbGllbnRfdGlj
a2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0
CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNsaWVudF9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCisg
ICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tl
dF9zdG9yZS5hZGR9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNs
aWVudF9vcHRpb25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0fSwKKyAgICAgICAg
ICAgIHNlcnZlcl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjogdGlja2V0X3N0b3Jl
LnBvcH0sCisgICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCisgICAgICAgICkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9
dGltZS50aW1lKCkpCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShz
dHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgyLCAxKSkKKworICAgICAgICAgICAgZXZlbnQgPSBzZXJ2
ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQp
LCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCks
IGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBydHRf
YmFkX21heF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQor
ICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgICAgIGRl
ZiBwYXRjaChzZXJ2ZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBQYXRjaCBzZXJ2
ZXIncyBUTFMgaW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKKyAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhIHZhbHVlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICByZWFsX2lu
aXRpYWxpemUgPSBzZXJ2ZXIuX2luaXRpYWxpemUKKworICAgICAgICAgICAgZGVmIHBhdGNoZWRf
aW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAgIHJlYWxfaW5pdGlh
bGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9tYXhfZWFybHlfZGF0
YSA9IDEyMzQ1CisKKyAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5p
dGlhbGl6ZQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAg
ICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0
ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAg
IGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3Rp
Y2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxl
ciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICAgICAgc2VydmVyX3BhdGNoPXBhdGNoLAor
ICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRz
aGFrZSBmYWlsZWQKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBb
MSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUg
Y2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9j
b25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xp
ZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIs
IDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZl
ciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lk
X2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdfY29ubmVjdGlvbl9p
ZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5n
ZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lk
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYs
IDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBh
IG5ldyBjb25uZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJf
Y2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQKKyAgICAgICAgICAg
IHNlcnZlci5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgICAgICAgICAg
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFdCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50
KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2Vx
dWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2
LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25f
aWRfcmV0cmFuc21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9w
ZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRCwgUkVUSVJF
X0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0
aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgcmV0
cmFuc21pdHRlZAorICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9k
ZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgICMgdGhl
IHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3Bl
ZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmKToKKyAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICAgICAjIGNsaWVudAorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1f
aWQsIDApCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIi
aGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwg
NCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxs
byIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbV9pZCwgMikKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgICMg
c2VydmVyCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMSkK
KyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIp
CisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3Ry
ZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA1KQorICAg
ICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKwor
ICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1f
aWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtX2lkLCAzKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0
X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQorICAgICAgICAgICAgc2VydmVyLnNlbmRf
c3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2RhdGFncmFt
X2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAg
ICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUz
Nn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sg
aGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xp
ZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKQorCisgICAgICAg
ICAgICAjIHNlbmQgZGF0YWdyYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFtX2Zy
YW1lKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGll
bnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQo
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkRhdGFn
cmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0
YSwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8yKHNlbGYpOgorICAg
ICAgICAjIHBheWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUgcGFja2V0CisgICAg
ICAgIHBheWxvYWQgPSBiIloiICogMTI1MAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
IjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJh
bWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNr
X2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPU5v
bmUpCisKKyAgICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCisgICAgICAgICAgICBmb3Ig
aSBpbiByYW5nZSgyMCk6CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJh
bWUocGF5bG9hZCkKKworICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkgMTEgZGF0YWdyYW1z
IGFyZSBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKKyAgICAgICAgICAgIGZvciBp
IGluIHJhbmdlKDExKToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50
KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMu
RGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgQUNLCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkK
KworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFncmFtcworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDkpCisgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZSg5KToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRp
b25fZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlwdGlvbiBrZXkKKyAg
ICAgICAgICAgIHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0uc2VuZC5zZXR1cCgK
KyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NN
X1NIQTI1NiwKKyAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAorICAgICAgICAgICAg
ICAgIHZlcnNpb249c2VydmVyLl92ZXJzaW9uLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIHNlcnZlciBzZW5kcyBjbG9zZQorICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGlu
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6CisgICAgICAgIGRlZiBwYXRj
aChjbGllbnQpOgorICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xpZW50Ll9pbml0aWFs
aXplCisKKyAgICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVz
KToKKyAgICAgICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQpCisgICAgICAgICAg
ICAgICAgY2xpZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5UTFNfVkVSU0lPTl8x
XzNfRFJBRlRfMjhdCisKKyAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6ZSA9IHBhdGNoZWRf
aW5pdGlhbGl6ZQorCisgICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAgICAgICAgICAgIHNl
cnZlci5oYW5kbGVfdGltZXIodGltZXJfYXQpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVy
Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5lcnJvcl9jb2RlLCAzMjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
ZW50LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZl
cnNpb24iKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJiYWdlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAg
ICBkYXRhZ3JhbSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgwIikKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2VydmVkX2JpdHNfbm9u
X3plcm8oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChz
ZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKKyAgICAgICAgICAg
IGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19jbGllbnQ9RmFsc2Us
CisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICB2ZXJz
aW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNf
Y2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAgY3J5cHRvLmVu
Y3J5cHRfcGFja2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKKworICAgICAgICBkZWYg
ZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
KToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKKyAgICAgICAgICAgIHBs
YWluX2hlYWRlciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkgKyBwbGFpbl9oZWFk
ZXJbMTpdCisgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwoCisg
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICApCisKKyAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0ID0gZW5jcnlw
dF9wYWNrZXQKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklU
SUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBidWlsZGVyLmZs
dXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhZ3JhbSwg
U0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
cm9wKGNsaWVudCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
bGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9W
SU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fd3Jvbmdf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAg
ICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAgICAgICAgICAgIHZl
cnNpb249MHhGRjAwMDAxMSwgICMgRFJBRlRfMTYKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8g
PSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVy
X2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAg
ICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFERElORykKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkK
KworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBdOgorICAgICAgICAg
ICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGlt
ZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgY2xpZW50LnJlY2Vp
dmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICAgICAgICAg
ICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lk
PWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAorICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICAgICAgb3JpZ2lu
YWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgcmV0
cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9B
RERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9k
YXRhZ3JhbV9yZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5yZWNl
aXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAgICAg
ICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgc291cmNlX2Np
ZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNmZThmNWYwZmY0Iiks
CisgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgp
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2Fja19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBzZXJ2ZXIuY2xvc2UoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFt
ZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZy
YW1lIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisgICAgICAgICAgICAg
ICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1l
X2FwcChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLk5PX0VSUk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZl
bnQsCisgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iZ29vZGJ5ZSIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcF9ub3RfdXRmOChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisK
KyAgICAgICAgY2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisg
ICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBlPU5vbmUsIHJlYXNv
bl9waHJhc2U9IiIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfY3J5cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
IyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1l
bmNvZGVfdWludF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElO
R19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhy
YXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUKKyAgICAgICAgICAg
IGNsaWVudC5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBX0JMT0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKDEyMzQ1KSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdy
YW1fZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVu
dChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAg
IEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1G
cmFtZVJlY2VpdmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hh
bmRsZV9kYXRhZ3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgY2xpZW50ID0g
Y3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPU5v
bmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9y
KSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAg
ICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAg
ICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFt
ZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJl
YXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT01
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikg
YXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1i
ImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVU
eXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT03
KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhl
bGxvanVuayIpLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNsaWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
ZGF0YT1iImhlbGxvIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFt
X2ZyYW1lX3dpdGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBj
cmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9u
ZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3Ip
IGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJP
VE9DT0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBE
QVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0
aF9sZW5ndGhfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRh
bG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKKworICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9O
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2FsbG93ZWQoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUgZnJhbWUKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2VydmVyKSwKKyAgICAg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YiIiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLAorICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNI
QUtFX0RPTkUgZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9t
YXhfZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5f
cmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBNQVhfREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhf
ZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwKKyAgICAgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfZGF0YSwg
MTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisg
ICAgICAgICAgICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNX0RB
VEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9k
YXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKKyAgICAg
ICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1Nzcp
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIE1BWF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1B
WF9TVFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5j
b2RlX3VpbnRfdmFyKDEwNDg1NzUpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2VpdmVfb25seShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAzCisg
ICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MywgZGF0YT1iImhl
bGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBOiAz
LCAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJy
b3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0
YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIpLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9y
X2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5NQVhf
U1RSRUFNX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5y
ZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkKKworICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5nIGxpbWl0CisgICAg
ICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjkpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgbG93ZXJpbmcgbGlt
aXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI3KSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEy
OSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmks
IDEyOCkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJh
aXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9m
cmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAgICAg
ICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191
bmksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5J
IHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3Vu
aV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFt
c191bmksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RP
S0VOLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgw
MTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X25ld190b2tlbl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBORVdfVE9LRU4KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVp
Y0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVf
bmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VO
LAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjA4
MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2xpZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBkYXRhCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikKKyAgICAgICAgICAg
IGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1l
KCkpOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4y
LjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1lKCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgcGF0
aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbmV0d29ya19wYXRo
cyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRo
c1swXS5hZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIs
IDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRo
c1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIFBBVEhfQ0hB
TExFTkdFIGFuZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCisgICAgICAgICAgICBmb3IgZGF0YSwg
YWRkciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKKyAgICAg
ICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRhdGFn
cmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUoKSkK
KworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlk
YXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhz
WzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIg
cmVjZWl2ZXMgdW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgc2VydmVyLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiXHgxMVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQ
T05TRSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNlbGYpOgorICAgICAg
ICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAjIG5v
IG1vcmUgcGFkZGluZworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIpCisgICAgICAgIGNs
aWVudC5faGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgICAgICMgcGFkZGlu
ZyB1bnRpbCBlbmQKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApKQorICAgICAg
ICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisKKyAgICAgICAgIyBw
YWRkaW5nIHRoZW4gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0
ZXMoMTApICsgYiJceDAxIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgK
KyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlw
ZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDEwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAg
ICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVs
bG8iKQorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0s
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMDAxMDAi
KSksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZl
bnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0
cmVhbVJlc2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5zdHJlYW1faWQsIDApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVzZXRfc3Ry
ZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFU0VU
X1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KCIwMjExMDAiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RB
VEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFt
ZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5
IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNl
X251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5F
Q1RJT05fSUQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lELAorICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJz
KGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhdCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWVfY3Vy
cmVudF9jaWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQs
IDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IFJFVElSRV9DT05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlJFVElSRV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
Q2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJl
cnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikK
KworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5HCisgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MTEi
KSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkg
YXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5pZGly
ZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nv
bm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Rv
cF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5E
SU5HLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNceDExIiksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlNUT1BfU0VORElORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0gMQorICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3Zh
cihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcihV
SU5UX1ZBUl9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3Zhcigx
KQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2Nv
ZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1l
X3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQg
Ml42MiAtIDEiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2Zy
YW1lX292ZXJfbWF4X2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2Ug
cmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRh
X3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5
cGUuU1RSRUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAg
ICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoc3RyZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwg
UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgY29ubmVj
dGlvbiBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zl
cl9tYXhfc3RyZWFtX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RS
RUFNIGZyYW1lCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1f
QkFTRSB8IDQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsgZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlICsgMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBzdHJlYW0gZGF0YSBs
aW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X3N0cmVh
bXMoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNt
OgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAgICAgICAgICAgICBC
dWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihjbGll
bnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKKyAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1
aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBvcGVuIikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgorICAgICAgICB3
aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
ICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAgICAgICAgICAgIGNs
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8iKQorCisgICAg
ICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMiIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9S
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9yKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDAwIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0aWF0b3IiKQorCisg
ICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9C
TE9DS0VEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF91bmlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2
ZXMgU1RSRUFNU19CTE9DS0VEX1VOSTogMAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Ry
ZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tF
RF9VTkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdfb25seShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKKyAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MDAiICog
MTIwMAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hY2tf
ZWxpY2l0aW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Byb2JpbmcpCisKKyAg
ICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAg
ICBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LCBiIlx4MWYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJy
b3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFGKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVua25vd24g
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3VuZXhwZWN0ZWRf
ZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZUFRPIGZyYW1lIGlu
IDAtUlRUCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVwb2No
PXRscy5FcG9jaC5aRVJPX1JUVCksIGIiXHgwNiIKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JD
b2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQg
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX21hbGZvcm1lZF9m
cmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxmb3JtZWQgVFJBTlNQ
T1JUX0NMT1NFIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9y
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLCBiIlx4MWNceDAwXHgwMSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBR
dWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFDKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkZh
aWxlZCB0byBwYXJzZSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX2Jsb2Nr
ZWRfYnlfY2Moc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9uIGNvbnRyb2wKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVzX2luX2ZsaWdodCwg
MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmNvbmdlc3Rpb25f
d2luZG93LCAxNDMwMykKKworICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2
ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQg
PSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
cnZlci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGFydGlmaWNp
YWxseSByYWlzZSBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIGNsaWVudC5fbG9zcy5fY2Mu
Ynl0ZXNfaW5fZmxpZ2h0ID0gMTQzMDMKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBub3Qg
c2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfcmV0cmFu
c21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRh
IGNvdW50ZXIKKyAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVu
dC5fbG9jYWxfbWF4X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9y
ZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgc2Vu
dCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2Vu
dCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVf
bWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21p
dHRlZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tYXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNs
aWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIHN0cmVhbSA9
IGNsaWVudC5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwganVzdCBiZWZvcmUg
cmFpc2luZyBNQVhfU1RSRUFNX0RBVEEKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9k
YXRhKDAsIGIiWiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgorICAgICAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2Nh
bCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJl
YW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIHNlcnZlciBzZW5k
cyBvbmUgbW9yZSBieXRlCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgwLCBi
IloiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVu
dCksIDEpCisKKyAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNlbnQgYW5kIGxvc3QK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsX3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBjbGllbnQuX29uX21heF9zdHJlYW1fZGF0
YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxf
c2VudCwgMCkKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBh
Y2tlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKworICAgIGRlZiB0ZXN0
X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0CisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNo
ZWNrIGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVk
Z2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY29uc3Vt
ZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBhbm90aGVyIHBp
bmcsIFBJTkcgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgICAg
ICAgICAgIyBQSU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBjbGll
bnQuX29uX3BpbmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgKDEyMzQ1LCkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgx
LCAxKSkKKworICAgICAgICAgICAgIyBjaGVjayBldmVudAorICAgICAgICAgICAgZXZlbnQgPSBj
bGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuUGluZ0Fja25vd2xlZGdlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQudWlkLCAxMjM0NSkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zl
cl9tYXhfc3RyZWFtc19iaWRpKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
ID0gaSAqIDQKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQsIGIiIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFt
c1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKKwor
ICAgICAgICAgICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gMTI4ICogNAorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xp
ZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwg
KDEsIDEpKQorCisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9
ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3VuaShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNyZWF0ZSBzdHJlYW1zCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgp
OgorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgorICAgICAgICAgICAgICAg
IGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2Vk
X2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJl
YW1zX2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBvbmUg
dG9vIG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJlYW1faWQgPSAxMjgg
KiA0ICsgMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBi
IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9p
ZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5f
c3RyZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAg
ICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9t
YXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29u
dGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNf
VU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2Rh
dGFfcGVlcl9pbml0aWF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMSwg
YiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIs
IGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJl
Y3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDMsIGIi
aGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBj
bGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rp
b25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVs
bG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRhdGEgb24gc2VydmVy
LWluaXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQg
Y3JlYXRlIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoMiwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQgdHJp
ZXMgdG8gc2VuZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhlbGxvIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlv
biksCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0aWF0ZWQg
dW5pZGlyZWN0aW9uYWwgc3RyZWFtIiwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBj
bGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWluaXRpYXRlZCBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSg1
LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1p
bml0aWF0ZWQgc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtX2Rp
cmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4XToKKyAgICAgICAg
ICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmKSkK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2Vp
dmUob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1f
Y2FuX3NlbmQob2ZmKSkKKworICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgQmlk
aXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
Y2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAxKSkK
KworICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZl
KG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fc2VuZChvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKKworICAgICAgICAg
ICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChv
ZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFt
X2Nhbl9yZWNlaXZlKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
ZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25f
bmVnb3RpYXRpb25fZmFpbChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxv
bmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBubyBjb21tb24gdmVyc2lvbiwgbm8gcmV0cnkK
KyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVp
Y192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50
Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3Rf
Y2lkLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhGRjAwMDAxMV0sICAj
IERSQUZUXzE2CisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIsCisgICAg
ICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVu
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBldmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJv
dG9jb2wgdmVyc2lvbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlh
dGlvbl9vayhzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCByZXRyeQorICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNp
b25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJf
Y2lkLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3ZlcnNpb25dLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRp
bWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGll
bnQpLCAxKQorCisKK2NsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2Nhbl9zZW5kKHNlbGYpOgorICAgICAgICBwYXRoID0gUXVpY05ldHdvcmtQYXRoKCgi
MS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguaXNfdmFsaWRh
dGVkKQorCisgICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkgZGF0YQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwYXRoLmNhbl9zZW5kKDEpKQorCisgICAgICAgICMgcmVjZWl2ZSBzb21lIGRhdGEKKyAg
ICAgICAgcGF0aC5ieXRlc19yZWNlaXZlZCArPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgx
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBhdGguY2FuX3NlbmQoNCkpCisKKyAgICAgICAgIyBzZW5kIHNvbWUgZGF0YQorICAgICAgICBw
YXRoLmJ5dGVzX3NlbnQgKz0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2Vu
ZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNGU0ZGNmNWUxOGU0NzAyNDUwZDFiZWJm
NDlkZmZjMjEzZTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jcnlwdG8ucHkKQEAgLTAsMCArMSwzMTkgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB1bml0
dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgKAorICAgIElOSVRJQUxf
Q0lQSEVSX1NVSVRFLAorICAgIENyeXB0b0Vycm9yLAorICAgIENyeXB0b1BhaXIsCisgICAgZGVy
aXZlX2tleV9pdl9ocCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUEFDS0VU
X0ZJWEVEX0JJVCwgUXVpY1Byb3RvY29sVmVyc2lvbgorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
Q2lwaGVyU3VpdGUKKworZnJvbSAudXRpbHMgaW1wb3J0IFNLSVBfVEVTVFMKKworUFJPVE9DT0xf
VkVSU0lPTiA9IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKworQ0hBQ0hBMjBfQ0xJRU5U
X1BBQ0tFVF9OVU1CRVIgPSAyCitDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICJlMWZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1MjRiMDg1MGZjMmEy
OGUyNDBmZDc2NDAxNzAwMDIiCispCitDSEFDSEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgiMDIwMTAwMDAwMCIpCitDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVE
X1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZThmZjAwMDAxNjA4ODBiNTdjN2I3
MGQ4NTI0YjA4NTBmYzJhMjhlMjQwZmQ3NjQwMTc4MzEzYjA0YmU5ODQ0OSIKKyAgICAiZWIxMDU2
N2UyNWNlOTMwMzgxZjJhNWI3ZGEyZGI4ZGIiCispCisKK0xPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1C
RVIgPSAyCitMT05HX0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgImMzZmYwMDAwMTcwODgzOTRjOGYwM2U1MTU3MDgwMDAwNDQ5ZTAwMDAwMDAyIgorKQorTE9O
R19DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYwMDQw
YzQwMTAwMDBjMDAzMDM2NjYwMjYxZmY5NDdjZWE0OWNjZTZjZmFkNjg3ZjQ1N2NmMWIxNDUzMWJh
MSIKKyAgICAiNDEzMWEwZThmMzA5YTFkMGI5YzQwMDAwMDYxMzAxMTMwMzEzMDIwMTAwMDA5MTAw
MDAwMDBiMDAwOTAwMDAwNiIKKyAgICAiNzM2NTcyNzY2NTcyZmYwMTAwMDEwMDAwMGEwMDE0MDAx
MjAwMWQwMDE3MDAxODAwMTkwMTAwMDEwMTAxMDIwMSIKKyAgICAiMDMwMTA0MDAyMzAwMDAwMDMz
MDAyNjAwMjQwMDFkMDAyMDRjZmRmY2QxNzhiNzg0YmYzMjhjYWU3OTNiMTM2ZiIKKyAgICAiMmFl
ZGNlMDA1ZmYxODNkN2JiMTQ5NTIwNzIzNjY0NzAzNzAwMmIwMDAzMDIwMzA0MDAwZDAwMjAwMDFl
MDQwMyIKKyAgICAiMDUwMzA2MDMwMjAzMDgwNDA4MDUwODA2MDQwMTA1MDEwNjAxMDIwMTA0MDIw
NTAyMDYwMjAyMDIwMDJkMDAwMiIKKyAgICAiMDEwMTAwMWMwMDAyNDAwMSIKKykgKyBieXRlcyg5
NjIpCitMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICJjMGZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUzYjM0M2FhODUzNTA2NGE0
MjY4YTBkOWQ3YjFjIgorICAgICI5ZDI1MGFlMzU1MTYyMjc2ZTliMWUzMDExZWY2YmJjMGFiNDhh
ZDViY2MyNjgxZTk1Mzg1N2NhNjJiZWNkNzUyIgorICAgICI0ZGFhYzQ3M2U2OGQ3NDA1ZmJiYTRl
OWVlNjE2Yzg3MDM4YmRiZTkwOGMwNmQ5NjA1ZDlhYzQ5MDMwMzU5ZWVjIgorICAgICJiMWQwNWEx
NGUxMTdkYjhjZWRlMmJiMDlkMGRiYmZlZTI3MWNiMzc0ZDhmMTBhYmVjODJkMGY1OWExZGVlMjlm
IgorICAgICJlOTU2MzhlZDhkZDQxZGEwNzQ4NzQ2ODc5MWI3MTljNTVjNDY5NjhlYjNiNTQ2ODAw
MzcxMDJhMjhlNTNkYzFkIgorICAgICIxMjkwM2RiMGFmNTgyMTc5NGI0MWM0YTkzMzU3ZmE1OWNl
NjljZmU3ZjZiZGZhNjI5ZWVmNzg2MTY0NDdlMWQ2IgorICAgICIxMWM0YmFmNzFiZjMzZmViY2Iw
MzEzN2MyYzc1ZDI1MzE3ZDNlMTNiNjg0MzcwZjY2ODQxMWMwZjAwMzA0YjUwIgorICAgICIxYzhm
ZDQyMmJkOWI5YWQ4MWQ2NDNiMjBkYTg5Y2EwNTI1ZDI0ZDJiMTQyMDQxY2FlMGFmMjA1MDkyZTQz
MDA4IgorICAgICIwY2Q4NTU5ZWE0YzVjNmU0ZmEzZjY2MDgyYjdkMzAzZTUyY2UwMTYyYmFhOTU4
NTMyYjBiYmMyYmM3ODU2ODFmIgorICAgICJjZjM3NDg1ZGZmNjU5NWUwMWU3MzljOGFjOWVmYmEz
MWI5ODVkNWY2NTZjYzA5MjQzMmQ3ODFkYjk1MjIxNzI0IgorICAgICI4NzY0MWM0ZDNhYjhlY2Uw
MWUzOWJjODViMTU0MzY2MTQ3NzVhOThiYThmYTEyZDQ2ZjliMzVlMmE1NWViNzJkIgorICAgICI3
Zjg1MTgxYTM2NjY2MzM4N2RkYzIwNTUxODA3ZTAwNzY3M2JkN2UyNmJmOWIyOWI1YWIxMGExY2E4
N2NiYjdhIgorICAgICJkOTdlOTllYjY2OTU5YzJhOWJjM2NiZGU0NzA3ZmY3NzIwYjExMGZhOTUz
NTQ2NzRlMzk1ODEyZTQ3YTBhZTUzIgorICAgICJiNDY0ZGNiMmQxZjM0NWRmMzYwZGMyMjcyNzBj
NzUwNjc2ZjY3MjRlYjQ3OWYwZDJmYmI2MTI0NDI5OTkwNDU3IgorICAgICJhYzZjOTE2N2Y0MGFh
YjczOTk5OGYzOGI5ZWNjYjI0ZmQ0N2M4NDEwMTMxYmY2NWE1MmFmODQxMjc1ZDViM2QxIgorICAg
ICI4ODBiMTk3ZGYyYjVkZWEzZTZkZTU2ZWJjZTNmZmI2ZTkyNzdhODIwODJmOGQ5Njc3YTY3Njcw
ODliNjcxZWJkIgorICAgICIyNDRjMjE0ZjBiZGU5NWMyYmViMDJjZDExNzJkNThiZGYzOWRjZTU2
ZmY2OGViMzVhYjM5YjQ5YjRlYWM3YzgxIgorICAgICI1ZWE2MDQ1MWQ2ZTZhYjgyMTE5MTE4ZGYw
MmE1ODY4NDRhOWZmZTE2MmJhMDA2ZDA2NjllZjU3NjY4Y2FiMzhiIgorICAgICI2MmY3MWEyNTIz
YTA4NDg1MmNkMWQwNzliMzY1OGRjMmYzZTg3OTQ5YjU1MGJhYjNlMTc3Y2ZjNDllZDE5MGRmIgor
ICAgICJmMDYzMGU0MzA3N2MzMGRlOGY2YWUwODE1MzdmMWU4M2RhNTM3ZGE5ODBhZmE2NjhlN2I3
ZmIyNTMwMWNmNzQxIgorICAgICI1MjRiZTNjNDk4ODRiNDI4MjFmMTc1NTJmYmQxOTMxYTgxMzAx
N2I2YjY1OTBhNDFlYTE4YjZiYTQ5Y2Q0OGE0IgorICAgICI0MGJkOWEzMzQ2YTc2MjNmYjRiYTM0
YTNlZTU3MWUzYzczMWYzNWE3YTNjZjI1YjU1MWE2ODBmYTY4NzYzNTA3IgorICAgICJiN2ZkZTNh
YWYwMjNjNTBiOWQyMmRhNjg3NmJhMzM3ZWI1ZTlkZDllYzNkYWY5NzAyNDJiNmM1YWFiM2FhNGIy
IgorICAgICI5NmFkOGI5ZjY4MzJmNjg2ZWY3MGZhOTM4YjMxYjRlNWRkZDczNjQ0NDJkM2VhNzJl
NzNkNjY4ZmIwOTM3Nzk2IgorICAgICJmNDYyOTIzYTgxYTQ3ZTFjZWU3NDI2ZmY2ZDkyMjEyNjli
NWE2MmVjMDNkNmVjOTRkMTI2MDZjYjQ4NTU2MGJhIgorICAgICJiNTc0ODE2MDA5ZTk2NTA0MjQ5
Mzg1YmI2MWE4MTliZTA0ZjYyYzIwNjYyMTRkODM2MGEyMDIyYmViMzE2MjQwIgorICAgICJiNmM3
ZDc4YmJlNTZjMTMwODJlMGNhMjcyNjYxMjEwYWJmMDIwYmYzYjU3ODNmMTQyNjQzNmNmOWZmNDE4
NDA1IgorICAgICI5M2E1ZDA2MzhkMzJmYzUxYzVjNjVmZjI5MWEzYTdhNTJmZDY3NzVlNjIzYTQ0
MzljYzA4ZGQyNTU4MmZlYmM5IgorICAgICI0NGVmOTJkOGRiZDMyOWM5MWRlM2U5Yzk1ODJlNDFm
MTdmM2QxODZmMTA0YWQzZjkwOTk1MTE2YzY4MmEyYTE0IgorICAgICJhM2I0YjFmNTQ3YzMzNWYw
YmU3MTBmYzlmYzAzZTBlNTg3YjhjZGEzMWNlNjViOTY5ODc4YTRhZDQyODNlNmQ1IgorICAgICJi
MDM3M2Y0M2RhODZlOWUwZmZlMWFlMGZkZGQzNTE2MjU1YmQ3NDU2NmYzNmEzODcwM2Q1ZjM0MjQ5
ZGVkMWY2IgorICAgICI2YjNkOWI0NWI5YWYyY2NmZWZlOTg0ZTEzMzc2YjFiMmM2NDA0YWE0OGM4
MDI2MTMyMzQzZGEzZjNhMzM2NTllIgorICAgICJjMWIzZTk1MDgwNTQwYjI4YjdmM2ZjZDM1ZmE1
ZDg0M2I1NzlhODRjMDg5MTIxYTYwZDhjMTc1NDkxNWMzNDRlIgorICAgICJlYWY0NWE5YmYyN2Rj
MGMxZTc4NDE2MTY5MTIyMDkxMzEzZWIwZTg3NTU1YWJkNzA2NjI2ZTU1N2ZjMzZhMDRmIgorICAg
ICJjZDE5MWE1ODgyOTEwNGQ2MDc1YzU1OTRmNjI3Y2E1MDZiZjE4MWRhZWM5NDBmNGE0ZjNhZjAw
NzRlZWU4OWRhIgorICAgICJhY2RlNjc1ODMxMjYyMmQ0ZmE2NzViMzlmNzI4ZTA2MmQyYmVlNjgw
ZDhmNDFhNTk3YzI2MjY0OGJiMThiY2ZjIgorICAgICIxM2M4YjNkOTdiMWE3N2IyYWMzYWY3NDVk
NjFhMzRjYzQ3MDk4NjViYWM4MjRhOTRiYjE5MDU4MDE1ZTRlNDJkIgorICAgICJjOWJlNmM3ODAz
NTY3MzIxODI5ZGQ4NTg1MzM5NjI2OSIKKykKKworTE9OR19TRVJWRVJfUEFDS0VUX05VTUJFUiA9
IDEKK0xPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAi
YzFmZjAwMDAxNzAwMDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MDAwMSIKKykKK0xPTkdfU0VSVkVS
X1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjBkMDAwMDAwMDAxODQx
MGEwMjAwMDA1NjAzMDNlZWZjZTdmN2IzN2JhMWQxNjMyZTk2Njc3ODI1ZGRmNzM5ODgiCisgICAg
ImNmYzc5ODI1ZGY1NjZkYzU0MzBiOWEwNDVhMTIwMDEzMDEwMDAwMmUwMDMzMDAyNDAwMWQwMDIw
OWQzYzk0MGQiCisgICAgIjg5NjkwYjg0ZDA4YTYwOTkzYzE0NGVjYTY4NGQxMDgxMjg3YzgzNGQ1
MzExYmNmMzJiYjlkYTFhMDAyYjAwMDIiCisgICAgIjAzMDQiCispCitMT05HX1NFUlZFUl9FTkNS
WVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjOWZmMDAwMDE3MDAwOGYw
NjdhNTUwMmE0MjYyYjUwMDQwNzQxNjhiZjIyYjcwMDI1OTZmOTlhZTY3YWJmNjVhIgorICAgICI1
ODUyZjU0ZjU4YzM3YzgwODY4MmUyZTQwNDkyZDhhMzg5OWZiMDRmYzBhZmU5YWFiYzg3NjdiMThh
MGFhNDkzIgorICAgICI1Mzc0MjYzNzNiNDhkNTAyMjE0ZGQ4NTZkNjNiNzhjZWUzN2JjNjY0YjNm
ZTg2ZDQ4N2FjN2E3N2M1MzAzOGEzIgorICAgICJjZDMyZjBiNTAwNGQ5ZjU3NTRjNGY3ZjJkMWYz
NWNmM2Y3MTE2MzUxYzkyYjljZjliYjZkMDkxZGRmYzhiMzJkIgorICAgICI0MzIzNDhhMmM0MTMi
CispCisKK1NIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMworU0hPUlRfU0VSVkVSX1BMQUlO
X0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNDFiMDFmZDI0YTU4NmE5Y2YzMDAwMyIpCitT
SE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYw
MDM5MDQwMDAwMzUwMDAxNTE4MDVhNGJlYmY1MDAwMDIwYjA5OGM4ZGM0MTgzZTRjMTgyNTcyZTEw
YWMzZSIKKyAgICAiMmI4ODg5N2UwNTI0Yzg0NjE4NDc1NDhiZDJkZmZhMmMwYWU2MDAwODAwMmEw
MDA0ZmZmZmZmZmYiCispCitTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAiNWRiMDFmZDI0YTU4NmE5Y2YzM2RlYzA5NGFhZWM2ZDZiNGI3YTVl
MTVmNWEzZjA1ZDA2Y2YxYWQwMzU1YzE5ZCIKKyAgICAiY2NlMDgwN2VlY2Y3YmYxYzg0NGE2NmUx
ZWNkMWY3NGIyYTJkNjliZmQyNWQyMTc4MzNlZGQ5NzMyNDY1OTdiZCIKKyAgICAiNTEwN2VhMTVj
YjFlMjEwMDQ1Mzk2YWZhNjAyZmUyMzQzMmY0YWIyNGNlMjUxYiIKKykKKworCitjbGFzcyBDcnlw
dG9UZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZlY3RvcnMgZnJvbToKKworICAg
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMtdGxzLTE4I2FwcGVu
ZGl4LUEKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfY3J5cHRvKHNlbGYsIGlzX2NsaWVudCk6
CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZXR1cF9pbml0aWFs
KAorICAgICAgICAgICAgY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIp
LAorICAgICAgICAgICAgaXNfY2xpZW50PWlzX2NsaWVudCwKKyAgICAgICAgICAgIHZlcnNpb249
UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gcGFpcgorCisgICAg
ZGVmIHRlc3RfZGVyaXZlX2tleV9pdl9ocChzZWxmKToKKyAgICAgICAgIyBjbGllbnQKKyAgICAg
ICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhhMzUxNWExNGFl
M2MzMWI5YzJkNmQ1YmM1ODUzOGNhNWNkMmJhYTExOTA4NzE0M2U2MDg4NzQyOGRjYjUyZjYiCisg
ICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hwKElOSVRJQUxf
Q0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5LCBiaW5h
c2NpaS51bmhleGxpZnkoIjk4YjBkN2U1ZTdhNDAyYzY3YzMzZjM1MGZhNjVlYTU0IikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgiMTllOTQzODc4MDVl
YjBiNDZjMDNhNzg4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAsIGJpbmFzY2lpLnVu
aGV4bGlmeSgiMGVkZDk4MmE2YWM1MjdmMmVkZGNiYjczNDhkZWE1ZDciKSkKKworICAgICAgICAj
IHNlcnZlcgorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAiNDdiMmVhZWE2YzI2NmUzMmMwNjk3YTllMmE4OThiZGY1YzRmYjNlNWFjMzRmMGU1NDliZjJj
NTg1ODFhMzgxMSIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBocCA9IGRlcml2ZV9rZXlf
aXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWE4YmU5MDJhOWJkZDkxZDE2MDY0Y2ExMTgw
NDVmYjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmluYXNjaWkudW5oZXhsaWZ5
KCIwYTgyMDg2ZDMyMjA1YmEyMjI0MWQ4ZGMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
cCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5NGI5NDUyZDJiM2M3YzdmNmRhN2ZkZDg1OTM1MzdmZCIp
KQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFj
aGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZGVjcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAor
ICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
YjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2Iy
ODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZF
UlNJT04sCisgICAgICAgICkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgQ0hBQ0hB
MjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDI1LCAwCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgQ0hBQ0hBMjBfQ0xJRU5U
X1BMQUlOX1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwg
Q0hBQ0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X2xv
bmdfY2xpZW50KHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2Ns
aWVudD1GYWxzZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tl
dF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9OR19DTElFTlRf
RU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBsYWluX2hlYWRlciwgTE9OR19DTElFTlRfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfQ0xJRU5UX1BMQUlOX1BBWUxPQUQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19DTElFTlRfUEFDS0VU
X05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCisKKyAgICAgICAg
cGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0
X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAw
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIExPTkdf
U0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXls
b2FkLCBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhY2tldF9udW1iZXIsIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVz
dF9kZWNyeXB0X25vX2tleShzZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENyeXB0b0Vycm9yKToKKyAgICAgICAgICAgIHBh
aXIuZGVjcnlwdF9wYWNrZXQoTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDApCisK
KyAgICBkZWYgdGVzdF9kZWNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMxYzEyMTJkNzg0
YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAg
ICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVj
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwg
OSwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWlu
X3BheWxvYWQsIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldF9udW1iZXIsIFNIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQorCisgICAg
QHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFjaGEyMCB0ZXN0
cyIpCisgICAgZGVmIHRlc3RfZW5jcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYjQyNzcyZGYz
M2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2IyODlhZThjMCIK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisg
ICAgICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIENIQUNIQTIw
X0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BBQ0tF
VF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIENI
QUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9s
b25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19j
bGllbnQ9VHJ1ZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAg
ICAgICAgICAgTE9OR19DTElFTlRfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19DTElF
TlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfQ0xJRU5U
X0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xvbmdfc2VydmVyKHNl
bGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkK
KworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9O
R19TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19TRVJWRVJfUExBSU5fUEFZ
TE9BRCwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9Q
QUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNy
ZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMx
YzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAg
KQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BMQUlO
X1BBWUxPQUQsCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgU0hPUlRfU0VSVkVSX0VOQ1JZ
UFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlbGYpOgorICAgICAgICBw
YWlyMSA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgcGFpcjIg
PSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIGRlZiBjcmVh
dGVfcGFja2V0KGtleV9waGFzZSwgcGFja2V0X251bWJlcik6CisgICAgICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9MTAwKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoUEFDS0VUX0ZJ
WEVEX0JJVCB8IGtleV9waGFzZSA8PCAyIHwgMSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIpKQorICAgICAgICAgICAgYnVm
LnB1c2hfdWludDE2KHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gYnVmLmRhdGEs
IGIiXHgwMFx4MDFceDAyXHgwMyIKKworICAgICAgICBkZWYgc2VuZChzZW5kZXIsIHJlY2VpdmVy
LCBwYWNrZXRfbnVtYmVyPTApOgorICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkID0gY3JlYXRlX3BhY2tldCgKKyAgICAgICAgICAgICAgICBrZXlfcGhhc2U9c2VuZGVyLmtl
eV9waGFzZSwgcGFja2V0X251bWJlcj1wYWNrZXRfbnVtYmVyCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBlbmNyeXB0ZWQgPSBzZW5kZXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAg
ICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICAg
ICApCisgICAgICAgICAgICByZWNvdl9oZWFkZXIsIHJlY292X3BheWxvYWQsIHJlY292X3BhY2tl
dF9udW1iZXIgPSByZWNlaXZlci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICBlbmNy
eXB0ZWQsIGxlbihwbGFpbl9oZWFkZXIpIC0gMiwgMAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9oZWFkZXIsIHBsYWluX2hlYWRlcikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGF5bG9hZCwgcGxhaW5fcGF5bG9hZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGFja2V0X251bWJlciwgcGFja2V0X251bWJl
cikKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMCkK
KyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFpcjEua2V5X3BoYXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9w
aGFzZSwgMCkKKworICAgICAgICAjIHBhaXIgMSBrZXkgdXBkYXRlCisgICAgICAgIHBhaXIxLnVw
ZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNlbmQocGFpcjEsIHBh
aXIyLCAxKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFp
cjIua2V5X3BoYXNlLCAxKQorCisgICAgICAgICMgcGFpciAyIGtleSB1cGRhdGUKKyAgICAgICAg
cGFpcjIudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChw
YWlyMiwgcGFpcjEsIDIpCisgICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYWlyMi5rZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEga2V5IC0gdXBkYXRl
LCBidXQgbm90IG5leHQgdG8gc2VuZAorICAgICAgICBwYWlyMS51cGRhdGVfa2V5KCkKKworICAg
ICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMykKKyAgICAgICAg
c2VuZChwYWlyMSwgcGFpcjIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFpcjEua2V5
X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9waGFzZSwgMSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfaDAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjY2Y2NWUxMTc0OThjZmRkNWIwN2JlZGUx
ZjA3NjNkMWNhMjBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2gwLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQor
Citmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwgSDBDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNl
aXZlZAorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVudF9hbmRfc2VydmVyLCB0
cmFuc2ZlcgorCisKK2RlZiBoMF9jbGllbnRfYW5kX3NlcnZlcigpOgorICAgIHJldHVybiBjbGll
bnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IEgwX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDBf
QUxQTn0sCisgICAgKQorCisKK2RlZiBoMF90cmFuc2ZlcihxdWljX3NlbmRlciwgaDBfcmVjZWl2
ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoMF9yZWNlaXZlci5fcXVpYworICAgIHRyYW5zZmVy
KHF1aWNfc2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRz
CisgICAgaHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2
ZW50KCkKKyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKGgwX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0g
cXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitj
bGFzcyBIMENvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb25uZWN0KHNl
bGYpOgorICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50
LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24ocXVp
Y19jbGllbnQpCisgICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19zZXJ2
ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1faWQg
PSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBoMF9jbGllbnQuc2VuZF9kYXRhKHN0cmVh
bV9pZD1zdHJlYW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRob2QiLCBiIkdFVCIpLCAo
YiI6cGF0aCIsIGIiLyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKwor
ICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBoMF9zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5Pjwv
aHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiPGh0bWw+PGJvZHk+
aGVsbG88L2JvZHk+PC9odG1sPiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcnNfb25s
eShzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2Ns
aWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0gSDBDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25uZWN0aW9uKHF1aWNf
c2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRo
b2QiLCBiIkhFQUQiKSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRh
UmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBz
dHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1f
ZW5kZWQsIFRydWUpCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAg
aDBfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwg
YiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sw
XS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMwOTRmZTk4OThjNTQzMTc1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKQEAgLTAsMCAr
MSwxMjkyIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3ZhcgorZnJvbSBhaW9x
dWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAgICBIM19BTFBOLAorICAgIEVycm9yQ29kZSwK
KyAgICBGcmFtZVR5cGUsCisgICAgRnJhbWVVbmV4cGVjdGVkLAorICAgIEgzQ29ubmVjdGlvbiwK
KyAgICBTdHJlYW1UeXBlLAorICAgIGVuY29kZV9mcmFtZSwKKykKK2Zyb20gYWlvcXVpYy5oMy5l
dmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNoUHJvbWlzZVJl
Y2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQdXNo
SURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZp
Z3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2Vp
dmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworZnJvbSAu
dGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJhbnNmZXIKKworCitk
ZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4gY2xpZW50X2FuZF9zZXJ2ZXIo
CisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwKKyAg
ICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAorICAgICkK
KworCitkZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVyKToKKyAgICBxdWlj
X3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKKyAgICBpZiBoYXNhdHRyKHF1aWNfc2VuZGVy
LCAic3RyZWFtX3F1ZXVlIik6CisgICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2ZW50cy5leHRlbmQo
cXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQorICAgICAgICBxdWljX3NlbmRlci5zdHJlYW1fcXVl
dWUuY2xlYXIoKQorICAgIGVsc2U6CisgICAgICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBxdWlj
X3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCisgICAgaHR0cF9ldmVudHMg
PSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICB3aGlsZSBl
dmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKGgzX3JlY2VpdmVy
LmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0
X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitjbGFzcyBGYWtlUXVpY0Nvbm5l
Y3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICBz
ZWxmLmNsb3NlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJh
dGlvbgorICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2V2ZW50
cyA9IFtdCisgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlmIGNvbmZpZ3VyYXRp
b24uaXNfY2xpZW50IGVsc2UgMQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgPSAyIGlm
IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMworICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKKyAgICAgICAgICAgIGlzX2NsaWVudD1jb25m
aWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCisgICAgICAgICkKKworICAgIGRlZiBjbG9z
ZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKKyAgICAgICAgc2VsZi5jbG9zZWQg
PSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKKworICAgIGRlZiBnZXRfbmV4dF9hdmFpbGFi
bGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToKKyAgICAgICAgaWYg
aXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0
cmVhbV91bmkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSArPSA0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpCisg
ICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKKyAgICAgICAgcmV0dXJuIHN0
cmVhbV9pZAorCisgICAgZGVmIG5leHRfZXZlbnQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCisgICAgICAgIGV4Y2VwdCBJbmRleEVy
cm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZW5kX3N0cmVhbV9kYXRh
KHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6CisgICAgICAgICMgY2hv
cCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcworICAgICAgICBmb3IgYyBpbiBkYXRhOgor
ICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1ieXRlcyhbY10pLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5z
dHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQorICAg
ICAgICAgICAgKQorCisKK2NsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgorICAgIG1h
eERpZmYgPSBOb25lCisKKyAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBoM19jbGllbnQsIGgz
X3NlcnZlcik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9xdWljCisgICAgICAg
IHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCisKKyAgICAgICAgIyBzZW5kIHJlcXVlc3QK
KyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVhbT1U
cnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2ZW50cyA9IGgzX3Ry
YW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJjbGllbnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBz
dHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxv
PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAp
CisKKyAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5z
ZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVhZGVy
c1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0
bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNvbnRyb2wgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpCisgICAgICAg
ICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksCisgICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlkIGZy
YW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUgTUFYX1BVU0hfSUQg
b24gdGhlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuTUFY
X1BVU0hfSUQsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1F
X1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hfSUQiKSwKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIGNv
bnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgY29udHJvbCBz
dHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAg
ICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGNvbnRyb2wgc3Ry
ZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRhdGE9ZW5jb2RlX3Vp
bnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVp
Y19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29k
ZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAiT25seSBvbmUg
Y29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBTRVRUSU5HUyBvbiBh
IHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAg
ICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0x
NSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlBVU0gp
CisgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVzaCBJRAorICAgICAg
ICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAg
ICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQs
CisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQg
ZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVyIHN0cmVhbS4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0KKyAgICAgICAgaDNf
Y2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAgICAgICAgICBlbmRf
c3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNl
aXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZl
bnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
IEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAi
T25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9zdHJlYW1f
ZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBvbiB0
aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9uLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAg
ICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2Vp
dmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAgICAgICAgICAgICBkYXRh
PWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsgYiJceDAwIiwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIFFQ
QUNLIGVuY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBG
YWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgz
Q29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUgYSBmaXJzdCBlbmNv
ZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
U3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBzdHJlYW0KKyAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAgZGF0YT1l
bmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKKyAgICAgICAgICAgICAg
ICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VS
Uk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBpcyBh
bGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSB0cmlnZ2VycyBh
biBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWlj
Q29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24o
aXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0
aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAg
ICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTcs
CisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19F
TkNPREVSKSArIGIiXHgwMCIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5DT0RFUl9T
VFJFQU1fRVJST1IsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVz
dF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3Vs
ZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVkLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJh
bWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlMRUQsICIi
KQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9kYXRhX2Jl
Zm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBy
ZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgorICAgICAgICAiIiIKKyAgICAg
ICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNf
c2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkRB
VEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQ
RUNURUQsCisgICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhp
cyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0ZXIgcmVjZWl2aW5n
IHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWND
b25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihp
c19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9v
IildLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgKQorICAgICAgICBoM190cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3RyZWFt
PUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAorICAgICAgICAgICAg
ICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVf
cHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBz
ZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJlcXVlc3Qgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLCBiIiIpLAor
ICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNs
b3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAiQ2xp
ZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAg
ICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19z
ZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX2Zy
YW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFt
PUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JD
b2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0
IHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgorICAg
ICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3Nl
cnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLl9tYWtlX3Jl
cXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSBzZWNvbmQg
cmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2Vy
dmVyKQorCisgICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBkeW5hbWljIHRhYmxl
CisgICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisK
KyAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBo
M19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAg
ICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAg
ICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAj
IHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25l
eHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFk
ZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAg
ICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJj
bGllbnQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09
VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAg
ICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAg
ICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAo
YiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBl
IiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
eC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUg
cmVzcG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBo
M19jbGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2VsZik6CisgICAgICAg
IHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisKKyAg
ICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICBoM19z
ZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyBzZW5kIHJlcXVl
c3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwK
KyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngt
Zm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNf
Y2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRf
c3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
ImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwK
KyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBz
ZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgzX3NlcnZlci5zZW5k
X3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKKworICAgICAgICAjIHNlbmQgcmVzcG9uc2UK
KyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6c3Rh
dHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAg
ICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVy
cygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKKyAgICAgICAgICAgIGhl
YWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxh
aW4iKV0sCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICApCisgICAgICAg
IGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkLCBkYXRhPWIidGV4
dCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcHVzaCBwcm9taXNlIC8g
cmVwb25zZQorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZlciwgaDNfY2xp
ZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXZlbnRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhv
ZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRw
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC50eHQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
aCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAor
ICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibCIs
IHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFS
ZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKKyAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxhaW4iKV0s
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBz
dHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1G
YWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIngi
LCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRl
ZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
IiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9MCksCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1
c2goc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19j
bGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlv
bihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVh
bV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
M190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9z
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIHB1c2hfc3Ry
ZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvYXBw
LmNzcyIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCisKKyAgICAgICAgICAgIHB1
c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0
aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBi
Ii9hcHAuanMiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxo
dG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyDCoGZ1bGZpbGwgcHVzaCBw
cm9taXNlcworICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvY3NzIild
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1w
dXNoX3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgZGF0YT1iImJvZHkgeyBjb2xvcjog
cGluayB9IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7Iiwg
ZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSBw
dXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKKworICAgICAgICAgICAg
ZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50
LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQtdHlwZSIsIGIidGV4
dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFt
X2lkX2NzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0
cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4X3B1c2hfaWQoc2Vs
Zik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQs
IHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWlj
X2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZl
cikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFu
c2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDAsIDgpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1hdChpKS5lbmNvZGUo
ImFzY2lpIikpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQorICAgICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKKyAgICAgICAgICAgICAgICBoM19z
ZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLzguY3NzIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJhaWxlcnMuCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJl
YW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9z
dHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZy
YW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCisKKyAgICBkZWYg
dGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAg
c3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxv
IiwgZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfaGVhZGVyc19hZnRlcl90
cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBI
RUFERVJTIGFmdGVyIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2Ns
aWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hl
YWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNv
bWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJhaWxlciIsIGIiZm9v
IildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJjYzAw
MDAwMDBmYWNlYjAwYyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9
NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3Ry
ZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjAwNDA4
ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJjMjA3MjY1NjE2MzY4
MjAiCisgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcwNmY2
OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2OTYx
NjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCisgICAgICAgICAgICAgICAg
ICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50Lmhh
bmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJpbmFz
Y2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIzZmUxMDFjNjk2ZDA3YWJl
OTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0
aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNo
byByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0
cmVhbV90cmFpbGVyKHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVj
dGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1
aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAg
ICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAg
ICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBjIgor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgwMiIs
IGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9l
dmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRhdGE9
YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgwMTdk
NDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJkYXRlIiwgYiJN
b24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwMDQwOGQ3OTZmNzUy
MDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYxNjM2ODIwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5NmU3
NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCisgICAgICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2MTcy
Njk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgorICAgICAgICAgICAg
ICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTczIgorICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0aGUgL2VjaG8g
ZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNobyByZXNwb25z
ZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIKKyAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdW5pX3N0cmVh
bV9ncmVhc2Uoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9zdHJl
YW1fZGF0YSgKKyAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
CisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICB3aXRo
IGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6Cisg
ICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1
aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDNf
Y2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwg
YiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0g
aDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgZW5k
X3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5k
X2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIildLAorICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBy
ZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9k
eT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBoM19jbGllbnRfYW5k
X3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDNf
c2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHVua25v
d24gc3RyZWFtIHR5cGUgOQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAgICAgICBxdWljX2Ns
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtleXMo
KSksIFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1b
Ml0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorCisgICAgICAgICAgICAjIHVua25vd24gc3RyZWFt
IHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1U
cnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCisKKyAgICAg
ICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNf
c2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2VydmVy
Ll9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
M19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwgYiJceDQwIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uc3RyZWFtX3R5
cGUsIE5vbmUpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zl
cihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUs
IDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1
ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVh
bVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI3YzUyMDkzOGUyY2YyNGFlYjc2YjkxOWQ5NjdhZmJjNmM2ZWVlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQpAQCAtMCwwICsxLDM3IEBA
Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5sb2dn
ZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBRdWljTG9nZ2VyVGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIGxvZ2dlciA9IFF1aWNMb2dnZXIo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci50b19kaWN0KCksIHsicWxvZ192ZXJz
aW9uIjogImRyYWZ0LTAxIiwgInRyYWNlcyI6IFtdfSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3Ry
YWNlKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICAgICAgdHJhY2Ug
PSBsb2dnZXIuc3RhcnRfdHJhY2UoaXNfY2xpZW50PVRydWUsIG9kY2lkPWJ5dGVzKDgpKQorICAg
ICAgICBsb2dnZXIuZW5kX3RyYWNlKHRyYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgbG9nZ2VyLnRvX2RpY3QoKSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAgICAgICAidHJhY2Vz
IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY29t
bW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0RDSUQiOiAiMDAw
MDAwMDAwMDAwMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZV90
aW1lIjogIjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZXZlbnRfZmllbGRzIjogWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZWxhdGl2ZV90aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdv
cnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF90eXBlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbnRhZ2VfcG9pbnQiOiB7Im5hbWUiOiAiYWlvcXVpYyIsICJ0eXBlIjogImNsaWVu
dCJ9LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Bh
Y2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjliN2FhOWE2MTk3NjdhN2Y1YzAzNWY3NzMwZmYzNzFkN2Q1Zjc5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CkBAIC0wLDAgKzEsNTEzIEBACitp
bXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlv
cXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yCitmcm9tIGFpb3F1aWMu
cXVpYyBpbXBvcnQgcGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAg
ICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZLAorICAgIFF1aWNQ
cmVmZXJyZWRBZGRyZXNzLAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMsCisgICAgZGVjb2RlX3BhY2tldF9udW1iZXIsCisgICAgZW5jb2RlX3F1
aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZywKKyAg
ICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcywKKyAg
ICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAgcHVzaF9xdWljX3ByZWZlcnJl
ZF9hZGRyZXNzLAorICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKykKKworZnJv
bSAudXRpbHMgaW1wb3J0IGxvYWQKKworCitjbGFzcyBQYWNrZXRUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9kZWNvZGVfcGFja2V0X251bWJlcihzZWxmKToKKyAgICAgICAgIyBleHBlY3Rl
ZCA9IDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MCksIGkpCisK
KyAgICAgICAgIyBleHBlY3RlZCA9IDEyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29k
ZV9wYWNrZXRfbnVtYmVyKDAsIDgsIGV4cGVjdGVkPTEyOCksIDI1NikKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3Bh
Y2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI4KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVk
ID0gMTI5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwg
OCwgZXhwZWN0ZWQ9MTI5KSwgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9w
YWNrZXRfbnVtYmVyKDEsIDgsIGV4cGVjdGVkPTEyOSksIDI1NykKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoMiwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tl
dF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI5KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVkID0g
MjU2CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDEyOCk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTI1NiksIDI1NiAr
IGkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MjU2KSwgaSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3Ip
OgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQor
CisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX2NsaWVudChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9jbGllbnQuYmluIikpCisgICAgICAgIGhlYWRlciA9
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX0lOSVRJQUwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNj
aWkudW5oZXhsaWZ5KCI4NThiMzkzNjhiOGUzYzZlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5
X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwg
MTI2MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRl
ZiB0ZXN0X3B1bGxfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWxvYWQoImluaXRpYWxfc2VydmVyLmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1
aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklUSUFMKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCIx
OTVjNjgzNDRlMjhkNDc5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2Vu
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDE4NCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRlZiB0ZXN0X3B1
bGxfcmV0cnkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInJldHJ5LmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBl
LCBQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVz
dGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImU5ZDE0NmQ4ZDE0Y2IyOGUiKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5zb3VyY2VfY2lkLAor
ICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KCIwYjBhMjA1YTY0OGZjZjgyZDg1ZjEyOGI2
N2JiZTA4MDUzZTYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVhZGVyLnRva2VuLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICI0NDM5N2EzNWQ2OTgzOTNjMTM0YjA4YTkzMjczNzg1OWY0NDZkM2Fh
ZGQwMGVkODE1NDBjOGQ4ZGUxNzIiCisgICAgICAgICAgICAgICAgIjkwNmQzZTdhMTExYjUwM2Y5
NzI5Yjg5MjhlNzUyOGY5YTg2YTQ1ODFmOWViYjRjYjNiNTNjMjgzNjYxZSIKKyAgICAgICAgICAg
ICAgICAiODUzMDc0MWE5OTE5MmVlNTY5MTRjNTYyNjk5OGVjMGYiCisgICAgICAgICAgICApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIu
aW50ZWdyaXR5X3RhZywgYmluYXNjaWkudW5oZXhsaWZ5KCJlMWEzYzgwYzc5N2VhNDAxYzA4ZmM5
YzM0MmEyZDkwZCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIu
cmVzdF9sZW5ndGgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTI1
KQorCisgICAgICAgICMgY2hlY2sgaW50ZWdyaXR5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAgICAgICAgICAgICBi
dWYuZGF0YV9zbGljZSgwLCAxMDkpLCBiaW5hc2NpaS51bmhleGxpZnkoImZiYmQyMTliNzM2M2I2
NGIiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBoZWFkZXIuaW50ZWdyaXR5X3RhZywK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVsbF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ2ZXJzaW9uX25lZ290aWF0aW9uLmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uTkVHT1RJQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90
eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9j
aWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY5MmY0
MzM2ZmE5NTFiYTEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyMykKKworICAgIGRlZiB0ZXN0X3B1bGxfbG9u
Z19oZWFkZXJfZGNpZF90b29fbG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKAorICAg
ICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImM2ZmYw
MDAwMTYxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Igor
ICAgICAgICAgICAgICAgICIwMWM1MTRmOTllYzRiYmYxZjdhMzBmOWIwYzk0ZmVmNzE3ZjFjMWQw
N2ZlYzI0Yzk5YTg2NGRhN2VkZSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVs
bF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGVzdGluYXRpb24gQ0lEIGlzIHRvbyBsb25nICgy
MSBieXRlcykiKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9zY2lkX3Rvb19sb25n
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBkYXRhPWJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYzJmZjAwMDAxNjAwMTUwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAgICAgICAgIjAxY2Zj
ZWU5OWVjNGJiZjFmN2EzMGY5YjBjOTQxN2I4YzI2M2NkZDhjYzk3MmE0NDM5ZDY4YTQ2MzIwIgor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9z
dF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlv
biksICJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICgyMSBieXRlcykiKQorCisgICAgZGVmIHRlc3Rf
cHVsbF9sb25nX2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHg4MFx4ZmZceDAwXHgwMFx4MTFceDAwXHgwMCIpCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNf
aGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgZGVm
IHRlc3RfcHVsbF9sb25nX2hlYWRlcl90b29fc2hvcnQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWIiXHhjMFx4MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9j
aWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hlYWRlcihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgic2hvcnRfaGVhZGVyLmJpbiIpKQorICAgICAg
ICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgMHg1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY0NWFhN2I1OWMwZTFh
ZDYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWYudGVsbCgpLCA5KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9oZWFkZXJfbm9fZml4
ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDAiKQorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAg
cHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikK
KworICAgIGRlZiB0ZXN0X2VuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAg
ICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIp
LAorICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoImY5MmY0MzM2ZmE5
NTFiYTEiKSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHg0NTQ3NDcxNiwgUXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhWzE6XSwgbG9hZCgidmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4iKVsxOl0pCisK
KworY2xhc3MgUGFyYW1zVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAg
IGRlZiB0ZXN0X3BhcmFtcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICIwMTAyNjcxMDAyMTBjYzJmZDZlN2Q5N2E1M2FiNWJlODViMjhkNzVj
ODAwODAzMDI0N2U0MDQwNDgwMDVmZmYiCisgICAgICAgICAgICAiYTA1MDQ4MDAwZmZmZjA2MDQ4
MDAwZmZmZjA4MDEwNjBhMDEwMzBiMDExOSIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTEwMDAwLAorICAg
ICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhkNlx4ZTdceGQ5elNc
eGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBtYXhfcGFja2V0X3Np
emU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5MzIxMCwKKyAgICAg
ICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY1NTM1LAorICAg
ICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY1NTM1LAor
ICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1Ob25lLAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4
cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJv
dG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfbGVnYWN5
KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjAwNDcwMDAyMDAxMGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4MDAwODAwMDEwNjAw
MDEwMDAyNiIKKyAgICAgICAgICAgICI3MTAwMDA2MDAwNDgwMDBmZmZmMDAwNTAwMDQ4MDAwZmZm
ZjAwMDQwMDA0ODAwNWZmZmEwMDBhMDAwMTAzMDAiCisgICAgICAgICAgICAiMGIwMDAxMTkwMDAz
MDAwMjQ3ZTQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwKKyAgICAgICAgICAgICAgICBzdGF0
ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhkOXpTXHhhYltceGU4WyhceGQ3XFxc
eDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTIwMjAsCisgICAgICAg
ICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisgICAgICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwKKyAgICAgICAgICAgICAgICBpbml0
aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUzNSwKKyAgICAgICAgICAgICAgICBp
bml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAgICAgICAgICAgICAgICBpbml0aWFs
X21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1z
X3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAg
ICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAg
ICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2Rpc2FibGVfYWN0aXZlX21pZ3JhdGlv
bihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMGMwMCIpCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBw
YXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYs
IHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cyhkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uX2xlZ2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwNDAwMGMwMDAwIikKKworICAgICAgICAjIHBhcnNlCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lv
bj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbj1UcnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWlj
UHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19wcmVmZXJyZWRfYWRk
cmVzcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICIwZDNiOGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUz
MTI2MmM0NTE4ZDYiCisgICAgICAgICAgICAiMzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZi
MmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1
bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzPVF1
aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIx
MzkuMTYyLjEyMy4xMzQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNz
PSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4
OTBceDk1YDciLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJG
XHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwMCkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249
UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcHJlZmVycmVk
X2FkZHJlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgIjAwM2YwMDBkMDAzYjhiYTI3Yjg2MTE1MzI0MDA4OTAyMDAwMDAwMDBm
MDNjOTFmZmZlNjlhNDU0MTE1MzEyNiIKKyAgICAgICAgICAgICIyYzQ1MThkNjMwMTNmMGMyODdl
ZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDgiCisgICAgICAgICAg
ICAiZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJh
bWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZl
cnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisg
ICAgICAgICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisg
ICAgICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFm
ZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1i
ImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5c
XG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAg
ICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd24oc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjgwMDBmZjAwMDEwMCIpCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxs
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3Zl
cnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygpKQorCisgICAg
ZGVmIHRlc3RfcGFyYW1zX3Vua25vd25fbGVnYWN5KHNlbGYpOgorICAgICAgICAjIGZiLm12ZnN0
Lm5ldCBzZW5kcyBhIHByb3ByaWV0YXJ5IHBhcmFtZXRlciA2NTI4MAorICAgICAgICBkYXRhID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwNjQwMDA1MDAwNDgwMDEwNDAwMDAw
NjAwMDQ4MDAxMDQwMDAwMDcwMDA0ODAwMTA0MDAwMDA0MDAwNDgwMSIKKyAgICAgICAgICAgICIw
MDAwMDAwMDgwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDkwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDEw
MDA0ODAiCisgICAgICAgICAgICAiMDBlYTYwMDAwYTAwMDEwMzAwMDMwMDAyNTAwMDAwMDIwMDEw
NjE2MTYxNjE2MjYyNjI2MjYzNjM2MzYzNjQ2IgorICAgICAgICAgICAgIjQ2NDY0ZmYwMDAwMDEw
MCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICAgICAgaWRsZV90aW1lb3V0PTYwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19y
ZXNldF90b2tlbj1iImFhYWFiYmJiY2NjY2RkZGQiLAorICAgICAgICAgICAgICAgIG1heF9wYWNr
ZXRfc2l6ZT00MDk2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9MTA0ODU3NiwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY2NTYw
LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY2
NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT02NjU2MCwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NDI5NDk2NzI5NSwKKyAg
ICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT00Mjk0OTY3Mjk1LAorICAgICAg
ICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2NF9vbmx5KHNlbGYpOgorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhiYTI3Yjg2MTE1
MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyNjJjNDUxOGQ2MzAxMyIKKyAg
ICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2
ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9IHB1bGxfcXVpY19w
cmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNz
KAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz1Ob25lLAorICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDci
LAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4
MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEp
KQorICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmLCBwcmVmZXJyZWRfYWRk
cmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRl
ZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjZfb25seShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDAwMDAwMDAwMDAyNDAwODkwMjAw
MDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNjMwMTMiCisgICAgICAgICAgICAi
ZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNiNCIK
KyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9
ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1aWNfcHJlZmVycmVkX2Fk
ZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlZmVy
cmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAg
ICAgICAgICBpcHY0X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9
KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5
NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAt
RUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcHJlZmVycmVk
X2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKwor
Y2xhc3MgRnJhbWVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWUoc2VsZik6
CisgICAgICAgIGRhdGEgPSBiIlx4MDBceDAyXHgwMFx4MDAiCisKKyAgICAgICAgIyBwYXJzZQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNldCwgZGVsYXkg
PSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdl
c2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZShzZWxmKToKKyAgICAgICAgZGF0
YSA9IGIiXHgwMlx4MDJceDAxXHgwMFx4MDBceDAwIgorCisgICAgICAgICMgcGFyc2UKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFj
a2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1
ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBk
YXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlXzIoc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAwXHgwMyIKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBk
ZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KSwgcmFuZ2UoNSwgNildKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fj
a19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZV8z
KHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgwMVx4MDIiCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBy
YW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyksIHJhbmdlKDUsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6
ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNr
ZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF90
d29fcmFuZ2VzKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA0XHgwMlx4MDJceDAwXHgwMFx4
MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShi
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KSwgcmFuZ2UoMiwgMyksIHJhbmdlKDQsIDUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5n
ZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZTIz
MTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVjNmY3Y2FkODkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDU2OSBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMuY3J5
cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgK
KyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAg
ICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFF1aWNGcmFtZVR5cGUsCisgICAgUXVpY1Byb3Rv
Y29sVmVyc2lvbiwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCAo
CisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tldEJ1aWxkZXJTdG9wLAorICAg
IFF1aWNTZW50UGFja2V0LAorKQorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgRXBvY2gKKworCitk
ZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKKyAgICByZXR1cm4gUXVpY1BhY2tl
dEJ1aWxkZXIoCisgICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAorICAgICAgICBpc19jbGllbnQ9
aXNfY2xpZW50LAorICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgIHBlZXJfY2lkPWJ5
dGVzKDgpLAorICAgICAgICBwZWVyX3Rva2VuPWIiIiwKKyAgICAgICAgc3Bpbl9iaXQ9RmFsc2Us
CisgICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICApCisK
KworZGVmIGNyZWF0ZV9jcnlwdG8oKToKKyAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKKyAgICBj
cnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRydWUsIHZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3Mg
UXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRl
cl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAg
ICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0
X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVp
bGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisK
KyAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBh
Y2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5CisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5J
VElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRl
c3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9
IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVf
Y3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAg
ICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAg
ICAgICAgIyBJTklUSUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDEw
MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisK
KyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQ
QUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWls
ZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAg
ICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdy
YW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBh
Y2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisg
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5n
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5
dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAg
ICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19l
bGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVl
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVy
X2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIo
KQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwK
KyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRv
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBl
LkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJ
QUwsIGVtcHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJ
QUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFj
a2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAx
NDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFD
S0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xNDUsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fc2hvcnRfaGVhZGVyKHNl
bGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEy
MzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1w
dHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGZ1bGwgbGVu
Z3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVy
LnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGVtcHR5CisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hl
Y2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2go
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElB
TCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQs
CisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAg
IGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2VsZik6CisgICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNL
RVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRl
ci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhi
eXRlcygxOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgSEFORFNIQUtFCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0
KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgICMgT05FX1JUVAorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCisgICAgICAgIGJ1ZiA9IGJ1
aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdy
YW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFt
c1swXSksIDkxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tl
dHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAg
ICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
dHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVz
PTI0NCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hBS0UsCisgICAgICAgICAg
ICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxp
Y2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MzQzLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0yLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTMyNywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRl
c3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMg
T05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VU
X1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIu
cmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFt
cworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgYnVp
bGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVz
ID0gMTAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDk3MykKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNl
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMDAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTAwMCwKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3pl
cm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5dGVzID0gMCBvbmx5
IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgorCisgICAgICAgIENoZWNrIENSWVBU
TyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAg
ICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorCisgICAgICAgICMgY2hlY2sg
YnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwg
MCkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3plcm9fYWNr
KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyA9IDAgb25seSBh
bGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBDaGVjayBBQ0sgaXMg
YWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigp
CisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
UXVpY0ZyYW1lVHlwZS5BQ0spCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDY0KSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCA5MikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAg
ICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNL
RVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTkyLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18xKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGRvZXNuJ3QgYWxsb3cg
YW55IHBhY2tldHMuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxk
ZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDExCisKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQo
UEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1z
CisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3Rfc2hvcnRf
aGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAg
IGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5
dGVzID0gODAwCisKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNzczKQor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToK
KyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
ODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxp
Z2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBB
Q0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9ODAwLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAj
IGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9u
dW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzMo
c2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxk
ZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlw
dG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQs
IGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5w
YWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2Vu
dFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAg
ICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fj
a19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAg
ICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Jhbmdlc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDA4YzhhYzZjNTIzNmQxMzYzNDhhZDI0YWJmOWZh
NmQ4NTkzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5n
ZXNldC5weQpAQCAtMCwwICsxLDIzNyBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UK
KworZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKKworY2xhc3Mg
UmFuZ2VTZXRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRfc2luZ2xlX2R1cGxpY2F0
ZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5n
ZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICBkZWYgdGVzdF9hZGRf
c2luZ2xlX29yZGVyZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2Vz
ZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9tZXJnZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDMpXSkK
KworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDMpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKKwor
ICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vcmRlcmVkKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5n
ZXNldC5hZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDAsIDQpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMs
IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KSwgcmFuZ2UoMywgNSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCAzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNSldKQorCisgICAgZGVm
IHRlc3RfYWRkX3JhbmdlX292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDUpXSkKKworICAg
IGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwXzIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0g
UmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAgICAgICByYW5nZXNl
dC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEwLCAxMikKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDE2LCAxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgpLCByYW5nZSgxMCwgMTIpLCBy
YW5nZSgxNiwgMTgpXQorICAgICAgICApCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDE1KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgMTUpLCBy
YW5nZSgxNiwgMTgpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoNiwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDYsIDgp
XSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgcmFuZ2Vz
ZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNCwgNildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgy
LCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwg
NildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9zcGFyc2Uoc2VsZik6Cisg
ICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMild
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDYsIDgpXSkKKworICAgICAgICBy
YW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQorCisgICAgZGVmIHRl
c3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAg
ICByYW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyMCwgMzApCisKKyAg
ICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDEwKSwgcmFuZ2UoMjAsIDMwKV0pCisKKyAgICBkZWYg
dGVzdF9zdWJ0cmFjdF9ub19jaGFuZ2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoNSwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgx
NSwgMjApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyNSwgMzApCisKKyAgICAgICAgcmFuZ2VzZXQu
c3VidHJhY3QoMCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMwKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuc3VidHJhY3QoMTAsIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjApLCByYW5nZSgyNSwgMzApXSkK
KworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0
ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMSwgNCkKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMjApCisgICAgICAgIHJhbmdl
c2V0LmFkZCgzMCwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwg
cmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAs
IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwgcmFuZ2UoMzAsIDQw
KV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDMsIDExKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgMyksIHJhbmdlKDEx
LCAyMCksIHJhbmdlKDMwLCA0MCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Rfc3BsaXQoc2Vs
Zik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQo
MCwgMTApCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDIsIDUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNSwgMTApXSkKKwor
ICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Tm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBib29sKFJhbmdlU2V0KCkpCisKKyAg
ICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiByYW5nZXNldCkKKworICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgw
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCisK
KyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSksIHJhbmdlKDMsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgyIGluIHJh
bmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiByYW5nZXNldCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKDQgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gcmFuZ2VzZXQpCisK
KyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgcjAgPSBSYW5nZVNldChbcmFuZ2UoMCwg
MSldKQorICAgICAgICByMSA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQor
ICAgICAgICByMiA9IFJhbmdlU2V0KFtyYW5nZSgzLCA0KSwgcmFuZ2UoMSwgMildKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMCA9PSByMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
MCA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMCA9PSAwKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyMSA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMSA9PSBy
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIyKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHIxID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIyKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocjIgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cjIgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjIgPT0gMCkKKworICAgIGRlZiB0
ZXN0X2xlbihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdlc2V0KSwgMCkKKworICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdl
c2V0KSwgMSkKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBS
YW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAgICAgciA9IHJhbmdlc2V0
LnNoaWZ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCByYW5nZSgxLCAyKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDQpXSkKKworICAg
IGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3Jhbmdl
KDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyYW5n
ZXNldCksICJSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkiKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzEzZjhmYzhhNGM0MGZiNjQzMTE0NGI4
YzBmYmJkYjdhODBiYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcmVjb3ZlcnkucHkKQEAgLTAsMCArMSwyMjcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHVuaXR0
ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9x
dWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfVFlQRV9JTklUSUFMLCBQQUNLRVRfVFlQRV9P
TkVfUlRUCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY1NlbnRQ
YWNrZXQKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNldAorZnJvbSBh
aW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0UGFjZXIsCisgICAg
UXVpY1BhY2tldFJlY292ZXJ5LAorICAgIFF1aWNQYWNrZXRTcGFjZSwKKyAgICBRdWljUnR0TW9u
aXRvciwKKykKKworCitkZWYgc2VuZF9wcm9iZSgpOgorICAgIHBhc3MKKworCitjbGFzcyBRdWlj
UGFja2V0UGFjZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHNlbGYucGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgZGVmIHRlc3Rfbm9fbWVhc3Vy
ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTAuMCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2Vu
ZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5v
dz0wLjApCisKKyAgICBkZWYgdGVzdF93aXRoX21lYXN1cmVtZW50KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAg
ICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0wLjApCisKKyAgICAgICAgc2Vs
Zi5wYWNlci51cGRhdGVfcmF0ZShjb25nZXN0aW9uX3dpbmRvdz0xMjgwMDAwLCBzbW9vdGhlZF9y
dHQ9MC4wNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF9tYXgs
IDAuMDAwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF90aW1l
LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5wYWNrZXRfdGltZSwg
MC4wMDAwNSkKKworICAgICAgICAjIDE2IHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRf
dGltZShub3c9MS4wKSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRf
c2VuZF90aW1lKG5vdz0xLjApLCAxLjAwMDA1KQorCisgICAgICAgICMgMiBwYWNrZXRzCisgICAg
ICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2Vs
Zi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAwNSkpCisgICAgICAgICAgICBzZWxmLnBh
Y2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDA1KQorICAgICAgICBzZWxmLmFzc2VydEFs
bW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMDUpLCAxLjAwMDEp
CisKKyAgICAgICAgIyAxIHBhY2tldAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBh
Y2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDEpKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0
ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwo
c2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSwgMS4wMDAxNSkKKworICAgICAg
ICAjIDIgcGFja2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpKQor
ICAgICAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAxNSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0xLjAwMDE1KSwgMS4wMDAyKQorCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNvdmVyeVRlc3QoVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNF
ID0gUXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UgPSBRdWlj
UGFja2V0U3BhY2UoKQorICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0UgPSBRdWljUGFja2V0U3Bh
Y2UoKQorCisgICAgICAgIHNlbGYucmVjb3ZlcnkgPSBRdWljUGFja2V0UmVjb3ZlcnkoCisgICAg
ICAgICAgICBpc19jbGllbnRfd2l0aG91dF8xcnR0PUZhbHNlLCBzZW5kX3Byb2JlPXNlbmRfcHJv
YmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLnJlY292ZXJ5LnNwYWNlcyA9IFsKKyAgICAgICAg
ICAgIHNlbGYuSU5JVElBTF9TUEFDRSwKKyAgICAgICAgICAgIHNlbGYuSEFORFNIQUtFX1NQQUNF
LAorICAgICAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFLAorICAgICAgICBdCisKKyAgICBkZWYg
dGVzdF9kaXNjYXJkX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLnJlY292ZXJ5LmRpc2NhcmRf
c3BhY2Uoc2VsZi5JTklUSUFMX1NQQUNFKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X2Fja19lbGljaXRpbmcoc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
c2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwKKyAgICAgICAgKQor
ICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAgICMgwqBwYWNrZXQg
c2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwgc3BhY2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQs
IDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5v
bl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdlc2V0PVJhbmdlU2V0
KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQsIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQsIDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0cyksIDApCisK
KyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucmVjb3Zl
cnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292
ZXJ5Ll9ydHRfbGF0ZXN0LCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVj
b3ZlcnkuX3J0dF9taW4sIDEwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNv
dmVyeS5fcnR0X3Ntb290aGVkLCAxMC4wKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X25vbl9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBhY2tl
dCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9
MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MTIzLjQ1LAorICAg
ICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNFCisKKyAgICAgICAgIyDC
oHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFja2V0X3NlbnQocGFja2V0
LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2lu
X2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0
aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2Vu
dF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBhY2snZAorICAgICAgICBzZWxmLnJl
Y292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlLCBhY2tfcmFuZ2VzZXQ9
UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5vdz0xMC4wCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdo
dCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2Zs
aWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRz
KSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAwLjApCisKKyAgICBkZWYgdGVzdF9vbl9w
YWNrZXRfbG9zdF9jcnlwdG8oc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICBpbl9m
bGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAg
ICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwK
KyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAg
ICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MC4wLAorICAgICAgICAp
CisgICAgICAgIHNwYWNlID0gc2VsZi5JTklUSUFMX1NQQUNFCisKKyAgICAgICAgc2VsZi5yZWNv
dmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisgICAgICAgIHNlbGYu
cmVjb3ZlcnkuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9MS4wKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisKK2NsYXNzIFF1aWNS
dHRNb25pdG9yVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbW9uaXRvcihzZWxmKToKKyAg
ICAgICAgbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwLCBub3c9MTAwMCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAw
LjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAg
ICMgbm90IHRha2VuIGludG8gYWNjb3VudAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0
b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAwLjBdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5vdz0xMDAxKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAwLjAsIDAu
MCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEyLCBu
b3c9MTAwMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEw
LCAxMSwgMTIsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9y
ZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTEzLCBub3c9MTAwMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
c2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgICMgd2Ugbm93IGhhdmUgZW5vdWdoIHNhbXBsZXMK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0x
NCwgbm93PTEwMDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMs
IFsxMCwgMTEsIDEyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9uaXRvci5f
cmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFz
aW5nKHJ0dD0yMCwgbm93PTEwMDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3Iu
X2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0
X2luY3JlYXNpbmcocnR0PTMwLCBub3c9MTAwNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NDAsIG5vdz0xMDA3KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD01MCwgbm93PTEwMDgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTYwLCBub3c9MTAwOSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAxKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NzAsIG5vdz0x
MDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD04
MCwgbm93PTEwMTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNl
cywgMykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTkwLCBub3c9MTAxMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
aW5jcmVhc2VzLCA0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25pdG9yLmlzX3J0dF9p
bmNyZWFzaW5nKHJ0dD0xMDAsIG5vdz0xMDEzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
b25pdG9yLl9pbmNyZWFzZXMsIDUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3NmYwMjNiZjkzZGE0YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpAQCAtMCwwICsxLDMwIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5yZXRyeSBp
bXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCisKKworY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5k
bGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmV0cnlfdG9rZW4oc2VsZik6CisgICAg
ICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQpCisgICAgICAgIGNpZCA9IGIiXHgwOFx4MDdc
eDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKKworICAgICAgICBoYW5kbGVyID0gUXVpY1JldHJ5VG9r
ZW5IYW5kbGVyKCkKKworICAgICAgICAjIGNyZWF0ZSB0b2tlbgorICAgICAgICB0b2tlbiA9IGhh
bmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5v
bmUodG9rZW4pCisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIG9rCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCB0b2tlbiksIGNpZCkKKwor
ICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1wdHkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRsZXIudmFsaWRhdGVf
dG9rZW4oYWRkciwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0IGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIGtl
eSBzaXplLiIKKyAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSB3cm9uZyBh
ZGRyZXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRlX3Rva2VuKCgiMS4yLjMuNCIsIDEyMzQ1KSwg
dG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJSZW1v
dGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1MzdhZTJlZDEyYjZmNmMwNDJkMDk5MDRlY2ZiNGYwYzJkZjU3ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKQEAgLTAsMCAr
MSw0NDYgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5w
YWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFtZQorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0X2J1
aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9tIGFpb3F1aWMucXVpYy5zdHJlYW0g
aW1wb3J0IFF1aWNTdHJlYW0KKworCitjbGFzcyBRdWljU3RyZWFtVGVzdChUZXN0Q2FzZSk6Cisg
ICAgZGVmIHRlc3RfcmVjdl9lbXB0eShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIikp
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZm
ZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFu
Z2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9z
dGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3JkZXJlZChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IHN0
YXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFs
c2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5
dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBtb3JlIGRhdGEK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSksCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwg
c3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMo
c3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgICAgICAjIGFkZCBkYXRhIGFuZCBmaW4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD0xNiwgZGF0YT1iIjY3ODkwMTIzIiwgZmluPVRydWUpKSwK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiNjc4OTAxMjMiLCBlbmRfc3Ry
ZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMjQpCisKKyAgICBkZWYgdGVzdF9yZWN2
X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9
MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIlx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwODkwMTIzNDUiCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbcmFuZ2UoOCwg
MTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0
LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9m
ZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9
MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVmIHRlc3RfcmVjdl9vZmZzZXRfb25seShzZWxmKToK
KyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFk
ZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAg
ICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIiIpKSwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVj
dl9idWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9mdWxseV9jb25zdW1lZChzZWxmKToKKyAgICAg
ICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRh
IGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBk
YXRhIGFnYWluIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAx
MjM0NTY3IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICBkZWYgdGVzdF9yZWN2X2FscmVhZHlf
cGFydGlhbGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0
cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiKSksCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lk
PTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9y
ZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5f
cmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3Zf
YnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVk
KGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVl
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfZmluX291dF9vZl9vcmRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShz
dHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4IHdpdGggRklOCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1
aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAg
ICAgICAgICAgIE5vbmUsCisgICAgICAgICkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNl
dCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY3Zf
ZmluX3RoZW5fZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1f
aWQ9MCkKKyAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAs
IGRhdGE9YiIiLCBmaW49VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhj
ZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZy
YW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHIoY20uZXhjZXB0aW9uKSwgIkRhdGEgcmVjZWl2ZWQgYmV5b25kIEZJTiIpCisKKyAgICBk
ZWYgdGVzdF9yZWN2X2Zpbl90d2ljZShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1Njci
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5k
X3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEy
MzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIi
IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X3JlY3ZfZmluX3dpdGhvdXRfZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIiwgZmlu
PVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiIiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRf
ZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBub3Ro
aW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEKKyAg
ICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3Nl
bmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5r
CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdl
dF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMg
Zmlyc3QgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVs
aXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDAsIDgpCisKKyAgICAgICAgIyBzZWNvbmQg
Y2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDgsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRh
X2FuZF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisgICAgICAg
ICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBk
YXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVu
ZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2Vu
ZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAj
IHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEyMzQ1IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
NikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0KHNlbGYpOgorICAgICAgICBzdHJlYW0g
PSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0
ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3Iiwg
ZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNl
bmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZp
bj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8g
c2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAg
ICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVy
eShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgOCldKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2Vu
ZCBjaHVuayBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
ZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1G
YWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2xvc3Rf
ZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5v
dGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBh
bmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3Ry
ZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3Ry
ZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
cmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVh
bUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisK
KyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
bmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAg
ICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCA4LCAx
NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFt
RnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbSgpCisgICAgICAgIG1heF9vZmZzZXQgPSAxMgorCisgICAgICAgICMgbm90aGluZyB0byBz
ZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgd3JpdGUgZGF0YSwg
c2VuZCBhIGNodW5rCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiKQor
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShm
cmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2Uo
OCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgOCkKKworICAgICAgICAjIHNlbmQgaXMgbGltaXRlZCBieSBwZWVyCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiODkwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAx
NildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
MikKKworICAgICAgICAjIHVuYWJsZSB0byBzZW5kLCBibG9ja2VkCisgICAgICAgIGZyYW1lID0g
c3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5k
aW5nKSwgW3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHdyaXRlIG1vcmUgZGF0YSwgc3RpbGwg
YmxvY2tlZAorICAgICAgICBzdHJlYW0ud3JpdGUoYiJhYmNkZWZnaCIpCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDEyLCAyNCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHBlZXIgcmFpc2VzIGxpbWl0LCBz
ZW5kIHNvbWUgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBz
dHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIyMzQ1YWJjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMTIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgyMCwg
MjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwg
MjApCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCBhZ2Fpbiwgc2VuZCByZW1haW5pbmcg
ZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0
YSwgYiJlZmdoIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDI0KQorCisgICAgICAgICMgbm90aGluZyBt
b3JlIHRvIHNlbmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9maW5fb25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0u
c2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIEVP
RgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFt
ZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5k
YXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGluZyBtb3Jl
IHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZmZXJfaXNf
ZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Zpbl9vbmx5
X2Rlc3BpdGVfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisK
KyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdy
aXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAg
ICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGlu
ZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZm
ZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF90bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzJkZDU2ZGViOGJhZWFjOTZmY2QxYTNmZTBiYjVmOTQzNWQ3YzBjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpAQCAtMCwwICsxLDE0
MDAgQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3NsCitmcm9t
IHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRj
aAorCitmcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEFsZ29y
aXRobQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IHNlcmlhbGl6
YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1w
b3J0IGVjCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1aWMuYnVmZmVyIGlt
cG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0ICgK
KyAgICBDZXJ0aWZpY2F0ZSwKKyAgICBDZXJ0aWZpY2F0ZVZlcmlmeSwKKyAgICBDbGllbnRIZWxs
bywKKyAgICBDb250ZXh0LAorICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMsCisgICAgRmluaXNoZWQs
CisgICAgTmV3U2Vzc2lvblRpY2tldCwKKyAgICBTZXJ2ZXJIZWxsbywKKyAgICBTdGF0ZSwKKyAg
ICBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcywKKyAgICBwdWxsX2Jsb2NrLAorICAgIHB1bGxf
Y2VydGlmaWNhdGUsCisgICAgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisgICAgcHVsbF9jbGll
bnRfaGVsbG8sCisgICAgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAgICBwdWxsX2Zpbmlz
aGVkLAorICAgIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1bGxfc2VydmVyX2hlbGxv
LAorICAgIHB1c2hfY2VydGlmaWNhdGUsCisgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisg
ICAgcHVzaF9jbGllbnRfaGVsbG8sCisgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAg
ICBwdXNoX2ZpbmlzaGVkLAorICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1c2hf
c2VydmVyX2hlbGxvLAorICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSwKKykKKworZnJvbSAudXRpbHMg
aW1wb3J0ICgKKyAgICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisg
ICAgU0VSVkVSX0tFWUZJTEUsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgbG9h
ZCwKKykKKworQ0VSVElGSUNBVEVfREFUQSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKVsx
MTotMl0KK0NFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUgPSBsb2FkKCJ0bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiIpWy0zODQ6XQorCitDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDExMDAzMTAwMDUwMDA0ODAxMDAw
MDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4MDEwMDAwMDAwMCIKKyAgICBiIjQwMDA0ODEwMDAw
MDAwMDAxMDAwMjQyNTgwMDA4MDAwMjQwNjQwMDBhMDAwMTBhIgorKQorCitTRVJWRVJfUVVJQ19U
UkFOU1BPUlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDEx
MDRmZjAwMDAxMTAwNDUwMDA1MDAwNDgwMTAwMDAwMDAwNjAwMDQ4MDEwMDAwMDAwMDcwMDA0OCIK
KyAgICBiIjAxMDAwMDAwMDA0MDAwNDgxMDAwMDAwMDAwMTAwMDI0MjU4MDAwMjAwMTAwMDAwMDAw
MDAwMDAwMDAwMDAwMCIKKyAgICBiIjAwMDAwMDAwMDAwMDAwMDgwMDAyNDA2NDAwMGEwMDAxMGEi
CispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgYiIwMDU3MDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAwMGZmZmYwMDAyMDAx
MGM1YWM0MTBmYmRkNGZlNmUyYzEiCisgICAgYiI0MjI3OWYyMzFlOGUwMDAwYTAwMDEwMzAwMDQw
MDA0ODAwNWZmZmEwMDBiMDAwMTE5MDAwMTAwMDI2NzEwZmYiCisgICAgYiI0MjAwMGM1YzA2N2Yy
N2UzOTMyMWM2M2UyOGU3YzkwMDAzMDAwMjQ3ZTQwMDA4MDAwMTA2IgorKQorCitTRVJWRVJfUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSU18zID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgIGIiMDA1
NDAwMDIwMDEwMGRjYjUwYTQ0MjUxMzI5NWI0Njc5YmFmMDRjYjVlZmZmZjhhMDAwOWM4YWZlNzJh
NjM5NyIKKyAgICBiIjI1NTQwNzAwMDYwMDA0ODAwMGZmZmYwMDA4MDAwMTA2MDAwNDAwMDQ4MDA1
ZmZmYTAwMDUwMDA0ODAwMGZmZmYiCisgICAgYiIwMDAzMDAwMjQ3ZTQwMDBhMDAwMTAzMDAwMTAw
MDI2NzEwMDAwYjAwMDExOSIKKykKKworCitjbGFzcyBCdWZmZXJUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9wdWxsX2Jsb2NrX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVh
ZEVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDEpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworCitkZWYgY3JlYXRlX2J1ZmZlcnMoKToKKyAgICByZXR1cm4geworICAg
ICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB0
bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgfQorCisKK2RlZiBtZXJn
ZV9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIHJldHVybiBiIiIuam9pbih4LmRhdGEgZm9yIHggaW4g
YnVmZmVycy52YWx1ZXMoKSkKKworCitkZWYgcmVzZXRfYnVmZmVycyhidWZmZXJzKToKKyAgICBm
b3IgayBpbiBidWZmZXJzLmtleXMoKToKKyAgICAgICAgYnVmZmVyc1trXS5zZWVrKDApCisKKwor
Y2xhc3MgQ29udGV4dFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfY2xpZW50KAorICAg
ICAgICBzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lLCBjYWRhdGE9Tm9uZSwgY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFLCAqKmt3YXJncworICAgICk6CisgICAgICAgIGNsaWVudCA9IENvbnRleHQo
CisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAg
IGNhZGF0YT1jYWRhdGEsCisgICAgICAgICAgICBjYWZpbGU9Y2FmaWxlLAorICAgICAgICAgICAg
aXNfY2xpZW50PVRydWUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisgICAgICAg
IGNsaWVudC5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAg
ICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAg
ICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUKQorICAgICAgICByZXR1cm4gY2xpZW50CisKKyAg
ICBkZWYgY3JlYXRlX3NlcnZlcihzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lKToKKyAgICAgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJf
S0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBDb250ZXh0KAorICAgICAgICAgICAgYWxwbl9w
cm90b2NvbHM9YWxwbl9wcm90b2NvbHMsIGlzX2NsaWVudD1GYWxzZSwgbWF4X2Vhcmx5X2RhdGE9
MHhGRkZGRkZGRgorICAgICAgICApCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSA9IGNvbmZp
Z3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VydmVyLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5ID0gY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQorICAgICAgICBzZXJ2ZXIuaGFuZHNoYWtl
X2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4dGVu
c2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBTRVJW
RVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICkKKyAgICAgICAgXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVD
VF9DTElFTlRfSEVMTE8pCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Ns
aWVudF91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudCgpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJc
eDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3Rh
dGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJT05TCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9i
dWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9D
RVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisK
KyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9W
RVJJRlkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0
ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
dGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9t
ZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAg
Y2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZm
ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2NlcnRpZmljYXRlX3ZlcmlmeV9kYXRh
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVs
bG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0
X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAg
ICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmlj
YXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBj
cmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikK
KworICAgICAgICAjIG1lc3Mgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgY2xpZW50
X2lucHV0ID0gY2xpZW50X2lucHV0WzotNTZdICsgYnl0ZXMoNCkgKyBjbGllbnRfaW5wdXRbLTUy
Ol0KKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25z
LCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6CisgICAgICAgICAgICBj
bGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorCisgICAgZGVm
IHRlc3RfY2xpZW50X2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVf
c2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9i
dWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIs
IGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0
ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVy
Z2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYp
CisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICMgc2VuZCBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAg
ICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9G
SU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVm
KQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgIyBtZXNzIHdp
dGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgY2xpZW50X2lucHV0ID0gY2xpZW50X2lu
cHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5j
cnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlz
aGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9y
KToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVu
dF9idWYpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5leHBlY3RlZF9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlcnZlci5z
dGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAg
c2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJz
KCkpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hF
RAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNz
YWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4
MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNF
UlZFUl9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2Fn
ZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgZGVmIF9zZXJ2
ZXJfZmFpbF9oZWxsbyhzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMgc2VuZCBjbGll
bnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAg
IHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVs
bG8KKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVy
LmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKworICAgIGRlZiB0ZXN0
X3NlcnZlcl91bnN1cHBvcnRlZF9jaXBoZXJfc3VpdGUoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fY2lwaGVyX3N1aXRlcyA9IFt0
bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2XQorCisgICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5fY2lwaGVyX3N1aXRlcyA9IFt0bHMu
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0XQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAgICAgICAgICBz
ZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3VpdGUiKQor
CisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG0oc2Vs
Zik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVu
dC5fc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FRDQ0OF0K
KworICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBzaWduYXR1
cmUgYWxnb3JpdGhtIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF92ZXJzaW9u
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBj
bGllbnQuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJT05fMV8yXQorCisgICAg
ICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyh0bHMuQWxlcnRQcm90b2NvbFZlcnNpb24pIGFzIGNtOgorICAgICAgICAgICAg
c2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lv
biIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfYmFkX2ZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYp
OgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8KKyAg
ICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZl
cnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBj
ZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVf
YnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNl
cnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZm
ZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAg
ICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZp
Y2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAjIHNlbmQgZmluaXNo
ZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1
ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBt
ZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgc2VydmVyX2lucHV0ID0gc2Vy
dmVyX2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9yKToKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisKKyAgICBkZWYgX2hhbmRzaGFrZShzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAyMTMp
CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzNTgpCisg
ICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGll
bnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lvbiB0
aWNrZXQpCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNl
cnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVE
KQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCA2MDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAyMzE2KQorCisgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZCwgKHNlc3Npb24gdGlja2V0KQorICAgICAgICAjIHNlbmQgZmluaXNoZWQK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NU
X0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA1MikKKyAg
ICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMgaGFuZGxlIGZpbmlz
aGVkCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9i
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJf
UE9TVF9IQU5EU0hBS0UpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2Vy
dmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMCkK
KworICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAgICAjIGNoZWNrIGNp
cGhlciBzdWl0ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50
LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9T
SEEzODQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c2VydmVyLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2
X0dDTV9TSEEzODQKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNl
cnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2hhbmRz
aGFrZV9lY2RzYV9zZWNwMjU2cjEoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSwgc2VydmVyLmNlcnRpZmljYXRl
X3ByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisg
ICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgKKyAgICAgICAgICAgIGNhZGF0YT1z
ZXJ2ZXIuY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVN
KSwKKyAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
aGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sgQUxQTiBtYXRjaGVz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3RpYXRlZCwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQor
CisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiXSkKKyAgICAgICAg
c2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiLCAiaDMt
MjAiXSkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAg
ICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQu
YWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZl
ci5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0
aF9hbHBuX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudChh
bHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcihhbHBuX3Byb3RvY29scz1bImgzLTIwIl0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoY20uZXhjZXB0aW9uKSwgIk5vIGNvbW1vbiBBTFBOIHByb3RvY29scyIpCisKKyAgICBkZWYg
dGVzdF9oYW5kc2hha2Vfd2l0aF9yc2FfcGtjczFfc2hhMjU2X3NpZ25hdHVyZShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zaWdu
YXR1cmVfYWxnb3JpdGhtcyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTZdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dp
dGhfY2VydGlmaWNhdGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudChjYWZpbGU9Tm9uZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmlj
YXRlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVuYWJsZSB0byBn
ZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93
aXRoX2NlcnRpZmljYXRlX25vX3ZlcmlmeShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2dyZWFz
ZV9ncm91cChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAg
ICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5HUkVBU0UsIHRscy5H
cm91cC5TRUNQMjU2UjFdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisK
KyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
aGFuZHNoYWtlX3dpdGhfeDI1NTE5KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0
ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMgPSBbdGxzLkdyb3Vw
LlgyNTUxOV0KKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIGV4Y2VwdCBVbnN1cHBvcnRlZEFsZ29yaXRobSBhcyBleGM6CisgICAgICAgICAgICBzZWxm
LnNraXBUZXN0KHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfeDQ0OChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xp
ZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5YNDQ4XQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
X2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkQWxn
b3JpdGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCisKKyAg
ICBkZWYgdGVzdF9zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgY2xpZW50X3RpY2tldHMg
PSBbXQorICAgICAgICBzZXJ2ZXJfdGlja2V0cyA9IFtdCisKKyAgICAgICAgZGVmIGNsaWVudF9u
ZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBjbGllbnRfdGlja2V0cy5hcHBlbmQodGlj
a2V0KQorCisgICAgICAgIGRlZiBzZXJ2ZXJfZ2V0X3RpY2tldChsYWJlbCk6CisgICAgICAgICAg
ICBmb3IgdCBpbiBzZXJ2ZXJfdGlja2V0czoKKyAgICAgICAgICAgICAgICBpZiB0LnRpY2tldCA9
PSBsYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgZGVmIHNlcnZlcl9uZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAg
ICAgICBzZXJ2ZXJfdGlja2V0cy5hcHBlbmQodGlja2V0KQorCisgICAgICAgIGRlZiBmaXJzdF9o
YW5kc2hha2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisg
ICAgICAgICAgICBjbGllbnQubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gY2xpZW50X25ld190aWNr
ZXQKKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAg
ICAgIHNlcnZlci5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfbmV3X3RpY2tldAorCisg
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBub3QgdXNlZAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAgICAgICAgICAjIGNoZWNr
IHRpY2tldHMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF90
aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl90aWNr
ZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3RpY2tldHNbMF0u
dGlja2V0LCBzZXJ2ZXJfdGlja2V0c1swXS50aWNrZXQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudF90aWNrZXRzWzBdLnJlc3VtcHRpb25fc2Vj
cmV0LCBzZXJ2ZXJfdGlja2V0c1swXS5yZXN1bXB0aW9uX3NlY3JldAorICAgICAgICAgICAgKQor
CisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlKCk6CisgICAgICAgICAgICBjbGllbnQgPSBz
ZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0g
Y2xpZW50X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2Vy
dmVyKCkKKyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJf
Z2V0X3RpY2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3No
YXJlZF9rZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAg
ICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VS
VkVSX0hFTExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9p
bnB1dCksIDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJf
aW5wdXQpLCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAg
ICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2
ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNz
YWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICAg
ICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAgICAgICAgICAgcmVz
ZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVs
bG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5
LCBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgICAgICBjbGll
bnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RSkKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQorICAg
ICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRs
ZSBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIG5ld19zZXNzaW9uX3RpY2tldAorICAgICAg
ICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfUE9T
VF9IQU5EU0hBS0UpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNl
cnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnRfaW5wdXQp
LCAwKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAg
ICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9kZWNfa2V5KQorCisgICAgICAgICAgICAjIGNoZWNr
IHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgdXNlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNsaWVudC5zZXNzaW9uX3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRf
YmluZGVyKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAg
ICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0KKworICAg
ICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAgIHNlcnZl
ci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAgICAgICAg
ICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAgICAgIGNs
aWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICAgICAg
c2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAgICAgICAg
ICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgdGFtcGVyIHdpdGgg
YmluZGVyCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5
dGVzKDQpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAg
ICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBTSyB2
YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hha2VfYmFkX3By
ZV9zaGFyZWRfa2V5KCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0K
KworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAg
IHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAg
ICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAg
ICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFu
ZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAg
ICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxl
IGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVk
IGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwg
c2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgICAgICAgICAjIHRhbXBlciB3aXRo
IHByZV9zaGFyZV9rZXkgaW5kZXgKKyAgICAgICAgICAgIGJ1ZiA9IHNlcnZlcl9idWZbdGxzLkVw
b2NoLklOSVRJQUxdCisgICAgICAgICAgICBidWYuc2VlayhidWYudGVsbCgpIC0gMSkKKyAgICAg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDEpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYp
CisKKyAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbyBhbmQgYm9tYgorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbGxlZ2FsUGFyYW1ldGVyKToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRf
YnVmKQorCisgICAgICAgIGZpcnN0X2hhbmRzaGFrZSgpCisgICAgICAgIHNlY29uZF9oYW5kc2hh
a2UoKQorICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKQorICAgICAgICBzZWNv
bmRfaGFuZHNoYWtlX2JhZF9wcmVfc2hhcmVkX2tleSgpCisKKworY2xhc3MgVGxzVGVzdChUZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG8oc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikpCisgICAgICAgIGhl
bGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVm
LmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5y
YW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1
YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlk
Y2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8u
Y2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVy
U3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0
ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNI
QUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXBy
ZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZS
MSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNmZmE4MjQwNWEyMTFi
NjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAgICAiOTNjNzY2NWE1
NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFmOThhMWU4NGYxNSIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBb
dGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1Nf
UlNBRV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsIFt0bHMuR3JvdXAuU0VDUDI1
NlIxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnN1cHBv
cnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjgs
CisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5v
dGhlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAg
ICAgICAiZWQ1NzVjNmZiZDU5OWM0ZGZhYWJkMDAzZGNhNmU4NjBjY2RiMGUxNzgyYzFhZjAyZTU3
YmYyN2NiNjQ3OWI3NiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWxsby5zZXNzaW9uX2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAg
ICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5FTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5j
b21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAg
ICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJv
dG9jb2xzLCBbImgzLTE5Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uZWFybHlf
ZGF0YSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4ODQyMzE1YzQzN2Ji
MGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGViYjBkNCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5MTU1ODY2ZTI2NGM5
ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgorICAgICAgICAgICAgICAgICAgICAgICAgIjIy
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2ZXJf
bmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hB
MjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDM4
NFIxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNB
X1NFQ1A1MjFSMV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRo
bS5FRDI1NTE5LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUQ0NDgs
CisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19T
SEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BT
U19TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisg
ICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKKyAgICAgICAgICAgICAgICB0bHMuR3Jv
dXAuU0VDUDM4NFIxLAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQNTIxUjEsCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3Vw
cG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hl
bGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAgICAgICBo
ZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKKyAgICAgICAgICAgIHRscy5PZmZlcmVkUHNr
cygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBlNjAxNTkxYTc1MGI4
MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
NDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBhNGJmZTQwMmQ2YTA2
YTAwNTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUyMDg1MjMzYjY5ZDBk
ZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFiIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJmNGE5OTRmY2E3NGVl
N2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bCisgICAgICAgICAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIx
Nzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3ZGEzMjgxMWI1YmFl
NGU3OCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5YjcxMzg3MmYyYmIyODgx
OGNhMWE2YjAxIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQor
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQor
CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5ZjdmNjE5NjNkN2I2NDA0
ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIyNmIxOWJkZDMwZGJm
NzUxMDE1YTNhMTZlMTNiZDU5MDAyZGZlNDIwYjc5OWQyYTVjZDVlMTFiOGZhN2JjYjY2IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2Rz
LCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0YjYyZDcwZjkwN2M4MTRjZDY1ZDBmNzNiOGI5OTFm
MDZiNzBjNzcxNTNmNTQ4NDEwYTE5MWQyYjE5NzY0YTIiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZWNjMDYwNjVhNDgwZWZhOWUxZjEwYzhkYTZlNzM3ZDViZmMwNGJlM2Y3NzNlMjBhMGM5OTdm
NTFiNTYyMTI4MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI0MCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hh
bmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsICJjbG91ZGZsYXJl
LXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxv
LnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9y
dGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMsCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9u
VHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICBDTElF
TlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0
aF9zbmkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX2NsaWVudF9oZWxsbyhzZWxmKToKKyAg
ICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1iaW5hc2NpaS51
bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1
ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMx
MzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1bCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1bdGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTExdLAorICAgICAgICAgICAga2V5X3NoYXJlPVsKKyAgICAgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAg
ICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNDdi
ZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFlYjhkMWQ5NDRlNjdh
ZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2QwMzJjZmFmMjJhNzNk
YTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCisgICAgICAgICAgICAgICAg
ICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM9W3Rscy5Q
c2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0sCisgICAgICAgICAgICBzaWduYXR1cmVfYWxn
b3JpdGhtcz1bCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNE
U0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBzdXBwb3J0
ZWRfZ3JvdXBzPVt0bHMuR3JvdXAuU0VDUDI1NlIxXSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9ucz1bCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfMywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAorICAgICAgICAgICAgICAgIHRs
cy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJT
SU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBvdGhlcl9leHRl
bnNpb25zPVsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5FeHRl
bnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAg
IENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAg
ICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsby5iaW4iKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1s
b2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVy
X2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAg
ICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2
MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4
NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJl
c3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0
YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAg
ICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNh
MTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9OXzFfMykKKworICAg
IGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAg
ICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICJjY2JhYWYwNGZjMWJkNTE0M2IyY2M2Yjk3NTIwY2YzN2Q5MTQ3MGRiZmM4MTI3MTMx
YTdiZjBmOTQxZTNhMTM3IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAg
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTQ4M2U3ZTg5NWQwZjRjZWMx
NzA4NmIwODQ5NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFiMCIKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJf
c3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRo
b2QuTlVMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtl
eV9zaGFyZSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1
NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgIjA0ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQwNTZiMTY0YTI3Zjc3
MDJjYTMxOGMxNmU0ODgiCisgICAgICAgICAgICAgICAgICAgICIxOGI2NDA5NTkzYjE1YzY2NDlk
NmY0NTkzODdhNTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYyIgorICAgICAgICAg
ICAgICAgICAgICAiNzYiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRM
U19WRVJTSU9OXzFfMykKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bz
ay5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2
ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBw
dWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLAorICAgICAg
ICAgICAgU2VydmVySGVsbG8oCisgICAgICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUz
ZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVh
NTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEws
CisgICAgICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5YzRmMTNl
Y2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJjYTE5NThkN2YzODcz
MTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMiIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5z
aW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVz
aF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
ZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIp
KQorCisgICAgZGVmIHRlc3RfcHVzaF9zZXJ2ZXJfaGVsbG8oc2VsZik6CisgICAgICAgIGhlbGxv
ID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYz
YjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNl
c3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQx
ODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1Igor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMuQ2lwaGVyU3VpdGUu
QUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5D
b21wcmVzc2lvbk1ldGhvZC5OVUxMLAorICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAg
ICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5
YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAg
ICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4
NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbj10bHMuVExT
X1ZFUlNJT05fMV8zLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisg
ICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikpCisKKyAgICBkZWYg
dGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4iKSkKKyAgICAgICAgbmV3X3Nl
c3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNrZXQoCisgICAg
ICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAgICAgIHRpY2tl
dF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25vbmNlPWIiIiwK
KyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkwNjE4NzA0NzA5
NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICksCisgICAgICAgICkK
KworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwKQorICAgICAg
ICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3RpY2tldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tl
dC5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5r
bm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAg
ICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNr
ZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAg
ICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25v
bmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkw
NjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICBv
dGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCisg
ICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnVmLmRhdGEsIGxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKQorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAg
ZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9ucy5iaW4iKQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRf
ZXh0ZW5zaW9ucyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRF
eHRlbnNpb25zKAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5R
VUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS
X1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAgICAgICAgcHVzaF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9u
c193aXRoX2FscG4oc2VsZik6CisgICAgICAgIGRhdGEgPSBsb2FkKCJ0bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
CisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAg
ICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEtMjAiLAorICAgICAgICAgICAgICAgIG90aGVyX2V4
dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VSVkVS
X05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18yLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEx
NSkKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxsX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhf
YWxwbl9hbmRfZWFybHlfZGF0YS5iaW4iKSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5j
cnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRl
bnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAgRW5j
cnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0yMCIs
CisgICAgICAgICAgICAgICAgZWFybHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgIG90aGVy
X2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VS
VkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18zLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVy
KDExNikKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2NlcnRpZmljYXRlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNf
Y2VydGlmaWNhdGUuYmluIikpCisgICAgICAgIGNlcnRpZmljYXRlID0gcHVsbF9jZXJ0aWZpY2F0
ZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMsIFsoQ0VSVElGSUNBVEVf
REFUQSwgYiIiKV0pCisKKyAgICBkZWYgdGVzdF9wdXNoX2NlcnRpZmljYXRlKHNlbGYpOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKAorICAgICAgICAgICAgcmVxdWVzdF9jb250
ZXh0PWIiIiwgY2VydGlmaWNhdGVzPVsoQ0VSVElGSUNBVEVfREFUQSwgYiIiKV0KKyAgICAgICAg
KQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxNjAwKQorICAgICAgICBwdXNoX2NlcnRpZmljYXRl
KGJ1ZiwgY2VydGlmaWNhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxv
YWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2VydGlmaWNh
dGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2Vy
dGlmaWNhdGVfdmVyaWZ5LmJpbiIpKQorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRl
X3ZlcmlmeShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuYWxnb3JpdGhtLCB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyaWZ5
LnNpZ25hdHVyZSwgQ0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICB2ZXJpZnkgPSBDZXJ0aWZp
Y2F0ZVZlcmlmeSgKKyAgICAgICAgICAgIGFsZ29yaXRobT10bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBzaWduYXR1cmU9Q0VSVElGSUNBVEVf
VkVSSUZZX1NJR05BVFVSRSwKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcig0MDAp
CisgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZiwgdmVyaWZ5KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJp
biIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9maW5pc2hlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQorICAgICAgICBmaW5pc2hlZCA9
IHB1bGxfZmluaXNoZWQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBmaW5pc2hlZC52ZXJpZnlf
ZGF0YSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
ZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhm
NDA4ZWM2OCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3B1c2hf
ZmluaXNoZWQoc2VsZik6CisgICAgICAgIGZpbmlzaGVkID0gRmluaXNoZWQoCisgICAgICAgICAg
ICB2ZXJpZnlfZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImYxNTc5
MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZmOWFmMjY4ZjQwOGVj
NjgiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTI4
KQorICAgICAgICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgZmluaXNoZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkKKworCitjbGFzcyBW
ZXJpZnlDZXJ0aWZpY2F0ZVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0
aWZpY2F0ZV9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFNFUlZFUl9DRVJURklMRSwg
InJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZSA9IGxvYWRfcGVtX3g1MDlfY2Vy
dGlmaWNhdGVzKGZwLnJlYWQoKSlbMF0KKworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRs
cy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVy
bl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKworICAgICAgICAgICAgIyBm
YWlsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRp
ZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoY2VydGlm
aWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgInVu
YWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIgorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAorICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2No
YWluX3NlbGZfc2lnbmVkKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1
cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVp
Yy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5y
ZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAg
ICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJzZWxmIHNpZ25lZCBjZXJ0
aWZpY2F0ZSIpCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZp
Y2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNl
cmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1j
ZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICkKKworICAgIEBwYXRjaCgiYWlvcXVpYy50bHMubGliLlg1MDlfU1RPUkVfbmV3
IikKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5faW50ZXJuYWxfZXJyb3Io
c2VsZiwgbW9ja19zdG9yZV9uZXcpOgorICAgICAgICBtb2NrX3N0b3JlX25ldy5yZXR1cm5fdmFs
dWUgPSB0bHMuZmZpLk5VTEwKKworICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2Vj
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRJbnRlcm5hbEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVz
KHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0
ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9u
KSwgIk9wZW5TU0wgY2FsbCB0byBYNTA5X3N0b3JlX25ldyBmYWlsZWQiKQorCisgICAgZGVmIHRl
c3RfdmVyaWZ5X2RhdGVzKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwg
Y3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNh
dGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgICMg
wqB0b28gZWFybHkKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSAoCisg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZSAtIGRhdGV0aW1lLnRp
bWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJlZCkgYXMgY206CisgICAgICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9
Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNt
LmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKworICAgICAgICAj
IHZhbGlkCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tf
dXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNh
dGUubm90X3ZhbGlkX2JlZm9yZQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRj
aCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2Nr
X3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIKKyAgICAg
ICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRh
LCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgdG9vIGxhdGUKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlv
cXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25v
dy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIgKyBkYXRldGltZS50
aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgc2Vjb25kcz0xCisgICAgICAgICAgICApCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJl
ZCkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAg
ICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVy
X25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIg
dmFsaWQiKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Qoc2VsZik6CisgICAgICAgIGNl
cnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorICAg
ICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNv
ZGluZy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0
aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFsaWQKKyAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAg
ICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIiwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0
cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAndGVzdC5leGFtcGxl
LmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIiwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkg
YXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25h
bWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJob3N0bmFtZSAnYWNt
ZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIKKyAgICAgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0X3dpdGhfc3ViamFsdG5hbWUoc2VsZik6CisgICAgICAg
IGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBh
bHRlcm5hdGl2ZV9uYW1lcz1bIiouZXhhbXBsZS5jb20iLCAiZXhhbXBsZS5jb20iXSwKKyAgICAg
ICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsCisgICAgICAgICAgICBjdXJ2ZT1lYy5T
RUNQMjU2UjEsCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNhdGUucHVibGlj
X2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgIHdpdGggcGF0Y2go
ImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191
dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAg
ICAgICAgICAjIHZhbGlkCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9u
YW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0
aWZpY2F0ZSwgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgaW52YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZp
Y2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNt
LmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICdhY21lLmNvbScgZG9lc24n
dCBtYXRjaCBlaXRoZXIgb2YgJyouZXhhbXBsZS5jb20nLCAnZXhhbXBsZS5jb20nIiwKKyAgICAg
ICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUu
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3NmFjZDdjOQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTUzOAp6Y21kO1BWRXhDeSExe31VXntZVj4+cW1ub21kRkxuT3BIdVNvRDhSUjgp
aW1qMkVgY2d2VDxzKWQ5OzEhV258PUwKeldpYXFIPFRsYEJWLTk2dTZLMEJ0RyptTkMwZGNyXldD
SlFvR1Y9MmpnN2VjIyRgZ3hINzJOVm1eSExIXkdKI153CnpqKXIwZUF8UTNsSmlQZyhNWV9wfXky
WXRRV3ZOOTVhXmsjKDc2dWtabVdDIXEjKWY4NTs9RCF7MklkQ2xQXzk4ZAp6cyYoUTlxOTl8fmRI
OT9ZaSVXNys2JiYrUUdLdnhfNDMhTk9BP31kRT9HOGdCMHxBSTVJQ0p1bzZMVHsxaSVTZmUKejcj
QVVYayYlXnd4cndvIzBWditaKVdxMXhGa2VJOC0wXipWTzBybXoqaEB4e0IrWE0rR2JZKGBUI24y
OWNpezd0CnpCZnQzfj94YncrS0R+TD5KZzFsSnYodF53P3RFYiorYS1NOXpHWnJpJippJVAmaXIx
anRod3peND5LKmN5TUJHQQp6TXh7aXRnbjQ8SCRDVjArPndEJDArYDhGNUduLUg0VUokJU4+MV9Y
WVgweWZEbUNJKyZfajxaXk9XKGQ0dHJnNDkKekttQi1vd2UqZVlIeGo+cG9CSnI1YiVwUWo4Rk1j
JWR8UmV9ZDdEXzReQEotZig9PmhAUGVeJWdebjFzVm88fSpsCnpYfFo+RVVjRW9qYjlxO0Q/PUZ2
cFE3KXp2Q2QtO093QU9QZ3RAJmFoeCRyVWpna15ibCVSO1MleU1GTVdVNj1Kcgp6Q1lvUkEpU0tz
PSkoKSk2eVhSbE9jMmFaeFMybX19OShSVClOMmhhfTFFVSlGY1JtIW9AQGdyNnczfU1YSlZPZ1AK
ejEofH1jYHdYfipqenFyeXg0QnJAJFNTfCppckZidyF5bCNAU0VGWCRfKmdib0A9REBYRUI3eGFK
ezMoYERFe0RFCno+WVome1M+TFhEK2c1czVKQDkkJV80NFE2MT5WXj16Z1EreyhsITV0NSRDXiZg
XyNVXnBZJnNXPmVNVCQ3dnkpYQp6OS1QTHNAWkwxcHVBUlAyJSF+fC1pPD1rXjBBcGtpSTEkTVR2
aFcma0h6Q0MjQTIzI0JgNTc3aXYjPkJUdWBWIT4KejFAVG9gS3h2TGNufmpsYG03U1JwJlNFbSkw
Wjl2a2xydEdIS29zK19oX1EoRHptazF5OUsjXkN4alIyUXxGWH5OCnp0KjJ7MzRRZkcobTA4TFJO
KllBJj9tdTx3KityOUc9QjB8S0BASHtxZEB8a1V1YHFDbktiMTJANkZtMXQ4I0ZlPAp6OUx+dGRR
Zl5SY1U8MmJERnRyKEVsI349JD5GYnhJN01DT14+SkAtPEFjJil2bXMkYzkpaTA8X1BFMVpNRCR4
VEgKejJCdlZgakJUMzQ9Kn58ckYzPmt7MV9ncFZpO2FQbWZ5RHh8MXR4N3EjT04oYkVkeXBWUHpq
KXlUJEY+SCVZWCQ1CnpGcWJ0bHNESkg9NiE+IU54ZHl9alVBQCk5JXBZWnojY3lUe1U4MXp9X05K
P0RkJXlHQ2I8VyNUblZQUTFxWlJ0agp6cHw1clJlRH5kNFRFNSMtTkBnc21Vdzd4RC1mZ0ZIaTNn
P0tZTmk+NzlwN2YzQ0A7Iy1uaVUoRyRARGlXPFY1KUMKejRYTW14a042b1pYUW5OZi03IzdHUUl1
fF9ZNWVyP2lYLWQ0Jld2a1llT1lqPSlGUiRySz58RGY/Vm8kal8tNU90CnpJYnVKcW0yITA1PTZi
cUNUZGFQfFBwJGNmRk9eP0VuPTFEdU5BN2p4JkpYTTJtJmwqLUk8bThCPDtgclA0Q3t4Zgp6OChP
d2NJSWB+RjdqdThiMV40RCNaRzN1MGozdiNVK3dxUSp0JUJXfj9OaFopISstNm8tKTZQemx6K3Mo
UWFnQEwKem90X1BgZE90ZV93MH1DZmBQKHBUU0hHTzlxOUx4Vlg2Vz4pJlRzT1E+V3ErNl5XOHFi
Kk04WmB2JGJXQFJhMjlPCnpRdGJ+RG0zTUczX1UrXmZ4JEBnMj0tKkEoNC1NQWE0KDJ5cWw+Y1BT
QHklYDdIMSRPOTIlez1LKn5wX1ZZdlpJVQp6alNwVTcpJVV1NSFeeEBGXztLPjd0TEBXZ2B8Z2xw
SHJYdzZpT0RgdmBIXnglTkFqVCRpO2BEI0djVylFVUxyfTQKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZjA4Mzk1MGI1MzhjMTIzZWI5ZWRjOGZjYmVkOTJlMTkzMjk1NzM1CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAzOTIKemNtVjszMGVBaW4wMEQjdTFPYjQ4ck91PTljT2QwQXZ2MyU5
QzI9bSU3PXIqIyE8YiZhPld7JUclfFdDT0BgclZhCnpsOzhHemVsQDVzJlZpWDc2eDs7flJXJjde
eiVBenUpZil6bEdDK0k2Tz9wY3MhfTxtKDNBWG0qYmhucVgoIS1HWgp6byE0fkJYUmAkWXpHUD1U
ZSZofD5UP2UjVDxJZFdobzVeMEBoZlh3RFU3OUJweUFSM0peP2FAQngzIUB+QkprTTUKekgxPUFE
JjEhRGZ4MnJ4Yz1mJl9qZCpmJTRsLVZsbUUyNkV4dkUqYWImcE5ONzE+bHlDP1hsO2xOTDx1V0Q2
fGUzCnpgRj5FNHZ1MkE5NUA3YSpkKkp8V0BtJkI3c0xublFyen5zKHQ7TGlQPDI9PTEkfX0yZExN
PTE4P28mM2IrPmI/dgp6MV5fRn4jbXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQqUGFKNzdUeFhkYXww
QmRsMzY+ajFDQzBhVE9iOzg4cVpDNSgKemFiSTNZS21FalpxSHxTMVZGWmJJQVl+S0heeyVZZW5g
VT9TJlgob1dtNUR8UU0jc2JIR0Z3XyRveTh7UTNfX0JYCm07e2A+ejg+UFNHOGpXVGAwISV5bjgm
SFd+dEhDJihaKCRFdHlVTVFBUTJ8QDhYVEFGWAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNDBhZWNmYzY5
ZmI4NGQ1YmVkNmIxYWFjOTE2MmVjMTNhMDQ2ODYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1
OAp6Y21aUSVWRUQoKEVVe15tXzIoenZ1fGE0NFJsVjYwfEl1Jmw7bWUtQ19CWiR6ZW9TM2dfV1l7
Q3Rhblh8RjE4JiEKelpNMGJQPUFDfkdVUSo2bzdkKWJaa0xeRG5kZUNUKmt0cVk0RnExSCZGZiRf
cSErSGl8MjZxTm0yNXw7UW1nO3x0CnpVRUU0ZFMpRyElJEclVEV8RXRMJU4+TXVGO19GYDdEU3Fr
ZWVvUWB8NzhPIV8hUlkqWXJSQkRaYG5JZShePzxTTgp6cUg2Zm9POEZUSlUtKmt8Vjk7alo8WH5w
MG0jTFNvbXR4PiQ7OX10NVV9MGZxVlBzK2l2Uk4zSWZWU3V8RmZsVXoKeVUmPihxcE1nUDshSHxL
S2Z1JXUhZnF7VnlPMHo/MDc2ejZecGZDZD8xQ3Z0KDB8eF8+TGtpRmdNbEp4JEkjR0g2CgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Ns
aWVudF9oZWxsb193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEzYTNlNzVlMTRkNmQ5MjkwZjVkYTQy
OWEzMjUwMmQ3YzRjMjZjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDYKemNtWlElVkFOd35l
ajZUPnpjK0dAQDJ9TXRuQ35vbWsjT2NWcExvOzNeLU5FektoPG49cEl5ZWx6IyteaSVwfWFyCnpA
U2wtXjtxVSpZNDVrZG00NkY8KzRKLUB7M35XJUU5Wkl0UlgjdD0oMkxtR2AxMUFITUxrYV5VUD43
K18wNE9OSQp6QWpaSFRvU2MoaW52I34yU2ReKztTZWx1dm16PHg9enxGd0klKXJSUnp5KlhINEJg
eTNLKCYkIyUwTjg9S3QzQzUKemhPd0BwQn1nfD1qKTglZkw1QEwmZ18pSV5qaFRhO2dNKSpVZ051
V2tnTjF7WWdOPW9lbTY0NStMN1JiQGlKNjUjCnptd15mQjN9WGcmMjNNZClOMHRzSiF4LW80NGQq
bTlQbCl8e14zdiV8JShtTkUqfFdiWFdpV1FVLWYoNEcoNmI0fgppLV5KUWlGYGhtP0Z8O2pEJjFi
JnhtI0JyPXl1U24lRExyMTZzUlJJKyhNTV9rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Y2OTVjM2E3YjM3YzI3MDE5YWZhNTFhNjA1MjVjYmJjMTA5NjZiOApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIjR21yQXV6Y3NxTkdF
aXtCe29KK1I2Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+OWx4WGAmWSQ7I3p4
R2VkOFV7OURDU2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlXS2R7VzlgUy1QfV9X
M1YqWTkwJTBzKExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5eDNBCnopJShsLVVI
T3xHKW1YTmNMN1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/XjZnK00+KEEjS18z
Tgp6eiN6alEjbFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERUNjd7VTkxYyY0Rlcq
NVkqM21WTzB6SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9AXkhlRWV2KFBIczdo
T3syYUhgWnF8SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEzZUcpdEA1NXtrb1ZP
anBNZE1xaT1QRWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+QDNIbz50Kl4+UUNn
P1NIJVktVms/dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3RWhuJXp0V3JSR2F6
RVZsWHJpP154Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYkYT4jTnFNClN1R311
JXVDS2tSTCprVEZIWHtJQ0FGQGdTCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU2OGE4NjE2N2ZmMTYxODMxZjNlOTc5ZTc0NTAyYzMwM2UxNmE1ZQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjg2CnpjbVpRJVYzY0JKbz5BTHJCRXJxKGJTQmk1VUVZM3ZlZDA5Uj5KKm1PPXt+
KnQwP2stVnZLNz1lJmMxN0tgK0ZjYAp6bCRGPis+I0d4KD9tdG8zS0ooSmp2dkdudWVwUjFOVl8q
fHo1QHItO1dAS1BFJjB4Jm4mZnYtKiZmdihoT31GNEQKemB3NVk9c1RhT21jaDhoKCtzOyFpWTlH
PWZ1eUVwfmpuaCpXeSpaR094fUBSIyU3LTYkZFkzJm56cTxjYF92NyF5CnprR09iZCkoMzcpNV44
V0AmfVFKfFV9bVk4c2g2Jm9WJkctcVYmTEZsVlBSJXJXTVR4ZVNzMGpydyYqZjJGI0BlKwp6a1lF
c0ZVPVU4dSR1Q1Z3JVNrTHMpaCNUfE94OD16Jjs3clkhVGRpMWdDSyg7MTFrZWRnOCkhMTg8Yns7
KGt1KXQKWGpYK0ByTWd9SVEybkclWUNXalFEYEhXbHUxfENyVAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5z
aW9ucy5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3Mzk3NTUzZWE2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MAp6Y21kO0pVPGhMZmBNO0RROzZEUntBUGIwS2FBamEr
VX0rRndVfD9XXygoRiowZ0BMNkpEOXBnZnp+bUljentDSmoKUWc5PG5wbT5nMFZ4RUw2QDA0fVR1
KiNIMGwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDg0MzZhN2IzMzgzMDc3ZjRhMzlhZDMxOGE1OGIyOGUzYmQzNTcyCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwxLTg2cHxOOFEyKEQ4
V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUzKjErNCNuRj5vXzVO
LXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5dlFWMVFSCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlf
ZGF0YS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5MDY5ZjZiZTNkMmU0NTdlNjNjOTQyZmM5ZjA1NGNkYmFj
NGE5MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE2CnpjbWQ7SlU/XmI3ViptakcxYFktYCl7
SGAzQkxmQzQyOFJEajhOd0pzNz8+Q1ljdXhsYGFTQWs9eCtRKH5kWTAzMQp6fE5uT31hR3FISVRx
fTlIWTZ2PzY4dnshTiF+ZyQ0JjVTQE1raStgXzdYdkYpa2VQd1d7UnNtWDEweXA3QkxoPnEKSzAw
VER6cWEqLW9fOFo2bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Zp
bmlzaGVkLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0YWI3OTRmMzllZjc3
NmZkNWZhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNgp1Y21WKzwwTmVpKjAwMUVJU0NUUmB8
QyZpNXNAcENPJEZaWGkmVTU+b3p7RHFTbih9RCQyPCZKYU5ELVI9CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3Rp
Y2tldC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQzOWI0NzMxZTA0YjNiNmQ2ZDNhNjE1ZmMzM2RlNWRmNzQ2Y2Y1YgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkmfENmZ1RuMStBRDM1RTlC
fDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZFR1JPMER3anFKXiVtIQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Mzc5Mjg5MGFjZTc1MTNjZmI1YWExOGEzNzNhOTQ5ZjQxZGI4Y2Nm
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NAp6Y21aUSFWNmI2ZTN+Vl5eWSZ8Q2ZnVG4xK0FE
MzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUViQ1lAPHkKVDtBaFpjVkVHUk8yOV54V1k1
RG04RjtmfSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGE2YzUxZmU1NjAyOTUxM2I4MzhjNmQyNDMxOWNl
NWM4ZmZkYmY0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTUKemNtVjtNMEEmOUgwMDVUKjFG
ZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ayc0VBSTJmRlBSZ2Z9K3VlCnohT0pxRURj
UmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMihfRCp5cm0xT1BKdE1GMUI3Sz9JOEAmP3E4
OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFsaUNvR1lQJkBFOWlwRzxDSEF4Wj9afVRN
KENjTDRRamVqX0UKSjdSV20wJiQxTipLe0B+YwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlY2NkZjU5YWI5NWU4OWU0MDRjZTIzNGRiM2Y4MWQxOGRlMWUwZWIKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3QjAwNWw+MUkpVXcxcEZKLTZndz0meHBnNFZI
YHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQKel52PU8+aE9tVHwwbDtHPlYkRjY9ZnshbldG
SEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdLP0hAQCZkY2xrCnpSRkI0Mnpmcmo4K0pxYFZS
PFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NTdlkhQTV7bmk9YyYqNGw3bi1kQgpQKGBATm9W
cy0jMjAwSUMyNkkoO2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlNWI3MDczZmRiZTNjYjdiZmZiNzE4YjE0NmRlMjUxMDgz
YmVkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYyCnpjbVY7VDBBMnFBMDA1bz8xRmZpMWFu
WTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6IU9KcUVEY1JpcTA3
QER8aXFKP31RXnZvflJsemMlR0JwemQwMDM0MUQqeXJtMU9QSnRNRjFCN0s/SThAJj9xODgKeipo
XyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hBeFo/Wn1UTShDY0w0
UWplal9FClE3UldtMCYkMkslMDBVLWtafFJkbF95N09eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiYWIyYjY4YTI0OGZiYzUzNDBmMjNlMmE3OTc2
NzA1MGE1ZjVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5w
eQpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gY3J5cHRvZ3JhcGh5IGlt
cG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0IGRlZmF1
bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhh
c2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBv
cnQgZWMKKworCitkZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9uX25hbWUsIGN1cnZl
PWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgorICAgIGtleSA9IGVjLmdlbmVy
YXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1cnZlPWN1cnZlKQor
CisgICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKKyAgICAgICAgW3g1MDkuTmFtZUF0
dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1lKV0KKyAgICApCisK
KyAgICBidWlsZGVyID0gKAorICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVpbGRlcigpCisgICAg
ICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgLmlzc3Vlcl9uYW1lKGlzc3VlcikK
KyAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKKyAgICAgICAgLnNlcmlhbF9u
dW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAgICAubm90X3ZhbGlkX2Jl
Zm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKKyAgICAgICAgLm5vdF92YWxpZF9hZnRl
cihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVkZWx0YShkYXlzPTEw
KSkKKyAgICApCisgICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6CisgICAgICAgIGJ1aWxkZXIgPSBi
dWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAgICB4NTA5LlN1YmplY3RBbHRlcm5hdGl2
ZU5hbWUoCisgICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBmb3IgbmFtZSBpbiBh
bHRlcm5hdGl2ZV9uYW1lc10KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBjcml0aWNhbD1G
YWxzZSwKKyAgICAgICAgKQorICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5LCBoYXNoZXMuU0hB
MjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQorICAgIHJldHVybiBjZXJ0LCBrZXkKKworCitkZWYg
bG9hZChuYW1lKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksIG5hbWUpCisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICBy
ZXR1cm4gZnAucmVhZCgpCisKKworZGVmIHJ1bihjb3JvKToKKyAgICByZXR1cm4gYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQorCisKK1NFUlZFUl9DQUNF
UlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJweWNhY2Vy
dC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFX1dJVEhfQ0hBSU4gPSBv
cy5wYXRoLmpvaW4oCisgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtIgorKQorU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKK1NLSVBfVEVTVFMgPSBmcm96ZW5zZXQo
b3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxpdCgiLCIpKQorCitp
ZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgorICAgIGxvZ2dpbmcuYmFzaWNDb25m
aWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKKworaWYgKAorICAgIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMworICAgIGFuZCBzeXMudmVy
c2lvbl9pbmZvLm1pbm9yID09IDgKKyk6CisgICAgIyBQeXRob24gMy44IHVzZXMgUHJvYWN0b3JF
dmVudExvb3AgYnkgZGVmYXVsdCwKKyAgICAjIHdoaWNoIGJyZWFrcyBVRFAgLyBJUHY2IHN1cHBv
cnQsIHNlZToKKyAgICAjCisgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM5MTQ4
CisKKyAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lvLldpbmRvd3NTZWxl
Y3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3Rp
YXRpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTA5YzkwOTljZWE4YWVlMjhkZWZmYjU1MDYyZDM5M2Qx
YzNiYTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxCmxjbWFGRzAwYlBmKTxrKmtZRzJ7V0Bs
KVR+P0FLSzNnfDY9SVYqZVEhQm11SUozaitXRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGYxM2UxYjJjMzc1M2UyODY5M2Zh
ZTIzODI1MmFmNjdhNzg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSw1NyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfY2xpZW50LmJpbgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvcHljYWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0
LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5j
aW8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9oMC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF90bHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlLmJpbgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50
X2hlbGxvX3dpdGhfYWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
b193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRo
X3NuaS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9h
bHBuX2FuZF9lYXJseV9kYXRhLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQu
YmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXQuYmluCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsby5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy92ZXJzaW9uX25l
Z290aWF0aW9uLmJpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNGVjOTVjOWExNjE2N2Nj
M2VjMGMzMTczNTMyYzU0MDBjMTE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL0xJ
Q0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJz
dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L0NPTlRSSUJVVElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc1YmUxMjZmYjQ1ODljODY1OTk0YzU5ZDYxM2Uz
ZDQxYTdhOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVU
SU5HCkBAIC0wLDAgKzEsMzAgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKworV2UnZCBsb3ZlIHRv
IGFjY2VwdCB5b3VyIHBhdGNoZXMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0LiBU
aGVyZSBhcmUKK2p1c3QgYSBmZXcgc21hbGwgZ3VpZGVsaW5lcyB5b3UgbmVlZCB0byBmb2xsb3cu
CisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50CisKK0NvbnRyaWJ1dGlvbnMgdG8g
dGhpcyBwcm9qZWN0IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBDb250cmlidXRvciBMaWNlbnNl
CitBZ3JlZW1lbnQuIFlvdSAob3IgeW91ciBlbXBsb3llcikgcmV0YWluIHRoZSBjb3B5cmlnaHQg
dG8geW91ciBjb250cmlidXRpb247Cit0aGlzIHNpbXBseSBnaXZlcyB1cyBwZXJtaXNzaW9uIHRv
IHVzZSBhbmQgcmVkaXN0cmlidXRlIHlvdXIgY29udHJpYnV0aW9ucyBhcworcGFydCBvZiB0aGUg
cHJvamVjdC4gSGVhZCBvdmVyIHRvIDxodHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5jb20v
PiB0byBzZWUKK3lvdXIgY3VycmVudCBhZ3JlZW1lbnRzIG9uIGZpbGUgb3IgdG8gc2lnbiBhIG5l
dyBvbmUuCisKK1lvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1pdCBhIENMQSBvbmNlLCBz
byBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCisoZXZlbiBpZiBpdCB3YXMgZm9yIGEg
ZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBkbyBpdAorYWdh
aW4uCisKKyMjIENvZGUgcmV2aWV3cworCitBbGwgc3VibWlzc2lvbnMsIGluY2x1ZGluZyBzdWJt
aXNzaW9ucyBieSBwcm9qZWN0IG1lbWJlcnMsIHJlcXVpcmUgcmV2aWV3LiBXZQordXNlIEdpdEh1
YiBwdWxsIHJlcXVlc3RzIGZvciB0aGlzIHB1cnBvc2UuIENvbnN1bHQKK1tHaXRIdWIgSGVscF0o
aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvYWJvdXQtcHVsbC1yZXF1ZXN0cy8pIGZv
ciBtb3JlCitpbmZvcm1hdGlvbiBvbiB1c2luZyBwdWxsIHJlcXVlc3RzLgorRm9yIGluc3RydWN0
aW9ucyBmb3IgY29udHJpYnV0aW5nIGNvZGUsIHBsZWFzZSByZWFkOgoraHR0cHM6Ly9naXRodWIu
Y29tL2dvb2dsZS9weXdlYnNvY2tldC93aWtpL0NvZGVSZXZpZXdJbnN0cnVjdGlvbgorCisjIyBD
b21tdW5pdHkgR3VpZGVsaW5lcworCitUaGlzIHByb2plY3QgZm9sbG93cworW0dvb2dsZSdzIE9w
ZW4gU291cmNlIENvbW11bml0eSBHdWlkZWxpbmVzXShodHRwczovL29wZW5zb3VyY2UuZ29vZ2xl
L2NvbmR1Y3QvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWJlYTkwMjU0Mjg3NzllMTY0NDU5
YzJhMTIwZTFhMDdhYTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9M
SUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24u
CisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZF
U1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5NzllNjNlNGEw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCkBAIC0w
LDAgKzEsNiBAQAoraW5jbHVkZSBDT1BZSU5HCitpbmNsdWRlIE1BTklGRVNULmluCitpbmNsdWRl
IFJFQURNRQorcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5CityZWN1cnNpdmUtaW5jbHVk
ZSBtb2RfcHl3ZWJzb2NrZXQgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9S
RUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3Y2JlNTUwYzA2NTc4MmIwZTMxNWRlMDQ2NTFjOWUwNjhj
YjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZApAQCAt
MCwwICsxLDM2IEBACisKKyMgcHl3ZWJzb2NrZXQzICMKKworVGhlIHB5d2Vic29ja2V0IHByb2pl
Y3QgYWltcyB0byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUpIHN0YW5kYWxvbmUgc2VydmVyLgorCitweXdlYnNvY2tldCBpcyBpbnRlbmRl
ZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBlcmltZW50YWwqKiBwdXJwb3Nlcy4KKworUnVuIHRo
aXMgdG8gcmVhZCB0aGUgZ2VuZXJhbCBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJz
b2NrZXQKK2BgYAorCitQbGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBmb3IgbW9yZSBkZXRh
aWxzLgorCisjIElOU1RBTEwgIworCitUbyBpbnN0YWxsIHRoaXMgcGFja2FnZSB0byB0aGUgc3lz
dGVtLCBydW4gdGhpczoKK2BgYAorJCBweXRob24gc2V0dXAucHkgYnVpbGQKKyQgc3VkbyBweXRo
b24gc2V0dXAucHkgaW5zdGFsbAorYGBgCisKK1RvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6CisKK2BgYAorJCBweXRob24gc2V0dXAucHkg
YnVpbGQKKyQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCitgYGAKKyMgTEFVTkNIICMK
KworVG8gdXNlIHB5d2Vic29ja2V0IGFzIHN0YW5kYWxvbmUgc2VydmVyLCBydW4gdGhpcyB0byBy
ZWFkIHRoZSBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3RhbmRhbG9u
ZQorYGBgCisjIERpc2NsYWltZXIgIworVGhpcyBpcyBub3QgYW4gb2ZmaWNpYWxseSBzdXBwb3J0
ZWQgR29vZ2xlIHByb2R1Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
YWJvcnRfaGFuZHNoYWtlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRf
aGFuZHNoYWtlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjcxOWNhODk3MzcxMDU3MTljNzFjMmE0MmVh
ZmYwZDQ2NDQ3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbigKKyAgICAgICAgIkFib3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ui
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNGMyNDBiZjJjMWNiMGJkNTM4ZWMzN2JmNTUxYzExMjU2Mzk2YjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkK
QEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAiQWJvcnRlZCBpbiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODY5Y2Q3ZTFlZTY1M2Q1OWYwNGI4MDJmZjM0YzhkMDgxMzE3Y2E4OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVu
Y2htYXJrLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitk
aXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIFBSSU5U
X1NJWkUgPSB0cnVlOworCisvLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgordmFyIFNUQVJUX1NJ
WkUgPSAxMCAqIDEwMjQ7CisvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBh
cnJheSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgordmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAw
ICogMTAyNDsKKy8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3Jl
YWQgdGhlIGFycmF5IG11bHRpcGxlIHRpbWVzCisvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJl
YWNoZXMgdGhpcyB0aHJlc2hvbGQuCit2YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKK3Zh
ciBNVUxUSVBMSUVSUyA9IFs1LCAyXTsKKworLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJh
bCB0aW1lcyB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAorLy8gKHN1Y2ggYXMg
SklUKSBydW4uCit2YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOworCitmdW5jdGlvbiB3cml0ZUJl
bmNobWFyayhzaXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUg
KHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKHNpemUpOworCisgICAgLy8gV3JpdGUgJ2Ency4KKyAgICBmaWxsQXJyYXlCdWZmZXIo
YXJyYXlCdWZmZXIsIDB4NjEpOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0
dXJuIHRvdGFsU2l6ZTsKK30KKworZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3Rh
bCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFs
KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAg
aWYgKCF2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKKyAgICAgIHF1ZXVl
TG9nKCdWZXJpZmljYXRpb24gZmFpbGVkJyk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg
ICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworZnVu
Y3Rpb24gcnVuQmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKKyAgICAgICAg
ICAgICAgICAgICAgICBtaW5Ub3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVy
cywKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKKyAgd2hpbGUgKHNp
emUgPD0gc3RvcFRocmVzaG9sZCkgeworICAgIHZhciBtYXhTcGVlZCA9IDA7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKKyAgICAgIHZhciBzdGFy
dFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5j
aG1hcmtGdW5jdGlvbihzaXplLCBtaW5Ub3RhbCk7CisKKyAgICAgIG1heFNwZWVkID0gTWF0aC5t
YXgobWF4U3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5L
Qih0b3RhbFNpemUsIHN0YXJ0VGltZUluTXMpKTsKKyAgICB9CisgICAgcXVldWVMb2coZm9ybWF0
UmVzdWx0SW5LaUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKKworICAgIHNpemUgKj0g
bXVsdGlwbGllcnNbbXVsdGlwbGllckluZGV4XTsKKyAgICBtdWx0aXBsaWVySW5kZXggPSAobXVs
dGlwbGllckluZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7CisgIH0KK30KKworZnVuY3Rp
b24gcnVuQmVuY2htYXJrcygpIHsKKyAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNw
ZWVkIGluIGtCL3MnKTsKKworICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7CisgIHJ1bkJl
bmNobWFyaygKKyAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9M
RCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwor
CisgIHF1ZXVlTG9nKCdSZWFkIGJlbmNobWFyaycpOworICBydW5CZW5jaG1hcmsoCisgICAgICBy
ZWFkQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxU
SVBMSUVSUywgMCk7CisgIGFkZFRvTG9nKCdGaW5pc2hlZCcpOworfQorCitmdW5jdGlvbiBpbml0
KCkgeworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisKKyAgcXVl
dWVMb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisKKyAgYWRk
VG9Mb2coJ1N0YXJ0ZWQuLi4nKTsKKworICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzx0ZXh0YXJl
YQorICAgIGlkPSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5Pjwv
dGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hf
d3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkZjUwZTc3ZGIyNzZjY2ExZGU0NzIwNTlhMDc0MDcxYjgxYTkz
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dz
aC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkEgc2ltcGxlIGxvYWQg
dGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KKworQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBh
IG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCit0aGlz
IGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNv
Y2tldCBtZXNzYWdlcworY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMu
IDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAordmFsdWUuIDxjb3VudD4gbXVzdCBiZSBh
biBpbnRlZ2VyIHZhbHVlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgdGltZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3
YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgIHBhcnRz
ID0gbGluZS5zcGxpdCgnICcpCisgICAgaWYgbGVuKHBhcnRzKSAhPSAzOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdCYWQgcGFyYW1ldGVyIGZvcm1hdCcpCisgICAgd2FpdCA9IGZsb2F0KHBh
cnRzWzBdKQorICAgIGNvdW50ID0gaW50KHBhcnRzWzFdKQorICAgIG1lc3NhZ2UgPSBwYXJ0c1sy
XQorICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKKyAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxZTVjOTdiM2E3MWJjZjllYmRlN2M0ZmNhZjE1Mzc1Mzg5YjFjNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCkBA
IC0wLDAgKzEsMTc1IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgor
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0Eg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgYmVuY2htYXJrPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGFk
ZHJlc3NCb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRDb25maWcoKSB7CisgIHJldHVybiB7Cisg
ICAgcHJlZml4VXJsOiBhZGRyZXNzQm94LnZhbHVlLAorICAgIHByaW50U2l6ZTogZ2V0Qm9vbEZy
b21DaGVja0JveCgncHJpbnRzaXplJyksCisgICAgbnVtU29ja2V0czogZ2V0SW50RnJvbUlucHV0
KCdudW1zb2NrZXRzJyksCisgICAgLy8gSW5pdGlhbCBzaXplIG9mIG1lc3NhZ2VzLgorICAgIG51
bUl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtaXRlcmF0aW9ucycpLAorICAgIG51bVdh
cm1VcEl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtd2FybXVwaXRlcmF0aW9ucycpLAor
ICAgIHN0YXJ0U2l6ZTogZ2V0SW50RnJvbUlucHV0KCdzdGFydHNpemUnKSwKKyAgICAvLyBTdG9w
cyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBtZXNzYWdlIGV4Y2VlZHMgdGhpcyB0aHJlc2hv
bGQuCisgICAgc3RvcFRocmVzaG9sZDogZ2V0SW50RnJvbUlucHV0KCdzdG9wdGhyZXNob2xkJyks
CisgICAgLy8gSWYgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlIGlzIHNtYWxsLCBzZW5kL3JlY2Vp
dmUgbXVsdGlwbGUgbWVzc2FnZXMKKyAgICAvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNo
ZXMgdGhpcyB0aHJlc2hvbGQuCisgICAgbWluVG90YWw6IGdldEludEZyb21JbnB1dCgnbWludG90
YWwnKSwKKyAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGll
cnMnKSwKKyAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyks
CisgICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogYWRkVG9TdW1tYXJ5
LAorICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAorICAgIG5vdGlmeUFib3J0OiBub3Rp
ZnlBYm9ydAorICB9OworfQorCitmdW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7CisgIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ3NlbmRCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rpb24gb25SZWNlaXZl
QmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNv
bmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7
Cit9CisKK2Z1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7CisgIHZhciBjb25maWcgPSBnZXRD
b25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ2JhdGNoQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3RvcCgpIHsKKyAgdmFyIGNv
bmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tC
b3goJ3dvcmtlcicpLCAnc3RvcCcpOworfQorCitmdW5jdGlvbiBpbml0KCkgeworICBhZGRyZXNz
Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgbG9nQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisgIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOworCisgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRp
b24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZh
dWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtf
aGVscGVyJzsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7CisKKyAgYWRk
VG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisgIGFkZFRv
U3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKKworICBp
ZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBp
cyBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBpbml0V29ya2VyKCcnKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8ZGl2IGlkPSJiZW5jaG1hcmtf
ZGl2Ij4KKyAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgor
ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2ht
YXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0i
b25SZWNlaXZlQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0
Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+CisKKyAgPGJyLz4KKworICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9InBy
aW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+CisgIDxpbnB1
dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9
InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KKyAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0id29ya2VyIj4KKyAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJl
bD4KKworICA8YnIvPgorCisgIFBhcmFtZXRlcnM6CisKKyAgPGJyLz4KKworICA8dGFibGU+Cisg
ICAgPHRyPgorICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwvdHI+CisgICAg
PHRyPgorICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KKyAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwv
dHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8
L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYQorICAgICAgaWQ9ImxvZyIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2
PgorPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgorICBTdW1tYXJ5CisgIDx0ZXh0YXJlYQorICAgICAg
aWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4
dGFyZWE+Cis8L2Rpdj4KKworTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWluYXRlZC4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzAxNDcyYTRmYWFjNDQ2YjFjOGJkMjQ1NmYyNzFlOTM0ZGI1NzFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKQEAg
LTAsMCArMSwyMzggQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCitpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7CisgIC8v
IFJ1bm5pbmcgb24gYSB3b3JrZXIKKyAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dv
cmtlci5qcycpOworfQorCisvLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KK3ZhciBi
ZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07CisKK3ZhciBzb2NrZXRzID0gW107Cit2YXIg
bnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKwordmFyIHRpbWVySUQgPSBudWxsOworCitmdW5j
dGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgeworICBzb2NrZXQub25vcGVuID0gbnVsbDsKKyAg
c29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7CisgIHNvY2tldC5vbmVycm9yID0gbnVsbDsKKyAgc29j
a2V0Lm9uY2xvc2UgPSBudWxsOworICBzb2NrZXQuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gZGVz
dHJveUFsbFNvY2tldHMoKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7
ICsraSkgeworICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7CisgIH0KKyAgc29ja2V0cyA9
IFtdOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2Fy
bVVwKSB7CisgIHRpbWVySUQgPSBudWxsOworCisgIHZhciB0b3RhbFNpemUgPSAwOworICB2YXIg
dG90YWxSZXBsaWVkID0gMDsKKworICB2YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBldmVudC5kYXRh
LCBzaXplKSkgeworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFsUmVwbGllZCArPSBz
aXplOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2FybVVwKTsKKworICAg
IHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2Nr
ZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07CisgICAgc29j
a2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICB2YXIgZGF0YUFycmF5
ID0gW107CisKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHZh
ciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBmaWxsQXJyYXlCdWZmZXIo
YnVmZmVyLCAweDYxKTsKKworICAgIGRhdGFBcnJheS5wdXNoKGJ1ZmZlcik7CisgICAgdG90YWxT
aXplICs9IHNpemU7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHRvdGFsU2l6ZSA9IDA7CisKKyAgdmFyIHNvY2tldEluZGV4ID0gMDsKKyAg
dmFyIGRhdGFJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwp
IHsKKyAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOworICAgIGNvbW1hbmQucHVzaChjb25maWcu
dmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChj
b21tYW5kLmpvaW4oJyAnKSk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChkYXRhQXJy
YXlbZGF0YUluZGV4XSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNv
Y2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgICAgKytkYXRhSW5kZXg7
CisgIH0KK30KKworZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBp
c1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxTaXplID0gMDsKKyAg
dmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5ieXRlTGVuZ3Ro
OworICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKKyAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCisgICAgICAgICAgYnl0
ZXNSZWNlaXZlZCArICdCJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29u
ZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbmZp
Zy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVudC5kYXRhLCAweDYxKSkgewor
ICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmljYXRpb24gZmFpbGVkJyk7Cisg
ICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7
CisKKyAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJr
LnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKKyAgICAgICAgaXNXYXJtVXApOworCisgICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKKyAgfTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMu
bGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKKyAgICBzb2NrZXQu
YmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7CisgICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVz
c2FnZUhhbmRsZXI7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBj
b25maWcubWluVG90YWwpIHsKKyAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKCdyZWNlaXZl
ICcgKyBzaXplKTsKKyAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0
cy5sZW5ndGg7CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorfQorCitmdW5jdGlvbiBj
cmVhdGVTb2NrZXQoY29uZmlnKSB7CisgIC8vIFRPRE8odHlvc2hpbm8pOiBBZGQgVENQIHdhcm0g
dXAuCisgIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOworCisgIGNvbmZpZy5hZGRUb0xvZygn
Q29ubmVjdCAnICsgdXJsKTsKKworICB2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
ICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBjb25maWcuYWRkVG9M
b2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRpbmcuJyk7CisgIH07CisgIHNv
Y2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdFcnJvcicp
OworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgY29uZmln
LmFkZFRvTG9nKCdDbG9zZWQnKTsKKyAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgfTsKKyAg
cmV0dXJuIHNvY2tldDsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7Cisg
IGNsZWFyVGltZW91dCh0aW1lcklEKTsKKyAgZGVzdHJveUFsbFNvY2tldHMoKTsKKworICBudW1F
c3RhYmxpc2hlZFNvY2tldHMgPSAwOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVNvY2tldHM7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQoY29uZmlnKTsK
KyAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICBjb25maWcuYWRkVG9Mb2co
J09wZW5lZCcpOworCisgICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKKworICAgICAgaWYg
KG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgeworICAgICAgICBydW5O
ZXh0VGFzayhjb25maWcpOworICAgICAgfQorICAgIH07CisgICAgc29ja2V0cy5wdXNoKHNvY2tl
dCk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgeworICByZXR1
cm4gJyhXZWJTb2NrZXQnICsKKyAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAi
dW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCisgICAgJywgbnVtU29ja2V0cz0nICsg
Y29uZmlnLm51bVNvY2tldHMgKworICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1J
dGVyYXRpb25zICsKKyAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCisg
ICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCisgICAgJywgbnVtV2FybVVwSXRl
cmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKworICAgICcpJzsKK30KKwor
ZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnQmF0
Y2ggYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIGFk
ZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRp
bmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKworICAgICAgZ2V0Q29uZmlnU3Ry
aW5nKGNvbmZpZykpOworICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiBj
bGVhbnVwKCkgeworICBkZXN0cm95QWxsU29ja2V0cygpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxNzUz
MzMzNTRjYzljODg1NjJjZjZmYzgxZWYzMjYwOTM3Mjk4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKQEAgLTAsMCAr
MSw4NCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4i
IiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4CisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCisgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBkYXRh
ID0gYicnCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjb21tYW5kID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgY29tbWFuZCBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWFuZCwgc2l4
LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1h
bmQgZGF0YTonICsgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZHMgPSBjb21tYW5kLnNwbGl0KCcg
JykKKyAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6ICcgKyBjb21tYW5kKQorCisgICAgICAgIGlm
IGNvbW1hbmRzWzBdID09ICdyZWNlaXZlJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsgY29t
bWFuZCkKKyAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0pCisKKyAgICAgICAgICAg
ICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSBz
aXplOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiJ2EnICogc2l6ZQorICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQorICAgICAgICBl
bGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWNlaXZlIGNvbW1hbmQnICsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKKyAgICAgICAgICAgIHZlcmlmeV9kYXRhID0g
Y29tbWFuZHNbMV0gPT0gJzEnCisKKyAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LndzX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgbm90IHJlY2VpdmVkJykKKyAgICAg
ICAgICAgIHNpemUgPSBsZW4oZGF0YSkKKworICAgICAgICAgICAgaWYgdmVyaWZ5X2RhdGE6Cisg
ICAgICAgICAgICAgICAgaWYgZGF0YSAhPSBiJ2EnICogc2l6ZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmljYXRpb24gZmFpbGVkJykKKworICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHN0cihzaXplKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZDog
JyArIGNvbW1hbmRzWzBdKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjAwMDVmZmVhOTkwNWQ2YzE5N2MwZjRk
ZDU5M2MwNmZmNDM3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw3MCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc3RydWN0CisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5lLnNwbGl0KCcgJywgMSkKKyAgICAgICAgaWYg
Y29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oaW50KGNvZGUpLCByZWFzb24p
CisgICAgICAgICMgY2xvc2VfY29ubmVjdGlvbigpIGluaXRpYXRlcyBjbG9zaW5nIGhhbmRzaGFr
ZS4gSXQgdmFsaWRhdGVzIGNvZGUKKyAgICAgICAgIyBhbmQgcmVhc29uLiBJZiB5b3Ugd2FudCB0
byBzZW5kIGEgYnJva2VuIGNsb3NlIGZyYW1lIGZvciBhIHRlc3QsCisgICAgICAgICMgZm9sbG93
aW5nIGNvZGUgd2lsbCBiZSB1c2VmdWwuCisgICAgICAgICMgPiBkYXRhID0gc3RydWN0LnBhY2so
JyFIJywgaW50KGNvZGUpKSArIHJlYXNvbi5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgIyA+IHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2Nsb3NlX2ZyYW1lKGRhdGEpKQor
ICAgICAgICAjID4gIyBTdXBwcmVzcyB0byByZS1yZXNwb25kIGNsaWVudCByZXNwb25kaW5nIGNs
b3NlIGZyYW1lLgorICAgICAgICAjID4gcmFpc2UgRXhjZXB0aW9uKCJjdXN0b21pemVkIHNlcnZl
ciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UiKQorCisKK2RlZiB3ZWJfc29ja2V0X3Bhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBTaW1wbHkgZWNobyBhIGNsb3Nl
IHN0YXR1cyBjb2RlCisgICAgY29kZSwgcmVhc29uID0gcmVxdWVzdC53c19jbG9zZV9jb2RlLCBy
ZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisgICAgIyBweXdlYnNvY2tldCBzZXRzIHBzZXVkbyBj
b2RlIGZvciByZWNlaXZpbmcgYW4gZW1wdHkgYm9keSBjbG9zZSBmcmFtZS4KKyAgICBpZiBjb2Rl
ID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEOgorICAgICAgICBjb2RlID0gTm9u
ZQorICAgICAgICByZWFzb24gPSAnJworICAgIHJldHVybiBjb2RlLCByZWFzb24KKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29u
c29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4MzQxMWRkZDBiMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCkBAIC0wLDAg
KzEsMzE3IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMg
cmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCEtLQorQSBzaW1w
bGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2NrZXQgc2VydmVyLgorCitUeXBlIGFuIGFkZHJl
c3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5kIGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNo
CitXZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBtZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0
IGlucHV0IGFuZCBjbGljayBzZW5kCit0byBzZW5kIHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50
IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRlIHdpbGwgYmUgc2hvd24KK29uIHRoZSBtaWRk
bGUgdGV4dGFyZWEuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgY29u
c29sZTwvdGl0bGU+Cis8c2NyaXB0PgordmFyIHNvY2tldCA9IG51bGw7CisKK3ZhciBzaG93VGlt
ZVN0YW1wID0gZmFsc2U7CisKK3ZhciBhZGRyZXNzQm94ID0gbnVsbDsKK3ZhciBwcm90b2NvbHNC
b3ggPSBudWxsOwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgbWVzc2FnZUJveCA9IG51bGw7Cit2
YXIgZmlsZUJveCA9IG51bGw7Cit2YXIgY29kZUJveCA9IG51bGw7Cit2YXIgcmVhc29uQm94ID0g
bnVsbDsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICByZXR1cm4gbmV3IERhdGUoKS5n
ZXRUaW1lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBpZiAoc2hvd1RpbWVT
dGFtcCkgeworICAgIGxvZ0JveC52YWx1ZSArPSAnWycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7
CisgIH0KKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdcbicKKyAgLy8gTGFyZ2UgZW5vdWdoIHRv
IGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3NhZ2UuCisgIGxvZ0JveC5zY3JvbGxUb3AgPSAx
MDAwMDAwOworfQorCitmdW5jdGlvbiBzZXRiaW5hcnl0eXBlKGJpbmFyeVR5cGUpIHsKKyAgaWYg
KCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsK
KyAgfQorCisgIHNvY2tldC5iaW5hcnlUeXBlID0gYmluYXJ5VHlwZTsKKyAgYWRkVG9Mb2coJ1Nl
dCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBlKTsKK30KKworZnVuY3Rpb24gc2VuZCgpIHsK
KyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJl
dHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKG1lc3NhZ2VCb3gudmFsdWUpOworICBhZGRUb0xv
ZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7CisgIG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKK30K
KworZnVuY3Rpb24gc2VuZGZpbGUoKSB7CisgIGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2co
J05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgZmlsZXMgPSBmaWxl
Qm94LmZpbGVzOworCisgIGlmIChmaWxlcy5sZW5ndGggPT0gMCkgeworICAgIGFkZFRvTG9nKCdG
aWxlIG5vdCBzZWxlY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKGZp
bGVzWzBdKTsKKyAgYWRkVG9Mb2coJz4gU2VuZCAnICsgZmlsZXNbMF0ubmFtZSk7Cit9CisKK2Z1
bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc1RleHQpIHsKKyAgdmFyIHByb3RvY29scyA9
IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2Nv
bHMubGVuZ3RoOyArK2kpIHsKKyAgICBwcm90b2NvbHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgp
OworICB9CisKKyAgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMCkgeworICAgIC8vIERvbid0IHBh
c3MuCisgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgfSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3Ro
ID09IDEpIHsKKyAgICBpZiAocHJvdG9jb2xzWzBdLmxlbmd0aCA9PSAwKSB7CisgICAgICAvLyBE
b24ndCBwYXNzLgorICAgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgICB9IGVsc2UgeworICAgICAg
Ly8gUGFzcyBhcyBhIHN0cmluZy4KKyAgICAgIHByb3RvY29scyA9IHByb3RvY29sc1swXTsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitmdW5jdGlvbiBjb25uZWN0KCkg
eworICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1ZTsKKyAgdmFyIHByb3RvY29scyA9IHBhcnNl
UHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7CisKKyAgaWYgKCdXZWJTb2NrZXQnIGluIHdp
bmRvdykgeworICAgIGlmIChwcm90b2NvbHMpIHsKKyAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2Nr
ZXQodXJsLCBwcm90b2NvbHMpOworICAgIH0gZWxzZSB7CisgICAgICBzb2NrZXQgPSBuZXcgV2Vi
U29ja2V0KHVybCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldHVybjsKKyAgfQorCisgIHNv
Y2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGV4dHJhSW5mbyA9IFtdOworICAg
IGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYmIHNvY2tldC5wcm90b2NvbCkgeworICAgICAg
ZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyArIHNvY2tldC5wcm90b2NvbCk7CisgICAgfQor
ICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tldCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsK
KyAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNpb25zID0gJyArIHNvY2tldC5leHRlbnNpb25z
KTsKKyAgICB9CisKKyAgICB2YXIgbG9nTWVzc2FnZSA9ICdPcGVuZWQnOworICAgIGlmIChleHRy
YUluZm8ubGVuZ3RoID4gMCkgeworICAgICAgbG9nTWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZv
LmpvaW4oJywgJykgKyAnKSc7CisgICAgfQorICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UpOworICB9
OworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgaWYgKCgnQXJy
YXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl
cikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBl
dmVudC5kYXRhLmJ5dGVMZW5ndGggKworICAgICAgICAgICAgICAgJyBieXRlcycpCisgICAgfSBl
bHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9i
KSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRh
LnNpemUgKyAnIGJ5dGVzJykKKyAgICB9IGVsc2UgeworICAgICAgYWRkVG9Mb2coJzwgJyArIGV2
ZW50LmRhdGEpOworICAgIH0KKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
CisgICAgYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnQ2xvc2VkICgnOworICAgIGlmICgo
YXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Nsb3NlRXZlbnQnIGluIHdpbmRvdykgJiYKKyAg
ICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VFdmVudCkpIHsKKyAgICAgIGxvZ01lc3NhZ2Ug
Kz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0NsZWFuOworICAgICAgLy8gY29kZSBhbmQgcmVh
c29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCisgICAgICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vi
c29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCisgICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7
CisgICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29kZSA9ICcgKyBldmVudC5jb2RlOworICAgICAg
fQorICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50KSB7CisgICAgICAgIGxvZ01lc3NhZ2UgKz0g
JywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBpcyBub3QgYXZhaWxhYmxlJzsKKyAgICB9Cisg
ICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7CisgIH07CisKKyAgaWYgKHByb3RvY29scykg
eworICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJv
dG9jb2xzICsgJyknKTsKKyAgfSBlbHNlIHsKKyAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJs
KTsKKyAgfQorfQorCitmdW5jdGlvbiBjbG9zZVNvY2tldCgpIHsKKyAgaWYgKCFzb2NrZXQpIHsK
KyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52YWx1ZSkgeworICAgIHNvY2tldC5jbG9zZShj
b2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUpOworICB9IGVsc2UgeworICAgIHNvY2tldC5j
bG9zZSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3RhdGUoKSB7CisgIGlmICghc29ja2V0
KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBhZGRUb0xvZygKKyAgICAgICd1cmwgPSAnICsgc29ja2V0LnVybCArCisgICAgICAnLCByZWFk
eVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRlICsKKyAgICAgICcsIGJ1ZmZlcmVkQW1vdW50
ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7Cisg
IHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3Nz
Oi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5s
b2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKKworICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgcHJvdG9jb2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Byb3RvY29scycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bG9nJyk7CisgIG1lc3NhZ2VCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScp
OworICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUnKTsKKyAgY29kZUJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CisgIHJlYXNvbkJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVm
YXVsdEFkZHJlc3M7CisKKyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgeworICAgIGFk
ZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9Cit9Cis8L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citmb3JtIHsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNj
b25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2RpdiwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2Rp
diwgI3ByaW50c3RhdGVfZGl2IHsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDVweDsKKyAg
Ym9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4OworICBib3JkZXItc3R5bGU6IHNvbGlkOwor
ICBib3JkZXItY29sb3I6IHNpbHZlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImluaXQoKSI+CisKKzxkaXY+CisKKzxkaXYgaWQ9ImNvbm5lY3RfZGl2Ij4KKyAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+CisgICAgPGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgorICAgIDxici8+CisgICAgcHJvdG9jb2xzIDxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xzIiBzaXplPSIyMCI+CisgIDwvZm9ybT4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4KKyAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEw
IiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAgPGJyLz4KKyAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IgorICAgICAgICAgbmFtZT0ic2hvd3RpbWVzdGFtcCIKKyAgICAgICAgIHZhbHVl
PSJzaG93dGltZXN0YW1wIgorICAgICAgICAgb25jbGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMu
Y2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCis8L2Rpdj4KKworPGRpdiBpZD0ic2VuZF9kaXYiPgor
ICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kKCk7IHJldHVybiBmYWxzZTsiPgorICAg
IGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJtZXNzYWdlIiBzaXplPSI0MCI+CisgICAgPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQiPgorICA8L2Zvcm0+Cis8L2Rpdj4KKworPGRp
diBpZD0ic2VuZGZpbGVfZGl2Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZp
bGUoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBz
aXplPSI0MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Cisg
IDwvZm9ybT4KKworICBTZXQgYmluYXJ5VHlwZQorICA8aW5wdXQgdHlwZT0icmFkaW8iCisgICAg
ICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImJsb2IiCisgICAgICAgICBv
bmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJykiIGNoZWNrZWQ+YmxvYgorICA8aW5wdXQgdHlw
ZT0icmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImFy
cmF5YnVmZmVyIgorICAgICAgICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXIn
KSI+YXJyYXlidWZmZXIKKzwvZGl2PgorCis8ZGl2IGlkPSJjbG9zZV9kaXYiPgorICA8Zm9ybSBh
Y3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tldCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICBj
b2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29kZSIgc2l6ZT0iMTAiPgorICAgIHJlYXNvbiA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIgc2l6ZT0iMjAiPgorICAgIDxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+CisgIDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJw
cmludHN0YXRlX2RpdiI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0
ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Cis8L2Rpdj4KKworPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTUyMDk2OTRlM2ZmMjMyMGY1NjgzZWUwNTk2YWUzNDQyOGIxNWViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5CkBAIC0wLDAgKzEs
NTQgQEAKKyMgQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCisKKworZGVmIF9hZGRfc2V0X2Nvb2tp
ZShyZXF1ZXN0LCB2YWx1ZSk6CisgICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1Nl
dC1Db29raWUnLCB2YWx1ZSkpCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIGNvbXBvbmVudHMgPSB1cmxsaWIucGFyc2UudXJscGFyc2UocmVxdWVz
dC51cmkpCisgICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KKworICAgIE9ORV9EQVlfTElGRSA9
ICdNYXgtQWdlPTg2NDAwJworCisgICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKKyAgICAgICAgX2Fk
ZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVd
KSkKKyAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6CisgICAgICAgIF9hZGRfc2V0
X2Nvb2tpZSgKKyAgICAgICAgICAgIHJlcXVlc3QsICc7ICcuam9pbihbJ2h0dHBPbmx5Rm9vPWJh
cicsIE9ORV9EQVlfTElGRSwgJ2h0dHBPbmx5J10pKQorICAgIGVsaWYgY29tbWFuZCA9PSAnY2xl
YXInOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2Zvbz0wOyBNYXgtQWdlPTAn
KQorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2h0dHBPbmx5Rm9vPTA7IE1heC1B
Z2U9MCcpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDQ1OWExOWJjNjhjNzg3OWExNzRmNTcyMTIyMzgyOTE0ZTZmN2RkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpAQCAtMCwwICsxLDY5
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KKworbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2VydmVyIHNldHVwCisgJSBjZCAkcHl3
ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQorCisjIHJ1
biBjbGllbnQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCisgICAgIC1zIGxvY2FsaG9zdCBcCisgICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
CitpbXBvcnQgYmFzZTY0CitpbXBvcnQgY29kZWNzCitmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEK
K2ltcG9ydCBsb2dnaW5nCitmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9y
dCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2l4CitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5leHRlbnNpb25zIGltcG9ydCBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIKK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9wYXJzZV93aW5kb3dfYml0cworZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKKworX1RJTUVPVVRfU0VDID0gMTAKK19VTkRFRklORURfUE9SVCA9IC0xCisKK19VUEdS
QURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5FQ1RJT05fSEVBREVS
ID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCisjIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRl
bGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQorX0dPT0RCWUVf
TUVTU0FHRSA9ICdHb29kYnllJworCitfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEz
JworCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcwor
CisKK2RlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIs
IG9yaWdpbik6CisgICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3Jp
Z2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKKyAgICAjIGFuZCB0aGUgL29yaWdpbi8g
dmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgorICAgIHJl
dHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKKworCitkZWYgX2Zv
cm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgorICAgICMgNC4xIDkuIExldCAv
aG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAv
aG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCisgICAgIyAvaG9z
dHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKKyAgICAjIDQuMSAxMS4gSWYgL3Nl
Y3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLworICAg
ICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBD
T0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQv
LCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAorICAgICMgdG8gL2hvc3Rwb3J0Lwor
ICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VU
X1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3Ry
KHBvcnQpCisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoi
LCBhIFUrMDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2Zp
ZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhv
c3Rwb3J0KQorCisKK2RlZiBfcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVj
dl9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0gbGVuZ3RoCisgICAgd2hpbGUgcmVtYWluaW5n
ID4gMDoKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCisg
ICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3Io
CisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVx
dWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0
IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVu
Z3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjdl9ieXRlcy5hcHBlbmQocmVjZWl2ZWRfYnl0
ZXMpCisgICAgICAgIHJlbWFpbmluZyAtPSBsZW4ocmVjZWl2ZWRfYnl0ZXMpCisgICAgcmV0dXJu
IGInJy5qb2luKHJlY3ZfYnl0ZXMpCisKKworZGVmIF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVs
ZHMsIG5hbWUpOgorICAgICIiIkdldHMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgc3BlY2lmaWVk
IGJ5IG5hbWUgZnJvbSBmaWVsZHMuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhhdCB0
aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQorICAgIGluIGZp
ZWxkcy4gT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCisgICAgIiIi
CisKKyAgICB2YWx1ZXMgPSBmaWVsZHMuZ2V0KG5hbWUubG93ZXIoKSkKKyAgICBpZiB2YWx1ZXMg
aXMgTm9uZSBvciBsZW4odmFsdWVzKSA9PSAwOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcignJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCisgICAg
aWYgbGVuKHZhbHVlcykgPiAxOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcign
TXVsdGlwbGUgJXMgaGVhZGVycyBmb3VuZDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5hbWUsIHZhbHVlcykpCisgICAgcmV0dXJuIHZhbHVlc1swXQorCisKK2Rl
ZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX3NlbnNpdGl2ZT1G
YWxzZSk6CisgICAgIiIiR2V0cyBhbmQgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVy
IHNwZWNpZmllZCBieSBuYW1lIGZyb20KKyAgICBmaWVsZHMuCisKKyAgICBJZiBleHBlY3RlZF92
YWx1ZSBpcyBzcGVjaWZpZWQsIGNvbXBhcmVzIGV4cGVjdGVkIHZhbHVlIGFuZCBhY3R1YWwgdmFs
dWUKKyAgICBhbmQgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yIG9uIGZhaWx1cmUuIFlv
dSBjYW4gc3BlY2lmeSBjYXNlCisgICAgc2Vuc2l0aXZlbmVzcyBpbiB0aGlzIGNvbXBhcmlzb24g
YnkgY2FzZV9zZW5zaXRpdmUgcGFyYW1ldGVyLiBUaGlzIGZ1bmN0aW9uCisgICAgZXhwZWN0cyB0
aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGZp
ZWxkcy4KKyAgICBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvci4KKyAg
ICAiIiIKKworICAgIHZhbHVlID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSkK
KworICAgIGlmICgoY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlKSBv
cgorICAgICAgICAobm90IGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZS5sb3dlcigpICE9IGV4cGVj
dGVkX3ZhbHVlLmxvd2VyKCkpKToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3Io
CisgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAobmFtZSwgZXhwZWN0ZWRfdmFsdWUsIHZh
bHVlKSkKKworCitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3Ig
YSBUTFMgY29ubmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisg
ICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCkKKwor
ICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBkb25lIG9uIHdyYXBf
c29ja2V0IGNhbGwuCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJDaXBoZXI6ICVzIiwgc2Vs
Zi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKKworICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC53cml0ZShkYXRhKQorCisgICAgZGVmIHNlbmRh
bGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnNlbmRhbGwo
ZGF0YSkKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdGxzX3NvY2tldC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl90bHNfc29ja2V0LmNsb3NlKCkKKworICAgIGRlZiBnZXRwZWVybmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisK
K2NsYXNzIENsaWVudEhhbmRzaGFrZUJhc2Uob2JqZWN0KToKKyAgICAiIiJBIGJhc2UgY2xhc3Mg
Zm9yIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBlYWNoCisgICAg
cHJvdG9jb2wgdmVyc2lvbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVm
IF9yZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBh
IGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgICAgICBmaWVs
ZHMgPSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAgICAgICAgICAjIDQu
MSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICAgICAgbmFtZSA9IGInJworICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgICAgICMg
NC4xIDM0LiByZWFkIC9uYW1lLworICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3JlYWRfbmFtZSgp
CisgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgICMgNC4xIDM1LiByZWFkIHNwYWNlcworICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjaCA9IHNlbGYuX3NraXBfc3BhY2VzKCkKKyAgICAgICAgICAgICMgNC4xIDM2LiBy
ZWFkIC92YWx1ZS8KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fcmVhZF92YWx1ZShjaCkKKyAg
ICAgICAgICAgICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAg
ICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYg
Y2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCisgICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCisgICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCisgICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQorICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCisgICAgICAg
ICAgICAjIHN0cmVhbS4KKyAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUuZGVjb2Rl
KCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLmFwcGVuZCh2YWx1
ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAi
RmllbGQiIHN0ZXAgYWJvdmUKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisgICAgZGVmIF9yZWFk
X25hbWUoc2VsZik6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUg
YXJyYXlzCisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAg
ICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYgY2ggPT0g
Yidccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAg
ZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhh
bmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJl
YWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gYic6
JzogICMgMHgzQQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxvd2VyKCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSArPSBjaAorCisgICAgZGVmIF9za2lwX3Nw
YWNlcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZl
cgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJyAnOiAgIyAweDIwCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybiBjaAorCisgICAgZGVmIF9y
ZWFkX3ZhbHVlKHNlbGYsIGNoKToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVt
cHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICMgNC4xIDM2LiBy
ZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisg
ICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgICAgICBjaCA9IF9yZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKworCitkZWYgX2dldF9wZXJtZXNzYWdlX2RlZmxh
dGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6CisgICAgIiIiVmFsaWRhdGUgdGhlIHJlc3Bv
bnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGluCisg
ICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCB0aGUgc2VydmVyXy4q
IHBhcmFtZXRlcnMuCisgICAgIiIiCisKKyAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gTm9u
ZQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQorCisgICAgY2xpZW50X21h
eF93aW5kb3dfYml0c19uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3Zlcl9uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCisKKyAgICAj
IFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgorICAgICMgSGFuZGxlIHRo
b3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCisKKyAg
ICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3df
Yml0c19uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignTXVsdGlw
bGUgJXMgZm91bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCisKKyAgICAgICAgICAgIHBhcnNlZF92YWx1
ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGlmIHBhcnNl
ZF92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFkICVzOiAlcicgJSAoY2xpZW50X21heF93aW5k
b3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzID0gcGFyc2VkX3ZhbHVlCisgICAgICAgIGVsaWYgcGFyYW1fbmFtZSA9PSBjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoJ011bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkKKwor
ICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6
IEhhcyB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAgICAoY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXJfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBp
cyBOb25lOgorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCisKKyAg
ICByZXR1cm4gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKGNsaWVudF9tYXhfd2luZG93X2JpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlcikKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoQ2xpZW50SGFuZHNo
YWtlQmFzZSk6CisgICAgIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvcgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgorICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKKworICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAg
ICAiIiIKKworICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAg
ZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy51c2VfdGxzKSkKKyAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFE
RVIpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgX29yaWdpbl9oZWFkZXIoY29tbW9uLk9SSUdJTl9IRUFE
RVIsIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51
cmFuZG9tKDE2KQorICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFs
X2tleSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVzKScsIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9rZXksIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCisgICAgICAgIGZpZWxkcy5hcHBlbmQo
CisgICAgICAgICAgICAnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleS5kZWNvZGUoJ1VURi04JykpKQorCisgICAgICAg
IGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVkXHJcbicgJQorICAgICAgICAgICAg
KGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLCBjb21tb24uVkVSU0lPTl9IWUJJ
X0xBVEVTVCkpCisKKyAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6CisgICAgICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICAgICAgIyBBY2NlcHQg
dGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0
LgorICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAg
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCisgICAgICAgICAgICAgICAgX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sIE5vbmUpCisgICAgICAgICAgICBleHRlbnNpb25z
X3RvX3JlcXVlc3QuYXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBpZiBsZW4oZXh0ZW5zaW9u
c190b19yZXF1ZXN0KSAhPSAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJc
bicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhU
RU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190b19yZXF1ZXN0KSkpCisKKyAgICAgICAgZm9yIGZpZWxk
IGluIGZpZWxkczoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkLmVuY29k
ZSgnVVRGLTgnKSkKKworICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChiJ1xyXG4nKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQorCisg
ICAgICAgIHN0YXR1c19saW5lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIHN0YXR1
c19saW5lICs9IGNoCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xuJzoKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIG0gPSByZS5tYXRjaChiJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxk
XFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1h
dDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19s
aW5lKQorICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgc3RhdHVz
X2NvZGUgIT0gYicxMDEnOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICVzIHdpdGggZm9sbG93aW5nIGhlYWRl
cnM6ICVyJywKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgc2VsZi5fcmVhZF9maWVsZHMo
KSkKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAg
ICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXInICUgc3RhdHVz
X2NvZGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCB2YWxpZCBTdGF0
dXMtTGluZScpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3RhcnQgcmVhZGluZyBoZWFk
ZXJzIHVudGlsIHdlIHNlZSBhbiBlbXB0eSBsaW5lJykKKworICAgICAgICBmaWVsZHMgPSBzZWxm
Ll9yZWFkX2ZpZWxkcygpCisKKyAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0
IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCisgICAgICAgICAg
ICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLCBmaWVsZHMp
CisKKyAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBjb21tb24uVVBH
UkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5X
RUJTT0NLRVRfVVBHUkFERV9UWVBFLCBGYWxzZSkKKworICAgICAgICBfdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLCBG
YWxzZSkKKworICAgICAgICBhY2NlcHQgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICAjIFZhbGlkYXRlCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0KSkK
KworICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6CisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBv
ZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCisgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19X
RUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jl
c3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywgYWNjZXB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCisKKyAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoc2VsZi5fa2V5ICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkK
KyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0
ZWRfYWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgcmVzcG9u
c2UgZm9yIGNoYWxsZW5nZTogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShi
aW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRf
YWNjZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAorICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVk
OiAlcyknICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hF
QURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9hY2NlcHRlZCA9IEZhbHNlCisKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVs
ZHMuZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFE
RVIubG93ZXIoKSkKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgIGlm
IGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFkZXIp
ICE9IDA6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4
dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCisKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBp
biBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWUgPSBleHRl
bnNpb24ubmFtZSgpCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUgPT0gY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04KKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6CisgICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKKyAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lKQorCisgICAgICAgIGlmIChzZWxmLl9vcHRp
b25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAgICAgICAgICAgICBhbmQgbm90IHBlcm1l
c3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCk6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkICVzLCBidXQgdGhlIHNlcnZlciBy
ZWplY3RlZCBpdCcgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVf
RVhURU5TSU9OKQorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29j
a2V0LVByb3RvY29sCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0
Yy4KKworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiQSB3cmFwcGVy
IGZvciBzb2NrZXQgb2JqZWN0IHRvIHByb3ZpZGUgdGhlIG1wX2Nvbm4gaW50ZXJmYWNlLgorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9zb2Nr
ZXQgPSBzb2NrZXQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIG4pOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKKworICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisgICAgcmVt
b3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisKKworY2xhc3MgQ2xpZW50UmVx
dWVzdChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBqdXN0IHRvIG1ha2UgaXQgYWJs
ZSB0byBwYXNzIGEgc29ja2V0IG9iamVjdCB0bworICAgIGZ1bmN0aW9ucyB0aGF0IGV4cGVjdCBh
IG1wX3JlcXVlc3Qgb2JqZWN0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2Nr
ZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCisgICAgICAgIHNlbGYud3NfdmVyc2lvbiA9IGNv
bW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisKKworY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgor
ICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYu
X3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICIiIlJ1biB0aGUgY2xp
ZW50LgorCisgICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3Nh
Z2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0
KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jb25uZWN0KAorICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LCBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKKyAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQgPSBfVExT
U29ja2V0KHNlbGYuX3NvY2tldCkKKworICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gQ2xp
ZW50SGFuZHNoYWtlUHJvY2Vzc29yKHNlbGYuX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zKQorCisgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKKworICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAgICAgICAgICByZXF1
ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgICAgIHN0cmVhbV9v
cHRpb24gPSBTdHJlYW1PcHRpb25zKCkKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb24ubWFza19z
ZW5kID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtX29wdGlvbi51bm1hc2tfcmVjZWl2ZSA9IEZh
bHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgZnJhbWVyLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb24pCisKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0
cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBmb3IgbGluZSBpbiBz
ZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDogJXMnICUgbGluZSkK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gc2Vs
Zi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlY3Y6
ICVzJyAlIHJlY2VpdmVkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgICAgICAg
ICByYWlzZQorCisgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVm
IF9kb19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5n
IGhhbmRzaGFrZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01F
U1NBR0U6CisgICAgICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3Npbmcg
aGFuZHNoYWtlLCBzbworICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2Ug
bWVzc2FnZSBmcm9tIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0
IGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIG1l
c3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmVjdiBjbG9zZScpCisgICAg
ICAgICAgICAgICAgcHJpbnQoJ1NlbmQgYWNrJykKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQorICAgICAgICBz
ZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCisKKworZGVmIG1haW4oKToK
KyAgICBpZiBzaXguUFkyOgorICAgICAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcign
dXRmLTgnKShzeXMuc3Rkb3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKKyAgICAj
IFdlIGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBz
YW1lIGFzIEdvb2dsZQorICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1h
bmQtbGluZS1mbGFnIHN0eWxlIGZsYWdzLgorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsCisg
ICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJf
aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J3NlcnZlciBob3N0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX3BvcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2Vy
dmVyIHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tb3JpZ2luJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdvcmlnaW4nLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J29yaWdpbicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1yZXNv
dXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVzb3VyY2UnLAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nL2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jlc291cmNlIHBhdGgnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbWVz
c2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWVzc2FnZScsCisgICAgICAgICAg
ICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
Y29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4n
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAgICctLXF1aWV0JywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywKKyAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGxz
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfdGxzJywKKyAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIFRMUyAod3NzOi8vKS4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
c29ja2V0LXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNvY2tldF90aW1lb3V0
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PV9USU1FT1VUX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaW1lb3V0KHNlYykg
Zm9yIHNvY2tldHMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXVzZS1wZXJtZXNzYWdlLWRl
ZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2Ug
dGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uJykKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4n
LAorICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4n
LCAnZXJyb3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cg
bGV2ZWwuJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQorCisgICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVy
IGRlcGVuZHMgb24gd2hldGhlciBUTFMgaXMgdXNlZC4KKyAgICBpZiBvcHRpb25zLnNlcnZlcl9w
b3J0ID09IF9VTkRFRklORURfUE9SVDoKKyAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgorICAg
ICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3Bv
cnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworICAgICMgb3B0cGFyc2UgZG9l
c24ndCBzZWVtIHRvIGhhbmRsZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMuCisgICAgIyBTZXQg
ZGVmYXVsdCBtZXNzYWdlIGhlcmUuCisgICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKKyAgICAg
ICAgb3B0aW9ucy5tZXNzYWdlID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAjICJKYXBhbiIgaW4g
SmFwYW5lc2UKKworICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYTUw
MzIyMThkMjY5OTU4YmY3NTFiZjYwOGJiYjUyNTU2YzZmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CkBAIC0wLDAgKzEsNjIg
QEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc2l4CisKK19HT09EQllFX01FU1NBR0UgPSB1
J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUg
aXMgcGFyc2VkIGludG8KKyAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdl
YnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgorICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3Jl
IGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAorICAgIGFmdGVy
IHRoZSBjYWxsLgorCisgICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0
aGUgcHJvY2Vzc29yIGxpc3QuCisgICAgIiIiCisKKyAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9w
cm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHkuIiIiCisKKyAgICB3aGlsZSBUcnVl
OgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAg
ICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlz
aW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
ZWNob193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2M2YzUzMTFiYmI5OWYzMzRmMzM1N2Q4MDFhMmY0
MjA1NjAwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNo
b193c2gucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzaXgK
KworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUaGlzIGV4YW1wbGUgaGFuZGxlciBhY2Nl
cHRzIGFueSByZXF1ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3IgaG93CisgICAgIyB0
byByZWplY3QgYWNjZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQgb24gb3JpZ2luIHZh
bHVlLgorCisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJl
cXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxp
bmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FH
RToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFu
ZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1OTkwNTg2Nzg0MmFlYjg2NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKyMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkg
c3RhbmRhbG9uZS5weSAtbSBvcHRpb24uCisjIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBh
IGNvbW1lbnQgbGluZS4KKyMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9w
YXRoJyBhbmQgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnCisjIHNlcGFyYXRlZCBieSBzcGFjZXMu
CisjIEFsaWFzaW5nIGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0
aGUgbGluZSwgYW5kCisjICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9y
ZSBpdCBpcyBhbGlhc2VkLgorIyBGb3IgZXhhbXBsZSwKKyMgIC8gL2VjaG8KKyMgbWVhbnMgdGhh
dCBhIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hv
Jy4KKy8gL2VjaG8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3Rz
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKQEAgLTAsMCArMSw0
MCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCisgICAgICAg
ICgnU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNGFhNjg0MjgzYTYwM2Y1YjMzZGRhNTI2MzAxOTk5YjQ0NzkyZGRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
bXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICByYWlzZSBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9vcmlnaW5f
Y2hlY2tfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTc2N2FiOTMyZmI1ODI4MjRhYWYxYTU3ZDkyNDlj
MzA0YmQ1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29y
aWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
VGhpcyBleGFtcGxlIGlzIGRlcml2ZWQgZnJvbSB0ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdp
bl9jaGVja193c2gucHkuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20n
OgorICAgICAgICByZXR1cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3Jp
Z2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2No
ZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4YjJjMDhmNmEyMjU0
YTFmOWQ3NjUwNzkwMmMxYTZiNWFlZTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IS0tCitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJm
b3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDQwOWFhNmViNWZk
MWExMWFlMmQ1YmExNTZiYjhhYWMyZmNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCkBAIC0wLDAgKzEsODYg
QEAKKy8vIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gcGVyZlRlc3RBZGRUb0xvZyh0ZXh0KSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1h
bmQnOiAnbG9nJywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0
QWRkVG9TdW1tYXJ5KHRleHQpIHsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RNZWFzdXJlVmFsdWUo
dmFsdWUpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdtZWFzdXJlVmFsdWUn
LCAndmFsdWUnOiB2YWx1ZX0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0Tm90aWZ5QWJv
cnQoKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90aWZ5QWJvcnQnfSwg
JyonKTsKK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGFUeXBl
LCBhc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlEYXRh
LCBudW1JdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVdhcm1VcEl0ZXJhdGlvbnMpIHsKKworICByZXR1cm4geworICAgIHByZWZpeFVybDogJ3dzOi8v
JyArIGxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInLAorICAgIHByaW50U2l6ZTog
dHJ1ZSwKKyAgICBudW1Tb2NrZXRzOiAxLAorICAgIC8vICsgMSBpcyBmb3IgYSB3YXJtdXAgaXRl
cmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgorICAgIG51bUl0ZXJhdGlvbnM6IG51
bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKKyAgICBudW1XYXJtVXBJdGVy
YXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAorICAgIG1pblRvdGFsOiAxMDI0MDAwMCwKKyAg
ICBzdGFydFNpemU6IDEwMjQwMDAwLAorICAgIHN0b3BUaHJlc2hvbGQ6IDEwMjQwMDAwLAorICAg
IG11bHRpcGxpZXJzOiBbMl0sCisgICAgdmVyaWZ5RGF0YTogdmVyaWZ5RGF0YSwKKyAgICBkYXRh
VHlwZTogZGF0YVR5cGUsCisgICAgYXN5bmM6IGFzeW5jLAorICAgIGFkZFRvTG9nOiBwZXJmVGVz
dEFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRUb1N1bW1hcnksCisgICAg
bWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKKyAgICBub3RpZnlBYm9ydDogcGVy
ZlRlc3ROb3RpZnlBYm9ydAorICB9OworfQorCit2YXIgZGF0YTsKK29ubWVzc2FnZSA9IGZ1bmN0
aW9uKG1lc3NhZ2UpIHsKKyAgdmFyIGFjdGlvbjsKKyAgaWYgKG1lc3NhZ2UuZGF0YS5jb21tYW5k
ID09PSAnc3RhcnQnKSB7CisgICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKKyAgICBpbml0V29ya2Vy
KCdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QpOworICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJr
TmFtZTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rpb24gPSAnc3RvcCc7CisgIH0KKworICB2YXIgY29u
ZmlnID0gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGEuZGF0YVR5cGUsIGRhdGEuYXN5
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52ZXJp
ZnlEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFs
X2hlYWRlcnMuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwM2NiNzQwMWI3ODdhYzZlMTFjNjc0NmM2ODQyZTU3
ZDM4MDk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3Nw
ZWNpYWxfaGVhZGVycy5jZ2kKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKKyMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCisiIiJDR0kg
c2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRUUCBoZWFkZXJzIG9uIHRoZSBv
cmlnaW4gcGFnZS4KKworTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRvbid0IHdvcmsgb24gdGhlIHN0
YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKK21vZGUuCisiIiIKKworcHJpbnQg
IiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKK0NvbnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25u
ZWN0LXNyYyBzZWxmCisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1w
bGUuY29tIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTAxNjBjYjQwYzRjNzgwMGNkOWU3NjMwMDE0MGI5YmZl
OWYxNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
LmpzCkBAIC0wLDAgKzEsMzIzIEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9y
IGJvdGggbWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCisKK3ZhciByZXN1bHRzID0ge307CisKK2Z1
bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIERhdGUubm93KCk7Cit9CisKK2Z1bmN0
aW9uIGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLAorICAgIHNwZWVkLCBwcmludFNpemUpIHsKKyAgaWYgKHByaW50U2l6
ZSkgeworICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKKyAgICAgICAgJ1x0JyArIHRpbWVQZXJN
ZXNzYWdlSW5Ncy50b0ZpeGVkKDMpICsKKyAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5N
cyA9PSAtMSA/CisgICAgICAgICAgICAnJyA6CisgICAgICAgICAgICAnXHQnICsgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKKyAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4
ZWQoMyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7CisgIH0KK30K
KworZnVuY3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKKyAgcmVzdWx0cyA9IHt9OworfQorCitm
dW5jdGlvbiByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvU3VtbWFy
eSgKKyAgICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0
U3BlZWRbS0Ivc10nKTsKKyAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7CisgICAgdmFyIGF2
ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tz
aXplXS5uOworICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdl
VGltZVBlck1lc3NhZ2VJbk1zKTsKKyAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRl
dmlhdGlvbgorICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCisg
ICAgICAgIChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCisgICAgICAg
ICAgICBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5N
cykgKgorICAgICAgICByZXN1bHRzW3NpemVdLm4gLworICAgICAgICAocmVzdWx0c1tzaXplXS5u
IC0gMSkpOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCisgICAg
ICAgIHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdl
SW5Ncywgc3BlZWQsCisgICAgICAgIHRydWUpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYWxjdWxh
dGVTcGVlZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgeworICByZXR1cm4gTWF0aC5yb3VuZChz
aXplIC8gdGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKK30KKworZnVuY3Rpb24gY2FsY3Vs
YXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAor
ICAgIGlzV2FybVVwKSB7CisgIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBz
dGFydFRpbWVJbk1zOworICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXpl
LCB0aW1lU3BlbnRJbk1zKTsKKyAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudElu
TXMgLyAodG90YWxTaXplIC8gc2l6ZSk7CisgIGlmICghaXNXYXJtVXApIHsKKyAgICBjb25maWcu
bWVhc3VyZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgaWYgKCFyZXN1bHRzW3NpemVd
KSB7CisgICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9Owor
ICAgIH0KKyAgICByZXN1bHRzW3NpemVdLm4gKys7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdCAr
PSB0aW1lUGVyTWVzc2FnZUluTXM7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBl
ck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOworICB9CisgIGNvbmZpZy5hZGRUb0xv
Zyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwK
KyAgICAgIGNvbmZpZy5wcmludFNpemUpKTsKK30KKworZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0
ciwgY291bnQpIHsKKyAgdmFyIGRhdGEgPSAnJzsKKyAgdmFyIGV4cENodW5rID0gc3RyOworICB2
YXIgcmVtYWluID0gY291bnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYgKHJlbWFpbiAlIDIp
IHsKKyAgICAgIGRhdGEgKz0gZXhwQ2h1bms7CisgICAgICByZW1haW4gPSAocmVtYWluIC0gMSkg
LyAyOworICAgIH0gZWxzZSB7CisgICAgICByZW1haW4gLz0gMjsKKyAgICB9CisKKyAgICBpZiAo
cmVtYWluID09IDApCisgICAgICBicmVhazsKKworICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBl
eHBDaHVuazsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZmlsbEFycmF5QnVm
ZmVyKGJ1ZmZlciwgYykgeworICB2YXIgaTsKKworICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAx
MDEwMTAxOworCisgIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3Ro
IC8gNCk7CisgIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxv
Y2tzKTsKKyAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNl
IGl0IGZvciBsb29wIGNvbmRpdGlvbi4KKyAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytp
KSB7CisgICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7CisgIH0KKworICAvLyBGcmFjdGlvbgor
ICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7CisgIHZh
ciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tz
KTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAgICB1OFZpZXdbaV0gPSBj
OworICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRD
aGFyKSB7CisgIHZhciBpOworCisgIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFy
ICogMHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0
ZUxlbmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAs
IHUzMkJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgeworICAgIGlm
ICh1MzJWaWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJs
b2NrcyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2Nr
cyAqIDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAg
ICBpZiAodThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgeworICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB2ZXJpZnlCbG9iKGNv
bmZpZywgYmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKKyAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKGJsb2IpOworICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewor
ICAgIGNvbmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5t
ZXNzYWdlKTsKKyAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7CisgIH0KKyAgcmVh
ZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJh
eUJ1ZmZlcihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOworICAgIGRvbmVDYWxsYmFjayhi
bG9iLnNpemUsIHJlc3VsdCk7CisgIH0KKyAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2Ip
OworfQorCitmdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBz
aXplKSB7CisgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgeworICAgIGNvbmZpZy5h
ZGRUb0xvZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOworICBp
ZiAoaXNOYU4ocGFyc2VkQWNrKSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sg
dmFsdWU6ICcgKyBtZXNzYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHBhcnNl
ZEFjayAhPSBzaXplKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKAorICAgICAgICAnRXhwZWN0ZWQg
YWNrIGZvciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sg
KworICAgICAgICAnQicpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKKyAgdmFyIG5ld09iaiA9IHt9Owor
ICBmb3IgKGtleSBpbiBvYmopIHsKKyAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOworICB9Cisg
IHJldHVybiBuZXdPYmo7Cit9CisKK3ZhciB0YXNrcyA9IFtdOworCitmdW5jdGlvbiBydW5OZXh0
VGFzayhjb25maWcpIHsKKyAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOworICBpZiAodGFzayA9
PSB1bmRlZmluZWQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7CisgICAgY2xl
YW51cCgpOworICAgIHJldHVybjsKKyAgfQorICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAw
KTsKK30KKworZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7CisgIHZhciBsZWdl
bmQgPSAnJworICBpZiAoY29uZmlnLnByaW50U2l6ZSkKKyAgICBsZWdlbmQgPSAnTWVzc2FnZSBz
aXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOworICBsZWdlbmQgKz0gJ1NwZWVkIGlu
IGtCL3MnOworICByZXR1cm4gbGVnZW5kOworfQorCitmdW5jdGlvbiBhZGRUYXNrcyhjb25maWcs
IHN0ZXBGdW5jKSB7CisgIGZvciAodmFyIGkgPSAwOworICAgICAgaSA8IGNvbmZpZy5udW1XYXJt
VXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgeworICAgIHZhciBtdWx0
aXBsaWVySW5kZXggPSAwOworICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwor
ICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKKyAgICAgICAgICsrbXVsdGlw
bGllckluZGV4KSB7CisgICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCisgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICBzaXplLAorICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICAgICAgdGFza3MucHVzaCh0YXNrKTsKKyAg
ICAgIHZhciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWworICAgICAgICBtdWx0aXBs
aWVySW5kZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKKyAgICAgIGlmIChtdWx0aXBs
aWVyIDw9IDEpIHsKKyAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIg
JyArIG11bHRpcGxpZXIpOworICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOworICAgICAgfQorICAgICAgc2l6
ZSA9IE1hdGguY2VpbChzaXplICogbXVsdGlwbGllcik7CisgICAgfQorICB9Cit9CisKK2Z1bmN0
aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgeworICB0YXNrcy5wdXNo
KGZ1bmN0aW9uKCl7CisgICAgICB0aW1lcklEID0gbnVsbDsKKyAgICAgIGNvbmZpZy5hZGRUb1N1
bW1hcnkodGl0bGUpOworICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKKyAgICAgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH0pOworfQor
CitmdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2coJ1Nl
bmQgYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0
YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29u
ZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKKyAgY29uZmln
LmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107Cisg
IGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJr
U3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAorICAgICAgJ1JlY2VpdmUg
QmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0YXJ0QmVuY2htYXJr
KGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoY29uZmlnKSB7CisgIGNsZWFyVGltZW91dCh0
aW1lcklEKTsKKyAgdGltZXJJRCA9IG51bGw7CisgIHRhc2tzID0gW107CisgIGNvbmZpZy5hZGRU
b0xvZygnU3RvcHBlZCcpOworICBjbGVhbnVwKCk7Cit9CisKK3ZhciB3b3JrZXI7CisKK2Z1bmN0
aW9uIGluaXRXb3JrZXIob3JpZ2luKSB7CisgIHdvcmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsg
Jy9iZW5jaG1hcmsuanMnKTsKK30KKworZnVuY3Rpb24gZG9BY3Rpb24oY29uZmlnLCBpc1dpbmRv
d1RvV29ya2VyLCBhY3Rpb24pIHsKKyAgaWYgKGlzV2luZG93VG9Xb3JrZXIpIHsKKyAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9Mb2csIGFkZFRvU3VtbWFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZVZhbHVlLCBub3RpZnlBYm9ydCwgbWVzc2Fn
ZSkgeworICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQorICAgICAg
ICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRh
dGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCisgICAgICAgIGFkZFRvU3VtbWFyeShtZXNzYWdl
LmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ21lYXN1
cmVWYWx1ZScpCisgICAgICAgIG1lYXN1cmVWYWx1ZShtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAg
ICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ25vdGlmeUFib3J0JykKKyAgICAgICAg
bm90aWZ5QWJvcnQoKTsKKyAgICB9LmJpbmQodW5kZWZpbmVkLCBjb25maWcuYWRkVG9Mb2csIGNv
bmZpZy5hZGRUb1N1bW1hcnksCisgICAgICAgICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUsIGNvbmZp
Zy5ub3RpZnlBYm9ydCk7CisgICAgY29uZmlnLmFkZFRvTG9nID0gdW5kZWZpbmVkOworICAgIGNv
bmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9
IHVuZGVmaW5lZDsKKyAgICBjb25maWcubm90aWZ5QWJvcnQgPSB1bmRlZmluZWQ7CisgICAgd29y
a2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24sIGNvbmZpZzogY29uZmlnfSk7CisgIH0gZWxz
ZSB7CisgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRCZW5jaG1hcmsnKQorICAgICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlY2VpdmVCZW5jaG1hcmsn
KQorICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9
PT0gJ2JhdGNoQmVuY2htYXJrJykKKyAgICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7CisgICAg
ZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCisgICAgICBzdG9wKGNvbmZpZyk7CisgIH0KK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhZGQ0ODcz
MWY4OGZlODVlZWVhNDBlNmUwMTljZjE3Y2NjZTNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCkBAIC0wLDAgKzEsODkgQEAKKy8vIENv
cHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgorCit2
YXIgbG9nQm94ID0gbnVsbDsKK3ZhciBxdWV1ZWRMb2cgPSAnJzsKKwordmFyIHN1bW1hcnlCb3gg
PSBudWxsOworCitmdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKKyAgcXVldWVkTG9nICs9IGxvZyAr
ICdcbic7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBsb2dCb3gudmFsdWUgKz0g
cXVldWVkTG9nOworICBxdWV1ZWRMb2cgPSAnJzsKKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdc
bic7CisgIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5jdGlvbiBhZGRUb1N1
bW1hcnkobG9nKSB7CisgIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKKyAgc3VtbWFy
eUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCisvLyB2YWx1ZTogZXhlY3V0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgorLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0byBi
ZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgorLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1Q
ZXJmb3JtYW5jZVRlc3QuCitmdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKK30KKworLy8g
Y29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1hcmsgZmFpbGVkIGFu
ZCBhYm9ydGVkLCBhbmQKKy8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVz
dHMuCisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KK2Z1bmN0aW9u
IG5vdGlmeUFib3J0KCkgeworfQorCitmdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKKyAg
cmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Cit9CisK
K2Z1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7CisgIHZhciBsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNr
ZWQpCisgICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOworICByZXR1cm4gdW5kZWZpbmVk
OworfQorZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgeworICByZXR1cm4gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Cit9CisKK2Z1bmN0aW9uIGdldEludEFycmF5
RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0
cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOworfQorCitmdW5jdGlvbiBnZXRGbG9h
dEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKHBhcnNl
RmxvYXQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX3dv
cmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGQ5MDQ0OWE5MGE3ZDc4MmI5NzAyM2U4ZDlkNWE3YWFlZTk0YTMyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKQEAgLTAs
MCArMSw0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2Vy
IHRocmVhZHMgb25seSkuCisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CisgIHZh
ciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmlnOworICBjb25maWcuYWRkVG9Mb2cgPSBmdW5j
dGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTog
dGV4dH0pOyB9OworICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gZnVuY3Rpb24odGV4dCkgeworICAg
ICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Cisg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcG9zdE1lc3Nh
Z2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOyB9OworICBjb25maWcubm90
aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9
KTsgfTsKKworICBkb0FjdGlvbihjb25maWcsIGZhbHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Cit9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
M2QzOGUyYWI2MmZhNzYxZTU0MWMzZTQ3YjUxNTY0ZDkxMzFhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwzOSBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3No
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2NvbnNvbGUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9lY2hvX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDVmNTk1MGYzNDc1MzFiOTI2MmMzMWI3N2Qw
YzI5ZDQyNmU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
IiIiIEEgU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzCisK
K21vZF9weXdlYnNvY2tldCBpcyBhbiBBUEkgdGhhdCBwcm92aWRlcyBXZWJTb2NrZXQgZnVuY3Rp
b25hbGl0aWVzIHdpdGgKK2Egc3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVyLiBJdCBpcyBpbnRl
bmRlZCBmb3IgdGVzdGluZyBvcgorZXhwZXJpbWVudGFsIHB1cnBvc2VzLgorCitJbnN0YWxsYXRp
b24KKz09PT09PT09PT09PQorMS4gRm9sbG93IHN0YW5kYWxvbmUgc2VydmVyIGRvY3VtZW50YXRp
b24gdG8gc3RhcnQgcnVubmluZyB0aGUKK3N0YW5kYWxvbmUgc2VydmVyLiBJdCBjYW4gYmUgcmVh
ZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0LnN0YW5kYWxvbmUKKworMi4gT25jZSB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgaXMg
bGF1bmNoZWQgdmVyaWZ5IGl0IGJ5IGFjY2Vzc2luZworaHR0cDovL2xvY2FsaG9zdFs6cG9ydF0v
Y29uc29sZS5odG1sLiBJbmNsdWRlIHRoZSBwb3J0IG51bWJlciB3aGVuCitzcGVjaWZpZWQgb24g
bGF1bmNoLiBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgY29ycmVjdGx5LCB5b3UKK3dpbGwgc2Vl
IGEgc2ltcGxlIGVjaG8gY29uc29sZS4KKworCitXcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwor
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNv
bWVzIGluLCB0aGUgcmVzb3VyY2UgbmFtZQorc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMg
Y29uc2lkZXJlZCBhcyBpZiBpdCBpcyBhIGZpbGUgcGF0aCB1bmRlcgorPHdlYnNvY2tfaGFuZGxl
cnM+IGFuZCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5kbGVycz4vPHJlc291
cmNlX25hbWU+X3dzaC5weSBpcyBpbnZva2VkLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291
cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hhdCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNv
Y2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hhdF93c2gucHkgaXMgaW52b2tlZC4KKworQSBXZWJTb2Nr
ZXQgaGFuZGxlciBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoK
KworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCisgICAgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmlu
ZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZCBhbmQgV2ViU29ja2V0IHByb3BlcnRpZXMgKHdzX29yaWdpbiwKK2FuZCB3c19yZXNvdXJjZSkg
YXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBi
eSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQorZXh0cmEgaGFuZHNo
YWtlICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CistIHdzX3Jlc291cmNlCistIHdz
X29yaWdpbgorLSB3c192ZXJzaW9uCistIHdzX2V4dGVuc2lvbnMKKy0gd3NfZGVmbGF0ZQorLSB3
c19wcm90b2NvbAorLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzCisKK1RoZSBsYXN0IHR3byBhcmUg
YSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlvbi4KKworCitTdWJwcm90b2NvbCBO
ZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKword3NfcHJvdG9jb2wgaXMgYWx3
YXlzIHNldCB0byBOb25lIHdoZW4KK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNh
bGxlZC4gSWYgd3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKK05vbmUsIHlvdSBtdXN0IGNo
b29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bword3NfcHJv
dG9jb2wuCisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKword2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAorc3VjY2Vz
c2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBj
bGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92
aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRyYW5zZmVyLgorCitZb3UgY2FuIHJlY2VpdmUgYSBt
ZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgbWVzc2FnZSA9IHJlcXVl
c3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKK1RoaXMgY2FsbCBibG9ja3MgdW50aWwg
YW55IGNvbXBsZXRlIHRleHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKK29m
IHRoZSBpbmNvbWluZyBmcmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91
J3JlIHVzaW5nIElFVEYKK0h5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2Fn
ZSgpIHdpbGwgcmV0dXJuIE5vbmUgb24gcmVjZWl2aW5nCitjbGllbnQtaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlLiBXaGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCit3
aWxsIHJhaXNlIHNvbWUgZXhjZXB0aW9uLgorCitZb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKG1lc3NhZ2UpCisKKworQ2xvc2luZyBDb25uZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0K
KworRXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBm
cm9tCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KKwor
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorCitjbG9zZV9jb25uZWN0
aW9uIHdpbGwgd2FpdAorZm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21p
bmcgZnJvbSB0aGUgY2xpZW50LiBXaGVuIGl0Citjb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNr
bm93bGVkZ2VtZW50LCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCit3ZWJfc29ja2V0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKK2lu
Y29taW5nIGNsb3NpbmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlv
dSBjYW4gc3BlY2lmeQorY29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJl
IHNlbnQgYXMgYSBvdXRnb2luZyBjbG9zaW5nIGZyYW1lCitmcm9tIHRoZSBzZXJ2ZXIuIEEgcmVx
dWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KK3Vz
ZSBpbiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCistIHdzX2Nsb3NlX2Nv
ZGUKKy0gd3NfY2xvc2VfcmVhc29uCisKKworVGhyZWFkaW5nCistLS0tLS0tLS0KKworQSBXZWJT
b2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGUgc3RhbmRhbG9uZQorc2VydmVy
IHVzZXMgdGhyZWFkcyBieSBkZWZhdWx0LgorCisKK0NvbmZpZ3VyaW5nIFdlYlNvY2tldCBFeHRl
bnNpb24gUHJvY2Vzc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1NlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29ja2V0IGV4dGVuc2lv
bnMuIE5vdGUgdGhhdCB0aGV5IGFyZQordW5zdGFibGUgYW5kIHRoZWlyIEFQSXMgYXJlIHN1Ympl
Y3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCisKK0EgcmVxdWVzdCBvYmplY3QgaGFzIHRoZXNl
IGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KKworLSB3c19yZXF1ZXN0
ZWRfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBp
bnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJzIHJlY2VpdmVkIGZy
b20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBz
aG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgorCistIHdzX2V4dGVuc2lvbnM6CisKKyAgQSBs
aXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBl
eHRlbnNpb24KKyAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNsaWVudCBpbiB0aGUg
c2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBzaG91bGRuJ3QgdG91Y2ggaXQgZGly
ZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KKyAgcHJvY2Vzc29ycy4K
KworLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKKworICBBIGxpc3Qgb2YgbG9hZGVkIGV4dGVu
c2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQorICBleHRlbnNpb24g
eW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBtZXRob2RzLgorIiIi
CisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
ODc4YmM0YTM3OWI1YWQ4YzQyM2E4ZTM4ZGY0MDVhOTZjY2JmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkK
QEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdHJlYW0gRXhjZXB0aW9ucy4K
KyIiIgorCisjIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGlu
IHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhh
dCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgorIyBoYW5kbGVycy4gVW5m
b3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKKyMgcmVx
dWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93
IGRpcmVjdCByYXcgYnl0ZXMKKyMgd3JpdGluZy9yZWFkaW5nLgorCisKKyMgRXhjZXB0aW9ucwor
Y2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJU
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5h
dGVkCisgICAgdW5leHBlY3RlZGx5LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6CisgICAg
IiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZh
bGlkIGZyYW1lIHdlCisgICAgY2Fubm90IHBhcnNlLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhj
ZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCisg
ICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBj
YWxsZWQgb24KKyAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToK
KyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBm
cmFtZSB3aXRoIGZsYWcsIG9wY29kZQorICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNh
biBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCisgICAgY2FsbCByZWNl
aXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1l
LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSBy
ZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAorICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3Ry
aW5ncy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYjEx
ZjE1Y2IyZjU4MmU2YzI5ZTY5OGVlNWZmZjJhZmRlOGE3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CkBAIC0wLDAgKzEsMjcz
IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55
IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgorIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRp
b25zLgorTE9HTEVWRUxfRklORSA9IDkKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgdmVyc2lvbi4KK1ZFUlNJT05fSFlCSTEzID0gMTMKK1ZFUlNJT05fSFlCSTE0
ID0gMTMKK1ZFUlNJT05fSFlCSTE1ID0gMTMKK1ZFUlNJT05fSFlCSTE2ID0gMTMKK1ZFUlNJT05f
SFlCSTE3ID0gMTMKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJvdG9jb2wg
bGF0ZXN0IHZlcnNpb24uCitWRVJTSU9OX0hZQklfTEFURVNUID0gVkVSU0lPTl9IWUJJMTMKKwor
IyBQb3J0IG51bWJlcnMKK0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKK0RFRkFVTFRfV0VC
X1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIFNjaGVtZXMKK1dFQl9TT0NLRVRfU0NIRU1F
ID0gJ3dzJworV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycKKworIyBGcmFtZSBvcGNv
ZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENP
REVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorT1BDT0RFX0NMT1NFID0gMHg4CitP
UENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKKworIyBVVUlEIGZvciB0aGUgb3Bl
bmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tpbmcuCitXRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKworIyBPcGVuaW5nIGhh
bmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5kIGV4cGVjdGVkIHZhbHVlcy4KK1VQR1JBREVfSEVBREVS
ID0gJ1VwZ3JhZGUnCitXRUJTT0NLRVRfVVBHUkFERV9UWVBFID0gJ3dlYnNvY2tldCcKK0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCitVUEdSQURFX0NPTk5FQ1RJT05fVFlQRSA9ICdV
cGdyYWRlJworSE9TVF9IRUFERVIgPSAnSG9zdCcKK09SSUdJTl9IRUFERVIgPSAnT3JpZ2luJwor
U0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5JworU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JworU0VDX1dFQlNPQ0tF
VF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCitTRUNfV0VCU09DS0VU
X1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJworU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnCisKKyMgRXh0
ZW5zaW9ucworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxh
dGUnCisKKyMgU3RhdHVzIGNvZGVzCisjIENvZGUgU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCwg
U1RBVFVTX0FCTk9STUFMX0NMT1NVUkUsIGFuZAorIyBTVEFUVVNfVExTX0hBTkRTSEFLRSBhcmUg
cHNldWRvIGNvZGVzIHRvIGluZGljYXRlIHNwZWNpZmljIGVycm9yIGNhc2VzLgorIyBDb3VsZCBu
b3QgYmUgdXNlZCBmb3IgY29kZXMgaW4gYWN0dWFsIGNsb3NpbmcgZnJhbWVzLgorIyBBcHBsaWNh
dGlvbiBsZXZlbCBlcnJvcnMgbXVzdCB1c2UgY29kZXMgaW4gdGhlIHJhbmdlCisjIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4gVGhlIGNvZGVz
IGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VT
RVJfUkVHSVNURVJFRF9NQVggYXJlIG1hbmFnZWQKKyMgYnkgSUFOQS4gVXN1YWxseSBhcHBsaWNh
dGlvbiBtdXN0IGRlZmluZSB1c2VyIHByb3RvY29sIGxldmVsIGVycm9ycyBpbiB0aGUKKyMgcmFu
Z2UgU1RBVFVTX1VTRVJfUFJJVkFURV9CQVNFIHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLgor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VO
RFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CitTVEFUVVNf
VVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCitTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCA9
IDM5OTkKK1NUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSA9IDQwMDAKK1NUQVRVU19VU0VSX1BSSVZB
VEVfTUFYID0gNDk5OQorIyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGFsaWFzZXMgdG8ga2Vl
cCBjb21wYXRpYmlsaXR5LiBBcHBsaWNhdGlvbnMgbXVzdAorIyBub3QgdXNlIHRoZXNlIG9ic29s
ZXRlZCBkZWZpbml0aW9ucyBhbnltb3JlLgorU1RBVFVTX05PUk1BTCA9IFNUQVRVU19OT1JNQUxf
Q0xPU1VSRQorU1RBVFVTX1VOU1VQUE9SVEVEID0gU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEKK1NU
QVRVU19DT0RFX05PVF9BVkFJTEFCTEUgPSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECitTVEFU
VVNfQUJOT1JNQUxfQ0xPU0UgPSBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRQorU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRCA9IFNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQQorU1RB
VFVTX01BTkRBVE9SWV9FWFQgPSBTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTgorCisjIEhUVFAg
c3RhdHVzIGNvZGVzCitIVFRQX1NUQVRVU19CQURfUkVRVUVTVCA9IDQwMAorSFRUUF9TVEFUVVNf
Rk9SQklEREVOID0gNDAzCitIVFRQX1NUQVRVU19OT1RfRk9VTkQgPSA0MDQKKworCitkZWYgaXNf
Y29udHJvbF9vcGNvZGUob3Bjb2RlKToKKyAgICByZXR1cm4gKG9wY29kZSA+PiAzKSA9PSAxCisK
KworY2xhc3MgRXh0ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CisgICAgIiIiVGhpcyBpcyBleGNo
YW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGluIG9wZW5pbmcgaGFuZHNoYWtlLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUK
KyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBt
b3JlIGVmZmljaWVudCBvbmUgc3VjaAorICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBj
aGFuZ2VzIHRvIHNheSBsaWtlCisgICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1
bmlxdWUKKyAgICAgICAgIyAtIFRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZp
Y2FudAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gW10KKworICAgIGRlZiBuYW1lKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dGVuc2lvbiBuYW1lLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUp
OgorICAgICAgICAiIiJBZGQgYSBwYXJhbWV0ZXIuIiIiCisgICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6
CisgICAgICAgICIiIlJldHVybiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcmFtZXRlcnMKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgorICAgICAgICBy
ZXR1cm4gW25hbWUgZm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQor
CisgICAgZGVmIGhhc19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlRlc3QgaWYg
YSBwYXJhbWV0ZXIgZXhpc3RzLiIiIgorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFs
dWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFt
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQg
dGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgcGFyYW1ldGVyLiIiIgorICAgICAgICBmb3IgcGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBh
cmFtX25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKKwor
CitjbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiRXhj
ZXB0aW9uIHRvIGhhbmRsZSBlcnJvcnMgaW4gZXh0ZW5zaW9uIHBhcnNpbmcuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhj
ZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorCisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uX3Bh
cmFtKHN0YXRlLCBkZWZpbml0aW9uKToKKyAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3Rva2VuKHN0YXRlKQorCisgICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgorICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3VuZCcpCisKKyAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0n
KToKKyAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCisg
ICAgICAgIHJldHVybgorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRl
KQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJz
ZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KKyAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQorICAgIGlmIHBhcmFtX3Zh
bHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCisg
ICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1o
YW5kIHNpZGUgb2YgJworICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQor
CisgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQor
CisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKKyAgICBleHRlbnNpb25fdG9rZW4gPSBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgaWYgZXh0ZW5zaW9uX3Rv
a2VuIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBleHRlbnNpb24gPSBFeHRl
bnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIG5v
dCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgorICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0
ZSwgZXh0ZW5zaW9uKQorICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJSAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKKworICAgIHJldHVybiBleHRlbnNpb24KKworCitkZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKKyAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgorCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCisgICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCisgICAgIiIiCisg
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
CisgICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JworICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJSBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAg
ICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgZXh0ZW5zaW9u
IGVudHJ5IGZvdW5kJykKKworICAgIHJldHVybiBleHRlbnNpb25fbGlzdAorCisKK2RlZiBmb3Jt
YXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6CisgICAgIiIiRm9ybWF0IGFuIEV4dGVuc2lvblBhcmFt
ZXRlciBvYmplY3QuIiIiCisgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgp
XQorICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFt
ZXRlcnMoKToKKyAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIGZv
cm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShw
YXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycg
JSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKKyAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1h
dHRlZF9wYXJhbXMpCisKKworZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToK
KyAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgor
ICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCisgICAgZm9yIGV4dGVuc2lvbiBpbiBl
eHRlbnNpb25fbGlzdDoKKyAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChm
b3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCisgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0
ZWRfZXh0ZW5zaW9uX2xpc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlOTQzYTVi
ODBhZmRjMGJkYTk1M2FhMmE3MzE5OGI5OWE0NTliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpAQCAtMCwwICsxLDM4NSBA
QAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisiIiJEaXNwYXRjaCBXZWJTb2NrZXQgcmVxdWVzdC4KKyIiIgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgc3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCitf
U09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dzaFwucHkkJykKK19TT1VS
Q0VfU1VGRklYID0gJ193c2gucHknCitfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9
ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKK19UUkFOU0ZFUl9EQVRBX0hBTkRMRVJf
TkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCitfUEFTU0lWRV9DTE9TSU5HX0hBTkRT
SEFLRV9IQU5ETEVSX05BTUUgPSAoCisgICAgJ3dlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZScpCisKKworY2xhc3MgRGlzcGF0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAi
IiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViU29ja2V0IHJlcXVlc3QuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5E
KToKKyAgICAgICAgc3VwZXIoRGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUp
CisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworZGVmIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KToKKyAgICAiIiJEZWZhdWx0IHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgorCisgICAgcmV0dXJu
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICcnCisKKworZGVmIF9ub3JtYWxpemVfcGF0
aChwYXRoKToKKyAgICAiIiJOb3JtYWxpemUgcGF0aC4KKworICAgIEFyZ3M6CisgICAgICAgIHBh
dGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KKworICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRo
ZSBhYnNvbHV0ZSBwYXRoLgorICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcg
b3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCisgICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMg
dXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCisgICAgIiIiCisKKyAgICBwYXRo
ID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQorICAgIHBhdGggPSBvcy5wYXRoLnJl
YWxwYXRoKHBhdGgpCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCisgICAgcmV0
dXJuIHBhdGgKKworCitkZWYgX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNl
X2Rpcik6CisgICAgIiIiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGgg
b2YgYSBXZWJTb2NrZXQgaGFuZGxlciBzb3VyY2UKKyAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3Ry
aW5nIGJ5IHJlbW92aW5nIHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCisgICAg
aXRzIGhlYWQsIHJlbW92aW5nIF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBs
YWNpbmcgcGF0aAorICAgIHNlcGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCisKKyAgICBBcmdzOgor
ICAgICAgICBiYXNlX2RpcjogdGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgorICAgICIi
IgorCisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCisKKyAgICBiYXNl
X2xlbiA9IGxlbihiYXNlX2RpcikKKyAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklY
KQorCisgICAgZGVmIGNvbnZlcnRlcihwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dp
dGgoX1NPVVJDRV9TVUZGSVgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBf
bm9ybWFsaXplX3BhdGggbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5r
IGJyZWFrcworICAgICAgICAjIGZvbGxvd2luZyBwYXRoIGNoZWNrLgorICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChi
YXNlX2Rpcik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gcGF0aFti
YXNlX2xlbjotc3VmZml4X2xlbl0KKworICAgIHJldHVybiBjb252ZXJ0ZXIKKworCitkZWYgX2Vu
dW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAiIiJSZXR1cm5zIGEg
Z2VuZXJhdG9yIHRoYXQgZW51bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBu
YW1lcworICAgIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCisgICAgIiIiCisKKyAgICBmb3Igcm9v
dCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAgICAgZm9y
IGJhc2UgaW4gZmlsZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJh
c2UpCisgICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Cisg
ICAgICAgICAgICAgICAgeWllbGQgcGF0aAorCisKK2NsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0
KToKKyAgICAiIiJBIGhhbmRsZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGEsCisgICAgICAgICAg
ICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgorICAgICAgICBzZWxmLmRvX2V4dHJh
X2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICBzZWxmLnRyYW5zZmVyX2Rh
dGEgPSB0cmFuc2Zlcl9kYXRhCisgICAgICAgIHNlbGYucGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKKworCitkZWYgX3NvdXJjZV9oYW5kbGVyX2Zp
bGUoaGFuZGxlcl9kZWZpbml0aW9uKToKKyAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRp
b24gc3RyaW5nLgorCisgICAgQXJnczoKKyAgICAgICAgaGFuZGxlcl9kZWZpbml0aW9uOiBhIHN0
cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVmaW5lCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCisgICAgIiIiCisKKyAgICBnbG9i
YWxfZGljID0ge30KKyAgICB0cnk6CisgICAgICAgICMgVGhpcyBzdGF0ZW1lbnQgaXMgZ3JhbWF0
aWNhbGx5IGRpZmZlcmVudCBpbiBweXRob24gMiBhbmQgMy4KKyAgICAgICAgIyBIZW5jZSwgeWFw
ZiB3aWxsIGNvbXBsYWluIGFib3V0IHRoaXMuIFRvIG92ZXJjb21lIHRoaXMsIHdlIGRpc2FibGUK
KyAgICAgICAgIyB5YXBmIGZvciB0aGlzIGxpbmUuCisgICAgICAgIGV4ZWMoaGFuZGxlcl9kZWZp
bml0aW9uLCBnbG9iYWxfZGljKSAjIHlhcGY6IGRpc2FibGUKKyAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFu
ZGxlcjonICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKKyAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCisg
ICAgdHJ5OgorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0
cmFjdF9oYW5kbGVyKAorICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19I
QU5EU0hBS0VfSEFORExFUl9OQU1FKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHBh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKKyAgICAgICAgICAgIF9kZWZhdWx0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKKyAgICByZXR1cm4gX0hhbmRsZXJT
dWl0ZSgKKyAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFO
RFNIQUtFX0hBTkRMRVJfTkFNRSksCisgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5n
X2hhbmRzaGFrZV9oYW5kbGVyKQorCisKK2RlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6
CisgICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9t
IHRoZSBnaXZlbiBkaWN0aW9uYXJ5CisgICAgZGljLgorICAgICIiIgorCisgICAgaWYgbmFtZSBu
b3QgaW4gZGljOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRl
ZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRpY1tuYW1lXQorICAgIGlmIG5vdCBjYWxs
YWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5v
dCBjYWxsYWJsZS4nICUgbmFtZSkKKyAgICByZXR1cm4gaGFuZGxlcgorCisKK2NsYXNzIERpc3Bh
dGNoZXIob2JqZWN0KToKKyAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KKwor
ICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5k
bGVycy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAg
cm9vdF9kaXIsCisgICAgICAgICAgICAgICAgIHNjYW5fZGlyPU5vbmUsCisgICAgICAgICAgICAg
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6CisgICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcm9vdF9k
aXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVzIGFyZQorICAg
ICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5fZGlyOiBUaGUgZGly
ZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAgICAgICAgICAgICAg
ICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciByb290
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9kaXIgaXRzZWxmLiAg
SWYgc2Nhbl9kaXIgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICByb290X2RpciBpcyB1
c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCisgICAgICAgICAgICAgICAg
ICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRhaW5zIG1hbnkKKyAg
ICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIGFsbG93X2hh
bmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmlsZXMgZXZlbiBpZiB0aGVp
cgorICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciByb290
X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXAgPSB7fQor
ICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQorICAgICAgICBpZiBzY2FuX2RpciBp
cyBOb25lOgorICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2RpcgorICAgICAgICBpZiBub3Qg
b3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICBv
cy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4
Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMuJyAlIChzY2FuX2Rpciwg
cm9vdF9kaXIpKQorICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIocm9v
dF9kaXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKworICAgIGRlZiBhZGRfcmVzb3Vy
Y2VfcGF0aF9hbGlhcyhzZWxmLCBhbGlhc19yZXNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKKyAgICAgICAgIiIiQWRk
IHJlc291cmNlIHBhdGggYWxpYXMuCisKKyAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0byBh
bGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgaGFuZGxlciBy
ZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCisgICAg
ICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRoCisg
ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2Vs
Zi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KKyAgICAgICAgICAg
IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhdID0gaGFuZGxlcl9z
dWl0ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRj
aEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAgZGVmIHNvdXJjZV93
YXJuaW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5nIGhh
bmRsZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKKworICAg
IGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkRvIGV4
dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICAgICAgU2VsZWN0IGEg
aGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKKyAgICAgICAgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQK
KyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFi
b3J0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBvcGVu
aW5nIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgaGFuZGxlcl9zdWl0
ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAg
aWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAg
ICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRyYV9oYW5kc2hha2UK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0KQor
ICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24g
dG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcg
YW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAnICUKKyAgICAg
ICAgICAgICAgICAoX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLCBlKQorICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2Vw
dGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVOKQorCisgICAgZGVmIHRyYW5zZmVy
X2RhdGEoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkxldCBhIGhhbmRsZXIgdHJhbnNmZXJf
ZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVy
IGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2FzIG5vdCBmb3VuZAorICAg
ICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2VyIGhhbmRsZXIgYWJvcnQg
Y29ubmVjdGlvbgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBUZXJt
aW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4KKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVx
dWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6
ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSkKKyAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0ZS50
cmFuc2Zlcl9kYXRhCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQorCisgICAg
ICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAgICAgIyBDYXRjaCBu
b24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUgaGFuZGxlciBkaWRuJ3QgaGFuZGxlLgorICAgICAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIEludmFs
aWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBiZWZvcmUKKyAgICAgICAgICAgICMgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbi4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RP
Q09MX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19V
TlNVUFBPUlRFRF9EQVRBKQorICAgICAgICBleGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKKyAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAjIEFueSBvdGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQg
dG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAgICAgICAjIGZ1bmN0aW9uLgorICAgICAgICAg
ICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICcl
cyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisgICAgICAgICAgICAgICAgKF9UUkFOU0ZF
Ul9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUpCisgICAgICAgICAg
ICByYWlzZQorCisgICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciByZXNwb25kaW5nIGNs
aWVudCBpbml0aWF0ZWQgY2xvc2luZworICAgICAgICBoYW5kc2hha2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9jbG9zaW5nX2hhbmRz
aGFrZShyZXF1ZXN0KQorCisgICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNlbGYsIHJlc291cmNl
KToKKyAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZvciBleHRyYSBoYW5k
c2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQorICAgICAgICBmb3IgZGF0YSB0cmFuc2ZlcikgZm9y
IHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgZnJhZ21lbnQgPSBOb25lCisgICAgICAgIGlmICcjJyBpbiByZXNvdXJjZToK
KyAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNwbGl0KCcjJywgMSkK
KyAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVzb3VyY2UgPSByZXNv
dXJjZS5zcGxpdCgnPycsIDEpWzBdCisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLl9oYW5k
bGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgYW5k
IGZyYWdtZW50OgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gV2ViU29j
a2V0IFVSSXMnLAorICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKKworICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKToK
KyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMgaW4gdGhlIHNj
YW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBpcyBkZXRlcm1p
bmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIGJ1
aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5nIHRoYXQgdGhl
cmUncworICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBzY2FuX2RpciBh
bmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5CisgICAgICAgICMgY29tcGFyaW5nIHJlYWxwYXRoIG9m
IHRoZW0uCisKKyAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4gU2VlCisgICAg
ICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjAzCisKKyAg
ICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocm9vdF9k
aXIpCisgICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKQor
ICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2RpcikKKyAgICAg
ICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nhbl9yZWFscGF0
aCk6CisgICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIg
YW5kCisgICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpLnN0YXJ0c3dp
dGgocm9vdF9yZWFscGF0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
CisgICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBub3QgdW5kZXIg
cm9vdCBkaXJlY3RvcnknICUgcGF0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBoYW5kbGVyX2Zp
bGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJf
ZmlsZShoYW5kbGVyX2ZpbGUucmVhZCgpKQorICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzLmFwcGVu
ZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmVzb3VyY2UgPSBjb252ZXJ0KHBhdGgpCisgICAgICAgICAgICBpZiByZXNvdXJjZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUGF0aCB0byByZXNv
dXJjZSBjb252ZXJzaW9uIG9uICVzIGZhaWxlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJfc3VpdGUKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2V4dGVuc2lvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0NTM5ZjZmY2UxNGJlZTY1ZDdmYTdhNTgzYWNi
YjY1ZjAyM2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5CkBAIC0wLDAgKzEsNDczIEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldC5odHRwX2hlYWRlcl91dGlsIGltcG9ydCBxdW90ZV9pZl9uZWNl
c3NhcnkKKworIyBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzc2VzLgorX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KKworCitjbGFzcyBF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYu
X2FjdGl2ZSA9IFRydWUKKworICAgIGRlZiByZXF1ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKHNlbGYs
IHByb2Nlc3NvcnMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0X2FjdGl2ZShzZWxmLCBh
Y3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUKKworICAgIGRlZiBpc19hY3Rp
dmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgIGRlZiBfZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHRlbnNpb24gJXMg
aXMgZGVhY3RpdmF0ZWQnLCBzZWxmLm5hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFs
KCkKKyAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2
ZSA9IEZhbHNlCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIF9zZXR1cF9zdHJl
YW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX3N0cmVhbV9v
cHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQorCisKK2RlZiBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6CisgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxv
YXQoJ2luZicpCisgICAgaWYgb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8gPSBm
bG9hdChmaWx0ZXJlZF9ieXRlcykgLyBvcmlnaW5hbF9ieXRlcworCisgICAgbG9nZ2VyLmRlYnVn
KCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAg
ICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfbG9nX2luY29taW5n
X2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6Cisg
ICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0g
ZmxvYXQoJ2luZicpCisgICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8g
PSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcworCisgICAgbG9nZ2VyLmRl
YnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAg
ICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfcGFyc2Vfd2lu
ZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVlIGlmZiB0
aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAgIGdyYW1tYXIgb2YgdGhlIHdpbmRv
dyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAgaWYgYml0cyBpcyBO
b25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcpCisKKyAg
ICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJyb3Igd2ls
bCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0cykKKworICAgICMgRmlyc3QgY29u
ZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgorICAgIGlmIGJp
dHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAxNToKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykKKworICAg
IHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKG9iamVj
dCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1bHQgZGF0
YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJhdGlvLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdG90YWxfb3Jp
Z2luYWxfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKKwor
ICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUK
KworICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fdG90
YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5f
dG90YWxfcmVzdWx0X2J5dGVzKSAvCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29y
aWdpbmFsX2J5dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdp
bmYnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIicGVybWVzc2FnZS1kZWZsYXRlIGV4dGVu
c2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Cisg
ICAgIiIiCisKKyAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJworICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJworICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLiIiIgorCisgICAgICAgIEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICMg
VGhpcyBtZXRob2QgcmV0dXJucyAiZGVmbGF0ZSIgKG5vdCAicGVybWVzc2FnZS1kZWZsYXRlIikg
Zm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgcmV0dXJuICdkZWZsYXRlJwor
CisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgorICAgICAg
ICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKToKKyAgICAg
ICAgICAgIGlmIG5hbWUgbm90IGluIFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0KKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFtZXRlcjogJXInLCBuYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0
cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1NF
UlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93
X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKKyAgICAgICAgaWYgKHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisg
ICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlz
IG5vdCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJvbSBh
IGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgorICAgICAgICAjIGFjY2Vw
dCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgorICAgICAgICBj
bGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cigKKyAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAg
ICAgIGlmIChjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKKyAgICAgICAgICAgICAgICAnY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93
aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorCisgICAgICAg
ICMgTm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQg
d2l0aCB3aW5kb3cKKyAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xp
ZW50X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQorICAgICAgICAjIHNlbnQgdG8gdGhlIGNs
aWVudC4KKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVy
KHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKyAgICAgICAgc2Vs
Zi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29t
cHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgICAgIHJlc3BvbnNlID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKworICAgICAgICBpZiBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2Uu
YWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX21heF93aW5kb3dfYml0cykp
CisKKyAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBy
ZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BB
UkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisgICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgaWYgbm90IGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ1Byb2Nl
c3NvciBpcyBjb25maWd1cmVkIHRvIHVzZSAlcyBidXQgJworICAgICAgICAgICAgICAgICAgICAn
dGhlIGNsaWVudCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Q0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQorCisgICAgICAgIGlmIHNl
bGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgcmVzcG9uc2UuYWRk
X3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXNwb25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
PSVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgp
LCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKSkKKworICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgc2V0X2NsaWVudF9tYXhfd2luZG93
X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZp
ZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyBl
eHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsCisgICAgICAgIGJ1
dCBkb2Vzbid0IHJlZHVjZSB0aGUgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXplIG9mIGl0cyBpbmZs
YXRlci4KKyAgICAgICAgSS5lLiwgeW91IGNhbiB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQg
aW1wbGVtZW50YXRpb24gYnV0IGNhbm5vdAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9m
IHRoaXMgY2xhc3MuCisKKyAgICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIHdp
dGggVHJ1ZSBhbmQgYW4gb2ZmZXIgd2l0aG91dCB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5k
b3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIGlzIHJlY2VpdmVkLAorICAgICAgICAtIChXaGVu
IHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24pIHRoaXMgcHJvY2Vz
c29yCisgICAgICAgICAgZGVjbGluZXMgdGhlIHJlcXVlc3QuCisgICAgICAgIC0gKFdoZW4gcHJv
Y2Vzc2luZyB0aGUgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29y
CisgICAgICAgICAgYWNjZXB0cyB0aGUgcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSB2YWx1ZQorCisgICAgZGVm
IHNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6CisgICAgICAgICIi
IklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAgICAg
ICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBo
YW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlc2V0IGluZmxhdGVyIGZv
ciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBjYW4KKyAgICAgICAgdXNlIHRoaXMgZm9yIHRlc3Rp
bmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QgcmVkdWNlIG1lbW9yeQorICAgICAg
ICB1c2FnZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9jbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxm
LCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZhbHVlKQorCisgICAg
ZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisKKyAgICBkZWYgZGlzYWJs
ZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZhbHNlKQorCisKK2NsYXNzIF9QZXJNZXNzYWdlRGVm
bGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEgZnJhbWVyIGZvciBleHRlbnNpb25zIHdpdGgg
cGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
ZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAg
ICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAg
ICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92
ZXIpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKKworICAgICAgICBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKKworICAgICAgICAjIFRydWUgaWYgYSBt
ZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9uIGlzIG9uZ29pbmcuCisgICAgICAg
IHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQorCisgICAgICAgICMgQ2FsY3VsYXRlcwor
ICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0
ZXIpIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0
ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2Vf
cmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKKworICAgICAgICAj
IENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVk
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCisKKyAgICBk
ZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVl
CisKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgor
ICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gdmFsdWUKKworICAgIGRl
ZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgor
ICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKKyAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisK
KyAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCisgICAgICAgIHNl
bGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAor
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAgICAgIGZpbHRlcmVk
X3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25f
cmF0aW8oCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKKworICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKwor
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygK
KyAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1lbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmluYWw9c2VsZi5fYmZpbmFsKQorCisg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxm
Ll9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKKyAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBfbG9nX291dGdvaW5n
X2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLCBvcmlnaW5hbF9w
YXlsb2FkX3NpemUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQorCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgorICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQorICAgICAgICBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nID0gbm90IGVuZAorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisg
ICAgZGVmIF9wcm9jZXNzX2luY29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAgICAgaWYg
ZnJhbWUucnN2MSA9PSAxIGFuZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSk6CisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXBy
ZXNzX25leHRfbWVzc2FnZSgpCisgICAgICAgICAgICBmcmFtZS5yc3YxID0gMAorCisgICAgZGVm
IF9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgor
ICAgICAgICBpZiAobm90IGNvbXByZXNzaW9uX2JpdCBvciBjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmcmFtZS5y
c3YxID0gMQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0
cmVhbU9wdGlvbnMuIiIiCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2Jq
ZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNl
bGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSgKKyAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgY2xhc3MgX0luY29taW5n
TWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0ID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQoc2Vs
Zik6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUKKwor
ICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKGZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxz
ZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1l
KQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1l
RmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNv
bWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVu
ZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikKKworICAgICAgICBz
dHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQorCisKK19h
dmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0g
PSAoCisgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisKKworZGVmIGdl
dF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToKKyAgICAiIiJHaXZlbiBh
biBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVuc2lvbiBvZmZlciByZWNl
aXZlZAorICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBleHRlbnNpb24gcHJvY2Vzc29yIGNsYXNzLgor
ICAgICIiIgorCisgICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJsZV9wcm9jZXNzb3JzLmdl
dChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCisgICAgaWYgcHJvY2Vzc29yX2NsYXNzIGlzIE5v
bmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHByb2Nlc3Nvcl9jbGFzcyhleHRl
bnNpb25fcmVxdWVzdCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGFhZDI3
ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCkBAIC0wLDAgKzEs
OTggQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisl
bW9kdWxlIGZhc3RfbWFza2luZworCislaW5jbHVkZSAiY3N0cmluZy5pIgorCisleworI2luY2x1
ZGUgPGNzdHJpbmc+CisKKyNpZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgor
I2VuZGlmCislfQorCislYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgeworICAgIChj
b25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAorICAgIChjb25zdCBjaGFy
KiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKKyVjc3RyaW5nX291dHB1
dF9hbGxvY2F0ZV9zaXplKAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwg
ZGVsZXRlIFtdICokMSk7CisKKyVpbmxpbmUgJXsKKwordm9pZCBtYXNrKAorICAgIGNvbnN0IGNo
YXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKKyAgICBjb25zdCBjaGFyKiBtYXNraW5n
X2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKKyAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgs
CisgICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7CisgICpyZXN1bHQgPSBu
ZXcgY2hhcltwYXlsb2FkX2xlbmd0aF07CisgICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5n
dGg7CisgIG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7CisKKyAgY2hh
ciogY3Vyc29yID0gKnJlc3VsdDsKKyAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVz
dWx0X2xlbmd0aDsKKworI2lmZGVmIF9fU1NFMl9fCisgIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29y
X2VuZCkgJiYKKyAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4
ZikpIHsKKyAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAg
ICArK2N1cnNvcjsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCAr
IDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisgIGlmIChjdXJzb3IgPT0gY3Vyc29yX2Vu
ZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Cisg
IF9fbTEyOGkgbWFza2luZ19rZXlfYmxvY2s7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2Nr
U2l6ZTsgKytpKSB7CisgICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlf
YmxvY2spICsgaSkgPQorICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Cisg
ICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdf
a2V5X2xlbmd0aDsKKyAgfQorCisgIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNv
cl9lbmQpIHsKKyAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQorICAgICAgICBfbW1fbG9hZF9z
aTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKKyAgICBfbW1fc3RyZWFt
X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCisgICAgICAgICAgICAg
ICAgICAgICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7
CisgICAgY3Vyc29yICs9IGtCbG9ja1NpemU7CisgIH0KKyNlbmRpZgorCisgIHdoaWxlIChjdXJz
b3IgPCBjdXJzb3JfZW5kKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF07CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2lu
Z19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorfQorCislfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiZTVhZTlmZGZkNDZkMTg5NzBiZjk5MmNjMWFkZWEyNWFj
YzVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMgQ29weXJpZ2h0IDIw
MTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4gVGhpcyBjbGFzcyB0
cnkgdG8gYXBwbHkgYXZhaWxhYmxlCitvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBl
YWNoIHByb3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCitzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaQorIyBFeHBvcnQgQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwgSGFuZHNoYWtlRXhjZXB0aW9uLCBhbmQgVmVyc2lvbkV4Y2Vw
dGlvbgorIyBzeW1ib2wgZnJvbSB0aGlzIG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgor
CitfTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIGRvX2hhbmRz
aGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAiIiJQZXJmb3JtcyBXZWJTb2NrZXQgaGFu
ZHNoYWtlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgorICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4K
KworICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNl
IGluIHBlcmZvcm1pbmcKKyAgICBoYW5kc2hha2UuCisgICAgIiIiCisKKyAgICBfTE9HR0VSLmRl
YnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgcmVzb3VyY2U6ICVyJywgcmVxdWVzdC51
cmkpCisgICAgIyBUbyBwcmludCBtaW1ldG9vbHMuTWVzc2FnZSBhcyBlc2NhcGVkIG9uZS1saW5l
IHN0cmluZywgd2UgY29udmVydHMKKyAgICAjIGhlYWRlcnNfaW4gdG8gZGljdCBvYmplY3QuIFdp
dGhvdXQgY29udmVyc2lvbiwgaWYgd2UgdXNlICVyLCBpdCBqdXN0CisgICAgIyBwcmludHMgdGhl
IHR5cGUgYW5kIGFkZHJlc3MsIGFuZCBpZiB3ZSB1c2UgJXMsIGl0IHByaW50cyB0aGUgb3JpZ2lu
YWwKKyAgICAjIGhlYWRlciBzdHJpbmcgYXMgbXVsdGlwbGUgbGluZXMuCisgICAgIworICAgICMg
Qm90aCBtaW1ldG9vbHMuTWVzc2FnZSBhbmQgTXBUYWJsZV9UeXBlIG9mIG1vZF9weXRob24gY2Fu
IGJlCisgICAgIyBjb252ZXJ0ZWQgdG8gZGljdC4KKyAgICAjCisgICAgIyBtaW1ldG9vbHMuTWVz
c2FnZS5fX3N0cl9fIHJldHVybnMgdGhlIG9yaWdpbmFsIGhlYWRlciBzdHJpbmcuCisgICAgIyBk
aWN0KG1pbWV0b29scy5NZXNzYWdlIG9iamVjdCkgcmV0dXJucyB0aGUgbWFwIGZyb20gaGVhZGVy
IG5hbWVzIHRvCisgICAgIyBoZWFkZXIgdmFsdWVzLiBXaGlsZSBNcFRhYmxlX1R5cGUgZG9lc24n
dCBoYXZlIHN1Y2ggX19zdHJfXyBidXQganVzdAorICAgICMgX19yZXByX18gd2hpY2ggZm9ybWF0
cyBpdHNlbGYgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgICBfTE9HR0VSLmRlYnVn
KCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAg
ICAgICAgZGljdChyZXF1ZXN0LmhlYWRlcnNfaW4pKQorCisgICAgaGFuZHNoYWtlcnMgPSBbXQor
ICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgoJ1JGQyA2NDU1JywgaHliaS5IYW5kc2hha2VyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpKSkKKworICAgIGZvciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFr
ZXJzOgorICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycs
IG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKKyAgICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVzIHByb3RvY29sKScs
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
RmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcics
CisgICAgICAgICAgICAgICAgbmFtZSwgZSkKKyAgICAgICAgICAgIGlmIGUuc3RhdHVzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorCisgICAgIyBUT0RPKHRveW9zaGltKTogQWRk
IGEgdGVzdCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFpbC4KKyAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3Blbmlu
ZyBoYW5kc2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKKyAgICAgICAgc3RhdHVz
PWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1OGRkOGQ0OTdkOWQ4OWRkOWMxMDQzMmJjZGJhM2U5MDNlMWI2
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CkBAIC0wLDAgKzEsMTc5IEBACisjIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkNvbW1vbiBmdW5jdGlvbnMgYW5kIGV4Y2VwdGlvbnMgdXNlZCBieSBXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UKK3Byb2Nlc3NvcnMuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKworY2xhc3MgQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRp
bmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFsbHkuCisKKyAgICBJZiB0aGlzIGV4Y2VwdGlvbiBp
cyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCisg
ICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRs
ZXIgd2lsbCBiZSBpbnZva2VkLgorCisgICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlu
IHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAorICAgIGJlIGNsb3Nl
ZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChT
KSBoYW5kbGVyCisgICAgd2lsbCBiZSBpbnZva2VkLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2lu
ZworICAgIFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgc3RhdHVzPU5vbmUpOgorICAgICAgICBzdXBlcihIYW5kc2hha2VF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3Rh
dHVzCisKKworY2xhc3MgVmVyc2lvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMg
ZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSB2ZXJzaW9uIG9mIGNsaWVudCByZXF1ZXN0
IGRvZXMgbm90CisgICAgbWF0Y2ggd2l0aCB2ZXJzaW9uIHRoZSBzZXJ2ZXIgc3VwcG9ydHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0n
Jyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEgc3RyIG9iamVjdCB0byBzaG93IHN1cHBv
cnRlZCBoeWJpIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcu
ICcxMycpCisgICAgICAgICIiIgorICAgICAgICBzdXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxm
KS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBv
cnRlZF92ZXJzaW9ucworCisKK2RlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6CisgICAg
aWYgaXNfc2VjdXJlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9T
RUNVUkVfUE9SVAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQKKworCitkZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgor
ICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmll
bGQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMg
NjQ1NS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBzdWJwcm90b2NvbDoKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29sIG5hbWU6IGVtcHR5JykKKwor
ICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4uCisgICAgc3RhdGUg
PSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShzdWJwcm90b2NvbCkKKyAgICB0b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICByZXN0ID0gaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQorICAgICMgSWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3Vi
cHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3IgaW52YWxpZC4gSWYKKyAgICAjIHxyZXN0fCBp
cyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlz
CisgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5v
bmUuCisgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9jb2wgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJlc3QpCisKKworZGVmIHBh
cnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgorICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19p
bltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKKyAgICBpZiBsZW4oZmllbGRzKSA9
PSAxOgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3Qu
aXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVs
ZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUgZSkKKworCitk
ZWYgZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSk6CisgICAgcmV0dXJuIHUnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCisKKworZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6CisgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKKyAgICBpZiB2YWx1
ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6CisgICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
CisKKyAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6CisgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKKyAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksCisgICAgICAgICAgICBzdGF0dXM9ZmFp
bF9zdGF0dXMpCisKKworZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KToKKyAgICAjIDUu
MSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4KKyAgICAjIDUuMSAy
LiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRlKS4KKyAg
ICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSB1J0dFVCc6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisgICAg
aWYgcmVxdWVzdC5wcm90b2NvbCAhPSB1J0hUVFAvMS4xJzoKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCisKKworZGVmIHBhcnNlX3Rv
a2VuX2xpc3QoZGF0YSk6CisgICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxv
d3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKKyAgICBhcyBhIGxpc3Qgb2Yg
c3RyaW5ncy4KKworICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgorICAgICIiIgor
CisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAg
dG9rZW5fbGlzdCA9IFtdCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0b2tlbiA9IGh0dHBf
aGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKKworICAgICAgICBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbih0b2tlbl9saXN0KSA9PSAwOgorICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ05vIHZhbGlkIHRva2VuIGZvdW5kJykKKworICAg
IHJldHVybiB0b2tlbl9saXN0CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZkNjNlYjYzZWRkMWY0YWNmODg3ZGYzNWQ0YmRjM2I2ZTEzOTkxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5w
eQpAQCAtMCwwICsxLDM5NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgcHJvdmlk
ZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAorcHJv
dG9jb2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydAoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJl
Citmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVu
c2lvbl9wcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgY2hlY2tfcmVxdWVzdF9saW5lCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9z
dWJwcm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBW
ZXJzaW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAor
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKyMgVXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFs
dWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2NDgKKyMg
ZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQgYmVmb3Jl
ID09IG11c3QgYmUgYW55IG9mCisjIEEsIFEsIGcgYW5kIHcuCitfU0VDX1dFQlNPQ0tFVF9LRVlf
UkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQorCisjIERl
ZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRF
U1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9
IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJT
SU9OX0xBVEVTVCwKK10KKworCitkZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKKyAgICAiIiJDb21w
dXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9tIHZhbHVl
IG9mIHRoZQorICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAiIiIKKworICAgIGFj
Y2VwdF9iaW5hcnkgPSBzaGExKGtleSArIGNvbW1vbi5XRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRp
Z2VzdCgpCisgICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2NlcHRfYmluYXJ5KQorCisg
ICAgcmV0dXJuIGFjY2VwdAorCisKK2RlZiBjb21wdXRlX2FjY2VwdF9mcm9tX3VuaWNvZGUodW5p
Y29kZV9rZXkpOgorICAgICIiIkEgd3JhcHBlciBmdW5jdGlvbiBmb3IgY29tcHV0ZV9hY2NlcHQg
d2hpY2ggdGFrZXMgYSB1bmljb2RlIHN0cmluZyBhcyBhbgorICAgIGFyZ3VtZW50LCBhbmQgZW5j
b2RlcyBpdCB0byBieXRlIHN0cmluZy4gSXQgdGhlbiBwYXNzZXMgaXQgb24gdG8KKyAgICBjb21w
dXRlX2FjY2VwdC4KKyAgICAiIiIKKworICAgIGtleSA9IHVuaWNvZGVfa2V5LmVuY29kZSgnVVRG
LTgnKQorICAgIHJldHVybiBjb21wdXRlX2FjY2VwdChrZXkpCisKKworY2xhc3MgSGFuZHNoYWtl
cihvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
CisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVy
KS4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19y
ZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9s
b2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisg
ICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgY29ubmVj
dGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tl
bl9saXN0KGNvbm5lY3Rpb24pCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRmFpbGVkIHRvIHBhcnNl
ICVzOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24u
Q09OTkVDVElPTl9IRUFERVIsIGUpKQorCisgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBG
YWxzZQorICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6CisgICAgICAgICAg
ICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dl
cigpOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6CisgICAg
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIGhl
YWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLkNP
Tk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQorCisgICAg
ZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9j
b2RlID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUK
KworICAgICAgICAjIFBhcnNpbmcuCisKKyAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYu
X3JlcXVlc3QpCisKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1
ZXN0LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCisKKyAgICAgICAgc2VsZi5fdmFs
aWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVz
b3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIHVudXNlZF9ob3N0ID0gZ2V0X21h
bmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgY29tbW9uLkhPU1RfSEVBREVSKQorCisgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3ZlcnNpb24oKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQorICAgICAgICAgICAg
c2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMo
KQorCisgICAgICAgICAgICAjIEtleSB2YWxpZGF0aW9uLCByZXNwb25zZSBnZW5lcmF0aW9uLgor
CisgICAgICAgICAgICBrZXkgPSBzZWxmLl9nZXRfa2V5KCkKKyAgICAgICAgICAgIGFjY2VwdCA9
IGNvbXB1dGVfYWNjZXB0KGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6
ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1dGlsLmhleGlmeShiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkpKQorCisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQorCisg
ICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorCisgICAgICAgICAgICBw
cm9jZXNzb3JzID0gW10KKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVk
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9y
ZXF1ZXN0IGluIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NvciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lv
bl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVl
c3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHBy
b2Nlc3NvcikKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMgPSBwcm9jZXNzb3JzCisKKyAgICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBU
aGUgZXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IGFkZCBoZWFkZXIKKyAgICAgICAgICAgICMg
ZGF0YSBhcyBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBw
ZW5kcworICAgICAgICAgICAgIyB0aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFkZXJzID0gW10KKworICAgICAgICAgICAg
IyBFeHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgor
ICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVx
dWVzdCkKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yCisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgICMgQXNrIGVhY2ggcHJvY2Vzc29yIGlm
IHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdoaWNoCisgICAgICAgICAgICAj
IGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRlZCBvdGhlciBwcm9jZXNzb3Jz
IGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0LCB0aGUgcHJvY2Vzc29yIG1h
cmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMgImluYWN0aXZlIi4gVGhlIGZp
cnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0bworICAgICAgICAgICAgIyBt
YWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiByZXZlcnNl
ZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19jb25zaXN0ZW5jeV93aXRoX290
aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQorICAg
ICAgICAgICAgcHJvY2Vzc29ycyA9IFsKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgZm9yIHBy
b2Nlc3NvciBpbiBwcm9jZXNzb3JzIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKQorICAgICAgICAg
ICAgXQorCisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KKworICAgICAgICAg
ICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKworICAgICAgICAgICAgZm9yIGlu
ZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3Bv
bnNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgUmVqZWN0ZWQuCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25z
LmFwcGVuZChleHRlbnNpb25fcmVzcG9uc2UpCisKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICAgICAgICAgICAgICAj
IEluYWN0aXZhdGUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcHJlc3Npb24gZXh0ZW5zaW9ucy4K
KyAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3Jz
KSk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkK
KworICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25z
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAg
ICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAgICBsaXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zKSkpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9ucyA9IE5vbmUKKworICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxm
Ll9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
ZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQg
dG8gd3NfcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xp
ZW50IGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnBy
b3RvY29sJykKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQorICAg
ICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBub3Qg
ZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAgYmFkIHJlcXVlc3Qg
YnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVAorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgZGVmIF9nZXRfb3JpZ2lu
KHNlbGYpOgorICAgICAgICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJTl9IRUFERVIKKyAg
ICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChvcmlnaW5faGVhZGVy
KQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50IHJlcXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVhZGVyJykKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmlnaW4KKworICAgIGRlZiBfY2hlY2tfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYu
X3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUikKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVS
U0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAor
CisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICgl
cikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAgICAgICAgICAodmVy
c2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAorICAgICAgICAgICAg
ICAgIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisgICAgICAgIHJhaXNl
IFZlcnNpb25FeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQorCisgICAgZGVmIF9zZXRf
cHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
CisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKKwor
ICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rv
a2VuX2xpc3QoCisgICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQorCisgICAg
ZGVmIF9wYXJzZV9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9
IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCisgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUikKKyAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVh
ZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAgICAgICAgZXhjZXB0
IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAor
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBrZXkpOgor
ICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVnYWwgY2hh
cmFjdGVyIFwnLFwnOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisgICAgICAgICMgVmFs
aWRhdGUKKyAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBhcnNpbmcg
YnkgYmFzZTY0CisgICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9kdWxlIHNr
aXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQorICAgICAgICAgICAgIyB0byBkbyB0aGlz
IGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxsZWdhbAor
ICAgICAgICAgICAgIyBrZXlzLgorICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRfS0VZX1JF
R0VYLm1hdGNoKGtleSk6CisgICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNlNjQuYjY0
ZGVjb2RlKGtleSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09IDE2Ogor
ICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBU
eXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBub3Qga2V5X2lz
X3ZhbGlkOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbGxlZ2FsIHZh
bHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSkpCisKKyAgICAgICAg
cmV0dXJuIGRlY29kZWRfa2V5CisKKyAgICBkZWYgX2dldF9rZXkoc2VsZik6CisgICAgICAgIGtl
eSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCisKKyAg
ICAgICAgZGVjb2RlZF9rZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQorCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlf
SEVBREVSLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShkZWNv
ZGVkX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGtleS5lbmNvZGUoJ1VURi04JykKKworICAgIGRl
ZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHJldHVybiBT
dHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKKyAgICAgICAgcmVzcG9uc2UgPSBbXQor
CisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9j
b2xzXHJcbicpCisKKyAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycworICAgICAgICByZXNwb25z
ZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNvbW1vbi5VUEdSQURFX0hFQURF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZ
UEUpKQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVy
KGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAor
ICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVB
REVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQuZGVjb2RlKCdVVEYtOCcpKSkK
KyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNv
bW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQorICAgICAgICBpZiAoc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYW5kIGxl
bihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKAorICAgICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoCisgICAgICAgICAgICAg
ICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLAorICAgICAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0
CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6
CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkp
CisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUnXHJcbicpCisKKyAgICAgICAgcmV0dXJuIHUn
Jy5qb2luKHJlc3BvbnNlKQorCisgICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQp
OgorICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
KGFjY2VwdCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHJhd19yZXNw
b25zZS5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBz
ZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhd19yZXNwb25zZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1OThmNTcwZjJkYzFlZTAxNjJkOTk2ZDY4ODVjYTBiZDZhYjdmMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlZDkwYjI0N2I4ZGVkOWYyNTRkYWJhNzA5MDljYmM4ZmYzYzgyZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJf
dXRpbC5weQpAQCAtMCwwICsxLDI1NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJVdGlsaXRpZXMg
Zm9yIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVhZGVycyB0aGF0IGZvbGxvdyB0aGUgZ3JhbW1h
ciBkZWZpbmVkCitpbiBIVFRQIFJGQyBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjE2LnR4
dC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UKKworX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/
PXt9IFx0JworCisKK2RlZiBfaXNfY2hhcihjKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMg
aXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCisKKyAgICByZXR1cm4gb3Jk
KGMpIDw9IDEyNworCisKK2RlZiBfaXNfY3RsKGMpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZmYg
YyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisgICAgcmV0dXJuIG9y
ZChjKSA8PSAzMSBvciBvcmQoYykgPT0gMTI3CisKKworY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGEgPSBk
YXRhCisgICAgICAgIHNlbGYuaGVhZCA9IDAKKworCitkZWYgcGVlayhzdGF0ZSwgcG9zPTApOgor
ICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20gdGhlIGhlYWQgb2YgZGF0YS4i
IiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0YXRlLmRhdGEpOgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgcmV0dXJuIHN0YXRlLmRhdGFbc3RhdGUuaGVhZCArIHBvc10K
KworCitkZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgorICAgICIiIkNvbnN1bWVzIHNwZWNp
ZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQgcmV0dXJucyB0aGUKKyAgICBj
b25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5dGVzIHRvIGNvbnN1bWUsIHJl
dHVybnMgTm9uZS4KKyAgICAiIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBhbW91bnQgPiBsZW4o
c3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXN1bHQgPSBzdGF0ZS5k
YXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KKyAgICBzdGF0ZS5oZWFkID0gc3Rh
dGUuaGVhZCArIGFtb3VudAorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgY29uc3VtZV9zdHJp
bmcoc3RhdGUsIGV4cGVjdGVkKToKKyAgICAiIiJHaXZlbiBhIHBhcnNpbmcgc3RhdGUgYW5kIGEg
ZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZyb20KKyAgICB0aGUgaGVhZC4g
UmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3aXNlLCByZXR1cm5z
CisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBwb3MgPSAwCisKKyAgICBmb3IgYyBpbiBleHBl
Y3RlZDoKKyAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3MpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHBvcyArPSAxCisKKyAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3Moc3RhdGUpOgorICAgICIiIkNvbnN1
bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBpZiBhbnkgTFdTIGlzIGNvbnN1
bWVkLgorICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KKworICAgIExXUyA9IFtDUkxGXSAx
KiggU1AgfCBIVCApCisgICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0gc3RhdGUuaGVhZAor
CisgICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKKworICAgIHBvcyA9IDAKKworICAg
IHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlmIGMg
PT0gJyAnIG9yIGMgPT0gJ1x0JzoKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBpZiBwb3MgPT0gMDoKKyAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkID0g
b3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3NlcyhzdGF0ZSk6CisgICAgIiIiQ29u
c3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgorCisgICAgd2hpbGUgY29uc3VtZV9sd3Moc3Rh
dGUpOgorICAgICAgICBwYXNzCisKKworZGVmIGNvbnN1bWVfdG9rZW4oc3RhdGUpOgorICAgICIi
IkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJucyB0aGUgdG9rZW4gb3IgTm9u
ZSBpZiBubyB0b2tlbgorICAgIHdhcyBmb3VuZC4KKyAgICAiIiIKKworICAgIHBvcyA9IDAKKwor
ICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlm
IGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19j
aGFyKGMpOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3RhdGUsIHBvcykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHBvcyArPSAxCisKKworZGVmIGNvbnN1bWVfdG9rZW5fb3JfcXVv
dGVkX3N0cmluZyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBvciBhIHF1b3RlZC1z
dHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3RlZAorICAgIHN0cmluZy4gSWYg
bm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJldHVybnMgTm9uZS4KKyAgICAi
IiIKKworICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBpZiBub3QgY29uc3Vt
ZV9zdHJpbmcoc3RhdGUsICciJyk6CisgICAgICAgIHJldHVybiBjb25zdW1lX3Rva2VuKHN0YXRl
KQorCisgICAgcmVzdWx0ID0gW10KKworICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCisK
KyAgICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBub3QgZXhwZWN0X3F1b3RlZF9wYWlyIGFuZCBj
b25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJykKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYyA9IGNvbnN1bWUoc3RhdGUpCisgICAgICAgIGlm
IGMgaXMgTm9uZToKKyAgICAgICAgICAgICMgcXVvdGVkLXN0cmluZyBpcyBub3QgZW5jbG9zZWQg
d2l0aCBkb3VibGUgcXVvdGF0aW9uCisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxf
aGVhZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBleHBlY3RfcXVvdGVk
X3BhaXI6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxzZQorICAgICAgICAg
ICAgaWYgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vbiBDSEFSIGNoYXJhY3RlciBmb3Vu
ZCBpbiBxdW90ZWQtcGFpcgorICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9o
ZWFkCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBjID09ICdcXCc6
CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVlCisgICAgICAgIGVsaWYgYyA9
PSAnIic6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisgICAgICAgIGVsaWYg
X2lzX2N0bChjKToKKyAgICAgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXIgJXIgZm91bmQgaW4g
cWR0ZXh0CisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YykKKworCitkZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgorICAgICIiIlF1b3RlcyBhcmJpdHJh
cnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKKworICAgIHF1b3RlID0gRmFsc2UKKyAg
ICBpZiBzID09ICcnOgorICAgICAgICByZXR1cm4gJyIiJworCisgICAgcmVzdWx0ID0gW10KKyAg
ICBmb3IgYyBpbiBzOgorICAgICAgICBpZiBjID09ICciJyBvciBjIGluIF9TRVBBUkFUT1JTIG9y
IF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVl
CisKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xcJyArIGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGMpCisKKyAgICBpZiBxdW90ZToKKyAgICAgICAgcmV0dXJuICciJyArICcnLmpvaW4ocmVz
dWx0KSArICciJworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgcGFyc2VfdXJpKHVyaSk6CisgICAgIiIiUGFyc2UgYWJzb2x1dGUgVVJJIHRoZW4gcmV0
dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgorCisgICAgcGFyc2VkID0gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmkpCisgICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3Nz
JyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgorICAgICAgICAjIHx1cml8IG11c3QgYmUgYSBy
ZWxhdGl2ZSBVUkkuCisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8
dXJpfC4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVyaQorCisgICAgaWYgcGFyc2VkLmhv
c3RuYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAgICBw
b3J0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0CisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICMgVGhlIHBvcnQgcHJvcGVydHkgY2F1c2UgVmFsdWVF
cnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbnMKKyAgICAgICAgIyBsaWtlICd3
czovL2hvc3Q6SU5WQUxJRF9QT1JUL3BhdGgnLCB3aGVyZSB0aGUgYXNzaWduZWQgcG9ydCBpcyBu
b3QKKyAgICAgICAgIyAqRElHSVQuIEZvciBweXRob24gMy42IGFuZCBsYXRlciwgVmFsdWVFcnJv
ciBhbHNvIHJhaXNlcyB3aGVuCisgICAgICAgICMgYXNzaWduaW5nIGludmFsaWQgcG9ydCBudW1i
ZXJzIHN1Y2ggYXMgJ3dzOi8vaG9zdDotMS9wYXRoJy4gRWFybGllcgorICAgICAgICAjIHZlcnNp
b25zIHNpbXBseSByZXR1cm4gTm9uZSBhbmQgaWdub3JlIGludmFsaWQgcG9ydCBhdHRyaWJ1dGVz
LgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgaWYgcG9ydCBpcyBOb25l
OgorICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICd3cyc6CisgICAgICAgICAgICBwb3J0ID0g
ODAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcnQgPSA0NDMKKworICAgIHBhdGggPSBw
YXJzZWQucGF0aAorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoICs9ICcvJworICAgIGlm
IHBhcnNlZC5xdWVyeToKKyAgICAgICAgcGF0aCArPSAnPycgKyBwYXJzZWQucXVlcnkKKyAgICBp
ZiBwYXJzZWQuZnJhZ21lbnQ6CisgICAgICAgIHBhdGggKz0gJyMnICsgcGFyc2VkLmZyYWdtZW50
CisKKyAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lLCBwb3J0LCBwYXRoCisKKworIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVt
b3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1Mzk2NzYxODQ3YTY4NDA0NjQ4NDBiMGU3MmVi
YzdiYTE1MGU0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTWVtb3JpemluZyBmaWxlLgorCitBIG1l
bW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJl
YWRsaW5lLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgc3lzCisKKworY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKKyAgICAiIiJNZW1v
cml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRs
aW5lLgorCisgICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3Qg
bWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCisgICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXpp
bmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBiZWZvcmUKKyAgICB0aGUgY29udHJvbCBy
ZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlXywgbWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4c2l6ZSk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg
ZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAgbWF4X21lbW9yaXpl
ZF9saW5lczogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgorICAgICAg
ICAgICAgICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXpl
ZC4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCisgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9
IFtdCisgICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xp
bmVzCisgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fYnVmZmVy
ZWRfbGluZSA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgor
ICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgCisgICAgICAgIFJl
dHVybnMgdGhlIHZhbHVlIG92ZXJyaWRkZW4gYnkgdGhpcyBjbGFzcyBmb3Igc29tZSBhdHRyaWJ1
dGVzLAorICAgICAgICBhbmQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gX2ZpbGUgZm9yIHRoZSBvdGhl
ciBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSBpbiAoJ19maWxlJywg
J19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAorICAgICAgICAgICAg
ICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3JlYWRsaW5lJywKKyAgICAg
ICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwg
c2l6ZT0tMSk6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUgYW5kIG1lbW9yaXpl
IHRoZSBsaW5lIHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGV2ZW4gaWYgc2l6ZSBpcyBzcGVj
aWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKKyAgICAgICAgdGhlIHdob2xlIGxp
bmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgYnkKKyAgICAg
ICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuX2J1ZmZlcmVkOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcmVkX2xpbmUKKyAg
ICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5k
IGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21lbW9yaXplZF9saW5lczoK
KyAgICAgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMuYXBwZW5kKGxpbmUpCisgICAg
ICAgIGlmIHNpemUgPj0gMCBhbmQgc2l6ZSA8IGxlbihsaW5lKToKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlcmVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IGxpbmVb
c2l6ZTpdCisgICAgICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIGxp
bmUKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQg
bGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21lbW9yaXpl
ZF9saW5lcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThjYTc4ZTE0YWQyNWU3YTQ0ZDFh
YjI2MmU3YmQzNWNlYWVhNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KKworTm90ZTogcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCitt
b2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4g
Y29ubmVjdGlvbgoraGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0
aW9ucy4gRm9yIGV4YW1wbGUsCityZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBi
ZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdworYnl0ZXMgd3JpdGluZy9yZWFkaW5n
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
c2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCisKKyMgRXhwb3J0IEV4Y2VwdGlvbiBz
eW1ib2xzIGZyb20gbXNndXRpbCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9y
dCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhj
ZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KKwor
CisjIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2ViU29ja2V0IG1lc3NhZ2Vz
LgorZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgIiIiQ2xvc2UgY29ubmVjdGlv
bi4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAg
ICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKworCitkZWYg
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6CisgICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBtZXNzYWdlKS4KKworICAg
IEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgcGF5
bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBzZW5kLgorICAgICAgICBl
bmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KKyAgICAgICAgICAgICBGYWxzZSB0byBz
ZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0IGlzIHRvIGJlCisgICAg
ICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRfbWVzc2FnZSBjYWxsIHdp
dGggZW5kPVRydWUuCisgICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2FkX2RhdGEgYXMgYmluYXJ5
IGZyYW1lKHMpLgorICAgIFJhaXNlczoKKyAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3
aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpCisKKworZGVmIHJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKKyAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1l
IGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisgICAgdW5pY29kZSBvciBhIGJp
bmFyeSBpbiBzdHIuCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJl
cXVlc3QuCisgICAgUmFpc2VzOgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246ICAgICB3
aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCisgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVF
eGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJhbWUgZS5nLiBzb21lCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2VydmVkIGJpdCBpcyBzZXQg
YnV0IG5vIGV4dGVuc2lvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjb2duaXplIGl0LgorICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlvbjogICAgICB3aGVuIGNs
aWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAgICAgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRseS4KKyAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFkeSB0ZXJtaW5hdGVkLgor
ICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQor
CisKK2RlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keSk6CisgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9waW5nKGJvZHkpCisKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRocmVhZGluZy5UaHJl
YWQpOgorICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50
LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJlY2VpdmUgbWVzc2Fn
ZXM6IGJsb2NraW5nLAorICAgIG5vbi1ibG9ja2luZywgYW5kIHZpYSBjYWxsYmFjay4gQ2FsbGJh
Y2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNo
b3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAg
YmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9y
IGlmIHRoZSBzb2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBvbm1lc3Nh
Z2U6IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgor
ICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5j
dGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQu
IEluIHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKKyAgICAgICAgICAgICAgICAg
ICAgICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcworICAg
ICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1l
c3NhZ2VzLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuX3F1
ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5fb25tZXNzYWdlID0g
b25tZXNzYWdlCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisKKyAgICBkZWYgcnVu
KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9y
ZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxm
Ll9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCisK
KyAgICBkZWYgcmVjZWl2ZShzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZy
b20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg
ICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fcXVldWUuZ2V0KCkKKworICAgIGRlZiByZWNlaXZlX25vd2FpdChzZWxmKToKKyAg
ICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2lu
Zy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUg
c3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCisg
ICAgICAgIGV4Y2VwdCBzaXgubW92ZXMucXVldWUuRW1wdHk6CisgICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIHN0b3Aoc2VsZik6Cisg
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgorCisgICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
CisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKKyAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCisKKworY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKKyAgICBtZXNzYWdlcy4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAorICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9xdWV1
ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUp
CisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdl
dCgpCisgICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBzZW5kX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5ub3Rp
ZnkoKQorICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmQoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKKwor
ICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgY29uZGl0
aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlv
bikpCisgICAgICAgIGNvbmRpdGlvbi53YWl0KCkKKworICAgIGRlZiBzZW5kX25vd2FpdChzZWxm
LCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIK
KworICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24o
KSkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDM4ZDlmNDNh
Y2QzN2JmNWExYjEwYTBjZTU1ODViZDUxZWQ2MDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpAQCAtMCwwICsx
LDMxOSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSZXF1ZXN0IEhhbmRsZXIgYW5kIFJlcXVlc3Qv
Q29ubmVjdGlvbiBjbGFzc2VzIGZvciBzdGFuZGFsb25lIHNlcnZlci4KKyIiIgorCitpbXBvcnQg
b3MKKworZnJvbSBzaXgubW92ZXMgaW1wb3J0IENHSUhUVFBTZXJ2ZXIKK2Zyb20gc2l4Lm1vdmVz
IGltcG9ydCBodHRwX2NsaWVudAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9u
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hl
YWRlcl91dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKyMgMTAyNCBpcyBwcmFjdGljYWxseSBs
YXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgorX01BWF9N
RU1PUklaRURfTElORVMgPSAxMDI0CisKKworY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisKKyAgICBkZWYgZ2V0X2xv
Y2FsX2FkZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2Fs
X2FkZHIuIiIiCisKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVy
LnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2
ZXIuc2VydmVyX3BvcnQpCisKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2Fk
ZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIg
dG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KKworICAgICAgICBTZXR0aW5nIHRoZSBwcm9w
ZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKKyAgICAgICAg
aGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgorCisgICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKKworICAgIHJlbW90ZV9hZGRy
ID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEp
OgorICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQorCisgICAgZGVmIHJlYWQo
c2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi5yZWFkKCkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5yZWFkKGxlbmd0aCkKKwor
ICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQgbWVtb3Jp
emVkIGxpbmVzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZp
bGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisKKworY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgorICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFu
ZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisgICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCisg
ICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCisgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9
IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKKyAgICBkZWYgZ2V0X3VyaShzZWxmKToKKyAgICAg
ICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgorCisgICAgICAgIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQorICAg
ICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9i
amVjdCBvZiBtb2RfcHl0aG9uCisgICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRl
ciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAgICAgICBrZXB0IGZv
ciBjb21wYXRpYmlsaXR5LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVx
dWVzdF9oYW5kbGVyLnBhdGgKKworICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCisKKyAgICBk
ZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJl
cXVlc3QudW5wYXJzZWRfdXJpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hh
bmRsZXIucGF0aAorCisgICAgdW5wYXJzZWRfdXJpID0gcHJvcGVydHkoZ2V0X3VucGFyc2VkX3Vy
aSkKKworICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWlt
aWMgcmVxdWVzdC5tZXRob2QuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFu
ZGxlci5jb21tYW5kCisKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9kKQorCisgICAg
ZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVl
c3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZXF1ZXN0X3ZlcnNpb24KKworICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0X3Byb3RvY29sKQor
CisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pYyByZXF1ZXN0LmlzX2h0
dHBzKCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKKworCitjbGFzcyBXZWJT
b2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6
CisgICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCisKKyAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xz
Lk1lc3NhZ2UuCisgICAgTWVzc2FnZUNsYXNzID0gaHR0cF9jbGllbnQuSFRUUE1lc3NhZ2UKKwor
ICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0
cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAgcmZpbGUKKyAgICAgICAgd2l0aCBNZW1v
cml6aW5nRmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNl
UmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICBiZWZvcmUgY2FsbGluZyBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KKyAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxl
ci5oYW5kbGUgd2lsbCBjYWxsCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxl
X29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKKyAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIucGFyc2VfcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBDYWxsIHN1cGVy
Y2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3ZmlsZSwgZXRjLiBTZWUgc2V0dXAKKyAg
ICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNsYXNzIFNvY2tldFNlcnZlci5TdHJlYW1S
ZXF1ZXN0SGFuZGxlciB0bworICAgICAgICAjIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuCisg
ICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnNldHVwKHNlbGYpCisK
KyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAorICAg
ICAgICAgICAgc2VsZi5yZmlsZSwgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9SSVpFRF9M
SU5FUykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywg
c2VydmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29w
dGlvbnMKKworICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhhbmRsZXIu
Y2dpX2RpcmVjdG9yaWVzLgorICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNlbGYuX29w
dGlvbnMuY2dpX2RpcmVjdG9yaWVzCisgICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVxdWVzdEhh
bmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaXNf
ZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmlzX2V4ZWN1
dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCisKKyAgICAgICAgIyBU
aGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KKyAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgcmVxdWVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2FkZHJlc3MsIHNlcnZlcikKKworICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVy
LnBhcnNlX3JlcXVlc3QuCisKKyAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJvY2Vz
c2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgICAgIFNlZSBCYXNlSFRU
UFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMKKyAg
ICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorCisgICAgICAgICMgV2UgaG9vayBwYXJzZV9yZXF1
ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxzZSwK
KyAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNvbnRp
bnVlcyBwcm9jZXNzaW5nIGFuZAorICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQgYnkg
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAgICMKKyAgICAgICAg
IyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdlYlNv
Y2tldCByZXF1ZXN0CisgICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21tYW5k
LCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCisgICAgICAgICMgaG93IF9TdGFuZGFs
b25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCisgICAgICAg
ICMgYXR0cmlidXRlcykuCisgICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKKyAgICAgICAgICAg
IGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKKyAgICAgICAg
ICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6CisgICAg
ICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMSkKKyAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdCYXNpYyByZWFsbT0iUHl3ZWJzb2NrZXQiJykKKyAgICAgICAgICAgICAgICBz
ZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVx
dWVzdCBiYXNpYyBhdXRoZW50aWNhdGlvbicpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaShzZWxmLnBhdGgpCisgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBVUkk6ICVyJywgc2VsZi5wYXRoKQorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxl
cicpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNl
bGYuc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworICAgICAgICBpZiBob3N0IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0ID0gc2VydmVyX29wdGlvbnMudmFs
aWRhdGlvbl9ob3N0CisgICAgICAgICAgICBpZiB2YWxpZGF0aW9uX2hvc3QgaXMgbm90IE5vbmUg
YW5kIGhvc3QgIT0gdmFsaWRhdGlvbl9ob3N0OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdJbnZhbGlkIGhvc3Q6ICVyIChleHBlY3RlZDogJXIpJywgaG9zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRp
b25fcG9ydAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBw
b3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIHBvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHNlbGYucGF0aCA9IHJlc291cmNlCisK
KyAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChzZWxmLCBzZWxmLl9vcHRpb25z
LnVzZV90bHMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBkZWZh
dWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gKKyAgICAgICAgICAg
ICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgorICAgICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShzZWxmLnBhdGgpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5kbGVyIGZvciByZXNvdXJjZTog
JXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxi
YWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMn
LCBlKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2Vw
dCBjbGF1c2Ugc2V0dXAgKGluY2x1ZGluZworICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBp
cyByYWlzZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKKyAgICAgICAgIyBh
bmQgbG9nZ2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZShyZXF1ZXN0LCBz
ZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIpCisgICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZl
cnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisg
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVk
X3ZlcnNpb25zKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mocykg
ZmFpbGVkLgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFp
bGVkIGZvciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihl
LnN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmVx
dWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcgorICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRlZDogJXMnLCBlKQorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgorICAg
ICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfcmVxdWVzdC4iIiIKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAlcyAlcycsIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQorCisgICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6CisgICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKKworICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCisgICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
IHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1swXSAlIGFyZ3NbMTpdKQorCisgICAgZGVmIGlzX2NnaShzZWxmKToKKyAgICAgICAgIiIiVGVz
dCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCisKKyAgICAg
ICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KKyAg
ICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3Qu
CisgICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFz
IHN0YXRpYyBmaWxlIG9yIGRpcgorICAgICAgICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCisg
ICAgICAgICIiIgorCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5k
bGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJh
bWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxm
LnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25h
bWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAgICAgICAgc2NyaXB0
ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjllMjczZTk3NzA4NDRiN2NiNDQ2MTZlYmY5ODI1ODg2YmY0NGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5CkBAIC0w
LDAgKzEsODcgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2VydmVyIHJlbGF0ZWQgdXRpbGl0aWVz
LiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKworZGVmIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3MoYyk6CisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAo
Yy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKKworCitkZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdG
SU5FJykKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCisg
ICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuaGFuZGxl
cnMuUm90YXRpbmdGaWxlSGFuZGxlcihvcHRpb25zLmxvZ19maWxlLCAnYScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2df
bWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIgPSBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAor
ICAgICAgICAnWyUoYXNjdGltZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2Fn
ZSlzJykKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoaGFuZGxlcikKKworICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5n
LmdldExldmVsTmFtZSgKKyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigp
KQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKGRl
ZmxhdGVfbG9nX2xldmVsX25hbWUpCisgICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9J
bmZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKworCitjbGFzcyBUaHJl
YWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRhZW1vbiA9IFRydWUKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgorICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3InKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2lu
dGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYworCisgICAgZGVmIHJ1bihzZWxmKToKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QgPSBbXQorICAg
ICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCk6CisgICAgICAgICAg
ICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygiJWQgYWN0aXZlIHRocmVhZHM6ICVzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkKKyAgICAgICAgICAg
IHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQorCisKKyMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDQyYzQ5NmM1OGEyM2I2Y2U0YzIzZWVlMGJhNDYyMDk1NDUyNjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkKQEAgLTAsMCArMSw0NzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJTdGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCisKK1VzZSB0aGlzIGZp
bGUgdG8gbGF1bmNoIHB5d2Vic29ja2V0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIuCisKKworQkFT
SUMgVVNBR0UKKz09PT09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4K
KworICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tf
aGFuZGxlcnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQg
PGRvY3VtZW50X3Jvb3Q+XQorCis8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBm
b3Igd3M6Ly8gY29ubmVjdGlvbi4KKworPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRo
ZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgorCis8d2Vic29ja19oYW5kbGVycz4gaXMg
dGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KK0lm
IG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRf
Xy5weSAob3IKK3J1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBX
ZWJTb2NrZXQgaGFuZGxlcnMuCisKK0ZvciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywg
cnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCisK
K29yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCisKK0ZvciB0cm91Ymxl
IHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KKwor
CitUUlkgREVNTworPT09PT09PT0KKworR28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBz
dGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKK2RvY3VtZW50IHJvb3QgdG8g
dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2Ug
dGhpczoKKworICAkIGNkIHNyYworICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQorCit0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0
aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3BlbgoraHR0cDovL2xv
Y2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21l
dGhpbmcgaW50bwordGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGlj
ayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKK2lzIHdvcmtpbmcsIHlvdSdsbCBzZWUg
dGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgorCisKK1VTSU5HIFRM
UworPT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3Vw
cG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKK29wdGlvbnMuIFdoZW4gVExTIGlzIGVu
YWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24u
CisKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxv
Y2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxl
IHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCitFeGFtcGxlOgorCisgICQgUFlUSE9OUEFU
SD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCisgICAgICAgIC1kIGV4
YW1wbGUgXAorICAgICAgICAtcCAxMDQ0MyBcCisgICAgICAgIC10IFwKKyAgICAgICAgLWMgLi4v
dGVzdC9jZXJ0L2NlcnQucGVtIFwKKyAgICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAor
CitOb3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0
aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCit1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkgYXMgdGhlIGJhc2UuCisKKworVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRo
IFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKKy0tdGxzLWNs
aWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVz
IHJlcXVpcmVkIGZvcgorVExTIHN1cHBvcnQuCisKK0V4YW1wbGU6CisKKyAgJCBQWVRIT05QQVRI
PS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0
NDMgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0
L2tleS5wZW0gXAorICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCisgICAgICAgIC0tdGxzLWNs
aWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorCitOb3RlIHRoYXQgd2hlbiBwYXNzaW5n
IGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCity
ZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCisK
KworQ09ORklHVVJBVElPTiBGSUxFCis9PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiBhbHNv
IHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUg
cGF0aCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFz
ZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorZm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAorZW50cnkg
bXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBs
ZXZlbCB0byBkZWJ1ZywKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK2xvZ19sZXZlbD1kZWJ1
ZworCitGb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29t
ZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgorLS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBs
aW5lOgorCit0bHM9VHJ1ZQorCitOb3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlm
IHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKK2Zha2UuCisKK1doZW4g
Ym90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50
cnkgYXJlIHNldCBmb3IKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQg
bGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4K
KworCitUSFJFQURJTkcKKz09PT09PT09PQorCitUaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20g
U29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBpcwordXNlZCBmb3Ig
ZWFjaCByZXF1ZXN0LgorCisKK1NFQ1VSSVRZIFdBUk5JTkcKKz09PT09PT09PT09PT09PT0KKwor
VGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4K
K0l0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFt
cy4gSXQgc2hvdWxkIG5vdCBiZQordXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwuCisiIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9y
dCBjb25maWdwYXJzZXIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0
cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHNlcnZlcl91dGlsCitmcm9tIG1vZF9w
eXdlYnNvY2tldC53ZWJzb2NrZXRfc2VydmVyIGltcG9ydCBXZWJTb2NrZXRTZXJ2ZXIKKworX0RF
RkFVTFRfTE9HX01BWF9CWVRFUyA9IDEwMjQgKiAyNTYKK19ERUZBVUxUX0xPR19CQUNLVVBfQ09V
TlQgPSA1CisKK19ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAorCisKK2RlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
CisKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2NvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJp
bmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBj
b21tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlz
IGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZmlsZSBmb3JtYXQnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLUgnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1WJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uLWhvc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRpb25faG9zdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ndmFsaWRhdGlvbl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRv
IHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBsaXN0ZW4gdG8nKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctUCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbi1w
b3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX3BvcnQnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsCisgICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRhdGUgaW4gYWJz
b2x1dGUgcGF0aC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0td2Vic29jay1oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
d2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19o
YW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nLicsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxl
ciBmaWxlcy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyBy
ZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcyB0aGUgYmFzZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
V2ViU29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRl
ZCBieSBzcGFjZXMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1zY2FuLWRpcicsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2Nhbl9k
aXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NjYW5fZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011
c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJl
IHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0
byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Ig
c2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhh
bmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvblwn
dCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcicsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2Nr
ZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCisgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1kJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVu
dC1yb290JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVudF9yb290JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCBy
b290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2dpLXBhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZ2lf
cGF0aHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NnaV9wYXRocycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9odGJpbikgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVudF9yb290L2NnaV9w
YXRoIGFyZSBoYW5kbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgQ0dJIHBy
b2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbign
LWsnLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGUta2V5JywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1wcml2YXRlX2tleScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAorICAgICAgICAgICAgICAgICAgICAgICctLWNlcnRpZmljYXRlJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZXJ0aWZpY2F0ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMgY2Vy
dGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0
aCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWVzdHMg
VExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQgY2VydGlmaWNhdGUg
b3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUTFMg
Y2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMt
Y2xpZW50LWNhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NhJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMg
d2hpY2ggYXJlIHVzZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0
ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWJhc2ljLWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9iYXNp
Y19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0ndGVzdDp0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhl
IGNyZWRlbnRpYWwgb2YgYmFzaWMgYXV0aGVudGljYXRpb24gJworICAgICAgICAgICAgICAgICAg
ICAgICdieSB1c2VybmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZy1maWxl
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfZmlsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nbG9nX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGZpbGUuJykKKyAgICAjIEN1c3RvbSBs
b2cgbGV2ZWw6CisgICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9j
ZXNzaW5nIHN0ZXAKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAgICAgICAg
IGNob2ljZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZScsICdkZWJ1ZycsICdp
bmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdjcml0aWNhbCcKKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAg
ICAnLS1kZWZsYXRlLWxvZy1sZXZlbCcsCisgICAgICAgICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nZGVmbGF0ZV9sb2dfbGV2ZWwn
LAorICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2lu
Zm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCisgICAgICAgIGhl
bHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKKyAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9LTEsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVn
ZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0aHJlYWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGlu
dGV2YWwgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1w
b3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkaXNhYmxlIHRoZSB0aHJlYWQgbW9uaXRvci4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbWF4JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX01B
WF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRlcycp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1sb2dfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19jb3Vu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1x
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWV1ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXplJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBl
PSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6
ZScpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIF9wYXJzZV9hcmdzX2FuZF9jb25maWco
YXJncyk6CisgICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJzZXIoKQorCisgICAgIyBGaXJz
dCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICB0ZW1wb3Jh
cnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3Mp
CisgICAgaWYgdGVtcG9yYXJ5X2FyZ3M6CisgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VucmVj
b2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBvcmFyeV9hcmdzKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgdGVtcG9y
YXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZp
Z19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKKyAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0ZhaWxl
ZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgZSkKKyAgICAgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICAgICAgY29uZmlnX3BhcnNlciA9IGNvbmZpZ3BhcnNlci5TYWZl
Q29uZmlnUGFyc2VyKCkKKyAgICAgICAgY29uZmlnX3BhcnNlci5yZWFkZnAoY29uZmlnX2ZwKQor
ICAgICAgICBjb25maWdfZnAuY2xvc2UoKQorCisgICAgICAgIGFyZ3NfZnJvbV9jb25maWcgPSBb
XQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnX3BhcnNlci5pdGVtcygncHl3ZWJz
b2NrZXQnKToKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKCctLScgKyBuYW1l
KQorICAgICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQodmFsdWUpCisgICAgICAgIGlm
IGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZpZyArIGFyZ3MKKyAg
ICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBlbHNlOgorICAg
ICAgICByZXR1cm4gdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzCisKKworZGVmIF9t
YWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSB5
b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRoaXMgZnVuY3Rpb24g
aGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIgcHJvZ3JhbS4gRm9y
CisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBpbiB0aGlzIG1ldGhv
ZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4KKyAgICAiIiIKKwor
ICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3M9YXJncykKKwor
ICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIHNlcnZlcl91dGlsLmNv
bmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1
cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQorICAgICMg
b2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0
dGVyLgorICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gW10KKyAgICBvcHRpb25zLmlzX2V4
ZWN1dGFibGVfbWV0aG9kID0gTm9uZQorICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgorICAgICAg
ICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykK
KyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAg
ICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKKyAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwg
aXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAorICAgICAgICAgICAgIyBpcyBzZXQgdG8g
YSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgorICAgICAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCisg
ICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgorICAgICAg
ICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN5
Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQorICAgICAgICAgICAgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19jaGVj
a19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3Nj
cmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisKKyAgICAgICAgICAgIG9wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAorCisgICAgaWYgb3B0aW9u
cy51c2VfdGxzOgorICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKKwor
ICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZp
Y2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAgICAgICAgICAgICAgJ1Rv
IHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRlLicpCisgICAgICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIChvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbCBhbmQgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8g
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2NlcnRf
b3B0aW9uYWwnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBp
ZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJs
ZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkK
KworICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgorICAgICAgICBvcHRpb25zLnNjYW5fZGly
ID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCisKKyAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19h
dXRoOgorICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsg
YmFzZTY0LmI2NGVuY29kZSgKKyAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50
aWFsLmVuY29kZSgnVVRGLTgnKSkuZGVjb2RlKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgb3B0
aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMgPiAwOgorICAgICAgICAgICAgIyBS
dW4gYSB0aHJlYWQgbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMg
Zm9yCisgICAgICAgICAgICAjIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNlcnZlcl91dGlsLlRo
cmVhZE1vbml0b3IoCisgICAgICAgICAgICAgICAgb3B0aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMpLnN0YXJ0KCkKKworICAgICAgICBzZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIo
b3B0aW9ucykKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSBlKQorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbihzeXMuYXJndlsxOl0pCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmMzOTlmMmE4NWI5ZmU2YzUyZWM1NjkwZjU4MGQwNmIyMjJlNDc0OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKQEAgLTAsMCArMSw5NTAgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhpcyBmaWxlIHByb3Zp
ZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJh
bWVzCitvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCisKK1NwZWNpZmljYXRp
b246CitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIKKworZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
dHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc2l4CisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1
dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25z
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFVURjhFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCitfTk9PUF9NQVNLRVIgPSB1dGlsLk5vb3BNYXNrZXIo
KQorCisKK2NsYXNzIEZyYW1lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAg
ICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICByc3YxPTAsCisgICAgICAgICAg
ICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mz0wLAorICAgICAgICAgICAgICAg
ICBvcGNvZGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGF5bG9hZD1iJycpOgorICAgICAgICBz
ZWxmLmZpbiA9IGZpbgorICAgICAgICBzZWxmLnJzdjEgPSByc3YxCisgICAgICAgIHNlbGYucnN2
MiA9IHJzdjIKKyAgICAgICAgc2VsZi5yc3YzID0gcnN2MworICAgICAgICBzZWxmLm9wY29kZSA9
IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCisKKworIyBIZWxwZXIgZnVu
Y3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQgZm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBX
ZWJTb2NrZXQKKyMgY2xpZW50cy4KKworCitkZWYgY3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3Ro
LCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgbGVuZ3RoIGhlYWRlci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBNdXN0IGJlIGxlc3MgdGhhbiAyXjYzLgorICAg
ICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBib29sZWFuLgorCisgICAgUmFpc2VzOgorICAg
ICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVuLgorICAgICIiIgorCisgICAg
aWYgbWFzazoKKyAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICBlbHNlOgorICAgICAgICBt
YXNrX2JpdCA9IDAKKworICAgIGlmIGxlbmd0aCA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyJykKKyAgICBlbGlmIGxlbmd0
aCA8PSAxMjU6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8IGxlbmd0
aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFj
a19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIGxlbmd0aCkKKyAgICBl
bGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFja19ieXRlKG1h
c2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScp
CisKKworZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3Yx
LCByc3YyLCByc3YzLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgorCisg
ICAgUmFpc2VzOgorICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCisg
ICAgIiIiCisKKyAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCisKKyAgICBpZiBwYXlsb2FkX2xl
bmd0aCA8IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgorICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQorCisgICAgaWYgKGZpbiB8
IHJzdjEgfCByc3YyIHwgcnN2MykgJiB+MToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklO
IGJpdCBhbmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCisKKyAgICBo
ZWFkZXIgPSBiJycKKworICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQorICAgICAgICAgICAg
ICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkKKyAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShmaXJzdF9i
eXRlKQorICAgIGhlYWRlciArPSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwg
bWFzaykKKworICAgIHJldHVybiBoZWFkZXIKKworCitkZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwg
Ym9keSwgbWFzayk6CisgICAgaWYgbm90IG1hc2s6CisgICAgICAgIHJldHVybiBoZWFkZXIgKyBi
b2R5CisKKyAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQorICAgIG1hc2tlciA9IHV0
aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgIHJldHVybiBoZWFkZXIg
KyBtYXNraW5nX25vbmNlICsgbWFza2VyLm1hc2soYm9keSkKKworCitkZWYgX2ZpbHRlcl9hbmRf
Zm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZm9y
IGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmls
dGVyKGZyYW1lKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFtZS5vcGNvZGUsIGxl
bihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAgICByZXR1cm4gX2J1
aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitkZWYgY3JlYXRlX2Jp
bmFyeV9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGZyYW1lID0gRnJhbWUoZmlu
PWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQorICAgIHJldHVybiBfZmlsdGVy
X2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisK
K2RlZiBjcmVhdGVfdGV4dF9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBm
cmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIHRleHQgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGVuY29kZWRfbWVzc2FnZSA9
IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
ZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBwYXJzZV9mcmFtZShyZWNlaXZlX2J5
dGVzLAorICAgICAgICAgICAgICAgIGxvZ2dlcj1Ob25lLAorICAgICAgICAgICAgICAgIHdzX3Zl
cnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCisgICAgICAgICAgICAgICAgdW5tYXNr
X3JlY2VpdmU9VHJ1ZSk6CisgICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0dXBsZSBj
b250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAorICAgIHBheWxvYWQuCisKKyAgICBBcmdz
OgorICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJhbWUgZGF0
YSBmcm9tIGEgc3RyZWFtIG9yCisgICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4gVGhlIGZ1
bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKKyAgICAgICAgICAgIHJlYWQu
IFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGlm
CisgICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4KKyAgICAg
ICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgorICAgICAgICB3c192ZXJzaW9uOiB0aGUgdmVy
c2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCisgICAgICAgIHVubWFza19yZWNlaXZlOiB1bm1h
c2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCisgICAgICAgICAgICBm
cmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KKworICAgIFJhaXNlczoKKyAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRlcyByYWlz
ZXMgaXQuCisgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29u
dGFpbnMgaW52YWxpZCBkYXRhLgorICAgICIiIgorCisgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJhbWUnKQor
CisgICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAgIGZpbiA9IChmaXJz
dF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKKyAgICBy
c3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisgICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQp
ICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKKworICAgIHNlY29uZF9ieXRlID0g
b3JkKHJlY2VpdmVfYnl0ZXMoMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEK
KyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgbG9nZ2VyLmxv
ZygKKyAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9
JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5n
dGg9JXMnLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywKKyAgICAgICAgcGF5
bG9hZF9sZW5ndGgpCisKKyAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKKyAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgJ01hc2sgYml0
IG9uIHRoZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJworICAgICAgICAg
ICAgJ2NvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCisKKyAgICAjIFRoZSBIeUJp
IGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgor
ICAgICMgaW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3Ig
MHgwLTB4RkQgaW4KKyAgICAjIDItb2N0ZXQgZmllbGQpLgorICAgIHZhbGlkX2xlbmd0aF9lbmNv
ZGluZyA9IFRydWUKKyAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCisgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPT0gMTI3OgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRl
cyg4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFRJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZG
RkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKCdF
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAwOgorICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9
IDgKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgpCisg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRl
bmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgg
PSByZWNlaXZlX2J5dGVzKDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFj
aygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgd3NfdmVyc2lv
biA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6CisgICAgICAgICAgICB2YWxpZF9sZW5n
dGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0g
MgorCisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEZWNvZGVkX3Bh
eWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CisgICAgICAgIGxvZ2dlci53YXJuaW5n
KAorICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBt
aW5pbWFsIG51bWJlciBvZiAnCisgICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNp
bmcgJWQgYnl0ZXMpJywgcGF5bG9hZF9sZW5ndGgsCisgICAgICAgICAgICBsZW5ndGhfZW5jb2Rp
bmdfYnl0ZXMpCisKKyAgICBpZiBtYXNrID09IDE6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQorCisgICAgICAgIG1hc2tpbmdfbm9uY2Ug
PSByZWNlaXZlX2J5dGVzKDQpCisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9G
SU5FLCAnTWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCisgICAgZWxzZToKKyAgICAgICAgbWFza2Vy
ID0gX05PT1BfTUFTS0VSCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
UmVjZWl2ZSBwYXlsb2FkIGRhdGEnKQorICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKKwor
ICAgIHJhd19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAg
ICBsb2dnZXIubG9nKAorICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEb25lIHJl
Y2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAgICBwYXlsb2FkX2xl
bmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEwMDApCisgICAg
bG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2FkIGRhdGEnKQor
CisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAg
ICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICB1bm1hc2tlZF9ieXRlcyA9IG1h
c2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZv
cihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0
YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1l
LnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKKworICAgIHJldHVybiBvcGNv
ZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKKworCitjbGFzcyBGcmFn
bWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6CisgICAgIiIiQSBzdGF0ZWZ1bCBjbGFzcyB0byBz
ZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
c2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgorICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgorCisgICAgICAgIHNlbGYuX21hc2sgPSBtYXNrCisgICAg
ICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCisgICAgICAgICMgVGhpcyBp
cyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0IHR5cGUgZnJh
bWVzCisgICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIHNlbGYuX2VuY29k
ZV91dGY4ID0gZW5jb2RlX3V0ZjgKKworICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFsc2UKKwor
ICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNzYWdlcyB0byB2
ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKKyAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1lc3NhZ2UgYXJl
IGFsbCB0aGUgc2FtZS4KKyAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhU
CisKKyAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSk6CisgICAg
ICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX0JJ
TkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENP
REVfVEVYVAorICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgorICAgICAgICAgICAgaWYgc2VsZi5f
b3Bjb2RlICE9IGZyYW1lX3R5cGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
TWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQorICAgICAgICAgICAgb3Bj
b2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgICAgIHNlbGYuX29wY29kZSA9IGZyYW1l
X3R5cGUKKworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFs
c2UKKyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
X3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAgICAgaWYgYmluYXJ5
IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVfYmlu
YXJ5X2ZyYW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKHBheWxvYWRf
ZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykKKworCitkZWYgX2NyZWF0ZV9jb250cm9s
X2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZnJhbWUgPSBG
cmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkpCisKKyAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIGZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisK
KyAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6CisgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9s
IGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNzJykKKworICAgIGhlYWRlciA9IGNyZWF0
ZV9oZWFkZXIoZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMsIG1hc2spCisgICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIsIGZyYW1lLnBheWxvYWQs
IG1hc2spCisKKworZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1l
X2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9Q
Q09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfcG9u
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKKworCitkZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2Us
IGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29t
bW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9i
b2R5KGNvZGUsIHJlYXNvbik6CisgICAgYm9keSA9IGInJworICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6CisgICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYCisg
ICAgICAgICAgICAgICAgb3IgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBv
dXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5P
Uk1BTF9DTE9TVVJFCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24uU1RBVFVTX1RM
U19IQU5EU0hBS0UpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdT
dGF0dXMgY29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb2RlJykKKyAgICAgICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSAr
IGVuY29kZWRfcmVhc29uCisgICAgcmV0dXJuIGJvZHkKKworCitjbGFzcyBTdHJlYW1PcHRpb25z
KG9iamVjdCk6CisgICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFt
IG9iamVjdHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJDb25zdHJ1
Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gZnJh
bWVzLgorICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorICAgICAgICBz
ZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorCisgICAgICAgICMgRmlsdGVycyBhcHBs
aWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZW0u
CisgICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKyAgICAgICAgc2Vs
Zi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQorCisgICAgICAgIHNlbGYuZW5jb2RlX3Rl
eHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQorICAgICAgICBzZWxmLm1hc2tfc2VuZCA9IEZhbHNl
CisgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCisKKworY2xhc3MgU3RyZWFtKG9i
amVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldCBwcm90b2NvbAorICAgIChSRkMgNjQ1NSkuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisKKyAgICAgICAgc2VsZi5fcmVxdWVz
dC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVy
X3Rlcm1pbmF0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBm
cmFnbWVudHMuCisgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCisgICAgICAg
ICMgSG9sZHMgdGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCisgICAgICAgIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9IE5vbmUKKworICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVu
dGVkRnJhbWVCdWlsZGVyKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4KQorCisgICAgICAgIHNlbGYuX3Bpbmdf
cXVldWUgPSBkZXF1ZSgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBh
bnkgZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhj
ZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
YWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCisgICAgICAg
ICAgICBpZiBub3QgcmVhZF9ieXRlczoKKyAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBi
eXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCisgICAgICAgICAgICAg
ICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsICkp
KQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhjZXB0IElPRXJyb3Ig
YXMgZToKKyAgICAgICAgICAgICMgQWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5
dGhvbiB0aHJvd3MgaXQuCisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vy
cm9yICglcykgb2NjdXJyZWQnICUKKyAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKKworICAg
IGRlZiBfd3JpdGUoc2VsZiwgYnl0ZXNfdG9fd3JpdGUpOgorICAgICAgICAiIiJXcml0ZXMgZ2l2
ZW4gYnl0ZXMgdG8gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAor
ICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ug
YW5kIHJhaXNlIGFnYWluLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdl
X3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0
byAlcjogJyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1v
dGVfYWRkciwgKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgcmVjZWl2ZV9ieXRl
cyhzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWNlaXZlcyBtdWx0aXBsZSBieXRlcy4gUmV0
cmllcyByZWFkIHdoZW4gd2UgY291bGRuJ3QgcmVjZWl2ZSB0aGUKKyAgICAgICAgc3BlY2lmaWVk
IGFtb3VudC4gVGhpcyBtZXRob2QgcmV0dXJucyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVhZF9ieXRl
cyA9IFtdCisgICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6CisgICAgICAgICAgICBuZXdfcmVhZF9i
eXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQorICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQo
bmV3X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVz
KQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVhZF9ieXRlcykKKworICAgIGRlZiBfcmVhZF91
bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKKyAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2Ug
ZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKKyAgICAgICAgY29udGFp
biBkZWxpbV9jaGFyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAg
ICAgICIiIgorCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCisgICAgICAgICAgICBpZiBjaCA9PSBkZWxp
bV9jaGFyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZWFkX2J5dGVzLmFw
cGVuZChjaCkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMpCisKKyAgICBkZWYg
X3JlY2VpdmVfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIHJl
dHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcKKyAgICAgICAgZWFj
aCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KKworICAgICAgICBSYWlzZXM6
CisgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJl
dHVybnMgZW1wdHkKKyAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICBJbnZhbGlk
RnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgcmV0dXJuIHBh
cnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQor
CisgICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKKyAgICAgICAg
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZSgpCisKKyAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sCisgICAgICAgICAg
ICAgICAgICAgICByc3YxPXJzdjEsCisgICAgICAgICAgICAgICAgICAgICByc3YyPXJzdjIsCisg
ICAgICAgICAgICAgICAgICAgICByc3YzPXJzdjMsCisgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGU9b3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykK
KworICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNl
aXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVy
cy4KKyAgICAgICAgVGhlIGZyYW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAgICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCisg
ICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCisKKyAg
ICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2Zy
YW1lX29iamVjdCgpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFt
ZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9m
aWx0ZXJlZF9mcmFtZSgpJykKKyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BD
T0RFX1RFWFQKKyAgICAgICAgICAgICAgICBhbmQgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENP
REVfQklOQVJZKToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcK
KyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKKworICAgICAgICBm
b3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoK
KyAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgICAgIGZvciBtZXNz
YWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKKyAg
ICAgICAgICAgIGZyYW1lLnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAiIiJTZW5kIG1lc3Nh
Z2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29k
ZSBvciBiaW5hcnkgaW4gc3RyIHRvIHNlbmQuCisgICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVz
c2FnZSBhcyBiaW5hcnkgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVz
c2FnZSB0eXBlIG9yCisgICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVx
dWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtl
JykKKworICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgc2l4LnRleHRf
dHlwZSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IG5vdCBiZSBpbnN0YW5jZSBv
ZiBVbmljb2RlJykKKworICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2Fn
ZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIgdG8gbGltaXQgbWF4
aW11bSBzaXplIG9mIGRhdGEgaW4KKyAgICAgICAgICAgICMgcGF5bG9hZCBkYXRhIG9mIGVhY2gg
ZnJhbWUuCisgICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAtMQorCisgICAgICAg
ICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKKyAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5hcnkpKQorICAgICAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBieXRlc193cml0dGVuID0gMAorICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJhbWUgPSBl
bmQKKyAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNzYWdlKSAtIGJ5dGVz
X3dyaXR0ZW4KKyAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFUQV9TSVpFID4gMAor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5dGVzX3RvX3dyaXRlID4gTUFYX1BBWUxPQURf
REFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRB
X1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fd3JpdGVyLmJ1aWxkKAorICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5
dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lLCBi
aW5hcnkpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICAgICAgICAg
ICAgICBieXRlc193cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAgICAgICAgICAgICAj
IFRoaXMgaWYgbXVzdCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28g
dGhhdAorICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCisgICAg
ICAgICAgICAgICAgaWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oZSkKKworICAgIGRlZiBfZ2V0X21lc3Nh
Z2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZy
b20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKKyAgICAg
ICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUs
IHRoaXMgbWV0aG9kCisgICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2ls
bCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0CisgICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMg
cGFzc2VkIHRvIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdt
ZW50YXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMg
aW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVj
ZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24g
JworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1l
IGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRl
ZCcpCisKKyAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAjIEVuZCBv
ZiBmcmFnbWVudGF0aW9uIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJh
Z21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBi
Jycuam9pbihzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBmcmFtZQor
ICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZy
YW1lLmZpbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFt
ZSB3aXRob3V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBleGlzdGlu
ZyBmcmFnbWVudGF0aW9uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAnTmV3IGZyYWdtZW50YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0aW5nICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKworICAgICAgICAg
ICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVudGVkIGZyYW1lCisK
KyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKworICAgICAgICAg
ICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZCcpCisKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHJvY2Vzc19jbG9zZV9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgY2xvc2UgbWVzc2Fn
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogY2xvc2UgbWVzc2FnZS4K
KworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICAjIFN0YXR1cyBjb2Rl
IGlzIG9wdGlvbmFsLiBXZSBjYW4gaGF2ZSBzdGF0dXMgcmVhc29uIG9ubHkgaWYgd2UKKyAgICAg
ICAgIyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBlbXB0eSBzdHJpbmcu
IFNvLAorICAgICAgICAjIGFsbG93ZWQgY2FzZXMgYXJlCisgICAgICAgICMgLSBubyBhcHBsaWNh
dGlvbiBkYXRhOiBubyBjb2RlIG5vIHJlYXNvbgorICAgICAgICAjIC0gMiBvY3RldCBvZiBhcHBs
aWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCisgICAgICAgICMgLSAzIG9yIG1v
cmUgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogYm90aCBjb2RlIGFuZCByZWFzb24KKyAgICAg
ICAgaWYgbGVuKG1lc3NhZ2UpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAor
ICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBz
dGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2Rl
IG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6CisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcs
IG1lc3NhZ2VbMDoyXSlbMF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVh
c29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBs
YWNlJykKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJh
bWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgICAgICAjIEFzIHdlJ3Zl
IHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUK
KyAgICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0
aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAjIFJTVCBzZW5kaW5nLgorCisgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCisg
ICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19k
aXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlz
cGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBpZiBjb2RlIGlzIE5v
bmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAnSGFuZGxl
ciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKKyAgICAgICAgICAg
ICAgICByZWFzb24gPSAnJworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFr
ZShjb2RlLCByZWFzb24pCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAg
ICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcK
KyAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKKworICAg
IGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlBy
b2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3Nh
Z2U6IHBpbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCisgICAgICAgICAgICBp
ZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKKwor
ICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIi
IlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1l
c3NhZ2U6IHBvbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5kbGluZy4KKworICAgICAgICBpbmZsaWdodF9waW5n
cyA9IGRlcXVlKCkKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkgPSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQor
ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBjb250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQor
ICAgICAgICAgICAgICAgICAgICAjIG90aGVyIHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdQaW5nICVyIGlzIGFja2VkICglZCBwaW5ncyB3ZXJlIGlnbm9yZWQpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHksIGxlbihpbmZsaWdodF9waW5ncykpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBwZW5kKGV4cGVjdGVkX2JvZHkpCisgICAgICAgICAg
ICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25n
IHdhcyB1bnNvbGljaXRlZCBwb25nLiBLZWVwIHRoZQorICAgICAgICAgICAgICAgICMgcGluZyBx
dWV1ZSBhcyBpcy4KKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRf
cGluZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5z
b2xpY2l0ZWQgcG9uZycpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKKyAgICAg
ICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0
LCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZl
IGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisg
ICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgorCisgICAgICAgIFJldHVybnM6Cisg
ICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCisgICAgICAgICAgICAtIGFzIHVu
aWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQorICAgICAgICAgICAgLSBhcyBz
dHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCisgICAgICAgICAgICBvciBOb25l
IGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgUmFpc2VzOgorICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJt
aW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQorICAgICAgICAg
ICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0
aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAorICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAg
ICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBo
YXMKKyAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBj
YW4gaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJl
Y2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBh
ZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKKyAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykK
KworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBi
bG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgICAgICBmcmFtZSA9IHNl
bGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKworICAgICAgICAgICAgIyBDaGVj
ayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwor
ICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCisgICAg
ICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2Vj
dGlvbi01LjUKKyAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKQorICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKworICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CisgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKworICAgICAg
ICAgICAgaWYgZnJhbWUucnN2MSBvciBmcmFtZS5yc3YyIG9yIGZyYW1lLnJzdjM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMgc2V0IChyc3YgPSAlZCVkJWQpJyAlCisgICAgICAg
ICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzKSkKKworICAg
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoZnJhbWUpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21p
bmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlX2Zp
bHRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICAgICAgaWYgc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfVEVYVDoKKyAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2Nr
ZXQgcHJvdG9jb2wgc2VjdGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAorICAgICAgICAg
ICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VN
RU5UCisgICAgICAgICAgICAgICAgIyBDSEFSQUNURVIuCisgICAgICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykKKyAgICAg
ICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uKGUpCisgICAgICAgICAgICBlbGlmIHNl
bGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9DTE9TRToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNz
X2Nsb3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5H
OgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCisg
ICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BP
Tkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFt
ZUV4Y2VwdGlvbignT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSkK
KworICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgor
ICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29u
KQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgIGJvZHks
CisgICAgICAgICAgICBtYXNrPXNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAg
ZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICBz
ZWxmLl93cml0ZShmcmFtZSkKKworICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbAorICAgICAgICBp
dCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJh
bWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQorICAgICAgICAgICAgICAgIGZyYW1lIHdpdGgg
ZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCisgICAgICAgICAgICByZWFzb246IHN0cmluZyByZXBy
ZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3
aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgorICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmll
ZCB3aXRoIGNvZGUgTm9uZQorICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5j
ZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNl
cnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9z
ZV9tZXNzYWdlKCkuCisgICAgICAgICMgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0
ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90ZXJtaW5hdGVkIHRvCisgICAgICAgICMgVHJ1
ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNs
b3NlCisgICAgICAgICMgZnJhbWUuIFdlJ3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFr
ZS4KKworICAgICAgICBpZiBjb2RlIGlzIE5vbmU6CisgICAgICAgICAgICBpZiByZWFzb24gaXMg
bm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVz
dCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCisgICAgICAgICAgICByZWFzb24g
PSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29u
LCBieXRlcykgYW5kIG5vdCBpc2luc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICByZWFzb24s
IHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIGJ5dGVzIG9yIHVuaWNvZGUnKQorCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19o
YW5kc2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0luaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlLCByZWFzb24pCisKKyAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24u
U1RBVFVTX1BST1RPQ09MX0VSUk9SKSBvciBub3Qgd2FpdF9yZXNwb25zZToKKyAgICAgICAgICAg
ICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUgaWYgdGhl
IHJlYXNvbiBpcworICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvciBvciB0aGF0IHRoZSBzZXJ2
ZXIgaXMgZ29pbmcgYXdheS4gRm9yIHNvbWUgb2YKKyAgICAgICAgICAgICMgb3RoZXIgcmVhc29u
cywgaXQgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSwKKyAg
ICAgICAgICAgICMgYnV0IGl0J3Mgbm90IGNsZWFyLCB5ZXQuCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWlu
YXRlZC8gZmxhZyBoYXMgYmVlbiBzZXQsCisgICAgICAgICMgb3IgdW50aWwgYSBzZXJ2ZXItZGVm
aW5lZCB0aW1lb3V0IGV4cGlyZXMuCisgICAgICAgICMKKyAgICAgICAgIyBGb3Igbm93LCB3ZSBl
eHBlY3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVyIHNlbmRpbmcKKyAg
ICAgICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJl
Y2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2luZyBoYW5kc2hha2UnKQorICAg
ICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKyAgICAgICAg
IyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4pIGRvZXNuJ3QgaGF2ZSBjbG9z
ZSBtZXRob2QuCisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHksIGJpbmFyeT1GYWxzZSk6
CisgICAgICAgIGlmIG5vdCBiaW5hcnkgYW5kIGlzaW5zdGFuY2UoYm9keSwgc2l4LnRleHRfdHlw
ZSk6CisgICAgICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgZnJh
bWUgPSBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgICAgIHNlbGYu
X3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5
KToKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25z
Lm1hc2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQor
CisgICAgZGVmIGdldF9sYXN0X3JlY2VpdmVkX29wY29kZShzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgb3Bjb2RlIG9mIHRoZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGljaCB0aGUgbGFzdCBy
ZWNlaXZlZAorICAgICAgICBmcmFtZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHZh
bGlkIGlmZiBpbW1lZGlhdGVseSBhZnRlcgorICAgICAgICByZWNlaXZlX21lc3NhZ2UgY2FsbC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRp
bC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTY0ZTZiOGU0NjgyNDY3MTg3ZmMzODk0YjFjYTc5ZWM4MmE0MTNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0
aWwucHkKQEAgLTAsMCArMSw0MDUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IHV0
aWxpdGllcy4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzaXgKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHps
aWIKKwordHJ5OgorICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKKworZGVmIHByZXBlbmRfbWVzc2FnZV90
b19leGNlcHRpb24obWVzc2FnZSwgZXhjKToKKyAgICAiIiJQcmVwZW5kIG1lc3NhZ2UgdG8gdGhl
IGV4Y2VwdGlvbi4iIiIKKyAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3RyKGV4YyksICkKKyAg
ICByZXR1cm4KKworCitkZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgp
OgorICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24g
dG8gcnVuIGN5Z3dpbiBwcm9ncmFtCisgICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9l
c24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKKyAgICB3aGljaCBpcyB0eXBp
Y2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCisgICAgRm9y
IFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFy
aWVzLgorCisgICAgQXJnczoKKyAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQorICAg
ICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUK
KyAgICBSZXR1cm5zOgorICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgorICAg
ICIiIgorICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKKyAgICAgICAgcmV0dXJuIGludGVycAorICAg
IG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCisgICAgaWYgbToK
KyAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQorICAg
ICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQorICAgIHJldHVybiBpbnRlcnAKKworCitkZWYg
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgorICAgIHIi
IiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KKworICAg
IEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQs
IGUuZy4gaW4gV2ViS2l0LAorICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVs
bG8ucGwiLgorICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0s
IGl0IGNvdWxkbid0LiAgU28sIGZpeAorICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9w
YXRoPlxwZXJsLmV4ZSIuCisKKyAgICBBcmdzOgorICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1l
IG9mIHRoZSBzY3JpcHQKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3
aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgorICAgICIiIgorICAg
IGZwID0gb3BlbihzY3JpcHRfcGF0aCkKKyAgICBsaW5lID0gZnAucmVhZGxpbmUoKQorICAgIGZw
LmNsb3NlKCkKKyAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQorICAgIGlmIG06Cisg
ICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgp
CisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0
aCk6CisgICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4K
KworICAgIEFyZ3M6CisgICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkg
aWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KKyAgICAiIiIKKyAgICBf
X29yaWdfcG9wZW4zID0gb3MucG9wZW4zCisKKyAgICBkZWYgX193cmFwX3BvcGVuMyhjbWQsIG1v
ZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAgICAgY21kbGluZSA9IGNtZC5zcGxpdCgnICcpCisg
ICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5Z3dpbl9wYXRo
KQorICAgICAgICBpZiBpbnRlcnA6CisgICAgICAgICAgICBjbWQgPSBpbnRlcnAgKyAnICcgKyBj
bWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZzaXplKQorCisg
ICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMworCisKK2RlZiBoZXhpZnkocyk6CisgICAgcmV0
dXJuICcgJy5qb2luKFsnJTAyeCcgJSB4IGZvciB4IGluIHNpeC5pdGVyYnl0ZXMocyldKQorCisK
K2RlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgorICAgICIiIlJldHVybiB0aGUgbG9nZ2luZyBjbGFz
cyBpbmZvcm1hdGlvbi4iIiIKKyAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoJyVzLiVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCisKKworZGVmIHBhY2tfYnl0ZShiKToKKyAgICAiIiJQYWNr
IGFuIGludGVnZXIgdG8gbmV0d29yay1vcmRlcmVkIGJ5dGUiIiIKKyAgICByZXR1cm4gc3RydWN0
LnBhY2soJyFCJywgYikKKworCitjbGFzcyBOb29wTWFza2VyKG9iamVjdCk6CisgICAgIiIiQSBO
b09wIG1hc2tpbmcgb2JqZWN0LgorCisgICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFz
IFJlcGVhdGVkWG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKKyAgICB0aGUgc3RyaW5nIHBhc3Nl
ZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgIiIiTm9PcC4iIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIG1h
c2soc2VsZiwgcyk6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHJldHVybiBzCisKKwor
Y2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIG1hc2tpbmcgb2JqZWN0
IHRoYXQgYXBwbGllcyBYT1Igb24gdGhlIHN0cmluZy4KKworICAgIEFwcGxpZXMgWE9SIG9uIHRo
ZSBieXRlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhvZCB3aXRoIHRoZSBtYXNraW5nIGJ5dGVz
CisgICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJlcGVhdGVkbHkuIFRoaXMgb2JqZWN0IHJl
bWVtYmVycyB0aGUgcG9zaXRpb24KKyAgICBpbiB0aGUgbWFza2luZyBieXRlcyB0aGUgbGFzdCBt
YXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVzIGZyb20KKyAgICB0aGF0IHBvaW50IG9u
IHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1hc2tpbmdfa2V5KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkgPSBtYXNraW5nX2tl
eQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9IDAKKworICAgIGRlZiBfbWFza191
c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBtYXNrIHZpYSBTV0lH
LiIiIgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3RfbWFza2luZy5tYXNrKHMsIHNlbGYuX21h
c2tpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4KQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9ICgo
c2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKKyAgICAgICAgcmV0dXJuIG1h
c2tlZF9kYXRhCisKKyAgICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwgcyk6CisgICAgICAg
ICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIHB5dGhvbi4iIiIKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShzLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnTWFza2luZyBPcGVyYXRpb24gc2hvdWxkIG5vdCBwcm9jZXNzIHVuaWNvZGUg
c3RyaW5ncycpCisKKyAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KHMpCisKKyAgICAgICAgIyBV
c2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNvc3QgdG8gYWNj
ZXNzCisgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICBtYXNraW5nX2tleSA9IFtjIGZvciBj
IGluIHNpeC5pdGVyYnl0ZXMoc2VsZi5fbWFza2luZ19rZXkpXQorICAgICAgICBtYXNraW5nX2tl
eV9zaXplID0gbGVuKG1hc2tpbmdfa2V5KQorICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJlc3Vs
dCkpOgorICAgICAgICAgICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XQorICAgICAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXgg
KyAxKSAlIG1hc2tpbmdfa2V5X3NpemUKKworICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRl
eCA9IG1hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKwor
ICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAgbWFzayA9IF9tYXNr
X3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkK
KworCisjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBD
TUYvRkxHICgyIG9jdGV0KSBhbmQKKyMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIg
c28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKKyMgZGVmbGF0ZSBsaWJyYXJ5
LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5
LgorIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9u
IGFuZCBkZWNvbXByZXNzaW9uLgorIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNl
IDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKKyMgY29tcHJlc3Npb24sIHdlIHVz
ZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KKyMKKyMgQ29tcHJlc3Npb24gbGV2ZWwg
aXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCisj
IHRvIGRlY29kZS4KKyMKKyMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2Yg
emxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCisjIFB5dGhvbi4gU2VlIGFsc28gUkZD
MTk1MCAoWkxJQiAzLjMpLgorCisKK2NsYXNzIF9EZWZsYXRlcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9j
bGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA5IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KKyAgICAgICAgIyBPbiBXZWJT
b2NrZXQgc3BlYywgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXQgaXMgOC4gSG93ZXZlciwgemxpYiBk
b2VzCisgICAgICAgICMgbm90IGFjY2VwdCB3aW5kb3dfYml0ID0gOC4KKyAgICAgICAgIworICAg
ICAgICAjIEJlY2F1c2Ugb2YgYSB6bGliIGRlZmxhdGUgcXVpcmssIGJhY2stcmVmZXJlbmNlcyB3
aWxsIG5vdCB1c2UgdGhlCisgICAgICAgICMgZW50aXJlIHJhbmdlIG9mIDEgPDwgd2luZG93X2Jp
dHMsIGJ1dCB3aWxsIGluc3RlYWQgdXNlIGEgcmVzdHJpY3RlZAorICAgICAgICAjIHJhbmdlIG9m
ICgxIDw8IHdpbmRvd19iaXRzKSAtIDI2Mi4gV2l0aCBhbiBpbmNyZWFzZWQgd2luZG93X2JpdHMg
PSA5LAorICAgICAgICAjIGJhY2stcmVmZXJlbmNlcyB3aWxsIGJlIHdpdGhpbiBhIHJhbmdlIG9m
IDI1MC4gVGhlc2UgY2FuIHN0aWxsIGJlCisgICAgICAgICMgZGVjb21wcmVzc2VkIHdpdGggd2lu
ZG93X2JpdHMgPSA4IGFuZCB0aGUgMjU2LWJ5dGUgd2luZG93IHVzZWQgdGhlcmUuCisgICAgICAg
ICMKKyAgICAgICAgIyBTaW1pbGFyIGRpc3NjdXNzaW9ucyBjYW4gYmUgZm91bmQgaW4gaHR0cHM6
Ly9jcmJ1Zy5jb20vNjkxMDc0CisgICAgICAgIHdpbmRvd19iaXRzID0gbWF4KHdpbmRvd19iaXRz
LCA5KQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHpsaWIuREVGTEFURUQsIC13aW5kb3dfYml0cykKKworICAgIGRlZiBjb21wcmVzcyhz
ZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5j
b21wcmVzcyhieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1
dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3Vs
dCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVz
CisKKyAgICBkZWYgY29tcHJlc3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29t
cHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBj
b21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMp
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJl
c3NlZF9ieXRlcykKKyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworICAgIGRlZiBj
b21wcmVzc19hbmRfZmluaXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29tcHJlc3NlZF9ieXRl
cyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBjb21wcmVzc2VkX2J5
dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAg
ICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcworCisKK2NsYXNzIF9JbmZsYXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAgICAgICAgc2VsZi5fd2luZG93X2JpdHMg
PSB3aW5kb3dfYml0cworCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKworICAgICAg
ICBzZWxmLnJlc2V0KCkKKworICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIHNpemUpOgorICAgICAg
ICBpZiBub3QgKHNpemUgPT0gLTEgb3Igc2l6ZSA+IDApOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdzaXplIG11c3QgYmUgLTEgb3IgcG9zaXRpdmUnKQorCisgICAgICAgIGRhdGEgPSBi
JycKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9kZWNv
bXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzaXplIC0gbGVuKGRhdGEpKSkKKyAg
ICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRf
dGFpbAorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKKyAgICAg
ICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGgg
QkZJTkFMID0gMSkgYW5kCisgICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVu
dXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICMgemxp
Yi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldworICAg
ICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9u
ZS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdu
b3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKKyAgICAgICAgICAgICAg
ICAjIGVtcHR5LgorICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNv
bXByZXNzLnVudXNlZF9kYXRhCisgICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAg
ICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8g
ZGVjb21wcmVzcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVm
b3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCisgICAgICAgICAgICAgICAgICAg
ICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVz
ZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKKyAgICAgICAgICAg
ICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBp
biBkYXRhLiBXZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhl
cmUuCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBkYXRhOgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQorICAgICAgICBy
ZXR1cm4gZGF0YQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCisgICAgICAgIHNlbGYuX3VuY29uc3Vt
ZWQgKz0gZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1Jlc2V0JykKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVz
c29iaigtc2VsZi5fd2luZG93X2JpdHMpCisKKworIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBn
aXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCisKKwor
Y2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgorICAgICIiIkEgY29tcHJlc3NvciBjbGFz
cyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAorICAgIGZs
dXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlv
biAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzLCBub19j
b250ZXh0X3Rha2VvdmVyKToKKyAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAg
IGlmIHdpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICB3aW5kb3dfYml0cyA9IHpsaWIu
TUFYX1dCSVRTCisgICAgICAgIHNlbGYuX3dpbmRvd19iaXRzID0gd2luZG93X2JpdHMKKyAgICAg
ICAgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciA9IG5vX2NvbnRleHRfdGFrZW92ZXIKKworICAg
IGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGVuZD1UcnVlLCBiZmluYWw9RmFsc2UpOgorICAgICAg
ICBpZiBzZWxmLl9kZWZsYXRlciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIg
PSBfRGVmbGF0ZXIoc2VsZi5fd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYgYmZpbmFsOgorICAg
ICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaChieXRl
cykKKyAgICAgICAgICAgICMgQWRkIGEgcGFkZGluZyBibG9jayB3aXRoIEJGSU5BTCA9IDAgYW5k
IEJUWVBFID0gMC4KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHBhY2tfYnl0ZSgwKQor
ICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0CisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNo
KGJ5dGVzKQorICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICAjIFN0cmlwIGxhc3QgNCBvY3Rl
dHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAgICAgICAgICMgbm9uLWNv
bXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdFs6LTRdCisKKyAgICAgICAgaWYgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciBh
bmQgZW5kOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisKK2NsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0KToKKyAgICAiIiJB
IGRlY29tcHJlc3NvciBjbGFzcyBhIGxhIFJGQzE5NzkuCisKKyAgICBBIGRlY29tcHJlc3NvciBj
bGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkIGZvbGxvd2luZwor
ICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNlY3Rpb24gMi4xLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklU
Uyk6CisgICAgICAgIHNlbGYuX2luZmxhdGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQorCisg
ICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcyk6CisgICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBM
RU4gYW5kIE5MRU4gZmllbGQgb2YgYSBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZAorICAgICAg
ICAjIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRl
cyArIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQorCisKK2NsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKKyAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQorICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KKyAgICAiIiIKKworICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgorICAgIF9SRUNWX1NJWkUgPSA0
MDk2CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0CisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQorCisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKKwor
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgorICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAorICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KKyAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgor
ICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55CisgICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCisgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKKworICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQorICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQo
cmVhZF9kYXRhKQorCisgICAgZGVmIHNlbmRhbGwoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxm
LnNlbmQoYnl0ZXMpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykp
CisgICAgICAgIHJldHVybiBsZW4oYnl0ZXMpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDYxNDI1ZTExNGQxNGQ4NmY4MWJjZDE0MWY2MmY3N2Q2NjRiOWNjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDMxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9leGNlcHRpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvc2VydmVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRmOGNkMzkzYzdlZTgwNjk2NzU3MTM2NjVkODViZTdkOTc2NTdiNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0
X3NlcnZlci5weQpAQCAtMCwwICsxLDI4NSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdGFuZGFs
b25lIFdlYnNvY2tldFNlcnZlcgorCitUaGlzIGZpbGUgZGVhbHMgd2l0aCB0aGUgbWFpbiBtb2R1
bGUgb2Ygc3RhbmRhbG9uZSBzZXJ2ZXIuIEFsdGhvdWdoIGl0IGlzIGZpbmUKK3RvIGltcG9ydCB0
aGlzIGZpbGUgZGlyZWN0bHkgdG8gdXNlIFdlYlNvY2tldFNlcnZlciwgaXQgaXMgc3Ryb25nbHkg
cmVjb21tZW5kZWQKK3RvIHVzZSBzdGFuZGFsb25lLnB5LCBzaW5jZSBpdCBpcyBpbnRlbmRlZCB0
byBhY3QgYXMgYSBza2VsZXRvbiBvZiB0aGlzIG1vZHVsZS4KKyIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQ
U2VydmVyCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgc29ja2V0c2VydmVyCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitp
bXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LnJlcXVlc3RfaGFuZGxlciBpbXBvcnQgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIKKworCitkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxl
cnNfbWFwX2ZpbGUpOgorICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3ZWJzb2NrX2hh
bmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KKworICAgIEFyZ3M6CisgICAgICAgIGRpc3Bh
dGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKKyAgICAgICAgd2Vic29ja19oYW5k
bGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQorICAgICIiIgorCisgICAgd2l0aCBvcGVuKHdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6Cisg
ICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUysp
JCcsIGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAgZmlsZTonICsgbGluZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpc3BhdGNo
ZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMobS5ncm91cCgxKSwgbS5ncm91cCgyKSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQorCisKK2NsYXNzIFdlYlNvY2tldFNlcnZlcihz
b2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgor
ICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4iIiIKKworICAgICMg
T3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi5kYWVtb25fdGhyZWFkcworICAg
IGRhZW1vbl90aHJlYWRzID0gVHJ1ZQorICAgICMgT3ZlcnJpZGVzIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcworICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBU
cnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18gdG8gc2V0IFNTTCBlbmFibGVkCisg
ICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2NrZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFu
ZCBzZXJ2ZXJfYWN0aXZhdGUsCisgICAgICAgIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1vbmcgcmVxdWVzdCBoYW5kbGVycyB0byBz
YXZlIHRpbWUgZm9yCisgICAgICAgICMgaW5zdGFudGlhdGlvbi4gIERpc3BhdGNoZXIgY2FuIGJl
IHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZlLgorICAgICAgICBvcHRpb25zLmRpc3Bh
dGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAorICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzLCBvcHRpb25zLnNjYW5fZGlyLAorICAgICAgICAgICAgb3B0aW9ucy5hbGxvd19o
YW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQorICAgICAgICBpZiBvcHRpb25zLndlYnNvY2tfaGFu
ZGxlcnNfbWFwX2ZpbGU6CisgICAgICAgICAgICBfYWxpYXNfaGFuZGxlcnMob3B0aW9ucy5kaXNw
YXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5k
bGVyc19tYXBfZmlsZSkKKyAgICAgICAgd2FybmluZ3MgPSBvcHRpb25zLmRpc3BhdGNoZXIuc291
cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgaWYgd2FybmluZ3M6CisgICAgICAgICAgICBmb3Igd2Fy
bmluZyBpbiB3YXJuaW5nczoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5p
bmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5yZXF1ZXN0
X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAgICAgICBzZWxmLl9f
d3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5fX3dzX3Nl
cnZpbmcgPSBGYWxzZQorCisgICAgICAgIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLl9faW5pdF9f
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25z
LnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcikKKworICAgICAgICAjIEV4cG9z
ZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFuZGxlciBvYmplY3RzIGFjY2VzcyBpdC4g
V2UgbmFtZQorICAgICAgICAjIGl0IHdpdGggd2Vic29ja2V0XyBwcmVmaXggdG8gYXZvaWQgY29u
ZmxpY3QuCisgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYmlu
ZCgpCisgICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRlZiBfY3JlYXRlX3Nv
Y2tldHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX25hbWUsIHNlbGYuc2VydmVyX3BvcnQg
PSBzZWxmLnNlcnZlcl9hZGRyZXNzCisgICAgICAgIHNlbGYuX3NvY2tldHMgPSBbXQorICAgICAg
ICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRo
YXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJzdCBiaW5kIGZhaWxzLgorICAgICAgICAg
ICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJUHY2CisgICAgICAgICAgICAjIC0gSWYg
aXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNhbGwgd2l0aCBBRl9JTkVUNiwgdGhlCisg
ICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVkcyBhbmQgdGhlIHNlY29uZCBmYWlscyAo
d2UnbGwgc2VlICdBZGRyZXNzCisgICAgICAgICAgICAjICAgYWxyZWFkeSBpbiB1c2UnIGVycm9y
KS4KKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBvbmx5IElQdjYgb24gY2FsbCB3aXRoIEFG
X0lORVQ2LCBib3RoIGNhbGwgYXJlCisgICAgICAgICAgICAjICAgZXhwZWN0ZWQgdG8gc3VjY2Vl
ZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0g
Wyhzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZv
KHNlbGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BFQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RP
X1RDUCkKKyAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCisg
ICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9
IGFkZHJpbmZvCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNv
Y2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWls
dXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcnZl
cl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgICAgIGlm
IHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlv
bnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlSRUQK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNzbC53cmFwX3NvY2tl
dCgKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0XywKKyAgICAgICAgICAgICAgICAgICAga2V5
ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgY2Vy
dGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgIGNh
X2NlcnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCisgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLmFwcGVu
ZCgoc29ja2V0XywgYWRkcmluZm8pKQorCisgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgorICAg
ICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kIHRvIGVu
YWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGJpbmQuCisgICAgICAgICIiIgorCisgICAg
ICAgIGZhaWxlZF9zb2NrZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxm
Ll9zb2NrZXRzOgorICAgICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQmluZCBvbjogJXInLCBhZGRyaW5mbykKKyAg
ICAgICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBz
b2NrZXRfLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIs
IDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0Xy5iaW5kKHNlbGYu
c2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQor
ICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9z
b2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQorICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRk
cmVzc1sxXSA9PSAwOgorICAgICAgICAgICAgICAgICMgVGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNz
aWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBwb3J0CisgICAgICAgICAgICAgICAgIyBu
dW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFuZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1
c2UKKyAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBvcnQgbnVtYmVyLiBBbHNvIHNlbGYuc2Vy
dmVyX3BvcnQgaXMgcmV3cml0dGVuCisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4
cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVybmFsIGNvZGUuCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IChzZWxmLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFdKQorICAg
ICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdCisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWduZWQnLCBz
ZWxmLnNlcnZlcl9wb3J0KQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2Nr
ZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAg
IGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNl
cnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAg
ICBzb2NrZXRzIGxpc3Rlbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFpbGVkX3NvY2tldHMg
PSBbXQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAg
ICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUpCisg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQorICAgICAgICAgICAgICAgIHNv
Y2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2Nr
ZXRpbmZvKQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgorICAg
ICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAgICAgICBpZiBs
ZW4oc2VsZi5fc29ja2V0cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNh
bCgKKyAgICAgICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBs
ZXZlbCB0byBzZWUgdGhlIHJlYXNvbi4nKQorCisgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2Ug
dG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgY2xvc2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAgICAgICBz
b2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdDbG9zZSBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIHNvY2tldF8uY2xvc2Uo
KQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2Vy
dmVyLlRDUFNlcnZlci5maWxlbm8uIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KCdOb3Qgc3VwcG9ydGVkOiBmaWxlbm8nKQorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1sw
XVswXS5maWxlbm8oKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGll
bnRfYWRkcmVzcyk6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJy
b3IuIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKCdFeGNlcHRpb24gaW4gcHJvY2Vz
c2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfYWRkcmVzcywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgIyBOb3RlOiBj
bGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgorCisgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QuIiIiCisKKyAgICAgICAg
YWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisK
KyAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwor
ICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAgICAgIyBQcmludCBj
aXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiBhY2NlcHQuCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2NrZXQuY2lwaGVyKCkp
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkp
CisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MKKworICAg
IGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWw9MC41KToKKyAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlci4iIiIKKworICAg
ICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IFRydWUKKyAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRf
ZG93bi5jbGVhcigpCisgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5oYW5kbGVfcmVxdWVz
dAorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaGFuZGxlX3JlcXVlc3Rfbm9ibG9jaycpOgor
ICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2Nr
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnRmFsbGJh
Y2sgdG8gYmxvY2tpbmcgcmVxdWVzdCBoYW5kbGVyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgd2hpbGUgc2VsZi5fX3dzX3NlcnZpbmc6CisgICAgICAgICAgICAgICAgciwgdywgZSA9IHNl
bGVjdC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIFtzb2NrZXRfWzBdIGZvciBzb2NrZXRf
IGluIHNlbGYuX3NvY2tldHNdLCBbXSwgW10sCisgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50
ZXJ2YWwpCisgICAgICAgICAgICAgICAgZm9yIHNvY2tldF8gaW4gcjoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXRfCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9y
ZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uc2V0KCkKKworICAgIGRl
ZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VT
ZXJ2ZXIuc2h1dGRvd24uIiIiCisKKyAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQor
ICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLndhaXQoKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U5NDI4ZDY5MWQ3NTZjZjNkNjg3ZTc1NmI3
MzgxNGNjZDNiZTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAu
cHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KKyIiIgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9u
CitpbXBvcnQgc3lzCisKK19QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29ja2V0JworCisjIEJ1
aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBmYXN0ZXIgbWFza2luZy4gU1dJRyBpcyBy
ZXF1aXJlZC4KK19VU0VfRkFTVF9NQVNLSU5HID0gRmFsc2UKKworIyBUaGlzIGlzIHVzZWQgc2lu
Y2UgcHl0aG9uX3JlcXVpcmVzIGZpZWxkIGlzIG5vdCByZWNvZ25pemVkIHdpdGgKKyMgcGlwIHZl
cnNpb24gOS4wLjAgYW5kIGVhcmxpZXIKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNyc6CisgICAgcHJp
bnQoJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjcgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUsIGZp
bGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitpZiBfVVNFX0ZBU1RfTUFTS0lORzoK
KyAgICBzZXR1cChleHRfbW9kdWxlcz1bCisgICAgICAgIEV4dGVuc2lvbignbW9kX3B5d2Vic29j
a2V0L19mYXN0X21hc2tpbmcnLAorICAgICAgICAgICAgICAgICAgWydtb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmknXSwKKyAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSkK
KyAgICBdKQorCitzZXR1cCgKKyAgICBhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKKyAgICBhdXRo
b3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3JnJywKKyAgICBkZXNjcmlwdGlvbj0nU3RhbmRhbG9u
ZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLicsCisgICAgbG9uZ19kZXNj
cmlwdGlvbj0oJ21vZF9weXdlYnNvY2tldCBpcyBhIHN0YW5kYWxvbmUgc2VydmVyIGZvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJGQyA2NDU1KS4g
JworICAgICAgICAgICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
IGZvciBtb3JlIGRldGFpbC4nKSwKKyAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCisgICAgbmFt
ZT1fUEFDS0FHRV9OQU1FLAorICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9O
QU1FICsgJy5oYW5kc2hha2UnXSwKKyAgICBweXRob25fcmVxdWlyZXM9Jz49Mi43JywKKyAgICBp
bnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgI1RPRE8oc3V6dWtpa2VpdGEpOiBVcGRhdGUg
dGhpcyB0byBuZXcgR2l0aHViIFVSTAorICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3B5d2Vic29ja2V0LycsCisgICAgdmVyc2lvbj0nMy4wLjAnLAorKQorCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVz
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2Nh
Y2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1
NTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNl
cnQucGVtCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJ
Q3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNEUUVCQlFVQU1Fa3hDekFK
QmdOVgorQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldK
emIyTnJaWFF4RkRBUworQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0WERURXlNRFl3TmpBM01q
UXpNMW9YRFRNNU1UQXlNekEzTWpRegorTTFvd1NURUxNQWtHQTFVRUJoTUNTbEF4RGpBTUJnTlZC
QWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAorWW5OdlkydGxkREVVTUJJR0ExVUVBeE1M
Y0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAorZ1kwQU1JR0pBb0dCQUtv
U0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWprQ1lpYWhYVwordTJDYlRU
aGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0VU5xdFFPaFFhcXFLK0Na
OQorTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytxVWYyTWpoNC8rU3p4QkRO
UDdBZ01CQUFHagorZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMr
K2J6TUhrR0ExVWRJd1J5TUhDQQorRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8zKytiem9VMmtTekJK
TVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQorQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNC
NWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgorWTJ0bGRJSUpBS3FWZ2hrR0Yx
clNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQQorZ3NNSTFXRVlx
TncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJrUThiQ3I2eFkrS3c3cwor
WnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJMbytldDk4c2VsWnlkcEhl
bUYzREpKMworZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2RjZWNGpVMDdoUT0KKy0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNTM3OWE3MmIwZGFjNWY0MTk3OWM4MDJjNjYzZGY4Yjg4ZGVhODI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCkBAIC0w
LDAgKzEsNjEgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246IDMg
KDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQorICAgICAgICBTaWduYXR1cmUg
QWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPUpQLCBT
VD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAgICAgICAgVmFsaWRpdHkK
KyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEyIEdNVAorICAgICAg
ICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCisgICAgICAgIFN1Ympl
Y3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNvY2tldAorICAgICAg
ICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3Jp
dGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0
KQorICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKyAgICAgICAgICAgICAgICAg
ICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6MWE6CisgICAgICAg
ICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2Ojg5OjAzOmEyOjIx
OgorICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjozNToyNzozYTphMjo5
Mjo4ZToxMjo2MjoKKyAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6Nzg6ZGY6YjY6OTQ6
Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6CisgICAgICAgICAgICAgICAgICAgIDVjOjA4OmYwOjA5OjNl
OmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgorICAgICAgICAgICAgICAgICAgICBlNTpm
YjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKKyAgICAgICAgICAgICAg
ICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6MDc6OWE6CisgICAg
ICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5OjgyOjgzOmRiOjY4OmJm
OmI4OgorICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1NDo3Mzo3YgorICAg
ICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4
dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAg
ICAgICAgICAgIENBOkZBTFNFCisgICAgICAgICAgICBOZXRzY2FwZSBDZXJ0IFR5cGU6IAorICAg
ICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKKyAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAor
ICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCisgICAgICAgICAg
ICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAgODI6QTE6
NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6RTk6MDY6MDAKKyAg
ICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAg
ICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZGOkEwOjY4OjRFOjFB
OjM3OkZCOkU2OkYzCisKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6ZDc6N2Y6YTA6MWU6
MGQ6MWE6ZWI6MmY6CisgICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1OjhjOjFiOmYwOjUxOmQ2
OjUyOmU3OjhkOjg0OjNiOjlmOgorICAgICAgICBkODplZDoyMjo5YzphYTpiZDplZTo5Yjo5MDox
ZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKKyAgICAgICAgYmE6Zjc6MTU6Y2U6ZGE6NWY6ZGI6
OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6CisgICAgICAgIGQzOmYxOmJlOjUyOjRm
OmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgorICAgICAgICBmOTowNTo1
MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpkNToKKyAgICAgICAg
OTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6MzQ6NjA6YjE6Cisg
ICAgICAgIGNiOmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNtRENDQWdHZ0F3
SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdKS1VERU8KK01Bd0dB
MVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3
dHcKK2VYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpPVEV3TWpNd056STFN
RGhhTUVreEN6QUoKK0JnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVF
Q2hNTGNIbDNaV0p6YjJOclpYUXgKK0ZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNSUdmTUEw
R0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKK2dRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0Fl
WXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKK0gvUjQzN2FVeXlmV3k5WTMx
MXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEyZHYKK0JJWWQ3Mklj
VmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJvNEdQTUlHTU1Ba0cK
K0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NHU0FHRytFSUJEUVFm
RmgxUGNHVnUKK1UxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdR
VWdxRnppeFlNZk9UVFJwVVQKK2xSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0ZvQVU2eFozRUpLN0tI
QnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKK2h2Y05BUUVGQlFBRGdZRUFhN05HS1FMZnNNaU94
TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKKzJPMGluS3E5N3B1UUhZU2pUQXZM
NjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoKK1l6dFI3YWVCK1FW
UmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4eTY0PQorLS0tLS1F
TkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9j
ZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMxYWYxMTM0OTlkNmE1
YThiMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4Mgp6Y21ZK0ZYSCpqaTdLTWAjMHRCZzJx
ekZpdFAhZjxQSEEtKk5Mb0BWX2djZjB0OFdCKCNJP3slWVJGeCp1YCUpeUoKejFuRyFLMzVicWhY
clg3QWI5USVqZjg2dWx4JVp2LT4lSF5BYVpwd2VrUDQyWW59ZzZ2I091WUE4R3RtdlZqU0lqCnpG
cGg1VSgoWiVmQVN3U3VrWVhHcD1GKkEpMFJmaTxgJWVPZF5GcEJpLWYjczdmaXI/PjJjVyRUIzsy
KkdBUF9BZQp6MV8jbHJuMkUoZUtPTUo2TjI2WUpuZV9AaHB9U0tQWFVCN0ZNZXJffjV8MXFnQ3tU
cW5uQnV2MSRrcHA1T0J6JUAKejxteVN3Kz9ZPl5qQVo0I1hBLX0qIVFzYnVPaFcoc084MzY2KCQ7
KDFBPm1vKE8tJXgoaG4oPXlaO3l+TkcjUVgxCnpnSGtTaV5eOGN2NFRUU0w5dm41cVIoPl9EM2Ym
b2MqandQZ0kjS0BRI0FzTClEO0JEJldiMmQrSTFeSjduPn1ZWgp6YkNYbzlmT0BnIUBkV1lhMlYl
fTspIXs8ekRjfChwdkpJYXhXN05kTyVPNmY+ciZhT3JwSGt7b19SOW1RNDd1b2IKej9sPjl8bnxY
M2BhZ3BeRztMd1hSNTwobHIrUjxjTDVqVFEoP15EPGtSbyFIX1QjcD95M2R9XnRDWVYhOFJeTj99
CnpDKiVYbTlMZWY+ajdobHItP2pIbHB8d2ZBJl5uLXM7PCF6JHFEMXhQcSE4S1ExfX5kdXB3fkJN
MWdzfkBBbztDcQp6d1JnVXwyXmR9Ti1nVjtAYVlrdThJJX18PGw2UU0/PWR+RllwYkdGSDkmdk5n
S1oqU3ljSVN8bWN1T1I/bCZDT3cKenN7emQ1em1lbHhxTjFEUXl7fVBnQj11I2Z6SU5Qa0Iwb04q
Y2szdmArMXshWVhQfntFVkk3VnFoKn51YVdfflVDCnpsUjMzUlowNUhoa0MtMWVJcCktQFleeXZj
LXxSJSEqOWR3N25mVyl5amNISVlmNnI9YUN0KFVoaS1GSm0ybntfKQp6JXt1bEJVWFJgMjw+bHh9
ZUdtU21SSj41b3RrQCgrcGpzUHE7NGhaNkZJS2wje254UCFBTCEyOF9fQVlmbGBWZ3sKemxSUmFB
UnxWbXkxX2BeYmJqWnJ6QXtRJGxZZWpJWWReQSRaPlcmanluTT1LYFRsNHdWKTN3QGQxSmNgLTUt
Q0dKCnp4cV5AOF8oITxaRjJxbGhfWn19bnI/UyY1KnorRkApdihaMUVJcztIbX0hMX5NVEwhajFA
YyRaSExSfVYoPTtebwp6ZFVwZnk/bz55em9sX3NpPDxVRUI9dChlZUJ6Z0peV1l3c0hDRzkzNHMk
ZClAcXFId2deeVpNe2BeakohOTt0cjYKemVvVWF5JiQrQnlHfE5eX3pvQUhedFlJZz5oYVl3fEB8
YzMxXncoblVkN2soWW1FSjc2Vlk3OSsoQyhfJDsxTXNVCnpoaU5pK0I1Z1NyRGp8OT48QD82UiY4
emJtOGJyP0MtTm4xY2soKzxOSyU3KTZ2LXdXcTQ9TV9UYnQxOTR6VSp5Rgp6aDxvdDxIQldub3hC
JTFrOShNMG88TmcpUmdIUygjP2VkRVFCIV58RmstXyhhYGJVQkxBSypofmF6fiFfeHU9VDQKejZH
NUstYVhKb3RIUWxFQzhDVTV8UnlNUnVRa1hFKT9edjYoaT1NdSk9JF5vJTAheXM1R1ZSYVhaMlMy
SDRJODNMCnpxKWJgfFB4eyg4OVczMnpxNHNxekgrQkFLUDl1YURFcEQ4SUlBOUQtSDQ1QyVWVD9K
SiNNYStCQGk5TVBkRi0jIwp6TnhGNVR1fWl6X2h6JFNLWjBfXyYhWXAxeWFkVnpvY0BFeStCZWZK
Q3RDU1ZkNShKeSg8QzZJY0NXfURtSHdDOFQKelJ7a3F2UkA/M3J6TEcyJFpkY3gtNXZGUkBkJFEj
REQrfntkaEBtZF9lYEJCNipVWTZSKzReI1UlejRsdHg5QiU7CnpOVjh6KntHY0dNO2dxMlJ0eWRq
e0gwUzBwI3o8NiU3bTMhJXs/TVF1YTxgQGU1Yk90YmQhRWM/R151eGY0Z3hjSQp6LUY3U1RZaX52
RGJtdkNaM05EY2ZIajg+QzlGVjZqZDF9KHBTd3JnR2sqUVo5UnI0KTYhc1NrVFVxYnhiYWVhMnUK
endTYCR5b3NRKWViJW9fdkpPKiFBYGRSO1k0az4mcVl6dWEtWk5FPDNGRT1JK2VTVTt4IXB0XkEz
NT5vSW9QYEpxCnpabH4pckM2MEwra1N4QWdvUEV8ckdqVkA/MkF5KlhiPSRjYGNfTDM9RXpoakJV
RD1oMV80JWVCQ2ZsaiZFSFptTwp6c3sxYnxOdXg2KztLI0tCPVRrX3xpa3x7KjAxZGskOUthNmBj
UlU9TWNZaU4hay1hKTJQRDMxaDxjVHMla1Bob1oKek8pMndfVDktOHcyTk0mJnEycGw0XktxfUNQ
ZT1sOWhxJFc0IXQ7SkQlfFVKKDI4dkRiTSpMPlZGN2JXX1h7YjE0CnpHTncodz5FX1M5YDw7eFFs
UGBAc2Q+Nm0zbjIpTCkwcCFYUnJEIzI1aUlrUkRzKTF1ak4lU3N5dyM2MnZkdiZBbAp6Y2RqLVls
IzYrQGEwV3NjVTwzYGd2VyQydy0oXkhmRVJ5eHNOc3E2bUswZDg7PzBMU2VOaCVORWUwQllKNElM
KGEKeiRXWG5kKVBCVzxBVGt7eSUyUzlHUGEycXlKVyReSkpfY29fWFAxbTlFfWopUT9ebCQjKk1E
eFA1fG1ZMXpjcTN5CnpiPUB6eUNYdWd3ZHtOang/aTI3ait6WE80KlY+fVplLXpCUXgpSHlud0xg
TmooITl0KTU0ZE87elRWfi1PIztVOwp6TXdwMFBVLXVVTD8jIzhMLSkmdm1ibkFtbiNAJmE+dj1j
UH1FVVFKVndhRHc5VjwtSXdZdGlUOXcoVE1lYTIlRHkKenxBNDAkTjV1b2lRRV5fe1MxLWlgcTVs
dHRwZz5TRDRwYWZoZmxCfDZQRT4hPnNoV2tvRW1aaGcrfjBIcDwzS1RACno5amskcU1DPTAmQmJr
XmZSbzRmMzhKfmlXQ3x4R1AwYHdaM0YjazhnKklkTlkkR0YtQXg4XjxEckJeajI4WGI2cwp6Unw7
VnZhciU8fFRaS34+MzBrRDMpVyRBRCModHRgI0B4N1E4T1lhcFRfSnlNMXZUP2xieC0rX0YoSkYl
eVMwTyQKenBTI2x9dyowaj5ifU0zZTs0ST57cE1NPnMlYD9mU0FFX1FiYEFuPl9WIWtpfSQ5d01O
OShmVTF1SkdtME1pN2hLCnpBNWwwZTF3VmNeJHFsPzVnbT44RXZCcFNhV2Y1VElnM1pTYnVKaHA7
YSUoWitrY3tjZHYxUHVYJGUyR0FOP0pmOAp6V0tOZ1M8KE0yRk5VYFJ4ZEJHfWY9UzFyblEqZVIx
MnFGX0MmJnBuQGB5JUN+TDleUV9aOWxoJkc9WHZHQyE0MTAKenluKTVvPSl4MmlKWSteP15FTGpu
dEhIYH1LKXphP0k9fHYhJGhMMG4mR3p5cHphTHdOZGVNPU9qV3wtLT1tUl9qCnp5dD9+VnhfXzlC
RXZjaEw/OWh1VW9iLTVuK3IxPzx4QGNnfTVhfFZ8RmNGUU8qZUlwd1pFbn5WR0xlcXZTQFdrMgp6
KSErRDMtO3s0QE9PKWIrYlFPIz0tRStCZU9AZiEzPGlUMG1iMnBiMzg4e0dJUmFyamRuVGklQD80
cXd5I3E2MFkKenFpQXx7dDZvNDlFTTE4SiZ3OERBI3dRRERzRndOJEhHKk1UTDIxQlFqKVlSYFc1
TDtaZk1NPCpyTD1GSWd8MGJKCnpUOXI3RmxCTExeclYlMVVPITN8R0RFYU0hakhQTHI/NVFCdUND
IVcpPmRyZl5SQ2BgN1lSWVooSz5pZTA+cEpkXgp6SldfSHslKV5jITY+bHw5UDg/Yz1qKEI1N1lK
ejg/WHlRekU5dUdhfWRWMFBUcDMhO3AhU0YpfXQtaT5DPEVkSCsKek1LQVNuViMhJlNXZmR9MGRs
alhzeVFmenNANmkwK2RxU0hKTH5GN35vdHwkSHdmK0YqMGpDSyp3NVdvRkBROWhOCnpobGslU3to
NkM1N0NJMl81Ujk7ZjM7cC0xPkRVbipVXmVvR2pocW87KlIqJGtWRTAxSj5USlFSc3Y5b3omayEz
egp6a1dUOyowUWUwTTNVQ0x3MEQ9SitmR2ZjRnZKVXxgVWRzS18zNHRUdkh7ZiYtWThXRkdoP15Q
IVg1O3k9Rlp1RHMKZmZyV2swJU0oT0duVE1OPGgmcUB5TGREVV8mTWNBZj98MWtNZWpVTm8KCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
Y2VydC9rZXkucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFlODU4MzE4ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtCkBAIC0wLDAgKzEs
MTUgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNYZ0lCQUFLQmdRRGVF
TTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczEKK0p6cWlrbzRT
WWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0IK
K2lONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6
ZXdJREFRQUIKK0FvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4VGxkYWZhNlh2YXdF
WVVUUDBTNzd2LzFsbGcxWXYKK1VJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMvWjNlMWZzb3Q1dERZ
c3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKK1FTbzdZRkNhanVIdEUrVy9nekYrVUhiZHp6WElE
alFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKKzNVUjhmOG9la0VSd3NtRU1mOURI
NVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EKK29nQU0rNE5YNFFK
QkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0YmxNSlE1T3EKK1Fk
T0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQeWxHM3VyY0MybWZR
eEJra1cKK1pDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0OVVObXFjME4wZnBl
MmZBZWhqM1VFQ1FRQ20KK0ZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6M2Nia0I0QjNGY2hE
bGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKK1FEazF0VUtvcnR4dlFaSmFBRDRCQWtFQWhHT0hRcVBk
NmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKK0NsUmlNbjJnOFNBTGlJTDNCRGdHWEtj
S0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OTA0NDE5MGY1OGJlNzc0NTYxNTIzYjNhN2ViOWNkZGFiYTgyMzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9r
ZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVz
dGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ1MGE2YWNkNTM3NjIyM2M2MDNhYmUyNjRiOTY3Nzk2ODMyZmI1NzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5w
eQpAQCAtMCwwICsxLDcxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGluZy4KKworVGhpcyBt
b2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgaGFuZHNoYWtlLCBm
cmFtZQorc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50LgorCitUaGlzIGlz
IGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMgY29kZSBpbmRlcGVu
ZGVudCBmcm9tCittb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcuIFN0cmVhbSBjbGFz
cyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKK3Rlc3RpbmcuIFVzaW5nIHV0aWwuaGV4aWZ5LCBl
dGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3NpbmcKK2lzIGFsbG93
ZWQuCisKK05vdGU6CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcuLCB3ZSBjdXQg
Y29ybmVycyBpbiBoYW5kc2hha2UuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBv
cnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBoYXNobGliIGltcG9ydCBzaGExCitmcm9tIHNp
eCBpbXBvcnQgaXRlcmJ5dGVzCitmcm9tIHNpeCBpbXBvcnQgaW5kZXhieXRlcworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KKworREVGQVVMVF9QT1JUID0gODAKK0RFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKKwor
IyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcg
Zm9ybWF0CitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENPREVfQ0xPU0UgPSAweDgKK09Q
Q09ERV9QSU5HID0gMHg5CitPUENPREVfUE9ORyA9IDB4YQorT1BDT0RFX1RFWFQgPSAweDEKK09Q
Q09ERV9CSU5BUlkgPSAweDIKKworIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQorX1VQR1JB
REVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCitfQ09OTkVDVElPTl9IRUFERVIg
PSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKK1dFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9IGIn
MjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJworCisjIFN0YXR1cyBjb2Rlcwor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5U
X0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CisKKyMgRXh0ZW5zaW9u
IHRva2VucworX1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZs
YXRlJworCisKK2RlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfc2VjX29yaWdpbl9oZWFkZXIob3Jp
Z2luKToKKyAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2lu
Lmxvd2VyKCkKKworCitkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKKyAgICAjIDQuMSAxMy4g
Y29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hh
cmFjdGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBv
cmlnaW4ubG93ZXIoKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNl
Y3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5nLgor
ICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9ydCA9IGhvc3QubG93
ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBu
b3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0
NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAgICMgKDopIGZvbGxv
d2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVn
ZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9
IERFRkFVTFRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVM
VF9TRUNVUkVfUE9SVCkpOgorICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKKyAg
ICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIw
IFNQQUNFCisgICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJ0hvc3Q6ICVzXHJcbicgJSBob3N0cG9ydAorCisKKyMgVE9ETyh0eW9zaGlubyk6
IERlZmluZSBhIGJhc2UgY2xhc3MgYW5kIG1vdmUgdGhlc2Ugc2hhcmVkIG1ldGhvZHMgdG8gdGhh
dC4KKworCitkZWYgcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVjZWl2ZWRf
Ynl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxlIHJlbWFpbmluZyA+
IDA6CisgICAgICAgIG5ld19yZWNlaXZlZF9ieXRlcyA9IHNvY2tldC5yZWN2KHJlbWFpbmluZykK
KyAgICAgICAgaWYgbm90IG5ld19yZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQgYmVmb3JlIHJlY2Vp
dmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAnKHJlcXVlc3RlZCAlZCBi
eXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUKKyAgICAgICAgICAgICAgICAobGVu
Z3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICByZWNlaXZlZF9ieXRlcy5hcHBlbmQo
bmV3X3JlY2VpdmVkX2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVuKG5ld19yZWNlaXZl
ZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWRfYnl0ZXMpCisKKworIyBUT0RP
KHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xhc3MgZGl2ZXJ0cyB0aGVz
ZSBtZXRob2RzLiBXZQorIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNlciBhcyBzcGVjaWZpZWQg
aW4gUkZDIDY0NTUuCisKKworZGVmIF9yZWFkX2ZpZWxkcyhzb2NrZXQpOgorICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KKyAgICBmaWVsZHMgPSB7fQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgNC4xIDMz
LiBsZXQgL25hbWUvIGFuZCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIG5h
bWUgPSBiJycKKyAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25h
bWUvCisgICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKKyAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2Vz
CisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBzcGVjLgorICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCisgICAg
ICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShz
b2NrZXQsIGNoKQorICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVy
CisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9
IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZv
ciBoZWFkZXIgJworICAgICAgICAgICAgICAgICclcicgJSAoY2gsIG5hbWUsIHZhbHVlKSkKKyAg
ICAgICAgIyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0
IGhhcyB0aGUgbmFtZQorICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkg
aW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAjIGFycmF5IGFzIGEgVVRGLTgg
c3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZworICAgICAgICAjIG9idGFp
bmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0
ZQorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgZmllbGRzLnNldGRlZmF1bHQobmFtZS5kZWNv
ZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5hcHBlbmQodmFsdWUu
ZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKKyAgICByZXR1cm4gZmllbGRzCisKKworZGVmIF9yZWFkX25hbWUoc29ja2V0
KToKKyAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIG5h
bWUgPSBiJycKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQuMSAzNC4gcmVhZCBhIGJ5dGUg
ZnJvbSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisg
ICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUp
CisgICAgICAgIGVsaWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAgICAgcmV0dXJuIG5h
bWUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSArPSBjaAorCisKK2Rl
ZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKKyAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0
aGUgc2VydmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgcmV0dXJuIGNoCisKKworZGVmIF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gp
OgorICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIHZh
bHVlID0gYicnCisgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgorICAgIHdo
aWxlIFRydWU6CisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFs
dWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpCisKKworZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6CisKKyAgICBmaXJz
dF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkKKyAgICBmaW4gPSAoZmlyc3Rf
Ynl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCisgICAgcnN2
MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAm
IDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNvbmRfYnl0ZSA9IG9y
ZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3
KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgaWYg
bWFzayAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ01hc2sgYml0IG11c3QgYmUgMCBm
b3IgZnJhbWVzIGNvbWluZyBmcm9tIHNlcnZlcicpCisKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9
PSAxMjc6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygnIVEnLCBl
eHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPiAw
eDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0
LCAyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFIJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisKKyAgICByZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3Yz
LCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCisKKworY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgor
ICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJhd19zb2NrZXQpOgorICAgICAgICBzZWxmLl9zc2wgPSBzb2NrZXQuc3NsKHJhd19z
b2NrZXQpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9zc2wud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3NzbC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6Cisg
ICAgICAgICMgTm90aGluZyB0byBkby4KKyAgICAgICAgcGFzcworCisKK2NsYXNzIEh0dHBTdGF0
dXNFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIHVuZXhwZWN0ZWQgaHR0cCBzdGF0dXMgY29kZSB3YXMKKyAgICByZWNlaXZlZCBh
cyBhIHJlc3VsdCBvZiBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHN0YXR1cyk6CisgICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYp
Ll9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworY2xhc3Mg
V2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgorICAgICAgICAiIiJIYW5kc2hha2Ug
V2ViU29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFu
ZHNoYWtlIGZhaWxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0CisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMgPSBb
XQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAgICAgICAgZmllbGRz
LmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAg
ICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxz
KSkKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKKyAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
c2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorCisgICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5k
b20oMTYpCisgICAgICAgIGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfa2V5KSkK
KyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2NrZXQtS2V5OiAlc1xyXG4nICUga2V5
LmRlY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tl
dC1WZXJzaW9uOiAlZFxyXG4nICUgc2VsZi5fb3B0aW9ucy52ZXJzaW9uKQorCisgICAgICAgICMg
U2V0dGluZyB1cCBleHRlbnNpb25zLgorICAgICAgICBpZiBsZW4oc2VsZi5fb3B0aW9ucy5leHRl
bnNpb25zKSA+IDA6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zOiAlc1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2lu
KHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQorCisgICAg
ICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChmaWVsZC5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGIn
XHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hh
a2UgcmVxdWVzdCcpCisKKyAgICAgICAgZmllbGQgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAg
ICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNo
YWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGEg
VW5pY29kZURlY29kZUVycm9yIHdoZW4gdGhlIGRlY29kZSBmYWlscworICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoYidcclxuJyk6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcycgJSBmaWVsZC5kZWNvZGUoJ0xh
dGluLTEnKSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKGInW14gXSogKFteIF0qKSAuKicsIGZpZWxk
KQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVzJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpCisgICAgICAgIGNvZGUg
PSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCByZS5tYXRjaChiJ1swLTldWzAtOV1bMC05XSQn
LCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
SFRUUCBzdGF0dXMgY29kZSAlcyBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVz
JyAlCisgICAgICAgICAgICAgICAgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29k
ZSgnTGF0aW4tMScpKSkKKyAgICAgICAgaWYgY29kZSAhPSBiJzEwMSc6CisgICAgICAgICAgICBy
YWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQ
IHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXMgaW4gc3RhdHVzIGxpbmU6ICcKKyAgICAgICAg
ICAgICAgICAnJXInICUgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29kZSgnTGF0
aW4tMScpKSwKKyAgICAgICAgICAgICAgICBpbnQoY29kZSkpCisgICAgICAgIGZpZWxkcyA9IF9y
ZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCisKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFk
ZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICAjIENoZWNrIC9maWVsZHMvCisgICAgICAgIGlm
IGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1sndXBncmFkZSddKQorICAgICAgICBpZiBsZW4oZmllbGRzWydj
b25uZWN0aW9uJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011bHRpcGxl
IENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKKyAgICAgICAgaWYgZmllbGRzWyd1cGdyYWRlJ11b
MF0gIT0gJ3dlYnNvY2tldCc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmllbGRzWyd1cGdyYWRlJ11bMF0pCisgICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbidd
WzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQorCisgICAgICAgIGlmIGxlbihm
aWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFj
Y2VwdCddKQorCisgICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XVswXQorCisgICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVj
b2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAgICAgZXhjZXB0IFR5
cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICcgKyBhY2NlcHQpCisKKyAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
RGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25n
JykKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkKKworICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQgPSBzaGExKGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKKyAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2ViU29ja2V0
LUFjY2VwdDogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9h
Y2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQu
ZGVjb2RlKCdVVEYtOCcpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVk
KSAhPSAlciAnCisgICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVk
X2FjY2VwdCkpCisKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdl
dCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IFtdCisgICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9u
cygKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkK
KworICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhl
cmUgaXMgYW55IHVucmVjb2duaXplZAorICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9u
cyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCisgICAgICAgICMgZXh0ZW5zaW9u
cyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwg
YmUKKyAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgorICAgICAgICBmb3Ig
ZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBleHRlbnNp
b24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OOgorICAgICAgICAgICAg
ICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQorICAg
ICAgICAgICAgICAgIGlmIGNoZWNrZXI6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0
ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKKworCitjbGFzcyBXZWJT
b2NrZXRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJT
b2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29j
a2V0LCBoYW5kc2hha2UpOgorICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKKyAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQg
dG8gYXBwbGljYXRpb24gZGF0YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgorICAgICAgICBzZWxmLl9v
dXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1l
X2ZpbHRlciA9IE5vbmUKKworICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UKKworICAg
IGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBvcy51
cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJZgorICAgICAgICAj
IHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGlicmFyeSBjYWxsIHRo
YXQgZ2VuZXJhdGVzCisgICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkbyBy
YW5kb20gbnVtYmVyIHNlcXVlbmNlLgorICAgICAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRv
bSg0KQorICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KKyAgICAgICAgY291bnQgPSAw
CisgICAgICAgIGZvciBjIGluIGl0ZXJieXRlcyhzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodXRpbC5wYWNrX2J5dGUoYyBeIGluZGV4Ynl0ZXMobWFza2luZ19ub25jZSwgY291bnQpKSkK
KyAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKKyAg
ICAgICAgcmV0dXJuIGInJy5qb2luKHJlc3VsdCkKKworICAgIGRlZiBzZW5kX2ZyYW1lX29mX2Fy
Yml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAgICAgICBzZWxmLl9zb2NrZXQu
c2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCisKKyAgICBkZWYgc2VuZF9k
YXRhKHNlbGYsCisgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgbWFzaz1UcnVlLAorICAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAgICAgICAgICAgICAg
ICAgcnN2Mj0wLAorICAgICAgICAgICAgICAgICAgcnN2Mz0wKToKKyAgICAgICAgaWYgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGF5bG9hZCA9
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkKKworICAgICAgICBp
ZiBzZWxmLl9mcmFnbWVudGVkOgorICAgICAgICAgICAgb3Bjb2RlID0gT1BDT0RFX0NPTlRJTlVB
VElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQorCisg
ICAgICAgIGlmIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQorICAg
ICAgICAgICAgZmluID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZnJhZ21l
bnRlZCA9IFRydWUKKyAgICAgICAgICAgIGZpbiA9IDAKKworICAgICAgICBpZiBtYXNrOgorICAg
ICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1h
c2tfYml0ID0gMAorCisgICAgICAgIGhlYWRlciA9IHV0aWwucGFja19ieXRlKGZpbiA8PCA3IHwg
cnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2Fk
KQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6CisgICAgICAgICAgICBoZWFkZXIg
Kz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgZWxp
ZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6CisgICAgICAgICAgICBoZWFkZXIgKz0gdXRpbC5w
YWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAg
JyFIJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8
IDYzOgorICAgICAgICAgICAgaGVhZGVyICs9IHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI3
KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICchUScsIHBheWxvYWRfbGVuZ3RoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUb28gbG9uZyBwYXls
b2FkICglZCBieXRlKScgJSBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgaWYgbWFzazoKKyAgICAg
ICAgICAgIHBheWxvYWQgPSBzZWxmLl9tYXNrX2h5YmkocGF5bG9hZCkKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoaGVhZGVyICsgcGF5bG9hZCkKKworICAgIGRlZiBzZW5kX2JpbmFyeShz
ZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5kX2Rh
dGEocGF5bG9hZCwgT1BDT0RFX0JJTkFSWSwgZW5kLCBtYXNrKQorCisgICAgZGVmIHNlbmRfdGV4
dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5k
X2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisK
KyAgICBkZWYgX2Fzc2VydF9yZWNlaXZlX2RhdGEoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMpOgorICAgICAgICAoYWN0dWFsX2ZpbiwgYWN0dWFsX3JzdjEsIGFj
dHVhbF9yc3YyLCBhY3R1YWxfcnN2MywgYWN0dWFsX29wY29kZSwKKyAgICAgICAgIHBheWxvYWRf
bGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVhZGVyKHNlbGYuX3NvY2tldCkKKworICAgICAgICBpZiBh
Y3R1YWxfb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5l
eHBlY3RlZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkKKworICAgICAgICBp
ZiBhY3R1YWxfZmluICE9IGZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmluLCBhY3R1YWxfZmluKSkKKworICAgICAgICBpZiByc3YxIGlzIE5v
bmU6CisgICAgICAgICAgICByc3YxID0gMAorCisgICAgICAgIGlmIHJzdjIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJzdjIgPSAwCisKKyAgICAgICAgaWYgcnN2MyBpcyBOb25lOgorICAgICAgICAg
ICAgcnN2MyA9IDAKKworICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSByc3YxOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIg
KGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2MSwgYWN0dWFsX3Jz
djEpKQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJzdjI6CisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCisK
KyAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2MzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKKworICAgICAg
ICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkK
KworICAgICAgICBpZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIo
cmVjZWl2ZWQpCisKKyAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
cGF5bG9hZCBsZW5ndGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAobGVuKHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKKworICAgICAgICBpZiBwYXls
b2FkICE9IHJlY2VpdmVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQorCisgICAgZGVmIGFzc2Vy
dF9yZWNlaXZlX2JpbmFyeShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5
bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1PUENPREVfQklOQVJZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29kZSwgZmluLCByc3Yx
LCByc3YyLCByc3YzKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz
djM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNv
ZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgX2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYs
IGNvZGUsIHJlYXNvbiwgbWFzayk6CisgICAgICAgIGZyYW1lID0gdXRpbC5wYWNrX2J5dGUoMSA8
PCA3IHwgT1BDT0RFX0NMT1NFKQorCisgICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24uZW5jb2RlKCd1
dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBib2R5ID0gYicnCisgICAgICAgIGlm
IG1hc2s6CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZSgxIDw8IDcgfCBsZW4o
Ym9keSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZShsZW4oYm9keSkpICsgYm9keQorICAgICAgICByZXR1
cm4gZnJhbWUKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6CisgICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJl
YXNvbiwgVHJ1ZSkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZSwg
cmVhc29uKToKKyAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIEZhbHNlKQorICAgICAgICBhY3R1YWxfZnJhbWUgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKKyAgICAgICAgaWYgYWN0dWFs
X2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAor
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2ZyYW1lLCBhY3R1YWxf
ZnJhbWUpKQorCisKK2NsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJIb2xkcyBv
cHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCisgICAgICAgIHNlbGYu
c2VydmVyX2hvc3QgPSAnJworICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCisgICAgICAgIHNlbGYu
cmVzb3VyY2UgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKKyAgICAgICAgc2Vs
Zi5zb2NrZXRfdGltZW91dCA9IDEwMDAKKyAgICAgICAgc2VsZi51c2VfdGxzID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KKworCitkZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9y
ZXRyeShob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VfdGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk9MTAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGVlcF9zZWM9MC4xKToKKyAgICByZXRyeV9j
b3VudCA9IDAKKyAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQo
dGltZW91dCkKKyAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCisgICAgICAgICAg
ICBpZiB1c2VfdGxzOgorICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29ja2V0KHMpCisgICAg
ICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAg
ICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKKyAgICAgICAgICAgICAg
ICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXRyeV9jb3VudCA9
IHJldHJ5X2NvdW50ICsgMQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xlZXBfc2VjKQor
CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBDbGllbnQob2JqZWN0KToKKyAgICAiIiJXZWJT
b2NrZXQgY2xpZW50LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hh
a2UsIHN0cmVhbV9jbGFzcyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAg
IHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hh
a2UKKyAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNzCisKKyAgICBkZWYg
Y29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0
aF9yZXRyeShzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zb2NrZXRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAgICAgc2VsZi5faGFu
ZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgc2VsZi5fc3RyZWFtID0g
c2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQorCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKKworICAgIGRl
ZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBi
b2R5KQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICAgYmluYXJ5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcmF3PUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKToKKyAgICAgICAgaWYgYmluYXJ5OgorICAgICAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKKyAgICAg
ICAgZWxpZiByYXc6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2Us
IE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW0uc2VuZF90ZXh0KG1lc3NhZ2UsIGVuZCwgbWFzaykKKworICAgIGRlZiBhc3NlcnRf
cmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBiaW5hcnk6
CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
dGV4dChwYXlsb2FkKQorCisgICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3Nl
KGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2Rl
PVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAgICAgICAgc2VsZi5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBjbG9zZV9zb2Nr
ZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0
X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFk
X2RhdGEgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCisgICAgICAgICAgICAg
ICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5n
dGggJworICAgICAgICAgICAgKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKKyAg
ICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5S
RVNFVCddOgorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX251bWJlciA9PSBnZXRhdHRy
KGVycm5vLCBlcnJvcl9uYW1lKSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICBy
YWlzZSBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25uZWN0aW9uIGlzIG5vdCBjbG9z
ZWQgKFJlYWQ6ICVyKScgJSByZWFkX2RhdGEpCisKKworZGVmIGNyZWF0ZV9jbGllbnQob3B0aW9u
cyk6CisgICAgcmV0dXJuIENsaWVudChvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9u
cyksIFdlYlNvY2tldFN0cmVhbSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWFlZjUyZWNmMDE5N2Y3ZTU3ZjM0NmE3MTU0ODI1MmEzODYx
ZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5CkBA
IC0wLDAgKzEsMjI3IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1vY2tzIGZvciB0ZXN0aW5nLgor
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4
Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2l4
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitjbGFzcyBfTW9ja0Nvbm5CYXNlKG9iamVjdCk6
CisgICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8g
YSAobW9jaykgbXBfY29ubi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQorICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gYidm
YWtlX2FkZHJlc3MnCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk92
ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuCisKKyAgICAgICAgZGF0YSBz
aG91bGQgYmUgYnl0ZXMgd2hlbiB0b3VjaGluZyB0aGlzIG1ldGhvZCBtYW51YWxseS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKKworICAgIGRl
ZiB3cml0dGVuX2RhdGEoc2VsZik6CisgICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRo
aXMgbW9jay4iIiIKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5fd3JpdGVfZGF0YSkK
KworCitjbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJNb2NrIGZvciBtb2Rf
cHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNp
Znkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxs
IGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVhZF9kYXRhKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5j
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNo
b3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCisgICAgICAgICAgICBjYWxs
ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikK
KyAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCisgICAgICAgIHNlbGYuX3JlYWRf
cG9zID0gMAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgorCisgICAgICAgIGlmIHNlbGYu
X3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAgcmV0dXJuIGIn
JworICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZChiJ1xuJywgc2VsZi5f
cmVhZF9wb3MpICsgMQorICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAgICAgICAgICAgZW5k
X2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRf
dXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAg
IGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAg
cmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSks
IHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90
byhlbmRfaW5kZXgpCisKKyAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToKKyAg
ICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCisg
ICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4CisgICAgICAgIHJldHVybiBsaW5lCisK
KworY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJCbG9ja2lu
ZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVz
IHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nv
bm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICBD
YWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBh
dmFpbGFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBfTW9j
a0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVz
LnF1ZXVlLlF1ZXVlKCkKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3Zl
cnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKKyAgICAgICAgbGlu
ZSA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2Vs
Zi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpCisgICAgICAgICAgICBp
ZiBjID09IG9yZChiJ1xuJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKGxpbmUpCisK
KyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0
aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9IGJ5dGVhcnJheSgp
CisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgIGRhdGEu
YXBwZW5kKHNlbGYuX3F1ZXVlLmdldCgpKQorCisgICAgICAgIHJldHVybiBieXRlcyhkYXRhKQor
CisgICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIiIlB1dCBieXRlcyB0
byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBi
eXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIGJ5dGUg
aW4gc2l4Lml0ZXJieXRlcyhieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoYnl0
ZSkKKworCitjbGFzcyBNb2NrVGFibGUoZGljdCk6CisgICAgIiIiTW9jayB0YWJsZS4KKworICAg
IFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBvbmx5IHRoZSBtZXRo
b2RzIHVzZWQgYnkKKyAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KKyAgICAiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5
X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29weV9mcm9tID0gbGlzdChjb3B5X2Zyb20uaXRl
bXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgorICAgICAgICAgICAg
c2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYs
IGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fZ2V0aXRlbV9f
KGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgor
ICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtleS5sb3dlcigpLCB2
YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9uZSk6CisgICAgICAg
IHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIoKSwgZGVmX3ZhbHVl
KQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTW9jayByZXF1ZXN0Lgor
CisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICB1cmk9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgaGVhZGVyc19pbj17fSwKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1Ob25lLAorICAg
ICAgICAgICAgICAgICBtZXRob2Q9J0dFVCcsCisgICAgICAgICAgICAgICAgIHByb3RvY29sPSdI
VFRQLzEuMScsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToKKyAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAg
IHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVz
dCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0
aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCisgICAgICAg
ICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCisKKyAgICAg
ICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCisg
ICAgICAgICIiIgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLnVucGFyc2Vk
X3VyaSA9IHVyaQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAg
IHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAor
ICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKKyAgICAgICAg
IyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBh
dm9pZCBuYW1lCisgICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlz
IG5hbWVkIGFzIHN1Y2guCisgICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKKyAgICAg
ICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW0oc2VsZiwgU3RyZWFtT3B0aW9ucygpKQorICAgICAg
ICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29u
ID0gTm9uZQorICAgICAgICBzZWxmLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xB
VEVTVAorICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQorCisgICAgZGVmIGlzX2h0dHBz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXworCisKK2NsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6CisgICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtl
X2NhbGxlZCA9IEZhbHNlCisKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5f
Y29udGV4dCk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUK
KworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHBh
c3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjIyMDE1NTM5ZTQ3ZmRmNTE4ODc1MTU4ZjZiZDZmMzY5OTRmYWJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5CkBAIC0wLDAgKzEs
ODcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSdW4g
YWxsIHRlc3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworVGhpcyBzdWl0ZSBpcyBleHBlY3Rl
ZCB0byBiZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5LCBpLmUuIHRoZQor
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBldGMuCisKK1RvIGNo
YW5nZSBsb2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVsIG9wdGlvbi4KKyAg
ICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZworCitUbyBwYXNzIGFu
eSBvcHRpb24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBvcHRpb25zIGFmdGVy
ICctLScuIEZvcgorZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUgdGVzdCBydW5uZXIg
dmVyYm9zZS4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZyAt
LSAtdgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK19URVNUX01PRFVMRV9QQVRURVJOID0gcmUuY29tcGls
ZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9kdWxlcyhkaXJlY3Rv
cnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3Rk
aXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVfUEFUVEVSTi5zZWFy
Y2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgbW9kdWxlX25hbWVz
LmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25hbWVzCisKKworZGVm
IF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgIHJldHVy
biBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMo
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLicpKSkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cigpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWxvZy1sZXZlbCcsCisgICAg
ICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGRlc3Q9
J2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnLAorICAgICAgICBjaG9pY2Vz
PVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwn
XSkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwu
dXBwZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKXMg
JShhc2N0aW1lKXMgJworICAgICAgICAgICAgICAgICAgICAgICAgJyUoZmlsZW5hbWUpczolKGxp
bmVubylkXSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQorICAgIHVuaXR0ZXN0Lm1haW4o
ZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBdXSArIGFyZ3MpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lz
X3BhdGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZmNlN2IzNGI2NzUxZDYzNWRjZGE2ZTBkNGE1NzExOTUxYTBhMzNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkKQEAgLTAsMCAr
MSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nLgor
CitUZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBtb2R1bGUgYmVmb3JlIG1vZF9weXdlYnNv
Y2tldC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IG9zCitpbXBvcnQgc3lzCisKKyMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5w
YXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgorc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlNjM5ODBmMjU4MWY5ZjYxMzZlODVkYzE2YmI2NGNjYmUzNzNkYzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKQEAg
LTAsMCArMSwyOTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSB0ZXN0IGltcG9ydCBtb2NrCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlwCisKK19URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGgu
am9pbigKKyAgICBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJywgJ2hhbmRs
ZXJzJykKKworX1RFU1RfSEFORExFUlNfU1VCX0RJUiA9IG9zLnBhdGguam9pbihfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInKQorCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkaXNwYXRjaCBtb2R1bGUuIiIiCisgICAgZGVm
IHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxh
Y2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxh
XFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFi
c3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5f
bm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQorCisgICAgZGVmIHRl
c3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRl
X3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAgICAgICAgIyBQeXRob24gYnVp
bHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCku
CisgICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNp
bmcgcmVhbHBhdGgoKSBhbmQgdXNlcworICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRy
aXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCisgICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRo
LnJlYWxwYXRoKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIo
b3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Mv
aCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQorCisg
ICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252
ZXJ0ZXIoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhL2IvaF93
c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3Rv
X3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1h
bGl6ZV9wYXRoKCcvYS9iLy4uL2IvaF93c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0g
ZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigKKyAgICAgICAgICAg
ICcvYS8uLi9hL2IvLi4vYi8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRp
c3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3No
LnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3Qg
KyByJ2EvYi9oX3dzaC5weScpKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmls
ZV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBsaXN0KAorICAgICAgICAgICAgZGlzcGF0
Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKKyAg
ICAgICAgcGF0aHMuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhz
KSkKKyAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwKKyAgICAgICAgICAg
IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSwKKyAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3No
LnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5w
eScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1Yics
ICdub25fY2FsbGFibGVfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
d3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICBdCisgICAgICAgIGZvciBleHBl
Y3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc291cmNl
X2hhbmRsZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9z
b3VyY2VfaGFuZGxlcl9maWxlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0
Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNo
Ll9zb3VyY2VfaGFuZGxlcl9maWxlLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKAorICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUoCisgICAgICAg
ICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KTpwYXNz
XG4nCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6cGFzc1xuJykpCisKKyAgICBkZWYgdGVzdF9zb3VyY2Vfd2FybmluZ3Moc2VsZik6CisgICAg
ICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKKyAgICAgICAgd2FybmluZ3MgPSBkaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCisg
ICAgICAgIHdhcm5pbmdzLnNvcnQoKQorICAgICAgICBleHBlY3RlZF93YXJuaW5ncyA9IFsKKyAg
ICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdibGFua193c2gucHknKSkKKyAgICAgICAgICAgICArICc6IHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgKG9zLnBhdGgucmVh
bHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwg
J3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpCisgICAgICAgICAgICAgKyAnOiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisgICAgICAgICAgICAo
b3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAgIChvcy5wYXRoLnJl
YWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2ln
X3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlz
IG5vdCBkZWZpbmVkLicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwg
bGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVj
dGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAg
ICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qu
d3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKKyAgICAgICAgZGlzcGF0Y2hlci5kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgorCisg
ICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNl
cHRpb24gd2l0aCA0MDMgc3RhdHVzJykKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDAzLCBlLnN0
YXR1cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5m
YWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0
X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5
X3VzZXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJh
X2hhbmRzaGFrZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJworICAgICAgICByZXF1
ZXN0LndzX3Byb3RvY29sID0gJ3AxJworICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInb3JpZ2lu
X2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAxJworICAgICAgICAg
ICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29u
bmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAz
XHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9
ICcvc3ViL3BsYWluPycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluPywgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAy
XHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluP3E9
dicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluP3E9diwg
Tm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxl
cihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gWworICAgICAgICAg
ICAgICAgICcvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLCAnL3N1Yi9ub193c2hfYXRfdGhl
X2VuZCcsCisgICAgICAgICAgICAgICAgJy9kb2VzL25vdC9leGlzdCcKKyAgICAgICAgXToKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJycpKQorICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0
Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyKGUp
LmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInJykpCisgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWls
KCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKAorICAgICAgICAgICAgICAgIHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0x
LAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkKKworICAg
IGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIg
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNl
ID0gJy9hYm9ydF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2Uu
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2Vs
Zik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5fY2hlY2snIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAg
ICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgorICAgICAg
ICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hB
TkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnL29yaWdpbl9jaGVj
aycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1Yi9wbGFpbicgaW4gZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9v
dChzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExF
UlNfU1VCX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFO
RExFUlNfU1VCX0RJUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcvb3JpZ2luX2NoZWNr
JyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9zdWIvcGxhaW4nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9leGNlcHRp
b25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBk
ZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6CisgICAgICAgIGRpc3BhdGNo
LkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCisgICAgICAgIGRpc3BhdGNoLkRpc3Bh
dGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhk
aXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guRGlzcGF0Y2hlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EvYi9jJywgJ2EvYicpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJj
ZV9wYXRoX2FsaWFzKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihf
VEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcv
b3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBk
aXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvc3ViL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25vdC1leGlzdCcpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQ1ZDI5YzY3ZGRmMDdiM2YxMjMyNDU5NzdmOTVjZmUwMTQ4YzgzYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpAQCAt
MCwwICsxLDYzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitp
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3RpbmcKKwor
IyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xv
c2luZyBoYW5kc2hha2UKK19HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKKworX1NFUlZFUl9X
QVJNVVBfSU5fU0VDID0gMC4yCisKKworIyBUZXN0IGJvZHkgZnVuY3Rpb25zCitkZWYgX2VjaG9f
Y2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xp
ZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0
JykKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKKyAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5l
Y3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5
KGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2Fn
ZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShiJ2Jp
bmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoYidceDAwXHg4MFx4
ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUo
YidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKworICAgIGNsaWVudC5z
ZW5kX2Nsb3NlKCkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2dvb2RieWUoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rl
c3QnKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZShfR09PREJZRV9NRVNTQUdFKQorICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZShfR09PREJZRV9NRVNTQUdFKQorCisgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfY29kZV9hbmRfcmVhc29uKGNsaWVudCwgY29kZSwgcmVhc29uKToKKyAgICBjbGllbnQu
Y29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9jbG9zZShjb2RlLCByZWFzb24pCisgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGNsaWVudC5hc3Nl
cnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJv
Y2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRf
bWVzc2FnZSgndGVzdCcsIG1hc2s9RmFsc2UpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IsICcnKQorCisgICAg
Y2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworY2xhc3MgRW5kVG9FbmRUZXN0
QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVu
ZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCisgICAgc2VydmVyIGFz
IGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90
ZXN0aW5nCisgICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJl
Y3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKKyAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVy
IGEgVENQIGNvbm5lY3Rpb24uCisgICAgIiIiCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKKyAgICAgICAgb3MucHV0
ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBhdGgpKQorICAgICAg
ICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdt
b2RfcHl3ZWJzb2NrZXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc3RhbmRhbG9uZS5weScpCisgICAgICAgIHNlbGYuZG9jdW1lbnRfcm9vdCA9IG9z
LnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFtcGxlJykKKyAgICAgICAgcyA9IHNvY2tldC5z
b2NrZXQoKQorICAgICAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgKF8sIHNl
bGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBzLmNsb3NlKCkKKworICAg
ICAgICBzZWxmLl9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQor
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKKyAgICAgICAg
c2VsZi5fb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKKyAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKKworICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9wb3J0ID0gc2VsZi50ZXN0X3BvcnQKKworICAgICMgVE9ETyh0eW9zaGlubyk6IFVzZSB0ZWFy
RG93biB0byBraWxsIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX3J1bl9weXRob25fY29tbWFuZChz
ZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKKworICAgIGRlZiBfcnVuX3NlcnZlcihzZWxmKToK
KyAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kLCAn
LUgnLCAnbG9jYWxob3N0JywgJy1WJywgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAnLXAnLAor
ICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1QJywKKyAgICAgICAgICAgIHN0cihz
ZWxmLnRlc3RfcG9ydCksICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdAorICAgICAgICBdCisKKyAg
ICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9nZ2VyIGJ5IHRlc3Qg
cnVubmVyLgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAg
ICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICBp
ZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1sb2ctbGV2ZWwnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2luZy5nZXRMZXZlbE5h
bWUobG9nX2xldmVsKS5sb3dlcigpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3RkZXJyPXNlbGYuc2VydmVyX3N0ZGVycikKKworICAgIGRlZiBfY2xv
c2Vfc2VydmVyKHNlbGYsIHNlcnZlcik6CisgICAgICAgICIiIgorCisgICAgICAgIFRoaXMgbWV0
aG9kIG1pbWljcyBQb3Blbi5fX2V4aXRfXyB0byBncmFjZWZ1bGx5IGtpbGwgdGhlIHNlcnZlciBw
cm9jZXNzLgorICAgICAgICBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIG1haW50YWluIGNvbXB0YWli
aWxpdHkgYmV0d2VlbiBweXRob24gMiBhbmQgMywKKyAgICAgICAgc2luY2UgUG9wZW4gaW4gcHl0
aG9uIDIgZG9lcyBub3QgaGF2ZSBfX2V4aXRfXyBhdHRyaWJ1dGUuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHNlcnZlci5raWxsKCkKKworICAgICAgICBpZiBzZXJ2ZXIuc3Rkb3V0OgorICAgICAg
ICAgICAgc2VydmVyLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZlci5zdGRlcnI6Cisg
ICAgICAgICAgICBzZXJ2ZXIuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VydmVyLnN0ZGlu
OgorICAgICAgICAgICAgc2VydmVyLnN0ZGluLmNsb3NlKCkKKworICAgICAgICBzZXJ2ZXIud2Fp
dCgpCisKKworY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKKwor
ICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1bmN0aW9u
LCBvcHRpb25zKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2ljIHRvIHBv
bGwgdGhlIHNlcnZlciB1bnRpbCBpdAorICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAg
Y2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKyAgICAg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQor
CisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgc2VsZi5f
cnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25z
KQorCisgICAgZGVmIF9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qoc2VsZiwgb2ZmZXIsIHJl
c3BvbnNlX2NoZWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zICs9IG9mZmVyCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZSA9IHJlc3BvbnNlX2NoZWNr
ZXIKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50
KHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjbGll
bnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0X2Z1bmN0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKworICAgICAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorICAgICAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKyAgICBk
ZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rp
b24sIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFzb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAg
ICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29w
dGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihj
bGllbnQsIGNvZGUsIHJlYXNvbikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190
ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNy
ZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0
Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCisgICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90
ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2Vw
dGlvbicpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jbG9z
ZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2Vy
dmVyKHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAgICAgIHNlbGYuX3J1
bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5
KHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0
aF9iaW5hcnkpCisKKyAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKKyAgICAg
ICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKKwor
ICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVz
dChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQorCisgICAgZGVmIHRlc3RfZWNob19w
ZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcK
KyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEp
CisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKwor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFtZXMoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9k
YXRhKGInXHhmMlx4NDhceGNkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4XHhjZFx4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVyLmdldF9wYXJh
bWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsn
cGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3Rf
ZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5z
ZW5kX2RhdGEoYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4
XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAg
ICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAg
IGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAg
ICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJh
bWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVy
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0
ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Cisg
ICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAg
Y2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDAwXHgxMVx4
MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmlu
YXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRf
cmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4
MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFy
YW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
KyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3ByZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGIn
XHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxs
bywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwgcmVzcG9uc2VfY2hlY2tlciwK
KyAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVj
LgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2Vk
X2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5h
cnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJz
djE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tl
cihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Wygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsKKyAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcKKyAgICAgICAgICAg
ICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICAgICAgXSwgcmVzcG9uc2VfY2hlY2tl
ciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRl
X3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNw
b25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNl
bGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKKyAgICAgICAgICAg
IHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Bl
cm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgor
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRl
JykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAg
ICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAw
J10sCisgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVy
KHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2Fn
ZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qo
WydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAg
ICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAgc2VsZi5fcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQorCisg
ICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6CisgICAgICAgIHNl
bGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJworICAgICAgICBzZWxmLl9ydW5fY2xvc2Vf
d2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKKyAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCisKKyAgICBkZWYgdGVzdF9jbG9z
ZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2Vy
dmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJvciBzdGF0dXMKKyAgICAg
ICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNvbWUgcHJvdG9jb2wgZXJy
b3IuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAg
ICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBm
cmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRhdGlvbgorICAgICAg
ICAgICAgIyBmcmFtZS4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFy
eV9ieXRlcyhiJ1x4ODBceDgwJywgJycpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQorCisg
ICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6CisgICAgICAgICIi
IlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0
ZWQgb3BlcmF0aW9uCisgICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBk
YXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCisgICAgICAgIG5vdCBzdXBwb3J0ZWQg
YnkgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICMgVGV4
dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Zy
YW1lX29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4OTFceDgwJywgJycpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0
aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRl
c3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlkX2ZyYW1lKHNlbGYp
OgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAorICAgICAgICBkYXRhIHN0YXR1cyBjb2RlIHdoZW4g
dGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFpbmluZworICAgICAg
ICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgorICAgICAgICAg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZShiJ1x4ODAnLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5h
bF9lbmRwb2ludF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVy
IHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRwb2ludAorICAgICAgICBlcnJv
ciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJhdGlvbi4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJy
b3InCisKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAg
ICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFsaWQgYWJzb2x1dGUg
dXJpIGhhbmRsaW5nIGxpa2UKKyAgICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBp
bnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBvcnQKKyAgICAjIG51bWJlciku
CisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGFi
c29sdXRlIHVyaSByZXF1ZXN0LiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25z
CisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBv
cHRpb25zLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29w
dGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQorCisgICAgZGVmIHRlc3Rfb3Jp
Z2luX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdp
biBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAg
ICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAgICAgIyBTZXJ2ZXIg
c2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxsYmFjay4gVGhpcyB3YXJuaW5n
CisgICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxvd2luZyBwaXBlIGRpc3Bvc2Vz
IHdhcm5pbmcgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IHN1YnByb2Nl
c3MuUElQRQorICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQw
MykKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6CisgICAgICAgICIiIlRlc3Rz
IGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9IDk5CisgICAgICAg
IHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAwKQorCisKK2NsYXNzIEVu
ZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgorICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQorCisgICAgZGVm
IF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBlY3RlZCwgc3Rkb3V0
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmRh
dGEpOgorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAg
ICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAgICAgaWYgc3RkZXJy
ZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3Rl
ZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKKworICAgIGRlZiB0ZXN0X2V4YW1wbGVf
ZWNob19jbGllbnQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50
LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgorCisgICAgICAgIHNlcnZl
ciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNs
ZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50X2NvbW1hbmQg
PSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZWNob19jbGllbnQucHknKQorCisgICAgICAgICAg
ICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMuCisgICAgICAgICAg
ICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQgY2xvc2VcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdSZWN2IGFja1xuJykKKworICAgICAgICAgICAgYXJncyA9IFtj
bGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpXQorICAg
ICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xp
ZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19j
bGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQorCisg
ICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5
bG9hZCBsZW5ndGggaXMgdXNlZC4KKyAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBh
eWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCisgICAgICAgICAgICAj
IGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkg
c2V0LgorICAgICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0CisgICAgICAgICAgICBh
cmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAnLAorICAgICAgICAg
ICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy1tJywgYmlnX21lc3NhZ2UK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29t
bWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgc3Rkb3V0ZGF0
YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleHBlY3Rl
ZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5SZWN2IGFja1xuJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19tZXNzYWdlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGV4cGVjdGVkLCBzdGRv
dXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkZXJyZGF0YSkKKworICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxh
dGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICBjbGll
bnRfY29tbWFuZCwgJy1wJywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCksICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGll
bnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4
dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWExMTE4ODhiZTkwMDViZDdiNjg0MzY2YWViZmQxZDkxNGY0YTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkK
QEAgLTAsMCArMSwxOTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6bGliCisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZXh0ZW5zaW9ucworCisKK2NsYXNzIEV4dGVuc2lv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBub24tY2xh
c3MgbWV0aG9kcyBpbiBleHRlbnNpb25zLnB5IiIiCisgICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93
X2JpdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVu
c2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnIDggJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzkuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
LTgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
MTYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMDAwMDAwJykK
KworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvclBhcnNpbmdUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcworICAgIGdpdmVuIGV4
dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRlZiB0ZXN0X3JlZ2lz
dHJ5KHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25f
cHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxm
KToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoemxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9y
ZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
cm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICBk
ZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKKyAgICAgICAgcGFyYW1l
dGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAg
ICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAn
MTAnKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVy
bWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQorCisg
ICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX21h
eF93aW5kb3dfYml0cycsICcwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6
CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAg
cGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRl
JykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgcmVzcG9uc2Ug
PSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRl
eHRfdGFrZW92ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92
ZXJfd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2JhcicpCisgICAgICAg
IHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25f
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignZm9vJywgJ2JhcicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKworY2xh
c3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGluZ1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCisgICAgYSByZXNwb25zZSBiYXNl
ZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCisgICAgIiIiCisgICAgZGVmIHRlc3Rf
cmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkK
KyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93
aW5kb3dfYml0cygxMCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZs
YXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVu
dF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4
X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2VsZik6CisgICAgICAgIHBy
b2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Io
CisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxh
dGUnKSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQor
CisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQor
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X3Jlc3Bv
bnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigK
KyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX2ZhbHNlX2Zv
cl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAgICAg
cHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihGYWxzZSkKKworICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygp
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQor
CisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9oYW5kc2hha2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwZTIyNzhkZmU2NTAxOWQ3NjU5NDg5YjUzOGZjYzg1YWQ1N2Q0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5z
aW9uUGFyYW1ldGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2Vf
ZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKKworCitjbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29s
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVf
c3VicHJvdG9jb2wgbWV0aG9kLiIiIgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29s
KHNlbGYpOgorICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgorICAgICAgICB2YWxpZGF0ZV9zdWJw
cm90b2NvbCgnc2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScp
CisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKQorCisg
ICAgICAgICMgU2hvdWxkIGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3RvY29sLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb24s
CisgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAgICAgICMgIkphcGFu
IiBpbiBKYXBhbmVzZQorICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQorCisKK19URVNUX1RP
S0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCisgICAg
KCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFy
PWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdmb287IGJhcj1iYXo7
IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6Jyld
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXInLCBbKCdjZHInLCBOb25l
KV0pXSksCisgICAgKCdhLCBiLCBjLCBkJywgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBb
XSksICgnZCcsIFtdKV0pLAorXQorCitfVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisg
ICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCisgICAgKCdmb287
IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAorICAgICgnZm9v
OyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKKyAgICAoJ2Zv
bzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSks
CisgICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicp
XSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAg
ICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAorICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2Zv
bycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBb
KCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygn
Zm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2Zvbycs
IFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCitdCisKK19URVNUX1JFRFVOREFOVF9R
VU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiIn
LCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCitdCisKKworY2xhc3MgRXh0ZW5zaW9u
c1BhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAgIiIiVmVy
aWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZl
IHRoZQorICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4
cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgorICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0
ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQorICAgICAgICBwYXJhbWV0
ZXIgZGljdGlvbmFyeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIGZvciBleHBlY3Rl
ZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAgICAgICAg
ICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYp
OgorICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tF
Tl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlz
dChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9x
dW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRp
b24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgorICAgICAgICBmb3IgKGZvcm1h
dHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5U
X1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIChmb3JtYXR0ZWRf
c3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9U
RURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xp
c3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2Vf
YmFkX2RhdGEoc2VsZik6CisgICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQSA9IFsKKyAg
ICAgICAgICAgICgnZm9vOyA7ICcpLAorICAgICAgICAgICAgKCdmb287IGEgYScpLAorICAgICAg
ICAgICAgKCdmb28gZm9vJyksCisgICAgICAgICAgICAoJywsLCcpLAorICAgICAgICAgICAgKCdm
b287IGJhcj0nKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwKKyAgICAgICAgICAg
ICgnZm9vOyBiYXI9ImFcciInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9IlxcXHhmZiInKSwK
KyAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCisgICAgICAgIF0KKworICAgICAgICBmb3Ig
Zm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRl
bnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX3N0cmluZykK
KworCitjbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRf
c3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVm
aW5pdGlvbnM6CisgICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlv
bgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lv
bnMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigp
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hh
bmRzaGFrZV9oeWJpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ODQxZjFmNzlmYTg5ZjAzZjBlMDIxOWUwNmIy
MTNjMzRmNWYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkucHkKQEAgLTAsMCArMSw0MjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4i
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0
dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Lmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKKworZnJvbSB0ZXN0IGltcG9ydCBtb2NrCisKKworY2xh
c3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBob2xkaW5n
IGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZvcgorICAg
IHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgorICAgICAgICBzZWxmLm1l
dGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLmhlYWRl
cnMgPSBoZWFkZXJzCisKKworZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgorICAgIHJl
dHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKKyAgICAgICAgJ0dFVCcsICcvZGVtbycsIHsKKyAgICAg
ICAgICAgICdIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnVXBncmFk
ZSc6ICd3ZWJzb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCisg
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09
JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAorICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIH0pCisKKworZGVmIF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oYicn
KQorICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmLnVyaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVmLmhlYWRlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3Jl
YXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6CisgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgIHJldHVybiBoYW5kc2hha2VyCisKKwor
Y2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRp
c3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnBy
b3RvY29sCisgICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBn
aXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKKyAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMg
bmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJvdG9jb2wuCisgICAg
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlPU5vbmUpOgor
ICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0g
ZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2Nv
bnRleHQpOgorICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6CisgICAgICAgICAgICBjb25uX2Nv
bnRleHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVkX3Byb3RvY29sc1sK
KyAgICAgICAgICAgICAgICBzZWxmLmluZGV4XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y29ubl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVlCisKKyAgICBkZWYg
dHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworY2xh
c3MgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitj
bGFzcyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRpc3BhdGNoZXIgZm9y
IHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9uIGluCisgICAgZG9f
ZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBkZWYg
ZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVl
c3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAg
ICAgcGFzcworCisKK2NsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6CisgICAg
IiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCisg
ICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0
IHRoZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwg
Y29ubl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4g
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShz
ZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworX0VYUEVDVEVEX1JFU1BPTlNF
ID0gKAorICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIGIn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwor
ICAgIGInU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1c
clxuXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2Nv
bC0wNiBhbmQgbGF0ZXIKKyAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgorICAgICIiIgorICAgIGRl
ZiB0ZXN0X2RvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSkKKyAgICAgICAgZGlzcGF0Y2hlciA9IG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKQorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxl
ZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
ZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCisKKyAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgICMgQWRkIGhl
YWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScKKyAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCisKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVf
aGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9j
YXBpdGFsaXplZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWyd1cGdyYWRlJ10g
PSAnV0VCU09DS0VUJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VQR1JBREUnCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BP
TlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAn
CisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVE
X1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0
J3Mgbm90IGNhdWdodCBieQorICAgICAgICAjIGRvX2hhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbChzZWxmKToK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hhdCwg
c3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIFN1YnByb3RvY29s
Q2hvb3NpbmdEaXNwYXRjaGVyKDApKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgp
CisKKyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAgICBiJ0hUVFAvMS4x
IDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGInVXBncmFkZTogd2Vi
c29ja2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAg
ICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5c
clxuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm90
b2NvbENob29zaW5nRGlzcGF0Y2hlcigtMSwgJ2Zvb2JhcicpKQorICAgICAgICAjIE5vIHJlcXVl
c3QgaGFzIGJlZW4gbWFkZSBidXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5kc2hha2VFeGNlcHRp
b24KKyAgICAgICAgIyBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3NlbGVjdGlvbihzZWxm
KToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hh
dCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgIyB3c19wcm90b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24gbXVz
dCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXInKQorCisgICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0g
KAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisg
ICAgICAgICAgICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgICAgICAgICBiJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJworICAgICAgICAgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9uczogJworICAgICAgICAgICAgYidwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKKyAgICAgICAgICAgIGInXHJcbicpCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9O
U0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAgICAgICAgZXh0ZW5zaW9u
ID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sIGV4dGVuc2lvbi5uYW1lKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBleHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLCByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZSwg
LCAnCisgICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAg
IFxcXHJmICAiOyBwdj1ucnQnKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKKyAgICAg
ICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQorICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9uc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtub3duJywg
c2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydlJywg
J21hJywgJ3B2J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kX2V4dGVuc2lvbi5n
ZXRfcGFyYW1ldGVyX25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBz
ZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J21hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24u
Z2V0X3BhcmFtZXRlcl92YWx1ZSgncHYnKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlW
YWx1ZSddID0gJycKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1
ZScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAg
ICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCisgICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVl
JywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQorCisgICAgZGVmIHRlc3RfYWJv
cnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbi4g
Q2hlY2sgdGhhdCBpdCdzCisgICAgICAgICMgbm90IGNhdWdodCBieSBkb19oYW5kc2hha2UuCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNlbGYpOgorICAg
ICAgICBiYWRfY2FzZXMgPSBbCisgICAgICAgICAgICAoJ0hUVFAgcmVxdWVzdCcsCisgICAgICAg
ICAgICAgUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgICdHRVQnLCAnL2RlbW8n
LCB7CisgICAgICAgICAgICAgICAgICAgICAnSG9zdCc6CisgICAgICAgICAgICAgICAgICAgICAn
d3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgorICAg
ICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBP
UyBYIDEwLjU7JworICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vj
a28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKKyAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBH
VEJBJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOgorICAgICAgICAgICAgICAgICAg
ICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45
LCcKKyAgICAgICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAorICAgICAgICAgICAgICAgICAg
ICAgJ0FjY2VwdC1MYW5ndWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAnZW4tdXMsZW47cT0w
LjUnLAorICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6CisgICAgICAgICAg
ICAgICAgICAgICAnZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQt
Q2hhcnNldCc6CisgICAgICAgICAgICAgICAgICAgICAnSVNPLTg4NTktMSx1dGYtODtxPTAuNywq
O3E9MC43JywKKyAgICAgICAgICAgICAgICAgICAgICdLZWVwLUFsaXZlJzoKKyAgICAgICAgICAg
ICAgICAgICAgICczMDAnLAorICAgICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOgorICAg
ICAgICAgICAgICAgICAgICAgJ2tlZXAtYWxpdmUnCisgICAgICAgICAgICAgICAgIH0pLCBOb25l
LCBUcnVlKQorICAgICAgICBdCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9TVCcKKyAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KKyAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKwor
ICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAg
IGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KKyAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCisgICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQorICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRy
dWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rvd25ncmFkZScK
KyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCByZXF1ZXN0X2Rl
ZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tl
dC1LZXknXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0
LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1
alpRPT1nYXJiYWdlJykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScKKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkg
KGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciByaWdodCBiZWZv
cmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KKyAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0n
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5IChwYWRkaW5nIGJpdHMgYXJlIG5vdCB6ZXJvKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LUtleSddID0gKAorICAgICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PSxkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT0nKQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3Jvbmcg
U2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFk
ZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAor
ICAgICAgICAgICAgKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVy
c2lvbiddID0gJzMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBGYWxzZSkpCisK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICcxMywgMTMn
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24g
KG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2Rl
ZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICdpbGxlZ2FsXHgwOXByb3RvY29sJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAorICAgICAgICAgICAgKCdJbGxlZ2FsIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0
X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnXSA9ICcnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkK
KworICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywK
KyAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgor
ICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3du
IGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCisgICAgICAgICAgICBleGNlcHQgSGFuZHNo
YWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVj
dF9oYW5kc2hha2VfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RfaGFu
ZHNoYWtlX2V4Y2VwdGlvbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMDFlZjI4Mzkx
M2UzZmM4Nzc1YjNiMjczMTFmNjE5NWM1N2JlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0wLDAgKzEsOTMgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3Ig
aHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworCitjbGFzcyBVbml0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgaHR0cF9oZWFkZXJfdXRpbCBt
b2R1bGUuIiIiCisgICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNlbGYpOgorICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCcvd3Mv
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1dGVfdXJpKHNlbGYp
OgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAorICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwMDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3MvdGVzdCcs
IHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbS93cy90ZXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzczovL2V4YW1wbGUuY29tLycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0NDMsIHBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKKwor
ICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJp
KAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4
MDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCisKKyAg
ICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKKyAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCBy
ZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8v
bG9jYWxob3N0OklOVkFMSURfUE9SVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
cmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDotMS93cycpCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCByZXNvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgw
LCBwb3J0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzJywgcmVzb3VyY2UpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyODhjNTEwYjg5YmIyODkzMWRmZjlhNzc5MTgzYTQ5OTE3
NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIi
CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRl
c3QKK2ltcG9ydCBzaXgKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGgg
dG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCisg
ICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xp
c3QpOgorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKKyAgICAgICAgICAg
IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3Jp
emluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVj
dGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiBjaGVja193
aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3Qp
OgorICAgICAgICByZWFkX2xpc3QgPSBbXQorICAgICAgICByZWFkX2xpbmUgPSAnJworICAgICAg
ICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGlu
ZShyZWFkX3NpemUpCisgICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKKyAgICAgICAg
ICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6CisgICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9
ICcnOgorICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKKyAgICAg
ICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgorICAgICAgICAgICAgICAg
IHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9
ICcnCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRf
bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVu
KGFjdHVhbF9saXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlz
dCksIGxlbihyZWFkX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBp
biB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgcmVhZCkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Cisg
ICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAor
ICAgICAgICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKKyAgICAg
ICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJywg
J1dlbGNvbWUnXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGltaXRfbWVt
b3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5n
ZmlsZS5NZW1vcml6aW5nRmlsZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldv
cmxkXG5XZWxjb21lJyksIDIpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAz
LCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9s
aW5lc19lbXB0eV9maWxlKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShzaXguU3RyaW5nSU8oJycpKQorICAgICAgICBzZWxmLmNo
ZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXpl
ZF9saW5lc193aXRoX3NpemUoc2VsZik6CisgICAgICAgIGZvciBzaXplIGluIHJhbmdlKDEsIDEw
KToKKyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXpp
bmdGaWxlKAorICAgICAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldvcmxkXG5XZWxj
b21lJykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1vcml6aW5nX2ZpbGUs
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hlbGxvXG4nLCAnV29y
bGRcbicsICdXZWxjb21lJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3Mzg3M2RkZTk3ZGYwM2YyMGRmNWFjOTcyMmY2YWQ2NWRk
MDJlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9j
ay5weQpAQCAtMCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0
ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0
IGltcG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKGInQUJDXHJcbkRFRkdc
clxuXHJcbkhJSksnKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKwor
ICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNc
clxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VG
R1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YicnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorCisgICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxp
bmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuRCcsIHNlbGYuX2Nv
bm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuSElKSycsIHNl
bGYuX2Nvbm4ucmVhZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nv
bm4ucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9jb25uLndyaXRlKGInSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29ubi53cml0ZShiJ1dv
cmxkXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidIZWxsb1xyXG5Xb3JsZFxyXG4n
LCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQorCisKK2NsYXNzIE1vY2tCbG9ja2luZ0Nvbm5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQmxvY2tp
bmdDb25uIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgICIiIlRl
c3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRfYnl0ZXMgbWV0aG9k
IGNhbiBiZQorICAgICAgICByZWFkIGZyb20gaXQuCisgICAgICAgICIiIgorICAgICAgICBjbGFz
cyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAgIiIiQSB0ZXN0IGNs
YXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQorICAgICAg
ICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRv
IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHF1ZXVlLgorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgorICAgICAgICAgICAgICAg
IHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWV1ZSA9IHF1ZXVlCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNvbm4KKyAgICAgICAg
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnQo
KQorCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEpCisKKyAgICAgICAgY29ubiA9
IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCisgICAgICAgIHF1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVl
LlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHF1ZXVlLmVtcHR5KCkpCisgICAgICAgIGNvbm4ucHV0X2J5dGVz
KGInRm9vIGJhclxyXG4nKQorICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ0ZvbyBiYXJcclxuJywgcmVhZCkKKworCitjbGFzcyBNb2NrVGFibGVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrVGFibGUg
Y2xhc3MuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21f
bGlzdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdLZXknLCAnVmFs
dWUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2Nr
Lk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwgKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgor
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUn
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tleScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZVsnS0VZJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9tc2d1dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2YyMWI4ZDI5NzY2ODc3MGNiOTFjNTAx
YzJiMmZjODI1OGI5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDkxNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KK2lt
cG9ydCBhcnJheQoraW1wb3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0
IHN0cnVjdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitpbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
KworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSB0
ZXN0IGltcG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNpeC5tb3Zl
cyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKKworIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCitfTUFTS0lOR19OT05DRSA9IGInQUJDRCcKKworCitkZWYgX21hc2tfaHliaShm
cmFtZSk6CisgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAg
IEV4Y2VwdGlvbignbWFza2luZyBkb2VzIG5vdCBhY2NlcHQgVGV4dHMnKQorCisgICAgZnJhbWVf
a2V5ID0gbGlzdChpdGVyYnl0ZXMoX01BU0tJTkdfTk9OQ0UpKQorICAgIGZyYW1lX2tleV9sZW4g
PSBsZW4oZnJhbWVfa2V5KQorICAgIHJlc3VsdCA9IGJ5dGVhcnJheShmcmFtZSkKKyAgICBjb3Vu
dCA9IDAKKworICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXN1bHQpKToKKyAgICAgICAgcmVzdWx0
W2ldIF49IGZyYW1lX2tleVtjb3VudF0KKyAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZy
YW1lX2tleV9sZW4KKworICAgIHJldHVybiBfTUFTS0lOR19OT05DRSArIGJ5dGVzKHJlc3VsdCkK
KworCitkZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVlc3Qs
IHN0cmVhbV9vcHRpb25zKToKKyAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKKyAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisKKworZGVmIF9jcmVh
dGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1Ob25lKToKKyAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5N
b2NrQ29ubihyZWFkX2RhdGEpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05f
SFlCSV9MQVRFU1QKKyAgICByZXEud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQorCisgICAg
cHJvY2Vzc29yID0gTm9uZQorICAgIGlmIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0IGlzIG5v
dCBOb25lOgorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQorCisgICAg
c3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICBpZiBwcm9jZXNzb3IgaXMgbm90
IE5vbmU6CisgICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCBy
ZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJl
YW1fb3B0aW9ucykKKworICAgIHJldHVybiByZXEKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0KCpm
cmFtZXMpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBm
cmFtZXMuCisKKyAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3Qu
Y29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAorICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICAgIiIiCisKKyAgICByZWFkX2RhdGEgPSBbXQorICAg
IGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6CisgICAgICAgIHJlYWRfZGF0YS5hcHBlbmQo
aGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKKworICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKGInJy5qb2luKHJlYWRfZGF0YSkpCisKKworZGVmIF9jcmVhdGVfYmxvY2tp
bmdfcmVxdWVzdCgpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QuCisKKyAgICBEYXRhIHdy
aXR0ZW4gdG8gYSBNb2NrUmVxdWVzdCBjYW4gYmUgcmVhZCBvdXQgYnkgY2FsbGluZworICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKS4KKyAgICAiIiIKKworICAgIHJlcSA9IG1v
Y2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKKyAgICBy
ZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisgICAgc3RyZWFtX29w
dGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtKHJlcSwg
c3RyZWFtX29wdGlvbnMpCisgICAgcmV0dXJuIHJlcQorCisKK2NsYXNzIEJhc2ljTWVzc2FnZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0uIiIi
CisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hl
bGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEy
NQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4ODFceDdkJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0
X3NlbmRfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjYK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAg
ICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXls
b2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2VceGZmXHhmZicgKyBwYXls
b2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2xhcmdlX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBi
J1x4ODFceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsKKyAgICAgICAgICAg
IHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsIHUnXHU2NWU1JykKKyAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5
NyxhNSBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDNceGU2XHg5
N1x4YTUnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICchJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDA1
SGVsbG9ceDAwXHgwMSBceDAwXHgwNVdvcmxkXHg4MFx4MDEhJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVz
dF9zZW5kX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJtaW5hdGlvbihzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdIZWxsbyBXb3JsZCEnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4
MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIn
XHg4MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4ODFceGZkJywgcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lZGl1bV9tZXNz
YWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHgwMFx4N2UnLCBwYXlsb2FkKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9IGInYScgKiAo
MSA8PCAxNikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAg
IChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5nX21pbmltYWxfbnVt
YmVyX29mX2J5dGVzKHNlbGYpOgorICAgICAgICAjIExvZyB3YXJuaW5nIG9uIHJlY2VpdmluZyBi
YWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQorICAgICAgICAjIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgorCisgICAgICAgIHBh
eWxvYWQgPSBiJ2EnCisgICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0
IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNv
ZGUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ODMn
LCBiJ1x4ZTZceDljXHhhYycpKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDlj
LGFjIGluIFVURi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBp
bnZhbGlkIGFzIFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4
ODFceDgyJywgYidceDgwXHg4MScpKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91
bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFVURjhFeGNlcHRpb24sIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVu
dHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODUn
LCBiJ0hlbGxvJyksIChiJ1x4MDBceDgxJywgYicgJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGInXHgwMFx4ODUnLCBiJ1dvcmxkJyksIChiJ1x4ODBceDgxJywgYichJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfdW5p
Y29kZShzZWxmKToKKyAgICAgICAgIyBVVEYtOCBlbmNvZGVzIFUrNmYyMiBpbnRvIGU2YmNhMiBh
bmQgVSs1YjU3IGludG8gZTVhZDk3LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4MDFceDgyJywgYidceGU2XHhiYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiJ1x4MDBceDgyJywgYidceGEyXHhlNScpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiJ1x4ODBceDgyJywgYidceGFkXHg5NycpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHUnXHU2ZjIyXHU1YjU3JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJt
aW5hdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAx
XHg4YycsIGInSGVsbG8gV29ybGQhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGInXHg4MFx4ODAnLCBiJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYidceDAxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3RhcnRl
ZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAwXHg4NScs
IGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJh
bWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfZW5kX2J1
dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDgwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNz
YWdlX2Rpc2NhcmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisg
ICAgICAgICAgICAoYidceDhmXHg4NicsIGInSUdOT1JFJyksIChiJ1x4ODFceDg1JywgYidIZWxs
bycpLAorICAgICAgICAgICAgKGInXHg4Zlx4ODknLCBiJ0RJU1JFR0FSRCcpLCAoYidceDgxXHg4
NicsIGInV29ybGQhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBw
b3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceDhhJywgc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZWFzb24gPSAnYScgKiAxMjMKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceGZk
Jywgc3RydWN0LnBhY2soJyFIJywgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSkgKworICAg
ICAgICAgICAgIHJlYXNvbi5lbmNvZGUoJ1VURi04JykpKQorICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX3Jl
YXNvbiwgcmVhc29uKQorCisgICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV90b29fbG9uZyhzZWxmKToK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwgcmVxdWVzdC53c19zdHJlYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICdhJyAq
IDEyNCkKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfaW5jb25zaXN0ZW50X2NvZGVfYW5kX3Jl
YXNvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
ICMgcmVhc29uIHBhcmFtZXRlciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb2RlIGlzIE5v
bmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwg
cmVxdWVzdC53c19zdHJlYW0sIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhJykK
KworICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbyBX
b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MGNIZWxsbyBXb3JsZCEn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ2EnICogMTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4N2QnICsg
YidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfdG9vX2xvbmcoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwgbXNndXRpbC5zZW5kX3Bpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsICdhJyAqIDEyNikKKworICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfcGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEg
cGluZyBjb250cm9sIGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNz
YWdlKToKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgICMgU3Ry
ZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3aXRob3V0IGFueSBh
Y3Rpb24KKyAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDA1SGVsbG8nLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hh
bmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1
ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZkJywgYidhJyAqIDEy
NSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dv
cmxkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDhhXHg3ZCcg
KyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDBc
eDdlJywgYidhJyAqIDEyNikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxm
KToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgor
ICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAgICAgICAgIHJlcXVl
c3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGIn
XHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25fcG9uZ19oYW5kbGVy
ID0gaGFuZGxlcgorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8nKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBi
dXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAg
ICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29saWNpdGVkX3Bvbmco
c2VsZik6CisgICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2VkIGZyb20gSHlCaSAw
Ny4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVs
bG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGIn
V29ybGQnKSkKKyAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKworICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcp
KQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSnVtYm8nKQorICAgICAgICAj
IEJvZHkgbWlzbWF0Y2guCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX2Nhbm5vdF9iZV9mcmFnbWVudGVkKHNlbGYpOgorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDlceDg1JywgYidIZWxsbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDFceDAwJywgYidhJyAq
IDI1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwgcmVxdWVzdCkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIi
IgorICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVS
TUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29y
ID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQorICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25l
LCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
cicpKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAg
ZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQor
ICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
KDgpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1
ZSkKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnOCcsIHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2NsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBy
ZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcicp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4YzElYycgJSBs
ZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxs
bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X21lc3NhZ2Uoc2VsZik6
CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNvbXByZXNzZWQgY29y
cmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAg
ICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKworICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICAjIFBheWxvYWQgaW4g
YmluYXJ5OiAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAgICAgICMgLSAxIGJp
dCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNz
aW9uKQorICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChiJ1x4YzFceDAxXHgwMCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV93aXRoX251bGxfY2hhcmFjdGVyKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0IHRoYXQgYSBzaW1wbGUgcGF5bG9hZCAob25lIG51bGwpIGlzIGZyYW1l
ZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
KQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAg
ICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorCisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKKworICAgICAgICAjIFBh
eWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAwMAorICAgICAg
ICAjIEZyb20gTFNCLAorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAj
IC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCisgICAgICAg
ICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMgdGhlIGNvZGUg
Zm9yIHRoZSBsaXRlcmFsCisgICAgICAgICMgICBhbHBoYWJldCAweDAwKQorICAgICAgICAjIC0g
NyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0
aGUKKyAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5B
TCAoMCkKKyAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCisgICAg
ICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhj
MVx4MDNceDYyXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdHdvX21lc3NhZ2Vz
KHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGV4
cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisKKyAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGInV29ybGQnKQorICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCisgICAgICAg
IGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4
dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywg
ZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5
ZScsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dv
cmxkJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4
NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgPSBjb21wcmVzcy5jb21wcmVz
cyhiJ0dvb2RieWUnKQorICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkICs9IGInXHgwMCVjJyAlIGxl
bihjb21wcmVzc2VkX2dvb2RieWUpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZ29v
ZGJ5ZQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoYidXb3Js
ZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzot
NF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQp
CisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2Vs
Zik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAg
ICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4
cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVj
dGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXBy
ZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0g
Y29tcHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxl
bihjb21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5
CisgICAgICAgIHByaW50KCclcicgJSBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKKyAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICcnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBl
Y3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
cy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
c2VkX2VtcHR5WzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXBy
ZXNzZWRfZW1wdHkpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhz
ZWxmKToKKyAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon
CisgICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21t
b25fcGFydAorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
CisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcp
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAg
ICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKKworICAgICAgICBl
eHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCisgICAgICAgIGV4cGVjdGVkX3dlYnNv
Y2tldF9wYXlsb2FkX3NpemUgPSA5MQorCisgICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplICsgZXhwZWN0ZWRfd2Vic29j
a2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIGxlbihhY3R1YWxfZnJhbWUpKQorICAgICAg
ICBhY3R1YWxfaGVhZGVyID0gYWN0dWFsX2ZyYW1lWzA6ZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRl
cl9zaXplXQorICAgICAgICBhY3R1YWxfcGF5bG9hZCA9IGFjdHVhbF9mcmFtZVtleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemU6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGMx
JWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3R1YWxfaGVhZGVyKQorICAgICAgICBkZWNvbXByZXNzID0gemxpYi5kZWNvbXBy
ZXNzb2JqKC04KQorICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSA9IGRlY29tcHJlc3MuZGVj
b21wcmVzcyhhY3R1YWxfcGF5bG9hZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIGRlY29t
cHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3NhZ2UuZGVjb2RlKCdVVEYtOCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNzLnVudXNlZF9kYXRh
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVzcy51bmNvbnN1bWVk
X3RhaWwpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRleHRfdGFrZW92ZXJf
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
CisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPVRydWUpCisKKyAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFY
X1dCSVRTKQorCisgICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxs
bycpCisgICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihmaXJzdF9oZWxsbykKKyAg
ICAgICAgZXhwZWN0ZWQgKz0gZmlyc3RfaGVsbG8KKyAgICAgICAgc2Vjb25kX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25k
X2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKHNlY29uZF9o
ZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgorICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVf
cmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQorICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLnNldF9iZmluYWwoVHJ1ZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBlbmQ9VHJ1ZSkKKworICAgICAgICBleHBlY3RlZCA9
IGInJworCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzc2VkX2hlbGxvICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAgICAgZXhwZWN0ZWQg
Kz0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIHN0cnVjdC5wYWNrKCchQicsIDApCisgICAg
ICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykK
KworICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycp
CisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
KyAgICAgICAgZGF0YSA9IGInXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgw
KQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKKworICAgICAg
ICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRo
YXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlz
CisgICAgICAgIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFu
ZG9tLnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisgICAgICAgICAgICBb
c3RydWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4gcmFuZ2Uo
MTAwMCldKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3MuY29tcHJlc3MocGF5bG9hZCkKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2Vk
X3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorCisgICAgICAgICMgRnJhZ21lbnQg
dGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgorICAgICAgICBieXRl
c19jaHVua2VkID0gMAorICAgICAgICBkYXRhID0gYicnCisgICAgICAgIGZyYW1lX2NvdW50ID0g
MAorCisgICAgICAgIGNodW5rX3NpemVzID0gW10KKworICAgICAgICB3aGlsZSBieXRlc19jaHVu
a2VkIDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0
aGF0CisgICAgICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxl
c3MgdGhhbiAxMjUgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBs
ZW5ndGggaGVhZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KKyAgICAgICAgICAgICMgLSBhdCBs
ZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICBjaHVua19zaXplID0gcmFu
ZG9tLnJhbmRpbnQoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICBtaW4oMTI1
LAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSAvLyAxMCwKKyAg
ICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXplKQorICAgICAgICAg
ICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2Vk
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemVdCisg
ICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAgICAgICAgICAgZmly
c3Rfb2N0ZXQgPSAweDAwCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0MgorICAgICAgICAgICAgaWYg
Ynl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToKKyAgICAgICAgICAgICAg
ICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAorCisgICAgICAgICAgICBkYXRhICs9
IGInJWMlYycgJSAoZmlyc3Rfb2N0ZXQsIGNodW5rX3NpemUgfCAweDgwKQorICAgICAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNodW5rKQorCisgICAgICAgICAgICBmcmFtZV9jb3VudCArPSAx
CisKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKworICAgICAgICAjIENs
b3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2
ZV90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAgICBkYXRh
ID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGIn
SGVsbG9XZWJTb2NrZXQnKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCisgICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRf
aGVsbG8pIC8vIDIKKyAgICAgICAgZGF0YSArPSBiJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24g
fCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3Bs
aXRfcG9zaXRpb25dKQorCisgICAgICAgIGRhdGEgKz0gYidceDgwJWMnICUgKChsZW4oY29tcHJl
c3NlZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQorICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQorCisgICAgICAgIGNv
bXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1B
WF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3Mo
YidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dv
cmxkWzotNF0KKyAgICAgICAgZGF0YSArPSBiJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29y
bGQpIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQp
CisKKyAgICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsg
X21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdl
X2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlw
ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5n
IGxvdHMgb2YgREVGTEFURSBibG9ja3Mgd2l0aAorICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUg
aXMgY29ycmVjdGx5IHJlY2VpdmVkLgorICAgICAgICAiIiIKKworICAgICAgICByYW5kb20uc2Vl
ZChhPTApCisgICAgICAgIHBheWxvYWQgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtzdHJ1Y3Qu
cGFjaygnIUInLCByYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAwKV0p
CisKKyAgICAgICAgY29tcHJlc3MgPSBOb25lCisKKyAgICAgICAgIyBGcmFnbWVudCB0aGUgY29t
cHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCisgICAgICAgIGJ5dGVzX2NodW5r
ZWQgPSAwCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGInJworCisgICAgICAgIGNodW5r
X3NpemVzID0gW10KKyAgICAgICAgbWV0aG9kcyA9IFtdCisgICAgICAgIHN5bmNfdXNlZCA9IEZh
bHNlCisgICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKKworICAgICAgICB3aGlsZSBieXRlc19j
aHVua2VkIDwgbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYXQgbGVhc3Qg
MTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5y
YW5kaW50KDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKDEw
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHBheWxv
YWQpIC0gYnl0ZXNfY2h1bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1
bmtfc2l6ZSkKKyAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5dGVz
X2NodW5rZWQgKyBjaHVua19zaXplXQorCisgICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNo
dW5rX3NpemUKKworICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVG
TEFURUQsIC16bGliLk1BWF9XQklUUykKKworICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9
PSBsZW4ocGF5bG9hZCk6CisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5kb20ucmFuZGludCgwLCAxKQorICAg
ICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBt
ZXRob2QgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgICAgICAg
ICAgICAgIHN5bmNfdXNlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmsp
CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfRklOSVNIKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyA9IE5vbmUKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVlCisKKyAgICAgICAgcHJpbnQoIkNo
dW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxl
bihjaHVua19zaXplcykgPiAxMCkKKyAgICAgICAgcHJpbnQoIk1ldGhvZHM6ICVyIiAlIG1ldGhv
ZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeW5jX3VzZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmaW5pc2hfdXNlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoMTI1IDwgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY29tcHJl
c3NlZF9wYXlsb2FkKSA8IDY1NTM2KQorICAgICAgICBkYXRhID0gYidceGMyXHhmZScgKyBzdHJ1
Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAgICAgZGF0YSArPSBf
bWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKKworICAgICAgICAjIENsb3NlIGZyYW1lCisg
ICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
KyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVz
c2FnZVJlY2VpdmVyLiIiIgorICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVjZWl2ZXIgPSBtc2d1
dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKKworICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsgX21hc2tfaHliaShiJ0hlbGxvIScpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCisKKyAg
ICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IHNp
eC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1l
c3NhZ2UpOgorICAgICAgICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQorCisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICByZWNlaXZl
ciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQor
CisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgxXHg4NicgKyBfbWFz
a19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9u
bWVzc2FnZV9xdWV1ZS5nZXQoKSkKKworCitjbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdl
U2VuZGVyLiIiIgorICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3Nh
Z2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5kZXIuc2VuZCgnV29ybGQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgorICAgICAg
ICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5k
ZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBi
ZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNl
cGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1
ZSgpCisKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAgIHNlbmRfcXVldWUu
cHV0KGJ5dGVzKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3Qo
KQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQorCisgICAgICAgIHNl
bmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbmRlci5z
ZW5kX25vd2FpdCgnSGVsbG8nKQorICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCBzZW5kX3F1ZXVlLmdl
dCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHNlbmRfcXVl
dWUuZ2V0KCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVh
bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTM4OTlkMjA1MzNlYjRjZjBhOTgxNmM4YjNiMmJjOGM1MDU0OGJm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVhbS5w
eQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNf
cGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUu
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KKworCitjbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0
X2NyZWF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgICMgbW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFy
ZSBhbGwgdHJ1ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24u
T1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidceGYxXHg4MScsIGhlYWRlcikKKworICAgICAgICAjIE1heGltdW0gcGF5bG9hZCBzaXplCisg
ICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwg
KDEgPDwgNjMpIC0gMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDdmXHg3Zlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCisKKyAgICAgICAgIyBJbnZhbGlkIG9w
Y29kZSAweDEwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5j
cmVhdGVfaGVhZGVyLCAweDEwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwKQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFy
YW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVh
dGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDB4ZiwgMCwgMCwgMCwgMCkKKworICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3Ro
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVhdGVfaGVh
ZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwg
NjMsIDAsIDAsIDAsIDAsIDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQ3OTQxMDUxNDU1ZWJlZTU4ODIzYjRiMGJlOTM3NjI5
MTJiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRp
bC5weQpAQCAtMCwwICsxLDE5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0CitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBp
bXBvcnQgUFkzCitmcm9tIHNpeCBpbXBvcnQgaW50MmJ5dGUKKworX1RFU1RfREFUQV9ESVIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScpCisKKwor
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IHV0aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3ByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oc2VsZik6CisgICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29ybGQnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQorICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2dldF9zY3JpcHRfaW50
ZXJwKHNlbGYpOgorICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxcY3lnd2luXFxiaW4nCisgICAg
ICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCAncGVybCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRUFETUUnKSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgdXRpbC5nZXRf
c2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy91c3IvYmluL3BlcmwgLXdUJywKKyAgICAg
ICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElS
LCAnaGVsbG8ucGwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
eWd3aW5fcGVybCArICcgLXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAo
b3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorCisgICAgZGVmIHRlc3RfaGV4aWZ5
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAw
OSAwZCAwYSAwMCBmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoYidh
ekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkKKworCitjbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFz
a2VyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X21hc2soc2VsZik6CisgICAgICAgICMgU2FtcGxl
IGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYtOAorICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKGInXHhmZlx4ZmZceGZmXHhmZicpCisgICAgICAgIHJlc3VsdCA9
IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4MTlceDY4XHg1YScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVk
WG9yTWFza2VyKGInXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ZTZceDk3
XHhhNScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2Vy
KGInXHhlNlx4OTdceGE1XHgyMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHhl
Nlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBceDAwXHgwMCcsIHJl
c3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6CisgICAgICAgIG1hc2tlciA9
IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHg3Zlx4ZmZceDIwJykKKyAgICAgICAgIyBt
YXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2VkLgorICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQorICAgICAgICAjIG1hc2tbMl0sIG1h
c2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCisgICAgICAgIHJlc3Vs
dCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCByZXN1bHQpCisKKyAgICBkZWYgdGVz
dF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6CisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRY
b3JNYXNrZXIoYidtQVNrJykKKyAgICAgICAgb3JpZ2luYWwgPSBiJycuam9pbihbdXRpbC5wYWNr
X2J5dGUoaSAlIDI1NikgZm9yIGkgaW4gcmFuZ2UoMTAwMCldKQorICAgICAgICByZXN1bHQgPSBt
YXNrZXIubWFzayhvcmlnaW5hbCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycuam9pbihbCisgICAg
ICAgICAgICB1dGlsLnBhY2tfYnl0ZSgoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kgJSA0XSkpIGZv
ciBpIGluIHJhbmdlKDEwMDApCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFz
a2VyKGInTWFTaycpCisgICAgICAgIGZpcnN0X3BhcnQgPSBiJ1RoZSBXZWJTb2NrZXQgUHJvdG9j
b2wgZW5hYmxlcyB0d28td2F5IGNvbW11bmljYXRpb24uJworICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhmaXJzdF9wYXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgYidceDE5XHQ2S1x4MWFceDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJceDE1PFx4MDgiXHJz
XHgwZSMnCisgICAgICAgICAgICBiJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgwZX5ceDFjLFx4MThz
XHgwOCJceDBjPlx4MWUjXHgwODBcbjknCisgICAgICAgICAgICBiJ1x4MDg8XHgwNWMnLCByZXN1
bHQpCisgICAgICAgIHNlY29uZF9wYXJ0ID0gYidJdCBoYXMgdHdvIHBhcnRzOiBhIGhhbmRzaGFr
ZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJworICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhz
ZWNvbmRfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGIiKCdL
JVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlceDEyO1xuJlx4MDRzXG4jIgor
ICAgICAgICAgICAgYiJceDA1c1x4MWYlXHgwNHNceDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZc
eDE5YyIsIHJlc3VsdCkKKworCitkZWYgZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgbWluX251
bV9jaHVua3MpOgorICAgIGNodW5rcyA9IFtdCisgICAgYnl0ZXNfY2h1bmtlZCA9IDAKKworICAg
IHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291cmNlKToKKyAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgMSwgbWluKGxlbihzb3VyY2UpIC8gbWluX251
bV9jaHVua3MsCisgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgY2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsg
Y2h1bmtfc2l6ZV0KKyAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKKyAgICAgICAgYnl0ZXNf
Y2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICByZXR1cm4gY2h1bmtzCisKKworY2xhc3MgSW5m
bGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X2luZmxh
dGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgYict
JyAqIDMwMDAwICsgYidoZWxsbycKKyAgICAgICAgaW5mbGF0ZXIxNSA9IHV0aWwuX0luZmxhdGVy
KDE1KQorICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVmbGF0ZXIoMTUpCisgICAgICAgIGlu
ZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCisgICAgICAgIGRlZmxhdGVyOCA9IHV0aWwuX0Rl
ZmxhdGVyKDgpCisKKyAgICAgICAgY29tcHJlc3NlZDE1ID0gZGVmbGF0ZXIxNS5jb21wcmVzc19h
bmRfZmluaXNoKGlucHV0KQorICAgICAgICBjb21wcmVzc2VkOCA9IGRlZmxhdGVyOC5jb21wcmVz
c19hbmRfZmluaXNoKGlucHV0KQorCisgICAgICAgIGluZmxhdGVyMTUuYXBwZW5kKGNvbXByZXNz
ZWQxNSkKKyAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21wcmVzc2VkOCkKKworICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29tcHJlc3NlZDgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVjb21wcmVzcygtMSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5kZWNvbXByZXNzKC0xKSkKKworICAg
IGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICByYW5kb20uc2VlZChhPTAp
CisgICAgICAgIHNvdXJjZSA9IGInJy5qb2luKAorICAgICAgICAgICAgW2ludDJieXRlKHJhbmRv
bS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMCAqIDEwMjQpXSkKKworICAgICAg
ICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCisgICAgICAg
IHByaW50KCJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2Vk
X2lucHV0XSkKKworICAgICAgICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQorICAgICAg
ICBjb21wcmVzc2VkID0gW10KKyAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Cisg
ICAgICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCisg
ICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYicn
KSkKKworICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNv
dXJjZSwgMTApCisgICAgICAgIHByaW50KCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUK
KyAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2V4cGVjdGF0aW9uXSkKKwor
ICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxhdGVyKDE1KQorICAgICAgICBpbmZsYXRlci5h
cHBlbmQoYicnLmpvaW4oY29tcHJlc3NlZCkpCisgICAgICAgIGZvciBjaHVuayBpbiBjaHVua2Vk
X2V4cGVjdGF0aW9uOgorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21w
cmVzcyhsZW4oY2h1bmspKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVj
b21wcmVzc2VkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBpbmZsYXRlci5kZWNv
bXByZXNzKC0xKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0
Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2
M2VmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
UkVBRE1FCkBAIC0wLDAgKzEgQEAKK1Rlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3Vz
ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2I1NDFiYjdlYzQwNDQ3NDU3OThhYjk3YWU3Y2NiYTU3
ZTA0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJhaXNlIGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzk4ZTk2Nzc4ZDhmNzVjOGQ3NDI0YzI3YjQwYzFm
YWQ5OTE4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmY2NDQyZTY1Yjk5ZGQ3ZDQ1NWNiMDlhMGFmYzlkNDk1OGRmMDQxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
b3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgaWYgcmVx
dWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAgICAgIHJldHVybgor
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qu
d3Nfb3JpZ2luKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbWVzc2FnZSA9ICdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAl
ICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDM5MDk5NGQ3MTJkZmU4ZjFlNGRmZGQ5NGZmNTZhYmU2
NjczZDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpAQCAtMCwwICsxLDQy
IEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEoKS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVz
JyAlCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0Lndz
X3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmZGRiNzQ0OTVlZWYxZDFmMzUxZTMzNGFjNDg1MDQ3
M2VkMTY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCisi
IiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVz
c2FnZSA9ICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUg
KAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhZmNmYTk3YTk1NGEyYmU2OTZjMTQ4ZGQxZjU1MzYyOGYxMjFlYTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25f
Y2FsbGFibGVfd3NoLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTm9u
LWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisKK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
ID0gVHJ1ZQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQorCisjIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3BsYWluX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdkYjFlNWFjMzI2ZGY1MWM2OGUzZWQy
NjkwYmUyYTAzYzg3M2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMn
ICUgKHJlcXVlc3Qud3NfcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2NWRiZTMyYWFj
OTEyMjkxYTM2M2E4YzgzZWJlOGUwZmVkNjBlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCkBAIC0w
LDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9z
aWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
d3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViYjBkYTFhYjZiMGJkZDA3
N2I4MzMyODEzNzZjMWE4MTE1NTBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgorIiIiCisKKworZGVmIG5vX3dlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3dyb25nX2hhbmRz
aGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZDI3ZDZiY2ZlZWFmMDJhOTQyYThiMzBiN2QzMzQwZmIyMGQyMzMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJh
bnNmZXJfc2lnX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldy
b25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KKyIiIgorCisKK2RlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVm
IG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjMGY2NTcyYjEyZmMxYjE0
NjY2M2ZmZWFkNThjNDgyNWMyMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE5IEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0
X2J5X3VzZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzZiOGUxOTIwZGMzYmVjYTZlZTUwZGQzMjJi
ZDYwYTU4Y2M0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5ZWVhMTkxNGI5MWQ2ZjU1ZTU0NjdkYjkwODE1MWQ2ODdl
OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMCwwICsxLDMyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitO
b25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19f
aW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3J1bl9hbGwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9leHRl
bnNpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmZkYmMx
ZjYxODk5NDZkYWViYzhlZjBjNWRjNTI3NThmY2E5NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTElDRU5T
RQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvUkVB
RE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L0NIQU5HRVMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCmluZGV4IGIzOTk4ODI1NjFlYzI5NWQ4ZGVmY2Fk
YmUxYjliOTk1YjFlYjllMTEuLmZmYTcwMjYwMWI2NTA5YjI1ZmJkNjc4N2QxZTc2ODJlNWFjMzkz
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwpA
QCAtMyw2ICszLDI4IEBAIENoYW5nZWxvZyBmb3Igc2l4CiAKIFRoaXMgZmlsZSBsaXN0cyB0aGUg
Y2hhbmdlcyBpbiBlYWNoIHNpeCB2ZXJzaW9uLgogCisxLjEzLjAKKy0tLS0tLQorCistIElzc3Vl
ICMyOTgsIHB1bGwgcmVxdWVzdCAjMjk5OiBBZGQgYHNpeC5tb3Zlcy5kYm1fbmRibWAuCisKKy0g
SXNzdWUgIzE1NTogQWRkIGBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjYCwgd2hpY2ggYWxpYXNl
cyB0aGUgYGNvbGxlY3Rpb25zYAorICBtb2R1bGUgb24gUHl0aG9uIDItMy4yIGFuZCB0aGUgYGNv
bGxlY3Rpb25zLmFiY2Agb24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlci4KKworLSBQdWxsIHJlcXVl
c3QgIzMwNDogUmUtYWRkIGRpc3R1dGlscyBmYWxsYmFjayBpbiBgc2V0dXAucHlgLgorCistIFB1
bGwgcmVxdWVzdCAjMzA1OiBPbiBQeXRob24gMy43LCBgd2l0aF9tZXRhY2xhc3NgIHN1cHBvcnRz
IGNsYXNzZXMgdXNpbmcgUEVQCisgIDU2MCBmZWF0dXJlcy4KKworMS4xMi4wCistLS0tLS0KKwor
LSBJc3N1ZSAjMjU5LCBwdWxsIHJlcXVlc3QgIzI2MDogYHNpeC5hZGRfbWV0YWNsYXNzYCBub3cg
cHJlc2VydmVzCisgIGBfX3F1YWxuYW1lX19gIGZyb20gdGhlIG9yaWdpbmFsIGNsYXNzLgorCist
IFB1bGwgcmVxdWVzdCAjMjA0OiBBZGQgYHNpeC5lbnN1cmVfYmluYXJ5YCwgYHNpeC5lbnN1cmVf
dGV4dGAsIGFuZAorICBgc2l4LmVuc3VyZV9zdHJgLgorCiAxLjExLjAKIC0tLS0tLQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQppbmRleCBmMzA2OGJm
ZDllMGNkODZkZTZiMmNlNWY1ZmE3ZmFmMzhjNjhlNWNlLi40YjA1YTU0NTI2MWMwZjliMzFhYmUz
ZWRlYzcxMDU4NzU4N2E2NTlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1Db3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBC
ZW5qYW1pbiBQZXRlcnNvbgorQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJz
b24KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNkNWZmNGJiOGU0ZmEwYTFjYWY2ZDNkZjUyOGFiYzIwYjNkZjVh
ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1NZXRhZGF0YS1WZXJz
aW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5OiBQeXRob24gMiBh
bmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgotQXV0aG9yLWVtYWls
OiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0aW9uOiAuLiBpbWFn
ZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgICAgICAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAgICAKLSAgICAgICAg
Li4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNo
PW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jlbmph
bWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6dGFyZ2V0OiBodHRw
czovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCi0gICAgICAg
IAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnku
ICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Igc21vb3RoaW5nIG92
ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBn
b2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIG9u
IGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1bWVudGF0aW9uIGZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAgICAgIAotICAgICAg
ICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQgaXMgY29u
dGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
LSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAKLSAgICAgICAgT25s
aW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KLSAgICAgICAgCi0g
ICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1p
bnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQgdGhlcmUuCi0gICAg
ICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVy
YWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAgIGxpc3Q6IGh0dHBz
Oi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcKLSAgICAg
ICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCi1DbGFz
c2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xhc3NpZmll
cjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFzc2lmaWVy
OiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9SRUFETUUucnN0CmluZGV4IGMxN2Q4ZDczMmFmODU5ZGUyYzQ2YWJhZDAwNjQ0MzRh
ODRkYzE2MGEuLmE5OWU2ZjU1ODVhOTE4YjhhNjhjZWFiYWNlMmZiNmUzNGU5MjE4M2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdApAQCAt
MSwxMSArMSwxOCBAQAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3Np
eC5zdmcKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4CisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6YWx0OiBzaXggb24gUHlQSQogCiAu
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4LnN2Zz9icmFuY2g9
bWFzdGVyCi0gICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgK
KyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4CisgICA6YWx0
OiBzaXggb24gVHJhdmlzQ0kKIAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFk
Z2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mu
b3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBz
Oi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBS
ZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9s
aWNlbnNlLU1JVC1ncmVlbi5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5q
YW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdl
CiAKIFNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHBy
b3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCiBmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVu
Y2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCkBAIC0xNiw3
ICsyMyw3IEBAIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJ
dCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCiBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
IG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKIAotT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQg
aHR0cDovL3NpeC5ydGZkLm9yZy4KK09ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHBzOi8v
c2l4LnJlYWR0aGVkb2NzLmlvLy4KIAogQnVncyBjYW4gYmUgcmVwb3J0ZWQgdG8gaHR0cHM6Ly9n
aXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwogYmUgZm91bmQgdGhl
cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9kb2N1bWVudGF0aW9uL2NvbmYucHkKaW5kZXggYWQ5MjVjMWMxZDFlODM2MTQ5MzcwNzJiYmU5
NGU2YzMwNTZkMTg4ZC4uYjNkMTMyOGFkYzJhNDJhZmRlNzE5MTUxOTMwNjA0MzM1MDRjZTIwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMzMsNyArMzMsNyBAQCBtYXN0ZXJfZG9jID0gImlu
ZGV4IgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCiBwcm9qZWN0
ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNywgQmVuamFtaW4gUGV0ZXJzb24iCitj
b3B5cmlnaHQgPSB1IjIwMTAtMjAxOSwgQmVuamFtaW4gUGV0ZXJzb24iCiAKIHN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikpKQogZnJvbSBzaXgg
aW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9k
b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0
CmluZGV4IGRkMGRjNmUzYmRlOGM0NThkYzRmMTEzMzFlZjdiZTEyZWQ2N2FiYTguLmI3ZWMyNzU0
ZWNmODNkNWEyOTFjMTM5ODg3MzhmZWY2MjA0NWM5ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2Rv
Y3VtZW50YXRpb24vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgu
cnN0CkBAIC0xMyw3ICsxMyw3IEBAIFB5dGhvbiAzLiAgSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9y
dCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMKIHdpdGhvdXQgbW9k
aWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBmaWxlLCBzbyBpdCBp
cyBwYWlubGVzcwogdG8gY29weSBpbnRvIGEgcHJvamVjdC4KIAotU2l4IGNhbiBiZSBkb3dubG9h
ZGVkIG9uIGBQeVBpIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8+YF8uICBJdHMg
YnVnCitTaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJv
amVjdC9zaXgvPmBfLiAgSXRzIGJ1ZwogdHJhY2tlciBhbmQgY29kZSBob3N0aW5nIGlzIG9uIGBH
aXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4PmBfLgogCiBUaGUgbmFtZSwg
InNpeCIsIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCAyKjMgZXF1YWxzIDYuICBXaHkgbm90IGFk
ZGl0aW9uPwpAQCAtNTAsOCArNTAsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAKIC4uIGRhdGE6
OiBjbGFzc190eXBlcwogCi0gICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIEluIFB5dGhvbiAyLCB0
aGlzIGVuY29tcGFzc2VzIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlCi0gICBjbGFzc2VzLiAgSW4g
UHl0aG9uIDMsIHRoaXMgaXMganVzdCBuZXctc3R5bGVzLgorICAgUG9zc2libGUgY2xhc3MgdHlw
ZXMuICBJbiBQeXRob24gMiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUKKyAgIDpkYXRhOmBw
eTI6dHlwZXMuQ2xhc3NUeXBlYCBhbmQgbmV3LXN0eWxlIGBgdHlwZWBgIGNsYXNzZXMuICBJbiBQ
eXRob24gMywKKyAgIHRoaXMgaXMganVzdCBgYHR5cGVgYC4KIAogCiAuLiBkYXRhOjogaW50ZWdl
cl90eXBlcwpAQCAtNzUsNyArNzYsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAuLiBkYXRhOjog
YmluYXJ5X3R5cGUKIAogICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFyeSBkYXRhLiAgVGhp
cyBpcyA6ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOmJ5dGVz
YCBpbiBQeXRob24gMy4KKyAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhvbiAzLiAgUHl0aG9u
IDIuNiBhbmQgMi43IGluY2x1ZGUgYGBieXRlc2BgIGFzIGEKKyAgIGJ1aWx0aW4gYWxpYXMgb2Yg
YGBzdHJgYCwgc28gc2l44oCZcyB2ZXJzaW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBQeXRob24g
Mi41CisgICBjb21wYXRpYmlsaXR5LgogCiAKIC4uIGRhdGE6OiBNQVhTSVpFCkBAIC0zNzEsNyAr
Mzc0LDcgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4KIC4uIGZ1bmN0aW9u
OjogYihkYXRhKQogCiAgICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBh
bHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5j
OmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNv
ZGVkCisgICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYW4gOC1iaXQgc3RyaW5nLiAgSW4g
UHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5n
IHRvIGJ5dGVzLgogCiAKQEAgLTQzMyw2ICs0MzYsMjQgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5
dGhvbiB2ZXJzaW9ucy4KICAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgog
CiAKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJv
cnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YGJpbmFyeV90eXBlYC4gKmVu
Y29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNv
ZGVgCisKKworLi4gZnVuY3Rpb246OiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVy
cm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byBgYHN0cmBgLiAqZW5jb2RpbmcqLCAq
ZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCisu
LiBmdW5jdGlvbjo6IGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3Ry
aWN0JykKKworICAgQ29lcmNlICpzKiB0byA6ZGF0YTpgdGV4dF90eXBlYC4gKmVuY29kaW5nKiwg
KmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNvZGVgCisKKwog
Li4gZGF0YTo6IFN0cmluZ0lPCiAKICAgIFRoaXMgaXMgYSBmYWtlIGZpbGUgb2JqZWN0IGZvciB0
ZXh0dWFsIGRhdGEuICBJdCdzIGFuIGFsaWFzIGZvcgpAQCAtNTAzLDcgKzUyNCw3IEBAIFB5dGhv
biAyIG9yIDMsIHdyaXRlOjoKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCBodG1sX3BhcnNlcgog
CiBTaW1pbGFybHksIHRvIGdldCB0aGUgZnVuY3Rpb24gdG8gcmVsb2FkIG1vZHVsZXMsIHdoaWNo
IHdhcyBtb3ZlZCBmcm9tIHRoZQotYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wYGAgbW9kdWxl
LCB1c2U6OgorYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLCB1c2U6
OgogCiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmVsb2FkX21vZHVsZQogCkBAIC01NjMsNyAr
NTg0LDExIEBAIFN1cHBvcnRlZCByZW5hbWVzOgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBjU3RyaW5nSU9gYCAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6Y1N0cmluZ0lPLlN0cmluZ0lPYCAgICAgIHwgOmNsYXNzOmBweTM6aW8u
U3RyaW5nSU9gICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwg
OmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MzpkYm0uZ251
YCAgICAgICAgICAgICAgICAgIHwKK3wgYGBjb2xsZWN0aW9uc19hYmNgYCAgICAgICAgICB8IDpt
b2Q6YHB5Mjpjb2xsZWN0aW9uc2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvbGxlY3Rpb25z
LmFiY2AgKDMuMyspICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmdkYm1gICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJtLmdudWAgICAgICAg
ICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCit8IGBgZGJtX25kYm1gYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
ZGJtYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpkYm0ubmRibWAgICAgICAgICAg
ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKIHwgYGBfZHVtbXlfdGhyZWFkYGAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkdW1t
eV90aHJlYWRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOl9kdW1teV90aHJlYWRgICAgICAgICAg
ICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2Zn
CmluZGV4IGUxMjA2OGM1NzNjNmY2ZWZkM2E5Mzc5NmU2ZGNlZWFlMTg4YjM1Y2QuLjMxN2UwMTZj
OGNjMDRkMDk3YjNiNjk2Mzk3MTAzNTdkZWIxYzk3MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Nl
dHVwLmNmZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKQEAgLTUsMTcgKzUsMTYgQEAgdW5pdmVy
c2FsID0gMQogbWF4LWxpbmUtbGVuZ3RoID0gMTAwCiBpZ25vcmUgPSBGODIxCiAKLVt0b29sOnB5
dGVzdF0KLW1pbnZlcnNpb24gPSAyLjIuMAotcGVwOGlnbm9yZSA9IAotCWRvY3VtZW50YXRpb24v
Ki5weSBBTEwKLQl0ZXN0X3NpeC5weSBBTEwKLWZsYWtlcy1pZ25vcmUgPSAKLQlkb2N1bWVudGF0
aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi0Jc2l4LnB5IFVuZGVmaW5lZE5hbWUKK1tt
ZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKIAotW2VnZ19pbmZvXQotdGFnX2J1aWxk
ID0gCi10YWdfZGF0ZSA9IDAKK1t0b29sOnB5dGVzdF0KK21pbnZlcnNpb249Mi4yLjAKK3BlcDhp
Z25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0ZXN0X3NpeC5weSBBTEwK
IAorZmxha2VzLWlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8qLnB5IEFMTAorICAgIHRlc3Rf
c2l4LnB5IEFMTAorICAgIHNpeC5weSBVbmRlZmluZWROYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmluZGV4IGNhNDRlMTAwZTQyN2VjZjU0MjRi
YWNiODRkNWViNmY1YzcxMmYyMzEuLjk3YzY4NWI1YTUwYmQ5NzY5ODA0ODYxZjRhZDdhODM5NjIx
NWQyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQ
ZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwog
IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0zMSw2ICsz
MSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBzaXgKIAogc2l4X2NsYXNzaWZpZXJz
ID0gWworICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlIiwK
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIiLAogICAgICJQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCiAgICAgIkludGVuZGVkIEF1ZGllbmNlIDo6
IERldmVsb3BlcnMiLApAQCAtNDYsMTEgKzQ3LDEyIEBAIHNldHVwKG5hbWU9InNpeCIsCiAgICAg
ICB2ZXJzaW9uPXNpeC5fX3ZlcnNpb25fXywKICAgICAgIGF1dGhvcj0iQmVuamFtaW4gUGV0ZXJz
b24iLAogICAgICAgYXV0aG9yX2VtYWlsPSJiZW5qYW1pbkBweXRob24ub3JnIiwKLSAgICAgIHVy
bD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iLAorICAgICAgdXJsPSJodHRwczov
L2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeCIsCiAgICAgICB0ZXN0c19yZXF1aXJlPVsicHl0ZXN0
Il0sCiAgICAgICBweV9tb2R1bGVzPVsic2l4Il0sCiAgICAgICBkZXNjcmlwdGlvbj0iUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMiLAogICAgICAgbG9uZ19kZXNjcmlwdGlv
bj1zaXhfbG9uZ19kZXNjcmlwdGlvbiwKICAgICAgIGxpY2Vuc2U9Ik1JVCIsCi0gICAgICBjbGFz
c2lmaWVycz1zaXhfY2xhc3NpZmllcnMKKyAgICAgIGNsYXNzaWZpZXJzPXNpeF9jbGFzc2lmaWVy
cywKKyAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjYsICE9My4wLiosICE9My4xLioiLAogICAg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVS
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
YjU4OWUzOGEzMjA0MWU0OTMzMmU1ZTgxYzJkMzYzZGM0MThkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKQEAgLTAsMCArMSBAQAor
cGlwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjA1YTU0
NTI2MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpAQCAtMCwwICsxLDE4IEBACitDb3B5
cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgorCitQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5IG9mCit0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgordGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwordXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbCBjb3BpZXMgb2YKK3RoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKK3N1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKK2NvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SCitDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIKK0lOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCitDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGM4ZjUxZTFmMzY2
MTM4ZDM4MTZhYmUwZGRiM2VmZWU0MTc1YzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKQEAgLTAsMCArMSw1MiBAQAorTWV0YWRhdGEt
VmVyc2lvbjogMi4xCitOYW1lOiBzaXgKK1ZlcnNpb246IDEuMTMuMAorU3VtbWFyeTogUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRo
dWIuY29tL2JlbmphbWlucC9zaXgKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24KK0F1dGhvci1l
bWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZworTGljZW5zZTogTUlUCitQbGF0Zm9ybTogVU5LTk9X
TgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZQorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKK0NsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitDbGFzc2lmaWVyOiBJ
bnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9T
SSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMK
K1JlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4wLiosICE9My4xLioKKworLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFyZ2V0OiBodHRwczov
L3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkKKworLi4gaW1hZ2U6
OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNoPW1hc3Rlcgor
ICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgKKyAgIDphbHQ6
IHNpeCBvbiBUcmF2aXNDSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3By
b2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vc2l4
LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBSZWFkIHRo
ZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNl
LU1JVC1ncmVlbi5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAv
c2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdlCisKK1Np
eCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVz
IHV0aWxpdHkgZnVuY3Rpb25zCitmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCit3cml0aW5nIFB5dGhv
biBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0
aGUKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBpcyBwcm92aWRl
ZC4KKworU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlz
IGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KK2ZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkg
Y29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQorbm90
aWNlIG11c3QgYmUgcmV0YWluZWQuKQorCitPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
czovL3NpeC5yZWFkdGhlZG9jcy5pby8uCisKK0J1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KK2JlIGZvdW5k
IHRoZXJlLgorCitGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVyYWws
IGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCitsaXN0OiBodHRwczovL21haWwucHl0
aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JEIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vUkVDT1JECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NzY2NWM5OTY0MjU1ZDE3MDJmMDE2Yzhi
ZDExZGFlZGU1MTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRp
c3QtaW5mby9SRUNPUkQKQEAgLTAsMCArMSw4IEBACitzaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNU
QUxMRVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJBUDd6ZU51d3ZGUWcs
NA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2JqQWNYR25pb3cyd3ln
NUJWS09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL01F
VEFEQVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEzbWtfeGtuWjhSVjR3
LDE5NDANCitzaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KK3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BDR21FUEhjLWdwQ3E1
QlJnLDExMA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQsc2hhMjU2PV9pVkhf
aVlFdEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KK3NpeC5weSxzaGEyNTY9
bzlXSE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywzMzA1MQ0KK3NpeC5w
eWMsLA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwMTIzNTUz
MzNlMDY2NGZhYzMxMjM4YWEwNDIxNmZmNTM2MjIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCkBAIC0wLDAgKzEsNiBAQAorV2hlZWwtVmVy
c2lvbjogMS4wCitHZW5lcmF0b3I6IGJkaXN0X3doZWVsICgwLjMyLjEpCitSb290LUlzLVB1cmVs
aWI6IHRydWUKK1RhZzogcHkyLW5vbmUtYW55CitUYWc6IHB5My1ub25lLWFueQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmUyZmNl
NDk4OTU1YjYyODAxNDYxOGIyOGM2YmNmMTUyNDY2YTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApAQCAtMCwwICsxIEBACitz
aXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzVlMWQyMmNiODYzMGNjZDIwYzIwM2Q2Mzg5YTVhZTYyNTAwYWY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lO
U1RBTExFUgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL1JFQ09SRAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5CmluZGV4IDZiZjRmZDM4MTA0NjIwN2E0Nzk0
YWVlMTdiZTZkMjJkYjIzN2YzMGEuLmQwYWVjZTg5ZmE0YWFlOTQ4ZDc1ZThlZjIyNzdjZTI0OTUx
ZWJiMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVy
c29uCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTI5LDcgKzI5LDcg
QEAgaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAKIF9fYXV0aG9yX18gPSAiQmVuamFtaW4gUGV0
ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IgotX192ZXJzaW9uX18gPSAiMS4xMS4wIgorX192
ZXJzaW9uX18gPSAiMS4xMy4wIgogCiAKICMgVXNlZnVsIGZvciB2ZXJ5IGNvYXJzZSB2ZXJzaW9u
IGRpZmZlcmVudGlhdGlvbi4KQEAgLTI1NSw4ICsyNTUsMTAgQEAgX21vdmVkX2F0dHJpYnV0ZXMg
PSBbCiAgICAgTW92ZWRBdHRyaWJ1dGUoInppcF9sb25nZXN0IiwgIml0ZXJ0b29scyIsICJpdGVy
dG9vbHMiLCAiaXppcF9sb25nZXN0IiwgInppcF9sb25nZXN0IiksCiAgICAgTW92ZWRNb2R1bGUo
ImJ1aWx0aW5zIiwgIl9fYnVpbHRpbl9fIiksCiAgICAgTW92ZWRNb2R1bGUoImNvbmZpZ3BhcnNl
ciIsICJDb25maWdQYXJzZXIiKSwKKyAgICBNb3ZlZE1vZHVsZSgiY29sbGVjdGlvbnNfYWJjIiwg
ImNvbGxlY3Rpb25zIiwgImNvbGxlY3Rpb25zLmFiYyIgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMykgZWxzZSAiY29sbGVjdGlvbnMiKSwKICAgICBNb3ZlZE1vZHVsZSgiY29weXJlZyIsICJj
b3B5X3JlZyIpLAogICAgIE1vdmVkTW9kdWxlKCJkYm1fZ251IiwgImdkYm0iLCAiZGJtLmdudSIp
LAorICAgIE1vdmVkTW9kdWxlKCJkYm1fbmRibSIsICJkYm0iLCAiZGJtLm5kYm0iKSwKICAgICBN
b3ZlZE1vZHVsZSgiX2R1bW15X3RocmVhZCIsICJkdW1teV90aHJlYWQiLCAiX2R1bW15X3RocmVh
ZCIpLAogICAgIE1vdmVkTW9kdWxlKCJodHRwX2Nvb2tpZWphciIsICJjb29raWVsaWIiLCAiaHR0
cC5jb29raWVqYXIiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVzIiwgIkNvb2tpZSIs
ICJodHRwLmNvb2tpZXMiKSwKQEAgLTYzNyw2ICs2MzksNyBAQCBpZiBQWTM6CiAgICAgaW1wb3J0
IGlvCiAgICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwogICAgIEJ5dGVzSU8gPSBpby5CeXRlc0lP
CisgICAgZGVsIGlvCiAgICAgX2Fzc2VydENvdW50RXF1YWwgPSAiYXNzZXJ0Q291bnRFcXVhbCIK
ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzFdIDw9IDE6CiAgICAgICAgIF9hc3NlcnRSYWlzZXNS
ZWdleCA9ICJhc3NlcnRSYWlzZXNSZWdleHAiCkBAIC04MjQsNyArODI3LDE1IEBAIGRlZiB3aXRo
X21ldGFjbGFzcyhtZXRhLCAqYmFzZXMpOgogICAgIGNsYXNzIG1ldGFjbGFzcyh0eXBlKToKIAog
ICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQpOgotICAgICAgICAg
ICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvWzoyXSA+PSAoMywgNyk6CisgICAgICAgICAgICAgICAgIyBUaGlzIHZlcnNpb24gaW50
cm9kdWNlZCBQRVAgNTYwIHRoYXQgcmVxdWlyZXMgYSBiaXQKKyAgICAgICAgICAgICAgICAjIG9m
IGV4dHJhIGNhcmUgKHdlIG1pbWljIHdoYXQgaXMgZG9uZSBieSBfX2J1aWxkX2NsYXNzX18pLgor
ICAgICAgICAgICAgICAgIHJlc29sdmVkX2Jhc2VzID0gdHlwZXMucmVzb2x2ZV9iYXNlcyhiYXNl
cykKKyAgICAgICAgICAgICAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3QgYmFzZXM6CisgICAg
ICAgICAgICAgICAgICAgIGRbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcworICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IGJhc2VzCisgICAgICAgICAg
ICByZXR1cm4gbWV0YShuYW1lLCByZXNvbHZlZF9iYXNlcywgZCkKIAogICAgICAgICBAY2xhc3Nt
ZXRob2QKICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKGNscywgbmFtZSwgdGhpc19iYXNlcyk6CkBA
IC04NDQsMTMgKzg1NSw3NCBAQCBkZWYgYWRkX21ldGFjbGFzcyhtZXRhY2xhc3MpOgogICAgICAg
ICAgICAgICAgIG9yaWdfdmFycy5wb3Aoc2xvdHNfdmFyKQogICAgICAgICBvcmlnX3ZhcnMucG9w
KCdfX2RpY3RfXycsIE5vbmUpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19fd2Vha3JlZl9fJywg
Tm9uZSkKKyAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX3F1YWxuYW1lX18nKToKKyAgICAgICAg
ICAgIG9yaWdfdmFyc1snX19xdWFsbmFtZV9fJ10gPSBjbHMuX19xdWFsbmFtZV9fCiAgICAgICAg
IHJldHVybiBtZXRhY2xhc3MoY2xzLl9fbmFtZV9fLCBjbHMuX19iYXNlc19fLCBvcmlnX3ZhcnMp
CiAgICAgcmV0dXJuIHdyYXBwZXIKIAogCitkZWYgZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0n
dXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIiIkNvZXJjZSAqKnMqKiB0byBzaXguYmlu
YXJ5X3R5cGUuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmljb2RlYCAtPiBlbmNv
ZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisKKyAgICBGb3IgUHl0aG9uIDM6
CisgICAgICAtIGBzdHJgIC0+IGVuY29kZWQgdG8gYGJ5dGVzYAorICAgICAgLSBgYnl0ZXNgIC0+
IGBieXRlc2AKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAg
ICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVsaWYgaXNpbnN0YW5j
ZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToKKyAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorCisK
K2RlZiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Cisg
ICAgIiIiQ29lcmNlICpzKiB0byBgc3RyYC4KKworICAgIEZvciBQeXRob24gMjoKKyAgICAgIC0g
YHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKwor
ICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAgICAgIC0gYGJ5dGVz
YCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uocywg
KHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3Qg
ZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorICAgIGlmIFBZMiBhbmQgaXNpbnN0YW5j
ZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykK
KyAgICBlbGlmIFBZMyBhbmQgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHMg
PSBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIHJldHVybiBzCisKKworZGVmIGVuc3Vy
ZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgIiIiQ29l
cmNlICpzKiB0byBzaXgudGV4dF90eXBlLgorCisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBg
dW5pY29kZWAgLT4gYHVuaWNvZGVgCisgICAgICAtIGBzdHJgIC0+IGB1bmljb2RlYAorCisgICAg
Rm9yIFB5dGhvbiAzOgorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorICAgICAgLSBgYnl0ZXNgIC0+
IGRlY29kZWQgdG8gYHN0cmAKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90
eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCisgICAgZWxp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBl
KHMpKQorCisKKwogZGVmIHB5dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZShrbGFzcyk6CiAgICAg
IiIiCi0gICAgQSBkZWNvcmF0b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9f
IG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCisgICAgQSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBkZWZp
bmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCiAgICAg
VW5kZXIgUHl0aG9uIDMgaXQgZG9lcyBub3RoaW5nLgogCiAgICAgVG8gc3VwcG9ydCBQeXRob24g
MiBhbmQgMyB3aXRoIGEgc2luZ2xlIGNvZGUgYmFzZSwgZGVmaW5lIGEgX19zdHJfXyBtZXRob2QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkK
aW5kZXggNDNlNzQyNmRlYTEyNDFiYmQzNzFkMmYyNGY2M2Y1MTA0MjdhNTE5Zi4uM2VlZmNlMzdj
MzI4ZDdiMTViMjNlZTgzZGQ4OThjNGIzZTU3NjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVz
dF9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykg
MjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTIyLDggKzIyLDkgQEAgaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGFiYwogCi1p
bXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKIAogaW1wb3J0IHNpeAogCkBAIC04MCw3ICs4MSw3IEBA
IGRlZiB0ZXN0X01BWFNJWkUoKToKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAg
ICMgQmVmb3JlIFB5dGhvbiAyLjYuCiAgICAgICAgIHBhc3MKLSAgICBweS50ZXN0LnJhaXNlcygK
KyAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciks
CiAgICAgICAgIG9wZXJhdG9yLm11bCwgW05vbmVdLCBzaXguTUFYU0laRSArIDEpCiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICBoYXZlX2dkYm0gPSBGYWxzZQogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fbW92ZWRf
YXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5z
dXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0xMjIsMzYgKzEyMywz
NiBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgICAgICAgICBfX2ltcG9y
dF9fKCJzaXgubW92ZXMuIiArIGl0ZW1fbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAiemlwX2xvbmdlc3QiIGFuZCBzeXMudmVyc2lvbl9p
bmZvIDwgKDIsIDYpOgotICAgICAgICAgICAgcHkudGVzdC5za2lwKCJ6aXBfbG9uZ2VzdCBvbmx5
IGF2YWlsYWJsZSBvbiAyLjYrIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ6aXBfbG9uZ2Vz
dCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgIGlmIGl0ZW1fbmFtZSA9PSAid2lucmVnIiBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCJ3aW4iKToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVs
ZSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVsZSIpCiAgICAg
ICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJ0a2ludGVyIik6CiAgICAgICAgICAgICBpZiBu
b3QgaGF2ZV90a2ludGVyOgotICAgICAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgicmVxdWlyZXMg
dGtpbnRlciIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIHRraW50ZXIi
KQogICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ0a2ludGVyX3R0ayIgYW5kIHN5cy52ZXJz
aW9uX2luZm9bOjJdIDw9ICgyLCA2KToKLSAgICAgICAgICAgICAgICBweS50ZXN0LnNraXAoInR0
ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgi
dHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogICAgICAgICBpZiBpdGVtX25hbWUuc3RhcnRz
d2l0aCgiZGJtX2dudSIpIGFuZCBub3QgaGF2ZV9nZGJtOgotICAgICAgICAgICAgcHkudGVzdC5z
a2lwKCJyZXF1aXJlcyBnZGJtIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBn
ZGJtIikKICAgICAgICAgcmFpc2UKICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwg
Nik6CiAgICAgICAgIGFzc2VydCBpdGVtX25hbWUgaW4gZGlyKHNpeC5tb3ZlcykKIAogCi1AcHku
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZv
ciBpdGVtIGluIHNpeC5fdXJsbGliX3BhcnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3Rf
bW92ZV9pdGVtc191cmxsaWJfcGFyc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBl
dmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKICAgICBpZiBpdGVtX25hbWUgPT0gIlBhcnNl
UmVzdWx0IiBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgyLCA1KToKLSAgICAgICAgcHkudGVzdC5z
a2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZvdW5kIG9uIDIuNSsiKQorICAgICAgICBweXRlc3Qu
c2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKICAgICBpZiBpdGVtX25h
bWUgaW4gKCJwYXJzZV9xcyIsICJwYXJzZV9xc2wiKSBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgy
LCA2KToKLSAgICAgICAgcHkudGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBuZXcgaW4gMi42IikK
KyAgICAgICAgcHl0ZXN0LnNraXAoInBhcnNlX3FzW2xdIGlzIG5ldyBpbiAyLjYiKQogICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNzZXJ0IGl0ZW1fbmFt
ZSBpbiBkaXIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSkKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
dGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX2Vy
cm9yX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfZXJyb3Io
aXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3Rs
eS4iIiIKQEAgLTE2MCw3ICsxNjEsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9lcnJv
cihpdGVtX25hbWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5lcnJvciwgaXRlbV9u
YW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVxdWVzdF9tb3ZlZF9hdHRyaWJ1
dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JlcXVlc3QoaXRlbV9uYW1lKToKICAg
ICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE2OSw3
ICsxNzAsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0KGl0ZW1fbmFtZSk6
CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlcXVlc3QsIGl0ZW1fbmFtZSkKIAogCi1A
cHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1l
IGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3Jlc3BvbnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVm
IHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1
cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE3OCw3ICsxNzksNyBA
QCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNwb25zZShpdGVtX25hbWUpOgogICAgIGdl
dGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZSwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Iml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0
ZW0gaW4gc2l4Ll91cmxsaWJfcm9ib3RwYXJzZXJfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVz
dF9tb3ZlX2l0ZW1zX3VybGxpYl9yb2JvdHBhcnNlcihpdGVtX25hbWUpOgogICAgICIiIkVuc3Vy
ZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMjQzLDcgKzI0NCw3IEBA
IGRlZiB0ZXN0X3ppcCgpOgogICAgIGFzc2VydCBzaXguYWR2YW5jZV9pdGVyYXRvcih6aXAocmFu
Z2UoMiksIHJhbmdlKDIpKSkgPT0gKDAsIDApCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm8gPCAoMiwgNikiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KSIpCiBkZWYgdGVzdF96aXBfbG9uZ2VzdCgpOgogICAgIGZyb20gc2l4
Lm1vdmVzIGltcG9ydCB6aXBfbG9uZ2VzdAogICAgIGl0ID0gemlwX2xvbmdlc3QocmFuZ2UoMiks
IHJhbmdlKDEpKQpAQCAtMzIxLDcgKzMyMiw3IEBAIGNsYXNzIFRlc3RDdXN0b21pemVkTW92ZXM6
CiAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3JlbW92ZShzZWxmKToKLSAgICAgICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5yZW1vdmVfbW92ZSwgImVnZ3MiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUsICJlZ2dzIikKIAog
CiBkZWYgdGVzdF9nZXRfdW5ib3VuZF9mdW5jdGlvbigpOgpAQCAtMzM3LDcgKzMzOCw3IEBAIGRl
ZiB0ZXN0X2dldF9tZXRob2Rfc2VsZigpOgogICAgICAgICAgICAgcGFzcwogICAgIHggPSBYKCkK
ICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2Rfc2VsZih4Lm0pIGlzIHgKLSAgICBweS50ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCisgICAgcHl0ZXN0
LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCiAKIAogZGVm
IHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlZiB0ZXN0
X2dldF9tZXRob2RfZnVuY3Rpb24oKToKICAgICAgICAgICAgIHBhc3MKICAgICB4ID0gWCgpCiAg
ICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uKHgubSkgaXMgWC5fX2RpY3RfX1sibSJd
Ci0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX2Z1bmN0
aW9uLCBoYXNhdHRyKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRf
bWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9jbG9z
dXJlKCk6CkBAIC0zNjQsNyArMzY1LDcgQEAgZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2NvZGUoKToK
ICAgICAgICAgcGFzcwogICAgIGFzc2VydCBpc2luc3RhbmNlKHNpeC5nZXRfZnVuY3Rpb25fY29k
ZShmKSwgdHlwZXMuQ29kZVR5cGUpCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAicHlweV92ZXJz
aW9uX2luZm8iKToKLSAgICAgICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5n
ZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dl
dF9mdW5jdGlvbl9kZWZhdWx0cygpOgpAQCAtNDA0LDcgKzQwNSw3IEBAIGRlZiB0ZXN0X2RpY3Rp
b25hcnlfaXRlcmF0b3JzKG1vbmtleXBhdGNoKToKICAgICAgICAgaXQgPSBtZXRoKGQpCiAgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpdCwgbGlzdCkKICAgICAgICAgYXNzZXJ0IGxpc3Qo
aXQpID09IGxpc3QoZ2V0YXR0cihkLCBuYW1lKSgpKQotICAgICAgICBweS50ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXguYWR2YW5jZV9pdGVyYXRvciwgaXQpCisgICAgICAgIHB5dGVzdC5y
YWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0KQogICAgICAgICBy
ZWNvcmQgPSBbXQogICAgICAgICBkZWYgd2l0aF9rdygqYXJncywgKiprdyk6CiAgICAgICAgICAg
ICByZWNvcmQuYXBwZW5kKGt3WyJrdyJdKQpAQCAtNDE2LDE3ICs0MTcsOSBAQCBkZWYgdGVzdF9k
aWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnVu
ZG8oKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgy
LCA3KSIsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3
KSIsCiAgICAgICAgICAgICAgICAgcmVhc29uPSJ2aWV3IG1ldGhvZHMgb24gZGljdGlvbmFyaWVz
IG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogZGVmIHRlc3RfZGljdGlvbmFyeV92aWV3cygpOgot
ICAgIGRlZiBzdG9ja19tZXRob2RfbmFtZSh2aWV3d2hhdCk6Ci0gICAgICAgICIiIkdpdmVuIGEg
bWV0aG9kIHN1ZmZpeCBsaWtlICJrZXlzIiBvciAidmFsdWVzIiwgcmV0dXJuIHRoZSBuYW1lCi0g
ICAgICAgIG9mIHRoZSBkaWN0IG1ldGhvZCB0aGF0IGRlbGl2ZXJzIHRob3NlIG9uIHRoZSB2ZXJz
aW9uIG9mIFB5dGhvbgotICAgICAgICB3ZSdyZSBydW5uaW5nIGluLiIiIgotICAgICAgICBpZiBz
aXguUFkzOgotICAgICAgICAgICAgcmV0dXJuIHZpZXd3aGF0Ci0gICAgICAgIHJldHVybiAndmll
dycgKyB2aWV3d2hhdAotCiAgICAgZCA9IGRpY3QoemlwKHJhbmdlKDEwKSwgKHJhbmdlKDExLCAy
MCkpKSkKICAgICBmb3IgbmFtZSBpbiAia2V5cyIsICJ2YWx1ZXMiLCAiaXRlbXMiOgogICAgICAg
ICBtZXRoID0gZ2V0YXR0cihzaXgsICJ2aWV3IiArIG5hbWUpCkBAIC00NDAsOCArNDMzLDggQEAg
ZGVmIHRlc3RfYWR2YW5jZV9pdGVyYXRvcigpOgogICAgIGl0ID0gaXRlcihsKQogICAgIGFzc2Vy
dCBzaXgubmV4dChpdCkgPT0gMQogICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gMgotICAgIHB5
LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKLSAgICBweS50ZXN0LnJh
aXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9w
SXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9u
LCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfaXRlcmF0b3IoKToKQEAgLTQ4OSw3ICs0ODIs
NyBAQCBkZWYgdGVzdF9jcmVhdGVfdW5ib3VuZF9tZXRob2QoKToKICAgICBkZWYgZihzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYKICAgICB1ID0gc2l4LmNyZWF0ZV91bmJvdW5kX21ldGhvZChm
LCBYKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKKyAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgdSkKICAgICBpZiBzaXguUFkyOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh1LCB0eXBlcy5NZXRob2RUeXBlKQogICAgIHggPSBYKCkKQEAgLTUzNywxMyArNTMwLDEzIEBA
IGRlZiB0ZXN0X3VuaWNocigpOgogCiBkZWYgdGVzdF9pbnQyYnl0ZSgpOgogICAgIGFzc2VydCBz
aXguaW50MmJ5dGUoMykgPT0gc2l4LmIoIlx4MDMiKQotICAgIHB5LnRlc3QucmFpc2VzKEV4Y2Vw
dGlvbiwgc2l4LmludDJieXRlLCAyNTYpCisgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIHNp
eC5pbnQyYnl0ZSwgMjU2KQogCiAKIGRlZiB0ZXN0X2J5dGUyaW50KCk6CiAgICAgYXNzZXJ0IHNp
eC5ieXRlMmludChzaXguYigiXHgwMyIpKSA9PSAzCiAgICAgYXNzZXJ0IHNpeC5ieXRlMmludChz
aXguYigiXHgwM1x4MDQiKSkgPT0gMwotICAgIHB5LnRlc3QucmFpc2VzKEluZGV4RXJyb3IsIHNp
eC5ieXRlMmludCwgc2l4LmIoIiIpKQorICAgIHB5dGVzdC5yYWlzZXMoSW5kZXhFcnJvciwgc2l4
LmJ5dGUyaW50LCBzaXguYigiIikpCiAKIAogZGVmIHRlc3RfYnl0ZXNpbmRleCgpOgpAQCAtNTU0
LDcgKzU0Nyw3IEBAIGRlZiB0ZXN0X2J5dGVzaXRlcigpOgogICAgIGl0ID0gc2l4Lml0ZXJieXRl
cyhzaXguYigiaGkiKSkKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9yZCgiaCIpCiAgICAg
YXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImkiKQotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJ
dGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24s
IHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVzdF9TdHJpbmdJTygpOgpAQCAtNjg5LDcgKzY4Miw3
IEBAIGRlZiB0ZXN0X3ByaW50XygpOgogICAgIGFzc2VydCBvdXQuZmx1c2hlZAogCiAKLUBweS50
ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwgNikiKQorQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYpIikKIGRlZiB0ZXN0
X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICAjIEZvb2wgdGhlIHR5cGUgY2hlY2tp
bmcgaW4gcHJpbnRfLgogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2l4LCAiZmlsZSIsIHNpeC5C
eXRlc0lPLCByYWlzaW5nPUZhbHNlKQpAQCAtNzAxLDE2ICs2OTQsMTYgQEAgZGVmIHRlc3RfcHJp
bnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gpOgogICAgIG91dCA9IHNpeC5CeXRlc0lPKCkKICAgICBv
dXQuZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgb3V0LmVycm9ycyA9ICJzdHJpY3QiCi0gICAgcHku
dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgucHJpbnRfLCBzaXgudSgiXHUwNTNj
IiksIGZpbGU9b3V0KQorICAgIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgu
cHJpbnRfLCBzaXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQogICAgIG91dC5lcnJvcnMgPSAiYmFj
a3NsYXNocmVwbGFjZSIKICAgICBzaXgucHJpbnRfKHNpeC51KCJcdTA1M2MiKSwgZW5kPSIiLCBm
aWxlPW91dCkKICAgICBhc3NlcnQgb3V0LmdldHZhbHVlKCkgPT0gc2l4LmIoIlxcdTA1M2MiKQog
CiAKIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbnMoKToKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIHNpeC5wcmludF8sIHg9MykKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNp
eC5wcmludF8sIGVuZD0zKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50
Xywgc2VwPTQyKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCB4PTMp
CisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIGVuZD0zKQorICAgIHB5
dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCiAKIAogZGVmIHRlc3Rf
d2l0aF9tZXRhY2xhc3MoKToKQEAgLTc0NCw3ICs3MzcsNTQgQEAgZGVmIHRlc3Rfd2l0aF9tZXRh
Y2xhc3MoKToKICAgICBhc3NlcnQgWS5fX21yb19fID09IChZLCBYLCBvYmplY3QpCiAKIAotQHB5
LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDApIikKK0BweXRl
c3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK2RlZiB0ZXN0
X3dpdGhfbWV0YWNsYXNzX3R5cGluZygpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHR5cGlu
ZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNraXAoInR5cGluZyBt
b2R1bGUgcmVxdWlyZWQiKQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KToKKyAgICAgICAgIyBHZW5lcmljcyB3
aXRoIGN1c3RvbSBtZXRhY2xhc3NlcyB3ZXJlIGJyb2tlbiBvbiBvbGRlciB2ZXJzaW9ucy4KKyAg
ICAgICAgY2xhc3MgTWV0YShNZXRhLCB0eXBpbmcuR2VuZXJpY01ldGEpOgorICAgICAgICAgICAg
cGFzcworICAgIFQgPSB0eXBpbmcuVHlwZVZhcignVCcpCisgICAgY2xhc3MgRyhzaXgud2l0aF9t
ZXRhY2xhc3MoTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0pKToKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0p
KToKKyAgICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHW2ludF0gaXMgbm90
IEdbR1tpbnRdXQorICAgIGFzc2VydCBHQVtpbnRdIGlzIG5vdCBHQVtHQVtpbnRdXQorICAgIGFz
c2VydCBHLl9fYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWMsKQorICAgIGFzc2VydCBHLl9fb3Jp
Z19iYXNlc19fID09ICh0eXBpbmcuR2VuZXJpY1tUXSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBp
Zigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykiKQorZGVmIHRlc3Rfd2l0aF9tZXRhY2xh
c3NfcGVwXzU2MCgpOgorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAgICBj
bGFzcyBBOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgQjoKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEZha2U6CisgICAgICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwgYmFzZXMpOgorICAg
ICAgICAgICAgcmV0dXJuIChBLCBCKQorICAgIGZha2UgPSBGYWtlKCkKKyAgICBjbGFzcyBHKHNp
eC53aXRoX21ldGFjbGFzcyhNZXRhLCBmYWtlKSk6CisgICAgICAgIHBhc3MKKyAgICBjbGFzcyBH
QShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIGZha2UpKToKKyAgICAgICAgcGFzcwor
ICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoR0Es
IGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAoQSwgQikKKyAgICBhc3Nl
cnQgRy5fX29yaWdfYmFzZXNfXyA9PSAoZmFrZSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBpZigi
c3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMCkiKQogZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3Nf
cHJlcGFyZSgpOgogICAgICIiIlRlc3QgdGhhdCB3aXRoX21ldGFjbGFzcyBjYXVzZXMgTWV0YS5f
X3ByZXBhcmVfXyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMuIiIiCiAK
QEAgLTg1Nyw3ICs4OTcsNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0
IE15U2xvdHMuX19zbG90c19fID09IFsiYSIsICJiIl0KICAgICBpbnN0YW5jZSA9IE15U2xvdHMo
KQogICAgIGluc3RhbmNlLmEgPSAiZm9vIgotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0
dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKIAogICAgICMgVGVz
dCBhIGNsYXNzIHdpdGggc3RyaW5nIGZvciBzbG90cy4KICAgICBjbGFzcyBNeVN0cmluZ1Nsb3Rz
KG9iamVjdCk6CkBAIC04NjYsOCArOTA2LDggQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygpOgog
ICAgIGFzc2VydCBNeVN0cmluZ1Nsb3RzLl9fc2xvdHNfXyA9PSAiYWIiCiAgICAgaW5zdGFuY2Ug
PSBNeVN0cmluZ1Nsb3RzKCkKICAgICBpbnN0YW5jZS5hYiA9ICJmb28iCi0gICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIsICJiYXoiKQotICAg
IHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImIiLCAi
YmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5j
ZSwgImEiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRy
LCBpbnN0YW5jZSwgImIiLCAiYmF6IikKIAogICAgIGNsYXNzIE15U2xvdHNXZWFrcmVmKG9iamVj
dCk6CiAgICAgICAgIF9fc2xvdHNfXyA9ICJfX3dlYWtyZWZfXyIsCkBAIC04NzUsNyArOTE1LDI3
IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgdHlwZShNeVNsb3RzV2Vh
a3JlZikgaXMgTWV0YQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkp
IikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpIikK
K2RlZiB0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkKCk6CisgICAgIyBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2lzc3Vlcy8yNTkKKyAgICBjbGFz
cyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBBOgorICAgICAgICBjbGFz
cyBCOiBwYXNzCisKKyAgICBleHBlY3RlZCA9ICd0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkLjxs
b2NhbHM+LkEuQicKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09IGV4cGVjdGVkCisK
KyAgICBjbGFzcyBBOgorICAgICAgICBAc2l4LmFkZF9tZXRhY2xhc3MoTWV0YSkKKyAgICAgICAg
Y2xhc3MgQjogcGFzcworCisgICAgYXNzZXJ0IEEuQi5fX3F1YWxuYW1lX18gPT0gZXhwZWN0ZWQK
KworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSBv
ciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkpIikKIGRlZiB0ZXN0X2Fz
c2VydENvdW50RXF1YWwoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0Q291bnRFcXVhbCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtODg3LDcgKzk0Nyw3IEBA
IGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBUZXN0QXNzZXJ0Q291bnRFcXVhbCgn
dGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIGNsYXNzIFRlc3RBc3Nl
cnRSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAt
ODk5LDcgKzk1OSw3IEBAIGRlZiB0ZXN0X2Fzc2VydFJlZ2V4KCk6CiAgICAgVGVzdEFzc2VydFJl
Z2V4KCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9u
X2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2lu
Zm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2VydFJhaXNlc1JlZ2V4KCk6CiAgICAgY2xh
c3MgVGVzdEFzc2VydFJhaXNlc1JlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVm
IHRlc3Qoc2VsZik6CkBAIC05MzIsMyArOTkyLDYxIEBAIGRlZiB0ZXN0X3B5dGhvbl8yX3VuaWNv
ZGVfY29tcGF0aWJsZSgpOgogICAgICAgICBhc3NlcnQgc3RyKG15X3Rlc3QpID09IHNpeC51KCJo
ZWxsbyIpCiAKICAgICBhc3NlcnQgZ2V0YXR0cihzaXgubW92ZXMuYnVpbHRpbnMsICdieXRlcycs
IHN0cikobXlfdGVzdCkgPT0gc2l4LmIoImhlbGxvIikKKworCitjbGFzcyBFbnN1cmVUZXN0czoK
KworICAgICMgZ3Jpbm5pbmcgZmFjZSBlbW9qaQorICAgIFVOSUNPREVfRU1PSkkgPSBzaXgudSgi
XFUwMDAxRjYwMCIpCisgICAgQklOQVJZX0VNT0pJID0gYiJceGYwXHg5Zlx4OThceDgwIgorCisg
ICAgZGVmIHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVf
c3RyKDgpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfYW5kX2VuY29kaW5nKHNlbGYpOgorICAgICAg
ICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSdsYXRpbi0x
JywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVu
Y29kZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9F
TU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgICBkZWYgdGVz
dF9lbnN1cmVfYmluYXJ5X3JhaXNlKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9i
aW5hcnkoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0
JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0
cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VN
T0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAj
IFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0g
c2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBieXRlcworICAgICAgICAg
ICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFuZCBpc2lu
c3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBieXRlcykKKyAgICAgICAgICAgICMgUFkzOiBieXRl
cyAtPiBieXRlcworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgYnl0ZXMpCisKKyAg
ICBkZWYgdGVzdF9lbnN1cmVfc3RyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfc3RyKHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJy
b3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9zdHIo
c2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0JykKKyAg
ICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0cgorICAg
ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFu
ZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAjIFBZMjog
c3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2Vy
dCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2Uo
Y29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkzOiBieXRlcyAtPiBzdHIK
KyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYuVU5JQ09ERV9FTU9K
SSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorCisgICAgZGVmIHRlc3Rf
ZW5zdXJlX3RleHQoc2VsZik6CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3Vy
ZV90ZXh0KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJp
Y3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV90ZXh0KHNlbGYuQklO
QVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGlm
IHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiB1bmljb2RlCisgICAgICAg
ICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBp
c2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1bmljb2RlKQorICAgICAgICAgICAgIyBQWTI6
IHN0ciAtPiB1bmljb2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBz
ZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHVuaWNv
ZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzogc3RyIC0+IHN0cgorICAgICAg
ICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09ERV9FTU9KSSBhbmQg
aXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAgICAgIyBQWTM6IGJ5
dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5V
TklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9n
CmluZGV4IDcwOTRkZjgyMzQyMmVkNDgzMjAzZDU2N2EwN2I1YjhhNDIxMTkzMWQuLmYwZjIyY2Ey
ZDZjMzRjMzVhMzM4YWUxN2EyNzEyNDIxYTM1NWVjZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCkBAIC0xNyw3ICsxNyw2
IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVB
RE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Rv
eC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RveC5pbmkKaW5kZXggZTg2NzNkYjBhNjlhZTQ2OTVlN2IxZmExNTJjNTMzYWExYjBmOThkMS4u
YmJlYzFhZmJiNmRkMmZkNmMwNDIyZWQ4OTNlMDlhYTJmYzlmMzhjMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94
LmluaQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkz
NyxweXB5LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkzNixweTM3fS1teXB5
CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5MzUscHkzNixweTM3
LHB5Mzh9LWZsYWtlOCx7cHkzNSxweTM2LHB5MzcscHkzOH0tbXlweQogc2tpcHNkaXN0PVRydWUK
K3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQpA
QCAtMTQsNyArMTUsNyBAQCBkZXBzID0KICAganNvbi1lCiAgIGpzb25zY2hlbWEKIAotY29tbWFu
ZHMgPSBweXRlc3Qge3Bvc2FyZ3N9Citjb21tYW5kcyA9IHB5dGVzdCAtLWNvdj10b29scyAtLWNv
di1yZXBvcnQ9dGVybSB7cG9zYXJnc30KIAogcGFzc2VudiA9CiAgIEhZUE9USEVTSVNfUFJPRklM
RQpAQCAtMjcsMTUgKzI4LDE5IEBAIGNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17
dG94aW5pZGlyfS9weTI3LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzUtZmxh
a2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4
IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citj
b21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5p
bmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzYtZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5p
ZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVu
ZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52
OnB5MzctZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRz
ID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bv
c2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkz
LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CisKK1t0ZXN0ZW52OnB5MzgtZmxha2U4XQorZGVwcyA9IC1y
cmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZp
Zz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNS1t
eXB5XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC01NCwzICs1OSw5IEBAIGRl
cHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAogY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4K
IGNvbW1hbmRzID0KICAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0t
bm8taW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0
b29scy5naXRpZ25vcmUKKworW3Rlc3RlbnY6cHkzOC1teXB5XQorZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX215cHkudHh0CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29tbWFuZHMgPQorICBt
eXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAt
LXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKaW5kZXggYzRjMWJjMjVjOGZkNDg5MzQ2M2I0
ZTEzYmQ4YjU0N2U2N2ZjZWM2Ny4uYzY3MjI5NDA2YmFhMjczZTQ3YzhmOGU0ZWNiZTc0NDlhY2Q5
ZjljNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCkBAIC0yMCw3ICsyMCw3IEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTgu
aW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXRlc3QuaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRy
aXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQppbmRleCAw
YzViYmZmNTYyOTg2OGZkYzQ4YTFhNDFjZjg4MmZhYmU1NjE3YzFiLi42NThlZDBlMDBmOGEzNDQ5
NDE2NzNlZWQ2NzFiYTlkZTMxNzg1OGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKQEAgLTM3MywxMCArMzczLDggQEAgY2xh
c3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICBwb3J0LAogICAgICAgICAgICAg
ICAgICB1cmxfcHJlZml4PSIvIiwKICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPU5vbmUs
Ci0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVBy
b3RvY29sKAotICAgICAgICAgICAgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCwgdGltZW91dD10aW1l
b3V0KQorICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVByb3RvY29s
KGhvc3QsIHBvcnQsIHVybF9wcmVmaXgpCiAgICAgICAgIHNlbGYucmVxdWVzdGVkX2NhcGFiaWxp
dGllcyA9IGNhcGFiaWxpdGllcwogICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IE5vbmUKICAg
ICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNDQ2LDcgKzQ0NCw3IEBAIGNsYXNzIFNl
c3Npb24ob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2Vzc2lv
bl9pZCA9IE5vbmUKIAotICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmwsIGJv
ZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gdGhlIHJlbW90ZSBlbmQgYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgogCkBAIC00NjcsNyAr
NDY1LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYu
dHJhbnNwb3J0LnNlbmQoCiAgICAgICAgICAgICBtZXRob2QsIHVybCwgYm9keSwKICAgICAgICAg
ICAgIGVuY29kZXI9cHJvdG9jb2wuRW5jb2RlciwgZGVjb2Rlcj1wcm90b2NvbC5EZWNvZGVyLAot
ICAgICAgICAgICAgc2Vzc2lvbj1zZWxmKQorICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLCB0aW1l
b3V0PXRpbWVvdXQpCiAKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDoKICAgICAg
ICAgICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC00OTUsNyArNDkz
LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiB2YWx1ZQogCi0g
ICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJpLCBib2R5PU5vbmUp
OgorICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gYW4gZXN0YWJsaXNoZWQgc2Vzc2lvbiBhbmQgdmFsaWRhdGUgaXRzIHN1Y2Nlc3MuCiAKQEAg
LTUxMiw3ICs1MTAsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgICAgICBhbiBl
cnJvci4KICAgICAgICAgIiIiCiAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oInNlc3Np
b24vJXMvIiAlIHNlbGYuc2Vzc2lvbl9pZCwgdXJpKQotICAgICAgICByZXR1cm4gc2VsZi5zZW5k
X2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHkpCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29t
bWFuZChtZXRob2QsIHVybCwgYm9keSwgdGltZW91dCkKIAogICAgIEBwcm9wZXJ0eQogICAgIEBj
b21tYW5kCkBAIC03MzcsNiArNzM1LDEwIEBAIGNsYXNzIEVsZW1lbnQob2JqZWN0KToKICAgICBk
ZWYgc2VsZWN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21t
YW5kKCJHRVQiLCAic2VsZWN0ZWQiKQogCisgICAgQGNvbW1hbmQKKyAgICBkZWYgc2NyZWVuc2hv
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIs
ICJzY3JlZW5zaG90IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBu
YW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJh
dHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCAxOGEzZDUyYzhhM2I1MzdiYTc1ZDQ4
N2ZkN2Y2YzVjZGUyMDZlYzNlLi5jODExZjZmMjZkYjc5MDhjYWU1MjhkMDRkMjVkNjg4Mjc4NGU3
NGExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJp
dmVyL3Byb3RvY29sLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQganNvbgogCiBpbXBvcnQgd2Vi
ZHJpdmVyCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKKwogCiAiIiJXZWJEcml2ZXIgd2ly
ZSBwcm90b2NvbCBjb2RlY3MuIiIiCiAKQEAgLTM5LDUgKzQxLDUgQEAgY2xhc3MgRGVjb2Rlcihq
c29uLkpTT05EZWNvZGVyKToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3Qp
IGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoKICAgICAgICAgICAg
IHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24p
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAgICAgICAgIHJl
dHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBwYXlsb2FkLml0ZXJpdGVt
cygpfQorICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29rKHYpIGZvciBrLCB2
IGluIGl0ZXJpdGVtcyhwYXlsb2FkKX0KICAgICAgICAgcmV0dXJuIHBheWxvYWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5
CmluZGV4IDMyYmEzMWEyYWU5YTk5NmE1YzU3ZmQwNDA2MTI5M2YzMTdlNWJmMDQuLmY4MTdlYzgx
YTk2ZmI5M2NjNWM2MDE1NGYwNTdkNzJlOTgzNzU2OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSwxMiAr
MSwxMiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzZWxlY3QKKworZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZSwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5l
Y3Rpb24KIGZyb20gc2l4Lm1vdmVzLnVybGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudCBhcyBodHRwbGliCiAKIGZyb20gLiBpbXBv
cnQgZXJyb3IKIAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCiAiIiJJbXBsZW1lbnRzIEhU
VFAgdHJhbnNwb3J0IGZvciB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wuIiIiCiAKIApAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICMg
PT4gd2ViZHJpdmVyLkVsZW1lbnQKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0LCB1cmxfcHJlZml4PSIvIiwgdGltZW91dD1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIpOgogICAgICAgICAiIiIKICAgICAg
ICAgQ29uc3RydWN0IGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSByZW1vdGUg
c2VydmVyLgogCkBAIC04NSw5ICs4NSw4IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0
KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAg
ICAgICAgIHNlbGYudXJsX3ByZWZpeCA9IHVybF9wcmVmaXgKLQogICAgICAgICBzZWxmLl9jb25u
ID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dAorICAgICAgICBzZWxmLl9s
YXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToK
ICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMDIsMTEgKzEwMSwxMSBAQCBjbGFzcyBIVFRQV2ly
ZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICIiIkdldHMgdGhlIGN1cnJlbnQgSFRUUCBjb25u
ZWN0aW9uLCBvciBsYXppbHkgY3JlYXRlcyBvbmUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
b25uOgogICAgICAgICAgICAgY29ubl9rd2FyZ3MgPSB7fQotICAgICAgICAgICAgaWYgc2VsZi5f
dGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjb25uX2t3YXJnc1sidGltZW91
dCJdID0gc2VsZi5fdGltZW91dAotCi0gICAgICAgICAgICBzZWxmLl9jb25uID0gaHR0cGxpYi5I
VFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3Ry
aWN0PVRydWUsICoqY29ubl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBub3QgUFkzOgorICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJzdHJpY3QiXSA9IFRydWUKKyAgICAgICAgICAgICMgV2Ug
YXJlIG5vdCBzZXR0aW5nIGFuIEhUVFAgdGltZW91dCBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IHdo
ZW4gdGhlCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gaXRzIGNyZWF0ZWQuIFRoZSBzZW5kIG1l
dGhvZCBoYXMgYSB0aW1lb3V0IHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIHNlbGYuX2Nv
bm4gPSBIVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QsIHNlbGYucG9ydCwgKipjb25uX2t3YXJncykK
IAogICAgICAgICByZXR1cm4gc2VsZi5fY29ubgogCkBAIC0xMjQsNiArMTIzLDcgQEAgY2xhc3Mg
SFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgIGhlYWRlcnM9Tm9uZSwKICAg
ICAgICAgICAgICBlbmNvZGVyPWpzb24uSlNPTkVuY29kZXIsCiAgICAgICAgICAgICAgZGVjb2Rl
cj1qc29uLkpTT05EZWNvZGVyLAorICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAg
ICAgICAqKmNvZGVjX2t3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBTZW5kIGEgY29tbWFu
ZCB0byB0aGUgcmVtb3RlLgpAQCAtMTcyLDEwICsxNzIsMTggQEAgY2xhc3MgSFRUUFdpcmVQcm90
b2NvbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZhaWxlZCB0
byBlbmNvZGUgcmVxdWVzdCBib2R5IGFzIEpTT046XG4iCiAgICAgICAgICAgICAgICAgICAgICIl
cyIgJSBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKIAotICAgICAgICByZXNwb25zZSA9IHNl
bGYuX3JlcXVlc3QobWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnMpCisgICAgICAgICMgV2hl
biB0aGUgdGltZW91dCB0cmlnZ2VycywgdGhlIFRlc3RSdW5uZXJNYW5hZ2VyIHRocmVhZCB3aWxs
IHJldXNlCisgICAgICAgICMgdGhpcyBjb25uZWN0aW9uIHRvIGNoZWNrIGlmIHRoZSBXZWJEcml2
ZXIgaXRzIGFsaXZlIGFuZCB3ZSBtYXkgZW5kCisgICAgICAgICMgcmFpc2luZyBhbiBodHRwbGli
LkNhbm5vdFNlbmRSZXF1ZXN0IGV4Y2VwdGlvbiBpZiB0aGUgV2ViRHJpdmVyIGlzCisgICAgICAg
ICMgbm90IHJlc3BvbmRpbmcgYW5kIHRoaXMgaHR0cGxpYi5yZXF1ZXN0KCkgY2FsbCBpcyBibG9j
a2VkIG9uIHRoZQorICAgICAgICAjIHJ1bm5lciB0aHJlYWQuIFdlIHVzZSB0aGUgYm9vbGVhbiBi
ZWxvdyB0byBjaGVjayBmb3IgdGhhdCBhbmQgcmVzdGFydAorICAgICAgICAjIHRoZSBjb25uZWN0
aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQg
PSBUcnVlCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRob2QsIHVyaSwgcGF5
bG9hZCwgaGVhZGVycywgdGltZW91dD1Ob25lKQorICAgICAgICBzZWxmLl9sYXN0X3JlcXVlc3Rf
aXNfYmxvY2tlZCA9IEZhbHNlCiAgICAgICAgIHJldHVybiBSZXNwb25zZS5mcm9tX2h0dHAocmVz
cG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipjb2RlY19rd2FyZ3MpCiAKLSAgICBkZWYgX3JlcXVl
c3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIF9y
ZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUsIHRpbWVvdXQ9
Tm9uZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90eXBlKToKICAgICAg
ICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCkBAIC0xODUsMTAgKzE5
MywyMyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAKICAgICAgICAgdXJsID0g
c2VsZi51cmwodXJpKQogCi0gICAgICAgIGlmIHNlbGYuX2hhc191bnJlYWRfZGF0YSgpOgorICAg
ICAgICBpZiBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCBvciBzZWxmLl9oYXNfdW5yZWFk
X2RhdGEoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBwYXlsb2FkLCBoZWFkZXJzKQotICAgICAgICByZXR1
cm4gc2VsZi5jb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKKworICAgICAgICAjIHRpbWVvdXQgZm9y
IHJlcXVlc3QgaGFzIHRvIGJlIHNldCBqdXN0IGJlZm9yZSBjYWxsaW5nIGh0dHBsaWIuZ2V0cmVz
cG9uc2UoKQorICAgICAgICAjIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgcmVzdG9yZWQganVzdCBh
ZnRlciB0aGF0LCBldmVuIG9uIGV4Y2VwdGlvbiByYWlzZWQKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c190aW1lb3V0ID0gc2Vs
Zi5fY29ubi5nZXR0aW1lb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uLnNldHRpbWVv
dXQodGltZW91dCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5jb25uZWN0aW9uLmdldHJl
c3BvbnNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQ6CisgICAg
ICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0aW1lb3V0KHByZXZpb3VzX3RpbWVvdXQpCisKKyAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgX2hhc191bnJlYWRfZGF0YShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4gYW5kIHNlbGYuX2Nvbm4uc29jayBhbmQgc2VsZWN0
LnNlbGVjdChbc2VsZi5fY29ubi5zb2NrXSwgW10sIFtdLCAwKVswXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9p
ZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2FuZHJvaWQucHkKaW5kZXggNTFkZWI3MWUzMTY1MzgxNDhlMDZiMTQ2YmNhNzU1NWZiN2Iw
NDZkZi4uNzQ0ZTEzNGQzODI2ZWFmZmViYTYzODc3MTNhMmNiMTMyYWUxYTlkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
YW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CkBAIC04OSw4ICs4OSw4IEBAIGRlZiBpbnN0YWxsX2Fu
ZHJvaWRfcGFja2FnZXMobG9nZ2VyLCBzZGtfcGF0aCwgbm9fcHJvbXB0PUZhbHNlKToKIAogICAg
ICNUT0RPOiBOb3Qgc3VyZSB3aGF0J3MgcmVhbGx5IG5lZWRlZCBoZXJlCiAgICAgcGFja2FnZXMg
PSBbInBsYXRmb3JtLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAiYnVpbGQtdG9vbHM7MjguMC4z
IiwKLSAgICAgICAgICAgICAgICAicGxhdGZvcm1zO2FuZHJvaWQtMjgiLAorICAgICAgICAgICAg
ICAgICJidWlsZC10b29sczsyOS4wLjMiLAorICAgICAgICAgICAgICAgICJwbGF0Zm9ybXM7YW5k
cm9pZC0yOSIsCiAgICAgICAgICAgICAgICAgImVtdWxhdG9yIl0KIAogICAgICMgVE9ETzogbWFr
ZSB0aGlzIHdvcmsgbm9uLWludGVybmFjdGl2ZWx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nl
ci5weQppbmRleCAzZWU5OGQ5NTllYzViZWZjNThiODg0ZTBlYzUzODVkNTU0YmM4NzI1Li4zNjZk
Yzc4MWQ5MGVlMjFiODIwYjkzMzRjNjllZGUyYzQ1MWNiNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2Jyb3dzZXIucHkKQEAgLTYsMjAgKzYsMTkgQEAgaW1wb3J0IHN0YXQKIGltcG9ydCBlcnJu
bwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVybHBhcnNlCiBm
cm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5k
X2V4ZWN1dGFibGUKIAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxp
dAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gdXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIs
IHVuemlwCitmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwgdW56aXAKIAogdW5h
bWUgPSBwbGF0Zm9ybS51bmFtZSgpCiAKICMgdGhlIHJvb3RVcmwgZm9yIHRoZSBmaXJlZm94LWNp
IGRlcGxveW1lbnQgb2YgVGFza2NsdXN0ZXIKLSMgKGFmdGVyIE5vdmVtYmVyIDksIGh0dHBzOi8v
ZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5tb3ppbGxhLmNvbS8pCi1GSVJFRk9YX0NJX1JPT1RfVVJM
ID0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JworRklSRUZPWF9DSV9ST09UX1VSTCA9ICdodHRw
czovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20nCiAKIAogZGVmIF9nZXRfZmls
ZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CkBAIC00MSw2ICs0MCwyMyBAQCBkZWYgaGFu
ZGxlX3JlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBleGMpOgogICAgICAgICByYWlzZQogCiAK
K2RlZiBnZXRfZXh0KGZpbGVuYW1lKToKKyAgICAiIiJHZXQgdGhlIGV4dGVuc2lvbiBmcm9tIGEg
ZmlsZW5hbWUgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciAudGFyLmZvbyIiIgorICAgIG5hbWUs
IGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgaWYgbmFtZS5lbmRzd2l0aCgi
LnRhciIpOgorICAgICAgICBleHQgPSAiLnRhciVzIiAlIGV4dAorICAgIHJldHVybiBleHQKKwor
CitkZWYgZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KGluZGV4LCBwYXRoKToKKyAgICBUQ19JTkRF
WF9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL2luZGV4L3YxLyIKKworICAgIHJl
c3AgPSBnZXQoVENfSU5ERVhfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJSAoaW5kZXgs
IHBhdGgpKQorICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisKKyAgICByZXR1cm4gcmVzcAor
CisKIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQog
CkBAIC00OCw4ICs2NCwxMyBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
bG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZG93bmxvYWQo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgotICAgICAgICAiIiJEb3dubG9hZCBhIHBh
Y2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlciIiIgorICAgIGRlZiBkb3dubG9hZChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgorICAgICAgICAiIiJE
b3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlcgorICAgICAgICA6
cGFyYW0gZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHB1dCB0aGUgZG93bG9hZGVkIHBhY2th
Z2UKKyAgICAgICAgOnBhcmFtIGNoYW5uZWw6IEJyb3dzZXIgY2hhbm5lbCB0byBkb3dubG9hZAor
ICAgICAgICA6cGFyYW0gcmVuYW1lOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBw
YWNrYWdlOyB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGlz
IHByZXNlcnZlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAog
CiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0xMzMsNyArMTU0LDcgQEAgY2xhc3MgRmlyZWZveChC
cm93c2VyKToKIAogICAgICAgICByZXR1cm4gZGVzdAogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHByb2R1
Y3QgPSB7CiAgICAgICAgICAgICAibmlnaHRseSI6ICJmaXJlZm94LW5pZ2h0bHktbGF0ZXN0LXNz
bCIsCiAgICAgICAgICAgICAiYmV0YSI6ICJmaXJlZm94LWJldGEtbGF0ZXN0LXNzbCIsCkBAIC0x
NjEsNyArMTgyLDcgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0
dHBzOi8vZG93bmxvYWQubW96aWxsYS5vcmcvP3Byb2R1Y3Q9JXMmb3M9JXMmbGFuZz1lbi1VUyIg
JSAocHJvZHVjdFtjaGFubmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NfYnVpbGRzW29zX2tl
eV0pCiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIEZpcmVmb3ggZnJvbSAl
cyIgJSB1cmwpCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsKQorICAgICAgICByZXNw
ID0gZ2V0KHVybCkKIAogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKIApAQCAtMTcyLDExICsxOTMs
MTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lc1swXQogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZp
bGVuYW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlb
MV0KKyAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxl
bmFtZSA9ICJmaXJlZm94LnRhci5iejIiCiAKKyAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAg
ICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAocmVuYW1lLCBnZXRfZXh0KGZpbGVuYW1lKSkKKwogICAg
ICAgICBpbnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKIAogICAg
ICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CkBAIC0zNjMsMTQgKzM4
NywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICB0YWdzID0gY2FsbCgiZ2l0
IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAiLS1yZWZzIiwKICAgICAgICAgICAgICAgICAgICAg
Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyLmdpdCIpCiAgICAgICAgIHJl
bGVhc2VfcmUgPSByZS5jb21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4oXGQrKVwuKFxkKyki
KQotICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IDAKKyAgICAgICAgbGF0ZXN0X3JlbGVhc2UgPSAo
MCwwLDApCiAgICAgICAgIGZvciBpdGVtIGluIHRhZ3Muc3BsaXQoIlxuIik6CiAgICAgICAgICAg
ICBtID0gcmVsZWFzZV9yZS5tYXRjaChpdGVtKQogICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdyb3VwcygpXQorICAg
ICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gbS5ncm91
cHMoKSkKICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID4gbGF0ZXN0X3JlbGVhc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGxhdGVzdF9yZWxlYXNlID0gdmVyc2lvbgotICAgICAgICBhc3NlcnQg
bGF0ZXN0X3JlbGVhc2UgIT0gMAorICAgICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2UgIT0gKDAs
MCwwKQogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKICAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgpAQCAtMzk3LDMy
ICs0MjEsMzIgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgcmV0dXJuIGZpbmRf
ZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyIikpCiAKICAgICBkZWYg
aW5zdGFsbF9nZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgotICAgICAgICBpbXBvcnQg
dGFyZmlsZQotICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKICAgICAgICAgc2VsZi5sb2dnZXIu
aW5mbygiQXR0ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5pZ2h0bHkiKQorCisg
ICAgICAgIHBsYXRmb3JtX2JpdHMgPSAoIjY0IiBpZiB1bmFtZVs0XSA9PSAieDg2XzY0IiBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgKCIzMiIgaWYgc2VsZi5wbGF0Zm9ybSA9PSAid2lu
IiBlbHNlICIiKSkKKyAgICAgICAgdGNfcGxhdGZvcm0gPSAiJXMlcyIgJSAoc2VsZi5wbGF0Zm9y
bSwgcGxhdGZvcm1fYml0cykKKworICAgICAgICBhcmNoaXZlX2V4dCA9ICIuemlwIiBpZiB1bmFt
ZVswXSA9PSAiV2luZG93cyIgZWxzZSAiLnRhci5neiIKKyAgICAgICAgYXJjaGl2ZV9uYW1lID0g
InB1YmxpYy9nZWNrb2RyaXZlciVzIiAlIGFyY2hpdmVfZXh0CisKICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcyA9IG1vemRvd25sb2FkLkRhaWx5U2NyYXBlcihicmFuY2g9Im1vemlsbGEtY2Vu
dHJhbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bj0iY29tbW9uLnRlc3RzLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uPWRlc3QpCi0gICAgICAgICAgICBwYWNrYWdlX3BhdGggPSBz
LmRvd25sb2FkKCkKLSAgICAgICAgZXhjZXB0IG1vemRvd25sb2FkLmVycm9ycy5Ob3RGb3VuZEVy
cm9yOgorICAgICAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rlcl9hcnRpZmFjdCgKKyAgICAg
ICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5nZWNrb2RyaXZlci4l
cyIgJSB0Y19wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICBhcmNoaXZlX25hbWUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJHZWNrb2Ry
aXZlciBkb3dubG9hZCBmYWlsZWQiKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZXhlX3N1ZmZpeCA9ICIuZXhlIiBpZiB1bmFtZVswXSA9PSAiV2luZG93
cyIgZWxzZSAiIgotICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4ocGFja2FnZV9wYXRoLCAi
ciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtZW1i
ZXIgPSBmLmdldG1lbWJlcigiYmluJXNnZWNrb2RyaXZlciVzIiAlIChvcy5wYXRoLnNlcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlX3N1ZmZpeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAjIFJlbW92ZSBiaW4vIGZy
b20gdGhlIHBhdGguCi0gICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG1lbWJlci5uYW1lKQotICAgICAgICAgICAgICAgIGYuZXh0cmFjdGFsbChtZW1iZXJzPVtt
ZW1iZXJdLCBwYXRoPWRlc3QpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihk
ZXN0LCBtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkV4dHJhY3Rl
ZCBnZWNrb2RyaXZlciB0byAlcyIgJSBwYXRoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgb3MudW5saW5rKHBhY2thZ2VfcGF0aCkKKyAgICAgICAgaWYgYXJjaGl2ZV9leHQgPT0gIi56
aXAiOgorICAgICAgICAgICAgdW56aXAocmVzcC5yYXcsIGRlc3QpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB1bnRhcihyZXNwLnJhdywgZGVzdCkKKworICAgICAgICBleGVfZXh0ID0gIi5l
eGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyJXMiICUgZXhlX2V4dCkKKworICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJFeHRyYWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUgcGF0aCkKIAogICAg
ICAgICByZXR1cm4gcGF0aAogCkBAIC00NDEsMzAgKzQ2NSwxOSBAQCBjbGFzcyBGaXJlZm94QW5k
cm9pZChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImZpcmVmb3hfYW5kcm9pZCIKICAgICByZXF1
aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IgogCi0gICAgZGVmIGRvd25sb2Fk
KHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgaWYgZGVzdCBp
cyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAogCi0gICAgICAgIGlmIEZJUkVGT1hf
Q0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAgICAgICAgICAgICMg
Tk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgTm92ZW1iZXIgOSwgMjAx
OQotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJodHRwczovL3F1ZXVlLnRhc2tjbHVzdGVy
Lm5ldC92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gImh0dHBzOi8vaW5kZXgudGFz
a2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFRDX1FVRVVFX0JB
U0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvcXVldWUvdjEvIgotICAgICAgICAgICAg
VENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9pbmRleC92MS8iCi0K
LQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX0lOREVYX0JBU0UgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3Qu
bW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCi0gICAgICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1
cygpCi0gICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkKLSAgICAgICAgdGFza19pZCA9IGluZGV4
WyJ0YXNrSWQiXQogCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQoVENfUVVFVUVfQkFTRSAr
ICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKSkKLSAgICAg
ICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rl
cl9hcnRpZmFjdCgKKyAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxhLWNlbnRyYWwubGF0ZXN0
Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiLAorICAgICAgICAgICAgInB1YmxpYy9idWlsZC9n
ZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKIAotICAgICAgICBhcGtfcGF0aCA9IG9zLnBhdGgu
am9pbihkZXN0LCAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCisgICAgICAgIGZpbGVuYW1l
ID0gImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiCisgICAgICAgIGlmIHJlbmFtZToKKyAgICAg
ICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChmaWxlbmFtZSlbMV0p
CisgICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGZpbGVuYW1lKQogCiAgICAg
ICAgIHdpdGggb3BlbihhcGtfcGF0aCwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUo
cmVzcC5jb250ZW50KQpAQCAtNTAwLDcgKzUxMyw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICBwcm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRz
X2Nocm9tZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVs
PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwg
cmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC02NTgsNyArNjcx
LDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJhc2UoQnJvd3Nlcik6CiAgICAgICAgIHN1cGVyKENo
cm9tZUFuZHJvaWRCYXNlLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAgICAgIHNlbGYuZGV2
aWNlX3NlcmlhbCA9IE5vbmUKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTc2Niw3
ICs3NzksNyBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJjaHJv
bWVfaW9zIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hyb21lX2lvcy50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04MDIsNyArODE1LDcgQEAgY2xhc3Mg
T3BlcmEoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlVuYWJsZSB0byBm
aW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODc0LDcgKzg4Nyw3IEBAIGNsYXNzIEVkZ2VDaHJvbWl1
bShCcm93c2VyKToKICAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJpdmVyIgogICAgIHJl
cXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04ODgsMTEgKzkwMSwxMyBAQCBjbGFzcyBFZGdlQ2hyb21p
dW0oQnJvd3Nlcik6CiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAg
ICMgVXNlIHBhdGhzIGZyb20gZGlmZmVyZW50IEVkZ2UgY2hhbm5lbHMgc3RhcnRpbmcgd2l0aCBS
ZWxlYXNlXEJldGFcRGV2XENhbmFyeQogICAgICAgICAgICAgICAgIHdpbnBhdGhzID0gW29zLnBh
dGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZVxcQXBwbGlj
YXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMo
IiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNhdGlv
biIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZ
U1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxcQXBwbGljYXRp
b24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIERldlxcQXBwbGljYXRp
b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNh
dGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygi
JFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxc
QXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFu
ZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdl
IERldlxcQXBwbGljYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZSBTeFNcXEFwcGxp
Y2F0aW9uIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2Vy
KCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBwbGljYXRpb24iKV0K
ICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKGJpbmFyeW5hbWUsIG9zLnBh
dGhzZXAuam9pbih3aW5wYXRocykpCiAgICAgICAgIGlmIHNlbGYucGxhdGZvcm0gPT0gIm1hY29z
IjoKICAgICAgICAgICAgIGJpbmFyeW5hbWUgPSAiTWljcm9zb2Z0IEVkZ2UgQ2FuYXJ5IgpAQCAt
OTczLDcgKzk4OCw3IEBAIGNsYXNzIEVkZ2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJlZGdl
IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMDA3LDcgKzEwMjIsNyBAQCBjbGFzcyBJbnRlcm5ldEV4
cGxvcmVyKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiaWUiCiAgICAgcmVxdWlyZW1lbnRzID0g
InJlcXVpcmVtZW50c19pZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0x
MDM1LDcgKzEwNTAsNyBAQCBjbGFzcyBTYWZhcmkoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YWZhcmkiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYWZhcmkudHh0IgogCi0g
ICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTEwNSwxNCArMTEyMCwxNSBAQCBjbGFzcyBT
ZXJ2byhCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQuc2Vydm8ub3Jn
L25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRlbnNpb24pCiAgICAg
ICAgIHJldHVybiBnZXQodXJsKQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwg
Y2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRlc3QgaXMgTm9uZToK
ICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAogICAgICAgICByZXNwID0gc2VsZi5fZ2V0KGRl
c3QsIGNoYW5uZWwpCiAgICAgICAgIF8sIGV4dGVuc2lvbiwgXyA9IHNlbGYucGxhdGZvcm1fY29t
cG9uZW50cygpCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAic2Vydm8t
bGF0ZXN0JXMiICUgKGV4dGVuc2lvbiwpKSwgInciKSBhcyBmOgorICAgICAgICBmaWxlbmFtZSA9
IHJlbmFtZSBpZiByZW5hbWUgaXMgbm90IE5vbmUgZWxzZSAic2Vydm8tbGF0ZXN0IgorICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICIlcyVzIiAlIChmaWxlbmFtZSwgZXh0ZW5z
aW9uLCkpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHJlc3AuY29udGVudCkKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgpAQCAt
MTE1OSw3ICsxMTc1LDcgQEAgY2xhc3MgU2F1Y2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YXVjZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhdWNlLnR4dCIKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExODQsNyArMTIwMCw3IEBAIGNsYXNzIFdlYktp
dChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC0xMjUwLDcgKzEyNjYsNyBAQCBjbGFzcyBFcGlwaGFueShCcm93c2VyKToKICAgICBwcm9kdWN0
ID0gImVwaXBoYW55IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZXBpcGhhbnku
dHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1O
b25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNv
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L2NvbW1hbmRzLmpzb24KaW5kZXggNjBmZTE2MjFhZjBkZWNkMGZhYTQzNGYyNmRjYmE5OTUxNTQx
NzNlNy4uYTQ3YWI0MGQ3Mjg0N2Q1ZjUzNmUwYWMyZTAyZWIzZmUwZmVhMjMzYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
Y29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCkBAIC01Miw3ICs1Miw2IEBACiAgICAgInBh
cnNlciI6ICJnZXRfcGFyc2VyIiwKICAgICAiaGVscCI6ICJJbnN0YWxsIGJyb3dzZXIgY29tcG9u
ZW50cyIsCiAgICAgImluc3RhbGwiOiBbCi0gICAgICAibW96ZG93bmxvYWQiLAogICAgICAgIm1v
emluc3RhbGwiCiAgICAgXQogICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKaW5k
ZXggMjQ5MTVmMGM5OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4Yy4uNmViNTlmODE0YmYw
OGQxMzlkNTk3YTRiNGIyNmE3ZDdhYTkyMGZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0
YWxsLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYnJvd3Nlcgog
aW1wb3J0IHN5cwotCitmcm9tIC4gaW1wb3J0IGJyb3dzZXIKIAogbGF0ZXN0X2NoYW5uZWxzID0g
ewogICAgICdmaXJlZm94JzogJ25pZ2h0bHknLApAQCAtNDQsNiArNDMsOSBAQCBkZWYgZ2V0X3Bh
cnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93c2VyIHJlbGVhc2Ug
b24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRv
d25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQgZG9uJ3QgaW5zdGFs
bCBpdCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZW5hbWUnLCBhY3Rpb249InN0b3Jl
IiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRmlsZW5hbWUs
IGV4Y2x1ZGluZyBleHRlbnNpb24gZm9yIGRvd25sb2FkZWQgYXJjaGl2ZSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiKG9ubHkgd2l0aCAtLWRvd25sb2FkLW9ubHkpIikKICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctZCcsICctLWRlc3RpbmF0aW9uJywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2ZpbGVzeXN0ZW0gZGlyZWN0b3J5IHRvIHBsYWNlIHRoZSBjb21wb25lbnQnKQog
ICAgIHJldHVybiBwYXJzZXIKQEAgLTc2LDEwICs3OCwxMSBAQCBkZWYgcnVuKHZlbnYsICoqa3dh
cmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIC0tZGVz
dGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52aXJvbm1lbnQiKQog
CiAgICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBkZXN0aW5hdGlvbiwg
Y2hhbm5lbCwKLSAgICAgICAgICAgIGRvd25sb2FkX29ubHk9a3dhcmdzWyJkb3dubG9hZF9vbmx5
Il0pCisgICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxvYWRfb25seSJdLCBy
ZW5hbWU9a3dhcmdzWyJyZW5hbWUiXSkKIAogCi1kZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQs
IGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sb2FkX29u
bHk9RmFsc2UpOgorZGVmIGluc3RhbGwobmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbiwgY2hh
bm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9hZF9vbmx5PUZhbHNlLAorICAgICAg
ICAgICAgcmVuYW1lPU5vbmUpOgogICAgIGlmIGxvZ2dlciBpcyBOb25lOgogICAgICAgICBpbXBv
cnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaW5zdGFsbCIp
CkBAIC05MSw2ICs5NCw5IEBAIGRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRp
b24sIGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvCiAKICAgICBzdWJjbGFz
cyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5cy5zdGRvdXQud3JpdGUo
J05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBvbmVudCkpCi0gICAgcGF0
aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3RpbmF0aW9uLCBj
aGFubmVsPWNoYW5uZWwpCisgICAga3dhcmdzID0ge30KKyAgICBpZiBkb3dubG9hZF9vbmx5IGFu
ZCByZW5hbWU6CisgICAgICAgIGt3YXJnc1sicmVuYW1lIl0gPSByZW5hbWUKKyAgICBwYXRoID0g
Z2V0YXR0cihzdWJjbGFzcyhsb2dnZXIpLCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24sIGNoYW5u
ZWw9Y2hhbm5lbCwgKiprd2FyZ3MpCiAgICAgaWYgcGF0aDoKICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBkb3dubG9hZF9vbmx5
IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKaW5kZXggMzU4
NjdjNGNjYmZlOTVjNGU3MWE4ZDcxY2U5MGE3YjM3ODk1MWZkNS4uNmIwOWNjOGJkYWJlYzljNmEz
NmVlMjU3MjkzYmU5MDJjNzk4YjE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKQEAgLTIsNSAr
Miw2IEBAIHRvb2xzL2NpLwogdG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8KIHRvb2xzL21hbmlm
ZXN0LwordG9vbHMvcXVpYy8KIHRvb2xzL3NlcnZlLwogdG9vbHMvd3B0LwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVx
dWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKaW5kZXggNTY2MDgzY2I2YmU4OWEwM2U0OGNj
NWMxYTBhODhmYzVjZTUzYTg1My4uM2JhZWZhNTBlYTk4MTk3NGJlNjZiNmUyMjZlMDUwZTU5ZTAz
NGMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CkBAIC0x
ICsxLDIgQEAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3RzPT0yLjIzLjAKK21vemluZm89PTEu
Mi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEy
MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CmluZGV4IGM0Y2JjMjk0M2I3Y2UwMmVm
MmE1OGY2NWQzNGFiNzE3YmZiMGM5ODEuLjE4OTNmZGVmYTgzNDZlOGY5NjllNDE3ODlkZjZlM2Rk
ZDg1NDA2MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQpAQCAtMTA2LDExICsx
MDYsMTQgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWF4aW11bSBudW1iZXIgb2YgcmV2
aXNpb25zIHRvIGJlIHJldHVybmVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRoZSBjb21tYW5kIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBoZWxwPSJkZWJ1ZyBsb2dnaW5nIikKICAgICByZXR1cm4gcGFyc2Vy
CiAKIAogZGVmIHJ1bl9yZXZfbGlzdCgqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+
IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KCd2ZXJib3NlJyk6CisgICAgICAgIGxvZ2dlci5zZXRM
ZXZlbChsb2dnaW5nLkRFQlVHKQogICAgICMgImVwb2NoX3RocmVzaG9sZCIgaXMgYSBzYWZldHkg
bWFyZ2luLiBBZnRlciB0aGlzIHRpbWUgaXQgaXMgZmluZSB0bwogICAgICMgYXNzdW1lIHRoYXQg
YW55IHRhZ3MgYXJlIGNyZWF0ZWQgYW5kIHB1c2hlZC4KICAgICBlcG9jaF90aHJlc2hvbGQgPSA2
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCAwYzczMmU3YWU4YWVlN2Q0NDEwMTU2NDJi
YThmMmZjYmQ3ZTY2ZTBlLi5hOWZkZWFkYTFlYzc4MGE1MDA5M2YyMjE2NzNjZjQwNjg2NGUzNmMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0xODMsNiArMTgzLDE2IEBAIGNsYXNzIEJy
b3dzZXJTZXR1cChvYmplY3QpOgogICAgIGRlZiBzZXR1cChzZWxmLCBrd2FyZ3MpOgogICAgICAg
ICBzZWxmLnNldHVwX2t3YXJncyhrd2FyZ3MpCiAKK2RlZiBzYWZlX3Vuc2V0ZW52KGVudl92YXIp
OgorICAgICIiIlNhZmVseSByZW1vdmUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICBQ
eXRob24zIGRvZXMgbm90IHN1cHBvcnQgb3MudW5zZXRlbnYgaW4gV2luZG93cyBmb3IgcHl0aG9u
PDMuOSwgc28gd2UgYmV0dGVyCisgICAgcmVtb3ZlIHRoZSB2YXJpYWJsZSBkaXJlY3RseSBmcm9t
IG9zLmVudmlyb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBkZWwgb3MuZW52aXJvbltl
bnZfdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwogCiBjbGFzcyBGaXJl
Zm94KEJyb3dzZXJTZXR1cCk6CiAgICAgbmFtZSA9ICJmaXJlZm94IgpAQCAtMjQzLDkgKzI1Myw5
IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlhIHlvdXIgT1MgcGFja2FnZSBtYW5h
Z2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSdW5uaW5nIGlu
IGhlYWRsZXNzIG1vZGUsIHBhc3MgLS1uby1oZWFkbGVzcyB0byBkaXNhYmxlIikKIAogICAgICAg
ICAjIFR1cm4gb2ZmIEZpcmVmb3ggV2ViUlRDIElDRSBsb2dnaW5nIG9uIFdQVCAodHVybmVkIG9u
IGJ5IG1venJ1bm5lcikKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0xFVkVMJykKLSAgICAg
ICAgb3MudW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKLSAgICAgICAgb3MudW5zZXRlbnYo
J1JfTE9HX1ZFUkJPU0UnKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19MRVZFTCcpCisg
ICAgICAgIHNhZmVfdW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKKyAgICAgICAgc2FmZV91
bnNldGVudignUl9MT0dfVkVSQk9TRScpCiAKICAgICAgICAgIyBBbGxvdyBXZWJSVEMgdGVzdHMg
dG8gY2FsbCBnZXRVc2VyTWVkaWEuCiAgICAgICAgIGt3YXJnc1siZXh0cmFfcHJlZnMiXS5hcHBl
bmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCkBAIC03MDUsOCArNzE1LDkg
QEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0
ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVudiwgcHJvbXB0PVRy
dWUsIGluc3RhbGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgogICAgIGZyb20gd3B0cnVubmVy
IGltcG9ydCB3cHRjb21tYW5kbGluZQorICAgIGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAot
ICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhrd2FyZ3MuaXRlcml0ZW1zKCkpCisgICAga3dhcmdz
ID0gdXRpbHMuS3dhcmdzKGl0ZXJpdGVtcyhrd2FyZ3MpKQogCiAgICAgcHJvZHVjdF9wYXJ0cyA9
IGt3YXJnc1sicHJvZHVjdCJdLnNwbGl0KCI6IikKICAgICBrd2FyZ3NbInByb2R1Y3QiXSA9IHBy
b2R1Y3RfcGFydHNbMF0ucmVwbGFjZSgiLSIsICJfIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RmaWxlcy5weQppbmRleCBjZjEyYTU5YzhlNjhhNzBmNzgyNTYzYTgxYzE1MTEyNDI5NjJlZGYz
Li5mMjk2MGU4ZjUxZTQ0NWUzZjZmNTNiYThlN2MwMTQ1YWE1MDcyMDM4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdGZpbGVzLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAgZGVmIGFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtUZXh0XQogICAgIG5v
bnRlc3RzX2NoYW5nZWQgPSBzZXQoZmlsZXNfY2hhbmdlZCkKICAgICB3cHRfbWFuaWZlc3QgPSBs
b2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIG1hbmlmZXN0X3VwZGF0ZSkKIAotICAgIHRlc3Rf
dHlwZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0KKyAgICB0ZXN0X3R5
cGVzID0gWyJjcmFzaHRlc3QiLCAidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQog
ICAgIHN1cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQogICAgICAg
ICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0ZXJ0eXBlcygi
c3VwcG9ydCIpfQogICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9v
dCwgcGF0aCkKQEAgLTI3OCw4ICsyNzgsOCBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVz
X2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgICAgICAgICBmdWxsX3BhdGgg
PSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHJlcG9fcGF0aFsxOl0ucmVwbGFjZSgiLyIsIG9zLnBh
dGguc2VwKSkKICAgICAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzLmFkZCgoZnVsbF9wYXRoLCBy
ZXBvX3BhdGgpKQogCi0gICAgaW50ZXJmYWNlX25hbWUgPSBsYW1iZGEgeDogb3MucGF0aC5zcGxp
dGV4dChvcy5wYXRoLmJhc2VuYW1lKHgpKVswXQotICAgIGludGVyZmFjZXNfY2hhbmdlZF9uYW1l
cyA9IG1hcChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlc19jaGFuZ2VkKQorICAgIGludGVyZmFj
ZXNfY2hhbmdlZF9uYW1lcyA9IFtvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaW50
ZXJmYWNlKSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGludGVyZmFj
ZSBpbiBpbnRlcmZhY2VzX2NoYW5nZWRdCiAKICAgICBkZWYgYWZmZWN0ZWRfYnlfd2RzcGVjKHRl
c3QpOgogICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKQEAgLTMyNCw5ICszMjQsOSBAQCBk
ZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1Rl
eHRdCiAKICAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwgInJiIikgYXMgZmg6
CiAgICAgICAgICAgICAgICAgcmF3X2ZpbGVfY29udGVudHMgPSBmaC5yZWFkKCkgICMgdHlwZTog
Ynl0ZXMKLSAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJc
eGZlXHhmZiIpOgorICAgICAgICAgICAgICAgIGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZlXHhmZiIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikgICMgdHlwZTogVGV4
dAotICAgICAgICAgICAgICAgIGVsaWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhm
Zlx4ZmUiKToKKyAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZmXHhmZSIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVf
Y29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQpAQCAtMzk2LDcgKzM5Niw3IEBAIGRl
ZiBydW5fY2hhbmdlZF9maWxlcygqKmt3YXJncyk6CiAgICAgc2VwYXJhdG9yID0gIlwwIiBpZiBr
d2FyZ3NbIm51bGwiXSBlbHNlICJcbiIKIAogICAgIGZvciBpdGVtIGluIHNvcnRlZChjaGFuZ2Vk
KToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvcy5wYXRoLnJlbHBhdGgoaXRlbS5lbmNvZGUo
InV0ZjgiKSwgd3B0X3Jvb3QpICsgc2VwYXJhdG9yKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KG9zLnBhdGgucmVscGF0aChzaXguZW5zdXJlX3N0cihpdGVtKSwgd3B0X3Jvb3QpICsgc2VwYXJh
dG9yKQogCiAKIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4IDI1YjY2ZTdkOTIy
ZjU0ZWRmMTk3YmFhYWY0MmMyNmM5ZmNlMDQ2MjEuLmU3YzMyYTM2MjExODYwODYxMDJkNWI0NGFh
ZGUzYzdmMTc1ZjA3YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90
ZXN0X2Jyb3dzZXIucHkKQEAgLTE1LDExICsxNSwxMSBAQCBkZWYgdGVzdF9zYWZhcmlfdmVyc2lv
bihtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBzYWZhcmkgPSBicm93c2VyLlNhZmFyaShsb2dn
ZXIpCiAKICAgICAjIFNhZmFyaQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJworICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNhZmFyaSAxMi4xICgx
NDYwNy4xLjExKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0i
c2FmYXJpZHJpdmVyIikgPT0gJzEyLjEgKDE0NjA3LjEuMTEpJwogCiAgICAgIyBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3Ci0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
SW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYw
Ny4xLjkuMC4xKScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInSW5j
bHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYwNy4x
LjkuMC4xKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2Fm
YXJpZHJpdmVyIikgPT0gJ1RlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2MDcuMS45
LjAuMSknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBAIC0zMCwx
MSArMzAsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3ZlcnNpb25fZXJyb3JzKG1vY2tlZF9jaGVja19v
dXRwdXQpOgogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYHNh
ZmFyaWRyaXZlciAtLXZlcnNpb25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnJldHVybl92YWx1ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2VkX2NoZWNrX291dHB1
dC5yZXR1cm5fdmFsdWUgPSBiJ2dpYmJlcmlzaCcKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24o
d2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCiAgICAgIyBgc2FmYXJp
ZHJpdmVyIC0tdmVyc2lvbmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIFNhZmFyaSA8PTEyLjApCi0g
ICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZHVtbXknCisgICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15JwogICAgIG1vY2tlZF9jaGVja19v
dXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigxLCAnY21k
JykKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJp
dmVyIikgaXMgTm9uZQogCkBAIC00NCwxMSArNDQsMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21p
bmlicm93c2VyX3ZlcnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgd2Via2l0Z3RrX21p
bmlicm93c2VyID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3Nlcihsb2dnZXIpCiAKICAgICAj
IHN0YWJsZSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
V2ViS2l0R1RLIDIuMjYuMVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gYidXZWJLaXRHVEsgMi4yNi4xXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nl
ci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNi4xJwogCiAgICAgIyBuaWdo
dGx5IHZlcnNpb24KLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdXZWJL
aXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJu
X3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJwogICAgIGFzc2VydCB3ZWJr
aXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgPT0gJzIuMjcu
MSAocjI1MDgyMyknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBA
IC01OSwxMSArNTksMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmlicm93c2VyX3ZlcnNpb25f
ZXJyb3JzKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2VyIC0tdmVyc2lvbmAg
cmV0dXJuIGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0g
J2dpYmJlcmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInZ2li
YmVyaXNoJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9
J01pbmlCcm93c2VyJykgaXMgTm9uZQogCiAgICAgIyBgTWluaUJyb3dzZXIgLS12ZXJzaW9uYCBm
YWlscyAoYXMgaXQgZG9lcyBmb3IgTWluaUJyb3dzZXIgPD0gMi4yNi4wKQotICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1vY2tlZF9jaGVja19vdXRw
dXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnNpZGVf
ZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpCiAgICAgYXNz
ZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSBp
cyBOb25lCiAKQEAgLTkzLDExICs5MywxMSBAQCBkZWYgdGVzdF93ZWJraXRndGtfbWluaWJyb3dz
ZXJfZmluZF9iaW5hcnkobW9ja2VkX29zX3BhdGhfaXNmaWxlKToKICAgICAjIEZvdW5kIG9uIHRo
ZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBTUQ2NCAoZ2NjIGF2YWlsYWJsZSBidXQgZ2l2ZXMg
YW4gZXJyb3IpCiAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQgPSAnL3Vzci9saWIv
eDg2XzY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICBtb2NrZWRf
b3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgcGF0aDogcGF0aCBpbiBbZGViaWFu
X21pbmlicm93c2VyX3BhdGhfYW1kNjQsICcvdXNyL2Jpbi9nY2MnXQotICAgIHdpdGggbW9jay5w
YXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSAnZXJyb3InLCBz
aWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKSk6Cisg
ICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1
ZSA9IGInZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
KDEsICdjbWQnKSk6CiAgICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIuZmluZF9i
aW5hcnkoKSA9PSBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NAogCiAgICAgICAgICMgRm91
bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFSTTY0IChnY2MgYXZhaWxhYmxlKQog
ICAgICAgICBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCA9ICcvdXNyL2xpYi9hYXJjaDY0
LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICAgICAgbW9ja2VkX29z
X3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGggaW4gW2RlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICAgICAgd2l0aCBtb2Nr
LnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1ZSA9ICdhYXJjaDY0
LWxpbnV4LWdudScpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tf
b3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidhYXJjaDY0LWxpbnV4LWdudScpOgogICAgICAgICAg
ICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgpID09IGRlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9tYXJrZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5YWQ5YzQ4OTA2NzY2NjI0ZWM1OTRj
OTk0ZDUyZTcwYzk2ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQpA
QCAtMCwwICsxLDM1IEBACitmcm9tIHRvb2xzLndwdCBpbXBvcnQgbWFya2Rvd24KKworZGVmIHRl
c3RfZm9ybWF0X2NvbW1lbnRfdGl0bGUoKToKKyAgICBhc3NlcnQgJyMgQnJvd3NlciAjJyA9PSBt
YXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgiYnJvd3NlciIpCisgICAgYXNzZXJ0ICcjIEJy
b3dzZXIgKGNoYW5uZWwpICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50X3RpdGxlKCJicm93
c2VyOmNoYW5uZWwiKQorCitkZWYgdGVzdF9tYXJrZG93bl9hZGp1c3QoKToKKyAgICBhc3NlcnQg
dSdcXHQnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHQnKQorICAgIGFzc2VydCB1J1xc
cicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdccicpCisgICAgYXNzZXJ0IHUnXFxuJyA9
PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1xuJykKKyAgICBhc3NlcnQgdScnID09IG1hcmtk
b3duLm1hcmtkb3duX2FkanVzdCgnYCcpCisgICAgYXNzZXJ0IHUnXFx8JyA9PSBtYXJrZG93bi5t
YXJrZG93bl9hZGp1c3QoJ3wnKQorICAgIGFzc2VydCB1J1xcdFxcclxcblxcfCcgPT0gbWFya2Rv
d24ubWFya2Rvd25fYWRqdXN0KCdcdFxyXG5gfCcpCisKK3Jlc3VsdCA9ICcnCitkZWYgbG9nKHRl
eHQpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICByZXN1bHQgKz0gdGV4dAorCitkZWYgdGVzdF90
YWJsZSgpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICBoZWFkaW5ncyA9IFsnaDEnLCdoMiddCisg
ICAgZGF0YSA9IFtbJzAnLCAnMSddXQorICAgIG1hcmtkb3duLnRhYmxlKGhlYWRpbmdzLCBkYXRh
LCBsb2cpCisgICAgYXNzZXJ0ICgifCBoMSB8IGgyIHwiCisgICAgICAgICAgICAifC0tLS18LS0t
LXwiCisgICAgICAgICAgICAifCAwICB8IDEgIHwiKSA9PSByZXN1bHQKKworICAgIHJlc3VsdCA9
ICcnCisgICAgZGF0YS5hcHBlbmQoWydhYWEnLCAnYmInXSkKKyAgICBtYXJrZG93bi50YWJsZSho
ZWFkaW5ncywgZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgIGgxIHwgaDIgfCIKKyAgICAgICAg
ICAgICJ8LS0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICAgfCAxICB8IgorICAgICAgICAg
ICAgInwgYWFhIHwgYmIgfCIpID09IHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF9yZXZsaXN0LnB5CmluZGV4IGVjMmE2Yjg5OWQ1ZDFhOTI3ZGNhZDFmOWE3
NTgzZjk4N2EzYWQ5NDcuLjMwMjA4ZjRjZjY4ZDc5NTk2NmU3ODU4ZGFhMDczMGI2OGZhM2U5MGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkK
QEAgLTExLDEwICsxMSwxMyBAQCBkZWYgdGVzdF9jYWxjdWxhdGVfY3V0b2ZmX2RhdGUoKToKIAog
CiBkZWYgdGVzdF9wYXJzZV9lcG9jaCgpOgotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2No
KGIiMTBoIikgPT0gMzYwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaChiIjEwZCIp
ID09IDg2NDAwMAotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIiMTB3IikgPT0gNjA0
ODAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGgiKSA9PSAzNjAwMAorICAg
IGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGQiKSA9PSA4NjQwMDAKKyAgICBhc3NlcnQg
cmV2bGlzdC5wYXJzZV9lcG9jaCgiMTB3IikgPT0gNjA0ODAwMAogCitkZWYgY2hlY2tfcmV2aXNp
b25zKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6CisgICAgZm9yIHRhZ2dl
ZCwgZXhwZWN0ZWQgaW4gemlwKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6
CisgICAgICAgIGFzc2VydCB0YWdnZWQgPT0gZXhwZWN0ZWQKIAogQG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JykKIGRlZiB0ZXN0X2dldF9lcG9jaF9yZXZpc2lvbnMobW9ja2Vk
X2NoZWNrX291dHB1dCk6CkBAIC01MCwxNiArNTMsOSBAQCBtZXJnZV9wcl9DIEMgNDc1MjAwIF90
dWVfCiBtZXJnZV9wcl9CIEIgNDUzNjAwIF90dWVfCiBtZXJnZV9wcl9BIEEgMzg4ODAwIF9tb25f
CiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMo
ZXBvY2gsIHVudGlsLCA4KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdO
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdNJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdLJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdKJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4
dCgpID09ICdBJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5nZXRf
ZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgOCkKKyAgICBjaGVja19yZXZpc2lvbnModGFn
Z2VkX3JldmlzaW9ucywgWydOJywgJ00nLCAnSycsICdKJywgJ0cnLCAnRicsICdDJywgJ0EnXSkK
KyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9y
IGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBlbm91Z2ggY2FuZGlk
YXRlIGl0ZW1zIGluIHRoZSByZXZpc2lvbiBsaXN0CkBAIC04MiwxMyArNzgsOSBAQCBtZXJnZV9w
cl9EIEQgNjQ4MDAwIF90aHVfCiBtZXJnZV9wcl9DIEMgNTYxNjAwIF93ZWRfCiBtZXJnZV9wcl9C
IEIgNDc1MjAwIF90aHVfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9l
cG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNv
bnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdG
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdFJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdEJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdDJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAw
ICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVja19yZXZpc2lvbnMo
dGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnLCAnRScsICdEJywgJ0MnXSkKKyAgICBhc3NlcnQg
bGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAog
CiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBsZXNzIHJldHVybmVkIGNhbmRpZGF0ZXMg
aXRlbXMgdGhhbiB0aGUgbmVlZGVkCkBAIC0xMDcsMTAgKzk5LDkgQEAgbWVyZ2VfcHJfSCBIIDk5
MzYwMCBfbW9uXwogbWVyZ2VfcHJfRyBHIDkwNzIwMCBfc3VuXwogbWVyZ2VfcHJfRiBGIDgyMDgw
MCBfc2F0XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2
aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQo
KSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBh
c3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVz
dGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhl
cG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsn
RycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogaW5pdGlhbCB1bnRpbCB2YWx1
ZSBpcyBvbiBhbiBlcG9jaCBib3VuZGFyeQpAQCAtMTM0LDEwICsxMjUsOSBAQCBtZXJnZV9wcl9I
IEggMTI5NjAwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1MDQwMCBfbW9uXwogbWVyZ2VfcHJfRiBG
IDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBv
Y2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25z
Lm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicK
LSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3Ig
ZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3Jldmlz
aW9ucyhlcG9jaCwgdW50aWwsIDMpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lv
bnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9
PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogdW50aWwgYWxpZ25l
ZCB3aXRoIE1vbmRheSwgNSBKYW51YXJ5IDE5NzAgMDowMDowMCAoMzQ1NjAwKQpAQCAtMTU4LDYg
KzE0OCw2IEBAIG1lcmdlX3ByX0ggSCAxMTgwODAwIF93ZWRfCiBtZXJnZV9wcl9HIEcgOTUwNDAw
IF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNv
bnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAxKQotICAgIGFz
c2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0
YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRf
cmV2aXNpb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMSkK
KyAgICBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydGJ10pCisgICAgYXNzZXJ0
IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkK
aW5kZXggMzMxMzVkZmRjMmQ1YjVhZTBjNzIyZGNlMzRmMzViNTgxMjdiZjMzOS4uOWZkNmM2Zjli
ODUxNTM3ZGYwNDQyODYxMjNiYTY0YzliM2UxOWU4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKQEAgLTEsNSArMSw3IEBACitpbXBv
cnQgb3MucGF0aAogZnJvbSBtb2NrIGltcG9ydCBwYXRjaAogCitmcm9tIHRvb2xzLm1hbmlmZXN0
Lm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAogZnJvbSB0b29scy53cHQgaW1wb3J0IHRlc3RmaWxl
cwogCiAKQEAgLTExLDMgKzEzLDM0IEBAIGRlZiB0ZXN0X2dldHJldmlzaF9rd2FyZygpOgogZGVm
IHRlc3RfZ2V0cmV2aXNoX2ltcGxpY2l0KCk6CiAgICAgd2l0aCBwYXRjaCgidG9vbHMud3B0LnRl
c3RmaWxlcy5icmFuY2hfcG9pbnQiLCByZXR1cm5fdmFsdWU9dSJiYXNlIik6CiAgICAgICAgIGFz
c2VydCB0ZXN0ZmlsZXMuZ2V0X3JldmlzaCgpID09IGIiYmFzZS4uSEVBRCIKKworCitkZWYgdGVz
dF9hZmZlY3RlZF90ZXN0ZmlsZXMoKToKKyAgICBtYW5pZmVzdF9qc29uID0geworICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogeworICAgICAgICAgICAgICAgICJh
IjogeworICAgICAgICAgICAgICAgICAgICAiYiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJjIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28tY3Jhc2guaHRtbCI6IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjZGVmZ2gxMjM0NTYiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bGwiLCB7fV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAidXJsX2Jhc2UiOiAiLyIsCisgICAgICAgICJ2ZXJzaW9uIjogOCwKKyAgICB9CisgICAg
bWFuaWZlc3QgPSBNYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBtYW5pZmVzdF9qc29uKQorICAgIHdp
dGggcGF0Y2goInRvb2xzLndwdC50ZXN0ZmlsZXMubG9hZF9tYW5pZmVzdCIsIHJldHVybl92YWx1
ZT1tYW5pZmVzdCk6CisgICAgICAgICMgRGVwZW5kZW50IGFmZmVjdGVkIHRlc3RzIGFyZSBkZXRl
cm1pbmVkIGJ5IHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0sCisgICAgICAgICMgd2hpY2ggZG9lc24n
dCB3b3JrIGluIG91ciB0ZXN0IHNldHVwLiBXZSB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yCisgICAg
ICAgICMgdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyBvciBoYXZlIGEgbW9yZSBjb21wbGV4
IHRlc3Qgc2V0dXAgdG8KKyAgICAgICAgIyBzdXBwb3J0IHRlc3RpbmcgdGhvc2UuCisgICAgICAg
IGZ1bGxfdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgdGVzdGZpbGVzLndw
dF9yb290LCAiYSIsICJiIiwgImMiLCAiZm9vLWNyYXNoLmh0bWwiKQorICAgICAgICB0ZXN0c19j
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyhbZnVsbF90ZXN0X3BhdGhd
KQorICAgICAgICBhc3NlcnQgdGVzdHNfY2hhbmdlZCA9PSBzZXQoW2Z1bGxfdGVzdF9wYXRoXSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKaW5kZXggNjU2OTU4
MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4Ni4uZjg5N2I2ODhhZDZmNjgyYmU5ZDc2
OWRhOTg1NzljNzg4NTA1YzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF93cHQucHkKQEAgLTEsMTIgKzEsMTggQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCi1pbXBvcnQg
dXJsbGliMgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3Blbgor
ICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvcgorZXhjZXB0IEltcG9ydEVycm9y
OgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgVVJMRXJyb3IKIAogaW1wb3J0IHB5
dGVzdAogCkBAIC0zOCw2ICs0NCw5IEBAIGRlZiBnZXRfcGVyc2lzdGVudF9tYW5pZmVzdF9wYXRo
KCk6CiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQogZGVm
IGluaXRfbWFuaWZlc3QoKToKKyAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHlwYS92aXJ0
dWFsZW52L2lzc3Vlcy8xNzEwCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzIGFuZCBw
bGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgIHB5dGVzdC54ZmFpbChyZWFz
b249InZpcnR1YWxlbnYgYWN0aXZhdGlvbiBmYWlscyBpbiBXaW5kb3dzIGZvciBweXRob24zIikK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAg
d3B0Lm1haW4oYXJndj1bIm1hbmlmZXN0IiwgIi0tbm8tZG93bmxvYWQiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wYXRoIiwgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3RfcGF0aCgpXSkKQEAg
LTIzMyw5ICsyNDIsOSBAQCBkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxlKHRlbXBfdGVzdCk6
CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJp
dmVyKCk6CiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIGNocm9tZWRy
aXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52
IiwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVyLmV4ZSIpCisgICAgICAgIGNocm9tZWRyaXZlcl9w
YXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGly
KCksICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQogICAgIGVsc2U6Ci0gICAgICAgIGNo
cm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwg
Il92ZW52IiwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQorICAgICAgICBjaHJvbWVkcml2ZXJfcGF0
aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2Rpcigp
LCAiYmluIiwgImNocm9tZWRyaXZlciIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoY2hyb21lZHJp
dmVyX3BhdGgpOgogICAgICAgICBvcy51bmxpbmsoY2hyb21lZHJpdmVyX3BhdGgpCiAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CkBAIC0yNTEsOSArMjYwLDkg
QEAgZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICAgICAgICAgICAgICAgICBy
ZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8x
NzA3NCIpCiBkZWYgdGVzdF9pbnN0YWxsX2ZpcmVmb3goKToKICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImRhcndpbiI6Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0
aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJlZm94IE5p
Z2h0bHkuYXBwIikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRo
cy5yZXBvX3Jvb3QsIHdwdC52ZW52X2RpcigpLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJl
Zm94IE5pZ2h0bHkuYXBwIikKICAgICBlbHNlOgotICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5q
b2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwgIm5pZ2h0
bHkiLCAiZmlyZWZveCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAi
ZmlyZWZveCIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhfcGF0aCk6CiAgICAgICAgIHNodXRp
bC5ybXRyZWUoZnhfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMg
ZXhjaW5mbzoKQEAgLTM4OCw5ICszOTcsOSBAQCBkZWYgdGVzdF9zZXJ2ZSgpOgogICAgICAgICAg
ICAgaWYgdGltZS50aW1lKCkgLSBzdGFydCA+IDYwOgogICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgInNlcnZlciBkaWQgbm90IHN0YXJ0IHJlc3BvbmRpbmcgd2l0aGluIDYwcyIKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwID0gdXJsbGliMi51cmxvcGVuKCJodHRw
Oi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCisgICAgICAgICAgICAgICAgcmVzcCA9IHVybG9w
ZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKICAgICAgICAgICAgICAgICBwcmlu
dChyZXNwKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3I6CisgICAgICAgICAg
ICBleGNlcHQgVVJMRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIlVSTEVycm9yIikKICAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwppbmRleCA1YzQzZjNjYTZi
MjZhYTYwNTY2YWNmZmMzMGU4ZWM4ZWEyYjk2NGUzLi41YmYyNTk5OTIyYWFkNTYzMzRjYzFiYWRh
MTY5YmJjY2ZkODYxYjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpAQCAtMTYsNiArMTYsNyBAQCBOb25lCiBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9tYXJrZG93bi5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF90ZXN0ZmlsZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCmluZGV4IDZhMDQ0NDcz
YTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIuLjhlM2UyNmUxMzViNGQzNzZhNDkyYWVh
NWFkYmQyNDI3OTdiMDNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQpAQCAtMSw2ICsx
LDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNworZW52bGlzdCA9IHB5MjcscHkzNSxweTM2LHB5
MzcscHkzOAogc2tpcHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxz
ZQogCiBbdGVzdGVudl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQppbmRleCAy
ZDQyNzcxM2U0ZTgyNDg0NWI2ZDc4NzFiNjFjZDZmMTFlYzI1MWY2Li45YTZjMDY0NjcxMjA2NGUx
ODNmMzY2ZGZkNTYyOWExYjUyZTgxMTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQpA
QCAtNDYsNyArNDYsNyBAQCBkZWYgY2FsbCgqYXJncyk6CiAgICAgIiIiCiAgICAgbG9nZ2VyLmRl
YnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3Mu
Y2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChhcmdzKS5kZWNvZGUoJ3V0ZjgnKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvciBhcyBlOgogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiVzIGV4aXRlZCB3aXRoIHJl
dHVybiBjb2RlICVpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJu
Y29kZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQppbmRleCA0MDBkZWJj
ODhlNDY5MTBkMjY0MWU3MjhmYzRhZGI4NmE4ODU2OGUwLi4xOGVkY2MwNGZiNGQ1MjhlNjU2NmRh
MTA5MDJhOWFjOTY0YjQyYTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYu
cHkKQEAgLTMyLDcgKzMyLDkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3QpOgogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGV4aXN0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNk
aXIoc2VsZi5wYXRoKQorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgYWxzbyBmb3IgbGliX3Bh
dGggYmVjYXVzZSBkaWZmZXJlbnQgcHl0aG9uIHZlcnNpb25zCisgICAgICAgICMgY3JlYXRlIGRp
ZmZlcmVudCBsaWJyYXJ5IHBhdGhzLgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxm
LnBhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYubGliX3BhdGgpCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKaW5kZXgg
OTMzMDFkZDg2YjRmZmUyMDI5MDJhNDkyMjA0ZWJhNjUzN2ZiNTBkNS4uMzk1ZGIwMzk0ZGE2N2Nh
YThiZGMxYWQ5ZTY4OWU1ODMxNzUxOTJiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQpAQCAt
MzEsNiArMzEsNyBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAgICAgICAgICAgICAi
c2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAgICAicGFyc2VyIjog
cHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2tub3duIjog
cHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgInB5
M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFs
ZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAg
ICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNDAsMTMgKzQxLDE0IEBA
IGRlZiBsb2FkX2NvbW1hbmRzKCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVmIHBhcnNlX2FyZ3Mo
YXJndiwgY29tbWFuZHMpOgorZGVmIHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHM9bG9hZF9jb21t
YW5kcygpKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlBhdGggdG8g
YW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4gTXVzdCBzZXQgLS12
ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVidWciLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ugb2YgYW4gZXhjZXB0
aW9uIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXB5MyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9IlJ1biB3aXRoIHB5dGhvbjMiKQogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRk
X3N1YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIpCiAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGluIGl0
ZXJpdGVtcyhjb21tYW5kcyk6CiAgICAgICAgIHN1YnBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5k
LCBoZWxwPXByb3BzWyJoZWxwIl0sIGFkZF9oZWxwPUZhbHNlKQpAQCAtOTMsNyArOTUsOCBAQCBk
ZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigpOgogICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRz
OgogICAgICAgICBwcm9wcyA9IGNvbW1hbmRzW2NvbW1hbmRdCiAKLSAgICAgICAgaWYgcHJvcHNb
InZpcnR1YWxlbnYiXToKKyAgICAgICAgaWYgKHByb3BzWyJ2aXJ0dWFsZW52Il0gYW5kCisgICAg
ICAgICAgICAobm90IHByb3BzWyJweTNvbmx5Il0gb3Igc3lzLnZlcnNpb25faW5mby5tYWpvciA9
PSAzKSk6CiAgICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KE5vbmUsIEZhbHNlLCBwcm9wcykK
IAogICAgICAgICBzdWJwYXJzZXIgPSBpbXBvcnRfY29tbWFuZCgnd3B0JywgY29tbWFuZCwgcHJv
cHMpWzFdCkBAIC0xMDgsMTIgKzExMSwxNiBAQCBkZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigp
OgogICAgIHJldHVybiBwYXJzZXIKIAogCitkZWYgdmVudl9kaXIoKToKKyAgICByZXR1cm4gIl92
ZW52IiArIHN0cihzeXMudmVyc2lvbl9pbmZvWzBdKQorCisKIGRlZiBzZXR1cF92aXJ0dWFsZW52
KHBhdGgsIHNraXBfdmVudl9zZXR1cCwgcHJvcHMpOgogICAgIGlmIHNraXBfdmVudl9zZXR1cCBh
bmQgcGF0aCBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNdXN0IHNldCAtLXZl
bnYgd2hlbiAtLXNraXAtdmVudi1zZXR1cCBpcyB1c2VkIikKICAgICBzaG91bGRfc2tpcF9zZXR1
cCA9IHBhdGggaXMgbm90IE5vbmUgYW5kIHNraXBfdmVudl9zZXR1cAogICAgIGlmIHBhdGggaXMg
Tm9uZToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgIl92ZW52IikKKyAg
ICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgdmVudl9kaXIoKSkKICAgICB2ZW52
ID0gdmlydHVhbGVudi5WaXJ0dWFsZW52KHBhdGgsIHNob3VsZF9za2lwX3NldHVwKQogICAgIGlm
IG5vdCBzaG91bGRfc2tpcF9zZXR1cDoKICAgICAgICAgdmVudi5zdGFydCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCisrKyAvZGV2L251bGwK
QEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0KLWh0dHA6Ly93d3cu
dzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5zZS5odG1sCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9ucyBvZiB3b3JrcyBt
dXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwKLSAgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvcHlyaWdo
dAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSAgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgd29yayB3aXRo
b3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHMudHh0CmluZGV4IDNjZDAxNDQ2ZTI1YmNlYjRkYWRlZjQ4MjU5MTE3YmQwNTdlYTZmNDgu
LjUzMTA3MjFiYmI5MGZhOTRiOTBiNGMxMGQyMDJmYzVhMTNjMDRkNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApAQCAtMSw4ICsxLDkg
QEAKIGh0bWw1bGliPT0xLjAuMQotbW96aW5mbz09MS4xLjAKLW1vemxvZz09NS4wCi1tb3pkZWJ1
Zz09MC4xLjEKLXBpbGxvdz09Ni4yLjEKLXVybGxpYjNbc2VjdXJlXT09MS4yNS43Ci1yZXF1ZXN0
cz09Mi4yMi4wCi1zaXg9PTEuMTMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgorbW96bG9nPT02LjAKK21vemRl
YnVnPT0wLjIKKyMgUGlsbG93IDcgcmVxdWlyZXMgUHl0aG9uIDMKK3BpbGxvdz09Ni4yLjIgICMg
cHl1cDogPDcuMAordXJsbGliM1tzZWN1cmVdPT0xLjI1LjkKK3JlcXVlc3RzPT0yLjIzLjAKK3Np
eD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZmlyZWZveC50eHQKaW5kZXggNGNiYjdhNWVjMDI5M2VmZjFlZjE5OGEyMWVj
ZGM5MGZlY2Y0MTQxMS4uMTc2NzA1ZjNhZjUwOGFjYjMxMTdkNzNkNWFiNGYwYzMwNjAyNDY2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19maXJlZm94LnR4dApAQCAtMSwxMSArMSwxMCBAQAogbWFyaW9uZXR0ZV9kcml2ZXI9PTMu
MC4wCi1tb3pjcmFzaD09MS4xLjAKLW1vemRvd25sb2FkPT0xLjI2LjAKK21vemNyYXNoPT0yLjAu
MAogbW96aW5zdGFsbD09Mi4wLjAKIG1vemxlYWs9PTAuMgotbW96bmV0d29yaz09MC4yNworbW96
bmV0d29yaz09MS4xLjAKIG1venByb2Nlc3M9PTEuMC4wCi1tb3pwcm9maWxlPT0yLjQuMAotbW96
cnVubmVyPT03LjcuMAotbW96dmVyc2lvbj09Mi4yLjAKLXBzdXRpbD09NS42LjcKK21venByb2Zp
bGU9PTIuNS4wCittb3pydW5uZXI9PTcuOC4wCittb3p2ZXJzaW9uPT0yLjMuMAorcHN1dGlsPT01
LjcuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19zYXVjZS50eHQKaW5kZXggMzJiNWY2NGQxNGZkMDNkZjRlZWFjYjU3ODM5MjEwYTI2YTI4
M2ZhNy4uZTllOTc2NDc3OTZlN2Y5NDBmMmVlZjk4YzcyYjE5ODcxZDMyM2M3MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2Uu
dHh0CkBAIC0xLDMgKzEsMyBAQAogbW96cHJvY2Vzcz09MS4wLjAKIHNlbGVuaXVtPT0zLjE0MS4w
Ci1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKaW5kZXggOGYzMjNhMzM4NmM5OTdjYmNmYTAxM2U2
NTg1MDg2NDcxZGRmYTIwOC4uNDJlN2FiYmJhYjQ5MDkyMzcwNjVjYjAxMjVkYjcxMWExODYwNzg5
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpAQCAt
MSw1ICsxLDQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWltcG9y
dCBDb25maWdQYXJzZXIKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBA
IC03LDYgKzYsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxv
ZwogZnJvbSBtb3psb2cuaGFuZGxlcnMgaW1wb3J0IEJhc2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVy
CiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBNYWNoRm9ybWF0dGVyCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCitmcm9tIHNpeC5tb3Zlcy5jb25maWdwYXJzZXIgaW1wb3J0IENvbmZp
Z1BhcnNlcgogZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5lLCB3cHRydW5uZXIK
IAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQpAQCAt
NTgsNyArNTksNyBAQCBkZWYgdGVzdF9zZXR0aW5ncygpOgogICAgIH0KIAogZGVmIHJlYWRfY29u
ZmlnKCk6Ci0gICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgcGFy
c2VyID0gQ29uZmlnUGFyc2VyKCkKICAgICBwYXJzZXIucmVhZCgidGVzdC5jZmciKQogCiAgICAg
cnYgPSB7ImdlbmVyYWwiOnt9LApAQCAtODMsNyArODQsNyBAQCBkZWYgcnVuX3Rlc3RzKHByb2R1
Y3QsIGt3YXJncyk6CiAKIGRlZiBzZXR0aW5nc190b19hcmd2KHNldHRpbmdzKToKICAgICBydiA9
IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVtcygpOgorICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgogICAgICAgICBrZXkgPSAiLS0l
cyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFwcGVuZChr
ZXkpCkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0
dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZXJpdGVtcygpOgorICAgIGZvciBwcm9kdWN0
LCBwcm9kdWN0X3NldHRpbmdzIGluIGl0ZXJpdGVtcyhjb25maWdbInByb2R1Y3RzIl0pOgogICAg
ICAgICBpZiBhcmdzLnByb2R1Y3QgYW5kIHByb2R1Y3Qgbm90IGluIGFyZ3MucHJvZHVjdDoKICAg
ICAgICAgICAgIGNvbnRpbnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5p
CmluZGV4IGFkMzUwMmUwMmE5ZTgxMDE2OTQwYzhmMzlmNTY1NDBmNWFiMWYyNmQuLmM1NDRkYTdh
OTVkMmE5ODJjYWI4YjY4YWY1Mzc0NDBiNzFmYTA5NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdG94LmluaQpAQCAtMiw4ICsyLDggQEAKIHhmYWlsX3N0cmljdD10cnVlCiAKIFt0
b3hdCi1lbnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNh
ZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSxw
eTM2LWJhc2UKLXNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCitlbnZsaXN0ID0gcHky
Ny17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3
ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNSxweTM2LHB5MzcscHkz
OH0tYmFzZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAKIFt0ZXN0ZW52XQog
ZGVwcyA9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9n
CmluZGV4IDQwNmE1ZmFlMjU2NDI3MjI4NGFjNTcwMGNjMDQ2ZmIwYjY3YzFmNmEuLjU4ZTk3MGEw
ZWRmNmVkZmMxNjA3Yzc2NmE3NjNiZjk1MTUwZjYzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBv
cnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3ICsxNCw2IEBAIFByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5pbgogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURN
RS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lk
X3dlYmxheWVyLnB5CmluZGV4IDkzZjRkNmI2MzBkMjg4Yzc1Zjg4OGNiNzMwNGJiZjhhNDE5NWRi
NmMuLmY3NTU4N2Q4MzlmZmZjZjAzOTAxNzc5YTBiNjUxMjYxOTBiOWQ0ODEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xh
c3MgV2VibGF5ZXJTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRy
b2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5
CmluZGV4IGRjNjg3YjQ4ZWQ3YTlkZGU4MjczMzRhZThiNTkwOTZjYzU4ZDI0ZDcuLjg3OTA1Njc3
MDdlOTU3YTdiNjVkN2RjMTViYWFkNWUzMTkwYjhiYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2FuZHJvaWRfd2Vidmlldy5weQpAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNzIFN5c3RlbVdlYlZp
ZXdTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0
ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhp
bmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4K
LSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2Vs
Zi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggNjU1MzQ0NTgxOTczYzE1YjY1NzcyOWZl
YjczNmRkMjA3M2Q3OWEzMC4uYTAyN2NmMzI2MTBhNDllNjFmNDE0MWJmYjVmY2U1ZDA1MTM4NWIz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKQEAgLTMsNiArMyw3IEBAIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHNvY2tldAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBm
cm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZy
b20gLi53cHRjb21tYW5kbGluZSBpbXBvcnQgcmVxdWlyZV9hcmcgICMgbm9xYTogRjQwMQogCkBA
IC0xNDcsMTAgKzE0OCw2IEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICAgICAgIiIiQm9v
bGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyb3dzZXIgcHJvY2VzcyBpcyBzdGlsbCBydW5u
aW5nIiIiCiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR1cF9zc2woc2VsZiwgaG9zdHMpOgot
ICAgICAgICAiIiJSZXR1cm4gYSBjZXJ0aWZpY2F0ZSB0byB1c2UgZm9yIHRlc3RzIHJlcXVpcmlu
ZyBzc2wgdGhhdCB3aWxsIGJlIHRydXN0ZWQgYnkgdGhlIGJyb3dzZXIiIiIKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3NsIHRlc3Rpbmcgbm90IHN1cHBvcnRlZCIpCi0KICAg
ICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiQnJvd3Nlci1zcGVjaWZpYyBjbGVhbnVw
IHRoYXQgaXMgcnVuIGFmdGVyIHRoZSB0ZXN0cnVuIGlzIGZpbmlzaGVkIiIiCiAgICAgICAgIHBh
c3MKQEAgLTE5OSw1ICsxOTYsNSBAQCBjbGFzcyBFeGVjdXRvckJyb3dzZXIob2JqZWN0KToKICAg
ICB1cCB0aGUgYnJvd3NlciBmcm9tIHRoZSBydW5uZXIgcHJvY2Vzcy4KICAgICAiIiIKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3Mu
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhrd2FyZ3MpOgogICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXgg
NTEzZmQ1ZjQyNDkyZmNhNGY2MTE1NmU1NDU5NTc2ZDFjODQ2Njk4YS4uYmFjMWFmZmQzNjUwZTI0
YzRiOTZlZmM2NWU2YjQ2OTJjOWIyYjI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2Nocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CkBAIC0x
MjUsNyArMTI1LDcgQEAgY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBU
T0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAg
ICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vz
c2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlz
X2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYg
Y2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9j
aHJvbWVfYW5kcm9pZC5weQppbmRleCBiNGVkYzA1MGQwYzcwOWNmYTQ2N2E0M2I2ZTZhNDEyMDBh
YTA0YzczLi5jZDhjNDBmYWIxZmViMDYyOWE4MTRiMmJiYTY4ZWRlY2FhM2VlOGQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xh
c3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBU
aGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRv
ZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAg
ICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvY2hyb21lX2lvcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5Cmlu
ZGV4IGEwNDI5NjY1YzliYzU3ZTI3YzAyY2U4MWE3ZGViOTA5YjhmYTAwZjUuLjZkYjAxODhlNTVl
YmZmOGQzYTQwZjlhMTVkYzcxNDQxOWVkYWNiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9jaHJvbWVfaW9zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVf
aW9zLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIENocm9tZWlPU0Jyb3dzZXIoQnJvd3Nlcik6
CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMg
YWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIg
YSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBz
ZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUo
KQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlLnB5CmluZGV4IGQ5ZDBhZjExNWNjOWU5YzY0ZTkyN2IxNWNkZDI5MWYzMTRiMDdhZTUu
LjE4YTFlZDc4MTE4OWNjYTIzZGYyYTRlMWI1YjVkY2E4MzBiZDBlYTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAg
ICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIgaXMgYWxp
dmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBi
cm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQog
CiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2VkZ2VjaHJvbWl1bS5weQppbmRleCA2MzY4MGI2Nzc0YTI3NTkyNDkxZTY3MWY1M2Yx
NDBiNjVlMTcwNDJiLi41YzUxZjA2NmYwNDQxMzIxNjYwY2FiOTZmNmRlNTFhZjg2OGQzMTBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKQEAgLTEwNyw3ICsxMDcsNyBAQCBj
bGFzcyBFZGdlQ2hyb21pdW1Ccm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTog
VGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLA0KICAgICAgICAgIyBhbmQg
ZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbg0KICAg
ICAgICAgIyBpcyBhY3RpdmUuDQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUN
CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQogDQogICAgIGRlZiBjbGVh
bnVwKHNlbGYpOg0KICAgICAgICAgc2VsZi5zdG9wKCkNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnku
cHkKaW5kZXggOGEwZTVmNTc4YjJmZWI4NzFkZGQ1MGFiMDgxNjhjNmI5ZDQ1ZTRiMC4uZjZjNGM2
MDJhMzhjMDQzNjM3Y2Y5ZGJjOGJiYjUzNTBlYzk0NTI3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlw
aGFueS5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVs
dGlwbGllciwgbWF5YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9saXMKIGZyb20gLndl
YmtpdCBpbXBvcnQgV2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0
b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTog
RjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2Via2l0IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAx
CiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZXBpcGhhbnkiLApAQCAtMTEsNyArMTIs
OCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwKICAgICAgICAgICAg
ICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAg
ICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1
dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZl
clJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhl
Y3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9r
d2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2ZpcmVmb3gucHkKaW5kZXggMGY4MDc1MzM3ODEzNzgzYzc2ZTRiZTRkZWM5Y2M5MzFhNDI1MmM0
MS4uMmRlN2RmMzk2YmQyYTQ4Yjc4NjRhNjZhZWU0YjYyY2ZhMWZiMzY3NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2ZpcmVmb3gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNp
Z25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2Zyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBpbXBvcnQgbW96aW5mbwogaW1wb3J0IG1vemxlYWsKQEAg
LTI1LDYgKzI2LDcgQEAgZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcm1hcmlvbmV0dGUgaW1wb3J0
IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgICMg
bm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlV2RzcGVjRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAg
IyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKIAogCiBoZXJlID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQpAQCAtNjMsNiArNjUsOCBA
QCBkZWYgZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsICoq
a3dhcmdzKToKICAgICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Mzg3MjUKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0gIndpbiIgYW5kIHJ1
bl9pbmZvX2RhdGFbInByb2Nlc3NvciJdID09ICJhYXJjaDY0IjoKICAgICAgICAgcmV0dXJuIDQK
KyAgICBlbGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CisgICAgICAgIHJldHVybiAyCiAg
ICAgcmV0dXJuIDEKIAogCkBAIC04Miw2ICs4Niw3IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgImNh
X2NlcnRpZmljYXRlX3BhdGgiOiBjb25maWcuc3NsX2NvbmZpZ1siY2FfY2VydF9wYXRoIl0sCiAg
ICAgICAgICAgICAiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAogICAgICAgICAgICAgImVu
YWJsZV93ZWJyZW5kZXIiOiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSwKKyAgICAgICAgICAg
ICJlbmFibGVfZmlzc2lvbiI6IGt3YXJnc1siZW5hYmxlX2Zpc3Npb24iXSwKICAgICAgICAgICAg
ICJzdGFja2ZpeF9kaXIiOiBrd2FyZ3NbInN0YWNrZml4X2RpciJdLAogICAgICAgICAgICAgImJp
bmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJdLAogICAgICAgICAgICAgInRpbWVvdXRf
bXVsdGlwbGllciI6IGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBlLApAQCAtOTMsNyAr
OTgsOCBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25m
aWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdzIjoga3dhcmdzWyJj
aGFvc19tb2RlX2ZsYWdzIl0sCiAgICAgICAgICAgICAiY29uZmlnIjogY29uZmlnLAogICAgICAg
ICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0sCi0gICAg
ICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CisgICAgICAgICAgICAiaGVh
ZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAicHJlbG9hZF9icm93c2Vy
Ijoga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXX0KIAogCiBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKQEAg
LTE2OCwxNyArMTc0LDEzIEBAIGRlZiBydW5faW5mb19leHRyYXMoKiprd2FyZ3MpOgogICAgICAg
ICAgICJ3YXNtIjoga3dhcmdzLmdldCgid2FzbSIsIFRydWUpLAogICAgICAgICAgICJ2ZXJpZnki
OiBrd2FyZ3NbInZlcmlmeSJdLAogICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJncy5nZXQoImhl
YWRsZXNzIiwgRmFsc2UpIG9yICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmlyb24sCi0gICAgICAg
ICAgImZpc3Npb24iOiBnZXRfYm9vbF9wcmVmKCJmaXNzaW9uLmF1dG9zdGFydCIpfQorICAgICAg
ICAgICJzdy1lMTBzIjogVHJ1ZSwKKyAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVu
YWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KIAog
ICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0aGVyIHRoZSAicGFy
ZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBj
dXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLAogICAgICMgY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwcmVmIHdpdGggdGhlIGAtLXNldHByZWZgIENM
SQotICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLiBJZiBub3Qgc3VwcGxpZWQsIHRo
ZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgIyBgc3ctZTEwc2Agd2lsbCBiZSBmaWxsZWQgaW4gaW4g
YFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCi0gICAgIwotICAgICMgV2UgY2FuJ3QgY2FwdHVyZSB0
aGUgZGVmYXVsdCB2YWx1ZSByaWdodCBub3cgYmVjYXVzZSAoY3VycmVudGx5KSwgaXQKLSAgICAj
IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbmlnaHRseV9idWlsZGAsIHdoaWNoIGlzbid0IGtu
b3duIHVudGlsCi0gICAgIyBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KKyAgICAjIGZsYWcsIHdo
aWNoIGlzIGNoZWNrZWQgaGVyZS4KICAgICBzd19lMTBzX292ZXJyaWRlID0gZ2V0X2Jvb2xfcHJl
Zl9pZl9leGlzdHMoImRvbS5zZXJ2aWNlV29ya2Vycy5wYXJlbnRfaW50ZXJjZXB0IikKICAgICBp
ZiBzd19lMTBzX292ZXJyaWRlIGlzIG5vdCBOb25lOgogICAgICAgICBydlsic3ctZTEwcyJdID0g
c3dfZTEwc19vdmVycmlkZQpAQCAtMjAzLDc5ICsyMDUsNjAgQEAgZGVmIHVwZGF0ZV9wcm9wZXJ0
aWVzKCk6CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJp
dHMiXX0pCiAKIAotY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0gICAgaW5pdF90aW1l
b3V0ID0gNzAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKK2NsYXNzIEZpcmVmb3hJbnN0YW5j
ZU1hbmFnZXIob2JqZWN0KToKKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4
dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3ltYm9s
c19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUs
Ci0gICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwg
ZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGlyPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25lLCBsZWFrX2NoZWNr
PUZhbHNlLCBhc2FuPUZhbHNlLAotICAgICAgICAgICAgICAgICBzdHlsb190aHJlYWRzPTEsIGNo
YW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJyb3dzZXJfY2hhbm5lbD0ibmlnaHRs
eSIsIGhlYWRsZXNzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhz
ZWxmLCBsb2dnZXIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBiaW5h
cnlfYXJncywgcHJvZmlsZV9jcmVhdG9yLCBkZWJ1Z19pbmZvLAorICAgICAgICAgICAgICAgICBj
aGFvc19tb2RlX2ZsYWdzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwgc3R5bG9fdGhyZWFk
cywKKyAgICAgICAgICAgICAgICAgbGVha19jaGVjaywgc3RhY2tmaXhfZGlyLCBzeW1ib2xzX3Bh
dGgsIGFzYW4pOgorICAgICAgICAiIiJPYmplY3QgdGhhdCBtYW5hZ2VzIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBpbnN0YW5jZXMgb2YgRmlyZWZveC4iIiIKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKLSAgICAgICAgc2VsZi5wcmVmc19y
b290ID0gcHJlZnNfcm9vdAotICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQotICAg
ICAgICBzZWxmLmV4dHJhX3ByZWZzID0gZXh0cmFfcHJlZnMKLSAgICAgICAgc2VsZi5tYXJpb25l
dHRlX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAgICAgc2VsZi5iYXNlX3Byb2ZpbGUgPSBw
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdf
aW5mbwotICAgICAgICBzZWxmLnByb2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuc3ltYm9sc19w
YXRoID0gc3ltYm9sc19wYXRoCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFyeSA9IHN0YWNr
d2Fsa19iaW5hcnkKLSAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlm
aWNhdGVfcGF0aAotICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGlsX2JpbmFy
eQotICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuY2hhb3NfbW9kZV9mbGFn
cyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5oZWFkbGVzcyA9IGhlYWRsZXNzCiAg
ICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKLSAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0gICAgICAgIGlmIHN0YWNrZml4X2RpcjoKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4
ZXIgPSBnZXRfc3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bWJvbHNf
cGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25l
CisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2Vs
Zi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAg
ICAgICBzZWxmLmFzYW4gPSBhc2FuCiAKLSAgICAgICAgaWYgdGltZW91dF9tdWx0aXBsaWVyOgot
ICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGltZW91dCAqIHRpbWVv
dXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxm
LmN1cnJlbnQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5hc2FuID0gYXNhbgotICAgICAgICBzZWxm
LmxzYW5fYWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5sc2FuX21heF9zdGFja19kZXB0aCA9
IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0gTm9uZQotICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFr
X2NoZWNrCi0gICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5sc2FuX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxv
X3RocmVhZHMKLSAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFn
cwotICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAotICAgICAg
ICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYg
dGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2V0
dGluZ3Moc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5s
ZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAgICAibHNhbl9hbGxv
d2VkIjogdGVzdC5sc2FuX2FsbG93ZWQsCi0gICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNr
X2RlcHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKLSAgICAgICAgICAgICAgICAibW96
bGVha19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwK
LSAgICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFu
ZCB0ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBn
ZXQoc2VsZik6CisgICAgICAgICIiIkdldCBhIEJyb3dzZXJJbnN0YW5jZSBmb3IgYSBydW5uaW5n
IEZpcmVmb3guCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgotICAgICAgICAgICAg
Z3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
IHBlciBpbnN0YW5jZSwgYW5kIGJldHdlZW4gY2FsbHMgc3RvcF9jdXJyZW50KCkKKyAgICAgICAg
bXVzdCBiZSBjYWxsZWQuIiIiCisgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmdyb3VwX21l
dGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEKLSAgICAgICAgc2VsZi5sc2FuX2FsbG93ZWQgPSBrd2Fy
Z3MuZ2V0KCJsc2FuX2FsbG93ZWQiKQotICAgICAgICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRo
ID0ga3dhcmdzLmdldCgibHNhbl9tYXhfc3RhY2tfZGVwdGgiKQotICAgICAgICBzZWxmLm1vemxl
YWtfYWxsb3dlZCA9IGt3YXJncy5nZXQoIm1vemxlYWtfYWxsb3dlZCIpCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0ga3dhcmdzLmdldCgibW96bGVha190aHJlc2hvbGRzIikKKyAg
ICBkZWYgc3RvcF9jdXJyZW50KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgIiIiU2h1dGRv
d24gdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgRmlyZWZveC4KIAotICAgICAgICBpZiBzZWxmLm1h
cmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQg
PSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgVGhlIEJyb3dzZXJJbnN0YW5jZSByZW1haW5zIGF2
YWlsYWJsZSB0aHJvdWdoIHNlbGYucHJldmlvdXMsIHNpbmNlIHNvbWUKKyAgICAgICAgb3BlcmF0
aW9ucyBoYXBwZW4gYWZ0ZXIgc2h1dGRvd24uIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmN1cnJl
bnQ6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmFzYW46Ci0gICAgICAg
ICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsuTFNBTkxlYWtzKHNlbGYubG9nZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZT1n
cm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5fYWxsb3dlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVj
b3JkZWRGcmFtZXM9c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKKyAgICAgICAgc2VsZi5jdXJy
ZW50LnN0b3AoZm9yY2UpCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxmLmN1cnJlbnQKKyAg
ICAgICAgc2VsZi5jdXJyZW50ID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAg
ICAiIiJTdGFydCBhbiBpbnN0YW5jZSBvZiBGaXJlZm94LCByZXR1cm5pbmcgYSBCcm93c2VySW5z
dGFuY2UgaGFuZGxlIiIiCisgICAgICAgIHByb2ZpbGUgPSBzZWxmLmJhc2VfcHJvZmlsZS5jbG9u
ZShzZWxmLmJhc2VfcHJvZmlsZS5wcm9maWxlKQorCisgICAgICAgIG1hcmlvbmV0dGVfcG9ydCA9
IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Im1hcmlv
bmV0dGUucG9ydCI6IG1hcmlvbmV0dGVfcG9ydH0pCiAKICAgICAgICAgZW52ID0gdGVzdF9lbnZp
cm9ubWVudCh4cmVQYXRoPW9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9c2VsZi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25l
LApAQCAtMjkyLDQwICsyNzUsNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCiAKLSAg
ICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQotCi0gICAgICAgIHNlbGYucHJv
ZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAgICBz
ZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRlLnBv
cnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKLSAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2Nh
bERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCi0gICAgICAgICAg
ICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCi0gICAgICAgICAgICAjIFRPRE86IFJl
bW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcgOTA1NDA0KQot
ICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCi0gICAgICAgICAgICAicGxhY2Vz
Lmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6
IFRydWUsCi0gICAgICAgIH0pCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAgICAgICAgICAgIHNl
bGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFy
dCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKLSAg
ICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXlvdXQuaW50ZXJydXB0
aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKLQotICAgICAgICBpZiBzZWxmLmxlYWtfY2hl
Y2s6Ci0gICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ciICUgb3MuZ2V0cGlkKCkp
Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpOgot
ICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpCi0gICAgICAg
ICAgICBlbnZbIlhQQ09NX01FTV9CTE9BVF9MT0ciXSA9IHNlbGYubGVha19yZXBvcnRfZmlsZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQot
Ci0gICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEwcywgZGlzYWJsZSBod2FjY2VsCi0g
ICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpIGluICgiV2luZG93cyIs
ICJNaWNyb3NvZnQiKSBhbmQKLSAgICAgICAgICAgICc1LjEnIGluIHBsYXRmb3JtLnZlcnNpb24o
KSk6Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5ZXJzLmFj
Y2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYuY2FfY2VydGlm
aWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3NsKCkKLQog
ICAgICAgICBhcmdzID0gc2VsZi5iaW5hcnlfYXJnc1s6XSBpZiBzZWxmLmJpbmFyeV9hcmdzIGVs
c2UgW10KICAgICAgICAgYXJncyArPSBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJvdXQ6Ymxh
bmsiXQogCkBAIC0zMzMsNjAgKzI4MiwxMDEgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nl
cik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQog
Ci0gICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXNlbGYucHJvZmls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT1jbWRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJncz17InByb2Nlc3NPdXRw
dXRMaW5lIjogW3NlbGYub25fb3V0cHV0XX0pCisgICAgICAgIGlmIHNlbGYubGVha19jaGVjazoK
KyAgICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocHJvZmlsZS5wcm9m
aWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBpZCgpKQorICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMobGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICAgICAgICAgb3Mu
cmVtb3ZlKGxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgICAgICBlbnZbIlhQQ09NX01FTV9CTE9B
VF9MT0ciXSA9IGxlYWtfcmVwb3J0X2ZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxl
YWtfcmVwb3J0X2ZpbGUgPSBOb25lCisKKyAgICAgICAgb3V0cHV0X2hhbmRsZXIgPSBPdXRwdXRI
YW5kbGVyKHNlbGYubG9nZ2VyLCBzZWxmLnN0YWNrZml4X2Rpciwgc2VsZi5zeW1ib2xzX3BhdGgs
IHNlbGYuYXNhbikKKyAgICAgICAgcnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXByb2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PWNtZFswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0TGluZSI6IFtvdXRw
dXRfaGFuZGxlcl19KQorICAgICAgICBpbnN0YW5jZSA9IEJyb3dzZXJJbnN0YW5jZShzZWxmLmxv
Z2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9oYW5kbGVyLCBsZWFrX3JlcG9ydF9maWxlKQogCiAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBGaXJlZm94IikKLQotICAgICAgICBzZWxmLnJ1bm5l
ci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVyYWN0aXZlPXNlbGYuZGVidWdfaW5m
byBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQorICAgICAgICBydW5uZXIuc3RhcnQo
ZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVnX2luZm8gYW5kIHNl
bGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZp
cmVmb3ggU3RhcnRlZCIpCiAKLSAgICBkZWYgbG9hZF9wcmVmcyhzZWxmKToKLSAgICAgICAgcHJl
ZnMgPSBQcmVmZXJlbmNlcygpCi0KLSAgICAgICAgcHJlZl9wYXRocyA9IFtdCi0KLSAgICAgICAg
cHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJvZmlsZXMuanNvbicp
Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKLSAgICAgICAgICAgIHdpdGgg
b3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBq
c29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAgICAgICAgICAgICAgICAg
aWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19y
b290LCBuYW1lLCAndXNlci5qcycpKQotICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgIT0g
J3VuaXR0ZXN0LWZlYXR1cmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMu
YXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZpbGVzIHVzZWQgYmVm
b3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hlbiBubyBsb25nZXIg
c3VwcG9ydGVkKQotICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAoCi0gICAgICAgICAg
ICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZzX2dlbmVyYWwuanMnKSwg
ICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKLSAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMnKSwgICMgVXNlZCBpbiBG
aXJlZm94IDYxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBsZWdhY3lf
cHJlZl9wYXRoczoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkKLQotICAgICAgICBmb3Ig
cGF0aCBpbiBwcmVmX3BhdGhzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6
Ci0gICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJlYWRfcHJlZnMocGF0aCkp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBwYXRoKQotCi0gICAgICAg
ICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKLSAgICAgICAgcHJlZnMuYWRkKHNlbGYuZXh0
cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworY2xhc3Mg
U2luZ2xlSW5zdGFuY2VNYW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIpOgorICAgICIiIkZp
cmVmb3hJbnN0YW5jZU1hbmFnZXIgdGhhdCBtYW5hZ2VzIGEgc2luZ2xlIEZpcmVmb3ggaW5zdGFu
Y2UiIiIKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuY3VycmVu
dCwgKCJUcmllZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0aGF0IGhhcyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5nIGluc3RhbmNlIikK
KyAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMuY2xl
YW51cCgpCisgICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLmN1
cnJlbnQgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudAorCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9yIGluc3RhbmNlIGlu
IFtzZWxmLnByZXZpb3VzLCBzZWxmLmN1cnJlbnRdOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6
CisgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSkKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBQcmVsb2FkSW5zdGFuY2VNYW5hZ2VyKEZpcmVm
b3hJbnN0YW5jZU1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICAiIiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQga2VlcHMgb25jZSBG
aXJlZm94IGluc3RhbmNlIHByZWxvYWRlZAorICAgICAgICB0byBhbGxvdyByYXBpZCByZXN1bXB0
aW9uIGFmdGVyIGFuIGluc3RhbmNlIHNodXRzIGRvd24uIiIiCisgICAgICAgIHN1cGVyKFByZWxv
YWRJbnN0YW5jZU1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5wZW5kaW5nID0gTm9uZQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLmN1cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBvbiBJbnN0YW5jZU1h
bmFnZXIgdGhhdCBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBl
eGlzdGluZyBpbnN0YW5jZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6CisgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5v
bmUKKyAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZzoKKyAgICAgICAgICAgIHNlbGYucGVuZGlu
ZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBzZWxmLnBlbmRpbmcKKyAg
ICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1
cnJlbnQKKworICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGZv
ciBpbnN0YW5jZSwgc2tpcF9tYXJpb25ldHRlIGluIFsoc2VsZi5wcmV2aW91cywgRmFsc2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY3VycmVudCwg
RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
cGVuZGluZywgVHJ1ZSldOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6CisgICAgICAgICAgICAg
ICAgaW5zdGFuY2Uuc3RvcChmb3JjZSwgc2tpcF9tYXJpb25ldHRlPXNraXBfbWFyaW9uZXR0ZSkK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBCcm93c2VySW5z
dGFuY2Uob2JqZWN0KToKKyAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKIAotICAgICAgICByZXR1
cm4gcHJlZnMoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHJ1bm5lciwgbWFyaW9u
ZXR0ZV9wb3J0LCBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICIi
IkhhbmRsZSB0byBhIHJ1bm5pbmcgRmlyZWZveCBpbnN0YW5jZSIiIgorICAgICAgICBzZWxmLmxv
Z2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgorICAgICAgICBzZWxm
Lm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0dGVfcG9ydAorICAgICAgICBzZWxmLm91dHB1dF9o
YW5kbGVyID0gb3V0cHV0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0g
bGVha19yZXBvcnRfZmlsZQogCi0gICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAg
IGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlLCBza2lwX21hcmlvbmV0dGU9RmFsc2UpOgorICAg
ICAgICAiIiJTdG9wIEZpcmVmb3giIiIKICAgICAgICAgaWYgc2VsZi5ydW5uZXIgaXMgbm90IE5v
bmUgYW5kIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJTdG9wcGluZyBGaXJlZm94ICVzIiAlIHNlbGYucGlkKCkpCisgICAgICAgICAgICBz
aHV0ZG93bl9tZXRob2RzID0gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVyLndhaXQoc2VsZi5z
aHV0ZG93bl90aW1lb3V0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxz
ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdURVJNKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNp
Z25hbC5TSUdLSUxMKSldCisgICAgICAgICAgICBpZiBza2lwX21hcmlvbmV0dGU6CisgICAgICAg
ICAgICAgICAgc2h1dGRvd25fbWV0aG9kcyA9IHNodXRkb3duX21ldGhvZHNbMTpdCiAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBGb3IgRmlyZWZveCB3ZSBhc3N1bWUgdGhhdCBz
dG9wcGluZyB0aGUgcnVubmVyIHByb21wdHMgdGhlCiAgICAgICAgICAgICAgICAgIyBicm93c2Vy
IHRvIHNodXQgZG93bi4gVGhpcyBhbGxvd3MgdGhlIGxlYWsgbG9nIHRvIGJlIHdyaXR0ZW4KLSAg
ICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBbKFRydWUsIGxhbWJkYTogc2VsZi5y
dW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFs
LlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNl
LCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV06CisgICAgICAgICAg
ICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gc2h1dGRvd25fbWV0aG9kczoKICAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGZvcmNlIG9yIG5vdCBjbGVhbjoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldGNvZGUgPSBzdG9wX2YoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29k
ZSBpcyBub3QgTm9uZToKQEAgLTM5NSwyMyArMzg1LDggQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAj
IFRoaXMgY2FuIGhhcHBlbiBvbiBXaW5kb3dzIGlmIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgZGVh
ZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5wcm9jZXNzX2xlYWtzKCkKLSAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQotCi0gICAgZGVmIHByb2Nlc3NfbGVh
a3Moc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlBST0NFU1MgTEVBS1MgJXMiICUg
c2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAgICAgICBpZiBzZWxmLmxzYW5faGFuZGxlcjoKLSAg
ICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyLnByb2Nlc3MoKQotICAgICAgICBpZiBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtb3psZWFrLnByb2Nlc3Nf
bGVha19sb2coCi0gICAgICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlLAotICAgICAg
ICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKLSAgICAg
ICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0sCi0gICAgICAgICAg
ICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNrX2ZpeGVyPXNlbGYu
c3RhY2tfZml4ZXIsCi0gICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5ncm91cF9tZXRhZGF0YS5n
ZXQoInNjb3BlIiksCi0gICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLm1vemxlYWtfYWxsb3dl
ZAotICAgICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc2tpcF9tYXJpb25ldHRlOgorICAgICAg
ICAgICAgc2VsZi5vdXRwdXRfaGFuZGxlci5hZnRlcl9zdG9wKCkKIAogICAgIGRlZiBwaWQoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBpcyBOb25lOgpAQCAt
NDIyLDQ0ICszOTcsMjA4IEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIG9uX291dHB1dChzZWxmLCBsaW5lKToKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAg
ICAgIGlmIHNlbGYucnVubmVyOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1
bm5pbmcoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgor
ICAgICAgICAjIG1venByb2ZpbGUgaGFuZGxlcyBkZWxldGluZyB0aGUgcHJvZmlsZSB3aGVuIHRo
ZSByZWZjb3VudCByZWFjaGVzIDAKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKworY2xh
c3MgT3V0cHV0SGFuZGxlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHN0YWNrZml4X2Rpciwgc3ltYm9sc19wYXRoLCBhc2FuKToKKyAgICAgICAgIiIiRmlsdGVyIGZv
ciBoYW5kbGluZyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFRoaXMgcmVjZWl2
ZXMgRmlyZWZveCBwcm9jZXNzIG91dHB1dCBpbiB0aGUgX19jYWxsX18gZnVuY3Rpb24sIGRvZXMK
KyAgICAgICAgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aGF0J3MgcmVxdWlyZWQsIGFuZCBk
ZWNpZGVzIHdoZXRoZXIgdG8gbG9nCisgICAgICAgIHRoZSBvdXRwdXQuIEJlY2F1c2UgdGhlIEZp
cmVmb3ggcHJvY2VzcyBjYW4gYmUgc3RhcnRlZCBiZWZvcmUgd2Uga25vdworICAgICAgICB3aGlj
aCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgd2UgYnVmZmVyIGFsbCBvdXRwdXQg
dW50aWwKKyAgICAgICAgc2V0dXAoKSBpcyBjYWxsZWQuIFRoaXMgaXMgcmVzcG9uc2libGUgZm9y
IGRvaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uCisgICAgICAgIG9mIHRoZSBvdXRwdXQgaGFu
ZGxlcnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgICMgVGhlc2UgYXJlIGZpbGxlZCBpbiBhZnRlciBzZXR1cCgpIGlzIGNhbGxlZAorICAgICAg
ICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoID0gc3lt
Ym9sc19wYXRoCisgICAgICAgIGlmIHN0YWNrZml4X2RpcjoKKyAgICAgICAgICAgICMgV2UgaGlk
ZSBlcnJvcnMgYmVjYXVzZSB0aGV5IGNhdXNlIGRpc2NvbmNlcnRpbmcgYENSSVRJQ0FMYAorICAg
ICAgICAgICAgIyB3YXJuaW5ncyBpbiB3ZWIgcGxhdGZvcm0gdGVzdCBvdXRwdXQuCisgICAgICAg
ICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0aW9uKHN0YWNrZml4
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcnM9VHJ1ZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25lCisgICAgICAgIHNlbGYuYXNhbiA9
IGFzYW4KKworICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t
b3psZWFrX2FsbG93ZWQgPSBOb25lCisgICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0g
Tm9uZQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0ge30KKworICAgICAgICBzZWxmLmxp
bmVfYnVmZmVyID0gW10KKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBGYWxzZQorCisgICAgZGVm
IHNldHVwKHNlbGYsIGluc3RhbmNlPU5vbmUsIGdyb3VwX21ldGFkYXRhPU5vbmUsIGxzYW5fZGlz
YWJsZWQ9RmFsc2UsCisgICAgICAgICAgICAgIGxzYW5fYWxsb3dlZD1Ob25lLCBsc2FuX21heF9z
dGFja19kZXB0aD1Ob25lLCBtb3psZWFrX2FsbG93ZWQ9Tm9uZSwKKyAgICAgICAgICAgICAgbW96
bGVha190aHJlc2hvbGRzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ29uZmlndXJlIHRo
ZSBvdXRwdXQgaGFuZGxlciIiIgorICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKKwor
ICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbWV0
YWRhdGEgPSB7fQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEK
KworICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IG1vemxlYWtfYWxsb3dlZAorICAgICAg
ICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IG1vemxlYWtfdGhyZXNob2xkcworCisgICAgICAg
IGlmIHNlbGYuYXNhbjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gbW96bGVhay5M
U0FOTGVha3Moc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiLCAiLyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2Vk
PWxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9bHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93QWxsPWxz
YW5fZGlzYWJsZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxl
ciA9IE5vbmUKKworICAgICAgICBzZWxmLnNldHVwX3JhbiA9IFRydWUKKworICAgICAgICBmb3Ig
bGluZSBpbiBzZWxmLmxpbmVfYnVmZmVyOgorICAgICAgICAgICAgc2VsZi5fX2NhbGxfXyhsaW5l
KQorICAgICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKworICAgIGRlZiBhZnRlcl9zdG9wKHNl
bGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtTICVzIiAlIHNlbGYu
aW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSkKKyAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6
CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKKyAgICAgICAgaWYgc2Vs
Zi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBX
ZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5nIGxlYWtzIGluIHRoZSB0YWIgYmVjYXVzZSBpdCBjYW4g
aGFwcGVuIHRoYXQgdGhlCisgICAgICAgICAgICAjIGNvbnRlbnQgcHJvY2VzcyBjcmFzaGVkIGFu
ZCBpbiB0aGF0IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBmYWlsLgorICAgICAgICAg
ICAgIyBJZGVhbGx5IHdlIHdvdWxkIHJlY29yZCB3aGljaCBjb250ZW50IHByb2Nlc3MgY3Jhc2hl
ZCBhbmQganVzdCBza2lwIHRob3NlLgorICAgICAgICAgICAgbW96bGVhay5wcm9jZXNzX2xlYWtf
bG9nKAorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSwKKyAg
ICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3RocmVzaG9sZHMsCisg
ICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJ0YWIiLCAiZ21wbHVnaW4iXSwK
KyAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgc3RhY2tf
Zml4ZXI9c2VsZi5zdGFja19maXhlciwKKyAgICAgICAgICAgICAgICBzY29wZT1zZWxmLmdyb3Vw
X21ldGFkYXRhLmdldCgic2NvcGUiKSwKKyAgICAgICAgICAgICAgICBhbGxvd2VkPXNlbGYubW96
bGVha19hbGxvd2VkKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGxpbmUpOgogICAgICAgICAi
IiJXcml0ZSBhIGxpbmUgb2Ygb3V0cHV0IGZyb20gdGhlIGZpcmVmb3ggcHJvY2VzcyB0byB0aGUg
bG9nIiIiCi0gICAgICAgIGlmICJHTGliLUdPYmplY3QtQ1JJVElDQUwiIGluIGxpbmU6CisgICAg
ICAgIGlmIGIiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgogICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXR1cF9yYW46
CisgICAgICAgICAgICAgICAgc2VsZi5saW5lX2J1ZmZlci5hcHBlbmQobGluZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRhdGEgPSBsaW5lLmRlY29kZSgidXRmOCIsICJy
ZXBsYWNlIikKICAgICAgICAgICAgIGlmIHNlbGYuc3RhY2tfZml4ZXI6CiAgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYuc3RhY2tfZml4ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIHNlbGYubHNh
bl9oYW5kbGVyOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmxzYW5faGFuZGxlci5sb2co
ZGF0YSkKICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5waWQoKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLmluc3RhbmNlIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UucnVubmVyLnByb2Nl
c3NfaGFuZGxlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIucGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0iICIuam9pbihzZWxmLnJ1bm5lci5jb21t
YW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PSIgIi5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLmNvbW1hbmQpKQogCi0gICAgZGVmIGlzX2Fs
aXZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJ1bm5lci5pc19ydW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYg
Y2xlYW51cChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc3RvcChmb3JjZSkKK2Ns
YXNzIFByb2ZpbGVDcmVhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLCBlMTBzLAorICAg
ICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBiaW5hcnksIGNl
cnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jvb3QKKyAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKKyAgICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUK
KyAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCisgICAgICAgIHNlbGYuZTEw
cyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfZmlzc2lvbiA9IGVuYWJsZV9maXNzaW9uCisg
ICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNl
bGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKKyAgICAgICAgc2Vs
Zi5iaW5hcnkgPSBiaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRp
bF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlmaWNh
dGVfcGF0aAogCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIGFzc2Vy
dCBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBub3QgTm9uZQotICAgICAgICByZXR1cm4gRXhlY3V0
b3JCcm93c2VyLCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fQorICAg
IGRlZiBjcmVhdGUoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSBhIEZpcmVmb3ggcHJvZmlsZSBh
bmQgcmV0dXJuIHRoZSBtb3pwcm9maWxlIFByb2ZpbGUgb2JqZWN0IHBvaW50aW5nIGF0IHRoYXQK
KyAgICAgICAgcHJvZmlsZSIiIgorICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYuX2xvYWRfcHJl
ZnMoKQogCi0gICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgotICAgICAg
ICBkdW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgIm1pbmlkdW1w
cyIpCisgICAgICAgIHByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJl
bmNlcykKKyAgICAgICAgc2VsZi5fc2V0X3JlcXVpcmVkX3ByZWZzKHByb2ZpbGUpCisgICAgICAg
IGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX3NldHVwX3NzbChwcm9maWxlKQorCisgICAgICAgIHJldHVybiBwcm9maWxlCisKKyAgICBk
ZWYgX2xvYWRfcHJlZnMoc2VsZik6CisgICAgICAgIHByZWZzID0gUHJlZmVyZW5jZXMoKQorCisg
ICAgICAgIHByZWZfcGF0aHMgPSBbXQogCi0gICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxv
Z19jcmFzaGVzKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxrX2JpbmFy
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9j
ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3Qp
KQorICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdwcm9m
aWxlcy5qc29uJykKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocHJvZmlsZXMpOgorICAgICAg
ICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZv
ciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10ZXN0cyddOgorICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAoTm9uZSwgJ25pZ2h0bHknKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihz
ZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCisgICAgICAgICAgICAgICAgICAgIGVs
aWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgbmFtZSwgJ3Vz
ZXIuanMnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT2xkIHByZWZlcmVuY2UgZmls
ZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVzLmpzb24gKHJlbW92ZSB3aGVu
IG5vIGxvbmdlciBzdXBwb3J0ZWQpCisgICAgICAgICAgICBsZWdhY3lfcHJlZl9wYXRocyA9ICgK
KyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJlZnNfZ2Vu
ZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBiZWxvdworICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21tb24nLCAndXNlci5qcycpLCAg
IyBVc2VkIGluIEZpcmVmb3ggNjEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBwYXRo
IGluIGxlZ2FjeV9wcmVmX3BhdGhzOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChwYXRoKQorCisg
ICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBwcmVmcy5hZGQoUHJlZmVyZW5jZXMucmVhZF9w
cmVmcyhwYXRoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBmaWxlIGluICVzIiAlIHBhdGgp
CiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYpOgorICAgICAgICAjIEFkZCBhbnkgY3VzdG9tIHBy
ZWZlcmVuY2VzCisgICAgICAgIHByZWZzLmFkZChzZWxmLmV4dHJhX3ByZWZzLCBjYXN0PVRydWUp
CisKKyAgICAgICAgcmV0dXJuIHByZWZzKCkKKworICAgIGRlZiBfc2V0X3JlcXVpcmVkX3ByZWZz
KHNlbGYsIHByb2ZpbGUpOgorICAgICAgICAiIiJTZXQgcHJlZmVyZW5jZXMgcmVxdWlyZWQgZm9y
IHdwdHJ1bm5lciB0byBmdW5jdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0
IHNldCB0aGUgbWFyaW9uZXR0ZSBwb3J0LCBzaW5jZSB3ZSBkb24ndCBhbHdheXMKKyAgICAgICAg
a25vdyB0aGF0IGF0IHByb2ZpbGUgY3JlYXRpb24gdGltZS4gU28gdGhlIGNhbGxlciBpcyByZXNw
b25pc2JsZSBmb3IKKyAgICAgICAgc2V0dGluZyB0aGF0IG9uY2UgaXQncyBhdmFpbGFibGUuIiIi
CisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAgICAgICJuZXR3b3Jr
LmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCisg
ICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCisgICAgICAgICAgICAj
IFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcg
OTA1NDA0KQorICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCisgICAgICAgICAg
ICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAorICAgICAgICAgICAgIm5ldHdvcmsu
cHJlbG9hZCI6IFRydWUsCisgICAgICAgIH0pCisgICAgICAgIGlmIHNlbGYuZTEwczoKKyAgICAg
ICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRv
c3RhcnQiOiBUcnVlfSkKKworICAgICAgICBpZiBzZWxmLmVuYWJsZV9maXNzaW9uOgorICAgICAg
ICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJmaXNzaW9uLmF1dG9zdGFydCI6IFRydWV9
KQorCisgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAg
IHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVycnVwdGlibGUtcmVmbG93LmVu
YWJsZWQiOiBGYWxzZX0pCisKKyAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lueHAgKyBlMTBzLCBk
aXNhYmxlIGh3YWNjZWwKKyAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxhdGZvcm0uc3lzdGVt
KCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAorICAgICAgICAgICAgIjUuMSIgaW4g
cGxhdGZvcm0udmVyc2lvbigpKToKKyAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0pCisKKyAgICBkZWYg
X3NldHVwX3NzbChzZWxmLCBwcm9maWxlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgY2VydGlmaWNh
dGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMgaXMgY29uZmlndXJl
ZAogICAgICAgICB0byB0cnVzdCB0aGUgQ0EgQ2VydGlmaWNhdGUgdGhhdCBoYXMgc2lnbmVkIHRo
ZSB3ZWItcGxhdGZvcm0udGVzdCBzZXJ2ZXIKICAgICAgICAgY2VydGlmaWNhdGUuIiIiCkBAIC00
OTAsMTYgKzYyOSwxNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
ICAgIGNtZCA9IFtzZWxmLmNlcnR1dGlsX2JpbmFyeV0gKyBsaXN0KGFyZ3MpCiAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dCgiY2VydHV0aWwiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnBy
b2Nlc3MuU1RET1VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
Ii5qb2luKGNtZCkpCiAKLSAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnByb2Zp
bGUucHJvZmlsZSwgIi5jcnRkYnB3IikKKyAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihw
cm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCiAgICAgICAgIHdpdGggb3Blbihwd19wYXRoLCAi
dyIpIGFzIGY6CiAgICAgICAgICAgICAjIFVzZSBlbXB0eSBwYXNzd29yZCBmb3IgY2VydGlmaWNh
dGUgZGIKICAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgICAgICBjZXJ0X2RiX3BhdGgg
PSBzZWxmLnByb2ZpbGUucHJvZmlsZQorICAgICAgICBjZXJ0X2RiX3BhdGggPSBwcm9maWxlLnBy
b2ZpbGUKIAogICAgICAgICAjIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBkYgogICAgICAgICBj
ZXJ0dXRpbCgiLU4iLCAiLWQiLCBjZXJ0X2RiX3BhdGgsICItZiIsIHB3X3BhdGgpCkBAIC01MTAs
MyArNjQ5LDEwNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKIAogICAgICAgICAj
IExpc3QgYWxsIGNlcnRzIGluIHRoZSBkYXRhYmFzZQogICAgICAgICBjZXJ0dXRpbCgiLUwiLCAi
LWQiLCBjZXJ0X2RiX3BhdGgpCisKKworCitjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToK
KyAgICBpbml0X3RpbWVvdXQgPSA3MAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19i
aW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAgICAgICAgIGNhX2Nl
cnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwg
ZW5hYmxlX2Zpc3Npb249RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0YWNrZml4X2Rpcj1Ob25l
LCBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgYXNhbj1GYWxzZSwgc3R5bG9fdGhyZWFkcz0xLCBjaGFv
c19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLAorICAgICAgICAgICAgICAgICBicm93c2Vy
X2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFkbGVzcz1Ob25lLCBwcmVsb2FkX2Jyb3dzZXI9RmFsc2Us
ICoqa3dhcmdzKToKKyAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBpZiB0aW1lb3V0X211bHRpcGxp
ZXI6CisgICAgICAgICAgICBzZWxmLmluaXRfdGltZW91dCA9IHNlbGYuaW5pdF90aW1lb3V0ICog
dGltZW91dF9tdWx0aXBsaWVyCisKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKKworICAg
ICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJv
bHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBz
dGFja3dhbGtfYmluYXJ5CisKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgorICAgICAgICBzZWxm
LmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisKKyAgICAgICAgcHJvZmlsZV9jcmVhdG9yID0gUHJv
ZmlsZUNyZWF0b3IobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJl
ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQor
CisgICAgICAgIGlmIHByZWxvYWRfYnJvd3NlcjoKKyAgICAgICAgICAgIGluc3RhbmNlX21hbmFn
ZXJfY2xzID0gUHJlbG9hZEluc3RhbmNlTWFuYWdlcgorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBTaW5nbGVJbnN0YW5jZU1hbmFnZXIKKyAgICAgICAg
c2VsZi5pbnN0YW5jZV9tYW5hZ2VyID0gaW5zdGFuY2VfbWFuYWdlcl9jbHMobG9nZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
bmFyeV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlX2NyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxhZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRsZXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi
bGVfd2VicmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFrX2NoZWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNh
bikKKworCisgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgorICAgICAgICByZXR1cm4geyJj
aGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVha3MsCisgICAgICAg
ICAgICAgICAgImxzYW5fZGlzYWJsZWQiOiB0ZXN0LmxzYW5fZGlzYWJsZWQsCisgICAgICAgICAg
ICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAg
ICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5t
b3psZWFrX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNl
bGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKworICAgIGRlZiBzdGFy
dChzZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW5z
dGFuY2UgPSBzZWxmLmluc3RhbmNlX21hbmFnZXIuZ2V0KCkKKyAgICAgICAgc2VsZi5pbnN0YW5j
ZS5vdXRwdXRfaGFuZGxlci5zZXR1cChzZWxmLmluc3RhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCisgICAgZGVmIHN0b3Aoc2Vs
ZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIuc3RvcF9jdXJy
ZW50KGZvcmNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3RvcHBlZCIpCisKKyAgICBk
ZWYgcGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5waWQoKQorCisgICAg
ZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZSBhbmQgc2Vs
Zi5pbnN0YW5jZS5pc19hbGl2ZSgpCisKKyAgICBkZWYgY2xlYW51cChzZWxmLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlci50ZWFyZG93bihmb3JjZSkKKworICAg
IGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5pbnN0YW5j
ZSBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Im1hcmlvbmV0
dGVfcG9ydCI6IHNlbGYuaW5zdGFuY2UubWFyaW9uZXR0ZV9wb3J0fQorCisgICAgZGVmIGNoZWNr
X2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgorICAgICAgICBkdW1wX2RpciA9IG9zLnBhdGgu
am9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9maWxlLnByb2ZpbGUsICJtaW5pZHVtcHMiKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxvZ19jcmFz
aGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxr
X2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3M9cHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiTG9va2luZyBmb3IgY3Jhc2ggZHVtcCBmaWxlcyBmYWlsZWQiKQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5k
cm9pZC5weQppbmRleCAzM2I1ZDUxZTU0ZTgyYWRiNmNkYmU0NjEyMjYzYmMzMDg4M2RkMTA4Li5h
NmNiOGYwZGQzZTBmNjY5ZDQ3YjRhOWE0YTcyOGQ5OWZjNjQ4OTg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKQEAgLTEsMjYgKzEsMzAgQEAKIGltcG9ydCBvcwog
CiBpbXBvcnQgbW96bmV0d29yawotZnJvbSBtb3pwcm9maWxlIGltcG9ydCBGaXJlZm94UHJvZmls
ZQogZnJvbSBtb3pydW5uZXIgaW1wb3J0IEZlbm5lY0VtdWxhdG9yUnVubmVyCiAKIGZyb20gLmJh
c2UgaW1wb3J0IChnZXRfZnJlZV9wb3J0LAogICAgICAgICAgICAgICAgICAgIGNtZF9hcmcsCiAg
ICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jb21tYW5kKQogZnJvbSAuLmV4ZWN1dG9ycy5leGVj
dXRvcm1hcmlvbmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMg
bm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2Vz
cyBpbXBvcnQgY2FzdF9lbnYKK2Zyb20gLmJhc2UgaW1wb3J0IChCcm93c2VyLAorICAgICAgICAg
ICAgICAgICAgIEV4ZWN1dG9yQnJvd3NlcikKIGZyb20gLmZpcmVmb3ggaW1wb3J0IChnZXRfdGlt
ZW91dF9tdWx0aXBsaWVyLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAgcnVu
X2luZm9fZXh0cmFzIGFzIGZ4X3J1bl9pbmZvX2V4dHJhcywKICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfcHJvcGVydGllcywgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dG9yX2t3YXJncywgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgIEZp
cmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgUHJvZmls
ZUNyZWF0b3IgYXMgRmlyZWZveFByb2ZpbGVDcmVhdG9yKQogCiAKIF9fd3B0cnVubmVyX18gPSB7
InByb2R1Y3QiOiAiZmlyZWZveF9hbmRyb2lkIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2Fy
Z3MiOiAiY2hlY2tfYXJncyIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkZpcmVmb3hB
bmRyb2lkQnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5l
c3MiOiAiTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIk1h
cmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9r
d2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dh
cmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLApAQCAtNTEsNiArNTUsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJ0aW1l
b3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncyksCisgICAgICAgICAgICAiZTEwcyI6IHJ1bl9pbmZvX2RhdGFb
ImUxMHMiXSwKICAgICAgICAgICAgICMgZGVza3RvcCBvbmx5CiAgICAgICAgICAgICAibGVha19j
aGVjayI6IEZhbHNlLAogICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBrd2FyZ3NbInN0eWxv
X3RocmVhZHMiXSwKQEAgLTgwLDQwICs4NSwxNSBAQCBkZWYgZW52X29wdGlvbnMoKToKICAgICAg
ICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9CiAKIAotY2xhc3MgRmlyZWZveEFuZHJv
aWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQgPSAzMDAKLSAgICBz
aHV0ZG93bl90aW1lb3V0ID0gNjAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBy
ZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcu
dGVzdCIsCi0gICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCAq
Kmt3YXJncyk6Ci0gICAgICAgIEZpcmVmb3hCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
Tm9uZSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wYWNr
YWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gZGV2
aWNlX3NlcmlhbAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBrd2FyZ3NbInRlc3RzX3Jvb3Qi
XQotICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBrd2FyZ3NbImluc3RhbGxfZm9udHMiXQot
ICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBrd2FyZ3NbInN0YWNrd2Fsa19iaW5hcnki
XQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5tYXJp
b25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0g
Z2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgZW52ID0ge30KLSAgICAgICAgZW52WyJNT1pfQ1JB
U0hSRVBPUlRFUiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVJfU0hVVERP
V04iXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FMX0NPTk5FQ1RJT05T
Il0gPSAiMSIKLSAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIoc2VsZi5zdHlsb190
aHJlYWRzKQotICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNoYW9zX21vZGVfZmxh
Z3MpCi0gICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKLSAgICAgICAgICAgIGVudlsi
TU9aX1dFQlJFTkRFUiJdID0gIjEiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbnZbIk1P
Wl9XRUJSRU5ERVIiXSA9ICIwIgotCi0gICAgICAgIHByZWZlcmVuY2VzID0gc2VsZi5sb2FkX3By
ZWZzKCkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUs
IGV4dHJhX3ByZWZzLCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJv
d3Nlcl9jaGFubmVsLCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRlX3BhdGgpOgorICAg
ICAgICBzdXBlcihQcm9maWxlQ3JlYXRvciwgc2VsZikuX19pbml0X18obG9nZ2VyLCBwcmVmc19y
b290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLCBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9j
aGFubmVsLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCi0gICAgICAgIHNlbGYu
cHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAg
ICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRl
LnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKKyAgICBkZWYgX3NldF9yZXF1aXJlZF9wcmVm
cyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoewogICAg
ICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2luKHNlbGYuY29uZmln
LmRvbWFpbnNfc2V0KSwKICAgICAgICAgICAgICJkb20uZGlzYWJsZV9vcGVuX2R1cmluZ19sb2Fk
IjogRmFsc2UsCiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLApA
QCAtMTIxLDkgKzEwMSwxMiBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJy
b3dzZXIpOgogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUsCiAgICAgICAgIH0p
CiAKKyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9KQorCiAgICAgICAg
IGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmluZm8oIlNldHRpbmcgYW5kcm9pZCByZWZ0ZXN0IHByZWZlcmVuY2VzIikKLSAgICAgICAgICAg
IHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeworICAgICAgICAgICAgcHJvZmlsZS5zZXRf
cHJlZmVyZW5jZXMoewogICAgICAgICAgICAgICAgICJicm93c2VyLnZpZXdwb3J0LmRlc2t0b3BX
aWR0aCI6IDgwMCwKICAgICAgICAgICAgICAgICAjIERpc2FibGUgaGlnaCBEUEkKICAgICAgICAg
ICAgICAgICAibGF5b3V0LmNzcy5kZXZQaXhlbHNQZXJQeCI6ICIxLjAiLApAQCAtMTM1LDYgKzEx
OCw3MyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgogICAg
ICAgICAgICAgICAgICJsYXlvdXQudGVzdGluZy5vdmVybGF5LXNjcm9sbGJhcnMuYWx3YXlzLXZp
c2libGUiOiBUcnVlLAogICAgICAgICAgICAgfSkKIAorCisKK2NsYXNzIEZpcmVmb3hBbmRyb2lk
QnJvd3NlcihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSAzMDAKKyAgICBzaHV0ZG93bl90
aW1lb3V0ID0gNjAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3Qs
IHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcudGVzdCIsCisg
ICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCBleHRyYV9wcmVm
cz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1O
b25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1Ob25lLAorICAgICAg
ICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93
ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5h
cnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwg
YXNhbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2Rl
X2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLAorICAg
ICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5vbmUsICoqa3dh
cmdzKToKKworICAgICAgICBzdXBlcihGaXJlZm94QW5kcm9pZEJyb3dzZXIsIHNlbGYpLl9faW5p
dF9fKGxvZ2dlcikKKyAgICAgICAgc2VsZi5wcmVmc19yb290ID0gcHJlZnNfcm9vdAorICAgICAg
ICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9
IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFs
CisgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KKyAgICAgICAgc2VsZi5zeW1i
b2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5ID0g
c3RhY2t3YWxrX2JpbmFyeQorICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGls
X2JpbmFyeQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0
ZV9wYXRoCisgICAgICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfd2Vi
cmVuZGVyID0gZW5hYmxlX3dlYnJlbmRlcgorICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAg
ICAgc2VsZi50aW1lb3V0X211bHRpcGxpZXIgPSB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAg
c2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCisg
ICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2VsZi5j
aGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZworICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAor
ICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBpbnN0YWxsX2ZvbnRzCisgICAgICAgIHNlbGYu
dGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKworICAgICAgICBzZWxmLnByb2ZpbGVfY3JlYXRvciA9
IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgpCisKKyAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYucHJvZmlsZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKyAgICBkZWYgc2V0dGluZ3Moc2VsZiwgdGVz
dCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBu
b3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2Fu
X2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2RlcHRoIjogdGVzdC5s
c2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVha19hbGxvd2VkIjog
c2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAgICAgICAgICAgICAg
ICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtf
dGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaWYg
c2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0
ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgc2VsZi5wcm9maWxlID0gc2VsZi5w
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJl
bmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fSkKKwogICAgICAg
ICBpZiBzZWxmLmluc3RhbGxfZm9udHM6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
Q29weWluZyBBaGVtIGZvbnQgdG8gcHJvZmlsZSIpCiAgICAgICAgICAgICBmb250X2RpciA9IG9z
LnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgImZvbnRzIikKQEAgLTE0NiwxOCArMTk2
LDI3IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAKICAg
ICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogCi0gICAgICAgIGlmIHNlbGYuY2Ff
Y2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3Ns
KCkKLQogICAgICAgICBkZWJ1Z19hcmdzLCBjbWQgPSBicm93c2VyX2NvbW1hbmQoc2VsZi5wYWNr
YWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJv
dXQ6YmxhbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVidWdfaW5mbykKIAorICAgICAgICBlbnYgPSB7fQorICAgICAgICBlbnZbIk1PWl9DUkFT
SFJFUE9SVEVSIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9X
TiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMi
XSA9ICIxIgorICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3Ro
cmVhZHMpCisgICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFn
cykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAgICAgICAgZW52WyJN
T1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudlsiTU9a
X1dFQlJFTkRFUiJdID0gIjAiCisKICAgICAgICAgc2VsZi5ydW5uZXIgPSBGZW5uZWNFbXVsYXRv
clJ1bm5lcihhcHA9c2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZT1zZWxmLnByb2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9s
c19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlh
bD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKQEAgLTE5Niw2ICsy
NTUsMjYgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKICAg
ICAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
c3RvcHBlZCIpCiAKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJ1bm5lci5w
cm9jZXNzX2hhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlci5w
aWQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5uZXI6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBz
ZWxmLnN0b3AoZm9yY2UpCisKKyAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQiOiBzZWxmLm1hcmlv
bmV0dGVfcG9ydH0KKwogICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToK
ICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCJNSU5JRFVNUF9TVEFDS1dBTEsiLCAiIikg
YW5kIHNlbGYuc3RhY2t3YWxrX2JpbmFyeToKICAgICAgICAgICAgIG9zLmVudmlyb25bIk1JTklE
VU1QX1NUQUNLV0FMSyJdID0gc2VsZi5zdGFja3dhbGtfYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKaW5k
ZXggNjM1ZTgyN2MyOTViNWIxMTkyODIyZjUxZDkzYTRiMDllMzc2NDE5Mi4uNzhjMjJiOTA5YWNm
NDEwMDM4ZmYwNjc2OTM2NjY2MmFiMGM1ODlhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2llLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQpAQCAtNjQsNyAr
NjQsNyBAQCBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5w
eQppbmRleCA1NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2MmNlNDBkNzQ5ZGRhY2I2YTgzLi44MDVmZWRl
ZTYzNmNkMjIxNTVlZDE0M2NmMTE0OGYzYzJmNWQ5OGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvb3BlcmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5
CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJp
LnB5CmluZGV4IGY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5NTA2OTQ2Yjk1MzhiNjcuLmNiMmIx
NzVkNGRmYmMzMTY2ZTRhZDVhNmFmZTE3NGZmZGJjNmZmOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFy
aS5weQpAQCAtMyw3ICszLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFy
aURyaXZlclNlcnZlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFz
IGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVy
IGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2FmYXJpIGlt
cG9ydCBTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIApAQCAtMTIs
NyArMTMsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogInNhZmFyaSIsCiAgICAgICAg
ICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3Ii
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVm
VGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAi
U2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRv
ciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3Mi
LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIs
CiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLApAQCAtNzksNyAr
ODEsNyBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRv
KTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFu
ZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAg
ICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVw
KHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CmluZGV4IDMz
MDFjNzViMjEwMDRhNTU0ZjkxZDQ3NjdiODU2MGZjNDAyMTQ0MTIuLmZlODM2ODJmNWZjMTZmNGIy
ZGE2NjRiOGU2Y2E0ZGJjOGRkYzUwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKQEAgLTksMTAg
KzksMTEgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiBpbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aW1lCi1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8gYXMgQ1N0cmlu
Z0lPCiAKIGltcG9ydCByZXF1ZXN0cwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lP
IGFzIFN0cmluZ0lPCisKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nl
ciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIg
ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBh
cyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTI0LDcgKzEyNSw3IEBAIGRlZiBlbnZfb3B0aW9u
cygpOgogZGVmIGdldF90YXIodXJsLCBkZXN0KToKICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KHVy
bCwgc3RyZWFtPVRydWUpCiAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKLSAgICB3aXRoIHRh
cmZpbGUub3BlbihmaWxlb2JqPUNTdHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkpKSBhcyBmOgorICAg
IHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9U3RyaW5nSU8ocmVzcC5yYXcucmVhZCgpKSkgYXMg
ZjoKICAgICAgICAgZi5leHRyYWN0YWxsKHBhdGg9ZGVzdCkKIAogCkBAIC0xNzgsNyArMTc5LDcg
QEAgY2xhc3MgU2F1Y2VDb25uZWN0KCk6CiAKICAgICAgICAgdG90X3dhaXQgPSAwCiAgICAgICAg
IHdoaWxlIG5vdCBvcy5wYXRoLmV4aXN0cygnLi9zYXVjZV9pc19yZWFkeScpIGFuZCBzZWxmLnNj
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiB0b3Rfd2FpdCA+PSBzZWxm
LnNhdWNlX2luaXRfdGltZW91dDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNhdWNlX2luaXRf
dGltZW91dCBvciAodG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3RpbWVvdXQpOgogICAgICAg
ICAgICAgICAgIHNlbGYucXVpdCgpCiAKICAgICAgICAgICAgICAgICByYWlzZSBTYXVjZUV4Y2Vw
dGlvbigiU2F1Y2UgQ29ubmVjdCBQcm94eSB3YXMgbm90IHJlYWR5IGFmdGVyICVkIHNlY29uZHMi
ICUgdG90X3dhaXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2
ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKaW5kZXggMjk1M2Rl
MTgxNzRlZjc1ZDUwNWRiMGI4ZDUxOGZlMzMzOWY3MDY1ZS4uMDJiNzk2Yjc1NjAzODVjZDAwOTAy
YmJmYzFiMzYxYTU0MjI0OWY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nl
cnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQpA
QCAtMTEsNiArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVy
ICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3Mg
YXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZXJ2b2Ry
aXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTog
RjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vydm9X
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNzIGlt
cG9ydCBjYXN0X2VudgogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdKQogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlckJyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRlYnVnX2luZm8gb3Igbm90IHNlbGYu
ZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NI
YW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJv
Yy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vz
cy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBz
dWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVudikpCiAKICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZvIFN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtp
dC5weQppbmRleCBhYTI4NjIxMzk0NTBmNjgyZTYwNTFjNWY2MTdhYjhjYWYxOTYwNzg0Li5kYTkz
Y2YxNjQzOTk1ZDk1YjhkNmRlMWY3MGM3NzMxYjU1NTk3NjhiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJr
aXQucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9y
QnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRp
cGxpZXIsIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJu
ZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhl
Y3V0b3IgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFdlYktp
dERyaXZlclNlcnZlcgogCkBAIC0xMyw3ICsxNCw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0IiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dz
ZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6
ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9y
In0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRl
c3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4
ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52
X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjog
ImVudl9vcHRpb25zIiwKQEAgLTk5LDcgKzEwMSw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2
ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdo
ZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNf
YWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQppbmRleCBk
NzM1ZjNjMDc5MmE2MzU2YzYyNzAxNDMyMDVjNTViN2MwMmVlZjQ3Li5kOGI5NzQ0YmQ3NDNlMzlj
ZTE5ZjAwOGU3ZjQwY2JjODBlODAxMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0
IGdldF90aW1lb3V0X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0aWZpY2F0ZV9kb21h
aW5fbGlzCiBmcm9tIC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZyb20gLi5leGVjdXRv
cnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNz
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhl
Y3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogIndlYmtpdGd0
a19taW5pYnJvd3NlciIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJf
a3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjog
eyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRv
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAg
ICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAg
ICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAg
ImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
bnZpcm9ubWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQppbmRleCBlNzlhZTM3
NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4Li5mNzY4MzZlYTY2YjU5YmIxNmYyZDM3
OTI0NTFiY2YyOGVjYjJmYjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBv
cnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgZ2V0X2RlZmF1bHRfbG9n
Z2VyLCBoYW5kbGVycywgcHJveHkKIApAQCAtNTIsNyArNTMsOSBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnRFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAg
ICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdGVzdCBlbnZpcm9ubWVudCBpLmUu
IHRoZSBodHRwIGFuZAogICAgIHdlYnNvY2tldHMgc2VydmVycyIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciwgcGF1c2Vf
YWZ0ZXJfdGVzdCwgZGVidWdfaW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywgZW52X2V4dHJhcyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRf
bXVsdGlwbGVyLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZv
LCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBlbmFi
bGVfcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAg
ICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IE5vbmUK
QEAgLTY4LDYgKzcxLDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzX2Nt
cyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZpZworICAgICAgICBz
ZWxmLmVuYWJsZV9xdWljID0gZW5hYmxlX3F1aWMKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6
CiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IHNlbGYuYnVpbGRfY29uZmlnKCkKQEAgLTkxLDYg
Kzk1LDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5z
ZXJ2ZXJzID0gc2VydmUuc3RhcnQoc2VsZi5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3JvdXRlcygpKQorCiAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5nZXQoInN1cHBvcnRzX2RlYnVnZ2VyIikgYW5kIHNlbGYuZGVidWdfaW5mbyBhbmQgc2VsZi5k
ZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAgICAgICAgICAgc2VsZi5pZ25vcmVfaW50ZXJydXB0
cygpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC05OCw3ICsxMDMsNyBAQCBjbGFzcyBUZXN0RW52
aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192
YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRzKCkKIAotICAgICAg
ICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2ZXJzKToKICAgICAg
ICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAgICAgICAgICBzZXJ2
ZXIua2lsbCgpCiAgICAgICAgIGZvciBjbSBpbiBzZWxmLmVudl9leHRyYXNfY21zOgpAQCAtMTI2
LDcgKzEzMSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAg
ICJodHRwcyI6IFs4NDQzXSwKICAgICAgICAgICAgICJ3cyI6IFs4ODg4XSwKICAgICAgICAgICAg
ICJ3c3MiOiBbODg4OV0sCisgICAgICAgICAgICAiaDIiOiBbOTAwMF0sCiAgICAgICAgIH0KKyAg
ICAgICAgaWYgc2VsZi5lbmFibGVfcXVpYzoKKyAgICAgICAgICAgIGNvbmZpZy5wb3J0c1sicXVp
YyJdID0gWzEwMDAwXQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgp
OgogICAgICAgICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6CkBAIC0xOTEsMTAg
KzE5OSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIGRh
dGEgKz0gZnAucmVhZCgpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Rkcml2ZXItZXh0cmEuanMiKSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICBkYXRhICs9IGZw
LnJlYWQoKQotICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKGIiR0VUIiwgYiIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXIuanMiLAorICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVy
KCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFzY3JpcHQiKSkKIAot
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVyaXRlbXMo
KToKKyAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMoc2VsZi50ZXN0X3Bh
dGhzKToKICAgICAgICAgICAgIGlmIHVybF9iYXNlID09ICIvIjoKICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfbW91bnRfcG9pbnQodXJsX2Jh
c2UsIHBhdGhzWyJ0ZXN0c19wYXRoIl0pCkBAIC0yMTAsOCArMjE4LDEwIEBAIGNsYXNzIFRlc3RF
bnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBlYWNoX3NsZWVwX3NlY3MgPSAwLjUKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MKICAgICAgICAgd2hp
bGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKLSAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYudGVz
dF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CisgICAgICAgICAgICBmYWls
ZWQsIHBlbmRpbmcgPSBzZWxmLnRlc3Rfc2VydmVycygpCisgICAgICAgICAgICBpZiBmYWlsZWQ6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nOgogICAg
ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdGltZS5zbGVlcChlYWNoX3NsZWVwX3Nl
Y3MpCiAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXJyb3IoIlNlcnZlcnMgZmFpbGVkIHRvIHN0
YXJ0OiAlcyIgJQpAQCAtMjE5LDE5ICsyMjksMjMgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzKHNlbGYpOgogICAgICAgICBmYWlsZWQgPSBb
XQorICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2
ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0
ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxm
LnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBzZXJ2ZXJzOgotICAg
ICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBl
bmQoKHNjaGVtZSwgcG9ydCkpCisKKyAgICAgICAgaWYgbm90IGZhaWxlZCBhbmQgc2VsZi50ZXN0
X3NlcnZlcl9wb3J0OgorICAgICAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRl
bXMoc2VsZi5zZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNl
cnZlcnM6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMSkKICAgICAgICAgICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWxlZC5hcHBlbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGVu
ZGluZy5hcHBlbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQo
KHNjaGVtZSwgcG9ydCkpCi0gICAgICAgIHJldHVybiBmYWlsZWQKKyAgICAgICAgcmV0dXJuIGZh
aWxlZCwgcGVuZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25z
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDNk
ZDY2NWEyZjNiYzU1NzZjYjUzNWYyOWQ0OWFiYmM5NTkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKQEAgLTAsMCArMSwxODQgQEAKKworY2xh
c3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImNsaWNrIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJd
CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVj
dG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcgZWxlbWVu
dDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxlbWVudChl
bGVtZW50KQorCisKK2NsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJz
ZW5kX2tleXMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Cisg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90
b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBzZWxlY3Rv
ciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQor
ICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3Rv
cihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBl
bGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMu
c2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24o
b2JqZWN0KToKKyAgICBuYW1lID0gImFjdGlvbl9zZXF1ZW5jZSIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6CisgICAgICAgICMgVE9ETzogc29tZSBzb3J0IG9mIHNoYWxsb3cgZXJyb3Ig
Y2hlY2tpbmcKKyAgICAgICAgYWN0aW9ucyA9IHBheWxvYWRbImFjdGlvbnMiXQorICAgICAgICBm
b3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9uczoKKyAgICAgICAgICAgIGlmIGFjdGlvblNlcXVl
bmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgorICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4g
YWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlv
blsidHlwZSJdID09ICJwb2ludGVyTW92ZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBp
c2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0sIGRpY3QpKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxmLmdldF9lbGVtZW50KGFjdGlvblsib3JpZ2luIl1b
InNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUiXVsiZnJhbWUiXSkKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9hY3Rpb25zKHsiYWN0aW9ucyI6IGFjdGlvbnN9KQor
CisgICAgZGVmIGdldF9lbGVtZW50KHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKKyAg
ICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Io
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIHJldHVybiBlbGVtZW50CisKK2NsYXNz
IEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiZ2VuZXJhdGVf
dGVzdF9yZXBvcnQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBw
cm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBtZXNz
YWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5l
cmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzZWxmLnByb3RvY29s
LmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCisKK2Ns
YXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF9wZXJtaXNz
aW9uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgcGVybWlzc2lvbl9w
YXJhbXMgPSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCisgICAgICAgIGRlc2NyaXB0b3Ig
PSBwZXJtaXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCisgICAgICAgIG5hbWUgPSBkZXNjcmlw
dG9yWyJuYW1lIl0KKyAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFtc1sic3RhdGUiXQor
ICAgICAgICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9uZVJlYWxtIiwgRmFs
c2UpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1pc3Npb24gJXMgdG8g
JXMsIG9uZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNjcmlwdG9yLCBzdGF0
ZSwgb25lX3JlYWxtKQorCitjbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmpl
Y3QpOgorICAgIG5hbWUgPSAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgdmly
dHVhbCBhdXRoZW50aWNhdG9yIikKKyAgICAgICAgY29uZmlnID0gcGF5bG9hZFsiY29uZmlnIl0K
KyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50
aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMiICUgYXV0aGVudGlj
YXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKKworY2xhc3MgUmVtb3Zl
VmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInJlbW92ZV92
aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoYXV0aGVudGljYXRv
cl9pZCkKKworCitjbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9
ICJhZGRfY3JlZGVudGlhbCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3Rv
Y29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2Nv
bCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAg
IGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAg
Y3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQorICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50aWNhdG9yICVzICIgJSBh
dXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlhbCkK
KworY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImdldF9j
cmVkZW50aWFscyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToK
KyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhl
bnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0dWFsIGF1dGhlbnRpY2F0
b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29s
LnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkK
KworY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAicmVt
b3ZlX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIGNy
ZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KKyAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50aWNhdG9yICVzIiAl
IChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50aWFsKGF1dGhlbnRp
Y2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCisKK2NsYXNzIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfYWxsX2NyZWRlbnRpYWxzIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3Zp
bmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9y
X2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iu
cmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitjbGFzcyBTZXRVc2Vy
VmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF91c2VyX3ZlcmlmaWVkIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9
IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBheWxvYWRbInV2Il0K
KyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0dGluZyB1c2VyIHZl
cmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0aGVudGljYXRvcl9p
ZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52
aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVudGljYXRvcl9pZCwg
dXYpCisKKworYWN0aW9ucyA9IFtDbGlja0FjdGlvbiwKKyAgICAgICAgICAgU2VuZEtleXNBY3Rp
b24sCisgICAgICAgICAgIEFjdGlvblNlcXVlbmNlQWN0aW9uLAorICAgICAgICAgICBHZW5lcmF0
ZVRlc3RSZXBvcnRBY3Rpb24sCisgICAgICAgICAgIFNldFBlcm1pc3Npb25BY3Rpb24sCisgICAg
ICAgICAgIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAorICAgICAgICAgICBSZW1vdmVW
aXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgQWRkQ3JlZGVudGlhbEFjdGlv
biwKKyAgICAgICAgICAgR2V0Q3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUNy
ZWRlbnRpYWxBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0aW9uLAor
ICAgICAgICAgICBTZXRVc2VyVmVyaWZpZWRBY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKaW5k
ZXggM2Q4YWY0ZGU0ODY4ZTlkYTg2YjM4ZDFjOWQ3YjMyZWQwYmZkMjY1Yi4uYzc1YThlZjMyMGYy
ZDE0OTIwNmM5YWI4MmNlNTViYjc1NGRkYmI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQpAQCAt
MSw2ICsxLDUgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBoYXNobGliCi1mcm9tIHNpeC5tb3Zl
cy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KIGltcG9ydCBpbwogaW1wb3J0IGpz
b24KIGltcG9ydCBvcwpAQCAtOCwxMCArNywxMyBAQCBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiBmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUK
K2Zyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgorZnJvbSBz
aXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdCwgdXJsdW5zcGxp
dAogCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorZnJvbSAuYWN0aW9ucyBpbXBvcnQg
YWN0aW9ucwogZnJvbSAucHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNlUHJvdG9jb2xQYXJ0
CiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXQpAQCAtMTYyLDE0ICsxNjQsMTgg
QEAgY2xhc3MgVGltZWRSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3Vs
dCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgIiVzLnJ1bl9mdW5jIGRpZG4ndCBzZXQgYSBy
ZXN1bHQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMgbWF5IGluZGljYXRlIGEg
aGFuZylcbiIKLSAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBmb3IgdGhlIGN1cnJl
bnQgc3RhY2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtl
eGVjdXRvci5pZGVudF0pKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgi
RVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5wcm90
b2NvbC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkV4ZWN1dG9y
IGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0ZSBhIGhhbmcpXG4iCisgICAg
ICAgICAgICAgICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBv
ZiB0aGUgZXhlY3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiIu
am9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtleGVjdXRv
ci5pZGVudF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVY
VEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRpbmcsIHNl
dHRpbmcgc3RhdHVzIHRvIENSQVNIIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBGYWxzZSwgKCJDUkFTSCIsIE5vbmUpCiAgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRbMV0gaXMg
Tm9uZToKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCBhbnkgZGF0YSBiYWNrIGZyb20gdGhl
IHRlc3QsIHNvIGNoZWNrIGlmIHRoZQogICAgICAgICAgICAgIyBicm93c2VyIGlzIHN0aWxsIHJl
c3BvbnNpdmUKLSAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxpdmU6CisgICAgICAg
ICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIE5vbmUpCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRp
bmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKQEAgLTIxMCw4ICsyMTYsOSBAQCBjbGFzcyBU
ZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBleHRyYV90aW1lb3V0ID0gNSAgIyBzZWNvbmRzCiAK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgZGVi
dWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAg
ICAgICAgIHNlbGYucnVubmVyID0gTm9uZQogICAgICAgICBzZWxmLmJyb3dzZXIgPSBicm93c2Vy
CiAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZyA9IHNlcnZlcl9jb25maWcKQEAgLTIyMSwxMiAr
MjI4LDYgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicHJlZnMiOiB7fX0KICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE5vbmUg
ICMgVGhpcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzCiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbG9nZ2VyKHNlbGYpOgotICAgICAgICAiIiJTdHJ1Y3R1cmVkTG9nZ2VyIGZvciB0aGlzIGV4
ZWN1dG9yIiIiCi0gICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucnVubmVyLmxvZ2dlcgotCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5l
cik6CiAgICAgICAgICIiIlJ1biBzdGVwcyBuZWVkZWQgYmVmb3JlIHRlc3RzIGNhbiBiZSBzdGFy
dGVkIGUuZy4gY29ubmVjdGluZyB0bwogICAgICAgICBicm93c2VyIGluc3RhbmNlCkBAIC0yNTUs
OCArMjU2LDkgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZG9fdGVzdCh0ZXN0KQogICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1bHRfZnJvbV9leGNl
cHRpb24odGVzdCwgZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9zdHJpbmcgPSB0cmFjZWJhY2su
Zm9ybWF0X2V4YygpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKGV4Y2VwdGlvbl9z
dHJpbmcpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9tX2V4Y2VwdGlvbih0
ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKQogCiAgICAgICAgIGlmIHJlc3VsdCBpcyBTdG9wOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjcwLDcgKzI3Miw4IEBAIGNsYXNzIFRlc3RF
eGVjdXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bm5lci5zZW5kX21lc3NhZ2UoInRlc3Rf
ZW5kZWQiLCB0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2VydmVyX3VybChzZWxmLCBwcm90b2Nv
bCk6Ci0gICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAocHJvdG9jb2wsCisgICAgICAgIHNj
aGVtZSA9ICJodHRwcyIgaWYgcHJvdG9jb2wgPT0gImgyIiBlbHNlIHByb3RvY29sCisgICAgICAg
IHJldHVybiAiJXM6Ly8lczolcyIgJSAoc2NoZW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1siYnJvd3Nlcl9ob3N0Il0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJdW3Byb3RvY29sXVsw
XSkKIApAQCAtMjg4LDE1ICsyOTEsMTUgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAg
ICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNlbGYsIHRlc3QsIGUp
OgorICAgIGRlZiByZXN1bHRfZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwgZSwgZXhjZXB0aW9u
X3N0cmluZyk6CiAgICAgICAgIGlmIGhhc2F0dHIoZSwgInN0YXR1cyIpIGFuZCBlLnN0YXR1cyBp
biB0ZXN0LnJlc3VsdF9jbHMuc3RhdHVzZXM6CiAgICAgICAgICAgICBzdGF0dXMgPSBlLnN0YXR1
cwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RhdHVzID0gIklOVEVSTkFMLUVSUk9SIgot
ICAgICAgICBtZXNzYWdlID0gdW5pY29kZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQorICAg
ICAgICBtZXNzYWdlID0gdGV4dF90eXBlKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAg
ICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICBtZXNzYWdlICs9IGV4Y2Vw
dGlvbl9zdHJpbmcKICAgICAgICAgcmV0dXJuIHRlc3QucmVzdWx0X2NscyhzdGF0dXMsIG1lc3Nh
Z2UpLCBbXQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0zMTAsOSArMzEzLDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogY2xhc3MgUmVmVGVzdEV4ZWN1dG9y
KFRlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSByZWZ0ZXN0X3Jlc3VsdF9jb252
ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLCBzY3JlZW5zaG90X2NhY2hlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2lu
Zm89Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwg
YnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAKQEAgLTQ5Niwx
MSArNDk5LDExIEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgY29u
dmVydF9yZXN1bHQgPSBweXRlc3RfcmVzdWx0X2NvbnZlcnRlcgogICAgIHByb3RvY29sX2NscyA9
IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB3
ZWJkcml2ZXJfYmluYXJ5LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAg
ICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmRv
X2RlbGF5ZWRfaW1wb3J0cygpCi0gICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXJfYmluYXJ5ID0gd2ViZHJpdmVyX2JpbmFyeQpAQCAtNTEwLDcgKzUxMyw3IEBA
IGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBzZWxmLnByb3RvY29sX2NscyhzZWxmLCBicm93c2VyKQogCiAgICAgZGVmIGlzX2FsaXZl
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAgICBy
ZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRf
Y2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MKQEAgLTU3Myw3ICs1
NzYsNyBAQCBjbGFzcyBXZHNwZWNSdW4ob2JqZWN0KToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBn
ZXRhdHRyKGUsICJtZXNzYWdlIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBt
ZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5z
ZXQoKQpAQCAtNjM2LDEwICs2MzksOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2Nv
bCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2FsaXZlOgorICAgICAg
ICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToK
ICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCi0gICAgQHByb3BlcnR5CiAgICAgZGVm
IGlzX2FsaXZlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMg
c3RpbGwgYWxpdmUuCiAKQEAgLTY3NSwyMCArNjc3LDcgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAiY29tcGxldGUiOiBzZWxmLnByb2Nlc3NfY29tcGxldGUK
ICAgICAgICAgfQogCi0gICAgICAgIHNlbGYuYWN0aW9ucyA9IHsKLSAgICAgICAgICAgICJjbGlj
ayI6IENsaWNrQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAg
ICJzZW5kX2tleXMiOiBTZW5kS2V5c0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAiYWN0aW9uX3NlcXVlbmNlIjogQWN0aW9uU2VxdWVuY2VBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdlbmVyYXRlX3Rlc3RfcmVw
b3J0IjogR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29s
KSwKLSAgICAgICAgICAgICJzZXRfcGVybWlzc2lvbiI6IFNldFBlcm1pc3Npb25BY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF92aXJ0dWFsX2F1dGhl
bnRpY2F0b3IiOiBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2Vs
Zi5wcm90b2NvbCksCi0gICAgICAgICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6
IFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3Rv
Y29sKSwKLSAgICAgICAgICAgICJhZGRfY3JlZGVudGlhbCI6IEFkZENyZWRlbnRpYWxBY3Rpb24o
c2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdldF9jcmVkZW50aWFs
cyI6IEdldENyZWRlbnRpYWxzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAg
ICAgICAgICAgICJyZW1vdmVfY3JlZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV9hbGxfY3JlZGVu
dGlhbHMiOiBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgICAgICAic2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRVc2VyVmVyaWZpZWRB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICB9CisgICAgICAgIHNl
bGYuYWN0aW9ucyA9IHtjbHMubmFtZTogY2xzKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSBm
b3IgY2xzIGluIGFjdGlvbnN9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0KToKICAg
ICAgICAgdXJsLCBjb21tYW5kLCBwYXlsb2FkID0gcmVzdWx0CkBAIC03MjksMTUwICs3MTgsMyBA
QCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKIAogICAgIGRlZiBfc2VuZF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICBzZWxm
LnByb3RvY29sLnRlc3Rkcml2ZXIuc2VuZF9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBt
ZXNzYWdlPW1lc3NhZ2UpCi0KLQotY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9y
Il0KLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDbGlja2luZyBlbGVt
ZW50OiAlcyIgJSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50
KGVsZW1lbnQpCi0KLQotY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0K
LSAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQotICAgICAgICBlbGVtZW50ID0gc2VsZi5w
cm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikK
LSAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMp
Ci0KLQotY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2Vy
Ci0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYsIHBheWxvYWQpOgotICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVycm9y
IGNoZWNraW5nCi0gICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KLSAgICAgICAg
Zm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBpZiBhY3Rpb25TZXF1
ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKLSAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGlu
IGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rp
b25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAg
aXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdpbiJd
WyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCi0gICAgICAgIHNlbGYucHJv
dG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25zfSkK
LQotICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6Ci0g
ICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9y
KGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQotICAgICAgICByZXR1cm4gZWxlbWVudAotCi1jbGFz
cyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgotICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQot
ICAgICAgICBzZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3Rf
cmVwb3J0KG1lc3NhZ2UpCi0KLWNsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBwZXJtaXNzaW9uX3BhcmFtcyA9IHBh
eWxvYWRbInBlcm1pc3Npb25fcGFyYW1zIl0KLSAgICAgICAgZGVzY3JpcHRvciA9IHBlcm1pc3Np
b25fcGFyYW1zWyJkZXNjcmlwdG9yIl0KLSAgICAgICAgbmFtZSA9IGRlc2NyaXB0b3JbIm5hbWUi
XQotICAgICAgICBzdGF0ZSA9IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJdCi0gICAgICAgIG9u
ZV9yZWFsbSA9IHBlcm1pc3Npb25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0byAlcywgb25lUmVh
bG09JXMiICUgKG5hbWUsIHN0YXRlLCBvbmVfcmVhbG0pKQotICAgICAgICBzZWxmLnByb3RvY29s
LnNldF9wZXJtaXNzaW9uLnNldF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0YXRlLCBvbmVfcmVh
bG0pCi0KLWNsYXNzIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGlu
ZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQotICAgICAgICBjb25maWcgPSBwYXlsb2FkWyJjb25m
aWciXQotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcpCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRo
ZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9pZAotCi1jbGFzcyBS
ZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
LSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50
aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2Vs
Zi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGlj
YXRvcihhdXRoZW50aWNhdG9yX2lkKQotCi0KLWNsYXNzIEFkZENyZWRlbnRpYWxBY3Rpb24ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAg
IHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAot
Ci0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9y
X2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIGNyZWRlbnRpYWwgPSBw
YXlsb2FkWyJjcmVkZW50aWFsIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBj
cmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9p
ZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmFk
ZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCi0KLWNsYXNzIEdldENy
ZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
cHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAg
ICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBmcm9tIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50aWFscyhhdXRoZW50
aWNhdG9yX2lkKQotCi1jbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsi
Y3JlZGVudGlhbF9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVk
ZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVu
dGljYXRvcl9pZCkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVu
dGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lk
KQotCi1jbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJh
dXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGFs
bCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkK
LSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92
ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKLQotY2xhc3MgU2V0VXNlclZlcmlm
aWVkQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAg
YXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICB1
diA9IHBheWxvYWRbInV2Il0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAiU2V0dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIg
JSAoYXV0aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQotICAgICAgICByZXR1
cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQo
YXV0aGVudGljYXRvcl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9ybWFyaW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3Jt
YXJpb25ldHRlLnB5CmluZGV4IDU5ZjdlODY1YTViODcxMWZhNzFjOWM4OTU1ZWNhNzMxZTAwNDhj
M2YuLjJlYWYyNTgwMWRmNTAyNzZmMmIwMjQ0N2Q2OGEzZmM5OGM1YzM3N2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0zLDkgKzMsMTEgQEAg
aW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAogCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0
ZW1zLCBpdGVya2V5cworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
CisKIGVycm9ycyA9IE5vbmUKIG1hcmlvbmV0dGUgPSBOb25lCiBweXRlc3RydW5uZXIgPSBOb25l
CkBAIC0xMTMsOCArMTE1LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFz
ZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU29ja2V0IGNsb3NlZCIpCiAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC0x
MzIsMTcgKzEzNCwxNiBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQo
VGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgICAgICAjIENoZWNrIGlmIHdlIHByZXZpb3Vz
bHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBtYWtlIHN1cmUgaXQncyBj
bG9zZWQKICAgICAgICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi5f
Y2xvc2Vfd2luZG93cygpCi0gICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJl
bnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAgICAgICB1cmwgPSB1
cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwgIi90
ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2Fk
aW5nICVzIiAlIHVybCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kaXNtaXNzX2Fs
ZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmNyaXRpY2FsKAogICAgICAgICAgICAgICAgICJMb2FkaW5nIGluaXRpYWwg
cGFnZSAlcyBmYWlsZWQuIEVuc3VyZSB0aGF0IHRoZSAiCiAgICAgICAgICAgICAgICAgInRoZXJl
IGFyZSBubyBvdGhlciBwcm9ncmFtcyBib3VuZCB0byB0aGlzIHBvcnQgYW5kICIKICAgICAgICAg
ICAgICAgICAidGhhdCB5b3VyIGZpcmV3YWxsIHJ1bGVzIG9yIG5ldHdvcmsgc2V0dXAgZG9lcyBu
b3QgIgotICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIgJSAodXJsLCB0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkpCisgICAgICAgICAgICAgICAgciJwcmV2ZW50IGFjY2Vzcy5c
ZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQogICAgICAgICAgICAgcmFpc2UK
ICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi5tYXJpb25ldHRlLmN1cnJlbnRfd2lu
ZG93X2hhbmRsZQogICAgICAgICBmb3JtYXRfbWFwID0geyJ0aXRsZSI6IHRocmVhZGluZy5jdXJy
ZW50X3RocmVhZCgpLm5hbWUucmVwbGFjZSgiJyIsICciJyl9CkBAIC01OTIsNyArNTkzLDYgQEAg
Y2xhc3MgTWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgIGRlbCBzZWxm
Lm1hcmlvbmV0dGUKICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVByb3RvY29sLCBzZWxmKS50ZWFy
ZG93bigpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50X3dpbmRvd19oYW5kbGUK
QEAgLTYwMiwxNCArNjAyLDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6
CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVudCwg
bmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xkIHByZWZzCi0gICAg
ICAgIGZvciBuYW1lIGluIG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pLml0ZXJrZXlz
KCk6CisgICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9ubWVudC5nZXQoInBy
ZWZzIiwge30pKToKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5leGVjdXRvci5vcmlnaW5hbF9w
cmVmX3ZhbHVlc1tuYW1lXQogICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAg
ICAgICAgICBzZWxmLnByZWZzLmNsZWFyKG5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCi0gICAgICAgIGZvciBuYW1l
LCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVyaXRlbXMoKToK
KyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1lbnQuZ2V0
KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZf
dmFsdWVzW25hbWVdID0gc2VsZi5wcmVmcy5nZXQobmFtZSkKICAgICAgICAgICAgIHNlbGYucHJl
ZnMuc2V0KG5hbWUsIHZhbHVlKQogCkBAIC02NTksNyArNjU5LDcgQEAgY2xhc3MgRXhlY3V0ZUFz
eW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0
YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRy
YWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNl
LCAoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKQEAgLTY2OSwx
MSArNjY5LDExIEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiBj
bGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToK
ICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVs
dGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGRlYnVn
X2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnPUZh
bHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQg
ZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAg
VGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZl
cl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9t
dWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTY5OCw3ICs2OTgsNyBAQCBjbGFzcyBNYXJp
b25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAg
c2VsZi5wcm90b2NvbC50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmxhc3RfZW52aXJvbm1l
bnRbInByb3RvY29sIl0pCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlz
X2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmly
b25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
Zi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC03NjUsMTMgKzc2NSwxNCBA
QCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9y
KToKIAogCiBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNl
cnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3Jl
ZW5zaG90X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAg
ICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAgICAg
ICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9
RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBm
b3IgcmVmdGVzdHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
bnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTc5OCw3ICs3OTksNyBAQCBjbGFzcyBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBz
ZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fQogCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5lcik6Ci0gICAgICAgIHN1cGVyKHNlbGYuX19j
bGFzc19fLCBzZWxmKS5zZXR1cChydW5uZXIpCisgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IsIHNlbGYpLnNldHVwKHJ1bm5lcikKICAgICAgICAgc2VsZi5pbXBsZW1lbnRh
dGlvbi5zZXR1cCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAgICAgZGVmIHRlYXJk
b3duKHNlbGYpOgpAQCAtODA4LDE3ICs4MDksMTcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxm
LnByb3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBo
YW5kbGVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dp
dGNoX3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNz
X18sIHNlbGYpLnRlYXJkb3duKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2VsZikudGVhcmRvd24o
KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3Jz
IGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRXhjZXB0
aW9uIGR1cmluZyByZWZ0ZXN0IHRlYXJkb3duOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKICAgICBkZWYgcmVzZXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKipzZWxmLmltcGxlbWVudGF0
aW9uX2t3YXJncykKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1l
bnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLmxh
c3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTg5Myw4ICs4OTQsOSBAQCBjbGFz
cyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgog
ICAgIGRlZiBzZXR1cChzZWxmLCBzY3JlZW5zaG90PSJ1bmV4cGVjdGVkIik6CiAgICAgICAgIGRh
dGEgPSB7InNjcmVlbnNob3QiOiBzY3JlZW5zaG90fQogICAgICAgICBpZiBzZWxmLmV4ZWN1dG9y
Lmdyb3VwX21ldGFkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsidXJsQ291bnQi
XSA9IHt1cmxwYXJzZS51cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3VybChrZXlbMF0pLCBr
ZXlbMV0pOnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxfY291bnQiLCB7fSku
aXRlcml0ZW1zKCkKKyAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihzZWxm
LmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRh
LmdldCgidXJsX2NvdW50Iiwge30pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB2YWx1ZSA+IDF9CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5z
ZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJP
TUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5fc2VuZF9tZXNz
YWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKQEAgLTkzNCw5ICs5MzYsOSBAQCBjbGFzcyBJbnRl
cm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgogICAgICAg
ICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUud2lu
ZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBoYW5kbGVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyho
YW5kbGVzWzBdKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVyaW5nIHRlYXJkb3du
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4Yygp
KQogCiAKIGNsYXNzIEdlY2tvRHJpdmVyUHJvdG9jb2woV2ViRHJpdmVyUHJvdG9jb2wpOgpAQCAt
OTQ4LDExICs5NTAsMTEgQEAgY2xhc3MgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1dG9yKFdkc3BlY0V4
ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0
RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmln
LCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9RmFsc2UsCiAg
ICAgICAgICAgICAgICAgIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9u
ZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAg
Q3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywK
KyAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTk3Miw3ICs5NzQsNyBAQCBjbGFzcyBN
YXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgogICAgICAgICAg
ICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBu
ZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTk5MSwxNSAr
OTkzLDE2IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVj
dXRvcik6CiAgICAgICAgIGlmIG5vdCBzdWNjZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gZGF0
YVswXQogCisgICAgICAgIGV4dHJhID0gTm9uZQogICAgICAgICBpZiBzZWxmLmRlYnVnIGFuZCAo
c3VjY2VzcyBvciBzdGF0dXMgbm90IGluICgiQ1JBU0giLCAiSU5URVJOQUwtRVJST1IiKSk6CiAg
ICAgICAgICAgICBhc3NlcnRpb25fY291bnQgPSBzZWxmLnByb3RvY29sLmFzc2VydHMuZ2V0KCkK
ICAgICAgICAgICAgIGlmIGFzc2VydGlvbl9jb3VudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBkYXRhWyJleHRyYSJdID0geyJhc3NlcnRpb25fY291bnQiOiBhc3NlcnRpb25fY291bnR9
CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7ImFzc2VydGlvbl9jb3VudCI6IGFzc2VydGlvbl9j
b3VudH0KIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29u
dmVydF9yZXN1bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2Ns
cygqKmRhdGEpLCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoZXh0cmE9ZXh0
cmEsICpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYsIHByb3RvY29sLCB1
cmwsIHRpbWVvdXQpOgogICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVyYWdlLmlzX2VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKaW5kZXggY2Vj
YTgxMjExZTExNDA1NzdjYzNhNWYxNjNmZmUxN2M3M2RkNTZhMy4uOTYzMTJmM2Y5Zjk1NDJmZWRl
NjA5ZTZmOTllZjkzMTI3ZjEyMmQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcnNlbGVuaXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3JzZWxlbml1bS5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJs
cGFyc2UKIGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVy
bGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwKICAgICAgICAgICAg
ICAgICAgICBSZWZUZXN0RXhlY3V0b3IsCkBAIC03Miw4ICs3Myw4IEBAIGNsYXNzIFNlbGVuaXVt
QmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgICAgIGV4Y2VwdCAo
c29ja2V0LnRpbWVvdXQsIGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLkVycm9ySW5SZXNwb25zZUV4Y2VwdGlvbiwgSU9FcnJv
cik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0
X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgICAg
ICBicmVhawogCiAKQEAgLTg3LDggKzg4LDggQEAgY2xhc3MgU2VsZW5pdW1UZXN0aGFybmVzc1By
b3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVy
KHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAg
ICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3aXRjaF90b193aW5kb3coc2VsZi5ydW5uZXJfaGFu
ZGxlKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9y
LnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJsID0gdXJsam9pbihzZWxm
LnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCisgICAgICAgICAgICAg
ICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZ2V0KHVy
bCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi53ZWJkcml2ZXIuY3VycmVudF93
aW5kb3dfaGFuZGxlCkBAIC0yNjEsNyArMjYyLDcgQEAgY2xhc3MgU2VsZW5pdW1SdW4oVGltZWRS
dW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAg
c2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBAIC0yNzAsMTEg
KzI3MSwxMSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiBjbGFzcyBTZWxlbml1
bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNf
dGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAg
ICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19lYWdlcl9wYWdlbG9h
ZD1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlNlbGVuaXVtLWJhc2VkIGV4ZWN1dG9yIGZv
ciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10
aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3RvY29sID0gU2VsZW5pdW1Q
cm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMpCkBAIC0zNTUsMTEgKzM1NiwxMiBA
QCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikgewogCiAKIGNsYXNzIFNlbGVu
aXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNs
b3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBj
YXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxlbml1bSBXZWJEcml2
ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC0zNzEs
OCArMzczLDggQEAgY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKICAgICAgICAgc2VsZi5jbG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0ZXJfZG9uZQogICAg
ICAgICBzZWxmLmhhc193aW5kb3cgPSBGYWxzZQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fSkpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKKyAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIikpIGFzIGY6Cisg
ICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxl
bWVudGF0aW9uLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JzZXJ2by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weQpp
bmRleCA5Y2VmMWZiMmQ3Zjc4ZTg3MjllNTFmZjQwMGIzZGYyNDAyYTJlOTRlLi5mODNmMDExNWUw
MDY4MTE0YmI2MmE4MDRiMzA1NWNiNTEwODE0YjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9l
eGVjdXRvcnNlcnZvLnB5CkBAIC03LDYgKzcsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCitmcm9tIHNpeCBpbXBvcnQg
ZW5zdXJlX3N0ciwgaXRlcml0ZW1zCiAKIGZyb20gbW96cHJvY2VzcyBpbXBvcnQgUHJvY2Vzc0hh
bmRsZXIKIApAQCAtMjIsOCArMjMsMTAgQEAgZnJvbSAuYmFzZSBpbXBvcnQgKENvbm5lY3Rpb25s
ZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUHJvdG9jb2wpCiBmcm9t
IC5wcm9jZXNzIGltcG9ydCBQcm9jZXNzVGVzdEV4ZWN1dG9yCiBmcm9tIC4uYnJvd3NlcnMuYmFz
ZSBpbXBvcnQgYnJvd3Nlcl9jb21tYW5kCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYK
IGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBTZXJ2b0RyaXZlclNlcnZlcgogCisKIHB5
dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZlciA9IE5vbmUKIApAQCAtNDUsNyArNDgsNyBAQCBk
ZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3VybF9mdW5jLCBicm93c2VyLCBiaW5h
cnksIHBhdXNlX2FmdGVyX3Rlc3QsCiAgICAgICAgIGFyZ3MgKz0gWyItWiIsIGRlYnVnX29wdHNd
CiAgICAgZm9yIHN0eWxlc2hlZXQgaW4gYnJvd3Nlci51c2VyX3N0eWxlc2hlZXRzOgogICAgICAg
ICBhcmdzICs9IFsiLS11c2VyLXN0eWxlc2hlZXQiLCBzdHlsZXNoZWV0XQotICAgIGZvciBwcmVm
LCB2YWx1ZSBpbiB0ZXN0LmVudmlyb25tZW50LmdldCgncHJlZnMnLCB7fSkuaXRlcml0ZW1zKCk6
CisgICAgZm9yIHByZWYsIHZhbHVlIGluIGl0ZXJpdGVtcyh0ZXN0LmVudmlyb25tZW50LmdldCgn
cHJlZnMnLCB7fSkpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVzPSVzIiAlIChwcmVm
LCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoOgogICAgICAgICBh
cmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRo
XQpAQCAtNjIsOSArNjUsOSBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3Vy
bF9mdW5jLCBicm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiBjbGFzcyBTZXJ2b1Rl
c3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1
bHQgPSB0ZXN0aGFybmVzc19yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAg
ICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIFByb2Nl
c3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAg
ICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucGF1
c2VfYWZ0ZXJfdGVzdCA9IHBhdXNlX2FmdGVyX3Rlc3QKQEAgLTEwMCwxMSArMTAzLDExIEBAIGNs
YXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9u
X291dHB1dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlz
aD1zZWxmLm9uX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2Fz
dF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
T3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwg
ZW52PWVudikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5j
b21tYW5kLCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0
aW1lb3V0ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIKQEAgLTE3OSwx
MCArMTgyLDExIEBAIGNsYXNzIFRlbXBGaWxlbmFtZShvYmplY3QpOgogY2xhc3MgU2Vydm9SZWZU
ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBy
ZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5
PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90
X2NhY2hlPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0
aXBsaWVyLApAQCAtMjMxLDcgKzIzNSw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFBy
b2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6
CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoc2VsZi5jb21tYW5k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRw
dXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSkKIAogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAt
MjQzLDcgKzI0Nyw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhl
Y3V0b3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYo
ZW52KSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2ID0gc2Vs
Zi5wcm9jLndhaXQoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
QEAgLTI1NywxMCArMjYxLDEwIEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NU
ZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgcnYgIT0gMCBvciBub3Qgb3MucGF0aC5leGlz
dHMob3V0cHV0X3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgKCJDUkFTSCIs
IE5vbmUpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCkgYXMgZjoKKyAgICAg
ICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAg
ICAjIE1pZ2h0IG5lZWQgdG8gc3RyaXAgdmFyaWFibGUgaGVhZGVycyBvciBzb21ldGhpbmcgaGVy
ZQogICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlLCBiYXNlNjQuYjY0ZW5jb2RlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUsIGVuc3VyZV9zdHIoYmFzZTY0LmI2NGVuY29kZShkYXRhKSkKIAogICAgIGRlZiBkb190ZXN0
KHNlbGYsIHRlc3QpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmltcGxlbWVudGF0aW9uLnJ1bl90
ZXN0KHRlc3QpCkBAIC0zMDUsMTAgKzMwOSwxMSBAQCBjbGFzcyBTZXJ2b1RpbWVkUnVubmVyKFRp
bWVkUnVubmVyKToKIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVj
dXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBjcmFzaHRlc3RfcmVzdWx0X2NvbnZlcnRlcgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJpbmFyeT1O
b25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVy
PTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgZGVidWdfaW5mbz1O
b25lLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
CiAgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0zMjksNiArMzM0LDgg
QEAgY2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAg
ICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2Vydm9UaW1l
ZFJ1bm5lcihzZWxmLmxvZ2dlciwgc2VsZi5kb19jcmFzaHRlc3QsIHNlbGYucHJvdG9jb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsLCB0aW1lb3V0
LCBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCisgICAgICAgICMgRW5zdXJlIHRoYXQgbm8gcHJv
Y2Vzc2VzIGhhbmcgYXJvdW5kIGlmIHRoZXkgdGltZW91dC4KKyAgICAgICAgc2VsZi5wcm9jLmtp
bGwoKQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252
ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQpAQCAtMzUwLDExICszNTcsMTEgQEAgY2xhc3MgU2Vydm9D
cmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKIAogICAgICAgICBpZiBub3Qg
c2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVy
KGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVu
diksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1G
YWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9ZW52KQorICAg
ICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9Y2FzdF9l
bnYoZW52KSkKIAogICAgICAgICBzZWxmLnByb2Mud2FpdCgpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQppbmRleCAwMmVjYzc1NjY0NzY1NmU2YjIw
ZTA2MzcxZDI4NzY3ZmEwZWIwMGYxLi4wNjgwYzRlZDIyOTkwMzUxNDZjMmIxZTQ3OGY0YjNmYTFj
MzAxMTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9k
cml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVy
LnB5CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJQcm90b2NvbChQcm90
b2NvbCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQu
dGltZW91dCwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0
cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg
ICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
ICAgICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBTZXJ2
b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0
cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZv
cm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMo
KQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIGUp
CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBA
IC0xNTUsMTAgKzE1NSwxMCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6
CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVl
LCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAq
Kmt3YXJncyk6Ci0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgICAgIFRlc3Ro
YXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z19pbmZvPU5vbmUpCiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBTZXJ2b1dl
YkRyaXZlclByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1jYXBhYmlsaXRpZXMp
CiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3NlcnZv
ZHJpdmVyLmpzIikpIGFzIGY6CkBAIC0yMjEsMTEgKzIyMSwxMiBAQCBjbGFzcyBUaW1lb3V0RXJy
b3IoRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihS
ZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAg
ICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgICIiIlNl
bGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAgICAgICAg
UmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9j
YWNoZSwKQEAgLTIzNSw4ICsyMzYsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVj
dXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKQogICAgICAgICBzZWxmLmlt
cGxlbWVudGF0aW9uID0gUmVmVGVzdEltcGxlbWVudGF0aW9uKHNlbGYpCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IE5vbmUKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVm
dGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgotICAgICAgICAgICAgc2VsZi53YWl0X3Nj
cmlwdCA9IGYucmVhZCgpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Qtd2FpdC5qcyIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVh
ZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13YWl0In0KIAogICAgIGRlZiByZXNldChzZWxm
KToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICByZXR1cm4gdGVzdC5y
ZXN1bHRfY2xzKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpLCBbXQogCiAgICAgZGVmIHNjcmVl
bnNob3Qoc2VsZiwgdGVzdCwgdmlld3BvcnRfc2l6ZSwgZHBpKToKQEAgLTI3Nyw3ICsyNzgsNyBA
QCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
CiAgICAgICAgIHJldHVybiBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi50ZXN0X3VybCh0ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmV4dHJhX3RpbWVvdXQpLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yd2ViZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndl
YmRyaXZlci5weQppbmRleCA5YjVmMzk3NjQwMjVlYmQ5MTJmOWZkMDgwYWQwNWRkMGRlZWE4Mjdj
Li5jNWYyOTY1ZWMxODU4NjEzMWJjMjBkMzk0ZjU2Yjc4ODI3YzEwMmVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFj
a0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IsCkBAIC02Niwx
MyArNjcsMjAgQEAgY2xhc3MgV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQ
YXJ0KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCgiIikKLSAgICAgICAgICAg
IGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhj
ZXB0aW9uKToKKyAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICBjbGllbnQuSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uKToKKyAgICAgICAg
ICAgICAgICAjIEEgSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uIHdpbGwgaGFwcGVuIHdoZW4gd2Ug
bmF2aWdhdGU7CisgICAgICAgICAgICAgICAgIyBieSBpZ25vcmluZyBpdCBpdCdzIHBvc3NpYmxl
IHRvIHJlbG9hZCB0aGUgdGVzdCB3aGlsc3QgdGhlCisgICAgICAgICAgICAgICAgIyBoYXJuZXNz
IHJlbWFpbnMgcGF1c2VkCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZXhjZXB0
IChzb2NrZXQudGltZW91dCwgY2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgSU9FcnJvcik6CisgICAg
ICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBjbGll
bnQuTm9TdWNoV2luZG93RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKToKICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQor
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAK
IApAQCAtODYsOCArOTQsOCBAQCBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc1Byb3RvY29sUGFy
dChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVyKHNlbGYsIHVy
bF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAgICAgICAgICAg
IHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGUgPSBzZWxmLnJ1bm5lcl9oYW5kbGUKLSAgICAg
ICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJs
KHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFy
bmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2VsZi5wYXJlbnQuZXhl
Y3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAgICAgICAgICAgICAgICIv
dGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9h
ZGluZyAlcyIgJSB1cmwpCiAKICAgICAgICAgc2VsZi53ZWJkcml2ZXIudXJsID0gdXJsCkBAIC0y
ODgsMTUgKzI5NiwxOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2NvbCk6CiAgICAg
ICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZyhtZXNzYWdlKQogICAgICAgICBzZWxmLndlYmRyaXZlciA9IE5vbmUKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgYSBzaW1wbGUg
cHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIu
d2luZG93X2hhbmRsZQotICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgR2V0IGEgc2ltcGxlIHByb3BlcnR5
IG92ZXIgdGhlIGNvbm5lY3Rpb24sIHdpdGggMiBzZWNvbmRzIG9mIHRpbWVvdXQKKyAgICAgICAg
ICAgICMgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBjaGVjayBpZiB0aGUgV2Vi
RHJpdmVyIGl0cworICAgICAgICAgICAgIyBzdGlsbCBhbGl2ZSwgYW5kIGFsbG93cyB0byBjb21w
bGV0ZSB0aGUgY2hlY2sgd2l0aGluIHRoZSB0ZXN0cnVubmVyCisgICAgICAgICAgICAjIDUgc2Vj
b25kcyBvZiBleHRyYV90aW1lb3V0IHdlIGhhdmUgYXMgbWF4aW11bSB0byBlbmQgdGhlIHRlc3Qg
YmVmb3JlCisgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCB0aW1lb3V0IGZyb20gdGVzdHJ1bm5l
ciB0cmlnZ2Vycy4KKyAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnNlbmRfc2Vzc2lvbl9jb21t
YW5kKCJHRVQiLCAid2luZG93IiwgdGltZW91dD0yKQorICAgICAgICBleGNlcHQgKHNvY2tldC50
aW1lb3V0LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLCBjbGllbnQuSW52YWxpZFNlc3Np
b25JZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJu
IFRydWUKIApAQCAtMzI5LDcgKzM0MSw3IEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1bm5l
cik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1h
dF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9S
IiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcuc2V0KCkKQEAgLTMzOCwxMSArMzUwLDExIEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1
bm5lcik6CiBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhl
Y3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9VHJ1
ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAg
c3VwcG9ydHNfZWFnZXJfcGFnZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJXZWJE
cml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBXZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRp
ZXMpCkBAIC00MzcsMTEgKzQ0OSwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJs
YW5rIikgewogCiAKIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAg
ICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAg
ICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90
X2NhY2hlLApAQCAtNTA1LDExICs1MTgsMTIgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1
dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKIAogY2xhc3MgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0
b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwK
ICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25l
PVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5v
bmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciBy
ZWZ0ZXN0cyIiIgogICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTUzNSw3ICs1NDksNyBAQCBj
bGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6CiAgICAg
ICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0
ZXN0LCBkYXRhKQogCi0gICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKCoqZGF0YSksIFtd
KQorICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqZGF0YSksIFtdKQogCiAgICAgZGVm
IGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgcHJv
dG9jb2wuYmFzZS5sb2FkKHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
cHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CmluZGV4IDk1
ZmRlYzdjOTgxNjg4YWE5OWNhMTNlZWFmNGM3YjZjNDA1MmM5MTcuLjRlY2RkNTFhMGVmNWVjYTgx
NTNmZmI4NDhmMDI1M2VlYjZkN2Y3MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQpA
QCAtMzIsNyArMzIsNiBAQCBjbGFzcyBQcm90b2NvbChvYmplY3QpOgogICAgICAgICAiIiI6cmV0
dXJuczogQ3VycmVudCBsb2dnZXIiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IubG9n
Z2VyCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgICIi
IklzIHRoZSBicm93c2VyIGNvbm5lY3Rpb24gc3RpbGwgYWN0aXZlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQppbmRleCBjMTkzNmViOTY2Zjc4ODM0
ZDgzOWM3OTQwOTMyMmIwYTk2YWYxMjg0Li4zZDMyOTE3NjU5YjM5MDBmOWU0NjQ2NzBkMmNkYzM5
YjhmZjE4MGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5l
ci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBydW4ocGF0aCwgc2VydmVyX2NvbmZpZywgc2Vz
c2lvbl9jb25maWcsIHRpbWVvdXQ9MCk6CiAgICAgb3MuZW52aXJvblsiV0RfSE9TVCJdID0gc2Vz
c2lvbl9jb25maWdbImhvc3QiXQogICAgIG9zLmVudmlyb25bIldEX1BPUlQiXSA9IHN0cihzZXNz
aW9uX2NvbmZpZ1sicG9ydCJdKQogICAgIG9zLmVudmlyb25bIldEX0NBUEFCSUxJVElFUyJdID0g
anNvbi5kdW1wcyhzZXNzaW9uX2NvbmZpZ1siY2FwYWJpbGl0aWVzIl0pCi0gICAgb3MuZW52aXJv
blsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3Qo
KSkKKyAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29uLmR1bXBzKHNlcnZl
cl9jb25maWcuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAKICAgICBoYXJuZXNzID0g
SGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKICAgICBzdWJ0ZXN0cyA9IFN1YnRlc3RSZXN1bHRSZWNv
cmRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCmluZGV4IDhhN2VkYjc5ZDYyMjU2
ZWVmNjNjNzFlYWJkNDUwZDQyYmNlN2M0ZDIuLmFkMDhhZDdkNzZmYjAyOTlhYWRlZGI1NzIxOTNj
MzhjNTA1NWU2NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0
LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCkBAIC0zMiw3ICsz
Miw4IEBAIGZ1bmN0aW9uIHdhaXRfcGFpbnRzKCkgewogfQogCiBmdW5jdGlvbiBzY3JlZW5zaG90
X2lmX3JlYWR5KCkgewotICBpZiAocm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUoY2xhc3NuYW1l
KXMiKSAmJgorICBpZiAocm9vdCAmJgorICAgICAgcm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUo
Y2xhc3NuYW1lKXMiKSAmJgogICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsKICAgICBvYnNlcnZl
ciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKICAgICBvYnNlcnZlci5vYnNl
cnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1w
b3J0LmxvZwppbmRleCA1ZDliNjk4ZjNjYTM1YWJhN2ZkZTAyNTI1Yjg1ODU5OTU4ZDIzOGFhLi42
MTE2OGEyMDdiZmI0MDc2MzY4ZDZkNGQxOTE5MWJiZGNkNTZmNzczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvdzNjLWltcG9ydC5sb2cKQEAgLTE1LDYgKzE1LDcgQEAgTm9uZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvX19pbml0X18ucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2Jhc2UucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5CiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2UucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5Cmlu
ZGV4IDRkNTA1MDg2YmQ4ZDk5MWM5NTNjMzRkMzhkOGUxZmEwY2I5MjBmOTkuLjc1MjFmMjViMTM0
NGY1YzUwYjgxODJhMmI3YTY4Mjc4ODU4ZjliNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQpAQCAtMSw1
ICsxLDYgQEAKIGZyb20gbWF0aCBpbXBvcnQgbG9nCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcwogCiBjbGFz
cyBOb2RlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3AsIHZhbHVlKToKQEAg
LTMzLDcgKzM0LDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICByZXN1bHRfY291bnRz
ID0gZGVmYXVsdGRpY3QoaW50KQogICAgIHRvdGFsID0gZmxvYXQobGVuKHJlc3VsdHMpKQotICAg
IGZvciB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6CisgICAgZm9yIHZhbHVlcyBpbiBp
dGVydmFsdWVzKHJlc3VsdHMpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBv
c3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAgICAgICMgZGlzdGlu
Y3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKQEAgLTQxLDcgKzQyLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBl
bnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291bnRzLml0ZXJ2YWx1
ZXMoKToKKyAgICBmb3IgY291bnQgaW4gaXRlcnZhbHVlcyhyZXN1bHRfY291bnRzKToKICAgICAg
ICAgcHJvcCA9IGZsb2F0KGNvdW50KSAvIHRvdGFsCiAgICAgICAgIGVudHJvcHlfc3VtIC09IHBy
b3AgKiBsb2cocHJvcCwgMikKIApAQCAtNTIsNyArNTMsNyBAQCBkZWYgc3BsaXRfcmVzdWx0cyhw
cm9wLCByZXN1bHRzKToKICAgICAiIiJTcGxpdCBhIGRpY3Rpb25hcnkgb2YgcmVzdWx0cyBpbnRv
IGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMgd2hlcmUKICAgICBlYWNoIHN1Yi1kaWN0aW9u
YXJ5IGhhcyBhIHNwZWNpZmljIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSIiIgogICAgIGJ5
X3Byb3AgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgIGZvciBydW5faW5mbywgdmFsdWUgaW4gcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGluIGl0ZXJpdGVtcyhy
ZXN1bHRzKToKICAgICAgICAgYnlfcHJvcFtydW5faW5mb1twcm9wXV1bcnVuX2luZm9dID0gdmFs
dWUKIAogICAgIHJldHVybiBieV9wcm9wCkBAIC03NywxMyArNzgsMTMgQEAgZGVmIGJ1aWxkX3Ry
ZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUpOgogICAg
IHByb3BfaW5kZXggPSB7cHJvcDogaSBmb3IgaSwgcHJvcCBpbiBlbnVtZXJhdGUocHJvcGVydGll
cyl9CiAKICAgICBhbGxfcmVzdWx0cyA9IGRlZmF1bHRkaWN0KGludCkKLSAgICBmb3IgcmVzdWx0
X3ZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgZm9yIHJlc3VsdF92YWx1
ZSwgY291bnQgaW4gcmVzdWx0X3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcmVzdWx0X3Zh
bHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgorICAgICAgICBmb3IgcmVzdWx0X3ZhbHVlLCBj
b3VudCBpbiBpdGVyaXRlbXMocmVzdWx0X3ZhbHVlcyk6CiAgICAgICAgICAgICBhbGxfcmVzdWx0
c1tyZXN1bHRfdmFsdWVdICs9IGNvdW50CiAKICAgICAjIElmIHRoZXJlIGlzIG9ubHkgb25lIHJl
c3VsdCB3ZSBhcmUgZG9uZQogICAgIGlmIG5vdCBwcm9wZXJ0aWVzIG9yIGxlbihhbGxfcmVzdWx0
cykgPT0gMToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBhbGxfcmVzdWx0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMoYWxsX3Jlc3VsdHMp
OgogICAgICAgICAgICAgdHJlZS5yZXN1bHRfdmFsdWVzW3ZhbHVlXSArPSBjb3VudAogICAgICAg
ICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1bHRzLmtleXMoKSkKICAgICAgICAgcmV0dXJuIHRy
ZWUKQEAgLTk5LDcgKzEwMCw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVu
dF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgIG5ld19lbnRyb3B5ID0gMC4KICAgICAgICAgcmVzdWx0c19zZXRzX2VudHJvcHkgPSBbXQot
ICAgICAgICBmb3IgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCBpbiByZXN1bHRfc2V0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJl
c3VsdF9zZXRzKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50
cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBu
ZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiBy
ZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTA5LDcgKzExMCw3IEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
IAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3Bh
Y2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdmFsdWUsIGNvdW50
IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVlLnJlc3VsdF92YWx1
ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0gc2V0KHJlc3VsdHMu
a2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQppbmRleCA2NjQ3YTg1ODBiZTdhYjQwNTBiYmQz
NzU5M2IyZTY1OTViYzNhYzcyLi42MjI2ZmM2NmZlZGYyYWZjOTZiNTExMGYzNTI0YjAwZDE4NWNj
NTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9udC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBjdHlwZXMKLWltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHBsaXN0bGliCkBAIC0xMiw3ICsxMSw4
IEBAIFNZU1RFTSA9IHBsYXRmb3JtLnN5c3RlbSgpLmxvd2VyKCkKIAogCiBjbGFzcyBGb250SW5z
dGFsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAgICBzZWxmLmZvbnRf
ZGlyID0gZm9udF9kaXIKICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBGYWxzZQogICAg
ICAgICBzZWxmLmNyZWF0ZWRfZGlyID0gRmFsc2UKQEAgLTI2LDE0ICsyNiwxMyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250X3BhdGgu
c3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIGluc3RhbGwgPSBnZXRhdHRyKHNlbGYsICdpbnN0
YWxsXyVzX2ZvbnQnICUgU1lTVEVNLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IGluc3RhbGw6
Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IGluc3RhbGxhdGlvbiBub3Qg
c3VwcG9ydGVkIG9uICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTVEVN
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQgaW5zdGFsbGF0aW9u
IG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICAgICAgaWYgaW5zdGFsbChmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBUcnVlCi0gICAgICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCdJbnN0YWxsZWQgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdVbmFi
bGUgdG8gaW5zdGFsbCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycgJSBmb250X25hbWUp
CiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLmluc3RhbGxlZF9mb250czoKQEAgLTQzLDEyICs0MiwxMiBAQCBj
bGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250
X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIHJlbW92ZSA9IGdldGF0dHIoc2VsZiwg
J3JlbW92ZV8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCByZW1v
dmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IHJlbW92YWwgbm90IHN1
cHBvcnRlZCBvbiAlcycsIFNZU1RFTSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCdGb250IHJlbW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNURU0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiByZW1vdmUoZm9udF9uYW1lLCBm
b250X3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnUmVtb3ZlZCBmb250OiAl
cycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSZW1vdmVk
IGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCdVbmFibGUgdG8gcmVtb3ZlIGZvbnQ6ICVzJywgZm9udF9uYW1l
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byByZW1vdmUg
Zm9udDogJXMnICUgZm9udF9uYW1lKQogCiAgICAgZGVmIGluc3RhbGxfbGludXhfZm9udChzZWxm
LCBmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZvbnRfZGlyOgpA
QCAtNjIsNyArNjEsNyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICBmY19jYWNoZV9yZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0
dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJ
ZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxh
YmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAog
ICAgIGRlZiBpbnN0YWxsX2Rhcndpbl9mb250KHNlbGYsIGZvbnRfbmFtZSwgZm9udF9wYXRoKToK
QEAgLTc5LDcgKzc4LDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAgICAg
IyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXN1bHRzLWNvbGxl
Y3Rpb24vaXNzdWVzLzIxOAogICAgICAgICAjIGluc3RhbGxpbmcgQWhlbSBvbiBtYWNPUyBpcyBm
bGFreSwgc28gY2hlY2sgaWYgaXQgYWN0dWFsbHkgaW5zdGFsbGVkCiAgICAgICAgIGZvbnRzID0g
Y2hlY2tfb3V0cHV0KFsnL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlcicsICcteG1sJywgJ1NQRm9u
dHNEYXRhVHlwZSddKQotICAgICAgICBmb250cyA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJp
bmcoZm9udHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgcHkzCisgICAgICAgICAg
ICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tQnl0ZXMKKyAgICAg
ICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmVhZFBsaXN0RnJvbUJ5dGVz
ID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZworICAgICAgICBmb250cyA9IHJlYWRQbGlz
dEZyb21CeXRlcyhmb250cykKICAgICAgICAgYXNzZXJ0IGxlbihmb250cykgPT0gMQogICAgICAg
ICBmb3IgZm9udCBpbiBmb250c1swXVsnX2l0ZW1zJ106CiAgICAgICAgICAgICBpZiBmb250Wydw
YXRoJ10gPT0gaW5zdGFsbGVkX2ZvbnRfcGF0aDoKQEAgLTExMCw3ICsxMTQsNyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmY19jYWNoZV9yZXR1cm5jb2RlID0g
Y2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5j
b2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhp
c3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignZm9udGNvbmZpZyBu
b3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiByZW1vdmVfZGFyd2luX2Zv
bnQoc2VsZiwgZm9udF9uYW1lLCBfKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0
ZXJzL2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKaW5k
ZXggNTY0MzVlYWJmNGJiZWFkYmVlN2FmYTI5NGUzZTBiYjFlNzY4NWI5OS4uMDg2NTYwYjZhODcz
Y2RjOWZlZmQzYjhiOGI3YTUzYjAxNzNiMzg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
cm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21p
dW0ucHkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKICAgICAgICAgOnBhcmFtIHN0ciB0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgdGVz
dAogICAgICAgICA6cGFyYW0gc3RyIHN1YnRlc3Q6IHRoZSBuYW1lIG9mIHRoZSBzdWJ0ZXN0IHdp
dGggdGhlIG1lc3NhZ2UKICAgICAgICAgOnBhcmFtIHN0ciBzdGF0dXM6IHRoZSBzdWJ0ZXN0IHN0
YXR1cwotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiB0aGUgZXhwZWN0ZWQgc3VidGVzdCBz
dGF0dXMKKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVjdGVkIHN1YnRlc3Qg
c3RhdHVzZXMKICAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB0aGUgc3RyaW5nIHRvIGFwcGVu
ZCB0byB0aGUgbWVzc2FnZSBmb3IgdGhpcyB0ZXN0CiAKICAgICAgICAgSGVyZSdzIGFuIGV4YW1w
bGUgb2YgYSBtZXNzYWdlOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRl
cihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMgQWRk
IHRoZSBwcmVmaXgsIHdpdGggdGhlIHRlc3Qgc3RhdHVzIGFuZCBzdWJ0ZXN0IG5hbWUgKGlmIGF2
YWlsYWJsZSkKICAgICAgICAgcHJlZml4ID0gIlslcyIgJSBzdGF0dXMKLSAgICAgICAgaWYgZXhw
ZWN0ZWQgYW5kIGV4cGVjdGVkICE9IHN0YXR1czoKKyAgICAgICAgaWYgZXhwZWN0ZWQgYW5kIHN0
YXR1cyBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiBleHBlY3RlZCAl
c10gIiAlIGV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggKz0gIl0g
IgpAQCAtNTUsMTMgKzU1LDI4IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZv
cm1hdHRlcik6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiVzOiAiICUgc3VidGVzdAogICAgICAg
ICBzZWxmLm1lc3NhZ2VzW3Rlc3RdICs9IHByZWZpeCArIG1lc3NhZ2UgKyAiXG4iCiAKLSAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOgorICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRpZmFjdF9u
YW1lLCBhcnRpZmFjdF92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBBcHBlbmRzIGFydGlm
YWN0cyB0byB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkuCisgICAgICAgIDpwYXJhbSBkaWN0IGN1
cl9kaWN0OiB0aGUgdGVzdCBsZWFmIGRpY3Rpb25hcnkgdG8gYXBwZW5kIHRvCisgICAgICAgIDpw
YXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CisgICAgICAg
IDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmICJhcnRpZmFjdHMiIG5vdCBpbiBjdXJfZGljdC5rZXlzKCk6
CisgICAgICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7fQorICAgICAgICAjIEFydGlm
YWN0cyBhcmUgYWxsIGV4cGVjdGVkIHRvIGJlIGxpc3RzLCBzbyBldmVuIHRob3VnaCB3ZSBvbmx5
IGhhdmUgYQorICAgICAgICAjIHNpbmdsZSB8YXJ0aWZhY3RfdmFsdWV8IHdlIHN0aWxsIHB1dCBp
dCBpbiBhIGxpc3QuCisgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVthcnRpZmFjdF9uYW1l
XSA9IFthcnRpZmFjdF92YWx1ZV0KKworICAgIGRlZiBfc3RvcmVfdGVzdF9yZXN1bHQoc2VsZiwg
bmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgd3B0X2FjdHVhbCwgc3VidGVzdF9mYWls
dXJlKToKICAgICAgICAgIiIiCiAgICAgICAgIFN0b3JlcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xl
IHRlc3QgaW4gfHNlbGYudGVzdHN8CiAgICAgICAgIDpwYXJhbSBzdHIgbmFtZTogbmFtZSBvZiB0
aGUgdGVzdC4KICAgICAgICAgOnBhcmFtIHN0ciBhY3R1YWw6IGFjdHVhbCBzdGF0dXMgb2YgdGhl
IHRlc3QuCi0gICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVkIHN0YXR1cyBvZiB0
aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogZXhwZWN0ZWQgc3RhdHVzZXMg
b2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGVzdCBvdXRwdXQsIHN1
Y2ggYXMgc3RhdHVzLCBzdWJ0ZXN0LCBlcnJvcnMgZXRjLgorICAgICAgICA6cGFyYW0gc3RyIHdw
dF9hY3R1YWw6IGFjdHVhbCBzdGF0dXMgcmVwb3J0ZWQgYnkgd3B0LCBtYXkgZGlmZmVyIGZyb20g
fGFjdHVhbHwuCisgICAgICAgIDpwYXJhbSBib29sIHN1YnRlc3RfZmFpbHVyZTogd2hldGhlciB0
aGlzIHRlc3QgZmFpbGVkIGJlY2F1c2Ugb2Ygc3VidGVzdHMKICAgICAgICAgIiIiCiAgICAgICAg
ICMgVGhlIHRlc3QgbmFtZSBjYW4gY29udGFpbiBhIGxlYWRpbmcgLyB3aGljaCB3aWxsIHByb2R1
Y2UgYW4gZW1wdHkKICAgICAgICAgIyBzdHJpbmcgaW4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRo
ZSBsaXN0IHJldHVybmVkIGJ5IHNwbGl0LiBXZSB1c2UKQEAgLTcyLDEzICs4NywxNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgY3Vy
X2RpY3QgPSBjdXJfZGljdC5zZXRkZWZhdWx0KG5hbWVfcGFydCwge30pCiAgICAgICAgIGN1cl9k
aWN0WyJhY3R1YWwiXSA9IGFjdHVhbAogICAgICAgICBjdXJfZGljdFsiZXhwZWN0ZWQiXSA9IGV4
cGVjdGVkCisgICAgICAgIGlmIHN1YnRlc3RfZmFpbHVyZToKKyAgICAgICAgICAgIHNlbGYuX2Fw
cGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiLCAidHJ1ZSIpCisg
ICAgICAgIGlmIHdwdF9hY3R1YWwgIT0gYWN0dWFsOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9zdGF0dXMiLCB3cHRfYWN0dWFsKQogICAg
ICAgICBpZiBtZXNzYWdlICE9ICIiOgotICAgICAgICAgICAgY3VyX2RpY3RbImFydGlmYWN0cyJd
ID0geyJsb2ciOiBtZXNzYWdlfQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1
cl9kaWN0LCAibG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIEZpZ3VyZSBvdXQgaWYgdGhlcmUg
d2FzIGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIHN0YXR1cy4gVGhpcyBvbmx5CiAgICAgICAg
ICMgaGFwcGVucyBmb3IgdGVzdHMgdGhhdCB3ZXJlIHJ1bgogICAgICAgICBpZiBhY3R1YWwgIT0g
IlNLSVAiOgotICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAg
aWYgYWN0dWFsIG5vdCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgICAgICBjdXJfZGljdFsiaXNf
dW5leHBlY3RlZCJdID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGFjdHVhbCAhPSAiUEFTUyI6
CiAgICAgICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc19yZWdyZXNzaW9uIl0gPSBUcnVlCkBA
IC0xMDMsNyArMTIyLDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0
dGVyKToKICAgICAgICAgICAgIHJldHVybiAiU0tJUCIKICAgICAgICAgaWYgc3RhdHVzID09ICJF
WFRFUk5BTC1USU1FT1VUIjoKICAgICAgICAgICAgIHJldHVybiAiVElNRU9VVCIKLSAgICAgICAg
aWYgc3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giKToKKyAgICAgICAgaWYgc3RhdHVzIGluICgi
RVJST1IiLCAiQ1JBU0giLCAiUFJFQ09ORElUSU9OX0ZBSUxFRCIpOgogICAgICAgICAgICAgIyBD
UkFTSCBpbiBXUFQgbWVhbnMgYSBicm93c2VyIGNyYXNoLCB3aGljaCBDaHJvbWl1bSB0cmVhdHMg
YXMgYQogICAgICAgICAgICAgIyB0ZXN0IGZhaWx1cmUuCiAgICAgICAgICAgICByZXR1cm4gIkZB
SUwiCkBAIC0xMTYsNyArMTM1LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKIAogICAgIGRlZiBfZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoc2Vs
ZiwgYWN0dWFsX3N0YXR1cywgZGF0YSk6CiAgICAgICAgICIiIgotICAgICAgICBHZXRzIHRoZSBl
eHBlY3RlZCBzdGF0dXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgorICAgICAgICBHZXRzIHRo
ZSBleHBlY3RlZCBzdGF0dXNlcyBmcm9tIGEgfGRhdGF8IGRpY3Rpb25hcnkuCiAKICAgICAgICAg
SWYgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgc3RhdHVzIGluIGRhdGEsIHRoZSBhY3R1YWwgc3RhdHVz
IGlzIHJldHVybmVkLgogICAgICAgICBUaGlzIGlzIGJlY2F1c2UgbW96bG9nIHdpbGwgZGVsZXRl
ICJleHBlY3RlZCIgZnJvbSB8ZGF0YXwgaWYgaXQgaXMgdGhlCkBAIC0xMjUsNDcgKzE0NCw2MSBA
QCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICBp
cyBleHBlY3RlZC4gU28gd2UgdXNlIHRoZSAiZXhwZWN0ZWQiIHN0YXR1cyBpZiBpdCdzIHRoZXJl
IG9yIGZhbGwgYmFjawogICAgICAgICB0byB0aGUgYWN0dWFsIHN0YXR1cyBpZiBpdCdzIG5vdC4K
IAorICAgICAgICBJZiB0aGUgdGVzdCBoYXMgbXVsdGlwbGUgc3RhdHVzZXMsIGl0IHdpbGwgaGF2
ZSBvdGhlciBzdGF0dXNlcyBsaXN0ZWQgYXMKKyAgICAgICAgImtub3duX2ludGVybWl0dGVudCIg
aW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvCisgICAg
ICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vlbi4KKwogICAgICAg
ICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0
CiAgICAgICAgIDpwYXJhbSBkYXRhOiBhIGRhdGEgZGljdGlvbmFyeSB0byBleHRyYWN0IGV4cGVj
dGVkIHN0YXR1cyBmcm9tCi0gICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVz
CisgICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMgYXMgYSBzdHJpbmcK
ICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRhdGFb
ImV4cGVjdGVkIl0pCi0gICAgICAgICAgICAgICAgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2Ug
YWN0dWFsX3N0YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9tYXBfc3Rh
dHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2UgYWN0
dWFsX3N0YXR1cworICAgICAgICBpZiBkYXRhLmdldCgia25vd25faW50ZXJtaXR0ZW50Iik6Cisg
ICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyArPSAiICIgKyAiICIuam9pbigKKyAgICAgICAg
ICAgICAgICBbc2VsZi5fbWFwX3N0YXR1c19uYW1lKG90aGVyX3N0YXR1cykgZm9yIG90aGVyX3N0
YXR1cyBpbiBkYXRhWyJrbm93bl9pbnRlcm1pdHRlbnQiXV0pCisgICAgICAgIHJldHVybiBleHBl
Y3RlZF9zdGF0dXNlcwogCiAgICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRhdGEpOgotICAgICAg
ICBzZWxmLnN0YXJ0X3RpbWVzdGFtcF9zZWNvbmRzID0gKGRhdGFbInRpbWUiXSBpZiAidGltZSIg
aW4gZGF0YQorICAgICAgICAjIHxkYXRhfCBjb250YWlucyBhIHRpbWVzdGFtcCBpbiBtaWNyb3Nl
Y29uZHMsIHdoaWxlIHRpbWUudGltZSgpIGdpdmVzCisgICAgICAgICMgaXQgaW4gc2Vjb25kcy4K
KyAgICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChmbG9hdChkYXRhWyJ0aW1l
Il0pIC8gMTAwMCBpZiAidGltZSIgaW4gZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgdGltZS50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9zdGF0dXMoc2Vs
ZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFbInRlc3QiXQotICAgICAgICBpc191
bmV4cGVjdGVkID0gTm9uZQogICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxmLl9n
ZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQorICAgICAg
ICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAKLSAgICAgICAgaXNfdW5leHBlY3RlZCA9IGFjdHVhbF9z
dGF0dXMgIT0gZXhwZWN0ZWRfc3RhdHVzCisgICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBhY3R1YWxf
c3RhdHVzIG5vdCBpbiBleHBlY3RlZF9zdGF0dXNlcwogICAgICAgICBpZiBpc191bmV4cGVjdGVk
IGFuZCB0ZXN0X25hbWUgbm90IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgogICAg
ICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMuYWRkKHRlc3RfbmFtZSkKICAg
ICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9hcHBlbmRfdGVz
dF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3VidGVzdCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAg
ICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBkYXRhWyJzdWJ0ZXN0
Il0sIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJtZXNzYWdlIl0pCiAK
ICAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFb
InRlc3QiXQotICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRh
dGFbInN0YXR1cyJdKQotICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQQVNTIiBhbmQgdGVz
dF9uYW1lIGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgotICAgICAgICAgICAgIyBU
aGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0ZXN0cywgc28gd2UgZmxpcCB0
aGUgc3RhdHVzCi0gICAgICAgICAgICAjIHRvIEZBSUwuCi0gICAgICAgICAgICBhY3R1YWxfc3Rh
dHVzID0gIkZBSUwiCisgICAgICAgICMgU2F2ZSB0aGUgc3RhdHVzIHJlcG9ydGVkIGJ5IFdQVCBz
aW5jZSB3ZSBtaWdodCBjaGFuZ2UgaXQgd2hlbiByZXBvcnRpbmcKKyAgICAgICAgIyB0byBDaHJv
bWl1bS4KKyAgICAgICAgd3B0X2FjdHVhbF9zdGF0dXMgPSBkYXRhWyJzdGF0dXMiXQorICAgICAg
ICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKHdwdF9hY3R1YWxfc3RhdHVz
KQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNf
ZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9
IEZhbHNlCisgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9m
YWlsczoKKyAgICAgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9IFRydWUKICAgICAgICAgICAgICMg
Q2xlYW4gdXAgdGhlIHRlc3QgbGlzdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAg
ICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscy5yZW1vdmUodGVzdF9uYW1l
KQorICAgICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0
ZXN0cy4gU2luY2Ugd2UgY2FuIG9ubHkKKyAgICAgICAgICAgICMgcmVwb3J0IGEgc2luZ2xlIHN0
YXR1cyB0byBDaHJvbWl1bSwgd2UgY2hvb3NlIEZBSUwgdG8gaW5kaWNhdGUKKyAgICAgICAgICAg
ICMgdGhhdCBzb21ldGhpbmcgYWJvdXQgdGhpcyB0ZXN0IGRpZCBub3QgcnVuIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGF0dXMgPT0gIlBBU1MiOgorICAgICAgICAgICAgICAg
IGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKIAotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxm
Ll9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQogICAg
ICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0
X21lc3NhZ2UodGVzdF9uYW1lLCBOb25lLCBhY3R1YWxfc3RhdHVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMsIGRhdGFbIm1lc3NhZ2UiXSkK
LSAgICAgICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVz
LCBleHBlY3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
bWVzc2FnZXNbdGVzdF9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfc3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAgICAgc2VsZi5fc3Rv
cmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0X25h
bWVdLCB3cHRfYWN0dWFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VidGVzdF9mYWlsdXJlKQogCiAgICAgICAgICMgUmVtb3ZlIHRoZSB0ZXN0IGZyb20gbWVzc2Fn
ZXMgZGljdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAgICAgICAgIHNlbGYubWVz
c2FnZXMucG9wKHRlc3RfbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJz
L3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90
ZXN0X2Nocm9taXVtLnB5CmluZGV4IDgzYzEyOGFjNWNiNDZhNjUzNzNhMmZlYTAwOGM2YmE2MDM1
MGZkOGYuLjJhNWQzZTc5MjgwY2I1NTYzNzQ3YmVjZGRhNGFmZTE4OGQzYjYwZTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQpAQCAtMTU2LDEy
ICsxNTYsMTMgQEAgZGVmIHRlc3Rfc3VidGVzdF9tZXNzYWdlcyhjYXBmZCk6CiAgICAgb3V0cHV0
LnNlZWsoMCkKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKLSAgICB0MV9s
b2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXVsiYXJ0aWZhY3RzIl1bImxvZyJdCi0gICAg
YXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdl
XG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
Ci0KLSAgICB0Ml9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsiYXJ0aWZhY3RzIl1b
ImxvZyJdCi0gICAgYXNzZXJ0IHQyX2xvZyA9PSAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDJf
bWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJd
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iXQorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQorICAgIHQy
X2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXQorICAg
IGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10g
dDJfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiIG5vdCBpbiB0
Ml9hcnRpZmFjdHMua2V5cygpCiAKIAogZGVmIHRlc3Rfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToK
QEAgLTIwMiwxMyArMjAzLDE3IEBAIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAg
ICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCiAgICAgdGVzdF9vYmogPSBvdXRw
dXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9h
OiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0
MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUIGV4cGVjdGVk
IFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IHRlc3Rfb2Jq
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0MV9jOiB0
MV9jX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFp
bHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBv
dXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLAotICAgICMgZGVzcGl0
ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQuCisgICAgIyBkZXNw
aXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0IHRoZSB0ZXN0IHBhc3NlZC4gQnV0IHRoZSBo
YXJuZXNzIHN0YXR1cworICAgICMgaXMgbG9nZ2VkIGFzIGFuIGFydGlmYWN0LgorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNTIl0KICAgICBhc3Nl
cnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhw
ZWN0ZWQiXSA9PSAiUEFTUyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdHRlciBj
bGVhbmVkIHVwIGl0cyBpbnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEiIG5vdCBpbiBmb3Jt
YXR0ZXIudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTI1MywxMiArMjU4LDEzIEBAIGRl
ZiB0ZXN0X2V4cGVjdGVkX3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAKICAgICB0ZXN0X29iaiA9
IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfbG9nID0gdGVzdF9vYmpbImFydGlm
YWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0MV9iX21lc3Nh
Z2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3Nh
Z2VcbiIKKyAgICBhc3NlcnQgdDFfbG9nID09IFsiW0ZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiJdCiAg
ICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBwYXNzIGJlY2F1
c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVjdGVkLgogICAgIGFz
c2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJl
eHBlY3RlZCJdID09ICJQQVNTIgogCiAKIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVzdF9wYXNz
KGNhcGZkKToKQEAgLTI5NiwxMCArMzAyLDE0IEBAIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVz
dF9wYXNzKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKICAg
ICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0gdGVz
dF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltQQVNTIGV4
cGVjdGVkIEZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgotICAgICMgU2luY2UgdGhlIHN1YnRl
c3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuCisgICAgdDFfYXJ0aWZh
Y3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sibG9n
Il0gPT0gWyJbUEFTUyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiJdCisgICAg
YXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCisg
ICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwgd2UgZmFpbCB0aGUg
dGVzdC4gQnV0IHdlIHJlcG9ydAorICAgICMgd3B0X2FjdHVhbF9zdGF0dXMgYXMgYW4gYXJ0aWZh
Y3QKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUEFT
UyJdCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQg
dGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IHRo
ZSBmb3JtYXR0ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAgICBhc3NlcnQgInQx
IiBub3QgaW4gZm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwogCkBAIC0zNjcsNiAr
Mzc3LDE0NCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3Rlc3RfZmFpbChjYXBmZCk6CiAgICAgIyBP
Sy0+UEFTUwogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgotICAgICMgLi5hbmQgdGhpcyB0ZXN0
IHNob3VsZCBub3QgYmUgYSByZWdyZXNzaW9uIG5vciB1bmV4cGVjdGVkCisgICAgIyAuLmFuZCB0
aGlzIHRlc3Qgc2hvdWxkIGJlIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3RlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3RfZmxha3lfdGVzdF9leHBlY3Rl
ZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRoIG11bHRpcGxlIHBv
c3NpYmxlIHN0YXR1c2VzIGlzIHNlZW4gYXMKKyAgICAjIGV4cGVjdGVkIGlmIGl0cyBhY3R1YWwg
c3RhdHVzIGlzIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMgc2V0IHVwIHRoZSBo
YW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhh
bmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAg
ICMgUnVuIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAgbG9nZ2VyLnN1aXRl
X3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0
YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBl
Y3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJFUlJPUiIsICJUSU1FT1VUIl0pCisgICAg
bG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBz
dGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMg
ZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVk
LmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0
dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRw
dXQpCisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBU
aGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBh
bmQgT0stPlBBU1MKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAg
ICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGlu
dG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIEZB
SUwgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBvciB1bmV4cGVj
dGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCisgICAgIyBvZiB0aGUgZXhwZWN0
ZWQgb25lcworICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rfb2JqCisgICAg
YXNzZXJ0ICJpc191bmV4cGVjdGVkIiBub3QgaW4gdGVzdF9vYmoKKworCitkZWYgdGVzdF9mbGFr
eV90ZXN0X3VuZXhwZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBhIGZsYWt5IHRlc3Qg
d2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisgICAgIyB1bmV4cGVj
dGVkIGlmIGl0cyBhY3R1YWwgc3RhdHVzIGlzIE5PVCBvbmUgb2YgdGhlIHBvc3NpYmxlIG9uZXMu
CisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAg
IGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21p
dW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBm
bGFreQorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEy
MykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEi
LCBzdGF0dXM9IkVSUk9SIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJtaXR0ZW50PVsiVElN
RU9VVCJdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdv
dCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0
cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0g
Y2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFz
c2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQg
b2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBq
c29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsi
dDEiXQorICAgICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBlZCwgY2hhbmdpbmcg
RVJST1ItPkZBSUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9
PSAiRkFJTCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIGNvbmNhdGVuYXRl
ZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQi
XSA9PSAiUEFTUyBUSU1FT1VUIgorICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Npb24gYW5kIHVu
ZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKKyAgICAjIG9uZSBvZiB0
aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlz
IFRydWUKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKwor
ZGVmIHRlc3RfcHJlY29uZGl0aW9uX2ZhaWxlZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEg
ZmFpbGVkIHByZWNvbmRpdGlvbiBnZXRzIHByb3Blcmx5IGhhbmRsZWQuCisKKyAgICAjIHNldCB1
cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3Ry
dWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFu
ZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkp
CisKKyAgICAjIFJ1biBhIHRlc3Qgd2l0aCBhIHByZWNvbmRpdGlvbiBmYWlsdXJlCisgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dl
ci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iUFJF
Q09ORElUSU9OX0ZBSUxFRCIsIGV4cGVjdGVkPSJPSyIpCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgp
CisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAg
IyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRv
IHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQg
Y2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAg
IyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNl
ZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0X29i
aiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgcHJlY29uZGl0aW9uIGZh
aWx1cmUgc2hvdWxkIG1hcCB0byBGQUlMIHN0YXR1cywgYnV0IHdlIHNob3VsZCBhbHNvCisgICAg
IyBoYXZlIGFuIGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIFBSRUNPTkRJVElPTl9G
QUlMRUQgc3RhdHVzLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2FjdHVhbF9zdGF0dXMiXSA9PSBb
IlBSRUNPTkRJVElPTl9GQUlMRUQiXQorICAgICMgLi4udGhpcyBpcyBhbiB1bmV4cGVjdGVkIHJl
Z3Jlc3Npb24gYmVjYXVzZSB3ZSBleHBlY3RlZCBhIHBhc3MgYnV0IGZhaWxlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50
X2VtcHR5KGNhcGZkKToKKyAgICAjIElmIHRoZSBrbm93bl9pbnRlcm1pdHRlbnQgbGlzdCBpcyBl
bXB0eSwgd2Ugd2FudCB0byBlbnN1cmUgd2UgZG9uJ3QgYXBwZW5kCisgICAgIyBhbnkgZXh0cmFu
ZW91cyBjaGFyYWN0ZXJzIHRvIHRoZSBvdXRwdXQuCisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxl
ci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5T
dHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVy
cy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1
biBhIHRlc3QgYW5kIGluY2x1ZGUgYW4gZW1wdHkga25vd25faW50ZXJtaXR0ZW50IGxpc3QKKyAg
ICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGltZT0xMjMpCisgICAg
bG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQoInQxIiwgc3RhdHVz
PSJPSyIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1bXSkKKyAgICBsb2dnZXIu
c3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9z
dGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcg
aGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQor
ICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3NlcnQgY2FwdHVyZWQuZXJyID09
ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAg
ICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKwor
ICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICAjIEJvdGggYWN0
dWFsIGFuZCBleHBlY3RlZCBzdGF0dXNlcyBnZXQgbWFwcGVkIHRvIFBhc3MuIE5vIGV4dHJhIHdo
aXRlc3BhY2UKKyAgICAjIGFueXdoZXJlLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0g
PT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3Ry
dW1lbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODdjZjRmZGE3MjQyNmI4OTIxM2NjNDAzN2Y3NDVjZTUy
MzI5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKQEAg
LTAsMCArMSwxMTcgQEAKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHNpeC5t
b3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKKworIiIiSW5zdHJ1bWVudGF0aW9uIGZvciBtZWFzdXJp
bmcgaGlnaC1sZXZlbCB0aW1lIHNwZW50IG9uIHZhcmlvdXMgdGFza3MgaW5zaWRlIHRoZSBydW5u
ZXIuCisKK1RoaXMgaXMgbG93ZXIgZmlkZWxpdHkgdGhhbiBhbiBhY3R1YWwgcHJvZmlsZSwgYnV0
IGFsbG93cyBjdXN0b20gZGF0YSB0byBiZSBjb25zaWRlcmVkLAorc28gdGhhdCB3ZSBjYW4gc2Vl
IHRoZSB0aW1lIHNwZW50IGluIHNwZWNpZmljIHRlc3RzIGFuZCB0ZXN0IGRpcmVjdG9yaWVzLgor
CisKK0luc3RydW1lbnRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdl
cnMgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIF9fZW50ZXJfXworY29udGFpbmluZyB0aGUgdXNl
ci1mYWNpbmcgQVBJIGUuZy4KKword2l0aCBJbnN0cnVtZW50KCphcmdzKSBhcyByZWNvcmRpbmc6
CisgICAgcmVjb3JkaW5nLnNldChbImluaXQiXSkKKyAgICBkb19pbml0KCkKKyAgICByZWNvcmRp
bmcucGF1c2UoKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRzOgorICAgICAgIHRocmVh
ZC5zdGFydChyZWNvcmRpbmcsICphcmdzKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRz
OgorICAgICAgIHRocmVhZC5qb2luKCkKKyAgICByZWNvcmRpbmcuc2V0KFsidGVhcmRvd24iXSkg
ICAjIHVuLXBhdXNlcyB0aGUgSW5zdHJ1bWVudAorICAgIGRvX3RlYXJkb3duKCkKKyIiIgorCitj
bGFzcyBOdWxsSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBzZXQoc2VsZiwgc3RhY2spOgor
ICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgdGFzayB0byBzdGFjaworCisgICAgICAgIDpwYXJh
bSBzdGFjazogQSBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIGN1cnJlbnQgdGFzay4KKyAg
ICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgaW50ZXJwcmV0ZWQgbGlrZSBhIHN0YWNrIHRy
YWNlIHNvIHRoYXQgWyJmb28iXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJi
YXIiXSBib3RoIHNob3cgdXAgYXMgZGVzY2VuZGFudHMgb2YgImZvbyIKKyAgICAgICAgIiIiCisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAgIiIiU3RvcCByZWNv
cmRpbmcgYSB0YXNrIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhl
IHRocmVhZAorICAgICAgICBpcyBwdXJlbHkgd2FpdGluZyBvbiB0aGUgcmVzdWx0cyBvZiBvdGhl
ciB0aHJlYWRzIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgSW5zdHJ1bWVudFdyaXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6CisgICAgICAgIHNlbGYucXVldWUgPSBx
dWV1ZQorCisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgIHN0YWNrLmluc2VydCgw
LCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQorICAgICAgICBzdGFjayA9IHNlbGYu
X2NoZWNrX3N0YWNrKHN0YWNrKQorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInNldCIsIHRocmVh
ZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgc3RhY2spKQorCisgICAg
ZGVmIHBhdXNlKHNlbGYpOgorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInBhdXNlIiwgdGhyZWFk
aW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQsIHRpbWUudGltZSgpLCBOb25lKSkKKworICAgIGRl
ZiBfY2hlY2tfc3RhY2soc2VsZiwgc3RhY2spOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShz
dGFjaywgKHR1cGxlLCBsaXN0KSkKKyAgICAgICAgcmV0dXJuIFtpdGVtLnJlcGxhY2UoIiAiLCAi
XyIpIGZvciBpdGVtIGluIHN0YWNrXQorCisKK2NsYXNzIEluc3RydW1lbnQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiSW5zdHJ1bWVudCB0
aGF0IGNvbGxlY3RzIGRhdGEgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBzdW1zIHRoZSB0aW1l
IGluIGVhY2gKKyAgICAgICAgdGhyZWFkLiBUaGUgb3V0cHV0IGlzIGluIHRoZSBmb3JtYXQgcmVx
dWlyZWQgYnkgZmxhbWVncmFwaC5wbCB0byBlbmFibGUgdmlzdWFsaXNhdGlvbgorICAgICAgICBv
ZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHRhc2suCisKKyAgICAgICAgOnBhcmFtIGZpbGVfcGF0
aDogLSBUaGUgcGF0aCBvbiB3aGljaCB0byB3cml0ZSBpbnN0cnVtZW50IG91dHB1dC4gQW55IGV4
aXN0aW5nIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgcGF0aCB3aWxs
IGJlIG92ZXJ3cml0dGVuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBhdGggPSBmaWxlX3Bh
dGgKKyAgICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gTm9u
ZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYudGhyZWFkID0g
Tm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYudGhy
ZWFkIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucXVldWUgaXMgTm9uZQorICAgICAgICBz
ZWxmLnF1ZXVlID0gUXVldWUoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJl
YWQodGFyZ2V0PXNlbGYucnVuKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAg
IHJldHVybiBJbnN0cnVtZW50V3JpdGVyKHNlbGYucXVldWUpCisKKyAgICBkZWYgX19leGl0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJzdG9wIiwg
Tm9uZSwgdGltZS50aW1lKCksIE5vbmUpKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKyAg
ICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYucXVldWUgPSBOb25lCisKKyAg
ICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBrbm93bl9jb21tYW5kcyA9IHsic3RvcCIsICJwYXVz
ZSIsICJzZXQifQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAidyIpIGFzIGY6CisgICAg
ICAgICAgICB0aHJlYWRfZGF0YSA9IHt9CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgICAgIGNvbW1hbmQsIHRocmVhZCwgdGltZV9zdGFtcCwgc3RhY2sgPSBzZWxmLnF1ZXVl
LmdldCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaW4ga25vd25fY29tbWFuZHMK
KworICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIGRvbmUgcmVjb3JkaW5nLCBkdW1wIHRoZSBp
bmZvcm1hdGlvbiBmcm9tIGFsbCB0aHJlYWRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAg
IyBiZWZvcmUgZXhpdGluZy4gT3RoZXJ3aXNlIGZvciBlaXRoZXIgJ3NldCcgb3IgJ3BhdXNlJyB3
ZSBvbmx5IG5lZWQgdG8gZHVtcAorICAgICAgICAgICAgICAgICMgaW5mb3JtYXRpb24gZnJvbSB0
aGUgY3VycmVudCBzdGFjayAoaWYgYW55KSB0aGF0IHdhcyByZWNvcmRpbmcgb24gdGhlIHJlcG9y
dGluZworICAgICAgICAgICAgICAgICMgdGhyZWFkIChhcyB0aGF0IHN0YWNrIGlzIG5vIGxvbmdl
ciBhY3RpdmUpLgorICAgICAgICAgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgICAgICAgICBp
ZiBjb21tYW5kID09ICJzdG9wIjoKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aHJlYWRf
ZGF0YS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGVsaWYgdGhyZWFkIGluIHRocmVhZF9kYXRh
OgorICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQodGhyZWFkX2RhdGEucG9wKHRocmVh
ZCkpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9zdGFjaywgc3RhcnRfdGltZSBpbiBpdGVt
czoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJWRcbiIgJSAoIjsiLmpvaW4ob3V0
cHV0X3N0YWNrKSwgaW50KDEwMDAgKiAodGltZV9zdGFtcCAtIHN0YXJ0X3RpbWUpKSkpCisKKyAg
ICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICJzZXQiOgorICAgICAgICAgICAgICAgICAgICB0
aHJlYWRfZGF0YVt0aHJlYWRdID0gKHN0YWNrLCB0aW1lX3N0YW1wKQorICAgICAgICAgICAgICAg
IGVsaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9t
YW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IGVhZTg1YjFmNjY2MWE2N2RmZjU5ZWY3OGE5ZWQ2Mjdl
M2UzNjAzZDguLjMxYzU3ZTljYjczNGY3NDFlNDI3NWU3NGU4ZmNmN2NkMGFkNGVlMzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0xLDYgKzEsOCBAQAogaW1wb3J0IG9zCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5cGUKK2Zyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorCiAKIGZyb20gLndwdG1hbmlm
ZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmJh
c2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtMTUsNiArMTcsNyBAQCBFYWNoIFRlc3ROb2RlIGhh
cyB6ZXJvIG9yIG1vcmUgU3VidGVzdE5vZGUgY2hpbGRyZW4sIG9uZSBmb3IgZWFjaAoga25vd24g
c3VidGVzdCBvZiB0aGUgdGVzdC4KICIiIgogCisKIGRlZiBkYXRhX2Nsc19nZXR0ZXIob3V0cHV0
X25vZGUsIHZpc2l0ZWRfbm9kZSk6CiAgICAgIyB2aXNpdGVkX25vZGUgaXMgaW50ZW50aW9uYWxs
eSB1bnVzZWQKICAgICBpZiBvdXRwdXRfbm9kZSBpcyBOb25lOgpAQCAtMjksNyArMzIsNyBAQCBk
ZWYgZGF0YV9jbHNfZ2V0dGVyKG91dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUpOgogZGVmIGJvb2xf
cHJvcChuYW1lLCBub2RlKToKICAgICAiIiJCb29sZWFuIHByb3BlcnR5IiIiCiAgICAgdHJ5Ogot
ICAgICAgICByZXR1cm4gbm9kZS5nZXQobmFtZSkKKyAgICAgICAgcmV0dXJuIGJvb2wobm9kZS5n
ZXQobmFtZSkpCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1cm4gTm9uZQogCkBA
IC00NiwxOCArNDksMjggQEAgZGVmIGxpc3RfcHJvcChuYW1lLCBub2RlKToKICAgICAiIiJMaXN0
IHByb3BlcnR5IiIiCiAgICAgdHJ5OgogICAgICAgICBsaXN0X3Byb3AgPSBub2RlLmdldChuYW1l
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgYmFzZXN0cmluZyk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmV0
dXJuIFtsaXN0X3Byb3BdCiAgICAgICAgIHJldHVybiBsaXN0KGxpc3RfcHJvcCkKICAgICBleGNl
cHQgS2V5RXJyb3I6CiAgICAgICAgIHJldHVybiBbXQogCiAKK2RlZiBzdHJfcHJvcChuYW1lLCBu
b2RlKToKKyAgICB0cnk6CisgICAgICAgIHByb3AgPSBub2RlLmdldChuYW1lKQorICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShwcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgorICAgICAgICByZXR1cm4gcHJvcAorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCiBkZWYgdGFncyhub2RlKToKICAgICAiIiJTZXQgb2YgdGFn
cyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAgdHJ5OgogICAgICAg
ICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
KHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUp
OgogICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZX0KICAgICAgICAgcmV0dXJuIHNldCh2YWx1ZSkK
ICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC02Niw3ICs3OSw3IEBAIGRlZiB0YWdzKG5vZGUpOgog
CiBkZWYgcHJlZnMobm9kZSk6CiAgICAgZGVmIHZhbHVlKGluaV92YWx1ZSk6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoaW5pX3ZhbHVlLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBy
ZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUuc3BsaXQoJzonLCAx
KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgdGhpbmdzIGxp
a2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3QnCkBAIC03NCw3ICs4
Nyw3IEBAIGRlZiBwcmVmcyhub2RlKToKIAogICAgIHRyeToKICAgICAgICAgbm9kZV9wcmVmcyA9
IG5vZGUuZ2V0KCJwcmVmcyIpCi0gICAgICAgIGlmIHR5cGUobm9kZV9wcmVmcykgaW4gKHN0ciwg
dW5pY29kZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9wcmVmcywgdGV4dF90eXBlKToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShub2RlX3ByZWZzKSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShpdGVtKSBmb3IgaXRlbSBpbiBub2RlX3ByZWZz
KQpAQCAtODYsNyArOTksNyBAQCBkZWYgcHJlZnMobm9kZSk6CiBkZWYgc2V0X3Byb3AobmFtZSwg
bm9kZSk6CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5nZXQobmFtZSkKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAgICAgICAgICAgIHJ2ID0g
e25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9IHNldChub2RlX2l0
ZW1zKQpAQCAtOTksNyArMTEyLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAgIHJ2
ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10aHJl
c2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChzdHIsIHVuaWNvZGUp
KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0ZXh0X3R5cGUpOgogICAgICAg
ICAgICAgbm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQogICAgICAgICBmb3IgaXRlbSBpbiBub2Rl
X2l0ZW1zOgogICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJzcGxpdCgiOiIsIDEp
CkBAIC0xNTYsNyArMTY5LDcgQEAgZGVmIGZ1enp5X3Byb3Aobm9kZSk6CiAgICAgaWYgbm90IGlz
aW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICBmb3Ig
aXRlbSBpbiB2YWx1ZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5p
Y29kZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgogICAg
ICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBw
YXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTI3OSw2ICsyOTIsMTAgQEAgY2xhc3MgRXhw
ZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNh
YmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxlZCIsIHNl
bGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0zMDcsNiArMzI0LDEw
IEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYga25vd25f
aW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICByZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIs
IHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBsZW1lbnRhdGlvbi1zdGF0dXMi
LCBzZWxmKQorCiAKIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAg
QHByb3BlcnR5CkBAIC0zMzcsNiArMzU4LDEwIEBAIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1h
bmlmZXN0SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMo
c2VsZikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJv
cCgibHNhbi1hbGxvd2VkIiwgc2VsZikKQEAgLTM1Nyw2ICszODIsMTAgQEAgY2xhc3MgRGlyZWN0
b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgZnV6enkoc2VsZik6CiAgICAgICAg
IHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW1wbGVt
ZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3Byb3AoImltcGxlbWVu
dGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgpAQCAtNDE0LDYgKzQ0Mywx
MCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNh
bl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxl
ZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC00NDIsNiAr
NDc1LDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGtub3duX2lu
dGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgiZXhwZWN0ZWQiLCBz
ZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMo
c2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3RhdHVzIiwg
c2VsZikKKwogICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIkFkZCBhIHN1
YnRlc3QgdG8gdGhlIGN1cnJlbnQgdGVzdAogCkBAIC00NzgsNyArNTE1LDcgQEAgZGVmIGdldF9t
YW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mbyk6CiAg
ICAgIiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVkX3BhdGgobWV0YWRh
dGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0
X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIiKSBhcyBm
OgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YV9jbHNfZ2V0dGVyPWRhdGFfY2xzX2dldHRlciwKQEAgLTQ5Nyw3ICs1MzQsNyBA
QCBkZWYgZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLCBydW5faW5mbyk6CiAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMgc2hvdWxkIGJlIGNvbXB1dGVkLgogICAgICIiIgogICAgIHRyeToKLSAgICAg
ICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBh
cyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IERpcmVjdG9yeU1hbmlmZXN0KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggZDMwMjgzMWE1N2FiYmFhZGQ3NWZlNDllMDk0NDgy
ZGMxNDIyM2VhMy4uNzliNWIxOWIzYTNmNjE3ZTVkZDQwMTE4MDQyZGEwYjNlYThlNDExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDYgKzYsNyBAQCBiZSBpbmNsdWRlZCBvciBleGNs
dWRlZC4KICIiIgogaW1wb3J0IGdsb2IKIGltcG9ydCBvcworZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgdXJsc3Bs
aXQKIAogZnJvbSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUKQEAgLTk0LDcgKzk1
LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIGlmIHBh
dGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRo
czoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMu
aXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBkYXRhIGluIGl0ZXJp
dGVtcyh0ZXN0X21hbmlmZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UK
ICAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgZGF0
YVsidGVzdHNfcGF0aCJdKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1hbmlmZXN0
Lml0ZXJwYXRoIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGVsc2UgbWFuaWZlc3QuaXRlcmRpcgpA
QCAtMTUwLDUgKzE1MSw1IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
CiAKIGRlZiBnZXRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCk6Ci0gICAgd2l0aCBvcGVuKG1hbmlm
ZXN0X3BhdGgpIGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFzIGY6
CiAgICAgICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxlKGYsIGRhdGFfY2xzX2dldHRlcj1s
YW1iZGEgeCwgeTogSW5jbHVkZU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21h
bmlmZXN0dXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CmluZGV4IGFm
OWFmMThkOTA3MTVkNDNiYmNkMmFlNDdjZTc2Mjc1YmIwZTE1NzcuLjEyOTQ1N2IzZmQxMjcwZGM2
NjAyOWQzZWE4NzNkMzUzNzE0YWE2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVz
dHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKQEAgLTMsNyAr
Myw3IEBAIGltcG9ydCBvcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxq
b2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgZGVmYXVs
dGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4IGltcG9ydCBpdGVy
a2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgaW50ZWdlcl90eXBl
cywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcywgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5
cGUKIAogZnJvbSAud3B0bWFuaWZlc3QgaW1wb3J0IHNlcmlhbGl6ZQogZnJvbSAud3B0bWFuaWZl
c3Qubm9kZSBpbXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJpbmFyeUV4cHJlc3Np
b25Ob2RlLApAQCAtNDExLDcgKzQxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6
CiAgICAgICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICAgICAgIGlmIGRpc2FibGVfaW50ZXJt
aXR0ZW50OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5jaGlsZHJlblswXSBp
ZiBlLmNvbmQgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1p
dHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0ciwgdW5pY29kZSkp
IGVsc2UgInVuc3RhYmxlIgorICAgICAgICAgICAgICAgIG1zZyA9IGRpc2FibGVfaW50ZXJtaXR0
ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIHN0cmluZ190eXBlcysodGV4
dF90eXBlLCkpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQo
ImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5l
d19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC01MTMsNyArNTEzLDcgQEAg
Y2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgIHRvcF9sZXZlbF9wcm9w
cywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5ub2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcwog
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQogICAg
ICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgotICAgICAg
ICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChkZXBlbmRlbnRfcHJvcHMpCisgICAg
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAgICAgICAgICAgICBm
b3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAgICAgICAgICBpZiAo
KG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQK
ICAgICAgICAgICAgICAgICAgICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRpb25bY29uZGl0aW9u
XSkpOgpAQCAtNzc0LDcgKzc3NCw3IEBAIGNsYXNzIEFwcGVuZE9ubHlMaXN0VXBkYXRlKFByb3Bl
cnR5VXBkYXRlKToKICAgICAgICAgZm9yIGl0ZW0gaW4gbmV3OgogICAgICAgICAgICAgaWYgaXRl
bSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICAgICAgcnYuYWRkKGl0ZW0pCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAgLTg5NywxMCArODk3
LDEwIEBAIGRlZiBtYWtlX2V4cHIocHJvcF9zZXQsIHJocyk6CiAKIAogZGVmIG1ha2Vfbm9kZSh2
YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxvbmcpOgorICAgIGlm
IGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgogICAgICAgICBub2Rl
ID0gTnVtYmVyTm9kZSh2YWx1ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGluIChzdHIsIHVuaWNv
ZGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh1bmljb2RlKHZhbHVlKSkKKyAgICBlbGlm
IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBTdHJpbmdOb2Rl
KHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAiX19pdGVyX18iKToK
ICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6CkBA
IC05MDksMTAgKzkwOSwxMCBAQCBkZWYgbWFrZV9ub2RlKHZhbHVlKToKIAogCiBkZWYgbWFrZV92
YWx1ZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBpbiAoaW50LCBmbG9hdCwgbG9u
Zyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90eXBlcysoZmxvYXQsKSk6CiAg
ICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBlKHZhbHVlKSBpbiAo
c3RyLCB1bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh1bmljb2RlKHZhbHVlKSkK
KyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBW
YWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIodmFsdWUsICJfX2l0
ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAgICBmb3IgaXRlbSBpbiB2
YWx1ZToKQEAgLTkzMSw3ICs5MzEsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3Qs
IHRlc3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZQogICAgIDpw
YXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGluIHRoaXMgbWFu
aWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0ZWRfcGF0aChtZXRh
ZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4obWFuaWZl
c3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFz
IGY6CiAgICAgICAgICAgICBydiA9IGNvbXBpbGUoZiwgdGVzdF9wYXRoLCB1cmxfYmFzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGVfaW50ZXJt
aXR0ZW50LCByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgIGV4Y2VwdCBJT0Vycm9yOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5
CmluZGV4IGMzMjhkY2VmYTcyNTNkZGVhOTUyNTQ5YzcwMjcyM2U5OGI0Y2FkYzQuLmRmMzFhYzQw
ZGU4YjhlZTcwODEzYzNiMmUwM2QxODY1ZjY3MmUyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tZXRhZGF0YS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKQEAgLTEsMTAgKzEs
MTIgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBhcnJh
eQogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IGludGVybgorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9zdHIsIGVu
c3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0X3R5cGUKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCiAKIGZyb20gLiBpbXBvcnQgbWFuaWZl
c3R1cGRhdGUKIGZyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgpAQCAtNDMsMTEgKzQ1LDExIEBAIGNs
YXNzIFJ1bkluZm8ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuY2Fub25pY2FsX3JlcHIg
PT0gb3RoZXIuY2Fub25pY2FsX3JlcHIKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CiAgICAgICAgICAgICB5aWVsZCBr
ZXksIHZhbHVlCiAKICAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBsaXN0KHNl
bGYuaXRlcml0ZW1zKCkpCisgICAgICAgIHJldHVybiBsaXN0KGl0ZXJpdGVtcyhzZWxmKSkKIAog
CiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxvZ19maWxlX25h
bWVzLApAQCAtMTI3LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMobWFuaWZlc3Rz
LCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdlZCA9IHNldChm
aWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBmb3IgbWFuaWZl
c3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgbWFuaWZlc3QsIHBh
dGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgogICAgICAgICBpZiBwYXRoc1sidXJsX2Jhc2Ui
XSA9PSAiLyI6CiAgICAgICAgICAgICByb290X21hbmlmZXN0ID0gbWFuaWZlc3QKICAgICAgICAg
ICAgIGJyZWFrCkBAIC0xOTgsNyArMjAwLDcgQEAgY2xhc3MgSW50ZXJuZWREYXRhKG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAg
Zm9yIGkgaW4geHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CisgICAgICAgIGZvciBpIGlu
IHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CiAgICAgICAgICAgICB5aWVsZCBzZWxmLmdl
dChpKQogCiAKQEAgLTIzOCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6CiBkZWYg
dW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6CiAgICAg
ICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYgaXNpbnN0
YW5jZShkYXRhLCB1bmljb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHRleHRfdHlwZSk6
CiAgICAgICAgIHJldHVybiAoZGF0YSwgTm9uZSkKICAgICAjIFVucGFjayBtdWx0aXBsZSBzdGF0
dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNlZCBpbiB0aGUgUmVzdWx0cyBuYW1lZCB0dXBsZSBi
ZWxvdywKICAgICAjIHNlcGFyYXRpbmcgYHN0YXR1c2AgYW5kIGBrbm93bl9pbnRlcm1pdHRlbnRg
LgpAQCAtMjU3LDcgKzI1OSw3IEBAIGRlZiBsb2FkX3Rlc3RfZGF0YSh0ZXN0X3BhdGhzKToKICAg
ICBtYW5pZmVzdHMgPSBtYW5pZmVzdF9sb2FkZXIubG9hZCgpCiAKICAgICBpZF90ZXN0X21hcCA9
IHt9Ci0gICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6
CiAgICAgICAgIGlkX3Rlc3RfbWFwLnVwZGF0ZShjcmVhdGVfdGVzdF90cmVlKHBhdGhzWyJtZXRh
ZGF0YV9wYXRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfbWFuaWZlc3QpKQogICAgIHJldHVybiBpZF90ZXN0X21hcApAQCAtMjg1LDEwICsyODcs
MTAgQEAgZGVmIHVwZGF0ZV9yZXN1bHRzKGlkX3Rlc3RfbWFwLAogICAgICAgICAgICAgICAgICAg
IGRpc2FibGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pbnRlcm1p
dHRlbnQsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudCk6Ci0gICAgdGVz
dF9maWxlX2l0ZW1zID0gc2V0KGlkX3Rlc3RfbWFwLml0ZXJ2YWx1ZXMoKSkKKyAgICB0ZXN0X2Zp
bGVfaXRlbXMgPSBzZXQoaXRlcnZhbHVlcyhpZF90ZXN0X21hcCkpCiAKICAgICBkZWZhdWx0X2V4
cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfY2xzIGluIHdwdHRl
c3QubWFuaWZlc3RfdGVzdF9jbHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVz
dF9jbHMgaW4gaXRlcml0ZW1zKHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMpOgogICAgICAgICBp
ZiB0ZXN0X2Nscy5yZXN1bHRfY2xzOgogICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RlZF9ieV90
eXBlWyh0ZXN0X3R5cGUsIEZhbHNlKV0gPSB0ZXN0X2Nscy5yZXN1bHRfY2xzLmRlZmF1bHRfZXhw
ZWN0ZWQKICAgICAgICAgaWYgdGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xzOgpAQCAtMzI0LDgg
KzMyNiwxMSBAQCBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRhX3BhdGgsIGV4cGVjdGVk
KToKICAgICAgICAgdG1wX3BhdGggPSBwYXRoICsgIi50bXAiCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHdpdGggb3Blbih0bXBfcGF0aCwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBm
LndyaXRlKG1hbmlmZXN0X3N0cikKLSAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0
aCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0ci5lbmNvZGUoInV0ZjgiKSkK
KyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAg
ICAgIG9zLnJlcGxhY2UodG1wX3BhdGgsIHBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0aCkKICAgICAgICAgZXhjZXB0IChFeGNl
cHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBvcy51bmxpbmsodG1wX3BhdGgpCkBAIC00MjYsNyArNDMxLDcgQEAgY2xhc3MgRXhwZWN0
ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJsc2FuX2xlYWsiXShp
dGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3psZWFrIiwge30pCi0g
ICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBtb3psZWFrX2RhdGEuaXRlcml0ZW1zKCk6
CisgICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96bGVha19kYXRh
KToKICAgICAgICAgICAgIGZvciBrZXksIGFjdGlvbiBpbiBbKCJvYmplY3RzIiwgIm1vemxlYWtf
b2JqZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidG90YWwiLCAibW96
bGVha190b3RhbCIpXToKICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzY29wZV9kYXRhLmdl
dChrZXksIFtdKToKQEAgLTQzOCw3ICs0NDMsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVybi5zdG9yZShSdW5J
bmZvKGRhdGFbInJ1bl9pbmZvIl0pKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0YSk6
Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5pZF90ZXN0X21hcFt0ZXN0X2lkXQogICAgICAgICBl
eGNlcHQgS2V5RXJyb3I6CkBAIC00NDgsOCArNDUzLDggQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXSA9IHNldCgpCiAK
ICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRl
cm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQotICAgICAgICBzdWJ0ZXN0ID0gaW50ZXJu
KGRhdGFbInN1YnRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVy
bihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCisgICAgICAgIHN1YnRlc3QgPSBpbnRlcm4oZW5z
dXJlX3N0cihkYXRhWyJzdWJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rl
c3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToKICAgICAg
ICAgICAgIHJldHVybgpAQCAtNDY2LDcgKzQ3MSw3IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihv
YmplY3QpOgogICAgICAgICBpZiBkYXRhWyJzdGF0dXMiXSA9PSAiU0tJUCI6CiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUo
InV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3Qi
XSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQpCiAg
ICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00Nzks
NyArNDg0LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGRlbCBz
ZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0KIAogICAgIGRlZiBhc3NlcnRpb25fY291bnQoc2Vs
ZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgi
dXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJd
KSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5pZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAg
ICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTQ5MCwx
MiArNDk1LDE1IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RfZm9yX3Njb3BlKHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9IGRhdGEuZ2V0KCJz
Y29wZSIsICIvIikKLSAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGguam9pbihkaXJfcGF0
aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICBkaXJfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihvcy5wYXRoLmpvaW4oZGlyX3BhdGgs
ICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkpCiAgICAgICAgIGlmIGRpcl9p
ZC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfaWRbMTpdCiAgICAg
ICAgIHJldHVybiBkaXJfaWQsIHNlbGYuaWRfdGVzdF9tYXBbZGlyX2lkXQogCiAgICAgZGVmIGxz
YW5fbGVhayhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6Cisg
ICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIGxzYW4gYW5ub3RhdGlvbnMg
Zm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRpcl9pZCwgdGVz
dF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICB0ZXN0X2RhdGEuc2V0
KGRpcl9pZCwgTm9uZSwgImxzYW4iLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX2lu
Zm8sIChkYXRhWyJmcmFtZXMiXSwgZGF0YS5nZXQoImFsbG93ZWRfbWF0Y2giKSkpCkBAIC01MDMs
NiArNTExLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha19vYmplY3Qo
c2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8iOgorICAgICAgICAg
ICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90YXRpb25zIGZvciBy
b290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJfaWQsIHRlc3RfZGF0
YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRhLnNldChkaXJf
aWQsIE5vbmUsICJsZWFrLW9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5f
aW5mbywgKCIlczolcyIsIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbIm5hbWUiXSksCkBAIC01MTEs
NiArNTIyLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha190b3RhbChz
ZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6CisgICAgICAgICAg
ICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIG1vemxlYWsgYW5ub3RhdGlvbnMgZm9yIHJv
b3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRhdGFbImJ5dGVzIl06
CiAgICAgICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0
YSkKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAibGVhay10aHJlc2hv
bGQiLApAQCAtNTI5LDMxICs1NDMsMzAgQEAgZGVmIGNyZWF0ZV90ZXN0X3RyZWUobWV0YWRhdGFf
cGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgYXNzZXJ0IGFsbF90eXBlcyA+IGV4Y2x1ZGVfdHlw
ZXMKICAgICBpbmNsdWRlX3R5cGVzID0gYWxsX3R5cGVzIC0gZXhjbHVkZV90eXBlcwogICAgIGZv
ciBpdGVtX3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gdGVzdF9tYW5pZmVzdC5pdGVydHlwZXMo
KmluY2x1ZGVfdHlwZXMpOgotICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShp
bnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihpdGVtX3R5cGUuZW5jb2RlKCJ1dGY4
IikpLAorICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4oZW5zdXJl
X3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybihlbnN1cmVfc3RyKGl0ZW1fdHlwZSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzKQogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAg
ICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybih0ZXN0LmlkLmVuY29kZSgidXRmOCIpKV0gPSB0ZXN0
X2ZpbGVfZGF0YQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKGVuc3VyZV9zdHIodGVz
dC5pZCkpXSA9IHRlc3RfZmlsZV9kYXRhCiAKLSAgICAgICAgZGlyX3BhdGggPSBvcy5wYXRoLnNw
bGl0KHRlc3RfcGF0aClbMF0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgICAgICBkaXJf
cGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICBpZiBkaXJfcGF0aDoKLSAgICAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfcGF0
aCArICIvX19kaXJfXyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2lk
ID0gIl9fZGlyX18iCi0gICAgICAgICAgICBkaXJfaWQgPSBpbnRlcm4oKHRlc3RfbWFuaWZlc3Qu
dXJsX2Jhc2UgKyBkaXJfaWQpLmxzdHJpcCgiLyIpLmVuY29kZSgidXRmOCIpKQotICAgICAgICAg
ICAgaWYgZGlyX2lkIG5vdCBpbiBpZF90ZXN0X21hcDoKLSAgICAgICAgICAgICAgICB0ZXN0X2Zp
bGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNv
ZGUoInV0ZjgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSkKLSAgICAgICAgICAgICAgICBpZF90ZXN0X21hcFtkaXJfaWRdID0gdGVzdF9maWxlX2Rh
dGEKLSAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aCBvciBkaXJfcGF0aCBpbiBpZF90ZXN0X21h
cDoKKyAgICAgICAgICAgIGRpcl9tZXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsICJf
X2Rpcl9fIikKKyAgICAgICAgICAgIGRpcl9pZCA9ICh0ZXN0X21hbmlmZXN0LnVybF9iYXNlICsg
ZGlyX21ldGFfcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpKS5sc3RyaXAoIi8iKQorICAg
ICAgICAgICAgaWYgZGlyX2lkIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybihlbnN1
cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyX21ldGFfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGlyX2lkXSA9IHRlc3Rf
ZmlsZV9kYXRhCisgICAgICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShkaXJfcGF0
aCkKKyAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aDoKICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZGlyX3BhdGggPSBkaXJfcGF0aC5yc3BsaXQoIi8iLCAxKVswXSBpZiAiLyIg
aW4gZGlyX3BhdGggZWxzZSAiIgogCiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFwCiAKQEAgLTYxNCw3
ICs2MjcsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgc2VsZi5pdGVt
X3R5cGUgPSBpdGVtX3R5cGUKICAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKICAg
ICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFfcGF0aAotICAgICAgICBzZWxmLnRl
c3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIpKSBmb3IgaXRlbSBpbiB0ZXN0c30K
KyAgICAgICAgc2VsZi50ZXN0cyA9IHtpbnRlcm4oZW5zdXJlX3N0cihpdGVtLmlkKSkgZm9yIGl0
ZW0gaW4gdGVzdHN9CiAgICAgICAgIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZSA9IEZhbHNlCiAgICAg
ICAgIHNlbGYuZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QoUGFja2VkUmVz
dWx0TGlzdCkpCiAKQEAgLTY1NSwxMSArNjY4LDExIEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmpl
Y3QpOgogICAgICAgICAjIFJldHVybiBzdWJ0ZXN0IG5vZGVzIHByZXNlbnQgaW4gdGhlIGV4cGVj
dGVkIGZpbGUsIGJ1dCBtaXNzaW5nIGZyb20gdGhlIGRhdGEKICAgICAgICAgcnYgPSBbXQogCi0g
ICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6Ci0g
ICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZC5kZWNvZGUoInV0Zjgi
KSkKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEp
OgorICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KGVuc3VyZV90ZXh0KHRlc3Rf
aWQpKQogICAgICAgICAgICAgaWYgbm90IHRlc3Q6CiAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNvZGUoInV0ZjgiKSBmb3Ig
aXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90IE5vbmUpCisgICAgICAg
ICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGVuc3VyZV90ZXh0KGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJrZXlzKHN1YnRlc3RzKSBpZiBpdGVtIGlzIG5vdCBOb25lKQogICAgICAgICAgICAgbWlzc2lu
Z19zdWJ0ZXN0cyA9IHNldCh0ZXN0LnN1YnRlc3RzLmtleXMoKSkgLSBzZWVuX3N1YnRlc3RzCiAg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBtaXNzaW5nX3N1YnRlc3RzOgogICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3N1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KGl0ZW0pCkBAIC02NzMsNiArNjg2
LDI5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBydgog
CisgICAgZGVmIGZpbHRlcl91bmtub3duX3Byb3BzKHNlbGYsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBz
dWJ0ZXN0cyk6CisgICAgICAgICMgUmVtb3ZlIHN1YnRlc3RzIHdoaWNoIGhhdmUgc29tZSBjb25k
aXRpb25zIHRoYXQgYXJlbid0IGluIHVwZGF0ZV9wcm9wZXJ0aWVzCisgICAgICAgICMgc2luY2Ug
cmVtb3ZpbmcgdGhlc2UgbWF5IGJlIGluYXBwcm9wcmlhdGUKKyAgICAgICAgdG9wX2xldmVsX3By
b3BzLCBkZXBlbmRlbnRfcHJvcHMgPSB1cGRhdGVfcHJvcGVydGllcworICAgICAgICBhbGxfcHJv
cGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJ2
YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKKyAgICAgICAgICAgIGFsbF9wcm9wZXJ0aWVzIHw9IHNl
dChpdGVtKQorCisgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgZm9yIHN1YnRlc3QgaW4g
c3VidGVzdHM6CisgICAgICAgICAgICBpbmNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgZm9yIGtl
eSwgXyBpbiBzdWJ0ZXN0Lml0ZXJfcHJvcGVydGllcygpOgorICAgICAgICAgICAgICAgIGNvbmRp
dGlvbnMgPSBzdWJ0ZXN0LmdldF9jb25kaXRpb25zKGtleSkKKyAgICAgICAgICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25k
aXRpb24udmFyaWFibGVzLmlzc3Vic2V0KGFsbF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiBub3QgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIGluY2x1ZGU6CisgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCiAgICAgZGVmIHVwZGF0ZShz
ZWxmLCBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUsIHVwZGF0ZV9wcm9wZXJ0aWVzLAogICAgICAg
ICAgICAgICAgZnVsbF91cGRhdGU9RmFsc2UsIGRpc2FibGVfaW50ZXJtaXR0ZW50PU5vbmUsIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsCiAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0
ZW50PUZhbHNlKToKQEAgLTY4Nyw2ICs3MjMsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0
KToKIAogICAgICAgICBpZiBmdWxsX3VwZGF0ZToKICAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxm
Lm9ycGhhbl9zdWJ0ZXN0cyhleHBlY3RlZCkKKyAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxmLmZp
bHRlcl91bmtub3duX3Byb3BzKHVwZGF0ZV9wcm9wZXJ0aWVzLCBvcnBoYW5zKQogCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBvcnBoYW5zOgogICAgICAg
ICAgICAgICAgIHJldHVybgpAQCAtNzA0LDkgKzc0MSw5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkLmdldF90ZXN0KHRl
c3RfaWQpCiAgICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRdID0gdGVzdF9leHBl
Y3RlZAogCi0gICAgICAgIGZvciB0ZXN0X2lkLCB0ZXN0X2RhdGEgaW4gc2VsZi5kYXRhLml0ZXJp
dGVtcygpOgotICAgICAgICAgICAgdGVzdF9pZCA9IHRlc3RfaWQuZGVjb2RlKCJ1dGY4IikKLSAg
ICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gdGVzdF9kYXRhLml0ZXJp
dGVtcygpOgorICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIGl0ZXJpdGVtcyhzZWxm
LmRhdGEpOgorICAgICAgICAgICAgdGVzdF9pZCA9IGVuc3VyZV9zdHIodGVzdF9pZCkKKyAgICAg
ICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gaXRlcml0ZW1zKHRlc3RfZGF0
YSk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRz
X2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGRpcmVjdG9yeSBtZXRh
ZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5vbmUgYW5kIHRlc3Rf
aWQuZW5kc3dpdGgoIl9fZGlyX18iKToKQEAgLTcyMiw4ICs3NTksNyBAQCBjbGFzcyBUZXN0Rmls
ZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQK
ICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2Uoc3VidGVzdF9pZCwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5kZWNvZGUoInV0ZjgiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3VidGVzdF9pZCA9IGVuc3VyZV90ZXh0KHN1YnRlc3RfaWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpdGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZC5nZXRfc3VidGVzdChzdWJ0
ZXN0X2lkKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHByb3AgPT0gInN0YXR1cyI6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMmI4OTRjYjc0ZDRlYzA5MTkzMWJmNDE3YzkyZDViZWEwNzFjYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQpAQCAtMCwwICsxLDExIEBA
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBzaXgKKworCitkZWYgY2FzdF9lbnYoZW52KToKKyAgICAi
IiJFbmNvZGUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgYXMgdGhlIGFwcHJvcHJpYXRlIHR5
cGUgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24KKyAgICBUaGlzIGFzc3VtZXMgdGhhdCBhbGwgdGhl
IGRhdGEgaXMgb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIFVURjgiIiIKKworICAgIGVudl90eXBl
ID0gc2l4LmVuc3VyZV9iaW5hcnkgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgZWxzZSBzaXgu
ZW5zdXJlX3N0cgorICAgIHJldHVybiB7ZW52X3R5cGUoa2V5KTogZW52X3R5cGUodmFsdWUpIGZv
ciBrZXksIHZhbHVlIGluIHNpeC5pdGVyaXRlbXMoZW52KX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9wcm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQppbmRleCBlMzExNzA0
MjcwOWY5OWY0ZTA0NDNkYzBkZmFmNTYxYWQwYjU0OGIwLi5hYmQ4NDA5NGJiMzNkYmQxM2IzNTk0
YTdhY2JlODQ2NzUxMmE5OWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGlt
cG9ydGxpYgogaW1wb3J0IGltcAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5i
cm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJv
ZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRpcGxpZXIgPSBnZXRh
dHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAgICAgICAgc2VsZi5l
eGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xzX25hbWUgaW4g
ZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xz
X25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgogICAgICAgICAgICAgY2xzID0g
Z2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQogICAgICAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFz
c2VzW3Rlc3RfdHlwZV0gPSBjbHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggYzA2ZjdlNWU5ZDZiMTBiNGU2
MTljOTVhNjI0MTdlNTJhNTk2YmU1My4uM2Y4OTg5NzI5ZmRlMGVlNDVjZjc4M2JjNjk4MzA3ZTM4
Yzg0NGQ5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBvcnQgaW8KIGltcG9ydCBv
cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBm
cm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBK
U09ORm9ybWF0dGVyCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vzc19yZXN1bHRzKGxv
ZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRlci5o
YW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhhbmRs
ZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAg
ICAgaWYgaXNfaW5jb25zaXN0ZW50KHRlc3RbInN0YXR1cyJdLCBpdGVyYXRpb25zKToKICAgICAg
ICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgTm9uZSwgdGVzdFsic3RhdHVz
Il0sIFtdKSkKLSAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0
ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGlu
IGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKICAgICAgICAgICAgIGlmIGlzX2luY29uc2lz
dGVudChzdWJ0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAgICAgICAgICAgICAgICAgaW5j
b25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RbInN0YXR1
cyJdLCBzdWJ0ZXN0WyJtZXNzYWdlcyJdKSkKIApAQCAtMjA4LDcgKzIwOSw3IEBAIGRlZiB3cml0
ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVyPU5vbmUsIHVzZV9k
ZXRhaWxzPUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3RzIiBpZiBsZW4ocmVzdWx0cykgPiAxCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRlc3QiKSkKIAotICAgIGZvciB0
ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9uYW1l
LCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYmFzZXVybCA9ICJodHRwOi8v
dzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMiIGluIG9zLnBhdGgu
c3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAgICAgICAgIGJhc2V1
cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0yMzYsNyArMjM3LDcg
QEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVyYXRpb25zLCBwcl9udW1iZXI9
Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogCiAKIGRlZiBydW5fc3RlcChsb2dnZXIsIGl0ZXJh
dGlvbnMsIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFzLCAqKmt3YXJncyk6
Ci0gICAgaW1wb3J0IHdwdHJ1bm5lcgorICAgIGZyb20gLiBpbXBvcnQgd3B0cnVubmVyCiAgICAg
a3dhcmdzID0gY29weS5kZWVwY29weShrd2FyZ3MpCiAKICAgICBpZiByZXN0YXJ0X2FmdGVyX2l0
ZXJhdGlvbjoKQEAgLTI3OCw3ICsyNzksNyBAQCBkZWYgZ2V0X3N0ZXBzKGxvZ2dlciwgcmVwZWF0
X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBrd2FyZ3NfZXh0cmFzKToKICAgICBmb3Iga3dhcmdzX2V4
dHJhIGluIGt3YXJnc19leHRyYXM6CiAgICAgICAgIGlmIGt3YXJnc19leHRyYToKICAgICAgICAg
ICAgIGZsYWdzX3N0cmluZyA9ICIgd2l0aCBmbGFncyAlcyIgJSAiICIuam9pbigKLSAgICAgICAg
ICAgICAgICAiJXM9JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBrd2FyZ3NfZXh0cmEuaXRlcml0ZW1z
KCkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1z
KGt3YXJnc19leHRyYSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcg
PSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IGZhNTRjYTM2MTU3NjMxOGNiMzVlYzcxNmExYTE1OWJk
YjUzMmU2YzguLjNhMjZlZmM1NTQyMTFhNTI0OGE3OTA5MDlkOTk4OTNhZmU5ZmY2NzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
bG9hZGVyLnB5CkBAIC01LDYgKzUsOCBAQCBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJh
Y3RtZXRob2QKIGZyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQogZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBv
cnQgUXVldWUKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfYmluYXJ5LCBpdGVyaXRlbXMKK2Zyb20g
c2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQog
ZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCkBAIC0xNSw2ICsxNyw3IEBAIG1hbmlmZXN0
ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93bmxvYWRfZnJvbV9naXRodWIgPSBO
b25lCiAKKwogZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogICAgICMgVGhpcyByZWxpZXMgb24g
YW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIGhhdmluZyBzZXQgdGhlIHN5cy5wYXRoIGNvcnJlY3Rs
eSA6KAogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBkb3dubG9hZF9mcm9t
X2dpdGh1YgpAQCAtMjQsMTIgKzI3LDEzIEBAIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToKIAog
CiBjbGFzcyBUZXN0Q2h1bmtlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3Rh
bF9jaHVua3MsIGNodW5rX251bWJlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsX2No
dW5rcywgY2h1bmtfbnVtYmVyLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYudG90YWxfY2h1bmtz
ID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYuY2h1bmtfbnVtYmVyID0gY2h1bmtfbnVtYmVy
CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rX251bWJlciA8PSBzZWxmLnRvdGFsX2NodW5rcwog
ICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRfbG9nZ2VyKCkKICAg
ICAgICAgYXNzZXJ0IHNlbGYubG9nZ2VyCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFVuY2h1bmtlZChUZXN0Q2h1bmtl
cik6CiAgICAgICAgIFRlc3RDaHVua2VyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykK
ICAgICAgICAgYXNzZXJ0IHNlbGYudG90YWxfY2h1bmtzID09IDEKIAotICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBtYW5pZmVzdCk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0LCAqKmt3
YXJncyk6CiAgICAgICAgIGZvciBpdGVtIGluIG1hbmlmZXN0OgogICAgICAgICAgICAgeWllbGQg
aXRlbQogCkBAIC00OSw3ICs1Myw3IEBAIGNsYXNzIEhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9
IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQogICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgs
IHRlc3RzIGluIG1hbmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNSh0ZXN0
X3BhdGgpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
ZW5zdXJlX2JpbmFyeSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAgICAgICAgICAgICBp
ZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTYyLDggKzY2LDEzIEBAIGNs
YXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToKICAgICAiIiIKICAgICBkZWYg
X19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9IHNlbGYuY2h1
bmtfbnVtYmVyIC0gMQorICAgICAgICBkZXB0aCA9IHNlbGYua3dhcmdzLmdldCgiZGVwdGgiKQog
ICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0OgotICAg
ICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKSku
aGV4ZGlnZXN0KCksIDE2KQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAgICAgICAgICAgICAg
aGFzaF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKS5z
cGxpdChvcy5wYXRoLnNlcCwgZGVwdGgpWzpkZXB0aF0pCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCisgICAg
ICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1KGVuc3VyZV9iaW5hcnkoaGFzaF9wYXRoKSkuaGV4
ZGlnZXN0KCksIDE2KQogICAgICAgICAgICAgaWYgaCAlIHNlbGYudG90YWxfY2h1bmtzID09IGNo
dW5rX2luZGV4OgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0
ZXN0cwogCkBAIC0xMjQsNyArMTMzLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2FkZXIob2JqZWN0KToK
IAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZvciB1cmxf
YmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
dXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgogICAgICAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IHNlbGYubG9hZF9tYW5pZmVzdCh1cmxfYmFzZT11cmxfYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipwYXRocykK
ICAgICAgICAgICAgIHBhdGhfZGF0YSA9IHsidXJsX2Jhc2UiOiB1cmxfYmFzZX0KQEAgLTE1OSw3
ICsxNjgsMTAgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICB0
b3RhbF9jaHVua3M9MSwKICAgICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPTEsCiAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfaHR0cHM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgc2tpcF90aW1l
b3V0PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9xdWljPUZhbHNlLAorICAgICAg
ICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNraXBfaW1w
bGVtZW50YXRpb25fc3RhdHVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdz
PU5vbmUpOgogCiAgICAgICAgIHNlbGYudGVzdF90eXBlcyA9IHRlc3RfdHlwZXMKICAgICAgICAg
c2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvCkBAIC0xNzAsMTYgKzE4MiwyMSBAQCBjbGFzcyBUZXN0
TG9hZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYu
ZGlzYWJsZWRfdGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYuaW5jbHVkZV9odHRwcyA9IGluY2x1
ZGVfaHR0cHMKKyAgICAgICAgc2VsZi5pbmNsdWRlX3F1aWMgPSBpbmNsdWRlX3F1aWMKICAgICAg
ICAgc2VsZi5za2lwX3RpbWVvdXQgPSBza2lwX3RpbWVvdXQKKyAgICAgICAgc2VsZi5za2lwX2lt
cGxlbWVudGF0aW9uX3N0YXR1cyA9IHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzCiAKICAgICAg
ICAgc2VsZi5jaHVua190eXBlID0gY2h1bmtfdHlwZQogICAgICAgICBzZWxmLnRvdGFsX2NodW5r
cyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9IGNodW5rX251bWJl
cgogCisgICAgICAgIGlmIGNodW5rZXJfa3dhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBjaHVu
a2VyX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuY2h1bmtlciA9IHsibm9uZSI6IFVuY2h1bmtl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNoIjogSGFzaENodW5rZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGlyX2hhc2giOiBEaXJlY3RvcnlIYXNoQ2h1bmtlcn1bY2h1bmtf
dHlwZV0odG90YWxfY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaHVua19udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjaHVua2VyX2t3YXJncykKIAogICAg
ICAgICBzZWxmLl90ZXN0X2lkcyA9IE5vbmUKIApAQCAtMjA2LDcgKzIyMyw3IEBAIGNsYXNzIFRl
c3RMb2FkZXIob2JqZWN0KToKICAgICBkZWYgbG9hZF9kaXJfbWV0YWRhdGEoc2VsZiwgdGVzdF9t
YW5pZmVzdCwgbWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKToKICAgICAgICAgcnYgPSBbXQogICAg
ICAgICBwYXRoX3BhcnRzID0gb3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0aCkuc3BsaXQob3MucGF0
aC5zZXApCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocGF0aF9wYXJ0cykgKyAxKToKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6CiAgICAgICAgICAgICBw
YXRoID0gb3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIG9zLnBhdGguc2VwLmpvaW4ocGF0aF9w
YXJ0c1s6aV0pLCAiX19kaXJfXy5pbmkiKQogICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gc2Vs
Zi5kaXJlY3RvcnlfbWFuaWZlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuZGlyZWN0b3J5X21h
bmlmZXN0c1twYXRoXSA9IG1hbmlmZXN0ZXhwZWN0ZWQuZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLApA
QCAtMjM2LDcgKzI1Myw3IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgICAg
IG1hbmlmZXN0X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1zKQogCiAgICAgICAg
IGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3RfaXRlbXM6Ci0gICAg
ICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNlW2l0ZXIodGVzdHMp
Lm5leHQoKS51cmxfYmFzZV0KKyAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5pZmVzdHNf
YnlfdXJsX2Jhc2VbbmV4dChpdGVyKHRlc3RzKSkudXJsX2Jhc2VdCiAgICAgICAgICAgICBtZXRh
ZGF0YV9wYXRoID0gc2VsZi5tYW5pZmVzdHNbbWFuaWZlc3RfZmlsZV1bIm1ldGFkYXRhX3BhdGgi
XQogCiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhID0gc2VsZi5s
b2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFkYXRhX3BhdGgsIHRlc3RfcGF0aCkKQEAg
LTI1Miw4ICsyNjksMTIgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAg
ZW5hYmxlZCA9IG5vdCB0ZXN0LmRpc2FibGVkKCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlu
Y2x1ZGVfaHR0cHMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0gPT0gImh0dHBzIjoK
ICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmluY2x1ZGVfcXVpYyBhbmQgdGVzdC5lbnZpcm9ubWVudFsicXVpYyJdOgorICAgICAgICAgICAg
ICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5za2lwX3RpbWVvdXQgYW5k
IHRlc3QuZXhwZWN0ZWQoKSA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAgICAgZW5hYmxlZCA9
IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLnNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzIGFu
ZCB0ZXN0LmltcGxlbWVudGF0aW9uX3N0YXR1cygpIGluIHNlbGYuc2tpcF9pbXBsZW1lbnRhdGlv
bl9zdGF0dXM6CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgICAgICBr
ZXkgPSAiZW5hYmxlZCIgaWYgZW5hYmxlZCBlbHNlICJkaXNhYmxlZCIKICAgICAgICAgICAgIHRl
c3RzW2tleV1bdGVzdF90eXBlXS5hcHBlbmQodGVzdCkKIApAQCAtMjg0LDYgKzMwNSwxMCBAQCBj
bGFzcyBUZXN0U291cmNlKG9iamVjdCk6CiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywg
Kiprd2FyZ3MpOiAgIyBub3FhOiBOODA1CiAgICAgICAgIHBhc3MKIAorICAgIEBhYnN0cmFjdG1l
dGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5v
cWE6IE44MDUKKyAgICAgICAgcGFzcworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdyb3Vw
X21ldGFkYXRhKGNscywgc3RhdGUpOgogICAgICAgICByZXR1cm4geyJzY29wZSI6ICIvIn0KQEAg
LTMyMiwxNCArMzQ3LDI1IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNvdXJjZSk6CiAgICAg
ICAgICAgICB0ZXN0X3F1ZXVlLnB1dChpdGVtKQogICAgICAgICByZXR1cm4gdGVzdF9xdWV1ZQog
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3VwKGNscywgdGVzdHMsICoq
a3dhcmdzKToKKyAgICAgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgc3Rh
dGUgPSB7fQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0
czoKKyAgICAgICAgICAgIGlmIGNscy5uZXdfZ3JvdXAoc3RhdGUsIHRlc3QsICoqa3dhcmdzKToK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2xzLmdyb3VwX21ldGFkYXRhKHN0YXRlKVsnc2Nv
cGUnXQorICAgICAgICAgICAgZ3JvdXBzW2N1cnJlbnRdLmFwcGVuZCh0ZXN0LmlkKQorICAgICAg
ICByZXR1cm4gZ3JvdXBzCisKIAogY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShUZXN0U291cmNlKToK
ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJn
cyk6CiAgICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHByb2Nlc3NlcyA9IGt3
YXJnc1sicHJvY2Vzc2VzIl0KLSAgICAgICAgcXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiB4
cmFuZ2UocHJvY2Vzc2VzKV0KLSAgICAgICAgbWV0YWRhdGFzID0gW2Nscy5ncm91cF9tZXRhZGF0
YShOb25lKSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAgcXVldWVzID0gW2Rl
cXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQorICAgICAgICBtZXRhZGF0YXMgPSBb
Y2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nlc3NlcyldCiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgaWR4ID0gaGFzaCh0ZXN0LmlkKSAl
IHByb2Nlc3NlcwogICAgICAgICAgICAgZ3JvdXAgPSBxdWV1ZXNbaWR4XQpAQCAtMzQyLDYgKzM3
OCwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgogCiAgICAgICAgIHJl
dHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVzdHNfYnlfZ3Jv
dXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4ge2Nscy5ncm91cF9tZXRh
ZGF0YShOb25lKVsnc2NvcGUnXTogW3QuaWQgZm9yIHQgaW4gdGVzdHNdfQorCiAKIGNsYXNzIFBh
dGhHcm91cGVkU291cmNlKEdyb3VwZWRTb3VyY2UpOgogICAgIEBjbGFzc21ldGhvZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weQppbmRleCA3YjZiZjU3ZDE1OTkyOWNkY2E4N2U5Y2EzMjE2MTA0MDFiMzcxNjZhLi40OWEz
NTI1ZTg4M2QxNWEwNTkwMjJhNTQ5MTFlZWNmNTMxZDgzNmZmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQpAQCAt
MTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IucnVuX3Rlc3QodGVzdCkKICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJh
Y2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiB3YWl0KHNlbGYp
OgpAQCAtMTU4LDcgKzE1OCw3IEBAIGRlZiBzdGFydF9ydW5uZXIocnVubmVyX2NvbW1hbmRfcXVl
dWUsIHJ1bm5lcl9yZXN1bHRfcXVldWUsCiAgICAgd2l0aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dn
ZXIsIGNhcHR1cmVfc3RkaW8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBicm93c2VyID0g
ZXhlY3V0b3JfYnJvd3Nlcl9jbHMoKipleGVjdXRvcl9icm93c2VyX2t3YXJncykKLSAgICAgICAg
ICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGJyb3dzZXIsICoqZXhlY3V0b3Jfa3dhcmdzKQor
ICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMobG9nZ2VyLCBicm93c2VyLCAqKmV4
ZWN1dG9yX2t3YXJncykKICAgICAgICAgICAgIHdpdGggVGVzdFJ1bm5lcihsb2dnZXIsIHJ1bm5l
cl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRvcikgYXMgcnVubmVy
OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcnVubmVyLnJ1bigp
CkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHRlc3RfcXVldWUsIHRl
c3Rfc291cmNlX2NscywgYnJvd3Nlcl9jbHMsIGJyb3dzZXJfa3dhcmdzLAogICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9jbHMsIGV4ZWN1dG9yX2t3YXJncywgc3RvcF9mbGFnLCByZXJ1bj0xLCBw
YXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVj
dGVkPUZhbHNlLCByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLAot
ICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgorICAgICAgICAgICAgICAgICBj
YXB0dXJlX3N0ZGlvPVRydWUsIHJlY29yZGluZz1Ob25lKToKICAgICAgICAgIiIiVGhyZWFkIHRo
YXQgb3ducyBhIHNpbmdsZSBUZXN0UnVubmVyIHByb2Nlc3MgYW5kIGFueSBwcm9jZXNzZXMgcmVx
dWlyZWQKICAgICAgICAgYnkgdGhlIFRlc3RSdW5uZXIgKGUuZy4gdGhlIEZpcmVmb3ggYmluYXJ5
KS4KIApAQCAtMzE4LDYgKzMxOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCiAKICAgICAg
ICAgc2VsZi5tYW5hZ2VyX251bWJlciA9IG5leHRfbWFuYWdlcl9udW1iZXIoKQorICAgICAgICBh
c3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCiAKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQogICAgICAgICBz
ZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKQEAgLTM1MCw2ICszNTIsNyBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgbWF5IGFsc28gaGF2ZSBh
IHN0b3AgZmxhZyBzZXQgYnkgdGhlIG1haW4gdGhyZWFkIGluZGljYXRpbmcKICAgICAgICAgdGhh
dCB0aGUgbWFuYWdlciBzaG91bGQgc2h1dCBkb3duIHRoZSBuZXh0IHRpbWUgdGhlIGV2ZW50IGxv
b3AKICAgICAgICAgc3BpbnMuIiIiCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3Ry
dW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWRsb2cu
U3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5icm93
c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBhcyBicm93c2VyOgog
ICAgICAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nlck1hbmFnZXIoc2VsZi5sb2dnZXIsCkBA
IC0zOTAsOCArMzkzLDggQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBuZXdfc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIm5ldyBzdGF0ZTogJXMiICUgc2VsZi5zdGF0ZS5fX2NsYXNzX18uX19uYW1lX18p
Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3RSdW5uZXJNYW5hZ2Vy
IG1haW4gbG9vcCB0ZXJtaW5hdGluZywgc3RhcnRpbmcgY2xlYW51cCIpCkBAIC00NjcsNiArNDcw
LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKICAgICBk
ZWYgc3RhcnRfaW5pdChzZWxmKToKICAgICAgICAgdGVzdCwgdGVzdF9ncm91cCwgZ3JvdXBfbWV0
YWRhdGEgPSBzZWxmLmdldF9uZXh0X3Rlc3QoKQorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImluaXQiXSkKICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIFJ1bm5lck1hbmFnZXJTdGF0ZS5zdG9wKCkKICAgICAgICAgZWxzZToKQEAg
LTU1Niw2ICs1NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFk
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnN0YXRlLnRlc3RfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5zdGF0ZS5ncm91cF9tZXRhZGF0YSkKIAorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInRlc3QiXSArIHNlbGYuc3RhdGUudGVzdC5pZC5z
cGxpdCgiLyIpWzE6XSkKICAgICAgICAgc2VsZi5sb2dnZXIudGVzdF9zdGFydChzZWxmLnN0YXRl
LnRlc3QuaWQpCiAgICAgICAgIGlmIHNlbGYucmVydW4gPiAxOgogICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiUnVuICVkLyVkIiAlIChzZWxmLnJ1bl9jb3VudCwgc2VsZi5yZXJ1bikpCkBA
IC02NzIsNiArNjc3LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdWJ0ZXN0X3VuZXhwZWN0ZWQg
b3IgaXNfdW5leHBlY3RlZCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucmVzdGFydF9vbl91bmV4cGVjdGVkKSkKIAorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImFmdGVyLXRlc3QiXSkKICAgICAgICAgaWYgKG5vdCBmaWxlX3Jlc3Vs
dC5zdGF0dXMgPT0gIkNSQVNIIiBhbmQKICAgICAgICAgICAgIHNlbGYucGF1c2VfYWZ0ZXJfdGVz
dCBvcgogICAgICAgICAgICAgKHNlbGYucGF1c2Vfb25fdW5leHBlY3RlZCBhbmQgKHN1YnRlc3Rf
dW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSkpOgpAQCAtNzIwLDYgKzcyNiw3IEBAIGNsYXNz
IFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAgZGVmIHN0b3BfcnVu
bmVyKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIiIiU3RvcCB0aGUgVGVzdFJ1bm5lciBh
bmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIiIgorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0
ZXN0cnVubmVyIiwgInN0b3BfcnVubmVyIl0pCiAgICAgICAgIGlmIHNlbGYudGVzdF9ydW5uZXJf
cHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTczOCw2ICs3NDUsNyBAQCBj
bGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5y
ZW1vdGVfcXVldWUuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUgPSBOb25lCiAg
ICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gTm9uZQorICAgICAgICBzZWxmLnJlY29yZGluZy5w
YXVzZSgpCiAKICAgICBkZWYgZW5zdXJlX3J1bm5lcl9zdG9wcGVkKHNlbGYpOgogICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiZW5zdXJlX3J1bm5lcl9zdG9wcGVkIikKQEAgLTgyNSw3ICs4MzMs
OCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAgcGF1c2Vf
b25fdW5leHBlY3RlZD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcmVzdGFydF9vbl91bmV4cGVj
dGVkPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRp
bz1UcnVlLAorICAgICAgICAgICAgICAgICByZWNvcmRpbmc9Tm9uZSk6CiAgICAgICAgIHNlbGYu
c3VpdGVfbmFtZSA9IHN1aXRlX25hbWUKICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAg
ICBzZWxmLnRlc3Rfc291cmNlX2NscyA9IHRlc3Rfc291cmNlX2NscwpAQCAtODQwLDYgKzg0OSw4
IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3QpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8g
PSBkZWJ1Z19pbmZvCiAgICAgICAgIHNlbGYucmVydW4gPSByZXJ1bgogICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8gPSBjYXB0dXJlX3N0ZGlvCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUKIAogICAgICAgICBz
ZWxmLnBvb2wgPSBzZXQoKQogICAgICAgICAjIEV2ZW50IHRoYXQgaXMgcG9sbGVkIGJ5IHRocmVh
ZHMgc28gdGhhdCB0aGV5IGNhbiBncmFjZWZ1bGx5IGV4aXQgaW4gdGhlIGZhY2UKQEAgLTg3Nyw3
ICs4ODgsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVy
ZV9zdGRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
b3JkaW5nPXNlbGYucmVjb3JkaW5nKQogICAgICAgICAgICAgbWFuYWdlci5zdGFydCgpCiAgICAg
ICAgICAgICBzZWxmLnBvb2wuYWRkKG1hbmFnZXIpCiAgICAgICAgIHNlbGYud2FpdCgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVjZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5CmluZGV4IDA2YTU2NDFkNTBmYmJh
ZWQ0ZGU5ZGY1MTFjNTY3NzUzZWYxYTMyNmQuLmUxZTE4ZWM1ZTljZDIxZGFhODlmOTE3NjkwYWQx
Mjg1MmY5YTI4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0
X3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5
CkBAIC0xLDkgKzEsMTAgQEAKIGltcG9ydCBzeXMKLWZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwg
ZGlybmFtZQogCiBpbXBvcnQgbW9jawogaW1wb3J0IHB5dGVzdAogCitmcm9tIG9zLnBhdGggaW1w
b3J0IGpvaW4sIGRpcm5hbWUKKwogc3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2Zp
bGVfXyksICIuLiIsICIuLiIsICIuLiIpKQogCiBzYXVjZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAo
IndwdHJ1bm5lci5icm93c2Vycy5zYXVjZSIpCkBAIC05NSw3ICs5Niw2IEBAIGRlZiB0ZXN0X3Nh
dWNlY29ubmVjdF9jbGVhbnVwKCk6CiAKICAgICAgICAgc2xlZXAuYXNzZXJ0X2NhbGxlZCgpCiAK
LQogZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfbmV2ZXJfcmVhZHkoKToKICAgICB3aXRo
IG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLlNhdWNlQ29ubmVjdCwgInVwbG9hZF9wcmVydW5fZXhl
YyIpLFwKICAgICAgICAgICAgIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLnN1YnByb2Nlc3MsICJQ
b3BlbiIpIGFzIFBvcGVuLFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4
cGVjdGVkdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weQpp
bmRleCAyMzA4YmU5NTkwZTkwMDRmNDFhNDkyNjgyZDE4N2E3YjRmYzU3MjMxLi5kNzEyMzdhNDJk
YWQ1OGM2OWI2ODZlNjA0MGI2NWY0MDA2NGM5NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
ZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDcgKzEsMyBAQAotaW1wb3J0IHN5cwotCi1pbXBvcnQgcHl0
ZXN0Ci0KIGZyb20gLi4gaW1wb3J0IGV4cGVjdGVkdHJlZSwgbWV0YWRhdGEKIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTMyLDggKzI4LDYgQEAgZGVmIHJlc3VsdHNf
b2JqZWN0KHJlc3VsdHMpOgogICAgIHJldHVybiByZXN1bHRzX29iagogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMCgp
OgogICAgICMgUGFzcyBpZiBkZWJ1ZwogICAgIHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAi
dmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiRkFJTCIpLApAQCAtNTMsOCArNDcs
NiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzAoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUp
ID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgIyBQYXNzIGlmIGxpbnV4IG9yIHdp
bmRvd3MgMTAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAiMTgu
MDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTc3LDggKzY5LDYgQEAgZGVmIHRlc3Rf
YnVpbGRfdHJlZV8xKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X2J1aWxkX3RyZWVfMigpOgogICAgICMgRmFpbHMgaW4gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9u
CiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRl
YnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC0xMDQsOCArOTQsNiBAQCBkZWYgdGVzdF9idWlsZF90
cmVlXzIoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRf
dHJlZV8zKCk6CiAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAi
MTguMDQiLCAiZGVidWciOiBUcnVlLCAidW51c2VkIjogRmFsc2V9LCAiUEFTUyIpLApAQCAtMTE4
LDggKzEwNiw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMygpOgogICAgIGFzc2VydCBkdW1wX3Ry
ZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzQoKToKICAgICAjIENoZWNrIGNvdW50
cyBmb3IgbXVsdGlwbGUgc3RhdHVzZXMKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4Iiwg
InZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBGYWxzZX0sICJGQUlMIiksCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA3MmYzYTU5MWFkN2Y5MDUzMjY3MWNjYjg5N2Rm
Y2IxNjFiYzhmNDVkLi42MGIxYjBhNWE4NzhjZGE5YzUwMGVhYWUyNWYzZmU4OWVhZGY4MTljIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAgLTcsNiArNyw3IEBAIGltcG9y
dCBtb2NrCiBmcm9tIG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVyZWRsb2cKIAogZnJv
bSAuLmZvcm1hdHRlcnMgaW1wb3J0IHdwdHJlcG9ydAorZnJvbSAuLmZvcm1hdHRlcnMud3B0c2Ny
ZWVuc2hvdCBpbXBvcnQgV3B0c2NyZWVuc2hvdEZvcm1hdHRlcgogZnJvbSAuLmZvcm1hdHRlcnMu
d3B0cmVwb3J0IGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKIAogCkBAIC0xNjYsMyArMTY3LDI2
IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9rbm93bl9pbnRlcm1pdHRlbnQoY2FwZmQpOgogICAgIHN1
YnRlc3QgPSB0ZXN0WyJzdWJ0ZXN0cyJdWzBdCiAgICAgYXNzZXJ0IHN1YnRlc3RbImV4cGVjdGVk
Il0gPT0gdSJQQVNTIgogICAgIGFzc2VydCBzdWJ0ZXN0WyJrbm93bl9pbnRlcm1pdHRlbnQiXSA9
PSBbdSdGQUlMJ10KKworCitkZWYgdGVzdF93cHRzY3JlZW5zaG90X3Rlc3RfZW5kKGNhcGZkKToK
KyAgICBmb3JtYXR0ZXIgPSBXcHRzY3JlZW5zaG90Rm9ybWF0dGVyKCkKKworICAgICMgRW1wdHkK
KyAgICBkYXRhID0ge30KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5v
bmUKKworICAgICMgTm8gaXRlbXMKKyAgICBkYXRhWydleHRyYSddID0geyJyZWZ0ZXN0X3NjcmVl
bnNob3RzIjogW119CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKSBpcyBOb25l
CisKKyAgICAjIEludmFsaWQgaXRlbQorICAgIGRhdGFbJ2V4dHJhJ11bJ3JlZnRlc3Rfc2NyZWVu
c2hvdHMnXSA9IFsibm8gZGljdCBpdGVtIl0KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5k
KGRhdGEpIGlzIE5vbmUKKworICAgICMgUmFuZG9tIGhhc2gKKyAgICBkYXRhWydleHRyYSddWydy
ZWZ0ZXN0X3NjcmVlbnNob3RzJ10gPSBbeyJoYXNoIjogIkhBU0giLCAic2NyZWVuc2hvdCI6ICJE
QVRBIn1dCisgICAgYXNzZXJ0ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsREFUQVxuJyA9PSBmb3Jt
YXR0ZXIudGVzdF9lbmQoZGF0YSkKKworICAgICMgQWxyZWFkeSBjYWNoZWQgaGFzaAorICAgIGFz
c2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggNTI1OTE1ZDE4MzJhYzhhZjE5NTdhNzk5
NjE1OTY5ZTA1OGVlZmNhNS4uZjNlNGNlNzk2YTQ1YzQ3MmE4OGZlMDIyMjc3ZTAzNDdiNGU5ODk0
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0x
LDQgKzEsMyBAQAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQg
cHl0ZXN0CkBAIC02LDggKzUsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBtYW5p
ZmVzdGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5
MyIpCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3RlZCIsIFsKICAgICAo
YiJyZWYuaHRtbDoxOzIwMCIsIFsoInJlZi5odG1sIiwgKCgxLCAxKSwgKDIwMCwgMjAwKSkpXSks
CiAgICAgKGIicmVmLmh0bWw6MC0xOzEwMC0yMDAiLCBbKCJyZWYuaHRtbCIsICgoMCwgMSksICgx
MDAsIDIwMCkpKV0pLApAQCAtMjUsNyArMjIsNyBAQCBmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4
cGVjdGVkCiAgICAgICAoKHUidGVzdC5odG1sIiwgdSJyZWYxLmh0bWwiLCAiPT0iKSwgKCg1LDEw
KSwgKDEwMCwgMTAwKSkpXSksCiBdKQogZGVmIHRlc3RfZnV6enkoZnV6enksIGV4cGVjdGVkKToK
LSAgICBkYXRhID0gIiIiCisgICAgZGF0YSA9IGIiIiIKIFt0ZXN0Lmh0bWxdCiAgIGZ1enp5OiAl
cyIiIiAlIGZ1enp5CiAgICAgZiA9IEJ5dGVzSU8oZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0
YWJpbGl0eS5weQppbmRleCA0NzQwNTZkZGU2YzY3YmIwYWFkMjEwMDYxM2U2Y2EzMzE5NjIzOTYy
Li45YThmY2NmOTM1YTEzNmM2MDUwZTg1MmY5YTU3MDQxMzhiMGQzZjQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CkBAIC0xLDUgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgc3Rh
YmlsaXR5Ci0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGlj
dAogCiBkZWYgdGVzdF9pc19pbmNvbnNpc3RlbnQoKToKICAgICBhc3NlcnQgc3RhYmlsaXR5Lmlz
X2luY29uc2lzdGVudCh7IlBBU1MiOiAxMH0sIDEwKSBpcyBGYWxzZQpAQCAtMjksMyArMjksMTE0
IEBAIGRlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKICAgICAgICAgInRpbWVvdXQiOiAxMDB9
KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgc3RhYmlsaXR5LmZpbmRfc2xvd19zdGF0dXMoewogICAg
ICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiU0tJUCI6IDB9fSkgaXMgTm9uZQorCisKK2RlZiB0
ZXN0X2dldF9zdGVwcygpOgorICAgIGxvZ2dlciA9IE5vbmUKKworICAgIHN0ZXBzID0gc3RhYmls
aXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFtdKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09
IDAKKworICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFt7fV0p
CisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgcmVwZWF0X2xvb3AgPSAxCisgICAg
ZmxhZ19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICd5JworICAgIHN0ZXBzID0gc3Rh
YmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCAwLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkKKyAgICBhc3NlcnQg
bGVuKHN0ZXBzKSA9PSAxCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3Rz
IGluIGEgbG9vcCAlZCB0aW1lcyB3aXRoIGZsYWdzICVzPSVzIiAlICgKKyAgICAgICAgcmVwZWF0
X2xvb3AsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkKKworICAgIHJlcGVhdF9sb29wID0gMAorICAg
IHJlcGVhdF9yZXN0YXJ0ID0gMQorICAgIGZsYWdfbmFtZSA9ICdmbGFnJworICAgIGZsYWdfdmFs
dWUgPSAnbicKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRf
bG9vcCwgcmVwZWF0X3Jlc3RhcnQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2ZsYWdfbmFtZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDEKKyAg
ICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVz
dGFydHMgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAgIHJlcGVhdF9yZXN0
YXJ0LCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9vcCA9IDEwCisgICAg
cmVwZWF0X3Jlc3RhcnQgPSA1CisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dl
ciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbe31dKQorICAgIGFzc2VydCBsZW4oc3Rl
cHMpID09IDIKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBs
b29wICVkIHRpbWVzIiAlIHJlcGVhdF9sb29wCisgICAgYXNzZXJ0IHN0ZXBzWzFdWzBdID09ICgK
KyAgICAgICAgIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVzdGFydHMgJWQgdGltZXMi
ICUgcmVwZWF0X3Jlc3RhcnQpCisKKworZGVmIHRlc3RfbG9nX2hhbmRsZXIoKToKKyAgICBoYW5k
bGVyID0gc3RhYmlsaXR5LkxvZ0hhbmRsZXIoKQorICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCisg
ICAgZGF0YVsidGVzdCJdID0gInRlc3RfbmFtZSIKKyAgICB0ZXN0ID0gaGFuZGxlci5maW5kX29y
X2NyZWF0ZV90ZXN0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN1YnRlc3RzIl0gPT0gT3JkZXJl
ZERpY3QoKQorICAgIGFzc2VydCB0ZXN0WyJzdGF0dXMiXSA9PSBkZWZhdWx0ZGljdChpbnQpCisg
ICAgYXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXSA9PSBkZWZhdWx0ZGljdChmbG9hdCkK
KyAgICBhc3NlcnQgdGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKwor
ICAgIHN0YXJ0X3RpbWUgPSAxMDAKKyAgICBkYXRhWyJ0aW1lIl0gPSBzdGFydF90aW1lCisgICAg
aGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN0YXJ0X3RpbWUiXSA9
PSBzdGFydF90aW1lCisKKyAgICBkYXRhWyJzdWJ0ZXN0Il0gPSAic3VidGVzdF9uYW1lIgorICAg
IHN1YnRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkKKyAgICBhc3Nl
cnQgc3VidGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50KQorICAgIGFzc2VydCBzdWJ0
ZXN0WyJtZXNzYWdlcyJdID09IHNldCgpCisgICAgYXNzZXJ0IHN1YnRlc3QgPT0gaGFuZGxlci5m
aW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisKKyAgICBkYXRhWyJzdGF0dXMiXSA9IDAKKyAg
ICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDAKKyAgICBoYW5k
bGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFb
InN0YXR1cyJdXSA9PSAxCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2Vy
dCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMgorICAgIGRhdGFbInN0YXR1
cyJdID0gMQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0g
MAorICAgIG1lc3NhZ2UgPSAidGVzdCBtZXNzYWdlIgorICAgIGRhdGFbIm1lc3NhZ2UiXSA9IG1l
c3NhZ2UKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3Rb
InN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgYXNzZXJ0IGxlbihzdWJ0ZXN0WyJt
ZXNzYWdlcyJdKSA9PSAxCisgICAgYXNzZXJ0IG1lc3NhZ2UgaW4gc3VidGVzdFsibWVzc2FnZXMi
XQorCisgICAgdGVzdF9kdXJhdGlvbiA9IDEwCisgICAgZGF0YVsidGltZSJdID0gZGF0YVsidGlt
ZSJdICsgdGVzdF9kdXJhdGlvbgorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9PSB0ZXN0X2R1cmF0
aW9uCisgICAgYXNzZXJ0ICJ0aW1lb3V0IiBub3QgaW4gdGVzdAorCisgICAgZGF0YVsidGVzdDIi
XSA9ICJ0ZXN0X25hbWVfMiIKKyAgICB0aW1lb3V0ID0gNQorICAgIGRhdGFbImV4dHJhIl0gPSB7
fQorICAgIGRhdGFbImV4dHJhIl1bInRlc3RfdGltZW91dCJdID0gdGltZW91dAorICAgIGhhbmRs
ZXIudGVzdF9zdGFydChkYXRhKQorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsidGltZW91dCJdID09IHRpbWVvdXQgKiAxMDAwCisKKworZGVmIHRlc3RfZXJyX3N0
cmluZygpOgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnT0sn
OiAxLCB1J0ZBSUwnOiAxfSwgMSkgPT0gdSIqKkR1cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUqKiIKKyAg
ICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMiwgdSdGQUlM
JzogMX0sIDIpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioiCisgICAgYXNzZXJ0IHN0
YWJpbGl0eS5lcnJfc3RyaW5nKHt1J1NLSVAnOiAxfSwgMCkgPT0gdSJEdXBsaWNhdGUgc3VidGVz
dCBuYW1lIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnU0tJ
UCc6IDEsIHUnT0snOiAxfSwgMSkgPT0gdSJEdXBsaWNhdGUgc3VidGVzdCBuYW1lIgorCisgICAg
YXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlMJzogMX0sIDIpID09
IHUiKipGQUlMOiAxLzIsIE1JU1NJTkc6IDEvMioqIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJy
X3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnT0snOiAxfSwgMykgPT0gdSIqKkZBSUw6
IDEvMywgT0s6IDEvMywgTUlTU0lORzogMS8zKioiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVy
cl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMSwgdSdGQUlMJzogMX0sIDIpID09IHUiKipGQUlM
OiAxLzIsIE9LOiAxLzIqKiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxfSwgNCkgPT0gdSJGQUlMOiAx
LzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxLCB1J09LJzogMn0sIDQpID09IHUiRkFJ
TDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRl
ci5weQppbmRleCBlODU3Y2Q0M2RiNmQyODFmOTU0MTQyMzBmNTJjOTg0YWFkOTE1MTE4Li44MzYw
MDNkMTA2MDM4YWI0MzAzMDM1ZWVjY2EzMTc3NGM5YTI2Y2UxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3Rlc3Rsb2FkZXIucHkKQEAgLTIwLDggKzIwLDYgQEAgc2tpcDogdHJ1ZQogCiBAcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVkIG9uIFdpbjMyIikK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF9maWx0ZXJfdW5pY29kZSgpOgogICAgIHRlc3RzID0gbWFrZV9tb2NrX21hbmlmZXN0
KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRl
LnB5CmluZGV4IDVkOTAwYTNkNmM5Y2QyMzY5NmZlMGQyYjdjMjBkOGZmNTE0MmI5ZTUuLjZkYzA0
Y2VkZjM0YzdhOGZiNjY3M2YxYzVmNDc3ZDA1NjFlYjFmZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91
cGRhdGUucHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRs
b2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3Mu
cGFyZGlyLCBvcy5wYXJkaXIpKQotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0g
YXMgbWFuaWZlc3RfaXRlbQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0gYXMg
bWFuaWZlc3RfaXRlbSwgdXRpbHMKIAogCiBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3Bh
dGgpOgpAQCAtMjEsNyArMjEsOSBAQCBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3BhdGgp
OgogCiAKIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqYXJncyk6Ci0g
ICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQoIi8iKSkKKyAgICBwYXRoID0gdXRpbHMudG9fb3NfcGF0aChw
YXRoKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgcmVsX3BhdGhfcGFydHM9cGF0
aF9wYXJ0cywgaGFzaD1oYXNoKQogICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIs
IHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHBhdGgpLCAqYXJncykKICAgICBzLm1hbmlmZXN0X2l0ZW1z
ID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0ZW1fdHlwZSwgW3Rlc3RdKSkKICAgICBy
ZXR1cm4gcwpAQCAtMjksNyArMzEsNiBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhh
c2gsIGNscywgKmFyZ3MpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJuZXNzIjogbWFuaWZl
c3RfaXRlbS5UZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBtYW5p
ZmVzdF9pdGVtLlJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rfbm9kZSI6IG1hbmlm
ZXN0X2l0ZW0uUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAgIm1hbnVhbCI6IG1hbmlmZXN0
X2l0ZW0uTWFudWFsVGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjogbWFuaWZlc3RfaXRl
bS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAgICAgICAgICAiY29uZm9ybWFuY2VjaGVja2Vy
IjogbWFuaWZlc3RfaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LApAQCAtNjcsMTEgKzY4LDEy
IEBAIGRlZiB1cGRhdGUodGVzdHMsICpsb2dzLCAqKmt3YXJncyk6CiAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlX2Zyb21fbG9nKGxvZykKIAogICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gKFsiZGVidWci
LCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQorICAgICAgICAgICAg
ICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJdfSkK
IAogICAgIGV4cGVjdGVkX2RhdGEgPSB7fQogICAgIG1ldGFkYXRhLmxvYWRfZXhwZWN0ZWQgPSBs
YW1iZGEgXywgX18sIHRlc3RfcGF0aCwgKmFyZ3M6IGV4cGVjdGVkX2RhdGEuZ2V0KHRlc3RfcGF0
aCkKICAgICBmb3IgdGVzdF9wYXRoLCB0ZXN0X2lkcywgdGVzdF90eXBlLCBtYW5pZmVzdF9zdHIg
aW4gdGVzdHM6CisgICAgICAgIHRlc3RfcGF0aCA9IHV0aWxzLnRvX29zX3BhdGgodGVzdF9wYXRo
KQogICAgICAgICBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0gPSBtYW5pZmVzdHVwZGF0ZS5jb21w
aWxlKEJ5dGVzSU8obWFuaWZlc3Rfc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLApAQCAtMTA5LDcg
KzExMSw3IEBAIGRlZiBjcmVhdGVfbG9nKGVudHJpZXMpOgogICAgICAgICAgICAgZ2V0YXR0cihs
b2dnZXIsIGFjdGlvbikoKiprd2FyZ3MpCiAgICAgICAgIGxvZ2dlci5yZW1vdmVfaGFuZGxlciho
YW5kbGVyKQogICAgIGVsc2U6Ci0gICAgICAgIGpzb24uZHVtcChlbnRyaWVzLCBkYXRhKQorICAg
ICAgICBkYXRhLndyaXRlKGpzb24uZHVtcHMoZW50cmllcykuZW5jb2RlKCkpCiAgICAgZGF0YS5z
ZWVrKDApCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtMTMzLDExICsxMzUsOSBAQCBkZWYgY3JlYXRl
X3Rlc3RfbWFuaWZlc3QodGVzdHMsIHVybF9iYXNlPSIvIik6CiAgICAgcmV0dXJuIG0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC0x
NTUsMTEgKzE1NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgYXNzZXJ0IHVwZGF0ZWRb
MF1bMV0uaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTc4LDExICsxNzYsOSBAQCBkZWYgdGVzdF91cGRhdGVfMSgp
OgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0u
Z2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9rbm93
bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAg
ICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFBBU1Mi
IiIpXQogCkBAIC0yMTksMTEgKzIxNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1p
dHRlbnRfMSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBB
U1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgdGVzdHMg
PSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAg
ICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0
ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTI0NCwxMSArMjM4LDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgICAgICJleHBlY3RlZCIs
IGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93bl9pbnRl
cm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAg
ICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0i
IiIpXQogCkBAIC0yODcsMTEgKzI3OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93
bl9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykg
PT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlvdXNfaW50
ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxd
IiIiKV0KIApAQCAtMzM1LDggKzMyNSw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlv
dXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8p
ID09IFsiUEFTUyIsICJFUlJPUiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50
KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBOb25lKV0KIApAQCAtMzc0LDggKzM2Miw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9uZXdf
dGVzdF93aXRoX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1
bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2V4cGVjdGVkX3RpZV9yZXNvbHV0
aW9uKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCBOb25lKV0KIApAQCAtNDAzLDExICszODksOSBAQCBkZWYgdGVzdF91cGRhdGVf
ZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9y
dW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KIApAQCAt
NDQ2LDEwICs0MzAsOCBAQCBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZCgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFu
ZHJvaWQiOiBbUEFTUywgRkFJTF0KQEAgLTQ4OSwxMSArNDcxLDkgQEAgZGVmIHRlc3RfdXBkYXRl
X2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dp
dGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC01MTQsMTAgKzQ5NCw4IEBA
IGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9z
dGF0dXMoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkVSUk9S
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIi
IiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFT
UywgRkFJTF0iIiIpXQpAQCAtNTQ5LDEwICs1MjcsOCBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJt
aXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18x
KSA9PSBbIlBBU1MiLCAiVElNRU9VVCIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRl
cm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0K
ICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0iIiIpXQpA
QCAtNTg0LDExICs1NjAsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRlcm1pdHRl
bnRfd2l0aF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09
IFsiUEFTUyIsICJUSU1FT1VUIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGwoKToKICAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0g
ICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0K
ICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBU
SU1FT1VUXQpAQCAtNjI0LDExICs1OTgsOSBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50
X2Z1bGwoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVQsIFBBU1Nd
CkBAIC02NzUsMTEgKzY0Nyw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbF9y
ZW1vdmUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfZnVsbF91cGRhdGUoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAg
aWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNzE1LDExICs2ODUsOSBAQCBkZWYg
dGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZv
KSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMi
LAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5
MyIpCiBkZWYgdGVzdF9mdWxsX29ycGhhbigpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEZBSUwKICAgICBbc3Vic3ViIHRlc3RdCkBAIC03NDgsMTEgKzcxNiw5IEBAIGRlZiB0ZXN0
X2Z1bGxfb3JwaGFuKCk6CiAgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVz
dF9pZCkuY2hpbGRyZW4pID09IDEKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRp
dGlvbnMoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0g
Im1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtODA5LDExICs3NzUsOSBAQCBkZWYgdGVzdF91cGRh
dGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICAgICAgImV4cGVjdGVk
IiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3NraXBfMCgpOgogICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwK
LSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRt
XQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04MjksMTAgKzc5Myw4
IEBAIGRlZiB0ZXN0X3NraXBfMCgpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X25ld19zdWJ0
ZXN0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04NTQsMTAgKzgxNiw4IEBAIGRlZiB0ZXN0X25l
d19zdWJ0ZXN0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5j
aGlsZHJlblsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1d
CiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTg5MywxMCArODUzLDgg
QEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICAgICAgImV4cGVjdGVkIiwgeyJk
ZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRp
cGxlXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTkzNywxMCArODk1LDggQEAgZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMykgPT0g
IkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTk3Nywx
MCArOTMzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKICAgICAgICAgImV4cGVj
dGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzMoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3Rl
ZDoKICAgICAgIGlmIGRlYnVnOiBGQUlMCkBAIC0xMDE5LDEwICs5NzMsOCBAQCBkZWYgdGVzdF91
cGRhdGVfbXVsdGlwbGVfMygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAi
VElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAot
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBkZWJ1
ZzogVElNRU9VVApAQCAtMTA2MSw4ICsxMDEzLDYgQEAgZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9l
eGlzdGluZygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiTk9UUlVOIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9uZXdfdGVzdCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTEwODUsMTAgKzEwMzUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9f
MSkgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExMDcsMTAgKzEwNTUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfZHVwbGljYXRlKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZv
XzEpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTI5LDEw
ICsxMDc1LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0ZW50KCk6CiAgICAg
ICAgICJkaXNhYmxlZCIsIHJ1bl9pbmZvXzEpID09ICJTb21lIG1lc3NhZ2UiCiAKIAotQHB5dGVz
dC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICBy
ZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3N0
YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExNjUsMTAgKzExMDksOCBAQCBk
ZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmlsaXR5KCk6CiAgICAg
ICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6CiAgICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTIxNywxMCArMTE1OSw4IEBAIGRlZiB0
ZXN0X3VwZGF0ZV9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJF
UlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiByZWxlYXNlX29y
X2JldGE6IEVSUk9SCkBAIC0xMjYwLDExICsxMjAwLDI5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9mdWxs
X3Vua25vd24oKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkVSUk9SIgog
CiAKK2RlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd25fbWlzc2luZygpOgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KKyAgW3N1YnRlc3RfZGVsZXRlZF0KKyAgICBleHBlY3RlZDoKKyAgICAgIGlmIHJlbGVh
c2Vfb3JfYmV0YTogRVJST1IKKyAgICAgIEZBSUwKKyIiIildCisKKyAgICBsb2dfMCA9IHN1aXRl
X2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0sCisgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAicmVsZWFzZV9vcl9i
ZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGZ1bGxf
dXBkYXRlPVRydWUpCisgICAgYXNzZXJ0IGxlbih1cGRhdGVkKSA9PSAwCisKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1
bHQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAg
ICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBGQUlMCkBAIC0xMjk0LDEwICsxMjUy
LDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5o
dG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VUCkBAIC0xMzI2LDEw
ICsxMjgyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gIm1hYyI6IFRJ
TUVPVVQKQEAgLTEzNTgsMTAgKzEzMTIsOCBAQCBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6
CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xMzgyLDEwICsx
MzM0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6CiAgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czogMgogIiIiKV0KQEAg
LTE0MDYsMTAgKzEzNTYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEoKToK
ICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1h
c3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0
ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3Nl
cnRzOiAyCiAiIiIpXQpAQCAtMTQyNiwxMCArMTM3NCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3Nl
cnRpb25fY291bnRfMigpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRp
b25fY291bnRfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgbWF4
LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDYwLDEwICsxNDA2LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6CiAgICAgYXNzZXJ0IG5ld19t
YW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIiCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBk
YXRlX2Fzc2VydGlvbl9jb3VudF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dIiIiKV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAgICgiYXNzZXJ0aW9uX2Nv
dW50IiwgeyJ0ZXN0IjogdGVzdF9pZCwKQEAgLTE0OTEsMTEgKzE0MzUsOSBAQCBkZWYgdGVzdF91
cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90
ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNh
bl8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lk
XSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIs
IFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibHNhbl9s
ZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSkKQEAgLTE1MDgsMTEgKzE0NTAs
OSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
IGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2co
WygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNTI4LDEzICsxNDY4LDEx
IEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzIoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9fX2Rpcl9fIl0sIE5v
bmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9f
X2Rpcl9fIl0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpLAotICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICAgICAgICAg
ICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXSwK
QEAgLTE1NTAsMTEgKzE0ODgsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKICAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJf
aWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9f
IiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2Fu
X2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSldLApAQCAtMTU3MiwxMSArMTUw
OCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzMoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0
XzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIi
Ilt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtMTU5
NCwxMSArMTUyOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgogICAgIGFzc2Vy
dCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25l
LCBiIiIpXQogCiAgICAgbG9nID0geyJydW5faW5mbyI6IGRlZmF1bHRfcnVuX2luZm8uY29weSgp
LAogICAgICAgICAgICAicmVzdWx0cyI6IFtdLApAQCAtMTYxMSwxMSArMTU0Myw5IEBAIGRlZiB0
ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgogICAgIGFzc2VydCB1cGRhdGVkWzBdWzFdLmdldCgi
bHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzAoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIild
CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5v
bmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJz
Y29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicHJvY2VzcyI6ICJkZWZhdWx0IiwKQEAgLTE2MzAsMTEgKzE1NjAsOSBAQCBkZWYgdGVz
dF91cGRhdGVfbGVha190b3RhbF8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxl
YWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0OjUxMjAwJ10KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0
YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190
b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjQ2LDExICsxNTc0LDkg
QEAgZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgogICAgIGFzc2VydCBub3QgdXBkYXRl
ZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgv
dG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAg
KCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTEw
IiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3Bl
IjogInBhdGgvdG8vIiwKQEAgLTE2NjMsMTEgKzE1ODksOSBAQCBsZWFrLXRvdGFsOiAxMTAiIiIp
XQogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzMoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9u
ZSwgYiIiIgogbGVhay10b3RhbDogMTAwIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
Im1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2ODMsMTEgKzE2MDcs
OSBAQCBsZWFrLXRvdGFsOiAxMDAiIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJs
ZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxf
NCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0s
IE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAgICAgbG9nXzAgPSBz
dWl0ZV9sb2coWwpAQCAtMTcxNiw4ICsxNjM4LDYgQEAgY2xhc3MgVXBkYXRlUnVubmVyKFN0ZXBS
dW5uZXIpOgogICAgIHN0ZXBzID0gW1Rlc3RTdGVwXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ1cGRhdGUu
c3RhdGUgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcGlja2xlKCk6CiAg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJleHBlY3RlZF90ZXN0
IikKICAgICBhcmdzID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0
dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKaW5kZXggOWJiM2Ux
ZmQzNGUzN2M0NDMwZjc1MmI4N2U0YmI0ZTNiZmE3Zjk1OS4uZGJjY2Q5MGUzMzk1ODBhOGQ1ZmEx
MDA1YmUwNDM0MDk1YzQ2ODI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
d3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CkBAIC0x
LDM1ICsxLDM0IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBC
eXRlc0lPCiBmcm9tIG1vY2sgaW1wb3J0IE1vY2sKIAogZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFu
aWZlc3QgYXMgd3B0bWFuaWZlc3QKLWZyb20gbWFuaWZlc3QuaXRlbSBpbXBvcnQgVGVzdGhhcm5l
c3NUZXN0Citmcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNzVGVzdCwgUmVmVGVz
dAorZnJvbSBtYW5pZmVzdC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aAogZnJvbSAuLiBpbXBvcnQg
bWFuaWZlc3RleHBlY3RlZCwgd3B0dGVzdAogCi1kaXJfaW5pXzAgPSAiIiJcCitkaXJfaW5pXzAg
PSBiIiIiXAogcHJlZnM6IFthOmJdCiAiIiIKIAotZGlyX2luaV8xID0gIiIiXAorZGlyX2luaV8x
ID0gYiIiIlwKIHByZWZzOiBbQFJlc2V0LCBiOmNdCiBtYXgtYXNzZXJ0czogMgogbWluLWFzc2Vy
dHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKLWRpcl9pbmlfMiA9ICIiIlwKK2Rpcl9pbmlfMiA9
IGIiIiJcCiBsc2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0XzAgPSAiIiJcCit0
ZXN0XzAgPSBiIiIiXAogWzAuaHRtbF0KICAgcHJlZnM6IFtjOmRdCiAgIG1heC1hc3NlcnRzOiAz
CiAgIHRhZ3M6IFthLCBAUmVzZXRdCiAiIiIKIAotdGVzdF8xID0gIiIiXAordGVzdF8xID0gYiIi
IlwKIFsxLmh0bWxdCiAgIHByZWZzOgogICAgIGlmIG9zID09ICd3aW4nOiBbYTpiLCBjOmRdCkBA
IC0zNywxMiArMzYsMTIgQEAgdGVzdF8xID0gIiIiXAogICAgIGlmIG9zID09ICd3aW4nOiBGQUlM
CiAiIiIKIAotdGVzdF8yID0gIiIiXAordGVzdF8yID0gYiIiIlwKIFsyLmh0bWxdCiAgIGxzYW4t
bWF4LXN0YWNrLWRlcHRoOiA0MgogIiIiCiAKLXRlc3RfMyA9ICIiIlwKK3Rlc3RfMyA9IGIiIiJc
CiBbMy5odG1sXQogICBbc3VidGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXQpAQCAt
NTQsMzIgKzUzLDMyIEBAIHRlc3RfMyA9ICIiIlwKICAgICBleHBlY3RlZDogRkFJTAogIiIiCiAK
LXRlc3RfNCA9ICIiIlwKK3Rlc3RfNCA9IGIiIiJcCiBbNC5odG1sXQogICBleHBlY3RlZDogRkFJ
TAogIiIiCiAKLXRlc3RfNSA9ICIiIlwKK3Rlc3RfNSA9IGIiIiJcCiBbNS5odG1sXQogIiIiCiAK
LXRlc3RfNiA9ICIiIlwKK3Rlc3RfNiA9IGIiIiJcCiBbNi5odG1sXQogICBleHBlY3RlZDogW09L
LCBGQUlMXQogIiIiCiAKLXRlc3RfNyA9ICIiIlwKK3Rlc3RfNyA9IGIiIiJcCiBbNy5odG1sXQog
ICBibGlua19leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOiB5ZXAKICIiIgogCi10ZXN0X2Z1enp5
ID0gIiIiXAordGVzdF9mdXp6eSA9IGIiIiJcCiBbZnV6enkuaHRtbF0KICAgZnV6enk6IGZ1enp5
LXJlZi5odG1sOjE7MjAwCiAiIiIKIAogCi10ZXN0aGFybmVzc190ZXN0ID0gIiIiPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgordGVzdGhhcm5lc3NfdGVz
dCA9IGIiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
IiIiCiAKIApAQCAtMTE3LDggKzExNiw2IEBAIGRlZiBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfbmFt
ZSwKICAgICByZXR1cm4gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3RzLCB0ZXN0LCBpbmhlcml0
X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfaW5o
ZXJpdCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApLCAoInRlc3QiLCAiYyIsIDEwKV0KICAgICBpbmhlcml0X21ldGFkYXRhID0gWwpAQCAtMTM2
LDggKzEzMyw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKICAgICBhc3NlcnQgdGVz
dF9vYmoudGFncyA9PSB7ImEiLCAiZGlyOmEifQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0
IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfY29uZGl0aW9uYWwoKToKICAgICBpdGVtcyA9
IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAx
MCldCiAKQEAgLTE0Nyw4ICsxNDIsNiBAQCBkZWYgdGVzdF9jb25kaXRpb25hbCgpOgogICAgIGFz
c2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRl
cy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApXQogCkBAIC0xNzIsOCArMTY1LDYgQEAgZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5sc2FuX21heF9zdGFja19kZXB0aCA9PSA0Mgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
c3VidGVzdHMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF8zLCAiYS8z
Lmh0bWwiLCAzLCAoInRlc3QiLCAiYSIsIDQpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0ZWQoInN1YnRlc3QxIikgPT0gIlBBU1MiCkBAIC0xODQsNTcgKzE3NSw1MCBA
QCBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1p
dHRlbnQoInN1YnRlc3QzIikgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25m
dXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWwoKToKICAgICB0ZXN0X29iaiA9
IG1ha2VfdGVzdF9vYmplY3QodGVzdF80LCAiYS80Lmh0bWwiLCA0LCAoInRlc3QiLCAiYSIsIDUp
LCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiRkFJTCIK
ICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0gW10KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X25vX2V4cGVj
dGVkKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNSwgImEvNS5odG1s
IiwgNSwgKCJ0ZXN0IiwgImEiLCA2KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRl
bnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMi
KQogZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rl
c3Rfb2JqZWN0KHRlc3RfNiwgImEvNi5odG1sIiwgNiwgKCJ0ZXN0IiwgImEiLCA3KSwgTm9uZSwg
RmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2Vy
dCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbIkZBSUwiXQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfZXhwZWN0X2FueV9z
dWJ0ZXN0X3N0YXR1cygpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0Xzcs
ICJhLzcuaHRtbCIsIDcsICgidGVzdCIsICJhIiwgOCksIE5vbmUsIEZhbHNlKQogICAgIGFzc2Vy
dCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0
X2FueV9zdWJ0ZXN0X3N0YXR1cygpIGlzIFRydWUKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4
dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2Z1enp5KCk6Ci0gICAgbWFu
aWZlc3RfZGF0YSA9IHsKLSAgICAgICAgIml0ZW1zIjogeyJyZWZ0ZXN0IjogeyJhL2Z1enp5Lmh0
bWwiOiBbWyJhL2Z1enp5Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImZ1enp5IjogW1tbIi9hL2Z1
enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwg
MTVdXV1dfV1dfX0sCi0gICAgICAgICJwYXRocyI6IHsiYS9mdXp6eS5odG1sIjogWyIwIio0MCwg
InJlZnRlc3QiXX0sCi0gICAgICAgICJ2ZXJzaW9uIjogNywKLSAgICAgICAgInVybF9iYXNlIjog
Ii8ifQotICAgIG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QuZnJvbV9qc29uKCIuIiwg
bWFuaWZlc3RfZGF0YSkKKyAgICBpdGVtID0gUmVmVGVzdCgiLiIsICJhL2Z1enp5Lmh0bWwiLCAi
LyIsICJhL2Z1enp5Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9W1siL2Ev
ZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCisgICAgICAgICAgICAgICAgICAgZnV6enk9W1tbIi9h
L2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwgMTVdXV1dKQorICAgIHMgPSBNb2NrKHJlbF9wYXRo
PSJhL2Z1enp5Lmh0bWwiLCByZWxfcGF0aF9wYXJ0cz0oImEiLCAiZnV6enkuaHRtbCIpLCBoYXNo
PSIwIio0MCkKKyAgICBzLm1hbmlmZXN0X2l0ZW1zID0gTW9jayhyZXR1cm5fdmFsdWU9KGl0ZW0u
aXRlbV90eXBlLCBbaXRlbV0pKQorCisKKyAgICBtYW5pZmVzdCA9IHdwdG1hbmlmZXN0Lk1hbmlm
ZXN0KCkKKworICAgIGFzc2VydCBtYW5pZmVzdC51cGRhdGUoWyhzLCBUcnVlKV0pIGlzIFRydWUK
KwogICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxlKEJ5
dGVzSU8odGVzdF9mdXp6eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0ZXhwZWN0ZWQuZGF0YV9jbHNf
Z2V0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIpCiAKLSAgICB0ZXN0ID0gbWFu
aWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQorICAgIHRlc3QgPSBuZXh0KG1h
bmlmZXN0Lml0ZXJwYXRoKHRvX29zX3BhdGgoImEvZnV6enkuaHRtbCIpKSkKICAgICB0ZXN0X29i
aiA9IHdwdHRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdCwgdGVzdCwgW10sIHRlc3RfbWV0YWRh
dGEuZ2V0X3Rlc3QodGVzdC5pZCkpCiAKICAgICBhc3NlcnQgdGVzdF9vYmouZnV6enkgPT0geygn
L2EvZnV6enkuaHRtbCcsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PScpOiBbWzIsIDNdLCBbMTAs
IDE1XV19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCAyNjI2MTgzZmM4MGRiYzc1ZDNkMjg1
ZGU3OWE3ZDM4NmY1M2NlNmUzLi43OGNkYTljMmQ2NTVmNDJkNjgxMTNmNzkxMDdlMjRhZTQxN2Fm
ZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcgQEAgZGVmIHJlbW92
ZV9sb2dnaW5nX2FyZ3MoYXJncyk6CiAKICAgICA6cGFyYW0gYXJnczogRGljdGlvbmFyeSBvZiBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogICAgICIiIgotICAgIGZvciBuYW1lIGluIGFyZ3Mua2V5
cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlzKCkpOgogICAgICAgICBpZiBuYW1l
LnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFyZ3MucG9wKG5hbWUpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N0YXRlLnB5CmluZGV4IDY0ZGJmMTE4MDYwNGNkOGRmN2E0NjhlMDM2NDQ3Zjk1YjgwMzcxYjAu
LmY4YTgzNTI1Y2JkNDcwNmJkZmJjOTlhNTE4ZDJiYWMxMjNkMzRlOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0
ZS5weQpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBCYXNlU3RhdGUob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBydgogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gZXhpc3Rpbmcgc3RhdGUg
Zm91bmQiKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCBsb2dnZXIpCisgICAg
ICAgIHJldHVybiBzdXBlcihCYXNlU3RhdGUsIGNscykuX19uZXdfXyhjbHMpCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyKToKICAgICAgICAgIiIiT2JqZWN0IGNvbnRhaW5pbmcgc3Rh
dGUgdmFyaWFibGVzIGNyZWF0ZWQgd2hlbiBydW5uaW5nIFN0ZXBzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5Cmlu
ZGV4IDBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYuLjBhNDFmNzA2ZWJj
Mzc2MDcyOWQ5YmE1NTMwNzZmZTBkN2UwYjQwYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKQEAgLTEwLDM3
ICsxMCw2IEBAIGZyb20gLnRyZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0gb3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQogCi1ic2RfbGljZW5zZSA9ICIiIlczQyAz
LWNsYXVzZSBCU0QgTGljZW5zZQotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIGNvcHly
aWdodCBub3RpY2UsIHRoaXMKLSAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLUlTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi1J
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQotQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIiIgotCiAKIGRlZiBj
b3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1ZGVzPU5vbmUpOgog
ICAgICIiIkNvcHkgdGhlIHdvcmtpbmcgY29weSBvZiBhIFRyZWUgdG8gYSBkZXN0aW5hdGlvbiBk
aXJlY3RvcnkuCkBAIC04NCwxNiArNTMsNiBAQCBkZWYgY29weV93cHRfdHJlZSh0cmVlLCBkZXN0
LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25lKToKICAgICAgICAgZGVzdF9wYXRoID0gb3Mu
cGF0aC5qb2luKGRlc3QsIGRlc3RpbmF0aW9uLCBvcy5wYXRoLnNwbGl0KHNvdXJjZSlbMV0pCiAg
ICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQogCi0gICAgYWRkX2xp
Y2Vuc2UoZGVzdCkKLQotCi1kZWYgYWRkX2xpY2Vuc2UoZGVzdCk6Ci0gICAgIiIiV3JpdGUgdGhl
IGJzZCBsaWNlbnNlIHN0cmluZyB0byBhIExJQ0VOU0UgZmlsZS4KLQotICAgIDpwYXJhbSBkZXN0
OiBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIExJQ0VOU0UgZmlsZS4iIiIKLSAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICJMSUNFTlNFIiksICJ3IikgYXMgZjoKLSAgICAg
ICAgZi53cml0ZShic2RfbGljZW5zZSkKLQogCiBjbGFzcyBVcGRhdGVDaGVja291dChTdGVwKToK
ICAgICAiIiJQdWxsIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBpbnRvIHRoZSBsb2NhbCBzeW5jIHRy
ZWUuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3RyZWUucHkKaW5kZXggOTAwNmRmNjcxOTMzMmFlNTkyZWUzODYxNDg1ZDgy
YzIxMjQyM2I0OC4uZjM2Mjc3MGZmMTZkMzBlNDQ5ZGU4NTNmNjg3NDY3Mjk3YjBlZDA3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvdHJlZS5weQpAQCAtMyw2ICszLDggQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCiBmcm9t
IC4uIGltcG9ydCB2Y3MKIGZyb20gLi52Y3MgaW1wb3J0IGdpdCwgaGcKIApAQCAtMTYsNyArMTgs
NyBAQCBkZWYgZ2V0X3VuaXF1ZV9uYW1lKGV4aXN0aW5nLCBpbml0aWFsKToKICAgICA6cGFyYW0g
aW5pdGlhbDogTmFtZSwgb3IgbmFtZSBwcmVmaXgsIHRvIHVzZSIiIgogICAgIGlmIGluaXRpYWwg
bm90IGluIGV4aXN0aW5nOgogICAgICAgICByZXR1cm4gaW5pdGlhbAotICAgIGZvciBpIGluIHhy
YW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGV4aXN0aW5n
KSArIDEpOgogICAgICAgICB0ZXN0ID0gIiVzXyVzIiAlIChpbml0aWFsLCBpICsgMSkKICAgICAg
ICAgaWYgdGVzdCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICByZXR1cm4gdGVzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQppbmRleCA5NjMwMmVlMjY3ZTkwNWFhOGE0OGFmMTJiNjU5NzhlMDI1ZWJk
NDkyLi44MGU1MDlkZDM4M2IzOGVmNGEzMzdlZjEzMDc1ZjU4ODI2Y2Y4MTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3VwZGF0ZS5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCitmcm9t
IHNpeCBpbXBvcnQgaXRlcnZhbHVlcworCiBmcm9tIC5tZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFV
cGRhdGVSdW5uZXIKIGZyb20gLnN5bmMgaW1wb3J0IFN5bmNGcm9tVXBzdHJlYW1SdW5uZXIKIGZy
b20gLnRyZWUgaW1wb3J0IEdpdFRyZWUsIEhnVHJlZSwgTm9WQ1NUcmVlCkBAIC0xMDksNyArMTEx
LDcgQEAgY2xhc3MgUmVtb3ZlT2Jzb2xldGUoU3RlcCk6CiAgICAgICAgIHN0YXRlLnRlc3RzX3Bh
dGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KICAgICAgICAgc3RhdGUubWV0YWRh
dGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3BhdGgiXQogCi0gICAgICAgIGZv
ciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAgICAgICBmb3IgdXJsX3BhdGhz
IGluIGl0ZXJ2YWx1ZXMocGF0aHMpOgogICAgICAgICAgICAgdGVzdHNfcGF0aCA9IHVybF9wYXRo
c1sidGVzdHNfcGF0aCJdCiAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoID0gdXJsX3BhdGhzWyJt
ZXRhZGF0YV9wYXRoIl0KICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5h
bWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0aCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKaW5kZXggYWIwNmM0
MWFmOThmNWMyYzg4Y2I4OWVlNThiYjdhYTIzNGU5MDI0My4uZmFhZjg2ZmVkNmE2MzhkZGI1MTg0
NDY3YThlMDcwODIzN2E0NjllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMjAsMTAgKzIwLDEyIEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5CiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4cGVjdGVkdHJlZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2lu
c3RydW1lbnRzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvcHJvZHVjdHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3Rkcml2ZXItZXh0cmEuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
ZWJkcml2ZXJfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKaW5k
ZXggMTYyZmZhZTNmYzkzYWVlYjI5YTI1MzVlODI5YWY0NWI5ZTE1YzFmMy4uMThiZTY4MDYwNzRk
YTg2ODVjZDM5Mjg2MTk0NTVlZDI3NWJmZThlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dl
YmRyaXZlcl9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkK
QEAgLTgsNiArOCw4IEBAIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IG1venByb2Nlc3MKIAor
ZnJvbSAucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKKwogCiBfX2FsbF9fID0gWyJTZWxlbml1bVNl
cnZlciIsICJDaHJvbWVEcml2ZXJTZXJ2ZXIiLCAiQ1dUQ2hyb21lRHJpdmVyU2VydmVyIiwKICAg
ICAgICAgICAgIkVkZ2VDaHJvbWl1bURyaXZlclNlcnZlciIsICJPcGVyYURyaXZlclNlcnZlciIs
ICJHZWNrb0RyaXZlclNlcnZlciIsCkBAIC01NSw3ICs1Nyw3IEBAIGNsYXNzIFdlYkRyaXZlclNl
cnZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcm9jID0gbW96cHJvY2Vzcy5Qcm9jZXNzSGFu
ZGxlcigKICAgICAgICAgICAgIHNlbGYuX2NtZCwKICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRM
aW5lPXNlbGYub25fb3V0cHV0LAotICAgICAgICAgICAgZW52PXNlbGYuZW52LAorICAgICAgICAg
ICAgZW52PWNhc3RfZW52KHNlbGYuZW52KSwKICAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNl
KQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBXZWJEcml2ZXI6ICVzIiAl
ICcgJy5qb2luKHNlbGYuX2NtZCkpCkBAIC04MiwxNCArODQsMTMgQEAgY2xhc3MgV2ViRHJpdmVy
U2VydmVyKG9iamVjdCk6CiAKICAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBXZWJEcml2ZXIiKQotICAgICAgICBpZiBz
ZWxmLmlzX2FsaXZlOgorICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBr
aWxsX3Jlc3VsdCA9IHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgICBpZiBmb3JjZSBhbmQg
a2lsbF9yZXN1bHQgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvYy5raWxs
KDkpCiAgICAgICAgICAgICByZXR1cm4ga2lsbF9yZXN1bHQKLSAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2ZSgpCiAKLSAgICBA
cHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNhdHRy
KHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUKIApAQCAt
MTg0LDcgKzE4NSwxMSBAQCBjbGFzcyBHZWNrb0RyaXZlclNlcnZlcihXZWJEcml2ZXJTZXJ2ZXIp
OgogICAgICAgICAgICAgICAgICBob3N0PSIxMjcuMC4wLjEiLCBwb3J0PU5vbmUsIGFyZ3M9Tm9u
ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUlVTVF9C
QUNLVFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52LCBhcmdzPWFyZ3Mp
CisgICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0
dGVfcG9ydAogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxmKToKQEAgLTIwOSw3ICsyMTQsMTEg
QEAgY2xhc3MgU2Vydm9Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKICAgICAgICAgICAg
ICAgICAgcG9ydD1Ob25lLCBhcmdzPU5vbmUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNv
cHkoKQogICAgICAgICBlbnZbIlJVU1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAgICAgICAgV2ViRHJp
dmVyU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0PWhvc3QsIHBvcnQ9
cG9ydCwgZW52PWVudiwgYXJncz1hcmdzKQorICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBob3N0PWhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncykKICAgICAgICAgc2VsZi5i
aW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCiAKICAgICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgpA
QCAtMjY0LDcgKzI3Myw3IEBAIGRlZiB3YWl0X2Zvcl9zZXJ2aWNlKGFkZHIsIHRpbWVvdXQ9NjAp
OgogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGVbMF0gIT0gZXJy
bm8uRUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJF
RlVTRUQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggOTIzYmRhYTU1ODU3ZTc5M2U4
ZDZlOGM1ODcxNjczNjBhZWQ0YWU5NC4uOTYyMjdiYjQ2OTA1ZTE2OGQ2OTFlMzUwOTQ2ZGJmYmE2
ODA5ODI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MK
IGltcG9ydCBzeXMKQEAgLTE2LDkgKzE2LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogCiAKIGRl
ZiB1cmxfb3JfcGF0aChwYXRoKToKLSAgICBpbXBvcnQgdXJscGFyc2UKKyAgICBmcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAKLSAgICBwYXJzZWQgPSB1cmxwYXJz
ZS51cmxwYXJzZShwYXRoKQorICAgIHBhcnNlZCA9IHVybHBhcnNlKHBhdGgpCiAgICAgaWYgbGVu
KHBhcnNlZC5zY2hlbWUpID4gMjoKICAgICAgICAgcmV0dXJuIHBhdGgKICAgICBlbHNlOgpAQCAt
MzcsNyArMzcsNyBAQCBkZWYgcmVxdWlyZV9hcmcoa3dhcmdzLCBuYW1lLCB2YWx1ZV9mdW5jPU5v
bmUpOgogZGVmIGNyZWF0ZV9wYXJzZXIocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgIGZyb20g
bW96bG9nIGltcG9ydCBjb21tYW5kbGluZQogCi0gICAgaW1wb3J0IHByb2R1Y3RzCisgICAgZnJv
bSAuIGltcG9ydCBwcm9kdWN0cwogCiAgICAgaWYgcHJvZHVjdF9jaG9pY2VzIGlzIE5vbmU6CiAg
ICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnLmxvYWQoKQpAQCAtMTM3LDYgKzEzNywxNCBAQCBz
Y2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgbGlzdGluZyB0ZXN0cyB0byBpbmNsdWRlIikK
ICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2tpcC10aW1lb3V0Iiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byB0aW1lIG91dCIpCisgICAg
dGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtaW1wbGVtZW50YXRpb24t
c3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJh
cHBlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
bm90LWltcGxlbWVudGluZyIsICJiYWNrbG9nIiwgImltcGxlbWVudGluZyJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3RzIHRoYXQgaGF2ZSB0
aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24gc3RhdHVzIikKKyAgICAjIFRPRE86IFJlbW92ZSB0aGlz
IHdoZW4gUVVJQyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgdGVzdF9zZWxlY3Rpb25fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1xdWljIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RW5hYmxlIHRlc3RzIHRoYXQgcmVxdWlyZSBRVUlDIHNlcnZlciAoZGVmYXVsdDogZmFsc2UpIikK
KwogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10YWciLCBhY3Rpb249
ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRlIGluIHRoZSBydW4u
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGFiZWxzIHN0
YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVjdG9yaWVzLiIpCkBA
IC0yMTAsMTMgKzIxOCwxNyBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxlIikKICAgICBjb25m
aWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxsb3cgdGhlIHdwdHJ1bm5lciB0byBpbnN0
YWxsIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9Ikluc3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91ciBzeXN0ZW0iKQor
ICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8taW5zdGFsbC1mb250cyIsIGRlc3Q9
Imluc3RhbGxfZm9udHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBpbnN0YWxsIGFkZGl0aW9uYWwgc3lzdGVtIGZvbnRz
IG9uIHlvdXIgc3lzdGVtIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWZvbnQt
ZGlyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImZvbnRfZGlyIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbG9jYWwgZm9udCBpbnN0
YWxsYXRpb24gZGlyZWN0b3J5IiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZpZ19ncm91cC5hZGRf
YXJndW1lbnQoIi0taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZSIsIGRl
ZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWhlYWRsZXNz
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImhlYWRsZXNzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJ1biBicm93c2VyIGluIGhlYWRsZXNzIG1vZGUi
KQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5zdHJ1bWVudC10by1maWxlIiwg
YWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRo
IHRvIHdyaXRlIGluc3RydW1lbnRhdGlvbiBsb2dzIHRvIikKIAogICAgIGJ1aWxkX3R5cGUgPSBw
YXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgYnVpbGRfdHlwZS5hZGRf
YXJndW1lbnQoIi0tZGVidWctYnVpbGQiLCBkZXN0PSJkZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCkBAIC0yNTUsMTIgKzI2NywyMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAg
Z2Vja29fZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZWNrby1zcGVjaWZpYyIp
CiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXByZWZzLXJvb3QiLCBkZXN0PSJwcmVm
c19yb290IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGZvbGRlciBjb250YWluaW5nIGJyb3dzZXIg
cHJlZnMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVsb2FkLWJyb3dzZXIi
LCBkZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IlByZWxvYWQgYSBnZWNrbyBp
bnN0YW5jZSBmb3IgZmFzdGVyIHJlc3RhcnRzIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tbm8tcHJlbG9hZC1icm93c2VyIiwgZGVzdD0icHJlbG9hZF9icm93c2VyIiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0iRG9uJ3QgcHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBmYXN0ZXIgcmVzdGFy
dHMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWUxMHMiLCBkZXN0
PSJnZWNrb19lMTBzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGhvdXQgZWxlY3Ryb2x5
c2lzIHByZWZlcmVuY2VzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5hYmxl
LXdlYnJlbmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJs
ZSB0aGUgV2ViUmVuZGVyIGNvbXBvc2l0b3IgaW4gR2Vja28gKGRlZmF1bHRzIHRvIGRpc2FibGVk
KS4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFibGUtd2VicmVuZGVy
IiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBXZWJSZW5kZXIgY29tcG9z
aXRvciBpbiBHZWNrby4iKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUt
Zmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNzaW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgZmlz
c2lvbiBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAgZ2Vja29fZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5hYmxlX2Zpc3Npb24i
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRGlzYWJsZSBmaXNzaW9uIGluIEdlY2tvLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLXN0YWNrZml4LWRpciIsIGRlc3Q9InN0YWNrZml4X2RpciIsIGFjdGlvbj0ic3RvcmUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBj
b250YWluaW5nIGFzc2VydGlvbiBzdGFjayBmaXhpbmcgc2NyaXB0cyIpCiAgICAgZ2Vja29fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLXNldHByZWYiLCBkZXN0PSJleHRyYV9wcmVmcyIsIGFjdGlvbj0n
YXBwZW5kJywKQEAgLTUzNCw5ICs1NTQsNiBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAg
ICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJdID0gcGF0aAogCiAgICAgaWYga3dhcmdzWydl
eHRyYV9wcmVmcyddOgotICAgICAgICAjIElmIGEgc2luZ2xlIHByZWYgaXMgcGFzc2VkIGluIGFz
IGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAotICAgICAgICBpZiB0eXBlKGt3YXJnc1snZXh0cmFf
cHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICBrd2FyZ3NbJ2V4dHJhX3By
ZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcyddXQogICAgICAgICBtaXNzaW5nID0gYW55KCc9
JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBpbiBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10pCiAg
ICAgICAgIGlmIG1pc3Npbmc6CiAgICAgICAgICAgICBwcmludCgiUHJlZmVyZW5jZXMgdmlhIC0t
c2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5cy5zdGRlcnIpCkBA
IC01NTMsNiArNTcwLDEwIEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgaWYga3dhcmdz
WyJlbmFibGVfd2VicmVuZGVyIl0gaXMgTm9uZToKICAgICAgICAga3dhcmdzWyJlbmFibGVfd2Vi
cmVuZGVyIl0gPSBGYWxzZQogCisgICAgaWYga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXSBpcyBO
b25lOgorICAgICAgICAjIERlZmF1bHQgdG8gcHJlbG9hZGluZyBhIGdlY2tvIGluc3RhbmNlIGlm
IHdlJ3JlIG9ubHkgcnVubmluZyBhIHNpbmdsZSBwcm9jZXNzCisgICAgICAgIGt3YXJnc1sicHJl
bG9hZF9icm93c2VyIl0gPSBrd2FyZ3NbInByb2Nlc3NlcyJdID09IDEKKwogICAgIHJldHVybiBr
d2FyZ3MKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRsb2dnaW5nLnB5CmluZGV4IDY5Y2VlNzQ0ODc5ZWI2NzgwY2I5OWVjOTMxMjM5
MjJlMTY2ZDllMTYuLjQ0NGQxZDk2MmQyNTg3MzEwOTk3N2I5MzdkOTZjODZjYjI5M2NkOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRsb2dnaW5nLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBzZXR1cChhcmdzLCBkZWZhdWx0cywg
Zm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0ZXJfZGVmYXVsdHMpCiAgICAg
c2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKLSAgICBmb3IgbmFtZSBpbiBhcmdzLmtleXMoKToKKyAg
ICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3
aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CmluZGV4IDQ1ZTIxNDdmYzRjYTUwOWE5ZGUyOGZj
ZGNiYjcwN2Q4MjM0NTk3MTEuLmM1MzlkNDM2N2U5NGE1ZTUyNWM1ZDhkOGU5ZWRjMzExNmU4YWZm
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CkBAIC0xLDQg
KzEsNSBAQAogaW1wb3J0IGFiYworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMs
IGl0ZXJ2YWx1ZXMKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yCiBmcm9tIC4ucGFy
c2VyIGltcG9ydCBwYXJzZQpAQCAtMTg2LDIxICsxODcsMjEgQEAgY2xhc3MgTWFuaWZlc3RJdGVt
KG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9CiAgICAg
ICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9yIG5hbWUs
IHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgbmFtZSwg
dmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
bm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZhbHVlCiAgICAgICAg
IHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0g
aW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVy
aXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRl
ZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0
ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcnZhbHVlcyhzZWxmKToKLSAg
ICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWll
bGQgaXRlbQogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBjaGlsZCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKaW5kZXggYWFjZDc4NTcwNzJm
NDIwYTIwOWFlZWZmNTU5ZWMyYWUyOTQxNzBiYS4uM2IxMWU4MzAxMmFiNTBmZTBlYTI0MGFlMDU2
ZDAyYzg5NjhiNmE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5k
cy9jb25kaXRpb25hbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcGVyYXRvcgorZnJvbSBz
aXggaW1wb3J0IGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCB0ZXh0X3R5cGUKIAog
ZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2Rl
LCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2Rl
LCBWYXJpYWJsZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC00Miw5ICs0Myw3
IEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYu
Y29uZGl0aW9uX2Z1bmMocnVuX2luZm8pCiAKICAgICBkZWYgc2V0X3ZhbHVlKHNlbGYsIHZhbHVl
KToKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChzdHIsIHVuaWNvZGUpOgotICAgICAg
ICAgICAgdmFsdWUgPSB1bmljb2RlKHZhbHVlKQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUK
KyAgICAgICAgc2VsZi52YWx1ZSA9IGVuc3VyZV90ZXh0KHZhbHVlKQogCiAgICAgZGVmIHZhbHVl
X2FzKHNlbGYsIHR5cGVfZnVuYyk6CiAgICAgICAgICIiIkdldCB2YWx1ZSBhbmQgY29udmVydCB0
byBhIGdpdmVuIHR5cGUuCkBAIC0zMDEsOSArMzAwLDkgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9i
amVjdCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAg
dmFsdWVfbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgot
ICAgICAgICAgICAgICAgIHZhbHVlX25vZGUuYXBwZW5kKFZhbHVlTm9kZSh1bmljb2RlKGl0ZW0p
KSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodGV4dF90eXBl
KGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5v
ZGUodW5pY29kZSh2YWx1ZSkpCisgICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFsdWVOb2RlKHRl
eHRfdHlwZSh2YWx1ZSkpCiAgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgQ29uZGl0aW9uYWxOb2RlKToKICAg
ICAgICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxOb2RlKCkKQEAgLTM2
OSwxOSArMzY4LDIzIEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgogICAgIGRlZiBfZmxh
dHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3Igbm9kZSBpbiBbc2VsZiwg
c2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2Rl
Ll9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoKICAgICAgICAgICAg
ICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBp
dGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVy
aXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAg
ICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVya2V5cygpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWllbGQgaXRl
bQogCisgICAgZGVmIGl0ZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW0gaW4g
c2VsZi5fZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGl0ZW0sIHNlbGYuX2RhdGFbaXRlbV0KKwog
ICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIGtleSBu
b3QgaW4gc2VsZi5fZGF0YToKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQppbmRleCA3N2IxN2E1MDMyNWM3NzA2NzM5MWFiNjYzOWQwZTAyOWUzMzk1MDQ3Li4wZjgy
ZDcwMDZiNjllZDBlNDg1MjkwMzg3YjY1NzY4Yjg1OWE4NzAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
bm9kZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB4cmFuZ2UKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBjbGFzcyBOb2RlVmlzaXRvcihvYmplY3QpOgog
ICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRGF0YU5v
ZGUoTm9kZSk6CiAgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLmNoaWxkcmVuKQogICAgICAg
ICAgICAgd2hpbGUgaW5kZXggPiAwIGFuZCBpc2luc3RhbmNlKHNlbGYuY2hpbGRyZW5baW5kZXgg
LSAxXSwgRGF0YU5vZGUpOgogICAgICAgICAgICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgICAg
IGZvciBpIGluIHhyYW5nZShpbmRleCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpbmRl
eCk6CiAgICAgICAgICAgICAgICAgaWYgb3RoZXIuZGF0YSA9PSBzZWxmLmNoaWxkcmVuW2ldLmRh
dGE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkR1cGxpY2F0ZSBrZXkg
JXMiICUgc2VsZi5jaGlsZHJlbltpXS5kYXRhKQogICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5p
bnNlcnQoaW5kZXgsIG90aGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKaW5kZXggNjJj
NWY3ZDNhNDY3OWNhOWFlYTk2MWFmZWNjNjNmMjVlN2E1NDk2Mi4uOTExZWZhYzgwZjI3ZWU5MmRm
N2ZiZWE1NzdjNDE0NjkxODk5Nzc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBA
IC0xNCw4ICsxNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFs
cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0
ZXh0X3R5cGUsIEJ5dGVzSU8sIHVuaWNocgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAK
IGZyb20gLm5vZGUgaW1wb3J0IChOb2RlLCBBdG9tTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUs
IEJpbmFyeU9wZXJhdG9yTm9kZSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25hbE5vZGUs
IERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICBzZWxmLnN0YXRlID0gc2Vs
Zi5saW5lX3N0YXJ0X3N0YXRlCiAgICAgICAgIHNlbGYubmV4dF9zdGF0ZSA9IHNlbGYuZGF0YV9s
aW5lX3N0YXRlCiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSAwCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSAiIgogCiAgICAgZGVmIHRva2VuaXplKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgIHNl
bGYucmVzZXQoKQpAQCAtMTM2LDkgKzEzNywxMCBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5hcHBlbmQoc2VsZi5pbmRleCkKICAgICAg
ICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9zdGFydCwgTm9uZSkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9sZXZlbHNbLTFd
OgotICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQotICAgICAgICAgICAg
ICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCisgICAgICAgICAgICBpZiBz
ZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICB3aGls
ZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbmRlbnRfbGV2ZWxzLnBvcCgpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkICh0
b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRl
cnJpYmxlOyBpZiB3ZSB3ZXJlIHBhcnNpbmcgYW4gZXhwcmVzc2lvbgogICAgICAgICAgICAgICAg
ICMgdGhlbiB0aGUgbmV4dF9zdGF0ZSB3aWxsIGJlIGV4cHJfb3JfdmFsdWUgYnV0IHdoZW4gd2Ug
ZGVpbmRlbnQKICAgICAgICAgICAgICAgICAjIGl0IG11c3QgYWx3YXlzIGJlIGEgaGVhZGluZyBv
ciBrZXkgbmV4dCBzbyB3ZSBnbyBiYWNrIHRvIGRhdGFfbGluZV9zdGF0ZQpAQCAtMzAzLDcgKzMw
NSw4IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogCiAgICAgZGVmIHZhbHVlX3N0YXRlKHNl
bGYpOgogICAgICAgICBzZWxmLnNraXBfd2hpdGVzcGFjZSgpCi0gICAgICAgIGlmIHNlbGYuY2hh
cigpIGluICgiJyIsICciJyk6CisgICAgICAgIGMgPSBzZWxmLmNoYXIoKQorICAgICAgICBpZiBj
IGluICgiJyIsICciJyk6CiAgICAgICAgICAgICBxdW90ZV9jaGFyID0gc2VsZi5jaGFyKCkKICAg
ICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMu
c3RyaW5nLCBzZWxmLmNvbnN1bWVfc3RyaW5nKHF1b3RlX2NoYXIpKQpAQCAtMzExLDEwICszMTQs
MTIgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0
ZSA9IHNlbGYuY29tbWVudF9zdGF0ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBzZWxmLnN0YXRlID0gc2VsZi5saW5lX2VuZF9zdGF0ZQotICAgICAgICBlbGlmIHNlbGYuY2hh
cigpID09ICJAIjoKKyAgICAgICAgZWxpZiBjID09ICJAIjoKICAgICAgICAgICAgIHNlbGYuY29u
c3VtZSgpCiAgICAgICAgICAgICBmb3IgXywgdmFsdWUgaW4gc2VsZi52YWx1ZV9pbm5lcl9zdGF0
ZSgpOgogICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuX3R5cGVzLmF0b20sIHZhbHVlCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5saXN0X3N0
YXJ0X3N0YXRlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi52
YWx1ZV9pbm5lcl9zdGF0ZQogCkBAIC00OTQsNyArNDk5LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9i
amVjdCk6CiAKICAgICBkZWYgZGVjb2RlX2VzY2FwZShzZWxmLCBsZW5ndGgpOgogICAgICAgICB2
YWx1ZSA9IDAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbmd0aCk6CisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbmd0aCk6CiAgICAgICAgICAgICBjID0gc2VsZi5jaGFyKCkKICAgICAgICAg
ICAgIHZhbHVlICo9IDE2CiAgICAgICAgICAgICB2YWx1ZSArPSBzZWxmLmVzY2FwZV92YWx1ZShj
KQpAQCAtNTk2LDYgKzYwMSw5IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAg
c2VsZi5leHByZXNzaW9uX3ZhbHVlcygpCiAgICAgICAgICAgICBpZiBzZWxmLnRva2VuWzBdID09
IHRva2VuX3R5cGVzLnN0cmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlKCkKKyAgICAg
ICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5saXN0X3N0YXJ0OgorICAg
ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCisgICAgICAgICAgICAgICAgc2VsZi5saXN0X3Zh
bHVlKCkKICAgICAgICAgICAgIHNlbGYuZW9mX29yX2VuZF9ncm91cCgpCiAgICAgICAgIGVsaWYg
c2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5hdG9tOgogICAgICAgICAgICAgc2VsZi5hdG9t
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKaW5kZXggM2IyOWM5OWVkZTdj
YWM1OGVkZTVkNDgyMzc2OTZlMzBjOWQ4NTZjNy4uZWM4ZDgwZWQ2ZjcxNTFiMjkxM2Y5NzVkZjBm
YzM4N2ExMjdkZTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Nlcmlh
bGl6ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKQEAg
LTEsNyArMSwxMCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCitm
cm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQKKwogZnJvbSAubm9kZSBpbXBvcnQgTm9kZVZpc2l0
b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlCiBmcm9tIC5wYXJz
ZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMgPSB7djoiQCVzIiAlIGsg
Zm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CithdG9tX25hbWVzID0ge3Y6ICJAJXMiICUgayBm
b3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAogbmFtZWRfZXNjYXBlcyA9IHsiXGEiLCAiXGIi
LCAiXGYiLCAiXG4iLCAiXHIiLCAiXHQiLCAiXHYifQogCkBAIC0xMCw3ICsxMyw3IEBAIGRlZiBl
c2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgIHJ2ID0gIiIKICAgICBmb3IgYyBpbiBzdHJp
bmc6CiAgICAgICAgIGlmIGMgaW4gbmFtZWRfZXNjYXBlczoKLSAgICAgICAgICAgIHJ2ICs9IGMu
ZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICBydiArPSBjLmVuY29kZSgidW5p
Y29kZV9lc2NhcGUiKS5kZWNvZGUoKQogICAgICAgICBlbGlmIGMgPT0gIlxcIjoKICAgICAgICAg
ICAgIHJ2ICs9ICJcXFxcIgogICAgICAgICBlbGlmIGMgPCAnXHgyMCc6CkBAIC0xOSwxMCArMjIs
NyBAQCBkZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICAgICAgICAgIHJ2ICs9ICJc
XCIgKyBjCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiArPSBjCi0gICAgaWYgaXNpbnN0
YW5jZShydiwgdW5pY29kZSk6Ci0gICAgICAgIHJldHVybiBydi5lbmNvZGUoInV0ZjgiKQotICAg
IGVsc2U6Ci0gICAgICAgIHJldHVybiBydgorICAgIHJldHVybiBlbnN1cmVfdGV4dChydikKIAog
CiBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgpAQCAtNzQsMTAgKzc0LDcg
QEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJu
IFsiIi5qb2luKHJ2KV0KIAogICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2VsZiwgbm9kZSk6Ci0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUuZGF0YSwgKHN0ciwgdW5pY29kZSkpOgotICAg
ICAgICAgICAgZGF0YSA9IHVuaWNvZGUobm9kZS5kYXRhKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZGF0YSA9IG5vZGUuZGF0YQorICAgICAgICBkYXRhID0gZW5zdXJlX3RleHQobm9kZS5k
YXRhKQogICAgICAgICBpZiAoIiMiIGluIGRhdGEgb3IKICAgICAgICAgICAgIGRhdGEuc3RhcnRz
d2l0aCgiaWYgIikgb3IKICAgICAgICAgICAgIChpc2luc3RhbmNlKG5vZGUucGFyZW50LCBMaXN0
Tm9kZSkgYW5kCkBAIC0xMDMsNyArMTAwLDcgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5v
ZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdmlzaXRfTnVtYmVyTm9k
ZShzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAg
cmV0dXJuIFtlbnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZpc2l0X1ZhcmlhYmxl
Tm9kZShzZWxmLCBub2RlKToKICAgICAgICAgcnYgPSBlc2NhcGUobm9kZS5kYXRhKQpAQCAtMTM3
LDEwICsxMzQsMTAgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAg
ICAgICAgcmV0dXJuIFsiICIuam9pbihjaGlsZHJlbildCiAKICAgICBkZWYgdmlzaXRfVW5hcnlP
cGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5vZGUuZGF0YSld
CisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogICAgIGRlZiB2aXNp
dF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5v
ZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogCiBk
ZWYgc2VyaWFsaXplKHRyZWUsICphcmdzLCAqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CmluZGV4IGZiYzc1ZWM4Mzkw
ZmEzNGFiN2UzY2FhMzkxYzNlNmU3ODM3YTU1NGQuLmFmNGQ5OTYwMzIyYzdlOGRmY2NiMDc2YTJl
NDY2MTI1NDU3ZDE4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CkBAIC0xLDE5ICsxLDE1IEBACi1pbXBvcnQgcHl0ZXN0Ci1p
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLmJhY2tlbmRzIGltcG9ydCBjb25k
aXRpb25hbAogZnJvbSAuLm5vZGUgaW1wb3J0IEJpbmFyeUV4cHJlc3Npb25Ob2RlLCBCaW5hcnlP
cGVyYXRvck5vZGUsIFZhcmlhYmxlTm9kZSwgTnVtYmVyTm9kZQogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3
cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUZXN0Q29uZGl0
aW9uYWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNlbGYsIGlucHV0X3Rl
eHQpOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShpbnB1dF90ZXh0KQogCiAg
ICAgZGVmIHRlc3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0
YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI1LDE5ICsyMSwxOSBAQCBr
ZXk6IHZhbHVlCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCiAgICAg
ICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJl
bigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hpbGRyZW4pLCAxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAgICAgICAgIHNlY3Rpb24gPSBj
aGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLm5hbWUsICJIZWFk
aW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcg
MSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIs
IHsiYSI6IDF9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSksICJ2YWx1ZV8zIikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIpLCAidmFsdWUiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAx
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3Ro
ZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikKIAogICAgIGRlZiB0
ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIi
CiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MiwxMSArNDgsMTEgQEAga2V5OiB2YWx1
ZQogICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVy
Y2hpbGRyZW4oKSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6ICIxIn0pLCAidmFs
dWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXki
LCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMyIp
CiAKICAgICBkZWYgdGVzdF9nZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAg
ICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhWzFdID09ICJiIjogdmFsdWVfMQogICBpZiBhWzFd
ID09IDI6IHZhbHVlXzIKQEAgLTY1LDExICs2MSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5p
ZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYWIi
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtl
eSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVzdF9nZXRfMyhzZWxm
KToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBh
WzFdID09ICJhYiJbMV06IHZhbHVlXzEKICAgaWYgYVsxXSA9PSAyOiB2YWx1ZV8yCkBAIC03OCwx
MSArNzQsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEp
CiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAi
YWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0
KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0pLCAidmFsdWVfMSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZh
bHVlXzIiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIK
KyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6IHZhbHVlXzEKICAgaWYg
YSA9PSAiYiI6IHZhbHVlXzIKQEAgLTkyLDEwICs4OCwxMCBAQCBrZXk6CiAKICAgICAgICAgbWFu
aWZlc3Quc2V0KCJuZXdfa2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJuZXdfa2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVfbmV3IikKIAogICAg
IGRlZiB0ZXN0X3NldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEg
PSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2YWx1
ZV8yCkBAIC0xMDYsMTEgKzEwMiwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0KCJr
ZXkiLCAidmFsdWVfbmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5n
ZXQoImtleSIpLCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZl
c3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKIAog
ICAgIGRlZiB0ZXN0X3NldF8yKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRh
dGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2
YWx1ZV8yCkBAIC0xMjUsMTEgKzEyMSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0
KCJrZXkiLCAidmFsdWVfbmV3IiwgZXhwcikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
YW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwg
InZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBpXzAoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAx
LjU6IHZhbHVlXzEKICAgdmFsdWVfMgpAQCAtMTM4LDggKzEzNCw4IEBAIGtleV8xOiBvdGhlcl92
YWx1ZQogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNf
a2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5p
dGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggODA1ZTQ3YjM3MWY1YTcz
MDc2NWYzZTVkMWFjNWY2Yzk0ZGMzZTk5Ny4uMjNiZWIyYmVmMjA4YTIxMTA3YjEwODYyMGZkNTRm
MWVjNTY1NGQ4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3RfcGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Bh
cnNlci5weQpAQCAtMTgsOSArMTgsOSBAQCBjbGFzcyBUZXN0RXhwcmVzc2lvbih1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkKIAogICAgIGRl
ZiBtYXRjaChzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25h
bWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9kZVsxXSwgYWN0dWFs
X25vZGUuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGV4cGVjdGVkX25vZGVb
Ml0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxfbm9kZS5kYXRhKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9ub2RlWzJdKSwgbGVuKGFjdHVh
bF9ub2RlLmNoaWxkcmVuKSkKICAgICAgICAgZm9yIGV4cGVjdGVkX2NoaWxkLCBhY3R1YWxfY2hp
bGQgaW4gemlwKGV4cGVjdGVkX25vZGVbMl0sIGFjdHVhbF9ub2RlLmNoaWxkcmVuKToKICAgICAg
ICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGlsZCkKIApAQCAtMTA1
LDYgKzEwNSw0NSBAQCBrZXk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTogQHRydWUiKQogCisg
ICAgZGVmIHRlc3RfbGlzdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoCisgICAg
ICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTogW2FdCisgIFtiXSIiIiwKKyAgICAgICAg
ICAgIFsiRGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZhbHVlTm9kZSIsICJr
ZXkiLAorICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9uZSwKKyAgICAgICAg
ICAgICAgICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAg
ICAgIFtbIkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAgICAgICAgICAgICAg
ICAgWyJWYXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWyJO
dW1iZXJOb2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBbWyJW
YWx1ZU5vZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIs
ICJiIiwgW11dXV1dXV1dKQorCisgICAgZGVmIHRlc3RfbGlzdF9oZWFkaW5nKHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTog
W2FdCitbYl0iIiIsCisgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKKyAgICAgICAgICAg
ICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKKyAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFs
Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJlc3Npb25Ob2RlIiwg
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5vZGUiLCAiPT0iLCBb
XV0sCisgICAgICAgICAgICAgICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngiLCBbXV0sCisgICAg
ICAgICAgICAgICAgICAgICAgIFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisgICAgICAgICAgICAg
ICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwKKyAgICAgICAgICAg
ICAgICAgIF1dXV0sCisgICAgICAgICAgICAgIFsiRGF0YU5vZGUiLCAiYiIsIFtdXV1dKQorCiAg
ICAgZGVmIHRlc3RfaWZfMShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhw
YXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGIia2V5OiBpZiBmb28i
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFs
aXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIu
cHkKaW5kZXggN2ZlN2FjODVjYjhhMTRmMDUxMTNjYmZkNDgzYjhkMDQyYTA3Yjk4OS4uYjI0Nzg1
NTgwMWVhYzY1ODlhZWJkNDU1NWM2ZDllODY1M2UxMmU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC02LDggKzYsNiBAQCBp
bXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBwYXJzZXIsIHNlcmlhbGl6ZXIKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgog
ICAgICAgICBzZWxmLnNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyLk1hbmlmZXN0U2VyaWFsaXplcigp
CkBAIC0xOCwyNiArMTYsMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbnB1dF9zdHIsIGV4cGVjdGVkPU5vbmUpOgog
ICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnB1
dF9zdHIKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5lbmNvZGUoInV0ZjgiKQorICAgICAg
ICAgICAgZXhwZWN0ZWQgPSBpbnB1dF9zdHIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGFjdHVh
bCA9IHNlbGYuc2VyaWFsaXplKGlucHV0X3N0cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
YWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVj
dGVkKQogCiAgICAgZGVmIHRlc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtl
eTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAx
XQogICBvdGhlcl9rZXk6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9y
IGI6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
dmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9yIGI6IG90aGVyX3Zh
bHVlCkBAIC00NSw3ICs0Miw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJl
KCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVh
ZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAxOiBvdGhlcl92YWx1ZQpAQCAtNTMs
NyArNTAsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikK
IAogICAgIGRlZiB0ZXN0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZh
bHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAg
b3RoZXJfa2V5OgogICAgIGlmIGEgPT0gIjEiOiBvdGhlcl92YWx1ZQpAQCAtNjEsNyArNTgsNyBA
QCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRl
ZiB0ZXN0XzUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5
OgogICAgIGlmIGEgPT0gImFiYyJbMV06IG90aGVyX3ZhbHVlCkBAIC02OSw3ICs2Niw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAg
ICAgaWYgYSA9PSAiYWJjIltjXTogb3RoZXJfdmFsdWUKQEAgLTc3LDcgKzc0LDcgQEAgY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF83
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBp
ZiAoYSBvciBiKSBhbmQgYzogb3RoZXJfdmFsdWUKQEAgLTkxLDcgKzg4LDcgQEAgY2xhc3MgVG9r
ZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF84KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNv
bXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBh
IG9yIChiIGFuZCBjKTogb3RoZXJfdmFsdWUKQEAgLTk5LDcgKzk2LDcgQEAgY2xhc3MgVG9rZW5p
emVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF85KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBub3Qg
KGEgYW5kIGIpOiBvdGhlcl92YWx1ZQpAQCAtMTA3LDcgKzEwNCw3IEBAIGNsYXNzIFRva2VuaXpl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgc29tZV9rZXk6IHNvbWVfdmFsdWUKIApA
QCAtMTE2LDEyMSArMTEzLDEyNSBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzExKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUoIiIia2V5OgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleToKICAgaWYgbm90IGEgYW5k
IGIgYW5kIGMgYW5kIGQ6IHRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0XzEyKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIiW0hlYWRpbmcgMV0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIi
IiJbSGVhZGluZyAxXQogICBrZXk6IFthOjEsIGI6Ml0KICIiIikKIAogICAgIGRlZiB0ZXN0XzEz
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbYToxLCAiYjojIl0KKyAgICAg
ICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthOjEsICJiOiMiXQogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsiLCJdCisgICAgICAg
IHNlbGYuY29tcGFyZShiIiIia2V5OiBbIiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfMTUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6ICwKKyAgICAgICAgc2VsZi5jb21wYXJl
KGIiIiJrZXk6ICwKICIiIikKIAogICAgIGRlZiB0ZXN0XzE2KHNlbGYpOgotICAgICAgICBzZWxm
LmNvbXBhcmUoIiIia2V5OiBbIl0iLCBiXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
WyJdIiwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE3KHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUoIiIia2V5OiBdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBdCiAiIiIpCiAK
ICAgICBkZWYgdGVzdF8xOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFxd
CisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXF0KICAgICAgICAgIiIiLCAiIiJrZXk6
IF0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8wKHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUociIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCisgICAgICAgIHNlbGYuY29tcGFy
ZShiciIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCiAgICAgICAgICAgICAgICAgICAgICBy
IiIia1x0XDp5OiBceDA3XHgwOFx4MGNcblxyXHRceDBiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9l
c2NhcGVfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHgwMDogXHgxMkFceDQ1
IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHgwMDogXHgxMkFceDQ1IiIiLAogICAg
ICAgICAgICAgICAgICAgICAgciIiImtceDAwOiBceDEyQUUKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtcdTAwNDV5OiBcdTEy
MzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHUwMDQ1eTogXHUxMjM0
QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrRXk6IFx1MTIzNEFcdWFiYzYK
ICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8zKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUociIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUo
YnIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrRXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV80KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogJ1x1MTIzNEFcdUFCYzYnIiIiLAorICAg
ICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIiIiwKICAgICAgICAg
ICAgICAgICAgICAgIHUiIiJrZXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW1x1MTIzNEFc
dUFCYzZdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2
XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFtcdTEyMzRBXHVhYmM2XQogIiIi
KQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShy
IiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6
IFsiXHUxMjM0QVx1YWJjNiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzcoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBbXCxcXVwjXSIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBbXCxcXVwjXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHIi
IiJrZXk6IFsiLF0jIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV84KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXCMiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXCMiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia2V5OiAiIyIKICIiIikK
IAogICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMubWF4dW5pY29kZSA9PSAweEZGRkYsIHJlYXNv
bj0ibmFycm93IHVuaWNvZGUiKQogICAgIGRlZiB0ZXN0X2VzY2FwZV85KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogXFUxMEZGRkZhYmMiIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogXFUxMEZGRkZhYmMiIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIi
a2V5OiBcVTAwMTBGRkZGYWJjCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcdTEwRkZhYiIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBcdTEwRkZhYiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrZXk6IFx1MTBGRmFiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTEoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcXGFiCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXFxhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8xKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogQFRydWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBAVHJ1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUociIiImtleTogQEZhbHNlCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtl
eTogQEZhbHNlCiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzMoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBAUmVzZXQKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5
OiBAUmVzZXQKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fNChzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKHIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogW2EsIEBSZXNldCwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2NvbmRpdGlvbmFs
XzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286CisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQogCiAgICAgZGVmIHRlc3Rf
aWZfc3RyaW5nXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286ICJpZiBiYXIi
CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOiAiaWYgYmFyIgorIiIiKQorCisgICAgZGVm
IHRlc3Rfbm9uX2FzY2lpXzEoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiW1x4ZjBc
eDlmXHg5OVx4ODRdCiAiIiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVz
dF9zdGF0aWMucHkKaW5kZXggYWFmODQ2NTkxNTI0NmFhYzU4YTA2OGRjZmMwNjk3YjhjOWFmNDE4
MS4uZTgxMWEyYjQyYjQ1NTBjY2VjMWNkYTlmNmIxYTJiOWJiMjcwZmFjZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAtMSw1ICsxLDMgQEAK
LWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uYmFj
a2VuZHMgaW1wb3J0IHN0YXRpYwpAQCAtOCwxNCArNiwxMiBAQCBmcm9tIC4uYmFja2VuZHMgaW1w
b3J0IHN0YXRpYwogIyB1c2UgdGVzdF9zZXJpYWxpemVyIGZvciB0aGUgbWFqb3JpdHkgb2YgY2Fz
ZXMKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogY2xhc3MgVGVzdFN0YXRpYyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNvbXBp
bGUoc2VsZiwgaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSk6CiAgICAgICAgIHJldHVybiBzdGF0aWMu
Y29tcGlsZShpbnB1dF90ZXh0LCBpbnB1dF9kYXRhKQogCiAgICAgZGVmIHRlc3RfZ2V0XzAoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUK
IAogW0hlYWRpbmcgMV0KQEAgLTI3LDE3ICsyMywxNyBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAg
bWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMn0pCiAKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQogICAgICAgICBjaGlsZHJl
biA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRyZW4oKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9uID0gY2hpbGRyZW5bMF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFkaW5nIDEiKQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzIi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIpLCAidmFs
dWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoImtleSIpLCAidmFs
dWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTUwLDMyICs0
NiwzMiBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0
ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rpb24gPSBjaGlsZHJl
blswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5Iiks
ICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJf
a2V5IiksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYpOgotICAgICAgICBk
YXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYgYSA9PSAiMSI6IHZh
bHVlXzEKICAgaWYgYVswXSA9PSAiYWIiWzBdOiB2YWx1ZV8yCiAiIiIKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogIjEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgICAgICBtYW5pZmVz
dCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAiYWMifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAgIGRlZiB0ZXN0X2dl
dF80KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtl
eToKICAgaWYgbm90IGE6IHZhbHVlXzEKICAgdmFsdWVfMgogIiIiCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IFRydWV9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQogCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IEZhbHNlfSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X2Fw
aShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIiIiJrZXk6
CiAgIGlmIGEgPT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKIGtleV8xOiBvdGhlcl92YWx1ZQpA
QCAtODMsMTUgKzc5LDE1IEBAIGtleV8xOiBvdGhlcl92YWx1ZQogICAgICAgICBtYW5pZmVzdCA9
IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAxLjV9KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0
LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LnJvb3Qs
IG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3QuaGFzX2tleSgia2V5
XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMiIp
KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwg
eyJrZXkiLCAia2V5XzEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0
Lml0ZXJ2YWx1ZXMoKSksIHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcnZhbHVlcygpKSwgeyJ2
YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIn0pCiAKICAgICBkZWYgdGVzdF9pc19lbXB0eV8xKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBbU2VjdGlvbl0KICAg
W1N1YnNlY3Rpb25dCiAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CmluZGV4IGNhYzE3MmE1OTQwZWM2OTZlM2EzYjI3
OTE3MGY5NzEyYWFmNDY2OGQuLmQwY2MxOTQ4MWRiZGVkYzQ1ZWRmZWU5NjA4ZDgyZGViNGExOTY1
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdHJ1bm5lci5weQpAQCAtMywxOSArMywyMSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGZy
b20gd3B0c2VydmUgaW1wb3J0IHNzbHV0aWxzCiAKLWltcG9ydCBlbnZpcm9ubWVudCBhcyBlbnYK
LWltcG9ydCBwcm9kdWN0cwotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3cHRjb21tYW5kbGlu
ZQotaW1wb3J0IHdwdGxvZ2dpbmcKLWltcG9ydCB3cHR0ZXN0Citmcm9tIC4gaW1wb3J0IGVudmly
b25tZW50IGFzIGVudgorZnJvbSAuIGltcG9ydCBpbnN0cnVtZW50cworZnJvbSAuIGltcG9ydCBw
cm9kdWN0cworZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCitmcm9tIC4gaW1wb3J0IHdwdGNvbW1h
bmRsaW5lCitmcm9tIC4gaW1wb3J0IHdwdGxvZ2dpbmcKK2Zyb20gLiBpbXBvcnQgd3B0dGVzdAog
ZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCi1mcm9tIGZvbnQgaW1wb3J0IEZv
bnRJbnN0YWxsZXIKLWZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCi1mcm9tIGJy
b3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCitmcm9tIC5mb250IGltcG9ydCBGb250SW5z
dGFsbGVyCitmcm9tIC50ZXN0cnVubmVyIGltcG9ydCBNYW5hZ2VyR3JvdXAKK2Zyb20gLmJyb3dz
ZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmls
ZV9fKVswXQogCkBAIC00Myw3ICs0NSw3IEBAIGRlZiBzZXR1cF9sb2dnaW5nKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIGxvZ2dlcgogCiAKLWRlZiBnZXRfbG9hZGVyKHRlc3RfcGF0aHMs
IHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAqKmt3YXJncyk6Citk
ZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19l
eHRyYXM9Tm9uZSwgY2h1bmtlcl9rd2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgIGlmIHJ1bl9p
bmZvX2V4dHJhcyBpcyBOb25lOgogICAgICAgICBydW5faW5mb19leHRyYXMgPSB7fQogCkBAIC03
Niw3ICs3OCwxMCBAQCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1O
b25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz1rd2FyZ3NbInRvdGFsX2NodW5rcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcj1r
d2FyZ3NbInRoaXNfY2h1bmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlX2h0dHBzPXNzbF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGltZW91dCJdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcXVpYz1rd2FyZ3Nb
ImVuYWJsZV9xdWljIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2tpcF90aW1lb3V0PWt3YXJnc1sic2tpcF90aW1lb3V0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXM9a3dhcmdzWyJz
a2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzKQogICAgIHJldHVybiBy
dW5faW5mbywgdGVzdF9sb2FkZXIKIAogCkBAIC0xMDIsNyArMTA3LDcgQEAgZGVmIGxpc3RfZGlz
YWJsZWQodGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgIHJ1bl9pbmZvLCB0ZXN0
X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1ydW5faW5mb19leHRyYXMs
ICoqa3dhcmdzKQogCi0gICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlz
YWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gaXRl
cml0ZW1zKHRlc3RfbG9hZGVyLmRpc2FibGVkX3Rlc3RzKToKICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6
IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpA
QCAtMTI3LDcgKzEzMiw3IEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0ZXN0X2xvYWRlciwg
Kiprd2FyZ3MpOgogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgdGVzdHMgPSB0ZXN0X2xvYWRlci50ZXN0cwotICAgICAgICBp
c19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0cy5p
dGVydmFsdWVzKCkpID09IDEgYW5kCisgICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChz
dW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgidGVzdGhhcm5lc3Mi
LCBbXSkpID09IDEpCiAgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0gMSBhbmQga3dhcmdz
WyJyZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCkBAIC0xMzgsNyArMTQzLDEyIEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0
ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMs
IHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAiIiJTZXQgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQs
IGxvYWQgdGhlIGxpc3Qgb2YgdGVzdHMgdG8gYmUgZXhlY3V0ZWQsIGFuZAogICAgIGludm9rZSB0
aGUgcmVtYWluZGVyIG9mIHRoZSBjb2RlIHRvIGV4ZWN1dGUgdGVzdHMiIiIKLSAgICB3aXRoIGNh
cHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRpbyJdKToK
KyAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6CisgICAgICAgIHJl
Y29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQorICAgIGVsc2U6CisgICAgICAg
IHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImluc3RydW1lbnRfdG9f
ZmlsZSJdKQorICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJ
Tyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgICAgIHJlY29y
ZGluZy5zZXQoWyJzdGFydHVwIl0pCiAgICAgICAgIGVudi5kb19kZWxheWVkX2ltcG9ydHMobG9n
Z2VyLCB0ZXN0X3BhdGhzKQogCiAgICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0cy5sb2FkX3Byb2R1
Y3QoY29uZmlnLCBwcm9kdWN0LCBsb2FkX2Nscz1UcnVlKQpAQCAtMTQ5LDIyICsxNTksMjkgQEAg
ZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAog
ICAgICAgICBpZiBrd2FyZ3NbImluc3RhbGxfZm9udHMiXToKICAgICAgICAgICAgIGVudl9leHRy
YXMuYXBwZW5kKEZvbnRJbnN0YWxsZXIoCisgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAg
ICAgICAgICAgIGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKICAgICAgICAgICAgICAgICBh
aGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgiXSwgImZvbnRzL0Fo
ZW0udHRmIikKICAgICAgICAgICAgICkpCiAKLSAgICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVy
ID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKipr
d2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJsb2FkX3Rlc3RzIl0pCiAK
ICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBrd2FyZ3NbInByb2Nl
c3NlcyJdfQorICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAgIGlmIGt3YXJnc1si
cnVuX2J5X2RpciJdIGlzIEZhbHNlOgogICAgICAgICAgICAgdGVzdF9zb3VyY2VfY2xzID0gdGVz
dGxvYWRlci5TaW5nbGVUZXN0U291cmNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEg
dmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgaW5maW5pdGUgZGVwdGgKICAgICAgICAgICAgIHRlc3Rf
c291cmNlX2NscyA9IHRlc3Rsb2FkZXIuUGF0aEdyb3VwZWRTb3VyY2UKICAgICAgICAgICAgIHRl
c3Rfc291cmNlX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisgICAgICAg
ICAgICBjaHVua2VyX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisKKyAg
ICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9
cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCiAKICAg
ICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nICVpIGNsaWVudCBwcm9jZXNzZXMiICUga3dhcmdzWyJw
cm9jZXNzZXMiXSkKIApAQCAtMTg4LDE5ICsyMDUsMjQgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcs
IHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICB0ZXN0aGFybmVzc190
aW1lb3V0X211bHRpcGxlciA9IHByb2R1Y3QuZ2V0X3RpbWVvdXRfbXVsdGlwbGllcigidGVzdGhh
cm5lc3MiLCBydW5faW5mbywgKiprd2FyZ3MpCiAKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0
YXJ0dXAiLCAic3RhcnRfZW52aXJvbm1lbnQiXSkKICAgICAgICAgd2l0aCBlbnYuVGVzdEVudmly
b25tZW50KHRlc3RfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aGFybmVzc190aW1lb3V0X211bHRpcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9kdWN0LmVudl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3NsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9l
eHRyYXMpIGFzIHRlc3RfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdz
WyJlbmFibGVfcXVpYyJdKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgcmVjb3Jk
aW5nLnNldChbInN0YXJ0dXAiLCAiZW5zdXJlX2Vudmlyb25tZW50Il0pCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5lbnN1cmVfc3RhcnRlZCgpCiAg
ICAgICAgICAgICBleGNlcHQgZW52LlRlc3RFbnZpcm9ubWVudEVycm9yIGFzIGU6CiAgICAgICAg
ICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJFcnJvciBzdGFydGluZyB0ZXN0IGVudmlyb25tZW50
OiAlcyIgJSBlLm1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAg
cmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKKwogICAgICAgICAgICAgcmVwZWF0ID0ga3dhcmdz
WyJyZXBlYXQiXQogICAgICAgICAgICAgcmVwZWF0X2NvdW50ID0gMAogICAgICAgICAgICAgcmVw
ZWF0X3VudGlsX3VuZXhwZWN0ZWQgPSBrd2FyZ3NbInJlcGVhdF91bnRpbF91bmV4cGVjdGVkIl0K
QEAgLTIxNCw3ICsyMzYsMTIgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICAgICAgICAgIHRlc3RfY291bnQgPSAwCiAgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICBsb2dnZXIu
c3VpdGVfc3RhcnQodGVzdF9sb2FkZXIudGVzdF9pZHMsCisKKyAgICAgICAgICAgICAgICB0ZXN0
cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X2xvYWRlci50ZXN0
X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQodGVzdF9sb2FkZXIudGVz
dHNbdGVzdF90eXBlXSkKKworICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0
X3NvdXJjZV9jbHMudGVzdHNfYnlfZ3JvdXAodGVzdHMsICoqdGVzdF9zb3VyY2Vfa3dhcmdzKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nd2ViLXBsYXRmb3JtLXRl
c3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz1ydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9eyJydW5fYnlfZGly
Ijoga3dhcmdzWyJydW5fYnlfZGlyIl19KQpAQCAtMjY2LDYgKzI5Myw3IEBAIGRlZiBydW5fdGVz
dHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVzdHMgPSB0ZXN0X2xv
YWRlci50ZXN0cwogCisgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZy5wYXVzZSgpCiAgICAg
ICAgICAgICAgICAgICAgIHdpdGggTWFuYWdlckdyb3VwKCJ3ZWItcGxhdGZvcm0tdGVzdHMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInByb2Nlc3NlcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NvdXJjZV9jbHMs
CkBAIC0yNzksNyArMzA3LDggQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJwYXVzZV9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJnc1sicmVzdGFydF9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0
ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPXJlY29yZGluZykgYXMgbWFuYWdlcl9ncm91
cDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5hZ2VyX2dyb3VwLnJ1bih0ZXN0X3R5cGUsIHJ1bl90ZXN0cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKQEAgLTI4OCw3ICszMTcsNyBA
QCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudGVzdF9jb3VudCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudW5leHBlY3RlZF9j
b3VudCgpCi0KKyAgICAgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsiYWZ0ZXItZW5kIl0pCiAg
ICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBlY3RlZF9jb3VudCkK
QEAgLTMxNyw3ICszNDYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJv
ZHVjdCwgKiprd2FyZ3MpOgogCiAKIGRlZiBjaGVja19zdGFiaWxpdHkoKiprd2FyZ3MpOgotICAg
IGltcG9ydCBzdGFiaWxpdHkKKyAgICBmcm9tIC4gaW1wb3J0IHN0YWJpbGl0eQogICAgIGlmIGt3
YXJnc1sic3RhYmlsaXR5Il06CiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCItLXN0YWJpbGl0eSBp
cyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIC0tdmVyaWZ5IGluc3RlYWQhIikKICAgICAgICAga3dh
cmdzWyd2ZXJpZnlfbWF4X3RpbWUnXSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKaW5kZXggMWQxNGY0ZWZlZWFlMjc5
YzJjMzYwZmJhMTM4OGVhNWYzYTQzODc3Zi4uNmIwZmFiNmVlYmFmNTA1ZmZkMjA3MTBlMWEyY2E0
NmUzZDZmNTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgb3MKIGltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKIAogZnJvbSAud3B0bWFuaWZlc3QucGFyc2Vy
IGltcG9ydCBhdG9tcwogCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9tb3ppbmZvKG1ldGFkYXRhX3Jvb3QpCiAgICAgICAgIHNlbGYu
dXBkYXRlKG1vemluZm8uaW5mbykKIAotICAgICAgICBmcm9tIHVwZGF0ZS50cmVlIGltcG9ydCBH
aXRUcmVlCisgICAgICAgIGZyb20gLnVwZGF0ZS50cmVlIGltcG9ydCBHaXRUcmVlCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgICMgR2l0VHJlZS5fX2luaXRfXyB0aHJvd3MgaWYgd2UgYXJlIG5v
dCBpbiBhIGdpdCB0cmVlLgogICAgICAgICAgICAgcmV2ID0gR2l0VHJlZShsb2dfZXJyb3I9RmFs
c2UpLnJldgpAQCAtMTAxLDYgKzEwMyw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAg
IGlmIHJldjoKICAgICAgICAgICAgIHNlbGZbInJldmlzaW9uIl0gPSByZXYKIAorICAgICAgICBz
ZWxmWyJweXRob25fdmVyc2lvbiJdID0gc3lzLnZlcnNpb25faW5mby5tYWpvcgogICAgICAgICBz
ZWxmWyJwcm9kdWN0Il0gPSBwcm9kdWN0CiAgICAgICAgIGlmIGRlYnVnIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgc2VsZlsiZGVidWciXSA9IGRlYnVnCkBAIC0xMTgsMjIgKzEyMSw5IEBAIGNs
YXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIGlmIGV4dHJhcyBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHNlbGYudXBkYXRlKGV4dHJhcykKIAotICAgICAgICAjIFVudGlsIHRoZSB0ZXN0IGhh
cm5lc3MgY2FuIHVuZGVyc3RhbmQgZGVmYXVsdCBwcmVmIHZhbHVlcywKLSAgICAgICAgIyAoaHR0
cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzkxMikgdGhpcyB2
YWx1ZQotICAgICAgICAjIHNob3VsZCBieSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgZGVmYXVsdCBw
cmVmIHZhbHVlIGluZGljYXRlZCBpbgotICAgICAgICAjIFN0YXRpY1ByZWZMaXN0LnlhbWwuCi0g
ICAgICAgICMKLSAgICAgICAgIyBDdXJyZW50bHkgZm9yIGF1dG9tYXRpb24sIHRoZSBwcmVmIChh
bmQgYHN3LWUxMHNgKSBkZWZhdWx0cyB0byB0cnVlIGluCi0gICAgICAgICMgbmlnaHRseSBidWls
ZHMgYW5kIGZhbHNlIG90aGVyd2lzZSBidXQgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aAotICAgICAg
ICAjIGAtLXNldHByZWZgLiBJZiBvdmVycmlkZGVuLCB0aGUgdmFsdWUgd291bGQgYmUgaW5pdGlh
bGl6ZWQgaW4KLSAgICAgICAgIyBgcnVuX2luZm9fZXh0cmFzYCBhbmQgYmUgc3VwcGxpZWQgaW4g
dGhlIGBleHRyYXNgIHBhcmFtZXRlci4KLSAgICAgICAgaWYgInN3LWUxMHMiIG5vdCBpbiBzZWxm
OgotICAgICAgICAgICAgc2VsZlsic3ctZTEwcyJdID0gc2VsZi5nZXQoIm5pZ2h0bHlfYnVpbGQi
LCBGYWxzZSkKLQogICAgICAgICBzZWxmWyJoZWFkbGVzcyJdID0gZXh0cmFzLmdldCgiaGVhZGxl
c3MiLCBGYWxzZSkKICAgICAgICAgc2VsZlsid2VicmVuZGVyIl0gPSBlbmFibGVfd2VicmVuZGVy
CiAKLQogICAgIGRlZiBfdXBkYXRlX21vemluZm8oc2VsZiwgbWV0YWRhdGFfcm9vdCk6CiAgICAg
ICAgICIiIkFkZCBleHRyYSBidWlsZCBpbmZvcm1hdGlvbiBmcm9tIGEgbW96aW5mby5qc29uIGZp
bGUgaW4gYSBwYXJlbnQKICAgICAgICAgZGlyZWN0b3J5IiIiCkBAIC0xNTAsNiArMTQwLDE0IEBA
IGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIG1vemluZm8uZmluZF9hbmRfdXBkYXRlX2Zy
b21fanNvbigqZGlycykKIAogCitkZWYgc2VydmVyX3Byb3RvY29sKG1hbmlmZXN0X2l0ZW0pOgor
ICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImgyIikgYW5kIG1hbmlmZXN0X2l0ZW0uaDI6
CisgICAgICAgIHJldHVybiAiaDIiCisgICAgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAiaHR0
cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwczoKKyAgICAgICAgcmV0dXJuICJodHRwcyIKKyAg
ICByZXR1cm4gImh0dHAiCisKKwogY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgcmVzdWx0X2Ns
cyA9IE5vbmUKQEAgLTE2MCwxNCArMTU4LDE0IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICBs
b25nX3RpbWVvdXQgPSA2MCAgIyBzZWNvbmRzCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLAotICAgICAgICAg
ICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiKToKKyAgICAg
ICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgcXVp
Yz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKICAgICAgICAg
c2VsZi51cmwgPSB1cmwKICAgICAgICAgc2VsZi5faW5oZXJpdF9tZXRhZGF0YSA9IGluaGVyaXRf
bWV0YWRhdGEKICAgICAgICAgc2VsZi5fdGVzdF9tZXRhZGF0YSA9IHRlc3RfbWV0YWRhdGEKICAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGVsc2Ug
c2VsZi5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotICAgICAgICBz
ZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAicHJlZnMiOiBzZWxmLnBy
ZWZzfQorICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAi
cHJlZnMiOiBzZWxmLnByZWZzLCAicXVpYyI6IHF1aWN9CiAKICAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRlc3QpOgpAQCAtMTg2
LDE0ICsxODQsMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfaXRlbSwgaW5o
ZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9u
Z190aW1lb3V0IGlmIG1hbmlmZXN0X2l0ZW0udGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVm
YXVsdF90aW1lb3V0Ci0gICAgICAgIHByb3RvY29sID0gImh0dHBzIiBpZiBoYXNhdHRyKG1hbmlm
ZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVsc2UgImh0dHAiCiAg
ICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAg
ICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0
YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpv
aW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAotICAgICAg
ICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQorICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVtKSkKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpZChzZWxmKToKQEAgLTI2Miw2ICsyNTksMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudAogICAgICAgICByZXR1cm4gMAogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIGZvciBtZXRhIGlu
IHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGlmIG1ldGEubHNhbl9kaXNhYmxlZCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0YS5sc2FuX2Rpc2FibGVkCisgICAg
ICAgIHJldHVybiBGYWxzZQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChz
ZWxmKToKICAgICAgICAgbHNhbl9hbGxvd2VkID0gc2V0KCkKQEAgLTI5NSw3ICsyOTksNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG1ldGEgaW4g
c2VsZi5pdGVybWV0YShOb25lKToKICAgICAgICAgICAgIHRocmVzaG9sZCA9IG1ldGEubGVha190
aHJlc2hvbGQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHRocmVzaG9sZC5pdGVyaXRl
bXMoKToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyh0aHJlc2hvbGQp
OgogICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAgICAg
IHJ2W2tleV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKQEAgLTMzNyw3ICszNDEsNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0ZWQg
PSBtZXRhZGF0YS5nZXQoImV4cGVjdGVkIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhw
ZWN0ZWQsIChiYXNlc3RyaW5nKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVk
LCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZAogICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRbMF0KQEAgLTM0Niw2ICszNTAsMTYgQEAgY2xhc3MgVGVzdChvYmplY3Qp
OgogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAog
CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgaW1wbGVtZW50
YXRpb25fc3RhdHVzID0gTm9uZQorICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKCk6
CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBtZXRhLmltcGxlbWVudGF0aW9u
X3N0YXR1cworICAgICAgICAgICAgaWYgaW1wbGVtZW50YXRpb25fc3RhdHVzOgorICAgICAgICAg
ICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMKKworICAgICAgICAjIGFzc3VtaW5n
IG5vIHNwZWNpZmljIGNhc2UsIHdlIGFyZSBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgcmV0dXJu
ICJpbXBsZW1lbnRpbmciCisKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYsIHN1YnRl
c3Q9Tm9uZSk6CiAgICAgICAgIG1ldGFkYXRhID0gc2VsZi5fZ2V0X21ldGFkYXRhKHN1YnRlc3Qp
CiAgICAgICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6CkBAIC0zODEsOSArMzk1LDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NUZXN0KFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jv
b3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgdGVzdGRyaXZlcj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lKToKKyAg
ICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lLCBxdWljPUZhbHNlKToK
ICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMp
CiAKICAgICAgICAgc2VsZi50ZXN0ZHJpdmVyID0gdGVzdGRyaXZlcgogICAgICAgICBzZWxmLmpz
c2hlbGwgPSBqc3NoZWxsCkBAIC0zOTIsMjIgKzQwNiwyMyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rl
c3QoVGVzdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBt
YW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFk
YXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRl
bS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLSAgICAgICAgcHJv
dG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1h
bmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRyaXZlciA9IG1hbmlm
ZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJ0ZXN0ZHJpdmVy
IikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRlbS5qc3NoZWxsIGlm
IGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNlCisgICAgICAgIHF1
aWMgPSBtYW5pZmVzdF9pdGVtLnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAicXVpYyIp
IGVsc2UgRmFsc2UKICAgICAgICAgc2NyaXB0X21ldGFkYXRhID0gbWFuaWZlc3RfaXRlbS5zY3Jp
cHRfbWV0YWRhdGEgb3IgW10KLSAgICAgICAgc2NyaXB0cyA9IFt2IGZvciAoaywgdikgaW4gc2Ny
aXB0X21ldGFkYXRhIGlmIGsgPT0gYiJzY3JpcHQiXQorICAgICAgICBzY3JpcHRzID0gW3YgZm9y
IChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICBpZiBrID09ICJz
Y3JpcHQiXQogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAgICAgICAgICAgICBp
bmhlcml0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHBhdGg9
b3MucGF0aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZlc3RfaXRlbS5wYXRo
KSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCwKKyAgICAgICAgICAgICAg
ICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSksCiAgICAgICAgICAg
ICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAgICAgICAgICAgICAgICAgIGpzc2hl
bGw9anNzaGVsbCwKLSAgICAgICAgICAgICAgICAgICBzY3JpcHRzPXNjcmlwdHMKLSAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3JpcHRzLAorICAgICAg
ICAgICAgICAgICAgIHF1aWM9cXVpYykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChzZWxm
KToKQEAgLTQyMywxMyArNDM4LDI0IEBAIGNsYXNzIE1hbnVhbFRlc3QoVGVzdCk6CiAKIAogY2xh
c3MgUmVmdGVzdFRlc3QoVGVzdCk6CisgICAgIiIiQSByZWZ0ZXN0CisKKyAgICBBIHJlZnRlc3Qg
c2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gcGFzcyBpZiBvbmUgb2YgaXRzIHJlZmVyZW5jZXMgbWF0
Y2hlcyAoc2VlIGJlbG93KSAqYW5kKiB0aGUKKyAgICByZWZlcmVuY2UgcGFzc2VzIGlmIGl0IGhh
cyBhbnkgcmVmZXJlbmNlcyByZWN1cnNpdmVseS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICAg
IHJlZmVyZW5jZXMgKExpc3RbVHVwbGVbc3RyLCBzdHJdXSk6IGEgbGlzdCBvZiBhbHRlcm5hdGUg
cmVmZXJlbmNlcywgd2hlcmUgb25lIG11c3QgbWF0Y2ggZm9yIHRoZSB0ZXN0IHRvIHBhc3MKKyAg
ICAgICAgdmlld3BvcnRfc2l6ZSAoT3B0aW9uYWxbVHVwbGVbaW50LCBpbnRdXSk6IHNpemUgb2Yg
dGhlIHZpZXdwb3J0IGZvciB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0CisgICAgICAgIGRwaSAo
T3B0aW9uYWxbaW50XSk6IGRwaSB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhpcyB0ZXN0LCBpZiBu
b3QgZGVmYXVsdAorCisgICAgIiIiCiAgICAgcmVzdWx0X2NscyA9IFJlZnRlc3RSZXN1bHQKICAg
ICB0ZXN0X3R5cGUgPSAicmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19y
b290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCi0g
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5v
bmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAg
ICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6ZT1Ob25lLCBkcGk9Tm9u
ZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVz
dC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3Rf
bWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wp
CisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMpCiAKICAgICAgICAg
Zm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBpZiByZWZfdHlwZSBu
b3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNDQ1LDE2ICs0NzEsMTAgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAgICAgICAgICAgICAgIGluaGVy
aXRfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICBub2Rlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXNfc2Vlbj1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21ldGFkYXRhKToK
IAogICAgICAgICB0aW1lb3V0ID0gY2xzLmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF90ZXN0LnRp
bWVvdXQgPT0gImxvbmciIGVsc2UgY2xzLmRlZmF1bHRfdGltZW91dAotCi0gICAgICAgIGlmIG5v
ZGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlcyA9IHt9Ci0gICAgICAgIGlmIHJlZmVyZW5j
ZXNfc2VlbiBpcyBOb25lOgotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuID0gc2V0KCkKKyAg
ICAgICAgcXVpYyA9IG1hbmlmZXN0X3Rlc3QucXVpYyBpZiBoYXNhdHRyKG1hbmlmZXN0X3Rlc3Qs
ICJxdWljIikgZWxzZSBGYWxzZQogCiAgICAgICAgIHVybCA9IG1hbmlmZXN0X3Rlc3QudXJsCiAK
QEAgLTQ2Nyw0MSArNDg3LDYwIEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgIHBhdGg9bWFuaWZlc3RfdGVzdC5wYXRoLAogICAgICAgICAgICAgICAgICAgIHZp
ZXdwb3J0X3NpemU9bWFuaWZlc3RfdGVzdC52aWV3cG9ydF9zaXplLAogICAgICAgICAgICAgICAg
ICAgIGRwaT1tYW5pZmVzdF90ZXN0LmRwaSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD0i
aHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBzIikgYW5kIG1hbmlmZXN0X3Rl
c3QuaHR0cHMgZWxzZSAiaHR0cCIsCi0gICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3Rf
dGVzdC5mdXp6eSkKKyAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wo
bWFuaWZlc3RfdGVzdCksCisgICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3RfdGVzdC5m
dXp6eSwKKyAgICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKLSAgICAgICAgbm9kZXNbdXJs
XSA9IG5vZGUKKyAgICAgICAgcmVmc19ieV90eXBlID0gZGVmYXVsdGRpY3QobGlzdCkKIAogICAg
ICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gbWFuaWZlc3RfdGVzdC5yZWZlcmVuY2VzOgot
ICAgICAgICAgICAgY29tcGFyaXNvbl9rZXkgPSAocmVmX3R5cGUsKSArIHR1cGxlKHNvcnRlZChb
dXJsLCByZWZfdXJsXSkpCi0gICAgICAgICAgICBpZiByZWZfdXJsIGluIG5vZGVzOgotICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSByZWZfdXJsCi0gICAgICAgICAgICAgICAgaWYgY29t
cGFyaXNvbl9rZXkgaW4gcmVmZXJlbmNlc19zZWVuOgotICAgICAgICAgICAgICAgICAgICAjIFdl
IGhhdmUgcmVhY2hlZCBhIGN5Y2xlIHNvIHN0b3AgaGVyZQotICAgICAgICAgICAgICAgICAgICAj
IE5vdGUgdGhhdCBqdXN0IHNlZWluZyBhIG5vZGUgZm9yIHRoZSBzZWNvbmQgdGltZSBpcyBub3QK
LSAgICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IGEgY3ljbGUgYmVjYXVzZQot
ICAgICAgICAgICAgICAgICAgICAjIEEgIT0gQiAhPSBDICE9IEEgbXVzdCBpbmNsdWRlIEMgIT0g
QQotICAgICAgICAgICAgICAgICAgICAjIGJ1dCBBID09IEIgPT0gQSBzaG91bGQgbm90IGluY2x1
ZGUgdGhlIHJlZHVuZGFudCBCID09IEEuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0K
LSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2Vlbi5hZGQoY29tcGFyaXNvbl9rZXkpCi0KLSAgICAg
ICAgICAgIG1hbmlmZXN0X25vZGUgPSBtYW5pZmVzdF9maWxlLmdldF9yZWZlcmVuY2UocmVmX3Vy
bCkKLSAgICAgICAgICAgIGlmIG1hbmlmZXN0X25vZGU6Ci0gICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdF9maWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAg
ICAgICAgIHJlZnNfYnlfdHlwZVtyZWZfdHlwZV0uYXBwZW5kKHJlZl91cmwpCisKKyAgICAgICAg
IyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGFsbCB0aGUgbWlzbWF0Y2hlcywgd2hlcmUgd2UgZW5kIHVw
IHdpdGggbWlzbWF0Y2hfMSAhPSB1cmwgIT0KKyAgICAgICAgIyBtaXNtYXRjaF8yICE9IHVybCAh
PSBtaXNtYXRjaF8zIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9j
dW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1pc21hdGNoZXMgcHJv
dmlkZWQgbWF0Y2gsCisgICAgICAgIG1pc21hdGNoX3dhbGsgPSBOb25lCisgICAgICAgIGlmIHJl
ZnNfYnlfdHlwZVsiIT0iXToKKyAgICAgICAgICAgIG1pc21hdGNoX3dhbGsgPSBSZWZ0ZXN0VGVz
dChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmc19ieV90eXBlWyIhPSJdWzBdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
Ci0KLSAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZmVyZW5jZSwgcmVmX3R5
cGUpKQorICAgICAgICAgICAgY21wX3JlZiA9IG1pc21hdGNoX3dhbGsKKyAgICAgICAgICAgIGZv
ciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiIT0iXVsxOl06CisgICAgICAgICAgICAgICAgY21w
X3NlbGYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKKyAg
ICAgICAgICAgICAgICBjbXBfcmVmLnJlZmVyZW5jZXMuYXBwZW5kKChjbXBfc2VsZiwgIiE9Iikp
CisgICAgICAgICAgICAgICAgY21wX3JlZiA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0X2ZpbGUudGVz
dHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9zZWxmLnJlZmVyZW5jZXMuYXBw
ZW5kKChjbXBfcmVmLCAiIT0iKSkKKworICAgICAgICBpZiBtaXNtYXRjaF93YWxrIGlzIE5vbmU6
CisgICAgICAgICAgICBtaXNtYXRjaF9yZWZzID0gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG1pc21hdGNoX3JlZnMgPSBbKG1pc21hdGNoX3dhbGssICIhPSIpXQorCisgICAgICAgIGlm
IHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAgICAgICAgICMgRm9yIGVhY2ggPT0gcmVmLCBhZGQg
YSByZWZlcmVuY2UgdG8gdGhpcyBub2RlIHdob3NlIHRhaWwgaXMgdGhlIG1pc21hdGNoIGxpc3Qu
CisgICAgICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFu
cyBhbnkgb25lIG9mIHRoZSBtYXRjaGVzIG11c3QgcGFzcyBwbHVzIGFsbCB0aGUgbWlzbWF0Y2hl
cy4KKyAgICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAg
ICAgICAgICAgICByZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc21hdGNoX3JlZnMp
CisgICAgICAgICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmFwcGVuZCgocmVmLCAiPT0iKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBqdXN0IGFkZCB0aGUgbWlz
bWF0Y2hlcyBkaXJlY3RseSBhcyB3ZSBhcmUgaW1tZWRpYXRlbHkgaW50byB0aGUKKyAgICAgICAg
ICAgICMgbWlzbWF0Y2ggY2hhaW4gd2l0aCBubyBhbHRlcm5hdGVzLgorICAgICAgICAgICAgbm9k
ZS5yZWZlcmVuY2VzLmV4dGVuZChtaXNtYXRjaF9yZWZzKQogCiAgICAgICAgIHJldHVybiBub2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1c2UgQlNEIExpY2Vuc2UKLQot
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNlLmh0
bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSogUmVkaXN0cmlidXRpb25z
IG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLAotICB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0q
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgb3JpZ2lu
YWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAu
cHkKaW5kZXggYzljMzY0YjhiYWNjNzJhNmZmNzdmOWQwYzgxMWIyZDdkMTgxMGQxMy4uNzU5Y2I0
OGQxZjY1ZjUyZjY1MDBlZDJiODcxYzdlZjQzMDUxOGFiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSBzZXR1cHRvb2xzIGltcG9y
dCBzZXR1cAogCi1QQUNLQUdFX1ZFUlNJT04gPSAnMi4wJworUEFDS0FHRV9WRVJTSU9OID0gJzMu
MCcKIGRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCiAKIHNldHVwKG5hbWU9J3dwdHNl
cnZlJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDJlMmQwZDY3NzFiYTI2YTFm
YmU3ZThmYzhiYjJlMjU5OGJjMzQyMjMuLjY0ZWFiMmQ4MDZiNTJkZTkzM2IyOGQ1ODQxNmI2OWQz
NmJkY2IyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAtMTAsNyArMTAsNyBA
QCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYg
dGVzdF9uYW1lX3ZhbHVlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxl
cgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgICAgIHJlc3BvbnNl
LnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3Qi
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9uYW1lX3ZhbHVlIiwgaGFuZGxlcikK
QEAgLTIyLDggKzIyLDggQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1Nl
cnZlcik6CiAgICAgZGVmIHRlc3RfdW5zZXQoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5k
bGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICAg
ICAgcmVzcG9uc2UudW5zZXRfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLnNl
dF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCisgICAgICAgICAgICByZXNwb25zZS51bnNldF9j
b29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0
ZSA9ICgiR0VUIiwgIi90ZXN0L3Vuc2V0IiwgaGFuZGxlcikKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3Rf
ZGVsZXRlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAg
ICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXNwb25zZS5k
ZWxldGVfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLmRlbGV0ZV9jb29raWUo
YiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0ZSA9ICgi
R0VUIiwgIi90ZXN0L2RlbGV0ZSIsIGhhbmRsZXIpCkBAIC00NywxOCArNDcsMjAgQEAgY2xhc3Mg
VGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJ0c1sibmFtZSJdLCAiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJ0c1siUGF0aCJdLCAiLyIpCi0gICAgICAgICNTaG91bGQgYWxzbyBjaGVjayB0aGF0IGV4cGly
ZXMgaXMgaW4gdGhlIHBhc3QKKyAgICAgICAgIyBUT0RPOiBTaG91bGQgYWxzbyBjaGVjayB0aGF0
IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKwogCiBjbGFzcyBUZXN0UmVxdWVzdENvb2tpZXMoVGVz
dFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zZXRfY29va2llKHNlbGYpOgogICAgICAgICBA
d3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBy
ZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVzWyJuYW1lIl0udmFs
dWUKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvb2tpZXNbYiJuYW1lIl0udmFsdWUKIAog
ICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3NldF9jb29raWUiLCBoYW5kbGVyKQogICAg
ICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICByZXNwID0g
c2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBoZWFkZXJzPXsiQ29va2llIjogIm5hbWU9dmFsdWUifSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJ2YWx1ZSIpCiAKKwogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZDhkNjRkNTRjY2M3OGEzYzZkZWJhMjFiNzM0MjhlNzFh
ZWIxYmU2MC4uNmU5NDdlNDc4ZDllMTRlMzM2NzZjYmQ2MmJiYmFkYTJmMTE4ZWM3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBzeXMK
IGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeCBpbXBvcnQgY3JlYXRlX2JvdW5kX21l
dGhvZAorZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZMworZnJvbSBzaXgu
bW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdT
ZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMTY3LDcgKzE2Nyw2IEBAIGNs
YXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLnNlcnZlci5y
b3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICBzZWxmLnJlcXVlc3Qocm91dGVbMV0pCiAK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
InB5MyB1cmxsaWIgZG9lc24ndCBoYW5kbGUgaW52YWxpZCBIVFRQIHZlcnkgd2VsbCIpCiAgICAg
ZGVmIHRlc3Rfd3JpdGVfcmF3X2NvbnRlbnRzX2ludmFsaWRfaHR0cChzZWxmKToKICAgICAgICAg
cmVzcF9jb250ZW50ID0gYiJJTlZBTElEIEhUVFAiCiAKQEAgLTE3Nyw5ICsxNzYsMTQgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgcm91dGUgPSAoIkdF
VCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikKICAgICAgICAgc2Vs
Zi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKLSAgICAgICAgcmVzcCA9IHNlbGYucmVx
dWVzdChyb3V0ZVsxXSkKLSAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVu
dAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVb
MV0pCisgICAgICAgICAgICBhc3NlcnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9jb250ZW50CisgICAg
ICAgIGV4Y2VwdCBCYWRTdGF0dXNMaW5lIGFzIGU6CisgICAgICAgICAgICAjIEluIFB5dGhvbjMs
IGFuIGludmFsaWQgSFRUUCByZXF1ZXN0IHNob3VsZCB0aHJvdyBCYWRTdGF0dXNMaW5lLgorICAg
ICAgICAgICAgYXNzZXJ0IFBZMworICAgICAgICAgICAgYXNzZXJ0IHN0cihlKSA9PSByZXNwX2Nv
bnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gy
U2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19zdHJlYW0oc2VsZik6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDMwOWRkOWU1NzdhMDMzNWI3YTU2OTkyYzgy
YTQ4YjQzYTI1OWEyOGQuLjFjNGM5YWQ5MzNhMzc3NDY2MjNhMDE5NWY1NTNhZDhjZmU3MDY4OGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CkBAIC0xOCwxMCArMTgsMTAgQEAgY2xhc3MgVGVz
dFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIEB3cHRzZXJ2ZS5o
YW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToK
ICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KCJpZCIpLCByZXF1
ZXN0LlBPU1QuZmlyc3QoImRhdGEiKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNlcnZlci5z
dGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KGIiaWQiKSwgcmVxdWVzdC5QT1NULmZpcnN0KGIi
ZGF0YSIpKQogICAgICAgICAgICAgICAgIGRhdGEgPSAiT0siCiAgICAgICAgICAgICBlbGlmIHJl
cXVlc3QubWV0aG9kID09ICJHRVQiOgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNl
cnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KCJpZCIpKQorICAgICAgICAgICAgICAg
IGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KGIiaWQi
KSkKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiTk9UIEZPVU5EIgogICAgICAgICAgICAgcmV0dXJuIGRhdGEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY5ZDNkNDYwNDQwOTQxMTk4NGNiNDlmY2Q0MGViN2U5NzFiM2M1MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9y
dCBtb2NrCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKKworZnJvbSB3cHRzZXJ2ZS5yZXF1
ZXN0IGltcG9ydCBSZXF1ZXN0LCBSZXF1ZXN0SGVhZGVycworCisKK2NsYXNzIE1vY2tIVFRQTWVz
c2FnZShkaWN0KToKKyAgICAiIiJBIG1pbmltdW0gKGFuZCBub3QgY29tcGxldGVseSBjb3JyZWN0
bHkpIG1vY2sgb2YgSFRUUE1lc3NhZ2UgZm9yIHRlc3RpbmcuCisKKyAgICBDb25zdHJ1Y3Rpbmcg
SFRUUE1lc3NhZ2UgaXMgYW5ub3lpbmcgYW5kIGRpZmZlcmVudCBpbiBQeXRob24gMiBhbmQgMy4g
VGhpcworICAgIG9ubHkgaW1wbGVtZW50cyB0aGUgcGFydHMgdXNlZCBieSBSZXF1ZXN0SGVhZGVy
cy4KKworICAgIFJlcXVpcmVtZW50cyBmb3IgY29uc3RydWN0aW9uOgorICAgICogS2V5cyBhcmUg
aGVhZGVyIG5hbWVzIGFuZCBNVVNUIGJlIGxvd2VyLWNhc2UuCisgICAgKiBWYWx1ZXMgYXJlIGxp
c3RzIG9mIGhlYWRlciB2YWx1ZXMgKGV2ZW4gaWYgdGhlcmUncyBvbmx5IG9uZSkuCisgICAgKiBL
ZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzIHRvIG1hdGNoIHN0ZGxpYidz
IGJlaGF2aW91cnMuCisgICAgIiIiCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Cisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgc3RyKQorICAgICAgICB2YWx1ZXMgPSBkaWN0
Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh2YWx1ZXMsIGxpc3QpCisgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKworICAgIGRlZiBnZXQo
c2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0CisKKyAgICBkZWYgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKHNlbGYsIGtleSk6Cisg
ICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCisgICAg
ICAgIHJldHVybiBbInt9OiB7fVxuIi5mb3JtYXQoa2V5LCB2KSBmb3IgdiBpbiB2YWx1ZXNdCisK
KworZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2dldCgpOgorICAgIHJhd19oZWFkZXJzID0gTW9j
a0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwKKyAgICAgICAgJ3gtYmFy
JzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMgPSBSZXF1ZXN0SGVhZGVy
cyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaGVhZGVyc1sneC1mb28nXSA9PSBiJ2ZvbycKKyAg
ICBhc3NlcnQgaGVhZGVyc1snWC1CYXInXSA9PSBiJ2JhcjEsIGJhcjInCisgICAgYXNzZXJ0IGhl
YWRlcnMuZ2V0KCd4LWJhcicpID09IGInYmFyMSwgYmFyMicKKworCitkZWYgdGVzdF9yZXF1ZXN0
X2hlYWRlcnNfZW5jb2RpbmcoKToKKyAgICByYXdfaGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSh7
CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4LWJhcic6IFsnYmFyMScsICdi
YXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhlYWRlcnMocmF3X2hlYWRlcnMp
CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1mb28nXSwgYmluYXJ5X3R5cGUpCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1iYXInXSwgYmluYXJ5X3R5cGUpCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVycy5nZXRfbGlzdCgneC1iYXInKVswXSwgYmluYXJ5X3R5
cGUpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJvbV9zZXJ2ZXJfYWRkcmVzcygpOgorICAg
IHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZl
ci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9hZGRy
ZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVxdWVzdF9oYW5kbGVyLnBhdGggPSAn
L2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMgPSBNb2NrSFRUUE1lc3NhZ2UoKQor
CisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAgIGFzc2VydCByZXF1
ZXN0LnVybCA9PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RlbW8nCisgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocmVxdWVzdC51cmwsIHN0cikKKworCitkZWYgdGVzdF9yZXF1ZXN0X3VybF9mcm9tX2hv
c3RfaGVhZGVyKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2NrKCkKKyAgICByZXF1
ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVlc3RfaGFuZGxlci5z
ZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykKKyAgICByZXF1ZXN0
X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycyA9IE1v
Y2tIVFRQTWVzc2FnZSh7J2hvc3QnOiBbJ3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDEnXX0pCisKKyAg
ICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1ZXN0X2hhbmRsZXIpCisgICAgYXNzZXJ0IHJlcXVlc3Qu
dXJsID09ICdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMS9kZW1vJworICAgIGFzc2VydCBp
c2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rh
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMWVhOTljMDYwOWY1YmVkODU5NjUx
Mjg0ZWIzZGE4MGE0Y2RkZjczNy4uMzFhZjE1NThiMGNjNWMwNDY4NDNlMGU5NjU2OWRiNDJjNDY3
Y2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9zdGFzaC5weQpAQCAtNCw2ICs0LDcgQEAgaW1wb3J0IHRocmVhZGluZwogZnJvbSBtdWx0aXBy
b2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKK2Zy
b20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2
ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTU3LDcgKzU4LDggQEAgZGVmIHJ1bihwcm9jZXNzX3F1ZXVl
LCByZXF1ZXN0X2xvY2ssIHJlc3BvbnNlX2xvY2spOgogICAgIHByb2Nlc3NfcXVldWUucHV0KHRo
cmVhZF9xdWV1ZS5nZXQoKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IK
KyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0
aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBkZWYgdGVzdF9k
ZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRlbGF5cyBpbiBw
cm94aWVkIExvY2sgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0aApAQCAtOTYsNyArOTgs
OCBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBp
bnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3
aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRf
c3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBk
ZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRl
bGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVyZmVyZSB3aXRoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0Lmxv
ZwppbmRleCBlZjlkNmE4MGFhNmFjMTQyM2Y1NDg1YmIyNWJkMzM2OTc1ZDlhYjU3Li41ZjllYjZi
MzhiNjUxNDlmZGU3ZGFkMTliODA1NmYzY2M1YmYxMzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAgLTE2LDQgKzE2LDUg
QEAgTm9uZQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy90ZXN0X3JlcGxhY2VtZW50X3Rva2VuaXplci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93M2MtaW1wb3J0LmxvZwppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYxOWQ5MDZlNDVkOGQ3
OTAzM2MxLi5mYWFhZjY3ZTk4NThhMTA3ZGM4M2E5NTI4NWYyYjkzOTQ3ZmIwMTMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKQEAgLTE0LDcgKzE0
LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBOb25lCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9NQU5JRkVTVC5p
bgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvUkVBRE1FLm1kCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25m
aWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQppbmRleCBlMTFjYWUxMzdiOWM1MWQ4Njc3NDAw
MWVhZDcxOTM4ZmQ1NWMwNTU1Li43NzY2NTY1ZmU0ZmQxNzU1OThiOGI2Y2NlMGU0ZmY0YjQwZjEw
ZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2Nv
bmZpZy5weQpAQCAtNjksNiArNjksMzEgQEAgY2xhc3MgQ29uZmlnKE1hcHBpbmcpOgogICAgIGRl
ZiBhc19kaWN0KHNlbGYpOgogICAgICAgICByZXR1cm4ganNvbl90eXBlcyhzZWxmLl9fZGljdF9f
KQogCisgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGxpbWl0ZWQgaW4gc2l6ZSBzbyB3
ZSBuZWVkIHRvIHBydW5lIHRoZSBtb3N0IGVncmVnaW91cyBjb250cmlidXRvcnMKKyAgICAjIHRv
IHNpemUsIHRoZSBvcmlnaW4gcG9saWN5IHN1YmRvbWFpbnMuCisgICAgZGVmIGFzX2RpY3RfZm9y
X3dkX2Vudl92YXJpYWJsZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5hc19kaWN0KCkK
KworICAgICAgICBmb3Iga2V5IGluIFsKKyAgICAgICAgICAgICgic3ViZG9tYWlucyIsKSwKKyAg
ICAgICAgICAgICgiZG9tYWlucyIsICJhbHQiKSwKKyAgICAgICAgICAgICgiZG9tYWlucyIsICIi
KSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiYWx0IiksCisgICAgICAgICAgICAoImFs
bF9kb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJkb21haW5zX3NldCIsKSwKKyAgICAgICAg
ICAgICgiYWxsX2RvbWFpbnNfc2V0IiwpCisgICAgICAgIF06CisgICAgICAgICAgICB0YXJnZXQg
PSByZXN1bHQKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIGtleVs6LTFdOgorICAgICAgICAgICAg
ICAgIHRhcmdldCA9IHRhcmdldFtwYXJ0XQorICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXRba2V5
Wy0xXV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgorICAgICAgICAg
ICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIGl0ZXJpdGVtcyh2YWx1
ZSkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUgaWYgbm90IHguc3Rh
cnRzd2l0aCgib3AiKV0KKworICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogZGVmIGpzb25fdHlw
ZXMob2JqKToKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQppbmRleCBjYTUxMTgw
MDljZmM5YzQ3NjNmOTllMmE2Mjk2ZDc4NGE2NTM5MjE2Li5mZWExMjc3YjBkMWNiNWNhYzhjYTQ0
NWFiMDU5OTQ3NDEyNjY5YWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgY2dpCiBp
bXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0xNCw2ICsxMywxMSBAQCBmcm9t
IC5yZXF1ZXN0IGltcG9ydCBBdXRoZW50aWNhdGlvbgogZnJvbSAucmVzcG9uc2UgaW1wb3J0IE11
bHRpcGFydENvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKK3RyeToK
KyAgICBmcm9tIGh0bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZy
b20gY2dpIGltcG9ydCBlc2NhcGUKKwogX19hbGxfXyA9IFsiZmlsZV9oYW5kbGVyIiwgInB5dGhv
bl9zY3JpcHRfaGFuZGxlciIsCiAgICAgICAgICAgICJGdW5jdGlvbkhhbmRsZXIiLCAiaGFuZGxl
ciIsICJqc29uX2hhbmRsZXIiLAogICAgICAgICAgICAiYXNfaXNfaGFuZGxlciIsICJFcnJvckhh
bmRsZXIiLCAiQmFzaWNBdXRoSGFuZGxlciJdCkBAIC03Niw3ICs4MCw3IEBAIGNsYXNzIERpcmVj
dG9yeUhhbmRsZXIob2JqZWN0KToKIDx1bD4KICUoaXRlbXMpcwogPC91bD4KLSIiIiAlIHsicGF0
aCI6IGNnaS5lc2NhcGUodXJsX3BhdGgpLAorIiIiICUgeyJwYXRoIjogZXNjYXBlKHVybF9wYXRo
KSwKICAgICAgICAiaXRlbXMiOiAiXG4iLmpvaW4oc2VsZi5saXN0X2l0ZW1zKHVybF9wYXRoLCBw
YXRoKSl9ICAjIG5vcWE6IEUxMjIKIAogICAgIGRlZiBsaXN0X2l0ZW1zKHNlbGYsIGJhc2VfcGF0
aCwgcGF0aCk6CkBAIC05MiwxNSArOTYsMjkgQEAgY2xhc3MgRGlyZWN0b3J5SGFuZGxlcihvYmpl
Y3QpOgogICAgICAgICAgICAgbGluayA9IHVybGpvaW4oYmFzZV9wYXRoLCAiLi4iKQogICAgICAg
ICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iZGlyIj48YSBocmVmPSIlKGxpbmspcyI+JShuYW1l
KXM8L2E+PC9saT4iIiIgJQogICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1l
IjogIi4uIn0pCisgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgcHJldl9pdGVtID0gTm9uZQog
ICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSk6Ci0gICAgICAgICAg
ICBsaW5rID0gY2dpLmVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAgIGlmIHByZXZfaXRl
bSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgorICAgICAgICAgICAgICAgIGl0
ZW1zWy0xXVsxXSA9IGl0ZW0KKyAgICAgICAgICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChbaXRlbSwgTm9u
ZV0pCisgICAgICAgICAgICBwcmV2X2l0ZW0gPSBpdGVtCisgICAgICAgIGZvciBpdGVtLCBkb3Rf
aGVhZGVycyBpbiBpdGVtczoKKyAgICAgICAgICAgIGxpbmsgPSBlc2NhcGUocXVvdGUoaXRlbSkp
CisgICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAiIgorICAgICAgICAgICAgaWYgZG90
X2hlYWRlcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90X2hlYWRlcnNfbWFya3Vw
ID0gKCIiIiAoPGEgaHJlZj0iJShsaW5rKXMiPi5oZWFkZXJzPC9hPikiIiIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBlc2NhcGUocXVvdGUoZG90X2hl
YWRlcnMpKX0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRo
LCBpdGVtKSk6CiAgICAgICAgICAgICAgICAgbGluayArPSAiLyIKICAgICAgICAgICAgICAgICBj
bGFzc18gPSAiZGlyIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjbGFzc18g
PSAiZmlsZSIKLSAgICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9IiUoY2xhc3MpcyI+PGEg
aHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPjwvbGk+IiIiICUKLSAgICAgICAgICAgICAgICAg
ICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGNnaS5lc2NhcGUoaXRlbSksICJjbGFzcyI6IGNsYXNz
X30pCisgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNzKXMiPjxhIGhyZWY9
IiUobGluaylzIj4lKG5hbWUpczwvYT4lKGhlYWRlcnMpczwvbGk+IiIiICUKKyAgICAgICAgICAg
ICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGVzY2FwZShpdGVtKSwgImNsYXNzIjogY2xh
c3NfLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGRvdF9oZWFkZXJzX21hcmt1cH0p
CiAKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwgcmVzcG9uc2UpOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKaW5kZXggY2Vi
MzRjYzNmNGY5OTRlZDA0OTkxNWM3Nzg0ZjdjNjljNzEyYWJjYS4uYmJmMjVlNmZlMTExMmUxODFk
YTVhN2I2YTljNmVlMmI3NTYzYWJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBjZ2kgaW1wb3J0
IGVzY2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGltcG9ydCBiYXNlNjQKIGlt
cG9ydCBnemlwIGFzIGd6aXBfbW9kdWxlCkBAIC03LDEwICs2LDE1IEBAIGltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgdGltZQogaW1wb3J0IHV1aWQKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBT
dHJpbmdJTwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCiAKK3RyeToKKyAgICBmcm9tIGh0bWwgaW1wb3J0IGVz
Y2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKKwog
ZGVmIHJlc29sdmVfY29udGVudChyZXNwb25zZSk6CiAgICAgcmV0dXJuIGIiIi5qb2luKGl0ZW0g
Zm9yIGl0ZW0gaW4gcmVzcG9uc2UuaXRlcl9jb250ZW50KHJlYWRfZmlsZT1UcnVlKSkKIApAQCAt
MzE2LDYgKzMyMCw4IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUo
J2lzby04ODU5LTEnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1zLmZpcnN0KGtleSkK
ICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCkBAIC0zOTMs
OCArMzk5LDggQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAgICAgZGVmIHV1aWQocmVx
dWVzdCk6CiAgICAgICAgIHJldHVybiBzdHIodXVpZC51dWlkNCgpKQogCi0gICAgIyBNYWludGFp
biBhIHdoaXRlbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJpY3RlZCB0byB0aG9z
ZSB0aGF0Ci0gICAgIyBhcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgWzFdLiBUaGlzIGVu
c3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CisgICAgIyBNYWludGFpbiBhIGxpc3Qgb2Yg
c3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdGhhdCBhcmUKKyAgICAj
IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhpcyBlbnN1cmVzIHRoYXQgdGVzdCBh
dXRob3JzIGRvIG5vdAogICAgICMgdW5rbm93aW5nbHkgaW50cm9kdWNlIHBsYXRmb3JtLXNwZWNp
ZmljIHRlc3RzLgogICAgICMKICAgICAjIFsxXSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xp
YnJhcnkvaGFzaGxpYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3JlcXVlc3QucHkKaW5kZXggYTgwYmMwYzgzMDBhY2ZjZjc2NjUxMmI4OWVjZmVl
MzM4YmFjMjI5NS4uN2M0ZDAyZDZkZTZmMWEwYjBlY2NjMDVhYjAzMDRjZmZiYzEwZjk1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5w
eQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNnaQotZnJvbSBzaXgu
bW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNpeCBpbXBvcnQgQnl0
ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1zLCBQWTMKIGltcG9ydCB0ZW1w
ZmlsZQogCitmcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIGl0ZXJpdGVtcywg
UFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUKIGZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxzcGxpdAogCiBmcm9t
IC4gaW1wb3J0IHN0YXNoCi1mcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgorZnJvbSAu
dXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZW5jb2RlLCBpc29tb3JwaGlj
X2RlY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIApAQCAtMjE5LDIyICsyMTksMjMgQEAgY2xh
c3MgUmVxdWVzdChvYmplY3QpOgogICAgIE11bHRpRGljdCByZXByZXNlbnRpbmcgdGhlIHBhcmFt
ZXRlcnMgc3VwcGxpZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICBOb3RlIHRoYXQgdGhlc2UgbWF5
IGJlIHByZXNlbnQgb24gbm9uLUdFVCByZXF1ZXN0czsgdGhlIG5hbWUgaXMKICAgICBjaG9zZW4g
dG8gYmUgZmFtaWxpYXIgdG8gdXNlcnMgb2Ygb3RoZXIgc3lzdGVtcyBzdWNoIGFzIFBIUC4KKyAg
ICBCb3RoIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCiAKICAgICAuLiBhdHRy
aWJ1dGU6OiBQT1NUCiAKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0IGJv
ZHkgcGFyYW1ldGVycy4gTW9zdCBwYXJhbWV0ZXJzCiAgICAgYXJlIHByZXNlbnQgYXMgc3RyaW5n
IHZhbHVlcywgYnV0IGZpbGUgdXBsb2FkcyBoYXZlIGZpbGUtbGlrZQotICAgIHZhbHVlcy4KKyAg
ICB2YWx1ZXMuIEFsbCBzdHJpbmcgdmFsdWVzIChpbmNsdWRpbmcga2V5cykgaGF2ZSBiaW5hcnkg
dHlwZS4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IGNvb2tpZXMKIAotICAgIENvb2tpZXMgb2JqZWN0
IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVzdCB3aXRoIGEKKyAgICBB
IENvb2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVz
dCB3aXRoIGEKICAgICBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlLgogCiAgICAgLi4gYXR0cmli
dXRlOjogYXV0aAogCi0gICAgT2JqZWN0IHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHByb3Bl
cnRpZXMgcmVwcmVzZW50aW5nIGFueQotICAgIGNyZWRlbnRpYWxzIHN1cHBsaWVkIHVzaW5nIEhU
VFAgYXV0aGVudGljYXRpb24uCisgICAgQW4gaW5zdGFuY2Ugb2YgQXV0aGVudGljYXRpb24gd2l0
aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcworICAgIHJlcHJlc2VudGluZyBhbnkg
Y3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4KIAogICAgIC4u
IGF0dHJpYnV0ZTo6IHNlcnZlcgogCkBAIC0yNDgsOCArMjQ5LDEyIEBAIGNsYXNzIFJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID0gcmVxdWVzdF9oYW5kbGVy
LnByb3RvY29sX3ZlcnNpb24KICAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1ZXN0X2hhbmRsZXIu
Y29tbWFuZAogCisgICAgICAgICMgS2V5cyBhbmQgdmFsdWVzIGluIHJhdyBoZWFkZXJzIGFyZSBu
YXRpdmUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKICAgICAgICAgc2NoZW1l
ID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUKLSAgICAgICAgaG9zdCA9IHJlcXVlc3Rf
aGFuZGxlci5oZWFkZXJzLmdldCgiSG9zdCIpCisgICAgICAgIGhvc3QgPSBzZWxmLnJhd19oZWFk
ZXJzLmdldCgiSG9zdCIpCiAgICAgICAgIHBvcnQgPSByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNl
cnZlcl9hZGRyZXNzWzFdCiAKICAgICAgICAgaWYgaG9zdCBpcyBOb25lOgpAQCAtMjYyLDIyICsy
NjcsMTcgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLnVybF9iYXNlID0g
Ii8iCiAKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3BhdGguc3RhcnRzd2l0aChzY2hlbWUgKyAi
Oi8vIik6Ci0gICAgICAgICAgICBzZWxmLnVybCA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAg
ICAgICAgICBzZWxmLnVybCA9IHNlbGYucmVxdWVzdF9wYXRoCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnVybCA9ICIlczovLyVzOiVzJXMiICUgKHNjaGVtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXF1ZXN0X3BhdGgpCisgICAgICAgICAgICAjIFRPRE8oIzIzMzYyKTogU3RvcCB1
c2luZyBuYXRpdmUgc3RyaW5ncyBmb3IgVVJMcy4KKyAgICAgICAgICAgIHNlbGYudXJsID0gIiVz
Oi8vJXM6JXMlcyIgJSAoCisgICAgICAgICAgICAgICAgc2NoZW1lLCBob3N0LCBwb3J0LCBzZWxm
LnJlcXVlc3RfcGF0aCkKICAgICAgICAgc2VsZi51cmxfcGFydHMgPSB1cmxzcGxpdChzZWxmLnVy
bCkKIAotICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMK
LQogICAgICAgICBzZWxmLnJlcXVlc3RfbGluZSA9IHJlcXVlc3RfaGFuZGxlci5yYXdfcmVxdWVz
dGxpbmUKIAotICAgICAgICBzZWxmLl9oZWFkZXJzID0gTm9uZQotCiAgICAgICAgIHNlbGYucmF3
X2lucHV0ID0gSW5wdXRGaWxlKHJlcXVlc3RfaGFuZGxlci5yZmlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3Ro
IiwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5yYXdf
aGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiwgMCkpKQogCiAgICAgICAgIHNlbGYuX2JvZHkg
PSBOb25lCiAKQEAgLTI5NywxOSArMjk3LDI0IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAg
ICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5xdWVyeSwga2VlcF9i
bGFua192YWx1ZXM9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX0dFVCA9IE11bHRpRGljdCgpCiAg
ICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXM6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fR0VULmFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX0dFVC5hZGQoaXNv
bW9ycGhpY19lbmNvZGUoa2V5KSwgaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fR0VUCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgUE9TVChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fUE9TVCBpcyBOb25lOgotICAgICAgICAgICAgI1dvcmsgb3V0IHRoZSBw
b3N0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICMgV29yayBvdXQgdGhlIHBvc3QgcGFyYW1ldGVy
cwogICAgICAgICAgICAgcG9zID0gc2VsZi5yYXdfaW5wdXQudGVsbCgpCiAgICAgICAgICAgICBz
ZWxmLnJhd19pbnB1dC5zZWVrKDApCi0gICAgICAgICAgICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2Uo
ZnA9c2VsZi5yYXdfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdfaGVhZGVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQorICAgICAgICAgICAg
a3dhcmdzID0geworICAgICAgICAgICAgICAgICJmcCI6IHNlbGYucmF3X2lucHV0LAorICAgICAg
ICAgICAgICAgICJlbnZpcm9uIjogeyJSRVFVRVNUX01FVEhPRCI6IHNlbGYubWV0aG9kfSwKKyAg
ICAgICAgICAgICAgICAiaGVhZGVycyI6IHNlbGYucmF3X2hlYWRlcnMsCisgICAgICAgICAgICAg
ICAgImtlZXBfYmxhbmtfdmFsdWVzIjogVHJ1ZSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIFBZMzoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0gPSAiaXNvLTg4NTkt
MSIKKyAgICAgICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZSgqKmt3YXJncykKICAgICAgICAg
ICAgIHNlbGYuX1BPU1QgPSBNdWx0aURpY3QuZnJvbV9maWVsZF9zdG9yYWdlKGZzKQogICAgICAg
ICAgICAgc2VsZi5yYXdfaW5wdXQuc2Vlayhwb3MpCiAgICAgICAgIHJldHVybiBzZWxmLl9QT1NU
CkBAIC0zMTcsMTQgKzMyMiwxMiBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIGNvb2tpZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2Nvb2tpZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQorICAgICAgICAgICAgcGFy
c2VyID0gQmluYXJ5Q29va2llUGFyc2VyKCkKICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0g
c2VsZi5oZWFkZXJzLmdldCgiY29va2llIiwgYiIiKQotICAgICAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0gY29va2llX2hlYWRlcnMuZGVjb2RlKCJpc28t
ODg1OS0xIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAg
ICAgICAgY29va2llcyA9IENvb2tpZXMoKQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
aXRlcml0ZW1zKHBhcnNlcik6Ci0gICAgICAgICAgICAgICAgY29va2llc1trZXldID0gQ29va2ll
VmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgY29va2llc1tpc29tb3JwaGljX2VuY29kZShr
ZXkpXSA9IENvb2tpZVZhbHVlKHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IGNv
b2tpZXMKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvb2tpZXMKIApAQCAtMzU3LDI0ICszNjAsNiBA
QCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVzdCk6CiAgICAgICAgIHN1cGVyKEgyUmVxdWVzdCwgc2Vs
ZikuX19pbml0X18ocmVxdWVzdF9oYW5kbGVyKQogCiAKLWRlZiBfbWF5YmVfZW5jb2RlKHMpOgot
ICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcg
aXNvLTg4NTktMS4KLQotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2Ag
aW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50
IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShz
LCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzCi0KLSAgICAjIFB5dGhvbiAzIGFzc3Vt
ZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNpbmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4
dAotICAgICMgd2l0aCBub24gQVNDSUkgY2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUg
dGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5
dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0
dHAvY2xpZW50LnB5I0wyMTMKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Ci0gICAg
ICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCi0KLSAgICByYWlzZSBUeXBlRXJyb3Io
IlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVxdWVzdEhlYWRlcnM6ICVyIiAlIHMpCi0KLQogY2xhc3Mg
UmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiUmVhZC1vbmx5IGRpY3Rpb25hcnktbGlrZSBB
UEkgZm9yIGFjY2Vzc2luZyByZXF1ZXN0IGhlYWRlcnMuCiAKQEAgLTM4NCw3ICszNjksNyBAQCBj
bGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVhZGVyIGluIGl0ZW1zLmtleXMoKToKLSAgICAgICAg
ICAgIGtleSA9IF9tYXliZV9lbmNvZGUoaGVhZGVyKS5sb3dlcigpCisgICAgICAgICAgICBrZXkg
PSBpc29tb3JwaGljX2VuY29kZShoZWFkZXIpLmxvd2VyKCkKICAgICAgICAgICAgICMgZ2V0IGFs
bCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICAgICAgdmFsdWVzID0gaXRlbXMu
Z2V0YWxsbWF0Y2hpbmdoZWFkZXJzKGhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbih2YWx1ZXMp
ID4gMToKQEAgLTM5NCwyMiArMzc5LDIxIEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgog
ICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAg
ICMgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzIHJldHVybnMgcmF3IGhlYWRlciBsaW5lcywgc28KICAg
ICAgICAgICAgICAgICAgICAgIyBzcGxpdCB0byBnZXQgbmFtZSwgdmFsdWUKLSAgICAgICAgICAg
ICAgICAgICAgbXVsdGlwbGVzLmFwcGVuZChfbWF5YmVfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzon
LCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKGlz
b21vcnBoaWNfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzonLCAxKVsxXS5zdHJpcCgpKQogICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBtdWx0aXBsZXMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaGVhZGVycyA9IFtfbWF5YmVfZW5jb2RlKGl0ZW1zW2hlYWRlcl0pXQorICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBbaXNvbW9ycGhpY19lbmNvZGUoaXRlbXNbaGVhZGVyXSldCiAg
ICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgaGVhZGVycykKIAotCiAgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIkdldCBhbGwgaGVhZGVycyBv
ZiBhIGNlcnRhaW4gKGNhc2UtaW5zZW5zaXRpdmUpIG5hbWUuIElmIHRoZXJlIGlzCiAgICAgICAg
IG1vcmUgdGhhbiBvbmUsIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGNvbW1hIHNlcGFyYXRlZCIi
IgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0gaXNvbW9y
cGhpY19lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYs
IGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlc1swXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIsICIu
am9pbih2YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gYiIsICIuam9pbih2YWx1ZXMpCiAKICAg
ICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBFeGNl
cHRpb24KQEAgLTQzMCw3ICs0MTQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAg
ICBkZWYgZ2V0X2xpc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgogICAgICAgICAiIiJH
ZXQgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgZmllbGQgbmFtZSBhcwog
ICAgICAgICBhIGxpc3QiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAg
ICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0MCw3ICs0MjQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhk
aWN0KToKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxm
LCBrZXkpOgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0g
aXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICByZXR1cm4gZGljdC5fX2NvbnRhaW5zX18o
c2VsZiwga2V5Lmxvd2VyKCkpCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgpAQCAtNDUxLDYg
KzQzNSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAgICBmb3IgaXRlbSBp
biBzZWxmOgogICAgICAgICAgICAgeWllbGQgc2VsZltpdGVtXQogCisKIGNsYXNzIENvb2tpZVZh
bHVlKG9iamVjdCk6CiAgICAgIiIiUmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KIApAQCAtNTI0
LDkgKzUwOSw4IEBAIGNsYXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAKIAogY2xhc3MgTXVsdGlE
aWN0KGRpY3QpOgotICAgICIiIkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRzIG11bHRpcGxlIHZh
bHVlcyBmb3IgZWFjaAotICAgIGtleSIiIgotICAgICNUT0RPOiB0aGlzIHNob3VsZCBwZXJoYXBz
IGFsc28gb3JkZXIgdGhlIGtleXMKKyAgICAiIiJEaWN0aW9uYXJ5IHR5cGUgdGhhdCBob2xkcyBt
dWx0aXBsZSB2YWx1ZXMgZm9yIGVhY2gga2V5IiIiCisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBw
ZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAg
ICAgIHBhc3MKIApAQCAtNTQxLDcgKzUyNSw2IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAog
ICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgdGhlIGZpcnN0
IHZhbHVlIHdpdGggYSBnaXZlbiBrZXkiIiIKLSAgICAgICAgI1RPRE86IHNob3VsZCB0aGlzIGlu
c3RlYWQgYmUgdGhlIGxhc3QgdmFsdWU/CiAgICAgICAgIHJldHVybiBzZWxmLmZpcnN0KGtleSkK
IAogICAgIGRlZiBmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlzc2luZyk6CkBAIC01ODQsNiAr
NTY3LDEwIEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX2ZpZWxkX3N0b3JhZ2UoY2xzLCBmcyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBh
IE11bHRpRGljdCBmcm9tIGEgY2dpLkZpZWxkU3RvcmFnZQorCisgICAgICAgIE5vdGUgdGhhdCBh
bGwga2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5ncy4KKyAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYgPSBjbHMoKQogICAgICAgICBpZiBmcy5saXN0IGlzIE5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZgpAQCAtNTk0LDEzICs1ODEsNDYgQEAgY2xhc3MgTXVsdGlEaWN0KGRpY3Qp
OgogCiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAgIGlm
IG5vdCB2YWx1ZS5maWxlbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52
YWx1ZQotICAgICAgICAgICAgICAgIHNlbGYuYWRkKGtleSwgdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUudmFsdWUpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IGNnaS5GaWVsZFN0b3JhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hZGQoaXNvbW9ycGhpY19l
bmNvZGUoa2V5KSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBzZWxmCiAKIAorY2xhc3MgQmluYXJ5
Q29va2llUGFyc2VyKEJhc2VDb29raWUpOgorICAgICIiIkEgc3ViY2xhc3Mgb2YgQmFzZUNvb2tp
ZSB0aGF0IHJldHVybnMgdmFsdWVzIGluIGJpbmFyeSBzdHJpbmdzCisKKyAgICBUaGlzIGlzIG5v
dCBpbnRlbmRlZCB0byBzdG9yZSB0aGUgY29va2llczsgdXNlIENvb2tpZXMgaW5zdGVhZC4KKyAg
ICAiIiIKKyAgICBkZWYgdmFsdWVfZGVjb2RlKHNlbGYsIHZhbCk6CisgICAgICAgICIiIkRlY29k
ZSB2YWx1ZSBmcm9tIG5ldHdvcmsgdG8gKHJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlKS4KKworICAg
ICAgICBPdmVycmlkZSBCYXNlQ29va2llLnZhbHVlX2RlY29kZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZSh2YWwpLCB2YWwKKworICAgIGRlZiB2YWx1ZV9l
bmNvZGUoc2VsZiwgdmFsKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmlu
YXJ5Q29va2llUGFyc2VyIGlzIG5vdCBmb3Igc2V0dGluZyBjb29raWVzJykKKworICAgIGRlZiBs
b2FkKHNlbGYsIHJhd2RhdGEpOgorICAgICAgICAiIiJMb2FkIGNvb2tpZXMgZnJvbSBhIGJpbmFy
eSBzdHJpbmcuCisKKyAgICAgICAgVGhpcyBvdmVycmlkZXMgYW5kIGNhbGxzIEJhc2VDb29raWUu
bG9hZC4gVW5saWtlIEJhc2VDb29raWUubG9hZCwgaXQKKyAgICAgICAgZG9lcyBub3QgYWNjZXB0
IGRpY3Rpb25hcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJh
d2RhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBpZiBQWTM6CisgICAgICAgICAgICAjIEJhc2VD
b29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZywgd2hpY2ggaW4gUHl0aG9uIDMgaXMg
dGV4dC4KKyAgICAgICAgICAgIHJhd2RhdGEgPSBpc29tb3JwaGljX2RlY29kZShyYXdkYXRhKQor
ICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQocmF3ZGF0YSkKKwor
CiBjbGFzcyBDb29raWVzKE11bHRpRGljdCk6Ci0gICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2Vk
IGZvciBDb29raWUgdmFsdWVzIiIiCisgICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2VkIGZvciBD
b29raWUgdmFsdWVzCisKKyAgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFyeSBzdHJpbmdzLgor
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQppbmRl
eCAzYTYwYzJiYWJiMzlkOGQ3Nzk5OTAyMmE3ZmI0ZDE4NGNiMDE5YWE4Li5iNmYyNzQ0NzQ1MTk4
NDZkMjk4YTI5ZGEwYjNkYjM5NjE5OTliMjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3Bv
bnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRldGltZSwgdGltZWRlbHRhCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGpzb24KLWlt
cG9ydCB1dWlkCiBpbXBvcnQgc29ja2V0Ci1mcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNl
X2NvZGVzLCBoMl9oZWFkZXJzCi1mcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20g
aW8gaW1wb3J0IEJ5dGVzSU8KK2ltcG9ydCB1dWlkCiAKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKLWZyb20gaHlw
ZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlv
bkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKK2Zyb20gaHlwZXJm
cmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlvbkZy
YW1lCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBl
cywgaXRlcnZhbHVlcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorCitmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVz
LCBoMl9oZWFkZXJzCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKK2Zyb20gLnV0aWxz
IGltcG9ydCBpc29tb3JwaGljX2RlY29kZSwgaXNvbW9ycGhpY19lbmNvZGUKIAogbWlzc2luZyA9
IG9iamVjdCgpCiAKKwogY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAiIiJPYmplY3QgcmVw
cmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBhIEhUVFAgcmVxdWVzdAogCkBAIC03OSw3ICs4Miw2
IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVhZGVycyA9IFJlc3Bv
bnNlSGVhZGVycygpCiAgICAgICAgIHNlbGYuY29udGVudCA9IFtdCiAKLQogICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXMKQEAg
LTk5LDggKzEwMSw4IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgICIiIlNldCBh
IGNvb2tpZSB0byBiZSBzZW50IHdpdGggYSBTZXQtQ29va2llIGhlYWRlciBpbiB0aGUKICAgICAg
ICAgcmVzcG9uc2UKIAotICAgICAgICA6cGFyYW0gbmFtZTogU3RyaW5nIG5hbWUgb2YgdGhlIGNv
b2tpZQotICAgICAgICA6cGFyYW0gdmFsdWU6IFN0cmluZyB2YWx1ZSBvZiB0aGUgY29va2llCisg
ICAgICAgIDpwYXJhbSBuYW1lOiBuYW1lIG9mIHRoZSBjb29raWUgKGEgYmluYXJ5IHN0cmluZykK
KyAgICAgICAgOnBhcmFtIHZhbHVlOiB2YWx1ZSBvZiB0aGUgY29va2llIChhIGJpbmFyeSBzdHJp
bmcsIG9yIE5vbmUpCiAgICAgICAgIDpwYXJhbSBtYXhfYWdlOiBkYXRldGltZS50aW1lZGVsdGEg
aW50IHJlcHJlc2VudGluZyB0aGUgdGltZSAoaW4gc2Vjb25kcykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudGlsIHRoZSBjb29raWUgZXhwaXJlcwogICAgICAgICA6cGFyYW0gcGF0aDogU3Ry
aW5nIHBhdGggdG8gd2hpY2ggdGhlIGNvb2tpZSBhcHBsaWVzCkBAIC0xMTMsMTQgKzExNSwyMCBA
QCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBv
ciBpbnRlcnZhbCBmcm9tIG5vdyB3aGVuIHRoZSBjb29raWUgZXhwaXJlcwogCiAgICAgICAgICIi
IgorICAgICAgICAjIFRPRE8oUHl0aG9uIDMpOiBDb252ZXJ0IG90aGVyIHBhcmFtZXRlcnMgKGUu
Zy4gcGF0aCkgdG8gYnl0ZXMsIHRvby4KKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAg
ICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAgICBtYXhfYWdlID0gMAorICAgICAgICAgICAg
ZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQorCisgICAgICAgIGlmIFBZMzoKKyAgICAgICAg
ICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICAgICAgdmFsdWUgPSBp
c29tb3JwaGljX2RlY29kZSh2YWx1ZSkKKwogICAgICAgICBkYXlzID0ge2krMTogbmFtZSBmb3Ig
aSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIsICJtYXkiLCAianVu
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
anVsIiwgImF1ZyIsICJzZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJvY3QiLCAibm92IiwgImRlYyJdKX0KLSAgICAgICAgaWYgdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgIG1heF9hZ2UgPSAw
Ci0gICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAKICAgICAgICAgaWYg
aXNpbnN0YW5jZShleHBpcmVzLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgZXhwaXJlcyA9IGRh
dGV0aW1lLnV0Y25vdygpICsgZXhwaXJlcwpAQCAtMTU0LDExICsxNjIsMTQgQEAgY2xhc3MgUmVz
cG9uc2Uob2JqZWN0KToKIAogICAgIGRlZiB1bnNldF9jb29raWUoc2VsZiwgbmFtZSk6CiAgICAg
ICAgICIiIlJlbW92ZSBhIGNvb2tpZSBmcm9tIHRob3NlIHRoYXQgYXJlIGJlaW5nIHNlbnQgd2l0
aCB0aGUgcmVzcG9uc2UiIiIKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgbmFtZSA9IGlz
b21vcnBoaWNfZGVjb2RlKG5hbWUpCiAgICAgICAgIGNvb2tpZXMgPSBzZWxmLmhlYWRlcnMuZ2V0
KCJTZXQtQ29va2llIikKICAgICAgICAgcGFyc2VyID0gQmFzZUNvb2tpZSgpCiAgICAgICAgIGZv
ciBjb29raWUgaW4gY29va2llczoKICAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAg
ICBjb29raWUgPSBjb29raWUuZGVjb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgICAgICAj
IEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICAgICAgICAg
Y29va2llID0gaXNvbW9ycGhpY19kZWNvZGUoY29va2llKQogICAgICAgICAgICAgcGFyc2VyLmxv
YWQoY29va2llKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMoKToKQEAgLTIyMyw5
ICsyMzQsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi53cml0ZV9z
dGF0dXNfaGVhZGVycygpCiAgICAgICAgIHNlbGYud3JpdGVfY29udGVudCgpCiAKLSAgICBkZWYg
c2V0X2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9IiIpOgotICAgICAgICAiIiJTZXQgdGhlIHJl
c3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCBib2R5IHRvIGluZGljYXRlIGFuCi0gICAgICAgIGVy
cm9yIiIiCisgICAgZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPXUiIik6CisgICAg
ICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIHJldHVybiBhIEpTT04g
ZXJyb3Igb2JqZWN0OgorCisgICAgICAgIHsiZXJyb3IiOiB7ImNvZGUiOiBjb2RlLCAibWVzc2Fn
ZSI6IG1lc3NhZ2V9fQorICAgICAgICBjb2RlIGlzIGFuIGludCAoSFRUUCBzdGF0dXMgY29kZSks
IGFuZCBtZXNzYWdlIGlzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICIiIgogICAgICAgICBlcnIg
PSB7ImNvZGUiOiBjb2RlLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiBtZXNzYWdlfQogICAg
ICAgICBkYXRhID0ganNvbi5kdW1wcyh7ImVycm9yIjogZXJyfSkKQEAgLTI5NywyNCArMzExLDEw
IEBAIGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKIAogCiBkZWYgX21heWJlX2VuY29kZShz
KToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJpbmFyeSBkYXRhIHVz
aW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhvbiAyIGFuZCBgYnl0
ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAgIGlmIHRoZSBhcmd1
bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFu
Y2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAgIyBQeXRob24gMyBh
c3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNoIHdpbGwgZ2FyYmxl
IHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRyeSB0byBlbmNvZGUg
dGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFkMDMyZmI4L0xp
Yi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgot
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCisgICAgIiIiRW5jb2RlIGEg
c3RyaW5nIG9yIGFuIGludCBpbnRvIGJpbmFyeSBkYXRhIHVzaW5nIGlzb21vcnBoaWNfZW5jb2Rl
KCkuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShzLCBpbnRlZ2VyX3R5cGVzKToKICAgICAgICAgcmV0
dXJuIGIiJWkiICUgKHMsKQotCi0gICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVkIHZhbHVl
IGluIFJlc3BvbnNlSGVhZGVyczogJXIiICUgcykKKyAgICByZXR1cm4gaXNvbW9ycGhpY19lbmNv
ZGUocykKIAogCiBjbGFzcyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKaW5kZXggYzAzNzczMmE2
YmFlZjMxZDU4YjNkZmY5MjdiMDc0ZGZjZmFiYjRmZi4uYzI0OThjNGVlMWU4ZjQ1ZGU2MDRmNzEz
OTRjM2Q2ZmVlZjgyYWVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTY0LDEyICs2NCw2IEBAIGhhbmRsZXIgcmV0dXJucywg
b3IgZm9yIGRpcmVjdGx5IHdyaXRpbmcgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAiIiIKIAogCi1F
RElUX0hPU1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1
YmRvbWFpbnMgIgotICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8gYSBsb29wYmFjayBk
ZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCi0gICAg
ICAgICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQotCi0KIGNsYXNzIFJlcXVlc3RSZXdy
aXRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6CiAgICAgICAgICIi
Ik9iamVjdCBmb3IgcmV3cml0aW5nIHRoZSByZXF1ZXN0IHBhdGguCkBAIC02NzYsNyArNjcwLDgg
QEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAgIF9ob3N0LCBzZWxm
LnBvcnQgPSBzZWxmLmh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0
YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRfSE9TVFNfSEVMUCkpCisgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyIG9uIHBv
cnQgJXM7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBzb21ldGhpbmcg
YWxyZWFkeSB1c2luZyB0aGF0IHBvcnQ/IiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYsIGJsb2NrPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
c3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQppbmRl
eCBhZWExYzczODBiMTc5Y2VkMTM2NmI2NjE3MDU3NTc4YjM1ZDllMTRiLi42NGY2ZDVmYjJkYjI3
OTU4ZjMzZGQzNmI1N2I3YzE3NGRmMGJkN2U5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL29wZW5zc2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CkBAIC00
MDIsNiArNDAyLDggQEAgY2xhc3MgT3BlblNTTEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICBk
ZWYgX2dlbmVyYXRlX2hvc3RfY2VydChzZWxmLCBob3N0cyk6CiAgICAgICAgIGhvc3QgPSBob3N0
c1swXQorICAgICAgICBpZiBub3Qgc2VsZi5mb3JjZV9yZWdlbmVyYXRlOgorICAgICAgICAgICAg
c2VsZi5fbG9hZF9jYV9jZXJ0KCkKICAgICAgICAgaWYgc2VsZi5fY2Ffa2V5X3BhdGggaXMgTm9u
ZToKICAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKGhvc3RzKQogICAgICAgICBjYV9rZXlf
cGF0aCA9IHNlbGYuX2NhX2tleV9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQppbmRleCA4YjZmZDM0ZjAyYzBlOWI3MDczZDBjOTQwMTE3
MDdlYWE0ZTVhMWYxLi42YjM1MTg0NzQ5MWJmZWUxZjhlMTdhNDIxMjdjODhiZTk3YTYyOTIzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkK
QEAgLTQsNyArNCw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcK
IGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNl
TWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCitmcm9tIHNpeCBp
bXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQorCitmcm9tIC51dGlscyBpbXBvcnQgaXNvbW9y
cGhpY19lbmNvZGUKIAogCiBjbGFzcyBTZXJ2ZXJEaWN0TWFuYWdlcihCYXNlTWFuYWdlcik6CkBA
IC0xNDUsOSArMTQ3LDEyIEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgIGlmIHBhdGgg
aXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzZWxmLmRlZmF1bHRfcGF0aAogICAgICAgICAj
IFRoaXMga2V5IGZvcm1hdCBpcyByZXF1aXJlZCB0byBzdXBwb3J0IHVzaW5nIHRoZSBwYXRoLiBT
aW5jZSB0aGUgZGF0YQotICAgICAgICAjIHBhc3NlZCBpbnRvIHRoZSBzdGFzaCBjYW4gYmUgYSBE
aWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0IGNoYW5nZXMKLSAgICAgICAgIyB3aGVuIHdy
aXRpbmcgdG8gYSBzdWJkaWN0LgotICAgICAgICByZXR1cm4gKHN0cihwYXRoKSwgc3RyKHV1aWQu
VVVJRChrZXkpKSkKKyAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2ggY2FuIGJlIGEgRGlj
dFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdAorICAgICAgICAjIGNoYW5nZXMgd2hlbiB3cml0
aW5nIHRvIGEgc3ViZGljdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBl
KToKKyAgICAgICAgICAgICMgVVVJRHMgYXJlIHdpdGhpbiB0aGUgQVNDSUkgY2hhcnNldC4KKyAg
ICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgcmV0dXJuIChpc29t
b3JwaGljX2VuY29kZShwYXRoKSwgdXVpZC5VVUlEKGtleSkuYnl0ZXMpCiAKICAgICBkZWYgcHV0
KHNlbGYsIGtleSwgdmFsdWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIlBsYWNlIGEgdmFsdWUg
aW4gdGhlIHNoYXJlZCBzdGFzaC4KQEAgLTE2Miw3ICsxNjcsNyBAQCBjbGFzcyBTdGFzaChvYmpl
Y3QpOgogICAgICAgICBpZiBpbnRlcm5hbF9rZXkgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAg
cmFpc2UgU3Rhc2hFcnJvcigiVHJpZWQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIHNoYXJlZCBzdGFz
aCB2YWx1ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5ICVzIChvbGQg
dmFsdWUgd2FzICVzLCBuZXcgdmFsdWUgaXMgJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYuZGF0YVtzdHIoaW50ZXJuYWxfa2V5KV0sIHZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tleSwgc2VsZi5kYXRh
W2ludGVybmFsX2tleV0sIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
ZGF0YVtpbnRlcm5hbF9rZXldID0gdmFsdWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGls
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggNjRiMDhhMjdhYThiMzNkNGNlYTg2Nzdi
MzBkMzMwOTZjYWUyMTJkNS4uYjAwNWI0MTdkNzQzZjIwZjA2NWMxOTVlNzQzZDhhYmNmYjA0YWRm
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxz
LnB5CkBAIC0xLDYgKzEsNDUgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIAorZnJvbSBz
aXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKKworCitkZWYgaXNvbW9ycGhpY19kZWNv
ZGUocyk6CisgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBhIHRleHQgc3RyaW5n
IHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGB1bmljb2RlYCBpbiBQeXRob24gMiBh
bmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCisgICAgbm8tb3AgaWYgdGhl
IGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBi
ZWNhdXNlCisgICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29kZSBwb2ludHMgcmFu
Z2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCisgICAgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0
aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuCisgICAg
YmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3aXRob3V0IGFueSBl
cnJvcnMgb3IgZGF0YQorICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBpc28tODg1OS0xIChv
ciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJm
YjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMs
IHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJp
bmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCJpc28tODg1OS0xIikKKworICAg
IHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtl
KTogJXIiICUgcykKKworCitkZWYgaXNvbW9ycGhpY19lbmNvZGUocyk6CisgICAgIiIiRW5jb2Rl
cyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgor
CisgICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4g
VGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKKyAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMg
YSBiaW5hcnkgdHlwZS4gVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgb2YKKyAgICBpc29tb3JwaGlj
X2RlY29kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAg
ICAgICAgcmV0dXJuIHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAg
ICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKworICAgIHJhaXNlIFR5cGVFcnJvcigi
VW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtlKTogJXIiICUgcykKKworCiBk
ZWYgaW52ZXJ0X2RpY3QoZGljdCk6CiAgICAgcnYgPSB7fQogICAgIGZvciBrZXksIHZhbHVlcyBp
biBkaWN0Lml0ZW1zKCk6CkBAIC0yNSw2ICs2NCw3IEBAIGRlZiBfb3Blbl9zb2NrZXQoaG9zdCwg
cG9ydCk6CiAgICAgc29jay5saXN0ZW4oNSkKICAgICByZXR1cm4gc29jawogCisKIGRlZiBpc19i
YWRfcG9ydChwb3J0KToKICAgICAiIiIKICAgICBCYWQgcG9ydCBhcyBwZXIgaHR0cHM6Ly9mZXRj
aC5zcGVjLndoYXR3Zy5vcmcvI3BvcnQtYmxvY2tpbmcKQEAgLTk5LDYgKzEzOSw3IEBAIGRlZiBp
c19iYWRfcG9ydChwb3J0KToKICAgICAgICAgNjY5NywgICMgaXJjK3RscwogICAgIF0KIAorCiBk
ZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgaG9zdCA9IGhvc3Qgb3IgJzEyNy4wLjAuMScKICAg
ICBwb3J0ID0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBpbGUuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVj
dG9yL2NvbXBpbGUuYW55LmpzCmluZGV4IDZjNDEyMzk0M2U3NzVmNDZlODU0YjJjMDcyNThhN2Qw
OGM1Y2Y2OTIuLmU5NGNlMTE3MTczNjlmYjY1ZWYwNGM2ZWM2YTEzZGExOTI4OTMwNzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5h
bnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNzZXJ0X01vZHVs
ZShtb2R1bGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS1iYWQtaW1wb3J0
cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCmluZGV4
IDM3MDcyNDM0MjA4YTU4ODE5YTBhNDFmYWE2YTE5MTA3MDRjMTA4NDUuLjMwMjUyYmQ2ZWViM2Fi
OTcyODYzMzFhYTc2OTY4MjI1ZGFkNWE1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50
aWF0ZS1iYWQtaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1p
bXBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0
PS93YXNtL2pzYXBpL2JhZC1pbXBvcnRzLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0
YW50aWF0ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUuYW55LmpzCmluZGV4IDAyMThk
ZTJiNDUyOTJjMjNlOGZjYzcyMGRiZjhjMmM0YTVjOWI2OTMuLjgxNTJmM2E1NmYzZjQzOTk5NzY1
YzM0OWU0ODhkZGIzMTM0NDIxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUt
YnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL211bHRpLXZhbHVl
LmFueS5qcwppbmRleCAyYzUzZTM2MTFlMDQ0YzhiYTQ0YTVjMDQzNmQ0NDA5YmM5ZjFhZjQyLi40
YjA2ZDFkYTNjNDliOTM0MDZlOTllY2IzZTZhNzJjYTc2YzlkMWJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3Ry
dWN0b3IvbXVsdGktdmFsdWUuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5hbnku
anMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNt
L2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
Y29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCmluZGV4IGE1MjNhY2M3OTI1YzllZjc2NDZkMjk2
YTc4YmY5ODMxZWRhODZkNzEuLjhiNGY0NTgyYWIyOTg3NzMyZDQwNDk5NDg5OWU5YTc3NjYyZTJh
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9y
L3ZhbGlkYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlN
b2R1bGVCaW5hcnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwv
Y29uc3RydWN0b3IuYW55LmpzCmluZGV4IDI3MDE0OWVjMTQ0MzA0NWU0MTM0ZWViODA0MDM2NTFh
M2QwYTEyZmYuLmIwMDhlZjMwMTYwMWViNGU0YTI1NTU3ZWZhZjFlYzEzNWNlZTEwYjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2Fz
bS9qc2FwaS9hc3NlcnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9HbG9iYWwoYWN0dWFsLCBl
eHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3Ry
aW5nLmFueS5qcwppbmRleCA1ZjY0ZDcyZGU5ZDlkZjRhOTllNDgyY2RlZDVhMzBhYzFjOGEzNDNj
Li4zNTljNDI3M2I1YmQ3ODY3YWNkYTQ0ZmM0NmE2ZGRjMDBhY2M5NzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xv
YmFsL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCBhcmd1bWVudCA9
IHsgInZhbHVlIjogImkzMiIgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCmluZGV4IDY5ZjBlNDYzNzlmZmQyMGEzYjli
ZmIxOTA0ODczNzZkNjE2ZDkxNmUuLjQzZDg0NzRhMjVkMTgyZDc0MjI2NTRmNjE3NjliZjg3ZDNh
YmEyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92
YWx1ZS1nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3No
ZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRl
c3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1
ZU9mLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKaW5kZXggMGQ0ZGU5M2E2YmQyMjlmOGQ5
ZmFiNzk0MWIyNGExOTQ0ZGM2YWE3OC4uMDY5NWE1YTYxZmJjNmUyNDUwMTlhN2JmNDI4MTBjYjg0
YTBkZmEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1ZU9mLmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVl
T2YuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAidmFsdWUiOiAiaTMyIiB9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1i
YWQtaW1wb3J0cy5hbnkuanMKaW5kZXggZTg4ZDAyYjY0OTY4NGIwZDdjZWVjYjBkMGEzZDFlODc1
ZGQyMWM0OS4uZTRhNWFiYjhlYjIxNjlmYmNlMTdiNjBkYTI3MzEyYmE5NGEwYjlkMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2Uv
Y29uc3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTog
Z2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpz
c2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpz
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYmFkLWltcG9ydHMuanMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2luc3RhbmNlL2NvbnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9y
LWNhY2hpbmcuYW55LmpzCmluZGV4IDY5NWIwNzhhMGY5NDc4NjIwNzE1YjBmZWYyNTlmNzIwNzQz
N2YyOWQuLjFhYTQ3MzliNjI5NGQwMTM3ZWFkMzA5N2Q1ZGJjZWMzZTNhMWYyMjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1jYWNoaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3Ry
dWN0b3ItY2FjaGluZy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rp
b24gZ2V0RXhwb3J0cygpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
aW5zdGFuY2UvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IDA2YzZkN2E4OGMwOTIzNWFiZDQwYTcx
YTM3OWYwZDgwMDVhMzM2MTguLjI2MzkwZWJkMmNkYjJlNGM0OGRjMzBiZDUwZjZlNTc5NGU4MDc5
MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2Nv
bnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2Ny
aXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvZXhwb3J0cy5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvaW5zdGFuY2UvZXhwb3J0cy5hbnkuanMKaW5kZXggN2M4MWE0MTI5NWIwYTFmMmUyMGVlNzk3
MjI5MWUxMDk5ZjIzNzVmZS4uNmRjZmJjZWU5NTBkODcxY2Q2ZWUzZTVhZjk0YmVlMzlmZDhmNTFl
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRz
LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlNb2R1bGVCaW5h
cnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5n
LmFueS5qcwppbmRleCA3MDFlYzhmOWJhZDk5OGJjMjYzMTBlNzRhOGE3ZTIzZjJjYmY1YzRkLi41
NDdhOWNhODI5NWY1YjY4MTNhM2QxNzliYmZkM2NhOTA1NGU0OTcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFu
Y2UvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0cmluZy5hbnkuanMKQEAgLTEsNCAr
MSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20t
bW9kdWxlLWJ1aWxkZXIuanMKIAogdGVzdCgoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9pbnRlcmZhY2UuYW55LmpzCmluZGV4IDg4OTQwYmU1MWE3ZjU3MjdjMjdlMTY3ZDllMTBh
YmJhZWIwNGEwNmIuLjQ1NTFlNmU2ZTNkNDNlNTRlMGRiYjZhNjRmMDdmYjU3ZWY5OGFjNDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCkBAIC0xLDQgKzEs
NCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRp
b25zLmpzCiAKIGZ1bmN0aW9uIHRlc3Rfb3BlcmF0aW9ucyhvYmplY3QsIG9iamVjdF9uYW1lLCBv
cGVyYXRpb25zKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZl
ci5hbnkuanMKaW5kZXggYTgzNWU2NTExYTBhNmM1M2MzNmEwZmZkODE0M2Y0YTFhNzM4OGVjYS4u
ZmIxZDEyMDBiODkyYmUxZWI3YWVhNjZkYjM0M2RiNDkxZTkyMWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9idWZmZXIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYnVmZmVyLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS5qcwppbmRleCAwM2VlZDUyNzA4MzFiNTA0ZTZhYjIxYmNjOGVlMzZmZGZkMDUwMzA0Li5mNTA1
NzE5ZDJjNWU0MTFjYTlkZWJjMDA3NmEyYjQwZGVkMDIwZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0
aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfTWVtb3J5KG1lbW9yeSwgZXhwZWN0ZWQpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCmluZGV4IDBjZWE4
YjRiMWE2MzNmMWY2ZGE5MjMxMzMyZTM5NGI3ZmNkNzYxOTcuLmRiOWU3ODEzNjE3Yjk2NDcxYTkw
YzM1Yzk2Yjg1ZjA5MjY5OThkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIGZ1bmN0
aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihhY3R1YWwsIHsgc2l6ZT0wLCBzaGFyZWQ9ZmFsc2UsIGRl
dGFjaGVkPWZhbHNlIH0sIG1lc3NhZ2UpIHsKICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L3NwZWMvaXNzdWVzLzg0MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L3RvU3RyaW5nLmFueS5qcwppbmRleCBiYjkwODFkMTg2MTdlMWFmNzI0MjRlYTcwMGQz
MGU1Y2IwZWZkOThkLi5mNDA1OWY3NjU3NzIyNzU5Y2U0ZmM5NTBjNDg1MDkxNmQxMDJkZWRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5q
cwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25z
dCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVj
dG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IGFjNGNkZTJlMzE3ZTVl
Y2IxODdhOTY0ZjRmNTJmNmE3ZGM3NmRkOTguLjk5NzhmN2U2YWM4ZjJiMTFiY2FjYTgyM2I4Nzdl
YTgxN2RmZTdlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpz
c2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1
c3RvbVNlY3Rpb25zLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCmluZGV4IDhj
MjE1ZDE3YmQyNTgzNGFkMjk4M2U4ODE3MjM3MWM0ZWUxZjY1YzIuLjQwMjk4NzdlOTJjN2I4YjNi
ZDMyMTg0ODUzOTQ3NWMzYWY1MmVkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAot
Ly8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1i
dWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVk
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5q
cwppbmRleCAxMzI5YzZhNjAyMWYyZDU5MDJmNzU5ZTRkYTkyZDIwOTk3NGRhNzBlLi42MGIyYzA0
ZjQzNjk2OGFjMTE1NTc4NjAyNzVkNzViYzg5ZTQ5ZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9y
dHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBN
RVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxk
ZXIuanMKIAogbGV0IGVtcHR5TW9kdWxlQmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRz
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tb2R1bGUvaW1wb3J0cy5hbnkuanMKaW5kZXggOWE3ZDYxMTU5ODZlYTA2NmM1MDc1
ZDE0ZjYwZDNjYjAyNzdhNzhhMS4uZDY3NTRjOWVmYmRjNDRjZDk2MzcwOGY1Yjc1MWYxNTQ2ZGRm
Y2QxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0v
d2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9Nb2R1
bGVJbXBvcnREZXNjcmlwdG9yKGltcG9ydF8sIGV4cGVjdGVkKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxl
L3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCmluZGV4IDdkZDg1YTFjNGFj
NmU1MjVlMWU0YzBmOWJhY2MzMjk1ZTdlZGE3ZmMuLjFjMjBjZDYxMDhjODRlNTZlMjE5ZjBlNzM4
ZTA2NzJjZDdjMmQwNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hl
bGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1F
VEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIHRlc3QoKCkg
PT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rv
ci5hbnkuanMKaW5kZXggNWM5YTZmMTNkOTFlYmEwOThhYjU5ZTg5MzE0NTIyMjM3NWUxYjZjYy4u
ZTllNzdhMTMyYjc2YTQ3OWEyODk1YzE4YzY5YjQwMmJlNzFmZTNlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQg
KzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3Nl
cnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9UYWJsZShhY3R1YWwsIGV4cGVjdGVkKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKaW5kZXgg
NGUwYTVmOGMxMDQ4ZjRiNzcxYzM4ZmYwYWVmOTkxMGVkMzdiMjVjMi4uMmUxNjM0NmM2NDc5ZWM1
NWUxNmEzMzQ5ZjEyYjZjYTRiNmRhN2Q0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55Lmpz
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS9nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2Jh
bD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxs
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8g
TUVUQTogc2NyaXB0PWFzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVmdHlw
ZXMudGVudGF0aXZlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMK
aW5kZXggZWRmYjMzNDk5MWUwNGQyY2FiZmVlYjQ0MjZhZDA1Mzc5NmM2N2VjNS4uODVkY2JkMWQw
MDY0M2EwMjJkMDY2NTI2YjVjMDA4MWM5YzZlMGJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVm
dHlwZXMudGVudGF0aXZlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1yZWZ0eXBlcy50ZW50YXRpdmUu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD1h
c3NlcnRpb25zLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1jb25zdGFudHMu
anMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMKaW5kZXggZjU0M2Nj
NjIwYmNjNGNjYzBlNzA2ZDBkY2I4ZTY4YWY0MjEwYTI0ZS4uM2IyZWU1ZmE4ZWY2NmRkNmE3ZDAy
YzU5NzY5YTQxMzAzZTZhMWM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJs
ZS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9YXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBudWxscyhuKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFi
bGUvbGVuZ3RoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCmluZGV4IGY0ZTExNDg0Nzk3Mjkw
NjFhN2Y0MGU2ODMxMWFkZDQzZTBjNTFiMWMuLmE5ZWYwOTVkZWQ0NDU4MWQ0NGRlY2U1OTU3NzU3
N2ZhNmZlMjU0MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5n
dGguYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IHRoaXNWYWx1ZXMgPSBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L3RhYmxlL3RvU3RyaW5nLmFueS5qcwppbmRleCA3MDhjMTdiM2FjYWRmZGUyYzlhYmRhMzAwYzJk
NTdlNjFmNWE3MGNlLi44YTA5ZjI4MzJjMWQ2NDU5NDE4MmZhZTQ2NTFiYzliMDdhNTA4ZDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMK
QEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3Qg
YXJndW1lbnQgPSB7ICJlbGVtZW50IjogImFueWZ1bmMiLCAiaW5pdGlhbCI6IDAgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy9iYXNpYy1hdXRoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy9iYXNpYy1hdXRoLmFueS5qcwppbmRleCA0NWU0ZGFkYjNi
OWNlNWZiZWFkODhkYzg1ZDY4ODMyYjZkZDA0YjVhLi40NDdiY2RlZmJlNWZiNzg2ZGUzMWZhZmZj
OWM0NDYyOTQ4ZjRlMmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2Jhc2ljLWF1
dGguYW55LmpzCkBAIC0xLDUgKzEsNSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIK
IC8vIE1FVEE6IHNjcmlwdD13ZWJzb2NrZXQuc3ViLmpzCi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVk
d29ya2VyLHNlcnZpY2V3b3JrZXIKIAogYXN5bmNfdGVzdCh0ID0+IHsKICAgY29uc3QgaXNTZWN1
cmUgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpLnNjaGVtZSA9PT0gJ2h0dHBzJzsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1v
dW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKaW5kZXggODM5N2ZhZjNjNTc1NzNiNmVk
NzBjN2FiY2I3ZGI4NzBlMmY1ZmYxYy4uNTNjYTY3ZTI2OWJmZTZhZGFiMTZiYjJkNjdjNWI2Y2Q0
Zjc5OTg3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKQEAg
LTEsNSArMSw1IEBACiAvLyBNRVRBOiBzY3JpcHQ9d2Vic29ja2V0LnN1Yi5qcwotLy8gTUVUQTog
Z2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsc2hhcmVkd29ya2VyCiAKIGFzeW5jX3Rlc3QodCA9PiB7CiAgIGNvbnN0IHVybCA9ICd3c3M6
Ly8nICsgX19TRVJWRVJfX05BTUUgKyAnOicgKyBfX1NFQ1VSRV9fUE9SVCArICcvZWNobyc7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvb3BlbmluZy1oYW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhhbmRz
aGFrZS8wMDUtZXhwZWN0ZWQudHh0CmluZGV4IDM1ZGNjMjczODU3N2ZkMDAxYTE3M2ViOWYxMzg4
MjA4ZDAyN2ZkZjkuLjZlNzM1OTlhOGQwZDlhNGIwMTAzNjg1YTA0NjVmOGM5Y2FiYmZlOWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
c29ja2V0cy9vcGVuaW5nLWhhbmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhh
bmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAogCi1QQVNTIFdlYlNvY2tl
dHM6IHByb3BlciBmaXJzdCBsaW5lIAorSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCisKK1RJTUVPVVQgV2ViU29ja2V0czogcHJvcGVyIGZpcnN0IGxpbmUgVGVzdCB0aW1l
ZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwppbmRleCBkNDVlNTJlMjM0
MWI4Y2U0M2QzZTdlMTQ0YWZlNTE4ZWJhNzRjMTczLi5kODJhODI2MzU3NjZiMTlhYzlhOTU2ZDQw
MzI3YjRiMmI5YTI1MDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwpAQCAt
MSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2Jh
bD13aW5kb3csZGVkaWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogc2NyaXB0PS9y
ZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9pZGxo
YXJuZXNzLmpzCiAvLyBNRVRBOiB0aW1lb3V0PWxvbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5bmMtbm8tdGltZW91dC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zeW5j
LW5vLXRpbWVvdXQuYW55LmpzCmluZGV4IGQyM2ZiYjhjNjZkZWY0N2UzMWFkMDFhYTdhMzExMDY0
YmE4ZmRkYmQuLmFjNzNlMGJmMDVkMjMwODUzZDM0NjRlYjNjNzUzYTNlNDY5NGNkMjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5
bmMtbm8tdGltZW91dC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy94aHIvc3luYy1uby10aW1lb3V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogdGltZW91dD1sb25nCiAKIC8vIFRo
aXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vY3JidWcuY29tLzg0NDI2OCwgd2hl
biBhIHRpbWVvdXQgb2YgMTAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400538</attachid>
            <date>2020-05-28 19:28:04 -0700</date>
            <delta_ts>2020-05-29 08:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200528192803.patch</filename>
            <type>text/plain</type>
            <size>2339701</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVk
LWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggMTYwMGNhMjJhZDQ2
MjA3YzExMTQ5N2U1YTBkM2QxMzRjOWE5NDA2Zi4uNDMwMzQxZDAzOTM5MzY1NmNlNzcwMGQ4N2Rk
YTNiODVhNGZhMTk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQt
Y3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNl
c3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN25vbmUlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5
PSYjeDI3O25vbmUmJTIzeDI3OwogCiAKIEZBSUwgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGly
ZWN0aXZlIHdpdGggYSB2YWx1ZSAnbm9uZScgc2hvdWxkIGJsb2NrIHJlbmRlcmluZyBpbiBuZXN0
ZWQgZnJhbWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1l
IHNob3VsZCBoYXZlIGJlZW4gYmxvY2tlZCAob3IgY3Jvc3Mtb3JpZ2luKS4gSXQgd2Fzbid0LiBS
ZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5j
ZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1u
ZXN0ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dAppbmRleCBiZDViMzA4
MTM0YmM1NjU0NjU0MDE1YWVjOGFkNDQxMDFiNjg0NDY3Li5lYjdkNTkyMGM1MTU4N2ViMzc3ZWMx
NjE2ZjUyNzExNjZjOGUxY2M1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5l
c3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBA
QAotQmxvY2tlZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4
ODAxL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9zdXBwb3J0L2ZyYW1l
LWFuY2VzdG9ycy5zdWIuaHRtbD9wb2xpY3k9JTI3c2VsZiUyNworQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAxL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9zdXBwb3J0L2ZyYW1lLWFuY2VzdG9ycy5zdWIuaHRtbD9w
b2xpY3k9JiN4Mjc7c2VsZiYlMjN4Mjc7CiAKIAogRkFJTCBBICdmcmFtZS1hbmNlc3RvcnMnIENT
UCBkaXJlY3RpdmUgd2l0aCBhIHZhbHVlICdzYW1lJyBzaG91bGQgYmxvY2sgcmVuZGVyIGluIHNh
bWUtb3JpZ2luIG5lc3RlZCBmcmFtZXMuIGFzc2VydF91bnJlYWNoZWQ6IElubmVyIElGcmFtZSBt
c2c6IFRoZSBJRnJhbWUgc2hvdWxkIGhhdmUgYmVlbiBibG9ja2VkIChvciBjcm9zcy1vcmlnaW4p
LiBJdCB3YXNuJ3QuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1zYW1lLWluLXNhbWUt
c2VsZi1hbGxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFt
ZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxmLWFsbG93LWV4cGVjdGVkLnR4dApp
bmRleCBjYTM1M2E4NDcwMTdhYmI2OWFhN2U0NjhjODVlZTc5OWJmMTNiMzBmLi4xOWViOTFmMzc4
MjVhMjRjOTQ3MTUyYTQwMWI2NTYzNjVlNjJmYTI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Zy
YW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxmLWFs
bG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1h
bmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxmLWFsbG93LWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKIAogCi1QQVNTIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVjdGl2ZSB3
aXRoIGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1vcmlnaW4gbmVz
dGVkIGZyYW1lcy4gCitGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVjdGl2ZSB3aXRo
IGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1vcmlnaW4gbmVzdGVk
IGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzogVGhlIElGcmFtZSBz
aG91bGQgbm90IGhhdmUgYmVlbiBibG9ja2VkLiBJdCB3YXMuIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24vamF2YXNjcmlwdC11cmwt
bmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0
aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5oZXJpdHMtY3NwLWV4cGVjdGVkLnR4dApp
bmRleCBhMWJjM2I2NDQyZTZmNWY5YjZhY2M1OWVkOTUyMmQ0NzUzMDk5NjRiLi44YjEzNzg5MTc5
MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25h
dmlnYXRpb24vamF2YXNjcmlwdC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9u
LWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQKQEAgLTEsMyArMSBAQAogCi1GQUlMIFZpb2xhdGlv
biByZXBvcnQgc3RhdHVzIE9LLiBhc3NlcnRfdHJ1ZTogdmlvbGF0ZWQtZGlyZWN0aXZlIHZhbHVl
IG9mICAiZGVmYXVsdC1zcmMgJ25vbmUnIiBkaWQgbm90IG1hdGNoIGZyYW1lLXNyYy4gZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvaW50ZWdyaXR5LnN1Yi5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9i
YXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcwppbmRleCBkNDg3YzM3MzhhYzQ5OGY0YjkzNmUyNjlj
MDkzY2EyYmFkNTgxY2IwLi41NmRiZDQ5MDlmNmE0M2U0ODllZTViNmM1MDA1NGQyYjQ0ZDA3MDll
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHku
c3ViLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIK
Ky8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8g
TUVUQTogc2NyaXB0PS4uL3Jlc291cmNlcy91dGlscy5qcwogCiBmdW5jdGlvbiBpbnRlZ3JpdHko
ZGVzYywgdXJsLCBpbnRlZ3JpdHksIGluaXRSZXF1ZXN0TW9kZSwgc2hvdWxkUGFzcykgewpAQCAt
MjAsNyArMjAsNyBAQCBmdW5jdGlvbiBpbnRlZ3JpdHkoZGVzYywgdXJsLCBpbnRlZ3JpdHksIGlu
aXRSZXF1ZXN0TW9kZSwgc2hvdWxkUGFzcykgewogICAgIH0sIGRlc2MpOwogICB9IGVsc2Ugewog
ICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsLCBmZXRjaFJlcXVlc3RJbml0
KSk7CisgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgZmV0
Y2godXJsLCBmZXRjaFJlcXVlc3RJbml0KSk7CiAgICAgfSwgZGVzYyk7CiAgIH0KIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2Jhc2ljL3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3N0cmVhbS1zYWZlLWNy
ZWF0aW9uLmFueS5qcwppbmRleCAxODBkMzM4NjU5MDIxZmVkM2QyOWUwOGNjZWE0MTVjYzU4NTJm
ZWQyLi4zN2M4MjFjZTczZjI1YzVlMmM1ZDAyYTY4N2Q2YTgwMDZlZjUwNjBjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9i
YXNpYy9zdHJlYW0tc2FmZS1jcmVhdGlvbi5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3Jl
YXRpb24uYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXdvcmtlcgorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIKIAogLy8gVGhlc2UgdGVzdHMgdmVyaWZ5IHRoYXQg
c3RyZWFtIGNyZWF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSBjaGFuZ2VzIHRvCiAvLyBPYmplY3Qu
cHJvdG90eXBlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKaW5kZXggN2NjMjJhMjhjMjBjMDFmMmM2MDJi
NmI3OTgxNGZjNjg0NDA1NDMwNi4uM2ViODkzZjRlNjVjM2MwZTU1Njc2ODhiZDMwNzI1YmMyMWVi
NDBjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9NRVRBLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCkBAIC0xLDQgKzEsNSBAQAogc3VnZ2VzdGVkX3Jl
dmlld2VyczoKICAgLSBqZ3JhaGFtCi0gIC0gZ3NuZWRkZXJzCi0gIC0ganVnZ2xpbm1pa2UKKyAg
LSBIZXhjbGVzCisgIC0gc3RlcGhlbm1jZ3J1ZXIKKyAgLSBMdWtlWmllbGluc2tpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL2NhY2VydC5rZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKaW5kZXggMWExMjFkZmFjOTUyZGZlODg4NmIxYjVl
NDFlN2M3MzExZDVmMGIzMi4uNDQ1YWFlMWI5ZmI5NzYwZTM5MGU3ZTRkMDQ3NmE4MDhjNGUzZjgw
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQpAQCAtMSwzMCArMSwzMCBA
QAotLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQotTUlJRkh6QkpCZ2txaGtp
Rzl3MEJCUTB3UERBYkJna3Foa2lHOXcwQkJRd3dEZ1FJbWluSFR6a1hocnNDQWdnQQotTUIwR0NX
Q0dTQUZsQXdRQktnUVFYVndKY3FXemU2QTNWWXVBUzBCUGd3U0NCTkNSdHZyb0I2cXJvUWxGNThI
RQotNVNKSEYvalFSSlJ4ZjA1MWxycStqZlV4TTdrWnVjTk4rbXlWMnppTG9nYTZPUU01NzlEOHZ5
OHRxa3JMcG5zVAotY1hrZ0h1d3RCSkY0N3cxWUFQR0dBUmUzS3N2LzJDOXNVVmNQdm1uVnJ6U01Y
ODZFc2VyZmZxTTN6ZndaMkgzUwotanhURFN5SXZKVVUrNFhmeHJXZWdUaVFRUE5xRHlMZk81ZEJm
YXRUMnp0WENtdTNCRmlwdWhHRnB3d0NKaXJLcgotMXhiNlhQRXVUMFBDelROcGVTVVJwWEZLSE1E
TWtjak9rTkFVeWdJRXcrTGc3ZXRWZkxjc2dCdXpFQTNSV3dmMwotT01ZMW1UQkpsdng2elp4ZFg3
YTBRbXhlclVEa0RTOVlZQUVHU0ZhK0Z4NmNHVzVQeWVlZjl4dGxIeFpIaStwbQotVHhDd2N2SnlY
cWVENGdXbTNzMWd3T2ppNVdtWHZvMkVpcmN4ZlNLazhUVXdhcHhmQ1lRYk9qUUlQYUhuRUdvYQot
Q1FoU0VnRFg1dWZ3c1hKOS9wU1A2a2pXK3krZjBnbmhIVnVLSktzT0Jtamc2aXF3bnFFaHcrdU5G
V0tLbC9NbwotVEZUN0NyYXlKVHZvKzlVZFFUSlY5TUJBc01VUVM3ZCtISDlrTk9Bbi9oZm1FenpH
VUtWVFoweklkMGZLSDEzcAotVG5vWWdNWWJtMlVybjBOWEJGTzhSdnpZM0twS3lSaE1jT0xLeGtQ
VlVqS1VBNUJ1QXY2cmN2TWZsSTZIbjV3VQotcVBNK3VFQ1NnZE9uTmVJbWkxRmYrY1c4ZFRHR1Ji
K2loYStFbkFCb1gzd1I1T3Z6Z0NZSGVFTkpiMzJGVW9WcwotSUQyVDVNWnRRTkFya2lzL3hXWjdK
eVBibXNRbzJ3eWlGTGFzWDhXZ2grOE1nRnhvbHB2amxYMy9RZFRUSnFFYwotcm9mVkdPUE9tZm9I
bzNlWU5KT2xMYmFKVERJZThPcks0OVBJZXUxZ204enFCMldZcW1GLzNBWXk0SUFJd1VZdQotcmJQ
d1VDOUh5Y2VSUFNZZVBNOVdmMXhNMnByb0szbm1wNmFwZEhDUk5qYmQ0Njg5RUxtQjkwYjJhdzZO
RmlhbQotM3RhS1BtRkxiL3Z0Mll4Z3FPdGFnUHJUbGMxUUxIQktyc25wZy9CaGNCanVwcVJLR0Zt
WENKemlQSWFES3ZBcwotanRnNEtEbzhqTkl4bXdRQXdFVjQrYUgwaGhNdW14YTh5YVhvQy8zRzZK
eEQyc2RvcmFPcCt2clR6alVNa0lvYwoteExxV2w4R0hWTEYwOWZaSjRTdEpmSVdJT21tcGljU3hX
MXZESUNhWnVVK2lQd2xOT3pGN3NlUFJraXhiYXJIcgotaXFUbExHLy8rSHVxL245SVJ4aHptU091
cjYzV01YRlJ5MHNLVzVXK3VROXhzblY4U2Rqd1JtQUdMdG5aSHE0WQotTk9DUS8reU9SbDR5eGtQ
dlYwMUh5a0FsNENSdFBCR1IrNFpDNU5LaHB5aEpidTZXY3F3aVh5QWVoVS9jUGdMKwotaDhOd0Vv
eVArT0hydkVZZHk0b2NCbkpxLzQzNld3emZXaXM4bklHNGJTbEQzRFNFZ0pGL1FVbXE0aS9FVXEv
QQotRDZTZnpiRnBQR3RUajNLWjZEOERQcndXRzY4T0NGc3FSVzlZRXZVSUs4SlQyNjVCTjNNekk1
aTAvK2s0Q2RBZwotYVNhaUM5N3FnN3FKYVZNOWI5RUhzY1VYUi9mZUZ4dk81UWtra1k1Q1RVM0J4
YjBzMUk0UncyTVlvQWRNR3RiQQotNm1kem1SVllvUnY5Tk1kekw2ek9Ub1BVNm9PZzZtYmpIZ1pR
Z05kN3c4R3RURlcrc2ZzbExPWFhDOGVyemJIbAotQnlRSkdjRkd0S1RCVUQrN1ZIWmhwd003YlBP
YnR6eUEycjBVYlMxUXgwSXpudnViZEZWY1h5RTdkSWpXN2NBZwotSWJCektlaUVSd3B1M3JNcTJi
WVZXM0RBMzNWbHJUZnBqWHVqaEh2MWlYMTVpNnFzV2Q3T3RadzZ4N1RjY0gxWgotamRtaDlYQjl4
RHlkbnNzM3U5RHdHUkVNWUM5VGRQWlkvbnVpNmxnQ2pqT2hhVGF1bk11aWdGQk1XVUJrRGxJYgot
dWp1K0F0ditQU0JUOURtVHlUUUdoUFpSSXc9PQotLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUg
S0VZLS0tLS0KKy0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0NCitNSUlGSERC
T0Jna3Foa2lHOXcwQkJRMHdRVEFwQmdrcWhraUc5dzBCQlF3d0hBUUlBd3N1Wjd5SnhMc0NBZ2dB
DQorTUF3R0NDcUdTSWIzRFFJSkJRQXdGQVlJS29aSWh2Y05Bd2NFQ0NLUnN3TFhzaDlQQklJRXlL
T3Q0Mm1MZUw2aA0KK3VQQmg2M2RvSG9xSnhCOTVwd3B0UjYzZnFwMlJmdlpVVXpmclduSTJkbm4w
eFJ0UmNQbWY1MkJSNHNsaUlKSnoNCitLK2gxMFZPNGFpbEc0bU1lUCsyVlBIRnVmbFFuNXhnU0M1
VmQ3amVkVjBWZXljTXIwZ2ZaMVhiY011VklyclcyDQord1FWTS9EYmIzQTZOSFQ1eVVBK1pUeWFt
M1NZaDBWckJMcDhGUW4vMjJ4aXZtakM1anFaYkZxdlVsK05uQkYwSA0KK3U5K21kQ25sWXFjcTlx
VDFiMmhDL1ZWU2VPeWlDWlhWRUU4WG43dHJMR2xTR0lqZmdOV21kSEpZYWRMOUp1V1gNCisvNXhF
VTMvTVp0Zmo3RGZhcll2SllPTlY5cG5CRXV1Y1dValJKZ2JQZ011cVoyc2I3SXAvOS9YWkh2Z0Zn
VnJ5DQorTElKZXNMaUZsazhFbWU3a0RIOEVQbnk0STVSVXV1ZnRPZlh6NXNlbUNPaVFLcXNWNWpL
bEJ5UHhZTWRoK0FEVg0KK2ppbzB1RTU1TGI0TUdmaHhXdXpjV0QvUm92Nkl3SWcwdXVYV3BFempL
cjBKeVZsLzg0d2duaTVIcTFPOUVnZVkNCiswN1ZCUU91aUV6bWhsbVZHbGtxaTEva0ZBWitQa2RO
VVNON0pQZ3ZuVkEvVmdmaWd0bGNJSjlhbXBzcWF1MnltDQorS1doM2JVS2lWMGVKVlBBMy90dkVk
Qm9vWG4rOERRYnQ0NHN5RDdQNTJNZmwvYlMyTGM1eTZtUHR0Vk8vbUR6dQ0KK1hnNmJvRE56YVhC
L0hEVUYyVGQ4UmFja3ZxckhQS0tYWG9Bejl3OHN4WUZHZThKVmV1T3dmTzVIWDZKSHlzY2QNCitj
S3FFWk5NQkxqeGVkcEwwRVpNenA3MmJzZTFYY3Z2SXYvWENoWm5mSzJZZmhmeGNsM1JJaVRQeDNz
NkZlZUlvDQorVHNyTmlURjhkL2NPTEsxMS8wMmhFVWRvMnI1amc4UEhvWm1YbDBBOG42YWJYVmNP
bldpNU0xdEVqTmR1d0tNNg0KK0FRVVJZN1o5QWxTc1FYdzZ4ajJ6NjB6aTgrSXd1M3RnRDRIUDdO
cXdaUnNEOTlsYTA5SGRjSTBjU21lYUVPVEUNCitCeXJWeXFuT0JyOFpKVk1MdWU0eU03K0JkbEdV
YWJUVyswdTBxeTlRMUF4dWVRelVtRTRWRkt0ZmpScUlVbEFBDQorNkhyZkVzT2U3SFJMS3huZGN0
Sjd1QlhJNWdodjN6R2QwdVptUnlqWHNFakdyMkpxYVphMUhleHJhQi9HSFhHRA0KKzlQWlRKV1Mx
bUw4S0UzbzFoU2oxeVRnbGhmaEo3V2YvZXJmQkd6Y3RVUEtRQmtrcHpWcVpNUzZZMkFJSFRCNUcN
CitiMndveC9sd3ZGQTJjbG9kb1QzdGJlRG1oTkh4SXVHbE9uWXRjUGhJTEQ3TVJlRE51bDFSOUhM
L1NzVzdBQjYrDQorcTZSNTRQc1NjaE5nRmhMU2R6MHE2YXpYVWxrNm1jRjVCZ1JPdmd5b2ErN0d2
MFVsYlNRYlV1VnVMRDBrM1NNVQ0KK0RtcHIvdzlPbXFVc09jellsblBXb3ZoK0diVmh6ZStlRlRO
SUdWL3dWTk5KUVJDMVJVTnJDL2U4YWY0Y3AvL3INCis2amlRNWVOZjhyVkI4Vk1lTVhSVUh4UHdS
WHRGVkVDdXVUZE1kUG40VTJUSEpvKzQ1WjBiVkc5eXRaNkNVUDBuDQorNTZEV0g2L2RLZUlpdkVG
ei9iWTRvQ1ptc0lma2pOZW81NDVHUmZoRk5OR1JncmRqQ2V2cjBwSnRZNGg1VmpJMg0KK2lQVUw4
NVIweHplOG9DVDBhL0dIWTZYdnBiblJ6NXFyeTFjMkRvUjNJZURRa3E5eVFqQTdXYXV0VGJwOFV6
Q2QNCisxUzdSWElrcnpQQ2c0WEJJcFF1NWhzd0tDN1cvVWlIN0g5MnB0eWwyZ3JpQzdFMEpPZlov
TXZneFpwRmk4dXBlDQoreVk4ajFHRElnd3B0ZjlRR0xrbS9lcHYvUU02TDI1d0dFRTkxNnpRKzNy
a1VYVFhUMm9QSWk4amFRUnNsb1hjaQ0KK05JM2wxRkZFUWpONFY0aXQzRzJ0Vm5lZ2NBUWRYOW5z
Wjk3cEFxK05PSzI4T2lOOWtETjlvbFYrQTBMTWU3NWkNCitCSUIvelJVZkllZy9UU2JZaUZWMmNR
PT0NCistLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2Fj
ZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2VydHMvY2FjZXJ0LnBlbQppbmRleCBlMWI1YWRkNTRlNzk3ZGIxYzZjMWQzZWRhOTYxYWYz
ZTU0YmM3YTc3Li5lZWJhNTI4ZDI2ZDM1NzMyMGJhNDJmNTE2ZjE3ZTMyNDQ3YTgzYWQxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NlcnRzL2NhY2VydC5wZW0KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCkBAIC0xLDEyNSArMSwzNDQgQEAKLS0t
LS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJVzV6Q0NGYytnQXdJQkFnSURCYkZITUEwR0NT
cUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMxMFpYTjBj
ekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1TWpsYQotTUIweEd6QVpCZ05W
QkFNTUVuZGxZaTF3YkdGMFptOXliUzEwWlhOMGN6Q0NBU0l3RFFZSktvWklodmNOQVFFQgotQlFB
RGdnRVBBRENDQVFvQ2dnRUJBTlFJMTB2eXRQTjVHOG02Y1dlUFpMSFlnQklKc1dmangyTldrL1dG
RUxvYwotRG5VdjJ6UnA1RTI3QWh4RUpKNmM2Skd1KzNXalQ3bCtmR3lrb0sxUndPbjRPaS9LTkpu
REUyWGVTalFIL2F3UAotTWkyajBoQWl2VHZDWG5vbVRYbjNjcWNUa3JhcGNEWFYxK1dVU2FlYkp3
Kzh3SExvSlVXSWJlVTdLTFZnWHNjZgotaExHQlFCNnAvdVFld3ptbWIxYlViaXpGM0duYkZ4U2JG
Z2tLM1R0ZjlOcEhxcVJ0Z1VBYVp0UDllZGEva1JQNwotajBpSVFuY0N5aHdVTWNFZy85WXNLZUxP
U1VHekxqVVNDSnFPSXZVTG5Rd1JCWWpJRXd1aTAwcWRDaHFWOGNoegotS2JrMzJkajZ2TEZzM3Q3
UCt4b2ovSmpaWFppV1FGVHpGU1ZqcFM1QTdNRUNBd0VBQWFPQ0ZDNHdnaFFxTUF3RwotQTFVZEV3
UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FNRWNHQTFV
ZAotSXdSQU1ENkFGRUZKLzR4bVVGK0hvUWFvdTZ1SzNYTU5EamNhb1NHa0h6QWRNUnN3R1FZRFZR
UUREQkozWldJdAotY0d4aGRHWnZjbTB0ZEdWemRIT0NBd1d4UnpBTEJnTlZIUThFQkFNQ0FnUXdn
Z29GQmdOVkhSNEVnZ244TUlJSgotK0tDQ0NmUXdFNElSZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3
RjRJVmJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAotWlhOME1CZUNGWGQzZHk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBWWdoWjNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBNQmlDRm5kM2R6
SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaZDNkM0xtNXZkQzEzWldJdAotY0d4aGRHWnZj
bTB1ZEdWemREQWJnaGwzZDNjdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kMwot
ZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVibTkwTFhkbFlpMXdi
R0YwWm05eQotYlM1MFpYTjBNQnlDR25kM2R5NTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUJ5Q0duZDNkekl1ZDNkMwotTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ5Q0duZDNkekV1ZDNk
M0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotTUJ5Q0duZDNkeTUzZDNjeExuZGxZaTF3YkdGMFpt
OXliUzUwWlhOME1CMkNHM2QzZHpFdWQzZDNNUzUzWldJdAotY0d4aGRHWnZjbTB1ZEdWemREQWRn
aHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SFlJYgotZDNkM01pNTNkM2N5
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDNkekl1ZDNkM01TNTNaV0l0Y0d4aAotZEda
dmNtMHVkR1Z6ZERBZmdoMTNkM2N1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFn
Z2g1MwotZDNjdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lJSWVkM2QzTVM1
M2QzY3VibTkwTFhkbAotWWkxd2JHRjBabTl5YlM1MFpYTjBNQ0NDSG5odUxTMXNkbVV0Tm14aFpD
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZERBZ2doNTNkM2N1ZDNkM01TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNaTUzZDNjdQotYm05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DR0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1F3SVlJ
ZmQzZDNNaTUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFoZ2g5MwotZDNjeExu
ZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DR0NIM2QzZHpFdWQzZDNNaTV1YjNR
dAotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SklJaWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1M1pX
SXRjR3hoZEdadgotY20wdWRHVnpkREFrZ2lKM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUNTQwotSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3SllJamVHNHRMV3gyWlMwMgotYkdGa0xuZDNkekV1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1F3SllJamQzZDNNaTU0YmkwdGJIWmxMVFpzWVdRdQotZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3SllJamQzZDNNUzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbQotYjNKdExuUmxj
M1F3SllJamVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRdwot
S0lJbWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdL
SUltZDNkMwotTG5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3
S1lJbmVHNHRMV3gyWlMwMgotYkdGa0xuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
ME1DbUNKM2QzZHpJdWVHNHRMV3gyWlMwMgotYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFwZ2lkM2QzY3hMbmh1TFMxc2RtVXRObXhoWkM1dQotYjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0tZSW5lRzR0TFd4MlpTMDJiR0ZrTG5kM2R6SXVibTkwTFhkbAotWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ3VDS1hodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmRsWWkxdwotYkdG
MFptOXliUzUwWlhOME1DMkNLM2h1TFMxc2RtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXVkMlZp
TFhCcwotWVhSbWIzSnRMblJsYzNRd0w0SXRlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dF
dWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOME1DK0NMWGh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExuZDNkeTUzWldJdAotY0d4aGRHWnZjbTB1ZEdWemREQXZnaTEzZDNjdWVHNHRM
VzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1
ZDNkM01TNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1MwotWldJdGNHeGhkR1p2Y20w
dWRHVnpkREF3Z2k1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeAotTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eQotT0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd01JSXVlRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5T0dFdQotZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXhnaTk0YmkwdGJIWmxM
VFpzWVdRdWVHNHRMV3gyWlMwMgotYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6
Z2pGNGJpMHRiamhxTm1Sek5UTnNkM2RyY25GbwotZGpJNFlTNTNkM2N1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOME1ET0NNWGQzZHk1NGJpMHRiamhxTm1SegotTlROc2QzZHJjbkZvZGpJNFlT
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TklJeWQzZDNNUzU0YmkwdAotYmpocU5tUnpO
VE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZUc0dAot
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRdwotTklJeWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdAotTG5SbGMzUXdOSUl5ZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNk
cmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNRd09JSTJlRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMgotYkdGa0xuZGxZaTF3YkdGMFptOXli
UzUwWlhOME1EaUNObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1SegotTlROc2QzZHJjbkZv
ZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0YmkwdGJIWmxMVFpzWVdRdQotZUc0
dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUR5QwotT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2RtVXRObXhoWkM1
dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNRd1E0SkJlRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5T0dFdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdSNEpGZUc0dExXNDRhalprY3pVegotYkhkM2EzSnhhSFl5T0dFdWVHNHRMVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3YkdGMAotWm05eWJTNTBaWE4wTUJN
R0ExVWRKUVFNTUFvR0NDc0dBUVVGQndNQk1JSUpoUVlEVlIwUkJJSUpmRENDQ1hpQwotRVhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hWdWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGWGQzZHk1
MwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdkM2QzTWk1MwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlaZDNkMwotTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2Qz
TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbAotYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0Y0d4aAotZEdadmNtMHVkR1Z6ZElJYWQz
ZDNNaTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1ZDNkMwotTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYgot
ZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2h0M2QzY3hMbmQzZHpJdWQyVmlM
WEJzWVhSbQotYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYmQzZDNNaTUzZDNjeAotTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2QzTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJZWQzZDNMbmQzZHpJdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaDUzZDNjeExuZDNkeTV1YjNRdAotZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDSG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJZWQzZDNMbmQz
ZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdAotZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbAotYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNk
M2R6RXVkM2QzTVM1dQotYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdAotTG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2QzY3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NAotYmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdAotZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpY
TjBnaU4zZDNjeUxuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlqZDNk
MwotTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJM2h1TFMxc2Rt
VXRObXhoWkM1MwotZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0YkhabExUWnNZ
V1F1ZDNkM0xtNXZkQzEzWldJdAotY0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNkbVV0
Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdAotTG5SbGMzU0NKM2h1TFMxc2RtVXRObXhoWkM1
M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJbgotZDNkM01pNTRiaTB0YkhabExU
WnNZV1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpZDNkM2N4TG5odQotTFMxc2RtVXRO
bXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXhoWkM1Mwot
ZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeQotT0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzZG1VdE5teGhaQzU0
YmkwdGJIWmxMVFpzWVdRdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhodUxTMXVPR28yWkhN
MU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0dExX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTG5kbAotWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTEzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaQotTFhCc1lYUm1iM0p0
TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaQotTFhC
c1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekV1
ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExuZDNkekl1ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2RtVXRO
bXhoWkM1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbAotWWkxd2JHRjBabTl5YlM1MFpYTjBnakY0
YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05MAotTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2pGM2QzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdQotYm05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjNkM2N4TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1do
MgotTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5ZUc0dExXNDRhalprY3pVemJI
ZDNhM0p4YUhZeQotT0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uaHVM
UzF1T0dvMlpITTFNMngzZDJ0eQotY1doMk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnakozZDNjeUxuaHVMUzF1T0dvMgotWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJMmVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9H
RXVlRzR0TFd4MlpTMDJiR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNAotYmkwdGJIWmxM
VFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdAot
TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZ
UzV1YjNRdAotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5
Y1doMk1qaGhMbmh1TFMxcwotZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0eQotY1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2tWNGJpMHRiamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNAotWVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSFhpcTF2QQoteGpj
OGlqMzRpNGIrOGluVkJWd1RXeUh0Y3psWm5JUVRDeHFKQ0RrODNwejhRRkhHeUhZeitkYjM2VTZZ
d0hhawotSTNIWWhpcFBNQjFWbmxIa01BNnhGdVpML2FGV3l3TE5VOW5UbWFBVjBmUC9SNWs5dnQ4
QUVtMFptRVdrTll0TAotb3BjeTBycWpBYVhUSVdlczkxT1pmbmlURlFESE1pdXJLOFZxK2ZxL096
dytZUWJSYlUxS2xIQ05heWlzdlFhNAotVExPK0RqTVIwaHpEVDNESEV3UEpMUFlhYTZSbkl3bzh6
dkNxazBaUlBBeGV1bGRBZS91MVB6dGVYUnpFSFRBRQotRE1WTE13TTc1MmJMRnVmdjFHUkNaTkhF
TFpLeWhVb0ZyUDMwQXFFN3IzcG53UVJXOEtkaWQzOElNbzd1OURlbQotdTUvdEhlZlBLRDdibS9Z
PQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t
DQorTUlKQUd6Q0NQd09nQXdJQkFnSURDL091TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJn
TlZCQU1NRW5kbA0KK1lpMXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHlNREF5TVRneU1ESTVORGRh
Rncwek1EQXlNVFV5TURJNU5EZGENCitNQjB4R3pBWkJnTlZCQU1NRW5kbFlpMXdiR0YwWm05eWJT
MTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCDQorQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDk5
YVdrM2RSaVl4SWpOSGx4THpaTE1xYWZhL3dBckc1UTlUMkVMeGIwcg0KK09nRGtWVU1waVZCbUE0
cldwR0l1OFJnZS90SG9hM0ZNNzZ2a3h5dTNCNi9zSWZTUFdwblU3WU4vUFE5NGJqQjQNCitXVFVG
UVIwTEJuS1VHYlkxWFZ4ZTVBTzFkMWZZM3RBbXozTkhBNDZpZld6YlZxUlBaU3pYcHVOZzVldEJt
ZkoyDQorZlo2cmVZdGdTOVZJcXVVb1BTQUZNS010M0o0NmJENlZQOFFQY1ZGellJTDBEcm5SbHFk
MW9vTUZGQk1pelhxNg0KKzlaU2xZMlNYQStNNTdhNGxMbXZVVDUxZjVXL0J0Qjd1Y0tiYU9ueGVa
WkxZQUw5KzArcnA5MjJFZTJEcm9JdEYNCitNZ2tBUVFjdmN1RG90V1M4NlZnU0Y3ZFBUalExMkUv
N2VIKzlvUFFGU3hzQ0F3RUFBYU9DUFdJd2dqMWVNQXdHDQorQTFVZEV3UUZNQU1CQWY4d0hRWURW
UjBPQkJZRUZQYTUyaFlIQmJ0dnlXTXd4bWRBeXdQVEhwRHNNRWNHQTFVZA0KK0l3UkFNRDZBRlBh
NTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc29TR2tIekFkTVJzd0dRWURWUVFEREJKM1pXSXQNCitj
R3hoZEdadmNtMHRkR1Z6ZEhPQ0F3dnpyakFMQmdOVkhROEVCQU1DQWdRd2doOWpCZ05WSFI0RWdo
OWFNSUlmDQorVnFDQ0gxSXdFNElSZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RjRJVmIzQXlMbmRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNQmVDRlc5d09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QVhnaFZ2Y0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0Y0SVZiM0F4TG5kbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wTUJlQ0ZXOXdNeTUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFYZ2hWdmNE
WXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYm05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1CZUNGVzl3TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWGdoVnZjRFF1ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1F3RjRJVmIzQTRMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmVDRlhk
M2R5NTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RnM0xuZGxZaTF3YkdGMFptOXli
UzUwWlhOME1CaUNGbTl3T0RBdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TkM1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjREUyTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdOREF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJV2IzQXhOeTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEY3lMbmRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBN
QmlDRm05d05qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBeU15NTNaV0l0Y0d4aGRH
WnYNCitjbTB1ZEdWemREQVlnaFp2Y0RJNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3
TVRNdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F6Tmk1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBWWdoWnZjREV4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOemt1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTINCitNUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNEUTRMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQorRm05d01Ua3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RE
QVlnaFp2Y0RRMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TXpjdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNRd0dJSVdiM0E1T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZj
RFkyTG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1F3R0lJV2IzQXlOaTUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEWTNM
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d056TXUNCitkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBek9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2DQorY0RZeUxuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TlRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRdw0K
K0dJSVdiM0ExTmk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREl5TG5kbFlpMXdiR0Yw
Wm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2Qz
ZDNNaTUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNERTRMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmlDRm05d056UXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBNU1T
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RNekxuZGwNCitZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TmprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F6DQorTUM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE01TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJp
Qw0KK0ZtOXdOVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTBNeTUzWldJdGNHeGhk
R1p2Y20wdWRHVnoNCitkREFZZ2hadmNEZzFMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05
d016UXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemREQVlnaFp2Y0RjeExuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CaUNGbTl3TlRB
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E0TkM1M1pXSXQNCitjR3hoZEdadmNtMHVk
R1Z6ZERBWWdoWnZjRE14TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVFF1DQorZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTBPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZ
Z2hadg0KK2NEUTBMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05EVXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2
Y0RjMkxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TVRRdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRd0dJSVdiM0E0TVM1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBWWdoWnZjRGc0
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNakF1ZDJWaUxYQnMNCitZWFJtYjNKdExu
UmxjM1F3R0lJV2IzQTVOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEVXhMbmRsDQor
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d09EWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdH
SUlXYjNBMQ0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RJM0xuZGxZaTF3YkdG
MFptOXliUzUwWlhOME1CaUMNCitGbTl3TVRJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdi
M0EzTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRFEzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUJpQ0ZtOXdPVFl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3R0lJV2IzQTVN
eTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEVTNMbmRsWWkxd2JHRjANCitabTl5YlM1
MFpYTjBNQmlDRm05d05qTXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMU15NTNaV0l0
DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RJNUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1C
aUNGbTl3TWpVdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E0TXk1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRGszTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0Zt
OXdOREV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJV2IzQXpNaTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFZZ2hadmNEY3dMbmRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNQmlDRm05d05q
QXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBNU1pNTNaV0l0Y0d4aGRHWnYNCitjbTB1
ZEdWemREQVlnaFp2Y0RjNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RrdWQyVmlM
WEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F4TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
WWdoWnZjRGMzTG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGt1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3R0lJV2IzQXgNCitOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
dmNEWTFMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQorRm05d05qZ3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdHSUlXYjNBNU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2REQVlnaFp2Y0Rn
eUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CdUNHVzl3Tmk1dWIzUXRkMlZpTFhCc1lYUm0NCiti
M0p0TG5SbGMzUXdHNElaYjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFiZ2hsdmNE
a3VibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOQzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRdw0KK0c0SVpiM0EzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWJnaGwzZDNjdWQzZDNMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQnVDR1c5d01pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RzRJWmIzQXhMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBYmdobDNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMA0KK01CdUNHVzl3
TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBekxtNXZkQzEzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
Y2docHZjRFF3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RRMUxtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEazJMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZERBY2docHZjREk0TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNn
aHB2Y0RnekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETXpMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFUyTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemREQWNnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
WXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREU0TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RRNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFjZ2hwdmNEUXpMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGc1
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RZd0xtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEazFMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZERBY2docHZjRGN6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreA0KK0xt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUXlMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHUNCitkR1Z6ZERBY2docHZjREkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNn
aHB2Y0RZNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETXlMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0zTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemREQWNnaHB2Y0RrNExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hw
dmNERTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGMyDQorTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0K
K2RHVnpkREFjZ2hwdmNEYzVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docDNkM2N5
TG5kM2R5NTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RnMkxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEYzNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZERBY2docHZjREk1TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RVMUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEa3kNCitMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZERBY2docHZjRFEwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemRE
QWNnaHB2Y0RVMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEazBMbTV2ZEMx
Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRE0wTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemREQWMNCitnaHB2Y0RNd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hw
M2QzY3hMbmQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREkxTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RZMA0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNESXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZj
RFV4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReExtNXZkQzEzDQorWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERXlMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZERBYw0KK2docHZjREV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjeUxt
NXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESXlMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZERBY2docHZjRFV5DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RjMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEWTNMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd3TG01dmRDMTMNCitaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RnMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQor
Z2hwdmNETXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFV6TG01dmRDMTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJekxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNETTENCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
REUyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RZekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRFU0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RZ
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTBMbTV2ZEMxM1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZERBY2docHZjRGt3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0Rjdw0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERXhMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjREUxTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RZMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEVXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFk0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEYzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docDNk
M2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RneUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEa3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docDNkM2N1ZDNkM01TNTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJ
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEY3hMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGszTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emREQWNnaHB2Y0RnNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTANCitM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1DQorZEdWemREQWNnaHB2Y0RRNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEVTVMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFEyTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RNMkxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNETTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2do
cHZjRFEzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMw0KK0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUN
CitkR1Z6ZERBY2docHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RV
M0xtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3lMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRGd4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWRnaHQzZDNjeUxuZDNkekV1ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3SFlJYmQzZDNN
UzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CMkNHM2QzDQorZHpJdWQzZDNNaTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFkZ2h0M2QzY3hMbmQzZHpFdWQyVmlMWEJzWVhSbQ0KK2IzSnRM
blJsYzNRd0g0SWRkM2QzTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQz
ZDMNCitNaTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQ0NDSG5odUxTMXNkbVV0
Tm14aFpDNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQWdnaDUzZDNjeExuZDNkeTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRdw0KK0lJSWVkM2QzTG5kM2R6RXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wTUNDQ0huZDNkeTUzZDNjeUxtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFoZ2g5M2QzY3hMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBNQ0dD
SDNkM2R6RXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJWUlmZDNkMw0KK01p
NTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzZDNjeUxuZDNkekl1Ym05
MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOME1DU0NJbmh1TFMxc2RtVXRObXhoWkM1M2QzY3Vk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFrZ2lKMw0KK2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUNXQ0kzZDNkekV1ZUc0dExXeDINCitaUzAyYkdGa0xuZGxZaTF3YkdG
MFptOXliUzUwWlhOME1DV0NJM2QzZHpJdWVHNHRMV3gyWlMwMmJHRmtMbmRsDQorWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0K
K2JTNTBaWE4wTUNXQ0kzaHVMUzFzZG1VdE5teGhaQzUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DaUMNCitKbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUNpQ0puaHVMUzFzDQorZG1VdE5teGhaQzUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ21DSjNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQXBnaWQzZDNjeUxuaHVMUzFzZG1VdE5teGgNCitaQzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0tZSW5lRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVibTkwDQorTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wTUNtQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNjeUxtNXZkQzEzWldJ
dA0KK2NHeGhkR1p2Y20wdWRHVnpkREFyZ2lsNGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZ
UzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREF0Z2l0NGJpMHRiSFpsTFRac1lXUXVlRzR0TFd4
MlpTMDJiR0ZrTG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXZnaTE0Ymkw
dGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxj
M1F3TDRJdGQzZDNMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3DQorYkdG
MFptOXliUzUwWlhOME1EQ0NMbmQzZHpJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1
ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWQzZDNNUzU0YmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXdnaTU0YmkwdGJqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4DQorTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTURDQ0xu
aHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kMw0KK2R6SXVkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdNWUl2ZUc0dExXeDJaUzAyYkdGa0xuaHVMUzFzZG1VdE5teGgNCitaQzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd000SXhlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5DQor
T0dFdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBemdqRjNkM2N1ZUc0dExXNDRh
alprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTURT
Q01uZDNkekV1ZUc0dExXNDQNCithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wTURTQ01uaHVMUzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5k
M2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTURTQw0KK01uZDNkekl1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTURT
Q01uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6SXVibTkwTFhkbFlpMXdiR0Yw
DQorWm05eWJTNTBaWE4wTURpQ05uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxT
MXNkbVV0Tm14aA0KK1pDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQTRnalo0YmkwdGJIWmxMVFpz
WVdRdWVHNHRMVzQ0YWpaa2N6VXoNCitiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3UElJNmVHNHRMV3gyWlMwMmJHRmtMbmh1DQorTFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREE4Z2pwNA0KK2JpMHRiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjANCitabTl5
YlM1MFpYTjBNRU9DUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJa
SE0xDQorTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1FZUNSWGh1TFMx
dU9HbzJaSE0xTTJ4Mw0KK2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJN
amhoTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVRCZ05WSFNVRUREQUtCZ2dyQmdF
RkJRY0RBVENDSFZzR0ExVWRFUVNDSFZJd2doMU9naEYzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlWYjNBeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRGt1ZDJWaQ0KK0xYQnNZWFJtYjNK
dExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0F4TG5kbFlpMXcNCiti
R0YwWm05eWJTNTBaWE4wZ2hWdmNETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3Tmk1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJVmJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2
Y0RVdWQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0ZXOXdOQzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlWYjNBNExuZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdoVjNkM2N1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRm05d09EY3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0RBdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPVFF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1ND
Rm05d01UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRBdWQyVmlMWEJzWVhSbWIzSnQN
CitMblJsYzNTQ0ZtOXdNVGN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d056SXVkMlZpTFhC
c1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdN
ak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qZ3VkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NGbTl3TVRNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNell1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRm05d01URXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3Tnpr
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOakV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxj
M1NDRm05d05EZ3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TVRrdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0ZtOXdOREl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05EWXVkMlZp
TFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TXpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0Zt
OXdPVGd1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05qWXVkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNall1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d05qY3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TnpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNemd1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d05qSXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRndWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOVFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qSXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01UZ3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TnpRdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVEV1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016TXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TmprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNekF1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d016a3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRJdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdORE11ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09E
VXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TXpRdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZtOXdNakV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056RXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3TlRBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPRFF1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016RXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMz
U0NGbTl3TlRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORGt1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDRm05d05EUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRVdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05
d056WXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRRdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0ZtOXdPREV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EZ3VkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdP
VFV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05URXVkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVFV1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d01qY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TVRJdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOelV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d05EY3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T1RZdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdPVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05UY3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdOVE11ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qa3VkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TWpVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRE11ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d09UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRF
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d056QXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpBdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdPVEl1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056Z3Vk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RrdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdNVEF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d056Y3VkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TlRrdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVFV1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05qVXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TmpndWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVEF1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09ESXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NHVzl3Tmk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NHVzl3T0M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMz
U0NHVzl3T1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHVzl3TkM1dWIzUXQNCitkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NHVzl3Tnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
WGQzDQorZHk1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHVzl3TWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NHVzl3TVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
WGQzZHk1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NHVzl3TlM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHVzl3TXk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TWpjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRdw0KK0xtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBME5TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitj
M1NDR205d09UWXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNESTRMbTV2ZEMxM1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTRNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdNek11Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUyTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TmpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFNExt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBME9DNXViM1F0ZDJWaQ0KK0xYQnNZWFJt
YjNKdExuUmxjM1NDR205d05ETXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzUN
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsDQorYzNTQ0dtOXdPVFV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
RGN6TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E1TVM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRJdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHB2Y0RJMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk9TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d016SXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBa
WE4wZ2hwdmNETTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVPQzV1YjNRdGQy
VmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRGMyDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F4TXk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3TnprdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHAzZDNjeUxuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE5p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056Y3VibTkwDQorTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2Iz
QTFOUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVEl1Ym05MExYZGxZaTF3YkdG
MFptOXkNCitiUzUwWlhOMGdocHZjRFEwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0ExTkM1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3T1RRdWJtOTBMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RNMA0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhYjNBek1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR25kM2R6RXVkM2QzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNESTFMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJYWIzQTJOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNakF1Ym05MA0K
K0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWENCitiM0EwTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRJdWJt
OTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFd0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBM01pNXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01q
SXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQTNOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dt
OXdOamN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd3TG01dmRDMTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TXpFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBeU15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDR205d016VXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNERTJMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNemd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFU0DQorTG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NHbTl3TVRRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rrd0xt
NXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d01URXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
RTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTJOUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOVEF1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdo
cHZjRFk0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0Tnk1dWIzUXRkMlZpDQor
TFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdQ0KK2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNE1pNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d09UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwM2QzY3VkM2QzTVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQXlNUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdocHZjRGszTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0E0T0M1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpRdWJtOTBMWGRsWWkxd2JHRjBabTl5
DQorYlM1MFpYTjBnaHB2Y0RZMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBME9T
NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDR205d05Ua3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUTINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIz
QXpOaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdNemt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRFEzTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SWFiM0F4Tnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpVdWJtOTANCitMWGRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhDQorYjNBMU55NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVibTkwTFhk
bFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYmQzZDNNaTUzZDNjeExuZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNkM2N4TG5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpJdWQzZDNNaTUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2gx
M2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVkM2QzTWk1M2QzY3UNCiti
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2g1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NIbmQzZHpFdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJZWQzZDNMbmQzZHpFdQ0KK2JtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjdWQz
ZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0gzZDNkekV1ZDNkM01pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzDQorTVM1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJs
YzNTQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5odUxTMXMN
CitkbVV0Tm14aFpDNTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14
aFpDNXViM1F0DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZ
V1F1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSTNkM2R6RXVlRzR0TFd4MlpTMDJiR0ZrTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lOM2QzY3kNCitMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJamVHNHRMV3gyWlMwMmJHRmtMbmQzDQorZHpJdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5teGhaQzUzZDNjeExuZGxZaTF3YkdGMA0KK1ptOXli
UzUwWlhOMGdpWjNkM2N1ZUc0dExXeDJaUzAyYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnoNCitkSUltZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ozZDNkekV1DQorZUc0dExXeDJaUzAyYkdGa0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUluZDNkM01pNTRiaTB0YkhabA0KK0xUWnNZV1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdpZDRiaTB0YkhabExUWnNZV1F1ZDNkM01TNXUNCitiM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0DQorY0d4aGRHWnZjbTB1
ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbQ0KK2Iz
SnRMblJsYzNTQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1DQorZEdWemRJSXRlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dF
dWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaTEzZDNjdWVHNHRMVzQ0YWpaa2N6VXpi
SGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5kM2R6SXVlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0xuZDNk
ekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0K
K2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekV1ZDJWaUxYQnNZWFJt
YjNKdExuUmwNCitjM1NDTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWQy
VmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0wzaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpz
WVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnakY0YmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdqRjNkM2N1
ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwDQorWm05eWJT
NTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJ
dA0KK2NHeGhkR1p2Y20wdWRHVnpkSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVk
M2QzTVM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNbmQzZHpJdWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRi
aTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1Mw0KK2QzY3lMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJMmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkNCitPR0V1ZUc0dExXeDJa
UzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqWjRiaTB0YkhabExUWnNZV1F1DQorZUc0
dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1
TFMxcw0KK2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ09uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5odUxTMXNkbVV0Tm14aFpDNXViM1F0DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVhodUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdQ0KK09HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdrVjRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNu
Rm9kakk0WVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzDQor
WVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFJZVR1Mkl5VHBBUGJVWUN4
ZlIzVDZCcQ0KK2Q1WW1vM1RHOHBuWnJzWXF6SHRDSXZHb084MUpFSUpkaFB5aXRiSmQvdXNidGtF
VGhMaGFmZVFpOVJtaUNaWXYNCitDVWV4MElkVXhIYVczNlp4NGtJek5MZjAyemN4d0JKdEFGcGYv
eUFzUWRLSUkwWkZOR1IxV2tScW5hdGZ6NXR5DQorU0svUzU5M01ZOXNPN3hkeHNQY1FuSjdXUGFY
SzY2MHlPMUdvdGJoNGJSd3BkTDh1SnZGVnBlNitVQU9TNjRNaw0KK2pLeUZJeTNaOUhsYitIUFYw
d0ZCUzg5V3FxRWZBb0xrYnJmMEtFam9CcnZJbElYZjgvdExvZ1RUVVNiWmQ2NjcNCitxZjg4U1gv
MHRZVk1FWUM2L0lVaXlpZ0F4L2hNaXVXQ0RDUzEwbVdMd1lmUHMySndEUVJsU0lvdmVOQnArd2c9
DQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRl
c3Qua2V5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkKaW5kZXggYjYyYWYyMDhjMzRjYjMxNjdhZTY0
MDM4Y2RmZjY5NmYwNDc4OTNlYi4uY2ZhY2NjZTQyM2VkZWRkYjg5MGQ0YTgwNjgzYzc0NzY5MmUy
M2ZlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0u
dGVzdC5rZXkKQEAgLTEsMjggKzEsMjggQEAKLS0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQot
TUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFDclpYVlht
T1BscW8vKwotMnhqMTVQZ2NaR0hHby9ib2ZpUVEzZ2w2SkwxVlgxR3B0WUlOaFRxMnNVaGZOOHRD
YitjSHl6YXBPOW9VbXdxdwotcDVVcDd0SjRJcDd1RTEvd3dTeFZjdkNhd0c1L1BONWlEN0gyd3Nt
RXBwSFhPYzNMbDA4NS9nemVzKzErTm4rcQotQVJtcDFiRi92anBsRDZWZEgyckJXM3NKM0RBb0Jh
b1hsQU1mZVJBRkRwYXFhKzlseE1yTTVXa1VIbmRRK3VFTQotNmtaeWV2aHlwMDJYRFAwdkx3TkN0
UExHQjBlbUFBZkM3eHB3UkdWR1N0RXNVaGYvbWM5eU5OYUtncUJLSTBubwotb1ZudVUzUkdkS0hQ
MTh2Y2p0QlNWMGxZZ2pmZzlhMDdPQnUxaGdRZmZob2ZpMkJ5ZGZhQ3BCQU16RmhsdTF1eQotczZh
aFZrSnBBZ01CQUFFQ2dnRUFmbXZ6eFkwTWJGY0dwMkZNWS9OajN1MWNBWHpubmsyTXBMUmlJU29B
VFh4bAotYTl4cDlUY1VPN1ZBUUp1UzNZcFV5cmJsdHFaakVWZmE1cnAxbDl5RWVnQnZZZ1FBZkVE
QVJyYmxLZ0JPZ0tPUgotRkp1bkZQQlFXL3ZSRHdPZi9FKzdMSGRyWHNrd29DdnF0cWJoR3hoNE9G
VkVGVThaRmpzYUwwMGUwQU1Oc2pabAotME9zRU9ObElING5DYTdFNkRUYXNIeGMxVmtIUXIzdXZC
bDUvNEhmT2MwNXRyK1pLbE1ZWHpBUFdrTDBzQzIxNgotRHF5NEF4SjBNMGF4OEJZRVp1bzBncVFt
TUFvbkpUa0VucHlvRDR6ODlTODc3dkZwOHcxVlBiR1lrVjQ4eWpWLwotSTdmUTZZanQzeWcrYXMr
czRhckdFc1VCMGwrWEFwQllZWS9KK3FjWVVRS0JnUURlZDdET01KVWMza1BURkVjTgotcC9FYlNo
OVRYeFMvNzRjSXlHaWQ5SUVpUkVKWXhZdjhrejBLcGxHdUpvbElRMy9JazlSYWM2QjNUdTRXa1cw
ZwotVFBiTnVuWUVzeWRaQkFuYVE0ZUFWZE9mdlJRNlYzZUJaMnZFcnNISlJGYWo1Y09jZXNVWHhC
Wkk2bTJ0UUVTeAotZEJXRkRORzlrenRyMEhtYUw2UHV6NHpaSXdLQmdRREZPeGZSN0ZjcEdkdzYx
emlTc1ptdHZrZjZlcGtHMytvdQotdWhZNTBKMFVyVGJLN1R1aW1rb1J3L1hIZUJlNGRiK2VqT091
TEQ5UUUveVh2bXRFV3V5VVRUWU9WdlorSHVOagotUnAza2RpMUd1V1huNmdSdmRsa2Y5WHdXN2pI
bWdrcGJBNUErdURYczNFWVlhMThMeFBOZk1Tdmh5SGRrRm5VRwotYVR6eVlOcGRBd0tCZ0d2L1FO
YW40UXQxbndsdVU1ditobDZRR2lyNEFuTzJ6Ui9uWWxvajR6aUdXSXNOdzRwbQotMUFCQ2cyNStp
TENMREJLTUtVK0x5RCtERXJQai8wenA3L29wWmJlY1hTS3Fnam55QkdxNXY1VlJUZXVRb0pReQot
WjYvQWdwUzVWeklUaldWK2VBVzBqSGp6VFRFSS9SQUVZWm9JZ2gxOHh5RHN3TXVvQ3ZZWXpiQnZB
b0dCQU1NMgotSS9Odyt5d0JIb3RXcmZYenR1blNwaWR5NUxkN05LeWZIcFNHdUpMWWhwei9oY0VB
K1VMd00vb0VFV1pQbFNOMgoteTN0KzdBTjBaTlJFY3FNclkzRzlvajA3TWFuUEpMMEVEZzhzTU5B
SmZLVzRhRDl5WWZCUjUwcEM1RDBFeEZlbAotQlVZdXlhRHd2S2c2emM0MlY3UG1WVXFhUWlGY1lP
UEJrY05NdlpURkFvR0JBTEJ0ZHQwaUl2dEJvcHArSVFhVgotelpNQTVaUUlRNW41djA3MUxLYTFz
N2FyMytoSW9EUnNaYk03WGtVSUE4elFscndGUmhiVTVZRk5jYnBvb1FTbQotN2o0K2ZJdWRjcHhq
OXRBTUdBYjV5Zzg5azFEalR5N0ZVV0w5ZWxHSWd2Sk1xZ0Y2SVE1Myt2Ujh4d0dEeVFMQgotc1A1
bWl6RjF3aTQ3RFlQSlFjRFJDelUrCi0tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJF
R0lOIFBSSVZBVEUgS0VZLS0tLS0NCitNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JL
Y3dnZ1NqQWdFQUFvSUJBUUMvZnVZcWJKTFlLb1R3DQorRnphdW5TSjM2Mm1wQTdCb1dPSU1pVEZr
R0sxdFpBZ3B6MnJ2ekJENXN6Tk1JckhhSkYvRE1mSHhlMkNYc25rRA0KK1hXYmMwY3VEN05NTTRk
S2JmUmJqbnR4WTNXeUpkNWlqRExKOGJ0Qy9QU3dab2NtSHdncE9xQjQwcUcvYUxRcE4NCit3TFJ4
QmtsaDZockFaTUhUc0kvQU80SUJLTVRvTVlzSFM3WDdZaGRNS2czZXE4N2NnR2kvcXgxRjRxU2lB
V29GDQorMzBIbS9maVVMdUtmcEFGVmZldkJQVDVoVUtEcU55clZ4eGhNN1BVTk9XMVUwd1F4UnRn
U29BcUNZMjJDcEk3Vw0KK2drTmhteDJVbXJBZE5RTDR1MVYvalBjaDRtVTJRcW1MV0JHUW9Id29S
ZGliaUpXYUp1bjlSd2VEY0lxWUd3dE8NCitoSXdHdCtMakFnTUJBQUVDZ2dFQWNEZW9IN0pTZHpT
cmhKckY0NXVYcUZpZktYbE05a2tuNXBxN0ErSm1OeFdJDQorcHgreWxlV3JDUGpYbGNVN0hnOTB3
c2xROCtjT0dyZHVyT2NlTVVjTUVUcEdEMldDYXJYcUpPZGlUdjBxN24vVQ0KK1JiQmFKQXM0YnVr
bEg3d3NnazdXaFhPRmgrd3c1OVMvRmdOWWVtZHB0MlJkMnVMd3B1SHZ5NEhUMUdRVXg4L0MNCis5
cWhOdXU5MkJORXc1WVhaaldsVVhzWDQvTU9oUXM2aWFFZmVHcGhvMjB1aFVSUlpsRzVrdi96Q3E5
eUNYK3NhDQorTzVDNTA0emtaZ1hvakN2ZWFoT1hlV0xyaE5uUnAxZHQzREhWcDNjRjJmeVAwSVJi
Kyt5dzBaWWR2Y2J5Yzgycw0KK0JIZW5qQzN2QnduZzdhQTk1UWVoeWVMUU8zUFZWajhRUG5kVkI3
MmFRUUtCZ1FENzF5WTJ0QnlYempIZ0RSYUcNCitkRERZUXRneVZmejRjWCtrUytCWVdXenVDUW85
L1VvYnd1Y1VUbVV6MVJjMDQvcXVTay9wNjNhZzF2YnF4eW9HDQorcFZ5VjJQNklZNStGM3BFa2xX
dGZYbXk3QW51azhqVWdYamdTMis3OGd4UHp5NDlOd2VUTlRVY2xMQVpKU0ZrTA0KK0dBQjZvWFcw
dGFlVlJzQ1o5Z2dwdjBVU29RS0JnUURDcUpoK01tdHAwNHpjalJtMGdVWm1mOEVyRlhZajZ1cXIN
CityVnNHUUxuNndSUmNjOEpyTkE0WGJscTdyamY3QjVEMkRzOElwb1BlRm9COEdhK1BHZTRNUUpa
ZEcwVW12UUZnDQorUlhwQWlCNk83bjQrOG9hWFNPbUZwRkw1SmQwL0NkR3V0V0c0NEN3Sm9yYkNC
WXFWOGZJRjVVYVlGR2lnSkVVVA0KK1dyY1BRMFBMQXdLQmdIUlhuR3ZCSVVSd0dWSnNPVys3MWFU
U25KWUVhMjFLNGJEQTdNOWo0SkxHMGxoNDN2ZWMNCitQcXgrMnZuckEyR0h3Sk1yK1djVFJDWmhx
SWdsb2lDWDNBSE4wU2lvL1ZVVzBPNlpxSlRTUm1ET2NOaHVuR1JyDQorb25QejdwL3czaExPZzFG
a3RaS3lsSjl6aXlQbnJGc1hwNEQvZmlVUmxtMjcxZFpLZHRMeWJiS0JBb0dBU1JFdg0KKzdHN1Fr
dkN0dHp2Zm9qbkVTMFU1SlFyeFJab3diREN1TWpLcG5NNU03a2NsZTBnVzRnU3lXakNUSXM4OFFx
QmMNCitaa3JheE1wOWdCZkVKbHI5Vit3R2hQeHZnSk1CcVRscklqMzErb0RiTXBXbW43TG10UnR4
YWNRa3dEelhVRlVWDQorVVdnVUg2bk1JQmdrWlJSa1hJSXJkWHB6cTJqeDVNbndYUEpLeURFQ2dZ
RUEwOVAyWndlQkpFOWE5b29LR1dvaQ0KKzJpUlY0R0FlSVpHVVh5MXNUL0RXTTZlVXNwdUZzSUUx
ZGFrMEo1VlZLZEljZTdDVjNJcERFOFBaNVAwaVVmaWUNCitnTDE3MEt4ZkpSa09mSTZweDR3QldH
ZS9STTBuSW5XSklJUjVvR2NpZnpCeDd0VlFxS2J6TmNsTFVrTU9oaGc3DQorZXBaZFBKSnVaU2dy
aXhhUG83eW16NDA9DQorLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2Vi
LXBsYXRmb3JtLnRlc3QucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5wZW0KaW5kZXggNTk1OTMxNmJi
NWI0ODI1ZTY0MGJiMWY3Y2FiMDhiYzlmNDA1YTYzYS4uNjhhOWI5NmYzZWU5ZDljZGE1N2RhZWI2
Nzk2YjViNjc0ZDc1YWM0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5wZW0KKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93
ZWItcGxhdGZvcm0udGVzdC5wZW0KQEAgLTEsMTMzICsxLDIzOSBAQAotQ2VydGlmaWNhdGU6Ci0g
ICAgRGF0YToKLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQotICAgICAgICBTZXJpYWwgTnVtYmVy
OiAzNzMwNjQgKDB4NWIxNDgpCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJT
QUVuY3J5cHRpb24KLSAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVzdHMKLSAgICAg
ICAgVmFsaWRpdHkKLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IE9jdCAxNCAxMzo0OToyOSAyMDE5
IEdNVAotICAgICAgICAgICAgTm90IEFmdGVyIDogT2N0IDExIDEzOjQ5OjI5IDIwMjkgR01UCi0g
ICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0Ci0gICAgICAgIFN1YmplY3QgUHVi
bGljIEtleSBJbmZvOgotICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5
cHRpb24KLSAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMjA0OCBiaXQpCi0gICAgICAgICAg
ICAgICAgTW9kdWx1czoKLSAgICAgICAgICAgICAgICAgICAgMDA6YWI6NjU6NzU6NTc6OTg6ZTM6
ZTU6YWE6OGY6ZmU6ZGI6MTg6ZjU6ZTQ6Ci0gICAgICAgICAgICAgICAgICAgIGY4OjFjOjY0OjYx
OmM2OmEzOmY2OmU4OjdlOjI0OjEwOmRlOjA5OjdhOjI0OgotICAgICAgICAgICAgICAgICAgICBi
ZDo1NTo1Zjo1MTphOTpiNTo4MjowZDo4NTozYTpiNjpiMTo0ODo1ZjozNzoKLSAgICAgICAgICAg
ICAgICAgICAgY2I6NDI6NmY6ZTc6MDc6Y2I6MzY6YTk6M2I6ZGE6MTQ6OWI6MGE6YjA6YTc6Ci0g
ICAgICAgICAgICAgICAgICAgIDk1OjI5OmVlOmQyOjc4OjIyOjllOmVlOjEzOjVmOmYwOmMxOjJj
OjU1OjcyOgotICAgICAgICAgICAgICAgICAgICBmMDo5YTpjMDo2ZTo3ZjozYzpkZTo2MjowZjpi
MTpmNjpjMjpjOTo4NDphNjoKLSAgICAgICAgICAgICAgICAgICAgOTE6ZDc6Mzk6Y2Q6Y2I6OTc6
NGY6Mzk6ZmU6MGM6ZGU6YjM6ZWQ6N2U6MzY6Ci0gICAgICAgICAgICAgICAgICAgIDdmOmFhOjAx
OjE5OmE5OmQ1OmIxOjdmOmJlOjNhOjY1OjBmOmE1OjVkOjFmOgotICAgICAgICAgICAgICAgICAg
ICA2YTpjMTo1Yjo3YjowOTpkYzozMDoyODowNTphYToxNzo5NDowMzoxZjo3OToKLSAgICAgICAg
ICAgICAgICAgICAgMTA6MDU6MGU6OTY6YWE6NmI6ZWY6NjU6YzQ6Y2E6Y2M6ZTU6Njk6MTQ6MWU6
Ci0gICAgICAgICAgICAgICAgICAgIDc3OjUwOmZhOmUxOjBjOmVhOjQ2OjcyOjdhOmY4OjcyOmE3
OjRkOjk3OjBjOgotICAgICAgICAgICAgICAgICAgICBmZDoyZjoyZjowMzo0MjpiNDpmMjpjNjow
Nzo0NzphNjowMDowNzpjMjplZjoKLSAgICAgICAgICAgICAgICAgICAgMWE6NzA6NDQ6NjU6NDY6
NGE6ZDE6MmM6NTI6MTc6ZmY6OTk6Y2Y6NzI6MzQ6Ci0gICAgICAgICAgICAgICAgICAgIGQ2Ojhh
OjgyOmEwOjRhOjIzOjQ5OmU4OmExOjU5OmVlOjUzOjc0OjQ2Ojc0OgotICAgICAgICAgICAgICAg
ICAgICBhMTpjZjpkNzpjYjpkYzo4ZTpkMDo1Mjo1Nzo0OTo1ODo4MjozNzplMDpmNToKLSAgICAg
ICAgICAgICAgICAgICAgYWQ6M2I6Mzg6MWI6YjU6ODY6MDQ6MWY6N2U6MWE6MWY6OGI6NjA6NzI6
NzU6Ci0gICAgICAgICAgICAgICAgICAgIGY2OjgyOmE0OjEwOjBjOmNjOjU4OjY1OmJiOjViOmIy
OmIzOmE2OmExOjU2OgotICAgICAgICAgICAgICAgICAgICA0Mjo2OQotICAgICAgICAgICAgICAg
IEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKLSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6Ci0g
ICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAotICAgICAgICAgICAgICAgIENB
OkZBTFNFCi0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCi0gICAg
ICAgICAgICAgICAgMkE6MTg6MEI6MDk6MjI6NkU6Mjg6RDI6REI6RkQ6QzI6MkQ6NDA6QTY6RjM6
Mzg6NjI6NkU6Qzc6QzUKLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZp
ZXI6IAotICAgICAgICAgICAgICAgIGtleWlkOjQxOjQ5OkZGOjhDOjY2OjUwOjVGOjg3OkExOjA2
OkE4OkJCOkFCOjhBOkREOjczOjBEOjBFOjM3OjFBCi0KLSAgICAgICAgICAgIFg1MDl2MyBLZXkg
VXNhZ2U6IAotICAgICAgICAgICAgICAgIERpZ2l0YWwgU2lnbmF0dXJlLCBOb24gUmVwdWRpYXRp
b24sIEtleSBFbmNpcGhlcm1lbnQKLSAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNh
Z2U6IAotICAgICAgICAgICAgICAgIFRMUyBXZWIgU2VydmVyIEF1dGhlbnRpY2F0aW9uCi0gICAg
ICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKLSAgICAgICAgICAgICAg
ICBETlM6d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53
d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Mi53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3Lnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cx
Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02
bGFkLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1
M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3
dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cyLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFo
djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QKLSAgICBT
aWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgotICAgICAgICAgYWY6
YzI6ZWE6Y2M6NmE6NWU6NDk6ZTA6ZGI6NzI6MTQ6MDU6M2M6MjE6YTA6OGI6ZmY6YjY6Ci0gICAg
ICAgICBhOTo3MTo4MjpmNzo2MTpjZDoyMzoyYTowMDo2Njo5MTphYzowMTo5OTo2MzozODoxMToy
MToKLSAgICAgICAgIDg1OmIyOjU3OjkyOjBiOjNmOjc5OjY4OmY1OmQ4OjU5OjhiOmE3Ojc0OjE5
OmViOjBiOmU3OgotICAgICAgICAgM2Q6ODY6NGU6NjY6ZDQ6ZTY6MmY6ZmY6ZWQ6NmM6N2Q6OWE6
NWU6MTI6NGU6YmY6Mzk6ZmY6Ci0gICAgICAgICBmNzpkMDpmYjo1Mjo1MzphMDpmYjpiMTo1Yzo5
YTo5MTo5MjozNjowMDpkODphNDo2ZjpmOToKLSAgICAgICAgIDljOjM2OjIxOmIyOmMyOjVlOjE0
OjExOmNhOjU1OmU3Ojg4OjMwOjYwOjhkOjg2OmRhOjY1OgotICAgICAgICAgMjY6ZmY6ZTI6NDU6
MzY6MmE6MDk6M2Q6YTQ6YmI6Mzg6NjE6NGQ6NTc6ZTQ6Yzk6YjY6NTA6Ci0gICAgICAgICAzYzow
NjoyZjo2YjpiZjowNDozNDo0Mjo1NDpkYzo1MzpiNjo2MTpjNTo0ZTo0MDowMDpkNjoKLSAgICAg
ICAgIDVlOjE5OjE3OjNhOjU0OjJjOmM1OjE2OjdhOjZkOjRhOjcwOjU2OjQ1OmNkOjk5OjVhOjJh
OgotICAgICAgICAgZDE6YTc6NGU6MzU6OTc6M2Q6ZDg6Yzk6OTU6ODA6YWI6MTU6NDI6ODY6ZjY6
YTA6YTY6YzM6Ci0gICAgICAgICAyMTpjMTo5YTowNzozNDo0OTphZDo2MTozYzpiYzo5NDpiMjoy
ZDo5MjpmNzo0NDo4MDowMToKLSAgICAgICAgIDVmOjI3OmJkOjgzOmY1OjUxOjIyOjM5OmNkOjk4
OmIxOjM5OjIzOmI4OmY0OjVjOjA4OjIwOgotICAgICAgICAgOWU6ZmU6ZjE6MmQ6OWE6ZTk6OWI6
Yzc6NWU6Yjg6MzM6OGI6MTY6Nzc6NTI6M2Q6Yzk6N2E6Ci0gICAgICAgICA0Mzo5ZToyNTpkMDpj
Nzo1YTo5NjowODo1MzoxYTpkYzo3NTo1Mzo3NTo0NDo2MjoxODo3YzoKLSAgICAgICAgIGVmOmZi
OjczOjUyCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSU1zakNDQzVxZ0F3SUJBZ0lE
QmJGSU1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwKLVlpMXdiR0YwWm05
eWJTMTBaWE4wY3pBZUZ3MHhPVEV3TVRReE16UTVNamxhRncweU9URXdNVEV4TXpRNU1qbGEKLU1C
d3hHakFZQmdOVkJBTU1FWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNSUlCSWpBTkJna3Foa2lHOXcw
QkFRRUYKLUFBT0NBUThBTUlJQkNnS0NBUUVBcTJWMVY1amo1YXFQL3RzWTllVDRIR1JoeHFQMjZI
NGtFTjRKZWlTOVZWOVIKLXFiV0NEWVU2dHJGSVh6ZkxRbS9uQjhzMnFUdmFGSnNLc0tlVktlN1Nl
Q0tlN2hOZjhNRXNWWEx3bXNCdWZ6emUKLVlnK3g5c0xKaEthUjF6bk55NWRQT2Y0TTNyUHRmalov
cWdFWnFkV3hmNzQ2WlErbFhSOXF3VnQ3Q2R3d0tBV3EKLUY1UURIM2tRQlE2V3FtdnZaY1RLek9W
cEZCNTNVUHJoRE9wR2NucjRjcWRObHd6OUx5OERRclR5eGdkSHBnQUgKLXd1OGFjRVJsUmtyUkxG
SVgvNW5QY2pUV2lvS2dTaU5KNktGWjdsTjBSblNoejlmTDNJN1FVbGRKV0lJMzRQV3QKLU96Z2J0
WVlFSDM0YUg0dGdjblgyZ3FRUURNeFlaYnRic3JPbW9WWkNhUUlEQVFBQm80SUorakNDQ2ZZd0NR
WUQKLVZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVUtoZ0xDU0p1S05MYi9jSXRRS2J6T0dKdXg4VXdI
d1lEVlIwakJCZ3cKLUZvQVVRVW4vakdaUVg0ZWhCcWk3cTRyZGN3ME9OeG93Q3dZRFZSMFBCQVFE
QWdYZ01CTUdBMVVkSlFRTU1Bb0cKLUNDc0dBUVVGQndNQk1JSUpoUVlEVlIwUkJJSUpmRENDQ1hp
Q0VYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnUKLWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGWGQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2QzZDMKLU1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDMKLUxtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnoK
LWRJSWFkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpFdWJtOTBMWGRs
WWkxd2JHRjAKLVptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFkM2QzTWk1M2QzY3UKLWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1ZDNkM0xu
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDMKLWQzY3VkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYmQzZDNNUzUzZDNjeExuZGxZaTF3YkdGMFptOXkKLWJTNTBaWE4wZ2h0M2QzY3hMbmQz
ZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDNkekl1ZDNkM01pNTMKLVpXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYmQzZDNNaTUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoMTMKLWQz
Y3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVkM2QzTG5kM2R6SXVibTkwTFhk
bFlpMXcKLWJHRjBabTl5YlM1MFpYTjBnaDUzZDNjeExuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0huaHUKLUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVk
M2QzTG5kM2R6RXVibTkwTFhkbFlpMXcKLWJHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDMKLWR6SXVkM2QzTWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNUzV1YjNRdGQyVmkKLUxYQnNZWFJtYjNKdExu
UmxjM1NDSDNkM2R6RXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKLUgzZDNk
ekV1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpD
NTMKLWQzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVk
MlZpTFhCc1lYUm0KLWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0kzaHUKLUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2lOM2QzY3lMbmh1TFMxc2RtVXQKLU5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnMKLVlYUm1iM0p0TG5SbGMzU0NJ
M2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjAKLWdpWjRiaTB0
YkhabExUWnNZV1F1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUltZDNkM0xuaHUK
LUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSjNodUxTMXNkbVV0
Tm14aFpDNTMKLWQzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJbmQzZDNNaTU0Ymkw
dGJIWmxMVFpzWVdRdWJtOTAKLUxYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpZDNkM2N4TG5odUxT
MXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnMKLVlYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRO
bXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUKLWRHVnpkSUlwZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MKLUszaHVMUzFzZG1V
dE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xYaHUKLUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
dGVHNHQKLUxXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2kxM2QzY3UKLWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDTG5kM2R6RXUKLWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5odUxTMXUKLU9HbzJaSE0xTTJ4M2QydHljV2gyTWpo
aExuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5kM2R6SXUKLWVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5odUxTMXUKLU9HbzJa
SE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTDNodUxT
MXMKLWRtVXRObXhoWkM1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2pGNGJpMHQKLWJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdqRjMKLWQzY3VlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjAKLWdqSjNkM2N4TG5odUxTMXVPR28yWkhNMU0y
eDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUKLWRHVnpkSUl5ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm0KLWIzSnRMblJs
YzNTQ01uaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVibTkwTFhkbFlpMXcK
LWJHRjBabTl5YlM1MFpYTjBnakozZDNjeUxuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG01dmRDMTMKLVpXSXRjR3hoZEdadmNtMHVkR1Z6ZElJMmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1ZUc0dExXeDIKLVpTMDJiR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJp
MHRiSFpsTFRac1lXUXVlRzR0TFc0NGFqWmsKLWN6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0Tm14aFpDNTQKLWJpMHRiamhxTm1Sek5UTnNkM2Ry
Y25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHUKLUxTMXVPR28yWkhN
MU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0KLWIz
SnRMblJsYzNTQ1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhN
MU0yeDMKLWQydHljV2gyTWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdrVjRiaTB0YmpocU5t
UnpOVE5zZDNkcmNuRm8KLWRqSTRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKLWMzUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSy9D
NnN4cVhrbmcyM0lVQlR3aG9Jdi90cWx4Z3ZkaHpTTXEKLUFHYVJyQUdaWXpnUklZV3lWNUlMUDNs
bzlkaFppNmQwR2VzTDV6MkdUbWJVNWkvLzdXeDltbDRTVHI4NS8vZlEKLSsxSlRvUHV4WEpxUmtq
WUEyS1J2K1p3MkliTENYaFFSeWxYbmlEQmdqWWJhWlNiLzRrVTJLZ2s5cExzNFlVMVgKLTVNbTJV
RHdHTDJ1L0JEUkNWTnhUdG1IRlRrQUExbDRaRnpwVUxNVVdlbTFLY0ZaRnpabGFLdEduVGpXWFBk
akoKLWxZQ3JGVUtHOXFDbXd5SEJtZ2MwU2ExaFBMeVVzaTJTOTBTQUFWOG52WVAxVVNJNXpaaXhP
U080OUZ3SUlKNysKLThTMmE2WnZIWHJneml4WjNVajNKZWtPZUpkREhXcFlJVXhyY2RWTjFSR0lZ
Zk8vN2MxST0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KK0NlcnRpZmljYXRlOg0KKyAgICBE
YXRhOg0KKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQ0KKyAgICAgICAgU2VyaWFsIE51bWJlcjog
NzgzMjc5ICgweGJmM2FmKQ0KKyAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0
aFJTQUVuY3J5cHRpb24NCisgICAgICAgIElzc3VlcjogQ049d2ViLXBsYXRmb3JtLXRlc3RzDQor
ICAgICAgICBWYWxpZGl0eQ0KKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEZlYiAxOCAyMDoyOTo0
NyAyMDIwIEdNVA0KKyAgICAgICAgICAgIE5vdCBBZnRlciA6IEZlYiAxNSAyMDoyOTo0NyAyMDMw
IEdNVA0KKyAgICAgICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QNCisgICAgICAgIFN1
YmplY3QgUHVibGljIEtleSBJbmZvOg0KKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGht
OiByc2FFbmNyeXB0aW9uDQorICAgICAgICAgICAgICAgIFJTQSBQdWJsaWMtS2V5OiAoMjA0OCBi
aXQpDQorICAgICAgICAgICAgICAgIE1vZHVsdXM6DQorICAgICAgICAgICAgICAgICAgICAwMDpi
Zjo3ZTplNjoyYTo2Yzo5MjpkODoyYTo4NDpmMDoxNzozNjphZTo5ZDoNCisgICAgICAgICAgICAg
ICAgICAgIDIyOjc3OmViOjY5OmE5OjAzOmIwOjY4OjU4OmUyOjBjOjg5OjMxOjY0OjE4Og0KKyAg
ICAgICAgICAgICAgICAgICAgYWQ6NmQ6NjQ6MDg6Mjk6Y2Y6NmE6ZWY6Y2M6MTA6Zjk6YjM6MzM6
NGM6MjI6DQorICAgICAgICAgICAgICAgICAgICBiMTpkYToyNDo1ZjpjMzozMTpmMTpmMTo3Yjo2
MDo5NzpiMjo3OTowMzo1ZDoNCisgICAgICAgICAgICAgICAgICAgIDY2OmRjOmQxOmNiOjgzOmVj
OmQzOjBjOmUxOmQyOjliOjdkOjE2OmUzOjllOg0KKyAgICAgICAgICAgICAgICAgICAgZGM6NTg6
ZGQ6NmM6ODk6Nzc6OTg6YTM6MGM6YjI6N2M6NmU6ZDA6YmY6M2Q6DQorICAgICAgICAgICAgICAg
ICAgICAyYzoxOTphMTpjOTo4NzpjMjowYTo0ZTphODoxZTozNDphODo2ZjpkYToyZDoNCisgICAg
ICAgICAgICAgICAgICAgIDBhOjRkOmMwOmI0OjcxOjA2OjQ5OjYxOmVhOjFhOmMwOjY0OmMxOmQz
OmIwOg0KKyAgICAgICAgICAgICAgICAgICAgOGY6YzA6M2I6ODI6MDE6Mjg6YzQ6ZTg6MzE6OGI6
MDc6NGI6YjU6ZmI6NjI6DQorICAgICAgICAgICAgICAgICAgICAxNzo0YzoyYTowZDpkZTphYjpj
ZTpkYzo4MDo2ODpiZjphYjoxZDo0NTplMjoNCisgICAgICAgICAgICAgICAgICAgIGE0OmEyOjAx
OjZhOjA1OmRmOjQxOmU2OmZkOmY4Ojk0OjJlOmUyOjlmOmE0Og0KKyAgICAgICAgICAgICAgICAg
ICAgMDE6NTU6N2Q6ZWI6YzE6M2Q6M2U6NjE6NTA6YTA6ZWE6Mzc6MmE6ZDU6Yzc6DQorICAgICAg
ICAgICAgICAgICAgICAxODo0YzplYzpmNTowZDozOTo2ZDo1NDpkMzowNDozMTo0NjpkODoxMjph
MDoNCisgICAgICAgICAgICAgICAgICAgIDBhOjgyOjYzOjZkOjgyOmE0OjhlOmQ2OjgyOjQzOjYx
OjliOjFkOjk0OjlhOg0KKyAgICAgICAgICAgICAgICAgICAgYjA6MWQ6MzU6MDI6Zjg6YmI6NTU6
N2Y6OGM6Zjc6MjE6ZTI6NjU6MzY6NDI6DQorICAgICAgICAgICAgICAgICAgICBhOTo4Yjo1ODox
MTo5MDphMDo3YzoyODo0NTpkODo5Yjo4ODo5NTo5YToyNjoNCisgICAgICAgICAgICAgICAgICAg
IGU5OmZkOjQ3OjA3OjgzOjcwOjhhOjk4OjFiOjBiOjRlOjg0OjhjOjA2OmI3Og0KKyAgICAgICAg
ICAgICAgICAgICAgZTI6ZTMNCisgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEw
MDAxKQ0KKyAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6DQorICAgICAgICAgICAgWDUwOXYzIEJh
c2ljIENvbnN0cmFpbnRzOiANCisgICAgICAgICAgICAgICAgQ0E6RkFMU0UNCisgICAgICAgICAg
ICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogDQorICAgICAgICAgICAgICAgIEFFOkQ4
OjJGOjk5OkJBOkIxOkU4OjAzOkQyOkE1OkM1OjJDOjBEOkJCOjE2OjVDOjlCOjlGOkY3OjA4DQor
ICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogDQorICAgICAgICAg
ICAgICAgIGtleWlkOkY2OkI5OkRBOjE2OjA3OjA1OkJCOjZGOkM5OjYzOjMwOkM2OjY3OjQwOkNC
OjAzOkQzOjFFOjkwOkVDDQorDQorICAgICAgICAgICAgWDUwOXYzIEtleSBVc2FnZTogDQorICAg
ICAgICAgICAgICAgIERpZ2l0YWwgU2lnbmF0dXJlLCBOb24gUmVwdWRpYXRpb24sIEtleSBFbmNp
cGhlcm1lbnQNCisgICAgICAgICAgICBYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlOiANCisgICAg
ICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24NCisgICAgICAgICAgICBY
NTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiANCisgICAgICAgICAgICAgICAgRE5TOndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ny53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wODAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AxNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDE3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDM2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Nzkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0
OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQy
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ni53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Mi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AyMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AzMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AzMS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNDUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM1LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A3Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDgxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMjAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODYud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNy53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDkzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDEwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ny53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE1LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
d3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AyNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQwLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDU2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg5Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNjAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5NS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTMubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODYubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A3Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzAubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNjQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDEwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AyMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUyLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ny5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDUzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AzNS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDkwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE1Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A1MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODIubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wODgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDkubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTcu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZs
YWQud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLWx2
ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFk
LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3
dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4t
LW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0t
bjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRz
NTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUz
bHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZs
YWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZl
LTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUz
bHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0DQorICAgIFNpZ25hdHVyZSBBbGdvcml0
aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uDQorICAgICAgICAgODk6YTQ6NDQ6NDM6ZWY6MGY6
YTY6MzY6NzI6MzE6ODc6NDQ6NzU6ODY6YjY6NWI6NTg6MmM6DQorICAgICAgICAgY2I6MWM6MGE6
MmU6MzU6MzI6ODM6ODA6NzA6NzA6MWM6Yjc6NGE6ZDE6NDU6NDQ6Nzg6YzQ6DQorICAgICAgICAg
MTc6ZDg6Nzc6MzQ6NGU6NDI6ZDI6NzI6MjI6ZmU6MGQ6MGE6YWU6Yjg6MDY6OTQ6ZDA6NmQ6DQor
ICAgICAgICAgN2E6MjE6ZDg6YTQ6ODM6MzM6MTc6ZDM6MDQ6YTg6OTM6NmY6NjY6ZjA6MzM6MTk6
MDU6MDc6DQorICAgICAgICAgYjU6MzU6ODM6Mjg6YTk6OGY6ODU6MTg6MWE6ODY6ZGY6ZTg6YmU6
OGQ6Y2Y6NmE6MjQ6YzE6DQorICAgICAgICAgMDg6MjY6ZGQ6MDI6OTg6MWM6MDE6ZDg6ODE6NGE6
ZTQ6MjA6MTQ6MTk6N2M6ZWY6OTE6YjU6DQorICAgICAgICAgM2U6ZGE6NWE6ZjY6MTQ6NDU6MTg6
N2Q6NDU6NGI6Mjg6NzY6MzM6NTg6YzU6OGM6Yzk6MmQ6DQorICAgICAgICAgZWY6ODk6MTE6NzA6
N2Q6ZWI6NDc6OWU6MTI6YjA6ODE6MTk6Yzg6MDc6ZDk6Y2M6ODc6ZjE6DQorICAgICAgICAgMWI6
ZmU6ZjA6OGY6YjI6YzM6ZjE6ZGE6ZjA6NTU6ZTU6NGE6OWI6ZmY6MGQ6MDE6NWY6NjU6DQorICAg
ICAgICAgOTU6MDc6OTI6YzY6N2I6NzM6OTU6NTk6YWE6NmI6YzY6OWM6MDE6NGU6YTI6MmI6ZWE6
Nzc6DQorICAgICAgICAgZDQ6ZjQ6YWI6ZDY6ZTU6OTQ6ZWI6ODE6Mzc6NTU6OWM6OTA6M2Y6NzM6
MjM6MWQ6ODQ6YzI6DQorICAgICAgICAgODI6NDI6NTY6OWE6MTM6Njk6MzM6NDg6ZDY6MGQ6MGU6
NTg6ODI6YWM6OTA6ZWY6YjM6YTA6DQorICAgICAgICAgNmM6ZGU6Nzk6ZjY6MTc6YzU6ZjA6MWU6
ZjM6Mzc6NzQ6MDE6ZjA6NDc6OWM6Nzc6OWM6YTc6DQorICAgICAgICAgYWY6ZTA6NjA6Y2E6ZDc6
MDI6ZGQ6NTA6NDg6Njk6YjE6MWI6ODM6ODc6NWE6N2M6NzQ6NDQ6DQorICAgICAgICAgZGE6YzU6
ZGU6YjgNCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0NCitNSUlnaURDQ0gzQ2dBd0lCQWdJ
REMvT3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsDQorWWkxd2JHRjBa
bTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5TURJNU5EZGFGdzB6TURBeU1UVXlNREk1TkRkYQ0K
K01Cd3hHakFZQmdOVkJBTU1FWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNSUlCSWpBTkJna3Foa2lH
OXcwQkFRRUYNCitBQU9DQVE4QU1JSUJDZ0tDQVFFQXYzN21LbXlTMkNxRThCYzJycDBpZCt0cHFR
T3dhRmppRElreFpCaXRiV1FJDQorS2M5cTc4d1ErYk16VENLeDJpUmZ3ekh4OFh0Z2w3SjVBMTFt
M05ITGcrelRET0hTbTMwVzQ1N2NXTjFzaVhlWQ0KK293eXlmRzdRdnowc0dhSEpoOElLVHFnZU5L
aHYyaTBLVGNDMGNRWkpZZW9hd0dUQjA3Q1B3RHVDQVNqRTZER0wNCitCMHUxKzJJWFRDb04zcXZP
M0lCb3Y2c2RSZUtrb2dGcUJkOUI1djM0bEM3aW42UUJWWDNyd1QwK1lWQ2c2amNxDQorMWNjWVRP
ejFEVGx0Vk5NRU1VYllFcUFLZ21OdGdxU08xb0pEWVpzZGxKcXdIVFVDK0x0VmY0ejNJZUpsTmtL
cA0KK2kxZ1JrS0I4S0VYWW00aVZtaWJwL1VjSGczQ0ttQnNMVG9TTUJyZmk0d0lEQVFBQm80SWQw
RENDSGN3d0NRWUQNCitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVydGd2bWJxeDZBUFNwY1VzRGJz
V1hKdWY5d2d3SHdZRFZSMGpCQmd3DQorRm9BVTlybmFGZ2NGdTIvSll6REdaMERMQTlNZWtPd3dD
d1lEVlIwUEJBUURBZ1hnTUJNR0ExVWRKUVFNTUFvRw0KK0NDc0dBUVVGQndNQk1JSWRXd1lEVlIw
UkJJSWRVakNDSFU2Q0VYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnYNCitjREl1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRlc5d09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EzDQorTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNERXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3
TXk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTJMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaFZ1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOUzUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlWYjNBMExuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdoVnZjRGd1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRlhkM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0
Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRNQzUzWldJdGNHeGgNCitkR1p2Y20wdWRH
VnpkSUlXYjNBNU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJV2IzQTBNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE55NTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
V2IzQTJOQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeU15NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F5T0M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhNeTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdi
M0F4TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPUzUzWldJdGNHeGgNCitkR1p2Y20w
dWRHVnpkSUlXYjNBMk1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwT0M1M1pXSXRjR3ho
DQorZEdadmNtMHVkR1Z6ZElJV2IzQXhPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBME1p
NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EwTmk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJV2IzQXpOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9DNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0EyTmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2QzZDNNUzUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0EyTnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNNeTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTFPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
MU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXlOQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F4T0M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNO
QzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU1TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0F6TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJPUzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBek1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6T1M1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTFNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBME15NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TlM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQXpOQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeU1TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTFNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVdiM0F6TVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOQzUzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTkM1
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBek5TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EzTmk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXhOQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T0M1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
V2IzQXlNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU5TNTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTROaTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5
Tnk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBM05TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EwTnk1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTVOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBNU15
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTnk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQTJNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0F5T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOUzUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBNE15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1Tnk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBNUzUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBek1pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
NU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzT0M1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTRPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE1DNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0EzTnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFPUzUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EyTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTJPQzUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TWk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTJMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6
ZElJWmIzQTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVMbTV2DQorZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
Wg0KK2IzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbmQzZHk1M1pXSXRj
R3hoZEdadmNtMHUNCitkR1Z6ZElJWmIzQXlMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
WmIzQXhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJWmIzQTFMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
WmIzQXpMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitOeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOREF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhO
MGdocHZjRFExTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1Tmk1dWIzUXRkMlZp
TFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RnekxtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d05UWXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwM2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQTJNaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGd1Ym05MExYZGwNCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwDQor
TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MA0KK1pYTjBnaHB2Y0RZd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
NU5TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d056TXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEa3hMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTBNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNall1Ym05MExYZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFk1TG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdW
emRJSWFiM0F6TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRs
DQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RrNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBeA0KK09TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056WXVibTkw
TFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNERXpMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTNPUzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNkekl1
ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGcyTG01dg0KK2RDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3
TWprdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMUxtNXZkQzEzWldJdGNHeGhk
R1p2DQorY20wdWRHVnpkSUlhYjNBNU1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d05EUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTBMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWIzQTUNCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdNelF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE13TG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzTVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5S
bGMzU0NHbTl3TWpVdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZMExtNXYNCitk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDDQorR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUXhMbTV2
ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXhNaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdNVEF1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGN5
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5DQorTWk1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NHbTl3TlRJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2
Y0RjMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk55NXViM1F0ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1NDR205d09EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNEZzBMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpNUzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdOVE11Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjREl6TG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0F6TlM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRZdWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1
MFpYTjBnaHB2Y0RZekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeg0KK09DNXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05UZ3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTANCitaWE4wZ2hwdmNEWXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhOQzV1
YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dtOXdPVEF1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGN3TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F4
TVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TVRVdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RZMUxtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlh
YjNBMU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qZ3VibTkwTFhkbA0KK1lp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTMNCitPQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkeTUzZDNjeUxuZGxZ
aTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRGd5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0E1TXk1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbmQzZHk1M2QzY3hM
bmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJeExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBM01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d09UY3Vi
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZElJYWIzQXlOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOall1
Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0ExDQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3
TkRZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RNMkxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBek9TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1ND
R205d05EY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTNMbTV2DQorZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTNOUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Qw0KK0dtOXdPRFV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUzTG01dmRDMTNa
V0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3T0RFdWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeUxuZDNk
ekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkMw0KK2R6RXVkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYmQzZDNNaTUzZDNjeUxuZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdodDNk
M2N4TG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIWGQzZHk1M2QzY3VibTkwDQorTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2g1M2QzY3lMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NIbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQz
ZDNNUzUzZDNjdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjdWQzZDNNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0huZDNkeTUzZDNjeUxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlmZDNkM01TNTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWZkM2QzTVM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZElJZmQz
ZDNNaTUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlmZDNkM01pNTNkM2N5DQor
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWllRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWllRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWkNCitkM2QzTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWpkM2QzTVM1NGJpMHRiSFpsDQorTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NJM2QzZHpJdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxdw0KK2JHRjBabTl5YlM1MFpYTjBn
aU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkSUlqZUc0
dExXeDJaUzAyYkdGa0xuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSm5kM2R5NTRiaTB0
DQorYkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0YkhabExU
WnNZV1F1ZDNkMw0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01TNTRiaTB0
YkhabExUWnNZV1F1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdpZDNkM2N5TG5odUxT
MXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDSjNodUxTMXNkbVV0
Tm14aFpDNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RJSW5lRzR0TFd4MlpT
MDJiR0ZrTG5kM2R6SXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lsNGJpMHQNCitiamhx
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlyZUc0dExXeDJa
UzAyDQorYkdGa0xuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2kxNGJpMHRiamhxTm1Sek5UTnMNCitkM2RyY25Gb2RqSTRZUzUzZDNjdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0xYZDNkeTU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJNFlTNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTWk1NGJpMHRiamhxTm1Seg0KK05UTnNkM2RyY25G
b2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZDNkM01TNTRiaTB0YmpocU5tUnoNCitO
VE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWVHNHRMVzQ0YWpaa2N6
VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVlRzR0
TFc0NGFqWmtjelV6YkhkMw0KK2EzSnhhSFl5T0dFdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUl2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ01YaHVMUzF1T0dvMlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5kM2R5
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTVhkM2R5NTRiaTB0YmpocQ0KK05tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNbmQzZHpFdWVHNHQN
CitMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdqSjRiaTB0DQorYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJeQ0KK2QzZDNNaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJ
NFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTW5odUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnalo0Ymkw
dGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1ZDJWaQ0KK0xYQnNZ
WFJtYjNKdExuUmxjM1NDTm5odUxTMXNkbVV0Tm14aFpDNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm8NCitkakk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJNmVHNHRMV3gyWlMwMmJHRmtMbmh1
TFMxdU9HbzJaSE0xDQorTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUk2ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVlRzR0TFd4MlpTMDJiR0Zr
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSkINCitlRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5T0dFdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1DQorZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDUlhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdQ0KK09H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFOQmdr
cWhraUcNCis5dzBCQVFzRkFBT0NBUUVBaWFSRVErOFBwalp5TVlkRWRZYTJXMWdzeXh3S0xqVXln
NEJ3Y0J5M1N0RkZSSGpFDQorRjloM05FNUMwbklpL2cwS3JyZ0dsTkJ0ZWlIWXBJTXpGOU1FcUpO
dlp2QXpHUVVIdFRXREtLbVBoUmdhaHQvbw0KK3ZvM1BhaVRCQ0NiZEFwZ2NBZGlCU3VRZ0ZCbDg3
NUcxUHRwYTloUkZHSDFGU3loMk0xakZqTWt0NzRrUmNIM3INCitSNTRTc0lFWnlBZlp6SWZ4Ry83
d2o3TEQ4ZHJ3VmVWS20vOE5BVjlsbFFlU3hudHpsVm1xYThhY0FVNmlLK3AzDQorMVBTcjF1V1U2
NEUzVlp5UVAzTWpIWVRDZ2tKV21oTnBNMGpXRFE1WWdxeVE3N09nYk41NTloZkY4Qjd6TjNRQg0K
KzhFZWNkNXlucitCZ3l0Y0MzVkJJYWJFYmc0ZGFmSFJFMnNYZXVBPT0NCistLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVj
dGVkX3Rlc3RzLnltbAppbmRleCA3ODExYmE5NTkxN2JiM2NjNmI1ZDMyZWNiZTllODk1Mjk3NjFh
ZGMzLi40OTRmZjFlZmExOWNjMDIxMzMzNzA5NDgzODNlNWZiMjIxNDRkNGZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2FmZmVjdGVkX3Rlc3RzLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbApAQCAtMTUs
NyArMTUsNyBAQCBzdGVwczoKIC0gdGVtcGxhdGU6IGluc3RhbGxfc2FmYXJpLnltbAogLSB0ZW1w
bGF0ZTogdXBkYXRlX2hvc3RzLnltbAogLSB0ZW1wbGF0ZTogdXBkYXRlX21hbmlmZXN0LnltbAot
LSBzY3JpcHQ6IG5vX3Byb3h5PScqJyAuL3dwdCBydW4gLS15ZXMgLS1uby1wYXVzZSAtLW5vLWZh
aWwtb24tdW5leHBlY3RlZCAtLW5vLXJlc3RhcnQtb24tdW5leHBlY3RlZCAtLWFmZmVjdGVkICR7
eyBwYXJhbWV0ZXJzLmFmZmVjdGVkUmFuZ2UgfX0gLS1sb2ctd3B0cmVwb3J0ICQoQnVpbGQuQXJ0
aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfcmVwb3J0Lmpzb24gLS1sb2ctd3B0c2NyZWVuc2hv
dCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3NjcmVlbnNob3QudHh0IC0t
Y2hhbm5lbCBwcmV2aWV3IHNhZmFyaQorLSBzY3JpcHQ6IC4vd3B0IHJ1biAtLXllcyAtLW5vLXBh
dXNlIC0tbm8tZmFpbC1vbi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0t
YWZmZWN0ZWQgJHt7IHBhcmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQg
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13
cHRzY3JlZW5zaG90ICQoQnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVu
c2hvdC50eHQgLS1jaGFubmVsIHByZXZpZXcgc2FmYXJpCiAgIGRpc3BsYXlOYW1lOiAnUnVuIHRl
c3RzJwogLSB0YXNrOiBQdWJsaXNoQnVpbGRBcnRpZmFjdHNAMQogICBkaXNwbGF5TmFtZTogJ1B1
Ymxpc2ggcmVzdWx0cycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
Y29tLmFwcGxlLlNhZmFyaS5wbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIy
MDgwOTcyYzlmNjM0MTAwNjJlZThkMzNkMGVkMDI4NmFmOGYxMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKKysr
IC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
LTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5BbGxvd1JlbW90ZUF1dG9tYXRp
b248L2tleT4KLQk8dHJ1ZS8+Ci08L2RpY3Q+Ci08L3BsaXN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2Nocm9tZS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbAppbmRleCA2YmQ1YzIzMzRhZDRl
M2U0ZDVkNmZhYWY4MDA1ZjRlMGI0NGNmMWZlLi5mZDY1MGU4MGFhYWQzMDljOGU5ODMyNzRkMmI4
MjNiYmE5MWIxZmIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2lu
c3RhbGxfY2hyb21lLnltbApAQCAtMSw2ICsxLDkgQEAKIHN0ZXBzOgotIyBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8gYEhvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvZ29vZ2xlLWNocm9tZS1k
ZXZgLAotIyBidXQgdGhlIHJhdyBVUkwgaXMgdXNlZCB0byBieXBhc3MgY2FjaGluZy4KLS0gc2Ny
aXB0OiBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBzOi8v
cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25z
L21hc3Rlci9DYXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgorIyBUaGUgY29uZmxpY3RpbmcgZ29v
Z2xlLWNocm9tZSBhbmQgY2hyb21lZHJpdmVyIGNhc2tzIGFyZSBmaXJzdCB1bmluc3RhbGxlZC4K
KyMgVGhlIHJhdyBnb29nbGUtY2hyb21lLWRldiBjYXNrIFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBj
YWNoaW5nLgorLSBzY3JpcHQ6IHwKKyAgICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcg
Y2FzayB1bmluc3RhbGwgZ29vZ2xlLWNocm9tZSB8fCB0cnVlCisgICAgSE9NRUJSRVdfTk9fQVVU
T19VUERBVEU9MSBicmV3IGNhc2sgdW5pbnN0YWxsIGNocm9tZWRyaXZlciB8fCB0cnVlCisgICAg
SE9NRUJSRVdfTk9fQVVUT19VUERBVEU9MSBicmV3IGNhc2sgaW5zdGFsbCBodHRwczovL3Jhdy5n
aXRodWJ1c2VyY29udGVudC5jb20vSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9tYXN0
ZXIvQ2Fza3MvZ29vZ2xlLWNocm9tZS1kZXYucmIKICAgZGlzcGxheU5hbWU6ICdJbnN0YWxsIENo
cm9tZSBEZXYnCiAgIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0Fn
ZW50Lk9TJ10sICdEYXJ3aW4nKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9lZGdlLnltbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9lZGdlLnltbAppbmRleCBlNGM0MjVhYjdhMGYwMzIxOGQ5MjJlNzMxMGVhOWQ4ZmRl
MGY1MWFhLi4yOTdiNmU2MGIyOWYzYTliYmQwMGIzZWUwMGI3MDU2MzUxMzhmMmNiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2luc3RhbGxfZWRnZS55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sCkBAIC00LDYg
KzQsMjYgQEAgcGFyYW1ldGVyczoKICMgU2hvdWxkIG1hdGNoIGh0dHBzOi8vd2ViLXBsYXRmb3Jt
LXRlc3RzLm9yZy9ydW5uaW5nLXRlc3RzL2Nocm9tZS5odG1sCiAjIEp1c3QgcmVwbGFjZSBjaHJv
bWUgd2l0aCBlZGdlY2hyb21pdW0KIHN0ZXBzOgorLSAke3sgaWYgZXEocGFyYW1ldGVycy5jaGFu
bmVsLCAnc3RhYmxlJykgfX06CisgIC0gcG93ZXJzaGVsbDogfAorICAgICAgJGVkZ2VJbnN0YWxs
ZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCisgICAgICAjIExpbmsgdG8gU3RhYmxl
IGNoYW5uZWwgaW5zdGFsbGVyCisgICAgICBTdGFydC1CaXRzVHJhbnNmZXIgLVNvdXJjZSAnaHR0
cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8/bGlua2lkPTIxMDg4MzQmQ2hhbm5lbD1TdGFi
bGUmbGFuZ3VhZ2U9ZW4nIC1EZXN0aW5hdGlvbiBNaWNyb3NvZnRFZGdlU2V0dXAuZXhlCisgICAg
ICBpZiAoLW5vdCAoVGVzdC1QYXRoICRlZGdlSW5zdGFsbGVyTmFtZSkpIHsKKyAgICAgICAgVGhy
b3cgIkZhaWxlZCB0byBkb3dubG9hZCBFZGdlIGluc3RhbGxlciB0byAkZWRnZUluc3RhbGxlck5h
bWUuIgorICAgICAgfQorICAgICAgY21kIC9jIFNUQVJUIC9XQUlUICRlZGdlSW5zdGFsbGVyTmFt
ZSAvc2lsZW50IC9pbnN0YWxsCisgICAgICAkZWRnZVBhdGggPSAiJGVudjpzeXN0ZW1kcml2ZVxQ
cm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdFxFZGdlXEFwcGxpY2F0aW9uIgorICAgICAgaWYg
KFRlc3QtUGF0aCAkZWRnZVBhdGgpIHsKKyAgICAgICAgV3JpdGUtSG9zdCAiIyN2c29bdGFzay5w
cmVwZW5kcGF0aF0kZWRnZVBhdGgiCisgICAgICAgIFdyaXRlLUhvc3QgIkVkZ2UgU3RhYmxlIGlu
c3RhbGxlZCBhdCAkZWRnZVBhdGguIgorICAgICAgICAoR2V0LUl0ZW0gLVBhdGggIiRlZGdlUGF0
aFxtc2VkZ2UuZXhlIikuVmVyc2lvbkluZm8gfCBGb3JtYXQtTGlzdAorICAgICAgfSBlbHNlIHsK
KyAgICAgICAgQ29weS1JdGVtIC1QYXRoICIkZW52OnRlbXBcKmVkZ2UqLmxvZyIgLURlc3RpbmF0
aW9uICQoQnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KSAgLUZvcmNlCisgICAgICAgIFRo
cm93ICJGYWlsZWQgdG8gaW5zdGFsbCBFZGdlIGF0ICRlZGdlUGF0aCIKKyAgICAgIH0KKyAgICBk
aXNwbGF5TmFtZTogJ0luc3RhbGwgRWRnZSBTdGFibGUnCisKIC0gJHt7IGlmIGVxKHBhcmFtZXRl
cnMuY2hhbm5lbCwgJ2NhbmFyeScpIH19OgogICAtIHBvd2Vyc2hlbGw6IHwKICAgICAgICRlZGdl
SW5zdGFsbGVyTmFtZSA9ICdNaWNyb3NvZnRFZGdlU2V0dXAuZXhlJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9p
bnN0YWxsX3NhZmFyaS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAppbmRleCBhODY0MTQ2NWFj
OGVhZTcwMDg2YmQwY2VkNGE4MGQzYTJkYTM1MTEzLi5kMDY2MGQxNTJiYmRmYzg5ZjMwOGJmYzA0
OGNkMjIyMWU5ZWE3NTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJl
L2luc3RhbGxfc2FmYXJpLnltbApAQCAtMyw2ICszLDkgQEAgcGFyYW1ldGVyczoKIAogIyBTaG91
bGQgbWF0Y2ggaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmctdGVzdHMvc2Fm
YXJpLmh0bWwKIHN0ZXBzOgorLSBzY3JpcHQ6IGRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5XZWJE
cml2ZXIgRGlhZ25vc3RpY3NFbmFibGVkIDEKKyAgZGlzcGxheU5hbWU6ICdFbmFibGUgc2FmYXJp
ZHJpdmVyIGRpYWdub3N0aWNzJworICBjb25kaXRpb246IGVxKHZhcmlhYmxlc1snc2FmYXJpZHJp
dmVyX2RpYWdub3NlJ10sIHRydWUpCiAtICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWwsICdw
cmV2aWV3JykgfX06CiAgIC0gc2NyaXB0OiB8CiAgICAgICBIT01FQlJFV19OT19BVVRPX1VQREFU
RT0xIGJyZXcgY2FzayBpbnN0YWxsIHRvb2xzL2NpL2F6dXJlL3NhZmFyaS10ZWNobm9sb2d5LXBy
ZXZpZXcucmIKQEAgLTEyLDkgKzE1LDYgQEAgc3RlcHM6CiAgICAgZGlzcGxheU5hbWU6ICdJbnN0
YWxsIFNhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcnCiAtICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNo
YW5uZWwsICdzdGFibGUnKSB9fToKICAgLSBzY3JpcHQ6IHwKLSAgICAgICMgV29ya2Fyb3VuZCBm
b3IgYHN1ZG8gc2FmYXJkcml2ZXIgLS1lbmFibGVgIG5vdCB3b3JraW5nOgotICAgICAgIyBodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMTk4NDUKLSAgICAg
IG1rZGlyIC1wIH4vTGlicmFyeS9XZWJEcml2ZXIvCi0gICAgICBjcCB0b29scy9jaS9henVyZS9j
b20uYXBwbGUuU2FmYXJpLnBsaXN0IH4vTGlicmFyeS9XZWJEcml2ZXIvCisgICAgICBzdWRvIHNh
ZmFyaWRyaXZlciAtLWVuYWJsZQogICAgICAgZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLlNhZmFy
aSBXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IDEKICAgICBkaXNw
bGF5TmFtZTogJ0NvbmZpZ3VyZSBTYWZhcmknCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3BpcF9pbnN0YWxsLnlt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvcGlwX2luc3RhbGwueW1sCmluZGV4IGM4Nzk1MzQ1ZjZiY2Y0YTk0M2UwN2E0NTk5NDdl
NzE4YWQ2YTBhZmMuLjE4ZDE4NzllOTcxNjEzNTMyZmFjNTY3M2Q5YTgwNGFjYzFiYzg2NzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sCkBAIC0y
LDE0ICsyLDUgQEAgcGFyYW1ldGVyczoKICAgcGFja2FnZXM6ICcnCiAKIHN0ZXBzOgotLSBzY3Jp
cHQ6IHwKLSAgICAjIGBzdWRvIHBpcCBpbnN0YWxsYCBpcyBub3QgdXNlZCBiZWNhdXNlIHNvbWUg
cGFja2FnZXMgKGUuZy4gdG94KSBkZXBlbmQgb24KLSAgICAjIHN5c3RlbSBwYWNrYWdlcyAoZS5n
LiBzZXR1cHRvb2xzKSB3aGljaCBjYW5ub3QgYmUgdXBncmFkZWQgZHVlIHRvIFN5c3RlbQotICAg
ICMgSW50ZWdyaXR5IFByb3RlY3Rpb24sIHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2Ev
MzMwMDQ5MjAuCi0gICAgcGlwIGluc3RhbGwgLS11c2VyICR7eyBwYXJhbWV0ZXJzLnBhY2thZ2Vz
IH19Ci0gICAgZWNobyAiIyN2c29bdGFzay5wcmVwZW5kcGF0aF0kSE9NRS9MaWJyYXJ5L1B5dGhv
bi8yLjcvYmluIgotICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgUHl0aG9uIHBhY2thZ2VzIChtYWNP
UyknCi0gIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9T
J10sICdEYXJ3aW4nKSkKIC0gc2NyaXB0OiBwaXAgLS1kaXNhYmxlLXBpcC12ZXJzaW9uLWNoZWNr
IGluc3RhbGwgLS11cGdyYWRlICR7eyBwYXJhbWV0ZXJzLnBhY2thZ2VzIH19Ci0gIGRpc3BsYXlO
YW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMgKFdpbmRvd3MpJwotICBjb25kaXRpb246IGFu
ZChzdWNjZWVkZWQoKSwgZXEodmFyaWFibGVzWydBZ2VudC5PUyddLCAnV2luZG93c19OVCcpKQor
ICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgUHl0aG9uIHBhY2thZ2VzJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9w
dWJsaXNoX2xvZ3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9wdWJsaXNoX2xvZ3MueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0OTM5N2E5
MWFkN2NhNDI0ODY0YzUzMjZiNWZlN2I0YTM2ODVhNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1
Ymxpc2hfbG9ncy55bWwKQEAgLTAsMCArMSw3IEBACitzdGVwczoKKy0gdGFzazogUHVibGlzaEJ1
aWxkQXJ0aWZhY3RzQDEKKyAgZGlzcGxheU5hbWU6ICdQdWJsaXNoIHNhZmFyaWRyaXZlciBsb2dz
JworICBpbnB1dHM6CisgICAgcGF0aHRvUHVibGlzaDogL1VzZXJzL3J1bm5lci9MaWJyYXJ5L0xv
Z3MvY29tLmFwcGxlLldlYkRyaXZlci8KKyAgICBhcnRpZmFjdE5hbWU6IHNhZmFyaWRyaXZlci1s
b2dzCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJfZGlhZ25vc2UnXSwg
dHJ1ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYiBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2Fm
YXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgppbmRleCBiMzI3MzliZTU4YTcwMjhkNWZmNGEyZGU5
YjU2ZGZiN2VhMDk5ODJiLi5lYWUwMzQ3NGE0OWZmN2JlY2UzMmRhZjQ4MjM5MDAyNWMzY2U5ZTJh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcucmIKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZh
cmktdGVjaG5vbG9neS1wcmV2aWV3LnJiCkBAIC0xLDEwICsxLDEwIEBACiBjYXNrICdzYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3JyBkbwogICBpZiBNYWNPUy52ZXJzaW9uIDw9IDptb2phdmUKLSAg
ICB2ZXJzaW9uICc5NiwwNjEtNDQwNTYtMjAxOTExMjAtYWM3YmIxOTYtMjcyNC00ODQwLWJjZTkt
NmM4M2VjZGJmYjJjJwotICAgIHNoYTI1NiAnZTgwY2VhY2RmZjdlNzUyMTgzNjU5OTNlNWFmMWM4
MWM5YmNjNDc4NTI5MWFlMDBhYmJhM2QxNGFjNTYxNDMxNycKKyAgICB2ZXJzaW9uICcxMDYsMDAx
LTA1OTY2LTIwMjAwNTEzLTg2NTcxYmU2LTg3OGUtNDExYi1hNWI5LTY1YTk3MTU3M2ZhZScKKyAg
ICBzaGEyNTYgJzg1MThjODkxN2E5MTcyYWViNzVkZWViNjEwNjBkMzUzMjI5NzYwZmQ1NGRjODVi
ZDM4YTA4OTdjYzFkMTIxMDUnCiAgIGVsc2UKLSAgICB2ZXJzaW9uICc5NiwwNjEtNDc3MTgtMjAx
OTExMjAtMDJiYzc1NjktZWU2Yi00YzI4LTllYzQtMGNlZWRhM2MzYzNhJwotICAgIHNoYTI1NiAn
YmJmY2RjMzZiZjliNTVhZWM1ODM4ZDY2ZTM0YzQxZGQzZjZhNjQwOTE0MDZiYzM4ZjQ1Yzg4ODM2
MGYxOTFmZScKKyAgICB2ZXJzaW9uICcxMDYsMDAxLTA1ODkwLTIwMjAwNTEzLTMyMWE2OWI0LWRl
NTgtNDQwZS04MTgyLThhYzAzZDY1ZjZjZScKKyAgICBzaGEyNTYgJ2YzYzA3M2Q5YjYwZmY2ZDEx
ZjgyYWJiYzZjYzEzMWU1OTEzZTZkMGYyYTExZjA5NjhhZTc3ZGIxYjUxZTFlMzUnCiAgIGVuZAog
CiAgIHVybCAiaHR0cHM6Ly9zZWN1cmUtYXBwbGRubGQuYXBwbGUuY29tL1NUUC8je3ZlcnNpb24u
YWZ0ZXJfY29tbWF9L1NhZmFyaVRlY2hub2xvZ3lQcmV2aWV3LmRtZyIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
dG94X3B5dGVzdC55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1sCmluZGV4IGJjOTMwODM2ZDNkN2I2NmJj
NjNhYzIzOTJiNTA1ZmQ5OWFmM2UxMWQuLjEyZWQ2NmE5YTAyMDZmNjg2NmZiMTIwZTI2NGJlMzlk
YzdlMjkyZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0
LnltbApAQCAtMSw3ICsxLDcgQEAKIHBhcmFtZXRlcnM6CiAgIGRpcmVjdG9yeTogJycKICAgdG94
ZW52OiAnQUxMJwotCisgIAogc3RlcHM6CiAtIHRlbXBsYXRlOiBwaXBfaW5zdGFsbC55bWwKICAg
cGFyYW1ldGVyczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3czYy1pbXBvcnQu
bG9nCmluZGV4IDQ0ZjU0MzE5YzJiOWYwMjRlYTkyNWE2YzNlYzdjZTIwZWU0ZDUwZDIuLmNlNzAx
MmY3MzM5OWE2Mjg2Zjc3ZDczMTYyMTQwMTc0YjA5YzMyN2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWlt
cG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZwpAQCAtMTgsNyArMTgsNiBAQCBMaXN0IG9m
IGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jaGVja291dC55bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NsZWFu
dXBfd2luMTAueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0CiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9meWlfaG9vay55bWwK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfY2VydHMueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2Nocm9tZS55bWwKQEAgLTI4LDYgKzI3
LDcgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfcHl0aG9uLnltbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9z
YWZhcmkueW1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3Nh
ZmFyaS10ZWNobm9sb2d5LXByZXZpZXcucmIKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3N5c3RlbV9pbmZvLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5
dGVzdC55bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaAppbmRleCA3
MDljYzJhYTdlNjg2N2Y1NDhkNGVmZGQ2MmQ3NGFiYzE4NWU2NTdiLi5mOGFlM2U2MWJmNzU2ZDk3
Yzc4ZTJkOTU4OTEyMWI3ZDYwMTA2NmZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2RpZmYuc2gKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9i
dWlsdF9kaWZmLnNoCkBAIC0xMiwxNCArMTIsMTQgQEAgbWFpbigpIHsKIAogICAgICPCoEV4Y2x1
ZGUgdGVzdHMgdGhhdCByZWx5IG9uIGZvbnQgcmVuZGVyaW5nCiAgICAgZXhjbHVkZWQ9KAotICAg
ICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5m
aWxsLmJhc2ljLnBuZycKLSAgICAgICAgJzJkY29udGV4dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNh
bnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAgICcyZGNv
bnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBu
ZycKLSAgICAgICAgJzJkY29udGV4dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0
LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5iYXNpYy5wbmcnCi0gICAgICAgICdvZmZzY3JlZW4tY2FudmFzL3Rl
eHQvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJwotICAgICAgICAnb2Zmc2Ny
ZWVuLWNhbnZhcy90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCi0gICAgICAgICdvZmZz
Y3JlZW4tY2FudmFzL3RleHQvMmQudGV4dC5kcmF3LnN0cm9rZS5iYXNpYy5wbmcnCisgICAgICAg
ICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQu
ZHJhdy5maWxsLmJhc2ljLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2lu
Zy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgubGFyZ2UucG5n
JworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZh
cy8yZC50ZXh0LmRyYXcuZmlsbC5ydGwucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVu
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBu
ZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29mZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5maWxs
LmJhc2ljLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29mZnNjcmVlbi90ZXh0LzJkLnRleHQu
ZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29mZnNj
cmVlbi90ZXh0LzJkLnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZh
cy9vZmZzY3JlZW4vdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKICAgICApCiAK
ICAgICAuL3VwZGF0ZS1idWlsdC10ZXN0cy5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFz
dHJ1Y3R1cmUuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaAppbmRleCA4ZGIwODc5NGFk
ZTI2YmVmODk5ZjA1YzQ4OTBjMmI4OGU2OGRmMjkyLi44OTI2N2I1MGNiNjQzMmM0OTVkNDI4YTE4
MGM1OTY1OWI1YzVhNjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaApAQCAtNSwzMSArNSwyNSBAQCBTQ1JJUFRf
RElSPSQoY2QgJChkaXJuYW1lICIkMCIpICYmIHB3ZCAtUCkKIFdQVF9ST09UPSRTQ1JJUFRfRElS
Ly4uLy4uCiBjZCAkV1BUX1JPT1QKIAotYWRkX3dwdF9ob3N0cygpIHsKLSAgICAuL3dwdCBtYWtl
LWhvc3RzLWZpbGUgfCBzdWRvIHRlZSAtYSAvZXRjL2hvc3RzCi19Ci0KIHRlc3RfaW5mcmFzdHJ1
Y3R1cmUoKSB7Ci0gICAgbG9jYWwgQVJHUz0iIjsKLSAgICBpZiBbICRQUk9EVUNUID09ICJmaXJl
Zm94IiBdOyB0aGVuCi0gICAgICAgIEFSR1M9Ii0taW5zdGFsbC1icm93c2VyIgotICAgIGVsc2UK
LSAgICAgICAgQVJHUz0kMQotICAgIGZpCi0gICAgVEVSTT1kdW1iIC4vd3B0IHJ1biAtLWxvZy1t
YWNoIC0gLS15ZXMgLS1tYW5pZmVzdCB+L21ldGEvTUFOSUZFU1QuanNvbiAtLW1ldGFkYXRhIGlu
ZnJhc3RydWN0dXJlL21ldGFkYXRhLyAtLWluc3RhbGwtZm9udHMgJEFSR1MgJFBST0RVQ1QgaW5m
cmFzdHJ1Y3R1cmUvCisgICAgUFkzX0ZMQUc9IiQyIgorICAgIFRFUk09ZHVtYiAuL3dwdCAkUFkz
X0ZMQUcgcnVuIC0tbG9nLW1hY2ggLSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5q
c29uIC0tbWV0YWRhdGEgaW5mcmFzdHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAk
MSAkUFJPRFVDVCBpbmZyYXN0cnVjdHVyZS8KIH0KIAogbWFpbigpIHsKLSAgICBQUk9EVUNUUz0o
ICJmaXJlZm94IiAiY2hyb21lIiApCisgICAgaWYgW1sgJCMgLWVxIDEgJiYgIiQxIiA9ICItLXB5
MyIgXV07IHRoZW4KKyAgICAgICAgUFJPRFVDVFM9KCAiY2hyb21lIiApCisgICAgZWxzZQorICAg
ICAgICBQUk9EVUNUUz0oICJmaXJlZm94IiAiY2hyb21lIiApCisgICAgZmkKICAgICAuL3dwdCBt
YW5pZmVzdCAtLXJlYnVpbGQgLXAgfi9tZXRhL01BTklGRVNULmpzb24KICAgICBmb3IgUFJPRFVD
VCBpbiAiJHtQUk9EVUNUU1tAXX0iOyBkbwogICAgICAgICBpZiBbWyAiJFBST0RVQ1QiID09ICJj
aHJvbWUiIF1dOyB0aGVuCi0gICAgICAgICAgICBhZGRfd3B0X2hvc3RzCi0gICAgICAgICAgICB0
ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT0kKHdoaWNoIGdvb2dsZS1jaHJvbWUtdW5zdGFi
bGUpIC0tY2hhbm5lbCBkZXYiCisgICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlICItLWJp
bmFyeT0kKHdoaWNoIGdvb2dsZS1jaHJvbWUtdW5zdGFibGUpIC0tY2hhbm5lbCBkZXYiICIkMSIK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdF9pbmZyYXN0cnVjdHVyZQorICAgICAgICAg
ICAgdGVzdF9pbmZyYXN0cnVjdHVyZSAiLS1iaW5hcnk9fi9idWlsZC9maXJlZm94L2ZpcmVmb3gi
CiAgICAgICAgIGZpCiAgICAgZG9uZQogfQogCi1tYWluCittYWluICQxCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2pvYnMucHkKaW5kZXggM2Q4MDllZmEzN2NjZmYyYzI1ODM0M2I2NDc5MTc2MmZjNTA3YTkwZi4u
NzYyNGViMGQ1MTZmYzE2YTU3MjRhNjcxNGQyNzY3YmM0ZTEyMzI1ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9qb2JzLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvam9icy5weQpAQCAtMzMsMTUgKzMzLDE2IEBAIGpvYl9wYXRoX21hcCA9IHsKICAgICAid3B0
cnVubmVyX3VuaXR0ZXN0IjogWyJ0b29scy8iXSwKICAgICAiYnVpbGRfY3NzIjogWyJjc3MvIl0s
CiAgICAgInVwZGF0ZV9idWlsdCI6IFsidXBkYXRlLWJ1aWx0LXRlc3RzXFwuc2giLAotICAgICAg
ICAgICAgICAgICAgICAgIjJkY29udGV4dC8iLAogICAgICAgICAgICAgICAgICAgICAgImluZnJh
c3RydWN0dXJlLyIsCiAgICAgICAgICAgICAgICAgICAgICAiaHRtbC8iLAotICAgICAgICAgICAg
ICAgICAgICAgIm9mZnNjcmVlbi1jYW52YXMvIiwKICAgICAgICAgICAgICAgICAgICAgICJtaW1l
c25pZmYvIiwKICAgICAgICAgICAgICAgICAgICAgICJjc3MvY3NzLXVpLyIsCiAgICAgICAgICAg
ICAgICAgICAgICAiV2ViSURMIl0sCiAgICAgIndwdF9pbnRlZ3JhdGlvbiI6IFsidG9vbHMvIl0s
Ci0gICAgIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSI6IFsiaW5mcmFzdHJ1Y3R1cmUvIiwgInRv
b2xzLyIsICJyZXNvdXJjZXMvIl0sCisgICAgIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSI6IFsi
aW5mcmFzdHJ1Y3R1cmUvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b29s
cy8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc291cmNlcy8iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYmRyaXZlci90ZXN0cy9zdXBwb3J0Il0s
CiB9CiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZlc3RfYnVpbGQucHkKaW5kZXgg
MWUzODhkZmE3NDE5YTIxYjIwNTAzYjMwNzVjMzZiYzExMTM2ZGQ3ZC4uMjBmOTZkOWEzZWVlYzYz
OTk3NGNhNDYxZDlkNDVmOTFjOTZjMDE3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21h
bmlmZXN0X2J1aWxkLnB5CkBAIC04NCw4ICs4NCw3IEBAIGRlZiByZXF1ZXN0KHVybCwgZGVzYywg
bWV0aG9kPU5vbmUsIGRhdGE9Tm9uZSwganNvbl9kYXRhPU5vbmUsIHBhcmFtcz1Ob25lLCBoZWFk
CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gcmVzcC5qc29uKCkKICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCIlcyBmYWlsZWQ6IFJldHVybmVkIGRhdGEgd2Fz
IG5vdCBKU09OIFJlc3BvbnNlOiIgJQotICAgICAgICAgICAgICAgICAgICAgKGRlc2MsIHJlc3Au
c3RhdHVzX2NvZGUpKQorICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQg
ZGF0YSB3YXMgbm90IEpTT04gUmVzcG9uc2U6IiAlIGRlc2MpCiAgICAgICAgIGxvZ2dlci5lcnJv
cihyZXNwLnRleHQpCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CmluZGV4
IGJhNzc3NDQ0NmUwODM2ZTMxOWMwZDA3MWQ2MjYyZTU2MmZiMTQ2ZTEuLmJhNTk5N2Y2OGE2MTVm
NDkzMjJhYzAwOWExNWFlYmYwYTVhMDcxZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmlldy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3By
ZXZpZXcucHkKQEAgLTEyMyw2ICsxMjMsMjcgQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogCiAg
ICAgICAgIHJldHVybiBkYXRhWydpdGVtcyddCiAKKyAgICBAZ3VhcmQoJ2NvcmUnKQorICAgIGRl
ZiBwdWxsX3JlcXVlc3RfaXNfZnJvbV9mb3JrKHNlbGYsIHB1bGxfcmVxdWVzdCk6CisgICAgICAg
IHByX251bWJlciA9IHB1bGxfcmVxdWVzdFsnbnVtYmVyJ10KKyAgICAgICAgdXJsID0gJ3t9L3Jl
cG9zL3t9L3B1bGxzL3t9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLl9ob3N0LCBzZWxmLl9n
aXRodWJfcHJvamVjdCwgcHJfbnVtYmVyCisgICAgICAgICkKKworICAgICAgICBsb2dnZXIuaW5m
bygnQ2hlY2tpbmcgaWYgcHVsbCByZXF1ZXN0ICVzIGlzIGZyb20gYSBmb3JrJywgcHJfbnVtYmVy
KQorCisgICAgICAgIGRhdGEgPSBnaF9yZXF1ZXN0KCdHRVQnLCB1cmwpCisKKyAgICAgICAgcmVw
b19uYW1lID0gZGF0YVsnaGVhZCddWydyZXBvJ11bJ2Z1bGxfbmFtZSddCisgICAgICAgIGlzX2Zv
cmsgPSByZXBvX25hbWUgIT0gc2VsZi5fZ2l0aHViX3Byb2plY3QKKworICAgICAgICBsb2dnZXIu
aW5mbygKKyAgICAgICAgICAgICdQdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBcJyVzXCcuIElzIGEg
Zm9yazogJXMnLAorICAgICAgICAgICAgcHJfbnVtYmVyLCByZXBvX25hbWUsIGlzX2ZvcmsKKyAg
ICAgICAgKQorCisgICAgICAgIHJldHVybiBpc19mb3JrCisKICAgICBAZ3VhcmQoJ2NvcmUnKQog
ICAgIGRlZiBjcmVhdGVfcmVmKHNlbGYsIHJlZnNwZWMsIHJldmlzaW9uKToKICAgICAgICAgdXJs
ID0gJ3t9L3JlcG9zL3t9L2dpdC9yZWZzJy5mb3JtYXQoc2VsZi5faG9zdCwgc2VsZi5fZ2l0aHVi
X3Byb2plY3QpCkBAIC0xODAsOSArMjAxLDggQEAgY2xhc3MgUHJvamVjdChvYmplY3QpOgogICAg
IEBndWFyZCgnY29yZScpCiAgICAgZGVmIHVwZGF0ZV9kZXBsb3ltZW50KHNlbGYsIHRhcmdldCwg
ZGVwbG95bWVudCwgc3RhdGUsIGRlc2NyaXB0aW9uPScnKToKICAgICAgICAgaWYgc3RhdGUgaW4g
KCdwZW5kaW5nJywgJ3N1Y2Nlc3MnKToKLSAgICAgICAgICAgIGVudmlyb25tZW50X3VybCA9ICd7
fS9zdWJtaXNzaW9ucy97fScuZm9ybWF0KAotICAgICAgICAgICAgICAgIHRhcmdldCwgZGVwbG95
bWVudFsnZW52aXJvbm1lbnQnXQotICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJfbnVtYmVy
ID0gZGVwbG95bWVudFsnZW52aXJvbm1lbnQnXVtsZW4oREVQTE9ZTUVOVF9QUkVGSVgpOl0KKyAg
ICAgICAgICAgIGVudmlyb25tZW50X3VybCA9ICd7fS97fScuZm9ybWF0KHRhcmdldCwgcHJfbnVt
YmVyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gTm9uZQog
ICAgICAgICB1cmwgPSAne30vcmVwb3Mve30vZGVwbG95bWVudHMve30vc3RhdHVzZXMnLmZvcm1h
dCgKQEAgLTI0NiwxMyArMjY2LDE2IEBAIGRlZiBoYXNfbWlycm9yaW5nX2xhYmVsKHB1bGxfcmVx
dWVzdCk6CiAKICAgICByZXR1cm4gRmFsc2UKIAotZGVmIHNob3VsZF9iZV9taXJyb3JlZChwdWxs
X3JlcXVlc3QpOgorZGVmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3Qp
OgogICAgIHJldHVybiAoCi0gICAgICAgIGlzX29wZW4ocHVsbF9yZXF1ZXN0KSBhbmQKLSAgICAg
ICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10gbm90IGluIEFVVE9NQVRJT05fR0lUSFVC
X1VTRVJTIGFuZCAoCi0gICAgICAgICAgICBwdWxsX3JlcXVlc3RbJ2F1dGhvcl9hc3NvY2lhdGlv
biddIGluIFRSVVNURURfQVVUSE9SX0FTU09DSUFUSU9OUyBvcgotICAgICAgICAgICAgaGFzX21p
cnJvcmluZ19sYWJlbChwdWxsX3JlcXVlc3QpCi0gICAgICAgICkKKyAgICAgICAgaXNfb3Blbihw
dWxsX3JlcXVlc3QpIGFuZCAoCisgICAgICAgICAgICBoYXNfbWlycm9yaW5nX2xhYmVsKHB1bGxf
cmVxdWVzdCkgb3IgKAorICAgICAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsndXNlciddWydsb2dp
biddIG5vdCBpbiBBVVRPTUFUSU9OX0dJVEhVQl9VU0VSUyBhbmQKKyAgICAgICAgICAgICAgICBw
dWxsX3JlcXVlc3RbJ2F1dGhvcl9hc3NvY2lhdGlvbiddIGluIFRSVVNURURfQVVUSE9SX0FTU09D
SUFUSU9OUworICAgICAgICAgICAgKQorICAgICAgICApIGFuZAorICAgICAgICAjIFF1ZXJ5IHRo
aXMgbGFzdCBhcyBpdCByZXF1aXJlcyBhbm90aGVyIEFQSSBjYWxsIHRvIHZlcmlmeQorICAgICAg
ICBub3QgcHJvamVjdC5wdWxsX3JlcXVlc3RfaXNfZnJvbV9mb3JrKHB1bGxfcmVxdWVzdCkKICAg
ICApCiAKIGRlZiBpc19kZXBsb3llZChob3N0LCBkZXBsb3ltZW50KToKQEAgLTI5MSw3ICszMTQs
NyBAQCBkZWYgc3luY2hyb25pemUoaG9zdCwgZ2l0aHViX3Byb2plY3QsIHdpbmRvdyk6CiAgICAg
ICAgIHJldmlzaW9uX3RydXN0ZWQgPSByZW1vdGUuZ2V0X3JldmlzaW9uKHJlZnNwZWNfdHJ1c3Rl
ZCkKICAgICAgICAgcmV2aXNpb25fb3BlbiA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3BlY19v
cGVuKQogCi0gICAgICAgIGlmIHNob3VsZF9iZV9taXJyb3JlZChwdWxsX3JlcXVlc3QpOgorICAg
ICAgICBpZiBzaG91bGRfYmVfbWlycm9yZWQocHJvamVjdCwgcHVsbF9yZXF1ZXN0KToKICAgICAg
ICAgICAgIGxvZ2dlci5pbmZvKCdQdWxsIFJlcXVlc3Qgc2hvdWxkIGJlIG1pcnJvcmVkJykKIAog
ICAgICAgICAgICAgaWYgcmV2aXNpb25fdHJ1c3RlZCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9ydW5fdGMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3J1bl90Yy5weQppbmRleCBmOTA4NmEzMWJkOTNiYWY3MjgxOWZjNDUwZjkwYTI5MGQ2NTY3NGZk
Li5hNWE4Y2E3ZGIyOWFiNDg0ZmUzOTc0NzVmOWI1Y2ZjNDEyZDY1MTdmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90
Yy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL3J1bl90Yy5weQpAQCAtMzYsMTEgKzM2LDE1IEBAIHRoZSBzZXJpYWxpemF0aW9uIG9m
IGEgR2l0SHViIGV2ZW50IHBheWxvYWQuCiAiIiIKIAogaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQg
Zm5tYXRjaAogaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCBzeXMKK2ltcG9ydCB0YXJmaWxlCiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aW1lCitpbXBv
cnQgemlwZmlsZQogZnJvbSBzb2NrZXQgaW1wb3J0IGVycm9yIGFzIFNvY2tldEVycm9yICAjIE5P
UUE6IE44MTIKIGltcG9ydCBlcnJubwogdHJ5OgpAQCAtMTQ3LDEzICsxNTEsMTQgQEAgZGVmIGlu
c3RhbGxfY2hyb21lKGNoYW5uZWwpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnJlY29n
bml6ZWQgcmVsZWFzZSBjaGFubmVsOiAlcyIgJSBjaGFubmVsKQogCiAgICAgZGVzdCA9IG9zLnBh
dGguam9pbigiL3RtcCIsIGRlYl9hcmNoaXZlKQotICAgIHJlc3AgPSB1cmxvcGVuKCJodHRwczov
L2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRlYl9hcmNoaXZlKQorICAgIGRlYl91
cmwgPSAiaHR0cHM6Ly9kbC5nb29nbGUuY29tL2xpbnV4L2RpcmVjdC8lcyIgJSBkZWJfYXJjaGl2
ZQogICAgIHdpdGggb3BlbihkZXN0LCAidyIpIGFzIGY6Ci0gICAgICAgIGYud3JpdGUocmVzcC5y
ZWFkKCkpCisgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIGRlYl91cmwpCiAK
ICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFxeSIsICJ1cGRhdGUiXSkKICAgICBydW4o
WyJzdWRvIiwgImdkZWJpIiwgIi1xbiIsICIvdG1wLyVzIiAlIGRlYl9hcmNoaXZlXSkKIAorCiBk
ZWYgaW5zdGFsbF93ZWJraXRndGtfZnJvbV9hcHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICAj
IENvbmZpZ3VyZSB3ZWJraXRndGsub3JnL2RlYmlhbiByZXBvc2l0b3J5IGZvciAkY2hhbm5lbCBh
bmQgcGluIGl0IHdpdGggbWF4aW11bSBwcmlvcml0eQogICAgIHJ1bihbInN1ZG8iLCAiYXB0LWtl
eSIsICJhZHYiLCAiLS1mZXRjaC1rZXlzIiwgImh0dHBzOi8vd2Via2l0Z3RrLm9yZy9kZWJpYW4v
YXB0LmtleSJdKQpAQCAtMTY5LDE1ICsxNzQsMTYgQEAgZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zy
b21fYXB0X3JlcG9zaXRvcnkoY2hhbm5lbCk6CiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0Iiwg
Ii1xcXkiLCAiLXQiLCAiYmlvbmljLXdwdC13ZWJraXQtdXBkYXRlcyIsICJpbnN0YWxsIiwgIndl
YmtpdDJndGstZHJpdmVyIl0pCiAKIAotIyBEb3dubG9hZCBhbiBVUkwgaW4gY2h1bmtzIGFuZCBz
YXZlcyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKLSMgSXQgZG9lc24n
dCBjbG9zZSB0aGUgZGVzY3JpcHRvciwgYnV0IGZsdXNoZXMgaXQgb24gc3VjY2Vzcy4KLSMgSXQg
cmV0cmllcyB0aGUgZG93bmxvYWQgaW4gY2FzZSBvZiBFQ09OTlJFU0VUIHVwIHRvIG1heF9yZXRy
aWVzLgotZGVmIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGZkLCB1cmwsIG1heF9yZXRyaWVz
PTMpOgotICAgIGRvd25sb2FkX3N1Y2NlZWQgPSBGYWxzZQotICAgIGlmIG1heF9yZXRyaWVzIDwg
MDoKLSAgICAgICAgbWF4X3JldHJpZXMgPSAwCi0gICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFu
Z2UobWF4X3JldHJpZXMrMSk6CitkZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVy
bCwgbWF4X3JldHJpZXM9NSk6CisgICAgIiIiRG93bmxvYWQgYW4gVVJMIGluIGNodW5rcyBhbmQg
c2F2ZXMgaXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IgKHRydW5jYXRpbmcgaXQpCisgICAgSXQgZG9l
c24ndCBjbG9zZSB0aGUgZGVzY3JpcHRvciwgYnV0IGZsdXNoZXMgaXQgb24gc3VjY2Vzcy4KKyAg
ICBJdCByZXRyaWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8gbWF4
X3JldHJpZXMuIiIiCisgICAgaWYgbWF4X3JldHJpZXMgPCAxOgorICAgICAgICBtYXhfcmV0cmll
cyA9IDEKKyAgICB3YWl0ID0gMgorICAgIGZvciBjdXJyZW50X3JldHJ5IGluIHJhbmdlKDEsIG1h
eF9yZXRyaWVzKzEpOgogICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmludCgiSU5GTzogRG93
bmxvYWRpbmcgJXMgVHJ5ICVkLyVkIiAlICh1cmwsIGN1cnJlbnRfcmV0cnksIG1heF9yZXRyaWVz
KSkKICAgICAgICAgICAgIHJlc3AgPSB1cmxvcGVuKHVybCkKICAgICAgICAgICAgICMgV2UgbWF5
IGNvbWUgaGVyZSBpbiBhIHJldHJ5LCBlbnN1cmUgdG8gdHJ1bmNhdGUgZmQgYmVmb3JlIHN0YXJ0
IHdyaXRpbmcuCiAgICAgICAgICAgICBmZC5zZWVrKDApCkBAIC0xODgsMjIgKzE5NCwyMyBAQCBk
ZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4X3JldHJpZXM9Myk6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrICAjIERvd25sb2FkIGZpbmlzaGVkCiAgICAgICAgICAg
ICAgICAgZmQud3JpdGUoY2h1bmspCiAgICAgICAgICAgICBmZC5mbHVzaCgpCi0gICAgICAgICAg
ICBkb3dubG9hZF9zdWNjZWVkID0gVHJ1ZQotICAgICAgICAgICAgYnJlYWsgICMgU3VjZXNzCisg
ICAgICAgICAgICAjIFN1Y2Nlc3MKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBleGNlcHQg
U29ja2V0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNPTk5S
RVNFVDoKLSAgICAgICAgICAgICAgICByYWlzZSAgIyBVbmtub3duIGVycm9yCi0gICAgICAgICAg
ICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXM6Ci0gICAgICAgICAgICAgICAgcHJpbnQo
IkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5aW5nIC4uLiIpCi0gICAgICAg
ICAgICAgICAgY29udGludWUgICMgUmV0cnkKLSAgICByZXR1cm4gZG93bmxvYWRfc3VjY2VlZAor
ICAgICAgICAgICAgaWYgY3VycmVudF9yZXRyeSA8IG1heF9yZXRyaWVzIGFuZCBlLmVycm5vID09
IGVycm5vLkVDT05OUkVTRVQ6CisgICAgICAgICAgICAgICAgIyBSZXRyeQorICAgICAgICAgICAg
ICAgIHByaW50KCJFUlJPUjogQ29ubmVjdGlvbiByZXNldCBieSBwZWVyLiBSZXRyeWluZyBhZnRl
ciAlZHMuLi4iICUgd2FpdCkKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHdhaXQpCisgICAg
ICAgICAgICAgICAgd2FpdCAqPSAyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICMgTWF4aW11bSByZXRyaWVzIG9yIHVua25vd24gZXJyb3IKKyAgICAgICAgICAgICAgICByYWlz
ZQogCiAKIGRlZiBpbnN0YWxsX3dlYmtpdGd0a19mcm9tX3RhcmJhbGxfYnVuZGxlKGNoYW5uZWwp
OgogICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0iLnRhci54eiIp
IGFzIHRlbXBfdGFyYmFsbDoKICAgICAgICAgZG93bmxvYWRfdXJsID0gImh0dHBzOi8vd2Via2l0
Z3RrLm9yZy9idWlsdC1wcm9kdWN0cy9uaWdodGx5L3dlYmtpdGd0ay1uaWdodGx5LWJ1aWxkLWxh
c3QudGFyLnh6IgotICAgICAgICBpZiBub3QgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IodGVt
cF90YXJiYWxsLCBkb3dubG9hZF91cmwpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCJDYW4ndCBkb3dubG9hZCAlcy4gQWJvcnRpbmciICUgZG93bmxvYWRfdXJsKQorICAgICAgICBk
b3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcih0ZW1wX3RhcmJhbGwsIGRvd25sb2FkX3VybCkKICAg
ICAgICAgcnVuKFsic3VkbyIsICJ0YXIiLCAieGZhIiwgdGVtcF90YXJiYWxsLm5hbWUsICItQyIs
ICIvIl0pCiAgICAgIyBJbnN0YWxsIGRlcGVuZGVuY2llcwogICAgIHJ1bihbInN1ZG8iLCAiYXB0
LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQpAQCAtMjE4LDYgKzIyNSw3IEBAIGRlZiBpbnN0YWxs
X3dlYmtpdGd0ayhjaGFubmVsKToKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJVbnJlY29nbml6ZWQgcmVsZWFzZSBjaGFubmVsOiAlcyIgJSBjaGFubmVsKQogCisKIGRlZiBz
dGFydF94dmZiKCk6CiAgICAgc3RhcnQoWyJzdWRvIiwgIlh2ZmIiLCBvcy5lbnZpcm9uWyJESVNQ
TEFZIl0sICItc2NyZWVuIiwgIjAiLAogICAgICAgICAgICAiJXN4JXN4JXMiICUgKG9zLmVudmly
b25bIlNDUkVFTl9XSURUSCJdLApAQCAtMjQ2LDcgKzI1NCw2NyBAQCBkZWYgc2V0X3ZhcmlhYmxl
cyhldmVudCk6CiAgICAgICAgIG9zLmVudmlyb25bIkdJVEhVQl9CUkFOQ0giXSA9IGJyYW5jaAog
CiAKK2RlZiB0YXNrX3VybCh0YXNrX2lkKToKKyAgICByb290X3VybCA9IG9zLmVudmlyb25bJ1RB
U0tDTFVTVEVSX1JPT1RfVVJMJ10KKyAgICBpZiByb290X3VybCA9PSAnaHR0cHM6Ly90YXNrY2x1
c3Rlci5uZXQnOgorICAgICAgICBxdWV1ZV9iYXNlID0gImh0dHBzOi8vcXVldWUudGFza2NsdXN0
ZXIubmV0L3YxL3Rhc2siCisgICAgZWxzZToKKyAgICAgICAgcXVldWVfYmFzZSA9IHJvb3RfdXJs
ICsgIi9hcGkvcXVldWUvdjEvdGFzayIKKworICAgIHJldHVybiAiJXMvJXMiICUgKHF1ZXVlX2Jh
c2UsIHRhc2tfaWQpCisKKworZGVmIGRvd25sb2FkX2FydGlmYWN0cyhhcnRpZmFjdHMpOgorICAg
IGFydGlmYWN0X2xpc3RfYnlfdGFzayA9IHt9CisgICAgZm9yIGFydGlmYWN0IGluIGFydGlmYWN0
czoKKyAgICAgICAgYmFzZV91cmwgPSB0YXNrX3VybChhcnRpZmFjdFsidGFzayJdKQorICAgICAg
ICBpZiBhcnRpZmFjdFsidGFzayJdIG5vdCBpbiBhcnRpZmFjdF9saXN0X2J5X3Rhc2s6CisgICAg
ICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKSBhcyBmOgorICAgICAgICAgICAg
ICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIGJhc2VfdXJsICsgIi9hcnRpZmFjdHMi
KQorICAgICAgICAgICAgICAgIGYuc2VlaygwKQorICAgICAgICAgICAgICAgIGFydGlmYWN0c19k
YXRhID0ganNvbi5sb2FkKGYpCisgICAgICAgICAgICBhcnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0
aWZhY3RbInRhc2siXV0gPSBhcnRpZmFjdHNfZGF0YQorCisgICAgICAgIGFydGlmYWN0c19kYXRh
ID0gYXJ0aWZhY3RfbGlzdF9ieV90YXNrW2FydGlmYWN0WyJ0YXNrIl1dCisgICAgICAgIHByaW50
KCJERUJVRzogR290IGFydGlmYWN0cyAlcyIgJSBhcnRpZmFjdHNfZGF0YSkKKyAgICAgICAgZm91
bmQgPSBGYWxzZQorICAgICAgICBmb3IgY2FuZGlkYXRlIGluIGFydGlmYWN0c19kYXRhWyJhcnRp
ZmFjdHMiXToKKyAgICAgICAgICAgIHByaW50KCJERUJVRzogY2FuZGlkYXRlOiAlcyBnbG9iOiAl
cyIgJSAoY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJnbG9iIl0pKQorICAgICAgICAgICAg
aWYgZm5tYXRjaC5mbm1hdGNoKGNhbmRpZGF0ZVsibmFtZSJdLCBhcnRpZmFjdFsiZ2xvYiJdKToK
KyAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICBwcmludCgiSU5G
TzogRmV0Y2hpbmcgYXJpdGZhY3QgJXMgZnJvbSB0YXNrICVzIiAlIChjYW5kaWRhdGVbIm5hbWUi
XSwgYXJ0aWZhY3RbInRhc2siXSkpCisgICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gY2FuZGlk
YXRlWyJuYW1lIl0ucnNwbGl0KCIvIiwgMSlbMV0KKyAgICAgICAgICAgICAgICB1cmwgPSBiYXNl
X3VybCArICIvYXJ0aWZhY3RzLyIgKyBjYW5kaWRhdGVbIm5hbWUiXQorICAgICAgICAgICAgICAg
IGRlc3RfcGF0aCA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmpvaW4oIn4iLCBhcnRpZmFj
dFsiZGVzdCJdLCBmaWxlX25hbWUpKQorICAgICAgICAgICAgICAgIGRlc3RfZGlyID0gb3MucGF0
aC5kaXJuYW1lKGRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMoZGVzdF9kaXIpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkZXN0X2RpcikK
KyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdF9wYXRoLCAid2IiKSBhcyBmOgorICAgICAg
ICAgICAgICAgICAgICBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmLCB1cmwpCisKKyAgICAg
ICAgICAgICAgICBpZiBhcnRpZmFjdC5nZXQoImV4dHJhY3QiKToKKyAgICAgICAgICAgICAgICAg
ICAgdW5wYWNrKGRlc3RfcGF0aCkKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAg
cHJpbnQoIldBUk5JTkc6IE5vIGFydGlmYWN0IGZvdW5kIG1hdGNoaW5nICVzIGluIHRhc2sgJXMi
ICUgKGFydGlmYWN0WyJnbG9iIl0sIGFydGlmYWN0WyJ0YXNrIl0pKQorCisKK2RlZiB1bnBhY2so
cGF0aCk6CisgICAgZGVzdCA9IG9zLnBhdGguZGlybmFtZShwYXRoKQorICAgIGlmIHRhcmZpbGUu
aXNfdGFyZmlsZShwYXRoKToKKyAgICAgICAgcnVuKFsidGFyIiwgIi14ZiIsIHBhdGhdLCBjd2Q9
b3MucGF0aC5kaXJuYW1lKHBhdGgpKQorICAgIGVsaWYgemlwZmlsZS5pc196aXBmaWxlKHBhdGgp
OgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShwYXRoKSBhcyBhcmNoaXZlOgorICAgICAg
ICAgICAgYXJjaGl2ZS5leHRyYWN0YWxsKGRlc3QpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQo
IkVSUk9SOiBEb24ndCBrbm93IGhvdyB0byBleHRyYWN0ICVzIiAlIHBhdGgpCisgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbgorCisKIGRlZiBzZXR1cF9lbnZpcm9ubWVudChhcmdzKToKKyAgICBpZiAi
VEFTS19BUlRJRkFDVFMiIGluIG9zLmVudmlyb246CisgICAgICAgIGFydGlmYWN0cyA9IGpzb24u
bG9hZHMob3MuZW52aXJvblsiVEFTS19BUlRJRkFDVFMiXSkKKyAgICAgICAgZG93bmxvYWRfYXJ0
aWZhY3RzKGFydGlmYWN0cykKKwogICAgIGlmIGFyZ3MuaG9zdHNfZmlsZToKICAgICAgICAgbWFr
ZV9ob3N0c19maWxlKCkKIApAQCAtMzY0LDE2ICs0MzIsMTAgQEAgZGVmIGZldGNoX2V2ZW50X2Rh
dGEoKToKICAgICAgICAgIyBGb3IgZXhhbXBsZSB1bmRlciBsb2NhbCB0ZXN0aW5nCiAgICAgICAg
IHJldHVybiBOb25lCiAKLSAgICByb290X3VybCA9IG9zLmVudmlyb25bJ1RBU0tDTFVTVEVSX1JP
T1RfVVJMJ10KLSAgICBpZiByb290X3VybCA9PSAnaHR0cHM6Ly90YXNrY2x1c3Rlci5uZXQnOgot
ICAgICAgICBxdWV1ZV9iYXNlID0gImh0dHBzOi8vcXVldWUudGFza2NsdXN0ZXIubmV0L3YxL3Rh
c2siCi0gICAgZWxzZToKLSAgICAgICAgcXVldWVfYmFzZSA9IHJvb3RfdXJsICsgIi9hcGkvcXVl
dWUvdjEvdGFzayIKLQotCi0gICAgcmVzcCA9IHVybG9wZW4oIiVzLyVzIiAlIChxdWV1ZV9iYXNl
LCB0YXNrX2lkKSkKLQotICAgIHRhc2tfZGF0YSA9IGpzb24ubG9hZChyZXNwKQorICAgIHdpdGgg
dGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAgICAgIGRvd25sb2FkX3VybF90b19k
ZXNjcmlwdG9yKGYsIHRhc2tfdXJsKHRhc2tfaWQpKQorICAgICAgICBmLnNlZWsoMCkKKyAgICAg
ICAgdGFza19kYXRhID0ganNvbi5sb2FkKGYpCiAgICAgZXZlbnRfZGF0YSA9IHRhc2tfZGF0YS5n
ZXQoImV4dHJhIiwge30pLmdldCgiZ2l0aHViX2V2ZW50IikKICAgICBpZiBldmVudF9kYXRhIGlz
IG5vdCBOb25lOgogICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhldmVudF9kYXRhKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS90YXNrY2x1c3Rlci1ydW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQppbmRleCBhYzVhYmMxMmIxZjE3
ZDJmYzkzYzZhYzU2MzZiZmQ2ZmU3Y2FmYTA0Li5kOGU0MmNjZWEyMTEyNjk0YzZkM2I4YjFhYTZj
YTcwMzRlYTIyMjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1
bi5weQpAQCAtOSwxMCArOSwxOCBAQCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCiBi
cm93c2VyX3NwZWNpZmljX2FyZ3MgPSB7Ci0gICAgImZpcmVmb3giOiBbIi0taW5zdGFsbC1icm93
c2VyIl0sCiAgICAgInNlcnZvIjogWyItLWluc3RhbGwtYnJvd3NlciIsICItLXByb2Nlc3Nlcz0x
MiJdCiB9CiAKK2RlZiBnZXRfYnJvd3Nlcl9hcmdzKHByb2R1Y3QpOgorICAgIGlmIHByb2R1Y3Qg
PT0gImZpcmVmb3giOgorICAgICAgICBsb2NhbF9iaW5hcnkgPSBvcy5wYXRoLmV4cGFuZHVzZXIo
b3MucGF0aC5qb2luKCJ+IiwgImJ1aWxkIiwgImZpcmVmb3giLCAiZmlyZWZveCIpKQorICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NhbF9iaW5hcnkpOgorICAgICAgICAgICAgcmV0dXJuIFsi
LS1iaW5hcnk9JXMiICUgbG9jYWxfYmluYXJ5XQorICAgICAgICBwcmludCgiV0FSTklORzogTG9j
YWwgZmlyZWZveCBiaW5hcnkgbm90IGZvdW5kIikKKyAgICAgICAgcmV0dXJuIFsiLS1pbnN0YWxs
LWJyb3dzZXIiXQorICAgIHJldHVybiBicm93c2VyX3NwZWNpZmljX2FyZ3MuZ2V0KHByb2R1Y3Qs
IFtdKQorCiAKIGRlZiBmaW5kX3dwdHJlcG9ydChhcmdzKToKICAgICBwYXJzZXIgPSBhcmdwYXJz
ZS5Bcmd1bWVudFBhcnNlcigpCkBAIC02Niw3ICs3NCw3IEBAIGRlZiBtYWluKHByb2R1Y3QsIGNv
bW1pdF9yYW5nZSwgd3B0X2FyZ3MpOgogICAgICAgICAiLS1uby1oZWFkbGVzcyIsCiAgICAgICAg
ICItLXZlcmlmeS1sb2ctZnVsbCIKICAgICBdCi0gICAgd3B0X2FyZ3MgKz0gYnJvd3Nlcl9zcGVj
aWZpY19hcmdzLmdldChwcm9kdWN0LCBbXSkKKyAgICB3cHRfYXJncyArPSBnZXRfYnJvd3Nlcl9h
cmdzKHByb2R1Y3QpCiAKICAgICAjIEhhY2sgdG8gcnVuIHNlcnZvIHdpdGggb25lIHByb2Nlc3Mg
b25seSBmb3Igd2RzcGVjCiAgICAgaWYgcHJvZHVjdCA9PSAic2Vydm8iIGFuZCAiLS10ZXN0LXR5
cGU9d2RzcGVjIiBpbiB3cHRfYXJnczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvUkVBRE1FLm1kIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQK
aW5kZXggMTFmMzY3Zjk4NmY5N2ZkYmZlNDBmMDliMmFlNDExNGYyNjM5MTZmNy4uNzg1YzgyY2Nh
MzljZGZiMTg2ZmRhMjQxMDNhNWE2ZmQ2NDliZWU1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
Yy9SRUFETUUubWQKQEAgLTQwLDYgKzQwLDE0IEBAIHRvcC1sZXZlbCBwcm9wZXJ0aWVzOgogKiBg
bmFtZWA6IE9wdGlvbmFsIFN0cmluZy4gTmFtZSB0byB1c2UgZm9yIHRoZSB0YXNrIG92ZXJyaWRp
bmcgdGhlCiAgIHByb3BlcnR5IG5hbWUuIFRoaXMgaXMgdXNlZnVsIGluIGNvbWJpbmF0aW9uIHdp
dGggc3Vic3RpdHV0aW9ucwogICBkZXNjcmliZWQgYmVsb3cuCisqIGBkb3dubG9hZC1hcnRpZmFj
dHNgOiBPcHRpb25hbCBPYmplY3QuIEFuIGFydGlmYWN0IHRvIGRvd25sb2FkIGZyb20KKyAgYSB0
YXNrIHRoYXQgdGhpcyB0YXNrIGRlcGVuZHMgb24uIFRoaXMgaGFzIHRoZSBmb2xsb3dpbmcgcHJv
cGVydGllczoKKyAgLSBgdGFza2AgLSBOYW1lIG9mIHRoZSB0YXNrIHByb2R1Y2luZyB0aGUgYXJ0
aWZhY3QKKyAgLSBgZ2xvYmAgLSBBIGdsb2IgcGF0dGVybiBmb3IgdGhlIGZpbGVuYW1lIG9mIHRo
ZSBhcnRpZmFjdAorICAtIGBkZXN0YCAtIEEgZGlyZWN0b3J5IHJlbHRpdmUgdG8gdGhlIGhvbWUg
ZGlyZWN0b3J5IGluIHdoaWNoIHRvIHBsYWNlCisgICAgICAgICAgICAgdGhlIGFydGlmYWN0Cisg
IC0gYGV4dHJhY3RgIC0gT3B0aW9uYWwuIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW4g
YXJjaGl2ZSBhcnRpZmFjdAorICAgICAgICAgICAgICAgIHNob3VsZCBiZSBleHRyYWN0ZWQgaW4t
cGxhY2UuCiAKICMjIFRhc2sgRXhwYW5zaW9ucwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lzaW9uLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9k
ZWNpc2lvbi5weQppbmRleCAwYzkzNWI5M2Y4ZWU4N2Y2NmRhZGVmZGRkM2ExMTYxNjBlZDlkZDNm
Li5mOGYxODZmNzQ0ZDgwODI3OTBhOGMzYmVjODY1NGZhMTVjYTdmM2U4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2Rl
Y2lzaW9uLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkKQEAgLTE5OSw2ICsxOTksNyBAQCBkZWYgYnVpbGRf
ZnVsbF9jb21tYW5kKGV2ZW50LCB0YXNrKToKIH4vc3RhcnQuc2ggXAogICAlKHJlcG9fdXJsKXMg
XAogICAlKGZldGNoX3JlZilzOworc3VkbyBhZGQtYXB0LXJlcG9zaXRvcnkgcHBhOmRlYWRzbmFr
ZXMvcHBhCiAlKGluc3RhbGxfc3RyKXMKIGNkIHdlYi1wbGF0Zm9ybS10ZXN0czsKIC4vdG9vbHMv
Y2kvcnVuX3RjLnB5ICUob3B0aW9uc19zdHIpcyAtLSAlKHRhc2tfY21kKXM7CkBAIC0yMTMsNyAr
MjE0LDcgQEAgZGVmIGdldF9vd25lcihldmVudCk6CiAgICAgcmV0dXJuICJ3ZWItcGxhdGZvcm0t
dGVzdHNAdXNlcnMubm9yZXBseS5naXRodWIuY29tIgogCiAKLWRlZiBjcmVhdGVfdGNfdGFzayhl
dmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcyk6CitkZWYgY3JlYXRlX3Rj
X3Rhc2soZXZlbnQsIHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsIGVudl9leHRy
YT1Ob25lKToKICAgICBjb21tYW5kID0gYnVpbGRfZnVsbF9jb21tYW5kKGV2ZW50LCB0YXNrKQog
ICAgIHRhc2tfaWQgPSB0YXNrY2x1c3Rlci5zbHVnSWQoKQogICAgIHRhc2tfZGF0YSA9IHsKQEAg
LTI0MCwxMiArMjQxLDI0IEBAIGRlZiBjcmVhdGVfdGNfdGFzayhldmVudCwgdGFzaywgdGFza2dy
b3VwX2lkLCBkZXBlbmRzX29uX2lkcyk6CiAgICAgICAgICAgICAiZ2l0aHViX2V2ZW50IjoganNv
bi5kdW1wcyhldmVudCkKICAgICAgICAgfQogICAgIH0KKyAgICBpZiBlbnZfZXh0cmE6CisgICAg
ICAgIHRhc2tfZGF0YVsicGF5bG9hZCJdWyJlbnYiXS51cGRhdGUoZW52X2V4dHJhKQogICAgIGlm
IGRlcGVuZHNfb25faWRzOgogICAgICAgICB0YXNrX2RhdGFbImRlcGVuZGVuY2llcyJdID0gZGVw
ZW5kc19vbl9pZHMKICAgICAgICAgdGFza19kYXRhWyJyZXF1aXJlcyJdID0gImFsbC1jb21wbGV0
ZWQiCiAgICAgcmV0dXJuIHRhc2tfaWQsIHRhc2tfZGF0YQogCiAKK2RlZiBnZXRfYXJ0aWZhY3Rf
ZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXApOgorICAgIHRhc2tfaWQsIGRhdGEgPSB0YXNrX2lk
X21hcFthcnRpZmFjdFsidGFzayJdXQorICAgIHJldHVybiB7CisgICAgICAgICJ0YXNrIjogdGFz
a19pZCwKKyAgICAgICAgImdsb2IiOiBhcnRpZmFjdFsiZ2xvYiJdLAorICAgICAgICAiZGVzdCI6
IGFydGlmYWN0WyJkZXN0Il0sCisgICAgICAgICJleHRyYWN0IjogYXJ0aWZhY3QuZ2V0KCJleHRy
YWN0IiwgRmFsc2UpCisgICAgfQorCisKIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50LCBhbGxf
dGFza3MsIHRhc2tzKToKICAgICB0YXNrX2lkX21hcCA9IE9yZGVyZWREaWN0KCkKICAgICB0YXNr
Z3JvdXBfaWQgPSBvcy5lbnZpcm9uLmdldCgiVEFTS19JRCIsIHRhc2tjbHVzdGVyLnNsdWdJZCgp
KQpAQCAtMjU4LDcgKzI3MSwxNCBAQCBkZWYgYnVpbGRfdGFza19ncmFwaChldmVudCwgYWxsX3Rh
c2tzLCB0YXNrcyk6CiAgICAgICAgICAgICAgICAgICAgIGFkZF90YXNrKGRlcGVuZHNfbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3Rhc2tzW2RlcGVuZHNfbmFtZV0pCiAg
ICAgICAgICAgICAgICAgZGVwZW5kc19vbl9pZHMuYXBwZW5kKHRhc2tfaWRfbWFwW2RlcGVuZHNf
bmFtZV1bMF0pCi0gICAgICAgIHRhc2tfaWQsIHRhc2tfZGF0YSA9IGNyZWF0ZV90Y190YXNrKGV2
ZW50LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKQorICAgICAgICBlbnZfZXh0
cmEgPSB7fQorICAgICAgICBpZiAiZG93bmxvYWQtYXJ0aWZhY3RzIiBpbiB0YXNrOgorICAgICAg
ICAgICAgZW52X2V4dHJhWyJUQVNLX0FSVElGQUNUUyJdID0ganNvbi5kdW1wcygKKyAgICAgICAg
ICAgICAgICBbZ2V0X2FydGlmYWN0X2RhdGEoYXJ0aWZhY3QsIHRhc2tfaWRfbWFwKQorICAgICAg
ICAgICAgICAgICBmb3IgYXJ0aWZhY3QgaW4gdGFza1siZG93bmxvYWQtYXJ0aWZhY3RzIl1dKQor
CisgICAgICAgIHRhc2tfaWQsIHRhc2tfZGF0YSA9IGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNr
LCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnZfZXh0cmE9ZW52X2V4dHJhKQogICAgICAgICB0YXNrX2lk
X21hcFt0YXNrX25hbWVdID0gKHRhc2tfaWQsIHRhc2tfZGF0YSkKIAogICAgIGZvciB0YXNrX25h
bWUsIHRhc2sgaW4gaXRlcml0ZW1zKHRhc2tzKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rj
L3Rhc2tzL3Rlc3QueW1sCmluZGV4IGU4MGU3OTQyMDNlZGNhM2M4ZDVmMTllYTk4MzNhNGY3OWU5
NzlmMDguLjMxODQzN2E4MGVjMzI0MDcyMWExN2NjNjI1M2YyNDExMDkwMzhiNjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
dGMvdGFza3MvdGVzdC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbApAQCAtNCw3ICs0LDcgQEAgY29t
cG9uZW50czoKICAgICB3b3JrZXJUeXBlOiBjaQogICAgIHNjaGVkdWxlcklkOiB0YXNrY2x1c3Rl
ci1naXRodWIKICAgICBkZWFkbGluZTogIjI0IGhvdXJzIgotICAgIGltYWdlOiBoYXJqZ2FtL3dl
Yi1wbGF0Zm9ybS10ZXN0czowLjM0CisgICAgaW1hZ2U6IHdlYnBsYXRmb3JtdGVzdHMvd3B0OjAu
MzcKICAgICBtYXhSdW5UaW1lOiA3MjAwCiAgICAgYXJ0aWZhY3RzOgogICAgICAgcHVibGljL3Jl
c3VsdHM6CkBAIC04Miw2ICs4MiwxMSBAQCBjb21wb25lbnRzOgogICBicm93c2VyLWZpcmVmb3g6
CiAgICAgZGVwZW5kcy1vbjoKICAgICAgIC0gZG93bmxvYWQtZmlyZWZveC0ke3ZhcnMuY2hhbm5l
bH0KKyAgICBkb3dubG9hZC1hcnRpZmFjdHM6CisgICAgICAtIHRhc2s6IGRvd25sb2FkLWZpcmVm
b3gtJHt2YXJzLmNoYW5uZWx9CisgICAgICAgIGdsb2I6IHB1YmxpYy9yZXN1bHRzL2ZpcmVmb3gt
JHt2YXJzLmNoYW5uZWx9LioKKyAgICAgICAgZGVzdDogYnVpbGQvCisgICAgICAgIGV4dHJhY3Q6
IHRydWUKIAogICBicm93c2VyLXdlYmtpdGd0a19taW5pYnJvd3Nlcjoge30KIApAQCAtOTgsOCAr
MTAzLDE1IEBAIGNvbXBvbmVudHM6CiAgICAgZW52OgogICAgICAgVE9YRU5WOiBweTM2CiAgICAg
ICBQWV9DT0xPUlM6IDAKKworICB0b3gtcHl0aG9uMzg6CisgICAgZW52OgorICAgICAgVE9YRU5W
OiBweTM4CisgICAgICBQWV9DT0xPUlM6IDAKICAgICBpbnN0YWxsOgotICAgICAgLSBweXRob24z
LXBpcAorICAgICAgLSBweXRob24zLjgKKyAgICAgIC0gcHl0aG9uMy44LWRpc3R1dGlscworICAg
ICAgLSBweXRob24zLjgtZGV2CiAKICAgdGVzdHMtYWZmZWN0ZWQ6CiAgICAgb3B0aW9uczoKQEAg
LTIxOCw2ICsyMzAsNyBAQCB0YXNrczoKICAgICAgICAgICAgICAgLS0KICAgICAgICAgICAgICAg
LS1jaGFubmVsPSR7dmFycy5jaGFubmVsfQogICAgICAgICAgICAgICAtLXZlcmlmeQorICAgICAg
ICAgICAgICAtLXZlcmlmeS1uby1jaGFvcy1tb2RlCiAKICAgICAgICAgLSB3cHQtJHt2YXJzLmJy
b3dzZXJ9LSR7dmFycy5jaGFubmVsfS1yZXN1bHRzOgogICAgICAgICAgICAgdXNlOgpAQCAtMjcy
LDcgKzI4NSw3IEBAIHRhc2tzOgogICAgICAgICBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFu
bmVsfToKICAgICAgICAgICB1c2U6CiAgICAgICAgICAgICAtIHdwdC1iYXNlCi0gICAgICAgICAg
Y29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9hZC1vbmx5IC0tZGVzdGluYXRpb24gL2hv
bWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0gZmlyZWZveCBicm93
c2VyIgorICAgICAgICAgIGNvbW1hbmQ6ICIuL3dwdCBpbnN0YWxsIC0tZG93bmxvYWQtb25seSAt
LWRlc3RpbmF0aW9uIC9ob21lL3Rlc3QvYXJ0aWZhY3RzLyAtLWNoYW5uZWw9JHt2YXJzLmNoYW5u
ZWx9ICAtLXJlbmFtZT1maXJlZm94LSR7dmFycy5jaGFubmVsfSBmaXJlZm94IGJyb3dzZXIiCiAK
ICAgLSBsaW50OgogICAgICAgdXNlOgpAQCAtMzA2LDkgKzMxOSw5IEBAIHRhc2tzOgogICAgICAg
ICBydW4tam9iOgogICAgICAgICAgIC0gdG9vbHNfdW5pdHRlc3QKIAotICAtIHRvb2xzLyB1bml0
dGVzdHMgKFB5dGhvbiAzKToKKyAgLSB0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KToKICAg
ICAgIGRlc2NyaXB0aW9uOiA+LQotICAgICAgICBVbml0IHRlc3RzIGZvciB0b29scyBydW5uaW5n
IHVuZGVyIFB5dGhvbiAzLCBleGNsdWRpbmcgd3B0cnVubmVyCisgICAgICAgIFVuaXQgdGVzdHMg
Zm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDMuNiwgZXhjbHVkaW5nIHdwdHJ1bm5lcgog
ICAgICAgdXNlOgogICAgICAgICAtIHdwdC1iYXNlCiAgICAgICAgIC0gdHJpZ2dlci1wcgpAQCAt
MzIwLDcgKzMzMywyMSBAQCB0YXNrczoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHRv
b2xzX3VuaXR0ZXN0CiAKLSAgLSB0b29scy93cHQvIHRlc3RzOgorICAtIHRvb2xzLyB1bml0dGVz
dHMgKFB5dGhvbiAzLjgpOgorICAgICAgZGVzY3JpcHRpb246ID4tCisgICAgICAgIFVuaXQgdGVz
dHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDMuOCwgZXhjbHVkaW5nIHdwdHJ1bm5l
cgorICAgICAgdXNlOgorICAgICAgICAtIHdwdC1iYXNlCisgICAgICAgIC0gdHJpZ2dlci1wcgor
ICAgICAgICAtIHRveC1weXRob24zOAorICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV90b29s
c191bml0dGVzdC5zaAorICAgICAgZW52OgorICAgICAgICBIWVBPVEhFU0lTX1BST0ZJTEU6IGNp
CisgICAgICBzY2hlZHVsZS1pZjoKKyAgICAgICAgcnVuLWpvYjoKKyAgICAgICAgICAtIHRvb2xz
X3VuaXR0ZXN0CisKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24gMik6CiAgICAgICBkZXNj
cmlwdGlvbjogPi0KICAgICAgICAgSW50ZWdyYXRpb24gdGVzdHMgZm9yIHdwdCBjb21tYW5kcwog
ICAgICAgdXNlOgpAQCAtMzQyLDYgKzM2OSw1MCBAQCB0YXNrczoKICAgICAgICAgcnVuLWpvYjoK
ICAgICAgICAgICAtIHdwdF9pbnRlZ3JhdGlvbgogCisgIC0gdG9vbHMvd3B0LyB0ZXN0cyAoUHl0
aG9uIDMuNik6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgSW50ZWdyYXRpb24gdGVz
dHMgZm9yIHdwdCBjb21tYW5kcworICAgICAgdXNlOgorICAgICAgICAtIHdwdC1iYXNlCisgICAg
ICAgIC0gdHJpZ2dlci1wcgorICAgICAgICAtIHRveC1weXRob24zCisgICAgICBjb21tYW5kOiAu
L3Rvb2xzL2NpL2NpX3dwdC5zaAorICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBsaWJuc3MzLXRv
b2xzCisgICAgICBvcHRpb25zOgorICAgICAgICBvb20ta2lsbGVyOiB0cnVlCisgICAgICAgIGJy
b3dzZXI6CisgICAgICAgICAgLSBmaXJlZm94CisgICAgICAgICAgLSBjaHJvbWUKKyAgICAgICAg
Y2hhbm5lbDogZXhwZXJpbWVudGFsCisgICAgICAgIHh2ZmI6IHRydWUKKyAgICAgICAgaG9zdHM6
IHRydWUKKyAgICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0g
d3B0X2ludGVncmF0aW9uCisKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24gMy44KToKKyAg
ICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNv
bW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2Vy
LXByCisgICAgICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2Np
X3dwdC5zaAorICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBsaWJuc3MzLXRvb2xzCisgICAgICBv
cHRpb25zOgorICAgICAgICBvb20ta2lsbGVyOiB0cnVlCisgICAgICAgIGJyb3dzZXI6CisgICAg
ICAgICAgLSBmaXJlZm94CisgICAgICAgICAgLSBjaHJvbWUKKyAgICAgICAgY2hhbm5lbDogZXhw
ZXJpbWVudGFsCisgICAgICAgIHh2ZmI6IHRydWUKKyAgICAgICAgaG9zdHM6IHRydWUKKyAgICAg
IHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0gd3B0X2ludGVncmF0
aW9uCisKICAgLSByZXNvdXJjZXMvIHRlc3RzOgogICAgICAgZGVzY3JpcHRpb246ID4tCiAgICAg
ICAgIFRlc3RzIGZvciB0ZXN0aGFybmVzcy5qcyBhbmQgb3RoZXIgZmlsZXMgaW4gcmVzb3VyY2Vz
LwpAQCAtMzYyLDEwICs0MzMsMTIgQEAgdGFza3M6CiAgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3Rz
OgogICAgICAgZGVzY3JpcHRpb246ID4tCiAgICAgICAgIFNtb2tldGVzdHMgZm9yIHdwdHJ1bm5l
cgorICAgICAgdmFyczoKKyAgICAgICAgY2hhbm5lbDogbmlnaHRseQogICAgICAgdXNlOgogICAg
ICAgICAtIHdwdC1iYXNlCiAgICAgICAgIC0gdHJpZ2dlci1wcgotICAgICAgICAtIHRveC1weXRo
b24yCisgICAgICAgIC0gYnJvd3Nlci1maXJlZm94CiAgICAgICBjb21tYW5kOiAuL3Rvb2xzL2Np
L2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaAogICAgICAgaW5zdGFsbDoKICAgICAgICAg
LSBsaWJuc3MzLXRvb2xzCkBAIC0zODIsMyArNDU1LDI4IEBAIHRhc2tzOgogICAgICAgc2NoZWR1
bGUtaWY6CiAgICAgICAgIHJ1bi1qb2I6CiAgICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1
Y3R1cmUKKworICAtIGluZnJhc3RydWN0dXJlLyB0ZXN0cyAoUHl0aG9uIDMpOgorICAgICAgZGVz
Y3JpcHRpb246ID4tCisgICAgICAgIFNtb2tldGVzdHMgZm9yIHdwdHJ1bm5lcgorICAgICAgdmFy
czoKKyAgICAgICAgY2hhbm5lbDogbmlnaHRseQorICAgICAgdXNlOgorICAgICAgICAtIHdwdC1i
YXNlCisgICAgICAgIC0gdHJpZ2dlci1wcgorICAgICAgY29tbWFuZDogLi90b29scy9jaS9jaV93
cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2ggLS1weTMKKyAgICAgIGluc3RhbGw6CisgICAgICAg
IC0gcHl0aG9uMy1waXAKKyAgICAgICAgLSBsaWJuc3MzLXRvb2xzCisgICAgICAgIC0gbGliYXBw
aW5kaWNhdG9yMQorICAgICAgICAtIGZvbnRzLWxpYmVyYXRpb24KKyAgICAgIG9wdGlvbnM6Cisg
ICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3NlcjoKKyAgICAgICAgICAtIGNo
cm9tZQorICAgICAgICBjaGFubmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQor
ICAgICAgICBob3N0czogZmFsc2UKKyAgICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9i
OgorICAgICAgICAgIC0gd3B0cnVubmVyX2luZnJhc3RydWN0dXJlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3Rz
L3Rlc3RfdmFsaWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKaW5kZXggYjE3MDkyOGIyOTBhMjdm
NzVlYWRhNjYxNjJlYTQwNGExZGJhZTlmOS4uNDdjYmMyZTg3YmI4MDU5N2RkOTgwZTlmOThiYzQx
M2IwNDE2YjU1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weQpAQCAtNiw3ICs2LDYgQEAgaW1wb3J0IGpzb25lCiBpbXBvcnQgbW9jawogaW1w
b3J0IHB5dGVzdAogaW1wb3J0IHJlcXVlc3RzCi1pbXBvcnQgc3lzCiBpbXBvcnQgeWFtbAogZnJv
bSBqc29uc2NoZW1hIGltcG9ydCB2YWxpZGF0ZQogCkBAIC0yMCw5ICsxOSw2IEBAIGRlZiBkYXRh
X3BhdGgoZmlsZW5hbWUpOgogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaGVyZSwgIi4uIiwgInRl
c3RkYXRhIiwgZmlsZW5hbWUpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2lu
Zm8ubWFqb3IgPT0gMiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249InRhc2tjbHVzdGVyIGxp
YnJhcnkgaGFzIGFuIGVuY29kaW5nIGJ1ZyAiCi0gICAgICAgICAgICAgICAgICAgImh0dHBzOi8v
Z2l0aHViLmNvbS90YXNrY2x1c3Rlci9qc29uLWUvaXNzdWVzLzMzOCIpCiBkZWYgdGVzdF92ZXJp
ZnlfdGFza2NsdXN0ZXJfeW1sKCk6CiAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIGpzb24tZSBpbiB0
aGUgLnRhc2tjbHVzdGVyLnltbCBpcyB2YWxpZCIiIgogICAgIHdpdGggb3Blbihvcy5wYXRoLmpv
aW4ocm9vdCwgIi50YXNrY2x1c3Rlci55bWwiKSwgZW5jb2Rpbmc9InV0ZjgiKSBhcyBmOgpAQCAt
NDYsMTEgKzQyLDE3IEBAIGRlZiB0ZXN0X3ZlcmlmeV9wYXlsb2FkKCk6CiAgICAgIiIiVmVyaWZ5
IHRoYXQgdGhlIGRlY2lzaW9uIHRhc2sgcHJvZHVjZXMgdGFza3Mgd2l0aCBhIHZhbGlkIHBheWxv
YWQiIiIKICAgICBmcm9tIHRvb2xzLmNpLnRjLmRlY2lzaW9uIGltcG9ydCBkZWNpZGUKIAotICAg
IGNyZWF0ZV90YXNrX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgKLSAgICAgICAgImh0dHBzOi8vcmF3
LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YXNrY2x1c3Rlci90YXNrY2x1c3Rlci9ibG9iL21hc3Rl
ci9zZXJ2aWNlcy9xdWV1ZS9zY2hlbWFzL3YxL2NyZWF0ZS10YXNrLXJlcXVlc3QueW1sIikKLSAg
ICBjcmVhdGVfdGFza19zY2hlbWEgPSB5YW1sLnNhZmVfbG9hZChjcmVhdGVfdGFza19zY2hlbWEu
Y29udGVudCkKKyAgICByID0gcmVxdWVzdHMuZ2V0KCJodHRwczovL2NvbW11bml0eS10Yy5zZXJ2
aWNlcy5tb3ppbGxhLmNvbS9zY2hlbWFzL3F1ZXVlL3YxL2NyZWF0ZS10YXNrLXJlcXVlc3QuanNv
biIpCisgICAgci5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICBjcmVhdGVfdGFza19zY2hlbWEgPSBy
Lmpzb24oKQogCi0gICAgcGF5bG9hZF9zY2hlbWEgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vcmF3
LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YXNrY2x1c3Rlci9kb2NrZXItd29ya2VyL21hc3Rlci9z
Y2hlbWFzL3YxL3BheWxvYWQuanNvbiIpLmpzb24oKQorICAgICMgVE9ETyhIZXhjbGVzKTogQ2hh
bmdlIGl0IHRvIGh0dHBzOi8vY29tbXVuaXR5LXRjLnNlcnZpY2VzLm1vemlsbGEuY29tL3JlZmVy
ZW5jZXMvc2NoZW1hcy9kb2NrZXItd29ya2VyL3YxL3BheWxvYWQuanNvbgorICAgICMgYWZ0ZXIg
dGhlIG5leHQgQ29tbXVuaXR5LVRDIHJlbGVhc2UgKHNlZSBodHRwczovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5NzMyKS4uCisgICAgciA9IHJlcXVlc3RzLmdldCgK
KyAgICAgICAgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90YXNrY2x1c3Rlci90
YXNrY2x1c3Rlci8iCisgICAgICAgICIzZWQ1MTFlZjkxMTlkYTU0ZmMwOTNlOTc2YjdiNTk1NTg3
NGM5YjU0L3dvcmtlcnMvZG9ja2VyLXdvcmtlci9zY2hlbWFzL3YxL3BheWxvYWQuanNvbiIpCisg
ICAgci5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICBwYXlsb2FkX3NjaGVtYSA9IHIuanNvbigpCiAK
ICAgICBqb2JzID0gWyJsaW50IiwKICAgICAgICAgICAgICJtYW5pZmVzdF91cGxvYWQiLApAQCAt
MTI3LDEyICsxMjksMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAgICd3cHQt
Y2hyb21lLWRldi1jcmFzaHRlc3QtMScsCiAgICAgICAnbGludCd9KSwKICAgICAoInByX2V2ZW50
Lmpzb24iLCBUcnVlLCB7Ii50YXNrY2x1c3Rlci55bWwiLCIudHJhdmlzLnltbCIsInRvb2xzL2Np
L3N0YXJ0LnNoIn0sCi0gICAgIHsnbGludCcsCisgICAgIHsnZG93bmxvYWQtZmlyZWZveC1uaWdo
dGx5JywKKyAgICAgICdsaW50JywKICAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMikn
LAotICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzKScsCi0gICAgICAndG9vbHMvd3B0
LyB0ZXN0cycsCisgICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuNiknLAorICAgICAg
J3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzLjgpJywKKyAgICAgICd0b29scy93cHQvIHRlc3Rz
IChQeXRob24gMiknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjYpJywKKyAg
ICAgICd0b29scy93cHQvIHRlc3RzIChQeXRob24gMy44KScsCiAgICAgICAncmVzb3VyY2VzLyB0
ZXN0cycsCi0gICAgICAnaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzJ30pLAorICAgICAgJ2luZnJhc3Ry
dWN0dXJlLyB0ZXN0cycsCisgICAgICAnaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMykn
fSksCiAgICAgIyBNb3JlIHRlc3RzIGFyZSBhZmZlY3RlZCBpbiB0aGUgYWN0dWFsIFBSIGJ1dCBp
dCBzaG91bGRuJ3QgYWZmZWN0IHRoZSBzY2hlZHVsZWQgdGFza3MKICAgICAoInByX2V2ZW50X3Rl
c3RzX2FmZmVjdGVkLmpzb24iLCBUcnVlLCB7ImxheW91dC1pbnN0YWJpbGl0eS9jbGlwLW5lZ2F0
aXZlLWJvdHRvbS1tYXJnaW4uaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJsYXlvdXQtaW5zdGFiaWxpdHkvY29tcG9zaXRlZC1lbGVtZW50LW1vdmVt
ZW50Lmh0bWwifSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9qb2JzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkK
aW5kZXggOTRmNzk5ODc3MGNmNWQ4YmFkMzZkMTg4ZGQ2M2UyNTNmOTgxOTlhOC4uYWExMjczODIw
NGYzNjUyZTJkZjk2NDQ0NDY5MzY4ZTBlNjI2MTkyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS90ZXN0cy90ZXN0X2pvYnMucHkKQEAgLTExNCwxMSArMTE0LDExIEBAIGRlZiB0ZXN0X2J1
aWxkX2NzcygpOgogCiAKIGRlZiB0ZXN0X3VwZGF0ZV9idWlsdCgpOgotICAgIGFzc2VydCBqb2Jz
LmdldF9qb2JzKFsiMmRjb250ZXh0L2Zvby5odG1sIl0sCisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pv
YnMoWyJodG1sL2NhbnZhcy9lbGVtZW50L2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQogICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9mb28uaHRtbCJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVzPVsidXBkYXRlX2J1aWx0Il0pID09IHsidXBkYXRlX2J1aWx0In0K
LSAgICBhc3NlcnQgam9icy5nZXRfam9icyhbIm9mZnNjcmVlbi1jYW52YXMvZm9vLmh0bWwiXSwK
KyAgICBhc3NlcnQgam9icy5nZXRfam9icyhbImh0bWwvY2FudmFzL29mZnNjcmVlbi9mb28uaHRt
bCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsidXBkYXRlX2J1aWx0Il0p
ID09IHsidXBkYXRlX2J1aWx0In0KIAogCkBAIC0xMzQsMyArMTM0LDcgQEAgZGVmIHRlc3Rfd3B0
X2luZnJhc3RydWN0dXJlKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ3
cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUiXSkgPT0geyJ3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUi
fQogICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaW5mcmFzdHJ1Y3R1cmUvYXNzdW1wdGlvbnMv
YWhlbS5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ3cHRydW5u
ZXJfaW5mcmFzdHJ1Y3R1cmUiXSkgPT0geyJ3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUifQorCitk
ZWYgdGVzdF93ZHNwZWNfc3VwcG9ydCgpOgorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsid2Vi
ZHJpdmVyL3Rlc3RzL3N1cHBvcnQvX19pbml0X18ucHkiXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5l
cl9pbmZyYXN0cnVjdHVyZSJ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3RfcHJfcHJldmlldy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMv
dGVzdF9wcl9wcmV2aWV3LnB5CmluZGV4IDYzNDgyZmIxODRjN2YxNGRiMGViZDQ1YzE4Nzk0ZTNh
OTc3MWM5MGIuLjJkOTk2NmZjOGNmNDE4NzkxM2FkY2U4NjA5ZWU3NTBhZGUxYjk3OTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5CkBA
IC0xMTUsNiArMTE1LDcgQEAgY2xhc3MgTW9ja1NlcnZlcihIVFRQU2VydmVyLCBvYmplY3QpOgog
Y2xhc3MgUmVxdWVzdHMob2JqZWN0KToKICAgICBnZXRfcmF0ZSA9ICgnR0VUJywgJy9yYXRlX2xp
bWl0Jywge30pCiAgICAgc2VhcmNoID0gKCdHRVQnLCAnL3NlYXJjaC9pc3N1ZXMnLCB7fSkKKyAg
ICBwcl9kZXRhaWxzID0gKCdHRVQnLCAnL3JlcG9zL3Rlc3Qtb3JnL3Rlc3QtcmVwby9wdWxscy8y
MycsIHt9KQogICAgIHJlZl9jcmVhdGVfb3BlbiA9ICgKICAgICAgICAgJ1BPU1QnLCAnL3JlcG9z
L3Rlc3Qtb3JnL3Rlc3QtcmVwby9naXQvcmVmcycsIHsncmVmJzoncmVmcy9wcnMtb3Blbi8yMyd9
CiAgICAgKQpAQCAtMzc2LDYgKzM3Nyw3IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29s
bGFib3JhdG9yKCk6CiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xp
bWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAog
ICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAg
IChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVl
c3RzLnNlYXJjaCwgKAogICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewpAQCAtMzkxLDYg
KzM5MywxNSBAQCBkZWYgdGVzdF9zeW5jaHJvbml6ZV9zeW5jX2NvbGxhYm9yYXRvcigpOgogICAg
ICAgICAgICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQog
ICAgICAgICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdy
ZXBvJzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV9vcGVu
LCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAw
LCB7fSkpLAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIHt9KSksCkBA
IC00NTIsNiArNDYzLDQxIEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX2lnbm9yZV91bnRydXN0ZWRf
Y29udHJpYnV0b3IoKToKICAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCiAgICAgYXNzZXJ0IHNh
bWVfbWVtYmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKIAorZGVmIHRlc3Rf
c3luY2hyb25pemVfaWdub3JlX3B1bGxfcmVxdWVzdF9mcm9tX2ZvcmsoKToKKyAgICBleHBlY3Rl
ZF90cmFmZmljID0gWworICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwK
KyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAgICAgICAgMjAwLAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgJ2xhYmVscyc6IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZF9hdCc6
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9naW4nOiAnZ3JhY2Un
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFC
T1JBVE9SJworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICdoZWFkJzogeworICAgICAgICAgICAgICAgICAgICAncmVw
byc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAnc29tZS1vdGhlci1v
cmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICApKSwKKyAgICBdCisKKyAgICByZXR1cm5jb2RlLCBhY3R1
YWxfdHJhZmZpYywgcmVtb3RlX3JlZnMgPSBzeW5jaHJvbml6ZShleHBlY3RlZF90cmFmZmljKQor
CisgICAgYXNzZXJ0IHJldHVybmNvZGUgPT0gMAorICAgIGFzc2VydCBzYW1lX21lbWJlcnMoZXhw
ZWN0ZWRfdHJhZmZpYywgYWN0dWFsX3RyYWZmaWMpCisKIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5
bmNfdHJ1c3RlZF9jb250cmlidXRvcigpOgogICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKQEAgLTQ1OSwxMiAr
NTA1LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfdHJ1c3RlZF9jb250cmlidXRvcigp
OgogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMu
Z2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gs
ICgKICAgICAgICAgICAgIDIwMCwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAnaXRl
bXMnOiBbCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICdu
dW1iZXInOiAyMywKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlciBoZXJlIGlzIGEgY29u
dHJpYnV0b3IgKHVudHJ1c3RlZCksIGJ1dCB0aGUgaXNzdWUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICMgaGFzIGJlZW4gbGFiZWxsZWQgYXMgc2FmZS4KICAgICAgICAgICAgICAgICAgICAgICAg
ICdsYWJlbHMnOiBbeyduYW1lJzogJ3NhZmUgZm9yIHByZXZpZXcnfV0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICd1
c2VyJzogeydsb2dpbic6ICdIZXhjbGVzJ30sCkBAIC00NzQsNiArNTIzLDYwIEBAIGRlZiB0ZXN0
X3N5bmNocm9uaXplX3N5bmNfdHJ1c3RlZF9jb250cmlidXRvcigpOgogICAgICAgICAgICAgICAg
ICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwK
KyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV9vcGVuLCAoMjAwLCB7fSkp
LAorICAgICAgICAoUmVxdWVzdHMucmVmX2NyZWF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLAorICAg
ICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCisgICAgICAgIChSZXF1
ZXN0cy5kZXBsb3ltZW50X2NyZWF0ZSwgKDIwMCwge30pKQorICAgIF0KKworICAgIHJldHVybmNv
ZGUsIGFjdHVhbF90cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3Ry
YWZmaWMpCisKKyAgICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVt
YmVycyhleHBlY3RlZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKworZGVmIHRlc3Rfc3luY2hy
b25pemVfc3luY19ib3Rfd2l0aF9sYWJlbCgpOgorICAgIGV4cGVjdGVkX3RyYWZmaWMgPSBbCisg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBS
ZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNl
cy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgKKyAgICAgICAgICAgIDIw
MCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnaXRlbXMnOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXInOiAyMywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgdXNlciBoZXJlIGlzIGEgYm90IHdoaWNoIGlzIG5vcm1hbGx5
IG5vdCBtaXJyb3JlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IHRoZSBpc3N1ZSBo
YXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgorICAgICAgICAgICAgICAgICAgICAgICAgJ2xhYmVs
cyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdjbG9zZWRfYXQnOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXInOiB7
J2xvZ2luJzogJ2Nocm9taXVtLXdwdC1leHBvcnQtYm90J30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAnYXV0aG9yX2Fzc29jaWF0aW9uJzogJ0NPTExBQk9SQVRPUicKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgJ2luY29tcGxldGVf
cmVzdWx0cyc6IEZhbHNlCisgICAgICAgICAgICB9CisgICAgICAgICkpLAorICAgICAgICAoUmVx
dWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAn
aGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAg
ICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChS
ZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0
cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKQEAgLTQ5Miw2ICs1OTUsNyBAQCBkZWYgdGVz
dF9zeW5jaHJvbml6ZV91cGRhdGVfY29sbGFib3JhdG9yKCk6CiAgICAgICAgIChSZXF1ZXN0cy5n
ZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRl
LCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKDIwMCwKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAnaXRlbXMnOiBbCkBAIC01MDYsNiArNjEwLDE1IEBAIGRlZiB0ZXN0
X3N5bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgICAgICAgICAnaW5j
b21wbGV0ZV9yZXN1bHRzJzogRmFsc2UKICAgICAgICAgICAgIH0KICAgICAgICAgKSksCisgICAg
ICAgIChSZXF1ZXN0cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICdoZWFkJzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKICAgICAgICAgKFJlcXVlc3RzLmRlcGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLAogICAg
ICAgICAoUmVxdWVzdHMucmVmX3VwZGF0ZV9vcGVuLCAoMjAwLCB7fSkpLAogICAgICAgICAoUmVx
dWVzdHMucmVmX3VwZGF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpLApAQCAtNTI4LDYgKzY0MSw3IEBA
IGRlZiB0ZXN0X3N5bmNocm9uaXplX3VwZGF0ZV9tZW1iZXIoKToKICAgICAgICAgKFJlcXVlc3Rz
LmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3Jh
dGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVz
cG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMu
bm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTU0Miw2ICs2NTYsMTUgQEAgZGVmIHRl
c3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAgICAgICAgICdpbmNvbXBs
ZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAgICAgICAg
KFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkp
LAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFt7J3NvbWUnOiAnZGVw
bG95bWVudCd9XSkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX3VwZGF0ZV9vcGVuLCAoMjAwLCB7
fSkpLAogICAgICAgICAoUmVxdWVzdHMucmVmX3VwZGF0ZV90cnVzdGVkLCAoMjAwLCB7fSkpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9Eb2NrZXJmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQppbmRleCAwYTg0MmRlMWFiODU3ZDFm
NjU1YjkzNjVkZjYxZjNmYTk3OGUzMWJlLi5mMzkyN2ZkMGQ3MWNjZjI5MmQ5Njk5ZDU5N2E0Nzk5
NDVhOGU1MTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKQEAgLTI1
LDYgKzI1LDggQEAgUlVOIGFwdC1nZXQgLXFxeSB1cGRhdGUgXAogICAgIHB1bHNlYXVkaW8gXAog
ICAgIHB5dGhvbiBcCiAgICAgcHl0aG9uLXBpcCBcCisgICAgcHl0aG9uMyBcCisgICAgcHl0aG9u
My1waXAgXAogICAgIHFlbXUta3ZtIFwKICAgICB0emRhdGEgXAogICAgIHN1ZG8gXApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9k
b2NrZXIvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9kb2NrZXIvUkVBRE1FLm1kCmluZGV4IDQ1MDk4MWY2ODZiZmFjZTJkOTI0M2U1
NjI4MDQwYmI2YjJmNmM0ZTAuLjkzNDJhZGVkMjk4YmRkMGU1ZGFhYzEyMjg5Yzc4MTYzZDFkNWJl
YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9SRUFETUUubWQKQEAgLTEsMTAgKzEsMTgg
QEAKIFRoaXMgZG9ja2VyIGltYWdlcyBpcyB1c2VkIGZvciB0ZXN0aW5nIENocm9tZSwgRmlyZWZv
eCwgV2ViS2l0R1RLIGFuZCBydW5uaW5nCiBvdGhlciB0YXNrcyBvbiBUYXNrY2x1c3Rlci4gV2hl
biBhbnkgb2YgdGhlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGNoYW5nZSwgdGhlCi1pbWFnZXMg
bXVzdCBiZSB1cGRhdGVkIGFzIHdlbGwuIFRvIGRvIHRoaXMsIGFzc3VtaW5nIHlvdSBoYXZlIGRv
Y2tlciBpbnN0YWxsZWQ6CitpbWFnZXMgbXVzdCBiZSB1cGRhdGVkIGFzIHdlbGwuIERvaW5nIHRo
aXMgcmVxdWlyZXMgeW91IGJlIHBhcnQgb2YgdGhlCisnd2VicGxhdGZvcm10ZXN0cycgb3JnYW5p
emF0aW9uIG9uIERvY2tlciBIdWI7IHBpbmcgQEhleGNsZXMgb3IgQHN0ZXBoZW5tY2dydWVyCitp
ZiB5b3UgYXJlIG5vdCBhIG1lbWJlci4KKworSW4gdGhpcyBkaXJlY3RvcnksIHJ1biB0aGUgZm9s
bG93aW5nLCB3aGVyZSBgPHRhZz5gIGlzIG9mIHRoZSBmb3JtCitgd2VicGxhdGZvcm10ZXN0cy93
cHQ6e2N1cnJlbnQtdmVyc2lvbiArIDAuMDF9YDoKIAotSW4gdGhpcyBkaXJlY3RvcnksIHJ1bgog
YGBgc2gKLWRvY2tlciBidWlsZCAtdCA8dGFnPiAuCisjIC0tcHVsbCBmb3JjZXMgRG9ja2VyIHRv
IGdldCB0aGUgbmV3ZXN0IGJhc2UgaW1hZ2UuCitkb2NrZXIgYnVpbGQgLS1wdWxsIC10IDx0YWc+
IC4KIGRvY2tlciBwdXNoIDx0YWc+CiBgYGAKIAorVGhlbiB1cGRhdGUgdGhlIGZvbGxvd2luZyBU
YXNrY2x1c3RlciBjb25maWd1cmF0aW9ucyB0byB1c2UgdGhlIG5ldyBpbWFnZToKKyogYC50YXNr
Y2x1c3Rlci55bWxgICh0aGUgZGVjaXNpb24gdGFzaykKKyogYHRvb2xzL2NpL3RjL3Rhc2tzL3Rl
c3QueW1sYCAoYWxsIHRoZSBvdGhlciB0YXNrcykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2Zyb250ZW5kLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIv
ZnJvbnRlbmQucHkKaW5kZXggOTc2MTU2Y2Y2NWEwMDgyMWExMWEzMzUxMzAxYjQ3YzEwNzhjODQx
Ni4uNTlhMWNmZjJlYmQwZWZkYTA2ZmFkZDE0NGE4NGI1ZDM1YjJkODFjOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIv
ZnJvbnRlbmQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkKQEAgLTgsNiArOCw3IEBAIHdwdF9yb290ID0g
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihoZXJlLCBvcy5wYXJkaXIsIG9zLnBhcmRpcikp
CiBkZWYgYnVpbGQoKmFyZ3MsICoqa3dhcmdzKToKICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwo
WyJkb2NrZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICItLXB1bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ii0tdGFnIiwgIndwdDpsb2NhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXJlXSkK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvcmV0cnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9yZXRyeS5weQppbmRleCA2MTI2Yjc4MWJmYWRkMTVl
ODJiOGEzYTNiOTQ5NDA1MDkzOWVhYjZjLi41YzhlNmQ3OWMzMDM4ZGRmZjQ5Njg4ZDRmMWZjN2U3
ZjI5NGFkMDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9yZXRyeS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9yZXRyeS5weQpAQCAtMjEsMjMg
KzIxLDI4IEBAIGRlZiBpdGVyX3JhbmdlKG4pOgogICAgICAgICBpICs9IDEKIAogCitkZWYgbG9n
KHZhbHVlKToKKyAgICBwcmludCh2YWx1ZSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworCiBk
ZWYgbWFpbigpOgogICAgIGFyZ3MgPSBnZXRfYXJncygpLnBhcnNlX2FyZ3MoKQogCiAgICAgaWYg
bm90IGFyZ3MuY21kOgotICAgICAgICBwcmludCgiTm8gY29tbWFuZCBzdXBwbGllZCIpCisgICAg
ICAgIGxvZygiTm8gY29tbWFuZCBzdXBwbGllZCIpCiAgICAgICAgIHN5cy5leGl0KDEpCiAKICAg
ICByZXRjb2RlID0gTm9uZQogCiAgICAgZm9yIG4gaW4gaXRlcl9yYW5nZShhcmdzLmNvdW50KToK
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJpbnQoIlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0i
ICUgKCIgIi5qb2luKGFyZ3MuY21kKSwgKG4rMSksIGFyZ3MuY291bnQpKQorICAgICAgICAgICAg
bG9nKCJSdW5uaW5nICVzIFt0cnkgJWQvJWRdIiAlICgiICIuam9pbihhcmdzLmNtZCksIChuKzEp
LCBhcmdzLmNvdW50KSkKICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChhcmdzLmNt
ZCkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAg
ICAgICAgICAgICByZXRjb2RlID0gZS5yZXR1cm5jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiQ29tbWFuZCBzdWNjZWVkZWQiKQorICAgICAgICAgICAgbG9nKCJDb21tYW5k
IHN1Y2NlZWRlZCIpCiAgICAgICAgICAgICByZXRjb2RlID0gMAogICAgICAgICAgICAgYnJlYWsK
IApAQCAtNDYsMTAgKzUxLDEwIEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICB3YWl0X3RpbWUgPSBhcmdzLmZhY3RvcioqbiAqIGFyZ3MuZGVsYXkKICAgICAgICAgaWYg
biA8IGFyZ3MuY291bnQgLSAxOgotICAgICAgICAgICAgcHJpbnQoIkNvbW1hbmQgZmFpbGVkLCB3
YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUgd2FpdF90aW1lKQorICAgICAgICAgICAgbG9n
KCJDb21tYW5kIGZhaWxlZCwgd2FpdGluZyAlcyBzZWNvbmRzIHRvIHJldHJ5IiAlIHdhaXRfdGlt
ZSkKICAgICAgICAgICAgIHRpbWUuc2xlZXAod2FpdF90aW1lKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcHJpbnQoIkNvbW1hbmQgZmFpbGVkLCBvdXQgb2YgcmV0cmllcyIpCisgICAgICAg
ICAgICBsb2coIkNvbW1hbmQgZmFpbGVkLCBvdXQgb2YgcmV0cmllcyIpCiAKICAgICBzeXMuZXhp
dChyZXRjb2RlKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUu
cHkKaW5kZXggZDVlYTRhNmE4ZjNkNjRkNGFiYTNiOGRjYmU1ZmZlODQ5Yjc0ZTk2OS4uMGYzZDk0
NTBkMTIzNDQ5YzBkY2MzZmYzYzA0Y2E4NmM4MWIyNGJlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0aWdu
b3JlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpAQCAtMjY5LDcgKzI2OSw3IEBAIGNsYXNzIFBh
dGhGaWx0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYXBw
ZW5kKGl0ZW0pCiAKICAgICAgICAgICAgIGRpcm5hbWVzWzpdID0ga2VlcF9kaXJzCi0gICAgICAg
ICAgICBhc3NlcnQgIi5naXQiIG5vdCBpbiBkaXJuYW1lcworICAgICAgICAgICAgYXNzZXJ0IG5v
dCBhbnkoIi5naXQiID09IG5hbWUgZm9yIG5hbWUsIF8gaW4gZGlybmFtZXMpCiAgICAgICAgICAg
ICB5aWVsZCBvcmlnX2RpcnBhdGgsIGRpcm5hbWVzLCBrZWVwX2ZpbGVzCiAKICAgICBkZWYgX19j
YWxsX18oc2VsZiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkKaW5kZXggYTA1MGNmYThhOGU0
ZTI2OTlkYjQ0Y2U5ZTUyZjhmMjMwYTM0YTg2OS4uZmMxYTgxNmY4YWJmODVlZmNlMzFhM2E4ZTYx
NGJhNTkxYjYwMDk1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkKQEAgLTIwLDcgKzIw
LDcgQEAgZnJvbSAuLmdpdGlnbm9yZS5naXRpZ25vcmUgaW1wb3J0IFBhdGhGaWx0ZXIKIGZyb20g
Li53cHQgaW1wb3J0IHRlc3RmaWxlcwogZnJvbSAuLm1hbmlmZXN0LnZjcyBpbXBvcnQgd2Fsawog
Ci1mcm9tIC4ubWFuaWZlc3Quc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZSwganNfbWV0YV9y
ZSwgcHl0aG9uX21ldGFfcmUsIHNwYWNlX2NoYXJzLCBnZXRfYW55X3ZhcmlhbnRzLCBnZXRfZGVm
YXVsdF9hbnlfdmFyaWFudHMKK2Zyb20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3Vy
Y2VGaWxlLCBqc19tZXRhX3JlLCBweXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlf
dmFyaWFudHMKIGZyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRlcml0ZW1zLCBpdGVydmFs
dWVzLCB3aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiBmcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHNwbGl0LCB1cmxqb2luCkBAIC00MSw3ICs0
MSwxMiBAQCBpZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCiAgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IFVuaW9uCiAKLSAgICBXaGl0ZWxpc3QgPSBEaWN0W1RleHQsIERpY3RbVGV4
dCwgU2V0W09wdGlvbmFsW2ludF1dXV0KKyAgICAjIFRoZSBJZ25vcmVsaXN0IGlzIGEgdHdvIGxl
dmVsIGRpY3Rpb25hcnkuIFRoZSB0b3AgbGV2ZWwgaXMgaW5kZXhlZCBieQorICAgICMgZXJyb3Ig
bmFtZXMgKGUuZy4gJ1RSQUlMSU5HIFdISVRFU1BBQ0UnKS4gRWFjaCBvZiB0aG9zZSB0aGVuIGhh
cyBhIG1hcCBvZgorICAgICMgZmlsZSBwYXR0ZXJucyAoZS5nLiAnZm9vLyonKSB0byBhIHNldCBv
ZiBzcGVjaWZpYyBsaW5lIG51bWJlcnMgZm9yIHRoZQorICAgICMgZXhjZXB0aW9uLiBUaGUgbGlu
ZSBudW1iZXJzIGFyZSBvcHRpb25hbDsgaWYgbWlzc2luZyB0aGUgZW50aXJlIGZpbGUKKyAgICAj
IGlnbm9yZXMgdGhlIGVycm9yLgorICAgIElnbm9yZWxpc3QgPSBEaWN0W1RleHQsIERpY3RbVGV4
dCwgU2V0W09wdGlvbmFsW2ludF1dXV0KIAogCiBsb2dnZXIgPSBOb25lICAjIHR5cGU6IE9wdGlv
bmFsW2xvZ2dpbmcuTG9nZ2VyXQpAQCAtNzUsMTIgKzgwLDEyIEBAIEVSUk9SX01TRyA9ICIiIllv
dSBtdXN0IGZpeCBhbGwgZXJyb3JzOyBmb3IgZGV0YWlscyBvbiBob3cgdG8gZml4IHRoZW0sIHNl
ZQogaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3dyaXRpbmctdGVzdHMvbGludC10b29s
Lmh0bWwKIAogSG93ZXZlciwgaW5zdGVhZCBvZiBmaXhpbmcgYSBwYXJ0aWN1bGFyIGVycm9yLCBp
dCdzIHNvbWV0aW1lcwotT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC53aGl0ZWxpc3QgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUKK09LIHRvIGFkZCBhIGxpbmUgdG8gdGhlIGxpbnQuaWdub3Jl
IGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlCiB3ZWItcGxhdGZvcm0tdGVzdHMgZGlyZWN0b3J5IHRv
IG1ha2UgdGhlIGxpbnQgdG9vbCBpZ25vcmUgaXQuCiAKIEZvciBleGFtcGxlLCB0byBtYWtlIHRo
ZSBsaW50IHRvb2wgaWdub3JlIGFsbCAnJXMnCiBlcnJvcnMgaW4gdGhlICVzIGZpbGUsCi15b3Ug
Y291bGQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB0aGUgbGludC53aGl0ZWxpc3QgZmlsZS4K
K3lvdSBjb3VsZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50Lmlnbm9yZSBmaWxl
LgogCiAlczogJXMiIiIKIApAQCAtMzE4LDE0ICszMjMsNTIgQEAgZGVmIGNoZWNrX2Nzc19nbG9i
YWxseV91bmlxdWUocmVwb19yb290LCBwYXRocyk6CiAgICAgcmV0dXJuIGVycm9ycwogCiAKLWRl
ZiBwYXJzZV93aGl0ZWxpc3QoZik6Ci0gICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtX
aGl0ZWxpc3QsIFNldFtUZXh0XV0KK2RlZiBjaGVja191bmlxdWVfdGVzdGhhcm5lc3NfYmFzZW5h
bWVzKHJlcG9fcm9vdCwgcGF0aHMpOgorICAgICMgdHlwZTogKHN0ciwgTGlzdFtzdHJdKSAtPiBM
aXN0W3J1bGVzLkVycm9yXQorICAgICIiIgorICAgIENoZWNrcyB0aGF0IGFsbCB0ZXN0aGFybmVz
cyBmaWxlcyBoYXZlIHVuaXF1ZSBiYXNlbmFtZSBwYXRocy4KKworICAgIFRoZSAnYmFzZW5hbWUg
cGF0aCcgcmVmZXJzIHRvIHRoZSBlbnRpcmUgcGF0aCBleGNsdWRpbmcgdGhlIGV4dGVuc2lvbi4g
Rm9yCisgICAgZXhhbXBsZSwgJ2Zvby9iYXIvYmF6Lmh0bWwnIGFuZCAnZm9vL2Jhci9iYXoueGh0
bWwnIGhhdmUgdGhlIHNhbWUgYmFzZW5hbWUKKyAgICBwYXRoLCBidXQgJ2Zvby9iYXIvYmF6Lmh0
bWwnIGFuZCAnZm9vL3F1eC9iYXouaHRtbCcgZG8gbm90LgorCisgICAgVGVzdGhhcm5lc3MgZmls
ZXMgd2l0aCBpZGVudGljYWwgYmFzZW5hbWVzIGhhdmUgY2F1c2VkIGlzc3VlcyBpbiBkb3duc3Ry
ZWFtCisgICAgaW5mcmFzdHJ1Y3R1cmUgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdC9pc3N1ZXMvNzU3MCksCisgICAgYW5kIG1heSBjYXVzZSBjb25mdXNpb24g
aW4gZ2VuZXJhbC4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QK
KyAgICA6cGFyYW0gcGF0aHM6IGxpc3Qgb2YgYWxsIHBhdGhzCisgICAgOnJldHVybnM6IGEgbGlz
dCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRoc2BgCisgICAgIiIiCisKKyAgICBlcnJvcnMgPSBb
XQorICAgIGZpbGVfZGljdCA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgZm9yIHBhdGggaW4gcGF0
aHM6CisgICAgICAgIHNvdXJjZV9maWxlID0gU291cmNlRmlsZShyZXBvX3Jvb3QsIHBhdGgsICIv
IikKKyAgICAgICAgaWYgc291cmNlX2ZpbGUudHlwZSAhPSAidGVzdGhhcm5lc3MiOgorICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgZmlsZV9uYW1lLCBmaWxlX2V4dGVuc2lvbiA9IG9zLnBh
dGguc3BsaXRleHQocGF0aCkKKyAgICAgICAgZmlsZV9kaWN0W2ZpbGVfbmFtZV0uYXBwZW5kKGZp
bGVfZXh0ZW5zaW9uKQorICAgIGZvciBrLCB2IGluIGZpbGVfZGljdC5pdGVtcygpOgorICAgICAg
ICBpZiBsZW4odikgPT0gMToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGNvbnRleHQg
PSAoJywgJy5qb2luKHYpLCkKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiB2OgorICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZChydWxlcy5EdXBsaWNhdGVCYXNlbmFtZVBhdGguZXJyb3IoayArIGV4
dGVuc2lvbiwgY29udGV4dCkpCisgICAgcmV0dXJuIGVycm9ycworCisKK2RlZiBwYXJzZV9pZ25v
cmVsaXN0KGYpOgorICAgICMgdHlwZTogKElPW2J5dGVzXSkgLT4gVHVwbGVbSWdub3JlbGlzdCwg
U2V0W1RleHRdXQogICAgICIiIgotICAgIFBhcnNlIHRoZSB3aGl0ZWxpc3QgZmlsZSBnaXZlbiBi
eSBgZmAsIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBzdHJ1Y3R1cmUuCisgICAgUGFyc2UgdGhlIGln
bm9yZWxpc3QgZmlsZSBnaXZlbiBieSBgZmAsIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBzdHJ1Y3R1
cmUuCisKKyAgICA6cmV0dXJuczogYSB0dXBsZSBvZiBhbiBJZ25vcmVsaXN0IGFuZCBhIHNldCBv
ZiBmaWxlcyB0aGF0IGFyZSBjb21wbGV0ZWx5CisgICAgICAgICAgICAgIHNraXBwZWQgYnkgdGhl
IGxpbnRlciAoaS5lLiBoYXZlIGEgJyonIGVudHJ5KS4KICAgICAiIiIKIAotICAgIGRhdGEgPSBk
ZWZhdWx0ZGljdChsYW1iZGE6ZGVmYXVsdGRpY3Qoc2V0KSkgICMgdHlwZTogV2hpdGVsaXN0Ci0g
ICAgaWdub3JlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQorICAgIGRhdGEgPSBk
ZWZhdWx0ZGljdChsYW1iZGE6ZGVmYXVsdGRpY3Qoc2V0KSkgICMgdHlwZTogSWdub3JlbGlzdAor
ICAgIHNraXBwZWRfZmlsZXMgPSBzZXQoKSAgIyB0eXBlOiBTZXRbVGV4dF0KIAogICAgIGZvciBs
aW5lIGluIGY6CiAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKQEAgLTM0NCwzNyArMzg3LDM3
IEBAIGRlZiBwYXJzZV93aGl0ZWxpc3QoZik6CiAgICAgICAgIGZpbGVfbWF0Y2ggPSBvcy5wYXRo
Lm5vcm1jYXNlKGZpbGVfbWF0Y2gpCiAKICAgICAgICAgaWYgIioiIGluIGVycm9yX3R5cGVzOgot
ICAgICAgICAgICAgaWdub3JlZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKKyAgICAgICAgICAgIHNr
aXBwZWRfZmlsZXMuYWRkKGZpbGVfbWF0Y2gpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBm
b3IgZXJyb3JfdHlwZSBpbiBlcnJvcl90eXBlczoKICAgICAgICAgICAgICAgICBkYXRhW2Vycm9y
X3R5cGVdW2ZpbGVfbWF0Y2hdLmFkZChsaW5lX251bWJlcikKIAotICAgIHJldHVybiBkYXRhLCBp
Z25vcmVkX2ZpbGVzCisgICAgcmV0dXJuIGRhdGEsIHNraXBwZWRfZmlsZXMKIAogCi1kZWYgZmls
dGVyX3doaXRlbGlzdF9lcnJvcnMoZGF0YSwgZXJyb3JzKToKLSAgICAjIHR5cGU6IChXaGl0ZWxp
c3QsIFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KK2RlZiBmaWx0
ZXJfaWdub3JlbGlzdF9lcnJvcnMoZGF0YSwgZXJyb3JzKToKKyAgICAjIHR5cGU6IChJZ25vcmVs
aXN0LCBTZXF1ZW5jZVtydWxlcy5FcnJvcl0pIC0+IExpc3RbcnVsZXMuRXJyb3JdCiAgICAgIiIi
Ci0gICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgd2hpdGVsaXN0ZWQgaW4gYGRh
dGFgLgorICAgIEZpbHRlciBvdXQgdGhvc2UgZXJyb3JzIHRoYXQgYXJlIGlnbm9yZWQgaW4gYGRh
dGFgLgogICAgICIiIgogCiAgICAgaWYgbm90IGVycm9yczoKICAgICAgICAgcmV0dXJuIFtdCiAK
LSAgICB3aGl0ZWxpc3RlZCA9IFtGYWxzZSBmb3IgaXRlbSBpbiByYW5nZShsZW4oZXJyb3JzKSld
CisgICAgc2tpcHBlZCA9IFtGYWxzZSBmb3IgaXRlbSBpbiByYW5nZShsZW4oZXJyb3JzKSldCiAK
ICAgICBmb3IgaSwgKGVycm9yX3R5cGUsIG1zZywgcGF0aCwgbGluZSkgaW4gZW51bWVyYXRlKGVy
cm9ycyk6CiAgICAgICAgIG5vcm1wYXRoID0gb3MucGF0aC5ub3JtY2FzZShwYXRoKQotICAgICAg
ICAjIEFsbG93IHdoaXRlbGlzdGluZyBhbGwgbGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVE
IFBBVEggbGludCwKLSAgICAgICAgIyB3aGljaCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJl
Y3RseSBhbmQgc2hvdWxkbid0IGJlIGlnbm9yZWQuCisgICAgICAgICMgQWxsb3cgc2tpcHBpbmcg
YWxsIGxpbnQgZXJyb3JzIGV4Y2VwdCB0aGUgSUdOT1JFRCBQQVRIIGxpbnQsCisgICAgICAgICMg
d2hpY2ggZXhwbGFpbnMgaG93IHRvIGZpeCBpdCBjb3JyZWN0bHkgYW5kIHNob3VsZG4ndCBiZSBz
a2lwcGVkLgogICAgICAgICBpZiBlcnJvcl90eXBlIGluIGRhdGEgYW5kIGVycm9yX3R5cGUgIT0g
IklHTk9SRUQgUEFUSCI6CiAgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3JfdHlwZV0K
ICAgICAgICAgICAgIGZvciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJpdGVtcyh3
bF9maWxlcyk6CiAgICAgICAgICAgICAgICAgaWYgTm9uZSBpbiBhbGxvd2VkX2xpbmVzIG9yIGxp
bmUgaW4gYWxsb3dlZF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1h
dGNoY2FzZShub3JtcGF0aCwgZmlsZV9tYXRjaCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3
aGl0ZWxpc3RlZFtpXSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRbaV0g
PSBUcnVlCiAKLSAgICByZXR1cm4gW2l0ZW0gZm9yIGksIGl0ZW0gaW4gZW51bWVyYXRlKGVycm9y
cykgaWYgbm90IHdoaXRlbGlzdGVkW2ldXQorICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBp
biBlbnVtZXJhdGUoZXJyb3JzKSBpZiBub3Qgc2tpcHBlZFtpXV0KIAogCiByZWdleHBzID0gW2l0
ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKQEAgLTM5MCw3ICs0MzMsMTAgQEAgcmVn
ZXhwcyA9IFtpdGVtKCkgZm9yIGl0ZW0gaW4gICMgdHlwZTogaWdub3JlCiAgICAgICAgICAgICBy
dWxlcy5QcmludFJlZ2V4cCwKICAgICAgICAgICAgIHJ1bGVzLkxheW91dFRlc3RzUmVnZXhwLAog
ICAgICAgICAgICAgcnVsZXMuTWlzc2luZ0RlcHNSZWdleHAsCi0gICAgICAgICAgICBydWxlcy5T
cGVjaWFsUG93ZXJzUmVnZXhwXV0KKyAgICAgICAgICAgIHJ1bGVzLlNwZWNpYWxQb3dlcnNSZWdl
eHAsCisgICAgICAgICAgICBydWxlcy5Bc3NlcnRUaHJvd3NSZWdleHAsCisgICAgICAgICAgICBy
dWxlcy5Qcm9taXNlUmVqZWN0c1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFByZWNv
bmRpdGlvblJlZ2V4cF1dCiAKIAogZGVmIGNoZWNrX3JlZ2V4cF9saW5lKHJlcG9fcm9vdCwgcGF0
aCwgZik6CkBAIC00MjEsNiArNDY3LDcgQEAgZGVmIGNoZWNrX3BhcnNlZChyZXBvX3Jvb3QsIHBh
dGgsIGYpOgogCiAgICAgICAgIGlmIChzb3VyY2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQK
ICAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKKyAgICAg
ICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3RlbnRhdGl2ZSBhbmQKICAgICAgICAgICAg
IG5vdCBzb3VyY2VfZmlsZS5zcGVjX2xpbmtzKToKICAgICAgICAgICAgIHJldHVybiBbcnVsZXMu
TWlzc2luZ0xpbmsuZXJyb3IocGF0aCldCiAKQEAgLTU4NCw3ICs2MzEsOCBAQCBhc3RfY2hlY2tl
cnMgPSBbaXRlbSgpIGZvciBpdGVtIGluIFtPcGVuTW9kZUNoZWNrXV0KIAogZGVmIGNoZWNrX3B5
dGhvbl9hc3QocmVwb19yb290LCBwYXRoLCBmKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgSU9b
Ynl0ZXNdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQotICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIu
cHkiKToKKyAgICAjICoucXVpYy5weSBhcmUgUHl0aG9uIDMgb25seSBhbmQgY2Fubm90IGJlIHBh
cnNlZCBieSBQeXRob24gMi4KKyAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgiLnB5Iikgb3IgcGF0
aC5lbmRzd2l0aCgiLnF1aWMucHkiKToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICB0cnk6CkBA
IC02MDUsMzAgKzY1MywxMiBAQCBicm9rZW5fcHl0aG9uX21ldGFkYXRhID0gcmUuY29tcGlsZShi
ciIjXHMqTUVUQToiKQogCiBkZWYgY2hlY2tfZ2xvYmFsX21ldGFkYXRhKHZhbHVlKToKICAgICAj
IHR5cGU6IChzdHIpIC0+IEl0ZXJhYmxlW1R1cGxlW1R5cGVbcnVsZXMuUnVsZV0sIFR1cGxlW0Fu
eSwgLi4uXV1dCi0gICAgZ2xvYmFsX3ZhbHVlcyA9IHtpdGVtLnN0cmlwKCkgZm9yIGl0ZW0gaW4g
dmFsdWUuc3BsaXQoYiIsIikgaWYgaXRlbS5zdHJpcCgpfQotCi0gICAgaW5jbHVkZWRfdmFyaWFu
dHMgPSBzZXQudW5pb24oZ2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKihnZXRfYW55X3ZhcmlhbnRzKHYpIGZvciB2IGluIGdsb2Jh
bF92YWx1ZXMgaWYgbm90IHYuc3RhcnRzd2l0aChiIiEiKSkpCisgICAgZ2xvYmFsX3ZhbHVlcyA9
IHtpdGVtLnN0cmlwKCkuZGVjb2RlKCJ1dGY4IikgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIs
IikgaWYgaXRlbS5zdHJpcCgpfQogCisgICAgIyBUT0RPOiB0aGlzIGNvdWxkIGNoZWNrIGZvciBk
dXBsaWNhdGVzIGFuZCBzdWNoCiAgICAgZm9yIGdsb2JhbF92YWx1ZSBpbiBnbG9iYWxfdmFsdWVz
OgotICAgICAgICBpZiBnbG9iYWxfdmFsdWUuc3RhcnRzd2l0aChiIiEiKToKLSAgICAgICAgICAg
IGV4Y2x1ZGVkX3ZhbHVlID0gZ2xvYmFsX3ZhbHVlWzE6XQotICAgICAgICAgICAgaWYgbm90IGdl
dF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpOgotICAgICAgICAgICAgICAgIHlpZWxkIChy
dWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQotCi0gICAgICAgICAgICBlbGlmIGV4Y2x1
ZGVkX3ZhbHVlIGluIGdsb2JhbF92YWx1ZXM6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVz
LkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAoKCJDYW5ub3Qg
c3BlY2lmeSBib3RoICVzIGFuZCAlcyIgJSAoZ2xvYmFsX3ZhbHVlLCBleGNsdWRlZF92YWx1ZSkp
LCkpCi0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhjbHVkZWRfdmFyaWFu
dHMgPSBnZXRfYW55X3ZhcmlhbnRzKGV4Y2x1ZGVkX3ZhbHVlKQotICAgICAgICAgICAgICAgIGlm
IG5vdCAoZXhjbHVkZWRfdmFyaWFudHMgJiBpbmNsdWRlZF92YXJpYW50cyk6Ci0gICAgICAgICAg
ICAgICAgICAgIHlpZWxkIChydWxlcy5Ccm9rZW5HbG9iYWxNZXRhZGF0YSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgoIkNhbm5vdCBleGNsdWRlICVzIGlmIGl0IGlzIG5vdCBpbmNsdWRl
ZCIgJSAoZXhjbHVkZWRfdmFsdWUsKSksKSkKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
aWYgbm90IGdldF9hbnlfdmFyaWFudHMoZ2xvYmFsX3ZhbHVlKToKLSAgICAgICAgICAgICAgICB5
aWVsZCAocnVsZXMuVW5rbm93bkdsb2JhbE1ldGFkYXRhLCAoKSkKKyAgICAgICAgaWYgbm90IGdl
dF9hbnlfdmFyaWFudHMoZ2xvYmFsX3ZhbHVlKToKKyAgICAgICAgICAgIHlpZWxkIChydWxlcy5V
bmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQogCiAKIGRlZiBjaGVja19zY3JpcHRfbWV0YWRhdGEo
cmVwb19yb290LCBwYXRoLCBmKToKQEAgLTY1NywxMyArNjg3LDcgQEAgZGVmIGNoZWNrX3Njcmlw
dF9tZXRhZGF0YShyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICAgICAgICAgICAgIGlmIHZhbHVl
ICE9IGIibG9uZyI6CiAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuVW5r
bm93blRpbWVvdXRNZXRhZGF0YS5lcnJvcihwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9ubz1pZHgg
KyAxKSkKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidGl0bGUiOgotICAgICAgICAgICAgICAg
IHBhc3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIic2NyaXB0IjoKLSAgICAgICAgICAgICAg
ICBwYXNzCi0gICAgICAgICAgICBlbGlmIGtleSA9PSBiInZhcmlhbnQiOgotICAgICAgICAgICAg
ICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbGlmIGtleSBub3QgaW4g
KGIidGl0bGUiLCBiInNjcmlwdCIsIGIidmFyaWFudCIsIGIicXVpYyIpOgogICAgICAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQocnVsZXMuVW5rbm93bk1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZV9ubz1pZHggKyAxKSkKICAgICAgICAgZWxzZToKQEAgLTgyNSw3ICs4NDksNyBAQCBkZWYgbGlu
dF9wYXRocyhrd2FyZ3MsIHdwdF9yb290KToKICAgICAgICAgZm9yY2VfYWxsID0gRmFsc2UKICAg
ICAgICAgZm9yIHBhdGggaW4gY2hhbmdlZF9wYXRoczoKICAgICAgICAgICAgIHBhdGggPSBwYXRo
LnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikKLSAgICAgICAgICAgIGlmIHBhdGggPT0gImxpbnQu
d2hpdGVsaXN0IiBvciBwYXRoLnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6CisgICAgICAgICAg
ICBpZiBwYXRoID09ICJsaW50Lmlnbm9yZSIgb3IgcGF0aC5zdGFydHN3aXRoKCJ0b29scy9saW50
LyIpOgogICAgICAgICAgICAgICAgIGZvcmNlX2FsbCA9IFRydWUKICAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICBwYXRocyA9IChsaXN0KGNoYW5nZWRfcGF0aHMpIGlmIG5vdCBmb3JjZV9h
bGwgICMgdHlwZTogaWdub3JlCkBAIC04NDMsNyArODY3LDcgQEAgZGVmIGNyZWF0ZV9wYXJzZXIo
KToKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1dCBtYWNoaW5lLXJlYWRhYmxl
IEpTT04gZm9ybWF0IikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1hcmtkb3duIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1dCBt
YXJrZG93biIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1yZXBvLXJvb3QiLCBoZWxwPSJU
aGUgV1BUIGRpcmVjdG9yeS4gVXNlIHRoaXMiCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1y
ZXBvLXJvb3QiLCBoZWxwPSJUaGUgV1BUIGRpcmVjdG9yeS4gVXNlIHRoaXMgIgogICAgICAgICAg
ICAgICAgICAgICAgICAgIm9wdGlvbiBpZiB0aGUgbGludCBzY3JpcHQgZXhpc3RzIG91dHNpZGUg
dGhlIHJlcG9zaXRvcnkiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taWdub3JlLWdsb2Ii
LCBoZWxwPSJBZGRpdGlvbmFsIGZpbGUgZ2xvYiB0byBpZ25vcmUuIikKICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IklmIG5vIHBhdGhz
IGFyZSBwYXNzZWQsIHRyeSB0byBsaW50IHRoZSB3aG9sZSAiCkBAIC04NzksMTEgKzkwMywxMSBA
QCBkZWYgbGludChyZXBvX3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1z
dHIoKSk6CiAgICAgZXJyb3JfY291bnQgPSBkZWZhdWx0ZGljdChpbnQpICAjIHR5cGU6IERpY3Rb
VGV4dCwgaW50XQogICAgIGxhc3QgPSBOb25lCiAKLSAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2lu
KHJlcG9fcm9vdCwgImxpbnQud2hpdGVsaXN0IikpIGFzIGY6Ci0gICAgICAgIHdoaXRlbGlzdCwg
aWdub3JlZF9maWxlcyA9IHBhcnNlX3doaXRlbGlzdChmKQorICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4ocmVwb19yb290LCAibGludC5pZ25vcmUiKSkgYXMgZjoKKyAgICAgICAgaWdub3JlbGlz
dCwgc2tpcHBlZF9maWxlcyA9IHBhcnNlX2lnbm9yZWxpc3QoZikKIAogICAgIGlmIGlnbm9yZV9n
bG9iOgotICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKKyAgICAgICAgc2tp
cHBlZF9maWxlcy5hZGQoaWdub3JlX2dsb2IpCiAKICAgICBvdXRwdXRfZXJyb3JzID0geyJqc29u
Ijogb3V0cHV0X2Vycm9yc19qc29uLAogICAgICAgICAgICAgICAgICAgICAgIm1hcmtkb3duIjog
b3V0cHV0X2Vycm9yc19tYXJrZG93biwKQEAgLTg5OSw3ICs5MjMsNyBAQCBkZWYgbGludChyZXBv
X3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAgICAgICAg
ICAgICAgICAgICBhIHR1cGxlIG9mIHRoZSBlcnJvciB0eXBlIGFuZCB0aGUgcGF0aCBvdGhlcndp
c2UKICAgICAgICAgIiIiCiAKLSAgICAgICAgZXJyb3JzID0gZmlsdGVyX3doaXRlbGlzdF9lcnJv
cnMod2hpdGVsaXN0LCBlcnJvcnMpCisgICAgICAgIGVycm9ycyA9IGZpbHRlcl9pZ25vcmVsaXN0
X2Vycm9ycyhpZ25vcmVsaXN0LCBlcnJvcnMpCiAKICAgICAgICAgaWYgbm90IGVycm9yczoKICAg
ICAgICAgICAgIHJldHVybiBOb25lCkBAIC05MTYsNyArOTQwLDcgQEAgZGVmIGxpbnQocmVwb19y
b290LCBwYXRocywgb3V0cHV0X2Zvcm1hdCwgaWdub3JlX2dsb2I9c3RyKCkpOgogICAgICAgICAg
ICAgcGF0aHMucmVtb3ZlKHBhdGgpCiAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGlm
IGFueShmbm1hdGNoLmZubWF0Y2gocGF0aCwgZmlsZV9tYXRjaCkgZm9yIGZpbGVfbWF0Y2ggaW4g
aWdub3JlZF9maWxlcyk6CisgICAgICAgIGlmIGFueShmbm1hdGNoLmZubWF0Y2gocGF0aCwgZmls
ZV9tYXRjaCkgZm9yIGZpbGVfbWF0Y2ggaW4gc2tpcHBlZF9maWxlcyk6CiAgICAgICAgICAgICBw
YXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTk0Miw3ICs5NjYs
NyBAQCBkZWYgbGludChyZXBvX3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xv
Yj1zdHIoKSk6CiAKIHBhdGhfbGludHMgPSBbY2hlY2tfZmlsZV90eXBlLCBjaGVja19wYXRoX2xl
bmd0aCwgY2hlY2tfd29ya2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5LAogICAgICAgICAg
ICAgICBjaGVja19naXRpZ25vcmVfZmlsZV0KLWFsbF9wYXRoc19saW50cyA9IFtjaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlXQorYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWUsIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZXNdCiBmaWxlX2xpbnRzID0g
W2NoZWNrX3JlZ2V4cF9saW5lLCBjaGVja19wYXJzZWQsIGNoZWNrX3B5dGhvbl9hc3QsIGNoZWNr
X3NjcmlwdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAgY2hlY2tfYWhlbV9zeXN0ZW1fZm9udF0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3J1bGVzLnB5CmluZGV4IGZhYTI4NWZkN2NkYmNjNDA2Zjhj
MDJhYjAzZWQ2YmViMzZlYjBiZWYuLjY5NWY2Y2Q0ZTUzMjhjYWYyZjA4NWExMTVkMzFhOWMwYjRh
ZTI3MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKQEAgLTMyMiw2ICszMjIsMTUg
QEAgY2xhc3MgVGVzdGhhcm5lc3NJbk90aGVyVHlwZShSdWxlKToKICAgICBkZXNjcmlwdGlvbiA9
ICJ0ZXN0aGFybmVzcy5qcyBpbmNsdWRlZCBpbiBhICVzIHRlc3QiCiAKIAorY2xhc3MgRHVwbGlj
YXRlQmFzZW5hbWVQYXRoKFJ1bGUpOgorICAgIG5hbWUgPSAiRFVQTElDQVRFLUJBU0VOQU1FLVBB
VEgiCisgICAgZGVzY3JpcHRpb24gPSBjb2xsYXBzZSgiIiIKKyAgICAgICAgICAgIEZpbGUgaGFz
IGlkZW50aWNhbCBiYXNlbmFtZSBwYXRoIChwYXRoIGV4Y2x1ZGluZyBleHRlbnNpb24pIGFzCisg
ICAgICAgICAgICBvdGhlciBmaWxlKHMpIChmb3VuZCBleHRlbnNpb25zOiAlcykKKyAgICAiIiIp
CisgICAgdG9fZml4ID0gInJlbmFtZSBmaWxlcyBzbyB0aGV5IGhhdmUgdW5pcXVlIGJhc2VuYW1l
IHBhdGhzIgorCisKIGNsYXNzIFJlZ2V4cChzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEp
KToKICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICBkZWYgcGF0dGVybihzZWxmKToKQEAg
LTQ2MiwzICs0NzEsMjcgQEAgY2xhc3MgVHJhaWxpbmdXaGl0ZXNwYWNlUmVnZXhwKFJlZ2V4cCk6
CiAgICAgZGVzY3JpcHRpb24gPSAiV2hpdGVzcGFjZSBhdCBFT0wiCiAgICAgcGF0dGVybiA9IGIi
WyBcdFxmXHZdJCIKICAgICB0b19maXggPSAiIiJSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSBm
cm9tIGFsbCBsaW5lcyBpbiB0aGUgZmlsZS4iIiIKKworCitjbGFzcyBBc3NlcnRUaHJvd3NSZWdl
eHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYnIiW14uXWFzc2VydF90aHJvd3NcKCIKKyAgICBu
YW1lID0gIkFTU0VSVF9USFJPV1MiCisgICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIu
aHRtIiwgIi5qcyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9
ICJUZXN0LWZpbGUgbGluZSBoYXMgYW4gYGFzc2VydF90aHJvd3MoLi4uKWAgY2FsbCIKKyAgICB0
b19maXggPSAiIiJSZXBsYWNlIHdpdGggYGFzc2VydF90aHJvd3NfZG9tYCBvciBgYXNzZXJ0X3Ro
cm93c19qc2Agb3IgYGFzc2VydF90aHJvd3NfZXhhY3RseWAiIiIKKworCitjbGFzcyBQcm9taXNl
UmVqZWN0c1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJwcm9taXNlX3JlamVjdHNc
KCIKKyAgICBuYW1lID0gIlBST01JU0VfUkVKRUNUUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBb
Ii5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRl
c2NyaXB0aW9uID0gIlRlc3QtZmlsZSBsaW5lIGhhcyBhIGBwcm9taXNlX3JlamVjdHMoLi4uKWAg
Y2FsbCIKKyAgICB0b19maXggPSAiIiJSZXBsYWNlIHdpdGggcHJvbWlzZV9yZWplY3RzX2RvbSBv
ciBwcm9taXNlX3JlamVjdHNfanMgb3IgYHByb21pc2VfcmVqZWN0c19leGFjdGx5YCIiIgorCisK
K2NsYXNzIEFzc2VydFByZWNvbmRpdGlvblJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBi
ciJbXi5dYXNzZXJ0X3ByZWNvbmRpdGlvblwoIgorICAgIG5hbWUgPSAiQVNTRVJULVBSRUNPTkRJ
VElPTiIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54
aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlRlc3QtZmlsZSBsaW5l
IGhhcyBhbiBgYXNzZXJ0X3ByZWNvbmRpdGlvbiguLi4pYCBjYWxsIgorICAgIHRvX2ZpeCA9ICIi
IlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X2ltcGxlbWVudHNgIG9yIGBhc3NlcnRfaW1wbGVtZW50c19v
cHRpb25hbGAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50Lmlnbm9yZSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9saW50Lmlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzYzZTQ0MzJlNWFmYTIxMjMwMzUzNDVlMTMwZDAx
ODcxMGZmZGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlCkBAIC0w
LDAgKzEgQEAKKyo6YnJva2VuX2lnbm9yZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xp
bnQud2hpdGVsaXN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhNzYzZTQ0MzJlNWFmYTIxMjMwMzUzNDVlMTMwZDAxODcxMGZmZGQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9s
aW50LndoaXRlbGlzdAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSo6YnJva2VuX2lnbm9y
ZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MTI1OTNiMDQ1ZWY0NzVlMGFmNWU1
ODUzZGU4ZmY1OGJjZDcyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGly
MS9hLmh0bWwKQEAgLTAsMCArMSw0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVz
dHMvZGlyMS9hLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4NTVkYWI2YTc3Y2IyODEwM2NjMTU4ZmYwZjljY2Rl
OTZiNTI1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmpzCkBA
IC0wLDAgKzEsNiBAQAorLy8gVGhpcyBpcyBhIGR1bW15IEphdmFTY3JpcHQgZmlsZSwgbWVhbnQg
dG8gaW5kaWNhdGUgYSAnc3VwcG9ydCcgZmlsZSBvZgorLy8gc29ydHMgdGhhdCBtYXkgYmUgaW5j
bHVkZWQgYnkgc29tZSB0ZXN0LgorCitmdW5jdGlvbiBoZWxsb1dvcmxkKCkgeworICByZXR1cm4g
J0hlbGxvLCB3b3JsZCEnOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhiNGNjMmU1
MjIzYTg2MjU1ZWZiNTMxYTRkNWE0NDMwZjk1MWIxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS90ZXN0cy9kaXIxL2EueGh0bWwKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYi5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3Rlc3RzL2RpcjEvYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MTI1OTNiMDQ1ZWY0NzVl
MGFmNWU1ODUzZGU4ZmY1OGJjZDcyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVz
dHMvZGlyMS9iLmh0bWwKQEAgLTAsMCArMSw0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIyOTkx
ZDliZTZjY2Y0MTg4MDEwMDA2YTZlNmQ4MzY5OGQyOGU3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjAgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2Eu
anMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEv
Yi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9hLnhodG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjIvYS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGI0Y2MyZTUyMjNhODYyNTVlZmI1
MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2Rp
cjIvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjZDY2OWU2NTNiZmMy
MzdiNjM3OGYzYWU5ZWU2Njc1MGM1NTBiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMi9hLnhodG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKaW5kZXggNDYwNTZlNjcxM2ZkMzEzZGZl
MjRiMWI4ODJjMjgzODljYmVjZmM5Yy4uZjM0ZDE2NzMwZjcwMDRmNzRkMjM0YzljY2FkYjJjMGVj
ZWQyYjUwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS93M2MtaW1wb3J0LmxvZwpAQCAtMTgsNSArMTgsNSBAQCBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9icm9rZW4uaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2RlcGVuZGVuY3kuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9saW50Lmlnbm9yZQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9va2F5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90
ZXN0X2ZpbGVfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5CmluZGV4IDA4YzA5YjZi
MDk1MGIyY2Y1NDhjM2I1ZTQxNTMwMzU5N2RkOGM2NTQuLjdkYWNmYWQ2MzgwZGM4YjY2OGEyMmRj
N2M0ZmUyZTc0ZDM3NTQ2OWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQpAQCAtNjMzLDYgKzYzMyw4IEBAIGRlZiB0ZXN0X2xh
dGVfdGltZW91dCgpOgogICAgICAgICAgICAgXQogCiAKKyMgTm90ZTogVGhpcyB0ZXN0IGNoZWNr
cyB0aGUgcHJpbnQgKnN0YXRlbWVudCogKHdoaWNoIGRvZXNuJ3QgZXhpc3QgaW4gcHl0aG9uIDMp
LgorIyAgICAgICBUaGUgcHJpbnQgKmZ1bmN0aW9uKiBpcyBjaGVja2VkIGluIHRlc3RfcHJpbnRf
ZnVuY3Rpb24gYmVsb3cuCiBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHNpeC5QWTMsIHJlYXNvbj0iQ2Fu
bm90IHBhcnNlIHByaW50IHN0YXRlbWVudHMgZnJvbSBweXRob24gMyIpCiBkZWYgdGVzdF9wcmlu
dF9zdGF0ZW1lbnQoKToKICAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiZGVmIGZv
bygpOlxuICBwcmludCAnc3RhdGVtZW50J1xuICBwcmludFxuIikKQEAgLTc5NCw2ICs3OTYsMjAg
QEAgZGVmIHRlc3RfY3NzX21pc3NpbmdfZmlsZV9tYW51YWwoKToKICAgICBdCiAKIAorZGVmIHRl
c3RfY3NzX21pc3NpbmdfZmlsZV90ZW50YXRpdmUoKToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorCisgICAgIyBU
aGUgdGVudGF0aXZlIGZsYWcgY292ZXJzIHRlc3RzIHRoYXQgbWFrZSBhc3NlcnRpb25zICdub3Qg
eWV0IHJlcXVpcmVkIGJ5CisgICAgIyBhbnkgc3BlY2lmaWNhdGlvbicsIHNvIHRoZXkgbmVlZCBu
b3QgaGF2ZSBhIHNwZWNpZmljYXRpb24gbGluay4KKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2Nv
bnRlbnRzKCIiLCAiY3NzL2Zvby9iYXIudGVudGF0aXZlLmh0bWwiLCBzaXguQnl0ZXNJTyhjb2Rl
KSkKKyAgICBhc3NlcnQgbm90IGVycm9ycworCisKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
ZmlsZW5hbWUiLCBbCiAgICAgImZvby53b3JrZXIuanMiLAogICAgICJmb28uYW55LmpzIiwKQEAg
LTg0MiwxNyArODU4LDE3IEBAIGRlZiB0ZXN0X3NjcmlwdF9tZXRhZGF0YShmaWxlbmFtZSwgaW5w
dXQsIGVycm9yKToKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJnbG9iYWxzLGVycm9yIiwg
WwogICAgIChiIiIsIE5vbmUpLAotICAgIChiImRlZmF1bHQiLCBOb25lKSwKLSAgICAoYiIhZGVm
YXVsdCIsIE5vbmUpLAorICAgIChiImRlZmF1bHQiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEi
KSwKKyAgICAoYiIhZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAgIChi
IndpbmRvdyIsIE5vbmUpLAotICAgIChiIiF3aW5kb3ciLCBOb25lKSwKLSAgICAoYiIhZGVkaWNh
dGVkd29ya2VyIiwgTm9uZSksCi0gICAgKGIid2luZG93LCAhd2luZG93IiwgIkJST0tFTi1HTE9C
QUwtTUVUQURBVEEiKSwKLSAgICAoYiIhc2VydmljZXdvcmtlciIsICJCUk9LRU4tR0xPQkFMLU1F
VEFEQVRBIiksCi0gICAgKGIic2VydmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiQlJPS0VO
LUdMT0JBTC1NRVRBREFUQSIpLAotICAgIChiIndvcmtlciwgIWRlZGljYXRlZHdvcmtlciIsIE5v
bmUpLAotICAgIChiIndvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCBOb25lKSwKLSAgICAoYiIhd29y
a2VyIiwgTm9uZSksCisgICAgKGIiIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIp
LAorICAgIChiIiFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwK
KyAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKKyAg
ICAoYiIhc2VydmljZXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChi
InNlcnZpY2V3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRB
IiksCisgICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsICJVTktOT1dOLUdMT0JB
TC1NRVRBREFUQSIpLAorICAgIChiIiF3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEi
KSwKICAgICAoYiJmb28iLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKICAgICAoYiIhZm9v
IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiBdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
bGludC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKaW5kZXggYWYyYjdkM2Q0YWExOWYwYzFkNzJhNTU3
NWI1MDEzYzc4OTdlMWRjNC4uMTBkOTcyOGI0MDU3NTFiZGIyOGRiNWUwMTkzMTYyZWM3ZjZkZjQ4
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CkBA
IC04LDcgKzgsNyBAQCBpbXBvcnQgc2l4CiAKIGZyb20gLi4ubG9jYWxwYXRocyBpbXBvcnQgcmVw
b19yb290CiBmcm9tIC4uIGltcG9ydCBsaW50IGFzIGxpbnRfbW9kCi1mcm9tIC4ubGludCBpbXBv
cnQgZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMsIHBhcnNlX3doaXRlbGlzdCwgbGludCwgY3JlYXRl
X3BhcnNlcgorZnJvbSAuLmxpbnQgaW1wb3J0IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycywgcGFy
c2VfaWdub3JlbGlzdCwgbGludCwgY3JlYXRlX3BhcnNlcgogCiBfZHVtbXlfcmVwbyA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiZHVtbXkiKQogCkBAIC0xNyw4ICsx
Nyw4IEBAIGRlZiBfbW9ja19saW50KG5hbWUsICoqa3dhcmdzKToKICAgICByZXR1cm4gbW9jay5w
YXRjaChsaW50X21vZC5fX25hbWVfXyArICIuIiArIG5hbWUsIHdyYXBzPXdyYXBwZWQsICoqa3dh
cmdzKQogCiAKLWRlZiB0ZXN0X2ZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKCk6Ci0gICAgd2hpdGVs
aXN0ID0geworZGVmIHRlc3RfZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKCk6CisgICAgaWdub3Jl
bGlzdCA9IHsKICAgICAgICAgJ0NPTlNPTEUnOiB7CiAgICAgICAgICAgICAnc3ZnLyonOiB7MTJ9
CiAgICAgICAgIH0sCkBAIC0yNiwzNCArMjYsMzQgQEAgZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlz
dF9lcnJvcnMoKToKICAgICAgICAgICAgICdzdmcvKic6IHtOb25lfQogICAgICAgICB9CiAgICAg
fQotICAgICMgcGFyc2Vfd2hpdGVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUg
bWF0Y2ggc3RyaW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKLSAgICB3aGl0ZWxpc3QgPSB7ZTog
e29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5pdGVtcygpfQotICAgICAgICAg
ICAgICAgICBmb3IgZSwgcCBpbiB3aGl0ZWxpc3QuaXRlbXMoKX0KLSAgICAjIHBhdGhzIHBhc3Nl
ZCBpbnRvIGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQorICAg
ICMgcGFyc2VfaWdub3JlbGlzdCBub3JtYWxpc2VzIHRoZSBjYXNlL3BhdGggb2YgdGhlIG1hdGNo
IHN0cmluZyBzbyBuZWVkIHRvIGRvIHRoZSBzYW1lCisgICAgaWdub3JlbGlzdCA9IHtlOiB7b3Mu
cGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9CisgICAgICAgICAgICAg
ICAgIGZvciBlLCBwIGluIGlnbm9yZWxpc3QuaXRlbXMoKX0KKyAgICAjIHBhdGhzIHBhc3NlZCBp
bnRvIGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyBhcmUgYWx3YXlzIFVuaXggc3R5bGUKICAgICBm
aWx0ZXJlZGZpbGUgPSAnc3ZnL3Rlc3QuaHRtbCcKICAgICB1bmZpbHRlcmVkZmlsZSA9ICdodG1s
L3Rlc3QuaHRtbCcKICAgICAjIFRlc3RzIGZvciBwYXNzaW5nIG5vIGVycm9ycwotICAgIGZpbHRl
cmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbXSkKKyAgICBmaWx0ZXJl
ZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbXSkKICAgICBhc3NlcnQg
ZmlsdGVyZWQgPT0gW10KLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdo
aXRlbGlzdCwgW10pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdu
b3JlbGlzdCwgW10pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCiAgICAgIyBUZXN0cyBmb3Ig
ZmlsdGVyaW5nIG9uIGZpbGUgYW5kIGxpbmUgbnVtYmVyCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywgZmlsdGVyZWRmaWxl
LCAxMl1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxp
c3QsIFtbJ0NPTlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMl1dKQogICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVs
aXN0LCBbWydDT05TT0xFJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMl1dKQorICAgIGZpbHRlcmVk
ID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywg
dW5maWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtbJ0NPTlNPTEUn
LCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0KLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxp
c3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0p
CisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1sn
Q09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09
IFtbJ0NPTlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dCiAgICAgIyBUZXN0cyBmb3IgZmls
dGVyaW5nIG9uIGp1c3QgZmlsZQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJv
cnMod2hpdGVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCisg
ICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snSU5E
RU5UIFRBQlMnLCAnJywgZmlsdGVyZWRmaWxlLCAxMl1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9
PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBb
WydJTkRFTlQgVEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0pCisgICAgZmlsdGVyZWQgPSBm
aWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAnJywg
ZmlsdGVyZWRmaWxlLCAxMV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbXQotICAgIGZpbHRl
cmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbWydJTkRFTlQgVEFCUycs
ICcnLCB1bmZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVs
aXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRlcmVkZmls
ZSwgMTFdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snSU5ERU5UIFRBQlMnLCAnJywgdW5m
aWx0ZXJlZGZpbGUsIDExXV0KIAogCi1kZWYgdGVzdF9wYXJzZV93aGl0ZWxpc3QoKToKK2RlZiB0
ZXN0X3BhcnNlX2lnbm9yZWxpc3QoKToKICAgICBpbnB1dF9idWZmZXIgPSBzaXguU3RyaW5nSU8o
IiIiCiAjIENvbW1lbnQKIENSIEFUIEVPTDogc3ZnL2ltcG9ydC8qCkBAIC0xMDAsMTAgKzEwMCwx
MCBAQCBDUiBBVCBFT0wsIElOREVOVCBUQUJTOiBodG1sL3Rlc3QyLmpzOiA0MgogICAgIH0KICAg
ICBleHBlY3RlZF9kYXRhID0ge2U6IHtvcy5wYXRoLm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGlu
IHAuaXRlbXMoKX0KICAgICAgICAgICAgICAgICAgICAgIGZvciBlLCBwIGluIGV4cGVjdGVkX2Rh
dGEuaXRlbXMoKX0KLSAgICBleHBlY3RlZF9pZ25vcmVkID0ge29zLnBhdGgubm9ybWNhc2UoeCkg
Zm9yIHggaW4geyIqLnBkZiIsICJyZXNvdXJjZXMvKiIsICIqLnBuZyJ9fQotICAgIGRhdGEsIGln
bm9yZWQgPSBwYXJzZV93aGl0ZWxpc3QoaW5wdXRfYnVmZmVyKQorICAgIGV4cGVjdGVkX3NraXBw
ZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3IgeCBpbiB7IioucGRmIiwgInJlc291cmNlcy8q
IiwgIioucG5nIn19CisgICAgZGF0YSwgc2tpcHBlZF9maWxlcyA9IHBhcnNlX2lnbm9yZWxpc3Qo
aW5wdXRfYnVmZmVyKQogICAgIGFzc2VydCBkYXRhID09IGV4cGVjdGVkX2RhdGEKLSAgICBhc3Nl
cnQgaWdub3JlZCA9PSBleHBlY3RlZF9pZ25vcmVkCisgICAgYXNzZXJ0IHNraXBwZWRfZmlsZXMg
PT0gZXhwZWN0ZWRfc2tpcHBlZAogCiAKIGRlZiB0ZXN0X2xpbnRfbm9fZmlsZXMoY2FwbG9nKToK
QEAgLTM5OCw2ICszOTgsNjUgQEAgZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9p
Z25vcmVkX2RpcihjYXBsb2cpOgogICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgogCiAKK2Rl
ZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9zYW1lX2Jhc2VuYW1lKGNh
cGxvZyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0ZXN0aGFybmVzcyBmaWxlcyB3
aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0
cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2EuaHRtbCcpKQor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EueGh0bWwnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0
aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9k
aXIxL2EueGh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICAjIFRoZXJlIHdpbGwgYmUgb25l
IGZhaWx1cmUgZm9yIGVhY2ggZmlsZS4KKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAyCisgICAg
ICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisg
ICAgYXNzZXJ0ICJEVVBMSUNBVEUtQkFTRU5BTUUtUEFUSCIgaW4gY2FwbG9nLnRleHQKKworCitk
ZWYgdGVzdF9jaGVja191bmlxdWVfdGVzdGhhcm5lc3NfYmFzZW5hbWVfZGlmZmVyZW50X25hbWUo
Y2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHR3byB0ZXN0aGFybmVzcyBm
aWxlcyBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2l0aAorICAgICMgZGlmZmVyZW50IG5hbWVzLgor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2IuaHRtbCcpKQorCisgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAg
IHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19m
aWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3Rz
L2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEvYi5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAg
ICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5j
YWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250
ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitk
ZWYgdGVzdF9jaGVja191bmlxdWVfdGVzdGhhcm5lc3NfYmFzZW5hbWVfZGlmZmVyZW50X2Rpcihj
YXBsb2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3RoYXJuZXNzIGZp
bGVzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcworICAgICMgd2l0aCB0aGUgc2FtZSBiYXNlbmFt
ZS4KKyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKF9kdW1teV9yZXBvLCAn
dGVzdHMnLCAnZGlyMScsICdhLmh0bWwnKSkKKyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3Mu
cGF0aC5qb2luKF9kdW1teV9yZXBvLCAndGVzdHMnLCAnZGlyMicsICdhLnhodG1sJykpCisKKyAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAg
ICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2No
ZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsi
dGVzdHMvZGlyMS9hLmh0bWwiLCAidGVzdHMvZGlyMi9hLnhodG1sIl0sICJub3JtYWwiKQorICAg
ICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tf
cGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIK
KworCitkZWYgdGVzdF9jaGVja191bmlxdWVfdGVzdGhhcm5lc3NfYmFzZW5hbWVfbm90X3Rlc3Ro
YXJuZXNzKGNhcGxvZyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSBub24tdGVzdGhh
cm5lc3MgZmlsZXMgd2l0aCBjb25mbGljdGluZyBiYXNlbmFtZSBwYXRocy4KKyAgICBhc3NlcnQg
b3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKF9kdW1teV9yZXBvLCAndGVzdHMnLCAnZGlyMScs
ICdhLmh0bWwnKSkKKyAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKF9kdW1t
eV9yZXBvLCAndGVzdHMnLCAnZGlyMScsICdhLmpzJykpCisKKyAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6
CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVzdHMvZGlyMS9hLmh0bWwi
LCAidGVzdHMvZGlyMS9hLmpzIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09
IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIK
KyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50
ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCiBkZWYgdGVzdF9pZ25vcmVf
Z2xvYihjYXBsb2cpOgogICAgICMgTGludCB0d28gZmlsZXMgaW4gdGhlIHJlZi8gZGlyZWN0b3J5
LCBhbmQgcGFzcyBpbiBpZ25vcmVfZ2xvYiB0byBvbWl0IG9uZQogICAgICMgb2YgdGhlbS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbG9jYWxwYXRocy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbG9jYWxwYXRocy5weQppbmRleCBmNmUyNGI0ODZkNThiNzg4Yjk0NDExNzVj
NWUxYzg5ZjkzODc0ZmViLi5jZTNiNDFlMzAwYzlmMTEzODBlYTA2NWY1YjI4OGQ1YWVmODEyNTg4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xvY2FscGF0aHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CkBAIC02LDcgKzYsNyBAQCByZXBvX3Jv
b3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpcikpCiAKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSkpCiBzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5qb2luKGhlcmUsICJ3cHRzZXJ2ZSIpKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBh
dGguam9pbihoZXJlLCAicHl3ZWJzb2NrZXQiKSkKK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRo
LmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgInB5d2Vic29ja2V0MyIpKQogc3lzLnBhdGguaW5z
ZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRfcGFydHkiLCAiYXRvbWljd3JpdGVzIikp
CiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJh
dHRycyIsICJzcmMiKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRo
aXJkX3BhcnR5IiwgImZ1bmNzaWdzIikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRk
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9jYXRhbG9nL3hodG1sLmR0ZAppbmRleCA0MzA3YjFjMmM0MzMyYjI5NDk5OWE1ZmEzMTNh
NmEyOGVlYzU3ZmY2Li44MDQyMzQ4MGJjNTk3NTQyNjkxMDEwYTUwY2EyYzE2Zjk0NWE3MDg0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQK
QEAgLTEsMjEyNSArMSwyMTI1IEBACi08IUVOVElUWSBUYWIgIiYjeDk7Ij4KLTwhRU5USVRZIE5l
d0xpbmUgIiYjeEE7Ij4KLTwhRU5USVRZIGV4Y2wgIiYjeDIxOyI+Ci08IUVOVElUWSBxdW90ICIm
I3gyMjsiPgotPCFFTlRJVFkgUVVPVCAiJiN4MjI7Ij4KLTwhRU5USVRZIG51bSAiJiN4MjM7Ij4K
LTwhRU5USVRZIGRvbGxhciAiJiN4MjQ7Ij4KLTwhRU5USVRZIHBlcmNudCAiJiN4MjU7Ij4KLTwh
RU5USVRZIGFtcCAiJiN4MjY7I3gyNjsiPgotPCFFTlRJVFkgQU1QICImI3gyNjsjeDI2OyI+Ci08
IUVOVElUWSBhcG9zICImI3gyNzsiPgotPCFFTlRJVFkgbHBhciAiJiN4Mjg7Ij4KLTwhRU5USVRZ
IHJwYXIgIiYjeDI5OyI+Ci08IUVOVElUWSBhc3QgIiYjeDJBOyI+Ci08IUVOVElUWSBtaWRhc3Qg
IiYjeDJBOyI+Ci08IUVOVElUWSBwbHVzICImI3gyQjsiPgotPCFFTlRJVFkgY29tbWEgIiYjeDJD
OyI+Ci08IUVOVElUWSBwZXJpb2QgIiYjeDJFOyI+Ci08IUVOVElUWSBzb2wgIiYjeDJGOyI+Ci08
IUVOVElUWSBjb2xvbiAiJiN4M0E7Ij4KLTwhRU5USVRZIHNlbWkgIiYjeDNCOyI+Ci08IUVOVElU
WSBsdCAiJiN4MjY7I3gzQzsiPgotPCFFTlRJVFkgTFQgIiYjeDI2OyN4M0M7Ij4KLTwhRU5USVRZ
IG52bHQgIiYjeDI2OyN4M0M7JiN4MjBEMjsiPgotPCFFTlRJVFkgZXF1YWxzICImI3gzRDsiPgot
PCFFTlRJVFkgYm5lICImI3gzRDsmI3gyMEU1OyI+Ci08IUVOVElUWSBndCAiJiN4M0U7Ij4KLTwh
RU5USVRZIEdUICImI3gzRTsiPgotPCFFTlRJVFkgbnZndCAiJiN4M0U7JiN4MjBEMjsiPgotPCFF
TlRJVFkgcXVlc3QgIiYjeDNGOyI+Ci08IUVOVElUWSBjb21tYXQgIiYjeDQwOyI+Ci08IUVOVElU
WSBsc3FiICImI3g1QjsiPgotPCFFTlRJVFkgbGJyYWNrICImI3g1QjsiPgotPCFFTlRJVFkgYnNv
bCAiJiN4NUM7Ij4KLTwhRU5USVRZIHJzcWIgIiYjeDVEOyI+Ci08IUVOVElUWSByYnJhY2sgIiYj
eDVEOyI+Ci08IUVOVElUWSBIYXQgIiYjeDVFOyI+Ci08IUVOVElUWSBsb3diYXIgIiYjeDVGOyI+
Ci08IUVOVElUWSBVbmRlckJhciAiJiN4NUY7Ij4KLTwhRU5USVRZIGdyYXZlICImI3g2MDsiPgot
PCFFTlRJVFkgRGlhY3JpdGljYWxHcmF2ZSAiJiN4NjA7Ij4KLTwhRU5USVRZIGZqbGlnICImI3g2
NjsmI3g2QTsiPgotPCFFTlRJVFkgbGN1YiAiJiN4N0I7Ij4KLTwhRU5USVRZIGxicmFjZSAiJiN4
N0I7Ij4KLTwhRU5USVRZIHZlcmJhciAiJiN4N0M7Ij4KLTwhRU5USVRZIHZlcnQgIiYjeDdDOyI+
Ci08IUVOVElUWSBWZXJ0aWNhbExpbmUgIiYjeDdDOyI+Ci08IUVOVElUWSByY3ViICImI3g3RDsi
PgotPCFFTlRJVFkgcmJyYWNlICImI3g3RDsiPgotPCFFTlRJVFkgbmJzcCAiJiN4QTA7Ij4KLTwh
RU5USVRZIE5vbkJyZWFraW5nU3BhY2UgIiYjeEEwOyI+Ci08IUVOVElUWSBpZXhjbCAiJiN4QTE7
Ij4KLTwhRU5USVRZIGNlbnQgIiYjeEEyOyI+Ci08IUVOVElUWSBwb3VuZCAiJiN4QTM7Ij4KLTwh
RU5USVRZIGN1cnJlbiAiJiN4QTQ7Ij4KLTwhRU5USVRZIHllbiAiJiN4QTU7Ij4KLTwhRU5USVRZ
IGJydmJhciAiJiN4QTY7Ij4KLTwhRU5USVRZIHNlY3QgIiYjeEE3OyI+Ci08IUVOVElUWSBEb3Qg
IiYjeEE4OyI+Ci08IUVOVElUWSBkaWUgIiYjeEE4OyI+Ci08IUVOVElUWSBEb3VibGVEb3QgIiYj
eEE4OyI+Ci08IUVOVElUWSB1bWwgIiYjeEE4OyI+Ci08IUVOVElUWSBjb3B5ICImI3hBOTsiPgot
PCFFTlRJVFkgQ09QWSAiJiN4QTk7Ij4KLTwhRU5USVRZIG9yZGYgIiYjeEFBOyI+Ci08IUVOVElU
WSBsYXF1byAiJiN4QUI7Ij4KLTwhRU5USVRZIG5vdCAiJiN4QUM7Ij4KLTwhRU5USVRZIHNoeSAi
JiN4QUQ7Ij4KLTwhRU5USVRZIHJlZyAiJiN4QUU7Ij4KLTwhRU5USVRZIGNpcmNsZWRSICImI3hB
RTsiPgotPCFFTlRJVFkgUkVHICImI3hBRTsiPgotPCFFTlRJVFkgbWFjciAiJiN4QUY7Ij4KLTwh
RU5USVRZIHN0cm5zICImI3hBRjsiPgotPCFFTlRJVFkgZGVnICImI3hCMDsiPgotPCFFTlRJVFkg
cGx1c21uICImI3hCMTsiPgotPCFFTlRJVFkgcG0gIiYjeEIxOyI+Ci08IUVOVElUWSBQbHVzTWlu
dXMgIiYjeEIxOyI+Ci08IUVOVElUWSBzdXAyICImI3hCMjsiPgotPCFFTlRJVFkgc3VwMyAiJiN4
QjM7Ij4KLTwhRU5USVRZIGFjdXRlICImI3hCNDsiPgotPCFFTlRJVFkgRGlhY3JpdGljYWxBY3V0
ZSAiJiN4QjQ7Ij4KLTwhRU5USVRZIG1pY3JvICImI3hCNTsiPgotPCFFTlRJVFkgcGFyYSAiJiN4
QjY7Ij4KLTwhRU5USVRZIG1pZGRvdCAiJiN4Qjc7Ij4KLTwhRU5USVRZIGNlbnRlcmRvdCAiJiN4
Qjc7Ij4KLTwhRU5USVRZIENlbnRlckRvdCAiJiN4Qjc7Ij4KLTwhRU5USVRZIGNlZGlsICImI3hC
ODsiPgotPCFFTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ij4KLTwhRU5USVRZIHN1cDEgIiYjeEI5OyI+
Ci08IUVOVElUWSBvcmRtICImI3hCQTsiPgotPCFFTlRJVFkgcmFxdW8gIiYjeEJCOyI+Ci08IUVO
VElUWSBmcmFjMTQgIiYjeEJDOyI+Ci08IUVOVElUWSBmcmFjMTIgIiYjeEJEOyI+Ci08IUVOVElU
WSBoYWxmICImI3hCRDsiPgotPCFFTlRJVFkgZnJhYzM0ICImI3hCRTsiPgotPCFFTlRJVFkgaXF1
ZXN0ICImI3hCRjsiPgotPCFFTlRJVFkgQWdyYXZlICImI3hDMDsiPgotPCFFTlRJVFkgQWFjdXRl
ICImI3hDMTsiPgotPCFFTlRJVFkgQWNpcmMgIiYjeEMyOyI+Ci08IUVOVElUWSBBdGlsZGUgIiYj
eEMzOyI+Ci08IUVOVElUWSBBdW1sICImI3hDNDsiPgotPCFFTlRJVFkgQXJpbmcgIiYjeEM1OyI+
Ci08IUVOVElUWSBhbmdzdCAiJiN4QzU7Ij4KLTwhRU5USVRZIEFFbGlnICImI3hDNjsiPgotPCFF
TlRJVFkgQ2NlZGlsICImI3hDNzsiPgotPCFFTlRJVFkgRWdyYXZlICImI3hDODsiPgotPCFFTlRJ
VFkgRWFjdXRlICImI3hDOTsiPgotPCFFTlRJVFkgRWNpcmMgIiYjeENBOyI+Ci08IUVOVElUWSBF
dW1sICImI3hDQjsiPgotPCFFTlRJVFkgSWdyYXZlICImI3hDQzsiPgotPCFFTlRJVFkgSWFjdXRl
ICImI3hDRDsiPgotPCFFTlRJVFkgSWNpcmMgIiYjeENFOyI+Ci08IUVOVElUWSBJdW1sICImI3hD
RjsiPgotPCFFTlRJVFkgRVRIICImI3hEMDsiPgotPCFFTlRJVFkgTnRpbGRlICImI3hEMTsiPgot
PCFFTlRJVFkgT2dyYXZlICImI3hEMjsiPgotPCFFTlRJVFkgT2FjdXRlICImI3hEMzsiPgotPCFF
TlRJVFkgT2NpcmMgIiYjeEQ0OyI+Ci08IUVOVElUWSBPdGlsZGUgIiYjeEQ1OyI+Ci08IUVOVElU
WSBPdW1sICImI3hENjsiPgotPCFFTlRJVFkgdGltZXMgIiYjeEQ3OyI+Ci08IUVOVElUWSBPc2xh
c2ggIiYjeEQ4OyI+Ci08IUVOVElUWSBVZ3JhdmUgIiYjeEQ5OyI+Ci08IUVOVElUWSBVYWN1dGUg
IiYjeERBOyI+Ci08IUVOVElUWSBVY2lyYyAiJiN4REI7Ij4KLTwhRU5USVRZIFV1bWwgIiYjeERD
OyI+Ci08IUVOVElUWSBZYWN1dGUgIiYjeEREOyI+Ci08IUVOVElUWSBUSE9STiAiJiN4REU7Ij4K
LTwhRU5USVRZIHN6bGlnICImI3hERjsiPgotPCFFTlRJVFkgYWdyYXZlICImI3hFMDsiPgotPCFF
TlRJVFkgYWFjdXRlICImI3hFMTsiPgotPCFFTlRJVFkgYWNpcmMgIiYjeEUyOyI+Ci08IUVOVElU
WSBhdGlsZGUgIiYjeEUzOyI+Ci08IUVOVElUWSBhdW1sICImI3hFNDsiPgotPCFFTlRJVFkgYXJp
bmcgIiYjeEU1OyI+Ci08IUVOVElUWSBhZWxpZyAiJiN4RTY7Ij4KLTwhRU5USVRZIGNjZWRpbCAi
JiN4RTc7Ij4KLTwhRU5USVRZIGVncmF2ZSAiJiN4RTg7Ij4KLTwhRU5USVRZIGVhY3V0ZSAiJiN4
RTk7Ij4KLTwhRU5USVRZIGVjaXJjICImI3hFQTsiPgotPCFFTlRJVFkgZXVtbCAiJiN4RUI7Ij4K
LTwhRU5USVRZIGlncmF2ZSAiJiN4RUM7Ij4KLTwhRU5USVRZIGlhY3V0ZSAiJiN4RUQ7Ij4KLTwh
RU5USVRZIGljaXJjICImI3hFRTsiPgotPCFFTlRJVFkgaXVtbCAiJiN4RUY7Ij4KLTwhRU5USVRZ
IGV0aCAiJiN4RjA7Ij4KLTwhRU5USVRZIG50aWxkZSAiJiN4RjE7Ij4KLTwhRU5USVRZIG9ncmF2
ZSAiJiN4RjI7Ij4KLTwhRU5USVRZIG9hY3V0ZSAiJiN4RjM7Ij4KLTwhRU5USVRZIG9jaXJjICIm
I3hGNDsiPgotPCFFTlRJVFkgb3RpbGRlICImI3hGNTsiPgotPCFFTlRJVFkgb3VtbCAiJiN4RjY7
Ij4KLTwhRU5USVRZIGRpdmlkZSAiJiN4Rjc7Ij4KLTwhRU5USVRZIGRpdiAiJiN4Rjc7Ij4KLTwh
RU5USVRZIG9zbGFzaCAiJiN4Rjg7Ij4KLTwhRU5USVRZIHVncmF2ZSAiJiN4Rjk7Ij4KLTwhRU5U
SVRZIHVhY3V0ZSAiJiN4RkE7Ij4KLTwhRU5USVRZIHVjaXJjICImI3hGQjsiPgotPCFFTlRJVFkg
dXVtbCAiJiN4RkM7Ij4KLTwhRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ij4KLTwhRU5USVRZIHRob3Ju
ICImI3hGRTsiPgotPCFFTlRJVFkgeXVtbCAiJiN4RkY7Ij4KLTwhRU5USVRZIEFtYWNyICImI3gx
MDA7Ij4KLTwhRU5USVRZIGFtYWNyICImI3gxMDE7Ij4KLTwhRU5USVRZIEFicmV2ZSAiJiN4MTAy
OyI+Ci08IUVOVElUWSBhYnJldmUgIiYjeDEwMzsiPgotPCFFTlRJVFkgQW9nb24gIiYjeDEwNDsi
PgotPCFFTlRJVFkgYW9nb24gIiYjeDEwNTsiPgotPCFFTlRJVFkgQ2FjdXRlICImI3gxMDY7Ij4K
LTwhRU5USVRZIGNhY3V0ZSAiJiN4MTA3OyI+Ci08IUVOVElUWSBDY2lyYyAiJiN4MTA4OyI+Ci08
IUVOVElUWSBjY2lyYyAiJiN4MTA5OyI+Ci08IUVOVElUWSBDZG90ICImI3gxMEE7Ij4KLTwhRU5U
SVRZIGNkb3QgIiYjeDEwQjsiPgotPCFFTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ij4KLTwhRU5USVRZ
IGNjYXJvbiAiJiN4MTBEOyI+Ci08IUVOVElUWSBEY2Fyb24gIiYjeDEwRTsiPgotPCFFTlRJVFkg
ZGNhcm9uICImI3gxMEY7Ij4KLTwhRU5USVRZIERzdHJvayAiJiN4MTEwOyI+Ci08IUVOVElUWSBk
c3Ryb2sgIiYjeDExMTsiPgotPCFFTlRJVFkgRW1hY3IgIiYjeDExMjsiPgotPCFFTlRJVFkgZW1h
Y3IgIiYjeDExMzsiPgotPCFFTlRJVFkgRWRvdCAiJiN4MTE2OyI+Ci08IUVOVElUWSBlZG90ICIm
I3gxMTc7Ij4KLTwhRU5USVRZIEVvZ29uICImI3gxMTg7Ij4KLTwhRU5USVRZIGVvZ29uICImI3gx
MTk7Ij4KLTwhRU5USVRZIEVjYXJvbiAiJiN4MTFBOyI+Ci08IUVOVElUWSBlY2Fyb24gIiYjeDEx
QjsiPgotPCFFTlRJVFkgR2NpcmMgIiYjeDExQzsiPgotPCFFTlRJVFkgZ2NpcmMgIiYjeDExRDsi
PgotPCFFTlRJVFkgR2JyZXZlICImI3gxMUU7Ij4KLTwhRU5USVRZIGdicmV2ZSAiJiN4MTFGOyI+
Ci08IUVOVElUWSBHZG90ICImI3gxMjA7Ij4KLTwhRU5USVRZIGdkb3QgIiYjeDEyMTsiPgotPCFF
TlRJVFkgR2NlZGlsICImI3gxMjI7Ij4KLTwhRU5USVRZIEhjaXJjICImI3gxMjQ7Ij4KLTwhRU5U
SVRZIGhjaXJjICImI3gxMjU7Ij4KLTwhRU5USVRZIEhzdHJvayAiJiN4MTI2OyI+Ci08IUVOVElU
WSBoc3Ryb2sgIiYjeDEyNzsiPgotPCFFTlRJVFkgSXRpbGRlICImI3gxMjg7Ij4KLTwhRU5USVRZ
IGl0aWxkZSAiJiN4MTI5OyI+Ci08IUVOVElUWSBJbWFjciAiJiN4MTJBOyI+Ci08IUVOVElUWSBp
bWFjciAiJiN4MTJCOyI+Ci08IUVOVElUWSBJb2dvbiAiJiN4MTJFOyI+Ci08IUVOVElUWSBpb2dv
biAiJiN4MTJGOyI+Ci08IUVOVElUWSBJZG90ICImI3gxMzA7Ij4KLTwhRU5USVRZIGltYXRoICIm
I3gxMzE7Ij4KLTwhRU5USVRZIGlub2RvdCAiJiN4MTMxOyI+Ci08IUVOVElUWSBJSmxpZyAiJiN4
MTMyOyI+Ci08IUVOVElUWSBpamxpZyAiJiN4MTMzOyI+Ci08IUVOVElUWSBKY2lyYyAiJiN4MTM0
OyI+Ci08IUVOVElUWSBqY2lyYyAiJiN4MTM1OyI+Ci08IUVOVElUWSBLY2VkaWwgIiYjeDEzNjsi
PgotPCFFTlRJVFkga2NlZGlsICImI3gxMzc7Ij4KLTwhRU5USVRZIGtncmVlbiAiJiN4MTM4OyI+
Ci08IUVOVElUWSBMYWN1dGUgIiYjeDEzOTsiPgotPCFFTlRJVFkgbGFjdXRlICImI3gxM0E7Ij4K
LTwhRU5USVRZIExjZWRpbCAiJiN4MTNCOyI+Ci08IUVOVElUWSBsY2VkaWwgIiYjeDEzQzsiPgot
PCFFTlRJVFkgTGNhcm9uICImI3gxM0Q7Ij4KLTwhRU5USVRZIGxjYXJvbiAiJiN4MTNFOyI+Ci08
IUVOVElUWSBMbWlkb3QgIiYjeDEzRjsiPgotPCFFTlRJVFkgbG1pZG90ICImI3gxNDA7Ij4KLTwh
RU5USVRZIExzdHJvayAiJiN4MTQxOyI+Ci08IUVOVElUWSBsc3Ryb2sgIiYjeDE0MjsiPgotPCFF
TlRJVFkgTmFjdXRlICImI3gxNDM7Ij4KLTwhRU5USVRZIG5hY3V0ZSAiJiN4MTQ0OyI+Ci08IUVO
VElUWSBOY2VkaWwgIiYjeDE0NTsiPgotPCFFTlRJVFkgbmNlZGlsICImI3gxNDY7Ij4KLTwhRU5U
SVRZIE5jYXJvbiAiJiN4MTQ3OyI+Ci08IUVOVElUWSBuY2Fyb24gIiYjeDE0ODsiPgotPCFFTlRJ
VFkgbmFwb3MgIiYjeDE0OTsiPgotPCFFTlRJVFkgRU5HICImI3gxNEE7Ij4KLTwhRU5USVRZIGVu
ZyAiJiN4MTRCOyI+Ci08IUVOVElUWSBPbWFjciAiJiN4MTRDOyI+Ci08IUVOVElUWSBvbWFjciAi
JiN4MTREOyI+Ci08IUVOVElUWSBPZGJsYWMgIiYjeDE1MDsiPgotPCFFTlRJVFkgb2RibGFjICIm
I3gxNTE7Ij4KLTwhRU5USVRZIE9FbGlnICImI3gxNTI7Ij4KLTwhRU5USVRZIG9lbGlnICImI3gx
NTM7Ij4KLTwhRU5USVRZIFJhY3V0ZSAiJiN4MTU0OyI+Ci08IUVOVElUWSByYWN1dGUgIiYjeDE1
NTsiPgotPCFFTlRJVFkgUmNlZGlsICImI3gxNTY7Ij4KLTwhRU5USVRZIHJjZWRpbCAiJiN4MTU3
OyI+Ci08IUVOVElUWSBSY2Fyb24gIiYjeDE1ODsiPgotPCFFTlRJVFkgcmNhcm9uICImI3gxNTk7
Ij4KLTwhRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyI+Ci08IUVOVElUWSBzYWN1dGUgIiYjeDE1Qjsi
PgotPCFFTlRJVFkgU2NpcmMgIiYjeDE1QzsiPgotPCFFTlRJVFkgc2NpcmMgIiYjeDE1RDsiPgot
PCFFTlRJVFkgU2NlZGlsICImI3gxNUU7Ij4KLTwhRU5USVRZIHNjZWRpbCAiJiN4MTVGOyI+Ci08
IUVOVElUWSBTY2Fyb24gIiYjeDE2MDsiPgotPCFFTlRJVFkgc2Nhcm9uICImI3gxNjE7Ij4KLTwh
RU5USVRZIFRjZWRpbCAiJiN4MTYyOyI+Ci08IUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiPgotPCFF
TlRJVFkgVGNhcm9uICImI3gxNjQ7Ij4KLTwhRU5USVRZIHRjYXJvbiAiJiN4MTY1OyI+Ci08IUVO
VElUWSBUc3Ryb2sgIiYjeDE2NjsiPgotPCFFTlRJVFkgdHN0cm9rICImI3gxNjc7Ij4KLTwhRU5U
SVRZIFV0aWxkZSAiJiN4MTY4OyI+Ci08IUVOVElUWSB1dGlsZGUgIiYjeDE2OTsiPgotPCFFTlRJ
VFkgVW1hY3IgIiYjeDE2QTsiPgotPCFFTlRJVFkgdW1hY3IgIiYjeDE2QjsiPgotPCFFTlRJVFkg
VWJyZXZlICImI3gxNkM7Ij4KLTwhRU5USVRZIHVicmV2ZSAiJiN4MTZEOyI+Ci08IUVOVElUWSBV
cmluZyAiJiN4MTZFOyI+Ci08IUVOVElUWSB1cmluZyAiJiN4MTZGOyI+Ci08IUVOVElUWSBVZGJs
YWMgIiYjeDE3MDsiPgotPCFFTlRJVFkgdWRibGFjICImI3gxNzE7Ij4KLTwhRU5USVRZIFVvZ29u
ICImI3gxNzI7Ij4KLTwhRU5USVRZIHVvZ29uICImI3gxNzM7Ij4KLTwhRU5USVRZIFdjaXJjICIm
I3gxNzQ7Ij4KLTwhRU5USVRZIHdjaXJjICImI3gxNzU7Ij4KLTwhRU5USVRZIFljaXJjICImI3gx
NzY7Ij4KLTwhRU5USVRZIHljaXJjICImI3gxNzc7Ij4KLTwhRU5USVRZIFl1bWwgIiYjeDE3ODsi
PgotPCFFTlRJVFkgWmFjdXRlICImI3gxNzk7Ij4KLTwhRU5USVRZIHphY3V0ZSAiJiN4MTdBOyI+
Ci08IUVOVElUWSBaZG90ICImI3gxN0I7Ij4KLTwhRU5USVRZIHpkb3QgIiYjeDE3QzsiPgotPCFF
TlRJVFkgWmNhcm9uICImI3gxN0Q7Ij4KLTwhRU5USVRZIHpjYXJvbiAiJiN4MTdFOyI+Ci08IUVO
VElUWSBmbm9mICImI3gxOTI7Ij4KLTwhRU5USVRZIGltcGVkICImI3gxQjU7Ij4KLTwhRU5USVRZ
IGdhY3V0ZSAiJiN4MUY1OyI+Ci08IUVOVElUWSBqbWF0aCAiJiN4MjM3OyI+Ci08IUVOVElUWSBj
aXJjICImI3gyQzY7Ij4KLTwhRU5USVRZIGNhcm9uICImI3gyQzc7Ij4KLTwhRU5USVRZIEhhY2Vr
ICImI3gyQzc7Ij4KLTwhRU5USVRZIGJyZXZlICImI3gyRDg7Ij4KLTwhRU5USVRZIEJyZXZlICIm
I3gyRDg7Ij4KLTwhRU5USVRZIGRvdCAiJiN4MkQ5OyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbERv
dCAiJiN4MkQ5OyI+Ci08IUVOVElUWSByaW5nICImI3gyREE7Ij4KLTwhRU5USVRZIG9nb24gIiYj
eDJEQjsiPgotPCFFTlRJVFkgdGlsZGUgIiYjeDJEQzsiPgotPCFFTlRJVFkgRGlhY3JpdGljYWxU
aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBkYmxhYyAiJiN4MkREOyI+Ci08IUVOVElUWSBEaWFj
cml0aWNhbERvdWJsZUFjdXRlICImI3gyREQ7Ij4KLTwhRU5USVRZIERvd25CcmV2ZSAiJiN4MzEx
OyI+Ci08IUVOVElUWSBBbHBoYSAiJiN4MzkxOyI+Ci08IUVOVElUWSBCZXRhICImI3gzOTI7Ij4K
LTwhRU5USVRZIEdhbW1hICImI3gzOTM7Ij4KLTwhRU5USVRZIERlbHRhICImI3gzOTQ7Ij4KLTwh
RU5USVRZIEVwc2lsb24gIiYjeDM5NTsiPgotPCFFTlRJVFkgWmV0YSAiJiN4Mzk2OyI+Ci08IUVO
VElUWSBFdGEgIiYjeDM5NzsiPgotPCFFTlRJVFkgVGhldGEgIiYjeDM5ODsiPgotPCFFTlRJVFkg
SW90YSAiJiN4Mzk5OyI+Ci08IUVOVElUWSBLYXBwYSAiJiN4MzlBOyI+Ci08IUVOVElUWSBMYW1i
ZGEgIiYjeDM5QjsiPgotPCFFTlRJVFkgTXUgIiYjeDM5QzsiPgotPCFFTlRJVFkgTnUgIiYjeDM5
RDsiPgotPCFFTlRJVFkgWGkgIiYjeDM5RTsiPgotPCFFTlRJVFkgT21pY3JvbiAiJiN4MzlGOyI+
Ci08IUVOVElUWSBQaSAiJiN4M0EwOyI+Ci08IUVOVElUWSBSaG8gIiYjeDNBMTsiPgotPCFFTlRJ
VFkgU2lnbWEgIiYjeDNBMzsiPgotPCFFTlRJVFkgVGF1ICImI3gzQTQ7Ij4KLTwhRU5USVRZIFVw
c2lsb24gIiYjeDNBNTsiPgotPCFFTlRJVFkgUGhpICImI3gzQTY7Ij4KLTwhRU5USVRZIENoaSAi
JiN4M0E3OyI+Ci08IUVOVElUWSBQc2kgIiYjeDNBODsiPgotPCFFTlRJVFkgT21lZ2EgIiYjeDNB
OTsiPgotPCFFTlRJVFkgb2htICImI3gzQTk7Ij4KLTwhRU5USVRZIGFscGhhICImI3gzQjE7Ij4K
LTwhRU5USVRZIGJldGEgIiYjeDNCMjsiPgotPCFFTlRJVFkgZ2FtbWEgIiYjeDNCMzsiPgotPCFF
TlRJVFkgZGVsdGEgIiYjeDNCNDsiPgotPCFFTlRJVFkgZXBzaSAiJiN4M0I1OyI+Ci08IUVOVElU
WSBlcHNpbG9uICImI3gzQjU7Ij4KLTwhRU5USVRZIHpldGEgIiYjeDNCNjsiPgotPCFFTlRJVFkg
ZXRhICImI3gzQjc7Ij4KLTwhRU5USVRZIHRoZXRhICImI3gzQjg7Ij4KLTwhRU5USVRZIGlvdGEg
IiYjeDNCOTsiPgotPCFFTlRJVFkga2FwcGEgIiYjeDNCQTsiPgotPCFFTlRJVFkgbGFtYmRhICIm
I3gzQkI7Ij4KLTwhRU5USVRZIG11ICImI3gzQkM7Ij4KLTwhRU5USVRZIG51ICImI3gzQkQ7Ij4K
LTwhRU5USVRZIHhpICImI3gzQkU7Ij4KLTwhRU5USVRZIG9taWNyb24gIiYjeDNCRjsiPgotPCFF
TlRJVFkgcGkgIiYjeDNDMDsiPgotPCFFTlRJVFkgcmhvICImI3gzQzE7Ij4KLTwhRU5USVRZIHNp
Z21hdiAiJiN4M0MyOyI+Ci08IUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyI+Ci08IUVOVElUWSBz
aWdtYWYgIiYjeDNDMjsiPgotPCFFTlRJVFkgc2lnbWEgIiYjeDNDMzsiPgotPCFFTlRJVFkgdGF1
ICImI3gzQzQ7Ij4KLTwhRU5USVRZIHVwc2kgIiYjeDNDNTsiPgotPCFFTlRJVFkgdXBzaWxvbiAi
JiN4M0M1OyI+Ci08IUVOVElUWSBwaGkgIiYjeDNDNjsiPgotPCFFTlRJVFkgY2hpICImI3gzQzc7
Ij4KLTwhRU5USVRZIHBzaSAiJiN4M0M4OyI+Ci08IUVOVElUWSBvbWVnYSAiJiN4M0M5OyI+Ci08
IUVOVElUWSB0aGV0YXYgIiYjeDNEMTsiPgotPCFFTlRJVFkgdmFydGhldGEgIiYjeDNEMTsiPgot
PCFFTlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiPgotPCFFTlRJVFkgVXBzaSAiJiN4M0QyOyI+Ci08
IUVOVElUWSB1cHNpaCAiJiN4M0QyOyI+Ci08IUVOVElUWSBzdHJhaWdodHBoaSAiJiN4M0Q1OyI+
Ci08IUVOVElUWSBwaGl2ICImI3gzRDU7Ij4KLTwhRU5USVRZIHZhcnBoaSAiJiN4M0Q1OyI+Ci08
IUVOVElUWSBwaXYgIiYjeDNENjsiPgotPCFFTlRJVFkgdmFycGkgIiYjeDNENjsiPgotPCFFTlRJ
VFkgR2FtbWFkICImI3gzREM7Ij4KLTwhRU5USVRZIGdhbW1hZCAiJiN4M0REOyI+Ci08IUVOVElU
WSBkaWdhbW1hICImI3gzREQ7Ij4KLTwhRU5USVRZIGthcHBhdiAiJiN4M0YwOyI+Ci08IUVOVElU
WSB2YXJrYXBwYSAiJiN4M0YwOyI+Ci08IUVOVElUWSByaG92ICImI3gzRjE7Ij4KLTwhRU5USVRZ
IHZhcnJobyAiJiN4M0YxOyI+Ci08IUVOVElUWSBlcHNpdiAiJiN4M0Y1OyI+Ci08IUVOVElUWSBz
dHJhaWdodGVwc2lsb24gIiYjeDNGNTsiPgotPCFFTlRJVFkgdmFyZXBzaWxvbiAiJiN4M0Y1OyI+
Ci08IUVOVElUWSBiZXBzaSAiJiN4M0Y2OyI+Ci08IUVOVElUWSBiYWNrZXBzaWxvbiAiJiN4M0Y2
OyI+Ci08IUVOVElUWSBJT2N5ICImI3g0MDE7Ij4KLTwhRU5USVRZIERKY3kgIiYjeDQwMjsiPgot
PCFFTlRJVFkgR0pjeSAiJiN4NDAzOyI+Ci08IUVOVElUWSBKdWtjeSAiJiN4NDA0OyI+Ci08IUVO
VElUWSBEU2N5ICImI3g0MDU7Ij4KLTwhRU5USVRZIEl1a2N5ICImI3g0MDY7Ij4KLTwhRU5USVRZ
IFlJY3kgIiYjeDQwNzsiPgotPCFFTlRJVFkgSnNlcmN5ICImI3g0MDg7Ij4KLTwhRU5USVRZIExK
Y3kgIiYjeDQwOTsiPgotPCFFTlRJVFkgTkpjeSAiJiN4NDBBOyI+Ci08IUVOVElUWSBUU0hjeSAi
JiN4NDBCOyI+Ci08IUVOVElUWSBLSmN5ICImI3g0MEM7Ij4KLTwhRU5USVRZIFVicmN5ICImI3g0
MEU7Ij4KLTwhRU5USVRZIERaY3kgIiYjeDQwRjsiPgotPCFFTlRJVFkgQWN5ICImI3g0MTA7Ij4K
LTwhRU5USVRZIEJjeSAiJiN4NDExOyI+Ci08IUVOVElUWSBWY3kgIiYjeDQxMjsiPgotPCFFTlRJ
VFkgR2N5ICImI3g0MTM7Ij4KLTwhRU5USVRZIERjeSAiJiN4NDE0OyI+Ci08IUVOVElUWSBJRWN5
ICImI3g0MTU7Ij4KLTwhRU5USVRZIFpIY3kgIiYjeDQxNjsiPgotPCFFTlRJVFkgWmN5ICImI3g0
MTc7Ij4KLTwhRU5USVRZIEljeSAiJiN4NDE4OyI+Ci08IUVOVElUWSBKY3kgIiYjeDQxOTsiPgot
PCFFTlRJVFkgS2N5ICImI3g0MUE7Ij4KLTwhRU5USVRZIExjeSAiJiN4NDFCOyI+Ci08IUVOVElU
WSBNY3kgIiYjeDQxQzsiPgotPCFFTlRJVFkgTmN5ICImI3g0MUQ7Ij4KLTwhRU5USVRZIE9jeSAi
JiN4NDFFOyI+Ci08IUVOVElUWSBQY3kgIiYjeDQxRjsiPgotPCFFTlRJVFkgUmN5ICImI3g0MjA7
Ij4KLTwhRU5USVRZIFNjeSAiJiN4NDIxOyI+Ci08IUVOVElUWSBUY3kgIiYjeDQyMjsiPgotPCFF
TlRJVFkgVWN5ICImI3g0MjM7Ij4KLTwhRU5USVRZIEZjeSAiJiN4NDI0OyI+Ci08IUVOVElUWSBL
SGN5ICImI3g0MjU7Ij4KLTwhRU5USVRZIFRTY3kgIiYjeDQyNjsiPgotPCFFTlRJVFkgQ0hjeSAi
JiN4NDI3OyI+Ci08IUVOVElUWSBTSGN5ICImI3g0Mjg7Ij4KLTwhRU5USVRZIFNIQ0hjeSAiJiN4
NDI5OyI+Ci08IUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiPgotPCFFTlRJVFkgWWN5ICImI3g0MkI7
Ij4KLTwhRU5USVRZIFNPRlRjeSAiJiN4NDJDOyI+Ci08IUVOVElUWSBFY3kgIiYjeDQyRDsiPgot
PCFFTlRJVFkgWVVjeSAiJiN4NDJFOyI+Ci08IUVOVElUWSBZQWN5ICImI3g0MkY7Ij4KLTwhRU5U
SVRZIGFjeSAiJiN4NDMwOyI+Ci08IUVOVElUWSBiY3kgIiYjeDQzMTsiPgotPCFFTlRJVFkgdmN5
ICImI3g0MzI7Ij4KLTwhRU5USVRZIGdjeSAiJiN4NDMzOyI+Ci08IUVOVElUWSBkY3kgIiYjeDQz
NDsiPgotPCFFTlRJVFkgaWVjeSAiJiN4NDM1OyI+Ci08IUVOVElUWSB6aGN5ICImI3g0MzY7Ij4K
LTwhRU5USVRZIHpjeSAiJiN4NDM3OyI+Ci08IUVOVElUWSBpY3kgIiYjeDQzODsiPgotPCFFTlRJ
VFkgamN5ICImI3g0Mzk7Ij4KLTwhRU5USVRZIGtjeSAiJiN4NDNBOyI+Ci08IUVOVElUWSBsY3kg
IiYjeDQzQjsiPgotPCFFTlRJVFkgbWN5ICImI3g0M0M7Ij4KLTwhRU5USVRZIG5jeSAiJiN4NDNE
OyI+Ci08IUVOVElUWSBvY3kgIiYjeDQzRTsiPgotPCFFTlRJVFkgcGN5ICImI3g0M0Y7Ij4KLTwh
RU5USVRZIHJjeSAiJiN4NDQwOyI+Ci08IUVOVElUWSBzY3kgIiYjeDQ0MTsiPgotPCFFTlRJVFkg
dGN5ICImI3g0NDI7Ij4KLTwhRU5USVRZIHVjeSAiJiN4NDQzOyI+Ci08IUVOVElUWSBmY3kgIiYj
eDQ0NDsiPgotPCFFTlRJVFkga2hjeSAiJiN4NDQ1OyI+Ci08IUVOVElUWSB0c2N5ICImI3g0NDY7
Ij4KLTwhRU5USVRZIGNoY3kgIiYjeDQ0NzsiPgotPCFFTlRJVFkgc2hjeSAiJiN4NDQ4OyI+Ci08
IUVOVElUWSBzaGNoY3kgIiYjeDQ0OTsiPgotPCFFTlRJVFkgaGFyZGN5ICImI3g0NEE7Ij4KLTwh
RU5USVRZIHljeSAiJiN4NDRCOyI+Ci08IUVOVElUWSBzb2Z0Y3kgIiYjeDQ0QzsiPgotPCFFTlRJ
VFkgZWN5ICImI3g0NEQ7Ij4KLTwhRU5USVRZIHl1Y3kgIiYjeDQ0RTsiPgotPCFFTlRJVFkgeWFj
eSAiJiN4NDRGOyI+Ci08IUVOVElUWSBpb2N5ICImI3g0NTE7Ij4KLTwhRU5USVRZIGRqY3kgIiYj
eDQ1MjsiPgotPCFFTlRJVFkgZ2pjeSAiJiN4NDUzOyI+Ci08IUVOVElUWSBqdWtjeSAiJiN4NDU0
OyI+Ci08IUVOVElUWSBkc2N5ICImI3g0NTU7Ij4KLTwhRU5USVRZIGl1a2N5ICImI3g0NTY7Ij4K
LTwhRU5USVRZIHlpY3kgIiYjeDQ1NzsiPgotPCFFTlRJVFkganNlcmN5ICImI3g0NTg7Ij4KLTwh
RU5USVRZIGxqY3kgIiYjeDQ1OTsiPgotPCFFTlRJVFkgbmpjeSAiJiN4NDVBOyI+Ci08IUVOVElU
WSB0c2hjeSAiJiN4NDVCOyI+Ci08IUVOVElUWSBramN5ICImI3g0NUM7Ij4KLTwhRU5USVRZIHVi
cmN5ICImI3g0NUU7Ij4KLTwhRU5USVRZIGR6Y3kgIiYjeDQ1RjsiPgotPCFFTlRJVFkgZW5zcCAi
JiN4MjAwMjsiPgotPCFFTlRJVFkgZW1zcCAiJiN4MjAwMzsiPgotPCFFTlRJVFkgZW1zcDEzICIm
I3gyMDA0OyI+Ci08IUVOVElUWSBlbXNwMTQgIiYjeDIwMDU7Ij4KLTwhRU5USVRZIG51bXNwICIm
I3gyMDA3OyI+Ci08IUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ij4KLTwhRU5USVRZIHRoaW5zcCAi
JiN4MjAwOTsiPgotPCFFTlRJVFkgVGhpblNwYWNlICImI3gyMDA5OyI+Ci08IUVOVElUWSBoYWly
c3AgIiYjeDIwMEE7Ij4KLTwhRU5USVRZIFZlcnlUaGluU3BhY2UgIiYjeDIwMEE7Ij4KLTwhRU5U
SVRZIFplcm9XaWR0aFNwYWNlICImI3gyMDBCOyI+Ci08IUVOVElUWSBOZWdhdGl2ZVZlcnlUaGlu
U3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlVGhpblNwYWNlICImI3gyMDBCOyI+
Ci08IUVOVElUWSBOZWdhdGl2ZU1lZGl1bVNwYWNlICImI3gyMDBCOyI+Ci08IUVOVElUWSBOZWdh
dGl2ZVRoaWNrU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIHp3bmogIiYjeDIwMEM7Ij4KLTwh
RU5USVRZIHp3aiAiJiN4MjAwRDsiPgotPCFFTlRJVFkgbHJtICImI3gyMDBFOyI+Ci08IUVOVElU
WSBybG0gIiYjeDIwMEY7Ij4KLTwhRU5USVRZIGh5cGhlbiAiJiN4MjAxMDsiPgotPCFFTlRJVFkg
ZGFzaCAiJiN4MjAxMDsiPgotPCFFTlRJVFkgbmRhc2ggIiYjeDIwMTM7Ij4KLTwhRU5USVRZIG1k
YXNoICImI3gyMDE0OyI+Ci08IUVOVElUWSBob3JiYXIgIiYjeDIwMTU7Ij4KLTwhRU5USVRZIFZl
cmJhciAiJiN4MjAxNjsiPgotPCFFTlRJVFkgVmVydCAiJiN4MjAxNjsiPgotPCFFTlRJVFkgbHNx
dW8gIiYjeDIwMTg7Ij4KLTwhRU5USVRZIE9wZW5DdXJseVF1b3RlICImI3gyMDE4OyI+Ci08IUVO
VElUWSByc3F1byAiJiN4MjAxOTsiPgotPCFFTlRJVFkgcnNxdW9yICImI3gyMDE5OyI+Ci08IUVO
VElUWSBDbG9zZUN1cmx5UXVvdGUgIiYjeDIwMTk7Ij4KLTwhRU5USVRZIGxzcXVvciAiJiN4MjAx
QTsiPgotPCFFTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ij4KLTwhRU5USVRZIGxkcXVvICImI3gyMDFD
OyI+Ci08IUVOVElUWSBPcGVuQ3VybHlEb3VibGVRdW90ZSAiJiN4MjAxQzsiPgotPCFFTlRJVFkg
cmRxdW8gIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIHJkcXVvciAiJiN4MjAxRDsiPgotPCFFTlRJVFkg
Q2xvc2VDdXJseURvdWJsZVF1b3RlICImI3gyMDFEOyI+Ci08IUVOVElUWSBsZHF1b3IgIiYjeDIw
MUU7Ij4KLTwhRU5USVRZIGJkcXVvICImI3gyMDFFOyI+Ci08IUVOVElUWSBkYWdnZXIgIiYjeDIw
MjA7Ij4KLTwhRU5USVRZIERhZ2dlciAiJiN4MjAyMTsiPgotPCFFTlRJVFkgZGRhZ2dlciAiJiN4
MjAyMTsiPgotPCFFTlRJVFkgYnVsbCAiJiN4MjAyMjsiPgotPCFFTlRJVFkgYnVsbGV0ICImI3gy
MDIyOyI+Ci08IUVOVElUWSBubGRyICImI3gyMDI1OyI+Ci08IUVOVElUWSBoZWxsaXAgIiYjeDIw
MjY7Ij4KLTwhRU5USVRZIG1sZHIgIiYjeDIwMjY7Ij4KLTwhRU5USVRZIHBlcm1pbCAiJiN4MjAz
MDsiPgotPCFFTlRJVFkgcGVydGVuayAiJiN4MjAzMTsiPgotPCFFTlRJVFkgcHJpbWUgIiYjeDIw
MzI7Ij4KLTwhRU5USVRZIFByaW1lICImI3gyMDMzOyI+Ci08IUVOVElUWSB0cHJpbWUgIiYjeDIw
MzQ7Ij4KLTwhRU5USVRZIGJwcmltZSAiJiN4MjAzNTsiPgotPCFFTlRJVFkgYmFja3ByaW1lICIm
I3gyMDM1OyI+Ci08IUVOVElUWSBsc2FxdW8gIiYjeDIwMzk7Ij4KLTwhRU5USVRZIHJzYXF1byAi
JiN4MjAzQTsiPgotPCFFTlRJVFkgb2xpbmUgIiYjeDIwM0U7Ij4KLTwhRU5USVRZIE92ZXJCYXIg
IiYjeDIwM0U7Ij4KLTwhRU5USVRZIGNhcmV0ICImI3gyMDQxOyI+Ci08IUVOVElUWSBoeWJ1bGwg
IiYjeDIwNDM7Ij4KLTwhRU5USVRZIGZyYXNsICImI3gyMDQ0OyI+Ci08IUVOVElUWSBic2VtaSAi
JiN4MjA0RjsiPgotPCFFTlRJVFkgcXByaW1lICImI3gyMDU3OyI+Ci08IUVOVElUWSBNZWRpdW1T
cGFjZSAiJiN4MjA1RjsiPgotPCFFTlRJVFkgVGhpY2tTcGFjZSAiJiN4MjA1RjsmI3gyMDBBOyI+
Ci08IUVOVElUWSBOb0JyZWFrICImI3gyMDYwOyI+Ci08IUVOVElUWSBBcHBseUZ1bmN0aW9uICIm
I3gyMDYxOyI+Ci08IUVOVElUWSBhZiAiJiN4MjA2MTsiPgotPCFFTlRJVFkgSW52aXNpYmxlVGlt
ZXMgIiYjeDIwNjI7Ij4KLTwhRU5USVRZIGl0ICImI3gyMDYyOyI+Ci08IUVOVElUWSBJbnZpc2li
bGVDb21tYSAiJiN4MjA2MzsiPgotPCFFTlRJVFkgaWMgIiYjeDIwNjM7Ij4KLTwhRU5USVRZIGV1
cm8gIiYjeDIwQUM7Ij4KLTwhRU5USVRZIHRkb3QgIiYjeDIwREI7Ij4KLTwhRU5USVRZIFRyaXBs
ZURvdCAiJiN4MjBEQjsiPgotPCFFTlRJVFkgRG90RG90ICImI3gyMERDOyI+Ci08IUVOVElUWSBD
b3BmICImI3gyMTAyOyI+Ci08IUVOVElUWSBjb21wbGV4ZXMgIiYjeDIxMDI7Ij4KLTwhRU5USVRZ
IGluY2FyZSAiJiN4MjEwNTsiPgotPCFFTlRJVFkgZ3NjciAiJiN4MjEwQTsiPgotPCFFTlRJVFkg
aGFtaWx0ICImI3gyMTBCOyI+Ci08IUVOVElUWSBIaWxiZXJ0U3BhY2UgIiYjeDIxMEI7Ij4KLTwh
RU5USVRZIEhzY3IgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhmciAiJiN4MjEwQzsiPgotPCFFTlRJ
VFkgUG9pbmNhcmVwbGFuZSAiJiN4MjEwQzsiPgotPCFFTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIx
MEQ7Ij4KLTwhRU5USVRZIEhvcGYgIiYjeDIxMEQ7Ij4KLTwhRU5USVRZIHBsYW5ja2ggIiYjeDIx
MEU7Ij4KLTwhRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiPgotPCFFTlRJVFkgaGJhciAiJiN4MjEw
RjsiPgotPCFFTlRJVFkgcGxhbmt2ICImI3gyMTBGOyI+Ci08IUVOVElUWSBoc2xhc2ggIiYjeDIx
MEY7Ij4KLTwhRU5USVRZIElzY3IgIiYjeDIxMTA7Ij4KLTwhRU5USVRZIGltYWdsaW5lICImI3gy
MTEwOyI+Ci08IUVOVElUWSBpbWFnZSAiJiN4MjExMTsiPgotPCFFTlRJVFkgSW0gIiYjeDIxMTE7
Ij4KLTwhRU5USVRZIGltYWdwYXJ0ICImI3gyMTExOyI+Ci08IUVOVElUWSBJZnIgIiYjeDIxMTE7
Ij4KLTwhRU5USVRZIExzY3IgIiYjeDIxMTI7Ij4KLTwhRU5USVRZIGxhZ3JhbiAiJiN4MjExMjsi
PgotPCFFTlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiPgotPCFFTlRJVFkgZWxsICImI3gyMTEz
OyI+Ci08IUVOVElUWSBOb3BmICImI3gyMTE1OyI+Ci08IUVOVElUWSBuYXR1cmFscyAiJiN4MjEx
NTsiPgotPCFFTlRJVFkgbnVtZXJvICImI3gyMTE2OyI+Ci08IUVOVElUWSBjb3B5c3IgIiYjeDIx
MTc7Ij4KLTwhRU5USVRZIHdlaWVycCAiJiN4MjExODsiPgotPCFFTlRJVFkgd3AgIiYjeDIxMTg7
Ij4KLTwhRU5USVRZIFBvcGYgIiYjeDIxMTk7Ij4KLTwhRU5USVRZIHByaW1lcyAiJiN4MjExOTsi
PgotPCFFTlRJVFkgcmF0aW9uYWxzICImI3gyMTFBOyI+Ci08IUVOVElUWSBRb3BmICImI3gyMTFB
OyI+Ci08IUVOVElUWSBSc2NyICImI3gyMTFCOyI+Ci08IUVOVElUWSByZWFsaW5lICImI3gyMTFC
OyI+Ci08IUVOVElUWSByZWFsICImI3gyMTFDOyI+Ci08IUVOVElUWSBSZSAiJiN4MjExQzsiPgot
PCFFTlRJVFkgcmVhbHBhcnQgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJmciAiJiN4MjExQzsiPgot
PCFFTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ij4KLTwhRU5USVRZIFJvcGYgIiYjeDIxMUQ7Ij4KLTwh
RU5USVRZIHJ4ICImI3gyMTFFOyI+Ci08IUVOVElUWSB0cmFkZSAiJiN4MjEyMjsiPgotPCFFTlRJ
VFkgVFJBREUgIiYjeDIxMjI7Ij4KLTwhRU5USVRZIGludGVnZXJzICImI3gyMTI0OyI+Ci08IUVO
VElUWSBab3BmICImI3gyMTI0OyI+Ci08IUVOVElUWSBtaG8gIiYjeDIxMjc7Ij4KLTwhRU5USVRZ
IFpmciAiJiN4MjEyODsiPgotPCFFTlRJVFkgemVldHJmICImI3gyMTI4OyI+Ci08IUVOVElUWSBp
aW90YSAiJiN4MjEyOTsiPgotPCFFTlRJVFkgYmVybm91ICImI3gyMTJDOyI+Ci08IUVOVElUWSBC
ZXJub3VsbGlzICImI3gyMTJDOyI+Ci08IUVOVElUWSBCc2NyICImI3gyMTJDOyI+Ci08IUVOVElU
WSBDZnIgIiYjeDIxMkQ7Ij4KLTwhRU5USVRZIENheWxleXMgIiYjeDIxMkQ7Ij4KLTwhRU5USVRZ
IGVzY3IgIiYjeDIxMkY7Ij4KLTwhRU5USVRZIEVzY3IgIiYjeDIxMzA7Ij4KLTwhRU5USVRZIGV4
cGVjdGF0aW9uICImI3gyMTMwOyI+Ci08IUVOVElUWSBGc2NyICImI3gyMTMxOyI+Ci08IUVOVElU
WSBGb3VyaWVydHJmICImI3gyMTMxOyI+Ci08IUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ij4KLTwh
RU5USVRZIE1lbGxpbnRyZiAiJiN4MjEzMzsiPgotPCFFTlRJVFkgTXNjciAiJiN4MjEzMzsiPgot
PCFFTlRJVFkgb3JkZXIgIiYjeDIxMzQ7Ij4KLTwhRU5USVRZIG9yZGVyb2YgIiYjeDIxMzQ7Ij4K
LTwhRU5USVRZIG9zY3IgIiYjeDIxMzQ7Ij4KLTwhRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7Ij4K
LTwhRU5USVRZIGFsZXBoICImI3gyMTM1OyI+Ci08IUVOVElUWSBiZXRoICImI3gyMTM2OyI+Ci08
IUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiPgotPCFFTlRJVFkgZGFsZXRoICImI3gyMTM4OyI+Ci08
IUVOVElUWSBDYXBpdGFsRGlmZmVyZW50aWFsRCAiJiN4MjE0NTsiPgotPCFFTlRJVFkgREQgIiYj
eDIxNDU7Ij4KLTwhRU5USVRZIERpZmZlcmVudGlhbEQgIiYjeDIxNDY7Ij4KLTwhRU5USVRZIGRk
ICImI3gyMTQ2OyI+Ci08IUVOVElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ij4KLTwhRU5USVRZ
IGV4cG9uZW50aWFsZSAiJiN4MjE0NzsiPgotPCFFTlRJVFkgZWUgIiYjeDIxNDc7Ij4KLTwhRU5U
SVRZIEltYWdpbmFyeUkgIiYjeDIxNDg7Ij4KLTwhRU5USVRZIGlpICImI3gyMTQ4OyI+Ci08IUVO
VElUWSBmcmFjMTMgIiYjeDIxNTM7Ij4KLTwhRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsiPgotPCFF
TlRJVFkgZnJhYzE1ICImI3gyMTU1OyI+Ci08IUVOVElUWSBmcmFjMjUgIiYjeDIxNTY7Ij4KLTwh
RU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiPgotPCFFTlRJVFkgZnJhYzQ1ICImI3gyMTU4OyI+Ci08
IUVOVElUWSBmcmFjMTYgIiYjeDIxNTk7Ij4KLTwhRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiPgot
PCFFTlRJVFkgZnJhYzE4ICImI3gyMTVCOyI+Ci08IUVOVElUWSBmcmFjMzggIiYjeDIxNUM7Ij4K
LTwhRU5USVRZIGZyYWM1OCAiJiN4MjE1RDsiPgotPCFFTlRJVFkgZnJhYzc4ICImI3gyMTVFOyI+
Ci08IUVOVElUWSBsYXJyICImI3gyMTkwOyI+Ci08IUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7
Ij4KLTwhRU5USVRZIExlZnRBcnJvdyAiJiN4MjE5MDsiPgotPCFFTlRJVFkgc2xhcnIgIiYjeDIx
OTA7Ij4KLTwhRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSB1YXJy
ICImI3gyMTkxOyI+Ci08IUVOVElUWSB1cGFycm93ICImI3gyMTkxOyI+Ci08IUVOVElUWSBVcEFy
cm93ICImI3gyMTkxOyI+Ci08IUVOVElUWSBTaG9ydFVwQXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5U
SVRZIHJhcnIgIiYjeDIxOTI7Ij4KLTwhRU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ij4KLTwhRU5USVRZIHNyYXJyICImI3gyMTkyOyI+
Ci08IUVOVElUWSBTaG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ij4KLTwhRU5USVRZIGRhcnIgIiYj
eDIxOTM7Ij4KLTwhRU5USVRZIGRvd25hcnJvdyAiJiN4MjE5MzsiPgotPCFFTlRJVFkgRG93bkFy
cm93ICImI3gyMTkzOyI+Ci08IUVOVElUWSBTaG9ydERvd25BcnJvdyAiJiN4MjE5MzsiPgotPCFF
TlRJVFkgaGFyciAiJiN4MjE5NDsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3cgIiYjeDIxOTQ7
Ij4KLTwhRU5USVRZIExlZnRSaWdodEFycm93ICImI3gyMTk0OyI+Ci08IUVOVElUWSB2YXJyICIm
I3gyMTk1OyI+Ci08IUVOVElUWSB1cGRvd25hcnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgVXBE
b3duQXJyb3cgIiYjeDIxOTU7Ij4KLTwhRU5USVRZIG53YXJyICImI3gyMTk2OyI+Ci08IUVOVElU
WSBVcHBlckxlZnRBcnJvdyAiJiN4MjE5NjsiPgotPCFFTlRJVFkgbndhcnJvdyAiJiN4MjE5Njsi
PgotPCFFTlRJVFkgbmVhcnIgIiYjeDIxOTc7Ij4KLTwhRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAi
JiN4MjE5NzsiPgotPCFFTlRJVFkgbmVhcnJvdyAiJiN4MjE5NzsiPgotPCFFTlRJVFkgc2VhcnIg
IiYjeDIxOTg7Ij4KLTwhRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ij4KLTwhRU5USVRZIExvd2Vy
UmlnaHRBcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJVFkgc3dhcnIgIiYjeDIxOTk7Ij4KLTwhRU5U
SVRZIHN3YXJyb3cgIiYjeDIxOTk7Ij4KLTwhRU5USVRZIExvd2VyTGVmdEFycm93ICImI3gyMTk5
OyI+Ci08IUVOVElUWSBubGFyciAiJiN4MjE5QTsiPgotPCFFTlRJVFkgbmxlZnRhcnJvdyAiJiN4
MjE5QTsiPgotPCFFTlRJVFkgbnJhcnIgIiYjeDIxOUI7Ij4KLTwhRU5USVRZIG5yaWdodGFycm93
ICImI3gyMTlCOyI+Ci08IUVOVElUWSByYXJydyAiJiN4MjE5RDsiPgotPCFFTlRJVFkgcmlnaHRz
cXVpZ2Fycm93ICImI3gyMTlEOyI+Ci08IUVOVElUWSBucmFycncgIiYjeDIxOUQ7JiN4MzM4OyI+
Ci08IUVOVElUWSBMYXJyICImI3gyMTlFOyI+Ci08IUVOVElUWSB0d29oZWFkbGVmdGFycm93ICIm
I3gyMTlFOyI+Ci08IUVOVElUWSBVYXJyICImI3gyMTlGOyI+Ci08IUVOVElUWSBSYXJyICImI3gy
MUEwOyI+Ci08IUVOVElUWSB0d29oZWFkcmlnaHRhcnJvdyAiJiN4MjFBMDsiPgotPCFFTlRJVFkg
RGFyciAiJiN4MjFBMTsiPgotPCFFTlRJVFkgbGFycnRsICImI3gyMUEyOyI+Ci08IUVOVElUWSBs
ZWZ0YXJyb3d0YWlsICImI3gyMUEyOyI+Ci08IUVOVElUWSByYXJydGwgIiYjeDIxQTM7Ij4KLTwh
RU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gyMUEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlQXJyb3cg
IiYjeDIxQTQ7Ij4KLTwhRU5USVRZIG1hcHN0b2xlZnQgIiYjeDIxQTQ7Ij4KLTwhRU5USVRZIFVw
VGVlQXJyb3cgIiYjeDIxQTU7Ij4KLTwhRU5USVRZIG1hcHN0b3VwICImI3gyMUE1OyI+Ci08IUVO
VElUWSBtYXAgIiYjeDIxQTY7Ij4KLTwhRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ij4K
LTwhRU5USVRZIG1hcHN0byAiJiN4MjFBNjsiPgotPCFFTlRJVFkgRG93blRlZUFycm93ICImI3gy
MUE3OyI+Ci08IUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyI+Ci08IUVOVElUWSBsYXJyaGsg
IiYjeDIxQTk7Ij4KLTwhRU5USVRZIGhvb2tsZWZ0YXJyb3cgIiYjeDIxQTk7Ij4KLTwhRU5USVRZ
IHJhcnJoayAiJiN4MjFBQTsiPgotPCFFTlRJVFkgaG9va3JpZ2h0YXJyb3cgIiYjeDIxQUE7Ij4K
LTwhRU5USVRZIGxhcnJscCAiJiN4MjFBQjsiPgotPCFFTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4
MjFBQjsiPgotPCFFTlRJVFkgcmFycmxwICImI3gyMUFDOyI+Ci08IUVOVElUWSBsb29wYXJyb3dy
aWdodCAiJiN4MjFBQzsiPgotPCFFTlRJVFkgaGFycncgIiYjeDIxQUQ7Ij4KLTwhRU5USVRZIGxl
ZnRyaWdodHNxdWlnYXJyb3cgIiYjeDIxQUQ7Ij4KLTwhRU5USVRZIG5oYXJyICImI3gyMUFFOyI+
Ci08IUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ij4KLTwhRU5USVRZIGxzaCAiJiN4
MjFCMDsiPgotPCFFTlRJVFkgTHNoICImI3gyMUIwOyI+Ci08IUVOVElUWSByc2ggIiYjeDIxQjE7
Ij4KLTwhRU5USVRZIFJzaCAiJiN4MjFCMTsiPgotPCFFTlRJVFkgbGRzaCAiJiN4MjFCMjsiPgot
PCFFTlRJVFkgcmRzaCAiJiN4MjFCMzsiPgotPCFFTlRJVFkgY3JhcnIgIiYjeDIxQjU7Ij4KLTwh
RU5USVRZIGN1bGFyciAiJiN4MjFCNjsiPgotPCFFTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIx
QjY7Ij4KLTwhRU5USVRZIGN1cmFyciAiJiN4MjFCNzsiPgotPCFFTlRJVFkgY3VydmVhcnJvd3Jp
Z2h0ICImI3gyMUI3OyI+Ci08IUVOVElUWSBvbGFyciAiJiN4MjFCQTsiPgotPCFFTlRJVFkgY2ly
Y2xlYXJyb3dsZWZ0ICImI3gyMUJBOyI+Ci08IUVOVElUWSBvcmFyciAiJiN4MjFCQjsiPgotPCFF
TlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiPgotPCFFTlRJVFkgbGhhcnUgIiYjeDIx
QkM7Ij4KLTwhRU5USVRZIExlZnRWZWN0b3IgIiYjeDIxQkM7Ij4KLTwhRU5USVRZIGxlZnRoYXJw
b29udXAgIiYjeDIxQkM7Ij4KLTwhRU5USVRZIGxoYXJkICImI3gyMUJEOyI+Ci08IUVOVElUWSBs
ZWZ0aGFycG9vbmRvd24gIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gy
MUJEOyI+Ci08IUVOVElUWSB1aGFyciAiJiN4MjFCRTsiPgotPCFFTlRJVFkgdXBoYXJwb29ucmln
aHQgIiYjeDIxQkU7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ij4KLTwhRU5U
SVRZIHVoYXJsICImI3gyMUJGOyI+Ci08IUVOVElUWSB1cGhhcnBvb25sZWZ0ICImI3gyMUJGOyI+
Ci08IUVOVElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHJoYXJ1ICImI3gy
MUMwOyI+Ci08IUVOVElUWSBSaWdodFZlY3RvciAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmlnaHRo
YXJwb29udXAgIiYjeDIxQzA7Ij4KLTwhRU5USVRZIHJoYXJkICImI3gyMUMxOyI+Ci08IUVOVElU
WSByaWdodGhhcnBvb25kb3duICImI3gyMUMxOyI+Ci08IUVOVElUWSBEb3duUmlnaHRWZWN0b3Ig
IiYjeDIxQzE7Ij4KLTwhRU5USVRZIGRoYXJyICImI3gyMUMyOyI+Ci08IUVOVElUWSBSaWdodERv
d25WZWN0b3IgIiYjeDIxQzI7Ij4KLTwhRU5USVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7
Ij4KLTwhRU5USVRZIGRoYXJsICImI3gyMUMzOyI+Ci08IUVOVElUWSBMZWZ0RG93blZlY3RvciAi
JiN4MjFDMzsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyI+Ci08IUVOVElU
WSBybGFyciAiJiN4MjFDNDsiPgotPCFFTlRJVFkgcmlnaHRsZWZ0YXJyb3dzICImI3gyMUM0OyI+
Ci08IUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyI+Ci08IUVOVElUWSB1ZGFy
ciAiJiN4MjFDNTsiPgotPCFFTlRJVFkgVXBBcnJvd0Rvd25BcnJvdyAiJiN4MjFDNTsiPgotPCFF
TlRJVFkgbHJhcnIgIiYjeDIxQzY7Ij4KLTwhRU5USVRZIGxlZnRyaWdodGFycm93cyAiJiN4MjFD
NjsiPgotPCFFTlRJVFkgTGVmdEFycm93UmlnaHRBcnJvdyAiJiN4MjFDNjsiPgotPCFFTlRJVFkg
bGxhcnIgIiYjeDIxQzc7Ij4KLTwhRU5USVRZIGxlZnRsZWZ0YXJyb3dzICImI3gyMUM3OyI+Ci08
IUVOVElUWSB1dWFyciAiJiN4MjFDODsiPgotPCFFTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsi
PgotPCFFTlRJVFkgcnJhcnIgIiYjeDIxQzk7Ij4KLTwhRU5USVRZIHJpZ2h0cmlnaHRhcnJvd3Mg
IiYjeDIxQzk7Ij4KLTwhRU5USVRZIGRkYXJyICImI3gyMUNBOyI+Ci08IUVOVElUWSBkb3duZG93
bmFycm93cyAiJiN4MjFDQTsiPgotPCFFTlRJVFkgbHJoYXIgIiYjeDIxQ0I7Ij4KLTwhRU5USVRZ
IFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0aGFycG9v
bnMgIiYjeDIxQ0I7Ij4KLTwhRU5USVRZIHJsaGFyICImI3gyMUNDOyI+Ci08IUVOVElUWSByaWdo
dGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiPgotPCFFTlRJVFkgRXF1aWxpYnJpdW0gIiYjeDIxQ0M7
Ij4KLTwhRU5USVRZIG5sQXJyICImI3gyMUNEOyI+Ci08IUVOVElUWSBuTGVmdGFycm93ICImI3gy
MUNEOyI+Ci08IUVOVElUWSBuaEFyciAiJiN4MjFDRTsiPgotPCFFTlRJVFkgbkxlZnRyaWdodGFy
cm93ICImI3gyMUNFOyI+Ci08IUVOVElUWSBuckFyciAiJiN4MjFDRjsiPgotPCFFTlRJVFkgblJp
Z2h0YXJyb3cgIiYjeDIxQ0Y7Ij4KLTwhRU5USVRZIGxBcnIgIiYjeDIxRDA7Ij4KLTwhRU5USVRZ
IExlZnRhcnJvdyAiJiN4MjFEMDsiPgotPCFFTlRJVFkgRG91YmxlTGVmdEFycm93ICImI3gyMUQw
OyI+Ci08IUVOVElUWSB1QXJyICImI3gyMUQxOyI+Ci08IUVOVElUWSBVcGFycm93ICImI3gyMUQx
OyI+Ci08IUVOVElUWSBEb3VibGVVcEFycm93ICImI3gyMUQxOyI+Ci08IUVOVElUWSByQXJyICIm
I3gyMUQyOyI+Ci08IUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyI+Ci08IUVOVElUWSBJbXBs
aWVzICImI3gyMUQyOyI+Ci08IUVOVElUWSBEb3VibGVSaWdodEFycm93ICImI3gyMUQyOyI+Ci08
IUVOVElUWSBkQXJyICImI3gyMUQzOyI+Ci08IUVOVElUWSBEb3duYXJyb3cgIiYjeDIxRDM7Ij4K
LTwhRU5USVRZIERvdWJsZURvd25BcnJvdyAiJiN4MjFEMzsiPgotPCFFTlRJVFkgaEFyciAiJiN4
MjFENDsiPgotPCFFTlRJVFkgTGVmdHJpZ2h0YXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIERv
dWJsZUxlZnRSaWdodEFycm93ICImI3gyMUQ0OyI+Ci08IUVOVElUWSBpZmYgIiYjeDIxRDQ7Ij4K
LTwhRU5USVRZIHZBcnIgIiYjeDIxRDU7Ij4KLTwhRU5USVRZIFVwZG93bmFycm93ICImI3gyMUQ1
OyI+Ci08IUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiPgotPCFFTlRJVFkgbndB
cnIgIiYjeDIxRDY7Ij4KLTwhRU5USVRZIG5lQXJyICImI3gyMUQ3OyI+Ci08IUVOVElUWSBzZUFy
ciAiJiN4MjFEODsiPgotPCFFTlRJVFkgc3dBcnIgIiYjeDIxRDk7Ij4KLTwhRU5USVRZIGxBYXJy
ICImI3gyMURBOyI+Ci08IUVOVElUWSBMbGVmdGFycm93ICImI3gyMURBOyI+Ci08IUVOVElUWSBy
QWFyciAiJiN4MjFEQjsiPgotPCFFTlRJVFkgUnJpZ2h0YXJyb3cgIiYjeDIxREI7Ij4KLTwhRU5U
SVRZIHppZ3JhcnIgIiYjeDIxREQ7Ij4KLTwhRU5USVRZIGxhcnJiICImI3gyMUU0OyI+Ci08IUVO
VElUWSBMZWZ0QXJyb3dCYXIgIiYjeDIxRTQ7Ij4KLTwhRU5USVRZIHJhcnJiICImI3gyMUU1OyI+
Ci08IUVOVElUWSBSaWdodEFycm93QmFyICImI3gyMUU1OyI+Ci08IUVOVElUWSBkdWFyciAiJiN4
MjFGNTsiPgotPCFFTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiPgotPCFFTlRJVFkg
bG9hcnIgIiYjeDIxRkQ7Ij4KLTwhRU5USVRZIHJvYXJyICImI3gyMUZFOyI+Ci08IUVOVElUWSBo
b2FyciAiJiN4MjFGRjsiPgotPCFFTlRJVFkgZm9yYWxsICImI3gyMjAwOyI+Ci08IUVOVElUWSBG
b3JBbGwgIiYjeDIyMDA7Ij4KLTwhRU5USVRZIGNvbXAgIiYjeDIyMDE7Ij4KLTwhRU5USVRZIGNv
bXBsZW1lbnQgIiYjeDIyMDE7Ij4KLTwhRU5USVRZIHBhcnQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZ
IFBhcnRpYWxEICImI3gyMjAyOyI+Ci08IUVOVElUWSBucGFydCAiJiN4MjIwMjsmI3gzMzg7Ij4K
LTwhRU5USVRZIGV4aXN0ICImI3gyMjAzOyI+Ci08IUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ij4K
LTwhRU5USVRZIG5leGlzdCAiJiN4MjIwNDsiPgotPCFFTlRJVFkgTm90RXhpc3RzICImI3gyMjA0
OyI+Ci08IUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyI+Ci08IUVOVElUWSBlbXB0eSAiJiN4MjIw
NTsiPgotPCFFTlRJVFkgZW1wdHlzZXQgIiYjeDIyMDU7Ij4KLTwhRU5USVRZIGVtcHR5diAiJiN4
MjIwNTsiPgotPCFFTlRJVFkgdmFybm90aGluZyAiJiN4MjIwNTsiPgotPCFFTlRJVFkgbmFibGEg
IiYjeDIyMDc7Ij4KLTwhRU5USVRZIERlbCAiJiN4MjIwNzsiPgotPCFFTlRJVFkgaXNpbiAiJiN4
MjIwODsiPgotPCFFTlRJVFkgaXNpbnYgIiYjeDIyMDg7Ij4KLTwhRU5USVRZIEVsZW1lbnQgIiYj
eDIyMDg7Ij4KLTwhRU5USVRZIGluICImI3gyMjA4OyI+Ci08IUVOVElUWSBub3RpbiAiJiN4MjIw
OTsiPgotPCFFTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiPgotPCFFTlRJVFkgbm90aW52YSAi
JiN4MjIwOTsiPgotPCFFTlRJVFkgbml2ICImI3gyMjBCOyI+Ci08IUVOVElUWSBSZXZlcnNlRWxl
bWVudCAiJiN4MjIwQjsiPgotPCFFTlRJVFkgbmkgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFN1Y2hU
aGF0ICImI3gyMjBCOyI+Ci08IUVOVElUWSBub3RuaSAiJiN4MjIwQzsiPgotPCFFTlRJVFkgbm90
bml2YSAiJiN4MjIwQzsiPgotPCFFTlRJVFkgTm90UmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEM7Ij4K
LTwhRU5USVRZIHByb2QgIiYjeDIyMEY7Ij4KLTwhRU5USVRZIFByb2R1Y3QgIiYjeDIyMEY7Ij4K
LTwhRU5USVRZIGNvcHJvZCAiJiN4MjIxMDsiPgotPCFFTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEw
OyI+Ci08IUVOVElUWSBzdW0gIiYjeDIyMTE7Ij4KLTwhRU5USVRZIFN1bSAiJiN4MjIxMTsiPgot
PCFFTlRJVFkgbWludXMgIiYjeDIyMTI7Ij4KLTwhRU5USVRZIG1ucGx1cyAiJiN4MjIxMzsiPgot
PCFFTlRJVFkgbXAgIiYjeDIyMTM7Ij4KLTwhRU5USVRZIE1pbnVzUGx1cyAiJiN4MjIxMzsiPgot
PCFFTlRJVFkgcGx1c2RvICImI3gyMjE0OyI+Ci08IUVOVElUWSBkb3RwbHVzICImI3gyMjE0OyI+
Ci08IUVOVElUWSBzZXRtbiAiJiN4MjIxNjsiPgotPCFFTlRJVFkgc2V0bWludXMgIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIEJhY2tzbGFzaCAiJiN4MjIxNjsiPgotPCFFTlRJVFkgc3NldG1uICImI3gy
MjE2OyI+Ci08IUVOVElUWSBzbWFsbHNldG1pbnVzICImI3gyMjE2OyI+Ci08IUVOVElUWSBsb3dh
c3QgIiYjeDIyMTc7Ij4KLTwhRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiPgotPCFFTlRJVFkgU21h
bGxDaXJjbGUgIiYjeDIyMTg7Ij4KLTwhRU5USVRZIHJhZGljICImI3gyMjFBOyI+Ci08IUVOVElU
WSBTcXJ0ICImI3gyMjFBOyI+Ci08IUVOVElUWSBwcm9wICImI3gyMjFEOyI+Ci08IUVOVElUWSBw
cm9wdG8gIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIFByb3BvcnRpb25hbCAiJiN4MjIxRDsiPgotPCFF
TlRJVFkgdnByb3AgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHZhcnByb3B0byAiJiN4MjIxRDsiPgot
PCFFTlRJVFkgaW5maW4gIiYjeDIyMUU7Ij4KLTwhRU5USVRZIGFuZ3J0ICImI3gyMjFGOyI+Ci08
IUVOVElUWSBhbmcgIiYjeDIyMjA7Ij4KLTwhRU5USVRZIGFuZ2xlICImI3gyMjIwOyI+Ci08IUVO
VElUWSBuYW5nICImI3gyMjIwOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGFuZ21zZCAiJiN4MjIyMTsi
PgotPCFFTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiPgotPCFFTlRJVFkgYW5nc3BoICIm
I3gyMjIyOyI+Ci08IUVOVElUWSBtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIFZlcnRpY2FsQmFy
ICImI3gyMjIzOyI+Ci08IUVOVElUWSBzbWlkICImI3gyMjIzOyI+Ci08IUVOVElUWSBzaG9ydG1p
ZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgbm1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgTm90VmVy
dGljYWxCYXIgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIG5zbWlkICImI3gyMjI0OyI+Ci08IUVOVElU
WSBuc2hvcnRtaWQgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIHBhciAiJiN4MjIyNTsiPgotPCFFTlRJ
VFkgcGFyYWxsZWwgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gy
MjI1OyI+Ci08IUVOVElUWSBzcGFyICImI3gyMjI1OyI+Ci08IUVOVElUWSBzaG9ydHBhcmFsbGVs
ICImI3gyMjI1OyI+Ci08IUVOVElUWSBucGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBucGFyYWxs
ZWwgIiYjeDIyMjY7Ij4KLTwhRU5USVRZIE5vdERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI2OyI+
Ci08IUVOVElUWSBuc3BhciAiJiN4MjIyNjsiPgotPCFFTlRJVFkgbnNob3J0cGFyYWxsZWwgIiYj
eDIyMjY7Ij4KLTwhRU5USVRZIGFuZCAiJiN4MjIyNzsiPgotPCFFTlRJVFkgd2VkZ2UgIiYjeDIy
Mjc7Ij4KLTwhRU5USVRZIG9yICImI3gyMjI4OyI+Ci08IUVOVElUWSB2ZWUgIiYjeDIyMjg7Ij4K
LTwhRU5USVRZIGNhcCAiJiN4MjIyOTsiPgotPCFFTlRJVFkgY2FwcyAiJiN4MjIyOTsmI3hGRTAw
OyI+Ci08IUVOVElUWSBjdXAgIiYjeDIyMkE7Ij4KLTwhRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4
RkUwMDsiPgotPCFFTlRJVFkgaW50ICImI3gyMjJCOyI+Ci08IUVOVElUWSBJbnRlZ3JhbCAiJiN4
MjIyQjsiPgotPCFFTlRJVFkgSW50ICImI3gyMjJDOyI+Ci08IUVOVElUWSB0aW50ICImI3gyMjJE
OyI+Ci08IUVOVElUWSBpaWludCAiJiN4MjIyRDsiPgotPCFFTlRJVFkgY29uaW50ICImI3gyMjJF
OyI+Ci08IUVOVElUWSBvaW50ICImI3gyMjJFOyI+Ci08IUVOVElUWSBDb250b3VySW50ZWdyYWwg
IiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbmludCAiJiN4MjIyRjsiPgotPCFFTlRJVFkgRG91Ymxl
Q29udG91ckludGVncmFsICImI3gyMjJGOyI+Ci08IUVOVElUWSBDY29uaW50ICImI3gyMjMwOyI+
Ci08IUVOVElUWSBjd2ludCAiJiN4MjIzMTsiPgotPCFFTlRJVFkgY3djb25pbnQgIiYjeDIyMzI7
Ij4KLTwhRU5USVRZIENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMjsiPgotPCFFTlRJ
VFkgYXdjb25pbnQgIiYjeDIyMzM7Ij4KLTwhRU5USVRZIENvdW50ZXJDbG9ja3dpc2VDb250b3Vy
SW50ZWdyYWwgIiYjeDIyMzM7Ij4KLTwhRU5USVRZIHRoZXJlNCAiJiN4MjIzNDsiPgotPCFFTlRJ
VFkgdGhlcmVmb3JlICImI3gyMjM0OyI+Ci08IUVOVElUWSBUaGVyZWZvcmUgIiYjeDIyMzQ7Ij4K
LTwhRU5USVRZIGJlY2F1cyAiJiN4MjIzNTsiPgotPCFFTlRJVFkgYmVjYXVzZSAiJiN4MjIzNTsi
PgotPCFFTlRJVFkgQmVjYXVzZSAiJiN4MjIzNTsiPgotPCFFTlRJVFkgcmF0aW8gIiYjeDIyMzY7
Ij4KLTwhRU5USVRZIENvbG9uICImI3gyMjM3OyI+Ci08IUVOVElUWSBQcm9wb3J0aW9uICImI3gy
MjM3OyI+Ci08IUVOVElUWSBtaW51c2QgIiYjeDIyMzg7Ij4KLTwhRU5USVRZIGRvdG1pbnVzICIm
I3gyMjM4OyI+Ci08IUVOVElUWSBtRERvdCAiJiN4MjIzQTsiPgotPCFFTlRJVFkgaG9tdGh0ICIm
I3gyMjNCOyI+Ci08IUVOVElUWSBzaW0gIiYjeDIyM0M7Ij4KLTwhRU5USVRZIFRpbGRlICImI3gy
MjNDOyI+Ci08IUVOVElUWSB0aGtzaW0gIiYjeDIyM0M7Ij4KLTwhRU5USVRZIHRoaWNrc2ltICIm
I3gyMjNDOyI+Ci08IUVOVElUWSBudnNpbSAiJiN4MjIzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBi
c2ltICImI3gyMjNEOyI+Ci08IUVOVElUWSBiYWNrc2ltICImI3gyMjNEOyI+Ci08IUVOVElUWSBy
YWNlICImI3gyMjNEOyYjeDMzMTsiPgotPCFFTlRJVFkgYWMgIiYjeDIyM0U7Ij4KLTwhRU5USVRZ
IG1zdHBvcyAiJiN4MjIzRTsiPgotPCFFTlRJVFkgYWNFICImI3gyMjNFOyYjeDMzMzsiPgotPCFF
TlRJVFkgYWNkICImI3gyMjNGOyI+Ci08IUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ij4KLTwhRU5U
SVRZIFZlcnRpY2FsVGlsZGUgIiYjeDIyNDA7Ij4KLTwhRU5USVRZIHdyICImI3gyMjQwOyI+Ci08
IUVOVElUWSBuc2ltICImI3gyMjQxOyI+Ci08IUVOVElUWSBOb3RUaWxkZSAiJiN4MjI0MTsiPgot
PCFFTlRJVFkgZXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgRXF1YWxUaWxkZSAiJiN4MjI0Mjsi
PgotPCFFTlRJVFkgZXFzaW0gIiYjeDIyNDI7Ij4KLTwhRU5USVRZIE5vdEVxdWFsVGlsZGUgIiYj
eDIyNDI7JiN4MzM4OyI+Ci08IUVOVElUWSBuZXNpbSAiJiN4MjI0MjsmI3gzMzg7Ij4KLTwhRU5U
SVRZIHNpbWUgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIFRpbGRlRXF1YWwgIiYjeDIyNDM7Ij4KLTwh
RU5USVRZIHNpbWVxICImI3gyMjQzOyI+Ci08IUVOVElUWSBuc2ltZSAiJiN4MjI0NDsiPgotPCFF
TlRJVFkgbnNpbWVxICImI3gyMjQ0OyI+Ci08IUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0
OyI+Ci08IUVOVElUWSBjb25nICImI3gyMjQ1OyI+Ci08IUVOVElUWSBUaWxkZUZ1bGxFcXVhbCAi
JiN4MjI0NTsiPgotPCFFTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ij4KLTwhRU5USVRZIG5jb25nICIm
I3gyMjQ3OyI+Ci08IUVOVElUWSBOb3RUaWxkZUZ1bGxFcXVhbCAiJiN4MjI0NzsiPgotPCFFTlRJ
VFkgYXN5bXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwICImI3gyMjQ4OyI+Ci08IUVOVElUWSBU
aWxkZVRpbGRlICImI3gyMjQ4OyI+Ci08IUVOVElUWSBhcHByb3ggIiYjeDIyNDg7Ij4KLTwhRU5U
SVRZIHRoa2FwICImI3gyMjQ4OyI+Ci08IUVOVElUWSB0aGlja2FwcHJveCAiJiN4MjI0ODsiPgot
PCFFTlRJVFkgbmFwICImI3gyMjQ5OyI+Ci08IUVOVElUWSBOb3RUaWxkZVRpbGRlICImI3gyMjQ5
OyI+Ci08IUVOVElUWSBuYXBwcm94ICImI3gyMjQ5OyI+Ci08IUVOVElUWSBhcGUgIiYjeDIyNEE7
Ij4KLTwhRU5USVRZIGFwcHJveGVxICImI3gyMjRBOyI+Ci08IUVOVElUWSBhcGlkICImI3gyMjRC
OyI+Ci08IUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ij4KLTwhRU5USVRZIGJjb25nICIm
I3gyMjRDOyI+Ci08IUVOVElUWSBiYWNrY29uZyAiJiN4MjI0QzsiPgotPCFFTlRJVFkgYXN5bXBl
cSAiJiN4MjI0RDsiPgotPCFFTlRJVFkgQ3VwQ2FwICImI3gyMjREOyI+Ci08IUVOVElUWSBudmFw
ICImI3gyMjREOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGJ1bXAgIiYjeDIyNEU7Ij4KLTwhRU5USVRZ
IEh1bXBEb3duSHVtcCAiJiN4MjI0RTsiPgotPCFFTlRJVFkgQnVtcGVxICImI3gyMjRFOyI+Ci08
IUVOVElUWSBOb3RIdW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyI+Ci08IUVOVElUWSBuYnVt
cCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5USVRZIGJ1bXBlICImI3gyMjRGOyI+Ci08IUVOVElU
WSBIdW1wRXF1YWwgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIGJ1bXBlcSAiJiN4MjI0RjsiPgotPCFF
TlRJVFkgbmJ1bXBlICImI3gyMjRGOyYjeDMzODsiPgotPCFFTlRJVFkgTm90SHVtcEVxdWFsICIm
I3gyMjRGOyYjeDMzODsiPgotPCFFTlRJVFkgZXNkb3QgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIERv
dEVxdWFsICImI3gyMjUwOyI+Ci08IUVOVElUWSBkb3RlcSAiJiN4MjI1MDsiPgotPCFFTlRJVFkg
bmVkb3QgIiYjeDIyNTA7JiN4MzM4OyI+Ci08IUVOVElUWSBlRG90ICImI3gyMjUxOyI+Ci08IUVO
VElUWSBkb3RlcWRvdCAiJiN4MjI1MTsiPgotPCFFTlRJVFkgZWZEb3QgIiYjeDIyNTI7Ij4KLTwh
RU5USVRZIGZhbGxpbmdkb3RzZXEgIiYjeDIyNTI7Ij4KLTwhRU5USVRZIGVyRG90ICImI3gyMjUz
OyI+Ci08IUVOVElUWSByaXNpbmdkb3RzZXEgIiYjeDIyNTM7Ij4KLTwhRU5USVRZIGNvbG9uZSAi
JiN4MjI1NDsiPgotPCFFTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiPgotPCFFTlRJVFkgQXNzaWdu
ICImI3gyMjU0OyI+Ci08IUVOVElUWSBlY29sb24gIiYjeDIyNTU7Ij4KLTwhRU5USVRZIGVxY29s
b24gIiYjeDIyNTU7Ij4KLTwhRU5USVRZIGVjaXIgIiYjeDIyNTY7Ij4KLTwhRU5USVRZIGVxY2ly
YyAiJiN4MjI1NjsiPgotPCFFTlRJVFkgY2lyZSAiJiN4MjI1NzsiPgotPCFFTlRJVFkgY2lyY2Vx
ICImI3gyMjU3OyI+Ci08IUVOVElUWSB3ZWRnZXEgIiYjeDIyNTk7Ij4KLTwhRU5USVRZIHZlZWVx
ICImI3gyMjVBOyI+Ci08IUVOVElUWSB0cmllICImI3gyMjVDOyI+Ci08IUVOVElUWSB0cmlhbmds
ZXEgIiYjeDIyNUM7Ij4KLTwhRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiPgotPCFFTlRJVFkgcXVl
c3RlcSAiJiN4MjI1RjsiPgotPCFFTlRJVFkgbmUgIiYjeDIyNjA7Ij4KLTwhRU5USVRZIE5vdEVx
dWFsICImI3gyMjYwOyI+Ci08IUVOVElUWSBlcXVpdiAiJiN4MjI2MTsiPgotPCFFTlRJVFkgQ29u
Z3J1ZW50ICImI3gyMjYxOyI+Ci08IUVOVElUWSBibmVxdWl2ICImI3gyMjYxOyYjeDIwRTU7Ij4K
LTwhRU5USVRZIG5lcXVpdiAiJiN4MjI2MjsiPgotPCFFTlRJVFkgTm90Q29uZ3J1ZW50ICImI3gy
MjYyOyI+Ci08IUVOVElUWSBsZSAiJiN4MjI2NDsiPgotPCFFTlRJVFkgbGVxICImI3gyMjY0OyI+
Ci08IUVOVElUWSBudmxlICImI3gyMjY0OyYjeDIwRDI7Ij4KLTwhRU5USVRZIGdlICImI3gyMjY1
OyI+Ci08IUVOVElUWSBHcmVhdGVyRXF1YWwgIiYjeDIyNjU7Ij4KLTwhRU5USVRZIGdlcSAiJiN4
MjI2NTsiPgotPCFFTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyI+Ci08IUVOVElUWSBsRSAi
JiN4MjI2NjsiPgotPCFFTlRJVFkgTGVzc0Z1bGxFcXVhbCAiJiN4MjI2NjsiPgotPCFFTlRJVFkg
bGVxcSAiJiN4MjI2NjsiPgotPCFFTlRJVFkgbmxFICImI3gyMjY2OyYjeDMzODsiPgotPCFFTlRJ
VFkgbmxlcXEgIiYjeDIyNjY7JiN4MzM4OyI+Ci08IUVOVElUWSBnRSAiJiN4MjI2NzsiPgotPCFF
TlRJVFkgR3JlYXRlckZ1bGxFcXVhbCAiJiN4MjI2NzsiPgotPCFFTlRJVFkgZ2VxcSAiJiN4MjI2
NzsiPgotPCFFTlRJVFkgbmdFICImI3gyMjY3OyYjeDMzODsiPgotPCFFTlRJVFkgbmdlcXEgIiYj
eDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyYj
eDMzODsiPgotPCFFTlRJVFkgbG5FICImI3gyMjY4OyI+Ci08IUVOVElUWSBsbmVxcSAiJiN4MjI2
ODsiPgotPCFFTlRJVFkgbHZuRSAiJiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBsdmVydG5l
cXEgIiYjeDIyNjg7JiN4RkUwMDsiPgotPCFFTlRJVFkgZ25FICImI3gyMjY5OyI+Ci08IUVOVElU
WSBnbmVxcSAiJiN4MjI2OTsiPgotPCFFTlRJVFkgZ3ZuRSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08
IUVOVElUWSBndmVydG5lcXEgIiYjeDIyNjk7JiN4RkUwMDsiPgotPCFFTlRJVFkgTHQgIiYjeDIy
NkE7Ij4KLTwhRU5USVRZIE5lc3RlZExlc3NMZXNzICImI3gyMjZBOyI+Ci08IUVOVElUWSBsbCAi
JiN4MjI2QTsiPgotPCFFTlRJVFkgbkx0diAiJiN4MjI2QTsmI3gzMzg7Ij4KLTwhRU5USVRZIE5v
dExlc3NMZXNzICImI3gyMjZBOyYjeDMzODsiPgotPCFFTlRJVFkgbkx0ICImI3gyMjZBOyYjeDIw
RDI7Ij4KLTwhRU5USVRZIEd0ICImI3gyMjZCOyI+Ci08IUVOVElUWSBOZXN0ZWRHcmVhdGVyR3Jl
YXRlciAiJiN4MjI2QjsiPgotPCFFTlRJVFkgZ2cgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIG5HdHYg
IiYjeDIyNkI7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2Qjsm
I3gzMzg7Ij4KLTwhRU5USVRZIG5HdCAiJiN4MjI2QjsmI3gyMEQyOyI+Ci08IUVOVElUWSB0d2l4
dCAiJiN4MjI2QzsiPgotPCFFTlRJVFkgYmV0d2VlbiAiJiN4MjI2QzsiPgotPCFFTlRJVFkgTm90
Q3VwQ2FwICImI3gyMjZEOyI+Ci08IUVOVElUWSBubHQgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIE5v
dExlc3MgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIG5sZXNzICImI3gyMjZFOyI+Ci08IUVOVElUWSBu
Z3QgIiYjeDIyNkY7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ij4KLTwhRU5USVRZ
IG5ndHIgIiYjeDIyNkY7Ij4KLTwhRU5USVRZIG5sZSAiJiN4MjI3MDsiPgotPCFFTlRJVFkgTm90
TGVzc0VxdWFsICImI3gyMjcwOyI+Ci08IUVOVElUWSBubGVxICImI3gyMjcwOyI+Ci08IUVOVElU
WSBuZ2UgIiYjeDIyNzE7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3MTsiPgot
PCFFTlRJVFkgbmdlcSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgbHNpbSAiJiN4MjI3MjsiPgotPCFF
TlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyI+Ci08IUVOVElUWSBsZXNzc2ltICImI3gyMjcyOyI+
Ci08IUVOVElUWSBnc2ltICImI3gyMjczOyI+Ci08IUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJUaWxkZSAiJiN4MjI3MzsiPgotPCFFTlRJVFkgbmxzaW0gIiYjeDIy
NzQ7Ij4KLTwhRU5USVRZIE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiPgotPCFFTlRJVFkgbmdzaW0g
IiYjeDIyNzU7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJUaWxkZSAiJiN4MjI3NTsiPgotPCFFTlRJ
VFkgbGcgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGxlc3NndHIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZ
IExlc3NHcmVhdGVyICImI3gyMjc2OyI+Ci08IUVOVElUWSBnbCAiJiN4MjI3NzsiPgotPCFFTlRJ
VFkgZ3RybGVzcyAiJiN4MjI3NzsiPgotPCFFTlRJVFkgR3JlYXRlckxlc3MgIiYjeDIyNzc7Ij4K
LTwhRU5USVRZIG50bGcgIiYjeDIyNzg7Ij4KLTwhRU5USVRZIE5vdExlc3NHcmVhdGVyICImI3gy
Mjc4OyI+Ci08IUVOVElUWSBudGdsICImI3gyMjc5OyI+Ci08IUVOVElUWSBOb3RHcmVhdGVyTGVz
cyAiJiN4MjI3OTsiPgotPCFFTlRJVFkgcHIgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIFByZWNlZGVz
ICImI3gyMjdBOyI+Ci08IUVOVElUWSBwcmVjICImI3gyMjdBOyI+Ci08IUVOVElUWSBzYyAiJiN4
MjI3QjsiPgotPCFFTlRJVFkgU3VjY2VlZHMgIiYjeDIyN0I7Ij4KLTwhRU5USVRZIHN1Y2MgIiYj
eDIyN0I7Ij4KLTwhRU5USVRZIHByY3VlICImI3gyMjdDOyI+Ci08IUVOVElUWSBQcmVjZWRlc1Ns
YW50RXF1YWwgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIHByZWNjdXJseWVxICImI3gyMjdDOyI+Ci08
IUVOVElUWSBzY2N1ZSAiJiN4MjI3RDsiPgotPCFFTlRJVFkgU3VjY2VlZHNTbGFudEVxdWFsICIm
I3gyMjdEOyI+Ci08IUVOVElUWSBzdWNjY3VybHllcSAiJiN4MjI3RDsiPgotPCFFTlRJVFkgcHJz
aW0gIiYjeDIyN0U7Ij4KLTwhRU5USVRZIHByZWNzaW0gIiYjeDIyN0U7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzVGlsZGUgIiYjeDIyN0U7Ij4KLTwhRU5USVRZIHNjc2ltICImI3gyMjdGOyI+Ci08IUVO
VElUWSBzdWNjc2ltICImI3gyMjdGOyI+Ci08IUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdG
OyI+Ci08IUVOVElUWSBOb3RTdWNjZWVkc1RpbGRlICImI3gyMjdGOyYjeDMzODsiPgotPCFFTlRJ
VFkgbnByICImI3gyMjgwOyI+Ci08IUVOVElUWSBucHJlYyAiJiN4MjI4MDsiPgotPCFFTlRJVFkg
Tm90UHJlY2VkZXMgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5zYyAiJiN4MjI4MTsiPgotPCFFTlRJ
VFkgbnN1Y2MgIiYjeDIyODE7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzICImI3gyMjgxOyI+Ci08
IUVOVElUWSBzdWIgIiYjeDIyODI7Ij4KLTwhRU5USVRZIHN1YnNldCAiJiN4MjI4MjsiPgotPCFF
TlRJVFkgdm5zdWIgIiYjeDIyODI7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YnNldCAiJiN4MjI4
MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiPgotPCFF
TlRJVFkgc3VwICImI3gyMjgzOyI+Ci08IUVOVElUWSBzdXBzZXQgIiYjeDIyODM7Ij4KLTwhRU5U
SVRZIFN1cGVyc2V0ICImI3gyMjgzOyI+Ci08IUVOVElUWSB2bnN1cCAiJiN4MjI4MzsmI3gyMEQy
OyI+Ci08IUVOVElUWSBuc3Vwc2V0ICImI3gyMjgzOyYjeDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1
cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ij4KLTwhRU5USVRZIG5zdWIgIiYjeDIyODQ7Ij4KLTwh
RU5USVRZIG5zdXAgIiYjeDIyODU7Ij4KLTwhRU5USVRZIHN1YmUgIiYjeDIyODY7Ij4KLTwhRU5U
SVRZIFN1YnNldEVxdWFsICImI3gyMjg2OyI+Ci08IUVOVElUWSBzdWJzZXRlcSAiJiN4MjI4Njsi
PgotPCFFTlRJVFkgc3VwZSAiJiN4MjI4NzsiPgotPCFFTlRJVFkgc3Vwc2V0ZXEgIiYjeDIyODc7
Ij4KLTwhRU5USVRZIFN1cGVyc2V0RXF1YWwgIiYjeDIyODc7Ij4KLTwhRU5USVRZIG5zdWJlICIm
I3gyMjg4OyI+Ci08IUVOVElUWSBuc3Vic2V0ZXEgIiYjeDIyODg7Ij4KLTwhRU5USVRZIE5vdFN1
YnNldEVxdWFsICImI3gyMjg4OyI+Ci08IUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiPgotPCFFTlRJ
VFkgbnN1cHNldGVxICImI3gyMjg5OyI+Ci08IUVOVElUWSBOb3RTdXBlcnNldEVxdWFsICImI3gy
Mjg5OyI+Ci08IUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiPgotPCFFTlRJVFkgc3Vic2V0bmVxICIm
I3gyMjhBOyI+Ci08IUVOVElUWSB2c3VibmUgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkg
dmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ij4KLTwhRU5USVRZIHN1cG5lICImI3gyMjhC
OyI+Ci08IUVOVElUWSBzdXBzZXRuZXEgIiYjeDIyOEI7Ij4KLTwhRU5USVRZIHZzdXBuZSAiJiN4
MjI4QjsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXEgIiYjeDIyOEI7JiN4RkUwMDsi
PgotPCFFTlRJVFkgY3VwZG90ICImI3gyMjhEOyI+Ci08IUVOVElUWSB1cGx1cyAiJiN4MjI4RTsi
PgotPCFFTlRJVFkgVW5pb25QbHVzICImI3gyMjhFOyI+Ci08IUVOVElUWSBzcXN1YiAiJiN4MjI4
RjsiPgotPCFFTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyI+Ci08IUVOVElUWSBzcXN1YnNl
dCAiJiN4MjI4RjsiPgotPCFFTlRJVFkgTm90U3F1YXJlU3Vic2V0ICImI3gyMjhGOyYjeDMzODsi
PgotPCFFTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ij4KLTwhRU5USVRZIFNxdWFyZVN1cGVyc2V0ICIm
I3gyMjkwOyI+Ci08IUVOVElUWSBzcXN1cHNldCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgTm90U3F1
YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyI+Ci08IUVOVElUWSBzcXN1YmUgIiYjeDIyOTE7
Ij4KLTwhRU5USVRZIFNxdWFyZVN1YnNldEVxdWFsICImI3gyMjkxOyI+Ci08IUVOVElUWSBzcXN1
YnNldGVxICImI3gyMjkxOyI+Ci08IUVOVElUWSBzcXN1cGUgIiYjeDIyOTI7Ij4KLTwhRU5USVRZ
IFNxdWFyZVN1cGVyc2V0RXF1YWwgIiYjeDIyOTI7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ZXEgIiYj
eDIyOTI7Ij4KLTwhRU5USVRZIHNxY2FwICImI3gyMjkzOyI+Ci08IUVOVElUWSBTcXVhcmVJbnRl
cnNlY3Rpb24gIiYjeDIyOTM7Ij4KLTwhRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAwOyI+
Ci08IUVOVElUWSBzcWN1cCAiJiN4MjI5NDsiPgotPCFFTlRJVFkgU3F1YXJlVW5pb24gIiYjeDIy
OTQ7Ij4KLTwhRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyI+Ci08IUVOVElUWSBvcGx1
cyAiJiN4MjI5NTsiPgotPCFFTlRJVFkgQ2lyY2xlUGx1cyAiJiN4MjI5NTsiPgotPCFFTlRJVFkg
b21pbnVzICImI3gyMjk2OyI+Ci08IUVOVElUWSBDaXJjbGVNaW51cyAiJiN4MjI5NjsiPgotPCFF
TlRJVFkgb3RpbWVzICImI3gyMjk3OyI+Ci08IUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5Nzsi
PgotPCFFTlRJVFkgb3NvbCAiJiN4MjI5ODsiPgotPCFFTlRJVFkgb2RvdCAiJiN4MjI5OTsiPgot
PCFFTlRJVFkgQ2lyY2xlRG90ICImI3gyMjk5OyI+Ci08IUVOVElUWSBvY2lyICImI3gyMjlBOyI+
Ci08IUVOVElUWSBjaXJjbGVkY2lyYyAiJiN4MjI5QTsiPgotPCFFTlRJVFkgb2FzdCAiJiN4MjI5
QjsiPgotPCFFTlRJVFkgY2lyY2xlZGFzdCAiJiN4MjI5QjsiPgotPCFFTlRJVFkgb2Rhc2ggIiYj
eDIyOUQ7Ij4KLTwhRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlEOyI+Ci08IUVOVElUWSBwbHVz
YiAiJiN4MjI5RTsiPgotPCFFTlRJVFkgYm94cGx1cyAiJiN4MjI5RTsiPgotPCFFTlRJVFkgbWlu
dXNiICImI3gyMjlGOyI+Ci08IUVOVElUWSBib3htaW51cyAiJiN4MjI5RjsiPgotPCFFTlRJVFkg
dGltZXNiICImI3gyMkEwOyI+Ci08IUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiPgotPCFFTlRJ
VFkgc2RvdGIgIiYjeDIyQTE7Ij4KLTwhRU5USVRZIGRvdHNxdWFyZSAiJiN4MjJBMTsiPgotPCFF
TlRJVFkgdmRhc2ggIiYjeDIyQTI7Ij4KLTwhRU5USVRZIFJpZ2h0VGVlICImI3gyMkEyOyI+Ci08
IUVOVElUWSBkYXNodiAiJiN4MjJBMzsiPgotPCFFTlRJVFkgTGVmdFRlZSAiJiN4MjJBMzsiPgot
PCFFTlRJVFkgdG9wICImI3gyMkE0OyI+Ci08IUVOVElUWSBEb3duVGVlICImI3gyMkE0OyI+Ci08
IUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ij4KLTwhRU5USVRZIGJvdCAiJiN4MjJBNTsiPgotPCFF
TlRJVFkgcGVycCAiJiN4MjJBNTsiPgotPCFFTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ij4KLTwhRU5U
SVRZIG1vZGVscyAiJiN4MjJBNzsiPgotPCFFTlRJVFkgdkRhc2ggIiYjeDIyQTg7Ij4KLTwhRU5U
SVRZIERvdWJsZVJpZ2h0VGVlICImI3gyMkE4OyI+Ci08IUVOVElUWSBWZGFzaCAiJiN4MjJBOTsi
PgotPCFFTlRJVFkgVnZkYXNoICImI3gyMkFBOyI+Ci08IUVOVElUWSBWRGFzaCAiJiN4MjJBQjsi
PgotPCFFTlRJVFkgbnZkYXNoICImI3gyMkFDOyI+Ci08IUVOVElUWSBudkRhc2ggIiYjeDIyQUQ7
Ij4KLTwhRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiPgotPCFFTlRJVFkgblZEYXNoICImI3gyMkFG
OyI+Ci08IUVOVElUWSBwcnVyZWwgIiYjeDIyQjA7Ij4KLTwhRU5USVRZIHZsdHJpICImI3gyMkIy
OyI+Ci08IUVOVElUWSB2YXJ0cmlhbmdsZWxlZnQgIiYjeDIyQjI7Ij4KLTwhRU5USVRZIExlZnRU
cmlhbmdsZSAiJiN4MjJCMjsiPgotPCFFTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ij4KLTwhRU5USVRZ
IHZhcnRyaWFuZ2xlcmlnaHQgIiYjeDIyQjM7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGUgIiYj
eDIyQjM7Ij4KLTwhRU5USVRZIGx0cmllICImI3gyMkI0OyI+Ci08IUVOVElUWSB0cmlhbmdsZWxl
ZnRlcSAiJiN4MjJCNDsiPgotPCFFTlRJVFkgTGVmdFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjQ7Ij4K
LTwhRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgcnRyaWUgIiYj
eDIyQjU7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcmlnaHRlcSAiJiN4MjJCNTsiPgotPCFFTlRJVFkg
UmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyI+Ci08IUVOVElUWSBudnJ0cmllICImI3gyMkI1
OyYjeDIwRDI7Ij4KLTwhRU5USVRZIG9yaWdvZiAiJiN4MjJCNjsiPgotPCFFTlRJVFkgaW1vZiAi
JiN4MjJCNzsiPgotPCFFTlRJVFkgbXVtYXAgIiYjeDIyQjg7Ij4KLTwhRU5USVRZIG11bHRpbWFw
ICImI3gyMkI4OyI+Ci08IUVOVElUWSBoZXJjb24gIiYjeDIyQjk7Ij4KLTwhRU5USVRZIGludGNh
bCAiJiN4MjJCQTsiPgotPCFFTlRJVFkgaW50ZXJjYWwgIiYjeDIyQkE7Ij4KLTwhRU5USVRZIHZl
ZWJhciAiJiN4MjJCQjsiPgotPCFFTlRJVFkgYmFydmVlICImI3gyMkJEOyI+Ci08IUVOVElUWSBh
bmdydHZiICImI3gyMkJFOyI+Ci08IUVOVElUWSBscnRyaSAiJiN4MjJCRjsiPgotPCFFTlRJVFkg
eHdlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSBXZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkg
Ymlnd2VkZ2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIHh2ZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZ
IFZlZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgYmlndmVlICImI3gyMkMxOyI+Ci08IUVOVElUWSB4
Y2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSBJbnRlcnNlY3Rpb24gIiYjeDIyQzI7Ij4KLTwhRU5U
SVRZIGJpZ2NhcCAiJiN4MjJDMjsiPgotPCFFTlRJVFkgeGN1cCAiJiN4MjJDMzsiPgotPCFFTlRJ
VFkgVW5pb24gIiYjeDIyQzM7Ij4KLTwhRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiPgotPCFFTlRJ
VFkgZGlhbSAiJiN4MjJDNDsiPgotPCFFTlRJVFkgZGlhbW9uZCAiJiN4MjJDNDsiPgotPCFFTlRJ
VFkgRGlhbW9uZCAiJiN4MjJDNDsiPgotPCFFTlRJVFkgc2RvdCAiJiN4MjJDNTsiPgotPCFFTlRJ
VFkgc3N0YXJmICImI3gyMkM2OyI+Ci08IUVOVElUWSBTdGFyICImI3gyMkM2OyI+Ci08IUVOVElU
WSBkaXZvbnggIiYjeDIyQzc7Ij4KLTwhRU5USVRZIGRpdmlkZW9udGltZXMgIiYjeDIyQzc7Ij4K
LTwhRU5USVRZIGJvd3RpZSAiJiN4MjJDODsiPgotPCFFTlRJVFkgbHRpbWVzICImI3gyMkM5OyI+
Ci08IUVOVElUWSBydGltZXMgIiYjeDIyQ0E7Ij4KLTwhRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsi
PgotPCFFTlRJVFkgbGVmdHRocmVldGltZXMgIiYjeDIyQ0I7Ij4KLTwhRU5USVRZIHJ0aHJlZSAi
JiN4MjJDQzsiPgotPCFFTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyI+Ci08IUVOVElU
WSBic2ltZSAiJiN4MjJDRDsiPgotPCFFTlRJVFkgYmFja3NpbWVxICImI3gyMkNEOyI+Ci08IUVO
VElUWSBjdXZlZSAiJiN4MjJDRTsiPgotPCFFTlRJVFkgY3VybHl2ZWUgIiYjeDIyQ0U7Ij4KLTwh
RU5USVRZIGN1d2VkICImI3gyMkNGOyI+Ci08IUVOVElUWSBjdXJseXdlZGdlICImI3gyMkNGOyI+
Ci08IUVOVElUWSBTdWIgIiYjeDIyRDA7Ij4KLTwhRU5USVRZIFN1YnNldCAiJiN4MjJEMDsiPgot
PCFFTlRJVFkgU3VwICImI3gyMkQxOyI+Ci08IUVOVElUWSBTdXBzZXQgIiYjeDIyRDE7Ij4KLTwh
RU5USVRZIENhcCAiJiN4MjJEMjsiPgotPCFFTlRJVFkgQ3VwICImI3gyMkQzOyI+Ci08IUVOVElU
WSBmb3JrICImI3gyMkQ0OyI+Ci08IUVOVElUWSBwaXRjaGZvcmsgIiYjeDIyRDQ7Ij4KLTwhRU5U
SVRZIGVwYXIgIiYjeDIyRDU7Ij4KLTwhRU5USVRZIGx0ZG90ICImI3gyMkQ2OyI+Ci08IUVOVElU
WSBsZXNzZG90ICImI3gyMkQ2OyI+Ci08IUVOVElUWSBndGRvdCAiJiN4MjJENzsiPgotPCFFTlRJ
VFkgZ3RyZG90ICImI3gyMkQ3OyI+Ci08IUVOVElUWSBMbCAiJiN4MjJEODsiPgotPCFFTlRJVFkg
bkxsICImI3gyMkQ4OyYjeDMzODsiPgotPCFFTlRJVFkgR2cgIiYjeDIyRDk7Ij4KLTwhRU5USVRZ
IGdnZyAiJiN4MjJEOTsiPgotPCFFTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiPgotPCFFTlRJ
VFkgbGVnICImI3gyMkRBOyI+Ci08IUVOVElUWSBMZXNzRXF1YWxHcmVhdGVyICImI3gyMkRBOyI+
Ci08IUVOVElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ij4KLTwhRU5USVRZIGxlc2cgIiYjeDIyREE7
JiN4RkUwMDsiPgotPCFFTlRJVFkgZ2VsICImI3gyMkRCOyI+Ci08IUVOVElUWSBndHJlcWxlc3Mg
IiYjeDIyREI7Ij4KLTwhRU5USVRZIEdyZWF0ZXJFcXVhbExlc3MgIiYjeDIyREI7Ij4KLTwhRU5U
SVRZIGdlc2wgIiYjeDIyREI7JiN4RkUwMDsiPgotPCFFTlRJVFkgY3VlcHIgIiYjeDIyREU7Ij4K
LTwhRU5USVRZIGN1cmx5ZXFwcmVjICImI3gyMkRFOyI+Ci08IUVOVElUWSBjdWVzYyAiJiN4MjJE
RjsiPgotPCFFTlRJVFkgY3VybHllcXN1Y2MgIiYjeDIyREY7Ij4KLTwhRU5USVRZIG5wcmN1ZSAi
JiN4MjJFMDsiPgotPCFFTlRJVFkgTm90UHJlY2VkZXNTbGFudEVxdWFsICImI3gyMkUwOyI+Ci08
IUVOVElUWSBuc2NjdWUgIiYjeDIyRTE7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzU2xhbnRFcXVh
bCAiJiN4MjJFMTsiPgotPCFFTlRJVFkgbnNxc3ViZSAiJiN4MjJFMjsiPgotPCFFTlRJVFkgTm90
U3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ij4KLTwhRU5USVRZIG5zcXN1cGUgIiYjeDIyRTM7
Ij4KLTwhRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0RXF1YWwgIiYjeDIyRTM7Ij4KLTwhRU5USVRZ
IGxuc2ltICImI3gyMkU2OyI+Ci08IUVOVElUWSBnbnNpbSAiJiN4MjJFNzsiPgotPCFFTlRJVFkg
cHJuc2ltICImI3gyMkU4OyI+Ci08IUVOVElUWSBwcmVjbnNpbSAiJiN4MjJFODsiPgotPCFFTlRJ
VFkgc2Nuc2ltICImI3gyMkU5OyI+Ci08IUVOVElUWSBzdWNjbnNpbSAiJiN4MjJFOTsiPgotPCFF
TlRJVFkgbmx0cmkgIiYjeDIyRUE7Ij4KLTwhRU5USVRZIG50cmlhbmdsZWxlZnQgIiYjeDIyRUE7
Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnJ0cmkg
IiYjeDIyRUI7Ij4KLTwhRU5USVRZIG50cmlhbmdsZXJpZ2h0ICImI3gyMkVCOyI+Ci08IUVOVElU
WSBOb3RSaWdodFRyaWFuZ2xlICImI3gyMkVCOyI+Ci08IUVOVElUWSBubHRyaWUgIiYjeDIyRUM7
Ij4KLTwhRU5USVRZIG50cmlhbmdsZWxlZnRlcSAiJiN4MjJFQzsiPgotPCFFTlRJVFkgTm90TGVm
dFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUM7Ij4KLTwhRU5USVRZIG5ydHJpZSAiJiN4MjJFRDsiPgot
PCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHRlcSAiJiN4MjJFRDsiPgotPCFFTlRJVFkgTm90UmlnaHRU
cmlhbmdsZUVxdWFsICImI3gyMkVEOyI+Ci08IUVOVElUWSB2ZWxsaXAgIiYjeDIyRUU7Ij4KLTwh
RU5USVRZIGN0ZG90ICImI3gyMkVGOyI+Ci08IUVOVElUWSB1dGRvdCAiJiN4MjJGMDsiPgotPCFF
TlRJVFkgZHRkb3QgIiYjeDIyRjE7Ij4KLTwhRU5USVRZIGRpc2luICImI3gyMkYyOyI+Ci08IUVO
VElUWSBpc2luc3YgIiYjeDIyRjM7Ij4KLTwhRU5USVRZIGlzaW5zICImI3gyMkY0OyI+Ci08IUVO
VElUWSBpc2luZG90ICImI3gyMkY1OyI+Ci08IUVOVElUWSBub3RpbmRvdCAiJiN4MjJGNTsmI3gz
Mzg7Ij4KLTwhRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ij4KLTwhRU5USVRZIG5vdGludmIgIiYj
eDIyRjc7Ij4KLTwhRU5USVRZIGlzaW5FICImI3gyMkY5OyI+Ci08IUVOVElUWSBub3RpbkUgIiYj
eDIyRjk7JiN4MzM4OyI+Ci08IUVOVElUWSBuaXNkICImI3gyMkZBOyI+Ci08IUVOVElUWSB4bmlz
ICImI3gyMkZCOyI+Ci08IUVOVElUWSBuaXMgIiYjeDIyRkM7Ij4KLTwhRU5USVRZIG5vdG5pdmMg
IiYjeDIyRkQ7Ij4KLTwhRU5USVRZIG5vdG5pdmIgIiYjeDIyRkU7Ij4KLTwhRU5USVRZIGJhcndl
ZCAiJiN4MjMwNTsiPgotPCFFTlRJVFkgYmFyd2VkZ2UgIiYjeDIzMDU7Ij4KLTwhRU5USVRZIEJh
cndlZCAiJiN4MjMwNjsiPgotPCFFTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ij4KLTwh
RU5USVRZIGxjZWlsICImI3gyMzA4OyI+Ci08IUVOVElUWSBMZWZ0Q2VpbGluZyAiJiN4MjMwODsi
PgotPCFFTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ij4KLTwhRU5USVRZIFJpZ2h0Q2VpbGluZyAiJiN4
MjMwOTsiPgotPCFFTlRJVFkgbGZsb29yICImI3gyMzBBOyI+Ci08IUVOVElUWSBMZWZ0Rmxvb3Ig
IiYjeDIzMEE7Ij4KLTwhRU5USVRZIHJmbG9vciAiJiN4MjMwQjsiPgotPCFFTlRJVFkgUmlnaHRG
bG9vciAiJiN4MjMwQjsiPgotPCFFTlRJVFkgZHJjcm9wICImI3gyMzBDOyI+Ci08IUVOVElUWSBk
bGNyb3AgIiYjeDIzMEQ7Ij4KLTwhRU5USVRZIHVyY3JvcCAiJiN4MjMwRTsiPgotPCFFTlRJVFkg
dWxjcm9wICImI3gyMzBGOyI+Ci08IUVOVElUWSBibm90ICImI3gyMzEwOyI+Ci08IUVOVElUWSBw
cm9mbGluZSAiJiN4MjMxMjsiPgotPCFFTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ij4KLTwhRU5U
SVRZIHRlbHJlYyAiJiN4MjMxNTsiPgotPCFFTlRJVFkgdGFyZ2V0ICImI3gyMzE2OyI+Ci08IUVO
VElUWSB1bGNvcm4gIiYjeDIzMUM7Ij4KLTwhRU5USVRZIHVsY29ybmVyICImI3gyMzFDOyI+Ci08
IUVOVElUWSB1cmNvcm4gIiYjeDIzMUQ7Ij4KLTwhRU5USVRZIHVyY29ybmVyICImI3gyMzFEOyI+
Ci08IUVOVElUWSBkbGNvcm4gIiYjeDIzMUU7Ij4KLTwhRU5USVRZIGxsY29ybmVyICImI3gyMzFF
OyI+Ci08IUVOVElUWSBkcmNvcm4gIiYjeDIzMUY7Ij4KLTwhRU5USVRZIGxyY29ybmVyICImI3gy
MzFGOyI+Ci08IUVOVElUWSBmcm93biAiJiN4MjMyMjsiPgotPCFFTlRJVFkgc2Zyb3duICImI3gy
MzIyOyI+Ci08IUVOVElUWSBzbWlsZSAiJiN4MjMyMzsiPgotPCFFTlRJVFkgc3NtaWxlICImI3gy
MzIzOyI+Ci08IUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ij4KLTwhRU5USVRZIHByb2ZhbGFyICIm
I3gyMzJFOyI+Ci08IUVOVElUWSB0b3Bib3QgIiYjeDIzMzY7Ij4KLTwhRU5USVRZIG92YmFyICIm
I3gyMzNEOyI+Ci08IUVOVElUWSBzb2xiYXIgIiYjeDIzM0Y7Ij4KLTwhRU5USVRZIGFuZ3phcnIg
IiYjeDIzN0M7Ij4KLTwhRU5USVRZIGxtb3VzdCAiJiN4MjNCMDsiPgotPCFFTlRJVFkgbG1vdXN0
YWNoZSAiJiN4MjNCMDsiPgotPCFFTlRJVFkgcm1vdXN0ICImI3gyM0IxOyI+Ci08IUVOVElUWSBy
bW91c3RhY2hlICImI3gyM0IxOyI+Ci08IUVOVElUWSB0YnJrICImI3gyM0I0OyI+Ci08IUVOVElU
WSBPdmVyQnJhY2tldCAiJiN4MjNCNDsiPgotPCFFTlRJVFkgYmJyayAiJiN4MjNCNTsiPgotPCFF
TlRJVFkgVW5kZXJCcmFja2V0ICImI3gyM0I1OyI+Ci08IUVOVElUWSBiYnJrdGJyayAiJiN4MjNC
NjsiPgotPCFFTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyI+Ci08IUVOVElUWSBVbmRl
clBhcmVudGhlc2lzICImI3gyM0REOyI+Ci08IUVOVElUWSBPdmVyQnJhY2UgIiYjeDIzREU7Ij4K
LTwhRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ij4KLTwhRU5USVRZIHRycGV6aXVtICImI3gy
M0UyOyI+Ci08IUVOVElUWSBlbGludGVycyAiJiN4MjNFNzsiPgotPCFFTlRJVFkgYmxhbmsgIiYj
eDI0MjM7Ij4KLTwhRU5USVRZIG9TICImI3gyNEM4OyI+Ci08IUVOVElUWSBjaXJjbGVkUyAiJiN4
MjRDODsiPgotPCFFTlRJVFkgYm94aCAiJiN4MjUwMDsiPgotPCFFTlRJVFkgSG9yaXpvbnRhbExp
bmUgIiYjeDI1MDA7Ij4KLTwhRU5USVRZIGJveHYgIiYjeDI1MDI7Ij4KLTwhRU5USVRZIGJveGRy
ICImI3gyNTBDOyI+Ci08IUVOVElUWSBib3hkbCAiJiN4MjUxMDsiPgotPCFFTlRJVFkgYm94dXIg
IiYjeDI1MTQ7Ij4KLTwhRU5USVRZIGJveHVsICImI3gyNTE4OyI+Ci08IUVOVElUWSBib3h2ciAi
JiN4MjUxQzsiPgotPCFFTlRJVFkgYm94dmwgIiYjeDI1MjQ7Ij4KLTwhRU5USVRZIGJveGhkICIm
I3gyNTJDOyI+Ci08IUVOVElUWSBib3hodSAiJiN4MjUzNDsiPgotPCFFTlRJVFkgYm94dmggIiYj
eDI1M0M7Ij4KLTwhRU5USVRZIGJveEggIiYjeDI1NTA7Ij4KLTwhRU5USVRZIGJveFYgIiYjeDI1
NTE7Ij4KLTwhRU5USVRZIGJveGRSICImI3gyNTUyOyI+Ci08IUVOVElUWSBib3hEciAiJiN4MjU1
MzsiPgotPCFFTlRJVFkgYm94RFIgIiYjeDI1NTQ7Ij4KLTwhRU5USVRZIGJveGRMICImI3gyNTU1
OyI+Ci08IUVOVElUWSBib3hEbCAiJiN4MjU1NjsiPgotPCFFTlRJVFkgYm94REwgIiYjeDI1NTc7
Ij4KLTwhRU5USVRZIGJveHVSICImI3gyNTU4OyI+Ci08IUVOVElUWSBib3hVciAiJiN4MjU1OTsi
PgotPCFFTlRJVFkgYm94VVIgIiYjeDI1NUE7Ij4KLTwhRU5USVRZIGJveHVMICImI3gyNTVCOyI+
Ci08IUVOVElUWSBib3hVbCAiJiN4MjU1QzsiPgotPCFFTlRJVFkgYm94VUwgIiYjeDI1NUQ7Ij4K
LTwhRU5USVRZIGJveHZSICImI3gyNTVFOyI+Ci08IUVOVElUWSBib3hWciAiJiN4MjU1RjsiPgot
PCFFTlRJVFkgYm94VlIgIiYjeDI1NjA7Ij4KLTwhRU5USVRZIGJveHZMICImI3gyNTYxOyI+Ci08
IUVOVElUWSBib3hWbCAiJiN4MjU2MjsiPgotPCFFTlRJVFkgYm94VkwgIiYjeDI1NjM7Ij4KLTwh
RU5USVRZIGJveEhkICImI3gyNTY0OyI+Ci08IUVOVElUWSBib3hoRCAiJiN4MjU2NTsiPgotPCFF
TlRJVFkgYm94SEQgIiYjeDI1NjY7Ij4KLTwhRU5USVRZIGJveEh1ICImI3gyNTY3OyI+Ci08IUVO
VElUWSBib3hoVSAiJiN4MjU2ODsiPgotPCFFTlRJVFkgYm94SFUgIiYjeDI1Njk7Ij4KLTwhRU5U
SVRZIGJveHZIICImI3gyNTZBOyI+Ci08IUVOVElUWSBib3hWaCAiJiN4MjU2QjsiPgotPCFFTlRJ
VFkgYm94VkggIiYjeDI1NkM7Ij4KLTwhRU5USVRZIHVoYmxrICImI3gyNTgwOyI+Ci08IUVOVElU
WSBsaGJsayAiJiN4MjU4NDsiPgotPCFFTlRJVFkgYmxvY2sgIiYjeDI1ODg7Ij4KLTwhRU5USVRZ
IGJsazE0ICImI3gyNTkxOyI+Ci08IUVOVElUWSBibGsxMiAiJiN4MjU5MjsiPgotPCFFTlRJVFkg
YmxrMzQgIiYjeDI1OTM7Ij4KLTwhRU5USVRZIHNxdSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgc3F1
YXJlICImI3gyNUExOyI+Ci08IUVOVElUWSBTcXVhcmUgIiYjeDI1QTE7Ij4KLTwhRU5USVRZIHNx
dWYgIiYjeDI1QUE7Ij4KLTwhRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsiPgotPCFFTlRJVFkgYmxh
Y2tzcXVhcmUgIiYjeDI1QUE7Ij4KLTwhRU5USVRZIEZpbGxlZFZlcnlTbWFsbFNxdWFyZSAiJiN4
MjVBQTsiPgotPCFFTlRJVFkgRW1wdHlWZXJ5U21hbGxTcXVhcmUgIiYjeDI1QUI7Ij4KLTwhRU5U
SVRZIHJlY3QgIiYjeDI1QUQ7Ij4KLTwhRU5USVRZIG1hcmtlciAiJiN4MjVBRTsiPgotPCFFTlRJ
VFkgZmx0bnMgIiYjeDI1QjE7Ij4KLTwhRU5USVRZIHh1dHJpICImI3gyNUIzOyI+Ci08IUVOVElU
WSBiaWd0cmlhbmdsZXVwICImI3gyNUIzOyI+Ci08IUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiPgot
PCFFTlRJVFkgYmxhY2t0cmlhbmdsZSAiJiN4MjVCNDsiPgotPCFFTlRJVFkgdXRyaSAiJiN4MjVC
NTsiPgotPCFFTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ij4KLTwhRU5USVRZIHJ0cmlmICImI3gy
NUI4OyI+Ci08IUVOVElUWSBibGFja3RyaWFuZ2xlcmlnaHQgIiYjeDI1Qjg7Ij4KLTwhRU5USVRZ
IHJ0cmkgIiYjeDI1Qjk7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcmlnaHQgIiYjeDI1Qjk7Ij4KLTwh
RU5USVRZIHhkdHJpICImI3gyNUJEOyI+Ci08IUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1
QkQ7Ij4KLTwhRU5USVRZIGR0cmlmICImI3gyNUJFOyI+Ci08IUVOVElUWSBibGFja3RyaWFuZ2xl
ZG93biAiJiN4MjVCRTsiPgotPCFFTlRJVFkgZHRyaSAiJiN4MjVCRjsiPgotPCFFTlRJVFkgdHJp
YW5nbGVkb3duICImI3gyNUJGOyI+Ci08IUVOVElUWSBsdHJpZiAiJiN4MjVDMjsiPgotPCFFTlRJ
VFkgYmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ij4KLTwhRU5USVRZIGx0cmkgIiYjeDI1QzM7
Ij4KLTwhRU5USVRZIHRyaWFuZ2xlbGVmdCAiJiN4MjVDMzsiPgotPCFFTlRJVFkgbG96ICImI3gy
NUNBOyI+Ci08IUVOVElUWSBsb3plbmdlICImI3gyNUNBOyI+Ci08IUVOVElUWSBjaXIgIiYjeDI1
Q0I7Ij4KLTwhRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiPgotPCFFTlRJVFkgeGNpcmMgIiYjeDI1
RUY7Ij4KLTwhRU5USVRZIGJpZ2NpcmMgIiYjeDI1RUY7Ij4KLTwhRU5USVRZIHVsdHJpICImI3gy
NUY4OyI+Ci08IUVOVElUWSB1cnRyaSAiJiN4MjVGOTsiPgotPCFFTlRJVFkgbGx0cmkgIiYjeDI1
RkE7Ij4KLTwhRU5USVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ij4KLTwhRU5USVRZIEZp
bGxlZFNtYWxsU3F1YXJlICImI3gyNUZDOyI+Ci08IUVOVElUWSBzdGFyZiAiJiN4MjYwNTsiPgot
PCFFTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiPgotPCFFTlRJVFkgc3RhciAiJiN4MjYwNjsiPgot
PCFFTlRJVFkgcGhvbmUgIiYjeDI2MEU7Ij4KLTwhRU5USVRZIGZlbWFsZSAiJiN4MjY0MDsiPgot
PCFFTlRJVFkgbWFsZSAiJiN4MjY0MjsiPgotPCFFTlRJVFkgc3BhZGVzICImI3gyNjYwOyI+Ci08
IUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ij4KLTwhRU5USVRZIGNsdWJzICImI3gyNjYzOyI+
Ci08IUVOVElUWSBjbHVic3VpdCAiJiN4MjY2MzsiPgotPCFFTlRJVFkgaGVhcnRzICImI3gyNjY1
OyI+Ci08IUVOVElUWSBoZWFydHN1aXQgIiYjeDI2NjU7Ij4KLTwhRU5USVRZIGRpYW1zICImI3gy
NjY2OyI+Ci08IUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiPgotPCFFTlRJVFkgc3VuZyAi
JiN4MjY2QTsiPgotPCFFTlRJVFkgZmxhdCAiJiN4MjY2RDsiPgotPCFFTlRJVFkgbmF0dXIgIiYj
eDI2NkU7Ij4KLTwhRU5USVRZIG5hdHVyYWwgIiYjeDI2NkU7Ij4KLTwhRU5USVRZIHNoYXJwICIm
I3gyNjZGOyI+Ci08IUVOVElUWSBjaGVjayAiJiN4MjcxMzsiPgotPCFFTlRJVFkgY2hlY2ttYXJr
ICImI3gyNzEzOyI+Ci08IUVOVElUWSBjcm9zcyAiJiN4MjcxNzsiPgotPCFFTlRJVFkgbWFsdCAi
JiN4MjcyMDsiPgotPCFFTlRJVFkgbWFsdGVzZSAiJiN4MjcyMDsiPgotPCFFTlRJVFkgc2V4dCAi
JiN4MjczNjsiPgotPCFFTlRJVFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ij4KLTwhRU5U
SVRZIGxiYnJrICImI3gyNzcyOyI+Ci08IUVOVElUWSByYmJyayAiJiN4Mjc3MzsiPgotPCFFTlRJ
VFkgYnNvbGhzdWIgIiYjeDI3Qzg7Ij4KLTwhRU5USVRZIHN1cGhzb2wgIiYjeDI3Qzk7Ij4KLTwh
RU5USVRZIGxvYnJrICImI3gyN0U2OyI+Ci08IUVOVElUWSBMZWZ0RG91YmxlQnJhY2tldCAiJiN4
MjdFNjsiPgotPCFFTlRJVFkgcm9icmsgIiYjeDI3RTc7Ij4KLTwhRU5USVRZIFJpZ2h0RG91Ymxl
QnJhY2tldCAiJiN4MjdFNzsiPgotPCFFTlRJVFkgbGFuZyAiJiN4MjdFODsiPgotPCFFTlRJVFkg
TGVmdEFuZ2xlQnJhY2tldCAiJiN4MjdFODsiPgotPCFFTlRJVFkgbGFuZ2xlICImI3gyN0U4OyI+
Ci08IUVOVElUWSByYW5nICImI3gyN0U5OyI+Ci08IUVOVElUWSBSaWdodEFuZ2xlQnJhY2tldCAi
JiN4MjdFOTsiPgotPCFFTlRJVFkgcmFuZ2xlICImI3gyN0U5OyI+Ci08IUVOVElUWSBMYW5nICIm
I3gyN0VBOyI+Ci08IUVOVElUWSBSYW5nICImI3gyN0VCOyI+Ci08IUVOVElUWSBsb2FuZyAiJiN4
MjdFQzsiPgotPCFFTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ij4KLTwhRU5USVRZIHhsYXJyICImI3gy
N0Y1OyI+Ci08IUVOVElUWSBsb25nbGVmdGFycm93ICImI3gyN0Y1OyI+Ci08IUVOVElUWSBMb25n
TGVmdEFycm93ICImI3gyN0Y1OyI+Ci08IUVOVElUWSB4cmFyciAiJiN4MjdGNjsiPgotPCFFTlRJ
VFkgbG9uZ3JpZ2h0YXJyb3cgIiYjeDI3RjY7Ij4KLTwhRU5USVRZIExvbmdSaWdodEFycm93ICIm
I3gyN0Y2OyI+Ci08IUVOVElUWSB4aGFyciAiJiN4MjdGNzsiPgotPCFFTlRJVFkgbG9uZ2xlZnRy
aWdodGFycm93ICImI3gyN0Y3OyI+Ci08IUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3
Rjc7Ij4KLTwhRU5USVRZIHhsQXJyICImI3gyN0Y4OyI+Ci08IUVOVElUWSBMb25nbGVmdGFycm93
ICImI3gyN0Y4OyI+Ci08IUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyI+Ci08
IUVOVElUWSB4ckFyciAiJiN4MjdGOTsiPgotPCFFTlRJVFkgTG9uZ3JpZ2h0YXJyb3cgIiYjeDI3
Rjk7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyI+Ci08IUVOVElU
WSB4aEFyciAiJiN4MjdGQTsiPgotPCFFTlRJVFkgTG9uZ2xlZnRyaWdodGFycm93ICImI3gyN0ZB
OyI+Ci08IUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3RkE7Ij4KLTwhRU5U
SVRZIHhtYXAgIiYjeDI3RkM7Ij4KLTwhRU5USVRZIGxvbmdtYXBzdG8gIiYjeDI3RkM7Ij4KLTwh
RU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyI+Ci08IUVOVElUWSBudmxBcnIgIiYjeDI5MDI7Ij4K
LTwhRU5USVRZIG52ckFyciAiJiN4MjkwMzsiPgotPCFFTlRJVFkgbnZIYXJyICImI3gyOTA0OyI+
Ci08IUVOVElUWSBNYXAgIiYjeDI5MDU7Ij4KLTwhRU5USVRZIGxiYXJyICImI3gyOTBDOyI+Ci08
IUVOVElUWSByYmFyciAiJiN4MjkwRDsiPgotPCFFTlRJVFkgYmthcm93ICImI3gyOTBEOyI+Ci08
IUVOVElUWSBsQmFyciAiJiN4MjkwRTsiPgotPCFFTlRJVFkgckJhcnIgIiYjeDI5MEY7Ij4KLTwh
RU5USVRZIGRia2Fyb3cgIiYjeDI5MEY7Ij4KLTwhRU5USVRZIFJCYXJyICImI3gyOTEwOyI+Ci08
IUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiPgotPCFFTlRJVFkgRERvdHJhaGQgIiYjeDI5MTE7
Ij4KLTwhRU5USVRZIFVwQXJyb3dCYXIgIiYjeDI5MTI7Ij4KLTwhRU5USVRZIERvd25BcnJvd0Jh
ciAiJiN4MjkxMzsiPgotPCFFTlRJVFkgUmFycnRsICImI3gyOTE2OyI+Ci08IUVOVElUWSBsYXRh
aWwgIiYjeDI5MTk7Ij4KLTwhRU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiPgotPCFFTlRJVFkgbEF0
YWlsICImI3gyOTFCOyI+Ci08IUVOVElUWSByQXRhaWwgIiYjeDI5MUM7Ij4KLTwhRU5USVRZIGxh
cnJmcyAiJiN4MjkxRDsiPgotPCFFTlRJVFkgcmFycmZzICImI3gyOTFFOyI+Ci08IUVOVElUWSBs
YXJyYmZzICImI3gyOTFGOyI+Ci08IUVOVElUWSByYXJyYmZzICImI3gyOTIwOyI+Ci08IUVOVElU
WSBud2FyaGsgIiYjeDI5MjM7Ij4KLTwhRU5USVRZIG5lYXJoayAiJiN4MjkyNDsiPgotPCFFTlRJ
VFkgc2VhcmhrICImI3gyOTI1OyI+Ci08IUVOVElUWSBoa3NlYXJvdyAiJiN4MjkyNTsiPgotPCFF
TlRJVFkgc3dhcmhrICImI3gyOTI2OyI+Ci08IUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiPgot
PCFFTlRJVFkgbnduZWFyICImI3gyOTI3OyI+Ci08IUVOVElUWSBuZXNlYXIgIiYjeDI5Mjg7Ij4K
LTwhRU5USVRZIHRvZWEgIiYjeDI5Mjg7Ij4KLTwhRU5USVRZIHNlc3dhciAiJiN4MjkyOTsiPgot
PCFFTlRJVFkgdG9zYSAiJiN4MjkyOTsiPgotPCFFTlRJVFkgc3dud2FyICImI3gyOTJBOyI+Ci08
IUVOVElUWSByYXJyYyAiJiN4MjkzMzsiPgotPCFFTlRJVFkgbnJhcnJjICImI3gyOTMzOyYjeDMz
ODsiPgotPCFFTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiPgotPCFFTlRJVFkgbGRjYSAiJiN4Mjkz
NjsiPgotPCFFTlRJVFkgcmRjYSAiJiN4MjkzNzsiPgotPCFFTlRJVFkgY3VkYXJybCAiJiN4Mjkz
ODsiPgotPCFFTlRJVFkgbGFycnBsICImI3gyOTM5OyI+Ci08IUVOVElUWSBjdXJhcnJtICImI3gy
OTNDOyI+Ci08IUVOVElUWSBjdWxhcnJwICImI3gyOTNEOyI+Ci08IUVOVElUWSByYXJycGwgIiYj
eDI5NDU7Ij4KLTwhRU5USVRZIGhhcnJjaXIgIiYjeDI5NDg7Ij4KLTwhRU5USVRZIFVhcnJvY2ly
ICImI3gyOTQ5OyI+Ci08IUVOVElUWSBsdXJkc2hhciAiJiN4Mjk0QTsiPgotPCFFTlRJVFkgbGRy
dXNoYXIgIiYjeDI5NEI7Ij4KLTwhRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiPgot
PCFFTlRJVFkgUmlnaHRVcERvd25WZWN0b3IgIiYjeDI5NEY7Ij4KLTwhRU5USVRZIERvd25MZWZ0
UmlnaHRWZWN0b3IgIiYjeDI5NTA7Ij4KLTwhRU5USVRZIExlZnRVcERvd25WZWN0b3IgIiYjeDI5
NTE7Ij4KLTwhRU5USVRZIExlZnRWZWN0b3JCYXIgIiYjeDI5NTI7Ij4KLTwhRU5USVRZIFJpZ2h0
VmVjdG9yQmFyICImI3gyOTUzOyI+Ci08IUVOVElUWSBSaWdodFVwVmVjdG9yQmFyICImI3gyOTU0
OyI+Ci08IUVOVElUWSBSaWdodERvd25WZWN0b3JCYXIgIiYjeDI5NTU7Ij4KLTwhRU5USVRZIERv
d25MZWZ0VmVjdG9yQmFyICImI3gyOTU2OyI+Ci08IUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIg
IiYjeDI5NTc7Ij4KLTwhRU5USVRZIExlZnRVcFZlY3RvckJhciAiJiN4Mjk1ODsiPgotPCFFTlRJ
VFkgTGVmdERvd25WZWN0b3JCYXIgIiYjeDI5NTk7Ij4KLTwhRU5USVRZIExlZnRUZWVWZWN0b3Ig
IiYjeDI5NUE7Ij4KLTwhRU5USVRZIFJpZ2h0VGVlVmVjdG9yICImI3gyOTVCOyI+Ci08IUVOVElU
WSBSaWdodFVwVGVlVmVjdG9yICImI3gyOTVDOyI+Ci08IUVOVElUWSBSaWdodERvd25UZWVWZWN0
b3IgIiYjeDI5NUQ7Ij4KLTwhRU5USVRZIERvd25MZWZ0VGVlVmVjdG9yICImI3gyOTVFOyI+Ci08
IUVOVElUWSBEb3duUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUY7Ij4KLTwhRU5USVRZIExlZnRVcFRl
ZVZlY3RvciAiJiN4Mjk2MDsiPgotPCFFTlRJVFkgTGVmdERvd25UZWVWZWN0b3IgIiYjeDI5NjE7
Ij4KLTwhRU5USVRZIGxIYXIgIiYjeDI5NjI7Ij4KLTwhRU5USVRZIHVIYXIgIiYjeDI5NjM7Ij4K
LTwhRU5USVRZIHJIYXIgIiYjeDI5NjQ7Ij4KLTwhRU5USVRZIGRIYXIgIiYjeDI5NjU7Ij4KLTwh
RU5USVRZIGx1cnVoYXIgIiYjeDI5NjY7Ij4KLTwhRU5USVRZIGxkcmRoYXIgIiYjeDI5Njc7Ij4K
LTwhRU5USVRZIHJ1bHVoYXIgIiYjeDI5Njg7Ij4KLTwhRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7
Ij4KLTwhRU5USVRZIGxoYXJ1bCAiJiN4Mjk2QTsiPgotPCFFTlRJVFkgbGxoYXJkICImI3gyOTZC
OyI+Ci08IUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ij4KLTwhRU5USVRZIGxyaGFyZCAiJiN4Mjk2
RDsiPgotPCFFTlRJVFkgdWRoYXIgIiYjeDI5NkU7Ij4KLTwhRU5USVRZIFVwRXF1aWxpYnJpdW0g
IiYjeDI5NkU7Ij4KLTwhRU5USVRZIGR1aGFyICImI3gyOTZGOyI+Ci08IUVOVElUWSBSZXZlcnNl
VXBFcXVpbGlicml1bSAiJiN4Mjk2RjsiPgotPCFFTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcw
OyI+Ci08IUVOVElUWSBlcmFyciAiJiN4Mjk3MTsiPgotPCFFTlRJVFkgc2ltcmFyciAiJiN4Mjk3
MjsiPgotPCFFTlRJVFkgbGFycnNpbSAiJiN4Mjk3MzsiPgotPCFFTlRJVFkgcmFycnNpbSAiJiN4
Mjk3NDsiPgotPCFFTlRJVFkgcmFycmFwICImI3gyOTc1OyI+Ci08IUVOVElUWSBsdGxhcnIgIiYj
eDI5NzY7Ij4KLTwhRU5USVRZIGd0cmFyciAiJiN4Mjk3ODsiPgotPCFFTlRJVFkgc3VicmFyciAi
JiN4Mjk3OTsiPgotPCFFTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiPgotPCFFTlRJVFkgbGZpc2h0
ICImI3gyOTdDOyI+Ci08IUVOVElUWSByZmlzaHQgIiYjeDI5N0Q7Ij4KLTwhRU5USVRZIHVmaXNo
dCAiJiN4Mjk3RTsiPgotPCFFTlRJVFkgZGZpc2h0ICImI3gyOTdGOyI+Ci08IUVOVElUWSBsb3Bh
ciAiJiN4Mjk4NTsiPgotPCFFTlRJVFkgcm9wYXIgIiYjeDI5ODY7Ij4KLTwhRU5USVRZIGxicmtl
ICImI3gyOThCOyI+Ci08IUVOVElUWSByYnJrZSAiJiN4Mjk4QzsiPgotPCFFTlRJVFkgbGJya3Ns
dSAiJiN4Mjk4RDsiPgotPCFFTlRJVFkgcmJya3NsZCAiJiN4Mjk4RTsiPgotPCFFTlRJVFkgbGJy
a3NsZCAiJiN4Mjk4RjsiPgotPCFFTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiPgotPCFFTlRJVFkg
bGFuZ2QgIiYjeDI5OTE7Ij4KLTwhRU5USVRZIHJhbmdkICImI3gyOTkyOyI+Ci08IUVOVElUWSBs
cGFybHQgIiYjeDI5OTM7Ij4KLTwhRU5USVRZIHJwYXJndCAiJiN4Mjk5NDsiPgotPCFFTlRJVFkg
Z3RsUGFyICImI3gyOTk1OyI+Ci08IUVOVElUWSBsdHJQYXIgIiYjeDI5OTY7Ij4KLTwhRU5USVRZ
IHZ6aWd6YWcgIiYjeDI5OUE7Ij4KLTwhRU5USVRZIHZhbmdydCAiJiN4Mjk5QzsiPgotPCFFTlRJ
VFkgYW5ncnR2YmQgIiYjeDI5OUQ7Ij4KLTwhRU5USVRZIGFuZ2UgIiYjeDI5QTQ7Ij4KLTwhRU5U
SVRZIHJhbmdlICImI3gyOUE1OyI+Ci08IUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyI+Ci08IUVO
VElUWSB1d2FuZ2xlICImI3gyOUE3OyI+Ci08IUVOVElUWSBhbmdtc2RhYSAiJiN4MjlBODsiPgot
PCFFTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ij4KLTwhRU5USVRZIGFuZ21zZGFjICImI3gyOUFB
OyI+Ci08IUVOVElUWSBhbmdtc2RhZCAiJiN4MjlBQjsiPgotPCFFTlRJVFkgYW5nbXNkYWUgIiYj
eDI5QUM7Ij4KLTwhRU5USVRZIGFuZ21zZGFmICImI3gyOUFEOyI+Ci08IUVOVElUWSBhbmdtc2Rh
ZyAiJiN4MjlBRTsiPgotPCFFTlRJVFkgYW5nbXNkYWggIiYjeDI5QUY7Ij4KLTwhRU5USVRZIGJl
bXB0eXYgIiYjeDI5QjA7Ij4KLTwhRU5USVRZIGRlbXB0eXYgIiYjeDI5QjE7Ij4KLTwhRU5USVRZ
IGNlbXB0eXYgIiYjeDI5QjI7Ij4KLTwhRU5USVRZIHJhZW1wdHl2ICImI3gyOUIzOyI+Ci08IUVO
VElUWSBsYWVtcHR5diAiJiN4MjlCNDsiPgotPCFFTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ij4KLTwh
RU5USVRZIG9taWQgIiYjeDI5QjY7Ij4KLTwhRU5USVRZIG9wYXIgIiYjeDI5Qjc7Ij4KLTwhRU5U
SVRZIG9wZXJwICImI3gyOUI5OyI+Ci08IUVOVElUWSBvbGNyb3NzICImI3gyOUJCOyI+Ci08IUVO
VElUWSBvZHNvbGQgIiYjeDI5QkM7Ij4KLTwhRU5USVRZIG9sY2lyICImI3gyOUJFOyI+Ci08IUVO
VElUWSBvZmNpciAiJiN4MjlCRjsiPgotPCFFTlRJVFkgb2x0ICImI3gyOUMwOyI+Ci08IUVOVElU
WSBvZ3QgIiYjeDI5QzE7Ij4KLTwhRU5USVRZIGNpcnNjaXIgIiYjeDI5QzI7Ij4KLTwhRU5USVRZ
IGNpckUgIiYjeDI5QzM7Ij4KLTwhRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ij4KLTwhRU5USVRZIGJz
b2xiICImI3gyOUM1OyI+Ci08IUVOVElUWSBib3hib3ggIiYjeDI5Qzk7Ij4KLTwhRU5USVRZIHRy
aXNiICImI3gyOUNEOyI+Ci08IUVOVElUWSBydHJpbHRyaSAiJiN4MjlDRTsiPgotPCFFTlRJVFkg
TGVmdFRyaWFuZ2xlQmFyICImI3gyOUNGOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJpYW5nbGVCYXIg
IiYjeDI5Q0Y7JiN4MzM4OyI+Ci08IUVOVElUWSBSaWdodFRyaWFuZ2xlQmFyICImI3gyOUQwOyI+
Ci08IUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlQmFyICImI3gyOUQwOyYjeDMzODsiPgotPCFFTlRJ
VFkgaWluZmluICImI3gyOURDOyI+Ci08IUVOVElUWSBpbmZpbnRpZSAiJiN4MjlERDsiPgotPCFF
TlRJVFkgbnZpbmZpbiAiJiN4MjlERTsiPgotPCFFTlRJVFkgZXBhcnNsICImI3gyOUUzOyI+Ci08
IUVOVElUWSBzbWVwYXJzbCAiJiN4MjlFNDsiPgotPCFFTlRJVFkgZXF2cGFyc2wgIiYjeDI5RTU7
Ij4KLTwhRU5USVRZIGxvemYgIiYjeDI5RUI7Ij4KLTwhRU5USVRZIGJsYWNrbG96ZW5nZSAiJiN4
MjlFQjsiPgotPCFFTlRJVFkgUnVsZURlbGF5ZWQgIiYjeDI5RjQ7Ij4KLTwhRU5USVRZIGRzb2wg
IiYjeDI5RjY7Ij4KLTwhRU5USVRZIHhvZG90ICImI3gyQTAwOyI+Ci08IUVOVElUWSBiaWdvZG90
ICImI3gyQTAwOyI+Ci08IUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ij4KLTwhRU5USVRZIGJpZ29w
bHVzICImI3gyQTAxOyI+Ci08IUVOVElUWSB4b3RpbWUgIiYjeDJBMDI7Ij4KLTwhRU5USVRZIGJp
Z290aW1lcyAiJiN4MkEwMjsiPgotPCFFTlRJVFkgeHVwbHVzICImI3gyQTA0OyI+Ci08IUVOVElU
WSBiaWd1cGx1cyAiJiN4MkEwNDsiPgotPCFFTlRJVFkgeHNxY3VwICImI3gyQTA2OyI+Ci08IUVO
VElUWSBiaWdzcWN1cCAiJiN4MkEwNjsiPgotPCFFTlRJVFkgcWludCAiJiN4MkEwQzsiPgotPCFF
TlRJVFkgaWlpaW50ICImI3gyQTBDOyI+Ci08IUVOVElUWSBmcGFydGludCAiJiN4MkEwRDsiPgot
PCFFTlRJVFkgY2lyZm5pbnQgIiYjeDJBMTA7Ij4KLTwhRU5USVRZIGF3aW50ICImI3gyQTExOyI+
Ci08IUVOVElUWSBycHBvbGludCAiJiN4MkExMjsiPgotPCFFTlRJVFkgc2Nwb2xpbnQgIiYjeDJB
MTM7Ij4KLTwhRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ij4KLTwhRU5USVRZIHBvaW50aW50ICIm
I3gyQTE1OyI+Ci08IUVOVElUWSBxdWF0aW50ICImI3gyQTE2OyI+Ci08IUVOVElUWSBpbnRsYXJo
ayAiJiN4MkExNzsiPgotPCFFTlRJVFkgcGx1c2NpciAiJiN4MkEyMjsiPgotPCFFTlRJVFkgcGx1
c2FjaXIgIiYjeDJBMjM7Ij4KLTwhRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ij4KLTwhRU5USVRZ
IHBsdXNkdSAiJiN4MkEyNTsiPgotPCFFTlRJVFkgcGx1c3NpbSAiJiN4MkEyNjsiPgotPCFFTlRJ
VFkgcGx1c3R3byAiJiN4MkEyNzsiPgotPCFFTlRJVFkgbWNvbW1hICImI3gyQTI5OyI+Ci08IUVO
VElUWSBtaW51c2R1ICImI3gyQTJBOyI+Ci08IUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7Ij4KLTwh
RU5USVRZIHJvcGx1cyAiJiN4MkEyRTsiPgotPCFFTlRJVFkgQ3Jvc3MgIiYjeDJBMkY7Ij4KLTwh
RU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiPgotPCFFTlRJVFkgdGltZXNiYXIgIiYjeDJBMzE7Ij4K
LTwhRU5USVRZIHNtYXNocCAiJiN4MkEzMzsiPgotPCFFTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsi
PgotPCFFTlRJVFkgcm90aW1lcyAiJiN4MkEzNTsiPgotPCFFTlRJVFkgb3RpbWVzYXMgIiYjeDJB
MzY7Ij4KLTwhRU5USVRZIE90aW1lcyAiJiN4MkEzNzsiPgotPCFFTlRJVFkgb2RpdiAiJiN4MkEz
ODsiPgotPCFFTlRJVFkgdHJpcGx1cyAiJiN4MkEzOTsiPgotPCFFTlRJVFkgdHJpbWludXMgIiYj
eDJBM0E7Ij4KLTwhRU5USVRZIHRyaXRpbWUgIiYjeDJBM0I7Ij4KLTwhRU5USVRZIGlwcm9kICIm
I3gyQTNDOyI+Ci08IUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyI+Ci08IUVOVElUWSBhbWFsZyAi
JiN4MkEzRjsiPgotPCFFTlRJVFkgY2FwZG90ICImI3gyQTQwOyI+Ci08IUVOVElUWSBuY3VwICIm
I3gyQTQyOyI+Ci08IUVOVElUWSBuY2FwICImI3gyQTQzOyI+Ci08IUVOVElUWSBjYXBhbmQgIiYj
eDJBNDQ7Ij4KLTwhRU5USVRZIGN1cG9yICImI3gyQTQ1OyI+Ci08IUVOVElUWSBjdXBjYXAgIiYj
eDJBNDY7Ij4KLTwhRU5USVRZIGNhcGN1cCAiJiN4MkE0NzsiPgotPCFFTlRJVFkgY3VwYnJjYXAg
IiYjeDJBNDg7Ij4KLTwhRU5USVRZIGNhcGJyY3VwICImI3gyQTQ5OyI+Ci08IUVOVElUWSBjdXBj
dXAgIiYjeDJBNEE7Ij4KLTwhRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiPgotPCFFTlRJVFkgY2N1
cHMgIiYjeDJBNEM7Ij4KLTwhRU5USVRZIGNjYXBzICImI3gyQTREOyI+Ci08IUVOVElUWSBjY3Vw
c3NtICImI3gyQTUwOyI+Ci08IUVOVElUWSBBbmQgIiYjeDJBNTM7Ij4KLTwhRU5USVRZIE9yICIm
I3gyQTU0OyI+Ci08IUVOVElUWSBhbmRhbmQgIiYjeDJBNTU7Ij4KLTwhRU5USVRZIG9yb3IgIiYj
eDJBNTY7Ij4KLTwhRU5USVRZIG9yc2xvcGUgIiYjeDJBNTc7Ij4KLTwhRU5USVRZIGFuZHNsb3Bl
ICImI3gyQTU4OyI+Ci08IUVOVElUWSBhbmR2ICImI3gyQTVBOyI+Ci08IUVOVElUWSBvcnYgIiYj
eDJBNUI7Ij4KLTwhRU5USVRZIGFuZGQgIiYjeDJBNUM7Ij4KLTwhRU5USVRZIG9yZCAiJiN4MkE1
RDsiPgotPCFFTlRJVFkgd2VkYmFyICImI3gyQTVGOyI+Ci08IUVOVElUWSBzZG90ZSAiJiN4MkE2
NjsiPgotPCFFTlRJVFkgc2ltZG90ICImI3gyQTZBOyI+Ci08IUVOVElUWSBjb25nZG90ICImI3gy
QTZEOyI+Ci08IUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVh
c3RlciAiJiN4MkE2RTsiPgotPCFFTlRJVFkgYXBhY2lyICImI3gyQTZGOyI+Ci08IUVOVElUWSBh
cEUgIiYjeDJBNzA7Ij4KLTwhRU5USVRZIG5hcEUgIiYjeDJBNzA7JiN4MzM4OyI+Ci08IUVOVElU
WSBlcGx1cyAiJiN4MkE3MTsiPgotPCFFTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ij4KLTwhRU5USVRZ
IEVzaW0gIiYjeDJBNzM7Ij4KLTwhRU5USVRZIENvbG9uZSAiJiN4MkE3NDsiPgotPCFFTlRJVFkg
RXF1YWwgIiYjeDJBNzU7Ij4KLTwhRU5USVRZIGVERG90ICImI3gyQTc3OyI+Ci08IUVOVElUWSBk
ZG90c2VxICImI3gyQTc3OyI+Ci08IUVOVElUWSBlcXVpdkREICImI3gyQTc4OyI+Ci08IUVOVElU
WSBsdGNpciAiJiN4MkE3OTsiPgotPCFFTlRJVFkgZ3RjaXIgIiYjeDJBN0E7Ij4KLTwhRU5USVRZ
IGx0cXVlc3QgIiYjeDJBN0I7Ij4KLTwhRU5USVRZIGd0cXVlc3QgIiYjeDJBN0M7Ij4KLTwhRU5U
SVRZIGxlcyAiJiN4MkE3RDsiPgotPCFFTlRJVFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ij4K
LTwhRU5USVRZIGxlcXNsYW50ICImI3gyQTdEOyI+Ci08IUVOVElUWSBubGVzICImI3gyQTdEOyYj
eDMzODsiPgotPCFFTlRJVFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyI+Ci08
IUVOVElUWSBubGVxc2xhbnQgIiYjeDJBN0Q7JiN4MzM4OyI+Ci08IUVOVElUWSBnZXMgIiYjeDJB
N0U7Ij4KLTwhRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyI+Ci08IUVOVElUWSBn
ZXFzbGFudCAiJiN4MkE3RTsiPgotPCFFTlRJVFkgbmdlcyAiJiN4MkE3RTsmI3gzMzg7Ij4KLTwh
RU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJVFkg
bmdlcXNsYW50ICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJVFkgbGVzZG90ICImI3gyQTdGOyI+
Ci08IUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ij4KLTwhRU5USVRZIGxlc2RvdG8gIiYjeDJBODE7
Ij4KLTwhRU5USVRZIGdlc2RvdG8gIiYjeDJBODI7Ij4KLTwhRU5USVRZIGxlc2RvdG9yICImI3gy
QTgzOyI+Ci08IUVOVElUWSBnZXNkb3RvbCAiJiN4MkE4NDsiPgotPCFFTlRJVFkgbGFwICImI3gy
QTg1OyI+Ci08IUVOVElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyI+Ci08IUVOVElUWSBnYXAgIiYj
eDJBODY7Ij4KLTwhRU5USVRZIGd0cmFwcHJveCAiJiN4MkE4NjsiPgotPCFFTlRJVFkgbG5lICIm
I3gyQTg3OyI+Ci08IUVOVElUWSBsbmVxICImI3gyQTg3OyI+Ci08IUVOVElUWSBnbmUgIiYjeDJB
ODg7Ij4KLTwhRU5USVRZIGduZXEgIiYjeDJBODg7Ij4KLTwhRU5USVRZIGxuYXAgIiYjeDJBODk7
Ij4KLTwhRU5USVRZIGxuYXBwcm94ICImI3gyQTg5OyI+Ci08IUVOVElUWSBnbmFwICImI3gyQThB
OyI+Ci08IUVOVElUWSBnbmFwcHJveCAiJiN4MkE4QTsiPgotPCFFTlRJVFkgbEVnICImI3gyQThC
OyI+Ci08IUVOVElUWSBsZXNzZXFxZ3RyICImI3gyQThCOyI+Ci08IUVOVElUWSBnRWwgIiYjeDJB
OEM7Ij4KLTwhRU5USVRZIGd0cmVxcWxlc3MgIiYjeDJBOEM7Ij4KLTwhRU5USVRZIGxzaW1lICIm
I3gyQThEOyI+Ci08IUVOVElUWSBnc2ltZSAiJiN4MkE4RTsiPgotPCFFTlRJVFkgbHNpbWcgIiYj
eDJBOEY7Ij4KLTwhRU5USVRZIGdzaW1sICImI3gyQTkwOyI+Ci08IUVOVElUWSBsZ0UgIiYjeDJB
OTE7Ij4KLTwhRU5USVRZIGdsRSAiJiN4MkE5MjsiPgotPCFFTlRJVFkgbGVzZ2VzICImI3gyQTkz
OyI+Ci08IUVOVElUWSBnZXNsZXMgIiYjeDJBOTQ7Ij4KLTwhRU5USVRZIGVscyAiJiN4MkE5NTsi
PgotPCFFTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJBOTU7Ij4KLTwhRU5USVRZIGVncyAiJiN4MkE5
NjsiPgotPCFFTlRJVFkgZXFzbGFudGd0ciAiJiN4MkE5NjsiPgotPCFFTlRJVFkgZWxzZG90ICIm
I3gyQTk3OyI+Ci08IUVOVElUWSBlZ3Nkb3QgIiYjeDJBOTg7Ij4KLTwhRU5USVRZIGVsICImI3gy
QTk5OyI+Ci08IUVOVElUWSBlZyAiJiN4MkE5QTsiPgotPCFFTlRJVFkgc2ltbCAiJiN4MkE5RDsi
PgotPCFFTlRJVFkgc2ltZyAiJiN4MkE5RTsiPgotPCFFTlRJVFkgc2ltbEUgIiYjeDJBOUY7Ij4K
LTwhRU5USVRZIHNpbWdFICImI3gyQUEwOyI+Ci08IUVOVElUWSBMZXNzTGVzcyAiJiN4MkFBMTsi
PgotPCFFTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7JiN4MzM4OyI+Ci08IUVOVElU
WSBHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsiPgotPCFFTlRJVFkgTm90TmVzdGVkR3JlYXRlckdy
ZWF0ZXIgIiYjeDJBQTI7JiN4MzM4OyI+Ci08IUVOVElUWSBnbGogIiYjeDJBQTQ7Ij4KLTwhRU5U
SVRZIGdsYSAiJiN4MkFBNTsiPgotPCFFTlRJVFkgbHRjYyAiJiN4MkFBNjsiPgotPCFFTlRJVFkg
Z3RjYyAiJiN4MkFBNzsiPgotPCFFTlRJVFkgbGVzY2MgIiYjeDJBQTg7Ij4KLTwhRU5USVRZIGdl
c2NjICImI3gyQUE5OyI+Ci08IUVOVElUWSBzbXQgIiYjeDJBQUE7Ij4KLTwhRU5USVRZIGxhdCAi
JiN4MkFBQjsiPgotPCFFTlRJVFkgc210ZSAiJiN4MkFBQzsiPgotPCFFTlRJVFkgc210ZXMgIiYj
eDJBQUM7JiN4RkUwMDsiPgotPCFFTlRJVFkgbGF0ZSAiJiN4MkFBRDsiPgotPCFFTlRJVFkgbGF0
ZXMgIiYjeDJBQUQ7JiN4RkUwMDsiPgotPCFFTlRJVFkgYnVtcEUgIiYjeDJBQUU7Ij4KLTwhRU5U
SVRZIHByZSAiJiN4MkFBRjsiPgotPCFFTlRJVFkgcHJlY2VxICImI3gyQUFGOyI+Ci08IUVOVElU
WSBQcmVjZWRlc0VxdWFsICImI3gyQUFGOyI+Ci08IUVOVElUWSBucHJlICImI3gyQUFGOyYjeDMz
ODsiPgotPCFFTlRJVFkgbnByZWNlcSAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7JiN4MzM4OyI+Ci08IUVOVElUWSBzY2UgIiYjeDJBQjA7Ij4K
LTwhRU5USVRZIHN1Y2NlcSAiJiN4MkFCMDsiPgotPCFFTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4
MkFCMDsiPgotPCFFTlRJVFkgbnNjZSAiJiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIG5zdWNj
ZXEgIiYjeDJBQjA7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RTdWNjZWVkc0VxdWFsICImI3gyQUIw
OyYjeDMzODsiPgotPCFFTlRJVFkgcHJFICImI3gyQUIzOyI+Ci08IUVOVElUWSBzY0UgIiYjeDJB
QjQ7Ij4KLTwhRU5USVRZIHBybkUgIiYjeDJBQjU7Ij4KLTwhRU5USVRZIHByZWNuZXFxICImI3gy
QUI1OyI+Ci08IUVOVElUWSBzY25FICImI3gyQUI2OyI+Ci08IUVOVElUWSBzdWNjbmVxcSAiJiN4
MkFCNjsiPgotPCFFTlRJVFkgcHJhcCAiJiN4MkFCNzsiPgotPCFFTlRJVFkgcHJlY2FwcHJveCAi
JiN4MkFCNzsiPgotPCFFTlRJVFkgc2NhcCAiJiN4MkFCODsiPgotPCFFTlRJVFkgc3VjY2FwcHJv
eCAiJiN4MkFCODsiPgotPCFFTlRJVFkgcHJuYXAgIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHByZWNu
YXBwcm94ICImI3gyQUI5OyI+Ci08IUVOVElUWSBzY25hcCAiJiN4MkFCQTsiPgotPCFFTlRJVFkg
c3VjY25hcHByb3ggIiYjeDJBQkE7Ij4KLTwhRU5USVRZIFByICImI3gyQUJCOyI+Ci08IUVOVElU
WSBTYyAiJiN4MkFCQzsiPgotPCFFTlRJVFkgc3ViZG90ICImI3gyQUJEOyI+Ci08IUVOVElUWSBz
dXBkb3QgIiYjeDJBQkU7Ij4KLTwhRU5USVRZIHN1YnBsdXMgIiYjeDJBQkY7Ij4KLTwhRU5USVRZ
IHN1cHBsdXMgIiYjeDJBQzA7Ij4KLTwhRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ij4KLTwhRU5U
SVRZIHN1cG11bHQgIiYjeDJBQzI7Ij4KLTwhRU5USVRZIHN1YmVkb3QgIiYjeDJBQzM7Ij4KLTwh
RU5USVRZIHN1cGVkb3QgIiYjeDJBQzQ7Ij4KLTwhRU5USVRZIHN1YkUgIiYjeDJBQzU7Ij4KLTwh
RU5USVRZIHN1YnNldGVxcSAiJiN4MkFDNTsiPgotPCFFTlRJVFkgbnN1YkUgIiYjeDJBQzU7JiN4
MzM4OyI+Ci08IUVOVElUWSBuc3Vic2V0ZXFxICImI3gyQUM1OyYjeDMzODsiPgotPCFFTlRJVFkg
c3VwRSAiJiN4MkFDNjsiPgotPCFFTlRJVFkgc3Vwc2V0ZXFxICImI3gyQUM2OyI+Ci08IUVOVElU
WSBuc3VwRSAiJiN4MkFDNjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5zdXBzZXRlcXEgIiYjeDJBQzY7
JiN4MzM4OyI+Ci08IUVOVElUWSBzdWJzaW0gIiYjeDJBQzc7Ij4KLTwhRU5USVRZIHN1cHNpbSAi
JiN4MkFDODsiPgotPCFFTlRJVFkgc3VibkUgIiYjeDJBQ0I7Ij4KLTwhRU5USVRZIHN1YnNldG5l
cXEgIiYjeDJBQ0I7Ij4KLTwhRU5USVRZIHZzdWJuRSAiJiN4MkFDQjsmI3hGRTAwOyI+Ci08IUVO
VElUWSB2YXJzdWJzZXRuZXFxICImI3gyQUNCOyYjeEZFMDA7Ij4KLTwhRU5USVRZIHN1cG5FICIm
I3gyQUNDOyI+Ci08IUVOVElUWSBzdXBzZXRuZXFxICImI3gyQUNDOyI+Ci08IUVOVElUWSB2c3Vw
bkUgIiYjeDJBQ0M7JiN4RkUwMDsiPgotPCFFTlRJVFkgdmFyc3Vwc2V0bmVxcSAiJiN4MkFDQzsm
I3hGRTAwOyI+Ci08IUVOVElUWSBjc3ViICImI3gyQUNGOyI+Ci08IUVOVElUWSBjc3VwICImI3gy
QUQwOyI+Ci08IUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiPgotPCFFTlRJVFkgY3N1cGUgIiYjeDJB
RDI7Ij4KLTwhRU5USVRZIHN1YnN1cCAiJiN4MkFEMzsiPgotPCFFTlRJVFkgc3Vwc3ViICImI3gy
QUQ0OyI+Ci08IUVOVElUWSBzdWJzdWIgIiYjeDJBRDU7Ij4KLTwhRU5USVRZIHN1cHN1cCAiJiN4
MkFENjsiPgotPCFFTlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiPgotPCFFTlRJVFkgc3VwZHN1YiAi
JiN4MkFEODsiPgotPCFFTlRJVFkgZm9ya3YgIiYjeDJBRDk7Ij4KLTwhRU5USVRZIHRvcGZvcmsg
IiYjeDJBREE7Ij4KLTwhRU5USVRZIG1sY3AgIiYjeDJBREI7Ij4KLTwhRU5USVRZIERhc2h2ICIm
I3gyQUU0OyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyI+Ci08IUVOVElUWSBW
ZGFzaGwgIiYjeDJBRTY7Ij4KLTwhRU5USVRZIEJhcnYgIiYjeDJBRTc7Ij4KLTwhRU5USVRZIHZC
YXIgIiYjeDJBRTg7Ij4KLTwhRU5USVRZIHZCYXJ2ICImI3gyQUU5OyI+Ci08IUVOVElUWSBWYmFy
ICImI3gyQUVCOyI+Ci08IUVOVElUWSBOb3QgIiYjeDJBRUM7Ij4KLTwhRU5USVRZIGJOb3QgIiYj
eDJBRUQ7Ij4KLTwhRU5USVRZIHJubWlkICImI3gyQUVFOyI+Ci08IUVOVElUWSBjaXJtaWQgIiYj
eDJBRUY7Ij4KLTwhRU5USVRZIG1pZGNpciAiJiN4MkFGMDsiPgotPCFFTlRJVFkgdG9wY2lyICIm
I3gyQUYxOyI+Ci08IUVOVElUWSBuaHBhciAiJiN4MkFGMjsiPgotPCFFTlRJVFkgcGFyc2ltICIm
I3gyQUYzOyI+Ci08IUVOVElUWSBwYXJzbCAiJiN4MkFGRDsiPgotPCFFTlRJVFkgbnBhcnNsICIm
I3gyQUZEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGZmbGlnICImI3hGQjAwOyI+Ci08IUVOVElUWSBm
aWxpZyAiJiN4RkIwMTsiPgotPCFFTlRJVFkgZmxsaWcgIiYjeEZCMDI7Ij4KLTwhRU5USVRZIGZm
aWxpZyAiJiN4RkIwMzsiPgotPCFFTlRJVFkgZmZsbGlnICImI3hGQjA0OyI+Ci08IUVOVElUWSBB
c2NyICImI3gxRDQ5QzsiPgotPCFFTlRJVFkgQ3NjciAiJiN4MUQ0OUU7Ij4KLTwhRU5USVRZIERz
Y3IgIiYjeDFENDlGOyI+Ci08IUVOVElUWSBHc2NyICImI3gxRDRBMjsiPgotPCFFTlRJVFkgSnNj
ciAiJiN4MUQ0QTU7Ij4KLTwhRU5USVRZIEtzY3IgIiYjeDFENEE2OyI+Ci08IUVOVElUWSBOc2Ny
ICImI3gxRDRBOTsiPgotPCFFTlRJVFkgT3NjciAiJiN4MUQ0QUE7Ij4KLTwhRU5USVRZIFBzY3Ig
IiYjeDFENEFCOyI+Ci08IUVOVElUWSBRc2NyICImI3gxRDRBQzsiPgotPCFFTlRJVFkgU3NjciAi
JiN4MUQ0QUU7Ij4KLTwhRU5USVRZIFRzY3IgIiYjeDFENEFGOyI+Ci08IUVOVElUWSBVc2NyICIm
I3gxRDRCMDsiPgotPCFFTlRJVFkgVnNjciAiJiN4MUQ0QjE7Ij4KLTwhRU5USVRZIFdzY3IgIiYj
eDFENEIyOyI+Ci08IUVOVElUWSBYc2NyICImI3gxRDRCMzsiPgotPCFFTlRJVFkgWXNjciAiJiN4
MUQ0QjQ7Ij4KLTwhRU5USVRZIFpzY3IgIiYjeDFENEI1OyI+Ci08IUVOVElUWSBhc2NyICImI3gx
RDRCNjsiPgotPCFFTlRJVFkgYnNjciAiJiN4MUQ0Qjc7Ij4KLTwhRU5USVRZIGNzY3IgIiYjeDFE
NEI4OyI+Ci08IUVOVElUWSBkc2NyICImI3gxRDRCOTsiPgotPCFFTlRJVFkgZnNjciAiJiN4MUQ0
QkI7Ij4KLTwhRU5USVRZIGhzY3IgIiYjeDFENEJEOyI+Ci08IUVOVElUWSBpc2NyICImI3gxRDRC
RTsiPgotPCFFTlRJVFkganNjciAiJiN4MUQ0QkY7Ij4KLTwhRU5USVRZIGtzY3IgIiYjeDFENEMw
OyI+Ci08IUVOVElUWSBsc2NyICImI3gxRDRDMTsiPgotPCFFTlRJVFkgbXNjciAiJiN4MUQ0QzI7
Ij4KLTwhRU5USVRZIG5zY3IgIiYjeDFENEMzOyI+Ci08IUVOVElUWSBwc2NyICImI3gxRDRDNTsi
PgotPCFFTlRJVFkgcXNjciAiJiN4MUQ0QzY7Ij4KLTwhRU5USVRZIHJzY3IgIiYjeDFENEM3OyI+
Ci08IUVOVElUWSBzc2NyICImI3gxRDRDODsiPgotPCFFTlRJVFkgdHNjciAiJiN4MUQ0Qzk7Ij4K
LTwhRU5USVRZIHVzY3IgIiYjeDFENENBOyI+Ci08IUVOVElUWSB2c2NyICImI3gxRDRDQjsiPgot
PCFFTlRJVFkgd3NjciAiJiN4MUQ0Q0M7Ij4KLTwhRU5USVRZIHhzY3IgIiYjeDFENENEOyI+Ci08
IUVOVElUWSB5c2NyICImI3gxRDRDRTsiPgotPCFFTlRJVFkgenNjciAiJiN4MUQ0Q0Y7Ij4KLTwh
RU5USVRZIEFmciAiJiN4MUQ1MDQ7Ij4KLTwhRU5USVRZIEJmciAiJiN4MUQ1MDU7Ij4KLTwhRU5U
SVRZIERmciAiJiN4MUQ1MDc7Ij4KLTwhRU5USVRZIEVmciAiJiN4MUQ1MDg7Ij4KLTwhRU5USVRZ
IEZmciAiJiN4MUQ1MDk7Ij4KLTwhRU5USVRZIEdmciAiJiN4MUQ1MEE7Ij4KLTwhRU5USVRZIEpm
ciAiJiN4MUQ1MEQ7Ij4KLTwhRU5USVRZIEtmciAiJiN4MUQ1MEU7Ij4KLTwhRU5USVRZIExmciAi
JiN4MUQ1MEY7Ij4KLTwhRU5USVRZIE1mciAiJiN4MUQ1MTA7Ij4KLTwhRU5USVRZIE5mciAiJiN4
MUQ1MTE7Ij4KLTwhRU5USVRZIE9mciAiJiN4MUQ1MTI7Ij4KLTwhRU5USVRZIFBmciAiJiN4MUQ1
MTM7Ij4KLTwhRU5USVRZIFFmciAiJiN4MUQ1MTQ7Ij4KLTwhRU5USVRZIFNmciAiJiN4MUQ1MTY7
Ij4KLTwhRU5USVRZIFRmciAiJiN4MUQ1MTc7Ij4KLTwhRU5USVRZIFVmciAiJiN4MUQ1MTg7Ij4K
LTwhRU5USVRZIFZmciAiJiN4MUQ1MTk7Ij4KLTwhRU5USVRZIFdmciAiJiN4MUQ1MUE7Ij4KLTwh
RU5USVRZIFhmciAiJiN4MUQ1MUI7Ij4KLTwhRU5USVRZIFlmciAiJiN4MUQ1MUM7Ij4KLTwhRU5U
SVRZIGFmciAiJiN4MUQ1MUU7Ij4KLTwhRU5USVRZIGJmciAiJiN4MUQ1MUY7Ij4KLTwhRU5USVRZ
IGNmciAiJiN4MUQ1MjA7Ij4KLTwhRU5USVRZIGRmciAiJiN4MUQ1MjE7Ij4KLTwhRU5USVRZIGVm
ciAiJiN4MUQ1MjI7Ij4KLTwhRU5USVRZIGZmciAiJiN4MUQ1MjM7Ij4KLTwhRU5USVRZIGdmciAi
JiN4MUQ1MjQ7Ij4KLTwhRU5USVRZIGhmciAiJiN4MUQ1MjU7Ij4KLTwhRU5USVRZIGlmciAiJiN4
MUQ1MjY7Ij4KLTwhRU5USVRZIGpmciAiJiN4MUQ1Mjc7Ij4KLTwhRU5USVRZIGtmciAiJiN4MUQ1
Mjg7Ij4KLTwhRU5USVRZIGxmciAiJiN4MUQ1Mjk7Ij4KLTwhRU5USVRZIG1mciAiJiN4MUQ1MkE7
Ij4KLTwhRU5USVRZIG5mciAiJiN4MUQ1MkI7Ij4KLTwhRU5USVRZIG9mciAiJiN4MUQ1MkM7Ij4K
LTwhRU5USVRZIHBmciAiJiN4MUQ1MkQ7Ij4KLTwhRU5USVRZIHFmciAiJiN4MUQ1MkU7Ij4KLTwh
RU5USVRZIHJmciAiJiN4MUQ1MkY7Ij4KLTwhRU5USVRZIHNmciAiJiN4MUQ1MzA7Ij4KLTwhRU5U
SVRZIHRmciAiJiN4MUQ1MzE7Ij4KLTwhRU5USVRZIHVmciAiJiN4MUQ1MzI7Ij4KLTwhRU5USVRZ
IHZmciAiJiN4MUQ1MzM7Ij4KLTwhRU5USVRZIHdmciAiJiN4MUQ1MzQ7Ij4KLTwhRU5USVRZIHhm
ciAiJiN4MUQ1MzU7Ij4KLTwhRU5USVRZIHlmciAiJiN4MUQ1MzY7Ij4KLTwhRU5USVRZIHpmciAi
JiN4MUQ1Mzc7Ij4KLTwhRU5USVRZIEFvcGYgIiYjeDFENTM4OyI+Ci08IUVOVElUWSBCb3BmICIm
I3gxRDUzOTsiPgotPCFFTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ij4KLTwhRU5USVRZIEVvcGYgIiYj
eDFENTNDOyI+Ci08IUVOVElUWSBGb3BmICImI3gxRDUzRDsiPgotPCFFTlRJVFkgR29wZiAiJiN4
MUQ1M0U7Ij4KLTwhRU5USVRZIElvcGYgIiYjeDFENTQwOyI+Ci08IUVOVElUWSBKb3BmICImI3gx
RDU0MTsiPgotPCFFTlRJVFkgS29wZiAiJiN4MUQ1NDI7Ij4KLTwhRU5USVRZIExvcGYgIiYjeDFE
NTQzOyI+Ci08IUVOVElUWSBNb3BmICImI3gxRDU0NDsiPgotPCFFTlRJVFkgT29wZiAiJiN4MUQ1
NDY7Ij4KLTwhRU5USVRZIFNvcGYgIiYjeDFENTRBOyI+Ci08IUVOVElUWSBUb3BmICImI3gxRDU0
QjsiPgotPCFFTlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ij4KLTwhRU5USVRZIFZvcGYgIiYjeDFENTRE
OyI+Ci08IUVOVElUWSBXb3BmICImI3gxRDU0RTsiPgotPCFFTlRJVFkgWG9wZiAiJiN4MUQ1NEY7
Ij4KLTwhRU5USVRZIFlvcGYgIiYjeDFENTUwOyI+Ci08IUVOVElUWSBhb3BmICImI3gxRDU1Mjsi
PgotPCFFTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ij4KLTwhRU5USVRZIGNvcGYgIiYjeDFENTU0OyI+
Ci08IUVOVElUWSBkb3BmICImI3gxRDU1NTsiPgotPCFFTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ij4K
LTwhRU5USVRZIGZvcGYgIiYjeDFENTU3OyI+Ci08IUVOVElUWSBnb3BmICImI3gxRDU1ODsiPgot
PCFFTlRJVFkgaG9wZiAiJiN4MUQ1NTk7Ij4KLTwhRU5USVRZIGlvcGYgIiYjeDFENTVBOyI+Ci08
IUVOVElUWSBqb3BmICImI3gxRDU1QjsiPgotPCFFTlRJVFkga29wZiAiJiN4MUQ1NUM7Ij4KLTwh
RU5USVRZIGxvcGYgIiYjeDFENTVEOyI+Ci08IUVOVElUWSBtb3BmICImI3gxRDU1RTsiPgotPCFF
TlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ij4KLTwhRU5USVRZIG9vcGYgIiYjeDFENTYwOyI+Ci08IUVO
VElUWSBwb3BmICImI3gxRDU2MTsiPgotPCFFTlRJVFkgcW9wZiAiJiN4MUQ1NjI7Ij4KLTwhRU5U
SVRZIHJvcGYgIiYjeDFENTYzOyI+Ci08IUVOVElUWSBzb3BmICImI3gxRDU2NDsiPgotPCFFTlRJ
VFkgdG9wZiAiJiN4MUQ1NjU7Ij4KLTwhRU5USVRZIHVvcGYgIiYjeDFENTY2OyI+Ci08IUVOVElU
WSB2b3BmICImI3gxRDU2NzsiPgotPCFFTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ij4KLTwhRU5USVRZ
IHhvcGYgIiYjeDFENTY5OyI+Ci08IUVOVElUWSB5b3BmICImI3gxRDU2QTsiPgotPCFFTlRJVFkg
em9wZiAiJiN4MUQ1NkI7Ij4KKzwhLS1FTlRJVFkgVGFiICImI3g5OyItLT4KKzwhLS1FTlRJVFkg
TmV3TGluZSAiJiN4QTsiLS0+Cis8IS0tRU5USVRZIGV4Y2wgIiYjeDIxOyItLT4KKzwhLS1FTlRJ
VFkgcXVvdCAiJiN4MjI7Ii0tPgorPCEtLUVOVElUWSBRVU9UICImI3gyMjsiLS0+Cis8IS0tRU5U
SVRZIG51bSAiJiN4MjM7Ii0tPgorPCEtLUVOVElUWSBkb2xsYXIgIiYjeDI0OyItLT4KKzwhLS1F
TlRJVFkgcGVyY250ICImI3gyNTsiLS0+Cis8IS0tRU5USVRZIGFtcCAiJiN4MjY7I3gyNjsiLS0+
Cis8IS0tRU5USVRZIEFNUCAiJiN4MjY7I3gyNjsiLS0+Cis8IS0tRU5USVRZIGFwb3MgIiYjeDI3
OyItLT4KKzwhLS1FTlRJVFkgbHBhciAiJiN4Mjg7Ii0tPgorPCEtLUVOVElUWSBycGFyICImI3gy
OTsiLS0+Cis8IS0tRU5USVRZIGFzdCAiJiN4MkE7Ii0tPgorPCEtLUVOVElUWSBtaWRhc3QgIiYj
eDJBOyItLT4KKzwhLS1FTlRJVFkgcGx1cyAiJiN4MkI7Ii0tPgorPCEtLUVOVElUWSBjb21tYSAi
JiN4MkM7Ii0tPgorPCEtLUVOVElUWSBwZXJpb2QgIiYjeDJFOyItLT4KKzwhLS1FTlRJVFkgc29s
ICImI3gyRjsiLS0+Cis8IS0tRU5USVRZIGNvbG9uICImI3gzQTsiLS0+Cis8IS0tRU5USVRZIHNl
bWkgIiYjeDNCOyItLT4KKzwhLS1FTlRJVFkgbHQgIiYjeDI2OyN4M0M7Ii0tPgorPCEtLUVOVElU
WSBMVCAiJiN4MjY7I3gzQzsiLS0+Cis8IS0tRU5USVRZIG52bHQgIiYjeDI2OyN4M0M7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGVxdWFscyAiJiN4M0Q7Ii0tPgorPCEtLUVOVElUWSBibmUgIiYj
eDNEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBndCAiJiN4M0U7Ii0tPgorPCEtLUVOVElUWSBH
VCAiJiN4M0U7Ii0tPgorPCEtLUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQyOyItLT4KKzwhLS1F
TlRJVFkgcXVlc3QgIiYjeDNGOyItLT4KKzwhLS1FTlRJVFkgY29tbWF0ICImI3g0MDsiLS0+Cis8
IS0tRU5USVRZIGxzcWIgIiYjeDVCOyItLT4KKzwhLS1FTlRJVFkgbGJyYWNrICImI3g1QjsiLS0+
Cis8IS0tRU5USVRZIGJzb2wgIiYjeDVDOyItLT4KKzwhLS1FTlRJVFkgcnNxYiAiJiN4NUQ7Ii0t
PgorPCEtLUVOVElUWSByYnJhY2sgIiYjeDVEOyItLT4KKzwhLS1FTlRJVFkgSGF0ICImI3g1RTsi
LS0+Cis8IS0tRU5USVRZIGxvd2JhciAiJiN4NUY7Ii0tPgorPCEtLUVOVElUWSBVbmRlckJhciAi
JiN4NUY7Ii0tPgorPCEtLUVOVElUWSBncmF2ZSAiJiN4NjA7Ii0tPgorPCEtLUVOVElUWSBEaWFj
cml0aWNhbEdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5USVRZIGZqbGlnICImI3g2NjsmI3g2QTsi
LS0+Cis8IS0tRU5USVRZIGxjdWIgIiYjeDdCOyItLT4KKzwhLS1FTlRJVFkgbGJyYWNlICImI3g3
QjsiLS0+Cis8IS0tRU5USVRZIHZlcmJhciAiJiN4N0M7Ii0tPgorPCEtLUVOVElUWSB2ZXJ0ICIm
I3g3QzsiLS0+Cis8IS0tRU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ii0tPgorPCEtLUVOVElU
WSByY3ViICImI3g3RDsiLS0+Cis8IS0tRU5USVRZIHJicmFjZSAiJiN4N0Q7Ii0tPgorPCEtLUVO
VElUWSBuYnNwICImI3hBMDsiLS0+Cis8IS0tRU5USVRZIE5vbkJyZWFraW5nU3BhY2UgIiYjeEEw
OyItLT4KKzwhLS1FTlRJVFkgaWV4Y2wgIiYjeEExOyItLT4KKzwhLS1FTlRJVFkgY2VudCAiJiN4
QTI7Ii0tPgorPCEtLUVOVElUWSBwb3VuZCAiJiN4QTM7Ii0tPgorPCEtLUVOVElUWSBjdXJyZW4g
IiYjeEE0OyItLT4KKzwhLS1FTlRJVFkgeWVuICImI3hBNTsiLS0+Cis8IS0tRU5USVRZIGJydmJh
ciAiJiN4QTY7Ii0tPgorPCEtLUVOVElUWSBzZWN0ICImI3hBNzsiLS0+Cis8IS0tRU5USVRZIERv
dCAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSBkaWUgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgRG91
YmxlRG90ICImI3hBODsiLS0+Cis8IS0tRU5USVRZIHVtbCAiJiN4QTg7Ii0tPgorPCEtLUVOVElU
WSBjb3B5ICImI3hBOTsiLS0+Cis8IS0tRU5USVRZIENPUFkgIiYjeEE5OyItLT4KKzwhLS1FTlRJ
VFkgb3JkZiAiJiN4QUE7Ii0tPgorPCEtLUVOVElUWSBsYXF1byAiJiN4QUI7Ii0tPgorPCEtLUVO
VElUWSBub3QgIiYjeEFDOyItLT4KKzwhLS1FTlRJVFkgc2h5ICImI3hBRDsiLS0+Cis8IS0tRU5U
SVRZIHJlZyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVkUiAiJiN4QUU7Ii0tPgorPCEt
LUVOVElUWSBSRUcgIiYjeEFFOyItLT4KKzwhLS1FTlRJVFkgbWFjciAiJiN4QUY7Ii0tPgorPCEt
LUVOVElUWSBzdHJucyAiJiN4QUY7Ii0tPgorPCEtLUVOVElUWSBkZWcgIiYjeEIwOyItLT4KKzwh
LS1FTlRJVFkgcGx1c21uICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHBtICImI3hCMTsiLS0+Cis8
IS0tRU5USVRZIFBsdXNNaW51cyAiJiN4QjE7Ii0tPgorPCEtLUVOVElUWSBzdXAyICImI3hCMjsi
LS0+Cis8IS0tRU5USVRZIHN1cDMgIiYjeEIzOyItLT4KKzwhLS1FTlRJVFkgYWN1dGUgIiYjeEI0
OyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxBY3V0ZSAiJiN4QjQ7Ii0tPgorPCEtLUVOVElU
WSBtaWNybyAiJiN4QjU7Ii0tPgorPCEtLUVOVElUWSBwYXJhICImI3hCNjsiLS0+Cis8IS0tRU5U
SVRZIG1pZGRvdCAiJiN4Qjc7Ii0tPgorPCEtLUVOVElUWSBjZW50ZXJkb3QgIiYjeEI3OyItLT4K
KzwhLS1FTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlZGlsICImI3hC
ODsiLS0+Cis8IS0tRU5USVRZIENlZGlsbGEgIiYjeEI4OyItLT4KKzwhLS1FTlRJVFkgc3VwMSAi
JiN4Qjk7Ii0tPgorPCEtLUVOVElUWSBvcmRtICImI3hCQTsiLS0+Cis8IS0tRU5USVRZIHJhcXVv
ICImI3hCQjsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNCAiJiN4QkM7Ii0tPgorPCEtLUVOVElUWSBm
cmFjMTIgIiYjeEJEOyItLT4KKzwhLS1FTlRJVFkgaGFsZiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElU
WSBmcmFjMzQgIiYjeEJFOyItLT4KKzwhLS1FTlRJVFkgaXF1ZXN0ICImI3hCRjsiLS0+Cis8IS0t
RU5USVRZIEFncmF2ZSAiJiN4QzA7Ii0tPgorPCEtLUVOVElUWSBBYWN1dGUgIiYjeEMxOyItLT4K
KzwhLS1FTlRJVFkgQWNpcmMgIiYjeEMyOyItLT4KKzwhLS1FTlRJVFkgQXRpbGRlICImI3hDMzsi
LS0+Cis8IS0tRU5USVRZIEF1bWwgIiYjeEM0OyItLT4KKzwhLS1FTlRJVFkgQXJpbmcgIiYjeEM1
OyItLT4KKzwhLS1FTlRJVFkgYW5nc3QgIiYjeEM1OyItLT4KKzwhLS1FTlRJVFkgQUVsaWcgIiYj
eEM2OyItLT4KKzwhLS1FTlRJVFkgQ2NlZGlsICImI3hDNzsiLS0+Cis8IS0tRU5USVRZIEVncmF2
ZSAiJiN4Qzg7Ii0tPgorPCEtLUVOVElUWSBFYWN1dGUgIiYjeEM5OyItLT4KKzwhLS1FTlRJVFkg
RWNpcmMgIiYjeENBOyItLT4KKzwhLS1FTlRJVFkgRXVtbCAiJiN4Q0I7Ii0tPgorPCEtLUVOVElU
WSBJZ3JhdmUgIiYjeENDOyItLT4KKzwhLS1FTlRJVFkgSWFjdXRlICImI3hDRDsiLS0+Cis8IS0t
RU5USVRZIEljaXJjICImI3hDRTsiLS0+Cis8IS0tRU5USVRZIEl1bWwgIiYjeENGOyItLT4KKzwh
LS1FTlRJVFkgRVRIICImI3hEMDsiLS0+Cis8IS0tRU5USVRZIE50aWxkZSAiJiN4RDE7Ii0tPgor
PCEtLUVOVElUWSBPZ3JhdmUgIiYjeEQyOyItLT4KKzwhLS1FTlRJVFkgT2FjdXRlICImI3hEMzsi
LS0+Cis8IS0tRU5USVRZIE9jaXJjICImI3hENDsiLS0+Cis8IS0tRU5USVRZIE90aWxkZSAiJiN4
RDU7Ii0tPgorPCEtLUVOVElUWSBPdW1sICImI3hENjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzICIm
I3hENzsiLS0+Cis8IS0tRU5USVRZIE9zbGFzaCAiJiN4RDg7Ii0tPgorPCEtLUVOVElUWSBVZ3Jh
dmUgIiYjeEQ5OyItLT4KKzwhLS1FTlRJVFkgVWFjdXRlICImI3hEQTsiLS0+Cis8IS0tRU5USVRZ
IFVjaXJjICImI3hEQjsiLS0+Cis8IS0tRU5USVRZIFV1bWwgIiYjeERDOyItLT4KKzwhLS1FTlRJ
VFkgWWFjdXRlICImI3hERDsiLS0+Cis8IS0tRU5USVRZIFRIT1JOICImI3hERTsiLS0+Cis8IS0t
RU5USVRZIHN6bGlnICImI3hERjsiLS0+Cis8IS0tRU5USVRZIGFncmF2ZSAiJiN4RTA7Ii0tPgor
PCEtLUVOVElUWSBhYWN1dGUgIiYjeEUxOyItLT4KKzwhLS1FTlRJVFkgYWNpcmMgIiYjeEUyOyIt
LT4KKzwhLS1FTlRJVFkgYXRpbGRlICImI3hFMzsiLS0+Cis8IS0tRU5USVRZIGF1bWwgIiYjeEU0
OyItLT4KKzwhLS1FTlRJVFkgYXJpbmcgIiYjeEU1OyItLT4KKzwhLS1FTlRJVFkgYWVsaWcgIiYj
eEU2OyItLT4KKzwhLS1FTlRJVFkgY2NlZGlsICImI3hFNzsiLS0+Cis8IS0tRU5USVRZIGVncmF2
ZSAiJiN4RTg7Ii0tPgorPCEtLUVOVElUWSBlYWN1dGUgIiYjeEU5OyItLT4KKzwhLS1FTlRJVFkg
ZWNpcmMgIiYjeEVBOyItLT4KKzwhLS1FTlRJVFkgZXVtbCAiJiN4RUI7Ii0tPgorPCEtLUVOVElU
WSBpZ3JhdmUgIiYjeEVDOyItLT4KKzwhLS1FTlRJVFkgaWFjdXRlICImI3hFRDsiLS0+Cis8IS0t
RU5USVRZIGljaXJjICImI3hFRTsiLS0+Cis8IS0tRU5USVRZIGl1bWwgIiYjeEVGOyItLT4KKzwh
LS1FTlRJVFkgZXRoICImI3hGMDsiLS0+Cis8IS0tRU5USVRZIG50aWxkZSAiJiN4RjE7Ii0tPgor
PCEtLUVOVElUWSBvZ3JhdmUgIiYjeEYyOyItLT4KKzwhLS1FTlRJVFkgb2FjdXRlICImI3hGMzsi
LS0+Cis8IS0tRU5USVRZIG9jaXJjICImI3hGNDsiLS0+Cis8IS0tRU5USVRZIG90aWxkZSAiJiN4
RjU7Ii0tPgorPCEtLUVOVElUWSBvdW1sICImI3hGNjsiLS0+Cis8IS0tRU5USVRZIGRpdmlkZSAi
JiN4Rjc7Ii0tPgorPCEtLUVOVElUWSBkaXYgIiYjeEY3OyItLT4KKzwhLS1FTlRJVFkgb3NsYXNo
ICImI3hGODsiLS0+Cis8IS0tRU5USVRZIHVncmF2ZSAiJiN4Rjk7Ii0tPgorPCEtLUVOVElUWSB1
YWN1dGUgIiYjeEZBOyItLT4KKzwhLS1FTlRJVFkgdWNpcmMgIiYjeEZCOyItLT4KKzwhLS1FTlRJ
VFkgdXVtbCAiJiN4RkM7Ii0tPgorPCEtLUVOVElUWSB5YWN1dGUgIiYjeEZEOyItLT4KKzwhLS1F
TlRJVFkgdGhvcm4gIiYjeEZFOyItLT4KKzwhLS1FTlRJVFkgeXVtbCAiJiN4RkY7Ii0tPgorPCEt
LUVOVElUWSBBbWFjciAiJiN4MTAwOyItLT4KKzwhLS1FTlRJVFkgYW1hY3IgIiYjeDEwMTsiLS0+
Cis8IS0tRU5USVRZIEFicmV2ZSAiJiN4MTAyOyItLT4KKzwhLS1FTlRJVFkgYWJyZXZlICImI3gx
MDM7Ii0tPgorPCEtLUVOVElUWSBBb2dvbiAiJiN4MTA0OyItLT4KKzwhLS1FTlRJVFkgYW9nb24g
IiYjeDEwNTsiLS0+Cis8IS0tRU5USVRZIENhY3V0ZSAiJiN4MTA2OyItLT4KKzwhLS1FTlRJVFkg
Y2FjdXRlICImI3gxMDc7Ii0tPgorPCEtLUVOVElUWSBDY2lyYyAiJiN4MTA4OyItLT4KKzwhLS1F
TlRJVFkgY2NpcmMgIiYjeDEwOTsiLS0+Cis8IS0tRU5USVRZIENkb3QgIiYjeDEwQTsiLS0+Cis8
IS0tRU5USVRZIGNkb3QgIiYjeDEwQjsiLS0+Cis8IS0tRU5USVRZIENjYXJvbiAiJiN4MTBDOyIt
LT4KKzwhLS1FTlRJVFkgY2Nhcm9uICImI3gxMEQ7Ii0tPgorPCEtLUVOVElUWSBEY2Fyb24gIiYj
eDEwRTsiLS0+Cis8IS0tRU5USVRZIGRjYXJvbiAiJiN4MTBGOyItLT4KKzwhLS1FTlRJVFkgRHN0
cm9rICImI3gxMTA7Ii0tPgorPCEtLUVOVElUWSBkc3Ryb2sgIiYjeDExMTsiLS0+Cis8IS0tRU5U
SVRZIEVtYWNyICImI3gxMTI7Ii0tPgorPCEtLUVOVElUWSBlbWFjciAiJiN4MTEzOyItLT4KKzwh
LS1FTlRJVFkgRWRvdCAiJiN4MTE2OyItLT4KKzwhLS1FTlRJVFkgZWRvdCAiJiN4MTE3OyItLT4K
KzwhLS1FTlRJVFkgRW9nb24gIiYjeDExODsiLS0+Cis8IS0tRU5USVRZIGVvZ29uICImI3gxMTk7
Ii0tPgorPCEtLUVOVElUWSBFY2Fyb24gIiYjeDExQTsiLS0+Cis8IS0tRU5USVRZIGVjYXJvbiAi
JiN4MTFCOyItLT4KKzwhLS1FTlRJVFkgR2NpcmMgIiYjeDExQzsiLS0+Cis8IS0tRU5USVRZIGdj
aXJjICImI3gxMUQ7Ii0tPgorPCEtLUVOVElUWSBHYnJldmUgIiYjeDExRTsiLS0+Cis8IS0tRU5U
SVRZIGdicmV2ZSAiJiN4MTFGOyItLT4KKzwhLS1FTlRJVFkgR2RvdCAiJiN4MTIwOyItLT4KKzwh
LS1FTlRJVFkgZ2RvdCAiJiN4MTIxOyItLT4KKzwhLS1FTlRJVFkgR2NlZGlsICImI3gxMjI7Ii0t
PgorPCEtLUVOVElUWSBIY2lyYyAiJiN4MTI0OyItLT4KKzwhLS1FTlRJVFkgaGNpcmMgIiYjeDEy
NTsiLS0+Cis8IS0tRU5USVRZIEhzdHJvayAiJiN4MTI2OyItLT4KKzwhLS1FTlRJVFkgaHN0cm9r
ICImI3gxMjc7Ii0tPgorPCEtLUVOVElUWSBJdGlsZGUgIiYjeDEyODsiLS0+Cis8IS0tRU5USVRZ
IGl0aWxkZSAiJiN4MTI5OyItLT4KKzwhLS1FTlRJVFkgSW1hY3IgIiYjeDEyQTsiLS0+Cis8IS0t
RU5USVRZIGltYWNyICImI3gxMkI7Ii0tPgorPCEtLUVOVElUWSBJb2dvbiAiJiN4MTJFOyItLT4K
KzwhLS1FTlRJVFkgaW9nb24gIiYjeDEyRjsiLS0+Cis8IS0tRU5USVRZIElkb3QgIiYjeDEzMDsi
LS0+Cis8IS0tRU5USVRZIGltYXRoICImI3gxMzE7Ii0tPgorPCEtLUVOVElUWSBpbm9kb3QgIiYj
eDEzMTsiLS0+Cis8IS0tRU5USVRZIElKbGlnICImI3gxMzI7Ii0tPgorPCEtLUVOVElUWSBpamxp
ZyAiJiN4MTMzOyItLT4KKzwhLS1FTlRJVFkgSmNpcmMgIiYjeDEzNDsiLS0+Cis8IS0tRU5USVRZ
IGpjaXJjICImI3gxMzU7Ii0tPgorPCEtLUVOVElUWSBLY2VkaWwgIiYjeDEzNjsiLS0+Cis8IS0t
RU5USVRZIGtjZWRpbCAiJiN4MTM3OyItLT4KKzwhLS1FTlRJVFkga2dyZWVuICImI3gxMzg7Ii0t
PgorPCEtLUVOVElUWSBMYWN1dGUgIiYjeDEzOTsiLS0+Cis8IS0tRU5USVRZIGxhY3V0ZSAiJiN4
MTNBOyItLT4KKzwhLS1FTlRJVFkgTGNlZGlsICImI3gxM0I7Ii0tPgorPCEtLUVOVElUWSBsY2Vk
aWwgIiYjeDEzQzsiLS0+Cis8IS0tRU5USVRZIExjYXJvbiAiJiN4MTNEOyItLT4KKzwhLS1FTlRJ
VFkgbGNhcm9uICImI3gxM0U7Ii0tPgorPCEtLUVOVElUWSBMbWlkb3QgIiYjeDEzRjsiLS0+Cis8
IS0tRU5USVRZIGxtaWRvdCAiJiN4MTQwOyItLT4KKzwhLS1FTlRJVFkgTHN0cm9rICImI3gxNDE7
Ii0tPgorPCEtLUVOVElUWSBsc3Ryb2sgIiYjeDE0MjsiLS0+Cis8IS0tRU5USVRZIE5hY3V0ZSAi
JiN4MTQzOyItLT4KKzwhLS1FTlRJVFkgbmFjdXRlICImI3gxNDQ7Ii0tPgorPCEtLUVOVElUWSBO
Y2VkaWwgIiYjeDE0NTsiLS0+Cis8IS0tRU5USVRZIG5jZWRpbCAiJiN4MTQ2OyItLT4KKzwhLS1F
TlRJVFkgTmNhcm9uICImI3gxNDc7Ii0tPgorPCEtLUVOVElUWSBuY2Fyb24gIiYjeDE0ODsiLS0+
Cis8IS0tRU5USVRZIG5hcG9zICImI3gxNDk7Ii0tPgorPCEtLUVOVElUWSBFTkcgIiYjeDE0QTsi
LS0+Cis8IS0tRU5USVRZIGVuZyAiJiN4MTRCOyItLT4KKzwhLS1FTlRJVFkgT21hY3IgIiYjeDE0
QzsiLS0+Cis8IS0tRU5USVRZIG9tYWNyICImI3gxNEQ7Ii0tPgorPCEtLUVOVElUWSBPZGJsYWMg
IiYjeDE1MDsiLS0+Cis8IS0tRU5USVRZIG9kYmxhYyAiJiN4MTUxOyItLT4KKzwhLS1FTlRJVFkg
T0VsaWcgIiYjeDE1MjsiLS0+Cis8IS0tRU5USVRZIG9lbGlnICImI3gxNTM7Ii0tPgorPCEtLUVO
VElUWSBSYWN1dGUgIiYjeDE1NDsiLS0+Cis8IS0tRU5USVRZIHJhY3V0ZSAiJiN4MTU1OyItLT4K
KzwhLS1FTlRJVFkgUmNlZGlsICImI3gxNTY7Ii0tPgorPCEtLUVOVElUWSByY2VkaWwgIiYjeDE1
NzsiLS0+Cis8IS0tRU5USVRZIFJjYXJvbiAiJiN4MTU4OyItLT4KKzwhLS1FTlRJVFkgcmNhcm9u
ICImI3gxNTk7Ii0tPgorPCEtLUVOVElUWSBTYWN1dGUgIiYjeDE1QTsiLS0+Cis8IS0tRU5USVRZ
IHNhY3V0ZSAiJiN4MTVCOyItLT4KKzwhLS1FTlRJVFkgU2NpcmMgIiYjeDE1QzsiLS0+Cis8IS0t
RU5USVRZIHNjaXJjICImI3gxNUQ7Ii0tPgorPCEtLUVOVElUWSBTY2VkaWwgIiYjeDE1RTsiLS0+
Cis8IS0tRU5USVRZIHNjZWRpbCAiJiN4MTVGOyItLT4KKzwhLS1FTlRJVFkgU2Nhcm9uICImI3gx
NjA7Ii0tPgorPCEtLUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiLS0+Cis8IS0tRU5USVRZIFRjZWRp
bCAiJiN4MTYyOyItLT4KKzwhLS1FTlRJVFkgdGNlZGlsICImI3gxNjM7Ii0tPgorPCEtLUVOVElU
WSBUY2Fyb24gIiYjeDE2NDsiLS0+Cis8IS0tRU5USVRZIHRjYXJvbiAiJiN4MTY1OyItLT4KKzwh
LS1FTlRJVFkgVHN0cm9rICImI3gxNjY7Ii0tPgorPCEtLUVOVElUWSB0c3Ryb2sgIiYjeDE2Nzsi
LS0+Cis8IS0tRU5USVRZIFV0aWxkZSAiJiN4MTY4OyItLT4KKzwhLS1FTlRJVFkgdXRpbGRlICIm
I3gxNjk7Ii0tPgorPCEtLUVOVElUWSBVbWFjciAiJiN4MTZBOyItLT4KKzwhLS1FTlRJVFkgdW1h
Y3IgIiYjeDE2QjsiLS0+Cis8IS0tRU5USVRZIFVicmV2ZSAiJiN4MTZDOyItLT4KKzwhLS1FTlRJ
VFkgdWJyZXZlICImI3gxNkQ7Ii0tPgorPCEtLUVOVElUWSBVcmluZyAiJiN4MTZFOyItLT4KKzwh
LS1FTlRJVFkgdXJpbmcgIiYjeDE2RjsiLS0+Cis8IS0tRU5USVRZIFVkYmxhYyAiJiN4MTcwOyIt
LT4KKzwhLS1FTlRJVFkgdWRibGFjICImI3gxNzE7Ii0tPgorPCEtLUVOVElUWSBVb2dvbiAiJiN4
MTcyOyItLT4KKzwhLS1FTlRJVFkgdW9nb24gIiYjeDE3MzsiLS0+Cis8IS0tRU5USVRZIFdjaXJj
ICImI3gxNzQ7Ii0tPgorPCEtLUVOVElUWSB3Y2lyYyAiJiN4MTc1OyItLT4KKzwhLS1FTlRJVFkg
WWNpcmMgIiYjeDE3NjsiLS0+Cis8IS0tRU5USVRZIHljaXJjICImI3gxNzc7Ii0tPgorPCEtLUVO
VElUWSBZdW1sICImI3gxNzg7Ii0tPgorPCEtLUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiLS0+Cis8
IS0tRU5USVRZIHphY3V0ZSAiJiN4MTdBOyItLT4KKzwhLS1FTlRJVFkgWmRvdCAiJiN4MTdCOyIt
LT4KKzwhLS1FTlRJVFkgemRvdCAiJiN4MTdDOyItLT4KKzwhLS1FTlRJVFkgWmNhcm9uICImI3gx
N0Q7Ii0tPgorPCEtLUVOVElUWSB6Y2Fyb24gIiYjeDE3RTsiLS0+Cis8IS0tRU5USVRZIGZub2Yg
IiYjeDE5MjsiLS0+Cis8IS0tRU5USVRZIGltcGVkICImI3gxQjU7Ii0tPgorPCEtLUVOVElUWSBn
YWN1dGUgIiYjeDFGNTsiLS0+Cis8IS0tRU5USVRZIGptYXRoICImI3gyMzc7Ii0tPgorPCEtLUVO
VElUWSBjaXJjICImI3gyQzY7Ii0tPgorPCEtLUVOVElUWSBjYXJvbiAiJiN4MkM3OyItLT4KKzwh
LS1FTlRJVFkgSGFjZWsgIiYjeDJDNzsiLS0+Cis8IS0tRU5USVRZIGJyZXZlICImI3gyRDg7Ii0t
PgorPCEtLUVOVElUWSBCcmV2ZSAiJiN4MkQ4OyItLT4KKzwhLS1FTlRJVFkgZG90ICImI3gyRDk7
Ii0tPgorPCEtLUVOVElUWSBEaWFjcml0aWNhbERvdCAiJiN4MkQ5OyItLT4KKzwhLS1FTlRJVFkg
cmluZyAiJiN4MkRBOyItLT4KKzwhLS1FTlRJVFkgb2dvbiAiJiN4MkRCOyItLT4KKzwhLS1FTlRJ
VFkgdGlsZGUgIiYjeDJEQzsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsVGlsZGUgIiYjeDJE
QzsiLS0+Cis8IS0tRU5USVRZIGRibGFjICImI3gyREQ7Ii0tPgorPCEtLUVOVElUWSBEaWFjcml0
aWNhbERvdWJsZUFjdXRlICImI3gyREQ7Ii0tPgorPCEtLUVOVElUWSBEb3duQnJldmUgIiYjeDMx
MTsiLS0+Cis8IS0tRU5USVRZIEFscGhhICImI3gzOTE7Ii0tPgorPCEtLUVOVElUWSBCZXRhICIm
I3gzOTI7Ii0tPgorPCEtLUVOVElUWSBHYW1tYSAiJiN4MzkzOyItLT4KKzwhLS1FTlRJVFkgRGVs
dGEgIiYjeDM5NDsiLS0+Cis8IS0tRU5USVRZIEVwc2lsb24gIiYjeDM5NTsiLS0+Cis8IS0tRU5U
SVRZIFpldGEgIiYjeDM5NjsiLS0+Cis8IS0tRU5USVRZIEV0YSAiJiN4Mzk3OyItLT4KKzwhLS1F
TlRJVFkgVGhldGEgIiYjeDM5ODsiLS0+Cis8IS0tRU5USVRZIElvdGEgIiYjeDM5OTsiLS0+Cis8
IS0tRU5USVRZIEthcHBhICImI3gzOUE7Ii0tPgorPCEtLUVOVElUWSBMYW1iZGEgIiYjeDM5Qjsi
LS0+Cis8IS0tRU5USVRZIE11ICImI3gzOUM7Ii0tPgorPCEtLUVOVElUWSBOdSAiJiN4MzlEOyIt
LT4KKzwhLS1FTlRJVFkgWGkgIiYjeDM5RTsiLS0+Cis8IS0tRU5USVRZIE9taWNyb24gIiYjeDM5
RjsiLS0+Cis8IS0tRU5USVRZIFBpICImI3gzQTA7Ii0tPgorPCEtLUVOVElUWSBSaG8gIiYjeDNB
MTsiLS0+Cis8IS0tRU5USVRZIFNpZ21hICImI3gzQTM7Ii0tPgorPCEtLUVOVElUWSBUYXUgIiYj
eDNBNDsiLS0+Cis8IS0tRU5USVRZIFVwc2lsb24gIiYjeDNBNTsiLS0+Cis8IS0tRU5USVRZIFBo
aSAiJiN4M0E2OyItLT4KKzwhLS1FTlRJVFkgQ2hpICImI3gzQTc7Ii0tPgorPCEtLUVOVElUWSBQ
c2kgIiYjeDNBODsiLS0+Cis8IS0tRU5USVRZIE9tZWdhICImI3gzQTk7Ii0tPgorPCEtLUVOVElU
WSBvaG0gIiYjeDNBOTsiLS0+Cis8IS0tRU5USVRZIGFscGhhICImI3gzQjE7Ii0tPgorPCEtLUVO
VElUWSBiZXRhICImI3gzQjI7Ii0tPgorPCEtLUVOVElUWSBnYW1tYSAiJiN4M0IzOyItLT4KKzwh
LS1FTlRJVFkgZGVsdGEgIiYjeDNCNDsiLS0+Cis8IS0tRU5USVRZIGVwc2kgIiYjeDNCNTsiLS0+
Cis8IS0tRU5USVRZIGVwc2lsb24gIiYjeDNCNTsiLS0+Cis8IS0tRU5USVRZIHpldGEgIiYjeDNC
NjsiLS0+Cis8IS0tRU5USVRZIGV0YSAiJiN4M0I3OyItLT4KKzwhLS1FTlRJVFkgdGhldGEgIiYj
eDNCODsiLS0+Cis8IS0tRU5USVRZIGlvdGEgIiYjeDNCOTsiLS0+Cis8IS0tRU5USVRZIGthcHBh
ICImI3gzQkE7Ii0tPgorPCEtLUVOVElUWSBsYW1iZGEgIiYjeDNCQjsiLS0+Cis8IS0tRU5USVRZ
IG11ICImI3gzQkM7Ii0tPgorPCEtLUVOVElUWSBudSAiJiN4M0JEOyItLT4KKzwhLS1FTlRJVFkg
eGkgIiYjeDNCRTsiLS0+Cis8IS0tRU5USVRZIG9taWNyb24gIiYjeDNCRjsiLS0+Cis8IS0tRU5U
SVRZIHBpICImI3gzQzA7Ii0tPgorPCEtLUVOVElUWSByaG8gIiYjeDNDMTsiLS0+Cis8IS0tRU5U
SVRZIHNpZ21hdiAiJiN4M0MyOyItLT4KKzwhLS1FTlRJVFkgdmFyc2lnbWEgIiYjeDNDMjsiLS0+
Cis8IS0tRU5USVRZIHNpZ21hZiAiJiN4M0MyOyItLT4KKzwhLS1FTlRJVFkgc2lnbWEgIiYjeDND
MzsiLS0+Cis8IS0tRU5USVRZIHRhdSAiJiN4M0M0OyItLT4KKzwhLS1FTlRJVFkgdXBzaSAiJiN4
M0M1OyItLT4KKzwhLS1FTlRJVFkgdXBzaWxvbiAiJiN4M0M1OyItLT4KKzwhLS1FTlRJVFkgcGhp
ICImI3gzQzY7Ii0tPgorPCEtLUVOVElUWSBjaGkgIiYjeDNDNzsiLS0+Cis8IS0tRU5USVRZIHBz
aSAiJiN4M0M4OyItLT4KKzwhLS1FTlRJVFkgb21lZ2EgIiYjeDNDOTsiLS0+Cis8IS0tRU5USVRZ
IHRoZXRhdiAiJiN4M0QxOyItLT4KKzwhLS1FTlRJVFkgdmFydGhldGEgIiYjeDNEMTsiLS0+Cis8
IS0tRU5USVRZIHRoZXRhc3ltICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSBVcHNpICImI3gzRDI7
Ii0tPgorPCEtLUVOVElUWSB1cHNpaCAiJiN4M0QyOyItLT4KKzwhLS1FTlRJVFkgc3RyYWlnaHRw
aGkgIiYjeDNENTsiLS0+Cis8IS0tRU5USVRZIHBoaXYgIiYjeDNENTsiLS0+Cis8IS0tRU5USVRZ
IHZhcnBoaSAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGl2ICImI3gzRDY7Ii0tPgorPCEtLUVO
VElUWSB2YXJwaSAiJiN4M0Q2OyItLT4KKzwhLS1FTlRJVFkgR2FtbWFkICImI3gzREM7Ii0tPgor
PCEtLUVOVElUWSBnYW1tYWQgIiYjeDNERDsiLS0+Cis8IS0tRU5USVRZIGRpZ2FtbWEgIiYjeDNE
RDsiLS0+Cis8IS0tRU5USVRZIGthcHBhdiAiJiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgdmFya2Fw
cGEgIiYjeDNGMDsiLS0+Cis8IS0tRU5USVRZIHJob3YgIiYjeDNGMTsiLS0+Cis8IS0tRU5USVRZ
IHZhcnJobyAiJiN4M0YxOyItLT4KKzwhLS1FTlRJVFkgZXBzaXYgIiYjeDNGNTsiLS0+Cis8IS0t
RU5USVRZIHN0cmFpZ2h0ZXBzaWxvbiAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJVFkgdmFyZXBzaWxv
biAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJVFkgYmVwc2kgIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZ
IGJhY2tlcHNpbG9uICImI3gzRjY7Ii0tPgorPCEtLUVOVElUWSBJT2N5ICImI3g0MDE7Ii0tPgor
PCEtLUVOVElUWSBESmN5ICImI3g0MDI7Ii0tPgorPCEtLUVOVElUWSBHSmN5ICImI3g0MDM7Ii0t
PgorPCEtLUVOVElUWSBKdWtjeSAiJiN4NDA0OyItLT4KKzwhLS1FTlRJVFkgRFNjeSAiJiN4NDA1
OyItLT4KKzwhLS1FTlRJVFkgSXVrY3kgIiYjeDQwNjsiLS0+Cis8IS0tRU5USVRZIFlJY3kgIiYj
eDQwNzsiLS0+Cis8IS0tRU5USVRZIEpzZXJjeSAiJiN4NDA4OyItLT4KKzwhLS1FTlRJVFkgTEpj
eSAiJiN4NDA5OyItLT4KKzwhLS1FTlRJVFkgTkpjeSAiJiN4NDBBOyItLT4KKzwhLS1FTlRJVFkg
VFNIY3kgIiYjeDQwQjsiLS0+Cis8IS0tRU5USVRZIEtKY3kgIiYjeDQwQzsiLS0+Cis8IS0tRU5U
SVRZIFVicmN5ICImI3g0MEU7Ii0tPgorPCEtLUVOVElUWSBEWmN5ICImI3g0MEY7Ii0tPgorPCEt
LUVOVElUWSBBY3kgIiYjeDQxMDsiLS0+Cis8IS0tRU5USVRZIEJjeSAiJiN4NDExOyItLT4KKzwh
LS1FTlRJVFkgVmN5ICImI3g0MTI7Ii0tPgorPCEtLUVOVElUWSBHY3kgIiYjeDQxMzsiLS0+Cis8
IS0tRU5USVRZIERjeSAiJiN4NDE0OyItLT4KKzwhLS1FTlRJVFkgSUVjeSAiJiN4NDE1OyItLT4K
KzwhLS1FTlRJVFkgWkhjeSAiJiN4NDE2OyItLT4KKzwhLS1FTlRJVFkgWmN5ICImI3g0MTc7Ii0t
PgorPCEtLUVOVElUWSBJY3kgIiYjeDQxODsiLS0+Cis8IS0tRU5USVRZIEpjeSAiJiN4NDE5OyIt
LT4KKzwhLS1FTlRJVFkgS2N5ICImI3g0MUE7Ii0tPgorPCEtLUVOVElUWSBMY3kgIiYjeDQxQjsi
LS0+Cis8IS0tRU5USVRZIE1jeSAiJiN4NDFDOyItLT4KKzwhLS1FTlRJVFkgTmN5ICImI3g0MUQ7
Ii0tPgorPCEtLUVOVElUWSBPY3kgIiYjeDQxRTsiLS0+Cis8IS0tRU5USVRZIFBjeSAiJiN4NDFG
OyItLT4KKzwhLS1FTlRJVFkgUmN5ICImI3g0MjA7Ii0tPgorPCEtLUVOVElUWSBTY3kgIiYjeDQy
MTsiLS0+Cis8IS0tRU5USVRZIFRjeSAiJiN4NDIyOyItLT4KKzwhLS1FTlRJVFkgVWN5ICImI3g0
MjM7Ii0tPgorPCEtLUVOVElUWSBGY3kgIiYjeDQyNDsiLS0+Cis8IS0tRU5USVRZIEtIY3kgIiYj
eDQyNTsiLS0+Cis8IS0tRU5USVRZIFRTY3kgIiYjeDQyNjsiLS0+Cis8IS0tRU5USVRZIENIY3kg
IiYjeDQyNzsiLS0+Cis8IS0tRU5USVRZIFNIY3kgIiYjeDQyODsiLS0+Cis8IS0tRU5USVRZIFNI
Q0hjeSAiJiN4NDI5OyItLT4KKzwhLS1FTlRJVFkgSEFSRGN5ICImI3g0MkE7Ii0tPgorPCEtLUVO
VElUWSBZY3kgIiYjeDQyQjsiLS0+Cis8IS0tRU5USVRZIFNPRlRjeSAiJiN4NDJDOyItLT4KKzwh
LS1FTlRJVFkgRWN5ICImI3g0MkQ7Ii0tPgorPCEtLUVOVElUWSBZVWN5ICImI3g0MkU7Ii0tPgor
PCEtLUVOVElUWSBZQWN5ICImI3g0MkY7Ii0tPgorPCEtLUVOVElUWSBhY3kgIiYjeDQzMDsiLS0+
Cis8IS0tRU5USVRZIGJjeSAiJiN4NDMxOyItLT4KKzwhLS1FTlRJVFkgdmN5ICImI3g0MzI7Ii0t
PgorPCEtLUVOVElUWSBnY3kgIiYjeDQzMzsiLS0+Cis8IS0tRU5USVRZIGRjeSAiJiN4NDM0OyIt
LT4KKzwhLS1FTlRJVFkgaWVjeSAiJiN4NDM1OyItLT4KKzwhLS1FTlRJVFkgemhjeSAiJiN4NDM2
OyItLT4KKzwhLS1FTlRJVFkgemN5ICImI3g0Mzc7Ii0tPgorPCEtLUVOVElUWSBpY3kgIiYjeDQz
ODsiLS0+Cis8IS0tRU5USVRZIGpjeSAiJiN4NDM5OyItLT4KKzwhLS1FTlRJVFkga2N5ICImI3g0
M0E7Ii0tPgorPCEtLUVOVElUWSBsY3kgIiYjeDQzQjsiLS0+Cis8IS0tRU5USVRZIG1jeSAiJiN4
NDNDOyItLT4KKzwhLS1FTlRJVFkgbmN5ICImI3g0M0Q7Ii0tPgorPCEtLUVOVElUWSBvY3kgIiYj
eDQzRTsiLS0+Cis8IS0tRU5USVRZIHBjeSAiJiN4NDNGOyItLT4KKzwhLS1FTlRJVFkgcmN5ICIm
I3g0NDA7Ii0tPgorPCEtLUVOVElUWSBzY3kgIiYjeDQ0MTsiLS0+Cis8IS0tRU5USVRZIHRjeSAi
JiN4NDQyOyItLT4KKzwhLS1FTlRJVFkgdWN5ICImI3g0NDM7Ii0tPgorPCEtLUVOVElUWSBmY3kg
IiYjeDQ0NDsiLS0+Cis8IS0tRU5USVRZIGtoY3kgIiYjeDQ0NTsiLS0+Cis8IS0tRU5USVRZIHRz
Y3kgIiYjeDQ0NjsiLS0+Cis8IS0tRU5USVRZIGNoY3kgIiYjeDQ0NzsiLS0+Cis8IS0tRU5USVRZ
IHNoY3kgIiYjeDQ0ODsiLS0+Cis8IS0tRU5USVRZIHNoY2hjeSAiJiN4NDQ5OyItLT4KKzwhLS1F
TlRJVFkgaGFyZGN5ICImI3g0NEE7Ii0tPgorPCEtLUVOVElUWSB5Y3kgIiYjeDQ0QjsiLS0+Cis8
IS0tRU5USVRZIHNvZnRjeSAiJiN4NDRDOyItLT4KKzwhLS1FTlRJVFkgZWN5ICImI3g0NEQ7Ii0t
PgorPCEtLUVOVElUWSB5dWN5ICImI3g0NEU7Ii0tPgorPCEtLUVOVElUWSB5YWN5ICImI3g0NEY7
Ii0tPgorPCEtLUVOVElUWSBpb2N5ICImI3g0NTE7Ii0tPgorPCEtLUVOVElUWSBkamN5ICImI3g0
NTI7Ii0tPgorPCEtLUVOVElUWSBnamN5ICImI3g0NTM7Ii0tPgorPCEtLUVOVElUWSBqdWtjeSAi
JiN4NDU0OyItLT4KKzwhLS1FTlRJVFkgZHNjeSAiJiN4NDU1OyItLT4KKzwhLS1FTlRJVFkgaXVr
Y3kgIiYjeDQ1NjsiLS0+Cis8IS0tRU5USVRZIHlpY3kgIiYjeDQ1NzsiLS0+Cis8IS0tRU5USVRZ
IGpzZXJjeSAiJiN4NDU4OyItLT4KKzwhLS1FTlRJVFkgbGpjeSAiJiN4NDU5OyItLT4KKzwhLS1F
TlRJVFkgbmpjeSAiJiN4NDVBOyItLT4KKzwhLS1FTlRJVFkgdHNoY3kgIiYjeDQ1QjsiLS0+Cis8
IS0tRU5USVRZIGtqY3kgIiYjeDQ1QzsiLS0+Cis8IS0tRU5USVRZIHVicmN5ICImI3g0NUU7Ii0t
PgorPCEtLUVOVElUWSBkemN5ICImI3g0NUY7Ii0tPgorPCEtLUVOVElUWSBlbnNwICImI3gyMDAy
OyItLT4KKzwhLS1FTlRJVFkgZW1zcCAiJiN4MjAwMzsiLS0+Cis8IS0tRU5USVRZIGVtc3AxMyAi
JiN4MjAwNDsiLS0+Cis8IS0tRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiLS0+Cis8IS0tRU5USVRZ
IG51bXNwICImI3gyMDA3OyItLT4KKzwhLS1FTlRJVFkgcHVuY3NwICImI3gyMDA4OyItLT4KKzwh
LS1FTlRJVFkgdGhpbnNwICImI3gyMDA5OyItLT4KKzwhLS1FTlRJVFkgVGhpblNwYWNlICImI3gy
MDA5OyItLT4KKzwhLS1FTlRJVFkgaGFpcnNwICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgVmVy
eVRoaW5TcGFjZSAiJiN4MjAwQTsiLS0+Cis8IS0tRU5USVRZIFplcm9XaWR0aFNwYWNlICImI3gy
MDBCOyItLT4KKzwhLS1FTlRJVFkgTmVnYXRpdmVWZXJ5VGhpblNwYWNlICImI3gyMDBCOyItLT4K
KzwhLS1FTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBO
ZWdhdGl2ZU1lZGl1bVNwYWNlICImI3gyMDBCOyItLT4KKzwhLS1FTlRJVFkgTmVnYXRpdmVUaGlj
a1NwYWNlICImI3gyMDBCOyItLT4KKzwhLS1FTlRJVFkgenduaiAiJiN4MjAwQzsiLS0+Cis8IS0t
RU5USVRZIHp3aiAiJiN4MjAwRDsiLS0+Cis8IS0tRU5USVRZIGxybSAiJiN4MjAwRTsiLS0+Cis8
IS0tRU5USVRZIHJsbSAiJiN4MjAwRjsiLS0+Cis8IS0tRU5USVRZIGh5cGhlbiAiJiN4MjAxMDsi
LS0+Cis8IS0tRU5USVRZIGRhc2ggIiYjeDIwMTA7Ii0tPgorPCEtLUVOVElUWSBuZGFzaCAiJiN4
MjAxMzsiLS0+Cis8IS0tRU5USVRZIG1kYXNoICImI3gyMDE0OyItLT4KKzwhLS1FTlRJVFkgaG9y
YmFyICImI3gyMDE1OyItLT4KKzwhLS1FTlRJVFkgVmVyYmFyICImI3gyMDE2OyItLT4KKzwhLS1F
TlRJVFkgVmVydCAiJiN4MjAxNjsiLS0+Cis8IS0tRU5USVRZIGxzcXVvICImI3gyMDE4OyItLT4K
KzwhLS1FTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ii0tPgorPCEtLUVOVElUWSByc3F1
byAiJiN4MjAxOTsiLS0+Cis8IS0tRU5USVRZIHJzcXVvciAiJiN4MjAxOTsiLS0+Cis8IS0tRU5U
SVRZIENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiLS0+Cis8IS0tRU5USVRZIGxzcXVvciAiJiN4
MjAxQTsiLS0+Cis8IS0tRU5USVRZIHNicXVvICImI3gyMDFBOyItLT4KKzwhLS1FTlRJVFkgbGRx
dW8gIiYjeDIwMUM7Ii0tPgorPCEtLUVOVElUWSBPcGVuQ3VybHlEb3VibGVRdW90ZSAiJiN4MjAx
QzsiLS0+Cis8IS0tRU5USVRZIHJkcXVvICImI3gyMDFEOyItLT4KKzwhLS1FTlRJVFkgcmRxdW9y
ICImI3gyMDFEOyItLT4KKzwhLS1FTlRJVFkgQ2xvc2VDdXJseURvdWJsZVF1b3RlICImI3gyMDFE
OyItLT4KKzwhLS1FTlRJVFkgbGRxdW9yICImI3gyMDFFOyItLT4KKzwhLS1FTlRJVFkgYmRxdW8g
IiYjeDIwMUU7Ii0tPgorPCEtLUVOVElUWSBkYWdnZXIgIiYjeDIwMjA7Ii0tPgorPCEtLUVOVElU
WSBEYWdnZXIgIiYjeDIwMjE7Ii0tPgorPCEtLUVOVElUWSBkZGFnZ2VyICImI3gyMDIxOyItLT4K
KzwhLS1FTlRJVFkgYnVsbCAiJiN4MjAyMjsiLS0+Cis8IS0tRU5USVRZIGJ1bGxldCAiJiN4MjAy
MjsiLS0+Cis8IS0tRU5USVRZIG5sZHIgIiYjeDIwMjU7Ii0tPgorPCEtLUVOVElUWSBoZWxsaXAg
IiYjeDIwMjY7Ii0tPgorPCEtLUVOVElUWSBtbGRyICImI3gyMDI2OyItLT4KKzwhLS1FTlRJVFkg
cGVybWlsICImI3gyMDMwOyItLT4KKzwhLS1FTlRJVFkgcGVydGVuayAiJiN4MjAzMTsiLS0+Cis8
IS0tRU5USVRZIHByaW1lICImI3gyMDMyOyItLT4KKzwhLS1FTlRJVFkgUHJpbWUgIiYjeDIwMzM7
Ii0tPgorPCEtLUVOVElUWSB0cHJpbWUgIiYjeDIwMzQ7Ii0tPgorPCEtLUVOVElUWSBicHJpbWUg
IiYjeDIwMzU7Ii0tPgorPCEtLUVOVElUWSBiYWNrcHJpbWUgIiYjeDIwMzU7Ii0tPgorPCEtLUVO
VElUWSBsc2FxdW8gIiYjeDIwMzk7Ii0tPgorPCEtLUVOVElUWSByc2FxdW8gIiYjeDIwM0E7Ii0t
PgorPCEtLUVOVElUWSBvbGluZSAiJiN4MjAzRTsiLS0+Cis8IS0tRU5USVRZIE92ZXJCYXIgIiYj
eDIwM0U7Ii0tPgorPCEtLUVOVElUWSBjYXJldCAiJiN4MjA0MTsiLS0+Cis8IS0tRU5USVRZIGh5
YnVsbCAiJiN4MjA0MzsiLS0+Cis8IS0tRU5USVRZIGZyYXNsICImI3gyMDQ0OyItLT4KKzwhLS1F
TlRJVFkgYnNlbWkgIiYjeDIwNEY7Ii0tPgorPCEtLUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ii0t
PgorPCEtLUVOVElUWSBNZWRpdW1TcGFjZSAiJiN4MjA1RjsiLS0+Cis8IS0tRU5USVRZIFRoaWNr
U3BhY2UgIiYjeDIwNUY7JiN4MjAwQTsiLS0+Cis8IS0tRU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7
Ii0tPgorPCEtLUVOVElUWSBBcHBseUZ1bmN0aW9uICImI3gyMDYxOyItLT4KKzwhLS1FTlRJVFkg
YWYgIiYjeDIwNjE7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2libGVUaW1lcyAiJiN4MjA2MjsiLS0+
Cis8IS0tRU5USVRZIGl0ICImI3gyMDYyOyItLT4KKzwhLS1FTlRJVFkgSW52aXNpYmxlQ29tbWEg
IiYjeDIwNjM7Ii0tPgorPCEtLUVOVElUWSBpYyAiJiN4MjA2MzsiLS0+Cis8IS0tRU5USVRZIGV1
cm8gIiYjeDIwQUM7Ii0tPgorPCEtLUVOVElUWSB0ZG90ICImI3gyMERCOyItLT4KKzwhLS1FTlRJ
VFkgVHJpcGxlRG90ICImI3gyMERCOyItLT4KKzwhLS1FTlRJVFkgRG90RG90ICImI3gyMERDOyIt
LT4KKzwhLS1FTlRJVFkgQ29wZiAiJiN4MjEwMjsiLS0+Cis8IS0tRU5USVRZIGNvbXBsZXhlcyAi
JiN4MjEwMjsiLS0+Cis8IS0tRU5USVRZIGluY2FyZSAiJiN4MjEwNTsiLS0+Cis8IS0tRU5USVRZ
IGdzY3IgIiYjeDIxMEE7Ii0tPgorPCEtLUVOVElUWSBoYW1pbHQgIiYjeDIxMEI7Ii0tPgorPCEt
LUVOVElUWSBIaWxiZXJ0U3BhY2UgIiYjeDIxMEI7Ii0tPgorPCEtLUVOVElUWSBIc2NyICImI3gy
MTBCOyItLT4KKzwhLS1FTlRJVFkgSGZyICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgUG9pbmNh
cmVwbGFuZSAiJiN4MjEwQzsiLS0+Cis8IS0tRU5USVRZIHF1YXRlcm5pb25zICImI3gyMTBEOyIt
LT4KKzwhLS1FTlRJVFkgSG9wZiAiJiN4MjEwRDsiLS0+Cis8IS0tRU5USVRZIHBsYW5ja2ggIiYj
eDIxMEU7Ii0tPgorPCEtLUVOVElUWSBwbGFuY2sgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBo
YmFyICImI3gyMTBGOyItLT4KKzwhLS1FTlRJVFkgcGxhbmt2ICImI3gyMTBGOyItLT4KKzwhLS1F
TlRJVFkgaHNsYXNoICImI3gyMTBGOyItLT4KKzwhLS1FTlRJVFkgSXNjciAiJiN4MjExMDsiLS0+
Cis8IS0tRU5USVRZIGltYWdsaW5lICImI3gyMTEwOyItLT4KKzwhLS1FTlRJVFkgaW1hZ2UgIiYj
eDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJbSAiJiN4MjExMTsiLS0+Cis8IS0tRU5USVRZIGltYWdw
YXJ0ICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgSWZyICImI3gyMTExOyItLT4KKzwhLS1FTlRJ
VFkgTHNjciAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGxhZ3JhbiAiJiN4MjExMjsiLS0+Cis8
IS0tRU5USVRZIExhcGxhY2V0cmYgIiYjeDIxMTI7Ii0tPgorPCEtLUVOVElUWSBlbGwgIiYjeDIx
MTM7Ii0tPgorPCEtLUVOVElUWSBOb3BmICImI3gyMTE1OyItLT4KKzwhLS1FTlRJVFkgbmF0dXJh
bHMgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ii0tPgorPCEtLUVO
VElUWSBjb3B5c3IgIiYjeDIxMTc7Ii0tPgorPCEtLUVOVElUWSB3ZWllcnAgIiYjeDIxMTg7Ii0t
PgorPCEtLUVOVElUWSB3cCAiJiN4MjExODsiLS0+Cis8IS0tRU5USVRZIFBvcGYgIiYjeDIxMTk7
Ii0tPgorPCEtLUVOVElUWSBwcmltZXMgIiYjeDIxMTk7Ii0tPgorPCEtLUVOVElUWSByYXRpb25h
bHMgIiYjeDIxMUE7Ii0tPgorPCEtLUVOVElUWSBRb3BmICImI3gyMTFBOyItLT4KKzwhLS1FTlRJ
VFkgUnNjciAiJiN4MjExQjsiLS0+Cis8IS0tRU5USVRZIHJlYWxpbmUgIiYjeDIxMUI7Ii0tPgor
PCEtLUVOVElUWSByZWFsICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgUmUgIiYjeDIxMUM7Ii0t
PgorPCEtLUVOVElUWSByZWFscGFydCAiJiN4MjExQzsiLS0+Cis8IS0tRU5USVRZIFJmciAiJiN4
MjExQzsiLS0+Cis8IS0tRU5USVRZIHJlYWxzICImI3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgUm9w
ZiAiJiN4MjExRDsiLS0+Cis8IS0tRU5USVRZIHJ4ICImI3gyMTFFOyItLT4KKzwhLS1FTlRJVFkg
dHJhZGUgIiYjeDIxMjI7Ii0tPgorPCEtLUVOVElUWSBUUkFERSAiJiN4MjEyMjsiLS0+Cis8IS0t
RU5USVRZIGludGVnZXJzICImI3gyMTI0OyItLT4KKzwhLS1FTlRJVFkgWm9wZiAiJiN4MjEyNDsi
LS0+Cis8IS0tRU5USVRZIG1obyAiJiN4MjEyNzsiLS0+Cis8IS0tRU5USVRZIFpmciAiJiN4MjEy
ODsiLS0+Cis8IS0tRU5USVRZIHplZXRyZiAiJiN4MjEyODsiLS0+Cis8IS0tRU5USVRZIGlpb3Rh
ICImI3gyMTI5OyItLT4KKzwhLS1FTlRJVFkgYmVybm91ICImI3gyMTJDOyItLT4KKzwhLS1FTlRJ
VFkgQmVybm91bGxpcyAiJiN4MjEyQzsiLS0+Cis8IS0tRU5USVRZIEJzY3IgIiYjeDIxMkM7Ii0t
PgorPCEtLUVOVElUWSBDZnIgIiYjeDIxMkQ7Ii0tPgorPCEtLUVOVElUWSBDYXlsZXlzICImI3gy
MTJEOyItLT4KKzwhLS1FTlRJVFkgZXNjciAiJiN4MjEyRjsiLS0+Cis8IS0tRU5USVRZIEVzY3Ig
IiYjeDIxMzA7Ii0tPgorPCEtLUVOVElUWSBleHBlY3RhdGlvbiAiJiN4MjEzMDsiLS0+Cis8IS0t
RU5USVRZIEZzY3IgIiYjeDIxMzE7Ii0tPgorPCEtLUVOVElUWSBGb3VyaWVydHJmICImI3gyMTMx
OyItLT4KKzwhLS1FTlRJVFkgcGhtbWF0ICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkgTWVsbGlu
dHJmICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkgTXNjciAiJiN4MjEzMzsiLS0+Cis8IS0tRU5U
SVRZIG9yZGVyICImI3gyMTM0OyItLT4KKzwhLS1FTlRJVFkgb3JkZXJvZiAiJiN4MjEzNDsiLS0+
Cis8IS0tRU5USVRZIG9zY3IgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBhbGVmc3ltICImI3gy
MTM1OyItLT4KKzwhLS1FTlRJVFkgYWxlcGggIiYjeDIxMzU7Ii0tPgorPCEtLUVOVElUWSBiZXRo
ICImI3gyMTM2OyItLT4KKzwhLS1FTlRJVFkgZ2ltZWwgIiYjeDIxMzc7Ii0tPgorPCEtLUVOVElU
WSBkYWxldGggIiYjeDIxMzg7Ii0tPgorPCEtLUVOVElUWSBDYXBpdGFsRGlmZmVyZW50aWFsRCAi
JiN4MjE0NTsiLS0+Cis8IS0tRU5USVRZIEREICImI3gyMTQ1OyItLT4KKzwhLS1FTlRJVFkgRGlm
ZmVyZW50aWFsRCAiJiN4MjE0NjsiLS0+Cis8IS0tRU5USVRZIGRkICImI3gyMTQ2OyItLT4KKzwh
LS1FTlRJVFkgRXhwb25lbnRpYWxFICImI3gyMTQ3OyItLT4KKzwhLS1FTlRJVFkgZXhwb25lbnRp
YWxlICImI3gyMTQ3OyItLT4KKzwhLS1FTlRJVFkgZWUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElU
WSBJbWFnaW5hcnlJICImI3gyMTQ4OyItLT4KKzwhLS1FTlRJVFkgaWkgIiYjeDIxNDg7Ii0tPgor
PCEtLUVOVElUWSBmcmFjMTMgIiYjeDIxNTM7Ii0tPgorPCEtLUVOVElUWSBmcmFjMjMgIiYjeDIx
NTQ7Ii0tPgorPCEtLUVOVElUWSBmcmFjMTUgIiYjeDIxNTU7Ii0tPgorPCEtLUVOVElUWSBmcmFj
MjUgIiYjeDIxNTY7Ii0tPgorPCEtLUVOVElUWSBmcmFjMzUgIiYjeDIxNTc7Ii0tPgorPCEtLUVO
VElUWSBmcmFjNDUgIiYjeDIxNTg7Ii0tPgorPCEtLUVOVElUWSBmcmFjMTYgIiYjeDIxNTk7Ii0t
PgorPCEtLUVOVElUWSBmcmFjNTYgIiYjeDIxNUE7Ii0tPgorPCEtLUVOVElUWSBmcmFjMTggIiYj
eDIxNUI7Ii0tPgorPCEtLUVOVElUWSBmcmFjMzggIiYjeDIxNUM7Ii0tPgorPCEtLUVOVElUWSBm
cmFjNTggIiYjeDIxNUQ7Ii0tPgorPCEtLUVOVElUWSBmcmFjNzggIiYjeDIxNUU7Ii0tPgorPCEt
LUVOVElUWSBsYXJyICImI3gyMTkwOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93ICImI3gyMTkw
OyItLT4KKzwhLS1FTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyItLT4KKzwhLS1FTlRJVFkgc2xh
cnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBTaG9ydExlZnRBcnJvdyAiJiN4MjE5MDsiLS0+
Cis8IS0tRU5USVRZIHVhcnIgIiYjeDIxOTE7Ii0tPgorPCEtLUVOVElUWSB1cGFycm93ICImI3gy
MTkxOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvdyAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIFNo
b3J0VXBBcnJvdyAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHJhcnIgIiYjeDIxOTI7Ii0tPgor
PCEtLUVOVElUWSByaWdodGFycm93ICImI3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRBcnJv
dyAiJiN4MjE5MjsiLS0+Cis8IS0tRU5USVRZIHNyYXJyICImI3gyMTkyOyItLT4KKzwhLS1FTlRJ
VFkgU2hvcnRSaWdodEFycm93ICImI3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgZGFyciAiJiN4MjE5
MzsiLS0+Cis8IS0tRU5USVRZIGRvd25hcnJvdyAiJiN4MjE5MzsiLS0+Cis8IS0tRU5USVRZIERv
d25BcnJvdyAiJiN4MjE5MzsiLS0+Cis8IS0tRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkz
OyItLT4KKzwhLS1FTlRJVFkgaGFyciAiJiN4MjE5NDsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdo
dGFycm93ICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7
Ii0tPgorPCEtLUVOVElUWSB2YXJyICImI3gyMTk1OyItLT4KKzwhLS1FTlRJVFkgdXBkb3duYXJy
b3cgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSBVcERvd25BcnJvdyAiJiN4MjE5NTsiLS0+Cis8
IS0tRU5USVRZIG53YXJyICImI3gyMTk2OyItLT4KKzwhLS1FTlRJVFkgVXBwZXJMZWZ0QXJyb3cg
IiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBud2Fycm93ICImI3gyMTk2OyItLT4KKzwhLS1FTlRJ
VFkgbmVhcnIgIiYjeDIxOTc7Ii0tPgorPCEtLUVOVElUWSBVcHBlclJpZ2h0QXJyb3cgIiYjeDIx
OTc7Ii0tPgorPCEtLUVOVElUWSBuZWFycm93ICImI3gyMTk3OyItLT4KKzwhLS1FTlRJVFkgc2Vh
cnIgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBzZWFycm93ICImI3gyMTk4OyItLT4KKzwhLS1F
TlRJVFkgTG93ZXJSaWdodEFycm93ICImI3gyMTk4OyItLT4KKzwhLS1FTlRJVFkgc3dhcnIgIiYj
eDIxOTk7Ii0tPgorPCEtLUVOVElUWSBzd2Fycm93ICImI3gyMTk5OyItLT4KKzwhLS1FTlRJVFkg
TG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEtLUVOVElUWSBubGFyciAiJiN4MjE5QTsi
LS0+Cis8IS0tRU5USVRZIG5sZWZ0YXJyb3cgIiYjeDIxOUE7Ii0tPgorPCEtLUVOVElUWSBucmFy
ciAiJiN4MjE5QjsiLS0+Cis8IS0tRU5USVRZIG5yaWdodGFycm93ICImI3gyMTlCOyItLT4KKzwh
LS1FTlRJVFkgcmFycncgIiYjeDIxOUQ7Ii0tPgorPCEtLUVOVElUWSByaWdodHNxdWlnYXJyb3cg
IiYjeDIxOUQ7Ii0tPgorPCEtLUVOVElUWSBucmFycncgIiYjeDIxOUQ7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgTGFyciAiJiN4MjE5RTsiLS0+Cis8IS0tRU5USVRZIHR3b2hlYWRsZWZ0YXJyb3cg
IiYjeDIxOUU7Ii0tPgorPCEtLUVOVElUWSBVYXJyICImI3gyMTlGOyItLT4KKzwhLS1FTlRJVFkg
UmFyciAiJiN4MjFBMDsiLS0+Cis8IS0tRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEw
OyItLT4KKzwhLS1FTlRJVFkgRGFyciAiJiN4MjFBMTsiLS0+Cis8IS0tRU5USVRZIGxhcnJ0bCAi
JiN4MjFBMjsiLS0+Cis8IS0tRU5USVRZIGxlZnRhcnJvd3RhaWwgIiYjeDIxQTI7Ii0tPgorPCEt
LUVOVElUWSByYXJydGwgIiYjeDIxQTM7Ii0tPgorPCEtLUVOVElUWSByaWdodGFycm93dGFpbCAi
JiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4MjFBNDsiLS0+Cis8IS0t
RU5USVRZIG1hcHN0b2xlZnQgIiYjeDIxQTQ7Ii0tPgorPCEtLUVOVElUWSBVcFRlZUFycm93ICIm
I3gyMUE1OyItLT4KKzwhLS1FTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ii0tPgorPCEtLUVOVElU
WSBtYXAgIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZUFycm93ICImI3gyMUE2OyIt
LT4KKzwhLS1FTlRJVFkgbWFwc3RvICImI3gyMUE2OyItLT4KKzwhLS1FTlRJVFkgRG93blRlZUFy
cm93ICImI3gyMUE3OyItLT4KKzwhLS1FTlRJVFkgbWFwc3RvZG93biAiJiN4MjFBNzsiLS0+Cis8
IS0tRU5USVRZIGxhcnJoayAiJiN4MjFBOTsiLS0+Cis8IS0tRU5USVRZIGhvb2tsZWZ0YXJyb3cg
IiYjeDIxQTk7Ii0tPgorPCEtLUVOVElUWSByYXJyaGsgIiYjeDIxQUE7Ii0tPgorPCEtLUVOVElU
WSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiLS0+Cis8IS0tRU5USVRZIGxhcnJscCAiJiN4MjFB
QjsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd2xlZnQgIiYjeDIxQUI7Ii0tPgorPCEtLUVOVElU
WSByYXJybHAgIiYjeDIxQUM7Ii0tPgorPCEtLUVOVElUWSBsb29wYXJyb3dyaWdodCAiJiN4MjFB
QzsiLS0+Cis8IS0tRU5USVRZIGhhcnJ3ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbGVmdHJp
Z2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiLS0+Cis8IS0tRU5USVRZIG5oYXJyICImI3gyMUFFOyIt
LT4KKzwhLS1FTlRJVFkgbmxlZnRyaWdodGFycm93ICImI3gyMUFFOyItLT4KKzwhLS1FTlRJVFkg
bHNoICImI3gyMUIwOyItLT4KKzwhLS1FTlRJVFkgTHNoICImI3gyMUIwOyItLT4KKzwhLS1FTlRJ
VFkgcnNoICImI3gyMUIxOyItLT4KKzwhLS1FTlRJVFkgUnNoICImI3gyMUIxOyItLT4KKzwhLS1F
TlRJVFkgbGRzaCAiJiN4MjFCMjsiLS0+Cis8IS0tRU5USVRZIHJkc2ggIiYjeDIxQjM7Ii0tPgor
PCEtLUVOVElUWSBjcmFyciAiJiN4MjFCNTsiLS0+Cis8IS0tRU5USVRZIGN1bGFyciAiJiN4MjFC
NjsiLS0+Cis8IS0tRU5USVRZIGN1cnZlYXJyb3dsZWZ0ICImI3gyMUI2OyItLT4KKzwhLS1FTlRJ
VFkgY3VyYXJyICImI3gyMUI3OyItLT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd3JpZ2h0ICImI3gy
MUI3OyItLT4KKzwhLS1FTlRJVFkgb2xhcnIgIiYjeDIxQkE7Ii0tPgorPCEtLUVOVElUWSBjaXJj
bGVhcnJvd2xlZnQgIiYjeDIxQkE7Ii0tPgorPCEtLUVOVElUWSBvcmFyciAiJiN4MjFCQjsiLS0+
Cis8IS0tRU5USVRZIGNpcmNsZWFycm93cmlnaHQgIiYjeDIxQkI7Ii0tPgorPCEtLUVOVElUWSBs
aGFydSAiJiN4MjFCQzsiLS0+Cis8IS0tRU5USVRZIExlZnRWZWN0b3IgIiYjeDIxQkM7Ii0tPgor
PCEtLUVOVElUWSBsZWZ0aGFycG9vbnVwICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgbGhhcmQg
IiYjeDIxQkQ7Ii0tPgorPCEtLUVOVElUWSBsZWZ0aGFycG9vbmRvd24gIiYjeDIxQkQ7Ii0tPgor
PCEtLUVOVElUWSBEb3duTGVmdFZlY3RvciAiJiN4MjFCRDsiLS0+Cis8IS0tRU5USVRZIHVoYXJy
ICImI3gyMUJFOyItLT4KKzwhLS1FTlRJVFkgdXBoYXJwb29ucmlnaHQgIiYjeDIxQkU7Ii0tPgor
PCEtLUVOVElUWSBSaWdodFVwVmVjdG9yICImI3gyMUJFOyItLT4KKzwhLS1FTlRJVFkgdWhhcmwg
IiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25sZWZ0ICImI3gyMUJGOyItLT4KKzwh
LS1FTlRJVFkgTGVmdFVwVmVjdG9yICImI3gyMUJGOyItLT4KKzwhLS1FTlRJVFkgcmhhcnUgIiYj
eDIxQzA7Ii0tPgorPCEtLUVOVElUWSBSaWdodFZlY3RvciAiJiN4MjFDMDsiLS0+Cis8IS0tRU5U
SVRZIHJpZ2h0aGFycG9vbnVwICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkgcmhhcmQgIiYjeDIx
QzE7Ii0tPgorPCEtLUVOVElUWSByaWdodGhhcnBvb25kb3duICImI3gyMUMxOyItLT4KKzwhLS1F
TlRJVFkgRG93blJpZ2h0VmVjdG9yICImI3gyMUMxOyItLT4KKzwhLS1FTlRJVFkgZGhhcnIgIiYj
eDIxQzI7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvd25WZWN0b3IgIiYjeDIxQzI7Ii0tPgorPCEt
LUVOVElUWSBkb3duaGFycG9vbnJpZ2h0ICImI3gyMUMyOyItLT4KKzwhLS1FTlRJVFkgZGhhcmwg
IiYjeDIxQzM7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG93blZlY3RvciAiJiN4MjFDMzsiLS0+Cis8
IS0tRU5USVRZIGRvd25oYXJwb29ubGVmdCAiJiN4MjFDMzsiLS0+Cis8IS0tRU5USVRZIHJsYXJy
ICImI3gyMUM0OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRsZWZ0YXJyb3dzICImI3gyMUM0OyItLT4K
KzwhLS1FTlRJVFkgUmlnaHRBcnJvd0xlZnRBcnJvdyAiJiN4MjFDNDsiLS0+Cis8IS0tRU5USVRZ
IHVkYXJyICImI3gyMUM1OyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0Rvd25BcnJvdyAiJiN4MjFD
NTsiLS0+Cis8IS0tRU5USVRZIGxyYXJyICImI3gyMUM2OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJp
Z2h0YXJyb3dzICImI3gyMUM2OyItLT4KKzwhLS1FTlRJVFkgTGVmdEFycm93UmlnaHRBcnJvdyAi
JiN4MjFDNjsiLS0+Cis8IS0tRU5USVRZIGxsYXJyICImI3gyMUM3OyItLT4KKzwhLS1FTlRJVFkg
bGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ii0tPgorPCEtLUVOVElUWSB1dWFyciAiJiN4MjFDODsi
LS0+Cis8IS0tRU5USVRZIHVwdXBhcnJvd3MgIiYjeDIxQzg7Ii0tPgorPCEtLUVOVElUWSBycmFy
ciAiJiN4MjFDOTsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0cmlnaHRhcnJvd3MgIiYjeDIxQzk7Ii0t
PgorPCEtLUVOVElUWSBkZGFyciAiJiN4MjFDQTsiLS0+Cis8IS0tRU5USVRZIGRvd25kb3duYXJy
b3dzICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgbHJoYXIgIiYjeDIxQ0I7Ii0tPgorPCEtLUVO
VElUWSBSZXZlcnNlRXF1aWxpYnJpdW0gIiYjeDIxQ0I7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmln
aHRoYXJwb29ucyAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZIHJsaGFyICImI3gyMUNDOyItLT4K
KzwhLS1FTlRJVFkgcmlnaHRsZWZ0aGFycG9vbnMgIiYjeDIxQ0M7Ii0tPgorPCEtLUVOVElUWSBF
cXVpbGlicml1bSAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIG5sQXJyICImI3gyMUNEOyItLT4K
KzwhLS1FTlRJVFkgbkxlZnRhcnJvdyAiJiN4MjFDRDsiLS0+Cis8IS0tRU5USVRZIG5oQXJyICIm
I3gyMUNFOyItLT4KKzwhLS1FTlRJVFkgbkxlZnRyaWdodGFycm93ICImI3gyMUNFOyItLT4KKzwh
LS1FTlRJVFkgbnJBcnIgIiYjeDIxQ0Y7Ii0tPgorPCEtLUVOVElUWSBuUmlnaHRhcnJvdyAiJiN4
MjFDRjsiLS0+Cis8IS0tRU5USVRZIGxBcnIgIiYjeDIxRDA7Ii0tPgorPCEtLUVOVElUWSBMZWZ0
YXJyb3cgIiYjeDIxRDA7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0QXJyb3cgIiYjeDIxRDA7
Ii0tPgorPCEtLUVOVElUWSB1QXJyICImI3gyMUQxOyItLT4KKzwhLS1FTlRJVFkgVXBhcnJvdyAi
JiN4MjFEMTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ii0tPgorPCEt
LUVOVElUWSByQXJyICImI3gyMUQyOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRhcnJvdyAiJiN4MjFE
MjsiLS0+Cis8IS0tRU5USVRZIEltcGxpZXMgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBEb3Vi
bGVSaWdodEFycm93ICImI3gyMUQyOyItLT4KKzwhLS1FTlRJVFkgZEFyciAiJiN4MjFEMzsiLS0+
Cis8IS0tRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiLS0+Cis8IS0tRU5USVRZIERvdWJsZURv
d25BcnJvdyAiJiN4MjFEMzsiLS0+Cis8IS0tRU5USVRZIGhBcnIgIiYjeDIxRDQ7Ii0tPgorPCEt
LUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxl
ZnRSaWdodEFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgaWZmICImI3gyMUQ0OyItLT4K
KzwhLS1FTlRJVFkgdkFyciAiJiN4MjFENTsiLS0+Cis8IS0tRU5USVRZIFVwZG93bmFycm93ICIm
I3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBEb3duQXJyb3cgIiYjeDIxRDU7Ii0tPgor
PCEtLUVOVElUWSBud0FyciAiJiN4MjFENjsiLS0+Cis8IS0tRU5USVRZIG5lQXJyICImI3gyMUQ3
OyItLT4KKzwhLS1FTlRJVFkgc2VBcnIgIiYjeDIxRDg7Ii0tPgorPCEtLUVOVElUWSBzd0FyciAi
JiN4MjFEOTsiLS0+Cis8IS0tRU5USVRZIGxBYXJyICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkg
TGxlZnRhcnJvdyAiJiN4MjFEQTsiLS0+Cis8IS0tRU5USVRZIHJBYXJyICImI3gyMURCOyItLT4K
KzwhLS1FTlRJVFkgUnJpZ2h0YXJyb3cgIiYjeDIxREI7Ii0tPgorPCEtLUVOVElUWSB6aWdyYXJy
ICImI3gyMUREOyItLT4KKzwhLS1FTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ii0tPgorPCEtLUVOVElU
WSBMZWZ0QXJyb3dCYXIgIiYjeDIxRTQ7Ii0tPgorPCEtLUVOVElUWSByYXJyYiAiJiN4MjFFNTsi
LS0+Cis8IS0tRU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ii0tPgorPCEtLUVOVElUWSBk
dWFyciAiJiN4MjFGNTsiLS0+Cis8IS0tRU5USVRZIERvd25BcnJvd1VwQXJyb3cgIiYjeDIxRjU7
Ii0tPgorPCEtLUVOVElUWSBsb2FyciAiJiN4MjFGRDsiLS0+Cis8IS0tRU5USVRZIHJvYXJyICIm
I3gyMUZFOyItLT4KKzwhLS1FTlRJVFkgaG9hcnIgIiYjeDIxRkY7Ii0tPgorPCEtLUVOVElUWSBm
b3JhbGwgIiYjeDIyMDA7Ii0tPgorPCEtLUVOVElUWSBGb3JBbGwgIiYjeDIyMDA7Ii0tPgorPCEt
LUVOVElUWSBjb21wICImI3gyMjAxOyItLT4KKzwhLS1FTlRJVFkgY29tcGxlbWVudCAiJiN4MjIw
MTsiLS0+Cis8IS0tRU5USVRZIHBhcnQgIiYjeDIyMDI7Ii0tPgorPCEtLUVOVElUWSBQYXJ0aWFs
RCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGV4aXN0ICImI3gyMjAzOyItLT4KKzwhLS1FTlRJVFkgRXhpc3RzICImI3gyMjAz
OyItLT4KKzwhLS1FTlRJVFkgbmV4aXN0ICImI3gyMjA0OyItLT4KKzwhLS1FTlRJVFkgTm90RXhp
c3RzICImI3gyMjA0OyItLT4KKzwhLS1FTlRJVFkgbmV4aXN0cyAiJiN4MjIwNDsiLS0+Cis8IS0t
RU5USVRZIGVtcHR5ICImI3gyMjA1OyItLT4KKzwhLS1FTlRJVFkgZW1wdHlzZXQgIiYjeDIyMDU7
Ii0tPgorPCEtLUVOVElUWSBlbXB0eXYgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSB2YXJub3Ro
aW5nICImI3gyMjA1OyItLT4KKzwhLS1FTlRJVFkgbmFibGEgIiYjeDIyMDc7Ii0tPgorPCEtLUVO
VElUWSBEZWwgIiYjeDIyMDc7Ii0tPgorPCEtLUVOVElUWSBpc2luICImI3gyMjA4OyItLT4KKzwh
LS1FTlRJVFkgaXNpbnYgIiYjeDIyMDg7Ii0tPgorPCEtLUVOVElUWSBFbGVtZW50ICImI3gyMjA4
OyItLT4KKzwhLS1FTlRJVFkgaW4gIiYjeDIyMDg7Ii0tPgorPCEtLUVOVElUWSBub3RpbiAiJiN4
MjIwOTsiLS0+Cis8IS0tRU5USVRZIE5vdEVsZW1lbnQgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElU
WSBub3RpbnZhICImI3gyMjA5OyItLT4KKzwhLS1FTlRJVFkgbml2ICImI3gyMjBCOyItLT4KKzwh
LS1FTlRJVFkgUmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBuaSAiJiN4
MjIwQjsiLS0+Cis8IS0tRU5USVRZIFN1Y2hUaGF0ICImI3gyMjBCOyItLT4KKzwhLS1FTlRJVFkg
bm90bmkgIiYjeDIyMEM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZhICImI3gyMjBDOyItLT4KKzwh
LS1FTlRJVFkgTm90UmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEM7Ii0tPgorPCEtLUVOVElUWSBwcm9k
ICImI3gyMjBGOyItLT4KKzwhLS1FTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsiLS0+Cis8IS0tRU5U
SVRZIGNvcHJvZCAiJiN4MjIxMDsiLS0+Cis8IS0tRU5USVRZIENvcHJvZHVjdCAiJiN4MjIxMDsi
LS0+Cis8IS0tRU5USVRZIHN1bSAiJiN4MjIxMTsiLS0+Cis8IS0tRU5USVRZIFN1bSAiJiN4MjIx
MTsiLS0+Cis8IS0tRU5USVRZIG1pbnVzICImI3gyMjEyOyItLT4KKzwhLS1FTlRJVFkgbW5wbHVz
ICImI3gyMjEzOyItLT4KKzwhLS1FTlRJVFkgbXAgIiYjeDIyMTM7Ii0tPgorPCEtLUVOVElUWSBN
aW51c1BsdXMgIiYjeDIyMTM7Ii0tPgorPCEtLUVOVElUWSBwbHVzZG8gIiYjeDIyMTQ7Ii0tPgor
PCEtLUVOVElUWSBkb3RwbHVzICImI3gyMjE0OyItLT4KKzwhLS1FTlRJVFkgc2V0bW4gIiYjeDIy
MTY7Ii0tPgorPCEtLUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIEJh
Y2tzbGFzaCAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIHNzZXRtbiAiJiN4MjIxNjsiLS0+Cis8
IS0tRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ii0tPgorPCEtLUVOVElUWSBsb3dhc3Qg
IiYjeDIyMTc7Ii0tPgorPCEtLUVOVElUWSBjb21wZm4gIiYjeDIyMTg7Ii0tPgorPCEtLUVOVElU
WSBTbWFsbENpcmNsZSAiJiN4MjIxODsiLS0+Cis8IS0tRU5USVRZIHJhZGljICImI3gyMjFBOyIt
LT4KKzwhLS1FTlRJVFkgU3FydCAiJiN4MjIxQTsiLS0+Cis8IS0tRU5USVRZIHByb3AgIiYjeDIy
MUQ7Ii0tPgorPCEtLUVOVElUWSBwcm9wdG8gIiYjeDIyMUQ7Ii0tPgorPCEtLUVOVElUWSBQcm9w
b3J0aW9uYWwgIiYjeDIyMUQ7Ii0tPgorPCEtLUVOVElUWSB2cHJvcCAiJiN4MjIxRDsiLS0+Cis8
IS0tRU5USVRZIHZhcnByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIGluZmluICImI3gy
MjFFOyItLT4KKzwhLS1FTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ii0tPgorPCEtLUVOVElUWSBhbmcg
IiYjeDIyMjA7Ii0tPgorPCEtLUVOVElUWSBhbmdsZSAiJiN4MjIyMDsiLS0+Cis8IS0tRU5USVRZ
IG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZCAiJiN4MjIyMTsi
LS0+Cis8IS0tRU5USVRZIG1lYXN1cmVkYW5nbGUgIiYjeDIyMjE7Ii0tPgorPCEtLUVOVElUWSBh
bmdzcGggIiYjeDIyMjI7Ii0tPgorPCEtLUVOVElUWSBtaWQgIiYjeDIyMjM7Ii0tPgorPCEtLUVO
VElUWSBWZXJ0aWNhbEJhciAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZIHNtaWQgIiYjeDIyMjM7
Ii0tPgorPCEtLUVOVElUWSBzaG9ydG1pZCAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZIG5taWQg
IiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBOb3RWZXJ0aWNhbEJhciAiJiN4MjIyNDsiLS0+Cis8
IS0tRU5USVRZIG5zbWlkICImI3gyMjI0OyItLT4KKzwhLS1FTlRJVFkgbnNob3J0bWlkICImI3gy
MjI0OyItLT4KKzwhLS1FTlRJVFkgcGFyICImI3gyMjI1OyItLT4KKzwhLS1FTlRJVFkgcGFyYWxs
ZWwgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVWZXJ0aWNhbEJhciAiJiN4MjIyNTsi
LS0+Cis8IS0tRU5USVRZIHNwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBzaG9ydHBhcmFs
bGVsICImI3gyMjI1OyItLT4KKzwhLS1FTlRJVFkgbnBhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5U
SVRZIG5wYXJhbGxlbCAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZIE5vdERvdWJsZVZlcnRpY2Fs
QmFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgbnNwYXIgIiYjeDIyMjY7Ii0tPgorPCEtLUVO
VElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZIGFuZCAiJiN4MjIy
NzsiLS0+Cis8IS0tRU5USVRZIHdlZGdlICImI3gyMjI3OyItLT4KKzwhLS1FTlRJVFkgb3IgIiYj
eDIyMjg7Ii0tPgorPCEtLUVOVElUWSB2ZWUgIiYjeDIyMjg7Ii0tPgorPCEtLUVOVElUWSBjYXAg
IiYjeDIyMjk7Ii0tPgorPCEtLUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZFMDA7Ii0tPgorPCEt
LUVOVElUWSBjdXAgIiYjeDIyMkE7Ii0tPgorPCEtLUVOVElUWSBjdXBzICImI3gyMjJBOyYjeEZF
MDA7Ii0tPgorPCEtLUVOVElUWSBpbnQgIiYjeDIyMkI7Ii0tPgorPCEtLUVOVElUWSBJbnRlZ3Jh
bCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZIEludCAiJiN4MjIyQzsiLS0+Cis8IS0tRU5USVRZ
IHRpbnQgIiYjeDIyMkQ7Ii0tPgorPCEtLUVOVElUWSBpaWludCAiJiN4MjIyRDsiLS0+Cis8IS0t
RU5USVRZIGNvbmludCAiJiN4MjIyRTsiLS0+Cis8IS0tRU5USVRZIG9pbnQgIiYjeDIyMkU7Ii0t
PgorPCEtLUVOVElUWSBDb250b3VySW50ZWdyYWwgIiYjeDIyMkU7Ii0tPgorPCEtLUVOVElUWSBD
b25pbnQgIiYjeDIyMkY7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVDb250b3VySW50ZWdyYWwgIiYj
eDIyMkY7Ii0tPgorPCEtLUVOVElUWSBDY29uaW50ICImI3gyMjMwOyItLT4KKzwhLS1FTlRJVFkg
Y3dpbnQgIiYjeDIyMzE7Ii0tPgorPCEtLUVOVElUWSBjd2NvbmludCAiJiN4MjIzMjsiLS0+Cis8
IS0tRU5USVRZIENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMjsiLS0+Cis8IS0tRU5U
SVRZIGF3Y29uaW50ICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgQ291bnRlckNsb2Nrd2lzZUNv
bnRvdXJJbnRlZ3JhbCAiJiN4MjIzMzsiLS0+Cis8IS0tRU5USVRZIHRoZXJlNCAiJiN4MjIzNDsi
LS0+Cis8IS0tRU5USVRZIHRoZXJlZm9yZSAiJiN4MjIzNDsiLS0+Cis8IS0tRU5USVRZIFRoZXJl
Zm9yZSAiJiN4MjIzNDsiLS0+Cis8IS0tRU5USVRZIGJlY2F1cyAiJiN4MjIzNTsiLS0+Cis8IS0t
RU5USVRZIGJlY2F1c2UgIiYjeDIyMzU7Ii0tPgorPCEtLUVOVElUWSBCZWNhdXNlICImI3gyMjM1
OyItLT4KKzwhLS1FTlRJVFkgcmF0aW8gIiYjeDIyMzY7Ii0tPgorPCEtLUVOVElUWSBDb2xvbiAi
JiN4MjIzNzsiLS0+Cis8IS0tRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7Ii0tPgorPCEtLUVO
VElUWSBtaW51c2QgIiYjeDIyMzg7Ii0tPgorPCEtLUVOVElUWSBkb3RtaW51cyAiJiN4MjIzODsi
LS0+Cis8IS0tRU5USVRZIG1ERG90ICImI3gyMjNBOyItLT4KKzwhLS1FTlRJVFkgaG9tdGh0ICIm
I3gyMjNCOyItLT4KKzwhLS1FTlRJVFkgc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgVGls
ZGUgIiYjeDIyM0M7Ii0tPgorPCEtLUVOVElUWSB0aGtzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVO
VElUWSB0aGlja3NpbSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIG52c2ltICImI3gyMjNDOyYj
eDIwRDI7Ii0tPgorPCEtLUVOVElUWSBic2ltICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgYmFj
a3NpbSAiJiN4MjIzRDsiLS0+Cis8IS0tRU5USVRZIHJhY2UgIiYjeDIyM0Q7JiN4MzMxOyItLT4K
KzwhLS1FTlRJVFkgYWMgIiYjeDIyM0U7Ii0tPgorPCEtLUVOVElUWSBtc3Rwb3MgIiYjeDIyM0U7
Ii0tPgorPCEtLUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyItLT4KKzwhLS1FTlRJVFkgYWNk
ICImI3gyMjNGOyItLT4KKzwhLS1FTlRJVFkgd3JlYXRoICImI3gyMjQwOyItLT4KKzwhLS1FTlRJ
VFkgVmVydGljYWxUaWxkZSAiJiN4MjI0MDsiLS0+Cis8IS0tRU5USVRZIHdyICImI3gyMjQwOyIt
LT4KKzwhLS1FTlRJVFkgbnNpbSAiJiN4MjI0MTsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlICIm
I3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgZXNpbSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIEVx
dWFsVGlsZGUgIiYjeDIyNDI7Ii0tPgorPCEtLUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiLS0+Cis8
IS0tRU5USVRZIE5vdEVxdWFsVGlsZGUgIiYjeDIyNDI7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkg
bmVzaW0gIiYjeDIyNDI7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2ltZSAiJiN4MjI0MzsiLS0+
Cis8IS0tRU5USVRZIFRpbGRlRXF1YWwgIiYjeDIyNDM7Ii0tPgorPCEtLUVOVElUWSBzaW1lcSAi
JiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZIG5zaW1lICImI3gyMjQ0OyItLT4KKzwhLS1FTlRJVFkg
bnNpbWVxICImI3gyMjQ0OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVFcXVhbCAiJiN4MjI0NDsi
LS0+Cis8IS0tRU5USVRZIGNvbmcgIiYjeDIyNDU7Ii0tPgorPCEtLUVOVElUWSBUaWxkZUZ1bGxF
cXVhbCAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIHNpbW5lICImI3gyMjQ2OyItLT4KKzwhLS1F
TlRJVFkgbmNvbmcgIiYjeDIyNDc7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUZ1bGxFcXVhbCAi
JiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIGFzeW1wICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkg
YXAgIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSBUaWxkZVRpbGRlICImI3gyMjQ4OyItLT4KKzwh
LS1FTlRJVFkgYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgdGhrYXAgIiYjeDIyNDg7
Ii0tPgorPCEtLUVOVElUWSB0aGlja2FwcHJveCAiJiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIG5h
cCAiJiN4MjI0OTsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYjeDIyNDk7Ii0tPgor
PCEtLUVOVElUWSBuYXBwcm94ICImI3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgYXBlICImI3gyMjRB
OyItLT4KKzwhLS1FTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ii0tPgorPCEtLUVOVElUWSBhcGlk
ICImI3gyMjRCOyItLT4KKzwhLS1FTlRJVFkgbmFwaWQgIiYjeDIyNEI7JiN4MzM4OyItLT4KKzwh
LS1FTlRJVFkgYmNvbmcgIiYjeDIyNEM7Ii0tPgorPCEtLUVOVElUWSBiYWNrY29uZyAiJiN4MjI0
QzsiLS0+Cis8IS0tRU5USVRZIGFzeW1wZXEgIiYjeDIyNEQ7Ii0tPgorPCEtLUVOVElUWSBDdXBD
YXAgIiYjeDIyNEQ7Ii0tPgorPCEtLUVOVElUWSBudmFwICImI3gyMjREOyYjeDIwRDI7Ii0tPgor
PCEtLUVOVElUWSBidW1wICImI3gyMjRFOyItLT4KKzwhLS1FTlRJVFkgSHVtcERvd25IdW1wICIm
I3gyMjRFOyItLT4KKzwhLS1FTlRJVFkgQnVtcGVxICImI3gyMjRFOyItLT4KKzwhLS1FTlRJVFkg
Tm90SHVtcERvd25IdW1wICImI3gyMjRFOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5idW1wICIm
I3gyMjRFOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGJ1bXBlICImI3gyMjRGOyItLT4KKzwhLS1F
TlRJVFkgSHVtcEVxdWFsICImI3gyMjRGOyItLT4KKzwhLS1FTlRJVFkgYnVtcGVxICImI3gyMjRG
OyItLT4KKzwhLS1FTlRJVFkgbmJ1bXBlICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZ
IE5vdEh1bXBFcXVhbCAiJiN4MjI0RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBlc2RvdCAiJiN4
MjI1MDsiLS0+Cis8IS0tRU5USVRZIERvdEVxdWFsICImI3gyMjUwOyItLT4KKzwhLS1FTlRJVFkg
ZG90ZXEgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBuZWRvdCAiJiN4MjI1MDsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBlRG90ICImI3gyMjUxOyItLT4KKzwhLS1FTlRJVFkgZG90ZXFkb3QgIiYj
eDIyNTE7Ii0tPgorPCEtLUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGZh
bGxpbmdkb3RzZXEgIiYjeDIyNTI7Ii0tPgorPCEtLUVOVElUWSBlckRvdCAiJiN4MjI1MzsiLS0+
Cis8IS0tRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiLS0+Cis8IS0tRU5USVRZIGNvbG9u
ZSAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGNvbG9uZXEgIiYjeDIyNTQ7Ii0tPgorPCEtLUVO
VElUWSBBc3NpZ24gIiYjeDIyNTQ7Ii0tPgorPCEtLUVOVElUWSBlY29sb24gIiYjeDIyNTU7Ii0t
PgorPCEtLUVOVElUWSBlcWNvbG9uICImI3gyMjU1OyItLT4KKzwhLS1FTlRJVFkgZWNpciAiJiN4
MjI1NjsiLS0+Cis8IS0tRU5USVRZIGVxY2lyYyAiJiN4MjI1NjsiLS0+Cis8IS0tRU5USVRZIGNp
cmUgIiYjeDIyNTc7Ii0tPgorPCEtLUVOVElUWSBjaXJjZXEgIiYjeDIyNTc7Ii0tPgorPCEtLUVO
VElUWSB3ZWRnZXEgIiYjeDIyNTk7Ii0tPgorPCEtLUVOVElUWSB2ZWVlcSAiJiN4MjI1QTsiLS0+
Cis8IS0tRU5USVRZIHRyaWUgIiYjeDIyNUM7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmdsZXEgIiYj
eDIyNUM7Ii0tPgorPCEtLUVOVElUWSBlcXVlc3QgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBx
dWVzdGVxICImI3gyMjVGOyItLT4KKzwhLS1FTlRJVFkgbmUgIiYjeDIyNjA7Ii0tPgorPCEtLUVO
VElUWSBOb3RFcXVhbCAiJiN4MjI2MDsiLS0+Cis8IS0tRU5USVRZIGVxdWl2ICImI3gyMjYxOyIt
LT4KKzwhLS1FTlRJVFkgQ29uZ3J1ZW50ICImI3gyMjYxOyItLT4KKzwhLS1FTlRJVFkgYm5lcXVp
diAiJiN4MjI2MTsmI3gyMEU1OyItLT4KKzwhLS1FTlRJVFkgbmVxdWl2ICImI3gyMjYyOyItLT4K
KzwhLS1FTlRJVFkgTm90Q29uZ3J1ZW50ICImI3gyMjYyOyItLT4KKzwhLS1FTlRJVFkgbGUgIiYj
eDIyNjQ7Ii0tPgorPCEtLUVOVElUWSBsZXEgIiYjeDIyNjQ7Ii0tPgorPCEtLUVOVElUWSBudmxl
ICImI3gyMjY0OyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBnZSAiJiN4MjI2NTsiLS0+Cis8IS0t
RU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiLS0+Cis8IS0tRU5USVRZIGdlcSAiJiN4MjI2
NTsiLS0+Cis8IS0tRU5USVRZIG52Z2UgIiYjeDIyNjU7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZ
IGxFICImI3gyMjY2OyItLT4KKzwhLS1FTlRJVFkgTGVzc0Z1bGxFcXVhbCAiJiN4MjI2NjsiLS0+
Cis8IS0tRU5USVRZIGxlcXEgIiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBubEUgIiYjeDIyNjY7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmxlcXEgIiYjeDIyNjY7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgZ0UgIiYjeDIyNjc7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRnVsbEVxdWFsICImI3gy
MjY3OyItLT4KKzwhLS1FTlRJVFkgZ2VxcSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIG5nRSAi
JiN4MjI2NzsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuZ2VxcSAiJiN4MjI2NzsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBOb3RHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGxuRSAiJiN4MjI2ODsiLS0+Cis8IS0tRU5USVRZIGxuZXFxICImI3gyMjY4OyIt
LT4KKzwhLS1FTlRJVFkgbHZuRSAiJiN4MjI2ODsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgbHZl
cnRuZXFxICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnbkUgIiYjeDIyNjk7Ii0t
PgorPCEtLUVOVElUWSBnbmVxcSAiJiN4MjI2OTsiLS0+Cis8IS0tRU5USVRZIGd2bkUgIiYjeDIy
Njk7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgTHQgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRMZXNzTGVz
cyAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIGxsICImI3gyMjZBOyItLT4KKzwhLS1FTlRJVFkg
bkx0diAiJiN4MjI2QTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RMZXNzTGVzcyAiJiN4MjI2
QTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIEd0ICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgTmVzdGVkR3JlYXRlckdyZWF0ZXIg
IiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBnZyAiJiN4MjI2QjsiLS0+Cis8IS0tRU5USVRZIG5H
dHYgIiYjeDIyNkI7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlckdyZWF0ZXIgIiYj
eDIyNkI7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ii0tPgor
PCEtLUVOVElUWSB0d2l4dCAiJiN4MjI2QzsiLS0+Cis8IS0tRU5USVRZIGJldHdlZW4gIiYjeDIy
NkM7Ii0tPgorPCEtLUVOVElUWSBOb3RDdXBDYXAgIiYjeDIyNkQ7Ii0tPgorPCEtLUVOVElUWSBu
bHQgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElUWSBOb3RMZXNzICImI3gyMjZFOyItLT4KKzwhLS1F
TlRJVFkgbmxlc3MgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElUWSBuZ3QgIiYjeDIyNkY7Ii0tPgor
PCEtLUVOVElUWSBOb3RHcmVhdGVyICImI3gyMjZGOyItLT4KKzwhLS1FTlRJVFkgbmd0ciAiJiN4
MjI2RjsiLS0+Cis8IS0tRU5USVRZIG5sZSAiJiN4MjI3MDsiLS0+Cis8IS0tRU5USVRZIE5vdExl
c3NFcXVhbCAiJiN4MjI3MDsiLS0+Cis8IS0tRU5USVRZIG5sZXEgIiYjeDIyNzA7Ii0tPgorPCEt
LUVOVElUWSBuZ2UgIiYjeDIyNzE7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyRXF1YWwgIiYj
eDIyNzE7Ii0tPgorPCEtLUVOVElUWSBuZ2VxICImI3gyMjcxOyItLT4KKzwhLS1FTlRJVFkgbHNp
bSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIExlc3NUaWxkZSAiJiN4MjI3MjsiLS0+Cis8IS0t
RU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ii0tPgorPCEtLUVOVElUWSBnc2ltICImI3gyMjczOyIt
LT4KKzwhLS1FTlRJVFkgZ3Ryc2ltICImI3gyMjczOyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlclRp
bGRlICImI3gyMjczOyItLT4KKzwhLS1FTlRJVFkgbmxzaW0gIiYjeDIyNzQ7Ii0tPgorPCEtLUVO
VElUWSBOb3RMZXNzVGlsZGUgIiYjeDIyNzQ7Ii0tPgorPCEtLUVOVElUWSBuZ3NpbSAiJiN4MjI3
NTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJUaWxkZSAiJiN4MjI3NTsiLS0+Cis8IS0tRU5U
SVRZIGxnICImI3gyMjc2OyItLT4KKzwhLS1FTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiLS0+Cis8
IS0tRU5USVRZIExlc3NHcmVhdGVyICImI3gyMjc2OyItLT4KKzwhLS1FTlRJVFkgZ2wgIiYjeDIy
Nzc7Ii0tPgorPCEtLUVOVElUWSBndHJsZXNzICImI3gyMjc3OyItLT4KKzwhLS1FTlRJVFkgR3Jl
YXRlckxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVOVElUWSBudGxnICImI3gyMjc4OyItLT4KKzwh
LS1FTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7Ii0tPgorPCEtLUVOVElUWSBudGdsICIm
I3gyMjc5OyItLT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlckxlc3MgIiYjeDIyNzk7Ii0tPgorPCEt
LUVOVElUWSBwciAiJiN4MjI3QTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzICImI3gyMjdBOyIt
LT4KKzwhLS1FTlRJVFkgcHJlYyAiJiN4MjI3QTsiLS0+Cis8IS0tRU5USVRZIHNjICImI3gyMjdC
OyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHMgIiYjeDIyN0I7Ii0tPgorPCEtLUVOVElUWSBzdWNj
ICImI3gyMjdCOyItLT4KKzwhLS1FTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ii0tPgorPCEtLUVOVElU
WSBQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyN0M7Ii0tPgorPCEtLUVOVElUWSBwcmVjY3VybHll
cSAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHNjY3VlICImI3gyMjdEOyItLT4KKzwhLS1FTlRJ
VFkgU3VjY2VlZHNTbGFudEVxdWFsICImI3gyMjdEOyItLT4KKzwhLS1FTlRJVFkgc3VjY2N1cmx5
ZXEgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBwcnNpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5U
SVRZIHByZWNzaW0gIiYjeDIyN0U7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc1RpbGRlICImI3gy
MjdFOyItLT4KKzwhLS1FTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBzdWNj
c2ltICImI3gyMjdGOyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsiLS0+
Cis8IS0tRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbnByICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgbnByZWMgIiYjeDIyODA7Ii0tPgor
PCEtLUVOVElUWSBOb3RQcmVjZWRlcyAiJiN4MjI4MDsiLS0+Cis8IS0tRU5USVRZIG5zYyAiJiN4
MjI4MTsiLS0+Cis8IS0tRU5USVRZIG5zdWNjICImI3gyMjgxOyItLT4KKzwhLS1FTlRJVFkgTm90
U3VjY2VlZHMgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBzdWIgIiYjeDIyODI7Ii0tPgorPCEt
LUVOVElUWSBzdWJzZXQgIiYjeDIyODI7Ii0tPgorPCEtLUVOVElUWSB2bnN1YiAiJiN4MjI4Mjsm
I3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldCAiJiN4MjI4MjsmI3gyMEQyOyItLT4KKzwh
LS1FTlRJVFkgTm90U3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBzdXAg
IiYjeDIyODM7Ii0tPgorPCEtLUVOVElUWSBzdXBzZXQgIiYjeDIyODM7Ii0tPgorPCEtLUVOVElU
WSBTdXBlcnNldCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIHZuc3VwICImI3gyMjgzOyYjeDIw
RDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vwc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdXBlcnNldCAiJiN4MjI4MzsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbnN1YiAi
JiN4MjI4NDsiLS0+Cis8IS0tRU5USVRZIG5zdXAgIiYjeDIyODU7Ii0tPgorPCEtLUVOVElUWSBz
dWJlICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgU3Vic2V0RXF1YWwgIiYjeDIyODY7Ii0tPgor
PCEtLUVOVElUWSBzdWJzZXRlcSAiJiN4MjI4NjsiLS0+Cis8IS0tRU5USVRZIHN1cGUgIiYjeDIy
ODc7Ii0tPgorPCEtLUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIFN1
cGVyc2V0RXF1YWwgIiYjeDIyODc7Ii0tPgorPCEtLUVOVElUWSBuc3ViZSAiJiN4MjI4ODsiLS0+
Cis8IS0tRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiLS0+Cis8IS0tRU5USVRZIE5vdFN1YnNl
dEVxdWFsICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkgbnN1cGUgIiYjeDIyODk7Ii0tPgorPCEt
LUVOVElUWSBuc3Vwc2V0ZXEgIiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBOb3RTdXBlcnNldEVx
dWFsICImI3gyMjg5OyItLT4KKzwhLS1FTlRJVFkgc3VibmUgIiYjeDIyOEE7Ii0tPgorPCEtLUVO
VElUWSBzdWJzZXRuZXEgIiYjeDIyOEE7Ii0tPgorPCEtLUVOVElUWSB2c3VibmUgIiYjeDIyOEE7
JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZhcnN1YnNldG5lcSAiJiN4MjI4QTsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ii0tPgorPCEtLUVOVElUWSBzdXBzZXRuZXEg
IiYjeDIyOEI7Ii0tPgorPCEtLUVOVElUWSB2c3VwbmUgIiYjeDIyOEI7JiN4RkUwMDsiLS0+Cis8
IS0tRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkg
Y3VwZG90ICImI3gyMjhEOyItLT4KKzwhLS1FTlRJVFkgdXBsdXMgIiYjeDIyOEU7Ii0tPgorPCEt
LUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ii0tPgorPCEtLUVOVElUWSBzcXN1YiAiJiN4MjI4
RjsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZVN1YnNldCAiJiN4MjI4RjsiLS0+Cis8IS0tRU5USVRZ
IHNxc3Vic2V0ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3Vic2V0ICImI3gy
MjhGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHNxc3VwICImI3gyMjkwOyItLT4KKzwhLS1FTlRJ
VFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBzcXN1cHNldCAiJiN4
MjI5MDsiLS0+Cis8IS0tRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0ICImI3gyMjkwOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZVN1
YnNldEVxdWFsICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgc3FzdWJzZXRlcSAiJiN4MjI5MTsi
LS0+Cis8IS0tRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZVN1
cGVyc2V0RXF1YWwgIiYjeDIyOTI7Ii0tPgorPCEtLUVOVElUWSBzcXN1cHNldGVxICImI3gyMjky
OyItLT4KKzwhLS1FTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVJ
bnRlcnNlY3Rpb24gIiYjeDIyOTM7Ii0tPgorPCEtLUVOVElUWSBzcWNhcHMgIiYjeDIyOTM7JiN4
RkUwMDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwICImI3gyMjk0OyItLT4KKzwhLS1FTlRJVFkgU3F1
YXJlVW5pb24gIiYjeDIyOTQ7Ii0tPgorPCEtLUVOVElUWSBzcWN1cHMgIiYjeDIyOTQ7JiN4RkUw
MDsiLS0+Cis8IS0tRU5USVRZIG9wbHVzICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgQ2lyY2xl
UGx1cyAiJiN4MjI5NTsiLS0+Cis8IS0tRU5USVRZIG9taW51cyAiJiN4MjI5NjsiLS0+Cis8IS0t
RU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyItLT4KKzwhLS1FTlRJVFkgb3RpbWVzICImI3gy
Mjk3OyItLT4KKzwhLS1FTlRJVFkgQ2lyY2xlVGltZXMgIiYjeDIyOTc7Ii0tPgorPCEtLUVOVElU
WSBvc29sICImI3gyMjk4OyItLT4KKzwhLS1FTlRJVFkgb2RvdCAiJiN4MjI5OTsiLS0+Cis8IS0t
RU5USVRZIENpcmNsZURvdCAiJiN4MjI5OTsiLS0+Cis8IS0tRU5USVRZIG9jaXIgIiYjeDIyOUE7
Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVkY2lyYyAiJiN4MjI5QTsiLS0+Cis8IS0tRU5USVRZIG9h
c3QgIiYjeDIyOUI7Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyItLT4KKzwh
LS1FTlRJVFkgb2Rhc2ggIiYjeDIyOUQ7Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVkZGFzaCAiJiN4
MjI5RDsiLS0+Cis8IS0tRU5USVRZIHBsdXNiICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgYm94
cGx1cyAiJiN4MjI5RTsiLS0+Cis8IS0tRU5USVRZIG1pbnVzYiAiJiN4MjI5RjsiLS0+Cis8IS0t
RU5USVRZIGJveG1pbnVzICImI3gyMjlGOyItLT4KKzwhLS1FTlRJVFkgdGltZXNiICImI3gyMkEw
OyItLT4KKzwhLS1FTlRJVFkgYm94dGltZXMgIiYjeDIyQTA7Ii0tPgorPCEtLUVOVElUWSBzZG90
YiAiJiN4MjJBMTsiLS0+Cis8IS0tRU5USVRZIGRvdHNxdWFyZSAiJiN4MjJBMTsiLS0+Cis8IS0t
RU5USVRZIHZkYXNoICImI3gyMkEyOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUZWUgIiYjeDIyQTI7
Ii0tPgorPCEtLUVOVElUWSBkYXNodiAiJiN4MjJBMzsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWUg
IiYjeDIyQTM7Ii0tPgorPCEtLUVOVElUWSB0b3AgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBE
b3duVGVlICImI3gyMkE0OyItLT4KKzwhLS1FTlRJVFkgYm90dG9tICImI3gyMkE1OyItLT4KKzwh
LS1FTlRJVFkgYm90ICImI3gyMkE1OyItLT4KKzwhLS1FTlRJVFkgcGVycCAiJiN4MjJBNTsiLS0+
Cis8IS0tRU5USVRZIFVwVGVlICImI3gyMkE1OyItLT4KKzwhLS1FTlRJVFkgbW9kZWxzICImI3gy
MkE3OyItLT4KKzwhLS1FTlRJVFkgdkRhc2ggIiYjeDIyQTg7Ii0tPgorPCEtLUVOVElUWSBEb3Vi
bGVSaWdodFRlZSAiJiN4MjJBODsiLS0+Cis8IS0tRU5USVRZIFZkYXNoICImI3gyMkE5OyItLT4K
KzwhLS1FTlRJVFkgVnZkYXNoICImI3gyMkFBOyItLT4KKzwhLS1FTlRJVFkgVkRhc2ggIiYjeDIy
QUI7Ii0tPgorPCEtLUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ii0tPgorPCEtLUVOVElUWSBudkRh
c2ggIiYjeDIyQUQ7Ii0tPgorPCEtLUVOVElUWSBuVmRhc2ggIiYjeDIyQUU7Ii0tPgorPCEtLUVO
VElUWSBuVkRhc2ggIiYjeDIyQUY7Ii0tPgorPCEtLUVOVElUWSBwcnVyZWwgIiYjeDIyQjA7Ii0t
PgorPCEtLUVOVElUWSB2bHRyaSAiJiN4MjJCMjsiLS0+Cis8IS0tRU5USVRZIHZhcnRyaWFuZ2xl
bGVmdCAiJiN4MjJCMjsiLS0+Cis8IS0tRU5USVRZIExlZnRUcmlhbmdsZSAiJiN4MjJCMjsiLS0+
Cis8IS0tRU5USVRZIHZydHJpICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgdmFydHJpYW5nbGVy
aWdodCAiJiN4MjJCMzsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VHJpYW5nbGUgIiYjeDIyQjM7Ii0t
PgorPCEtLUVOVElUWSBsdHJpZSAiJiN4MjJCNDsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlbGVm
dGVxICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjQ7
Ii0tPgorPCEtLUVOVElUWSBudmx0cmllICImI3gyMkI0OyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBydHJpZSAiJiN4MjJCNTsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcmlnaHRlcSAiJiN4MjJC
NTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNTsiLS0+Cis8IS0t
RU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIG9yaWdvZiAi
JiN4MjJCNjsiLS0+Cis8IS0tRU5USVRZIGltb2YgIiYjeDIyQjc7Ii0tPgorPCEtLUVOVElUWSBt
dW1hcCAiJiN4MjJCODsiLS0+Cis8IS0tRU5USVRZIG11bHRpbWFwICImI3gyMkI4OyItLT4KKzwh
LS1FTlRJVFkgaGVyY29uICImI3gyMkI5OyItLT4KKzwhLS1FTlRJVFkgaW50Y2FsICImI3gyMkJB
OyItLT4KKzwhLS1FTlRJVFkgaW50ZXJjYWwgIiYjeDIyQkE7Ii0tPgorPCEtLUVOVElUWSB2ZWVi
YXIgIiYjeDIyQkI7Ii0tPgorPCEtLUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ii0tPgorPCEtLUVO
VElUWSBhbmdydHZiICImI3gyMkJFOyItLT4KKzwhLS1FTlRJVFkgbHJ0cmkgIiYjeDIyQkY7Ii0t
PgorPCEtLUVOVElUWSB4d2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSBXZWRnZSAiJiN4
MjJDMDsiLS0+Cis8IS0tRU5USVRZIGJpZ3dlZGdlICImI3gyMkMwOyItLT4KKzwhLS1FTlRJVFkg
eHZlZSAiJiN4MjJDMTsiLS0+Cis8IS0tRU5USVRZIFZlZSAiJiN4MjJDMTsiLS0+Cis8IS0tRU5U
SVRZIGJpZ3ZlZSAiJiN4MjJDMTsiLS0+Cis8IS0tRU5USVRZIHhjYXAgIiYjeDIyQzI7Ii0tPgor
PCEtLUVOVElUWSBJbnRlcnNlY3Rpb24gIiYjeDIyQzI7Ii0tPgorPCEtLUVOVElUWSBiaWdjYXAg
IiYjeDIyQzI7Ii0tPgorPCEtLUVOVElUWSB4Y3VwICImI3gyMkMzOyItLT4KKzwhLS1FTlRJVFkg
VW5pb24gIiYjeDIyQzM7Ii0tPgorPCEtLUVOVElUWSBiaWdjdXAgIiYjeDIyQzM7Ii0tPgorPCEt
LUVOVElUWSBkaWFtICImI3gyMkM0OyItLT4KKzwhLS1FTlRJVFkgZGlhbW9uZCAiJiN4MjJDNDsi
LS0+Cis8IS0tRU5USVRZIERpYW1vbmQgIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBzZG90ICIm
I3gyMkM1OyItLT4KKzwhLS1FTlRJVFkgc3N0YXJmICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkg
U3RhciAiJiN4MjJDNjsiLS0+Cis8IS0tRU5USVRZIGRpdm9ueCAiJiN4MjJDNzsiLS0+Cis8IS0t
RU5USVRZIGRpdmlkZW9udGltZXMgIiYjeDIyQzc7Ii0tPgorPCEtLUVOVElUWSBib3d0aWUgIiYj
eDIyQzg7Ii0tPgorPCEtLUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ii0tPgorPCEtLUVOVElUWSBy
dGltZXMgIiYjeDIyQ0E7Ii0tPgorPCEtLUVOVElUWSBsdGhyZWUgIiYjeDIyQ0I7Ii0tPgorPCEt
LUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiLS0+Cis8IS0tRU5USVRZIHJ0aHJlZSAi
JiN4MjJDQzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0dGhyZWV0aW1lcyAiJiN4MjJDQzsiLS0+Cis8
IS0tRU5USVRZIGJzaW1lICImI3gyMkNEOyItLT4KKzwhLS1FTlRJVFkgYmFja3NpbWVxICImI3gy
MkNEOyItLT4KKzwhLS1FTlRJVFkgY3V2ZWUgIiYjeDIyQ0U7Ii0tPgorPCEtLUVOVElUWSBjdXJs
eXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5USVRZIGN1d2VkICImI3gyMkNGOyItLT4KKzwhLS1F
TlRJVFkgY3VybHl3ZWRnZSAiJiN4MjJDRjsiLS0+Cis8IS0tRU5USVRZIFN1YiAiJiN4MjJEMDsi
LS0+Cis8IS0tRU5USVRZIFN1YnNldCAiJiN4MjJEMDsiLS0+Cis8IS0tRU5USVRZIFN1cCAiJiN4
MjJEMTsiLS0+Cis8IS0tRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiLS0+Cis8IS0tRU5USVRZIENh
cCAiJiN4MjJEMjsiLS0+Cis8IS0tRU5USVRZIEN1cCAiJiN4MjJEMzsiLS0+Cis8IS0tRU5USVRZ
IGZvcmsgIiYjeDIyRDQ7Ii0tPgorPCEtLUVOVElUWSBwaXRjaGZvcmsgIiYjeDIyRDQ7Ii0tPgor
PCEtLUVOVElUWSBlcGFyICImI3gyMkQ1OyItLT4KKzwhLS1FTlRJVFkgbHRkb3QgIiYjeDIyRDY7
Ii0tPgorPCEtLUVOVElUWSBsZXNzZG90ICImI3gyMkQ2OyItLT4KKzwhLS1FTlRJVFkgZ3Rkb3Qg
IiYjeDIyRDc7Ii0tPgorPCEtLUVOVElUWSBndHJkb3QgIiYjeDIyRDc7Ii0tPgorPCEtLUVOVElU
WSBMbCAiJiN4MjJEODsiLS0+Cis8IS0tRU5USVRZIG5MbCAiJiN4MjJEODsmI3gzMzg7Ii0tPgor
PCEtLUVOVElUWSBHZyAiJiN4MjJEOTsiLS0+Cis8IS0tRU5USVRZIGdnZyAiJiN4MjJEOTsiLS0+
Cis8IS0tRU5USVRZIG5HZyAiJiN4MjJEOTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBsZWcgIiYj
eDIyREE7Ii0tPgorPCEtLUVOVElUWSBMZXNzRXF1YWxHcmVhdGVyICImI3gyMkRBOyItLT4KKzwh
LS1FTlRJVFkgbGVzc2VxZ3RyICImI3gyMkRBOyItLT4KKzwhLS1FTlRJVFkgbGVzZyAiJiN4MjJE
QTsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ2VsICImI3gyMkRCOyItLT4KKzwhLS1FTlRJVFkg
Z3RyZXFsZXNzICImI3gyMkRCOyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4
MjJEQjsiLS0+Cis8IS0tRU5USVRZIGdlc2wgIiYjeDIyREI7JiN4RkUwMDsiLS0+Cis8IS0tRU5U
SVRZIGN1ZXByICImI3gyMkRFOyItLT4KKzwhLS1FTlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7
Ii0tPgorPCEtLUVOVElUWSBjdWVzYyAiJiN4MjJERjsiLS0+Cis8IS0tRU5USVRZIGN1cmx5ZXFz
dWNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkgbnByY3VlICImI3gyMkUwOyItLT4KKzwhLS1F
TlRJVFkgTm90UHJlY2VkZXNTbGFudEVxdWFsICImI3gyMkUwOyItLT4KKzwhLS1FTlRJVFkgbnNj
Y3VlICImI3gyMkUxOyItLT4KKzwhLS1FTlRJVFkgTm90U3VjY2VlZHNTbGFudEVxdWFsICImI3gy
MkUxOyItLT4KKzwhLS1FTlRJVFkgbnNxc3ViZSAiJiN4MjJFMjsiLS0+Cis8IS0tRU5USVRZIE5v
dFNxdWFyZVN1YnNldEVxdWFsICImI3gyMkUyOyItLT4KKzwhLS1FTlRJVFkgbnNxc3VwZSAiJiN4
MjJFMzsiLS0+Cis8IS0tRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0RXF1YWwgIiYjeDIyRTM7Ii0t
PgorPCEtLUVOVElUWSBsbnNpbSAiJiN4MjJFNjsiLS0+Cis8IS0tRU5USVRZIGduc2ltICImI3gy
MkU3OyItLT4KKzwhLS1FTlRJVFkgcHJuc2ltICImI3gyMkU4OyItLT4KKzwhLS1FTlRJVFkgcHJl
Y25zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVOVElUWSBzY25zaW0gIiYjeDIyRTk7Ii0tPgorPCEt
LUVOVElUWSBzdWNjbnNpbSAiJiN4MjJFOTsiLS0+Cis8IS0tRU5USVRZIG5sdHJpICImI3gyMkVB
OyItLT4KKzwhLS1FTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiLS0+Cis8IS0tRU5USVRZ
IE5vdExlZnRUcmlhbmdsZSAiJiN4MjJFQTsiLS0+Cis8IS0tRU5USVRZIG5ydHJpICImI3gyMkVC
OyItLT4KKzwhLS1FTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElU
WSBOb3RSaWdodFRyaWFuZ2xlICImI3gyMkVCOyItLT4KKzwhLS1FTlRJVFkgbmx0cmllICImI3gy
MkVDOyItLT4KKzwhLS1FTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyItLT4KKzwhLS1F
TlRJVFkgTm90TGVmdFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElUWSBucnRy
aWUgIiYjeDIyRUQ7Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyIt
LT4KKzwhLS1FTlRJVFkgTm90UmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkVEOyItLT4KKzwhLS1F
TlRJVFkgdmVsbGlwICImI3gyMkVFOyItLT4KKzwhLS1FTlRJVFkgY3Rkb3QgIiYjeDIyRUY7Ii0t
PgorPCEtLUVOVElUWSB1dGRvdCAiJiN4MjJGMDsiLS0+Cis8IS0tRU5USVRZIGR0ZG90ICImI3gy
MkYxOyItLT4KKzwhLS1FTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ii0tPgorPCEtLUVOVElUWSBpc2lu
c3YgIiYjeDIyRjM7Ii0tPgorPCEtLUVOVElUWSBpc2lucyAiJiN4MjJGNDsiLS0+Cis8IS0tRU5U
SVRZIGlzaW5kb3QgIiYjeDIyRjU7Ii0tPgorPCEtLUVOVElUWSBub3RpbmRvdCAiJiN4MjJGNTsm
I3gzMzg7Ii0tPgorPCEtLUVOVElUWSBub3RpbnZjICImI3gyMkY2OyItLT4KKzwhLS1FTlRJVFkg
bm90aW52YiAiJiN4MjJGNzsiLS0+Cis8IS0tRU5USVRZIGlzaW5FICImI3gyMkY5OyItLT4KKzwh
LS1FTlRJVFkgbm90aW5FICImI3gyMkY5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5pc2QgIiYj
eDIyRkE7Ii0tPgorPCEtLUVOVElUWSB4bmlzICImI3gyMkZCOyItLT4KKzwhLS1FTlRJVFkgbmlz
ICImI3gyMkZDOyItLT4KKzwhLS1FTlRJVFkgbm90bml2YyAiJiN4MjJGRDsiLS0+Cis8IS0tRU5U
SVRZIG5vdG5pdmIgIiYjeDIyRkU7Ii0tPgorPCEtLUVOVElUWSBiYXJ3ZWQgIiYjeDIzMDU7Ii0t
PgorPCEtLUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiLS0+Cis8IS0tRU5USVRZIEJhcndlZCAi
JiN4MjMwNjsiLS0+Cis8IS0tRU5USVRZIGRvdWJsZWJhcndlZGdlICImI3gyMzA2OyItLT4KKzwh
LS1FTlRJVFkgbGNlaWwgIiYjeDIzMDg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0Q2VpbGluZyAiJiN4
MjMwODsiLS0+Cis8IS0tRU5USVRZIHJjZWlsICImI3gyMzA5OyItLT4KKzwhLS1FTlRJVFkgUmln
aHRDZWlsaW5nICImI3gyMzA5OyItLT4KKzwhLS1FTlRJVFkgbGZsb29yICImI3gyMzBBOyItLT4K
KzwhLS1FTlRJVFkgTGVmdEZsb29yICImI3gyMzBBOyItLT4KKzwhLS1FTlRJVFkgcmZsb29yICIm
I3gyMzBCOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRGbG9vciAiJiN4MjMwQjsiLS0+Cis8IS0tRU5U
SVRZIGRyY3JvcCAiJiN4MjMwQzsiLS0+Cis8IS0tRU5USVRZIGRsY3JvcCAiJiN4MjMwRDsiLS0+
Cis8IS0tRU5USVRZIHVyY3JvcCAiJiN4MjMwRTsiLS0+Cis8IS0tRU5USVRZIHVsY3JvcCAiJiN4
MjMwRjsiLS0+Cis8IS0tRU5USVRZIGJub3QgIiYjeDIzMTA7Ii0tPgorPCEtLUVOVElUWSBwcm9m
bGluZSAiJiN4MjMxMjsiLS0+Cis8IS0tRU5USVRZIHByb2ZzdXJmICImI3gyMzEzOyItLT4KKzwh
LS1FTlRJVFkgdGVscmVjICImI3gyMzE1OyItLT4KKzwhLS1FTlRJVFkgdGFyZ2V0ICImI3gyMzE2
OyItLT4KKzwhLS1FTlRJVFkgdWxjb3JuICImI3gyMzFDOyItLT4KKzwhLS1FTlRJVFkgdWxjb3Ju
ZXIgIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElUWSB1cmNvcm4gIiYjeDIzMUQ7Ii0tPgorPCEtLUVO
VElUWSB1cmNvcm5lciAiJiN4MjMxRDsiLS0+Cis8IS0tRU5USVRZIGRsY29ybiAiJiN4MjMxRTsi
LS0+Cis8IS0tRU5USVRZIGxsY29ybmVyICImI3gyMzFFOyItLT4KKzwhLS1FTlRJVFkgZHJjb3Ju
ICImI3gyMzFGOyItLT4KKzwhLS1FTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7Ii0tPgorPCEtLUVO
VElUWSBmcm93biAiJiN4MjMyMjsiLS0+Cis8IS0tRU5USVRZIHNmcm93biAiJiN4MjMyMjsiLS0+
Cis8IS0tRU5USVRZIHNtaWxlICImI3gyMzIzOyItLT4KKzwhLS1FTlRJVFkgc3NtaWxlICImI3gy
MzIzOyItLT4KKzwhLS1FTlRJVFkgY3lsY3R5ICImI3gyMzJEOyItLT4KKzwhLS1FTlRJVFkgcHJv
ZmFsYXIgIiYjeDIzMkU7Ii0tPgorPCEtLUVOVElUWSB0b3Bib3QgIiYjeDIzMzY7Ii0tPgorPCEt
LUVOVElUWSBvdmJhciAiJiN4MjMzRDsiLS0+Cis8IS0tRU5USVRZIHNvbGJhciAiJiN4MjMzRjsi
LS0+Cis8IS0tRU5USVRZIGFuZ3phcnIgIiYjeDIzN0M7Ii0tPgorPCEtLUVOVElUWSBsbW91c3Qg
IiYjeDIzQjA7Ii0tPgorPCEtLUVOVElUWSBsbW91c3RhY2hlICImI3gyM0IwOyItLT4KKzwhLS1F
TlRJVFkgcm1vdXN0ICImI3gyM0IxOyItLT4KKzwhLS1FTlRJVFkgcm1vdXN0YWNoZSAiJiN4MjNC
MTsiLS0+Cis8IS0tRU5USVRZIHRicmsgIiYjeDIzQjQ7Ii0tPgorPCEtLUVOVElUWSBPdmVyQnJh
Y2tldCAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZIGJicmsgIiYjeDIzQjU7Ii0tPgorPCEtLUVO
VElUWSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ii0tPgorPCEtLUVOVElUWSBiYnJrdGJyayAiJiN4
MjNCNjsiLS0+Cis8IS0tRU5USVRZIE92ZXJQYXJlbnRoZXNpcyAiJiN4MjNEQzsiLS0+Cis8IS0t
RU5USVRZIFVuZGVyUGFyZW50aGVzaXMgIiYjeDIzREQ7Ii0tPgorPCEtLUVOVElUWSBPdmVyQnJh
Y2UgIiYjeDIzREU7Ii0tPgorPCEtLUVOVElUWSBVbmRlckJyYWNlICImI3gyM0RGOyItLT4KKzwh
LS1FTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7Ii0tPgorPCEtLUVOVElUWSBlbGludGVycyAiJiN4
MjNFNzsiLS0+Cis8IS0tRU5USVRZIGJsYW5rICImI3gyNDIzOyItLT4KKzwhLS1FTlRJVFkgb1Mg
IiYjeDI0Qzg7Ii0tPgorPCEtLUVOVElUWSBjaXJjbGVkUyAiJiN4MjRDODsiLS0+Cis8IS0tRU5U
SVRZIGJveGggIiYjeDI1MDA7Ii0tPgorPCEtLUVOVElUWSBIb3Jpem9udGFsTGluZSAiJiN4MjUw
MDsiLS0+Cis8IS0tRU5USVRZIGJveHYgIiYjeDI1MDI7Ii0tPgorPCEtLUVOVElUWSBib3hkciAi
JiN4MjUwQzsiLS0+Cis8IS0tRU5USVRZIGJveGRsICImI3gyNTEwOyItLT4KKzwhLS1FTlRJVFkg
Ym94dXIgIiYjeDI1MTQ7Ii0tPgorPCEtLUVOVElUWSBib3h1bCAiJiN4MjUxODsiLS0+Cis8IS0t
RU5USVRZIGJveHZyICImI3gyNTFDOyItLT4KKzwhLS1FTlRJVFkgYm94dmwgIiYjeDI1MjQ7Ii0t
PgorPCEtLUVOVElUWSBib3hoZCAiJiN4MjUyQzsiLS0+Cis8IS0tRU5USVRZIGJveGh1ICImI3gy
NTM0OyItLT4KKzwhLS1FTlRJVFkgYm94dmggIiYjeDI1M0M7Ii0tPgorPCEtLUVOVElUWSBib3hI
ICImI3gyNTUwOyItLT4KKzwhLS1FTlRJVFkgYm94ViAiJiN4MjU1MTsiLS0+Cis8IS0tRU5USVRZ
IGJveGRSICImI3gyNTUyOyItLT4KKzwhLS1FTlRJVFkgYm94RHIgIiYjeDI1NTM7Ii0tPgorPCEt
LUVOVElUWSBib3hEUiAiJiN4MjU1NDsiLS0+Cis8IS0tRU5USVRZIGJveGRMICImI3gyNTU1OyIt
LT4KKzwhLS1FTlRJVFkgYm94RGwgIiYjeDI1NTY7Ii0tPgorPCEtLUVOVElUWSBib3hETCAiJiN4
MjU1NzsiLS0+Cis8IS0tRU5USVRZIGJveHVSICImI3gyNTU4OyItLT4KKzwhLS1FTlRJVFkgYm94
VXIgIiYjeDI1NTk7Ii0tPgorPCEtLUVOVElUWSBib3hVUiAiJiN4MjU1QTsiLS0+Cis8IS0tRU5U
SVRZIGJveHVMICImI3gyNTVCOyItLT4KKzwhLS1FTlRJVFkgYm94VWwgIiYjeDI1NUM7Ii0tPgor
PCEtLUVOVElUWSBib3hVTCAiJiN4MjU1RDsiLS0+Cis8IS0tRU5USVRZIGJveHZSICImI3gyNTVF
OyItLT4KKzwhLS1FTlRJVFkgYm94VnIgIiYjeDI1NUY7Ii0tPgorPCEtLUVOVElUWSBib3hWUiAi
JiN4MjU2MDsiLS0+Cis8IS0tRU5USVRZIGJveHZMICImI3gyNTYxOyItLT4KKzwhLS1FTlRJVFkg
Ym94VmwgIiYjeDI1NjI7Ii0tPgorPCEtLUVOVElUWSBib3hWTCAiJiN4MjU2MzsiLS0+Cis8IS0t
RU5USVRZIGJveEhkICImI3gyNTY0OyItLT4KKzwhLS1FTlRJVFkgYm94aEQgIiYjeDI1NjU7Ii0t
PgorPCEtLUVOVElUWSBib3hIRCAiJiN4MjU2NjsiLS0+Cis8IS0tRU5USVRZIGJveEh1ICImI3gy
NTY3OyItLT4KKzwhLS1FTlRJVFkgYm94aFUgIiYjeDI1Njg7Ii0tPgorPCEtLUVOVElUWSBib3hI
VSAiJiN4MjU2OTsiLS0+Cis8IS0tRU5USVRZIGJveHZIICImI3gyNTZBOyItLT4KKzwhLS1FTlRJ
VFkgYm94VmggIiYjeDI1NkI7Ii0tPgorPCEtLUVOVElUWSBib3hWSCAiJiN4MjU2QzsiLS0+Cis8
IS0tRU5USVRZIHVoYmxrICImI3gyNTgwOyItLT4KKzwhLS1FTlRJVFkgbGhibGsgIiYjeDI1ODQ7
Ii0tPgorPCEtLUVOVElUWSBibG9jayAiJiN4MjU4ODsiLS0+Cis8IS0tRU5USVRZIGJsazE0ICIm
I3gyNTkxOyItLT4KKzwhLS1FTlRJVFkgYmxrMTIgIiYjeDI1OTI7Ii0tPgorPCEtLUVOVElUWSBi
bGszNCAiJiN4MjU5MzsiLS0+Cis8IS0tRU5USVRZIHNxdSAiJiN4MjVBMTsiLS0+Cis8IS0tRU5U
SVRZIHNxdWFyZSAiJiN4MjVBMTsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiLS0+
Cis8IS0tRU5USVRZIHNxdWYgIiYjeDI1QUE7Ii0tPgorPCEtLUVOVElUWSBzcXVhcmYgIiYjeDI1
QUE7Ii0tPgorPCEtLUVOVElUWSBibGFja3NxdWFyZSAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZ
IEZpbGxlZFZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIEVtcHR5VmVy
eVNtYWxsU3F1YXJlICImI3gyNUFCOyItLT4KKzwhLS1FTlRJVFkgcmVjdCAiJiN4MjVBRDsiLS0+
Cis8IS0tRU5USVRZIG1hcmtlciAiJiN4MjVBRTsiLS0+Cis8IS0tRU5USVRZIGZsdG5zICImI3gy
NUIxOyItLT4KKzwhLS1FTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSBiaWd0
cmlhbmdsZXVwICImI3gyNUIzOyItLT4KKzwhLS1FTlRJVFkgdXRyaWYgIiYjeDI1QjQ7Ii0tPgor
PCEtLUVOVElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyItLT4KKzwhLS1FTlRJVFkgdXRyaSAi
JiN4MjVCNTsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlICImI3gyNUI1OyItLT4KKzwhLS1FTlRJ
VFkgcnRyaWYgIiYjeDI1Qjg7Ii0tPgorPCEtLUVOVElUWSBibGFja3RyaWFuZ2xlcmlnaHQgIiYj
eDI1Qjg7Ii0tPgorPCEtLUVOVElUWSBydHJpICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgdHJp
YW5nbGVyaWdodCAiJiN4MjVCOTsiLS0+Cis8IS0tRU5USVRZIHhkdHJpICImI3gyNUJEOyItLT4K
KzwhLS1FTlRJVFkgYmlndHJpYW5nbGVkb3duICImI3gyNUJEOyItLT4KKzwhLS1FTlRJVFkgZHRy
aWYgIiYjeDI1QkU7Ii0tPgorPCEtLUVOVElUWSBibGFja3RyaWFuZ2xlZG93biAiJiN4MjVCRTsi
LS0+Cis8IS0tRU5USVRZIGR0cmkgIiYjeDI1QkY7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmdsZWRv
d24gIiYjeDI1QkY7Ii0tPgorPCEtLUVOVElUWSBsdHJpZiAiJiN4MjVDMjsiLS0+Cis8IS0tRU5U
SVRZIGJsYWNrdHJpYW5nbGVsZWZ0ICImI3gyNUMyOyItLT4KKzwhLS1FTlRJVFkgbHRyaSAiJiN4
MjVDMzsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlbGVmdCAiJiN4MjVDMzsiLS0+Cis8IS0tRU5U
SVRZIGxveiAiJiN4MjVDQTsiLS0+Cis8IS0tRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ii0tPgor
PCEtLUVOVElUWSBjaXIgIiYjeDI1Q0I7Ii0tPgorPCEtLUVOVElUWSB0cmlkb3QgIiYjeDI1RUM7
Ii0tPgorPCEtLUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsiLS0+Cis8IS0tRU5USVRZIGJpZ2NpcmMg
IiYjeDI1RUY7Ii0tPgorPCEtLUVOVElUWSB1bHRyaSAiJiN4MjVGODsiLS0+Cis8IS0tRU5USVRZ
IHVydHJpICImI3gyNUY5OyItLT4KKzwhLS1FTlRJVFkgbGx0cmkgIiYjeDI1RkE7Ii0tPgorPCEt
LUVOVElUWSBFbXB0eVNtYWxsU3F1YXJlICImI3gyNUZCOyItLT4KKzwhLS1FTlRJVFkgRmlsbGVk
U21hbGxTcXVhcmUgIiYjeDI1RkM7Ii0tPgorPCEtLUVOVElUWSBzdGFyZiAiJiN4MjYwNTsiLS0+
Cis8IS0tRU5USVRZIGJpZ3N0YXIgIiYjeDI2MDU7Ii0tPgorPCEtLUVOVElUWSBzdGFyICImI3gy
NjA2OyItLT4KKzwhLS1FTlRJVFkgcGhvbmUgIiYjeDI2MEU7Ii0tPgorPCEtLUVOVElUWSBmZW1h
bGUgIiYjeDI2NDA7Ii0tPgorPCEtLUVOVElUWSBtYWxlICImI3gyNjQyOyItLT4KKzwhLS1FTlRJ
VFkgc3BhZGVzICImI3gyNjYwOyItLT4KKzwhLS1FTlRJVFkgc3BhZGVzdWl0ICImI3gyNjYwOyIt
LT4KKzwhLS1FTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ii0tPgorPCEtLUVOVElUWSBjbHVic3VpdCAi
JiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGhlYXJ0cyAiJiN4MjY2NTsiLS0+Cis8IS0tRU5USVRZ
IGhlYXJ0c3VpdCAiJiN4MjY2NTsiLS0+Cis8IS0tRU5USVRZIGRpYW1zICImI3gyNjY2OyItLT4K
KzwhLS1FTlRJVFkgZGlhbW9uZHN1aXQgIiYjeDI2NjY7Ii0tPgorPCEtLUVOVElUWSBzdW5nICIm
I3gyNjZBOyItLT4KKzwhLS1FTlRJVFkgZmxhdCAiJiN4MjY2RDsiLS0+Cis8IS0tRU5USVRZIG5h
dHVyICImI3gyNjZFOyItLT4KKzwhLS1FTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiLS0+Cis8IS0t
RU5USVRZIHNoYXJwICImI3gyNjZGOyItLT4KKzwhLS1FTlRJVFkgY2hlY2sgIiYjeDI3MTM7Ii0t
PgorPCEtLUVOVElUWSBjaGVja21hcmsgIiYjeDI3MTM7Ii0tPgorPCEtLUVOVElUWSBjcm9zcyAi
JiN4MjcxNzsiLS0+Cis8IS0tRU5USVRZIG1hbHQgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBt
YWx0ZXNlICImI3gyNzIwOyItLT4KKzwhLS1FTlRJVFkgc2V4dCAiJiN4MjczNjsiLS0+Cis8IS0t
RU5USVRZIFZlcnRpY2FsU2VwYXJhdG9yICImI3gyNzU4OyItLT4KKzwhLS1FTlRJVFkgbGJicmsg
IiYjeDI3NzI7Ii0tPgorPCEtLUVOVElUWSByYmJyayAiJiN4Mjc3MzsiLS0+Cis8IS0tRU5USVRZ
IGJzb2xoc3ViICImI3gyN0M4OyItLT4KKzwhLS1FTlRJVFkgc3VwaHNvbCAiJiN4MjdDOTsiLS0+
Cis8IS0tRU5USVRZIGxvYnJrICImI3gyN0U2OyItLT4KKzwhLS1FTlRJVFkgTGVmdERvdWJsZUJy
YWNrZXQgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSByb2JyayAiJiN4MjdFNzsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0RG91YmxlQnJhY2tldCAiJiN4MjdFNzsiLS0+Cis8IS0tRU5USVRZIGxhbmcg
IiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QW5nbGVCcmFja2V0ICImI3gyN0U4OyItLT4K
KzwhLS1FTlRJVFkgbGFuZ2xlICImI3gyN0U4OyItLT4KKzwhLS1FTlRJVFkgcmFuZyAiJiN4MjdF
OTsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gyN0U5OyItLT4KKzwhLS1F
TlRJVFkgcmFuZ2xlICImI3gyN0U5OyItLT4KKzwhLS1FTlRJVFkgTGFuZyAiJiN4MjdFQTsiLS0+
Cis8IS0tRU5USVRZIFJhbmcgIiYjeDI3RUI7Ii0tPgorPCEtLUVOVElUWSBsb2FuZyAiJiN4MjdF
QzsiLS0+Cis8IS0tRU5USVRZIHJvYW5nICImI3gyN0VEOyItLT4KKzwhLS1FTlRJVFkgeGxhcnIg
IiYjeDI3RjU7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdGFycm93ICImI3gyN0Y1OyItLT4KKzwh
LS1FTlRJVFkgTG9uZ0xlZnRBcnJvdyAiJiN4MjdGNTsiLS0+Cis8IS0tRU5USVRZIHhyYXJyICIm
I3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgbG9uZ3JpZ2h0YXJyb3cgIiYjeDI3RjY7Ii0tPgorPCEt
LUVOVElUWSBMb25nUmlnaHRBcnJvdyAiJiN4MjdGNjsiLS0+Cis8IS0tRU5USVRZIHhoYXJyICIm
I3gyN0Y3OyItLT4KKzwhLS1FTlRJVFkgbG9uZ2xlZnRyaWdodGFycm93ICImI3gyN0Y3OyItLT4K
KzwhLS1FTlRJVFkgTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0Y3OyItLT4KKzwhLS1FTlRJVFkg
eGxBcnIgIiYjeDI3Rjg7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVmdGFycm93ICImI3gyN0Y4OyIt
LT4KKzwhLS1FTlRJVFkgRG91YmxlTG9uZ0xlZnRBcnJvdyAiJiN4MjdGODsiLS0+Cis8IS0tRU5U
SVRZIHhyQXJyICImI3gyN0Y5OyItLT4KKzwhLS1FTlRJVFkgTG9uZ3JpZ2h0YXJyb3cgIiYjeDI3
Rjk7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nUmlnaHRBcnJvdyAiJiN4MjdGOTsiLS0+Cis8
IS0tRU5USVRZIHhoQXJyICImI3gyN0ZBOyItLT4KKzwhLS1FTlRJVFkgTG9uZ2xlZnRyaWdodGFy
cm93ICImI3gyN0ZBOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTG9uZ0xlZnRSaWdodEFycm93ICIm
I3gyN0ZBOyItLT4KKzwhLS1FTlRJVFkgeG1hcCAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGxv
bmdtYXBzdG8gIiYjeDI3RkM7Ii0tPgorPCEtLUVOVElUWSBkemlncmFyciAiJiN4MjdGRjsiLS0+
Cis8IS0tRU5USVRZIG52bEFyciAiJiN4MjkwMjsiLS0+Cis8IS0tRU5USVRZIG52ckFyciAiJiN4
MjkwMzsiLS0+Cis8IS0tRU5USVRZIG52SGFyciAiJiN4MjkwNDsiLS0+Cis8IS0tRU5USVRZIE1h
cCAiJiN4MjkwNTsiLS0+Cis8IS0tRU5USVRZIGxiYXJyICImI3gyOTBDOyItLT4KKzwhLS1FTlRJ
VFkgcmJhcnIgIiYjeDI5MEQ7Ii0tPgorPCEtLUVOVElUWSBia2Fyb3cgIiYjeDI5MEQ7Ii0tPgor
PCEtLUVOVElUWSBsQmFyciAiJiN4MjkwRTsiLS0+Cis8IS0tRU5USVRZIHJCYXJyICImI3gyOTBG
OyItLT4KKzwhLS1FTlRJVFkgZGJrYXJvdyAiJiN4MjkwRjsiLS0+Cis8IS0tRU5USVRZIFJCYXJy
ICImI3gyOTEwOyItLT4KKzwhLS1FTlRJVFkgZHJia2Fyb3cgIiYjeDI5MTA7Ii0tPgorPCEtLUVO
VElUWSBERG90cmFoZCAiJiN4MjkxMTsiLS0+Cis8IS0tRU5USVRZIFVwQXJyb3dCYXIgIiYjeDI5
MTI7Ii0tPgorPCEtLUVOVElUWSBEb3duQXJyb3dCYXIgIiYjeDI5MTM7Ii0tPgorPCEtLUVOVElU
WSBSYXJydGwgIiYjeDI5MTY7Ii0tPgorPCEtLUVOVElUWSBsYXRhaWwgIiYjeDI5MTk7Ii0tPgor
PCEtLUVOVElUWSByYXRhaWwgIiYjeDI5MUE7Ii0tPgorPCEtLUVOVElUWSBsQXRhaWwgIiYjeDI5
MUI7Ii0tPgorPCEtLUVOVElUWSByQXRhaWwgIiYjeDI5MUM7Ii0tPgorPCEtLUVOVElUWSBsYXJy
ZnMgIiYjeDI5MUQ7Ii0tPgorPCEtLUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ii0tPgorPCEtLUVO
VElUWSBsYXJyYmZzICImI3gyOTFGOyItLT4KKzwhLS1FTlRJVFkgcmFycmJmcyAiJiN4MjkyMDsi
LS0+Cis8IS0tRU5USVRZIG53YXJoayAiJiN4MjkyMzsiLS0+Cis8IS0tRU5USVRZIG5lYXJoayAi
JiN4MjkyNDsiLS0+Cis8IS0tRU5USVRZIHNlYXJoayAiJiN4MjkyNTsiLS0+Cis8IS0tRU5USVRZ
IGhrc2Vhcm93ICImI3gyOTI1OyItLT4KKzwhLS1FTlRJVFkgc3dhcmhrICImI3gyOTI2OyItLT4K
KzwhLS1FTlRJVFkgaGtzd2Fyb3cgIiYjeDI5MjY7Ii0tPgorPCEtLUVOVElUWSBud25lYXIgIiYj
eDI5Mjc7Ii0tPgorPCEtLUVOVElUWSBuZXNlYXIgIiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSB0
b2VhICImI3gyOTI4OyItLT4KKzwhLS1FTlRJVFkgc2Vzd2FyICImI3gyOTI5OyItLT4KKzwhLS1F
TlRJVFkgdG9zYSAiJiN4MjkyOTsiLS0+Cis8IS0tRU5USVRZIHN3bndhciAiJiN4MjkyQTsiLS0+
Cis8IS0tRU5USVRZIHJhcnJjICImI3gyOTMzOyItLT4KKzwhLS1FTlRJVFkgbnJhcnJjICImI3gy
OTMzOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGN1ZGFycnIgIiYjeDI5MzU7Ii0tPgorPCEtLUVO
VElUWSBsZGNhICImI3gyOTM2OyItLT4KKzwhLS1FTlRJVFkgcmRjYSAiJiN4MjkzNzsiLS0+Cis8
IS0tRU5USVRZIGN1ZGFycmwgIiYjeDI5Mzg7Ii0tPgorPCEtLUVOVElUWSBsYXJycGwgIiYjeDI5
Mzk7Ii0tPgorPCEtLUVOVElUWSBjdXJhcnJtICImI3gyOTNDOyItLT4KKzwhLS1FTlRJVFkgY3Vs
YXJycCAiJiN4MjkzRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJwbCAiJiN4Mjk0NTsiLS0+Cis8IS0t
RU5USVRZIGhhcnJjaXIgIiYjeDI5NDg7Ii0tPgorPCEtLUVOVElUWSBVYXJyb2NpciAiJiN4Mjk0
OTsiLS0+Cis8IS0tRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyItLT4KKzwhLS1FTlRJVFkgbGRy
dXNoYXIgIiYjeDI5NEI7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRWZWN0b3IgIiYjeDI5NEU7
Ii0tPgorPCEtLUVOVElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiLS0+Cis8IS0tRU5U
SVRZIERvd25MZWZ0UmlnaHRWZWN0b3IgIiYjeDI5NTA7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VXBE
b3duVmVjdG9yICImI3gyOTUxOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1
MjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yQmFyICImI3gyOTUzOyItLT4KKzwhLS1FTlRJ
VFkgUmlnaHRVcFZlY3RvckJhciAiJiN4Mjk1NDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZl
Y3RvckJhciAiJiN4Mjk1NTsiLS0+Cis8IS0tRU5USVRZIERvd25MZWZ0VmVjdG9yQmFyICImI3gy
OTU2OyItLT4KKzwhLS1FTlRJVFkgRG93blJpZ2h0VmVjdG9yQmFyICImI3gyOTU3OyItLT4KKzwh
LS1FTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyItLT4KKzwhLS1FTlRJVFkgTGVmdERv
d25WZWN0b3JCYXIgIiYjeDI5NTk7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VGVlVmVjdG9yICImI3gy
OTVBOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ii0tPgorPCEtLUVO
VElUWSBSaWdodFVwVGVlVmVjdG9yICImI3gyOTVDOyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3du
VGVlVmVjdG9yICImI3gyOTVEOyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYj
eDI5NUU7Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUY7Ii0tPgor
PCEtLUVOVElUWSBMZWZ0VXBUZWVWZWN0b3IgIiYjeDI5NjA7Ii0tPgorPCEtLUVOVElUWSBMZWZ0
RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiLS0+Cis8IS0tRU5USVRZIGxIYXIgIiYjeDI5NjI7Ii0t
PgorPCEtLUVOVElUWSB1SGFyICImI3gyOTYzOyItLT4KKzwhLS1FTlRJVFkgckhhciAiJiN4Mjk2
NDsiLS0+Cis8IS0tRU5USVRZIGRIYXIgIiYjeDI5NjU7Ii0tPgorPCEtLUVOVElUWSBsdXJ1aGFy
ICImI3gyOTY2OyItLT4KKzwhLS1FTlRJVFkgbGRyZGhhciAiJiN4Mjk2NzsiLS0+Cis8IS0tRU5U
SVRZIHJ1bHVoYXIgIiYjeDI5Njg7Ii0tPgorPCEtLUVOVElUWSByZGxkaGFyICImI3gyOTY5OyIt
LT4KKzwhLS1FTlRJVFkgbGhhcnVsICImI3gyOTZBOyItLT4KKzwhLS1FTlRJVFkgbGxoYXJkICIm
I3gyOTZCOyItLT4KKzwhLS1FTlRJVFkgcmhhcnVsICImI3gyOTZDOyItLT4KKzwhLS1FTlRJVFkg
bHJoYXJkICImI3gyOTZEOyItLT4KKzwhLS1FTlRJVFkgdWRoYXIgIiYjeDI5NkU7Ii0tPgorPCEt
LUVOVElUWSBVcEVxdWlsaWJyaXVtICImI3gyOTZFOyItLT4KKzwhLS1FTlRJVFkgZHVoYXIgIiYj
eDI5NkY7Ii0tPgorPCEtLUVOVElUWSBSZXZlcnNlVXBFcXVpbGlicml1bSAiJiN4Mjk2RjsiLS0+
Cis8IS0tRU5USVRZIFJvdW5kSW1wbGllcyAiJiN4Mjk3MDsiLS0+Cis8IS0tRU5USVRZIGVyYXJy
ICImI3gyOTcxOyItLT4KKzwhLS1FTlRJVFkgc2ltcmFyciAiJiN4Mjk3MjsiLS0+Cis8IS0tRU5U
SVRZIGxhcnJzaW0gIiYjeDI5NzM7Ii0tPgorPCEtLUVOVElUWSByYXJyc2ltICImI3gyOTc0OyIt
LT4KKzwhLS1FTlRJVFkgcmFycmFwICImI3gyOTc1OyItLT4KKzwhLS1FTlRJVFkgbHRsYXJyICIm
I3gyOTc2OyItLT4KKzwhLS1FTlRJVFkgZ3RyYXJyICImI3gyOTc4OyItLT4KKzwhLS1FTlRJVFkg
c3VicmFyciAiJiN4Mjk3OTsiLS0+Cis8IS0tRU5USVRZIHN1cGxhcnIgIiYjeDI5N0I7Ii0tPgor
PCEtLUVOVElUWSBsZmlzaHQgIiYjeDI5N0M7Ii0tPgorPCEtLUVOVElUWSByZmlzaHQgIiYjeDI5
N0Q7Ii0tPgorPCEtLUVOVElUWSB1ZmlzaHQgIiYjeDI5N0U7Ii0tPgorPCEtLUVOVElUWSBkZmlz
aHQgIiYjeDI5N0Y7Ii0tPgorPCEtLUVOVElUWSBsb3BhciAiJiN4Mjk4NTsiLS0+Cis8IS0tRU5U
SVRZIHJvcGFyICImI3gyOTg2OyItLT4KKzwhLS1FTlRJVFkgbGJya2UgIiYjeDI5OEI7Ii0tPgor
PCEtLUVOVElUWSByYnJrZSAiJiN4Mjk4QzsiLS0+Cis8IS0tRU5USVRZIGxicmtzbHUgIiYjeDI5
OEQ7Ii0tPgorPCEtLUVOVElUWSByYnJrc2xkICImI3gyOThFOyItLT4KKzwhLS1FTlRJVFkgbGJy
a3NsZCAiJiN4Mjk4RjsiLS0+Cis8IS0tRU5USVRZIHJicmtzbHUgIiYjeDI5OTA7Ii0tPgorPCEt
LUVOVElUWSBsYW5nZCAiJiN4Mjk5MTsiLS0+Cis8IS0tRU5USVRZIHJhbmdkICImI3gyOTkyOyIt
LT4KKzwhLS1FTlRJVFkgbHBhcmx0ICImI3gyOTkzOyItLT4KKzwhLS1FTlRJVFkgcnBhcmd0ICIm
I3gyOTk0OyItLT4KKzwhLS1FTlRJVFkgZ3RsUGFyICImI3gyOTk1OyItLT4KKzwhLS1FTlRJVFkg
bHRyUGFyICImI3gyOTk2OyItLT4KKzwhLS1FTlRJVFkgdnppZ3phZyAiJiN4Mjk5QTsiLS0+Cis8
IS0tRU5USVRZIHZhbmdydCAiJiN4Mjk5QzsiLS0+Cis8IS0tRU5USVRZIGFuZ3J0dmJkICImI3gy
OTlEOyItLT4KKzwhLS1FTlRJVFkgYW5nZSAiJiN4MjlBNDsiLS0+Cis8IS0tRU5USVRZIHJhbmdl
ICImI3gyOUE1OyItLT4KKzwhLS1FTlRJVFkgZHdhbmdsZSAiJiN4MjlBNjsiLS0+Cis8IS0tRU5U
SVRZIHV3YW5nbGUgIiYjeDI5QTc7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYSAiJiN4MjlBODsi
LS0+Cis8IS0tRU5USVRZIGFuZ21zZGFiICImI3gyOUE5OyItLT4KKzwhLS1FTlRJVFkgYW5nbXNk
YWMgIiYjeDI5QUE7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZCAiJiN4MjlBQjsiLS0+Cis8IS0t
RU5USVRZIGFuZ21zZGFlICImI3gyOUFDOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkYWYgIiYjeDI5
QUQ7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZyAiJiN4MjlBRTsiLS0+Cis8IS0tRU5USVRZIGFu
Z21zZGFoICImI3gyOUFGOyItLT4KKzwhLS1FTlRJVFkgYmVtcHR5diAiJiN4MjlCMDsiLS0+Cis8
IS0tRU5USVRZIGRlbXB0eXYgIiYjeDI5QjE7Ii0tPgorPCEtLUVOVElUWSBjZW1wdHl2ICImI3gy
OUIyOyItLT4KKzwhLS1FTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ii0tPgorPCEtLUVOVElUWSBs
YWVtcHR5diAiJiN4MjlCNDsiLS0+Cis8IS0tRU5USVRZIG9oYmFyICImI3gyOUI1OyItLT4KKzwh
LS1FTlRJVFkgb21pZCAiJiN4MjlCNjsiLS0+Cis8IS0tRU5USVRZIG9wYXIgIiYjeDI5Qjc7Ii0t
PgorPCEtLUVOVElUWSBvcGVycCAiJiN4MjlCOTsiLS0+Cis8IS0tRU5USVRZIG9sY3Jvc3MgIiYj
eDI5QkI7Ii0tPgorPCEtLUVOVElUWSBvZHNvbGQgIiYjeDI5QkM7Ii0tPgorPCEtLUVOVElUWSBv
bGNpciAiJiN4MjlCRTsiLS0+Cis8IS0tRU5USVRZIG9mY2lyICImI3gyOUJGOyItLT4KKzwhLS1F
TlRJVFkgb2x0ICImI3gyOUMwOyItLT4KKzwhLS1FTlRJVFkgb2d0ICImI3gyOUMxOyItLT4KKzwh
LS1FTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiLS0+Cis8IS0tRU5USVRZIGNpckUgIiYjeDI5QzM7
Ii0tPgorPCEtLUVOVElUWSBzb2xiICImI3gyOUM0OyItLT4KKzwhLS1FTlRJVFkgYnNvbGIgIiYj
eDI5QzU7Ii0tPgorPCEtLUVOVElUWSBib3hib3ggIiYjeDI5Qzk7Ii0tPgorPCEtLUVOVElUWSB0
cmlzYiAiJiN4MjlDRDsiLS0+Cis8IS0tRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyItLT4KKzwh
LS1FTlRJVFkgTGVmdFRyaWFuZ2xlQmFyICImI3gyOUNGOyItLT4KKzwhLS1FTlRJVFkgTm90TGVm
dFRyaWFuZ2xlQmFyICImI3gyOUNGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VHJpYW5n
bGVCYXIgIiYjeDI5RDA7Ii0tPgorPCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlQmFyICImI3gy
OUQwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGlpbmZpbiAiJiN4MjlEQzsiLS0+Cis8IS0tRU5U
SVRZIGluZmludGllICImI3gyOUREOyItLT4KKzwhLS1FTlRJVFkgbnZpbmZpbiAiJiN4MjlERTsi
LS0+Cis8IS0tRU5USVRZIGVwYXJzbCAiJiN4MjlFMzsiLS0+Cis8IS0tRU5USVRZIHNtZXBhcnNs
ICImI3gyOUU0OyItLT4KKzwhLS1FTlRJVFkgZXF2cGFyc2wgIiYjeDI5RTU7Ii0tPgorPCEtLUVO
VElUWSBsb3pmICImI3gyOUVCOyItLT4KKzwhLS1FTlRJVFkgYmxhY2tsb3plbmdlICImI3gyOUVC
OyItLT4KKzwhLS1FTlRJVFkgUnVsZURlbGF5ZWQgIiYjeDI5RjQ7Ii0tPgorPCEtLUVOVElUWSBk
c29sICImI3gyOUY2OyItLT4KKzwhLS1FTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVO
VElUWSBiaWdvZG90ICImI3gyQTAwOyItLT4KKzwhLS1FTlRJVFkgeG9wbHVzICImI3gyQTAxOyIt
LT4KKzwhLS1FTlRJVFkgYmlnb3BsdXMgIiYjeDJBMDE7Ii0tPgorPCEtLUVOVElUWSB4b3RpbWUg
IiYjeDJBMDI7Ii0tPgorPCEtLUVOVElUWSBiaWdvdGltZXMgIiYjeDJBMDI7Ii0tPgorPCEtLUVO
VElUWSB4dXBsdXMgIiYjeDJBMDQ7Ii0tPgorPCEtLUVOVElUWSBiaWd1cGx1cyAiJiN4MkEwNDsi
LS0+Cis8IS0tRU5USVRZIHhzcWN1cCAiJiN4MkEwNjsiLS0+Cis8IS0tRU5USVRZIGJpZ3NxY3Vw
ICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkgcWludCAiJiN4MkEwQzsiLS0+Cis8IS0tRU5USVRZ
IGlpaWludCAiJiN4MkEwQzsiLS0+Cis8IS0tRU5USVRZIGZwYXJ0aW50ICImI3gyQTBEOyItLT4K
KzwhLS1FTlRJVFkgY2lyZm5pbnQgIiYjeDJBMTA7Ii0tPgorPCEtLUVOVElUWSBhd2ludCAiJiN4
MkExMTsiLS0+Cis8IS0tRU5USVRZIHJwcG9saW50ICImI3gyQTEyOyItLT4KKzwhLS1FTlRJVFkg
c2Nwb2xpbnQgIiYjeDJBMTM7Ii0tPgorPCEtLUVOVElUWSBucG9saW50ICImI3gyQTE0OyItLT4K
KzwhLS1FTlRJVFkgcG9pbnRpbnQgIiYjeDJBMTU7Ii0tPgorPCEtLUVOVElUWSBxdWF0aW50ICIm
I3gyQTE2OyItLT4KKzwhLS1FTlRJVFkgaW50bGFyaGsgIiYjeDJBMTc7Ii0tPgorPCEtLUVOVElU
WSBwbHVzY2lyICImI3gyQTIyOyItLT4KKzwhLS1FTlRJVFkgcGx1c2FjaXIgIiYjeDJBMjM7Ii0t
PgorPCEtLUVOVElUWSBzaW1wbHVzICImI3gyQTI0OyItLT4KKzwhLS1FTlRJVFkgcGx1c2R1ICIm
I3gyQTI1OyItLT4KKzwhLS1FTlRJVFkgcGx1c3NpbSAiJiN4MkEyNjsiLS0+Cis8IS0tRU5USVRZ
IHBsdXN0d28gIiYjeDJBMjc7Ii0tPgorPCEtLUVOVElUWSBtY29tbWEgIiYjeDJBMjk7Ii0tPgor
PCEtLUVOVElUWSBtaW51c2R1ICImI3gyQTJBOyItLT4KKzwhLS1FTlRJVFkgbG9wbHVzICImI3gy
QTJEOyItLT4KKzwhLS1FTlRJVFkgcm9wbHVzICImI3gyQTJFOyItLT4KKzwhLS1FTlRJVFkgQ3Jv
c3MgIiYjeDJBMkY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2QgIiYjeDJBMzA7Ii0tPgorPCEtLUVO
VElUWSB0aW1lc2JhciAiJiN4MkEzMTsiLS0+Cis8IS0tRU5USVRZIHNtYXNocCAiJiN4MkEzMzsi
LS0+Cis8IS0tRU5USVRZIGxvdGltZXMgIiYjeDJBMzQ7Ii0tPgorPCEtLUVOVElUWSByb3RpbWVz
ICImI3gyQTM1OyItLT4KKzwhLS1FTlRJVFkgb3RpbWVzYXMgIiYjeDJBMzY7Ii0tPgorPCEtLUVO
VElUWSBPdGltZXMgIiYjeDJBMzc7Ii0tPgorPCEtLUVOVElUWSBvZGl2ICImI3gyQTM4OyItLT4K
KzwhLS1FTlRJVFkgdHJpcGx1cyAiJiN4MkEzOTsiLS0+Cis8IS0tRU5USVRZIHRyaW1pbnVzICIm
I3gyQTNBOyItLT4KKzwhLS1FTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiLS0+Cis8IS0tRU5USVRZ
IGlwcm9kICImI3gyQTNDOyItLT4KKzwhLS1FTlRJVFkgaW50cHJvZCAiJiN4MkEzQzsiLS0+Cis8
IS0tRU5USVRZIGFtYWxnICImI3gyQTNGOyItLT4KKzwhLS1FTlRJVFkgY2FwZG90ICImI3gyQTQw
OyItLT4KKzwhLS1FTlRJVFkgbmN1cCAiJiN4MkE0MjsiLS0+Cis8IS0tRU5USVRZIG5jYXAgIiYj
eDJBNDM7Ii0tPgorPCEtLUVOVElUWSBjYXBhbmQgIiYjeDJBNDQ7Ii0tPgorPCEtLUVOVElUWSBj
dXBvciAiJiN4MkE0NTsiLS0+Cis8IS0tRU5USVRZIGN1cGNhcCAiJiN4MkE0NjsiLS0+Cis8IS0t
RU5USVRZIGNhcGN1cCAiJiN4MkE0NzsiLS0+Cis8IS0tRU5USVRZIGN1cGJyY2FwICImI3gyQTQ4
OyItLT4KKzwhLS1FTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ii0tPgorPCEtLUVOVElUWSBjdXBj
dXAgIiYjeDJBNEE7Ii0tPgorPCEtLUVOVElUWSBjYXBjYXAgIiYjeDJBNEI7Ii0tPgorPCEtLUVO
VElUWSBjY3VwcyAiJiN4MkE0QzsiLS0+Cis8IS0tRU5USVRZIGNjYXBzICImI3gyQTREOyItLT4K
KzwhLS1FTlRJVFkgY2N1cHNzbSAiJiN4MkE1MDsiLS0+Cis8IS0tRU5USVRZIEFuZCAiJiN4MkE1
MzsiLS0+Cis8IS0tRU5USVRZIE9yICImI3gyQTU0OyItLT4KKzwhLS1FTlRJVFkgYW5kYW5kICIm
I3gyQTU1OyItLT4KKzwhLS1FTlRJVFkgb3JvciAiJiN4MkE1NjsiLS0+Cis8IS0tRU5USVRZIG9y
c2xvcGUgIiYjeDJBNTc7Ii0tPgorPCEtLUVOVElUWSBhbmRzbG9wZSAiJiN4MkE1ODsiLS0+Cis8
IS0tRU5USVRZIGFuZHYgIiYjeDJBNUE7Ii0tPgorPCEtLUVOVElUWSBvcnYgIiYjeDJBNUI7Ii0t
PgorPCEtLUVOVElUWSBhbmRkICImI3gyQTVDOyItLT4KKzwhLS1FTlRJVFkgb3JkICImI3gyQTVE
OyItLT4KKzwhLS1FTlRJVFkgd2VkYmFyICImI3gyQTVGOyItLT4KKzwhLS1FTlRJVFkgc2RvdGUg
IiYjeDJBNjY7Ii0tPgorPCEtLUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ii0tPgorPCEtLUVOVElU
WSBjb25nZG90ICImI3gyQTZEOyItLT4KKzwhLS1FTlRJVFkgbmNvbmdkb3QgIiYjeDJBNkQ7JiN4
MzM4OyItLT4KKzwhLS1FTlRJVFkgZWFzdGVyICImI3gyQTZFOyItLT4KKzwhLS1FTlRJVFkgYXBh
Y2lyICImI3gyQTZGOyItLT4KKzwhLS1FTlRJVFkgYXBFICImI3gyQTcwOyItLT4KKzwhLS1FTlRJ
VFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBlcGx1cyAiJiN4MkE3MTsi
LS0+Cis8IS0tRU5USVRZIHBsdXNlICImI3gyQTcyOyItLT4KKzwhLS1FTlRJVFkgRXNpbSAiJiN4
MkE3MzsiLS0+Cis8IS0tRU5USVRZIENvbG9uZSAiJiN4MkE3NDsiLS0+Cis8IS0tRU5USVRZIEVx
dWFsICImI3gyQTc1OyItLT4KKzwhLS1FTlRJVFkgZUREb3QgIiYjeDJBNzc7Ii0tPgorPCEtLUVO
VElUWSBkZG90c2VxICImI3gyQTc3OyItLT4KKzwhLS1FTlRJVFkgZXF1aXZERCAiJiN4MkE3ODsi
LS0+Cis8IS0tRU5USVRZIGx0Y2lyICImI3gyQTc5OyItLT4KKzwhLS1FTlRJVFkgZ3RjaXIgIiYj
eDJBN0E7Ii0tPgorPCEtLUVOVElUWSBsdHF1ZXN0ICImI3gyQTdCOyItLT4KKzwhLS1FTlRJVFkg
Z3RxdWVzdCAiJiN4MkE3QzsiLS0+Cis8IS0tRU5USVRZIGxlcyAiJiN4MkE3RDsiLS0+Cis8IS0t
RU5USVRZIExlc3NTbGFudEVxdWFsICImI3gyQTdEOyItLT4KKzwhLS1FTlRJVFkgbGVxc2xhbnQg
IiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBubGVzICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIE5vdExlc3NTbGFudEVxdWFsICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZ
IG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBnZXMgIiYjeDJBN0U7
Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsiLS0+Cis8IS0tRU5U
SVRZIGdlcXNsYW50ICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkgbmdlcyAiJiN4MkE3RTsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBuZ2Vxc2xhbnQgIiYjeDJBN0U7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbGVzZG90ICImI3gyQTdGOyItLT4KKzwhLS1FTlRJVFkgZ2VzZG90ICImI3gyQTgwOyItLT4K
KzwhLS1FTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiLS0+Cis8IS0tRU5USVRZIGdlc2RvdG8gIiYj
eDJBODI7Ii0tPgorPCEtLUVOVElUWSBsZXNkb3RvciAiJiN4MkE4MzsiLS0+Cis8IS0tRU5USVRZ
IGdlc2RvdG9sICImI3gyQTg0OyItLT4KKzwhLS1FTlRJVFkgbGFwICImI3gyQTg1OyItLT4KKzwh
LS1FTlRJVFkgbGVzc2FwcHJveCAiJiN4MkE4NTsiLS0+Cis8IS0tRU5USVRZIGdhcCAiJiN4MkE4
NjsiLS0+Cis8IS0tRU5USVRZIGd0cmFwcHJveCAiJiN4MkE4NjsiLS0+Cis8IS0tRU5USVRZIGxu
ZSAiJiN4MkE4NzsiLS0+Cis8IS0tRU5USVRZIGxuZXEgIiYjeDJBODc7Ii0tPgorPCEtLUVOVElU
WSBnbmUgIiYjeDJBODg7Ii0tPgorPCEtLUVOVElUWSBnbmVxICImI3gyQTg4OyItLT4KKzwhLS1F
TlRJVFkgbG5hcCAiJiN4MkE4OTsiLS0+Cis8IS0tRU5USVRZIGxuYXBwcm94ICImI3gyQTg5OyIt
LT4KKzwhLS1FTlRJVFkgZ25hcCAiJiN4MkE4QTsiLS0+Cis8IS0tRU5USVRZIGduYXBwcm94ICIm
I3gyQThBOyItLT4KKzwhLS1FTlRJVFkgbEVnICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgbGVz
c2VxcWd0ciAiJiN4MkE4QjsiLS0+Cis8IS0tRU5USVRZIGdFbCAiJiN4MkE4QzsiLS0+Cis8IS0t
RU5USVRZIGd0cmVxcWxlc3MgIiYjeDJBOEM7Ii0tPgorPCEtLUVOVElUWSBsc2ltZSAiJiN4MkE4
RDsiLS0+Cis8IS0tRU5USVRZIGdzaW1lICImI3gyQThFOyItLT4KKzwhLS1FTlRJVFkgbHNpbWcg
IiYjeDJBOEY7Ii0tPgorPCEtLUVOVElUWSBnc2ltbCAiJiN4MkE5MDsiLS0+Cis8IS0tRU5USVRZ
IGxnRSAiJiN4MkE5MTsiLS0+Cis8IS0tRU5USVRZIGdsRSAiJiN4MkE5MjsiLS0+Cis8IS0tRU5U
SVRZIGxlc2dlcyAiJiN4MkE5MzsiLS0+Cis8IS0tRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiLS0+
Cis8IS0tRU5USVRZIGVscyAiJiN4MkE5NTsiLS0+Cis8IS0tRU5USVRZIGVxc2xhbnRsZXNzICIm
I3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZWdzICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZXFz
bGFudGd0ciAiJiN4MkE5NjsiLS0+Cis8IS0tRU5USVRZIGVsc2RvdCAiJiN4MkE5NzsiLS0+Cis8
IS0tRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiLS0+Cis8IS0tRU5USVRZIGVsICImI3gyQTk5OyIt
LT4KKzwhLS1FTlRJVFkgZWcgIiYjeDJBOUE7Ii0tPgorPCEtLUVOVElUWSBzaW1sICImI3gyQTlE
OyItLT4KKzwhLS1FTlRJVFkgc2ltZyAiJiN4MkE5RTsiLS0+Cis8IS0tRU5USVRZIHNpbWxFICIm
I3gyQTlGOyItLT4KKzwhLS1FTlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ii0tPgorPCEtLUVOVElUWSBM
ZXNzTGVzcyAiJiN4MkFBMTsiLS0+Cis8IS0tRU5USVRZIE5vdE5lc3RlZExlc3NMZXNzICImI3gy
QUExOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJHcmVhdGVyICImI3gyQUEyOyItLT4K
KzwhLS1FTlRJVFkgTm90TmVzdGVkR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgZ2xqICImI3gyQUE0OyItLT4KKzwhLS1FTlRJVFkgZ2xhICImI3gyQUE1OyIt
LT4KKzwhLS1FTlRJVFkgbHRjYyAiJiN4MkFBNjsiLS0+Cis8IS0tRU5USVRZIGd0Y2MgIiYjeDJB
QTc7Ii0tPgorPCEtLUVOVElUWSBsZXNjYyAiJiN4MkFBODsiLS0+Cis8IS0tRU5USVRZIGdlc2Nj
ICImI3gyQUE5OyItLT4KKzwhLS1FTlRJVFkgc210ICImI3gyQUFBOyItLT4KKzwhLS1FTlRJVFkg
bGF0ICImI3gyQUFCOyItLT4KKzwhLS1FTlRJVFkgc210ZSAiJiN4MkFBQzsiLS0+Cis8IS0tRU5U
SVRZIHNtdGVzICImI3gyQUFDOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBsYXRlICImI3gyQUFE
OyItLT4KKzwhLS1FTlRJVFkgbGF0ZXMgIiYjeDJBQUQ7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZ
IGJ1bXBFICImI3gyQUFFOyItLT4KKzwhLS1FTlRJVFkgcHJlICImI3gyQUFGOyItLT4KKzwhLS1F
TlRJVFkgcHJlY2VxICImI3gyQUFGOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXNFcXVhbCAiJiN4
MkFBRjsiLS0+Cis8IS0tRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbnByZWNlcSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RQcmVjZWRlc0Vx
dWFsICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHNjZSAiJiN4MkFCMDsiLS0+Cis8
IS0tRU5USVRZIHN1Y2NlcSAiJiN4MkFCMDsiLS0+Cis8IS0tRU5USVRZIFN1Y2NlZWRzRXF1YWwg
IiYjeDJBQjA7Ii0tPgorPCEtLUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIG5zdWNjZXEgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90U3VjY2Vl
ZHNFcXVhbCAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBwckUgIiYjeDJBQjM7Ii0t
PgorPCEtLUVOVElUWSBzY0UgIiYjeDJBQjQ7Ii0tPgorPCEtLUVOVElUWSBwcm5FICImI3gyQUI1
OyItLT4KKzwhLS1FTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7Ii0tPgorPCEtLUVOVElUWSBzY25F
ICImI3gyQUI2OyItLT4KKzwhLS1FTlRJVFkgc3VjY25lcXEgIiYjeDJBQjY7Ii0tPgorPCEtLUVO
VElUWSBwcmFwICImI3gyQUI3OyItLT4KKzwhLS1FTlRJVFkgcHJlY2FwcHJveCAiJiN4MkFCNzsi
LS0+Cis8IS0tRU5USVRZIHNjYXAgIiYjeDJBQjg7Ii0tPgorPCEtLUVOVElUWSBzdWNjYXBwcm94
ICImI3gyQUI4OyItLT4KKzwhLS1FTlRJVFkgcHJuYXAgIiYjeDJBQjk7Ii0tPgorPCEtLUVOVElU
WSBwcmVjbmFwcHJveCAiJiN4MkFCOTsiLS0+Cis8IS0tRU5USVRZIHNjbmFwICImI3gyQUJBOyIt
LT4KKzwhLS1FTlRJVFkgc3VjY25hcHByb3ggIiYjeDJBQkE7Ii0tPgorPCEtLUVOVElUWSBQciAi
JiN4MkFCQjsiLS0+Cis8IS0tRU5USVRZIFNjICImI3gyQUJDOyItLT4KKzwhLS1FTlRJVFkgc3Vi
ZG90ICImI3gyQUJEOyItLT4KKzwhLS1FTlRJVFkgc3VwZG90ICImI3gyQUJFOyItLT4KKzwhLS1F
TlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiLS0+Cis8IS0tRU5USVRZIHN1cHBsdXMgIiYjeDJBQzA7
Ii0tPgorPCEtLUVOVElUWSBzdWJtdWx0ICImI3gyQUMxOyItLT4KKzwhLS1FTlRJVFkgc3VwbXVs
dCAiJiN4MkFDMjsiLS0+Cis8IS0tRU5USVRZIHN1YmVkb3QgIiYjeDJBQzM7Ii0tPgorPCEtLUVO
VElUWSBzdXBlZG90ICImI3gyQUM0OyItLT4KKzwhLS1FTlRJVFkgc3ViRSAiJiN4MkFDNTsiLS0+
Cis8IS0tRU5USVRZIHN1YnNldGVxcSAiJiN4MkFDNTsiLS0+Cis8IS0tRU5USVRZIG5zdWJFICIm
I3gyQUM1OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4
OyItLT4KKzwhLS1FTlRJVFkgc3VwRSAiJiN4MkFDNjsiLS0+Cis8IS0tRU5USVRZIHN1cHNldGVx
cSAiJiN4MkFDNjsiLS0+Cis8IS0tRU5USVRZIG5zdXBFICImI3gyQUM2OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIG5zdXBzZXRlcXEgIiYjeDJBQzY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3Vi
c2ltICImI3gyQUM3OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2ltICImI3gyQUM4OyItLT4KKzwhLS1F
TlRJVFkgc3VibkUgIiYjeDJBQ0I7Ii0tPgorPCEtLUVOVElUWSBzdWJzZXRuZXFxICImI3gyQUNC
OyItLT4KKzwhLS1FTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElU
WSB2YXJzdWJzZXRuZXFxICImI3gyQUNCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBzdXBuRSAi
JiN4MkFDQzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ii0tPgorPCEtLUVO
VElUWSB2c3VwbkUgIiYjeDJBQ0M7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZhcnN1cHNldG5l
cXEgIiYjeDJBQ0M7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ii0tPgor
PCEtLUVOVElUWSBjc3VwICImI3gyQUQwOyItLT4KKzwhLS1FTlRJVFkgY3N1YmUgIiYjeDJBRDE7
Ii0tPgorPCEtLUVOVElUWSBjc3VwZSAiJiN4MkFEMjsiLS0+Cis8IS0tRU5USVRZIHN1YnN1cCAi
JiN4MkFEMzsiLS0+Cis8IS0tRU5USVRZIHN1cHN1YiAiJiN4MkFENDsiLS0+Cis8IS0tRU5USVRZ
IHN1YnN1YiAiJiN4MkFENTsiLS0+Cis8IS0tRU5USVRZIHN1cHN1cCAiJiN4MkFENjsiLS0+Cis8
IS0tRU5USVRZIHN1cGhzdWIgIiYjeDJBRDc7Ii0tPgorPCEtLUVOVElUWSBzdXBkc3ViICImI3gy
QUQ4OyItLT4KKzwhLS1FTlRJVFkgZm9ya3YgIiYjeDJBRDk7Ii0tPgorPCEtLUVOVElUWSB0b3Bm
b3JrICImI3gyQURBOyItLT4KKzwhLS1FTlRJVFkgbWxjcCAiJiN4MkFEQjsiLS0+Cis8IS0tRU5U
SVRZIERhc2h2ICImI3gyQUU0OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTGVmdFRlZSAiJiN4MkFF
NDsiLS0+Cis8IS0tRU5USVRZIFZkYXNobCAiJiN4MkFFNjsiLS0+Cis8IS0tRU5USVRZIEJhcnYg
IiYjeDJBRTc7Ii0tPgorPCEtLUVOVElUWSB2QmFyICImI3gyQUU4OyItLT4KKzwhLS1FTlRJVFkg
dkJhcnYgIiYjeDJBRTk7Ii0tPgorPCEtLUVOVElUWSBWYmFyICImI3gyQUVCOyItLT4KKzwhLS1F
TlRJVFkgTm90ICImI3gyQUVDOyItLT4KKzwhLS1FTlRJVFkgYk5vdCAiJiN4MkFFRDsiLS0+Cis8
IS0tRU5USVRZIHJubWlkICImI3gyQUVFOyItLT4KKzwhLS1FTlRJVFkgY2lybWlkICImI3gyQUVG
OyItLT4KKzwhLS1FTlRJVFkgbWlkY2lyICImI3gyQUYwOyItLT4KKzwhLS1FTlRJVFkgdG9wY2ly
ICImI3gyQUYxOyItLT4KKzwhLS1FTlRJVFkgbmhwYXIgIiYjeDJBRjI7Ii0tPgorPCEtLUVOVElU
WSBwYXJzaW0gIiYjeDJBRjM7Ii0tPgorPCEtLUVOVElUWSBwYXJzbCAiJiN4MkFGRDsiLS0+Cis8
IS0tRU5USVRZIG5wYXJzbCAiJiN4MkFGRDsmI3gyMEU1OyItLT4KKzwhLS1FTlRJVFkgZmZsaWcg
IiYjeEZCMDA7Ii0tPgorPCEtLUVOVElUWSBmaWxpZyAiJiN4RkIwMTsiLS0+Cis8IS0tRU5USVRZ
IGZsbGlnICImI3hGQjAyOyItLT4KKzwhLS1FTlRJVFkgZmZpbGlnICImI3hGQjAzOyItLT4KKzwh
LS1FTlRJVFkgZmZsbGlnICImI3hGQjA0OyItLT4KKzwhLS1FTlRJVFkgQXNjciAiJiN4MUQ0OUM7
Ii0tPgorPCEtLUVOVElUWSBDc2NyICImI3gxRDQ5RTsiLS0+Cis8IS0tRU5USVRZIERzY3IgIiYj
eDFENDlGOyItLT4KKzwhLS1FTlRJVFkgR3NjciAiJiN4MUQ0QTI7Ii0tPgorPCEtLUVOVElUWSBK
c2NyICImI3gxRDRBNTsiLS0+Cis8IS0tRU5USVRZIEtzY3IgIiYjeDFENEE2OyItLT4KKzwhLS1F
TlRJVFkgTnNjciAiJiN4MUQ0QTk7Ii0tPgorPCEtLUVOVElUWSBPc2NyICImI3gxRDRBQTsiLS0+
Cis8IS0tRU5USVRZIFBzY3IgIiYjeDFENEFCOyItLT4KKzwhLS1FTlRJVFkgUXNjciAiJiN4MUQ0
QUM7Ii0tPgorPCEtLUVOVElUWSBTc2NyICImI3gxRDRBRTsiLS0+Cis8IS0tRU5USVRZIFRzY3Ig
IiYjeDFENEFGOyItLT4KKzwhLS1FTlRJVFkgVXNjciAiJiN4MUQ0QjA7Ii0tPgorPCEtLUVOVElU
WSBWc2NyICImI3gxRDRCMTsiLS0+Cis8IS0tRU5USVRZIFdzY3IgIiYjeDFENEIyOyItLT4KKzwh
LS1FTlRJVFkgWHNjciAiJiN4MUQ0QjM7Ii0tPgorPCEtLUVOVElUWSBZc2NyICImI3gxRDRCNDsi
LS0+Cis8IS0tRU5USVRZIFpzY3IgIiYjeDFENEI1OyItLT4KKzwhLS1FTlRJVFkgYXNjciAiJiN4
MUQ0QjY7Ii0tPgorPCEtLUVOVElUWSBic2NyICImI3gxRDRCNzsiLS0+Cis8IS0tRU5USVRZIGNz
Y3IgIiYjeDFENEI4OyItLT4KKzwhLS1FTlRJVFkgZHNjciAiJiN4MUQ0Qjk7Ii0tPgorPCEtLUVO
VElUWSBmc2NyICImI3gxRDRCQjsiLS0+Cis8IS0tRU5USVRZIGhzY3IgIiYjeDFENEJEOyItLT4K
KzwhLS1FTlRJVFkgaXNjciAiJiN4MUQ0QkU7Ii0tPgorPCEtLUVOVElUWSBqc2NyICImI3gxRDRC
RjsiLS0+Cis8IS0tRU5USVRZIGtzY3IgIiYjeDFENEMwOyItLT4KKzwhLS1FTlRJVFkgbHNjciAi
JiN4MUQ0QzE7Ii0tPgorPCEtLUVOVElUWSBtc2NyICImI3gxRDRDMjsiLS0+Cis8IS0tRU5USVRZ
IG5zY3IgIiYjeDFENEMzOyItLT4KKzwhLS1FTlRJVFkgcHNjciAiJiN4MUQ0QzU7Ii0tPgorPCEt
LUVOVElUWSBxc2NyICImI3gxRDRDNjsiLS0+Cis8IS0tRU5USVRZIHJzY3IgIiYjeDFENEM3OyIt
LT4KKzwhLS1FTlRJVFkgc3NjciAiJiN4MUQ0Qzg7Ii0tPgorPCEtLUVOVElUWSB0c2NyICImI3gx
RDRDOTsiLS0+Cis8IS0tRU5USVRZIHVzY3IgIiYjeDFENENBOyItLT4KKzwhLS1FTlRJVFkgdnNj
ciAiJiN4MUQ0Q0I7Ii0tPgorPCEtLUVOVElUWSB3c2NyICImI3gxRDRDQzsiLS0+Cis8IS0tRU5U
SVRZIHhzY3IgIiYjeDFENENEOyItLT4KKzwhLS1FTlRJVFkgeXNjciAiJiN4MUQ0Q0U7Ii0tPgor
PCEtLUVOVElUWSB6c2NyICImI3gxRDRDRjsiLS0+Cis8IS0tRU5USVRZIEFmciAiJiN4MUQ1MDQ7
Ii0tPgorPCEtLUVOVElUWSBCZnIgIiYjeDFENTA1OyItLT4KKzwhLS1FTlRJVFkgRGZyICImI3gx
RDUwNzsiLS0+Cis8IS0tRU5USVRZIEVmciAiJiN4MUQ1MDg7Ii0tPgorPCEtLUVOVElUWSBGZnIg
IiYjeDFENTA5OyItLT4KKzwhLS1FTlRJVFkgR2ZyICImI3gxRDUwQTsiLS0+Cis8IS0tRU5USVRZ
IEpmciAiJiN4MUQ1MEQ7Ii0tPgorPCEtLUVOVElUWSBLZnIgIiYjeDFENTBFOyItLT4KKzwhLS1F
TlRJVFkgTGZyICImI3gxRDUwRjsiLS0+Cis8IS0tRU5USVRZIE1mciAiJiN4MUQ1MTA7Ii0tPgor
PCEtLUVOVElUWSBOZnIgIiYjeDFENTExOyItLT4KKzwhLS1FTlRJVFkgT2ZyICImI3gxRDUxMjsi
LS0+Cis8IS0tRU5USVRZIFBmciAiJiN4MUQ1MTM7Ii0tPgorPCEtLUVOVElUWSBRZnIgIiYjeDFE
NTE0OyItLT4KKzwhLS1FTlRJVFkgU2ZyICImI3gxRDUxNjsiLS0+Cis8IS0tRU5USVRZIFRmciAi
JiN4MUQ1MTc7Ii0tPgorPCEtLUVOVElUWSBVZnIgIiYjeDFENTE4OyItLT4KKzwhLS1FTlRJVFkg
VmZyICImI3gxRDUxOTsiLS0+Cis8IS0tRU5USVRZIFdmciAiJiN4MUQ1MUE7Ii0tPgorPCEtLUVO
VElUWSBYZnIgIiYjeDFENTFCOyItLT4KKzwhLS1FTlRJVFkgWWZyICImI3gxRDUxQzsiLS0+Cis8
IS0tRU5USVRZIGFmciAiJiN4MUQ1MUU7Ii0tPgorPCEtLUVOVElUWSBiZnIgIiYjeDFENTFGOyIt
LT4KKzwhLS1FTlRJVFkgY2ZyICImI3gxRDUyMDsiLS0+Cis8IS0tRU5USVRZIGRmciAiJiN4MUQ1
MjE7Ii0tPgorPCEtLUVOVElUWSBlZnIgIiYjeDFENTIyOyItLT4KKzwhLS1FTlRJVFkgZmZyICIm
I3gxRDUyMzsiLS0+Cis8IS0tRU5USVRZIGdmciAiJiN4MUQ1MjQ7Ii0tPgorPCEtLUVOVElUWSBo
ZnIgIiYjeDFENTI1OyItLT4KKzwhLS1FTlRJVFkgaWZyICImI3gxRDUyNjsiLS0+Cis8IS0tRU5U
SVRZIGpmciAiJiN4MUQ1Mjc7Ii0tPgorPCEtLUVOVElUWSBrZnIgIiYjeDFENTI4OyItLT4KKzwh
LS1FTlRJVFkgbGZyICImI3gxRDUyOTsiLS0+Cis8IS0tRU5USVRZIG1mciAiJiN4MUQ1MkE7Ii0t
PgorPCEtLUVOVElUWSBuZnIgIiYjeDFENTJCOyItLT4KKzwhLS1FTlRJVFkgb2ZyICImI3gxRDUy
QzsiLS0+Cis8IS0tRU5USVRZIHBmciAiJiN4MUQ1MkQ7Ii0tPgorPCEtLUVOVElUWSBxZnIgIiYj
eDFENTJFOyItLT4KKzwhLS1FTlRJVFkgcmZyICImI3gxRDUyRjsiLS0+Cis8IS0tRU5USVRZIHNm
ciAiJiN4MUQ1MzA7Ii0tPgorPCEtLUVOVElUWSB0ZnIgIiYjeDFENTMxOyItLT4KKzwhLS1FTlRJ
VFkgdWZyICImI3gxRDUzMjsiLS0+Cis8IS0tRU5USVRZIHZmciAiJiN4MUQ1MzM7Ii0tPgorPCEt
LUVOVElUWSB3ZnIgIiYjeDFENTM0OyItLT4KKzwhLS1FTlRJVFkgeGZyICImI3gxRDUzNTsiLS0+
Cis8IS0tRU5USVRZIHlmciAiJiN4MUQ1MzY7Ii0tPgorPCEtLUVOVElUWSB6ZnIgIiYjeDFENTM3
OyItLT4KKzwhLS1FTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ii0tPgorPCEtLUVOVElUWSBCb3BmICIm
I3gxRDUzOTsiLS0+Cis8IS0tRU5USVRZIERvcGYgIiYjeDFENTNCOyItLT4KKzwhLS1FTlRJVFkg
RW9wZiAiJiN4MUQ1M0M7Ii0tPgorPCEtLUVOVElUWSBGb3BmICImI3gxRDUzRDsiLS0+Cis8IS0t
RU5USVRZIEdvcGYgIiYjeDFENTNFOyItLT4KKzwhLS1FTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ii0t
PgorPCEtLUVOVElUWSBKb3BmICImI3gxRDU0MTsiLS0+Cis8IS0tRU5USVRZIEtvcGYgIiYjeDFE
NTQyOyItLT4KKzwhLS1FTlRJVFkgTG9wZiAiJiN4MUQ1NDM7Ii0tPgorPCEtLUVOVElUWSBNb3Bm
ICImI3gxRDU0NDsiLS0+Cis8IS0tRU5USVRZIE9vcGYgIiYjeDFENTQ2OyItLT4KKzwhLS1FTlRJ
VFkgU29wZiAiJiN4MUQ1NEE7Ii0tPgorPCEtLUVOVElUWSBUb3BmICImI3gxRDU0QjsiLS0+Cis8
IS0tRU5USVRZIFVvcGYgIiYjeDFENTRDOyItLT4KKzwhLS1FTlRJVFkgVm9wZiAiJiN4MUQ1NEQ7
Ii0tPgorPCEtLUVOVElUWSBXb3BmICImI3gxRDU0RTsiLS0+Cis8IS0tRU5USVRZIFhvcGYgIiYj
eDFENTRGOyItLT4KKzwhLS1FTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ii0tPgorPCEtLUVOVElUWSBh
b3BmICImI3gxRDU1MjsiLS0+Cis8IS0tRU5USVRZIGJvcGYgIiYjeDFENTUzOyItLT4KKzwhLS1F
TlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ii0tPgorPCEtLUVOVElUWSBkb3BmICImI3gxRDU1NTsiLS0+
Cis8IS0tRU5USVRZIGVvcGYgIiYjeDFENTU2OyItLT4KKzwhLS1FTlRJVFkgZm9wZiAiJiN4MUQ1
NTc7Ii0tPgorPCEtLUVOVElUWSBnb3BmICImI3gxRDU1ODsiLS0+Cis8IS0tRU5USVRZIGhvcGYg
IiYjeDFENTU5OyItLT4KKzwhLS1FTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ii0tPgorPCEtLUVOVElU
WSBqb3BmICImI3gxRDU1QjsiLS0+Cis8IS0tRU5USVRZIGtvcGYgIiYjeDFENTVDOyItLT4KKzwh
LS1FTlRJVFkgbG9wZiAiJiN4MUQ1NUQ7Ii0tPgorPCEtLUVOVElUWSBtb3BmICImI3gxRDU1RTsi
LS0+Cis8IS0tRU5USVRZIG5vcGYgIiYjeDFENTVGOyItLT4KKzwhLS1FTlRJVFkgb29wZiAiJiN4
MUQ1NjA7Ii0tPgorPCEtLUVOVElUWSBwb3BmICImI3gxRDU2MTsiLS0+Cis8IS0tRU5USVRZIHFv
cGYgIiYjeDFENTYyOyItLT4KKzwhLS1FTlRJVFkgcm9wZiAiJiN4MUQ1NjM7Ii0tPgorPCEtLUVO
VElUWSBzb3BmICImI3gxRDU2NDsiLS0+Cis8IS0tRU5USVRZIHRvcGYgIiYjeDFENTY1OyItLT4K
KzwhLS1FTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ii0tPgorPCEtLUVOVElUWSB2b3BmICImI3gxRDU2
NzsiLS0+Cis8IS0tRU5USVRZIHdvcGYgIiYjeDFENTY4OyItLT4KKzwhLS1FTlRJVFkgeG9wZiAi
JiN4MUQ1Njk7Ii0tPgorPCEtLUVOVElUWSB5b3BmICImI3gxRDU2QTsiLS0+Cis8IS0tRU5USVRZ
IHpvcGYgIiYjeDFENTZCOyItLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25s
b2FkLnB5CmluZGV4IDM3MzZkNTRmMTVkYzVlOWM2NmM1NjA3MzBhY2QwOGY0M2U1M2RiMzAuLmY4
YmUwM2VmYjI3NTBhZDc1NGM2MDM4ZjczNDFhOTc2MTI5MWRmMjIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93
bmxvYWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weQpAQCAtMjYsNiArMjYsNyBAQCBpZiBNWVBZOgog
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBM
aXN0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IFRleHQKIAogaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIApAQCAtNTAsOSAr
NTEsOSBAQCBkZWYgc2hvdWxkX2Rvd25sb2FkKG1hbmlmZXN0X3BhdGgsIHJlYnVpbGRfdGltZT10
aW1lZGVsdGEoZGF5cz01KSk6CiAKIAogZGVmIG1lcmdlX3ByX3RhZ3MocmVwb19yb290LCBtYXhf
Y291bnQ9NTApOgotICAgICMgdHlwZTogKHN0ciwgaW50KSAtPiBMaXN0W3N0cl0KKyAgICAjIHR5
cGU6IChzdHIsIGludCkgLT4gTGlzdFtUZXh0XQogICAgIGdpdGZ1bmMgPSBnaXQocmVwb19yb290
KQotICAgIHRhZ3MgPSBbXSAgIyB0eXBlOiBMaXN0W3N0cl0KKyAgICB0YWdzID0gW10gICMgdHlw
ZTogTGlzdFtUZXh0XQogICAgIGlmIGdpdGZ1bmMgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIHRh
Z3MKICAgICBmb3IgbGluZSBpbiBnaXRmdW5jKCJsb2ciLCAiLS1mb3JtYXQ9JUQiLCAiLS1tYXgt
Y291bnQ9JXMiICUgbWF4X2NvdW50KS5zcGxpdCgiXG4iKToKQEAgLTc5LDcgKzgwLDcgQEAgZGVm
IHNjb3JlX25hbWUobmFtZSk6CiAKIAogZGVmIGdpdGh1Yl91cmwodGFncyk6Ci0gICAgIyB0eXBl
OiAoTGlzdFtzdHJdKSAtPiBPcHRpb25hbFtMaXN0W3N0cl1dCisgICAgIyB0eXBlOiAoTGlzdFtU
ZXh0XSkgLT4gT3B0aW9uYWxbTGlzdFtUZXh0XV0KICAgICBmb3IgdGFnIGluIHRhZ3M6CiAgICAg
ICAgIHVybCA9ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvcmVsZWFzZXMvdGFncy8lcyIgJSB0YWcKICAgICAgICAgdHJ5OgpAQCAtMTExLDggKzEx
Miw4IEBAIGRlZiBnaXRodWJfdXJsKHRhZ3MpOgogCiBkZWYgZG93bmxvYWRfbWFuaWZlc3QoCiAg
ICAgICAgIG1hbmlmZXN0X3BhdGgsICAjIHR5cGU6IHN0cgotICAgICAgICB0YWdzX2Z1bmMsICAj
IHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W3N0cl1dCi0gICAgICAgIHVybF9mdW5jLCAgIyB0eXBl
OiBDYWxsYWJsZVtbTGlzdFtzdHJdXSwgT3B0aW9uYWxbTGlzdFtzdHJdXV0KKyAgICAgICAgdGFn
c19mdW5jLCAgIyB0eXBlOiBDYWxsYWJsZVtbXSwgTGlzdFtUZXh0XV0KKyAgICAgICAgdXJsX2Z1
bmMsICAjIHR5cGU6IENhbGxhYmxlW1tMaXN0W1RleHRdXSwgT3B0aW9uYWxbTGlzdFtUZXh0XV1d
CiAgICAgICAgIGZvcmNlPUZhbHNlICAjIHR5cGU6IGJvb2wKICk6CiAgICAgIyB0eXBlOiAoLi4u
KSAtPiBib29sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKaW5kZXggMWM0MDM0
YWQwNWY5OWEyNjMxNTkwMWExOGM4ZjQwMmQ1ZmE2NGMxMC4uZWUwN2YwZDFkNzk3MTc1Mzc0YjE2
OWE0NjhiNGMyYzg1MDU3OTZkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5w
eQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gY29weSBpbXBvcnQgY29weQoraW1wb3J0IG9zLnBhdGgK
IGZyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAogZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVt
cywgd2l0aF9tZXRhY2xhc3MKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbiwgdXJscGFyc2UKQEAgLTYxLDYgKzYxLDExIEBAIGNsYXNzIE1hbmlmZXN0SXRlbSh3aXRo
X21ldGFjbGFzcyhNYW5pZmVzdEl0ZW1NZXRhKSk6CiAgICAgICAgICIiIlRoZSBpdGVtJ3MgdHlw
ZSIiIgogICAgICAgICBwYXNzCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGF0aF9wYXJ0cyhz
ZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJl
dHVybiB0dXBsZShzZWxmLnBhdGguc3BsaXQob3MucGF0aC5zZXApKQorCiAgICAgZGVmIGtleShz
ZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBIYXNoYWJsZQogICAgICAgICAiIiJBIHVuaXF1
ZSBpZGVudGlmaWVyIGZvciB0aGUgdGVzdCIiIgpAQCAtMTA0LDE0ICsxMDksMTQgQEAgY2xhc3Mg
VVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiAgICAgICAgICAgICAgICAgIHRlc3RzX3Jv
b3QsICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgcGF0aCwgICMgdHlwZTogVGV4dAog
ICAgICAgICAgICAgICAgICB1cmxfYmFzZSwgICMgdHlwZTogVGV4dAotICAgICAgICAgICAgICAg
ICB1cmwsICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICAgdXJsLCAgIyB0eXBlOiBPcHRp
b25hbFtUZXh0XQogICAgICAgICAgICAgICAgICAqKmV4dHJhcyAgIyB0eXBlOiBBbnkKICAgICAg
ICAgICAgICAgICAgKToKICAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBOb25lCiAgICAgICAgIHN1
cGVyKFVSTE1hbmlmZXN0SXRlbSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCkKICAg
ICAgICAgYXNzZXJ0IHVybF9iYXNlWzBdID09ICIvIgogICAgICAgICBzZWxmLnVybF9iYXNlID0g
dXJsX2Jhc2UKLSAgICAgICAgYXNzZXJ0IHVybFswXSAhPSAiLyIKKyAgICAgICAgYXNzZXJ0IHVy
bCBpcyBOb25lIG9yIHVybFswXSAhPSAiLyIKICAgICAgICAgc2VsZi5fdXJsID0gdXJsCiAgICAg
ICAgIHNlbGYuX2V4dHJhcyA9IGV4dHJhcwogCkBAIC0xMjMsMjAgKzEyOCwyOCBAQCBjbGFzcyBV
UkxNYW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICBAcHJvcGVydHkKICAgICBkZWYgdXJs
KHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IFRleHQKKyAgICAgICAgcmVsX3VybCA9IHNl
bGYuX3VybCBvciBzZWxmLnBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgdSIvIikKICAgICAgICAg
IyB3ZSBjYW4gb3V0cGVyZm9ybSB1cmxqb2luLCBiZWNhdXNlIHdlIGtub3cgd2UganVzdCBoYXZl
IHBhdGggcmVsYXRpdmUgVVJMcwogICAgICAgICBpZiBzZWxmLnVybF9iYXNlID09ICIvIjoKLSAg
ICAgICAgICAgIHJldHVybiAiLyIgKyBzZWxmLl91cmwKLSAgICAgICAgcmV0dXJuIHVybGpvaW4o
c2VsZi51cmxfYmFzZSwgc2VsZi5fdXJsKQorICAgICAgICAgICAgcmV0dXJuICIvIiArIHJlbF91
cmwKKyAgICAgICAgcmV0dXJuIHVybGpvaW4oc2VsZi51cmxfYmFzZSwgcmVsX3VybCkKIAogICAg
IEBwcm9wZXJ0eQogICAgIGRlZiBodHRwcyhzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBi
b29sCiAgICAgICAgIGZsYWdzID0gc2V0KHVybHBhcnNlKHNlbGYudXJsKS5wYXRoLnJzcGxpdCgi
LyIsIDEpWzFdLnNwbGl0KCIuIilbMTotMV0pCi0gICAgICAgIHJldHVybiAoImh0dHBzIiBpbiBm
bGFncyBvciAic2VydmljZXdvcmtlciIgaW4gZmxhZ3MpCisgICAgICAgIHJldHVybiAiaHR0cHMi
IGluIGZsYWdzIG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncworCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIGgyKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgZmxh
Z3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlbMV0uc3BsaXQo
Ii4iKVsxOi0xXSkKKyAgICAgICAgcmV0dXJuICJoMiIgaW4gZmxhZ3MKIAogICAgIGRlZiB0b19q
c29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERpY3RbQW55LCBB
bnldXQotICAgICAgICBydiA9IChzZWxmLl91cmwsIHt9KSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBE
aWN0W0FueSwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0
XSwgRGljdFtBbnksIEFueV1dCisgICAgICAgIHJlbF91cmwgPSBOb25lIGlmIHNlbGYuX3VybCA9
PSBzZWxmLnBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgdSIvIikgZWxzZSBzZWxmLl91cmwKKyAg
ICAgICAgcnYgPSAocmVsX3VybCwge30pICAjIHR5cGU6IFR1cGxlW09wdGlvbmFsW1RleHRdLCBE
aWN0W0FueSwgQW55XV0KICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBAY2xhc3NtZXRob2QKQEAg
LTE3NywxMyArMTkwLDE4IEBAIGNsYXNzIFRlc3RoYXJuZXNzVGVzdChVUkxNYW5pZmVzdEl0ZW0p
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW1RleHRdCiAgICAgICAgIHJldHVybiBz
ZWxmLl9leHRyYXMuZ2V0KCJqc3NoZWxsIikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBxdWlj
KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2Jvb2xdCisgICAgICAgIHJl
dHVybiBzZWxmLl9leHRyYXMuZ2V0KCJxdWljIikKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBz
Y3JpcHRfbWV0YWRhdGEoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4
dF0KICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQoInNjcmlwdF9tZXRhZGF0YSIpCiAK
ICAgICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0
LCBEaWN0W1RleHQsIEFueV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxb
VGV4dF0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihUZXN0aGFybmVzc1Rl
c3QsIHNlbGYpLnRvX2pzb24oKQogICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6
CiAgICAgICAgICAgICBydlstMV1bInRpbWVvdXQiXSA9IHNlbGYudGltZW91dApAQCAtMTkxLDIz
ICsyMDksMjcgQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAg
ICAgICAgICBydlstMV1bInRlc3Rkcml2ZXIiXSA9IHNlbGYudGVzdGRyaXZlcgogICAgICAgICBp
ZiBzZWxmLmpzc2hlbGw6CiAgICAgICAgICAgICBydlstMV1bImpzc2hlbGwiXSA9IFRydWUKKyAg
ICAgICAgaWYgc2VsZi5xdWljIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcnZbLTFdWyJxdWlj
Il0gPSBzZWxmLnF1aWMKICAgICAgICAgaWYgc2VsZi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAg
ICAgICBydlstMV1bInNjcmlwdF9tZXRhZGF0YSJdID0gc2VsZi5zY3JpcHRfbWV0YWRhdGEKKyAg
ICAgICAgICAgIHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBbKGssIHYpIGZvciAoayx2KSBp
biBzZWxmLnNjcmlwdF9tZXRhZGF0YV0KICAgICAgICAgcmV0dXJuIHJ2CiAKIAotY2xhc3MgUmVm
VGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKK2NsYXNzIFJlZlRlc3QoVVJMTWFuaWZlc3RJdGVt
KToKICAgICBfX3Nsb3RzX18gPSAoInJlZmVyZW5jZXMiLCkKIAorICAgIGl0ZW1fdHlwZSA9ICJy
ZWZ0ZXN0IgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgIHRlc3Rz
X3Jvb3QsICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgcGF0aCwgICMgdHlwZTogVGV4
dAogICAgICAgICAgICAgICAgICB1cmxfYmFzZSwgICMgdHlwZTogVGV4dAotICAgICAgICAgICAg
ICAgICB1cmwsICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICAgdXJsLCAgIyB0eXBlOiBP
cHRpb25hbFtUZXh0XQogICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPU5vbmUsICAjIHR5cGU6
IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQogICAgICAgICAgICAgICAgICAqKmV4
dHJhcyAgIyB0eXBlOiBBbnkKICAgICAgICAgICAgICAgICAgKToKLSAgICAgICAgc3VwZXIoUmVm
VGVzdEJhc2UsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3QsIHBhdGgsIHVybF9iYXNlLCB1cmws
ICoqZXh0cmFzKQorICAgICAgICBzdXBlcihSZWZUZXN0LCBzZWxmKS5fX2luaXRfXyh0ZXN0c19y
b290LCBwYXRoLCB1cmxfYmFzZSwgdXJsLCAqKmV4dHJhcykKICAgICAgICAgaWYgcmVmZXJlbmNl
cyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5yZWZlcmVuY2VzID0gW10gICMgdHlwZTogTGlz
dFtUdXBsZVtUZXh0LCBUZXh0XV0KICAgICAgICAgZWxzZToKQEAgLTI0Nyw4ICsyNjksOSBAQCBj
bGFzcyBSZWZUZXN0QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICByZXR1cm4gcnYKIAog
ICAgIGRlZiB0b19qc29uKHNlbGYpOiAgIyB0eXBlOiBpZ25vcmUKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBUdXBsZVtUZXh0LCBMaXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtUZXh0LCBBbnld
XQotICAgICAgICBydiA9IChzZWxmLl91cmwsIHNlbGYucmVmZXJlbmNlcywge30pICAjIHR5cGU6
IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCisg
ICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIExpc3RbVHVwbGVbVGV4
dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCisgICAgICAgIHJlbF91cmwgPSBOb25lIGlmIHNl
bGYuX3VybCA9PSBzZWxmLnBhdGggZWxzZSBzZWxmLl91cmwKKyAgICAgICAgcnYgPSAocmVsX3Vy
bCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbVGV4dF0sIExp
c3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCiAgICAgICAgIGV4dHJhcyA9
IHJ2Wy0xXQogICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICBleHRyYXNbInRpbWVvdXQiXSA9IHNlbGYudGltZW91dApAQCAtMjY2LDcgKzI4OSw3IEBAIGNs
YXNzIFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgICAgICAgICAgICBwYXRo
LCAgIyB0eXBlOiBUZXh0CiAgICAgICAgICAgICAgICAgICBvYmogICMgdHlwZTogVHVwbGVbVGV4
dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbQW55LCBBbnldXQogICAgICAgICAgICAg
ICAgICAgKToKLSAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBSZWZUZXN0QmFzZQorICAgICAgICAj
IHR5cGU6ICguLi4pIC0+IFJlZlRlc3QKICAgICAgICAgdGVzdHNfcm9vdCA9IG1hbmlmZXN0LnRl
c3RzX3Jvb3QKICAgICAgICAgYXNzZXJ0IHRlc3RzX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAg
cGF0aCA9IHRvX29zX3BhdGgocGF0aCkKQEAgLTI3OCwzOCArMzAxLDYgQEAgY2xhc3MgUmVmVGVz
dEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzLAog
ICAgICAgICAgICAgICAgICAgICoqZXh0cmFzKQogCi0gICAgZGVmIHRvX1JlZlRlc3Qoc2VsZik6
Ci0gICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdAotICAgICAgICBpZiB0eXBlKHNlbGYpID09
IFJlZlRlc3Q6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLCBSZWZUZXN0KQot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBjb3B5KHNlbGYpCi0gICAgICAg
IHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3QKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocnYsIFJl
ZlRlc3QpCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIHRvX1JlZlRlc3ROb2RlKHNlbGYp
OgotICAgICAgICAjIHR5cGU6ICgpIC0+IFJlZlRlc3ROb2RlCi0gICAgICAgIGlmIHR5cGUoc2Vs
ZikgPT0gUmVmVGVzdE5vZGU6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLCBS
ZWZUZXN0Tm9kZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIHJ2ID0gY29weShz
ZWxmKQotICAgICAgICBydi5fX2NsYXNzX18gPSBSZWZUZXN0Tm9kZQotICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShydiwgUmVmVGVzdE5vZGUpCi0gICAgICAgIHJldHVybiBydgotCi0KLWNsYXNz
IFJlZlRlc3ROb2RlKFJlZlRlc3RCYXNlKToKLSAgICBfX3Nsb3RzX18gPSAoKQotCi0gICAgaXRl
bV90eXBlID0gInJlZnRlc3Rfbm9kZSIKLQotCi1jbGFzcyBSZWZUZXN0KFJlZlRlc3RCYXNlKToK
LSAgICBfX3Nsb3RzX18gPSAoKQotCi0gICAgaXRlbV90eXBlID0gInJlZnRlc3QiCi0KIAogY2xh
c3MgTWFudWFsVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC0z
NTEsNyArMzQyLDcgQEAgY2xhc3MgV2ViRHJpdmVyU3BlY1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQoInRpbWVvdXQiKQogCiAgICAgZGVmIHRv
X2pzb24oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtUZXh0
LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBEaWN0
W1RleHQsIEFueV1dCiAgICAgICAgIHJ2ID0gc3VwZXIoV2ViRHJpdmVyU3BlY1Rlc3QsIHNlbGYp
LnRvX2pzb24oKQogICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAg
ICAgICBydlstMV1bInRpbWVvdXQiXSA9IHNlbGYudGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5p
ZmVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKaW5kZXggMmFkN2ZjY2Y0ODY3NWJkY2M3YjU0NDc0N2Ux
ZDE4MjRhNTk4NTQyZi4uMzQ1ZWViNmQyYjBiZWViM2NlM2MxMzkwOTQ5Y2I5ZTJkMTlhNDM1YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5CkBAIC0xLDE1ICsx
LDI1IEBACitpbXBvcnQgaW8KIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBqc29uCiBpbXBvcnQg
b3MKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nLCBkZWZhdWx0ZGljdAot
ZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIHN0cmluZ190
eXBlcywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZQorZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQor
ZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wsIGNwdV9jb3VudAorZnJvbSBzaXggaW1w
b3J0ICgKKyAgICBQWTMsCisgICAgYmluYXJ5X3R5cGUsCisgICAgZW5zdXJlX3RleHQsCisgICAg
aXRlcml0ZW1zLAorICAgIGl0ZXJ2YWx1ZXMsCisgICAgc3RyaW5nX3R5cGVzLAorICAgIHRleHRf
dHlwZSwKKykKIAogZnJvbSAuIGltcG9ydCB2Y3MKLWZyb20gLml0ZW0gaW1wb3J0IChDb25mb3Jt
YW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJlZlRlc3QsIFJlZlRl
c3ROb2RlLAotICAgICAgICAgICAgICAgICAgIFN1cHBvcnRGaWxlLCBUZXN0aGFybmVzc1Rlc3Qs
IFZpc3VhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBDcmFzaFRlc3QpCitmcm9tIC5pdGVtIGlt
cG9ydCAoQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBS
ZWZUZXN0LCBTdXBwb3J0RmlsZSwKKyAgICAgICAgICAgICAgICAgICBUZXN0aGFybmVzc1Rlc3Qs
IFZpc3VhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBDcmFzaFRlc3QpCiBmcm9tIC5sb2cgaW1w
b3J0IGdldF9sb2dnZXIKIGZyb20gLnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUKLWZyb20g
LnV0aWxzIGltcG9ydCBmcm9tX29zX3BhdGgsIHRvX29zX3BhdGgKK2Zyb20gLnR5cGVkYXRhIGlt
cG9ydCBUeXBlRGF0YQogCiBNWVBZID0gRmFsc2UKIGlmIE1ZUFk6CkBAIC0xOSwxNiArMjksMTQg
QEAgaWYgTVlQWToKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgQ29udGFpbmVyCiAgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IERpY3QKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgSU8KLSAgICBmcm9tIHR5
cGluZyBpbXBvcnQgSXRlcmFibGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmF0b3IKLSAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJs
ZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAogICAgIGZyb20gdHlwaW5nIGltcG9y
dCBTZXQKICAgICBmcm9tIHR5cGluZyBpbXBvcnQgVGV4dAogICAgIGZyb20gdHlwaW5nIGltcG9y
dCBUdXBsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlCiAgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IFVuaW9uCi0gICAgZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKIAogdHJ5OgogICAgIGltcG9y
dCB1anNvbgpAQCAtMzYsNyArNDQsNyBAQCB0cnk6CiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ZmFzdF9qc29uID0ganNvbiAgIyB0eXBlOiBpZ25vcmUKIAotQ1VSUkVOVF9WRVJTSU9OID0gNwor
Q1VSUkVOVF9WRVJTSU9OID0gOCAgIyB0eXBlOiBpbnQKIAogCiBjbGFzcyBNYW5pZmVzdEVycm9y
KEV4Y2VwdGlvbik6CkBAIC00OSw3ICs1Nyw2IEBAIGNsYXNzIE1hbmlmZXN0VmVyc2lvbk1pc21h
dGNoKE1hbmlmZXN0RXJyb3IpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJuZXNzIjogVGVz
dGhhcm5lc3NUZXN0LAogICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogUmVmVGVzdCwKLSAgICAg
ICAgICAgICAgICAicmVmdGVzdF9ub2RlIjogUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAg
ImNyYXNodGVzdCI6IENyYXNoVGVzdCwKICAgICAgICAgICAgICAgICAibWFudWFsIjogTWFudWFs
VGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjogV2ViRHJpdmVyU3BlY1Rlc3QsCkBAIC01
OCwxNTYgKzY1LDEyIEBAIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBUZXN0aGFybmVz
c1Rlc3QsCiAgICAgICAgICAgICAgICAgInN1cHBvcnQiOiBTdXBwb3J0RmlsZX0gICMgdHlwZTog
RGljdFtzdHIsIFR5cGVbTWFuaWZlc3RJdGVtXV0KIAogCi1pZiBNWVBZOgotICAgIFR5cGVEYXRh
VHlwZSA9IE11dGFibGVNYXBwaW5nW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXQotZWxzZToKLSAg
ICBUeXBlRGF0YVR5cGUgPSBNdXRhYmxlTWFwcGluZwotCi1jbGFzcyBUeXBlRGF0YShUeXBlRGF0
YVR5cGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYW5pZmVzdCwgdHlwZV9jbHMpOgotICAg
ICAgICAjIHR5cGU6IChNYW5pZmVzdCwgVHlwZVtNYW5pZmVzdEl0ZW1dKSAtPiBOb25lCi0gICAg
ICAgICIiIkRpY3QtbGlrZSBvYmplY3QgY29udGFpbmluZyB0aGUgVGVzdEl0ZW1zIGZvciBlYWNo
IHRlc3QgdHlwZS4KLQotICAgICAgICBMb2FkaW5nIGFuIGFjdHVhbCBJdGVtIGNsYXNzIGZvciBl
YWNoIHRlc3QgaXMgdW5uZWNlc3NhcmlseQotICAgICAgICBzbG93LCBzbyB0aGlzIGNsYXNzIGFs
bG93cyBsYXp5LWxvYWRpbmcgb2YgdGhlIHRlc3QKLSAgICAgICAgaXRlbXMuIFdoZW4gdGhlIG1h
bmlmZXN0IGlzIGxvYWRlZCB3ZSBzdG9yZSB0aGUgcmF3IGpzb24KLSAgICAgICAgY29ycmVzcG9u
ZGluZyB0byB0aGUgdGVzdCB0eXBlLCBhbmQgb25seSBjcmVhdGUgYW4gSXRlbQotICAgICAgICBz
dWJjbGFzcyB3aGVuIHRoZSB0ZXN0IGlzIGFjY2Vzc2VkLiBJbiBvcmRlciB0byByZW1haW4KLSAg
ICAgICAgQVBJLWNvbXBhdGlibGUgd2l0aCBjb25zdW1lcnMgdGhhdCBkZXBlbmQgb24gZ2V0dGlu
ZyBhbiBJdGVtCi0gICAgICAgIGZyb20gaXRlcmF0aW9uLCB3ZSBkbyBlZ2VybHkgbG9hZCBhbGwg
aXRlbXMgd2hlbiBpdGVyYXRpbmcKLSAgICAgICAgb3ZlciB0aGUgY2xhc3MuIiIiCi0gICAgICAg
IHNlbGYubWFuaWZlc3QgPSBtYW5pZmVzdAotICAgICAgICBzZWxmLnR5cGVfY2xzID0gdHlwZV9j
bHMKLSAgICAgICAgc2VsZi5qc29uX2RhdGEgPSB7fSAgIyB0eXBlOiBPcHRpb25hbFtEaWN0W1Rl
eHQsIExpc3RbQW55XV1dCi0gICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IE5vbmUgICMgdHlwZTog
T3B0aW9uYWxbc3RyXQotICAgICAgICBzZWxmLmRhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQs
IFNldFtNYW5pZmVzdEl0ZW1dXQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0g
ICAgICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtNYW5pZmVzdEl0ZW1dCi0gICAgICAgIGlmIGtl
eSBub3QgaW4gc2VsZi5kYXRhIGFuZCBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYubG9hZChrZXkpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGFba2V5XQotCi0g
ICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKLSAg
ICAgICAgcmV0dXJuIGJvb2woc2VsZi5kYXRhKSBvciBib29sKHNlbGYuanNvbl9kYXRhKQotCi0g
ICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gaW50Ci0gICAgICAg
IHJ2ID0gbGVuKHNlbGYuZGF0YSkKLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBydiArPSBsZW4oc2VsZi5qc29uX2RhdGEpCi0gICAgICAgIHJldHVy
biBydgotCi0gICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICMgdHlwZTog
KFRleHQpIC0+IE5vbmUKLSAgICAgICAgaWYga2V5IGluIHNlbGYuZGF0YToKLSAgICAgICAgICAg
IGRlbCBzZWxmLmRhdGFba2V5XQotICAgICAgICBlbGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgZGVsIHNlbGYuanNvbl9kYXRhW2Zyb21fb3NfcGF0aChrZXkpXQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IKLQotICAgIGRlZiBfX3Nl
dGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgIyB0eXBlOiAoVGV4dCwgU2V0W01h
bmlmZXN0SXRlbV0pIC0+IE5vbmUKLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBwYXRoID0gZnJvbV9vc19wYXRoKGtleSkKLSAgICAgICAgICAgIGlm
IHBhdGggaW4gc2VsZi5qc29uX2RhdGE6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuanNvbl9k
YXRhW3BhdGhdCi0gICAgICAgIHNlbGYuZGF0YVtrZXldID0gdmFsdWUKLQotICAgIGRlZiBfX2Nv
bnRhaW5zX18oc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoQW55KSAtPiBib29sCi0gICAg
ICAgIHNlbGYubG9hZF9hbGwoKQotICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuZGF0YQotCi0g
ICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1Rl
eHRdCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhLl9f
aXRlcl9fKCkKLQotICAgIGRlZiBpdGVydmFsdWVzKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgp
IC0+IEl0ZXJhdG9yW1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICBzZWxmLmxvYWRfYWxsKCkK
LSAgICAgICAgcmV0dXJuIGl0ZXJ2YWx1ZXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIGl0ZXJpdGVt
cyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltUdXBsZVtUZXh0LCBTZXRb
TWFuaWZlc3RJdGVtXV1dCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAgICAgICByZXR1cm4g
aXRlcml0ZW1zKHNlbGYuZGF0YSkKLQotICAgIGRlZiB2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMg
dHlwZTogKCkgLT4gTGlzdFtTZXRbTWFuaWZlc3RJdGVtXV0KLSAgICAgICAgcmV0dXJuIGxpc3Qo
c2VsZi5pdGVydmFsdWVzKCkpCi0KLSAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgICMgdHlw
ZTogKCkgLT4gTGlzdFtUdXBsZVtUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCi0gICAgICAgIHJl
dHVybiBsaXN0KHNlbGYuaXRlcml0ZW1zKCkpCi0KLSAgICBkZWYgbG9hZChzZWxmLCBrZXkpOgot
ICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBOb25lCi0gICAgICAgICIiIkxvYWQgYSBzcGVjaWZp
YyBJdGVtIGdpdmVuIGEgcGF0aCIiIgotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAgICAgICAgcGF0aCA9IGZyb21f
b3NfcGF0aChrZXkpCi0gICAgICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLmpzb25fZGF0YS5nZXQo
cGF0aCwgW10pOgotICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xz
LmZyb21fanNvbihzZWxmLm1hbmlmZXN0LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgIGRh
dGEuYWRkKG1hbmlmZXN0X2l0ZW0pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ZGVsIHNlbGYuanNvbl9kYXRhW3BhdGhdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0g
ICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi5kYXRhW2tleV0gPSBkYXRhCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0KLSAgICBkZWYgbG9h
ZF9hbGwoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gTm9uZQotICAgICAgICAiIiJMb2Fk
IGFsbCB0ZXN0IGl0ZW1zIGluIHRoaXMgY2xhc3MiIiIKLSAgICAgICAgaWYgc2VsZi5qc29uX2Rh
dGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmb3IgcGF0aCwgdmFsdWUgaW4gaXRlcml0ZW1z
KHNlbGYuanNvbl9kYXRhKToKLSAgICAgICAgICAgICAgICBrZXkgPSB0b19vc19wYXRoKHBhdGgp
Ci0gICAgICAgICAgICAgICAgaWYga2V5IGluIHNlbGYuZGF0YToKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgICAgICBkYXRhID0gc2V0KCkKLSAgICAgICAgICAgICAg
ICBmb3IgdGVzdCBpbiBzZWxmLmpzb25fZGF0YS5nZXQocGF0aCwgW10pOgotICAgICAgICAgICAg
ICAgICAgICBtYW5pZmVzdF9pdGVtID0gc2VsZi50eXBlX2Nscy5mcm9tX2pzb24oc2VsZi5tYW5p
ZmVzdCwgcGF0aCwgdGVzdCkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5hZGQobWFuaWZlc3Rf
aXRlbSkKLSAgICAgICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGRhdGEKLSAgICAgICAgICAg
IHNlbGYuanNvbl9kYXRhID0gTm9uZQotCi0gICAgZGVmIHNldF9qc29uKHNlbGYsIHRlc3RzX3Jv
b3QsIGRhdGEpOgotICAgICAgICAjIHR5cGU6IChzdHIsIERpY3RbVGV4dCwgQW55XSkgLT4gTm9u
ZQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBkaWN0KToKLSAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIkdvdCBhICVzIGV4cGVjdGVkIGEgZGljdCIgJSAodHlwZShkYXRhKSkp
Ci0gICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKLSAgICAgICAgc2VsZi5qc29u
X2RhdGEgPSBkYXRhCi0KLSAgICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBEaWN0W1RleHQsIEFueV0KLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgIGZyb21f
b3NfcGF0aChwYXRoKToKLSAgICAgICAgICAgIFt0IGZvciB0IGluIHNvcnRlZCh0ZXN0LnRvX2pz
b24oKSBmb3IgdGVzdCBpbiB0ZXN0cyldCi0gICAgICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4g
aXRlcml0ZW1zKHNlbGYuZGF0YSkKLSAgICAgICAgfQotCi0gICAgICAgIGlmIHNlbGYuanNvbl9k
YXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAgICAgICAgICAg
ICAgIyBhdm9pZCBjb3B5aW5nIGlmIHRoZXJlJ3Mgbm90aGluZyBoZXJlIHlldAotICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLmpzb25fZGF0YQotICAgICAgICAgICAgZGF0YS51cGRhdGUoc2Vs
Zi5qc29uX2RhdGEpCi0KLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBwYXRocyhzZWxm
KToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbVGV4dF0KLSAgICAgICAgIiIiR2V0IGEgbGlz
dCBvZiBhbGwgcGF0aHMgY29udGFpbmluZyBpdGVtcyBvZiB0aGlzIHR5cGUsCi0gICAgICAgIHdp
dGhvdXQgYWN0dWFsbHkgY29uc3RydWN0aW5nIGFsbCB0aGUgaXRlbXMiIiIKLSAgICAgICAgcnYg
PSBzZXQoaXRlcmtleXMoc2VsZi5kYXRhKSkKLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGE6Ci0g
ICAgICAgICAgICBydiB8PSB7dG9fb3NfcGF0aChpdGVtKSBmb3IgaXRlbSBpbiBpdGVya2V5cyhz
ZWxmLmpzb25fZGF0YSl9Ci0gICAgICAgIHJldHVybiBydgotCitkZWYgY29tcHV0ZV9tYW5pZmVz
dF9pdGVtcyhzb3VyY2VfZmlsZSk6CisgICAgIyB0eXBlOiAoU291cmNlRmlsZSkgLT4gVHVwbGVb
VHVwbGVbVGV4dCwgLi4uXSwgVGV4dCwgU2V0W01hbmlmZXN0SXRlbV0sIFRleHRdCisgICAgcmVs
X3BhdGhfcGFydHMgPSBzb3VyY2VfZmlsZS5yZWxfcGF0aF9wYXJ0cworICAgIG5ld190eXBlLCBt
YW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0X2l0ZW1zKCkKKyAgICBmaWxlX2hh
c2ggPSBzb3VyY2VfZmlsZS5oYXNoCisgICAgcmV0dXJuIHJlbF9wYXRoX3BhcnRzLCBuZXdfdHlw
ZSwgc2V0KG1hbmlmZXN0X2l0ZW1zKSwgZmlsZV9oYXNoCiAKIGlmIE1ZUFk6CiAgICAgTWFuaWZl
c3REYXRhVHlwZSA9IERpY3RbQW55LCBUeXBlRGF0YV0KQEAgLTIzNywxNyArMTAwLDI1IEBAIGNs
YXNzIE1hbmlmZXN0RGF0YShNYW5pZmVzdERhdGFUeXBlKToKICAgICAgICAgd2l0aG91dCBhY3R1
YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgogICAgICAgICBydiA9IHNldCgpICAj
IHR5cGU6IFNldFtUZXh0XQogICAgICAgICBmb3IgaXRlbV9kYXRhIGluIGl0ZXJ2YWx1ZXMoc2Vs
Zik6Ci0gICAgICAgICAgICBydiB8PSBzZXQoaXRlbV9kYXRhLnBhdGhzKCkpCisgICAgICAgICAg
ICBmb3IgaXRlbSBpbiBpdGVtX2RhdGE6CisgICAgICAgICAgICAgICAgcnYuYWRkKG9zLnBhdGgu
c2VwLmpvaW4oaXRlbSkpCiAgICAgICAgIHJldHVybiBydgogCisgICAgZGVmIHR5cGVfYnlfcGF0
aChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1R1cGxlW1RleHQsIC4uLl0sIHN0
cl0KKyAgICAgICAgcnYgPSB7fQorICAgICAgICBmb3IgaXRlbV90eXBlLCBpdGVtX2RhdGEgaW4g
aXRlcml0ZW1zKHNlbGYpOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbV9kYXRhOgorICAg
ICAgICAgICAgICAgIHJ2W2l0ZW1dID0gaXRlbV90eXBlCisgICAgICAgIHJldHVybiBydgorCisK
IAogY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHNf
cm9vdD1Ob25lLCB1cmxfYmFzZT0iLyIpOgogICAgICAgICAjIHR5cGU6IChPcHRpb25hbFtzdHJd
LCBUZXh0KSAtPiBOb25lCiAgICAgICAgIGFzc2VydCB1cmxfYmFzZSBpcyBub3QgTm9uZQotICAg
ICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQs
IFRleHRdXQogICAgICAgICBzZWxmLl9kYXRhID0gTWFuaWZlc3REYXRhKHNlbGYpICAjIHR5cGU6
IE1hbmlmZXN0RGF0YQotICAgICAgICBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5X3VybCA9IE5vbmUg
ICMgdHlwZTogT3B0aW9uYWxbRGljdFtUZXh0LCBVbmlvbltSZWZUZXN0LCBSZWZUZXN0Tm9kZV1d
XQogICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSB0ZXN0c19yb290ICAjIHR5cGU6IE9wdGlvbmFs
W3N0cl0KICAgICAgICAgc2VsZi51cmxfYmFzZSA9IHVybF9iYXNlICAjIHR5cGU6IFRleHQKIApA
QCAtMjU4LDQ3ICsxMjksMzQgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICBkZWYgaXRl
cnR5cGVzKHNlbGYsICp0eXBlcyk6CiAgICAgICAgICMgdHlwZTogKCpzdHIpIC0+IEl0ZXJhdG9y
W1R1cGxlW3N0ciwgVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dXQogICAgICAgICBmb3IgaXRlbV90
eXBlIGluICh0eXBlcyBvciBzb3J0ZWQoc2VsZi5fZGF0YS5rZXlzKCkpKToKLSAgICAgICAgICAg
IGZvciBwYXRoIGluIHNvcnRlZChzZWxmLl9kYXRhW2l0ZW1fdHlwZV0pOgorICAgICAgICAgICAg
Zm9yIHBhdGggaW4gc2VsZi5fZGF0YVtpdGVtX3R5cGVdOgorICAgICAgICAgICAgICAgIHN0cl9w
YXRoID0gb3Muc2VwLmpvaW4ocGF0aCkKICAgICAgICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2Rh
dGFbaXRlbV90eXBlXVtwYXRoXQotICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgcGF0
aCwgdGVzdHMKKyAgICAgICAgICAgICAgICB5aWVsZCBpdGVtX3R5cGUsIHN0cl9wYXRoLCB0ZXN0
cwogCiAgICAgZGVmIGl0ZXJwYXRoKHNlbGYsIHBhdGgpOgotICAgICAgICAjIHR5cGU6IChUZXh0
KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCisgICAgICAgICMgdHlwZTogKFRleHQpIC0+IEl0
ZXJhYmxlW01hbmlmZXN0SXRlbV0KKyAgICAgICAgdHBhdGggPSB0dXBsZShwYXRoLnNwbGl0KG9z
LnBhdGguc2VwKSkKKwogICAgICAgICBmb3IgdHlwZV90ZXN0cyBpbiBzZWxmLl9kYXRhLnZhbHVl
cygpOgotICAgICAgICAgICAgaSA9IHR5cGVfdGVzdHMuZ2V0KHBhdGgsIHNldCgpKQorICAgICAg
ICAgICAgaSA9IHR5cGVfdGVzdHMuZ2V0KHRwYXRoLCBzZXQoKSkKICAgICAgICAgICAgIGFzc2Vy
dCBpIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBmb3IgdGVzdCBpbiBpOgogICAgICAgICAgICAg
ICAgIHlpZWxkIHRlc3QKIAogICAgIGRlZiBpdGVyZGlyKHNlbGYsIGRpcl9uYW1lKToKLSAgICAg
ICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmF0b3JbTWFuaWZlc3RJdGVtXQotICAgICAgICBpZiBu
b3QgZGlyX25hbWUuZW5kc3dpdGgob3MucGF0aC5zZXApOgotICAgICAgICAgICAgZGlyX25hbWUg
PSBkaXJfbmFtZSArIG9zLnBhdGguc2VwCisgICAgICAgICMgdHlwZTogKFRleHQpIC0+IEl0ZXJh
YmxlW01hbmlmZXN0SXRlbV0KKyAgICAgICAgdHBhdGggPSB0dXBsZShkaXJfbmFtZS5zcGxpdChv
cy5wYXRoLnNlcCkpCisgICAgICAgIHRwYXRoX2xlbiA9IGxlbih0cGF0aCkKKwogICAgICAgICBm
b3IgdHlwZV90ZXN0cyBpbiBzZWxmLl9kYXRhLnZhbHVlcygpOgotICAgICAgICAgICAgZm9yIHBh
dGgsIHRlc3RzIGluIHR5cGVfdGVzdHMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYg
cGF0aC5zdGFydHN3aXRoKGRpcl9uYW1lKToKKyAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBp
biBpdGVyaXRlbXModHlwZV90ZXN0cyk6CisgICAgICAgICAgICAgICAgaWYgcGF0aFs6dHBhdGhf
bGVuXSA9PSB0cGF0aDoKICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0CiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgcmVmdGVzdF9ub2Rlc19ieV91cmwoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gRGlj
dFtUZXh0LCBVbmlvbltSZWZUZXN0LCBSZWZUZXN0Tm9kZV1dCi0gICAgICAgIGlmIHNlbGYuX3Jl
ZnRlc3Rfbm9kZXNfYnlfdXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICBieV91cmwgPSB7fQotICAg
ICAgICAgICAgZm9yIHBhdGgsIG5vZGVzIGluIGl0ZXJ0b29scy5jaGFpbihpdGVyaXRlbXMoc2Vs
Zi5fZGF0YVsicmVmdGVzdCJdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXRlcml0ZW1zKHNlbGYuX2RhdGFbInJlZnRlc3Rfbm9kZSJdKSk6Ci0gICAg
ICAgICAgICAgICAgZm9yIG5vZGUgaW4gbm9kZXM6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKG5vZGUsIChSZWZUZXN0LCBSZWZUZXN0Tm9kZSkpCi0gICAgICAgICAgICAg
ICAgICAgIGJ5X3VybFtub2RlLnVybF0gPSBub2RlCi0gICAgICAgICAgICBzZWxmLl9yZWZ0ZXN0
X25vZGVzX2J5X3VybCA9IGJ5X3VybAotICAgICAgICByZXR1cm4gc2VsZi5fcmVmdGVzdF9ub2Rl
c19ieV91cmwKLQotICAgIGRlZiBnZXRfcmVmZXJlbmNlKHNlbGYsIHVybCk6Ci0gICAgICAgICMg
dHlwZTogKFRleHQpIC0+IE9wdGlvbmFsW01hbmlmZXN0SXRlbV0KLSAgICAgICAgcmV0dXJuIHNl
bGYucmVmdGVzdF9ub2Rlc19ieV91cmwuZ2V0KHVybCkKLQotICAgIGRlZiB1cGRhdGUoc2VsZiwg
dHJlZSk6Ci0gICAgICAgICMgdHlwZTogKEl0ZXJhYmxlW1R1cGxlW1VuaW9uW1NvdXJjZUZpbGUs
IGJ5dGVzXSwgYm9vbF1dKSAtPiBib29sCisgICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVlLCBwYXJh
bGxlbD1UcnVlKToKKyAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNl
RmlsZSwgYnl0ZXNdLCBib29sXV0sIGJvb2wpIC0+IGJvb2wKICAgICAgICAgIiIiVXBkYXRlIHRo
ZSBtYW5pZmVzdCBnaXZlbiBhbiBpdGVyYWJsZSBvZiBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIHVw
ZGF0ZWQgbWFuaWZlc3QuCiAKICAgICAgICAgVGhlIGl0ZXJhYmxlIG11c3QgZWl0aGVyIGdlbmVy
YXRlIHR1cGxlcyBvZiB0aGUgZm9ybSAoU291cmNlRmlsZSwgVHJ1ZSkgZm9yIHBhdGhzCkBAIC0z
MDYsMTcwICsxNjQsMTI3IEBAIGNsYXNzIE1hbmlmZXN0KG9iamVjdCk6CiAgICAgICAgIHVudXN1
YWwgQVBJIGlzIGRlc2lnbmVkIGFzIGFuIG9wdGltaXN0YWlvbiBtZWFuaW5nIHRoYXQgU291cmNl
RmlsZSBpdGVtcyBuZWVkIG5vdCBiZQogICAgICAgICBjb25zdHJ1Y3RlZCBpbiB0aGUgY2FzZSB3
ZSBhcmUgbm90IHVwZGF0aW5nIGEgcGF0aCwgYnV0IHRoZSBhYnNlbmNlIG9mIGFuIGl0ZW0gZnJv
bQogICAgICAgICB0aGUgaXRlcmF0b3IgbWF5IGJlIHVzZWQgdG8gcmVtb3ZlIGRlZnVuY3QgZW50
cmllcyBmcm9tIHRoZSBtYW5pZmVzdC4iIiIKLSAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMgPSBb
XSAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCi0gICAgICAgIHNlZW5f
ZmlsZXMgPSBzZXQoKSAgIyB0eXBlOiBTZXRbVGV4dF0KIAogICAgICAgICBjaGFuZ2VkID0gRmFs
c2UKLSAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gRmFsc2UKIAogICAgICAgICAjIENyZWF0ZSBs
b2NhbCB2YXJpYWJsZSByZWZlcmVuY2VzIHRvIHRoZXNlIGRpY3RzIHNvIHdlIGF2b2lkIHRoZQog
ICAgICAgICAjIGF0dHJpYnV0ZSBhY2Nlc3MgaW4gdGhlIGhvdCBsb29wIGJlbG93Ci0gICAgICAg
IHBhdGhfaGFzaCA9IHNlbGYuX3BhdGhfaGFzaCAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1Rl
eHQsIFRleHRdXQogICAgICAgICBkYXRhID0gc2VsZi5fZGF0YQogCi0gICAgICAgIHByZXZfZmls
ZXMgPSBkYXRhLnBhdGhzKCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgIHR5cGVzID0gZGF0
YS50eXBlX2J5X3BhdGgoKQorICAgICAgICBkZWxldGVkID0gc2V0KHR5cGVzKQogCi0gICAgICAg
IHJlZnRlc3RfdHlwZXMgPSAoInJlZnRlc3QiLCAicmVmdGVzdF9ub2RlIikKKyAgICAgICAgdG9f
dXBkYXRlID0gW10KIAotICAgICAgICBmb3Igc291cmNlX2ZpbGUsIHVwZGF0ZSBpbiB0cmVlOgor
ICAgICAgICBmb3Igc291cmNlX2ZpbGVfb3JfcGF0aCwgdXBkYXRlIGluIHRyZWU6CiAgICAgICAg
ICAgICBpZiBub3QgdXBkYXRlOgotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNv
dXJjZV9maWxlLCAoYmluYXJ5X3R5cGUsIHRleHRfdHlwZSkpCi0gICAgICAgICAgICAgICAgcmVs
X3BhdGggPSBzb3VyY2VfZmlsZSAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgc2Vlbl9m
aWxlcy5hZGQocmVsX3BhdGgpCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHJlbF9wYXRoIGluIHBh
dGhfaGFzaAotICAgICAgICAgICAgICAgIG9sZF9oYXNoLCBvbGRfdHlwZSA9IHBhdGhfaGFzaFty
ZWxfcGF0aF0gICMgdHlwZTogVHVwbGVbVGV4dCwgVGV4dF0KLSAgICAgICAgICAgICAgICBpZiBv
bGRfdHlwZSBpbiByZWZ0ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9p
dGVtcyA9IGRhdGFbb2xkX3R5cGVdW3JlbF9wYXRoXSAgIyB0eXBlOiBJdGVyYWJsZVtNYW5pZmVz
dEl0ZW1dCi0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRl
bSwgb2xkX2hhc2gpIGZvciBpdGVtIGluIG1hbmlmZXN0X2l0ZW1zKQorICAgICAgICAgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZV9maWxlX29yX3BhdGgsIChiaW5hcnlfdHlwZSwgdGV4
dF90eXBlKSkKKyAgICAgICAgICAgICAgICBwYXRoID0gZW5zdXJlX3RleHQoc291cmNlX2ZpbGVf
b3JfcGF0aCkKKyAgICAgICAgICAgICAgICBkZWxldGVkLnJlbW92ZSh0dXBsZShwYXRoLnNwbGl0
KG9zLnBhdGguc2VwKSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFzc2Vy
dCBub3QgaXNpbnN0YW5jZShzb3VyY2VfZmlsZSwgYnl0ZXMpCi0gICAgICAgICAgICAgICAgcmVs
X3BhdGggPSBzb3VyY2VfZmlsZS5yZWxfcGF0aAotICAgICAgICAgICAgICAgIHNlZW5fZmlsZXMu
YWRkKHJlbF9wYXRoKQotCi0gICAgICAgICAgICAgICAgZmlsZV9oYXNoID0gc291cmNlX2ZpbGUu
aGFzaCAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNl
KHNvdXJjZV9maWxlX29yX3BhdGgsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKKyAgICAgICAg
ICAgICAgICBzb3VyY2VfZmlsZSA9IHNvdXJjZV9maWxlX29yX3BhdGgKKyAgICAgICAgICAgICAg
ICByZWxfcGF0aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgICAgICAg
ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVsX3BhdGhfcGFydHMsIHR1cGxlKQogCi0gICAgICAg
ICAgICAgICAgaXNfbmV3ID0gcmVsX3BhdGggbm90IGluIHBhdGhfaGFzaCAgIyB0eXBlOiBib29s
CisgICAgICAgICAgICAgICAgaXNfbmV3ID0gcmVsX3BhdGhfcGFydHMgbm90IGluIGRlbGV0ZWQg
ICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgIGhhc2hfY2hhbmdlZCA9IEZhbHNlICAjIHR5
cGU6IGJvb2wKIAogICAgICAgICAgICAgICAgIGlmIG5vdCBpc19uZXc6Ci0gICAgICAgICAgICAg
ICAgICAgIG9sZF9oYXNoLCBvbGRfdHlwZSA9IHBhdGhfaGFzaFtyZWxfcGF0aF0KKyAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlZC5yZW1vdmUocmVsX3BhdGhfcGFydHMpCisgICAgICAgICAgICAg
ICAgICAgIG9sZF90eXBlID0gdHlwZXNbcmVsX3BhdGhfcGFydHNdCisgICAgICAgICAgICAgICAg
ICAgIG9sZF9oYXNoID0gZGF0YVtvbGRfdHlwZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXQorICAg
ICAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNoICAjIHR5cGU6IFRl
eHQKICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX2hhc2ggIT0gZmlsZV9oYXNoOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3X3R5cGUsIG1hbmlmZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUu
bWFuaWZlc3RfaXRlbXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0g
VHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3X3R5cGUgIT0gb2xkX3R5cGU6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGRhdGFbb2xkX3R5cGVdW3JlbF9wYXRoXQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfY2hhbmdlcyA9IFRydWUK
LSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld190
eXBlID0gb2xkX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9sZF90eXBlIGluIHJl
ZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbXMg
PSBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCi0KLSAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSBpbiByZWZ0ZXN0X3R5
cGVzOgotICAgICAgICAgICAgICAgICAgICBhbGxfcmVmdGVzdF9ub2Rlcy5leHRlbmQoKGl0ZW0s
IGZpbGVfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIGlzX25ldyBvciBoYXNoX2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxpZiBpc19uZXcgb3IgaGFz
aF9jaGFuZ2VkOgotICAgICAgICAgICAgICAgICAgICBkYXRhW25ld190eXBlXVtyZWxfcGF0aF0g
PSBzZXQobWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtv
bGRfdHlwZV1bcmVsX3BhdGhfcGFydHNdCiAKICAgICAgICAgICAgICAgICBpZiBpc19uZXcgb3Ig
aGFzaF9jaGFuZ2VkOgotICAgICAgICAgICAgICAgICAgICBwYXRoX2hhc2hbcmVsX3BhdGhdID0g
KGZpbGVfaGFzaCwgbmV3X3R5cGUpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVl
CisgICAgICAgICAgICAgICAgICAgIHRvX3VwZGF0ZS5hcHBlbmQoc291cmNlX2ZpbGUpCisKKyAg
ICAgICAgaWYgdG9fdXBkYXRlOgorICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKKworICAgICAg
ICBpZiBwYXJhbGxlbCBhbmQgbGVuKHRvX3VwZGF0ZSkgPiAyNSBhbmQgY3B1X2NvdW50KCkgPiAx
OgorICAgICAgICAgICAgIyAyNSBkZXJpdmVkIGV4cGVyaW1lbnRhbGx5ICgyMDIwLTAxKSB0byBi
ZSBhcHByb3hpbWF0ZWx5CisgICAgICAgICAgICAjIHRoZSBwb2ludCBhdCB3aGljaCBpdCBpcyBx
dWlja2VyIHRvIGNyZWF0ZSBQb29sIGFuZAorICAgICAgICAgICAgIyBwYXJhbGxlbGl6ZSB0aGlz
CisgICAgICAgICAgICBwb29sID0gUG9vbCgpCisKKyAgICAgICAgICAgICMgY2h1bmtzaXplIHNl
dCA+IDEgd2hlbiBtb3JlIHRoYW4gMTAwMDAgdGVzdHMsIGJlY2F1c2UKKyAgICAgICAgICAgICMg
Y2h1bmtpbmcgaXMgYSBuZXQtZ2FpbiBvbmNlIHdlIGdldCB0byB2ZXJ5IGxhcmdlIG51bWJlcnMK
KyAgICAgICAgICAgICMgb2YgaXRlbXMgKGFnYWluLCBleHBlcmltZW50YWxseSwgMjAyMC0wMSkK
KyAgICAgICAgICAgIHJlc3VsdHMgPSBwb29sLmltYXBfdW5vcmRlcmVkKGNvbXB1dGVfbWFuaWZl
c3RfaXRlbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b191
cGRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3Np
emU9bWF4KDEsIGxlbih0b191cGRhdGUpIC8vIDEwMDAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKSAgIyB0eXBlOiBJdGVyYXRvcltUdXBsZVtUdXBsZVtUZXh0
LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF1dCisgICAgICAgIGVsaWYgUFkz
OgorICAgICAgICAgICAgcmVzdWx0cyA9IG1hcChjb21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191
cGRhdGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHRzID0gaXRlcnRvb2xzLmlt
YXAoY29tcHV0ZV9tYW5pZmVzdF9pdGVtcywgdG9fdXBkYXRlKQorCisgICAgICAgIGZvciByZXN1
bHQgaW4gcmVzdWx0czoKKyAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzLCBuZXdfdHlwZSwgbWFu
aWZlc3RfaXRlbXMsIGZpbGVfaGFzaCA9IHJlc3VsdAorICAgICAgICAgICAgZGF0YVtuZXdfdHlw
ZV1bcmVsX3BhdGhfcGFydHNdID0gbWFuaWZlc3RfaXRlbXMKKyAgICAgICAgICAgIGRhdGFbbmV3
X3R5cGVdLmhhc2hlc1tyZWxfcGF0aF9wYXJ0c10gPSBmaWxlX2hhc2gKIAotICAgICAgICBkZWxl
dGVkID0gcHJldl9maWxlcyAtIHNlZW5fZmlsZXMKICAgICAgICAgaWYgZGVsZXRlZDoKICAgICAg
ICAgICAgIGNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICBmb3IgcmVsX3BhdGggaW4gZGVsZXRl
ZDoKLSAgICAgICAgICAgICAgICBpZiByZWxfcGF0aCBpbiBwYXRoX2hhc2g6Ci0gICAgICAgICAg
ICAgICAgICAgIF8sIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQotICAgICAgICAgICAg
ICAgICAgICBpZiBvbGRfdHlwZSBpbiByZWZ0ZXN0X3R5cGVzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBkZWwgcGF0
aF9oYXNoW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdF9kYXRhIGluIGl0
ZXJ2YWx1ZXMoZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0aCBpbiB0
ZXN0X2RhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHRlc3RfZGF0YVtyZWxf
cGF0aF0KLQotICAgICAgICBpZiByZWZ0ZXN0X2NoYW5nZXM6Ci0gICAgICAgICAgICByZWZ0ZXN0
cywgcmVmdGVzdF9ub2RlcywgY2hhbmdlZF9oYXNoZXMgPSBzZWxmLl9jb21wdXRlX3JlZnRlc3Rz
KGFsbF9yZWZ0ZXN0X25vZGVzKQotICAgICAgICAgICAgcmVmdGVzdF9kYXRhID0gZGF0YVsicmVm
dGVzdCJdCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEuY2xlYXIoKQotICAgICAgICAgICAgZm9y
IHBhdGgsIGl0ZW1zIGluIGl0ZXJpdGVtcyhyZWZ0ZXN0cyk6Ci0gICAgICAgICAgICAgICAgaWYg
TVlQWToKLSAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9kYXRhW3BhdGhdID0gY2FzdChTZXRb
TWFuaWZlc3RJdGVtXSwgaXRlbXMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgcmVmdGVzdF9kYXRhW3BhdGhdID0gaXRlbXMKLQotICAgICAgICAgICAgcmVmdGVz
dF9ub2RlX2RhdGEgPSBkYXRhWyJyZWZ0ZXN0X25vZGUiXQotICAgICAgICAgICAgcmVmdGVzdF9u
b2RlX2RhdGEuY2xlYXIoKQotICAgICAgICAgICAgZm9yIG5vZGVfcGF0aCwgbm9kZV9pdGVtcyBp
biBpdGVyaXRlbXMocmVmdGVzdF9ub2Rlcyk6Ci0gICAgICAgICAgICAgICAgaWYgTVlQWToKLSAg
ICAgICAgICAgICAgICAgICAgcmVmdGVzdF9ub2RlX2RhdGFbbm9kZV9wYXRoXSA9IGNhc3QoU2V0
W01hbmlmZXN0SXRlbV0sIG5vZGVfaXRlbXMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgcmVmdGVzdF9ub2RlX2RhdGFbbm9kZV9wYXRoXSA9IG5vZGVfaXRlbXMK
LQotICAgICAgICAgICAgcGF0aF9oYXNoLnVwZGF0ZShjaGFuZ2VkX2hhc2hlcykKKyAgICAgICAg
ICAgIGZvciByZWxfcGF0aF9wYXJ0cyBpbiBkZWxldGVkOgorICAgICAgICAgICAgICAgIGZvciB0
ZXN0X2RhdGEgaW4gaXRlcnZhbHVlcyhkYXRhKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVs
X3BhdGhfcGFydHMgaW4gdGVzdF9kYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHRl
c3RfZGF0YVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICByZXR1cm4gY2hhbmdlZAogCi0gICAg
ZGVmIF9jb21wdXRlX3JlZnRlc3RzKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJl
ZnRlc3Rfbm9kZXMgICMgdHlwZTogTGlzdFtUdXBsZVtNYW5pZmVzdEl0ZW0sIFRleHRdXQotICAg
ICAgICAgICAgICAgICAgICAgICAgICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFR1cGxl
W0RpY3RbVGV4dCwgU2V0W1JlZlRlc3RdXSwgRGljdFtUZXh0LCBTZXRbUmVmVGVzdE5vZGVdXSwg
RGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0XV1dCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0ge30KLSAgICAgICAgaGFzX2luYm91bmQgPSBzZXQoKQotICAgICAgICBmb3Ig
aXRlbSwgXyBpbiByZWZ0ZXN0X25vZGVzOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
aXRlbSwgKFJlZlRlc3ROb2RlLCBSZWZUZXN0KSkKLSAgICAgICAgICAgIGZvciByZWZfdXJsLCBy
ZWZfdHlwZSBpbiBpdGVtLnJlZmVyZW5jZXM6Ci0gICAgICAgICAgICAgICAgaGFzX2luYm91bmQu
YWRkKHJlZl91cmwpCi0KLSAgICAgICAgcmVmdGVzdHMgPSBkZWZhdWx0ZGljdChzZXQpICAjIHR5
cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3RdXQotICAgICAgICByZWZlcmVuY2VzID0gZGVmYXVs
dGRpY3Qoc2V0KSAgIyB0eXBlOiBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dCi0gICAgICAg
IGNoYW5nZWRfaGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0
XV0KLQotICAgICAgICBmb3IgaXRlbSwgZmlsZV9oYXNoIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAg
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQot
ICAgICAgICAgICAgaWYgaXRlbS51cmwgaW4gaGFzX2luYm91bmQ6Ci0gICAgICAgICAgICAgICAg
IyBUaGlzIGlzIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0KToKLSAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW0udG9fUmVmVGVzdE5v
ZGUoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZp
bGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2l0ZW0ucGF0aF0uYWRk
KGl0ZW0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aXRlbSwgUmVmVGVzdE5vZGUpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19S
ZWZUZXN0KCkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZF9oYXNoZXNbaXRlbS5wYXRoXSA9
IChmaWxlX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXRlbS5pdGVtX3R5cGUpCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
aXRlbSwgUmVmVGVzdCkKLSAgICAgICAgICAgICAgICByZWZ0ZXN0c1tpdGVtLnBhdGhdLmFkZChp
dGVtKQotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXRlbSwgKFJlZlRlc3ROb2RlLCBS
ZWZUZXN0KSkKLSAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsW2l0ZW0udXJs
XSA9IGl0ZW0KLQotICAgICAgICByZXR1cm4gcmVmdGVzdHMsIHJlZmVyZW5jZXMsIGNoYW5nZWRf
aGFzaGVzCi0KLSAgICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBE
aWN0W1RleHQsIEFueV0KKyAgICBkZWYgdG9fanNvbihzZWxmLCBjYWxsZXJfb3duc19vYmo9VHJ1
ZSk6CisgICAgICAgICMgdHlwZTogKGJvb2wpIC0+IERpY3RbVGV4dCwgQW55XQorICAgICAgICAi
IiJEdW1wIGEgbWFuaWZlc3QgaW50byBhIG9iamVjdCB3aGljaCBjYW4gYmUgc2VyaWFsaXplZCBh
cyBKU09OCisKKyAgICAgICAgSWYgY2FsbGVyX293bnNfb2JqIGlzIEZhbHNlLCB0aGVuIHRoZSBy
ZXR1cm4gdmFsdWUgcmVtYWlucworICAgICAgICBvd25lZCBieSB0aGUgbWFuaWZlc3Q7IGl0IGlz
IF92aXRhbGx5IGltcG9ydGFudF8gdGhhdCBfbm9fCisgICAgICAgIChldmVuIHJlYWQpIG9wZXJh
dGlvbiBpcyBkb25lIG9uIHRoZSBtYW5pZmVzdCwgYXMgb3RoZXJ3aXNlCisgICAgICAgIG9iamVj
dHMgd2l0aGluIHRoZSBvYmplY3QgZ3JhcGggcm9vdGVkIGF0IHRoZSByZXR1cm4gdmFsdWUgY2Fu
CisgICAgICAgIGJlIG11dGF0ZWQuIFRoaXMgZXNzZW50aWFsbHkgbWFrZXMgdGhpcyBtb2RlIHZl
cnkgZGFuZ2Vyb3VzCisgICAgICAgIGFuZCBvbmx5IHRvIGJlIHVzZWQgdW5kZXIgZXh0cmVtZSBj
YXJlLgorCisgICAgICAgICIiIgogICAgICAgICBvdXRfaXRlbXMgPSB7CiAgICAgICAgICAgICB0
ZXN0X3R5cGU6IHR5cGVfcGF0aHMudG9fanNvbigpCiAgICAgICAgICAgICBmb3IgdGVzdF90eXBl
LCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLl9kYXRhKSBpZiB0eXBlX3BhdGhzCiAgICAg
ICAgIH0KKworICAgICAgICBpZiBjYWxsZXJfb3duc19vYmo6CisgICAgICAgICAgICBvdXRfaXRl
bXMgPSBkZWVwY29weShvdXRfaXRlbXMpCisKICAgICAgICAgcnYgPSB7InVybF9iYXNlIjogc2Vs
Zi51cmxfYmFzZSwKLSAgICAgICAgICAgICAgInBhdGhzIjoge2Zyb21fb3NfcGF0aChrKTogdiBm
b3IgaywgdiBpbiBpdGVyaXRlbXMoc2VsZi5fcGF0aF9oYXNoKX0sCiAgICAgICAgICAgICAgICJp
dGVtcyI6IG91dF9pdGVtcywKICAgICAgICAgICAgICAgInZlcnNpb24iOiBDVVJSRU5UX1ZFUlNJ
T059ICAjIHR5cGU6IERpY3RbVGV4dCwgQW55XQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19yb290LCBvYmosIHR5cGVz
PU5vbmUpOgotICAgICAgICAjIHR5cGU6IChzdHIsIERpY3RbVGV4dCwgQW55XSwgT3B0aW9uYWxb
Q29udGFpbmVyW1RleHRdXSkgLT4gTWFuaWZlc3QKKyAgICBkZWYgZnJvbV9qc29uKGNscywgdGVz
dHNfcm9vdCwgb2JqLCB0eXBlcz1Ob25lLCBjYWxsZWVfb3duc19vYmo9RmFsc2UpOgorICAgICAg
ICAjIHR5cGU6IChzdHIsIERpY3RbVGV4dCwgQW55XSwgT3B0aW9uYWxbQ29udGFpbmVyW1RleHRd
XSwgYm9vbCkgLT4gTWFuaWZlc3QKKyAgICAgICAgIiIiTG9hZCBhIG1hbmlmZXN0IGZyb20gYSBK
U09OIG9iamVjdAorCisgICAgICAgIFRoaXMgbG9hZHMgYSBtYW5pZmVzdCBmb3IgYSBnaXZlbiBs
b2NhbCB0ZXN0X3Jvb3QgcGF0aCBmcm9tIGFuCisgICAgICAgIG9iamVjdCBvYmosIHBvdGVudGlh
bGx5IHBhcnRpYWxseSBsb2FkaW5nIGl0IHRvIG9ubHkgbG9hZCB0aGUKKyAgICAgICAgdHlwZXMg
Z2l2ZW4gYnkgdHlwZXMuCisKKyAgICAgICAgSWYgY2FsbGVlX293bnNfb2JqIGlzIFRydWUsIHRo
ZW4gb3duZXJzaGlwIG9mIG9iaiB0cmFuc2ZlcnMKKyAgICAgICAgdG8gdGhpcyBmdW5jdGlvbiB3
aGVuIGNhbGxlZCwgYW5kIHRoZSBjYWxsZXIgbXVzdCBuZXZlciBtdXRhdGUKKyAgICAgICAgdGhl
IG9iaiBvciBhbnl0aGluZyByZWZlcnJlZCB0byBpbiB0aGUgb2JqZWN0IGdyYXBoIHJvb3RlZCBh
dAorICAgICAgICBvYmouCisKKyAgICAgICAgIiIiCiAgICAgICAgIHZlcnNpb24gPSBvYmouZ2V0
KCJ2ZXJzaW9uIikKICAgICAgICAgaWYgdmVyc2lvbiAhPSBDVVJSRU5UX1ZFUlNJT046CiAgICAg
ICAgICAgICByYWlzZSBNYW5pZmVzdFZlcnNpb25NaXNtYXRjaAogCiAgICAgICAgIHNlbGYgPSBj
bHModGVzdHNfcm9vdCwgdXJsX2Jhc2U9b2JqLmdldCgidXJsX2Jhc2UiLCAiLyIpKQotICAgICAg
ICBpZiBub3QgaGFzYXR0cihvYmosICJpdGVtcyIpIGFuZCBoYXNhdHRyKG9iaiwgInBhdGhzIik6
CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIik6CiAgICAgICAgICAgICByYWlz
ZSBNYW5pZmVzdEVycm9yCiAKLSAgICAgICAgc2VsZi5fcGF0aF9oYXNoID0ge3RvX29zX3BhdGgo
ayk6IHYgZm9yIGssIHYgaW4gaXRlcml0ZW1zKG9ialsicGF0aHMiXSl9Ci0KICAgICAgICAgZm9y
IHRlc3RfdHlwZSwgdHlwZV9wYXRocyBpbiBpdGVyaXRlbXMob2JqWyJpdGVtcyJdKToKICAgICAg
ICAgICAgIGlmIHRlc3RfdHlwZSBub3QgaW4gaXRlbV9jbGFzc2VzOgogICAgICAgICAgICAgICAg
IHJhaXNlIE1hbmlmZXN0RXJyb3IKQEAgLTQ3Nyw3ICsyOTIsMTAgQEAgY2xhc3MgTWFuaWZlc3Qo
b2JqZWN0KToKICAgICAgICAgICAgIGlmIHR5cGVzIGFuZCB0ZXN0X3R5cGUgbm90IGluIHR5cGVz
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIHNlbGYuX2RhdGFbdGVz
dF90eXBlXS5zZXRfanNvbih0ZXN0c19yb290LCB0eXBlX3BhdGhzKQorICAgICAgICAgICAgaWYg
bm90IGNhbGxlZV9vd25zX29iajoKKyAgICAgICAgICAgICAgICB0eXBlX3BhdGhzID0gZGVlcGNv
cHkodHlwZV9wYXRocykKKworICAgICAgICAgICAgc2VsZi5fZGF0YVt0ZXN0X3R5cGVdLnNldF9q
c29uKHR5cGVfcGF0aHMpCiAKICAgICAgICAgcmV0dXJuIHNlbGYKIApAQCAtNTExLDEwICszMjks
MTEgQEAgZGVmIF9sb2FkKGxvZ2dlciwgICMgdHlwZTogTG9nZ2VyCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNyZWF0aW5nIG5ldyBtYW5pZmVzdCBhdCAlcyIgJSBt
YW5pZmVzdCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0LCAi
cmIiKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBpby5vcGVuKG1hbmlmZXN0LCAiciIsIGVuY29k
aW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgICAgICAgcnYgPSBNYW5pZmVzdC5mcm9tX2pz
b24odGVzdHNfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YXN0X2pzb24ubG9hZChmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlcz10eXBlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlcz10eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
ZWVfb3duc19vYmo9VHJ1ZSkKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTUyMyw3ICszNDIsOCBA
QCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICBlbHNlOgogICAgICAgICBy
diA9IE1hbmlmZXN0LmZyb21fanNvbih0ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYXN0X2pzb24ubG9hZChtYW5pZmVzdCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlcz10eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVlX293
bnNfb2JqPVRydWUpCiAKICAgICBpZiBhbGxvd19jYWNoZWQ6CiAgICAgICAgIF9fbG9hZF9jYWNo
ZVttYW5pZmVzdF9wYXRoXSA9IHJ2CkBAIC01NDAsNyArMzYwLDggQEAgZGVmIGxvYWRfYW5kX3Vw
ZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBlOiBieXRlcwogICAgICAgICAgICAgICAgICAgICB3b3Jr
aW5nX2NvcHk9VHJ1ZSwgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICB0eXBlcz1O
b25lLCAgIyB0eXBlOiBPcHRpb25hbFtDb250YWluZXJbVGV4dF1dCiAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlX21hbmlmZXN0PVRydWUsICAjIHR5cGU6IGJvb2wKLSAgICAgICAgICAgICAgICAg
ICAgYWxsb3dfY2FjaGVkPVRydWUgICMgdHlwZTogYm9vbAorICAgICAgICAgICAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSwgICMgdHlwZTogYm9vbAorICAgICAgICAgICAgICAgICAgICBwYXJh
bGxlbD1UcnVlICAjIHR5cGU6IGJvb2wKICAgICAgICAgICAgICAgICAgICAgKToKICAgICAjIHR5
cGU6ICguLi4pIC0+IE1hbmlmZXN0CiAgICAgbG9nZ2VyID0gZ2V0X2xvZ2dlcigpCkBAIC01Njgs
NyArMzg5LDcgQEAgZGVmIGxvYWRfYW5kX3VwZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBlOiBieXRl
cwogICAgIGlmIHJlYnVpbGQgb3IgdXBkYXRlOgogICAgICAgICB0cmVlID0gdmNzLmdldF90cmVl
KHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoLCBjYWNoZV9yb290LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVidWlsZCkKLSAgICAgICAgY2hh
bmdlZCA9IG1hbmlmZXN0LnVwZGF0ZSh0cmVlKQorICAgICAgICBjaGFuZ2VkID0gbWFuaWZlc3Qu
dXBkYXRlKHRyZWUsIHBhcmFsbGVsKQogICAgICAgICBpZiB3cml0ZV9tYW5pZmVzdCBhbmQgY2hh
bmdlZDoKICAgICAgICAgICAgIHdyaXRlKG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoKQogICAgICAg
ICB0cmVlLmR1bXBfY2FjaGVzKCkKQEAgLTU4MSw5ICs0MDIsOSBAQCBkZWYgd3JpdGUobWFuaWZl
c3QsIG1hbmlmZXN0X3BhdGgpOgogICAgIGRpcl9uYW1lID0gb3MucGF0aC5kaXJuYW1lKG1hbmlm
ZXN0X3BhdGgpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcl9uYW1lKToKICAgICAgICAg
b3MubWFrZWRpcnMoZGlyX25hbWUpCi0gICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJ3YiIp
IGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJ3IikgYXMgZjoKICAgICAgICAg
IyBVc2UgJywnIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgJywgJyBzZXBhcmF0b3IgdG8gcHJldmVu
dCB0cmFpbGluZwogICAgICAgICAjIHNwYWNlczogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi9s
aWJyYXJ5L2pzb24uaHRtbCNqc29uLmR1bXAKLSAgICAgICAganNvbi5kdW1wKG1hbmlmZXN0LnRv
X2pzb24oKSwgZiwKKyAgICAgICAganNvbi5kdW1wKG1hbmlmZXN0LnRvX2pzb24oY2FsbGVyX293
bnNfb2JqPVRydWUpLCBmLAogICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPVRydWUsIGluZGVu
dD0xLCBzZXBhcmF0b3JzPSgnLCcsICc6ICcpKQogICAgICAgICBmLndyaXRlKCJcbiIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKaW5kZXggYjlkY2M4ZjUz
NjM2ZDNkYjgwZTQ1MThmN2Q4MzgwMjdmMDk4YThkNy4uMjk5YWQyMTJmNzY4MGU3NTE3NTA1NjY3
YzZlMDliZDYwZWQwYjdjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291
cmNlZmlsZS5weQpAQCAtMiw3ICsyLDcgQEAgaW1wb3J0IGhhc2hsaWIKIGltcG9ydCByZQogaW1w
b3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotZnJvbSBzaXggaW1wb3J0IGJp
bmFyeV90eXBlLCBQWTMKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgZW5zdXJlX3RleHQs
IGl0ZXJpdGVtcywgdGV4dF90eXBlCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCkBAIC0zMyw3ICszMyw3IEBA
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBodG1sNWxpYgogCiBmcm9tIC4gaW1wb3J0IFhN
TFBhcnNlcgotZnJvbSAuaXRlbSBpbXBvcnQgKE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgV2Vi
RHJpdmVyU3BlY1Rlc3QsIFJlZlRlc3ROb2RlLCBUZXN0aGFybmVzc1Rlc3QsCitmcm9tIC5pdGVt
IGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBXZWJEcml2ZXJTcGVjVGVzdCwgUmVm
VGVzdCwgVGVzdGhhcm5lc3NUZXN0LAogICAgICAgICAgICAgICAgICAgIFN1cHBvcnRGaWxlLCBD
cmFzaFRlc3QsIENvbmZvcm1hbmNlQ2hlY2tlclRlc3QsIFZpc3VhbFRlc3QpCiBmcm9tIC51dGls
cyBpbXBvcnQgQ29udGV4dE1hbmFnZXJCeXRlc0lPLCBjYWNoZWRfcHJvcGVydHkKIApAQCAtNTYs
OSArNTYsOSBAQCBkZWYgcmVwbGFjZV9lbmQocywgb2xkLCBuZXcpOgogCiAKIGRlZiByZWFkX3Nj
cmlwdF9tZXRhZGF0YShmLCByZWdleHApOgotICAgICMgdHlwZTogKEJpbmFyeUlPLCBQYXR0ZXJu
W2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbYnl0ZXMsIGJ5dGVzXV0KKyAgICAjIHR5cGU6IChC
aW5hcnlJTywgUGF0dGVybltieXRlc10pIC0+IEl0ZXJhYmxlW1R1cGxlW1RleHQsIFRleHRdXQog
ICAgICIiIgotICAgIFlpZWxkcyBhbnkgbWV0YWRhdGEgKHBhaXJzIG9mIGJ5dGVzdHJpbmdzKSBm
cm9tIHRoZSBmaWxlLWxpa2Ugb2JqZWN0IGBmYCwKKyAgICBZaWVsZHMgYW55IG1ldGFkYXRhIChw
YWlycyBvZiBzdHJpbmdzKSBmcm9tIHRoZSBmaWxlLWxpa2Ugb2JqZWN0IGBmYCwKICAgICBhcyBz
cGVjaWZpZWQgYWNjb3JkaW5nIHRvIGEgc3VwcGxpZWQgcmVnZXhwLgogCiAgICAgYHJlZ2V4cGAg
LSBSZWdleHAgY29udGFpbmluZyB0d28gZ3JvdXBzIGNvbnRhaW5pbmcgdGhlIG1ldGFkYXRhIG5h
bWUgYW5kCkBAIC03MCwyNyArNzAsMjUgQEAgZGVmIHJlYWRfc2NyaXB0X21ldGFkYXRhKGYsIHJl
Z2V4cCk6CiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICB5
aWVsZCAobS5ncm91cHMoKVswXSwgbS5ncm91cHMoKVsxXSkKKyAgICAgICAgeWllbGQgKG0uZ3Jv
dXBzKClbMF0uZGVjb2RlKCJ1dGY4IiksIG0uZ3JvdXBzKClbMV0uZGVjb2RlKCJ1dGY4IikpCiAK
IAogX2FueV92YXJpYW50cyA9IHsKLSAgICBiImRlZmF1bHQiOiB7ImxvbmdoYW5kIjoge2Iid2lu
ZG93IiwgYiJkZWRpY2F0ZWR3b3JrZXIifX0sCi0gICAgYiJ3aW5kb3ciOiB7InN1ZmZpeCI6ICIu
YW55Lmh0bWwifSwKLSAgICBiInNlcnZpY2V3b3JrZXIiOiB7ImZvcmNlX2h0dHBzIjogVHJ1ZX0s
Ci0gICAgYiJzaGFyZWR3b3JrZXIiOiB7fSwKLSAgICBiImRlZGljYXRlZHdvcmtlciI6IHsic3Vm
Zml4IjogIi5hbnkud29ya2VyLmh0bWwifSwKLSAgICBiIndvcmtlciI6IHsibG9uZ2hhbmQiOiB7
YiJkZWRpY2F0ZWR3b3JrZXIiLCBiInNoYXJlZHdvcmtlciIsIGIic2VydmljZXdvcmtlciJ9fSwK
LSAgICBiImpzc2hlbGwiOiB7InN1ZmZpeCI6ICIuYW55LmpzIn0sCi19ICAjIHR5cGU6IERpY3Rb
Ynl0ZXMsIERpY3Rbc3RyLCBBbnldXQorICAgICJ3aW5kb3ciOiB7InN1ZmZpeCI6ICIuYW55Lmh0
bWwifSwKKyAgICAic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKKyAgICAi
c2hhcmVkd29ya2VyIjoge30sCisgICAgImRlZGljYXRlZHdvcmtlciI6IHsic3VmZml4IjogIi5h
bnkud29ya2VyLmh0bWwifSwKKyAgICAid29ya2VyIjogeyJsb25naGFuZCI6IHsiZGVkaWNhdGVk
d29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIn19LAorICAgICJqc3NoZWxs
IjogeyJzdWZmaXgiOiAiLmFueS5qcyJ9LAorfSAgIyB0eXBlOiBEaWN0W1RleHQsIERpY3RbVGV4
dCwgQW55XV0KIAogCiBkZWYgZ2V0X2FueV92YXJpYW50cyhpdGVtKToKLSAgICAjIHR5cGU6IChi
eXRlcykgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtUZXh0XQogICAg
ICIiIgotICAgIFJldHVybnMgYSBzZXQgb2YgdmFyaWFudHMgKGJ5dGVzdHJpbmdzKSBkZWZpbmVk
IGJ5IHRoZSBnaXZlbiBrZXl3b3JkLgorICAgIFJldHVybnMgYSBzZXQgb2YgdmFyaWFudHMgKHN0
cmluZ3MpIGRlZmluZWQgYnkgdGhlIGdpdmVuIGtleXdvcmQuCiAgICAgIiIiCi0gICAgYXNzZXJ0
IGlzaW5zdGFuY2UoaXRlbSwgYmluYXJ5X3R5cGUpLCBpdGVtCi0gICAgYXNzZXJ0IG5vdCBpdGVt
LnN0YXJ0c3dpdGgoYiIhIiksIGl0ZW0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCB0ZXh0
X3R5cGUpLCBpdGVtCiAKICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50cy5nZXQoaXRlbSwgTm9u
ZSkKICAgICBpZiB2YXJpYW50IGlzIE5vbmU6CkBAIC0xMDAsNDggKzk4LDQ2IEBAIGRlZiBnZXRf
YW55X3ZhcmlhbnRzKGl0ZW0pOgogCiAKIGRlZiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKToK
LSAgICAjIHR5cGU6ICgpIC0+IFNldFtieXRlc10KKyAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0
XQogICAgICIiIgotICAgIFJldHVybnMgYSBzZXQgb2YgdmFyaWFudHMgKGJ5dGVzdHJpbmdzKSB0
aGF0IHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LgorICAgIFJldHVybnMgYSBzZXQgb2YgdmFyaWFu
dHMgKHN0cmluZ3MpIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCiAgICAgIiIiCi0gICAg
cmV0dXJuIHNldChfYW55X3ZhcmlhbnRzW2IiZGVmYXVsdCJdWyJsb25naGFuZCJdKQorICAgIHJl
dHVybiBzZXQoeyJ3aW5kb3ciLCAiZGVkaWNhdGVkd29ya2VyIn0pCiAKIAogZGVmIHBhcnNlX3Zh
cmlhbnRzKHZhbHVlKToKLSAgICAjIHR5cGU6IChieXRlcykgLT4gU2V0W2J5dGVzXQorICAgICMg
dHlwZTogKFRleHQpIC0+IFNldFtUZXh0XQogICAgICIiIgotICAgIFJldHVybnMgYSBzZXQgb2Yg
dmFyaWFudHMgKGJ5dGVzdHJpbmdzKSBkZWZpbmVkIGJ5IGEgY29tbWEtc2VwYXJhdGVkIHZhbHVl
LgorICAgIFJldHVybnMgYSBzZXQgb2YgdmFyaWFudHMgKHN0cmluZ3MpIGRlZmluZWQgYnkgYSBj
b21tYS1zZXBhcmF0ZWQgdmFsdWUuCiAgICAgIiIiCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFs
dWUsIGJpbmFyeV90eXBlKSwgdmFsdWUKKyAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4
dF90eXBlKSwgdmFsdWUKIAotICAgIGdsb2JhbHMgPSBnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMo
KQorICAgIGlmIHZhbHVlID09ICIiOgorICAgICAgICByZXR1cm4gZ2V0X2RlZmF1bHRfYW55X3Zh
cmlhbnRzKCkKIAotICAgIGZvciBpdGVtIGluIHZhbHVlLnNwbGl0KGIiLCIpOgorICAgIGdsb2Jh
bHMgPSBzZXQoKQorICAgIGZvciBpdGVtIGluIHZhbHVlLnNwbGl0KCIsIik6CiAgICAgICAgIGl0
ZW0gPSBpdGVtLnN0cmlwKCkKLSAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKGIiISIpOgotICAg
ICAgICAgICAgZ2xvYmFscyAtPSBnZXRfYW55X3ZhcmlhbnRzKGl0ZW1bMTpdKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZ2xvYmFscyB8PSBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pCi0KKyAg
ICAgICAgZ2xvYmFscyB8PSBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pCiAgICAgcmV0dXJuIGdsb2Jh
bHMKIAogCiBkZWYgZ2xvYmFsX3N1ZmZpeGVzKHZhbHVlKToKLSAgICAjIHR5cGU6IChieXRlcykg
LT4gU2V0W1R1cGxlW2J5dGVzLCBib29sXV0KKyAgICAjIHR5cGU6IChUZXh0KSAtPiBTZXRbVHVw
bGVbVGV4dCwgYm9vbF1dCiAgICAgIiIiCiAgICAgWWllbGRzIHR1cGxlcyBvZiB0aGUgcmVsZXZh
bnQgZmlsZW5hbWUgc3VmZml4IChhIHN0cmluZykgYW5kIHdoZXRoZXIgdGhlCiAgICAgdmFyaWFu
dCBpcyBpbnRlbmRlZCB0byBydW4gaW4gYSBKUyBzaGVsbCwgZm9yIHRoZSB2YXJpYW50cyBkZWZp
bmVkIGJ5IHRoZQogICAgIGdpdmVuIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAg
ICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgYmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpLCB2YWx1ZQogCiAgICAgcnYgPSBzZXQoKQog
CiAgICAgZ2xvYmFsX3R5cGVzID0gcGFyc2VfdmFyaWFudHModmFsdWUpCiAgICAgZm9yIGdsb2Jh
bF90eXBlIGluIGdsb2JhbF90eXBlczoKICAgICAgICAgdmFyaWFudCA9IF9hbnlfdmFyaWFudHNb
Z2xvYmFsX3R5cGVdCi0gICAgICAgIHN1ZmZpeCA9IHZhcmlhbnQuZ2V0KCJzdWZmaXgiLCAiLmFu
eS4lcy5odG1sIiAlIGdsb2JhbF90eXBlLmRlY29kZSgidXRmLTgiKSkKLSAgICAgICAgcnYuYWRk
KChzdWZmaXgsIGdsb2JhbF90eXBlID09IGIianNzaGVsbCIpKQorICAgICAgICBzdWZmaXggPSB2
YXJpYW50LmdldCgic3VmZml4IiwgIi5hbnkuJXMuaHRtbCIgJSBnbG9iYWxfdHlwZSkKKyAgICAg
ICAgcnYuYWRkKChzdWZmaXgsIGdsb2JhbF90eXBlID09ICJqc3NoZWxsIikpCiAKICAgICByZXR1
cm4gcnYKIApAQCAtMTU2LDYgKzE1Miw4IEBAIGRlZiBnbG9iYWxfdmFyaWFudF91cmwodXJsLCBz
dWZmaXgpOgogICAgICMgdGhlIGZvcm0gLmh0dHBzLmFueS5qcwogICAgIGlmICIuaHR0cHMuIiBp
biB1cmwgYW5kIHN1ZmZpeC5zdGFydHN3aXRoKCIuaHR0cHMuIik6CiAgICAgICAgIHVybCA9IHVy
bC5yZXBsYWNlKCIuaHR0cHMuIiwgIi4iKQorICAgIGVsaWYgIi5oMi4iIGluIHVybCBhbmQgc3Vm
Zml4LnN0YXJ0c3dpdGgoIi5oMi4iKToKKyAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoIi5oMi4i
LCAiLiIpCiAgICAgcmV0dXJuIHJlcGxhY2VfZW5kKHVybCwgIi5qcyIsIHN1ZmZpeCkKIAogCkBA
IC0xOTIsMjQgKzE5MCwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCJjc3MiLCAiQ1NTMiIsICJhcmNoaXZlIiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCJjc3MiLCAiY29tbW9uIil9ICAjIHR5cGU6IFNldFtUdXBsZVtieXRlcywg
Li4uXV0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCByZWxfcGF0aCwgdXJs
X2Jhc2UsIGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6Ci0gICAgICAgICMgdHlwZTogKEFueVN0
ciwgQW55U3RyLCBUZXh0LCBPcHRpb25hbFtieXRlc10sIE9wdGlvbmFsW2J5dGVzXSkgLT4gTm9u
ZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCByZWxfcGF0aF9zdHIsIHVybF9i
YXNlLCBoYXNoPU5vbmUsIGNvbnRlbnRzPU5vbmUpOgorICAgICAgICAjIHR5cGU6IChBbnlTdHIs
IEFueVN0ciwgVGV4dCwgT3B0aW9uYWxbVGV4dF0sIE9wdGlvbmFsW2J5dGVzXSkgLT4gTm9uZQog
ICAgICAgICAiIiJPYmplY3QgcmVwcmVzZW50aW5nIGEgZmlsZSBpbiBhIHNvdXJjZSB0cmVlLgog
CiAgICAgICAgIDpwYXJhbSB0ZXN0c19yb290OiBQYXRoIHRvIHRoZSByb290IG9mIHRoZSBzb3Vy
Y2UgdHJlZQotICAgICAgICA6cGFyYW0gcmVsX3BhdGg6IEZpbGUgcGF0aCByZWxhdGl2ZSB0byB0
ZXN0c19yb290CisgICAgICAgIDpwYXJhbSByZWxfcGF0aF9zdHI6IEZpbGUgcGF0aCByZWxhdGl2
ZSB0byB0ZXN0c19yb290CiAgICAgICAgIDpwYXJhbSB1cmxfYmFzZTogQmFzZSBVUkwgdXNlZCB3
aGVuIGNvbnZlcnRpbmcgZmlsZSBwYXRocyB0byB1cmxzCiAgICAgICAgIDpwYXJhbSBjb250ZW50
czogQnl0ZSBhcnJheSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgb3IgYGBOb25lYGAuCiAg
ICAgICAgICIiIgogCisgICAgICAgIHJlbF9wYXRoID0gZW5zdXJlX3RleHQocmVsX3BhdGhfc3Ry
KQogICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguaXNhYnMocmVsX3BhdGgpLCByZWxfcGF0aAot
CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgICMgZG8gc2xhc2ggbm9y
bWFsaXphdGlvbiBvbiBXaW5kb3dzCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlbF9wYXRo
LCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgICAgICAgICAgcmVsX3BhdGggPSByZWxfcGF0aC5yZXBs
YWNlKGIiLyIsIGIiXFwiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWxf
cGF0aCA9IHJlbF9wYXRoLnJlcGxhY2UodSIvIiwgdSJcXCIpCisgICAgICAgICAgICByZWxfcGF0
aCA9IHJlbF9wYXRoLnJlcGxhY2UodSIvIiwgdSJcXCIpCiAKICAgICAgICAgZGlyX3BhdGgsIGZp
bGVuYW1lID0gb3MucGF0aC5zcGxpdChyZWxfcGF0aCkKICAgICAgICAgbmFtZSwgZXh0ID0gb3Mu
cGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKQEAgLTIyMCwxMyArMjE1LDEzIEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgICAgICBtZXRhX2ZsYWdzID0gbmFtZS5zcGxpdCgiLiIpWzE6
XQogCi0gICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTogVW5pb25b
Ynl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYucmVsX3BhdGggPSByZWxfcGF0aCAgIyB0eXBlOiBV
bmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5kaXJfcGF0aCA9IGRpcl9wYXRoICAjIHR5
cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUg
ICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUgICMg
dHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZXh0ID0gZXh0ICAjIHR5cGU6
IFVuaW9uW2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLnR5cGVfZmxhZyA9IHR5cGVfZmxhZyAg
IyB0eXBlOiBPcHRpb25hbFtVbmlvbltieXRlcywgVGV4dF1dCisgICAgICAgIHNlbGYudGVzdHNf
cm9vdCA9IGVuc3VyZV90ZXh0KHRlc3RzX3Jvb3QpICAjIHR5cGU6IFRleHQKKyAgICAgICAgc2Vs
Zi5yZWxfcGF0aCA9IHJlbF9wYXRoICAjIHR5cGU6IFRleHQKKyAgICAgICAgc2VsZi5kaXJfcGF0
aCA9IGRpcl9wYXRoICAjIHR5cGU6IFRleHQKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVu
YW1lICAjIHR5cGU6IFRleHQKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBlOiBUZXh0
CisgICAgICAgIHNlbGYuZXh0ID0gZXh0ICAjIHR5cGU6IFRleHQKKyAgICAgICAgc2VsZi50eXBl
X2ZsYWcgPSB0eXBlX2ZsYWcgICMgdHlwZTogT3B0aW9uYWxbVGV4dF0KICAgICAgICAgc2VsZi5t
ZXRhX2ZsYWdzID0gbWV0YV9mbGFncyAgIyB0eXBlOiBVbmlvbltMaXN0W2J5dGVzXSwgTGlzdFtU
ZXh0XV0KICAgICAgICAgc2VsZi51cmxfYmFzZSA9IHVybF9iYXNlCiAgICAgICAgIHNlbGYuY29u
dGVudHMgPSBjb250ZW50cwpAQCAtMjQwLDkgKzIzNSw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2Jq
ZWN0KToKIAogICAgICAgICBpZiAiX19jYWNoZWRfcHJvcGVydGllc19fIiBpbiBydjoKICAgICAg
ICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gcnZbIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyJdCi0g
ICAgICAgICAgICBmb3Iga2V5IGluIHJ2LmtleXMoKToKLSAgICAgICAgICAgICAgICBpZiBrZXkg
aW4gY2FjaGVkX3Byb3BlcnRpZXM6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBydltrZXldCisg
ICAgICAgICAgICBydiA9IHtrZXk6dmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHJ2
KSBpZiBrZXkgbm90IGluIGNhY2hlZF9wcm9wZXJ0aWVzfQogICAgICAgICAgICAgZGVsIHJ2WyJf
X2NhY2hlZF9wcm9wZXJ0aWVzX18iXQogICAgICAgICByZXR1cm4gcnYKIApAQCAtMjc5LDkgKzI3
MiwxNCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICBmaWxlX29iaiA9
IG9wZW4oc2VsZi5wYXRoLCAncmInKQogICAgICAgICByZXR1cm4gZmlsZV9vYmoKIAorICAgIEBj
YWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcmVsX3BhdGhfcGFydHMoc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgLi4uXQorICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5y
ZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAg
ZGVmIHBhdGgoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVW5pb25bYnl0ZXMsIFRleHRd
CisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2lu
KHNlbGYudGVzdHNfcm9vdCwgc2VsZi5yZWxfcGF0aCkKIAogICAgIEBjYWNoZWRfcHJvcGVydHkK
QEAgLTI5NywxNyArMjk1LDEzIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgIEBj
YWNoZWRfcHJvcGVydHkKICAgICBkZWYgaGFzaChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAt
PiBieXRlcworICAgICAgICAjIHR5cGU6ICgpIC0+IFRleHQKICAgICAgICAgaWYgbm90IHNlbGYu
X2hhc2g6CiAgICAgICAgICAgICB3aXRoIHNlbGYub3BlbigpIGFzIGY6CiAgICAgICAgICAgICAg
ICAgY29udGVudCA9IGYucmVhZCgpCiAKICAgICAgICAgICAgIGRhdGEgPSBiIiIuam9pbigoYiJi
bG9iICIsIGIiJWQiICUgbGVuKGNvbnRlbnQpLCBiIlwwIiwgY29udGVudCkpCi0gICAgICAgICAg
ICBoYXNoX3N0ciA9IGhhc2hsaWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSAgIyB0eXBlOiBzdHIK
LSAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNoID0gaGFzaF9z
dHIuZW5jb2RlKCJhc2NpaSIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNl
bGYuX2hhc2ggPSBoYXNoX3N0cgorICAgICAgICAgICAgc2VsZi5faGFzaCA9IHRleHRfdHlwZSho
YXNobGliLnNoYTEoZGF0YSkuaGV4ZGlnZXN0KCkpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2hh
c2gKIApAQCAtMzE2LDE4ICszMTAsMTcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAg
ICAgICBpZiBzZWxmLmRpcl9wYXRoID09ICIiOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAot
ICAgICAgICBwYXJ0cyA9IHNlbGYuZGlyX3BhdGguc3BsaXQob3MucGF0aC5zZXApCisgICAgICAg
IHBhcnRzID0gc2VsZi5yZWxfcGF0aF9wYXJ0cwogCiAgICAgICAgIGlmIChwYXJ0c1swXSBpbiBz
ZWxmLnJvb3RfZGlyX25vbl90ZXN0IG9yCiAgICAgICAgICAgICBhbnkoaXRlbSBpbiBzZWxmLmRp
cl9ub25fdGVzdCBmb3IgaXRlbSBpbiBwYXJ0cykgb3IKLSAgICAgICAgICAgIGFueShwYXJ0c1s6
bGVuKHBhdGgpXSA9PSBsaXN0KHBhdGgpIGZvciBwYXRoIGluIHNlbGYuZGlyX3BhdGhfbm9uX3Rl
c3QpKToKKyAgICAgICAgICAgIGFueShwYXJ0c1s6bGVuKHBhdGgpXSA9PSBwYXRoIGZvciBwYXRo
IGluIHNlbGYuZGlyX3BhdGhfbm9uX3Rlc3QpKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAg
ICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGluX2NvbmZvcm1hbmNlX2NoZWNrZXJfZGly
KHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKLSAgICAgICAgcmV0dXJuIChzZWxm
LmRpcl9wYXRoID09ICJjb25mb3JtYW5jZS1jaGVja2VycyIgb3IKLSAgICAgICAgICAgICAgICBz
ZWxmLmRpcl9wYXRoLnN0YXJ0c3dpdGgoImNvbmZvcm1hbmNlLWNoZWNrZXJzIiArIG9zLnBhdGgu
c2VwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVsX3BhdGhfcGFydHNbMF0gPT0gImNvbmZvcm1h
bmNlLWNoZWNrZXJzIgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG5hbWVfaXNfbm9uX3Rlc3Qo
c2VsZik6CkBAIC0zMzksNiArMzMyLDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPT0gIk1FVEEueW1sIiBvcgogICAgICAgICAgICAg
ICAgIHNlbGYuZmlsZW5hbWUuc3RhcnRzd2l0aCgiLiIpIG9yCiAgICAgICAgICAgICAgICAgc2Vs
Zi5maWxlbmFtZS5lbmRzd2l0aCgiLmhlYWRlcnMiKSBvcgorICAgICAgICAgICAgICAgIHNlbGYu
ZmlsZW5hbWUuZW5kc3dpdGgoIi5pbmkiKSBvcgogICAgICAgICAgICAgICAgIHNlbGYuaW5fbm9u
X3Rlc3RfZGlyKCkpCiAKICAgICBAcHJvcGVydHkKQEAgLTM5NCwxMCArMzg4LDEwIEBAIGNsYXNz
IFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgYmUgYSB3ZWJkcml2ZXIgc3BlYyB0ZXN0IGZp
bGUiIiIKICAgICAgICAgIyB3ZHNwZWMgdGVzdHMgYXJlIGluIHN1YmRpcmVjdG9yaWVzIG9mIC93
ZWJkcml2ZXIgZXhjbHVkaW5nIF9faW5pdF9fLnB5CiAgICAgICAgICMgZmlsZXMuCi0gICAgICAg
IHJlbF9kaXJfdHJlZSA9IHNlbGYucmVsX3BhdGguc3BsaXQob3MucGF0aC5zZXApCi0gICAgICAg
IHJldHVybiAoKChyZWxfZGlyX3RyZWVbMF0gPT0gIndlYmRyaXZlciIgYW5kIGxlbihyZWxfZGly
X3RyZWUpID4gMSkgb3IKLSAgICAgICAgICAgICAgICAgKHJlbF9kaXJfdHJlZVs6Ml0gPT0gWyJp
bmZyYXN0cnVjdHVyZSIsICJ3ZWJkcml2ZXIiXSBhbmQKLSAgICAgICAgICAgICAgICAgIGxlbihy
ZWxfZGlyX3RyZWUpID4gMikpIGFuZAorICAgICAgICByZWxfcGF0aF9wYXJ0cyA9IHNlbGYucmVs
X3BhdGhfcGFydHMKKyAgICAgICAgcmV0dXJuICgoKHJlbF9wYXRoX3BhcnRzWzBdID09ICJ3ZWJk
cml2ZXIiIGFuZCBsZW4ocmVsX3BhdGhfcGFydHMpID4gMSkgb3IKKyAgICAgICAgICAgICAgICAg
KHJlbF9wYXRoX3BhcnRzWzoyXSA9PSAoImluZnJhc3RydWN0dXJlIiwgIndlYmRyaXZlciIpIGFu
ZAorICAgICAgICAgICAgICAgICAgbGVuKHJlbF9wYXRoX3BhcnRzKSA+IDIpKSBhbmQKICAgICAg
ICAgICAgICAgICBzZWxmLmZpbGVuYW1lIG5vdCBpbiAoIl9faW5pdF9fLnB5IiwgImNvbmZ0ZXN0
LnB5IikgYW5kCiAgICAgICAgICAgICAgICAgZm5tYXRjaChzZWxmLmZpbGVuYW1lLCB3ZF9wYXR0
ZXJuKSkKIApAQCAtNDEzLDYgKzQwNywxNSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAogICAgICAgICByZXR1cm4gc2VsZi50eXBlX2ZsYWcg
PT0gImNyYXNoIiBvciAiY3Jhc2h0ZXN0cyIgaW4gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRo
LnNlcCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lX2lzX3RlbnRhdGl2ZShzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgICAgICIiIkNoZWNrIGlmIHRoZSBmaWxl
IG5hbWUgbWF0Y2hlcyB0aGUgY29uZGl0aW9ucyBmb3IgdGhlIGZpbGUgdG8gYmUgYQorICAgICAg
ICB0ZW50YXRpdmUgZmlsZS4KKworICAgICAgICBTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVz
dHMub3JnL3dyaXRpbmctdGVzdHMvZmlsZS1uYW1lcy5odG1sI3Rlc3QtZmVhdHVyZXMiIiIKKyAg
ICAgICAgcmV0dXJuICJ0ZW50YXRpdmUiIGluIHNlbGYubWV0YV9mbGFncworCiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIG1hcmt1cF90eXBlKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IE9w
dGlvbmFsW1RleHRdCkBAIC00NjUsNyArNDY4LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiBzY3JpcHRfbWV0YWRhdGEoc2VsZik6
Ci0gICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbTGlzdFtUdXBsZVtieXRlcywgYnl0ZXNd
XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW1RleHQsIFRleHRd
XV0KICAgICAgICAgaWYgc2VsZi5uYW1lX2lzX3dvcmtlciBvciBzZWxmLm5hbWVfaXNfbXVsdGlf
Z2xvYmFsIG9yIHNlbGYubmFtZV9pc193aW5kb3c6CiAgICAgICAgICAgICByZWdleHAgPSBqc19t
ZXRhX3JlCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lzX3dlYmRyaXZlcjoKQEAgLTQ4Miw3ICs0
ODUsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICIiIlRoZSB0aW1lb3V0
IG9mIGEgdGVzdCBvciByZWZlcmVuY2UgZmlsZS4gImxvbmciIGlmIHRoZSBmaWxlIGhhcyBhbiBl
eHRlbmRlZCB0aW1lb3V0CiAgICAgICAgIG9yIE5vbmUgb3RoZXJ3aXNlIiIiCiAgICAgICAgIGlm
IHNlbGYuc2NyaXB0X21ldGFkYXRhOgotICAgICAgICAgICAgaWYgYW55KG0gPT0gKGIidGltZW91
dCIsIGIibG9uZyIpIGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAg
IGlmIGFueShtID09ICgidGltZW91dCIsICJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0
YWRhdGEpOgogICAgICAgICAgICAgICAgIHJldHVybiAibG9uZyIKIAogICAgICAgICBpZiBzZWxm
LnJvb3QgaXMgTm9uZToKQEAgLTY0NCw4ICs2NDcsOCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVj
dCk6CiAgICAgICAgICAgICBzY3JpcHRfbWV0YWRhdGEgPSBzZWxmLnNjcmlwdF9tZXRhZGF0YQog
ICAgICAgICAgICAgYXNzZXJ0IHNjcmlwdF9tZXRhZGF0YSBpcyBub3QgTm9uZQogICAgICAgICAg
ICAgZm9yIChrZXksIHZhbHVlKSBpbiBzY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICAgICAg
aWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAgICAgICAgICAgICAgICAgIHJ2LmFwcGVuZCh2YWx1
ZS5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJ2YXJpYW50IjoK
KyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgZm9yIGVsZW1lbnQgaW4gc2VsZi52YXJpYW50X25vZGVzOgogICAgICAgICAgICAg
ICAgIGlmICJjb250ZW50IiBpbiBlbGVtZW50LmF0dHJpYjoKQEAgLTY3Nyw2ICs2ODAsMzYgQEAg
Y2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAg
ICAgcmV0dXJuIGJvb2woc2VsZi50ZXN0ZHJpdmVyX25vZGVzKQogCisgICAgQGNhY2hlZF9wcm9w
ZXJ0eQorICAgIGRlZiBxdWljX25vZGVzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IExp
c3RbRWxlbWVudFRyZWUuRWxlbWVudF0KKyAgICAgICAgIiIiTGlzdCBvZiBFbGVtZW50VHJlZSBF
bGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVzIGluIGEgdGVzdCB0aGF0CisgICAgICAgIHNw
ZWNpZnkgd2hldGhlciBpdCBuZWVkcyBRVUlDIHNlcnZlci4iIiIKKyAgICAgICAgYXNzZXJ0IHNl
bGYucm9vdCBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5yb290LmZpbmRhbGwoIi4v
L3todHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sfW1ldGFbQG5hbWU9J3F1aWMnXSIpCisKKyAg
ICBAY2FjaGVkX3Byb3BlcnR5CisgICAgZGVmIHF1aWMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRo
ZXIgYSB0ZXN0IHJlcXVpcmVzIFFVSUMgc2VydmVyCisKKyAgICAgICAgRGV0ZXJtaW5lZCBieSA8
bWV0YT4gZWxlbWVudHMgKGBxdWljX25vZGVzKClgKSBhbmQgIi8vIE1FVEEiIGNvbW1lbnRzCisg
ICAgICAgIChgc2NyaXB0X21ldGFkYXRhKClgKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuc2NyaXB0X21ldGFkYXRhOgorICAgICAgICAgICAgaWYgYW55KG0gPT0gKCJxdWljIiwgInRy
dWUiKSBmb3IgbSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0YSk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKKworICAgICAgICBpZiBzZWxmLnJvb3QgaXMgTm9uZToKKyAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICAgICAgaWYgc2VsZi5xdWljX25vZGVzOgorICAgICAgICAgICAgcXVp
Y19zdHIgPSBzZWxmLnF1aWNfbm9kZXNbMF0uYXR0cmliLmdldCgiY29udGVudCIsICJmYWxzZSIp
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgIGlmIHF1aWNfc3RyLmxvd2VyKCkgPT0gInRydWUi
OgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKwog
ICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgcmVmdGVzdF9ub2RlcyhzZWxmKToKICAgICAg
ICAgIyB0eXBlOiAoKSAtPiBMaXN0W0VsZW1lbnRUcmVlLkVsZW1lbnRdCkBAIC03ODQsNiArODE3
LDggQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICBpZiBzZWxmLml0ZW1zX2Nh
Y2hlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXRlbXNfY2FjaGUKIAorICAgICAgICBkcm9w
X2NhY2hlZCA9ICJyb290IiBub3QgaW4gc2VsZi5fX2RpY3RfXworCiAgICAgICAgIGlmIHNlbGYu
bmFtZV9pc19ub25fdGVzdDoKICAgICAgICAgICAgIHJ2ID0gInN1cHBvcnQiLCBbCiAgICAgICAg
ICAgICAgICAgU3VwcG9ydEZpbGUoCkBAIC04MzUsMTEgKzg3MCwxMSBAQCBjbGFzcyBTb3VyY2VG
aWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgKV0KIAogICAgICAgICBlbGlmIHNlbGYubmFt
ZV9pc19tdWx0aV9nbG9iYWw6Ci0gICAgICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAg
ICBnbG9iYWxzID0gdSIiCiAgICAgICAgICAgICBzY3JpcHRfbWV0YWRhdGEgPSBzZWxmLnNjcmlw
dF9tZXRhZGF0YQogICAgICAgICAgICAgYXNzZXJ0IHNjcmlwdF9tZXRhZGF0YSBpcyBub3QgTm9u
ZQogICAgICAgICAgICAgZm9yIChrZXksIHZhbHVlKSBpbiBzY3JpcHRfbWV0YWRhdGE6Ci0gICAg
ICAgICAgICAgICAgaWYga2V5ID09IGIiZ2xvYmFsIjoKKyAgICAgICAgICAgICAgICBpZiBrZXkg
PT0gImdsb2JhbCI6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHMgPSB2YWx1ZQogICAgICAg
ICAgICAgICAgICAgICBicmVhawogCkBAIC04NTEsNiArODg2LDcgQEAgY2xhc3MgU291cmNlRmls
ZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBnbG9iYWxfdmFyaWFudF91cmwoc2VsZi5y
ZWxfdXJsLCBzdWZmaXgpICsgdmFyaWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1z
ZWxmLnRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgIGpzc2hlbGw9anNzaGVsbCwKKyAgICAg
ICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAgICAgIHNjcmlw
dF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICAgICBmb3IgKHN1ZmZpeCwganNzaGVsbCkgaW4gc29ydGVkKGdsb2JhbF9zdWZmaXhl
cyhnbG9iYWxzKSkKQEAgLTg2Nyw2ICs5MDMsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAg
IHRlc3RfdXJsICsgdmFyaWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRp
bWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAg
ICAgICAgICBzY3JpcHRfbWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRz
CkBAIC04ODIsNiArOTE5LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAg
ICAgICAgICAgICBzZWxmLnVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3VybCAr
IHZhcmlhbnQsCiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAorICAg
ICAgICAgICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2Ny
aXB0X21ldGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAg
ICAgICAgICAgICAgIGZvciB2YXJpYW50IGluIHNlbGYudGVzdF92YXJpYW50cwpAQCAtOTE4LDE5
ICs5NTYsMjEgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLnVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgICB1cmwsCiAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBxdWljPXNl
bGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAg
ICAgICAgICAgICAgICAgICBzY3JpcHRfbWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAg
ICAgICAgICAgICAgICApKQogCiAgICAgICAgIGVsaWYgc2VsZi5jb250ZW50X2lzX3JlZl9ub2Rl
OgotICAgICAgICAgICAgcnYgPSBSZWZUZXN0Tm9kZS5pdGVtX3R5cGUsIFsKLSAgICAgICAgICAg
ICAgICBSZWZUZXN0Tm9kZSgKKyAgICAgICAgICAgIHJ2ID0gUmVmVGVzdC5pdGVtX3R5cGUsIFsK
KyAgICAgICAgICAgICAgICBSZWZUZXN0KAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rz
X3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgsCiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3VybCwK
ICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcz1zZWxmLnJlZmVyZW5jZXMsCiAgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBx
dWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRfc2l6ZT1zZWxmLnZp
ZXdwb3J0X3NpemUsCiAgICAgICAgICAgICAgICAgICAgIGRwaT1zZWxmLmRwaSwKICAgICAgICAg
ICAgICAgICAgICAgZnV6enk9c2VsZi5mdXp6eQpAQCAtOTU2LDQgKzk5NiwxMSBAQCBjbGFzcyBT
b3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5pdGVtc19jYWNoZSA9IHJ2CiAKKyAg
ICAgICAgaWYgZHJvcF9jYWNoZWQgYW5kICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHNlbGYu
X19kaWN0X186CisgICAgICAgICAgICBjYWNoZWRfcHJvcGVydGllcyA9IHNlbGYuX19kaWN0X19b
Il9fY2FjaGVkX3Byb3BlcnRpZXNfXyJdCisgICAgICAgICAgICBmb3IgcHJvcCBpbiBjYWNoZWRf
cHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBpZiBwcm9wIGluIHNlbGYuX19kaWN0X186Cisg
ICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9fZGljdF9fW3Byb3BdCisgICAgICAgICAgICBk
ZWwgc2VsZi5fX2RpY3RfX1siX19jYWNoZWRfcHJvcGVydGllc19fIl0KKwogICAgICAgICByZXR1
cm4gcnYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9tYW5pZmVzdC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVz
dF9tYW5pZmVzdC5weQppbmRleCA3MzNjYWZkY2JlOWRjOWNlMDdjYjNlODQzYmQ5NTZkMDJjNmZk
MmZlLi5iNjE4ZDc1ZWMxZWQyZTk1NWUyN2Y3NjM0NDZjMWIwZmMzOTg3ZjFjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5
CkBAIC01LDcgKzUsNyBAQCBpbXBvcnQgbW9jawogaW1wb3J0IGh5cG90aGVzaXMgYXMgaAogaW1w
b3J0IGh5cG90aGVzaXMuc3RyYXRlZ2llcyBhcyBocwogCi1pbXBvcnQgcHl0ZXN0Citmcm9tIHNp
eCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZyb20gLi4gaW1wb3J0IG1hbmlmZXN0LCBzb3VyY2VmaWxl
LCBpdGVtLCB1dGlscwogCkBAIC0xOCw3ICsxOCwxMCBAQCBpZiBNWVBZOgogCiBkZWYgU291cmNl
RmlsZVdpdGhUZXN0KHBhdGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogICAgICMgdHlwZTogKHN0
ciwgc3RyLCBUeXBlW2l0ZW0uTWFuaWZlc3RJdGVtXSwgKipBbnkpIC0+IHNvdXJjZWZpbGUuU291
cmNlRmlsZQotICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgaGFzaD1oYXNoKQorICAg
IHJlbF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgcyA9
IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLAorICAgICAgICAgICAgICAgICAgcmVsX3BhdGhfcGFy
dHM9cmVsX3BhdGhfcGFydHMsCisgICAgICAgICAgICAgICAgICBoYXNoPWhhc2gpCiAgICAgaWYg
Y2xzID09IGl0ZW0uU3VwcG9ydEZpbGU6CiAgICAgICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBw
YXRoKQogICAgIGVsc2U6CkBAIC0yOSw1MSArMzIsODMgQEAgZGVmIFNvdXJjZUZpbGVXaXRoVGVz
dChwYXRoLCBoYXNoLCBjbHMsICoqa3dhcmdzKToKIAogZGVmIFNvdXJjZUZpbGVXaXRoVGVzdHMo
cGF0aCwgaGFzaCwgY2xzLCB2YXJpYW50cyk6CiAgICAgIyB0eXBlOiAoc3RyLCBzdHIsIFR5cGVb
aXRlbS5VUkxNYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmlsZS5Tb3VyY2VGaWxlCi0g
ICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcmVsX3BhdGhf
cGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICBzID0gbW9jay5Nb2Nr
KHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxfcGF0aF9wYXJ0cz1yZWxfcGF0
aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkKICAgICB0ZXN0cyA9IFtjbHMo
Ii9mb29iYXIiLCBwYXRoLCAiLyIsIGl0ZW1bMF0sICoqaXRlbVsxXSkgZm9yIGl0ZW0gaW4gdmFy
aWFudHNdCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNs
cy5pdGVtX3R5cGUsIHRlc3RzKSkKICAgICByZXR1cm4gcyAgIyB0eXBlOiBpZ25vcmUKIAogCi1A
aHMuY29tcG9zaXRlCi1kZWYgcmVsX2Rpcl9maWxlX3BhdGgoZHJhdyk6Ci0gICAgbGVuZ3RoID0g
ZHJhdyhocy5pbnRlZ2VycyhtaW5fdmFsdWU9MSwgbWF4X3ZhbHVlPTIwKSkKLSAgICBpZiBsZW5n
dGggPT0gMToKLSAgICAgICAgcmV0dXJuICJhIgotICAgIGVsc2U6Ci0gICAgICAgIHJlbWFpbmlu
ZyA9IGxlbmd0aCAtIDIKLSAgICAgICAgYWxwaGFiZXQgPSAiYSIgKyBvcy5wYXRoLnNlcAotICAg
ICAgICBtaWQgPSBkcmF3KGhzLnRleHQoYWxwaGFiZXQ9YWxwaGFiZXQsIG1pbl9zaXplPXJlbWFp
bmluZywgbWF4X3NpemU9cmVtYWluaW5nKSkKLSAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybWNh
c2UoImEiICsgbWlkICsgImEiKQotCi0KIEBocy5jb21wb3NpdGUKIGRlZiBzb3VyY2VmaWxlX3N0
cmF0ZWd5KGRyYXcpOgotICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwg
aXRlbS5SZWZUZXN0Tm9kZSwKKyAgICBpdGVtX2NsYXNzZXMgPSBbaXRlbS5UZXN0aGFybmVzc1Rl
c3QsIGl0ZW0uUmVmVGVzdCwKICAgICAgICAgICAgICAgICAgICAgaXRlbS5NYW51YWxUZXN0LCBp
dGVtLldlYkRyaXZlclNwZWNUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLkNvbmZvcm1h
bmNlQ2hlY2tlclRlc3QsIGl0ZW0uU3VwcG9ydEZpbGVdCiAgICAgY2xzID0gZHJhdyhocy5zYW1w
bGVkX2Zyb20oaXRlbV9jbGFzc2VzKSkKIAotICAgIHBhdGggPSBkcmF3KHJlbF9kaXJfZmlsZV9w
YXRoKCkpCi0gICAgaGFzaCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD0iMDEyMzQ1Njc4OWFiY2Rl
ZiIsIG1pbl9zaXplPTQwLCBtYXhfc2l6ZT00MCkpCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0
aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcGF0aCA9IHUiYSIKKyAgICByZWxfcGF0aF9wYXJ0cyA9
IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIGhhc2ggPSBkcmF3KGhzLnRleHQo
YWxwaGFiZXQ9dSIwMTIzNDU2Nzg5YWJjZGVmIiwgbWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkK
KyAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxf
cGF0aF9wYXJ0cz1yZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkK
IAotICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3ROb2RlOgotICAgICAgICByZWZfcGF0aCA9IGRy
YXcocmVsX2Rpcl9maWxlX3BhdGgoKSkKLSAgICAgICAgaC5hc3N1bWUocGF0aCAhPSByZWZfcGF0
aCkKKyAgICBpZiBjbHMgaXMgaXRlbS5SZWZUZXN0OgorICAgICAgICByZWZfcGF0aCA9IHUiYiIK
ICAgICAgICAgcmVmX2VxID0gZHJhdyhocy5zYW1wbGVkX2Zyb20oWyI9PSIsICIhPSJdKSkKICAg
ICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgsICIvIiwgdXRpbHMuZnJvbV9vc19wYXRo
KHBhdGgpLCByZWZlcmVuY2VzPVsodXRpbHMuZnJvbV9vc19wYXRoKHJlZl9wYXRoKSwgcmVmX2Vx
KV0pCiAgICAgZWxpZiBjbHMgaXMgaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNs
cygiL2Zvb2JhciIsIHBhdGgpCiAgICAgZWxzZToKLSAgICAgICAgdGVzdCA9IGNscygiL2Zvb2Jh
ciIsIHBhdGgsICIvIiwgdXRpbHMuZnJvbV9vc19wYXRoKHBhdGgpKQorICAgICAgICB0ZXN0ID0g
Y2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCAiZm9vYmFyIikKIAogICAgIHMubWFuaWZlc3RfaXRl
bXMgPSBtb2NrLk1vY2socmV0dXJuX3ZhbHVlPShjbHMuaXRlbV90eXBlLCBbdGVzdF0pKQogICAg
IHJldHVybiBzCiAKIAotQGguZ2l2ZW4oaHMubGlzdHMoc291cmNlZmlsZV9zdHJhdGVneSgpLAot
ICAgICAgICAgICAgICAgICAgbWluX3NpemU9MSwgbWF4X3NpemU9MTAwMCwgdW5pcXVlX2J5PWxh
bWJkYSB4OiB4LnJlbF9wYXRoKSkKK0Bocy5jb21wb3NpdGUKK2RlZiBtYW5pZmVzdF90cmVlKGRy
YXcpOgorICAgIG5hbWVzID0gaHMudGV4dChhbHBoYWJldD1ocy5jaGFyYWN0ZXJzKGJsYWNrbGlz
dF9jaGFyYWN0ZXJzPXUiXDAvXFw6KlwiPzw+fCIpLCBtaW5fc2l6ZT0xKQorICAgIHRyZWUgPSBo
cy5yZWN1cnNpdmUoc291cmNlZmlsZV9zdHJhdGVneSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbGFtYmRhIGNoaWxkcmVuOiBocy5kaWN0aW9uYXJpZXMobmFtZXMsIGNoaWxkcmVuLCBtaW5f
c2l6ZT0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZWF2ZXM9MTApCisKKyAgICBn
ZW5lcmF0ZWRfcm9vdCA9IGRyYXcodHJlZSkKKyAgICBoLmFzc3VtZShpc2luc3RhbmNlKGdlbmVy
YXRlZF9yb290LCBkaWN0KSkKKworICAgIHJlZnRlc3RfdXJscyA9IFtdCisgICAgb3V0cHV0ID0g
W10KKyAgICBzdGFjayA9IFsoKGssKSwgdikgZm9yIGssIHYgaW4gaXRlcml0ZW1zKGdlbmVyYXRl
ZF9yb290KV0KKyAgICB3aGlsZSBzdGFjazoKKyAgICAgICAgcGF0aCwgbm9kZSA9IHN0YWNrLnBv
cCgpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6CisgICAgICAgICAgICBzdGFj
ay5leHRlbmQoKHBhdGggKyAoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMobm9kZSkpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWxfcGF0aCA9IG9zLnBhdGguc2VwLmpvaW4ocGF0
aCkKKyAgICAgICAgICAgIG5vZGUucmVsX3BhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgbm9k
ZS5yZWxfcGF0aF9wYXJ0cyA9IHR1cGxlKHBhdGgpCisgICAgICAgICAgICBmb3IgdGVzdF9pdGVt
IGluIG5vZGUubWFuaWZlc3RfaXRlbXMucmV0dXJuX3ZhbHVlWzFdOgorICAgICAgICAgICAgICAg
IHRlc3RfaXRlbS5wYXRoID0gcmVsX3BhdGgKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHRlc3RfaXRlbSwgaXRlbS5SZWZUZXN0KToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVmdGVz
dF91cmxzOgorICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IGhzLnNhbXBs
ZWRfZnJvbShyZWZ0ZXN0X3VybHMpIHwgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlX3VybHMgPSBuYW1lcworICAgICAgICAg
ICAgICAgICAgICByZWZlcmVuY2UgPSBocy50dXBsZXMoaHMuc2FtcGxlZF9mcm9tKFt1Ij09Iiwg
dSIhPSJdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Np
YmxlX3VybHMpCisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgPSBocy5saXN0cyhyZWZl
cmVuY2UsIG1pbl9zaXplPTEsIHVuaXF1ZT1UcnVlKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
X2l0ZW0ucmVmZXJlbmNlcyA9IGRyYXcocmVmZXJlbmNlcykKKyAgICAgICAgICAgICAgICAgICAg
cmVmdGVzdF91cmxzLmFwcGVuZCh0ZXN0X2l0ZW0udXJsKQorICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZChub2RlKQorCisgICAgcmV0dXJuIG91dHB1dAorCisKK0BoLmdpdmVuKG1hbmlmZXN0X3Ry
ZWUoKSkKKyMgRklYTUU6IFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8yMjc1OAorQGguc2V0dGluZ3Moc3VwcHJlc3NfaGVhbHRo
X2NoZWNrPShoLkhlYWx0aENoZWNrLnRvb19zbG93LCkpCiBAaC5leGFtcGxlKFtTb3VyY2VGaWxl
V2l0aFRlc3QoImEiLCAiMCIqNDAsIGl0ZW0uQ29uZm9ybWFuY2VDaGVja2VyVGVzdCldKQogZGVm
IHRlc3RfbWFuaWZlc3RfdG9fanNvbihzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQpA
QCAtODgsMTAgKzEyMywxMSBAQCBkZWYgdGVzdF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIGFz
c2VydCBsb2FkZWQudG9fanNvbigpID09IGpzb25fc3RyCiAKIAotQGguZ2l2ZW4oaHMubGlzdHMo
c291cmNlZmlsZV9zdHJhdGVneSgpLAotICAgICAgICAgICAgICAgICAgbWluX3NpemU9MSwgdW5p
cXVlX2J5PWxhbWJkYSB4OiB4LnJlbF9wYXRoKSkKK0BoLmdpdmVuKG1hbmlmZXN0X3RyZWUoKSkK
KyMgRklYTUU6IFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0L2lzc3Vlcy8yMjc1OAorQGguc2V0dGluZ3Moc3VwcHJlc3NfaGVhbHRoX2NoZWNr
PShoLkhlYWx0aENoZWNrLnRvb19zbG93LCkpCiBAaC5leGFtcGxlKFtTb3VyY2VGaWxlV2l0aFRl
c3QoImEiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KV0pCi1AaC5leGFtcGxlKFtTb3Vy
Y2VGaWxlV2l0aFRlc3QoImEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9
WygiL2FhIiwgIj09IildKV0pCitAaC5leGFtcGxlKFtTb3VyY2VGaWxlV2l0aFRlc3QoImEiLCAi
MCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNlcz1bKCIvYWEiLCAiPT0iKV0pXSkKIGRlZiB0
ZXN0X21hbmlmZXN0X2lkZW1wb3RlbnQocyk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkK
IApAQCAtMTA3LDE5MSArMTQzLDQyIEBAIGRlZiB0ZXN0X21hbmlmZXN0X2lkZW1wb3RlbnQocyk6
CiBkZWYgdGVzdF9tYW5pZmVzdF90b19qc29uX2ZvcndhcmRzbGFzaCgpOgogICAgIG0gPSBtYW5p
ZmVzdC5NYW5pZmVzdCgpCiAKLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhL2IiLCAiMCIq
NDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsocywgVHJ1
ZSldKSBpcyBUcnVlCi0KLSAgICBhc3NlcnQgbS50b19qc29uKCkgPT0gewotICAgICAgICAncGF0
aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgfSwKLSAgICAgICAgJ3ZlcnNp
b24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICdpdGVtcyc6IHsKLSAg
ICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAnYS9iJzogWygnYS9i
Jywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0KLUBweXRlc3QubWFy
ay5za2lwaWYob3Muc2VwICE9ICJcXCIsIHJlYXNvbj0iYmFja3NsYXNoIHBhdGgiKQotZGVmIHRl
c3RfbWFuaWZlc3RfdG9fanNvbl9iYWNrc2xhc2goKToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZl
c3QoKQotCi0gICAgcyA9IFNvdXJjZUZpbGVXaXRoVGVzdCgiYVxcYiIsICIwIio0MCwgaXRlbS5U
ZXN0aGFybmVzc1Rlc3QpCisgICAgcyA9IFNvdXJjZUZpbGVXaXRoVGVzdCgiYSIgKyBvcy5wYXRo
LnNlcCArICJiIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCkKIAogICAgIGFzc2VydCBt
LnVwZGF0ZShbKHMsIFRydWUpXSkgaXMgVHJ1ZQogCiAgICAgYXNzZXJ0IG0udG9fanNvbigpID09
IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2EvYic6ICgnMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICd0ZXN0aGFybmVzcycpCi0gICAgICAgIH0s
Ci0gICAgICAgICd2ZXJzaW9uJzogNywKLSAgICAgICAgJ3VybF9iYXNlJzogJy8nLAotICAgICAg
ICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7Ci0gICAgICAgICAgICAg
ICAgJ2EvYic6IFsoJ2EvYicsIHt9KV0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotCi1kZWYgdGVzdF9tYW5pZmVzdF9mcm9tX2pzb25fYmFja3NsYXNoKCk6Ci0gICAganNvbl9v
YmogPSB7Ci0gICAgICAgICdwYXRocyc6IHsKLSAgICAgICAgICAgICdhXFxiJzogKCcwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAg
ICAgfSwKLSAgICAgICAgJ3ZlcnNpb24nOiA3LAorICAgICAgICAndmVyc2lvbic6IDgsCiAgICAg
ICAgICd1cmxfYmFzZSc6ICcvJywKICAgICAgICAgJ2l0ZW1zJzogewotICAgICAgICAgICAgJ3Rl
c3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhXFxiJzogW1snYS9iJywge31dXQotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzJzogeydhJzogeydiJzogWworICAg
ICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywK
KyAgICAgICAgICAgICAgICAoTm9uZSwge30pCisgICAgICAgICAgICBdfX0sCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgIG1h
bmlmZXN0Lk1hbmlmZXN0LmZyb21fanNvbigiLyIsIGpzb25fb2JqKQogCiAKIGRlZiB0ZXN0X3Jl
ZnRlc3RfY29tcHV0YXRpb25fY2hhaW4oKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQog
Ci0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRl
c3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZp
bGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9
WygiL3Rlc3QzIiwgIj09IildKQorICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIs
ICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9PSIpXSkKKyAg
ICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwg
cmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCiAKICAgICBtLnVwZGF0ZShbKHMxLCBUcnVl
KSwgKHMyLCBUcnVlKV0pCiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0K
ICAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAotICAgIGFzc2VydCBsaXN0
KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3Qy
fSldCi0KLQotZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfYWRkKCk6
Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhU
ZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVz
dDMiLCAiPT0iKV0pCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAg
ICBhc3NlcnQgbS51cGRhdGUoWyhzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICBhc3NlcnQgbGlz
dChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDIucGF0aCwge3Rlc3QyLnRvX1JlZlRlc3QoKX0pXQot
Ci0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRl
c3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9PSIpXSkKLSAgICB0ZXN0MSA9IHMxLm1h
bmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgICMgczIncyBoYXNoIGlzIHVuY2hhbmdlZCwgYnV0
IGl0IGhhcyBnb25lIGZyb20gYSB0ZXN0IHRvIGEgbm9kZQotICAgIGFzc2VydCBtLnVwZGF0ZShb
KHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0pID09
IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0K
LQotZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfcmVtb3ZlKCk6Ci0g
ICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0
KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIi
LCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBp
dGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRl
c3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3Rf
aXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3Qx
LnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJy
ZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgICMgczIncyBoYXNoIGlz
IHVuY2hhbmdlZCwgYnV0IGl0IGhhcyBnb25lIGZyb20gYSBub2RlIHRvIGEgdGVzdAotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgpfSldCi0KLQot
ZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfdGVzdF90eXBlKCk6Ci0g
ICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0
KCJ0ZXN0IiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0LXJl
ZiIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMxLCBUcnVlKV0pIGlzIFRydWUK
LQotICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IGxp
c3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KV0K
LQotICAgICMgdGVzdCBiZWNvbWVzIGEgdGVzdGhhcm5lc3MgdGVzdCAoaGFzaCBjaGFuZ2UgYmVj
YXVzZSB0aGF0IGlzIGRldGVybWluZWQKLSAgICAjIGJhc2VkIG9uIHRoZSBmaWxlIGNvbnRlbnRz
KS4gVGhlIHVwZGF0ZWQgbWFuaWZlc3Qgc2hvdWxkIG5vdCBpbmNsdWRlcyB0aGUKLSAgICAjIG9s
ZCByZWZ0ZXN0LgotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0IiwgIjEiKjQwLCBp
dGVtLlRlc3RoYXJuZXNzVGVzdCkKLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMiwgVHJ1ZSldKSBp
cyBUcnVlCi0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFz
c2VydCBsaXN0KG0pID09IFsoInRlc3RoYXJuZXNzIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0K
LQotZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfbm9kZV9jaGFuZ2Uo
KToKLSAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0
aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90
ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIq
NDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0g
ICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0g
ICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5p
ZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0Iiwg
dGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAg
ICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgI3Rlc3QyIGNo
YW5nZXMgdG8gc3VwcG9ydCB0eXBlCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3Qy
IiwgIjEiKjQwLCBpdGVtLlN1cHBvcnRGaWxlKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotICAgIHRlc3QzID0gczIubWFuaWZlc3RfaXRl
bXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBh
dGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJzdXBw
b3J0IiwgdGVzdDMucGF0aCwge3Rlc3QzfSldCi0KLQotZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRh
dGlvbl9jaGFpbl91cGRhdGVfbm9kZV9jaGFuZ2VfcGFydGlhbCgpOgotICAgIG0gPSBtYW5pZmVz
dC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIq
NDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAg
IHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9k
ZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCi0KLSAgICBhc3NlcnQgbS51cGRhdGUo
WyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0ZXN0MSA9IHMxLm1hbmlm
ZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0K
LQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEu
dG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwg
dGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVz
dDIiLCAiMSIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09
IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEucmVsX3BhdGgsIEZhbHNlKSwgKHMyLCBU
cnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0
MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCisgICAgYXNzZXJ0IGxpc3QobSkg
PT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KIAogCiBkZWYgdGVzdF9pdGVy
cGF0aCgpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAgICBzb3VyY2VzID0gW1Nv
dXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVy
ZW5jZXM9WygiL3Rlc3QxLXJlZiIsICI9PSIpXSksCisgICAgc291cmNlcyA9IFtTb3VyY2VGaWxl
V2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rl
c3QxLXJlZiIsICI9PSIpXSksCiAgICAgICAgICAgICAgICBTb3VyY2VGaWxlV2l0aFRlc3RzKCJ0
ZXN0MiIsICIxIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QsIFsoInRlc3QyLTEuaHRtbCIsIHt9
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgidGVzdDItMi5odG1sIiwge30pXSksCiAgICAgICAgICAg
ICAgICBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QzIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNz
VGVzdCldCkBAIC0zMDIsMjQgKzE4OSw2IEBAIGRlZiB0ZXN0X2l0ZXJwYXRoKCk6CiAgICAgYXNz
ZXJ0IHNldChtLml0ZXJwYXRoKCJtaXNzaW5nIikpID09IHNldCgpCiAKIAotZGVmIHRlc3RfcmVm
dGVzdF9ub2RlX2J5X3VybCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBz
MSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUs
IHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhU
ZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVz
dDMiLCAiPT0iKV0pCi0KLSAgICBtLnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pCi0K
LSAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1h
bmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBtLnJlZnRlc3Rfbm9kZXNfYnlfdXJs
ID09IHsiL3Rlc3QxIjogdGVzdDEudG9fUmVmVGVzdCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Rlc3QyIjogdGVzdDJ9Ci0gICAgbS5fcmVmdGVzdF9ub2Rlc19i
eV91cmwgPSBOb25lCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rlc19ieV91cmwgPT0geyIvdGVz
dDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLQotCiBkZWYgdGVzdF9ub191cGRhdGUoKToKICAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCkBAIC0zNTQsOSArMjIzLDcgQEAgZGVmIHRlc3Rfbm9f
dXBkYXRlX2RlbGV0ZSgpOgogCiAgICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBd
CiAKLSAgICBzMV8xID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIxIio0MCwgaXRlbS5N
YW51YWxUZXN0KQotCi0gICAgbS51cGRhdGUoWyhzMV8xLnJlbF9wYXRoLCBGYWxzZSldKQorICAg
IG0udXBkYXRlKFsoczEucmVsX3BhdGgsIEZhbHNlKV0pCiAKICAgICBhc3NlcnQgbGlzdChtKSA9
PSBbKCJ0ZXN0aGFybmVzcyIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pXQogCkBAIC0zOTQsOSArMjYx
LDEwIEBAIGRlZiB0ZXN0X3VwZGF0ZV9mcm9tX2pzb25fbW9kaWZpZWQoKToKICAgICBtLnVwZGF0
ZShbKHMyLCBUcnVlKV0pCiAgICAganNvbl9zdHIgPSBtLnRvX2pzb24oKQogICAgIGFzc2VydCBq
c29uX3N0ciA9PSB7Ci0gICAgICAgICdpdGVtcyc6IHsndGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzog
WygndGVzdDEnLCB7InRpbWVvdXQiOiAibG9uZyJ9KV19fSwKLSAgICAgICAgJ3BhdGhzJzogeyd0
ZXN0MSc6ICgnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzJyl9LAorICAgICAgICAnaXRlbXMn
OiB7J3Rlc3RoYXJuZXNzJzogeyd0ZXN0MSc6IFsKKyAgICAgICAgICAgICIxIio0MCwKKyAgICAg
ICAgICAgIChOb25lLCB7J3RpbWVvdXQnOiAnbG9uZyd9KQorICAgICAgICBdfX0sCiAgICAgICAg
ICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ3ZlcnNpb24nOiA3CisgICAgICAgICd2ZXJzaW9u
JzogOAogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90
ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkKaW5kZXggMGE3YTFjYTBiNDFhOWMxYjk1ZmNlYTMwOTU0
Y2VmZjRiY2M3NGFkOC4uOGIwZmI5NDRlYTU2NzRhN2QyMWI4ZGRhYWM4OTA4NTY0ZDQ0NDFiYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0
X3NvdXJjZWZpbGUucHkKQEAgLTYsNiArNiw3IEBAIGZyb20gc2l4IGltcG9ydCBCeXRlc0lPCiBm
cm9tIC4uLmxpbnQubGludCBpbXBvcnQgY2hlY2tfZ2xvYmFsX21ldGFkYXRhCiBmcm9tIC4uc291
cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZSwgcmVhZF9zY3JpcHRfbWV0YWRhdGEsIGpzX21ldGFf
cmUsIHB5dGhvbl9tZXRhX3JlCiAKKwogZGVmIGNyZWF0ZShmaWxlbmFtZSwgY29udGVudHM9YiIi
KToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb250ZW50cywgYnl0ZXMpCiAgICAgcmV0dXJuIFNv
dXJjZUZpbGUoIi8iLCBmaWxlbmFtZSwgIi8iLCBjb250ZW50cz1jb250ZW50cykKQEAgLTM2LDYg
KzM3LDcgQEAgZGVmIGl0ZW1zKHMpOgogICAgICJmb28vcmVzb3VyY2VzL3Rlc3QuaHRtbCIsCiAg
ICAgImZvby9zdXBwb3J0L3Rlc3QuaHRtbCIsCiAgICAgImZvby9mb28tbWFudWFsLmh0bWwuaGVh
ZGVycyIsCisgICAgImNyYXNodGVzdHMvZm9vLmh0bWwuaW5pIiwKICAgICAiY3NzL2NvbW1vbi90
ZXN0Lmh0bWwiLAogICAgICJjc3MvQ1NTMi9hcmNoaXZlL3Rlc3QuaHRtbCIsCiBdKQpAQCAtMTA2
LDggKzEwOCw4IEBAIGRlZiB0ZXN0X25hbWVfaXNfdmlzdWFsKHJlbF9wYXRoKToKICAgICAiY3Nz
MjEvZmxvYXRzL2Zsb2F0cy1wbGFjZW1lbnQtdmVydGljYWwtMDA0LXJlZjIueGh0IiwKICAgICAi
Y3NzMjEvYm94L3J0bC1saW5lYnJlYWstbm90cmVmMS54aHQiLAogICAgICJjc3MyMS9ib3gvcnRs
LWxpbmVicmVhay1ub3RyZWYyLnhodCIsCi0gICAgIjJkY29udGV4dC9kcmF3aW5nLWltYWdlcy10
by10aGUtY2FudmFzL2RyYXdpbWFnZV9odG1sX2ltYWdlXzVfcmVmLmh0bWwiLAotICAgICIyZGNv
bnRleHQvbGluZS1zdHlsZXMvbGluZXRvX3JlZi5odG1sIiwKKyAgICAiaHRtbC9jYW52YXMvZWxl
bWVudC9kcmF3aW5nLWltYWdlcy10by10aGUtY2FudmFzL2RyYXdpbWFnZV9odG1sX2ltYWdlXzVf
cmVmLmh0bWwiLAorICAgICJodG1sL2NhbnZhcy9lbGVtZW50L2xpbmUtc3R5bGVzL2xpbmV0b19y
ZWYuaHRtbCIsCiAgICAgImh0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy90aGUt
ZmllbGRzZXQtZWxlbWVudC0wL3JlZi5odG1sIgogXSkKIGRlZiB0ZXN0X25hbWVfaXNfcmVmZXJl
bmNlKHJlbF9wYXRoKToKQEAgLTEyMCw2ICsxMjIsMTQgQEAgZGVmIHRlc3RfbmFtZV9pc19yZWZl
cmVuY2UocmVsX3BhdGgpOgogICAgIGFzc2VydCBpdGVtcyhzKSA9PSBbXQogCiAKK2RlZiB0ZXN0
X25hbWVfaXNfdGVudGF0aXZlKCk6CisgICAgcyA9IGNyZWF0ZSgiY3NzL2Nzcy11aS9hcHBlYXJh
bmNlLXJldmVydC0wMDEudGVudGF0aXZlLmh0bWwiKQorICAgIGFzc2VydCBzLm5hbWVfaXNfdGVu
dGF0aXZlCisKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVpL2FwcGVhcmFuY2UtcmV2ZXJ0LTAw
MS5odG1sIikKKyAgICBhc3NlcnQgbm90IHMubmFtZV9pc190ZW50YXRpdmUKKworCiBkZWYgdGVz
dF93b3JrZXIoKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2VyLmpzIikKICAgICBh
c3NlcnQgbm90IHMubmFtZV9pc19ub25fdGVzdApAQCAtMTQzLDYgKzE1Myw4IEBAIGRlZiB0ZXN0
X3dvcmtlcigpOgogICAgIGZvciBpdGVtLCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxz
KToKICAgICAgICAgYXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50
aW1lb3V0IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCisKIAogZGVm
IHRlc3Rfd2luZG93KCk6CiAgICAgcyA9IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIpCkBA
IC0xNjcsNiArMTc5LDcgQEAgZGVmIHRlc3Rfd2luZG93KCk6CiAgICAgZm9yIGl0ZW0sIHVybCBp
biB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0g
dXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQg
aXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVzdF93b3JrZXJfbG9uZ190aW1lb3V0KCk6CkBA
IC0xNzUsNyArMTg4LDcgQEAgaW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cycpCiB0ZXN0KCkiIiIKIAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0
YShCeXRlc0lPKGNvbnRlbnRzKSwganNfbWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09
IFsoYiJ0aW1lb3V0IiwgYiJsb25nIildCisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVv
dXQiLCAibG9uZyIpXQogCiAgICAgcyA9IGNyZWF0ZSgiaHRtbC90ZXN0Lndvcmtlci5qcyIsIGNv
bnRlbnRzPWNvbnRlbnRzKQogICAgIGFzc2VydCBzLm5hbWVfaXNfd29ya2VyCkBAIC0xOTIsNyAr
MjA1LDcgQEAgZGVmIHRlc3Rfd2luZG93X2xvbmdfdGltZW91dCgpOgogdGVzdCgpIiIiCiAKICAg
ICBtZXRhZGF0YSA9IGxpc3QocmVhZF9zY3JpcHRfbWV0YWRhdGEoQnl0ZXNJTyhjb250ZW50cyks
IGpzX21ldGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9u
ZyIpXQorICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAg
IHMgPSBjcmVhdGUoImh0bWwvdGVzdC53aW5kb3cuanMiLCBjb250ZW50cz1jb250ZW50cykKICAg
ICBhc3NlcnQgcy5uYW1lX2lzX3dpbmRvdwpAQCAtMjMyLDYgKzI0NSw3IEBAIHRlc3QoKSIiIgog
ICAgIGZvciBpdGVtLCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAg
YXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5v
bmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3Rfd2luZG93
X3dpdGhfdmFyaWFudHMoKToKQEAgLTI2Miw2ICsyNzYsNyBAQCB0ZXN0KCkiIiIKICAgICBmb3Ig
aXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBp
dGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAg
ICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3B5dGhvbl9sb25nX3Rp
bWVvdXQoKToKQEAgLTI3MSw3ICsyODYsNyBAQCBkZWYgdGVzdF9weXRob25fbG9uZ190aW1lb3V0
KCk6CiAKICAgICBtZXRhZGF0YSA9IGxpc3QocmVhZF9zY3JpcHRfbWV0YWRhdGEoQnl0ZXNJTyhj
b250ZW50cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhv
bl9tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmci
KV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25nIildCiAKICAgICBz
ID0gY3JlYXRlKCJ3ZWJkcml2ZXIvdGVzdC5weSIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAgIGFz
c2VydCBzLm5hbWVfaXNfd2ViZHJpdmVyCkBAIC0zMDYsNiArMzIxLDcgQEAgZGVmIHRlc3RfbXVs
dGlfZ2xvYmFsKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3Vy
bHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfbG9uZ190aW1lb3V0KCk6CkBAIC0zMTQsNyArMzMwLDcgQEAg
aW1wb3J0U2NyaXB0cygnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcycpCiB0ZXN0KCkiIiIKIAog
ICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRlbnRz
KSwganNfbWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0IiwgYiJs
b25nIildCisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIpXQogCiAg
ICAgcyA9IGNyZWF0ZSgiaHRtbC90ZXN0LmFueS5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAg
IGFzc2VydCBzLm5hbWVfaXNfbXVsdGlfZ2xvYmFsCkBAIC0zMjcsMjUgKzM0MywxMCBAQCB0ZXN0
KCkiIiIKIAogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwot
ICAgIChiIiIsIHsiZGVkaWNhdGVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAoYiJkZWZhdWx0
IiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiIiFkZWZhdWx0Iiwge30p
LAotICAgIChiIiFkZWZhdWx0LHdpbmRvdyIsIHsid2luZG93In0pLAotICAgIChiIndpbmRvdywh
ZGVmYXVsdCIsIHt9KSwKLSAgICAoYiIhZGVmYXVsdCxkZWRpY2F0ZWR3b3JrZXIiLCB7ImRlZGlj
YXRlZHdvcmtlciJ9KSwKLSAgICAoYiJkZWRpY2F0ZWR3b3JrZXIsIWRlZmF1bHQiLCB7fSksCi0g
ICAgKGIiIWRlZmF1bHQsd29ya2VyIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtl
ciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAgKGIid29ya2VyLCFkZWZhdWx0IiwgeyJzZXJ2aWNl
d29ya2VyIiwgInNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyIiwgeyJ3
aW5kb3cifSksCi0gICAgKGIiIXdvcmtlciIsIHsid2luZG93In0pLAotICAgIChiIiF3aW5kb3ci
LCB7ImRlZGljYXRlZHdvcmtlciJ9KSwKLSAgICAoYiIhd2luZG93LHdvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIndv
cmtlciwhZGVkaWNhdGVkd29ya2VyIiwgeyJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZGljYXRlZHdvcmtlcix3b3JrZXIiLCB7ImRlZGljYXRl
ZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSksCi0g
ICAgKGIid29ya2VyLCFzaGFyZWR3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNl
d29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAoYiIhc2hhcmVkd29ya2VyLHdvcmtlciIsIHsiZGVk
aWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9
KSwKLSAgICAoYiJzaGFyZWR3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzaGFyZWR3b3Jr
ZXIiLCAid2luZG93In0pLAotICAgIChiInNoYXJlZHdvcmtlcixzZXJ2aWNld29ya2VyIiwgeyJk
ZWRpY2F0ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93
In0pLAorICAgIChiIndpbmRvdyIsIHsid2luZG93In0pLAorICAgIChiInNoYXJlZHdvcmtlciIs
IHsic2hhcmVkd29ya2VyIn0pLAorICAgIChiInNoYXJlZHdvcmtlcixzZXJ2aWNld29ya2VyIiwg
eyJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciJ9KSwKKyAgICAoYiJ3b3JrZXIiLCB7ImRl
ZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciJ9KSwKIF0pCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF9jdXN0b21fZ2xvYmFscyhpbnB1dCwgZXhwZWN0ZWQp
OgogICAgIGNvbnRlbnRzID0gYiIiIi8vIE1FVEE6IGdsb2JhbD0lcwpAQCAtMzgwLDEwICszODEs
MTEgQEAgdGVzdCgpIiIiICUgaW5wdXQKICAgICAgICAgYXNzZXJ0IGl0ZW0udXJsID09IHVybAog
ICAgICAgICBhc3NlcnQgaXRlbS5qc3NoZWxsIGlzIEZhbHNlCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF9qc3NoZWxsX2dsb2JhbHMoKToKLSAgICBjb250ZW50
cyA9IGIiIiIvLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorICAgIGNvbnRlbnRzID0gYiIiIi8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIHRlc3QoKSIiIgogCiAg
ICAgcyA9IGNyZWF0ZSgiaHRtbC90ZXN0LmFueS5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpAQCAt
NDEwLDYgKzQxMiw3IEBAIHRlc3QoKSIiIgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJs
CiAgICAgICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgPT0ganNzaGVsbAogICAgICAgICBhc3NlcnQg
aXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAK
IAogZGVmIHRlc3RfbXVsdGlfZ2xvYmFsX3dpdGhfdmFyaWFudHMoKToKQEAgLTQ0OCwxNyArNDUx
LDE4IEBAIHRlc3QoKSIiIgogICAgIGZvciBpdGVtLCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3Rl
ZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0udXJsID09IHVybAogICAgICAgICBhc3NlcnQg
aXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAK
IAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpbnB1dCxleHBlY3RlZCIsIFsKLSAgICAoYiIi
Ii8vTUVUQTogZm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8g
TUVUQTogZm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8gIE1F
VEE6IGZvbz1iYXJcbiIiIiwgWyhiImZvbyIsIGIiYmFyIildKSwKKyAgICAoYiIiIi8vTUVUQTog
Zm9vPWJhclxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1i
YXJcbiIiIiwgWygiZm9vIiwgImJhciIpXSksCisgICAgKGIiIiIvLyAgTUVUQTogZm9vPWJhclxu
IiIiLCBbKCJmb28iLCAiYmFyIildKSwKICAgICAoYiIiIlxuLy8gTUVUQTogZm9vPWJhclxuIiIi
LCBbXSksCiAgICAgKGIiIiIgLy8gTUVUQTogZm9vPWJhclxuIiIiLCBbXSksCi0gICAgKGIiIiIv
LyBNRVRBOiBmb289YmFyXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIi
KSwgKGIiYmF6IiwgYiJxdXV4IildKSwKLSAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcblxuLy8g
TUVUQTogYmF6PXF1dXhcbiIiIiwgWyhiImZvbyIsIGIiYmFyIildKSwKLSAgICAoYiIiIi8vIE1F
VEE6IGZvbz1iYXJcbi8vIFN0YXJ0IG9mIHRoZSB0ZXN0XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIi
LCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuLy8gTUVU
QTogYmF6PXF1dXhcbiIiIiwgWygiZm9vIiwgImJhciIpLCAoImJheiIsICJxdXV4IildKSwKKyAg
ICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcblxuLy8gTUVUQTogYmF6PXF1dXhcbiIiIiwgWygiZm9v
IiwgImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBTdGFydCBvZiB0aGUg
dGVzdFxuLy8gTUVUQTogYmF6PXF1dXhcbiIiIiwgWygiZm9vIiwgImJhciIpXSksCiAgICAgKGIi
IiIvLyBNRVRBOlxuIiIiLCBbXSksCiAgICAgKGIiIiIvLyBNRVRBOiBmb29iYXJcbiIiIiwgW10p
LAogXSkKQEAgLTY1Nyw3ICs2NjEsMzYgQEAgZGVmIHRlc3RfcmVsYXRpdmVfdGVzdGRyaXZlcihl
eHQpOgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZXh0IiwgWyJodG0iLCAiaHRtbCJd
KQotZGVmIHRlc3RfcmVmdGVzdF9ub2RlKGV4dCk6CitkZWYgdGVzdF9xdWljX2h0bWwoZXh0KToK
KyAgICBmaWxlbmFtZSA9ICJodG1sL3Rlc3QuIiArIGV4dAorCisgICAgY29udGVudCA9IGInPG1l
dGEgbmFtZT0icXVpYyIgY29udGVudD0idHJ1ZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUs
IGNvbnRlbnQpCisgICAgYXNzZXJ0IHMucXVpYworCisgICAgY29udGVudCA9IGInPG1ldGEgbmFt
ZT0icXVpYyIgY29udGVudD0iZmFsc2UiPicKKyAgICBzID0gY3JlYXRlKGZpbGVuYW1lLCBjb250
ZW50KQorICAgIGFzc2VydCBzLnF1aWMgaXMgTm9uZQorCisKK2RlZiB0ZXN0X3F1aWNfanMoKToK
KyAgICBmaWxlbmFtZSA9ICJodG1sL3Rlc3QuYW55LmpzIgorCisgICAgY29udGVudCA9IGIiLy8g
TUVUQTogcXVpYz10cnVlIgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAg
XywgaXRlbXMgPSBzLm1hbmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAg
ICAgICAgYXNzZXJ0IGl0ZW0ucXVpYworCisgICAgY29udGVudCA9IGIiLy8gTUVUQTogcXVpYz1m
YWxzZSIKKyAgICBzID0gY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50KQorICAgIF8sIGl0ZW1zID0g
cy5tYW5pZmVzdF9pdGVtcygpCisgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgIGFzc2Vy
dCBpdGVtLnF1aWMgaXMgTm9uZQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZXh0Iiwg
WyJodG0iLCAiaHRtbCJdKQorZGVmIHRlc3RfcmVmdGVzdChleHQpOgogICAgIGNvbnRlbnQgPSBi
IjxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZi5odG1sPiIKIAogICAgIGZpbGVuYW1lID0gImZvby90
ZXN0LiIgKyBleHQKQEAgLTY3Myw3ICs3MDYsNyBAQCBkZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0
KToKIAogICAgIGFzc2VydCBzLmNvbnRlbnRfaXNfcmVmX25vZGUKIAotICAgIGFzc2VydCBpdGVt
cyhzKSA9PSBbKCJyZWZ0ZXN0X25vZGUiLCAiLyIgKyBmaWxlbmFtZSldCisgICAgYXNzZXJ0IGl0
ZW1zKHMpID09IFsoInJlZnRlc3QiLCAiLyIgKyBmaWxlbmFtZSldCiAKIAogQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJleHQiLCBbInhodCIsICJodG1sIiwgInhodG1sIiwgImh0bSIsICJ4bWwi
LCAic3ZnIl0pCkBAIC04MzEsNCArODY0LDQgQEAgZGVmIHRlc3RfcmVmdGVzdF9mdXp6eV9tdWx0
aShmdXp6eSwgZXhwZWN0ZWQpOgogCiBkZWYgdGVzdF9oYXNoKCk6CiAgICAgcyA9IFNvdXJjZUZp
bGUoIi8iLCAiZm9vIiwgIi8iLCBjb250ZW50cz1iIkhlbGxvLCBXb3JsZCEiKQotICAgIGFzc2Vy
dCBiImI0NWVmNmZlYzg5NTE4ZDMxNGY1NDZmZDZjMzAyNTM2N2I3MjE2ODQiID09IHMuaGFzaAor
ICAgIGFzc2VydCAiYjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0g
cy5oYXNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90eXBlZGF0YS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xM2EwNDFlNTRjM2UyNDBlMjZkYjgzYzE4YTFmNTg5ZTA1Y2RjODUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90eXBlZGF0YS5weQpAQCAtMCwwICsxLDM0MiBAQAorZnJvbSBjb2xsZWN0aW9u
cyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKKworZnJvbSBzaXggaW1wb3J0IGl0ZXJ2YWx1ZXMsIGl0
ZXJpdGVtcworCisKK01ZUFkgPSBGYWxzZQoraWYgTVlQWToKKyAgICAjIE1ZUFkgaXMgc2V0IHRv
IFRydWUgd2hlbiBydW4gdW5kZXIgTXlweS4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgQW55Cisg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmF0
b3IKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBP
cHRpb25hbAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBTZXQKKyAgICBmcm9tIHR5cGluZyBpbXBv
cnQgVGV4dAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorICAgIGZyb20gdHlwaW5nIGlt
cG9ydCBUeXBlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisKKyAgICAjIGF2b2lkIGFj
dHVhbGx5IGltcG9ydGluZyB0aGVzZSwgdGhleSdyZSBvbmx5IHVzZWQgYnkgdHlwZSBjb21tZW50
cworICAgIGZyb20gLiBpbXBvcnQgaXRlbQorICAgIGZyb20gLiBpbXBvcnQgbWFuaWZlc3QKKwor
CitpZiBNWVBZOgorICAgIFR5cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nW1R1cGxlW1RleHQs
IC4uLl0sIFNldFtpdGVtLk1hbmlmZXN0SXRlbV1dCisgICAgUGF0aEhhc2hUeXBlID0gTXV0YWJs
ZU1hcHBpbmdbVHVwbGVbVGV4dCwgLi4uXSwgVGV4dF0KK2Vsc2U6CisgICAgVHlwZURhdGFUeXBl
ID0gTXV0YWJsZU1hcHBpbmcKKyAgICBQYXRoSGFzaFR5cGUgPSBNdXRhYmxlTWFwcGluZworCisK
K2NsYXNzIFR5cGVEYXRhKFR5cGVEYXRhVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG0s
IHR5cGVfY2xzKToKKyAgICAgICAgIyB0eXBlOiAobWFuaWZlc3QuTWFuaWZlc3QsIFR5cGVbaXRl
bS5NYW5pZmVzdEl0ZW1dKSAtPiBOb25lCisgICAgICAgICIiIkRpY3QtbGlrZSBvYmplY3QgY29u
dGFpbmluZyB0aGUgVGVzdEl0ZW1zIGZvciBlYWNoIHRlc3QgdHlwZS4KKworICAgICAgICBMb2Fk
aW5nIGFuIGFjdHVhbCBJdGVtIGNsYXNzIGZvciBlYWNoIHRlc3QgaXMgdW5uZWNlc3NhcmlseQor
ICAgICAgICBzbG93LCBzbyB0aGlzIGNsYXNzIGFsbG93cyBsYXp5LWxvYWRpbmcgb2YgdGhlIHRl
c3QKKyAgICAgICAgaXRlbXMuIFdoZW4gdGhlIG1hbmlmZXN0IGlzIGxvYWRlZCB3ZSBzdG9yZSB0
aGUgcmF3IGpzb24KKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgdGVzdCB0eXBlLCBhbmQg
b25seSBjcmVhdGUgYW4gSXRlbQorICAgICAgICBzdWJjbGFzcyB3aGVuIHRoZSB0ZXN0IGlzIGFj
Y2Vzc2VkLiBJbiBvcmRlciB0byByZW1haW4KKyAgICAgICAgQVBJLWNvbXBhdGlibGUgd2l0aCBj
b25zdW1lcnMgdGhhdCBkZXBlbmQgb24gZ2V0dGluZyBhbiBJdGVtCisgICAgICAgIGZyb20gaXRl
cmF0aW9uLCB3ZSBkbyBlZ2VybHkgbG9hZCBhbGwgaXRlbXMgd2hlbiBpdGVyYXRpbmcKKyAgICAg
ICAgb3ZlciB0aGUgY2xhc3MuIiIiCisgICAgICAgIHNlbGYuX21hbmlmZXN0ID0gbQorICAgICAg
ICBzZWxmLl90eXBlX2NscyA9IHR5cGVfY2xzICAjIHR5cGU6IFR5cGVbaXRlbS5NYW5pZmVzdEl0
ZW1dCisgICAgICAgIHNlbGYuX2pzb25fZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgQW55
XQorICAgICAgICBzZWxmLl9kYXRhID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCisgICAg
ICAgIHNlbGYuX2hhc2hlcyA9IHt9ICAjIHR5cGU6IERpY3RbVHVwbGVbVGV4dCwgLi4uXSwgVGV4
dF0KKyAgICAgICAgc2VsZi5oYXNoZXMgPSBQYXRoSGFzaChzZWxmKQorCisgICAgZGVmIF9kZWxl
dGVfbm9kZShzZWxmLCBkYXRhLCBrZXkpOgorICAgICAgICAjIHR5cGU6IChEaWN0W1RleHQsIEFu
eV0sIFR1cGxlW1RleHQsIC4uLl0pIC0+IE5vbmUKKyAgICAgICAgIiIiZGVsZXRlIGEgcGF0aCBm
cm9tIGEgRGljdCBkYXRhIHdpdGggYSBnaXZlbiBrZXkiIiIKKyAgICAgICAgcGF0aCA9IFtdCisg
ICAgICAgIG5vZGUgPSBkYXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleVs6LTFdOgorICAg
ICAgICAgICAgcGF0aC5hcHBlbmQoKG5vZGUsIHBhdGhzZWcpKQorICAgICAgICAgICAgbm9kZSA9
IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIGRpY3Qp
OgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgICAgICBkZWwgbm9k
ZVtrZXlbLTFdXQorICAgICAgICB3aGlsZSBwYXRoOgorICAgICAgICAgICAgbm9kZSwgcGF0aHNl
ZyA9IHBhdGgucG9wKCkKKyAgICAgICAgICAgIGlmIGxlbihub2RlW3BhdGhzZWddKSA9PSAwOgor
ICAgICAgICAgICAgICAgIGRlbCBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAg
ICAgICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gU2V0W2l0ZW0uTWFuaWZlc3RJdGVt
XQorICAgICAgICBub2RlID0gc2VsZi5fZGF0YSAgIyB0eXBlOiBVbmlvbltEaWN0W1RleHQsIEFu
eV0sIFNldFtpdGVtLk1hbmlmZXN0SXRlbV0sIExpc3RbQW55XV0KKyAgICAgICAgZm9yIHBhdGhz
ZWcgaW4ga2V5OgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KSBhbmQgcGF0
aHNlZyBpbiBub2RlOgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIHNldCk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Io
a2V5KQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9qc29uX2RhdGEKKyAgICAgICAgZm91bmQgPSBG
YWxzZQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKG5vZGUsIGRpY3QpIGFuZCBwYXRoc2VnIGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9k
ZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorCisgICAgICAgIGlm
IG5vdCBmb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShub2RlLCBsaXN0KToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9y
KGtleSkKKworICAgICAgICBzZWxmLl9oYXNoZXNba2V5XSA9IG5vZGVbMF0KKworICAgICAgICBk
YXRhID0gc2V0KCkKKyAgICAgICAgcGF0aCA9ICIvIi5qb2luKGtleSkKKyAgICAgICAgZm9yIHRl
c3QgaW4gbm9kZVsxOl06CisgICAgICAgICAgICBtYW5pZmVzdF9pdGVtID0gc2VsZi5fdHlwZV9j
bHMuZnJvbV9qc29uKHNlbGYuX21hbmlmZXN0LCBwYXRoLCB0ZXN0KQorICAgICAgICAgICAgZGF0
YS5hZGQobWFuaWZlc3RfaXRlbSkKKworICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShub2RlLCBkaWN0KQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBr
ZXlbOi0xXToKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLnNldGRlZmF1bHQocGF0aHNlZywge30p
CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShub2RlLCBkaWN0KQorICAgICAgICBhc3Nl
cnQga2V5Wy0xXSBub3QgaW4gbm9kZQorICAgICAgICBub2RlW2tleVstMV1dID0gZGF0YQorCisg
ICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorCisgICAgICAg
IHJldHVybiBkYXRhCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6Cisg
ICAgICAgICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFNldFtpdGVtLk1hbmlmZXN0SXRlbV0p
IC0+IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fZGVsZXRlX25vZGUoc2Vs
Zi5fanNvbl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAg
IHBhc3MKKworICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAgICBmb3IgaSwgcGF0aHNl
ZyBpbiBlbnVtZXJhdGUoa2V5WzotMV0pOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVm
YXVsdChwYXRoc2VnLCB7fSkKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIGRp
Y3QpOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlciBpcyBhIGNoaWxkIG9mIGEg
dGVzdCAoJXIpIiAlIChrZXksIGtleVs6aSsxXSkpCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSB2
YWx1ZQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTog
KFR1cGxlW1RleHQsIC4uLl0pIC0+IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fZGVsZXRlX25vZGUoc2VsZi5fZGF0YSwga2V5KQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6
CisgICAgICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9qc29uX2RhdGEsIGtleSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5f
aGFzaGVzW2tleV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAg
ICBwYXNzCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbVHVwbGVbVGV4dCwgLi4uXV0KKyAgICAgICAgIiIiSXRlcmF0b3Igb3ZlciBrZXlz
IGluIHRoZSBUeXBlRGF0YSBpbiBjb2RlcG9pbnQgb3JkZXIiIiIKKyAgICAgICAgZGF0YV9ub2Rl
ID0gc2VsZi5fZGF0YSAgIyB0eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIEFueV1dCisgICAgICAg
IGpzb25fbm9kZSA9IHNlbGYuX2pzb25fZGF0YSAgIyB0eXBlOiBPcHRpb25hbFtEaWN0W1RleHQs
IEFueV1dCisgICAgICAgIHBhdGggPSB0dXBsZSgpICAjIHR5cGU6IFR1cGxlW1RleHQsIC4uLl0K
KyAgICAgICAgc3RhY2sgPSBbKGRhdGFfbm9kZSwganNvbl9ub2RlLCBwYXRoKV0KKyAgICAgICAg
d2hpbGUgc3RhY2s6CisgICAgICAgICAgICBkYXRhX25vZGUsIGpzb25fbm9kZSwgcGF0aCA9IHN0
YWNrLnBvcCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGFfbm9kZSwgc2V0KSBvciBp
c2luc3RhbmNlKGpzb25fbm9kZSwgbGlzdCk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGRhdGFf
bm9kZSBpcyBOb25lIG9yIGpzb25fbm9kZSBpcyBOb25lCisgICAgICAgICAgICAgICAgeWllbGQg
cGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGF0YV9ub2Rl
IGlzIE5vbmUgb3IgaXNpbnN0YW5jZShkYXRhX25vZGUsIGRpY3QpCisgICAgICAgICAgICAgICAg
YXNzZXJ0IGpzb25fbm9kZSBpcyBOb25lIG9yIGlzaW5zdGFuY2UoanNvbl9ub2RlLCBkaWN0KQor
CisgICAgICAgICAgICAgICAga2V5cyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQorICAgICAg
ICAgICAgICAgIGlmIGRhdGFfbm9kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
a2V5cyB8PSBzZXQoaXRlcihkYXRhX25vZGUpKQorICAgICAgICAgICAgICAgIGlmIGpzb25fbm9k
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAga2V5cyB8PSBzZXQoaXRlcihqc29u
X25vZGUpKQorCisgICAgICAgICAgICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoa2V5cywgcmV2ZXJz
ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKChkYXRhX25vZGUuZ2V0
KGtleSkgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc29uX25vZGUuZ2V0KGtleSkgaWYganNvbl9ub2RlIGlzIG5v
dCBOb25lIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRo
ICsgKGtleSwpKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgp
IC0+IGludAorICAgICAgICBjb3VudCA9IDAKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9kYXRh
XQorICAgICAgICB3aGlsZSBzdGFjazoKKyAgICAgICAgICAgIHYgPSBzdGFjay5wb3AoKQorICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBzZXQpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9
IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2
YWx1ZXModikpCisKKyAgICAgICAgc3RhY2sgPSBbc2VsZi5fanNvbl9kYXRhXQorICAgICAgICB3
aGlsZSBzdGFjazoKKyAgICAgICAgICAgIHYgPSBzdGFjay5wb3AoKQorICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZSh2LCBsaXN0KToKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0YWNrLmV4dGVuZChpdGVydmFsdWVzKHYpKQor
CisgICAgICAgIHJldHVybiBjb3VudAorCisgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fZGF0YSkg
b3IgYm9vbChzZWxmLl9qc29uX2RhdGEpCisKKyAgICBfX2Jvb2xfXyA9IF9fbm9uemVyb19fCisK
KyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTogKEFueSkg
LT4gYm9vbAorICAgICAgICAjIHdlIHByb3ZpZGUgb3VyIG93biBpbXBsIG9mIHRoaXMgdG8gYXZv
aWQgY2FsbGluZyBfX2dldGl0ZW1fXyBhbmQgZ2VuZXJhdGluZyBpdGVtcyBmb3IKKyAgICAgICAg
IyB0aG9zZSBpbiBzZWxmLl9qc29uX2RhdGEKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEKKyAg
ICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5OgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2Rl
OgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1
cm4gYm9vbChpc2luc3RhbmNlKG5vZGUsIHNldCkpCisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pz
b25fZGF0YQorICAgICAgICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRo
c2VnIGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBib29sKGlzaW5zdGFuY2Uobm9kZSwgbGlzdCkpCisKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
Tm9uZQorICAgICAgICAjIG11Y2gsIG11Y2ggc2ltcGxlci9xdWlja2VyIHRoYW4gdGhhdCBkZWZp
bmVkIGluIE11dGFibGVNYXBwaW5nCisgICAgICAgIHNlbGYuX2pzb25fZGF0YS5jbGVhcigpCisg
ICAgICAgIHNlbGYuX2RhdGEuY2xlYXIoKQorICAgICAgICBzZWxmLl9oYXNoZXMuY2xlYXIoKQor
CisgICAgZGVmIHNldF9qc29uKHNlbGYsIGpzb25fZGF0YSk6CisgICAgICAgICMgdHlwZTogKERp
Y3RbVGV4dCwgQW55XSkgLT4gTm9uZQorICAgICAgICAiIiJQcm92aWRlIHRoZSBvYmplY3Qgd2l0
aCBhIHJhdyBKU09OIGJsb2IKKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBvYmplY3QgZ3JhcGgg
aXMgYXNzdW1lZCB0byBiZSBvd25lZCBieSB0aGUgVHlwZURhdGEKKyAgICAgICAgb2JqZWN0IGFm
dGVyIHRoZSBjYWxsLCBzbyB0aGUgY2FsbGVyIG11c3Qgbm90IG11dGF0ZSBhbnkgcGFydCBvZiB0
aGUKKyAgICAgICAgZ3JhcGguCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9qc29uX2Rh
dGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXRfanNvbiBjYWxsIHdoZW4gSlNP
TiBkYXRhIGlzIG5vdCBlbXB0eSIpCisKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ganNvbl9k
YXRhCisKKyAgICBkZWYgdG9fanNvbihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0
W1RleHQsIEFueV0KKyAgICAgICAgIiIiQ29udmVydCB0aGUgY3VycmVudCBkYXRhIHRvIEpTT04K
KworICAgICAgICBOb3RlIHRoYXQgdGhlIHJldHVybmVkIG9iamVjdCBtYXkgY29udGFpbiByZWZl
cmVuY2VzIHRvIHRoZSBpbnRlcm5hbAorICAgICAgICBkYXRhIHN0cnVjdHVyZXMsIGFuZCBpcyBv
bmx5IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgdW50aWwgdGhlIG5leHQKKyAgICAgICAgX19nZXRp
dGVtX18sIF9fc2V0aXRlbV9fLCBfX2RlbGl0ZW1fXyBjYWxsLCBzbyB0aGUgY2FsbGVyIG11c3Qg
bm90CisgICAgICAgIG11dGF0ZSBhbnkgcGFydCBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGdyYXBo
LgorCisgICAgICAgICIiIgorICAgICAgICBqc29uX3J2ID0gc2VsZi5fanNvbl9kYXRhLmNvcHko
KQorCisgICAgICAgIGRlZiBzYWZlX3NvcnRlcihlbGVtZW50KToKKyAgICAgICAgICAgICMgdHlw
ZTogKFR1cGxlW3N0cixzdHJdKSAtPiBUdXBsZVtzdHIsc3RyXQorICAgICAgICAgICAgIiIiIGtl
eSBmdW5jdGlvbiB0byBzb3J0IGxpc3RzIHdpdGggTm9uZSB2YWx1ZXMuCisKKyAgICAgICAgICAg
IFB5dGhvbjMgaXMgbW9yZSBzdHJpY3QgdHlwZXdpc2UuIENvbXBhcmluZyBOb25lIGFuZCBzdHIg
Zm9yIGV4YW1wbGUgaXMgdmFsaWQKKyAgICAgICAgICAgIGluIHB5dGhvbjIgYnV0IHRocm93cyBh
biBleGNlcHRpb24gaW4gcHl0aG9uMy4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgaWYg
ZWxlbWVudCBhbmQgbm90IGVsZW1lbnRbMF06CisgICAgICAgICAgICAgICAgcmV0dXJuICgiIiwg
ZWxlbWVudFsxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQKKworICAgICAgICBzdGFjayA9IFsoc2VsZi5fZGF0YSwganNvbl9ydiwgdHVwbGUoKSld
ICAjIHR5cGU6IExpc3RbVHVwbGVbRGljdFtUZXh0LCBBbnldLCBEaWN0W1RleHQsIEFueV0sIFR1
cGxlW1RleHQsIC4uLl1dXQorICAgICAgICB3aGlsZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFf
bm9kZSwganNvbl9ub2RlLCBwYXJfZnVsbF9rZXkgPSBzdGFjay5wb3AoKQorICAgICAgICAgICAg
Zm9yIGssIHYgaW4gaXRlcml0ZW1zKGRhdGFfbm9kZSk6CisgICAgICAgICAgICAgICAgZnVsbF9r
ZXkgPSBwYXJfZnVsbF9rZXkgKyAoaywpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2
LCBzZXQpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgayBub3QgaW4ganNvbl9ub2RlCisg
ICAgICAgICAgICAgICAgICAgIGpzb25fbm9kZVtrXSA9IFtzZWxmLl9oYXNoZXMuZ2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZnVsbF9rZXkpXSArIFt0IGZvciB0IGluIHNvcnRlZCgodGVz
dC50b19qc29uKCkgZm9yIHRlc3QgaW4gdiksIGtleT1zYWZlX3NvcnRlcildCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0ganNvbl9ub2Rl
LmdldChrLCB7fSkuY29weSgpCisgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgodiwg
anNvbl9ub2RlW2tdLCBmdWxsX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGpzb25fcnYKKworCitj
bGFzcyBQYXRoSGFzaChQYXRoSGFzaFR5cGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRh
KToKKyAgICAgICAgIyB0eXBlOiAoVHlwZURhdGEpIC0+IE5vbmUKKyAgICAgICAgc2VsZi5fZGF0
YSA9IGRhdGEKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrKToKKyAgICAgICAgIyB0eXBl
OiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gVGV4dAorICAgICAgICBpZiBrIG5vdCBpbiBzZWxmLl9k
YXRhOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IKKworICAgICAgICBpZiBrIGluIHNlbGYu
X2RhdGEuX2hhc2hlczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9kYXRhLl9oYXNoZXNba10K
KworICAgICAgICBub2RlID0gc2VsZi5fZGF0YS5fanNvbl9kYXRhCisgICAgICAgIGZvciBwYXRo
c2VnIGluIGs6CisgICAgICAgICAgICBpZiBwYXRoc2VnIGluIG5vZGU6CisgICAgICAgICAgICAg
ICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBub2RlWzBdICAjIHR5
cGU6IGlnbm9yZQorCisgICAgICAgIGFzc2VydCBGYWxzZSwgInVucmVhY2hhYmxlIgorICAgICAg
ICByYWlzZSBLZXlFcnJvcgorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGssIHYpOgorICAg
ICAgICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dLCBUZXh0KSAtPiBOb25lCisgICAgICAgIGlm
IGsgbm90IGluIHNlbGYuX2RhdGE6CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAg
ICAgIGlmIGsgaW4gc2VsZi5fZGF0YS5faGFzaGVzOgorICAgICAgICAgICAgc2VsZi5fZGF0YS5f
aGFzaGVzW2tdID0gdgorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAg
ICAgICAgZm9yIHBhdGhzZWcgaW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToK
KyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbm9kZVsw
XSA9IHYgICMgdHlwZTogaWdub3JlCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxm
Ll9kYXRhLl9oYXNoZXNba10gPSB2CisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgayk6Cisg
ICAgICAgICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0pIC0+IE5vbmUKKyAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigia2V5cyBoZXJlIG11c3QgbWF0Y2ggdW5kZXJseWluZyBkYXRhIikKKworICAg
IGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltUdXBs
ZVtUZXh0LCAuLi5dXQorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9kYXRhKQorCisgICAgZGVm
IF9fbGVuX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gaW50CisgICAgICAgIHJldHVy
biBsZW4oc2VsZi5fZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkK
aW5kZXggYmZiYWFmODk3MTI2ZDhlZWNhNjlkY2VmOTRiYjMxMzA4ODk3ZmRlMi4uMjk2NTMzYTZi
YWJmMTc2ZTQ1MTRiY2YzZjI5ZTE2M2ZkZjlhOWZkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC91cGRhdGUucHkKQEAgLTI2LDcgKzI2LDggQEAgZGVmIHVwZGF0ZSh0ZXN0c19yb290
LCAgIyB0eXBlOiBzdHIKICAgICAgICAgICAgbWFuaWZlc3RfcGF0aD1Ob25lLCAgIyB0eXBlOiBP
cHRpb25hbFtzdHJdCiAgICAgICAgICAgIHdvcmtpbmdfY29weT1UcnVlLCAgIyB0eXBlOiBib29s
CiAgICAgICAgICAgIGNhY2hlX3Jvb3Q9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbc3RyXQotICAg
ICAgICAgICByZWJ1aWxkPUZhbHNlICAjIHR5cGU6IGJvb2wKKyAgICAgICAgICAgcmVidWlsZD1G
YWxzZSwgICMgdHlwZTogYm9vbAorICAgICAgICAgICBwYXJhbGxlbD1UcnVlICAjIHR5cGU6IGJv
b2wKICAgICAgICAgICAgKToKICAgICAjIHR5cGU6ICguLi4pIC0+IGJvb2wKICAgICBsb2dnZXIu
d2FybmluZygiRGVwcmVjYXRlZDsgdXNlIG1hbmlmZXN0LmxvYWRfYW5kX3VwZGF0ZSBpbnN0ZWFk
IikKQEAgLTM0LDcgKzM1LDcgQEAgZGVmIHVwZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBlOiBzdHIK
IAogICAgIHRyZWUgPSB2Y3MuZ2V0X3RyZWUodGVzdHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0
X3BhdGgsIGNhY2hlX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nX2NvcHks
IHJlYnVpbGQpCi0gICAgcmV0dXJuIG1hbmlmZXN0LnVwZGF0ZSh0cmVlKQorICAgIHJldHVybiBt
YW5pZmVzdC51cGRhdGUodHJlZSwgcGFyYWxsZWwpCiAKIAogZGVmIHVwZGF0ZV9mcm9tX2NsaSgq
Kmt3YXJncyk6CkBAIC01MSw3ICs1Miw4IEBAIGRlZiB1cGRhdGVfZnJvbV9jbGkoKiprd2FyZ3Mp
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInVybF9iYXNlIl0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZT1UcnVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWJ1aWxkPWt3YXJnc1sicmVidWlsZCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWNoZV9yb290PWt3YXJnc1siY2FjaGVfcm9vdCJdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWNoZV9yb290PWt3YXJnc1siY2FjaGVfcm9vdCJdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxlbD1rd2FyZ3NbInBhcmFsbGVsIl0pCiAKIAog
ZGVmIGFic19wYXRoKHBhdGgpOgpAQCAtNzgsNiArODAsOSBAQCBkZWYgY3JlYXRlX3BhcnNlcigp
OgogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItLWNhY2hlLXJvb3QiLCBhY3Rp
b249InN0b3JlIiwgZGVmYXVsdD1vcy5wYXRoLmpvaW4od3B0X3Jvb3QsICIud3B0Y2FjaGUiKSwK
ICAgICAgICAgaGVscD0iUGF0aCBpbiB3aGljaCB0byBzdG9yZSBhbnkgY2FjaGVzIChkZWZhdWx0
IDx0ZXN0c19yb290Pi8ud3B0Y2FjaGUvKSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgIi0tbm8tcGFyYWxsZWwiLCBkZXN0PSJwYXJhbGxlbCIsIGFjdGlvbj0ic3RvcmVfZmFs
c2UiLCBkZWZhdWx0PVRydWUsCisgICAgICAgIGhlbHA9IkRvIG5vdCBwYXJhbGxlbGl6ZSBidWls
ZGluZyB0aGUgbWFuaWZlc3QiKQogICAgIHJldHVybiBwYXJzZXIKIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3V0aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC91dGlscy5weQppbmRleCAyZWVkNzlmNDI3OWQwZWM3OGM2OTNmNjMyYjk2
ZTM2Y2UzYzk2ZmE5Li5hZWZjMmM5NGY0MGUxYWUyOWQzNjU3ZmU0MTE0Zjc5Zjk3NTY4YmExIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L3V0aWxzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKQEAgLTU1LDE2ICs1NSwxNiBA
QCBkZWYgdG9fb3NfcGF0aChwYXRoKToKIAogCiBkZWYgZ2l0KHBhdGgpOgotICAgICMgdHlwZTog
KGJ5dGVzKSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIGJ5dGVzXV0KKyAgICAjIHR5cGU6IChi
eXRlcykgLT4gT3B0aW9uYWxbQ2FsbGFibGVbLi4uLCBUZXh0XV0KICAgICBkZWYgZ2l0ZnVuYyhj
bWQsICphcmdzKToKLSAgICAgICAgIyB0eXBlOiAoYnl0ZXMsICpieXRlcykgLT4gYnl0ZXMKKyAg
ICAgICAgIyB0eXBlOiAoYnl0ZXMsICpieXRlcykgLT4gVGV4dAogICAgICAgICBmdWxsX2NtZCA9
IFsiZ2l0IiwgY21kXSArIGxpc3QoYXJncykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0
cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUo
J3V0ZjgnKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBpZiBw
bGF0Zm9ybS51bmFtZSgpWzBdID09ICJXaW5kb3dzIiBhbmQgaXNpbnN0YW5jZShlLCBXaW5kb3dz
RXJyb3IpOgogICAgICAgICAgICAgICAgIGZ1bGxfY21kWzBdID0gImdpdC5iYXQiCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0
aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgICAgIHJldHVybiBzdWJw
cm9jZXNzLmNoZWNrX291dHB1dChmdWxsX2NtZCwgY3dkPXBhdGgsIHN0ZGVycj1zdWJwcm9jZXNz
LlNURE9VVCkuZGVjb2RlKCd1dGY4JykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgcmFpc2UKIApAQCAtMTAzLDQgKzEwMyw1IEBAIGNsYXNzIGNhY2hlZF9wcm9wZXJ0eShHZW5l
cmljW1RdKToKICAgICAgICAgIyB3ZSBjYW4gdW5jb25kaXRpb25hbGx5IGFzc2lnbiBhcyBuZXh0
IHRpbWUgdGhpcyB3b24ndCBiZSBjYWxsZWQKICAgICAgICAgYXNzZXJ0IHNlbGYubmFtZSBub3Qg
aW4gb2JqLl9fZGljdF9fCiAgICAgICAgIHJ2ID0gb2JqLl9fZGljdF9fW3NlbGYubmFtZV0gPSBz
ZWxmLmZ1bmMob2JqKQorICAgICAgICBvYmouX19kaWN0X18uc2V0ZGVmYXVsdCgiX19jYWNoZWRf
cHJvcGVydGllc19fIiwgc2V0KCkpLmFkZChzZWxmLm5hbWUpCiAgICAgICAgIHJldHVybiBydgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC92Y3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQppbmRleCBkNGY0N2Y2YmYwYWIzNWM5ZGE1
MTRlZGI0YzRiNzc5NjQ0ZmY5MGRkLi43YzBmZWViODE2NDc5OTc1Mjc1YjFhMWM0ZDg0ZjEyMTVm
YWMxNDA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpAQCAtMzMsNyArMzMs
NyBAQCBkZWYgZ2V0X3RyZWUodGVzdHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNh
Y2hlX3Jvb3QsCiAgICAgIyB0eXBlOiAoYnl0ZXMsIE1hbmlmZXN0LCBPcHRpb25hbFtieXRlc10s
IE9wdGlvbmFsW2J5dGVzXSwgYm9vbCwgYm9vbCkgLT4gRmlsZVN5c3RlbQogICAgIHRyZWUgPSBO
b25lCiAgICAgaWYgY2FjaGVfcm9vdCBpcyBOb25lOgotICAgICAgICBjYWNoZV9yb290ID0gb3Mu
cGF0aC5qb2luKHRlc3RzX3Jvb3QsIGIiLndwdGNhY2hlIikKKyAgICAgICAgY2FjaGVfcm9vdCA9
IG9zLnBhdGguam9pbih0ZXN0c19yb290LCAiLndwdGNhY2hlIikKICAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMoY2FjaGVfcm9vdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1ha2Vk
aXJzKGNhY2hlX3Jvb3QpCkBAIC01OCwyMSArNTgsMjEgQEAgY2xhc3MgR2l0SGFzaGVyKG9iamVj
dCk6CiAgICAgICAgIHNlbGYuZ2l0ID0gZ2l0KHBhdGgpCiAKICAgICBkZWYgX2xvY2FsX2NoYW5n
ZXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICAgICAjIHR5
cGU6ICgpIC0+IFNldFtUZXh0XQogICAgICAgICAiIiJnZXQgYSBzZXQgb2YgZmlsZXMgd2hpY2gg
aGF2ZSBjaGFuZ2VkIGJldHdlZW4gSEVBRCBhbmQgd29ya2luZyBjb3B5IiIiCiAgICAgICAgIGFz
c2VydCBzZWxmLmdpdCBpcyBub3QgTm9uZQogICAgICAgICAjIG5vdGUgdGhhdCBnaXQgcnVucyB0
aGUgY29tbWFuZCB3aXRoIHRlc3RzX3Jvb3QgYXMgdGhlIGN3ZCwgd2hpY2ggbWF5CiAgICAgICAg
ICMgbm90IGJlIHRoZSByb290IG9mIHRoZSBnaXQgcmVwbyAoZS5nLiwgd2l0aGluIGEgYnJvd3Nl
ciByZXBvKQotICAgICAgICBjbWQgPSBbYiJkaWZmLWluZGV4IiwgYiItLXJlbGF0aXZlIiwgYiIt
LW5vLXJlbmFtZXMiLCBiIi0tbmFtZS1vbmx5IiwgYiIteiIsIGIiSEVBRCJdCisgICAgICAgIGNt
ZCA9IFsiZGlmZi1pbmRleCIsICItLXJlbGF0aXZlIiwgIi0tbm8tcmVuYW1lcyIsICItLW5hbWUt
b25seSIsICIteiIsICJIRUFEIl0KICAgICAgICAgZGF0YSA9IHNlbGYuZ2l0KCpjbWQpCi0gICAg
ICAgIHJldHVybiBzZXQoZGF0YS5zcGxpdChiIlwwIikpCisgICAgICAgIHJldHVybiBzZXQoZGF0
YS5zcGxpdCgiXDAiKSkKIAogICAgIGRlZiBoYXNoX2NhY2hlKHNlbGYpOgotICAgICAgICAjIHR5
cGU6ICgpIC0+IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAgICAgICAgIyB0eXBlOiAo
KSAtPiBEaWN0W1RleHQsIE9wdGlvbmFsW1RleHRdXQogICAgICAgICAiIiIKICAgICAgICAgQSBk
aWN0IG9mIHJlbF9wYXRoIC0+IGN1cnJlbnQgZ2l0IG9iamVjdCBpZCBpZiB0aGUgd29ya2luZyB0
cmVlIG1hdGNoZXMgSEVBRCBlbHNlIE5vbmUKICAgICAgICAgIiIiCi0gICAgICAgIGhhc2hfY2Fj
aGUgPSB7fSAgIyB0eXBlOiBEaWN0W2J5dGVzLCBPcHRpb25hbFtieXRlc11dCisgICAgICAgIGhh
c2hfY2FjaGUgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIE9wdGlvbmFsW1RleHRdXQogCiAgICAg
ICAgIGlmIHNlbGYuZ2l0IGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gaGFzaF9jYWNoZQpA
QCAtODEsOSArODEsOSBAQCBjbGFzcyBHaXRIYXNoZXIob2JqZWN0KToKICAgICAgICAgIyBub3Qg
YmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4gYSBicm93c2VyIHJlcG8p
CiAgICAgICAgIGNtZCA9IFsibHMtdHJlZSIsICItciIsICIteiIsICJIRUFEIl0KICAgICAgICAg
bG9jYWxfY2hhbmdlcyA9IHNlbGYuX2xvY2FsX2NoYW5nZXMoKQotICAgICAgICBmb3IgcmVzdWx0
IGluIHNlbGYuZ2l0KCpjbWQpLnNwbGl0KGIiXDAiKVs6LTFdOiAgIyB0eXBlOiBieXRlcwotICAg
ICAgICAgICAgZGF0YSwgcmVsX3BhdGggPSByZXN1bHQucnNwbGl0KGIiXHQiLCAxKQotICAgICAg
ICAgICAgaGFzaF9jYWNoZVtyZWxfcGF0aF0gPSBOb25lIGlmIHJlbF9wYXRoIGluIGxvY2FsX2No
YW5nZXMgZWxzZSBkYXRhLnNwbGl0KGIiICIsIDMpWzJdCisgICAgICAgIGZvciByZXN1bHQgaW4g
c2VsZi5naXQoKmNtZCkuc3BsaXQoIlwwIilbOi0xXTogICMgdHlwZTogVGV4dAorICAgICAgICAg
ICAgZGF0YSwgcmVsX3BhdGggPSByZXN1bHQucnNwbGl0KCJcdCIsIDEpCisgICAgICAgICAgICBo
YXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdlcyBl
bHNlIGRhdGEuc3BsaXQoIiAiLCAzKVsyXQogCiAgICAgICAgIHJldHVybiBoYXNoX2NhY2hlCiAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBDYWNoZUZpbGUod2l0aF9tZXRhY2xhc3MoYWJjLkFC
Q01ldGEpKToKIAogCiBjbGFzcyBNdGltZUNhY2hlKENhY2hlRmlsZSk6Ci0gICAgZmlsZV9uYW1l
ID0gYiJtdGltZS5qc29uIgorICAgIGZpbGVfbmFtZSA9ICJtdGltZS5qc29uIgogCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNhY2hlX3Jvb3QsIHRlc3RzX3Jvb3QsIG1hbmlmZXN0X3BhdGgsIHJl
YnVpbGQ9RmFsc2UpOgogICAgICAgICAjIHR5cGU6IChieXRlcywgYnl0ZXMsIGJ5dGVzLCBib29s
KSAtPiBOb25lCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBjbGFzcyBNdGltZUNhY2hlKENhY2hlRmls
ZSk6CiAKIAogY2xhc3MgR2l0SWdub3JlQ2FjaGUoQ2FjaGVGaWxlLCBNdXRhYmxlTWFwcGluZyk6
ICAjIHR5cGU6IGlnbm9yZQotICAgIGZpbGVfbmFtZSA9IGIiZ2l0aWdub3JlLmpzb24iCisgICAg
ZmlsZV9uYW1lID0gImdpdGlnbm9yZS5qc29uIgogCiAgICAgZGVmIGNoZWNrX3ZhbGlkKHNlbGYs
IGRhdGEpOgogICAgICAgICAjIHR5cGU6IChEaWN0W0FueSwgQW55XSkgLT4gRGljdFtBbnksIEFu
eV0KLSAgICAgICAgaWdub3JlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0c19yb290LCBi
Ii5naXRpZ25vcmUiKQorICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRl
c3RzX3Jvb3QsICIuZ2l0aWdub3JlIikKICAgICAgICAgbXRpbWUgPSBvcy5wYXRoLmdldG10aW1l
KGlnbm9yZV9wYXRoKQotICAgICAgICBpZiBkYXRhLmdldChiIi9naXRpZ25vcmVfZmlsZSIpICE9
IFtpZ25vcmVfcGF0aCwgbXRpbWVdOgorICAgICAgICBpZiBkYXRhLmdldCgiL2dpdGlnbm9yZV9m
aWxlIikgIT0gW2lnbm9yZV9wYXRoLCBtdGltZV06CiAgICAgICAgICAgICBzZWxmLm1vZGlmaWVk
ID0gVHJ1ZQogICAgICAgICAgICAgZGF0YSA9IHt9Ci0gICAgICAgICAgICBkYXRhW2IiL2dpdGln
bm9yZV9maWxlIl0gPSBbaWdub3JlX3BhdGgsIG10aW1lXQorICAgICAgICAgICAgZGF0YVsiL2dp
dGlnbm9yZV9maWxlIl0gPSBbaWdub3JlX3BhdGgsIG10aW1lXQogICAgICAgICByZXR1cm4gZGF0
YQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgpAQCAtMjg2LDcgKzI4Niw3IEBA
IGRlZiB3YWxrKHJvb3QpOgogICAgIHJlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgKIAogICAgIHJv
b3QgPSBvcy5wYXRoLmFic3BhdGgocm9vdCkKLSAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgYiIi
KV0pCisgICAgc3RhY2sgPSBkZXF1ZShbKHJvb3QsICIiKV0pCiAKICAgICB3aGlsZSBzdGFjazoK
ICAgICAgICAgZGlyX3BhdGgsIHJlbF9wYXRoID0gc3RhY2sucG9wbGVmdCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwppbmRleCBhMDE1NDI2ODdiMWEw
MTZkZmI0NzUyNWUwYWUyZWQ0YWEyYjIxN2Y4Li4zODhmYmIxMWVkOWQ4ZGEwMTQzZjgyZWRjMDJk
MTBjOTc5YmUzNzJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWlt
cG9ydC5sb2cKQEAgLTIzLDYgKzIzLDcgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9zb3VyY2VmaWxlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cGF0aHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91
cGRhdGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L3V0aWxzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCmluZGV4
IGFjOGVkZDM3ZDNhYzI5MDQxMzNhMTJlZTllNzU1MGRkNWE0ODcyMzguLmI5NDNiNmQwODlhNGI4
ZjgxZTliNmUyM2M3Njg4MGZiOTNjZjY2NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQpAQCAtMSwx
MiArMSwxMyBAQAogW215cHldCiAjY2hlY2tfdW50eXBlZF9kZWZzID0gVHJ1ZQotZGlzYWxsb3df
dW50eXBlZF9kZWZzID0gVHJ1ZQogZGlzYWxsb3dfYW55X2dlbmVyaWNzID0gVHJ1ZQogZGlzYWxs
b3dfaW5jb21wbGV0ZV9kZWZzID0gVHJ1ZQogZGlzYWxsb3dfc3ViY2xhc3NpbmdfYW55ID0gVHJ1
ZQogZGlzYWxsb3dfdW50eXBlZF9jYWxscyA9IFRydWUKIGRpc2FsbG93X3VudHlwZWRfZGVjb3Jh
dG9ycyA9IFRydWUKK2Rpc2FsbG93X3VudHlwZWRfZGVmcyA9IFRydWUKIG5vX2ltcGxpY2l0X29w
dGlvbmFsID0gVHJ1ZQorc3RyaWN0X2VxdWFsaXR5ID0gVHJ1ZQogd2Fybl9yZWR1bmRhbnRfY2Fz
dHMgPSBUcnVlCiB3YXJuX3JldHVybl9hbnkgPSBUcnVlCiB3YXJuX3VudXNlZF9jb25maWdzID0g
VHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTI3LWZsYWtlOC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQppbmRleCA5OTMyNGIyYWFkMTRk
OTIxZjQ2OWY1MjkzNGY3ZmY5Mzc0YTFkOWVlLi5kZDZjZWI2ZmVhNGI5NzNjMDEyNGRmNDM4MmY5
ZjFhM2E5ZDVhMGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQpAQCAtMjIs
NiArMjIsNyBAQCBpZ25vcmUgPSBFMTI4LEUxMjksRTIyNixFMjMxLEUyNTEsRTI2NSxFMzAyLEUz
MDMsRTMwNSxFNDAyLEU3MzEsVzUwNCxXNjAxLFc2MDUsVwogZXhjbHVkZSA9CiAgICAgLnRveCwK
ICAgICBweXdlYnNvY2tldCwKKyAgICBxdWljLAogICAgIHRoaXJkX3BhcnR5LAogICAgIHdwdHNl
cnZlL2RvY3MvY29uZi5weSwKICAgICB3cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qv
aW52YWxpZC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZsYWtlOC5pbmkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRj
YzFkYzZmNmE3YWZiNDFmMTJjNDFmYTgyOTMzMzdkMTlhMDIzYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzLWZs
YWtlOC5pbmkKQEAgLTAsMCArMSwyNyBAQAorW2ZsYWtlOF0KK3NlbGVjdCA9IEUsVyxGLE4KKyMg
RTEyODogY29udGludWF0aW9uIGxpbmUgdW5kZXItaW5kZW50ZWQgZm9yIHZpc3VhbCBpbmRlbnQK
KyMgRTEyOTogdmlzdWFsbHkgaW5kZW50ZWQgbGluZSB3aXRoIHNhbWUgaW5kZW50IGFzIG5leHQg
bG9naWNhbCBsaW5lCisjIEUyMjY6IG1pc3Npbmcgd2hpdGVzcGFjZSBhcm91bmQgYXJpdGhtZXRp
YyBvcGVyYXRvcgorIyBFMjMxOiBtaXNzaW5nIHdoaXRlc3BhY2UgYWZ0ZXIg4oCYLOKAmSwg4oCY
O+KAmSwgb3Ig4oCYOuKAmQorIyBFMjUxOiB1bmV4cGVjdGVkIHNwYWNlcyBhcm91bmQga2V5d29y
ZCAvIHBhcmFtZXRlciBlcXVhbHMKKyMgRTI2NTogYmxvY2sgY29tbWVudCBzaG91bGQgc3RhcnQg
d2l0aCDigJgjIOKAmAorIyBFMzAyOiBleHBlY3RlZCAyIGJsYW5rIGxpbmVzLCBmb3VuZCAwCisj
IEUzMDM6IHRvbyBtYW55IGJsYW5rIGxpbmVzICgzKQorIyBFMzA1OiBleHBlY3RlZCAyIGJsYW5r
IGxpbmVzIGFmdGVyIGVuZCBvZiBmdW5jdGlvbiBvciBjbGFzcworIyBFNDAyOiBtb2R1bGUgbGV2
ZWwgaW1wb3J0IG5vdCBhdCB0b3Agb2YgZmlsZQorIyBFNzMxOiBkbyBub3QgYXNzaWduIGEgbGFt
YmRhIGV4cHJlc3Npb24sIHVzZSBhIGRlZgorIyBXNTA0OiBsaW5lIGJyZWFrIGFmdGVyIGJpbmFy
eSBvcGVyYXRvcgorIyBXNjA1OiBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZQorIyBOODAxOiBjbGFz
cyBuYW1lcyBzaG91bGQgdXNlIENhcFdvcmRzIGNvbnZlbnRpb24KKyMgTjgwMjogZnVuY3Rpb24g
bmFtZSBzaG91bGQgYmUgbG93ZXJjYXNlCisjIE44MDY6IHZhcmlhYmxlIGluIGZ1bmN0aW9uIHNo
b3VsZCBiZSBsb3dlcmNhc2UKK2lnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1
LEUzMDIsRTMwMyxFMzA1LEU0MDIsRTczMSxXNTA0LFc2MDUsTjgwMSxOODAyLE44MDYKK2V4Y2x1
ZGUgPQorICAgIC50b3gsCisgICAgcHl3ZWJzb2NrZXQsCisgICAgdGhpcmRfcGFydHksCisgICAg
d3B0cnVubmVyLAorICAgIHdwdHNlcnZlL2RvY3MvY29uZi5weSwKKyAgICB3cHRzZXJ2ZS90ZXN0
cy9mdW5jdGlvbmFsL2RvY3Jvb3QvaW52YWxpZC5weQorbWF4LWxpbmUtbGVuZ3RoID0gMTQxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5MzYtZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHkzNi1mbGFrZTguaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxNGNjMWRjNmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzNi1mbGFrZTguaW5pCisrKyAvZGV2L251
bGwKQEAgLTEsMjcgKzAsMCBAQAotW2ZsYWtlOF0KLXNlbGVjdCA9IEUsVyxGLE4KLSMgRTEyODog
Y29udGludWF0aW9uIGxpbmUgdW5kZXItaW5kZW50ZWQgZm9yIHZpc3VhbCBpbmRlbnQKLSMgRTEy
OTogdmlzdWFsbHkgaW5kZW50ZWQgbGluZSB3aXRoIHNhbWUgaW5kZW50IGFzIG5leHQgbG9naWNh
bCBsaW5lCi0jIEUyMjY6IG1pc3Npbmcgd2hpdGVzcGFjZSBhcm91bmQgYXJpdGhtZXRpYyBvcGVy
YXRvcgotIyBFMjMxOiBtaXNzaW5nIHdoaXRlc3BhY2UgYWZ0ZXIg4oCYLOKAmSwg4oCYO+KAmSwg
b3Ig4oCYOuKAmQotIyBFMjUxOiB1bmV4cGVjdGVkIHNwYWNlcyBhcm91bmQga2V5d29yZCAvIHBh
cmFtZXRlciBlcXVhbHMKLSMgRTI2NTogYmxvY2sgY29tbWVudCBzaG91bGQgc3RhcnQgd2l0aCDi
gJgjIOKAmAotIyBFMzAyOiBleHBlY3RlZCAyIGJsYW5rIGxpbmVzLCBmb3VuZCAwCi0jIEUzMDM6
IHRvbyBtYW55IGJsYW5rIGxpbmVzICgzKQotIyBFMzA1OiBleHBlY3RlZCAyIGJsYW5rIGxpbmVz
IGFmdGVyIGVuZCBvZiBmdW5jdGlvbiBvciBjbGFzcwotIyBFNDAyOiBtb2R1bGUgbGV2ZWwgaW1w
b3J0IG5vdCBhdCB0b3Agb2YgZmlsZQotIyBFNzMxOiBkbyBub3QgYXNzaWduIGEgbGFtYmRhIGV4
cHJlc3Npb24sIHVzZSBhIGRlZgotIyBXNTA0OiBsaW5lIGJyZWFrIGFmdGVyIGJpbmFyeSBvcGVy
YXRvcgotIyBXNjA1OiBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZQotIyBOODAxOiBjbGFzcyBuYW1l
cyBzaG91bGQgdXNlIENhcFdvcmRzIGNvbnZlbnRpb24KLSMgTjgwMjogZnVuY3Rpb24gbmFtZSBz
aG91bGQgYmUgbG93ZXJjYXNlCi0jIE44MDY6IHZhcmlhYmxlIGluIGZ1bmN0aW9uIHNob3VsZCBi
ZSBsb3dlcmNhc2UKLWlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIs
RTMwMyxFMzA1LEU0MDIsRTczMSxXNTA0LFc2MDUsTjgwMSxOODAyLE44MDYKLWV4Y2x1ZGUgPQot
ICAgIC50b3gsCi0gICAgcHl3ZWJzb2NrZXQsCi0gICAgdGhpcmRfcGFydHksCi0gICAgd3B0cnVu
bmVyLAotICAgIHdwdHNlcnZlL2RvY3MvY29uZi5weSwKLSAgICB3cHRzZXJ2ZS90ZXN0cy9mdW5j
dGlvbmFsL2RvY3Jvb3QvaW52YWxpZC5weQotbWF4LWxpbmUtbGVuZ3RoID0gMTQxCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1
aWMvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTY0YjcwMWNmYjg1OTAwYzIxOTQ2
MzYyNGU2YWZhMjk5YTM4MTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL1JFQURNRS5tZApAQCAtMCwwICsx
LDMwIEBACitUaGlzIGRpcmVjdG9yeSBjb250YWlucworW1FVSUNdKGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMtdHJhbnNwb3J0KSByZWxhdGVkIHRvb2xzLgorCisj
IFF1aWNUcmFuc3BvcnQKK1txdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHldKC4vcXVpY190cmFuc3Bv
cnRfc2VydmVyLnB5KSBpbXBsZW1lbnRzIGEgc2ltcGxlCitbUXVpY1RyYW5zcG9ydF0oaHR0cHM6
Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXZ2di13ZWJ0cmFuc3BvcnQtcXVpYykgc2VydmVy
Citmb3IgdGVzdGluZy4gSXQgdXNlcyBbYWlvcXVpY10oaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0
Yy9haW9xdWljLyksIGFuZCB0ZXN0CithdXRob3JzIGNhbiBpbXBsZW1lbnQgY3VzdG9tIGhhbmRs
ZXJzIGJ5IHB1dHRpbmcgcHl0aG9uIHNjcmlwdHMgaW4KK1t3cHQvd2VidHJhbnNwb3J0L3F1aWMv
aGFuZGxlcnMvXSguLi8uLi93ZWJ0cmFuc3BvcnQvcXVpYy9oYW5kbGVycy8pLgorCisjIyBDdXN0
b20gSGFuZGxlcnMKK1RoZSBRdWljVHJhbnNwb3J0U2VydmVyIGNhbGxzIGZ1bmN0aW9ucyBkZWZp
bmVkIGluIGVhY2ggaGFuZGxlciBzY3JpcHQuCisKKyAtIGhhbmRsZV9jbGllbnRfaW5kaWNhdGlv
biBpcyBjYWxsZWQgZHVyaW5nIHRoZSBjbGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzLgorICAgVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6CisgICAKKyAgIC0gY29u
bmVjdGlvbjogYWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gb3Jp
Z2luOiBzdHIgVGhlIG9yaWdpbiBvZiB0aGUgaW5pdGlhdG9yLgorICAgLSBxdWVyeTogRGljdFtz
dHIsIHN0cl0gVGhlIGRpY3Rpb25hcnkgb2YgcXVlcnkgcGFyYW1ldGVycyBvZiB0aGUgVVJMIG9m
IHRoZQorICAgICAgICAgICAgY29ubmVjdGlvbi4KKworICAgQSBoYW5kbGVyIGNhbiBhYm9ydCB0
aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBlaXRoZXIgYnkgcmFpc2luZyBhbgorICAgZXhj
ZXB0aW9uIG9yIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24uCisJICAgIAorIC0gaGFuZGxlX2V2ZW50
IGlzIGNhbGxlZCB3aGVuIGEgUXVpY0V2ZW50IGFycml2ZXMuCisgICAtIGNvbm5lY3Rpb246IGFp
b3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sCisgICAtIGV2ZW50OiBhaW9xdWlj
LnF1aWMuZXZlbnRzLlF1aWNFdmVudAorCisgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQg
dW50aWwgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MgZmluaXNoZXMKKyAgIHN1Y2Nlc3Nm
dWxseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgz
NGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19f
aW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRo
b24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1kCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxNmNmMTNmZmZjMWJiYTg3ZDYxMGUyMmNmNjBlMTEwNDNmNTM5MTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTIgQEAKK1RvIGdlbmVyYXRl
IGNlcnQua2V5IGFuZCBjZXJ0LnBlbToKKworIDEuIFJlbW92ZSB3ZWItcGxhdGZvcm0udGVzdC5r
ZXkgYW5kIHdlYi1wbGF0Zm9ybS50ZXN0LnBlbSBpbiAuLi8uLi9jZXJ0cy4KKyAxLiBGcm9tIHRo
ZSByb290LCBydW4KKyAgICBgLi93cHQgc2VydmUgLS1jb25maWcgdG9vbHMvcXVpYy9jZXJ0cy9j
b25maWcuanNvbmAgYW5kIHRlcm1pbmF0ZSBpdAorICAgIGFmdGVyIGl0IGhhcyBzdGFydGVkIHVw
LgorIDEuIE1vdmUgdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5IHRvIHRvb2xzL3F1
aWMvY2VydHMvY2VydC5rZXkuCisgMS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVz
dC5wZW0gdG8gdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbS4KKyAxLiBSZWNvdmVyIHRoZSBvcmln
aW5hbCB3ZWItcGxhdGZvcm0udGVzdC5rZXkgYW5kIHdlYi1wbGF0Zm9ybS50ZXN0LnBlbSBpbgor
ICAgIC4uLy4uL2NlcnRzLgorCitTZWUgYWxzbzogLi4vLi4vY2VydHMvUkVBRE1FLm1kClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQua2V5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2Nl
cnQua2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk5M2NkZmE1NDM3MjhiNjM2OWIwNWVlZmUyMDgxMWNkNjY2MmI3
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkKQEAgLTAsMCArMSwyOCBAQAorLS0t
LS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCitNSUlFd0FJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFT
Q0JLb3dnZ1NtQWdFQUFvSUJBUURieVB1aUJHcHhoYXZGCiszajdwSTZnK0EwZ0M0QlRMVHFNT2JL
U1RrUVdzanExR09kMkxBMWx3VFBMT2J3cnZoSVVGemJ3b0liT3dvUE1lCitNa2pzc0ZDSEczRk1q
NTZjS2lBUTJERkk2ZEs1UGpHVVZOU1J4ay9GNEhoMlp4OURURU5sL0ViL2NSVDJ5dXUrCitXOUhD
dS9CV2ZiV3dsd3dONXZ4eW5lQ29oNWNCQi9qZDFLVE9SZ3VZcHVhdEhiODVBRDVCUmhZTFh3SEY3
eVZICitOVnhIZXVHbEszMXl1WUNITkt2QkhEZ1pGNVRwOEZxS1huVlUrUGxLWENTVTU2MDJjMlU1
eEhJRnZLVHlpWmxNCitjWVhOU1VwMGxjTncvaVRTVnRzUEU0azFzdHU2cWtXZFQ3SC91VStHVUIr
YUxxTytzdkEvczlHR1g4SFpndCtyCit2U0ZFOGxJSkFnTUJBQUVDZ2dFQkFKQTk2RDlkaklveWd4
aGFFb21wbUNvU3R6a0QzVUhNdXlDbFZxRnVSUDRKCitxVmgwYzV4Zk4xeUhjN2JkazV5OEtSMDA5
NjZTNTc0YzgxRzNDTHNsdjhQYjA5QytWUWNDY29iN2krVGhhQ1dnCisxcU1WeFdoaWNVcFpWbFhH
dWZMTjQxSFVicmdJZkF5NEFsMnRIdzRoajhzRHQ3Rk1nR0hEWFp6UFZuamtlOHIxCitPOVlpSmwx
UXg0TDd2TVdydUdhOVFXakZnSG5HK3VoYUtqc0wydjdKUU9HeTV0OGFib1Z5YjdoOHJHZy9tQytl
CitISVlPdWNWMWFFTWdZVmFBbmhHc0tNSGt4NUExeFdwWEJTcnVHK0dSQngva1hXWitrQ05ja0xY
dVZkcmhxNEhJCitBZGJ4SXpxUVRQTVhwTzNSQXVqeXJ4a0hhYkVOTVBBL0ZHSDRzem1kTG9FQ2dZ
RUE5ejhwZTcvdlNsV2dmaHNGCit6NVFud1dIeUZqcnVoZ0QvMnNhNExCL2Ntd1RRZEd3OEU1VE5I
RGJDZ21TNDk5RFpVWEladUJPVGVrZEVWRFFhCituZzhWeUwzbzdEbXMrNWlQaTVjcXNjcDFLa2pM
RU15UHBxczRKVHVpeFJwam1NZnljZHhWVHBYaGN1cW5KcFRMCitRQzlwUjVOL3paY0FNRGxCdjBG
emM4VDc4WGtDZ1lFQTQ1RHVlV0dIVmYydTR1TVl5V3h5WmhhTkRhZ2wxM3l4Cisvb1NTVVR6b0x2
U3BHUXhLa3YrZnhTTnFMM251NUlhNnVENEd1NU51YlA0SHIvVmVTS1JmbWtUMWx1dkZjVmZDCitr
bjhyOGJzc1pxODU1QVZKeFhhNUsxYXVXakN1RkhqMHBZZjU2c2Zoa1B4cFkwUlFFZ2t2dUUzaW9z
UTEyZ0ZYCit2dzE0N0Z0UVVSRUNnWUVBODVScFZQNDVTMzFpT1BwOFZnMTZ3Unl5ZUU0a3NTWUk2
a3IrSkpKYkx1bW1TQnhkCitiMWtZWFNSaHFqNTZyOEkwWnZYRytyOW1lbi85aEFzMDhlU2dySHpV
SE8yUlN1ajQraWU2S3gvdkgvSkpCRXJUCitkdnFWdkxDczRndm1kUnorOEVlR1QzNS9ka3hRMGtT
aW5LQlkwdWd3YjZYRXpMMkwxVlV3M2F3Q0hka0NnWUVBCitxdFFJZ092NnVVMm5kRURBUWF4OE1E
Q3JrRjN5a2xIVUdGa1NzWk5FUk1ON0VRZU9EODErOVhGQmJBUmZsZ09oCit0Vjh5bEtyM0VUQ2RP
clM2STFQcFJKaVJ0OHFqdkJNQ1NCRFpQeXlnQnpGeEJzQUZnZ3Mrczg3dE1WMHJ3TWlQCis5cGNk
ditadWFQVmljNWM3ZUY2WENRYkdwQ01ndmRlV05DQjc3d29aUDlFQ2dZRUFsb2JrUEdEWUN5L1Jh
VmlVCitGYnE1R282dzBwTVZuTHpZYm40R2gxQUpQZVFLSVNxWHRKWjd0cXBkVytpN3F6a0x3NzRF
TGFZQ0JSMlpFbHJqCitFVmU1YVJPeDZURk45Um5qa0ZueXY5TGV5WUwrWVBjOEFJd1ZVQ2VTUGlr
U0dMRnBKZmEvandEbVdoM3ZIbW1BCitOUlVQNDB3YnRCaTQyQzJ1ZHJUeFVXc0h4cWM9CistLS0t
LUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5wZW0gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2Vy
dC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2U3MGYxYjA4MmFjYjMwNTMyMTNiYzdlZTc0ZjVlMzY3Yzg5ZmYy
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbQpAQCAtMCwwICsxLDI0MCBAQAorQ2Vy
dGlmaWNhdGU6CisgICAgRGF0YToKKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorICAgICAgICBT
ZXJpYWwgTnVtYmVyOiA5MTk0OTIgKDB4ZTA3YzQpCisgICAgICAgIFNpZ25hdHVyZSBBbGdvcml0
aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCisgICAgICAgIElzc3VlcjogQ049d2ViLXBsYXRm
b3JtLXRlc3RzCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3QgQmVmb3JlOiBBcHIg
MjAgMTE6MjA6NTYgMjAyMCBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAxOCAxMToy
MDo1NiAyMDMwIEdNVAorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdAorICAg
ICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxn
b3JpdGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICgy
MDQ4IGJpdCkKKyAgICAgICAgICAgICAgICBNb2R1bHVzOgorICAgICAgICAgICAgICAgICAgICAw
MDpkYjpjODpmYjphMjowNDo2YTo3MTo4NTphYjpjNTpkZTozZTplOToyMzoKKyAgICAgICAgICAg
ICAgICAgICAgYTg6M2U6MDM6NDg6MDI6ZTA6MTQ6Y2I6NGU6YTM6MGU6NmM6YTQ6OTM6OTE6Cisg
ICAgICAgICAgICAgICAgICAgIDA1OmFjOjhlOmFkOjQ2OjM5OmRkOjhiOjAzOjU5OjcwOjRjOmYy
OmNlOjZmOgorICAgICAgICAgICAgICAgICAgICAwYTplZjo4NDo4NTowNTpjZDpiYzoyODoyMTpi
MzpiMDphMDpmMzoxZTozMjoKKyAgICAgICAgICAgICAgICAgICAgNDg6ZWM6YjA6NTA6ODc6MWI6
NzE6NGM6OGY6OWU6OWM6MmE6MjA6MTA6ZDg6CisgICAgICAgICAgICAgICAgICAgIDMxOjQ4OmU5
OmQyOmI5OjNlOjMxOjk0OjU0OmQ0OjkxOmM2OjRmOmM1OmUwOgorICAgICAgICAgICAgICAgICAg
ICA3ODo3Njo2NzoxZjo0Mzo0Yzo0Mzo2NTpmYzo0NjpmZjo3MToxNDpmNjpjYToKKyAgICAgICAg
ICAgICAgICAgICAgZWI6YmU6NWI6ZDE6YzI6YmI6ZjA6NTY6N2Q6YjU6YjA6OTc6MGM6MGQ6ZTY6
CisgICAgICAgICAgICAgICAgICAgIGZjOjcyOjlkOmUwOmE4Ojg3Ojk3OjAxOjA3OmY4OmRkOmQ0
OmE0OmNlOjQ2OgorICAgICAgICAgICAgICAgICAgICAwYjo5ODphNjplNjphZDoxZDpiZjozOTow
MDozZTo0MTo0NjoxNjowYjo1ZjoKKyAgICAgICAgICAgICAgICAgICAgMDE6YzU6ZWY6MjU6NDc6
MzU6NWM6NDc6N2E6ZTE6YTU6MmI6N2Q6NzI6Yjk6CisgICAgICAgICAgICAgICAgICAgIDgwOjg3
OjM0OmFiOmMxOjFjOjM4OjE5OjE3Ojk0OmU5OmYwOjVhOjhhOjVlOgorICAgICAgICAgICAgICAg
ICAgICA3NTo1NDpmODpmOTo0YTo1YzoyNDo5NDplNzphZDozNjo3Mzo2NTozOTpjNDoKKyAgICAg
ICAgICAgICAgICAgICAgNzI6MDU6YmM6YTQ6ZjI6ODk6OTk6NGM6NzE6ODU6Y2Q6NDk6NGE6NzQ6
OTU6CisgICAgICAgICAgICAgICAgICAgIGMzOjcwOmZlOjI0OmQyOjU2OmRiOjBmOjEzOjg5OjM1
OmIyOmRiOmJhOmFhOgorICAgICAgICAgICAgICAgICAgICA0NTo5ZDo0ZjpiMTpmZjpiOTo0Zjo4
Njo1MDoxZjo5YToyZTphMzpiZTpiMjoKKyAgICAgICAgICAgICAgICAgICAgZjA6M2Y6YjM6ZDE6
ODY6NWY6YzE6ZDk6ODI6ZGY6YWI6YmQ6MjE6NDQ6ZjI6CisgICAgICAgICAgICAgICAgICAgIDUy
OjA5CisgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBY
NTA5djMgZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czog
CisgICAgICAgICAgICAgICAgQ0E6RkFMU0UKKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtl
eSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICA3OTo5NjpFMTo5NjpGMzo3Qzo0MToyQjoz
Qjo5RjoxQjowRDpENjpBOTpCODpCNzo0RjpFNjo2MTo1QworICAgICAgICAgICAgWDUwOXYzIEF1
dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAga2V5aWQ6RjY6Qjk6REE6
MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6Njc6NDA6Q0I6MDM6RDM6MUU6OTA6RUMKKworICAg
ICAgICAgICAgWDUwOXYzIEtleSBVc2FnZTogCisgICAgICAgICAgICAgICAgRGlnaXRhbCBTaWdu
YXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVybWVudAorICAgICAgICAgICAgWDUw
OXYzIEV4dGVuZGVkIEtleSBVc2FnZTogCisgICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIg
QXV0aGVudGljYXRpb24KKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5h
bWU6IAorICAgICAgICAgICAgICAgIEROUzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wODgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk4LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDY2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMjQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A3OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDU5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxNi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AzMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDMyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzgud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ni53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNTIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDE3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEwLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wODAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTcud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wOTIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AxMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDY0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mzcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI1
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTAu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMi53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTkud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDUzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM0LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDM2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDcwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzgubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A0MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI1Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQ1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Nzkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3AzOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1OC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMzAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDYxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AyOS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wOTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzOC5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU0Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDk2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM1
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDU1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDM0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjkubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AxMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDEzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDY2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc0Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3
dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3
dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZs
YWQud3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dy54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cy
LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cx
LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUz
bHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzIubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dzEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02
bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFo
djI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdAorICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9u
CisgICAgICAgICAwYjo4Yjo1NTo2YTpiNDo2NTphODoyYTozYjpjMDo2MjowZTo4NTpkNTpkYzo5
OTo5ZjozZjoKKyAgICAgICAgIGQwOmI3OmZmOmNiOmI2OjY4OmU1OmFlOmQzOmEyOjRlOmM4OmQ0
OmFhOjM0Ojk1OmU0OjllOgorICAgICAgICAgNGI6ZTQ6NzQ6ZTQ6YzQ6ZWM6MTE6MzE6Njc6ZTU6
YTY6ZGE6ODU6NmI6MGY6ZDc6NjQ6Yjc6CisgICAgICAgICBlNzplYjpmZTowOTpiNjo4ODplMTo3
NDoxZDowYzoxNTphMzoyZTowMTowMzpmYzo2Nzo5YzoKKyAgICAgICAgIDdjOmJhOmU2OmZiOjUy
OjFkOjU4OmNkOjY4OmEzOjU1OjhjOjliOjU3OmJiOjg5OjMyOjEwOgorICAgICAgICAgNDE6NzE6
OTk6YTM6MWE6ZGM6MjU6MmQ6ZDA6Yjk6MWE6YWY6ZTY6NzY6NDA6ZDc6ZjU6MjM6CisgICAgICAg
ICBhOTpkODo1OTo0NTo4YTphYjo1Mzo1Mzo4NzpjYzoxNDpiMzo4NzpkZToxZDowMTo5OTo3YToK
KyAgICAgICAgIDRmOjcyOjQ3OjY5OjljOjk4OjczOjk0Ojc5OjkwOjI1OjcwOjAyOmVjOjc1OmIy
Ojc3OjExOgorICAgICAgICAgMjg6OTc6Y2Q6NDM6M2Q6ZDU6Njg6Mzg6NzM6NzE6ZmQ6YTk6MGI6
YTI6ZWQ6MmQ6MWM6NmU6CisgICAgICAgICBlMTowNTpkNDozMDphNjo2NDowNDoxMDpjYTplODpl
NjplMDo3YTphOTpmNDoyNjo5NDo2YjoKKyAgICAgICAgIGE0OjI4OmFhOjBjOmViOjNlOmUwOmVm
OmQyOmJlOjBiOjcwOmU0OmRkOjRjOmZjOmEyOjg3OgorICAgICAgICAgMGM6MjQ6ODM6NzI6ZTI6
ZTQ6NmY6MjU6YTg6ZWU6YzU6MTI6ODk6ZDk6ZGQ6OGY6ODI6MTQ6CisgICAgICAgICBjMzpkNjow
NjphZToxZDpiYjo3YjozYzpmYzo5YjoyNzo1Njo1MDpiNDoyODo0NDo2MDo4MDoKKyAgICAgICAg
IDE3Ojg3OjFjOmIxOmNlOjZkOjc3OmI0OmQxOjJiOjMyOmU4OmQwOmJhOjA2OjZmOjRkOjA0Ogor
ICAgICAgICAgZmY6NjA6ZmU6ZTMKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJZ3ZE
Q0NINlNnQXdJQkFnSUREZ2ZFTUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5k
bAorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQTBNakF4TVRJd05UWmFGdzB6TURBME1U
Z3hNVEl3TlRaYQorTUJ3eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJ
akFOQmdrcWhraUc5dzBCQVFFRgorQUFPQ0FROEFNSUlCQ2dLQ0FRRUEyOGo3b2dScWNZV3J4ZDQr
NlNPb1BnTklBdUFVeTA2akRteWtrNUVGckk2dAorUmpuZGl3TlpjRXp5em04Szc0U0ZCYzI4S0NH
enNLRHpIakpJN0xCUWh4dHhUSStlbkNvZ0VOZ3hTT25TdVQ0eAorbEZUVWtjWlB4ZUI0ZG1jZlEw
eERaZnhHLzNFVTlzcnJ2bHZSd3J2d1ZuMjFzSmNNRGViOGNwM2dxSWVYQVFmNAorM2RTa3prWUxt
S2JtclIyL09RQStRVVlXQzE4QnhlOGxSelZjUjNyaHBTdDljcm1BaHpTcndSdzRHUmVVNmZCYQor
aWw1MVZQajVTbHdrbE9ldE5uTmxPY1J5QmJ5azhvbVpUSEdGelVsS2RKWERjUDRrMGxiYkR4T0pO
YkxidXFwRgorblUreC83bFBobEFmbWk2anZyTHdQN1BSaGwvQjJZTGZxNzBoUlBKU0NRSURBUUFC
bzRJZUJEQ0NIZ0F3Q1FZRAorVlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVZVpiaGx2TjhRU3M3bnhz
TjFxbTR0MC9tWVZ3d0h3WURWUjBqQkJndworRm9BVTlybmFGZ2NGdTIvSll6REdaMERMQTlNZWtP
d3dDd1lEVlIwUEJBUURBZ1hnTUJNR0ExVWRKUVFNTUFvRworQ0NzR0FRVUZCd01CTUlJZGp3WURW
UjBSQklJZGhqQ0NIWUtDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdgorY0RndWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZXOXdOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBNQorTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzV2
ZEMxMworWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdoVnZjRE11ZDJWaQorTFhCc1lYUm1iM0p0TG5SbGMzU0NGVzl3TWk1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJVmIzQXhMbmRsWWkxdworYkdGMFptOXliUzUwWlhOMGdoVjNkM2N1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU9DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJ
V2IzQTROUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE9TNTNaV0l0Y0d4aAorZEdadmNt
MHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM01pNTNaV0l0Y0d4
aAorZEdadmNtMHVkR1Z6ZElJV2IzQXlOQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBME1T
NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTNPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBNU1TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTFPUzUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBek9TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJNQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2Iz
QXlPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0Y0d4aAorZEdadmNtMHVk
R1Z6ZElJV2IzQXhOQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0Y0d4aAor
ZEdadmNtMHVkR1Z6ZElJV2IzQTBNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM05DNTNa
V0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBeE9DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTNNeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBM055NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXhNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJN
eTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM01TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6
ZElJV2IzQTVOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE5pNTNaV0l0Y0d4aAorZEda
dmNtMHVkR1Z6ZElJV2IzQXpOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU55NTNaV0l0
Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
NU5DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTBOQzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBek15NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTROQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBek1pNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJNUzUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM01DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJ
V2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBME15NTNaV0l0Y0d4aAorZEdadmNt
MHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5pNTNaV0l0Y0d4
aAorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU1p
NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTVPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBNE5pNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBeE55NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTVNQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNU15NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2Iz
QXhNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5TNTNaV0l0Y0d4aAorZEdadmNtMHVk
R1Z6ZElJV2IzQTBOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU1TNTNaV0l0Y0d4aAor
ZEdadmNtMHVkR1Z6ZElJV2IzQTBOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNa
V0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBME9TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBek5TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJOeTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlXYjNBNU1pNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXhO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeE15NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6
ZElJV2IzQTNOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk5DNTNaV0l0Y0d4aAorZEda
dmNtMHVkR1Z6ZElJV2IzQTVOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBek55NTNaV0l0
Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
Mk1pNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTRNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBeU5TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXhNUzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBMU1DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQXpPQzUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE15NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJ
V2IzQTRNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU1DNTNaV0l0Y0d4aAorZEdadmNt
MHVkR1Z6ZElJV2IzQXlNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU15NTNaV0l0Y0d4
aAorZEdadmNtMHVkR1Z6ZElJV2IzQTBNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU1p
NTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTJOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBNU5pNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTROeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2IzQTFNeTUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBek1DNTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJV2Iz
QTBPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBek5DNTNaV0l0Y0d4aAorZEdadmNtMHVk
R1Z6ZElJWmIzQTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXpMbTV2ZEMxMwor
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlaYjNBMQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWegorZElJWmQzZDNMbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
WmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBNExtNXZkQzEzWldJdAorY0d4aGRHWnZjbTB1ZEdWemRJSVpi
M0E1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F4TG01dgorZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQXpOaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQworR205
d05UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXdMbTV2ZEMxM1pXSXRjR3ho
ZEdadgorY20wdWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d016RXVibTkwTFhkbAorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RrMUxtNXZkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBNAorTXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAorWlhOMGdocHZjRGN6TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F4T1M1dWIzUXRkMlZpTFhCcworWVhSbWIzSnRMblJsYzNT
Q0dtOXdNakV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd4TG01dgorZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTNNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
QworR205d056Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUXdMbTV2ZEMxM1pX
SXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNBeU5TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDR205d05qVXVibTkwTFhkbAorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNaTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNAorTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TlRJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAorWlhOMGdocHZjRFk0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCcworWVhSbWIzSnRM
blJsYzNTQ0dtOXdOekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGN5TG01dgor
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQworR205d09Ea3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2
ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNBM055NXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDR205d056a3VibTkwTFhkbAorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RneUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhZDNkMworTG5kM2R6RXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3TVRJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAorWlhOMGdocHZjRE01
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwTkM1dWIzUXRkMlZpTFhCcworWVhS
bWIzSnRMblJsYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFU0
TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhOQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQworR205d016QXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
WXlMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNBMk1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhkbAorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNQorT0M1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAorWlhOMGdo
cHZjREkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TWk1dWIzUXRkMlZpTFhC
cworWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRE00TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpNeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQworR205d01qTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEVTNMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNBMU5DNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09EVXVibTkwTFhkbAorWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RRMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNQorTnk1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MAor
WlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1Tmk1dWIzUXRk
MlZpTFhCcworWVhSbWIzSnRMblJsYzNTQ0dtOXdOVEV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFF4TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQworR205d09Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEUXlMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNBMk55NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d016Y3VibTkwTFhkbAorWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RRNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMQorTlM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRZdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MAorWlhOMGdocHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6TkM1
dWIzUXRkMlZpTFhCcworWVhSbWIzSnRMblJsYzNTQ0dtOXdOamt1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjREV4TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVN
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQworR25kM2R6RXVkM2QzTG5kbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpkSUlhYjNB
eE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01qQXVibTkwTFhkbAorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RjMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
eQorTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TVRjdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MAorWlhOMGdocHZjRGMxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0F4TlM1dWIzUXRkMlZpTFhCcworWVhSbWIzSnRMblJsYzNTQ0dtOXdORGN1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjREU0TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTJNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQworR205d01qZ3VibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUXpMbTV2ZEMxM1pXSXRjR3hoZEdadgorY20wdWRHVnpk
SUlhYjNBMk5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVkM2QzTG5kbAor
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RreExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhYjNBMworTkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MAorWlhOMGdocHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0E0Tnk1dWIzUXRkMlZpTFhCcworWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEF1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREUyTG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJYmQzZDNNUzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAorZ2h0M2QzY3lMbmQz
ZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDNkekl1ZDNkM01TNTNaV0l0Y0d4aAorZEda
dmNtMHVkR1Z6ZElJYmQzZDNNUzUzZDNjeExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoMTNkM2N1
ZDNkMworTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVlRzR0TFd4MlpTMDJiR0ZrTG5k
bFlpMXdiR0YwWm05eQorYlM1MFpYTjBnaDUzZDNjeExuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0huZDNkeTUzZDNjeQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWVk
M2QzTWk1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQorYlM1MFpYTjBnaDUzZDNjdWQzZDNNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkMworTWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbQorYjNKdExu
UmxjM1NDSDNkM2R6RXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpF
dQorZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpD
NTNkM2N1ZDJWaQorTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbAorYzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0kzZDNkekl1ZUc0dAorTFd4MlpTMDJiR0ZrTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2lONGJpMHRiSFpsTFRac1lXUXVkM2QzTWk1MworWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdAorTG5SbGMzU0NJ
M2QzZHpFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaVo0YmkwdAor
YkhabExUWnNZV1F1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUltZDNkM0xuaHVM
UzFzZG1VdAorTm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSjNodUxTMXNkbVV0
Tm14aFpDNTNkM2N4TG01dgorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJbmQzZDNNaTU0Ymkw
dGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxdworYkdGMFptOXliUzUwWlhOMGdpZDNkM2N4TG5odUxT
MXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdAorTG5SbGMzU0NKM2h1TFMxc2RtVXRO
bXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJcAorZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NLM2h1TFMxcworZG1V
dE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xYZDNkeTU0
YmkwdAorYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
dGVHNHRMVzQ0YWpaaworY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2kxNGJpMHRiamhxTm1SegorTlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDTG5kM2R6RXVlRzR0TFc0NAorYWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5odUxTMXVPR28yWkhNMQorTTJ4M2QydHljV2gyTWpo
aExuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5odUxTMXVPR28yWkhNMQorTTJ4M2Qy
dHljV2gyTWpoaExuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTG5kM2R6SXVlRzR0TFc0
NAorYWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTDNodUxT
MXNkbVV0Tm14aAorWkM1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2pGM2QzY3VlRzR0TFc0NAorYWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0YmpocQorTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNj
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnako0YmkwdAorYmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1M2QzY3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJeQorZDNkM01TNTRi
aTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbAor
YzNTQ01uZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdi
R0YwWm05eQorYlM1MFpYTjBnako0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4
TG01dmRDMTNaV0l0Y0d4aAorZEdadmNtMHVkR1Z6ZElJMmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNK
eGFIWXlPR0V1ZUc0dExXeDJaUzAyYkdGaworTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJp
MHRiSFpsTFRac1lXUXVlRzR0TFc0NGFqWmtjelV6YkhkMworYTNKeGFIWXlPR0V1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMgorTWpoaExuaHVMUzFz
ZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFzZG1VdAorTm14
aFpDNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbAorYzNTQ1FYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhN
MU0yeDNkMnR5Y1doMgorTWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdrVjRiaTB0YmpocU5t
UnpOVE5zZDNkcmNuRm9kakk0WVM1NAorYmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3RFFZSgorS29aSWh2Y05BUUVMQlFBRGdnRUJBQXVM
VldxMFphZ3FPOEJpRG9YVjNKbWZQOUMzLzh1MmFPV3UwNkpPeU5TcQorTkpYa25rdmtkT1RFN0JF
eForV20yb1ZyRDlka3QrZnIvZ20yaU9GMEhRd1ZveTRCQS94bm5IeTY1dnRTSFZqTgorYUtOVmpK
dFh1NGt5RUVGeG1hTWEzQ1V0MExrYXIrWjJRTmYxSTZuWVdVV0txMU5UaDh3VXM0ZmVIUUdaZWs5
eQorUjJtY21IT1VlWkFsY0FMc2RiSjNFU2lYelVNOTFXZzRjM0g5cVF1aTdTMGNidUVGMURDbVpB
UVF5dWptNEhxcAorOUNhVWE2UW9xZ3pyUHVEdjByNExjT1RkVFB5aWh3d2tnM0xpNUc4bHFPN0ZF
b25aM1krQ0ZNUFdCcTRkdTNzOAorL0pzblZsQzBLRVJnZ0JlSEhMSE9iWGUwMFNzeTZOQzZCbTlO
QlA5Zy91TT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jb25m
aWcuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9jb25maWcuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmE2ZDA1MjlmYjk0NDljNGJm
YjBjOTM1NDZhNzk2MmE1YWJkMjJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29u
CkBAIC0wLDAgKzEsMTcgQEAKK3sKKyAgICAicG9ydHMiOiB7CisgICAgICAgICJodHRwIjogW10s
CisgICAgICAgICJodHRwcyI6IFsiYXV0byJdLAorICAgICAgICAid3MiOiBbXSwKKyAgICAgICAg
IndzcyI6IFtdCisgICAgfSwKKyAgICAiY2hlY2tfc3ViZG9tYWlucyI6IGZhbHNlLAorICAgICJz
c2wiOiB7CisgICAgICAgICJ0eXBlIjogIm9wZW5zc2wiLAorICAgICAgICAib3BlbnNzbCI6IHsK
KyAgICAgICAgICAgICJkdXJhdGlvbiI6IDM2NTAsCisgICAgICAgICAgICAiZm9yY2VfcmVnZW5l
cmF0ZSI6IGZhbHNlLAorICAgICAgICAgICAgImJhc2VfcGF0aCI6ICJ0b29scy9jZXJ0cyIKKyAg
ICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy93
M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWZjNWExOWYzY2I5ZDY0MzNhZTQzNDM1MTNlODQ0
NWRlODQ4ODkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAg
KzEsMjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2Vy
dC5wZW0KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvY2VydHMvY29uZmlnLmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRz
Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ0MzIyZWVkM2JhZjQ2N2M2ZDgwOWZjMjZhYzk1ODU5ODk0MjMx
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAg
InNlcnZlcXVpYyI6IHsKKyAgICAicGF0aCI6ICJzZXJ2ZS5weSIsCisgICAgInNjcmlwdCI6ICJy
dW4iLAorICAgICJwYXJzZXIiOiAiZ2V0X3BhcnNlciIsCisgICAgInB5M29ubHkiOiB0cnVlLAor
ICAgICJoZWxwIjogIlN0YXJ0IHRoZSBRVUlDIHNlcnZlciIsCisgICAgInZpcnR1YWxlbnYiOiB0
cnVlLAorICAgICJyZXF1aXJlbWVudHMiOiBbCisgICAgICAicmVxdWlyZW1lbnRzLnR4dCIKKyAg
ICBdCisgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFu
c3BvcnRfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMDRhZDE3ZjE5NWM2ZTVkMjMzZTg0YTliMjM5
MDRjY2NmZWNjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRfc2VydmVyLnB5CkBA
IC0wLDAgKzEsMjQ2IEBACisjIS91c3IvYmluL2VudiBweXRob24zCitpbXBvcnQgYXJncGFyc2UK
K2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaW8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2lt
cG9ydCByZQoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHVybGxpYi5wYXJzZQorZnJvbSB0eXBpbmcg
aW1wb3J0IERpY3QsIE9wdGlvbmFsCisKK2Zyb20gYWlvcXVpYy5hc3luY2lvIGltcG9ydCBRdWlj
Q29ubmVjdGlvblByb3RvY29sLCBzZXJ2ZQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlv
biBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24g
aW1wb3J0IEVORF9TVEFURVMKK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFt
RGF0YVJlY2VpdmVkLCBRdWljRXZlbnQKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25U
aWNrZXQKKworU0VSVkVSX05BTUUgPSAnYWlvcXVpYy10cmFuc3BvcnQnCisKK2hhbmRsZXJzX3Bh
dGggPSBOb25lCisKKworY2xhc3MgRXZlbnRIYW5kbGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjb25uZWN0aW9uOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBnbG9iYWxfZGljdDogRGljdCk6
CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5nbG9i
YWxfZGljdCA9IGdsb2JhbF9kaWN0CisKKyAgICBkZWYgaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9u
KAorICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgIG9yaWdpbjogc3RyLAorICAgICAgICAg
ICAgcXVlcnk6IERpY3Rbc3RyLCBzdHJdKSAtPiBOb25lOgorICAgICAgICBuYW1lID0gJ2hhbmRs
ZV9jbGllbnRfaW5kaWNhdGlvbicKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmdsb2JhbF9kaWN0
OgorICAgICAgICAgICAgc2VsZi5nbG9iYWxfZGljdFtuYW1lXShzZWxmLmNvbm5lY3Rpb24sIG9y
aWdpbiwgcXVlcnkpCisKKyAgICBkZWYgaGFuZGxlX2V2ZW50KHNlbGYsIGV2ZW50OiBRdWljRXZl
bnQpIC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSAnaGFuZGxlX2V2ZW50JworICAgICAgICBpZiBu
YW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6CisgICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25h
bWVdKHNlbGYuY29ubmVjdGlvbiwgZXZlbnQpCisKKworY2xhc3MgUXVpY1RyYW5zcG9ydFByb3Rv
Y29sKFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoq
a3dhcmdzKQorICAgICAgICBzZWxmLnN0cmVhbXMgPSBkaWN0KCkKKyAgICAgICAgc2VsZi5wZW5k
aW5nX2V2ZW50cyA9IFtdCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZmluaXNoZWQg
PSBGYWxzZQorICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgPSBiJycKKyAgICAg
ICAgc2VsZi5oYW5kbGVyID0gTm9uZQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2ZWQoc2Vs
ZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgcHJlZml4ID0gJyEhJworICAg
ICAgICBsb2dnaW5nLmxvZyhsb2dnaW5nLklORk8sICdRVUlDIGV2ZW50OiAlcycgJSB0eXBlKGV2
ZW50KSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgKG5vdCBzZWxmLmNsaWVudF9pbmRp
Y2F0aW9uX2ZpbmlzaGVkIGFuZAorICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGV2ZW50
LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFuZAorICAgICAgICAgICAgICAgICAgICBldmVudC5zdHJl
YW1faWQgPT0gMik6CisgICAgICAgICAgICAgICAgIyBjbGllbnQgaW5kaWNhdGlvbiBwcm9jZXNz
CisgICAgICAgICAgICAgICAgcHJlZml4ID0gJ0NsaWVudCBpbmRpY2F0aW9uIGVycm9yOiAnCisg
ICAgICAgICAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9kYXRhICs9IGV2ZW50LmRhdGEK
KyAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9kYXRhKSA+IDY1
NTM1OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RvbyBsYXJnZSBkYXRh
IGZvciBjbGllbnQgaW5kaWNhdGlvbicpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQuZW5kX3N0
cmVhbToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2NsaWVudF9pbmRpY2F0aW9u
KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5pc19jbG9zaW5nX29yX2Nsb3NlZCgpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIHByZWZp
eCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAgICAgICAgICAgICAgICBmb3IgZSBp
biBzZWxmLnBlbmRpbmdfZXZlbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5k
bGVyLmhhbmRsZV9ldmVudChlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZl
bnRzLmNsZWFyKCkKKyAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuY2xpZW50X2luZGljYXRpb25f
ZmluaXNoZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX2V2ZW50cy5hcHBlbmQoZXZl
bnQpCisgICAgICAgICAgICBlbGlmIHNlbGYuaGFuZGxlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgICAgICBwcmVmaXggPSAnRXZlbnQgaGFuZGxpbmcgRXJyb3I6ICcKKyAgICAgICAgICAgICAg
ICBzZWxmLmhhbmRsZXIuaGFuZGxlX2V2ZW50KGV2ZW50KQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmhhbmRsZXIgPSBOb25lCisgICAgICAgICAgICBs
b2dnaW5nLmxvZyhsb2dnaW5nLldBUk4sIHByZWZpeCArIHN0cihlKSkKKyAgICAgICAgICAgIHNl
bGYuY2xvc2UoKQorCisgICAgZGVmIHBhcnNlX2NsaWVudF9pbmRpY2F0aW9uKHNlbGYsIGJzKToK
KyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGtleV9iID0gYnMucmVhZCgyKQorICAg
ICAgICAgICAgaWYgbGVuKGtleV9iKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybgorICAg
ICAgICAgICAgbGVuZ3RoX2IgPSBicy5yZWFkKDIpCisgICAgICAgICAgICBpZiBsZW4oa2V5X2Ip
ICE9IDI6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQgdG8gZ2V0ICJL
ZXkiIGZpZWxkJykKKyAgICAgICAgICAgIGlmIGxlbihsZW5ndGhfYikgIT0gMjoKKyAgICAgICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBnZXQgIkxlbmd0aCIgZmllbGQnKQor
ICAgICAgICAgICAga2V5ID0gc3RydWN0LnVucGFjaygnIUgnLCBrZXlfYilbMF0KKyAgICAgICAg
ICAgIGxlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFIJywgbGVuZ3RoX2IpWzBdCisgICAgICAgICAg
ICB2YWx1ZSA9IGJzLnJlYWQobGVuZ3RoKQorICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSAhPSBs
ZW5ndGg6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCd0cnVuY2F0ZWQgIlZhbHVl
IiBmaWVsZCcpCisgICAgICAgICAgICB5aWVsZCAoa2V5LCB2YWx1ZSkKKworICAgIGRlZiBwcm9j
ZXNzX2NsaWVudF9pbmRpY2F0aW9uKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIG9yaWdpbiA9IE5v
bmUKKyAgICAgICAgb3JpZ2luX3N0cmluZyA9IE5vbmUKKyAgICAgICAgcGF0aCA9IE5vbmUKKyAg
ICAgICAgcGF0aF9zdHJpbmcgPSBOb25lCisgICAgICAgIEtFWV9PUklHSU4gPSAwCisgICAgICAg
IEtFWV9QQVRIID0gMQorICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYucGFyc2VfY2xp
ZW50X2luZGljYXRpb24oCisgICAgICAgICAgICAgICAgaW8uQnl0ZXNJTyhzZWxmLmNsaWVudF9p
bmRpY2F0aW9uX2RhdGEpKToKKyAgICAgICAgICAgIGlmIGtleSA9PSBLRVlfT1JJR0lOOgorICAg
ICAgICAgICAgICAgIG9yaWdpbl9zdHJpbmcgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAg
ICAgIG9yaWdpbiA9IHVybGxpYi5wYXJzZS51cmxwYXJzZShvcmlnaW5fc3RyaW5nKQorICAgICAg
ICAgICAgZWxpZiBrZXkgPT0gS0VZX1BBVEg6CisgICAgICAgICAgICAgICAgcGF0aF9zdHJpbmcg
PSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIHBhdGggPSB1cmxsaWIucGFyc2UudXJs
cGFyc2UocGF0aF9zdHJpbmcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMg
V2UgbXVzdCBpZ25vcmUgdW5yZWNvZ25pemVkIGZpZWxkcy4KKyAgICAgICAgICAgICAgICBwYXNz
CisgICAgICAgIGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywKKyAgICAgICAgICAgICAgICAgICAg
J29yaWdpbiA9ICVzLCBwYXRoID0gJXMnICUgKG9yaWdpbl9zdHJpbmcsIHBhdGhfc3RyaW5nKSkK
KyAgICAgICAgaWYgb3JpZ2luIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J05vIG9yaWdpbiBpcyBnaXZlbicpCisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignTm8gcGF0aCBpcyBnaXZlbicpCisgICAgICAgIGlmIG9yaWdp
bi5zY2hlbWUgIT0gJ2h0dHBzJyBhbmQgb3JpZ2luLnNjaGVtZSAhPSAnaHR0cCc6CisgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5n
KQorICAgICAgICBpZiBvcmlnaW4ubmV0bG9jID09ICcnOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdJbnZhbGlkIG9yaWdpbjogJXMnICUgb3JpZ2luX3N0cmluZykKKworICAgICAgICAj
IFRvIG1ha2UgdGhlIHNpdHVhdGlvbiBzaW1wbGUgd2UgYWNjZXB0IG9ubHkgc2ltcGxlIHBhdGgg
c3RyaW5ncy4KKyAgICAgICAgbSA9IHJlLmNvbXBpbGUoJ14vKFthLXpBLVowLTlcLl9cLV0rKSQn
KS5tYXRjaChwYXRoLnBhdGgpCisgICAgICAgIGlmIG0gaXMgTm9uZToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignSW52YWxpZCBwYXRoOiAlcycgJSBwYXRoX3N0cmluZykKKworICAgICAg
ICBoYW5kbGVyX25hbWUgPSBtLmdyb3VwKDEpCisgICAgICAgIHF1ZXJ5ID0gZGljdCh1cmxsaWIu
cGFyc2UucGFyc2VfcXNsKHBhdGgucXVlcnkpKQorICAgICAgICBzZWxmLmhhbmRsZXIgPSBzZWxm
LmNyZWF0ZV9ldmVudF9oYW5kbGVyKGhhbmRsZXJfbmFtZSkKKyAgICAgICAgc2VsZi5oYW5kbGVy
LmhhbmRsZV9jbGllbnRfaW5kaWNhdGlvbihvcmlnaW5fc3RyaW5nLCBxdWVyeSkKKyAgICAgICAg
aWYgc2VsZi5pc19jbG9zaW5nX29yX2Nsb3NlZCgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZmluaXNoZWQgPSBUcnVlCisgICAgICAgIGxvZ2dp
bmcubG9nKGxvZ2dpbmcuSU5GTywgJ0NsaWVudCBpbmRpY2F0aW9uIGZpbmlzaGVkJykKKworICAg
IGRlZiBjcmVhdGVfZXZlbnRfaGFuZGxlcihzZWxmLCBoYW5kbGVyX25hbWU6IHN0cikgLT4gTm9u
ZToKKyAgICAgICAgZ2xvYmFsX2RpY3QgPSB7fQorICAgICAgICB3aXRoIG9wZW4oaGFuZGxlcnNf
cGF0aCArICcvJyArIGhhbmRsZXJfbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGV4ZWMoZi5yZWFk
KCksIGdsb2JhbF9kaWN0KQorICAgICAgICByZXR1cm4gRXZlbnRIYW5kbGVyKHNlbGYsIGdsb2Jh
bF9kaWN0KQorCisgICAgZGVmIGlzX2Nsb3Npbmdfb3JfY2xvc2VkKHNlbGYpIC0+IGJvb2w6Cisg
ICAgICAgIGlmIHNlbGYuX3F1aWMuX2Nsb3NlX3BlbmRpbmc6CisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICBpZiBzZWxmLl9xdWljLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworY2xhc3MgU2Vzc2lv
blRpY2tldFN0b3JlOgorICAgICcnJworICAgIFNpbXBsZSBpbi1tZW1vcnkgc3RvcmUgZm9yIHNl
c3Npb24gdGlja2V0cy4KKyAgICAnJycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLnRpY2tldHM6IERpY3RbYnl0ZXMsIFNlc3Npb25UaWNrZXRdID0ge30K
KworICAgIGRlZiBhZGQoc2VsZiwgdGlja2V0OiBTZXNzaW9uVGlja2V0KSAtPiBOb25lOgorICAg
ICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0aWNrZXQKKworICAgIGRlZiBwb3Ao
c2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBPcHRpb25hbFtTZXNzaW9uVGlja2V0XToKKyAgICAgICAg
cmV0dXJuIHNlbGYudGlja2V0cy5wb3AobGFiZWwsIE5vbmUpCisKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlw
dGlvbj0nUVVJQyBzZXJ2ZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICct
YycsCisgICAgICAgICctLWNlcnRpZmljYXRlJywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAg
IHJlcXVpcmVkPVRydWUsCisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBjZXJ0aWZpY2F0ZSBm
cm9tIHRoZSBzcGVjaWZpZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICctLWhvc3QnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgZGVmYXVsdD0n
OjonLAorICAgICAgICBoZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBhZGRyZXNzIChkZWZh
dWx0cyB0byA6OiknLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAn
LS1wb3J0JywKKyAgICAgICAgdHlwZT1pbnQsCisgICAgICAgIGRlZmF1bHQ9NDQzMywKKyAgICAg
ICAgaGVscD0nbGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCAoZGVmYXVsdHMgdG8gNDQzMykn
LAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLWsnLAorICAgICAg
ICAnLS1wcml2YXRlLWtleScsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1U
cnVlLAorICAgICAgICBoZWxwPSdsb2FkIHRoZSBUTFMgcHJpdmF0ZSBrZXkgZnJvbSB0aGUgc3Bl
Y2lmaWVkIGZpbGUnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAn
LS1oYW5kbGVycy1wYXRoJywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRy
dWUsCisgICAgICAgIGhlbHA9J3RoZSBkaXJlY3RvcnkgcGF0aCBvZiBRdWljVHJhbnNwb3J0IGV2
ZW50IGhhbmRsZXJzJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAg
Jy12JywKKyAgICAgICAgJy0tdmVyYm9zZScsCisgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
CisgICAgICAgIGhlbHA9J2luY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5JworICAgICkKKyAgICBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAg
ICAgICAgZm9ybWF0PSclKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2Fn
ZSlzJywKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBs
b2dnaW5nLklORk8sCisgICAgKQorCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0
aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29scz1bJ3dxLXZ2di0wMSddICsgWydzaWR1Y2snXSwK
KyAgICAgICAgaXNfY2xpZW50PUZhbHNlLAorICAgICAgICBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6
ZT02NTUzNiwKKyAgICApCisKKyAgICBoYW5kbGVyc19wYXRoID0gb3MucGF0aC5hYnNwYXRoKG9z
LnBhdGguZXhwYW5kdXNlcihhcmdzLmhhbmRsZXJzX3BhdGgpKQorICAgIGxvZ2dpbmcubG9nKGxv
Z2dpbmcuSU5GTywgJ3BvcnQgPSAlcycgJSBhcmdzLnBvcnQpCisgICAgbG9nZ2luZy5sb2cobG9n
Z2luZy5JTkZPLCAnaGFuZGxlcnMgcGF0aCA9ICVzJyAlIGhhbmRsZXJzX3BhdGgpCisKKyAgICAj
IGxvYWQgU1NMIGNlcnRpZmljYXRlIGFuZCBrZXkKKyAgICBjb25maWd1cmF0aW9uLmxvYWRfY2Vy
dF9jaGFpbihhcmdzLmNlcnRpZmljYXRlLCBhcmdzLnByaXZhdGVfa2V5KQorCisgICAgdGlja2V0
X3N0b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9l
dmVudF9sb29wKCkKKyAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgc2VydmUo
CisgICAgICAgICAgICBhcmdzLmhvc3QsCisgICAgICAgICAgICBhcmdzLnBvcnQsCisgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9UXVpY1RyYW5zcG9ydFByb3RvY29sLAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRf
ZmV0Y2hlcj10aWNrZXRfc3RvcmUucG9wLAorICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFu
ZGxlcj10aWNrZXRfc3RvcmUuYWRkLAorICAgICAgICApCisgICAgKQorICAgIHRyeToKKyAgICAg
ICAgbG9vcC5ydW5fZm9yZXZlcigpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAg
ICAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3F1aWMvcmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE2NTI2MGM3OGY3YWM4NTc5YmQ5MTFiY2Y5Y2NlNjM2NDVjODBlNDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3F1aWMvcmVxdWlyZW1lbnRzLnR4dApAQCAtMCwwICsxIEBACithaW9xdWljPT0wLjgu
NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL3NlcnZlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4OTNmMjVlMjdiZGIz
YWZkNGJmMzk5MjFlOTZhYmRjYzQyMzNmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKQEAg
LTAsMCArMSwyOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgYXJncGFyc2UK
K2ltcG9ydCBzeXMKKworCitkZWYgZ2V0X3BhcnNlcigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNl
LkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0idHVybiBvbiB2ZXJib3NlIGxvZ2dpbmciKQorICAgIHJldHVybiBwYXJzZXIKKwor
CitkZWYgcnVuKHZlbnYsICoqa3dhcmdzKToKKyAgICAjIFRPRE8oSGV4Y2xlcyk6IFJlcGxhY2Ug
dGhpcyB3aXRoIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4KKyAgICBwcmludChzeXMudmVyc2lvbikK
KyAgICBhc3NlcnQgc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAzCisgICAgaW1wb3J0IGFpb3F1
aWMKKyAgICBwcmludCgnYWlvcXVpYzogJyArIGFpb3F1aWMuX192ZXJzaW9uX18pCisKKworZGVm
IG1haW4oKToKKyAgICBrd2FyZ3MgPSB2YXJzKGdldF9wYXJzZXIoKS5wYXJzZV9hcmdzKCkpCisg
ICAgcmV0dXJuIHJ1bihOb25lLCAqKmt3YXJncykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQubG9n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM3ZDU0NTllMTUxZjJlNDI5MzlkZTk5NTdiNTE1MzNhYmE2YTBkZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMiBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL1JF
QURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9yZXF1aXJlbWVudHMudHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19mbGFrZTgudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1
aXJlbWVudHNfZmxha2U4LnR4dAppbmRleCAwYTQ1MjI0MDE2NDE3Y2RkYmY1OTIwOTE5NjM4MGNj
ZTBhMDg5ZWRmLi5hZTE2YmUzOTU1ZmJmM2Q1ZmE5NjQ4OTY3YzZjOGQzOTc1MTkwMTNkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3JlcXVpcmVtZW50c19mbGFrZTgudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKQEAgLTEsNCAr
MSw0IEBACi1mbGFrZTg9PTMuNy45Ci1weWNvZGVzdHlsZT09Mi41LjAKLXB5Zmxha2VzPT0yLjEu
MQotcGVwOC1uYW1pbmc9PTAuOS4xCitmbGFrZTg9PTMuOC4yCitweWNvZGVzdHlsZT09Mi42LjAK
K3B5Zmxha2VzPT0yLjIuMAorcGVwOC1uYW1pbmc9PTAuMTAuMApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNf
bXlweS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3JlcXVpcmVtZW50c19teXB5LnR4dAppbmRleCAxOTRmNDI4NGIyNjkwM2IxZmFmOTY5YjZh
YjVkMzBmNWM0OGViNTYyLi45ODhmZmU4NDgxNzRmNzIxNTI3OGMyYzQwMTlmOTI0YmVkM2E2MWY1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dApAQCAtMSwz
ICsxLDMgQEAKLW15cHk9PTAuNzUwCitteXB5PT0wLjc3MAogbXlweS1leHRlbnNpb25zPT0wLjQu
MwotdHlwZWQtYXN0PT0xLjQuMAordHlwZWQtYXN0PT0xLjQuMQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcmVwb3J0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9y
dW5uZXIvcmVwb3J0LnB5CmluZGV4IDVlYjhkNjdjN2Y2ZGE5YzVmZDAxZGU4ZGU0MGY1Y2M5MmMx
MWJlOTAuLmU5OTg2ZmRiMzk4MjVjZDVlNDlmOGQ0YTE1OGM3OTQ4YWQ1MjgxZTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVu
bmVyL3JlcG9ydC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkKQEAgLTUsMTAgKzUsMTEgQEAgZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQganNv
bgogaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCisKIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci0KLWltcG9ydCB0eXBlcworZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcwogCiAKIGRlZiBodG1sX2VzY2FwZShpdGVtLCBlc2NhcGVfcXVv
dGU9RmFsc2UpOgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBOb2RlKG9iamVjdCk6CiAgICAgICAg
ICAgICBhdHRyc191bmljb2RlID0gIiAiICsgIiAiLmpvaW4oIiVzPVwiJXNcIiIgJSAoaHRtbF9l
c2NhcGUoa2V5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBodG1sX2VzY2FwZSh2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVfcXVv
dGU9VHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gc2VsZi5hdHRycy5pdGVyaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5hdHRycykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhdHRyc191bmljb2RlID0gIiIK
ICAgICAgICAgcmV0dXJuICI8JXMlcz4lczwvJXM+XG4iICUgKHNlbGYubmFtZSwKQEAgLTE1Nyw3
ICsxNTgsNyBAQCBkZWYgdGVzdF9pZChpZCk6CiAKIGRlZiBhbGxfdGVzdHMoZGF0YSk6CiAgICAg
dGVzdHMgPSBkZWZhdWx0ZGljdChzZXQpCi0gICAgZm9yIFVBLCByZXN1bHRzIGluIGRhdGEuaXRl
cml0ZW1zKCk6CisgICAgZm9yIFVBLCByZXN1bHRzIGluIGl0ZXJpdGVtcyhkYXRhKToKICAgICAg
ICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzWyJyZXN1bHRzIl06CiAgICAgICAgICAgICBpZCA9IHRl
c3RfaWQocmVzdWx0WyJ0ZXN0Il0pCiAgICAgICAgICAgICB0ZXN0c1tpZF0gfD0ge3N1YnRlc3Rb
Im5hbWUiXSBmb3Igc3VidGVzdCBpbiByZXN1bHRbInN1YnRlc3RzIl19CkBAIC0xODUsNyArMTg2
LDcgQEAgZGVmIGdyb3VwX3Jlc3VsdHMoZGF0YSk6CiAKICAgICByZXN1bHRzX2J5X3Rlc3QgPSBk
ZWZhdWx0ZGljdChyZXN1bHQpCiAKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRl
bXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEpOgogICAgICAgICBm
b3IgdGVzdF9kYXRhIGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAgIGlkID0gdGVz
dF9pZCh0ZXN0X2RhdGFbInRlc3QiXSkKICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdHNfYnlf
dGVzdFtpZF0KQEAgLTIzMCwxMCArMjMxLDEwIEBAIGRlZiB0ZXN0X2xpbmsodGVzdF9pZCwgc3Vi
dGVzdD1Ob25lKToKIGRlZiBzdW1tYXJ5KFVBcywgcmVzdWx0c19ieV90ZXN0KToKICAgICAiIiJS
ZW5kZXIgdGhlIGltcGxlbWVudGF0aW9uIHJlcG9ydCBzdW1tYXJ5IiIiCiAgICAgbm90X3Bhc3Np
bmcgPSBbXQotICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIHJlc3VsdHNfYnlfdGVzdC5pdGVyaXRl
bXMoKToKKyAgICBmb3IgdGVzdCwgcmVzdWx0cyBpbiBpdGVyaXRlbXMocmVzdWx0c19ieV90ZXN0
KToKICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdIGluICgiUEFTUyIsICJPSyIpIGZvciBpdGVt
IGluIHJlc3VsdHNbImhhcm5lc3MiXS52YWx1ZXMoKSk6CiAgICAgICAgICAgICBub3RfcGFzc2lu
Zy5hcHBlbmQoKHRlc3QsIE5vbmUpKQotICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0
X3Jlc3VsdHMgaW4gcmVzdWx0c1sic3VidGVzdHMiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IHN1YnRlc3RfbmFtZSwgc3VidGVzdF9yZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRzWyJzdWJ0
ZXN0cyJdKToKICAgICAgICAgICAgIGlmIG5vdCBhbnkoaXRlbVswXSA9PSAiUEFTUyIgZm9yIGl0
ZW0gaW4gc3VidGVzdF9yZXN1bHRzLnZhbHVlcygpKToKICAgICAgICAgICAgICAgICBub3RfcGFz
c2luZy5hcHBlbmQoKHRlc3QsIHN1YnRlc3RfbmFtZSkpCiAgICAgaWYgbm90X3Bhc3Npbmc6CkBA
IC0yNjAsNyArMjYxLDcgQEAgZGVmIHJlc3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKICAg
ICAgICAgY2xhc3NfPSJ0ZXN0IgogICAgICkKIAotICAgIGZvciBuYW1lLCBzdWJ0ZXN0X3Jlc3Vs
dCBpbiBzb3J0ZWQocmVzdWx0WyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpKToKKyAgICBmb3IgbmFt
ZSwgc3VidGVzdF9yZXN1bHQgaW4gc29ydGVkKGl0ZXJpdGVtcyhyZXN1bHRbInN1YnRlc3RzIl0p
KToKICAgICAgICAgeWllbGQgaC50cigKICAgICAgICAgICAgIGgudGQobmFtZSksCiAgICAgICAg
ICAgICBbc3RhdHVzX2NlbGwoc3RhdHVzLCBtZXNzYWdlKQpAQCAtMjcxLDcgKzI3Miw3IEBAIGRl
ZiByZXN1bHRfcm93cyhVQXMsIHRlc3QsIHJlc3VsdCk6CiAKIGRlZiByZXN1bHRfYm9kaWVzKFVB
cywgcmVzdWx0c19ieV90ZXN0KToKICAgICByZXR1cm4gW2gudGJvZHkocmVzdWx0X3Jvd3MoVUFz
LCB0ZXN0LCByZXN1bHQpKQotICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBpbiBzb3J0ZWQo
cmVzdWx0c19ieV90ZXN0Lml0ZXJpdGVtcygpKV0KKyAgICAgICAgICAgIGZvciB0ZXN0LCByZXN1
bHQgaW4gc29ydGVkKGl0ZXJpdGVtcyhyZXN1bHRzX2J5X3Rlc3QpKV0KIAogCiBkZWYgZ2VuZXJh
dGVfaHRtbChVQXMsIHJlc3VsdHNfYnlfdGVzdCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9y
dW5uZXIuanMKaW5kZXggZGFhZjlkNDVkYTViZmJhNjMyMzU0ZTllZGJkMjg0NmQwNTJkMDAzNS4u
Mjc5NDZlMTM5YjlhYTNiODA2YTFhZDI0NTE1Mzk4OGNmNzhmNzQ0MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVu
bmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcnVubmVyL3J1bm5lci5qcwpAQCAtMTYsMjIgKzE2LDYgQEAgTWFuaWZlc3QucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmdlbmVyYXRlKGxvYWRlZF9jYWxsYmFjayk7CiAgICAgfSwK
IAotICAgIGRvX2xvYWQ6IGZ1bmN0aW9uKGxvYWRlZF9jYWxsYmFjaykgewotICAgICAgICB2YXIg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gNCkg
ewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
ICghKHhoci5zdGF0dXMgPT09IDIwMCB8fCB4aHIuc3RhdHVzID09PSAwKSkgewotICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiTWFuaWZlc3QgIiArIHRoaXMucGF0aCArICIgZmFpbGVk
IHRvIGxvYWQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZGF0YSA9IEpTT04u
cGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICBsb2FkZWRfY2FsbGJhY2soKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpOwotICAgICAgICB4aHIub3BlbigiR0VUIiwgdGhpcy5wYXRo
KTsKLSAgICAgICAgeGhyLnNlbmQobnVsbCk7Ci0gICAgfSwKLQogICAgIGdlbmVyYXRlOiBmdW5j
dGlvbihsb2FkZWRfY2FsbGJhY2spIHsKICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOwogICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CkBA
IC00MSw3ICsyNSw4IEBAIE1hbmlmZXN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICgh
KHhoci5zdGF0dXMgPT09IDIwMCB8fCB4aHIuc3RhdHVzID09PSAwKSkgewogICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiTWFuaWZlc3QgZ2VuZXJhdGlvbiBmYWlsZWQiKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZG9fbG9hZChsb2FkZWRfY2FsbGJhY2spOworICAg
ICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAg
ICAgICAgIGxvYWRlZF9jYWxsYmFjaygpOwogICAgICAgICB9LmJpbmQodGhpcyk7CiAgICAgICAg
IHhoci5vcGVuKCJQT1NUIiwgInVwZGF0ZV9tYW5pZmVzdC5weSIpOwogICAgICAgICB4aHIuc2Vu
ZChudWxsKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5pZmVzdC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5pZmVz
dC5weQppbmRleCA3MTRkMmI1M2IzOWE5ODlkNGYzM2NlMWQ1ODdkNjM0ZDIwYTYxZDQ0Li4xYTI0
ZTE0MzQ3OGVhY2MwZjYyNDMwYjViYmNiMjMzY2M2NTAyNGEwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRhdGVf
bWFuaWZlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5CkBAIC03LDIxICs3LDMwIEBAIGxv
Y2FscGF0aHMgPSBpbXAubG9hZF9zb3VyY2UoImxvY2FscGF0aHMiLCBvcy5wYXRoLmFic3BhdGgo
b3MucGF0aC5qb2luKGhlcmUsIG9zCiAKIHJvb3QgPSBsb2NhbHBhdGhzLnJlcG9fcm9vdAogCi1m
cm9tIG1hbmlmZXN0IGltcG9ydCBtYW5pZmVzdCwgdXBkYXRlCitmcm9tIG1hbmlmZXN0IGltcG9y
dCBtYW5pZmVzdAogCiBkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6CiAgICAgcGF0aCA9IG9z
LnBhdGguam9pbihyb290LCAiTUFOSUZFU1QuanNvbiIpCiAKLSAgICBtYW5pZmVzdF9maWxlID0g
Tm9uZQotICAgIHRyeToKLSAgICAgICAgbWFuaWZlc3RfZmlsZSA9IG1hbmlmZXN0LmxvYWQocm9v
dCwgcGF0aCkKLSAgICBleGNlcHQgbWFuaWZlc3QuTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2g6Ci0g
ICAgICAgIHBhc3MKLSAgICBpZiBtYW5pZmVzdF9maWxlIGlzIE5vbmU6Ci0gICAgICAgIG1hbmlm
ZXN0X2ZpbGUgPSBtYW5pZmVzdC5NYW5pZmVzdCgiLyIpCi0KLSAgICB1cGRhdGUudXBkYXRlKHJv
b3QsIG1hbmlmZXN0X2ZpbGUpCi0KLSAgICBtYW5pZmVzdC53cml0ZShtYW5pZmVzdF9maWxlLCBw
YXRoKQotCi0gICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIild
LCBqc29uLmR1bXBzKHsidXJsIjogIi9NQU5JRkVTVC5qc29uIn0pCisgICAgIyBUT0RPIG1ha2Ug
dGhpcyBkb3dubG9hZCByYXRoZXIgdGhhbiByZWJ1aWxkaW5nIGZyb20gc2NyYXRjaCB3aGVuIHBv
c3NpYmxlCisgICAgbWFuaWZlc3RfZmlsZSA9IG1hbmlmZXN0LmxvYWRfYW5kX3VwZGF0ZShyb290
LCBwYXRoLCAiLyIsIHBhcmFsbGVsPUZhbHNlKQorCisgICAgc3VwcG9ydGVkX3R5cGVzID0gWyJ0
ZXN0aGFybmVzcyIsICJyZWZ0ZXN0IiwgIm1hbnVhbCJdCisgICAgZGF0YSA9IHsiaXRlbXMiOiB7
fSwKKyAgICAgICAgICAgICJ1cmxfYmFzZSI6ICIvIn0KKyAgICBmb3IgaXRlbV90eXBlIGluIHN1
cHBvcnRlZF90eXBlczoKKyAgICAgICAgZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVdID0ge30KKyAg
ICBmb3IgaXRlbV90eXBlLCBwYXRoLCB0ZXN0cyBpbiBtYW5pZmVzdF9maWxlLml0ZXJ0eXBlcygq
c3VwcG9ydGVkX3R5cGVzKToKKyAgICAgICAgdGVzdHNfZGF0YSA9IFtdCisgICAgICAgIGZvciBp
dGVtIGluIHRlc3RzOgorICAgICAgICAgICAgdGVzdF9kYXRhID0gW2l0ZW0udXJsWzE6XV0KKyAg
ICAgICAgICAgIGlmIGl0ZW1fdHlwZSA9PSAicmVmdGVzdCI6CisgICAgICAgICAgICAgICAgdGVz
dF9kYXRhLmFwcGVuZChpdGVtLnJlZmVyZW5jZXMpCisgICAgICAgICAgICB0ZXN0X2RhdGEuYXBw
ZW5kKHt9KQorICAgICAgICAgICAgaWYgaXRlbV90eXBlICE9ICJtYW51YWwiOgorICAgICAgICAg
ICAgICAgIHRlc3RfZGF0YVstMV1bInRpbWVvdXQiXSA9IGl0ZW0udGltZW91dAorICAgICAgICAg
ICAgdGVzdHNfZGF0YS5hcHBlbmQodGVzdF9kYXRhKQorICAgICAgICBhc3NlcnQgcGF0aCBub3Qg
aW4gZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVdCisgICAgICAgIGRhdGFbIml0ZW1zIl1baXRlbV90
eXBlXVtwYXRoXSA9IHRlc3RzX2RhdGEKKworICAgIHJldHVybiBbKCJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vanNvbiIpXSwganNvbi5kdW1wcyhkYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2Vy
dmUvc2VydmUucHkKaW5kZXggMTg2OGIxYTM2ZTUxYzE4NzQ5MWQ3M2FhMjcwODQ4NGRhODgyMDQy
Zi4uNDNmZjdiZDBkZmJhYzVlYWU3NGNiZTQzMjM1ZjAxNmM0ZmUxNGQzNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9z
ZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NlcnZlL3NlcnZlLnB5CkBAIC0zNCw4ICszNCw4IEBAIGZyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdGFuZGFsb25lIGFzIHB5d2Vic29ja2V0CiAKIAogRURJVF9IT1NUU19IRUxQ
ID0gKCJQbGVhc2UgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IFdQVCBzdWJkb21haW5zICIKLSAg
ICAgICAgICAgICAgICAgICAiYXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRj
L2hvc3RzLiAiCi0gICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCisgICAgICAgICAgICAgICAg
ICAgImFyZSBtYXBwZWQgdG8gYSBsb29wYmFjayBkZXZpY2UgaW4gL2V0Yy9ob3N0cy5cbiIKKyAg
ICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9yZy9ydW5u
aW5nLXRlc3RzL2Zyb20tbG9jYWwtc3lzdGVtLmh0bWwjc3lzdGVtLXNldHVwICIKICAgICAgICAg
ICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQogCiAKQEAgLTE3OCw5ICsxNzgsOSBAQCBj
bGFzcyBIdG1sV3JhcHBlckhhbmRsZXIoV3JhcHBlckhhbmRsZXIpOgogCiAgICAgZGVmIGNoZWNr
X2V4cG9zdXJlKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBpZiBzZWxmLmdsb2JhbF90eXBlOgot
ICAgICAgICAgICAgZ2xvYmFscyA9IGIiIgorICAgICAgICAgICAgZ2xvYmFscyA9IHUiIgogICAg
ICAgICAgICAgZm9yIChrZXksIHZhbHVlKSBpbiBzZWxmLl9nZXRfbWV0YWRhdGEocmVxdWVzdCk6
Ci0gICAgICAgICAgICAgICAgaWYga2V5ID09IGIiZ2xvYmFsIjoKKyAgICAgICAgICAgICAgICBp
ZiBrZXkgPT0gImdsb2JhbCI6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHMgPSB2YWx1ZQog
ICAgICAgICAgICAgICAgICAgICBicmVhawogCkBAIC0xODksMjMgKzE4OSwyMyBAQCBjbGFzcyBI
dG1sV3JhcHBlckhhbmRsZXIoV3JhcHBlckhhbmRsZXIpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5nbG9iYWxfdHlwZSkKIAogICAgIGRlZiBfbWV0YV9yZXBsYWNl
bWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIidGltZW91dCI6Ci0g
ICAgICAgICAgICBpZiB2YWx1ZSA9PSBiImxvbmciOgorICAgICAgICBpZiBrZXkgPT0gInRpbWVv
dXQiOgorICAgICAgICAgICAgaWYgdmFsdWUgPT0gImxvbmciOgogICAgICAgICAgICAgICAgIHJl
dHVybiAnPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyI+JwotICAgICAgICBpZiBr
ZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgn
KS5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgiPCIsICImbHQ7IikKKyAgICAgICAgaWYg
a2V5ID09ICJ0aXRsZSI6CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIiYiLCAi
JmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgICAgICAgICAgcmV0dXJuICc8dGl0bGU+
JXM8L3RpdGxlPicgJSB2YWx1ZQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9zY3Jp
cHRfcmVwbGFjZW1lbnQoc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIGlmIGtleSA9PSBiInNj
cmlwdCI6Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5kZWNvZGUoJ3V0Zi04JykucmVw
bGFjZSgiJiIsICImYW1wOyIpLnJlcGxhY2UoJyInLCAiJnF1b3Q7IikKKyAgICAgICAgaWYga2V5
ID09ICJzY3JpcHQiOgorICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUucmVwbGFjZSgiJiIs
ICImYW1wOyIpLnJlcGxhY2UoJyInLCAiJnF1b3Q7IikKICAgICAgICAgICAgIHJldHVybiAnPHNj
cmlwdCBzcmM9IiVzIj48L3NjcmlwdD4nICUgYXR0cmlidXRlCiAgICAgICAgIHJldHVybiBOb25l
CiAKIAogY2xhc3MgV29ya2Vyc0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKLSAgICBnbG9i
YWxfdHlwZSA9IGIiZGVkaWNhdGVkd29ya2VyIgorICAgIGdsb2JhbF90eXBlID0gImRlZGljYXRl
ZHdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55Lndvcmtlci5odG1sIiwgIi5hbnku
anMiLCAiLmFueS53b3JrZXIuanMiKSwKICAgICAgICAgICAgICAgICAgICAgKCIud29ya2VyLmh0
bWwiLCAiLndvcmtlci5qcyIpXQogICAgIHdyYXBwZXIgPSAiIiI8IWRvY3R5cGUgaHRtbD4KQEAg
LTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBXaW5kb3dIYW5kbGVyKEh0bWxXcmFwcGVySGFuZGxlcik6
CiAKIAogY2xhc3MgQW55SHRtbEhhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKLSAgICBnbG9i
YWxfdHlwZSA9IGIid2luZG93IgorICAgIGdsb2JhbF90eXBlID0gIndpbmRvdyIKICAgICBwYXRo
X3JlcGxhY2UgPSBbKCIuYW55Lmh0bWwiLCAiLmFueS5qcyIpXQogICAgIHdyYXBwZXIgPSAiIiI8
IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0yNTQsNyArMjU0LDcgQEAg
c2VsZi5HTE9CQUwgPSB7CiAKIAogY2xhc3MgU2hhcmVkV29ya2Vyc0hhbmRsZXIoSHRtbFdyYXBw
ZXJIYW5kbGVyKToKLSAgICBnbG9iYWxfdHlwZSA9IGIic2hhcmVkd29ya2VyIgorICAgIGdsb2Jh
bF90eXBlID0gInNoYXJlZHdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNoYXJl
ZHdvcmtlci5odG1sIiwgIi5hbnkuanMiLCAiLmFueS53b3JrZXIuanMiKV0KICAgICB3cmFwcGVy
ID0gIiIiPCFkb2N0eXBlIGh0bWw+CiA8bWV0YSBjaGFyc2V0PXV0Zi04PgpAQCAtMjY5LDcgKzI2
OSw3IEBAIGZldGNoX3Rlc3RzX2Zyb21fd29ya2VyKG5ldyBTaGFyZWRXb3JrZXIoIiUocGF0aClz
JShxdWVyeSlzIikpOwogCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBl
ckhhbmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzZXJ2aWNld29ya2VyIgorICAgIGdsb2Jh
bF90eXBlID0gInNlcnZpY2V3b3JrZXIiCiAgICAgcGF0aF9yZXBsYWNlID0gWygiLmFueS5zZXJ2
aWNld29ya2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAgIHdyYXBw
ZXIgPSAiIiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0zMDcsMTEg
KzMwNywxMSBAQCBkb25lKCk7CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3Njcmlw
dF9yZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIic2Ny
aXB0IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBs
YWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCInKQorICAgICAgICBpZiBrZXkgPT0g
InNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJc
XFxcIikucmVwbGFjZSgnIicsICdcXCInKQogICAgICAgICAgICAgcmV0dXJuICdpbXBvcnRTY3Jp
cHRzKCIlcyIpJyAlIGF0dHJpYnV0ZQotICAgICAgICBpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAg
ICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBsYWNlKCJcXCIsICJcXFxc
IikucmVwbGFjZSgnIicsICdcXCInKQorICAgICAgICBpZiBrZXkgPT0gInRpdGxlIjoKKyAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiXFwiLCAiXFxcXCIpLnJlcGxhY2UoJyInLCAn
XFwiJykKICAgICAgICAgICAgIHJldHVybiAnc2VsZi5NRVRBX1RJVExFID0gIiVzIjsnICUgdmFs
dWUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMzUxLDcgKzM1MSw3IEBAIGNsYXNzIFJvdXRl
c0J1aWxkZXIob2JqZWN0KToKICAgICAgICAgaWYgaGVhZGVycyBpcyBOb25lOgogICAgICAgICAg
ICAgaGVhZGVycyA9IHt9CiAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVycy5TdGF0aWNIYW5kbGVy
KHBhdGgsIGZvcm1hdF9hcmdzLCBjb250ZW50X3R5cGUsICoqaGVhZGVycykKLSAgICAgICAgc2Vs
Zi5hZGRfaGFuZGxlcihiIkdFVCIsIHN0cihyb3V0ZSksIGhhbmRsZXIpCisgICAgICAgIHNlbGYu
YWRkX2hhbmRsZXIoIkdFVCIsIHN0cihyb3V0ZSksIGhhbmRsZXIpCiAKICAgICBkZWYgYWRkX21v
dW50X3BvaW50KHNlbGYsIHVybF9iYXNlLCBwYXRoKToKICAgICAgICAgdXJsX2Jhc2UgPSAiLyVz
LyIgJSB1cmxfYmFzZS5zdHJpcCgiLyIpIGlmIHVybF9iYXNlICE9ICIvIiBlbHNlICIvIgpAQCAt
MzY2LDYgKzM2Niw3IEBAIGNsYXNzIFJvdXRlc0J1aWxkZXIob2JqZWN0KToKICAgICAgICAgICAg
ICgiR0VUIiwgIiouYW55LnNlcnZpY2V3b3JrZXIuaHRtbCIsIFNlcnZpY2VXb3JrZXJzSGFuZGxl
ciksCiAgICAgICAgICAgICAoIkdFVCIsICIqLmFueS53b3JrZXIuanMiLCBBbnlXb3JrZXJIYW5k
bGVyKSwKICAgICAgICAgICAgICgiR0VUIiwgIiouYXNpcyIsIGhhbmRsZXJzLkFzSXNIYW5kbGVy
KSwKKyAgICAgICAgICAgICgiR0VUIiwgIi8ud2VsbC1rbm93bi9vcmlnaW4tcG9saWN5IiwgaGFu
ZGxlcnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIioiLCAiKi5weSIsIGhh
bmRsZXJzLlB5dGhvblNjcmlwdEhhbmRsZXIpLAogICAgICAgICAgICAgKCJHRVQiLCAiKiIsIGhh
bmRsZXJzLkZpbGVIYW5kbGVyKQogICAgICAgICBdCkBAIC00MTgsMTAgKzQxOSwxMCBAQCBjbGFz
cyBTZXJ2ZXJQcm9jKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZGFl
bW9uID0gaW5pdF9mdW5jKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywg
Y29uZmlnLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAg
ICAgIHByaW50KCJTb2NrZXQgZXJyb3Igb24gcG9ydCAlcyIgJSBwb3J0LCBmaWxlPXN5cy5zdGRl
cnIpCisgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVz
IiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBwcmludCh0cmFjZWJhY2suZm9ybWF0X2V4Yygp
LCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwodHJhY2ViYWNr
LmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgaWYgc2VsZi5kYWVt
b246CkBAIC01MTUsNyArNTE2LDcgQEAgZGVmIHN0YXJ0X3NlcnZlcnMoaG9zdCwgcG9ydHMsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgIGFz
c2VydCBsZW4ocG9ydHMpID09IHsiaHR0cCI6IDJ9LmdldChzY2hlbWUsIDEpCiAKICAgICAgICAg
IyBJZiB0cnlpbmcgdG8gc3RhcnQgSFRUUC8yLjAgc2VydmVyLCBjaGVjayBjb21wYXRpYmlsaXR5
Ci0gICAgICAgIGlmIHNjaGVtZSA9PSAnaHR0cDInIGFuZCBub3QgaHR0cDJfY29tcGF0aWJsZSgp
OgorICAgICAgICBpZiBzY2hlbWUgPT0gJ2gyJyBhbmQgbm90IGh0dHAyX2NvbXBhdGlibGUoKToK
ICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignQ2Fubm90IHN0YXJ0IEhUVFAvMi4wIHNlcnZlciBh
cyB0aGUgZW52aXJvbm1lbnQgaXMgbm90IGNvbXBhdGlibGUuICcgKwogICAgICAgICAgICAgICAg
ICAgICAgICAgICdSZXF1aXJlcyBQeXRob24gMi43LjEwKyAoPCAzLjApIGFuZCBPcGVuU1NMIDEu
MC4yKycpCiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTI1LDcgKzUyNiw3IEBAIGRlZiBzdGFy
dF9zZXJ2ZXJzKGhvc3QsIHBvcnRzLCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZp
ZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpbml0
X2Z1bmMgPSB7Imh0dHAiOiBzdGFydF9odHRwX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaHR0cHMiOiBzdGFydF9odHRwc19zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgImh0dHAyIjogc3RhcnRfaHR0cDJfc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMiI6IHN0YXJ0X2h0dHAyX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3Mi
OiBzdGFydF93c19zZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIndzcyI6IHN0YXJ0
X3dzc19zZXJ2ZXJ9W3NjaGVtZV0KIApAQCAtNTM3LDUwICs1MzgsNjggQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgcmV0dXJuIHNlcnZlcnMKIAogCitkZWYgc3RhcnR1cF9mYWlsZWQobG9n
PVRydWUpOgorICAgICMgTG9nPUZhbHNlIGlzIGEgd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzE5CisgICAgaWYgbG9nOgor
ICAgICAgICBsb2dnZXIuY3JpdGljYWwoRURJVF9IT1NUU19IRUxQKQorICAgIGVsc2U6CisgICAg
ICAgIHByaW50KCJDUklUSUNBTCAlcyIgJSBFRElUX0hPU1RTX0hFTFAsIGZpbGU9c3lzLnN0ZGVy
cikKKyAgICBzeXMuZXhpdCgxKQorCisKIGRlZiBzdGFydF9odHRwX3NlcnZlcihob3N0LCBwb3J0
LCBwYXRocywgcm91dGVzLCBiaW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgotICAgIHJl
dHVybiB3cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9ydD1wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5k
X2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9zc2w9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIp
KQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhv
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1wb3J0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nfcm9v
dCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0ZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV3cml0ZXM9cmV3cml0ZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRf
YWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9zc2w9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0
ZW5jeSIpKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKCkK
IAogCiBkZWYgc3RhcnRfaHR0cHNfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJp
bmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIHdwdHNlcnZlLldlYlRl
c3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0
PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1si
ZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcz1yb3V0
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5kX2FkZHJl
c3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1UcnVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRo
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1jb25maWcu
c3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmNyeXB0X2FmdGVyX2Nvbm5lY3Q9Y29uZmlnLnNzbF9jb25maWdbImVuY3J5cHRfYWZ0ZXJf
Y29ubmVjdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2Fy
Z3MuZ2V0KCJsYXRlbmN5IikpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2Vi
VGVzdEh0dHBkKGhvc3Q9aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3J0PXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jv
b3Q9cGF0aHNbImRvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcm91dGVzPXJvdXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXdyaXRlcz1yZXdyaXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZz1jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlX3NzbD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
eV9maWxlPWNvbmZpZy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xfY29uZmlnWyJjZXJ0X3Bh
dGgiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNyeXB0X2FmdGVy
X2Nvbm5lY3Q9Y29uZmlnLnNzbF9jb25maWdbImVuY3J5cHRfYWZ0ZXJfY29ubmVjdCJdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0
ZW5jeSIpKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKCkK
IAogCiBkZWYgc3RhcnRfaHR0cDJfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJp
bmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIHdwdHNlcnZlLldlYlRl
c3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0
PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX2Nscz13cHRz
ZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nfcm9vdCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1j
b25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xfY29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcu
c3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXRlbmN5PWt3YXJncy5nZXQoImxhdGVuY3kiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0dHAyPVRydWUpCisgICAgdHJ5OgorICAgICAgICByZXR1
cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcl9jbHM9d3B0c2VydmUuSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRv
Y19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJv
dXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdy
aXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3M9
YmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zz1jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNvbmZp
Zy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xfY29uZmlnWyJjZXJ0X3BhdGgiXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNyeXB0X2FmdGVyX2Nvbm5lY3Q9Y29u
ZmlnLnNzbF9jb25maWdbImVuY3J5cHRfYWZ0ZXJfY29ubmVjdCJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAyPVRydWUpCisgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAKIGNsYXNzIFdlYlNvY2tl
dERhZW1vbihvYmplY3QpOgpAQCAtNTkxLDIxICs2MTAsOSBAQCBjbGFzcyBXZWJTb2NrZXREYWVt
b24ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgIi13IiwgaGFuZGxlcnNfcm9vdF0KIAog
ICAgICAgICBpZiBzc2xfY29uZmlnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBUaGlzIGlz
IHVzdWFsbHkgZG9uZSB0aHJvdWdoIHB5d2Vic29ja2V0Lm1haW4sIGhvd2V2ZXIgd2UncmUKLSAg
ICAgICAgICAgICMgd29ya2luZyBhcm91bmQgdGhhdCB0byBnZXQgdGhlIHNlcnZlciBpbnN0YW5j
ZSBhbmQgbWFudWFsbHkKLSAgICAgICAgICAgICMgc2V0dXAgdGhlIHdzcyBzZXJ2ZXIuCi0gICAg
ICAgICAgICBpZiBweXdlYnNvY2tldC5faW1wb3J0X3NzbCgpOgotICAgICAgICAgICAgICAgIHRs
c19tb2R1bGUgPSBweXdlYnNvY2tldC5fVExTX0JZX1NUQU5EQVJEX01PRFVMRQotICAgICAgICAg
ICAgZWxpZiBweXdlYnNvY2tldC5faW1wb3J0X3B5b3BlbnNzbCgpOgotICAgICAgICAgICAgICAg
IHRsc19tb2R1bGUgPSBweXdlYnNvY2tldC5fVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgiTm8gU1NMIG1vZHVsZSBhdmFpbGFibGUiKQot
ICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KICAgICAgICAgICAgIGNtZF9hcmdzICs9IFsi
LS10bHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICItLXByaXZhdGUta2V5Iiwgc3NsX2Nv
bmZpZ1sia2V5X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jZXJ0aWZpY2F0
ZSIsIHNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICIt
LXRscy1tb2R1bGUiLCB0bHNfbW9kdWxlXQorICAgICAgICAgICAgICAgICAgICAgICAgICItLWNl
cnRpZmljYXRlIiwgc3NsX2NvbmZpZ1siY2VydF9wYXRoIl1dCiAKICAgICAgICAgaWYgKGJpbmRf
YWRkcmVzcyk6CiAgICAgICAgICAgICBjbWRfYXJncyA9IFsiLUgiLCBob3N0XSArIGNtZF9hcmdz
CkBAIC02MTQsNiArNjIxLDEyIEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihvYmplY3QpOgogICAg
ICAgICBvcHRzLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gTm9uZQogICAgICAgICBzZWxmLnNlcnZl
ciA9IHB5d2Vic29ja2V0LldlYlNvY2tldFNlcnZlcihvcHRzKQogICAgICAgICBwb3J0cyA9IFtp
dGVtWzBdLmdldHNvY2tuYW1lKClbMV0gZm9yIGl0ZW0gaW4gc2VsZi5zZXJ2ZXIuX3NvY2tldHNd
CisgICAgICAgIGlmIG5vdCBwb3J0czoKKyAgICAgICAgICAgICMgVE9ETzogRml4IHRoZSBsb2dn
aW5nIGNvbmZpZ3VyYXRpb24gaW4gV2ViU29ja2V0cyBwcm9jZXNzZXMKKyAgICAgICAgICAgICMg
c2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8yMjcx
OQorICAgICAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBzdGFydCB3ZWJzb2NrZXQgc2VydmVyIG9u
IHBvcnQgJXMsICIKKyAgICAgICAgICAgICAgICAgICJpcyBzb21ldGhpbmcgYWxyZWFkeSB1c2lu
ZyB0aGF0IHBvcnQ/IiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHJhaXNl
IE9TRXJyb3IoKQogICAgICAgICBhc3NlcnQgYWxsKGl0ZW0gPT0gcG9ydHNbMF0gZm9yIGl0ZW0g
aW4gcG9ydHMpCiAgICAgICAgIHNlbGYucG9ydCA9IHBvcnRzWzBdCiAgICAgICAgIHNlbGYuc3Rh
cnRlZCA9IEZhbHNlCkBAIC02NjIsMTIgKzY3NSwxNSBAQCBkZWYgc3RhcnRfd3Nfc2VydmVyKGhv
c3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6
CiAgICAgIyBpbiB0aGUgbG9nZ2luZyBtb2R1bGUgdW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxl
KGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tl
dERhZW1vbihob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19yb290LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX2NvbmZp
Zz1Ob25lKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihwb3J0KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9vdCJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpbmRfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xf
Y29uZmlnPU5vbmUpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWls
ZWQobG9nPUZhbHNlKQogCiAKIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhz
LCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CkBAIC02NzUsMTIgKzY5
MSwxNSBAQCBkZWYgc3RhcnRfd3NzX3NlcnZlcihob3N0LCBwb3J0LCBwYXRocywgcm91dGVzLCBi
aW5kX2FkZHJlc3MsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9k
dWxlIHVubG9ja2VkCiAgICAgcmVsb2FkX21vZHVsZShsb2dnaW5nKQogICAgIHJlbGVhc2VfbW96
bG9nX2xvY2soKQotICAgIHJldHVybiBXZWJTb2NrZXREYWVtb24oaG9zdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cihwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cG9fcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1sid3NfZG9j
X3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQorICAgIHRyeToKKyAgICAg
ICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cihwb3J0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvX3Jv
b3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nf
cm9vdCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc3NsX2NvbmZpZykKKyAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZChsb2c9RmFsc2UpCiAKIAogZGVm
IHN0YXJ0KGNvbmZpZywgcm91dGVzLCAqKmt3YXJncyk6CkBAIC03MDUsOCArNzI0LDExIEBAIGRl
ZiBpdGVyX3Byb2NzKHNlcnZlcnMpOgogZGVmIGJ1aWxkX2NvbmZpZyhvdmVycmlkZV9wYXRoPU5v
bmUsICoqa3dhcmdzKToKICAgICBydiA9IENvbmZpZ0J1aWxkZXIoKQogCi0gICAgaWYga3dhcmdz
LmdldCgiaDIiKToKLSAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImh0dHAyIl0gPSBbOTAw
MF0KKyAgICBlbmFibGVfaHR0cDIgPSBrd2FyZ3MuZ2V0KCJoMiIpCisgICAgaWYgZW5hYmxlX2h0
dHAyIGlzIE5vbmU6CisgICAgICAgIGVuYWJsZV9odHRwMiA9IFRydWUKKyAgICBpZiBlbmFibGVf
aHR0cDI6CisgICAgICAgIHJ2Ll9kZWZhdWx0WyJwb3J0cyJdWyJoMiJdID0gWzkwMDBdCiAKICAg
ICBpZiBvdmVycmlkZV9wYXRoIGFuZCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZV9wYXRoKToKICAg
ICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6CkBAIC03MzksNiArNzYxLDkgQEAg
ZGVmIGJ1aWxkX2NvbmZpZyhvdmVycmlkZV9wYXRoPU5vbmUsICoqa3dhcmdzKToKIGRlZiBfbWFr
ZV9zdWJkb21haW5zX3Byb2R1Y3QocywgZGVwdGg9Mik6CiAgICAgcmV0dXJuIHt1Ii4iLmpvaW4o
eCkgZm9yIHggaW4gY2hhaW4oKihwcm9kdWN0KHMsIHJlcGVhdD1pKSBmb3IgaSBpbiByYW5nZSgx
LCBkZXB0aCsxKSkpfQogCitkZWYgX21ha2Vfb3JpZ2luX3BvbGljeV9zdWJkb21haW5zKGxpbWl0
KToKKyAgICByZXR1cm4ge3Uib3AlZCIgJSB4IGZvciB4IGluIHJhbmdlKDEsbGltaXQrMSl9CisK
IAogX3N1YmRvbWFpbnMgPSB7dSJ3d3ciLAogICAgICAgICAgICAgICAgdSJ3d3cxIiwKQEAgLTc1
MCw2ICs3NzUsMTIgQEAgX25vdF9zdWJkb21haW5zID0ge3Uibm9uZXhpc3RlbnQifQogCiBfc3Vi
ZG9tYWlucyA9IF9tYWtlX3N1YmRvbWFpbnNfcHJvZHVjdChfc3ViZG9tYWlucykKIAorIyBPcmln
aW4gcG9saWN5IHN1YmRvbWFpbnMgbmVlZCB0byBub3QgYmUgcmV1c2VkIGJ5IGFueSBvdGhlciB0
ZXN0cywgc2luY2Ugb3JpZ2luIHBvbGljaWVzIGhhdmUKKyMgb3JpZ2luLXdpZGUgaW1wYWN0cyBs
aWtlIGluc3RhbGxpbmcgYSBDU1Agb3IgRmVhdHVyZSBQb2xpY3kgdGhhdCBjb3VsZCBpbnRlcmZl
cmUgd2l0aCBmZWF0dXJlcworIyB1bmRlciB0ZXN0LgorIyBTZWUgaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy9yZmNzL3B1bGwvNDQuCitfc3ViZG9tYWlucyB8PSBfbWFrZV9v
cmlnaW5fcG9saWN5X3N1YmRvbWFpbnMoOTkpCisKIF9ub3Rfc3ViZG9tYWlucyA9IF9tYWtlX3N1
YmRvbWFpbnNfcHJvZHVjdChfbm90X3N1YmRvbWFpbnMpCiAKIApAQCAtODQ1LDkgKzg3NiwxMCBA
QCBkZWYgZ2V0X3BhcnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0
byBXZWJTb2NrZXRzIGRvY3VtZW50IHJvb3QuIE92ZXJyaWRlcyBjb25maWcuIikKICAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCItLWFsaWFzX2ZpbGUiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iYWxp
YXNfZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGaWxlIHdpdGggZW50cmll
cyBmb3IgYWxpYXNlcy9tdWx0aXBsZSBkb2Mgcm9vdHMuIEluIGZvcm0gb2YgYC9BTElBU19OQU1F
LywgRE9DX1JPT1RcXG5gIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWgyIiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVzdD0iaDIiLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RmxhZyBmb3IgZW5hYmxpbmcgdGhlIEhUVFAvMi4wIHNlcnZlciIpCi0gICAgcGFyc2VyLnNldF9k
ZWZhdWx0cyhoMj1GYWxzZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWgyIiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVzdD0iaDIiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPWFyZ3BhcnNlLlNVUFBSRVNTKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tbm8taDIiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iaDIiLCBkZWZhdWx0PU5vbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBIVFRQLzIuMCBzZXJ2
ZXIiKQogICAgIHJldHVybiBwYXJzZXIKIAogCkBAIC04OTAsMTYgKzkyMiwyMiBAQCBkZWYgcnVu
KCoqa3dhcmdzKToKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIGhh
bmRsZV9zaWduYWwpCiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIGhh
bmRsZV9zaWduYWwpCiAKLSAgICAgICAgICAgIHdoaWxlIGFsbChpdGVtLmlzX2FsaXZlKCkgZm9y
IGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2ZXJzKSkgYW5kIG5vdCByZWNlaXZlZF9zaWduYWwuaXNf
c2V0KCk6Ci0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2ZXJzKToK
LSAgICAgICAgICAgICAgICAgICAgaXRlbS5qb2luKDEpCi0gICAgICAgICAgICBleGl0ZWQgPSBb
aXRlbSBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpIGlmIG5vdCBpdGVtLmlzX2FsaXZl
KCldCi0gICAgICAgICAgICBzdWJqZWN0ID0gInN1YnByb2Nlc3MiIGlmIGxlbihleGl0ZWQpID09
IDEgZWxzZSAic3VicHJvY2Vzc2VzIgotCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiJXMgJXMg
ZXhpdGVkOiIgJSAobGVuKGV4aXRlZCksIHN1YmplY3QpKQotCi0gICAgICAgICAgICBmb3IgaXRl
bSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJT
dGF0dXMgb2YgJXM6XHQlcyIgJSAoaXRlbS5uYW1lLCAicnVubmluZyIgaWYgaXRlbS5pc19hbGl2
ZSgpIGVsc2UgIm5vdCBydW5uaW5nIikpCisgICAgICAgICAgICB3aGlsZSAoYWxsKHN1YnByb2Mu
aXNfYWxpdmUoKSBmb3Igc3VicHJvYyBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQKKyAgICAg
ICAgICAgICAgICAgICBub3QgcmVjZWl2ZWRfc2lnbmFsLmlzX3NldCgpKToKKyAgICAgICAgICAg
ICAgICBmb3Igc3VicHJvYyBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgorICAgICAgICAgICAgICAg
ICAgICBzdWJwcm9jLmpvaW4oMSkKKworICAgICAgICAgICAgZmFpbGVkX3N1YnByb2MgPSAwCisg
ICAgICAgICAgICBmb3Igc3VicHJvYyBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgorICAgICAgICAg
ICAgICAgIGlmIHN1YnByb2MuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LmluZm8oJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IHJ1bm5pbmcnICUgc3VicHJvYy5uYW1l
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHN1YnByb2Mu
ZXhpdGNvZGUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTdGF0
dXMgb2Ygc3VicHJvY2VzcyAiJXMiOiBleGl0ZWQgY29ycmVjdGx5JyAlIHN1YnByb2MubmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dl
ci53YXJuaW5nKCdTdGF0dXMgb2Ygc3VicHJvY2VzcyAiJXMiOiBmYWlsZWQuIEV4aXQgd2l0aCBu
b24temVybyBzdGF0dXM6ICVkJyAlIChzdWJwcm9jLm5hbWUsIHN1YnByb2MuZXhpdGNvZGUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3N1YnByb2MgKz0gMQorICAgICAgICAgICAg
cmV0dXJuIGZhaWxlZF9zdWJwcm9jCiAKIAogZGVmIG1haW4oKToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdGVzdF9z
ZXJ2ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2VydmUvdGVzdF9zZXJ2ZS5weQppbmRleCBkNmMwODJhOTcwMzU3ZjQ3N2U4MmNkMjVhMWMw
OTUyZWU3NDRkYjU0Li5kOTAyNDc5M2NhZmRhMWJiMzYzYjVkM2EzOTlhYTkzYTRkNjkxMTBhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZlLnB5CkBAIC04Miw3ICs4Miw3
IEBAIGRlZiB0ZXN0X2NvbmZpZ19qc29uX2xlbmd0aCgpOgogICAgICMgd2Ugc2VyaWFsaXplIHRo
ZSBjb25maWcgYXMgSlNPTiBmb3IgcHl0ZXN0cnVubmVyIGFuZCBwdXQgaXQgaW4gYW4gZW52CiAg
ICAgIyB2YXJpYWJsZSwgd2hpY2ggb24gV2luZG93cyBtdXN0IGhhdmUgYSBsZW5ndGggPD0gMHg3
RkZGIChpbnQxNikKICAgICB3aXRoIENvbmZpZ0J1aWxkZXIoKSBhcyBjOgotICAgICAgICBkYXRh
ID0ganNvbi5kdW1wcyhjLmFzX2RpY3QoKSkKKyAgICAgICAgZGF0YSA9IGpzb24uZHVtcHMoYy5h
c19kaWN0X2Zvcl93ZF9lbnZfdmFyaWFibGUoKSkKICAgICBhc3NlcnQgbGVuKGRhdGEpIDw9IDB4
N0ZGRgogCiBkZWYgdGVzdF9hbHRlcm5hdGVfaG9zdF91bnNwZWNpZmllZCgpOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE5YjIxZDc0NTg4ZTBi
NTE3ZDZlOTdlNDdjNmFlYzZmYWVmMDZhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKQEAgLTAsMCArMSwxMjggQEAKK25hbWU6IHRl
c3RzCisKK29uOiBbcHVzaCwgcHVsbF9yZXF1ZXN0XQorCitqb2JzOgorCisgIGxpbnQ6CisgICAg
cnVucy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25z
L2NoZWNrb3V0QHYyCisgICAgICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYxCisgICAg
ICAgIHdpdGg6CisgICAgICAgICAgcHl0aG9uLXZlcnNpb246IDMuNworICAgICAgLSBuYW1lOiBJ
bnN0YWxsIHBhY2thZ2VzCisgICAgICAgIHJ1bjogcGlwIGluc3RhbGwgYmxhY2sgZmxha2U4IGlz
b3J0IG15cHkKKyAgICAgIC0gbmFtZTogUnVuIGxpbnRlcnMKKyAgICAgICAgcnVuOiB8CisgICAg
ICAgICAgZmxha2U4IGV4YW1wbGVzIHNyYyB0ZXN0cworICAgICAgICAgIGlzb3J0IC1jIC1kZiAt
cmMgZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgYmxhY2sgLS1jaGVjayAtLWRpZmYgZXhh
bXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgbXlweSBleGFtcGxlcyBzcmMKKworICB0ZXN0Ogor
ICAgIHJ1bnMtb246ICR7eyBtYXRyaXgub3MgfX0KKyAgICBzdHJhdGVneToKKyAgICAgIGZhaWwt
ZmFzdDogZmFsc2UKKyAgICAgIG1hdHJpeDoKKyAgICAgICAgb3M6IFt1YnVudHUtbGF0ZXN0LCBt
YWNvcy1sYXRlc3QsIHdpbmRvd3MtbGF0ZXN0XQorICAgICAgICBweXRob246IFszLjgsIDMuNywg
My42XQorICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25zL2NoZWNrb3V0QHYyCisgICAg
ICAtIHVzZXM6IGFjdGlvbnMvc2V0dXAtcHl0aG9uQHYxCisgICAgICAgIHdpdGg6CisgICAgICAg
ICAgcHl0aG9uLXZlcnNpb246ICR7eyBtYXRyaXgucHl0aG9uIH19CisgICAgICAtIG5hbWU6IERp
c2FibGUgZmlyZXdhbGwgYW5kIGNvbmZpZ3VyZSBjb21waWxlcgorICAgICAgICBpZjogbWF0cml4
Lm9zID09ICdtYWNvcy1sYXRlc3QnCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHN1ZG8gL3Vz
ci9saWJleGVjL0FwcGxpY2F0aW9uRmlyZXdhbGwvc29ja2V0ZmlsdGVyZncgLS1zZXRnbG9iYWxz
dGF0ZSBvZmYKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFtZT1BSU9RVUlDX1NLSVBfVEVT
VFM6OmNoYWNoYTIwIgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUNGTEFHUzo6LUkv
dXNyL2xvY2FsL29wdC9vcGVuc3NsL2luY2x1ZGUiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52
IG5hbWU9TERGTEFHUzo6LUwvdXNyL2xvY2FsL29wdC9vcGVuc3NsL2xpYiIKKyAgICAgIC0gbmFt
ZTogSW5zdGFsbCBPcGVuU1NMCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0
ZXN0JworICAgICAgICBydW46IHwKKyAgICAgICAgICBjaG9jbyBpbnN0YWxsIG9wZW5zc2wgLS1u
by1wcm9ncmVzcworICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUNMOjovSUM6XFByb2dy
YX4xXE9wZW5TU0wtV2luNjRcaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFt
ZT1MSU5LOjovTElCUEFUSDpDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGxpYiIKKyAgICAgIC0g
bmFtZTogUnVuIHRlc3RzCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHBpcCBpbnN0YWxsIC1V
IHBpcCBzZXR1cHRvb2xzIHdoZWVsCisgICAgICAgICAgcGlwIGluc3RhbGwgY292ZXJhZ2UKKyAg
ICAgICAgICBwaXAgaW5zdGFsbCAuCisgICAgICAgICAgY292ZXJhZ2UgcnVuIC1tIHVuaXR0ZXN0
IGRpc2NvdmVyIC12CisgICAgICAgICAgY292ZXJhZ2UgeG1sCisgICAgICAgIHNoZWxsOiBiYXNo
CisgICAgICAtIG5hbWU6IFVwbG9hZCBjb3ZlcmFnZSByZXBvcnQKKyAgICAgICAgdXNlczogY29k
ZWNvdi9jb2RlY292LWFjdGlvbkB2MQorICAgICAgICBpZjogbWF0cml4LnB5dGhvbiAhPSAncHlw
eTMnCisgICAgICAgIHdpdGg6CisgICAgICAgICAgdG9rZW46ICR7eyBzZWNyZXRzLkNPREVDT1Zf
VE9LRU4gfX0KKworICBwYWNrYWdlLXNvdXJjZToKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0
CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBw
eXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5hbWU6IEJ1aWxkIHNvdXJjZSBwYWNrYWdlCisg
ICAgICAgIHJ1bjogcHl0aG9uIHNldHVwLnB5IHNkaXN0CisgICAgICAtIG5hbWU6IFVwbG9hZCBz
b3VyY2UgcGFja2FnZQorICAgICAgICB1c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQor
ICAgICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0
LworCisgIHBhY2thZ2Utd2hlZWw6CisgICAgcnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAg
IHN0cmF0ZWd5OgorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1h
Y29zLWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFj
dGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5h
bWU6IEluc3RhbGwgbmFzbQorICAgICAgICBpZjogbWF0cml4Lm9zID09ICd3aW5kb3dzLWxhdGVz
dCcKKyAgICAgICAgcnVuOiBjaG9jbyBpbnN0YWxsIC15IG5hc20KKyAgICAgIC0gbmFtZTogSW5z
dGFsbCBubWFrZQorICAgICAgICBpZjogbWF0cml4Lm9zID09ICd3aW5kb3dzLWxhdGVzdCcKKyAg
ICAgICAgcnVuOiB8CisgICAgICAgICAgJiAiQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xJbnN0YWxsZXJcdnNfaW5zdGFsbGVyLmV4ZSIgbW9kaWZ5IGAKKyAg
ICAgICAgICAgLS1pbnN0YWxsUGF0aCAiQzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1wyMDE5XEVudGVycHJpc2UiIGAKKyAgICAgICAgICAgLS1hZGQgTWljcm9z
b2Z0LlZpc3VhbFN0dWRpby5Db21wb25lbnQuVkMuVG9vbHMueDg2Lng2NCAtLXBhc3NpdmUgLS1u
b3Jlc3RhcnQKKyAgICAgICAgc2hlbGw6IHBvd2Vyc2hlbGwKKyAgICAgIC0gbmFtZTogQnVpbGQg
d2hlZWxzCisgICAgICAgIGVudjoKKyAgICAgICAgICBDSUJXX0JFRk9SRV9CVUlMRDogc2NyaXB0
cy9idWlsZC1vcGVuc3NsIC90bXAvdmVuZG9yCisgICAgICAgICAgQ0lCV19CRUZPUkVfQlVJTERf
V0lORE9XUzogc2NyaXB0c1xidWlsZC1vcGVuc3NsLmJhdCBDOlxjaWJ3XHZlbmRvcgorICAgICAg
ICAgIENJQldfRU5WSVJPTk1FTlQ6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxvc3MgQ0ZMQUdT
PS1JL3RtcC92ZW5kb3IvaW5jbHVkZSBMREZMQUdTPS1ML3RtcC92ZW5kb3IvbGliCisgICAgICAg
ICAgQ0lCV19FTlZJUk9OTUVOVF9XSU5ET1dTOiBBSU9RVUlDX1NLSVBfVEVTVFM9aXB2Nixsb3Nz
IENMPSIvSUM6XGNpYndcdmVuZG9yXGluY2x1ZGUiIExJTks9Ii9MSUJQQVRIOkM6XGNpYndcdmVu
ZG9yXGxpYiIKKyAgICAgICAgICBDSUJXX1NLSVA6IGNwMjctKiBjcDMzLSogY3AzNC0qIGNwMzUt
KiBwcDI3LSoKKyAgICAgICAgICBDSUJXX1RFU1RfQ09NTUFORDogcHl0aG9uIC1tIHVuaXR0ZXN0
IGRpc2NvdmVyIC10IHtwcm9qZWN0fSAtcyB7cHJvamVjdH0vdGVzdHMKKyAgICAgICAgcnVuOiB8
CisgICAgICAgICAgcGlwIGluc3RhbGwgY2lidWlsZHdoZWVsCisgICAgICAgICAgY2lidWlsZHdo
ZWVsIC0tb3V0cHV0LWRpciBkaXN0CisgICAgICAtIG5hbWU6IFVwbG9hZCB3aGVlbHMKKyAgICAg
ICAgdXNlczogYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjEKKyAgICAgICAgd2l0aDoKKyAgICAg
ICAgICBuYW1lOiBkaXN0CisgICAgICAgICAgcGF0aDogZGlzdC8KKworICBwdWJsaXNoOgorICAg
IHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAgICBuZWVkczogW2xpbnQsIHRlc3QsIHBhY2thZ2Ut
c291cmNlLCBwYWNrYWdlLXdoZWVsXQorICAgIHN0ZXBzOgorICAgICAgLSB1c2VzOiBhY3Rpb25z
L2NoZWNrb3V0QHYyCisgICAgICAtIHVzZXM6IGFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAdjEK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICBuYW1lOiBkaXN0CisgICAgICAgICAgcGF0aDogZGlz
dC8KKyAgICAgIC0gbmFtZTogUHVibGlzaCB0byBQeVBJCisgICAgICAgIGlmOiBnaXRodWIuZXZl
bnRfbmFtZSA9PSAncHVzaCcgJiYgc3RhcnRzV2l0aChnaXRodWIuZXZlbnQucmVmLCAncmVmcy90
YWdzLycpCisgICAgICAgIHVzZXM6IHB5cGEvZ2gtYWN0aW9uLXB5cGktcHVibGlzaEBtYXN0ZXIK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICB1c2VyOiBfX3Rva2VuX18KKyAgICAgICAgICBwYXNz
d29yZDogJHt7IHNlY3JldHMuUFlQSV9UT0tFTiB9fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
Ly5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5naXRodWIv
d29ya2Zsb3dzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiYzBhZTk5YjIwZjQ4OWVlNzdh
ODU1OWU1MmFjNzk0NTM0ZGFlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxNyBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDk5
MjRhNWFhMDgzOTg2ZDBiZDcwNjllZGM2ZWRkZWFiN2NlMGFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL0xJQ0VOU0UKQEAgLTAsMCArMSwyNSBAQAorQ29weXJpZ2h0IChjKSAyMDE5
IEplcmVteSBMYWluw6kuCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlLAorICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIGFpb3F1aWMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorICAg
ICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dAorICAgICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECitBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKK0RBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKK09S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL01BTklGRVNULmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZTA5
MDNhZjk5NGUzNGMzNWQ4YjJlZWUyMGI0YmIzYjc2OWRlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KQEAgLTAsMCArMSw0IEBACitpbmNsdWRlIExJQ0VOU0UK
K3JlY3Vyc2l2ZS1pbmNsdWRlIGRvY3MgKi5weSAqLnJzdCBNYWtlZmlsZQorcmVjdXJzaXZlLWlu
Y2x1ZGUgZXhhbXBsZXMgKi5odG1sICoucHkKK3JlY3Vyc2l2ZS1pbmNsdWRlIHRlc3RzICouYmlu
ICoucGVtICoucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9SRUFETUUucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMyMjA0MmMyNGRkMjY2ZGVhMWI3Mjg0MzY0
ZTlhNWNjZWI2NmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9SRUFETUUucnN0
CkBAIC0wLDAgKzEsMTY0IEBACithaW9xdWljCis9PT09PT09CisKK3xydGR8IHxweXBpLXZ8IHxw
eXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8IHxibGFja3wKKworLi4g
fHJ0ZHwgaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9yZy9wcm9qZWN0cy9haW9xdWljL2Jh
ZGdlLz92ZXJzaW9uPWxhdGVzdAorICAgIDp0YXJnZXQ6IGh0dHBzOi8vYWlvcXVpYy5yZWFkdGhl
ZG9jcy5pby8KKworLi4gfHB5cGktdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5
cGkvdi9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvYWlvcXVpYworCisuLiB8cHlwaS1weXZlcnNpb25zfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNo
aWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6
Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9xdWljCisKKy4uIHxweXBpLWx8IGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRw
czovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHRlc3RzfCBpbWFnZTo6IGh0
dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy93b3JrZmxvd3MvdGVzdHMvYmFkZ2Uuc3Zn
CisgICAgOnRhcmdldDogaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL2FjdGlvbnMK
KworLi4gfGNvZGVjb3Z8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY292L2Mv
Z2l0aHViL2Fpb3J0Yy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5p
by9naC9haW9ydGMvYWlvcXVpYworCisuLiB8YmxhY2t8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hp
ZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stMDAwMDAwLnN2ZworICAgIDp0YXJnZXQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vYmxhY2sKKworV2hhdCBpcyBgYGFpb3F1aWNgYD8K
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2BgYWlvcXVpY2BgIGlzIGEgbGlicmFyeSBmb3IgdGhl
IFFVSUMgbmV0d29yayBwcm90b2NvbCBpbiBQeXRob24uIEl0IGZlYXR1cmVzCithIG1pbmltYWwg
VExTIDEuMyBpbXBsZW1lbnRhdGlvbiwgYSBRVUlDIHN0YWNrIGFuZCBhbiBIVFRQLzMgc3RhY2su
CisKK1FVSUMgc3RhbmRhcmRpc2F0aW9uIGlzIG5vdCBmaW5hbGlzZWQgeWV0LCBidXQgYGBhaW9x
dWljYGAgY2xvc2VseSB0cmFja3MgdGhlCitzcGVjaWZpY2F0aW9uIGRyYWZ0cyBhbmQgaXMgcmVn
dWxhcmx5IHRlc3RlZCBmb3IgaW50ZXJvcGVyYWJpbGl0eSBhZ2FpbnN0IG90aGVyCitgUVVJQyBp
bXBsZW1lbnRhdGlvbnNgXy4KKworVG8gbGVhcm4gbW9yZSBhYm91dCBgYGFpb3F1aWNgYCBwbGVh
c2UgYHJlYWQgdGhlIGRvY3VtZW50YXRpb25gXy4KKworV2h5IHNob3VsZCBJIHVzZSBgYGFpb3F1
aWNgYD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2BgYWlvcXVpY2BgIGhhcyBi
ZWVuIGRlc2lnbmVkIHRvIGJlIGVtYmVkZGVkIGludG8gUHl0aG9uIGNsaWVudCBhbmQgc2VydmVy
CitsaWJyYXJpZXMgd2lzaGluZyB0byBzdXBwb3J0IFFVSUMgYW5kIC8gb3IgSFRUUC8zLiBUaGUg
Z29hbCBpcyB0byBwcm92aWRlIGEKK2NvbW1vbiBjb2RlYmFzZSBmb3IgUHl0aG9uIGxpYnJhcmll
cyBpbiB0aGUgaG9wZSBvZiBhdm9pZGluZyBkdXBsaWNhdGVkIGVmZm9ydC4KKworQm90aCB0aGUg
UVVJQyBhbmQgdGhlIEhUVFAvMyBBUElzIGZvbGxvdyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIg
cGF0dGVybiwKK2xlYXZpbmcgYWN0dWFsIEkvTyBvcGVyYXRpb25zIHRvIHRoZSBBUEkgdXNlci4g
VGhpcyBhcHByb2FjaCBoYXMgYSBudW1iZXIgb2YKK2FkdmFudGFnZXMgaW5jbHVkaW5nIG1ha2lu
ZyB0aGUgY29kZSB0ZXN0YWJsZSBhbmQgYWxsb3dpbmcgaW50ZWdyYXRpb24gd2l0aAorZGlmZmVy
ZW50IGNvbmN1cnJlbmN5IG1vZGVscy4KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKKy0gUVVJQyBz
dGFjayBjb25mb3JtaW5nIHdpdGggZHJhZnQtMjcKKy0gSFRUUC8zIHN0YWNrIGNvbmZvcm1pbmcg
d2l0aCBkcmFmdC0yNworLSBtaW5pbWFsIFRMUyAxLjMgaW1wbGVtZW50YXRpb24KKy0gSVB2NCBh
bmQgSVB2NiBzdXBwb3J0CistIGNvbm5lY3Rpb24gbWlncmF0aW9uIGFuZCBOQVQgcmViaW5kaW5n
CistIGxvZ2dpbmcgVExTIHRyYWZmaWMgc2VjcmV0cworLSBsb2dnaW5nIFFVSUMgZXZlbnRzIGlu
IFFMT0cgZm9ybWF0CistIEhUVFAvMyBzZXJ2ZXIgcHVzaCBzdXBwb3J0CisKK1JlcXVpcmVtZW50
cworLS0tLS0tLS0tLS0tCisKK2BgYWlvcXVpY2BgIHJlcXVpcmVzIFB5dGhvbiAzLjYgb3IgYmV0
dGVyLCBhbmQgdGhlIE9wZW5TU0wgZGV2ZWxvcG1lbnQgaGVhZGVycy4KKworTGludXgKKy4uLi4u
CisKK09uIERlYmlhbi9VYnVudHUgcnVuOgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisg
ICAkIHN1ZG8gYXB0IGluc3RhbGwgbGlic3NsLWRldiBweXRob24zLWRldgorCitPbiBBbHBpbmUg
TGludXggeW91IHdpbGwgYWxzbyBuZWVkIHRoZSBmb2xsb3dpbmc6CisKKy4uIGNvZGUtYmxvY2s6
OiBjb25zb2xlCisKKyAgICQgc3VkbyBhcHQgaW5zdGFsbCBic2QtY29tcGF0LWhlYWRlcnMgbGli
ZmZpLWRldgorCitPUyBYCisuLi4uCisKK09uIE9TIFggcnVuOgorCisuLiBjb2RlLWJsb2NrOjog
Y29uc29sZQorCisgICAkIGJyZXcgaW5zdGFsbCBvcGVuc3NsCisKK1lvdSB3aWxsIG5lZWQgdG8g
c2V0IHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGxpbmsgYWdhaW5zdCBPcGVuU1NMOgor
CisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAkIGV4cG9ydCBDRkxBR1M9LUkvdXNyL2xv
Y2FsL29wdC9vcGVuc3NsL2luY2x1ZGUKKyAgICQgZXhwb3J0IExERkxBR1M9LUwvdXNyL2xvY2Fs
L29wdC9vcGVuc3NsL2xpYgorCitXaW5kb3dzCisuLi4uLi4uCisKK09uIFdpbmRvd3MgdGhlIGVh
c2llc3Qgd2F5IHRvIGluc3RhbGwgT3BlblNTTCBpcyB0byB1c2UgYENob2NvbGF0ZXlgXy4KKwor
Li4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgPiBjaG9jbyBpbnN0YWxsIG9wZW5zc2wKKwor
WW91IHdpbGwgbmVlZCB0byBzZXQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBh
Z2FpbnN0IE9wZW5TU0w6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgPiAkRW52OkNM
ID0gIi9JQzpcUHJvZ3JhfjFcT3BlblNTTC1XaW42NFxpbmNsdWRlIgorICA+ICRFbnY6TElOSyA9
ICIvTElCUEFUSDpDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGxpYiIKKworUnVubmluZyB0aGUg
ZXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FmdGVyIGNoZWNraW5nIG91dCB0aGUg
Y29kZSB1c2luZyBnaXQgeW91IGNhbiBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgICQgcGlwIGluc3RhbGwgLWUgLgorICAgJCBwaXAgaW5zdGFsbCBhaW9maWxlcyBhc2dpcmVm
IGh0dHBiaW4gc3RhcmxldHRlIHdzcHJvdG8KKworSFRUUC8zIHNlcnZlcgorLi4uLi4uLi4uLi4u
LgorCitZb3UgY2FuIHJ1biB0aGUgZXhhbXBsZSBzZXJ2ZXIsIHdoaWNoIGhhbmRsZXMgYm90aCBI
VFRQLzAuOSBhbmQgSFRUUC8zOgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICAkIHB5
dGhvbiBleGFtcGxlcy9odHRwM19zZXJ2ZXIucHkgLS1jZXJ0aWZpY2F0ZSB0ZXN0cy9zc2xfY2Vy
dC5wZW0gLS1wcml2YXRlLWtleSB0ZXN0cy9zc2xfa2V5LnBlbQorCitIVFRQLzMgY2xpZW50Cisu
Li4uLi4uLi4uLi4uCisKK1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIGNsaWVudCB0byBwZXJmb3Jt
IGFuIEhUVFAvMyByZXF1ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICQgcHl0
aG9uIGV4YW1wbGVzL2h0dHAzX2NsaWVudC5weSAtLWNhLWNlcnRzIHRlc3RzL3B5Y2FjZXJ0LnBl
bSBodHRwczovL2xvY2FsaG9zdDo0NDMzLworCitBbHRlcm5hdGl2ZWx5IHlvdSBjYW4gcGVyZm9y
bSBhbiBIVFRQLzAuOSByZXF1ZXN0OgorCisuLiBjb2RlLWJsb2NrOjogY29uc29sZQorCisgICQg
cHl0aG9uIGV4YW1wbGVzL2h0dHAzX2NsaWVudC5weSAtLWNhLWNlcnRzIHRlc3RzL3B5Y2FjZXJ0
LnBlbSAtLWxlZ2FjeS1odHRwIGh0dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK1lvdSBjYW4gYWxz
byBvcGVuIGEgV2ViU29ja2V0IG92ZXIgSFRUUC8zOgorCisuLiBjb2RlLWJsb2NrOjogY29uc29s
ZQorCisgICQgcHl0aG9uIGV4YW1wbGVzL2h0dHAzX2NsaWVudC5weSAtLWNhLWNlcnRzIHRlc3Rz
L3B5Y2FjZXJ0LnBlbSB3c3M6Ly9sb2NhbGhvc3Q6NDQzMy93cworCitMaWNlbnNlCistLS0tLS0t
CisKK2BgYWlvcXVpY2BgIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBgQlNEIGxpY2Vuc2VgXy4KKwor
Li4gX3JlYWQgdGhlIGRvY3VtZW50YXRpb246IGh0dHBzOi8vYWlvcXVpYy5yZWFkdGhlZG9jcy5p
by9lbi9sYXRlc3QvCisuLiBfUVVJQyBpbXBsZW1lbnRhdGlvbnM6IGh0dHBzOi8vZ2l0aHViLmNv
bS9xdWljd2cvYmFzZS1kcmFmdHMvd2lraS9JbXBsZW1lbnRhdGlvbnMKKy4uIF9jcnlwdG9ncmFw
aHk6IGh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX0Nob2NvbGF0ZXk6IGh0dHBzOi8vY2hv
Y29sYXRleS5vcmcvCisuLiBfQlNEIGxpY2Vuc2U6IGh0dHBzOi8vYWlvcXVpYy5yZWFkdGhlZG9j
cy5pby9lbi9sYXRlc3QvbGljZW5zZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9j
cy9NYWtlZmlsZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYjcz
OGI5NjE3ZmIyZDlkZDA2Njg0YmQyMjRmMGFkMDNlMDZhMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9NYWtlZmlsZQpAQCAtMCwwICsxLDIwIEBACisjIE1pbmltYWwgbWFr
ZWZpbGUgZm9yIFNwaGlueCBkb2N1bWVudGF0aW9uCisjCisKKyMgWW91IGNhbiBzZXQgdGhlc2Ug
dmFyaWFibGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KK1NQSElOWE9QVFMgICAgPQorU1BISU5Y
QlVJTEQgICA9IHNwaGlueC1idWlsZAorU1BISU5YUFJPSiAgICA9IGFpb3F1aWMKK1NPVVJDRURJ
UiAgICAgPSAuCitCVUlMRERJUiAgICAgID0gX2J1aWxkCisKKyMgUHV0IGl0IGZpcnN0IHNvIHRo
YXQgIm1ha2UiIHdpdGhvdXQgYXJndW1lbnQgaXMgbGlrZSAibWFrZSBoZWxwIi4KK2hlbHA6CisJ
QCQoU1BISU5YQlVJTEQpIC1NIGhlbHAgIiQoU09VUkNFRElSKSIgIiQoQlVJTERESVIpIiAkKFNQ
SElOWE9QVFMpICQoTykKKworLlBIT05ZOiBoZWxwIE1ha2VmaWxlCisKKyMgQ2F0Y2gtYWxsIHRh
cmdldDogcm91dGUgYWxsIHVua25vd24gdGFyZ2V0cyB0byBTcGhpbnggdXNpbmcgdGhlIG5ldwor
IyAibWFrZSBtb2RlIiBvcHRpb24uICAkKE8pIGlzIG1lYW50IGFzIGEgc2hvcnRjdXQgZm9yICQo
U1BISU5YT1BUUykuCislOiBNYWtlZmlsZQorCUAkKFNQSElOWEJVSUxEKSAtTSAkQCAiJChTT1VS
Q0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5YT1BUUykgJChPKQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2FzeW5jaW8ucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVjNTY4MDkwMTQ2MGIw
MzI4M2E0YWM2Y2Y2NTRlOGMyYWFjNjBmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9kb2NzL2FzeW5jaW8ucnN0CkBAIC0wLDAgKzEsMzIgQEAKK2FzeW5jaW8gQVBJCis9PT09PT09
PT09PQorCitUaGUgYXN5bmNpbyBBUEkgcHJvdmlkZXMgYSBoaWdoLWxldmVsIFFVSUMgQVBJIGJ1
aWx0IG9uIHRvcCBvZiA6bW9kOmBhc3luY2lvYCwKK1B5dGhvbidzIHN0YW5kYXJkIGFzeW5jaHJv
bm91cyBJL08gZnJhbWV3b3JrLgorCitgYGFpb3F1aWNgYCBjb21lcyB3aXRoIGEgc2VsZWN0aW9u
IG9mIGV4YW1wbGVzLCBpbmNsdWRpbmc6CisKKy0gYW4gSFRUUC8zIGNsaWVudAorLSBhbiBIVFRQ
LzMgc2VydmVyCisKK1RoZSBleGFtcGxlcyBjYW4gYmUgYnJvd3NlZCBvbiBHaXRIdWI6CisKK2h0
dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy90cmVlL21hc3Rlci9leGFtcGxlcworCisu
LiBhdXRvbW9kdWxlOjogYWlvcXVpYy5hc3luY2lvCisKK0NsaWVudAorLS0tLS0tCisKKyAgICAu
LiBhdXRvZnVuY3Rpb246OiBjb25uZWN0CisKK1NlcnZlcgorLS0tLS0tCisKKyAgICAuLiBhdXRv
ZnVuY3Rpb246OiBzZXJ2ZQorCitDb21tb24KKy0tLS0tLQorCisgICAgLi4gYXV0b2NsYXNzOjog
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9kb2NzL2NvbmYucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4OTA2MmFjOTc1MzI2YTQ3Zjg4ZWRhZTRkOGQzNDNjZmU3NjBjMGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5CkBAIC0wLDAgKzEsMjA1IEBACisj
IS91c3IvYmluL2VudiBweXRob24zCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBhaW9x
dWljIGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlLCBjcmVhdGVkIGJ5Cisj
IHNwaGlueC1xdWlja3N0YXJ0IG9uIFRodSBGZWIgIDggMTc6MjI6MTQgMjAxOC4KKyMKKyMgVGhp
cyBmaWxlIGlzIGV4ZWNmaWxlKClkIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNldCB0byBp
dHMKKyMgY29udGFpbmluZyBkaXIuCisjCisjIE5vdGUgdGhhdCBub3QgYWxsIHBvc3NpYmxlIGNv
bmZpZ3VyYXRpb24gdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoaXMKKyMgYXV0b2dlbmVyYXRlZCBm
aWxlLgorIworIyBBbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMgaGF2ZSBhIGRlZmF1bHQ7IHZhbHVl
cyB0aGF0IGFyZSBjb21tZW50ZWQgb3V0CisjIHNlcnZlIHRvIHNob3cgdGhlIGRlZmF1bHQuCisK
K2ltcG9ydCBzeXMsIG9zCisKKyMgSWYgZXh0ZW5zaW9ucyAob3IgbW9kdWxlcyB0byBkb2N1bWVu
dCB3aXRoIGF1dG9kb2MpIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwKKyMgYWRkIHRoZXNlIGRp
cmVjdG9yaWVzIHRvIHN5cy5wYXRoIGhlcmUuIElmIHRoZSBkaXJlY3RvcnkgaXMgcmVsYXRpdmUg
dG8gdGhlCisjIGRvY3VtZW50YXRpb24gcm9vdCwgdXNlIG9zLnBhdGguYWJzcGF0aCB0byBtYWtl
IGl0IGFic29sdXRlLCBsaWtlIHNob3duIGhlcmUuCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5hYnNwYXRoKCcuLicpKQorCisKK2NsYXNzIE1vY2tCdWZmZXI6CisgICAgQnVmZmVyID0gTm9u
ZQorICAgIEJ1ZmZlclJlYWRFcnJvciA9IE5vbmUKKyAgICBCdWZmZXJXcml0ZUVycm9yID0gTm9u
ZQorCisKK2NsYXNzIE1vY2tDcnlwdG86CisgICAgQUVBRCA9IE5vbmUKKyAgICBDcnlwdG9FcnJv
ciA9IFZhbHVlRXJyb3IKKyAgICBIZWFkZXJQcm90ZWN0aW9uID0gTm9uZQorCisKK2NsYXNzIE1v
Y2tQeWxzcXBhY2s6CisgICAgRGVjb2RlciA9IE5vbmUKKyAgICBFbmNvZGVyID0gTm9uZQorICAg
IFN0cmVhbUJsb2NrZWQgPSBOb25lCisKKworc3lzLm1vZHVsZXMudXBkYXRlKHsKKyAgICAiYWlv
cXVpYy5fYnVmZmVyIjogTW9ja0J1ZmZlcigpLAorICAgICJhaW9xdWljLl9jcnlwdG8iOiBNb2Nr
Q3J5cHRvKCksCisgICAgInB5bHNxcGFjayI6IE1vY2tQeWxzcXBhY2soKSwKK30pCisKKyMgLS0g
R2VuZXJhbCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjIElmIHlvdXIgZG9jdW1lbnRhdGlvbiBuZWVkcyBhIG1pbmltYWwg
U3BoaW54IHZlcnNpb24sIHN0YXRlIGl0IGhlcmUuCisjCisjIG5lZWRzX3NwaGlueCA9ICcxLjAn
CisKKyMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBzdHJp
bmdzLiBUaGV5IGNhbiBiZQorIyBleHRlbnNpb25zIGNvbWluZyB3aXRoIFNwaGlueCAobmFtZWQg
J3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9tCisjIG9uZXMuCitleHRlbnNpb25zID0gWwor
ICAgICdzcGhpbnguZXh0LmF1dG9kb2MnLAorICAgICdzcGhpbnguZXh0LmludGVyc3BoaW54JywK
KyAgICAnc3BoaW54X2F1dG9kb2NfdHlwZWhpbnRzJywKKyAgICAnc3BoaW54Y29udHJpYi5hc3lu
Y2lvJywKK10KK2ludGVyc3BoaW54X21hcHBpbmcgPSB7CisgICAgJ2NyeXB0b2dyYXBoeSc6ICgn
aHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vZW4vbGF0ZXN0JywgTm9uZSksCisgICAgJ3B5dGhvbic6
ICgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMycsIE5vbmUpLAorfQorCisjIEFkZCBhbnkgcGF0
aHMgdGhhdCBjb250YWluIHRlbXBsYXRlcyBoZXJlLCByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9y
eS4KK3RlbXBsYXRlc19wYXRoID0gWydfdGVtcGxhdGVzJ10KKworIyBUaGUgc3VmZml4KGVzKSBv
ZiBzb3VyY2UgZmlsZW5hbWVzLgorIyBZb3UgY2FuIHNwZWNpZnkgbXVsdGlwbGUgc3VmZml4IGFz
IGEgbGlzdCBvZiBzdHJpbmc6CisjCisjIHNvdXJjZV9zdWZmaXggPSBbJy5yc3QnLCAnLm1kJ10K
K3NvdXJjZV9zdWZmaXggPSAnLnJzdCcKKworIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQu
CittYXN0ZXJfZG9jID0gJ2luZGV4JworCisjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhl
IHByb2plY3QuCitwcm9qZWN0ID0gJ2Fpb3F1aWMnCitjb3B5cmlnaHQgPSB1JzIwMTksIEplcmVt
eSBMYWluw6knCithdXRob3IgPSB1J0plcmVteSBMYWluw6knCisKKyMgVGhlIHZlcnNpb24gaW5m
byBmb3IgdGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50
IGZvcgorIyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3Ro
ZXIgcGxhY2VzIHRocm91Z2hvdXQgdGhlCisjIGJ1aWx0IGRvY3VtZW50cy4KKyMKKyMgVGhlIHNo
b3J0IFguWSB2ZXJzaW9uLgordmVyc2lvbiA9ICcnCisjIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1
ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCityZWxlYXNlID0gJycKKworIyBUaGUgbGFuZ3VhZ2Ug
Zm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRp
b24KKyMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgorIworIyBUaGlzIGlzIGFs
c28gdXNlZCBpZiB5b3UgZG8gY29udGVudCB0cmFuc2xhdGlvbiB2aWEgZ2V0dGV4dCBjYXRhbG9n
cy4KKyMgVXN1YWxseSB5b3Ugc2V0ICJsYW5ndWFnZSIgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGZv
ciB0aGVzZSBjYXNlcy4KK2xhbmd1YWdlID0gTm9uZQorCisjIExpc3Qgb2YgcGF0dGVybnMsIHJl
bGF0aXZlIHRvIHNvdXJjZSBkaXJlY3RvcnksIHRoYXQgbWF0Y2ggZmlsZXMgYW5kCisjIGRpcmVj
dG9yaWVzIHRvIGlnbm9yZSB3aGVuIGxvb2tpbmcgZm9yIHNvdXJjZSBmaWxlcy4KKyMgVGhpcyBw
YXR0ZXJucyBhbHNvIGVmZmVjdCB0byBodG1sX3N0YXRpY19wYXRoIGFuZCBodG1sX2V4dHJhX3Bh
dGgKK2V4Y2x1ZGVfcGF0dGVybnMgPSBbJ19idWlsZCcsICdUaHVtYnMuZGInLCAnLkRTX1N0b3Jl
J10KKworIyBUaGUgbmFtZSBvZiB0aGUgUHlnbWVudHMgKHN5bnRheCBoaWdobGlnaHRpbmcpIHN0
eWxlIHRvIHVzZS4KK3B5Z21lbnRzX3N0eWxlID0gJ3NwaGlueCcKKworIyBJZiB0cnVlLCBgdG9k
b2AgYW5kIGB0b2RvTGlzdGAgcHJvZHVjZSBvdXRwdXQsIGVsc2UgdGhleSBwcm9kdWNlIG5vdGhp
bmcuCit0b2RvX2luY2x1ZGVfdG9kb3MgPSBGYWxzZQorCisKKyMgLS0gT3B0aW9ucyBmb3IgSFRN
TCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjIFRoZSB0aGVtZSB0byB1c2UgZm9yIEhUTUwgYW5kIEhUTUwgSGVscCBwYWdlcy4gIFNlZSB0
aGUgZG9jdW1lbnRhdGlvbiBmb3IKKyMgYSBsaXN0IG9mIGJ1aWx0aW4gdGhlbWVzLgorIworaHRt
bF90aGVtZSA9ICdhbGFiYXN0ZXInCisKKyMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lm
aWMgYW5kIGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCisjIGZ1cnRoZXIu
ICBGb3IgYSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhl
CisjIGRvY3VtZW50YXRpb24uCisjCitodG1sX3RoZW1lX29wdGlvbnMgPSB7CisgICAgJ2Rlc2Ny
aXB0aW9uJzogJ0EgbGlicmFyeSBmb3IgUVVJQyBpbiBQeXRob24uJywKKyAgICAnZ2l0aHViX2J1
dHRvbic6IFRydWUsCisgICAgJ2dpdGh1Yl91c2VyJzogJ2Fpb3J0YycsCisgICAgJ2dpdGh1Yl9y
ZXBvJzogJ2Fpb3F1aWMnLAorfQorCisjIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3Rv
bSBzdGF0aWMgZmlsZXMgKHN1Y2ggYXMgc3R5bGUgc2hlZXRzKSBoZXJlLAorIyByZWxhdGl2ZSB0
byB0aGlzIGRpcmVjdG9yeS4gVGhleSBhcmUgY29waWVkIGFmdGVyIHRoZSBidWlsdGluIHN0YXRp
YyBmaWxlcywKKyMgc28gYSBmaWxlIG5hbWVkICJkZWZhdWx0LmNzcyIgd2lsbCBvdmVyd3JpdGUg
dGhlIGJ1aWx0aW4gImRlZmF1bHQuY3NzIi4KK2h0bWxfc3RhdGljX3BhdGggPSBbJ19zdGF0aWMn
XQorCisjIEN1c3RvbSBzaWRlYmFyIHRlbXBsYXRlcywgbXVzdCBiZSBhIGRpY3Rpb25hcnkgdGhh
dCBtYXBzIGRvY3VtZW50IG5hbWVzCisjIHRvIHRlbXBsYXRlIG5hbWVzLgorIworIyBUaGlzIGlz
IHJlcXVpcmVkIGZvciB0aGUgYWxhYmFzdGVyIHRoZW1lCisjIHJlZnM6IGh0dHA6Ly9hbGFiYXN0
ZXIucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2luc3RhbGxhdGlvbi5odG1sI3NpZGViYXJzCito
dG1sX3NpZGViYXJzID0geworICAgICcqKic6IFsKKyAgICAgICAgJ2Fib3V0Lmh0bWwnLAorICAg
ICAgICAnbmF2aWdhdGlvbi5odG1sJywKKyAgICAgICAgJ3JlbGF0aW9ucy5odG1sJywKKyAgICAg
ICAgJ3NlYXJjaGJveC5odG1sJywKKyAgICBdCit9CisKKworIyAtLSBPcHRpb25zIGZvciBIVE1M
SGVscCBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyMgT3V0cHV0IGZpbGUgYmFzZSBuYW1lIGZvciBIVE1MIGhlbHAgYnVpbGRlci4KK2h0bWxoZWxw
X2Jhc2VuYW1lID0gJ2Fpb3F1aWNkb2MnCisKKworIyAtLSBPcHRpb25zIGZvciBMYVRlWCBvdXRw
dXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2xhdGV4
X2VsZW1lbnRzID0geworICAgICMgVGhlIHBhcGVyIHNpemUgKCdsZXR0ZXJwYXBlcicgb3IgJ2E0
cGFwZXInKS4KKyAgICAjCisgICAgIyAncGFwZXJzaXplJzogJ2xldHRlcnBhcGVyJywKKworICAg
ICMgVGhlIGZvbnQgc2l6ZSAoJzEwcHQnLCAnMTFwdCcgb3IgJzEycHQnKS4KKyAgICAjCisgICAg
IyAncG9pbnRzaXplJzogJzEwcHQnLAorCisgICAgIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUg
TGFUZVggcHJlYW1ibGUuCisgICAgIworICAgICMgJ3ByZWFtYmxlJzogJycsCisKKyAgICAjIExh
dGV4IGZpZ3VyZSAoZmxvYXQpIGFsaWdubWVudAorICAgICMKKyAgICAjICdmaWd1cmVfYWxpZ24n
OiAnaHRicCcsCit9CisKKyMgR3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBMYVRlWCBm
aWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0YXJnZXQgbmFtZSwg
dGl0bGUsCisjICBhdXRob3IsIGRvY3VtZW50Y2xhc3MgW2hvd3RvLCBtYW51YWwsIG9yIG93biBj
bGFzc10pLgorbGF0ZXhfZG9jdW1lbnRzID0gWworICAgIChtYXN0ZXJfZG9jLCAnYWlvcXVpYy50
ZXgnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9yLCAnbWFudWFsJyksCitd
CisKKworIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBvdXRwdXQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgT25lIGVudHJ5IHBlciBtYW51YWwgcGFnZS4g
TGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCBuYW1lLCBkZXNjcmlwdGlvbiwg
YXV0aG9ycywgbWFudWFsIHNlY3Rpb24pLgorbWFuX3BhZ2VzID0gWworICAgIChtYXN0ZXJfZG9j
LCAnYWlvcXVpYycsICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBbYXV0aG9yXSwgMSkK
K10KKworCisjIC0tIE9wdGlvbnMgZm9yIFRleGluZm8gb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJl
ZSBpbnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVzCisjIChzb3VyY2Ugc3RhcnQgZmls
ZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCisjICBkaXIgbWVudSBlbnRyeSwgZGVzY3Jp
cHRpb24sIGNhdGVnb3J5KQordGV4aW5mb19kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2Ms
ICdhaW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIGF1dGhvciwgJ2Fpb3F1
aWMnLCAnT25lIGxpbmUgZGVzY3JpcHRpb24gb2YgcHJvamVjdC4nLAorICAgICAnTWlzY2VsbGFu
ZW91cycpLAorXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9kb2NzL2Rlc2lnbi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzUyOWU3NjJmNWE2MzRlMmEz
NTc5MWU0NjViOTA0OWJhNGJlNjIxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9k
b2NzL2Rlc2lnbi5yc3QKQEAgLTAsMCArMSwzNyBAQAorRGVzaWduCis9PT09PT0KKworU2Fucy1J
TyBBUElzCisuLi4uLi4uLi4uLi4KKworQm90aCB0aGUgUVVJQyBhbmQgdGhlIEhUVFAvMyBBUElz
IGZvbGxvdyB0aGUgYHNhbnMgSS9PYF8gcGF0dGVybiwgbGVhdmluZworYWN0dWFsIEkvTyBvcGVy
YXRpb25zIHRvIHRoZSBBUEkgdXNlci4gVGhpcyBhcHByb2FjaCBoYXMgYSBudW1iZXIgb2YKK2Fk
dmFudGFnZXMgaW5jbHVkaW5nIG1ha2luZyB0aGUgY29kZSB0ZXN0YWJsZSBhbmQgYWxsb3dpbmcg
aW50ZWdyYXRpb24gd2l0aAorZGlmZmVyZW50IGNvbmN1cnJlbmN5IG1vZGVscy4KKworVExTIGFu
ZCBlbmNyeXB0aW9uCisuLi4uLi4uLi4uLi4uLi4uLi4KKworVExTIDEuMworKysrKysrKworCitg
YGFpb3F1aWNgYCBmZWF0dXJlcyBhIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbiBidWls
dCB1cG9uIHRoZQorYGNyeXB0b2dyYXBoeWBfIGxpYnJhcnkuIFRoaXMgaXMgYmVjYXVzZSBRVUlD
IHJlcXVpcmVzIHNvbWUgQVBJcyB3aGljaCBhcmUKK2N1cnJlbnRseSB1bmF2YWlsYWJsZSBpbiBt
YWluc3RyZWFtIFRMUyBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBPcGVuU1NMOgorCistIHRoZSBh
YmlsaXR5IHRvIGV4dHJhY3QgdHJhZmZpYyBzZWNyZXRzCisKKy0gdGhlIGFiaWxpdHkgdG8gb3Bl
cmF0ZSBkaXJlY3RseSBvbiBUTFMgbWVzc2FnZXMsIHdpdGhvdXQgdXNpbmcgdGhlIFRMUworICBy
ZWNvcmQgbGF5ZXIKKworSGVhZGVyIHByb3RlY3Rpb24gYW5kIHBheWxvYWQgZW5jcnlwdGlvbgor
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworCitRVUlDIG1ha2VzIGV4
dGVuc2l2ZSB1c2Ugb2YgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIHRvIHByb3RlY3QgUVVJQyBw
YWNrZXQKK2hlYWRlcnMgYW5kIGVuY3J5cHQgcGFja2V0IHBheWxvYWRzLiBUaGVzZSBvcGVyYXRp
b25zIG9jY3VyIGZvciBldmVyeSBzaW5nbGUKK3BhY2tldCBhbmQgYXJlIGEgZGV0ZXJtaW5pbmcg
ZmFjdG9yIGZvciBwZXJmb3JtYW5jZS4gRm9yIHRoaXMgcmVhc29uLCB0aGV5CithcmUgaW1wbGVt
ZW50ZWQgYXMgYSBDIGV4dGVuc2lvbiBsaW5rZWQgdG8gYE9wZW5TU0xgXy4KKworLi4gX3NhbnMg
SS9POiBodHRwczovL3NhbnMtaW8ucmVhZHRoZWRvY3MuaW8vCisuLiBfY3J5cHRvZ3JhcGh5OiBo
dHRwczovL2NyeXB0b2dyYXBoeS5pby8KKy4uIF9PcGVuU1NMOiBodHRwczovL3d3dy5vcGVuc3Ns
Lm9yZy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9kb2NzL2gzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGUyMjAxYzQzZDQ2YjBjYmIyYmFjMjhkZmNmNTky
MGEwMTI5MTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0CkBA
IC0wLDAgKzEsNDQgQEAKK0hUVFAvMyBBUEkKKz09PT09PT09PT0KKworVGhlIEhUVFAvMyBBUEkg
cGVyZm9ybXMgbm8gSS9PIG9uIGl0cyBvd24sIGxlYXZpbmcgdGhpcyB0byB0aGUgQVBJIHVzZXIu
CitUaGlzIGFsbG93cyB5b3UgdG8gaW50ZWdyYXRlIEhUVFAvMyBpbiBhbnkgUHl0aG9uIGFwcGxp
Y2F0aW9uLCByZWdhcmRsZXNzIG9mCit0aGUgY29uY3VycmVuY3kgbW9kZWwgeW91IGFyZSB1c2lu
Zy4KKworQ29ubmVjdGlvbgorLS0tLS0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5o
My5jb25uZWN0aW9uCisKKyAgICAuLiBhdXRvY2xhc3M6OiBIM0Nvbm5lY3Rpb24KKyAgICAgICAg
Om1lbWJlcnM6CisKKworRXZlbnRzCistLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMu
aDMuZXZlbnRzCisKKyAgICAuLiBhdXRvY2xhc3M6OiBIM0V2ZW50CisgICAgICAgIDptZW1iZXJz
OgorCisgICAgLi4gYXV0b2NsYXNzOjogRGF0YVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisgICAgLi4gYXV0b2NsYXNzOjogSGVhZGVyc1JlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisgICAgLi4gYXV0b2NsYXNzOjogUHVzaFByb21pc2VSZWNlaXZlZAorICAgICAgICA6bWVtYmVy
czoKKworCitFeGNlcHRpb25zCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWlj
LmgzLmV4Y2VwdGlvbnMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXJyb3IKKyAgICAgICAgOm1l
bWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBOb0F2YWlsYWJsZVB1c2hJREVycm9yCisgICAg
ICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NDE1NjFhMjI0MDQwYmMx
YThhY2UyNjZhZDAxNTY4ZjY4NDE3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZG9jcy9pbmRleC5yc3QKQEAgLTAsMCArMSwzOSBAQAorYWlvcXVpYworPT09PT09PQorCit8cHlw
aS12fCB8cHlwaS1weXZlcnNpb25zfCB8cHlwaS1sfCB8dGVzdHN8IHxjb2RlY292fAorCisuLiB8
cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L2Fpb3F1aWMuc3Zn
CisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9xdWljCisKKy4u
IHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3B5
dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9y
Zy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24u
b3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGltYWdlOjogaHR0cHM6Ly9naXRodWIuY29t
L2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9iYWRnZS5zdmcKKyAgICA6dGFyZ2V0OiBo
dHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvYWN0aW9ucworCisuLiB8Y29kZWNvdnwg
aW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRodWIvYWlvcnRjL2Fp
b3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2doL2Fpb3J0Yy9haW9x
dWljCisKK2BgYWlvcXVpY2BgIGlzIGEgbGlicmFyeSBmb3IgdGhlIFFVSUMgbmV0d29yayBwcm90
b2NvbCBpbiBQeXRob24uIEl0IGZlYXR1cmVzIHNldmVyYWwKK0FQSXM6CisKKy0gYSBRVUlDIEFQ
SSBmb2xsb3dpbmcgdGhlICJicmluZyB5b3VyIG93biBJL08iIHBhdHRlcm4sIHN1aXRhYmxlIGZv
cgorICBlbWJlZGRpbmcgaW4gYW55IGZyYW1ld29yaywKKworLSBhbiBIVFRQLzMgQVBJIHdoaWNo
IGFsc28gZm9sbG93cyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwKKworLSBhIFFV
SUMgY29udmVuaWVuY2UgQVBJIGJ1aWx0IG9uIHRvcCBvZiA6bW9kOmBhc3luY2lvYCwgUHl0aG9u
J3Mgc3RhbmRhcmQgYXN5bmNocm9ub3VzCisgIEkvTyBmcmFtZXdvcmsuCisKKy4uIHRvY3RyZWU6
OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGRlc2lnbgorICAgcXVpYworICAgaDMKKyAgIGFzeW5j
aW8KKyAgIGxpY2Vuc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2UucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyZDNiMDdmYzkz
ZjY0N2YzZmQwOGU2NWI0YjRmYWRkY2YzM2FmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9kb2NzL2xpY2Vuc2UucnN0CkBAIC0wLDAgKzEsNCBAQAorTGljZW5zZQorLS0tLS0tLQor
CisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL0xJQ0VOU0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9kb2NzL3F1aWMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjBlYmVmYjQ5ZDUxNGE0NTE1YzIyM2NkYzg0MzY5Y2QxNmExMmI3MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9kb2NzL3F1aWMucnN0CkBAIC0wLDAgKzEsNTEgQEAKK1FVSUMgQVBJ
Cis9PT09PT09PQorCitUaGUgUVVJQyBBUEkgcGVyZm9ybXMgbm8gSS9PIG9uIGl0cyBvd24sIGxl
YXZpbmcgdGhpcyB0byB0aGUgQVBJIHVzZXIuCitUaGlzIGFsbG93cyB5b3UgdG8gaW50ZWdyYXRl
IFFVSUMgaW4gYW55IFB5dGhvbiBhcHBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZgordGhlIGNvbmN1
cnJlbmN5IG1vZGVsIHlvdSBhcmUgdXNpbmcuCisKK0Nvbm5lY3Rpb24KKy0tLS0tLS0tLS0KKwor
Li4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25uZWN0aW9uCisKKyAgICAuLiBhdXRvY2xh
c3M6OiBRdWljQ29ubmVjdGlvbgorICAgICAgICA6bWVtYmVyczoKKworCitDb25maWd1cmF0aW9u
CistLS0tLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbgorCisgICAgLi4gYXV0b2NsYXNzOjogUXVpY0NvbmZpZ3VyYXRpb24KKyAgICAgICAgOm1l
bWJlcnM6CisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMubG9nZ2VyCisKKyAgICAuLiBh
dXRvY2xhc3M6OiBRdWljTG9nZ2VyCisgICAgICAgIDptZW1iZXJzOgorCitFdmVudHMKKy0tLS0t
LQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmV2ZW50cworCisgICAgLi4gYXV0b2Ns
YXNzOjogUXVpY0V2ZW50CisgICAgICAgIDptZW1iZXJzOgorCisgICAgLi4gYXV0b2NsYXNzOjog
Q29ubmVjdGlvblRlcm1pbmF0ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xh
c3M6OiBIYW5kc2hha2VDb21wbGV0ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBQaW5nQWNrbm93bGVkZ2VkCisgICAgICAgIDptZW1iZXJzOgorCisgICAgLi4gYXV0
b2NsYXNzOjogU3RyZWFtRGF0YVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgorCisgICAgLi4g
YXV0b2NsYXNzOjogU3RyZWFtUmVzZXQKKyAgICAgICAgOm1lbWJlcnM6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4MGU3OTk5MDQzZDI5NzQxYTEzNDkxNjY3OGQ1NDA0OTky
YTk3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDI0IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9NYWtlZmlsZQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2FzeW5jaW8ucnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvY29uZi5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9kb2NzL2Rlc2lnbi5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5y
c3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNl
bnNlLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3F1aWMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvZGVtby5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZkNGY5NzUyZjE0Yzc5N2Y0MjkyNzczNzlkMDc2ZGQ1NmFjZTkyMDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQpAQCAtMCwwICsxLDEw
OSBAQAorIworIyBkZW1vIGFwcGxpY2F0aW9uIGZvciBodHRwM19zZXJ2ZXIucHkKKyMKKworaW1w
b3J0IGRhdGV0aW1lCitpbXBvcnQgb3MKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNv
ZGUKKworaW1wb3J0IGh0dHBiaW4KK2Zyb20gYXNnaXJlZi53c2dpIGltcG9ydCBXc2dpVG9Bc2dp
Citmcm9tIHN0YXJsZXR0ZS5hcHBsaWNhdGlvbnMgaW1wb3J0IFN0YXJsZXR0ZQorZnJvbSBzdGFy
bGV0dGUucmVzcG9uc2VzIGltcG9ydCBQbGFpblRleHRSZXNwb25zZSwgUmVzcG9uc2UKK2Zyb20g
c3RhcmxldHRlLnN0YXRpY2ZpbGVzIGltcG9ydCBTdGF0aWNGaWxlcworZnJvbSBzdGFybGV0dGUu
dGVtcGxhdGluZyBpbXBvcnQgSmluamEyVGVtcGxhdGVzCitmcm9tIHN0YXJsZXR0ZS53ZWJzb2Nr
ZXRzIGltcG9ydCBXZWJTb2NrZXREaXNjb25uZWN0CisKK1JPT1QgPSBvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pCitTVEFUSUNfUk9PVCA9IG9zLmVudmlyb24uZ2V0KCJTVEFUSUNfUk9PVCIsIG9z
LnBhdGguam9pbihST09ULCAiaHRkb2NzIikpCitTVEFUSUNfVVJMID0gIi8iCitMT0dTX1BBVEgg
PSBvcy5wYXRoLmpvaW4oU1RBVElDX1JPT1QsICJsb2dzIikKK1FWSVNfVVJMID0gImh0dHBzOi8v
cXZpcy5lZG0udWhhc3NlbHQuYmUvIgorCit0ZW1wbGF0ZXMgPSBKaW5qYTJUZW1wbGF0ZXMoZGly
ZWN0b3J5PW9zLnBhdGguam9pbihST09ULCAidGVtcGxhdGVzIikpCithcHAgPSBTdGFybGV0dGUo
KQorCisKK0BhcHAucm91dGUoIi8iKQorYXN5bmMgZGVmIGhvbWVwYWdlKHJlcXVlc3QpOgorICAg
ICIiIgorICAgIFNpbXBsZSBob21lcGFnZS4KKyAgICAiIiIKKyAgICBhd2FpdCByZXF1ZXN0LnNl
bmRfcHVzaF9wcm9taXNlKCIvc3R5bGUuY3NzIikKKyAgICByZXR1cm4gdGVtcGxhdGVzLlRlbXBs
YXRlUmVzcG9uc2UoImluZGV4Lmh0bWwiLCB7InJlcXVlc3QiOiByZXF1ZXN0fSkKKworCitAYXBw
LnJvdXRlKCIvZWNobyIsIG1ldGhvZHM9WyJQT1NUIl0pCithc3luYyBkZWYgZWNobyhyZXF1ZXN0
KToKKyAgICAiIiIKKyAgICBIVFRQIGVjaG8gZW5kcG9pbnQuCisgICAgIiIiCisgICAgY29udGVu
dCA9IGF3YWl0IHJlcXVlc3QuYm9keSgpCisgICAgbWVkaWFfdHlwZSA9IHJlcXVlc3QuaGVhZGVy
cy5nZXQoImNvbnRlbnQtdHlwZSIpCisgICAgcmV0dXJuIFJlc3BvbnNlKGNvbnRlbnQsIG1lZGlh
X3R5cGU9bWVkaWFfdHlwZSkKKworCitAYXBwLnJvdXRlKCIvbG9ncy8/IikKK2FzeW5jIGRlZiBs
b2dzKHJlcXVlc3QpOgorICAgICIiIgorICAgIEJyb3dzYWJsZSBsaXN0IG9mIFFMT0cgZmlsZXMu
CisgICAgIiIiCisgICAgbG9ncyA9IFtdCisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihMT0dT
X1BBVEgpOgorICAgICAgICBpZiBuYW1lLmVuZHN3aXRoKCIucWxvZyIpOgorICAgICAgICAgICAg
cyA9IG9zLnN0YXQob3MucGF0aC5qb2luKExPR1NfUEFUSCwgbmFtZSkpCisgICAgICAgICAgICBm
aWxlX3VybCA9ICJodHRwczovLyIgKyByZXF1ZXN0LmhlYWRlcnNbImhvc3QiXSArICIvbG9ncy8i
ICsgbmFtZQorICAgICAgICAgICAgbG9ncy5hcHBlbmQoCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAiZGF0ZSI6IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3Rh
bXAocy5zdF9tdGltZSkuc3RyZnRpbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiJVktJW0t
JWQgJUg6JU06JVMiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
ICJmaWxlX3VybCI6IGZpbGVfdXJsLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6IG5hbWVb
Oi01XSwKKyAgICAgICAgICAgICAgICAgICAgInF2aXNfdXJsIjogUVZJU19VUkwKKyAgICAgICAg
ICAgICAgICAgICAgKyAiPyIKKyAgICAgICAgICAgICAgICAgICAgKyB1cmxlbmNvZGUoeyJmaWxl
IjogZmlsZV91cmx9KQorICAgICAgICAgICAgICAgICAgICArICIjL3NlcXVlbmNlIiwKKyAgICAg
ICAgICAgICAgICAgICAgInNpemUiOiBzLnN0X3NpemUsCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgKQorICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVSZXNwb25zZSgKKyAgICAg
ICAgImxvZ3MuaHRtbCIsCisgICAgICAgIHsKKyAgICAgICAgICAgICJsb2dzIjogc29ydGVkKGxv
Z3MsIGtleT1sYW1iZGEgeDogeFsiZGF0ZSJdLCByZXZlcnNlPVRydWUpLAorICAgICAgICAgICAg
InJlcXVlc3QiOiByZXF1ZXN0LAorICAgICAgICB9LAorICAgICkKKworCitAYXBwLnJvdXRlKCIv
e3NpemU6aW50fSIpCitkZWYgcGFkZGluZyhyZXF1ZXN0KToKKyAgICAiIiIKKyAgICBEeW5hbWlj
YWxseSBnZW5lcmF0ZWQgZGF0YSwgbWF4aW11bSA1ME1CLgorICAgICIiIgorICAgIHNpemUgPSBt
aW4oNTAwMDAwMDAsIHJlcXVlc3QucGF0aF9wYXJhbXNbInNpemUiXSkKKyAgICByZXR1cm4gUGxh
aW5UZXh0UmVzcG9uc2UoIloiICogc2l6ZSkKKworCitAYXBwLndlYnNvY2tldF9yb3V0ZSgiL3dz
IikKK2FzeW5jIGRlZiB3cyh3ZWJzb2NrZXQpOgorICAgICIiIgorICAgIFdlYlNvY2tldCBlY2hv
IGVuZHBvaW50LgorICAgICIiIgorICAgIGlmICJjaGF0IiBpbiB3ZWJzb2NrZXQuc2NvcGVbInN1
YnByb3RvY29scyJdOgorICAgICAgICBzdWJwcm90b2NvbCA9ICJjaGF0IgorICAgIGVsc2U6Cisg
ICAgICAgIHN1YnByb3RvY29sID0gTm9uZQorICAgIGF3YWl0IHdlYnNvY2tldC5hY2NlcHQoc3Vi
cHJvdG9jb2w9c3VicHJvdG9jb2wpCisKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgd2Vic29ja2V0LnJlY2VpdmVfdGV4dCgpCisgICAg
ICAgICAgICBhd2FpdCB3ZWJzb2NrZXQuc2VuZF90ZXh0KG1lc3NhZ2UpCisgICAgZXhjZXB0IFdl
YlNvY2tldERpc2Nvbm5lY3Q6CisgICAgICAgIHBhc3MKKworCithcHAubW91bnQoIi9odHRwYmlu
IiwgV3NnaVRvQXNnaShodHRwYmluLmFwcCkpCisKK2FwcC5tb3VudChTVEFUSUNfVVJMLCBTdGF0
aWNGaWxlcyhkaXJlY3Rvcnk9U1RBVElDX1JPT1QsIGh0bWw9VHJ1ZSkpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3JvYm90cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3JvYm90cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFhYTBiZGVhYWNlNjM3MmE3ZWIx
MzAxMGZkMTY2NmM2NTU0Njg2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odGRvY3Mvcm9ib3RzLnR4dApAQCAtMCwwICsxLDIgQEAKK1VzZXItYWdlbnQ6ICoKK0Rp
c2FsbG93OiAvbG9ncwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9z
dHlsZS5jc3MgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMTUyM2RiOGFkOGQxNmY3NTI2MGM1ODE3YWI0OGU4OWUyMWViYmQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy9zdHlsZS5jc3MKQEAgLTAsMCAr
MSwxMCBAQAorYm9keSB7CisgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOworICAg
IGZvbnQtc2l6ZTogMTZweDsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICB3aWR0aDogNDBlbTsK
K30KKwordGFibGUubG9ncyB7CisgICAgd2lkdGg6IDEwMCU7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2h0ZG9jcy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjY4MjBkZjBkZjgwOWM3
Yzk4OTkyN2E4YjhiMzI4ZTA0OTU2ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2V4YW1wbGVzL2h0ZG9jcy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE4IEBACitUaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3JvYm90cy50eHQKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1w
bGVzL2h0dHAzX2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19jbGllbnQu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGE4ODhhMzZlYTdlYmEyN2YzNmE1ZGQ0MGIwYzc2YTA0MjQ5ZGMyOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19jbGllbnQucHkK
QEAgLTAsMCArMSw0NTUgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9y
dCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcGlja2xlCitpbXBvcnQg
c3NsCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gdHlw
aW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBVbmlvbiwg
Y2FzdAorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCisKK2ltcG9ydCB3c3Byb3Rv
CitpbXBvcnQgd3Nwcm90by5ldmVudHMKKworaW1wb3J0IGFpb3F1aWMKK2Zyb20gYWlvcXVpYy5h
c3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9xdWljLmFzeW5jaW8ucHJvdG9j
b2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0
aW9uIGltcG9ydCBIMF9BTFBOLCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0
aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMg
aW1wb3J0ICgKKyAgICBEYXRhUmVjZWl2ZWQsCisgICAgSDNFdmVudCwKKyAgICBIZWFkZXJzUmVj
ZWl2ZWQsCisgICAgUHVzaFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLmNv
bmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMucXVpYy5l
dmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBR
dWljTG9nZ2VyCitmcm9tIGFpb3F1aWMudGxzIGltcG9ydCBTZXNzaW9uVGlja2V0CisKK3RyeToK
KyAgICBpbXBvcnQgdXZsb29wCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdXZsb29wID0gTm9u
ZQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY2xpZW50IikKKworSHR0cENvbm5lY3Rp
b24gPSBVbmlvbltIMENvbm5lY3Rpb24sIEgzQ29ubmVjdGlvbl0KKworVVNFUl9BR0VOVCA9ICJh
aW9xdWljLyIgKyBhaW9xdWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgVVJMOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB1cmw6IHN0cikgLT4gTm9uZToKKyAgICAgICAgcGFyc2VkID0gdXJscGFy
c2UodXJsKQorCisgICAgICAgIHNlbGYuYXV0aG9yaXR5ID0gcGFyc2VkLm5ldGxvYworICAgICAg
ICBzZWxmLmZ1bGxfcGF0aCA9IHBhcnNlZC5wYXRoCisgICAgICAgIGlmIHBhcnNlZC5xdWVyeToK
KyAgICAgICAgICAgIHNlbGYuZnVsbF9wYXRoICs9ICI/IiArIHBhcnNlZC5xdWVyeQorICAgICAg
ICBzZWxmLnNjaGVtZSA9IHBhcnNlZC5zY2hlbWUKKworCitjbGFzcyBIdHRwUmVxdWVzdDoKKyAg
ICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsIG1ldGhvZDogc3RyLCB1cmw6IFVSTCwgY29u
dGVudDogYnl0ZXMgPSBiIiIsIGhlYWRlcnM6IERpY3QgPSB7fQorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudAorICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFk
ZXJzCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYudXJsID0gdXJs
CisKKworY2xhc3MgV2ViU29ja2V0OgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwg
aHR0cDogSHR0cENvbm5lY3Rpb24sIHN0cmVhbV9pZDogaW50LCB0cmFuc21pdDogQ2FsbGFibGVb
W10sIE5vbmVdCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLmh0dHAgPSBodHRwCisgICAg
ICAgIHNlbGYucXVldWU6IGFzeW5jaW8uUXVldWVbc3RyXSA9IGFzeW5jaW8uUXVldWUoKQorICAg
ICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnN1YnByb3RvY29s
OiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgICAgICBzZWxmLnRyYW5zbWl0ID0gdHJhbnNtaXQK
KyAgICAgICAgc2VsZi53ZWJzb2NrZXQgPSB3c3Byb3RvLkNvbm5lY3Rpb24od3Nwcm90by5Db25u
ZWN0aW9uVHlwZS5DTElFTlQpCisKKyAgICBhc3luYyBkZWYgY2xvc2Uoc2VsZiwgY29kZT0xMDAw
LCByZWFzb249IiIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIHRoZSBj
bG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLndlYnNv
Y2tldC5zZW5kKAorICAgICAgICAgICAgd3Nwcm90by5ldmVudHMuQ2xvc2VDb25uZWN0aW9uKGNv
ZGU9Y29kZSwgcmVhc29uPXJlYXNvbikKKyAgICAgICAgKQorICAgICAgICBzZWxmLmh0dHAuc2Vu
ZF9kYXRhKHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPVRy
dWUpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgYXN5bmMgZGVmIHJlY3Yoc2VsZikg
LT4gc3RyOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2ZSB0aGUgbmV4dCBtZXNzYWdlLgor
ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucXVldWUuZ2V0KCkKKworICAg
IGFzeW5jIGRlZiBzZW5kKHNlbGYsIG1lc3NhZ2U6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIiIi
CisgICAgICAgIFNlbmQgYSBtZXNzYWdlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UobWVzc2FnZSwgc3RyKQorCisgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5z
ZW5kKHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKGRhdGE9bWVzc2FnZSkpCisgICAgICAgIHNl
bGYuaHR0cC5zZW5kX2RhdGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVu
ZF9zdHJlYW09RmFsc2UpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGh0dHBf
ZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlm
IGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBmb3IgaGVh
ZGVyLCB2YWx1ZSBpbiBldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgIGlmIGhlYWRlciA9
PSBiInNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN1
YnByb3RvY29sID0gdmFsdWUuZGVjb2RlKCkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50
LCBEYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXQucmVjZWl2ZV9kYXRh
KGV2ZW50LmRhdGEpCisKKyAgICAgICAgZm9yIHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2
ZW50cygpOgorICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQod3NfZXZl
bnQpCisKKyAgICBkZWYgd2Vic29ja2V0X2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiB3c3By
b3RvLmV2ZW50cy5FdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwg
d3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRf
bm93YWl0KGV2ZW50LmRhdGEpCisKKworY2xhc3MgSHR0cENsaWVudChRdWljQ29ubmVjdGlvblBy
b3RvY29sKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKSAtPiBOb25l
OgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBz
ZWxmLnB1c2hlczogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYu
X2h0dHA6IE9wdGlvbmFsW0h0dHBDb25uZWN0aW9uXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVx
dWVzdF9ldmVudHM6IERpY3RbaW50LCBEZXF1ZVtIM0V2ZW50XV0gPSB7fQorICAgICAgICBzZWxm
Ll9yZXF1ZXN0X3dhaXRlcjogRGljdFtpbnQsIGFzeW5jaW8uRnV0dXJlW0RlcXVlW0gzRXZlbnRd
XV0gPSB7fQorICAgICAgICBzZWxmLl93ZWJzb2NrZXRzOiBEaWN0W2ludCwgV2ViU29ja2V0XSA9
IHt9CisKKyAgICAgICAgaWYgc2VsZi5fcXVpYy5jb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xz
WzBdLnN0YXJ0c3dpdGgoImhxLSIpOgorICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVj
dGlvbihzZWxmLl9xdWljKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5faHR0cCA9
IEgzQ29ubmVjdGlvbihzZWxmLl9xdWljKQorCisgICAgYXN5bmMgZGVmIGdldChzZWxmLCB1cmw6
IHN0ciwgaGVhZGVyczogRGljdCA9IHt9KSAtPiBEZXF1ZVtIM0V2ZW50XToKKyAgICAgICAgIiIi
CisgICAgICAgIFBlcmZvcm0gYSBHRVQgcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJl
dHVybiBhd2FpdCBzZWxmLl9yZXF1ZXN0KAorICAgICAgICAgICAgSHR0cFJlcXVlc3QobWV0aG9k
PSJHRVQiLCB1cmw9VVJMKHVybCksIGhlYWRlcnM9aGVhZGVycykKKyAgICAgICAgKQorCisgICAg
YXN5bmMgZGVmIHBvc3Qoc2VsZiwgdXJsOiBzdHIsIGRhdGE6IGJ5dGVzLCBoZWFkZXJzOiBEaWN0
ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUGVyZm9ybSBh
IFBPU1QgcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9y
ZXF1ZXN0KAorICAgICAgICAgICAgSHR0cFJlcXVlc3QobWV0aG9kPSJQT1NUIiwgdXJsPVVSTCh1
cmwpLCBjb250ZW50PWRhdGEsIGhlYWRlcnM9aGVhZGVycykKKyAgICAgICAgKQorCisgICAgYXN5
bmMgZGVmIHdlYnNvY2tldChzZWxmLCB1cmw6IHN0ciwgc3VicHJvdG9jb2xzOiBMaXN0W3N0cl0g
PSBbXSkgLT4gV2ViU29ja2V0OgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbiBhIFdlYlNvY2tl
dC4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcXVlc3QgPSBIdHRwUmVxdWVzdChtZXRob2Q9IkNP
Tk5FQ1QiLCB1cmw9VVJMKHVybCkpCisgICAgICAgIHN0cmVhbV9pZCA9IHNlbGYuX3F1aWMuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIHdlYnNvY2tldCA9IFdlYlNvY2tl
dCgKKyAgICAgICAgICAgIGh0dHA9c2VsZi5faHR0cCwgc3RyZWFtX2lkPXN0cmVhbV9pZCwgdHJh
bnNtaXQ9c2VsZi50cmFuc21pdAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5fd2Vic29ja2V0
c1tzdHJlYW1faWRdID0gd2Vic29ja2V0CisKKyAgICAgICAgaGVhZGVycyA9IFsKKyAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkNPTk5FQ1QiKSwKKyAgICAgICAgICAgIChiIjpzY2hlbWUiLCBi
Imh0dHBzIiksCisgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgcmVxdWVzdC51cmwuYXV0aG9y
aXR5LmVuY29kZSgpKSwKKyAgICAgICAgICAgIChiIjpwYXRoIiwgcmVxdWVzdC51cmwuZnVsbF9w
YXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAgIChiIjpwcm90b2NvbCIsIGIid2Vic29ja2V0Iiks
CisgICAgICAgICAgICAoYiJ1c2VyLWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAg
ICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXZlcnNpb24iLCBiIjEzIiksCisgICAgICAgIF0KKyAg
ICAgICAgaWYgc3VicHJvdG9jb2xzOgorICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgKGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCIsICIsICIuam9pbihzdWJwcm90
b2NvbHMpLmVuY29kZSgpKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLl9odHRwLnNlbmRf
aGVhZGVycyhzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPWhlYWRlcnMpCisKKyAgICAgICAg
c2VsZi50cmFuc21pdCgpCisKKyAgICAgICAgcmV0dXJuIHdlYnNvY2tldAorCisgICAgZGVmIGh0
dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAg
IGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFSZWNlaXZlZCkpOgor
ICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAgICAgICAgICBpZiBz
dHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6CisgICAgICAgICAgICAgICAgIyBodHRw
CisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5h
cHBlbmQoZXZlbnQpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBv
cChzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1
bHQoc2VsZi5fcmVxdWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICAgICAgICAgIGVs
aWYgc3RyZWFtX2lkIGluIHNlbGYuX3dlYnNvY2tldHM6CisgICAgICAgICAgICAgICAgIyB3ZWJz
b2NrZXQKKyAgICAgICAgICAgICAgICB3ZWJzb2NrZXQgPSBzZWxmLl93ZWJzb2NrZXRzW3N0cmVh
bV9pZF0KKyAgICAgICAgICAgICAgICB3ZWJzb2NrZXQuaHR0cF9ldmVudF9yZWNlaXZlZChldmVu
dCkKKworICAgICAgICAgICAgZWxpZiBldmVudC5wdXNoX2lkIGluIHNlbGYucHVzaGVzOgorICAg
ICAgICAgICAgICAgICMgcHVzaAorICAgICAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1
c2hfaWRdLmFwcGVuZChldmVudCkKKworICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIFB1
c2hQcm9taXNlUmVjZWl2ZWQpOgorICAgICAgICAgICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9p
ZF0gPSBkZXF1ZSgpCisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXS5hcHBl
bmQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVp
Y0V2ZW50KSAtPiBOb25lOgorICAgICAgICAjIMKgcGFzcyBldmVudCB0byB0aGUgSFRUUCBsYXll
cgorICAgICAgICBpZiBzZWxmLl9odHRwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGh0
dHBfZXZlbnQgaW4gc2VsZi5faHR0cC5oYW5kbGVfZXZlbnQoZXZlbnQpOgorICAgICAgICAgICAg
ICAgIHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZChodHRwX2V2ZW50KQorCisgICAgYXN5bmMgZGVm
IF9yZXF1ZXN0KHNlbGYsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0KToKKyAgICAgICAgc3RyZWFtX2lk
ID0gc2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgc2Vs
Zi5faHR0cC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAor
ICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIHJlcXVl
c3QubWV0aG9kLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgcmVxdWVz
dC51cmwuc2NoZW1lLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5Iiwg
cmVxdWVzdC51cmwuYXV0aG9yaXR5LmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0
aCIsIHJlcXVlc3QudXJsLmZ1bGxfcGF0aC5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIi
dXNlci1hZ2VudCIsIFVTRVJfQUdFTlQuZW5jb2RlKCkpLAorICAgICAgICAgICAgXQorICAgICAg
ICAgICAgKyBbKGsuZW5jb2RlKCksIHYuZW5jb2RlKCkpIGZvciAoaywgdikgaW4gcmVxdWVzdC5o
ZWFkZXJzLml0ZW1zKCldLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9kYXRh
KHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9cmVxdWVzdC5jb250ZW50LCBlbmRfc3RyZWFtPVRy
dWUpCisKKyAgICAgICAgd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbc3RyZWFtX2lkXSA9IGRlcXVlKCkKKyAgICAgICAgc2Vs
Zi5fcmVxdWVzdF93YWl0ZXJbc3RyZWFtX2lkXSA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5z
bWl0KCkKKworICAgICAgICByZXR1cm4gYXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisK
K2FzeW5jIGRlZiBwZXJmb3JtX2h0dHBfcmVxdWVzdCgKKyAgICBjbGllbnQ6IEh0dHBDbGllbnQs
IHVybDogc3RyLCBkYXRhOiBzdHIsIGluY2x1ZGU6IGJvb2wsIG91dHB1dF9kaXI6IE9wdGlvbmFs
W3N0cl0sCispIC0+IE5vbmU6CisgICAgIyBwZXJmb3JtIHJlcXVlc3QKKyAgICBzdGFydCA9IHRp
bWUudGltZSgpCisgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMg
PSBhd2FpdCBjbGllbnQucG9zdCgKKyAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgIGRhdGE9
ZGF0YS5lbmNvZGUoKSwKKyAgICAgICAgICAgIGhlYWRlcnM9eyJjb250ZW50LXR5cGUiOiAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sCisgICAgICAgICkKKyAgICBlbHNlOgor
ICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IGNsaWVudC5nZXQodXJsKQorICAgIGVsYXBzZWQg
PSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAjIHByaW50IHNwZWVkCisgICAgb2N0ZXRzID0g
MAorICAgIGZvciBodHRwX2V2ZW50IGluIGh0dHBfZXZlbnRzOgorICAgICAgICBpZiBpc2luc3Rh
bmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICBvY3RldHMgKz0gbGVu
KGh0dHBfZXZlbnQuZGF0YSkKKyAgICBsb2dnZXIuaW5mbygKKyAgICAgICAgIlJlY2VpdmVkICVk
IGJ5dGVzIGluICUuMWYgcyAoJS4zZiBNYnBzKSIKKyAgICAgICAgJSAob2N0ZXRzLCBlbGFwc2Vk
LCBvY3RldHMgKiA4IC8gZWxhcHNlZCAvIDEwMDAwMDApCisgICAgKQorCisgICAgIyBvdXRwdXQg
cmVzcG9uc2UKKyAgICBpZiBvdXRwdXRfZGlyIGlzIG5vdCBOb25lOgorICAgICAgICBvdXRwdXRf
cGF0aCA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIG91dHB1dF9kaXIsIG9zLnBhdGguYmFz
ZW5hbWUodXJscGFyc2UodXJsKS5wYXRoKSBvciAiaW5kZXguaHRtbCIKKyAgICAgICAgKQorICAg
ICAgICB3aXRoIG9wZW4ob3V0cHV0X3BhdGgsICJ3YiIpIGFzIG91dHB1dF9maWxlOgorICAgICAg
ICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShodHRwX2V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQpIGFuZCBpbmNsdWRlOgorICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzID0gYiIiCisgICAgICAgICAgICAgICAgICAgIGZvciBr
LCB2IGluIGh0dHBfZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRl
cnMgKz0gayArIGIiOiAiICsgdiArIGIiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVh
ZGVyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGhlYWRlcnMg
KyBiIlxyXG4iKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShodHRwX2V2ZW50LCBE
YXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShodHRw
X2V2ZW50LmRhdGEpCisKKworZGVmIHNhdmVfc2Vzc2lvbl90aWNrZXQodGlja2V0OiBTZXNzaW9u
VGlja2V0KSAtPiBOb25lOgorICAgICIiIgorICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQg
YnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgIGlzIHJlY2Vp
dmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lvbiB0aWNrZXQgcmVjZWl2
ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAgIHdpdGggb3Blbihhcmdz
LnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRp
Y2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bigKKyAgICBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbiwKKyAgICB1cmxzOiBMaXN0W3N0cl0sCisgICAgZGF0YTogc3RyLAorICAgIGlu
Y2x1ZGU6IGJvb2wsCisgICAgb3V0cHV0X2RpcjogT3B0aW9uYWxbc3RyXSwKKyAgICBsb2NhbF9w
b3J0OiBpbnQsCispIC0+IE5vbmU6CisgICAgIyBwYXJzZSBVUkwKKyAgICBwYXJzZWQgPSB1cmxw
YXJzZSh1cmxzWzBdKQorICAgIGFzc2VydCBwYXJzZWQuc2NoZW1lIGluICgKKyAgICAgICAgImh0
dHBzIiwKKyAgICAgICAgIndzcyIsCisgICAgKSwgIk9ubHkgaHR0cHM6Ly8gb3Igd3NzOi8vIFVS
THMgYXJlIHN1cHBvcnRlZC4iCisgICAgaWYgIjoiIGluIHBhcnNlZC5uZXRsb2M6CisgICAgICAg
IGhvc3QsIHBvcnRfc3RyID0gcGFyc2VkLm5ldGxvYy5zcGxpdCgiOiIpCisgICAgICAgIHBvcnQg
PSBpbnQocG9ydF9zdHIpCisgICAgZWxzZToKKyAgICAgICAgaG9zdCA9IHBhcnNlZC5uZXRsb2MK
KyAgICAgICAgcG9ydCA9IDQ0MworCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBo
b3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
CisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICAgICBzZXNzaW9uX3Rp
Y2tldF9oYW5kbGVyPXNhdmVfc2Vzc2lvbl90aWNrZXQsCisgICAgICAgIGxvY2FsX3BvcnQ9bG9j
YWxfcG9ydCwKKyAgICApIGFzIGNsaWVudDoKKyAgICAgICAgY2xpZW50ID0gY2FzdChIdHRwQ2xp
ZW50LCBjbGllbnQpCisKKyAgICAgICAgaWYgcGFyc2VkLnNjaGVtZSA9PSAid3NzIjoKKyAgICAg
ICAgICAgIHdzID0gYXdhaXQgY2xpZW50LndlYnNvY2tldCh1cmxzWzBdLCBzdWJwcm90b2NvbHM9
WyJjaGF0IiwgInN1cGVyY2hhdCJdKQorCisgICAgICAgICAgICAjIHNlbmQgc29tZSBtZXNzYWdl
cyBhbmQgcmVjZWl2ZSByZXBseQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAg
ICAgICAgICAgICAgbWVzc2FnZSA9ICJIZWxsbyB7fSwgV2ViU29ja2V0ISIuZm9ybWF0KGkpCisg
ICAgICAgICAgICAgICAgcHJpbnQoIj4gIiArIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgYXdh
aXQgd3Muc2VuZChtZXNzYWdlKQorCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHdz
LnJlY3YoKQorICAgICAgICAgICAgICAgIHByaW50KCI8ICIgKyBtZXNzYWdlKQorCisgICAgICAg
ICAgICBhd2FpdCB3cy5jbG9zZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHBlcmZv
cm0gcmVxdWVzdAorICAgICAgICAgICAgY29yb3MgPSBbCisgICAgICAgICAgICAgICAgcGVyZm9y
bV9odHRwX3JlcXVlc3QoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudD1jbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgIHVybD11cmwsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZT1pbmNsdWRlLAorICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGZvciB1cmwgaW4gdXJscworICAgICAgICAgICAgXQorICAgICAgICAgICAgYXdhaXQgYXN5
bmNpby5nYXRoZXIoKmNvcm9zKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAg
ZGVmYXVsdHMgPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKworICAgIHBhcnNl
ciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJIVFRQLzMgY2xpZW50IikK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAidXJsIiwgdHlwZT1zdHIsIG5hcmdz
PSIrIiwgaGVscD0idGhlIFVSTCB0byBxdWVyeSAobXVzdCBiZSBIVFRQUykiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLWNhLWNlcnRzIiwgdHlwZT1zdHIsIGhl
bHA9ImxvYWQgQ0EgY2VydGlmaWNhdGVzIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIgorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWQiLCAiLS1kYXRhIiwgdHlwZT1z
dHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGluIGEgUE9TVCByZXF1ZXN0IgorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWkiLAorICAgICAgICAiLS1p
bmNsdWRlIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0iaW5j
bHVkZSB0aGUgSFRUUCByZXNwb25zZSBoZWFkZXJzIGluIHRoZSBvdXRwdXQiLAorICAgICkKKyAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1tYXgtZGF0YSIsCisgICAgICAgIHR5
cGU9aW50LAorICAgICAgICBoZWxwPSJjb25uZWN0aW9uLXdpZGUgZmxvdyBjb250cm9sIGxpbWl0
IChkZWZhdWx0OiAlZCkiICUgZGVmYXVsdHMubWF4X2RhdGEsCisgICAgKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1zdHJlYW0tZGF0YSIsCisgICAgICAgIHR5cGU9
aW50LAorICAgICAgICBoZWxwPSJwZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdCAoZGVmYXVs
dDogJWQpIiAlIGRlZmF1bHRzLm1heF9zdHJlYW1fZGF0YSwKKyAgICApCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAg
ICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2Vy
dmVyIGNlcnRpZmljYXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1sZWdh
Y3ktaHR0cCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InVzZSBIVFRQLzAuOSIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tb3V0cHV0LWRpciIsIHR5cGU9c3RyLCBo
ZWxwPSJ3cml0ZSBkb3dubG9hZGVkIGZpbGVzIHRvIHRoaXMgZGlyZWN0b3J5IiwKKyAgICApCisg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBl
PXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
c2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3Jl
dHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1zIiwKKyAgICAgICAgIi0tc2Vzc2lvbi10aWNrZXQi
LAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0icmVhZCBhbmQgd3JpdGUgc2Vzc2lv
biB0aWNrZXQgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkiCisgICAgKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoCisgICAgICAgICItLWxvY2FsLXBvcnQiLCB0eXBlPWludCwgZGVmYXVsdD0w
LCBoZWxwPSJsb2NhbCBwb3J0IHRvIGJpbmQgZm9yIGNvbm5lY3Rpb25zIiwKKyAgICApCisKKyAg
ICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygK
KyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVz
c2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxz
ZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgaWYgYXJncy5vdXRwdXRfZGlyIGlzIG5vdCBO
b25lIGFuZCBub3Qgb3MucGF0aC5pc2RpcihhcmdzLm91dHB1dF9kaXIpOgorICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSIgJSBhcmdzLm91dHB1dF9kaXIpCisK
KyAgICAjIHByZXBhcmUgY29uZmlndXJhdGlvbgorICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29u
ZmlndXJhdGlvbigKKyAgICAgICAgaXNfY2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgwX0FM
UE4gaWYgYXJncy5sZWdhY3lfaHR0cCBlbHNlIEgzX0FMUE4KKyAgICApCisgICAgaWYgYXJncy5j
YV9jZXJ0czoKKyAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoYXJn
cy5jYV9jZXJ0cykKKyAgICBpZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9u
LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgIGlmIGFyZ3MubWF4X2RhdGE6CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEgPSBhcmdzLm1heF9kYXRhCisgICAgaWYgYXJncy5t
YXhfc3RyZWFtX2RhdGE6CisgICAgICAgIGNvbmZpZ3VyYXRpb24ubWF4X3N0cmVhbV9kYXRhID0g
YXJncy5tYXhfc3RyZWFtX2RhdGEKKyAgICBpZiBhcmdzLnF1aWNfbG9nOgorICAgICAgICBjb25m
aWd1cmF0aW9uLnF1aWNfbG9nZ2VyID0gUXVpY0xvZ2dlcigpCisgICAgaWYgYXJncy5zZWNyZXRz
X2xvZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlID0gb3Blbihhcmdz
LnNlY3JldHNfbG9nLCAiYSIpCisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vzc2lvbl90aWNrZXQsICJyYiIpIGFz
IGZwOgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQgPSBwaWNr
bGUubG9hZChmcCkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAg
ICAgcGFzcworCisgICAgaWYgdXZsb29wIGlzIG5vdCBOb25lOgorICAgICAgICB1dmxvb3AuaW5z
dGFsbCgpCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIHRyeToKKyAg
ICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCisgICAgICAgICAgICBydW4oCisgICAgICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHVy
bHM9YXJncy51cmwsCisgICAgICAgICAgICAgICAgZGF0YT1hcmdzLmRhdGEsCisgICAgICAgICAg
ICAgICAgaW5jbHVkZT1hcmdzLmluY2x1ZGUsCisgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1h
cmdzLm91dHB1dF9kaXIsCisgICAgICAgICAgICAgICAgbG9jYWxfcG9ydD1hcmdzLmxvY2FsX3Bv
cnQsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBj
b25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBv
cGVuKGFyZ3MucXVpY19sb2csICJ3IikgYXMgbG9nZ2VyX2ZwOgorICAgICAgICAgICAgICAgIGpz
b24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBp
bmRlbnQ9NCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYx
NWIwNGIwM2MxNTQzZjM2MGQwNDY4ODY5ODM1MzZjZTI1ZWFhN2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2VydmVyLnB5CkBAIC0wLDAgKzEsNDg0IEBA
CitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaW1wb3J0bGliCitpbXBv
cnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHRpbWUKK2Zyb20gY29s
bGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBmb3JtYXRkYXRl
Citmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIERlcXVlLCBEaWN0LCBMaXN0LCBPcHRpb25h
bCwgVW5pb24sIGNhc3QKKworaW1wb3J0IHdzcHJvdG8KK2ltcG9ydCB3c3Byb3RvLmV2ZW50cwor
CitpbXBvcnQgYWlvcXVpYworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IFF1aWNDb25uZWN0
aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBf
QUxQTiwgSDBDb25uZWN0aW9uCitmcm9tIGFpb3F1aWMuaDMuY29ubmVjdGlvbiBpbXBvcnQgSDNf
QUxQTiwgSDNDb25uZWN0aW9uCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVj
ZWl2ZWQsIEgzRXZlbnQsIEhlYWRlcnNSZWNlaXZlZAorZnJvbSBhaW9xdWljLmgzLmV4Y2VwdGlv
bnMgaW1wb3J0IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKK2Zyb20gYWlvcXVpYy5xdWljLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMucXVpYy5ldmVu
dHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNlaXZlZCwgUHJvdG9jb2xOZWdvdGlhdGVkLCBRdWlj
RXZlbnQKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlciwgUXVpY0xv
Z2dlclRyYWNlCitmcm9tIGFpb3F1aWMudGxzIGltcG9ydCBTZXNzaW9uVGlja2V0CisKK3RyeToK
KyAgICBpbXBvcnQgdXZsb29wCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdXZsb29wID0gTm9u
ZQorCitBc2dpQXBwbGljYXRpb24gPSBDYWxsYWJsZQorSHR0cENvbm5lY3Rpb24gPSBVbmlvbltI
MENvbm5lY3Rpb24sIEgzQ29ubmVjdGlvbl0KKworU0VSVkVSX05BTUUgPSAiYWlvcXVpYy8iICsg
YWlvcXVpYy5fX3ZlcnNpb25fXworCisKK2NsYXNzIEh0dHBSZXF1ZXN0SGFuZGxlcjoKKyAgICBk
ZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGF1dGhvcml0
eTogYnl0ZXMsCisgICAgICAgIGNvbm5lY3Rpb246IEh0dHBDb25uZWN0aW9uLAorICAgICAgICBw
cm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAgc2NvcGU6IERpY3QsCisg
ICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICAgICAgc3RyZWFtX2lkOiBpbnQsCisgICAg
ICAgIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwgTm9uZV0sCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmF1dGhvcml0eSA9IGF1dGhvcml0eQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBj
b25uZWN0aW9uCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxm
LnF1ZXVlOiBhc3luY2lvLlF1ZXVlW0RpY3RdID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAgIHNl
bGYuc2NvcGUgPSBzY29wZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAg
ICAgICBzZWxmLnRyYW5zbWl0ID0gdHJhbnNtaXQKKworICAgICAgICBpZiBzdHJlYW1fZW5kZWQ6
CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogImh0dHAucmVxdWVz
dCJ9KQorCisgICAgZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQp
IC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAidHlwZSI6ICJodHRwLnJlcXVlc3QiLAorICAgICAgICAgICAgICAg
ICAgICAiYm9keSI6IGV2ZW50LmRhdGEsCisgICAgICAgICAgICAgICAgICAgICJtb3JlX2JvZHki
OiBub3QgZXZlbnQuc3RyZWFtX2VuZGVkLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBIZWFkZXJzUmVjZWl2ZWQpIGFuZCBl
dmVudC5zdHJlYW1fZW5kZWQ6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoCisg
ICAgICAgICAgICAgICAgeyJ0eXBlIjogImh0dHAucmVxdWVzdCIsICJib2R5IjogYiIiLCAibW9y
ZV9ib2R5IjogRmFsc2V9CisgICAgICAgICAgICApCisKKyAgICBhc3luYyBkZWYgcnVuX2FzZ2ko
c2VsZiwgYXBwOiBBc2dpQXBwbGljYXRpb24pIC0+IE5vbmU6CisgICAgICAgIGF3YWl0IGFwcGxp
Y2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2VsZi5zZW5kKQorCisgICAgYXN5bmMg
ZGVmIHJlY2VpdmUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucXVl
dWUuZ2V0KCkKKworICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIG1lc3NhZ2U6IERpY3QpIC0+IE5v
bmU6CisgICAgICAgIGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5zdGFydCI6
CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsK
KyAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIHN0cihtZXNzYWdlWyJzdGF0dXMiXSku
ZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgICAgICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5l
bmNvZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiImRhdGUiLCBmb3JtYXRkYXRlKHRpbWUu
dGltZSgpLCB1c2VnbXQ9VHJ1ZSkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgICAgICArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJdXSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgZWxpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gImh0dHAucmVzcG9u
c2UuYm9keSI6CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9kYXRhKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PW1lc3NhZ2UuZ2V0KCJib2R5IiwgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPW5v
dCBtZXNzYWdlLmdldCgibW9yZV9ib2R5IiwgRmFsc2UpLAorICAgICAgICAgICAgKQorICAgICAg
ICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5wdXNoIiBhbmQgaXNpbnN0
YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbiwgSDNDb25uZWN0aW9uCisgICAgICAg
ICk6CisgICAgICAgICAgICByZXF1ZXN0X2hlYWRlcnMgPSBbCisgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5Iiwgc2VsZi5hdXRob3JpdHkpLAorICAg
ICAgICAgICAgICAgIChiIjpwYXRoIiwgbWVzc2FnZVsicGF0aCJdLmVuY29kZSgpKSwKKyAgICAg
ICAgICAgIF0gKyBbKGssIHYpIGZvciBrLCB2IGluIG1lc3NhZ2VbImhlYWRlcnMiXV0KKworICAg
ICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5jb25uZWN0aW9uLnNlbmRfcHVzaF9wcm9taXNl
KAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9
cmVxdWVzdF9oZWFkZXJzCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IE5v
QXZhaWxhYmxlUHVzaElERXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
ICAgICMgZmFrZSByZXF1ZXN0CisgICAgICAgICAgICBjYXN0KEh0dHBTZXJ2ZXJQcm90b2NvbCwg
c2VsZi5wcm90b2NvbCkuaHR0cF9ldmVudF9yZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBIZWFk
ZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9cmVxdWVzdF9oZWFkZXJz
LCBzdHJlYW1fZW5kZWQ9VHJ1ZSwgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworCitjbGFz
cyBXZWJTb2NrZXRIYW5kbGVyOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAg
ICAgICAgKiwKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisgICAgICAgIHNj
b3BlOiBEaWN0LAorICAgICAgICBzdHJlYW1faWQ6IGludCwKKyAgICAgICAgdHJhbnNtaXQ6IENh
bGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuY2xvc2VkID0g
RmFsc2UKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxm
Lmh0dHBfZXZlbnRfcXVldWU6IERlcXVlW0RhdGFSZWNlaXZlZF0gPSBkZXF1ZSgpCisgICAgICAg
IHNlbGYucXVldWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAg
ICAgc2VsZi5zY29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lk
CisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorICAgICAgICBzZWxmLndlYnNvY2tl
dDogT3B0aW9uYWxbd3Nwcm90by5Db25uZWN0aW9uXSA9IE5vbmUKKworICAgIGRlZiBodHRwX2V2
ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBIM0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBp
c2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CisgICAg
ICAgICAgICBpZiBzZWxmLndlYnNvY2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBz
ZWxmLndlYnNvY2tldC5yZWNlaXZlX2RhdGEoZXZlbnQuZGF0YSkKKworICAgICAgICAgICAgICAg
IGZvciB3c19ldmVudCBpbiBzZWxmLndlYnNvY2tldC5ldmVudHMoKToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi53ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQod3NfZXZlbnQpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICMgZGVsYXkgZXZlbnQgcHJvY2Vzc2luZyB1bnRpbCB3
ZSBnZXQgYHdlYnNvY2tldC5hY2NlcHRgCisgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSBBU0dJ
IGFwcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5odHRwX2V2ZW50X3F1ZXVlLmFwcGVu
ZChldmVudCkKKworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6
IHdzcHJvdG8uZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2
ZW50LCB3c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVl
LnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5yZWNlaXZlIiwgInRleHQiOiBldmVudC5k
YXRhfSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCB3c3Byb3RvLmV2ZW50cy5NZXNz
YWdlKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAid2Vic29j
a2V0LnJlY2VpdmUiLCAiYnl0ZXMiOiBldmVudC5kYXRhfSkKKyAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGV2ZW50LCB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24pOgorICAgICAgICAgICAg
c2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQuZGlzY29ubmVjdCIsICJj
b2RlIjogZXZlbnQuY29kZX0pCisKKyAgICBhc3luYyBkZWYgcnVuX2FzZ2koc2VsZiwgYXBwOiBB
c2dpQXBwbGljYXRpb24pIC0+IE5vbmU6CisgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7
InR5cGUiOiAid2Vic29ja2V0LmNvbm5lY3QifSkKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBhd2FpdCBhcHBsaWNhdGlvbihzZWxmLnNjb3BlLCBzZWxmLnJlY2VpdmUsIHNlbGYuc2VuZCkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAg
ICAgICAgICAgICBhd2FpdCBzZWxmLnNlbmQoeyJ0eXBlIjogIndlYnNvY2tldC5jbG9zZSIsICJj
b2RlIjogMTAwMH0pCisKKyAgICBhc3luYyBkZWYgcmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAg
ICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQo
c2VsZiwgbWVzc2FnZTogRGljdCkgLT4gTm9uZToKKyAgICAgICAgZGF0YSA9IGIiIgorICAgICAg
ICBlbmRfc3RyZWFtID0gRmFsc2UKKyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJz
b2NrZXQuYWNjZXB0IjoKKyAgICAgICAgICAgIHN1YnByb3RvY29sID0gbWVzc2FnZS5nZXQoInN1
YnByb3RvY29sIikKKworICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXQgPSB3c3Byb3RvLkNvbm5l
Y3Rpb24od3Nwcm90by5Db25uZWN0aW9uVHlwZS5TRVJWRVIpCisKKyAgICAgICAgICAgIGhlYWRl
cnMgPSBbCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAg
ICAgICAgKGIic2VydmVyIiwgU0VSVkVSX05BTUUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAg
IChiImRhdGUiLCBmb3JtYXRkYXRlKHRpbWUudGltZSgpLCB1c2VnbXQ9VHJ1ZSkuZW5jb2RlKCkp
LAorICAgICAgICAgICAgXQorICAgICAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKGIic2VjLXdlYnNvY2tldC1wcm90b2Nv
bCIsIHN1YnByb3RvY29sLmVuY29kZSgpKSkKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5z
ZW5kX2hlYWRlcnMoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBoZWFkZXJzPWhlYWRlcnMpCisK
KyAgICAgICAgICAgICMgY29uc3VtZSBiYWNrbG9nCisgICAgICAgICAgICB3aGlsZSBzZWxmLmh0
dHBfZXZlbnRfcXVldWU6CisgICAgICAgICAgICAgICAgc2VsZi5odHRwX2V2ZW50X3JlY2VpdmVk
KHNlbGYuaHR0cF9ldmVudF9xdWV1ZS5wb3BsZWZ0KCkpCisKKyAgICAgICAgZWxpZiBtZXNzYWdl
WyJ0eXBlIl0gPT0gIndlYnNvY2tldC5jbG9zZSI6CisgICAgICAgICAgICBpZiBzZWxmLndlYnNv
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZWJzb2NrZXQu
c2VuZCgKKyAgICAgICAgICAgICAgICAgICAgd3Nwcm90by5ldmVudHMuQ2xvc2VDb25uZWN0aW9u
KGNvZGU9bWVzc2FnZVsiY29kZSJdKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRfaGVhZGVycygKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBoZWFkZXJzPVsoYiI6c3Rh
dHVzIiwgYiI0MDMiKV0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbmRfc3RyZWFt
ID0gVHJ1ZQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAid2Vic29ja2V0LnNlbmQi
OgorICAgICAgICAgICAgaWYgbWVzc2FnZS5nZXQoInRleHQiKSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBkYXRhID0gc2VsZi53ZWJzb2NrZXQuc2VuZCgKKyAgICAgICAgICAgICAgICAg
ICAgd3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlWyJ0ZXh0Il0pCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxpZiBtZXNzYWdlLmdldCgiYnl0ZXMiKSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZWJzb2NrZXQuc2VuZCgKKyAg
ICAgICAgICAgICAgICAgICAgd3Nwcm90by5ldmVudHMuTWVzc2FnZShkYXRhPW1lc3NhZ2VbImJ5
dGVzIl0pCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAg
ICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
ZWxmLnN0cmVhbV9pZCwgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPWVuZF9zdHJlYW0KKyAgICAgICAg
ICAgICkKKyAgICAgICAgaWYgZW5kX3N0cmVhbToKKyAgICAgICAgICAgIHNlbGYuY2xvc2VkID0g
VHJ1ZQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworCitIYW5kbGVyID0gVW5pb25bSHR0cFJl
cXVlc3RIYW5kbGVyLCBXZWJTb2NrZXRIYW5kbGVyXQorCisKK2NsYXNzIEh0dHBTZXJ2ZXJQcm90
b2NvbChRdWljQ29ubmVjdGlvblByb3RvY29sKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKSAtPiBOb25lOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAq
Kmt3YXJncykKKyAgICAgICAgc2VsZi5faGFuZGxlcnM6IERpY3RbaW50LCBIYW5kbGVyXSA9IHt9
CisgICAgICAgIHNlbGYuX2h0dHA6IE9wdGlvbmFsW0h0dHBDb25uZWN0aW9uXSA9IE5vbmUKKwor
ICAgIGRlZiBodHRwX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBIM0V2ZW50KSAtPiBOb25l
OgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBIZWFkZXJzUmVjZWl2ZWQpIGFuZCBldmVu
dC5zdHJlYW1faWQgbm90IGluIHNlbGYuX2hhbmRsZXJzOgorICAgICAgICAgICAgYXV0aG9yaXR5
ID0gTm9uZQorICAgICAgICAgICAgaGVhZGVycyA9IFtdCisgICAgICAgICAgICBodHRwX3ZlcnNp
b24gPSAiMC45IiBpZiBpc2luc3RhbmNlKHNlbGYuX2h0dHAsIEgwQ29ubmVjdGlvbikgZWxzZSAi
MyIKKyAgICAgICAgICAgIHJhd19wYXRoID0gYiIiCisgICAgICAgICAgICBtZXRob2QgPSAiIgor
ICAgICAgICAgICAgcHJvdG9jb2wgPSBOb25lCisgICAgICAgICAgICBmb3IgaGVhZGVyLCB2YWx1
ZSBpbiBldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgIGlmIGhlYWRlciA9PSBiIjphdXRo
b3JpdHkiOgorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHkgPSB2YWx1ZQorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJob3N0IiwgdmFsdWUpKQorICAgICAgICAgICAg
ICAgIGVsaWYgaGVhZGVyID09IGIiOm1ldGhvZCI6CisgICAgICAgICAgICAgICAgICAgIG1ldGhv
ZCA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgZWxpZiBoZWFkZXIgPT0gYiI6cGF0
aCI6CisgICAgICAgICAgICAgICAgICAgIHJhd19wYXRoID0gdmFsdWUKKyAgICAgICAgICAgICAg
ICBlbGlmIGhlYWRlciA9PSBiIjpwcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sID0gdmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciBhbmQgbm90
IGhlYWRlci5zdGFydHN3aXRoKGIiOiIpOgorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLmFw
cGVuZCgoaGVhZGVyLCB2YWx1ZSkpCisKKyAgICAgICAgICAgIGlmIGIiPyIgaW4gcmF3X3BhdGg6
CisgICAgICAgICAgICAgICAgcGF0aF9ieXRlcywgcXVlcnlfc3RyaW5nID0gcmF3X3BhdGguc3Bs
aXQoYiI/IiwgbWF4c3BsaXQ9MSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
cGF0aF9ieXRlcywgcXVlcnlfc3RyaW5nID0gcmF3X3BhdGgsIGIiIgorICAgICAgICAgICAgcGF0
aCA9IHBhdGhfYnl0ZXMuZGVjb2RlKCkKKworICAgICAgICAgICAgIyBGSVhNRTogYWRkIGEgcHVi
bGljIEFQSSB0byByZXRyaWV2ZSBwZWVyIGFkZHJlc3MKKyAgICAgICAgICAgIGNsaWVudF9hZGRy
ID0gc2VsZi5faHR0cC5fcXVpYy5fbmV0d29ya19wYXRoc1swXS5hZGRyCisgICAgICAgICAgICBj
bGllbnQgPSAoY2xpZW50X2FkZHJbMF0sIGNsaWVudF9hZGRyWzFdKQorCisgICAgICAgICAgICBo
YW5kbGVyOiBIYW5kbGVyCisgICAgICAgICAgICBzY29wZTogRGljdAorICAgICAgICAgICAgaWYg
bWV0aG9kID09ICJDT05ORUNUIiBhbmQgcHJvdG9jb2wgPT0gIndlYnNvY2tldCI6CisgICAgICAg
ICAgICAgICAgc3VicHJvdG9jb2xzOiBMaXN0W3N0cl0gPSBbXQorICAgICAgICAgICAgICAgIGZv
ciBoZWFkZXIsIHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGlm
IGhlYWRlciA9PSBiInNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc3VicHJvdG9jb2xzID0gW3guc3RyaXAoKSBmb3IgeCBpbiB2YWx1ZS5kZWNvZGUoKS5z
cGxpdCgiLCIpXQorICAgICAgICAgICAgICAgIHNjb3BlID0geworICAgICAgICAgICAgICAgICAg
ICAiY2xpZW50IjogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGhlYWRl
cnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNpb24iOiBodHRwX3ZlcnNpb24sCisg
ICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2QsCisgICAgICAgICAgICAgICAgICAg
ICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X3N0cmluZyI6IHF1ZXJ5
X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19wYXRoIjogcmF3X3BhdGgsCisgICAg
ICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgInNj
aGVtZSI6ICJ3c3MiLAorICAgICAgICAgICAgICAgICAgICAic3VicHJvdG9jb2xzIjogc3VicHJv
dG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ3ZWJzb2NrZXQiLAorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gV2ViU29ja2V0SGFuZGxlcigK
KyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1zZWxmLl9odHRwLAorICAgICAgICAgICAg
ICAgICAgICBzY29wZT1zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPWV2ZW50
LnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXQ9c2VsZi50cmFuc21pdCwK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4
dGVuc2lvbnM6IERpY3Rbc3RyLCBEaWN0XSA9IHt9CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZShzZWxmLl9odHRwLCBIM0Nvbm5lY3Rpb24pOgorICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb25zWyJodHRwLnJlc3BvbnNlLnB1c2giXSA9IHt9CisgICAgICAgICAgICAgICAgc2NvcGUg
PSB7CisgICAgICAgICAgICAgICAgICAgICJjbGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAg
ICAgICAgICJleHRlbnNpb25zIjogZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgImhl
YWRlcnMiOiBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAiaHR0cF92ZXJzaW9uIjogaHR0
cF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAibWV0aG9kIjogbWV0aG9kLAorICAgICAg
ICAgICAgICAgICAgICAicGF0aCI6IHBhdGgsCisgICAgICAgICAgICAgICAgICAgICJxdWVyeV9z
dHJpbmciOiBxdWVyeV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICJyYXdfcGF0aCI6IHJh
d19wYXRoLAorICAgICAgICAgICAgICAgICAgICAicm9vdF9wYXRoIjogIiIsCisgICAgICAgICAg
ICAgICAgICAgICJzY2hlbWUiOiAiaHR0cHMiLAorICAgICAgICAgICAgICAgICAgICAidHlwZSI6
ICJodHRwIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaGFuZGxlciA9IEh0
dHBSZXF1ZXN0SGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5PWF1dGhvcml0
eSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1zZWxmLl9odHRwLAorICAgICAgICAg
ICAgICAgICAgICBwcm90b2NvbD1zZWxmLAorICAgICAgICAgICAgICAgICAgICBzY29wZT1zY29w
ZSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPWV2ZW50LnN0cmVhbV9lbmRlZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgdHJhbnNtaXQ9c2VsZi50cmFuc21pdCwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBzZWxmLl9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdID0gaGFuZGxlcgorICAg
ICAgICAgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKGhhbmRsZXIucnVuX2FzZ2koYXBwbGljYXRp
b24pKQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoZXZlbnQsIChEYXRh
UmVjZWl2ZWQsIEhlYWRlcnNSZWNlaXZlZCkpCisgICAgICAgICAgICBhbmQgZXZlbnQuc3RyZWFt
X2lkIGluIHNlbGYuX2hhbmRsZXJzCisgICAgICAgICk6CisgICAgICAgICAgICBoYW5kbGVyID0g
c2VsZi5faGFuZGxlcnNbZXZlbnQuc3RyZWFtX2lkXQorICAgICAgICAgICAgaGFuZGxlci5odHRw
X2V2ZW50X3JlY2VpdmVkKGV2ZW50KQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2ZWQoc2Vs
ZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVu
dCwgUHJvdG9jb2xOZWdvdGlhdGVkKToKKyAgICAgICAgICAgIGlmIGV2ZW50LmFscG5fcHJvdG9j
b2wuc3RhcnRzd2l0aCgiaDMtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgzQ29u
bmVjdGlvbihzZWxmLl9xdWljKQorICAgICAgICAgICAgZWxpZiBldmVudC5hbHBuX3Byb3RvY29s
LnN0YXJ0c3dpdGgoImhxLSIpOgorICAgICAgICAgICAgICAgIHNlbGYuX2h0dHAgPSBIMENvbm5l
Y3Rpb24oc2VsZi5fcXVpYykKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhZ3Jh
bUZyYW1lUmVjZWl2ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuZGF0YSA9PSBiInF1YWNrIjoK
KyAgICAgICAgICAgICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjay1h
Y2siKQorCisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBIVFRQIGxheWVyCisgICAgICAg
IGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaHR0cF9ldmVudCBp
biBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5o
dHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKworY2xhc3MgU2Vzc2lvblRpY2tldFN0
b3JlOgorICAgICIiIgorICAgIFNpbXBsZSBpbi1tZW1vcnkgc3RvcmUgZm9yIHNlc3Npb24gdGlj
a2V0cy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLnRpY2tldHM6IERpY3RbYnl0ZXMsIFNlc3Npb25UaWNrZXRdID0ge30KKworICAgIGRl
ZiBhZGQoc2VsZiwgdGlja2V0OiBTZXNzaW9uVGlja2V0KSAtPiBOb25lOgorICAgICAgICBzZWxm
LnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFi
ZWw6IGJ5dGVzKSAtPiBPcHRpb25hbFtTZXNzaW9uVGlja2V0XToKKyAgICAgICAgcmV0dXJuIHNl
bGYudGlja2V0cy5wb3AobGFiZWwsIE5vbmUpCisKKworY2xhc3MgUXVpY0xvZ2dlckN1c3RvbShR
dWljTG9nZ2VyKToKKyAgICAiIiIKKyAgICBDdXN0b20gUVVJQyBsb2dnZXIgd2hpY2ggd3JpdGVz
IG9uZSB0cmFjZSBwZXIgZmlsZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
YXRoOiBzdHIpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgpOgor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUVVJQyBsb2cgb3V0cHV0IGRpcmVjdG9yeSAn
JXMnIGRvZXMgbm90IGV4aXN0IiAlIHBhdGgpCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAg
ICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICBkZWYgZW5kX3RyYWNlKHNlbGYsIHRyYWNl
OiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAgIHRyYWNlX2RpY3QgPSB0cmFjZS50
b19kaWN0KCkKKyAgICAgICAgdHJhY2VfcGF0aCA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAg
IHNlbGYucGF0aCwgdHJhY2VfZGljdFsiY29tbW9uX2ZpZWxkcyJdWyJPRENJRCJdICsgIi5xbG9n
IgorICAgICAgICApCisgICAgICAgIHdpdGggb3Blbih0cmFjZV9wYXRoLCAidyIpIGFzIGxvZ2dl
cl9mcDoKKyAgICAgICAgICAgIGpzb24uZHVtcCh7InFsb2dfdmVyc2lvbiI6ICJkcmFmdC0wMSIs
ICJ0cmFjZXMiOiBbdHJhY2VfZGljdF19LCBsb2dnZXJfZnApCisgICAgICAgIHNlbGYuX3RyYWNl
cy5yZW1vdmUodHJhY2UpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBwYXJz
ZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iUVVJQyBzZXJ2ZXIiKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJhcHAiLAorICAgICAgICB0eXBlPXN0
ciwKKyAgICAgICAgbmFyZ3M9Ij8iLAorICAgICAgICBkZWZhdWx0PSJkZW1vOmFwcCIsCisgICAg
ICAgIGhlbHA9InRoZSBBU0dJIGFwcGxpY2F0aW9uIGFzIDxtb2R1bGU+OjxhdHRyaWJ1dGU+IiwK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1jIiwKKyAgICAgICAg
Ii0tY2VydGlmaWNhdGUiLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1
ZSwKKyAgICAgICAgaGVscD0ibG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20gdGhlIHNwZWNp
ZmllZCBmaWxlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0t
aG9zdCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBkZWZhdWx0PSI6OiIsCisgICAgICAg
IGhlbHA9Imxpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgKGRlZmF1bHRzIHRvIDo6KSIs
CisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLXBvcnQiLAorICAg
ICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMzLAorICAgICAgICBoZWxwPSJsaXN0
ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0byA0NDMzKSIsCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItayIsCisgICAgICAgICItLXByaXZhdGUt
a2V5IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUsCisgICAgICAg
IGhlbHA9ImxvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIs
CisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItbCIsCisgICAgICAg
ICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGhlbHA9ImxvZyBz
ZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVzaGFyayIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItcSIsICItLXF1aWMtbG9nIiwgdHlwZT1zdHIs
IGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQiCisgICAgKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItciIsCisgICAgICAgICItLXN0YXRl
bGVzcy1yZXRyeSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9
InNlbmQgYSBzdGF0ZWxlc3MgcmV0cnkgZm9yIG5ldyBjb25uZWN0aW9ucyIsCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisg
ICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGxvZ2dpbmcuYmFzaWNDb25maWco
CisgICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShsZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1l
c3NhZ2UpcyIsCisgICAgICAgIGxldmVsPWxvZ2dpbmcuREVCVUcgaWYgYXJncy52ZXJib3NlIGVs
c2UgbG9nZ2luZy5JTkZPLAorICAgICkKKworICAgICMgaW1wb3J0IEFTR0kgYXBwbGljYXRpb24K
KyAgICBtb2R1bGVfc3RyLCBhdHRyX3N0ciA9IGFyZ3MuYXBwLnNwbGl0KCI6IiwgbWF4c3BsaXQ9
MSkKKyAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2R1bGVfc3RyKQorICAg
IGFwcGxpY2F0aW9uID0gZ2V0YXR0cihtb2R1bGUsIGF0dHJfc3RyKQorCisgICAgIyBjcmVhdGUg
UVVJQyBsb2dnZXIKKyAgICBpZiBhcmdzLnF1aWNfbG9nOgorICAgICAgICBxdWljX2xvZ2dlciA9
IFF1aWNMb2dnZXJDdXN0b20oYXJncy5xdWljX2xvZykKKyAgICBlbHNlOgorICAgICAgICBxdWlj
X2xvZ2dlciA9IE5vbmUKKworICAgICMgb3BlbiBTU0wgbG9nIGZpbGUKKyAgICBpZiBhcmdzLnNl
Y3JldHNfbG9nOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gb3BlbihhcmdzLnNlY3JldHNf
bG9nLCAiYSIpCisgICAgZWxzZToKKyAgICAgICAgc2VjcmV0c19sb2dfZmlsZSA9IE5vbmUKKwor
ICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgYWxwbl9wcm90
b2NvbHM9SDNfQUxQTiArIEgwX0FMUE4gKyBbInNpZHVjayJdLAorICAgICAgICBpc19jbGllbnQ9
RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1NTM2LAorICAgICAgICBx
dWljX2xvZ2dlcj1xdWljX2xvZ2dlciwKKyAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRz
X2xvZ19maWxlLAorICAgICkKKworICAgICMgbG9hZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQor
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3Mu
cHJpdmF0ZV9rZXkpCisKKyAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgaWYgdXZsb29wIGlzIG5vdCBOb25lOgorICAgICAgICB1dmxvb3AuaW5zdGFsbCgpCisg
ICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2Nv
bXBsZXRlKAorICAgICAgICBzZXJ2ZSgKKyAgICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAg
ICAgIGFyZ3MucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwU2VydmVyUHJvdG9jb2wsCisgICAgICAg
ICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAg
ICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICAgICBz
dGF0ZWxlc3NfcmV0cnk9YXJncy5zdGF0ZWxlc3NfcmV0cnksCisgICAgICAgICkKKyAgICApCisg
ICAgdHJ5OgorICAgICAgICBsb29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJ
bnRlcnJ1cHQ6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odHRweF9jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAwMWUzODRlMzU0YjIyNTI0M2Q0ZDYwYjc1OTg1NWQ1MDJjMjk5OWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50LnB5CkBA
IC0wLDAgKzEsMjEzIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQg
anNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0
aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IERl
cXVlLCBEaWN0LCBjYXN0Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworZnJv
bSBodHRweCBpbXBvcnQgQXN5bmNDbGllbnQKK2Zyb20gaHR0cHguY29uZmlnIGltcG9ydCBUaW1l
b3V0Citmcm9tIGh0dHB4LmRpc3BhdGNoLmJhc2UgaW1wb3J0IEFzeW5jRGlzcGF0Y2hlcgorZnJv
bSBodHRweC5tb2RlbHMgaW1wb3J0IFJlcXVlc3QsIFJlc3BvbnNlCisKK2Zyb20gYWlvcXVpYy5h
c3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9xdWljLmFzeW5jaW8ucHJvdG9j
b2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0
aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMg
aW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1
aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9x
dWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZlbnQKK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dl
ciBpbXBvcnQgUXVpY0xvZ2dlcgorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY2xpZW50
IikKKworCitjbGFzcyBIM0Rpc3BhdGNoZXIoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgQXN5bmNE
aXNwYXRjaGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAg
ICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5f
aHR0cCA9IEgzQ29ubmVjdGlvbihzZWxmLl9xdWljKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2
ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYuX3JlcXVl
c3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVbSDNFdmVudF1dXSA9IHt9
CisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxmLCByZXF1ZXN0OiBSZXF1ZXN0LCB0aW1lb3V0OiBU
aW1lb3V0ID0gTm9uZSkgLT4gUmVzcG9uc2U6CisgICAgICAgIHN0cmVhbV9pZCA9IHNlbGYuX3F1
aWMuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisKKyAgICAgICAgIyBwcmVwYXJlIHJl
cXVlc3QKKyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIHJlcXVlc3QubWV0aG9kLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgcmVxdWVzdC51cmwuc2NoZW1lLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAg
ICAoYiI6YXV0aG9yaXR5Iiwgc3RyKHJlcXVlc3QudXJsLmF1dGhvcml0eSkuZW5jb2RlKCkpLAor
ICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgcmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgp
KSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgICsgWworICAgICAgICAgICAgICAgIChrLmVu
Y29kZSgpLCB2LmVuY29kZSgpKQorICAgICAgICAgICAgICAgIGZvciAoaywgdikgaW4gcmVxdWVz
dC5oZWFkZXJzLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBrIG5vdCBpbiAoImNvbm5lY3Rp
b24iLCAiaG9zdCIpCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2h0
dHAuc2VuZF9kYXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9cmVxdWVzdC5yZWFkKCksIGVu
ZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHRyYW5zbWl0IHJlcXVlc3QKKyAgICAgICAgd2Fp
dGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdF9l
dmVudHNbc3RyZWFtX2lkXSA9IGRlcXVlKCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdF93YWl0ZXJb
c3RyZWFtX2lkXSA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICAj
IHByb2Nlc3MgcmVzcG9uc2UKKyAgICAgICAgZXZlbnRzOiBEZXF1ZVtIM0V2ZW50XSA9IGF3YWl0
IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKyAgICAgICAgY29udGVudCA9IGIiIgorICAgICAgICBo
ZWFkZXJzID0gW10KKyAgICAgICAgc3RhdHVzX2NvZGUgPSBOb25lCisgICAgICAgIGZvciBldmVu
dCBpbiBldmVudHM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBIZWFkZXJzUmVj
ZWl2ZWQpOgorICAgICAgICAgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGluIGV2ZW50LmhlYWRl
cnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGhlYWRlciA9PSBiIjpzdGF0dXMiOgorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGUgPSBpbnQodmFsdWUuZGVjb2RlKCkpCisgICAg
ICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVyWzA6MV0gIT0gYiI6IjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKChoZWFkZXIuZGVjb2RlKCksIHZhbHVlLmRlY29kZSgp
KSkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgICAgICAgICBjb250ZW50ICs9IGV2ZW50LmRhdGEKKworICAgICAgICByZXR1cm4gUmVz
cG9uc2UoCisgICAgICAgICAgICBzdGF0dXNfY29kZT1zdGF0dXNfY29kZSwKKyAgICAgICAgICAg
IGh0dHBfdmVyc2lvbj0iSFRUUC8zIiwKKyAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKKyAg
ICAgICAgICAgIGNvbnRlbnQ9Y29udGVudCwKKyAgICAgICAgICAgIHJlcXVlc3Q9cmVxdWVzdCwK
KyAgICAgICAgKQorCisgICAgZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgz
RXZlbnQpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCAoSGVhZGVyc1JlY2VpdmVkLCBE
YXRhUmVjZWl2ZWQpKToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0cmVhbV9pZAor
ICAgICAgICAgICAgaWYgc3RyZWFtX2lkIGluIHNlbGYuX3JlcXVlc3RfZXZlbnRzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRzW2V2ZW50LnN0cmVhbV9pZF0uYXBwZW5kKGV2
ZW50KQorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF93YWl0ZXIgPSBzZWxmLl9yZXF1ZXN0X3dhaXRlci5wb3Aoc3RyZWFt
X2lkKQorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3dhaXRlci5zZXRfcmVzdWx0KHNlbGYu
X3JlcXVlc3RfZXZlbnRzLnBvcChzdHJlYW1faWQpKQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVj
ZWl2ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCk6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRv
IHRoZSBIVFRQIGxheWVyCisgICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBmb3IgaHR0cF9ldmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6
CisgICAgICAgICAgICAgICAgc2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisK
KworZGVmIHNhdmVfc2Vzc2lvbl90aWNrZXQodGlja2V0KToKKyAgICAiIiIKKyAgICBDYWxsYmFj
ayB3aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0
aWNrZXQKKyAgICBpcyByZWNlaXZlZC4KKyAgICAiIiIKKyAgICBsb2dnZXIuaW5mbygiTmV3IHNl
c3Npb24gdGlja2V0IHJlY2VpdmVkIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgorICAg
ICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgIndiIikgYXMgZnA6CisgICAgICAg
ICAgICBwaWNrbGUuZHVtcCh0aWNrZXQsIGZwKQorCisKK2FzeW5jIGRlZiBydW4oY29uZmlndXJh
dGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sIHVybDogc3RyLCBkYXRhOiBzdHIpIC0+IE5vbmU6Cisg
ICAgIyBwYXJzZSBVUkwKKyAgICBwYXJzZWQgPSB1cmxwYXJzZSh1cmwpCisgICAgYXNzZXJ0IHBh
cnNlZC5zY2hlbWUgPT0gImh0dHBzIiwgIk9ubHkgaHR0cHM6Ly8gVVJMcyBhcmUgc3VwcG9ydGVk
LiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoKKyAgICAgICAgaG9zdCwgcG9ydF9zdHIg
PSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGludChwb3J0X3N0cikK
KyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2VkLm5ldGxvYworICAgICAgICBwb3J0ID0g
NDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3QsCisgICAgICAgIHBv
cnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgY3JlYXRl
X3Byb3RvY29sPUgzRGlzcGF0Y2hlciwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1z
YXZlX3Nlc3Npb25fdGlja2V0LAorICAgICkgYXMgZGlzcGF0Y2g6CisgICAgICAgIGNsaWVudCA9
IEFzeW5jQ2xpZW50KGRpc3BhdGNoPWNhc3QoQXN5bmNEaXNwYXRjaGVyLCBkaXNwYXRjaCkpCisK
KyAgICAgICAgIyBwZXJmb3JtIHJlcXVlc3QKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQor
ICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2Fp
dCBjbGllbnQucG9zdCgKKyAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgZGF0
YT1kYXRhLmVuY29kZSgpLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9eyJjb250ZW50LXR5cGUi
OiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sCisgICAgICAgICAgICApCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQodXJs
KQorCisgICAgICAgIGVsYXBzZWQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgIyBw
cmludCBzcGVlZAorICAgICAgICBvY3RldHMgPSBsZW4ocmVzcG9uc2UuY29udGVudCkKKyAgICAg
ICAgbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAiUmVjZWl2ZWQgJWQgYnl0ZXMgaW4gJS4xZiBz
ICglLjNmIE1icHMpIgorICAgICAgICAgICAgJSAob2N0ZXRzLCBlbGFwc2VkLCBvY3RldHMgKiA4
IC8gZWxhcHNlZCAvIDEwMDAwMDApCisgICAgICAgICkKKworICAgICAgICAjIHByaW50IHJlc3Bv
bnNlCisgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGluIHJlc3BvbnNlLmhlYWRlcnMuaXRlbXMo
KToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoaGVhZGVyICsgIjogIiArIHZhbHVlICsg
IlxyXG4iKQorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJcclxuIikKKyAgICAgICAgc3lzLnN0
ZG91dC5idWZmZXIud3JpdGUocmVzcG9uc2UuY29udGVudCkKKyAgICAgICAgc3lzLnN0ZG91dC5i
dWZmZXIuZmx1c2goKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgcGFyc2Vy
ID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBjbGllbnQiKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInVybCIsIHR5cGU9c3RyLCBoZWxwPSJ0aGUgVVJMIHRv
IHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi1kIiwgIi0tZGF0YSIsIHR5cGU9c3RyLCBoZWxwPSJzZW5kIHRoZSBzcGVjaWZpZWQgZGF0
YSBpbiBhIFBPU1QgcmVxdWVzdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRz
IHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBl
PXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGgg
V2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1z
IiwKKyAgICAgICAgIi0tc2Vzc2lvbi10aWNrZXQiLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAg
ICAgaGVscD0icmVhZCBhbmQgd3JpdGUgc2Vzc2lvbiB0aWNrZXQgZnJvbSB0aGUgc3BlY2lmaWVk
IGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXYiLCAi
LS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2
ZXJib3NpdHkiCisgICAgKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAg
IGxvZ2dpbmcuYmFzaWNDb25maWcoCisgICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShsZXZl
bG5hbWUpcyAlKG5hbWUpcyAlKG1lc3NhZ2UpcyIsCisgICAgICAgIGxldmVsPWxvZ2dpbmcuREVC
VUcgaWYgYXJncy52ZXJib3NlIGVsc2UgbG9nZ2luZy5JTkZPLAorICAgICkKKworICAgICMgcHJl
cGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlLCBhbHBuX3Byb3RvY29scz1IM19BTFBOKQorICAgIGlmIGFyZ3MucXVp
Y19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkK
KyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNf
bG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Np
b25fdGlja2V0OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNz
aW9uX3RpY2tldCwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXNzaW9uX3RpY2tldCA9IHBpY2tsZS5sb2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZv
dW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZl
bnRfbG9vcCgpCisgICAgdHJ5OgorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAg
ICAgICAgICAgIHJ1bihjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIHVybD1hcmdzLnVybCwg
ZGF0YT1hcmdzLmRhdGEpCisgICAgICAgICkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBjb25m
aWd1cmF0aW9uLnF1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVu
KGFyZ3MucXVpY19sb2csICJ3IikgYXMgbG9nZ2VyX2ZwOgorICAgICAgICAgICAgICAgIGpzb24u
ZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBpbmRl
bnQ9NCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZhZDIwYjY2YjRiNzUx
M2VjZWE2YmEzM2QzNzRhNDk1ZTRlNTJhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9pbnRlcm9wLnB5CkBAIC0wLDAgKzEsNTMyIEBACisjCisjICEhISBXQVJOSU5H
ICEhIQorIworIyBUaGlzIGV4YW1wbGUgdXNlcyBzb21lIHByaXZhdGUgQVBJcy4KKyMKKworaW1w
b3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgc3NsCitpbXBvcnQgdGltZQorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNs
YXNzLCBmaWVsZAorZnJvbSBlbnVtIGltcG9ydCBGbGFnCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0
aW9uYWwsIGNhc3QKKworaW1wb3J0IHJlcXVlc3RzCitpbXBvcnQgdXJsbGliMworZnJvbSBodHRw
M19jbGllbnQgaW1wb3J0IEh0dHBDbGllbnQKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0
IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBOCitmcm9t
IGFpb3F1aWMuaDMuY29ubmVjdGlvbiBpbXBvcnQgSDNfQUxQTiwgSDNDb25uZWN0aW9uCitmcm9t
IGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNlaXZlZCwg
UHVzaFByb21pc2VSZWNlaXZlZAorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBv
cnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVp
Y0xvZ2dlcgorCisKK2NsYXNzIFJlc3VsdChGbGFnKToKKyAgICBWID0gMHgwMDAwMDEKKyAgICBI
ID0gMHgwMDAwMDIKKyAgICBEID0gMHgwMDAwMDQKKyAgICBDID0gMHgwMDAwMDgKKyAgICBSID0g
MHgwMDAwMTAKKyAgICBaID0gMHgwMDAwMjAKKyAgICBTID0gMHgwMDAwNDAKKyAgICBRID0gMHgw
MDAwODAKKworICAgIE0gPSAweDAwMDEwMAorICAgIEIgPSAweDAwMDIwMAorICAgIEEgPSAweDAw
MDQwMAorICAgIFUgPSAweDAwMDgwMAorICAgIFAgPSAweDAwMTAwMAorICAgIEUgPSAweDAwMjAw
MAorICAgIEwgPSAweDAwNDAwMAorICAgIFQgPSAweDAwODAwMAorCisgICAgdGhyZWUgPSAweDAx
MDAwMAorICAgIGQgPSAweDAyMDAwMAorICAgIHAgPSAweDA0MDAwMAorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIGZsYWdzID0gc29ydGVkKAorICAgICAgICAgICAgbWFwKAorICAg
ICAgICAgICAgICAgIGxhbWJkYSB4OiBnZXRhdHRyKFJlc3VsdCwgeCksCisgICAgICAgICAgICAg
ICAgZmlsdGVyKGxhbWJkYSB4OiBub3QgeC5zdGFydHN3aXRoKCJfIiksIGRpcihSZXN1bHQpKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICBrZXk9bGFtYmRhIHg6IHgudmFsdWUsCisgICAg
ICAgICkKKyAgICAgICAgcmVzdWx0X3N0ciA9ICIiCisgICAgICAgIGZvciBmbGFnIGluIGZsYWdz
OgorICAgICAgICAgICAgaWYgc2VsZiAmIGZsYWc6CisgICAgICAgICAgICAgICAgcmVzdWx0X3N0
ciArPSBmbGFnLm5hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0
X3N0ciArPSAiLSIKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9zdHIKKworCitAZGF0YWNsYXNzCitj
bGFzcyBTZXJ2ZXI6CisgICAgbmFtZTogc3RyCisgICAgaG9zdDogc3RyCisgICAgcG9ydDogaW50
ID0gNDQzMworICAgIGh0dHAzOiBib29sID0gVHJ1ZQorICAgIHJldHJ5X3BvcnQ6IE9wdGlvbmFs
W2ludF0gPSA0NDM0CisgICAgcGF0aDogc3RyID0gIi8iCisgICAgcHVzaF9wYXRoOiBPcHRpb25h
bFtzdHJdID0gTm9uZQorICAgIHJlc3VsdDogUmVzdWx0ID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5
PWxhbWJkYTogUmVzdWx0KDApKQorICAgIHNlc3Npb25fcmVzdW1wdGlvbl9wb3J0OiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgIHN0cnVjdHVyZWRfbG9nZ2luZzogYm9vbCA9IEZhbHNlCisgICAg
dGhyb3VnaHB1dF9maWxlX3N1ZmZpeDogc3RyID0gIiIKKyAgICB2ZXJpZnlfbW9kZTogT3B0aW9u
YWxbaW50XSA9IE5vbmUKKworCitTRVJWRVJTID0gWworICAgIFNlcnZlcigiYWthbWFpcXVpYyIs
ICJpZXRmLmFrYXF1aWMuY29tIiwgcG9ydD00NDMsIHZlcmlmeV9tb2RlPXNzbC5DRVJUX05PTkUp
LAorICAgIFNlcnZlcigKKyAgICAgICAgImFpb3F1aWMiLCAicXVpYy5haW9ydGMub3JnIiwgcG9y
dD00NDMsIHB1c2hfcGF0aD0iLyIsIHN0cnVjdHVyZWRfbG9nZ2luZz1UcnVlCisgICAgKSwKKyAg
ICBTZXJ2ZXIoImF0cyIsICJxdWljLm9ncmUuY29tIiksCisgICAgU2VydmVyKCJmNSIsICJmNXF1
aWMuY29tIiwgcmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImhhc2tlbGwiLCAibWV3Lm9y
ZyIsIHJldHJ5X3BvcnQ9NDQzMyksCisgICAgU2VydmVyKCJncXVpYyIsICJxdWljLnJvY2tzIiwg
cmV0cnlfcG9ydD1Ob25lKSwKKyAgICBTZXJ2ZXIoImxzcXVpYyIsICJodHRwMy10ZXN0LmxpdGVz
cGVlZHRlY2guY29tIiwgcHVzaF9wYXRoPSIvMjAwP3B1c2g9LzEwMCIpLAorICAgIFNlcnZlcigK
KyAgICAgICAgIm1zcXVpYyIsCisgICAgICAgICJxdWljLndlc3R1cy5jbG91ZGFwcC5henVyZS5j
b20iLAorICAgICAgICBwb3J0PTQ0MzMsCisgICAgICAgIHNlc3Npb25fcmVzdW1wdGlvbl9wb3J0
PTQ0MzMsCisgICAgICAgIHN0cnVjdHVyZWRfbG9nZ2luZz1UcnVlLAorICAgICAgICB0aHJvdWdo
cHV0X2ZpbGVfc3VmZml4PSIudHh0IiwKKyAgICAgICAgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9O
RSwKKyAgICApLAorICAgIFNlcnZlcigKKyAgICAgICAgIm12ZnN0IiwgImZiLm12ZnN0Lm5ldCIs
IHBvcnQ9NDQzLCBwdXNoX3BhdGg9Ii9wdXNoIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAg
ICApLAorICAgIFNlcnZlcigibmd0Y3AyIiwgIm5naHR0cDIub3JnIiwgcHVzaF9wYXRoPSIvP3B1
c2g9LzEwMCIpLAorICAgIFNlcnZlcigibmd4X3F1aWMiLCAiY2xvdWRmbGFyZS1xdWljLmNvbSIs
IHBvcnQ9NDQzLCByZXRyeV9wb3J0PTQ0MyksCisgICAgU2VydmVyKCJwYW5kb3JhIiwgInBhbmRv
cmEuY20uaW4udHVtLmRlIiwgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCisgICAgU2VydmVy
KCJwaWNvcXVpYyIsICJ0ZXN0LnByaXZhdGVvY3RvcHVzLmNvbSIsIHN0cnVjdHVyZWRfbG9nZ2lu
Zz1UcnVlKSwKKyAgICBTZXJ2ZXIoInF1YW50IiwgInF1YW50LmVnZ2VydC5vcmciLCBodHRwMz1G
YWxzZSksCisgICAgU2VydmVyKCJxdWljLWdvIiwgInF1aWMuc2VlbWFubi5pbyIsIHBvcnQ9NDQz
LCByZXRyeV9wb3J0PTQ0MyksCisgICAgU2VydmVyKCJxdWljaGUiLCAicXVpYy50ZWNoIiwgcG9y
dD04NDQzLCByZXRyeV9wb3J0PTg0NDQpLAorICAgIFNlcnZlcigicXVpY2x5IiwgInF1aWMuZXhh
bXAxZS5uZXQiKSwKKyAgICBTZXJ2ZXIoInF1aW5uIiwgInJhbGl0aC5jb20iKSwKK10KKworCith
c3luYyBkZWYgdGVzdF92ZXJzaW9uX25lZ290aWF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290aWF0
aW9uCisgICAgY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnMuaW5zZXJ0KDAsIDB4MUEy
QTNBNEEpCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBz
ZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2Nv
bDoKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBjaGVjayBsb2cK
KyAgICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBd
WzBdWyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29y
eSA9PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3Jl
Y2VpdmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICJ2ZXJz
aW9uX25lZ290aWF0aW9uIgorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIu
cmVzdWx0IHw9IFJlc3VsdC5WCisKKworYXN5bmMgZGVmIHRlc3RfaGFuZHNoYWtlX2FuZF9jbG9z
ZShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAg
IGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBh
d2FpdCBwcm90b2NvbC5waW5nKCkKKyAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuSAor
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkMKKworCithc3luYyBkZWYgdGVzdF9zdGF0ZWxl
c3NfcmV0cnkoc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9u
KToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIu
cmV0cnlfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2Nv
bDoKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBjaGVjayBsb2cK
KyAgICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBd
WzBdWyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29y
eSA9PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3Jl
Y2VpdmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICJyZXRy
eSIKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1
bHQuUworCisKK2FzeW5jIGRlZiB0ZXN0X3F1YW50dW1fcmVhZGluZXNzKHNlcnZlcjogU2VydmVy
LCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgY29uZmlndXJhdGlvbi5x
dWFudHVtX3JlYWRpbmVzc190ZXN0ID0gVHJ1ZQorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRp
b24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKyAg
ICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuUQorCisKK2FzeW5jIGRlZiB0ZXN0X2h0dHBf
MChzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAg
IGlmIHNlcnZlci5wYXRoIGlzIE5vbmU6CisgICAgICAgIHJldHVybgorCisgICAgY29uZmlndXJh
dGlvbi5hbHBuX3Byb3RvY29scyA9IEgwX0FMUE4KKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisg
ICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0cENsaWVu
dCwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBwcm90b2NvbCA9IGNhc3QoSHR0cENsaWVu
dCwgcHJvdG9jb2wpCisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdAorICAgICAgICBl
dmVudHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCisgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9
Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucGF0aCkKKyAgICAgICAg
KQorICAgICAgICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVj
ZWl2ZWQpOgorICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuRAorCisKK2FzeW5j
IGRlZiB0ZXN0X2h0dHBfMyhzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZp
Z3VyYXRpb24pOgorICAgIGlmIHNlcnZlci5wYXRoIGlzIE5vbmU6CisgICAgICAgIHJldHVybgor
CisgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9IEgzX0FMUE4KKyAgICBhc3luYyB3
aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBzZXJ2ZXIucG9ydCwK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9SHR0cENsaWVudCwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBwcm90b2NvbCA9
IGNhc3QoSHR0cENsaWVudCwgcHJvdG9jb2wpCisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVx
dWVzdAorICAgICAgICBldmVudHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCisgICAgICAgICAgICAi
aHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIu
cGF0aCkKKyAgICAgICAgKQorICAgICAgICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgorICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1
bHQuRAorICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQudGhyZWUKKworICAgICAg
ICAjIHBlcmZvcm0gbW9yZSBIVFRQIHJlcXVlc3RzIHRvIHVzZSBRUEFDSyBkeW5hbWljIHRhYmxl
cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIGV2ZW50cyA9IGF3YWl0
IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQo
c2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucGF0aCkKKyAgICAgICAgICAgICkKKyAg
ICAgICAgaWYgZXZlbnRzIGFuZCBpc2luc3RhbmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVk
KToKKyAgICAgICAgICAgIGh0dHAgPSBjYXN0KEgzQ29ubmVjdGlvbiwgcHJvdG9jb2wuX2h0dHAp
CisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAg
ICAgIlFQQUNLIGRlY29kZXIgYnl0ZXMgUlggJWQgVFggJWQiLAorICAgICAgICAgICAgICAgIGh0
dHAuX2RlY29kZXJfYnl0ZXNfcmVjZWl2ZWQsCisgICAgICAgICAgICAgICAgaHR0cC5fZGVjb2Rl
cl9ieXRlc19zZW50LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX3F1aWMu
X2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgICAgICJRUEFDSyBlbmNvZGVyIGJ5dGVzIFJYICVk
IFRYICVkIiwKKyAgICAgICAgICAgICAgICBodHRwLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVkLAor
ICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfc2VudCwKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5dGVzX3Jl
Y2VpdmVkCisgICAgICAgICAgICAgICAgYW5kIGh0dHAuX2RlY29kZXJfYnl0ZXNfc2VudAorICAg
ICAgICAgICAgICAgIGFuZCBodHRwLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVkCisgICAgICAgICAg
ICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfc2VudAorICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5kCisKKyAgICAgICAgIyBjaGVjayBw
dXNoIHN1cHBvcnQKKyAgICAgICAgaWYgc2VydmVyLnB1c2hfcGF0aCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHByb3RvY29sLnB1c2hlcy5jbGVhcigpCisgICAgICAgICAgICBhd2FpdCBwcm90
b2NvbC5nZXQoCisgICAgICAgICAgICAgICAgImh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZl
ci5ob3N0LCBzZXJ2ZXIucG9ydCwgc2VydmVyLnB1c2hfcGF0aCkKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC41KQorICAgICAgICAgICAgZm9yIHB1c2hf
aWQsIGV2ZW50cyBpbiBwcm90b2NvbC5wdXNoZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBp
ZiAoCisgICAgICAgICAgICAgICAgICAgIGxlbihldmVudHMpID49IDMKKyAgICAgICAgICAgICAg
ICAgICAgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBQdXNoUHJvbWlzZVJlY2VpdmVkKQorICAg
ICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMV0sIEhlYWRlcnNSZWNlaXZl
ZCkKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzJdLCBEYXRhUmVj
ZWl2ZWQpCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wu
X3F1aWMuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgIlB1c2ggcHJvbWlz
ZSAlZCBmb3IgJXMgcmVjZWl2ZWQgKHN0YXR1cyAlcykiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QoZXZlbnRzWzBdLmhlYWRl
cnMpW2IiOnBhdGgiXS5kZWNvZGUoImFzY2lpIiksCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQoZGljdChldmVudHNbMV0uaGVhZGVycylbYiI6c3RhdHVzIl0pLAorICAgICAgICAgICAgICAg
ICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQucAor
CisKK2FzeW5jIGRlZiB0ZXN0X3Nlc3Npb25fcmVzdW1wdGlvbihzZXJ2ZXI6IFNlcnZlciwgY29u
ZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIHBvcnQgPSBzZXJ2ZXIuc2Vzc2lv
bl9yZXN1bXB0aW9uX3BvcnQgb3Igc2VydmVyLnBvcnQKKyAgICBzYXZlZF90aWNrZXQgPSBOb25l
CisKKyAgICBkZWYgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcih0aWNrZXQpOgorICAgICAgICBub25s
b2NhbCBzYXZlZF90aWNrZXQKKyAgICAgICAgc2F2ZWRfdGlja2V0ID0gdGlja2V0CisKKyAgICAj
IGNvbm5lY3QgYSBmaXJzdCB0aW1lLCByZWNlaXZlIGEgdGlja2V0CisgICAgYXN5bmMgd2l0aCBj
b25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwKKyAgICAgICAgcG9ydCwKKyAgICAgICAgY29u
ZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXNlc3Npb25fdGlja2V0X2hhbmRsZXIsCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgYXdh
aXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBzb21lIHNlcnZlcnMgZG9uJ3Qgc2VuZCB0
aGUgdGlja2V0IGltbWVkaWF0ZWx5CisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKKwor
ICAgICMgY29ubmVjdCBhIHNlY29uZCB0aW1lLCB3aXRoIHRoZSB0aWNrZXQKKyAgICBpZiBzYXZl
ZF90aWNrZXQgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNr
ZXQgPSBzYXZlZF90aWNrZXQKKyAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KHNlcnZlci5ob3N0
LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24pIGFzIHByb3RvY29sOgorICAgICAg
ICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgICAgICMgY2hlY2sgc2Vzc2lv
biB3YXMgcmVzdW1lZAorICAgICAgICAgICAgaWYgcHJvdG9jb2wuX3F1aWMudGxzLnNlc3Npb25f
cmVzdW1lZDoKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5SCisKKyAg
ICAgICAgICAgICMgY2hlY2sgZWFybHkgZGF0YSB3YXMgYWNjZXB0ZWQKKyAgICAgICAgICAgIGlm
IHByb3RvY29sLl9xdWljLnRscy5lYXJseV9kYXRhX2FjY2VwdGVkOgorICAgICAgICAgICAgICAg
IHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LloKKworCithc3luYyBkZWYgdGVzdF9rZXlfdXBkYXRl
KHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNv
bmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgICMg
Y2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorCisgICAg
ICAgICMgcmVxdWVzdCBrZXkgdXBkYXRlCisgICAgICAgIHByb3RvY29sLnJlcXVlc3Rfa2V5X3Vw
ZGF0ZSgpCisKKyAgICAgICAgIyBjYXVzZSBtb3JlIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJv
dG9jb2wucGluZygpCisKKyAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuVQorCisKK2Fz
eW5jIGRlZiB0ZXN0X21pZ3JhdGlvbihzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVp
Y0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVy
Lmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFz
IHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNvbWUgdHJhZmZpYworICAgICAgICBhd2FpdCBw
cm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoYW5nZSBjb25uZWN0aW9uIElEIGFuZCByZXBs
YWNlIHRyYW5zcG9ydAorICAgICAgICBwcm90b2NvbC5jaGFuZ2VfY29ubmVjdGlvbl9pZCgpCisg
ICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQuY2xvc2UoKQorICAgICAgICBhd2FpdCBsb29wLmNy
ZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1iZGE6IHByb3RvY29sLCBsb2NhbF9hZGRyPSgiOjoi
LCAwKSkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90
b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAgICAgICBkY2lkcyA9IHNldCgp
CisgICAgICAgIGZvciBzdGFtcCwgY2F0ZWdvcnksIGV2ZW50LCBkYXRhIGluIGNvbmZpZ3VyYXRp
b24ucXVpY19sb2dnZXIudG9fZGljdCgpWworICAgICAgICAgICAgInRyYWNlcyIKKyAgICAgICAg
XVswXVsiZXZlbnRzIl06CisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgY2F0ZWdv
cnkgPT0gInRyYW5zcG9ydCIKKyAgICAgICAgICAgICAgICBhbmQgZXZlbnQgPT0gInBhY2tldF9y
ZWNlaXZlZCIKKyAgICAgICAgICAgICAgICBhbmQgZGF0YVsicGFja2V0X3R5cGUiXSA9PSAiMVJU
VCIKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgZGNpZHMuYWRkKGRhdGFbImhlYWRl
ciJdWyJkY2lkIl0pCisgICAgICAgIGlmIGxlbihkY2lkcykgPT0gMjoKKyAgICAgICAgICAgIHNl
cnZlci5yZXN1bHQgfD0gUmVzdWx0Lk0KKworCithc3luYyBkZWYgdGVzdF9yZWJpbmRpbmcoc2Vy
dmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVz
ZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAg
IyByZXBsYWNlIHRyYW5zcG9ydAorICAgICAgICBwcm90b2NvbC5fdHJhbnNwb3J0LmNsb3NlKCkK
KyAgICAgICAgYXdhaXQgbG9vcC5jcmVhdGVfZGF0YWdyYW1fZW5kcG9pbnQobGFtYmRhOiBwcm90
b2NvbCwgbG9jYWxfYWRkcj0oIjo6IiwgMCkpCisKKyAgICAgICAgIyBjYXVzZSBtb3JlIHRyYWZm
aWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgc2VydmVyLnJlc3Vs
dCB8PSBSZXN1bHQuQgorCisKK2FzeW5jIGRlZiB0ZXN0X3NwaW5fYml0KHNlcnZlcjogU2VydmVy
LCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25u
ZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29u
ZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDUp
OgorICAgICAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAgIyBjaGVjayBs
b2cKKyAgICAgICAgc3Bpbl9iaXRzID0gc2V0KCkKKyAgICAgICAgZm9yIHN0YW1wLCBjYXRlZ29y
eSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KClbCisg
ICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBdWzBdWyJldmVudHMiXToKKyAgICAgICAgICAg
IGlmIGNhdGVnb3J5ID09ICJjb25uZWN0aXZpdHkiIGFuZCBldmVudCA9PSAic3Bpbl9iaXRfdXBk
YXRlZCI6CisgICAgICAgICAgICAgICAgc3Bpbl9iaXRzLmFkZChkYXRhWyJzdGF0ZSJdKQorICAg
ICAgICBpZiBsZW4oc3Bpbl9iaXRzKSA9PSAyOgorICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8
PSBSZXN1bHQuUAorCisKK2FzeW5jIGRlZiB0ZXN0X3Rocm91Z2hwdXQoc2VydmVyOiBTZXJ2ZXIs
IGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBmYWlsdXJlcyA9IDAKKwor
ICAgIGZvciBzaXplIGluIFs1MDAwMDAwLCAxMDAwMDAwMF06CisgICAgICAgIHByaW50KCJUZXN0
aW5nICVkIGJ5dGVzIGRvd25sb2FkIiAlIHNpemUpCisgICAgICAgIHBhdGggPSAiLyVkJXMiICUg
KHNpemUsIHNlcnZlci50aHJvdWdocHV0X2ZpbGVfc3VmZml4KQorCisgICAgICAgICMgcGVyZm9y
bSBIVFRQIHJlcXVlc3Qgb3ZlciBUQ1AKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAg
ICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly8iICsgc2VydmVyLmhvc3QgKyBw
YXRoLCB2ZXJpZnk9RmFsc2UpCisgICAgICAgIHRjcF9vY3RldHMgPSBsZW4ocmVzcG9uc2UuY29u
dGVudCkKKyAgICAgICAgdGNwX2VsYXBzZWQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisgICAgICAg
IGFzc2VydCB0Y3Bfb2N0ZXRzID09IHNpemUsICJIVFRQL1RDUCByZXNwb25zZSBzaXplIG1pc21h
dGNoIgorCisgICAgICAgICMgcGVyZm9ybSBIVFRQIHJlcXVlc3Qgb3ZlciBRVUlDCisgICAgICAg
IGlmIHNlcnZlci5odHRwMzoKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2Nv
bHMgPSBIM19BTFBOCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmFs
cG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAg
ICAgICAgc2VydmVyLnBvcnQsCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRp
b24sCisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0cENsaWVudCwKKyAgICAgICAgKSBh
cyBwcm90b2NvbDoKKyAgICAgICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBwcm90
b2NvbCkKKworICAgICAgICAgICAgaHR0cF9ldmVudHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCisg
ICAgICAgICAgICAgICAgImh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5ob3N0LCBzZXJ2
ZXIucG9ydCwgcGF0aCkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHF1aWNfZWxhcHNlZCA9
IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgICAgIHF1aWNfb2N0ZXRzID0gMAorICAgICAg
ICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShodHRwX2V2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgICAgICAg
ICBxdWljX29jdGV0cyArPSBsZW4oaHR0cF9ldmVudC5kYXRhKQorICAgICAgICBhc3NlcnQgcXVp
Y19vY3RldHMgPT0gc2l6ZSwgIkhUVFAvUVVJQyByZXNwb25zZSBzaXplIG1pc21hdGNoIgorCisg
ICAgICAgIHByaW50KCIgLSBIVFRQL1RDUCAgY29tcGxldGVkIGluICUuM2YgcyIgJSB0Y3BfZWxh
cHNlZCkKKyAgICAgICAgcHJpbnQoIiAtIEhUVFAvUVVJQyBjb21wbGV0ZWQgaW4gJS4zZiBzIiAl
IHF1aWNfZWxhcHNlZCkKKworICAgICAgICBpZiBxdWljX2VsYXBzZWQgPiAxLjEgKiB0Y3BfZWxh
cHNlZDoKKyAgICAgICAgICAgIGZhaWx1cmVzICs9IDEKKyAgICAgICAgICAgIHByaW50KCIgPT4g
RkFJTCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgiID0+IFBBU1MiKQorCisg
ICAgaWYgZmFpbHVyZXMgPT0gMDoKKyAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuVAor
CisKK2RlZiBwcmludF9yZXN1bHQoc2VydmVyOiBTZXJ2ZXIpIC0+IE5vbmU6CisgICAgcmVzdWx0
ID0gc3RyKHNlcnZlci5yZXN1bHQpLnJlcGxhY2UoInRocmVlIiwgIjMiKQorICAgIHJlc3VsdCA9
IHJlc3VsdFswOjhdICsgIiAiICsgcmVzdWx0Wzg6MTZdICsgIiAiICsgcmVzdWx0WzE2Ol0KKyAg
ICBwcmludCgiJXMlcyVzIiAlIChzZXJ2ZXIubmFtZSwgIiAiICogKDIwIC0gbGVuKHNlcnZlci5u
YW1lKSksIHJlc3VsdCkpCisKKworYXN5bmMgZGVmIHJ1bihzZXJ2ZXJzLCB0ZXN0cywgcXVpY19s
b2c9RmFsc2UsIHNlY3JldHNfbG9nX2ZpbGU9Tm9uZSkgLT4gTm9uZToKKyAgICBmb3Igc2VydmVy
IGluIHNlcnZlcnM6CisgICAgICAgIGlmIHNlcnZlci5zdHJ1Y3R1cmVkX2xvZ2dpbmc6CisgICAg
ICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5MCisgICAgICAgIGZvciB0ZXN0X25hbWUs
IHRlc3RfZnVuYyBpbiB0ZXN0czoKKyAgICAgICAgICAgIHByaW50KCJcbj09PSAlcyAlcyA9PT1c
biIgJSAoc2VydmVyLm5hbWUsIHRlc3RfbmFtZSkpCisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAgICAgYWxwbl9wcm90b2NvbHM9SDNf
QUxQTiArIEgwX0FMUE4sCisgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsCisgICAgICAg
ICAgICAgICAgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpLAorICAgICAgICAgICAgICAgIHNlY3Jl
dHNfbG9nX2ZpbGU9c2VjcmV0c19sb2dfZmlsZSwKKyAgICAgICAgICAgICAgICB2ZXJpZnlfbW9k
ZT1zZXJ2ZXIudmVyaWZ5X21vZGUsCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiB0ZXN0
X25hbWUgPT0gInRlc3RfdGhyb3VnaHB1dCI6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDYw
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAxMAorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8ud2FpdF9mb3IoCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RfZnVuYyhzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pLCB0aW1lb3V0
PXRpbWVvdXQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGV4YzoKKyAgICAgICAgICAgICAgICBwcmludChleGMpCisKKyAgICAgICAgICAgIGlmIHF1
aWNfbG9nOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiJXMtJXMucWxvZyIgJSAoc2VydmVy
Lm5hbWUsIHRlc3RfbmFtZSksICJ3IikgYXMgbG9nZ2VyX2ZwOgorICAgICAgICAgICAgICAgICAg
ICBqc29uLmR1bXAoY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9m
cCwgaW5kZW50PTQpCisKKyAgICAgICAgcHJpbnQoIiIpCisgICAgICAgIHByaW50X3Jlc3VsdChz
ZXJ2ZXIpCisKKyAgICAjIHByaW50IHN1bW1hcnkKKyAgICBpZiBsZW4oc2VydmVycykgPiAxOgor
ICAgICAgICBwcmludCgiU1VNTUFSWSIpCisgICAgICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyczoK
KyAgICAgICAgICAgIHByaW50X3Jlc3VsdChzZXJ2ZXIpCisKKworaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlv
bj0iUVVJQyBpbnRlcm9wIGNsaWVudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi1xIiwKKyAgICAgICAgIi0tcXVpYy1sb2ciLAorICAgICAgICBhY3Rpb249InN0b3JlX3Ry
dWUiLAorICAgICAgICBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9y
bWF0IiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tc2VydmVy
IiwgdHlwZT1zdHIsIGhlbHA9Im9ubHkgcnVuIGFnYWluc3QgdGhlIHNwZWNpZmllZCBzZXJ2ZXIu
IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXRlc3QiLCB0eXBlPXN0ciwgaGVs
cD0ib25seSBydW4gdGhlIHNwZWNpZmVkIHRlc3QuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9
c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBX
aXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXYi
LCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2lu
ZyB2ZXJib3NpdHkiCisgICAgKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKwor
ICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCisgICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShs
ZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1lc3NhZ2UpcyIsCisgICAgICAgIGxldmVsPWxvZ2dpbmcu
REVCVUcgaWYgYXJncy52ZXJib3NlIGVsc2UgbG9nZ2luZy5JTkZPLAorICAgICkKKworICAgICMg
b3BlbiBTU0wgbG9nIGZpbGUKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAgICAgICBzZWNy
ZXRzX2xvZ19maWxlID0gb3BlbihhcmdzLnNlY3JldHNfbG9nLCAiYSIpCisgICAgZWxzZToKKyAg
ICAgICAgc2VjcmV0c19sb2dfZmlsZSA9IE5vbmUKKworICAgICMgZGV0ZXJtaW5lIHdoYXQgdG8g
cnVuCisgICAgc2VydmVycyA9IFNFUlZFUlMKKyAgICB0ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJk
YSB4OiB4WzBdLnN0YXJ0c3dpdGgoInRlc3RfIiksIGdsb2JhbHMoKS5pdGVtcygpKSkKKyAgICBp
ZiBhcmdzLnNlcnZlcjoKKyAgICAgICAgc2VydmVycyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4
Lm5hbWUgPT0gYXJncy5zZXJ2ZXIsIHNlcnZlcnMpKQorICAgIGlmIGFyZ3MudGVzdDoKKyAgICAg
ICAgdGVzdHMgPSBsaXN0KGZpbHRlcihsYW1iZGEgeDogeFswXSA9PSBhcmdzLnRlc3QsIHRlc3Rz
KSkKKworICAgICMgZGlzYWJsZSByZXF1ZXN0cyBTU0wgd2FybmluZ3MKKyAgICB1cmxsaWIzLmRp
c2FibGVfd2FybmluZ3ModXJsbGliMy5leGNlcHRpb25zLkluc2VjdXJlUmVxdWVzdFdhcm5pbmcp
CisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50
aWxfY29tcGxldGUoCisgICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlcnZlcnM9c2VydmVycywK
KyAgICAgICAgICAgIHRlc3RzPXRlc3RzLAorICAgICAgICAgICAgcXVpY19sb2c9YXJncy5xdWlj
X2xvZywKKyAgICAgICAgICAgIHNlY3JldHNfbG9nX2ZpbGU9c2VjcmV0c19sb2dfZmlsZSwKKyAg
ICAgICAgKQorICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9zaWR1Y2tf
Y2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWI2YTViNzZlMGU3MDE4MjgyNjdjMzMzZjMzODQ3NmQ1YjBlNzIyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9zaWR1Y2tfY2xpZW50LnB5CkBAIC0wLDAg
KzEsMTAwIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgor
aW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzc2wKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbCwg
Y2FzdAorCitmcm9tIGFpb3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20g
YWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitm
cm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgor
ZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQsIFF1
aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCisKK2xv
Z2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCisKK2NsYXNzIFNpZHVja0NsaWVu
dChRdWljQ29ubmVjdGlvblByb3RvY29sKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisg
ICAgICAgIHNlbGYuX2Fja193YWl0ZXI6IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9
IE5vbmUKKworICAgIGFzeW5jIGRlZiBxdWFjayhzZWxmKSAtPiBOb25lOgorICAgICAgICBhc3Nl
cnQgc2VsZi5fYWNrX3dhaXRlciBpcyBOb25lLCAiT25seSBvbmUgcXVhY2sgYXQgYSB0aW1lLiIK
KyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX2RhdGFncmFtX2ZyYW1lKGIicXVhY2siKQorCisgICAg
ICAgIHdhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgIHNlbGYuX2Fj
a193YWl0ZXIgPSB3YWl0ZXIKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAgICAgcmV0
dXJuIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiBxdWljX2V2ZW50X3Jl
Y2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2Fja193YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50
LCBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQpIGFuZCBldmVudC5kYXRhID09IGIicXVhY2stYWNrIjoK
KyAgICAgICAgICAgICAgICB3YWl0ZXIgPSBzZWxmLl9hY2tfd2FpdGVyCisgICAgICAgICAgICAg
ICAgc2VsZi5fYWNrX3dhaXRlciA9IE5vbmUKKyAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jl
c3VsdChOb25lKQorCisKK2FzeW5jIGRlZiBydW4oY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3Vy
YXRpb24sIGhvc3Q6IHN0ciwgcG9ydDogaW50KSAtPiBOb25lOgorICAgIGFzeW5jIHdpdGggY29u
bmVjdCgKKyAgICAgICAgaG9zdCwgcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBj
cmVhdGVfcHJvdG9jb2w9U2lkdWNrQ2xpZW50CisgICAgKSBhcyBjbGllbnQ6CisgICAgICAgIGNs
aWVudCA9IGNhc3QoU2lkdWNrQ2xpZW50LCBjbGllbnQpCisgICAgICAgIGxvZ2dlci5pbmZvKCJz
ZW5kaW5nIHF1YWNrIikKKyAgICAgICAgYXdhaXQgY2xpZW50LnF1YWNrKCkKKyAgICAgICAgbG9n
Z2VyLmluZm8oInJlY2VpdmVkIHF1YWNrLWFjayIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0i
U2lEVUNLIGNsaWVudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImhvc3Qi
LCB0eXBlPXN0ciwgaGVscD0iVGhlIHJlbW90ZSBwZWVyJ3MgaG9zdCBuYW1lIG9yIElQIGFkZHJl
c3MiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInBvcnQiLCB0eXBlPWludCwgaGVs
cD0iVGhlIHJlbW90ZSBwZWVyJ3MgcG9ydCBudW1iZXIiKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICItayIsCisgICAgICAgICItLWluc2VjdXJlIiwKKyAgICAgICAgYWN0aW9u
PSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0iZG8gbm90IHZhbGlkYXRlIHNlcnZlciBjZXJ0
aWZpY2F0ZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItcSIs
ICItLXF1aWMtbG9nIiwgdHlwZT1zdHIsIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUg
aW4gUUxPRyBmb3JtYXQiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAg
ICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAg
ICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVzaGFyayIs
CisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJv
c2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0
eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2lu
Zy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlz
ICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBh
cmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29scz1bInNpZHVjayJd
LCBpc19jbGllbnQ9VHJ1ZSwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYKKyAgICApCisg
ICAgaWYgYXJncy5pbnNlY3VyZToKKyAgICAgICAgY29uZmlndXJhdGlvbi52ZXJpZnlfbW9kZSA9
IHNzbC5DRVJUX05PTkUKKyAgICBpZiBhcmdzLnF1aWNfbG9nOgorICAgICAgICBjb25maWd1cmF0
aW9uLnF1aWNfbG9nZ2VyID0gUXVpY0xvZ2dlcigpCisgICAgaWYgYXJncy5zZWNyZXRzX2xvZzoK
KyAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlID0gb3BlbihhcmdzLnNlY3Jl
dHNfbG9nLCAiYSIpCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAg
dHJ5OgorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bihj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGhvc3Q9YXJncy5ob3N0LCBwb3J0PWFyZ3MucG9y
dCkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24ucXVp
Y19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5xdWljX2xv
ZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5kdW1wKGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00KQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9pbmRleC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwODU0ODdl
ODQwODEwMzc2NTM0YmM0MjhkNTEwMmI0ZWU4YTYyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFpb3F1aWM8L3RpdGxlPgorICAgICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZS5jc3MiLz4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHk+CisgICAgICAgIDxoMT5XZWxjb21lIHRvIGFpb3F1aWM8L2gxPgorICAgICAgICA8cD4K
KyAgICAgICAgICAgIFRoaXMgaXMgYSB0ZXN0IHBhZ2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vZ2l0
aHViLmNvbS9haW9ydGMvYWlvcXVpYy8iPmFpb3F1aWM8L2E+LAorICAgICAgICAgICAgYSBRVUlD
IGFuZCBIVFRQLzMgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBpbiBQeXRob24uCisgICAgICAgIDwv
cD4KK3slIGlmIHJlcXVlc3Quc2NvcGVbImh0dHBfdmVyc2lvbiJdID09ICIzIiAlfQorICAgICAg
ICA8cD4KKyAgICAgICAgICAgIENvbmdyYXR1bGF0aW9ucywgeW91IGxvYWRlZCB0aGlzIHBhZ2Ug
dXNpbmcgSFRUUC8zIQorICAgICAgICA8L3A+Cit7JSBlbmRpZiAlfQorICAgICAgICA8aDI+QXZh
aWxhYmxlIGVuZHBvaW50czwvaDI+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaT48c3Ry
b25nPkdFVCAvPC9zdHJvbmc+IHJldHVybnMgdGhlIGhvbWVwYWdlPC9saT4KKyAgICAgICAgICAg
IDxsaT48c3Ryb25nPkdFVCAvTk5OTk48L3N0cm9uZz4gcmV0dXJucyBOTk5OTiBieXRlcyBvZiBw
bGFpbiB0ZXh0PC9saT4KKyAgICAgICAgICAgIDxsaT48c3Ryb25nPlBPU1QgL2VjaG88L3N0cm9u
Zz4gcmV0dXJucyB0aGUgcmVxdWVzdCBkYXRhPC9saT4KKyAgICAgICAgICAgIDxsaT4KKyAgICAg
ICAgICAgICAgICA8c3Ryb25nPkNPTk5FQ1QgL3dzPC9zdHJvbmc+IHJ1bnMgYSBXZWJTb2NrZXQg
ZWNobyBzZXJ2aWNlLgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNldCB0aGUgPGVtPjpwcm90
b2NvbDwvZW0+IHBzZXVkby1oZWFkZXIgdG8gPGVtPiJ3ZWJzb2NrZXQiPC9lbT4uCisgICAgICAg
ICAgICA8L2xpPgorICAgICAgICAgICAgPGxpPlRoZXJlIGlzIGFsc28gYW4gPGEgaHJlZj0iL2h0
dHBiaW4vIj5odHRwYmluIGluc3RhbmNlPC9hPi48L2xpPgorICAgICAgICA8L3VsPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0
ZXMvbG9ncy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzA5OWY2N2RjYTIyYzU3ZmJjOTFkOGQxOWEwZDZhODhmM2MxYjlmNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvbG9ncy5odG1s
CkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+CisgICAgICAgIDx0aXRsZT5haW9xdWljIC0g
bG9nczwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxl
LmNzcyIvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGgxPlFMT0cgZmlsZXM8
L2gxPgorICAgICAgICA8dGFibGUgY2xhc3M9ImxvZ3MiPgorICAgICAgICA8dHI+CisgICAgICAg
ICAgICA8dGg+bmFtZTwvdGg+CisgICAgICAgICAgICA8dGg+ZGF0ZSAoVVRDKTwvdGg+CisgICAg
ICAgICAgICA8dGg+c2l6ZTwvdGg+CisgICAgICAgIDwvdHI+Cit7JSBmb3IgbG9nIGluIGxvZ3Mg
JX0KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj4KKyAgICAgICAg
ICAgICAgICA8YSBocmVmPSJ7eyBsb2cuZmlsZV91cmwgfX0iPnt7IGxvZy5uYW1lIH19PC9hPgor
ICAgICAgICAgICAgICAgIDxhIGhyZWY9Int7IGxvZy5xdmlzX3VybCB9fSI+W3F2aXNdPC9hPgor
ICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZCBjbGFzcz0iZGF0ZSI+e3sgbG9nLmRh
dGUgfX08L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJzaXplIj57eyBsb2cuc2l6ZSB9fTwv
dGQ+CisgICAgICAgIDwvdHI+Cit7JSBlbmRmb3IgJX0KKyAgICAgICAgPC90YWJsZT4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxh
dGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2Mt
aW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmJiOWQzNjRkN2NkYzAyZjI2NDNlM2Q3YmRkNzQ4MjFi
ZjQ0NjgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRl
cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE4IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVt
cGxhdGVzL2xvZ3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY4ZjIyMDRhZDQxZTQ4ZmYxZGY0YjViNDczMTYxZGRlNmU4MjdmY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwy
MiBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAz
X3NlcnZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9zaWR1
Y2tfY2xpZW50LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL2RvYy50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL2RvYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMzM2Ez
OTc4NzRjNjUzYzkxYTIwYTBiOTI1NjczZDVjNDljN2I4OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApAQCAtMCwwICsxLDMgQEAKK2NyeXB0b2dy
YXBoeQorc3BoaW54X2F1dG9kb2NfdHlwZWhpbnRzCitzcGhpbnhjb250cmliLWFzeW5jaW8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllZTIyZTc0
YmQyMWE5NDY3Y2YxNjZkOTQwNGM2MjY5YTA5ZDVhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1Ro
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJ
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZp
bGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1
aWxkLW9wZW5zc2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkZWQ3MmMxNzI0YmIwMDQzMjMyOGM1ZTIyOWJhNzM3
NjJjNWU0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9w
ZW5zc2wKQEAgLTAsMCArMSwyOSBAQAorIyEvYmluL3NoCisKK3NldCAtZQorCitkZXN0ZGlyPSQx
CitjYWNoZWRpcj0kMS4kUFlUSE9OX0FSQ0gKKworZm9yIGQgaW4gb3BlbnNzbCAkZGVzdGRpcjsg
ZG8KKyAgICBpZiBbIC1lICRkIF07IHRoZW4KKyAgICAgICAgcm0gLXJmICRkCisgICAgZmkKK2Rv
bmUKKworaWYgWyAhIC1lICRjYWNoZWRpciBdOyB0aGVuCisgICAgIyBidWlsZCBvcGVuc3NsCisg
ICAgbWtkaXIgb3BlbnNzbAorICAgIGN1cmwgLUwgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291
cmNlL29wZW5zc2wtMS4xLjFmLnRhci5neiB8IHRhciB4eiAtQyBvcGVuc3NsIC0tc3RyaXAtY29t
cG9uZW50cyAxCisgICAgY2Qgb3BlbnNzbAorCisgICAgLi9jb25maWcgbm8tY29tcCBuby1zaGFy
ZWQgbm8tdGVzdHMKKyAgICBtYWtlCisKKyAgICBta2RpciAkY2FjaGVkaXIKKyAgICBta2RpciAk
Y2FjaGVkaXIvbGliCisgICAgY3AgLVIgaW5jbHVkZSAkY2FjaGVkaXIKKyAgICBjcCBsaWJjcnlw
dG8uYSBsaWJzc2wuYSAkY2FjaGVkaXIvbGliCitmaQorCitjcCAtUiAkY2FjaGVkaXIgJGRlc3Rk
aXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wuYmF0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEwMDc5
ZGRmODMyMGY3NTRiZDk0MjIxNTdlNjU0Mzk0NmQ2MDBlNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wuYmF0CkBAIC0wLDAgKzEsMzkgQEAKK3Nl
dCBkZXN0ZGlyPSUxCitzZXQgY2FjaGVkaXI9JTEuJVBZVEhPTl9BUkNIJQorCitmb3IgJSVkIGlu
IChvcGVuc3NsICVkZXN0ZGlyJSkgZG8gKAorICAgIGlmIGV4aXN0ICUlZCAoCisgICAgICAgIHJt
ZGlyIC9zIC9xICUlZAorICAgICkKKykKKworaWYgJVBZVEhPTl9BUkNIJSA9PSA2NCAoCisgICBz
ZXQgT1BFTlNTTF9DT05GSUc9VkMtV0lONjRBCisgICBzZXQgVkNfQVJDSD14NjQKKykgZWxzZSAo
CisgICBzZXQgT1BFTlNTTF9DT05GSUc9VkMtV0lOMzIKKyAgIHNldCBWQ19BUkNIPXg4NgorKQor
CitjYWxsICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXDIw
MTlcRW50ZXJwcmlzZVxWQ1xBdXhpbGlhcnlcQnVpbGRcdmN2YXJzYWxsLmJhdCIgJVZDX0FSQ0gl
CitTRVQgUEFUSD0lUEFUSCU7QzpcUHJvZ3JhbSBGaWxlc1xOQVNNCisKK2lmIG5vdCBleGlzdCAl
Y2FjaGVkaXIlICgKKyAgICBta2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5v
cGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjEuMWYudGFyLmd6IC1vIG9wZW5zc2wudGFyLmd6
CisgICAgdGFyIHh6ZiBvcGVuc3NsLnRhci5neiAtQyBvcGVuc3NsIC0tc3RyaXAtY29tcG9uZW50
cyAxCisgICAgY2Qgb3BlbnNzbAorCisgICAgcGVybCBDb25maWd1cmUgbm8tY29tcCBuby1zaGFy
ZWQgbm8tdGVzdHMgJU9QRU5TU0xfQ09ORklHJQorICAgIG5tYWtlCisKKyAgICBta2RpciAlY2Fj
aGVkaXIlCisgICAgbWtkaXIgJWNhY2hlZGlyJVxpbmNsdWRlCisgICAgbWtkaXIgJWNhY2hlZGly
JVxsaWIKKyAgICB4Y29weSBpbmNsdWRlICVjYWNoZWRpciVcaW5jbHVkZVwgL0UKKyAgICBjb3B5
IGxpYmNyeXB0by5saWIgJWNhY2hlZGlyJVxsaWJcCisgICAgY29weSBsaWJzc2wubGliICVjYWNo
ZWRpciVcbGliXAorKQorCitta2RpciAlZGVzdGRpciUKK3hjb3B5ICVjYWNoZWRpciUgJWRlc3Rk
aXIlIC9FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0N2Y5Mzlk
NDI4ZjcxMDY5NDM0NzUzMzdhYmQ4MjgwZGYwZjE5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE4IEBACitUaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Njcmlw
dHMvYnVpbGQtb3BlbnNzbC5iYXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc2V0dXAuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5YzAyNWFkMGY3MzNiMzhiYjk0
ZjhiYjhlYjA0Nzg1ZGEzYjRmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0
dXAuY2ZnCkBAIC0wLDAgKzEsMjEgQEAKK1tjb3ZlcmFnZTpydW5dCitzb3VyY2UgPSBhaW9xdWlj
CisKK1tmbGFrZThdCitpZ25vcmU9RTIwMyxXNTAzCittYXgtbGluZS1sZW5ndGg9MTUwCisKK1tp
c29ydF0KK2RlZmF1bHRfc2VjdGlvbiA9IFRISVJEUEFSVFkKK2luY2x1ZGVfdHJhaWxpbmdfY29t
bWEgPSBUcnVlCitrbm93bl9maXJzdF9wYXJ0eSA9IGFpb3F1aWMKK2xpbmVfbGVuZ3RoID0gODgK
K211bHRpX2xpbmVfb3V0cHV0ID0gMworCitbbXlweV0KK2Rpc2FsbG93X3VudHlwZWRfY2FsbHMg
PSBUcnVlCitkaXNhbGxvd191bnR5cGVkX2RlY29yYXRvcnMgPSBUcnVlCitpZ25vcmVfbWlzc2lu
Z19pbXBvcnRzID0gVHJ1ZQorc3RyaWN0X29wdGlvbmFsID0gRmFsc2UKK3dhcm5fcmVkdW5kYW50
X2Nhc3RzID0gVHJ1ZQord2Fybl91bnVzZWRfaWdub3JlcyA9IFRydWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NWM1ZWEzYzQ0M2YwZDFiY2RiYmVmMWEyOTJlZDA0NzQ0ZWI5NmI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5CkBAIC0wLDAgKzEsNjkgQEAKK2ltcG9ydCBvcy5wYXRo
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBzZXR1cHRvb2xzCisKK3Jvb3RfZGlyID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisKK2Fib3V0ID0ge30KK2Fib3V0X2Zp
bGUgPSBvcy5wYXRoLmpvaW4ocm9vdF9kaXIsICJzcmMiLCAiYWlvcXVpYyIsICJhYm91dC5weSIp
Cit3aXRoIG9wZW4oYWJvdXRfZmlsZSwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZnA6CisgICAgZXhl
YyhmcC5yZWFkKCksIGFib3V0KQorCityZWFkbWVfZmlsZSA9IG9zLnBhdGguam9pbihyb290X2Rp
ciwgIlJFQURNRS5yc3QiKQord2l0aCBvcGVuKHJlYWRtZV9maWxlLCBlbmNvZGluZz0idXRmLTgi
KSBhcyBmOgorICAgIGxvbmdfZGVzY3JpcHRpb24gPSBmLnJlYWQoKQorCitpZiBzeXMucGxhdGZv
cm0gPT0gIndpbjMyIjoKKyAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbXQorICAgIGxpYnJhcmll
cyA9IFsibGliY3J5cHRvIiwgImFkdmFwaTMyIiwgImNyeXB0MzIiLCAiZ2RpMzIiLCAidXNlcjMy
IiwgIndzMl8zMiJdCitlbHNlOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFsiLXN0ZD1jOTki
XQorICAgIGxpYnJhcmllcyA9IFsiY3J5cHRvIl0KKworc2V0dXB0b29scy5zZXR1cCgKKyAgICBu
YW1lPWFib3V0WyJfX3RpdGxlX18iXSwKKyAgICB2ZXJzaW9uPWFib3V0WyJfX3ZlcnNpb25fXyJd
LAorICAgIGRlc2NyaXB0aW9uPWFib3V0WyJfX3N1bW1hcnlfXyJdLAorICAgIGxvbmdfZGVzY3Jp
cHRpb249bG9uZ19kZXNjcmlwdGlvbiwKKyAgICB1cmw9YWJvdXRbIl9fdXJpX18iXSwKKyAgICBh
dXRob3I9YWJvdXRbIl9fYXV0aG9yX18iXSwKKyAgICBhdXRob3JfZW1haWw9YWJvdXRbIl9fZW1h
aWxfXyJdLAorICAgIGxpY2Vuc2U9YWJvdXRbIl9fbGljZW5zZV9fIl0sCisgICAgaW5jbHVkZV9w
YWNrYWdlX2RhdGE9VHJ1ZSwKKyAgICBjbGFzc2lmaWVycz1bCisgICAgICAgICJEZXZlbG9wbWVu
dCBTdGF0dXMgOjogNCAtIEJldGEiLAorICAgICAgICAiRW52aXJvbm1lbnQgOjogV2ViIEVudmly
b25tZW50IiwKKyAgICAgICAgIkludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMiLAorICAg
ICAgICAiTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogQlNEIExpY2Vuc2UiLAorICAgICAgICAi
T3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCIsCisgICAgICAgICJQcm9ncmFtbWlu
ZyBMYW5ndWFnZSA6OiBQeXRob24iLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDMiLAorICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6
IDMuNiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43IiwK
KyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgiLAorICAgICAg
ICAiVG9waWMgOjogSW50ZXJuZXQgOjogV1dXL0hUVFAiLAorICAgIF0sCisgICAgZXh0X21vZHVs
ZXM9WworICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAgICAgICJhaW9xdWlj
Ll9idWZmZXIiLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVf
YXJncywKKyAgICAgICAgICAgIHNvdXJjZXM9WyJzcmMvYWlvcXVpYy9fYnVmZmVyLmMiXSwKKyAg
ICAgICAgKSwKKyAgICAgICAgc2V0dXB0b29scy5FeHRlbnNpb24oCisgICAgICAgICAgICAiYWlv
cXVpYy5fY3J5cHRvIiwKKyAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncz1leHRyYV9jb21w
aWxlX2FyZ3MsCisgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAg
c291cmNlcz1bInNyYy9haW9xdWljL19jcnlwdG8uYyJdLAorICAgICAgICApLAorICAgIF0sCisg
ICAgcGFja2FnZV9kaXI9eyIiOiAic3JjIn0sCisgICAgcGFja2FnZV9kYXRhPXsiYWlvcXVpYyI6
IFsicHkudHlwZWQiLCAiX2J1ZmZlci5weWkiLCAiX2NyeXB0by5weWkiXX0sCisgICAgcGFja2Fn
ZXM9WyJhaW9xdWljIiwgImFpb3F1aWMuYXN5bmNpbyIsICJhaW9xdWljLmgwIiwgImFpb3F1aWMu
aDMiLCAiYWlvcXVpYy5xdWljIl0sCisgICAgaW5zdGFsbF9yZXF1aXJlcz1bCisgICAgICAgICJj
ZXJ0aWZpIiwKKyAgICAgICAgImNyeXB0b2dyYXBoeSA+PSAyLjUiLAorICAgICAgICAnZGF0YWNs
YXNzZXM7IHB5dGhvbl92ZXJzaW9uIDwgIjMuNyInLAorICAgICAgICAicHlsc3FwYWNrID49IDAu
My4zLCA8IDAuNC4wIiwKKyAgICBdLAorKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA0YWNlYmVlZjgzZWE0MTg5YmZhZTRjYTlmMDgwZDIzZDg3N2E4YjcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKQEAg
LTAsMCArMSwzIEBACisjIGZsYWtlODogbm9xYQorCitmcm9tIC5hYm91dCBpbXBvcnQgX192ZXJz
aW9uX18KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZmM0ZGI4MTc1
OTBiZThkNzM2YjMyNjQ2ZDRjZmY0MWM5ZjY0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5jCkBAIC0wLDAgKzEsNDQwIEBACisjZGVmaW5lIFBZ
X1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPHN0ZGludC5o
PgorCisjZGVmaW5lIE1PRFVMRV9OQU1FICJhaW9xdWljLl9idWZmZXIiCisKK3N0YXRpYyBQeU9i
amVjdCAqQnVmZmVyUmVhZEVycm9yOworc3RhdGljIFB5T2JqZWN0ICpCdWZmZXJXcml0ZUVycm9y
OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIHVpbnQ4X3QgKmJh
c2U7CisgICAgdWludDhfdCAqZW5kOworICAgIHVpbnQ4X3QgKnBvczsKK30gQnVmZmVyT2JqZWN0
OworCisjZGVmaW5lIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIGxlbikgXAorICAgIGlmIChsZW4g
PCAwIHx8IHNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPmVuZCkgeyBcCisgICAgICAgIFB5RXJyX1Nl
dFN0cmluZyhCdWZmZXJSZWFkRXJyb3IsICJSZWFkIG91dCBvZiBib3VuZHMiKTsgXAorICAgICAg
ICByZXR1cm4gTlVMTDsgXAorICAgIH0KKworI2RlZmluZSBDSEVDS19XUklURV9CT1VORFMoc2Vs
ZiwgbGVuKSBcCisgICAgaWYgKHNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPmVuZCkgeyBcCisgICAg
ICAgIFB5RXJyX1NldFN0cmluZyhCdWZmZXJXcml0ZUVycm9yLCAiV3JpdGUgb3V0IG9mIGJvdW5k
cyIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCitzdGF0aWMgaW50CitCdWZm
ZXJfaW5pdChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dh
cmdzKQoreworICAgIGNvbnN0IGNoYXIgKmt3bGlzdFtdID0geyJjYXBhY2l0eSIsICJkYXRhIiwg
TlVMTH07CisgICAgaW50IGNhcGFjaXR5ID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpk
YXRhID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuID0gMDsKKworICAgIGlmICghUHlB
cmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpeSMiLCAoY2hhcioqKWt3
bGlzdCwgJmNhcGFjaXR5LCAmZGF0YSwgJmRhdGFfbGVuKSkKKyAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgaWYgKGRhdGEgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5iYXNlID0gbWFsbG9jKGRh
dGFfbGVuKTsKKyAgICAgICAgc2VsZi0+ZW5kID0gc2VsZi0+YmFzZSArIGRhdGFfbGVuOworICAg
ICAgICBtZW1jcHkoc2VsZi0+YmFzZSwgZGF0YSwgZGF0YV9sZW4pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNlbGYtPmJhc2UgPSBtYWxsb2MoY2FwYWNpdHkpOworICAgICAgICBzZWxmLT5lbmQg
PSBzZWxmLT5iYXNlICsgY2FwYWNpdHk7CisgICAgfQorICAgIHNlbGYtPnBvcyA9IHNlbGYtPmJh
c2U7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitCdWZmZXJfZGVhbGxvYyhCdWZm
ZXJPYmplY3QgKnNlbGYpCit7CisgICAgZnJlZShzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5
T2JqZWN0ICoKK0J1ZmZlcl9kYXRhX3NsaWNlKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3Qg
KmFyZ3MpCit7CisgICAgaW50IHN0YXJ0LCBzdG9wOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBs
ZShhcmdzLCAiaWkiLCAmc3RhcnQsICZzdG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBpZiAoc3RhcnQgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdGFydCA+IHNlbGYtPmVuZCB8fAorICAg
ICAgICBzdG9wIDwgMCB8fCBzZWxmLT5iYXNlICsgc3RvcCA+IHNlbGYtPmVuZCB8fAorICAgICAg
ICBzdG9wIDwgc3RhcnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJv
ciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisK
KyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopKHNlbGYt
PmJhc2UgKyBzdGFydCksIChzdG9wIC0gc3RhcnQpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoK
K0J1ZmZlcl9lb2YoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBp
ZiAoc2VsZi0+cG9zID09IHNlbGYtPmVuZCkKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAg
UHlfUkVUVVJOX0ZBTFNFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfYnl0
ZXMoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOwor
ICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZsZW4pKQorICAgICAgICByZXR1
cm4gTlVMTDsKKworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIGxlbik7CisKKyAgICBQeU9i
amVjdCAqbyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXNlbGYtPnBv
cywgbGVuKTsKKyAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIHJldHVybiBvOworfQorCitzdGF0
aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDgoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9i
amVjdCAqYXJncykKK3sKKyAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCAxKQorCisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKAorICAgICAgICAodWludDhfdCkoKihzZWxmLT5w
b3MrKykpCisgICAgKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxsX3VpbnQx
NihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNLX1JFQURf
Qk9VTkRTKHNlbGYsIDIpCisKKyAgICB1aW50MTZfdCB2YWx1ZSA9ICh1aW50MTZfdCkoKihzZWxm
LT5wb3MpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkoKihzZWxmLT5w
b3MgKyAxKSk7CisgICAgc2VsZi0+cG9zICs9IDI7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5z
aWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxsX3Vp
bnQzMihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNLX1JF
QURfQk9VTkRTKHNlbGYsIDQpCisKKyAgICB1aW50MzJfdCB2YWx1ZSA9ICh1aW50MzJfdCkoKihz
ZWxmLT5wb3MpKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2Vs
Zi0+cG9zICsgMSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihz
ZWxmLT5wb3MgKyAyKSkgPDwgOCB8CisgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCoo
c2VsZi0+cG9zICsgMykpOworICAgIHNlbGYtPnBvcyArPSA0OworICAgIHJldHVybiBQeUxvbmdf
RnJvbVVuc2lnbmVkTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJf
cHVsbF91aW50NjQoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBD
SEVDS19SRUFEX0JPVU5EUyhzZWxmLCA4KQorCisgICAgdWludDY0X3QgdmFsdWUgPSAodWludDY0
X3QpKCooc2VsZi0+cG9zKSkgPDwgNTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDEpKSA8PCA0OCB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
NjRfdCkoKihzZWxmLT5wb3MgKyAzKSkgPDwgMzIgfAorICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDQpKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgICAgICAo
dWludDY0X3QpKCooc2VsZi0+cG9zICsgNSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAgICAg
ICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA2KSkgPDwgOCB8CisgICAgICAgICAgICAgICAgICAg
ICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNykpOworICAgIHNlbGYtPnBvcyArPSA4OworICAg
IHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOworfQorCitzdGF0aWMg
UHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludF92YXIoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9i
amVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBDSEVDS19SRUFEX0JPVU5E
UyhzZWxmLCAxKQorICAgIHN3aXRjaCAoKihzZWxmLT5wb3MpID4+IDYpIHsKKyAgICBjYXNlIDA6
CisgICAgICAgIHZhbHVlID0gKihzZWxmLT5wb3MrKykgJiAweDNGOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDE6CisgICAgICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDIpCisgICAgICAg
IHZhbHVlID0gKHVpbnQxNl90KSgqKHNlbGYtPnBvcykgJiAweDNGKSA8PCA4IHwKKyAgICAgICAg
ICAgICAgICAodWludDE2X3QpKCooc2VsZi0+cG9zICsgMSkpOworICAgICAgICBzZWxmLT5wb3Mg
Kz0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBDSEVDS19SRUFEX0JP
VU5EUyhzZWxmLCA0KQorICAgICAgICB2YWx1ZSA9ICh1aW50MzJfdCkoKihzZWxmLT5wb3MpICYg
MHgzRikgPDwgMjQgfAorICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5wb3MgKyAx
KSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5wb3MgKyAyKSkg
PDwgOCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDMpKTsKKyAg
ICAgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgIHZhbHVlID0gKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcykgJiAweDNGKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDEpKSA8PCA0OCB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgq
KHNlbGYtPnBvcyArIDIpKSA8PCA0MCB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNl
bGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYt
PnBvcyArIDQpKSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBv
cyArIDUpKSA8PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyAr
IDYpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNykp
OworICAgICAgICBzZWxmLT5wb3MgKz0gODsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlP
YmplY3QgKgorQnVmZmVyX3B1c2hfYnl0ZXMoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq
YXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIFB5X3NzaXplX3Qg
ZGF0YV9sZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5IyIsICZkYXRhLCAm
ZGF0YV9sZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5E
UyhzZWxmLCBkYXRhX2xlbikKKworICAgIG1lbWNweShzZWxmLT5wb3MsIGRhdGEsIGRhdGFfbGVu
KTsKKyAgICBzZWxmLT5wb3MgKz0gZGF0YV9sZW47CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisK
K3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50OChCdWZmZXJPYmplY3QgKnNlbGYs
IFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ4X3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlKGFyZ3MsICJCIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgMSkKKworICAgICooc2VsZi0+cG9zKyspID0gdmFs
dWU7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJf
cHVzaF91aW50MTYoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1
aW50MTZfdCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkgiLCAmdmFs
dWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxm
LCAyKQorCisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gOCk7CisgICAgKihzZWxmLT5w
b3MrKykgPSB2YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0
ICoKK0J1ZmZlcl9wdXNoX3VpbnQzMihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQoreworICAgIHVpbnQzMl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdz
LCAiSSIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVf
Qk9VTkRTKHNlbGYsIDQpCisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMjQpOworICAg
ICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDE2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2
YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9O
T05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1c2hfdWludDY0KEJ1ZmZlck9i
amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJLIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgOCkKKyAgICAqKHNlbGYtPnBv
cysrKSA9ICh2YWx1ZSA+PiA1Nik7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDgp
OworICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQwKTsKKyAgICAqKHNlbGYtPnBvcysr
KSA9ICh2YWx1ZSA+PiAzMik7CisgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMjQpOwor
ICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDE2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAgIFB5X1JFVFVS
Tl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1c2hfdWludF92YXIoQnVm
ZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsK
KyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAgICBy
ZXR1cm4gTlVMTDsKKworICAgIGlmICh2YWx1ZSA8PSAweDNGKSB7CisgICAgICAgIENIRUNLX1dS
SVRFX0JPVU5EUyhzZWxmLCAxKQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOworICAg
ICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDB4M0ZGRikgewor
ICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgMikKKyAgICAgICAgKihzZWxmLT5wb3Mr
KykgPSAodmFsdWUgPj4gOCkgfCAweDQwOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVl
OworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDB4M0ZG
RkZGRkYpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDQpCisgICAgICAgICoo
c2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDI0KSB8IDB4ODA7CisgICAgICAgICooc2VsZi0+cG9z
KyspID0gKHZhbHVlID4+IDE2KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4g
OCk7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgICAgIFB5X1JFVFVSTl9O
T05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGRkZGRkZGRkZGRkZGKSB7CisgICAg
ICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA1NikgfCAweEMwOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+
PiA0OCk7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQwKTsKKyAgICAgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMzIpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiAyNCk7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDE2KTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gOCk7CisgICAgICAgICooc2VsZi0+
cG9zKyspID0gdmFsdWU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW50ZWdlciBpcyB0b28g
YmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIik7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9zZWVrKEJ1ZmZlck9iamVj
dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvczsKKyAgICBpZiAoIVB5QXJn
X1BhcnNlVHVwbGUoYXJncywgImkiLCAmcG9zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBpZiAocG9zIDwgMCB8fCBzZWxmLT5iYXNlICsgcG9zID4gc2VsZi0+ZW5kKSB7CisgICAgICAg
IFB5RXJyX1NldFN0cmluZyhCdWZmZXJSZWFkRXJyb3IsICJTZWVrIG91dCBvZiBib3VuZHMiKTsK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZi0+cG9zID0gc2VsZi0+YmFz
ZSArIHBvczsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1
ZmZlcl90ZWxsKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MgLSBzZWxmLT5iYXNlKTsKK30KKworc3Rh
dGljIFB5TWV0aG9kRGVmIEJ1ZmZlcl9tZXRob2RzW10gPSB7CisgICAgeyJkYXRhX3NsaWNlIiwg
KFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9kYXRhX3NsaWNlLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7
ImVvZiIsIChQeUNGdW5jdGlvbilCdWZmZXJfZW9mLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7
InB1bGxfYnl0ZXMiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfYnl0ZXMsIE1FVEhfVkFSQVJH
UywgIlB1bGwgYnl0ZXMuIn0sCisgICAgeyJwdWxsX3VpbnQ4IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZl
cl9wdWxsX3VpbnQ4LCBNRVRIX1ZBUkFSR1MsICJQdWxsIGFuIDgtYml0IHVuc2lnbmVkIGludGVn
ZXIuIn0sCisgICAgeyJwdWxsX3VpbnQxNiIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50
MTYsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAg
ICB7InB1bGxfdWludDMyIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQzMiwgTUVUSF9W
QVJBUkdTLCAiUHVsbCBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVsbF91
aW50NjQiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDY0LCBNRVRIX1ZBUkFSR1MsICJQ
dWxsIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnRfdmFyIiwg
KFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnRfdmFyLCBNRVRIX1ZBUkFSR1MsICJQdWxsIGEg
UVVJQyB2YXJpYWJsZS1sZW5ndGggdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfYnl0
ZXMiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfYnl0ZXMsIE1FVEhfVkFSQVJHUywgIlB1c2gg
Ynl0ZXMuIn0sCisgICAgeyJwdXNoX3VpbnQ4IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3Vp
bnQ4LCBNRVRIX1ZBUkFSR1MsICJQdXNoIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisg
ICAgeyJwdXNoX3VpbnQxNiIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50MTYsIE1FVEhf
VkFSQVJHUywgIlB1c2ggYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hf
dWludDMyIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQzMiwgTUVUSF9WQVJBUkdTLCAi
UHVzaCBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50NjQiLCAo
UHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDY0LCBNRVRIX1ZBUkFSR1MsICJQdXNoIGEgNjQt
Yml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnRfdmFyIiwgKFB5Q0Z1bmN0
aW9uKUJ1ZmZlcl9wdXNoX3VpbnRfdmFyLCBNRVRIX1ZBUkFSR1MsICJQdXNoIGEgUVVJQyB2YXJp
YWJsZS1sZW5ndGggdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rp
b24pQnVmZmVyX3NlZWssIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsidGVsbCIsIChQeUNGdW5j
dGlvbilCdWZmZXJfdGVsbCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAge05VTEx9Cit9OworCitz
dGF0aWMgUHlPYmplY3QqCitCdWZmZXJfY2FwYWNpdHlfZ2V0dGVyKEJ1ZmZlck9iamVjdCogc2Vs
Ziwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+
ZW5kIC0gc2VsZi0+YmFzZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0J1ZmZlcl9kYXRhX2dl
dHRlcihCdWZmZXJPYmplY3QqIHNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlC
eXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YmFzZSwgc2VsZi0+cG9z
IC0gc2VsZi0+YmFzZSk7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBCdWZmZXJfZ2V0c2V0W10g
PSB7CisgICAgeyJjYXBhY2l0eSIsIChnZXR0ZXIpIEJ1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIsIE5V
TEwsICIiLCBOVUxMIH0sCisgICAgeyJkYXRhIiwgKGdldHRlcikgQnVmZmVyX2RhdGFfZ2V0dGVy
LCBOVUxMLCAiIiwgTlVMTCB9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVj
dCBCdWZmZXJUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAg
IE1PRFVMRV9OQU1FICIuQnVmZmVyIiwgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBz
aXplb2YoQnVmZmVyT2JqZWN0KSwgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwor
ICAgIChkZXN0cnVjdG9yKUJ1ZmZlcl9kZWFsbG9jLCAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICov
CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICov
CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVy
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2Vx
dWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9h
c19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
dHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf
c3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0
YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9z
ZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8q
IHRwX2ZsYWdzICovCisgICAgIkJ1ZmZlciBvYmplY3RzIiwgICAgICAgICAgICAgICAgICAgLyog
dHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf
dHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBCdWZmZXJfbWV0aG9kcywgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIEJ1ZmZlcl9nZXRzZXQsICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylCdWZmZXJfaW5p
dCwgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworfTsKKworCitzdGF0aWMgc3RydWN0IFB5TW9k
dWxlRGVmIG1vZHVsZWRlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgTU9E
VUxFX05BTUUsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgIkEgZmFz
dGVyIGJ1ZmZlci4iLCAgICAgICAgICAgICAgICAgLyogbV9kb2MgKi8KKyAgICAtMSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3JlbG9hZCAqLworICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCisKK1B5TU9ESU5JVF9GVU5D
CitQeUluaXRfX2J1ZmZlcih2b2lkKQoreworICAgIFB5T2JqZWN0KiBtOworCisgICAgbSA9IFB5
TW9kdWxlX0NyZWF0ZSgmbW9kdWxlZGVmKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICBy
ZXR1cm4gTlVMTDsKKworICAgIEJ1ZmZlclJlYWRFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbihN
T0RVTEVfTkFNRSAiLkJ1ZmZlclJlYWRFcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOwor
ICAgIFB5X0lOQ1JFRihCdWZmZXJSZWFkRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdCht
LCAiQnVmZmVyUmVhZEVycm9yIiwgQnVmZmVyUmVhZEVycm9yKTsKKworICAgIEJ1ZmZlcldyaXRl
RXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUgIi5CdWZmZXJXcml0ZUVycm9y
IiwgUHlFeGNfVmFsdWVFcnJvciwgTlVMTCk7CisgICAgUHlfSU5DUkVGKEJ1ZmZlcldyaXRlRXJy
b3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQnVmZmVyV3JpdGVFcnJvciIsIEJ1ZmZl
cldyaXRlRXJyb3IpOworCisgICAgQnVmZmVyVHlwZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05l
dzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZCdWZmZXJUeXBlKSA8IDApCisgICAgICAgIHJldHVy
biBOVUxMOworICAgIFB5X0lOQ1JFRigmQnVmZmVyVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2Jq
ZWN0KG0sICJCdWZmZXIiLCAoUHlPYmplY3QgKikmQnVmZmVyVHlwZSk7CisKKyAgICByZXR1cm4g
bTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLnB5aSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLnB5aQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmU0M2Nj
YTNhNTE4ZmY3NWUyMTNkM2RlZGY1OGIxYjBjNzdjNjBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCkBAIC0wLDAgKzEsMjcgQEAKK2Zyb20g
dHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitjbGFzcyBCdWZmZXJSZWFkRXJyb3IoVmFsdWVFcnJv
cik6IC4uLgorY2xhc3MgQnVmZmVyV3JpdGVFcnJvcihWYWx1ZUVycm9yKTogLi4uCisKK2NsYXNz
IEJ1ZmZlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHk6IE9wdGlvbmFsW2ludF0g
PSAwLCBkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lKTogLi4uCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIGNhcGFjaXR5KHNlbGYpIC0+IGludDogLi4uCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGRhdGEoc2VsZikgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBkYXRhX3NsaWNlKHNlbGYsIHN0YXJ0
OiBpbnQsIGVuZDogaW50KSAtPiBieXRlczogLi4uCisgICAgZGVmIGVvZihzZWxmKSAtPiBib29s
OiAuLi4KKyAgICBkZWYgc2VlayhzZWxmLCBwb3M6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVm
IHRlbGwoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF9ieXRlcyhzZWxmLCBsZW5ndGg6
IGludCkgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBwdWxsX3VpbnQ4KHNlbGYpIC0+IGludDogLi4u
CisgICAgZGVmIHB1bGxfdWludDE2KHNlbGYpIC0+IGludDogLi4uCisgICAgZGVmIHB1bGxfdWlu
dDMyKHNlbGYpIC0+IGludDogLi4uCisgICAgZGVmIHB1bGxfdWludDY0KHNlbGYpIC0+IGludDog
Li4uCisgICAgZGVmIHB1bGxfdWludF92YXIoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVz
aF9ieXRlcyhzZWxmLCB2YWx1ZTogYnl0ZXMpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3Vp
bnQ4KHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQxNihz
ZWxmLCB2YWx1ZTogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgcHVzaF91aW50MzIoc2VsZiwg
djogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgcHVzaF91aW50NjQoc2VsZiwgdjogaW50KSAt
PiBOb25lOiAuLi4KKyAgICBkZWYgcHVzaF91aW50X3ZhcihzZWxmLCB2YWx1ZTogaW50KSAtPiBO
b25lOiAuLi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMTU1NGQ0
YjIxM2NkMDdmY2VkZjhhMzkzMDRjZDYyMDA0NGYxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5jCkBAIC0wLDAgKzEsNDU1IEBACisjZGVmaW5l
IFBZX1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG9wZW5z
c2wvZXJyLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKworI2RlZmluZSBNT0RVTEVfTkFN
RSAiYWlvcXVpYy5fY3J5cHRvIgorCisjZGVmaW5lIEFFQURfS0VZX0xFTkdUSF9NQVggMzIKKyNk
ZWZpbmUgQUVBRF9OT05DRV9MRU5HVEggMTIKKyNkZWZpbmUgQUVBRF9UQUdfTEVOR1RIIDE2CisK
KyNkZWZpbmUgUEFDS0VUX0xFTkdUSF9NQVggMTUwMAorI2RlZmluZSBQQUNLRVRfTlVNQkVSX0xF
TkdUSF9NQVggNAorI2RlZmluZSBTQU1QTEVfTEVOR1RIIDE2CisKKyNkZWZpbmUgQ0hFQ0tfUkVT
VUxUKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisgICAgICAgIEVSUl9jbGVhcl9lcnJv
cigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9wZW5TU0wgY2Fs
bCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0KKworI2RlZmluZSBD
SEVDS19SRVNVTFRfQ1RPUihleHByKSBcCisgICAgaWYgKCEoZXhwcikpIHsgXAorICAgICAgICBF
UlJfY2xlYXJfZXJyb3IoKTsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3Is
ICJPcGVuU1NMIGNhbGwgZmFpbGVkIik7IFwKKyAgICAgICAgcmV0dXJuIC0xOyBcCisgICAgfQor
CitzdGF0aWMgUHlPYmplY3QgKkNyeXB0b0Vycm9yOworCisvKiBBRUFEICovCisKK3R5cGVkZWYg
c3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmRlY3J5cHRf
Y3R4OworICAgIEVWUF9DSVBIRVJfQ1RYICplbmNyeXB0X2N0eDsKKyAgICB1bnNpZ25lZCBjaGFy
IGJ1ZmZlcltQQUNLRVRfTEVOR1RIX01BWF07CisgICAgdW5zaWduZWQgY2hhciBrZXlbQUVBRF9L
RVlfTEVOR1RIX01BWF07CisgICAgdW5zaWduZWQgY2hhciBpdltBRUFEX05PTkNFX0xFTkdUSF07
CisgICAgdW5zaWduZWQgY2hhciBub25jZVtBRUFEX05PTkNFX0xFTkdUSF07Cit9IEFFQURPYmpl
Y3Q7CisKK3N0YXRpYyBFVlBfQ0lQSEVSX0NUWCAqCitjcmVhdGVfY3R4KGNvbnN0IEVWUF9DSVBI
RVIgKmNpcGhlciwgaW50IGtleV9sZW5ndGgsIGludCBvcGVyYXRpb24pCit7CisgICAgRVZQX0NJ
UEhFUl9DVFggKmN0eDsKKyAgICBpbnQgcmVzOworCisgICAgY3R4ID0gRVZQX0NJUEhFUl9DVFhf
bmV3KCk7CisgICAgQ0hFQ0tfUkVTVUxUKGN0eCAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBo
ZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMLCBvcGVyYXRpb24pOworICAg
IENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9zZXRf
a2V5X2xlbmd0aChjdHgsIGtleV9sZW5ndGgpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7
CisKKyAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQ0NNX1NFVF9J
VkxFTiwgQUVBRF9OT05DRV9MRU5HVEgsIE5VTEwpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0g
MCk7CisKKyAgICByZXR1cm4gY3R4OworfQorCitzdGF0aWMgaW50CitBRUFEX2luaXQoQUVBRE9i
amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgY29u
c3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCAqaXY7
CisgICAgUHlfc3NpemVfdCBjaXBoZXJfbmFtZV9sZW4sIGtleV9sZW4sIGl2X2xlbjsKKworICAg
IGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I3kjIiwgJmNpcGhlcl9uYW1lLCAmY2lw
aGVyX25hbWVfbGVuLCAma2V5LCAma2V5X2xlbiwgJml2LCAmaXZfbGVuKSkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRfY2lw
aGVyYnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7CisgICAg
ICAgIFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVzIiwg
Y2lwaGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChrZXlfbGVu
ID4gQUVBRF9LRVlfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRv
RXJyb3IsICJJbnZhbGlkIGtleSBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K
KyAgICBpZiAoaXZfbGVuID4gQUVBRF9OT05DRV9MRU5HVEgpIHsKKyAgICAgICAgUHlFcnJfU2V0
U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBpdiBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5rZXksIGtleSwga2V5X2xlbik7CisgICAg
bWVtY3B5KHNlbGYtPml2LCBpdiwgaXZfbGVuKTsKKworICAgIHNlbGYtPmRlY3J5cHRfY3R4ID0g
Y3JlYXRlX2N0eChldnBfY2lwaGVyLCBrZXlfbGVuLCAwKTsKKyAgICBDSEVDS19SRVNVTFRfQ1RP
UihzZWxmLT5kZWNyeXB0X2N0eCAhPSAwKTsKKworICAgIHNlbGYtPmVuY3J5cHRfY3R4ID0gY3Jl
YXRlX2N0eChldnBfY2lwaGVyLCBrZXlfbGVuLCAxKTsKKyAgICBDSEVDS19SRVNVTFRfQ1RPUihz
ZWxmLT5lbmNyeXB0X2N0eCAhPSAwKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9p
ZAorQUVBRF9kZWFsbG9jKEFFQURPYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9DVFhf
ZnJlZShzZWxmLT5kZWNyeXB0X2N0eCk7CisgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxmLT5l
bmNyeXB0X2N0eCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZGVjcnlwdChBRUFET2Jq
ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpk
YXRhLCAqYXNzb2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVkX2xl
bjsKKyAgICBpbnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisKKyAg
ICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xlbiwg
JmFzc29jaWF0ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisKKyAgICBpZiAoZGF0YV9sZW4gPCBBRUFEX1RBR19MRU5HVEggfHwgZGF0YV9sZW4gPiBQQUNL
RVRfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJJ
bnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor
ICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURfTk9OQ0VfTEVOR1RIKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBzZWxmLT5ub25jZVtBRUFE
X05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4gPj4gOCAqIGkpOworICAgIH0K
KworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoc2VsZi0+ZGVjcnlwdF9jdHgsIEVWUF9D
VFJMX0NDTV9TRVRfVEFHLCBBRUFEX1RBR19MRU5HVEgsICh2b2lkKikoZGF0YSArIChkYXRhX2xl
biAtIEFFQURfVEFHX0xFTkdUSCkpKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisg
ICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsIE5VTEws
IHNlbGYtPmtleSwgc2VsZi0+bm9uY2UsIDApOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7
CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmRlY3J5cHRfY3R4LCBOVUxMLCAm
b3V0bGVuLCBhc3NvY2lhdGVkLCBhc3NvY2lhdGVkX2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUKHJl
cyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgs
IHNlbGYtPmJ1ZmZlciwgJm91dGxlbiwgZGF0YSwgZGF0YV9sZW4gLSBBRUFEX1RBR19MRU5HVEgp
OworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyRmlu
YWxfZXgoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRsZW4yKTsKKyAgICBpZiAocmVzID09
IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiUGF5bG9hZCBkZWNy
eXB0aW9uIGZhaWxlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1
cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBv
dXRsZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitBRUFEX2VuY3J5cHQoQUVBRE9iamVjdCAq
c2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwg
KmFzc29jaWF0ZWQ7CisgICAgUHlfc3NpemVfdCBkYXRhX2xlbiwgYXNzb2NpYXRlZF9sZW47Cisg
ICAgaW50IG91dGxlbiwgb3V0bGVuMiwgcmVzOworICAgIHVpbnQ2NF90IHBuOworCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjSyIsICZkYXRhLCAmZGF0YV9sZW4sICZhc3Nv
Y2lhdGVkLCAmYXNzb2NpYXRlZF9sZW4sICZwbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisg
ICAgaWYgKGRhdGFfbGVuID4gUEFDS0VUX0xFTkdUSF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0
U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBwYXlsb2FkIGxlbmd0aCIpOworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1jcHkoc2VsZi0+bm9uY2UsIHNlbGYtPml2LCBB
RUFEX05PTkNFX0xFTkdUSCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAg
ICAgICAgc2VsZi0+bm9uY2VbQUVBRF9OT05DRV9MRU5HVEggLSAxIC0gaV0gXj0gKHVpbnQ4X3Qp
KHBuID4+IDggKiBpKTsKKyAgICB9CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxm
LT5lbmNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2VsZi0+a2V5LCBzZWxmLT5ub25jZSwgMSk7Cisg
ICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUo
c2VsZi0+ZW5jcnlwdF9jdHgsIE5VTEwsICZvdXRsZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRf
bGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
clVwZGF0ZShzZWxmLT5lbmNyeXB0X2N0eCwgc2VsZi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBk
YXRhX2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9D
aXBoZXJGaW5hbF9leChzZWxmLT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIENI
RUNLX1JFU1VMVChyZXMgIT0gMCAmJiBvdXRsZW4yID09IDApOworCisgICAgcmVzID0gRVZQX0NJ
UEhFUl9DVFhfY3RybChzZWxmLT5lbmNyeXB0X2N0eCwgRVZQX0NUUkxfQ0NNX0dFVF9UQUcsIEFF
QURfVEFHX0xFTkdUSCwgc2VsZi0+YnVmZmVyICsgb3V0bGVuKTsKKyAgICBDSEVDS19SRVNVTFQo
cmVzICE9IDApOworCisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0
IGNoYXIqKXNlbGYtPmJ1ZmZlciwgb3V0bGVuICsgQUVBRF9UQUdfTEVOR1RIKTsKK30KKworc3Rh
dGljIFB5TWV0aG9kRGVmIEFFQURfbWV0aG9kc1tdID0geworICAgIHsiZGVjcnlwdCIsIChQeUNG
dW5jdGlvbilBRUFEX2RlY3J5cHQsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsiZW5jcnlwdCIs
IChQeUNGdW5jdGlvbilBRUFEX2VuY3J5cHQsIE1FVEhfVkFSQVJHUywgIiJ9LAorCisgICAge05V
TEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEFFQURUeXBlID0geworICAgIFB5VmFyT2Jq
ZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRFVMRV9OQU1FICIuQUVBRCIsICAgICAgICAg
ICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQUVBRE9iamVjdCksICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUFFQURfZGVhbGxvYywg
ICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1Nf
REVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgIkFFQUQgb2JqZWN0
cyIsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBB
RUFEX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAq
LworICAgIChpbml0cHJvYylBRUFEX2luaXQsICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwor
fTsKKworLyogSGVhZGVyUHJvdGVjdGlvbiAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlP
YmplY3RfSEVBRAorICAgIEVWUF9DSVBIRVJfQ1RYICpjdHg7CisgICAgaW50IGlzX2NoYWNoYTIw
OworICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNp
Z25lZCBjaGFyIG1hc2tbMzFdOworICAgIHVuc2lnbmVkIGNoYXIgemVyb1s1XTsKK30gSGVhZGVy
UHJvdGVjdGlvbk9iamVjdDsKKworc3RhdGljIGludAorSGVhZGVyUHJvdGVjdGlvbl9pbml0KEhl
YWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dh
cmdzKQoreworICAgIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lOworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbjsKKyAg
ICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjIiwgJmNp
cGhlcl9uYW1lLCAmY2lwaGVyX25hbWVfbGVuLCAma2V5LCAma2V5X2xlbikpCisgICAgICAgIHJl
dHVybiAtMTsKKworICAgIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9jaXBoZXIgPSBFVlBfZ2V0X2Np
cGhlcmJ5bmFtZShjaXBoZXJfbmFtZSk7CisgICAgaWYgKGV2cF9jaXBoZXIgPT0gMCkgeworICAg
ICAgICBQeUVycl9Gb3JtYXQoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGNpcGhlciBuYW1lOiAlcyIs
IGNpcGhlcl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1lbXNldChz
ZWxmLT5tYXNrLCAwLCBzaXplb2Yoc2VsZi0+bWFzaykpOworICAgIG1lbXNldChzZWxmLT56ZXJv
LCAwLCBzaXplb2Yoc2VsZi0+emVybykpOworICAgIHNlbGYtPmlzX2NoYWNoYTIwID0gY2lwaGVy
X25hbWVfbGVuID09IDggJiYgbWVtY21wKGNpcGhlcl9uYW1lLCAiY2hhY2hhMjAiLCA4KSA9PSAw
OworCisgICAgc2VsZi0+Y3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisgICAgQ0hFQ0tfUkVT
VUxUX0NUT1Ioc2VsZi0+Y3R4ICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgo
c2VsZi0+Y3R4LCBldnBfY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMLCAxKTsKKyAgICBDSEVDS19S
RVNVTFRfQ1RPUihyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5
X2xlbmd0aChzZWxmLT5jdHgsIGtleV9sZW4pOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAh
PSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVM
TCwga2V5LCBOVUxMLCAxKTsKKyAgICBDSEVDS19SRVNVTFRfQ1RPUihyZXMgIT0gMCk7CisKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0hlYWRlclByb3RlY3Rpb25fZGVhbGxvYyhI
ZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmKQoreworICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUo
c2VsZi0+Y3R4KTsKK30KKworc3RhdGljIGludCBIZWFkZXJQcm90ZWN0aW9uX21hc2soSGVhZGVy
UHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgY29uc3QgdW5zaWduZWQgY2hhciogc2FtcGxlKQorewor
ICAgIGludCBvdXRsZW47CisgICAgaWYgKHNlbGYtPmlzX2NoYWNoYTIwKSB7CisgICAgICAgIHJl
dHVybiBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5jdHgsIE5VTEwsIE5VTEwsIE5VTEwsIHNhbXBs
ZSwgMSkgJiYKKyAgICAgICAgICAgICAgIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBzZWxm
LT5tYXNrLCAmb3V0bGVuLCBzZWxmLT56ZXJvLCBzaXplb2Yoc2VsZi0+emVybykpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHJldHVybiBFVlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmN0eCwgc2VsZi0+
bWFzaywgJm91dGxlbiwgc2FtcGxlLCBTQU1QTEVfTEVOR1RIKTsKKyAgICB9Cit9CisKK3N0YXRp
YyBQeU9iamVjdCoKK0hlYWRlclByb3RlY3Rpb25fYXBwbHkoSGVhZGVyUHJvdGVjdGlvbk9iamVj
dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaGVh
ZGVyLCAqcGF5bG9hZDsKKyAgICBQeV9zc2l6ZV90IGhlYWRlcl9sZW4sIHBheWxvYWRfbGVuOwor
ICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMiLCAm
aGVhZGVyLCAmaGVhZGVyX2xlbiwgJnBheWxvYWQsICZwYXlsb2FkX2xlbikpCisgICAgICAgIHJl
dHVybiBOVUxMOworCisgICAgaW50IHBuX2xlbmd0aCA9IChoZWFkZXJbMF0gJiAweDAzKSArIDE7
CisgICAgaW50IHBuX29mZnNldCA9IGhlYWRlcl9sZW4gLSBwbl9sZW5ndGg7CisKKyAgICByZXMg
PSBIZWFkZXJQcm90ZWN0aW9uX21hc2soc2VsZiwgcGF5bG9hZCArIFBBQ0tFVF9OVU1CRVJfTEVO
R1RIX01BWCAtIHBuX2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAg
IG1lbWNweShzZWxmLT5idWZmZXIsIGhlYWRlciwgaGVhZGVyX2xlbik7CisgICAgbWVtY3B5KHNl
bGYtPmJ1ZmZlciArIGhlYWRlcl9sZW4sIHBheWxvYWQsIHBheWxvYWRfbGVuKTsKKworICAgIGlm
IChzZWxmLT5idWZmZXJbMF0gJiAweDgwKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBePSBz
ZWxmLT5tYXNrWzBdICYgMHgwRjsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmLT5idWZmZXJb
MF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MUY7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zmc2V0ICsg
aV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgfQorCisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJv
bVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXNlbGYtPmJ1ZmZlciwgaGVhZGVyX2xlbiArIHBh
eWxvYWRfbGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9yZW1v
dmUoSGVhZGVyUHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqcGFja2V0OworICAgIFB5X3NzaXplX3QgcGFja2V0X2xlbjsK
KyAgICBpbnQgcG5fb2Zmc2V0LCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJn
cywgInkjSSIsICZwYWNrZXQsICZwYWNrZXRfbGVuLCAmcG5fb2Zmc2V0KSkKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisKKyAgICByZXMgPSBIZWFkZXJQcm90ZWN0aW9uX21hc2soc2VsZiwgcGFja2V0
ICsgcG5fb2Zmc2V0ICsgUEFDS0VUX05VTUJFUl9MRU5HVEhfTUFYKTsKKyAgICBDSEVDS19SRVNV
TFQocmVzICE9IDApOworCisgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwgcGFja2V0LCBwbl9vZmZz
ZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworCisgICAgaWYgKHNlbGYtPmJ1ZmZlclsw
XSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0gJiAw
eDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBePSBzZWxmLT5tYXNr
WzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKHNlbGYtPmJ1ZmZlclsw
XSAmIDB4MDMpICsgMTsKKyAgICB1aW50MzJfdCBwbl90cnVuY2F0ZWQgPSAwOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcG5fbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyW3Bu
X29mZnNldCArIGldIF49IHNlbGYtPm1hc2tbMSArIGldOworICAgICAgICBwbl90cnVuY2F0ZWQg
PSBzZWxmLT5idWZmZXJbcG5fb2Zmc2V0ICsgaV0gfCAocG5fdHJ1bmNhdGVkIDw8IDgpOworICAg
IH0KKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ5I2kiLCBzZWxmLT5idWZmZXIsIHBuX29m
ZnNldCArIHBuX2xlbmd0aCwgcG5fdHJ1bmNhdGVkKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVm
IEhlYWRlclByb3RlY3Rpb25fbWV0aG9kc1tdID0geworICAgIHsiYXBwbHkiLCAoUHlDRnVuY3Rp
b24pSGVhZGVyUHJvdGVjdGlvbl9hcHBseSwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJyZW1v
dmUiLCAoUHlDRnVuY3Rpb24pSGVhZGVyUHJvdGVjdGlvbl9yZW1vdmUsIE1FVEhfVkFSQVJHUywg
IiJ9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBIZWFkZXJQcm90ZWN0
aW9uVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICBNT0RV
TEVfTkFNRSAiLkhlYWRlclByb3RlY3Rpb24iLCAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9m
KEhlYWRlclByb3RlY3Rpb25PYmplY3QpLCAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAo
ZGVzdHJ1Y3RvcilIZWFkZXJQcm90ZWN0aW9uX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1
ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Fz
X21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9z
dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRh
dHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Nl
dGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf
YXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyog
dHBfZmxhZ3MgKi8KKyAgICAiSGVhZGVyUHJvdGVjdGlvbiBvYmplY3RzIiwgICAgICAgICAvKiB0
cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90
cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf
cmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEhlYWRlclByb3RlY3Rpb25fbWV0aG9kcywgICAg
ICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUhlYWRlclByb3Rl
Y3Rpb25faW5pdCwgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1
bGVEZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICBNT0RV
TEVfTkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICAiQSBmYXN0
ZXIgYnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQ
eUluaXRfX2NyeXB0byh2b2lkKQoreworICAgIFB5T2JqZWN0KiBtOworCisgICAgbSA9IFB5TW9k
dWxlX0NyZWF0ZSgmbW9kdWxlZGVmKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1
cm4gTlVMTDsKKworICAgIENyeXB0b0Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVMRV9O
QU1FICIuQ3J5cHRvRXJyb3IiLCBQeUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNS
RUYoQ3J5cHRvRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ3J5cHRvRXJyb3Ii
LCBDcnlwdG9FcnJvcik7CisKKyAgICBBRUFEVHlwZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05l
dzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZBRUFEVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICBQeV9JTkNSRUYoJkFFQURUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3Qo
bSwgIkFFQUQiLCAoUHlPYmplY3QgKikmQUVBRFR5cGUpOworCisgICAgSGVhZGVyUHJvdGVjdGlv
blR5cGUudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgm
SGVhZGVyUHJvdGVjdGlvblR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlf
SU5DUkVGKCZIZWFkZXJQcm90ZWN0aW9uVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0s
ICJIZWFkZXJQcm90ZWN0aW9uIiwgKFB5T2JqZWN0ICopJkhlYWRlclByb3RlY3Rpb25UeXBlKTsK
KworICAgIC8vIGVuc3VyZSByZXF1aXJlZCBjaXBoZXJzIGFyZSBpbml0aWFsaXNlZAorICAgIEVW
UF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2VjYigpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBf
YWVzXzEyOF9nY20oKSk7CisgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZWNiKCkpOwor
ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2djbSgpKTsKKworICAgIHJldHVybiBtOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYzUyMzBkOTky
ZTdmMjE5YzkzYmVjM2NiNDU3MjE0YzI1MThjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKQEAgLTAsMCArMSwxNyBAQAorZnJvbSB0eXBp
bmcgaW1wb3J0IFR1cGxlCisKK2NsYXNzIEFFQUQ6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNp
cGhlcl9uYW1lOiBieXRlcywga2V5OiBieXRlcywgaXY6IGJ5dGVzKTogLi4uCisgICAgZGVmIGRl
Y3J5cHQoCisgICAgICAgIHNlbGYsIGRhdGE6IGJ5dGVzLCBhc3NvY2lhdGVkX2RhdGE6IGJ5dGVz
LCBwYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW5jcnlw
dCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0YTogYnl0ZXMsIHBh
Y2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorCitjbGFzcyBDcnlwdG9FcnJv
cihWYWx1ZUVycm9yKTogLi4uCisKK2NsYXNzIEhlYWRlclByb3RlY3Rpb246CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNpcGhlcl9uYW1lOiBieXRlcywga2V5OiBieXRlcyk6IC4uLgorICAgIGRl
ZiBhcHBseShzZWxmLCBwbGFpbl9oZWFkZXI6IGJ5dGVzLCBwcm90ZWN0ZWRfcGF5bG9hZDogYnl0
ZXMpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgcmVtb3ZlKHNlbGYsIHBhY2tldDogYnl0ZXMsIGVu
Y3J5cHRlZF9vZmZzZXQ6IGludCkgLT4gVHVwbGVbYnl0ZXMsIGludF06IC4uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2Fib3V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyY2Q4ZjMzZDY1ZGNiZjIzOTdkMTJjODNjNjUx
Y2M4OTllOTE1NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YWJvdXQucHkKQEAgLTAsMCArMSw3IEBACitfX2F1dGhvcl9fID0gIkplcmVteSBMYWluw6kiCitf
X2VtYWlsX18gPSAiamVyZW15LmxhaW5lQG00eC5vcmciCitfX2xpY2Vuc2VfXyA9ICJCU0QiCitf
X3N1bW1hcnlfXyA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiBRVUlDIGFuZCBIVFRQLzMiCitfX3Rp
dGxlX18gPSAiYWlvcXVpYyIKK19fdXJpX18gPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpb3J0Yy9h
aW9xdWljIgorX192ZXJzaW9uX18gPSAiMC44LjciCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvYXN5bmNpby9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9hc3luY2lvL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmZGE2OWQ4OTkzNGU4Zjg3YTIxYzVi
OThlOTdhMTE0OTEyYmU4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMgQEAKK2Zyb20gLmNsaWVudCBp
bXBvcnQgY29ubmVjdCAgIyBub3FhCitmcm9tIC5wcm90b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rp
b25Qcm90b2NvbCAgIyBub3FhCitmcm9tIC5zZXJ2ZXIgaW1wb3J0IHNlcnZlICAjIG5vcWEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NsaWVudC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NsaWVudC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mjkz
N2U5ZTg5MmJmZTc2Y2QyYzJmYzdjYjNhNmU0ZmY3MzkzM2RiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5CkBAIC0wLDAgKzEsOTQg
QEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgaXBhZGRyZXNzCitpbXBvcnQgc29ja2V0CitpbXBv
cnQgc3lzCitmcm9tIHR5cGluZyBpbXBvcnQgQXN5bmNHZW5lcmF0b3IsIENhbGxhYmxlLCBPcHRp
b25hbCwgY2FzdAorCitmcm9tIC4ucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmln
dXJhdGlvbgorZnJvbSAuLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgUXVpY0Nvbm5lY3Rpb24KK2Zy
b20gLi50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5jb21wYXQgaW1wb3J0
IGFzeW5jY29udGV4dG1hbmFnZXIKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlv
blByb3RvY29sLCBRdWljU3RyZWFtSGFuZGxlcgorCitfX2FsbF9fID0gWyJjb25uZWN0Il0KKwor
CitAYXN5bmNjb250ZXh0bWFuYWdlcgorYXN5bmMgZGVmIGNvbm5lY3QoCisgICAgaG9zdDogc3Ry
LAorICAgIHBvcnQ6IGludCwKKyAgICAqLAorICAgIGNvbmZpZ3VyYXRpb246IE9wdGlvbmFsW1F1
aWNDb25maWd1cmF0aW9uXSA9IE5vbmUsCisgICAgY3JlYXRlX3Byb3RvY29sOiBPcHRpb25hbFtD
YWxsYWJsZV0gPSBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgIHNlc3Npb25fdGlja2V0X2hh
bmRsZXI6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgc3RyZWFt
X2hhbmRsZXI6IE9wdGlvbmFsW1F1aWNTdHJlYW1IYW5kbGVyXSA9IE5vbmUsCisgICAgd2FpdF9j
b25uZWN0ZWQ6IGJvb2wgPSBUcnVlLAorICAgIGxvY2FsX3BvcnQ6IGludCA9IDAsCispIC0+IEFz
eW5jR2VuZXJhdG9yW1F1aWNDb25uZWN0aW9uUHJvdG9jb2wsIE5vbmVdOgorICAgICIiIgorICAg
IENvbm5lY3QgdG8gYSBRVUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAu
CisKKyAgICA6bWV0aDpgY29ubmVjdCgpYCByZXR1cm5zIGFuIGF3YWl0YWJsZS4gQXdhaXRpbmcg
aXQgeWllbGRzIGEKKyAgICA6Y2xhc3M6YH5haW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbGAgd2hpY2ggY2FuIGJlIHVzZWQgdG8KKyAgICBjcmVhdGUgc3RyZWFtcy4KKworICAg
IDpmdW5jOmBjb25uZWN0YCBhbHNvIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBhcmd1
bWVudHM6CisKKyAgICAqIGBgY29uZmlndXJhdGlvbmBgIGlzIGEgOmNsYXNzOmB+YWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24uUXVpY0NvbmZpZ3VyYXRpb25gCisgICAgICBjb25maWd1cmF0aW9u
IG9iamVjdC4KKyAgICAqIGBgY3JlYXRlX3Byb3RvY29sYGAgYWxsb3dzIGN1c3RvbWl6aW5nIHRo
ZSA6Y2xhc3M6YH5hc3luY2lvLlByb3RvY29sYCB0aGF0CisgICAgICBtYW5hZ2VzIHRoZSBjb25u
ZWN0aW9uLiBJdCBzaG91bGQgYmUgYSBjYWxsYWJsZSBvciBjbGFzcyBhY2NlcHRpbmcgdGhlIHNh
bWUKKyAgICAgIGFyZ3VtZW50cyBhcyA6Y2xhc3M6YH5haW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbGAgYW5kIHJldHVybmluZworICAgICAgYW4gaW5zdGFuY2Ugb2YgOmNsYXNz
OmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2xgIG9yIGEgc3ViY2xhc3Mu
CisgICAgKiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlz
IGludm9rZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0aWNr
ZXQgaXMgcmVjZWl2ZWQuCisgICAgKiBgYHN0cmVhbV9oYW5kbGVyYGAgaXMgYSBjYWxsYmFjayB3
aGljaCBpcyBpbnZva2VkIHdoZW5ldmVyIGEgc3RyZWFtIGlzCisgICAgICBjcmVhdGVkLiBJdCBt
dXN0IGFjY2VwdCB0d28gYXJndW1lbnRzOiBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJg
CisgICAgICBhbmQgYSA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFtV3JpdGVyYC4KKyAgICAqIGBgbG9j
YWxfcG9ydGBgIGlzIHRoZSBVRFAgcG9ydCBudW1iZXIgdGhhdCB0aGlzIGNsaWVudCB3YW50cyB0
byBiaW5kLgorICAgICIiIgorICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAg
ICBsb2NhbF9ob3N0ID0gIjo6IgorCisgICAgIyBpZiBob3N0IGlzIG5vdCBhbiBJUCBhZGRyZXNz
LCBwYXNzIGl0IHRvIGVuYWJsZSBTTkkKKyAgICB0cnk6CisgICAgICAgIGlwYWRkcmVzcy5pcF9h
ZGRyZXNzKGhvc3QpCisgICAgICAgIHNlcnZlcl9uYW1lID0gTm9uZQorICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgorICAgICAgICBzZXJ2ZXJfbmFtZSA9IGhvc3QKKworICAgICMgbG9va3VwIHJlbW90
ZSBhZGRyZXNzCisgICAgaW5mb3MgPSBhd2FpdCBsb29wLmdldGFkZHJpbmZvKGhvc3QsIHBvcnQs
IHR5cGU9c29ja2V0LlNPQ0tfREdSQU0pCisgICAgYWRkciA9IGluZm9zWzBdWzRdCisgICAgaWYg
bGVuKGFkZHIpID09IDI6CisgICAgICAgICMgZGV0ZXJtaW5lIGJlaGF2aW91ciBmb3IgSVB2NAor
ICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgICMgb24gV2lu
ZG93cywgd2UgbXVzdCB1c2UgYW4gSVB2NCBzb2NrZXQgdG8gcmVhY2ggYW4gSVB2NCBob3N0Cisg
ICAgICAgICAgICBsb2NhbF9ob3N0ID0gIjAuMC4wLjAiCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAjIG90aGVyIHBsYXRmb3JtcyBzdXBwb3J0IGR1YWwtc3RhY2sgc29ja2V0cworICAgICAg
ICAgICAgYWRkciA9ICgiOjpmZmZmOiIgKyBhZGRyWzBdLCBhZGRyWzFdLCAwLCAwKQorCisgICAg
IyBwcmVwYXJlIFFVSUMgY29ubmVjdGlvbgorICAgIGlmIGNvbmZpZ3VyYXRpb24gaXMgTm9uZToK
KyAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
KQorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBjb25maWd1cmF0aW9u
LnNlcnZlcl9uYW1lID0gc2VydmVyX25hbWUKKyAgICBjb25uZWN0aW9uID0gUXVpY0Nvbm5lY3Rp
b24oCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgc2Vzc2lvbl90aWNrZXRf
aGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyCisgICAgKQorCisgICAgIyBjb25uZWN0Cisg
ICAgXywgcHJvdG9jb2wgPSBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludCgKKyAg
ICAgICAgbGFtYmRhOiBjcmVhdGVfcHJvdG9jb2woY29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI9
c3RyZWFtX2hhbmRsZXIpLAorICAgICAgICBsb2NhbF9hZGRyPShsb2NhbF9ob3N0LCBsb2NhbF9w
b3J0KSwKKyAgICApCisgICAgcHJvdG9jb2wgPSBjYXN0KFF1aWNDb25uZWN0aW9uUHJvdG9jb2ws
IHByb3RvY29sKQorICAgIHByb3RvY29sLmNvbm5lY3QoYWRkcikKKyAgICBpZiB3YWl0X2Nvbm5l
Y3RlZDoKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wud2FpdF9jb25uZWN0ZWQoKQorICAgIHRyeToK
KyAgICAgICAgeWllbGQgcHJvdG9jb2wKKyAgICBmaW5hbGx5OgorICAgICAgICBwcm90b2NvbC5j
bG9zZSgpCisgICAgYXdhaXQgcHJvdG9jb2wud2FpdF9jbG9zZWQoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY29tcGF0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMWU2MmY2ZDk0Mjk2MTkz
M2ZiNmZlMDcyYWUwZjI3ZTY0M2I0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkKQEAgLTAsMCArMSwzMyBAQAorZnJvbSBjb250
ZXh0bGliIGltcG9ydCBDb250ZXh0RGVjb3JhdG9yCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3Jh
cHMKKwordHJ5OgorICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgYXN5bmNjb250ZXh0bWFuYWdl
cgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGFzeW5jY29udGV4dG1hbmFnZXIgPSBOb25lCisK
KworY2xhc3MgX0FzeW5jR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvcik6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIGFyZ3MsIGt3ZHMpOgorICAgICAgICBzZWxm
LmdlbiA9IGZ1bmMoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgc2VsZi5mdW5jLCBzZWxmLmFyZ3Ms
IHNlbGYua3dkcyA9IGZ1bmMsIGFyZ3MsIGt3ZHMKKyAgICAgICAgc2VsZi5fX2RvY19fID0gZnVu
Yy5fX2RvY19fCisKKyAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIGF3YWl0IHNlbGYuZ2VuLl9fYW5leHRfXygpCisKKyAgICBhc3luYyBkZWYgX19hZXhpdF9f
KHNlbGYsIHR5cCwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIGlmIHR5cCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGF3YWl0IHNlbGYuZ2VuLmF0aHJvdyh0eXAsIHZhbHVlLCB0cmFjZWJh
Y2spCisKKworZGVmIF9hc3luY2NvbnRleHRtYW5hZ2VyKGZ1bmMpOgorICAgIEB3cmFwcyhmdW5j
KQorICAgIGRlZiBoZWxwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIHJldHVybiBfQXN5bmNH
ZW5lcmF0b3JDb250ZXh0TWFuYWdlcihmdW5jLCBhcmdzLCBrd2RzKQorCisgICAgcmV0dXJuIGhl
bHBlcgorCisKK2lmIGFzeW5jY29udGV4dG1hbmFnZXIgaXMgTm9uZToKKyAgICBhc3luY2NvbnRl
eHRtYW5hZ2VyID0gX2FzeW5jY29udGV4dG1hbmFnZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2FzeW5jaW8vcHJvdG9jb2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUwMDQzMzViOGZmZmY5ZDcwMjVk
MzY1ZWNhYTkzMWY3NzQ3MjI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5CkBAIC0wLDAgKzEsMjQwIEBACitpbXBvcnQgYXN5
bmNpbworZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIE9wdGlvbmFsLCBU
ZXh0LCBUdXBsZSwgVW5pb24sIGNhc3QKKworZnJvbSAuLnF1aWMgaW1wb3J0IGV2ZW50cworZnJv
bSAuLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgTmV0d29ya0FkZHJlc3MsIFF1aWNDb25uZWN0aW9u
CisKK1F1aWNDb25uZWN0aW9uSWRIYW5kbGVyID0gQ2FsbGFibGVbW2J5dGVzXSwgTm9uZV0KK1F1
aWNTdHJlYW1IYW5kbGVyID0gQ2FsbGFibGVbW2FzeW5jaW8uU3RyZWFtUmVhZGVyLCBhc3luY2lv
LlN0cmVhbVdyaXRlcl0sIE5vbmVdCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbChh
c3luY2lvLkRhdGFncmFtUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2Vs
ZiwgcXVpYzogUXVpY0Nvbm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3Ry
ZWFtSGFuZGxlcl0gPSBOb25lCisgICAgKToKKyAgICAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2
ZW50X2xvb3AoKQorCisgICAgICAgIHNlbGYuX2Nsb3NlZCA9IGFzeW5jaW8uRXZlbnQoKQorICAg
ICAgICBzZWxmLl9jb25uZWN0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2Fp
dGVyOiBPcHRpb25hbFthc3luY2lvLkZ1dHVyZVtOb25lXV0gPSBOb25lCisgICAgICAgIHNlbGYu
X2xvb3AgPSBsb29wCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyczogRGljdFtpbnQsIGFzeW5j
aW8uRnV0dXJlW05vbmVdXSA9IHt9CisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAg
IHNlbGYuX3N0cmVhbV9yZWFkZXJzOiBEaWN0W2ludCwgYXN5bmNpby5TdHJlYW1SZWFkZXJdID0g
e30KKyAgICAgICAgc2VsZi5fdGltZXI6IE9wdGlvbmFsW2FzeW5jaW8uVGltZXJIYW5kbGVdID0g
Tm9uZQorICAgICAgICBzZWxmLl90aW1lcl9hdDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAg
ICAgICBzZWxmLl90cmFuc21pdF90YXNrOiBPcHRpb25hbFthc3luY2lvLkhhbmRsZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRyYW5z
cG9ydF0gPSBOb25lCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2VsZi5fY29ubmVj
dGlvbl9pZF9pc3N1ZWRfaGFuZGxlcjogUXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBsYW1iZGEg
YzogTm9uZQorICAgICAgICBzZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWRfaGFuZGxlcjogUXVp
Y0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBsYW1iZGEgYzogTm9uZQorICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcjogQ2FsbGFibGVbW10sIE5vbmVdID0gbGFtYmRhOiBO
b25lCisgICAgICAgIGlmIHN0cmVhbV9oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
c2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1faGFuZGxlcgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBsYW1iZGEgciwgdzogTm9uZQorCisgICAg
ZGVmIGNoYW5nZV9jb25uZWN0aW9uX2lkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDaGFuZ2UgdGhlIGNvbm5lY3Rpb24gSUQgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRo
ZSBwZWVyLgorCisgICAgICAgIFRoZSBwcmV2aW91cyBjb25uZWN0aW9uIElEIHdpbGwgYmUgcmV0
aXJlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3F1aWMuY2hhbmdlX2Nvbm5lY3Rpb25f
aWQoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgIGRlZiBjbG9zZShzZWxmKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAg
ICIiIgorICAgICAgICBzZWxmLl9xdWljLmNsb3NlKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgp
CisKKyAgICBkZWYgY29ubmVjdChzZWxmLCBhZGRyOiBOZXR3b3JrQWRkcmVzcykgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEluaXRpYXRlIHRoZSBUTFMgaGFuZHNoYWtlLgorCisgICAg
ICAgIFRoaXMgbWV0aG9kIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3IgY2xpZW50cyBhbmQgYSBzaW5n
bGUgdGltZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3F1aWMuY29ubmVjdChhZGRyLCBu
b3c9c2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgYXN5
bmMgZGVmIGNyZWF0ZV9zdHJlYW0oCisgICAgICAgIHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBi
b29sID0gRmFsc2UKKyAgICApIC0+IFR1cGxlW2FzeW5jaW8uU3RyZWFtUmVhZGVyLCBhc3luY2lv
LlN0cmVhbVdyaXRlcl06CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBRVUlDIHN0cmVh
bSBhbmQgcmV0dXJuIGEgcGFpciBvZiAocmVhZGVyLCB3cml0ZXIpIG9iamVjdHMuCisKKyAgICAg
ICAgVGhlIHJldHVybmVkIHJlYWRlciBhbmQgd3JpdGVyIG9iamVjdHMgYXJlIGluc3RhbmNlcyBv
ZiA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFtUmVhZGVyYAorICAgICAgICBhbmQgOmNsYXNzOmBhc3lu
Y2lvLlN0cmVhbVdyaXRlcmAgY2xhc3Nlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9p
ZCA9IHNlbGYuX3F1aWMuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgKKyAgICAgICAgICAg
IGlzX3VuaWRpcmVjdGlvbmFsPWlzX3VuaWRpcmVjdGlvbmFsCisgICAgICAgICkKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQorCisgICAgZGVmIHJlcXVlc3Rf
a2V5X3VwZGF0ZShzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmVxdWVzdCBh
biB1cGRhdGUgb2YgdGhlIGVuY3J5cHRpb24ga2V5cy4KKyAgICAgICAgIiIiCisgICAgICAgIHNl
bGYuX3F1aWMucmVxdWVzdF9rZXlfdXBkYXRlKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisK
KyAgICBhc3luYyBkZWYgcGluZyhzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAg
UGluZyB0aGUgcGVlciBhbmQgd2FpdCBmb3IgdGhlIHJlc3BvbnNlLgorICAgICAgICAiIiIKKyAg
ICAgICAgd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgdWlkID0g
aWQod2FpdGVyKQorICAgICAgICBzZWxmLl9waW5nX3dhaXRlcnNbdWlkXSA9IHdhaXRlcgorICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfcGluZyh1aWQpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQor
ICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisKKyAgICBkZWYgdHJhbnNtaXQo
c2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgcGVuZGluZyBkYXRhZ3Jh
bXMgdG8gdGhlIHBlZXIgYW5kIGFybSB0aGUgdGltZXIgaWYgbmVlZGVkLgorICAgICAgICAiIiIK
KyAgICAgICAgc2VsZi5fdHJhbnNtaXRfdGFzayA9IE5vbmUKKworICAgICAgICAjIHNlbmQgZGF0
YWdyYW1zCisgICAgICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbGYuX3F1aWMuZGF0YWdyYW1zX3Rv
X3NlbmQobm93PXNlbGYuX2xvb3AudGltZSgpKToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9y
dC5zZW5kdG8oZGF0YSwgYWRkcikKKworICAgICAgICAjIHJlLWFybSB0aW1lcgorICAgICAgICB0
aW1lcl9hdCA9IHNlbGYuX3F1aWMuZ2V0X3RpbWVyKCkKKyAgICAgICAgaWYgc2VsZi5fdGltZXIg
aXMgbm90IE5vbmUgYW5kIHNlbGYuX3RpbWVyX2F0ICE9IHRpbWVyX2F0OgorICAgICAgICAgICAg
c2VsZi5fdGltZXIuY2FuY2VsKCkKKyAgICAgICAgICAgIHNlbGYuX3RpbWVyID0gTm9uZQorICAg
ICAgICBpZiBzZWxmLl90aW1lciBpcyBOb25lIGFuZCB0aW1lcl9hdCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuX3RpbWVyID0gc2VsZi5fbG9vcC5jYWxsX2F0KHRpbWVyX2F0LCBzZWxm
Ll9oYW5kbGVfdGltZXIpCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gdGltZXJfYXQKKworICAg
IGFzeW5jIGRlZiB3YWl0X2Nsb3NlZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgV2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gYmUgY2xvc2VkLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXdhaXQgc2VsZi5fY2xvc2VkLndhaXQoKQorCisgICAgYXN5bmMgZGVmIHdhaXRfY29u
bmVjdGVkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBXYWl0IGZvciB0aGUg
VExTIGhhbmRzaGFrZSB0byBjb21wbGV0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBz
ZWxmLl9jb25uZWN0ZWRfd2FpdGVyIGlzIE5vbmUsICJhbHJlYWR5IGF3YWl0aW5nIGNvbm5lY3Rl
ZCIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHNlbGYuX2Nv
bm5lY3RlZF93YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICAgICAg
YXdhaXQgYXN5bmNpby5zaGllbGQoc2VsZi5fY29ubmVjdGVkX3dhaXRlcikKKworICAgICMgYXN5
bmNpby5UcmFuc3BvcnQKKworICAgIGRlZiBjb25uZWN0aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0
OiBhc3luY2lvLkJhc2VUcmFuc3BvcnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYW5zcG9y
dCA9IGNhc3QoYXN5bmNpby5EYXRhZ3JhbVRyYW5zcG9ydCwgdHJhbnNwb3J0KQorCisgICAgZGVm
IGRhdGFncmFtX3JlY2VpdmVkKHNlbGYsIGRhdGE6IFVuaW9uW2J5dGVzLCBUZXh0XSwgYWRkcjog
TmV0d29ya0FkZHJlc3MpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3F1aWMucmVjZWl2ZV9kYXRh
Z3JhbShjYXN0KGJ5dGVzLCBkYXRhKSwgYWRkciwgbm93PXNlbGYuX2xvb3AudGltZSgpKQorICAg
ICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisg
ICAgIyBvdmVycmlkYWJsZQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZl
bnQ6IGV2ZW50cy5RdWljRXZlbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxs
ZWQgd2hlbiBhIFFVSUMgZXZlbnQgaXMgcmVjZWl2ZWQuCisKKyAgICAgICAgUmVpbXBsZW1lbnQg
dGhpcyBpbiB5b3VyIHN1YmNsYXNzIHRvIGhhbmRsZSB0aGUgZXZlbnRzLgorICAgICAgICAiIiIK
KyAgICAgICAgIyBGSVhNRTogbW92ZSB0aGlzIHRvIGEgc3ViY2xhc3MKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAg
IGZvciByZWFkZXIgaW4gc2VsZi5fc3RyZWFtX3JlYWRlcnMudmFsdWVzKCk6CisgICAgICAgICAg
ICAgICAgcmVhZGVyLmZlZWRfZW9mKCkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIHJlYWRlciA9IHNlbGYuX3N0
cmVhbV9yZWFkZXJzLmdldChldmVudC5zdHJlYW1faWQsIE5vbmUpCisgICAgICAgICAgICBpZiBy
ZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IHNlbGYuX2Ny
ZWF0ZV9zdHJlYW0oZXZlbnQuc3RyZWFtX2lkKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVh
bV9oYW5kbGVyKHJlYWRlciwgd3JpdGVyKQorICAgICAgICAgICAgcmVhZGVyLmZlZWRfZGF0YShl
dmVudC5kYXRhKQorICAgICAgICAgICAgaWYgZXZlbnQuZW5kX3N0cmVhbToKKyAgICAgICAgICAg
ICAgICByZWFkZXIuZmVlZF9lb2YoKQorCisgICAgIyBwcml2YXRlCisKKyAgICBkZWYgX2NyZWF0
ZV9zdHJlYW0oCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50CisgICAgKSAtPiBUdXBsZVth
c3luY2lvLlN0cmVhbVJlYWRlciwgYXN5bmNpby5TdHJlYW1Xcml0ZXJdOgorICAgICAgICBhZGFw
dGVyID0gUXVpY1N0cmVhbUFkYXB0ZXIoc2VsZiwgc3RyZWFtX2lkKQorICAgICAgICByZWFkZXIg
PSBhc3luY2lvLlN0cmVhbVJlYWRlcigpCisgICAgICAgIHdyaXRlciA9IGFzeW5jaW8uU3RyZWFt
V3JpdGVyKGFkYXB0ZXIsIE5vbmUsIHJlYWRlciwgc2VsZi5fbG9vcCkKKyAgICAgICAgc2VsZi5f
c3RyZWFtX3JlYWRlcnNbc3RyZWFtX2lkXSA9IHJlYWRlcgorICAgICAgICByZXR1cm4gcmVhZGVy
LCB3cml0ZXIKKworICAgIGRlZiBfaGFuZGxlX3RpbWVyKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IG5vdyA9IG1heChzZWxmLl90aW1lcl9hdCwgc2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAgIHNl
bGYuX3RpbWVyID0gTm9uZQorICAgICAgICBzZWxmLl90aW1lcl9hdCA9IE5vbmUKKyAgICAgICAg
c2VsZi5fcXVpYy5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19l
dmVudHMoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgIGRlZiBfcHJvY2Vzc19ldmVu
dHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZXZlbnQgPSBzZWxmLl9xdWljLm5leHRfZXZlbnQo
KQorICAgICAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpOgorICAgICAgICAgICAgICAg
IHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXIoZXZlbnQuY29ubmVjdGlvbl9pZCkK
KyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZFJl
dGlyZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5k
bGVyKGV2ZW50LmNvbm5lY3Rpb25faWQpCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZl
bnQsIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5f
Y29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIoKQorCisgICAgICAgICAgICAgICAgIyBhYm9y
dCBjb25uZWN0aW9uIHdhaXRlcgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZF93
YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Nv
bm5lY3RlZF93YWl0ZXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRl
ciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9leGNlcHRpb24oQ29ubmVj
dGlvbkVycm9yKQorCisgICAgICAgICAgICAgICAgIyBhYm9ydCBwaW5nIHdhaXRlcnMKKyAgICAg
ICAgICAgICAgICBmb3Igd2FpdGVyIGluIHNlbGYuX3Bpbmdfd2FpdGVycy52YWx1ZXMoKToKKyAg
ICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9leGNlcHRpb24oQ29ubmVjdGlvbkVycm9yKQor
ICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVycy5jbGVhcigpCisKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jbG9zZWQuc2V0KCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVu
dCwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5f
Y29ubmVjdGVkX3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVy
ID0gc2VsZi5fY29ubmVjdGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25u
ZWN0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIg
PSBOb25lCisgICAgICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0KE5vbmUpCisgICAg
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKToK
KyAgICAgICAgICAgICAgICB3YWl0ZXIgPSBzZWxmLl9waW5nX3dhaXRlcnMucG9wKGV2ZW50LnVp
ZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBpZiB3YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0KE5vbmUpCisgICAgICAgICAgICBzZWxmLnF1
aWNfZXZlbnRfcmVjZWl2ZWQoZXZlbnQpCisgICAgICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMu
bmV4dF9ldmVudCgpCisKKyAgICBkZWYgX3RyYW5zbWl0X3Nvb24oc2VsZikgLT4gTm9uZToKKyAg
ICAgICAgaWYgc2VsZi5fdHJhbnNtaXRfdGFzayBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5f
dHJhbnNtaXRfdGFzayA9IHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYudHJhbnNtaXQpCisKKwor
Y2xhc3MgUXVpY1N0cmVhbUFkYXB0ZXIoYXN5bmNpby5UcmFuc3BvcnQpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgc3RyZWFtX2lkOiBp
bnQpOgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKyAgICAgICAgc2VsZi5zdHJl
YW1faWQgPSBzdHJlYW1faWQKKworICAgIGRlZiBjYW5fd3JpdGVfZW9mKHNlbGYpIC0+IGJvb2w6
CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgZ2V0X2V4dHJhX2luZm8oc2VsZiwgbmFt
ZTogc3RyLCBkZWZhdWx0OiBBbnkgPSBOb25lKSAtPiBBbnk6CisgICAgICAgICIiIgorICAgICAg
ICBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVuZGVybHlpbmcgUVVJQyBzdHJlYW0uCisgICAg
ICAgICIiIgorICAgICAgICBpZiBuYW1lID09ICJzdHJlYW1faWQiOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuc3RyZWFtX2lkCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAg
IHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLnN0cmVhbV9pZCwgZGF0
YSkKKyAgICAgICAgc2VsZi5wcm90b2NvbC5fdHJhbnNtaXRfc29vbigpCisKKyAgICBkZWYgd3Jp
dGVfZW9mKHNlbGYpOgorICAgICAgICBzZWxmLnByb3RvY29sLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5zdHJlYW1faWQsIGIiIiwgZW5kX3N0cmVhbT1UcnVlKQorICAgICAgICBzZWxmLnBy
b3RvY29sLl90cmFuc21pdF9zb29uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9hc3luY2lvL3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lv
L3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDBlZTQ2MGI2ZWQ2NmUwOTQ1Mzg1ZjFmNTQ4NThjYzBl
ZjkxODg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5j
aW8vc2VydmVyLnB5CkBAIC0wLDAgKzEsMjEwIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IG9z
Citmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlLCBEaWN0LCBPcHRpb25hbCwgVGV4dCwgVW5pb24sIGNhc3QKKworZnJvbSAuLmJ1ZmZlciBp
bXBvcnQgQnVmZmVyCitmcm9tIC4ucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmln
dXJhdGlvbgorZnJvbSAuLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgTmV0d29ya0FkZHJlc3MsIFF1
aWNDb25uZWN0aW9uCitmcm9tIC4ucXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAgICBQQUNLRVRfVFlQ
RV9JTklUSUFMLAorICAgIGVuY29kZV9xdWljX3JldHJ5LAorICAgIGVuY29kZV9xdWljX3ZlcnNp
b25fbmVnb3RpYXRpb24sCisgICAgcHVsbF9xdWljX2hlYWRlciwKKykKK2Zyb20gLi5xdWljLnJl
dHJ5IGltcG9ydCBRdWljUmV0cnlUb2tlbkhhbmRsZXIKK2Zyb20gLi50bHMgaW1wb3J0IFNlc3Np
b25UaWNrZXRGZXRjaGVyLCBTZXNzaW9uVGlja2V0SGFuZGxlcgorZnJvbSAucHJvdG9jb2wgaW1w
b3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18g
PSBbInNlcnZlIl0KKworCitjbGFzcyBRdWljU2VydmVyKGFzeW5jaW8uRGF0YWdyYW1Qcm90b2Nv
bCk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICAqLAorICAgICAg
ICBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbiwKKyAgICAgICAgY3JlYXRlX3Byb3Rv
Y29sOiBDYWxsYWJsZSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgICAgIHNlc3Npb25f
dGlja2V0X2ZldGNoZXI6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUsCisg
ICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRIYW5k
bGVyXSA9IE5vbmUsCisgICAgICAgIHN0YXRlbGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAg
ICAgICBzdHJlYW1faGFuZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwK
KyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0
aW9uCisgICAgICAgIHNlbGYuX2NyZWF0ZV9wcm90b2NvbCA9IGNyZWF0ZV9wcm90b2NvbAorICAg
ICAgICBzZWxmLl9sb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgICAgIHNlbGYu
X3Byb3RvY29sczogRGljdFtieXRlcywgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbF0gPSB7fQorICAg
ICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyID0gc2Vzc2lvbl90aWNrZXRfZmV0Y2hl
cgorICAgICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyID0gc2Vzc2lvbl90aWNrZXRf
aGFuZGxlcgorICAgICAgICBzZWxmLl90cmFuc3BvcnQ6IE9wdGlvbmFsW2FzeW5jaW8uRGF0YWdy
YW1UcmFuc3BvcnRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3N0cmVhbV9oYW5kbGVyID0gc3Ry
ZWFtX2hhbmRsZXIKKworICAgICAgICBpZiBzdGF0ZWxlc3NfcmV0cnk6CisgICAgICAgICAgICBz
ZWxmLl9yZXRyeSA9IFF1aWNSZXRyeVRva2VuSGFuZGxlcigpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl9yZXRyeSA9IE5vbmUKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAg
ICAgZm9yIHByb3RvY29sIGluIHNldChzZWxmLl9wcm90b2NvbHMudmFsdWVzKCkpOgorICAgICAg
ICAgICAgcHJvdG9jb2wuY2xvc2UoKQorICAgICAgICBzZWxmLl9wcm90b2NvbHMuY2xlYXIoKQor
ICAgICAgICBzZWxmLl90cmFuc3BvcnQuY2xvc2UoKQorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFk
ZShzZWxmLCB0cmFuc3BvcnQ6IGFzeW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5fdHJhbnNwb3J0ID0gY2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFu
c3BvcnQpCisKKyAgICBkZWYgZGF0YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0
ZXMsIFRleHRdLCBhZGRyOiBOZXR3b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgZGF0YSA9
IGNhc3QoYnl0ZXMsIGRhdGEpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcigKKyAgICAg
ICAgICAgICAgICBidWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5l
Y3Rpb25faWRfbGVuZ3RoCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisg
ICAgICAgIGlmICgKKyAgICAgICAgICAgIGhlYWRlci52ZXJzaW9uIGlzIG5vdCBOb25lCisgICAg
ICAgICAgICBhbmQgaGVhZGVyLnZlcnNpb24gbm90IGluIHNlbGYuX2NvbmZpZ3VyYXRpb24uc3Vw
cG9ydGVkX3ZlcnNpb25zCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQu
c2VuZHRvKAorICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24o
CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwK
KyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWhlYWRlci5zb3VyY2VfY2lkLAor
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9c2VsZi5fY29uZmlndXJhdGlv
bi5zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBhZGRyLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgcHJv
dG9jb2wgPSBzZWxmLl9wcm90b2NvbHMuZ2V0KGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIE5vbmUp
CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQ6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUK
KyAgICAgICAgaWYgKAorICAgICAgICAgICAgcHJvdG9jb2wgaXMgTm9uZQorICAgICAgICAgICAg
YW5kIGxlbihkYXRhKSA+PSAxMjAwCisgICAgICAgICAgICBhbmQgaGVhZGVyLnBhY2tldF90eXBl
ID09IFBBQ0tFVF9UWVBFX0lOSVRJQUwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgc3RhdGVs
ZXNzIHJldHJ5CisgICAgICAgICAgICBpZiBzZWxmLl9yZXRyeSBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBpZiBub3QgaGVhZGVyLnRva2VuOgorICAgICAgICAgICAgICAgICAgICAjIGNy
ZWF0ZSBhIHJldHJ5IHRva2VuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5z
ZW5kdG8oCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWhlYWRlci52ZXJzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9b3MudXJhbmRvbSg4KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJjZV9jaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWhlYWRlci5k
ZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49
c2VsZi5fcmV0cnkuY3JlYXRlX3Rva2VuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRyLCBoZWFkZXIuZGVzdGluYXRpb25fY2lkCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRyLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgdmFsaWRhdGUg
cmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3JldHJ5LnZhbGlkYXRlX3Rva2Vu
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIGhlYWRlci50b2tlbgorICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIGNyZWF0
ZSBuZXcgY29ubmVjdGlvbgorICAgICAgICAgICAgY29ubmVjdGlvbiA9IFF1aWNDb25uZWN0aW9u
KAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249c2VsZi5fY29uZmlndXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZD1vcmlnaW5hbF9jb25uZWN0aW9uX2lk
IG9yIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29u
bmVjdGlvbl9pZD1vcmlnaW5hbF9jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgIHNlc3Np
b25fdGlja2V0X2ZldGNoZXI9c2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciwKKyAgICAgICAg
ICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRs
ZXIsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbCA9IHNlbGYuX2NyZWF0ZV9w
cm90b2NvbCgKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLCBzdHJlYW1faGFuZGxlcj1zZWxm
Ll9zdHJlYW1faGFuZGxlcgorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuY29u
bmVjdGlvbl9tYWRlKHNlbGYuX3RyYW5zcG9ydCkKKworICAgICAgICAgICAgIyByZWdpc3RlciBj
YWxsYmFja3MKKyAgICAgICAgICAgIHByb3RvY29sLl9jb25uZWN0aW9uX2lkX2lzc3VlZF9oYW5k
bGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uX2lkX2lzc3Vl
ZCwgcHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29s
Ll9jb25uZWN0aW9uX2lkX3JldGlyZWRfaGFuZGxlciA9IHBhcnRpYWwoCisgICAgICAgICAgICAg
ICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRpcmVkLCBwcm90b2NvbD1wcm90b2NvbAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25fdGVybWluYXRlZF9oYW5k
bGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uX3Rlcm1pbmF0
ZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHNlbGYu
X3Byb3RvY29sc1toZWFkZXIuZGVzdGluYXRpb25fY2lkXSA9IHByb3RvY29sCisgICAgICAgICAg
ICBzZWxmLl9wcm90b2NvbHNbY29ubmVjdGlvbi5ob3N0X2NpZF0gPSBwcm90b2NvbAorCisgICAg
ICAgIGlmIHByb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJvdG9jb2wuZGF0YWdy
YW1fcmVjZWl2ZWQoZGF0YSwgYWRkcikKKworICAgIGRlZiBfY29ubmVjdGlvbl9pZF9pc3N1ZWQo
c2VsZiwgY2lkOiBieXRlcywgcHJvdG9jb2w6IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAg
ICAgICBzZWxmLl9wcm90b2NvbHNbY2lkXSA9IHByb3RvY29sCisKKyAgICBkZWYgX2Nvbm5lY3Rp
b25faWRfcmV0aXJlZCgKKyAgICAgICAgc2VsZiwgY2lkOiBieXRlcywgcHJvdG9jb2w6IFF1aWND
b25uZWN0aW9uUHJvdG9jb2wKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBzZWxmLl9w
cm90b2NvbHNbY2lkXSA9PSBwcm90b2NvbAorICAgICAgICBkZWwgc2VsZi5fcHJvdG9jb2xzW2Np
ZF0KKworICAgIGRlZiBfY29ubmVjdGlvbl90ZXJtaW5hdGVkKHNlbGYsIHByb3RvY29sOiBRdWlj
Q29ubmVjdGlvblByb3RvY29sKToKKyAgICAgICAgZm9yIGNpZCwgcHJvdG8gaW4gbGlzdChzZWxm
Ll9wcm90b2NvbHMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBwcm90byA9PSBwcm90b2NvbDoK
KyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fcHJvdG9jb2xzW2NpZF0KKworCithc3luYyBkZWYg
c2VydmUoCisgICAgaG9zdDogc3RyLAorICAgIHBvcnQ6IGludCwKKyAgICAqLAorICAgIGNvbmZp
Z3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgIGNyZWF0ZV9wcm90b2NvbDogQ2FsbGFi
bGUgPSBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI6
IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUsCisgICAgc2Vzc2lvbl90aWNr
ZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICBz
dGF0ZWxlc3NfcmV0cnk6IGJvb2wgPSBGYWxzZSwKKyAgICBzdHJlYW1faGFuZGxlcjogUXVpY1N0
cmVhbUhhbmRsZXIgPSBOb25lLAorKSAtPiBRdWljU2VydmVyOgorICAgICIiIgorICAgIFN0YXJ0
IGEgUVVJQyBzZXJ2ZXIgYXQgdGhlIGdpdmVuIGBob3N0YCBhbmQgYHBvcnRgLgorCisgICAgOmZ1
bmM6YHNlcnZlYCByZXF1aXJlcyBhIDpjbGFzczpgfmFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
LlF1aWNDb25maWd1cmF0aW9uYAorICAgIGNvbnRhaW5pbmcgVExTIGNlcnRpZmljYXRlIGFuZCBw
cml2YXRlIGtleSBhcyB0aGUgYGBjb25maWd1cmF0aW9uYGAgYXJndW1lbnQuCisKKyAgICA6ZnVu
Yzpgc2VydmVgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50czoK
KworICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9taXppbmcgdGhlIDpjbGFz
czpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMgdGhlIGNvbm5lY3Rpb24u
IEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZQorICAg
ICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblBy
b3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5haW9x
dWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4KKyAgICAq
IGBgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tl
ZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIHNlc3Npb24gdGlja2V0IGlzIHByZXNl
bnRlZCBieSB0aGUgcGVlci4gSXQgc2hvdWxkIHJldHVybgorICAgICAgdGhlIHNlc3Npb24gdGlj
a2V0IHdpdGggdGhlIHNwZWNpZmllZCBJRCBvciBgTm9uZWAgaWYgaXQgaXMgbm90IGZvdW5kLgor
ICAgICogYGBzZXNzaW9uX3RpY2tldF9oYW5kbGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBp
bnZva2VkIGJ5IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0
IGlzIGlzc3VlZC4gSXQgc2hvdWxkIHN0b3JlIHRoZSBzZXNzaW9uCisgICAgICB0aWNrZXQgZm9y
IGZ1dHVyZSBsb29rdXAuCisgICAgKiBgYHN0YXRlbGVzc19yZXRyeWBgIHNwZWNpZmllcyB3aGV0
aGVyIGEgc3RhdGVsZXNzIHJldHJ5IHNob3VsZCBiZQorICAgICAgcGVyZm9ybWVkIHByaW9yIHRv
IGhhbmRsaW5nIG5ldyBjb25uZWN0aW9ucy4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBh
IGNhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNy
ZWF0ZWQuIEl0IG11c3QgYWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0
cmVhbVJlYWRlcmAKKyAgICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgor
ICAgICIiIgorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorCisgICAgXywg
cHJvdG9jb2wgPSBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludCgKKyAgICAgICAg
bGFtYmRhOiBRdWljU2VydmVyKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgY3JlYXRlX3Byb3RvY29sPWNyZWF0ZV9wcm90b2NvbCwKKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI9c2Vzc2lvbl90aWNrZXRfZmV0Y2hlciwKKyAg
ICAgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vzc2lvbl90aWNrZXRfaGFuZGxlciwK
KyAgICAgICAgICAgIHN0YXRlbGVzc19yZXRyeT1zdGF0ZWxlc3NfcmV0cnksCisgICAgICAgICAg
ICBzdHJlYW1faGFuZGxlcj1zdHJlYW1faGFuZGxlciwKKyAgICAgICAgKSwKKyAgICAgICAgbG9j
YWxfYWRkcj0oaG9zdCwgcG9ydCksCisgICAgKQorICAgIHJldHVybiBjYXN0KFF1aWNTZXJ2ZXIs
IHByb3RvY29sKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8v
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YjgzNDVlMGNlOGY1YzQzZDQ2NzFjYmJjZGFkODhmMWViMTU5
MmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8v
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby9jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21w
YXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3NlcnZlci5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9idWZmZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhNDI5OGY5NTRjMjJlNTM4OWExMjlhMWVlNjc1ZThl
ZmVkODdlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9idWZm
ZXIucHkKQEAgLTAsMCArMSwyOSBAQAorZnJvbSAuX2J1ZmZlciBpbXBvcnQgQnVmZmVyLCBCdWZm
ZXJSZWFkRXJyb3IsIEJ1ZmZlcldyaXRlRXJyb3IgICMgbm9xYQorCitVSU5UX1ZBUl9NQVggPSAw
eDNGRkZGRkZGRkZGRkZGRkYKKworCitkZWYgZW5jb2RlX3VpbnRfdmFyKHZhbHVlOiBpbnQpIC0+
IGJ5dGVzOgorICAgICIiIgorICAgIEVuY29kZSBhIHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBp
bnRlZ2VyLgorICAgICIiIgorICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT04KQorICAgIGJ1Zi5w
dXNoX3VpbnRfdmFyKHZhbHVlKQorICAgIHJldHVybiBidWYuZGF0YQorCisKK2RlZiBzaXplX3Vp
bnRfdmFyKHZhbHVlOiBpbnQpIC0+IGludDoKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIG51bWJl
ciBvZiBieXRlcyByZXF1aXJlZCB0byBlbmNvZGUgdGhlIGdpdmVuIHZhbHVlCisgICAgYXMgYSBR
VUlDIHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLgorICAgICIiIgorICAgIGlmIHZh
bHVlIDw9IDB4M0Y6CisgICAgICAgIHJldHVybiAxCisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkY6
CisgICAgICAgIHJldHVybiAyCisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGOgorICAgICAg
ICByZXR1cm4gNAorICAgIGVsaWYgdmFsdWUgPD0gMHgzRkZGRkZGRkZGRkZGRkZGOgorICAgICAg
ICByZXR1cm4gOAorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludGVnZXIg
aXMgdG9vIGJpZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvaDAvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0
M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9oMC9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvaDAvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25u
ZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOGRkY2VjNmIzOTMwYWFmZjNjMWNkMTViMWVlNGU3ZDZi
MThkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29u
bmVjdGlvbi5weQpAQCAtMCwwICsxLDYzIEBACitmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgTGlz
dAorCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEgzRXZlbnQs
IEhlYWRlcnMsIEhlYWRlcnNSZWNlaXZlZAorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgUXVp
Y0V2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQKKworSDBfQUxQTiA9IFsiaHEtMjciLCAiaHEtMjYi
LCAiaHEtMjUiXQorCisKK2NsYXNzIEgwQ29ubmVjdGlvbjoKKyAgICAiIiIKKyAgICBBbiBIVFRQ
LzAuOSBjb25uZWN0aW9uIG9iamVjdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBxdWljOiBRdWljQ29ubmVjdGlvbik6CisgICAgICAgIHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQ6
IERpY3RbaW50LCBib29sXSA9IHt9CisgICAgICAgIHNlbGYuX2lzX2NsaWVudCA9IHF1aWMuY29u
ZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMKKworICAgIGRl
ZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToK
KyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0gPSBbXQorCisgICAgICAgIGlmIGlz
aW5zdGFuY2UoZXZlbnQsIFN0cmVhbURhdGFSZWNlaXZlZCkgYW5kIChldmVudC5zdHJlYW1faWQg
JSA0KSA9PSAwOgorICAgICAgICAgICAgZGF0YSA9IGV2ZW50LmRhdGEKKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkLmdldChldmVudC5zdHJlYW1faWQsIEZhbHNlKToK
KyAgICAgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgICAg
IGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVtdLCBzdHJlYW1fZW5k
ZWQ9RmFsc2UsIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIG1ldGhvZCwgcGF0aCA9IGRhdGEucnN0cmlwKCkuc3BsaXQoYiIgIiwg
MSkKKyAgICAgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRlcnM9WyhiIjptZXRob2QiLCBtZXRob2QpLCAoYiI6cGF0aCIsIHBhdGgpXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBk
YXRhID0gYiIiCisgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZFtldmVudC5z
dHJlYW1faWRdID0gVHJ1ZQorCisgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEs
IHN0cmVhbV9lbmRlZD1ldmVudC5lbmRfc3RyZWFtLCBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIHJldHVybiBodHRw
X2V2ZW50cworCisgICAgZGVmIHNlbmRfZGF0YShzZWxmLCBzdHJlYW1faWQ6IGludCwgZGF0YTog
Ynl0ZXMsIGVuZF9zdHJlYW06IGJvb2wpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX3F1aWMuc2Vu
ZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGRhdGEsIGVuZF9zdHJlYW0pCisKKyAgICBkZWYgc2Vu
ZF9oZWFkZXJzKAorICAgICAgICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVy
cywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICBpZiBz
ZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICBoZWFkZXJzX2RpY3QgPSBkaWN0KGhlYWRlcnMp
CisgICAgICAgICAgICBkYXRhID0gaGVhZGVyc19kaWN0W2IiOm1ldGhvZCJdICsgYiIgIiArIGhl
YWRlcnNfZGljdFtiIjpwYXRoIl0gKyBiIlxyXG4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBkYXRhID0gYiIiCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQsIGRhdGEsIGVuZF9zdHJlYW0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvaDAvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvdzNjLWlt
cG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYzNjFlYTQwNTUxYjYyODZiM2UxZWU1ZjI5YTc3NzRhZTYw
NzBiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2Mt
aW1wb3J0LmxvZwpAQCAtMCwwICsxLDE4IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05v
bmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvaDAvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29ubmVj
dGlvbi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKQEAgLTAsMCArMSBA
QAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJl
Y3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGY4YzU0MjgzY2Q3
N2M3ZjlkM2VkZGU4ZDc5MGMwMmEwNTMwOGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSw3NzYgQEAKK2ltcG9y
dCBsb2dnaW5nCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0KK2Zyb20gdHlwaW5nIGlt
cG9ydCBEaWN0LCBMaXN0LCBPcHRpb25hbCwgU2V0CisKK2ltcG9ydCBweWxzcXBhY2sKKworZnJv
bSBhaW9xdWljLmJ1ZmZlciBpbXBvcnQgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIGVuY29kZV91
aW50X3ZhcgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgKAorICAgIERhdGFSZWNlaXZl
ZCwKKyAgICBIM0V2ZW50LAorICAgIEhlYWRlcnMsCisgICAgSGVhZGVyc1JlY2VpdmVkLAorICAg
IFB1c2hQcm9taXNlUmVjZWl2ZWQsCispCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBv
cnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb24sIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbAorZnJvbSBhaW9x
dWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZlbnQsIFN0cmVhbURhdGFSZWNlaXZlZAorZnJv
bSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKKworbG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIoImh0dHAzIikKKworSDNfQUxQTiA9IFsiaDMtMjciLCAiaDMtMjYi
LCAiaDMtMjUiXQorCisKK2NsYXNzIEVycm9yQ29kZShJbnRFbnVtKToKKyAgICBIVFRQX05PX0VS
Uk9SID0gMHgxMDAKKyAgICBIVFRQX0dFTkVSQUxfUFJPVE9DT0xfRVJST1IgPSAweDEwMQorICAg
IEhUVFBfSU5URVJOQUxfRVJST1IgPSAweDEwMgorICAgIEhUVFBfU1RSRUFNX0NSRUFUSU9OX0VS
Uk9SID0gMHgxMDMKKyAgICBIVFRQX0NMT1NFRF9DUklUSUNBTF9TVFJFQU0gPSAweDEwNAorICAg
IEhUVFBfRlJBTUVfVU5FWFBFQ1RFRCA9IDB4MTA1CisgICAgSFRUUF9GUkFNRV9FUlJPUiA9IDB4
MTA2CisgICAgSFRUUF9FWENFU1NJVkVfTE9BRCA9IDB4MTA3CisgICAgSFRUUF9JRF9FUlJPUiA9
IDB4MTA4CisgICAgSFRUUF9TRVRUSU5HU19FUlJPUiA9IDB4MTA5CisgICAgSFRUUF9NSVNTSU5H
X1NFVFRJTkdTID0gMHgxMEEKKyAgICBIVFRQX1JFUVVFU1RfUkVKRUNURUQgPSAweDEwQgorICAg
IEhUVFBfUkVRVUVTVF9DQU5DRUxMRUQgPSAweDEwQworICAgIEhUVFBfUkVRVUVTVF9JTkNPTVBM
RVRFID0gMHgxMEQKKyAgICBIVFRQX0VBUkxZX1JFU1BPTlNFID0gMHgxMEUKKyAgICBIVFRQX0NP
Tk5FQ1RfRVJST1IgPSAweDEwRgorICAgIEhUVFBfVkVSU0lPTl9GQUxMQkFDSyA9IDB4MTEwCisg
ICAgSFRUUF9RUEFDS19ERUNPTVBSRVNTSU9OX0ZBSUxFRCA9IDB4MjAwCisgICAgSFRUUF9RUEFD
S19FTkNPREVSX1NUUkVBTV9FUlJPUiA9IDB4MjAxCisgICAgSFRUUF9RUEFDS19ERUNPREVSX1NU
UkVBTV9FUlJPUiA9IDB4MjAyCisKKworY2xhc3MgRnJhbWVUeXBlKEludEVudW0pOgorICAgIERB
VEEgPSAweDAKKyAgICBIRUFERVJTID0gMHgxCisgICAgUFJJT1JJVFkgPSAweDIKKyAgICBDQU5D
RUxfUFVTSCA9IDB4MworICAgIFNFVFRJTkdTID0gMHg0CisgICAgUFVTSF9QUk9NSVNFID0gMHg1
CisgICAgR09BV0FZID0gMHg3CisgICAgTUFYX1BVU0hfSUQgPSAweEQKKyAgICBEVVBMSUNBVEVf
UFVTSCA9IDB4RQorCisKK2NsYXNzIEhlYWRlcnNTdGF0ZShFbnVtKToKKyAgICBJTklUSUFMID0g
MAorICAgIEFGVEVSX0hFQURFUlMgPSAxCisgICAgQUZURVJfVFJBSUxFUlMgPSAyCisKKworY2xh
c3MgU2V0dGluZyhJbnRFbnVtKToKKyAgICBRUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFkgPSAxCisg
ICAgU0VUVElOR1NfTUFYX0hFQURFUl9MSVNUX1NJWkUgPSA2CisgICAgUVBBQ0tfQkxPQ0tFRF9T
VFJFQU1TID0gNworICAgIFNFVFRJTkdTX05VTV9QTEFDRUhPTERFUlMgPSA5CisKKworY2xhc3Mg
U3RyZWFtVHlwZShJbnRFbnVtKToKKyAgICBDT05UUk9MID0gMAorICAgIFBVU0ggPSAxCisgICAg
UVBBQ0tfRU5DT0RFUiA9IDIKKyAgICBRUEFDS19ERUNPREVSID0gMworCisKK2NsYXNzIFByb3Rv
Y29sRXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBwcm90b2Nv
bCBlcnJvcnMuCisKKyAgICBUaGVzZSBlcnJvcnMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBBUEkg
dXNlciwgdGhleSBhcmUgaGFuZGxlZAorICAgIGluIDptZXRoOmBIM0Nvbm5lY3Rpb24uaGFuZGxl
X2V2ZW50YC4KKyAgICAiIiIKKworICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9HRU5F
UkFMX1BST1RPQ09MX0VSUk9SCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhc29uX3BocmFz
ZTogc3RyID0gIiIpOgorICAgICAgICBzZWxmLnJlYXNvbl9waHJhc2UgPSByZWFzb25fcGhyYXNl
CisKKworY2xhc3MgUXBhY2tEZWNvbXByZXNzaW9uRmFpbGVkKFByb3RvY29sRXJyb3IpOgorICAg
IGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPTVBSRVNTSU9OX0ZBSUxFRAor
CisKK2NsYXNzIFFwYWNrRGVjb2RlclN0cmVhbUVycm9yKFByb3RvY29sRXJyb3IpOgorICAgIGVy
cm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUgorCisK
K2NsYXNzIFFwYWNrRW5jb2RlclN0cmVhbUVycm9yKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9y
X2NvZGUgPSBFcnJvckNvZGUuSFRUUF9RUEFDS19FTkNPREVSX1NUUkVBTV9FUlJPUgorCisKK2Ns
YXNzIFN0cmVhbUNyZWF0aW9uRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3JfY29kZSA9
IEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUgorCisKK2NsYXNzIEZyYW1lVW5l
eHBlY3RlZChQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJyb3JDb2RlLkhUVFBf
RlJBTUVfVU5FWFBFQ1RFRAorCisKK2RlZiBlbmNvZGVfZnJhbWUoZnJhbWVfdHlwZTogaW50LCBm
cmFtZV9kYXRhOiBieXRlcykgLT4gYnl0ZXM6CisgICAgZnJhbWVfbGVuZ3RoID0gbGVuKGZyYW1l
X2RhdGEpCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWZyYW1lX2xlbmd0aCArIDE2KQorICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgYnVmLnB1c2hfdWludF92YXIoZnJh
bWVfbGVuZ3RoKQorICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lX2RhdGEpCisgICAgcmV0dXJuIGJ1
Zi5kYXRhCisKKworZGVmIGVuY29kZV9zZXR0aW5ncyhzZXR0aW5nczogRGljdFtpbnQsIGludF0p
IC0+IGJ5dGVzOgorICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQorICAgIGZvciBzZXR0
aW5nLCB2YWx1ZSBpbiBzZXR0aW5ncy5pdGVtcygpOgorICAgICAgICBidWYucHVzaF91aW50X3Zh
cihzZXR0aW5nKQorICAgICAgICBidWYucHVzaF91aW50X3Zhcih2YWx1ZSkKKyAgICByZXR1cm4g
YnVmLmRhdGEKKworCitkZWYgcGFyc2VfbWF4X3B1c2hfaWQoZGF0YTogYnl0ZXMpIC0+IGludDoK
KyAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgIG1heF9wdXNoX2lkID0gYnVmLnB1bGxf
dWludF92YXIoKQorICAgIGFzc2VydCBidWYuZW9mKCkKKyAgICByZXR1cm4gbWF4X3B1c2hfaWQK
KworCitkZWYgcGFyc2Vfc2V0dGluZ3MoZGF0YTogYnl0ZXMpIC0+IERpY3RbaW50LCBpbnRdOgor
ICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgc2V0dGluZ3MgPSBbXQorICAgIHdoaWxl
IG5vdCBidWYuZW9mKCk6CisgICAgICAgIHNldHRpbmcgPSBidWYucHVsbF91aW50X3ZhcigpCisg
ICAgICAgIHZhbHVlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBzZXR0aW5ncy5hcHBl
bmQoKHNldHRpbmcsIHZhbHVlKSkKKyAgICByZXR1cm4gZGljdChzZXR0aW5ncykKKworCitkZWYg
cWxvZ19lbmNvZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aDogaW50LCBzdHJlYW1faWQ6IGludCkg
LT4gRGljdDoKKyAgICByZXR1cm4geworICAgICAgICAiYnl0ZV9sZW5ndGgiOiBzdHIoYnl0ZV9s
ZW5ndGgpLAorICAgICAgICAiZnJhbWUiOiB7ImZyYW1lX3R5cGUiOiAiZGF0YSJ9LAorICAgICAg
ICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2RlZiBxbG9nX2VuY29k
ZV9oZWFkZXJzKGhlYWRlcnM6IEhlYWRlcnMpIC0+IExpc3RbRGljdF06CisgICAgcmV0dXJuIFsK
KyAgICAgICAgeyJuYW1lIjogaFswXS5kZWNvZGUoInV0ZjgiKSwgInZhbHVlIjogaFsxXS5kZWNv
ZGUoInV0ZjgiKX0gZm9yIGggaW4gaGVhZGVycworICAgIF0KKworCitkZWYgcWxvZ19lbmNvZGVf
aGVhZGVyc19mcmFtZSgKKyAgICBieXRlX2xlbmd0aDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBz
dHJlYW1faWQ6IGludAorKSAtPiBEaWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xl
bmd0aCI6IHN0cihieXRlX2xlbmd0aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6
ICJoZWFkZXJzIiwgImhlYWRlcnMiOiBxbG9nX2VuY29kZV9oZWFkZXJzKGhlYWRlcnMpfSwKKyAg
ICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitkZWYgcWxvZ19l
bmNvZGVfcHVzaF9wcm9taXNlX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6
IEhlYWRlcnMsIHB1c2hfaWQ6IGludCwgc3RyZWFtX2lkOiBpbnQKKykgLT4gRGljdDoKKyAgICBy
ZXR1cm4geworICAgICAgICAiYnl0ZV9sZW5ndGgiOiBzdHIoYnl0ZV9sZW5ndGgpLAorICAgICAg
ICAiZnJhbWUiOiB7CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJwdXNoX3Byb21pc2UiLAor
ICAgICAgICAgICAgImhlYWRlcnMiOiBxbG9nX2VuY29kZV9oZWFkZXJzKGhlYWRlcnMpLAorICAg
ICAgICAgICAgInB1c2hfaWQiOiBzdHIocHVzaF9pZCksCisgICAgICAgIH0sCisgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworY2xhc3MgSDNTdHJlYW06Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmJsb2NrZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmJsb2NrZWRfZnJhbWVfc2l6ZTogT3B0
aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKKyAgICAgICAgc2Vs
Zi5lbmRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5mcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAg
ICAgICBzZWxmLmhlYWRlcnNfcmVjdl9zdGF0ZTogSGVhZGVyc1N0YXRlID0gSGVhZGVyc1N0YXRl
LklOSVRJQUwKKyAgICAgICAgc2VsZi5oZWFkZXJzX3NlbmRfc3RhdGU6IEhlYWRlcnNTdGF0ZSA9
IEhlYWRlcnNTdGF0ZS5JTklUSUFMCisgICAgICAgIHNlbGYucHVzaF9pZDogT3B0aW9uYWxbaW50
XSA9IE5vbmUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKKyAgICAgICAgc2Vs
Zi5zdHJlYW1fdHlwZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworCitjbGFzcyBIM0Nvbm5lY3Rp
b246CisgICAgIiIiCisgICAgQSBsb3ctbGV2ZWwgSFRUUC8zIGNvbm5lY3Rpb24gb2JqZWN0Lgor
CisgICAgOnBhcmFtIHF1aWM6IEEgOmNsYXNzOmB+YWlvcXVpYy5jb25uZWN0aW9uLlF1aWNDb25u
ZWN0aW9uYCBpbnN0YW5jZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWlj
OiBRdWljQ29ubmVjdGlvbik6CisgICAgICAgIHNlbGYuX21heF90YWJsZV9jYXBhY2l0eSA9IDQw
OTYKKyAgICAgICAgc2VsZi5fYmxvY2tlZF9zdHJlYW1zID0gMTYKKworICAgICAgICBzZWxmLl9p
c19jbGllbnQgPSBxdWljLmNvbmZpZ3VyYXRpb24uaXNfY2xpZW50CisgICAgICAgIHNlbGYuX2lz
X2RvbmUgPSBGYWxzZQorICAgICAgICBzZWxmLl9xdWljID0gcXVpYworICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IHF1aWMuX3F1aWNfbG9nZ2Vy
CisgICAgICAgIHNlbGYuX2RlY29kZXIgPSBweWxzcXBhY2suRGVjb2RlcigKKyAgICAgICAgICAg
IHNlbGYuX21heF90YWJsZV9jYXBhY2l0eSwgc2VsZi5fYmxvY2tlZF9zdHJlYW1zCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5fZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCA9IDAKKyAgICAgICAgc2Vs
Zi5fZGVjb2Rlcl9ieXRlc19zZW50ID0gMAorICAgICAgICBzZWxmLl9lbmNvZGVyID0gcHlsc3Fw
YWNrLkVuY29kZXIoKQorICAgICAgICBzZWxmLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAor
ICAgICAgICBzZWxmLl9lbmNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX3N0cmVh
bTogRGljdFtpbnQsIEgzU3RyZWFtXSA9IHt9CisKKyAgICAgICAgc2VsZi5fbWF4X3B1c2hfaWQ6
IE9wdGlvbmFsW2ludF0gPSA4IGlmIHNlbGYuX2lzX2NsaWVudCBlbHNlIE5vbmUKKyAgICAgICAg
c2VsZi5fbmV4dF9wdXNoX2lkOiBpbnQgPSAwCisKKyAgICAgICAgc2VsZi5fbG9jYWxfY29udHJv
bF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2FsX2Rl
Y29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9sb2Nh
bF9lbmNvZGVyX3N0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgICAgICBzZWxm
Ll9wZWVyX2NvbnRyb2xfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBz
ZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAg
ICBzZWxmLl9wZWVyX2VuY29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisg
ICAgICAgIHNlbGYuX2luaXRfY29ubmVjdGlvbigpCisKKyAgICBkZWYgaGFuZGxlX2V2ZW50KHNl
bGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAg
ICAgICBIYW5kbGUgYSBRVUlDIGV2ZW50IGFuZCByZXR1cm4gYSBsaXN0IG9mIEhUVFAgZXZlbnRz
LgorCisgICAgICAgIDpwYXJhbSBldmVudDogVGhlIFFVSUMgZXZlbnQgdG8gaGFuZGxlLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVk
KSBhbmQgbm90IHNlbGYuX2lzX2RvbmU6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBldmVudC5z
dHJlYW1faWQKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFt
KHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzdHJlYW1f
aWQgJSA0ID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3Jl
cXVlc3Rfb3JfcHVzaF9kYXRhKAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBldmVu
dC5kYXRhLCBldmVudC5lbmRfc3RyZWFtCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBlbGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQpOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVjZWl2ZV9zdHJlYW1fZGF0YV91bmkoCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2ZW50LmRhdGEsIGV2ZW50LmVuZF9zdHJlYW0K
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFByb3RvY29sRXJyb3Ig
YXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuX2lzX2RvbmUgPSBUcnVlCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpYy5jbG9zZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1l
eGMuZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZT1leGMucmVhc29uX3BocmFzZQorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgc2VuZF9wdXNoX3Byb21pc2Uo
c2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIFNlbmQgYSBwdXNoIHByb21pc2UgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWVk
IHN0cmVhbS4KKworICAgICAgICBSZXR1cm5zIHRoZSBzdHJlYW0gSUQgb24gd2hpY2ggaGVhZGVy
cyBhbmQgZGF0YSBjYW4gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUg
c3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGRhdGEuCisgICAgICAgIDpwYXJhbSBoZWFk
ZXJzOiBUaGUgSFRUUCByZXF1ZXN0IGhlYWRlcnMgZm9yIHRoaXMgcHVzaC4KKyAgICAgICAgIiIi
CisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5faXNfY2xpZW50LCAiT25seSBzZXJ2ZXJzIG1heSBz
ZW5kIGEgcHVzaCBwcm9taXNlLiIKKyAgICAgICAgaWYgc2VsZi5fbWF4X3B1c2hfaWQgaXMgTm9u
ZSBvciBzZWxmLl9uZXh0X3B1c2hfaWQgPj0gc2VsZi5fbWF4X3B1c2hfaWQ6CisgICAgICAgICAg
ICByYWlzZSBOb0F2YWlsYWJsZVB1c2hJREVycm9yCisKKyAgICAgICAgIyBzZW5kIHB1c2ggcHJv
bWlzZQorICAgICAgICBwdXNoX2lkID0gc2VsZi5fbmV4dF9wdXNoX2lkCisgICAgICAgIHNlbGYu
X25leHRfcHVzaF9pZCArPSAxCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgK
KyAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAgIGVuY29kZV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLAorICAgICAgICAgICAgICAgIGVuY29k
ZV91aW50X3ZhcihwdXNoX2lkKSArIHNlbGYuX2VuY29kZV9oZWFkZXJzKHN0cmVhbV9pZCwgaGVh
ZGVycyksCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyDCoGNyZWF0ZSBw
dXNoIHN0cmVhbQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3Ry
ZWFtKFN0cmVhbVR5cGUuUFVTSCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRh
KHB1c2hfc3RyZWFtX2lkLCBlbmNvZGVfdWludF92YXIocHVzaF9pZCkpCisKKyAgICAgICAgcmV0
dXJuIHB1c2hfc3RyZWFtX2lkCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDog
aW50LCBkYXRhOiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgIiIi
CisgICAgICAgIFNlbmQgZGF0YSBvbiB0aGUgZ2l2ZW4gc3RyZWFtLgorCisgICAgICAgIFRvIHJl
dHJpZXZlIGRhdGFncmFtIHdoaWNoIG5lZWQgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIGNh
bGwgdGhlIFFVSUMKKyAgICAgICAgY29ubmVjdGlvbidzIDptZXRoOmB+YWlvcXVpYy5jb25uZWN0
aW9uLlF1aWNDb25uZWN0aW9uLmRhdGFncmFtc190b19zZW5kYAorICAgICAgICBtZXRob2QuCisK
KyAgICAgICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSBJRCBvbiB3aGljaCB0byBzZW5k
IHRoZSBkYXRhLgorICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gc2VuZC4KKyAgICAg
ICAgOnBhcmFtIGVuZF9zdHJlYW06IFdoZXRoZXIgdG8gZW5kIHRoZSBzdHJlYW0uCisgICAgICAg
ICIiIgorICAgICAgICAjIGNoZWNrIERBVEEgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICBzdHJl
YW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisgICAgICAgIGlmIHN0
cmVhbS5oZWFkZXJzX3NlbmRfc3RhdGUgIT0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlM6Cisg
ICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93
ZWQgaW4gdGhpcyBzdGF0ZSIpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2Vs
Zi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAg
ICAgICAgIGV2ZW50PSJmcmFtZV9jcmVhdGVkIiwKKyAgICAgICAgICAgICAgICBkYXRhPXFsb2df
ZW5jb2RlX2RhdGFfZnJhbWUoYnl0ZV9sZW5ndGg9bGVuKGRhdGEpLCBzdHJlYW1faWQ9c3RyZWFt
X2lkKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoCisgICAgICAgICAgICBzdHJlYW1faWQsIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuREFUQSwg
ZGF0YSksIGVuZF9zdHJlYW0KKyAgICAgICAgKQorCisgICAgZGVmIHNlbmRfaGVhZGVycygKKyAg
ICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIGVuZF9zdHJlYW06
IGJvb2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQg
aGVhZGVycyBvbiB0aGUgZ2l2ZW4gc3RyZWFtLgorCisgICAgICAgIFRvIHJldHJpZXZlIGRhdGFn
cmFtIHdoaWNoIG5lZWQgdG8gYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIGNhbGwgdGhlIFFVSUMK
KyAgICAgICAgY29ubmVjdGlvbidzIDptZXRoOmB+YWlvcXVpYy5jb25uZWN0aW9uLlF1aWNDb25u
ZWN0aW9uLmRhdGFncmFtc190b19zZW5kYAorICAgICAgICBtZXRob2QuCisKKyAgICAgICAgOnBh
cmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSBJRCBvbiB3aGljaCB0byBzZW5kIHRoZSBoZWFkZXJz
LgorICAgICAgICA6cGFyYW0gaGVhZGVyczogVGhlIEhUVFAgaGVhZGVycyB0byBzZW5kLgorICAg
ICAgICA6cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KKyAgICAg
ICAgIiIiCisgICAgICAgICMgY2hlY2sgSEVBREVSUyBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAg
IHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAg
aWYgc3RyZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxF
UlM6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIkhFQURFUlMgZnJhbWUgaXMg
bm90IGFsbG93ZWQgaW4gdGhpcyBzdGF0ZSIpCisKKyAgICAgICAgZnJhbWVfZGF0YSA9IHNlbGYu
X2VuY29kZV9oZWFkZXJzKHN0cmVhbV9pZCwgaGVhZGVycykKKworICAgICAgICAjIGxvZyBmcmFt
ZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
aHR0cCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAg
ICAgICAgIGRhdGE9cWxvZ19lbmNvZGVfaGVhZGVyc19mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgYnl0ZV9sZW5ndGg9bGVuKGZyYW1lX2RhdGEpLCBoZWFkZXJzPWhlYWRlcnMsIHN0cmVhbV9p
ZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAg
ICMgdXBkYXRlIHN0YXRlIGFuZCBzZW5kIGhlYWRlcnMKKyAgICAgICAgaWYgc3RyZWFtLmhlYWRl
cnNfc2VuZF9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgIHN0cmVh
bS5oZWFkZXJzX3NlbmRfc3RhdGUgPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUworICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNT
dGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEo
CisgICAgICAgICAgICBzdHJlYW1faWQsIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuSEVBREVSUywg
ZnJhbWVfZGF0YSksIGVuZF9zdHJlYW0KKyAgICAgICAgKQorCisgICAgZGVmIF9jcmVhdGVfdW5p
X3N0cmVhbShzZWxmLCBzdHJlYW1fdHlwZTogaW50KSAtPiBpbnQ6CisgICAgICAgICIiIgorICAg
ICAgICBDcmVhdGUgYW4gdW5pZGlyZWN0aW9uYWwgc3RyZWFtIG9mIHRoZSBnaXZlbiB0eXBlLgor
ICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgIHNlbGYuX3F1
aWMuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihzdHJlYW1fdHlw
ZSkpCisgICAgICAgIHJldHVybiBzdHJlYW1faWQKKworICAgIGRlZiBfZGVjb2RlX2hlYWRlcnMo
c2VsZiwgc3RyZWFtX2lkOiBpbnQsIGZyYW1lX2RhdGE6IE9wdGlvbmFsW2J5dGVzXSkgLT4gSGVh
ZGVyczoKKyAgICAgICAgIiIiCisgICAgICAgIERlY29kZSBhIEhFQURFUlMgYmxvY2sgYW5kIHNl
bmQgZGVjb2RlciB1cGRhdGVzIG9uIHRoZSBkZWNvZGVyIHN0cmVhbS4KKworICAgICAgICBUaGlz
IGlzIGNhbGxlZCB3aXRoIGZyYW1lX2RhdGE9Tm9uZSB3aGVuIGEgc3RyZWFtIGJlY29tZXMgdW5i
bG9ja2VkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZnJhbWVf
ZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9k
ZWNvZGVyLnJlc3VtZV9oZWFkZXIoc3RyZWFtX2lkKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBkZWNvZGVyLCBoZWFkZXJzID0gc2VsZi5fZGVjb2Rlci5mZWVkX2hlYWRlcihz
dHJlYW1faWQsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3Nl
bnQgKz0gbGVuKGRlY29kZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQsIGRlY29kZXIpCisgICAgICAgIGV4Y2Vw
dCBweWxzcXBhY2suRGVjb21wcmVzc2lvbkZhaWxlZCBhcyBleGM6CisgICAgICAgICAgICByYWlz
ZSBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoKSBmcm9tIGV4YworCisgICAgICAgIHJldHVybiBo
ZWFkZXJzCisKKyAgICBkZWYgX2VuY29kZV9oZWFkZXJzKHNlbGYsIHN0cmVhbV9pZDogaW50LCBo
ZWFkZXJzOiBIZWFkZXJzKSAtPiBieXRlczoKKyAgICAgICAgIiIiCisgICAgICAgIEVuY29kZSBh
IEhFQURFUlMgYmxvY2sgYW5kIHNlbmQgZW5jb2RlciB1cGRhdGVzIG9uIHRoZSBlbmNvZGVyIHN0
cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIGVuY29kZXIsIGZyYW1lX2RhdGEgPSBzZWxmLl9l
bmNvZGVyLmVuY29kZShzdHJlYW1faWQsIGhlYWRlcnMpCisgICAgICAgIHNlbGYuX2VuY29kZXJf
Ynl0ZXNfc2VudCArPSBsZW4oZW5jb2RlcikKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVh
bV9kYXRhKHNlbGYuX2xvY2FsX2VuY29kZXJfc3RyZWFtX2lkLCBlbmNvZGVyKQorICAgICAgICBy
ZXR1cm4gZnJhbWVfZGF0YQorCisgICAgZGVmIF9nZXRfb3JfY3JlYXRlX3N0cmVhbShzZWxmLCBz
dHJlYW1faWQ6IGludCkgLT4gSDNTdHJlYW06CisgICAgICAgIGlmIHN0cmVhbV9pZCBub3QgaW4g
c2VsZi5fc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtW3N0cmVhbV9pZF0gPSBIM1N0
cmVhbShzdHJlYW1faWQpCisgICAgICAgIHJldHVybiBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXQor
CisgICAgZGVmIF9oYW5kbGVfY29udHJvbF9mcmFtZShzZWxmLCBmcmFtZV90eXBlOiBpbnQsIGZy
YW1lX2RhdGE6IGJ5dGVzKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEg
ZnJhbWUgcmVjZWl2ZWQgb24gdGhlIHBlZXIncyBjb250cm9sIHN0cmVhbS4KKyAgICAgICAgIiIi
CisgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLlNFVFRJTkdTOgorICAgICAgICAg
ICAgc2V0dGluZ3MgPSBwYXJzZV9zZXR0aW5ncyhmcmFtZV9kYXRhKQorICAgICAgICAgICAgZW5j
b2RlciA9IHNlbGYuX2VuY29kZXIuYXBwbHlfc2V0dGluZ3MoCisgICAgICAgICAgICAgICAgbWF4
X3RhYmxlX2NhcGFjaXR5PXNldHRpbmdzLmdldChTZXR0aW5nLlFQQUNLX01BWF9UQUJMRV9DQVBB
Q0lUWSwgMCksCisgICAgICAgICAgICAgICAgYmxvY2tlZF9zdHJlYW1zPXNldHRpbmdzLmdldChT
ZXR0aW5nLlFQQUNLX0JMT0NLRURfU1RSRUFNUywgMCksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJl
YW1faWQsIGVuY29kZXIpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuTUFY
X1BVU0hfSUQ6CisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAg
ICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hf
SUQiKQorICAgICAgICAgICAgc2VsZi5fbWF4X3B1c2hfaWQgPSBwYXJzZV9tYXhfcHVzaF9pZChm
cmFtZV9kYXRhKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAgICAgICAgICAgRnJh
bWVUeXBlLkRBVEEsCisgICAgICAgICAgICBGcmFtZVR5cGUuSEVBREVSUywKKyAgICAgICAgICAg
IEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRF
X1BVU0gsCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIklu
dmFsaWQgZnJhbWUgdHlwZSBvbiBjb250cm9sIHN0cmVhbSIpCisKKyAgICBkZWYgX2hhbmRsZV9y
ZXF1ZXN0X29yX3B1c2hfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGZyYW1lX3R5cGU6
IGludCwKKyAgICAgICAgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdLAorICAgICAgICBzdHJl
YW06IEgzU3RyZWFtLAorICAgICAgICBzdHJlYW1fZW5kZWQ6IGJvb2wsCisgICAgKSAtPiBMaXN0
W0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgZnJhbWUgcmVjZWl2ZWQg
b24gYSByZXF1ZXN0IG9yIHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgaHR0cF9l
dmVudHM6IExpc3RbSDNFdmVudF0gPSBbXQorCisgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gRnJh
bWVUeXBlLkRBVEE6CisgICAgICAgICAgICAjIGNoZWNrIERBVEEgZnJhbWUgaXMgYWxsb3dlZAor
ICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUu
QUZURVJfSEVBREVSUzoKKyAgICAgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIkRB
VEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzdGF0ZSIpCisKKyAgICAgICAgICAgIGlm
IHN0cmVhbV9lbmRlZCBvciBmcmFtZV9kYXRhOgorICAgICAgICAgICAgICAgIGh0dHBfZXZlbnRz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YT1mcmFtZV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aF9pZD1zdHJlYW0ucHVzaF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
LnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5IRUFERVJTOgorICAgICAgICAgICAg
IyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgICAgIGlmIHN0cmVhbS5o
ZWFkZXJzX3JlY3Zfc3RhdGUgPT0gSGVhZGVyc1N0YXRlLkFGVEVSX1RSQUlMRVJTOgorICAgICAg
ICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBpcyBub3QgYWxs
b3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAgICAgIyB0cnkgdG8gZGVjb2RlIEhFQURF
UlMsIG1heSByYWlzZSBweWxzcXBhY2suU3RyZWFtQmxvY2tlZAorICAgICAgICAgICAgaGVhZGVy
cyA9IHNlbGYuX2RlY29kZV9oZWFkZXJzKHN0cmVhbS5zdHJlYW1faWQsIGZyYW1lX2RhdGEpCisK
KyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZl
bnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRwIiwKKyAgICAgICAgICAgICAg
ICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cWxv
Z19lbmNvZGVfaGVhZGVyc19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVu
Z3RoPXN0cmVhbS5ibG9ja2VkX2ZyYW1lX3NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IGZyYW1lX2RhdGEgaXMgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBsZW4oZnJh
bWVfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPWhlYWRlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdXBkYXRl
IHN0YXRlIGFuZCBlbWl0IGhlYWRlcnMKKyAgICAgICAgICAgIGlmIHN0cmVhbS5oZWFkZXJzX3Jl
Y3Zfc3RhdGUgPT0gSGVhZGVyc1N0YXRlLklOSVRJQUw6CisgICAgICAgICAgICAgICAgc3RyZWFt
LmhlYWRlcnNfcmVjdl9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0cmVhbS5oZWFkZXJzX3JlY3Zfc3RhdGUgPSBI
ZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAg
IGhlYWRlcnM9aGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVz
aF9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW1fZW5kZWQsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBlbGlmIHN0cmVhbS5mcmFtZV90eXBlID09
IEZyYW1lVHlwZS5QVVNIX1BST01JU0UgYW5kIHN0cmVhbS5wdXNoX2lkIGlzIE5vbmU6CisgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIEZy
YW1lVW5leHBlY3RlZCgiQ2xpZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpCisgICAg
ICAgICAgICBmcmFtZV9idWYgPSBCdWZmZXIoZGF0YT1mcmFtZV9kYXRhKQorICAgICAgICAgICAg
cHVzaF9pZCA9IGZyYW1lX2J1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGhlYWRlcnMg
PSBzZWxmLl9kZWNvZGVfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX2lk
LCBmcmFtZV9kYXRhW2ZyYW1lX2J1Zi50ZWxsKCkgOl0KKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICBl
dmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2VuY29k
ZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlX2xlbmd0
aD1sZW4oZnJhbWVfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPWhlYWRl
cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXB1c2hfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgZW1pdCBldmVudAor
ICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIFB1c2hQcm9t
aXNlUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywgcHVzaF9p
ZD1wdXNoX2lkLCBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICkKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlIGluICgKKyAgICAgICAgICAg
IEZyYW1lVHlwZS5QUklPUklUWSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5DQU5DRUxfUFVTSCwK
KyAgICAgICAgICAgIEZyYW1lVHlwZS5TRVRUSU5HUywKKyAgICAgICAgICAgIEZyYW1lVHlwZS5Q
VVNIX1BST01JU0UsCisgICAgICAgICAgICBGcmFtZVR5cGUuR09BV0FZLAorICAgICAgICAgICAg
RnJhbWVUeXBlLk1BWF9QVVNIX0lELAorICAgICAgICAgICAgRnJhbWVUeXBlLkRVUExJQ0FURV9Q
VVNILAorICAgICAgICApOgorICAgICAgICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKAorICAg
ICAgICAgICAgICAgICJJbnZhbGlkIGZyYW1lIHR5cGUgb24gcmVxdWVzdCBzdHJlYW0iCisgICAg
ICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZQorICAgICAgICAgICAgICAgIGVs
c2UgIkludmFsaWQgZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIKKyAgICAgICAgICAgICkKKwor
ICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgIGRlZiBfaW5pdF9jb25uZWN0aW9uKHNl
bGYpIC0+IE5vbmU6CisgICAgICAgICMgc2VuZCBvdXIgc2V0dGluZ3MKKyAgICAgICAgc2VsZi5f
bG9jYWxfY29udHJvbF9zdHJlYW1faWQgPSBzZWxmLl9jcmVhdGVfdW5pX3N0cmVhbShTdHJlYW1U
eXBlLkNPTlRST0wpCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAgICAg
ICAgICAgIHNlbGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2Rl
X2ZyYW1lKAorICAgICAgICAgICAgICAgIEZyYW1lVHlwZS5TRVRUSU5HUywKKyAgICAgICAgICAg
ICAgICBlbmNvZGVfc2V0dGluZ3MoCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NBUEFDSVRZOiBzZWxmLl9tYXhf
dGFibGVfY2FwYWNpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nLlFQQUNLX0JM
T0NLRURfU1RSRUFNUzogc2VsZi5fYmxvY2tlZF9zdHJlYW1zLAorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgaWYgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9tYXhfcHVzaF9pZCBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9sb2NhbF9jb250cm9sX3N0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBlbmNvZGVf
ZnJhbWUoRnJhbWVUeXBlLk1BWF9QVVNIX0lELCBlbmNvZGVfdWludF92YXIoc2VsZi5fbWF4X3B1
c2hfaWQpKSwKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNyZWF0ZSBlbmNvZGVyIGFuZCBk
ZWNvZGVyIHN0cmVhbXMKKyAgICAgICAgc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQgPSBz
ZWxmLl9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tfRU5D
T0RFUgorICAgICAgICApCisgICAgICAgIHNlbGYuX2xvY2FsX2RlY29kZXJfc3RyZWFtX2lkID0g
c2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0oCisgICAgICAgICAgICBTdHJlYW1UeXBlLlFQQUNLX0RF
Q09ERVIKKyAgICAgICAgKQorCisgICAgZGVmIF9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVzaF9kYXRh
KAorICAgICAgICBzZWxmLCBzdHJlYW06IEgzU3RyZWFtLCBkYXRhOiBieXRlcywgc3RyZWFtX2Vu
ZGVkOiBib29sCisgICAgKSAtPiBMaXN0W0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAg
SGFuZGxlIGRhdGEgcmVjZWl2ZWQgb24gYSByZXF1ZXN0IG9yIHB1c2ggc3RyZWFtLgorICAgICAg
ICAiIiIKKyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0gPSBbXQorCisgICAgICAg
IHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAgICBpZiBzdHJlYW1fZW5kZWQ6CisgICAgICAg
ICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisgICAgICAgIGlmIHN0cmVhbS5ibG9ja2VkOgorICAg
ICAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisKKyAgICAgICAgIyBzaG9ydGN1dCBmb3IgREFU
QSBmcmFtZSBmcmFnbWVudHMKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgc3RyZWFtLmZyYW1l
X3R5cGUgPT0gRnJhbWVUeXBlLkRBVEEKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uZnJhbWVfc2l6
ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGxlbihzdHJlYW0uYnVmZmVyKSA8IHN0cmVh
bS5mcmFtZV9zaXplCisgICAgICAgICk6CisgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRh
PXN0cmVhbS5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9c3RyZWFtLnB1c2hf
aWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgLT0gbGVuKHN0cmVh
bS5idWZmZXIpCisgICAgICAgICAgICBzdHJlYW0uYnVmZmVyID0gYiIiCisgICAgICAgICAgICBy
ZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIGhhbmRsZSBsb25lIEZJTgorICAgICAgICBp
ZiBzdHJlYW1fZW5kZWQgYW5kIG5vdCBzdHJlYW0uYnVmZmVyOgorICAgICAgICAgICAgaHR0cF9l
dmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YT1iIiIsCisgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9c3RyZWFtLnB1
c2hfaWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1zdHJlYW0uYnVmZmVyKQorICAgICAgICBjb25zdW1lZCA9IDAK
KworICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigpOgorICAgICAgICAgICAgIyBmZXRjaCBuZXh0
IGZyYW1lIGhlYWRlcgorICAgICAgICAgICAgaWYgc3RyZWFtLmZyYW1lX3NpemUgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV90
eXBlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZnJh
bWVfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVm
ZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAg
IGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAgICAgICAgICAgIyBsb2cgZnJhbWUKKyAg
ICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgICAgIGFuZCBzdHJlYW0uZnJhbWVfdHlwZSA9
PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
dGVnb3J5PSJodHRwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJmcmFtZV9wYXJz
ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2VuY29kZV9kYXRhX2ZyYW1l
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPXN0cmVhbS5mcmFtZV9z
aXplLCBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNoZWNrIGhvdyBtdWNo
IGRhdGEgaXMgYXZhaWxhYmxlCisgICAgICAgICAgICBjaHVua19zaXplID0gbWluKHN0cmVhbS5m
cmFtZV9zaXplLCBidWYuY2FwYWNpdHkgLSBjb25zdW1lZCkKKyAgICAgICAgICAgIGlmIHN0cmVh
bS5mcmFtZV90eXBlICE9IEZyYW1lVHlwZS5EQVRBIGFuZCBjaHVua19zaXplIDwgc3RyZWFtLmZy
YW1lX3NpemU6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyByZWFkIGF2
YWlsYWJsZSBkYXRhCisgICAgICAgICAgICBmcmFtZV9kYXRhID0gYnVmLnB1bGxfYnl0ZXMoY2h1
bmtfc2l6ZSkKKyAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAgICAg
ICAjIGRldGVjdCBlbmQgb2YgZnJhbWUKKyAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9zaXplIC09
IGNodW5rX3NpemUKKyAgICAgICAgICAgIGlmIG5vdCBzdHJlYW0uZnJhbWVfc2l6ZToKKyAgICAg
ICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSA9IE5vbmUKKworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZCgKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5faGFuZGxlX3JlcXVlc3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9c3RyZWFtLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZV9kYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW09
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbS5lbmRl
ZCBhbmQgYnVmLmVvZigpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgZXhjZXB0IHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkOgorICAgICAgICAg
ICAgICAgIHN0cmVhbS5ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHN0cmVhbS5ibG9j
a2VkX2ZyYW1lX3NpemUgPSBsZW4oZnJhbWVfZGF0YSkKKyAgICAgICAgICAgICAgICBicmVhawor
CisgICAgICAgICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgIHN0
cmVhbS5idWZmZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICByZXR1cm4g
aHR0cF9ldmVudHMKKworICAgIGRlZiBfcmVjZWl2ZV9zdHJlYW1fZGF0YV91bmkoCisgICAgICAg
IHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1fZW5kZWQ6IGJvb2wK
KyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgIGh0dHBfZXZlbnRzOiBMaXN0W0gzRXZl
bnRdID0gW10KKworICAgICAgICBzdHJlYW0uYnVmZmVyICs9IGRhdGEKKyAgICAgICAgaWYgc3Ry
ZWFtX2VuZGVkOgorICAgICAgICAgICAgc3RyZWFtLmVuZGVkID0gVHJ1ZQorCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1bWVkID0gMAorICAg
ICAgICB1bmJsb2NrZWRfc3RyZWFtczogU2V0W2ludF0gPSBzZXQoKQorCisgICAgICAgIHdoaWxl
IHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlBVU0ggb3Igbm90IGJ1Zi5lb2YoKToK
KyAgICAgICAgICAgICMgZmV0Y2ggc3RyZWFtIHR5cGUgZm9yIHVuaWRpcmVjdGlvbmFsIHN0cmVh
bXMKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSBpcyBOb25lOgorICAgICAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnN0cmVhbV90eXBlID0gYnVm
LnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFkRXJyb3I6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBi
dWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHVuaWNpdHkKKyAgICAgICAgICAg
ICAgICBpZiBzdHJlYW0uc3RyZWFtX3R5cGUgPT0gU3RyZWFtVHlwZS5DT05UUk9MOgorICAgICAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NvbnRyb2xfc3RyZWFtX2lkIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RyZWFtQ3JlYXRpb25FcnJvcigiT25s
eSBvbmUgY29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIpCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgPSBzdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAg
ICAgICAgZWxpZiBzdHJlYW0uc3RyZWFtX3R5cGUgPT0gU3RyZWFtVHlwZS5RUEFDS19ERUNPREVS
OgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RyZWFtQ3JlYXRpb25F
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgUVBBQ0sgZGVjb2Rl
ciBzdHJlYW0gaXMgYWxsb3dlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcGVlcl9kZWNvZGVyX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1f
aWQKKyAgICAgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBl
LlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZW5jb2Rl
cl9zdHJlYW1faWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBT
dHJlYW1DcmVhdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9u
ZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2VuY29kZXJfc3RyZWFtX2lkID0g
c3RyZWFtLnN0cmVhbV9pZAorCisgICAgICAgICAgICBpZiBzdHJlYW0uc3RyZWFtX3R5cGUgPT0g
U3RyZWFtVHlwZS5DT05UUk9MOgorICAgICAgICAgICAgICAgICMgZmV0Y2ggbmV4dCBmcmFtZQor
ICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1
Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfbGVuZ3RoID0gYnVm
LnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9kYXRhID0gYnVmLnB1
bGxfYnl0ZXMoZnJhbWVfbGVuZ3RoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFk
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29uc3Vt
ZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfY29udHJvbF9m
cmFtZShmcmFtZV90eXBlLCBmcmFtZV9kYXRhKQorICAgICAgICAgICAgZWxpZiBzdHJlYW0uc3Ry
ZWFtX3R5cGUgPT0gU3RyZWFtVHlwZS5QVVNIOgorICAgICAgICAgICAgICAgICMgZmV0Y2ggcHVz
aCBpZAorICAgICAgICAgICAgICAgIGlmIHN0cmVhbS5wdXNoX2lkIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5wdXNoX2lk
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVy
UmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIHJlbW92ZSBw
cm9jZXNzZWQgZGF0YSBmcm9tIGJ1ZmZlcgorICAgICAgICAgICAgICAgIHN0cmVhbS5idWZmZXIg
PSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVzaF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW1fZW5kZWQp
CisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNL
X0RFQ09ERVI6CisgICAgICAgICAgICAgICAgIyBmZWVkIHVuZnJhbWVkIGRhdGEgdG8gZGVjb2Rl
cgorICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRlcyhidWYuY2FwYWNpdHkgLSBi
dWYudGVsbCgpKQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorICAgICAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZW5jb2Rlci5mZWVkX2Rl
Y29kZXIoZGF0YSkKKyAgICAgICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLkRlY29kZXJTdHJl
YW1FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFFwYWNrRGVjb2RlclN0
cmVhbUVycm9yKCkgZnJvbSBleGMKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVz
X3JlY2VpdmVkICs9IGxlbihkYXRhKQorICAgICAgICAgICAgZWxpZiBzdHJlYW0uc3RyZWFtX3R5
cGUgPT0gU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSOgorICAgICAgICAgICAgICAgICMgZmVlZCB1
bmZyYW1lZCBkYXRhIHRvIGVuY29kZXIKKyAgICAgICAgICAgICAgICBkYXRhID0gYnVmLnB1bGxf
Ynl0ZXMoYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSkKKyAgICAgICAgICAgICAgICBjb25zdW1l
ZCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg
IHVuYmxvY2tlZF9zdHJlYW1zLnVwZGF0ZShzZWxmLl9kZWNvZGVyLmZlZWRfZW5jb2RlcihkYXRh
KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLkVuY29kZXJTdHJlYW1FcnJvciBh
cyBleGM6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFFwYWNrRW5jb2RlclN0cmVhbUVycm9y
KCkgZnJvbSBleGMKKyAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVk
ICs9IGxlbihkYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHVua25v
d24gc3RyZWFtIHR5cGUsIGRpc2NhcmQgZGF0YQorICAgICAgICAgICAgICAgIGJ1Zi5zZWVrKGJ1
Zi5jYXBhY2l0eSkKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAg
ICAgICAjIHJlbW92ZSBwcm9jZXNzZWQgZGF0YSBmcm9tIGJ1ZmZlcgorICAgICAgICBzdHJlYW0u
YnVmZmVyID0gc3RyZWFtLmJ1ZmZlcltjb25zdW1lZDpdCisKKyAgICAgICAgIyBwcm9jZXNzIHVu
YmxvY2tlZCBzdHJlYW1zCisgICAgICAgIGZvciBzdHJlYW1faWQgaW4gdW5ibG9ja2VkX3N0cmVh
bXM6CisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXQorCisgICAg
ICAgICAgICAjIHJlc3VtZSBoZWFkZXJzCisgICAgICAgICAgICBodHRwX2V2ZW50cy5leHRlbmQo
CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfb3JfcHVzaF9mcmFtZSgKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1GcmFtZVR5cGUuSEVBREVSUywKKyAgICAgICAg
ICAgICAgICAgICAgZnJhbWVfZGF0YT1Ob25lLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW09
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVuZGVkIGFu
ZCBub3Qgc3RyZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBzdHJlYW0uYmxvY2tlZCA9IEZhbHNlCisgICAgICAgICAgICBzdHJlYW0uYmxv
Y2tlZF9mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAgICAjIHJlc3VtZSBwcm9jZXNzaW5n
CisgICAgICAgICAgICBpZiBzdHJlYW0uYnVmZmVyOgorICAgICAgICAgICAgICAgIGh0dHBfZXZl
bnRzLmV4dGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZV9yZXF1ZXN0X29y
X3B1c2hfZGF0YShzdHJlYW0sIGIiIiwgc3RyZWFtLmVuZGVkKQorICAgICAgICAgICAgICAgICkK
KworICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9ldmVudHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZl
bnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkMjFjNWFiYzQyNzBjMmU4ZjFiZTU4YTAwOWFlNzUyODEyZDFh
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRz
LnB5CkBAIC0wLDAgKzEsNjYgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwor
ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitIZWFkZXJzID0gTGlz
dFtUdXBsZVtieXRlcywgYnl0ZXNdXQorCisKK2NsYXNzIEgzRXZlbnQ6CisgICAgIiIiCisgICAg
QmFzZSBjbGFzcyBmb3IgSFRUUC8zIGV2ZW50cy4KKyAgICAiIiIKKworCitAZGF0YWNsYXNzCitj
bGFzcyBEYXRhUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIERhdGFSZWNlaXZl
ZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEgc3RyZWFtIGZy
b20KKyAgICB0aGUgcmVtb3RlIHBlZXIuCisgICAgIiIiCisKKyAgICBkYXRhOiBieXRlcworICAg
ICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgorCisgICAgc3RyZWFtX2lkOiBpbnQKKyAg
ICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGRhdGEgd2FzIHJlY2VpdmVkIGZvci4iCisKKyAg
ICBzdHJlYW1fZW5kZWQ6IGJvb2wKKyAgICAiV2hldGhlciB0aGUgU1RSRUFNIGZyYW1lIGhhZCB0
aGUgRklOIGJpdCBzZXQuIgorCisgICAgcHVzaF9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAg
ICAiVGhlIFB1c2ggSUQgb3IgYE5vbmVgIGlmIHRoaXMgaXMgbm90IGEgcHVzaC4iCisKKworQGRh
dGFjbGFzcworY2xhc3MgSGVhZGVyc1JlY2VpdmVkKEgzRXZlbnQpOgorICAgICIiIgorICAgIFRo
ZSBIZWFkZXJzUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgaGVhZGVycyBhcmUgcmVj
ZWl2ZWQuCisgICAgIiIiCisKKyAgICBoZWFkZXJzOiBIZWFkZXJzCisgICAgIlRoZSBoZWFkZXJz
LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3RyZWFtIHRoZSBo
ZWFkZXJzIHdlcmUgcmVjZWl2ZWQgZm9yLiIKKworICAgIHN0cmVhbV9lbmRlZDogYm9vbAorICAg
ICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4gYml0IHNldC4iCisKKyAgICBw
dXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICJUaGUgUHVzaCBJRCBvciBgTm9uZWAg
aWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBQdXNoUHJvbWlz
ZVJlY2VpdmVkKEgzRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQdXNoZWRTdHJlYW1SZWNlaXZl
ZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIHB1c2hlZCBzdHJlYW0gaGFzIGJlZW4KKyAgICBy
ZWNlaXZlZCBmcm9tIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhl
YWRlcnMKKyAgICAiVGhlIHJlcXVlc3QgaGVhZGVycy4iCisKKyAgICBwdXNoX2lkOiBpbnQKKyAg
ICAiVGhlIFB1c2ggSUQgb2YgdGhlIHB1c2ggcHJvbWlzZS4iCisKKyAgICBzdHJlYW1faWQ6IGlu
dAorICAgICJUaGUgU3RyZWFtIElEIG9mIHRoZSBzdHJlYW0gdGhhdCB0aGUgcHVzaCBpcyByZWxh
dGVkIHRvLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9leGNlcHRp
b25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDUyMDBjMWQ2MWZhNWIzYTExNWI0MzQ2NGQ1NjdlYTNhYTI4NTc2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9leGNlcHRpb25zLnB5CkBAIC0w
LDAgKzEsMTAgQEAKK2NsYXNzIEgzRXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBIVFRQLzMgZXhjZXB0aW9ucy4KKyAgICAiIiIKKworCitjbGFzcyBOb0F2YWls
YWJsZVB1c2hJREVycm9yKEgzRXJyb3IpOgorICAgICIiIgorICAgIFRoZXJlIGFyZSBubyBhdmFp
bGFibGUgcHVzaCBJRHMgbGVmdC4KKyAgICAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
My93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjM2M2U5YjYwODBiMGVmM2U4YmQ2OGFhNTMz
MDI0OWRmZjEyMjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2gzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
My9jb25uZWN0aW9uLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9leGNlcHRpb25zLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcHkudHlwZWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcHkudHlwZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU2NDJmNzlmMjFkODcyZjAxMDk3OWRjZjZmMGM0YTQx
NWFjYzE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50
eXBlZApAQCAtMCwwICsxIEBACitNYXJrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMv
X19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYy
ZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQ
eXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L2NvbmZpZ3VyYXRpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1
cmF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NjFmODI5NzllOTk3NmQyOWU3YzU4YWYyN2YzZWE2MWQw
ZGEwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9j
b25maWd1cmF0aW9uLnB5CkBAIC0wLDAgKzEsMTI0IEBACitmcm9tIGRhdGFjbGFzc2VzIGltcG9y
dCBkYXRhY2xhc3MsIGZpZWxkCitmcm9tIG9zIGltcG9ydCBQYXRoTGlrZQorZnJvbSB0eXBpbmcg
aW1wb3J0IEFueSwgTGlzdCwgT3B0aW9uYWwsIFRleHRJTywgVW5pb24KKworZnJvbSAuLnRscyBp
bXBvcnQgU2Vzc2lvblRpY2tldCwgbG9hZF9wZW1fcHJpdmF0ZV9rZXksIGxvYWRfcGVtX3g1MDlf
Y2VydGlmaWNhdGVzCitmcm9tIC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gLnBhY2tl
dCBpbXBvcnQgUXVpY1Byb3RvY29sVmVyc2lvbgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWND
b25maWd1cmF0aW9uOgorICAgICIiIgorICAgIEEgUVVJQyBjb25maWd1cmF0aW9uLgorICAgICIi
IgorCisgICAgYWxwbl9wcm90b2NvbHM6IE9wdGlvbmFsW0xpc3Rbc3RyXV0gPSBOb25lCisgICAg
IiIiCisgICAgQSBsaXN0IG9mIHN1cHBvcnRlZCBBTFBOIHByb3RvY29scy4KKyAgICAiIiIKKwor
ICAgIGNvbm5lY3Rpb25faWRfbGVuZ3RoOiBpbnQgPSA4CisgICAgIiIiCisgICAgVGhlIGxlbmd0
aCBpbiBieXRlcyBvZiBsb2NhbCBjb25uZWN0aW9uIElEcy4KKyAgICAiIiIKKworICAgIGlkbGVf
dGltZW91dDogZmxvYXQgPSA2MC4wCisgICAgIiIiCisgICAgVGhlIGlkbGUgdGltZW91dCBpbiBz
ZWNvbmRzLgorCisgICAgVGhlIGNvbm5lY3Rpb24gaXMgdGVybWluYXRlZCBpZiBub3RoaW5nIGlz
IHJlY2VpdmVkIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24uCisgICAgIiIiCisKKyAgICBpc19jbGll
bnQ6IGJvb2wgPSBUcnVlCisgICAgIiIiCisgICAgV2hldGhlciB0aGlzIGlzIHRoZSBjbGllbnQg
c2lkZSBvZiB0aGUgUVVJQyBjb25uZWN0aW9uLgorICAgICIiIgorCisgICAgbWF4X2RhdGE6IGlu
dCA9IDEwNDg1NzYKKyAgICAiIiIKKyAgICBDb25uZWN0aW9uLXdpZGUgZmxvdyBjb250cm9sIGxp
bWl0LgorICAgICIiIgorCisgICAgbWF4X3N0cmVhbV9kYXRhOiBpbnQgPSAxMDQ4NTc2CisgICAg
IiIiCisgICAgUGVyLXN0cmVhbSBmbG93IGNvbnRyb2wgbGltaXQuCisgICAgIiIiCisKKyAgICBx
dWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlcl0gPSBOb25lCisgICAgIiIiCisgICAgVGhl
IDpjbGFzczpgfmFpb3F1aWMucXVpYy5sb2dnZXIuUXVpY0xvZ2dlcmAgaW5zdGFuY2UgdG8gbG9n
IGV2ZW50cyB0by4KKyAgICAiIiIKKworICAgIHNlY3JldHNfbG9nX2ZpbGU6IFRleHRJTyA9IE5v
bmUKKyAgICAiIiIKKyAgICBBIGZpbGUtbGlrZSBvYmplY3QgaW4gd2hpY2ggdG8gbG9nIHRyYWZm
aWMgc2VjcmV0cy4KKworICAgIFRoaXMgaXMgdXNlZnVsIHRvIGFuYWx5emUgdHJhZmZpYyBjYXB0
dXJlcyB3aXRoIFdpcmVzaGFyay4KKyAgICAiIiIKKworICAgIHNlcnZlcl9uYW1lOiBPcHRpb25h
bFtzdHJdID0gTm9uZQorICAgICIiIgorICAgIFRoZSBzZXJ2ZXIgbmFtZSB0byBzZW5kIGR1cmlu
ZyB0aGUgVExTIGhhbmRzaGFrZSB0aGUgU2VydmVyIE5hbWUgSW5kaWNhdGlvbi4KKworICAgIC4u
IG5vdGU6OiBUaGlzIGlzIG9ubHkgdXNlZCBieSBjbGllbnRzLgorICAgICIiIgorCisgICAgc2Vz
c2lvbl90aWNrZXQ6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdID0gTm9uZQorICAgICIiIgorICAg
IFRoZSBUTFMgc2Vzc2lvbiB0aWNrZXQgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHNlc3Npb24g
cmVzdW1wdGlvbi4KKyAgICAiIiIKKworICAgIGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9u
ZQorICAgIGNhZmlsZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBjYXBhdGg6IE9wdGlvbmFs
W3N0cl0gPSBOb25lCisgICAgY2VydGlmaWNhdGU6IEFueSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0
ZV9jaGFpbjogTGlzdFtBbnldID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisgICAgbWF4
X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgcHJpdmF0ZV9r
ZXk6IEFueSA9IE5vbmUKKyAgICBxdWFudHVtX3JlYWRpbmVzc190ZXN0OiBib29sID0gRmFsc2UK
KyAgICBzdXBwb3J0ZWRfdmVyc2lvbnM6IExpc3RbaW50XSA9IGZpZWxkKAorICAgICAgICBkZWZh
dWx0X2ZhY3Rvcnk9bGFtYmRhOiBbCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRS
QUZUXzI3LAorICAgICAgICAgICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNiwKKyAgICAg
ICAgICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUsCisgICAgICAgIF0KKyAgICApCisg
ICAgdmVyaWZ5X21vZGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICBkZWYgbG9hZF9jZXJ0
X2NoYWluKAorICAgICAgICBzZWxmLAorICAgICAgICBjZXJ0ZmlsZTogUGF0aExpa2UsCisgICAg
ICAgIGtleWZpbGU6IE9wdGlvbmFsW1BhdGhMaWtlXSA9IE5vbmUsCisgICAgICAgIHBhc3N3b3Jk
OiBPcHRpb25hbFtVbmlvbltieXRlcywgc3RyXV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIExvYWQgYSBwcml2YXRlIGtleSBhbmQgdGhlIGNvcnJlc3BvbmRp
bmcgY2VydGlmaWNhdGUuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIG9wZW4oY2VydGZpbGUs
ICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgY2VydGlmaWNhdGVzID0gbG9hZF9wZW1feDUwOV9j
ZXJ0aWZpY2F0ZXMoZnAucmVhZCgpKQorICAgICAgICBzZWxmLmNlcnRpZmljYXRlID0gY2VydGlm
aWNhdGVzWzBdCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfY2hhaW4gPSBjZXJ0aWZpY2F0ZXNb
MTpdCisKKyAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGgg
b3BlbihrZXlmaWxlLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBzZWxmLnByaXZhdGVf
a2V5ID0gbG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgICAgICAgICAgICAgICAgIGZwLnJlYWQo
KSwKKyAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9cGFzc3dvcmQuZW5jb2RlKCJ1dGY4IikK
KyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXNzd29yZCwgc3RyKQorICAgICAg
ICAgICAgICAgICAgICBlbHNlIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICkKKworICAgIGRl
ZiBsb2FkX3ZlcmlmeV9sb2NhdGlvbnMoCisgICAgICAgIHNlbGYsCisgICAgICAgIGNhZmlsZTog
T3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5v
bmUsCisgICAgICAgIGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIGEgc2V0IG9mICJjZXJ0aWZpY2F0aW9uIGF1
dGhvcml0eSIgKENBKSBjZXJ0aWZpY2F0ZXMgdXNlZCB0bworICAgICAgICB2YWxpZGF0ZSBvdGhl
ciBwZWVycycgY2VydGlmaWNhdGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5jYWZpbGUg
PSBjYWZpbGUKKyAgICAgICAgc2VsZi5jYXBhdGggPSBjYXBhdGgKKyAgICAgICAgc2VsZi5jYWRh
dGEgPSBjYWRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nv
bm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25uZWN0aW9uLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ2MWRmNGZjMTkxNmZkYTNlZmI0NjFlNjY3MzRlYzM1OWFlMGMzMjcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25uZWN0aW9u
LnB5CkBAIC0wLDAgKzEsMjY1MiBAQAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgbG9nZ2luZwor
aW1wb3J0IG9zCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSBkYXRhY2xhc3Nl
cyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0IEVudW0KK2Zyb20gdHlwaW5nIGlt
cG9ydCBBbnksIERlcXVlLCBEaWN0LCBGcm96ZW5TZXQsIExpc3QsIE9wdGlvbmFsLCBTZXF1ZW5j
ZSwgVHVwbGUKKworZnJvbSAuLiBpbXBvcnQgdGxzCitmcm9tIC4uYnVmZmVyIGltcG9ydCBVSU5U
X1ZBUl9NQVgsIEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yLCBzaXplX3VpbnRfdmFyCitmcm9tIC4g
aW1wb3J0IGV2ZW50cworZnJvbSAuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRp
b24KK2Zyb20gLmNyeXB0byBpbXBvcnQgQ3J5cHRvRXJyb3IsIENyeXB0b1BhaXIsIEtleVVuYXZh
aWxhYmxlRXJyb3IKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRyYWNlCitmcm9tIC5w
YWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUywKKyAgICBQ
QUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNL
RVRfVFlQRV9PTkVfUlRULAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZLAorICAgIFBBQ0tFVF9UWVBF
X1pFUk9fUlRULAorICAgIFBST0JJTkdfRlJBTUVfVFlQRVMsCisgICAgUkVUUllfSU5URUdSSVRZ
X1RBR19TSVpFLAorICAgIFF1aWNFcnJvckNvZGUsCisgICAgUXVpY0ZyYW1lVHlwZSwKKyAgICBR
dWljUHJvdG9jb2xWZXJzaW9uLAorICAgIFF1aWNTdHJlYW1GcmFtZSwKKyAgICBRdWljVHJhbnNw
b3J0UGFyYW1ldGVycywKKyAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZywKKyAgICBnZXRfc3Bp
bl9iaXQsCisgICAgaXNfbG9uZ19oZWFkZXIsCisgICAgcHVsbF9hY2tfZnJhbWUsCisgICAgcHVs
bF9xdWljX2hlYWRlciwKKyAgICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAg
cHVzaF9hY2tfZnJhbWUsCisgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLAorKQor
ZnJvbSAucGFja2V0X2J1aWxkZXIgaW1wb3J0ICgKKyAgICBQQUNLRVRfTUFYX1NJWkUsCisgICAg
UXVpY0RlbGl2ZXJ5U3RhdGUsCisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tl
dEJ1aWxkZXJTdG9wLAorKQorZnJvbSAucmVjb3ZlcnkgaW1wb3J0IEtfR1JBTlVMQVJJVFksIFF1
aWNQYWNrZXRSZWNvdmVyeSwgUXVpY1BhY2tldFNwYWNlCitmcm9tIC5zdHJlYW0gaW1wb3J0IFF1
aWNTdHJlYW0KKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInF1aWMiKQorCitFUE9DSF9T
SE9SVENVVFMgPSB7CisgICAgIkkiOiB0bHMuRXBvY2guSU5JVElBTCwKKyAgICAiSCI6IHRscy5F
cG9jaC5IQU5EU0hBS0UsCisgICAgIjAiOiB0bHMuRXBvY2guWkVST19SVFQsCisgICAgIjEiOiB0
bHMuRXBvY2guT05FX1JUVCwKK30KK01BWF9FQVJMWV9EQVRBID0gMHhGRkZGRkZGRgorU0VDUkVU
U19MQUJFTFMgPSBbCisgICAgWworICAgICAgICBOb25lLAorICAgICAgICAiUVVJQ19DTElFTlRf
RUFSTFlfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfSEFORFNIQUtFX1RS
QUZGSUNfU0VDUkVUIiwKKyAgICAgICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAor
ICAgIF0sCisgICAgWworICAgICAgICBOb25lLAorICAgICAgICBOb25lLAorICAgICAgICAiUVVJ
Q19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAgIlFVSUNfU0VSVkVS
X1RSQUZGSUNfU0VDUkVUXzAiLAorICAgIF0sCitdCitTVFJFQU1fRkxBR1MgPSAweDA3CisKK05l
dHdvcmtBZGRyZXNzID0gQW55CisKKyMgZnJhbWUgc2l6ZXMKK0FDS19GUkFNRV9DQVBBQ0lUWSA9
IDY0ICAjIEZJWE1FOiB0aGlzIGlzIGFyYml0cmFyeSEKK0FQUExJQ0FUSU9OX0NMT1NFX0ZSQU1F
X0NBUEFDSVRZID0gMSArIDggKyA4ICAjICsgcmVhc29uIGxlbmd0aAorSEFORFNIQUtFX0RPTkVf
RlJBTUVfQ0FQQUNJVFkgPSAxCitNQVhfREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4CitNQVhf
U1RSRUFNX0RBVEFfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOCArIDgKK05FV19DT05ORUNUSU9OX0lE
X0ZSQU1FX0NBUEFDSVRZID0gMSArIDggKyA4ICsgMSArIDIwICsgMTYKK1BBVEhfQ0hBTExFTkdF
X0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK1BBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkgPSAx
ICsgOAorUElOR19GUkFNRV9DQVBBQ0lUWSA9IDEKK1JFVElSRV9DT05ORUNUSU9OX0lEX0NBUEFD
SVRZID0gMSArIDgKK1NUUkVBTVNfQkxPQ0tFRF9DQVBBQ0lUWSA9IDEgKyA4CitUUkFOU1BPUlRf
Q0xPU0VfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyA4ICAjICsgcmVhc29uIGxlbmd0aAor
CisKK2RlZiBFUE9DSFMoc2hvcnRjdXQ6IHN0cikgLT4gRnJvemVuU2V0W3Rscy5FcG9jaF06Cisg
ICAgcmV0dXJuIGZyb3plbnNldChFUE9DSF9TSE9SVENVVFNbaV0gZm9yIGkgaW4gc2hvcnRjdXQp
CisKKworZGVmIGR1bXBfY2lkKGNpZDogYnl0ZXMpIC0+IHN0cjoKKyAgICByZXR1cm4gYmluYXNj
aWkuaGV4bGlmeShjaWQpLmRlY29kZSgiYXNjaWkiKQorCisKK2RlZiBnZXRfZXBvY2gocGFja2V0
X3R5cGU6IGludCkgLT4gdGxzLkVwb2NoOgorICAgIGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9U
WVBFX0lOSVRJQUw6CisgICAgICAgIHJldHVybiB0bHMuRXBvY2guSU5JVElBTAorICAgIGVsaWYg
cGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfWkVST19SVFQ6CisgICAgICAgIHJldHVybiB0bHMu
RXBvY2guWkVST19SVFQKKyAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRT
SEFLRToKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5IQU5EU0hBS0UKKyAgICBlbHNlOgorICAg
ICAgICByZXR1cm4gdGxzLkVwb2NoLk9ORV9SVFQKKworCitkZWYgc3RyZWFtX2lzX2NsaWVudF9p
bml0aWF0ZWQoc3RyZWFtX2lkOiBpbnQpIC0+IGJvb2w6CisgICAgIiIiCisgICAgUmV0dXJucyBU
cnVlIGlmIHRoZSBzdHJlYW0gaXMgY2xpZW50IGluaXRpYXRlZC4KKyAgICAiIiIKKyAgICByZXR1
cm4gbm90IChzdHJlYW1faWQgJiAxKQorCisKK2RlZiBzdHJlYW1faXNfdW5pZGlyZWN0aW9uYWwo
c3RyZWFtX2lkOiBpbnQpIC0+IGJvb2w6CisgICAgIiIiCisgICAgUmV0dXJucyBUcnVlIGlmIHRo
ZSBzdHJlYW0gaXMgdW5pZGlyZWN0aW9uYWwuCisgICAgIiIiCisgICAgcmV0dXJuIGJvb2woc3Ry
ZWFtX2lkICYgMikKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yX2NvZGU6IGludCwgZnJhbWVfdHlwZTogaW50LCBy
ZWFzb25fcGhyYXNlOiBzdHIpOgorICAgICAgICBzZWxmLmVycm9yX2NvZGUgPSBlcnJvcl9jb2Rl
CisgICAgICAgIHNlbGYuZnJhbWVfdHlwZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgc2VsZi5yZWFz
b25fcGhyYXNlID0gcmVhc29uX3BocmFzZQorCisgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3Ry
OgorICAgICAgICBzID0gIkVycm9yOiAlZCwgcmVhc29uOiAlcyIgJSAoc2VsZi5lcnJvcl9jb2Rl
LCBzZWxmLnJlYXNvbl9waHJhc2UpCisgICAgICAgIGlmIHNlbGYuZnJhbWVfdHlwZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIHMgKz0gIiwgZnJhbWVfdHlwZTogJXMiICUgc2VsZi5mcmFtZV90
eXBlCisgICAgICAgIHJldHVybiBzCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25BZGFwdGVyKGxv
Z2dpbmcuTG9nZ2VyQWRhcHRlcik6CisgICAgZGVmIHByb2Nlc3Moc2VsZiwgbXNnOiBzdHIsIGt3
YXJnczogQW55KSAtPiBUdXBsZVtzdHIsIEFueV06CisgICAgICAgIHJldHVybiAiWyVzXSAlcyIg
JSAoc2VsZi5leHRyYVsiaWQiXSwgbXNnKSwga3dhcmdzCisKKworQGRhdGFjbGFzcworY2xhc3Mg
UXVpY0Nvbm5lY3Rpb25JZDoKKyAgICBjaWQ6IGJ5dGVzCisgICAgc2VxdWVuY2VfbnVtYmVyOiBp
bnQKKyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzID0gYiIiCisgICAgd2FzX3NlbnQ6
IGJvb2wgPSBGYWxzZQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uU3RhdGUoRW51bSk6CisgICAg
RklSU1RGTElHSFQgPSAwCisgICAgQ09OTkVDVEVEID0gMQorICAgIENMT1NJTkcgPSAyCisgICAg
RFJBSU5JTkcgPSAzCisgICAgVEVSTUlOQVRFRCA9IDQKKworCitAZGF0YWNsYXNzCitjbGFzcyBR
dWljTmV0d29ya1BhdGg6CisgICAgYWRkcjogTmV0d29ya0FkZHJlc3MKKyAgICBieXRlc19yZWNl
aXZlZDogaW50ID0gMAorICAgIGJ5dGVzX3NlbnQ6IGludCA9IDAKKyAgICBpc192YWxpZGF0ZWQ6
IGJvb2wgPSBGYWxzZQorICAgIGxvY2FsX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9u
ZQorICAgIHJlbW90ZV9jaGFsbGVuZ2U6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKworICAgIGRl
ZiBjYW5fc2VuZChzZWxmLCBzaXplOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzZWxm
LmlzX3ZhbGlkYXRlZCBvciAoc2VsZi5ieXRlc19zZW50ICsgc2l6ZSkgPD0gMyAqIHNlbGYuYnl0
ZXNfcmVjZWl2ZWQKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWljUmVjZWl2ZUNvbnRleHQ6Cisg
ICAgZXBvY2g6IHRscy5FcG9jaAorICAgIGhvc3RfY2lkOiBieXRlcworICAgIG5ldHdvcmtfcGF0
aDogUXVpY05ldHdvcmtQYXRoCisgICAgcXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0
W0FueV1dCisgICAgdGltZTogZmxvYXQKKworCitFTkRfU1RBVEVTID0gZnJvemVuc2V0KAorICAg
IFsKKyAgICAgICAgUXVpY0Nvbm5lY3Rpb25TdGF0ZS5DTE9TSU5HLAorICAgICAgICBRdWljQ29u
bmVjdGlvblN0YXRlLkRSQUlOSU5HLAorICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLlRFUk1J
TkFURUQsCisgICAgXQorKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uOgorICAgICIiIgorICAg
IEEgUVVJQyBjb25uZWN0aW9uLgorCisgICAgVGhlIHN0YXRlIG1hY2hpbmUgaXMgZHJpdmVuIGJ5
IHRocmVlIGtpbmRzIG9mIHNvdXJjZXM6CisKKyAgICAtIHRoZSBBUEkgdXNlciByZXF1ZXN0aW5n
IGRhdGEgdG8gYmUgc2VuZCBvdXQgKHNlZSA6bWV0aDpgY29ubmVjdGAsCisgICAgICA6bWV0aDpg
c2VuZF9waW5nYCwgOm1ldGg6YHNlbmRfZGF0YWdyYW1fZGF0YWAgYW5kIDptZXRoOmBzZW5kX3N0
cmVhbV9kYXRhYCkKKyAgICAtIGRhdGEgYmVpbmcgcmVjZWl2ZWQgZnJvbSB0aGUgbmV0d29yayAo
c2VlIDptZXRoOmByZWNlaXZlX2RhdGFncmFtYCkKKyAgICAtIGEgdGltZXIgZmlyaW5nIChzZWUg
Om1ldGg6YGhhbmRsZV90aW1lcmApCisKKyAgICA6cGFyYW0gY29uZmlndXJhdGlvbjogVGhlIFFV
SUMgY29uZmlndXJhdGlvbiB0byB1c2UuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oCisg
ICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25m
aWd1cmF0aW9uLAorICAgICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNd
ID0gTm9uZSwKKyAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNd
ID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0aW9uYWxbdGxzLlNl
c3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUsCisgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRs
ZXI6IE9wdGlvbmFsW3Rscy5TZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgICkgLT4g
Tm9uZToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5pc19jbGllbnQ6CisgICAgICAgICAgICBh
c3NlcnQgKAorICAgICAgICAgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgaXMgTm9uZQor
ICAgICAgICAgICAgKSwgIkNhbm5vdCBzZXQgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBmb3IgYSBj
bGllbnQiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24uY2VydGlmaWNhdGUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICks
ICJTU0wgY2VydGlmaWNhdGUgaXMgcmVxdWlyZWQgZm9yIGEgc2VydmVyIgorICAgICAgICAgICAg
YXNzZXJ0ICgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByaXZhdGVfa2V5IGlzIG5v
dCBOb25lCisgICAgICAgICAgICApLCAiU1NMIHByaXZhdGUga2V5IGlzIHJlcXVpcmVkIGZvciBh
IHNlcnZlciIKKworICAgICAgICAjIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5fY29uZmln
dXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gY29uZmln
dXJhdGlvbi5pc19jbGllbnQKKworICAgICAgICBzZWxmLl9hY2tfZGVsYXkgPSBLX0dSQU5VTEFS
SVRZCisgICAgICAgIHNlbGYuX2Nsb3NlX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX2Nsb3NlX2V2ZW50OiBPcHRpb25hbFtldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0
ZWRdID0gTm9uZQorICAgICAgICBzZWxmLl9jb25uZWN0X2NhbGxlZCA9IEZhbHNlCisgICAgICAg
IHNlbGYuX2NyeXB0b3M6IERpY3RbdGxzLkVwb2NoLCBDcnlwdG9QYWlyXSA9IHt9CisgICAgICAg
IHNlbGYuX2NyeXB0b19idWZmZXJzOiBEaWN0W3Rscy5FcG9jaCwgQnVmZmVyXSA9IHt9CisgICAg
ICAgIHNlbGYuX2NyeXB0b19zdHJlYW1zOiBEaWN0W3Rscy5FcG9jaCwgUXVpY1N0cmVhbV0gPSB7
fQorICAgICAgICBzZWxmLl9ldmVudHM6IERlcXVlW2V2ZW50cy5RdWljRXZlbnRdID0gZGVxdWUo
KQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29tcGxldGUgPSBGYWxzZQorICAgICAgICBzZWxm
Ll9oYW5kc2hha2VfY29uZmlybWVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5faG9zdF9jaWRzID0g
WworICAgICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBjaWQ9b3Mu
dXJhbmRvbShjb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVuZ3RoKSwKKyAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRf
dG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAgICAgICAgICAgd2FzX3NlbnQ9VHJ1ZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmhvc3RfY2lkID0gc2VsZi5faG9z
dF9jaWRzWzBdLmNpZAorICAgICAgICBzZWxmLl9ob3N0X2NpZF9zZXEgPSAxCisgICAgICAgIHNl
bGYuX2xvY2FsX2Fja19kZWxheV9leHBvbmVudCA9IDMKKyAgICAgICAgc2VsZi5fbG9jYWxfYWN0
aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSA4CisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRh
ID0gY29uZmlndXJhdGlvbi5tYXhfZGF0YQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YV9z
ZW50ID0gY29uZmlndXJhdGlvbi5tYXhfZGF0YQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0
YV91c2VkID0gMAorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2Nh
bCA9IGNvbmZpZ3VyYXRpb24ubWF4X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IGNvbmZpZ3VyYXRpb24ubWF4X3N0cmVhbV9kYXRh
CisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgPSBjb25maWd1cmF0aW9u
Lm1heF9zdHJlYW1fZGF0YQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpID0g
MTI4CisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX3VuaSA9IDEyOAorICAgICAgICBz
ZWxmLl9sb3NzX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX25ldHdv
cmtfcGF0aHM6IExpc3RbUXVpY05ldHdvcmtQYXRoXSA9IFtdCisgICAgICAgIHNlbGYuX29yaWdp
bmFsX2Nvbm5lY3Rpb25faWQgPSBvcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgIHNlbGYu
X3BhY2luZ19hdDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRf
bnVtYmVyID0gMAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzX3JlY2VpdmVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fcGVlcl9jaWQgPSBvcy51cmFuZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlv
bl9pZF9sZW5ndGgpCisgICAgICAgIHNlbGYuX3BlZXJfY2lkX3NlcTogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfYXZhaWxhYmxlOiBMaXN0W1F1aWNDb25uZWN0
aW9uSWRdID0gW10KKyAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGIiIgorICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCA9IDMKKyAgICAgICAgc2VsZi5fcmVtb3Rl
X2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0ID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfaWRs
ZV90aW1lb3V0ID0gMC4wICAjIHNlY29uZHMKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9kYXRh
ID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGFfdXNlZCA9IDAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9kYXRhZ3JhbV9mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQor
ICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwgPSAwCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUgPSAwCisgICAgICAg
IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5pID0gMAorICAgICAgICBzZWxmLl9yZW1v
dGVfbWF4X3N0cmVhbXNfYmlkaSA9IDAKKyAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1z
X3VuaSA9IDAKKyAgICAgICAgc2VsZi5fc3BhY2VzOiBEaWN0W3Rscy5FcG9jaCwgUXVpY1BhY2tl
dFNwYWNlXSA9IHt9CisgICAgICAgIHNlbGYuX3NwaW5fYml0ID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fc3Bpbl9oaWdoZXN0X3BuID0gMAorICAgICAgICBzZWxmLl9zdGF0ZSA9IFF1aWNDb25uZWN0
aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgc2VsZi5fc3RhdGVsZXNzX3JldHJ5X2NvdW50
ID0gMAorICAgICAgICBzZWxmLl9zdHJlYW1zOiBEaWN0W2ludCwgUXVpY1N0cmVhbV0gPSB7fQor
ICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfYmlkaTogTGlzdFtRdWljU3RyZWFtXSA9IFtd
CisgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmk6IExpc3RbUXVpY1N0cmVhbV0gPSBb
XQorICAgICAgICBzZWxmLl92ZXJzaW9uOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAgICAg
ICMgbG9nZ2luZworICAgICAgICBpZiBsb2dnZXJfY29ubmVjdGlvbl9pZCBpcyBOb25lOgorICAg
ICAgICAgICAgbG9nZ2VyX2Nvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZAorICAgICAgICBz
ZWxmLl9sb2dnZXIgPSBRdWljQ29ubmVjdGlvbkFkYXB0ZXIoCisgICAgICAgICAgICBsb2dnZXIs
IHsiaWQiOiBkdW1wX2NpZChsb2dnZXJfY29ubmVjdGlvbl9pZCl9CisgICAgICAgICkKKyAgICAg
ICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlcjoKKyAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyID0gY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5zdGFydF90cmFjZSgKKyAgICAgICAg
ICAgICAgICBpc19jbGllbnQ9Y29uZmlndXJhdGlvbi5pc19jbGllbnQsIG9kY2lkPWxvZ2dlcl9j
b25uZWN0aW9uX2lkCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBsb3NzIHJlY292ZXJ5Cisg
ICAgICAgIHNlbGYuX2xvc3MgPSBRdWljUGFja2V0UmVjb3ZlcnkoCisgICAgICAgICAgICBpc19j
bGllbnRfd2l0aG91dF8xcnR0PXNlbGYuX2lzX2NsaWVudCwKKyAgICAgICAgICAgIHF1aWNfbG9n
Z2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc2VuZF9wcm9iZT1zZWxmLl9zZW5k
X3Byb2JlLAorICAgICAgICApCisKKyAgICAgICAgIyB0aGluZ3MgdG8gc2VuZAorICAgICAgICBz
ZWxmLl9jbG9zZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZGF0YWdyYW1zX3BlbmRp
bmc6IERlcXVlW2J5dGVzXSA9IGRlcXVlKCkKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlX2RvbmVf
cGVuZGluZyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3BpbmdfcGVuZGluZzogTGlzdFtpbnRdID0g
W10KKyAgICAgICAgc2VsZi5fcHJvYmVfcGVuZGluZyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Jl
dGlyZV9jb25uZWN0aW9uX2lkczogTGlzdFtpbnRdID0gW10KKyAgICAgICAgc2VsZi5fc3RyZWFt
c19ibG9ja2VkX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tldF9mZXRjaGVyCisg
ICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyCisKKyAgICAgICAgIyBmcmFtZSBoYW5kbGVycworICAgICAgICBzZWxmLl9fZnJhbWVfaGFu
ZGxlcnMgPSB7CisgICAgICAgICAgICAweDAwOiAoc2VsZi5faGFuZGxlX3BhZGRpbmdfZnJhbWUs
IEVQT0NIUygiSUgwMSIpKSwKKyAgICAgICAgICAgIDB4MDE6IChzZWxmLl9oYW5kbGVfcGluZ19m
cmFtZSwgRVBPQ0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMjogKHNlbGYuX2hhbmRsZV9h
Y2tfZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAgICAgICAgICAgMHgwMzogKHNlbGYuX2hhbmRs
ZV9hY2tfZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAgICAgICAgICAgMHgwNDogKHNlbGYuX2hh
bmRsZV9yZXNldF9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDA1
OiAoc2VsZi5faGFuZGxlX3N0b3Bfc2VuZGluZ19mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAg
ICAgICAgIDB4MDY6IChzZWxmLl9oYW5kbGVfY3J5cHRvX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwK
KyAgICAgICAgICAgIDB4MDc6IChzZWxmLl9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lLCBFUE9DSFMo
IjEiKSksCisgICAgICAgICAgICAweDA4OiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBP
Q0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MDk6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1l
LCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQTogKHNlbGYuX2hhbmRsZV9zdHJlYW1f
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBCOiAoc2VsZi5faGFuZGxlX3N0
cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEM6IChzZWxmLl9oYW5k
bGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwRDogKHNlbGYu
X2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBFOiAo
c2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4
MEY6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgxMDogKHNlbGYuX2hhbmRsZV9tYXhfZGF0YV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAg
ICAgICAgICAgIDB4MTE6IChzZWxmLl9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lLCBFUE9D
SFMoIjAxIikpLAorICAgICAgICAgICAgMHgxMjogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtc19i
aWRpX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxMzogKHNlbGYuX2hhbmRs
ZV9tYXhfc3RyZWFtc191bmlfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE0
OiAoc2VsZi5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAg
ICAgICAgIDB4MTU6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSwgRVBP
Q0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTY6IChzZWxmLl9oYW5kbGVfc3RyZWFtc19ibG9j
a2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxNzogKHNlbGYuX2hhbmRs
ZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE4
OiAoc2VsZi5faGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAor
ICAgICAgICAgICAgMHgxOTogKHNlbGYuX2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUE6IChzZWxmLl9oYW5kbGVfcGF0aF9j
aGFsbGVuZ2VfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDFCOiAoc2VsZi5f
aGFuZGxlX3BhdGhfcmVzcG9uc2VfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDFDOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUsIEVQT0NIUygiSUgxIikp
LAorICAgICAgICAgICAgMHgxRDogKHNlbGYuX2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1l
LCBFUE9DSFMoIjEiKSksCisgICAgICAgICAgICAweDFFOiAoc2VsZi5faGFuZGxlX2hhbmRzaGFr
ZV9kb25lX2ZyYW1lLCBFUE9DSFMoIjEiKSksCisgICAgICAgICAgICAweDMwOiAoc2VsZi5faGFu
ZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgzMTogKHNl
bGYuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgfQorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGNvbmZpZ3VyYXRpb24oc2VsZikgLT4gUXVpY0NvbmZpZ3Vy
YXRpb246CisgICAgICAgIHJldHVybiBzZWxmLl9jb25maWd1cmF0aW9uCisKKyAgICBkZWYgY2hh
bmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFN3
aXRjaCB0byB0aGUgbmV4dCBhdmFpbGFibGUgY29ubmVjdGlvbiBJRCBhbmQgcmV0aXJlCisgICAg
ICAgIHRoZSBwcmV2aW91cyBvbmUuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhv
ZCBjYWxsIDptZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAg
ICB3aGljaCBuZWVkcyB0byBiZSBzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5f
cGVlcl9jaWRfYXZhaWxhYmxlOgorICAgICAgICAgICAgIyByZXRpcmUgcHJldmlvdXMgQ0lECisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIlJldGlyaW5n
IENJRCAlcyAoJWQpIiwgZHVtcF9jaWQoc2VsZi5fcGVlcl9jaWQpLCBzZWxmLl9wZWVyX2NpZF9z
ZXEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3JldGlyZV9jb25uZWN0aW9uX2lk
cy5hcHBlbmQoc2VsZi5fcGVlcl9jaWRfc2VxKQorCisgICAgICAgICAgICAjIGFzc2lnbiBuZXcg
Q0lECisgICAgICAgICAgICBjb25uZWN0aW9uX2lkID0gc2VsZi5fcGVlcl9jaWRfYXZhaWxhYmxl
LnBvcCgwKQorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gY29ubmVjdGlvbl9pZC5z
ZXF1ZW5jZV9udW1iZXIKKyAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gY29ubmVjdGlvbl9p
ZC5jaWQKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAi
U3dpdGNoaW5nIHRvIENJRCAlcyAoJWQpIiwgZHVtcF9jaWQoc2VsZi5fcGVlcl9jaWQpLCBzZWxm
Ll9wZWVyX2NpZF9zZXEKKyAgICAgICAgICAgICkKKworICAgIGRlZiBjbG9zZSgKKyAgICAgICAg
c2VsZiwKKyAgICAgICAgZXJyb3JfY29kZTogaW50ID0gUXVpY0Vycm9yQ29kZS5OT19FUlJPUiwK
KyAgICAgICAgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIHJlYXNv
bl9waHJhc2U6IHN0ciA9ICIiLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IENsb3NlIHRoZSBjb25uZWN0aW9uLgorCisgICAgICAgIDpwYXJhbSBlcnJvcl9jb2RlOiBBbiBl
cnJvciBjb2RlIGluZGljYXRpbmcgd2h5IHRoZSBjb25uZWN0aW9uIGlzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiZWluZyBjbG9zZWQuCisgICAgICAgIDpwYXJhbSByZWFzb25fcGhyYXNl
OiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gaXMgYmVpbmcgY2xvc2VkLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fc3RhdGUgbm90IGluIEVORF9TVEFURVM6CisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCgKKyAgICAgICAg
ICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlw
ZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9cmVhc29uX3BocmFz
ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBUcnVl
CisKKyAgICBkZWYgY29ubmVjdChzZWxmLCBhZGRyOiBOZXR3b3JrQWRkcmVzcywgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEluaXRpYXRlIHRoZSBUTFMgaGFuZHNo
YWtlLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3IgY2xpZW50
cyBhbmQgYSBzaW5nbGUgdGltZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9k
IGNhbGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAg
IHdoaWNoIG5lZWRzIHRvIGJlIHNlbnQuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IFRoZSBuZXR3
b3JrIGFkZHJlc3Mgb2YgdGhlIHJlbW90ZSBwZWVyLgorICAgICAgICA6cGFyYW0gbm93OiBUaGUg
Y3VycmVudCB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0ICgKKyAgICAgICAgICAg
IHNlbGYuX2lzX2NsaWVudCBhbmQgbm90IHNlbGYuX2Nvbm5lY3RfY2FsbGVkCisgICAgICAgICks
ICJjb25uZWN0KCkgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0
aW1lIgorICAgICAgICBzZWxmLl9jb25uZWN0X2NhbGxlZCA9IFRydWUKKworICAgICAgICBzZWxm
Ll9uZXR3b3JrX3BhdGhzID0gW1F1aWNOZXR3b3JrUGF0aChhZGRyLCBpc192YWxpZGF0ZWQ9VHJ1
ZSldCisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRl
ZF92ZXJzaW9uc1swXQorICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisKKyAgICBkZWYg
ZGF0YWdyYW1zX3RvX3NlbmQoc2VsZiwgbm93OiBmbG9hdCkgLT4gTGlzdFtUdXBsZVtieXRlcywg
TmV0d29ya0FkZHJlc3NdXToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBhIGxpc3Qgb2Yg
YChkYXRhLCBhZGRyKWAgdHVwbGVzIG9mIGRhdGFncmFtcyB3aGljaCBuZWVkIHRvIGJlCisgICAg
ICAgIHNlbnQsIGFuZCB0aGUgbmV0d29yayBhZGRyZXNzIHRvIHdoaWNoIHRoZXkgbmVlZCB0byBi
ZSBzZW50LgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpg
Z2V0X3RpbWVyYCB0byBrbm93IHdoZW4gdGhlIG5leHQKKyAgICAgICAgdGltZXIgbmVlZHMgdG8g
YmUgc2V0LgorCisgICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAg
ICIiIgorICAgICAgICBuZXR3b3JrX3BhdGggPSBzZWxmLl9uZXR3b3JrX3BhdGhzWzBdCisKKyAg
ICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHJldHVybiBb
XQorCisgICAgICAgICMgYnVpbGQgZGF0YWdyYW1zCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFj
a2V0QnVpbGRlcigKKyAgICAgICAgICAgIGhvc3RfY2lkPXNlbGYuaG9zdF9jaWQsCisgICAgICAg
ICAgICBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAgcGFja2V0X251bWJl
cj1zZWxmLl9wYWNrZXRfbnVtYmVyLAorICAgICAgICAgICAgcGVlcl9jaWQ9c2VsZi5fcGVlcl9j
aWQsCisgICAgICAgICAgICBwZWVyX3Rva2VuPXNlbGYuX3BlZXJfdG9rZW4sCisgICAgICAgICAg
ICBxdWljX2xvZ2dlcj1zZWxmLl9xdWljX2xvZ2dlciwKKyAgICAgICAgICAgIHNwaW5fYml0PXNl
bGYuX3NwaW5fYml0LAorICAgICAgICAgICAgdmVyc2lvbj1zZWxmLl92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIGlmIHNlbGYuX2Nsb3NlX3BlbmRpbmc6CisgICAgICAgICAgICBmb3IgZXBv
Y2gsIHBhY2tldF90eXBlIGluICgKKyAgICAgICAgICAgICAgICAodGxzLkVwb2NoLk9ORV9SVFQs
IFBBQ0tFVF9UWVBFX09ORV9SVFQpLAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2guSEFORFNI
QUtFLCBQQUNLRVRfVFlQRV9IQU5EU0hBS0UpLAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2gu
SU5JVElBTCwgUEFDS0VUX1RZUEVfSU5JVElBTCksCisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbZXBvY2hdCisgICAgICAgICAgICAgICAgaWYg
Y3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
d3JpdGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9c2VsZi5f
Y2xvc2VfZXZlbnQuZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGU9c2VsZi5fY2xvc2VfZXZlbnQuZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlYXNvbl9waHJhc2U9c2VsZi5fY2xvc2VfZXZlbnQucmVhc29uX3BocmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9wZW5kaW5nID0g
RmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYuX2Nsb3Nl
X2JlZ2luKGlzX2luaXRpYXRvcj1UcnVlLCBub3c9bm93KQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgIyBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdo
dF9ieXRlcyA9ICgKKyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLmNvbmdlc3Rpb25fd2luZG93
IC0gc2VsZi5fbG9zcy5ieXRlc19pbl9mbGlnaHQKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGlmIHNlbGYuX3Byb2JlX3BlbmRpbmcgYW5kIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA8IFBB
Q0tFVF9NQVhfU0laRToKKyAgICAgICAgICAgICAgICBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMg
PSBQQUNLRVRfTUFYX1NJWkUKKworICAgICAgICAgICAgIyBsaW1pdCBkYXRhIG9uIHVuLXZhbGlk
YXRlZCBuZXR3b3JrIHBhdGhzCisgICAgICAgICAgICBpZiBub3QgbmV0d29ya19wYXRoLmlzX3Zh
bGlkYXRlZDoKKyAgICAgICAgICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9ICgKKyAg
ICAgICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLmJ5dGVzX3JlY2VpdmVkICogMyAtIG5ldHdv
cmtfcGF0aC5ieXRlc19zZW50CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQ6CisgICAg
ICAgICAgICAgICAgICAgIGZvciBlcG9jaCBpbiBbdGxzLkVwb2NoLklOSVRJQUwsIHRscy5FcG9j
aC5IQU5EU0hBS0VdOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGFuZHNo
YWtlKGJ1aWxkZXIsIGVwb2NoLCBub3cpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfYXBw
bGljYXRpb24oYnVpbGRlciwgbmV0d29ya19wYXRoLCBub3cpCisgICAgICAgICAgICBleGNlcHQg
UXVpY1BhY2tldEJ1aWxkZXJTdG9wOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBk
YXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKworICAgICAgICBpZiBkYXRhZ3Jh
bXM6CisgICAgICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0gYnVpbGRlci5wYWNrZXRfbnVt
YmVyCisKKyAgICAgICAgICAgICMgcmVnaXN0ZXIgcGFja2V0cworICAgICAgICAgICAgc2VudF9o
YW5kc2hha2UgPSBGYWxzZQorICAgICAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAg
ICAgICAgICAgICAgIHBhY2tldC5zZW50X3RpbWUgPSBub3cKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb3NzLm9uX3BhY2tldF9zZW50KAorICAgICAgICAgICAgICAgICAgICBwYWNrZXQ9cGFja2V0
LCBzcGFjZT1zZWxmLl9zcGFjZXNbcGFja2V0LmVwb2NoXQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICBpZiBwYWNrZXQuZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAg
ICAgICAgICAgICAgICAgICAgc2VudF9oYW5kc2hha2UgPSBUcnVlCisKKyAgICAgICAgICAgICAg
ICAjIGxvZyBwYWNrZXQKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50
KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3NlbnQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjog
c2VsZi5fcXVpY19sb2dnZXIucGFja2V0X3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhY2tldC5wYWNrZXRfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9udW1i
ZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3NpemUiOiBwYWNr
ZXQuc2VudF9ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaWQiOiBk
dW1wX2NpZChzZWxmLmhvc3RfY2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpc19sb25nX2hlYWRlcihwYWNrZXQucGFja2V0X3R5cGUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
Y2lkIjogZHVtcF9jaWQoc2VsZi5fcGVlcl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IHBhY2tldC5xdWlj
X2xvZ2dlcl9mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgY2FuIGRpc2NhcmQgaW5pdGlh
bCBrZXlzCisgICAgICAgICAgICBpZiBzZW50X2hhbmRzaGFrZSBhbmQgc2VsZi5faXNfY2xpZW50
OgorICAgICAgICAgICAgICAgIHNlbGYuX2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwp
CisKKyAgICAgICAgIyByZXR1cm4gZGF0YWdyYW1zIHRvIHNlbmQgYW5kIHRoZSBkZXN0aW5hdGlv
biBuZXR3b3JrIGFkZHJlc3MKKyAgICAgICAgcmV0ID0gW10KKyAgICAgICAgZm9yIGRhdGFncmFt
IGluIGRhdGFncmFtczoKKyAgICAgICAgICAgIGJ5dGVfbGVuZ3RoID0gbGVuKGRhdGFncmFtKQor
ICAgICAgICAgICAgbmV0d29ya19wYXRoLmJ5dGVzX3NlbnQgKz0gYnl0ZV9sZW5ndGgKKyAgICAg
ICAgICAgIHJldC5hcHBlbmQoKGRhdGFncmFtLCBuZXR3b3JrX3BhdGguYWRkcikpCisKKyAgICAg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgY2F0ZWdv
cnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJkYXRhZ3JhbXNfc2Vu
dCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eyJieXRlX2xlbmd0aCI6IGJ5dGVfbGVuZ3Ro
LCAiY291bnQiOiAxfSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHJldHVybiByZXQKKwor
ICAgIGRlZiBnZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlv
bmFsPUZhbHNlKSAtPiBpbnQ6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHN0cmVh
bSBJRCBmb3IgdGhlIG5leHQgc3RyZWFtIGNyZWF0ZWQgYnkgdGhpcyBlbmRwb2ludC4KKyAgICAg
ICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IChpbnQoaXNfdW5pZGlyZWN0aW9uYWwpIDw8IDEp
IHwgaW50KG5vdCBzZWxmLl9pc19jbGllbnQpCisgICAgICAgIHdoaWxlIHN0cmVhbV9pZCBpbiBz
ZWxmLl9zdHJlYW1zOgorICAgICAgICAgICAgc3RyZWFtX2lkICs9IDQKKyAgICAgICAgcmV0dXJu
IHN0cmVhbV9pZAorCisgICAgZGVmIGdldF90aW1lcihzZWxmKSAtPiBPcHRpb25hbFtmbG9hdF06
CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHRpbWUgYXQgd2hpY2ggdGhlIHRpbWVy
IHNob3VsZCBmaXJlIG9yIE5vbmUgaWYgbm8gdGltZXIgaXMgbmVlZGVkLgorICAgICAgICAiIiIK
KyAgICAgICAgdGltZXJfYXQgPSBzZWxmLl9jbG9zZV9hdAorICAgICAgICBpZiBzZWxmLl9zdGF0
ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgICMgYWNrIHRpbWVyCisgICAgICAgICAg
ICBmb3Igc3BhY2UgaW4gc2VsZi5fbG9zcy5zcGFjZXM6CisgICAgICAgICAgICAgICAgaWYgc3Bh
Y2UuYWNrX2F0IGlzIG5vdCBOb25lIGFuZCBzcGFjZS5hY2tfYXQgPCB0aW1lcl9hdDoKKyAgICAg
ICAgICAgICAgICAgICAgdGltZXJfYXQgPSBzcGFjZS5hY2tfYXQKKworICAgICAgICAgICAgIyBs
b3NzIGRldGVjdGlvbiB0aW1lcgorICAgICAgICAgICAgc2VsZi5fbG9zc19hdCA9IHNlbGYuX2xv
c3MuZ2V0X2xvc3NfZGV0ZWN0aW9uX3RpbWUoKQorICAgICAgICAgICAgaWYgc2VsZi5fbG9zc19h
dCBpcyBub3QgTm9uZSBhbmQgc2VsZi5fbG9zc19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAg
ICAgIHRpbWVyX2F0ID0gc2VsZi5fbG9zc19hdAorCisgICAgICAgICAgICAjIHBhY2luZyB0aW1l
cgorICAgICAgICAgICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lIGFuZCBzZWxmLl9w
YWNpbmdfYXQgPCB0aW1lcl9hdDoKKyAgICAgICAgICAgICAgICB0aW1lcl9hdCA9IHNlbGYuX3Bh
Y2luZ19hdAorCisgICAgICAgIHJldHVybiB0aW1lcl9hdAorCisgICAgZGVmIGhhbmRsZV90aW1l
cihzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxl
IHRoZSB0aW1lci4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNhbGwgOm1l
dGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAgIHdoaWNoIG5l
ZWRzIHRvIGJlIHNlbnQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4K
KyAgICAgICAgIiIiCisgICAgICAgICMgZW5kIG9mIGNsb3NpbmcgcGVyaW9kIG9yIGlkbGUgdGlt
ZW91dAorICAgICAgICBpZiBub3cgPj0gc2VsZi5fY2xvc2VfYXQ6CisgICAgICAgICAgICBpZiBz
ZWxmLl9jbG9zZV9ldmVudCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2V2
ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuSU5URVJOQUxfRVJST1IsCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
SWRsZSB0aW1lb3V0IiwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9jbG9z
ZV9lbmQoKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBsb3NzIGRldGVjdGlvbiB0
aW1lb3V0CisgICAgICAgIGlmIHNlbGYuX2xvc3NfYXQgaXMgbm90IE5vbmUgYW5kIG5vdyA+PSBz
ZWxmLl9sb3NzX2F0OgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJMb3NzIGRldGVj
dGlvbiB0cmlnZ2VyZWQiKQorICAgICAgICAgICAgc2VsZi5fbG9zcy5vbl9sb3NzX2RldGVjdGlv
bl90aW1lb3V0KG5vdz1ub3cpCisKKyAgICBkZWYgbmV4dF9ldmVudChzZWxmKSAtPiBPcHRpb25h
bFtldmVudHMuUXVpY0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHJpZXZlIHRoZSBu
ZXh0IGV2ZW50IGZyb20gdGhlIGV2ZW50IGJ1ZmZlci4KKworICAgICAgICBSZXR1cm5zIGBOb25l
YCBpZiB0aGVyZSBhcmUgbm8gYnVmZmVyZWQgZXZlbnRzLgorICAgICAgICAiIiIKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V2ZW50cy5wb3BsZWZ0KCkKKyAgICAgICAg
ZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHJl
Y2VpdmVfZGF0YWdyYW0oc2VsZiwgZGF0YTogYnl0ZXMsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBu
b3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGFuIGluY29t
aW5nIGRhdGFncmFtLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6
bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2gg
bmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGFncmFtIHdo
aWNoIHdhcyByZWNlaXZlZC4KKyAgICAgICAgOnBhcmFtIGFkZHI6IFRoZSBuZXR3b3JrIGFkZHJl
c3MgZnJvbSB3aGljaCB0aGUgZGF0YWdyYW0gd2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0g
bm93OiBUaGUgY3VycmVudCB0aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgIyBzdG9wIGhhbmRs
aW5nIHBhY2tldHMgd2hlbiBjbG9zaW5nCisgICAgICAgIGlmIHNlbGYuX3N0YXRlIGluIEVORF9T
VEFURVM6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICBl
dmVudD0iZGF0YWdyYW1zX3JlY2VpdmVkIiwKKyAgICAgICAgICAgICAgICBkYXRhPXsiYnl0ZV9s
ZW5ndGgiOiBsZW4oZGF0YSksICJjb3VudCI6IDF9LAorICAgICAgICAgICAgKQorCisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6Cisg
ICAgICAgICAgICBzdGFydF9vZmYgPSBidWYudGVsbCgpCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcigKKyAgICAgICAgICAgICAgICAg
ICAgYnVmLCBob3N0X2NpZF9sZW5ndGg9c2VsZi5fY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lk
X2xlbmd0aAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIGNoZWNrIGRlc3RpbmF0
aW9uIENJRCBtYXRjaGVzCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWRfc2VxOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICAgICAgZm9yIGNvbm5lY3Rpb25faWQgaW4gc2VsZi5faG9z
dF9jaWRzOgorICAgICAgICAgICAgICAgIGlmIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQgPT0gY29u
bmVjdGlvbl9pZC5jaWQ6CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXEg
PSBjb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlcgorICAgICAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgaWYgc2VsZi5faXNfY2xpZW50IGFuZCBkZXN0aW5hdGlvbl9jaWRfc2Vx
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGE9eyJ0cmlnZ2VyIjogInVua25vd25fY29ubmVjdGlvbl9pZCJ9LAorICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hl
Y2sgcHJvdG9jb2wgdmVyc2lvbgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIHNl
bGYuX2lzX2NsaWVudAorICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9zdGF0ZSA9PSBRdWljQ29u
bmVjdGlvblN0YXRlLkZJUlNURkxJR0hUCisgICAgICAgICAgICAgICAgYW5kIGhlYWRlci52ZXJz
aW9uID09IFF1aWNQcm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04KKyAgICAgICAgICAgICk6Cisg
ICAgICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAgICAgICAgdmVy
c2lvbnMgPSBbXQorICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAg
ICAgICAgICAgICAgIHZlcnNpb25zLmFwcGVuZChidWYucHVsbF91aW50MzIoKSkKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfdHlwZSI6ICJ2ZXJzaW9uX25lZ290aWF0aW9u
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5zb3VyY2VfY2lkKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIu
ZGVzdGluYXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBjb21tb24gPSBz
ZXQoc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnMpLmludGVyc2VjdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgaWYgbm90IGNvbW1vbjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmVycm9yKCJDb3VsZCBub3QgZmluZCBhIGNvbW1vbiBwcm90b2NvbCB2ZXJzaW9uIikKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMuQ29ubmVjdGlvblRlcm1p
bmF0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUu
SU5URVJOQUxfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPU5vbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJDb3VsZCBub3QgZmluZCBh
IGNvbW1vbiBwcm90b2NvbCB2ZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9lbmQoKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gUXVpY1Byb3RvY29sVmVyc2lvbiht
YXgoY29tbW9uKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUmV0cnlpbmcg
d2l0aCAlcyIsIHNlbGYuX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdChu
b3c9bm93KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiAoCisgICAg
ICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBh
bmQgaGVhZGVyLnZlcnNpb24gbm90IGluIHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3Zl
cnNpb25zCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICMgdW5zdXBwb3J0ZWQgdmVy
c2lvbgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50PSJwYWNrZXRfZHJvcHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhPXsidHJpZ2dlciI6ICJ1bnN1cHBvcnRlZF92ZXJzaW9uIn0sCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaWYgc2VsZi5faXNf
Y2xpZW50IGFuZCBoZWFkZXIucGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfUkVUUlk6CisgICAg
ICAgICAgICAgICAgIyBjYWxjdWxhdGUgc3RhdGVsZXNzIHJldHJ5IGludGVncml0eSB0YWcKKyAg
ICAgICAgICAgICAgICBpbnRlZ3JpdHlfdGFnID0gZ2V0X3JldHJ5X2ludGVncml0eV90YWcoCisg
ICAgICAgICAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKHN0YXJ0X29mZiwgYnVmLnRlbGwoKSAt
IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRSksCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Bl
ZXJfY2lkLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGlmICgKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCA9PSBzZWxmLmhvc3RfY2lkCisg
ICAgICAgICAgICAgICAgICAgIGFuZCBoZWFkZXIuaW50ZWdyaXR5X3RhZyA9PSBpbnRlZ3JpdHlf
dGFnCisgICAgICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fc3RhdGVsZXNzX3JldHJ5X2Nv
dW50CisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVp
Y19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9
InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9y
ZWNlaXZlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfdHlwZSI6ICJyZXRyeSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5zb3VyY2VfY2lkKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkY2lkIjogZHVtcF9jaWQoaGVhZGVyLmRl
c3RpbmF0aW9uX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29yaWdpbmFsX2Nvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZAor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lkCisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBoZWFkZXIudG9rZW4KKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc3RhdGVsZXNzX3JldHJ5X2NvdW50ICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oIlBlcmZvcm1pbmcgc3RhdGVsZXNzIHJldHJ5
IikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdChub3c9bm93KQorICAgICAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgICAgICBuZXR3b3JrX3BhdGggPSBzZWxmLl9maW5kX25l
dHdvcmtfcGF0aChhZGRyKQorCisgICAgICAgICAgICAjIHNlcnZlciBpbml0aWFsaXphdGlvbgor
ICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudCBhbmQgc2VsZi5fc3RhdGUgPT0gUXVp
Y0Nvbm5lY3Rpb25TdGF0ZS5GSVJTVEZMSUdIVDoKKyAgICAgICAgICAgICAgICBhc3NlcnQgKAor
ICAgICAgICAgICAgICAgICAgICBoZWFkZXIucGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5J
VElBTAorICAgICAgICAgICAgICAgICksICJmaXJzdCBwYWNrZXQgbXVzdCBiZSBJTklUSUFMIgor
ICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMgPSBbbmV0d29ya19wYXRoXQorICAg
ICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xWZXJzaW9uKGhlYWRlci52
ZXJzaW9uKQorICAgICAgICAgICAgICAgIHNlbGYuX2luaXRpYWxpemUoaGVhZGVyLmRlc3RpbmF0
aW9uX2NpZCkKKworICAgICAgICAgICAgIyBkZXRlcm1pbmUgY3J5cHRvIGFuZCBwYWNrZXQgc3Bh
Y2UKKyAgICAgICAgICAgIGVwb2NoID0gZ2V0X2Vwb2NoKGhlYWRlci5wYWNrZXRfdHlwZSkKKyAg
ICAgICAgICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbZXBvY2hdCisgICAgICAgICAgICBpZiBl
cG9jaCA9PSB0bHMuRXBvY2guWkVST19SVFQ6CisgICAgICAgICAgICAgICAgc3BhY2UgPSBzZWxm
Ll9zcGFjZXNbdGxzLkVwb2NoLk9ORV9SVFRdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW2Vwb2NoXQorCisgICAgICAgICAgICAjIGRlY3J5
cHQgcGFja2V0CisgICAgICAgICAgICBlbmNyeXB0ZWRfb2ZmID0gYnVmLnRlbGwoKSAtIHN0YXJ0
X29mZgorICAgICAgICAgICAgZW5kX29mZiA9IGJ1Zi50ZWxsKCkgKyBoZWFkZXIucmVzdF9sZW5n
dGgKKyAgICAgICAgICAgIGJ1Zi5zZWVrKGVuZF9vZmYpCisKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIg
PSBjcnlwdG8uZGVjcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGRhdGFbc3RhcnRf
b2ZmOmVuZF9vZmZdLCBlbmNyeXB0ZWRfb2ZmLCBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IEtleVVuYXZhaWxhYmxlRXJy
b3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZyhleGMpCisgICAg
ICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9eyJ0cmln
Z2VyIjogImtleV91bmF2YWlsYWJsZSJ9LAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBDcnlwdG9FcnJvciBhcyBleGM6
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4YykKKyAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0
ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0
X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIiOiAicGF5
bG9hZF9kZWNyeXB0X2Vycm9yIn0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIGNoZWNrIHJlc2VydmVkIGJpdHMKKyAgICAg
ICAgICAgIGlmIGhlYWRlci5pc19sb25nX2hlYWRlcjoKKyAgICAgICAgICAgICAgICByZXNlcnZl
ZF9tYXNrID0gMHgwQworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNlcnZl
ZF9tYXNrID0gMHgxOAorICAgICAgICAgICAgaWYgcGxhaW5faGVhZGVyWzBdICYgcmVzZXJ2ZWRf
bWFzazoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV90eXBlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJh
c2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgcmFpc2UgZXhwZWN0ZWQgcGFja2V0
IG51bWJlcgorICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA+IHNwYWNlLmV4cGVjdGVkX3Bh
Y2tldF9udW1iZXI6CisgICAgICAgICAgICAgICAgc3BhY2UuZXhwZWN0ZWRfcGFja2V0X251bWJl
ciA9IHBhY2tldF9udW1iZXIgKyAxCisKKyAgICAgICAgICAgICMgbG9nIHBhY2tldAorICAgICAg
ICAgICAgcXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0W0RpY3RdXSA9IE5vbmUKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcyA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19s
b2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0
IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9yZWNlaXZlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBl
Ijogc2VsZi5fcXVpY19sb2dnZXIucGFja2V0X3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyLnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXRfbnVtYmVyKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFja2V0X3NpemUiOiBlbmRfb2ZmIC0gc3RhcnRfb2ZmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkY2lkIjogZHVtcF9jaWQoaGVhZGVyLmRlc3RpbmF0aW9u
X2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjaWQiOiBkdW1wX2NpZChoZWFk
ZXIuc291cmNlX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgImZyYW1lcyI6IHF1aWNfbG9nZ2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgZGlzY2FyZCBpbml0
aWFsIGtleXMgYW5kIHBhY2tldCBzcGFjZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2Ns
aWVudCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9kaXNjYXJkX2Vwb2NoKHRscy5FcG9jaC5JTklUSUFMKQorCisgICAgICAgICAgICAjIHVw
ZGF0ZSBzdGF0ZQorICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9jaWRfc2VxIGlzIE5vbmU6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBoZWFkZXIuc291cmNlX2NpZAorICAgICAg
ICAgICAgICAgIHNlbGYuX3BlZXJfY2lkX3NlcSA9IDAKKworICAgICAgICAgICAgaWYgc2VsZi5f
c3RhdGUgPT0gUXVpY0Nvbm5lY3Rpb25TdGF0ZS5GSVJTVEZMSUdIVDoKKyAgICAgICAgICAgICAg
ICBzZWxmLl9zZXRfc3RhdGUoUXVpY0Nvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpCisKKyAgICAg
ICAgICAgICMgdXBkYXRlIHNwaW4gYml0CisgICAgICAgICAgICBpZiBub3QgaGVhZGVyLmlzX2xv
bmdfaGVhZGVyIGFuZCBwYWNrZXRfbnVtYmVyID4gc2VsZi5fc3Bpbl9oaWdoZXN0X3BuOgorICAg
ICAgICAgICAgICAgIHNwaW5fYml0ID0gZ2V0X3NwaW5fYml0KHBsYWluX2hlYWRlclswXSkKKyAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3NwaW5fYml0ID0gbm90IHNwaW5fYml0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBzcGluX2JpdAorICAgICAgICAgICAgICAg
IHNlbGYuX3NwaW5faGlnaGVzdF9wbiA9IHBhY2tldF9udW1iZXIKKworICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRl
Z29yeT0iY29ubmVjdGl2aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJzcGlu
X2JpdF91cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9eyJzdGF0ZSI6IHNl
bGYuX3NwaW5fYml0fSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGhh
bmRsZSBwYXlsb2FkCisgICAgICAgICAgICBjb250ZXh0ID0gUXVpY1JlY2VpdmVDb250ZXh0KAor
ICAgICAgICAgICAgICAgIGVwb2NoPWVwb2NoLAorICAgICAgICAgICAgICAgIGhvc3RfY2lkPWhl
YWRlci5kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICAgICAgbmV0d29ya19wYXRoPW5ldHdv
cmtfcGF0aCwKKyAgICAgICAgICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9cXVpY19sb2dnZXJf
ZnJhbWVzLAorICAgICAgICAgICAgICAgIHRpbWU9bm93LAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmcsIGlzX3Byb2Jpbmcg
PSBzZWxmLl9wYXlsb2FkX3JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBw
bGFpbl9wYXlsb2FkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFF1aWND
b25uZWN0aW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53YXJu
aW5nKGV4YykKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKAorICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9jb2RlPWV4Yy5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWV4Yy5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPWV4
Yy5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHNlbGYu
X3N0YXRlIGluIEVORF9TVEFURVMgb3Igc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAg
ICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB1cGRhdGUgaWRsZSB0aW1lb3V0CisgICAgICAg
ICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIHNlbGYuX2NvbmZpZ3VyYXRpb24uaWRsZV90aW1l
b3V0CisKKyAgICAgICAgICAgICMgaGFuZGxlIG1pZ3JhdGlvbgorICAgICAgICAgICAgaWYgKAor
ICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBhbmQg
Y29udGV4dC5ob3N0X2NpZCAhPSBzZWxmLmhvc3RfY2lkCisgICAgICAgICAgICAgICAgYW5kIGVw
b2NoID09IHRscy5FcG9jaC5PTkVfUlRUCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgIlBlZXIgc3dpdGNoaW5n
IHRvIENJRCAlcyAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgZHVtcF9jaWQoY29udGV4dC5o
b3N0X2NpZCksCisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXEsCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBjb250ZXh0Lmhv
c3RfY2lkCisgICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VfY29ubmVjdGlvbl9pZCgpCisKKyAg
ICAgICAgICAgICMgdXBkYXRlIG5ldHdvcmsgcGF0aAorICAgICAgICAgICAgaWYgbm90IG5ldHdv
cmtfcGF0aC5pc192YWxpZGF0ZWQgYW5kIGVwb2NoID09IHRscy5FcG9jaC5IQU5EU0hBS0U6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAi
TmV0d29yayBwYXRoICVzIHZhbGlkYXRlZCBieSBoYW5kc2hha2UiLCBuZXR3b3JrX3BhdGguYWRk
cgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguaXNfdmFs
aWRhdGVkID0gVHJ1ZQorICAgICAgICAgICAgbmV0d29ya19wYXRoLmJ5dGVzX3JlY2VpdmVkICs9
IGVuZF9vZmYgLSBzdGFydF9vZmYKKyAgICAgICAgICAgIGlmIG5ldHdvcmtfcGF0aCBub3QgaW4g
c2VsZi5fbmV0d29ya19wYXRoczoKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXR3b3JrX3BhdGhz
LmFwcGVuZChuZXR3b3JrX3BhdGgpCisgICAgICAgICAgICBpZHggPSBzZWxmLl9uZXR3b3JrX3Bh
dGhzLmluZGV4KG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlmIGlkeCBhbmQgbm90IGlzX3By
b2JpbmcgYW5kIHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldDoK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIk5ldHdvcmsgcGF0aCAlcyBwcm9t
b3RlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtf
cGF0aHMucG9wKGlkeCkKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXR3b3JrX3BhdGhzLmluc2Vy
dCgwLCBuZXR3b3JrX3BhdGgpCisKKyAgICAgICAgICAgICMgcmVjb3JkIHBhY2tldCBhcyByZWNl
aXZlZAorICAgICAgICAgICAgaWYgbm90IHNwYWNlLmRpc2NhcmRlZDoKKyAgICAgICAgICAgICAg
ICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQ6CisgICAg
ICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0ID0gcGFja2V0X251
bWJlcgorICAgICAgICAgICAgICAgICAgICBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3RpbWUgPSBu
b3cKKyAgICAgICAgICAgICAgICBzcGFjZS5hY2tfcXVldWUuYWRkKHBhY2tldF9udW1iZXIpCisg
ICAgICAgICAgICAgICAgaWYgaXNfYWNrX2VsaWNpdGluZyBhbmQgc3BhY2UuYWNrX2F0IGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmFja19hdCA9IG5vdyArIHNlbGYuX2Fja19k
ZWxheQorCisgICAgZGVmIHJlcXVlc3Rfa2V5X3VwZGF0ZShzZWxmKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmVxdWVzdCBhbiB1cGRhdGUgb2YgdGhlIGVuY3J5cHRpb24ga2V5cy4K
KyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9oYW5kc2hha2VfY29tcGxldGUsICJj
YW5ub3QgY2hhbmdlIGtleSBiZWZvcmUgaGFuZHNoYWtlIGNvbXBsZXRlcyIKKyAgICAgICAgc2Vs
Zi5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0udXBkYXRlX2tleSgpCisKKyAgICBkZWYgc2Vu
ZF9waW5nKHNlbGYsIHVpZDogaW50KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2Vu
ZCBhIFBJTkcgZnJhbWUgdG8gdGhlIHBlZXIuCisKKyAgICAgICAgOnBhcmFtIHVpZDogQSB1bmlx
dWUgSUQgZm9yIHRoaXMgUElORy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3BpbmdfcGVu
ZGluZy5hcHBlbmQodWlkKQorCisgICAgZGVmIHNlbmRfZGF0YWdyYW1fZnJhbWUoc2VsZiwgZGF0
YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEgREFUQUdSQU0g
ZnJhbWUuCisKKyAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBkYXRhIHRvIGJlIHNlbnQuCisgICAg
ICAgICIiIgorICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZy5hcHBlbmQoZGF0YSkKKwor
ICAgIGRlZiBzZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICBzZWxmLCBzdHJlYW1faWQ6IGludCwg
ZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFNlbmQgZGF0YSBvbiB0aGUgc3BlY2lmaWMgc3RyZWFtLgorCisg
ICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJlYW0ncyBJRC4KKyAgICAgICAgOnBhcmFt
IGRhdGE6IFRoZSBkYXRhIHRvIGJlIHNlbnQuCisgICAgICAgIDpwYXJhbSBlbmRfc3RyZWFtOiBJ
ZiBzZXQgdG8gYFRydWVgLCB0aGUgRklOIGJpdCB3aWxsIGJlIHNldC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9pZCkgIT0gc2VsZi5f
aXNfY2xpZW50OgorICAgICAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBpbiBzZWxmLl9zdHJlYW1z
OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzZW5kIGRhdGEgb24g
dW5rbm93biBwZWVyLWluaXRpYXRlZCBzdHJlYW0iKQorICAgICAgICAgICAgaWYgc3RyZWFtX2lz
X3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0
aWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIgorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVhbV9pZF0KKyAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgc2VsZi5fY3JlYXRlX3N0cmVhbShz
dHJlYW1faWQ9c3RyZWFtX2lkKQorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFtc1tz
dHJlYW1faWRdCisgICAgICAgIHN0cmVhbS53cml0ZShkYXRhLCBlbmRfc3RyZWFtPWVuZF9zdHJl
YW0pCisKKyAgICAjIFByaXZhdGUKKworICAgIGRlZiBfYWxwbl9oYW5kbGVyKHNlbGYsIGFscG5f
cHJvdG9jb2w6IHN0cikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBBTFBOIG5lZ290aWF0aW9uIGNv
bXBsZXRlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoZXZlbnRz
LlByb3RvY29sTmVnb3RpYXRlZChhbHBuX3Byb3RvY29sPWFscG5fcHJvdG9jb2wpKQorCisgICAg
ZGVmIF9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKHNlbGYsIGZyYW1lX3R5cGU6IGludCwgc3Ry
ZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGUgc3Bl
Y2lmaWVkIHN0cmVhbSBjYW4gcmVjZWl2ZSBkYXRhIG9yIHJhaXNlcyBhIFF1aWNDb25uZWN0aW9u
RXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fc3RyZWFtX2Nhbl9yZWNl
aXZlKHN0cmVhbV9pZCk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJS
T1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IlN0cmVhbSBpcyBzZW5kLW9ubHkiLAorICAgICAgICAgICAgKQor
CisgICAgZGVmIF9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
c3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGUg
c3BlY2lmaWVkIHN0cmVhbSBjYW4gc2VuZCBkYXRhIG9yIHJhaXNlcyBhIFF1aWNDb25uZWN0aW9u
RXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fc3RyZWFtX2Nhbl9zZW5k
KHN0cmVhbV9pZCk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAg
ICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Is
CisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
IHJlYXNvbl9waHJhc2U9IlN0cmVhbSBpcyByZWNlaXZlLW9ubHkiLAorICAgICAgICAgICAgKQor
CisgICAgZGVmIF9jbG9zZV9iZWdpbihzZWxmLCBpc19pbml0aWF0b3I6IGJvb2wsIG5vdzogZmxv
YXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBCZWdpbiB0aGUgY2xvc2UgcHJvY2Vk
dXJlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cgKyAzICogc2Vs
Zi5fbG9zcy5nZXRfcHJvYmVfdGltZW91dCgpCisgICAgICAgIGlmIGlzX2luaXRpYXRvcjoKKyAg
ICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoUXVpY0Nvbm5lY3Rpb25T
dGF0ZS5EUkFJTklORykKKworICAgIGRlZiBfY2xvc2VfZW5kKHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgICIiIgorICAgICAgICBFbmQgdGhlIGNsb3NlIHByb2NlZHVyZS4KKyAgICAgICAgIiIiCisg
ICAgICAgIHNlbGYuX2Nsb3NlX2F0ID0gTm9uZQorICAgICAgICBmb3IgZXBvY2ggaW4gc2VsZi5f
c3BhY2VzLmtleXMoKToKKyAgICAgICAgICAgIHNlbGYuX2Rpc2NhcmRfZXBvY2goZXBvY2gpCisg
ICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoc2VsZi5fY2xvc2VfZXZlbnQpCisgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLlRFUk1JTkFURUQpCisKKyAgICAgICAg
IyBzaWduYWwgbG9nIGVuZAorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIuZW5kX3RyYWNl
KHNlbGYuX3F1aWNfbG9nZ2VyKQorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgPSBOb25l
CisKKyAgICBkZWYgX2Nvbm5lY3Qoc2VsZiwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIFN0YXJ0IHRoZSBjbGllbnQgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXNzZXJ0IHNlbGYuX2lzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Nsb3NlX2F0ID0g
bm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVvdXQKKyAgICAgICAgc2VsZi5faW5p
dGlhbGl6ZShzZWxmLl9wZWVyX2NpZCkKKworICAgICAgICBzZWxmLnRscy5oYW5kbGVfbWVzc2Fn
ZShiIiIsIHNlbGYuX2NyeXB0b19idWZmZXJzKQorICAgICAgICBzZWxmLl9wdXNoX2NyeXB0b19k
YXRhKCkKKworICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4g
UXVpY1N0cmVhbToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFVSUMgc3RyZWFtIGlu
IG9yZGVyIHRvIHNlbmQgZGF0YSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAgICAgICMg
ZGV0ZXJtaW5lIGxpbWl0cworICAgICAgICBpZiBzdHJlYW1faXNfdW5pZGlyZWN0aW9uYWwoc3Ry
ZWFtX2lkKToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IDAKKyAgICAgICAg
ICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRh
X3VuaQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNf
dW5pCisgICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRf
dW5pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWwgPSBz
ZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbAorICAgICAgICAgICAgbWF4X3N0
cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1v
dGUKKyAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2Jp
ZGkKKyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9i
aWRpCisKKyAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0
cmVhbXNbc3RyZWFtX2lkXSA9IFF1aWNTdHJlYW0oCisgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsPW1heF9zdHJlYW1fZGF0
YV9sb2NhbCwKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGU9bWF4X3N0cmVhbV9k
YXRhX3JlbW90ZSwKKyAgICAgICAgKQorCisgICAgICAgICMgbWFyayBzdHJlYW0gYXMgYmxvY2tl
ZCBpZiBuZWVkZWQKKyAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6Cisg
ICAgICAgICAgICBzdHJlYW0uaXNfYmxvY2tlZCA9IFRydWUKKyAgICAgICAgICAgIHN0cmVhbXNf
YmxvY2tlZC5hcHBlbmQoc3RyZWFtKQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2Vk
X3BlbmRpbmcgPSBUcnVlCisKKyAgICAgICAgcmV0dXJuIHN0cmVhbQorCisgICAgZGVmIF9kaXNj
YXJkX2Vwb2NoKHNlbGYsIGVwb2NoOiB0bHMuRXBvY2gpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygiRGlzY2FyZGluZyBlcG9jaCAlcyIsIGVwb2NoKQorICAgICAgICBzZWxm
Ll9jcnlwdG9zW2Vwb2NoXS50ZWFyZG93bigpCisgICAgICAgIHNlbGYuX2xvc3MuZGlzY2FyZF9z
cGFjZShzZWxmLl9zcGFjZXNbZXBvY2hdKQorICAgICAgICBzZWxmLl9zcGFjZXNbZXBvY2hdLmRp
c2NhcmRlZCA9IFRydWUKKworICAgIGRlZiBfZmluZF9uZXR3b3JrX3BhdGgoc2VsZiwgYWRkcjog
TmV0d29ya0FkZHJlc3MpIC0+IFF1aWNOZXR3b3JrUGF0aDoKKyAgICAgICAgIyBjaGVjayBleGlz
dGluZyBuZXR3b3JrIHBhdGhzCisgICAgICAgIGZvciBpZHgsIG5ldHdvcmtfcGF0aCBpbiBlbnVt
ZXJhdGUoc2VsZi5fbmV0d29ya19wYXRocyk6CisgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgu
YWRkciA9PSBhZGRyOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXR3b3JrX3BhdGgKKworICAg
ICAgICAjIG5ldyBuZXR3b3JrIHBhdGgKKyAgICAgICAgbmV0d29ya19wYXRoID0gUXVpY05ldHdv
cmtQYXRoKGFkZHIpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRoICVz
IGRpc2NvdmVyZWQiLCBuZXR3b3JrX3BhdGguYWRkcikKKyAgICAgICAgcmV0dXJuIG5ldHdvcmtf
cGF0aAorCisgICAgZGVmIF9nZXRfb3JfY3JlYXRlX3N0cmVhbShzZWxmLCBmcmFtZV90eXBlOiBp
bnQsIHN0cmVhbV9pZDogaW50KSAtPiBRdWljU3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAg
R2V0IG9yIGNyZWF0ZSBhIHN0cmVhbSBpbiByZXNwb25zZSB0byBhIHJlY2VpdmVkIGZyYW1lLgor
ICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFtcy5nZXQoc3RyZWFtX2lk
LCBOb25lKQorICAgICAgICBpZiBzdHJlYW0gaXMgTm9uZToKKyAgICAgICAgICAgICMgY2hlY2sg
aW5pdGlhdG9yCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfY2xpZW50X2luaXRpYXRlZChzdHJl
YW1faWQpID09IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNv
ZGUuU1RSRUFNX1NUQVRFX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Ildyb25nIHN0cmVh
bSBpbml0aWF0b3IiLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkZXRlcm1p
bmUgbGltaXRzCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfdW5pZGlyZWN0aW9uYWwoc3RyZWFt
X2lkKToKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWwgPSBzZWxmLl9sb2Nh
bF9tYXhfc3RyZWFtX2RhdGFfdW5pCisgICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3Jl
bW90ZSA9IDAKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX2xvY2FsX21heF9z
dHJlYW1zX3VuaQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwgPSBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUKKyAg
ICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9z
dHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxm
Ll9sb2NhbF9tYXhfc3RyZWFtc19iaWRpCisKKyAgICAgICAgICAgICMgY2hlY2sgbWF4IHN0cmVh
bXMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pZCAvLyA0ID49IG1heF9zdHJlYW1zOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAg
IGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5TVFJFQU1fTElNSVRfRVJST1IsCisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iVG9vIG1hbnkgc3RyZWFtcyBvcGVuIiwKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCJTdHJlYW0gJWQgY3JlYXRlZCBieSBwZWVyIiAlIHN0cmVhbV9pZCkKKyAgICAgICAgICAg
IHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXSA9IFF1aWNTdHJlYW0oCisgICAgICAg
ICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfbG9jYWw9bWF4X3N0cmVhbV9kYXRhX2xvY2FsLAorICAgICAgICAgICAgICAgIG1heF9z
dHJlYW1fZGF0YV9yZW1vdGU9bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSwKKyAgICAgICAgICAgICkK
KyAgICAgICAgcmV0dXJuIHN0cmVhbQorCisgICAgZGVmIF9oYW5kbGVfc2Vzc2lvbl90aWNrZXQo
c2VsZiwgc2Vzc2lvbl90aWNrZXQ6IHRscy5TZXNzaW9uVGlja2V0KSAtPiBOb25lOgorICAgICAg
ICBpZiAoCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlz
IG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFf
c2l6ZSAhPSBNQVhfRUFSTFlfREFUQQorICAgICAgICApOgorICAgICAgICAgICAgcmFpc2UgUXVp
Y0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNv
ZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0Zy
YW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iSW52YWxpZCBt
YXhfZWFybHlfZGF0YSB2YWx1ZSAlcyIKKyAgICAgICAgICAgICAgICAlIHNlc3Npb25fdGlja2V0
Lm1heF9lYXJseV9kYXRhX3NpemUsCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX3Nlc3Np
b25fdGlja2V0X2hhbmRsZXIoc2Vzc2lvbl90aWNrZXQpCisKKyAgICBkZWYgX2luaXRpYWxpemUo
c2VsZiwgcGVlcl9jaWQ6IGJ5dGVzKSAtPiBOb25lOgorICAgICAgICAjIFRMUworICAgICAgICBz
ZWxmLnRscyA9IHRscy5Db250ZXh0KAorICAgICAgICAgICAgYWxwbl9wcm90b2NvbHM9c2VsZi5f
Y29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAgIGNhZGF0YT1zZWxmLl9j
b25maWd1cmF0aW9uLmNhZGF0YSwKKyAgICAgICAgICAgIGNhZmlsZT1zZWxmLl9jb25maWd1cmF0
aW9uLmNhZmlsZSwKKyAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNhcGF0
aCwKKyAgICAgICAgICAgIGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBs
b2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGE9Tm9uZSBpZiBz
ZWxmLl9pc19jbGllbnQgZWxzZSBNQVhfRUFSTFlfREFUQSwKKyAgICAgICAgICAgIHNlcnZlcl9u
YW1lPXNlbGYuX2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUsCisgICAgICAgICAgICB2ZXJpZnlf
bW9kZT1zZWxmLl9jb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlLAorICAgICAgICApCisgICAgICAg
IHNlbGYudGxzLmNlcnRpZmljYXRlID0gc2VsZi5fY29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZQor
ICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9jaGFpbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24u
Y2VydGlmaWNhdGVfY2hhaW4KKyAgICAgICAgc2VsZi50bHMuY2VydGlmaWNhdGVfcHJpdmF0ZV9r
ZXkgPSBzZWxmLl9jb25maWd1cmF0aW9uLnByaXZhdGVfa2V5CisgICAgICAgIHNlbGYudGxzLmhh
bmRzaGFrZV9leHRlbnNpb25zID0gWworICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHRs
cy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAg
ICAgc2VsZi5fc2VyaWFsaXplX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKCksCisgICAgICAgICAgICAp
CisgICAgICAgIF0KKworICAgICAgICAjIFRMUyBzZXNzaW9uIHJlc3VtcHRpb24KKyAgICAgICAg
c2Vzc2lvbl90aWNrZXQgPSBzZWxmLl9jb25maWd1cmF0aW9uLnNlc3Npb25fdGlja2V0CisgICAg
ICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIHNl
c3Npb25fdGlja2V0IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2Vzc2lvbl90aWNrZXQu
aXNfdmFsaWQKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5zZXJ2ZXJfbmFtZSA9PSBz
ZWxmLl9jb25maWd1cmF0aW9uLnNlcnZlcl9uYW1lCisgICAgICAgICk6CisgICAgICAgICAgICBz
ZWxmLnRscy5zZXNzaW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNr
ZXQKKworICAgICAgICAgICAgIyBwYXJzZSBzYXZlZCBRVUlDIHRyYW5zcG9ydCBwYXJhbWV0ZXJz
IC0gZm9yIDAtUlRUCisgICAgICAgICAgICBpZiBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0
YV9zaXplID09IE1BWF9FQVJMWV9EQVRBOgorICAgICAgICAgICAgICAgIGZvciBleHRfdHlwZSwg
ZXh0X2RhdGEgaW4gc2Vzc2lvbl90aWNrZXQub3RoZXJfZXh0ZW5zaW9uczoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgZXh0X3R5cGUgPT0gdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRf
UEFSQU1FVEVSUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF9kYXRhLCBmcm9t
X3Nlc3Npb25fdGlja2V0PVRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgIyBUTFMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYudGxzLmFscG5fY2IgPSBzZWxmLl9hbHBuX2hhbmRsZXIKKyAgICAgICAgaWYgc2VsZi5f
c2Vzc2lvbl90aWNrZXRfZmV0Y2hlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudGxz
LmdldF9zZXNzaW9uX3RpY2tldF9jYiA9IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAg
ICAgICAgaWYgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHNlbGYudGxzLm5ld19zZXNzaW9uX3RpY2tldF9jYiA9IHNlbGYuX2hhbmRsZV9zZXNz
aW9uX3RpY2tldAorICAgICAgICBzZWxmLnRscy51cGRhdGVfdHJhZmZpY19rZXlfY2IgPSBzZWxm
Ll91cGRhdGVfdHJhZmZpY19rZXkKKworICAgICAgICAjIHBhY2tldCBzcGFjZXMKKyAgICAgICAg
c2VsZi5fY3J5cHRvcyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBDcnlwdG9Q
YWlyKCksCisgICAgICAgICAgICB0bHMuRXBvY2guWkVST19SVFQ6IENyeXB0b1BhaXIoKSwKKyAg
ICAgICAgICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgICAg
IHRscy5FcG9jaC5PTkVfUlRUOiBDcnlwdG9QYWlyKCksCisgICAgICAgIH0KKyAgICAgICAgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnMgPSB7CisgICAgICAgICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVm
ZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQnVm
ZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IEJ1ZmZl
cihjYXBhY2l0eT00MDk2KSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLl9jcnlwdG9fc3RyZWFt
cyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBRdWljU3RyZWFtKCksCisgICAg
ICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBRdWljU3RyZWFtKCksCisgICAgICAgICAgICB0
bHMuRXBvY2guT05FX1JUVDogUXVpY1N0cmVhbSgpLAorICAgICAgICB9CisgICAgICAgIHNlbGYu
X3NwYWNlcyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBRdWljUGFja2V0U3Bh
Y2UoKSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNQYWNrZXRTcGFjZSgp
LAorICAgICAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IFF1aWNQYWNrZXRTcGFjZSgpLAorICAg
ICAgICB9CisKKyAgICAgICAgc2VsZi5fY3J5cHRvc1t0bHMuRXBvY2guSU5JVElBTF0uc2V0dXBf
aW5pdGlhbCgKKyAgICAgICAgICAgIGNpZD1wZWVyX2NpZCwgaXNfY2xpZW50PXNlbGYuX2lzX2Ns
aWVudCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9s
b3NzLnNwYWNlcyA9IGxpc3Qoc2VsZi5fc3BhY2VzLnZhbHVlcygpKQorICAgICAgICBzZWxmLl9w
YWNrZXRfbnVtYmVyID0gMAorCisgICAgZGVmIF9oYW5kbGVfYWNrX2ZyYW1lKAorICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYW4gQUNL
IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgYWNrX3Jhbmdlc2V0LCBhY2tfZGVsYXlfZW5j
b2RlZCA9IHB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWlj
RnJhbWVUeXBlLkFDS19FQ046CisgICAgICAgICAgICBidWYucHVsbF91aW50X3ZhcigpCisgICAg
ICAgICAgICBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgIGFja19kZWxheSA9IChhY2tfZGVsYXlfZW5jb2RlZCA8PCBzZWxmLl9yZW1v
dGVfYWNrX2RlbGF5X2V4cG9uZW50KSAvIDEwMDAwMDAKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKGFja19yYW5nZXNldCwgYWNrX2RlbGF5KQorICAg
ICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvc3Mub25fYWNrX3JlY2VpdmVkKAorICAgICAg
ICAgICAgc3BhY2U9c2VsZi5fc3BhY2VzW2NvbnRleHQuZXBvY2hdLAorICAgICAgICAgICAgYWNr
X3Jhbmdlc2V0PWFja19yYW5nZXNldCwKKyAgICAgICAgICAgIGFja19kZWxheT1hY2tfZGVsYXks
CisgICAgICAgICAgICBub3c9Y29udGV4dC50aW1lLAorICAgICAgICApCisKKyAgICBkZWYgX2hh
bmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWlj
UmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBDT05ORUNUSU9OX0NMT1NFIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgZXJyb3JfY29kZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRToK
KyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBmcmFtZV90eXBlID0gTm9uZQorICAgICAgICByZWFzb25fbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFzb25f
cGhyYXNlID0gYnVmLnB1bGxfYnl0ZXMocmVhc29uX2xlbmd0aCkuZGVjb2RlKCJ1dGY4IikKKyAg
ICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJlYXNvbl9waHJh
c2UgPSAiIgorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jb25uZWN0
aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2Nv
ZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygKKyAgICAgICAg
ICAgICJDb25uZWN0aW9uIGNsb3NlIGNvZGUgMHglWCwgcmVhc29uICVzIiwgZXJyb3JfY29kZSwg
cmVhc29uX3BocmFzZQorICAgICAgICApCisgICAgICAgIHNlbGYuX2Nsb3NlX2V2ZW50ID0gZXZl
bnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9j
b2RlLCBmcmFtZV90eXBlPWZyYW1lX3R5cGUsIHJlYXNvbl9waHJhc2U9cmVhc29uX3BocmFzZQor
ICAgICAgICApCisgICAgICAgIHNlbGYuX2Nsb3NlX2JlZ2luKGlzX2luaXRpYXRvcj1GYWxzZSwg
bm93PWNvbnRleHQudGltZSkKKworICAgIGRlZiBfaGFuZGxlX2NyeXB0b19mcmFtZSgKKyAgICAg
ICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1
ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEg
Q1JZUFRPIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgb2Zmc2V0ID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGlm
IG9mZnNldCArIGxlbmd0aCA+IFVJTlRfVkFSX01BWDoKKyAgICAgICAgICAgIHJhaXNlIFF1aWND
b25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LkZSQU1FX0VOQ09ESU5HX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJvZmZzZXQgKyBsZW5ndGggY2Fu
bm90IGV4Y2VlZCAyXjYyIC0gMSIsCisgICAgICAgICAgICApCisgICAgICAgIGZyYW1lID0gUXVp
Y1N0cmVhbUZyYW1lKG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMobGVuZ3RoKSkK
KworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgK
KyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZy
YW1lKQorICAgICAgICAgICAgKQorCisgICAgICAgIHN0cmVhbSA9IHNlbGYuX2NyeXB0b19zdHJl
YW1zW2NvbnRleHQuZXBvY2hdCisgICAgICAgIGV2ZW50ID0gc3RyZWFtLmFkZF9mcmFtZShmcmFt
ZSkKKyAgICAgICAgaWYgZXZlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIHBhc3MgZGF0
YSB0byBUTFMgbGF5ZXIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnRs
cy5oYW5kbGVfbWVzc2FnZShldmVudC5kYXRhLCBzZWxmLl9jcnlwdG9fYnVmZmVycykKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wdXNoX2NyeXB0b19kYXRhKCkKKyAgICAgICAgICAgIGV4Y2VwdCB0
bHMuQWxlcnQgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5DUllQVE9f
RVJST1IgKyBpbnQoZXhjLmRlc2NyaXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVf
dHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPXN0cihl
eGMpLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBwYXJzZSB0cmFuc3BvcnQg
cGFyYW1ldGVycworICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9w
YXJhbWV0ZXJzX3JlY2VpdmVkCisgICAgICAgICAgICAgICAgYW5kIHNlbGYudGxzLnJlY2VpdmVk
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAg
Zm9yIGV4dF90eXBlLCBleHRfZGF0YSBpbiBzZWxmLnRscy5yZWNlaXZlZF9leHRlbnNpb25zOgor
ICAgICAgICAgICAgICAgICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlD
X1RSQU5TUE9SVF9QQVJBTUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFy
c2VfdHJhbnNwb3J0X3BhcmFtZXRlcnMoZXh0X2RhdGEpCisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9wYXJhbWV0ZXJzX3JlY2VpdmVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJhbWV0ZXJzX3JlY2VpdmVkCisgICAgICAgICAgICAgICAgKSwgIk5vIFFVSUMgdHJh
bnNwb3J0IHBhcmFtZXRlcnMgcmVjZWl2ZWQiCisKKyAgICAgICAgICAgICMgdXBkYXRlIGN1cnJl
bnQgZXBvY2gKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29tcGxldGUgYW5k
IHNlbGYudGxzLnN0YXRlIGluIFsKKyAgICAgICAgICAgICAgICB0bHMuU3RhdGUuQ0xJRU5UX1BP
U1RfSEFORFNIQUtFLAorICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5TRVJWRVJfUE9TVF9IQU5E
U0hBS0UsCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9j
b21wbGV0ZSA9IFRydWUKKworICAgICAgICAgICAgICAgICMgZm9yIHNlcnZlcnMsIHRoZSBoYW5k
c2hha2UgaXMgbm93IGNvbmZpcm1lZAorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19j
bGllbnQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rpc2NhcmRfZXBvY2godGxzLkVwb2No
LkhBTkRTSEFLRSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1l
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2RvbmVfcGVuZGlu
ZyA9IFRydWUKKworICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuaXNfY2xpZW50X3dpdGhvdXRf
MXJ0dCA9IEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25f
aWRzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgICAgICBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgYWxwbl9wcm90b2NvbD1zZWxmLnRscy5hbHBuX25lZ290aWF0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBlYXJseV9kYXRhX2FjY2VwdGVkPXNlbGYudGxzLmVhcmx5X2RhdGFfYWNjZXB0
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX3Jlc3VtZWQ9c2VsZi50bHMuc2Vz
c2lvbl9yZXN1bWVkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25hbD1G
YWxzZSkKKyAgICAgICAgICAgICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0
aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygKKyAgICAgICAg
ICAgICAgICAgICAgIkFMUE4gbmVnb3RpYXRlZCBwcm90b2NvbCAlcyIsIHNlbGYudGxzLmFscG5f
bmVnb3RpYXRlZAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX2RhdGFfYmxv
Y2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgREFUQV9CTE9DS0VEIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAg
ICAgbGltaXQgPSBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250
ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVp
Y19sb2dnZXIuZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShsaW1pdD1saW1pdCkKKyAgICAgICAg
ICAgICkKKworICAgIGRlZiBfaGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBj
b250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIK
KyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBEQVRBR1JBTSBm
cmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBp
ZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEg6CisgICAg
ICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBsZW5ndGggPSBidWYuY2FwYWNpdHkgLSBzdGFydAorICAgICAgICBkYXRhID0gYnVm
LnB1bGxfYnl0ZXMobGVuZ3RoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNl
bGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xv
Z2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVu
Y29kZV9kYXRhZ3JhbV9mcmFtZShsZW5ndGg9bGVuZ3RoKQorICAgICAgICAgICAgKQorCisgICAg
ICAgICMgY2hlY2sgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICBpZiAoCisgICAgICAgICAgICBz
ZWxmLl9jb25maWd1cmF0aW9uLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplIGlzIE5vbmUKKyAgICAg
ICAgICAgIG9yIGJ1Zi50ZWxsKCkgLSBzdGFydCA+PSBzZWxmLl9jb25maWd1cmF0aW9uLm1heF9k
YXRhZ3JhbV9mcmFtZV9zaXplCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IlVuZXhwZWN0ZWQgREFUQUdSQU0gZnJh
bWUiLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoZXZlbnRz
LkRhdGFncmFtRnJhbWVSZWNlaXZlZChkYXRhPWRhdGEpKQorCisgICAgZGVmIF9oYW5kbGVfaGFu
ZHNoYWtlX2RvbmVfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29u
dGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAg
ICAgIiIiCisgICAgICAgIEhhbmRsZSBhIEhBTkRTSEFLRV9ET05FIGZyYW1lLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2hhbmRzaGFrZV9kb25l
X2ZyYW1lKCkKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50
OgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAg
ICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAg
ICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNIQUtFX0RPTkUgZnJhbWVzIiwKKyAgICAg
ICAgICAgICkKKworICAgICAgICAjIMKgZm9yIGNsaWVudHMsIHRoZSBoYW5kc2hha2UgaXMgbm93
IGNvbmZpcm1lZAorICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZDoKKyAg
ICAgICAgICAgIHNlbGYuX2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLkhBTkRTSEFLRSkKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQgPSBUcnVlCisKKyAgICBkZWYgX2hhbmRs
ZV9tYXhfZGF0YV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250
ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhpcyBh
ZGp1c3RzIHRoZSB0b3RhbCBhbW91bnQgb2Ygd2UgY2FuIHNlbmQgdG8gdGhlIHBlZXIuCisgICAg
ICAgICIiIgorICAgICAgICBtYXhfZGF0YSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbWF4X2RhdGFfZnJhbWUobWF4aW11bT1t
YXhfZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBtYXhfZGF0YSA+IHNlbGYuX3Jl
bW90ZV9tYXhfZGF0YToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiUmVtb3RlIG1h
eF9kYXRhIHJhaXNlZCB0byAlZCIsIG1heF9kYXRhKQorICAgICAgICAgICAgc2VsZi5fcmVtb3Rl
X21heF9kYXRhID0gbWF4X2RhdGEKKworICAgIGRlZiBfaGFuZGxlX21heF9zdHJlYW1fZGF0YV9m
cmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90
eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAg
ICAgSGFuZGxlIGEgTUFYX1NUUkVBTV9EQVRBIGZyYW1lLgorCisgICAgICAgIFRoaXMgYWRqdXN0
cyB0aGUgYW1vdW50IG9mIGRhdGEgd2UgY2FuIHNlbmQgb24gYSBzcGVjaWZpYyBzdHJlYW0uCisg
ICAgICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAg
ICAgIG1heF9zdHJlYW1fZGF0YSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBtYXhpbXVtPW1heF9zdHJlYW1fZGF0YSwgc3RyZWFtX2lkPXN0cmVhbV9p
ZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIHN0
cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVhbV9jYW5fc2VuZChmcmFt
ZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0
ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorICAgICAgICBpZiBtYXhfc3RyZWFtX2Rh
dGEgPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZToKKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIHJlbW90ZSBtYXhfc3RyZWFt
X2RhdGEgcmFpc2VkIHRvICVkIiwKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgbWF4X3N0cmVhbV9kYXRhLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc3Ry
ZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGEKKworICAgIGRlZiBf
aGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1
aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1TX0JJREkgZnJh
bWUuCisKKyAgICAgICAgVGhpcyByYWlzZXMgbnVtYmVyIG9mIGJpZGlyZWN0aW9uYWwgc3RyZWFt
cyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIiIgorICAgICAgICBtYXhf
c3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRl
eHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGlz
X3VuaWRpcmVjdGlvbmFsPUZhbHNlLCBtYXhpbXVtPW1heF9zdHJlYW1zCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9zdHJlYW1zID4gc2VsZi5fcmVt
b3RlX21heF9zdHJlYW1zX2JpZGk6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJl
bW90ZSBtYXhfc3RyZWFtc19iaWRpIHJhaXNlZCB0byAlZCIsIG1heF9zdHJlYW1zKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGkgPSBtYXhfc3RyZWFtcworICAgICAg
ICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKQorCisg
ICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBNQVhfU1RSRUFNU19V
TkkgZnJhbWUuCisKKyAgICAgICAgVGhpcyByYWlzZXMgbnVtYmVyIG9mIHVuaWRpcmVjdGlvbmFs
IHN0cmVhbXMgd2UgY2FuIGluaXRpYXRlIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAg
ICAgbWF4X3N0cmVhbXMgPSBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJh
bWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX21heF9zdHJlYW1zX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBpc191bmlkaXJlY3Rpb25hbD1UcnVlLCBtYXhpbXVtPW1heF9zdHJlYW1zCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9zdHJlYW1zID4gc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygiUmVtb3RlIG1heF9zdHJlYW1zX3VuaSByYWlzZWQgdG8gJWQiLCBtYXhfc3RyZWFtcykKKyAg
ICAgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkgPSBtYXhfc3RyZWFtcworICAg
ICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisK
KyAgICBkZWYgX2hhbmRsZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
Y29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVy
CisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTkVXX0NPTk5F
Q1RJT05fSUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHJldGlyZV9wcmlvcl90byA9IGJ1Zi5wdWxsX3Vp
bnRfdmFyKCkKKyAgICAgICAgbGVuZ3RoID0gYnVmLnB1bGxfdWludDgoKQorICAgICAgICBjb25u
ZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMobGVuZ3RoKQorICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW4gPSBidWYucHVsbF9ieXRlcygxNikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRl
eHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAgICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb25faWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgcmV0
aXJlX3ByaW9yX3RvPXJldGlyZV9wcmlvcl90bywKKyAgICAgICAgICAgICAgICAgICAgc2VxdWVu
Y2VfbnVtYmVyPXNlcXVlbmNlX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVsZXNz
X3Jlc2V0X3Rva2VuPXN0YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfYXZhaWxhYmxlLmFwcGVuZCgK
KyAgICAgICAgICAgIFF1aWNDb25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgY2lkPWNvbm5l
Y3Rpb25faWQsCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyPXNlcXVlbmNlX251bWJl
ciwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0
X3Rva2VuLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICBkZWYgX2hhbmRsZV9uZXdf
dG9rZW5fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwg
ZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIi
CisgICAgICAgIEhhbmRsZSBhIE5FV19UT0tFTiBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAg
IGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgdG9rZW4gPSBidWYucHVsbF9i
eXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVp
Y19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2Zy
YW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25l
d190b2tlbl9mcmFtZSh0b2tlbj10b2tlbikKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBu
b3Qgc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJv
cigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklP
TEFUSU9OLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJDbGllbnRzIG11c3Qgbm90IHNlbmQgTkVXX1RPS0VOIGZy
YW1lcyIsCisgICAgICAgICAgICApCisKKyAgICBkZWYgX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAor
ICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGlu
dCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgYSBQQURESU5HIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgIyBjb25zdW1lIHBhZGRp
bmcKKyAgICAgICAgcG9zID0gYnVmLnRlbGwoKQorICAgICAgICBmb3IgYnl0ZSBpbiBidWYuZGF0
YV9zbGljZShwb3MsIGJ1Zi5jYXBhY2l0eSk6CisgICAgICAgICAgICBpZiBieXRlOgorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBwb3MgKz0gMQorICAgICAgICBidWYuc2Vlayhw
b3MpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUoKSkKKworICAgIGRlZiBf
aGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWlj
UmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5v
bmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBQQVRIX0NIQUxMRU5HRSBmcmFtZS4K
KyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRlcyg4KQorCisgICAgICAg
ICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShkYXRh
PWRhdGEpCisgICAgICAgICAgICApCisKKyAgICAgICAgY29udGV4dC5uZXR3b3JrX3BhdGgucmVt
b3RlX2NoYWxsZW5nZSA9IGRhdGEKKworICAgIGRlZiBfaGFuZGxlX3BhdGhfcmVzcG9uc2VfZnJh
bWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlw
ZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIFBBVEhfUkVTUE9OU0UgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBkYXRh
ID0gYnVmLnB1bGxfYnl0ZXMoOCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfcGF0aF9yZXNwb25zZV9mcmFtZShkYXRhPWRhdGEpCisgICAgICAgICAgICApCisKKyAg
ICAgICAgaWYgZGF0YSAhPSBjb250ZXh0Lm5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2U6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IlJlc3BvbnNlIGRvZXMgbm90IG1hdGNoIGNoYWxsZW5nZSIsCisgICAgICAgICAgICApCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICJOZXR3b3JrIHBhdGggJXMgdmFs
aWRhdGVkIGJ5IGNoYWxsZW5nZSIsIGNvbnRleHQubmV0d29ya19wYXRoLmFkZHIKKyAgICAgICAg
KQorICAgICAgICBjb250ZXh0Lm5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQgPSBUcnVlCisKKyAg
ICBkZWYgX2hhbmRsZV9waW5nX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBQSU5HIGZyYW1lLgorICAgICAgICAiIiIK
KyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfaGFuZGxlX3Jl
c2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250
ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgSGFuZGxlIGEgUkVTRVRfU1RSRUFNIGZyYW1lLgorICAgICAgICAiIiIK
KyAgICAgICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlcnJvcl9j
b2RlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBmaW5hbF9zaXplID0gYnVmLnB1bGxf
dWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNf
bG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFt
ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9yZXNl
dF9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29k
ZSwgZmluYWxfc2l6ZT1maW5hbF9zaXplLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlv
bgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0
cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICJTdHJl
YW0gJWQgcmVzZXQgYnkgcGVlciAoZXJyb3IgY29kZSAlZCwgZmluYWwgc2l6ZSAlZCkiLAorICAg
ICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZXJyb3JfY29kZSwKKyAgICAgICAgICAg
IGZpbmFsX3NpemUsCisgICAgICAgICkKKyAgICAgICAgIyBzdHJlYW0gPSBzZWxmLl9nZXRfb3Jf
Y3JlYXRlX3N0cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIHNlbGYuX2V2ZW50
cy5hcHBlbmQoCisgICAgICAgICAgICBldmVudHMuU3RyZWFtUmVzZXQoZXJyb3JfY29kZT1lcnJv
cl9jb2RlLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQorICAgICAgICApCisKKyAgICBkZWYgX2hhbmRs
ZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVp
Y1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgUkVUSVJFX0NPTk5FQ1RJT05fSUQg
ZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19s
b2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1l
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3JldGly
ZV9jb25uZWN0aW9uX2lkX2ZyYW1lKHNlcXVlbmNlX251bWJlcikKKyAgICAgICAgICAgICkKKwor
ICAgICAgICAjIGZpbmQgdGhlIGNvbm5lY3Rpb24gSUQgYnkgc2VxdWVuY2UgbnVtYmVyCisgICAg
ICAgIGZvciBpbmRleCwgY29ubmVjdGlvbl9pZCBpbiBlbnVtZXJhdGUoc2VsZi5faG9zdF9jaWRz
KToKKyAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyID09IHNlcXVl
bmNlX251bWJlcjoKKyAgICAgICAgICAgICAgICBpZiBjb25uZWN0aW9uX2lkLmNpZCA9PSBjb250
ZXh0Lmhvc3RfY2lkOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBS
T1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJh
bWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNhbm5vdCBy
ZXRpcmUgY3VycmVudCBjb25uZWN0aW9uIElEIiwKKyAgICAgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgIlBl
ZXIgcmV0aXJpbmcgQ0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChj
b25uZWN0aW9uX2lkLmNpZCksCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faWQuc2Vx
dWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBkZWwgc2Vs
Zi5faG9zdF9jaWRzW2luZGV4XQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50cy5Db25uZWN0aW9uSWRSZXRpcmVkKGNvbm5lY3Rp
b25faWQ9Y29ubmVjdGlvbl9pZC5jaWQpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGJyZWFrCisKKyAgICAgICAgIyBpc3N1ZSBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAg
IHNlbGYuX3JlcGxlbmlzaF9jb25uZWN0aW9uX2lkcygpCisKKyAgICBkZWYgX2hhbmRsZV9zdG9w
X3NlbmRpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4
dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEhhbmRsZSBhIFNUT1BfU0VORElORyBmcmFtZS4KKyAgICAgICAgIiIiCisg
ICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZXJyb3JfY29k
ZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgICMgYXBwbGljYXRpb24gZXJyb3IgY29kZQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwgc3RyZWFtX2lkPXN0cmVh
bV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNoZWNr
IHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVhbV9jYW5fc2VuZChm
cmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJl
YW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgZGVmIF9oYW5kbGVfc3RyZWFtX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBTVFJFQU0gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiA0OgorICAgICAgICAg
ICAgb2Zmc2V0ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgb2Zmc2V0ID0gMAorICAgICAgICBpZiBmcmFtZV90eXBlICYgMjoKKyAgICAgICAgICAgIGxl
bmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxl
bmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkKKyAgICAgICAgaWYgb2Zmc2V0ICsgbGVu
Z3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJv
cigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJ
TkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAg
ICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxlbmd0aCBjYW5ub3QgZXhjZWVkIDJe
NjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJhbWUgPSBRdWljU3RyZWFtRnJhbWUo
CisgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LCBkYXRhPWJ1Zi5wdWxsX2J5dGVzKGxlbmd0aCks
IGZpbj1ib29sKGZyYW1lX3R5cGUgJiAxKQorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJh
bWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0cmVhbV9mcmFtZShmcmFtZSwgc3RyZWFtX2lkPXN0cmVh
bV9pZCkKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24K
KyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVhbV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJl
YW1faWQpCisKKyAgICAgICAgIyBjaGVjayBmbG93LWNvbnRyb2wgbGltaXRzCisgICAgICAgIHN0
cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkK
KyAgICAgICAgaWYgb2Zmc2V0ICsgbGVuZ3RoID4gc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2Nh
bDoKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAg
ICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUiwKKyAgICAgICAg
ICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3Bo
cmFzZT0iT3ZlciBzdHJlYW0gZGF0YSBsaW1pdCIsCisgICAgICAgICAgICApCisgICAgICAgIG5l
d2x5X3JlY2VpdmVkID0gbWF4KDAsIG9mZnNldCArIGxlbmd0aCAtIHN0cmVhbS5fcmVjdl9oaWdo
ZXN0KQorICAgICAgICBpZiBzZWxmLl9sb2NhbF9tYXhfZGF0YV91c2VkICsgbmV3bHlfcmVjZWl2
ZWQgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkZMT1df
Q09OVFJPTF9FUlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iT3ZlciBjb25uZWN0aW9uIGRhdGEgbGltaXQi
LAorICAgICAgICAgICAgKQorCisgICAgICAgIGV2ZW50ID0gc3RyZWFtLmFkZF9mcmFtZShmcmFt
ZSkKKyAgICAgICAgaWYgZXZlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9ldmVu
dHMuYXBwZW5kKGV2ZW50KQorICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YV91c2VkICs9IG5l
d2x5X3JlY2VpdmVkCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBTVFJFQU1fREFUQV9CTE9DS0VEIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAg
c3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxs
X3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJh
bWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3Ry
ZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQs
IHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK
KyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisgICAgICAgIHNlbGYuX2Fzc2VydF9z
dHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgICAgIHNlbGYu
X2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKworICAgIGRlZiBf
aGFuZGxlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVp
Y1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgU1RSRUFNU19CTE9DS0VEIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgbGltaXQgPSBidWYucHVsbF91aW50X3ZhcigpCisKKyAg
ICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0cmVhbXNfYmxvY2tlZF9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5pZGlyZWN0aW9uYWw9ZnJhbWVfdHlwZSA9PSBR
dWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tFRF9VTkksCisgICAgICAgICAgICAgICAgICAgIGxp
bWl0PWxpbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBf
b25fYWNrX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3Rh
dGUsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UsIGhpZ2hlc3RfYWNrZWQ6IGludAorICAgICkgLT4g
Tm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYW4gQUNLIGZyYW1lIGlz
IGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkg
PT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzcGFjZS5hY2tfcXVldWUu
c3VidHJhY3QoMCwgaGlnaGVzdF9hY2tlZCArIDEpCisKKyAgICBkZWYgX29uX2hhbmRzaGFrZV9k
b25lX2RlbGl2ZXJ5KHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBIQU5EU0hBS0VfRE9ORSBmcmFt
ZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2
ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5faGFuZHNo
YWtlX2RvbmVfcGVuZGluZyA9IFRydWUKKworICAgIGRlZiBfb25fbWF4X2RhdGFfZGVsaXZlcnko
c2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIE1BWF9EQVRBIGZyYW1lIGlzIGFja25vd2xlZGdlZCBv
ciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkgIT0gUXVpY0RlbGl2ZXJ5
U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YV9zZW50ID0gMAor
CisgICAgZGVmIF9vbl9tYXhfc3RyZWFtX2RhdGFfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRl
bGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBO
b25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIE1BWF9TVFJFQU1fREFU
QSBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlm
IGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc3RyZWFt
Lm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ID0gMAorCisgICAgZGVmIF9vbl9uZXdfY29ubmVj
dGlvbl9pZF9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0
YXRlLCBjb25uZWN0aW9uX2lkOiBRdWljQ29ubmVjdGlvbklkCisgICAgKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIE5FV19DT05ORUNUSU9OX0lEIGZyYW1l
IGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZl
cnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBjb25uZWN0aW9uX2lk
Lndhc19zZW50ID0gRmFsc2UKKworICAgIGRlZiBfb25fcGluZ19kZWxpdmVyeSgKKyAgICAgICAg
c2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCB1aWRzOiBTZXF1ZW5jZVtpbnRdCisg
ICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIFBJTkcg
ZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBk
ZWxpdmVyeSA9PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygiUmVjZWl2ZWQgUElORyVzIHJlc3BvbnNlIiwgIiIgaWYgdWlkcyBlbHNlICIg
KHByb2JlKSIpCisgICAgICAgICAgICBmb3IgdWlkIGluIHVpZHM6CisgICAgICAgICAgICAgICAg
c2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuUGluZ0Fja25vd2xlZGdlZCh1aWQ9dWlkKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3BpbmdfcGVuZGluZy5leHRlbmQodWlkcykK
KworICAgIGRlZiBfb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgIHNl
bGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwgc2VxdWVuY2VfbnVtYmVyOiBpbnQKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgUkVUSVJF
X0NPTk5FQ1RJT05fSUQgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIi
IgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAg
ICAgICAgIHNlbGYuX3JldGlyZV9jb25uZWN0aW9uX2lkcy5hcHBlbmQoc2VxdWVuY2VfbnVtYmVy
KQorCisgICAgZGVmIF9wYXlsb2FkX3JlY2VpdmVkKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBR
dWljUmVjZWl2ZUNvbnRleHQsIHBsYWluOiBieXRlcworICAgICkgLT4gVHVwbGVbYm9vbCwgYm9v
bF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBRVUlDIHBhY2tldCBwYXlsb2FkLgor
ICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9cGxhaW4pCisKKyAgICAgICAg
aXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGlzX3Byb2JpbmcgPSBOb25lCisgICAg
ICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorCisgICAgICAgICAgICAjIGNoZWNrIGZyYW1lIHR5cGUgaXMga25vd24K
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmcmFtZV9oYW5kbGVyLCBmcmFtZV9l
cG9jaHMgPSBzZWxmLl9fZnJhbWVfaGFuZGxlcnNbZnJhbWVfdHlwZV0KKyAgICAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xf
VklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IlVua25vd24gZnJhbWUgdHlwZSIsCisg
ICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNoZWNrIGZyYW1lIGlzIGFsbG93ZWQg
Zm9yIHRoZSBlcG9jaAorICAgICAgICAgICAgaWYgY29udGV4dC5lcG9jaCBub3QgaW4gZnJhbWVf
ZXBvY2hzOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBmcmFtZSB0eXBlIiwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaGFuZGxlIHRoZSBmcmFtZQorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIoY29udGV4dCwgZnJhbWVfdHlw
ZSwgYnVmKQorICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAgICAgICAgICAg
ICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iRmFpbGVkIHRvIHBhcnNlIGZyYW1lIiwKKyAgICAgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgdXBkYXRlIEFDSyBvbmx5IC8gcHJvYmluZyBmbGFncworICAgICAgICAgICAg
aWYgZnJhbWVfdHlwZSBub3QgaW4gTk9OX0FDS19FTElDSVRJTkdfRlJBTUVfVFlQRVM6CisgICAg
ICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZyA9IFRydWUKKworICAgICAgICAgICAgaWYgZnJh
bWVfdHlwZSBub3QgaW4gUFJPQklOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgICAgICBpc19w
cm9iaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYgaXNfcHJvYmluZyBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIGlzX3Byb2JpbmcgPSBUcnVlCisKKyAgICAgICAgcmV0dXJuIGlzX2Fja19l
bGljaXRpbmcsIGJvb2woaXNfcHJvYmluZykKKworICAgIGRlZiBfcmVwbGVuaXNoX2Nvbm5lY3Rp
b25faWRzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSBuZXcg
Y29ubmVjdGlvbiBJRHMuCisgICAgICAgICIiIgorICAgICAgICB3aGlsZSBsZW4oc2VsZi5faG9z
dF9jaWRzKSA8IG1pbig4LCBzZWxmLl9yZW1vdGVfYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQp
OgorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBR
dWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAgICAgICBjaWQ9b3MudXJhbmRvbShzZWxm
Ll9jb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAg
ICAgc2VxdWVuY2VfbnVtYmVyPXNlbGYuX2hvc3RfY2lkX3NlcSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPW9zLnVyYW5kb20oMTYpLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSArPSAxCisK
KyAgICBkZWYgX3B1c2hfY3J5cHRvX2RhdGEoc2VsZikgLT4gTm9uZToKKyAgICAgICAgZm9yIGVw
b2NoLCBidWYgaW4gc2VsZi5fY3J5cHRvX2J1ZmZlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHNl
bGYuX2NyeXB0b19zdHJlYW1zW2Vwb2NoXS53cml0ZShidWYuZGF0YSkKKyAgICAgICAgICAgIGJ1
Zi5zZWVrKDApCisKKyAgICBkZWYgX3NlbmRfcHJvYmUoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
c2VsZi5fcHJvYmVfcGVuZGluZyA9IFRydWUKKworICAgIGRlZiBfcGFyc2VfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgIHNlbGYsIGRhdGE6IGJ5dGVzLCBmcm9tX3Nlc3Npb25fdGlja2V0
OiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHF1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBC
dWZmZXIoZGF0YT1kYXRhKSwgcHJvdG9jb2xfdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICkKKworICAgICAgICAjIGxvZyBldmVudAorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBp
cyBub3QgTm9uZSBhbmQgbm90IGZyb21fc2Vzc2lvbl90aWNrZXQ6CisgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5z
cG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAg
ICAgICAgICBkYXRhPXNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVy
cygKKyAgICAgICAgICAgICAgICAgICAgb3duZXI9InJlbW90ZSIsIHBhcmFtZXRlcnM9cXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycworICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisK
KyAgICAgICAgIyB2YWxpZGF0ZSByZW1vdGUgcGFyYW1ldGVycworICAgICAgICBpZiAoCisgICAg
ICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgIGFuZCBub3QgZnJvbV9zZXNzaW9u
X3RpY2tldAorICAgICAgICAgICAgYW5kICgKKyAgICAgICAgICAgICAgICBxdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICAgICAhPSBz
ZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgICAgICApCisgICAgICAgICk6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5UUkFOU1BPUlRfUEFSQU1FVEVSX0VSUk9SLAorICAgICAg
ICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAg
ICAgcmVhc29uX3BocmFzZT0ib3JpZ2luYWxfY29ubmVjdGlvbl9pZCBkb2VzIG5vdCBtYXRjaCIs
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBzdG9yZSByZW1vdGUgcGFyYW1ldGVycworICAg
ICAgICBpZiBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFja19kZWxheV9leHBvbmVudCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQgPSBz
ZWxmLl9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50CisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0
X3BhcmFtZXRlcnMuYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLl9yZW1vdGVfYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAoCisgICAg
ICAgICAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9p
ZF9saW1pdAorICAgICAgICAgICAgKQorICAgICAgICBpZiBxdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzLmlkbGVfdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9p
ZGxlX3RpbWVvdXQgPSBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmlkbGVfdGltZW91dCAvIDEw
MDAuMAorICAgICAgICBpZiBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLm1heF9hY2tfZGVsYXkg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9sb3NzLm1heF9hY2tfZGVsYXkgPSBxdWlj
X3RyYW5zcG9ydF9wYXJhbWV0ZXJzLm1heF9hY2tfZGVsYXkgLyAxMDAwLjAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9kYXRhZ3JhbV9mcmFtZV9zaXplID0gKAorICAgICAgICAgICAgcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycy5tYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZQorICAgICAgICApCisg
ICAgICAgIGZvciBwYXJhbSBpbiBbCisgICAgICAgICAgICAibWF4X2RhdGEiLAorICAgICAgICAg
ICAgIm1heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsIiwKKyAgICAgICAgICAgICJtYXhfc3RyZWFt
X2RhdGFfYmlkaV9yZW1vdGUiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1fZGF0YV91bmkiLAor
ICAgICAgICAgICAgIm1heF9zdHJlYW1zX2JpZGkiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1z
X3VuaSIsCisgICAgICAgIF06CisgICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIocXVpY190cmFu
c3BvcnRfcGFyYW1ldGVycywgImluaXRpYWxfIiArIHBhcmFtKQorICAgICAgICAgICAgaWYgdmFs
dWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAiX3JlbW90ZV8i
ICsgcGFyYW0sIHZhbHVlKQorCisgICAgZGVmIF9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRl
cnMoc2VsZikgLT4gYnl0ZXM6CisgICAgICAgIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMgPSBR
dWljVHJhbnNwb3J0UGFyYW1ldGVycygKKyAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD1z
ZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQsCisgICAgICAgICAgICBhY3RpdmVfY29ubmVj
dGlvbl9pZF9saW1pdD1zZWxmLl9sb2NhbF9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCwKKyAg
ICAgICAgICAgIGlkbGVfdGltZW91dD1pbnQoc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVv
dXQgKiAxMDAwKSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9c2VsZi5fbG9jYWxfbWF4
X2RhdGEsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPXNl
bGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsLAorICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGU9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfdW5pPXNl
bGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmksCisgICAgICAgICAgICBpbml0aWFsX21heF9z
dHJlYW1zX2JpZGk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfYmlkaSwKKyAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pPXNlbGYuX2xvY2FsX21heF9zdHJlYW1zX3VuaSwKKyAgICAg
ICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICBtYXhfZGF0YWdyYW1fZnJhbWVf
c2l6ZT1zZWxmLl9jb25maWd1cmF0aW9uLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplLAorICAgICAg
ICAgICAgcXVhbnR1bV9yZWFkaW5lc3M9YiJRIiAqIDEyMDAKKyAgICAgICAgICAgIGlmIHNlbGYu
X2NvbmZpZ3VyYXRpb24ucXVhbnR1bV9yZWFkaW5lc3NfdGVzdAorICAgICAgICAgICAgZWxzZSBO
b25lLAorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAg
ICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgPSAo
CisgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2Vy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAor
ICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2
ZW50PSJwYXJhbWV0ZXJzX3NldCIsCisgICAgICAgICAgICAgICAgZGF0YT1zZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgIG93
bmVyPSJsb2NhbCIsIHBhcmFtZXRlcnM9cXVpY190cmFuc3BvcnRfcGFyYW1ldGVycworICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFj
aXR5PTMgKiBQQUNLRVRfTUFYX1NJWkUpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywgcHJv
dG9jb2xfdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIGJ1
Zi5kYXRhCisKKyAgICBkZWYgX3NldF9zdGF0ZShzZWxmLCBzdGF0ZTogUXVpY0Nvbm5lY3Rpb25T
dGF0ZSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCIlcyAtPiAlcyIsIHNl
bGYuX3N0YXRlLCBzdGF0ZSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSBzdGF0ZQorCisgICAgZGVm
IF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IGJvb2w6CisgICAg
ICAgIHJldHVybiBzdHJlYW1faXNfY2xpZW50X2luaXRpYXRlZCgKKyAgICAgICAgICAgIHN0cmVh
bV9pZAorICAgICAgICApICE9IHNlbGYuX2lzX2NsaWVudCBvciBub3Qgc3RyZWFtX2lzX3VuaWRp
cmVjdGlvbmFsKHN0cmVhbV9pZCkKKworICAgIGRlZiBfc3RyZWFtX2Nhbl9zZW5kKHNlbGYsIHN0
cmVhbV9pZDogaW50KSAtPiBib29sOgorICAgICAgICByZXR1cm4gc3RyZWFtX2lzX2NsaWVudF9p
bml0aWF0ZWQoCisgICAgICAgICAgICBzdHJlYW1faWQKKyAgICAgICAgKSA9PSBzZWxmLl9pc19j
bGllbnQgb3Igbm90IHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQpCisKKyAgICBk
ZWYgX3VuYmxvY2tfc3RyZWFtcyhzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCkgLT4gTm9u
ZToKKyAgICAgICAgaWYgaXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAg
ICAgIG1heF9zdHJlYW1zID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaQorICAgICAgICAg
ICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUKKyAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGkKKyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9
IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpCisKKyAgICAgICAgd2hpbGUgc3RyZWFtc19ibG9j
a2VkIGFuZCBzdHJlYW1zX2Jsb2NrZWRbMF0uc3RyZWFtX2lkIC8vIDQgPCBtYXhfc3RyZWFtczoK
KyAgICAgICAgICAgIHN0cmVhbSA9IHN0cmVhbXNfYmxvY2tlZC5wb3AoMCkKKyAgICAgICAgICAg
IHN0cmVhbS5pc19ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gbWF4X3N0cmVhbV9kYXRhX3JlbW90ZQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9zdHJlYW1zX2Jsb2NrZWRfYmlkaSBhbmQgbm90IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91
bmk6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVuZGluZyA9IEZhbHNlCisK
KyAgICBkZWYgX3VwZGF0ZV90cmFmZmljX2tleSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZGly
ZWN0aW9uOiB0bHMuRGlyZWN0aW9uLAorICAgICAgICBlcG9jaDogdGxzLkVwb2NoLAorICAgICAg
ICBjaXBoZXJfc3VpdGU6IHRscy5DaXBoZXJTdWl0ZSwKKyAgICAgICAgc2VjcmV0OiBieXRlcywK
KyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGljaCBpcyBp
bnZva2VkIGJ5IHRoZSBUTFMgZW5naW5lIHdoZW4gbmV3IHRyYWZmaWMga2V5cyBhcmUKKyAgICAg
ICAgYXZhaWxhYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VjcmV0c19sb2dfZmlsZSA9IHNl
bGYuX2NvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2dfZmlsZQorICAgICAgICBpZiBzZWNyZXRzX2xv
Z19maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbGFiZWxfcm93ID0gc2VsZi5faXNfY2xp
ZW50ID09IChkaXJlY3Rpb24gPT0gdGxzLkRpcmVjdGlvbi5ERUNSWVBUKQorICAgICAgICAgICAg
bGFiZWwgPSBTRUNSRVRTX0xBQkVMU1tsYWJlbF9yb3ddW2Vwb2NoLnZhbHVlXQorICAgICAgICAg
ICAgc2VjcmV0c19sb2dfZmlsZS53cml0ZSgKKyAgICAgICAgICAgICAgICAiJXMgJXMgJXNcbiIg
JSAobGFiZWwsIHNlbGYudGxzLmNsaWVudF9yYW5kb20uaGV4KCksIHNlY3JldC5oZXgoKSkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUuZmx1c2goKQorCisgICAg
ICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbZXBvY2hdCisgICAgICAgIGlmIGRpcmVjdGlvbiA9
PSB0bHMuRGlyZWN0aW9uLkVOQ1JZUFQ6CisgICAgICAgICAgICBjcnlwdG8uc2VuZC5zZXR1cCgK
KyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9Y2lwaGVyX3N1aXRlLCBzZWNyZXQ9c2VjcmV0
LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGNyeXB0by5yZWN2LnNldHVwKAorICAgICAgICAgICAgICAgIGNpcGhlcl9zdWl0
ZT1jaXBoZXJfc3VpdGUsIHNlY3JldD1zZWNyZXQsIHZlcnNpb249c2VsZi5fdmVyc2lvbgorICAg
ICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9hcHBsaWNhdGlvbigKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIG5ldHdvcmtfcGF0aDogUXVpY05ldHdvcmtQYXRo
LCBub3c6IGZsb2F0CisgICAgKSAtPiBOb25lOgorICAgICAgICBjcnlwdG9fc3RyZWFtOiBPcHRp
b25hbFtRdWljU3RyZWFtXSA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fY3J5cHRvc1t0bHMuRXBv
Y2guT05FX1JUVF0uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgY3J5cHRvID0gc2VsZi5f
Y3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGNyeXB0b19zdHJlYW0gPSBz
ZWxmLl9jcnlwdG9fc3RyZWFtc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIHBhY2tl
dF90eXBlID0gUEFDS0VUX1RZUEVfT05FX1JUVAorICAgICAgICBlbGlmIHNlbGYuX2NyeXB0b3Nb
dGxzLkVwb2NoLlpFUk9fUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8g
PSBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5aRVJPX1JUVF0KKyAgICAgICAgICAgIHBhY2tldF90
eXBlID0gUEFDS0VUX1RZUEVfWkVST19SVFQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBzcGFjZSA9IHNlbGYuX3NwYWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKwor
ICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBhcHBseSBwYWNpbmcsIGV4Y2VwdCBp
ZiB3ZSBoYXZlIEFDS3MgdG8gc2VuZAorICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIE5v
bmUgb3Igc3BhY2UuYWNrX2F0ID49IG5vdzoKKyAgICAgICAgICAgICAgICBzZWxmLl9wYWNpbmdf
YXQgPSBzZWxmLl9sb3NzLl9wYWNlci5uZXh0X3NlbmRfdGltZShub3c9bm93KQorICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX3BhY2luZ19hdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KHBhY2tldF90eXBlLCBj
cnlwdG8pCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZToKKyAgICAg
ICAgICAgICAgICAjIEFDSworICAgICAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3Qg
Tm9uZSBhbmQgc3BhY2UuYWNrX2F0IDw9IG5vdzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
d3JpdGVfYWNrX2ZyYW1lKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIG5vdz1ub3cpCisK
KyAgICAgICAgICAgICAgICAjIEhBTkRTSEFLRV9ET05FCisgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5faGFuZHNoYWtlX2RvbmVfcGVuZGluZzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoYnVpbGRlcj1idWlsZGVyKQorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAg
ICAgICMgUEFUSCBDSEFMTEVOR0UKKyAgICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAg
ICAgICAgIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgICAg
IGFuZCBuZXR3b3JrX3BhdGgubG9jYWxfY2hhbGxlbmdlIGlzIE5vbmUKKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UgPSBvcy51cmFuZG9tKDgpCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLCBjaGFsbGVuZ2U9Y2hhbGxlbmdlCisg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLmxv
Y2FsX2NoYWxsZW5nZSA9IGNoYWxsZW5nZQorCisgICAgICAgICAgICAgICAgIyBQQVRIIFJFU1BP
TlNFCisgICAgICAgICAgICAgICAgaWYgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BhdGhfcmVzcG9uc2Vf
ZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5n
ZT1uZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZQorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlID0gTm9uZQor
CisgICAgICAgICAgICAgICAgIyBORVdfQ09OTkVDVElPTl9JRAorICAgICAgICAgICAgICAgIGZv
ciBjb25uZWN0aW9uX2lkIGluIHNlbGYuX2hvc3RfY2lkczoKKyAgICAgICAgICAgICAgICAgICAg
aWYgbm90IGNvbm5lY3Rpb25faWQud2FzX3NlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNvbm5lY3Rpb25faWQ9Y29ubmVjdGlvbl9pZAorICAg
ICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgIyBSRVRJUkVfQ09OTkVD
VElPTl9JRAorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JldGlyZV9jb25uZWN0aW9uX2lk
czoKKyAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyID0gc2VsZi5fcmV0aXJlX2Nv
bm5lY3Rpb25faWRzLnBvcCgwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9yZXRp
cmVfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9
YnVpbGRlciwgc2VxdWVuY2VfbnVtYmVyPXNlcXVlbmNlX251bWJlcgorICAgICAgICAgICAgICAg
ICAgICApCisKKyAgICAgICAgICAgICAgICAjIFNUUkVBTVNfQkxPQ0tFRAorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfYmlkaToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfdHlwZT1RdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tFRF9CSURJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbWl0PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zdHJl
YW1zX2Jsb2NrZWRfdW5pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc3Ry
ZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9
YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFt
ZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW1pdD1zZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVuZGluZyA9
IEZhbHNlCisKKyAgICAgICAgICAgICAgICAjIE1BWF9EQVRBCisgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfY29ubmVjdGlvbl9saW1pdHMoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSkK
KworICAgICAgICAgICAgIyBzdHJlYW0tbGV2ZWwgbGltaXRzCisgICAgICAgICAgICBmb3Igc3Ry
ZWFtIGluIHNlbGYuX3N0cmVhbXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfc3RyZWFtX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBzdHJlYW09c3Ry
ZWFtKQorCisgICAgICAgICAgICAjIFBJTkcgKHVzZXItcmVxdWVzdCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX3BpbmdfcGVuZGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5nX2Zy
YW1lKGJ1aWxkZXIsIHNlbGYuX3BpbmdfcGVuZGluZykKKyAgICAgICAgICAgICAgICBzZWxmLl9w
aW5nX3BlbmRpbmcuY2xlYXIoKQorCisgICAgICAgICAgICAjIFBJTkcgKHByb2JlKQorICAgICAg
ICAgICAgaWYgc2VsZi5fcHJvYmVfcGVuZGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9waW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAg
ICAgICAgIGlmIGNyeXB0b19zdHJlYW0gaXMgbm90IE5vbmUgYW5kIG5vdCBjcnlwdG9fc3RyZWFt
LnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NyeXB0
b19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFj
ZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgREFUQUdSQU0KKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nOgor
ICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0
YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXNlbGYuX2RhdGFncmFtc19wZW5kaW5nWzBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkRBVEFHUkFN
X1dJVEhfTEVOR1RILAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLnBvcGxlZnQoKQorICAgICAgICAgICAgICAgIGV4Y2Vw
dCBRdWljUGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgICAgICMgU1RSRUFNCisgICAgICAgICAgICBmb3Igc3RyZWFtIGluIHNlbGYuX3N0cmVh
bXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5pc19ibG9ja2VkIGFu
ZCBub3Qgc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9yZW1vdGVfbWF4X2RhdGFfdXNlZCArPSBzZWxmLl93cml0ZV9zdHJlYW1fZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzcGFjZT1zcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfb2Zmc2V0PW1pbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJlYW0uX3NlbmRfaGlnaGVzdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgc2VsZi5fcmVtb3RlX21heF9kYXRhCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLSBzZWxmLl9yZW1vdGVfbWF4X2RhdGFfdXNlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYgYnVpbGRl
ci5wYWNrZXRfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5fcGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PW5vdykKKworICAgIGRlZiBfd3JpdGVfaGFuZHNoYWtlKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgZXBvY2g6IHRscy5FcG9jaCwgbm93OiBmbG9hdAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAg
ICAgaWYgbm90IGNyeXB0by5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICBjcnlwdG9fc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNbZXBvY2hdCisgICAg
ICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW2Vwb2NoXQorCisgICAgICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgICAgICBpZiBlcG9jaCA9PSB0bHMuRXBvY2guSU5JVElBTDoKKyAgICAgICAgICAgICAg
ICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0lOSVRJQUwKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBQQUNLRVRfVFlQRV9IQU5EU0hBS0UKKyAgICAg
ICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KHBhY2tldF90eXBlLCBjcnlwdG8pCisKKyAgICAg
ICAgICAgICMgQUNLCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfYWNrX2ZyYW1lKGJ1aWxkZXI9YnVpbGRlciwgc3Bh
Y2U9c3BhY2UsIG5vdz1ub3cpCisKKyAgICAgICAgICAgICMgQ1JZUFRPCisgICAgICAgICAgICBp
ZiBub3QgY3J5cHRvX3N0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eToKKyAgICAgICAgICAgICAg
ICBpZiBzZWxmLl93cml0ZV9jcnlwdG9fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1jcnlwdG9fc3RyZWFtCisgICAgICAgICAg
ICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJvYmVfcGVuZGluZyA9IEZhbHNl
CisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUpCisgICAgICAgICAgICBpZiAoCisgICAgICAg
ICAgICAgICAgc2VsZi5fcHJvYmVfcGVuZGluZworICAgICAgICAgICAgICAgIGFuZCBlcG9jaCA9
PSB0bHMuRXBvY2guSEFORFNIQUtFCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9oYW5k
c2hha2VfY29tcGxldGUKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfcGluZ19mcmFtZShidWlsZGVyLCBjb21tZW50PSJwcm9iZSIpCisgICAgICAgICAgICAgICAg
c2VsZi5fcHJvYmVfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIGJ1aWxkZXIucGFj
a2V0X2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBkZWYgX3dyaXRlX2Fj
a19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIG5vdzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICMg
Y2FsY3VsYXRlIEFDSyBkZWxheQorICAgICAgICBhY2tfZGVsYXkgPSBub3cgLSBzcGFjZS5sYXJn
ZXN0X3JlY2VpdmVkX3RpbWUKKyAgICAgICAgYWNrX2RlbGF5X2VuY29kZWQgPSBpbnQoYWNrX2Rl
bGF5ICogMTAwMDAwMCkgPj4gc2VsZi5fbG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50CisKKyAgICAg
ICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUu
QUNLLAorICAgICAgICAgICAgY2FwYWNpdHk9QUNLX0ZSQU1FX0NBUEFDSVRZLAorICAgICAgICAg
ICAgaGFuZGxlcj1zZWxmLl9vbl9hY2tfZGVsaXZlcnksCisgICAgICAgICAgICBoYW5kbGVyX2Fy
Z3M9KHNwYWNlLCBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldCksCisgICAgICAgICkKKyAg
ICAgICAgcmFuZ2VzID0gcHVzaF9hY2tfZnJhbWUoYnVmLCBzcGFjZS5hY2tfcXVldWUsIGFja19k
ZWxheV9lbmNvZGVkKQorICAgICAgICBzcGFjZS5hY2tfYXQgPSBOb25lCisKKyAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Fja19mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgcmFuZ2VzPXNwYWNlLmFja19xdWV1ZSwgZGVsYXk9YWNrX2RlbGF5CisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgaWYgd2UgbmVlZCB0byB0cmln
Z2VyIGFuIEFDSy1vZi1BQ0sKKyAgICAgICAgaWYgcmFuZ2VzID4gMSBhbmQgYnVpbGRlci5wYWNr
ZXRfbnVtYmVyICUgOCA9PSAwOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGluZ19mcmFtZShi
dWlsZGVyLCBjb21tZW50PSJBQ0stb2YtQUNLIHRyaWdnZXIiKQorCisgICAgZGVmIF93cml0ZV9j
b25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBidWlsZGVyOiBR
dWljUGFja2V0QnVpbGRlciwKKyAgICAgICAgZXJyb3JfY29kZTogaW50LAorICAgICAgICBmcmFt
ZV90eXBlOiBPcHRpb25hbFtpbnRdLAorICAgICAgICByZWFzb25fcGhyYXNlOiBzdHIsCisgICAg
KSAtPiBOb25lOgorICAgICAgICByZWFzb25fYnl0ZXMgPSByZWFzb25fcGhyYXNlLmVuY29kZSgi
dXRmOCIpCisgICAgICAgIHJlYXNvbl9sZW5ndGggPSBsZW4ocmVhc29uX2J5dGVzKQorCisgICAg
ICAgIGlmIGZyYW1lX3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BUFBMSUNBVElPTl9DTE9T
RSwKKyAgICAgICAgICAgICAgICBjYXBhY2l0eT1BUFBMSUNBVElPTl9DTE9TRV9GUkFNRV9DQVBB
Q0lUWSArIHJlYXNvbl9sZW5ndGgsCisgICAgICAgICAgICApCisgICAgICAgICAgICBidWYucHVz
aF91aW50X3ZhcihlcnJvcl9jb2RlKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIocmVh
c29uX2xlbmd0aCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHJlYXNvbl9ieXRlcykKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRfQ0xPU0UsCisgICAgICAgICAgICAg
ICAgY2FwYWNpdHk9VFJBTlNQT1JUX0NMT1NFX0ZSQU1FX0NBUEFDSVRZICsgcmVhc29uX2xlbmd0
aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGVycm9yX2Nv
ZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV90eXBlKQorICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIocmVhc29uX2xlbmd0aCkKKyAgICAgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKHJlYXNvbl9ieXRlcykKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9cmVhc29uX3BocmFzZSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2Nvbm5lY3Rp
b25fbGltaXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3Bh
Y2U6IFF1aWNQYWNrZXRTcGFjZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IFJhaXNlIE1BWF9EQVRBIGlmIG5lZWRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYu
X2xvY2FsX21heF9kYXRhX3VzZWQgKiAyID4gc2VsZi5fbG9jYWxfbWF4X2RhdGE6CisgICAgICAg
ICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YSAqPSAyCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoIkxvY2FsIG1heF9kYXRhIHJhaXNlZCB0byAlZCIsIHNlbGYuX2xvY2FsX21heF9kYXRh
KQorICAgICAgICBpZiBzZWxmLl9sb2NhbF9tYXhfZGF0YV9zZW50ICE9IHNlbGYuX2xvY2FsX21h
eF9kYXRhOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9EQVRBLAorICAgICAgICAgICAgICAgIGNhcGFjaXR5
PU1BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZLAorICAgICAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5f
b25fbWF4X2RhdGFfZGVsaXZlcnksCisgICAgICAgICAgICApCisgICAgICAgICAgICBidWYucHVz
aF91aW50X3ZhcihzZWxmLl9sb2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2xvY2Fs
X21heF9kYXRhX3NlbnQgPSBzZWxmLl9sb2NhbF9tYXhfZGF0YQorCisgICAgICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbWF4X2RhdGFfZnJhbWUoc2Vs
Zi5fbG9jYWxfbWF4X2RhdGEpCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9j
cnlwdG9fZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBz
cGFjZTogUXVpY1BhY2tldFNwYWNlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAgICApIC0+IGJvb2w6
CisgICAgICAgIGZyYW1lX292ZXJoZWFkID0gMyArIHNpemVfdWludF92YXIoc3RyZWFtLm5leHRf
c2VuZF9vZmZzZXQpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZShidWlsZGVyLnJl
bWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFtZV9vdmVyaGVhZCkKKyAgICAgICAgaWYgZnJhbWUg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgIGNhcGFj
aXR5PWZyYW1lX292ZXJoZWFkLAorICAgICAgICAgICAgICAgIGhhbmRsZXI9c3RyZWFtLm9uX2Rh
dGFfZGVsaXZlcnksCisgICAgICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShmcmFtZS5vZmZzZXQs
IGZyYW1lLm9mZnNldCArIGxlbihmcmFtZS5kYXRhKSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZS5vZmZzZXQpCisgICAgICAgICAgICBidWYucHVz
aF91aW50MTYobGVuKGZyYW1lLmRhdGEpIHwgMHg0MDAwKQorICAgICAgICAgICAgYnVmLnB1c2hf
Ynl0ZXMoZnJhbWUuZGF0YSkKKworICAgICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGJ1aWxk
ZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cXVpY19sb2dnZXIuZW5jb2RlX2NyeXB0b19mcmFtZShmcmFtZSkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIF93cml0ZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1Bh
Y2tldEJ1aWxkZXIsIGRhdGE6IGJ5dGVzLCBmcmFtZV90eXBlOiBRdWljRnJhbWVUeXBlCisgICAg
KSAtPiBib29sOgorICAgICAgICAiIiIKKyAgICAgICAgV3JpdGUgYSBEQVRBR1JBTSBmcmFtZS4K
KworICAgICAgICBSZXR1cm5zIFRydWUgaWYgdGhlIGZyYW1lIHdhcyBwcm9jZXNzZWQsIEZhbHNl
IG90aGVyd2lzZS4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBmcmFtZV90eXBlID09IFF1
aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgKKyAgICAgICAgbGVuZ3RoID0gbGVuKGRh
dGEpCisgICAgICAgIGZyYW1lX3NpemUgPSAxICsgc2l6ZV91aW50X3ZhcihsZW5ndGgpICsgbGVu
Z3RoCisKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShmcmFtZV90eXBlLCBjYXBh
Y2l0eT1mcmFtZV9zaXplKQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihsZW5ndGgpCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGRhdGEpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAg
aWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1
aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIuZW5jb2RlX2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICApCisK
KyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfd3JpdGVfaGFuZHNoYWtlX2RvbmVfZnJh
bWUoc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIpIC0+IE5vbmU6CisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkhBTkRTSEFLRV9E
T05FLAorICAgICAgICAgICAgY2FwYWNpdHk9SEFORFNIQUtFX0RPTkVfRlJBTUVfQ0FQQUNJVFks
CisgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX2hhbmRzaGFrZV9kb25lX2RlbGl2ZXJ5LAor
ICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19s
b2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1l
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2hhbmRz
aGFrZV9kb25lX2ZyYW1lKCkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfbmV3X2Nv
bm5lY3Rpb25faWRfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWls
ZGVyLCBjb25uZWN0aW9uX2lkOiBRdWljQ29ubmVjdGlvbklkCisgICAgKSAtPiBOb25lOgorICAg
ICAgICByZXRpcmVfcHJpb3JfdG8gPSAwICAjIEZJWE1FCisKKyAgICAgICAgYnVmID0gYnVpbGRl
ci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX0NPTk5FQ1RJT05f
SUQsCisgICAgICAgICAgICBjYXBhY2l0eT1ORVdfQ09OTkVDVElPTl9JRF9GUkFNRV9DQVBBQ0lU
WSwKKyAgICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZl
cnksCisgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGNvbm5lY3Rpb25faWQsKSwKKyAgICAgICAg
KQorICAgICAgICBidWYucHVzaF91aW50X3Zhcihjb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJl
cikKKyAgICAgICAgYnVmLnB1c2hfdWludF92YXIocmV0aXJlX3ByaW9yX3RvKQorICAgICAgICBi
dWYucHVzaF91aW50OChsZW4oY29ubmVjdGlvbl9pZC5jaWQpKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhjb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY29ubmVjdGlv
bl9pZC5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4pCisKKyAgICAgICAgY29ubmVjdGlvbl9pZC53YXNf
c2VudCA9IFRydWUKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuQ29ubmVjdGlv
bklkSXNzdWVkKGNvbm5lY3Rpb25faWQ9Y29ubmVjdGlvbl9pZC5jaWQpKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAg
ICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCwKKyAgICAg
ICAgICAgICAgICAgICAgcmV0aXJlX3ByaW9yX3RvPXJldGlyZV9wcmlvcl90bywKKyAgICAgICAg
ICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVyPWNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVy
LAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49Y29ubmVjdGlvbl9p
ZC5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4sCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF93cml0ZV9wYXRoX2NoYWxsZW5nZV9mcmFtZSgKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGNoYWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5v
bmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLlBBVEhfQ0hBTExFTkdFLCBjYXBhY2l0eT1QQVRIX0NIQUxMRU5HRV9GUkFNRV9D
QVBBQ0lUWQorICAgICAgICApCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGNoYWxsZW5nZSkKKwor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGF0aF9jaGFsbGVuZ2VfZnJh
bWUoZGF0YT1jaGFsbGVuZ2UpCisgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX3BhdGhf
cmVzcG9uc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVy
LCBjaGFsbGVuZ2U6IGJ5dGVzCisgICAgKSAtPiBOb25lOgorICAgICAgICBidWYgPSBidWlsZGVy
LnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JFU1BPTlNFLCBj
YXBhY2l0eT1QQVRIX1JFU1BPTlNFX0ZSQU1FX0NBUEFDSVRZCisgICAgICAgICkKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoY2hhbGxlbmdlKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9Y2hhbGxlbmdlKQorICAgICAgICAg
ICAgKQorCisgICAgZGVmIF93cml0ZV9waW5nX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVy
OiBRdWljUGFja2V0QnVpbGRlciwgdWlkczogTGlzdFtpbnRdID0gW10sIGNvbW1lbnQ9IiIKKyAg
ICApOgorICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1l
VHlwZS5QSU5HLAorICAgICAgICAgICAgY2FwYWNpdHk9UElOR19GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcGluZ19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhh
bmRsZXJfYXJncz0odHVwbGUodWlkcyksKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAiU2VuZGluZyBQSU5HJXMgaW4gcGFja2V0ICVkIiwKKyAg
ICAgICAgICAgICIgKCVzKSIgJSBjb21tZW50IGlmIGNvbW1lbnQgZWxzZSAiIiwKKyAgICAgICAg
ICAgIGJ1aWxkZXIucGFja2V0X251bWJlciwKKyAgICAgICAgKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKHNlbGYuX3F1aWNfbG9nZ2VyLmVu
Y29kZV9waW5nX2ZyYW1lKCkpCisKKyAgICBkZWYgX3dyaXRlX3JldGlyZV9jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc2VxdWVu
Y2VfbnVtYmVyOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lE
LAorICAgICAgICAgICAgY2FwYWNpdHk9UkVUSVJFX0NPTk5FQ1RJT05fSURfQ0FQQUNJVFksCisg
ICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX3JldGlyZV9jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5
LAorICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShzZXF1ZW5jZV9udW1iZXIsKSwKKyAgICAgICAg
KQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzZXF1ZW5jZV9udW1iZXIpCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1l
KHNlcXVlbmNlX251bWJlcikKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfc3RyZWFt
X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRl
ciwKKyAgICAgICAgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwKKyAgICAgICAgc3RyZWFtOiBRdWlj
U3RyZWFtLAorICAgICAgICBtYXhfb2Zmc2V0OiBpbnQsCisgICAgKSAtPiBpbnQ6CisgICAgICAg
ICMgdGhlIGZyYW1lIGRhdGEgc2l6ZSBpcyBjb25zdHJhaW5lZCBieSBvdXIgcGVlcidzIE1BWF9E
QVRBIGFuZAorICAgICAgICAjIHRoZSBzcGFjZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcGFj
a2V0CisgICAgICAgIGZyYW1lX292ZXJoZWFkID0gKAorICAgICAgICAgICAgMworICAgICAgICAg
ICAgKyBzaXplX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAgICArIChzaXpl
X3VpbnRfdmFyKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0KSBpZiBzdHJlYW0ubmV4dF9zZW5kX29m
ZnNldCBlbHNlIDApCisgICAgICAgICkKKyAgICAgICAgcHJldmlvdXNfc2VuZF9oaWdoZXN0ID0g
c3RyZWFtLl9zZW5kX2hpZ2hlc3QKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKAor
ICAgICAgICAgICAgYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlIC0gZnJhbWVfb3Zlcmhl
YWQsIG1heF9vZmZzZXQKKyAgICAgICAgKQorCisgICAgICAgIGlmIGZyYW1lIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCAy
ICAjIGxlbmd0aAorICAgICAgICAgICAgaWYgZnJhbWUub2Zmc2V0OgorICAgICAgICAgICAgICAg
IGZyYW1lX3R5cGUgfD0gNAorICAgICAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGUgfD0gMQorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFt
ZSgKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIGNhcGFjaXR5
PWZyYW1lX292ZXJoZWFkLAorICAgICAgICAgICAgICAgIGhhbmRsZXI9c3RyZWFtLm9uX2RhdGFf
ZGVsaXZlcnksCisgICAgICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShmcmFtZS5vZmZzZXQsIGZy
YW1lLm9mZnNldCArIGxlbihmcmFtZS5kYXRhKSksCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihzdHJlYW0uc3RyZWFtX2lkKQorICAgICAgICAgICAgaWYgZnJh
bWUub2Zmc2V0OgorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNl
dCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDAp
CisgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg
IHJldHVybiBzdHJlYW0uX3NlbmRfaGlnaGVzdCAtIHByZXZpb3VzX3NlbmRfaGlnaGVzdAorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfd3JpdGVfc3RyZWFt
X2xpbWl0cygKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJhaXNlIE1BWF9TVFJFQU1fREFUQSBpZiBuZWVkZWQuCisKKyAg
ICAgICAgVGhlIG9ubHkgY2FzZSB3aGVyZSBgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbGAg
aXMgemVybyBpcyBmb3IKKyAgICAgICAgbG9jYWxseSBjcmVhdGVkIHVuaWRpcmVjdGlvbmFsIHN0
cmVhbXMuIFdlIHNraXAgc3VjaCBzdHJlYW1zIHRvIGF2b2lkCisgICAgICAgIHNwdXJpb3VzIGxv
Z2dpbmcuCisgICAgICAgICIiIgorICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICAgICBhbmQgc3RyZWFtLl9yZWN2X2hpZ2hlc3Qg
KiAyID4gc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbAorICAgICAgICApOgorICAgICAgICAg
ICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCAqPSAyCisgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgIlN0cmVhbSAlZCBsb2NhbCBtYXhfc3RyZWFt
X2RhdGEgcmFpc2VkIHRvICVkIiwKKyAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX2lkLAor
ICAgICAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAg
ICApCisgICAgICAgIGlmIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCAhPSBzdHJl
YW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwK
KyAgICAgICAgICAgICAgICBjYXBhY2l0eT1NQVhfU1RSRUFNX0RBVEFfRlJBTUVfQ0FQQUNJVFks
CisgICAgICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9tYXhfc3RyZWFtX2RhdGFfZGVsaXZl
cnksCisgICAgICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShzdHJlYW0sKSwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAg
ICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsKQor
ICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ID0gc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9sb2NhbAorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnVp
bGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWF4aW11bT1zdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCBzdHJlYW1f
aWQ9c3RyZWFtLnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgKQorCisgICAgZGVmIF93cml0ZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgIHNl
bGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBmcmFtZV90eXBlOiBRdWljRnJhbWVUeXBl
LCBsaW1pdDogaW50CisgICAgKSAtPiBOb25lOgorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0
X2ZyYW1lKGZyYW1lX3R5cGUsIGNhcGFjaXR5PVNUUkVBTVNfQkxPQ0tFRF9DQVBBQ0lUWSkKKyAg
ICAgICAgYnVmLnB1c2hfdWludF92YXIobGltaXQpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWls
ZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVp
Y19sb2dnZXIuZW5jb2RlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgaXNfdW5pZGlyZWN0aW9uYWw9ZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLlNUUkVBTVNf
QkxPQ0tFRF9VTkksCisgICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9xdWljL2NyeXB0by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0
by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YWNiMzBlZWRhOGYxYzdjNjA2YjkwNGJhNzcyNzEzZDM1ODczNGIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRv
LnB5CkBAIC0wLDAgKzEsMTk2IEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdHlwaW5nIGltcG9y
dCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSAuLl9jcnlwdG8gaW1wb3J0IEFFQUQsIENyeXB0b0Vy
cm9yLCBIZWFkZXJQcm90ZWN0aW9uCitmcm9tIC4udGxzIGltcG9ydCBDaXBoZXJTdWl0ZSwgY2lw
aGVyX3N1aXRlX2hhc2gsIGhrZGZfZXhwYW5kX2xhYmVsLCBoa2RmX2V4dHJhY3QKK2Zyb20gLnBh
Y2tldCBpbXBvcnQgZGVjb2RlX3BhY2tldF9udW1iZXIsIGlzX2xvbmdfaGVhZGVyCisKK0NJUEhF
Ul9TVUlURVMgPSB7CisgICAgQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiAoYiJhZXMt
MTI4LWVjYiIsIGIiYWVzLTEyOC1nY20iKSwKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9T
SEEzODQ6IChiImFlcy0yNTYtZWNiIiwgYiJhZXMtMjU2LWdjbSIpLAorICAgIENpcGhlclN1aXRl
LkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NjogKGIiY2hhY2hhMjAiLCBiImNoYWNoYTIwLXBvbHkx
MzA1IiksCit9CitJTklUSUFMX0NJUEhFUl9TVUlURSA9IENpcGhlclN1aXRlLkFFU18xMjhfR0NN
X1NIQTI1NgorSU5JVElBTF9TQUxUID0gYmluYXNjaWkudW5oZXhsaWZ5KCJjM2VlZjcxMmM3MmVi
YjVhMTFhN2QyNDMyYmI0NjM2NWJlZjlmNTAyIikKK1NBTVBMRV9TSVpFID0gMTYKKworCitjbGFz
cyBLZXlVbmF2YWlsYWJsZUVycm9yKENyeXB0b0Vycm9yKToKKyAgICBwYXNzCisKKworZGVmIGRl
cml2ZV9rZXlfaXZfaHAoCisgICAgY2lwaGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBi
eXRlcworKSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGJ5dGVzXToKKyAgICBhbGdvcml0aG0gPSBj
aXBoZXJfc3VpdGVfaGFzaChjaXBoZXJfc3VpdGUpCisgICAgaWYgY2lwaGVyX3N1aXRlIGluIFsK
KyAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICBDaXBoZXJT
dWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgXToKKyAgICAgICAga2V5X3NpemUg
PSAzMgorICAgIGVsc2U6CisgICAgICAgIGtleV9zaXplID0gMTYKKyAgICByZXR1cm4gKAorICAg
ICAgICBoa2RmX2V4cGFuZF9sYWJlbChhbGdvcml0aG0sIHNlY3JldCwgYiJxdWljIGtleSIsIGIi
Iiwga2V5X3NpemUpLAorICAgICAgICBoa2RmX2V4cGFuZF9sYWJlbChhbGdvcml0aG0sIHNlY3Jl
dCwgYiJxdWljIGl2IiwgYiIiLCAxMiksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29y
aXRobSwgc2VjcmV0LCBiInF1aWMgaHAiLCBiIiIsIGtleV9zaXplKSwKKyAgICApCisKKworY2xh
c3MgQ3J5cHRvQ29udGV4dDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwga2V5X3BoYXNlOiBpbnQg
PSAwKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFlYWQ6IE9wdGlvbmFsW0FFQURdID0gTm9uZQor
ICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZTogT3B0aW9uYWxbQ2lwaGVyU3VpdGVdID0gTm9uZQor
ICAgICAgICBzZWxmLmhwOiBPcHRpb25hbFtIZWFkZXJQcm90ZWN0aW9uXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5rZXlfcGhhc2UgPSBrZXlfcGhhc2UKKyAgICAgICAgc2VsZi5zZWNyZXQ6IE9wdGlv
bmFsW2J5dGVzXSA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJzaW9uOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorCisgICAgZGVmIGRlY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwYWNrZXQ6IGJ5
dGVzLCBlbmNyeXB0ZWRfb2Zmc2V0OiBpbnQsIGV4cGVjdGVkX3BhY2tldF9udW1iZXI6IGludAor
ICAgICkgLT4gVHVwbGVbYnl0ZXMsIGJ5dGVzLCBpbnQsIGJvb2xdOgorICAgICAgICBpZiBzZWxm
LmFlYWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEtleVVuYXZhaWxhYmxlRXJyb3IoIkRl
Y3J5cHRpb24ga2V5IGlzIG5vdCBhdmFpbGFibGUiKQorCisgICAgICAgICMgaGVhZGVyIHByb3Rl
Y3Rpb24KKyAgICAgICAgcGxhaW5faGVhZGVyLCBwYWNrZXRfbnVtYmVyID0gc2VsZi5ocC5yZW1v
dmUocGFja2V0LCBlbmNyeXB0ZWRfb2Zmc2V0KQorICAgICAgICBmaXJzdF9ieXRlID0gcGxhaW5f
aGVhZGVyWzBdCisKKyAgICAgICAgIyBwYWNrZXQgbnVtYmVyCisgICAgICAgIHBuX2xlbmd0aCA9
IChmaXJzdF9ieXRlICYgMHgwMykgKyAxCisgICAgICAgIHBhY2tldF9udW1iZXIgPSBkZWNvZGVf
cGFja2V0X251bWJlcigKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXIsIHBuX2xlbmd0aCAqIDgs
IGV4cGVjdGVkX3BhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgICMgZGV0ZWN0IGtl
eSBwaGFzZSBjaGFuZ2UKKyAgICAgICAgY3J5cHRvID0gc2VsZgorICAgICAgICBpZiBub3QgaXNf
bG9uZ19oZWFkZXIoZmlyc3RfYnl0ZSk6CisgICAgICAgICAgICBrZXlfcGhhc2UgPSAoZmlyc3Rf
Ynl0ZSAmIDQpID4+IDIKKyAgICAgICAgICAgIGlmIGtleV9waGFzZSAhPSBzZWxmLmtleV9waGFz
ZToKKyAgICAgICAgICAgICAgICBjcnlwdG8gPSBuZXh0X2tleV9waGFzZShzZWxmKQorCisgICAg
ICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHBheWxvYWQgPSBjcnlwdG8uYWVhZC5k
ZWNyeXB0KAorICAgICAgICAgICAgcGFja2V0W2xlbihwbGFpbl9oZWFkZXIpIDpdLCBwbGFpbl9o
ZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIHJldHVybiBwbGFpbl9o
ZWFkZXIsIHBheWxvYWQsIHBhY2tldF9udW1iZXIsIGNyeXB0byAhPSBzZWxmCisKKyAgICBkZWYg
ZW5jcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHBsYWlu
X3BheWxvYWQ6IGJ5dGVzLCBwYWNrZXRfbnVtYmVyOiBpbnQKKyAgICApIC0+IGJ5dGVzOgorICAg
ICAgICBhc3NlcnQgc2VsZi5pc192YWxpZCgpLCAiRW5jcnlwdGlvbiBrZXkgaXMgbm90IGF2YWls
YWJsZSIKKworICAgICAgICAjIHBheWxvYWQgcHJvdGVjdGlvbgorICAgICAgICBwcm90ZWN0ZWRf
cGF5bG9hZCA9IHNlbGYuYWVhZC5lbmNyeXB0KAorICAgICAgICAgICAgcGxhaW5fcGF5bG9hZCwg
cGxhaW5faGVhZGVyLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICkKKworICAgICAgICAjIGhlYWRl
ciBwcm90ZWN0aW9uCisgICAgICAgIHJldHVybiBzZWxmLmhwLmFwcGx5KHBsYWluX2hlYWRlciwg
cHJvdGVjdGVkX3BheWxvYWQpCisKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIHNlbGYuYWVhZCBpcyBub3QgTm9uZQorCisgICAgZGVmIHNldHVwKHNlbGYs
IGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUsIHNlY3JldDogYnl0ZXMsIHZlcnNpb246IGludCkg
LT4gTm9uZToKKyAgICAgICAgaHBfY2lwaGVyX25hbWUsIGFlYWRfY2lwaGVyX25hbWUgPSBDSVBI
RVJfU1VJVEVTW2NpcGhlcl9zdWl0ZV0KKworICAgICAgICBrZXksIGl2LCBocCA9IGRlcml2ZV9r
ZXlfaXZfaHAoY2lwaGVyX3N1aXRlLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYWVhZCA9IEFFQUQo
YWVhZF9jaXBoZXJfbmFtZSwga2V5LCBpdikKKyAgICAgICAgc2VsZi5jaXBoZXJfc3VpdGUgPSBj
aXBoZXJfc3VpdGUKKyAgICAgICAgc2VsZi5ocCA9IEhlYWRlclByb3RlY3Rpb24oaHBfY2lwaGVy
X25hbWUsIGhwKQorICAgICAgICBzZWxmLnNlY3JldCA9IHNlY3JldAorICAgICAgICBzZWxmLnZl
cnNpb24gPSB2ZXJzaW9uCisKKyAgICBkZWYgdGVhcmRvd24oc2VsZikgLT4gTm9uZToKKyAgICAg
ICAgc2VsZi5hZWFkID0gTm9uZQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IE5vbmUKKyAg
ICAgICAgc2VsZi5ocCA9IE5vbmUKKyAgICAgICAgc2VsZi5zZWNyZXQgPSBOb25lCisKKworZGVm
IGFwcGx5X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0LCBjcnlwdG86IENyeXB0b0NvbnRl
eHQpIC0+IE5vbmU6CisgICAgc2VsZi5hZWFkID0gY3J5cHRvLmFlYWQKKyAgICBzZWxmLmtleV9w
aGFzZSA9IGNyeXB0by5rZXlfcGhhc2UKKyAgICBzZWxmLnNlY3JldCA9IGNyeXB0by5zZWNyZXQK
KworCitkZWYgbmV4dF9rZXlfcGhhc2Uoc2VsZjogQ3J5cHRvQ29udGV4dCkgLT4gQ3J5cHRvQ29u
dGV4dDoKKyAgICBhbGdvcml0aG0gPSBjaXBoZXJfc3VpdGVfaGFzaChzZWxmLmNpcGhlcl9zdWl0
ZSkKKworICAgIGNyeXB0byA9IENyeXB0b0NvbnRleHQoa2V5X3BoYXNlPWludChub3Qgc2VsZi5r
ZXlfcGhhc2UpKQorICAgIGNyeXB0by5zZXR1cCgKKyAgICAgICAgY2lwaGVyX3N1aXRlPXNlbGYu
Y2lwaGVyX3N1aXRlLAorICAgICAgICBzZWNyZXQ9aGtkZl9leHBhbmRfbGFiZWwoCisgICAgICAg
ICAgICBhbGdvcml0aG0sIHNlbGYuc2VjcmV0LCBiInF1aWMga3UiLCBiIiIsIGFsZ29yaXRobS5k
aWdlc3Rfc2l6ZQorICAgICAgICApLAorICAgICAgICB2ZXJzaW9uPXNlbGYudmVyc2lvbiwKKyAg
ICApCisgICAgcmV0dXJuIGNyeXB0bworCisKK2NsYXNzIENyeXB0b1BhaXI6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZF90YWdfc2l6ZSA9IDE2Cisg
ICAgICAgIHNlbGYucmVjdiA9IENyeXB0b0NvbnRleHQoKQorICAgICAgICBzZWxmLnNlbmQgPSBD
cnlwdG9Db250ZXh0KCkKKyAgICAgICAgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQgPSBGYWxz
ZQorCisgICAgZGVmIGRlY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwYWNrZXQ6IGJ5dGVz
LCBlbmNyeXB0ZWRfb2Zmc2V0OiBpbnQsIGV4cGVjdGVkX3BhY2tldF9udW1iZXI6IGludAorICAg
ICkgLT4gVHVwbGVbYnl0ZXMsIGJ5dGVzLCBpbnRdOgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBh
eWxvYWQsIHBhY2tldF9udW1iZXIsIHVwZGF0ZV9rZXkgPSBzZWxmLnJlY3YuZGVjcnlwdF9wYWNr
ZXQoCisgICAgICAgICAgICBwYWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQsIGV4cGVjdGVkX3BhY2tl
dF9udW1iZXIKKyAgICAgICAgKQorICAgICAgICBpZiB1cGRhdGVfa2V5OgorICAgICAgICAgICAg
c2VsZi5fdXBkYXRlX2tleSgpCisgICAgICAgIHJldHVybiBwbGFpbl9oZWFkZXIsIHBheWxvYWQs
IHBhY2tldF9udW1iZXIKKworICAgIGRlZiBlbmNyeXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwg
cGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6
IGludAorICAgICkgLT4gYnl0ZXM6CisgICAgICAgIGlmIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVz
dGVkOgorICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2tleSgpCisgICAgICAgIHJldHVybiBzZWxm
LnNlbmQuZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRf
bnVtYmVyKQorCisgICAgZGVmIHNldHVwX2luaXRpYWwoc2VsZiwgY2lkOiBieXRlcywgaXNfY2xp
ZW50OiBib29sLCB2ZXJzaW9uOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzX2NsaWVudDoK
KyAgICAgICAgICAgIHJlY3ZfbGFiZWwsIHNlbmRfbGFiZWwgPSBiInNlcnZlciBpbiIsIGIiY2xp
ZW50IGluIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJl
bCA9IGIiY2xpZW50IGluIiwgYiJzZXJ2ZXIgaW4iCisKKyAgICAgICAgYWxnb3JpdGhtID0gY2lw
aGVyX3N1aXRlX2hhc2goSU5JVElBTF9DSVBIRVJfU1VJVEUpCisgICAgICAgIGluaXRpYWxfc2Vj
cmV0ID0gaGtkZl9leHRyYWN0KGFsZ29yaXRobSwgSU5JVElBTF9TQUxULCBjaWQpCisgICAgICAg
IHNlbGYucmVjdi5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1JTklUSUFMX0NJUEhF
Ul9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAg
ICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCByZWN2X2xhYmVsLCBiIiIsIGFsZ29y
aXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249dmVy
c2lvbiwKKyAgICAgICAgKQorICAgICAgICBzZWxmLnNlbmQuc2V0dXAoCisgICAgICAgICAgICBj
aXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9aGtk
Zl9leHBhbmRfbGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtLCBpbml0aWFsX3NlY3Jl
dCwgc2VuZF9sYWJlbCwgYiIiLCBhbGdvcml0aG0uZGlnZXN0X3NpemUKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sCisgICAgICAgICkKKworICAgIGRlZiB0ZWFy
ZG93bihzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLnJlY3YudGVhcmRvd24oKQorICAgICAg
ICBzZWxmLnNlbmQudGVhcmRvd24oKQorCisgICAgZGVmIHVwZGF0ZV9rZXkoc2VsZikgLT4gTm9u
ZToKKyAgICAgICAgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQgPSBUcnVlCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYga2V5X3BoYXNlKHNlbGYpIC0+IGludDoKKyAgICAgICAgaWYgc2VsZi5f
dXBkYXRlX2tleV9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gaW50KG5vdCBzZWxmLnJl
Y3Yua2V5X3BoYXNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVj
di5rZXlfcGhhc2UKKworICAgIGRlZiBfdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgorICAgICAg
ICBhcHBseV9rZXlfcGhhc2Uoc2VsZi5yZWN2LCBuZXh0X2tleV9waGFzZShzZWxmLnJlY3YpKQor
ICAgICAgICBhcHBseV9rZXlfcGhhc2Uoc2VsZi5zZW5kLCBuZXh0X2tleV9waGFzZShzZWxmLnNl
bmQpKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9ldmVudHMucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9ldmVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzMDY5MzkzNmMxODgx
NmFlMTE4MzI2ZDJhMjI1MTI5NTI0NWUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpAQCAtMCwwICsxLDExMiBAQAorZnJvbSBkYXRh
Y2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKwor
CitjbGFzcyBRdWljRXZlbnQ6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgUVVJQyBldmVu
dHMuCisgICAgIiIiCisKKyAgICBwYXNzCisKKworQGRhdGFjbGFzcworY2xhc3MgQ29ubmVjdGlv
bklkSXNzdWVkKFF1aWNFdmVudCk6CisgICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKKworCitAZGF0
YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uSWRSZXRpcmVkKFF1aWNFdmVudCk6CisgICAgY29ubmVj
dGlvbl9pZDogYnl0ZXMKKworCitAZGF0YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uVGVybWluYXRl
ZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBDb25uZWN0aW9uVGVybWluYXRlZCBldmVu
dCBpcyBmaXJlZCB3aGVuIHRoZSBRVUlDIGNvbm5lY3Rpb24gaXMgdGVybWluYXRlZC4KKyAgICAi
IiIKKworICAgIGVycm9yX2NvZGU6IGludAorICAgICJUaGUgZXJyb3IgY29kZSB3aGljaCB3YXMg
c3BlY2lmaWVkIHdoZW4gY2xvc2luZyB0aGUgY29ubmVjdGlvbi4iCisKKyAgICBmcmFtZV90eXBl
OiBPcHRpb25hbFtpbnRdCisgICAgIlRoZSBmcmFtZSB0eXBlIHdoaWNoIGNhdXNlZCB0aGUgY29u
bmVjdGlvbiB0byBiZSBjbG9zZWQsIG9yIGBOb25lYC4iCisKKyAgICByZWFzb25fcGhyYXNlOiBz
dHIKKyAgICAiVGhlIGh1bWFuLXJlYWRhYmxlIHJlYXNvbiBmb3Igd2hpY2ggdGhlIGNvbm5lY3Rp
b24gd2FzIGNsb3NlZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgRGF0YWdyYW1GcmFtZVJlY2Vp
dmVkKFF1aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIERhdGFncmFtRnJhbWVSZWNlaXZlZCBl
dmVudCBpcyBmaXJlZCB3aGVuIGEgREFUQUdSQU0gZnJhbWUgaXMgcmVjZWl2ZWQuCisgICAgIiIi
CisKKyAgICBkYXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgor
CisKK0BkYXRhY2xhc3MKK2NsYXNzIEhhbmRzaGFrZUNvbXBsZXRlZChRdWljRXZlbnQpOgorICAg
ICIiIgorICAgIFRoZSBIYW5kc2hha2VDb21wbGV0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUg
VExTIGhhbmRzaGFrZSBjb21wbGV0ZXMuCisgICAgIiIiCisKKyAgICBhbHBuX3Byb3RvY29sOiBP
cHRpb25hbFtzdHJdCisgICAgIlRoZSBwcm90b2NvbCB3aGljaCB3YXMgbmVnb3RpYXRlZCB1c2lu
ZyBBTFBOLCBvciBgTm9uZWAuIgorCisgICAgZWFybHlfZGF0YV9hY2NlcHRlZDogYm9vbAorICAg
ICJXaGV0aGVyIGVhcmx5ICgwLVJUVCkgZGF0YSB3YXMgYWNjZXB0ZWQgYnkgdGhlIHJlbW90ZSBw
ZWVyLiIKKworICAgIHNlc3Npb25fcmVzdW1lZDogYm9vbAorICAgICJXaGV0aGVyIGEgVExTIHNl
c3Npb24gd2FzIHJlc3VtZWQuIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFBpbmdBY2tub3dsZWRn
ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgUGluZ0Fja25vd2xlZGdlZCBldmVudCBp
cyBmaXJlZCB3aGVuIGEgUElORyBmcmFtZSBpcyBhY2tub3dsZWRnZWQuCisgICAgIiIiCisKKyAg
ICB1aWQ6IGludAorICAgICJUaGUgdW5pcXVlIElEIG9mIHRoZSBQSU5HLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBQcm90b2NvbE5lZ290aWF0ZWQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBU
aGUgUHJvdG9jb2xOZWdvdGlhdGVkIGV2ZW50IGlzIGZpcmVkIHdoZW4gQUxQTiBuZWdvdGlhdGlv
biBjb21wbGV0ZXMuCisgICAgIiIiCisKKyAgICBhbHBuX3Byb3RvY29sOiBPcHRpb25hbFtzdHJd
CisgICAgIlRoZSBwcm90b2NvbCB3aGljaCB3YXMgbmVnb3RpYXRlZCB1c2luZyBBTFBOLCBvciBg
Tm9uZWAuIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFN0cmVhbURhdGFSZWNlaXZlZChRdWljRXZl
bnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1EYXRhUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQg
d2hlbmV2ZXIgZGF0YSBpcyByZWNlaXZlZCBvbiBhCisgICAgc3RyZWFtLgorICAgICIiIgorCisg
ICAgZGF0YTogYnl0ZXMKKyAgICAiVGhlIGRhdGEgd2hpY2ggd2FzIHJlY2VpdmVkLiIKKworICAg
IGVuZF9zdHJlYW06IGJvb2wKKyAgICAiV2hldGhlciB0aGUgU1RSRUFNIGZyYW1lIGhhZCB0aGUg
RklOIGJpdCBzZXQuIgorCisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBz
dHJlYW0gdGhlIGRhdGEgd2FzIHJlY2VpdmVkIGZvci4iCisKKworQGRhdGFjbGFzcworY2xhc3Mg
U3RyZWFtUmVzZXQoUXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgU3RyZWFtUmVzZXQgZXZl
bnQgaXMgZmlyZWQgd2hlbiB0aGUgcmVtb3RlIHBlZXIgcmVzZXRzIGEgc3RyZWFtLgorICAgICIi
IgorCisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHRoYXQgdHJpZ2dl
cmVkIHRoZSByZXNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQgb2YgdGhl
IHN0cmVhbSB0aGF0IHdhcyByZXNldC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dn
ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzQ5NzViZDU5MmUxYzA4NzgyNWNkOTVjNjAzYzY5MDZhNzQzZGI4
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dl
ci5weQpAQCAtMCwwICsxLDI2NiBAQAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgdGltZQorZnJv
bSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gdHlwaW5nIGltcG9ydCBBbnksIERlcXVl
LCBEaWN0LCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSAucGFja2V0IGltcG9ydCAoCisg
ICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfTUFTSywKKyAgICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFBBQ0tFVF9U
WVBFX1JFVFJZLAorICAgIFBBQ0tFVF9UWVBFX1pFUk9fUlRULAorICAgIFF1aWNTdHJlYW1GcmFt
ZSwKKyAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycywKKykKK2Zyb20gLnJhbmdlc2V0IGltcG9y
dCBSYW5nZVNldAorCitQQUNLRVRfVFlQRV9OQU1FUyA9IHsKKyAgICBQQUNLRVRfVFlQRV9JTklU
SUFMOiAiaW5pdGlhbCIsCisgICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFOiAiaGFuZHNoYWtlIiwK
KyAgICBQQUNLRVRfVFlQRV9aRVJPX1JUVDogIjBSVFQiLAorICAgIFBBQ0tFVF9UWVBFX09ORV9S
VFQ6ICIxUlRUIiwKKyAgICBQQUNLRVRfVFlQRV9SRVRSWTogInJldHJ5IiwKK30KKworCitkZWYg
aGV4ZHVtcChkYXRhOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVybiBiaW5hc2NpaS5oZXhsaWZ5
KGRhdGEpLmRlY29kZSgiYXNjaWkiKQorCisKK2NsYXNzIFF1aWNMb2dnZXJUcmFjZToKKyAgICAi
IiIKKyAgICBBIFFVSUMgZXZlbnQgdHJhY2UuCisKKyAgICBFdmVudHMgYXJlIGxvZ2dlZCBpbiB0
aGUgZm9ybWF0IGRlZmluZWQgYnkgcWxvZyBkcmFmdC0wMS4KKworICAgIFNlZTogaHR0cHM6Ly9x
dWljbG9nLmdpdGh1Yi5pby9pbnRlcm5ldC1kcmFmdHMvZHJhZnQtbWFyeC1xbG9nLWV2ZW50LWRl
ZmluaXRpb25zLXF1aWMtaDMuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
ICosIGlzX2NsaWVudDogYm9vbCwgb2RjaWQ6IGJ5dGVzKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9vZGNpZCA9IG9kY2lkCisgICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbVHVwbGVbZmxvYXQs
IHN0ciwgc3RyLCBEaWN0W3N0ciwgQW55XV1dID0gZGVxdWUoKQorICAgICAgICBzZWxmLl92YW50
YWdlX3BvaW50ID0geworICAgICAgICAgICAgIm5hbWUiOiAiYWlvcXVpYyIsCisgICAgICAgICAg
ICAidHlwZSI6ICJjbGllbnQiIGlmIGlzX2NsaWVudCBlbHNlICJzZXJ2ZXIiLAorICAgICAgICB9
CisKKyAgICBkZWYgZW5jb2RlX2Fja19mcmFtZShzZWxmLCByYW5nZXM6IFJhbmdlU2V0LCBkZWxh
eTogZmxvYXQpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiYWNrX2Rl
bGF5Ijogc3RyKHNlbGYuZW5jb2RlX3RpbWUoZGVsYXkpKSwKKyAgICAgICAgICAgICJhY2tlZF9y
YW5nZXMiOiBbW3N0cih4LnN0YXJ0KSwgc3RyKHguc3RvcCAtIDEpXSBmb3IgeCBpbiByYW5nZXNd
LAorICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAiYWNrIiwKKyAgICAgICAgfQorCisgICAgZGVm
IGVuY29kZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICBzZWxmLCBlcnJvcl9jb2Rl
OiBpbnQsIGZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0sIHJlYXNvbl9waHJhc2U6IHN0cgorICAg
ICkgLT4gRGljdDoKKyAgICAgICAgYXR0cnMgPSB7CisgICAgICAgICAgICAiZXJyb3JfY29kZSI6
IGVycm9yX2NvZGUsCisgICAgICAgICAgICAiZXJyb3Jfc3BhY2UiOiAiYXBwbGljYXRpb24iIGlm
IGZyYW1lX3R5cGUgaXMgTm9uZSBlbHNlICJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgImZyYW1l
X3R5cGUiOiAiY29ubmVjdGlvbl9jbG9zZSIsCisgICAgICAgICAgICAicmF3X2Vycm9yX2NvZGUi
OiBlcnJvcl9jb2RlLAorICAgICAgICAgICAgInJlYXNvbiI6IHJlYXNvbl9waHJhc2UsCisgICAg
ICAgIH0KKyAgICAgICAgaWYgZnJhbWVfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGF0
dHJzWyJ0cmlnZ2VyX2ZyYW1lX3R5cGUiXSA9IGZyYW1lX3R5cGUKKworICAgICAgICByZXR1cm4g
YXR0cnMKKworICAgIGRlZiBlbmNvZGVfY3J5cHRvX2ZyYW1lKHNlbGYsIGZyYW1lOiBRdWljU3Ry
ZWFtRnJhbWUpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZnJhbWVf
dHlwZSI6ICJjcnlwdG8iLAorICAgICAgICAgICAgImxlbmd0aCI6IGxlbihmcmFtZS5kYXRhKSwK
KyAgICAgICAgICAgICJvZmZzZXQiOiBzdHIoZnJhbWUub2Zmc2V0KSwKKyAgICAgICAgfQorCisg
ICAgZGVmIGVuY29kZV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZiwgbGltaXQ6IGludCkgLT4gRGlj
dDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJkYXRhX2Jsb2NrZWQiLCAibGltaXQi
OiBzdHIobGltaXQpfQorCisgICAgZGVmIGVuY29kZV9kYXRhZ3JhbV9mcmFtZShzZWxmLCBsZW5n
dGg6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJkYXRhZ3Jh
bSIsICJsZW5ndGgiOiBsZW5ndGh9CisKKyAgICBkZWYgZW5jb2RlX2hhbmRzaGFrZV9kb25lX2Zy
YW1lKHNlbGYpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUiOiAiaGFuZHNo
YWtlX2RvbmUifQorCisgICAgZGVmIGVuY29kZV9tYXhfZGF0YV9mcmFtZShzZWxmLCBtYXhpbXVt
OiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUiOiAibWF4X2RhdGEi
LCAibWF4aW11bSI6IHN0cihtYXhpbXVtKX0KKworICAgIGRlZiBlbmNvZGVfbWF4X3N0cmVhbV9k
YXRhX2ZyYW1lKHNlbGYsIG1heGltdW06IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJtYXhfc3RyZWFtX2Rh
dGEiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4aW11bSksCisgICAgICAgICAgICAi
c3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVf
bWF4X3N0cmVhbXNfZnJhbWUoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wsIG1heGltdW06
IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBl
IjogIm1heF9zdHJlYW1zIiwKKyAgICAgICAgICAgICJtYXhpbXVtIjogc3RyKG1heGltdW0pLAor
ICAgICAgICAgICAgInN0cmVhbV90eXBlIjogInVuaWRpcmVjdGlvbmFsIiBpZiBpc191bmlkaXJl
Y3Rpb25hbCBlbHNlICJiaWRpcmVjdGlvbmFsIiwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29k
ZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgY29ubmVj
dGlvbl9pZDogYnl0ZXMsCisgICAgICAgIHJldGlyZV9wcmlvcl90bzogaW50LAorICAgICAgICBz
ZXF1ZW5jZV9udW1iZXI6IGludCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuOiBieXRl
cywKKyAgICApIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiY29ubmVj
dGlvbl9pZCI6IGhleGR1bXAoY29ubmVjdGlvbl9pZCksCisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJuZXdfY29ubmVjdGlvbl9pZCIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGNvbm5l
Y3Rpb25faWQpLAorICAgICAgICAgICAgInJlc2V0X3Rva2VuIjogaGV4ZHVtcChzdGF0ZWxlc3Nf
cmVzZXRfdG9rZW4pLAorICAgICAgICAgICAgInJldGlyZV9wcmlvcl90byI6IHN0cihyZXRpcmVf
cHJpb3JfdG8pLAorICAgICAgICAgICAgInNlcXVlbmNlX251bWJlciI6IHN0cihzZXF1ZW5jZV9u
dW1iZXIpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX25ld190b2tlbl9mcmFtZShzZWxm
LCB0b2tlbjogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAi
ZnJhbWVfdHlwZSI6ICJuZXdfdG9rZW4iLAorICAgICAgICAgICAgImxlbmd0aCI6IGxlbih0b2tl
biksCisgICAgICAgICAgICAidG9rZW4iOiBoZXhkdW1wKHRva2VuKSwKKyAgICAgICAgfQorCisg
ICAgZGVmIGVuY29kZV9wYWRkaW5nX2ZyYW1lKHNlbGYpIC0+IERpY3Q6CisgICAgICAgIHJldHVy
biB7ImZyYW1lX3R5cGUiOiAicGFkZGluZyJ9CisKKyAgICBkZWYgZW5jb2RlX3BhdGhfY2hhbGxl
bmdlX2ZyYW1lKHNlbGYsIGRhdGE6IGJ5dGVzKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJk
YXRhIjogaGV4ZHVtcChkYXRhKSwgImZyYW1lX3R5cGUiOiAicGF0aF9jaGFsbGVuZ2UifQorCisg
ICAgZGVmIGVuY29kZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKHNlbGYsIGRhdGE6IGJ5dGVzKSAtPiBE
aWN0OgorICAgICAgICByZXR1cm4geyJkYXRhIjogaGV4ZHVtcChkYXRhKSwgImZyYW1lX3R5cGUi
OiAicGF0aF9yZXNwb25zZSJ9CisKKyAgICBkZWYgZW5jb2RlX3BpbmdfZnJhbWUoc2VsZikgLT4g
RGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJwaW5nIn0KKworICAgIGRlZiBl
bmNvZGVfcmVzZXRfc3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBlcnJvcl9jb2RlOiBpbnQs
IGZpbmFsX3NpemU6IGludCwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+IERpY3Q6CisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAiZXJyb3JfY29kZSI6IGVycm9yX2NvZGUsCisgICAgICAg
ICAgICAiZmluYWxfc2l6ZSI6IHN0cihmaW5hbF9zaXplKSwKKyAgICAgICAgICAgICJmcmFtZV90
eXBlIjogInJlc2V0X3N0cmVhbSIsCisgICAgICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVh
bV9pZCksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRf
ZnJhbWUoc2VsZiwgc2VxdWVuY2VfbnVtYmVyOiBpbnQpIC0+IERpY3Q6CisgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJyZXRpcmVfY29ubmVjdGlvbl9pZCIsCisg
ICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNlcXVlbmNlX251bWJlciksCisgICAg
ICAgIH0KKworICAgIGRlZiBlbmNvZGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBs
aW1pdDogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgICJmcmFtZV90eXBlIjogInN0cmVhbV9kYXRhX2Jsb2NrZWQiLAorICAgICAgICAg
ICAgImxpbWl0Ijogc3RyKGxpbWl0KSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3Ry
ZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdG9wX3NlbmRpbmdfZnJhbWUo
c2VsZiwgZXJyb3JfY29kZTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInN0b3Bfc2VuZGluZyIsCisgICAg
ICAgICAgICAiZXJyb3JfY29kZSI6IGVycm9yX2NvZGUsCisgICAgICAgICAgICAic3RyZWFtX2lk
Ijogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfc3RyZWFtX2Zy
YW1lKHNlbGYsIGZyYW1lOiBRdWljU3RyZWFtRnJhbWUsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0
OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZpbiI6IGZyYW1lLmZpbiwKKyAgICAg
ICAgICAgICJmcmFtZV90eXBlIjogInN0cmVhbSIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVu
KGZyYW1lLmRhdGEpLAorICAgICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAor
ICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgICAgICB9CisKKyAg
ICBkZWYgZW5jb2RlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25h
bDogYm9vbCwgbGltaXQ6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICJmcmFtZV90eXBlIjogInN0cmVhbXNfYmxvY2tlZCIsCisgICAgICAgICAgICAibGltaXQi
OiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV90eXBlIjogInVuaWRpcmVjdGlvbmFs
IiBpZiBpc191bmlkaXJlY3Rpb25hbCBlbHNlICJiaWRpcmVjdGlvbmFsIiwKKyAgICAgICAgfQor
CisgICAgZGVmIGVuY29kZV90aW1lKHNlbGYsIHNlY29uZHM6IGZsb2F0KSAtPiBpbnQ6CisgICAg
ICAgICIiIgorICAgICAgICBDb252ZXJ0IGEgdGltZSB0byBpbnRlZ2VyIG1pY3Jvc2Vjb25kcy4K
KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBpbnQoc2Vjb25kcyAqIDEwMDAwMDApCisKKyAg
ICBkZWYgZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICBzZWxmLCBvd25lcjog
c3RyLCBwYXJhbWV0ZXJzOiBRdWljVHJhbnNwb3J0UGFyYW1ldGVycworICAgICkgLT4gRGljdFtz
dHIsIEFueV06CisgICAgICAgIGRhdGE6IERpY3Rbc3RyLCBBbnldID0geyJvd25lciI6IG93bmVy
fQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gcGFyYW1ldGVycy5fX2Rp
Y3RfXy5pdGVtcygpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYm9v
bCk6CisgICAgICAgICAgICAgICAgZGF0YVtwYXJhbV9uYW1lXSA9IHBhcmFtX3ZhbHVlCisgICAg
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGFyYW1fdmFsdWUsIGJ5dGVzKToKKyAgICAgICAgICAg
ICAgICBkYXRhW3BhcmFtX25hbWVdID0gaGV4ZHVtcChwYXJhbV92YWx1ZSkKKyAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgaW50KToKKyAgICAgICAgICAgICAgICBkYXRh
W3BhcmFtX25hbWVdID0gcGFyYW1fdmFsdWUKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRl
ZiBsb2dfZXZlbnQoc2VsZiwgKiwgY2F0ZWdvcnk6IHN0ciwgZXZlbnQ6IHN0ciwgZGF0YTogRGlj
dCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgodGltZS50aW1lKCksIGNh
dGVnb3J5LCBldmVudCwgZGF0YSkpCisKKyAgICBkZWYgcGFja2V0X3R5cGUoc2VsZiwgcGFja2V0
X3R5cGU6IGludCkgLT4gc3RyOgorICAgICAgICByZXR1cm4gUEFDS0VUX1RZUEVfTkFNRVMuZ2V0
KHBhY2tldF90eXBlICYgUEFDS0VUX1RZUEVfTUFTSywgIjFSVFQiKQorCisgICAgZGVmIHRvX2Rp
Y3Qoc2VsZikgLT4gRGljdFtzdHIsIEFueV06CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4g
dGhlIHRyYWNlIGFzIGEgZGljdGlvbmFyeSB3aGljaCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fZXZlbnRzOgorICAgICAgICAgICAgcmVmZXJl
bmNlX3RpbWUgPSBzZWxmLl9ldmVudHNbMF1bMF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJlZmVyZW5jZV90aW1lID0gMC4wCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiY29u
ZmlndXJhdGlvbiI6IHsidGltZV91bml0cyI6ICJ1cyJ9LAorICAgICAgICAgICAgImNvbW1vbl9m
aWVsZHMiOiB7CisgICAgICAgICAgICAgICAgIk9EQ0lEIjogaGV4ZHVtcChzZWxmLl9vZGNpZCks
CisgICAgICAgICAgICAgICAgInJlZmVyZW5jZV90aW1lIjogc3RyKHNlbGYuZW5jb2RlX3RpbWUo
cmVmZXJlbmNlX3RpbWUpKSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZXZlbnRfZmll
bGRzIjogWyJyZWxhdGl2ZV90aW1lIiwgImNhdGVnb3J5IiwgImV2ZW50X3R5cGUiLCAiZGF0YSJd
LAorICAgICAgICAgICAgImV2ZW50cyI6IGxpc3QoCisgICAgICAgICAgICAgICAgbWFwKAorICAg
ICAgICAgICAgICAgICAgICBsYW1iZGEgZXZlbnQ6ICgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0cihzZWxmLmVuY29kZV90aW1lKGV2ZW50WzBdIC0gcmVmZXJlbmNlX3RpbWUpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnRbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFszXSwKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzLAorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAidmFudGFnZV9wb2ludCI6IHNlbGYu
X3ZhbnRhZ2VfcG9pbnQsCisgICAgICAgIH0KKworCitjbGFzcyBRdWljTG9nZ2VyOgorICAgICIi
IgorICAgIEEgUVVJQyBldmVudCBsb2dnZXIuCisKKyAgICBTZXJ2ZXMgYXMgYSBjb250YWluZXIg
Zm9yIHRyYWNlcyBpbiB0aGUgZm9ybWF0IGRlZmluZWQgYnkgcWxvZyBkcmFmdC0wMS4KKworICAg
IFNlZTogaHR0cHM6Ly9xdWljbG9nLmdpdGh1Yi5pby9pbnRlcm5ldC1kcmFmdHMvZHJhZnQtbWFy
eC1xbG9nLW1haW4tc2NoZW1hLmh0bWwKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl90cmFjZXM6IExpc3RbUXVpY0xvZ2dlclRyYWNlXSA9
IFtdCisKKyAgICBkZWYgc3RhcnRfdHJhY2Uoc2VsZiwgaXNfY2xpZW50OiBib29sLCBvZGNpZDog
Ynl0ZXMpIC0+IFF1aWNMb2dnZXJUcmFjZToKKyAgICAgICAgdHJhY2UgPSBRdWljTG9nZ2VyVHJh
Y2UoaXNfY2xpZW50PWlzX2NsaWVudCwgb2RjaWQ9b2RjaWQpCisgICAgICAgIHNlbGYuX3RyYWNl
cy5hcHBlbmQodHJhY2UpCisgICAgICAgIHJldHVybiB0cmFjZQorCisgICAgZGVmIGVuZF90cmFj
ZShzZWxmLCB0cmFjZTogUXVpY0xvZ2dlclRyYWNlKSAtPiBOb25lOgorICAgICAgICBhc3NlcnQg
dHJhY2UgaW4gc2VsZi5fdHJhY2VzLCAiUXVpY0xvZ2dlclRyYWNlIGRvZXMgbm90IGJlbG9uZyB0
byBRdWljTG9nZ2VyIgorCisgICAgZGVmIHRvX2RpY3Qoc2VsZikgLT4gRGljdFtzdHIsIEFueV06
CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHRyYWNlcyBhcyBhIGRpY3Rpb25hcnkg
d2hpY2ggY2FuIGJlIHdyaXR0ZW4gYXMgSlNPTi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAg
ICJ0cmFjZXMiOiBbdHJhY2UudG9fZGljdCgpIGZvciB0cmFjZSBpbiBzZWxmLl90cmFjZXNdLAor
ICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNr
ZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXQucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjk5NDQ1OTkwODVkZTBkZDhkYzZhOWJmZTNiY2E2YWJiYTM2MGJjZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpAQCAtMCwwICsx
LDUwOCBAQAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgaXBhZGRyZXNzCitpbXBvcnQgb3MKK2Zy
b20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVt
Citmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK2Zyb20gY3J5cHRv
Z3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmNpcGhlcnMuYWVhZCBpbXBvcnQgQUVTR0NNCisKK2Zy
b20gLi5idWZmZXIgaW1wb3J0IEJ1ZmZlcgorZnJvbSAuLnRscyBpbXBvcnQgcHVsbF9ibG9jaywg
cHVzaF9ibG9jaworZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKK1BBQ0tFVF9MT05H
X0hFQURFUiA9IDB4ODAKK1BBQ0tFVF9GSVhFRF9CSVQgPSAweDQwCitQQUNLRVRfU1BJTl9CSVQg
PSAweDIwCisKK1BBQ0tFVF9UWVBFX0lOSVRJQUwgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNL
RVRfRklYRURfQklUIHwgMHgwMAorUEFDS0VUX1RZUEVfWkVST19SVFQgPSBQQUNLRVRfTE9OR19I
RUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgxMAorUEFDS0VUX1RZUEVfSEFORFNIQUtFID0g
UEFDS0VUX0xPTkdfSEVBREVSIHwgUEFDS0VUX0ZJWEVEX0JJVCB8IDB4MjAKK1BBQ0tFVF9UWVBF
X1JFVFJZID0gUEFDS0VUX0xPTkdfSEVBREVSIHwgUEFDS0VUX0ZJWEVEX0JJVCB8IDB4MzAKK1BB
Q0tFVF9UWVBFX09ORV9SVFQgPSBQQUNLRVRfRklYRURfQklUCitQQUNLRVRfVFlQRV9NQVNLID0g
MHhGMAorCitDT05ORUNUSU9OX0lEX01BWF9TSVpFID0gMjAKK1BBQ0tFVF9OVU1CRVJfTUFYX1NJ
WkUgPSA0CitSRVRSWV9BRUFEX0tFWSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNGQzMmVjZGIyYTIx
MzNjODQxZTQwNDNkZjI3ZDQ0MzAiKQorUkVUUllfQUVBRF9OT05DRSA9IGJpbmFzY2lpLnVuaGV4
bGlmeSgiNGQxNjExZDA1NTEzYTU1MmM1ODdkNTc1IikKK1JFVFJZX0lOVEVHUklUWV9UQUdfU0la
RSA9IDE2CisKKworY2xhc3MgUXVpY0Vycm9yQ29kZShJbnRFbnVtKToKKyAgICBOT19FUlJPUiA9
IDB4MAorICAgIElOVEVSTkFMX0VSUk9SID0gMHgxCisgICAgU0VSVkVSX0JVU1kgPSAweDIKKyAg
ICBGTE9XX0NPTlRST0xfRVJST1IgPSAweDMKKyAgICBTVFJFQU1fTElNSVRfRVJST1IgPSAweDQK
KyAgICBTVFJFQU1fU1RBVEVfRVJST1IgPSAweDUKKyAgICBGSU5BTF9TSVpFX0VSUk9SID0gMHg2
CisgICAgRlJBTUVfRU5DT0RJTkdfRVJST1IgPSAweDcKKyAgICBUUkFOU1BPUlRfUEFSQU1FVEVS
X0VSUk9SID0gMHg4CisgICAgQ09OTkVDVElPTl9JRF9MSU1JVF9FUlJPUiA9IDB4OQorICAgIFBS
T1RPQ09MX1ZJT0xBVElPTiA9IDB4QQorICAgIElOVkFMSURfVE9LRU4gPSAweEIKKyAgICBDUllQ
VE9fQlVGRkVSX0VYQ0VFREVEID0gMHhECisgICAgQ1JZUFRPX0VSUk9SID0gMHgxMDAKKworCitj
bGFzcyBRdWljUHJvdG9jb2xWZXJzaW9uKEludEVudW0pOgorICAgIE5FR09USUFUSU9OID0gMAor
ICAgIERSQUZUXzI1ID0gMHhGRjAwMDAxOQorICAgIERSQUZUXzI2ID0gMHhGRjAwMDAxQQorICAg
IERSQUZUXzI3ID0gMHhGRjAwMDAxQgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNIZWFkZXI6
CisgICAgaXNfbG9uZ19oZWFkZXI6IGJvb2wKKyAgICB2ZXJzaW9uOiBPcHRpb25hbFtpbnRdCisg
ICAgcGFja2V0X3R5cGU6IGludAorICAgIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMKKyAgICBzb3Vy
Y2VfY2lkOiBieXRlcworICAgIHRva2VuOiBieXRlcyA9IGIiIgorICAgIGludGVncml0eV90YWc6
IGJ5dGVzID0gYiIiCisgICAgcmVzdF9sZW5ndGg6IGludCA9IDAKKworCitkZWYgZGVjb2RlX3Bh
Y2tldF9udW1iZXIodHJ1bmNhdGVkOiBpbnQsIG51bV9iaXRzOiBpbnQsIGV4cGVjdGVkOiBpbnQp
IC0+IGludDoKKyAgICAiIiIKKyAgICBSZWNvdmVyIGEgcGFja2V0IG51bWJlciBmcm9tIGEgdHJ1
bmNhdGVkIHBhY2tldCBudW1iZXIuCisKKyAgICBTZWU6IEFwcGVuZGl4IEEgLSBTYW1wbGUgUGFj
a2V0IE51bWJlciBEZWNvZGluZyBBbGdvcml0aG0KKyAgICAiIiIKKyAgICB3aW5kb3cgPSAxIDw8
IG51bV9iaXRzCisgICAgaGFsZl93aW5kb3cgPSB3aW5kb3cgLy8gMgorICAgIGNhbmRpZGF0ZSA9
IChleHBlY3RlZCAmIH4od2luZG93IC0gMSkpIHwgdHJ1bmNhdGVkCisgICAgaWYgY2FuZGlkYXRl
IDw9IGV4cGVjdGVkIC0gaGFsZl93aW5kb3cgYW5kIGNhbmRpZGF0ZSA8ICgxIDw8IDYyKSAtIHdp
bmRvdzoKKyAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSArIHdpbmRvdworICAgIGVsaWYgY2FuZGlk
YXRlID4gZXhwZWN0ZWQgKyBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlID49IHdpbmRvdzoKKyAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZSAtIHdpbmRvdworICAgIGVsc2U6CisgICAgICAgIHJldHVy
biBjYW5kaWRhdGUKKworCitkZWYgZ2V0X3JldHJ5X2ludGVncml0eV90YWcoCisgICAgcGFja2V0
X3dpdGhvdXRfdGFnOiBieXRlcywgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkOiBieXRlcworKSAt
PiBieXRlczoKKyAgICAiIiIKKyAgICBDYWxjdWxhdGUgdGhlIGludGVncml0eSB0YWcgZm9yIGEg
UkVUUlkgcGFja2V0LgorICAgICIiIgorICAgICMgYnVpbGQgUmV0cnkgcHNldWRvIHBhY2tldAor
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xICsgbGVuKG9yaWdpbmFsX2Rlc3RpbmF0aW9uX2Np
ZCkgKyBsZW4ocGFja2V0X3dpdGhvdXRfdGFnKSkKKyAgICBidWYucHVzaF91aW50OChsZW4ob3Jp
Z2luYWxfZGVzdGluYXRpb25fY2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhvcmlnaW5hbF9kZXN0
aW5hdGlvbl9jaWQpCisgICAgYnVmLnB1c2hfYnl0ZXMocGFja2V0X3dpdGhvdXRfdGFnKQorICAg
IGFzc2VydCBidWYuZW9mKCkKKworICAgICMgcnVuIEFFUy0xMjgtR0NNCisgICAgYWVhZCA9IEFF
U0dDTShSRVRSWV9BRUFEX0tFWSkKKyAgICBpbnRlZ3JpdHlfdGFnID0gYWVhZC5lbmNyeXB0KFJF
VFJZX0FFQURfTk9OQ0UsIGIiIiwgYnVmLmRhdGEpCisgICAgYXNzZXJ0IGxlbihpbnRlZ3JpdHlf
dGFnKSA9PSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICByZXR1cm4gaW50ZWdyaXR5X3Rh
ZworCisKK2RlZiBnZXRfc3Bpbl9iaXQoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJl
dHVybiBib29sKGZpcnN0X2J5dGUgJiBQQUNLRVRfU1BJTl9CSVQpCisKKworZGVmIGlzX2xvbmdf
aGVhZGVyKGZpcnN0X2J5dGU6IGludCkgLT4gYm9vbDoKKyAgICByZXR1cm4gYm9vbChmaXJzdF9i
eXRlICYgUEFDS0VUX0xPTkdfSEVBREVSKQorCisKK2RlZiBwdWxsX3F1aWNfaGVhZGVyKGJ1Zjog
QnVmZmVyLCBob3N0X2NpZF9sZW5ndGg6IE9wdGlvbmFsW2ludF0gPSBOb25lKSAtPiBRdWljSGVh
ZGVyOgorICAgIGZpcnN0X2J5dGUgPSBidWYucHVsbF91aW50OCgpCisKKyAgICBpbnRlZ3JpdHlf
dGFnID0gYiIiCisgICAgdG9rZW4gPSBiIiIKKyAgICBpZiBpc19sb25nX2hlYWRlcihmaXJzdF9i
eXRlKToKKyAgICAgICAgIyBsb25nIGhlYWRlciBwYWNrZXQKKyAgICAgICAgdmVyc2lvbiA9IGJ1
Zi5wdWxsX3VpbnQzMigpCisKKyAgICAgICAgZGVzdGluYXRpb25fY2lkX2xlbmd0aCA9IGJ1Zi5w
dWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgZGVzdGluYXRpb25fY2lkX2xlbmd0aCA+IENPTk5FQ1RJ
T05fSURfTUFYX1NJWkU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAg
ICAgICAgICJEZXN0aW5hdGlvbiBDSUQgaXMgdG9vIGxvbmcgKCVkIGJ5dGVzKSIgJSBkZXN0aW5h
dGlvbl9jaWRfbGVuZ3RoCisgICAgICAgICAgICApCisgICAgICAgIGRlc3RpbmF0aW9uX2NpZCA9
IGJ1Zi5wdWxsX2J5dGVzKGRlc3RpbmF0aW9uX2NpZF9sZW5ndGgpCisKKyAgICAgICAgc291cmNl
X2NpZF9sZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGlmIHNvdXJjZV9jaWRfbGVu
Z3RoID4gQ09OTkVDVElPTl9JRF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoIlNvdXJjZSBDSUQgaXMgdG9vIGxvbmcgKCVkIGJ5dGVzKSIgJSBzb3VyY2VfY2lkX2xlbmd0
aCkKKyAgICAgICAgc291cmNlX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKHNvdXJjZV9jaWRfbGVuZ3Ro
KQorCisgICAgICAgIGlmIHZlcnNpb24gPT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElP
TjoKKyAgICAgICAgICAgICMgdmVyc2lvbiBuZWdvdGlhdGlvbgorICAgICAgICAgICAgcGFja2V0
X3R5cGUgPSBOb25lCisgICAgICAgICAgICByZXN0X2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1
Zi50ZWxsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAm
IFBBQ0tFVF9GSVhFRF9CSVQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBh
Y2tldCBmaXhlZCBiaXQgaXMgemVybyIpCisKKyAgICAgICAgICAgIHBhY2tldF90eXBlID0gZmly
c3RfYnl0ZSAmIFBBQ0tFVF9UWVBFX01BU0sKKyAgICAgICAgICAgIGlmIHBhY2tldF90eXBlID09
IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAgICAgICAgdG9rZW5fbGVuZ3RoID0gYnVm
LnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIHRva2VuID0gYnVmLnB1bGxfYnl0ZXMo
dG9rZW5fbGVuZ3RoKQorICAgICAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorICAgICAgICAgICAgZWxpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRS
WToKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBidWYuY2FwYWNpdHkgLSBidWYudGVs
bCgpIC0gUkVUUllfSU5URUdSSVRZX1RBR19TSVpFCisgICAgICAgICAgICAgICAgdG9rZW4gPSBi
dWYucHVsbF9ieXRlcyh0b2tlbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgaW50ZWdyaXR5X3Rh
ZyA9IGJ1Zi5wdWxsX2J5dGVzKFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRSkKKyAgICAgICAgICAg
ICAgICByZXN0X2xlbmd0aCA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
cmVzdF9sZW5ndGggPSBidWYucHVsbF91aW50X3ZhcigpCisKKyAgICAgICAgcmV0dXJuIFF1aWNI
ZWFkZXIoCisgICAgICAgICAgICBpc19sb25nX2hlYWRlcj1UcnVlLAorICAgICAgICAgICAgdmVy
c2lvbj12ZXJzaW9uLAorICAgICAgICAgICAgcGFja2V0X3R5cGU9cGFja2V0X3R5cGUsCisgICAg
ICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9ZGVzdGluYXRpb25fY2lkLAorICAgICAgICAgICAgc291
cmNlX2NpZD1zb3VyY2VfY2lkLAorICAgICAgICAgICAgdG9rZW49dG9rZW4sCisgICAgICAgICAg
ICBpbnRlZ3JpdHlfdGFnPWludGVncml0eV90YWcsCisgICAgICAgICAgICByZXN0X2xlbmd0aD1y
ZXN0X2xlbmd0aCwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgICMgc2hvcnQgaGVhZGVy
IHBhY2tldAorICAgICAgICBpZiBub3QgKGZpcnN0X2J5dGUgJiBQQUNLRVRfRklYRURfQklUKToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBhY2tldCBmaXhlZCBiaXQgaXMgemVybyIp
CisKKyAgICAgICAgcGFja2V0X3R5cGUgPSBmaXJzdF9ieXRlICYgUEFDS0VUX1RZUEVfTUFTSwor
ICAgICAgICBkZXN0aW5hdGlvbl9jaWQgPSBidWYucHVsbF9ieXRlcyhob3N0X2NpZF9sZW5ndGgp
CisgICAgICAgIHJldHVybiBRdWljSGVhZGVyKAorICAgICAgICAgICAgaXNfbG9uZ19oZWFkZXI9
RmFsc2UsCisgICAgICAgICAgICB2ZXJzaW9uPU5vbmUsCisgICAgICAgICAgICBwYWNrZXRfdHlw
ZT1wYWNrZXRfdHlwZSwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9j
aWQsCisgICAgICAgICAgICBzb3VyY2VfY2lkPWIiIiwKKyAgICAgICAgICAgIHRva2VuPWIiIiwK
KyAgICAgICAgICAgIHJlc3RfbGVuZ3RoPWJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCksCisgICAg
ICAgICkKKworCitkZWYgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgdmVyc2lvbjogaW50LAorICAg
IHNvdXJjZV9jaWQ6IGJ5dGVzLAorICAgIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMsCisgICAgb3Jp
Z2luYWxfZGVzdGluYXRpb25fY2lkOiBieXRlcywKKyAgICByZXRyeV90b2tlbjogYnl0ZXMsCisp
IC0+IGJ5dGVzOgorICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAg
ICArIGxlbihkZXN0aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAg
ICAgICsgbGVuKHJldHJ5X3Rva2VuKQorICAgICAgICArIFJFVFJZX0lOVEVHUklUWV9UQUdfU0la
RQorICAgICkKKyAgICBidWYucHVzaF91aW50OChQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICBidWYu
cHVzaF91aW50MzIodmVyc2lvbikKKyAgICBidWYucHVzaF91aW50OChsZW4oZGVzdGluYXRpb25f
Y2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhkZXN0aW5hdGlvbl9jaWQpCisgICAgYnVmLnB1c2hf
dWludDgobGVuKHNvdXJjZV9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKHNvdXJjZV9jaWQpCisg
ICAgYnVmLnB1c2hfYnl0ZXMocmV0cnlfdG9rZW4pCisgICAgYnVmLnB1c2hfYnl0ZXMoZ2V0X3Jl
dHJ5X2ludGVncml0eV90YWcoYnVmLmRhdGEsIG9yaWdpbmFsX2Rlc3RpbmF0aW9uX2NpZCkpCisg
ICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBidWYuZGF0YQorCisKK2RlZiBlbmNvZGVf
cXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgIHNvdXJjZV9jaWQ6IGJ5dGVzLCBkZXN0aW5h
dGlvbl9jaWQ6IGJ5dGVzLCBzdXBwb3J0ZWRfdmVyc2lvbnM6IExpc3RbaW50XQorKSAtPiBieXRl
czoKKyAgICBidWYgPSBCdWZmZXIoCisgICAgICAgIGNhcGFjaXR5PTcKKyAgICAgICAgKyBsZW4o
ZGVzdGluYXRpb25fY2lkKQorICAgICAgICArIGxlbihzb3VyY2VfY2lkKQorICAgICAgICArIDQg
KiBsZW4oc3VwcG9ydGVkX3ZlcnNpb25zKQorICAgICkKKyAgICBidWYucHVzaF91aW50OChvcy51
cmFuZG9tKDEpWzBdIHwgUEFDS0VUX0xPTkdfSEVBREVSKQorICAgIGJ1Zi5wdXNoX3VpbnQzMihR
dWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihk
ZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAg
ICBidWYucHVzaF91aW50OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291
cmNlX2NpZCkKKyAgICBmb3IgdmVyc2lvbiBpbiBzdXBwb3J0ZWRfdmVyc2lvbnM6CisgICAgICAg
IGJ1Zi5wdXNoX3VpbnQzMih2ZXJzaW9uKQorICAgIHJldHVybiBidWYuZGF0YQorCisKKyMgVExT
IEVYVEVOU0lPTgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNQcmVmZXJyZWRBZGRyZXNzOgor
ICAgIGlwdjRfYWRkcmVzczogT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRdXQorICAgIGlwdjZfYWRk
cmVzczogT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRdXQorICAgIGNvbm5lY3Rpb25faWQ6IGJ5dGVz
CisgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzOgorICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQ6IE9w
dGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBpZGxlX3RpbWVvdXQ6IE9wdGlvbmFsW2ludF0gPSBO
b25lCisgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgbWF4X3BhY2tldF9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4
X2RhdGE6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFf
YmlkaV9sb2NhbDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1f
ZGF0YV9iaWRpX3JlbW90ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9z
dHJlYW1fZGF0YV91bmk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3Ry
ZWFtc19iaWRpOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbXNf
dW5pOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGFja19kZWxheV9leHBvbmVudDogT3B0aW9u
YWxbaW50XSA9IE5vbmUKKyAgICBtYXhfYWNrX2RlbGF5OiBPcHRpb25hbFtpbnRdID0gTm9uZQor
ICAgIGRpc2FibGVfYWN0aXZlX21pZ3JhdGlvbjogT3B0aW9uYWxbYm9vbF0gPSBGYWxzZQorICAg
IHByZWZlcnJlZF9hZGRyZXNzOiBPcHRpb25hbFtRdWljUHJlZmVycmVkQWRkcmVzc10gPSBOb25l
CisgICAgYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisg
ICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgcXVh
bnR1bV9yZWFkaW5lc3M6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKworCitQQVJBTVMgPSB7Cisg
ICAgMDogKCJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIiwgYnl0ZXMpLAorICAgIDE6ICgiaWRsZV90
aW1lb3V0IiwgaW50KSwKKyAgICAyOiAoInN0YXRlbGVzc19yZXNldF90b2tlbiIsIGJ5dGVzKSwK
KyAgICAzOiAoIm1heF9wYWNrZXRfc2l6ZSIsIGludCksCisgICAgNDogKCJpbml0aWFsX21heF9k
YXRhIiwgaW50KSwKKyAgICA1OiAoImluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwi
LCBpbnQpLAorICAgIDY6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUiLCBp
bnQpLAorICAgIDc6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfdW5pIiwgaW50KSwKKyAgICA4
OiAoImluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaSIsIGludCksCisgICAgOTogKCJpbml0aWFsX21h
eF9zdHJlYW1zX3VuaSIsIGludCksCisgICAgMTA6ICgiYWNrX2RlbGF5X2V4cG9uZW50IiwgaW50
KSwKKyAgICAxMTogKCJtYXhfYWNrX2RlbGF5IiwgaW50KSwKKyAgICAxMjogKCJkaXNhYmxlX2Fj
dGl2ZV9taWdyYXRpb24iLCBib29sKSwKKyAgICAxMzogKCJwcmVmZXJyZWRfYWRkcmVzcyIsIFF1
aWNQcmVmZXJyZWRBZGRyZXNzKSwKKyAgICAxNDogKCJhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1p
dCIsIGludCksCisgICAgMzI6ICgibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiLCBpbnQpLAorICAg
IDMxMjc6ICgicXVhbnR1bV9yZWFkaW5lc3MiLCBieXRlcyksCit9CisKKworZGVmIHB1bGxfcXVp
Y19wcmVmZXJyZWRfYWRkcmVzcyhidWY6IEJ1ZmZlcikgLT4gUXVpY1ByZWZlcnJlZEFkZHJlc3M6
CisgICAgaXB2NF9hZGRyZXNzID0gTm9uZQorICAgIGlwdjRfaG9zdCA9IGJ1Zi5wdWxsX2J5dGVz
KDQpCisgICAgaXB2NF9wb3J0ID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICBpZiBpcHY0X2hvc3Qg
IT0gYnl0ZXMoNCk6CisgICAgICAgIGlwdjRfYWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjRB
ZGRyZXNzKGlwdjRfaG9zdCkpLCBpcHY0X3BvcnQpCisKKyAgICBpcHY2X2FkZHJlc3MgPSBOb25l
CisgICAgaXB2Nl9ob3N0ID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisgICAgaXB2Nl9wb3J0ID0gYnVm
LnB1bGxfdWludDE2KCkKKyAgICBpZiBpcHY2X2hvc3QgIT0gYnl0ZXMoMTYpOgorICAgICAgICBp
cHY2X2FkZHJlc3MgPSAoc3RyKGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhpcHY2X2hvc3QpKSwgaXB2
Nl9wb3J0KQorCisgICAgY29ubmVjdGlvbl9pZF9sZW5ndGggPSBidWYucHVsbF91aW50OCgpCisg
ICAgY29ubmVjdGlvbl9pZCA9IGJ1Zi5wdWxsX2J5dGVzKGNvbm5lY3Rpb25faWRfbGVuZ3RoKQor
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgcmV0
dXJuIFF1aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICBpcHY0X2FkZHJlc3M9aXB2NF9hZGRy
ZXNzLAorICAgICAgICBpcHY2X2FkZHJlc3M9aXB2Nl9hZGRyZXNzLAorICAgICAgICBjb25uZWN0
aW9uX2lkPWNvbm5lY3Rpb25faWQsCisgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0
ZWxlc3NfcmVzZXRfdG9rZW4sCisgICAgKQorCisKK2RlZiBwdXNoX3F1aWNfcHJlZmVycmVkX2Fk
ZHJlc3MoCisgICAgYnVmOiBCdWZmZXIsIHByZWZlcnJlZF9hZGRyZXNzOiBRdWljUHJlZmVycmVk
QWRkcmVzcworKSAtPiBOb25lOgorICAgIGlmIHByZWZlcnJlZF9hZGRyZXNzLmlwdjRfYWRkcmVz
cyBpcyBub3QgTm9uZToKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoaXBhZGRyZXNzLklQdjRBZGRy
ZXNzKHByZWZlcnJlZF9hZGRyZXNzLmlwdjRfYWRkcmVzc1swXSkucGFja2VkKQorICAgICAgICBi
dWYucHVzaF91aW50MTYocHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzFdKQorICAgIGVs
c2U6CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDYpKQorCisgICAgaWYgcHJlZmVycmVk
X2FkZHJlc3MuaXB2Nl9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRl
cyhpcGFkZHJlc3MuSVB2NkFkZHJlc3MocHJlZmVycmVkX2FkZHJlc3MuaXB2Nl9hZGRyZXNzWzBd
KS5wYWNrZWQpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY2
X2FkZHJlc3NbMV0pCisgICAgZWxzZToKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTgp
KQorCisgICAgYnVmLnB1c2hfdWludDgobGVuKHByZWZlcnJlZF9hZGRyZXNzLmNvbm5lY3Rpb25f
aWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKHByZWZlcnJlZF9hZGRyZXNzLmNvbm5lY3Rpb25faWQp
CisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3Muc3RhdGVsZXNzX3Jlc2V0X3Rv
a2VuKQorCisKK2RlZiBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgYnVmOiBC
dWZmZXIsIHByb3RvY29sX3ZlcnNpb246IGludAorKSAtPiBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
czoKKyAgICBwYXJhbXMgPSBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygpCisKKyAgICBpZiBwcm90
b2NvbF92ZXJzaW9uIDwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNzoKKyAgICAgICAgd2l0
aCBwdWxsX2Jsb2NrKGJ1ZiwgMikgYXMgbGVuZ3RoOgorICAgICAgICAgICAgZW5kID0gYnVmLnRl
bGwoKSArIGxlbmd0aAorICAgICAgICAgICAgd2hpbGUgYnVmLnRlbGwoKSA8IGVuZDoKKyAgICAg
ICAgICAgICAgICBwYXJhbV9pZCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICAgICAg
cGFyYW1fbGVuID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgICAgICBwYXJhbV9zdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgICAgICBpZiBwYXJhbV9pZCBpbiBQQVJBTVM6Cisg
ICAgICAgICAgICAgICAgICAgICMgcGFyc2Uga25vd24gcGFyYW1ldGVyCisgICAgICAgICAgICAg
ICAgICAgIHBhcmFtX25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAg
ICAgICAgICAgICAgIGlmIHBhcmFtX3R5cGUgPT0gaW50OgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX3VpbnRfdmFyKCkpCisgICAg
ICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9uYW1lLCBidWYucHVsbF9ieXRlcyhwYXJh
bV9sZW4pKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZl
cnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFy
YW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZikpCisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFy
YW1fbmFtZSwgVHJ1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICAjIHNraXAgdW5rbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1bGxf
Ynl0ZXMocGFyYW1fbGVuKQorICAgICAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09IHBh
cmFtX3N0YXJ0ICsgcGFyYW1fbGVuCisgICAgZWxzZToKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5l
b2YoKToKKyAgICAgICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAg
ICAgICAgcGFyYW1fbGVuID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgcGFyYW1f
c3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgICAgICBpZiBwYXJhbV9pZCBpbiBQQVJBTVM6Cisg
ICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICBw
YXJhbV9uYW1lLCBwYXJhbV90eXBlID0gUEFSQU1TW3BhcmFtX2lkXQorICAgICAgICAgICAgICAg
IGlmIHBhcmFtX3R5cGUgPT0gaW50OgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBhcmFt
cywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKKyAgICAgICAgICAgICAgICBlbGlm
IHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1z
LCBwYXJhbV9uYW1lLCBidWYucHVsbF9ieXRlcyhwYXJhbV9sZW4pKQorICAgICAgICAgICAgICAg
IGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRk
cmVzcyhidWYpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNl
dGF0dHIocGFyYW1zLCBwYXJhbV9uYW1lLCBUcnVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAjIHNraXAgdW5rbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICBidWYu
cHVsbF9ieXRlcyhwYXJhbV9sZW4pCisgICAgICAgICAgICBhc3NlcnQgYnVmLnRlbGwoKSA9PSBw
YXJhbV9zdGFydCArIHBhcmFtX2xlbgorCisgICAgcmV0dXJuIHBhcmFtcworCisKK2RlZiBwdXNo
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgYnVmOiBCdWZmZXIsIHBhcmFtczogUXVp
Y1RyYW5zcG9ydFBhcmFtZXRlcnMsIHByb3RvY29sX3ZlcnNpb246IGludAorKSAtPiBOb25lOgor
ICAgIGlmIHByb3RvY29sX3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3Ogor
ICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgICAgIGZvciBwYXJhbV9p
ZCwgKHBhcmFtX25hbWUsIHBhcmFtX3R5cGUpIGluIFBBUkFNUy5pdGVtcygpOgorICAgICAgICAg
ICAgICAgIHBhcmFtX3ZhbHVlID0gZ2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUpCisgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmUgYW5kIHBhcmFtX3ZhbHVlIGlzIG5v
dCBGYWxzZToKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHBhcmFtX2lkKQor
ICAgICAgICAgICAgICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIHBhcmFtX3R5cGUgPT0gaW50OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVzcyhidWYsIHBhcmFtX3ZhbHVl
KQorICAgIGVsc2U6CisgICAgICAgIGZvciBwYXJhbV9pZCwgKHBhcmFtX25hbWUsIHBhcmFtX3R5
cGUpIGluIFBBUkFNUy5pdGVtcygpOgorICAgICAgICAgICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRy
KHBhcmFtcywgcGFyYW1fbmFtZSkKKyAgICAgICAgICAgIGlmIHBhcmFtX3ZhbHVlIGlzIG5vdCBO
b25lIGFuZCBwYXJhbV92YWx1ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1f
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTY1NTM2KQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX3R5
cGUgPT0gaW50OgorICAgICAgICAgICAgICAgICAgICBwYXJhbV9idWYucHVzaF91aW50X3Zhcihw
YXJhbV92YWx1ZSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6Cisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX2J5dGVzKHBhcmFtX3ZhbHVlKQorICAg
ICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKHBhcmFtX2J1Ziwg
cGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1faWQp
CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fYnVmLnRlbGwoKSkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhwYXJhbV9idWYuZGF0YSkKKworCisjIEZSQU1F
UworCisKK2NsYXNzIFF1aWNGcmFtZVR5cGUoSW50RW51bSk6CisgICAgUEFERElORyA9IDB4MDAK
KyAgICBQSU5HID0gMHgwMQorICAgIEFDSyA9IDB4MDIKKyAgICBBQ0tfRUNOID0gMHgwMworICAg
IFJFU0VUX1NUUkVBTSA9IDB4MDQKKyAgICBTVE9QX1NFTkRJTkcgPSAweDA1CisgICAgQ1JZUFRP
ID0gMHgwNgorICAgIE5FV19UT0tFTiA9IDB4MDcKKyAgICBTVFJFQU1fQkFTRSA9IDB4MDgKKyAg
ICBNQVhfREFUQSA9IDB4MTAKKyAgICBNQVhfU1RSRUFNX0RBVEEgPSAweDExCisgICAgTUFYX1NU
UkVBTVNfQklESSA9IDB4MTIKKyAgICBNQVhfU1RSRUFNU19VTkkgPSAweDEzCisgICAgREFUQV9C
TE9DS0VEID0gMHgxNAorICAgIFNUUkVBTV9EQVRBX0JMT0NLRUQgPSAweDE1CisgICAgU1RSRUFN
U19CTE9DS0VEX0JJREkgPSAweDE2CisgICAgU1RSRUFNU19CTE9DS0VEX1VOSSA9IDB4MTcKKyAg
ICBORVdfQ09OTkVDVElPTl9JRCA9IDB4MTgKKyAgICBSRVRJUkVfQ09OTkVDVElPTl9JRCA9IDB4
MTkKKyAgICBQQVRIX0NIQUxMRU5HRSA9IDB4MUEKKyAgICBQQVRIX1JFU1BPTlNFID0gMHgxQgor
ICAgIFRSQU5TUE9SVF9DTE9TRSA9IDB4MUMKKyAgICBBUFBMSUNBVElPTl9DTE9TRSA9IDB4MUQK
KyAgICBIQU5EU0hBS0VfRE9ORSA9IDB4MUUKKyAgICBEQVRBR1JBTSA9IDB4MzAKKyAgICBEQVRB
R1JBTV9XSVRIX0xFTkdUSCA9IDB4MzEKKworCitOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBF
UyA9IGZyb3plbnNldCgKKyAgICBbCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAg
ICBRdWljRnJhbWVUeXBlLkFDS19FQ04sCisgICAgICAgIFF1aWNGcmFtZVR5cGUuUEFERElORywK
KyAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRfQ0xPU0UsCisgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgXQorKQorTk9OX0lOX0ZMSUdIVF9GUkFNRV9U
WVBFUyA9IGZyb3plbnNldCgKKyAgICBbCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLkFDS19FQ04sCisgICAgICAgIFF1aWNGcmFtZVR5cGUuVFJBTlNQ
T1JUX0NMT1NFLAorICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAorICAg
IF0KKykKKworUFJPQklOR19GUkFNRV9UWVBFUyA9IGZyb3plbnNldCgKKyAgICBbCisgICAgICAg
IFF1aWNGcmFtZVR5cGUuUEFUSF9DSEFMTEVOR0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuUEFU
SF9SRVNQT05TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5HLAorICAgICAgICBRdWlj
RnJhbWVUeXBlLk5FV19DT05ORUNUSU9OX0lELAorICAgIF0KKykKKworCitAZGF0YWNsYXNzCitj
bGFzcyBRdWljU3RyZWFtRnJhbWU6CisgICAgZGF0YTogYnl0ZXMgPSBiIiIKKyAgICBmaW46IGJv
b2wgPSBGYWxzZQorICAgIG9mZnNldDogaW50ID0gMAorCisKK2RlZiBwdWxsX2Fja19mcmFtZShi
dWY6IEJ1ZmZlcikgLT4gVHVwbGVbUmFuZ2VTZXQsIGludF06CisgICAgcmFuZ2VzZXQgPSBSYW5n
ZVNldCgpCisgICAgZW5kID0gYnVmLnB1bGxfdWludF92YXIoKSAgIyBsYXJnZXN0IGFja25vd2xl
ZGdlZAorICAgIGRlbGF5ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19yYW5nZV9jb3Vu
dCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICBhY2tfY291bnQgPSBidWYucHVsbF91aW50X3Zh
cigpICAjIGZpcnN0IGFjayByYW5nZQorICAgIHJhbmdlc2V0LmFkZChlbmQgLSBhY2tfY291bnQs
IGVuZCArIDEpCisgICAgZW5kIC09IGFja19jb3VudAorICAgIGZvciBfIGluIHJhbmdlKGFja19y
YW5nZV9jb3VudCk6CisgICAgICAgIGVuZCAtPSBidWYucHVsbF91aW50X3ZhcigpICsgMgorICAg
ICAgICBhY2tfY291bnQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHJhbmdlc2V0LmFk
ZChlbmQgLSBhY2tfY291bnQsIGVuZCArIDEpCisgICAgICAgIGVuZCAtPSBhY2tfY291bnQKKyAg
ICByZXR1cm4gcmFuZ2VzZXQsIGRlbGF5CisKKworZGVmIHB1c2hfYWNrX2ZyYW1lKGJ1ZjogQnVm
ZmVyLCByYW5nZXNldDogUmFuZ2VTZXQsIGRlbGF5OiBpbnQpIC0+IGludDoKKyAgICByYW5nZXMg
PSBsZW4ocmFuZ2VzZXQpCisgICAgaW5kZXggPSByYW5nZXMgLSAxCisgICAgciA9IHJhbmdlc2V0
W2luZGV4XQorICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIDEpCisgICAgYnVmLnB1c2hf
dWludF92YXIoZGVsYXkpCisgICAgYnVmLnB1c2hfdWludF92YXIoaW5kZXgpCisgICAgYnVmLnB1
c2hfdWludF92YXIoci5zdG9wIC0gMSAtIHIuc3RhcnQpCisgICAgc3RhcnQgPSByLnN0YXJ0Cisg
ICAgd2hpbGUgaW5kZXggPiAwOgorICAgICAgICBpbmRleCAtPSAxCisgICAgICAgIHIgPSByYW5n
ZXNldFtpbmRleF0KKyAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RhcnQgLSByLnN0b3AgLSAx
KQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihyLnN0b3AgLSByLnN0YXJ0IC0gMSkKKyAgICAg
ICAgc3RhcnQgPSByLnN0YXJ0CisgICAgcmV0dXJuIHJhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0X2J1aWxkZXIucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODgzN2MyYzMz
MDQ5MjA2NDQ1ZmM5ZmI4MTQ3M2FjZmNiZjRiNjViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0X2J1aWxkZXIucHkKQEAgLTAsMCArMSwzNjYg
QEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKK2Zyb20gZW51bSBp
bXBvcnQgRW51bQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIExpc3Qs
IE9wdGlvbmFsLCBTZXF1ZW5jZSwgVHVwbGUKKworZnJvbSAuLmJ1ZmZlciBpbXBvcnQgQnVmZmVy
LCBzaXplX3VpbnRfdmFyCitmcm9tIC4udGxzIGltcG9ydCBFcG9jaAorZnJvbSAuY3J5cHRvIGlt
cG9ydCBDcnlwdG9QYWlyCitmcm9tIC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJv
bSAucGFja2V0IGltcG9ydCAoCisgICAgTk9OX0FDS19FTElDSVRJTkdfRlJBTUVfVFlQRVMsCisg
ICAgTk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUywKKyAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpF
LAorICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAor
ICAgIFBBQ0tFVF9UWVBFX01BU0ssCisgICAgUXVpY0ZyYW1lVHlwZSwKKyAgICBpc19sb25nX2hl
YWRlciwKKykKKworUEFDS0VUX01BWF9TSVpFID0gMTI4MAorUEFDS0VUX0xFTkdUSF9TRU5EX1NJ
WkUgPSAyCitQQUNLRVRfTlVNQkVSX1NFTkRfU0laRSA9IDIKKworCitRdWljRGVsaXZlcnlIYW5k
bGVyID0gQ2FsbGFibGVbLi4uLCBOb25lXQorCisKK2NsYXNzIFF1aWNEZWxpdmVyeVN0YXRlKEVu
dW0pOgorICAgIEFDS0VEID0gMAorICAgIExPU1QgPSAxCisgICAgRVhQSVJFRCA9IDIKKworCitA
ZGF0YWNsYXNzCitjbGFzcyBRdWljU2VudFBhY2tldDoKKyAgICBlcG9jaDogRXBvY2gKKyAgICBp
bl9mbGlnaHQ6IGJvb2wKKyAgICBpc19hY2tfZWxpY2l0aW5nOiBib29sCisgICAgaXNfY3J5cHRv
X3BhY2tldDogYm9vbAorICAgIHBhY2tldF9udW1iZXI6IGludAorICAgIHBhY2tldF90eXBlOiBp
bnQKKyAgICBzZW50X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICBzZW50X2J5dGVz
OiBpbnQgPSAwCisKKyAgICBkZWxpdmVyeV9oYW5kbGVyczogTGlzdFtUdXBsZVtRdWljRGVsaXZl
cnlIYW5kbGVyLCBBbnldXSA9IGZpZWxkKAorICAgICAgICBkZWZhdWx0X2ZhY3Rvcnk9bGlzdAor
ICAgICkKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IExpc3RbRGljdF0gPSBmaWVsZChkZWZhdWx0
X2ZhY3Rvcnk9bGlzdCkKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlclN0b3AoRXhjZXB0aW9u
KToKKyAgICBwYXNzCisKKworY2xhc3MgUXVpY1BhY2tldEJ1aWxkZXI6CisgICAgIiIiCisgICAg
SGVscGVyIGZvciBidWlsZGluZyBRVUlDIHBhY2tldHMuCisgICAgIiIiCisKKyAgICBkZWYgX19p
bml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGhvc3RfY2lkOiBieXRl
cywKKyAgICAgICAgcGVlcl9jaWQ6IGJ5dGVzLAorICAgICAgICB2ZXJzaW9uOiBpbnQsCisgICAg
ICAgIGlzX2NsaWVudDogYm9vbCwKKyAgICAgICAgcGFja2V0X251bWJlcjogaW50ID0gMCwKKyAg
ICAgICAgcGVlcl90b2tlbjogYnl0ZXMgPSBiIiIsCisgICAgICAgIHF1aWNfbG9nZ2VyOiBPcHRp
b25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZSwKKyAgICAgICAgc3Bpbl9iaXQ6IGJvb2wgPSBG
YWxzZSwKKyAgICApOgorICAgICAgICBzZWxmLm1heF9mbGlnaHRfYnl0ZXM6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgICAgIHNlbGYubWF4X3RvdGFsX2J5dGVzOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICAgICBzZWxmLnF1aWNfbG9nZ2VyX2ZyYW1lczogT3B0aW9uYWxbTGlzdFtEaWN0
XV0gPSBOb25lCisKKyAgICAgICAgc2VsZi5faG9zdF9jaWQgPSBob3N0X2NpZAorICAgICAgICBz
ZWxmLl9pc19jbGllbnQgPSBpc19jbGllbnQKKyAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBwZWVy
X2NpZAorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gcGVlcl90b2tlbgorICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlciA9IHF1aWNfbG9nZ2VyCisgICAgICAgIHNlbGYuX3NwaW5fYml0ID0gc3Bp
bl9iaXQKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHZlcnNpb24KKworICAgICAgICAjIGFzc2Vt
YmxlZCBkYXRhZ3JhbXMgYW5kIHBhY2tldHMKKyAgICAgICAgc2VsZi5fZGF0YWdyYW1zOiBMaXN0
W2J5dGVzXSA9IFtdCisgICAgICAgIHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAg
ICAgICAgc2VsZi5fZGF0YWdyYW1faW5pdCA9IFRydWUKKyAgICAgICAgc2VsZi5fcGFja2V0czog
TGlzdFtRdWljU2VudFBhY2tldF0gPSBbXQorICAgICAgICBzZWxmLl9mbGlnaHRfYnl0ZXMgPSAw
CisgICAgICAgIHNlbGYuX3RvdGFsX2J5dGVzID0gMAorCisgICAgICAgICMgY3VycmVudCBwYWNr
ZXQKKyAgICAgICAgc2VsZi5faGVhZGVyX3NpemUgPSAwCisgICAgICAgIHNlbGYuX3BhY2tldDog
T3B0aW9uYWxbUXVpY1NlbnRQYWNrZXRdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRfY3J5
cHRvOiBPcHRpb25hbFtDcnlwdG9QYWlyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGFja2V0X2xv
bmdfaGVhZGVyID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9IHBhY2tldF9u
dW1iZXIKKyAgICAgICAgc2VsZi5fcGFja2V0X3N0YXJ0ID0gMAorICAgICAgICBzZWxmLl9wYWNr
ZXRfdHlwZSA9IDAKKworICAgICAgICBzZWxmLl9idWZmZXIgPSBCdWZmZXIoUEFDS0VUX01BWF9T
SVpFKQorICAgICAgICBzZWxmLl9idWZmZXJfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKyAg
ICAgICAgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gUEFDS0VUX01BWF9TSVpFCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgcGFja2V0X2lzX2VtcHR5KHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIGBUcnVlYCBpZiB0aGUgY3VycmVudCBwYWNrZXQgaXMgZW1wdHku
CisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lCisg
ICAgICAgIHBhY2tldF9zaXplID0gc2VsZi5fYnVmZmVyLnRlbGwoKSAtIHNlbGYuX3BhY2tldF9z
dGFydAorICAgICAgICByZXR1cm4gcGFja2V0X3NpemUgPD0gc2VsZi5faGVhZGVyX3NpemUKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZXRfbnVtYmVyKHNlbGYpIC0+IGludDoKKyAgICAg
ICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHBhY2tldCBudW1iZXIgZm9yIHRoZSBuZXh0IHBh
Y2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9wYWNrZXRfbnVtYmVyCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVtYWluaW5nX2J1ZmZlcl9zcGFjZShzZWxmKSAtPiBp
bnQ6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9m
IGJ5dGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4K
KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9idWZmZXJf
Y2FwYWNpdHkKKyAgICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAg
LSBzZWxmLl9wYWNrZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIHJlbWFpbmluZ19mbGlnaHRfc3BhY2Uoc2VsZikgLT4gaW50OgorICAg
ICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBieXRlcyB3
aGljaCBjYW4gYmUgdXNlZCBpbgorICAgICAgICB0aGUgY3VycmVudCBwYWNrZXQuCisgICAgICAg
ICIiIgorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5
CisgICAgICAgICAgICAtIHNlbGYuX2J1ZmZlci50ZWxsKCkKKyAgICAgICAgICAgIC0gc2VsZi5f
cGFja2V0X2NyeXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICkKKworICAgIGRlZiBmbHVzaChz
ZWxmKSAtPiBUdXBsZVtMaXN0W2J5dGVzXSwgTGlzdFtRdWljU2VudFBhY2tldF1dOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgYXNzZW1ibGVkIGRhdGFncmFtcy4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIHNlbGYuX3BhY2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX2VuZF9wYWNrZXQoKQorICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50X2RhdGFncmFtKCkK
KworICAgICAgICBkYXRhZ3JhbXMgPSBzZWxmLl9kYXRhZ3JhbXMKKyAgICAgICAgcGFja2V0cyA9
IHNlbGYuX3BhY2tldHMKKyAgICAgICAgc2VsZi5fZGF0YWdyYW1zID0gW10KKyAgICAgICAgc2Vs
Zi5fcGFja2V0cyA9IFtdCisgICAgICAgIHJldHVybiBkYXRhZ3JhbXMsIHBhY2tldHMKKworICAg
IGRlZiBzdGFydF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJhbWVfdHlwZTogaW50
LAorICAgICAgICBjYXBhY2l0eTogaW50ID0gMSwKKyAgICAgICAgaGFuZGxlcjogT3B0aW9uYWxb
UXVpY0RlbGl2ZXJ5SGFuZGxlcl0gPSBOb25lLAorICAgICAgICBoYW5kbGVyX2FyZ3M6IFNlcXVl
bmNlW0FueV0gPSBbXSwKKyAgICApIC0+IEJ1ZmZlcjoKKyAgICAgICAgIiIiCisgICAgICAgIFN0
YXJ0cyBhIG5ldyBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYucmVtYWluaW5n
X2J1ZmZlcl9zcGFjZSA8IGNhcGFjaXR5IG9yICgKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgbm90
IGluIE5PTl9JTl9GTElHSFRfRlJBTUVfVFlQRVMKKyAgICAgICAgICAgIGFuZCBzZWxmLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UgPCBjYXBhY2l0eQorICAgICAgICApOgorICAgICAgICAgICAgcmFp
c2UgUXVpY1BhY2tldEJ1aWxkZXJTdG9wCisKKyAgICAgICAgc2VsZi5fYnVmZmVyLnB1c2hfdWlu
dF92YXIoZnJhbWVfdHlwZSkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSBub3QgaW4gTk9OX0FDS19F
TElDSVRJTkdfRlJBTUVfVFlQRVM6CisgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaXNfYWNrX2Vs
aWNpdGluZyA9IFRydWUKKyAgICAgICAgaWYgZnJhbWVfdHlwZSBub3QgaW4gTk9OX0lOX0ZMSUdI
VF9GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pbl9mbGlnaHQgPSBUcnVl
CisgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5DUllQVE86CisgICAgICAg
ICAgICBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldCA9IFRydWUKKyAgICAgICAgaWYgaGFu
ZGxlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5kZWxpdmVyeV9oYW5k
bGVycy5hcHBlbmQoKGhhbmRsZXIsIGhhbmRsZXJfYXJncykpCisgICAgICAgIHJldHVybiBzZWxm
Ll9idWZmZXIKKworICAgIGRlZiBzdGFydF9wYWNrZXQoc2VsZiwgcGFja2V0X3R5cGU6IGludCwg
Y3J5cHRvOiBDcnlwdG9QYWlyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU3RhcnRz
IGEgbmV3IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1ZiA9IHNlbGYuX2J1ZmZlcgor
CisgICAgICAgICMgZmluaXNoIHByZXZpb3VzIGRhdGFncmFtCisgICAgICAgIGlmIHNlbGYuX3Bh
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2VuZF9wYWNrZXQoKQorCisgICAg
ICAgICMgaWYgdGhlcmUgaXMgdG9vIGxpdHRsZSBzcGFjZSByZW1haW5pbmcsIHN0YXJ0IGEgbmV3
IGRhdGFncmFtCisgICAgICAgICMgRklYTUU6IHRoZSBsaW1pdCBpcyBhcmJpdHJhcnkhCisgICAg
ICAgIHBhY2tldF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgaWYgc2VsZi5fYnVmZmVyX2Nh
cGFjaXR5IC0gcGFja2V0X3N0YXJ0IDwgMTI4OgorICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3Vy
cmVudF9kYXRhZ3JhbSgpCisgICAgICAgICAgICBwYWNrZXRfc3RhcnQgPSAwCisKKyAgICAgICAg
IyBpbml0aWFsaXplIGRhdGFncmFtIGlmIG5lZWRlZAorICAgICAgICBpZiBzZWxmLl9kYXRhZ3Jh
bV9pbml0OgorICAgICAgICAgICAgaWYgc2VsZi5tYXhfdG90YWxfYnl0ZXMgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgcmVtYWluaW5nX3RvdGFsX2J5dGVzID0gc2VsZi5tYXhfdG90YWxf
Ynl0ZXMgLSBzZWxmLl90b3RhbF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ190
b3RhbF9ieXRlcyA8IHNlbGYuX2J1ZmZlcl9jYXBhY2l0eToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fYnVmZmVyX2NhcGFjaXR5ID0gcmVtYWluaW5nX3RvdGFsX2J5dGVzCisKKyAgICAgICAg
ICAgIHNlbGYuX2ZsaWdodF9jYXBhY2l0eSA9IHNlbGYuX2J1ZmZlcl9jYXBhY2l0eQorICAgICAg
ICAgICAgaWYgc2VsZi5tYXhfZmxpZ2h0X2J5dGVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPSBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgLSBzZWxm
Ll9mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgICAgICBpZiByZW1haW5pbmdfZmxpZ2h0X2J5dGVz
IDwgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mbGln
aHRfY2FwYWNpdHkgPSByZW1haW5pbmdfZmxpZ2h0X2J5dGVzCisgICAgICAgICAgICBzZWxmLl9k
YXRhZ3JhbV9mbGlnaHRfYnl0ZXMgPSAwCisgICAgICAgICAgICBzZWxmLl9kYXRhZ3JhbV9pbml0
ID0gRmFsc2UKKworICAgICAgICAjIGNhbGN1bGF0ZSBoZWFkZXIgc2l6ZQorICAgICAgICBwYWNr
ZXRfbG9uZ19oZWFkZXIgPSBpc19sb25nX2hlYWRlcihwYWNrZXRfdHlwZSkKKyAgICAgICAgaWYg
cGFja2V0X2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgaGVhZGVyX3NpemUgPSAxMSArIGxlbihz
ZWxmLl9wZWVyX2NpZCkgKyBsZW4oc2VsZi5faG9zdF9jaWQpCisgICAgICAgICAgICBpZiAocGFj
a2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLKSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgorICAg
ICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGxlbihzZWxmLl9wZWVyX3Rva2VuKQorICAgICAg
ICAgICAgICAgIGhlYWRlcl9zaXplICs9IHNpemVfdWludF92YXIodG9rZW5fbGVuZ3RoKSArIHRv
a2VuX2xlbmd0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGVhZGVyX3NpemUgPSAzICsg
bGVuKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgICMgY2hlY2sgd2UgaGF2ZSBlbm91Z2ggc3Bh
Y2UKKyAgICAgICAgaWYgcGFja2V0X3N0YXJ0ICsgaGVhZGVyX3NpemUgPj0gc2VsZi5fYnVmZmVy
X2NhcGFjaXR5OgorICAgICAgICAgICAgcmFpc2UgUXVpY1BhY2tldEJ1aWxkZXJTdG9wCisKKyAg
ICAgICAgIyBkZXRlcm1pbmUgYWNrIGVwb2NoCisgICAgICAgIGlmIHBhY2tldF90eXBlID09IFBB
Q0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAgICBlcG9jaCA9IEVwb2NoLklOSVRJQUwKKyAg
ICAgICAgZWxpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6CisgICAgICAg
ICAgICBlcG9jaCA9IEVwb2NoLkhBTkRTSEFLRQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ZXBvY2ggPSBFcG9jaC5PTkVfUlRUCisKKyAgICAgICAgc2VsZi5faGVhZGVyX3NpemUgPSBoZWFk
ZXJfc2l6ZQorICAgICAgICBzZWxmLl9wYWNrZXQgPSBRdWljU2VudFBhY2tldCgKKyAgICAgICAg
ICAgIGVwb2NoPWVwb2NoLAorICAgICAgICAgICAgaW5fZmxpZ2h0PUZhbHNlLAorICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9
RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNlbGYuX3BhY2tldF9udW1iZXIsCisg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLl9wYWNrZXRfY3J5cHRvID0gY3J5cHRvCisgICAgICAgIHNlbGYuX3BhY2tldF9sb25nX2hl
YWRlciA9IHBhY2tldF9sb25nX2hlYWRlcgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSBw
YWNrZXRfc3RhcnQKKyAgICAgICAgc2VsZi5fcGFja2V0X3R5cGUgPSBwYWNrZXRfdHlwZQorICAg
ICAgICBzZWxmLnF1aWNfbG9nZ2VyX2ZyYW1lcyA9IHNlbGYuX3BhY2tldC5xdWljX2xvZ2dlcl9m
cmFtZXMKKworICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQgKyBzZWxmLl9oZWFk
ZXJfc2l6ZSkKKworICAgIGRlZiBfZW5kX3BhY2tldChzZWxmKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgRW5kcyB0aGUgY3VycmVudCBwYWNrZXQuCisgICAgICAgICIiIgorICAgICAg
ICBidWYgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgcGFja2V0X3NpemUgPSBidWYudGVsbCgpIC0g
c2VsZi5fcGFja2V0X3N0YXJ0CisgICAgICAgIGlmIHBhY2tldF9zaXplID4gc2VsZi5faGVhZGVy
X3NpemU6CisgICAgICAgICAgICAjIHBhZCBpbml0aWFsIGRhdGFncmFtCisgICAgICAgICAgICBp
ZiAoCisgICAgICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5k
IHNlbGYuX3BhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0lOSVRJQUwKKyAgICAgICAgICAgICAg
ICBhbmQgc2VsZi5fcGFja2V0LmlzX2NyeXB0b19wYWNrZXQKKyAgICAgICAgICAgICk6CisgICAg
ICAgICAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlOgorICAgICAgICAgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2Up
KQorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9w
YWNrZXRfc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9
IFRydWUKKworICAgICAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1l
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB3cml0ZSBoZWFk
ZXIKKyAgICAgICAgICAgIGlmIHNlbGYuX3BhY2tldF9sb25nX2hlYWRlcjoKKyAgICAgICAgICAg
ICAgICBsZW5ndGggPSAoCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplCisgICAgICAg
ICAgICAgICAgICAgIC0gc2VsZi5faGVhZGVyX3NpemUKKyAgICAgICAgICAgICAgICAgICAgKyBQ
QUNLRVRfTlVNQkVSX1NFTkRfU0laRQorICAgICAgICAgICAgICAgICAgICArIHNlbGYuX3BhY2tl
dF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg
ICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF91aW50OChzZWxmLl9wYWNrZXRfdHlwZSB8IChQQUNLRVRfTlVNQkVSX1NFTkRfU0laRSAtIDEp
KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihzZWxmLl92ZXJzaW9uKQorICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzZWxmLl9wZWVyX2NpZCkpCisgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVm
LnB1c2hfdWludDgobGVuKHNlbGYuX2hvc3RfY2lkKSkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF9ieXRlcyhzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAgICAgICBpZiAoc2VsZi5fcGFja2V0
X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLKSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgorICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihsZW4oc2VsZi5fcGVlcl90b2tlbikpCisg
ICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHNlbGYuX3BlZXJfdG9rZW4pCisgICAg
ICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbmd0aCB8IDB4NDAwMCkKKyAgICAgICAgICAg
ICAgICBidWYucHVzaF91aW50MTYoc2VsZi5fcGFja2V0X251bWJlciAmIDB4RkZGRikKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0
KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KAorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9wYWNrZXRfdHlwZQorICAgICAgICAgICAgICAgICAgICB8IChzZWxmLl9zcGluX2JpdCA8
PCA1KQorICAgICAgICAgICAgICAgICAgICB8IChzZWxmLl9wYWNrZXRfY3J5cHRvLmtleV9waGFz
ZSA8PCAyKQorICAgICAgICAgICAgICAgICAgICB8IChQQUNLRVRfTlVNQkVSX1NFTkRfU0laRSAt
IDEpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHNl
bGYuX3BlZXJfY2lkKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNr
ZXRfbnVtYmVyICYgMHhGRkZGKQorCisgICAgICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdl
IG5lZWQgcGFkZGluZworICAgICAgICAgICAgICAgIHBhZGRpbmdfc2l6ZSA9ICgKKyAgICAgICAg
ICAgICAgICAgICAgUEFDS0VUX05VTUJFUl9NQVhfU0laRQorICAgICAgICAgICAgICAgICAgICAt
IFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2VsZi5faGVh
ZGVyX3NpemUKKyAgICAgICAgICAgICAgICAgICAgLSBwYWNrZXRfc2l6ZQorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICBpZiBwYWRkaW5nX3NpemUgPiAwOgorICAgICAgICAgICAg
ICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQgKyBwYWNrZXRfc2l6ZSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMocGFkZGluZ19zaXplKSkKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3NpemUgKz0gcGFkZGluZ19zaXplCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BhY2tldC5pbl9mbGlnaHQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAg
ICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgZW5jcnlwdCBpbiBwbGFjZQorICAgICAgICAgICAgcGxhaW4g
PSBidWYuZGF0YV9zbGljZShzZWxmLl9wYWNrZXRfc3RhcnQsIHNlbGYuX3BhY2tldF9zdGFydCAr
IHBhY2tldF9zaXplKQorICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQor
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0
X2NyeXB0by5lbmNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgcGxhaW5bMCA6IHNl
bGYuX2hlYWRlcl9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgcGxhaW5bc2VsZi5faGVhZGVy
X3NpemUgOiBwYWNrZXRfc2l6ZV0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tldF9u
dW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5fcGFja2V0LnNlbnRfYnl0ZXMgPSBidWYudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0Cisg
ICAgICAgICAgICBzZWxmLl9wYWNrZXRzLmFwcGVuZChzZWxmLl9wYWNrZXQpCisgICAgICAgICAg
ICBpZiBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0OgorICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2ZsaWdodF9ieXRlcyArPSBzZWxmLl9wYWNrZXQuc2VudF9ieXRlcworCisgICAgICAgICAg
ICAjIHNob3J0IGhlYWRlciBwYWNrZXRzIGNhbm5vdCBiZSBjb2FsbGVzY2VkLCB3ZSBuZWVkIGEg
bmV3IGRhdGFncmFtCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVy
OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorCisgICAg
ICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICMgImNhbmNlbCIgdGhlIHBhY2tldAorICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFj
a2V0X3N0YXJ0KQorCisgICAgICAgIHNlbGYuX3BhY2tldCA9IE5vbmUKKyAgICAgICAgc2VsZi5x
dWljX2xvZ2dlcl9mcmFtZXMgPSBOb25lCisKKyAgICBkZWYgX2ZsdXNoX2N1cnJlbnRfZGF0YWdy
YW0oc2VsZikgLT4gTm9uZToKKyAgICAgICAgZGF0YWdyYW1fYnl0ZXMgPSBzZWxmLl9idWZmZXIu
dGVsbCgpCisgICAgICAgIGlmIGRhdGFncmFtX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5fZGF0
YWdyYW1zLmFwcGVuZChzZWxmLl9idWZmZXIuZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2ZsaWdo
dF9ieXRlcyArPSBzZWxmLl9kYXRhZ3JhbV9mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgIHNlbGYu
X3RvdGFsX2J5dGVzICs9IGRhdGFncmFtX2J5dGVzCisgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bV9pbml0ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyLnNlZWsoMCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYwODZjOWM3NGY3
NzU2MDMyMDg2OTAwNzZiZWU5NjM4MTQ2MTFiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5CkBAIC0wLDAgKzEsOTggQEAKK2Zyb20g
Y29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwg
SXRlcmFibGUsIExpc3QsIE9wdGlvbmFsCisKKworY2xhc3MgUmFuZ2VTZXQoU2VxdWVuY2UpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYW5nZXM6IEl0ZXJhYmxlW3JhbmdlXSA9IFtdKToKKyAg
ICAgICAgc2VsZi5fX3JhbmdlczogTGlzdFtyYW5nZV0gPSBbXQorICAgICAgICBmb3IgciBpbiBy
YW5nZXM6CisgICAgICAgICAgICBhc3NlcnQgci5zdGVwID09IDEKKyAgICAgICAgICAgIHNlbGYu
YWRkKHIuc3RhcnQsIHIuc3RvcCkKKworICAgIGRlZiBhZGQoc2VsZiwgc3RhcnQ6IGludCwgc3Rv
cDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGlmIHN0b3AgaXMgTm9u
ZToKKyAgICAgICAgICAgIHN0b3AgPSBzdGFydCArIDEKKyAgICAgICAgYXNzZXJ0IHN0b3AgPiBz
dGFydAorCisgICAgICAgIGZvciBpLCByIGluIGVudW1lcmF0ZShzZWxmLl9fcmFuZ2VzKToKKyAg
ICAgICAgICAgICMgdGhlIGFkZGVkIHJhbmdlIGlzIGVudGlyZWx5IGJlZm9yZSBjdXJyZW50IGl0
ZW0sIGluc2VydCBoZXJlCisgICAgICAgICAgICBpZiBzdG9wIDwgci5zdGFydDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9fcmFuZ2VzLmluc2VydChpLCByYW5nZShzdGFydCwgc3RvcCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdGhlIGFkZGVkIHJhbmdlIGlzIGVu
dGlyZWx5IGFmdGVyIGN1cnJlbnQgaXRlbSwga2VlcCBsb29raW5nCisgICAgICAgICAgICBpZiBz
dGFydCA+IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAj
IHRoZSBhZGRlZCByYW5nZSB0b3VjaGVzIHRoZSBjdXJyZW50IGl0ZW0sIG1lcmdlIGl0CisgICAg
ICAgICAgICBzdGFydCA9IG1pbihzdGFydCwgci5zdGFydCkKKyAgICAgICAgICAgIHN0b3AgPSBt
YXgoc3RvcCwgci5zdG9wKQorICAgICAgICAgICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2Vz
KSAtIDEgYW5kIHNlbGYuX19yYW5nZXNbaSArIDFdLnN0YXJ0IDw9IHN0b3A6CisgICAgICAgICAg
ICAgICAgc3RvcCA9IG1heChzZWxmLl9fcmFuZ2VzW2kgKyAxXS5zdG9wLCBzdG9wKQorICAgICAg
ICAgICAgICAgIHNlbGYuX19yYW5nZXMucG9wKGkgKyAxKQorICAgICAgICAgICAgc2VsZi5fX3Jh
bmdlc1tpXSA9IHJhbmdlKHN0YXJ0LCBzdG9wKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgYWxsIGV4aXN0aW5nIGl0ZW1z
LCBhcHBlbmQgaXQKKyAgICAgICAgc2VsZi5fX3Jhbmdlcy5hcHBlbmQocmFuZ2Uoc3RhcnQsIHN0
b3ApKQorCisgICAgZGVmIGJvdW5kcyhzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHJh
bmdlKHNlbGYuX19yYW5nZXNbMF0uc3RhcnQsIHNlbGYuX19yYW5nZXNbLTFdLnN0b3ApCisKKyAg
ICBkZWYgc2hpZnQoc2VsZikgLT4gcmFuZ2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2Vz
LnBvcCgwKQorCisgICAgZGVmIHN1YnRyYWN0KHNlbGYsIHN0YXJ0OiBpbnQsIHN0b3A6IGludCkg
LT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHN0b3AgPiBzdGFydAorCisgICAgICAgIGkgPSAwCisg
ICAgICAgIHdoaWxlIGkgPCBsZW4oc2VsZi5fX3Jhbmdlcyk6CisgICAgICAgICAgICByID0gc2Vs
Zi5fX3Jhbmdlc1tpXQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIGlzIGVudGly
ZWx5IGJlZm9yZSBjdXJyZW50IGl0ZW0sIHN0b3AgaGVyZQorICAgICAgICAgICAgaWYgc3RvcCA8
PSByLnN0YXJ0OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIHRoZSBy
ZW1vdmVkIHJhbmdlIGlzIGVudGlyZWx5IGFmdGVyIGN1cnJlbnQgaXRlbSwga2VlcCBsb29raW5n
CisgICAgICAgICAgICBpZiBzdGFydCA+PSByLnN0b3A6CisgICAgICAgICAgICAgICAgaSArPSAx
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyB0aGUgcmVtb3ZlZCBy
YW5nZSBjb21wbGV0ZWx5IGNvdmVycyB0aGUgY3VycmVudCBpdGVtLCByZW1vdmUgaXQKKyAgICAg
ICAgICAgIGlmIHN0YXJ0IDw9IHIuc3RhcnQgYW5kIHN0b3AgPj0gci5zdG9wOgorICAgICAgICAg
ICAgICAgIHNlbGYuX19yYW5nZXMucG9wKGkpCisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgIyB0aGUgcmVtb3ZlZCByYW5nZSB0b3VjaGVzIHRoZSBjdXJyZW50IGl0ZW0K
KyAgICAgICAgICAgIGlmIHN0YXJ0ID4gci5zdGFydDoKKyAgICAgICAgICAgICAgICBzZWxmLl9f
cmFuZ2VzW2ldID0gcmFuZ2Uoci5zdGFydCwgc3RhcnQpCisgICAgICAgICAgICAgICAgaWYgc3Rv
cCA8IHIuc3RvcDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlcy5pbnNlcnQoaSAr
IDEsIHJhbmdlKHN0b3AsIHIuc3RvcCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHNlbGYuX19yYW5nZXNbaV0gPSByYW5nZShzdG9wLCByLnN0b3ApCisKKyAgICAgICAgICAg
IGkgKz0gMQorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsOiBB
bnkpIC0+IGJvb2w6CisgICAgICAgIGZvciByIGluIHNlbGYuX19yYW5nZXM6CisgICAgICAgICAg
ICBpZiB2YWwgaW4gcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoK
KyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFJhbmdlU2V0KToKKyAgICAgICAgICAg
IHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzID09
IG90aGVyLl9fcmFuZ2VzCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBBbnkpIC0+
IHJhbmdlOgorICAgICAgICByZXR1cm4gc2VsZi5fX3Jhbmdlc1trZXldCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fX3JhbmdlcykKKwor
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHJldHVybiAiUmFuZ2VTZXQo
e30pIi5mb3JtYXQocmVwcihzZWxmLl9fcmFuZ2VzKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL3JlY292ZXJ5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvcmVjb3ZlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFiZWIxZWNmNTY2MWY3MWM5M2U3N2JmN2Zh
NjJhNzE2MmYzODcwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL3JlY292ZXJ5LnB5CkBAIC0wLDAgKzEsNDk3IEBACitpbXBvcnQgbWF0aAorZnJvbSB0
eXBpbmcgaW1wb3J0IENhbGxhYmxlLCBEaWN0LCBJdGVyYWJsZSwgTGlzdCwgT3B0aW9uYWwKKwor
ZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tldF9idWlsZGVy
IGltcG9ydCBRdWljRGVsaXZlcnlTdGF0ZSwgUXVpY1NlbnRQYWNrZXQKK2Zyb20gLnJhbmdlc2V0
IGltcG9ydCBSYW5nZVNldAorCisjIGxvc3MgZGV0ZWN0aW9uCitLX1BBQ0tFVF9USFJFU0hPTEQg
PSAzCitLX0lOSVRJQUxfUlRUID0gMC41ICAjIHNlY29uZHMKK0tfR1JBTlVMQVJJVFkgPSAwLjAw
MSAgIyBzZWNvbmRzCitLX1RJTUVfVEhSRVNIT0xEID0gOSAvIDgKK0tfTUlDUk9fU0VDT05EID0g
MC4wMDAwMDEKK0tfU0VDT05EID0gMS4wCisKKyMgY29uZ2VzdGlvbiBjb250cm9sCitLX01BWF9E
QVRBR1JBTV9TSVpFID0gMTI4MAorS19JTklUSUFMX1dJTkRPVyA9IDEwICogS19NQVhfREFUQUdS
QU1fU0laRQorS19NSU5JTVVNX1dJTkRPVyA9IDIgKiBLX01BWF9EQVRBR1JBTV9TSVpFCitLX0xP
U1NfUkVEVUNUSU9OX0ZBQ1RPUiA9IDAuNQorCisKK2NsYXNzIFF1aWNQYWNrZXRTcGFjZToKKyAg
ICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hY2tfYXQ6IE9wdGlv
bmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5hY2tfcXVldWUgPSBSYW5nZVNldCgpCisg
ICAgICAgIHNlbGYuZGlzY2FyZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5leHBlY3RlZF9wYWNr
ZXRfbnVtYmVyID0gMAorICAgICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0ID0gLTEK
KyAgICAgICAgc2VsZi5sYXJnZXN0X3JlY2VpdmVkX3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5v
bmUKKworICAgICAgICAjIHNlbnQgcGFja2V0cyBhbmQgbG9zcworICAgICAgICBzZWxmLmFja19l
bGljaXRpbmdfaW5fZmxpZ2h0ID0gMAorICAgICAgICBzZWxmLmxhcmdlc3RfYWNrZWRfcGFja2V0
ID0gMAorICAgICAgICBzZWxmLmxvc3NfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAg
ICAgICBzZWxmLnNlbnRfcGFja2V0czogRGljdFtpbnQsIFF1aWNTZW50UGFja2V0XSA9IHt9CisK
KworY2xhc3MgUXVpY1BhY2tldFBhY2VyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25l
OgorICAgICAgICBzZWxmLmJ1Y2tldF9tYXg6IGZsb2F0ID0gMC4wCisgICAgICAgIHNlbGYuYnVj
a2V0X3RpbWU6IGZsb2F0ID0gMC4wCisgICAgICAgIHNlbGYuZXZhbHVhdGlvbl90aW1lOiBmbG9h
dCA9IDAuMAorICAgICAgICBzZWxmLnBhY2tldF90aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25l
CisKKyAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93OiBmbG9hdCkgLT4gZmxvYXQ6Cisg
ICAgICAgIGlmIHNlbGYucGFja2V0X3RpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
LnVwZGF0ZV9idWNrZXQobm93PW5vdykKKyAgICAgICAgICAgIGlmIHNlbGYuYnVja2V0X3RpbWUg
PD0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbm93ICsgc2VsZi5wYWNrZXRfdGltZQorICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHVwZGF0ZV9hZnRlcl9zZW5kKHNlbGYsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYucGFja2V0X3RpbWUgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBzZWxmLnVwZGF0ZV9idWNrZXQobm93PW5vdykKKyAgICAgICAgICAgIGlm
IHNlbGYuYnVja2V0X3RpbWUgPCBzZWxmLnBhY2tldF90aW1lOgorICAgICAgICAgICAgICAgIHNl
bGYuYnVja2V0X3RpbWUgPSAwLjAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5idWNrZXRfdGltZSAtPSBzZWxmLnBhY2tldF90aW1lCisKKyAgICBkZWYgdXBkYXRlX2J1
Y2tldChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBpZiBub3cgPiBzZWxmLmV2
YWx1YXRpb25fdGltZToKKyAgICAgICAgICAgIHNlbGYuYnVja2V0X3RpbWUgPSBtaW4oCisgICAg
ICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSArIChub3cgLSBzZWxmLmV2YWx1YXRpb25fdGlt
ZSksIHNlbGYuYnVja2V0X21heAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5ldmFs
dWF0aW9uX3RpbWUgPSBub3cKKworICAgIGRlZiB1cGRhdGVfcmF0ZShzZWxmLCBjb25nZXN0aW9u
X3dpbmRvdzogaW50LCBzbW9vdGhlZF9ydHQ6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBwYWNp
bmdfcmF0ZSA9IGNvbmdlc3Rpb25fd2luZG93IC8gbWF4KHNtb290aGVkX3J0dCwgS19NSUNST19T
RUNPTkQpCisgICAgICAgIHNlbGYucGFja2V0X3RpbWUgPSBtYXgoCisgICAgICAgICAgICBLX01J
Q1JPX1NFQ09ORCwgbWluKEtfTUFYX0RBVEFHUkFNX1NJWkUgLyBwYWNpbmdfcmF0ZSwgS19TRUNP
TkQpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmJ1Y2tldF9tYXggPSAoCisgICAgICAgICAg
ICBtYXgoCisgICAgICAgICAgICAgICAgMiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUsCisgICAgICAg
ICAgICAgICAgbWluKGNvbmdlc3Rpb25fd2luZG93IC8vIDQsIDE2ICogS19NQVhfREFUQUdSQU1f
U0laRSksCisgICAgICAgICAgICApCisgICAgICAgICAgICAvIHBhY2luZ19yYXRlCisgICAgICAg
ICkKKyAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA+IHNlbGYuYnVja2V0X21heDoKKyAgICAg
ICAgICAgIHNlbGYuYnVja2V0X3RpbWUgPSBzZWxmLmJ1Y2tldF9tYXgKKworCitjbGFzcyBRdWlj
Q29uZ2VzdGlvbkNvbnRyb2w6CisgICAgIiIiCisgICAgTmV3IFJlbm8gY29uZ2VzdGlvbiBjb250
cm9sLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ID0gMAorICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93
ID0gS19JTklUSUFMX1dJTkRPVworICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3JlY292ZXJ5X3N0
YXJ0X3RpbWUgPSAwLjAKKyAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9zdGFzaCA9IDAKKyAgICAg
ICAgc2VsZi5fcnR0X21vbml0b3IgPSBRdWljUnR0TW9uaXRvcigpCisgICAgICAgIHNlbGYuc3N0
aHJlc2g6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICBkZWYgb25fcGFja2V0X2Fja2VkKHNl
bGYsIHBhY2tldDogUXVpY1NlbnRQYWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNf
aW5fZmxpZ2h0IC09IHBhY2tldC5zZW50X2J5dGVzCisKKyAgICAgICAgIyBkb24ndCBpbmNyZWFz
ZSB3aW5kb3cgaW4gY29uZ2VzdGlvbiByZWNvdmVyeQorICAgICAgICBpZiBwYWNrZXQuc2VudF90
aW1lIDw9IHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRfdGltZToKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIGlmIHNlbGYuc3N0aHJlc2ggaXMgTm9uZSBvciBzZWxmLmNvbmdl
c3Rpb25fd2luZG93IDwgc2VsZi5zc3RocmVzaDoKKyAgICAgICAgICAgICMgc2xvdyBzdGFydAor
ICAgICAgICAgICAgc2VsZi5jb25nZXN0aW9uX3dpbmRvdyArPSBwYWNrZXQuc2VudF9ieXRlcwor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBjb25nZXN0aW9uIGF2b2lkYW5jZQorICAgICAg
ICAgICAgc2VsZi5fY29uZ2VzdGlvbl9zdGFzaCArPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAg
ICAgICAgY291bnQgPSBzZWxmLl9jb25nZXN0aW9uX3N0YXNoIC8vIHNlbGYuY29uZ2VzdGlvbl93
aW5kb3cKKyAgICAgICAgICAgIGlmIGNvdW50OgorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbmdl
c3Rpb25fc3Rhc2ggLT0gY291bnQgKiBzZWxmLmNvbmdlc3Rpb25fd2luZG93CisgICAgICAgICAg
ICAgICAgc2VsZi5jb25nZXN0aW9uX3dpbmRvdyArPSBjb3VudCAqIEtfTUFYX0RBVEFHUkFNX1NJ
WkUKKworICAgIGRlZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0
KSAtPiBOb25lOgorICAgICAgICBzZWxmLmJ5dGVzX2luX2ZsaWdodCArPSBwYWNrZXQuc2VudF9i
eXRlcworCisgICAgZGVmIG9uX3BhY2tldHNfZXhwaXJlZChzZWxmLCBwYWNrZXRzOiBJdGVyYWJs
ZVtRdWljU2VudFBhY2tldF0pIC0+IE5vbmU6CisgICAgICAgIGZvciBwYWNrZXQgaW4gcGFja2V0
czoKKyAgICAgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0IC09IHBhY2tldC5zZW50X2J5dGVz
CisKKyAgICBkZWYgb25fcGFja2V0c19sb3N0KHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1aWNT
ZW50UGFja2V0XSwgbm93OiBmbG9hdCkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9sYXJnZXN0X3Rp
bWUgPSAwLjAKKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKyAgICAgICAgICAgIGxvc3Rf
bGFyZ2VzdF90aW1lID0gcGFja2V0LnNlbnRfdGltZQorCisgICAgICAgICMgc3RhcnQgYSBuZXcg
Y29uZ2VzdGlvbiBldmVudCBpZiBwYWNrZXQgd2FzIHNlbnQgYWZ0ZXIgdGhlCisgICAgICAgICMg
c3RhcnQgb2YgdGhlIHByZXZpb3VzIGNvbmdlc3Rpb24gcmVjb3ZlcnkgcGVyaW9kLgorICAgICAg
ICBpZiBsb3N0X2xhcmdlc3RfdGltZSA+IHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRf
dGltZToKKyAgICAgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRfdGltZSA9
IG5vdworICAgICAgICAgICAgc2VsZi5jb25nZXN0aW9uX3dpbmRvdyA9IG1heCgKKyAgICAgICAg
ICAgICAgICBpbnQoc2VsZi5jb25nZXN0aW9uX3dpbmRvdyAqIEtfTE9TU19SRURVQ1RJT05fRkFD
VE9SKSwgS19NSU5JTVVNX1dJTkRPVworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5z
c3RocmVzaCA9IHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKworICAgICAgICAjIFRPRE8gOiBjb2xs
YXBzZSBjb25nZXN0aW9uIHdpbmRvdyBpZiBwZXJzaXN0ZW50IGNvbmdlc3Rpb24KKworICAgIGRl
ZiBvbl9ydHRfbWVhc3VyZW1lbnQoc2VsZiwgbGF0ZXN0X3J0dDogZmxvYXQsIG5vdzogZmxvYXQp
IC0+IE5vbmU6CisgICAgICAgICMgY2hlY2sgd2hldGhlciB3ZSBzaG91bGQgZXhpdCBzbG93IHN0
YXJ0CisgICAgICAgIGlmIHNlbGYuc3N0aHJlc2ggaXMgTm9uZSBhbmQgc2VsZi5fcnR0X21vbml0
b3IuaXNfcnR0X2luY3JlYXNpbmcoCisgICAgICAgICAgICBsYXRlc3RfcnR0LCBub3cKKyAgICAg
ICAgKToKKyAgICAgICAgICAgIHNlbGYuc3N0aHJlc2ggPSBzZWxmLmNvbmdlc3Rpb25fd2luZG93
CisKKworY2xhc3MgUXVpY1BhY2tldFJlY292ZXJ5OgorICAgICIiIgorICAgIFBhY2tldCBsb3Nz
IGFuZCBjb25nZXN0aW9uIGNvbnRyb2xsZXIuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o
CisgICAgICAgIHNlbGYsCisgICAgICAgIGlzX2NsaWVudF93aXRob3V0XzFydHQ6IGJvb2wsCisg
ICAgICAgIHNlbmRfcHJvYmU6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICAgICAgcXVpY19sb2dn
ZXI6IE9wdGlvbmFsW1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0ID0gaXNfY2xpZW50X3dpdGhvdXRfMXJ0
dAorICAgICAgICBzZWxmLm1heF9hY2tfZGVsYXkgPSAwLjAyNQorICAgICAgICBzZWxmLnNwYWNl
czogTGlzdFtRdWljUGFja2V0U3BhY2VdID0gW10KKworICAgICAgICAjIGNhbGxiYWNrcworICAg
ICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IHF1aWNfbG9nZ2VyCisgICAgICAgIHNlbGYuX3NlbmRf
cHJvYmUgPSBzZW5kX3Byb2JlCisKKyAgICAgICAgIyBsb3NzIGRldGVjdGlvbgorICAgICAgICBz
ZWxmLl9wdG9fY291bnQgPSAwCisgICAgICAgIHNlbGYuX3J0dF9pbml0aWFsaXplZCA9IEZhbHNl
CisgICAgICAgIHNlbGYuX3J0dF9sYXRlc3QgPSAwLjAKKyAgICAgICAgc2VsZi5fcnR0X21pbiA9
IG1hdGguaW5mCisgICAgICAgIHNlbGYuX3J0dF9zbW9vdGhlZCA9IDAuMAorICAgICAgICBzZWxm
Ll9ydHRfdmFyaWFuY2UgPSAwLjAKKyAgICAgICAgc2VsZi5fdGltZV9vZl9sYXN0X3NlbnRfYWNr
X2VsaWNpdGluZ19wYWNrZXQgPSAwLjAKKworICAgICAgICAjIGNvbmdlc3Rpb24gY29udHJvbAor
ICAgICAgICBzZWxmLl9jYyA9IFF1aWNDb25nZXN0aW9uQ29udHJvbCgpCisgICAgICAgIHNlbGYu
X3BhY2VyID0gUXVpY1BhY2tldFBhY2VyKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBieXRl
c19pbl9mbGlnaHQoc2VsZikgLT4gaW50OgorICAgICAgICByZXR1cm4gc2VsZi5fY2MuYnl0ZXNf
aW5fZmxpZ2h0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29uZ2VzdGlvbl93aW5kb3coc2Vs
ZikgLT4gaW50OgorICAgICAgICByZXR1cm4gc2VsZi5fY2MuY29uZ2VzdGlvbl93aW5kb3cKKwor
ICAgIGRlZiBkaXNjYXJkX3NwYWNlKHNlbGYsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UpIC0+IE5v
bmU6CisgICAgICAgIGFzc2VydCBzcGFjZSBpbiBzZWxmLnNwYWNlcworCisgICAgICAgIHNlbGYu
X2NjLm9uX3BhY2tldHNfZXhwaXJlZCgKKyAgICAgICAgICAgIGZpbHRlcihsYW1iZGEgeDogeC5p
bl9mbGlnaHQsIHNwYWNlLnNlbnRfcGFja2V0cy52YWx1ZXMoKSkKKyAgICAgICAgKQorICAgICAg
ICBzcGFjZS5zZW50X3BhY2tldHMuY2xlYXIoKQorCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5v
bmUKKyAgICAgICAgc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNw
YWNlLmxvc3NfdGltZSA9IE5vbmUKKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQoKQorCisgICAg
ZGVmIGdldF9lYXJsaWVzdF9sb3NzX3NwYWNlKHNlbGYpIC0+IE9wdGlvbmFsW1F1aWNQYWNrZXRT
cGFjZV06CisgICAgICAgIGxvc3Nfc3BhY2UgPSBOb25lCisgICAgICAgIGZvciBzcGFjZSBpbiBz
ZWxmLnNwYWNlczoKKyAgICAgICAgICAgIGlmIHNwYWNlLmxvc3NfdGltZSBpcyBub3QgTm9uZSBh
bmQgKAorICAgICAgICAgICAgICAgIGxvc3Nfc3BhY2UgaXMgTm9uZSBvciBzcGFjZS5sb3NzX3Rp
bWUgPCBsb3NzX3NwYWNlLmxvc3NfdGltZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAg
ICBsb3NzX3NwYWNlID0gc3BhY2UKKyAgICAgICAgcmV0dXJuIGxvc3Nfc3BhY2UKKworICAgIGRl
ZiBnZXRfbG9zc19kZXRlY3Rpb25fdGltZShzZWxmKSAtPiBmbG9hdDoKKyAgICAgICAgIyBsb3Nz
IHRpbWVyCisgICAgICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNl
KCkKKyAgICAgICAgaWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVy
biBsb3NzX3NwYWNlLmxvc3NfdGltZQorCisgICAgICAgICMgcGFja2V0IHRpbWVyCisgICAgICAg
IGlmICgKKyAgICAgICAgICAgIHNlbGYuaXNfY2xpZW50X3dpdGhvdXRfMXJ0dAorICAgICAgICAg
ICAgb3Igc3VtKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0IGZvciBzcGFjZSBpbiBzZWxm
LnNwYWNlcykgPiAwCisgICAgICAgICk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcnR0X2lu
aXRpYWxpemVkOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAyICogS19JTklUSUFMX1JUVCAq
ICgyICoqIHNlbGYuX3B0b19jb3VudCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgdGltZW91dCA9IHNlbGYuZ2V0X3Byb2JlX3RpbWVvdXQoKSAqICgyICoqIHNlbGYuX3B0b19j
b3VudCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tfZWxp
Y2l0aW5nX3BhY2tldCArIHRpbWVvdXQKKworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVm
IGdldF9wcm9iZV90aW1lb3V0KHNlbGYpIC0+IGZsb2F0OgorICAgICAgICByZXR1cm4gKAorICAg
ICAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkCisgICAgICAgICAgICArIG1heCg0ICogc2VsZi5f
cnR0X3ZhcmlhbmNlLCBLX0dSQU5VTEFSSVRZKQorICAgICAgICAgICAgKyBzZWxmLm1heF9hY2tf
ZGVsYXkKKyAgICAgICAgKQorCisgICAgZGVmIG9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgc2Vs
ZiwKKyAgICAgICAgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwKKyAgICAgICAgYWNrX3Jhbmdlc2V0
OiBSYW5nZVNldCwKKyAgICAgICAgYWNrX2RlbGF5OiBmbG9hdCwKKyAgICAgICAgbm93OiBmbG9h
dCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBVcGRhdGUgbWV0cmljcyBh
cyB0aGUgcmVzdWx0IG9mIGFuIEFDSyBiZWluZyByZWNlaXZlZC4KKyAgICAgICAgIiIiCisgICAg
ICAgIGlzX2Fja19lbGljaXRpbmcgPSBGYWxzZQorICAgICAgICBsYXJnZXN0X2Fja2VkID0gYWNr
X3Jhbmdlc2V0LmJvdW5kcygpLnN0b3AgLSAxCisgICAgICAgIGxhcmdlc3RfbmV3bHlfYWNrZWQg
PSBOb25lCisgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gTm9uZQorCisgICAgICAgIGlmIGxh
cmdlc3RfYWNrZWQgPiBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldDoKKyAgICAgICAgICAgIHNw
YWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0ID0gbGFyZ2VzdF9hY2tlZAorCisgICAgICAgIGZvciBw
YWNrZXRfbnVtYmVyIGluIHNvcnRlZChzcGFjZS5zZW50X3BhY2tldHMua2V5cygpKToKKyAgICAg
ICAgICAgIGlmIHBhY2tldF9udW1iZXIgPiBsYXJnZXN0X2Fja2VkOgorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyIGluIGFja19yYW5nZXNldDoKKyAg
ICAgICAgICAgICAgICAjIHJlbW92ZSBwYWNrZXQgYW5kIHVwZGF0ZSBjb3VudGVycworICAgICAg
ICAgICAgICAgIHBhY2tldCA9IHNwYWNlLnNlbnRfcGFja2V0cy5wb3AocGFja2V0X251bWJlcikK
KyAgICAgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAg
ICAgICAgICAgaXNfYWNrX2VsaWNpdGluZyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc3Bh
Y2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorICAgICAgICAgICAgICAgIGlmIHBhY2tl
dC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NjLm9uX3BhY2tldF9hY2tl
ZChwYWNrZXQpCisgICAgICAgICAgICAgICAgbGFyZ2VzdF9uZXdseV9hY2tlZCA9IHBhY2tldF9u
dW1iZXIKKyAgICAgICAgICAgICAgICBsYXJnZXN0X3NlbnRfdGltZSA9IHBhY2tldC5zZW50X3Rp
bWUKKworICAgICAgICAgICAgICAgICMgdHJpZ2dlciBjYWxsYmFja3MKKyAgICAgICAgICAgICAg
ICBmb3IgaGFuZGxlciwgYXJncyBpbiBwYWNrZXQuZGVsaXZlcnlfaGFuZGxlcnM6CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsICphcmdzKQorCisg
ICAgICAgICMgbm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gbmV3bHkgYWNrZWQgcGFja2V0
cworICAgICAgICBpZiBsYXJnZXN0X25ld2x5X2Fja2VkIGlzIE5vbmU6CisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICBpZiBsYXJnZXN0X2Fja2VkID09IGxhcmdlc3RfbmV3bHlfYWNrZWQg
YW5kIGlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICBsYXRlc3RfcnR0ID0gbm93IC0gbGFy
Z2VzdF9zZW50X3RpbWUKKyAgICAgICAgICAgIGxvZ19ydHQgPSBUcnVlCisKKyAgICAgICAgICAg
ICMgbGltaXQgQUNLIGRlbGF5IHRvIG1heF9hY2tfZGVsYXkKKyAgICAgICAgICAgIGFja19kZWxh
eSA9IG1pbihhY2tfZGVsYXksIHNlbGYubWF4X2Fja19kZWxheSkKKworICAgICAgICAgICAgIyB1
cGRhdGUgUlRUIGVzdGltYXRlLCB3aGljaCBjYW5ub3QgYmUgPCAxIG1zCisgICAgICAgICAgICBz
ZWxmLl9ydHRfbGF0ZXN0ID0gbWF4KGxhdGVzdF9ydHQsIDAuMDAxKQorICAgICAgICAgICAgaWYg
c2VsZi5fcnR0X2xhdGVzdCA8IHNlbGYuX3J0dF9taW46CisgICAgICAgICAgICAgICAgc2VsZi5f
cnR0X21pbiA9IHNlbGYuX3J0dF9sYXRlc3QKKyAgICAgICAgICAgIGlmIHNlbGYuX3J0dF9sYXRl
c3QgPiBzZWxmLl9ydHRfbWluICsgYWNrX2RlbGF5OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0
dF9sYXRlc3QgLT0gYWNrX2RlbGF5CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ydHRfaW5p
dGlhbGl6ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVkID0gVHJ1ZQor
ICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IGxhdGVzdF9ydHQgLyAyCisgICAg
ICAgICAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gbGF0ZXN0X3J0dAorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfdmFyaWFuY2UgPSAzIC8gNCAqIHNlbGYu
X3J0dF92YXJpYW5jZSArIDEgLyA0ICogYWJzKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
dHRfbWluIC0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSAoCisgICAgICAgICAgICAgICAgICAgIDcgLyA4ICog
c2VsZi5fcnR0X3Ntb290aGVkICsgMSAvIDggKiBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIGluZm9ybSBjb25nZXN0aW9uIGNvbnRyb2xsZXIKKyAg
ICAgICAgICAgIHNlbGYuX2NjLm9uX3J0dF9tZWFzdXJlbWVudChsYXRlc3RfcnR0LCBub3c9bm93
KQorICAgICAgICAgICAgc2VsZi5fcGFjZXIudXBkYXRlX3JhdGUoCisgICAgICAgICAgICAgICAg
Y29uZ2VzdGlvbl93aW5kb3c9c2VsZi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgICAg
ICAgICAgc21vb3RoZWRfcnR0PXNlbGYuX3J0dF9zbW9vdGhlZCwKKyAgICAgICAgICAgICkKKwor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nX3J0dCA9IEZhbHNlCisKKyAgICAgICAgc2Vs
Zi5fZGV0ZWN0X2xvc3Moc3BhY2UsIG5vdz1ub3cpCisKKyAgICAgICAgaWYgc2VsZi5fcXVpY19s
b2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVk
KGxvZ19ydHQ9bG9nX3J0dCkKKworICAgICAgICBzZWxmLl9wdG9fY291bnQgPSAwCisKKyAgICBk
ZWYgb25fbG9zc19kZXRlY3Rpb25fdGltZW91dChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgor
ICAgICAgICBsb3NzX3NwYWNlID0gc2VsZi5nZXRfZWFybGllc3RfbG9zc19zcGFjZSgpCisgICAg
ICAgIGlmIGxvc3Nfc3BhY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kZXRlY3Rf
bG9zcyhsb3NzX3NwYWNlLCBub3c9bm93KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs
Zi5fcHRvX2NvdW50ICs9IDEKKworICAgICAgICAgICAgIyByZXNjaGVkdWxlIHNvbWUgZGF0YQor
ICAgICAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYuc3BhY2VzOgorICAgICAgICAgICAgICAgIHNl
bGYuX29uX3BhY2tldHNfbG9zdCgKKyAgICAgICAgICAgICAgICAgICAgdHVwbGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmaWx0ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFt
YmRhIGk6IGkuaXNfY3J5cHRvX3BhY2tldCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpCisg
ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICBub3c9bm93LAor
ICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9wcm9iZSgpCisKKyAg
ICBkZWYgb25fcGFja2V0X3NlbnQoc2VsZiwgcGFja2V0OiBRdWljU2VudFBhY2tldCwgc3BhY2U6
IFF1aWNQYWNrZXRTcGFjZSkgLT4gTm9uZToKKyAgICAgICAgc3BhY2Uuc2VudF9wYWNrZXRzW3Bh
Y2tldC5wYWNrZXRfbnVtYmVyXSA9IHBhY2tldAorCisgICAgICAgIGlmIHBhY2tldC5pc19hY2tf
ZWxpY2l0aW5nOgorICAgICAgICAgICAgc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgKz0g
MQorICAgICAgICBpZiBwYWNrZXQuaW5fZmxpZ2h0OgorICAgICAgICAgICAgaWYgcGFja2V0Lmlz
X2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAgc2VsZi5fdGltZV9vZl9sYXN0X3NlbnRf
YWNrX2VsaWNpdGluZ19wYWNrZXQgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgICAgICMg
YWRkIHBhY2tldCB0byBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIHNlbGYuX2NjLm9uX3Bh
Y2tldF9zZW50KHBhY2tldCkKKworICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisK
KyAgICBkZWYgX2RldGVjdF9sb3NzKHNlbGYsIHNwYWNlOiBRdWljUGFja2V0U3BhY2UsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB3aGV0aGVyIGFueSBw
YWNrZXRzIHNob3VsZCBiZSBkZWNsYXJlZCBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgbG9z
c19kZWxheSA9IEtfVElNRV9USFJFU0hPTEQgKiAoCisgICAgICAgICAgICBtYXgoc2VsZi5fcnR0
X2xhdGVzdCwgc2VsZi5fcnR0X3Ntb290aGVkKQorICAgICAgICAgICAgaWYgc2VsZi5fcnR0X2lu
aXRpYWxpemVkCisgICAgICAgICAgICBlbHNlIEtfSU5JVElBTF9SVFQKKyAgICAgICAgKQorICAg
ICAgICBwYWNrZXRfdGhyZXNob2xkID0gc3BhY2UubGFyZ2VzdF9hY2tlZF9wYWNrZXQgLSBLX1BB
Q0tFVF9USFJFU0hPTEQKKyAgICAgICAgdGltZV90aHJlc2hvbGQgPSBub3cgLSBsb3NzX2RlbGF5
CisKKyAgICAgICAgbG9zdF9wYWNrZXRzID0gW10KKyAgICAgICAgc3BhY2UubG9zc190aW1lID0g
Tm9uZQorICAgICAgICBmb3IgcGFja2V0X251bWJlciwgcGFja2V0IGluIHNwYWNlLnNlbnRfcGFj
a2V0cy5pdGVtcygpOgorICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdl
c3RfYWNrZWRfcGFja2V0OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGlm
IHBhY2tldF9udW1iZXIgPD0gcGFja2V0X3RocmVzaG9sZCBvciBwYWNrZXQuc2VudF90aW1lIDw9
IHRpbWVfdGhyZXNob2xkOgorICAgICAgICAgICAgICAgIGxvc3RfcGFja2V0cy5hcHBlbmQocGFj
a2V0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYWNrZXRfbG9zc190aW1l
ID0gcGFja2V0LnNlbnRfdGltZSArIGxvc3NfZGVsYXkKKyAgICAgICAgICAgICAgICBpZiBzcGFj
ZS5sb3NzX3RpbWUgaXMgTm9uZSBvciBzcGFjZS5sb3NzX3RpbWUgPiBwYWNrZXRfbG9zc190aW1l
OgorICAgICAgICAgICAgICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBwYWNrZXRfbG9zc190aW1l
CisKKyAgICAgICAgc2VsZi5fb25fcGFja2V0c19sb3N0KGxvc3RfcGFja2V0cywgc3BhY2U9c3Bh
Y2UsIG5vdz1ub3cpCisKKyAgICBkZWYgX2xvZ19tZXRyaWNzX3VwZGF0ZWQoc2VsZiwgbG9nX3J0
dD1GYWxzZSkgLT4gTm9uZToKKyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICJieXRlc19p
bl9mbGlnaHQiOiBzZWxmLl9jYy5ieXRlc19pbl9mbGlnaHQsCisgICAgICAgICAgICAiY3duZCI6
IHNlbGYuX2NjLmNvbmdlc3Rpb25fd2luZG93LAorICAgICAgICB9CisgICAgICAgIGlmIHNlbGYu
X2NjLnNzdGhyZXNoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGF0YVsic3N0aHJlc2giXSA9
IHNlbGYuX2NjLnNzdGhyZXNoCisKKyAgICAgICAgaWYgbG9nX3J0dDoKKyAgICAgICAgICAgIGRh
dGEudXBkYXRlKAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxhdGVz
dF9ydHQiOiBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfdGltZShzZWxmLl9ydHRfbGF0ZXN0KSwK
KyAgICAgICAgICAgICAgICAgICAgIm1pbl9ydHQiOiBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVf
dGltZShzZWxmLl9ydHRfbWluKSwKKyAgICAgICAgICAgICAgICAgICAgInNtb290aGVkX3J0dCI6
IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9zbW9vdGhlZCksCisgICAg
ICAgICAgICAgICAgICAgICJydHRfdmFyaWFuY2UiOiBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVf
dGltZShzZWxmLl9ydHRfdmFyaWFuY2UpLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICkKKworICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICBj
YXRlZ29yeT0icmVjb3ZlcnkiLCBldmVudD0ibWV0cmljc191cGRhdGVkIiwgZGF0YT1kYXRhCisg
ICAgICAgICkKKworICAgIGRlZiBfb25fcGFja2V0c19sb3N0KAorICAgICAgICBzZWxmLCBwYWNr
ZXRzOiBJdGVyYWJsZVtRdWljU2VudFBhY2tldF0sIHNwYWNlOiBRdWljUGFja2V0U3BhY2UsIG5v
dzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGxvc3RfcGFja2V0c19jYyA9IFtdCisg
ICAgICAgIGZvciBwYWNrZXQgaW4gcGFja2V0czoKKyAgICAgICAgICAgIGRlbCBzcGFjZS5zZW50
X3BhY2tldHNbcGFja2V0LnBhY2tldF9udW1iZXJdCisKKyAgICAgICAgICAgIGlmIHBhY2tldC5p
bl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzX2NjLmFwcGVuZChwYWNrZXQp
CisKKyAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAg
ICAgIHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0IC09IDEKKworICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVp
Y19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0icmVjb3Zl
cnkiLAorICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X2xvc3QiLAorICAgICAgICAg
ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogc2VsZi5f
cXVpY19sb2dnZXIucGFja2V0X3R5cGUocGFja2V0LnBhY2tldF90eXBlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldC5wYWNrZXRfbnVtYmVyKSwK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisKKyAgICAgICAgICAgICMgdHJpZ2dlciBj
YWxsYmFja3MKKyAgICAgICAgICAgIGZvciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVy
eV9oYW5kbGVyczoKKyAgICAgICAgICAgICAgICBoYW5kbGVyKFF1aWNEZWxpdmVyeVN0YXRlLkxP
U1QsICphcmdzKQorCisgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJvbGxlcgorICAg
ICAgICBpZiBsb3N0X3BhY2tldHNfY2M6CisgICAgICAgICAgICBzZWxmLl9jYy5vbl9wYWNrZXRz
X2xvc3QobG9zdF9wYWNrZXRzX2NjLCBub3c9bm93KQorICAgICAgICAgICAgc2VsZi5fcGFjZXIu
dXBkYXRlX3JhdGUoCisgICAgICAgICAgICAgICAgY29uZ2VzdGlvbl93aW5kb3c9c2VsZi5fY2Mu
Y29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgICAgICAgICAgc21vb3RoZWRfcnR0PXNlbGYuX3J0
dF9zbW9vdGhlZCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0
ZWQoKQorCisKK2NsYXNzIFF1aWNSdHRNb25pdG9yOgorICAgICIiIgorICAgIFJvdW5kdHJpcCB0
aW1lIG1vbml0b3IgZm9yIEh5U3RhcnQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5faW5jcmVhc2VzID0gMAorICAgICAgICBzZWxmLl9s
YXN0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYuX3JlYWR5ID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fc2l6ZSA9IDUKKworICAgICAgICBzZWxmLl9maWx0ZXJlZF9taW46IE9wdGlvbmFsW2Zsb2F0
XSA9IE5vbmUKKworICAgICAgICBzZWxmLl9zYW1wbGVfaWR4ID0gMAorICAgICAgICBzZWxmLl9z
YW1wbGVfbWF4OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX3NhbXBsZV9t
aW46IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSAw
LjAKKyAgICAgICAgc2VsZi5fc2FtcGxlcyA9IFswLjAgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5fc2l6
ZSldCisKKyAgICBkZWYgYWRkX3J0dChzZWxmLCBydHQ6IGZsb2F0KSAtPiBOb25lOgorICAgICAg
ICBzZWxmLl9zYW1wbGVzW3NlbGYuX3NhbXBsZV9pZHhdID0gcnR0CisgICAgICAgIHNlbGYuX3Nh
bXBsZV9pZHggKz0gMQorCisgICAgICAgIGlmIHNlbGYuX3NhbXBsZV9pZHggPj0gc2VsZi5fc2l6
ZToKKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAgICAgICBzZWxmLl9y
ZWFkeSA9IFRydWUKKworICAgICAgICBpZiBzZWxmLl9yZWFkeToKKyAgICAgICAgICAgIHNlbGYu
X3NhbXBsZV9tYXggPSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBzZWxmLl9zYW1wbGVf
bWluID0gc2VsZi5fc2FtcGxlc1swXQorICAgICAgICAgICAgZm9yIHNhbXBsZSBpbiBzZWxmLl9z
YW1wbGVzWzE6XToKKyAgICAgICAgICAgICAgICBpZiBzYW1wbGUgPCBzZWxmLl9zYW1wbGVfbWlu
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zYW1wbGVfbWluID0gc2FtcGxlCisgICAgICAg
ICAgICAgICAgZWxpZiBzYW1wbGUgPiBzZWxmLl9zYW1wbGVfbWF4OgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zYW1wbGVfbWF4ID0gc2FtcGxlCisKKyAgICBkZWYgaXNfcnR0X2luY3JlYXNp
bmcoc2VsZiwgcnR0OiBmbG9hdCwgbm93OiBmbG9hdCkgLT4gYm9vbDoKKyAgICAgICAgaWYgbm93
ID4gc2VsZi5fc2FtcGxlX3RpbWUgKyBLX0dSQU5VTEFSSVRZOgorICAgICAgICAgICAgc2VsZi5h
ZGRfcnR0KHJ0dCkKKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV90aW1lID0gbm93CisKKyAgICAg
ICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbHRlcmVk
X21pbiBpcyBOb25lIG9yIHNlbGYuX2ZpbHRlcmVkX21pbiA+IHNlbGYuX3NhbXBsZV9tYXg6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbiA9IHNlbGYuX3NhbXBsZV9tYXgK
KworICAgICAgICAgICAgICAgIGRlbHRhID0gc2VsZi5fc2FtcGxlX21pbiAtIHNlbGYuX2ZpbHRl
cmVkX21pbgorICAgICAgICAgICAgICAgIGlmIGRlbHRhICogNCA+PSBzZWxmLl9maWx0ZXJlZF9t
aW46CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luY3JlYXNlcyArPSAxCisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2luY3JlYXNlcyA+PSBzZWxmLl9zaXplOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGRlbHRhID4gMDoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzID0gMAorICAgICAgICByZXR1cm4g
RmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1
YzNhNWM1NWM5YTM5NTg5Mzk4Yzk3Y2VlOTY1YzJiMzcwNjY1NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5CkBAIC0wLDAgKzEsMzkgQEAK
K2ltcG9ydCBpcGFkZHJlc3MKKworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LmJhY2tlbmRzIGlt
cG9ydCBkZWZhdWx0X2JhY2tlbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVz
IGltcG9ydCBoYXNoZXMKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1t
ZXRyaWMgaW1wb3J0IHBhZGRpbmcsIHJzYQorCitmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBOZXR3
b3JrQWRkcmVzcworCisKK2RlZiBlbmNvZGVfYWRkcmVzcyhhZGRyOiBOZXR3b3JrQWRkcmVzcykg
LT4gYnl0ZXM6CisgICAgcmV0dXJuIGlwYWRkcmVzcy5pcF9hZGRyZXNzKGFkZHJbMF0pLnBhY2tl
ZCArIGJ5dGVzKFthZGRyWzFdID4+IDgsIGFkZHJbMV0gJiAweEZGXSkKKworCitjbGFzcyBRdWlj
UmV0cnlUb2tlbkhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAg
ICAgIHNlbGYuX2tleSA9IHJzYS5nZW5lcmF0ZV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgIHB1
YmxpY19leHBvbmVudD02NTUzNywga2V5X3NpemU9MTAyNCwgYmFja2VuZD1kZWZhdWx0X2JhY2tl
bmQoKQorICAgICAgICApCisKKyAgICBkZWYgY3JlYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdv
cmtBZGRyZXNzLCBkZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0
cnlfbWVzc2FnZSA9IGVuY29kZV9hZGRyZXNzKGFkZHIpICsgYiJ8IiArIGRlc3RpbmF0aW9uX2Np
ZAorICAgICAgICByZXR1cm4gc2VsZi5fa2V5LnB1YmxpY19rZXkoKS5lbmNyeXB0KAorICAgICAg
ICAgICAgcmV0cnlfbWVzc2FnZSwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgKKyAgICAgICAg
ICAgICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29yaXRobT1oYXNo
ZXMuU0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
IGRlZiB2YWxpZGF0ZV90b2tlbihzZWxmLCBhZGRyOiBOZXR3b3JrQWRkcmVzcywgdG9rZW46IGJ5
dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0cnlfbWVzc2FnZSA9IHNlbGYuX2tleS5kZWNyeXB0
KAorICAgICAgICAgICAgdG9rZW4sCisgICAgICAgICAgICBwYWRkaW5nLk9BRVAoCisgICAgICAg
ICAgICAgICAgbWdmPXBhZGRpbmcuTUdGMShoYXNoZXMuU0hBMjU2KCkpLCBhbGdvcml0aG09aGFz
aGVzLlNIQTI1NigpLCBsYWJlbD1Ob25lCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAg
ICAgIGVuY29kZWRfYWRkciwgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHJldHJ5X21lc3NhZ2Uu
c3BsaXQoYiJ8IiwgbWF4c3BsaXQ9MSkKKyAgICAgICAgaWYgZW5jb2RlZF9hZGRyICE9IGVuY29k
ZV9hZGRyZXNzKGFkZHIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUmVtb3RlIGFk
ZHJlc3MgZG9lcyBub3QgbWF0Y2guIikKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX2Nvbm5lY3Rp
b25faWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3N0cmVhbS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3N0cmVhbS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NjIzNjg2ZjVkNmJjZDZmOTBiNGU1M2YzNzE0ZjNiZjliNmY2MTY3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CkBAIC0wLDAgKzEsMjE0
IEBACitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworZnJvbSAuIGltcG9ydCBldmVudHMK
K2Zyb20gLnBhY2tldCBpbXBvcnQgUXVpY1N0cmVhbUZyYW1lCitmcm9tIC5wYWNrZXRfYnVpbGRl
ciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUKK2Zyb20gLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNl
dAorCisKK2NsYXNzIFF1aWNTdHJlYW06CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxm
LAorICAgICAgICBzdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBtYXhf
c3RyZWFtX2RhdGFfbG9jYWw6IGludCA9IDAsCisgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1v
dGU6IGludCA9IDAsCisgICAgKSAtPiBOb25lOgorICAgICAgICBzZWxmLmlzX2Jsb2NrZWQgPSBG
YWxzZQorICAgICAgICBzZWxmLm1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IG1heF9zdHJlYW1fZGF0
YV9sb2NhbAorICAgICAgICBzZWxmLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ID0gbWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUKKyAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0eSA9
IFRydWUKKworICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlciA9IGJ5dGVhcnJheSgpCisgICAgICAg
IHNlbGYuX3JlY3ZfYnVmZmVyX2ZpbjogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfc3RhcnQgPSAwICAjIHRoZSBvZmZzZXQgZm9yIHRoZSBzdGFydCBvZiB0
aGUgYnVmZmVyCisgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IDAgICMgdGhlIGhpZ2hlc3Qg
b2Zmc2V0IGV2ZXIgc2VlbgorICAgICAgICBzZWxmLl9yZWN2X3JhbmdlcyA9IFJhbmdlU2V0KCkK
KworICAgICAgICBzZWxmLl9zZW5kX2Fja2VkID0gUmFuZ2VTZXQoKQorICAgICAgICBzZWxmLl9z
ZW5kX2J1ZmZlciA9IGJ5dGVhcnJheSgpCisgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX2Zpbjog
T3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgPSAw
ICAjIHRoZSBvZmZzZXQgZm9yIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyCisgICAgICAgIHNlbGYu
X3NlbmRfYnVmZmVyX3N0b3AgPSAwICAjIHRoZSBvZmZzZXQgZm9yIHRoZSBzdG9wIG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgc2VsZi5fc2VuZF9oaWdoZXN0ID0gMAorICAgICAgICBzZWxmLl9zZW5k
X3BlbmRpbmcgPSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBG
YWxzZQorCisgICAgICAgIHNlbGYuX19zdHJlYW1faWQgPSBzdHJlYW1faWQKKworICAgIEBwcm9w
ZXJ0eQorICAgIGRlZiBzdHJlYW1faWQoc2VsZikgLT4gT3B0aW9uYWxbaW50XToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX19zdHJlYW1faWQKKworICAgICMgcmVhZGVyCisKKyAgICBkZWYgYWRkX2Zy
YW1lKHNlbGYsIGZyYW1lOiBRdWljU3RyZWFtRnJhbWUpIC0+IE9wdGlvbmFsW2V2ZW50cy5TdHJl
YW1EYXRhUmVjZWl2ZWRdOgorICAgICAgICAiIiIKKyAgICAgICAgQWRkIGEgZnJhbWUgb2YgcmVj
ZWl2ZWQgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIHBvcyA9IGZyYW1lLm9mZnNldCAtIHNl
bGYuX3JlY3ZfYnVmZmVyX3N0YXJ0CisgICAgICAgIGNvdW50ID0gbGVuKGZyYW1lLmRhdGEpCisg
ICAgICAgIGZyYW1lX2VuZCA9IGZyYW1lLm9mZnNldCArIGNvdW50CisKKyAgICAgICAgIyB3ZSBz
aG91bGQgcmVjZWl2ZSBubyBtb3JlIGRhdGEgYmV5b25kIEZJTiEKKyAgICAgICAgaWYgc2VsZi5f
cmVjdl9idWZmZXJfZmluIGlzIG5vdCBOb25lIGFuZCBmcmFtZV9lbmQgPiBzZWxmLl9yZWN2X2J1
ZmZlcl9maW46CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkRhdGEgcmVjZWl2ZWQgYmV5
b25kIEZJTiIpCisgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgIHNlbGYuX3JlY3Zf
YnVmZmVyX2ZpbiA9IGZyYW1lX2VuZAorICAgICAgICBpZiBmcmFtZV9lbmQgPiBzZWxmLl9yZWN2
X2hpZ2hlc3Q6CisgICAgICAgICAgICBzZWxmLl9yZWN2X2hpZ2hlc3QgPSBmcmFtZV9lbmQKKwor
ICAgICAgICAjIGZhc3QgcGF0aDogbmV3IGluLW9yZGVyIGNodW5rCisgICAgICAgIGlmIHBvcyA9
PSAwIGFuZCBjb3VudCBhbmQgbm90IHNlbGYuX3JlY3ZfYnVmZmVyOgorICAgICAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfc3RhcnQgKz0gY291bnQKKyAgICAgICAgICAgIHJldHVybiBldmVudHMu
U3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIGRhdGE9ZnJhbWUuZGF0YSwgZW5k
X3N0cmVhbT1mcmFtZS5maW4sIHN0cmVhbV9pZD1zZWxmLl9fc3RyZWFtX2lkCisgICAgICAgICAg
ICApCisKKyAgICAgICAgIyBkaXNjYXJkIGR1cGxpY2F0ZSBkYXRhCisgICAgICAgIGlmIHBvcyA8
IDA6CisgICAgICAgICAgICBmcmFtZS5kYXRhID0gZnJhbWUuZGF0YVstcG9zOl0KKyAgICAgICAg
ICAgIGZyYW1lLm9mZnNldCAtPSBwb3MKKyAgICAgICAgICAgIHBvcyA9IDAKKworICAgICAgICAj
IG1hcmtlZCByZWNlaXZlZCByYW5nZQorICAgICAgICBpZiBmcmFtZV9lbmQgPiBmcmFtZS5vZmZz
ZXQ6CisgICAgICAgICAgICBzZWxmLl9yZWN2X3Jhbmdlcy5hZGQoZnJhbWUub2Zmc2V0LCBmcmFt
ZV9lbmQpCisKKyAgICAgICAgIyBhZGQgbmV3IGRhdGEKKyAgICAgICAgZ2FwID0gcG9zIC0gbGVu
KHNlbGYuX3JlY3ZfYnVmZmVyKQorICAgICAgICBpZiBnYXAgPiAwOgorICAgICAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXIgKz0gYnl0ZWFycmF5KGdhcCkKKyAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXJbcG9zIDogcG9zICsgY291bnRdID0gZnJhbWUuZGF0YQorCisgICAgICAgICMgcmV0dXJuIGRh
dGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICBkYXRhID0gc2VsZi5fcHVs
bF9kYXRhKCkKKyAgICAgICAgZW5kX3N0cmVhbSA9IHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ID09
IHNlbGYuX3JlY3ZfYnVmZmVyX2ZpbgorICAgICAgICBpZiBkYXRhIG9yIGVuZF9zdHJlYW06Cisg
ICAgICAgICAgICByZXR1cm4gZXZlbnRzLlN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSwgc3RyZWFtX2lkPXNlbGYuX19z
dHJlYW1faWQKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgX3B1bGxfZGF0YShzZWxmKSAtPiBieXRlczoKKyAgICAgICAgIiIi
CisgICAgICAgIFJlbW92ZSBkYXRhIGZyb20gdGhlIGZyb250IG9mIHRoZSBidWZmZXIuCisgICAg
ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYXNfZGF0YV90b19yZWFkID0gc2Vs
Zi5fcmVjdl9yYW5nZXNbMF0uc3RhcnQgPT0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQKKyAgICAg
ICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBoYXNfZGF0YV90b19yZWFkID0gRmFs
c2UKKyAgICAgICAgaWYgbm90IGhhc19kYXRhX3RvX3JlYWQ6CisgICAgICAgICAgICByZXR1cm4g
YiIiCisKKyAgICAgICAgciA9IHNlbGYuX3JlY3ZfcmFuZ2VzLnNoaWZ0KCkKKyAgICAgICAgcG9z
ID0gci5zdG9wIC0gci5zdGFydAorICAgICAgICBkYXRhID0gYnl0ZXMoc2VsZi5fcmVjdl9idWZm
ZXJbOnBvc10pCisgICAgICAgIGRlbCBzZWxmLl9yZWN2X2J1ZmZlcls6cG9zXQorICAgICAgICBz
ZWxmLl9yZWN2X2J1ZmZlcl9zdGFydCA9IHIuc3RvcAorICAgICAgICByZXR1cm4gZGF0YQorCisg
ICAgIyB3cml0ZXIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuZXh0X3NlbmRfb2Zmc2V0KHNl
bGYpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBvZmZzZXQgZm9yIHRoZSBuZXh0
IGZyYW1lIHRvIHNlbmQuCisKKyAgICAgICAgVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUg
c3BhY2UgbmVlZGVkIGZvciB0aGUgZnJhbWUncyBgb2Zmc2V0YCBmaWVsZC4KKyAgICAgICAgIiIi
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW5kX3BlbmRpbmdbMF0u
c3RhcnQKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fc2VuZF9idWZmZXJfc3RvcAorCisgICAgZGVmIGdldF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
bWF4X3NpemU6IGludCwgbWF4X29mZnNldDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICApIC0+
IE9wdGlvbmFsW1F1aWNTdHJlYW1GcmFtZV06CisgICAgICAgICIiIgorICAgICAgICBHZXQgYSBm
cmFtZSBvZiBkYXRhIHRvIHNlbmQuCisgICAgICAgICIiIgorICAgICAgICAjIGdldCB0aGUgZmly
c3QgcGVuZGluZyBkYXRhIHJhbmdlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHIgPSBzZWxm
Ll9zZW5kX3BlbmRpbmdbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAg
ICBpZiBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mOgorICAgICAgICAgICAgICAgICMgRklOIG9ubHkK
KyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gRmFsc2UKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUXVpY1N0cmVhbUZyYW1lKGZpbj1UcnVlLCBvZmZzZXQ9c2VsZi5fc2Vu
ZF9idWZmZXJfZmluKQorCisgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0g
VHJ1ZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGFwcGx5IGZsb3cgY29u
dHJvbAorICAgICAgICBzdGFydCA9IHIuc3RhcnQKKyAgICAgICAgc3RvcCA9IG1pbihyLnN0b3As
IHN0YXJ0ICsgbWF4X3NpemUpCisgICAgICAgIGlmIG1heF9vZmZzZXQgaXMgbm90IE5vbmUgYW5k
IHN0b3AgPiBtYXhfb2Zmc2V0OgorICAgICAgICAgICAgc3RvcCA9IG1heF9vZmZzZXQKKyAgICAg
ICAgaWYgc3RvcCA8PSBzdGFydDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
IyBjcmVhdGUgZnJhbWUKKyAgICAgICAgZnJhbWUgPSBRdWljU3RyZWFtRnJhbWUoCisgICAgICAg
ICAgICBkYXRhPWJ5dGVzKAorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyWworICAg
ICAgICAgICAgICAgICAgICBzdGFydCAtIHNlbGYuX3NlbmRfYnVmZmVyX3N0YXJ0IDogc3RvcCAt
IHNlbGYuX3NlbmRfYnVmZmVyX3N0YXJ0CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIG9mZnNldD1zdGFydCwKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9z
ZW5kX3BlbmRpbmcuc3VidHJhY3Qoc3RhcnQsIHN0b3ApCisKKyAgICAgICAgIyB0cmFjayB0aGUg
aGlnaGVzdCBvZmZzZXQgZXZlciBzZW50CisgICAgICAgIGlmIHN0b3AgPiBzZWxmLl9zZW5kX2hp
Z2hlc3Q6CisgICAgICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSBzdG9wCisKKyAgICAgICAg
IyBpZiB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCBFT0Ygd2FzIHdyaXR0ZW4sIHNldCB0aGUgRklO
IGJpdAorICAgICAgICBpZiBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gPT0gc3RvcDoKKyAgICAgICAg
ICAgIGZyYW1lLmZpbiA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2Yg
PSBGYWxzZQorCisgICAgICAgIHJldHVybiBmcmFtZQorCisgICAgZGVmIG9uX2RhdGFfZGVsaXZl
cnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwgc3RhcnQ6IGlu
dCwgc3RvcDogaW50CisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJh
Y2sgd2hlbiBzZW50IGRhdGEgaXMgQUNLJ2QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnNl
bmRfYnVmZmVyX2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgaWYgZGVsaXZlcnkgPT0gUXVpY0Rl
bGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBpZiBzdG9wID4gc3RhcnQ6CisgICAgICAg
ICAgICAgICAgc2VsZi5fc2VuZF9hY2tlZC5hZGQoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICAg
ICAgZmlyc3RfcmFuZ2UgPSBzZWxmLl9zZW5kX2Fja2VkWzBdCisgICAgICAgICAgICAgICAgaWYg
Zmlyc3RfcmFuZ2Uuc3RhcnQgPT0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQ6CisgICAgICAgICAg
ICAgICAgICAgIHNpemUgPSBmaXJzdF9yYW5nZS5zdG9wIC0gZmlyc3RfcmFuZ2Uuc3RhcnQKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9hY2tlZC5zaGlmdCgpCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0YXJ0ICs9IHNpemUKKyAgICAgICAgICAgICAgICAg
ICAgZGVsIHNlbGYuX3NlbmRfYnVmZmVyWzpzaXplXQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgaWYgc3RvcCA+IHN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZy5h
ZGQoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICBpZiBzdG9wID09IHNlbGYuX3NlbmRfYnVmZmVy
X2ZpbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2VtcHR5ID0gRmFsc2UKKyAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gVHJ1ZQorCisgICAgZGVmIHdy
aXRlKHNlbGYsIGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sID0gRmFsc2UpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBzb21lIGRhdGEgYnl0ZXMgdG8gdGhlIFFVSUMg
c3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3NlbmRfYnVmZmVyX2Zp
biBpcyBOb25lLCAiY2Fubm90IGNhbGwgd3JpdGUoKSBhZnRlciBGSU4iCisgICAgICAgIHNpemUg
PSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzaXplOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1
ZmZlcl9pc19lbXB0eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmcuYWRk
KAorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AsIHNlbGYuX3NlbmRfYnVm
ZmVyX3N0b3AgKyBzaXplCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1
ZmZlciArPSBkYXRhCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wICs9IHNpemUK
KyAgICAgICAgaWYgZW5kX3N0cmVhbToKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNf
ZW1wdHkgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfZmluID0gc2VsZi5f
c2VuZF9idWZmZXJfc3RvcAorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IFRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNThiOGMyNmZhNGM2MDZlMWRhYTAwNDRmMGJmZWRkZDJkZjIyYjI2NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19f
aW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvcXVpYy9ldmVudHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dnZXIu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXQucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMv
cmVjb3ZlcnkucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3N0cmVhbS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3Rscy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy90bHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzBiNjlmZjJkMzIyNzQxNmU3MTVkZmUxOGI4MDI2OWUwYjFjMjU5Ygot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKQEAgLTAs
MCArMSwxOTI4IEBACitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MK
K2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4
dG1hbmFnZXIKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKK2Zyb20g
ZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwK
K2Zyb20gdHlwaW5nIGltcG9ydCAoCisgICAgQW55LAorICAgIENhbGxhYmxlLAorICAgIERpY3Qs
CisgICAgR2VuZXJhdG9yLAorICAgIExpc3QsCisgICAgT3B0aW9uYWwsCisgICAgU2VxdWVuY2Us
CisgICAgVHVwbGUsCisgICAgVHlwZVZhciwKKyAgICBVbmlvbiwKKykKKworaW1wb3J0IGNlcnRp
ZmkKK2Zyb20gY3J5cHRvZ3JhcGh5IGltcG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5leGNl
cHRpb25zIGltcG9ydCBJbnZhbGlkU2lnbmF0dXJlCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQu
YmFja2VuZHMgaW1wb3J0IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0
LmJpbmRpbmdzLm9wZW5zc2wuYmluZGluZyBpbXBvcnQgQmluZGluZworZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhhc2hlcywgaG1hYywgc2VyaWFsaXphdGlvbgor
ZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBvcnQgKAor
ICAgIGRzYSwKKyAgICBlYywKKyAgICBwYWRkaW5nLAorICAgIHJzYSwKKyAgICB4NDQ4LAorICAg
IHgyNTUxOSwKKykKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmtkZi5oa2Rm
IGltcG9ydCBIS0RGRXhwYW5kCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5z
ZXJpYWxpemF0aW9uIGltcG9ydCBFbmNvZGluZywgUHVibGljRm9ybWF0CisKK2Zyb20gLmJ1ZmZl
ciBpbXBvcnQgQnVmZmVyCisKK2JpbmRpbmcgPSBCaW5kaW5nKCkKK2JpbmRpbmcuaW5pdF9zdGF0
aWNfbG9ja3MoKQorZmZpID0gYmluZGluZy5mZmkKK2xpYiA9IGJpbmRpbmcubGliCisKK1RMU19W
RVJTSU9OXzFfMiA9IDB4MDMwMworVExTX1ZFUlNJT05fMV8zID0gMHgwMzA0CitUTFNfVkVSU0lP
Tl8xXzNfRFJBRlRfMjggPSAweDdGMUMKK1RMU19WRVJTSU9OXzFfM19EUkFGVF8yNyA9IDB4N0Yx
QgorVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2ID0gMHg3RjFBCisKK1QgPSBUeXBlVmFyKCJUIikK
KworIyBmYWNpbGl0YXRlIG1vY2tpbmcgZm9yIHRoZSB0ZXN0IHN1aXRlCit1dGNub3cgPSBkYXRl
dGltZS5kYXRldGltZS51dGNub3cKKworCitjbGFzcyBBbGVydERlc2NyaXB0aW9uKEludEVudW0p
OgorICAgIGNsb3NlX25vdGlmeSA9IDAKKyAgICB1bmV4cGVjdGVkX21lc3NhZ2UgPSAxMAorICAg
IGJhZF9yZWNvcmRfbWFjID0gMjAKKyAgICByZWNvcmRfb3ZlcmZsb3cgPSAyMgorICAgIGhhbmRz
aGFrZV9mYWlsdXJlID0gNDAKKyAgICBiYWRfY2VydGlmaWNhdGUgPSA0MgorICAgIHVuc3VwcG9y
dGVkX2NlcnRpZmljYXRlID0gNDMKKyAgICBjZXJ0aWZpY2F0ZV9yZXZva2VkID0gNDQKKyAgICBj
ZXJ0aWZpY2F0ZV9leHBpcmVkID0gNDUKKyAgICBjZXJ0aWZpY2F0ZV91bmtub3duID0gNDYKKyAg
ICBpbGxlZ2FsX3BhcmFtZXRlciA9IDQ3CisgICAgdW5rbm93bl9jYSA9IDQ4CisgICAgYWNjZXNz
X2RlbmllZCA9IDQ5CisgICAgZGVjb2RlX2Vycm9yID0gNTAKKyAgICBkZWNyeXB0X2Vycm9yID0g
NTEKKyAgICBwcm90b2NvbF92ZXJzaW9uID0gNzAKKyAgICBpbnN1ZmZpY2llbnRfc2VjdXJpdHkg
PSA3MQorICAgIGludGVybmFsX2Vycm9yID0gODAKKyAgICBpbmFwcHJvcHJpYXRlX2ZhbGxiYWNr
ID0gODYKKyAgICB1c2VyX2NhbmNlbGVkID0gOTAKKyAgICBtaXNzaW5nX2V4dGVuc2lvbiA9IDEw
OQorICAgIHVuc3VwcG9ydGVkX2V4dGVuc2lvbiA9IDExMAorICAgIHVucmVjb2duaXplZF9uYW1l
ID0gMTEyCisgICAgYmFkX2NlcnRpZmljYXRlX3N0YXR1c19yZXNwb25zZSA9IDExMworICAgIHVu
a25vd25fcHNrX2lkZW50aXR5ID0gMTE1CisgICAgY2VydGlmaWNhdGVfcmVxdWlyZWQgPSAxMTYK
KyAgICBub19hcHBsaWNhdGlvbl9wcm90b2NvbCA9IDEyMAorCisKK2NsYXNzIEFsZXJ0KEV4Y2Vw
dGlvbik6CisgICAgZGVzY3JpcHRpb246IEFsZXJ0RGVzY3JpcHRpb24KKworCitjbGFzcyBBbGVy
dEJhZENlcnRpZmljYXRlKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRp
b24uYmFkX2NlcnRpZmljYXRlCisKKworY2xhc3MgQWxlcnRDZXJ0aWZpY2F0ZUV4cGlyZWQoQWxl
cnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBp
cmVkCisKKworY2xhc3MgQWxlcnREZWNyeXB0RXJyb3IoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9u
ID0gQWxlcnREZXNjcmlwdGlvbi5kZWNyeXB0X2Vycm9yCisKKworY2xhc3MgQWxlcnRIYW5kc2hh
a2VGYWlsdXJlKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24uaGFu
ZHNoYWtlX2ZhaWx1cmUKKworCitjbGFzcyBBbGVydElsbGVnYWxQYXJhbWV0ZXIoQWxlcnQpOgor
ICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgorCisK
K2NsYXNzIEFsZXJ0SW50ZXJuYWxFcnJvcihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVy
dERlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCisKKworY2xhc3MgQWxlcnRQcm90b2NvbFZlcnNp
b24oQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5wcm90b2NvbF92
ZXJzaW9uCisKKworY2xhc3MgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZShBbGVydCk6CisgICAgZGVz
Y3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnVuZXhwZWN0ZWRfbWVzc2FnZQorCisKK2NsYXNz
IERpcmVjdGlvbihFbnVtKToKKyAgICBERUNSWVBUID0gMAorICAgIEVOQ1JZUFQgPSAxCisKKwor
Y2xhc3MgRXBvY2goRW51bSk6CisgICAgSU5JVElBTCA9IDAKKyAgICBaRVJPX1JUVCA9IDEKKyAg
ICBIQU5EU0hBS0UgPSAyCisgICAgT05FX1JUVCA9IDMKKworCitjbGFzcyBTdGF0ZShFbnVtKToK
KyAgICBDTElFTlRfSEFORFNIQUtFX1NUQVJUID0gMAorICAgIENMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPID0gMQorICAgIENMSUVOVF9FWFBFQ1RfRU5DUllQVEVEX0VYVEVOU0lPTlMgPSAyCisg
ICAgQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFID0gMwor
ICAgIENMSUVOVF9FWFBFQ1RfQ0VSVElGSUNBVEVfQ0VSVElGSUNBVEUgPSA0CisgICAgQ0xJRU5U
X0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkgPSA1CisgICAgQ0xJRU5UX0VYUEVDVF9GSU5JU0hF
RCA9IDYKKyAgICBDTElFTlRfUE9TVF9IQU5EU0hBS0UgPSA3CisKKyAgICBTRVJWRVJfRVhQRUNU
X0NMSUVOVF9IRUxMTyA9IDgKKyAgICBTRVJWRVJfRVhQRUNUX0ZJTklTSEVEID0gOQorICAgIFNF
UlZFUl9QT1NUX0hBTkRTSEFLRSA9IDEwCisKKworZGVmIGhrZGZfbGFiZWwobGFiZWw6IGJ5dGVz
LCBoYXNoX3ZhbHVlOiBieXRlcywgbGVuZ3RoOiBpbnQpIC0+IGJ5dGVzOgorICAgIGZ1bGxfbGFi
ZWwgPSBiInRsczEzICIgKyBsYWJlbAorICAgIHJldHVybiAoCisgICAgICAgIHN0cnVjdC5wYWNr
KCIhSEIiLCBsZW5ndGgsIGxlbihmdWxsX2xhYmVsKSkKKyAgICAgICAgKyBmdWxsX2xhYmVsCisg
ICAgICAgICsgc3RydWN0LnBhY2soIiFCIiwgbGVuKGhhc2hfdmFsdWUpKQorICAgICAgICArIGhh
c2hfdmFsdWUKKyAgICApCisKKworZGVmIGhrZGZfZXhwYW5kX2xhYmVsKAorICAgIGFsZ29yaXRo
bTogaGFzaGVzLkhhc2hBbGdvcml0aG0sCisgICAgc2VjcmV0OiBieXRlcywKKyAgICBsYWJlbDog
Ynl0ZXMsCisgICAgaGFzaF92YWx1ZTogYnl0ZXMsCisgICAgbGVuZ3RoOiBpbnQsCispIC0+IGJ5
dGVzOgorICAgIHJldHVybiBIS0RGRXhwYW5kKAorICAgICAgICBhbGdvcml0aG09YWxnb3JpdGht
LAorICAgICAgICBsZW5ndGg9bGVuZ3RoLAorICAgICAgICBpbmZvPWhrZGZfbGFiZWwobGFiZWws
IGhhc2hfdmFsdWUsIGxlbmd0aCksCisgICAgICAgIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCks
CisgICAgKS5kZXJpdmUoc2VjcmV0KQorCisKK2RlZiBoa2RmX2V4dHJhY3QoCisgICAgYWxnb3Jp
dGhtOiBoYXNoZXMuSGFzaEFsZ29yaXRobSwgc2FsdDogYnl0ZXMsIGtleV9tYXRlcmlhbDogYnl0
ZXMKKykgLT4gYnl0ZXM6CisgICAgaCA9IGhtYWMuSE1BQyhzYWx0LCBhbGdvcml0aG0sIGJhY2tl
bmQ9ZGVmYXVsdF9iYWNrZW5kKCkpCisgICAgaC51cGRhdGUoa2V5X21hdGVyaWFsKQorICAgIHJl
dHVybiBoLmZpbmFsaXplKCkKKworCitkZWYgbG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgZGF0
YTogYnl0ZXMsIHBhc3N3b3JkOiBPcHRpb25hbFtieXRlc10KKykgLT4gVW5pb25bZHNhLkRTQVBy
aXZhdGVLZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5LCByc2EuUlNBUHJpdmF0ZUtleV06
CisgICAgIiIiCisgICAgTG9hZCBhIFBFTS1lbmNvZGVkIHByaXZhdGUga2V5LgorICAgICIiIgor
ICAgIHJldHVybiBzZXJpYWxpemF0aW9uLmxvYWRfcGVtX3ByaXZhdGVfa2V5KAorICAgICAgICBk
YXRhLCBwYXNzd29yZD1wYXNzd29yZCwgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICkK
KworCitkZWYgbG9hZF9wZW1feDUwOV9jZXJ0aWZpY2F0ZXMoZGF0YTogYnl0ZXMpIC0+IExpc3Rb
eDUwOS5DZXJ0aWZpY2F0ZV06CisgICAgIiIiCisgICAgTG9hZCBhIGNoYWluIG9mIFBFTS1lbmNv
ZGVkIFg1MDkgY2VydGlmaWNhdGVzLgorICAgICIiIgorICAgIGJvdW5kYXJ5ID0gYiItLS0tLUVO
RCBDRVJUSUZJQ0FURS0tLS0tXG4iCisgICAgY2VydGlmaWNhdGVzID0gW10KKyAgICBmb3IgY2h1
bmsgaW4gZGF0YS5zcGxpdChib3VuZGFyeSk6CisgICAgICAgIGlmIGNodW5rOgorICAgICAgICAg
ICAgY2VydGlmaWNhdGVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB4NTA5LmxvYWRfcGVtX3g1
MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgICAgIGNodW5rICsgYm91bmRhcnksIGJh
Y2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp
CisgICAgcmV0dXJuIGNlcnRpZmljYXRlcworCisKK2RlZiBvcGVuc3NsX2Fzc2VydChvazogYm9v
bCwgZnVuYzogc3RyKSAtPiBOb25lOgorICAgIGlmIG5vdCBvazoKKyAgICAgICAgbGliLkVSUl9j
bGVhcl9lcnJvcigpCisgICAgICAgIHJhaXNlIEFsZXJ0SW50ZXJuYWxFcnJvcigiT3BlblNTTCBj
YWxsIHRvICVzIGZhaWxlZCIgJSBmdW5jKQorCisKK2RlZiBvcGVuc3NsX2RlY29kZV9zdHJpbmco
Y2hhcnApIC0+IHN0cjoKKyAgICByZXR1cm4gZmZpLnN0cmluZyhjaGFycCkuZGVjb2RlKCJ1dGYt
OCIpIGlmIGNoYXJwIGVsc2UgIiIKKworCitkZWYgb3BlbnNzbF9lbmNvZGVfcGF0aChzOiBPcHRp
b25hbFtzdHJdKSAtPiBBbnk6CisgICAgaWYgcyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJu
IG9zLmZzZW5jb2RlKHMpCisgICAgcmV0dXJuIGZmaS5OVUxMCisKKworZGVmIGNlcnRfeDUwOV9w
dHIoY2VydGlmaWNhdGU6IHg1MDkuQ2VydGlmaWNhdGUpIC0+IEFueToKKyAgICAiIiIKKyAgICBB
Y2Nlc3NvciBmb3IgcHJpdmF0ZSBhdHRyaWJ1dGUuCisgICAgIiIiCisgICAgcmV0dXJuIGdldGF0
dHIoY2VydGlmaWNhdGUsICJfeDUwOSIpCisKKworZGVmIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAg
ICBjZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSwKKyAgICBjaGFpbjogTGlzdFt4NTA5LkNl
cnRpZmljYXRlXSA9IFtdLAorICAgIHNlcnZlcl9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICBjYWRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUsCisgICAgY2FmaWxlOiBPcHRpb25h
bFtzdHJdID0gTm9uZSwKKyAgICBjYXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorKSAtPiBO
b25lOgorICAgICMgdmVyaWZ5IGRhdGVzCisgICAgbm93ID0gdXRjbm93KCkKKyAgICBpZiBub3cg
PCBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlOgorICAgICAgICByYWlzZSBBbGVydENlcnRp
ZmljYXRlRXhwaXJlZCgiQ2VydGlmaWNhdGUgaXMgbm90IHZhbGlkIHlldCIpCisgICAgaWYgbm93
ID4gY2VydGlmaWNhdGUubm90X3ZhbGlkX2FmdGVyOgorICAgICAgICByYWlzZSBBbGVydENlcnRp
ZmljYXRlRXhwaXJlZCgiQ2VydGlmaWNhdGUgaXMgbm8gbG9uZ2VyIHZhbGlkIikKKworICAgICMg
dmVyaWZ5IHN1YmplY3QKKyAgICBpZiBzZXJ2ZXJfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAg
c3ViamVjdCA9IFtdCisgICAgICAgIHN1YmplY3RBbHROYW1lOiBMaXN0W1R1cGxlW3N0ciwgc3Ry
XV0gPSBbXQorICAgICAgICBmb3IgYXR0ciBpbiBjZXJ0aWZpY2F0ZS5zdWJqZWN0OgorICAgICAg
ICAgICAgaWYgYXR0ci5vaWQgPT0geDUwOS5OYW1lT0lELkNPTU1PTl9OQU1FOgorICAgICAgICAg
ICAgICAgIHN1YmplY3QuYXBwZW5kKCgoImNvbW1vbk5hbWUiLCBhdHRyLnZhbHVlKSwpKQorICAg
ICAgICBmb3IgZXh0IGluIGNlcnRpZmljYXRlLmV4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGV4dC52YWx1ZSwgeDUwOS5TdWJqZWN0QWx0ZXJuYXRpdmVOYW1lKToKKyAgICAg
ICAgICAgICAgICBmb3IgbmFtZSBpbiBleHQudmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UobmFtZSwgeDUwOS5ETlNOYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN1YmplY3RBbHROYW1lLmFwcGVuZCgoIkROUyIsIG5hbWUudmFsdWUpKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHNzbC5tYXRjaF9ob3N0bmFtZSgKKyAgICAgICAgICAgICAgICB7InN1
YmplY3QiOiB0dXBsZShzdWJqZWN0KSwgInN1YmplY3RBbHROYW1lIjogdHVwbGUoc3ViamVjdEFs
dE5hbWUpfSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgZXhjZXB0IHNzbC5DZXJ0aWZpY2F0ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJh
aXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoIlxuIi5qb2luKGV4Yy5hcmdzKSkgZnJvbSBleGMKKwor
ICAgICMgdmVyaWZ5IGNlcnRpZmljYXRlIGNoYWluCisgICAgc3RvcmUgPSBsaWIuWDUwOV9TVE9S
RV9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3JlICE9IGZmaS5OVUxMLCAiWDUwOV9zdG9y
ZV9uZXciKQorICAgIHN0b3JlID0gZmZpLmdjKHN0b3JlLCBsaWIuWDUwOV9TVE9SRV9mcmVlKQor
CisgICAgIyBsb2FkIGRlZmF1bHQgQ0FzCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgIGxp
Yi5YNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzKHN0b3JlKSwgIlg1MDlfU1RPUkVfc2V0X2Rl
ZmF1bHRfcGF0aHMiCisgICAgKQorICAgIG9wZW5zc2xfYXNzZXJ0KAorICAgICAgICBsaWIuWDUw
OV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAgIHN0b3JlLCBvcGVuc3NsX2VuY29k
ZV9wYXRoKGNlcnRpZmkud2hlcmUoKSksIG9wZW5zc2xfZW5jb2RlX3BhdGgoTm9uZSksCisgICAg
ICAgICksCisgICAgICAgICJYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zIiwKKyAgICApCisKKyAg
ICAjIGxvYWQgZXh0cmEgQ0FzCisgICAgaWYgY2FkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBm
b3IgY2VydCBpbiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhjYWRhdGEpOgorICAgICAgICAg
ICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAgICAgICAgbGliLlg1MDlfU1RPUkVfYWRkX2Nl
cnQoc3RvcmUsIGNlcnRfeDUwOV9wdHIoY2VydCkpLAorICAgICAgICAgICAgICAgICJYNTA5X1NU
T1JFX2FkZF9jZXJ0IiwKKyAgICAgICAgICAgICkKKworICAgIGlmIGNhZmlsZSBpcyBub3QgTm9u
ZSBvciBjYXBhdGggaXMgbm90IE5vbmU6CisgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAorICAgICAg
ICAgICAgbGliLlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMoCisgICAgICAgICAgICAgICAgc3Rv
cmUsIG9wZW5zc2xfZW5jb2RlX3BhdGgoY2FmaWxlKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChjYXBh
dGgpCisgICAgICAgICAgICApLAorICAgICAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlv
bnMiLAorICAgICAgICApCisKKyAgICBjaGFpbl9zdGFjayA9IGxpYi5za19YNTA5X25ld19udWxs
KCkKKyAgICBvcGVuc3NsX2Fzc2VydChjaGFpbl9zdGFjayAhPSBmZmkuTlVMTCwgInNrX1g1MDlf
bmV3X251bGwiKQorICAgIGNoYWluX3N0YWNrID0gZmZpLmdjKGNoYWluX3N0YWNrLCBsaWIuc2tf
WDUwOV9mcmVlKQorICAgIGZvciBjZXJ0IGluIGNoYWluOgorICAgICAgICBvcGVuc3NsX2Fzc2Vy
dCgKKyAgICAgICAgICAgIGxpYi5za19YNTA5X3B1c2goY2hhaW5fc3RhY2ssIGNlcnRfeDUwOV9w
dHIoY2VydCkpLCAic2tfWDUwOV9wdXNoIgorICAgICAgICApCisKKyAgICBzdG9yZV9jdHggPSBs
aWIuWDUwOV9TVE9SRV9DVFhfbmV3KCkKKyAgICBvcGVuc3NsX2Fzc2VydChzdG9yZV9jdHggIT0g
ZmZpLk5VTEwsICJYNTA5X1NUT1JFX0NUWF9uZXciKQorICAgIHN0b3JlX2N0eCA9IGZmaS5nYyhz
dG9yZV9jdHgsIGxpYi5YNTA5X1NUT1JFX0NUWF9mcmVlKQorICAgIG9wZW5zc2xfYXNzZXJ0KAor
ICAgICAgICBsaWIuWDUwOV9TVE9SRV9DVFhfaW5pdCgKKyAgICAgICAgICAgIHN0b3JlX2N0eCwg
c3RvcmUsIGNlcnRfeDUwOV9wdHIoY2VydGlmaWNhdGUpLCBjaGFpbl9zdGFjaworICAgICAgICAp
LAorICAgICAgICAiWDUwOV9TVE9SRV9DVFhfaW5pdCIsCisgICAgKQorCisgICAgcmVzID0gbGli
Llg1MDlfdmVyaWZ5X2NlcnQoc3RvcmVfY3R4KQorICAgIGlmIG5vdCByZXM6CisgICAgICAgIGVy
ciA9IGxpYi5YNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3Ioc3RvcmVfY3R4KQorICAgICAgICBlcnJf
c3RyID0gb3BlbnNzbF9kZWNvZGVfc3RyaW5nKGxpYi5YNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0
cmluZyhlcnIpKQorICAgICAgICByYWlzZSBBbGVydEJhZENlcnRpZmljYXRlKGVycl9zdHIpCisK
KworY2xhc3MgQ2lwaGVyU3VpdGUoSW50RW51bSk6CisgICAgQUVTXzEyOF9HQ01fU0hBMjU2ID0g
MHgxMzAxCisgICAgQUVTXzI1Nl9HQ01fU0hBMzg0ID0gMHgxMzAyCisgICAgQ0hBQ0hBMjBfUE9M
WTEzMDVfU0hBMjU2ID0gMHgxMzAzCisgICAgRU1QVFlfUkVORUdPVElBVElPTl9JTkZPX1NDU1Yg
PSAweDAwRkYKKworCitjbGFzcyBDb21wcmVzc2lvbk1ldGhvZChJbnRFbnVtKToKKyAgICBOVUxM
ID0gMAorCisKK2NsYXNzIEV4dGVuc2lvblR5cGUoSW50RW51bSk6CisgICAgU0VSVkVSX05BTUUg
PSAwCisgICAgU1RBVFVTX1JFUVVFU1QgPSA1CisgICAgU1VQUE9SVEVEX0dST1VQUyA9IDEwCisg
ICAgU0lHTkFUVVJFX0FMR09SSVRITVMgPSAxMworICAgIEFMUE4gPSAxNgorICAgIENPTVBSRVNT
X0NFUlRJRklDQVRFID0gMjcKKyAgICBQUkVfU0hBUkVEX0tFWSA9IDQxCisgICAgRUFSTFlfREFU
QSA9IDQyCisgICAgU1VQUE9SVEVEX1ZFUlNJT05TID0gNDMKKyAgICBDT09LSUUgPSA0NAorICAg
IFBTS19LRVlfRVhDSEFOR0VfTU9ERVMgPSA0NQorICAgIEtFWV9TSEFSRSA9IDUxCisgICAgUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSUyA9IDY1NDQ1CisgICAgRU5DUllQVEVEX1NFUlZFUl9OQU1F
ID0gNjU0ODYKKworCitjbGFzcyBHcm91cChJbnRFbnVtKToKKyAgICBTRUNQMjU2UjEgPSAweDAw
MTcKKyAgICBTRUNQMzg0UjEgPSAweDAwMTgKKyAgICBTRUNQNTIxUjEgPSAweDAwMTkKKyAgICBY
MjU1MTkgPSAweDAwMUQKKyAgICBYNDQ4ID0gMHgwMDFFCisgICAgR1JFQVNFID0gMHhBQUFBCisK
KworY2xhc3MgSGFuZHNoYWtlVHlwZShJbnRFbnVtKToKKyAgICBDTElFTlRfSEVMTE8gPSAxCisg
ICAgU0VSVkVSX0hFTExPID0gMgorICAgIE5FV19TRVNTSU9OX1RJQ0tFVCA9IDQKKyAgICBFTkRf
T0ZfRUFSTFlfREFUQSA9IDUKKyAgICBFTkNSWVBURURfRVhURU5TSU9OUyA9IDgKKyAgICBDRVJU
SUZJQ0FURSA9IDExCisgICAgQ0VSVElGSUNBVEVfUkVRVUVTVCA9IDEzCisgICAgQ0VSVElGSUNB
VEVfVkVSSUZZID0gMTUKKyAgICBGSU5JU0hFRCA9IDIwCisgICAgS0VZX1VQREFURSA9IDI0Cisg
ICAgQ09NUFJFU1NFRF9DRVJUSUZJQ0FURSA9IDI1CisgICAgTUVTU0FHRV9IQVNIID0gMjU0CisK
KworY2xhc3MgUHNrS2V5RXhjaGFuZ2VNb2RlKEludEVudW0pOgorICAgIFBTS19LRSA9IDAKKyAg
ICBQU0tfREhFX0tFID0gMQorCisKK2NsYXNzIFNpZ25hdHVyZUFsZ29yaXRobShJbnRFbnVtKToK
KyAgICBFQ0RTQV9TRUNQMjU2UjFfU0hBMjU2ID0gMHgwNDAzCisgICAgRUNEU0FfU0VDUDM4NFIx
X1NIQTM4NCA9IDB4MDUwMworICAgIEVDRFNBX1NFQ1A1MjFSMV9TSEE1MTIgPSAweDA2MDMKKyAg
ICBFRDI1NTE5ID0gMHgwODA3CisgICAgRUQ0NDggPSAweDA4MDgKKyAgICBSU0FfUEtDUzFfU0hB
MjU2ID0gMHgwNDAxCisgICAgUlNBX1BLQ1MxX1NIQTM4NCA9IDB4MDUwMQorICAgIFJTQV9QS0NT
MV9TSEE1MTIgPSAweDA2MDEKKyAgICBSU0FfUFNTX1BTU19TSEEyNTYgPSAweDA4MDkKKyAgICBS
U0FfUFNTX1BTU19TSEEzODQgPSAweDA4MEEKKyAgICBSU0FfUFNTX1BTU19TSEE1MTIgPSAweDA4
MEIKKyAgICBSU0FfUFNTX1JTQUVfU0hBMjU2ID0gMHgwODA0CisgICAgUlNBX1BTU19SU0FFX1NI
QTM4NCA9IDB4MDgwNQorICAgIFJTQV9QU1NfUlNBRV9TSEE1MTIgPSAweDA4MDYKKworICAgICMg
bGVnYWN5CisgICAgUlNBX1BLQ1MxX1NIQTEgPSAweDAyMDEKKyAgICBTSEExX0RTQSA9IDB4MDIw
MgorICAgIEVDRFNBX1NIQTEgPSAweDAyMDMKKworCisjIEJMT0NLUworCisKK0Bjb250ZXh0bWFu
YWdlcgorZGVmIHB1bGxfYmxvY2soYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQpIC0+IEdlbmVy
YXRvcjoKKyAgICBsZW5ndGggPSAwCisgICAgZm9yIGIgaW4gYnVmLnB1bGxfYnl0ZXMoY2FwYWNp
dHkpOgorICAgICAgICBsZW5ndGggPSAobGVuZ3RoIDw8IDgpIHwgYgorICAgIGVuZCA9IGJ1Zi50
ZWxsKCkgKyBsZW5ndGgKKyAgICB5aWVsZCBsZW5ndGgKKyAgICBhc3NlcnQgYnVmLnRlbGwoKSA9
PSBlbmQKKworCitAY29udGV4dG1hbmFnZXIKK2RlZiBwdXNoX2Jsb2NrKGJ1ZjogQnVmZmVyLCBj
YXBhY2l0eTogaW50KSAtPiBHZW5lcmF0b3I6CisgICAgIiIiCisgICAgQ29udGV4dCBtYW5hZ2Vy
IHRvIHB1c2ggYSB2YXJpYWJsZS1sZW5ndGggYmxvY2ssIHdpdGggYGNhcGFjaXR5YCBieXRlcwor
ICAgIHRvIHdyaXRlIHRoZSBsZW5ndGguCisgICAgIiIiCisgICAgc3RhcnQgPSBidWYudGVsbCgp
ICsgY2FwYWNpdHkKKyAgICBidWYuc2VlayhzdGFydCkKKyAgICB5aWVsZAorICAgIGVuZCA9IGJ1
Zi50ZWxsKCkKKyAgICBsZW5ndGggPSBlbmQgLSBzdGFydAorICAgIHdoaWxlIGNhcGFjaXR5Ogor
ICAgICAgICBidWYuc2VlayhzdGFydCAtIGNhcGFjaXR5KQorICAgICAgICBidWYucHVzaF91aW50
OCgobGVuZ3RoID4+ICg4ICogKGNhcGFjaXR5IC0gMSkpKSAmIDB4RkYpCisgICAgICAgIGNhcGFj
aXR5IC09IDEKKyAgICBidWYuc2VlayhlbmQpCisKKworIyBMSVNUUworCisKK2RlZiBwdWxsX2xp
c3QoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQsIGZ1bmM6IENhbGxhYmxlW1tdLCBUXSkgLT4g
TGlzdFtUXToKKyAgICAiIiIKKyAgICBQdWxsIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAiIiIKKyAg
ICBpdGVtcyA9IFtdCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0
aDoKKyAgICAgICAgZW5kID0gYnVmLnRlbGwoKSArIGxlbmd0aAorICAgICAgICB3aGlsZSBidWYu
dGVsbCgpIDwgZW5kOgorICAgICAgICAgICAgaXRlbXMuYXBwZW5kKGZ1bmMoKSkKKyAgICByZXR1
cm4gaXRlbXMKKworCitkZWYgcHVzaF9saXN0KAorICAgIGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTog
aW50LCBmdW5jOiBDYWxsYWJsZVtbVF0sIE5vbmVdLCB2YWx1ZXM6IFNlcXVlbmNlW1RdCispIC0+
IE5vbmU6CisgICAgIiIiCisgICAgUHVzaCBhIGxpc3Qgb2YgaXRlbXMuCisgICAgIiIiCisgICAg
d2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgY2FwYWNpdHkpOgorICAgICAgICBmb3IgdmFsdWUgaW4gdmFs
dWVzOgorICAgICAgICAgICAgZnVuYyh2YWx1ZSkKKworCitkZWYgcHVsbF9vcGFxdWUoYnVmOiBC
dWZmZXIsIGNhcGFjaXR5OiBpbnQpIC0+IGJ5dGVzOgorICAgICIiIgorICAgIFB1bGwgYW4gb3Bh
cXVlIHZhbHVlIHByZWZpeGVkIGJ5IGEgbGVuZ3RoLgorICAgICIiIgorICAgIHdpdGggcHVsbF9i
bG9jayhidWYsIGNhcGFjaXR5KSBhcyBsZW5ndGg6CisgICAgICAgIHJldHVybiBidWYucHVsbF9i
eXRlcyhsZW5ndGgpCisKKworZGVmIHB1c2hfb3BhcXVlKGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTog
aW50LCB2YWx1ZTogYnl0ZXMpIC0+IE5vbmU6CisgICAgIiIiCisgICAgUHVzaCBhbiBvcGFxdWUg
dmFsdWUgcHJlZml4IGJ5IGEgbGVuZ3RoLgorICAgICIiIgorICAgIHdpdGggcHVzaF9ibG9jayhi
dWYsIGNhcGFjaXR5KToKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXModmFsdWUpCisKKworQGNvbnRl
eHRtYW5hZ2VyCitkZWYgcHVzaF9leHRlbnNpb24oYnVmOiBCdWZmZXIsIGV4dGVuc2lvbl90eXBl
OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICBidWYucHVzaF91aW50MTYoZXh0ZW5zaW9uX3R5cGUp
CisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgIHlpZWxkCisKKworIyBLZXlT
aGFyZUVudHJ5CisKKworS2V5U2hhcmVFbnRyeSA9IFR1cGxlW2ludCwgYnl0ZXNdCisKKworZGVm
IHB1bGxfa2V5X3NoYXJlKGJ1ZjogQnVmZmVyKSAtPiBLZXlTaGFyZUVudHJ5OgorICAgIGdyb3Vw
ID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICBkYXRhID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorICAg
IHJldHVybiAoZ3JvdXAsIGRhdGEpCisKKworZGVmIHB1c2hfa2V5X3NoYXJlKGJ1ZjogQnVmZmVy
LCB2YWx1ZTogS2V5U2hhcmVFbnRyeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50MTYodmFs
dWVbMF0pCisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCB2YWx1ZVsxXSkKKworCisjIEFMUE4KKwor
CitkZWYgcHVsbF9hbHBuX3Byb3RvY29sKGJ1ZjogQnVmZmVyKSAtPiBzdHI6CisgICAgcmV0dXJu
IHB1bGxfb3BhcXVlKGJ1ZiwgMSkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIHB1c2hfYWxwbl9w
cm90b2NvbChidWY6IEJ1ZmZlciwgcHJvdG9jb2w6IHN0cikgLT4gTm9uZToKKyAgICBwdXNoX29w
YXF1ZShidWYsIDEsIHByb3RvY29sLmVuY29kZSgiYXNjaWkiKSkKKworCisjIFBSRSBTSEFSRUQg
S0VZCisKK1Bza0lkZW50aXR5ID0gVHVwbGVbYnl0ZXMsIGludF0KKworCitkZWYgcHVsbF9wc2tf
aWRlbnRpdHkoYnVmOiBCdWZmZXIpIC0+IFBza0lkZW50aXR5OgorICAgIGlkZW50aXR5ID0gcHVs
bF9vcGFxdWUoYnVmLCAyKQorICAgIG9iZnVzY2F0ZWRfdGlja2V0X2FnZSA9IGJ1Zi5wdWxsX3Vp
bnQzMigpCisgICAgcmV0dXJuIChpZGVudGl0eSwgb2JmdXNjYXRlZF90aWNrZXRfYWdlKQorCisK
K2RlZiBwdXNoX3Bza19pZGVudGl0eShidWY6IEJ1ZmZlciwgZW50cnk6IFBza0lkZW50aXR5KSAt
PiBOb25lOgorICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgZW50cnlbMF0pCisgICAgYnVmLnB1c2hf
dWludDMyKGVudHJ5WzFdKQorCisKK2RlZiBwdWxsX3Bza19iaW5kZXIoYnVmOiBCdWZmZXIpIC0+
IGJ5dGVzOgorICAgIHJldHVybiBwdWxsX29wYXF1ZShidWYsIDEpCisKKworZGVmIHB1c2hfcHNr
X2JpbmRlcihidWY6IEJ1ZmZlciwgYmluZGVyOiBieXRlcykgLT4gTm9uZToKKyAgICBwdXNoX29w
YXF1ZShidWYsIDEsIGJpbmRlcikKKworCisjIE1FU1NBR0VTCisKK0V4dGVuc2lvbiA9IFR1cGxl
W2ludCwgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgT2ZmZXJlZFBza3M6CisgICAgaWRl
bnRpdGllczogTGlzdFtQc2tJZGVudGl0eV0KKyAgICBiaW5kZXJzOiBMaXN0W2J5dGVzXQorCisK
K0BkYXRhY2xhc3MKK2NsYXNzIENsaWVudEhlbGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBz
ZXNzaW9uX2lkOiBieXRlcworICAgIGNpcGhlcl9zdWl0ZXM6IExpc3RbaW50XQorICAgIGNvbXBy
ZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XQorCisgICAgIyBleHRlbnNpb25zCisgICAgYWxwbl9w
cm90b2NvbHM6IE9wdGlvbmFsW0xpc3Rbc3RyXV0gPSBOb25lCisgICAgZWFybHlfZGF0YTogYm9v
bCA9IEZhbHNlCisgICAga2V5X3NoYXJlOiBPcHRpb25hbFtMaXN0W0tleVNoYXJlRW50cnldXSA9
IE5vbmUKKyAgICBwcmVfc2hhcmVkX2tleTogT3B0aW9uYWxbT2ZmZXJlZFBza3NdID0gTm9uZQor
ICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM6IE9wdGlvbmFsW0xpc3RbaW50XV0gPSBOb25lCisg
ICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgc2lnbmF0dXJlX2FsZ29y
aXRobXM6IE9wdGlvbmFsW0xpc3RbaW50XV0gPSBOb25lCisgICAgc3VwcG9ydGVkX2dyb3Vwczog
T3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfdmVyc2lvbnM6IE9wdGlv
bmFsW0xpc3RbaW50XV0gPSBOb25lCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W0V4dGVu
c2lvbl0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVsbF9jbGllbnRf
aGVsbG8oYnVmOiBCdWZmZXIpIC0+IENsaWVudEhlbGxvOgorICAgIGFzc2VydCBidWYucHVsbF91
aW50OCgpID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPCisgICAgd2l0aCBwdWxsX2Jsb2Nr
KGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50MTYoKSA9PSBUTFNfVkVSU0lP
Tl8xXzIKKyAgICAgICAgY2xpZW50X3JhbmRvbSA9IGJ1Zi5wdWxsX2J5dGVzKDMyKQorCisgICAg
ICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209Y2xpZW50X3JhbmRv
bSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAxKSwKKyAgICAgICAg
ICAgIGNpcGhlcl9zdWl0ZXM9cHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWludDE2KSwKKyAg
ICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZHM9cHVsbF9saXN0KGJ1ZiwgMSwgYnVmLnB1bGxf
dWludDgpLAorICAgICAgICApCisKKyAgICAgICAgIyBleHRlbnNpb25zCisgICAgICAgIGFmdGVy
X3BzayA9IEZhbHNlCisKKyAgICAgICAgZGVmIHB1bGxfZXh0ZW5zaW9uKCkgLT4gTm9uZToKKyAg
ICAgICAgICAgICMgcHJlX3NoYXJlZF9rZXkgTVVTVCBiZSBsYXN0CisgICAgICAgICAgICBub25s
b2NhbCBhZnRlcl9wc2sKKyAgICAgICAgICAgIGFzc2VydCBub3QgYWZ0ZXJfcHNrCisKKyAgICAg
ICAgICAgIGV4dGVuc2lvbl90eXBlID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGV4
dGVuc2lvbl9sZW5ndGggPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgaWYgZXh0ZW5z
aW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkU6CisgICAgICAgICAgICAgICAgaGVs
bG8ua2V5X3NoYXJlID0gcHVsbF9saXN0KGJ1ZiwgMiwgcGFydGlhbChwdWxsX2tleV9zaGFyZSwg
YnVmKSkKKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5T
VVBQT1JURURfVkVSU0lPTlM6CisgICAgICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNp
b25zID0gcHVsbF9saXN0KGJ1ZiwgMSwgYnVmLnB1bGxfdWludDE2KQorICAgICAgICAgICAgZWxp
ZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNJR05BVFVSRV9BTEdPUklUSE1TOgor
ICAgICAgICAgICAgICAgIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zID0gcHVsbF9saXN0KGJ1
ZiwgMiwgYnVmLnB1bGxfdWludDE2KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9
PSBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9HUk9VUFM6CisgICAgICAgICAgICAgICAgaGVsbG8u
c3VwcG9ydGVkX2dyb3VwcyA9IHB1bGxfbGlzdChidWYsIDIsIGJ1Zi5wdWxsX3VpbnQxNikKKyAg
ICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QU0tfS0VZX0VY
Q0hBTkdFX01PREVTOgorICAgICAgICAgICAgICAgIGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9k
ZXMgPSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50OCkKKyAgICAgICAgICAgIGVsaWYg
ZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAyKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gMAorICAgICAgICAgICAgICAgICAgICBoZWxsby5zZXJ2ZXJf
bmFtZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBl
bGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuQUxQTjoKKyAgICAgICAgICAgICAg
ICBoZWxsby5hbHBuX3Byb3RvY29scyA9IHB1bGxfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAg
YnVmLCAyLCBwYXJ0aWFsKHB1bGxfYWxwbl9wcm90b2NvbCwgYnVmKQorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5FQVJM
WV9EQVRBOgorICAgICAgICAgICAgICAgIGhlbGxvLmVhcmx5X2RhdGEgPSBUcnVlCisgICAgICAg
ICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVk6
CisgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKKyAg
ICAgICAgICAgICAgICAgICAgaWRlbnRpdGllcz1wdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1
bGxfcHNrX2lkZW50aXR5LCBidWYpKSwKKyAgICAgICAgICAgICAgICAgICAgYmluZGVycz1wdWxs
X2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfcHNrX2JpbmRlciwgYnVmKSksCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgIGFmdGVyX3BzayA9IFRydWUKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgaGVsbG8ub3RoZXJfZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwgYnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9u
X2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHB1bGxfbGlzdChidWYsIDIs
IHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGhlbGxvCisKKworZGVmIHB1c2hfY2xpZW50
X2hlbGxvKGJ1ZjogQnVmZmVyLCBoZWxsbzogQ2xpZW50SGVsbG8pIC0+IE5vbmU6CisgICAgYnVm
LnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8pCisgICAgd2l0aCBwdXNoX2Js
b2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihUTFNfVkVSU0lPTl8xXzIpCisg
ICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGhlbGxvLnJhbmRvbSkKKyAgICAgICAgcHVzaF9vcGFxdWUo
YnVmLCAxLCBoZWxsby5zZXNzaW9uX2lkKQorICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYu
cHVzaF91aW50MTYsIGhlbGxvLmNpcGhlcl9zdWl0ZXMpCisgICAgICAgIHB1c2hfbGlzdChidWYs
IDEsIGJ1Zi5wdXNoX3VpbnQ4LCBoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzKQorCisgICAgICAg
ICMgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAg
ICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLktFWV9TSEFSRSk6Cisg
ICAgICAgICAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMiwgcGFydGlhbChwdXNoX2tleV9zaGFyZSwg
YnVmKSwgaGVsbG8ua2V5X3NoYXJlKQorCisgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9u
KGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lPTlMpOgorICAgICAgICAgICAgICAg
IHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQxNiwgaGVsbG8uc3VwcG9ydGVkX3ZlcnNp
b25zKQorCisgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlw
ZS5TSUdOQVRVUkVfQUxHT1JJVEhNUyk6CisgICAgICAgICAgICAgICAgcHVzaF9saXN0KGJ1Ziwg
MiwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcykKKworICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dS
T1VQUyk6CisgICAgICAgICAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMiwgYnVmLnB1c2hfdWludDE2
LCBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzKQorCisgICAgICAgICAgICBpZiBoZWxsby5wc2tfa2V5
X2V4Y2hhbmdlX21vZGVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9l
eHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlBTS19LRVlfRVhDSEFOR0VfTU9ERVMpOgorICAg
ICAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAxLCBidWYucHVzaF91aW50OCwgaGVsbG8u
cHNrX2tleV9leGNoYW5nZV9tb2RlcykKKworICAgICAgICAgICAgaWYgaGVsbG8uc2VydmVyX25h
bWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYs
IEV4dGVuc2lvblR5cGUuU0VSVkVSX05BTUUpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHB1
c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4
KDApCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDIsIGhlbGxvLnNl
cnZlcl9uYW1lLmVuY29kZSgiYXNjaWkiKSkKKworICAgICAgICAgICAgaWYgaGVsbG8uYWxwbl9w
cm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lv
bihidWYsIEV4dGVuc2lvblR5cGUuQUxQTik6CisgICAgICAgICAgICAgICAgICAgIHB1c2hfbGlz
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgMiwgcGFydGlhbChwdXNoX2FscG5fcHJv
dG9jb2wsIGJ1ZiksIGhlbGxvLmFscG5fcHJvdG9jb2xzCisgICAgICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl90eXBlLCBleHRlbnNpb25fdmFsdWUgaW4gaGVs
bG8ub3RoZXJfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9u
KGJ1ZiwgZXh0ZW5zaW9uX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhleHRlbnNpb25fdmFsdWUpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLmVhcmx5X2RhdGE6Cisg
ICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuRUFS
TFlfREFUQSk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgIyBwcmVf
c2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAgICAgIGlmIGhlbGxvLnByZV9zaGFyZWRf
a2V5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLlBSRV9TSEFSRURfS0VZKToKKyAgICAgICAgICAgICAgICAgICAgcHVz
aF9saXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfaWRlbnRp
dHksIGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5p
ZGVudGl0aWVzLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHB1
c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsKHB1c2hfcHNrX2JpbmRl
ciwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmJp
bmRlcnMsCisgICAgICAgICAgICAgICAgICAgICkKKworCitAZGF0YWNsYXNzCitjbGFzcyBTZXJ2
ZXJIZWxsbzoKKyAgICByYW5kb206IGJ5dGVzCisgICAgc2Vzc2lvbl9pZDogYnl0ZXMKKyAgICBj
aXBoZXJfc3VpdGU6IGludAorICAgIGNvbXByZXNzaW9uX21ldGhvZDogaW50CisKKyAgICAjIGV4
dGVuc2lvbnMKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0tleVNoYXJlRW50cnldID0gTm9uZQor
ICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIHN1cHBvcnRlZF92
ZXJzaW9uOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3Rb
VHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisKKworZGVm
IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyKSAtPiBTZXJ2ZXJIZWxsbzoKKyAgICBhc3Nl
cnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLlNFUlZFUl9IRUxMTworICAgIHdp
dGggcHVsbF9ibG9jayhidWYsIDMpOgorICAgICAgICBhc3NlcnQgYnVmLnB1bGxfdWludDE2KCkg
PT0gVExTX1ZFUlNJT05fMV8yCisgICAgICAgIHNlcnZlcl9yYW5kb20gPSBidWYucHVsbF9ieXRl
cygzMikKKworICAgICAgICBoZWxsbyA9IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9t
PXNlcnZlcl9yYW5kb20sCisgICAgICAgICAgICBzZXNzaW9uX2lkPXB1bGxfb3BhcXVlKGJ1Ziwg
MSksCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9YnVmLnB1bGxfdWludDE2KCksCisgICAgICAg
ICAgICBjb21wcmVzc2lvbl9tZXRob2Q9YnVmLnB1bGxfdWludDgoKSwKKyAgICAgICAgKQorCisg
ICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25l
OgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAg
ICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBp
ZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUzoKKyAg
ICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiA9IGJ1Zi5wdWxsX3VpbnQxNigp
CisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuS0VZX1NI
QVJFOgorICAgICAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSA9IHB1bGxfa2V5X3NoYXJlKGJ1
ZikKKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVf
U0hBUkVEX0tFWToKKyAgICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IGJ1Zi5w
dWxsX3VpbnQxNigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlbGxvLm90
aGVyX2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5
cGUsIGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkK
KworICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVy
biBoZWxsbworCisKK2RlZiBwdXNoX3NlcnZlcl9oZWxsbyhidWY6IEJ1ZmZlciwgaGVsbG86IFNl
cnZlckhlbGxvKSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuU0VS
VkVSX0hFTExPKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBidWYucHVz
aF91aW50MTYoVExTX1ZFUlNJT05fMV8yKQorICAgICAgICBidWYucHVzaF9ieXRlcyhoZWxsby5y
YW5kb20pCisKKyAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAxLCBoZWxsby5zZXNzaW9uX2lkKQor
ICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uY2lwaGVyX3N1aXRlKQorICAgICAgICBidWYu
cHVzaF91aW50OChoZWxsby5jb21wcmVzc2lvbl9tZXRob2QpCisKKyAgICAgICAgIyBleHRlbnNp
b25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgaWYgaGVs
bG8uc3VwcG9ydGVkX3ZlcnNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBw
dXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TKToKKyAg
ICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9u
KQorCisgICAgICAgICAgICBpZiBoZWxsby5rZXlfc2hhcmUgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NIQVJF
KToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9rZXlfc2hhcmUoYnVmLCBoZWxsby5rZXlfc2hh
cmUpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLnByZV9zaGFyZWRfa2V5IGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlBS
RV9TSEFSRURfS0VZKToKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGhlbGxv
LnByZV9zaGFyZWRfa2V5KQorCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVu
c2lvbl92YWx1ZSBpbiBoZWxsby5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdp
dGggcHVzaF9leHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFz
cyBOZXdTZXNzaW9uVGlja2V0OgorICAgIHRpY2tldF9saWZldGltZTogaW50ID0gMAorICAgIHRp
Y2tldF9hZ2VfYWRkOiBpbnQgPSAwCisgICAgdGlja2V0X25vbmNlOiBieXRlcyA9IGIiIgorICAg
IHRpY2tldDogYnl0ZXMgPSBiIiIKKworICAgICMgZXh0ZW5zaW9ucworICAgIG1heF9lYXJseV9k
YXRhX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlz
dFtUdXBsZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitk
ZWYgcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmOiBCdWZmZXIpIC0+IE5ld1Nlc3Npb25UaWNr
ZXQ6CisgICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vzc2lvblRpY2tldCgpCisKKyAgICBh
c3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLk5FV19TRVNTSU9OX1RJQ0tF
VAorICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNr
ZXQudGlja2V0X2xpZmV0aW1lID0gYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgbmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldF9hZ2VfYWRkID0gYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgbmV3
X3Nlc3Npb25fdGlja2V0LnRpY2tldF9ub25jZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKyAgICAg
ICAgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAg
ICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgorICAgICAgICAgICAgZXh0ZW5zaW9u
X3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9
IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRl
bnNpb25UeXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0
Lm1heF9lYXJseV9kYXRhX3NpemUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQub3RoZXJfZXh0ZW5zaW9ucy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwgYnVmLnB1bGxfYnl0
ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHB1bGxf
bGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIG5ld19zZXNzaW9uX3Rp
Y2tldAorCisKK2RlZiBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlciwgbmV3X3Nl
c3Npb25fdGlja2V0OiBOZXdTZXNzaW9uVGlja2V0KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3Vp
bnQ4KEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUKQorICAgIHdpdGggcHVzaF9ibG9j
ayhidWYsIDMpOgorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0LnRp
Y2tldF9saWZldGltZSkKKyAgICAgICAgYnVmLnB1c2hfdWludDMyKG5ld19zZXNzaW9uX3RpY2tl
dC50aWNrZXRfYWdlX2FkZCkKKyAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAxLCBuZXdfc2Vzc2lv
bl90aWNrZXQudGlja2V0X25vbmNlKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDIsIG5ld19z
ZXNzaW9uX3RpY2tldC50aWNrZXQpCisKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6
CisgICAgICAgICAgICBpZiBuZXdfc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWlu
dDMyKG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplKQorCisgICAgICAgICAg
ICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBuZXdfc2Vzc2lvbl90aWNr
ZXQub3RoZXJfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9u
KGJ1ZiwgZXh0ZW5zaW9uX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhleHRlbnNpb25fdmFsdWUpCisKKworQGRhdGFjbGFzcworY2xhc3MgRW5jcnlwdGVkRXh0ZW5z
aW9uczoKKyAgICBhbHBuX3Byb3RvY29sOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGVhcmx5
X2RhdGE6IGJvb2wgPSBGYWxzZQorCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBsZVtp
bnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVsbF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWY6IEJ1ZmZlcikgLT4gRW5jcnlwdGVkRXh0ZW5zaW9uczoK
KyAgICBleHRlbnNpb25zID0gRW5jcnlwdGVkRXh0ZW5zaW9ucygpCisKKyAgICBhc3NlcnQgYnVm
LnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkVOQ1JZUFRFRF9FWFRFTlNJT05TCisgICAg
d2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisKKyAgICAgICAgZGVmIHB1bGxfZXh0ZW5zaW9uKCkg
LT4gTm9uZToKKyAgICAgICAgICAgIGV4dGVuc2lvbl90eXBlID0gYnVmLnB1bGxfdWludDE2KCkK
KyAgICAgICAgICAgIGV4dGVuc2lvbl9sZW5ndGggPSBidWYucHVsbF91aW50MTYoKQorICAgICAg
ICAgICAgaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMuYWxwbl9wcm90b2NvbCA9IHB1bGxfbGlzdCgKKyAgICAgICAgICAg
ICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1bGxfYWxwbl9wcm90b2NvbCwgYnVmKQorICAgICAg
ICAgICAgICAgIClbMF0KKyAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5z
aW9uVHlwZS5FQVJMWV9EQVRBOgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuZWFybHlfZGF0
YSA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5v
dGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90
eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1
cm4gZXh0ZW5zaW9ucworCisKK2RlZiBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVm
ZmVyLCBleHRlbnNpb25zOiBFbmNyeXB0ZWRFeHRlbnNpb25zKSAtPiBOb25lOgorICAgIGJ1Zi5w
dXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlMpCisgICAgd2l0aCBw
dXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAg
ICAgICAgICAgaWYgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLkFMUE4pOgor
ICAgICAgICAgICAgICAgICAgICBwdXNoX2xpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICAgICAgICAg
cGFydGlhbChwdXNoX2FscG5fcHJvdG9jb2wsIGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBbZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sXSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBpZiBleHRlbnNpb25zLmVhcmx5X2RhdGE6CisgICAgICAgICAgICAgICAgd2l0
aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQSk6CisgICAgICAg
ICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl90eXBlLCBleHRl
bnNpb25fdmFsdWUgaW4gZXh0ZW5zaW9ucy5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAg
ICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkKKworCitDZXJ0aWZpY2F0
ZUVudHJ5ID0gVHVwbGVbYnl0ZXMsIGJ5dGVzXQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIENlcnRp
ZmljYXRlOgorICAgIHJlcXVlc3RfY29udGV4dDogYnl0ZXMgPSBiIiIKKyAgICBjZXJ0aWZpY2F0
ZXM6IExpc3RbQ2VydGlmaWNhdGVFbnRyeV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkK
KworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZShidWY6IEJ1ZmZlcikgLT4gQ2VydGlmaWNhdGU6Cisg
ICAgY2VydGlmaWNhdGUgPSBDZXJ0aWZpY2F0ZSgpCisKKyAgICBhc3NlcnQgYnVmLnB1bGxfdWlu
dDgoKSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCA9IHB1bGxfb3BhcXVl
KGJ1ZiwgMSkKKworICAgICAgICBkZWYgcHVsbF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZl
cikgLT4gQ2VydGlmaWNhdGVFbnRyeToKKyAgICAgICAgICAgIGRhdGEgPSBwdWxsX29wYXF1ZShi
dWYsIDMpCisgICAgICAgICAgICBleHRlbnNpb25zID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorICAg
ICAgICAgICAgcmV0dXJuIChkYXRhLCBleHRlbnNpb25zKQorCisgICAgICAgIGNlcnRpZmljYXRl
LmNlcnRpZmljYXRlcyA9IHB1bGxfbGlzdCgKKyAgICAgICAgICAgIGJ1ZiwgMywgcGFydGlhbChw
dWxsX2NlcnRpZmljYXRlX2VudHJ5LCBidWYpCisgICAgICAgICkKKworICAgIHJldHVybiBjZXJ0
aWZpY2F0ZQorCisKK2RlZiBwdXNoX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyLCBjZXJ0aWZpY2F0
ZTogQ2VydGlmaWNhdGUpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlw
ZS5DRVJUSUZJQ0FURSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgcHVz
aF9vcGFxdWUoYnVmLCAxLCBjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQpCisKKyAgICAgICAg
ZGVmIHB1c2hfY2VydGlmaWNhdGVfZW50cnkoYnVmOiBCdWZmZXIsIGVudHJ5OiBDZXJ0aWZpY2F0
ZUVudHJ5KSAtPiBOb25lOgorICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAzLCBlbnRyeVsw
XSkKKyAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgZW50cnlbMV0pCisKKyAgICAgICAg
cHVzaF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1c2hfY2VydGlmaWNhdGVf
ZW50cnksIGJ1ZiksIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlcworICAgICAgICApCisKKworQGRh
dGFjbGFzcworY2xhc3MgQ2VydGlmaWNhdGVWZXJpZnk6CisgICAgYWxnb3JpdGhtOiBpbnQKKyAg
ICBzaWduYXR1cmU6IGJ5dGVzCisKKworZGVmIHB1bGxfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1Zjog
QnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhc3NlcnQgYnVmLnB1bGxfdWludDgo
KSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFX1ZFUklGWQorICAgIHdpdGggcHVsbF9ibG9j
ayhidWYsIDMpOgorICAgICAgICBhbGdvcml0aG0gPSBidWYucHVsbF91aW50MTYoKQorICAgICAg
ICBzaWduYXR1cmUgPSBwdWxsX29wYXF1ZShidWYsIDIpCisKKyAgICByZXR1cm4gQ2VydGlmaWNh
dGVWZXJpZnkoYWxnb3JpdGhtPWFsZ29yaXRobSwgc2lnbmF0dXJlPXNpZ25hdHVyZSkKKworCitk
ZWYgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZmZXIsIHZlcmlmeTogQ2VydGlmaWNh
dGVWZXJpZnkpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5DRVJU
SUZJQ0FURV9WRVJJRlkpCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1
Zi5wdXNoX3VpbnQxNih2ZXJpZnkuYWxnb3JpdGhtKQorICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDIsIHZlcmlmeS5zaWduYXR1cmUpCisKKworQGRhdGFjbGFzcworY2xhc3MgRmluaXNoZWQ6Cisg
ICAgdmVyaWZ5X2RhdGE6IGJ5dGVzID0gYiIiCisKKworZGVmIHB1bGxfZmluaXNoZWQoYnVmOiBC
dWZmZXIpIC0+IEZpbmlzaGVkOgorICAgIGZpbmlzaGVkID0gRmluaXNoZWQoKQorCisgICAgYXNz
ZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRAorICAgIGZpbmlz
aGVkLnZlcmlmeV9kYXRhID0gcHVsbF9vcGFxdWUoYnVmLCAzKQorCisgICAgcmV0dXJuIGZpbmlz
aGVkCisKKworZGVmIHB1c2hfZmluaXNoZWQoYnVmOiBCdWZmZXIsIGZpbmlzaGVkOiBGaW5pc2hl
ZCkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkZJTklTSEVEKQor
ICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMywgZmluaXNoZWQudmVyaWZ5X2RhdGEpCisKKworIyBDT05U
RVhUCisKKworY2xhc3MgS2V5U2NoZWR1bGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNpcGhl
cl9zdWl0ZTogQ2lwaGVyU3VpdGUpOgorICAgICAgICBzZWxmLmFsZ29yaXRobSA9IGNpcGhlcl9z
dWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICAgICAgc2VsZi5jaXBoZXJfc3VpdGUgPSBjaXBo
ZXJfc3VpdGUKKyAgICAgICAgc2VsZi5nZW5lcmF0aW9uID0gMAorICAgICAgICBzZWxmLmhhc2gg
PSBoYXNoZXMuSGFzaChzZWxmLmFsZ29yaXRobSwgZGVmYXVsdF9iYWNrZW5kKCkpCisgICAgICAg
IHNlbGYuaGFzaF9lbXB0eV92YWx1ZSA9IHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorICAg
ICAgICBzZWxmLnNlY3JldCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQorCisg
ICAgZGVmIGNlcnRpZmljYXRlX3ZlcmlmeV9kYXRhKHNlbGYsIGNvbnRleHRfc3RyaW5nOiBieXRl
cykgLT4gYnl0ZXM6CisgICAgICAgIHJldHVybiBiIiAiICogNjQgKyBjb250ZXh0X3N0cmluZyAr
IGIiXHgwMCIgKyBzZWxmLmhhc2guY29weSgpLmZpbmFsaXplKCkKKworICAgIGRlZiBmaW5pc2hl
ZF92ZXJpZnlfZGF0YShzZWxmLCBzZWNyZXQ6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgaG1h
Y19rZXkgPSBoa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFs
Z29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1zZWNyZXQsCisgICAgICAgICAgICBsYWJlbD1i
ImZpbmlzaGVkIiwKKyAgICAgICAgICAgIGhhc2hfdmFsdWU9YiIiLAorICAgICAgICAgICAgbGVu
Z3RoPXNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplLAorICAgICAgICApCisKKyAgICAgICAgaCA9
IGhtYWMuSE1BQyhobWFjX2tleSwgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLCBiYWNrZW5kPWRl
ZmF1bHRfYmFja2VuZCgpKQorICAgICAgICBoLnVwZGF0ZShzZWxmLmhhc2guY29weSgpLmZpbmFs
aXplKCkpCisgICAgICAgIHJldHVybiBoLmZpbmFsaXplKCkKKworICAgIGRlZiBkZXJpdmVfc2Vj
cmV0KHNlbGYsIGxhYmVsOiBieXRlcykgLT4gYnl0ZXM6CisgICAgICAgIHJldHVybiBoa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29yaXRobSwKKyAgICAg
ICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWxhYmVsLAorICAg
ICAgICAgICAgaGFzaF92YWx1ZT1zZWxmLmhhc2guY29weSgpLmZpbmFsaXplKCksCisgICAgICAg
ICAgICBsZW5ndGg9c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAg
IGRlZiBleHRyYWN0KHNlbGYsIGtleV9tYXRlcmlhbDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSkg
LT4gTm9uZToKKyAgICAgICAgaWYga2V5X21hdGVyaWFsIGlzIE5vbmU6CisgICAgICAgICAgICBr
ZXlfbWF0ZXJpYWwgPSBieXRlcyhzZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSkKKworICAgICAg
ICBpZiBzZWxmLmdlbmVyYXRpb246CisgICAgICAgICAgICBzZWxmLnNlY3JldCA9IGhrZGZfZXhw
YW5kX2xhYmVsKAorICAgICAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29yaXRobSwKKyAg
ICAgICAgICAgICAgICBzZWNyZXQ9c2VsZi5zZWNyZXQsCisgICAgICAgICAgICAgICAgbGFiZWw9
YiJkZXJpdmVkIiwKKyAgICAgICAgICAgICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaF9lbXB0eV92
YWx1ZSwKKyAgICAgICAgICAgICAgICBsZW5ndGg9c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUs
CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5nZW5lcmF0aW9uICs9IDEKKyAgICAgICAg
c2VsZi5zZWNyZXQgPSBoa2RmX2V4dHJhY3QoCisgICAgICAgICAgICBhbGdvcml0aG09c2VsZi5h
bGdvcml0aG0sIHNhbHQ9c2VsZi5zZWNyZXQsIGtleV9tYXRlcmlhbD1rZXlfbWF0ZXJpYWwKKyAg
ICAgICAgKQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6IGJ5dGVzKSAtPiBOb25l
OgorICAgICAgICBzZWxmLmhhc2gudXBkYXRlKGRhdGEpCisKKworY2xhc3MgS2V5U2NoZWR1bGVQ
cm94eToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1aXRlczogTGlzdFtDaXBoZXJT
dWl0ZV0pOgorICAgICAgICBzZWxmLl9fc2NoZWR1bGVzID0gZGljdChtYXAobGFtYmRhIGM6IChj
LCBLZXlTY2hlZHVsZShjKSksIGNpcGhlcl9zdWl0ZXMpKQorCisgICAgZGVmIGV4dHJhY3Qoc2Vs
Ziwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAtPiBOb25lOgorICAgICAg
ICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgorICAgICAgICAgICAgay5leHRy
YWN0KGtleV9tYXRlcmlhbCkKKworICAgIGRlZiBzZWxlY3Qoc2VsZiwgY2lwaGVyX3N1aXRlOiBD
aXBoZXJTdWl0ZSkgLT4gS2V5U2NoZWR1bGU6CisgICAgICAgIHJldHVybiBzZWxmLl9fc2NoZWR1
bGVzW2NpcGhlcl9zdWl0ZV0KKworICAgIGRlZiB1cGRhdGVfaGFzaChzZWxmLCBkYXRhOiBieXRl
cykgLT4gTm9uZToKKyAgICAgICAgZm9yIGsgaW4gc2VsZi5fX3NjaGVkdWxlcy52YWx1ZXMoKToK
KyAgICAgICAgICAgIGsudXBkYXRlX2hhc2goZGF0YSkKKworCitDSVBIRVJfU1VJVEVTID0gewor
ICAgIENpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NjogaGFzaGVzLlNIQTI1NiwKKyAgICBD
aXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQ6IGhhc2hlcy5TSEEzODQsCisgICAgQ2lwaGVy
U3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2OiBoYXNoZXMuU0hBMjU2LAorfQorCitTSUdO
QVRVUkVfQUxHT1JJVEhNUzogRGljdCA9IHsKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uRUNEU0Ff
U0VDUDI1NlIxX1NIQTI1NjogKE5vbmUsIGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVyZUFs
Z29yaXRobS5FQ0RTQV9TRUNQMzg0UjFfU0hBMzg0OiAoTm9uZSwgaGFzaGVzLlNIQTM4NCksCisg
ICAgU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1A1MjFSMV9TSEE1MTI6IChOb25lLCBoYXNo
ZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTE6IChwYWRk
aW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hBMSksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9Q
S0NTMV9TSEEyNTY6IChwYWRkaW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hBMjU2KSwKKyAgICBTaWdu
YXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTM4NDogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hl
cy5TSEEzODQpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBNTEyOiAocGFk
ZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNIQTUxMiksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJT
QV9QU1NfUlNBRV9TSEEyNTY6IChwYWRkaW5nLlBTUywgaGFzaGVzLlNIQTI1NiksCisgICAgU2ln
bmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEzODQ6IChwYWRkaW5nLlBTUywgaGFzaGVz
LlNIQTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEE1MTI6IChw
YWRkaW5nLlBTUywgaGFzaGVzLlNIQTUxMiksCit9CisKK0dST1VQX1RPX0NVUlZFOiBEaWN0ID0g
eworICAgIEdyb3VwLlNFQ1AyNTZSMTogZWMuU0VDUDI1NlIxLAorICAgIEdyb3VwLlNFQ1AzODRS
MTogZWMuU0VDUDM4NFIxLAorICAgIEdyb3VwLlNFQ1A1MjFSMTogZWMuU0VDUDUyMVIxLAorfQor
Q1VSVkVfVE9fR1JPVVAgPSBkaWN0KCh2LCBrKSBmb3IgaywgdiBpbiBHUk9VUF9UT19DVVJWRS5p
dGVtcygpKQorCisKK2RlZiBjaXBoZXJfc3VpdGVfaGFzaChjaXBoZXJfc3VpdGU6IENpcGhlclN1
aXRlKSAtPiBoYXNoZXMuSGFzaEFsZ29yaXRobToKKyAgICByZXR1cm4gQ0lQSEVSX1NVSVRFU1tj
aXBoZXJfc3VpdGVdKCkKKworCitkZWYgZGVjb2RlX3B1YmxpY19rZXkoCisgICAga2V5X3NoYXJl
OiBLZXlTaGFyZUVudHJ5LAorKSAtPiBVbmlvbltlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5LCB4
MjU1MTkuWDI1NTE5UHVibGljS2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXksIE5vbmVdOgorICAgIGlm
IGtleV9zaGFyZVswXSA9PSBHcm91cC5YMjU1MTk6CisgICAgICAgIHJldHVybiB4MjU1MTkuWDI1
NTE5UHVibGljS2V5LmZyb21fcHVibGljX2J5dGVzKGtleV9zaGFyZVsxXSkKKyAgICBlbGlmIGtl
eV9zaGFyZVswXSA9PSBHcm91cC5YNDQ4OgorICAgICAgICByZXR1cm4geDQ0OC5YNDQ4UHVibGlj
S2V5LmZyb21fcHVibGljX2J5dGVzKGtleV9zaGFyZVsxXSkKKyAgICBlbGlmIGtleV9zaGFyZVsw
XSBpbiBHUk9VUF9UT19DVVJWRToKKyAgICAgICAgcmV0dXJuIGVjLkVsbGlwdGljQ3VydmVQdWJs
aWNLZXkuZnJvbV9lbmNvZGVkX3BvaW50KAorICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVba2V5
X3NoYXJlWzBdXSgpLCBrZXlfc2hhcmVbMV0KKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAg
IHJldHVybiBOb25lCisKKworZGVmIGVuY29kZV9wdWJsaWNfa2V5KAorICAgIHB1YmxpY19rZXk6
IFVuaW9uWworICAgICAgICBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5LCB4MjU1MTkuWDI1NTE5
UHVibGljS2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkKKyAgICBdCispIC0+IEtleVNoYXJlRW50cnk6
CisgICAgaWYgaXNpbnN0YW5jZShwdWJsaWNfa2V5LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5KToK
KyAgICAgICAgcmV0dXJuIChHcm91cC5YMjU1MTksIHB1YmxpY19rZXkucHVibGljX2J5dGVzKEVu
Y29kaW5nLlJhdywgUHVibGljRm9ybWF0LlJhdykpCisgICAgZWxpZiBpc2luc3RhbmNlKHB1Ymxp
Y19rZXksIHg0NDguWDQ0OFB1YmxpY0tleSk6CisgICAgICAgIHJldHVybiAoR3JvdXAuWDQ0OCwg
cHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkK
KyAgICByZXR1cm4gKAorICAgICAgICBDVVJWRV9UT19HUk9VUFtwdWJsaWNfa2V5LmN1cnZlLl9f
Y2xhc3NfX10sCisgICAgICAgIHB1YmxpY19rZXkucHVibGljX2J5dGVzKEVuY29kaW5nLlg5NjIs
IFB1YmxpY0Zvcm1hdC5VbmNvbXByZXNzZWRQb2ludCksCisgICAgKQorCisKK2RlZiBuZWdvdGlh
dGUoCisgICAgc3VwcG9ydGVkOiBMaXN0W1RdLCBvZmZlcmVkOiBPcHRpb25hbFtMaXN0W0FueV1d
LCBleGM6IE9wdGlvbmFsW0FsZXJ0XSA9IE5vbmUKKykgLT4gVDoKKyAgICBpZiBvZmZlcmVkIGlz
IG5vdCBOb25lOgorICAgICAgICBmb3IgYyBpbiBzdXBwb3J0ZWQ6CisgICAgICAgICAgICBpZiBj
IGluIG9mZmVyZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGMKKworICAgIGlmIGV4YyBpcyBu
b3QgTm9uZToKKyAgICAgICAgcmFpc2UgZXhjCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgc2ln
bmF0dXJlX2FsZ29yaXRobV9wYXJhbXMoCisgICAgc2lnbmF0dXJlX2FsZ29yaXRobTogaW50LAor
KSAtPiBVbmlvbltUdXBsZVtlYy5FQ0RTQV0sIFR1cGxlW3BhZGRpbmcuQXN5bW1ldHJpY1BhZGRp
bmcsIGhhc2hlcy5IYXNoQWxnb3JpdGhtXV06CisgICAgcGFkZGluZ19jbHMsIGFsZ29yaXRobV9j
bHMgPSBTSUdOQVRVUkVfQUxHT1JJVEhNU1tzaWduYXR1cmVfYWxnb3JpdGhtXQorICAgIGFsZ29y
aXRobSA9IGFsZ29yaXRobV9jbHMoKQorICAgIGlmIHBhZGRpbmdfY2xzIGlzIE5vbmU6CisgICAg
ICAgIHJldHVybiAoZWMuRUNEU0EoYWxnb3JpdGhtKSwpCisgICAgZWxpZiBwYWRkaW5nX2NscyA9
PSBwYWRkaW5nLlBTUzoKKyAgICAgICAgcGFkZGluZ19vYmogPSBwYWRkaW5nX2NscygKKyAgICAg
ICAgICAgIG1nZj1wYWRkaW5nLk1HRjEoYWxnb3JpdGhtKSwgc2FsdF9sZW5ndGg9YWxnb3JpdGht
LmRpZ2VzdF9zaXplCisgICAgICAgICkKKyAgICBlbHNlOgorICAgICAgICBwYWRkaW5nX29iaiA9
IHBhZGRpbmdfY2xzKCkKKyAgICByZXR1cm4gcGFkZGluZ19vYmosIGFsZ29yaXRobQorCisKK0Bj
b250ZXh0bWFuYWdlcgorZGVmIHB1c2hfbWVzc2FnZSgKKyAgICBrZXlfc2NoZWR1bGU6IFVuaW9u
W0tleVNjaGVkdWxlLCBLZXlTY2hlZHVsZVByb3h5XSwgYnVmOiBCdWZmZXIKKykgLT4gR2VuZXJh
dG9yOgorICAgIGhhc2hfc3RhcnQgPSBidWYudGVsbCgpCisgICAgeWllbGQKKyAgICBrZXlfc2No
ZWR1bGUudXBkYXRlX2hhc2goYnVmLmRhdGFfc2xpY2UoaGFzaF9zdGFydCwgYnVmLnRlbGwoKSkp
CisKKworIyBjYWxsYmFjayB0eXBlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIFNlc3Npb25UaWNr
ZXQ6CisgICAgIiIiCisgICAgQSBUTFMgc2Vzc2lvbiB0aWNrZXQgZm9yIHNlc3Npb24gcmVzdW1w
dGlvbi4KKyAgICAiIiIKKworICAgIGFnZV9hZGQ6IGludAorICAgIGNpcGhlcl9zdWl0ZTogQ2lw
aGVyU3VpdGUKKyAgICBub3RfdmFsaWRfYWZ0ZXI6IGRhdGV0aW1lLmRhdGV0aW1lCisgICAgbm90
X3ZhbGlkX2JlZm9yZTogZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICByZXN1bXB0aW9uX3NlY3JldDog
Ynl0ZXMKKyAgICBzZXJ2ZXJfbmFtZTogc3RyCisgICAgdGlja2V0OiBieXRlcworCisgICAgbWF4
X2Vhcmx5X2RhdGFfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNp
b25zOiBMaXN0W1R1cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0
KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ZhbGlkKHNlbGYpIC0+IGJvb2w6CisgICAg
ICAgIG5vdyA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBub3cgPj0gc2VsZi5ub3RfdmFsaWRf
YmVmb3JlIGFuZCBub3cgPD0gc2VsZi5ub3RfdmFsaWRfYWZ0ZXIKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBvYmZ1c2NhdGVkX2FnZShzZWxmKSAtPiBpbnQ6CisgICAgICAgIGFnZSA9IGludCgo
dXRjbm93KCkgLSBzZWxmLm5vdF92YWxpZF9iZWZvcmUpLnRvdGFsX3NlY29uZHMoKSkKKyAgICAg
ICAgcmV0dXJuIChhZ2UgKyBzZWxmLmFnZV9hZGQpICUgKDEgPDwgMzIpCisKKworQWxwbkhhbmRs
ZXIgPSBDYWxsYWJsZVtbc3RyXSwgTm9uZV0KK1Nlc3Npb25UaWNrZXRGZXRjaGVyID0gQ2FsbGFi
bGVbW2J5dGVzXSwgT3B0aW9uYWxbU2Vzc2lvblRpY2tldF1dCitTZXNzaW9uVGlja2V0SGFuZGxl
ciA9IENhbGxhYmxlW1tTZXNzaW9uVGlja2V0XSwgTm9uZV0KKworCitjbGFzcyBDb250ZXh0Ogor
ICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50OiBib29s
LAorICAgICAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUsCisg
ICAgICAgIGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICAgICAgY2FmaWxlOiBP
cHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9u
ZSwKKyAgICAgICAgbG9nZ2VyOiBPcHRpb25hbFtVbmlvbltsb2dnaW5nLkxvZ2dlciwgbG9nZ2lu
Zy5Mb2dnZXJBZGFwdGVyXV0gPSBOb25lLAorICAgICAgICBtYXhfZWFybHlfZGF0YTogT3B0aW9u
YWxbaW50XSA9IE5vbmUsCisgICAgICAgIHNlcnZlcl9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9u
ZSwKKyAgICAgICAgdmVyaWZ5X21vZGU6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICk6Cisg
ICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9hbHBuX3Byb3RvY29scyA9IGFs
cG5fcHJvdG9jb2xzCisgICAgICAgIHNlbGYuX2NhZGF0YSA9IGNhZGF0YQorICAgICAgICBzZWxm
Ll9jYWZpbGUgPSBjYWZpbGUKKyAgICAgICAgc2VsZi5fY2FwYXRoID0gY2FwYXRoCisgICAgICAg
IHNlbGYuY2VydGlmaWNhdGU6IE9wdGlvbmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAg
ICAgICBzZWxmLmNlcnRpZmljYXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10K
KyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleTogT3B0aW9uYWxbCisgICAgICAg
ICAgICBVbmlvbltkc2EuRFNBUHJpdmF0ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXks
IHJzYS5SU0FQcml2YXRlS2V5XQorICAgICAgICBdID0gTm9uZQorICAgICAgICBzZWxmLmhhbmRz
aGFrZV9leHRlbnNpb25zOiBMaXN0W0V4dGVuc2lvbl0gPSBbXQorICAgICAgICBzZWxmLl9tYXhf
ZWFybHlfZGF0YSA9IG1heF9lYXJseV9kYXRhCisgICAgICAgIHNlbGYuc2Vzc2lvbl90aWNrZXQ6
IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFt
ZSA9IHNlcnZlcl9uYW1lCisgICAgICAgIGlmIHZlcmlmeV9tb2RlIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fdmVyaWZ5X21vZGUgPSB2ZXJpZnlfbW9kZQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRCBpZiBpc19j
bGllbnQgZWxzZSBzc2wuQ0VSVF9OT05FCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAg
c2VsZi5hbHBuX2NiOiBPcHRpb25hbFtBbHBuSGFuZGxlcl0gPSBOb25lCisgICAgICAgIHNlbGYu
Z2V0X3Nlc3Npb25fdGlja2V0X2NiOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0RmV0Y2hlcl0gPSBO
b25lCisgICAgICAgIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiOiBPcHRpb25hbFtTZXNzaW9u
VGlja2V0SGFuZGxlcl0gPSBOb25lCisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2Ni
OiBDYWxsYWJsZVsKKyAgICAgICAgICAgIFtEaXJlY3Rpb24sIEVwb2NoLCBDaXBoZXJTdWl0ZSwg
Ynl0ZXNdLCBOb25lCisgICAgICAgIF0gPSBsYW1iZGEgZCwgZSwgYywgczogTm9uZQorCisgICAg
ICAgICMgc3VwcG9ydGVkIHBhcmFtZXRlcnMKKyAgICAgICAgc2VsZi5fY2lwaGVyX3N1aXRlcyA9
IFsKKyAgICAgICAgICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAg
ICAgIENpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwKKyAgICAgICAgICAgIENpcGhlclN1
aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgXQorICAgICAgICBzZWxmLl9j
b21wcmVzc2lvbl9tZXRob2RzOiBMaXN0W2ludF0gPSBbQ29tcHJlc3Npb25NZXRob2QuTlVMTF0K
KyAgICAgICAgc2VsZi5fcHNrX2tleV9leGNoYW5nZV9tb2RlczogTGlzdFtpbnRdID0gW1Bza0tl
eUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICBzZWxmLl9zaWduYXR1cmVfYWxnb3Jp
dGhtczogTGlzdFtpbnRdID0gWworICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9Q
U1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VD
UDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFf
U0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAor
ICAgICAgICBdCisgICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMgPSBbR3JvdXAuU0VDUDI1
NlIxXQorICAgICAgICBpZiBkZWZhdWx0X2JhY2tlbmQoKS54MjU1MTlfc3VwcG9ydGVkKCk6Cisg
ICAgICAgICAgICBzZWxmLl9zdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5YMjU1MTkpCisg
ICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLng0NDhfc3VwcG9ydGVkKCk6CisgICAgICAgICAg
ICBzZWxmLl9zdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5YNDQ4KQorICAgICAgICBzZWxm
Ll9zdXBwb3J0ZWRfdmVyc2lvbnMgPSBbVExTX1ZFUlNJT05fMV8zXQorCisgICAgICAgICMgc3Rh
dGUKKyAgICAgICAgc2VsZi5hbHBuX25lZ290aWF0ZWQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisg
ICAgICAgIHNlbGYuZWFybHlfZGF0YV9hY2NlcHRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYua2V5
X3NjaGVkdWxlOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0gPSBOb25lCisgICAgICAgIHNlbGYucmVj
ZWl2ZWRfZXh0ZW5zaW9uczogT3B0aW9uYWxbTGlzdFtFeHRlbnNpb25dXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzazogT3B0aW9uYWxbS2V5U2NoZWR1bGVdID0gTm9uZQor
ICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHk6IE9wdGlvbmFsW0tleVNjaGVkdWxlUHJv
eHldID0gTm9uZQorICAgICAgICBzZWxmLl9uZXdfc2Vzc2lvbl90aWNrZXQ6IE9wdGlvbmFsW05l
d1Nlc3Npb25UaWNrZXRdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlOiBP
cHRpb25hbFt4NTA5LkNlcnRpZmljYXRlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcGVlcl9jZXJ0
aWZpY2F0ZV9jaGFpbjogTGlzdFt4NTA5LkNlcnRpZmljYXRlXSA9IFtdCisgICAgICAgIHNlbGYu
X3JlY2VpdmVfYnVmZmVyID0gYiIiCisgICAgICAgIHNlbGYuX3Nlc3Npb25fcmVzdW1lZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuX2VuY19rZXk6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5fZGVjX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLl9f
bG9nZ2VyID0gbG9nZ2VyCisKKyAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXk6IE9wdGlvbmFs
W2VjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5XSA9IE5vbmUKKyAgICAgICAgc2VsZi5feDI1NTE5
X3ByaXZhdGVfa2V5OiBPcHRpb25hbFt4MjU1MTkuWDI1NTE5UHJpdmF0ZUtleV0gPSBOb25lCisg
ICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXk6IE9wdGlvbmFsW3g0NDguWDQ0OFByaXZhdGVL
ZXldID0gTm9uZQorCisgICAgICAgIGlmIGlzX2NsaWVudDoKKyAgICAgICAgICAgIHNlbGYuY2xp
ZW50X3JhbmRvbSA9IG9zLnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnNlc3Npb25faWQg
PSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9I
QU5EU0hBS0VfU1RBUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2xpZW50X3Jh
bmRvbSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IE5vbmUKKyAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxMTworCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHNlc3Npb25fcmVzdW1lZChzZWxmKSAtPiBib29sOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IHVzZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2Vzc2lv
bl9yZXN1bWVkCisKKyAgICBkZWYgaGFuZGxlX21lc3NhZ2UoCisgICAgICAgIHNlbGYsIGlucHV0
X2RhdGE6IGJ5dGVzLCBvdXRwdXRfYnVmOiBEaWN0W0Vwb2NoLCBCdWZmZXJdCisgICAgKSAtPiBO
b25lOgorICAgICAgICBpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9IQU5EU0hBS0VfU1RB
UlQ6CisgICAgICAgICAgICBzZWxmLl9jbGllbnRfc2VuZF9oZWxsbyhvdXRwdXRfYnVmW0Vwb2No
LklOSVRJQUxdKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcmVjZWl2ZV9i
dWZmZXIgKz0gaW5wdXRfZGF0YQorICAgICAgICB3aGlsZSBsZW4oc2VsZi5fcmVjZWl2ZV9idWZm
ZXIpID49IDQ6CisgICAgICAgICAgICAjIGRldGVybWluZSBtZXNzYWdlIGxlbmd0aAorICAgICAg
ICAgICAgbWVzc2FnZV90eXBlID0gc2VsZi5fcmVjZWl2ZV9idWZmZXJbMF0KKyAgICAgICAgICAg
IG1lc3NhZ2VfbGVuZ3RoID0gMAorICAgICAgICAgICAgZm9yIGIgaW4gc2VsZi5fcmVjZWl2ZV9i
dWZmZXJbMTo0XToKKyAgICAgICAgICAgICAgICBtZXNzYWdlX2xlbmd0aCA9IChtZXNzYWdlX2xl
bmd0aCA8PCA4KSB8IGIKKyAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoICs9IDQKKworICAgICAg
ICAgICAgIyBjaGVjayBtZXNzYWdlIGlzIGNvbXBsZXRlCisgICAgICAgICAgICBpZiBsZW4oc2Vs
Zi5fcmVjZWl2ZV9idWZmZXIpIDwgbWVzc2FnZV9sZW5ndGg6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlcls6bWVzc2FnZV9s
ZW5ndGhdCisgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZlciA9IHNlbGYuX3JlY2VpdmVf
YnVmZmVyW21lc3NhZ2VfbGVuZ3RoOl0KKworICAgICAgICAgICAgaW5wdXRfYnVmID0gQnVmZmVy
KGRhdGE9bWVzc2FnZSkKKworICAgICAgICAgICAgIyBjbGllbnQgc3RhdGVzCisKKyAgICAgICAg
ICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE86Cisg
ICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hF
TExPOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFuZGxlX2hlbGxvKGlucHV0
X2J1Ziwgb3V0cHV0X2J1ZltFcG9jaC5JTklUSUFMXSkKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAg
ICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhU
RU5TSU9OUzoKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlw
ZS5FTkNSWVBURURfRVhURU5TSU9OUzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xpZW50
X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhpbnB1dF9idWYpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VSVElG
SUNBVEVfUkVRVUVTVF9PUl9DRVJUSUZJQ0FURToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdl
X3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FURToKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fY2xpZW50X2hhbmRsZV9jZXJ0aWZpY2F0ZShpbnB1dF9idWYpCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGNlcnRpZmljYXRl
IHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2Fn
ZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VS
VElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5k
c2hha2VUeXBlLkNFUlRJRklDQVRFX1ZFUklGWToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y2xpZW50X2hhbmRsZV9jZXJ0aWZpY2F0ZV92ZXJpZnkoaW5wdXRfYnVmKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3Nh
Z2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJ
TklTSEVEOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBl
LkZJTklTSEVEOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFuZGxlX2Zpbmlz
aGVkKGlucHV0X2J1Ziwgb3V0cHV0X2J1ZltFcG9jaC5IQU5EU0hBS0VdKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3Nh
Z2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfUE9TVF9IQU5E
U0hBS0U6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUu
TkVXX1NFU1NJT05fVElDS0VUOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFu
ZGxlX25ld19zZXNzaW9uX3RpY2tldChpbnB1dF9idWYpCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorCisgICAg
ICAgICAgICAjIHNlcnZlciBzdGF0ZXMKKworICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09
IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPOgorICAgICAgICAgICAgICAgIGlmIG1l
c3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTzoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9oZWxsbygKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0X2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guSU5J
VElBTF0sCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFL
RV0sCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfYnVmW0Vwb2NoLk9ORV9SVFRdLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBz
ZWxmLnN0YXRlID09IFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQ6CisgICAgICAgICAgICAg
ICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRklOSVNIRUQ6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NlcnZlcl9oYW5kbGVfZmluaXNoZWQoaW5wdXRfYnVmLCBvdXRwdXRf
YnVmW0Vwb2NoLk9ORV9SVFRdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2Vs
Zi5zdGF0ZSA9PSBTdGF0ZS5TRVJWRVJfUE9TVF9IQU5EU0hBS0U6CisgICAgICAgICAgICAgICAg
cmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorCisgICAgICAgICAgICBhc3NlcnQgaW5wdXRf
YnVmLmVvZigpCisKKyAgICBkZWYgX2J1aWxkX3Nlc3Npb25fdGlja2V0KAorICAgICAgICBzZWxm
LCBuZXdfc2Vzc2lvbl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQKKyAgICApIC0+IFNlc3Npb25U
aWNrZXQ6CisgICAgICAgIHJlc3VtcHRpb25fbWFzdGVyX3NlY3JldCA9IHNlbGYua2V5X3NjaGVk
dWxlLmRlcml2ZV9zZWNyZXQoYiJyZXMgbWFzdGVyIikKKyAgICAgICAgcmVzdW1wdGlvbl9zZWNy
ZXQgPSBoa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmtleV9z
Y2hlZHVsZS5hbGdvcml0aG0sCisgICAgICAgICAgICBzZWNyZXQ9cmVzdW1wdGlvbl9tYXN0ZXJf
c2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9YiJyZXN1bXB0aW9uIiwKKyAgICAgICAgICAgIGhh
c2hfdmFsdWU9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9ub25jZSwKKyAgICAgICAgICAgIGxl
bmd0aD1zZWxmLmtleV9zY2hlZHVsZS5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkK
KworICAgICAgICB0aW1lc3RhbXAgPSB1dGNub3coKQorICAgICAgICByZXR1cm4gU2Vzc2lvblRp
Y2tldCgKKyAgICAgICAgICAgIGFnZV9hZGQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9hZ2Vf
YWRkLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPXNlbGYua2V5X3NjaGVkdWxlLmNpcGhlcl9z
dWl0ZSwKKyAgICAgICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9bmV3X3Nlc3Npb25fdGlja2V0
Lm1heF9lYXJseV9kYXRhX3NpemUsCisgICAgICAgICAgICBub3RfdmFsaWRfYWZ0ZXI9dGltZXN0
YW1wCisgICAgICAgICAgICArIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPW5ld19zZXNzaW9u
X3RpY2tldC50aWNrZXRfbGlmZXRpbWUpLAorICAgICAgICAgICAgbm90X3ZhbGlkX2JlZm9yZT10
aW1lc3RhbXAsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNoYWtlX2V4
dGVuc2lvbnMsCisgICAgICAgICAgICByZXN1bXB0aW9uX3NlY3JldD1yZXN1bXB0aW9uX3NlY3Jl
dCwKKyAgICAgICAgICAgIHNlcnZlcl9uYW1lPXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAg
ICAgdGlja2V0PW5ld19zZXNzaW9uX3RpY2tldC50aWNrZXQsCisgICAgICAgICkKKworICAgIGRl
ZiBfY2xpZW50X3NlbmRfaGVsbG8oc2VsZiwgb3V0cHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgor
ICAgICAgICBrZXlfc2hhcmU6IExpc3RbS2V5U2hhcmVFbnRyeV0gPSBbXQorICAgICAgICBzdXBw
b3J0ZWRfZ3JvdXBzOiBMaXN0W2ludF0gPSBbXQorCisgICAgICAgIGZvciBncm91cCBpbiBzZWxm
Ll9zdXBwb3J0ZWRfZ3JvdXBzOgorICAgICAgICAgICAgaWYgZ3JvdXAgPT0gR3JvdXAuU0VDUDI1
NlIxOgorICAgICAgICAgICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVf
cHJpdmF0ZV9rZXkoCisgICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW0dyb3VwLlNF
Q1AyNTZSMV0oKSwgZGVmYXVsdF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAga2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl9lY19wcml2
YXRlX2tleS5wdWJsaWNfa2V5KCkpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHMu
YXBwZW5kKEdyb3VwLlNFQ1AyNTZSMSkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAu
WDI1NTE5OgorICAgICAgICAgICAgICAgIHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUx
OS5YMjU1MTlQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBrZXlfc2hhcmUu
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBlbmNvZGVfcHVibGljX2tleShzZWxmLl94MjU1
MTlfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5YMjU1MTkpCisgICAgICAgICAg
ICBlbGlmIGdyb3VwID09IEdyb3VwLlg0NDg6CisgICAgICAgICAgICAgICAgc2VsZi5feDQ0OF9w
cml2YXRlX2tleSA9IHg0NDguWDQ0OFByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAg
ICAgIGtleV9zaGFyZS5hcHBlbmQoZW5jb2RlX3B1YmxpY19rZXkoc2VsZi5feDQ0OF9wcml2YXRl
X2tleS5wdWJsaWNfa2V5KCkpKQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHMuYXBw
ZW5kKEdyb3VwLlg0NDgpCisgICAgICAgICAgICBlbGlmIGdyb3VwID09IEdyb3VwLkdSRUFTRToK
KyAgICAgICAgICAgICAgICBrZXlfc2hhcmUuYXBwZW5kKChHcm91cC5HUkVBU0UsIGIiXHgwMCIp
KQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLkdSRUFTRSkK
KworICAgICAgICBhc3NlcnQgbGVuKGtleV9zaGFyZSksICJubyBrZXkgc2hhcmUgZW50cmllcyIK
KworICAgICAgICBoZWxsbyA9IENsaWVudEhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYu
Y2xpZW50X3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAor
ICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1baW50KHgpIGZvciB4IGluIHNlbGYuX2NpcGhlcl9z
dWl0ZXNdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1zZWxmLl9jb21wcmVzc2lv
bl9tZXRob2RzLAorICAgICAgICAgICAgYWxwbl9wcm90b2NvbHM9c2VsZi5fYWxwbl9wcm90b2Nv
bHMsCisgICAgICAgICAgICBrZXlfc2hhcmU9a2V5X3NoYXJlLAorICAgICAgICAgICAgcHNrX2tl
eV9leGNoYW5nZV9tb2Rlcz1zZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzCisgICAgICAgICAg
ICBpZiAoc2VsZi5zZXNzaW9uX3RpY2tldCBvciBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYiBp
cyBub3QgTm9uZSkKKyAgICAgICAgICAgIGVsc2UgTm9uZSwKKyAgICAgICAgICAgIHNlcnZlcl9u
YW1lPXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXM9
c2VsZi5fc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBzdXBwb3J0ZWRfZ3JvdXBz
PXN1cHBvcnRlZF9ncm91cHMsCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9c2VsZi5f
c3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1zZWxmLmhh
bmRzaGFrZV9leHRlbnNpb25zLAorICAgICAgICApCisKKyAgICAgICAgIyBQU0sKKyAgICAgICAg
aWYgc2VsZi5zZXNzaW9uX3RpY2tldCBhbmQgc2VsZi5zZXNzaW9uX3RpY2tldC5pc192YWxpZDoK
KyAgICAgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2sgPSBLZXlTY2hlZHVsZShzZWxmLnNl
c3Npb25fdGlja2V0LmNpcGhlcl9zdWl0ZSkKKyAgICAgICAgICAgIHNlbGYuX2tleV9zY2hlZHVs
ZV9wc2suZXh0cmFjdChzZWxmLnNlc3Npb25fdGlja2V0LnJlc3VtcHRpb25fc2VjcmV0KQorICAg
ICAgICAgICAgYmluZGVyX2tleSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suZGVyaXZlX3NlY3Jl
dChiInJlcyBiaW5kZXIiKQorICAgICAgICAgICAgYmluZGVyX2xlbmd0aCA9IHNlbGYuX2tleV9z
Y2hlZHVsZV9wc2suYWxnb3JpdGhtLmRpZ2VzdF9zaXplCisKKyAgICAgICAgICAgICMgdXBkYXRl
IGhlbGxvCisgICAgICAgICAgICBpZiBzZWxmLnNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRh
X3NpemUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRy
dWUKKyAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5ID0gT2ZmZXJlZFBza3MoCisgICAg
ICAgICAgICAgICAgaWRlbnRpdGllcz1bCisgICAgICAgICAgICAgICAgICAgIChzZWxmLnNlc3Np
b25fdGlja2V0LnRpY2tldCwgc2VsZi5zZXNzaW9uX3RpY2tldC5vYmZ1c2NhdGVkX2FnZSkKKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGJpbmRlcnM9W2J5dGVzKGJpbmRlcl9s
ZW5ndGgpXSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBzZXJpYWxpemUgaGVsbG8g
d2l0aG91dCBiaW5kZXIKKyAgICAgICAgICAgIHRtcF9idWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAy
NCkKKyAgICAgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKHRtcF9idWYsIGhlbGxvKQorCisgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBiaW5kZXIKKyAgICAgICAgICAgIGhhc2hfb2Zmc2V0ID0gdG1w
X2J1Zi50ZWxsKCkgLSBiaW5kZXJfbGVuZ3RoIC0gMworICAgICAgICAgICAgc2VsZi5fa2V5X3Nj
aGVkdWxlX3Bzay51cGRhdGVfaGFzaCh0bXBfYnVmLmRhdGFfc2xpY2UoMCwgaGFzaF9vZmZzZXQp
KQorICAgICAgICAgICAgYmluZGVyID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5maW5pc2hlZF92
ZXJpZnlfZGF0YShiaW5kZXJfa2V5KQorICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXku
YmluZGVyc1swXSA9IGJpbmRlcgorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay51
cGRhdGVfaGFzaCgKKyAgICAgICAgICAgICAgICB0bXBfYnVmLmRhdGFfc2xpY2UoaGFzaF9vZmZz
ZXQsIGhhc2hfb2Zmc2V0ICsgMykgKyBiaW5kZXIKKyAgICAgICAgICAgICkKKworICAgICAgICAg
ICAgIyBjYWxjdWxhdGUgZWFybHkgZGF0YSBrZXkKKyAgICAgICAgICAgIGlmIGhlbGxvLmVhcmx5
X2RhdGE6CisgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5kZXJpdmVfc2VjcmV0KGIiYyBlIHRyYWZmaWMiKQorICAgICAgICAgICAgICAgIHNlbGYudXBk
YXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQ
VCwKKyAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVST19SVFQsCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgICAg
ICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2tleV9z
Y2hlZHVsZV9wcm94eSA9IEtleVNjaGVkdWxlUHJveHkoc2VsZi5fY2lwaGVyX3N1aXRlcykKKyAg
ICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5LmV4dHJhY3QoTm9uZSkKKworICAgICAgICB3
aXRoIHB1c2hfbWVzc2FnZShzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHksIG91dHB1dF9idWYpOgor
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8ob3V0cHV0X2J1ZiwgaGVsbG8pCisKKyAgICAg
ICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorCisg
ICAgZGVmIF9jbGllbnRfaGFuZGxlX2hlbGxvKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRw
dXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAgICAgIHBlZXJfaGVsbG8gPSBwdWxsX3NlcnZl
cl9oZWxsbyhpbnB1dF9idWYpCisKKyAgICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAor
ICAgICAgICAgICAgc2VsZi5fY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFtwZWVyX2hlbGxv
LmNpcGhlcl9zdWl0ZV0sCisgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUoIlVuc3Vw
cG9ydGVkIGNpcGhlciBzdWl0ZSIpLAorICAgICAgICApCisgICAgICAgIGFzc2VydCBwZWVyX2hl
bGxvLmNvbXByZXNzaW9uX21ldGhvZCBpbiBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RzCisgICAg
ICAgIGFzc2VydCBwZWVyX2hlbGxvLnN1cHBvcnRlZF92ZXJzaW9uIGluIHNlbGYuX3N1cHBvcnRl
ZF92ZXJzaW9ucworCisgICAgICAgICMgc2VsZWN0IGtleSBzY2hlZHVsZQorICAgICAgICBpZiBw
ZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgKAor
ICAgICAgICAgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2sgaXMgTm9uZQorICAgICAgICAg
ICAgICAgIG9yIHBlZXJfaGVsbG8ucHJlX3NoYXJlZF9rZXkgIT0gMAorICAgICAgICAgICAgICAg
IG9yIGNpcGhlcl9zdWl0ZSAhPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmNpcGhlcl9zdWl0ZQor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICByYWlzZSBBbGVydElsbGVnYWxQYXJhbWV0
ZXIKKyAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
aworICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gVHJ1ZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHJv
eHkuc2VsZWN0KGNpcGhlcl9zdWl0ZSkKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9
IE5vbmUKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5ID0gTm9uZQorCisgICAgICAg
ICMgcGVyZm9ybSBrZXkgZXhjaGFuZ2UKKyAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0gZGVjb2Rl
X3B1YmxpY19rZXkocGVlcl9oZWxsby5rZXlfc2hhcmUpCisgICAgICAgIHNoYXJlZF9rZXk6IE9w
dGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5j
ZShwZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpCisgICAgICAgICAgICBh
bmQgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICk6CisgICAg
ICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5LmV4Y2hhbmdlKHBl
ZXJfcHVibGljX2tleSkKKyAgICAgICAgZWxpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBl
ZXJfcHVibGljX2tleSwgeDQ0OC5YNDQ4UHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYu
X3g0NDhfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNo
YXJlZF9rZXkgPSBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5LmV4Y2hhbmdlKHBlZXJfcHVibGljX2tl
eSkKKyAgICAgICAgZWxpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tl
eSwgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSkKKyAgICAgICAgICAgIGFuZCBzZWxmLl9lY19w
cml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKS5jdXJ2ZS5fX2NsYXNzX18KKyAgICAgICAgICAgID09IHBlZXJfcHVi
bGljX2tleS5jdXJ2ZS5fX2NsYXNzX18KKyAgICAgICAgKToKKyAgICAgICAgICAgIHNoYXJlZF9r
ZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJfcHVibGlj
X2tleSkKKyAgICAgICAgYXNzZXJ0IHNoYXJlZF9rZXkgaXMgbm90IE5vbmUKKworICAgICAgICBz
ZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKyAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuZXh0cmFjdChzaGFyZWRfa2V5KQorCisgICAgICAgIHNlbGYuX3NldHVw
X3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5ERUNSWVBULCBFcG9j
aC5IQU5EU0hBS0UsIGIicyBocyB0cmFmZmljIgorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRU5DUllQVEVEX0VYVEVOU0lPTlMpCisKKyAg
ICBkZWYgX2NsaWVudF9oYW5kbGVfZW5jcnlwdGVkX2V4dGVuc2lvbnMoc2VsZiwgaW5wdXRfYnVm
OiBCdWZmZXIpIC0+IE5vbmU6CisgICAgICAgIGVuY3J5cHRlZF9leHRlbnNpb25zID0gcHVsbF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhpbnB1dF9idWYpCisKKyAgICAgICAgc2VsZi5hbHBuX25lZ290
aWF0ZWQgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sCisgICAgICAgIHNlbGYu
ZWFybHlfZGF0YV9hY2NlcHRlZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmVhcmx5X2RhdGEKKyAg
ICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMub3Ro
ZXJfZXh0ZW5zaW9ucworICAgICAgICBpZiBzZWxmLmFscG5fY2I6CisgICAgICAgICAgICBzZWxm
LmFscG5fY2Ioc2VsZi5hbHBuX25lZ290aWF0ZWQpCisKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJh
ZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsIEVwb2NoLkhB
TkRTSEFLRSwgYiJjIGhzIHRyYWZmaWMiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgIyBpZiB0aGUgc2Vy
dmVyIGFjY2VwdGVkIG91ciBQU0sgd2UgYXJlIGRvbmUsIG90aGVyIHdlIHdhbnQgaXRzIGNlcnRp
ZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3Nlc3Npb25fcmVzdW1lZDoKKyAgICAgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VSVElG
SUNBVEVfUkVRVUVTVF9PUl9DRVJUSUZJQ0FURSkKKworICAgIGRlZiBfY2xpZW50X2hhbmRsZV9j
ZXJ0aWZpY2F0ZShzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgY2Vy
dGlmaWNhdGUgPSBwdWxsX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLl9w
ZWVyX2NlcnRpZmljYXRlID0geDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAorICAgICAg
ICAgICAgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzWzBdWzBdLCBiYWNrZW5kPWRlZmF1bHRfYmFj
a2VuZCgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZV9jaGFpbiA9
IFsKKyAgICAgICAgICAgIHg1MDkubG9hZF9kZXJfeDUwOV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAg
ICAgICAgICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbaV1bMF0sIGJhY2tlbmQ9ZGVmYXVsdF9i
YWNrZW5kKCkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxl
bihjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMpKQorICAgICAgICBdCisKKyAgICAgICAgc2VsZi5r
ZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VSVElGSUNBVEVfVkVSSUZZKQorCisgICAg
ZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShzZWxmLCBpbnB1dF9idWY6IEJ1
ZmZlcikgLT4gTm9uZToKKyAgICAgICAgdmVyaWZ5ID0gcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnko
aW5wdXRfYnVmKQorCisgICAgICAgIGFzc2VydCB2ZXJpZnkuYWxnb3JpdGhtIGluIHNlbGYuX3Np
Z25hdHVyZV9hbGdvcml0aG1zCisKKyAgICAgICAgIyBjaGVjayBzaWduYXR1cmUKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZS5wdWJsaWNfa2V5KCkudmVy
aWZ5KAorICAgICAgICAgICAgICAgIHZlcmlmeS5zaWduYXR1cmUsCisgICAgICAgICAgICAgICAg
c2VsZi5rZXlfc2NoZWR1bGUuY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICAg
ICAgICAgIGIiVExTIDEuMywgc2VydmVyIENlcnRpZmljYXRlVmVyaWZ5IgorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgKnNpZ25hdHVyZV9hbGdvcml0aG1fcGFyYW1zKHZlcmlm
eS5hbGdvcml0aG0pLAorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgSW52YWxpZFNpZ25h
dHVyZToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVycm9yCisKKyAgICAgICAgIyBj
aGVjayBjZXJ0aWZpY2F0ZQorICAgICAgICBpZiBzZWxmLl92ZXJpZnlfbW9kZSAhPSBzc2wuQ0VS
VF9OT05FOgorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAg
IGNhZGF0YT1zZWxmLl9jYWRhdGEsCisgICAgICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2NhZmls
ZSwKKyAgICAgICAgICAgICAgICBjYXBhdGg9c2VsZi5fY2FwYXRoLAorICAgICAgICAgICAgICAg
IGNlcnRpZmljYXRlPXNlbGYuX3BlZXJfY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgY2hh
aW49c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZV9jaGFpbiwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJf
bmFtZT1zZWxmLl9zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmtl
eV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICBzZWxmLl9z
ZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRCkKKworICAgIGRlZiBfY2xpZW50
X2hhbmRsZV9maW5pc2hlZChzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlciwgb3V0cHV0X2J1ZjogQnVm
ZmVyKSAtPiBOb25lOgorICAgICAgICBmaW5pc2hlZCA9IHB1bGxfZmluaXNoZWQoaW5wdXRfYnVm
KQorCisgICAgICAgICMgY2hlY2sgdmVyaWZ5IGRhdGEKKyAgICAgICAgZXhwZWN0ZWRfdmVyaWZ5
X2RhdGEgPSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLl9kZWNf
a2V5KQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBleHBlY3RlZF92ZXJpZnlf
ZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVycm9yCisgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgICMgcHJl
cGFyZSB0cmFmZmljIGtleXMKKyAgICAgICAgYXNzZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVy
YXRpb24gPT0gMgorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAg
ICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAgICAgIERpcmVjdGlv
bi5ERUNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMgYXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAg
ICAgICBuZXh0X2VuY19rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBh
cCB0cmFmZmljIikKKworICAgICAgICAjIHNlbmQgZmluaXNoZWQKKyAgICAgICAgd2l0aCBwdXNo
X21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1bGUsIG91dHB1dF9idWYpOgorICAgICAgICAgICAgcHVz
aF9maW5pc2hlZCgKKyAgICAgICAgICAgICAgICBvdXRwdXRfYnVmLAorICAgICAgICAgICAgICAg
IEZpbmlzaGVkKAorICAgICAgICAgICAgICAgICAgICB2ZXJpZnlfZGF0YT1zZWxmLmtleV9zY2hl
ZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLl9lbmNfa2V5KQorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAg
ICAgc2VsZi5fZW5jX2tleSA9IG5leHRfZW5jX2tleQorICAgICAgICBzZWxmLnVwZGF0ZV90cmFm
ZmljX2tleV9jYigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAorICAgICAgICAgICAg
RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmNpcGhlcl9zdWl0
ZSwKKyAgICAgICAgICAgIHNlbGYuX2VuY19rZXksCisgICAgICAgICkKKworICAgICAgICBzZWxm
Ll9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQorCisgICAgZGVmIF9jbGll
bnRfaGFuZGxlX25ld19zZXNzaW9uX3RpY2tldChzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlcikgLT4g
Tm9uZToKKyAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNr
ZXQoaW5wdXRfYnVmKQorCisgICAgICAgICMgbm90aWZ5IGFwcGxpY2F0aW9uCisgICAgICAgIGlm
IHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGlj
a2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90aWNrZXQobmV3X3Nlc3Npb25fdGlja2V0KQorICAg
ICAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgZGVmIF9z
ZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICBzZWxmLAorICAgICAgICBpbnB1dF9idWY6IEJ1
ZmZlciwKKyAgICAgICAgaW5pdGlhbF9idWY6IEJ1ZmZlciwKKyAgICAgICAgaGFuZHNoYWtlX2J1
ZjogQnVmZmVyLAorICAgICAgICBvbmVydHRfYnVmOiBCdWZmZXIsCisgICAgKSAtPiBOb25lOgor
ICAgICAgICBwZWVyX2hlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oaW5wdXRfYnVmKQorCisgICAg
ICAgICMgZGV0ZXJtaW5lIGFwcGxpY2FibGUgc2lnbmF0dXJlIGFsZ29yaXRobXMKKyAgICAgICAg
c2lnbmF0dXJlX2FsZ29yaXRobXM6IExpc3RbU2lnbmF0dXJlQWxnb3JpdGhtXSA9IFtdCisgICAg
ICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSwgcnNhLlJTQVBy
aXZhdGVLZXkpOgorICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbCisgICAgICAg
ICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAg
ICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoCisgICAgICAgICAgICBzZWxmLmNlcnRpZmljYXRlX3By
aXZhdGVfa2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleQorICAgICAgICApIGFuZCBpc2lu
c3RhbmNlKHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuY3VydmUsIGVjLlNFQ1AyNTZSMSk6
CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFtTaWduYXR1cmVBbGdvcml0aG0u
RUNEU0FfU0VDUDI1NlIxX1NIQTI1Nl0KKworICAgICAgICAjIG5lZ290aWF0ZSBwYXJhbWV0ZXJz
CisgICAgICAgIGNpcGhlcl9zdWl0ZSA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgIHNlbGYuX2Np
cGhlcl9zdWl0ZXMsCisgICAgICAgICAgICBwZWVyX2hlbGxvLmNpcGhlcl9zdWl0ZXMsCisgICAg
ICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUoIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3VpdGUi
KSwKKyAgICAgICAgKQorICAgICAgICBjb21wcmVzc2lvbl9tZXRob2QgPSBuZWdvdGlhdGUoCisg
ICAgICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RzLAorICAgICAgICAgICAgcGVlcl9o
ZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWls
dXJlKCJObyBzdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kIiksCisgICAgICAgICkKKyAgICAg
ICAgcHNrX2tleV9leGNoYW5nZV9tb2RlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5f
cHNrX2tleV9leGNoYW5nZV9tb2RlcywgcGVlcl9oZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVz
CisgICAgICAgICkKKyAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobSA9IG5lZ290aWF0ZSgKKyAg
ICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5z
aWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgi
Tm8gc3VwcG9ydGVkIHNpZ25hdHVyZSBhbGdvcml0aG0iKSwKKyAgICAgICAgKQorICAgICAgICBz
dXBwb3J0ZWRfdmVyc2lvbiA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgIHNlbGYuX3N1cHBvcnRl
ZF92ZXJzaW9ucywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAor
ICAgICAgICAgICAgQWxlcnRQcm90b2NvbFZlcnNpb24oIk5vIHN1cHBvcnRlZCBwcm90b2NvbCB2
ZXJzaW9uIiksCisgICAgICAgICkKKworICAgICAgICAjIG5lZ290aWF0ZSBBTFBOCisgICAgICAg
IGlmIHNlbGYuX2FscG5fcHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5h
bHBuX25lZ290aWF0ZWQgPSBuZWdvdGlhdGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWxwbl9w
cm90b2NvbHMsCisgICAgICAgICAgICAgICAgcGVlcl9oZWxsby5hbHBuX3Byb3RvY29scywKKyAg
ICAgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUoIk5vIGNvbW1vbiBBTFBOIHByb3Rv
Y29scyIpLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLmFscG5fY2I6CisgICAgICAg
ICAgICBzZWxmLmFscG5fY2Ioc2VsZi5hbHBuX25lZ290aWF0ZWQpCisKKyAgICAgICAgc2VsZi5j
bGllbnRfcmFuZG9tID0gcGVlcl9oZWxsby5yYW5kb20KKyAgICAgICAgc2VsZi5zZXJ2ZXJfcmFu
ZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gcGVlcl9oZWxs
by5zZXNzaW9uX2lkCisgICAgICAgIHNlbGYucmVjZWl2ZWRfZXh0ZW5zaW9ucyA9IHBlZXJfaGVs
bG8ub3RoZXJfZXh0ZW5zaW9ucworCisgICAgICAgICMgc2VsZWN0IGtleSBzY2hlZHVsZQorICAg
ICAgICBwcmVfc2hhcmVkX2tleSA9IE5vbmUKKyAgICAgICAgaWYgKAorICAgICAgICAgICAgc2Vs
Zi5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBwc2tf
a2V5X2V4Y2hhbmdlX21vZGUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBwZWVyX2hlbGxv
LnByZV9zaGFyZWRfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHBlZXJfaGVs
bG8ucHJlX3NoYXJlZF9rZXkuaWRlbnRpdGllcykgPT0gMQorICAgICAgICAgICAgYW5kIGxlbihw
ZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmJpbmRlcnMpID09IDEKKyAgICAgICAgKToKKyAgICAg
ICAgICAgICMgYXNrIGFwcGxpY2F0aW9uIHRvIGZpbmQgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAg
ICAgIGlkZW50aXR5ID0gcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleS5pZGVudGl0aWVzWzBdCisg
ICAgICAgICAgICBzZXNzaW9uX3RpY2tldCA9IHNlbGYuZ2V0X3Nlc3Npb25fdGlja2V0X2NiKGlk
ZW50aXR5WzBdKQorCisgICAgICAgICAgICAjIHZhbGlkYXRlIHNlc3Npb24gdGlja2V0CisgICAg
ICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXQgaXMgbm90IE5vbmUK
KyAgICAgICAgICAgICAgICBhbmQgc2Vzc2lvbl90aWNrZXQuaXNfdmFsaWQKKyAgICAgICAgICAg
ICAgICBhbmQgc2Vzc2lvbl90aWNrZXQuY2lwaGVyX3N1aXRlID09IGNpcGhlcl9zdWl0ZQorICAg
ICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IEtleVNjaGVk
dWxlKGNpcGhlcl9zdWl0ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRy
YWN0KHNlc3Npb25fdGlja2V0LnJlc3VtcHRpb25fc2VjcmV0KQorCisgICAgICAgICAgICAgICAg
YmluZGVyX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJyZXMgYmluZGVy
IikKKyAgICAgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5rZXlfc2NoZWR1bGUuYWxn
b3JpdGhtLmRpZ2VzdF9zaXplCisKKyAgICAgICAgICAgICAgICBoYXNoX29mZnNldCA9IGlucHV0
X2J1Zi50ZWxsKCkgLSBiaW5kZXJfbGVuZ3RoIC0gMworICAgICAgICAgICAgICAgIGJpbmRlciA9
IGlucHV0X2J1Zi5kYXRhX3NsaWNlKAorICAgICAgICAgICAgICAgICAgICBoYXNoX29mZnNldCAr
IDMsIGhhc2hfb2Zmc2V0ICsgMyArIGJpbmRlcl9sZW5ndGgKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYu
ZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYmlu
ZGVyID0gc2VsZi5rZXlfc2NoZWR1bGUuZmluaXNoZWRfdmVyaWZ5X2RhdGEoYmluZGVyX2tleSkK
KworICAgICAgICAgICAgICAgIGlmIGJpbmRlciAhPSBleHBlY3RlZF9iaW5kZXI6CisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiUFNLIHZhbGlkYXRpb24g
ZmFpbGVkIikKKworICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNo
KAorICAgICAgICAgICAgICAgICAgICBpbnB1dF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aCkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gVHJ1ZQorCisgICAgICAgICAgICAg
ICAgIyBjYWxjdWxhdGUgZWFybHkgZGF0YSBrZXkKKyAgICAgICAgICAgICAgICBpZiBwZWVyX2hl
bGxvLmVhcmx5X2RhdGE6CisgICAgICAgICAgICAgICAgICAgIGVhcmx5X2tleSA9IHNlbGYua2V5
X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuZWFybHlfZGF0YV9hY2NlcHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgICAgICBEaXJl
Y3Rpb24uREVDUllQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVwb2NoLlpFUk9fUlRULAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5LAorICAgICAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICAgICBwcmVfc2hhcmVkX2tleSA9IDAKKworICAgICAgICAjIGlmIFBT
SyBpcyBub3QgdXNlZCwgaW5pdGlhbGl6ZSBrZXkgc2NoZWR1bGUKKyAgICAgICAgaWYgcHJlX3No
YXJlZF9rZXkgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gS2V5U2No
ZWR1bGUoY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuZXh0cmFj
dChOb25lKQorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRf
YnVmLmRhdGEpCisKKyAgICAgICAgIyBwZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwdWJs
aWNfa2V5OiBVbmlvblsKKyAgICAgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgy
NTUxOS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgICAgICBdCisgICAg
ICAgIHNoYXJlZF9rZXk6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICAgICAgZm9yIGtleV9z
aGFyZSBpbiBwZWVyX2hlbGxvLmtleV9zaGFyZToKKyAgICAgICAgICAgIHBlZXJfcHVibGljX2tl
eSA9IGRlY29kZV9wdWJsaWNfa2V5KGtleV9zaGFyZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UocGVlcl9wdWJsaWNfa2V5LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5KToKKyAgICAgICAgICAg
ICAgICBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgPSB4MjU1MTkuWDI1NTE5UHJpdmF0ZUtleS5n
ZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAgcHVibGljX2tleSA9IHNlbGYuX3gyNTUxOV9wcml2
YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5f
eDI1NTE5X3ByaXZhdGVfa2V5LmV4Y2hhbmdlKHBlZXJfcHVibGljX2tleSkKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwg
eDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgICAgICAgICBzZWxmLl94NDQ4X3ByaXZhdGVf
a2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAgcHVi
bGljX2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpCisgICAgICAgICAg
ICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5z
dGFuY2UocGVlcl9wdWJsaWNfa2V5LCBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleSA9IGVjLmdlbmVyYXRlX3ByaXZhdGVfa2V5
KAorICAgICAgICAgICAgICAgICAgICBHUk9VUF9UT19DVVJWRVtrZXlfc2hhcmVbMF1dKCksIGRl
ZmF1bHRfYmFja2VuZCgpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHB1Ymxp
Y19rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAg
ICBzaGFyZWRfa2V5ID0gc2VsZi5fZWNfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UoZWMuRUNESCgpLCBw
ZWVyX3B1YmxpY19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgYXNzZXJ0IHNo
YXJlZF9rZXkgaXMgbm90IE5vbmUKKworICAgICAgICAjIHNlbmQgaGVsbG8KKyAgICAgICAgaGVs
bG8gPSBTZXJ2ZXJIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1zZWxmLnNlcnZlcl9yYW5kb20s
CisgICAgICAgICAgICBzZXNzaW9uX2lkPXNlbGYuc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGNp
cGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9
Y29tcHJlc3Npb25fbWV0aG9kLAorICAgICAgICAgICAga2V5X3NoYXJlPWVuY29kZV9wdWJsaWNf
a2V5KHB1YmxpY19rZXkpLAorICAgICAgICAgICAgcHJlX3NoYXJlZF9rZXk9cHJlX3NoYXJlZF9r
ZXksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbj1zdXBwb3J0ZWRfdmVyc2lvbiwKKyAg
ICAgICAgKQorICAgICAgICB3aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaW5p
dGlhbF9idWYpOgorICAgICAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oaW5pdGlhbF9idWYsIGhl
bGxvKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAg
ICAgICAgc2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0
aW9uLkVOQ1JZUFQsIEVwb2NoLkhBTkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGly
ZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLkhBTkRTSEFLRSwgYiJjIGhzIHRyYWZmaWMiCisgICAgICAg
ICkKKworICAgICAgICAjIHNlbmQgZW5jcnlwdGVkIGV4dGVuc2lvbnMKKyAgICAgICAgd2l0aCBw
dXNoX21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1bGUsIGhhbmRzaGFrZV9idWYpOgorICAgICAgICAg
ICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAgICAgICAg
ICAgICAgIGFscG5fcHJvdG9jb2w9c2VsZi5hbHBuX25lZ290aWF0ZWQsCisgICAgICAgICAgICAg
ICAgICAgIGVhcmx5X2RhdGE9c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkLAorICAgICAgICAgICAg
ICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNoYWtlX2V4dGVuc2lvbnMsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBwcmVfc2hhcmVkX2tl
eSBpcyBOb25lOgorICAgICAgICAgICAgIyBzZW5kIGNlcnRpZmljYXRlCisgICAgICAgICAgICB3
aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAg
ICAgICAgICAgICAgcHVzaF9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgaGFuZHNo
YWtlX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgQ2VydGlmaWNhdGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0X2NvbnRleHQ9YiIiLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y2VydGlmaWNhdGVzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdWJsaWNfYnl0
ZXMoRW5jb2RpbmcuREVSKSwgYiIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4
IGluIFtzZWxmLmNlcnRpZmljYXRlXSArIHNlbGYuY2VydGlmaWNhdGVfY2hhaW4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUgdmVyaWZ5CisgICAgICAgICAg
ICBzaWduYXR1cmUgPSBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LnNpZ24oCisgICAgICAg
ICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoCisgICAg
ICAgICAgICAgICAgICAgIGIiVExTIDEuMywgc2VydmVyIENlcnRpZmljYXRlVmVyaWZ5IgorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKnNpZ25hdHVyZV9hbGdvcml0aG1fcGFy
YW1zKHNpZ25hdHVyZV9hbGdvcml0aG0pLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgd2l0
aCBwdXNoX21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1bGUsIGhhbmRzaGFrZV9idWYpOgorICAgICAg
ICAgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KAorICAgICAgICAgICAgICAgICAgICBo
YW5kc2hha2VfYnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZVZlcmlmeSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobT1zaWduYXR1cmVfYWxnb3JpdGhtLCBzaWdu
YXR1cmU9c2lnbmF0dXJlCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
KQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3aXRoIHB1c2hfbWVzc2FnZShz
ZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAgICBwdXNoX2Zpbmlz
aGVkKAorICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYsCisgICAgICAgICAgICAgICAgRmlu
aXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxl
LmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIHByZXBhcmUgdHJhZmZpYyBrZXlzCisgICAgICAg
IGFzc2VydCBzZWxmLmtleV9zY2hlZHVsZS5nZW5lcmF0aW9uID09IDIKKyAgICAgICAgc2VsZi5r
ZXlfc2NoZWR1bGUuZXh0cmFjdChOb25lKQorICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3By
b3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guT05FX1JUVCwg
YiJzIGFwIHRyYWZmaWMiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbmV4dF9kZWNfa2V5ID0g
c2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiImMgYXAgdHJhZmZpYyIpCisKKyAgICAg
ICAgIyBhbnRpY2lwYXRlIGNsaWVudCdzIEZJTklTSEVEIGFzIHdlIGRvbid0IHVzZSBjbGllbnQg
YXV0aAorICAgICAgICBzZWxmLl9leHBlY3RlZF92ZXJpZnlfZGF0YSA9IHNlbGYua2V5X3NjaGVk
dWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKAorICAgICAgICAgICAgc2VsZi5fZGVjX2tleQorICAg
ICAgICApCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT02NCkKKyAgICAgICAgcHVzaF9m
aW5pc2hlZChidWYsIEZpbmlzaGVkKHZlcmlmeV9kYXRhPXNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9k
YXRhKSkKKyAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goYnVmLmRhdGEpCisK
KyAgICAgICAgIyBjcmVhdGUgYSBuZXcgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAgaWYgc2VsZi5u
ZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmUgYW5kIHBza19rZXlfZXhjaGFuZ2VfbW9k
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldCA9IE5l
d1Nlc3Npb25UaWNrZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAor
ICAgICAgICAgICAgICAgIHRpY2tldF9hZ2VfYWRkPXN0cnVjdC51bnBhY2soIkkiLCBvcy51cmFu
ZG9tKDQpKVswXSwKKyAgICAgICAgICAgICAgICB0aWNrZXRfbm9uY2U9YiIiLAorICAgICAgICAg
ICAgICAgIHRpY2tldD1vcy51cmFuZG9tKDY0KSwKKyAgICAgICAgICAgICAgICBtYXhfZWFybHlf
ZGF0YV9zaXplPXNlbGYuX21heF9lYXJseV9kYXRhLAorICAgICAgICAgICAgKQorCisgICAgICAg
ICAgICAjIHNlbmQgbWVzc3NhZ2UKKyAgICAgICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0
KG9uZXJ0dF9idWYsIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldCkKKworICAgICAgICAgICAgIyBu
b3RpZnkgYXBwbGljYXRpb24KKyAgICAgICAgICAgIHRpY2tldCA9IHNlbGYuX2J1aWxkX3Nlc3Np
b25fdGlja2V0KHNlbGYuX25ld19zZXNzaW9uX3RpY2tldCkKKyAgICAgICAgICAgIHNlbGYubmV3
X3Nlc3Npb25fdGlja2V0X2NiKHRpY2tldCkKKworICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3Rh
dGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRCkKKworICAgIGRlZiBfc2VydmVyX2hhbmRsZV9maW5p
c2hlZChzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlciwgb3V0cHV0X2J1ZjogQnVmZmVyKSAtPiBOb25l
OgorICAgICAgICBmaW5pc2hlZCA9IHB1bGxfZmluaXNoZWQoaW5wdXRfYnVmKQorCisgICAgICAg
ICMgY2hlY2sgdmVyaWZ5IGRhdGEKKyAgICAgICAgaWYgZmluaXNoZWQudmVyaWZ5X2RhdGEgIT0g
c2VsZi5fZXhwZWN0ZWRfdmVyaWZ5X2RhdGE6CisgICAgICAgICAgICByYWlzZSBBbGVydERlY3J5
cHRFcnJvcgorCisgICAgICAgICMgY29tbWl0IHRyYWZmaWMga2V5CisgICAgICAgIHNlbGYuX2Rl
Y19rZXkgPSBzZWxmLl9uZXh0X2RlY19rZXkKKyAgICAgICAgc2VsZi5fbmV4dF9kZWNfa2V5ID0g
Tm9uZQorICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgIERp
cmVjdGlvbi5ERUNSWVBULAorICAgICAgICAgICAgRXBvY2guT05FX1JUVCwKKyAgICAgICAgICAg
IHNlbGYua2V5X3NjaGVkdWxlLmNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIHNlbGYuX2RlY19r
ZXksCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuU0VSVkVSX1BP
U1RfSEFORFNIQUtFKQorCisgICAgZGVmIF9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAg
ICAgIHNlbGYsIGRpcmVjdGlvbjogRGlyZWN0aW9uLCBlcG9jaDogRXBvY2gsIGxhYmVsOiBieXRl
cworICAgICkgLT4gTm9uZToKKyAgICAgICAga2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZl
X3NlY3JldChsYWJlbCkKKworICAgICAgICBpZiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uLkVOQ1JZ
UFQ6CisgICAgICAgICAgICBzZWxmLl9lbmNfa2V5ID0ga2V5CisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl9kZWNfa2V5ID0ga2V5CisKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZp
Y19rZXlfY2IoCisgICAgICAgICAgICBkaXJlY3Rpb24sIGVwb2NoLCBzZWxmLmtleV9zY2hlZHVs
ZS5jaXBoZXJfc3VpdGUsIGtleQorICAgICAgICApCisKKyAgICBkZWYgX3NldF9zdGF0ZShzZWxm
LCBzdGF0ZTogU3RhdGUpIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYuX19sb2dnZXI6CisgICAg
ICAgICAgICBzZWxmLl9fbG9nZ2VyLmRlYnVnKCJUTFMgJXMgLT4gJXMiLCBzZWxmLnN0YXRlLCBz
dGF0ZSkKKyAgICAgICAgc2VsZi5zdGF0ZSA9IHN0YXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
dzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ0YjBjZWU0NjYxMzQyZmVlNGVjMDMxYzA2MmY5
MzU3NDcwYzVlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93
M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDI1IEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5j
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL19jcnlwdG8uYworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5
aQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91dC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9idWZmZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcHkudHlwZWQKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdGxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9jbGllbnQuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L2luaXRpYWxfY2xpZW50LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDdiNzA1NWNkYWFjYTk1ZWZmYjkzZTUx
OWVjZTVlM2VkNTNjZDVlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjgwCnpjbVYrYjFeQGNZ
e3tSM1AyISlGfEhqOW90WlU2djg/IzQ4aUJAbiM+WC1ebDtLaD05dT1pJWtCJEUlLUVZYmd3Ywp6
bzZuWHAtWGNTNG0+e1okT19xJmVQbmxPci1ebUxYSWh5NUU9RVcyUzBjMmVnT0VZTlFySFIkRyNN
UyZOUztaJV8KelhzaWQ4eEJaUVZ5ZjAyaXA7QEk2WnRiPlp6SW8jZjFWPU9yPURzNjJXaEFCR1Fh
XkJaX2JuSlpBeGl7all4YSpMCnp1fXUpQj90XnpEMXV2MFE8VDs2UXpyOHtuJXopZy0wPkBXezxk
QSZwJld1a0dxd3clYDZ7YT0rK2liKGsrOVIqZQp6Kk82fHVLIX12MnBeeH5NeEB8VD8yZ3NwZDZy
Xn5aSSpaNmxfcFR3U09VTG9UciFfYT9tSEYtZ0loYEB3QCpuJX4Kelkma1lPMnJ9QnMpfFVyPGky
IzZNJnEkbGRnKkI5S0BfR21DK0RpN25ad0xsQCU4bChlSnNZTTcpMjAmdTR6Nz9SCnpzPCQ7UnR2
I0w9WH1NfSQ4XyspOFR+SkRYPChRajlgVHNoUjc0eTtoaFBKdVRUcGxUKyo/YHc2PnNaanNldHNT
Nwp6MGJwNjdLLTRrZENjVzZwTFVAWkJDZWB7czBDUnQkZm9TWmBIeVRpIztxWFRhK3RSQHxDUiRt
T2JBWVp5eGhCcXQKekQzb1koNWlwYVclTSNCWTdxdllXNVpAKyNud3gtTTcqZnB5I28qNzxtKyFj
bGo+SFhQPU5RfjYmaXJkYitMS3Y3CnplZ2QwRUJ9dFAkXlZNOzd4fnRmNWYkX3gqM04kd1hhZUNJ
cUdVVH5Re0diXnhjd1E/ZTEkaj45V1RRYzNVPSlCdwp6e0p8SV4lfD1WQk9xcGxyZndmVkQ3OElg
bTc8ZV5GJiNmXjJtP0t0WnR3YXgwTVBgN0FsYXBOK1U7PyNBSiZpek4KenJaI1NFOEFBSCMlSnVw
KTd0b0ZmYD4taGRlO2pxWGdMSjh2YD5JeXpJSH0xJXFyO1ZqPzZYRUJabSlVNTxGU0FMCno9YW4y
WSQwUkNNV1I/QGE2TFpISUVwcVF+cnF3WFd2KDl9bnYxaTw9YiF4U35LJXhrWUxgc2ZQTWxufDk4
eT1jagp6P3ZnVkJhXzBSb0d1YS1ATnFOJG9vaFd5O3pSRnJeTFZRUEdUXnBvNDtWJjQ7I01oQ2BZ
UThobncxbzZOV2YqOF4KeiVRfi1aWXhnKk9pVkJXSSY3SHQ1JTZfUyl0RjlVajdPI0EyU09KZUdF
ZmNCNzZLQUxLTGQkMWlTN3hRUzsoQDVaCnpkQGViUHNOV3FLR2BEPGYtfGpxRiglUUlOezYxJXIw
K0p+WCUzZVdtQ1N8aGhMUnwkY1hyez9DPFdUezw/MTxOXgp6VnZJKlBfS3hgWXZpVHx4UWBJd3pw
K0dBZThZeFVlVnRaJGM/bmVNOVE7KUBLTl9lUzhfZmw0S3JFVVN4aF99bGgKenVIP2J3RlYlNjl7
IXtJckJCLW4xempSQXZTcSRgejAlSm1iRT8kNXQhPDZvUikjcHojSUstVl9HQ3wmXk59Z25JCnp0
bkpzJiZ2eXZtV2JjJlVHQ05XcF94QkMoeWczU2g5fVBRamRSKEtzPntrfT9hJnwmXzFeOyhKZUBN
Pl51dmgzVgp6Zks0ez1wYzlnTWg+bH08a3prZVBYQ0hkO0hZKVR+JHNTYGUkVF8tWkBKdykxeH5p
MnJSJGxSYCglYWh+VkQ4KjYKenRvailSeG5tJm1oI3lmKkYtPHgxaG5JQTYpfW1iSWxhQlhtaVR0
TyhqSCk0emNIdDNZRVNJSDt8MVB4O3Q9bzhpCnooOHI8JVR3bDVOUzlpJll8OUA9RylvTXAlbGor
ZFFtSCQrZmdrRXw7R0E+dV8yeXVAPGxaNmRebnZtR2xIbzc8Iwp6djdtJH1wUWFkZ0Z7RylDKipy
U283aFZLcXc1NF9YLUhrNyNib19keUhYSHZ6Z0N5ajJIek19R28rPygyKjluMSsKekVIcHo5eWB7
e2RRPD9fJEVnX1N7aWVHNDFDYz9TXntHQm5ZIURmP3VWV1QhM0l8KkA0VUk/dyZ0P0hAY0NzeDZl
CnEpeV5aNTNgYUJiVSUoS1ZtMmQlbnk/bjJhbXpiKHxVQyo5UmNWY05PeTdMI0k8QWI2M3pIfG93
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
aW5pdGlhbF9zZXJ2ZXIuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfc2VydmVyLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NWJiYjljMGFmZjg5NDc0ZmQ3MDIxZjZlMWI0NGUwNWJhMWExYzQ3CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMDIKemNtVjsqMDUkKT97e1IzUDAwPGRlWGYjZUopT2kz
dnhWcVlQcXQ8Rz1lc1dLUG58QXVTVks/Nnl3UjVlMFU9dTwzCnpGciNFVTl1e248V0JQKE9FP2V5
Tmw3JkZuTENXYWZVMHBgR0tvVk07T1dUS3NZfiMyfTlmQ2ZyRGV0RlA5PEhJfAp6ZWM0RH5rY3pS
ZyRVdj1nWT1+elI5YmBPVVg/dF9oQXslQWc8RlcmSCghOCE2Jj9eX3Vxd2xJQXhmWjdWNj9LJnoK
eilQSkpSNHZ8Rjw3aVcqdGdLcj0wdV5IU05VT09GI3Z9S1FvZyQoJW5GRTF0WHJ+OCRJdW9FKjRR
dnZHI0ZlRz5iCkVjZTc3bEpPQlV5CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3B5
Y2FjZXJ0LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzE1MGM5NjBmMzU4MTRkZWYyYzJiYzVmYWY3YmRmZWI4
ZGFiMzBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3B5Y2FjZXJ0LnBl
bQpAQCAtMCwwICsxLDk5IEBACitDZXJ0aWZpY2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJz
aW9uOiAzICgweDIpCisgICAgICAgIFNlcmlhbCBOdW1iZXI6CisgICAgICAgICAgICBjYjoyZDo4
MDo5OTo1YTo2OTo1Mjo1YgorICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FF
bmNyeXB0aW9uCisgICAgICAgIElzc3VlcjogQz1YWSwgTz1QeXRob24gU29mdHdhcmUgRm91bmRh
dGlvbiBDQSwgQ049b3VyLWNhLXNlcnZlcgorICAgICAgICBWYWxpZGl0eQorICAgICAgICAgICAg
Tm90IEJlZm9yZTogQXVnIDI5IDE0OjIzOjE2IDIwMTggR01UCisgICAgICAgICAgICBOb3QgQWZ0
ZXIgOiBBdWcgMjYgMTQ6MjM6MTYgMjAyOCBHTVQKKyAgICAgICAgU3ViamVjdDogQz1YWSwgTz1Q
eXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQSwgQ049b3VyLWNhLXNlcnZlcgorICAgICAgICBT
dWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGht
OiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICAgICAgUHVibGljLUtleTogKDMwNzIgYml0KQor
ICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAgICAgICAgIDAwOjk3OmVkOjU1
OjQxOmJhOjM2OjE3Ojk1OmRiOjcxOjFjOmQzOmUxOjYxOgorICAgICAgICAgICAgICAgICAgICBh
Yzo1ODo3MzplMzpjNjo5NjpjZjoyYjoxZjpiODowODpmNTo5ZDo0Yjo0YjoKKyAgICAgICAgICAg
ICAgICAgICAgYzc6MzA6ZjY6Yjg6MGI6YjM6NTI6NzI6YTA6YmI6Yzk6NGQ6M2I6OGU6ZGY6Cisg
ICAgICAgICAgICAgICAgICAgIDIyOjhlOjAxOjU3OjgxOmM5OjkyOjczOmNjOjAwOmM2OmVjOjcw
OmIwOjNhOgorICAgICAgICAgICAgICAgICAgICAxNzo0MDpjMTpkZjpmMjo4YzozNjo0YzpjNDph
Nzo4MTplNzpiNjoyNDo2ODoKKyAgICAgICAgICAgICAgICAgICAgZTI6YTA6N2U6MzU6MDc6MmY6
YTA6NWI6Zjk6NDU6NDY6Zjc6MWU6ZjA6NDY6CisgICAgICAgICAgICAgICAgICAgIDExOmZlOmNh
OjFhOjNjOjUwOmYxOjI2OmE5OjVmOjljOjIyOjljOmY4OjQxOgorICAgICAgICAgICAgICAgICAg
ICBlMTpkZjo0ZjoxMjo5NToxOToyZjo1Yzo5MDowMToxNzo2ZTo3ZTozZTo3ZDoKKyAgICAgICAg
ICAgICAgICAgICAgY2Y6ZTk6MDk6YWY6MjU6Zjg6Zjg6NDI6Nzc6MmQ6NmQ6NWY6MzY6ZjI6Nzg6
CisgICAgICAgICAgICAgICAgICAgIDFlOjdkOjRhOjg3OjY4OjYzOjZjOjA2OjcxOjFiOjhkOmZh
OjI1OmZlOmQ0OgorICAgICAgICAgICAgICAgICAgICBkMzpmNTphNToxNzpiMTplZjplYToxNzpj
Yjo1NDpjODoyNzo5OTo4MDpjYjoKKyAgICAgICAgICAgICAgICAgICAgM2M6NDU6ZjE6MmM6NTI6
MWM6ZGQ6MWY6NTE6NDU6MjA6NTA6MWU6NWU6YWI6CisgICAgICAgICAgICAgICAgICAgIDU3Ojcz
OjFiOjQxOjc4Ojk2OmRlOjg0OmE0OjdhOmRkOjhmOjMwOjg1OjM2OgorICAgICAgICAgICAgICAg
ICAgICA1ODo3OTo3NjphMDpkMjo2MTpjODoxYjphOTo5NDo5OTo2MzpjNjplZTpmODoKKyAgICAg
ICAgICAgICAgICAgICAgMTQ6YmY6YjQ6NTI6NTY6MzE6OTc6ZmE6ZWI6YWM6NTM6OWU6OTU6Y2U6
NGM6CisgICAgICAgICAgICAgICAgICAgIGM0OjVhOjRhOmI3OmNhOjAzOjI3OjViOjM1OjU3OmNl
OjAyOmRjOmVjOmNhOgorICAgICAgICAgICAgICAgICAgICA2OTpmODo4YTo1YTozOTpjYjoxNjoy
MDoxNTowMzoyNDo2MTo2YzpmNDo3YToKKyAgICAgICAgICAgICAgICAgICAgZmM6YjY6NDg6ZTU6
NTk6MTA6NWM6NDk6ZDA6MjM6OWY6ZmI6NzE6NWU6M2E6CisgICAgICAgICAgICAgICAgICAgIGU5
OjY4OjlmOjM0OjcyOjgwOjI3OmI2OjNmOjRjOmIxOmQ5OmRiOjYzOjdmOgorICAgICAgICAgICAg
ICAgICAgICA2Nzo2ODo0YTo2ZToxMTpmODplODpjMDpmNDo1YToxNjozOTo1MzowYjo2ODoKKyAg
ICAgICAgICAgICAgICAgICAgZGU6Nzc6ZmE6NDU6ZTc6Zjg6OTE6Y2Q6Nzg6Y2Q6Mjg6OTQ6OTc6
NzE6NTQ6CisgICAgICAgICAgICAgICAgICAgIGZiOmNmOmYwOjM3OmRlOmM5OjI2OmM1OmRjOjFi
OjllOjg5OjZkOjA5OmFjOgorICAgICAgICAgICAgICAgICAgICBjODo0NDo3MTpjYjo2ZDpmMTo5
NzozMTpkNTo0YzoyMDozMzpiZjo3NTo0YToKKyAgICAgICAgICAgICAgICAgICAgYTA6ZTA6ZGM6
Njk6MTE6ZWQ6MmE6YjQ6NjQ6MTA6MTE6MzA6OGI6MGU6YjA6CisgICAgICAgICAgICAgICAgICAg
IGE3OjEwOmQ4OjhhOmM1OmFhOjFiOmM4OjI2OjhhOjI1OmU3OjY2OjlmOmE1OgorICAgICAgICAg
ICAgICAgICAgICA2YToxYToyZjo3Yzo1Zjo4MzpjNjo3ODo0ZjoxZgorICAgICAgICAgICAgICAg
IEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6Cisg
ICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAg
ICAgREQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6MjE6Q0E6NkY6OUE6MDg6Mjg6RjI6MzU6
QjY6NDgKKyAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAg
ICAgICAgICAgICAgIGtleWlkOkREOkJGOkNBOkRBOkU2OkQxOjM0OkJBOjM3Ojc1OjIxOkNBOjZG
OjlBOjA4OjI4OkYyOjM1OkI2OjQ4CisKKyAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJh
aW50czogCisgICAgICAgICAgICAgICAgQ0E6VFJVRQorICAgIFNpZ25hdHVyZSBBbGdvcml0aG06
IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCisgICAgICAgICAzMzo2YTo1NDpkMzo2YjpjMDpkNzow
MTo1Zjo5ZDpmNDowNTpjMTo5Mzo2Njo5MDo1MDpkMDoKKyAgICAgICAgIGI3OjE4OmU5OmIwOjFl
OjRhOmEwOmI2OmRhOjc2OjkzOmFmOjg0OmRiOmFkOjE1OjU0OjMxOgorICAgICAgICAgMTU6MTM6
ZTQ6ZGU6N2U6NGU6MGM6ZDU6MDk6MWM6MzQ6MzU6YjY6ZTU6NGM6ZDY6NmY6NjU6CisgICAgICAg
ICA3ZDozMjo1ZjplYjpmYzphOTo2YjowNzpmNzo0OTo4MjplNTo4MTo3ZTowNzo4MDo5YTo2MzoK
KyAgICAgICAgIGY4OjJjOmMzOjQwOmJjOjhmOmQ0OjJhOmRhOjNlOmQxOmVlOjA4OmI3OjRkOmE3
Ojg0OmNhOgorICAgICAgICAgZjQ6M2Y6YTE6OTg6NDU6YmU6YjE6MDU6Njk6ZTc6ZGY6ZDc6OTk6
YWI6MWI6ZWU6OGI6MzA6CisgICAgICAgICBjYzpmNzpmYzplNzpkNDowYjoxNzphZTo5NzpiZjpl
NDo3YjpmZDowZjphNzpiNDo4NTo3OToKKyAgICAgICAgIGUzOjU5OmUyOjE2Ojg3OmJmOjFmOjI5
OjQ1OjJjOjIzOjkzOjc2OmJlOmMwOjg3OjFkOmRlOgorICAgICAgICAgZWM6MmI6NDI6NmE6ZTU6
YmI6Yzg6ZjQ6MGE6NGE6MDg6MGE6OGM6NWM6ZDg6N2Q6NGQ6ZDE6CisgICAgICAgICBiODpiZjpk
NTpmNzoyOTplZDo5MjpkMTo5NDowNDplODozNTowNjo1Nzo3ZjoyYzoyMzo5NzoKKyAgICAgICAg
IDg3OmE1OjM1OjhkOjI2OmQzOjFhOjQ3OmYyOjE2OmQ3OmQ5OmM2OmQ0OjFmOjIzOjQzOmQzOgor
ICAgICAgICAgMjY6OTk6Mzk6Y2E6MjA6ZjQ6NzE6MjM6NmY6MGM6NGE6NzY6NzY6Zjc6NzY6MWY6
YjM6ZmU6CisgICAgICAgICBiZjo0NzpiMDpmYzoyYTo1Njo4MTplMTpkMjpkZDplZTowODpkODpm
NDpmZjo1YTpkYzoyNToKKyAgICAgICAgIDYxOjhhOjkxOjAyOmI5Ojg2OjFjOmYyOjUwOjczOjc2
OjI1OjM1OmZjOmI2OjI1OjI2OjE1OgorICAgICAgICAgY2I6ZWI6YzQ6MmI6NjE6MGM6MWM6ZTc6
ZWU6MmY6MTc6OWI6ZWM6ZjA6ZDQ6YTE6ODQ6ZTc6CisgICAgICAgICBkMjphZjpkZTplNDoxYjoy
NDoxNDphNzowMTo4NzplMzphYjoyOTo1ODo0NjphMDpkOTpjMDoKKyAgICAgICAgIDBhOmUwOjhk
OmQ3OjU5OmQzOjFiOmY4OjU0OjIwOjNlOjc4OmE1OmE1OmM4OjRmOjhiOjAzOgorICAgICAgICAg
YzQ6OTY6OWY6ZWM6ZmI6NDc6Y2Y6NzY6MmQ6OGQ6NjU6MzQ6Mjc6YmY6ZmE6YWU6MDE6MDU6Cisg
ICAgICAgICA4YTpmMzo5MjowYTpkZDo4OTo2Yzo5NzphMTpjNzplNzo2MDo1MTplNzphYzplYjo0
Yjo3ZDoKKyAgICAgICAgIDJjOmI4OjY1OmM5OmZlOjVkOjZhOjQ4OjU1OjhlOmU0OmM3OmY5OjZh
OjQwOmUxOmI4OjY0OgorICAgICAgICAgNDU6ZTk6YjU6NTk6Mjk6YTU6NWY6Y2Y6N2Q6NTg6N2Q6
NjQ6Nzk6ZTU6YTQ6MDk6YWM6MWU6CisgICAgICAgICA3Njo2NTozZDo5NDpjNDo2OAorLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlFYlRDQ0F0V2dBd0lCQWdJSkFNc3RnSmxhYVZKYk1B
MEdDU3FHU0liM0RRRUJDd1VBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFl
WFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5
TFdOaExYTmxjblpsY2pBZUZ3MHhPREE0TWpreE5ESXpNVFphRncweU9EQTRNall4CitOREl6TVRa
YU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVn
CitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQWFJ
d0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUpmdFZVRzZOaGVWMjNFYzAr
RmhyRmh6NDhhV3p5c2Z1QWoxCituVXRMeHpEMnVBdXpVbktndThsTk80N2ZJbzRCVjRISmtuUE1B
TWJzY0xBNkYwREIzL0tNTmt6RXA0SG50aVJvCis0cUIrTlFjdm9GdjVSVWIzSHZCR0VmN0tHanhR
OFNhcFg1d2luUGhCNGQ5UEVwVVpMMXlRQVJkdWZqNTl6K2tKCityeVg0K0VKM0xXMWZOdko0SG4x
S2gyaGpiQVp4RzQzNkpmN1UwL1dsRjdIdjZoZkxWTWdubVlETFBFWHhMRkljCiszUjlSUlNCUUhs
NnJWM01iUVhpVzNvU2tldDJQTUlVMldIbDJvTkpoeUJ1cGxKbGp4dTc0RkwrMFVsWXhsL3JyCity
Rk9lbGM1TXhGcEt0OG9ESjFzMVY4NEMzT3pLYWZpS1dqbkxGaUFWQXlSaGJQUjYvTFpJNVZrUVhF
blFJNS83CitjVjQ2NldpZk5IS0FKN1kvVExIWjIyTi9aMmhLYmhINDZNRDBXaFk1VXd0bzNuZjZS
ZWY0a2MxNHpTaVVsM0ZVCisrOC93Tjk3SkpzWGNHNTZKYlFtc3lFUnh5MjN4bHpIVlRDQXp2M1ZL
b09EY2FSSHRLclJrRUJFd2l3NndweERZCitpc1dxRzhnbWlpWG5acCtsYWhvdmZGK0R4bmhQSHdJ
REFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVTNiL0sydWJSCitOTG8zZFNIS2I1b0lLUEkxdGtnd0h3
WURWUjBqQkJnd0ZvQVUzYi9LMnViUk5MbzNkU0hLYjVvSUtQSTF0a2d3CitEQVlEVlIwVEJBVXdB
d0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVlFQU0ycFUwMnZBMXdGZm5mUUZ3Wk5tCitrRkRR
dHhqcHNCNUtvTGJhZHBPdmhOdXRGVlF4RlJQazNuNU9ETlVKSERRMXR1Vk0xbTlsZlRKZjYveXBh
d2YzCitTWUxsZ1g0SGdKcGorQ3pEUUx5UDFDcmFQdEh1Q0xkTnA0VEs5RCtobUVXK3NRVnA1OS9Y
bWFzYjdvc3d6UGY4Cis1OVFMRjY2WHYrUjcvUStudElWNTQxbmlGb2UvSHlsRkxDT1RkcjdBaHgz
ZTdDdENhdVc3eVBRS1NnZ0tqRnpZCitmVTNSdUwvVjl5bnRrdEdVQk9nMUJsZC9MQ09YaDZVMWpT
YlRHa2Z5RnRmWnh0UWZJMFBUSnBrNXlpRDBjU052CitERXAyZHZkMkg3UCt2MGV3L0NwV2dlSFMz
ZTRJMlBUL1d0d2xZWXFSQXJtR0hQSlFjM1lsTmZ5MkpTWVZ5K3ZFCitLMkVNSE9mdUx4ZWI3UERV
b1lUbjBxL2U1QnNrRktjQmgrT3JLVmhHb05uQUN1Q04xMW5URy9oVUlENTRwYVhJCitUNHNEeEph
ZjdQdEh6M1l0aldVMEo3LzZyZ0VGaXZPU0N0MkpiSmVoeCtkZ1VlZXM2MHQ5TExobHlmNWRha2hW
CitqdVRIK1dwQTRiaGtSZW0xV1NtbFg4OTlXSDFrZWVXa0Nhd2VkbVU5bE1SbworLS0tLS1FTkQg
Q0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJp
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy9yZXRyeS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGYzYmQ0OTgxYTRh
NjU5NmI1MGVjNjVlZGJkNTFiMGI0Y2EzYmVlNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTI1
CnpjbVYtQDBEfU1Ve3tSM1AyPGcjQSp3SVh+anVIekJBWDtSUCZ3fClyNXtxWk07REElK0xeKm1q
KXxmZHc2SDVyRwp6R0lNeFleaFZSRi0ybS1AUjFBJWM7Y30yfEs2KCl3UChQT2B4UlE9X0RFWCpy
TVM9UDJ3OTdrRiFoPmNXZylucCkKZm5IZXRTWCV4amBYXylLfTtpSmU1ZDQ4azt6Pm1xcExaYUNY
OX1oWj8KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy9zaG9ydF9oZWFkZXIuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5i
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjgzNjgzZDJkNWI1NTVkOWIwMjMxOTk5MDJmY2VlNTdkMWI1OTM3ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCkBA
IC0wLDAgKzEgQEAKK130Wqe1nA4a1uZo9TBM1P0fs3mTJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydC5wZW0gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmNzEyN2E0YjAyNWFhMjMz
MjMxOTNmMDZjZjE3NzNhNTYwZTM4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvc3NsX2NlcnQucGVtCkBAIC0wLDAgKzEsMzQgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNB
VEUtLS0tLQorTUlJRjhUQ0NCRm1nQXdJQkFnSUpBTXN0Z0psYWFWSmNNQTBHQ1NxR1NJYjNEUUVC
Q3dVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhk
aGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNq
QWVGdzB4T0RBNE1qa3hOREl6TVRaYUZ3MHlPREEzTURjeAorTkRJek1UWmFNRjh4Q3pBSkJnTlZC
QVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFagorTUNFR0ExVUVDZ3dh
VUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RWpBUUJnTlZCQU1NQ1d4dgorWTJG
c2FHOXpkRENDQWFJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dHUEFEQ0NBWW9DZ2dHQkFKOG9MemRC
NzM5aworWXhaaUZ1a0JGR0lweWpxWWtqMEkwMTVwL3NEejFNVDdEbGpjWkxCTHk3T3Fua0xwQjV0
bk04MjU2RHdkaWhQQQorM3psbmZFelRmcjlERDBxRkJXMkg1Y01Db3o3WDE3a29lUmh6R0RkM2Rr
alVlQmpYdlI1cVJvc0c4d00zbFF1ZworVTdBaXpZKzNBemFqMXlOM21aOUs1YTIwanI1OEtxaW56
K1h4eDZzYjJKZllZZmYybmVKYkJhaE5tNWlkMEFEMgorcGkvVHRoWnFPNURVUkpZbytNZGdaT2N5
KzdqRWpPSnNMV1pkM1l6cTc4aU0wN3FEamJwSW9WcEVOWkNUSFRXQQoraFg4TElxejBPQm1oNHdl
UXBtNCtwbFU3RTRyNEQ4MnVhdW9jV3c4aXl1em5DVHRBQldPN245Zld5U21mOVFaQworV1l4SEFG
cEJRczZ6VVZxQUQ3bmhGZFRxcFE5YlJpYUVuakU0SGlBY2NQVytNQW9TeEZudi9yTnpFekk2YjR6
VQorTnNwRk1mZzFhTlZhbWRqeGRwVVoxR0cxT2tmMHlQSnlrcUVYNFBabDNMYTFCZTJxN1laMXd5
ZFI1MjNYZCtmMworRU80L2craW1FVFNLbjhneUNmNlJ2aWIxNzVMNHIyV1YxQ1hRSDdnRndaWUNv
ZDZXSFlxNVRRSURBUUFCbzRJQgord0RDQ0Fid3dGQVlEVlIwUkJBMHdDNElKYkc5allXeG9iM04w
TUE0R0ExVWREd0VCL3dRRUF3SUZvREFkQmdOVgorSFNVRUZqQVVCZ2dyQmdFRkJRY0RBUVlJS3dZ
QkJRVUhBd0l3REFZRFZSMFRBUUgvQkFJd0FEQWRCZ05WSFE0RQorRmdRVWorb2Q0ek5jQUJhemky
OXJiOU5NeTdYTGZGVXdmUVlEVlIwakJIWXdkSUFVM2IvSzJ1YlJOTG8zZFNISworYjVvSUtQSTF0
a2loVWFSUE1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bQor
ZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxj
b0lKQU1zdAorZ0psYWFWSmJNSUdEQmdnckJnRUZCUWNCQVFSM01IVXdQQVlJS3dZQkJRVUhNQUtH
TUdoMGRIQTZMeTkwWlhOMAorWTJFdWNIbDBhRzl1ZEdWemRDNXVaWFF2ZEdWemRHTmhMM0I1WTJG
alpYSjBMbU5sY2pBMUJnZ3JCZ0VGQlFjdworQVlZcGFIUjBjRG92TDNSbGMzUmpZUzV3ZVhSb2Iy
NTBaWE4wTG01bGRDOTBaWE4wWTJFdmIyTnpjQzh3UXdZRAorVlIwZkJEd3dPakE0b0RhZ05JWXlh
SFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExtNWxkQzkwWlhOMAorWTJFdmNtVjJiMk5o
ZEdsdmJpNWpjbXd3RFFZSktvWklodmNOQVFFTEJRQURnZ0dCQUNmMWpGa1E5TWJuS0FDLwordW8x
N0V3UHhIS1pmc3daVnBDSzUyN0xWUnIzM0ROMURiclI1WldjaERDcFY3a0NPaForZlI3c0tLazIy
WkhTWQorb0grdTNQRXUyMEozR09CMWl5WTFhTU5CN1d2SWQzSnZhcHBkVldrQy9WcFV5RmZMc0dV
REZ1SVBBRG1aWnFDYgoraUpNWDRsb3RlVFZmbDFkNHhLLzFtVjZHcTlNUnJScWlEZnBTRUxuK3Y1
M09NOW1Hc3B3VytOWjFDSXJiQ3VXMAorS3haL3RQa3FuOFBTZDlmTlpSNzBiQjdyV2Jud3JsK2tI
OHhLeExsNnFkbHJNbWc3NFdXd2hMZVF4SzcrOURkUAorSWFEZW56cXg1Y3dXQkdZL0MwSGNRajBn
UHV5M2xTczFWL3ErZjdZNnVzcFBXUDUxUGdpSkxJeXdYUzc1aVJBcgorK1VGR1R6d0F0eWZUWlNR
b0Z5TW1NVUxxZms2VDVIdG9WTXFmUnZQdksrbUZETFdFc3RVMU5JQjFLL0NSSTdnSQorQVk2NUNs
VFUrelJTL3RsRjhJQTd0c0Z2Z3RFZjhqc0k5a2FtbGlkaFMxZ3llZzRkV2NWRXJWNGFlVFBCMUFV
dgorU3RQWVFrS05NK05qeXRXSGw1dE51Qm9ETkxzYzBnSS9XU1BpSTRDSVk4THdvbU9vaXc9PQor
LS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3NzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MGFkNDE2ODdlMmFmZDdhMGY5NGQxNTYxYWJkZWEx
ZTVkZDQzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRf
d2l0aF9jaGFpbi5wZW0KQEAgLTAsMCArMSw2MCBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FHU0liM0RRRUJDd1VB
TUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21V
Z1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3
MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhDekFKQmdOVkJBWVRB
bGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VHQTFVRUNnd2FVSGww
YUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2CitZMkZzYUc5
emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUo4b0x6ZEI3Mzlr
CitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdPcW5rTHBCNXRuTTgy
NTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VSaHpHRGQzZGtqVWVC
alh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4
NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllvK01kZ1pPY3krN2pF
ak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6ME9CbWg0d2VRcG00
K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpDCitXWXhIQUZwQlFz
NnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JOekV6STZiNHpVCitO
c3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUy
M1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldI
WXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRH
QTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFV
SEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6TmNBQmF6aTI5cmI5
Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCitiNW9JS1BJMXRraWhV
YVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltCitkSGRo
Y21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNvSUpB
TXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gw
ZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhK
MExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpY
TjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRvRGFnTklZeWFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2Y21WMmIyTmhkR2x2
Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5LQUMvCit1bzE3RXdQ
eEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitmUjdzS0trMjJaSFNZ
CitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJ
UEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURmcFNFTG4rdjUzT005
bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JXYm53cmwra0g4eEt4
TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkz
bFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3QXR5ZlRaU1FvRnlN
bU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJCitBWTY1Q2xUVSt6
UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0YWVUUEIxQVV2CitT
dFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29tT29pdz09CistLS0t
LUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUVi
VENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJn
TlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhk
R2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQTRNamt4
TkRJek1UWmFGdzB5T0RBNE1qWXgKK05ESXpNVFphTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZ
RFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0Ex
VUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnR1BB
RENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJGaHo0OGFXenlzZnVBajEKK25VdEx4ekQy
dUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNjTEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8K
KzRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2FwWDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1
Zmo1OXora0oKK3J5WDQrRUozTFcxZk52SjRIbjFLaDJoamJBWnhHNDM2SmY3VTAvV2xGN0h2Nmhm
TFZNZ25tWURMUEVYeExGSWMKKzNSOVJSU0JRSGw2clYzTWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9O
Smh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKK3JGT2VsYzVNeEZwS3Q4b0RKMXMxVjg0QzNPekth
ZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEha
MjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRrYzE0elNpVWwzRlUKKys4L3dOOTdKSnNY
Y0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0RjYVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lz
V3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVM2Iv
SzJ1YlIKK05MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZSMGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RT
SEtiNW9JS1BJMXRrZ3cKK0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NB
WUVBTTJwVTAydkExd0ZmbmZRRndaTm0KK2tGRFF0eGpwc0I1S29MYmFkcE92aE51dEZWUXhGUlBr
M241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMKK1NZTGxnWDRIZ0pwaitDekRRTHlQMUNy
YVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNiN29zd3pQZjgKKzU5UUxGNjZYditSNy9R
K250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1
TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdrZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNT
TnYKK0RFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEkyUFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxO
ZnkySlNZVnkrdkUKK0syRU1IT2Z1THhlYjdQRFVvWVRuMHEvZTVCc2tGS2NCaCtPcktWaEdvTm5B
Q3VDTjExblRHL2hVSUQ1NHBhWEkKK1Q0c0R4SmFmN1B0SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3Qy
SmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKK2p1VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdI
MWtlZVdrQ2F3ZWRtVTlsTVJvCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2tleS5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2tleS5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhmZGVjMTAxYzhkNjc0YzUyMDdkMTAwZjc0YjZhNzI0MjRj
YjUyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQpA
QCAtMCwwICsxLDQwIEBACistLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUcvUUlCQURB
TkJna3Foa2lHOXcwQkFRRUZBQVNDQnVjd2dnYmpBZ0VBQW9JQmdRQ2ZLQzgzUWU5L1pHTVcKK1lo
YnBBUlJpS2NvNm1KSTlDTk5lYWY3QTg5VEUrdzVZM0dTd1M4dXpxcDVDNlFlYlp6UE51ZWc4SFlv
VHdOODUKK1ozeE0wMzYvUXc5S2hRVnRoK1hEQXFNKzE5ZTVLSGtZY3hnM2QzWkkxSGdZMTcwZWFr
YUxCdk1ETjVVTG9GT3cKK0lzMlB0d00ybzljamQ1bWZTdVd0dEk2K2ZDcW9wOC9sOGNlckc5aVgy
R0gzOXAzaVd3V29UWnVZbmRBQTlxWXYKKzA3WVdhanVRMUVTV0tQakhZR1RuTXZ1NHhJemliQzFt
WGQyTTZ1L0lqTk82ZzQyNlNLRmFSRFdRa3gwMWdJVi8KK0N5S3M5RGdab2VNSGtLWnVQcVpWT3hP
SytBL05ybXJxSEZzUElzcnM1d2s3UUFWanU1L1gxc2twbi9VR1FsbU0KK1J3QmFRVUxPczFGYWdB
KzU0UlhVNnFVUFcwWW1oSjR4T0I0Z0hIRDF2akFLRXNSWjcvNnpjeE15T20rTTFEYksKK1JUSDRO
V2pWV3BuWThYYVZHZFJodFRwSDlNanljcEtoRitEMlpkeTJ0UVh0cXUyR2RjTW5VZWR0MTNmbjl4
RHUKK1A0UG9waEUwaXAvSU1nbitrYjRtOWUrUytLOWxsZFFsMEIrNEJjR1dBcUhlbGgyS3VVMENB
d0VBQVFLQ0FZRUEKK2xLaVdJWWpteVJqZExLVUdQVEVTOXZXTnZObVJqb3pWMFJRMExjb1NiTU1M
RFprZU8wVXd5V3FPVkhVUTgraWIKK2pJY2ZFamVOSnhJNTdvWm9wZUhPTzV2SmhwTmxGSCtnN2x0
aVcycUVScUExSzg4bFNYbTk5Qnp3NkZOcWhDUkUKK0s4dWI1TjlmeWZKQStQNG8veG0wV0s4RVhr
NXlJVVYxN3AvOXpKSnh6Z0tndjJqc1ZUaTNRRzJPWkd2bjRPdWcKK0J5b21NWkVHSGtCRHpkeHo4
Yy9jUDFUbGsxUkZ1d1NnZXdzMTc4azJ4cTdBWVNNL3MwWW1IaTdiL1JTdnB0WDYKKzF2OFA4a1hO
VWU0QXdUYU55cmx2RjJsd0lhZFo4aDFoQTd0Q0UybjQ0YjdhN0tmaEFrd2NicjFUNTlpb1loNlAK
K3p4c3lQVDY3OHVENTFkYnREL0RYSkNjb2VlRk9iOHV6a1IyS05jcm5RelpwQ0puUnE0R3A1eWJ4
d3N4eHV6cHIKK2d6MGdiTmxodVd0RTdFb1N6bUlLOXQrV1RTN0lNMkN2WnltZDYvT0FoMUZ1dzZB
UWhTcDY0WFJwM09mTU1BQUMKK0llMkVQdEtqNGlzbFdHVDhWb1VqdVJZR21kUmg0ZHVBSDFka2lB
WE9XQTNSN3k1YTEveS9pRThLRThCdHhvY0IKK0FvSEJBTThhaVVSZ3B1MUZzME9xejZpemVjN0tT
TEwzbDhobVcrTUtVT2ZrL1libmc2RnJURnNMNVl0elIrQXAKK3dXNHd3V25uSUtFYzFKTGlaN2c4
YWdSRVRLOGhyNVB3RlhVbi9HU1dDMFNNc2F6TEpUb3lTUVM1TE9WMHRMeksKK2tKM2p0TlU3dG5s
REdOa0NIVEhTb1ZMMlQvOHQrSWtaSS9oNVo2d2psWVB2VTJJdTBuVklYdGlHK2FsdjRBNk0KK0hy
aDlsNW9yNG1qQjZyR25WWGVZb2hMa0NtNnMvVzk3YWhWeExNY0VkYnNCbzFwcm0ySnFHblNvaVIv
dEVGQy8KK1FIUW5iUUtCd1FERXU3a1cwWWc5c1o4OVF0WXRWUTFZcGl4RlpPUmFVZVJJUkxucEVz
MXc3TDFtQ2JPWjJMajkKK0pIeHNIMDVjWUFjN0hKZlB3d3h2MyszYUdBSUMvZGZ1NFZTd0VGdGF0
QXpVcHpsaHpLUzUrSFFDV0I0SlVOTlUKK01RMytGd0syeFFYNFBoOHQrT3pyRmlZY0syZzBBbjVV
eFdNYTJIV0lBV1VPaG5UT3lkQVZzb0g2eVAzMWNWbTQKKzBoeG9BQkN3ZmxhTkxOR2pSVXlmQnBM
VEFjTnUvWXRjRStLUkV5N1lBQWdYWHJoUlNPNFhwTHNTWHdMbkxUNy8KK1lPa29CV0RjVFdFQ2dj
QlBXblNVRFpDSVEzZWZpdGhNWkpCY2lxZDJZMlgxOURwcThPMzFISW1ENGp0T1kwVjcKK2NVQi93
U2tlSEFHd2pkL2VDeUEyZTB4OEIySUVkcW1NZnZyKzg2Skp4ZWtDM2RKWVhDRnZINVdJaHNINTNZ
Q2EKKzNiVDFLbFdDTFA5aWIvZys1OFZRQzBSL0NjOVQ0c2ZMZVBOSDdENVprWmQxd2xiVjMwQ1By
K2k4S3dLYXk2TUQKK3hodnRMeCtqazA3R0UrRTl3bWpiQ01vN1RjbHlyTG9WRU9scVpNQXFzaGdB
cFQrcDlleUNQZXR3WHVESHdhM24KK1d4aEhjbGNaQ1Y3UjRyVUNnY0FrZEdTbnhjdnBJckRQT1VO
V3d4dm1BV1RTdHc5WmJUTlA4T3hDTkNtOWN5RGwKK2Q0YkFTMWg4RC9hK1VrN0M3MGhudTdTbDJ3
N0M3RXUyemh3UlVkaGhlMytsNEdJTlBLL2o5OWk2TnFHUGxHcHEKK3hNbE1FSjRZUzc2OEJxZUtG
cGcwbDg1UFJvRWdUc3BoRGVvUk9TVVBzRVBkQlo5QnhJQmxZS1RrYktFU1pER1IKK3R3ellIbGp4
MW4xTkNEWVBmbG1yYjFLcFhuNEVPY09iTmdodzJLcXFOVVVXZk9lQlB3QkExRnh6TTRCckFTdHAK
K0RCSU5wR1M0RGMwbWpWaVZlZ0VDZ2NBM2hUdG04MlhkeFFYajlMUW1iL0UzbEt4LzdIODdYSU9l
Tk1tdmpZdVoKK2lTOXdLcmtGK3U0MnZ5b0R4Y0tNQ254UDUwNTZ3cGRTVDRwNTZyK1NCd1ZUSGNj
M2xHQlNHY01USWZ3UlhyajMKK3RoT0Eyb3VyMm40b3VOSXNZeVRsY3NRU3ppZndtcFJtVk1SUHhs
OWZZVmRFV1VnQjgzRmdIVDBEOWF2dlpuRjkKK3Q5T2NjbkdKWFNoQUlaSUJBRGhWai9Kd0c0RmJh
WDQyTmlqRDVQTnBWTGsxWTE3T1YwSTU3NlQ5U2ZhUW9CakoKK2FIMU0vekM0YVZhUzBEWUIvR3hx
N3Y4PQorLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfYXN5bmNpby5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW8u
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODFmY2JmMzgwM2RjODQyOGMwNzU5Njk0Y2Y0NmNjZjQ5ZWNkNWY3NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW8ucHkKQEAg
LTAsMCArMSwzNzQgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBy
YW5kb20KK2ltcG9ydCBzb2NrZXQKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lw
SWYKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworZnJvbSBjcnlwdG9ncmFwaHku
aGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IHNlcmlhbGl6YXRpb24KKworZnJvbSBhaW9xdWljLmFz
eW5jaW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2Nv
bCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmFzeW5jaW8uc2Vy
dmVyIGltcG9ydCBzZXJ2ZQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQg
UXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xv
Z2dlcgorCitmcm9tIC51dGlscyBpbXBvcnQgKAorICAgIFNFUlZFUl9DQUNFUlRGSUxFLAorICAg
IFNFUlZFUl9DRVJURklMRSwKKyAgICBTRVJWRVJfS0VZRklMRSwKKyAgICBTS0lQX1RFU1RTLAor
ICAgIGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlLAorICAgIHJ1biwKKykKKworcmVhbF9zZW5kdG8g
PSBzb2NrZXQuc29ja2V0LnNlbmR0bworCisKK2RlZiBzZW5kdG9fd2l0aF9sb3NzKHNlbGYsIGRh
dGEsIGFkZHI9Tm9uZSk6CisgICAgIiIiCisgICAgU2ltdWxhdGUgMjUlIHBhY2tldCBsb3NzLgor
ICAgICIiIgorICAgIGlmIHJhbmRvbS5yYW5kb20oKSA+IDAuMjU6CisgICAgICAgIHJlYWxfc2Vu
ZHRvKHNlbGYsIGRhdGEsIGFkZHIpCisKKworY2xhc3MgU2Vzc2lvblRpY2tldFN0b3JlOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50aWNrZXRzID0ge30KKworICAgIGRl
ZiBhZGQoc2VsZiwgdGlja2V0KToKKyAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50aWNrZXRd
ID0gdGlja2V0CisKKyAgICBkZWYgcG9wKHNlbGYsIGxhYmVsKToKKyAgICAgICAgcmV0dXJuIHNl
bGYudGlja2V0cy5wb3AobGFiZWwsIE5vbmUpCisKKworZGVmIGhhbmRsZV9zdHJlYW0ocmVhZGVy
LCB3cml0ZXIpOgorICAgIGFzeW5jIGRlZiBzZXJ2ZSgpOgorICAgICAgICBkYXRhID0gYXdhaXQg
cmVhZGVyLnJlYWQoKQorICAgICAgICB3cml0ZXIud3JpdGUoYnl0ZXMocmV2ZXJzZWQoZGF0YSkp
KQorICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKKworICAgIGFzeW5jaW8uZW5zdXJlX2Z1dHVy
ZShzZXJ2ZSgpKQorCisKK2NsYXNzIEhpZ2hMZXZlbFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBz
ZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCisgICAgICAgIHNlbGYuc2Vy
dmVyX2hvc3QgPSAibG9jYWxob3N0IgorICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gNDQzMwor
CisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLmNsb3NlKCkKKworICAgIGFzeW5jIGRlZiBy
dW5fY2xpZW50KAorICAgICAgICBzZWxmLAorICAgICAgICBob3N0PU5vbmUsCisgICAgICAgIHBv
cnQ9Tm9uZSwKKyAgICAgICAgY2FkYXRhPU5vbmUsCisgICAgICAgIGNhZmlsZT1TRVJWRVJfQ0FD
RVJURklMRSwKKyAgICAgICAgY29uZmlndXJhdGlvbj1Ob25lLAorICAgICAgICByZXF1ZXN0PWIi
cGluZyIsCisgICAgICAgICoqa3dhcmdzCisgICAgKToKKyAgICAgICAgaWYgaG9zdCBpcyBOb25l
OgorICAgICAgICAgICAgaG9zdCA9IHNlbGYuc2VydmVyX2hvc3QKKyAgICAgICAgaWYgcG9ydCBp
cyBOb25lOgorICAgICAgICAgICAgcG9ydCA9IHNlbGYuc2VydmVyX3BvcnQKKyAgICAgICAgaWYg
Y29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRf
dmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9Y2FkYXRhLCBjYWZpbGU9Y2FmaWxlKQorICAgICAgICBh
c3luYyB3aXRoIGNvbm5lY3QoaG9zdCwgcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9u
LCAqKmt3YXJncykgYXMgY2xpZW50OgorICAgICAgICAgICAgIyB3YWl0aW5nIGZvciBjb25uZWN0
ZWQgd2hlbiBjb25uZWN0ZWQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgICAgICAgICAgYXdhaXQg
Y2xpZW50LndhaXRfY29ubmVjdGVkKCkKKworICAgICAgICAgICAgcmVhZGVyLCB3cml0ZXIgPSBh
d2FpdCBjbGllbnQuY3JlYXRlX3N0cmVhbSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHdyaXRlci5jYW5fd3JpdGVfZW9mKCksIFRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHdyaXRlci5nZXRfZXh0cmFfaW5mbygic3RyZWFtX2lkIiksIDApCisKKyAgICAgICAgICAg
IHdyaXRlci53cml0ZShyZXF1ZXN0KQorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2VvZigpCisK
KyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgcmVhZGVyLnJlYWQoKQorCisgICAgICAgICMg
d2FpdGluZyBmb3IgY2xvc2VkIHdoZW4gY2xvc2VkIHJldHVybnMgaW1tZWRpYXRlbHkKKyAgICAg
ICAgYXdhaXQgY2xpZW50LndhaXRfY2xvc2VkKCkKKworICAgICAgICByZXR1cm4gcmVzcG9uc2UK
KworICAgIGFzeW5jIGRlZiBydW5fc2VydmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSwgaG9z
dD0iOjoiLCAqKmt3YXJncyk6CisgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24gaXMgTm9uZToKKyAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFs
c2UpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VS
VEZJTEUsIFNFUlZFUl9LRVlGSUxFKQorICAgICAgICBzZWxmLnNlcnZlciA9IGF3YWl0IHNlcnZl
KAorICAgICAgICAgICAgaG9zdD1ob3N0LAorICAgICAgICAgICAgcG9ydD1zZWxmLnNlcnZlcl9w
b3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAg
ICAgc3RyZWFtX2hhbmRsZXI9aGFuZGxlX3N0cmVhbSwKKyAgICAgICAgICAgICoqa3dhcmdzCisg
ICAgICAgICkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyCisKKyAgICBkZWYgdGVzdF9jb25u
ZWN0X2FuZF9zZXJ2ZShzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAg
ICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3Nl
cnZlX2lwdjQoc2VsZik6CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoaG9zdD0iMC4wLjAu
MCIpKQorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoaG9zdD0iMTI3LjAu
MC4xIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIpCisKKyAg
ICBAc2tpcElmKCJpcHY2IiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcgSVB2NiB0ZXN0cyIpCisg
ICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfaXB2NihzZWxmKToKKyAgICAgICAgcnVuKHNl
bGYucnVuX3NlcnZlcihob3N0PSI6OiIpKQorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1
bl9jbGllbnQoaG9zdD0iOjoxIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Us
IGIiZ25pcCIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9lY19jZXJ0aWZpY2F0
ZShzZWxmKToKKyAgICAgICAgY2VydGlmaWNhdGUsIHByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNf
Y2VydGlmaWNhdGUoY29tbW9uX25hbWU9ImxvY2FsaG9zdCIpCisKKyAgICAgICAgcnVuKAorICAg
ICAgICAgICAgc2VsZi5ydW5fc2VydmVyKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNlcnRp
ZmljYXRlLCBwcml2YXRlX2tleT1wcml2YXRlX2tleSwgaXNfY2xpZW50PUZhbHNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIHJlc3BvbnNl
ID0gcnVuKAorICAgICAgICAgICAgc2VsZi5ydW5fY2xpZW50KAorICAgICAgICAgICAgICAgIGNh
ZGF0YT1jZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0p
LAorICAgICAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRl
ZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2xhcmdlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg
ICAgVHJhbnNmZXIgZW5vdWdoIGRhdGEgdG8gcmVxdWlyZSByYWlzaW5nIE1BWF9EQVRBIGFuZCBN
QVhfU1RSRUFNX0RBVEEuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gYiJaIiAqIDIwOTcx
NTIKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9IHJ1
bihzZWxmLnJ1bl9jbGllbnQocmVxdWVzdD1kYXRhKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhv
dXRfY2xpZW50X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xp
ZW50X3dpdGhvdXRfY29uZmlnKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2Vs
Zi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCkgYXMgY2xpZW50OgorICAgICAgICAgICAg
ICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAg
ICAgICAgIHJ1bihydW5fY2xpZW50X3dpdGhvdXRfY29uZmlnKCkpCisKKyAgICBkZWYgdGVzdF9j
b25uZWN0X2FuZF9zZXJ2ZV93cml0ZWxpbmVzKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgcnVu
X2NsaWVudF93cml0ZWxpbmVzKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwg
c2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgICAgICAg
ICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0IGNs
aWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgICAgICBhc3NlcnQgd3JpdGVyLmNhbl93
cml0ZV9lb2YoKSBpcyBUcnVlCisKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVsaW5lcyhb
YiIwMTIzNDU2NyIsIGIiODkwMTIzNDUiXSkKKyAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVf
ZW9mKCkKKworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9IHJ1bihydW5f
Y2xpZW50X3dyaXRlbGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwg
YiI1NDMyMTA5ODc2NTQzMjEwIikKKworICAgIEBza2lwSWYoImxvc3MiIGluIFNLSVBfVEVTVFMs
ICJTa2lwcGluZyBsb3NzIHRlc3RzIikKKyAgICBAcGF0Y2goInNvY2tldC5zb2NrZXQuc2VuZHRv
IiwgbmV3X2NhbGxhYmxlPWxhbWJkYTogc2VuZHRvX3dpdGhfbG9zcykKKyAgICBkZWYgdGVzdF9j
b25uZWN0X2FuZF9zZXJ2ZV93aXRoX3BhY2tldF9sb3NzKHNlbGYsIG1vY2tfc2VuZHRvKToKKyAg
ICAgICAgIiIiCisgICAgICAgIFRoaXMgdGVzdCBlbnN1cmVzIGhhbmRzaGFrZSBzdWNjZXNzIGFu
ZCBzdHJlYW0gZGF0YSBpcyBzdWNjZXNzZnVsbHkgc2VudAorICAgICAgICBhbmQgcmVjZWl2ZWQg
aW4gdGhlIHByZXNlbmNlIG9mIHBhY2tldCBsb3NzIChyYW5kb21pemVkIDI1JSBpbiBlYWNoIGRp
cmVjdGlvbikuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gYiJaIiAqIDY1NTM2CisKKyAg
ICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAg
ICAgIGlzX2NsaWVudD1GYWxzZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICkK
KyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJU
RklMRSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoY29uZmln
dXJhdGlvbj1zZXJ2ZXJfY29uZmlndXJhdGlvbikpCisKKyAgICAgICAgcmVzcG9uc2UgPSBydW4o
CisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRy
dWUsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKQorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgcmVxdWVzdD1kYXRhLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0
X2FuZF9zZXJ2ZV93aXRoX3Nlc3Npb25fdGlja2V0KHNlbGYpOgorICAgICAgICAjIHN0YXJ0IHNl
cnZlcgorICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQorICAgICAgICBzdG9yZSA9IFNlc3Np
b25UaWNrZXRTdG9yZSgpCisKKyAgICAgICAgZGVmIHNhdmVfdGlja2V0KHQpOgorICAgICAgICAg
ICAgbm9ubG9jYWwgY2xpZW50X3RpY2tldAorICAgICAgICAgICAgY2xpZW50X3RpY2tldCA9IHQK
KworICAgICAgICBydW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAg
ICAgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zdG9yZS5wb3AsIHNlc3Npb25fdGlja2V0X2hh
bmRsZXI9c3RvcmUuYWRkCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICAjIGZp
cnN0IHJlcXVlc3QKKyAgICAgICAgcmVzcG9uc2UgPSBydW4oc2VsZi5ydW5fY2xpZW50KHNlc3Np
b25fdGlja2V0X2hhbmRsZXI9c2F2ZV90aWNrZXQpLCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZSwgYiJnbmlwIikKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjbGll
bnRfdGlja2V0KQorCisgICAgICAgICMgc2Vjb25kIHJlcXVlc3QKKyAgICAgICAgcnVuKAorICAg
ICAgICAgICAgc2VsZi5ydW5fY2xpZW50KAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBz
ZXNzaW9uX3RpY2tldD1jbGllbnRfdGlja2V0CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImdu
aXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxlc3NfcmV0
cnkoc2VsZik6CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcmVzcG9u
c2UgPSBydW4oc2VsZi5ydW5fY2xpZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UsIGIiZ25pcCIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0
YXRlbGVzc19yZXRyeV9iYWRfb3JpZ2luYWxfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIElmIHRoZSBzZXJ2ZXIncyB0cmFuc3BvcnQgcGFyYW1ldGVycyBkbyBub3Qg
aGF2ZSB0aGUgY29ycmVjdAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIHRoZSBjb25u
ZWN0aW9uIGZhaWwuCisgICAgICAgICIiIgorCisgICAgICAgIGRlZiBjcmVhdGVfcHJvdG9jb2wo
KmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHByb3RvY29sID0gUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fb3Jp
Z2luYWxfY29ubmVjdGlvbl9pZCA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybiBwcm90b2NvbAor
CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoY3JlYXRlX3Byb3RvY29sPWNyZWF0ZV9wcm90
b2NvbCwgc3RhdGVsZXNzX3JldHJ5PVRydWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKENvbm5lY3Rpb25FcnJvcik6CisgICAgICAgICAgICBydW4oc2VsZi5ydW5fY2xpZW50KCkp
CisKKyAgICBAcGF0Y2goImFpb3F1aWMucXVpYy5yZXRyeS5RdWljUmV0cnlUb2tlbkhhbmRsZXIu
dmFsaWRhdGVfdG9rZW4iKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3Rh
dGVsZXNzX3JldHJ5X2JhZChzZWxmLCBtb2NrX3ZhbGlkYXRlKToKKyAgICAgICAgbW9ja192YWxp
ZGF0ZS5zaWRlX2VmZmVjdCA9IFZhbHVlRXJyb3IoIkRlY3J5cHRpb24gZmFpbGVkLiIpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1
bigKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUsIGlkbGVfdGlt
ZW91dD00LjApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfdmVyc2lvbl9uZWdvdGlhdGlvbihzZWxmKToKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorCisgICAgICAgICMgZm9yY2UgdmVyc2lvbiBu
ZWdvdGlhdGlvbgorICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSkKKyAgICAgICAgY29uZmlndXJh
dGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnMuaW5zZXJ0KDAsIDB4MUEyQTNBNEEpCisKKyAgICAgICAg
cmVzcG9uc2UgPSBydW4oc2VsZi5ydW5fY2xpZW50KGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlv
bikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIpCisKKyAgICBk
ZWYgdGVzdF9jb25uZWN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAgICAg
ICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgICAgIHBvcnQ9NDQwMCwKKyAgICAg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9
VHJ1ZSwgaWRsZV90aW1lb3V0PTUpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK
KworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdGltZW91dF9ub193YWl0X2Nvbm5lY3RlZChzZWxmKToK
KyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRfbm9fd2FpdF9jb25uZWN0ZWQoY29uZmlndXJh
dGlvbik6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhj
YWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICA0NDAw
LAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAg
ICAgICAgICB3YWl0X2Nvbm5lY3RlZD1GYWxzZSwKKyAgICAgICAgICAgICkgYXMgY2xpZW50Ogor
ICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKENvbm5lY3Rpb25FcnJvcik6CisgICAgICAgICAgICBydW4oCisgICAgICAg
ICAgICAgICAgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZCgKKyAgICAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90
aW1lb3V0PTUpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfbG9jYWxfcG9ydChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZl
cigpKQorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQobG9jYWxfcG9ydD0z
NDU2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAg
IGRlZiB0ZXN0X2NoYW5nZV9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYg
cnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpOgorICAgICAgICAgICAgY29uZmlndXJh
dGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxF
KQorICAgICAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYu
c2VydmVyX2hvc3QsIHNlbGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlv
bgorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50
LnBpbmcoKQorICAgICAgICAgICAgICAgIGNsaWVudC5jaGFuZ2VfY29ubmVjdGlvbl9pZCgpCisg
ICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1
bl9zZXJ2ZXIoKSkKKyAgICAgICAgcnVuKHJ1bl9jbGllbnRfY2hhbmdlX2Nvbm5lY3Rpb25faWQo
KSkKKworICAgIGRlZiB0ZXN0X2tleV91cGRhdGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBy
dW5fY2xpZW50X2tleV91cGRhdGUoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWlj
Q29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24u
bG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAg
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0
LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAg
ICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKKyAg
ICAgICAgICAgICAgICBjbGllbnQucmVxdWVzdF9rZXlfdXBkYXRlKCkKKyAgICAgICAgICAgICAg
ICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQor
ICAgICAgICBydW4ocnVuX2NsaWVudF9rZXlfdXBkYXRlKCkpCisKKyAgICBkZWYgdGVzdF9waW5n
KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAg
ICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVS
X0NBQ0VSVEZJTEUpCisgICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAg
ICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1j
b25maWd1cmF0aW9uCisgICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBh
d2FpdCBjbGllbnQucGluZygpCisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQor
CisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcnVuKHJ1bl9jbGllbnRf
cGluZygpKQorCisgICAgZGVmIHRlc3RfcGluZ19wYXJhbGxlbChzZWxmKToKKyAgICAgICAgYXN5
bmMgZGVmIHJ1bl9jbGllbnRfcGluZygpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1
aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlv
bi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAg
ICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hv
c3QsIHNlbGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAg
ICAgICAgKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgY29yb3MgPSBbY2xpZW50LnBpbmco
KSBmb3IgeCBpbiByYW5nZSgxNildCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5nYXRo
ZXIoKmNvcm9zKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAgICAgcnVu
KHJ1bl9jbGllbnRfcGluZygpKQorCisgICAgZGVmIHRlc3Rfc2VydmVyX3JlY2VpdmVzX2dhcmJh
Z2Uoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAgICAg
ICAgc2VydmVyLmRhdGFncmFtX3JlY2VpdmVkKGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAw
MDgwIiksICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZXJ2ZXIuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpb19jb21wYXQucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDZkYmY1MTEy
NGNkYjYzMmFkYTMwYjY2YzNmMmU0NDZlZmJjMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpb19jb21wYXQucHkKQEAgLTAsMCArMSwzOCBAQAoraW1w
b3J0IGFzeW5jaW8KK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVp
Yy5hc3luY2lvLmNvbXBhdCBpbXBvcnQgX2FzeW5jY29udGV4dG1hbmFnZXIKKworZnJvbSAudXRp
bHMgaW1wb3J0IHJ1bgorCisKK0BfYXN5bmNjb250ZXh0bWFuYWdlcgorYXN5bmMgZGVmIHNvbWVf
Y29udGV4dCgpOgorICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCkKKyAgICB5aWVsZAorICAgIGF3
YWl0IGFzeW5jaW8uc2xlZXAoMCkKKworCitjbGFzcyBBc3luY2lvQ29tcGF0VGVzdChUZXN0Q2Fz
ZSk6CisgICAgZGVmIHRlc3Rfb2soc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6Cisg
ICAgICAgICAgICBhc3luYyB3aXRoIHNvbWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgICAgICBydW4odGVzdCgpKQorCisgICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0aW9u
KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgdGVzdCgpOgorICAgICAgICAgICAgYXN5bmMgd2l0
aCBzb21lX2NvbnRleHQoKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNv
bWUgcmVhc29uIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJv
cik6CisgICAgICAgICAgICBydW4odGVzdCgpKQorCisgICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0
aW9uX3R5cGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBh
c3luYyB3aXRoIHNvbWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAg
ICAgICAgICAgIHJ1bih0ZXN0KCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9idWZmZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9idWZmZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTFkYmM0NGQwZGQyNmYxZWY2ODU2ODI0ZDU1YmI4ODA5OTI4ODc1NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpAQCAtMCwwICsxLDIwMSBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmJ1ZmZlciBp
bXBvcnQgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIEJ1ZmZlcldyaXRlRXJyb3IsIHNpemVfdWlu
dF92YXIKKworCitjbGFzcyBCdWZmZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9kYXRh
X3NsaWNlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4
MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YV9z
bGljZSgwLCA4KSwgYiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGFfc2xpY2UoMSwgMyksIGIiXHgwN1x4MDYiKQorCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAg
ICAgIGJ1Zi5kYXRhX3NsaWNlKC0xLCAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuZGF0YV9zbGljZSgwLCA5KQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAg
ICBidWYuZGF0YV9zbGljZSgxLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlcyhzZWxmKToK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAy
XHgwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfYnl0ZXMoMyksIGIiXHgw
OFx4MDdceDA2IikKKworICAgIGRlZiB0ZXN0X3B1bGxfYnl0ZXNfbmVnYXRpdmUoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4
MDEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6Cisg
ICAgICAgICAgICBidWYucHVsbF9ieXRlcygtMSkKKworICAgIGRlZiB0ZXN0X3B1bGxfYnl0ZXNf
dHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLnB1bGxfYnl0ZXMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAw
KQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygwKSwgYiIiKQorCisgICAgZGVmIHRlc3Rf
cHVsbF91aW50OChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4
MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1
bGxfdWludDgoKSwgMHgwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAx
KQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50OF90cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYucHVsbF91aW50OCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDE2
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0
XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50MTYo
KSwgMHgwODA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAg
ICBkZWYgdGVzdF9wdWxsX3VpbnQxNl90cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJl
YWRFcnJvcik6CisgICAgICAgICAgICBidWYucHVsbF91aW50MTYoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX3VpbnQzMihzZWxm
KToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNc
eDAyXHgwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfdWludDMyKCksIDB4
MDgwNzA2MDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgNCkKKworICAg
IGRlZiB0ZXN0X3B1bGxfdWludDMyX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PTMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVh
ZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0KHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4
MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50NjQoKSwgMHgw
ODA3MDYwNTA0MDMwMjAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgp
CisKKyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ2NF90cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT03KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYucHVsbF91aW50NjQoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdF9wdXNoX2J5dGVz
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYiJceDA4XHgwN1x4MDYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5k
YXRhLCBiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMykKKworICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXNfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJXcml0ZUVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGIiXHgwOFx4
MDdceDA2XHgwNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKwor
ICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXNfemVybyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTMpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGIiIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoY2FwYWNpdHk9MSkKKyAgICAgICAgYnVmLnB1c2hfdWludDgoMHgwOCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4IikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWYudGVsbCgpLCAxKQorCisgICAgZGVmIHRlc3RfcHVzaF91aW50MTYoc2VsZik6
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0yKQorICAgICAgICBidWYucHVzaF91aW50
MTYoMHgwODA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDhceDA3
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyKQorCisgICAgZGVmIHRl
c3RfcHVzaF91aW50MzIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT00KQor
ICAgICAgICBidWYucHVzaF91aW50MzIoMHgwODA3MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgYiJceDA4XHgwN1x4MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCA0KQorCisgICAgZGVmIHRlc3RfcHVzaF91aW50NjQoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT04KQorICAgICAgICBidWYucHVzaF91aW50NjQo
MHgwODA3MDYwNTA0MDMwMjAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBi
Ilx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCA4KQorCisgICAgZGVmIHRlc3Rfc2VlayhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9YiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
YnVmLmVvZigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisKKyAg
ICAgICAgYnVmLnNlZWsoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWYuZW9mKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgNCkKKworICAgICAgICBidWYuc2Vl
ayg4KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnNlZWsoLTEpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnNlZWsoOSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorCisKK2NsYXNzIFVpbnRWYXJUZXN0KFRl
c3RDYXNlKToKKyAgICBkZWYgcm91bmR0cmlwKHNlbGYsIGRhdGEsIHZhbHVlKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVs
bF91aW50X3ZhcigpLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgp
LCBsZW4oZGF0YSkpCisKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5k
YXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfdWludF92YXIoc2VsZik6CisgICAgICAgICMgMSBi
eXRlCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHgwMCIsIDApCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHgwMSIsIDEpCisgICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHgyNSIsIDM3KQor
ICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4M2YiLCA2MykKKworICAgICAgICAjIDIgYnl0ZXMK
KyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDdiXHhiZCIsIDE1MjkzKQorICAgICAgICBzZWxm
LnJvdW5kdHJpcChiIlx4N2ZceGZmIiwgMTYzODMpCisKKyAgICAgICAgIyA0IGJ5dGVzCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHg5ZFx4N2ZceDNlXHg3ZCIsIDQ5NDg3ODMzMykKKyAgICAg
ICAgc2VsZi5yb3VuZHRyaXAoYiJceGJmXHhmZlx4ZmZceGZmIiwgMTA3Mzc0MTgyMykKKworICAg
ICAgICAjIDggYnl0ZXMKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceGMyXHgxOVx4N2NceDVl
XHhmZlx4MTRceGU4XHg4YyIsIDE1MTI4ODgwOTk0MTk1MjY1MikKKyAgICAgICAgc2VsZi5yb3Vu
ZHRyaXAoYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZiIsIDQ2MTE2ODYwMTg0Mjcz
ODc5MDMpCisKKyAgICBkZWYgdGVzdF9wdWxsX3VpbnRfdmFyX3RydW5jYXRlZChzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4ZmYiKQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYucHVsbF91aW50
X3ZhcigpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnRfdmFyX3Rvb19iaWcoc2VsZik6CisgICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT04KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoNDYx
MTY4NjAxODQyNzM4NzkwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cihjbS5leGNlcHRpb24pLCAiSW50ZWdlciBpcyB0b28gYmlnIGZvciBhIHZhcmlhYmxlLWxl
bmd0aCBpbnRlZ2VyIgorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9zaXplX3VpbnRfdmFyKHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVfdWludF92YXIoNjMpLCAxKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVfdWludF92YXIoMTYzODMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNpemVfdWludF92YXIoMTA3Mzc0MTgyMyksIDQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig0NjExNjg2MDE4NDI3Mzg3OTAzKSwgOCkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgc2l6ZV91aW50X3Zhcig0NjExNjg2MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRv
byBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiCisgICAgICAgICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGVzdF9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMWE1Y2RjNThmNTljNmU5OThi
MGQzOTQ5YWE3NGY3N2QyMTc1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9jb25uZWN0aW9uLnB5CkBAIC0wLDAgKzEsMTgwMCBAQAoraW1wb3J0IGFzeW5jaW8K
K2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBpbworaW1wb3J0IHRp
bWUKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQg
dGxzCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9ydCBVSU5UX1ZBUl9NQVgsIEJ1ZmZlciwgZW5j
b2RlX3VpbnRfdmFyCitmcm9tIGFpb3F1aWMucXVpYyBpbXBvcnQgZXZlbnRzCitmcm9tIGFpb3F1
aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9x
dWljLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgKAorICAgIFF1aWNDb25uZWN0aW9uLAorICAgIFF1
aWNDb25uZWN0aW9uRXJyb3IsCisgICAgUXVpY05ldHdvcmtQYXRoLAorICAgIFF1aWNSZWNlaXZl
Q29udGV4dCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgQ3J5cHRvUGFpcgor
ZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCitmcm9tIGFpb3F1aWMu
cXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFF1aWNF
cnJvckNvZGUsCisgICAgUXVpY0ZyYW1lVHlwZSwKKyAgICBlbmNvZGVfcXVpY19yZXRyeSwKKyAg
ICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uLAorKQorZnJvbSBhaW9xdWljLnF1aWMu
cGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljUGFja2V0QnVpbGRl
cgorZnJvbSBhaW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0IFF1aWNQYWNrZXRQYWNlcgorCitm
cm9tIC51dGlscyBpbXBvcnQgKAorICAgIFNFUlZFUl9DQUNFUlRGSUxFLAorICAgIFNFUlZFUl9D
RVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEVfV0lUSF9DSEFJTiwKKyAgICBTRVJWRVJfS0VZ
RklMRSwKKykKKworQ0xJRU5UX0FERFIgPSAoIjEuMi4zLjQiLCAxMjM0KQorCitTRVJWRVJfQURE
UiA9ICgiMi4zLjQuNSIsIDQ0MzMpCisKKworY2xhc3MgU2Vzc2lvblRpY2tldFN0b3JlOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50aWNrZXRzID0ge30KKworICAgIGRl
ZiBhZGQoc2VsZiwgdGlja2V0KToKKyAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50aWNrZXRd
ID0gdGlja2V0CisKKyAgICBkZWYgcG9wKHNlbGYsIGxhYmVsKToKKyAgICAgICAgcmV0dXJuIHNl
bGYudGlja2V0cy5wb3AobGFiZWwsIE5vbmUpCisKKworZGVmIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50LCBlcG9jaD10bHMuRXBvY2guT05FX1JUVCk6CisgICAgcmV0dXJuIFF1aWNSZWNl
aXZlQ29udGV4dCgKKyAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgIGhvc3RfY2lkPWNsaWVu
dC5ob3N0X2NpZCwKKyAgICAgICAgbmV0d29ya19wYXRoPWNsaWVudC5fbmV0d29ya19wYXRoc1sw
XSwKKyAgICAgICAgcXVpY19sb2dnZXJfZnJhbWVzPVtdLAorICAgICAgICB0aW1lPWFzeW5jaW8u
Z2V0X2V2ZW50X2xvb3AoKS50aW1lKCksCisgICAgKQorCisKK2RlZiBjb25zdW1lX2V2ZW50cyhj
b25uZWN0aW9uKToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBldmVudCA9IGNvbm5lY3Rpb24u
bmV4dF9ldmVudCgpCisgICAgICAgIGlmIGV2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICBicmVh
aworCisKK2RlZiBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgKipjbGllbnRfb3B0aW9u
cyk6CisgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgIGNvbmZpZ3VyYXRpb249
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgcXVpY19sb2dn
ZXI9UXVpY0xvZ2dlcigpLCAqKmNsaWVudF9vcHRpb25zCisgICAgICAgICkKKyAgICApCisgICAg
Y2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAjIGtpY2stb2ZmIGhhbmRzaGFrZQorICAgIGNs
aWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCisgICAgc2VsZi5hc3Nl
cnRFcXVhbChkcm9wKGNsaWVudCksIDEpCisKKyAgICByZXR1cm4gY2xpZW50CisKKworQGNvbnRl
eHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBjbGllbnRfYW5kX3NlcnZlcigKKyAgICBjbGllbnRf
a3dhcmdzPXt9LAorICAgIGNsaWVudF9vcHRpb25zPXt9LAorICAgIGNsaWVudF9wYXRjaD1sYW1i
ZGEgeDogTm9uZSwKKyAgICBoYW5kc2hha2U9VHJ1ZSwKKyAgICBzZXJ2ZXJfa3dhcmdzPXt9LAor
ICAgIHNlcnZlcl9jZXJ0ZmlsZT1TRVJWRVJfQ0VSVEZJTEUsCisgICAgc2VydmVyX2tleWZpbGU9
U0VSVkVSX0tFWUZJTEUsCisgICAgc2VydmVyX29wdGlvbnM9e30sCisgICAgc2VydmVyX3BhdGNo
PWxhbWJkYSB4OiBOb25lLAorKToKKyAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1aWNDb25m
aWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dl
cigpLCAqKmNsaWVudF9vcHRpb25zCisgICAgKQorICAgIGNsaWVudF9jb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAgICBjbGll
bnQgPSBRdWljQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPWNsaWVudF9jb25maWd1cmF0aW9uLCAq
KmNsaWVudF9rd2FyZ3MpCisgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisgICAgZGlzYWJsZV9w
YWNrZXRfcGFjaW5nKGNsaWVudCkKKyAgICBjbGllbnRfcGF0Y2goY2xpZW50KQorCisgICAgc2Vy
dmVyX2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgaXNfY2xpZW50
PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksICoqc2VydmVyX29wdGlvbnMKKyAgICAp
CisgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKHNlcnZlcl9jZXJ0Zmls
ZSwgc2VydmVyX2tleWZpbGUpCisKKyAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25maWd1
cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uLCAqKnNlcnZlcl9rd2FyZ3MpCisgICAgc2VydmVy
Ll9hY2tfZGVsYXkgPSAwCisgICAgZGlzYWJsZV9wYWNrZXRfcGFjaW5nKHNlcnZlcikKKyAgICBz
ZXJ2ZXJfcGF0Y2goc2VydmVyKQorCisgICAgIyBwZXJmb3JtIGhhbmRzaGFrZQorICAgIGlmIGhh
bmRzaGFrZToKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRp
bWUoKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICByb3VuZHRyaXAo
Y2xpZW50LCBzZXJ2ZXIpCisKKyAgICB5aWVsZCBjbGllbnQsIHNlcnZlcgorCisgICAgIyBjbG9z
ZQorICAgIGNsaWVudC5jbG9zZSgpCisgICAgc2VydmVyLmNsb3NlKCkKKworCitkZWYgZGlzYWJs
ZV9wYWNrZXRfcGFjaW5nKGNvbm5lY3Rpb24pOgorICAgIGNsYXNzIER1bW15UGFja2V0UGFjZXIo
UXVpY1BhY2tldFBhY2VyKToKKyAgICAgICAgZGVmIG5leHRfc2VuZF90aW1lKHNlbGYsIG5vdyk6
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgY29ubmVjdGlvbi5fbG9zcy5fcGFjZXIg
PSBEdW1teVBhY2tldFBhY2VyKCkKKworCitkZWYgc2VxdWVuY2VfbnVtYmVycyhjb25uZWN0aW9u
X2lkcyk6CisgICAgcmV0dXJuIGxpc3QobWFwKGxhbWJkYSB4OiB4LnNlcXVlbmNlX251bWJlciwg
Y29ubmVjdGlvbl9pZHMpKQorCisKK2RlZiBkcm9wKHNlbmRlcik6CisgICAgIiIiCisgICAgRHJv
cCBkYXRhZ3JhbXMgZnJvbSBgc2VuZGVyYC4KKyAgICAiIiIKKyAgICByZXR1cm4gbGVuKHNlbmRl
ci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpKQorCisKK2RlZiByb3VuZHRyaXAo
c2VuZGVyLCByZWNlaXZlcik6CisgICAgIiIiCisgICAgU2VuZCBkYXRhZ3JhbXMgZnJvbSBgc2Vu
ZGVyYCB0byBgcmVjZWl2ZXJgIGFuZCBiYWNrLgorICAgICIiIgorICAgIHJldHVybiAodHJhbnNm
ZXIoc2VuZGVyLCByZWNlaXZlciksIHRyYW5zZmVyKHJlY2VpdmVyLCBzZW5kZXIpKQorCisKK2Rl
ZiB0cmFuc2ZlcihzZW5kZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFt
cyBmcm9tIGBzZW5kZXJgIHRvIGByZWNlaXZlcmAuCisgICAgIiIiCisgICAgZGF0YWdyYW1zID0g
MAorICAgIGZyb21fYWRkciA9IENMSUVOVF9BRERSIGlmIHNlbmRlci5faXNfY2xpZW50IGVsc2Ug
U0VSVkVSX0FERFIKKyAgICBmb3IgZGF0YSwgYWRkciBpbiBzZW5kZXIuZGF0YWdyYW1zX3RvX3Nl
bmQobm93PXRpbWUudGltZSgpKToKKyAgICAgICAgZGF0YWdyYW1zICs9IDEKKyAgICAgICAgcmVj
ZWl2ZXIucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBmcm9tX2FkZHIsIG5vdz10aW1lLnRpbWUoKSkK
KyAgICByZXR1cm4gZGF0YWdyYW1zCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25UZXN0KFRlc3RD
YXNlKToKKyAgICBkZWYgY2hlY2tfaGFuZHNoYWtlKHNlbGYsIGNsaWVudCwgc2VydmVyLCBhbHBu
X3Byb3RvY29sPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgaGFuZHNoYWtlIGNv
bXBsZXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuUHJvdG9jb2xO
ZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmFscG5fcHJvdG9jb2ws
IGFscG5fcHJvdG9jb2wpCisgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxl
dGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmFscG5fcHJvdG9jb2wsIGFscG5f
cHJvdG9jb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZWFybHlfZGF0YV9hY2Nl
cHRlZCwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc2Vzc2lvbl9yZXN1
bWVkLCBGYWxzZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNyk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25uZWN0aW9u
SWRJc3N1ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNsaWVudC5uZXh0X2V2ZW50KCkp
CisKKyAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90b2NvbCkKKyAg
ICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90b2NvbCkKKyAgICAgICAg
Zm9yIGkgaW4gcmFuZ2UoNyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2Vy
dmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlcnZlci5uZXh0X2V2ZW50KCkpCisKKyAgICBkZWYgdGVzdF9jb25u
ZWN0KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwg
c2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAg
ICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikK
KworICAgICAgICAgICAgIyBjaGVjayBlYWNoIGVuZHBvaW50IGhhcyBhdmFpbGFibGUgY29ubmVj
dGlvbiBJRHMgZm9yIHRoZSBwZWVyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUp
LCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhzZXJ2ZXIuX3Bl
ZXJfY2lkX2F2YWlsYWJsZSksIFsxLCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAjIGNsaWVudCBjbG9zZXMgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgICAg
IGNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKGNs
aWVudCwgc2VydmVyKSwgMSkKKworICAgICAgICAgICAgIyBjaGVjayBjb25uZWN0aW9uIGNsb3Nl
cyBvbiB0aGUgY2xpZW50IHNpZGUKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfdGltZXIoY2xp
ZW50LmdldF90aW1lcigpKQorICAgICAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuQ29ubmVj
dGlvblRlcm1pbmF0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmVycm9y
X2NvZGUsIFF1aWNFcnJvckNvZGUuTk9fRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LnJlYXNvbl9waHJhc2UsICIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUo
Y2xpZW50Lm5leHRfZXZlbnQoKSkKKworICAgICAgICAgICAgIyBjaGVjayBjb25uZWN0aW9uIGNs
b3NlcyBvbiB0aGUgc2VydmVyIHNpZGUKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIo
c2VydmVyLmdldF90aW1lcigpKQorICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVu
dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuQ29u
bmVjdGlvblRlcm1pbmF0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmVy
cm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuTk9fRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50LnJlYXNvbl9waHJhc2UsICIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAgICAgIyBjaGVjayBjbGllbnQgbG9n
CisgICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50LmNvbmZpZ3VyYXRpb24ucXVpY19sb2dn
ZXIudG9fZGljdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGNsaWVudF9s
b2dbInRyYWNlcyJdWzBdWyJldmVudHMiXSksIDIwKQorCisgICAgICAgICAgICAjIGNoZWNrIHNl
cnZlciBsb2cKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXIuY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4o
c2VydmVyX2xvZ1sidHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICBkZWYgdGVzdF9j
b25uZWN0X3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigK
KyAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBbImgzLTI1Iiwg
ImhxLTI1Il19LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IFsiaHEtMjUiXX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
ICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5k
c2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD0iaHEtMjUi
KQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX3NlY3JldHNfbG9nKHNlbGYpOgorICAgICAg
ICBjbGllbnRfbG9nX2ZpbGUgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlcnZlcl9sb2dfZmls
ZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAg
ICAgICAgIGNsaWVudF9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IGNsaWVudF9sb2dfZmls
ZX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17InNlY3JldHNfbG9nX2ZpbGUiOiBzZXJ2
ZXJfbG9nX2ZpbGV9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIGNoZWNrIGhhbmRzaGFrZSBjb21wbGV0ZWQKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfaGFu
ZHNoYWtlKGNsaWVudD1jbGllbnQsIHNlcnZlcj1zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgY2hl
Y2sgc2VjcmV0cyB3ZXJlIGxvZ2dlZAorICAgICAgICAgICAgY2xpZW50X2xvZyA9IGNsaWVudF9s
b2dfZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBzZXJ2ZXJfbG9nID0gc2VydmVyX2xvZ19m
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X2xvZywg
c2VydmVyX2xvZykKKyAgICAgICAgICAgIGxhYmVscyA9IFtdCisgICAgICAgICAgICBmb3IgbGlu
ZSBpbiBjbGllbnRfbG9nLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBsYWJlbHMuYXBw
ZW5kKGxpbmUuc3BsaXQoKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgbGFiZWxzLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfU0VSVkVSX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX0NMSUVOVF9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAg
ICAgICAgICAgICAiUVVJQ19TRVJWRVJfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX0NMSUVOVF9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX2NlcnRfY2hhaW4o
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoc2VydmVyX2NlcnRmaWxlPVNF
UlZFUl9DRVJURklMRV9XSVRIX0NIQUlOKSBhcyAoCisgICAgICAgICAgICBjbGllbnQsCisgICAg
ICAgICAgICBzZXJ2ZXIsCisgICAgICAgICk6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRzaGFr
ZSBjb21wbGV0ZWQKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfaGFuZHNoYWtlKGNsaWVudD1jbGll
bnQsIHNlcnZlcj1zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfbG9zc18xKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hl
ZCBldmVuIGluIHRoZSBjbGllbnQncyBJTklUSUFMIGlzIGxvc3QuCisgICAgICAgICIiIgorCisg
ICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4gW2xl
bih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9
IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29uZmln
dXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQor
CisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2Nv
bmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgIHNl
cnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQor
ICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRG
SUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihj
b25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fja19k
ZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5vdyA9
IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIElOSVRJ
QUwgaXMgbG9zdAorICAgICAgICBub3cgPSAxLjAKKyAgICAgICAgY2xpZW50LmhhbmRsZV90aW1l
cihub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9
bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEy
ODBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMy4wKQor
CisgICAgICAgICMgc2VydmVyIHJlY2VpdmVzIElOSVRJQUwsIHNlbmRzIElOSVRJQUwgKyBIQU5E
U0hBS0UKKyAgICAgICAgbm93ID0gMS4xCisgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFt
KGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBzZXJ2
ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCAxMDYyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDIuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFja2V0cyksIDIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZl
bnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVy
Lm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkK
KyAgICAgICAgbm93ID0gMS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1z
WzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9
IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAxLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2
ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShj
bGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAg
ICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0s
IENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNf
dG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVz
KGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdl
dF90aW1lcigpLCAxLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9s
b3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkhhbmRzaGFr
ZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2
ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5vdyA9IDEuNAor
ICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIs
IG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1u
b3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzJd
KQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgNjEu
NCkgICMgaWRsZSB0aW1lb3V0CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfbG9zc18yKHNl
bGYpOgorICAgICAgICBkZWYgZGF0YWdyYW1fc2l6ZXMoaXRlbXMpOgorICAgICAgICAgICAgcmV0
dXJuIFtsZW4oeFswXSkgZm9yIHggaW4gaXRlbXNdCisKKyAgICAgICAgY2xpZW50X2NvbmZpZ3Vy
YXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY2xpZW50
X2NvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJU
RklMRSkKKworICAgICAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPWNs
aWVudF9jb25maWd1cmF0aW9uKQorICAgICAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKworICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZF
Ul9DRVJURklMRSwgU0VSVkVSX0tFWUZJTEUpCisKKyAgICAgICAgc2VydmVyID0gUXVpY0Nvbm5l
Y3Rpb24oY29uZmlndXJhdGlvbj1zZXJ2ZXJfY29uZmlndXJhdGlvbikKKyAgICAgICAgc2VydmVy
Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgIyBjbGllbnQgc2VuZHMgSU5JVElBTAorICAgICAg
ICBub3cgPSAwLjAKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz1ub3cp
CisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAxLjApCisKKyAgICAgICAg
IyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFLRSBidXQg
c2Vjb25kIGRhdGFncmFtIGlzIGxvc3QKKyAgICAgICAgbm93ID0gMC4xCisgICAgICAgIHNlcnZl
ci5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAg
ICAgICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCAxMDYyXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMp
LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFd
LnNlbnRfcGFja2V0cyksIDIpCisKKyAgICAgICAgIyBjbGllbnQgb25seSByZWNlaXZlcyBmaXJz
dCBkYXRhZ3JhbSBhbmQgc2VuZHMgQUNLUworICAgICAgICBub3cgPSAwLjIKKyAgICAgICAgY2xp
ZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQor
ICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzk3XSkKKyAgICAgICAg
c2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDAuNjI1KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90
b2NvbE5lZ290aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNsaWVudC5uZXh0X2V2
ZW50KCkpCisKKyAgICAgICAgIyBjbGllbnQgUFRPIC0gSEFORFNIQUtFIFBJTkcKKyAgICAgICAg
bm93ID0gY2xpZW50LmdldF90aW1lcigpICAjIH4wLjYyNQorICAgICAgICBjbGllbnQuaGFuZGxl
X3RpbWVyKG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5k
KG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
LCBbNDRdKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIo
KSwgMS44NzUpCisKKyAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgUElORywgZGlzY2FyZHMgSU5J
VElBTCBhbmQgc2VuZHMgQUNLCisgICAgICAgIG5vdyA9IDAuNzI1CisgICAgICAgIHNlcnZlci5y
ZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0OF0pCisgICAgICAgIHNlbGYu
YXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMF0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50
X3BhY2tldHMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRf
ZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0
SXNOb25lKHNlcnZlci5uZXh0X2V2ZW50KCkpCisKKyAgICAgICAgIyBBQ0tzIGFyZSBsb3N0LCBz
ZXJ2ZXIgcmV0cmFuc21pdHMgSEFORFNIQUtFCisgICAgICAgIG5vdyA9IHNlcnZlci5nZXRfdGlt
ZXIoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3RpbWVyKG5vdz1ub3cpCisgICAgICAgIGl0ZW1z
ID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MCwgODU0XSkKKyAgICAgICAgc2VsZi5h
c3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDMuMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRf
cGFja2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5uZXh0X2V2ZW50
KCkpCisKKyAgICAgICAgIyBoYW5kc2hha2UgY29udGludWVzIG5vcm1hbGx5CisgICAgICAgIG5v
dyA9IDEuMgorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VS
VkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1z
WzFdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0
YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3Jh
bV9zaXplcyhpdGVtcyksIFszMjldKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNs
aWVudC5nZXRfdGltZXIoKSwgMi40NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNs
aWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25uZWN0
aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS4zCisgICAgICAgIHNlcnZlci5yZWNlaXZl
X2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRl
bXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjldKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS45MjUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBs
ZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkp
LCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5vdyA9IDEuNAorICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1u
b3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzJdKQorICAg
ICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgNjEuNCkgICMg
aWRsZSB0aW1lb3V0CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfbG9zc18zKHNlbGYpOgor
ICAgICAgICBkZWYgZGF0YWdyYW1fc2l6ZXMoaXRlbXMpOgorICAgICAgICAgICAgcmV0dXJuIFts
ZW4oeFswXSkgZm9yIHggaW4gaXRlbXNdCisKKyAgICAgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24g
PSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY2xpZW50X2NvbmZp
Z3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkK
KworICAgICAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPWNsaWVudF9j
b25maWd1cmF0aW9uKQorICAgICAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKworICAgICAgICBz
ZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkK
KyAgICAgICAgc2VydmVyX2NvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJU
RklMRSwgU0VSVkVSX0tFWUZJTEUpCisKKyAgICAgICAgc2VydmVyID0gUXVpY0Nvbm5lY3Rpb24o
Y29uZmlndXJhdGlvbj1zZXJ2ZXJfY29uZmlndXJhdGlvbikKKyAgICAgICAgc2VydmVyLl9hY2tf
ZGVsYXkgPSAwCisKKyAgICAgICAgIyBjbGllbnQgc2VuZHMgSU5JVElBTAorICAgICAgICBub3cg
PSAwLjAKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAg
ICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAxLjApCisKKyAgICAgICAgIyBzZXJ2
ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFLRQorICAgICAgICBu
b3cgPSAwLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENM
SUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9f
c2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0
ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRf
dGltZXIoKSwgMS4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Mu
c3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNs
aWVudCByZWNlaXZlcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9IDAuMgorICAg
ICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5v
dz1ub3cpCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzFdWzBdLCBTRVJW
RVJfQUREUiwgbm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3Nl
bmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVt
cyksIFszNzZdKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGlt
ZXIoKSwgMC44MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9l
dmVudCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2
ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgIyBzZXJ2ZXIgY29tcGxldGVzIGhh
bmRzaGFrZQorICAgICAgICBub3cgPSAwLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdy
YW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNl
cnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0
RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFja2V0cyks
IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwg
ZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25u
ZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgIyBzZXJ2ZXIgUFRPIC0gMS1SVFQgUElORworICAg
ICAgICBub3cgPSAwLjgyNQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3RpbWVyKG5vdz1ub3cpCisg
ICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjldKQorICAgICAgICBz
ZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS44NzUpCisKKyAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgUElORywgc2VuZHMgQUNLCisgICAgICAgIG5vdyA9IDAuOQor
ICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIs
IG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1u
b3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzJd
KQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC44
MjUpCisKKyAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgQUNLLCByZXRyYW5zbWl0cyBIQU5EU0hB
S0VfRE9ORQorICAgICAgICBub3cgPSAxLjAKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2
ZXIuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcpCisgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFn
cmFtKGl0ZW1zWzBdWzBdLCBDTElFTlRfQUREUiwgbm93PW5vdykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHNlcnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgaXRlbXMgPSBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZXJ2ZXIuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI0XSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rf
d2l0aF9xdWFudHVtX3JlYWRpbmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3Nl
cnZlcihjbGllbnRfb3B0aW9ucz17InF1YW50dW1fcmVhZGluZXNzX3Rlc3QiOiBUcnVlfSwpIGFz
ICgKKyAgICAgICAgICAgIGNsaWVudCwKKyAgICAgICAgICAgIHNlcnZlciwKKyAgICAgICAgKToK
KyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFt
X2lkKCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJo
ZWxsbyIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwg
c2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICByZWNlaXZlZCA9IE5vbmUKKyAgICAgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9ldmVu
dCgpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlN0cmVhbURh
dGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gZXZlbnQuZGF0YQor
ICAgICAgICAgICAgICAgIGVsaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNlaXZlZCwgYiJoZWxsbyIp
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfMHJ0dChzZWxmKToKKyAgICAgICAgY2xpZW50
X3RpY2tldCA9IE5vbmUKKyAgICAgICAgdGlja2V0X3N0b3JlID0gU2Vzc2lvblRpY2tldFN0b3Jl
KCkKKworICAgICAgICBkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICAgICAg
ICAgbm9ubG9jYWwgY2xpZW50X3RpY2tldAorICAgICAgICAgICAgY2xpZW50X3RpY2tldCA9IHRp
Y2tldAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAgICBjbGll
bnRfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHNhdmVfc2Vzc2lvbl90aWNrZXR9
LAorICAgICAgICAgICAgc2VydmVyX2t3YXJncz17InNlc3Npb25fdGlja2V0X2hhbmRsZXIiOiB0
aWNrZXRfc3RvcmUuYWRkfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgcGFzcworCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgICAg
ICBjbGllbnRfb3B0aW9ucz17InNlc3Npb25fdGlja2V0IjogY2xpZW50X3RpY2tldH0sCisgICAg
ICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfZmV0Y2hlciI6IHRpY2tldF9z
dG9yZS5wb3B9LAorICAgICAgICAgICAgaGFuZHNoYWtlPUZhbHNlLAorICAgICAgICApIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwg
bm93PXRpbWUudGltZSgpKQorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0
X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2Rh
dGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
b3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMiwgMSkpCisKKyAgICAgICAgICAgIGV2ZW50ID0g
c2VydmVyLm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2
ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKworICAgICAgICAgICAgZXZlbnQgPSBz
ZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5kYXRhLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8w
cnR0X2JhZF9tYXhfZWFybHlfZGF0YShzZWxmKToKKyAgICAgICAgY2xpZW50X3RpY2tldCA9IE5v
bmUKKyAgICAgICAgdGlja2V0X3N0b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKKworICAgICAg
ICBkZWYgcGF0Y2goc2VydmVyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUGF0Y2gg
c2VydmVyJ3MgVExTIGluaXRpYWxpemF0aW9uIHRvIHNldCBhbiBpbnZhbGlkCisgICAgICAgICAg
ICBtYXhfZWFybHlfZGF0YSB2YWx1ZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgcmVh
bF9pbml0aWFsaXplID0gc2VydmVyLl9pbml0aWFsaXplCisKKyAgICAgICAgICAgIGRlZiBwYXRj
aGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVzKToKKyAgICAgICAgICAgICAgICByZWFsX2lu
aXRpYWxpemUocGVlcl9jaWQpCisgICAgICAgICAgICAgICAgc2VydmVyLnRscy5fbWF4X2Vhcmx5
X2RhdGEgPSAxMjM0NQorCisgICAgICAgICAgICBzZXJ2ZXIuX2luaXRpYWxpemUgPSBwYXRjaGVk
X2luaXRpYWxpemUKKworICAgICAgICBkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgor
ICAgICAgICAgICAgbm9ubG9jYWwgY2xpZW50X3RpY2tldAorICAgICAgICAgICAgY2xpZW50X3Rp
Y2tldCA9IHRpY2tldAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAg
ICAgICBjbGllbnRfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHNhdmVfc2Vzc2lv
bl90aWNrZXR9LAorICAgICAgICAgICAgc2VydmVyX2t3YXJncz17InNlc3Npb25fdGlja2V0X2hh
bmRsZXIiOiB0aWNrZXRfc3RvcmUuYWRkfSwKKyAgICAgICAgICAgIHNlcnZlcl9wYXRjaD1wYXRj
aCwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBo
YW5kc2hha2UgZmFpbGVkCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV2ZW50KQorCisgICAgZGVmIHRlc3RfY2hh
bmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxl
KSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMg
dGhlIGNsaWVudCBjaGFuZ2VzIGNvbm5lY3Rpb24gSUQKKyAgICAgICAgICAgIGNsaWVudC5jaGFu
Z2VfY29ubmVjdGlvbl9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVy
KGNsaWVudCwgc2VydmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSks
IFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHRoZSBz
ZXJ2ZXIgcHJvdmlkZXMgYSBuZXcgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVudCksIDEpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVy
X2NpZF9hdmFpbGFibGUpLCBbMiwgMywgNCwgNSwgNiwgNywgOF0KKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2NoYW5nZV9jb25uZWN0aW9uX2lkX3JldHJhbnNtaXRfbmV3X2Nvbm5lY3Rp
b25faWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAg
ICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMs
IDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIGNsaWVudCBj
aGFuZ2VzIGNvbm5lY3Rpb24gSUQKKyAgICAgICAgICAgIGNsaWVudC5jaGFuZ2VfY29ubmVjdGlv
bl9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKGNsaWVudCwgc2Vy
dmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
c2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1
LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHRoZSBzZXJ2ZXIgcHJvdmlk
ZXMgYSBuZXcgY29ubmVjdGlvbiBJRCwgTkVXX0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKHNlcnZlciksIDEpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9w
ZWVyX2NpZF9hdmFpbGFibGUpLCBbMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBORVdfQ09OTkVDVElPTl9JRCBpcyByZXRyYW5zbWl0dGVkCisgICAgICAg
ICAgICBzZXJ2ZXIuX29uX25ld19jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5KAorICAgICAgICAgICAg
ICAgIFF1aWNEZWxpdmVyeVN0YXRlLkxPU1QsIHNlcnZlci5faG9zdF9jaWRzWy0xXQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNs
aWVudCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMiwgMywgNCwg
NSwgNiwgNywgOF0KKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9jb25uZWN0
aW9uX2lkX3JldHJhbnNtaXRfcmV0aXJlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVu
dC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgdGhlIGNsaWVudCBjaGFuZ2VzIGNvbm5lY3Rpb24gSUQsIFJF
VElSRV9DT05ORUNUSU9OX0lEIGlzIGxvc3QKKyAgICAgICAgICAgIGNsaWVudC5jaGFuZ2VfY29u
bmVjdGlvbl9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwg
MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVu
Y2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3
XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIFJFVElSRV9DT05ORUNUSU9OX0lEIGlz
IHJldHJhbnNtaXR0ZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fcmV0aXJlX2Nvbm5lY3Rpb25f
aWRfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgMCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAj
IHRoZSBzZXJ2ZXIgcHJvdmlkZXMgYSBuZXcgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVudCksIDEpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50
Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMiwgMywgNCwgNSwgNiwgNywgOF0KKyAgICAgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X2dldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjbGllbnQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtX2lkLCAwKQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lk
LCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1f
aWQsIDQpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIi
aGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1f
ZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGll
bnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCisgICAgICAgICAgICBj
bGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAg
ICAjIHNlcnZlcgorICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWls
YWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQs
IDEpCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVs
bG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNSkK
KyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIp
CisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3Ry
ZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbV9pZCwgMykKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRf
bmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNykKKyAgICAgICAgICAgIHNlcnZlci5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRh
Z3JhbV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAg
ICAgICAgIGNsaWVudF9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUzNn0s
CisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXplIjog
NjU1MzZ9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNo
ZWNrIGhhbmRzaGFrZSBjb21wbGV0ZWQKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfaGFuZHNoYWtl
KGNsaWVudD1jbGllbnQsIHNlcnZlcj1zZXJ2ZXIsIGFscG5fcHJvdG9jb2w9Tm9uZSkKKworICAg
ICAgICAgICAgIyBzZW5kIGRhdGFncmFtCisgICAgICAgICAgICBjbGllbnQuc2VuZF9kYXRhZ3Jh
bV9mcmFtZShiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIo
Y2xpZW50LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2
ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5E
YXRhZ3JhbUZyYW1lUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfZGF0YWdyYW1fZnJhbWVfMihzZWxmKToK
KyAgICAgICAgIyBwYXlsb2FkIHdoaWNoIGV4YWN0bHkgZmlsbHMgYW4gZW50aXJlIHBhY2tldAor
ICAgICAgICBwYXlsb2FkID0gYiJaIiAqIDEyNTAKKworICAgICAgICB3aXRoIGNsaWVudF9hbmRf
c2VydmVyKAorICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVf
c2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFt
X2ZyYW1lX3NpemUiOiA2NTUzNn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAg
ICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5j
aGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2Nv
bD1Ob25lKQorCisgICAgICAgICAgICAjIHF1ZXVlIDIwIGRhdGFncmFtcworICAgICAgICAgICAg
Zm9yIGkgaW4gcmFuZ2UoMjApOgorICAgICAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFt
X2ZyYW1lKHBheWxvYWQpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNhbiBvbmx5IDExIGRhdGFn
cmFtcyBhcmUgc2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHRyYW5zZmVyKGNsaWVudCwgc2VydmVyKSwgMTEpCisgICAgICAgICAgICBm
b3IgaSBpbiByYW5nZSgxMSk6CisgICAgICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9l
dmVudCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZl
bnRzLkRhdGFncmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50LmRhdGEsIHBheWxvYWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIEFD
SworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVudCks
IDEpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIHJlbWFpbmluZyBkYXRhZ3JhbXMKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCA5KQor
ICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOSk6CisgICAgICAgICAgICAgICAgZXZlbnQgPSBz
ZXJ2ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGV2ZW50KSwgZXZlbnRzLkRhdGFncmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRhdGEsIHBheWxvYWQpCisKKyAgICBkZWYgdGVzdF9kZWNy
eXB0aW9uX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIGVuY3J5cHRpb24ga2V5
CisgICAgICAgICAgICBzZXJ2ZXIuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdLnNlbmQuc2V0
dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPXRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4
X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgc2VjcmV0PWJ5dGVzKDQ4KSwKKyAgICAgICAg
ICAgICAgICB2ZXJzaW9uPXNlcnZlci5fdmVyc2lvbiwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBzZXJ2ZXIgc2VuZHMgY2xvc2UKKyAgICAgICAgICAgIHNlcnZlci5jbG9zZShlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IpCisgICAgICAgICAgICBmb3IgZGF0YSwgYWRk
ciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKKyAgICAgICAg
ICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93PXRp
bWUudGltZSgpKQorCisgICAgZGVmIHRlc3RfdGxzX2Vycm9yKHNlbGYpOgorICAgICAgICBkZWYg
cGF0Y2goY2xpZW50KToKKyAgICAgICAgICAgIHJlYWxfaW5pdGlhbGl6ZSA9IGNsaWVudC5faW5p
dGlhbGl6ZQorCisgICAgICAgICAgICBkZWYgcGF0Y2hlZF9pbml0aWFsaXplKHBlZXJfY2lkOiBi
eXRlcyk6CisgICAgICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplKHBlZXJfY2lkKQorICAgICAg
ICAgICAgICAgIGNsaWVudC50bHMuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJ
T05fMV8zX0RSQUZUXzI4XQorCisgICAgICAgICAgICBjbGllbnQuX2luaXRpYWxpemUgPSBwYXRj
aGVkX2luaXRpYWxpemUKKworICAgICAgICAjIGhhbmRzaGFrZSBmYWlscworICAgICAgICB3aXRo
IGNsaWVudF9hbmRfc2VydmVyKGNsaWVudF9wYXRjaD1wYXRjaCkgYXMgKGNsaWVudCwgc2VydmVy
KToKKyAgICAgICAgICAgIHRpbWVyX2F0ID0gc2VydmVyLmdldF90aW1lcigpCisgICAgICAgICAg
ICBzZXJ2ZXIuaGFuZGxlX3RpbWVyKHRpbWVyX2F0KQorCisgICAgICAgICAgICBldmVudCA9IHNl
cnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVu
dCksIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnQuZXJyb3JfY29kZSwgMzI2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXZlbnQucmVhc29uX3BocmFzZSwgIk5vIHN1cHBvcnRlZCBwcm90b2Nv
bCB2ZXJzaW9uIikKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fZ2FyYmFnZShzZWxm
KToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAg
ICAgICAgZGF0YWdyYW0gPSBiaW5hc2NpaS51bmhleGxpZnkoImMwMDAwMDAwMDA4MCIpCisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGFncmFtLCBTRVJWRVJfQUREUiwgbm93PXRp
bWUudGltZSgpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXNlcnZlZF9iaXRz
X25vbl96ZXJvKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGll
bnQoc2VsZikKKworICAgICAgICBidWlsZGVyID0gUXVpY1BhY2tldEJ1aWxkZXIoCisgICAgICAg
ICAgICBob3N0X2NpZD1jbGllbnQuX3BlZXJfY2lkLAorICAgICAgICAgICAgaXNfY2xpZW50PUZh
bHNlLAorICAgICAgICAgICAgcGVlcl9jaWQ9Y2xpZW50Lmhvc3RfY2lkLAorICAgICAgICAgICAg
dmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICkKKyAgICAgICAgY3J5cHRvID0gQ3J5
cHRvUGFpcigpCisgICAgICAgIGNyeXB0by5zZXR1cF9pbml0aWFsKGNsaWVudC5fcGVlcl9jaWQs
IGlzX2NsaWVudD1GYWxzZSwgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24pCisgICAgICAgIGNyeXB0
by5lbmNyeXB0X3BhY2tldF9yZWFsID0gY3J5cHRvLmVuY3J5cHRfcGFja2V0CisKKyAgICAgICAg
ZGVmIGVuY3J5cHRfcGFja2V0KHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251
bWJlcik6CisgICAgICAgICAgICAjIG1lc3Mgd2l0aCByZXNlcnZlZCBiaXRzCisgICAgICAgICAg
ICBwbGFpbl9oZWFkZXIgPSBieXRlcyhbcGxhaW5faGVhZGVyWzBdIHwgMHgwQ10pICsgcGxhaW5f
aGVhZGVyWzE6XQorICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5lbmNyeXB0X3BhY2tldF9yZWFs
KAorICAgICAgICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251
bWJlcgorICAgICAgICAgICAgKQorCisgICAgICAgIGNyeXB0by5lbmNyeXB0X3BhY2tldCA9IGVu
Y3J5cHRfcGFja2V0CisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVf
SU5JVElBTCwgY3J5cHRvKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNG
cmFtZVR5cGUuUEFERElORykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRl
ci5mbHVzaCgpWzBdOgorICAgICAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdy
YW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZHJvcChjbGllbnQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgY2xpZW50Ll9jbG9zZV9ldmVudCwKKyAgICAgICAgICAgIGV2ZW50cy5Db25uZWN0aW9uVGVy
bWluYXRlZCgKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJSZXNlcnZlZCBiaXRzIG11c3QgYmUgemVybyIsCisgICAg
ICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3dy
b25nX3ZlcnNpb24oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2Ns
aWVudChzZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKKyAgICAg
ICAgICAgIGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19jbGllbnQ9
RmFsc2UsCisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAg
ICB2ZXJzaW9uPTB4RkYwMDAwMTEsICAjIERSQUZUXzE2CisgICAgICAgICkKKyAgICAgICAgY3J5
cHRvID0gQ3J5cHRvUGFpcigpCisgICAgICAgIGNyeXB0by5zZXR1cF9pbml0aWFsKGNsaWVudC5f
cGVlcl9jaWQsIGlzX2NsaWVudD1GYWxzZSwgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24pCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLlBBRERJTkcpCisg
ICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSkpCisKKyAgICAgICAgZm9yIGRhdGFncmFtIGluIGJ1aWxkZXIuZmx1c2goKVswXToKKyAgICAg
ICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGFncmFtLCBTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMCkK
KworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fcmV0cnkoc2VsZik6CisgICAgICAgIGNs
aWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5y
ZWNlaXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAg
ICAgICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgc291cmNl
X2NpZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3RfY2lkLAorICAgICAgICAgICAgICAgIG9y
aWdpbmFsX2Rlc3RpbmF0aW9uX2NpZD1jbGllbnQuX3BlZXJfY2lkLAorICAgICAgICAgICAgICAg
IHJldHJ5X3Rva2VuPWJ5dGVzKDE2KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBTRVJW
RVJfQUREUiwKKyAgICAgICAgICAgIG5vdz10aW1lLnRpbWUoKSwKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIGRlZiB0ZXN0X3JlY2Vp
dmVfZGF0YWdyYW1fcmV0cnlfd3JvbmdfZGVzdGluYXRpb25fY2lkKHNlbGYpOgorICAgICAgICBj
bGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5KAorICAgICAg
ICAgICAgICAgIHZlcnNpb249Y2xpZW50Ll92ZXJzaW9uLAorICAgICAgICAgICAgICAgIHNvdXJj
ZV9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCI4NWFiYjU0N2JmMjhiZTk3IiksCisgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiYzk4MzQzZmU4ZjVmMGZm
NCIpLAorICAgICAgICAgICAgICAgIG9yaWdpbmFsX2Rlc3RpbmF0aW9uX2NpZD1jbGllbnQuX3Bl
ZXJfY2lkLAorICAgICAgICAgICAgICAgIHJldHJ5X3Rva2VuPWJ5dGVzKDE2KSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICBTRVJWRVJfQUREUiwKKyAgICAgICAgICAgIG5vdz10aW1lLnRp
bWUoKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwg
MCkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2tfZnJhbWVfZWNuKHNlbGYpOgorICAgICAgICBj
bGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICBjbGllbnQu
X2hhbmRsZV9hY2tfZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNs
aWVudCksCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFDS19FQ04sCisgICAgICAgICAgICBC
dWZmZXIoZGF0YT1iIlx4MDBceDAyXHgwMFx4MDBceDAwXHgwMFx4MDAiKSwKKyAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgc2VydmVyLmNsb3NlKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9y
Q29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWlj
RnJhbWVUeXBlLkFDSywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFD
SyBmcmFtZSIsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChzZXJ2ZXIsIGNsaWVudCksICgxLCAwKSkKKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAg
ICAgICAgIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCgKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkFDSywKKyAgICAgICAgICAgICAgICAg
ICAgcmVhc29uX3BocmFzZT0iaWxsZWdhbCBBQ0sgZnJhbWUiLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9m
cmFtZV9hcHAoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2NvZGU9UXVpY0Vy
cm9yQ29kZS5OT19FUlJPUiwgcmVhc29uX3BocmFzZT0iZ29vZGJ5ZSIpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCksICgxLCAwKSkKKworICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbGllbnQuX2Nsb3Nl
X2V2ZW50LAorICAgICAgICAgICAgICAgIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCgKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLAorICAg
ICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHJl
YXNvbl9waHJhc2U9Imdvb2RieWUiLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZV9hcHBfbm90X3V0
Zjgoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxm
KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAorICAgICAgICAgICAgQnVmZmVyKGRhdGE9Ymlu
YXNjaWkudW5oZXhsaWZ5KCIwMDA4Njc2ZjZmNjQ2Mjc5ODIwMCIpKSwKKyAgICAgICAgKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjbGllbnQuX2Nsb3NlX2V2ZW50
LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUiwgZnJhbWVfdHlwZT1Ob25lLCBy
ZWFzb25fcGhyYXNlPSIiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX2NyeXB0b19mcmFtZV9vdmVyX2xhcmdlc3Rfb2Zmc2V0KHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2xpZW50IHJlY2VpdmVzIG9mZnNldCArIGxlbmd0aCA+IDJeNjIgLSAxCisgICAgICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgor
ICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAg
ICAgICBRdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKFVJTlRfVkFSX01BWCkgKyBlbmNvZGVfdWludF92YXIoMSkpLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5D
T0RJTkdfRVJST1IKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIm9mZnNldCArIGxlbmd0aCBjYW5ub3QgZXhjZWVkIDJeNjIgLSAxIgorICAgICAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBEQVRBX0JMT0NLRUQ6IDEyMzQ1CisgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91
aW50X3ZhcigxMjM0NSkpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Rh
dGFncmFtX2ZyYW1lKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9j
bGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKKworICAgICAgICBjbGllbnQu
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU0sCisgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1iImhlbGxvIiksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50Lm5leHRfZXZlbnQoKSwgZXZlbnRzLkRhdGFn
cmFtRnJhbWVSZWNlaXZlZChkYXRhPWIiaGVsbG8iKQorICAgICAgICApCisKKyAgICBkZWYgdGVz
dF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfbm90X2FsbG93ZWQoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6
ZT1Ob25lKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25F
cnJvcikgYXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIo
ZGF0YT1iImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9O
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3Np
emU9NSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJy
b3IpIGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU0sCisgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9YiJoZWxsbyIpLAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
cmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQgREFUQUdSQU0gZnJhbWUiKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX2RhdGFncmFtX2ZyYW1lX3dpdGhfbGVuZ3RoKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3Np
emU9NykKKworICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4
MDVoZWxsb2p1bmsiKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2Vp
dmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9kYXRh
Z3JhbV9mcmFtZV93aXRoX2xlbmd0aF9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PU5vbmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVy
cm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RILAorICAgICAgICAgICAg
ICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhlbGxvanVuayIpLAorICAgICAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRp
b24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0
ZWQgREFUQUdSQU0gZnJhbWUiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFtX2ZyYW1l
X3dpdGhfbGVuZ3RoX3Rvb19sYXJnZShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0
YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTYpCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgICAg
IGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJh
bWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RILAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiXHgwNWhlbGxvanVuayIpLAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xB
VElPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwg
UXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQgREFUQUdSQU0gZnJh
bWUiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2hhbmRzaGFrZV9kb25lX25vdF9hbGxvd2VkKHNl
bGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVy
KToKKyAgICAgICAgICAgICMgc2VydmVyIHJlY2VpdmVzIEhBTkRTSEFLRV9ET05FIGZyYW1lCisg
ICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFz
IGNtOgorICAgICAgICAgICAgICAgIHNlcnZlci5faGFuZGxlX2hhbmRzaGFrZV9kb25lX2ZyYW1l
KAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KHNlcnZlciksCisg
ICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUsCisgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiIiksCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9y
Q29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkhBTkRTSEFLRV9ET05FKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24u
cmVhc29uX3BocmFzZSwKKyAgICAgICAgICAgICAgICAiQ2xpZW50cyBtdXN0IG5vdCBzZW5kIEhB
TkRTSEFLRV9ET05FIGZyYW1lcyIsCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfbWF4X2RhdGFfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuX3JlbW90ZV9tYXhfZGF0YSwgMTA0ODU3NikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgTUFYX0RBVEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVf
bWF4X2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEwNDg1NzcpKSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X2Rh
dGEsIDEwNDg1NzcpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2Vy
dmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rpb25hbCBzdHJlYW0g
MAorICAgICAgICAgICAgc3RyZWFtID0gY2xpZW50Ll9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZD0w
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3Jl
bW90ZSwgMTA0ODU3NikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVB
TV9EQVRBIHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJl
YW1fZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNs
aWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNX0RBVEEsCisg
ICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiArIGVuY29kZV91aW50X3ZhcigxMDQ4
NTc3KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLCAxMDQ4NTc3KQorCisgICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBNQVhfU1RSRUFNX0RBVEEgbG93ZXJpbmcgbGltaXQKKyAgICAgICAgICAgIGNs
aWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5NQVhfU1RSRUFNX0RBVEEsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiAr
IGVuY29kZV91aW50X3ZhcigxMDQ4NTc1KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLCAxMDQ4NTc3KQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX21heF9zdHJlYW1fZGF0YV9mcmFtZV9yZWNlaXZlX29ubHko
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJlY3Rpb25hbCBzdHJlYW0g
MworICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkPTMsIGRhdGE9
YiJoZWxsbyIpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1fREFU
QTogMywgMQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlv
bkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFt
X2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQo
Y2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNX0RB
VEEsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwM1x4MDEiKSwKKyAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5l
cnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUu
TUFYX1NUUkVBTV9EQVRBKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRp
b24ucmVhc29uX3BocmFzZSwgIlN0cmVhbSBpcyByZWNlaXZlLW9ubHkiKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjgpCisKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgcmFpc2luZyBsaW1pdAor
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19CSURJLAorICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSwgMTI5KQor
CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNU19CSURJIGxvd2VyaW5n
IGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1l
KAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAg
ICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAg
ICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRp
LCAxMjkpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lKHNlbGYp
OgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X3N0cmVhbXNf
dW5pLCAxMjgpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX1VO
SSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc191
bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfVU5JLAorICAgICAg
ICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwKKyAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X3N0cmVh
bXNfdW5pLCAxMjkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1T
X1VOSSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFt
c191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfVU5JLAorICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjcpKSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9yZW1vdGVfbWF4X3N0
cmVhbXNfdW5pLCAxMjkpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lKHNl
bGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVy
KToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE5FV19UT0tFTgorICAgICAgICAgICAg
Y2xpZW50Ll9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk5F
V19UT0tFTiwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnko
IjA4MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hh
bmRsZV9uZXdfdG9rZW5fZnJhbWVfZnJvbV9jbGllbnQoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2
ZXIgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlcnZlci5faGFu
ZGxlX25ld190b2tlbl9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk5FV19U
T0tFTiwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5
KCIwODAxMDIwMzA0MDUwNjA3MDgiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2Vw
dGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLk5FV19UT0tFTikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLnJlYXNvbl9waHJh
c2UsICJDbGllbnRzIG11c3Qgbm90IHNlbmQgTkVXX1RPS0VOIGZyYW1lcyIKKyAgICAgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNsaWVudCBjaGFuZ2VzIGFkZHJlc3MgYW5kIHNlbmRzIHNvbWUgZGF0YQorICAg
ICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoMCwgYiIwMTIzNDU2NyIpCisgICAgICAg
ICAgICBmb3IgZGF0YSwgYWRkciBpbiBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUu
dGltZSgpKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCAo
IjEuMi4zLjQiLCAyMzQ1KSwgbm93PXRpbWUudGltZSgpKQorCisgICAgICAgICAgICAjIGNoZWNr
IHBhdGhzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX25ldHdvcmtf
cGF0aHMpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuX25ldHdvcmtf
cGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHNlcnZlci5fbmV0d29ya19wYXRoc1swXS5pc192YWxpZGF0ZWQpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5hZGRyLCAoIjEuMi4z
LjQiLCAxMjM0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX25ldHdvcmtf
cGF0aHNbMV0uaXNfdmFsaWRhdGVkKQorCisgICAgICAgICAgICAjIHNlcnZlciBzZW5kcyBQQVRI
X0NIQUxMRU5HRSBhbmQgcmVjZWl2ZXMgUEFUSF9SRVNQT05TRQorICAgICAgICAgICAgZm9yIGRh
dGEsIGFkZHIgaW4gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6Cisg
ICAgICAgICAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YSwgU0VSVkVSX0FERFIs
IG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAgICAgIHNlcnZl
ci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4yLjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1l
KCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgcGF0aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIsICgiMS4yLjMuNCIsIDIzNDUpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRoc1swXS5pc192
YWxpZGF0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19w
YXRoc1sxXS5hZGRyLCAoIjEuMi4zLjQiLCAxMjM0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMV0uaXNfdmFsaWRhdGVkKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX3BhdGhfcmVzcG9uc2VfZnJhbWVfYmFkKHNlbGYpOgorICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2Vy
dmVyIHJlY2VpdmVzIHVuc29sbGljaXRlZCBQQVRIX1JFU1BPTlNFCisgICAgICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAg
ICAgICAgIHNlcnZlci5faGFuZGxlX3BhdGhfcmVzcG9uc2VfZnJhbWUoCisgICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JFU1BPTlNFLAorICAgICAgICAgICAgICAgICAgICBCdWZm
ZXIoZGF0YT1iIlx4MTFceDIyXHgzM1x4NDRceDU1XHg2Nlx4NzdceDg4IiksCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlBBVEhf
UkVTUE9OU0UpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcGFkZGluZ19mcmFtZShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAg
IyBubyBtb3JlIHBhZGRpbmcKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiIiKQorICAgICAg
ICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgICAgICAjIHBh
ZGRpbmcgdW50aWwgZW5kCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWJ5dGVzKDEwKSkKKyAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlwZS5QQURESU5HLCBidWYKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEwKQorCisgICAgICAg
ICMgcGFkZGluZyB0aGVuIHNvbWV0aGluZyBlbHNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWJ5dGVzKDEwKSArIGIiXHgwMSIpCisgICAgICAgIGNsaWVudC5faGFuZGxlX3BhZGRpbmdfZnJh
bWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksIFF1aWNGcmFt
ZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYudGVsbCgpLCAxMCkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXNldF9zdHJlYW1fZnJhbWUo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAw
CisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1i
ImhlbGxvIikKKyAgICAgICAgICAgIGNvbnN1bWVfZXZlbnRzKGNsaWVudCkKKworICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICBjbGllbnQuX2hh
bmRsZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVTRVRfU1RS
RUFNLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDAw
MTAwIikpLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0
X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50
cy5TdHJlYW1SZXNldCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXZlbnQuc3RyZWFtX2lkLCAwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0
X3N0cmVhbV9mcmFtZV9zZW5kX29ubHkoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRl
cyB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFt
X2RhdGEoc3RyZWFtX2lkPTIsIGRhdGE9YiJoZWxsbyIpCisKKyAgICAgICAgICAgICMgY2xpZW50
IHJlY2VpdmVzIFJFU0VUX1NUUkVBTQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hh
bmRsZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNl
aXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5S
RVNFVF9TVFJFQU0sCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVu
aGV4bGlmeSgiMDIxMTAwIikpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFN
X1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHNlbmQt
b25seSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDdd
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFJFVElSRV9D
T05ORUNUSU9OX0lECisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9yZXRpcmVfY29ubmVjdGlv
bl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwK
KyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDIiKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVt
YmVycyhjbGllbnQuX2hvc3RfY2lkcyksIFswLCAxLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1l
X2N1cnJlbnRfY2lkKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX2hvc3RfY2lkcyksIFswLCAxLCAyLCAz
LCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNl
aXZlcyBSRVRJUkVfQ09OTkVDVElPTl9JRCBmb3IgdGhlIGN1cnJlbnQgQ0lECisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAg
ICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMCIpLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1l
VHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFz
ZSwgIkNhbm5vdCByZXRpcmUgY3VycmVudCBjb25uZWN0aW9uIElEIgorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAg
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lKHNlbGYp
OgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToK
KyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rpb25hbCBzdHJlYW0gMAorICAg
ICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkPTAsIGRhdGE9YiJoZWxs
byIpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUT1BfU0VORElORworICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAg
IGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJh
bWVUeXBlLlNUT1BfU0VORElORywKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDBc
eDExIiksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RvcF9zZW5kaW5n
X2ZyYW1lX3JlY2VpdmVfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbSAzCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQ9MywgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgU1RPUF9TRU5ESU5HCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUT1Bf
U0VORElORywKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgxMSIpLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1l
VHlwZS5TVE9QX1NFTkRJTkcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2Vw
dGlvbi5yZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKKyAgICAg
ICAgICAgIGZyYW1lX3R5cGUgPSBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFIHwgNgorICAgICAg
ICAgICAgc3RyZWFtX2lkID0gMQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRs
ZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWlu
dF92YXIoc3RyZWFtX2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92
YXIoVUlOVF9WQVJfTUFYKQorICAgICAgICAgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92
YXIoMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJv
cl9jb2RlLCBRdWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICAp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBm
cmFtZV90eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAg
ICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIm9mZnNldCArIGxlbmd0aCBjYW5ub3QgZXhj
ZWVkIDJeNjIgLSAxIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVh
bV9mcmFtZV9vdmVyX21heF9kYXRhKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2Vy
dmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgYXJ0aWZpY2lhbGx5IHJh
aXNlIHJlY2VpdmVkIGRhdGEgY291bnRlcgorICAgICAgICAgICAgY2xpZW50Ll9sb2NhbF9tYXhf
ZGF0YV91c2VkID0gY2xpZW50Ll9sb2NhbF9tYXhfZGF0YQorCisgICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBRdWljRnJh
bWVUeXBlLlNUUkVBTV9CQVNFIHwgNAorICAgICAgICAgICAgc3RyZWFtX2lkID0gMQorICAgICAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToK
KyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2Rl
X3VpbnRfdmFyKHN0cmVhbV9pZCkgKyBlbmNvZGVfdWludF92YXIoMSkpLAorICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2Nv
ZGUsIFF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgZnJhbWVfdHlwZSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJPdmVyIGNv
bm5lY3Rpb24gZGF0YSBsaW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1l
X292ZXJfbWF4X3N0cmVhbV9kYXRhKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2Vy
dmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RS
RUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAg
ICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFt
ZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAg
ICAgICArIGVuY29kZV91aW50X3ZhcihjbGllbnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRp
X3JlbW90ZSArIDEpCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVp
Y0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgc3RyZWFtIGRh
dGEgbGltaXQiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9mcmFtZV9vdmVyX21heF9z
dHJlYW1zKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBh
cyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIo
Y2xpZW50Ll9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfdW5pICogNCArIDMpCisgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fTElNSVRfRVJS
T1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBl
LCBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlRvbyBtYW55IHN0cmVhbXMgb3BlbiIpCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICAgICAjIGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAgICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0
YT1iIlx4MDIiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9F
UlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5
cGUsIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHNlbmQtb25seSIpCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX3dyb25nX2luaXRpYXRvcihzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1
aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiXHgwMCIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VS
Uk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlw
ZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJXcm9uZyBzdHJlYW0gaW5pdGlhdG9yIikK
KworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgor
ICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAg
ICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rpb25hbCBzdHJlYW0gMAorICAgICAg
ICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkPTAsIGRhdGE9YiJoZWxsbyIp
CisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTV9EQVRBX0JMT0NLRUQKKyAg
ICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1iIlx4MDBceDAxIiksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZV9zZW5kX29ubHkoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBjbGllbnQgY3JlYXRlcyB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gMgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkPTIsIGRhdGE9YiJoZWxsbyIpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTV9EQVRBX0JMT0NLRUQKKyAgICAgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Cisg
ICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgK
KyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAg
ICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9EQVRBX0JMT0NLRUQsCisgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMlx4MDEiKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RB
VEFfQkxPQ0tFRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJl
YXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1zX2Jsb2NrZWRfdW5pX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9h
bmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIFNUUkVBTVNfQkxPQ0tFRF9VTkk6IDAKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JM
T0NLRURfVU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMCIpLAorICAgICAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfcGF5bG9hZF9yZWNlaXZlZF9wYWRkaW5nX29ubHkoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgcGFkZGluZyBvbmx5CisgICAgICAgICAg
ICBpc19hY2tfZWxpY2l0aW5nLCBpc19wcm9iaW5nID0gY2xpZW50Ll9wYXlsb2FkX3JlY2VpdmVk
KAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgYiJceDAw
IiAqIDEyMDAKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNf
YWNrX2VsaWNpdGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19wcm9iaW5nKQor
CisgICAgZGVmIHRlc3RfcGF5bG9hZF9yZWNlaXZlZF91bmtub3duX2ZyYW1lKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIHVua25vd24gZnJhbWUKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAg
ICAgICAgY2xpZW50Ll9wYXlsb2FkX3JlY2VpdmVkKGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xp
ZW50KSwgYiJceDFmIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgMHgxRikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJVbmtu
b3duIGZyYW1lIHR5cGUiKQorCisgICAgZGVmIHRlc3RfcGF5bG9hZF9yZWNlaXZlZF91bmV4cGVj
dGVkX2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNs
aWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIENSWVBUTyBmcmFt
ZSBpbiAwLVJUVAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVj
dGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX3BheWxvYWRfcmVjZWl2
ZWQoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50LCBl
cG9jaD10bHMuRXBvY2guWkVST19SVFQpLCBiIlx4MDYiCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJVbmV4cGVj
dGVkIGZyYW1lIHR5cGUiKQorCisgICAgZGVmIHRlc3RfcGF5bG9hZF9yZWNlaXZlZF9tYWxmb3Jt
ZWRfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgbWFsZm9ybWVkIFRS
QU5TUE9SVF9DTE9TRSBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuX3BheWxv
YWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQo
Y2xpZW50KSwgYiJceDFjXHgwMFx4MDEiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUgorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgMHgxQykK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2Us
ICJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tYXhfZGF0YV9i
bG9ja2VkX2J5X2NjKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMg
KGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sgY29uZ2VzdGlvbiBjb250cm9s
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9zcy5ieXRlc19pbl9mbGln
aHQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9zcy5jb25nZXN0
aW9uX3dpbmRvdywgMTQzMDMpCisKKyAgICAgICAgICAgICMgYXJ0aWZpY2lhbGx5IHJhaXNlIHJl
Y2VpdmVkIGRhdGEgY291bnRlcgorICAgICAgICAgICAgY2xpZW50Ll9sb2NhbF9tYXhfZGF0YV91
c2VkID0gY2xpZW50Ll9sb2NhbF9tYXhfZGF0YQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuX3JlbW90ZV9tYXhfZGF0YSwgMTA0ODU3NikKKworICAgICAgICAgICAgIyBhcnRp
ZmljaWFsbHkgcmFpc2UgYnl0ZXMgaW4gZmxpZ2h0CisgICAgICAgICAgICBjbGllbnQuX2xvc3Mu
X2NjLmJ5dGVzX2luX2ZsaWdodCA9IDE0MzAzCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMg
bm90IHNlbnQgZHVlIHRvIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX3Jl
dHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2ZWQg
ZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQgPSBj
bGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZl
ci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIE1BWF9EQVRBIGlz
IHNlbnQgYW5kIGxvc3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2xvY2FsX21heF9kYXRh
X3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fcmVt
b3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIE1BWF9EQVRBIGlzIHJldHJh
bnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBjbGllbnQuX29uX21heF9kYXRhX2RlbGl2
ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkxPU1QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2VudCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuX3JlbW90ZV9tYXhfZGF0YSwgMjA5NzE1MikKKworICAgIGRl
ZiB0ZXN0X3NlbmRfbWF4X3N0cmVhbV9kYXRhX3JldHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
IyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAgICAgICBzdHJl
YW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCisgICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwgMTA0ODU3NikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4
NTc2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIGRhdGEsIGp1c3QgYmVm
b3JlIHJhaXNpbmcgTUFYX1NUUkVBTV9EQVRBCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJl
YW1fZGF0YSgwLCBiIloiICogNTI0Mjg4KSAgIyAxMDQ4NTc2IC8vIDIKKyAgICAgICAgICAgIGZv
ciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgICAgICByb3VuZHRyaXAoc2VydmVyLCBjbGll
bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFf
bG9jYWwsIDEwNDg1NzYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhf
c3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMTA0ODU3NikKKworICAgICAgICAgICAgIyBzZXJ2ZXIg
c2VuZHMgb25lIG1vcmUgYnl0ZQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEo
MCwgYiJaIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoc2VydmVyLCBj
bGllbnQpLCAxKQorCisgICAgICAgICAgICAjIE1BWF9TVFJFQU1fREFUQSBpcyBzZW50IGFuZCBs
b3N0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwgMjA5
NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0
YV9sb2NhbF9zZW50LCAyMDk3MTUyKQorICAgICAgICAgICAgY2xpZW50Ll9vbl9tYXhfc3RyZWFt
X2RhdGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc3RyZWFtKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsX3NlbnQsIDApCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21pdHRlZCBh
bmQgYWNrZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwg
c2VydmVyKSwgKDEsIDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDIwOTcxNTIpCisKKyAgICBkZWYg
dGVzdF9zZW5kX3Bpbmcoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBh
cyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQor
CisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBwaW5nLCBzZXJ2ZXIgQUNLcyBpdAorICAgICAg
ICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAg
IyBjaGVjayBldmVudAorICAgICAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuUGluZ0Fja25v
d2xlZGdlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQudWlkLCAxMjM0NSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfcGluZ19yZXRyYW5zbWl0KHNlbGYpOgorICAgICAgICB3aXRo
IGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgIGNv
bnN1bWVfZXZlbnRzKGNsaWVudCkKKworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgYW5vdGhl
ciBwaW5nLCBQSU5HIGlzIGxvc3QKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3BpbmcodWlkPTEy
MzQ1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEpCisKKyAg
ICAgICAgICAgICMgUElORyBpcyByZXRyYW5zbWl0dGVkIGFuZCBhY2tlZAorICAgICAgICAgICAg
Y2xpZW50Ll9vbl9waW5nX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkxPU1QsICgxMjM0NSwp
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIp
LCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2hlY2sgZXZlbnQKKyAgICAgICAgICAgIGV2ZW50
ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGV2ZW50KSwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50LnVpZCwgMTIzNDUpCisKKyAgICBkZWYgdGVzdF9zZW5kX3N0cmVhbV9kYXRh
X292ZXJfbWF4X3N0cmVhbXNfYmlkaShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3Nl
cnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNyZWF0ZSBzdHJlYW1z
CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgpOgorICAgICAgICAgICAgICAgIHN0cmVh
bV9pZCA9IGkgKiA0CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIiIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0
cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfYmlkaSksIDApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF91bmkpLCAwKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMCwgMCkp
CisKKyAgICAgICAgICAgICMgY3JlYXRlIG9uZSB0b28gbWFueSAtPiBTVFJFQU1TX0JMT0NLRUQK
KyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEyOCAqIDQKKyAgICAgICAgICAgIGNsaWVudC5zZW5k
X3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNsaWVudC5fc3RyZWFtc1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSks
IDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZl
ciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBwZWVyIHJhaXNlcyBtYXggc3RyZWFtcworICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19CSURJLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zlcl9tYXhfc3RyZWFtc191bmkoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjcmVhdGUgc3RyZWFtcworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTI4KToKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQgPSBpICogNCArIDIKKyAgICAgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiIikKKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtc1tzdHJlYW1faWRdLmlzX2Jsb2Nr
ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnQuX3N0cmVhbXNfYmxv
Y2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5f
c3RyZWFtc19ibG9ja2VkX3VuaSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKKworICAgICAgICAgICAgIyBjcmVhdGUg
b25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAorICAgICAgICAgICAgc3RyZWFtX2lkID0g
MTI4ICogNCArIDIKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9p
ZCwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtc1tzdHJl
YW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGll
bnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDEpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAg
ICAgICAgIyBwZWVyIHJhaXNlcyBtYXggc3RyZWFtcworICAgICAgICAgICAgY2xpZW50Ll9oYW5k
bGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZl
X2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJF
QU1TX1VOSSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI5
KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5f
c3RyZWFtc1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisKKyAgICBkZWYgdGVzdF9zZW5kX3N0cmVh
bV9kYXRhX3BlZXJfaW5pdGlhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2Vy
dmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMg
YmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRh
KDEsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2Vy
dmVyLCBjbGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5p
ZGlyZWN0aW9uYWwgc3RyZWFtCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgz
LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZl
ciwgY2xpZW50KSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGly
ZWN0aW9uYWwgc3RyZWFtCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBi
ImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwg
c2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBkYXRhIG9uIHNl
cnZlci1pbml0aWF0ZWQgYmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKDEsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xp
ZW50IGNyZWF0ZSB1bmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5k
X3N0cmVhbV9kYXRhKDIsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
b3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50
IHRyaWVzIHRvIHNlbmQgZGF0YSBvbiBzZXJ2ZXItaW5pdGlhbCB1bmlkaXJlY3Rpb25hbCBzdHJl
YW0KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoMywgYiJoZWxsbyIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0cihjbS5leGNl
cHRpb24pLAorICAgICAgICAgICAgICAgICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHBlZXItaW5pdGlh
dGVkIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSIsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgY2xpZW50IHRyaWVzIHRvIHNlbmQgZGF0YSBvbiB1bmtub3duIHNlcnZlci1pbml0aWF0ZWQg
YmlkaXJlY3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2Rh
dGEoNSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgICAgIHN0cihjbS5leGNlcHRpb24pLCAiQ2Fubm90IHNlbmQgZGF0YSBvbiB1bmtub3duIHBl
ZXItaW5pdGlhdGVkIHN0cmVhbSIKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3N0cmVh
bV9kaXJlY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
Y2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgZm9yIG9mZiBpbiBbMCwgNCwgOF06CisgICAg
ICAgICAgICAgICAgIyBDbGllbnQtSW5pdGlhdGVkLCBCaWRpcmVjdGlvbmFsCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZikpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9zZW5kKG9m
ZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9y
ZWNlaXZlKG9mZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fc3Ry
ZWFtX2Nhbl9zZW5kKG9mZikpCisKKyAgICAgICAgICAgICAgICAjIFNlcnZlci1Jbml0aWF0ZWQs
IEJpZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9z
dHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9zZW5kKG9mZiArIDEpKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3NlbmQob2ZmICsg
MSkpCisKKyAgICAgICAgICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIFVuaWRpcmVjdGlvbmFs
CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fcmVj
ZWl2ZShvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9z
dHJlYW1fY2FuX3NlbmQob2ZmICsgMikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VydmVyLl9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMikpCisKKyAgICAg
ICAgICAgICAgICAjIFNlcnZlci1Jbml0aWF0ZWQsIFVuaWRpcmVjdGlvbmFsCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDMp
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1fY2FuX3Nl
bmQob2ZmICsgMykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuX3N0
cmVhbV9jYW5fcmVjZWl2ZShvZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VydmVyLl9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMykpCisKKyAgICBkZWYgdGVzdF92ZXJz
aW9uX25lZ290aWF0aW9uX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFu
ZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgICMgbm8gY29tbW9uIHZlcnNpb24sIG5vIHJl
dHJ5CisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2Rl
X3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lkPWNs
aWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWNsaWVudC5o
b3N0X2NpZCwKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9WzB4RkYwMDAwMTFd
LCAgIyBEUkFGVF8xNgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAor
ICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRf
ZXZlbnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuQ29u
bmVjdGlvblRlcm1pbmF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5mcmFtZV90eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgZXZlbnQucmVhc29uX3BocmFzZSwgIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9u
IHByb3RvY29sIHZlcnNpb24iCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fbmVn
b3RpYXRpb25fb2soc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2Ns
aWVudChzZWxmKQorCisgICAgICAgICMgZm91bmQgYSBjb21tb24gdmVyc2lvbiwgcmV0cnkKKyAg
ICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY192
ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50Ll9w
ZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3RfY2lk
LAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bY2xpZW50Ll92ZXJzaW9uXSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICBTRVJWRVJfQUREUiwKKyAgICAgICAgICAgIG5v
dz10aW1lLnRpbWUoKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3Ao
Y2xpZW50KSwgMSkKKworCitjbGFzcyBRdWljTmV0d29ya1BhdGhUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9jYW5fc2VuZChzZWxmKToKKyAgICAgICAgcGF0aCA9IFF1aWNOZXR3b3JrUGF0
aCgoIjEuMi4zLjQiLCAxMjM0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmlzX3Zh
bGlkYXRlZCkKKworICAgICAgICAjIGluaXRpYWxseSwgY2Fubm90IHNlbmQgYW55IGRhdGEKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocGF0aC5jYW5fc2VuZCgxKSkKKworICAgICAgICAjIHJlY2VpdmUgc29tZSBkYXRh
CisgICAgICAgIHBhdGguYnl0ZXNfcmVjZWl2ZWQgKz0gMQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3Nl
bmQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDIpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwYXRoLmNhbl9zZW5kKDQpKQorCisgICAgICAgICMgc2VuZCBzb21lIGRhdGEKKyAgICAg
ICAgcGF0aC5ieXRlc19zZW50ICs9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2Fu
X3NlbmQoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGF0aC5jYW5fc2VuZCgxKSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2NyeXB0by5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2NyeXB0by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjRlNGRjZjVlMThlNDcwMjQ1MGQx
YmViZjQ5ZGZmYzIxM2U2MmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfY3J5cHRvLnB5CkBAIC0wLDAgKzEsMzE5IEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20g
dW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwSWYKKworZnJvbSBhaW9xdWljLmJ1ZmZlciBp
bXBvcnQgQnVmZmVyCitmcm9tIGFpb3F1aWMucXVpYy5jcnlwdG8gaW1wb3J0ICgKKyAgICBJTklU
SUFMX0NJUEhFUl9TVUlURSwKKyAgICBDcnlwdG9FcnJvciwKKyAgICBDcnlwdG9QYWlyLAorICAg
IGRlcml2ZV9rZXlfaXZfaHAsCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0IFBB
Q0tFVF9GSVhFRF9CSVQsIFF1aWNQcm90b2NvbFZlcnNpb24KK2Zyb20gYWlvcXVpYy50bHMgaW1w
b3J0IENpcGhlclN1aXRlCisKK2Zyb20gLnV0aWxzIGltcG9ydCBTS0lQX1RFU1RTCisKK1BST1RP
Q09MX1ZFUlNJT04gPSBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisKK0NIQUNIQTIwX0NM
SUVOVF9QQUNLRVRfTlVNQkVSID0gMgorQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZTFmZjAwMDAxNjA4ODBiNTdjN2I3MGQ4NTI0YjA4NTBm
YzJhMjhlMjQwZmQ3NjQwMTcwMDAyIgorKQorQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX1BBWUxPQUQg
PSBiaW5hc2NpaS51bmhleGxpZnkoIjAyMDEwMDAwMDAiKQorQ0hBQ0hBMjBfQ0xJRU5UX0VOQ1JZ
UFRFRF9QQUNLRVQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgImU4ZmYwMDAwMTYwODgwYjU3
YzdiNzBkODUyNGIwODUwZmMyYTI4ZTI0MGZkNzY0MDE3ODMxM2IwNGJlOTg0NDkiCisgICAgImVi
MTA1NjdlMjVjZTkzMDM4MWYyYTViN2RhMmRiOGRiIgorKQorCitMT05HX0NMSUVOVF9QQUNLRVRf
TlVNQkVSID0gMgorTE9OR19DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICJjM2ZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUwMDAwMDAwMiIKKykK
K0xPTkdfQ0xJRU5UX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjA2
MDA0MGM0MDEwMDAwYzAwMzAzNjY2MDI2MWZmOTQ3Y2VhNDljY2U2Y2ZhZDY4N2Y0NTdjZjFiMTQ1
MzFiYTEiCisgICAgIjQxMzFhMGU4ZjMwOWExZDBiOWM0MDAwMDA2MTMwMTEzMDMxMzAyMDEwMDAw
OTEwMDAwMDAwYjAwMDkwMDAwMDYiCisgICAgIjczNjU3Mjc2NjU3MmZmMDEwMDAxMDAwMDBhMDAx
NDAwMTIwMDFkMDAxNzAwMTgwMDE5MDEwMDAxMDEwMTAyMDEiCisgICAgIjAzMDEwNDAwMjMwMDAw
MDAzMzAwMjYwMDI0MDAxZDAwMjA0Y2ZkZmNkMTc4Yjc4NGJmMzI4Y2FlNzkzYjEzNmYiCisgICAg
IjJhZWRjZTAwNWZmMTgzZDdiYjE0OTUyMDcyMzY2NDcwMzcwMDJiMDAwMzAyMDMwNDAwMGQwMDIw
MDAxZTA0MDMiCisgICAgIjA1MDMwNjAzMDIwMzA4MDQwODA1MDgwNjA0MDEwNTAxMDYwMTAyMDEw
NDAyMDUwMjA2MDIwMjAyMDAyZDAwMDIiCisgICAgIjAxMDEwMDFjMDAwMjQwMDEiCispICsgYnl0
ZXMoOTYyKQorTE9OR19DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAiYzBmZjAwMDAxNzA4ODM5NGM4ZjAzZTUxNTcwODAwMDA0NDllM2IzNDNhYTg1MzUw
NjRhNDI2OGEwZDlkN2IxYyIKKyAgICAiOWQyNTBhZTM1NTE2MjI3NmU5YjFlMzAxMWVmNmJiYzBh
YjQ4YWQ1YmNjMjY4MWU5NTM4NTdjYTYyYmVjZDc1MiIKKyAgICAiNGRhYWM0NzNlNjhkNzQwNWZi
YmE0ZTllZTYxNmM4NzAzOGJkYmU5MDhjMDZkOTYwNWQ5YWM0OTAzMDM1OWVlYyIKKyAgICAiYjFk
MDVhMTRlMTE3ZGI4Y2VkZTJiYjA5ZDBkYmJmZWUyNzFjYjM3NGQ4ZjEwYWJlYzgyZDBmNTlhMWRl
ZTI5ZiIKKyAgICAiZTk1NjM4ZWQ4ZGQ0MWRhMDc0ODc0Njg3OTFiNzE5YzU1YzQ2OTY4ZWIzYjU0
NjgwMDM3MTAyYTI4ZTUzZGMxZCIKKyAgICAiMTI5MDNkYjBhZjU4MjE3OTRiNDFjNGE5MzM1N2Zh
NTljZTY5Y2ZlN2Y2YmRmYTYyOWVlZjc4NjE2NDQ3ZTFkNiIKKyAgICAiMTFjNGJhZjcxYmYzM2Zl
YmNiMDMxMzdjMmM3NWQyNTMxN2QzZTEzYjY4NDM3MGY2Njg0MTFjMGYwMDMwNGI1MCIKKyAgICAi
MWM4ZmQ0MjJiZDliOWFkODFkNjQzYjIwZGE4OWNhMDUyNWQyNGQyYjE0MjA0MWNhZTBhZjIwNTA5
MmU0MzAwOCIKKyAgICAiMGNkODU1OWVhNGM1YzZlNGZhM2Y2NjA4MmI3ZDMwM2U1MmNlMDE2MmJh
YTk1ODUzMmIwYmJjMmJjNzg1NjgxZiIKKyAgICAiY2YzNzQ4NWRmZjY1OTVlMDFlNzM5YzhhYzll
ZmJhMzFiOTg1ZDVmNjU2Y2MwOTI0MzJkNzgxZGI5NTIyMTcyNCIKKyAgICAiODc2NDFjNGQzYWI4
ZWNlMDFlMzliYzg1YjE1NDM2NjE0Nzc1YTk4YmE4ZmExMmQ0NmY5YjM1ZTJhNTVlYjcyZCIKKyAg
ICAiN2Y4NTE4MWEzNjY2NjMzODdkZGMyMDU1MTgwN2UwMDc2NzNiZDdlMjZiZjliMjliNWFiMTBh
MWNhODdjYmI3YSIKKyAgICAiZDk3ZTk5ZWI2Njk1OWMyYTliYzNjYmRlNDcwN2ZmNzcyMGIxMTBm
YTk1MzU0Njc0ZTM5NTgxMmU0N2EwYWU1MyIKKyAgICAiYjQ2NGRjYjJkMWYzNDVkZjM2MGRjMjI3
MjcwYzc1MDY3NmY2NzI0ZWI0NzlmMGQyZmJiNjEyNDQyOTk5MDQ1NyIKKyAgICAiYWM2YzkxNjdm
NDBhYWI3Mzk5OThmMzhiOWVjY2IyNGZkNDdjODQxMDEzMWJmNjVhNTJhZjg0MTI3NWQ1YjNkMSIK
KyAgICAiODgwYjE5N2RmMmI1ZGVhM2U2ZGU1NmViY2UzZmZiNmU5Mjc3YTgyMDgyZjhkOTY3N2E2
NzY3MDg5YjY3MWViZCIKKyAgICAiMjQ0YzIxNGYwYmRlOTVjMmJlYjAyY2QxMTcyZDU4YmRmMzlk
Y2U1NmZmNjhlYjM1YWIzOWI0OWI0ZWFjN2M4MSIKKyAgICAiNWVhNjA0NTFkNmU2YWI4MjExOTEx
OGRmMDJhNTg2ODQ0YTlmZmUxNjJiYTAwNmQwNjY5ZWY1NzY2OGNhYjM4YiIKKyAgICAiNjJmNzFh
MjUyM2EwODQ4NTJjZDFkMDc5YjM2NThkYzJmM2U4Nzk0OWI1NTBiYWIzZTE3N2NmYzQ5ZWQxOTBk
ZiIKKyAgICAiZjA2MzBlNDMwNzdjMzBkZThmNmFlMDgxNTM3ZjFlODNkYTUzN2RhOTgwYWZhNjY4
ZTdiN2ZiMjUzMDFjZjc0MSIKKyAgICAiNTI0YmUzYzQ5ODg0YjQyODIxZjE3NTUyZmJkMTkzMWE4
MTMwMTdiNmI2NTkwYTQxZWExOGI2YmE0OWNkNDhhNCIKKyAgICAiNDBiZDlhMzM0NmE3NjIzZmI0
YmEzNGEzZWU1NzFlM2M3MzFmMzVhN2EzY2YyNWI1NTFhNjgwZmE2ODc2MzUwNyIKKyAgICAiYjdm
ZGUzYWFmMDIzYzUwYjlkMjJkYTY4NzZiYTMzN2ViNWU5ZGQ5ZWMzZGFmOTcwMjQyYjZjNWFhYjNh
YTRiMiIKKyAgICAiOTZhZDhiOWY2ODMyZjY4NmVmNzBmYTkzOGIzMWI0ZTVkZGQ3MzY0NDQyZDNl
YTcyZTczZDY2OGZiMDkzNzc5NiIKKyAgICAiZjQ2MjkyM2E4MWE0N2UxY2VlNzQyNmZmNmQ5MjIx
MjY5YjVhNjJlYzAzZDZlYzk0ZDEyNjA2Y2I0ODU1NjBiYSIKKyAgICAiYjU3NDgxNjAwOWU5NjUw
NDI0OTM4NWJiNjFhODE5YmUwNGY2MmMyMDY2MjE0ZDgzNjBhMjAyMmJlYjMxNjI0MCIKKyAgICAi
YjZjN2Q3OGJiZTU2YzEzMDgyZTBjYTI3MjY2MTIxMGFiZjAyMGJmM2I1NzgzZjE0MjY0MzZjZjlm
ZjQxODQwNSIKKyAgICAiOTNhNWQwNjM4ZDMyZmM1MWM1YzY1ZmYyOTFhM2E3YTUyZmQ2Nzc1ZTYy
M2E0NDM5Y2MwOGRkMjU1ODJmZWJjOSIKKyAgICAiNDRlZjkyZDhkYmQzMjljOTFkZTNlOWM5NTgy
ZTQxZjE3ZjNkMTg2ZjEwNGFkM2Y5MDk5NTExNmM2ODJhMmExNCIKKyAgICAiYTNiNGIxZjU0N2Mz
MzVmMGJlNzEwZmM5ZmMwM2UwZTU4N2I4Y2RhMzFjZTY1Yjk2OTg3OGE0YWQ0MjgzZTZkNSIKKyAg
ICAiYjAzNzNmNDNkYTg2ZTllMGZmZTFhZTBmZGRkMzUxNjI1NWJkNzQ1NjZmMzZhMzg3MDNkNWYz
NDI0OWRlZDFmNiIKKyAgICAiNmIzZDliNDViOWFmMmNjZmVmZTk4NGUxMzM3NmIxYjJjNjQwNGFh
NDhjODAyNjEzMjM0M2RhM2YzYTMzNjU5ZSIKKyAgICAiYzFiM2U5NTA4MDU0MGIyOGI3ZjNmY2Qz
NWZhNWQ4NDNiNTc5YTg0YzA4OTEyMWE2MGQ4YzE3NTQ5MTVjMzQ0ZSIKKyAgICAiZWFmNDVhOWJm
MjdkYzBjMWU3ODQxNjE2OTEyMjA5MTMxM2ViMGU4NzU1NWFiZDcwNjYyNmU1NTdmYzM2YTA0ZiIK
KyAgICAiY2QxOTFhNTg4MjkxMDRkNjA3NWM1NTk0ZjYyN2NhNTA2YmYxODFkYWVjOTQwZjRhNGYz
YWYwMDc0ZWVlODlkYSIKKyAgICAiYWNkZTY3NTgzMTI2MjJkNGZhNjc1YjM5ZjcyOGUwNjJkMmJl
ZTY4MGQ4ZjQxYTU5N2MyNjI2NDhiYjE4YmNmYyIKKyAgICAiMTNjOGIzZDk3YjFhNzdiMmFjM2Fm
NzQ1ZDYxYTM0Y2M0NzA5ODY1YmFjODI0YTk0YmIxOTA1ODAxNWU0ZTQyZCIKKyAgICAiYzliZTZj
NzgwMzU2NzMyMTgyOWRkODU4NTMzOTYyNjkiCispCisKK0xPTkdfU0VSVkVSX1BBQ0tFVF9OVU1C
RVIgPSAxCitMT05HX1NFUlZFUl9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgImMxZmYwMDAwMTcwMDA4ZjA2N2E1NTAyYTQyNjJiNTAwNDA3NDAwMDEiCispCitMT05HX1NF
UlZFUl9QTEFJTl9QQVlMT0FEID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICIwZDAwMDAwMDAw
MTg0MTBhMDIwMDAwNTYwMzAzZWVmY2U3ZjdiMzdiYTFkMTYzMmU5NjY3NzgyNWRkZjczOTg4Igor
ICAgICJjZmM3OTgyNWRmNTY2ZGM1NDMwYjlhMDQ1YTEyMDAxMzAxMDAwMDJlMDAzMzAwMjQwMDFk
MDAyMDlkM2M5NDBkIgorICAgICI4OTY5MGI4NGQwOGE2MDk5M2MxNDRlY2E2ODRkMTA4MTI4N2M4
MzRkNTMxMWJjZjMyYmI5ZGExYTAwMmIwMDAyIgorICAgICIwMzA0IgorKQorTE9OR19TRVJWRVJf
RU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiYzlmZjAwMDAxNzAw
MDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MTY4YmYyMmI3MDAyNTk2Zjk5YWU2N2FiZjY1YSIKKyAg
ICAiNTg1MmY1NGY1OGMzN2M4MDg2ODJlMmU0MDQ5MmQ4YTM4OTlmYjA0ZmMwYWZlOWFhYmM4NzY3
YjE4YTBhYTQ5MyIKKyAgICAiNTM3NDI2MzczYjQ4ZDUwMjIxNGRkODU2ZDYzYjc4Y2VlMzdiYzY2
NGIzZmU4NmQ0ODdhYzdhNzdjNTMwMzhhMyIKKyAgICAiY2QzMmYwYjUwMDRkOWY1NzU0YzRmN2Yy
ZDFmMzVjZjNmNzExNjM1MWM5MmI5Y2Y5YmI2ZDA5MWRkZmM4YjMyZCIKKyAgICAiNDMyMzQ4YTJj
NDEzIgorKQorCitTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiA9IDMKK1NIT1JUX1NFUlZFUl9Q
TEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoIjQxYjAxZmQyNGE1ODZhOWNmMzAwMDMi
KQorU0hPUlRfU0VSVkVSX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
IjA2MDAzOTA0MDAwMDM1MDAwMTUxODA1YTRiZWJmNTAwMDAyMGIwOThjOGRjNDE4M2U0YzE4MjU3
MmUxMGFjM2UiCisgICAgIjJiODg4OTdlMDUyNGM4NDYxODQ3NTQ4YmQyZGZmYTJjMGFlNjAwMDgw
MDJhMDAwNGZmZmZmZmZmIgorKQorU0hPUlRfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQgPSBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgIjVkYjAxZmQyNGE1ODZhOWNmMzNkZWMwOTRhYWVjNmQ2YjRi
N2E1ZTE1ZjVhM2YwNWQwNmNmMWFkMDM1NWMxOWQiCisgICAgImNjZTA4MDdlZWNmN2JmMWM4NDRh
NjZlMWVjZDFmNzRiMmEyZDY5YmZkMjVkMjE3ODMzZWRkOTczMjQ2NTk3YmQiCisgICAgIjUxMDdl
YTE1Y2IxZTIxMDA0NTM5NmFmYTYwMmZlMjM0MzJmNGFiMjRjZTI1MWIiCispCisKKworY2xhc3Mg
Q3J5cHRvVGVzdChUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB2ZWN0b3JzIGZyb206CisK
KyAgICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1xdWljLXRscy0xOCNh
cHBlbmRpeC1BCisgICAgIiIiCisKKyAgICBkZWYgY3JlYXRlX2NyeXB0byhzZWxmLCBpc19jbGll
bnQpOgorICAgICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCisgICAgICAgIHBhaXIuc2V0dXBfaW5p
dGlhbCgKKyAgICAgICAgICAgIGNpZD1iaW5hc2NpaS51bmhleGxpZnkoIjgzOTRjOGYwM2U1MTU3
MDgiKSwKKyAgICAgICAgICAgIGlzX2NsaWVudD1pc19jbGllbnQsCisgICAgICAgICAgICB2ZXJz
aW9uPVBST1RPQ09MX1ZFUlNJT04sCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHBhaXIKKwor
ICAgIGRlZiB0ZXN0X2Rlcml2ZV9rZXlfaXZfaHAoc2VsZik6CisgICAgICAgICMgY2xpZW50Cisg
ICAgICAgIHNlY3JldCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICI4YTM1MTVh
MTRhZTNjMzFiOWMyZDZkNWJjNTg1MzhjYTVjZDJiYWExMTkwODcxNDNlNjA4ODc0MjhkY2I1MmY2
IgorICAgICAgICApCisgICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9pdl9ocChJTklU
SUFMX0NJUEhFUl9TVUlURSwgc2VjcmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleSwg
YmluYXNjaWkudW5oZXhsaWZ5KCI5OGIwZDdlNWU3YTQwMmM2N2MzM2YzNTBmYTY1ZWE1NCIpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl2LCBiaW5hc2NpaS51bmhleGxpZnkoIjE5ZTk0Mzg3
ODA1ZWIwYjQ2YzAzYTc4OCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhwLCBiaW5hc2Np
aS51bmhleGxpZnkoIjBlZGQ5ODJhNmFjNTI3ZjJlZGRjYmI3MzQ4ZGVhNWQ3IikpCisKKyAgICAg
ICAgIyBzZXJ2ZXIKKyAgICAgICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgIjQ3YjJlYWVhNmMyNjZlMzJjMDY5N2E5ZTJhODk4YmRmNWM0ZmIzZTVhYzM0ZjBlNTQ5
YmYyYzU4NTgxYTM4MTEiCisgICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVf
a2V5X2l2X2hwKElOSVRJQUxfQ0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoa2V5LCBiaW5hc2NpaS51bmhleGxpZnkoIjlhOGJlOTAyYTliZGQ5MWQxNjA2NGNh
MTE4MDQ1ZmI0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4
bGlmeSgiMGE4MjA4NmQzMjIwNWJhMjIyNDFkOGRjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaHAsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOTRiOTQ1MmQyYjNjN2M3ZjZkYTdmZGQ4NTkzNTM3
ZmQiKSkKKworICAgIEBza2lwSWYoImNoYWNoYTIwIiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcg
Y2hhY2hhMjAgdGVzdHMiKQorICAgIGRlZiB0ZXN0X2RlY3J5cHRfY2hhY2hhMjAoc2VsZik6Cisg
ICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5yZWN2LnNldHVwKAorICAg
ICAgICAgICAgY2lwaGVyX3N1aXRlPUNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1
NiwKKyAgICAgICAgICAgIHNlY3JldD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAg
ICAgImI0Mjc3MmRmMzNjOTcxOWEzMjgyMGQzMDJhYTY2NGQwODBkN2Y1ZWE3YTcxYTMzMGY4Nzg2
NGNiMjg5YWU4YzAiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NP
TF9WRVJTSU9OLAorICAgICAgICApCisKKyAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgIENI
QUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VULCAyNSwgMAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVB
REVSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIENIQUNIQTIwX0NM
SUVOVF9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldF9udW1i
ZXIsIENIQUNIQTIwX0NMSUVOVF9QQUNLRVRfTlVNQkVSKQorCisgICAgZGVmIHRlc3RfZGVjcnlw
dF9sb25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhp
c19jbGllbnQ9RmFsc2UpCisKKyAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBw
YWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfQ0xJ
RU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAwCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwbGFpbl9oZWFkZXIsIExPTkdfQ0xJRU5UX1BMQUlOX0hFQURFUikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXlsb2FkLCBMT05HX0NMSUVOVF9QTEFJTl9QQVlMT0FE
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldF9udW1iZXIsIExPTkdfQ0xJRU5UX1BB
Q0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X2xvbmdfc2VydmVyKHNlbGYpOgor
ICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1UcnVlKQorCisgICAg
ICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVj
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBMT05HX1NFUlZFUl9FTkNSWVBURURfUEFDS0VULCAx
OCwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBM
T05HX1NFUlZFUl9QTEFJTl9IRUFERVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5f
cGF5bG9hZCwgTE9OR19TRVJWRVJfUExBSU5fUEFZTE9BRCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYWNrZXRfbnVtYmVyLCBMT05HX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQorCisgICAgZGVm
IHRlc3RfZGVjcnlwdF9ub19rZXkoc2VsZik6CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkK
KyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDcnlwdG9FcnJvcik6CisgICAgICAgICAg
ICBwYWlyLmRlY3J5cHRfcGFja2V0KExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAw
KQorCisgICAgZGVmIHRlc3RfZGVjcnlwdF9zaG9ydF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIHBh
aXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5yZWN2LnNldHVwKAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRFLAorICAgICAgICAgICAgc2VjcmV0PWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiMzEwMjgxOTc3Y2I4YzFjMWMxMjEy
ZDc4NGIyZDI5ZTVhNjQ4OWUyM2RlODQ4ZDM3MGE1YTJmOTUzN2YzYTEwMCIKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisgICAgICAgICkKKwor
ICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIgPSBwYWly
LmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX0VOQ1JZUFRFRF9QQUNL
RVQsIDksIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX2hlYWRl
ciwgU0hPUlRfU0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
bGFpbl9wYXlsb2FkLCBTSE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYWNrZXRfbnVtYmVyLCBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUikKKwor
ICAgIEBza2lwSWYoImNoYWNoYTIwIiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcgY2hhY2hhMjAg
dGVzdHMiKQorICAgIGRlZiB0ZXN0X2VuY3J5cHRfY2hhY2hhMjAoc2VsZik6CisgICAgICAgIHBh
aXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZW5kLnNldHVwKAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPUNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAg
ICAgICAgIHNlY3JldD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImI0Mjc3
MmRmMzNjOTcxOWEzMjgyMGQzMDJhYTY2NGQwODBkN2Y1ZWE3YTcxYTMzMGY4Nzg2NGNiMjg5YWU4
YzAiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NPTF9WRVJTSU9O
LAorICAgICAgICApCisKKyAgICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgKKyAg
ICAgICAgICAgIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIsCisgICAgICAgICAgICBDSEFD
SEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIENIQUNIQTIwX0NMSUVOVF9Q
QUNLRVRfTlVNQkVSLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0
LCBDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCkKKworICAgIGRlZiB0ZXN0X2VuY3J5
cHRfbG9uZ19jbGllbnQoc2VsZik6CisgICAgICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8o
aXNfY2xpZW50PVRydWUpCisKKyAgICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgK
KyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIExPTkdf
Q0xJRU5UX1BMQUlOX1BBWUxPQUQsCisgICAgICAgICAgICBMT05HX0NMSUVOVF9QQUNLRVRfTlVN
QkVSLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0LCBMT05HX0NM
SUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9sb25nX3NlcnZl
cihzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9RmFs
c2UpCisKKyAgICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgKKyAgICAgICAgICAg
IExPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BMQUlO
X1BBWUxPQUQsCisgICAgICAgICAgICBMT05HX1NFUlZFUl9QQUNLRVRfTlVNQkVSLAorICAgICAg
ICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0LCBMT05HX1NFUlZFUl9FTkNSWVBU
RURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9zaG9ydF9zZXJ2ZXIoc2VsZik6Cisg
ICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZW5kLnNldHVwKAorICAg
ICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRFLAorICAgICAgICAgICAg
c2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiMzEwMjgxOTc3Y2I4
YzFjMWMxMjEyZDc4NGIyZDI5ZTVhNjQ4OWUyM2RlODQ4ZDM3MGE1YTJmOTUzN2YzYTEwMCIKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisgICAg
ICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAg
ICAgU0hPUlRfU0VSVkVSX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIFNIT1JUX1NFUlZFUl9Q
TEFJTl9QQVlMT0FELAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIFNIT1JUX1NFUlZFUl9F
TkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAg
ICAgcGFpcjEgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCisgICAgICAgIHBh
aXIyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkKKworICAgICAgICBkZWYg
Y3JlYXRlX3BhY2tldChrZXlfcGhhc2UsIHBhY2tldF9udW1iZXIpOgorICAgICAgICAgICAgYnVm
ID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tF
VF9GSVhFRF9CSVQgfCBrZXlfcGhhc2UgPDwgMiB8IDEpCisgICAgICAgICAgICBidWYucHVzaF9i
eXRlcyhiaW5hc2NpaS51bmhleGxpZnkoIjgzOTRjOGYwM2U1MTU3MDgiKSkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihwYWNrZXRfbnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIGJ1Zi5k
YXRhLCBiIlx4MDBceDAxXHgwMlx4MDMiCisKKyAgICAgICAgZGVmIHNlbmQoc2VuZGVyLCByZWNl
aXZlciwgcGFja2V0X251bWJlcj0wKToKKyAgICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5f
cGF5bG9hZCA9IGNyZWF0ZV9wYWNrZXQoCisgICAgICAgICAgICAgICAga2V5X3BoYXNlPXNlbmRl
ci5rZXlfcGhhc2UsIHBhY2tldF9udW1iZXI9cGFja2V0X251bWJlcgorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZW5jcnlwdGVkID0gc2VuZGVyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAg
ICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlcgorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgcmVjb3ZfaGVhZGVyLCByZWNvdl9wYXlsb2FkLCByZWNvdl9w
YWNrZXRfbnVtYmVyID0gcmVjZWl2ZXIuZGVjcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAgICAg
ZW5jcnlwdGVkLCBsZW4ocGxhaW5faGVhZGVyKSAtIDIsIDAKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfaGVhZGVyLCBwbGFpbl9oZWFkZXIpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY292X3BheWxvYWQsIHBsYWluX3BheWxvYWQpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY292X3BhY2tldF9udW1iZXIsIHBhY2tldF9u
dW1iZXIpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChwYWlyMSwgcGFpcjIs
IDApCisgICAgICAgIHNlbmQocGFpcjIsIHBhaXIxLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMi5r
ZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEga2V5IHVwZGF0ZQorICAgICAgICBwYWly
MS51cGRhdGVfa2V5KCkKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIx
LCBwYWlyMiwgMSkKKyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGFpcjEua2V5X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhaXIyLmtleV9waGFzZSwgMSkKKworICAgICAgICAjIHBhaXIgMiBrZXkgdXBkYXRlCisgICAg
ICAgIHBhaXIyLnVwZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNl
bmQocGFpcjIsIHBhaXIxLCAyKQorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFpcjIua2V5X3BoYXNlLCAwKQorCisgICAgICAgICMgcGFpciAxIGtleSAtIHVw
ZGF0ZSwgYnV0IG5vdCBuZXh0IHRvIHNlbmQKKyAgICAgICAgcGFpcjEudXBkYXRlX2tleSgpCisK
KyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDMpCisgICAg
ICAgIHNlbmQocGFpcjEsIHBhaXIyLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIx
LmtleV9waGFzZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMi5rZXlfcGhhc2Us
IDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90ZXN0X2gwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxY2NmNjVlMTE3NDk4Y2ZkZDViMDdi
ZWRlMWYwNzYzZDFjYTIwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGVzdF9oMC5weQpAQCAtMCwwICsxLDE0OCBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENh
c2UKKworZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVj
dGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBIZWFkZXJz
UmVjZWl2ZWQKKworZnJvbSAudGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZl
ciwgdHJhbnNmZXIKKworCitkZWYgaDBfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4g
Y2xpZW50X2FuZF9zZXJ2ZXIoCisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2Nv
bHMiOiBIMF9BTFBOfSwKKyAgICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IEgwX0FMUE59LAorICAgICkKKworCitkZWYgaDBfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgwX3Jl
Y2VpdmVyKToKKyAgICBxdWljX3JlY2VpdmVyID0gaDBfcmVjZWl2ZXIuX3F1aWMKKyAgICB0cmFu
c2ZlcihxdWljX3NlbmRlciwgcXVpY19yZWNlaXZlcikKKworICAgICMgcHJvY2VzcyBRVUlDIGV2
ZW50cworICAgIGh0dHBfZXZlbnRzID0gW10KKyAgICBldmVudCA9IHF1aWNfcmVjZWl2ZXIubmV4
dF9ldmVudCgpCisgICAgd2hpbGUgZXZlbnQgaXMgbm90IE5vbmU6CisgICAgICAgIGh0dHBfZXZl
bnRzLmV4dGVuZChoMF9yZWNlaXZlci5oYW5kbGVfZXZlbnQoZXZlbnQpKQorICAgICAgICBldmVu
dCA9IHF1aWNfcmVjZWl2ZXIubmV4dF9ldmVudCgpCisgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisK
KworY2xhc3MgSDBDb25uZWN0aW9uVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY29ubmVj
dChzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2Ns
aWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0gSDBDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25uZWN0aW9uKHF1aWNf
c2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwg
YiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaDBfY2xpZW50LnNlbmRfZGF0YShz
dHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAg
ICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0gaDBfdHJhbnNmZXIo
cXVpY19jbGllbnQsIGgwX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGV2ZW50cyksIDIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2
ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICAgICAgZXZlbnRzWzBdLmhlYWRlcnMsIFsoYiI6bWV0aG9kIiwgYiJHRVQi
KSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkKKworICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRhUmVjZWl2ZWQpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwgYiIiKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1fZW5kZWQsIFRydWUp
CisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDBfc2VydmVyLnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAg
ICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIy
MDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaDBfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9k
eT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXNwb25zZQorICAgICAgICAgICAgZXZlbnRz
ID0gaDBfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgwX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGV2ZW50cyksIDIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLmhlYWRlcnMsIFtdKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIjxodG1sPjxi
b2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
dmVudHNbMV0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50c1sxXS5zdHJlYW1fZW5kZWQsIFRydWUpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJz
X29ubHkoc2VsZik6CisgICAgICAgIHdpdGggaDBfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVp
Y19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgwX2NsaWVudCA9IEgwQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgwX3NlcnZlciA9IEgwQ29ubmVjdGlvbihx
dWljX3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0
cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAg
ICAgICAgICAgaDBfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAoYiI6bWV0aG9kIiwgYiJIRUFEIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxv
Y2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRz
ID0gaDBfdHJhbnNmZXIocXVpY19jbGllbnQsIGgwX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGV2ZW50cyksIDIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzWzBdLmhlYWRlcnMsIFsoYiI6
bWV0aG9kIiwgYiJIRUFEIiksIChiIjpwYXRoIiwgYiIvIildCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFs
c2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwg
RGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRh
dGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9p
ZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3Ry
ZWFtX2VuZGVkLCBUcnVlKQorCisgICAgICAgICAgICAjIHNlbmQgcmVzcG9uc2UKKyAgICAgICAg
ICAgIGgwX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlw
ZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAg
ICAgICMgcmVjZWl2ZSByZXNwb25zZQorICAgICAgICAgICAgZXZlbnRzID0gaDBfdHJhbnNmZXIo
cXVpY19zZXJ2ZXIsIGgwX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGV2ZW50cyksIDIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2
ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnRzWzBdLmhlYWRlcnMsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
aDMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWU1NTAzOTliNGEzMDA2ZmRiMDg2ZTIzMDk0ZmU5ODk4YzU0MzE3
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5CkBAIC0w
LDAgKzEsMTI5MiBAQAoraW1wb3J0IGJpbmFzY2lpCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0
Q2FzZQorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9ydCBlbmNvZGVfdWludF92YXIKK2Zyb20g
YWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgSDNfQUxQTiwKKyAgICBFcnJvckNv
ZGUsCisgICAgRnJhbWVUeXBlLAorICAgIEZyYW1lVW5leHBlY3RlZCwKKyAgICBIM0Nvbm5lY3Rp
b24sCisgICAgU3RyZWFtVHlwZSwKKyAgICBlbmNvZGVfZnJhbWUsCispCitmcm9tIGFpb3F1aWMu
aDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNlaXZlZCwgUHVzaFByb21p
c2VSZWNlaXZlZAorZnJvbSBhaW9xdWljLmgzLmV4Y2VwdGlvbnMgaW1wb3J0IE5vQXZhaWxhYmxl
UHVzaElERXJyb3IKK2Zyb20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWND
b25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFN0cmVhbURhdGFS
ZWNlaXZlZAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCisKK2Zy
b20gLnRlc3RfY29ubmVjdGlvbiBpbXBvcnQgY2xpZW50X2FuZF9zZXJ2ZXIsIHRyYW5zZmVyCisK
KworZGVmIGgzX2NsaWVudF9hbmRfc2VydmVyKCk6CisgICAgcmV0dXJuIGNsaWVudF9hbmRfc2Vy
dmVyKAorICAgICAgICBjbGllbnRfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDNfQUxQTn0s
CisgICAgICAgIHNlcnZlcl9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwKKyAg
ICApCisKKworZGVmIGgzX3RyYW5zZmVyKHF1aWNfc2VuZGVyLCBoM19yZWNlaXZlcik6CisgICAg
cXVpY19yZWNlaXZlciA9IGgzX3JlY2VpdmVyLl9xdWljCisgICAgaWYgaGFzYXR0cihxdWljX3Nl
bmRlciwgInN0cmVhbV9xdWV1ZSIpOgorICAgICAgICBxdWljX3JlY2VpdmVyLl9ldmVudHMuZXh0
ZW5kKHF1aWNfc2VuZGVyLnN0cmVhbV9xdWV1ZSkKKyAgICAgICAgcXVpY19zZW5kZXIuc3RyZWFt
X3F1ZXVlLmNsZWFyKCkKKyAgICBlbHNlOgorICAgICAgICB0cmFuc2ZlcihxdWljX3NlbmRlciwg
cXVpY19yZWNlaXZlcikKKworICAgICMgcHJvY2VzcyBRVUlDIGV2ZW50cworICAgIGh0dHBfZXZl
bnRzID0gW10KKyAgICBldmVudCA9IHF1aWNfcmVjZWl2ZXIubmV4dF9ldmVudCgpCisgICAgd2hp
bGUgZXZlbnQgaXMgbm90IE5vbmU6CisgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZChoM19yZWNl
aXZlci5oYW5kbGVfZXZlbnQoZXZlbnQpKQorICAgICAgICBldmVudCA9IHF1aWNfcmVjZWl2ZXIu
bmV4dF9ldmVudCgpCisgICAgcmV0dXJuIGh0dHBfZXZlbnRzCisKKworY2xhc3MgRmFrZVF1aWND
b25uZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWd1cmF0aW9uKToKKyAgICAg
ICAgc2VsZi5jbG9zZWQgPSBOb25lCisgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZp
Z3VyYXRpb24KKyAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUgPSBbXQorICAgICAgICBzZWxmLl9l
dmVudHMgPSBbXQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpID0gMCBpZiBjb25maWd1
cmF0aW9uLmlzX2NsaWVudCBlbHNlIDEKKyAgICAgICAgc2VsZi5fbmV4dF9zdHJlYW1fdW5pID0g
MiBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudCBlbHNlIDMKKyAgICAgICAgc2VsZi5fcXVpY19s
b2dnZXIgPSBRdWljTG9nZ2VyKCkuc3RhcnRfdHJhY2UoCisgICAgICAgICAgICBpc19jbGllbnQ9
Y29uZmlndXJhdGlvbi5pc19jbGllbnQsIG9kY2lkPWIiIgorICAgICAgICApCisKKyAgICBkZWYg
Y2xvc2Uoc2VsZiwgZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSk6CisgICAgICAgIHNlbGYuY2xv
c2VkID0gKGVycm9yX2NvZGUsIHJlYXNvbl9waHJhc2UpCisKKyAgICBkZWYgZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZChzZWxmLCBpc191bmlkaXJlY3Rpb25hbD1GYWxzZSk6CisgICAgICAg
IGlmIGlzX3VuaWRpcmVjdGlvbmFsOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fbmV4
dF9zdHJlYW1fdW5pCisgICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgKz0gNAorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fbmV4dF9zdHJlYW1fYmlk
aQorICAgICAgICAgICAgc2VsZi5fbmV4dF9zdHJlYW1fYmlkaSArPSA0CisgICAgICAgIHJldHVy
biBzdHJlYW1faWQKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpOgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcCgwKQorICAgICAgICBleGNlcHQgSW5k
ZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgc2VuZF9zdHJlYW1f
ZGF0YShzZWxmLCBzdHJlYW1faWQsIGRhdGEsIGVuZF9zdHJlYW09RmFsc2UpOgorICAgICAgICAj
IGNob3AgdXAgZGF0YSBpbnRvIGluZGl2aWR1YWwgYnl0ZXMKKyAgICAgICAgZm9yIGMgaW4gZGF0
YToKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtX3F1ZXVlLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9Ynl0ZXMoW2Nd
KSwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgZW5kX3N0cmVhbToKKyAgICAgICAgICAgIHNl
bGYuc3RyZWFtX3F1ZXVlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoZGF0YT1iIiIsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSwgc3RyZWFtX2lkPXN0cmVhbV9pZCkK
KyAgICAgICAgICAgICkKKworCitjbGFzcyBIM0Nvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAg
ICBtYXhEaWZmID0gTm9uZQorCisgICAgZGVmIF9tYWtlX3JlcXVlc3Qoc2VsZiwgaDNfY2xpZW50
LCBoM19zZXJ2ZXIpOgorICAgICAgICBxdWljX2NsaWVudCA9IGgzX2NsaWVudC5fcXVpYworICAg
ICAgICBxdWljX3NlcnZlciA9IGgzX3NlcnZlci5fcXVpYworCisgICAgICAgICMgc2VuZCByZXF1
ZXN0CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9z
dHJlYW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAg
c3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBi
Imh0dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAoYiJ4
LWZvbyIsIGIiY2xpZW50IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iIiIsIGVuZF9zdHJl
YW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICBldmVudHMgPSBo
M190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAg
ICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIiY2xp
ZW50IiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
Iiwgc3RyZWFtX2lkPXN0cmVhbV9pZCwgc3RyZWFtX2VuZGVkPVRydWUpLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICBoM19zZXJ2
ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAor
ICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04IiksCisgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5o
ZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgcmVjZWl2ZSByZXNwb25zZQorICAgICAgICBldmVudHMgPSBoM190
cmFuc2ZlcihxdWljX3NlcnZlciwgaDNfY2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIEhl
YWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAg
ICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1i
IjxodG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfZnJhbWVfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIi
CisgICAgICAgIFdlIHNob3VsZCBub3QgcmVjZWl2ZSBIRUFERVJTIG9uIHRoZSBjb250cm9sIHN0
cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25uZWN0
aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1
aWNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTIsCisgICAg
ICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKQorICAg
ICAgICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLAorICAg
ICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3Nl
ZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAiSW52YWxp
ZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIiksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X2hhbmRsZV9jb250cm9sX2ZyYW1lX21heF9wdXNoX2lkX2Zyb21fc2VydmVyKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgQSBjbGllbnQgc2hvdWxkIG5vdCByZWNlaXZlIE1BWF9QVVNI
X0lEIG9uIHRoZSBjb250cm9sIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xp
ZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGll
bnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgaDNfY2xpZW50LmhhbmRs
ZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9MywKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJl
YW1UeXBlLkNPTlRST0wpCisgICAgICAgICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBl
Lk1BWF9QVVNIX0lELCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisg
ICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHF1aWNfY2xpZW50LmNsb3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9G
UkFNRV9VTkVYUEVDVEVELCAiU2VydmVycyBtdXN0IG5vdCBzZW5kIE1BWF9QVVNIX0lEIiksCisg
ICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb250cm9sX3N0cmVhbV9kdXBsaWNhdGUo
c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmds
ZSBjb250cm9sIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFr
ZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJh
dGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyID0gSDND
b25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICMgcmVjZWl2ZSBhIGZpcnN0IGNvbnRy
b2wgc3RyZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBT
dHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTIsIGRhdGE9ZW5j
b2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgcmVjZWl2ZSBhIHNlY29uZCBjb250cm9s
IHN0cmVhbQorICAgICAgICBoM19zZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3Ry
ZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD02LCBkYXRhPWVuY29k
ZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAg
ICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBFcnJv
ckNvZGUuSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1IsCisgICAgICAgICAgICAgICAgIk9ubHkg
b25lIGNvbnRyb2wgc3RyZWFtIGlzIGFsbG93ZWQiLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3B1c2hfZnJhbWVfd3JvbmdfZnJhbWVfdHlwZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3QgcmVjZWl2ZWQgU0VUVElOR1Mg
b24gYSBwdXNoIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFr
ZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJh
dGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nv
bm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9MTUsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5Q
VVNIKQorICAgICAgICAgICAgICAgICsgZW5jb2RlX3VpbnRfdmFyKDApICAjIHB1c2ggSUQKKyAg
ICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuU0VUVElOR1MsIGIiIiksCisg
ICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19jbGllbnQuY2xv
c2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZh
bGlkIGZyYW1lIHR5cGUgb24gcHVzaCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRl
c3RfaGFuZGxlX3FwYWNrX2RlY29kZXJfZHVwbGljYXRlKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2UgbXVzdCBvbmx5IHJlY2VpdmUgYSBzaW5nbGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0u
CisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRy
dWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xp
ZW50KQorCisgICAgICAgICMgcmVjZWl2ZSBhIGZpcnN0IGRlY29kZXIgc3RyZWFtCisgICAgICAg
IGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTExLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5j
b2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMg
cmVjZWl2ZSBhIHNlY29uZCBkZWNvZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxl
X2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJl
YW1UeXBlLlFQQUNLX0RFQ09ERVIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHF1aWNfY2xpZW50LmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAg
ICAgICBFcnJvckNvZGUuSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1IsCisgICAgICAgICAgICAg
ICAgIk9ubHkgb25lIFFQQUNLIGRlY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3FwYWNrX2RlY29kZXJfc3Ry
ZWFtX2Vycm9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2aW5nIGdhcmJhZ2Ug
b24gdGhlIFFQQUNLIGRlY29kZXIgc3RyZWFtIHRyaWdnZXJzIGFuIGV4Y2VwdGlvbi4KKyAgICAg
ICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAg
ICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisK
KyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAg
ZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSArIGIiXHgwMCIs
CisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19jbGllbnQu
Y2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT0RFUl9TVFJFQU1fRVJST1IsICIiKQor
ICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZW5jb2Rlcl9kdXBsaWNhdGUo
c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmds
ZSBRUEFDSyBlbmNvZGVyIHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50
ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29u
ZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQg
PSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3Qg
ZW5jb2RlciBzdHJlYW0KKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAg
ICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisg
ICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNP
REVSKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQor
ICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGVuY29kZXIgc3RyZWFtCisg
ICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVj
ZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuUVBBQ0tfRU5DT0RFUiksCisgICAgICAgICAg
ICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAg
ICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElP
Tl9FUlJPUiwKKyAgICAgICAgICAgICAgICAiT25seSBvbmUgUVBBQ0sgZW5jb2RlciBzdHJlYW0g
aXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcXBhY2tfZW5jb2Rlcl9zdHJlYW1fZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBvbiB0aGUgUVBBQ0sgZW5jb2RlciBzdHJlYW0gdHJpZ2dl
cnMgYW4gZXhjZXB0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtl
UXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0
aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29u
bmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD03LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5cGUuUVBB
Q0tfRU5DT0RFUikgKyBiIlx4MDAiLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHF1aWNfY2xpZW50LmNsb3NlZCwgKEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09E
RVJfU1RSRUFNX0VSUk9SLCAiIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jl
cXVlc3RfZnJhbWVfYmFkX2hlYWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBz
aG91bGQgbm90IHJlY2VpdmUgSEVBREVSUyB3aGljaCBjYW5ub3QgYmUgZGVjb2RlZC4KKyAgICAg
ICAgIiIiCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisg
ICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQor
CisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsIGRhdGE9ZW5jb2RlX2ZyYW1l
KEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICAp
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNf
c2VydmVyLmNsb3NlZCwgKEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVE
LCAiIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVfZGF0
YV9iZWZvcmVfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBu
b3QgcmVjZWl2ZSBEQVRBIGJlZm9yZSByZWNlaXZpbmcgaGVhZGVycy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAgICAgICkK
KyAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAg
IGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlw
ZS5EQVRBLCBiIiIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3Nl
ZCwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9V
TkVYUEVDVEVELAorICAgICAgICAgICAgICAgICJEQVRBIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGlu
IHRoaXMgc3RhdGUiLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX3JlcXVlc3RfZnJhbWVfaGVhZGVyc19hZnRlcl90cmFpbGVycyhzZWxmKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3QgcmVjZWl2ZSBIRUFERVJTIGFmdGVyIHJlY2Vp
dmluZyB0cmFpbGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1
aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlv
bihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBxdWljX3NlcnZlciA9IEZha2VR
dWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRp
b24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisKKyAgICAgICAgaDNfY2xpZW50ID0gSDND
b25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24o
cXVpY19zZXJ2ZXIpCisKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRf
YXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIi
OnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJs
b2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAg
ICAgXSwKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAg
ICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBi
ImZvbyIpXSwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICkKKyAgICAgICAgaDNfdHJhbnNmZXIo
cXVpY19jbGllbnQsIGgzX3NlcnZlcikKKworICAgICAgICBoM19zZXJ2ZXIuaGFuZGxlX2V2ZW50
KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD0wLCBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuSEVBREVSUywgYiIiKSwgZW5kX3N0
cmVhbT1GYWxzZQorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwKKyAgICAgICAg
ICAgICAgICAiSEVBREVSUyBmcmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIiwKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXF1ZXN0X2Zy
YW1lX3B1c2hfcHJvbWlzZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IEEgc2VydmVyIHNob3VsZCBub3QgcmVjZWl2ZSBQVVNIX1BST01JU0Ugb24gYSByZXF1ZXN0IHN0
cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWNDb25uZWN0
aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1
aWNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAg
ICAgICAgICAgICAgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLlBVU0hfUFJPTUlTRSwgYiIi
KSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX3NlcnZl
ci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBQVVNIX1BST01JU0UiKSwKKyAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVfd3JvbmdfZnJhbWVfdHlwZShzZWxmKToKKyAg
ICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAg
aDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29k
ZV9mcmFtZShGcmFtZVR5cGUuU0VUVElOR1MsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0
cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKEVy
cm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlkIGZyYW1lIHR5cGUgb24gcmVx
dWVzdCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWVzdChzZWxmKToK
KyAgICAgICAgd2l0aCBoM19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVp
Y19zZXJ2ZXIpOgorICAgICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xp
ZW50KQorICAgICAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQor
CisgICAgICAgICAgICAjIG1ha2UgZmlyc3QgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFr
ZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgICAgICAjIG1ha2Ugc2Vj
b25kIHJlcXVlc3QKKyAgICAgICAgICAgIHNlbGYuX21ha2VfcmVxdWVzdChoM19jbGllbnQsIGgz
X3NlcnZlcikKKworICAgICAgICAgICAgIyBtYWtlIHRoaXJkIHJlcXVlc3QgLT4gZHluYW1pYyB0
YWJsZQorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2VydmVy
KQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX29ubHkoc2VsZik6CisgICAgICAgIHdp
dGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToK
KyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAg
ICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAg
ICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50Lmdl
dF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRf
aGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJIRUFE
IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAg
ICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAg
ICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAoYiJ4LWZvbyIs
IGIiY2xpZW50IiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3Ry
ZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0
CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMs
CisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6bWV0aG9kIiwgYiJIRUFEIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlbmQgcmVzcG9uc2UKKyAgICAg
ICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAg
ICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQt
dHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgICAg
IChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNl
aXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZl
ciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBIZWFk
ZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF9mcmFnbWVudGVkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAg
ICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25m
aWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQor
CisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKyAgICAgICAg
aDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICMgc2VuZCBy
ZXF1ZXN0CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUi
LCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAo
YiJ4LWZvbyIsIGIiY2xpZW50IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAg
IGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxvIiwg
ZW5kX3N0cmVhbT1UcnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2
ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsK
KyAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVk
PUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVk
KGRhdGE9YiJoIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1GYWxzZSksCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJlIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1G
YWxzZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJsIiwgc3RyZWFtX2lk
PTAsIHN0cmVhbV9lbmRlZD1GYWxzZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRh
dGE9YiJsIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1GYWxzZSksCisgICAgICAgICAgICAg
ICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJvIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1GYWxz
ZSksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPVRydWUpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAg
ICMgc2VuZCBwdXNoIHByb21pc2UKKyAgICAgICAgcHVzaF9zdHJlYW1faWQgPSBoM19zZXJ2ZXIu
c2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAg
ICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiks
CisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAg
ICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0
aCIsIGIiL2FwcC50eHQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZCwgMTUpCisKKyAgICAgICAgIyBzZW5kIHJlc3Bv
bnNlCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIi
OnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBl
bmRfc3RyZWFtPUZhbHNlLAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEo
c3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImh0bWwiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAg
ICAgICAgIyDCoGZ1bGZpbGwgcHVzaCBwcm9taXNlCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2hl
YWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsoYiI6c3RhdHVzIiwgYiIyMDAiKSwgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0
L3BsYWluIildLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwgZGF0YT1i
InRleHQiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHB1c2ggcHJvbWlz
ZSAvIHJlcG9uc2UKKyAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgz
X2NsaWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBQdXNoUHJvbWlzZVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpt
ZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAudHh0Iiks
CisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9MCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04IiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIm0iLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
ImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisg
ICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsoYiI6c3RhdHVzIiwgYiIyMDAiKSwgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L3BsYWlu
IildLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJ0
Iiwgc3RyZWFtX2lkPTE1LCBzdHJlYW1fZW5kZWQ9RmFsc2UsIHB1c2hfaWQ9MCksCisgICAgICAg
ICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJlIiwgc3RyZWFtX2lkPTE1LCBzdHJlYW1fZW5k
ZWQ9RmFsc2UsIHB1c2hfaWQ9MCksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9
YiJ4Iiwgc3RyZWFtX2lkPTE1LCBzdHJlYW1fZW5kZWQ9RmFsc2UsIHB1c2hfaWQ9MCksCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiJ0Iiwgc3RyZWFtX2lkPTE1LCBzdHJlYW1f
ZW5kZWQ9RmFsc2UsIHB1c2hfaWQ9MCksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRh
dGE9YiIiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1UcnVlLCBwdXNoX2lkPTApLAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3NlcnZl
cl9wdXNoKHNlbGYpOgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1
aWNfY2xpZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24o
cXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBz
dHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAg
ICAgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxv
Y2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIs
IGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2Nh
bGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgc2VuZCBwdXNoIHByb21pc2VzCisgICAgICAgICAgICBwdXNo
X3N0cmVhbV9pZF9jc3MgPSBoM19zZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAg
ICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAg
ICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRo
b3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIi
L2FwcC5jc3MiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9jc3MsIDE1KQorCisgICAgICAgICAg
ICBwdXNoX3N0cmVhbV9pZF9qcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9
WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
OmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRo
IiwgYiIvYXBwLmpzIiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVzaF9zdHJlYW1faWRfanMsIDE5KQorCisgICAgICAg
ICAgICAjIHNlbmQgcmVzcG9uc2UKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMo
CisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAg
ICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04IiksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZh
bHNlLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9
YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICBlbmRf
c3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgwqBmdWxmaWxsIHB1
c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAg
ICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2NzcywKKyAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsoYiI6c3RhdHVzIiwgYiIyMDAiKSwgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2Nz
cyIpXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgIGRhdGE9YiJib2R5IHsgY29s
b3I6IHBpbmsgfSIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICBoZWFkZXJz
PVsKKyAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAg
ICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIiYXBwbGljYXRpb24vamF2YXNjcmlwdCIpLAor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLCBkYXRhPWIiYWxlcnQoJ2hvd2RlZScp
OyIsIGVuZF9zdHJlYW09VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2Vp
dmUgcHVzaCBwcm9taXNlcywgcmVzcG9uc2UgYW5kIHB1c2ggcmVzcG9uc2VzCisKKyAgICAgICAg
ICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRo
b3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpw
YXRoIiwgYiIvYXBwLmNzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2hfaWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg
ICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJz
PVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvYXBwLmpzIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29u
dGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIs
CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBi
InRleHQvY3NzIildLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2NzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YT1iImJvZHkgeyBjb2xvcjogcGluayB9IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hfaWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0
cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2Vp
dmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0x
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhPWIiYWxlcnQoJ2hvd2RlZScpOyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoX2lkPTEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVz
aF9zdHJlYW1faWRfanMsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3NlcnZlcl9wdXNoX21heF9wdXNoX2lk
KHNlbGYpOgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xp
ZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24o
cXVpY19jbGllbnQpCisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1f
aWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBi
Imh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9z
dCIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQor
CisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0gaDNf
dHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAgICAg
ICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VU
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3Qi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgc2VuZCBwdXNoIHByb21pc2VzCisgICAgICAgICAgICBmb3IgaSBpbiBy
YW5nZSgwLCA4KToKKyAgICAgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2Uo
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsICIve30uY3NzIi5mb3JtYXQoaSkuZW5j
b2RlKCJhc2NpaSIpKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgc2VuZCBvbmUgdG9vIG1hbnkKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoTm9BdmFpbGFibGVQdXNoSURFcnJvcik6CisgICAgICAgICAgICAgICAg
aDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi84LmNzcyIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICkKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9hZnRlcl90cmFpbGVycyhzZWxmKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBEQVRBIGFmdGVyIHRyYWlsZXJzLgor
ICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
KQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVu
dCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
IHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwg
YiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBdLAorICAg
ICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9vIildLCBl
bmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAgaDNfY2xpZW50LnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRfc3RyZWFtPUZhbHNlKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9kYXRhX2JlZm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYmVmb3JlIGhlYWRlcnMuCisgICAgICAgICIi
IgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorCisgICAg
ICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZyYW1lVW5leHBlY3RlZCk6CisgICAg
ICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9YiJo
ZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCisKKyAgICBkZWYgdGVzdF9zZW5kX2hlYWRlcnNfYWZ0
ZXJfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBXZSBzaG91bGQgbm90IHNl
bmQgSEVBREVSUyBhZnRlciB0cmFpbGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xp
ZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGll
bnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVu
dC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisg
ICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAo
YiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLyIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuc2Vu
ZF9oZWFkZXJzKAorICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwgaGVhZGVycz1bKGIi
eC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICApCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LW90aGVyLXRyYWlsZXIiLCBi
ImZvbyIpXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfYmxvY2tlZF9zdHJlYW0oc2VsZik6CisgICAgICAgIHF1aWNfY2xp
ZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAgICBoM19jbGll
bnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAgaDNfY2xpZW50LmhhbmRs
ZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9MywKKyAgICAgICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgK
KyAgICAgICAgICAgICAgICAgICAgIjAwMDQxNzAxNTAwMDA2ODAwMjAwMDAwNzQwNjQwOTEwNDBi
Y2MwMDAwMDAwZmFjZWIwMGMiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBl
bmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGgzX2Ns
aWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3RyZWFt
X2lkPTcsIGRhdGE9YiJceDAyIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorICAgICAg
ICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVk
KHN0cmVhbV9pZD0xMSwgZGF0YT1iIlx4MDMiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICAp
CisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRh
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsIGRhdGE9YmluYXNjaWkudW5o
ZXhsaWZ5KCIwMTA0MDI4MGQ5MTAiKSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAgICAgKQor
ICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBT
dHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAg
ICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICIw
MDQwOGQ3OTZmNzUyMDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYx
NjM2ODIwIgorICAgICAgICAgICAgICAgICAgICAiNzQ2ODY1MjAyZjY1NjM2ODZmMjA2NTZlNjQ3
MDZmNjk2ZTc0MjA2NjZmNzIyMDYxNmUyMDY1NjM2ODZmMjA3MiIKKyAgICAgICAgICAgICAgICAg
ICAgIjY1NzM3MDZmNmU3MzY1MjA3MTc1NjU3Mjc5MjAyZjNjNmU3NTZkNjI2NTcyM2UyMDY1NmU2
NDcwNmY2OTZlNzQiCisgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2MTcy
Njk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgorICAgICAgICAgICAg
ICAgICAgICAiNjk3NDY4MjA3MjYxNmU2NDZmNmQyMDYyNzk3NDY1NzMiCisgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVu
dC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1i
aW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiM2ZlMTAxYzY5NmQw
N2FiZTk0MTA5NGNiNmQwYTA4MDE3ZDQwMzk3MTk2NmUzMmNhOThiNDZmIgorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiZGF0ZSIsIGIiTW9uLCAyMiBKdWwgMjAxOSAwNjozMzozMyBHTVQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0
YT0oCisgICAgICAgICAgICAgICAgICAgICAgICBiInlvdSByZWFjaGVkIG12ZnN0Lm5ldCwgcmVh
Y2ggdGhlIC9lY2hvIGVuZHBvaW50IGZvciBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICBi
ImVjaG8gcmVzcG9uc2UgcXVlcnkgLzxudW1iZXI+IGVuZHBvaW50cyBmb3IgYSB2YXJpYWJsZSAi
CisgICAgICAgICAgICAgICAgICAgICAgICBiInNpemUgcmVzcG9uc2Ugd2l0aCByYW5kb20gYnl0
ZXMiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmxvY2tl
ZF9zdHJlYW1fdHJhaWxlcihzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlv
bihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0zLAor
ICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAg
ICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJjYzAwMDAwMDBmYWNlYjAw
YyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVu
dCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9NywgZGF0YT1iIlx4
MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5oYW5k
bGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3RyZWFtX2lkPTExLCBk
YXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICIwMTFiMDAwMGQ5NTY5NmQwN2FiZTk0MTA5NGNiNmQwYTA4
MDE3ZDQwMzk3MTk2NmUzMmNhOThiNDZmIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVk
KAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAg
IChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIs
IGIiTW9uLCAyMiBKdWwgMjAxOSAwNjozMzozMyBHTVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAg
IHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2Ns
aWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgZGF0
YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDA0MDhkNzk2
Zjc1MjA3MjY1NjE2MzY4NjU2NDIwNmQ3NjY2NzM3NDJlNmU2NTc0MmMyMDcyNjU2MTYzNjgyMCIK
KyAgICAgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcwNmY2
OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAgICAgICAgICAgICAg
ICAgIjY1NzM3MDZmNmU3MzY1MjA3MTc1NjU3Mjc5MjAyZjNjNmU3NTZkNjI2NTcyM2UyMDY1NmU2
NDcwNmY2OTZlNzQiCisgICAgICAgICAgICAgICAgICAgICAgICAiNzMyMDY2NmY3MjIwNjEyMDc2
NjE3MjY5NjE2MjZjNjUyMDczNjk3YTY1MjA3MjY1NzM3MDZmNmU3MzY1MjA3NyIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAg
ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT0oCisgICAg
ICAgICAgICAgICAgICAgICAgICBiInlvdSByZWFjaGVkIG12ZnN0Lm5ldCwgcmVhY2ggdGhlIC9l
Y2hvIGVuZHBvaW50IGZvciBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICBiImVjaG8gcmVz
cG9uc2UgcXVlcnkgLzxudW1iZXI+IGVuZHBvaW50cyBmb3IgYSB2YXJpYWJsZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICBiInNpemUgcmVzcG9uc2Ugd2l0aCByYW5kb20gYnl0ZXMiCisgICAg
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsIGRhdGE9Ymlu
YXNjaWkudW5oZXhsaWZ5KCIwMTAzMDI4MDEwIiksIGVuZF9zdHJlYW09VHJ1ZQorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbXSwKKyAgICAgICAgKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPTcsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5o
ZXhsaWZ5KCI2YWYyYjIwZjQ5NTY0ZDgzMzUwNWIzODI5NGU3IiksCisgICAgICAgICAgICAgICAg
ICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1Ob25lLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3VuaV9z
dHJlYW1fZ3JlYXNlKHNlbGYpOgorICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkg
YXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBI
M0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoCisgICAgICAgICAgICAgICAgMTQsIGIiXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmVHUkVBU0UgaXMgdGhlIHdvcmQiCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpLCBb
XSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Rfd2l0aF90cmFpbGVycyhzZWxmKToKKyAgICAgICAg
d2l0aCBoM19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIp
OgorICAgICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAg
ICAgICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAg
ICAgICAjIHNlbmQgcmVxdWVzdCB3aXRoIHRyYWlsZXJzCisgICAgICAgICAgICBzdHJlYW1faWQg
PSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxl
ciIsIGIiZm9vIildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAgICAgIGV2ZW50
cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2Qi
LCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9j
YWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJz
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJh
aWxlciIsIGIiZm9vIildLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVh
ZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRh
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
ZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAg
IGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIu
c2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImJhciIpXSwKKyAgICAg
ICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSByZXNwb25zZQorICAgICAgICAgICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVp
Y19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0bWw+
PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZh
bHNlLAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJz
UmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJh
aWxlciIsIGIiYmFyIildLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF91bmlfc3RyZWFtX3R5cGUoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAg
IGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgIyB1
bmtub3duIHN0cmVhbSB0eXBlIDkKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50
LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCAyKQorICAgICAgICAgICAgcXVp
Y19jbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiXHgwOSIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpLCBb
XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChoM19zZXJ2ZXIuX3N0cmVhbS5r
ZXlzKCkpLCBbMl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3Ry
ZWFtWzJdLmJ1ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2
ZXIuX3N0cmVhbVsyXS5zdHJlYW1fdHlwZSwgOSkKKworICAgICAgICAgICAgIyB1bmtub3duIHN0
cmVhbSB0eXBlIDY0LCBvbmUgYnl0ZSBhdCBhIHRpbWUKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9u
YWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA2KQorCisg
ICAgICAgICAgICBxdWljX2NsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDQw
IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQs
IGgzX3NlcnZlciksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3Nl
cnZlci5fc3RyZWFtLmtleXMoKSksIFsyLCA2XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVs2XS5idWZmZXIsIGIiXHg0MCIp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLnN0cmVh
bV90eXBlLCBOb25lKQorCisgICAgICAgICAgICBxdWljX2NsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgYiJceDQwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJh
bnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtleXMoKSksIFsyLCA2XSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uYnVmZmVyLCBiIiIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzJdLnN0cmVhbV90
eXBlLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVs2
XS5idWZmZXIsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9z
dHJlYW1bNl0uc3RyZWFtX3R5cGUsIDY0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfbG9nZ2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiN2M1MjA5MzhlMmNmMjRhZWI3NmI5MTlkOTY3YWZiYzZjNmVlZTMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKQEAgLTAsMCArMSwz
NyBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMu
bG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCisKKworY2xhc3MgUXVpY0xvZ2dlclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9n
Z2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZXIudG9fZGljdCgpLCB7InFsb2df
dmVyc2lvbiI6ICJkcmFmdC0wMSIsICJ0cmFjZXMiOiBbXX0pCisKKyAgICBkZWYgdGVzdF9lbXB0
eV90cmFjZShzZWxmKToKKyAgICAgICAgbG9nZ2VyID0gUXVpY0xvZ2dlcigpCisgICAgICAgIHRy
YWNlID0gbG9nZ2VyLnN0YXJ0X3RyYWNlKGlzX2NsaWVudD1UcnVlLCBvZGNpZD1ieXRlcyg4KSkK
KyAgICAgICAgbG9nZ2VyLmVuZF90cmFjZSh0cmFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGxvZ2dlci50b19kaWN0KCksCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgInFsb2dfdmVyc2lvbiI6ICJkcmFmdC0wMSIsCisgICAgICAgICAgICAgICAgInRy
YWNlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ImNvbW1vbl9maWVsZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9EQ0lEIjog
IjAwMDAwMDAwMDAwMDAwMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZlcmVu
Y2VfdGltZSI6ICIwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAiY29uZmlndXJhdGlvbiI6IHsidGltZV91bml0cyI6ICJ1cyJ9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgImV2ZW50X2ZpZWxkcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicmVsYXRpdmVfdGltZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNh
dGVnb3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRfdHlwZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiLAorICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMiOiBbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ2YW50YWdlX3BvaW50IjogeyJuYW1lIjogImFpb3F1aWMiLCAidHlwZSI6ICJj
bGllbnQifSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICB9LAorICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9wYWNrZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY5YjdhYTlhNjE5NzY3YTdmNWMwMzVmNzczMGZmMzcxZDdkNWY3OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpAQCAtMCwwICsxLDUxMyBA
QAoraW1wb3J0IGJpbmFzY2lpCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9t
IGFpb3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9x
dWljLnF1aWMgaW1wb3J0IHBhY2tldAorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0IGltcG9ydCAo
CisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNLRVRfVFlQRV9SRVRSWSwKKyAgICBR
dWljUHJlZmVycmVkQWRkcmVzcywKKyAgICBRdWljUHJvdG9jb2xWZXJzaW9uLAorICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzLAorICAgIGRlY29kZV9wYWNrZXRfbnVtYmVyLAorICAgIGVuY29k
ZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCisgICAgZ2V0X3JldHJ5X2ludGVncml0eV90YWcs
CisgICAgcHVsbF9xdWljX2hlYWRlciwKKyAgICBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3Ms
CisgICAgcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLAorICAgIHB1c2hfcXVpY19wcmVm
ZXJyZWRfYWRkcmVzcywKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCispCisK
K2Zyb20gLnV0aWxzIGltcG9ydCBsb2FkCisKKworY2xhc3MgUGFja2V0VGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZGVjb2RlX3BhY2tldF9udW1iZXIoc2VsZik6CisgICAgICAgICMgZXhw
ZWN0ZWQgPSAwCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTApLCBp
KQorCisgICAgICAgICMgZXhwZWN0ZWQgPSAxMjgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWNvZGVfcGFja2V0X251bWJlcigwLCA4LCBleHBlY3RlZD0xMjgpLCAyNTYpCisgICAgICAgIGZv
ciBpIGluIHJhbmdlKDEsIDI1Nik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29k
ZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTEyOCksIGkpCisKKyAgICAgICAgIyBleHBl
Y3RlZCA9IDEyOQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVy
KDAsIDgsIGV4cGVjdGVkPTEyOSksIDI1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNv
ZGVfcGFja2V0X251bWJlcigxLCA4LCBleHBlY3RlZD0xMjkpLCAyNTcpCisgICAgICAgIGZvciBp
IGluIHJhbmdlKDIsIDI1Nik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9w
YWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTEyOSksIGkpCisKKyAgICAgICAgIyBleHBlY3Rl
ZCA9IDI1NgorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAxMjgpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3RlZD0yNTYpLCAy
NTYgKyBpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjksIDI1Nik6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTI1Niks
IGkpCisKKyAgICBkZWYgdGVzdF9wdWxsX2VtcHR5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1iIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9
OCkKKworICAgIGRlZiB0ZXN0X3B1bGxfaW5pdGlhbF9jbGllbnQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoImluaXRpYWxfY2xpZW50LmJpbiIpKQorICAgICAgICBoZWFk
ZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklU
SUFMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGJp
bmFzY2lpLnVuaGV4bGlmeSgiODU4YjM5MzY4YjhlM2M2ZSIpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVhZGVyLnRva2VuLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVn
cml0eV90YWcsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5n
dGgsIDEyNjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTgpCisKKyAg
ICBkZWYgdGVzdF9wdWxsX2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1sb2FkKCJpbml0aWFsX3NlcnZlci5iaW4iKSkKKyAgICAgICAgaGVhZGVyID0gcHVs
bF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhl
YWRlci52ZXJzaW9uLCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgUEFDS0VUX1RZUEVfSU5JVElBTCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGJpbmFzY2lpLnVuaGV4bGlm
eSgiMTk1YzY4MzQ0ZTI4ZDQ3OSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50
b2tlbiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFn
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxODQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTgpCisKKyAgICBkZWYgdGVz
dF9wdWxsX3JldHJ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJyZXRy
eS5iaW4iKSkKKyAgICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lk
X2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGVhZGVyLmlzX2xvbmdfaGVhZGVy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBRdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5wYWNrZXRf
dHlwZSwgUEFDS0VUX1RZUEVfUkVUUlkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCJlOWQxNDZkOGQxNGNiMjhlIikp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIuc291cmNlX2Np
ZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgiMGIwYTIwNWE2NDhmY2Y4MmQ4NWYx
MjhiNjdiYmUwODA1M2U2IiksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIGhlYWRlci50b2tlbiwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICAgICAiNDQzOTdhMzVkNjk4MzkzYzEzNGIwOGE5MzI3Mzc4NTlmNDQ2
ZDNhYWRkMDBlZDgxNTQwYzhkOGRlMTcyIgorICAgICAgICAgICAgICAgICI5MDZkM2U3YTExMWI1
MDNmOTcyOWI4OTI4ZTc1MjhmOWE4NmE0NTgxZjllYmI0Y2IzYjUzYzI4MzY2MWUiCisgICAgICAg
ICAgICAgICAgIjg1MzA3NDFhOTkxOTJlZTU2OTE0YzU2MjY5OThlYzBmIgorICAgICAgICAgICAg
KSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVh
ZGVyLmludGVncml0eV90YWcsIGJpbmFzY2lpLnVuaGV4bGlmeSgiZTFhM2M4MGM3OTdlYTQwMWMw
OGZjOWMzNDJhMmQ5MGQiKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVh
ZGVyLnJlc3RfbGVuZ3RoLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCks
IDEyNSkKKworICAgICAgICAjIGNoZWNrIGludGVncml0eQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgZ2V0X3JldHJ5X2ludGVncml0eV90YWcoCisgICAgICAgICAgICAg
ICAgYnVmLmRhdGFfc2xpY2UoMCwgMTA5KSwgYmluYXNjaWkudW5oZXhsaWZ5KCJmYmJkMjE5Yjcz
NjNiNjRiIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgaGVhZGVyLmludGVncml0eV90
YWcsCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3B1bGxfdmVyc2lvbl9uZWdvdGlhdGlvbihz
ZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidmVyc2lvbl9uZWdvdGlhdGlv
bi5iaW4iKSkKKyAgICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lk
X2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGVhZGVyLmlzX2xvbmdfaGVhZGVy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBRdWljUHJvdG9jb2xW
ZXJzaW9uLk5FR09USUFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5wYWNr
ZXRfdHlwZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVzdGluYXRp
b25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoIjlhYWM1YTQ5YmE4N2E4NDkiKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCJm
OTJmNDMzNmZhOTUxYmExIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2Vu
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMjMpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2xvbmdfaGVhZGVyX2RjaWRfdG9vX2xvbmcoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigK
KyAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJj
NmZmMDAwMDE2MTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
NCIKKyAgICAgICAgICAgICAgICAiMDFjNTE0Zjk5ZWM0YmJmMWY3YTMwZjliMGM5NGZlZjcxN2Yx
YzFkMDdmZWMyNGM5OWE4NjRkYTdlZGUiCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9u
ZyAoMjEgYnl0ZXMpIikKKworICAgIGRlZiB0ZXN0X3B1bGxfbG9uZ19oZWFkZXJfc2NpZF90b29f
bG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKAorICAgICAgICAgICAgZGF0YT1iaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImMyZmYwMDAwMTYwMDE1MDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0IgorICAgICAgICAgICAgICAgICIw
MWNmY2VlOTllYzRiYmYxZjdhMzBmOWIwYzk0MTdiOGMyNjNjZGQ4Y2M5NzJhNDQzOWQ2OGE0NjMy
MCIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYs
IGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNl
cHRpb24pLCAiU291cmNlIENJRCBpcyB0b28gbG9uZyAoMjEgYnl0ZXMpIikKKworICAgIGRlZiB0
ZXN0X3B1bGxfbG9uZ19oZWFkZXJfbm9fZml4ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1iIlx4ODBceGZmXHgwMFx4MDBceDExXHgwMFx4MDAiKQorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVsbF9x
dWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAg
IGRlZiB0ZXN0X3B1bGxfbG9uZ19oZWFkZXJfdG9vX3Nob3J0KHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1iIlx4YzBceDAwIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhv
c3RfY2lkX2xlbmd0aD04KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9oZWFkZXIoc2VsZik6
CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInNob3J0X2hlYWRlci5iaW4iKSkKKyAg
ICAgICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudmVyc2lvbiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIDB4NTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCJmNDVhYTdiNTlj
MGUxYWQ2IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgOSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2hvcnRfaGVhZGVyX25v
X2ZpeGVkX2JpdChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDAwIikKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAg
ICAgIHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBhY2tldCBmaXhlZCBiaXQgaXMgemVy
byIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYp
OgorICAgICAgICBkYXRhID0gZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAgICAg
ICAgICAgIGRlc3RpbmF0aW9uX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoIjlhYWM1YTQ5YmE4N2E4
NDkiKSwKKyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJmOTJmNDMz
NmZhOTUxYmExIiksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9WzB4NDU0NzQ3MTYs
IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjVdLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGF0YVsxOl0sIGxvYWQoInZlcnNpb25fbmVnb3RpYXRpb24uYmluIilbMTpd
KQorCisKK2NsYXNzIFBhcmFtc1Rlc3QoVGVzdENhc2UpOgorICAgIG1heERpZmYgPSBOb25lCisK
KyAgICBkZWYgdGVzdF9wYXJhbXMoc2VsZik6CisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgICAgICAgICAiMDEwMjY3MTAwMjEwY2MyZmQ2ZTdkOTdhNTNhYjViZTg1YjI4
ZDc1YzgwMDgwMzAyNDdlNDA0MDQ4MDA1ZmZmIgorICAgICAgICAgICAgImEwNTA0ODAwMGZmZmYw
NjA0ODAwMGZmZmYwODAxMDYwYTAxMDMwYjAxMTkiCisgICAgICAgICkKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1
bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwK
KyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhk
OXpTXHhhYltceGU4WyhceGQ3XFxceDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tl
dF9zaXplPTIwMjAsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisg
ICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUz
NSwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAg
ICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAg
ICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxh
eV9leHBvbmVudD0zLAorICAgICAgICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAg
ICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9w
YXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGJ1Zi5kYXRhKSwgbGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2xl
Z2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICIwMDQ3MDAwMjAwMTBjYzJmZDZlN2Q5N2E1M2FiNWJlODViMjhkNzVjODAwODAwMDgwMDAx
MDYwMDAxMDAwMjYiCisgICAgICAgICAgICAiNzEwMDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAw
MGZmZmYwMDA0MDAwNDgwMDVmZmZhMDAwYTAwMDEwMzAwIgorICAgICAgICAgICAgIjBiMDAwMTE5
MDAwMzAwMDI0N2U0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0
X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3Rv
Y29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cygKKyAgICAgICAgICAgICAgICBpZGxlX3RpbWVvdXQ9MTAwMDAsCisgICAgICAgICAgICAgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiXHhjYy9ceGQ2XHhlN1x4ZDl6U1x4YWJbXHhlOFsoXHhk
N1xcXHg4MFx4MDgiLAorICAgICAgICAgICAgICAgIG1heF9wYWNrZXRfc2l6ZT0yMDIwLAorICAg
ICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9MzkzMjEwLAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9NjU1MzUsCisgICAgICAgICAgICAgICAg
aW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGU9NjU1MzUsCisgICAgICAgICAgICAg
ICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgaW5p
dGlhbF9tYXhfc3RyZWFtc19iaWRpPTYsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3Ry
ZWFtc191bmk9Tm9uZSwKKyAgICAgICAgICAgICAgICBhY2tfZGVsYXlfZXhwb25lbnQ9MywKKyAg
ICAgICAgICAgICAgICBtYXhfYWNrX2RlbGF5PTI1LAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1s
ZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAg
ICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihidWYuZGF0
YSksIGxlbihkYXRhKSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19kaXNhYmxlX2FjdGl2ZV9taWdy
YXRpb24oc2VsZik6CisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjBjMDAiKQor
CisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAg
ICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAg
YnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcywgUXVpY1RyYW5zcG9ydFBhcmFt
ZXRlcnMoZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uPVRydWUpKQorCisgICAgICAgICMgc2VyaWFs
aXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHB1
c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBw
cm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3Rf
cGFyYW1zX2Rpc2FibGVfYWN0aXZlX21pZ3JhdGlvbl9sZWdhY3koc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjAwMDQwMDBjMDAwMCIpCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxs
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3Zl
cnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVycyhkaXNhYmxlX2Fj
dGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249
UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcHJlZmVycmVk
X2FkZHJlc3Moc2VsZik6CisgICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAiMGQzYjhiYTI3Yjg2MTE1MzI0MDA4OTAyMDAwMDAwMDBmMDNjOTFmZmZlNjlhNDU0
MTE1MzEyNjJjNDUxOGQ2IgorICAgICAgICAgICAgIjMwMTNmMGMyODdlZDM1NzNlZmE5MDk1NjAz
NzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAg
IyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMg
PSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgICBR
dWljVHJhbnNwb3J0UGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICBwcmVmZXJyZWRfYWRkcmVz
cz1RdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgaXB2NF9hZGRyZXNz
PSgiMTM5LjE2Mi4xMjMuMTM0IiwgNDQzNSksCisgICAgICAgICAgICAgICAgICAgIGlwdjZfYWRk
cmVzcz0oIjI0MDA6ODkwMjo6ZjAzYzo5MWZmOmZlNjk6YTQ1NCIsIDQ0MzUpLAorICAgICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4
ZmFceDkwXHg5NWA3IiwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2Vu
PWIiRlx4YjJceGUwLUVIXHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMDApCisgICAgICAgIHB1c2hfcXVpY190cmFu
c3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3ByZWZl
cnJlZF9hZGRyZXNzX2xlZ2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICIwMDNmMDAwZDAwM2I4YmEyN2I4NjExNTMyNDAwODkwMjAwMDAw
MDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYiCisgICAgICAgICAgICAiMmM0NTE4ZDYzMDEzZjBj
Mjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4IgorICAgICAg
ICAgICAgImVjYjQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRf
cGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9j
b2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJz
KAorICAgICAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzPVF1aWNQcmVmZXJyZWRBZGRyZXNz
KAorICAgICAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIxMzkuMTYyLjEyMy4xMzQiLCA0
NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNzPSgiMjQwMDo4OTAyOjpmMDNj
OjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25f
aWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDciLAorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAtRUhceDBiXHhh
NmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMo
CisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
ZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc191bmtub3duKHNlbGYpOgorICAgICAg
ICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KCI4MDAwZmYwMDAxMDAiKQorCisgICAgICAgICMg
cGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0g
cHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2Nv
bF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcywgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoKSkKKwor
ICAgIGRlZiB0ZXN0X3BhcmFtc191bmtub3duX2xlZ2FjeShzZWxmKToKKyAgICAgICAgIyBmYi5t
dmZzdC5uZXQgc2VuZHMgYSBwcm9wcmlldGFyeSBwYXJhbWV0ZXIgNjUyODAKKyAgICAgICAgZGF0
YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDY0MDAwNTAwMDQ4MDAxMDQw
MDAwMDYwMDA0ODAwMTA0MDAwMDA3MDAwNDgwMDEwNDAwMDAwNDAwMDQ4MDEiCisgICAgICAgICAg
ICAiMDAwMDAwMDA4MDAwOGMwMDAwMDAwZmZmZmZmZmYwMDA5MDAwOGMwMDAwMDAwZmZmZmZmZmYw
MDAxMDAwNDgwIgorICAgICAgICAgICAgIjAwZWE2MDAwMGEwMDAxMDMwMDAzMDAwMjUwMDAwMDAy
MDAxMDYxNjE2MTYxNjI2MjYyNjI2MzYzNjM2MzY0NiIKKyAgICAgICAgICAgICI0NjQ2NGZmMDAw
MDAxMDAiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJz
aW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAorICAg
ICAgICAgICAgICAgIGlkbGVfdGltZW91dD02MDAwMCwKKyAgICAgICAgICAgICAgICBzdGF0ZWxl
c3NfcmVzZXRfdG9rZW49YiJhYWFhYmJiYmNjY2NkZGRkIiwKKyAgICAgICAgICAgICAgICBtYXhf
cGFja2V0X3NpemU9NDA5NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTEwNDg1
NzYsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02
NjU2MCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90
ZT02NjU2MCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9NjY1
NjAsCisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpPTQyOTQ5NjcyOTUs
CisgICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk9NDI5NDk2NzI5NSwKKyAg
ICAgICAgICAgICAgICBhY2tfZGVsYXlfZXhwb25lbnQ9MywKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjRfb25seShzZWxmKToK
KyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICI4YmEyN2I4
NjExNTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjYyYzQ1MThkNjMwMTMi
CisgICAgICAgICAgICAiZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQz
ZTVjNmU3ZDQ4ZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1
aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRk
cmVzcygKKyAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIxMzkuMTYyLjEyMy4xMzQiLCA0
NDM1KSwKKyAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5
NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAt
RUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcHJlZmVycmVk
X2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAg
ICBkZWYgdGVzdF9wcmVmZXJyZWRfYWRkcmVzc19pcHY2X29ubHkoc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAiMDAwMDAwMDAwMDAwMjQwMDg5
MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUzMTI2MmM0NTE4ZDYzMDEzIgorICAgICAgICAg
ICAgImYwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZiMmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVj
YjQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWRhdGEpCisgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzID0gcHVsbF9xdWljX3ByZWZlcnJl
ZF9hZGRyZXNzKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBy
ZWZlcnJlZF9hZGRyZXNzLAorICAgICAgICAgICAgUXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAg
ICAgICAgICAgICAgaXB2NF9hZGRyZXNzPU5vbmUsCisgICAgICAgICAgICAgICAgaXB2Nl9hZGRy
ZXNzPSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbl9pZD1iImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5
MFx4OTVgNyIsCisgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiRlx4YjJc
eGUwLUVIXHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1s
ZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVzcyhidWYsIHByZWZl
cnJlZF9hZGRyZXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQor
CisKK2NsYXNzIEZyYW1lVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lKHNl
bGYpOgorICAgICAgICBkYXRhID0gYiJceDAwXHgwMlx4MDBceDAwIgorCisgICAgICAgICMgcGFy
c2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRl
bGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCBy
YW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEp
CisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF9vbmVfcmFuZ2Uoc2VsZik6CisgICAgICAg
IGRhdGEgPSBiIlx4MDJceDAyXHgwMVx4MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9
IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlz
dChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFt
ZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZV8yKHNlbGYp
OgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgwMFx4MDMiCisKKyAgICAgICAg
IyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNl
dCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNCksIHJhbmdlKDUsIDYpXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAg
ICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVz
aF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF9vbmVfcmFu
Z2VfMyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGIiXHgwNVx4MDJceDAxXHgwMFx4MDFceDAyIgor
CisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAg
ICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpLCByYW5nZSg1LCA2
KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAg
cGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dp
dGhfdHdvX3JhbmdlcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGIiXHgwNFx4MDJceDAyXHgwMFx4
MDBceDAwXHgwMFx4MDAiCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIo
ZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJh
bWUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMSksIHJhbmdlKDIsIDMpLCByYW5nZSg0LCA1KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1Ziwg
cmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRh
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
M2UyMzExZDk5MTIwZjFlN2I0YTQyMGJhNWQxYzRlYzZmN2NhZDg5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkKQEAgLTAsMCArMSw1
NjkgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5xdWlj
LmNyeXB0byBpbXBvcnQgQ3J5cHRvUGFpcgorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0IGltcG9y
dCAoCisgICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUws
CisgICAgUEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIFF1aWNQ
cm90b2NvbFZlcnNpb24sCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBv
cnQgKAorICAgIFF1aWNQYWNrZXRCdWlsZGVyLAorICAgIFF1aWNQYWNrZXRCdWlsZGVyU3RvcCwK
KyAgICBRdWljU2VudFBhY2tldCwKKykKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IEVwb2NoCisK
KworZGVmIGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1GYWxzZSk6CisgICAgcmV0dXJuIFF1aWNQ
YWNrZXRCdWlsZGVyKAorICAgICAgICBob3N0X2NpZD1ieXRlcyg4KSwKKyAgICAgICAgaXNfY2xp
ZW50PWlzX2NsaWVudCwKKyAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICBwZWVyX2Np
ZD1ieXRlcyg4KSwKKyAgICAgICAgcGVlcl90b2tlbj1iIiIsCisgICAgICAgIHNwaW5fYml0PUZh
bHNlLAorICAgICAgICB2ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUsCisgICAg
KQorCisKK2RlZiBjcmVhdGVfY3J5cHRvKCk6CisgICAgY3J5cHRvID0gQ3J5cHRvUGFpcigpCisg
ICAgY3J5cHRvLnNldHVwX2luaXRpYWwoYnl0ZXMoOCksIGlzX2NsaWVudD1UcnVlLCB2ZXJzaW9u
PVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgcmV0dXJuIGNyeXB0bworCisKK2Ns
YXNzIFF1aWNQYWNrZXRCdWlsZGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbG9uZ19o
ZWFkZXJfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisg
ICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRf
cGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRh
dGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYWNrZXRzLCBbXSkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDApCisKKyAgICBkZWYg
dGVzdF9sb25nX2hlYWRlcl9wYWRkaW5nKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRl
X2J1aWxkZXIoaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQorCisgICAgICAgICMgSU5JVElBTCwgZnVsbHkgcGFkZGVkCisgICAgICAgIGJ1aWxkZXIuc3Rh
cnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1
ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1
Zi5wdXNoX2J5dGVzKGJ5dGVzKDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRl
ci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNo
ZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNo
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2No
LklOSVRJQUwsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAg
ICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlz
X2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0w
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAor
ICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRl
ZiB0ZXN0X2xvbmdfaGVhZGVyX2luaXRpYWxfY2xpZW50XzIoc2VsZik6CisgICAgICAgIGJ1aWxk
ZXIgPSBjcmVhdGVfYnVpbGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3Jl
YXRlX2NyeXB0bygpCisKKyAgICAgICAgIyBJTklUSUFMLCBmdWxsIGxlbmd0aAorICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0
X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRl
cygxMDApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5
KQorCisgICAgICAgICMgSU5JVElBTCwgZW1wdHkKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
YnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAg
ICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtc1swXSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRh
dGFncmFtc1sxXSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBwYWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAg
ICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNp
dGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAg
cGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2Vu
dF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVpY1Nl
bnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9
VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0s
CisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCisKKyAgICBkZWYgdGVzdF9sb25nX2hl
YWRlcl9pbml0aWFsX3NlcnZlcihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWls
ZGVyKCkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgIyBJTklU
SUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDEwMCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBJ
TklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9J
TklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9p
c19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMs
IHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBd
KSwgMTQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAg
ICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBl
PVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTQ1
LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAg
ICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tl
dF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRlcl90aGVuX3Nob3J0X2hlYWRl
cihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgIyBJTklUSUFMLCBmdWxsIGxlbmd0aAor
ICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNl
LCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUu
Q1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19m
bGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lz
X2VtcHR5KQorCisgICAgICAgICMgSU5JVElBTCwgZW1wdHkKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBPTkVfUlRULCBmdWxs
IGxlbmd0aAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRU
LCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxp
Z2h0X3NwYWNlLCAxMjUzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNG
cmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxk
ZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVp
bGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBPTkVfUlRULCBlbXB0eQorICAgICAg
ICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAj
IGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZs
dXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklO
SVRJQUwsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAg
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Ny
eXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAor
ICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAg
ICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9
RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAg
ICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251
bWJlcj0xLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVf
UlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxk
ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCisK
KyAgICBkZWYgdGVzdF9sb25nX2hlYWRlcl90aGVuX2xvbmdfaGVhZGVyKHNlbGYpOgorICAgICAg
ICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5
cHRvKCkKKworICAgICAgICAjIElOSVRJQUwKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQo
UEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRl
ci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0
ZXMoYnl0ZXMoMTk5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9p
c19lbXB0eSkKKworICAgICAgICAjIEhBTkRTSEFLRQorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9IQU5EU0hBS0UsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDk5MykKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoMjk5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBh
Y2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNjY2KQorICAgICAgICBidWYg
PSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIu
cGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRh
dGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXNbMF0pLCA5MTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBw
YWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAg
ICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGlu
Zz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFj
a2V0X3R5cGU9UEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9i
eXRlcz0yNDQsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSEFORFNIQUtFLAorICAgICAg
ICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNr
X2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRy
dWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAgICAgICAgICAg
ICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgICAgICAgICAgICAg
ICAgICBzZW50X2J5dGVzPTM0MywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MiwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz0zMjcsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDMpCisKKyAgICBkZWYgdGVzdF9z
aG9ydF9oZWFkZXJfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRl
cigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1aWxkZXIu
c3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNo
ZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNo
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbXMsIFtdKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRl
ZiB0ZXN0X3Nob3J0X2hlYWRlcl9wYWRkaW5nKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3Jl
YXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAg
ICAjIE9ORV9SVFQsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBB
Q0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWls
ZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIu
c3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRh
Z3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGRhdGFncmFtc1swXSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9z
aG9ydF9oZWFkZXJfbWF4X2ZsaWdodF9ieXRlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IG1heF9mbGlnaHRfYnl0ZXMgbGltaXRzIHNlbnQgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAg
IGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9i
eXRlcyA9IDEwMDAKKworICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAg
ICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA5NzMp
CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8p
CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9z
cGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkp
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3Ap
OgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwg
Y3J5cHRvKQorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNS
WVBUTykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
MTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAg
ICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2Zs
aWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisg
ICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1Q
QUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEwMDAs
CisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAg
ICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tl
dF9udW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X2ZsaWdodF9ieXRl
c196ZXJvKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyA9IDAg
b25seSBhbGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBDaGVjayBD
UllQVE8gaXMgbm90IGFsbG93ZWQuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3Jl
YXRlX2J1aWxkZXIoKQorICAgICAgICBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMgPSAwCisKKyAg
ICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICAgICAgYnVpbGRl
ci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKworICAgICAgICAjIGNoZWNrIGRh
dGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMCkKKworICAgICAgICAjIGNo
ZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1i
ZXIsIDApCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X2ZsaWdodF9ieXRlc196ZXJv
X2FjayhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIG1heF9mbGlnaHRfYnl0ZXMgPSAwIG9u
bHkgYWxsb3dzIEFDS3MgYW5kIENPTk5FQ1RJT05fQ0xPU0UuCisKKyAgICAgICAgQ2hlY2sgQUNL
IGlzIGFsbG93ZWQuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxk
ZXIoKQorICAgICAgICBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMgPSAwCisKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFD
S0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQUNLKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyg2NCkp
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3Ap
OgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwg
Y3J5cHRvKQorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNS
WVBUTykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
OTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGln
aHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9RmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9
UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz05MiwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAg
ICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0
X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfdG90YWxfYnl0ZXNf
MShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIG1heF90b3RhbF9ieXRlcyBkb2Vzbid0IGFs
bG93IGFueSBwYWNrZXRzLgorICAgICAgICAiIiIKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9i
dWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfdG90YWxfYnl0ZXMgPSAxMQorCisgICAgICAg
IGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0X3No
b3J0X2hlYWRlcl9tYXhfdG90YWxfYnl0ZXNfMihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IG1heF90b3RhbF9ieXRlcyBhbGxvd3MgYSBzaG9ydCBwYWNrZXQuCisgICAgICAgICIiIgorICAg
ICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3Rh
bF9ieXRlcyA9IDgwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDc3
MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBU
TykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0
X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0
eSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3Rv
cCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRU
LCBjcnlwdG8pCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1z
LCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtc1sw
XSksIDgwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMs
CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAg
ICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGlu
X2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUs
CisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlw
ZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTgw
MCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAg
ICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNr
ZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRl
c18zKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBi
dWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDIwMDAKKworICAgICAgICBjcnlwdG8gPSBjcmVhdGVf
Y3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVf
UlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdf
ZmxpZ2h0X3NwYWNlLCAxMjUzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1
aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVy
LnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxk
ZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tF
VF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVy
LnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDY5MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0
X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisKKyAgICAgICAgIyBjaGVjayBk
YXRhZ3JhbXMKKyAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtc1swXSksIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGRhdGFncmFtc1sxXSksIDcyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05F
X1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9NzIwLAorICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAyKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmFuZ2VzZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGVzdF9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQwOGM4YWM2YzUyMzZkMTM2MzQ4YWQyNGFi
ZjlmYTZkODU5MzhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
cmFuZ2VzZXQucHkKQEAgLTAsMCArMSwyMzcgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RD
YXNlCisKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNldAorCisKK2Ns
YXNzIFJhbmdlU2V0VGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9kdXBs
aWNhdGUoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgZGVmIHRlc3Rf
YWRkX3NpbmdsZV9vcmRlcmVkKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkK
KworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKwor
ICAgICAgICByYW5nZXNldC5hZGQoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9zaW5nbGVfbWVyZ2Uo
c2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0
LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSksIHJhbmdlKDIsIDMpXSkKKworICAgICAg
ICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDMpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9zaW5nbGVfcmV2ZXJzZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgyLCAz
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgxLCAzKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAzKV0p
CisKKyAgICBkZWYgdGVzdF9hZGRfcmFuZ2Vfb3JkZXJlZChzZWxmKToKKyAgICAgICAgcmFuZ2Vz
ZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDIsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCA0KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA2KV0pCisKKyAgICBk
ZWYgdGVzdF9hZGRfcmFuZ2VfbWVyZ2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMiwgMykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDUpXSkKKworICAg
IGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5nZXNl
dC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jh
bmdlKDAsIDIpLCByYW5nZSgzLCA1KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA1KV0pCisK
KyAgICBkZWYgdGVzdF9hZGRfcmFuZ2Vfb3ZlcmxhcF8yKHNlbGYpOgorICAgICAgICByYW5nZXNl
dCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMiwgNCkKKyAgICAgICAgcmFu
Z2VzZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMTIpCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxNiwgMTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDEy
KSwgcmFuZ2UoMTYsIDE4KV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxLCAx
NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDE1
KSwgcmFuZ2UoMTYsIDE4KV0pCisKKyAgICBkZWYgdGVzdF9hZGRfcmFuZ2VfcmV2ZXJzZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDYsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSg2
LCA4KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0pCisKKyAgICBk
ZWYgdGVzdF9hZGRfcmFuZ2VfdW5vcmRlcmVkX2NvbnRpZ3VvdXMoc2VsZik6CisgICAgICAgIHJh
bmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCg0LCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDQsIDYpXSkKKworICAgICAgICByYW5nZXNldC5h
ZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jhbmdl
KDAsIDYpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfc3BhcnNlKHNlbGYp
OgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQo
MCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAs
IDIpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNiwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSg2LCA4KV0pCisKKyAgICAg
ICAgcmFuZ2VzZXQuYWRkKDMsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5n
ZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkKKworICAgIGRl
ZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKyAg
ICAgICAgcmFuZ2VzZXQuYWRkKDAsIDEwKQorICAgICAgICByYW5nZXNldC5hZGQoMjAsIDMwKQor
CisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgzLCAxMCksIHJhbmdlKDIwLCAzMCldKQorCisgICAg
ZGVmIHRlc3Rfc3VidHJhY3Rfbm9fY2hhbmdlKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDUsIDEwKQorICAgICAgICByYW5nZXNldC5h
ZGQoMTUsIDIwKQorICAgICAgICByYW5nZXNldC5hZGQoMjUsIDMwKQorCisgICAgICAgIHJhbmdl
c2V0LnN1YnRyYWN0KDAsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSg1LCAxMCksIHJhbmdlKDE1LCAyMCksIHJhbmdlKDI1LCAzMCldKQorCisgICAg
ICAgIHJhbmdlc2V0LnN1YnRyYWN0KDEwLCAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMw
KV0pCisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdF9vdmVybGFwKHNlbGYpOgorICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDQpCisgICAgICAgIHJh
bmdlc2V0LmFkZCg2LCA4KQorICAgICAgICByYW5nZXNldC5hZGQoMTAsIDIwKQorICAgICAgICBy
YW5nZXNldC5hZGQoMzAsIDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgbGlzdChyYW5nZXNldCksIFtyYW5nZSgxLCA0KSwgcmFuZ2UoNiwgOCksIHJhbmdlKDEwLCAy
MCksIHJhbmdlKDMwLCA0MCldCisgICAgICAgICkKKworICAgICAgICByYW5nZXNldC5zdWJ0cmFj
dCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChyYW5n
ZXNldCksIFtyYW5nZSgyLCA0KSwgcmFuZ2UoNiwgOCksIHJhbmdlKDEwLCAyMCksIHJhbmdlKDMw
LCA0MCldCisgICAgICAgICkKKworICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgzLCAxMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDMpLCByYW5n
ZSgxMSwgMjApLCByYW5nZSgzMCwgNDApXSkKKworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X3NwbGl0
KHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKyAgICAgICAgcmFuZ2VzZXQu
YWRkKDAsIDEwKQorICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgyLCA1KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDUsIDEwKV0p
CisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgYm9vbChSYW5nZVNldCgpKQor
CisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gcmFuZ2VzZXQpCisKKyAgICAgICAg
cmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoMCBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgxIGluIHJhbmdlc2V0
KQorCisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3JhbmdlKDAsIDEpLCByYW5nZSgzLCA2
KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIGluIHJhbmdlc2V0KQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMiBp
biByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDMgaW4gcmFuZ2VzZXQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSg0IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoNSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSg2IGluIHJhbmdlc2V0
KQorCisgICAgZGVmIHRlc3RfZXEoc2VsZik6CisgICAgICAgIHIwID0gUmFuZ2VTZXQoW3Jhbmdl
KDAsIDEpXSkKKyAgICAgICAgcjEgPSBSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQp
XSkKKyAgICAgICAgcjIgPSBSYW5nZVNldChbcmFuZ2UoMywgNCksIHJhbmdlKDEsIDIpXSkKKwor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocjAgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocjAgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjAgPT0gMCkKKworICAgICAg
ICBzZWxmLmFzc2VydFRydWUocjEgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjEg
PT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMSA9PSByMikKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShyMSA9PSAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMiA9PSByMikK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIxKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHIyID09IHIwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIyID09IDApCisKKyAgICBk
ZWYgdGVzdF9sZW4oc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihyYW5nZXNldCksIDApCisKKyAgICAgICAgcmFuZ2VzZXQg
PSBSYW5nZVNldChbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihy
YW5nZXNldCksIDEpCisKKyAgICBkZWYgdGVzdF9wb3Aoc2VsZik6CisgICAgICAgIHJhbmdlc2V0
ID0gUmFuZ2VTZXQoW3JhbmdlKDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHIgPSByYW5n
ZXNldC5zaGlmdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgcmFuZ2UoMSwgMikpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgzLCA0KV0pCisK
KyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KFty
YW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIo
cmFuZ2VzZXQpLCAiUmFuZ2VTZXQoW3JhbmdlKDEsIDIpLCByYW5nZSgzLCA0KV0pIikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JlY292ZXJ5LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMxM2Y4ZmM4YTRjNDBmYjY0MzEx
NDRiOGMwZmJiZGI3YTgwYmE1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3JlY292ZXJ5LnB5CkBAIC0wLDAgKzEsMjI3IEBACitpbXBvcnQgbWF0aAorZnJvbSB1
bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljIGltcG9ydCB0bHMKK2Zyb20g
YWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUEFDS0VUX1RZUEVfSU5JVElBTCwgUEFDS0VUX1RZ
UEVfT05FX1JUVAorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNT
ZW50UGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKK2Zy
b20gYWlvcXVpYy5xdWljLnJlY292ZXJ5IGltcG9ydCAoCisgICAgUXVpY1BhY2tldFBhY2VyLAor
ICAgIFF1aWNQYWNrZXRSZWNvdmVyeSwKKyAgICBRdWljUGFja2V0U3BhY2UsCisgICAgUXVpY1J0
dE1vbml0b3IsCispCisKKworZGVmIHNlbmRfcHJvYmUoKToKKyAgICBwYXNzCisKKworY2xhc3Mg
UXVpY1BhY2tldFBhY2VyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICBzZWxmLnBhY2VyID0gUXVpY1BhY2tldFBhY2VyKCkKKworICAgIGRlZiB0ZXN0X25vX21l
YXN1cmVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5l
eHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9z
ZW5kKG5vdz0wLjApCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0
X3NlbmRfdGltZShub3c9MC4wKSkKKyAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2Vu
ZChub3c9MC4wKQorCisgICAgZGVmIHRlc3Rfd2l0aF9tZWFzdXJlbWVudChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MC4wKSkK
KyAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MC4wKQorCisgICAgICAg
IHNlbGYucGFjZXIudXBkYXRlX3JhdGUoY29uZ2VzdGlvbl93aW5kb3c9MTI4MDAwMCwgc21vb3Ro
ZWRfcnR0PTAuMDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5idWNrZXRf
bWF4LCAwLjAwMDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5idWNrZXRf
dGltZSwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGFjZXIucGFja2V0X3Rp
bWUsIDAuMDAwMDUpCisKKyAgICAgICAgIyAxNiBwYWNrZXRzCisgICAgICAgIGZvciBpIGluIHJh
bmdlKDE2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTEuMCkpCisgICAgICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9z
ZW5kKG5vdz0xLjApCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VsZi5wYWNlci5u
ZXh0X3NlbmRfdGltZShub3c9MS4wKSwgMS4wMDAwNSkKKworICAgICAgICAjIDIgcGFja2V0cwor
ICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l
KHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMDUpKQorICAgICAgICAgICAgc2Vs
Zi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAwNSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDA1KSwgMS4w
MDAxKQorCisgICAgICAgICMgMSBwYWNrZXQKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2Vs
Zi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSkKKyAgICAgICAgc2VsZi5wYWNlci51
cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAxKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVx
dWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMSksIDEuMDAwMTUpCisKKyAg
ICAgICAgIyAyIHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDE1
KSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTEuMDAwMTUp
CisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGlt
ZShub3c9MS4wMDAxNSksIDEuMDAwMikKKworCitjbGFzcyBRdWljUGFja2V0UmVjb3ZlcnlUZXN0
KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuSU5JVElBTF9T
UEFDRSA9IFF1aWNQYWNrZXRTcGFjZSgpCisgICAgICAgIHNlbGYuSEFORFNIQUtFX1NQQUNFID0g
UXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFID0gUXVpY1BhY2tl
dFNwYWNlKCkKKworICAgICAgICBzZWxmLnJlY292ZXJ5ID0gUXVpY1BhY2tldFJlY292ZXJ5KAor
ICAgICAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dD1GYWxzZSwgc2VuZF9wcm9iZT1zZW5k
X3Byb2JlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5zcGFjZXMgPSBbCisgICAg
ICAgICAgICBzZWxmLklOSVRJQUxfU1BBQ0UsCisgICAgICAgICAgICBzZWxmLkhBTkRTSEFLRV9T
UEFDRSwKKyAgICAgICAgICAgIHNlbGYuT05FX1JUVF9TUEFDRSwKKyAgICAgICAgXQorCisgICAg
ZGVmIHRlc3RfZGlzY2FyZF9zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5kaXNj
YXJkX3NwYWNlKHNlbGYuSU5JVElBTF9TUEFDRSkKKworICAgIGRlZiB0ZXN0X29uX2Fja19yZWNl
aXZlZF9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBhY2tl
dCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAg
ICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgcGFja2V0X251bWJlcj0w
LAorICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgIHNlbnRfdGltZT0wLjAsCisgICAgICAg
ICkKKyAgICAgICAgc3BhY2UgPSBzZWxmLk9ORV9SVFRfU1BBQ0UKKworICAgICAgICAjIMKgcGFj
a2V0IHNlbnQKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNw
YWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxp
Z2h0LCAxMjgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdf
aW5fZmxpZ2h0LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3Bh
Y2tldHMpLCAxKQorCisgICAgICAgICMgcGFja2V0IGFjaydkCisgICAgICAgIHNlbGYucmVjb3Zl
cnkub25fYWNrX3JlY2VpdmVkKAorICAgICAgICAgICAgc3BhY2UsIGFja19yYW5nZXNldD1SYW5n
ZVNldChbcmFuZ2UoMCwgMSldKSwgYWNrX2RlbGF5PTAuMCwgbm93PTEwLjAKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0
LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAw
KQorCisgICAgICAgICMgY2hlY2sgUlRUCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnJl
Y292ZXJ5Ll9ydHRfaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5y
ZWNvdmVyeS5fcnR0X2xhdGVzdCwgMTAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LnJlY292ZXJ5Ll9ydHRfbWluLCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
cmVjb3ZlcnkuX3J0dF9zbW9vdGhlZCwgMTAuMCkKKworICAgIGRlZiB0ZXN0X29uX2Fja19yZWNl
aXZlZF9ub25fYWNrX2VsaWNpdGluZyhzZWxmKToKKyAgICAgICAgcGFja2V0ID0gUXVpY1NlbnRQ
YWNrZXQoCisgICAgICAgICAgICBlcG9jaD10bHMuRXBvY2guT05FX1JUVCwKKyAgICAgICAgICAg
IGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAg
ICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVt
YmVyPTAsCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAg
ICAgICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTEyMy40NSwK
KyAgICAgICAgKQorICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAg
ICMgwqBwYWNrZXQgc2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBh
Y2tldCwgc3BhY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRl
c19pbl9mbGlnaHQsIDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2Vs
aWNpdGluZ19pbl9mbGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNl
LnNlbnRfcGFja2V0cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2Vs
Zi5yZWNvdmVyeS5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdl
c2V0PVJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAg
ICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9m
bGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19p
bl9mbGlnaHQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFj
a2V0cyksIDApCisKKyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZWxmLnJlY292ZXJ5Ll9ydHRfaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X2xhdGVzdCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9taW4sIG1hdGguaW5mKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9zbW9vdGhlZCwgMC4wKQorCisgICAgZGVmIHRlc3Rf
b25fcGFja2V0X2xvc3RfY3J5cHRvKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAg
aW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAg
ICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTAsCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAg
ICAgICAgc2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwKKyAgICAg
ICAgKQorICAgICAgICBzcGFjZSA9IHNlbGYuSU5JVElBTF9TUEFDRQorCisgICAgICAgIHNlbGYu
cmVjb3Zlcnkub25fcGFja2V0X3NlbnQocGFja2V0LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMSkKKworICAgICAgICBz
ZWxmLnJlY292ZXJ5Ll9kZXRlY3RfbG9zcyhzcGFjZSwgbm93PTEuMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMCkKKworCitjbGFzcyBR
dWljUnR0TW9uaXRvclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X21vbml0b3Ioc2VsZik6
CisgICAgICAgIG1vbml0b3IgPSBRdWljUnR0TW9uaXRvcigpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0xMCwgbm93PTEwMDApKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMsIFsxMCwgMC4wLCAwLjAsIDAu
MCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAg
ICAgICAjIG5vdCB0YWtlbiBpbnRvIGFjY291bnQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSht
b25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0xMSwgbm93PTEwMDApKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMsIFsxMCwgMC4wLCAwLjAsIDAuMCwgMC4wXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAxMSwgMC4w
LCAwLjAsIDAuMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5fcmVhZHkpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0x
Miwgbm93PTEwMDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMs
IFsxMCwgMTEsIDEyLCAwLjAsIDAuMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5fcmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNy
ZWFzaW5nKHJ0dD0xMywgbm93PTEwMDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0
b3IuX3NhbXBsZXMsIFsxMCwgMTEsIDEyLCAxMywgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShtb25pdG9yLl9yZWFkeSkKKworICAgICAgICAjIHdlIG5vdyBoYXZlIGVub3VnaCBzYW1w
bGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhy
dHQ9MTQsIG5vdz0xMDA0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1w
bGVzLCBbMTAsIDExLCAxMiwgMTMsIDE0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vbml0
b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5j
cmVhc2luZyhydHQ9MjAsIG5vdz0xMDA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25p
dG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlz
X3J0dF9pbmNyZWFzaW5nKHJ0dD0zMCwgbm93PTEwMDYpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1v
bml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTQwLCBub3c9MTAwNykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NTAsIG5vdz0xMDA4KSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD02MCwgbm93PTEwMDkp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMSkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTcwLCBu
b3c9MTAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAy
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhy
dHQ9ODAsIG5vdz0xMDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNy
ZWFzZXMsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNy
ZWFzaW5nKHJ0dD05MCwgbm93PTEwMTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0
b3IuX2luY3JlYXNlcywgNCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUobW9uaXRvci5pc19y
dHRfaW5jcmVhc2luZyhydHQ9MTAwLCBub3c9MTAxMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobW9uaXRvci5faW5jcmVhc2VzLCA1KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfcmV0cnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNzZmMDIzYmY5M2RhNGM2OWViOWFhZDNlMTk2OGJmYWZmMzdhMzRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKQEAgLTAsMCArMSwzMCBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMucmV0
cnkgaW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorCisKK2NsYXNzIFF1aWNSZXRyeVRva2Vu
SGFuZGxlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3JldHJ5X3Rva2VuKHNlbGYpOgor
ICAgICAgICBhZGRyID0gKCIxMjcuMC4wLjEiLCAxMjM0KQorICAgICAgICBjaWQgPSBiIlx4MDhc
eDA3XHgwNlwwNVx4MDRceDAzXHgwMlx4MDEiCisKKyAgICAgICAgaGFuZGxlciA9IFF1aWNSZXRy
eVRva2VuSGFuZGxlcigpCisKKyAgICAgICAgIyBjcmVhdGUgdG9rZW4KKyAgICAgICAgdG9rZW4g
PSBoYW5kbGVyLmNyZWF0ZV90b2tlbihhZGRyLCBjaWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNO
b3ROb25lKHRva2VuKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSBvaworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIudmFsaWRhdGVfdG9rZW4oYWRkciwgdG9rZW4pLCBjaWQp
CisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIGVtcHR5CisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlk
YXRlX3Rva2VuKGFkZHIsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHN0cihjbS5leGNlcHRpb24pLCAiQ2lwaGVydGV4dCBsZW5ndGggbXVzdCBiZSBlcXVhbCB0
byBrZXkgc2l6ZS4iCisgICAgICAgICkKKworICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gd3Jv
bmcgYWRkcmVzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFz
IGNtOgorICAgICAgICAgICAgaGFuZGxlci52YWxpZGF0ZV90b2tlbigoIjEuMi4zLjQiLCAxMjM0
NSksIHRva2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAi
UmVtb3RlIGFkZHJlc3MgZG9lcyBub3QgbWF0Y2guIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3N0cmVhbS5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNTM3YWUyZWQxMmI2ZjZjMDQyZDA5OTA0ZWNmYjRmMGMyZGY1N2VmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5CkBAIC0w
LDAgKzEsNDQ2IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1
aWMucXVpYy5ldmVudHMgaW1wb3J0IFN0cmVhbURhdGFSZWNlaXZlZAorZnJvbSBhaW9xdWljLnF1
aWMucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tl
dF9idWlsZGVyIGltcG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSBhaW9xdWljLnF1aWMuc3Ry
ZWFtIGltcG9ydCBRdWljU3RyZWFtCisKKworY2xhc3MgUXVpY1N0cmVhbVRlc3QoVGVzdENhc2Up
OgorICAgIGRlZiB0ZXN0X3JlY3ZfZW1wdHkoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNT
dHJlYW0oc3RyZWFtX2lkPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFt
Ll9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVh
bS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3Jl
Y3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAgICAgICMgZW1wdHkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1i
IiIpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3Zf
YnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2
X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZm
ZXJfc3RhcnQsIDApCisKKyAgICBkZWYgdGVzdF9yZWN2X29yZGVyZWQoc2VsZik6CisgICAgICAg
IHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCisKKyAgICAgICAgIyBhZGQgZGF0YSBh
dCBzdGFydAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFk
ZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKKyAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFt
PUZhbHNlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICAgICAgIyBhZGQgbW9yZSBk
YXRhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0NSIsIGVuZF9zdHJlYW09RmFs
c2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5
dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMTYpCisKKyAgICAgICAgIyBhZGQgZGF0YSBhbmQg
ZmluCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MTYsIGRhdGE9YiI2Nzg5MDEyMyIsIGZpbj1UcnVl
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjY3ODkwMTIzIiwgZW5k
X3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDI0KQorCisgICAgZGVmIHRlc3Rf
cmVjdl91bm9yZGVyZWQoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFt
X2lkPTApCisKKyAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgOAorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUo
b2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIpKSwgTm9uZQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwg
YiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMDg5MDEyMzQ1IgorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW3Jhbmdl
KDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9z
dGFydCwgMCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFt
ZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJl
Y2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFt
X2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFt
Ll9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVh
bS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3Jl
Y3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3Zfb2Zmc2V0X29ubHkoc2Vs
Zik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCisKKyAgICAgICAg
IyBhZGQgZGF0YSBhdCBvZmZzZXQgMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5h
ZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIikpLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkKKwor
ICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiIiKSksIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBieXRlcyhzdHJlYW0u
X3JlY3ZfYnVmZmVyKSwgYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3Jhbmdlcyks
IFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQs
IDApCisKKyAgICBkZWYgdGVzdF9yZWN2X2FscmVhZHlfZnVsbHlfY29uc3VtZWQoc2VsZik6Cisg
ICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCisKKyAgICAgICAgIyBhZGQg
ZGF0YSBhdCBvZmZzZXQgMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2
NyIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICAgICAgIyBh
ZGQgZGF0YSBhZ2FpbiBhdCBvZmZzZXQgMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9
YiIwMTIzNDU2NyIpKSwgTm9uZQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ynl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCA4KQorCisgICAgZGVmIHRlc3RfcmVjdl9hbHJl
YWR5X3BhcnRpYWxseV9jb25zdW1lZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2
NyIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IikpLAorICAgICAgICAgICAgU3Ry
ZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0NSIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVh
bV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVh
bS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJl
YW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9y
ZWN2X2J1ZmZlcl9zdGFydCwgMTYpCisKKyAgICBkZWYgdGVzdF9yZWN2X2ZpbihzZWxmKToKKyAg
ICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUo
b2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5h
ZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiLCBmaW49
VHJ1ZSkpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0NSIs
IGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisKKyAgICBkZWYgdGVz
dF9yZWN2X2Zpbl9vdXRfb2Zfb3JkZXIoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJl
YW0oc3RyZWFtX2lkPTApCisKKyAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgOCB3aXRoIEZJ
TgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFt
ZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlKSks
CisgICAgICAgICAgICBOb25lLAorICAgICAgICApCisKKyAgICAgICAgIyBhZGQgZGF0YSBhdCBv
ZmZzZXQgMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFk
ZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKKyAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVu
ZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9y
ZWN2X2Zpbl90aGVuX2RhdGEoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3Ry
ZWFtX2lkPTApCisgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNl
dD0wLCBkYXRhPWIiIiwgZmluPVRydWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEV4Y2VwdGlvbikgYXMgY206CisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJl
YW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJEYXRhIHJlY2VpdmVkIGJleW9uZCBGSU4iKQorCisg
ICAgZGVmIHRlc3RfcmVjdl9maW5fdHdpY2Uoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNT
dHJlYW0oc3RyZWFtX2lkPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0
NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIs
IGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlKSksCisgICAgICAgICAgICBT
dHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJl
YW1faWQ9MCksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4
OTAxMjM0NSIsIGZpbj1UcnVlKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0
YT1iIiIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisKKyAgICBk
ZWYgdGVzdF9yZWN2X2Zpbl93aXRob3V0X2RhdGEoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1
aWNTdHJlYW0oc3RyZWFtX2lkPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIiIs
IGZpbj1UcnVlKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIGVu
ZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9z
ZW5kX2RhdGEoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMg
bm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBkYXRh
CisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKwor
ICAgICAgICAjIHNlbmQgYSBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUub2Zmc2V0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFt
Ll9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBj
aHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEyMzQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCA4
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYp
CisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBmcmFtZSA9IHN0cmVh
bS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKworICAgICAg
ICAjIGZpcnN0IGNodW5rIGdldHMgYWNrbm93bGVkZ2VkCisgICAgICAgIHN0cmVhbS5vbl9kYXRh
X2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VELCAwLCA4KQorCisgICAgICAgICMgc2Vj
b25kIGNodW5rIGdldHMgYWNrbm93bGVkZ2VkCisgICAgICAgIHN0cmVhbS5vbl9kYXRhX2RlbGl2
ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VELCA4LCAxNikKKworICAgIGRlZiB0ZXN0X3NlbmRf
ZGF0YV9hbmRfZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAg
ICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2Zy
YW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3Jp
dGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUi
LCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0u
X3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisg
ICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZy
YW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCisKKyAgICAg
ICAgIyBzZW5kIGFub3RoZXIgY2h1bmsKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1l
KDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiI4OTAxMjM0NSIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUub2Zmc2V0LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0
X3NlbmRfb2Zmc2V0LCAxNikKKworICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAg
ICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgMTYpCisKKyAgICBkZWYgdGVzdF9zZW5kX2RhdGFfbG9zdChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAg
ICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEgYW5kIEVPRgorICAgICAgICBzdHJlYW0u
d3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1UcnVlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKwor
ICAgICAgICAjIHNlbmQgYSBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2
NyIsIGZpbj1GYWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDgsIDE2KV0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCisKKyAgICAgICAg
IyBzZW5kIGFub3RoZXIgY2h1bmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJlYW1GcmFtZShkYXRhPWIiODkwMTIzNDUi
LCBmaW49VHJ1ZSwgb2Zmc2V0PTgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3Jl
IHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3RyZWFtLmdldF9mcmFtZSg4KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQor
CisgICAgICAgICMgYSBjaHVuayBnZXRzIGxvc3QKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVs
aXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDgpXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKworICAgICAgICAj
IHNlbmQgY2h1bmsgYWdhaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJlYW1GcmFtZShkYXRhPWIiMDEyMzQ1NjciLCBm
aW49RmFsc2UsIG9mZnNldD0wKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9s
b3N0X2ZpbihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAgICAg
IyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRh
dGEgYW5kIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5k
X3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKworICAgICAgICAjIHNlbmQgYSBjaHVuaworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVp
Y1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1GYWxzZSwgb2Zmc2V0PTApCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5n
KSwgW3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRf
c2VuZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGFub3RoZXIgY2h1bmsKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNT
dHJlYW1GcmFtZShkYXRhPWIiODkwMTIzNDUiLCBmaW49VHJ1ZSwgb2Zmc2V0PTgpCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2
KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUoc3RyZWFtLmdldF9mcmFtZSg4KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgYSBjaHVuayBnZXRzIGxvc3QK
KyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
OCwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGlu
ZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0
X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBjaHVuayBhZ2FpbgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0
cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYp
CisKKyAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1
aWNTdHJlYW0oKQorICAgICAgICBtYXhfb2Zmc2V0ID0gMTIKKworICAgICAgICAjIG5vdGhpbmcg
dG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKKworICAgICAgICAjIHdyaXRlIGRh
dGEsIHNlbmQgYSBjaHVuaworICAgICAgICBzdHJlYW0ud3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1
IikKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZnJhbWUuZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3Jh
bmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9v
ZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGlzIGxpbWl0ZWQgYnkgcGVlcgorICAgICAgICBm
cmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZy
YW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgx
MiwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgMTIpCisKKyAgICAgICAgIyB1bmFibGUgdG8gc2VuZCwgYmxvY2tlZAorICAgICAgICBmcmFt
ZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRf
cGVuZGluZyksIFtyYW5nZSgxMiwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCwgMTIpCisKKyAgICAgICAgIyB3cml0ZSBtb3JlIGRhdGEsIHN0
aWxsIGJsb2NrZWQKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiYWJjZGVmZ2giKQorICAgICAgICBm
cmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3Nl
bmRfcGVuZGluZyksIFtyYW5nZSgxMiwgMjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTIpCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1p
dCwgc2VuZCBzb21lIGRhdGEKKyAgICAgICAgbWF4X29mZnNldCArPSA4CisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiMjM0NWFiY2QiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZy
YW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDEyKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2Uo
MjAsIDI0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZz
ZXQsIDIwKQorCisgICAgICAgICMgcGVlciByYWlzZXMgbGltaXQgYWdhaW4sIHNlbmQgcmVtYWlu
aW5nIGRhdGEKKyAgICAgICAgbWF4X29mZnNldCArPSA4CisgICAgICAgIGZyYW1lID0gc3RyZWFt
LmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1l
LmRhdGEsIGIiZWZnaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUuZmluKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMjApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAyNCkKKworICAgICAgICAjIG5vdGhp
bmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhf
b2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgIGRlZiB0ZXN0
X3NlbmRfZmluX29ubHkoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisg
ICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Ry
ZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJh
bWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0
ZSBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiIiwgZW5kX3N0cmVhbT1UcnVlKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJh
bWUuZGF0YSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnJhbWUuZmluKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKworICAgICAgICAjIG5vdGhpbmcg
bW9yZSB0byBzZW5kCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVy
X2lzX2VtcHR5KSAgIyBGSVhNRT8KKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorCisgICAgZGVmIHRlc3Rfc2VuZF9maW5f
b25seV9kZXNwaXRlX2Jsb2NrZWQoc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0o
KQorCisgICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFtZSA9IHN0cmVhbS5n
ZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAg
IyB3cml0ZSBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiIiwgZW5kX3N0cmVhbT1UcnVlKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkKKyAg
ICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZnJhbWUuZGF0YSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZnJhbWUuZmluKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKworICAgICAgICAjIG5v
dGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRf
YnVmZmVyX2lzX2VtcHR5KSAgIyBGSVhNRT8KKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2Zy
YW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rlc3RfdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfdGxzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyZGQ1NmRlYjhiYWVhYzk2ZmNkMWEzZmUwYmI1Zjk0MzVkN2MwYzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkKQEAgLTAsMCAr
MSwxNDAwIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHNzbAor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQg
cGF0Y2gKKworZnJvbSBjcnlwdG9ncmFwaHkuZXhjZXB0aW9ucyBpbXBvcnQgVW5zdXBwb3J0ZWRB
bGdvcml0aG0KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzIGltcG9ydCBzZXJp
YWxpemF0aW9uCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmlj
IGltcG9ydCBlYworCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9xdWljLmJ1ZmZl
ciBpbXBvcnQgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IKK2Zyb20gYWlvcXVpYy5xdWljLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMudGxzIGltcG9y
dCAoCisgICAgQ2VydGlmaWNhdGUsCisgICAgQ2VydGlmaWNhdGVWZXJpZnksCisgICAgQ2xpZW50
SGVsbG8sCisgICAgQ29udGV4dCwKKyAgICBFbmNyeXB0ZWRFeHRlbnNpb25zLAorICAgIEZpbmlz
aGVkLAorICAgIE5ld1Nlc3Npb25UaWNrZXQsCisgICAgU2VydmVySGVsbG8sCisgICAgU3RhdGUs
CisgICAgbG9hZF9wZW1feDUwOV9jZXJ0aWZpY2F0ZXMsCisgICAgcHVsbF9ibG9jaywKKyAgICBw
dWxsX2NlcnRpZmljYXRlLAorICAgIHB1bGxfY2VydGlmaWNhdGVfdmVyaWZ5LAorICAgIHB1bGxf
Y2xpZW50X2hlbGxvLAorICAgIHB1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMsCisgICAgcHVsbF9m
aW5pc2hlZCwKKyAgICBwdWxsX25ld19zZXNzaW9uX3RpY2tldCwKKyAgICBwdWxsX3NlcnZlcl9o
ZWxsbywKKyAgICBwdXNoX2NlcnRpZmljYXRlLAorICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5
LAorICAgIHB1c2hfY2xpZW50X2hlbGxvLAorICAgIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMs
CisgICAgcHVzaF9maW5pc2hlZCwKKyAgICBwdXNoX25ld19zZXNzaW9uX3RpY2tldCwKKyAgICBw
dXNoX3NlcnZlcl9oZWxsbywKKyAgICB2ZXJpZnlfY2VydGlmaWNhdGUsCispCisKK2Zyb20gLnV0
aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRGSUxF
LAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlLAorICAg
IGxvYWQsCispCisKK0NFUlRJRklDQVRFX0RBVEEgPSBsb2FkKCJ0bHNfY2VydGlmaWNhdGUuYmlu
IilbMTE6LTJdCitDRVJUSUZJQ0FURV9WRVJJRllfU0lHTkFUVVJFID0gbG9hZCgidGxzX2NlcnRp
ZmljYXRlX3ZlcmlmeS5iaW4iKVstMzg0Ol0KKworQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFN
RVRFUlMgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgYiJmZjAwMDAxMTAwMzEwMDA1MDAwNDgw
MTAwMDAwMDAwNjAwMDQ4MDEwMDAwMDAwMDcwMDA0ODAxMDAwMDAwMDAiCisgICAgYiI0MDAwNDgx
MDAwMDAwMDAwMTAwMDI0MjU4MDAwODAwMDI0MDY0MDAwYTAwMDEwYSIKKykKKworU0VSVkVSX1FV
SUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgYiJmZjAw
MDAxMTA0ZmYwMDAwMTEwMDQ1MDAwNTAwMDQ4MDEwMDAwMDAwMDYwMDA0ODAxMDAwMDAwMDA3MDAw
NDgiCisgICAgYiIwMTAwMDAwMDAwNDAwMDQ4MTAwMDAwMDAwMDEwMDAyNDI1ODAwMDIwMDEwMDAw
MDAwMDAwMDAwMDAwMDAwMDAiCisgICAgYiIwMDAwMDAwMDAwMDAwMDA4MDAwMjQwNjQwMDBhMDAw
MTBhIgorKQorCitTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18yID0gYmluYXNjaWku
dW5oZXhsaWZ5KAorICAgIGIiMDA1NzAwMDYwMDA0ODAwMGZmZmYwMDA1MDAwNDgwMDBmZmZmMDAw
MjAwMTBjNWFjNDEwZmJkZDRmZTZlMmMxIgorICAgIGIiNDIyNzlmMjMxZThlMDAwMGEwMDAxMDMw
MDA0MDAwNDgwMDVmZmZhMDAwYjAwMDExOTAwMDEwMDAyNjcxMGZmIgorICAgIGIiNDIwMDBjNWMw
NjdmMjdlMzkzMjFjNjNlMjhlN2M5MDAwMzAwMDI0N2U0MDAwODAwMDEwNiIKKykKKworU0VSVkVS
X1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlNfMyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBi
IjAwNTQwMDAyMDAxMDBkY2I1MGE0NDI1MTMyOTViNDY3OWJhZjA0Y2I1ZWZmZmY4YTAwMDljOGFm
ZTcyYTYzOTciCisgICAgYiIyNTU0MDcwMDA2MDAwNDgwMDBmZmZmMDAwODAwMDEwNjAwMDQwMDA0
ODAwNWZmZmEwMDA1MDAwNDgwMDBmZmZmIgorICAgIGIiMDAwMzAwMDI0N2U0MDAwYTAwMDEwMzAw
MDEwMDAyNjcxMDAwMGIwMDAxMTkiCispCisKKworY2xhc3MgQnVmZmVyVGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfcHVsbF9ibG9ja190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9
IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZl
clJlYWRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAxKToKKyAgICAg
ICAgICAgICAgICBwYXNzCisKKworZGVmIGNyZWF0ZV9idWZmZXJzKCk6CisgICAgcmV0dXJuIHsK
KyAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IEJ1ZmZlcihjYXBhY2l0eT00MDk2KSwKKyAgICAg
ICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB0
bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgIH0KKworCitkZWYg
bWVyZ2VfYnVmZmVycyhidWZmZXJzKToKKyAgICByZXR1cm4gYiIiLmpvaW4oeC5kYXRhIGZvciB4
IGluIGJ1ZmZlcnMudmFsdWVzKCkpCisKKworZGVmIHJlc2V0X2J1ZmZlcnMoYnVmZmVycyk6Cisg
ICAgZm9yIGsgaW4gYnVmZmVycy5rZXlzKCk6CisgICAgICAgIGJ1ZmZlcnNba10uc2VlaygwKQor
CisKK2NsYXNzIENvbnRleHRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgY3JlYXRlX2NsaWVudCgK
KyAgICAgICAgc2VsZiwgYWxwbl9wcm90b2NvbHM9Tm9uZSwgY2FkYXRhPU5vbmUsIGNhZmlsZT1T
RVJWRVJfQ0FDRVJURklMRSwgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBjbGllbnQgPSBDb250
ZXh0KAorICAgICAgICAgICAgYWxwbl9wcm90b2NvbHM9YWxwbl9wcm90b2NvbHMsCisgICAgICAg
ICAgICBjYWRhdGE9Y2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPWNhZmlsZSwKKyAgICAgICAg
ICAgIGlzX2NsaWVudD1UcnVlLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAgICAgKQorICAg
ICAgICBjbGllbnQuaGFuZHNoYWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAg
ICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywK
KyAgICAgICAgICAgICAgICBDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAg
ICAgICAgICkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0
ZSwgU3RhdGUuQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVCkKKyAgICAgICAgcmV0dXJuIGNsaWVudAor
CisgICAgZGVmIGNyZWF0ZV9zZXJ2ZXIoc2VsZiwgYWxwbl9wcm90b2NvbHM9Tm9uZSk6CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisg
ICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklMRSwgU0VS
VkVSX0tFWUZJTEUpCisKKyAgICAgICAgc2VydmVyID0gQ29udGV4dCgKKyAgICAgICAgICAgIGFs
cG5fcHJvdG9jb2xzPWFscG5fcHJvdG9jb2xzLCBpc19jbGllbnQ9RmFsc2UsIG1heF9lYXJseV9k
YXRhPTB4RkZGRkZGRkYKKyAgICAgICAgKQorICAgICAgICBzZXJ2ZXIuY2VydGlmaWNhdGUgPSBj
b25maWd1cmF0aW9uLmNlcnRpZmljYXRlCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZV9wcml2
YXRlX2tleSA9IGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2VydmVyLmhhbmRz
aGFrZV9leHRlbnNpb25zID0gWworICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHRscy5F
eHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAg
U0VSVkVSX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICApCisgICAgICAg
IF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9F
WFBFQ1RfQ0xJRU5UX0hFTExPKQorICAgICAgICByZXR1cm4gc2VydmVyCisKKyAgICBkZWYgdGVz
dF9jbGllbnRfdW5leHBlY3RlZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxm
LmNyZWF0ZV9jbGllbnQoKQorCisgICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9F
WFBFQ1RfU0VSVkVSX0hFTExPCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFs
ZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdl
KGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50
LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUworICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAg
ICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVh
dGVfYnVmZmVycygpKQorCisgICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBF
Q1RfQ0VSVElGSUNBVEVfUkVRVUVTVF9PUl9DRVJUSUZJQ0FURQorICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIGNs
aWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygp
KQorCisgICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VSVElGSUNB
VEVfVkVSSUZZCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBl
Y3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4
MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0g
U3RhdGUuQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIGNsaWVudC5oYW5k
bGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAg
ICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAg
ICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVf
YnVmZmVycygpKQorCisgICAgZGVmIHRlc3RfY2xpZW50X2JhZF9jZXJ0aWZpY2F0ZV92ZXJpZnlf
ZGF0YShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAg
ICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50
IGhlbGxvCisgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNs
aWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAg
ICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICBy
ZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxv
CisgICAgICAgICMgc2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0
aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVm
ID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVy
X2lucHV0LCBzZXJ2ZXJfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0
ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0g
bWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9i
dWYpCisKKyAgICAgICAgIyBtZXNzIHdpdGggY2VydGlmaWNhdGUgdmVyaWZ5CisgICAgICAgIGNs
aWVudF9pbnB1dCA9IGNsaWVudF9pbnB1dFs6LTU2XSArIGJ5dGVzKDQpICsgY2xpZW50X2lucHV0
Wy01MjpdCisKKyAgICAgICAgIyBoYW5kbGUgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5z
aW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmluaXNoZWQKKyAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnREZWNyeXB0RXJyb3IpOgorICAgICAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikKKworICAg
IGRlZiB0ZXN0X2NsaWVudF9iYWRfZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZik6CisgICAgICAg
IGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3Jl
YXRlX3NlcnZlcigpCisKKyAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbworICAgICAgICBjbGll
bnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2Uo
YiIiLCBjbGllbnRfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwg
U3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisgICAgICAgIHNlcnZlcl9pbnB1dCA9
IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRf
YnVmKQorCisgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAjIHNlbmQgc2Vy
dmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRl
IHZlcmlmeSwgZmluaXNoZWQKKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBF
Q1RfRklOSVNIRUQpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVy
X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICMgbWVz
cyB3aXRoIGZpbmlzaGVkIHZlcmlmeSBkYXRhCisgICAgICAgIGNsaWVudF9pbnB1dCA9IGNsaWVu
dF9pbnB1dFs6LTRdICsgYnl0ZXMoNCkKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8s
IGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBm
aW5pc2hlZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRF
cnJvcik6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBj
bGllbnRfYnVmKQorCisgICAgZGVmIHRlc3Rfc2VydmVyX3VuZXhwZWN0ZWRfbWVzc2FnZShzZWxm
KToKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICBzZXJ2
ZXIuc3RhdGUgPSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxMTworICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAg
ICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVm
ZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklO
SVNIRUQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBzZXJ2ZXIuc3RhdGUgPSBTdGF0
ZS5TRVJWRVJfUE9TVF9IQU5EU0hBS0UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0
bHMuQWxlcnRVbmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21l
c3NhZ2UoYiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgIGRlZiBf
c2VydmVyX2ZhaWxfaGVsbG8oc2VsZiwgY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAjIHNlbmQg
Y2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAg
ICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxM
TykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAg
ICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50
IGhlbGxvCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNl
cnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisKKyAgICBkZWYg
dGVzdF9zZXJ2ZXJfdW5zdXBwb3J0ZWRfY2lwaGVyX3N1aXRlKHNlbGYpOgorICAgICAgICBjbGll
bnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX2NpcGhlcl9zdWl0ZXMg
PSBbdGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1Nl0KKworICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorICAgICAgICBzZXJ2ZXIuX2NpcGhlcl9zdWl0ZXMgPSBb
dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NF0KKworICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydEhhbmRzaGFrZUZhaWx1cmUpIGFzIGNtOgorICAgICAgICAg
ICAgc2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRl
IikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF9zaWduYXR1cmVfYWxnb3JpdGht
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBj
bGllbnQuX3NpZ25hdHVyZV9hbGdvcml0aG1zID0gW3Rscy5TaWduYXR1cmVBbGdvcml0aG0uRUQ0
NDhdCisKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEhhbmRzaGFrZUZhaWx1cmUpIGFzIGNtOgor
ICAgICAgICAgICAgc2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgc2ln
bmF0dXJlIGFsZ29yaXRobSIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5zdXBwb3J0ZWRfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAg
ICAgY2xpZW50Ll9zdXBwb3J0ZWRfdmVyc2lvbnMgPSBbdGxzLlRMU19WRVJTSU9OXzFfMl0KKwor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0UHJvdG9jb2xWZXJzaW9uKSBhcyBjbToKKyAgICAgICAg
ICAgIHNlbGYuX3NlcnZlcl9mYWlsX2hlbGxvKGNsaWVudCwgc2VydmVyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZl
cnNpb24iKQorCisgICAgZGVmIHRlc3Rfc2VydmVyX2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2Vy
dmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxv
CisgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5o
YW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAg
c2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9i
dWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAg
ICAgICMgc2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0
ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3Jl
YXRlX2J1ZmZlcnMoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0
LCBzZXJ2ZXJfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3Rh
dGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2Vf
YnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisK
KyAgICAgICAgIyBoYW5kbGUgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2Vy
dGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmluaXNoZWQKKyAgICAgICAgIyBzZW5kIGZp
bmlzaGVkCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVu
dF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElF
TlRfUE9TVF9IQU5EU0hBS0UpCisgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMo
Y2xpZW50X2J1ZikKKyAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAg
ICMgbWVzcyB3aXRoIGZpbmlzaGVkIHZlcmlmeSBkYXRhCisgICAgICAgIHNlcnZlcl9pbnB1dCA9
IHNlcnZlcl9pbnB1dFs6LTRdICsgYnl0ZXMoNCkKKworICAgICAgICAjIGhhbmRsZSBmaW5pc2hl
ZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6
CisgICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJf
YnVmKQorCisgICAgZGVmIF9oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVy
cygpCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NF
UlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oc2VydmVyX2lucHV0KSwg
MjEzKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgMzU4
KQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBoYW5kbGUg
Y2xpZW50IGhlbGxvCisgICAgICAgICMgc2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRl
bnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZCwgKHNlc3Np
b24gdGlja2V0KQorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAg
ICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5J
U0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQor
ICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgNjAwKQor
ICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMjMxNikKKwor
ICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgIyBoYW5kbGUgc2Vy
dmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRl
IHZlcmlmeSwgZmluaXNoZWQsIChzZXNzaW9uIHRpY2tldCkKKyAgICAgICAgIyBzZW5kIGZpbmlz
aGVkCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVudF9i
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRf
UE9TVF9IQU5EU0hBS0UpCisgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xp
ZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgNTIp
CisgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBm
aW5pc2hlZAorICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2
ZXJfYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VS
VkVSX1BPU1RfSEFORFNIQUtFKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJz
KHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCks
IDApCisKKyAgICAgICAgIyBjaGVjayBrZXlzIG1hdGNoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2xpZW50Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2xpZW50Ll9lbmNfa2V5LCBzZXJ2ZXIuX2RlY19rZXkpCisKKyAgICAgICAgIyBjaGVj
ayBjaXBoZXIgc3VpdGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNs
aWVudC5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLCB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9H
Q01fU0hBMzg0CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHNlcnZlci5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLCB0bHMuQ2lwaGVyU3VpdGUuQUVT
XzI1Nl9HQ01fU0hBMzg0CisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxm
KToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVy
ID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50
LCBzZXJ2ZXIpCisKKyAgICAgICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9o
YW5kc2hha2VfZWNkc2Ffc2VjcDI1NnIxKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNy
ZWF0ZV9zZXJ2ZXIoKQorICAgICAgICBzZXJ2ZXIuY2VydGlmaWNhdGUsIHNlcnZlci5jZXJ0aWZp
Y2F0ZV9wcml2YXRlX2tleSA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
Y29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwgY3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkK
KworICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoCisgICAgICAgICAgICBjYWRh
dGE9c2VydmVyLmNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5n
LlBFTSksCisgICAgICAgICAgICBjYWZpbGU9Tm9uZSwKKyAgICAgICAgKQorCisgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0
Y2hlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9u
ZSkKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2FscG4oc2VsZik6CisgICAgICAgIGNs
aWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudChhbHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAg
ICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcihhbHBuX3Byb3RvY29scz1bImhxLTIwIiwg
ImgzLTIwIl0pCisKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisg
ICAgICAgICMgY2hlY2sgQUxQTiBtYXRjaGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50LmFscG5fbmVnb3RpYXRlZCwgImhxLTIwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXJ2ZXIuYWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtl
X3dpdGhfYWxwbl9mYWlsKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGll
bnQoYWxwbl9wcm90b2NvbHM9WyJocS0yMCJdKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0
ZV9zZXJ2ZXIoYWxwbl9wcm90b2NvbHM9WyJoMy0yMCJdKQorCisgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAgICAgICAg
ICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBjb21tb24gQUxQTiBwcm90b2NvbHMiKQorCisgICAg
ZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfcnNhX3BrY3MxX3NoYTI1Nl9zaWduYXR1cmUoc2VsZik6
CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5f
c2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFf
U0hBMjU2XQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAg
IHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFr
ZV93aXRoX2NlcnRpZmljYXRlX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNy
ZWF0ZV9jbGllbnQoY2FmaWxlPU5vbmUpCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0
aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2
ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJ1bmFibGUg
dG8gZ2V0IGxvY2FsIGlzc3VlciBjZXJ0aWZpY2F0ZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hh
a2Vfd2l0aF9jZXJ0aWZpY2F0ZV9ub192ZXJpZnkoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNl
bGYuY3JlYXRlX2NsaWVudChjYWZpbGU9Tm9uZSwgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSkK
KyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICBzZWxmLl9o
YW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF9n
cmVhc2VfZ3JvdXAoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgp
CisgICAgICAgIGNsaWVudC5fc3VwcG9ydGVkX2dyb3VwcyA9IFt0bHMuR3JvdXAuR1JFQVNFLCB0
bHMuR3JvdXAuU0VDUDI1NlIxXQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIo
KQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0
ZXN0X2hhbmRzaGFrZV93aXRoX3gyNTUxOShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5H
cm91cC5YMjU1MTldCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQor
ICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRBbGdvcml0aG0gYXMgZXhjOgorICAgICAgICAgICAg
c2VsZi5za2lwVGVzdChzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX3g0
NDgoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAg
IGNsaWVudC5fc3VwcG9ydGVkX2dyb3VwcyA9IFt0bHMuR3JvdXAuWDQ0OF0KKyAgICAgICAgc2Vy
dmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBz
ZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRl
ZEFsZ29yaXRobSBhcyBleGM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KHN0cihleGMpKQor
CisgICAgZGVmIHRlc3Rfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgIGNsaWVudF90aWNr
ZXRzID0gW10KKyAgICAgICAgc2VydmVyX3RpY2tldHMgPSBbXQorCisgICAgICAgIGRlZiBjbGll
bnRfbmV3X3RpY2tldCh0aWNrZXQpOgorICAgICAgICAgICAgY2xpZW50X3RpY2tldHMuYXBwZW5k
KHRpY2tldCkKKworICAgICAgICBkZWYgc2VydmVyX2dldF90aWNrZXQobGFiZWwpOgorICAgICAg
ICAgICAgZm9yIHQgaW4gc2VydmVyX3RpY2tldHM6CisgICAgICAgICAgICAgICAgaWYgdC50aWNr
ZXQgPT0gbGFiZWw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgICAgIGRlZiBzZXJ2ZXJfbmV3X3RpY2tldCh0aWNrZXQpOgorICAg
ICAgICAgICAgc2VydmVyX3RpY2tldHMuYXBwZW5kKHRpY2tldCkKKworICAgICAgICBkZWYgZmly
c3RfaGFuZHNoYWtlKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICAgICAgY2xpZW50Lm5ld19zZXNzaW9uX3RpY2tldF9jYiA9IGNsaWVudF9uZXdf
dGlja2V0CisKKyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisgICAg
ICAgICAgICBzZXJ2ZXIubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VydmVyX25ld190aWNrZXQK
KworICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAg
ICAgICAjIGNoZWNrIHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgbm90IHVzZWQKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50LnNlc3Npb25fcmVzdW1lZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VydmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICAgICAgIyBj
aGVjayB0aWNrZXRzIG1hdGNoCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGll
bnRfdGlja2V0cyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJf
dGlja2V0cyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF90aWNrZXRz
WzBdLnRpY2tldCwgc2VydmVyX3RpY2tldHNbMF0udGlja2V0KQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbGllbnRfdGlja2V0c1swXS5yZXN1bXB0aW9u
X3NlY3JldCwgc2VydmVyX3RpY2tldHNbMF0ucmVzdW1wdGlvbl9zZWNyZXQKKyAgICAgICAgICAg
ICkKKworICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZSgpOgorICAgICAgICAgICAgY2xpZW50
ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgICAgIGNsaWVudC5zZXNzaW9uX3RpY2tl
dCA9IGNsaWVudF90aWNrZXRzWzBdCisKKyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisgICAgICAgICAgICBzZXJ2ZXIuZ2V0X3Nlc3Npb25fdGlja2V0X2NiID0gc2Vy
dmVyX2dldF90aWNrZXQKKworICAgICAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbyB3aXRoIHBy
ZV9zaGFyZWRfa2V5CisgICAgICAgICAgICBjbGllbnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQor
ICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNU
X1NFUlZFUl9IRUxMTykKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMo
Y2xpZW50X2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2
ZXJfaW5wdXQpLCAzODMpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oc2Vy
dmVyX2lucHV0KSwgNDgzKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQor
CisgICAgICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAgICAgICMgc2VuZCBz
ZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBmaW5pc2hlZAorICAgICAgICAgICAg
c2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVf
bWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRCkKKyAgICAg
ICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDMwNykKKyAgICAgICAgICAg
IHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAgICAgIyBoYW5kbGUgc2VydmVy
IGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZl
cmlmeSwgZmluaXNoZWQKKyAgICAgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfUE9TVF9IQU5E
U0hBS0UpCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9i
dWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA1MikK
KyAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAgICAgIyBo
YW5kbGUgZmluaXNoZWQKKyAgICAgICAgICAgICMgc2VuZCBuZXdfc2Vzc2lvbl90aWNrZXQKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVS
X1BPU1RfSEFORFNIQUtFKQorICAgICAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVy
cyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lu
cHV0KSwgMCkKKyAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAg
ICAgICAgIyBjaGVjayBrZXlzIG1hdGNoCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNs
aWVudC5fZGVjX2tleSwgc2VydmVyLl9lbmNfa2V5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAgICAgICAgIyBj
aGVjayBzZXNzaW9uIHJlc3VtcHRpb24gd2FzIHVzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5zZXNzaW9uX3Jlc3VtZWQpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hha2Vf
YmFkX2JpbmRlcigpOgorICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkK
KyAgICAgICAgICAgIGNsaWVudC5zZXNzaW9uX3RpY2tldCA9IGNsaWVudF90aWNrZXRzWzBdCisK
KyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgICAgICBz
ZXJ2ZXIuZ2V0X3Nlc3Npb25fdGlja2V0X2NiID0gc2VydmVyX2dldF90aWNrZXQKKworICAgICAg
ICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbyB3aXRoIHByZV9zaGFyZWRfa2V5CisgICAgICAgICAg
ICBjbGllbnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAg
ICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzODMpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgNDgzKQorICAgICAg
ICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIHRhbXBlciB3
aXRoIGJpbmRlcgorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gc2VydmVyX2lucHV0WzotNF0g
KyBieXRlcyg0KQorCisgICAgICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAg
ICAgICMgc2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBmaW5pc2hlZAor
ICAgICAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206Cisg
ICAgICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVy
X2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJQ
U0sgdmFsaWRhdGlvbiBmYWlsZWQiKQorCisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlX2Jh
ZF9wcmVfc2hhcmVkX2tleSgpOgorICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xp
ZW50KCkKKyAgICAgICAgICAgIGNsaWVudC5zZXNzaW9uX3RpY2tldCA9IGNsaWVudF90aWNrZXRz
WzBdCisKKyAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAg
ICAgICBzZXJ2ZXIuZ2V0X3Nlc3Npb25fdGlja2V0X2NiID0gc2VydmVyX2dldF90aWNrZXQKKwor
ICAgICAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbyB3aXRoIHByZV9zaGFyZWRfa2V5CisgICAg
ICAgICAgICBjbGllbnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAg
ICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzODMpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgNDgzKQor
ICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIGhh
bmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAgICAgICMgc2VuZCBzZXJ2ZXIgaGVsbG8sIGVuY3J5
cHRlZCBleHRlbnNpb25zLCBmaW5pc2hlZAorICAgICAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0
ZV9idWZmZXJzKCkKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0
ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRCkKKworICAgICAgICAgICAgIyB0YW1wZXIg
d2l0aCBwcmVfc2hhcmVfa2V5IGluZGV4CisgICAgICAgICAgICBidWYgPSBzZXJ2ZXJfYnVmW3Rs
cy5FcG9jaC5JTklUSUFMXQorICAgICAgICAgICAgYnVmLnNlZWsoYnVmLnRlbGwoKSAtIDEpCisg
ICAgICAgICAgICBidWYucHVzaF91aW50OCgxKQorICAgICAgICAgICAgY2xpZW50X2lucHV0ID0g
bWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJf
YnVmKQorCisgICAgICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8gYW5kIGJvbWIKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SWxsZWdhbFBhcmFtZXRlcik6
CisgICAgICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xp
ZW50X2J1ZikKKworICAgICAgICBmaXJzdF9oYW5kc2hha2UoKQorICAgICAgICBzZWNvbmRfaGFu
ZHNoYWtlKCkKKyAgICAgICAgc2Vjb25kX2hhbmRzaGFrZV9iYWRfYmluZGVyKCkKKyAgICAgICAg
c2Vjb25kX2hhbmRzaGFrZV9iYWRfcHJlX3NoYXJlZF9rZXkoKQorCisKK2NsYXNzIFRsc1Rlc3Qo
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3B1bGxfY2xpZW50X2hlbGxvKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvLmJpbiIpKQorICAgICAg
ICBoZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVs
bG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICIxOGIyYjIzYmYzZTQ0YjVkNTJjY2ZlN2FlY2JjNWZmMTRlYWRjM2QzNDlmYWJmODA0ZDcx
ZjE2NWFlNzZlN2Q1IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMy
OWQ5ZGNmZTAwNGExYTQzOGFkMDQ4NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAg
ICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLmNpcGhlcl9zdWl0ZXMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVy
U3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kcywgW3Rscy5D
b21wcmVzc2lvbk1ldGhvZC5OVUxMXSkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5hbHBuX3Byb3RvY29scywgTm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQ
MjU2UjEsCisgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICIwNDdiZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVh
MjExYjY4ZDFlYjhkMWQ5NDRlNjdhZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2
NjVhNTQ3M2QwMzJjZmFmMjJhNzNkYTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRm
MTUiCisgICAgICAgICAgICAgICAgICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2Rl
cywgW3Rscy5Qc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KKyAgICAgICAgKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnNlcnZlcl9uYW1lLCBOb25lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0u
RUNEU0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFs
Z29yaXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzLCBbdGxzLkdyb3VwLlNF
Q1AyNTZSMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5z
dXBwb3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgdGxzLlRM
U19WRVJTSU9OXzFfMywKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZU
XzI4LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAg
ICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0s
CisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVs
bG8ub3RoZXJfZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoCisg
ICAgICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFN
RVRFUlMsCisgICAgICAgICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVU
RVJTLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2NsaWVudF9oZWxsb193aXRoX2FscG4uYmluIikpCisg
ICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAg
ICAgICAgICAgImVkNTc1YzZmYmQ1OTljNGRmYWFiZDAwM2RjYTZlODYwY2NkYjBlMTc4MmMxYWYw
MmU1N2JmMjdjYjY0NzliNzYiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2Vzc2lvbl9pZCwgYiIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAg
ICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAg
ICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuRU1QVFlfUkVORUdPVElBVElPTl9JTkZPX1NDU1Ys
CisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVs
bG8uY29tcHJlc3Npb25fbWV0aG9kcywgW3Rscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMXSkKKwor
ICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5hbHBu
X3Byb3RvY29scywgWyJoMy0xOSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmVh
cmx5X2RhdGEsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAg
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICAgICAgICAgIjA0ODg0MjMxNWM0
MzdiYjBjZTI5MjljODE2ZmVlNGU5NDJlYzVjYjZkYjZhNmI5YmY2MjI2ODAxODhlYmIwZDQiCisg
ICAgICAgICAgICAgICAgICAgICAgICAiYjY1MmU2OTAzM2Y3MTY4NmFhMDFjYmM3OTE1NTg2NmUy
NjRjOWYzM2Y0NWFhMTZiMGRmYTEwYTIyMmUzYTY2OSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICIyMiIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5Q
U0tfREhFX0tFXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2Vy
dmVyX25hbWUsICJjbG91ZGZsYXJlLXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDI1NlIx
X1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NF
Q1AzODRSMV9TSEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5F
Q0RTQV9TRUNQNTIxUjFfU0hBNTEyLAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uRUQyNTUxOSwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVE
NDQ4LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19QU1Nf
U0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19Q
U1NfU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BT
U19QU1NfU0hBNTEyLAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUFNTX1JTQUVfU0hBNTEyLAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVB
bGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJl
QWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBNTEyLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX2dy
b3VwcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIx
LAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5YMjU1MTksCisgICAgICAgICAgICAgICAgdGxz
Lkdyb3VwLlNFQ1AzODRSMSwKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDUyMVIxLAor
ICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxv
LnN1cHBvcnRlZF92ZXJzaW9ucywgW3Rscy5UTFNfVkVSU0lPTl8xXzNdKQorCisgICAgICAgICMg
c2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQorICAgICAgICBwdXNoX2NsaWVu
dF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihidWYuZGF0
YSksIGxlbihsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4iKSkpCisKKyAgICBk
ZWYgdGVzdF9wdWxsX2NsaWVudF9oZWxsb193aXRoX3BzayhzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgidGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5lYXJseV9kYXRhLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXksCisgICAgICAgICAgICB0bHMuT2ZmZXJl
ZFBza3MoCisgICAgICAgICAgICAgICAgaWRlbnRpdGllcz1bCisgICAgICAgICAgICAgICAgICAg
ICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmFiM2RjN2Q3OWYzNWVhNTNlOWFkZjIxMTUwZTYwMTU5MWE3
NTBiODBjZGUwY2QxNjdmZWY2ZTBjZGJjMDMyYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYzQxNjFmYzVjNWI2NjY3OWRlNDk1MjRiZDU2MjRjNTBkNzFiYTNlNjUwNzgwYTRiZmU0MDJk
NmEwNmEwMDUyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMGI1ZGM1MjA4NTIzM2I2
OWQwZGQxMzkyNGNjNWM3MTNhMzk2Nzg0ZWNhZmM1OWY1ZWE3M2MxNTg1ZDc5NjIxYiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiOGE5NGU0ZjIyOTFiMTc0MjdkNTE4NWFiZjRhOTk0ZmNh
NzRlZTdhN2Y5OTNhOTUwYzcxMDAzZmM3Y2Y4IgorICAgICAgICAgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDIwNjcxNTYzNzgsCisgICAgICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGJpbmRlcnM9WworICAgICAg
ICAgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAg
ICAiMTc4OGFkNDNmZGZmMzdjZmM2MjhmMjRiNmNlN2M4Yzc2MTgwNzA1MzgwZGExN2RhMzI4MTFi
NWJhZTRlNzgiCisgICAgICAgICAgICAgICAgICAgICAgICAiZDdhYWFmNjVhOWI3MTM4NzJmMmJi
Mjg4MThjYTFhNmIwMSIKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1
Zi5lb2YoKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAw
MCkKKyAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4i
KSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfc25pKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfc25pLmJp
biIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICI5ODdkODkzNDE0MGIwYTQyY2M1NTQ1MDcxZjNmOWY3ZjYxOTYzZDdi
NjQwNGViNjc0YzhkYmU1MTM2MDQzNDZiIgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiMjZiMTliZGQz
MGRiZjc1MTAxNWEzYTE2ZTEzYmQ1OTAwMmRmZTQyMGI3OTlkMmE1Y2Q1ZTExYjhmYTdiY2I2NiIK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIGhlbGxvLmNpcGhlcl9zdWl0ZXMsCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0
aG9kcywgW3Rscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMXSkKKworICAgICAgICAjIGV4dGVuc2lv
bnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5hbHBuX3Byb3RvY29scywgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwK
KyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRs
cy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNGI2MmQ3MGY5MDdjODE0Y2Q2NWQwZjczYjhi
OTkxZjA2YjcwYzc3MTUzZjU0ODQxMGExOTFkMmIxOTc2NGEyIgorICAgICAgICAgICAgICAgICAg
ICAgICAgImVjYzA2MDY1YTQ4MGVmYTllMWYxMGM4ZGE2ZTczN2Q1YmZjMDRiZTNmNzczZTIwYTBj
OTk3ZjUxYjU2MjEyODAiCisgICAgICAgICAgICAgICAgICAgICAgICAiNDAiCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9l
eGNoYW5nZV9tb2RlcywgW3Rscy5Qc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnNlcnZlcl9uYW1lLCAiY2xvdWRm
bGFyZS1xdWljLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBo
ZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAg
ICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hBMjU2LAorICAg
ICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAg
ICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1
cHBvcnRlZF9ncm91cHMsIFt0bHMuR3JvdXAuU0VDUDI1NlIxXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zLAorICAgICAgICAgICAg
ICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjgsCisgICAgICAgICAgICAgICAgdGxzLlRM
U19WRVJTSU9OXzFfM19EUkFGVF8yNywKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05f
MV8zX0RSQUZUXzI2LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLAorICAgICAg
ICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVu
c2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAg
Q0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcigxMDAwKQorICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxv
X3dpdGhfc25pLmJpbiIpKQorCisgICAgZGVmIHRlc3RfcHVzaF9jbGllbnRfaGVsbG8oc2VsZik6
CisgICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIxOGIyYjIzYmYzZTQ0YjVkNTJjY2ZlN2Fl
Y2JjNWZmMTRlYWRjM2QzNDlmYWJmODA0ZDcxZjE2NWFlNzZlN2Q1IgorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHNlc3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNm
NTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZXM9
WworICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZHM9W3Rscy5Db21wcmVz
c2lvbk1ldGhvZC5OVUxMXSwKKyAgICAgICAgICAgIGtleV9zaGFyZT1bCisgICAgICAgICAgICAg
ICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAg
ICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAi
MDQ3YmZlYTM0NDQ2NzUzNTA1NDI2M2I3NWRlZjYwY2ZmYTgyNDA1YTIxMWI2OGQxZWI4ZDFkOTQ0
ZTY3YWVmOCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI5M2M3NjY1YTU0NzNkMDMyY2ZhZjIy
YTczZGEyOGViNGFhY2FlMDAxN2VkMTI1NTdiNTc5MWY5OGExZTg0ZjE1IgorICAgICAgICAgICAg
ICAgICAgICAgICAgImIwIgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBwc2tfa2V5X2V4Y2hhbmdlX21vZGVzPVt0
bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19ESEVfS0VdLAorICAgICAgICAgICAgc2lnbmF0dXJl
X2FsZ29yaXRobXM9WworICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFs
Z29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVB
bGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgc3Vw
cG9ydGVkX2dyb3Vwcz1bdGxzLkdyb3VwLlNFQ1AyNTZSMV0sCisgICAgICAgICAgICBzdXBwb3J0
ZWRfdmVyc2lvbnM9WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAg
ICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAg
ICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNf
VkVSU0lPTl8xXzNfRFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgb3RoZXJf
ZXh0ZW5zaW9ucz1bCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMu
RXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAg
ICAgICBDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDAp
CisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikpCisKKyAgICBk
ZWYgdGVzdF9wdWxsX3NlcnZlcl9oZWxsbyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9bG9hZCgidGxzX3NlcnZlcl9oZWxsby5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBwdWxsX3Nl
cnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnJhbmRvbSwKKyAgICAg
ICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYWRhODUyNzFkMTk2
ODBjNjE1ZWE3MzM2NTE5ZTNmZGY2ZjFlMjZmM2IxMDc1ZWUxZGU5NmZmYTg4ODRlODI4MCIKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGhlbGxvLnNlc3Npb25faWQsCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnko
CisgICAgICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0Mzhh
ZDA0ODVhNTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY2lwaGVyX3N1aXRlLCB0bHMuQ2lwaGVyU3Vp
dGUuQUVTXzI1Nl9HQ01fU0hBMzg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNv
bXByZXNzaW9uX21ldGhvZCwgdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEwpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5rZXlfc2hhcmUsCisgICAgICAgICAg
ICAoCisgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAg
ICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICIwNDhiMjdkMDI4MjI0
MmQ4NGI3ZmNjMDJhOWM0ZjEzZWNhMDMyOWUzYzcwMjlhYTM0YTMzNzk0ZTZlN2JhMTg5IgorICAg
ICAgICAgICAgICAgICAgICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAy
NmJjYTE5NThkN2YzODczMTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgImIyIgorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGVsbG8ucHJlX3NoYXJlZF9rZXksIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24sIHRscy5UTFNfVkVSU0lPTl8xXzMpCisK
KyAgICBkZWYgdGVzdF9wdWxsX3NlcnZlcl9oZWxsb193aXRoX3BzayhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4iKSkK
KyAgICAgICAgaGVsbG8gPSBwdWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIGhlbGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAg
ICAgICAgICAgICAiY2NiYWFmMDRmYzFiZDUxNDNiMmNjNmI5NzUyMGNmMzdkOTE0NzBkYmZjODEy
NzEzMWE3YmYwZjk0MWUzYTEzNyIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnNlc3Npb25faWQsCisgICAgICAg
ICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjk0ODNlN2U4OTVkMGY0
Y2VjMTcwODZiMDg0OTYwMWMwNjMyNjYyY2Q3NjRlODI4ZjJmODkyZjRjNGI3NzcxYjAiCisgICAg
ICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY2lw
aGVyX3N1aXRlLCB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCwgdGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTEwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNF
Q1AyNTZSMSwKKyAgICAgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAgICAgICAgICIwNDg1ZDdjZWNiZWJmYzU0OGZjNjU3YmY1MWI4ZThkYTg0MmE0MDU2YjE2NGEy
N2Y3NzAyY2EzMThjMTZlNDg4IgorICAgICAgICAgICAgICAgICAgICAiMThiNjQwOTU5M2IxNWM2
NjQ5ZDZmNDU5Mzg3YTUzMTI4YjE2NDE3OGFkYzg0MDE3OWFhZDAxZDM2Y2U5NWQ2MiIKKyAgICAg
ICAgICAgICAgICAgICAgIjc2IgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8ucHJlX3NoYXJlZF9rZXks
IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24sIHRs
cy5UTFNfVkVSU0lPTl8xXzMpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG9fd2l0
aF9wc2suYmluIikpCisKKyAgICBkZWYgdGVzdF9wdWxsX3NlcnZlcl9oZWxsb193aXRoX3Vua25v
d25fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNf
c2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIikpCisgICAgICAgIGhlbGxv
ID0gcHVsbF9zZXJ2ZXJfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsbywKKyAg
ICAgICAgICAgIFNlcnZlckhlbGxvKAorICAgICAgICAgICAgICAgIHJhbmRvbT1iaW5hc2NpaS51
bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1
MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQw
NDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgY2lwaGVyX3N1aXRlPXRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisg
ICAgICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5Db21wcmVzc2lvbk1ldGhvZC5O
VUxMLAorICAgICAgICAgICAgICAgIGtleV9zaGFyZT0oCisgICAgICAgICAgICAgICAgICAgIHRs
cy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNDhiMjdkMDI4MjI0MmQ4NGI3ZmNjMDJhOWM0
ZjEzZWNhMDMyOWUzYzcwMjlhYTM0YTMzNzk0ZTZlN2JhMTg5IgorICAgICAgICAgICAgICAgICAg
ICAgICAgIjVjY2ExYzUwM2JmMDM3OGFjNjkzN2MzNTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4ZDdm
Mzg3MzE2YzgzYWU2Y2YiCisgICAgICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBzdXBwb3J0
ZWRfdmVyc2lvbj10bHMuVExTX1ZFUlNJT05fMV8zLAorICAgICAgICAgICAgICAgIG90aGVyX2V4
dGVuc2lvbnM9WygxMjM0NSwgYiJmb28iKV0sCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAg
IHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5i
aW4iKSkKKworICAgIGRlZiB0ZXN0X3B1c2hfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBo
ZWxsbyA9IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICAgICAiYWRhODUyNzFkMTk2ODBjNjE1ZWE3MzM2NTE5ZTNmZGY2ZjFl
MjZmM2IxMDc1ZWUxZGU5NmZmYTg4ODRlODI4MCIKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOWFlZTgy
YTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4NWE1M2M2YmZjZjU1YzEzMmEyMzIz
NSIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1
aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD10
bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCwKKyAgICAgICAgICAgIGtleV9zaGFyZT0oCisgICAg
ICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICBiaW5hc2Np
aS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICIwNDhiMjdkMDI4MjI0MmQ4NGI3ZmNj
MDJhOWM0ZjEzZWNhMDMyOWUzYzcwMjlhYTM0YTMzNzk0ZTZlN2JhMTg5IgorICAgICAgICAgICAg
ICAgICAgICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJjYTE5NThk
N2YzODczMTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgImIyIgorICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb249dGxz
LlRMU19WRVJTSU9OXzFfMywKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAw
KQorICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorCisgICAg
ZGVmIHRlc3RfcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWxvYWQoInRsc19uZXdfc2Vzc2lvbl90aWNrZXQuYmluIikpCisgICAgICAgIG5l
d19zZXNzaW9uX3RpY2tldCA9IHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRJc05vdE5vbmUobmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBuZXdfc2Vzc2lvbl90aWNrZXQsCisgICAgICAgICAgICBOZXdTZXNzaW9uVGlja2V0KAor
ICAgICAgICAgICAgICAgIHRpY2tldF9saWZldGltZT04NjQwMCwKKyAgICAgICAgICAgICAgICB0
aWNrZXRfYWdlX2FkZD0zMzAzNDUyNDI1LAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1i
IiIsCisgICAgICAgICAgICAgICAgdGlja2V0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgImRiZTZmMWE3N2E3OGMwNDI2YmZhNjA3Y2QwZDAyYjM1MDI0N2Q5MDYxODcw
NDcwOTU5NmJlZGE3ZTk2MmNjODEiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBtYXhfZWFybHlfZGF0YV9zaXplPTB4RkZGRkZGRkYsCisgICAgICAgICAgICApLAorICAgICAg
ICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMCkKKyAg
ICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmLCBuZXdfc2Vzc2lvbl90aWNrZXQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19uZXdfc2Vzc2lvbl90
aWNrZXQuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldF93aXRo
X3Vua25vd25fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2Fk
KCJ0bHNfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIikpCisg
ICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCA9IHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQsCisgICAgICAgICAgICBOZXdTZXNzaW9u
VGlja2V0KAorICAgICAgICAgICAgICAgIHRpY2tldF9saWZldGltZT04NjQwMCwKKyAgICAgICAg
ICAgICAgICB0aWNrZXRfYWdlX2FkZD0zMzAzNDUyNDI1LAorICAgICAgICAgICAgICAgIHRpY2tl
dF9ub25jZT1iIiIsCisgICAgICAgICAgICAgICAgdGlja2V0PWJpbmFzY2lpLnVuaGV4bGlmeSgK
KyAgICAgICAgICAgICAgICAgICAgImRiZTZmMWE3N2E3OGMwNDI2YmZhNjA3Y2QwZDAyYjM1MDI0
N2Q5MDYxODcwNDcwOTU5NmJlZGE3ZTk2MmNjODEiCisgICAgICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgICAgICBtYXhfZWFybHlfZGF0YV9zaXplPTB4RkZGRkZGRkYsCisgICAgICAgICAgICAg
ICAgb3RoZXJfZXh0ZW5zaW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAw
KQorICAgICAgICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3RpY2tl
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ1Zi5kYXRhLCBsb2Fk
KCJ0bHNfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIikKKyAg
ICAgICAgKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdGVkX2V4dGVuc2lvbnMoc2VsZik6CisgICAg
ICAgIGRhdGEgPSBsb2FkKCJ0bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluIikKKyAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5jcnlw
dGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRlbnNp
b25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAgRW5jcnlw
dGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPVsKKyAgICAg
ICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5
cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICAgICAgICAgIFNF
UlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMg
c2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDApCisgICAgICAgIHB1
c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmLCBleHRlbnNpb25zKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdGVkX2V4dGVu
c2lvbnNfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICBkYXRhID0gbG9hZCgidGxzX2VuY3J5cHRl
ZF9leHRlbnNpb25zX3dpdGhfYWxwbi5iaW4iKQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1k
YXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRFeHRlbnNpb25zKAorICAg
ICAgICAgICAgICAgIGFscG5fcHJvdG9jb2w9ImhxLTIwIiwKKyAgICAgICAgICAgICAgICBvdGhl
cl9leHRlbnNpb25zPVsKKyAgICAgICAgICAgICAgICAgICAgKHRscy5FeHRlbnNpb25UeXBlLlNF
UlZFUl9OQU1FLCBiIiIpLAorICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAg
ICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgU0VSVkVSX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlNfMiwK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cigxMTUpCisgICAgICAgIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmLCBleHRlbnNpb25z
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgZGVmIHRlc3RfcHVs
bF9lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193
aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluIikpCisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxs
X2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUo
ZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAg
IEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAgICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEt
MjAiLAorICAgICAgICAgICAgICAgIGVhcmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICBv
dGhlcl9leHRlbnNpb25zPVsKKyAgICAgICAgICAgICAgICAgICAgKHRscy5FeHRlbnNpb25UeXBl
LlNFUlZFUl9OQU1FLCBiIiIpLAorICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAg
ICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVSX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlNf
MywKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcigxMTYpCisgICAgICAgIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmLCBleHRlbnNp
b25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgZGVmIHRlc3Rf
cHVsbF9jZXJ0aWZpY2F0ZShzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgi
dGxzX2NlcnRpZmljYXRlLmJpbiIpKQorICAgICAgICBjZXJ0aWZpY2F0ZSA9IHB1bGxfY2VydGlm
aWNhdGUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0LCBiIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzLCBbKENFUlRJRklD
QVRFX0RBVEEsIGIiIildKQorCisgICAgZGVmIHRlc3RfcHVzaF9jZXJ0aWZpY2F0ZShzZWxmKToK
KyAgICAgICAgY2VydGlmaWNhdGUgPSBDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIHJlcXVlc3Rf
Y29udGV4dD1iIiIsIGNlcnRpZmljYXRlcz1bKENFUlRJRklDQVRFX0RBVEEsIGIiIildCisgICAg
ICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTYwMCkKKyAgICAgICAgcHVzaF9jZXJ0aWZp
Y2F0ZShidWYsIGNlcnRpZmljYXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBsb2FkKCJ0bHNfY2VydGlmaWNhdGUuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdWxsX2NlcnRp
ZmljYXRlX3ZlcmlmeShzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxz
X2NlcnRpZmljYXRlX3ZlcmlmeS5iaW4iKSkKKyAgICAgICAgdmVyaWZ5ID0gcHVsbF9jZXJ0aWZp
Y2F0ZV92ZXJpZnkoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyaWZ5LmFsZ29yaXRobSwgdGxzLlNpZ25hdHVyZUFs
Z29yaXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZl
cmlmeS5zaWduYXR1cmUsIENFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUpCisKKyAgICBkZWYg
dGVzdF9wdXNoX2NlcnRpZmljYXRlX3ZlcmlmeShzZWxmKToKKyAgICAgICAgdmVyaWZ5ID0gQ2Vy
dGlmaWNhdGVWZXJpZnkoCisgICAgICAgICAgICBhbGdvcml0aG09dGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgc2lnbmF0dXJlPUNFUlRJRklD
QVRFX1ZFUklGWV9TSUdOQVRVUkUsCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIo
NDAwKQorICAgICAgICBwdXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWYsIHZlcmlmeSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NlcnRpZmljYXRlX3Zlcmlm
eS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfZmluaXNoZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkKKyAgICAgICAgZmluaXNo
ZWQgPSBwdWxsX2ZpbmlzaGVkKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2Yo
KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZmluaXNoZWQudmVy
aWZ5X2RhdGEsCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAg
ICAgImYxNTc5MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZmOWFm
MjY4ZjQwOGVjNjgiCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9w
dXNoX2ZpbmlzaGVkKHNlbGYpOgorICAgICAgICBmaW5pc2hlZCA9IEZpbmlzaGVkKAorICAgICAg
ICAgICAgdmVyaWZ5X2RhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJm
MTU3OTIzMjM0ZmY5YTQ5MjFhYWRiMmUwZWM3YjFhMzBmY2U3M2ZiOWVjMGM0Mjc2ZjlhZjI2OGY0
MDhlYzY4IgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVy
KDEyOCkKKyAgICAgICAgcHVzaF9maW5pc2hlZChidWYsIGZpbmlzaGVkKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfZmluaXNoZWQuYmluIikpCisKKworY2xh
c3MgVmVyaWZ5Q2VydGlmaWNhdGVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF92ZXJpZnlf
Y2VydGlmaWNhdGVfY2hhaW4oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihTRVJWRVJfQ0VSVEZJ
TEUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgY2VydGlmaWNhdGUgPSBsb2FkX3BlbV94NTA5
X2NlcnRpZmljYXRlcyhmcC5yZWFkKCkpWzBdCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVp
Yy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5y
ZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAg
ICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiks
ICJ1bmFibGUgdG8gZ2V0IGxvY2FsIGlzc3VlciBjZXJ0aWZpY2F0ZSIKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBvaworICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSwKKyAgICAgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9j
YWxob3N0IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0aWZpY2F0
ZV9jaGFpbl9zZWxmX3NpZ25lZChzZWxmKToKKyAgICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5l
cmF0ZV9lY19jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJsb2NhbGhvc3Qi
LCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisgICAgICAgIHdpdGggcGF0Y2goImFp
b3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNu
b3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAgICAg
ICAgICAjIGZhaWwKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0
QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0
ZShjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImxvY2FsaG9zdCIpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAic2VsZiBzaWduZWQg
Y2VydGlmaWNhdGUiKQorCisgICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2Vy
dGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNlcnRpZmljYXRlLnB1YmxpY19ieXRl
cyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisgICAgICAgICAgICAgICAgY2VydGlmaWNh
dGU9Y2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgc2VydmVyX25hbWU9ImxvY2FsaG9zdCIs
CisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goImFpb3F1aWMudGxzLmxpYi5YNTA5X1NUT1JF
X25ldyIpCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX2ludGVybmFsX2Vy
cm9yKHNlbGYsIG1vY2tfc3RvcmVfbmV3KToKKyAgICAgICAgbW9ja19zdG9yZV9uZXcucmV0dXJu
X3ZhbHVlID0gdGxzLmZmaS5OVUxMCisKKyAgICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5lcmF0
ZV9lY19jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJsb2NhbGhvc3QiLCBj
dXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXModGxzLkFsZXJ0SW50ZXJuYWxFcnJvcikgYXMgY206CisgICAgICAgICAgICB2ZXJpZnlf
Y2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNlcnRpZmljYXRlLnB1YmxpY19i
eXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisgICAgICAgICAgICAgICAgY2VydGlm
aWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgc2VydmVyX25hbWU9ImxvY2FsaG9z
dCIsCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2Vw
dGlvbiksICJPcGVuU1NMIGNhbGwgdG8gWDUwOV9zdG9yZV9uZXcgZmFpbGVkIikKKworICAgIGRl
ZiB0ZXN0X3ZlcmlmeV9kYXRlcyhzZWxmKToKKyAgICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5l
cmF0ZV9lY19jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNv
bSIsIGN1cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisgICAgICAgIGNhZGF0YSA9IGNlcnRp
ZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSkKKworICAgICAg
ICAjIMKgdG9vIGVhcmx5CisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIp
IGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0g
KAorICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUgLSBkYXRldGlt
ZS50aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRDZXJ0aWZpY2F0ZUV4cGlyZWQpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2Fk
YXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJleGFtcGxl
LmNvbSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihjbS5leGNlcHRpb24pLCAiQ2VydGlmaWNhdGUgaXMgbm90IHZhbGlkIHlldCIpCisKKyAgICAg
ICAgIyB2YWxpZAorICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBt
b2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRp
ZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgK
KyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwg
c2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgKQorCisgICAgICAgIHdpdGgg
cGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAg
bW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2FmdGVyCisg
ICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNh
ZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJleGFtcGxlLmNvbSIK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIHRvbyBsYXRlCisgICAgICAgIHdpdGggcGF0Y2go
ImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191
dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2FmdGVyICsgZGF0ZXRp
bWUudGltZWRlbHRhKAorICAgICAgICAgICAgICAgIHNlY29uZHM9MQorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRDZXJ0aWZpY2F0ZUV4
cGlyZWQpIGFzIGNtOgorICAgICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAg
ICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNl
cnZlcl9uYW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiQ2VydGlmaWNhdGUgaXMgbm8gbG9u
Z2VyIHZhbGlkIikKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0KHNlbGYpOgorICAgICAg
ICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
Y29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwgY3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkK
KyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24u
RW5jb2RpbmcuUEVNKQorCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIp
IGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0g
Y2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAgICAgICAgICAjIHZhbGlkCisgICAg
ICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0
YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJleGFtcGxlLmNvbSIKKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBpbnZhbGlkCisgICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmljYXRlKSBhcyBjbToKKyAgICAgICAg
ICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1j
YWRhdGEsCisgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLAorICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0idGVzdC5leGFtcGxlLmNvbSIsCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAg
ICBzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAiaG9zdG5hbWUgJ3Rlc3QuZXhh
bXBsZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIsCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNh
dGUpIGFzIGNtOgorICAgICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAg
ICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZl
cl9uYW1lPSJhY21lLmNvbSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLCAiaG9zdG5hbWUg
J2FjbWUuY29tJyBkb2Vzbid0IG1hdGNoICdleGFtcGxlLmNvbSciCisgICAgICAgICAgICApCisK
KyAgICBkZWYgdGVzdF92ZXJpZnlfc3ViamVjdF93aXRoX3N1YmphbHRuYW1lKHNlbGYpOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKAorICAgICAgICAg
ICAgYWx0ZXJuYXRpdmVfbmFtZXM9WyIqLmV4YW1wbGUuY29tIiwgImV4YW1wbGUuY29tIl0sCisg
ICAgICAgICAgICBjb21tb25fbmFtZT0iZXhhbXBsZS5jb20iLAorICAgICAgICAgICAgY3VydmU9
ZWMuU0VDUDI1NlIxLAorICAgICAgICApCisgICAgICAgIGNhZGF0YSA9IGNlcnRpZmljYXRlLnB1
YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSkKKworICAgICAgICB3aXRoIHBh
dGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1v
Y2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKwor
ICAgICAgICAgICAgIyB2YWxpZAorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisgICAgICAgICAgICB2ZXJpZnlf
Y2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9
Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIgorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAgICAgIHZl
cmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2Vy
dGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJhY21lLmNvbSIKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0
cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAnYWNtZS5jb20nIGRv
ZXNuJ3QgbWF0Y2ggZWl0aGVyIG9mICcqLmV4YW1wbGUuY29tJywgJ2V4YW1wbGUuY29tJyIsCisg
ICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmlj
YXRlLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUuYmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU5YmRlNjI5MDU0ODU5OWJhODZmODVjMTUwNjEzYmY3NzZhY2Q3YzkKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDE1MzgKemNtZDtQVkV4Q3khMXt9VV57WVY+PnFtbm9tZEZMbk9wSHVTb0Q4
UlI4KWltajJFYGNndlQ8cylkOTsxIVdufD1MCnpXaWFxSDxUbGBCVi05NnU2SzBCdEcqbU5DMGRj
cl5XQ0pRb0dWPTJqZzdlYyMkYGd4SDcyTlZtXkhMSF5HSiNedwp6ailyMGVBfFEzbEppUGcoTVlf
cH15Mll0UVd2Tjk1YV5rIyg3NnVrWm1XQyFxIylmODU7PUQhezJJZENsUF85OGQKenMmKFE5cTk5
fH5kSDk/WWklVzcrNiYmK1FHS3Z4XzQzIU5PQT99ZEU/RzhnQjB8QUk1SUNKdW82TFR7MWklU2Zl
Cno3I0FVWGsmJV53eHJ3byMwVnYrWilXcTF4RmtlSTgtMF4qVk8wcm16KmhAeHtCK1hNK0diWShg
VCNuMjljaXs3dAp6QmZ0M34/eGJ3K0tEfkw+SmcxbEp2KHRedz90RWIqK2EtTTl6R1pyaSYqaSVQ
JmlyMWp0aHd6XjQ+SypjeU1CR0EKek14e2l0Z240PEgkQ1YwKz53RCQwK2A4RjVHbi1INFVKJCVO
PjFfWFlYMHlmRG1DSSsmX2o8Wl5PVyhkNHRyZzQ5CnpLbUItb3dlKmVZSHhqPnBvQkpyNWIlcFFq
OEZNYyVkfFJlfWQ3RF80XkBKLWYoPT5oQFBlXiVnXm4xc1ZvPH0qbAp6WHxaPkVVY0VvamI5cTtE
Pz1GdnBRNyl6dkNkLTtPd0FPUGd0QCZhaHgkclVqZ2teYmwlUjtTJXlNRk1XVTY9SnIKekNZb1JB
KVNLcz0pKCkpNnlYUmxPYzJhWnhTMm19fTkoUlQpTjJoYX0xRVUpRmNSbSFvQEBncjZ3M31NWEpW
T2dQCnoxKHx9Y2B3WH4qanpxcnl4NEJyQCRTU3wqaXJGYncheWwjQFNFRlgkXypnYm9APURAWEVC
N3hhSnszKGBERXtERQp6PllaJntTPkxYRCtnNXM1SkA5JCVfNDRRNjE+Vl49emdRK3sobCE1dDUk
Q14mYF8jVV5wWSZzVz5lTVQkN3Z5KWEKejktUExzQFpMMXB1QVJQMiUhfnwtaTw9a14wQXBraUkx
JE1UdmhXJmtIekNDI0EyMyNCYDU3N2l2Iz5CVHVgViE+CnoxQFRvYEt4dkxjbn5qbGBtN1NScCZT
RW0pMFo5dmtscnRHSEtvcytfaF9RKER6bWsxeTlLI15DeGpSMlF8Rlh+Tgp6dCoyezM0UWZHKG0w
OExSTipZQSY/bXU8dyorcjlHPUIwfEtAQEh7cWRAfGtVdWBxQ25LYjEyQDZGbTF0OCNGZTwKejlM
fnRkUWZeUmNVPDJiREZ0cihFbCN+PSQ+RmJ4STdNQ09ePkpALTxBYyYpdm1zJGM5KWkwPF9QRTFa
TUQkeFRICnoyQnZWYGpCVDM0PSp+fHJGMz5rezFfZ3BWaTthUG1meUR4fDF0eDdxI09OKGJFZHlw
VlB6ail5VCRGPkglWVgkNQp6RnFidGxzREpIPTYhPiFOeGR5fWpVQUApOSVwWVp6I2N5VHtVODF6
fV9OSj9EZCV5R0NiPFcjVG5WUFExcVpSdGoKenB8NXJSZUR+ZDRURTUjLU5AZ3NtVXc3eEQtZmdG
SGkzZz9LWU5pPjc5cDdmM0NAOyMtbmlVKEckQERpVzxWNSlDCno0WE1teGtONm9aWFFuTmYtNyM3
R1FJdXxfWTVlcj9pWC1kNCZXdmtZZU9Zaj0pRlIkcks+fERmP1ZvJGpfLTVPdAp6SWJ1SnFtMiEw
NT02YnFDVGRhUHxQcCRjZkZPXj9Fbj0xRHVOQTdqeCZKWE0ybSZsKi1JPG04Qjw7YHJQNEN7eGYK
ejgoT3djSUlgfkY3anU4YjFeNEQjWkczdTBqM3YjVSt3cVEqdCVCV34/TmhaKSErLTZvLSk2UHps
eitzKFFhZ0BMCnpvdF9QYGRPdGVfdzB9Q2ZgUChwVFNIR085cTlMeFZYNlc+KSZUc09RPldxKzZe
VzhxYipNOFpgdiRiV0BSYTI5Twp6UXRifkRtM01HM19VK15meCRAZzI9LSpBKDQtTUFhNCgyeXFs
PmNQU0B5JWA3SDEkTzkyJXs9Syp+cF9WWXZaSVUKempTcFU3KSVVdTUhXnhARl87Sz43dExAV2dg
fGdscEhyWHc2aU9EYHZgSF54JU5BalQkaTtgRCNHY1cpRVVMcn00CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlX3Zl
cmlmeS5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlX3ZlcmlmeS5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmYwODM5NTBiNTM4YzEyM2ViOWVkYzhmY2JlZDkyZTE5MzI5NTczNQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMzkyCnpjbVY7MzBlQWluMDBEI3UxT2I0OHJPdT05Y09kMEF2
djMlOUMyPW0lNz1yKiMhPGImYT5XeyVHJXxXQ09AYHJWYQp6bDs4R3plbEA1cyZWaVg3Nng7O35S
VyY3XnolQXp1KWYpemxHQytJNk8/cGNzIX08bSgzQVhtKmJobnFYKCEtR1oKem8hNH5CWFJgJFl6
R1A9VGUmaHw+VD9lI1Q8SWRXaG81XjBAaGZYd0RVNzlCcHlBUjNKXj9hQEJ4MyFAfkJKa001CnpI
MT1BRCYxIURmeDJyeGM9ZiZfamQqZiU0bC1WbG1FMjZFeHZFKmFiJnBOTjcxPmx5Qz9YbDtsTkw8
dVdENnxlMwp6YEY+RTR2dTJBOTVAN2EqZCpKfFdAbSZCN3NMbm5Rcnp+cyh0O0xpUDwyPT0xJH19
MmRMTT0xOD9vJjNiKz5iP3YKejFeX0Z+I214Sk9ibVJ5dlA4PGhobElZUCslWVR0KlBhSjc3VHhY
ZGF8MEJkbDM2PmoxQ0MwYVRPYjs4OHFaQzUoCnphYkkzWUttRWpacUh8UzFWRlpiSUFZfktIXnsl
WWVuYFU/UyZYKG9XbTVEfFFNI3NiSEdGd18kb3k4e1EzX19CWAptO3tgPno4PlBTRzhqV1RgMCEl
eW44JkhXfnRIQyYoWigkRXR5VU1RQVEyfEA4WFRBRlgKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbiBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTQwYWVj
ZmM2OWZiODRkNWJlZDZiMWFhYzkxNjJlYzEzYTA0Njg2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAyNTgKemNtWlElVkVEKChFVXtebV8yKHp2dXxhNDRSbFY2MHxJdSZsO21lLUNfQlokemVvUzNn
X1dZe0N0YW5YfEYxOCYhCnpaTTBiUD1BQ35HVVEqNm83ZCliWmtMXkRuZGVDVCprdHFZNEZxMUgm
RmYkX3EhK0hpfDI2cU5tMjV8O1FtZzt8dAp6VUVFNGRTKUchJSRHJVRFfEV0TCVOPk11RjtfRmA3
RFNxa2Vlb1FgfDc4TyFfIVJZKllyUkJEWmBuSWUoXj88U04KenFINmZvTzhGVEpVLSprfFY5O2pa
PFh+cDBtI0xTb210eD4kOzl9dDVVfTBmcVZQcytpdlJOM0lmVlN1fEZmbFV6CnlVJj4ocXBNZ1A7
IUh8S0tmdSV1IWZxe1Z5TzB6PzA3Nno2XnBmQ2Q/MUN2dCgwfHhfPkxraUZnTWxKeCRJI0dINgoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xp
ZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTExM2EzZTc1ZTE0ZDZkOTI5MGY1
ZGE0MjlhMzI1MDJkN2M0YzI2YwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzA2CnpjbVpRJVZB
Tnd+ZWo2VD56YytHQEAyfU10bkN+b21rI09jVnBMbzszXi1ORXpLaDxuPXBJeWVseiMrXmklcH1h
cgp6QFNsLV47cVUqWTQ1a2RtNDZGPCs0Si1AezN+VyVFOVpJdFJYI3Q9KDJMbUdgMTFBSE1Ma2Fe
VVA+NytfMDRPTkkKekFqWkhUb1NjKGludiN+MlNkXis7U2VsdXZtejx4PXp8RndJJSlyUlJ6eSpY
SDRCYHkzSygmJCMlME44PUt0M0M1CnpoT3dAcEJ9Z3w9aik4JWZMNUBMJmdfKUleamhUYTtnTSkq
VWdOdVdrZ04xe1lnTj1vZW02NDUrTDdSYkBpSjY1Iwp6bXdeZkIzfVhnJjIzTWQpTjB0c0oheC1v
NDRkKm05UGwpfHteM3YlfCUobU5FKnxXYlhXaVdRVS1mKDRHKDZiNH4KaS1eSlFpRmBobT9GfDtq
RCYxYiZ4bSNCcj15dVNuJURMcjE2c1JSSSsoTU1fawoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9wc2su
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9wc2suYmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNmNjk1YzNhN2IzN2MyNzAxOWFmYTUxYTYwNTI1Y2JiYzEwOTY2YjgKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDQ4MQp6Y21aUSVWNyR4QjlGPytTKkIkRXhlQVFiI0dtckF1emNz
cU5HRWl7QntvSitSNkNEcW11KillcFp3bGpXNk9ZVVAKemBafFAtYD5POXU5cVZKfjlseFhgJlkk
OyN6eEdlZDhVezlEQ1NnV2xXPTAwYUpfY2gzY0xyQW1hUnhgMERSeEg3CnpBMCs5V0tke1c5YFMt
UH1fVzNWKlk5MCUwcyhMRF8oRGAkWipvPkRGNGgtSEU7LT1qZEF2UCs/YCViK3FjeXgzQQp6KSUo
bC1VSE98RyltWE5jTDdSYi1nUEVtWHJlMztVaWgtQWJpLUNpS2dAdWBnayU8dz1XP142ZytNPihB
I0tfM04KenojempRI2xScTVsM0hBJVM1VEIkbVJPUlNwSW5rKFArRnspb1MqeEREVDY3e1U5MWMm
NEZXKjVZKjNtVk8wekpxCnpHeTtWZzc9ZTYtUVVlQUsxfTI5VHBiZDslM3xjXjhPQF5IZUVldihQ
SHM3aE97MmFIYFpxfEs4UU45R3hpT1UwYQp6QFo5Nk1uRXZuRWdSXl4+d1RfNiVBM2VHKXRANTV7
a29WT2pwTWRNcWk9UEVsYUMhZjgoOUwzN3peY2p9ZHNMeFMKeioqZiNXVUV4VlNNfkAzSG8+dCpe
PlFDZz9TSCVZLVZrP3VSeVFWeihxJHdAI1IyJGczYHBlMkdmMHB8X1U7Y0NRCnolN0VobiV6dFdy
UkdhekVWbFhyaT9eeF5uX3JMbDFWO1l+bGJEcDAjcDRkPGorO0JfJG1Ra2EwXmc2JGE+I05xTQpT
dUd9dSV1Q0trUkwqa1RGSFh7SUNBRkBnUwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI1NjhhODYxNjdmZjE2MTgzMWYzZTk3OWU3NDUwMmMzMDNlMTZhNWUKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDI4Ngp6Y21aUSVWM2NCSm8+QUxyQkVycShiU0JpNVVFWTN2ZWQwOVI+Sipt
Tz17fip0MD9rLVZ2Szc9ZSZjMTdLYCtGY2AKemwkRj4rPiNHeCg/bXRvM0tKKEpqdnZHbnVlcFIx
TlZfKnx6NUByLTtXQEtQRSYweCZuJmZ2LSomZnYoaE99RjRECnpgdzVZPXNUYU9tY2g4aCgrczsh
aVk5Rz1mdXlFcH5qbmgqV3kqWkdPeH1AUiMlNy02JGRZMyZuenE8Y2BfdjcheQp6a0dPYmQpKDM3
KTVeOFdAJn1RSnxVfW1ZOHNoNiZvViZHLXFWJkxGbFZQUiVyV01UeGVTczBqcncmKmYyRiNAZSsK
emtZRXNGVT1VOHUkdUNWdyVTa0xzKWgjVHxPeDg9eiY7N3JZIVRkaTFnQ0soOzExa2VkZzgpITE4
PGJ7OyhrdSl0ClhqWCtAck1nfUlRMm5HJVlDV2pRRGBIV2x1MXxDclQKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnMuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9u
cy5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzM1NDZjNzBjNDljZTZiM2IzNzM5ZmEyOTQzM2UxNzM5NzU1M2Vh
NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTAKemNtZDtKVTxoTGZgTTtEUTs2RFJ7QVBiMEth
QWphK1V9K0Z3VXw/V18oKEYqMGdATDZKRDlwZ2Z6fm1JY3p7Q0pqClFnOTxucG0+ZzBWeEVMNkAw
NH1UdSojSDBsCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbi5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbi5iaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQ4NDM2YTdiMzM4MzA3N2Y0YTM5YWQzMThhNThiMjhlM2JkMzU3MgpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTE1CnpjbWQ7SlY5MDA0V2RII0kxYFktYCl7SGAzQlpMMS04NnB8TjhR
MihEOFd7Zm5YSkNjV09iaH0/KkVzVTt6NDkrbAp6TT98VWVsaWBhODN8dEoxJW5VMyoxKzQjbkY+
b181Ti17N3FGcl5GcGNWZ2cpVlhJZXZKWCFJV295UE4lNDlwQm4KTD9vV1U9RnRQeXZRVjFRUgoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vh
cmx5X2RhdGEuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlOTA2OWY2YmUzZDJlNDU3ZTYzYzk0MmZjOWYwNTRj
ZGJhYzRhOTEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExNgp6Y21kO0pVP15iN1YqbWpHMWBZ
LWApe0hgM0JMZkM0MjhSRGo4TndKczc/PkNZY3V4bGBhU0FrPXgrUSh+ZFkwMzEKenxObk99YUdx
SElUcX05SFk2dj82OHZ7IU4hfmckNCY1U0BNa2krYF83WHZGKWtlUHdXe1JzbVgxMHlwN0JMaD5x
CkswMFREenFhKi1vXzhaNm0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19maW5pc2hlZC5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY0YmIyZjJhOWQyNzUzOGNhMjE1NGFiNzk0ZjM5
ZWY3NzZmZDVmYQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzYKdWNtVis8ME5laSowMDFFSVND
VFJgfEMmaTVzQHBDTyRGWlhpJlU1Pm96e0RxU24ofUQkMjwmSmFORC1SPQoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lv
bl90aWNrZXQuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXQu
YmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0MzliNDczMWUwNGIzYjZkNmQzYTYxNWZjMzNkZTVkZjc0NmNmNWIK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU3CnpjbVpRIVVAJkUxM35WXl5ZJnxDZmdUbjErQUQz
NUU5Qnw3MWx+OGx4ZzA/QT5gJU5+OTAoWntIPzY9RWJDWUA8eQpNOzkkXlZWRUdSTzBEd2pxSl4l
bSEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODM3OTI4OTBhY2U3NTEzY2ZiNWFhMThhMzczYTk0OWY0MWRi
OGNjZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjQKemNtWlEhVjZiNmUzflZeXlkmfENmZ1Ru
MStBRDM1RTlCfDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5ClQ7QWhaY1ZFR1JPMjle
eFdZNURtOEY7Zn0qCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsby5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxz
X3NlcnZlcl9oZWxsby5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBhNmM1MWZlNTYwMjk1MTNiODM4YzZkMjQz
MTljZTVjOGZmZGJmNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTU1CnpjbVY7TTBBJjlIMDA1
VCoxRmZpMWFuWTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6IU9K
cUVEY1JpcTA3QER8aXFKP31RXnZvflJsemMlR0JwemQwMDIoX0QqeXJtMU9QSnRNRjFCN0s/SThA
Jj9xODgKeipoXyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hBeFo/
Wn1UTShDY0w0UWplal9FCko3UldtMCYkMU4qS3tAfmMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNr
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZWNjZGY1OWFiOTVlODllNDA0Y2UyMzRkYjNmODFkMThkZTFlMGViCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNjEKemNtVjtTMEFCd0IwMDVsPjFJKVV3MXBGSi02Z3c9Jnhw
ZzRWSGB4PyQreCZxaTZCPkspYDliNU1IejFVUT1qZkh0Cnpedj1PPmhPbVR8MGw7Rz5WJEY2PWZ7
IW5XRkhCMiFhais4dDAwMzEwRCp5cm0xT1BKdE1GMUI3Sz9IQEAmZGNsawp6UkZCNDJ6ZnJqOCtK
cWBWUjxVSEZlfEd9UEZebUBFaCMwbSZtNk5ldFc9WW9jU3ZZIUE1e25pPWMmKjRsN24tZEIKUChg
QE5vVnMtIzIwMElDMjZJKDtrCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiZTViNzA3M2ZkYmUzY2I3YmZmYjcxOGIxNDZkZTI1
MTA4M2JlZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE2Mgp6Y21WO1QwQTJxQTAwNW8/MUZm
aTFhblk4NSN1ZSZ3SGNfNUctKXxsIV5SV2tCO29nQDJzRUFJMmZGUFJnZn0rdWUKeiFPSnFFRGNS
aXEwN0BEfGlxSj99UV52b35SbHpjJUdCcHpkMDAzNDFEKnlybTFPUEp0TUYxQjdLP0k4QCY/cTg4
CnoqaF8hUjA7JENES0ZSfHI8SHJKO3FlP1MqUEh1YWxpQ29HWVAmQEU5aXBHPENIQXhaP1p9VE0o
Q2NMNFFqZWpfRQpRN1JXbTAmJDJLJTAwVS1rWnxSZGxfeTdPXgoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3V0aWxzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwYmFiMmI2OGEyNDhmYmM1MzQwZjIzZTJh
Nzk3NjcwNTBhNWY1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRp
bHMucHkKQEAgLTAsMCArMSw3MSBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBkYXRldGltZQor
aW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitmcm9tIGNyeXB0b2dyYXBo
eSBpbXBvcnQgeDUwOQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LmJhY2tlbmRzIGltcG9ydCBk
ZWZhdWx0X2JhY2tlbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzIGltcG9y
dCBoYXNoZXMKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMg
aW1wb3J0IGVjCisKKworZGVmIGdlbmVyYXRlX2VjX2NlcnRpZmljYXRlKGNvbW1vbl9uYW1lLCBj
dXJ2ZT1lYy5TRUNQMjU2UjEsIGFsdGVybmF0aXZlX25hbWVzPVtdKToKKyAgICBrZXkgPSBlYy5n
ZW5lcmF0ZV9wcml2YXRlX2tleShiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpLCBjdXJ2ZT1jdXJ2
ZSkKKworICAgIHN1YmplY3QgPSBpc3N1ZXIgPSB4NTA5Lk5hbWUoCisgICAgICAgIFt4NTA5Lk5h
bWVBdHRyaWJ1dGUoeDUwOS5OYW1lT0lELkNPTU1PTl9OQU1FLCBjb21tb25fbmFtZSldCisgICAg
KQorCisgICAgYnVpbGRlciA9ICgKKyAgICAgICAgeDUwOS5DZXJ0aWZpY2F0ZUJ1aWxkZXIoKQor
ICAgICAgICAuc3ViamVjdF9uYW1lKHN1YmplY3QpCisgICAgICAgIC5pc3N1ZXJfbmFtZShpc3N1
ZXIpCisgICAgICAgIC5wdWJsaWNfa2V5KGtleS5wdWJsaWNfa2V5KCkpCisgICAgICAgIC5zZXJp
YWxfbnVtYmVyKHg1MDkucmFuZG9tX3NlcmlhbF9udW1iZXIoKSkKKyAgICAgICAgLm5vdF92YWxp
ZF9iZWZvcmUoZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkpCisgICAgICAgIC5ub3RfdmFsaWRf
YWZ0ZXIoZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkgKyBkYXRldGltZS50aW1lZGVsdGEoZGF5
cz0xMCkpCisgICAgKQorICAgIGlmIGFsdGVybmF0aXZlX25hbWVzOgorICAgICAgICBidWlsZGVy
ID0gYnVpbGRlci5hZGRfZXh0ZW5zaW9uKAorICAgICAgICAgICAgeDUwOS5TdWJqZWN0QWx0ZXJu
YXRpdmVOYW1lKAorICAgICAgICAgICAgICAgIFt4NTA5LkROU05hbWUobmFtZSkgZm9yIG5hbWUg
aW4gYWx0ZXJuYXRpdmVfbmFtZXNdCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY3JpdGlj
YWw9RmFsc2UsCisgICAgICAgICkKKyAgICBjZXJ0ID0gYnVpbGRlci5zaWduKGtleSwgaGFzaGVz
LlNIQTI1NigpLCBkZWZhdWx0X2JhY2tlbmQoKSkKKyAgICByZXR1cm4gY2VydCwga2V5CisKKwor
ZGVmIGxvYWQobmFtZSk6CisgICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pLCBuYW1lKQorICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAg
ICAgcmV0dXJuIGZwLnJlYWQoKQorCisKK2RlZiBydW4oY29ybyk6CisgICAgcmV0dXJuIGFzeW5j
aW8uZ2V0X2V2ZW50X2xvb3AoKS5ydW5fdW50aWxfY29tcGxldGUoY29ybykKKworCitTRVJWRVJf
Q0FDRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAicHlj
YWNlcnQucGVtIikKK1NFUlZFUl9DRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5h
bWUoX19maWxlX18pLCAic3NsX2NlcnQucGVtIikKK1NFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlO
ID0gb3MucGF0aC5qb2luKAorICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJzc2xfY2Vy
dF93aXRoX2NoYWluLnBlbSIKKykKK1NFUlZFUl9LRVlGSUxFID0gb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICJzc2xfa2V5LnBlbSIpCitTS0lQX1RFU1RTID0gZnJvemVu
c2V0KG9zLmVudmlyb24uZ2V0KCJBSU9RVUlDX1NLSVBfVEVTVFMiLCAiIikuc3BsaXQoIiwiKSkK
KworaWYgb3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfREVCVUciKToKKyAgICBsb2dnaW5nLmJhc2lj
Q29uZmlnKGxldmVsPWxvZ2dpbmcuREVCVUcpCisKK2lmICgKKyAgICBzeXMucGxhdGZvcm0gPT0g
IndpbjMyIgorICAgIGFuZCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBhbmQgc3lz
LnZlcnNpb25faW5mby5taW5vciA9PSA4CispOgorICAgICMgUHl0aG9uIDMuOCB1c2VzIFByb2Fj
dG9yRXZlbnRMb29wIGJ5IGRlZmF1bHQsCisgICAgIyB3aGljaCBicmVha3MgVURQIC8gSVB2NiBz
dXBwb3J0LCBzZWU6CisgICAgIworICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUz
OTE0OAorCisgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcF9wb2xpY3koYXN5bmNpby5XaW5kb3dz
U2VsZWN0b3JFdmVudExvb3BQb2xpY3koKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy92ZXJzaW9uX25lZ290aWF0aW9uLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy92ZXJzaW9uX25l
Z290aWF0aW9uLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODUwOWM5MDk5Y2VhOGFlZTI4ZGVmZmI1NTA2MmQz
OTNkMWMzYmE4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMQpsY21hRkcwMGJQZik8ayprWUcy
e1dAbClUfj9BS0szZ3w2PUlWKmVRIUJtdUlKM2orV0UKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTBmMTNlMWIyYzM3NTNlMjg2
OTNmYWUyMzgyNTJhZjY3YTc4ODYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsNTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5i
aW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9zZXJ2ZXIuYmluCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3B5Y2FjZXJ0LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9yZXRyeS5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xf
Y2VydC5wZW0KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9jaGFpbi5wZW0KKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2tleS5wZW0KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9h
c3luY2lvLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpb19jb21wYXQucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9idWZmZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jb25uZWN0aW9uLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDAucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3BhY2tldC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVy
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGVzdF9yZWNvdmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Rlc3RfdGxzLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4KKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlX3ZlcmlmeS5iaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsby5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Ns
aWVudF9oZWxsb193aXRoX2FscG4uYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9wc2suYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9f
d2l0aF9zbmkuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9u
cy5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhf
YWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dp
dGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Zpbmlz
aGVkLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfbmV3X3Nlc3Npb25fdGlja2V0LmJpbgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90bHNfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5rbm93bl9l
eHRlbnNpb24uYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG8uYmluCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4K
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdmVyc2lv
bl9uZWdvdGlhdGlvbi5iaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTRlYzk1YzlhMTYx
NjdjYzNlYzBjMzE3MzUzMmM1NDAwYzExNmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjEgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9MSUNFTlNFCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL01BTklGRVNULmluCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURN
RS5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAuY2ZnCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9DT05UUklCVVRJTkcgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9DT05UUklCVVRJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3NWJlMTI2ZmI0NTg5Yzg2NTk5NGM1OWQ2
MTNlM2Q0MWE3YTk2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRS
SUJVVElORwpAQCAtMCwwICsxLDMwIEBACisjIEhvdyB0byBDb250cmlidXRlCisKK1dlJ2QgbG92
ZSB0byBhY2NlcHQgeW91ciBwYXRjaGVzIGFuZCBjb250cmlidXRpb25zIHRvIHRoaXMgcHJvamVj
dC4gVGhlcmUgYXJlCitqdXN0IGEgZmV3IHNtYWxsIGd1aWRlbGluZXMgeW91IG5lZWQgdG8gZm9s
bG93LgorCisjIyBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudAorCitDb250cmlidXRpb25z
IHRvIHRoaXMgcHJvamVjdCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgQ29udHJpYnV0b3IgTGlj
ZW5zZQorQWdyZWVtZW50LiBZb3UgKG9yIHlvdXIgZW1wbG95ZXIpIHJldGFpbiB0aGUgY29weXJp
Z2h0IHRvIHlvdXIgY29udHJpYnV0aW9uOwordGhpcyBzaW1wbHkgZ2l2ZXMgdXMgcGVybWlzc2lv
biB0byB1c2UgYW5kIHJlZGlzdHJpYnV0ZSB5b3VyIGNvbnRyaWJ1dGlvbnMgYXMKK3BhcnQgb2Yg
dGhlIHByb2plY3QuIEhlYWQgb3ZlciB0byA8aHR0cHM6Ly9jbGEuZGV2ZWxvcGVycy5nb29nbGUu
Y29tLz4gdG8gc2VlCit5b3VyIGN1cnJlbnQgYWdyZWVtZW50cyBvbiBmaWxlIG9yIHRvIHNpZ24g
YSBuZXcgb25lLgorCitZb3UgZ2VuZXJhbGx5IG9ubHkgbmVlZCB0byBzdWJtaXQgYSBDTEEgb25j
ZSwgc28gaWYgeW91J3ZlIGFscmVhZHkgc3VibWl0dGVkIG9uZQorKGV2ZW4gaWYgaXQgd2FzIGZv
ciBhIGRpZmZlcmVudCBwcm9qZWN0KSwgeW91IHByb2JhYmx5IGRvbid0IG5lZWQgdG8gZG8gaXQK
K2FnYWluLgorCisjIyBDb2RlIHJldmlld3MKKworQWxsIHN1Ym1pc3Npb25zLCBpbmNsdWRpbmcg
c3VibWlzc2lvbnMgYnkgcHJvamVjdCBtZW1iZXJzLCByZXF1aXJlIHJldmlldy4gV2UKK3VzZSBH
aXRIdWIgcHVsbCByZXF1ZXN0cyBmb3IgdGhpcyBwdXJwb3NlLiBDb25zdWx0CitbR2l0SHViIEhl
bHBdKGh0dHBzOi8vaGVscC5naXRodWIuY29tL2FydGljbGVzL2Fib3V0LXB1bGwtcmVxdWVzdHMv
KSBmb3IgbW9yZQoraW5mb3JtYXRpb24gb24gdXNpbmcgcHVsbCByZXF1ZXN0cy4KK0ZvciBpbnN0
cnVjdGlvbnMgZm9yIGNvbnRyaWJ1dGluZyBjb2RlLCBwbGVhc2UgcmVhZDoKK2h0dHBzOi8vZ2l0
aHViLmNvbS9nb29nbGUvcHl3ZWJzb2NrZXQvd2lraS9Db2RlUmV2aWV3SW5zdHJ1Y3Rpb24KKwor
IyMgQ29tbXVuaXR5IEd1aWRlbGluZXMKKworVGhpcyBwcm9qZWN0IGZvbGxvd3MKK1tHb29nbGUn
cyBPcGVuIFNvdXJjZSBDb21tdW5pdHkgR3VpZGVsaW5lc10oaHR0cHM6Ly9vcGVuc291cmNlLmdv
b2dsZS9jb25kdWN0LykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTFiZWE5MDI1NDI4Nzc5ZTE2
NDQ1OWMyYTEyMGUxYTA3YWE4NWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvTElDRU5TRQpAQCAtMCwwICsxLDI4IEBACitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4K
K0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0Ogor
CisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0
aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01B
TklGRVNULmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MjU2ODgyYzU2ZmViNzI4MTJjOTljOGE4Mzc5OTc5ZTYz
ZTRhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9NQU5JRkVTVC5pbgpA
QCAtMCwwICsxLDYgQEAKK2luY2x1ZGUgQ09QWUlORworaW5jbHVkZSBNQU5JRkVTVC5pbgoraW5j
bHVkZSBSRUFETUUKK3JlY3Vyc2l2ZS1pbmNsdWRlIGV4YW1wbGUgKi5weQorcmVjdXJzaXZlLWlu
Y2x1ZGUgbW9kX3B5d2Vic29ja2V0ICoucHkKK3JlY3Vyc2l2ZS1pbmNsdWRlIHRlc3QgKi5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3N2NiZTU1MGMwNjU3ODJiMGUzMTVkZTA0NjUxYzll
MDY4Y2IzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQK
QEAgLTAsMCArMSwzNiBAQAorCisjIHB5d2Vic29ja2V0MyAjCisKK1RoZSBweXdlYnNvY2tldCBw
cm9qZWN0IGFpbXMgdG8gcHJvdmlkZSBhIFtXZWJTb2NrZXRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2NDU1KSBzdGFuZGFsb25lIHNlcnZlci4KKworcHl3ZWJzb2NrZXQgaXMgaW50
ZW5kZWQgZm9yICoqdGVzdGluZyoqIG9yICoqZXhwZXJpbWVudGFsKiogcHVycG9zZXMuCisKK1J1
biB0aGlzIHRvIHJlYWQgdGhlIGdlbmVyYWwgZG9jdW1lbnQ6CitgYGAKKyQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0CitgYGAKKworUGxlYXNlIHNlZSBbV2lraV0oLi4vLi4vd2lraSkgZm9yIG1vcmUg
ZGV0YWlscy4KKworIyBJTlNUQUxMICMKKworVG8gaW5zdGFsbCB0aGlzIHBhY2thZ2UgdG8gdGhl
IHN5c3RlbSwgcnVuIHRoaXM6CitgYGAKKyQgcHl0aG9uIHNldHVwLnB5IGJ1aWxkCiskIHN1ZG8g
cHl0aG9uIHNldHVwLnB5IGluc3RhbGwKK2BgYAorCitUbyBpbnN0YWxsIHRoaXMgcGFja2FnZSBh
cyBhIG5vcm1hbCB1c2VyLCBydW4gdGhpcyBpbnN0ZWFkOgorCitgYGAKKyQgcHl0aG9uIHNldHVw
LnB5IGJ1aWxkCiskIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcgorYGBgCisjIExBVU5D
SCAjCisKK1RvIHVzZSBweXdlYnNvY2tldCBhcyBzdGFuZGFsb25lIHNlcnZlciwgcnVuIHRoaXMg
dG8gcmVhZCB0aGUgZG9jdW1lbnQ6CitgYGAKKyQgcHlkb2MgbW9kX3B5d2Vic29ja2V0LnN0YW5k
YWxvbmUKK2BgYAorIyBEaXNjbGFpbWVyICMKK1RoaXMgaXMgbm90IGFuIG9mZmljaWFsbHkgc3Vw
cG9ydGVkIEdvb2dsZSBwcm9kdWN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fi
b3J0X2hhbmRzaGFrZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI3MTljYTg5NzM3MTA1NzE5YzcxYzJh
NDJlYWZmMGQ0NjQ0NzhjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJF
eGNlcHRpb24oCisgICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlIikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvYWJvcnRfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDRjMjQwYmYyYzFjYjBiZDUzOGVjMzdiZjU1MWMxMTI1NjM5NmI4
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRfd3No
LnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRz
aGFrZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAg
ICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBy
YWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigKKyAgICAgICAgIkFib3J0ZWQg
aW4gd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIikKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2OWNkN2UxZWU2NTNkNTlmMDRiODAyZmYzNGM4ZDA4MTMxN2NhODkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVy
X2JlbmNobWFyay5odG1sCkBAIC0wLDAgKzEsMTM0IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywg
R29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5BcnJheUJ1ZmZlciBiZW5jaG1hcms8
L3RpdGxlPgorPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBQ
UklOVF9TSVpFID0gdHJ1ZTsKKworLy8gSW5pdGlhbCBzaXplIG9mIGFycmF5cy4KK3ZhciBTVEFS
VF9TSVpFID0gMTAgKiAxMDI0OworLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2Yg
YW4gYXJyYXkgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KK3ZhciBTVE9QX1RIUkVTSE9MRCA9IDEw
MDAwMCAqIDEwMjQ7CisvLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIGFycmF5IGlzIHNtYWxsLCB3cml0
ZS9yZWFkIHRoZSBhcnJheSBtdWx0aXBsZSB0aW1lcworLy8gdW50aWwgdGhlIHN1bSBvZiBzaXpl
cyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgordmFyIE1JTl9UT1RBTCA9IDEwMDAwMCAqIDEwMjQ7
Cit2YXIgTVVMVElQTElFUlMgPSBbNSwgMl07CisKKy8vIFJlcGVhdCBiZW5jaG1hcmsgZm9yIHNl
dmVyYWwgdGltZXMgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBvZiBvcHRpbWl6ZWQKKy8vIChzdWNo
IGFzIEpJVCkgcnVuLgordmFyIFJFUEVBVF9GT1JfV0FSTVVQID0gMzsKKworZnVuY3Rpb24gd3Jp
dGVCZW5jaG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKKyAgdmFyIHRvdGFsU2l6ZSA9IDA7CisgIHdo
aWxlICh0b3RhbFNpemUgPCBtaW5Ub3RhbCkgeworICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBB
cnJheUJ1ZmZlcihzaXplKTsKKworICAgIC8vIFdyaXRlICdhJ3MuCisgICAgZmlsbEFycmF5QnVm
ZmVyKGFycmF5QnVmZmVyLCAweDYxKTsKKworICAgIHRvdGFsU2l6ZSArPSBzaXplOworICB9Cisg
IHJldHVybiB0b3RhbFNpemU7Cit9CisKK2Z1bmN0aW9uIHJlYWRCZW5jaG1hcmsoc2l6ZSwgbWlu
VG90YWwpIHsKKyAgdmFyIHRvdGFsU2l6ZSA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBtaW5U
b3RhbCkgeworICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKKwor
ICAgIGlmICghdmVyaWZ5QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIsIDB4MDApKSB7CisgICAgICBx
dWV1ZUxvZygnVmVyaWZpY2F0aW9uIGZhaWxlZCcpOworICAgICAgcmV0dXJuIC0xOworICAgIH0K
KworICAgIHRvdGFsU2l6ZSArPSBzaXplOworICB9CisgIHJldHVybiB0b3RhbFNpemU7Cit9CisK
K2Z1bmN0aW9uIHJ1bkJlbmNobWFyayhiZW5jaG1hcmtGdW5jdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIHN0b3BUaHJlc2hvbGQsCisgICAg
ICAgICAgICAgICAgICAgICAgbWluVG90YWwsCisgICAgICAgICAgICAgICAgICAgICAgbXVsdGlw
bGllcnMsCisgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllckluZGV4KSB7CisgIHdoaWxl
IChzaXplIDw9IHN0b3BUaHJlc2hvbGQpIHsKKyAgICB2YXIgbWF4U3BlZWQgPSAwOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBSRVBFQVRfRk9SX1dBUk1VUDsgKytpKSB7CisgICAgICB2YXIg
c3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOworCisgICAgICB2YXIgdG90YWxTaXplID0g
YmVuY2htYXJrRnVuY3Rpb24oc2l6ZSwgbWluVG90YWwpOworCisgICAgICBtYXhTcGVlZCA9IE1h
dGgubWF4KG1heFNwZWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVTcGVl
ZEluS0IodG90YWxTaXplLCBzdGFydFRpbWVJbk1zKSk7CisgICAgfQorICAgIHF1ZXVlTG9nKGZv
cm1hdFJlc3VsdEluS2lCKHNpemUsIG1heFNwZWVkLCBQUklOVF9TSVpFKSk7CisKKyAgICBzaXpl
ICo9IG11bHRpcGxpZXJzW211bHRpcGxpZXJJbmRleF07CisgICAgbXVsdGlwbGllckluZGV4ID0g
KG11bHRpcGxpZXJJbmRleCArIDEpICUgbXVsdGlwbGllcnMubGVuZ3RoOworICB9Cit9CisKK2Z1
bmN0aW9uIHJ1bkJlbmNobWFya3MoKSB7CisgIHF1ZXVlTG9nKCdNZXNzYWdlIHNpemUgaW4gS2lC
LCBTcGVlZCBpbiBrQi9zJyk7CisKKyAgcXVldWVMb2coJ1dyaXRlIGJlbmNobWFyaycpOworICBy
dW5CZW5jaG1hcmsoCisgICAgICB3cml0ZUJlbmNobWFyaywgU1RBUlRfU0laRSwgU1RPUF9USFJF
U0hPTEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOworICBxdWV1ZUxvZygnRmluaXNoZWQn
KTsKKworICBxdWV1ZUxvZygnUmVhZCBiZW5jaG1hcmsnKTsKKyAgcnVuQmVuY2htYXJrKAorICAg
ICAgcmVhZEJlbmNobWFyaywgU1RBUlRfU0laRSwgU1RPUF9USFJFU0hPTEQsIE1JTl9UT1RBTCwg
TVVMVElQTElFUlMsIDApOworICBhZGRUb0xvZygnRmluaXNoZWQnKTsKK30KKworZnVuY3Rpb24g
aW5pdCgpIHsKKyAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisg
IHF1ZXVlTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOworCisg
IGFkZFRvTG9nKCdTdGFydGVkLi4uJyk7CisKKyAgc2V0VGltZW91dChydW5CZW5jaG1hcmtzLCAw
KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8dGV4
dGFyZWEKKyAgICBpZD0ibG9nIiByb3dzPSI1MCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25s
eT48L3RleHRhcmVhPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNoX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGY1MGU3N2RiMjc2Y2NhMWRlNDcyMDU5YTA3NDA3MWI4
MWE5M2NjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5j
aF93c2gucHkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJBIHNpbXBsZSBs
b2FkIHRlc3RlciBmb3IgV2ViU29ja2V0IGNsaWVudHMuCisKK0EgY2xpZW50IHByb2dyYW0gc2Vu
ZHMgYSBtZXNzYWdlIGZvcm1hdHRlZCBhcyAiPHRpbWU+IDxjb3VudD4gPG1lc3NhZ2U+IiB0bwor
dGhpcyBoYW5kbGVyLiBUaGlzIGhhbmRsZXIgc3RhcnRzIHNlbmRpbmcgdG90YWwgPGNvdW50PiBX
ZWJTb2NrZXQgbWVzc2FnZXMKK2NvbnRhaW5pbmcgPG1lc3NhZ2U+IGV2ZXJ5IDx0aW1lPiBzZWNv
bmRzLiA8dGltZT4gY2FuIGJlIGEgZmxvYXRpbmcgcG9pbnQKK3ZhbHVlLiA8Y291bnQ+IG11c3Qg
YmUgYW4gaW50ZWdlciB2YWx1ZS4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydAoraW1wb3J0IHRpbWUKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCisK
K2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzICAj
IEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICBw
YXJ0cyA9IGxpbmUuc3BsaXQoJyAnKQorICAgIGlmIGxlbihwYXJ0cykgIT0gMzoKKyAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignQmFkIHBhcmFtZXRlciBmb3JtYXQnKQorICAgIHdhaXQgPSBmbG9h
dChwYXJ0c1swXSkKKyAgICBjb3VudCA9IGludChwYXJ0c1sxXSkKKyAgICBtZXNzYWdlID0gcGFy
dHNbMl0KKyAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6CisgICAgICAgIHJlcXVlc3Qud3Nfc3Ry
ZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICB0aW1lLnNsZWVwKHdhaXQpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMWU1Yzk3YjNhNzFiY2Y5ZWJkZTdjNGZjYWYxNTM3NTM4OWIxYzY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuaHRt
bApAQCAtMCwwICsxLDE3NSBAQAorPCEtLQorQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCitB
bGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKwor
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlv
bi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKK2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0+CisKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+V2ViU29ja2V0IGJlbmNobWFyazwvdGl0bGU+Cis8c2NyaXB0
IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Zh
ciBhZGRyZXNzQm94ID0gbnVsbDsKKworZnVuY3Rpb24gZ2V0Q29uZmlnKCkgeworICByZXR1cm4g
eworICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKKyAgICBwcmludFNpemU6IGdldEJv
b2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAorICAgIG51bVNvY2tldHM6IGdldEludEZyb21J
bnB1dCgnbnVtc29ja2V0cycpLAorICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KKyAg
ICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKKyAgICBu
dW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMn
KSwKKyAgICBzdGFydFNpemU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCisgICAgLy8g
U3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhy
ZXNob2xkLgorICAgIHN0b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9s
ZCcpLAorICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9y
ZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCisgICAgLy8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyBy
ZWFjaGVzIHRoaXMgdGhyZXNob2xkLgorICAgIG1pblRvdGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21p
bnRvdGFsJyksCisgICAgbXVsdGlwbGllcnM6IGdldEZsb2F0QXJyYXlGcm9tSW5wdXQoJ211bHRp
cGxpZXJzJyksCisgICAgdmVyaWZ5RGF0YTogZ2V0Qm9vbEZyb21DaGVja0JveCgndmVyaWZ5ZGF0
YScpLAorICAgIGFkZFRvTG9nOiBhZGRUb0xvZywKKyAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3Vt
bWFyeSwKKyAgICBtZWFzdXJlVmFsdWU6IG1lYXN1cmVWYWx1ZSwKKyAgICBub3RpZnlBYm9ydDog
bm90aWZ5QWJvcnQKKyAgfTsKK30KKworZnVuY3Rpb24gb25TZW5kQmVuY2htYXJrKCkgeworICB2
YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21D
aGVja0JveCgnd29ya2VyJyksICdzZW5kQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uUmVj
ZWl2ZUJlbmNobWFyaygpIHsKKyAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlv
bihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFy
aycpOworfQorCitmdW5jdGlvbiBvbkJhdGNoQmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0g
Z2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29y
a2VyJyksICdiYXRjaEJlbmNobWFyaycpOworfQorCitmdW5jdGlvbiBvblN0b3AoKSB7CisgIHZh
ciBjb25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNo
ZWNrQm94KCd3b3JrZXInKSwgJ3N0b3AnKTsKK30KKworZnVuY3Rpb24gaW5pdCgpIHsKKyAgYWRk
cmVzc0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7CisgIGxvZ0JveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKworICBzdW1tYXJ5Qm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsKKworICB2YXIgc2NoZW1lID0gd2luZG93Lmxv
Y2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8gJ3dzczovLycgOiAnd3M6Ly8nOworICB2YXIg
ZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvYmVuY2ht
YXJrX2hlbHBlcic7CisKKyAgYWRkcmVzc0JveC52YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOworCisg
IGFkZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOworICBh
ZGRUb1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisK
KyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgeworICAgIGFkZFRvTG9nKCdXZWJTb2Nr
ZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9CisKKyAgaW5pdFdvcmtlcignJyk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKworPGRpdiBpZD0iYmVuY2ht
YXJrX2RpdiI+CisgIHVybCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9IjQw
Ij4KKyAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2VuZEJl
bmNobWFyaygpIj4KKyAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9uY2xp
Y2s9Im9uUmVjZWl2ZUJlbmNobWFyaygpIj4KKyAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9
ImJhdGNoIiBvbmNsaWNrPSJvbkJhdGNoQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0
dG9uIiB2YWx1ZT0ic3RvcCIgb25jbGljaz0ib25TdG9wKCkiPgorCisgIDxici8+CisKKyAgPGlu
cHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJpbnRzaXplIiBjaGVja2VkPgorICA8bGFiZWwgZm9y
PSJwcmludHNpemUiPlByaW50IHNpemUgYW5kIHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgorICA8
aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ2ZXJpZnlkYXRhIiBjaGVja2VkPgorICA8bGFiZWwg
Zm9yPSJ2ZXJpZnlkYXRhIj5WZXJpZnkgZGF0YTwvbGFiZWw+CisgIDxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgaWQ9IndvcmtlciI+CisgIDxsYWJlbCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtlcjwv
bGFiZWw+CisKKyAgPGJyLz4KKworICBQYXJhbWV0ZXJzOgorCisgIDxici8+CisKKyAgPHRhYmxl
PgorICAgIDx0cj4KKyAgICAgIDx0ZD5OdW0gc29ja2V0czwvdGQ+CisgICAgICA8dGQ+PGlucHV0
IHR5cGU9InRleHQiIGlkPSJudW1zb2NrZXRzIiB2YWx1ZT0iMSI+PC90ZD4KKyAgICA8L3RyPgor
ICAgIDx0cj4KKyAgICAgIDx0ZD5OdW1iZXIgb2YgaXRlcmF0aW9uczwvdGQ+CisgICAgICA8dGQ+
PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW1pdGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KKyAg
ICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25z
PC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlv
bnMiIHZhbHVlPSIwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPlN0YXJ0
IHNpemU8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2
YWx1ZT0iMTAyNDAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+U3RvcCB0
aHJlc2hvbGQ8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVz
aG9sZCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAg
IDx0ZD5NaW5pbXVtIHRvdGFsPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9
Im1pbnRvdGFsIiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgor
ICAgICAgPHRkPk11bHRpcGxpZXJzPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIg
aWQ9Im11bHRpcGxpZXJzIiB2YWx1ZT0iNSwgMiI+PC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxl
PgorPC9kaXY+CisKKzxkaXYgaWQ9ImxvZ19kaXYiPgorICA8dGV4dGFyZWEKKyAgICAgIGlkPSJs
b2ciIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Cis8
L2Rpdj4KKzxkaXYgaWQ9InN1bW1hcnlfZGl2Ij4KKyAgU3VtbWFyeQorICA8dGV4dGFyZWEKKyAg
ICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48
L3RleHRhcmVhPgorPC9kaXY+CisKK05vdGU6IEVmZmVjdCBvZiBSVFQgaXMgbm90IGVsaW1pbmF0
ZWQuCisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjcwMTQ3MmE0ZmFhYzQ0NmIxYzhiZDI0NTZmMjcxZTkzNGRiNTcxYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrLmpz
CkBAIC0wLDAgKzEsMjM4IEBACisvLyBDb3B5cmlnaHQgMjAxNCwgR29vZ2xlIEluYy4KKy8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKworaWYgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAidW5kZWZpbmVkIikgewor
ICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCisgIGltcG9ydFNjcmlwdHMoJ3V0aWwuanMnLCAndXRp
bF93b3JrZXIuanMnKTsKK30KKworLy8gTmFtZXNwYWNlIGZvciBob2xkaW5nIGdsb2JhbHMuCit2
YXIgYmVuY2htYXJrID0ge3N0YXJ0VGltZUluTXM6IDB9OworCit2YXIgc29ja2V0cyA9IFtdOwor
dmFyIG51bUVzdGFibGlzaGVkU29ja2V0cyA9IDA7CisKK3ZhciB0aW1lcklEID0gbnVsbDsKKwor
ZnVuY3Rpb24gZGVzdHJveVNvY2tldChzb2NrZXQpIHsKKyAgc29ja2V0Lm9ub3BlbiA9IG51bGw7
CisgIHNvY2tldC5vbm1lc3NhZ2UgPSBudWxsOworICBzb2NrZXQub25lcnJvciA9IG51bGw7Cisg
IHNvY2tldC5vbmNsb3NlID0gbnVsbDsKKyAgc29ja2V0LmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9u
IGRlc3Ryb3lBbGxTb2NrZXRzKCkgeworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMubGVu
Z3RoOyArK2kpIHsKKyAgICBkZXN0cm95U29ja2V0KHNvY2tldHNbaV0pOworICB9CisgIHNvY2tl
dHMgPSBbXTsKK30KKworZnVuY3Rpb24gc2VuZEJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBp
c1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxTaXplID0gMDsKKyAg
dmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlv
bihldmVudCkgeworICAgIGlmICghdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywgZXZlbnQu
ZGF0YSwgc2l6ZSkpIHsKKyAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7CisgICAgICBjb25maWcu
bm90aWZ5QWJvcnQoKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0b3RhbFJlcGxpZWQg
Kz0gc2l6ZTsKKworICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBi
ZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAorICAgICAgICBpc1dhcm1VcCk7CisK
KyAgICBydW5OZXh0VGFzayhjb25maWcpOworICB9OworCisgIGZvciAodmFyIGkgPSAwOyBpIDwg
c29ja2V0cy5sZW5ndGg7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBzb2NrZXRzW2ldOworICAg
IHNvY2tldC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2VIYW5kbGVyOworICB9CisKKyAgdmFyIGRhdGFB
cnJheSA9IFtdOworCisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwpIHsKKyAg
ICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAgZmlsbEFycmF5QnVm
ZmVyKGJ1ZmZlciwgMHg2MSk7CisKKyAgICBkYXRhQXJyYXkucHVzaChidWZmZXIpOworICAgIHRv
dGFsU2l6ZSArPSBzaXplOworICB9CisKKyAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRU
aW1lU3RhbXAoKTsKKworICB0b3RhbFNpemUgPSAwOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7
CisgIHZhciBkYXRhSW5kZXggPSAwOworICB3aGlsZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRv
dGFsKSB7CisgICAgdmFyIGNvbW1hbmQgPSBbJ3NlbmQnXTsKKyAgICBjb21tYW5kLnB1c2goY29u
ZmlnLnZlcmlmeURhdGEgPyAnMScgOiAnMCcpOworICAgIHNvY2tldHNbc29ja2V0SW5kZXhdLnNl
bmQoY29tbWFuZC5qb2luKCcgJykpOworICAgIHNvY2tldHNbc29ja2V0SW5kZXhdLnNlbmQoZGF0
YUFycmF5W2RhdGFJbmRleF0pOworICAgIHNvY2tldEluZGV4ID0gKHNvY2tldEluZGV4ICsgMSkg
JSBzb2NrZXRzLmxlbmd0aDsKKworICAgIHRvdGFsU2l6ZSArPSBzaXplOworICAgICsrZGF0YUlu
ZGV4OworICB9Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZp
ZywgaXNXYXJtVXApIHsKKyAgdGltZXJJRCA9IG51bGw7CisKKyAgdmFyIHRvdGFsU2l6ZSA9IDA7
CisgIHZhciB0b3RhbFJlcGxpZWQgPSAwOworCisgIHZhciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgYnl0ZXNSZWNlaXZlZCA9IGV2ZW50LmRhdGEuYnl0ZUxl
bmd0aDsKKyAgICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7CisgICAgICBjb25maWcuYWRk
VG9Mb2coJ0V4cGVjdGVkICcgKyBzaXplICsgJ0IgYnV0IHJlY2VpdmVkICcgKworICAgICAgICAg
IGJ5dGVzUmVjZWl2ZWQgKyAnQicpOworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAg
IGNvbmZpZy5ub3RpZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChj
b25maWcudmVyaWZ5RGF0YSAmJiAhdmVyaWZ5QXJyYXlCdWZmZXIoZXZlbnQuZGF0YSwgMHg2MSkp
IHsKKyAgICAgIGNvbmZpZy5hZGRUb0xvZygnUmVzcG9uc2UgdmVyaWZpY2F0aW9uIGZhaWxlZCcp
OworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgp
OworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFsUmVwbGllZCArPSBieXRlc1JlY2Vp
dmVkOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2FybVVwKTsKKworICAg
IHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2Nr
ZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07CisgICAgc29j
a2V0LmJpbmFyeVR5cGUgPSAnYXJyYXlidWZmZXInOworICAgIHNvY2tldC5vbm1lc3NhZ2UgPSBv
bk1lc3NhZ2VIYW5kbGVyOworICB9CisKKyAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBnZXRU
aW1lU3RhbXAoKTsKKworICB2YXIgc29ja2V0SW5kZXggPSAwOworICB3aGlsZSAodG90YWxTaXpl
IDwgY29uZmlnLm1pblRvdGFsKSB7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZCgncmVj
ZWl2ZSAnICsgc2l6ZSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNv
Y2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KK30KKworZnVuY3Rp
b24gY3JlYXRlU29ja2V0KGNvbmZpZykgeworICAvLyBUT0RPKHR5b3NoaW5vKTogQWRkIFRDUCB3
YXJtIHVwLgorICB2YXIgdXJsID0gY29uZmlnLnByZWZpeFVybDsKKworICBjb25maWcuYWRkVG9M
b2coJ0Nvbm5lY3QgJyArIHVybCk7CisKKyAgdmFyIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJs
KTsKKyAgc29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgY29uZmlnLmFk
ZFRvTG9nKCdVbmV4cGVjdGVkIG1lc3NhZ2UgcmVjZWl2ZWQuIEFib3J0aW5nLicpOworICB9Owor
ICBzb2NrZXQub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnRXJy
b3InKTsKKyAgfTsKKyAgc29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkgeworICAgIGNv
bmZpZy5hZGRUb0xvZygnQ2xvc2VkJyk7CisgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7CisgIH07
CisgIHJldHVybiBzb2NrZXQ7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKGNvbmZpZykg
eworICBjbGVhclRpbWVvdXQodGltZXJJRCk7CisgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7CisKKyAg
bnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZp
Zy5udW1Tb2NrZXRzOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gY3JlYXRlU29ja2V0KGNvbmZp
Zyk7CisgICAgc29ja2V0Lm9ub3BlbiA9IGZ1bmN0aW9uKCkgeworICAgICAgY29uZmlnLmFkZFRv
TG9nKCdPcGVuZWQnKTsKKworICAgICAgKytudW1Fc3RhYmxpc2hlZFNvY2tldHM7CisKKyAgICAg
IGlmIChudW1Fc3RhYmxpc2hlZFNvY2tldHMgPT0gc29ja2V0cy5sZW5ndGgpIHsKKyAgICAgICAg
cnVuTmV4dFRhc2soY29uZmlnKTsKKyAgICAgIH0KKyAgICB9OworICAgIHNvY2tldHMucHVzaChz
b2NrZXQpOworICB9Cit9CisKK2Z1bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcpIHsKKyAg
cmV0dXJuICcoV2ViU29ja2V0JyArCisgICAgJywgJyArICh0eXBlb2YgaW1wb3J0U2NyaXB0cyAh
PT0gInVuZGVmaW5lZCIgPyAnV29ya2VyJyA6ICdNYWluJykgKworICAgICcsIG51bVNvY2tldHM9
JyArIGNvbmZpZy5udW1Tb2NrZXRzICsKKyAgICAnLCBudW1JdGVyYXRpb25zPScgKyBjb25maWcu
bnVtSXRlcmF0aW9ucyArCisgICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlmeURhdGEg
KworICAgICcsIG1pblRvdGFsPScgKyBjb25maWcubWluVG90YWwgKworICAgICcsIG51bVdhcm1V
cEl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsKKyAgICAnKSc7Cit9
CisKK2Z1bmN0aW9uIGJhdGNoQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2co
J0JhdGNoIGJlbmNobWFyaycpOworICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSk7CisKKyAgdGFza3MgPSBbXTsKKyAgY2xlYXJBdmVyYWdlRGF0YSgpOworICBhZGRU
YXNrcyhjb25maWcsIHNlbmRCZW5jaG1hcmtTdGVwKTsKKyAgYWRkUmVzdWx0UmVwb3J0aW5nVGFz
ayhjb25maWcsICdTZW5kIEJlbmNobWFyayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwor
ICBhZGRUYXNrcyhjb25maWcsIHJlY2VpdmVCZW5jaG1hcmtTdGVwKTsKKyAgYWRkUmVzdWx0UmVw
b3J0aW5nVGFzayhjb25maWcsICdSZWNlaXZlIEJlbmNobWFyayAnICsKKyAgICAgIGdldENvbmZp
Z1N0cmluZyhjb25maWcpKTsKKyAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKK30KKworZnVuY3Rp
b24gY2xlYW51cCgpIHsKKyAgZGVzdHJveUFsbFNvY2tldHMoKTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZj
MTc1MzMzMzU0Y2M5Yzg4NTYyY2Y2ZmM4MWVmMzI2MDkzNzI5ODYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CkBAIC0w
LDAgKzEsODQgQEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiSGFuZGxlciBmb3IgYmVuY2htYXJrLmh0
bWwuIiIiCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHNp
eAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICAj
IFR1cm4gb2ZmIGNvbXByZXNzaW9uLgorICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMgPSBbXQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAg
ZGF0YSA9IGInJworCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY29tbWFuZCA9IHJlcXVlc3Qu
d3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGNvbW1hbmQgaXMgTm9uZToK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1hbmQs
IHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBj
b21tYW5kIGRhdGE6JyArIGNvbW1hbmQpCisgICAgICAgIGNvbW1hbmRzID0gY29tbWFuZC5zcGxp
dCgnICcpCisgICAgICAgIGlmIGxlbihjb21tYW5kcykgPT0gMDoKKyAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkYXRhOiAnICsgY29tbWFuZCkKKworICAgICAg
ICBpZiBjb21tYW5kc1swXSA9PSAncmVjZWl2ZSc6CisgICAgICAgICAgICBpZiBsZW4oY29tbWFu
ZHMpICE9IDI6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgJ0lsbGVnYWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Igc2VuZCBjb21tYW5kJyAr
IGNvbW1hbmQpCisgICAgICAgICAgICBzaXplID0gaW50KGNvbW1hbmRzWzFdKQorCisgICAgICAg
ICAgICAjIFJldXNlIGRhdGEgaWYgcG9zc2libGUuCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkg
IT0gc2l6ZToKKyAgICAgICAgICAgICAgICBkYXRhID0gYidhJyAqIHNpemUKKyAgICAgICAgICAg
IHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShkYXRhLCBiaW5hcnk9VHJ1ZSkKKyAgICAg
ICAgZWxpZiBjb21tYW5kc1swXSA9PSAnc2VuZCc6CisgICAgICAgICAgICBpZiBsZW4oY29tbWFu
ZHMpICE9IDI6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgJ0lsbGVnYWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcmVjZWl2ZSBjb21tYW5k
JyArCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCisgICAgICAgICAgICB2ZXJpZnlfZGF0
YSA9IGNvbW1hbmRzWzFdID09ICcxJworCisgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIG5vdCByZWNlaXZlZCcpCisg
ICAgICAgICAgICBzaXplID0gbGVuKGRhdGEpCisKKyAgICAgICAgICAgIGlmIHZlcmlmeV9kYXRh
OgorICAgICAgICAgICAgICAgIGlmIGRhdGEgIT0gYidhJyAqIHNpemU6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgdmVyaWZpY2F0aW9uIGZhaWxlZCcpCisK
KyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShzdHIoc2l6ZSkpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1h
bmQ6ICcgKyBjb21tYW5kc1swXSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvZXhhbXBsZS9jbG9zZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYwMDA1ZmZlYTk5MDVkNmMxOTdj
MGY0ZGQ1OTNjMDZmZjQzN2QzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvY2xvc2Vfd3NoLnB5CkBAIC0wLDAgKzEsNzAgQEAKKyMgQ29weXJpZ2h0IDIwMTIs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHN0cnVjdAor
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgc3RyZWFtCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5y
ZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgY29kZSwgcmVhc29uID0gbGluZS5zcGxpdCgnICcsIDEpCisgICAgICAg
IGlmIGNvZGUgaXMgTm9uZSBvciByZWFzb24gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGludChjb2RlKSwgcmVh
c29uKQorICAgICAgICAjIGNsb3NlX2Nvbm5lY3Rpb24oKSBpbml0aWF0ZXMgY2xvc2luZyBoYW5k
c2hha2UuIEl0IHZhbGlkYXRlcyBjb2RlCisgICAgICAgICMgYW5kIHJlYXNvbi4gSWYgeW91IHdh
bnQgdG8gc2VuZCBhIGJyb2tlbiBjbG9zZSBmcmFtZSBmb3IgYSB0ZXN0LAorICAgICAgICAjIGZv
bGxvd2luZyBjb2RlIHdpbGwgYmUgdXNlZnVsLgorICAgICAgICAjID4gZGF0YSA9IHN0cnVjdC5w
YWNrKCchSCcsIGludChjb2RlKSkgKyByZWFzb24uZW5jb2RlKCdVVEYtOCcpCisgICAgICAgICMg
PiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRh
KSkKKyAgICAgICAgIyA+ICMgU3VwcHJlc3MgdG8gcmUtcmVzcG9uZCBjbGllbnQgcmVzcG9uZGlu
ZyBjbG9zZSBmcmFtZS4KKyAgICAgICAgIyA+IHJhaXNlIEV4Y2VwdGlvbigiY3VzdG9taXplZCBz
ZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIikKKworCitkZWYgd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgU2ltcGx5IGVjaG8gYSBj
bG9zZSBzdGF0dXMgY29kZQorICAgIGNvZGUsIHJlYXNvbiA9IHJlcXVlc3Qud3NfY2xvc2VfY29k
ZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KKworICAgICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1
ZG8gY29kZSBmb3IgcmVjZWl2aW5nIGFuIGVtcHR5IGJvZHkgY2xvc2UgZnJhbWUuCisgICAgaWYg
Y29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRDoKKyAgICAgICAgY29kZSA9
IE5vbmUKKyAgICAgICAgcmVhc29uID0gJycKKyAgICByZXR1cm4gY29kZSwgcmVhc29uCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2NvbnNvbGUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjZDZkOGY4MDY3NmI5OTkxZTIyZGZjN2VjODUwODM0MTFkZGQwYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2NvbnNvbGUuaHRtbApAQCAt
MCwwICsxLDMxNyBAQAorPCEtLQorQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCitBbGwgcmln
aHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
K2NvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0+CisKKzwhLS0KK0Eg
c2ltcGxlIGNvbnNvbGUgZm9yIHRlc3RpbmcgV2ViU29ja2V0IHNlcnZlci4KKworVHlwZSBhbiBh
ZGRyZXNzIGludG8gdGhlIHRvcCB0ZXh0IGlucHV0IGFuZCBjbGljayBjb25uZWN0IHRvIGVzdGFi
bGlzaAorV2ViU29ja2V0LiBUaGVuLCB0eXBlIHNvbWUgbWVzc2FnZSBpbnRvIHRoZSBib3R0b20g
dGV4dCBpbnB1dCBhbmQgY2xpY2sgc2VuZAordG8gc2VuZCB0aGUgbWVzc2FnZS4gUmVjZWl2ZWQv
c2VudCBtZXNzYWdlcyBhbmQgY29ubmVjdGlvbiBzdGF0ZSB3aWxsIGJlIHNob3duCitvbiB0aGUg
bWlkZGxlIHRleHRhcmVhLgorLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+V2ViU29ja2V0
IGNvbnNvbGU8L3RpdGxlPgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBudWxsOworCit2YXIgc2hv
d1RpbWVTdGFtcCA9IGZhbHNlOworCit2YXIgYWRkcmVzc0JveCA9IG51bGw7Cit2YXIgcHJvdG9j
b2xzQm94ID0gbnVsbDsKK3ZhciBsb2dCb3ggPSBudWxsOwordmFyIG1lc3NhZ2VCb3ggPSBudWxs
OwordmFyIGZpbGVCb3ggPSBudWxsOwordmFyIGNvZGVCb3ggPSBudWxsOwordmFyIHJlYXNvbkJv
eCA9IG51bGw7CisKK2Z1bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIG5ldyBEYXRl
KCkuZ2V0VGltZSgpOworfQorCitmdW5jdGlvbiBhZGRUb0xvZyhsb2cpIHsKKyAgaWYgKHNob3dU
aW1lU3RhbXApIHsKKyAgICBsb2dCb3gudmFsdWUgKz0gJ1snICsgZ2V0VGltZVN0YW1wKCkgKyAn
XSAnOworICB9CisgIGxvZ0JveC52YWx1ZSArPSBsb2cgKyAnXG4nCisgIC8vIExhcmdlIGVub3Vn
aCB0byBrZWVwIHNob3dpbmcgdGhlIGxhdGVzdCBtZXNzYWdlLgorICBsb2dCb3guc2Nyb2xsVG9w
ID0gMTAwMDAwMDsKK30KKworZnVuY3Rpb24gc2V0YmluYXJ5dHlwZShiaW5hcnlUeXBlKSB7Cisg
IGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1
cm47CisgIH0KKworICBzb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7CisgIGFkZFRvTG9n
KCdTZXQgYmluYXJ5VHlwZSB0byAnICsgYmluYXJ5VHlwZSk7Cit9CisKK2Z1bmN0aW9uIHNlbmQo
KSB7CisgIGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAg
ICByZXR1cm47CisgIH0KKworICBzb2NrZXQuc2VuZChtZXNzYWdlQm94LnZhbHVlKTsKKyAgYWRk
VG9Mb2coJz4gJyArIG1lc3NhZ2VCb3gudmFsdWUpOworICBtZXNzYWdlQm94LnZhbHVlID0gJyc7
Cit9CisKK2Z1bmN0aW9uIHNlbmRmaWxlKCkgeworICBpZiAoIXNvY2tldCkgeworICAgIGFkZFRv
TG9nKCdOb3QgY29ubmVjdGVkJyk7CisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGZpbGVzID0g
ZmlsZUJveC5maWxlczsKKworICBpZiAoZmlsZXMubGVuZ3RoID09IDApIHsKKyAgICBhZGRUb0xv
ZygnRmlsZSBub3Qgc2VsZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICBzb2NrZXQuc2Vu
ZChmaWxlc1swXSk7CisgIGFkZFRvTG9nKCc+IFNlbmQgJyArIGZpbGVzWzBdLm5hbWUpOworfQor
CitmdW5jdGlvbiBwYXJzZVByb3RvY29scyhwcm90b2NvbHNUZXh0KSB7CisgIHZhciBwcm90b2Nv
bHMgPSBwcm90b2NvbHNUZXh0LnNwbGl0KCcsJyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJv
dG9jb2xzLmxlbmd0aDsgKytpKSB7CisgICAgcHJvdG9jb2xzW2ldID0gcHJvdG9jb2xzW2ldLnRy
aW0oKTsKKyAgfQorCisgIGlmIChwcm90b2NvbHMubGVuZ3RoID09IDApIHsKKyAgICAvLyBEb24n
dCBwYXNzLgorICAgIHByb3RvY29scyA9IG51bGw7CisgIH0gZWxzZSBpZiAocHJvdG9jb2xzLmxl
bmd0aCA9PSAxKSB7CisgICAgaWYgKHByb3RvY29sc1swXS5sZW5ndGggPT0gMCkgeworICAgICAg
Ly8gRG9uJ3QgcGFzcy4KKyAgICAgIHByb3RvY29scyA9IG51bGw7CisgICAgfSBlbHNlIHsKKyAg
ICAgIC8vIFBhc3MgYXMgYSBzdHJpbmcuCisgICAgICBwcm90b2NvbHMgPSBwcm90b2NvbHNbMF07
CisgICAgfQorICB9CisKKyAgcmV0dXJuIHByb3RvY29sczsKK30KKworZnVuY3Rpb24gY29ubmVj
dCgpIHsKKyAgdmFyIHVybCA9IGFkZHJlc3NCb3gudmFsdWU7CisgIHZhciBwcm90b2NvbHMgPSBw
YXJzZVByb3RvY29scyhwcm90b2NvbHNCb3gudmFsdWUpOworCisgIGlmICgnV2ViU29ja2V0JyBp
biB3aW5kb3cpIHsKKyAgICBpZiAocHJvdG9jb2xzKSB7CisgICAgICBzb2NrZXQgPSBuZXcgV2Vi
U29ja2V0KHVybCwgcHJvdG9jb2xzKTsKKyAgICB9IGVsc2UgeworICAgICAgc29ja2V0ID0gbmV3
IFdlYlNvY2tldCh1cmwpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICByZXR1cm47CisgIH0KKwor
ICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBleHRyYUluZm8gPSBbXTsK
KyAgICBpZiAoKCdwcm90b2NvbCcgaW4gc29ja2V0KSAmJiBzb2NrZXQucHJvdG9jb2wpIHsKKyAg
ICAgIGV4dHJhSW5mby5wdXNoKCdwcm90b2NvbCA9ICcgKyBzb2NrZXQucHJvdG9jb2wpOworICAg
IH0KKyAgICBpZiAoKCdleHRlbnNpb25zJyBpbiBzb2NrZXQpICYmIHNvY2tldC5leHRlbnNpb25z
KSB7CisgICAgICBleHRyYUluZm8ucHVzaCgnZXh0ZW5zaW9ucyA9ICcgKyBzb2NrZXQuZXh0ZW5z
aW9ucyk7CisgICAgfQorCisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnT3BlbmVkJzsKKyAgICBpZiAo
ZXh0cmFJbmZvLmxlbmd0aCA+IDApIHsKKyAgICAgIGxvZ01lc3NhZ2UgKz0gJyAoJyArIGV4dHJh
SW5mby5qb2luKCcsICcpICsgJyknOworICAgIH0KKyAgICBhZGRUb0xvZyhsb2dNZXNzYWdlKTsK
KyAgfTsKKyAgc29ja2V0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgeworICAgIGlmICgo
J0FycmF5QnVmZmVyJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2YgQXJyYXlC
dWZmZXIpKSB7CisgICAgICBhZGRUb0xvZygnPCBSZWNlaXZlZCBhbiBBcnJheUJ1ZmZlciBvZiAn
ICsgZXZlbnQuZGF0YS5ieXRlTGVuZ3RoICsKKyAgICAgICAgICAgICAgICcgYnl0ZXMnKQorICAg
IH0gZWxzZSBpZiAoKCdCbG9iJyBpbiB3aW5kb3cpICYmIChldmVudC5kYXRhIGluc3RhbmNlb2Yg
QmxvYikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGEgQmxvYiBvZiAnICsgZXZlbnQu
ZGF0YS5zaXplICsgJyBieXRlcycpCisgICAgfSBlbHNlIHsKKyAgICAgIGFkZFRvTG9nKCc8ICcg
KyBldmVudC5kYXRhKTsKKyAgICB9CisgIH07CisgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24g
KCkgeworICAgIGFkZFRvTG9nKCdFcnJvcicpOworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgIHZhciBsb2dNZXNzYWdlID0gJ0Nsb3NlZCAoJzsKKyAgICBp
ZiAoKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgJiYgKCdDbG9zZUV2ZW50JyBpbiB3aW5kb3cpICYm
CisgICAgICAgIChldmVudCBpbnN0YW5jZW9mIENsb3NlRXZlbnQpKSB7CisgICAgICBsb2dNZXNz
YWdlICs9ICd3YXNDbGVhbiA9ICcgKyBldmVudC53YXNDbGVhbjsKKyAgICAgIC8vIGNvZGUgYW5k
IHJlYXNvbiBhcmUgcHJlc2VudCBvbmx5IGZvcgorICAgICAgLy8gZHJhZnQtaWV0Zi1oeWJpLXRo
ZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgorICAgICAgaWYgKCdjb2RlJyBpbiBldmVu
dCkgeworICAgICAgICBsb2dNZXNzYWdlICs9ICcsIGNvZGUgPSAnICsgZXZlbnQuY29kZTsKKyAg
ICAgIH0KKyAgICAgIGlmICgncmVhc29uJyBpbiBldmVudCkgeworICAgICAgICBsb2dNZXNzYWdl
ICs9ICcsIHJlYXNvbiA9ICcgKyBldmVudC5yZWFzb247CisgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgIGxvZ01lc3NhZ2UgKz0gJ0Nsb3NlRXZlbnQgaXMgbm90IGF2YWlsYWJsZSc7CisgICAg
fQorICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UgKyAnKScpOworICB9OworCisgIGlmIChwcm90b2Nv
bHMpIHsKKyAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJsICsgJyAocHJvdG9jb2xzID0gJyAr
IHByb3RvY29scyArICcpJyk7CisgIH0gZWxzZSB7CisgICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyAr
IHVybCk7CisgIH0KK30KKworZnVuY3Rpb24gY2xvc2VTb2NrZXQoKSB7CisgIGlmICghc29ja2V0
KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBpZiAoY29kZUJveC52YWx1ZSB8fCByZWFzb25Cb3gudmFsdWUpIHsKKyAgICBzb2NrZXQuY2xv
c2UoY29kZUJveC52YWx1ZSwgcmVhc29uQm94LnZhbHVlKTsKKyAgfSBlbHNlIHsKKyAgICBzb2Nr
ZXQuY2xvc2UoKTsKKyAgfQorfQorCitmdW5jdGlvbiBwcmludFN0YXRlKCkgeworICBpZiAoIXNv
Y2tldCkgeworICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7CisgICAgcmV0dXJuOworICB9
CisKKyAgYWRkVG9Mb2coCisgICAgICAndXJsID0gJyArIHNvY2tldC51cmwgKworICAgICAgJywg
cmVhZHlTdGF0ZSA9ICcgKyBzb2NrZXQucmVhZHlTdGF0ZSArCisgICAgICAnLCBidWZmZXJlZEFt
b3VudCA9ICcgKyBzb2NrZXQuYnVmZmVyZWRBbW91bnQpOworfQorCitmdW5jdGlvbiBpbml0KCkg
eworICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonID8g
J3dzczovLycgOiAnd3M6Ly8nOworICB2YXIgZGVmYXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5k
b3cubG9jYXRpb24uaG9zdCArICcvZWNobyc7CisKKyAgYWRkcmVzc0JveCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7CisgIHByb3RvY29sc0JveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdwcm90b2NvbHMnKTsKKyAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZycpOworICBtZXNzYWdlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3Nh
Z2UnKTsKKyAgZmlsZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlJyk7CisgIGNv
ZGVCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZScpOworICByZWFzb25Cb3ggPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVhc29uJyk7CisKKyAgYWRkcmVzc0JveC52YWx1ZSA9
IGRlZmF1bHRBZGRyZXNzOworCisgIGlmICghKCdXZWJTb2NrZXQnIGluIHdpbmRvdykpIHsKKyAg
ICBhZGRUb0xvZygnV2ViU29ja2V0IGlzIG5vdCBhdmFpbGFibGUnKTsKKyAgfQorfQorPC9zY3Jp
cHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZm9ybSB7CisgIG1hcmdpbjogMHB4OworfQor
CisjY29ubmVjdF9kaXYsICNsb2dfZGl2LCAjc2VuZF9kaXYsICNzZW5kZmlsZV9kaXYsICNjbG9z
ZV9kaXYsICNwcmludHN0YXRlX2RpdiB7CisgIHBhZGRpbmc6IDVweDsKKyAgbWFyZ2luOiA1cHg7
CisgIGJvcmRlci13aWR0aDogMHB4IDBweCAwcHggMTBweDsKKyAgYm9yZGVyLXN0eWxlOiBzb2xp
ZDsKKyAgYm9yZGVyLWNvbG9yOiBzaWx2ZXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJpbml0KCkiPgorCis8ZGl2PgorCis8ZGl2IGlkPSJjb25uZWN0X2RpdiI+CisgIDxm
b3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNvbm5lY3QoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAg
dXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgorICAgIDxpbnB1
dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJjb25uZWN0Ij4KKyAgICA8YnIvPgorICAgIHByb3RvY29s
cyA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InByb3RvY29scyIgc2l6ZT0iMjAiPgorICA8L2Zvcm0+
Cis8L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYSBpZD0ibG9nIiByb3dz
PSIxMCIgY29scz0iNDAiIHJlYWRvbmx5PjwvdGV4dGFyZWE+CisgIDxici8+CisgIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIKKyAgICAgICAgIG5hbWU9InNob3d0aW1lc3RhbXAiCisgICAgICAgICB2
YWx1ZT0ic2hvd3RpbWVzdGFtcCIKKyAgICAgICAgIG9uY2xpY2s9InNob3dUaW1lU3RhbXAgPSB0
aGlzLmNoZWNrZWQiPlNob3cgdGltZSBzdGFtcAorPC9kaXY+CisKKzxkaXYgaWQ9InNlbmRfZGl2
Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZCgpOyByZXR1cm4gZmFsc2U7Ij4K
KyAgICBkYXRhIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWVzc2FnZSIgc2l6ZT0iNDAiPgorICAg
IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIj4KKyAgPC9mb3JtPgorPC9kaXY+CisK
KzxkaXYgaWQ9InNlbmRmaWxlX2RpdiI+CisgIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9InNl
bmRmaWxlKCk7IHJldHVybiBmYWxzZTsiPgorICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmls
ZSIgc2l6ZT0iNDAiPgorICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzZW5kIGZpbGUi
PgorICA8L2Zvcm0+CisKKyAgU2V0IGJpbmFyeVR5cGUKKyAgPGlucHV0IHR5cGU9InJhZGlvIgor
ICAgICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKKyAgICAgICAgIHZhbHVlPSJibG9iIgorICAgICAg
ICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYmxvYicpIiBjaGVja2VkPmJsb2IKKyAgPGlucHV0
IHR5cGU9InJhZGlvIgorICAgICAgICAgbmFtZT0iYmluYXJ5dHlwZSIKKyAgICAgICAgIHZhbHVl
PSJhcnJheWJ1ZmZlciIKKyAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2FycmF5YnVm
ZmVyJykiPmFycmF5YnVmZmVyCis8L2Rpdj4KKworPGRpdiBpZD0iY2xvc2VfZGl2Ij4KKyAgPGZv
cm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0iY2xvc2VTb2NrZXQoKTsgcmV0dXJuIGZhbHNlOyI+Cisg
ICAgY29kZSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvZGUiIHNpemU9IjEwIj4KKyAgICByZWFz
b24gPGlucHV0IHR5cGU9InRleHQiIGlkPSJyZWFzb24iIHNpemU9IjIwIj4KKyAgICA8aW5wdXQg
dHlwZT0ic3VibWl0IiB2YWx1ZT0iY2xvc2UiPgorICA8L2Zvcm0+Cis8L2Rpdj4KKworPGRpdiBp
ZD0icHJpbnRzdGF0ZV9kaXYiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icHJpbnQg
c3RhdGUiIG9uY2xpY2s9InByaW50U3RhdGUoKTsiPgorPC9kaXY+CisKKzwvZGl2PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nvb2tp
ZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nvb2tpZV93c2gucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODE1MjA5Njk0ZTNmZjIzMjBmNTY4M2VlMDU5NmFlMzQ0MjhiMTVlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQpAQCAtMCww
ICsxLDU0IEBACisjIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgorCisKK2RlZiBfYWRkX3NldF9j
b29raWUocmVxdWVzdCwgdmFsdWUpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQo
KCdTZXQtQ29va2llJywgdmFsdWUpKQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBjb21wb25lbnRzID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHJl
cXVlc3QudXJpKQorICAgIGNvbW1hbmQgPSBjb21wb25lbnRzWzRdCisKKyAgICBPTkVfREFZX0xJ
RkUgPSAnTWF4LUFnZT04NjQwMCcKKworICAgIGlmIGNvbW1hbmQgPT0gJ3NldCc6CisgICAgICAg
IF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnOyAnLmpvaW4oWydmb289YmFyJywgT05FX0RBWV9M
SUZFXSkpCisgICAgZWxpZiBjb21tYW5kID09ICdzZXRfaHR0cG9ubHknOgorICAgICAgICBfYWRk
X3NldF9jb29raWUoCisgICAgICAgICAgICByZXF1ZXN0LCAnOyAnLmpvaW4oWydodHRwT25seUZv
bz1iYXInLCBPTkVfREFZX0xJRkUsICdodHRwT25seSddKSkKKyAgICBlbGlmIGNvbW1hbmQgPT0g
J2NsZWFyJzoKKyAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICdmb289MDsgTWF4LUFn
ZT0wJykKKyAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3QsICdodHRwT25seUZvbz0wOyBN
YXgtQWdlPTAnKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVu
dC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTQ0NTlhMTliYzY4Yzc4NzlhMTc0ZjU3MjEyMjM4MjkxNGU2ZjdkZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKQEAgLTAsMCAr
MSw2OTYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJT
aW1wbGUgV2ViU29ja2V0IGNsaWVudCBuYW1lZCBlY2hvX2NsaWVudCBqdXN0IGJlY2F1c2Ugb2Yg
aGlzdG9yaWNhbCByZWFzb24uCisKK21vZF9weXdlYnNvY2tldCBkaXJlY3RvcnkgbXVzdCBiZSBp
biBQWVRIT05QQVRILgorCitFeGFtcGxlIFVzYWdlOgorCisjIHNlcnZlciBzZXR1cAorICUgY2Qg
JHB5d2Vic29ja2V0CisgJSBQWVRIT05QQVRIPSRjd2Qvc3JjIHB5dGhvbiAuL21vZF9weXdlYnNv
Y2tldC9zdGFuZGFsb25lLnB5IC1wIDg4ODAgXAorICAgIC1kICRjd2Qvc3JjL2V4YW1wbGUKKwor
IyBydW4gY2xpZW50CisgJSBQWVRIT05QQVRIPSRjd2Qvc3JjIHB5dGhvbiAuL3NyYy9leGFtcGxl
L2VjaG9fY2xpZW50LnB5IC1wIDg4ODAgXAorICAgICAtcyBsb2NhbGhvc3QgXAorICAgICAtbyBo
dHRwOi8vbG9jYWxob3N0IC1yIC9lY2hvIC1tIHRlc3QKKyIiIgorCitmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5j
dGlvbgoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGNvZGVjcworZnJvbSBoYXNobGliIGltcG9ydCBz
aGExCitpbXBvcnQgbG9nZ2luZworZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCitp
bXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCByZQoraW1wb3J0IHNpeAoraW1wb3J0IHNv
Y2tldAoraW1wb3J0IHNzbAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHN5cworCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25z
IGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyCitmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfcGFyc2Vfd2luZG93X2JpdHMKK2Zy
b20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCB1dGlsCisKK19USU1FT1VUX1NFQyA9IDEwCitfVU5ERUZJTkVEX1BPUlQgPSAtMQorCitf
VVBHUkFERV9IRUFERVIgPSAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKK19DT05ORUNUSU9OX0hF
QURFUiA9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKworIyBTcGVjaWFsIG1lc3NhZ2UgdGhh
dCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKK19HT09E
QllFX01FU1NBR0UgPSAnR29vZGJ5ZScKKworX1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzID0gJ2h5
YmkxMycKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VFcnJvcihFeGNlcHRpb24pOgorICAgIHBh
c3MKKworCitkZWYgX2J1aWxkX21ldGhvZF9saW5lKHJlc291cmNlKToKKyAgICByZXR1cm4gJ0dF
VCAlcyBIVFRQLzEuMVxyXG4nICUgcmVzb3VyY2UKKworCitkZWYgX29yaWdpbl9oZWFkZXIoaGVh
ZGVyLCBvcmlnaW4pOgorICAgICMgNC4xIDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcg
Ik9yaWdpbjoiLCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsCisgICAgIyBhbmQgdGhlIC9vcmln
aW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKGhlYWRlciwgb3JpZ2luLmxvd2VyKCkpCisKKworZGVm
IF9mb3JtYXRfaG9zdF9oZWFkZXIoaG9zdCwgcG9ydCwgc2VjdXJlKToKKyAgICAjIDQuMSA5LiBM
ZXQgL2hvc3Rwb3J0LyBiZSBhbiBlbXB0eSBzdHJpbmcuCisgICAgIyA0LjEgMTAuIEFwcGVuZCB0
aGUgL2hvc3QvIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bworICAgICMg
L2hvc3Rwb3J0LworICAgIGhvc3Rwb3J0ID0gaG9zdC5sb3dlcigpCisgICAgIyA0LjEgMTEuIElm
IC9zZWN1cmUvIGlzIGZhbHNlLCBhbmQgL3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8K
KyAgICAjIGlzIHRydWUsIGFuZCAvcG9ydC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAw
M0EgQ09MT04gY2hhcmFjdGVyCisgICAgIyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9w
b3J0LywgZXhwcmVzc2VkIGFzIGEgYmFzZS10ZW4gaW50ZWdlciwKKyAgICAjIHRvIC9ob3N0cG9y
dC8KKyAgICBpZiAoKG5vdCBzZWN1cmUgYW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NP
Q0tFVF9QT1JUKQorICAgICAgICAgICAgb3IgKHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVG
QVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUKSk6CisgICAgICAgIGhvc3Rwb3J0ICs9ICc6JyAr
IHN0cihwb3J0KQorICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIkhv
c3Q6IiwgYSBVKzAwMjAgU1BBQ0UKKyAgICAjIGNoYXJhY3RlciwgYW5kIC9ob3N0cG9ydC8sIHRv
IC9maWVsZHMvLgorICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAoY29tbW9uLkhPU1RfSEVBREVS
LCBob3N0cG9ydCkKKworCitkZWYgX3JlY2VpdmVfYnl0ZXMoc29ja2V0LCBsZW5ndGgpOgorICAg
IHJlY3ZfYnl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxlIHJlbWFp
bmluZyA+IDA6CisgICAgICAgIHJlY2VpdmVkX2J5dGVzID0gc29ja2V0LnJlY3YocmVtYWluaW5n
KQorICAgICAgICBpZiBub3QgcmVjZWl2ZWRfYnl0ZXM6CisgICAgICAgICAgICByYWlzZSBJT0Vy
cm9yKAorICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5n
IHJlcXVlc3RlZCBsZW5ndGggJworICAgICAgICAgICAgICAgICcocmVxdWVzdGVkICVkIGJ5dGVz
IGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQorICAgICAgICAgICAgICAgIChsZW5ndGgs
IGxlbmd0aCAtIHJlbWFpbmluZykpCisgICAgICAgIHJlY3ZfYnl0ZXMuYXBwZW5kKHJlY2VpdmVk
X2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVuKHJlY2VpdmVkX2J5dGVzKQorICAgIHJl
dHVybiBiJycuam9pbihyZWN2X2J5dGVzKQorCisKK2RlZiBfZ2V0X21hbmRhdG9yeV9oZWFkZXIo
ZmllbGRzLCBuYW1lKToKKyAgICAiIiJHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIHNwZWNp
ZmllZCBieSBuYW1lIGZyb20gZmllbGRzLgorCisgICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRo
YXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKKyAgICBp
biBmaWVsZHMuIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgorICAg
ICIiIgorCisgICAgdmFsdWVzID0gZmllbGRzLmdldChuYW1lLmxvd2VyKCkpCisgICAgaWYgdmFs
dWVzIGlzIE5vbmUgb3IgbGVuKHZhbHVlcykgPT0gMDoKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoJyVzIGhlYWRlciBub3QgZm91bmQ6ICVyJyAlIChuYW1lLCB2YWx1ZXMpKQor
ICAgIGlmIGxlbih2YWx1ZXMpID4gMToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJy
b3IoJ011bHRpcGxlICVzIGhlYWRlcnMgZm91bmQ6ICVyJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChuYW1lLCB2YWx1ZXMpKQorICAgIHJldHVybiB2YWx1ZXNbMF0KKwor
CitkZWYgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZV9zZW5zaXRp
dmU9RmFsc2UpOgorICAgICIiIkdldHMgYW5kIHZhbGlkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGhl
YWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tCisgICAgZmllbGRzLgorCisgICAgSWYgZXhwZWN0
ZWRfdmFsdWUgaXMgc3BlY2lmaWVkLCBjb21wYXJlcyBleHBlY3RlZCB2YWx1ZSBhbmQgYWN0dWFs
IHZhbHVlCisgICAgYW5kIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvciBvbiBmYWlsdXJl
LiBZb3UgY2FuIHNwZWNpZnkgY2FzZQorICAgIHNlbnNpdGl2ZW5lc3MgaW4gdGhpcyBjb21wYXJp
c29uIGJ5IGNhc2Vfc2Vuc2l0aXZlIHBhcmFtZXRlci4gVGhpcyBmdW5jdGlvbgorICAgIGV4cGVj
dHMgdGhhdCB0aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBp
biBmaWVsZHMuCisgICAgT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3Iu
CisgICAgIiIiCisKKyAgICB2YWx1ZSA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsIG5h
bWUpCisKKyAgICBpZiAoKGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZSAhPSBleHBlY3RlZF92YWx1
ZSkgb3IKKyAgICAgICAgKG5vdCBjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUubG93ZXIoKSAhPSBl
eHBlY3RlZF92YWx1ZS5sb3dlcigpKSk6CisgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAorICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXIgKGV4cGVj
dGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAgICAgKG5hbWUsIGV4cGVjdGVkX3ZhbHVl
LCB2YWx1ZSkpCisKKworY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgorICAgICIiIldyYXBwZXIg
Zm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhd19zb2Nr
ZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgICAgICBzZWxmLl90bHNfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHJhd19zb2NrZXQp
CisKKyAgICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiB3
cmFwX3NvY2tldCBjYWxsLgorICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiQ2lwaGVyOiAlcyIs
IHNlbGYuX3Rsc19zb2NrZXQuY2lwaGVyKCkpCisKKyAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQud3JpdGUoZGF0YSkKKworICAgIGRlZiBz
ZW5kYWxsKHNlbGYsIGRhdGEpOgorICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5zZW5k
YWxsKGRhdGEpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3Rsc19zb2NrZXQucmVhZChzaXplKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgZ2V0cGVlcm5h
bWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LmdldHBlZXJuYW1lKCkK
KworCitjbGFzcyBDbGllbnRIYW5kc2hha2VCYXNlKG9iamVjdCk6CisgICAgIiIiQSBiYXNlIGNs
YXNzIGZvciBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29ycyBmb3IgZWFjaAor
ICAgIHByb3RvY29sIHZlcnNpb24uCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAg
IGRlZiBfcmVhZF9maWVsZHMoc2VsZik6CisgICAgICAgICMgNC4xIDMyLiBsZXQgL2ZpZWxkcy8g
YmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBlbXB0eS4KKyAgICAgICAg
ZmllbGRzID0ge30KKyAgICAgICAgd2hpbGUgVHJ1ZTogICMgIkZpZWxkIgorICAgICAgICAgICAg
IyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKKyAg
ICAgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAg
ICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25h
bWUoKQorICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKKyAgICAgICAgICAgICMgVE9ETyh0
eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgor
ICAgICAgICAgICAgY2ggPSBzZWxmLl9za2lwX3NwYWNlcygpCisgICAgICAgICAgICAjIDQuMSAz
Ni4gcmVhZCAvdmFsdWUvCisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX3JlYWRfdmFsdWUoY2gp
CisgICAgICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCisgICAg
ICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAg
IGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZCBMRiBidXQgZm91bmQg
JXIgd2hpbGUgcmVhZGluZyB2YWx1ZSAlciBmb3IgJworICAgICAgICAgICAgICAgICAgICAnaGVh
ZGVyICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdSZWNlaXZlZCAlciBoZWFkZXInLCBuYW1lKQorICAgICAgICAgICAgIyA0LjEgMzguIGFw
cGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0IGhhcyB0aGUgbmFtZQorICAg
ICAgICAgICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0
aGUgL25hbWUvIGJ5dGUKKyAgICAgICAgICAgICMgYXJyYXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5k
IHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nCisgICAgICAgICAgICAjIG9idGFpbmVkIGJ5
IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0ZQorICAg
ICAgICAgICAgIyBzdHJlYW0uCisgICAgICAgICAgICBmaWVsZHMuc2V0ZGVmYXVsdChuYW1lLmRl
Y29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5hcHBlbmQo
dmFsdWUuZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAgICAgIyA0LjEgMzkuIHJldHVybiB0byB0
aGUgIkZpZWxkIiBzdGVwIGFib3ZlCisgICAgICAgIHJldHVybiBmaWVsZHMKKworICAgIGRlZiBf
cmVhZF9uYW1lKHNlbGYpOgorICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBi
eXRlIGFycmF5cworICAgICAgICBuYW1lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICAgICAjIDQuMSAzNC4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIGlmIGNo
ID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
ICAgIGVsaWYgY2ggPT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGll
bnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hl
biByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCisgICAgICAgICAgICBlbGlmIGNoID09
IGInOic6ICAjIDB4M0EKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5sb3dlcigpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKKworICAgIGRlZiBfc2tp
cF9zcGFjZXMoc2VsZik6CisgICAgICAgICMgNC4xIDM1LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBz
ZXJ2ZXIKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4gY2gKKworICAgIGRl
ZiBfcmVhZF92YWx1ZShzZWxmLCBjaCk6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBi
ZSBlbXB0eSBieXRlIGFycmF5cworICAgICAgICB2YWx1ZSA9IGInJworICAgICAgICAjIDQuMSAz
Ni4gcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIuCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAg
ICAgICBpZiBjaCA9PSBiJ1xyJzogICMgMHgwRAorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZQorICAgICAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAg
IHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBl
Y3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIHZhbHVlICVyJyAlIHZhbHVlKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSBjaAorICAgICAgICAgICAgY2ggPSBf
cmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisKKworZGVmIF9nZXRfcGVybWVzc2FnZV9k
ZWZsYXRlX2ZyYW1lcihleHRlbnNpb25fcmVzcG9uc2UpOgorICAgICIiIlZhbGlkYXRlIHRoZSBy
ZXNwb25zZSBhbmQgcmV0dXJuIGEgZnJhbWVyIG9iamVjdCB1c2luZyB0aGUgcGFyYW1ldGVycyBp
bgorICAgIHRoZSByZXNwb25zZS4gVGhpcyBtZXRob2QgZG9lc24ndCBhY2NlcHQgdGhlIHNlcnZl
cl8uKiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAgY2xpZW50X21heF93aW5kb3dfYml0cyA9
IE5vbmUKKyAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IE5vbmUKKworICAgIGNsaWVu
dF9tYXhfd2luZG93X2JpdHNfbmFtZSA9ICgKKyAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAgY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSA9ICgKKyAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVF
eHRlbnNpb25Qcm9jZXNzb3IuX0NMSUVOVF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKQorCisg
ICAgIyBXZSBkaWRuJ3Qgc2VuZCBhbnkgc2VydmVyXy4qIHBhcmFtZXRlci4KKyAgICAjIEhhbmRs
ZSB0aG9zZSBwYXJhbWV0ZXJzIGFzIGludmFsaWQgaWYgZm91bmQgaW4gdGhlIHJlc3BvbnNlLgor
CisgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIGV4dGVuc2lvbl9yZXNwb25zZS5n
ZXRfcGFyYW1ldGVycygpOgorICAgICAgICBpZiBwYXJhbV9uYW1lID09IGNsaWVudF9tYXhfd2lu
ZG93X2JpdHNfbmFtZToKKyAgICAgICAgICAgIGlmIGNsaWVudF9tYXhfd2luZG93X2JpdHMgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ011
bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lKQorCisgICAgICAgICAgICBwYXJzZWRf
dmFsdWUgPSBfcGFyc2Vfd2luZG93X2JpdHMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICBpZiBw
YXJzZWRfdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0JhZCAlczogJXInICUgKGNsaWVudF9tYXhf
d2luZG93X2JpdHNfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xpZW50X21heF93
aW5kb3dfYml0cyA9IHBhcnNlZF92YWx1ZQorICAgICAgICBlbGlmIHBhcmFtX25hbWUgPT0gY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZToKKyAgICAgICAgICAgIGlmIGNsaWVudF9ub19j
b250ZXh0X3Rha2VvdmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVu
dEhhbmRzaGFrZUVycm9yKCdNdWx0aXBsZSAlcyBmb3VuZCcgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWUp
CisKKyAgICAgICAgICAgIGlmIHBhcmFtX3ZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFk
ICVzOiBIYXMgdmFsdWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgKGNsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyX25hbWUsIHBhcmFtX3ZhbHVlKSkKKyAgICAgICAgICAgIGNsaWVudF9ub19j
b250ZXh0X3Rha2VvdmVyID0gVHJ1ZQorCisgICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIgaXMgTm9uZToKKyAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQor
CisgICAgcmV0dXJuIF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihjbGllbnRfbWF4X3dpbmRvd19i
aXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIpCisKKworY2xhc3MgQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yKENsaWVudEhh
bmRzaGFrZUJhc2UpOgorICAgICIiIldlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNz
b3IKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBvcHRpb25zKToKKyAg
ICAgICAgc3VwZXIoQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29yLCBzZWxmKS5fX2luaXRfXygpCisK
KyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBv
cHRpb25zCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICAiIiJQZXJmb3JtcyBvcGVu
aW5nIGhhbmRzaGFrZSBvbiB0aGUgc3BlY2lmaWVkIHNvY2tldC4KKworICAgICAgICBSYWlzZXM6
CisgICAgICAgICAgICBDbGllbnRIYW5kc2hha2VFcnJvcjogaGFuZHNoYWtlIGZhaWxlZC4KKyAg
ICAgICAgIiIiCisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX2J1aWxkX21ldGhvZF9saW5lKHNl
bGYuX29wdGlvbnMucmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ2xpZW50
XCdzIG9wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdF9saW5lKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChy
ZXF1ZXN0X2xpbmUuZW5jb2RlKCdVVEYtOCcpKQorCisgICAgICAgIGZpZWxkcyA9IFtdCisgICAg
ICAgIGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICBfZm9ybWF0X2hvc3RfaGVhZGVyKHNlbGYu
X29wdGlvbnMuc2VydmVyX2hvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMudXNlX3RscykpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVf
SEVBREVSKQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5vcmlnaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmaWVs
ZHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIF9vcmlnaW5faGVhZGVyKGNvbW1vbi5PUklHSU5f
SEVBREVSLCBzZWxmLl9vcHRpb25zLm9yaWdpbikpCisKKyAgICAgICAgb3JpZ2luYWxfa2V5ID0g
b3MudXJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5fa2V5ID0gYmFzZTY0LmI2NGVuY29kZShvcmln
aW5hbF9rZXkpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21t
b24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5LCB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQorICAgICAgICBmaWVsZHMuYXBw
ZW5kKAorICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUKKyAgICAgICAgICAgIChjb21tb24uU0VD
X1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBzZWxmLl9rZXkuZGVjb2RlKCdVVEYtOCcpKSkKKworICAg
ICAgICBmaWVsZHMuYXBwZW5kKAorICAgICAgICAgICAgJyVzOiAlZFxyXG4nICUKKyAgICAgICAg
ICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwgY29tbW9uLlZFUlNJT05f
SFlCSV9MQVRFU1QpKQorCisgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdCA9IFtdCisKKyAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlOgorICAgICAgICAg
ICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgICAg
ICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgICAgICMgQWNj
ZXB0IHRoZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXIgYnkgZGVm
YXVsdC4KKyAgICAgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKAorICAgICAgICAgICAg
ICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgorICAgICAgICAgICAgICAg
IF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBOb25lKQorICAgICAgICAgICAgZXh0ZW5z
aW9uc190b19yZXF1ZXN0LmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAgaWYgbGVuKGV4dGVu
c2lvbnNfdG9fcmVxdWVzdCkgIT0gMDoKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAl
c1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VU
X0VYVEVOU0lPTlNfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLmZv
cm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbnNfdG9fcmVxdWVzdCkpKQorCisgICAgICAgIGZvciBm
aWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZC5l
bmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoYidcclxuJykK
KworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgY2xpZW50XCdzIG9wZW5pbmcgaGFu
ZHNoYWtlIGhlYWRlcnM6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcykK
KyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIFN0YXR1cy1MaW5lJykK
KworICAgICAgICBzdGF0dXNfbGluZSA9IGInJworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBz
dGF0dXNfbGluZSArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKworICAgICAgICBtID0gcmUubWF0Y2goYidIVFRQL1xcZCtcLlxcZCsgKFxc
ZFxcZFxcZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCisgICAgICAgIGlmIG0gaXMgTm9uZToKKyAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCdXcm9uZyBzdGF0dXMgbGluZSBm
b3JtYXQ6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXNfbGluZSkKKyAgICAgICAgc3RhdHVzX2NvZGUgPSBtLmdyb3VwKDEpCisgICAgICAgIGlmIHN0
YXR1c19jb2RlICE9IGInMTAxJzoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAg
ICAgICAgICAgICAgICAnVW5leHBlY3RlZCBzdGF0dXMgY29kZSAlcyB3aXRoIGZvbGxvd2luZyBo
ZWFkZXJzOiAlcicsCisgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGUsIHNlbGYuX3JlYWRfZmll
bGRzKCkpCisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAg
ICAgICAgICAnRXhwZWN0ZWQgSFRUUCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5kICVyJyAlIHN0
YXR1c19jb2RlKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgdmFsaWQg
U3RhdHVzLUxpbmUnKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcg
aGVhZGVycyB1bnRpbCB3ZSBzZWUgYW4gZW1wdHkgbGluZScpCisKKyAgICAgICAgZmllbGRzID0g
c2VsZi5fcmVhZF9maWVsZHMoKQorCisgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQorICAgICAgICBpZiBjaCAhPSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExG
IGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciBoZWFkZXIgJworICAgICAg
ICAgICAgICAgICduYW1lICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYW4gZW1wdHkgbGluZScpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU2VydmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmll
bGRzKQorCisgICAgICAgIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgY29tbW9u
LlVQR1JBREVfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
b24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSwgRmFsc2UpCisKKyAgICAgICAgX3ZhbGlkYXRlX21h
bmRhdG9yeV9oZWFkZXIoZmllbGRzLCBjb21tb24uQ09OTkVDVElPTl9IRUFERVIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQ
RSwgRmFsc2UpCisKKyAgICAgICAgYWNjZXB0ID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxk
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0FDQ0VQVF9IRUFERVIpCisKKyAgICAgICAgIyBWYWxpZGF0ZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBiaW5hcnlfYWNjZXB0ID0gYmFzZTY0LmI2NGRlY29kZShhY2NlcHQpCisg
ICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJv
cignSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcicgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2Vw
dCkpCisKKyAgICAgICAgaWYgbGVuKGJpbmFyeV9hY2NlcHQpICE9IDIwOgorICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFs
dWUgb2YgJXMgaXMgbm90IDIwLWJ5dGUgbG9uZycgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdSZXNwb25zZSBmb3IgY2hhbGxlbmdlIDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGJpbmFyeV9hY2NlcHQpKQorCisgICAgICAgIGJp
bmFyeV9leHBlY3RlZF9hY2NlcHQgPSBzaGExKHNlbGYuX2tleSArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRpZ2Vz
dCgpCisgICAgICAgIGV4cGVjdGVkX2FjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUoYmluYXJ5X2V4
cGVjdGVkX2FjY2VwdCkKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0V4cGVjdGVkIHJl
c3BvbnNlIGZvciBjaGFsbGVuZ2U6ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfYWNjZXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhp
ZnkoYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCkpCisKKyAgICAgICAgaWYgYWNjZXB0ICE9IGV4cGVj
dGVkX2FjY2VwdC5kZWNvZGUoJ1VURi04Jyk6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5k
c2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnSW52YWxpZCAlcyBoZWFkZXI6ICVyIChleHBl
Y3RlZDogJXMpJyAlCisgICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQ
VF9IRUFERVIsIGFjY2VwdCwgZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBwZXJtZXNzYWdl
X2RlZmxhdGVfYWNjZXB0ZWQgPSBGYWxzZQorCisgICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0g
ZmllbGRzLmdldCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNf
SEVBREVSLmxvd2VyKCkpCisgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQorICAgICAg
ICBpZiBleHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZSBhbmQgbGVuKGV4dGVuc2lvbnNfaGVh
ZGVyKSAhPSAwOgorICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJz
ZV9leHRlbnNpb25zKGV4dGVuc2lvbnNfaGVhZGVyWzBdKQorCisgICAgICAgIGZvciBleHRlbnNp
b24gaW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0g
ZXh0ZW5zaW9uLm5hbWUoKQorICAgICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OCisgICAgICAgICAgICAgICAgICAgIGFuZCBz
ZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUpOgorICAgICAgICAgICAgICAgIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCA9IFRydWUKKworICAgICAgICAgICAgICAgIGZyYW1l
ciA9IF9nZXRfcGVybWVzc2FnZV9kZWZsYXRlX2ZyYW1lcihleHRlbnNpb24pCisgICAgICAgICAg
ICAgICAgZnJhbWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisgICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlID0gZnJhbWVyCisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNo
YWtlRXJyb3IoJ1VuZXhwZWN0ZWQgZXh0ZW5zaW9uICVyJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fbmFtZSkKKworICAgICAgICBpZiAoc2VsZi5f
b3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgYW5kIG5vdCBw
ZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQpOgorICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2
ZXIgcmVqZWN0ZWQgaXQnICUKKyAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZM
QVRFX0VYVEVOU0lPTikKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBIYW5kbGUgU2VjLVdl
YlNvY2tldC1Qcm90b2NvbAorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBIYW5kbGUgQ29va2ll
LCBldGMuCisKKworY2xhc3MgQ2xpZW50Q29ubmVjdGlvbihvYmplY3QpOgorICAgICIiIkEgd3Jh
cHBlciBmb3Igc29ja2V0IG9iamVjdCB0byBwcm92aWRlIHRoZSBtcF9jb25uIGludGVyZmFjZS4K
KyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0CisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIHNl
bGYuX3NvY2tldC5zZW5kYWxsKGRhdGEpCisKKyAgICBkZWYgcmVhZChzZWxmLCBuKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3NvY2tldC5yZWN2KG4pCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRy
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0LmdldHBlZXJuYW1lKCkKKworICAg
IHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisKK2NsYXNzIENsaWVu
dFJlcXVlc3Qob2JqZWN0KToKKyAgICAiIiJBIHdyYXBwZXIgY2xhc3MganVzdCB0byBtYWtlIGl0
IGFibGUgdG8gcGFzcyBhIHNvY2tldCBvYmplY3QgdG8KKyAgICBmdW5jdGlvbnMgdGhhdCBleHBl
Y3QgYSBtcF9yZXF1ZXN0IG9iamVjdC4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
c29ja2V0KToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNlbGYuY29ubmVj
dGlvbiA9IENsaWVudENvbm5lY3Rpb24oc29ja2V0KQorICAgICAgICBzZWxmLndzX3ZlcnNpb24g
PSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorCisKK2NsYXNzIEVjaG9DbGllbnQob2JqZWN0
KToKKyAgICAiIiJXZWJTb2NrZXQgZWNobyBjbGllbnQuIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBz
ZWxmLl9zb2NrZXQgPSBOb25lCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAiIiJSdW4gdGhl
IGNsaWVudC4KKworICAgICAgICBTaGFrZSBoYW5kcyBhbmQgdGhlbiByZXBlYXQgc2VuZGluZyBt
ZXNzYWdlIGFuZCByZWNlaXZpbmcgaXRzIGVjaG8uCisgICAgICAgICIiIgorCisgICAgICAgIHNl
bGYuX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2V0dGlt
ZW91dChzZWxmLl9vcHRpb25zLnNvY2tldF90aW1lb3V0KQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBzZWxmLl9zb2NrZXQuY29ubmVjdCgKKyAgICAgICAgICAgICAgICAoc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfaG9zdCwgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCkpCisgICAgICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0ID0g
X1RMU1NvY2tldChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9
IENsaWVudEhhbmRzaGFrZVByb2Nlc3NvcihzZWxmLl9zb2NrZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucykKKwor
ICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlLmhhbmRzaGFrZSgpCisKKyAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKKworICAgICAgICAgICAg
cmVxdWVzdCA9IENsaWVudFJlcXVlc3Qoc2VsZi5fc29ja2V0KQorCisgICAgICAgICAgICBzdHJl
YW1fb3B0aW9uID0gU3RyZWFtT3B0aW9ucygpCisgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLm1h
c2tfc2VuZCA9IFRydWUKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb24udW5tYXNrX3JlY2VpdmUg
PSBGYWxzZQorCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2Rl
ZmxhdGUgaXMgbm90IEZhbHNlOgorICAgICAgICAgICAgICAgIGZyYW1lciA9IHNlbGYuX29wdGlv
bnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZQorICAgICAgICAgICAgICAgIGZyYW1lci5zZXR1cF9z
dHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBzZWxmLl9zdHJlYW0g
PSBTdHJlYW0ocmVxdWVzdCwgc3RyZWFtX29wdGlvbikKKworICAgICAgICAgICAgZm9yIGxpbmUg
aW4gc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJyk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1NlbmQ6ICVzJyAlIGxp
bmUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCA9
IHNlbGYuX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorCisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdS
ZWN2OiAlcycgJSByZWNlaXZlZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz
IGU6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmFpc2UKKworICAgICAgICAgICAgc2VsZi5fZG9fY2xvc2luZ19oYW5kc2hha2UoKQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKKworICAg
IGRlZiBfZG9fY2xvc2luZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZvcm0gY2xv
c2luZyBoYW5kc2hha2UgdXNpbmcgdGhlIHNwZWNpZmllZCBjbG9zaW5nIGZyYW1lLiIiIgorCisg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpWy0xXSA9PSBfR09PREJZ
RV9NRVNTQUdFOgorICAgICAgICAgICAgIyByZXF1ZXN0ZWQgc2VydmVyIGluaXRpYXRlZCBjbG9z
aW5nIGhhbmRzaGFrZSwgc28KKyAgICAgICAgICAgICMgZXhwZWN0aW5nIGNsb3NpbmcgaGFuZHNo
YWtlIG1lc3NhZ2UgZnJvbSBzZXJ2ZXIuCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
V2FpdCBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAg
ICBtZXNzYWdlID0gc2VsZi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgICAgICBp
ZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcHJpbnQoJ1JlY3YgY2xvc2UnKQor
ICAgICAgICAgICAgICAgIHByaW50KCdTZW5kIGFjaycpCisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBzZW50IGFjaycpCisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHByaW50KCdTZW5kIGNsb3NlJykKKyAgICAg
ICAgc2VsZi5fc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLl9sb2dnZXIu
aW5mbygnU2VudCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgIHByaW50KCdSZWN2IGFjaycp
CisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdSZWNlaXZlZCBhY2snKQorCisKK2RlZiBtYWlu
KCk6CisgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgc3lzLnN0ZG91dCA9IGNvZGVjcy5nZXR3cml0
ZXIoJ3V0Zi04Jykoc3lzLnN0ZG91dCkKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcigpCisg
ICAgIyBXZSBhY2NlcHQgLS1jb21tYW5kX2xpbmVfZmxhZyBzdHlsZSBmbGFncyB3aGljaCBpcyB0
aGUgc2FtZSBhcyBHb29nbGUKKyAgICAjIGdmbGFncyBpbiBhZGRpdGlvbiB0byBjb21tb24gLS1j
b21tYW5kLWxpbmUtZmxhZyBzdHlsZSBmbGFncy4KKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXMn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAg
ICAgICAgICAnLS1zZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2Vy
dmVyX2hvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdzZXJ2ZXIgaG9zdCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywKKyAgICAg
ICAgICAgICAgICAgICAgICAnLS1zZXJ2ZXItcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAg
Jy0tc2VydmVyX3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9wb3J0
JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9X1VOREVGSU5FRF9QT1JULAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
J3NlcnZlciBwb3J0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW8nLAorICAgICAgICAgICAg
ICAgICAgICAgICctLW9yaWdpbicsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nb3JpZ2lu
JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvcmlnaW4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcicsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
cmVzb3VyY2UnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Jlc291cmNlJywKKyAgICAg
ICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9Jy9lY2hvJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZXNvdXJjZSBwYXRo
JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLAorICAgICAgICAgICAgICAgICAgICAgICct
LW1lc3NhZ2UnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21lc3NhZ2UnLAorICAgICAg
ICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyVzIHdpbGwgZm9yY2UgY2xvc2UgdGhlIGNvbm5lY3Rpb24gZnJvbSBzZXJ2
ZXIuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dPT0RCWUVfTUVTU0FHRSkpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWll
dCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyYm9zZScsCisgICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIG1lc3NhZ2Vz
JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLAorICAgICAgICAgICAgICAgICAgICAgICct
LXRscycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3RscycsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBUTFMgKHdzczov
LykuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLAorICAgICAgICAgICAgICAgICAgICAg
ICctLXNvY2tldC10aW1lb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1zb2NrZXRfdGlt
ZW91dCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc29ja2V0X3RpbWVvdXQnLAorICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdD1fVElNRU9VVF9TRUMsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVGltZW91dChz
ZWMpIGZvciBzb2NrZXRzJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS11c2UtcGVybWVzc2Fn
ZS1kZWZsYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS11c2VfcGVybWVzc2FnZV9kZWZs
YXRlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfcGVybWVzc2FnZV9kZWZsYXRl
JywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
VXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLicpCisgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tbG9nLWxldmVsJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbGV2ZWwn
LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nbG9nX2xldmVsJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSd3
YXJuJywKKyAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3
YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
TG9nIGxldmVsLicpCisKKyAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLmdldExldmVs
TmFtZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKKworICAgICMgRGVmYXVsdCBwb3J0IG51
bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVzZWQuCisgICAgaWYgb3B0aW9ucy5zZXJ2
ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6CisgICAgICAgIGlmIG9wdGlvbnMudXNlX3RsczoK
KyAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09D
S0VUX1NFQ1VSRV9QT1JUCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcHRpb25zLnNlcnZl
cl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUCisKKyAgICAjIG9wdHBhcnNl
IGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFsdWVzLgorICAgICMg
U2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgorICAgIGlmIG5vdCBvcHRpb25zLm1lc3NhZ2U6Cisg
ICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJjJyAgIyAiSmFwYW4i
IGluIEphcGFuZXNlCisKKyAgICBFY2hvQ2xpZW50KG9wdGlvbnMpLnJ1bigpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YmE1MDMyMjE4ZDI2OTk1OGJmNzUxYmY2MDhiYmI1MjU1NmM2Zjc2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQpAQCAtMCwwICsx
LDYyIEBACisjIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHNpeAorCitfR09PREJZRV9NRVNTQUdF
ID0gdSdHb29kYnllJworCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICAiIiJSZWNlaXZlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZh
bHVlIGlzIHBhcnNlZCBpbnRvCisgICAgcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucy4g
cHl3ZWJzb2NrZXQgY3JlYXRlcyBleHRlbnNpb24KKyAgICBwcm9jZXNzb3JzIHVzaW5nIGl0IGJl
Zm9yZSBkb19leHRyYV9oYW5kc2hha2UgY2FsbCBhbmQgbmV2ZXIgbG9va3MgYXQgaXQKKyAgICBh
ZnRlciB0aGUgY2FsbC4KKworICAgIFRvIHJlamVjdCByZXF1ZXN0ZWQgZXh0ZW5zaW9ucywgY2xl
YXIgdGhlIHByb2Nlc3NvciBsaXN0LgorICAgICIiIgorCisgICAgcmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29ycyA9IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKKyAgICAiIiJFY2hvLiBTYW1lIGFzIGVjaG9fd3NoLnB5LiIiIgorCisgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgp
CisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBp
ZiBpc2luc3RhbmNlKGxpbmUsIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53
c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlm
IGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5l
LCBiaW5hcnk9VHJ1ZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2VjaG9fd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YjNjNmM1MzExYmJiOTlmMzM0ZjMzNTdkODAx
YTJmNDIwNTYwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2VjaG9fd3NoLnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
c2l4CisKK19HT09EQllFX01FU1NBR0UgPSB1J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgVGhpcyBleGFtcGxlIGhhbmRsZXIg
YWNjZXB0cyBhbnkgcmVxdWVzdC4gU2VlIG9yaWdpbl9jaGVja193c2gucHkgZm9yIGhvdworICAg
ICMgdG8gcmVqZWN0IGFjY2VzcyBmcm9tIHVudHJ1c3RlZCBzY3JpcHRzIGJhc2VkIG9uIG9yaWdp
biB2YWx1ZS4KKworICAgIHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUg
PSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBz
aXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2Fn
ZShsaW5lLCBiaW5hcnk9RmFsc2UpCisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01F
U1NBR0U6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L2hhbmRsZXJfbWFwLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIxYzRjMDlhYTAwOTFkOGJhZjI5MDg5NTk5MDU4Njc4NDJhZWI4NjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2hhbmRsZXJfbWFw
LnR4dApAQCAtMCwwICsxLDExIEBACisjIHdlYnNvY2tldCBoYW5kbGVyIG1hcCBmaWxlLCB1c2Vk
IGJ5IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9uLgorIyBBIGxpbmUgc3RhcnRpbmcgd2l0aCAnIycg
aXMgYSBjb21tZW50IGxpbmUuCisjIEVhY2ggbGluZSBjb25zaXN0cyBvZiAnYWxpYXNfcmVzb3Vy
Y2VfcGF0aCcgYW5kICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJworIyBzZXBhcmF0ZWQgYnkgc3Bh
Y2VzLgorIyBBbGlhc2luZyBpcyBwcm9jZXNzZWQgZnJvbSB0aGUgdG9wIHRvIHRoZSBib3R0b20g
b2YgdGhlIGxpbmUsIGFuZAorIyAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcgbXVzdCBleGlzdCBi
ZWZvcmUgaXQgaXMgYWxpYXNlZC4KKyMgRm9yIGV4YW1wbGUsCisjICAvIC9lY2hvCisjIG1lYW5z
IHRoYXQgYSByZXF1ZXN0IHRvICcvJyB3aWxsIGJlIGhhbmRsZWQgYnkgaGFuZGxlcnMgZm9yICcv
ZWNobycuCisvIC9lY2hvCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
aHN0c193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2hzdHNfd3NoLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4NjE5NDY5MjFhZjA0NTk0ZDYyMDI2YjQ2ZjA3NzU4ZGRmZTQwMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2hzdHNfd3NoLnB5CkBAIC0wLDAg
KzEsNDAgQEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LmV4dHJhX2hlYWRlcnMuYXBwZW5kKAorICAg
ICAgICAoJ1N0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHknLCAnbWF4LWFnZT04NjQwMCcpKQorCisK
K2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKCdIZWxsbycsIGJpbmFyeT1GYWxzZSkKKworCisjIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxf
ZXJyb3Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJvcl93
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDRhYTY4NDI4M2E2MDNmNWIzM2RkYTUyNjMwMTk5OWI0NDc5MmRk
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxf
ZXJyb3Jfd3NoLnB5CkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IG1zZ3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgcmFpc2UgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24oJ0ludGVudGlvbmFsJykK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvb3Jp
Z2luX2NoZWNrX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDU3NjdhYjkzMmZiNTgyODI0YWFmMWE1N2Q5
MjQ5YzMwNGJkNTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjIFRoaXMgZXhhbXBsZSBpcyBkZXJpdmVkIGZyb20gdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9v
cmlnaW5fY2hlY2tfd3NoLnB5LgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKKyAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAnaHR0cDovL2V4YW1wbGUu
Y29tJzoKKyAgICAgICAgcmV0dXJuCisgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hY2NlcHRhYmxl
IG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCisKKworZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ29yaWdp
bl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOGIyYzA4ZjZh
MjI1NGExZjlkNzY1MDc5MDJjMWE2YjVhZWU4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCEtLQorQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCitBbGwgcmlnaHRzIHJl
c2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKK21ldDoKKworICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
K25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKK2luIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbi4KKyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKK2NvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCit0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKK0RBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCitPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLS0+CisKKzwhRE9DVFlQRSBodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImJlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzA0MDlhYTZl
YjVmZDFhMTFhZTJkNWJhMTU2YmI4YWFjMmZjYWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcwpAQCAtMCwwICsx
LDg2IEBACisvLyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Z1
bmN0aW9uIHBlcmZUZXN0QWRkVG9Mb2codGV4dCkgeworICBwYXJlbnQucG9zdE1lc3NhZ2Uoeydj
b21tYW5kJzogJ2xvZycsICd2YWx1ZSc6IHRleHR9LCAnKicpOworfQorCitmdW5jdGlvbiBwZXJm
VGVzdEFkZFRvU3VtbWFyeSh0ZXh0KSB7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0TWVhc3VyZVZh
bHVlKHZhbHVlKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbWVhc3VyZVZh
bHVlJywgJ3ZhbHVlJzogdmFsdWV9LCAnKicpOworfQorCitmdW5jdGlvbiBwZXJmVGVzdE5vdGlm
eUFib3J0KCkgeworICBwYXJlbnQucG9zdE1lc3NhZ2Uoeydjb21tYW5kJzogJ25vdGlmeUFib3J0
J30sICcqJyk7Cit9CisKK2Z1bmN0aW9uIGdldENvbmZpZ0ZvclBlcmZvcm1hbmNlVGVzdChkYXRh
VHlwZSwgYXN5bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5
RGF0YSwgbnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudW1XYXJtVXBJdGVyYXRpb25zKSB7CisKKyAgcmV0dXJuIHsKKyAgICBwcmVmaXhVcmw6ICd3
czovLycgKyBsb2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtfaGVscGVyJywKKyAgICBwcmludFNp
emU6IHRydWUsCisgICAgbnVtU29ja2V0czogMSwKKyAgICAvLyArIDEgaXMgZm9yIGEgd2FybXVw
IGl0ZXJhdGlvbiBieSB0aGUgVGVsZW1ldHJ5IGZyYW1ld29yay4KKyAgICBudW1JdGVyYXRpb25z
OiBudW1JdGVyYXRpb25zICsgbnVtV2FybVVwSXRlcmF0aW9ucyArIDEsCisgICAgbnVtV2FybVVw
SXRlcmF0aW9uczogbnVtV2FybVVwSXRlcmF0aW9ucywKKyAgICBtaW5Ub3RhbDogMTAyNDAwMDAs
CisgICAgc3RhcnRTaXplOiAxMDI0MDAwMCwKKyAgICBzdG9wVGhyZXNob2xkOiAxMDI0MDAwMCwK
KyAgICBtdWx0aXBsaWVyczogWzJdLAorICAgIHZlcmlmeURhdGE6IHZlcmlmeURhdGEsCisgICAg
ZGF0YVR5cGU6IGRhdGFUeXBlLAorICAgIGFzeW5jOiBhc3luYywKKyAgICBhZGRUb0xvZzogcGVy
ZlRlc3RBZGRUb0xvZywKKyAgICBhZGRUb1N1bW1hcnk6IHBlcmZUZXN0QWRkVG9TdW1tYXJ5LAor
ICAgIG1lYXN1cmVWYWx1ZTogcGVyZlRlc3RNZWFzdXJlVmFsdWUsCisgICAgbm90aWZ5QWJvcnQ6
IHBlcmZUZXN0Tm90aWZ5QWJvcnQKKyAgfTsKK30KKwordmFyIGRhdGE7Citvbm1lc3NhZ2UgPSBm
dW5jdGlvbihtZXNzYWdlKSB7CisgIHZhciBhY3Rpb247CisgIGlmIChtZXNzYWdlLmRhdGEuY29t
bWFuZCA9PT0gJ3N0YXJ0JykgeworICAgIGRhdGEgPSBtZXNzYWdlLmRhdGE7CisgICAgaW5pdFdv
cmtlcignaHR0cDovLycgKyBsb2NhdGlvbi5ob3N0KTsKKyAgICBhY3Rpb24gPSBkYXRhLmJlbmNo
bWFya05hbWU7CisgIH0gZWxzZSB7CisgICAgYWN0aW9uID0gJ3N0b3AnOworICB9CisKKyAgdmFy
IGNvbmZpZyA9IGdldENvbmZpZ0ZvclBlcmZvcm1hbmNlVGVzdChkYXRhLmRhdGFUeXBlLCBkYXRh
LmFzeW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
dmVyaWZ5RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhLm51bUl0ZXJhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YS5udW1XYXJtVXBJdGVyYXRpb25zKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBkYXRh
LmlzV29ya2VyLCBhY3Rpb24pOworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDNjYjc0MDFiNzg3YWM2ZTExYzY3NDZjNjg0
MmU1N2QzODA5NTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpCkBAIC0wLDAgKzEsMjYgQEAKKyMhL3Vzci9iaW4vcHl0aG9u
CisKKyMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKKyMg
bGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0CisjIGh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAorIiIi
Q0dJIHNjcmlwdCBzYW1wbGUgZm9yIHRlc3RpbmcgZWZmZWN0IG9mIEhUVFAgaGVhZGVycyBvbiB0
aGUgb3JpZ2luIHBhZ2UuCisKK05vdGUgdGhhdCBDR0kgc2NyaXB0cyBkb24ndCB3b3JrIG9uIHRo
ZSBzdGFuZGFsb25lIHB5d2Vic29ja2V0IHJ1bm5pbmcgaW4gVExTCittb2RlLgorIiIiCisKK3By
aW50ICIiIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sCitDb250ZW50LVNlY3VyaXR5LVBvbGljeTog
Y29ubmVjdC1zcmMgc2VsZgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPjwvdGl0bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgid3M6Ly9l
eGFtcGxlLmNvbSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+IiIiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL3V0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwMTYwY2I0MGM0Yzc4MDBjZDllNzYzMDAxNDBi
OWJmZTlmMTRkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
dXRpbC5qcwpAQCAtMCwwICsxLDMyMyBAQAorLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMu
CisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMg
KGZvciBib3RoIG1haW4gYW5kIHdvcmtlciB0aHJlYWQpLgorCit2YXIgcmVzdWx0cyA9IHt9Owor
CitmdW5jdGlvbiBnZXRUaW1lU3RhbXAoKSB7CisgIHJldHVybiBEYXRlLm5vdygpOworfQorCitm
dW5jdGlvbiBmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRl
dlRpbWVQZXJNZXNzYWdlSW5NcywKKyAgICBzcGVlZCwgcHJpbnRTaXplKSB7CisgIGlmIChwcmlu
dFNpemUpIHsKKyAgICByZXR1cm4gKHNpemUgLyAxMDI0KSArCisgICAgICAgICdcdCcgKyB0aW1l
UGVyTWVzc2FnZUluTXMudG9GaXhlZCgzKSArCisgICAgICAgIChzdGRkZXZUaW1lUGVyTWVzc2Fn
ZUluTXMgPT0gLTEgPworICAgICAgICAgICAgJycgOgorICAgICAgICAgICAgJ1x0JyArIHN0ZGRl
dlRpbWVQZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpKSArCisgICAgICAgICdcdCcgKyBzcGVlZC50
b0ZpeGVkKDMpOworICB9IGVsc2UgeworICAgIHJldHVybiBzcGVlZC50b1N0cmluZygpOworICB9
Cit9CisKK2Z1bmN0aW9uIGNsZWFyQXZlcmFnZURhdGEoKSB7CisgIHJlc3VsdHMgPSB7fTsKK30K
KworZnVuY3Rpb24gcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb1N1
bW1hcnkoCisgICAgICAnU2l6ZVtLaUJdXHRBdmVyYWdlIHRpbWVbbXNdXHRTdGRkZXYgdGltZVtt
c11cdFNwZWVkW0tCL3NdJyk7CisgIGZvciAodmFyIHNpemUgaW4gcmVzdWx0cykgeworICAgIHZh
ciBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zID0gcmVzdWx0c1tzaXplXS5zdW1fdCAvIHJlc3Vs
dHNbc2l6ZV0ubjsKKyAgICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6ZSwgYXZl
cmFnZVRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgLy8gQ2FsY3VsYXRlIHNhbXBsZSBzdGFuZGFy
ZCBkZXZpYXRpb24KKyAgICB2YXIgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID0gTWF0aC5zcXJ0
KAorICAgICAgICAocmVzdWx0c1tzaXplXS5zdW1fdDIgLyByZXN1bHRzW3NpemVdLm4gLQorICAg
ICAgICAgICAgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyAqIGF2ZXJhZ2VUaW1lUGVyTWVzc2Fn
ZUluTXMpICoKKyAgICAgICAgcmVzdWx0c1tzaXplXS5uIC8KKyAgICAgICAgKHJlc3VsdHNbc2l6
ZV0ubiAtIDEpKTsKKyAgICBjb25maWcuYWRkVG9TdW1tYXJ5KGZvcm1hdFJlc3VsdEluS2lCKAor
ICAgICAgICBzaXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1lUGVyTWVz
c2FnZUluTXMsIHNwZWVkLAorICAgICAgICB0cnVlKSk7CisgIH0KK30KKworZnVuY3Rpb24gY2Fs
Y3VsYXRlU3BlZWRJbktCKHNpemUsIHRpbWVTcGVudEluTXMpIHsKKyAgcmV0dXJuIE1hdGgucm91
bmQoc2l6ZSAvIHRpbWVTcGVudEluTXMgKiAxMDAwKSAvIDEwMDA7Cit9CisKK2Z1bmN0aW9uIGNh
bGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIHN0YXJ0VGltZUluTXMsIHRvdGFsU2l6
ZSwKKyAgICBpc1dhcm1VcCkgeworICB2YXIgdGltZVNwZW50SW5NcyA9IGdldFRpbWVTdGFtcCgp
IC0gc3RhcnRUaW1lSW5NczsKKyAgdmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFs
U2l6ZSwgdGltZVNwZW50SW5Ncyk7CisgIHZhciB0aW1lUGVyTWVzc2FnZUluTXMgPSB0aW1lU3Bl
bnRJbk1zIC8gKHRvdGFsU2l6ZSAvIHNpemUpOworICBpZiAoIWlzV2FybVVwKSB7CisgICAgY29u
ZmlnLm1lYXN1cmVWYWx1ZSh0aW1lUGVyTWVzc2FnZUluTXMpOworICAgIGlmICghcmVzdWx0c1tz
aXplXSkgeworICAgICAgcmVzdWx0c1tzaXplXSA9IHtuOiAwLCBzdW1fdDogMCwgc3VtX3QyOiAw
fTsKKyAgICB9CisgICAgcmVzdWx0c1tzaXplXS5uICsrOworICAgIHJlc3VsdHNbc2l6ZV0uc3Vt
X3QgKz0gdGltZVBlck1lc3NhZ2VJbk1zOworICAgIHJlc3VsdHNbc2l6ZV0uc3VtX3QyICs9IHRp
bWVQZXJNZXNzYWdlSW5NcyAqIHRpbWVQZXJNZXNzYWdlSW5NczsKKyAgfQorICBjb25maWcuYWRk
VG9Mb2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1zLCAtMSwgc3Bl
ZWQsCisgICAgICBjb25maWcucHJpbnRTaXplKSk7Cit9CisKK2Z1bmN0aW9uIHJlcGVhdFN0cmlu
ZyhzdHIsIGNvdW50KSB7CisgIHZhciBkYXRhID0gJyc7CisgIHZhciBleHBDaHVuayA9IHN0cjsK
KyAgdmFyIHJlbWFpbiA9IGNvdW50OworICB3aGlsZSAodHJ1ZSkgeworICAgIGlmIChyZW1haW4g
JSAyKSB7CisgICAgICBkYXRhICs9IGV4cENodW5rOworICAgICAgcmVtYWluID0gKHJlbWFpbiAt
IDEpIC8gMjsKKyAgICB9IGVsc2UgeworICAgICAgcmVtYWluIC89IDI7CisgICAgfQorCisgICAg
aWYgKHJlbWFpbiA9PSAwKQorICAgICAgYnJlYWs7CisKKyAgICBleHBDaHVuayA9IGV4cENodW5r
ICsgZXhwQ2h1bms7CisgIH0KKyAgcmV0dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIGZpbGxBcnJh
eUJ1ZmZlcihidWZmZXIsIGMpIHsKKyAgdmFyIGk7CisKKyAgdmFyIHUzMkNvbnRlbnQgPSBjICog
MHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxl
bmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUz
MkJsb2Nrcyk7CisgIC8vIGxlbmd0aCBhdHRyaWJ1dGUgaXMgc2xvdyBvbiBDaHJvbWUuIERvbid0
IHVzZSBpdCBmb3IgbG9vcCBjb25kaXRpb24uCisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7
ICsraSkgeworICAgIHUzMlZpZXdbaV0gPSB1MzJDb250ZW50OworICB9CisKKyAgLy8gRnJhY3Rp
b24KKyAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9ja3MgKiA0Owor
ICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3MgKiA0LCB1OEJs
b2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7CisgICAgdThWaWV3W2ld
ID0gYzsKKyAgfQorfQorCitmdW5jdGlvbiB2ZXJpZnlBcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVj
dGVkQ2hhcikgeworICB2YXIgaTsKKworICB2YXIgZXhwZWN0ZWRVMzJWYWx1ZSA9IGV4cGVjdGVk
Q2hhciAqIDB4MDEwMTAxMDE7CisKKyAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3IoYnVmZmVy
LmJ5dGVMZW5ndGggLyA0KTsKKyAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVy
LCAwLCB1MzJCbG9ja3MpOworICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kpIHsKKyAg
ICBpZiAodTMyVmlld1tpXSAhPSBleHBlY3RlZFUzMlZhbHVlKSB7CisgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICB9CisKKyAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1
MzJCbG9ja3MgKiA0OworICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJC
bG9ja3MgKiA0LCB1OEJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7
CisgICAgaWYgKHU4Vmlld1tpXSAhPSBleHBlY3RlZENoYXIpIHsKKyAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Qmxv
Yihjb25maWcsIGJsb2IsIGV4cGVjdGVkQ2hhciwgZG9uZUNhbGxiYWNrKSB7CisgIHZhciByZWFk
ZXIgPSBuZXcgRmlsZVJlYWRlcihibG9iKTsKKyAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigp
IHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbGVSZWFkZXIgRXJyb3I6ICcgKyByZWFkZXIuZXJy
b3IubWVzc2FnZSk7CisgICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgZmFsc2UpOworICB9Cisg
IHJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVzdWx0ID0gdmVyaWZ5
QXJyYXlCdWZmZXIocmVhZGVyLnJlc3VsdCwgZXhwZWN0ZWRDaGFyKTsKKyAgICBkb25lQ2FsbGJh
Y2soYmxvYi5zaXplLCByZXN1bHQpOworICB9CisgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihi
bG9iKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywgbWVzc2Fn
ZSwgc2l6ZSkgeworICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHsKKyAgICBjb25m
aWcuYWRkVG9Mb2coJ0ludmFsaWQgYWNrIHR5cGU6ICcgKyB0eXBlb2YgbWVzc2FnZSk7CisgICAg
cmV0dXJuIGZhbHNlOworICB9CisgIHZhciBwYXJzZWRBY2sgPSBwYXJzZUludChtZXNzYWdlKTsK
KyAgaWYgKGlzTmFOKHBhcnNlZEFjaykpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQg
YWNrIHZhbHVlOiAnICsgbWVzc2FnZSk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmIChw
YXJzZWRBY2sgIT0gc2l6ZSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygKKyAgICAgICAgJ0V4cGVj
dGVkIGFjayBmb3IgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgb25lIGZvciAnICsgcGFyc2Vk
QWNrICsKKyAgICAgICAgJ0InKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4g
dHJ1ZTsKK30KKworZnVuY3Rpb24gY2xvbmVDb25maWcob2JqKSB7CisgIHZhciBuZXdPYmogPSB7
fTsKKyAgZm9yIChrZXkgaW4gb2JqKSB7CisgICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKKyAg
fQorICByZXR1cm4gbmV3T2JqOworfQorCit2YXIgdGFza3MgPSBbXTsKKworZnVuY3Rpb24gcnVu
TmV4dFRhc2soY29uZmlnKSB7CisgIHZhciB0YXNrID0gdGFza3Muc2hpZnQoKTsKKyAgaWYgKHRh
c2sgPT0gdW5kZWZpbmVkKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdGaW5pc2hlZCcpOworICAg
IGNsZWFudXAoKTsKKyAgICByZXR1cm47CisgIH0KKyAgdGltZXJJRCA9IHNldFRpbWVvdXQodGFz
aywgMCk7Cit9CisKK2Z1bmN0aW9uIGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykgeworICB2YXIg
bGVnZW5kID0gJycKKyAgaWYgKGNvbmZpZy5wcmludFNpemUpCisgICAgbGVnZW5kID0gJ01lc3Nh
Z2Ugc2l6ZSBpbiBLaUIsIFRpbWUvbWVzc2FnZSBpbiBtcywgJzsKKyAgbGVnZW5kICs9ICdTcGVl
ZCBpbiBrQi9zJzsKKyAgcmV0dXJuIGxlZ2VuZDsKK30KKworZnVuY3Rpb24gYWRkVGFza3MoY29u
ZmlnLCBzdGVwRnVuYykgeworICBmb3IgKHZhciBpID0gMDsKKyAgICAgIGkgPCBjb25maWcubnVt
V2FybVVwSXRlcmF0aW9ucyArIGNvbmZpZy5udW1JdGVyYXRpb25zOyArK2kpIHsKKyAgICB2YXIg
bXVsdGlwbGllckluZGV4ID0gMDsKKyAgICBmb3IgKHZhciBzaXplID0gY29uZmlnLnN0YXJ0U2l6
ZTsKKyAgICAgICAgIHNpemUgPD0gY29uZmlnLnN0b3BUaHJlc2hvbGQ7CisgICAgICAgICArK211
bHRpcGxpZXJJbmRleCkgeworICAgICAgdmFyIHRhc2sgPSBzdGVwRnVuYy5iaW5kKAorICAgICAg
ICAgIG51bGwsCisgICAgICAgICAgc2l6ZSwKKyAgICAgICAgICBjb25maWcsCisgICAgICAgICAg
aSA8IGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zKTsKKyAgICAgIHRhc2tzLnB1c2godGFzayk7
CisgICAgICB2YXIgbXVsdGlwbGllciA9IGNvbmZpZy5tdWx0aXBsaWVyc1sKKyAgICAgICAgbXVs
dGlwbGllckluZGV4ICUgY29uZmlnLm11bHRpcGxpZXJzLmxlbmd0aF07CisgICAgICBpZiAobXVs
dGlwbGllciA8PSAxKSB7CisgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBtdWx0aXBs
aWVyICcgKyBtdWx0aXBsaWVyKTsKKyAgICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtdWx0aXBsZXInKTsKKyAgICAgIH0KKyAgICAg
IHNpemUgPSBNYXRoLmNlaWwoc2l6ZSAqIG11bHRpcGxpZXIpOworICAgIH0KKyAgfQorfQorCitm
dW5jdGlvbiBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgdGl0bGUpIHsKKyAgdGFza3Mu
cHVzaChmdW5jdGlvbigpeworICAgICAgdGltZXJJRCA9IG51bGw7CisgICAgICBjb25maWcuYWRk
VG9TdW1tYXJ5KHRpdGxlKTsKKyAgICAgIHJlcG9ydEF2ZXJhZ2VEYXRhKGNvbmZpZyk7CisgICAg
ICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgICAgICBydW5OZXh0VGFzayhjb25maWcpOworICB9KTsK
K30KKworZnVuY3Rpb24gc2VuZEJlbmNobWFyayhjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvTG9n
KCdTZW5kIGJlbmNobWFyaycpOworICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSk7CisKKyAgdGFza3MgPSBbXTsKKyAgY2xlYXJBdmVyYWdlRGF0YSgpOworICBhZGRU
YXNrcyhjb25maWcsIHNlbmRCZW5jaG1hcmtTdGVwKTsKKyAgYWRkUmVzdWx0UmVwb3J0aW5nVGFz
ayhjb25maWcsICdTZW5kIEJlbmNobWFyayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwor
ICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiByZWNlaXZlQmVuY2htYXJr
KGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2coJ1JlY2VpdmUgYmVuY2htYXJrJyk7CisgIGNv
bmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsKKworICB0YXNrcyA9IFtd
OworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNo
bWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywKKyAgICAgICdSZWNl
aXZlIEJlbmNobWFyayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOworICBzdGFydEJlbmNo
bWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiBzdG9wKGNvbmZpZykgeworICBjbGVhclRpbWVv
dXQodGltZXJJRCk7CisgIHRpbWVySUQgPSBudWxsOworICB0YXNrcyA9IFtdOworICBjb25maWcu
YWRkVG9Mb2coJ1N0b3BwZWQnKTsKKyAgY2xlYW51cCgpOworfQorCit2YXIgd29ya2VyOworCitm
dW5jdGlvbiBpbml0V29ya2VyKG9yaWdpbikgeworICB3b3JrZXIgPSBuZXcgV29ya2VyKG9yaWdp
biArICcvYmVuY2htYXJrLmpzJyk7Cit9CisKK2Z1bmN0aW9uIGRvQWN0aW9uKGNvbmZpZywgaXNX
aW5kb3dUb1dvcmtlciwgYWN0aW9uKSB7CisgIGlmIChpc1dpbmRvd1RvV29ya2VyKSB7CisgICAg
d29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGFkZFRvTG9nLCBhZGRUb1N1bW1hcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVWYWx1ZSwgbm90aWZ5QWJvcnQsIG1l
c3NhZ2UpIHsKKyAgICAgIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2FkZFRvTG9nJykKKyAg
ICAgICAgYWRkVG9Mb2cobWVzc2FnZS5kYXRhLmRhdGEpOworICAgICAgZWxzZSBpZiAobWVzc2Fn
ZS5kYXRhLnR5cGUgPT09ICdhZGRUb1N1bW1hcnknKQorICAgICAgICBhZGRUb1N1bW1hcnkobWVz
c2FnZS5kYXRhLmRhdGEpOworICAgICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdt
ZWFzdXJlVmFsdWUnKQorICAgICAgICBtZWFzdXJlVmFsdWUobWVzc2FnZS5kYXRhLmRhdGEpOwor
ICAgICAgZWxzZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdub3RpZnlBYm9ydCcpCisgICAg
ICAgIG5vdGlmeUFib3J0KCk7CisgICAgfS5iaW5kKHVuZGVmaW5lZCwgY29uZmlnLmFkZFRvTG9n
LCBjb25maWcuYWRkVG9TdW1tYXJ5LAorICAgICAgICAgICBjb25maWcubWVhc3VyZVZhbHVlLCBj
b25maWcubm90aWZ5QWJvcnQpOworICAgIGNvbmZpZy5hZGRUb0xvZyA9IHVuZGVmaW5lZDsKKyAg
ICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gdW5kZWZpbmVkOworICAgIGNvbmZpZy5tZWFzdXJlVmFs
dWUgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm5vdGlmeUFib3J0ID0gdW5kZWZpbmVkOworICAg
IHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogYWN0aW9uLCBjb25maWc6IGNvbmZpZ30pOworICB9
IGVsc2UgeworICAgIGlmIChhY3Rpb24gPT09ICdzZW5kQmVuY2htYXJrJykKKyAgICAgIHNlbmRC
ZW5jaG1hcmsoY29uZmlnKTsKKyAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdyZWNlaXZlQmVuY2ht
YXJrJykKKyAgICAgIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKTsKKyAgICBlbHNlIGlmIChhY3Rp
b24gPT09ICdiYXRjaEJlbmNobWFyaycpCisgICAgICBiYXRjaEJlbmNobWFyayhjb25maWcpOwor
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3N0b3AnKQorICAgICAgc3RvcChjb25maWcpOworICB9
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfbWFpbi5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YWRk
NDg3MzFmODhmZTg1ZWVlYTQwZTZlMDE5Y2YxN2NjY2UzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfbWFpbi5qcwpAQCAtMCwwICsxLDg5IEBACisv
LyBDb3B5cmlnaHQgMjAxNCwgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVXRpbGl0
aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9yIHRoZSBtYWluIHRocmVhZCBvbmx5KS4K
KwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgcXVldWVkTG9nID0gJyc7CisKK3ZhciBzdW1tYXJ5
Qm94ID0gbnVsbDsKKworZnVuY3Rpb24gcXVldWVMb2cobG9nKSB7CisgIHF1ZXVlZExvZyArPSBs
b2cgKyAnXG4nOworfQorCitmdW5jdGlvbiBhZGRUb0xvZyhsb2cpIHsKKyAgbG9nQm94LnZhbHVl
ICs9IHF1ZXVlZExvZzsKKyAgcXVldWVkTG9nID0gJyc7CisgIGxvZ0JveC52YWx1ZSArPSBsb2cg
KyAnXG4nOworICBsb2dCb3guc2Nyb2xsVG9wID0gMTAwMDAwMDsKK30KKworZnVuY3Rpb24gYWRk
VG9TdW1tYXJ5KGxvZykgeworICBzdW1tYXJ5Qm94LnZhbHVlICs9IGxvZyArICdcbic7CisgIHN1
bW1hcnlCb3guc2Nyb2xsVG9wID0gMTAwMDAwMDsKK30KKworLy8gdmFsdWU6IGV4ZWN1dGlvbiB0
aW1lIGluIG1pbGxpc2Vjb25kcy4KKy8vIGNvbmZpZy5tZWFzdXJlVmFsdWUgaXMgaW50ZW5kZWQg
dG8gYmUgdXNlZCBpbiBQZXJmb3JtYW5jZSBUZXN0cy4KKy8vIERvIG5vdGhpbmcgaGVyZSBpbiBu
b24tUGVyZm9ybWFuY2VUZXN0LgorZnVuY3Rpb24gbWVhc3VyZVZhbHVlKHZhbHVlKSB7Cit9CisK
Ky8vIGNvbmZpZy5ub3RpZnlBYm9ydCBpcyBjYWxsZWQgd2hlbiB0aGUgYmVuY2htYXJrIGZhaWxl
ZCBhbmQgYWJvcnRlZCwgYW5kCisvLyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIFBlcmZvcm1hbmNl
IFRlc3RzLgorLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1QZXJmb3JtYW5jZVRlc3QuCitmdW5j
dGlvbiBub3RpZnlBYm9ydCgpIHsKK30KKworZnVuY3Rpb24gZ2V0SW50RnJvbUlucHV0KGlkKSB7
CisgIHJldHVybiBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWUpOwor
fQorCitmdW5jdGlvbiBnZXRTdHJpbmdGcm9tUmFkaW9Cb3gobmFtZSkgeworICB2YXIgbGlzdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZW5jaG1hcmtfZm9ybScpW25hbWVdOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpCisgICAgaWYgKGxpc3QuaXRlbShpKS5j
aGVja2VkKQorICAgICAgcmV0dXJuIGxpc3QuaXRlbShpKS52YWx1ZTsKKyAgcmV0dXJuIHVuZGVm
aW5lZDsKK30KK2Z1bmN0aW9uIGdldEJvb2xGcm9tQ2hlY2tCb3goaWQpIHsKKyAgcmV0dXJuIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jaGVja2VkOworfQorCitmdW5jdGlvbiBnZXRJbnRB
cnJheUZyb21JbnB1dChpZCkgeworICB2YXIgc3RyQXJyYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChpZCkudmFsdWUuc3BsaXQoJywnKTsKKyAgcmV0dXJuIHN0ckFycmF5Lm1hcChmdW5jdGlv
bihzdHIpIHsgcmV0dXJuIHBhcnNlSW50KHN0ciwgMTApOyB9KTsKK30KKworZnVuY3Rpb24gZ2V0
RmxvYXRBcnJheUZyb21JbnB1dChpZCkgeworICB2YXIgc3RyQXJyYXkgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChpZCkudmFsdWUuc3BsaXQoJywnKTsKKyAgcmV0dXJuIHN0ckFycmF5Lm1hcChw
YXJzZUZsb2F0KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRp
bF93b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfd29ya2VyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkOTA0NDlhOTBhN2Q3ODJiOTcwMjNlOGQ5ZDVhN2FhZWU5NGEzMmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfd29ya2VyLmpzCkBA
IC0wLDAgKzEsNDQgQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisvLyBVdGlsaXRpZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIHdv
cmtlciB0aHJlYWRzIG9ubHkpLgorCitvbm1lc3NhZ2UgPSBmdW5jdGlvbiAobWVzc2FnZSkgewor
ICB2YXIgY29uZmlnID0gbWVzc2FnZS5kYXRhLmNvbmZpZzsKKyAgY29uZmlnLmFkZFRvTG9nID0g
ZnVuY3Rpb24odGV4dCkgeworICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb0xvZycsIGRh
dGE6IHRleHR9KTsgfTsKKyAgY29uZmlnLmFkZFRvU3VtbWFyeSA9IGZ1bmN0aW9uKHRleHQpIHsK
KyAgICAgIHBvc3RNZXNzYWdlKHt0eXBlOiAnYWRkVG9TdW1tYXJ5JywgZGF0YTogdGV4dH0pOyB9
OworICBjb25maWcubWVhc3VyZVZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgIHBvc3RN
ZXNzYWdlKHt0eXBlOiAnbWVhc3VyZVZhbHVlJywgZGF0YTogdmFsdWV9KTsgfTsKKyAgY29uZmln
Lm5vdGlmeUFib3J0ID0gZnVuY3Rpb24oKSB7IHBvc3RNZXNzYWdlKHt0eXBlOiAnbm90aWZ5QWJv
cnQnfSk7IH07CisKKyAgZG9BY3Rpb24oY29uZmlnLCBmYWxzZSwgbWVzc2FnZS5kYXRhLnR5cGUp
OworfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmNDNkMzhlMmFiNjJmYTc2MWU1NDFjM2U0N2I1MTU2NGQ5MTMxYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MzkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtl
X3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbAorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9iZW5jaG1hcmsuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrLmpz
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY2xvc2Vfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9jb25zb2xlLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Nvb2tpZV93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L2V4YW1wbGUvZWNob193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2hhbmRsZXJf
bWFwLnR4dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3NwZWNpYWxfaGVhZGVycy5jZ2kKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWwuanMK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3V0aWxfbWFpbi5qcworL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGQ1ZjU5NTBmMzQ3NTMxYjkyNjJjMzFi
NzdkMGMyOWQ0MjZlNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyIiIiBBIFN0YW5kYWxvbmUgV2ViU29ja2V0IFNlcnZlciBmb3IgdGVzdGluZyBwdXJwb3Nl
cworCittb2RfcHl3ZWJzb2NrZXQgaXMgYW4gQVBJIHRoYXQgcHJvdmlkZXMgV2ViU29ja2V0IGZ1
bmN0aW9uYWxpdGllcyB3aXRoCithIHN0YW5kYWxvbmUgV2ViU29ja2V0IHNlcnZlci4gSXQgaXMg
aW50ZW5kZWQgZm9yIHRlc3Rpbmcgb3IKK2V4cGVyaW1lbnRhbCBwdXJwb3Nlcy4KKworSW5zdGFs
bGF0aW9uCis9PT09PT09PT09PT0KKzEuIEZvbGxvdyBzdGFuZGFsb25lIHNlcnZlciBkb2N1bWVu
dGF0aW9uIHRvIHN0YXJ0IHJ1bm5pbmcgdGhlCitzdGFuZGFsb25lIHNlcnZlci4gSXQgY2FuIGJl
IHJlYWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKyAgICAkIHB5ZG9jIG1v
ZF9weXdlYnNvY2tldC5zdGFuZGFsb25lCisKKzIuIE9uY2UgdGhlIHN0YW5kYWxvbmUgc2VydmVy
IGlzIGxhdW5jaGVkIHZlcmlmeSBpdCBieSBhY2Nlc3NpbmcKK2h0dHA6Ly9sb2NhbGhvc3RbOnBv
cnRdL2NvbnNvbGUuaHRtbC4gSW5jbHVkZSB0aGUgcG9ydCBudW1iZXIgd2hlbgorc3BlY2lmaWVk
IG9uIGxhdW5jaC4gSWYgZXZlcnl0aGluZyBpcyB3b3JraW5nIGNvcnJlY3RseSwgeW91Cit3aWxs
IHNlZSBhIHNpbXBsZSBlY2hvIGNvbnNvbGUuCisKKworV3JpdGluZyBXZWJTb2NrZXQgaGFuZGxl
cnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gYSBXZWJTb2NrZXQgcmVxdWVz
dCBjb21lcyBpbiwgdGhlIHJlc291cmNlIG5hbWUKK3NwZWNpZmllZCBpbiB0aGUgaGFuZHNoYWtl
IGlzIGNvbnNpZGVyZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGggdW5kZXIKKzx3ZWJzb2NrX2hh
bmRsZXJzPiBhbmQgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNvY2tfaGFuZGxlcnM+Lzxy
ZXNvdXJjZV9uYW1lPl93c2gucHkgaXMgaW52b2tlZC4KKworRm9yIGV4YW1wbGUsIGlmIHRoZSBy
ZXNvdXJjZSBuYW1lIGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5kbGVyIGRlZmluZWQgaW4KKzx3
ZWJzb2NrX2hhbmRsZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlzIGludm9rZWQuCisKK0EgV2Vi
U29ja2V0IGhhbmRsZXIgaXMgY29tcG9zZWQgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlv
bnM6CisKKyAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KQorICAgIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgIHdlYl9zb2NrZXRfcGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQorCit3aGVyZToKKyAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisKK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCBk
dXJpbmcgdGhlIGhhbmRzaGFrZSBhZnRlciB0aGUKK2hlYWRlcnMgYXJlIHN1Y2Nlc3NmdWxseSBw
YXJzZWQgYW5kIFdlYlNvY2tldCBwcm9wZXJ0aWVzICh3c19vcmlnaW4sCithbmQgd3NfcmVzb3Vy
Y2UpIGFyZSBhZGRlZCB0byByZXF1ZXN0LiBBIGhhbmRsZXIKK2NhbiByZWplY3QgdGhlIHJlcXVl
c3QgYnkgcmFpc2luZyBhbiBleGNlcHRpb24uCisKK0EgcmVxdWVzdCBvYmplY3QgaGFzIHRoZSBm
b2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4gdXNlIGR1cmluZyB0aGUKK2V4dHJhIGhh
bmRzaGFrZSAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorLSB3c19yZXNvdXJjZQor
LSB3c19vcmlnaW4KKy0gd3NfdmVyc2lvbgorLSB3c19leHRlbnNpb25zCistIHdzX2RlZmxhdGUK
Ky0gd3NfcHJvdG9jb2wKKy0gd3NfcmVxdWVzdGVkX3Byb3RvY29scworCitUaGUgbGFzdCB0d28g
YXJlIGEgYml0IHRyaWNreS4gU2VlIHRoZSBuZXh0IHN1YnNlY3Rpb24uCisKKworU3VicHJvdG9j
b2wgTmVnb3RpYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3dzX3Byb3RvY29sIGlz
IGFsd2F5cyBzZXQgdG8gTm9uZSB3aGVuCit3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBp
cyBjYWxsZWQuIElmIHdzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90CitOb25lLCB5b3UgbXVz
dCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZyb20gdGhpcyBsaXN0IGFuZCBzZXQgaXQgdG8KK3dz
X3Byb3RvY29sLgorCitEYXRhIFRyYW5zZmVyCistLS0tLS0tLS0tLS0tCisKK3dlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGhhbmRzaGFrZSBjb21wbGV0ZWQKK3N1
Y2Nlc3NmdWxseS4gQSBoYW5kbGVyIGNhbiByZWNlaXZlL3NlbmQgbWVzc2FnZXMgZnJvbS90byB0
aGUgY2xpZW50Cit1c2luZyByZXF1ZXN0LiBtb2RfcHl3ZWJzb2NrZXQubXNndXRpbCBtb2R1bGUg
cHJvdmlkZXMgdXRpbGl0aWVzCitmb3IgZGF0YSB0cmFuc2Zlci4KKworWW91IGNhbiByZWNlaXZl
IGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudC4KKworICAgIG1lc3NhZ2UgPSBy
ZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorCitUaGlzIGNhbGwgYmxvY2tzIHVu
dGlsIGFueSBjb21wbGV0ZSB0ZXh0IGZyYW1lIGFycml2ZXMsIGFuZCB0aGUgcGF5bG9hZCBkYXRh
CitvZiB0aGUgaW5jb21pbmcgZnJhbWUgd2lsbCBiZSBzdG9yZWQgaW50byBtZXNzYWdlLiBXaGVu
IHlvdSdyZSB1c2luZyBJRVRGCitIeUJpIDAwIG9yIGxhdGVyIHByb3RvY29sLCByZWNlaXZlX21l
c3NhZ2UoKSB3aWxsIHJldHVybiBOb25lIG9uIHJlY2VpdmluZworY2xpZW50LWluaXRpYXRlZCBj
bG9zaW5nIGhhbmRzaGFrZS4gV2hlbiBhbnkgZXJyb3Igb2NjdXJzLCByZWNlaXZlX21lc3NhZ2Uo
KQord2lsbCByYWlzZSBzb21lIGV4Y2VwdGlvbi4KKworWW91IGNhbiBzZW5kIGEgbWVzc2FnZSBi
eSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudC4KKworICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShtZXNzYWdlKQorCisKK0Nsb3NpbmcgQ29ubmVjdGlvbgorLS0tLS0tLS0tLS0tLS0t
LS0tCisKK0V4ZWN1dGluZyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBvciBqdXN0IHJldHVybi1p
bmcgZnJvbQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGNhdXNlIGNvbm5lY3Rpb24gY2xvc2Uu
CisKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKworY2xvc2VfY29u
bmVjdGlvbiB3aWxsIHdhaXQKK2ZvciBjbG9zaW5nIGhhbmRzaGFrZSBhY2tub3dsZWRnZW1lbnQg
Y29taW5nIGZyb20gdGhlIGNsaWVudC4gV2hlbiBpdAorY291bGRuJ3QgcmVjZWl2ZSBhIHZhbGlk
IGFja25vd2xlZGdlbWVudCwgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKword2ViX3NvY2tldF9wYXNz
aXZlX2Nsb3NpbmdfaGFuZHNoYWtlIGlzIGNhbGxlZCBhZnRlciB0aGUgc2VydmVyIHJlY2VpdmVz
CitpbmNvbWluZyBjbG9zaW5nIGZyYW1lIGZyb20gdGhlIGNsaWVudCBwZWVyIGltbWVkaWF0ZWx5
LiBZb3UgY2FuIHNwZWNpZnkKK2NvZGUgYW5kIHJlYXNvbiBieSByZXR1cm4gdmFsdWVzLiBUaGV5
IGFyZSBzZW50IGFzIGEgb3V0Z29pbmcgY2xvc2luZyBmcmFtZQorZnJvbSB0aGUgc2VydmVyLiBB
IHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhhdCB5b3UgY2Fu
Cit1c2UgaW4gd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlLgorLSB3c19jbG9z
ZV9jb2RlCistIHdzX2Nsb3NlX3JlYXNvbgorCisKK1RocmVhZGluZworLS0tLS0tLS0tCisKK0Eg
V2ViU29ja2V0IGhhbmRsZXIgbXVzdCBiZSB0aHJlYWQtc2FmZS4gVGhlIHN0YW5kYWxvbmUKK3Nl
cnZlciB1c2VzIHRocmVhZHMgYnkgZGVmYXVsdC4KKworCitDb25maWd1cmluZyBXZWJTb2NrZXQg
RXh0ZW5zaW9uIFByb2Nlc3NvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitTZWUgZXh0ZW5zaW9ucy5weSBmb3Igc3VwcG9ydGVkIFdlYlNvY2tldCBleHRl
bnNpb25zLiBOb3RlIHRoYXQgdGhleSBhcmUKK3Vuc3RhYmxlIGFuZCB0aGVpciBBUElzIGFyZSBz
dWJqZWN0IHRvIGNoYW5nZSBzdWJzdGFudGlhbGx5LgorCitBIHJlcXVlc3Qgb2JqZWN0IGhhcyB0
aGVzZSBleHRlbnNpb24gcHJvY2Vzc2luZyByZWxhdGVkIGF0dHJpYnV0ZXMuCisKKy0gd3NfcmVx
dWVzdGVkX2V4dGVuc2lvbnM6CisKKyAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBleHRlbnNpb24KKyAgcGFyYW1ldGVycyByZWNlaXZl
ZCBmcm9tIHRoZSBjbGllbnQgaW4gdGhlIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlLgorICBZ
b3Ugc2hvdWxkbid0IG1vZGlmeSBpdCBtYW51YWxseS4KKworLSB3c19leHRlbnNpb25zOgorCisg
IEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3RhbmNlcyByZXByZXNlbnRp
bmcgZXh0ZW5zaW9uCisgIHBhcmFtZXRlcnMgdG8gc2VuZCBiYWNrIHRvIHRoZSBjbGllbnQgaW4g
dGhlIHNlcnZlcidzIG9wZW5pbmcgaGFuZHNoYWtlLgorICBZb3Ugc2hvdWxkbid0IHRvdWNoIGl0
IGRpcmVjdGx5LiBJbnN0ZWFkLCBjYWxsIG1ldGhvZHMgb24gZXh0ZW5zaW9uCisgIHByb2Nlc3Nv
cnMuCisKKy0gd3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnM6CisKKyAgQSBsaXN0IG9mIGxvYWRlZCBl
eHRlbnNpb24gcHJvY2Vzc29ycy4gRmluZCB0aGUgcHJvY2Vzc29yIGZvciB0aGUKKyAgZXh0ZW5z
aW9uIHlvdSB3YW50IHRvIGNvbmZpZ3VyZSBmcm9tIGl0LCBhbmQgY2FsbCBpdHMgbWV0aG9kcy4K
KyIiIgorCisjIHZpOnN0cz00IHN3PTQgZXQgdHc9NzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9leGNlcHRpb25zLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI0Nzg3OGJjNGEzNzliNWFkOGM0MjNhOGUzOGRmNDA1YTk2Y2NiZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9leGNlcHRpb25z
LnB5CkBAIC0wLDAgKzEsODIgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU3RyZWFtIEV4Y2VwdGlv
bnMuCisiIiIKKworIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNl
ZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKKyMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlz
IHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24KKyMgaGFuZGxlcnMu
IFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCisj
IHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBh
bGxvdyBkaXJlY3QgcmF3IGJ5dGVzCisjIHdyaXRpbmcvcmVhZGluZy4KKworCisjIEV4Y2VwdGlv
bnMKK2NsYXNzIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAg
IiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhIGNvbm5lY3Rpb24gaXMgdGVy
bWluYXRlZAorICAgIHVuZXhwZWN0ZWRseS4KKyAgICAiIiIKKworICAgIHBhc3MKKworCitjbGFz
cyBJbnZhbGlkRnJhbWVFeGNlcHRpb24oQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24pOgor
ICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gd2UgcmVjZWl2ZWQgYW4g
aW52YWxpZCBmcmFtZSB3ZQorICAgIGNhbm5vdCBwYXJzZS4KKyAgICAiIiIKKworICAgIHBhc3MK
KworCitjbGFzcyBCYWRPcGVyYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlz
IGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHNlbmRfbWVzc2FnZSgpIGlzIGNhbGxlZCBv
bgorICAgIHNlcnZlci10ZXJtaW5hdGVkIGNvbm5lY3Rpb24gb3IgcmVjZWl2ZV9tZXNzYWdlKCkg
aXMgY2FsbGVkIG9uCisgICAgY2xpZW50LXRlcm1pbmF0ZWQgY29ubmVjdGlvbi4KKyAgICAiIiIK
KworICAgIHBhc3MKKworCitjbGFzcyBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKEV4Y2VwdGlv
bik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZl
IGEgZnJhbWUgd2l0aCBmbGFnLCBvcGNvZGUKKyAgICB3ZSBjYW5ub3QgaGFuZGxlLiBIYW5kbGVy
cyBjYW4ganVzdCBjYXRjaCBhbmQgaWdub3JlIHRoaXMgZXhjZXB0aW9uIGFuZAorICAgIGNhbGwg
cmVjZWl2ZV9tZXNzYWdlKCkgYWdhaW4gdG8gY29udGludWUgcHJvY2Vzc2luZyB0aGUgbmV4dCBm
cmFtZS4KKyAgICAiIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkVVRGOEV4Y2VwdGlv
bihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4g
d2UgcmVjZWl2ZSBhIHRleHQgZnJhbWUgd2hpY2gKKyAgICBjb250YWlucyBpbnZhbGlkIFVURi04
IHN0cmluZ3MuCisgICAgIiIiCisKKyAgICBwYXNzCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
Y2IxMWYxNWNiMmY1ODJlNmMyOWU2OThlZTVmZmYyYWZkZThhNzY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2NvbW1vbi5weQpAQCAtMCwwICsx
LDI3MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgbXVzdCBub3QgZGVwZW5kIG9u
IGFueSBtb2R1bGUgc3BlY2lmaWMgdG8gdGhlIFdlYlNvY2tldCBwcm90b2NvbC4KKyIiIgorCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworIyBBZGRpdGlvbmFsIGxvZyBsZXZlbCBkZWZp
bml0aW9ucy4KK0xPR0xFVkVMX0ZJTkUgPSA5CisKKyMgQ29uc3RhbnRzIGluZGljYXRpbmcgV2Vi
U29ja2V0IHByb3RvY29sIHZlcnNpb24uCitWRVJTSU9OX0hZQkkxMyA9IDEzCitWRVJTSU9OX0hZ
QkkxNCA9IDEzCitWRVJTSU9OX0hZQkkxNSA9IDEzCitWRVJTSU9OX0hZQkkxNiA9IDEzCitWRVJT
SU9OX0hZQkkxNyA9IDEzCisKKyMgQ29uc3RhbnRzIGluZGljYXRpbmcgV2ViU29ja2V0IHByb3Rv
Y29sIGxhdGVzdCB2ZXJzaW9uLgorVkVSU0lPTl9IWUJJX0xBVEVTVCA9IFZFUlNJT05fSFlCSTEz
CisKKyMgUG9ydCBudW1iZXJzCitERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCA9IDgwCitERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKKworIyBTY2hlbWVzCitXRUJfU09DS0VUX1ND
SEVNRSA9ICd3cycKK1dFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9ICd3c3MnCisKKyMgRnJhbWUg
b3Bjb2RlcyBkZWZpbmVkIGluIHRoZSBzcGVjLgorT1BDT0RFX0NPTlRJTlVBVElPTiA9IDB4MAor
T1BDT0RFX1RFWFQgPSAweDEKK09QQ09ERV9CSU5BUlkgPSAweDIKK09QQ09ERV9DTE9TRSA9IDB4
OAorT1BDT0RFX1BJTkcgPSAweDkKK09QQ09ERV9QT05HID0gMHhhCisKKyMgVVVJRCBmb3IgdGhl
IG9wZW5pbmcgaGFuZHNoYWtlIGFuZCBmcmFtZSBtYXNraW5nLgorV0VCU09DS0VUX0FDQ0VQVF9V
VUlEID0gYicyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnCisKKyMgT3Blbmlu
ZyBoYW5kc2hha2UgaGVhZGVyIG5hbWVzIGFuZCBleHBlY3RlZCB2YWx1ZXMuCitVUEdSQURFX0hF
QURFUiA9ICdVcGdyYWRlJworV0VCU09DS0VUX1VQR1JBREVfVFlQRSA9ICd3ZWJzb2NrZXQnCitD
T05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uJworVVBHUkFERV9DT05ORUNUSU9OX1RZUEUg
PSAnVXBncmFkZScKK0hPU1RfSEVBREVSID0gJ0hvc3QnCitPUklHSU5fSEVBREVSID0gJ09yaWdp
bicKK1NFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUtleScKK1NFQ19X
RUJTT0NLRVRfQUNDRVBUX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUFjY2VwdCcKK1NFQ19XRUJT
T0NLRVRfVkVSU0lPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1WZXJzaW9uJworU0VDX1dFQlNP
Q0tFVF9QUk9UT0NPTF9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcKK1NFQ19XRUJT
T0NLRVRfRVhURU5TSU9OU19IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJworCisj
IEV4dGVuc2lvbnMKK1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1k
ZWZsYXRlJworCisjIFN0YXR1cyBjb2RlcworIyBDb2RlIFNUQVRVU19OT19TVEFUVVNfUkVDRUlW
RUQsIFNUQVRVU19BQk5PUk1BTF9DTE9TVVJFLCBhbmQKKyMgU1RBVFVTX1RMU19IQU5EU0hBS0Ug
YXJlIHBzZXVkbyBjb2RlcyB0byBpbmRpY2F0ZSBzcGVjaWZpYyBlcnJvciBjYXNlcy4KKyMgQ291
bGQgbm90IGJlIHVzZWQgZm9yIGNvZGVzIGluIGFjdHVhbCBjbG9zaW5nIGZyYW1lcy4KKyMgQXBw
bGljYXRpb24gbGV2ZWwgZXJyb3JzIG11c3QgdXNlIGNvZGVzIGluIHRoZSByYW5nZQorIyBTVEFU
VVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguIFRoZSBj
b2RlcyBpbiB0aGUKKyMgcmFuZ2UgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFIHRvIFNUQVRV
U19VU0VSX1JFR0lTVEVSRURfTUFYIGFyZSBtYW5hZ2VkCisjIGJ5IElBTkEuIFVzdWFsbHkgYXBw
bGljYXRpb24gbXVzdCBkZWZpbmUgdXNlciBwcm90b2NvbCBsZXZlbCBlcnJvcnMgaW4gdGhlCisj
IHJhbmdlIFNUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01B
WC4KK1NUQVRVU19OT1JNQUxfQ0xPU1VSRSA9IDEwMDAKK1NUQVRVU19HT0lOR19BV0FZID0gMTAw
MQorU1RBVFVTX1BST1RPQ09MX0VSUk9SID0gMTAwMgorU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEg
PSAxMDAzCitTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEID0gMTAwNQorU1RBVFVTX0FCTk9STUFM
X0NMT1NVUkUgPSAxMDA2CitTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEgPSAxMDA3
CitTVEFUVVNfUE9MSUNZX1ZJT0xBVElPTiA9IDEwMDgKK1NUQVRVU19NRVNTQUdFX1RPT19CSUcg
PSAxMDA5CitTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTiA9IDEwMTAKK1NUQVRVU19JTlRFUk5B
TF9FTkRQT0lOVF9FUlJPUiA9IDEwMTEKK1NUQVRVU19UTFNfSEFORFNIQUtFID0gMTAxNQorU1RB
VFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFID0gMzAwMAorU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9N
QVggPSAzOTk5CitTVEFUVVNfVVNFUl9QUklWQVRFX0JBU0UgPSA0MDAwCitTVEFUVVNfVVNFUl9Q
UklWQVRFX01BWCA9IDQ5OTkKKyMgRm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBhbGlhc2VzIHRv
IGtlZXAgY29tcGF0aWJpbGl0eS4gQXBwbGljYXRpb25zIG11c3QKKyMgbm90IHVzZSB0aGVzZSBv
YnNvbGV0ZWQgZGVmaW5pdGlvbnMgYW55bW9yZS4KK1NUQVRVU19OT1JNQUwgPSBTVEFUVVNfTk9S
TUFMX0NMT1NVUkUKK1NUQVRVU19VTlNVUFBPUlRFRCA9IFNUQVRVU19VTlNVUFBPUlRFRF9EQVRB
CitTVEFUVVNfQ09ERV9OT1RfQVZBSUxBQkxFID0gU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAor
U1RBVFVTX0FCTk9STUFMX0NMT1NFID0gU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUKK1NUQVRVU19J
TlZBTElEX0ZSQU1FX1BBWUxPQUQgPSBTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEK
K1NUQVRVU19NQU5EQVRPUllfRVhUID0gU1RBVFVTX01BTkRBVE9SWV9FWFRFTlNJT04KKworIyBI
VFRQIHN0YXR1cyBjb2RlcworSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QgPSA0MDAKK0hUVFBfU1RB
VFVTX0ZPUkJJRERFTiA9IDQwMworSFRUUF9TVEFUVVNfTk9UX0ZPVU5EID0gNDA0CisKKworZGVm
IGlzX2NvbnRyb2xfb3Bjb2RlKG9wY29kZSk6CisgICAgcmV0dXJuIChvcGNvZGUgPj4gMykgPT0g
MQorCisKK2NsYXNzIEV4dGVuc2lvblBhcmFtZXRlcihvYmplY3QpOgorICAgICIiIlRoaXMgaXMg
ZXhjaGFuZ2VkIG9uIGV4dGVuc2lvbiBuZWdvdGlhdGlvbiBpbiBvcGVuaW5nIGhhbmRzaGFrZS4i
IiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX25hbWUgPSBu
YW1lCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IENoYW5nZSB0aGUgZGF0YSBzdHJ1Y3R1cmUg
dG8gbW9yZSBlZmZpY2llbnQgb25lIHN1Y2gKKyAgICAgICAgIyBhcyBkaWN0IHdoZW4gdGhlIHNw
ZWMgY2hhbmdlcyB0byBzYXkgbGlrZQorICAgICAgICAjIC0gUGFyYW1ldGVyIG5hbWVzIG11c3Qg
YmUgdW5pcXVlCisgICAgICAgICMgLSBUaGUgb3JkZXIgb2YgcGFyYW1ldGVycyBpcyBub3Qgc2ln
bmlmaWNhbnQKKyAgICAgICAgc2VsZi5fcGFyYW1ldGVycyA9IFtdCisKKyAgICBkZWYgbmFtZShz
ZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBleHRlbnNpb24gbmFtZS4iIiIKKyAgICAgICAg
cmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBhZGRfcGFyYW1ldGVyKHNlbGYsIG5hbWUsIHZh
bHVlKToKKyAgICAgICAgIiIiQWRkIGEgcGFyYW1ldGVyLiIiIgorICAgICAgICBzZWxmLl9wYXJh
bWV0ZXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIGdldF9wYXJhbWV0ZXJzKHNl
bGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHBhcmFtZXRlcnMuIiIiCisgICAgICAgIHJldHVy
biBzZWxmLl9wYXJhbWV0ZXJzCisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcl9uYW1lcyhzZWxmKToK
KyAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAg
ICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lLCB1bnVzZWRfdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVy
c10KKworICAgIGRlZiBoYXNfcGFyYW1ldGVyKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJUZXN0
IGlmIGEgcGFyYW1ldGVyIGV4aXN0cy4iIiIKKyAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFt
X3ZhbHVlIGluIHNlbGYuX3BhcmFtZXRlcnM6CisgICAgICAgICAgICBpZiBwYXJhbV9uYW1lID09
IG5hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcl92YWx1ZShzZWxmLCBuYW1lKToKKyAgICAgICAgIiIi
R2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIHBhcmFtZXRlci4iIiIKKyAgICAgICAgZm9yIHBh
cmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIHNlbGYuX3BhcmFtZXRlcnM6CisgICAgICAgICAgICBp
ZiBwYXJhbV9uYW1lID09IG5hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtX3ZhbHVl
CisKKworY2xhc3MgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIi
IkV4Y2VwdGlvbiB0byBoYW5kbGUgZXJyb3JzIGluIGV4dGVuc2lvbiBwYXJzaW5nLiIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc3VwZXIoRXh0ZW5zaW9uUGFyc2lu
Z0V4Y2VwdGlvbiwgc2VsZikuX19pbml0X18obmFtZSkKKworCitkZWYgX3BhcnNlX2V4dGVuc2lv
bl9wYXJhbShzdGF0ZSwgZGVmaW5pdGlvbik6CisgICAgcGFyYW1fbmFtZSA9IGh0dHBfaGVhZGVy
X3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKworICAgIGlmIHBhcmFtX25hbWUgaXMgTm9uZToK
KyAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgcGFyYW1l
dGVyIG5hbWUgZm91bmQnKQorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0
YXRlKQorCisgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUs
ICc9Jyk6CisgICAgICAgIGRlZmluaXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBOb25l
KQorICAgICAgICByZXR1cm4KKworICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3Nlcyhz
dGF0ZSkKKworICAgICMgVE9ETyh0eW9zaGlubyk6IEFkZCBjb2RlIHRvIHZhbGlkYXRlIHRoYXQg
cGFyc2VkIHBhcmFtX3ZhbHVlIGlzIHRva2VuCisgICAgcGFyYW1fdmFsdWUgPSBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfdG9rZW5fb3JfcXVvdGVkX3N0cmluZyhzdGF0ZSkKKyAgICBpZiBwYXJh
bV92YWx1ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9u
KAorICAgICAgICAgICAgJ05vIHZhbGlkIHBhcmFtZXRlciB2YWx1ZSBmb3VuZCBvbiB0aGUgcmln
aHQtaGFuZCBzaWRlIG9mICcKKyAgICAgICAgICAgICdwYXJhbWV0ZXIgJXInICUgcGFyYW1fbmFt
ZSkKKworICAgIGRlZmluaXRpb24uYWRkX3BhcmFtZXRlcihwYXJhbV9uYW1lLCBwYXJhbV92YWx1
ZSkKKworCitkZWYgX3BhcnNlX2V4dGVuc2lvbihzdGF0ZSk6CisgICAgZXh0ZW5zaW9uX3Rva2Vu
ID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQorICAgIGlmIGV4dGVuc2lv
bl90b2tlbiBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZXh0ZW5zaW9uID0g
RXh0ZW5zaW9uUGFyYW1ldGVyKGV4dGVuc2lvbl90b2tlbikKKworICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgICAgICBp
ZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJzsnKToKKyAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0
YXRlKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9wYXJzZV9leHRlbnNpb25fcGFyYW0o
c3RhdGUsIGV4dGVuc2lvbikKKyAgICAgICAgZXhjZXB0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUg
KGV4dGVuc2lvbl90b2tlbiwgZSkpCisKKyAgICByZXR1cm4gZXh0ZW5zaW9uCisKKworZGVmIHBh
cnNlX2V4dGVuc2lvbnMoZGF0YSk6CisgICAgIiIiUGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNp
b25zIGhlYWRlciB2YWx1ZS4KKworICAgIFJldHVybnMgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFt
ZXRlciBvYmplY3RzLgorICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgorICAgICIi
IgorICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoZGF0YSkKKworICAg
IGV4dGVuc2lvbl9saXN0ID0gW10KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBleHRlbnNpb24g
PSBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKQorICAgICAgICBpZiBleHRlbnNpb24gaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBleHRlbnNpb25fbGlzdC5hcHBlbmQoZXh0ZW5zaW9uKQorCisgICAg
ICAgIGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9sd3NlcyhzdGF0ZSkKKworICAgICAgICBpZiBo
dHRwX2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpIGlzIE5vbmU6CisgICAgICAgICAgICBicmVhawor
CisgICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAn
LCcpOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXI6ICcKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91bmQgJXInICUg
aHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKKworICAgICAgICBodHRwX2hlYWRlcl91dGls
LmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICBpZiBsZW4oZXh0ZW5zaW9uX2xpc3QpID09IDA6
CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oJ05vIHZhbGlkIGV4dGVu
c2lvbiBlbnRyeSBmb3VuZCcpCisKKyAgICByZXR1cm4gZXh0ZW5zaW9uX2xpc3QKKworCitkZWYg
Zm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24pOgorICAgICIiIkZvcm1hdCBhbiBFeHRlbnNpb25Q
YXJhbWV0ZXIgb2JqZWN0LiIiIgorICAgIGZvcm1hdHRlZF9wYXJhbXMgPSBbZXh0ZW5zaW9uLm5h
bWUoKV0KKyAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uLmdldF9w
YXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX3ZhbHVlIGlzIE5vbmU6CisgICAgICAgICAg
ICBmb3JtYXR0ZWRfcGFyYW1zLmFwcGVuZChwYXJhbV9uYW1lKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcXVvdGVkX3ZhbHVlID0gaHR0cF9oZWFkZXJfdXRpbC5xdW90ZV9pZl9uZWNlc3Nh
cnkocGFyYW1fdmFsdWUpCisgICAgICAgICAgICBmb3JtYXR0ZWRfcGFyYW1zLmFwcGVuZCgnJXM9
JXMnICUgKHBhcmFtX25hbWUsIHF1b3RlZF92YWx1ZSkpCisgICAgcmV0dXJuICc7ICcuam9pbihm
b3JtYXR0ZWRfcGFyYW1zKQorCisKK2RlZiBmb3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNpb25fbGlz
dCk6CisgICAgIiIiRm9ybWF0IGEgbGlzdCBvZiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4i
IiIKKyAgICBmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QgPSBbXQorICAgIGZvciBleHRlbnNpb24g
aW4gZXh0ZW5zaW9uX2xpc3Q6CisgICAgICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdC5hcHBl
bmQoZm9ybWF0X2V4dGVuc2lvbihleHRlbnNpb24pKQorICAgIHJldHVybiAnLCAnLmpvaW4oZm9y
bWF0dGVkX2V4dGVuc2lvbl9saXN0KQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZTk0
M2E1YjgwYWZkYzBiZGE5NTNhYTJhNzMxOThiOTlhNDU5YjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKQEAgLTAsMCArMSwz
ODUgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiRGlzcGF0Y2ggV2ViU29ja2V0IHJlcXVlc3QuCisi
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFu
ZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwK
KworX1NPVVJDRV9QQVRIX1BBVFRFUk4gPSByZS5jb21waWxlKHInKD9pKV93c2hcLnB5JCcpCitf
U09VUkNFX1NVRkZJWCA9ICdfd3NoLnB5JworX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05B
TUUgPSAnd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UnCitfVFJBTlNGRVJfREFUQV9IQU5E
TEVSX05BTUUgPSAnd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhJworX1BBU1NJVkVfQ0xPU0lOR19I
QU5EU0hBS0VfSEFORExFUl9OQU1FID0gKAorICAgICd3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2lu
Z19oYW5kc2hha2UnKQorCisKK2NsYXNzIERpc3BhdGNoRXhjZXB0aW9uKEV4Y2VwdGlvbik6Cisg
ICAgIiIiRXhjZXB0aW9uIGluIGRpc3BhdGNoaW5nIFdlYlNvY2tldCByZXF1ZXN0LiIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX05PVF9G
T1VORCk6CisgICAgICAgIHN1cGVyKERpc3BhdGNoRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhu
YW1lKQorICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cworCisKK2RlZiBfZGVmYXVsdF9wYXNz
aXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVxdWVzdCk6CisgICAgIiIiRGVmYXVsdCB3
ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaGFuZGxlci4iIiIKKworICAgIHJl
dHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJworCisKK2RlZiBfbm9ybWFsaXpl
X3BhdGgocGF0aCk6CisgICAgIiIiTm9ybWFsaXplIHBhdGguCisKKyAgICBBcmdzOgorICAgICAg
ICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUuCisKKyAgICBQYXRoIGlzIGNvbnZlcnRlZCB0
byB0aGUgYWJzb2x1dGUgcGF0aC4KKyAgICBUaGUgaW5wdXQgcGF0aCBjYW4gdXNlIGVpdGhlciAn
XFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgorICAgIFRoZSBub3JtYWxpemVkIHBhdGggYWx3
YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgorICAgICIiIgorCisgICAg
cGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5wYXRoLnNlcCkKKyAgICBwYXRoID0gb3MucGF0
aC5yZWFscGF0aChwYXRoKQorICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ1xcJywgJy8nKQorICAg
IHJldHVybiBwYXRoCisKKworZGVmIF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIo
YmFzZV9kaXIpOgorICAgICIiIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIHRoZSBw
YXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291cmNlCisgICAgZmlsZSB0byBhIHJlc291cmNl
IHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0byB0aGUgYmFzZSBkaXJlY3RvcnkgZnJvbQor
ICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNFX1NVRkZJWCBmcm9tIGl0cyB0YWlsLCBhbmQg
cmVwbGFjaW5nIHBhdGgKKyAgICBzZXBhcmF0b3JzIGluIGl0IHdpdGggJy8nLgorCisgICAgQXJn
czoKKyAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeS4KKyAg
ICAiIiIKKworICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJhc2VfZGlyKQorCisgICAg
YmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCisgICAgc3VmZml4X2xlbiA9IGxlbihfU09VUkNFX1NV
RkZJWCkKKworICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6CisgICAgICAgIGlmIG5vdCBwYXRoLmVu
ZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAg
ICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVzZSByZXNvbHZpbmcgc3lt
bGluayBicmVha3MKKyAgICAgICAgIyBmb2xsb3dpbmcgcGF0aCBjaGVjay4KKyAgICAgICAgcGF0
aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCisgICAgICAgIGlmIG5vdCBwYXRoLnN0YXJ0c3dp
dGgoYmFzZV9kaXIpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHBh
dGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCisKKyAgICByZXR1cm4gY29udmVydGVyCisKKworZGVm
IF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKGRpcmVjdG9yeSk6CisgICAgIiIiUmV0dXJu
cyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMgV2ViU29ja2V0IEhhbmRsZXIgc291cmNlIGZp
bGUgbmFtZXMKKyAgICBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgorICAgICIiIgorCisgICAgZm9y
IHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAg
IGZvciBiYXNlIGluIGZpbGVzOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290
LCBiYXNlKQorICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRFUk4uc2VhcmNoKHBhdGgp
OgorICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKKworCitjbGFzcyBfSGFuZGxlclN1aXRlKG9i
amVjdCk6CisgICAgIiIiQSBoYW5kbGVyIHN1aXRlIGhvbGRlciBjbGFzcy4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgZG9fZXh0cmFfaGFuZHNoYWtlLCB0cmFuc2Zlcl9kYXRhLAorICAgICAg
ICAgICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKToKKyAgICAgICAgc2VsZi5kb19l
eHRyYV9oYW5kc2hha2UgPSBkb19leHRyYV9oYW5kc2hha2UKKyAgICAgICAgc2VsZi50cmFuc2Zl
cl9kYXRhID0gdHJhbnNmZXJfZGF0YQorICAgICAgICBzZWxmLnBhc3NpdmVfY2xvc2luZ19oYW5k
c2hha2UgPSBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlCisKKworZGVmIF9zb3VyY2VfaGFuZGxl
cl9maWxlKGhhbmRsZXJfZGVmaW5pdGlvbik6CisgICAgIiIiU291cmNlIGEgaGFuZGxlciBkZWZp
bml0aW9uIHN0cmluZy4KKworICAgIEFyZ3M6CisgICAgICAgIGhhbmRsZXJfZGVmaW5pdGlvbjog
YSBzdHJpbmcgY29udGFpbmluZyBQeXRob24gc3RhdGVtZW50cyB0aGF0IGRlZmluZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgZnVuY3Rpb25zLgorICAgICIiIgorCisgICAg
Z2xvYmFsX2RpYyA9IHt9CisgICAgdHJ5OgorICAgICAgICAjIFRoaXMgc3RhdGVtZW50IGlzIGdy
YW1hdGljYWxseSBkaWZmZXJlbnQgaW4gcHl0aG9uIDIgYW5kIDMuCisgICAgICAgICMgSGVuY2Us
IHlhcGYgd2lsbCBjb21wbGFpbiBhYm91dCB0aGlzLiBUbyBvdmVyY29tZSB0aGlzLCB3ZSBkaXNh
YmxlCisgICAgICAgICMgeWFwZiBmb3IgdGhpcyBsaW5lLgorICAgICAgICBleGVjKGhhbmRsZXJf
ZGVmaW5pdGlvbiwgZ2xvYmFsX2RpYykgIyB5YXBmOiBkaXNhYmxlCisgICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ0Vycm9yIGluIHNvdXJjaW5n
IGhhbmRsZXI6JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5m
b3JtYXRfZXhjKCkpCisgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyID0gTm9u
ZQorICAgIHRyeToKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyID0g
X2V4dHJhY3RfaGFuZGxlcigKKyAgICAgICAgICAgIGdsb2JhbF9kaWMsIF9QQVNTSVZFX0NMT1NJ
TkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAg
ICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSAoCisgICAgICAgICAgICBfZGVm
YXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIpCisgICAgcmV0dXJuIF9IYW5k
bGVyU3VpdGUoCisgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2RpYywgX0RPX0VYVFJB
X0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpLAorICAgICAgICBfZXh0cmFjdF9oYW5kbGVyKGdsb2Jh
bF9kaWMsIF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFNRSksCisgICAgICAgIHBhc3NpdmVfY2xv
c2luZ19oYW5kc2hha2VfaGFuZGxlcikKKworCitkZWYgX2V4dHJhY3RfaGFuZGxlcihkaWMsIG5h
bWUpOgorICAgICIiIkV4dHJhY3RzIGEgY2FsbGFibGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUg
ZnJvbSB0aGUgZ2l2ZW4gZGljdGlvbmFyeQorICAgIGRpYy4KKyAgICAiIiIKKworICAgIGlmIG5h
bWUgbm90IGluIGRpYzoKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5v
dCBkZWZpbmVkLicgJSBuYW1lKQorICAgIGhhbmRsZXIgPSBkaWNbbmFtZV0KKyAgICBpZiBub3Qg
Y2FsbGFibGUoaGFuZGxlcik6CisgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCclcyBp
cyBub3QgY2FsbGFibGUuJyAlIG5hbWUpCisgICAgcmV0dXJuIGhhbmRsZXIKKworCitjbGFzcyBE
aXNwYXRjaGVyKG9iamVjdCk6CisgICAgIiIiRGlzcGF0Y2hlcyBXZWJTb2NrZXQgcmVxdWVzdHMu
CisKKyAgICBUaGlzIGNsYXNzIG1haW50YWlucyBhIG1hcCBmcm9tIHJlc291cmNlIG5hbWUgdG8g
aGFuZGxlcnMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAg
ICAgIHJvb3RfZGlyLAorICAgICAgICAgICAgICAgICBzY2FuX2Rpcj1Ob25lLAorICAgICAgICAg
ICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyPVRydWUpOgorICAgICAgICAi
IiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJv
b3RfZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUK
KyAgICAgICAgICAgICAgICAgICAgICBwbGFjZWQuCisgICAgICAgICAgICBzY2FuX2RpcjogVGhl
IGRpcmVjdG9yeSB3aGVyZSBoYW5kbGVyIGRlZmluaXRpb24gZmlsZXMgYXJlCisgICAgICAgICAg
ICAgICAgICAgICAgc2VhcmNoZWQuIHNjYW5fZGlyIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIg
cm9vdF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHJvb3RfZGlyIGl0c2Vs
Zi4gIElmIHNjYW5fZGlyIGlzIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgcm9vdF9kaXIg
aXMgdXNlZCBhcyBzY2FuX2Rpci4gc2Nhbl9kaXIgY2FuIGJlIHVzZWZ1bAorICAgICAgICAgICAg
ICAgICAgICAgIGluIHNhdmluZyBzY2FuIHRpbWUgd2hlbiByb290X2RpciBjb250YWlucyBtYW55
CisgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMuCisgICAgICAgICAgICBhbGxv
d19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyOiBTY2FucyBoYW5kbGVyIGZpbGVzIGV2ZW4gaWYg
dGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICBjYW5vbmljYWwgcGF0aCBpcyBub3QgdW5kZXIg
cm9vdF9kaXIuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0
X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwID0g
e30KKyAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzID0gW10KKyAgICAgICAgaWYgc2Nhbl9k
aXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNjYW5fZGlyID0gcm9vdF9kaXIKKyAgICAgICAgaWYg
bm90IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAg
ICAgb3MucGF0aC5yZWFscGF0aChyb290X2RpcikpOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0
Y2hFeGNlcHRpb24oJ3NjYW5fZGlyOiVzIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3RfZGlyOiVzLicgJSAoc2Nhbl9k
aXIsIHJvb3RfZGlyKSkKKyAgICAgICAgc2VsZi5fc291cmNlX2hhbmRsZXJfZmlsZXNfaW5fZGly
KHJvb3RfZGlyLCBzY2FuX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCisKKyAgICBkZWYgYWRkX3Jl
c291cmNlX3BhdGhfYWxpYXMoc2VsZiwgYWxpYXNfcmVzb3VyY2VfcGF0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6CisgICAgICAgICIi
IkFkZCByZXNvdXJjZSBwYXRoIGFsaWFzLgorCisgICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3Qg
dG8gYWxpYXNfcmVzb3VyY2VfcGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5CisgICAgICAgIGhhbmRs
ZXIgcmVnaXN0ZXJlZCBmb3IgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgYWxpYXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAor
ICAgICAgICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0
aAorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9
IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2V4aXN0aW5nX3Jlc291cmNlX3BhdGhdCisgICAgICAg
ICAgICBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFthbGlhc19yZXNvdXJjZV9wYXRoXSA9IGhhbmRs
ZXJfc3VpdGUKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2UgRGlz
cGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCkKKworICAgIGRlZiBzb3Vy
Y2Vfd2FybmluZ3Moc2VsZik6CisgICAgICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2lu
ZyBoYW5kbGVycy4iIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCisK
KyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICAiIiJE
byBleHRyYSBjaGVja2luZyBpbiBXZWJTb2NrZXQgaGFuZHNoYWtlLgorCisgICAgICAgIFNlbGVj
dCBhIGhhbmRsZXIgYmFzZWQgb24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCisgICAgICAgIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGZ1bmN0aW9uLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisKKyAgICAgICAgUmFpc2Vz
OgorICAgICAgICAgICAgRGlzcGF0Y2hFeGNlcHRpb246IHdoZW4gaGFuZGxlciB3YXMgbm90IGZv
dW5kCisgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFuZGxl
ciBhYm9ydCBjb25uZWN0aW9uCisgICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4g
b3BlbmluZyBoYW5kc2hha2UgZmFpbGVkCisgICAgICAgICIiIgorCisgICAgICAgIGhhbmRsZXJf
c3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAg
ICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIERpc3BhdGNo
RXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKKyAg
ICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyA9IGhhbmRsZXJfc3VpdGUuZG9fZXh0cmFfaGFuZHNo
YWtlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVz
dCkKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6
CisgICAgICAgICAgICAjIFJlLXJhaXNlIHRvIHRlbGwgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0
aW9uIHRvIGZpbmlzaCB0aGlzCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5k
aW5nIGFueSBlcnJvci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFj
ZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0
aW9uKAorICAgICAgICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisg
ICAgICAgICAgICAgICAgKF9ET19FWFRSQV9IQU5EU0hBS0VfSEFORExFUl9OQU1FLCByZXF1ZXN0
LndzX3Jlc291cmNlKSwgZSkKKyAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5IYW5kc2hha2VF
eGNlcHRpb24oZSwgY29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKKworICAgIGRlZiB0cmFu
c2Zlcl9kYXRhKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICAiIiJMZXQgYSBoYW5kbGVyIHRyYW5z
ZmVyX2RhdGEgd2l0aCBhIFdlYlNvY2tldCBjbGllbnQuCisKKyAgICAgICAgU2VsZWN0IGEgaGFu
ZGxlciBiYXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cworICAgICAgICB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQK
KyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFi
b3J0IGNvbm5lY3Rpb24KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTog
VGVybWluYXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRl
KHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIg
Zm9yOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qud3NfcmVzb3VyY2UpCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyA9IGhhbmRsZXJfc3Vp
dGUudHJhbnNmZXJfZGF0YQorICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkKKwor
ICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgICMgQ2F0
Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIgZGlkbid0IGhhbmRsZS4KKyAg
ICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
KyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKAorICAgICAgICAg
ICAgICAgIGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IpCisgICAgICAgIGV4
Y2VwdCBtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgIyBJ
bnZhbGlkRnJhbWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVmb3JlCisgICAgICAgICAgICAj
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0Y2hlcyBJbnZhbGlkRnJhbWVF
eGNlcHRpb24uCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19Q
Uk9UT0NPTF9FUlJPUikKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFU
VVNfVU5TVVBQT1JURURfREFUQSkKKyAgICAgICAgZXhjZXB0IHN0cmVhbS5JbnZhbGlkVVRGOEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKAorICAgICAgICAg
ICAgICAgIGNvbW1vbi5TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEpCisgICAgICAg
IGV4Y2VwdCBtc2d1dGlsLkNvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgIyBBbnkgb3RoZXIgZXhjZXB0aW9ucyBhcmUgZm9yd2Fy
ZGVkIHRvIHRoZSBjYWxsZXIgb2YgdGhpcworICAgICAgICAgICAgIyBmdW5jdGlvbi4KKyAgICAg
ICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnJXMgcmFpc2VkIGV4Y2VwdGlvbiBmb3IgJXM6ICcgJQorICAgICAgICAgICAgICAgIChfVFJB
TlNGRVJfREFUQV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVzb3VyY2UpLCBlKQorICAgICAg
ICAgICAgcmFpc2UKKworICAgIGRlZiBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIHJl
cXVlc3QpOgorICAgICAgICAiIiJQcmVwYXJlIGNvZGUgYW5kIHJlYXNvbiBmb3IgcmVzcG9uZGlu
ZyBjbGllbnQgaW5pdGlhdGVkIGNsb3NpbmcKKyAgICAgICAgaGFuZHNoYWtlLgorICAgICAgICAi
IiIKKworICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1
ZXN0LndzX3Jlc291cmNlKQorICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6CisgICAg
ICAgICAgICByZXR1cm4gX2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVy
KHJlcXVlc3QpCisgICAgICAgIHJldHVybiBoYW5kbGVyX3N1aXRlLnBhc3NpdmVfY2xvc2luZ19o
YW5kc2hha2UocmVxdWVzdCkKKworICAgIGRlZiBnZXRfaGFuZGxlcl9zdWl0ZShzZWxmLCByZXNv
dXJjZSk6CisgICAgICAgICIiIlJldHJpZXZlcyB0d28gaGFuZGxlcnMgKG9uZSBmb3IgZXh0cmEg
aGFuZHNoYWtlIHByb2Nlc3NpbmcsIGFuZCBvbmUKKyAgICAgICAgZm9yIGRhdGEgdHJhbnNmZXIp
IGZvciB0aGUgZ2l2ZW4gcmVxdWVzdCBhcyBhIEhhbmRsZXJTdWl0ZSBvYmplY3QuCisgICAgICAg
ICIiIgorCisgICAgICAgIGZyYWdtZW50ID0gTm9uZQorICAgICAgICBpZiAnIycgaW4gcmVzb3Vy
Y2U6CisgICAgICAgICAgICByZXNvdXJjZSwgZnJhZ21lbnQgPSByZXNvdXJjZS5zcGxpdCgnIycs
IDEpCisgICAgICAgIGlmICc/JyBpbiByZXNvdXJjZToKKyAgICAgICAgICAgIHJlc291cmNlID0g
cmVzb3VyY2Uuc3BsaXQoJz8nLCAxKVswXQorICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5f
aGFuZGxlcl9zdWl0ZV9tYXAuZ2V0KHJlc291cmNlKQorICAgICAgICBpZiBoYW5kbGVyX3N1aXRl
IGFuZCBmcmFnbWVudDoKKyAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdGcmFnbWVudCBpZGVudGlmaWVycyBNVVNUIE5PVCBiZSB1c2VkIG9uIFdl
YlNvY2tldCBVUklzJywKKyAgICAgICAgICAgICAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JF
UVVFU1QpCisgICAgICAgIHJldHVybiBoYW5kbGVyX3N1aXRlCisKKyAgICBkZWYgX3NvdXJjZV9o
YW5kbGVyX2ZpbGVzX2luX2RpcihzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2Rp
cik6CisgICAgICAgICIiIlNvdXJjZSBhbGwgdGhlIGhhbmRsZXIgc291cmNlIGZpbGVzIGluIHRo
ZSBzY2FuX2RpciBkaXJlY3RvcnkuCisKKyAgICAgICAgVGhlIHJlc291cmNlIHBhdGggaXMgZGV0
ZXJtaW5lZCByZWxhdGl2ZSB0byByb290X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBX
ZSBidWlsZCBhIG1hcCBmcm9tIHJlc291cmNlIHRvIGhhbmRsZXIgY29kZSBhc3N1bWluZyB0aGF0
IHRoZXJlJ3MKKyAgICAgICAgIyBvbmx5IG9uZSBwYXRoIGZyb20gcm9vdF9kaXIgdG8gc2Nhbl9k
aXIgYW5kIGl0IGNhbiBiZSBvYnRhaW5lZCBieQorICAgICAgICAjIGNvbXBhcmluZyByZWFscGF0
aCBvZiB0aGVtLgorCisgICAgICAgICMgSGVyZSB3ZSBjYW5ub3QgdXNlIGFic3BhdGguIFNlZQor
ICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYwMwor
CisgICAgICAgIGNvbnZlcnQgPSBfY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKHJv
b3RfZGlyKQorICAgICAgICBzY2FuX3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChzY2FuX2Rp
cikKKyAgICAgICAgcm9vdF9yZWFscGF0aCA9IG9zLnBhdGgucmVhbHBhdGgocm9vdF9kaXIpCisg
ICAgICAgIGZvciBwYXRoIGluIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKHNjYW5fcmVh
bHBhdGgpOgorICAgICAgICAgICAgaWYgKG5vdCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3Rf
ZGlyIGFuZAorICAgICAgICAgICAgICAgIChub3Qgb3MucGF0aC5yZWFscGF0aChwYXRoKS5zdGFy
dHN3aXRoKHJvb3RfcmVhbHBhdGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAorICAgICAgICAgICAgICAgICAgICAnQ2Fub25pY2FsIHBhdGggb2YgJXMgaXMgbm90IHVu
ZGVyIHJvb3QgZGlyZWN0b3J5JyAlIHBhdGgpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgaGFuZGxl
cl9maWxlOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gX3NvdXJjZV9oYW5k
bGVyX2ZpbGUoaGFuZGxlcl9maWxlLnJlYWQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBEaXNwYXRj
aEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5h
cHBlbmQoJyVzOiAlcycgJSAocGF0aCwgZSkpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIHJlc291cmNlID0gY29udmVydChwYXRoKQorICAgICAgICAgICAgaWYgcmVzb3Vy
Y2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1BhdGggdG8g
cmVzb3VyY2UgY29udmVyc2lvbiBvbiAlcyBmYWlsZWQnICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbY29udmVydChwYXRoKV0gPSBoYW5kbGVyX3N1aXRlCisK
KworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9leHRlbnNpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0NDUzOWY2ZmNlMTRiZWU2NWQ3ZmE3YTU4
M2FjYmI2NWYwMjNhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpAQCAtMCwwICsxLDQ3MyBAQAorIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRp
bAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9oZWFkZXJfdXRpbCBpbXBvcnQgcXVvdGVfaWZf
bmVjZXNzYXJ5CisKKyMgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lv
biBwcm9jZXNzb3IgY2xhc3Nlcy4KK19hdmFpbGFibGVfcHJvY2Vzc29ycyA9IHt9CisKKworY2xh
c3MgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBz
ZWxmLl9hY3RpdmUgPSBUcnVlCisKKyAgICBkZWYgcmVxdWVzdChzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlcXVlc3QKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29ycyhz
ZWxmLCBwcm9jZXNzb3JzKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHNldF9hY3RpdmUoc2Vs
ZiwgYWN0aXZlKToKKyAgICAgICAgc2VsZi5fYWN0aXZlID0gYWN0aXZlCisKKyAgICBkZWYgaXNf
YWN0aXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCisKKyAgICBkZWYgX2dl
dF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKKyAgICAgICAgaWYgbm90
IHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXh0ZW5zaW9u
ICVzIGlzIGRlYWN0aXZhdGVkJywgc2VsZi5uYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRl
cm5hbCgpCisgICAgICAgIGlmIHJlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9h
Y3RpdmUgPSBGYWxzZQorICAgICAgICByZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBf
c3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMp
OgorICAgICAgICBpZiBzZWxmLl9hY3RpdmU6CisgICAgICAgICAgICBzZWxmLl9zZXR1cF9zdHJl
YW1fb3B0aW9uc19pbnRlcm5hbChzdHJlYW1fb3B0aW9ucykKKworCitkZWYgX2xvZ19vdXRnb2lu
Z19jb21wcmVzc2lvbl9yYXRpbyhsb2dnZXIsIG9yaWdpbmFsX2J5dGVzLCBmaWx0ZXJlZF9ieXRl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VfcmF0aW8pOgor
ICAgICMgUHJpbnQgaW5mIHdoZW4gcmF0aW8gaXMgbm90IGF2YWlsYWJsZS4KKyAgICByYXRpbyA9
IGZsb2F0KCdpbmYnKQorICAgIGlmIG9yaWdpbmFsX2J5dGVzICE9IDA6CisgICAgICAgIHJhdGlv
ID0gZmxvYXQoZmlsdGVyZWRfYnl0ZXMpIC8gb3JpZ2luYWxfYnl0ZXMKKworICAgIGxvZ2dlci5k
ZWJ1ZygnT3V0Z29pbmcgY29tcHJlc3Npb24gcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKKyAg
ICAgICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkKKworCitkZWYgX2xvZ19pbmNv
bWluZ19jb21wcmVzc2lvbl9yYXRpbyhsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCBmaWx0ZXJlZF9i
eXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VfcmF0aW8p
OgorICAgICMgUHJpbnQgaW5mIHdoZW4gcmF0aW8gaXMgbm90IGF2YWlsYWJsZS4KKyAgICByYXRp
byA9IGZsb2F0KCdpbmYnKQorICAgIGlmIGZpbHRlcmVkX2J5dGVzICE9IDA6CisgICAgICAgIHJh
dGlvID0gZmxvYXQocmVjZWl2ZWRfYnl0ZXMpIC8gZmlsdGVyZWRfYnl0ZXMKKworICAgIGxvZ2dl
ci5kZWJ1ZygnSW5jb21pbmcgY29tcHJlc3Npb24gcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUK
KyAgICAgICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkKKworCitkZWYgX3BhcnNl
X3dpbmRvd19iaXRzKGJpdHMpOgorICAgICIiIlJldHVybiBwYXJzZWQgaW50ZWdlciB2YWx1ZSBp
ZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3JtcyB0byB0aGUKKyAgICBncmFtbWFyIG9mIHRoZSB3
aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1ldGVycy4KKyAgICAiIiIKKworICAgIGlmIGJpdHMg
aXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVmFsdWUgaXMgcmVxdWlyZWQnKQor
CisgICAgIyBGb3Igbm9uIGludGVnZXIgdmFsdWVzIHN1Y2ggYXMgIjEwLjAiLCBWYWx1ZUVycm9y
IHdpbGwgYmUgcmFpc2VkLgorICAgIGludF9iaXRzID0gaW50KGJpdHMpCisKKyAgICAjIEZpcnN0
IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRpbmcgemVybyBjYXNlIGUuZy4gIjA4Ii4KKyAgICBp
ZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3IgaW50X2JpdHMgPCA4IG9yIGludF9iaXRzID4gMTU6
CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICVyJyAlIGJpdHMpCisK
KyAgICByZXR1cm4gaW50X2JpdHMKKworCitjbGFzcyBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcihv
YmplY3QpOgorICAgICIiIlN0b3JlcyB0b3RhbCBieXRlcyBvZiBvcmlnaW5hbCBhbmQgcmVzdWx0
IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJhZ2UKKyAgICByZXN1bHQgLyBvcmlnaW5hbCByYXRp
by4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3RvdGFs
X29yaWdpbmFsX2J5dGVzID0gMAorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgPSAw
CisKKyAgICBkZWYgYWRkX29yaWdpbmFsX2J5dGVzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2Vs
Zi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgKz0gdmFsdWUKKworICAgIGRlZiBhZGRfcmVzdWx0X2J5
dGVzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzICs9IHZh
bHVlCisKKyAgICBkZWYgZ2V0X2F2ZXJhZ2VfcmF0aW8oc2VsZik6CisgICAgICAgIGlmIHNlbGYu
X3RvdGFsX29yaWdpbmFsX2J5dGVzICE9IDA6CisgICAgICAgICAgICByZXR1cm4gKGZsb2F0KHNl
bGYuX3RvdGFsX3Jlc3VsdF9ieXRlcykgLworICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3Rh
bF9vcmlnaW5hbF9ieXRlcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBmbG9h
dCgnaW5mJykKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgorICAgICIiInBlcm1lc3NhZ2UtZGVmbGF0ZSBl
eHRlbnNpb24gcHJvY2Vzc29yLgorCisgICAgU3BlY2lmaWNhdGlvbjoKKyAgICBodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5YmktcGVybWVzc2FnZS1jb21wcmVzc2lvbi0w
OAorICAgICIiIgorCisgICAgX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0gPSAnc2VydmVy
X21heF93aW5kb3dfYml0cycKKyAgICBfU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0g
PSAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInCisgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJ
VFNfUEFSQU0gPSAnY2xpZW50X21heF93aW5kb3dfYml0cycKKyAgICBfQ0xJRU5UX05PX0NPTlRF
WFRfVEFLRU9WRVJfUEFSQU0gPSAnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0cnVjdCBQZXJNZXNz
YWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4iIiIKKworICAgICAgICBFeHRlbnNpb25Qcm9j
ZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fcHJlZmVy
cmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCisgICAgICAgIHNlbGYuX2NsaWVudF9u
b19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKKworICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAg
ICAjIFRoaXMgbWV0aG9kIHJldHVybnMgImRlZmxhdGUiIChub3QgInBlcm1lc3NhZ2UtZGVmbGF0
ZSIpIGZvcgorICAgICAgICAjIGNvbXBhdGliaWxpdHkuCisgICAgICAgIHJldHVybiAnZGVmbGF0
ZScKKworICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAg
ICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX25hbWVzKCk6Cisg
ICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NF
UlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NF
UlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNCisgICAgICAgICAgICBdOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVW5rbm93biBwYXJhbWV0ZXI6ICVyJywgbmFtZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlcnZlcl9tYXhfd2luZG93
X2JpdHMgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRlcihzZWxm
Ll9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKToKKyAgICAgICAgICAgIHNlcnZlcl9tYXhf
d2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAg
ICAgICAgICAgc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gX3BhcnNlX3dp
bmRvd19iaXRzKAorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKQor
ICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0JhZCAlcyBwYXJhbWV0ZXI6ICVyJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSwgZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyID0gc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKAorICAgICAgICAgICAgc2Vs
Zi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCisgICAgICAgIGlmIChzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlciBhbmQgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVl
KAorICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFt
ZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWU6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZy
b20gYSBjbGllbnQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KKyAgICAgICAgIyBh
Y2NlcHQgY2xpZW50X21heF93aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KKyAgICAg
ICAgY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJh
bWV0ZXIoCisgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQor
ICAgICAgICBpZiAoY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHMKKyAgICAgICAgICAgICAg
ICBhbmQgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKSBpcyBub3QgTm9uZSk6Cisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJyVzIHBhcmFt
ZXRlciBtdXN0IG5vdCBoYXZlIGEgdmFsdWUgaW4gYSAnCisgICAgICAgICAgICAgICAgJ2NsaWVu
dFwncyBvcGVuaW5nIGhhbmRzaGFrZTogJXInLAorICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVO
VF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCisgICAgICAgICAgICAgICAgY2xpZW50X2NsaWVudF9t
YXhfd2luZG93X2JpdHMpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlbGYu
X3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCisgICAgICAgICAgICBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKworICAg
ICAgICAjIE5vdGUgdGhhdCB3ZSBwcmVwYXJlIGZvciBpbmNvbWluZyBtZXNzYWdlcyBjb21wcmVz
c2VkIHdpdGggd2luZG93CisgICAgICAgICMgYml0cyB1cHRvIDE1IHJlZ2FyZGxlc3Mgb2YgdGhl
IGNsaWVudF9tYXhfd2luZG93X2JpdHMgdmFsdWUgdG8gYmUKKyAgICAgICAgIyBzZW50IHRvIHRo
ZSBjbGllbnQuCisgICAgICAgIHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5
SW5mbGF0ZXIoKQorCisgICAgICAgIHNlbGYuX2ZyYW1lciA9IF9QZXJNZXNzYWdlRGVmbGF0ZUZy
YW1lcihzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIpCisgICAgICAg
IHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKEZhbHNlKQorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0
X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCisKKyAgICAgICAg
aWYgc2VydmVyX21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3Bv
bnNlLmFkZF9wYXJhbWV0ZXIoc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9tYXhfd2luZG93X2Jp
dHMpKQorCisgICAgICAgIGlmIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZF
Ul9QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAg
ICAgICBpZiBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGlmIG5vdCBjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0czoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICdQ
cm9jZXNzb3IgaXMgY29uZmlndXJlZCB0byB1c2UgJXMgYnV0ICcKKyAgICAgICAgICAgICAgICAg
ICAgJ3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoc2VsZi5fQ0xJRU5UX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyKHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKSkKKworICAgICAgICBp
ZiBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAgIHJlc3BvbnNl
LmFkZF9wYXJhbWV0ZXIoc2VsZi5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdFbmFibGUgJXMgZXh0ZW5zaW9uICgnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncmVxdWVzdDogc2VydmVyX21heF93aW5kb3dfYml0cz0lczsgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyPSVyLCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2U6IGNsaWVudF9tYXhfd2luZG93X2JpdHM9
JXM7ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbm9fY29udGV4dF90YWtl
b3Zlcj0lciknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0Lm5h
bWUoKSwgc2VydmVyX21heF93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21heF93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcikpCisKKyAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlCisKKyAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVy
bmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldHVwX3N0
cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorCisgICAgZGVmIHNldF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgIiIiSWYgdGhpcyBvcHRpb24gaXMgc3Bl
Y2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCisgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2Jp
dHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlIHJlc3BvbnNlLAorICAgICAg
ICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xpZGluZyB3aW5kb3cgc2l6ZSBvZiBpdHMg
aW5mbGF0ZXIuCisgICAgICAgIEkuZS4sIHlvdSBjYW4gdXNlIHRoaXMgZm9yIHRlc3RpbmcgY2xp
ZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKKyAgICAgICAgcmVkdWNlIG1lbW9yeSB1c2Fn
ZSBvZiB0aGlzIGNsYXNzLgorCisgICAgICAgIElmIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxl
ZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQgdGhlCisgICAgICAgIGNsaWVudF9tYXhf
d2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBpcyByZWNlaXZlZCwKKyAgICAgICAgLSAo
V2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uKSB0aGlzIHBy
b2Nlc3NvcgorICAgICAgICAgIGRlY2xpbmVzIHRoZSByZXF1ZXN0LgorICAgICAgICAtIChXaGVu
IHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5zaW9uKSB0aGlzIHByb2Nl
c3NvcgorICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAg
ICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gdmFsdWUKKworICAg
IGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZiwgdmFsdWUpOgorICAgICAg
ICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAg
ICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0
aGUgaGFuZHNoYWtlCisgICAgICAgIHJlc3BvbnNlLCBidXQgZG9lc24ndCByZXNldCBpbmZsYXRl
ciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2FuCisgICAgICAgIHVzZSB0aGlzIGZvciB0
ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90IHJlZHVjZSBtZW1vcnkKKyAg
ICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQorCisgICAgZGVmIHNldF9iZmluYWwo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2JmaW5hbCh2YWx1ZSkKKwor
ICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYu
X2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgZGVmIGRp
c2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2ZyYW1lci5z
ZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxzZSkKKworCitjbGFzcyBfUGVyTWVzc2Fn
ZURlZmxhdGVGcmFtZXIob2JqZWN0KToKKyAgICAiIiJBIGZyYW1lciBmb3IgZXh0ZW5zaW9ucyB3
aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4iIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZGVmbGF0ZV9tYXhfd2luZG93X2JpdHMsIGRlZmxhdGVfbm9fY29udGV4dF90YWtlb3Zlcik6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisg
ICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCisg
ICAgICAgICAgICBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rh
a2VvdmVyKQorCisgICAgICAgIHNlbGYuX3JmYzE5NzlfaW5mbGF0ZXIgPSB1dGlsLl9SRkMxOTc5
SW5mbGF0ZXIoKQorCisgICAgICAgIHNlbGYuX2JmaW5hbCA9IEZhbHNlCisKKyAgICAgICAgc2Vs
Zi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9IEZhbHNlCisKKyAgICAgICAgIyBUcnVlIGlm
IGEgbWVzc2FnZSBpcyBmcmFnbWVudGVkIGFuZCBjb21wcmVzc2lvbiBpcyBvbmdvaW5nLgorICAg
ICAgICBzZWxmLl9jb21wcmVzc19vbmdvaW5nID0gRmFsc2UKKworICAgICAgICAjIENhbGN1bGF0
ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIG91dGdvaW5nIGJ5dGVzIHN1cHBsaWVkIHRvIHRoaXMg
ZmlsdGVyKSAvCisgICAgICAgICMgICAgIChUb3RhbCBieXRlcyBzZW50IHRvIHRoZSBuZXR3b3Jr
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCisKKyAgICAg
ICAgIyBDYWxjdWxhdGVzCisgICAgICAgICMgICAgIChUb3RhbCBieXRlcyByZWNlaXZlZCBmcm9t
IHRoZSBuZXR3b3JrKSAvCisgICAgICAgICMgICAgIChUb3RhbCBpbmNvbWluZyBieXRlcyBvYnRh
aW5lZCBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKKyAgICAgICAgc2VsZi5faW5jb21pbmdf
YXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQorCisg
ICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9iZmluYWwgPSB2
YWx1ZQorCisgICAgZGVmIHNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKHNlbGYsIHZhbHVl
KToKKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZCA9IHZhbHVlCisKKyAg
ICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBkZWNvbXByZXNz
KToKKyAgICAgICAgaWYgbm90IGRlY29tcHJlc3M6CisgICAgICAgICAgICByZXR1cm4gbWVzc2Fn
ZQorCisgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAg
ICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRl
cygKKyAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBtZXNzYWdl
ID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2VsZi5faW5jb21pbmdf
YXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKKyAgICAgICAgICAg
IGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBfbG9nX2luY29taW5nX2NvbXByZXNz
aW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLCByZWNlaXZlZF9wYXlsb2FkX3Np
emUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2F2
ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQorCisgICAgICAgIHJl
dHVybiBtZXNzYWdlCisKKyAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZShzZWxmLCBt
ZXNzYWdlLCBlbmQsIGJpbmFyeSk6CisgICAgICAgIGlmIG5vdCBiaW5hcnk6CisgICAgICAgICAg
ICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKKworICAgICAgICBpZiBub3Qgc2Vs
Zi5fY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZDoKKyAgICAgICAgICAgIHJldHVybiBtZXNzYWdl
CisKKyAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCisgICAgICAg
IHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfb3JpZ2luYWxfYnl0
ZXMoCisgICAgICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUpCisKKyAgICAgICAgbWVzc2Fn
ZSA9IHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIuZmlsdGVyKG1lc3NhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ9ZW5kLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZpbmFsPXNlbGYuX2JmaW5hbCkK
KworICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAg
c2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMo
CisgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCisKKyAgICAgICAgX2xvZ19vdXRn
b2luZ19jb21wcmVzc2lvbl9yYXRpbygKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlciwgb3JpZ2lu
YWxfcGF5bG9hZF9zaXplLCBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICBzZWxm
Ll9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkK
KworICAgICAgICBpZiBub3Qgc2VsZi5fY29tcHJlc3Nfb25nb2luZzoKKyAgICAgICAgICAgIHNl
bGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5zZXRfY29tcHJlc3Npb25fYml0KCkKKyAgICAgICAg
c2VsZi5fY29tcHJlc3Nfb25nb2luZyA9IG5vdCBlbmQKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UK
KworICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAg
IGlmIGZyYW1lLnJzdjEgPT0gMSBhbmQgbm90IGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFt
ZS5vcGNvZGUpOgorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIuZGVj
b21wcmVzc19uZXh0X21lc3NhZ2UoKQorICAgICAgICAgICAgZnJhbWUucnN2MSA9IDAKKworICAg
IGRlZiBfcHJvY2Vzc19vdXRnb2luZ19mcmFtZShzZWxmLCBmcmFtZSwgY29tcHJlc3Npb25fYml0
KToKKyAgICAgICAgaWYgKG5vdCBjb21wcmVzc2lvbl9iaXQgb3IgY29tbW9uLmlzX2NvbnRyb2xf
b3Bjb2RlKGZyYW1lLm9wY29kZSkpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZnJh
bWUucnN2MSA9IDEKKworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1f
b3B0aW9ucyk6CisgICAgICAgICIiIkNyZWF0ZXMgZmlsdGVycyBhbmQgc2V0cyB0aGVtIHRvIHRo
ZSBTdHJlYW1PcHRpb25zLiIiIgorICAgICAgICBjbGFzcyBfT3V0Z29pbmdNZXNzYWdlRmlsdGVy
KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRl
cihzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCisgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIGNsYXNzIF9JbmNv
bWluZ01lc3NhZ2VGaWx0ZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwYXJlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorICAgICAg
ICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gRmFsc2UKKworICAgICAg
ICAgICAgZGVmIGRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKHNlbGYpOgorICAgICAgICAgICAgICAg
IHNlbGYuX2RlY29tcHJlc3NfbmV4dF9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYg
ZmlsdGVyKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9w
YXJlbnQuX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZSwgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBtZXNzYWdlCisKKyAgICAgICAgc2VsZi5fb3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIgPSBfT3V0
Z29pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyID0gX0luY29taW5nTWVzc2FnZUZpbHRlcihzZWxmKQorICAgICAgICBzdHJlYW1fb3B0
aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfbWVzc2FnZV9maWx0ZXIpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5n
X21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNz
YWdlX2ZpbHRlcikKKworICAgICAgICBjbGFzcyBfT3V0Z29pbmdGcmFtZUZpbHRlcihvYmplY3Qp
OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAg
ICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXBy
ZXNzaW9uX2JpdCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBzZXRfY29tcHJlc3Npb25fYml0
KHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBUcnVl
CisKKyAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudC5fcHJvY2Vzc19vdXRnb2luZ19mcmFtZShmcmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXBy
ZXNzaW9uX2JpdCkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0g
RmFsc2UKKworICAgICAgICBjbGFzcyBfSW5jb21pbmdGcmFtZUZpbHRlcihvYmplY3QpOgorICAg
ICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50ID0gcGFyZW50CisKKyAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUp
OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19mcmFtZShm
cmFtZSkKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgPSBfT3V0Z29pbmdG
cmFtZUZpbHRlcihzZWxmKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgPSBf
SW5jb21pbmdGcmFtZUZpbHRlcihzZWxmKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5vdXRnb2lu
Z19mcmFtZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1l
X2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVycy5h
cHBlbmQoCisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIpCisKKyAgICAg
ICAgc3RyZWFtX29wdGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4ID0gRmFsc2UKKwor
CitfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T05dID0gKAorICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisKK2Rl
ZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6CisgICAgIiIiR2l2
ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBhbiBleHRlbnNpb24gb2ZmZXIg
cmVjZWl2ZWQKKyAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVzIGFuZCByZXR1cm5zIGFuIGlu
c3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgZXh0ZW5zaW9uIHByb2Nlc3NvciBjbGFz
cy4KKyAgICAiIiIKKworICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9hdmFpbGFibGVfcHJvY2Vzc29y
cy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQorICAgIGlmIHByb2Nlc3Nvcl9jbGFzcyBp
cyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBwcm9jZXNzb3JfY2xhc3Mo
ZXh0ZW5zaW9uX3JlcXVlc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRh
YWQyN2Y1M2M0NmJlMmE3MWM3MDRjNzA4ZmJiM2Y0MmYxYTNkMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpAQCAtMCww
ICsxLDk4IEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworJW1vZHVsZSBmYXN0X21hc2tpbmcKKworJWluY2x1ZGUgImNzdHJpbmcuaSIKKworJXsKKyNp
bmNsdWRlIDxjc3RyaW5nPgorCisjaWZkZWYgX19TU0UyX18KKyNpbmNsdWRlIDxlbW1pbnRyaW4u
aD4KKyNlbmRpZgorJX0KKworJWFwcGx5IChjaGFyICpTVFJJTkcsIGludCBMRU5HVEgpIHsKKyAg
ICAoY29uc3QgY2hhciogcGF5bG9hZCwgaW50IHBheWxvYWRfbGVuZ3RoKSwKKyAgICAoY29uc3Qg
Y2hhciogbWFza2luZ19rZXksIGludCBtYXNraW5nX2tleV9sZW5ndGgpIH07CislY3N0cmluZ19v
dXRwdXRfYWxsb2NhdGVfc2l6ZSgKKyAgICBjaGFyKiogcmVzdWx0LCBpbnQqIHJlc3VsdF9sZW5n
dGgsIGRlbGV0ZSBbXSAqJDEpOworCislaW5saW5lICV7CisKK3ZvaWQgbWFzaygKKyAgICBjb25z
dCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgsCisgICAgY29uc3QgY2hhciogbWFz
a2luZ19rZXksIGludCBtYXNraW5nX2tleV9sZW5ndGgsCisgICAgaW50IG1hc2tpbmdfa2V5X2lu
ZGV4LAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCkgeworICAqcmVzdWx0
ID0gbmV3IGNoYXJbcGF5bG9hZF9sZW5ndGhdOworICAqcmVzdWx0X2xlbmd0aCA9IHBheWxvYWRf
bGVuZ3RoOworICBtZW1jcHkoKnJlc3VsdCwgcGF5bG9hZCwgcGF5bG9hZF9sZW5ndGgpOworCisg
IGNoYXIqIGN1cnNvciA9ICpyZXN1bHQ7CisgIGNoYXIqIGN1cnNvcl9lbmQgPSAqcmVzdWx0ICsg
KnJlc3VsdF9sZW5ndGg7CisKKyNpZmRlZiBfX1NTRTJfXworICB3aGlsZSAoKGN1cnNvciA8IGN1
cnNvcl9lbmQpICYmCisgICAgICAgICAocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGN1cnNvcikg
JiAweGYpKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07
CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5k
ZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorICBpZiAoY3Vyc29yID09IGN1cnNv
cl9lbmQpIHsKKyAgICByZXR1cm47CisgIH0KKworICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2
OworICBfX20xMjhpIG1hc2tpbmdfa2V5X2Jsb2NrOworICBmb3IgKGludCBpID0gMDsgaSA8IGtC
bG9ja1NpemU7ICsraSkgeworICAgICoocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJm1hc2tpbmdf
a2V5X2Jsb2NrKSArIGkpID0KKyAgICAgICAgbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhd
OworICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNr
aW5nX2tleV9sZW5ndGg7CisgIH0KKworICB3aGlsZSAoY3Vyc29yICsga0Jsb2NrU2l6ZSA8PSBj
dXJzb3JfZW5kKSB7CisgICAgX19tMTI4aSBwYXlsb2FkX2Jsb2NrID0KKyAgICAgICAgX21tX2xv
YWRfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oY3Vyc29yKSk7CisgICAgX21tX3N0
cmVhbV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpLAorICAgICAgICAg
ICAgICAgICAgICAgX21tX3hvcl9zaTEyOChwYXlsb2FkX2Jsb2NrLCBtYXNraW5nX2tleV9ibG9j
aykpOworICAgIGN1cnNvciArPSBrQmxvY2tTaXplOworICB9CisjZW5kaWYKKworICB3aGlsZSAo
Y3Vyc29yIDwgY3Vyc29yX2VuZCkgeworICAgICpjdXJzb3IgXj0gbWFza2luZ19rZXlbbWFza2lu
Z19rZXlfaW5kZXhdOworICAgICsrY3Vyc29yOworICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1h
c2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9sZW5ndGg7CisgIH0KK30KKworJX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtl
L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYmU1YWU5ZmRmZDQ2ZDE4OTcwYmY5OTJjYzFhZGVh
MjVhY2M1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTAxIEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IuIFRoaXMgY2xh
c3MgdHJ5IHRvIGFwcGx5IGF2YWlsYWJsZQorb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29ycyBm
b3IgZWFjaCBwcm90b2NvbCB2ZXJzaW9uIHVudGlsIGEgY29ubmVjdGlvbiBpcworc3VjY2Vzc2Z1
bGx5IGVzdGFibGlzaGVkLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgbG9nZ2luZworCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkKKyMgRXhwb3J0
IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25F
eGNlcHRpb24KKyMgc3ltYm9sIGZyb20gdGhpcyBtb2R1bGUuCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRp
b24KKworX0xPR0dFUiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2RlZiBkb19o
YW5kc2hha2UocmVxdWVzdCwgZGlzcGF0Y2hlcik6CisgICAgIiIiUGVyZm9ybXMgV2ViU29ja2V0
IGhhbmRzaGFrZS4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdC4KKyAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hl
cikuCisKKyAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNv
dXJjZSBpbiBwZXJmb3JtaW5nCisgICAgaGFuZHNoYWtlLgorICAgICIiIgorCisgICAgX0xPR0dF
Ui5kZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVl
c3QudXJpKQorICAgICMgVG8gcHJpbnQgbWltZXRvb2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUt
bGluZSBzdHJpbmcsIHdlIGNvbnZlcnRzCisgICAgIyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0
LiBXaXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVzZSAlciwgaXQganVzdAorICAgICMgcHJpbnRz
IHRoZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYgd2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9y
aWdpbmFsCisgICAgIyBoZWFkZXIgc3RyaW5nIGFzIG11bHRpcGxlIGxpbmVzLgorICAgICMKKyAg
ICAjIEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5kIE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9u
IGNhbiBiZQorICAgICMgY29udmVydGVkIHRvIGRpY3QuCisgICAgIworICAgICMgbWltZXRvb2xz
Lk1lc3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBvcmlnaW5hbCBoZWFkZXIgc3RyaW5nLgorICAg
ICMgZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmplY3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhl
YWRlciBuYW1lcyB0bworICAgICMgaGVhZGVyIHZhbHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRv
ZXNuJ3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1c3QKKyAgICAjIF9fcmVwcl9fIHdoaWNoIGZv
cm1hdHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlvbmFyeSBvYmplY3QuCisgICAgX0xPR0dFUi5k
ZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywKKyAgICAgICAg
ICAgICAgICAgIGRpY3QocmVxdWVzdC5oZWFkZXJzX2luKSkKKworICAgIGhhbmRzaGFrZXJzID0g
W10KKyAgICBoYW5kc2hha2Vycy5hcHBlbmQoKCdSRkMgNjQ1NScsIGh5YmkuSGFuZHNoYWtlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKSkpCisKKyAgICBmb3IgbmFtZSwgaGFuZHNoYWtlciBpbiBoYW5k
c2hha2VyczoKKyAgICAgICAgX0xPR0dFUi5kZWJ1ZygnVHJ5aW5nIHByb3RvY29sIHZlcnNpb24g
JXMnLCBuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCisgICAgICAgICAgICBfTE9HR0VSLmluZm8oJ0VzdGFibGlzaGVkICglcyBwcm90b2Nv
bCknLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VF
eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIF9MT0dHRVIuZGVidWcoCisgICAgICAgICAgICAg
ICAgJ0ZhaWxlZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBhcyAlcyBwcm90b2NvbDog
JXInLAorICAgICAgICAgICAgICAgIG5hbWUsIGUpCisgICAgICAgICAgICBpZiBlLnN0YXR1czoK
KyAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgIGV4Y2VwdCBBYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgVmVyc2lvbkV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UKKworICAgICMgVE9ETyh0b3lvc2hpbSk6
IEFkZCBhIHRlc3QgdG8gY292ZXIgdGhlIGNhc2UgYWxsIGhhbmRzaGFrZXJzIGZhaWwuCisgICAg
cmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9w
ZW5pbmcgaGFuZHNoYWtlIGZvciBhbGwgYXZhaWxhYmxlIHByb3RvY29scycsCisgICAgICAgIHN0
YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisKKworIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL19iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9fYmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNThkZDhkNDk3ZDlkODlkZDljMTA0MzJiY2RiYTNlOTAz
ZTFiNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L2hhbmRzaGFrZS9fYmFzZS5weQpAQCAtMCwwICsxLDE3OSBAQAorIyBDb3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJDb21tb24gZnVuY3Rpb25zIGFuZCBleGNlcHRpb25zIHVzZWQgYnkgV2ViU29ja2V0IG9w
ZW5pbmcgaGFuZHNoYWtlCitwcm9jZXNzb3JzLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisKK2NsYXNzIEFi
b3J0ZWRCeVVzZXJFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJFeGNlcHRpb24gZm9yIGFi
b3J0aW5nIGEgY29ubmVjdGlvbiBpbnRlbnRpb25hbGx5LgorCisgICAgSWYgdGhpcyBleGNlcHRp
b24gaXMgcmFpc2VkIGluIGRvX2V4dHJhX2hhbmRzaGFrZSBoYW5kbGVyLCB0aGUgY29ubmVjdGlv
bgorICAgIHdpbGwgYmUgYWJhbmRvbmVkLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBo
YW5kbGVyIHdpbGwgYmUgaW52b2tlZC4KKworICAgIElmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNl
ZCBpbiB0cmFuc2Zlcl9kYXRhX2hhbmRsZXIsIHRoZSBjb25uZWN0aW9uIHdpbGwKKyAgICBiZSBj
bG9zZWQgd2l0aG91dCBjbG9zaW5nIGhhbmRzaGFrZS4gTm8gb3RoZXIgV2ViU29ja2V0IG9yIEhU
VFAoUykgaGFuZGxlcgorICAgIHdpbGwgYmUgaW52b2tlZC4KKyAgICAiIiIKKworICAgIHBhc3MK
KworCitjbGFzcyBIYW5kc2hha2VFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4
Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nl
c3NpbmcKKyAgICBXZWJTb2NrZXQgaW5pdGlhbCBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1Ob25lKToKKyAgICAgICAgc3VwZXIoSGFuZHNo
YWtlRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN0YXR1cyA9
IHN0YXR1cworCisKK2NsYXNzIFZlcnNpb25FeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJU
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgdmVyc2lvbiBvZiBjbGllbnQgcmVx
dWVzdCBkb2VzIG5vdAorICAgIG1hdGNoIHdpdGggdmVyc2lvbiB0aGUgc2VydmVyIHN1cHBvcnRz
LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lv
bnM9JycpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJn
czoKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBz
dXBwb3J0ZWQgaHliaSB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZS5nLiAnMTMnKQorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwg
c2VsZikuX19pbml0X18obmFtZSkKKyAgICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBz
dXBwb3J0ZWRfdmVyc2lvbnMKKworCitkZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgor
ICAgIGlmIGlzX3NlY3VyZToKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NL
RVRfU0VDVVJFX1BPUlQKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRf
V0VCX1NPQ0tFVF9QT1JUCisKKworZGVmIHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29s
KToKKyAgICAiIiJWYWxpZGF0ZSBhIHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29s
IGZpZWxkLgorCisgICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2Yg
UkZDIDY0NTUuCisgICAgIiIiCisKKyAgICBpZiBub3Qgc3VicHJvdG9jb2w6CisgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScp
CisKKyAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgorICAgIHN0
YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCisgICAgdG9r
ZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgcmVzdCA9IGh0
dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkKKyAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwg
fHN1YnByb3RvY29sfCBpcyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCisgICAgIyB8cmVz
dHwgaXMgTm9uZSwgfHRva2VufCBtdXN0IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29s
fCBpcworICAgICMgY29uY2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5v
dCBOb25lLgorICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CisgICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUV4Y2VwdGlvbignSW52YWxpZCBub24tdG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0KQorCisKK2Rl
ZiBwYXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KToKKyAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRl
cnNfaW5bY29tbW9uLkhPU1RfSEVBREVSXS5zcGxpdCgnOicsIDEpCisgICAgaWYgbGVuKGZpZWxk
cykgPT0gMToKKyAgICAgICAgcmV0dXJuIGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1
ZXN0LmlzX2h0dHBzKCkpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQo
ZmllbGRzWzFdKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBwb3J0IG51bWJlciBmb3JtYXQ6ICVyJyAlIGUpCisK
KworZGVmIGZvcm1hdF9oZWFkZXIobmFtZSwgdmFsdWUpOgorICAgIHJldHVybiB1JyVzOiAlc1xy
XG4nICUgKG5hbWUsIHZhbHVlKQorCisKK2RlZiBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0
LCBrZXkpOgorICAgIHZhbHVlID0gcmVxdWVzdC5oZWFkZXJzX2luLmdldChrZXkpCisgICAgaWYg
dmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFkZXIg
JXMgaXMgbm90IGRlZmluZWQnICUga2V5KQorICAgIHJldHVybiB2YWx1ZQorCisKK2RlZiB2YWxp
ZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUsIGZhaWxf
c3RhdHVzPU5vbmUpOgorICAgIHZhbHVlID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwg
a2V5KQorCisgICAgaWYgdmFsdWUubG93ZXIoKSAhPSBleHBlY3RlZF92YWx1ZS5sb3dlcigpOgor
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAnRXhwZWN0ZWQg
JXIgZm9yIGhlYWRlciAlcyBidXQgZm91bmQgJXIgKGNhc2UtaW5zZW5zaXRpdmUpJyAlCisgICAg
ICAgICAgICAoZXhwZWN0ZWRfdmFsdWUsIGtleSwgdmFsdWUpLAorICAgICAgICAgICAgc3RhdHVz
PWZhaWxfc3RhdHVzKQorCisKK2RlZiBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVzdCk6CisgICAg
IyA1LjEgMS4gVGhlIHRocmVlIGNoYXJhY3RlciBVVEYtOCBzdHJpbmcgIkdFVCIuCisgICAgIyA1
LjEgMi4gQSBVVEYtOC1lbmNvZGVkIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIgKDB4MjAgYnl0ZSku
CisgICAgaWYgcmVxdWVzdC5tZXRob2QgIT0gdSdHRVQnOgorICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ01ldGhvZCBpcyBub3QgR0VUOiAlcicgJSByZXF1ZXN0Lm1ldGhvZCkKKwor
ICAgIGlmIHJlcXVlc3QucHJvdG9jb2wgIT0gdSdIVFRQLzEuMSc6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbignVmVyc2lvbiBpcyBub3QgSFRUUC8xLjE6ICVyJyAlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnByb3RvY29sKQorCisKK2RlZiBwYXJz
ZV90b2tlbl9saXN0KGRhdGEpOgorICAgICIiIlBhcnNlcyBhIGhlYWRlciB2YWx1ZSB3aGljaCBm
b2xsb3dzIDEjdG9rZW4gYW5kIHJldHVybnMgcGFyc2VkIGVsZW1lbnRzCisgICAgYXMgYSBsaXN0
IG9mIHN0cmluZ3MuCisKKyAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJpbW1lZC4KKyAgICAi
IiIKKworICAgIHN0YXRlID0gaHR0cF9oZWFkZXJfdXRpbC5QYXJzaW5nU3RhdGUoZGF0YSkKKwor
ICAgIHRva2VuX2xpc3QgPSBbXQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdG9rZW4gPSBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgICAgIGlmIHRva2VuIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5fbGlzdC5hcHBlbmQodG9rZW4pCisKKyAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIGh0
dHBfaGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisK
KyAgICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcs
Jyk6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0V4cGVjdGVkIGEgY29t
bWEgYnV0IGZvdW5kICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKKworICAgICAgICBodHRwX2hlYWRlcl91dGls
LmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICBpZiBsZW4odG9rZW5fbGlzdCkgPT0gMDoKKyAg
ICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxpZCB0b2tlbiBmb3VuZCcpCisK
KyAgICByZXR1cm4gdG9rZW5fbGlzdAorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmZDYzZWI2M2VkZDFmNGFjZjg4N2RmMzVkNGJkYzNiNmUxMzk5MTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5
YmkucHkKQEAgLTAsMCArMSwzOTUgQEAKKyMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhpcyBmaWxlIHBy
b3ZpZGVzIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQK
K3Byb3RvY29sIChSRkMgNjQ1NSkuCisKK1NwZWNpZmljYXRpb246CitodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9y
dCByZQorZnJvbSBoYXNobGliIGltcG9ydCBzaGExCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGdldF9l
eHRlbnNpb25fcHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2Ug
aW1wb3J0IGNoZWNrX3JlcXVlc3RfbGluZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBmb3JtYXRfaGVhZGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UuX2Jhc2UgaW1wb3J0IGdldF9tYW5kYXRvcnlfaGVhZGVyCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV90b2tlbl9saXN0Citmcm9tIG1v
ZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX21hbmRhdG9yeV9o
ZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRh
dGVfc3VicHJvdG9jb2wKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBT
dHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwor
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBt
YXAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCisjIFVzZWQgdG8gdmFsaWRhdGUgdGhl
IHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIgc3RyaWN0bHkuIFJGQyA0NjQ4
CisjIGRpc2FsbG93cyBub24temVybyBwYWRkaW5nLCBzbyB0aGUgY2hhcmFjdGVyIHJpZ2h0IGJl
Zm9yZSA9PSBtdXN0IGJlIGFueSBvZgorIyBBLCBRLCBnIGFuZCB3LgorX1NFQ19XRUJTT0NLRVRf
S0VZX1JFR0VYID0gcmUuY29tcGlsZSgnXlsrLzAtOUEtWmEtel17MjF9W0FRZ3ddPT0kJykKKwor
IyBEZWZpbmluZyBhbGlhc2VzIGZvciB2YWx1ZXMgdXNlZCBmcmVxdWVudGx5LgorX1ZFUlNJT05f
TEFURVNUID0gY29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QKK19WRVJTSU9OX0xBVEVTVF9TVFJJ
TkcgPSBzdHIoX1ZFUlNJT05fTEFURVNUKQorX1NVUFBPUlRFRF9WRVJTSU9OUyA9IFsKKyAgICBf
VkVSU0lPTl9MQVRFU1QsCitdCisKKworZGVmIGNvbXB1dGVfYWNjZXB0KGtleSk6CisgICAgIiIi
Q29tcHV0ZXMgdmFsdWUgZm9yIHRoZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIgZnJvbSB2
YWx1ZSBvZiB0aGUKKyAgICBTZWMtV2ViU29ja2V0LUtleSBoZWFkZXIuCisgICAgIiIiCisKKyAg
ICBhY2NlcHRfYmluYXJ5ID0gc2hhMShrZXkgKyBjb21tb24uV0VCU09DS0VUX0FDQ0VQVF9VVUlE
KS5kaWdlc3QoKQorICAgIGFjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUoYWNjZXB0X2JpbmFyeSkK
KworICAgIHJldHVybiBhY2NlcHQKKworCitkZWYgY29tcHV0ZV9hY2NlcHRfZnJvbV91bmljb2Rl
KHVuaWNvZGVfa2V5KToKKyAgICAiIiJBIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGNvbXB1dGVfYWNj
ZXB0IHdoaWNoIHRha2VzIGEgdW5pY29kZSBzdHJpbmcgYXMgYW4KKyAgICBhcmd1bWVudCwgYW5k
IGVuY29kZXMgaXQgdG8gYnl0ZSBzdHJpbmcuIEl0IHRoZW4gcGFzc2VzIGl0IG9uIHRvCisgICAg
Y29tcHV0ZV9hY2NlcHQuCisgICAgIiIiCisKKyAgICBrZXkgPSB1bmljb2RlX2tleS5lbmNvZGUo
J1VURi04JykKKyAgICByZXR1cm4gY29tcHV0ZV9hY2NlcHQoa2V5KQorCisKK2NsYXNzIEhhbmRz
aGFrZXIob2JqZWN0KToKKyAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRo
ZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcik6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5j
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1
ZXN0LgorICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0
Y2hlcikuCisKKyAgICAgICAgSGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMg
d3NfcmVzb3VyY2UgZHVyaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIK
KworICAgIGRlZiBfdmFsaWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoc2VsZik6CisgICAgICAgIGNv
bm5lY3Rpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVS
KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbm5lY3Rpb25fdG9rZW5zID0gcGFyc2Vf
dG9rZW5fbGlzdChjb25uZWN0aW9uKQorICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0ZhaWxlZCB0byBw
YXJzZSAlczogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29t
bW9uLkNPTk5FQ1RJT05fSEVBREVSLCBlKSkKKworICAgICAgICBjb25uZWN0aW9uX2lzX3ZhbGlk
ID0gRmFsc2UKKyAgICAgICAgZm9yIHRva2VuIGluIGNvbm5lY3Rpb25fdG9rZW5zOgorICAgICAg
ICAgICAgaWYgdG9rZW4ubG93ZXIoKSA9PSBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUu
bG93ZXIoKToKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2lzX3ZhbGlkID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBjb25uZWN0aW9uX2lzX3ZhbGlkOgor
ICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICcl
cyBoZWFkZXIgZG9lc25cJ3QgY29udGFpbiAiJXMiJyAlCisgICAgICAgICAgICAgICAgKGNvbW1v
bi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKwor
ICAgIGRlZiBkb19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xv
c2VfY29kZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24gPSBO
b25lCisKKyAgICAgICAgIyBQYXJzaW5nLgorCisgICAgICAgIGNoZWNrX3JlcXVlc3RfbGluZShz
ZWxmLl9yZXF1ZXN0KQorCisgICAgICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoc2VsZi5f
cmVxdWVzdCwgY29tbW9uLlVQR1JBREVfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFKQorCisgICAgICAgIHNlbGYu
X3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKCkKKworICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKKworICAgICAgICB1bnVzZWRfaG9zdCA9IGdl
dF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsIGNvbW1vbi5IT1NUX0hFQURFUikKKwor
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24gPSBzZWxmLl9jaGVja192ZXJzaW9uKCkK
KworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9nZXRfb3JpZ2luKCkKKyAgICAgICAg
ICAgIHNlbGYuX3NldF9wcm90b2NvbCgpCisgICAgICAgICAgICBzZWxmLl9wYXJzZV9leHRlbnNp
b25zKCkKKworICAgICAgICAgICAgIyBLZXkgdmFsaWRhdGlvbiwgcmVzcG9uc2UgZ2VuZXJhdGlv
bi4KKworICAgICAgICAgICAga2V5ID0gc2VsZi5fZ2V0X2tleSgpCisgICAgICAgICAgICBhY2Nl
cHQgPSBjb21wdXRlX2FjY2VwdChrZXkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
JyVzOiAlciAoJXMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uU0VD
X1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXRpbC5oZXhpZnkoYmFzZTY0LmI2NGRlY29kZShhY2NlcHQpKSkKKworICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm90b2NvbCB2ZXJzaW9uIGlzIFJGQyA2NDU1JykK
KworICAgICAgICAgICAgIyBTZXR1cCBleHRlbnNpb24gcHJvY2Vzc29ycy4KKworICAgICAgICAg
ICAgcHJvY2Vzc29ycyA9IFtdCisgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZvciBleHRlbnNp
b25fcmVxdWVzdCBpbiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zOgorICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRl
bnNpb25fcmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgIyBVbmtub3duIGV4dGVuc2lvbiBy
ZXF1ZXN0cyBhcmUganVzdCBpZ25vcmVkLgorICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNz
b3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVu
ZChwcm9jZXNzb3IpCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9j
ZXNzb3JzID0gcHJvY2Vzc29ycworCisgICAgICAgICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVy
cy4gVGhlIGV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBhZGQgaGVhZGVyCisgICAgICAgICAg
ICAjIGRhdGEgYXMgbmFtZS92YWx1ZSBwYWlycyB0byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0
IGFwcGVuZHMKKyAgICAgICAgICAgICMgdGhlbSB0byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4K
KyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVhZGVycyA9IFtdCisKKyAgICAgICAg
ICAgICMgRXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29y
cy4KKyAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYu
X3JlcXVlc3QpCisgICAgICAgICAgICBwcm9jZXNzb3JzID0gWworICAgICAgICAgICAgICAgIHBy
b2Nlc3NvcgorICAgICAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gc2VsZi5fcmVxdWVzdC53
c19leHRlbnNpb25fcHJvY2Vzc29ycworICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgXQorCisgICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3Nv
ciBpZiB0aGVyZSBhcmUgZXh0ZW5zaW9ucyBvbiB0aGUgcmVxdWVzdCB3aGljaAorICAgICAgICAg
ICAgIyBjYW5ub3QgY28tZXhpc3QuIFdoZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vz
c29ycyBjYW5ub3QKKyAgICAgICAgICAgICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3Nv
ciBtYXJrcyB0aGVtIChvciBpdHNlbGYpIGFzCisgICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRo
ZSBmaXJzdCBleHRlbnNpb24gcHJvY2Vzc29yIGhhcyB0aGUgcmlnaHQgdG8KKyAgICAgICAgICAg
ICMgbWFrZSB0aGUgZmluYWwgY2FsbC4KKyAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2
ZXJzZWQocHJvY2Vzc29ycyk6CisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2
ZSgpOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0
aF9vdGhlcl9wcm9jZXNzb3JzKAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykK
KyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vzc29yIGZv
ciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29ycyBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCkKKyAgICAg
ICAgICAgIF0KKworICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisKKyAgICAg
ICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCisKKyAgICAgICAgICAgIGZv
ciBpbmRleCwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToKKyAgICAgICAgICAg
ICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29y
LmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9y
ZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIFJlamVjdGVkLgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5z
aW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jlc3BvbnNlKQorCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICAg
ICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXByZXNzaW9uIGV4dGVuc2lv
bnMuCisgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoaW5kZXggKyAxLCBsZW4ocHJvY2Vz
c29ycykpOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFs
c2UpCisKKyAgICAgICAgICAgIGlmIGxlbihhY2NlcHRlZF9leHRlbnNpb25zKSA+IDA6CisgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5z
aW9ucworICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAg
ICAgICAgJ0V4dGVuc2lvbnMgYWNjZXB0ZWQ6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgbGlz
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucykp
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbnMgPSBOb25lCisKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0g
c2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1fb3B0aW9ucykKKworICAgICAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RvX2V4dHJhX2hhbmRzaGFrZSBtdXN0IGNob29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAnd3NfcmVxdWVzdGVkX3Byb3RvY29scyBhbmQgc2V0
IGl0IHRvIHdzX3Byb3RvY29sJykKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2Nv
bChzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdTdWJwcm90b2NvbCBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAnd3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhl
IGNsaWVudCBkaWRuXCd0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBz
dWJwcm90b2NvbCcpCisKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKGFjY2VwdCkK
KyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYg
bm90IGUuc3RhdHVzOgorICAgICAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gNDAwIGJhZCByZXF1
ZXN0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgZS5zdGF0dXMgPSBjb21tb24uSFRUUF9T
VEFUVVNfQkFEX1JFUVVFU1QKKyAgICAgICAgICAgIHJhaXNlIGUKKworICAgIGRlZiBfZ2V0X29y
aWdpbihzZWxmKToKKyAgICAgICAgb3JpZ2luX2hlYWRlciA9IGNvbW1vbi5PUklHSU5fSEVBREVS
CisgICAgICAgIG9yaWdpbiA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQob3JpZ2luX2hl
YWRlcikKKyAgICAgICAgaWYgb3JpZ2luIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0NsaWVudCByZXF1ZXN0IGRvZXMgbm90IGhhdmUgb3JpZ2luIGhlYWRlcicpCisg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCisKKyAgICBkZWYgX2NoZWNr
X3ZlcnNpb24oc2VsZik6CisgICAgICAgIHZlcnNpb24gPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihz
ZWxmLl9yZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpCisgICAgICAgIGlmIHZlcnNpb24gPT0g
X1ZFUlNJT05fTEFURVNUX1NUUklORzoKKyAgICAgICAgICAgIHJldHVybiBfVkVSU0lPTl9MQVRF
U1QKKworICAgICAgICBpZiB2ZXJzaW9uLmZpbmQoJywnKSA+PSAwOgorICAgICAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdNdWx0aXBsZSB2ZXJzaW9u
cyAoJXIpIGFyZSBub3QgYWxsb3dlZCBmb3IgaGVhZGVyICVzJyAlCisgICAgICAgICAgICAgICAg
KHZlcnNpb24sIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSKSwKKyAgICAgICAg
ICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQorICAgICAgICBy
YWlzZSBWZXJzaW9uRXhjZXB0aW9uKCdVbnN1cHBvcnRlZCB2ZXJzaW9uICVyIGZvciBoZWFkZXIg
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgY29tbW9uLlNF
Q19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cHBvcnRlZF92ZXJzaW9ucz0nLCAnLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hcChzdHIsIF9TVVBQT1JURURfVkVSU0lPTlMpKSkKKworICAgIGRlZiBf
c2V0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0g
Tm9uZQorCisgICAgICAgIHByb3RvY29sX2hlYWRlciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19p
bi5nZXQoCisgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIp
CisKKyAgICAgICAgaWYgcHJvdG9jb2xfaGVhZGVyIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgPSBOb25lCisgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgPSBwYXJz
ZV90b2tlbl9saXN0KAorICAgICAgICAgICAgcHJvdG9jb2xfaGVhZGVyKQorICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ1N1YnByb3RvY29scyByZXF1ZXN0ZWQ6ICVyJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scykKKwor
ICAgIGRlZiBfcGFyc2VfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFk
ZXIgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIpCisgICAgICAgIGlmIG5vdCBleHRlbnNpb25z
X2hlYWRlcjoKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lv
bnMgPSBOb25lCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4
dGVuc2lvbnMoCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIpCisgICAgICAgIGV4
Y2VwdCBjb21tb24uRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg
cmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFy
c2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjogJXInICUgZSkKKworICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAnRXh0ZW5zaW9ucyByZXF1ZXN0ZWQ6ICVy
JywKKyAgICAgICAgICAgIGxpc3QoCisgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19y
ZXF1ZXN0ZWRfZXh0ZW5zaW9ucykpKQorCisgICAgZGVmIF92YWxpZGF0ZV9rZXkoc2VsZiwga2V5
KToKKyAgICAgICAgaWYga2V5LmZpbmQoJywnKSA+PSAwOgorICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKCdSZXF1ZXN0IGhhcyBtdWx0aXBsZSAlcyBoZWFkZXIgbGluZXMgb3Ig
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWlucyBpbGxlZ2Fs
IGNoYXJhY3RlciBcJyxcJzogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKKworICAgICAgICAj
IFZhbGlkYXRlCisgICAgICAgIGtleV9pc192YWxpZCA9IEZhbHNlCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgVmFsaWRhdGUga2V5IGJ5IHF1aWNrIHJlZ2V4IG1hdGNoIGJlZm9yZSBwYXJz
aW5nIGJ5IGJhc2U2NAorICAgICAgICAgICAgIyBtb2R1bGUuIEJlY2F1c2UgYmFzZTY0IG1vZHVs
ZSBza2lwcyBpbnZhbGlkIGNoYXJhY3RlcnMsIHdlIGhhdmUKKyAgICAgICAgICAgICMgdG8gZG8g
dGhpcyBpbiBhZHZhbmNlIHRvIG1ha2UgdGhpcyBzZXJ2ZXIgc3RyaWN0bHkgcmVqZWN0IGlsbGVn
YWwKKyAgICAgICAgICAgICMga2V5cy4KKyAgICAgICAgICAgIGlmIF9TRUNfV0VCU09DS0VUX0tF
WV9SRUdFWC5tYXRjaChrZXkpOgorICAgICAgICAgICAgICAgIGRlY29kZWRfa2V5ID0gYmFzZTY0
LmI2NGRlY29kZShrZXkpCisgICAgICAgICAgICAgICAgaWYgbGVuKGRlY29kZWRfa2V5KSA9PSAx
NjoKKyAgICAgICAgICAgICAgICAgICAga2V5X2lzX3ZhbGlkID0gVHJ1ZQorICAgICAgICBleGNl
cHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgbm90IGtl
eV9pc192YWxpZDoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSWxsZWdh
bCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisgICAg
ICAgIHJldHVybiBkZWNvZGVkX2tleQorCisgICAgZGVmIF9nZXRfa2V5KHNlbGYpOgorICAgICAg
ICBrZXkgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSKQor
CisgICAgICAgIGRlY29kZWRfa2V5ID0gc2VsZi5fdmFsaWRhdGVfa2V5KGtleSkKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzOiAlciAoJXMpJywgY29tbW9uLlNFQ19XRUJTT0NLRVRf
S0VZX0hFQURFUiwga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnko
ZGVjb2RlZF9rZXkpKQorCisgICAgICAgIHJldHVybiBrZXkuZW5jb2RlKCdVVEYtOCcpCisKKyAg
ICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICByZXR1
cm4gU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHN0cmVhbV9vcHRpb25zKQorCisgICAgZGVmIF9jcmVh
dGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYsIGFjY2VwdCk6CisgICAgICAgIHJlc3BvbnNlID0g
W10KKworICAgICAgICByZXNwb25zZS5hcHBlbmQodSdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFBy
b3RvY29sc1xyXG4nKQorCisgICAgICAgICMgV2ViU29ja2V0IGhlYWRlcnMKKyAgICAgICAgcmVz
cG9uc2UuYXBwZW5kKAorICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uVVBHUkFERV9I
RUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFE
RV9UWVBFKSkKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAorICAgICAgICAgICAgZm9ybWF0X2hl
YWRlcihjb21tb24uQ09OTkVDVElPTl9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSkpCisgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZCgKKyAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBU
X0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0LmRlY29kZSgnVVRGLTgn
KSkpCisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICAgICAgZm9ybWF0X2hlYWRl
cihjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKSkKKyAgICAgICAgaWYgKHNl
bGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFu
ZCBsZW4oc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSAhPSAwKToKKyAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKAorICAgICAgICAg
ICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwKKyAgICAg
ICAgICAgICAgICAgICAgY29tbW9uLmZvcm1hdF9leHRlbnNpb25zKHNlbGYuX3JlcXVlc3Qud3Nf
ZXh0ZW5zaW9ucykpKQorCisgICAgICAgICMgSGVhZGVycyBub3Qgc3BlY2lmaWMgZm9yIFdlYlNv
Y2tldAorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFk
ZXJzOgorICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIobmFtZSwgdmFs
dWUpKQorCisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J1xyXG4nKQorCisgICAgICAgIHJldHVy
biB1Jycuam9pbihyZXNwb25zZSkKKworICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNj
ZXB0KToKKyAgICAgICAgcmF3X3Jlc3BvbnNlID0gc2VsZi5fY3JlYXRlX2hhbmRzaGFrZV9yZXNw
b25zZShhY2NlcHQpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdf
cmVzcG9uc2UuZW5jb2RlKCdVVEYtOCcpKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Nl
bnQgc2VydmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICByYXdfcmVzcG9uc2UpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NTk4ZjU3MGYyZGMxZWUwMTYyZDk5NmQ2ODg1Y2EwYmQ2YWI3
ZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE5IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZWQ5MGIyNDdiOGRlZDlmMjU0ZGFiYTcwOTA5Y2JjOGZmM2M4MmQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVh
ZGVyX3V0aWwucHkKQEAgLTAsMCArMSwyNTQgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVXRpbGl0
aWVzIGZvciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlYWRlcnMgdGhhdCBmb2xsb3cgdGhlIGdy
YW1tYXIgZGVmaW5lZAoraW4gSFRUUCBSRkMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjYx
Ni50eHQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCBzaXgubW92ZXMudXJsbGliLnBhcnNlCisKK19TRVBBUkFUT1JTID0gJygpPD5ALDs6XFwi
L1tdPz17fSBcdCcKKworCitkZWYgX2lzX2NoYXIoYyk6CisgICAgIiIiUmV0dXJucyB0cnVlIGlm
ZiBjIGlzIGluIENIQVIgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisgICAgcmV0dXJu
IG9yZChjKSA8PSAxMjcKKworCitkZWYgX2lzX2N0bChjKToKKyAgICAiIiJSZXR1cm5zIHRydWUg
aWZmIGMgaXMgaW4gQ1RMIGFzIHNwZWNpZmllZCBpbiBIVFRQIFJGQy4iIiIKKworICAgIHJldHVy
biBvcmQoYykgPD0gMzEgb3Igb3JkKGMpID09IDEyNworCisKK2NsYXNzIFBhcnNpbmdTdGF0ZShv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5kYXRh
ID0gZGF0YQorICAgICAgICBzZWxmLmhlYWQgPSAwCisKKworZGVmIHBlZWsoc3RhdGUsIHBvcz0w
KToKKyAgICAiIiJQZWVrcyB0aGUgY2hhcmFjdGVyIGF0IHBvcyBmcm9tIHRoZSBoZWFkIG9mIGRh
dGEuIiIiCisKKyAgICBpZiBzdGF0ZS5oZWFkICsgcG9zID49IGxlbihzdGF0ZS5kYXRhKToKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgIHJldHVybiBzdGF0ZS5kYXRhW3N0YXRlLmhlYWQgKyBw
b3NdCisKKworZGVmIGNvbnN1bWUoc3RhdGUsIGFtb3VudD0xKToKKyAgICAiIiJDb25zdW1lcyBz
cGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGhlYWQgYW5kIHJldHVybnMgdGhlCisg
ICAgY29uc3VtZWQgYnl0ZXMuIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBieXRlcyB0byBjb25zdW1l
LCByZXR1cm5zIE5vbmUuCisgICAgIiIiCisKKyAgICBpZiBzdGF0ZS5oZWFkICsgYW1vdW50ID4g
bGVuKHN0YXRlLmRhdGEpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgcmVzdWx0ID0gc3Rh
dGUuZGF0YVtzdGF0ZS5oZWFkOnN0YXRlLmhlYWQgKyBhbW91bnRdCisgICAgc3RhdGUuaGVhZCA9
IHN0YXRlLmhlYWQgKyBhbW91bnQKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIGNvbnN1bWVf
c3RyaW5nKHN0YXRlLCBleHBlY3RlZCk6CisgICAgIiIiR2l2ZW4gYSBwYXJzaW5nIHN0YXRlIGFu
ZCBhIGV4cGVjdGVkIHN0cmluZywgY29uc3VtZXMgdGhlIHN0cmluZyBmcm9tCisgICAgdGhlIGhl
YWQuIFJldHVybnMgVHJ1ZSBpZiBjb25zdW1lZCBzdWNjZXNzZnVsbHkuIE90aGVyd2lzZSwgcmV0
dXJucworICAgIEZhbHNlLgorICAgICIiIgorCisgICAgcG9zID0gMAorCisgICAgZm9yIGMgaW4g
ZXhwZWN0ZWQ6CisgICAgICAgIGlmIGMgIT0gcGVlayhzdGF0ZSwgcG9zKToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorICAgICAgICBwb3MgKz0gMQorCisgICAgY29uc3VtZShzdGF0ZSwgcG9z
KQorICAgIHJldHVybiBUcnVlCisKKworZGVmIGNvbnN1bWVfbHdzKHN0YXRlKToKKyAgICAiIiJD
b25zdW1lcyBhIExXUyBmcm9tIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYgYW55IExXUyBpcyBj
b25zdW1lZC4KKyAgICBPdGhlcndpc2UsIHJldHVybnMgRmFsc2UuCisKKyAgICBMV1MgPSBbQ1JM
Rl0gMSooIFNQIHwgSFQgKQorICAgICIiIgorCisgICAgb3JpZ2luYWxfaGVhZCA9IHN0YXRlLmhl
YWQKKworICAgIGNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnXHJcbicpCisKKyAgICBwb3MgPSAwCisK
KyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjID0gcGVlayhzdGF0ZSwgcG9zKQorICAgICAgICBp
ZiBjID09ICcgJyBvciBjID09ICdcdCc6CisgICAgICAgICAgICBwb3MgKz0gMQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAgICAgICAgc3RhdGUuaGVh
ZCA9IG9yaWdpbmFsX2hlYWQKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29uc3VtZShzdGF0ZSwgcG9zKQorICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlCisKKworZGVmIGNvbnN1bWVfbHdzZXMoc3RhdGUpOgorICAgICIi
IkNvbnN1bWVzICpMV1MgZnJvbSB0aGUgaGVhZC4iIiIKKworICAgIHdoaWxlIGNvbnN1bWVfbHdz
KHN0YXRlKToKKyAgICAgICAgcGFzcworCisKK2RlZiBjb25zdW1lX3Rva2VuKHN0YXRlKToKKyAg
ICAiIiJDb25zdW1lcyBhIHRva2VuIGZyb20gdGhlIGhlYWQuIFJldHVybnMgdGhlIHRva2VuIG9y
IE5vbmUgaWYgbm8gdG9rZW4KKyAgICB3YXMgZm91bmQuCisgICAgIiIiCisKKyAgICBwb3MgPSAw
CisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjID0gcGVlayhzdGF0ZSwgcG9zKQorICAgICAg
ICBpZiBjIGlzIE5vbmUgb3IgYyBpbiBfU0VQQVJBVE9SUyBvciBfaXNfY3RsKGMpIG9yIG5vdCBf
aXNfY2hhcihjKToKKyAgICAgICAgICAgIGlmIHBvcyA9PSAwOgorICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCisKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lKHN0YXRlLCBwb3MpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBwb3MgKz0gMQorCisKK2RlZiBjb25zdW1lX3Rva2VuX29y
X3F1b3RlZF9zdHJpbmcoc3RhdGUpOgorICAgICIiIkNvbnN1bWVzIGEgdG9rZW4gb3IgYSBxdW90
ZWQtc3RyaW5nLCBhbmQgcmV0dXJucyB0aGUgdG9rZW4gb3IgdW5xdW90ZWQKKyAgICBzdHJpbmcu
IElmIG5vIHRva2VuIG9yIHF1b3RlZC1zdHJpbmcgd2FzIGZvdW5kLCByZXR1cm5zIE5vbmUuCisg
ICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0gc3RhdGUuaGVhZAorCisgICAgaWYgbm90IGNv
bnN1bWVfc3RyaW5nKHN0YXRlLCAnIicpOgorICAgICAgICByZXR1cm4gY29uc3VtZV90b2tlbihz
dGF0ZSkKKworICAgIHJlc3VsdCA9IFtdCisKKyAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxz
ZQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgaWYgbm90IGV4cGVjdF9xdW90ZWRfcGFpciBh
bmQgY29uc3VtZV9sd3Moc3RhdGUpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpCisg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGMgPSBjb25zdW1lKHN0YXRlKQorICAgICAg
ICBpZiBjIGlzIE5vbmU6CisgICAgICAgICAgICAjIHF1b3RlZC1zdHJpbmcgaXMgbm90IGVuY2xv
c2VkIHdpdGggZG91YmxlIHF1b3RhdGlvbgorICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdp
bmFsX2hlYWQKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgZXhwZWN0X3F1
b3RlZF9wYWlyOgorICAgICAgICAgICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKKyAgICAg
ICAgICAgIGlmIF9pc19jaGFyKGMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBOb24gQ0hBUiBjaGFyYWN0ZXIg
Zm91bmQgaW4gcXVvdGVkLXBhaXIKKyAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2lu
YWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgYyA9PSAn
XFwnOgorICAgICAgICAgICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gVHJ1ZQorICAgICAgICBlbGlm
IGMgPT0gJyInOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorICAgICAgICBl
bGlmIF9pc19jdGwoYyk6CisgICAgICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVyICVyIGZvdW5k
IGluIHFkdGV4dAorICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGMpCisKKworZGVmIHF1b3RlX2lmX25lY2Vzc2FyeShzKToKKyAgICAiIiJRdW90ZXMgYXJi
aXRyYXJ5IHN0cmluZyBpbnRvIHF1b3RlZC1zdHJpbmcuIiIiCisKKyAgICBxdW90ZSA9IEZhbHNl
CisgICAgaWYgcyA9PSAnJzoKKyAgICAgICAgcmV0dXJuICciIicKKworICAgIHJlc3VsdCA9IFtd
CisgICAgZm9yIGMgaW4gczoKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgYyBpbiBfU0VQQVJBVE9S
UyBvciBfaXNfY3RsKGMpIG9yIG5vdCBfaXNfY2hhcihjKToKKyAgICAgICAgICAgIHF1b3RlID0g
VHJ1ZQorCisgICAgICAgIGlmIGMgPT0gJyInIG9yIF9pc19jdGwoYyk6CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCdcXCcgKyBjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjKQorCisgICAgaWYgcXVvdGU6CisgICAgICAgIHJldHVybiAnIicgKyAnJy5qb2lu
KHJlc3VsdCkgKyAnIicKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQp
CisKKworZGVmIHBhcnNlX3VyaSh1cmkpOgorICAgICIiIlBhcnNlIGFic29sdXRlIFVSSSB0aGVu
IHJldHVybiBob3N0LCBwb3J0IGFuZCByZXNvdXJjZS4iIiIKKworICAgIHBhcnNlZCA9IHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UudXJsc3BsaXQodXJpKQorICAgIGlmIHBhcnNlZC5zY2hlbWUgIT0g
J3dzcycgYW5kIHBhcnNlZC5zY2hlbWUgIT0gJ3dzJzoKKyAgICAgICAgIyB8dXJpfCBtdXN0IGJl
IGEgcmVsYXRpdmUgVVJJLgorICAgICAgICAjIFRPRE8odG95b3NoaW0pOiBTaG91bGQgdmFsaWRh
dGUgfHVyaXwuCisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCB1cmkKKworICAgIGlmIHBhcnNl
ZC5ob3N0bmFtZSBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisg
ICAgcG9ydCA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIHBvcnQgPSBwYXJzZWQucG9ydAorICAg
IGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAjIFRoZSBwb3J0IHByb3BlcnR5IGNhdXNlIFZh
bHVlRXJyb3Igb24gaW52YWxpZCBudWxsIHBvcnQgZGVzY3JpcHRpb25zCisgICAgICAgICMgbGlr
ZSAnd3M6Ly9ob3N0OklOVkFMSURfUE9SVC9wYXRoJywgd2hlcmUgdGhlIGFzc2lnbmVkIHBvcnQg
aXMgbm90CisgICAgICAgICMgKkRJR0lULiBGb3IgcHl0aG9uIDMuNiBhbmQgbGF0ZXIsIFZhbHVl
RXJyb3IgYWxzbyByYWlzZXMgd2hlbgorICAgICAgICAjIGFzc2lnbmluZyBpbnZhbGlkIHBvcnQg
bnVtYmVycyBzdWNoIGFzICd3czovL2hvc3Q6LTEvcGF0aCcuIEVhcmxpZXIKKyAgICAgICAgIyB2
ZXJzaW9ucyBzaW1wbHkgcmV0dXJuIE5vbmUgYW5kIGlnbm9yZSBpbnZhbGlkIHBvcnQgYXR0cmli
dXRlcy4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKKworICAgIGlmIHBvcnQgaXMg
Tm9uZToKKyAgICAgICAgaWYgcGFyc2VkLnNjaGVtZSA9PSAnd3MnOgorICAgICAgICAgICAgcG9y
dCA9IDgwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3J0ID0gNDQzCisKKyAgICBwYXRo
ID0gcGFyc2VkLnBhdGgKKyAgICBpZiBub3QgcGF0aDoKKyAgICAgICAgcGF0aCArPSAnLycKKyAg
ICBpZiBwYXJzZWQucXVlcnk6CisgICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Cisg
ICAgaWYgcGFyc2VkLmZyYWdtZW50OgorICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFn
bWVudAorCisgICAgcmV0dXJuIHBhcnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L21lbW9yaXppbmdmaWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNTM5Njc2MTg0N2E2ODQwNDY0ODQwYjBl
NzJlYmM3YmExNTBlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKQEAgLTAsMCArMSw5OSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1lbW9yaXppbmcgZmlsZS4KKwor
QSBtZW1vcml6aW5nIGZpbGUgd3JhcHMgYSBmaWxlIGFuZCBtZW1vcml6ZXMgbGluZXMgcmVhZCBi
eSByZWFkbGluZS4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dAoraW1wb3J0IHN5cworCisKK2NsYXNzIE1lbW9yaXppbmdGaWxlKG9iamVjdCk6CisgICAgIiIi
TWVtb3JpemluZ0ZpbGUgd3JhcHMgYSBmaWxlIGFuZCBtZW1vcml6ZXMgbGluZXMgcmVhZCBieSBy
ZWFkbGluZS4KKworICAgIE5vdGUgdGhhdCBkYXRhIHJlYWQgYnkgb3RoZXIgbWV0aG9kcyBhcmUg
bm90IG1lbW9yaXplZC4gVGhpcyBiZWhhdmlvcgorICAgIGlzIGdvb2QgZW5vdWdoIGZvciBtZW1v
cml6aW5nIGxpbmVzIFNpbXBsZUhUVFBTZXJ2ZXIgcmVhZHMgYmVmb3JlCisgICAgdGhlIGNvbnRy
b2wgcmVhY2hlcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZmlsZV8sIG1heF9tZW1vcml6ZWRfbGluZXM9c3lzLm1heHNpemUpOgorICAg
ICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICAgIGZpbGVfOiB0aGUgZmlsZSBvYmplY3QgdG8gd3JhcC4KKyAgICAgICAgICAgIG1heF9tZW1v
cml6ZWRfbGluZXM6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBtZW1vcml6ZS4KKyAg
ICAgICAgICAgICAgICBPbmx5IHRoZSBmaXJzdCBtYXhfbWVtb3JpemVkX2xpbmVzIGFyZSBtZW1v
cml6ZWQuCisgICAgICAgICAgICAgICAgRGVmYXVsdDogc3lzLm1heGludC4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlXworICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGlu
ZXMgPSBbXQorICAgICAgICBzZWxmLl9tYXhfbWVtb3JpemVkX2xpbmVzID0gbWF4X21lbW9yaXpl
ZF9saW5lcworICAgICAgICBzZWxmLl9idWZmZXJlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2J1
ZmZlcmVkX2xpbmUgPSBOb25lCisKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1l
KToKKyAgICAgICAgIiIiUmV0dXJuIGEgZmlsZSBhdHRyaWJ1dGUuCisgICAgICAgIAorICAgICAg
ICBSZXR1cm5zIHRoZSB2YWx1ZSBvdmVycmlkZGVuIGJ5IHRoaXMgY2xhc3MgZm9yIHNvbWUgYXR0
cmlidXRlcywKKyAgICAgICAgYW5kIGZvcndhcmRzIHRoZSBjYWxsIHRvIF9maWxlIGZvciB0aGUg
b3RoZXIgYXR0cmlidXRlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5hbWUgaW4gKCdfZmls
ZScsICdfbWVtb3JpemVkX2xpbmVzJywgJ19tYXhfbWVtb3JpemVkX2xpbmVzJywKKyAgICAgICAg
ICAgICAgICAgICAgJ19idWZmZXJlZCcsICdfYnVmZmVyZWRfbGluZScsICdyZWFkbGluZScsCisg
ICAgICAgICAgICAgICAgICAgICdnZXRfbWVtb3JpemVkX2xpbmVzJyk6CisgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2ZpbGUuX19nZXRhdHRyaWJ1dGVfXyhuYW1lKQorCisgICAgZGVmIHJlYWRsaW5lKHNl
bGYsIHNpemU9LTEpOgorICAgICAgICAiIiJPdmVycmlkZSBmaWxlLnJlYWRsaW5lIGFuZCBtZW1v
cml6ZSB0aGUgbGluZSByZWFkLgorCisgICAgICAgIE5vdGUgdGhhdCBldmVuIGlmIHNpemUgaXMg
c3BlY2lmaWVkIGFuZCBzbWFsbGVyIHRoYW4gYWN0dWFsIHNpemUsCisgICAgICAgIHRoZSB3aG9s
ZSBsaW5lIHdpbGwgYmUgcmVhZCBvdXQgZnJvbSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0IGJ5Cisg
ICAgICAgIHN1YnNlcXVlbnQgcmVhZGxpbmUgY2FsbHMuCisgICAgICAgICIiIgorICAgICAgICBp
ZiBzZWxmLl9idWZmZXJlZDoKKyAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJlZF9saW5l
CisgICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICBpZiBsaW5l
IGFuZCBsZW4oc2VsZi5fbWVtb3JpemVkX2xpbmVzKSA8IHNlbGYuX21heF9tZW1vcml6ZWRfbGlu
ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzLmFwcGVuZChsaW5lKQor
ICAgICAgICBpZiBzaXplID49IDAgYW5kIHNpemUgPCBsZW4obGluZSk6CisgICAgICAgICAgICBz
ZWxmLl9idWZmZXJlZCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBs
aW5lW3NpemU6XQorICAgICAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCisgICAgICAgIHJldHVy
biBsaW5lCisKKyAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgIiIi
R2V0IGxpbmVzIG1lbW9yaXplZCBzbyBmYXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tZW1v
cml6ZWRfbGluZXMKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4Y2E3OGUxNGFkMjVlN2E0
NGQxYWIyNjJlN2JkMzVjZWFlYTVmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CkBAIC0wLDAgKzEsMjE0IEBACisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIk1lc3NhZ2UgcmVsYXRlZCB1dGlsaXRpZXMuCisKK05vdGU6IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3Vn
aAorbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5
IGluIGNvbm5lY3Rpb24KK2hhbmRsZXJzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVy
IG9wdGlvbnMuIEZvciBleGFtcGxlLAorcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFi
bGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcKK2J5dGVzIHdyaXRpbmcvcmVh
ZGluZy4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHRocmVhZGluZworCisjIEV4cG9ydCBFeGNlcHRp
b24gc3ltYm9scyBmcm9tIG1zZ3V0aWwgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKK2Zyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBp
bXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2V4Y2VwdGlvbnMgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9u
CisKKworIyBBbiBBUEkgZm9yIGhhbmRsZXIgdG8gc2VuZC9yZWNlaXZlIFdlYlNvY2tldCBtZXNz
YWdlcy4KK2RlZiBjbG9zZV9jb25uZWN0aW9uKHJlcXVlc3QpOgorICAgICIiIkNsb3NlIGNvbm5l
Y3Rpb24uCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
CisgICAgIiIiCisgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisKKwor
ZGVmIHNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkX2RhdGEsIGVuZD1UcnVlLCBiaW5hcnk9
RmFsc2UpOgorICAgICIiIlNlbmQgYSBtZXNzYWdlIChvciBwYXJ0IG9mIGEgbWVzc2FnZSkuCisK
KyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAg
IHBheWxvYWRfZGF0YTogdW5pY29kZSB0ZXh0IG9yIHN0ciBiaW5hcnkgdG8gc2VuZC4KKyAgICAg
ICAgZW5kOiBUcnVlIHRvIHRlcm1pbmF0ZSBhIG1lc3NhZ2UuCisgICAgICAgICAgICAgRmFsc2Ug
dG8gc2VuZCBwYXlsb2FkX2RhdGEgYXMgcGFydCBvZiBhIG1lc3NhZ2UgdGhhdCBpcyB0byBiZQor
ICAgICAgICAgICAgIHRlcm1pbmF0ZWQgYnkgbmV4dCBvciBsYXRlciBzZW5kX21lc3NhZ2UgY2Fs
bCB3aXRoIGVuZD1UcnVlLgorICAgICAgICBiaW5hcnk6IHNlbmQgcGF5bG9hZF9kYXRhIGFzIGJp
bmFyeSBmcmFtZShzKS4KKyAgICBSYWlzZXM6CisgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bjogd2hlbiBzZXJ2ZXIgYWxyZWFkeSB0ZXJtaW5hdGVkLgorICAgICIiIgorICAgIHJlcXVlc3Qu
d3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShwYXlsb2FkX2RhdGEsIGVuZCwgYmluYXJ5KQorCisKK2Rl
ZiByZWNlaXZlX21lc3NhZ2UocmVxdWVzdCk6CisgICAgIiIiUmVjZWl2ZSBhIFdlYlNvY2tldCBm
cmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFzIGEgdGV4dCBpbgorICAgIHVuaWNvZGUgb3Ig
YSBiaW5hcnkgaW4gc3RyLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhv
biByZXF1ZXN0LgorICAgIFJhaXNlczoKKyAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiAg
ICAgd2hlbiBjbGllbnQgc2VuZCBpbnZhbGlkIGZyYW1lLgorICAgICAgICBVbnN1cHBvcnRlZEZy
YW1lRXhjZXB0aW9uOiB3aGVuIGNsaWVudCBzZW5kIHVuc3VwcG9ydGVkIGZyYW1lIGUuZy4gc29t
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiByZXNlcnZlZCBiaXQgaXMg
c2V0IGJ1dCBubyBleHRlbnNpb24gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY29nbml6ZSBpdC4KKyAgICAgICAgSW52YWxpZFVURjhFeGNlcHRpb246ICAgICAgd2hl
biBjbGllbnQgc2VuZCBhIHRleHQgZnJhbWUgY29udGFpbmluZyBhbnkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBVVEYtOCBzdHJpbmcuCisgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkbHkuCisgICAgICAg
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogICAgIHdoZW4gY2xpZW50IGFscmVhZHkgdGVybWluYXRl
ZC4KKyAgICAiIiIKKyAgICByZXR1cm4gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdl
KCkKKworCitkZWYgc2VuZF9waW5nKHJlcXVlc3QsIGJvZHkpOgorICAgIHJlcXVlc3Qud3Nfc3Ry
ZWFtLnNlbmRfcGluZyhib2R5KQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlcih0aHJlYWRpbmcu
VGhyZWFkKToKKyAgICAiIiJUaGlzIGNsYXNzIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIGNs
aWVudC4KKworICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byByZWNlaXZlIG1l
c3NhZ2VzOiBibG9ja2luZywKKyAgICBub24tYmxvY2tpbmcsIGFuZCB2aWEgY2FsbGJhY2suIENh
bGxiYWNrIGhhcyB0aGUgaGlnaGVzdCBwcmVjZWRlbmNlLgorCisgICAgTm90ZTogVGhpcyBjbGFz
cyBzaG91bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwor
ICAgIGJlY2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBl
cnJvciBpZiB0aGUgc29ja2V0CisgICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRz
LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9u
ZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICAgICAgICAgb25t
ZXNzYWdlOiBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZl
ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUg
ZnVuY3Rpb24gaXMgY2FsbGVkIG9uCisgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgdGhy
ZWFkLiBJbiB0aGF0IGNhc2UsIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlCisgICAgICAgICAgICAg
ICAgICAgICAgIGFuZCBNZXNzYWdlUmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MK
KyAgICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFu
eSBtZXNzYWdlcy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2lu
aXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxm
Ll9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuX29ubWVzc2Fn
ZSA9IG9ubWVzc2FnZQorICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZhbHNlCisgICAg
ICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVm
IHJ1bihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0
b3BfcmVxdWVzdGVkOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlX21lc3NhZ2Uo
c2VsZi5fcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vbm1lc3NhZ2U6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX29ubWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChtZXNzYWdlKQorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY2xvc2VfY29ubmVjdGlvbihzZWxmLl9yZXF1ZXN0
KQorCisgICAgZGVmIHJlY2VpdmUoc2VsZik6CisgICAgICAgICIiIiBSZWNlaXZlIGEgbWVzc2Fn
ZSBmcm9tIHRoZSBjaGFubmVsLCBibG9ja2luZy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAg
ICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nLgorICAgICAgICAiIiIKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3F1ZXVlLmdldCgpCisKKyAgICBkZWYgcmVjZWl2ZV9ub3dhaXQoc2VsZik6
CisgICAgICAgICIiIiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBub24tYmxv
Y2tpbmcuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIG1lc3NhZ2UgYXMgYSB1bmlj
b2RlIHN0cmluZyBpZiBhdmFpbGFibGUuIE5vbmUgb3RoZXJ3aXNlLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3F1ZXVlLmdldF9ub3dhaXQo
KQorICAgICAgICBleGNlcHQgc2l4Lm1vdmVzLnF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgbWVz
c2FnZSA9IE5vbmUKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRlZiBzdG9wKHNlbGYp
OgorICAgICAgICAiIiJSZXF1ZXN0IHRvIHN0b3AgdGhpcyBpbnN0YW5jZS4KKworICAgICAgICBU
aGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9wcGVkIGFmdGVyIHJlY2VpdmluZyB0aGUgbmV4dCBtZXNz
YWdlLgorICAgICAgICBUaGlzIG1ldGhvZCBtYXkgbm90IGJlIHZlcnkgdXNlZnVsLCBidXQgdGhl
cmUgaXMgbm8gY2xlYW4gd2F5CisgICAgICAgIGluIFB5dGhvbiB0byBmb3JjZWZ1bGx5IHN0b3Ag
YSBydW5uaW5nIHRocmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVz
dGVkID0gVHJ1ZQorCisKK2NsYXNzIE1lc3NhZ2VTZW5kZXIodGhyZWFkaW5nLlRocmVhZCk6Cisg
ICAgIiIiVGhpcyBjbGFzcyBzZW5kcyBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCisgICAgVGhp
cyBjbGFzcyBwcm92aWRlcyBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgd2F5cyB0
byBzZW5kCisgICAgbWVzc2FnZXMuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNob3VsZCBub3Qg
YmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAgYmVjYXVzZSBw
eU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9yIGlmIHRoZSBz
b2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisgICAgIiIiCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4g
aW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRo
b24gcmVxdWVzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0
X18oc2VsZikKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5f
cXVldWUgPSBzaXgubW92ZXMucXVldWUuUXVldWUoKQorICAgICAgICBzZWxmLnNldERhZW1vbihU
cnVlKQorICAgICAgICBzZWxmLnN0YXJ0KCkKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAg
IHdoaWxlIFRydWU6CisgICAgICAgICAgICBtZXNzYWdlLCBjb25kaXRpb24gPSBzZWxmLl9xdWV1
ZS5nZXQoKQorICAgICAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgc2Vu
ZF9tZXNzYWdlKHNlbGYuX3JlcXVlc3QsIG1lc3NhZ2UpCisgICAgICAgICAgICBjb25kaXRpb24u
bm90aWZ5KCkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgIGRlZiBzZW5k
KHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJTZW5kIGEgbWVzc2FnZSwgYmxvY2tpbmcuIiIi
CisKKyAgICAgICAgY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIGNv
bmRpdGlvbi5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCBjb25k
aXRpb24pKQorICAgICAgICBjb25kaXRpb24ud2FpdCgpCisKKyAgICBkZWYgc2VuZF9ub3dhaXQo
c2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBub24tYmxvY2tpbmcu
IiIiCisKKyAgICAgICAgc2VsZi5fcXVldWUucHV0KChtZXNzYWdlLCB0aHJlYWRpbmcuQ29uZGl0
aW9uKCkpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAzOGQ5
ZjQzYWNkMzdiZjVhMWIxMGEwY2U1NTg1YmQ1MWVkNjAyZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKQEAgLTAs
MCArMSwzMTkgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiUmVxdWVzdCBIYW5kbGVyIGFuZCBSZXF1
ZXN0L0Nvbm5lY3Rpb24gY2xhc3NlcyBmb3Igc3RhbmRhbG9uZSBzZXJ2ZXIuCisiIiIKKworaW1w
b3J0IG9zCisKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBDR0lIVFRQU2VydmVyCitmcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgaHR0cF9jbGllbnQKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNv
bW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0
cF9oZWFkZXJfdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdmaWxl
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCisjIDEwMjQgaXMgcHJhY3RpY2Fs
bHkgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gV2ViU29ja2V0IGhhbmRzaGFrZSBsaW5lcy4KK19N
QVhfTUVNT1JJWkVEX0xJTkVTID0gMTAyNAorCisKK2NsYXNzIF9TdGFuZGFsb25lQ29ubmVjdGlv
bihvYmplY3QpOgorICAgICIiIk1pbWljIG1vZF9weXRob24gbXBfY29ubi4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0X2hhbmRsZXI6
IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5zdGFuY2UuCisgICAgICAgICIiIgorCisgICAg
ICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9IHJlcXVlc3RfaGFuZGxlcgorCisgICAgZGVmIGdl
dF9sb2NhbF9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5s
b2NhbF9hZGRyLiIiIgorCisgICAgICAgIHJldHVybiAoc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNl
cnZlci5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIu
c2VydmVyLnNlcnZlcl9wb3J0KQorCisgICAgbG9jYWxfYWRkciA9IHByb3BlcnR5KGdldF9sb2Nh
bF9hZGRyKQorCisgICAgZGVmIGdldF9yZW1vdGVfYWRkcihzZWxmKToKKyAgICAgICAgIiIiR2V0
dGVyIHRvIG1pbWljIG1wX2Nvbm4ucmVtb3RlX2FkZHIuCisKKyAgICAgICAgU2V0dGluZyB0aGUg
cHJvcGVydHkgaW4gX19pbml0X18gd29uJ3Qgd29yayBiZWNhdXNlIHRoZSByZXF1ZXN0CisgICAg
ICAgIGhhbmRsZXIgaXMgbm90IGluaXRpYWxpemVkIHlldCB0aGVyZS4iIiIKKworICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNsaWVudF9hZGRyZXNzCisKKyAgICByZW1vdGVf
YWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKKworICAgIGRlZiB3cml0ZShzZWxmLCBk
YXRhKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi53cml0ZSgpLiIiIgorCisgICAgICAgIHJl
dHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIud2ZpbGUud3JpdGUoZGF0YSkKKworICAgIGRlZiBy
ZWFkKHNlbGYsIGxlbmd0aCk6CisgICAgICAgICIiIk1pbWljIG1wX2Nvbm4ucmVhZCgpLiIiIgor
CisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZpbGUucmVhZChsZW5ndGgp
CisKKyAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgIiIiR2V0IG1l
bW9yaXplZCBsaW5lcy4iIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVy
LnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorCisKK2NsYXNzIF9TdGFuZGFsb25lUmVxdWVz
dChvYmplY3QpOgorICAgICIiIk1pbWljIG1vZF9weXRob24gcmVxdWVzdC4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCB1c2VfdGxzKToKKyAgICAgICAgIiIiQ29u
c3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0
X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5zdGFuY2UuCisgICAgICAgICIi
IgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQor
CisgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9IHJlcXVlc3RfaGFuZGxlcgorICAgICAg
ICBzZWxmLmNvbm5lY3Rpb24gPSBfU3RhbmRhbG9uZUNvbm5lY3Rpb24ocmVxdWVzdF9oYW5kbGVy
KQorICAgICAgICBzZWxmLl91c2VfdGxzID0gdXNlX3RscworICAgICAgICBzZWxmLmhlYWRlcnNf
aW4gPSByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycworCisgICAgZGVmIGdldF91cmkoc2VsZik6Cisg
ICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LnVyaS4KKworICAgICAgICBUaGlzIG1l
dGhvZCByZXR1cm5zIHRoZSByYXcgZGF0YSBhdCB0aGUgUmVxdWVzdC1VUkkgcGFydCBvZiB0aGUK
KyAgICAgICAgUmVxdWVzdC1MaW5lLCB3aGlsZSB0aGUgdXJpIG1ldGhvZCBvbiB0aGUgcmVxdWVz
dCBvYmplY3Qgb2YgbW9kX3B5dGhvbgorICAgICAgICByZXR1cm5zIHRoZSBwYXRoIHBvcnRpb24g
YWZ0ZXIgcGFyc2luZyB0aGUgcmF3IGRhdGEuIFRoaXMgYmVoYXZpb3IgaXMKKyAgICAgICAga2Vw
dCBmb3IgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3JlcXVlc3RfaGFuZGxlci5wYXRoCisKKyAgICB1cmkgPSBwcm9wZXJ0eShnZXRfdXJpKQorCisg
ICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1p
YyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVz
dF9oYW5kbGVyLnBhdGgKKworICAgIHVucGFyc2VkX3VyaSA9IHByb3BlcnR5KGdldF91bnBhcnNl
ZF91cmkpCisKKyAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRv
IG1pbWljIHJlcXVlc3QubWV0aG9kLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0
X2hhbmRsZXIuY29tbWFuZAorCisgICAgbWV0aG9kID0gcHJvcGVydHkoZ2V0X21ldGhvZCkKKwor
ICAgIGRlZiBnZXRfcHJvdG9jb2woc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBy
ZXF1ZXN0LnByb3RvY29sLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIucmVxdWVzdF92ZXJzaW9uCisKKyAgICBwcm90b2NvbCA9IHByb3BlcnR5KGdldF9wcm90b2Nv
bCkKKworICAgIGRlZiBpc19odHRwcyhzZWxmKToKKyAgICAgICAgIiIiTWltaWMgcmVxdWVzdC5p
c19odHRwcygpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl91c2VfdGxzCisKKworY2xhc3Mg
V2ViU29ja2V0UmVxdWVzdEhhbmRsZXIoQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRs
ZXIpOgorICAgICIiIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciBzcGVjaWFsaXplZCBmb3IgV2ViU29j
a2V0LiIiIgorCisgICAgIyBVc2UgaHR0cGxpYi5IVFRQTWVzc2FnZSBpbnN0ZWFkIG9mIG1pbWV0
b29scy5NZXNzYWdlLgorICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBfY2xpZW50LkhUVFBNZXNzYWdl
CisKKyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZl
ci5TdHJlYW1SZXF1ZXN0SGFuZGxlci5zZXR1cCB0byB3cmFwIHJmaWxlCisgICAgICAgIHdpdGgg
TWVtb3JpemluZ0ZpbGUuCisKKyAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYnkg
QmFzZVJlcXVlc3RIYW5kbGVyJ3MgY29uc3RydWN0b3IKKyAgICAgICAgYmVmb3JlIGNhbGxpbmcg
QmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGUuCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhh
bmRsZXIuaGFuZGxlIHdpbGwgY2FsbAorICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhh
bmRsZV9vbmVfcmVxdWVzdCBhbmQgaXQgd2lsbCBjYWxsCisgICAgICAgIFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgICMgQ2FsbCBz
dXBlcmNsYXNzJ3Mgc2V0dXAgdG8gcHJlcGFyZSByZmlsZSwgd2ZpbGUsIGV0Yy4gU2VlIHNldHVw
CisgICAgICAgICMgZGVmaW5pdGlvbiBvbiB0aGUgcm9vdCBjbGFzcyBTb2NrZXRTZXJ2ZXIuU3Ry
ZWFtUmVxdWVzdEhhbmRsZXIgdG8KKyAgICAgICAgIyB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkb2Vz
LgorICAgICAgICBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5zZXR1cChzZWxm
KQorCisgICAgICAgIHNlbGYucmZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZSgK
KyAgICAgICAgICAgIHNlbGYucmZpbGUsIG1heF9tZW1vcml6ZWRfbGluZXM9X01BWF9NRU1PUkla
RURfTElORVMpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJl
c3MsIHNlcnZlcik6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBzZXJ2ZXIud2Vic29ja2V0X3NlcnZl
cl9vcHRpb25zCisKKyAgICAgICAgIyBPdmVycmlkZXMgQ0dJSFRUUFNlcnZlclJlcXVlc3RIYW5k
bGVyLmNnaV9kaXJlY3Rvcmllcy4KKyAgICAgICAgc2VsZi5jZ2lfZGlyZWN0b3JpZXMgPSBzZWxm
Ll9vcHRpb25zLmNnaV9kaXJlY3RvcmllcworICAgICAgICAjIFJlcGxhY2UgQ0dJSFRUUFJlcXVl
c3RIYW5kbGVyLmlzX2V4ZWN1dGFibGUgbWV0aG9kLgorICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmlzX2V4ZWN1dGFibGVfbWV0aG9kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5pc19l
eGVjdXRhYmxlID0gc2VsZi5fb3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZAorCisgICAgICAg
ICMgVGhpcyBhY3R1YWxseSBjYWxscyBCYXNlUmVxdWVzdEhhbmRsZXIuX19pbml0X18uCisgICAg
ICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIHJl
cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCisKKyAgICBkZWYgcGFyc2VfcmVxdWVzdChzZWxm
KToKKyAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFu
ZGxlci5wYXJzZV9yZXF1ZXN0LgorCisgICAgICAgIFJldHVybiBUcnVlIHRvIGNvbnRpbnVlIHBy
b2Nlc3NpbmcgZm9yIEhUVFAoUyksIEZhbHNlIG90aGVyd2lzZS4KKworICAgICAgICBTZWUgQmFz
ZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgbWV0aG9kIHdoaWNoIGNhbGxz
CisgICAgICAgIHRoaXMgbWV0aG9kIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZXR1cm4gdmFsdWUg
d2lsbCBiZSBoYW5kbGVkLgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIGhvb2sgcGFyc2Vf
cmVxdWVzdCBtZXRob2QsIGJ1dCBhbHNvIGNhbGwgdGhlIG9yaWdpbmFsCisgICAgICAgICMgQ0dJ
SFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qgc2luY2Ugd2hlbiB3ZSByZXR1cm4gRmFs
c2UsCisgICAgICAgICMgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBj
b250aW51ZXMgcHJvY2Vzc2luZyBhbmQKKyAgICAgICAgIyBpdCBuZWVkcyB2YXJpYWJsZXMgc2V0
IGJ5IENHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgorICAgICAgICAjCisgICAg
ICAgICMgVmFyaWFibGVzIHNldCBieSB0aGlzIG1ldGhvZCB3aWxsIGJlIGFsc28gdXNlZCBieSBX
ZWJTb2NrZXQgcmVxdWVzdAorICAgICAgICAjIGhhbmRsaW5nIChzZWxmLnBhdGgsIHNlbGYuY29t
bWFuZCwgc2VsZi5yZXF1ZXN0bGluZSwgZXRjLiBTZWUgYWxzbworICAgICAgICAjIGhvdyBfU3Rh
bmRhbG9uZVJlcXVlc3QncyBtZW1iZXJzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyB0aGVzZQorICAg
ICAgICAjIGF0dHJpYnV0ZXMpLgorICAgICAgICBpZiBub3QgQ0dJSFRUUFNlcnZlci5DR0lIVFRQ
UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2Jhc2ljX2F1dGg6CisgICAgICAg
ICAgICBhdXRoID0gc2VsZi5oZWFkZXJzLmdldGhlYWRlcignQXV0aG9yaXphdGlvbicpCisgICAg
ICAgICAgICBpZiBhdXRoICE9IHNlbGYuX29wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsOgor
ICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSg0MDEpCisgICAgICAgICAgICAgICAg
c2VsZi5zZW5kX2hlYWRlcignV1dXLUF1dGhlbnRpY2F0ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQmFzaWMgcmVhbG09IlB5d2Vic29ja2V0IicpCisgICAgICAgICAgICAg
ICAgc2VsZi5lbmRfaGVhZGVycygpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J1JlcXVlc3QgYmFzaWMgYXV0aGVudGljYXRpb24nKQorICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5w
YXJzZV91cmkoc2VsZi5wYXRoKQorICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYucGF0aCkKKyAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhh
bmRsZXInKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgc2VydmVyX29wdGlvbnMg
PSBzZWxmLnNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgaWYgaG9zdCBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZlcl9vcHRpb25z
LnZhbGlkYXRpb25faG9zdAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0IGlzIG5vdCBO
b25lIGFuZCBob3N0ICE9IHZhbGlkYXRpb25faG9zdDoKKyAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnSW52YWxpZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIGhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0KQorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRs
ZXInKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHBvcnQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB2YWxpZGF0aW9uX3BvcnQgPSBzZXJ2ZXJfb3B0aW9ucy52YWxp
ZGF0aW9uX3BvcnQKKyAgICAgICAgICAgIGlmIHZhbGlkYXRpb25fcG9ydCBpcyBub3QgTm9uZSBh
bmQgcG9ydCAhPSB2YWxpZGF0aW9uX3BvcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0ludmFsaWQgcG9ydDogJXIgKGV4cGVjdGVkOiAlciknLCBwb3J0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCkKKyAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnRmFsbGJhY2sgdG8gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJykK
KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZWxmLnBhdGggPSByZXNvdXJj
ZQorCisgICAgICAgIHJlcXVlc3QgPSBfU3RhbmRhbG9uZVJlcXVlc3Qoc2VsZiwgc2VsZi5fb3B0
aW9ucy51c2VfdGxzKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRmFsbGJhY2sgdG8g
ZGVmYXVsdCBodHRwIGhhbmRsZXIgZm9yIHJlcXVlc3QgcGF0aHMgZm9yIHdoaWNoCisgICAgICAg
ICAgICAjIHdlIGRvbid0IGhhdmUgcmVxdWVzdCBoYW5kbGVycy4KKyAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIuZ2V0X2hhbmRsZXJfc3VpdGUoc2VsZi5wYXRoKToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnTm8gaGFuZGxlciBmb3IgcmVzb3Vy
Y2U6ICVyJywgc2VsZi5wYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdG
YWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQorICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCisgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Rpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6
ICVzJywgZSkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihlLnN0YXR1cykKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgSWYgYW55IEV4Y2VwdGlvbnMgd2l0aG91dCBl
eGNlcHQgY2xhdXNlIHNldHVwIChpbmNsdWRpbmcKKyAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlv
bikgaXMgcmFpc2VkIGJlbG93IHRoaXMgcG9pbnQsIGl0IHdpbGwgYmUgY2F1Z2h0CisgICAgICAg
ICMgYW5kIGxvZ2dlZCBieSBXZWJTb2NrZXRTZXJ2ZXIuCisKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5kb19oYW5kc2hha2UocmVxdWVz
dCwgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyKQorICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFr
ZS5WZXJzaW9uRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJywgZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNU
KQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoY29tbW9uLlNFQ19XRUJTT0NLRVRf
VkVSU0lPTl9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN1cHBv
cnRlZF92ZXJzaW9ucykKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFu
ZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgIyBIYW5kc2hha2UgZm9yIHdz
KHMpIGZhaWxlZC4KKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSGFuZHNoYWtl
IGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJy
b3IoZS5zdGF0dXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAg
IHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIKKyAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAg
ICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Fib3J0ZWQ6ICVzJywgZSkKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29kZT0nLScsIHNpemU9Jy0nKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX3JlcXVlc3QuIiIiCisKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyIlcyIgJXMgJXMnLCBzZWxmLnJlcXVlc3RsaW5lLCBz
dHIoY29kZSksIHN0cihzaXplKSkKKworICAgIGRlZiBsb2dfZXJyb3Ioc2VsZiwgKmFyZ3MpOgor
ICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfZXJyb3IuIiIiCisKKyAgICAg
ICAgIyBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG1ldGhvZCBpcyBmb3Igd2FybmluZ3MgdGhhbiBm
b3IgZXJyb3JzLgorICAgICAgICAjIEZvciBleGFtcGxlLCBIVFRQIHN0YXR1cyBjb2RlIGlzIGxv
Z2dlZCBieSB0aGlzIG1ldGhvZC4KKyAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJyVzIC0g
JXMnLCBzZWxmLmFkZHJlc3Nfc3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3NbMF0gJSBhcmdzWzE6XSkKKworICAgIGRlZiBpc19jZ2koc2VsZik6CisgICAgICAgICIi
IlRlc3Qgd2hldGhlciBzZWxmLnBhdGggY29ycmVzcG9uZHMgdG8gYSBDR0kgc2NyaXB0LgorCisg
ICAgICAgIEFkZCBleHRyYSBjaGVjayB0aGF0IHNlbGYucGF0aCBkb2Vzbid0IGNvbnRhaW5zIC4u
CisgICAgICAgIEFsc28gY2hlY2sgaWYgdGhlIGZpbGUgaXMgYSBleGVjdXRhYmxlIGZpbGUgb3Ig
bm90LgorICAgICAgICBJZiB0aGUgZmlsZSBpcyBub3QgZXhlY3V0YWJsZSwgaXQgaXMgaGFuZGxl
ZCBhcyBzdGF0aWMgZmlsZSBvciBkaXIKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBDR0kgc2NyaXB0
LgorICAgICAgICAiIiIKKworICAgICAgICBpZiBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlci5pc19jZ2koc2VsZik6CisgICAgICAgICAgICBpZiAnLi4nIGluIHNlbGYucGF0aDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICMgc3RyaXAgcXVlcnkg
cGFyYW1ldGVyIGZyb20gcmVxdWVzdCBwYXRoCisgICAgICAgICAgICByZXNvdXJjZV9uYW1lID0g
c2VsZi5wYXRoLnNwbGl0KCc/JywgMilbMF0KKyAgICAgICAgICAgICMgY29udmVydCByZXNvdXJj
ZV9uYW1lIGludG8gcmVhbCBwYXRoIG5hbWUgaW4gZmlsZXN5c3RlbS4KKyAgICAgICAgICAgIHNj
cmlwdGZpbGUgPSBzZWxmLnRyYW5zbGF0ZV9wYXRoKHJlc291cmNlX25hbWUpCisgICAgICAgICAg
ICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19leGVjdXRhYmxlKHNjcmlwdGZp
bGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc2VydmVyX3V0aWwucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc2VydmVyX3V0aWwucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGY5ZTI3M2U5NzcwODQ0YjdjYjQ0NjE2ZWJmOTgyNTg4NmJmNDRlNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpA
QCAtMCwwICsxLDg3IEBACisjIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlNlcnZlciByZWxhdGVkIHV0aWxp
dGllcy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCitpbXBv
cnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
Y29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCisKK2RlZiBfZ2V0X2xv
Z2dlcl9mcm9tX2NsYXNzKGMpOgorICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcignJXMuJXMn
ICUgKGMuX19tb2R1bGVfXywgYy5fX25hbWVfXykpCisKKworZGVmIGNvbmZpZ3VyZV9sb2dnaW5n
KG9wdGlvbnMpOgorICAgIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LCAnRklORScpCisKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgbG9nZ2Vy
LnNldExldmVsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkp
KQorICAgIGlmIG9wdGlvbnMubG9nX2ZpbGU6CisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLmhh
bmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIob3B0aW9ucy5sb2dfZmlsZSwgJ2EnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMu
bG9nX21heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmxvZ19jb3VudCkKKyAgICBlbHNlOgorICAgICAgICBoYW5kbGVyID0g
bG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKKyAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRl
cigKKyAgICAgICAgJ1slKGFzY3RpbWUpc10gWyUobGV2ZWxuYW1lKXNdICUobmFtZSlzOiAlKG1l
c3NhZ2UpcycpCisgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQorICAgIGxvZ2dl
ci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKKyAgICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lID0gbG9n
Z2luZy5nZXRMZXZlbE5hbWUoCisgICAgICAgIG9wdGlvbnMuZGVmbGF0ZV9sb2dfbGV2ZWwudXBw
ZXIoKSkKKyAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNzKHV0aWwuX0RlZmxhdGVyKS5zZXRMZXZl
bChkZWZsYXRlX2xvZ19sZXZlbF9uYW1lKQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRp
bC5fSW5mbGF0ZXIpLnNldExldmVsKGRlZmxhdGVfbG9nX2xldmVsX25hbWUpCisKKworY2xhc3Mg
VGhyZWFkTW9uaXRvcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICBkYWVtb24gPSBUcnVlCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgaW50ZXJ2YWxfaW5fc2VjKToKKyAgICAgICAgdGhyZWFkaW5n
LlRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSdUaHJlYWRNb25pdG9yJykKKworICAgICAgICBz
ZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxm
Ll9pbnRlcnZhbF9pbl9zZWMgPSBpbnRlcnZhbF9pbl9zZWMKKworICAgIGRlZiBydW4oc2VsZik6
CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0aHJlYWRfbmFtZV9saXN0ID0gW10K
KyAgICAgICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpOgorICAgICAg
ICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QuYXBwZW5kKHRocmVhZC5uYW1lKQorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oIiVkIGFjdGl2ZSB0aHJlYWRzOiAlcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4odGhyZWFkX25hbWVfbGlzdCkpCisgICAgICAg
ICAgICB0aW1lLnNsZWVwKHNlbGYuX2ludGVydmFsX2luX3NlYykKKworCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTA0MmM0OTZjNThhMjNiNmNlNGMyM2VlZTBiYTQ2MjA5NTQ1MjY3MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CkBAIC0wLDAgKzEsNDc4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiU3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVyLgorCitVc2UgdGhp
cyBmaWxlIHRvIGxhdW5jaCBweXdlYnNvY2tldCBhcyBhIHN0YW5kYWxvbmUgc2VydmVyLgorCisK
K0JBU0lDIFVTQUdFCis9PT09PT09PT09PQorCitHbyB0byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQg
cnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgWy1wIDx3c19w
b3J0Pl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy13IDx3ZWJz
b2NrX2hhbmRsZXJzPl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Wy1kIDxkb2N1bWVudF9yb290Pl0KKworPHdzX3BvcnQ+IGlzIHRoZSBwb3J0IG51bWJlciB0byB1
c2UgZm9yIHdzOi8vIGNvbm5lY3Rpb24uCisKKzxkb2N1bWVudF9yb290PiBpcyB0aGUgcGF0aCB0
byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgSFRNTCBmaWxlcy4KKworPHdlYnNvY2tfaGFuZGxlcnM+
IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxlcnMu
CitJZiBub3Qgc3BlY2lmaWVkLCA8ZG9jdW1lbnRfcm9vdD4gd2lsbCBiZSB1c2VkLiBTZWUgX19p
bml0X18ucHkgKG9yCitydW4gJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQpIGZvciBob3cgdG8gd3Jp
dGUgV2ViU29ja2V0IGhhbmRsZXJzLgorCitGb3IgbW9yZSBkZXRhaWwgYW5kIG90aGVyIG9wdGlv
bnMsIHJ1bgorCisgICQgcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC0taGVs
cAorCitvciBzZWUgX2J1aWxkX29wdGlvbl9wYXJzZXIgbWV0aG9kIGJlbG93LgorCitGb3IgdHJv
dWJsZSBzaG9vdGluZywgYWRkaW5nICItLWxvZ19sZXZlbCBkZWJ1ZyIgbWlnaHQgaGVscCB5b3Uu
CisKKworVFJZIERFTU8KKz09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBy
dW4gc3RhbmRhbG9uZS5weSB3aXRoIC1kIG9wdGlvbiB0byBzZXQgdGhlCitkb2N1bWVudCByb290
IHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBleGFtcGxlIEhUTUxzIGFuZCBoYW5kbGVycyBs
aWtlIHRoaXM6CisKKyAgJCBjZCBzcmMKKyAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdl
YnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUKKwordG8gbGF1bmNoIHB5d2Vic29ja2V0
IHdpdGggdGhlIHNhbXBsZSBoYW5kbGVyIGFuZCBodG1sIG9uIHBvcnQgODAuIE9wZW4KK2h0dHA6
Ly9sb2NhbGhvc3QvY29uc29sZS5odG1sLCBjbGljayB0aGUgY29ubmVjdCBidXR0b24sIHR5cGUg
c29tZXRoaW5nIGludG8KK3RoZSB0ZXh0IGJveCBuZXh0IHRvIHRoZSBzZW5kIGJ1dHRvbiBhbmQg
Y2xpY2sgdGhlIHNlbmQgYnV0dG9uLiBJZiBldmVyeXRoaW5nCitpcyB3b3JraW5nLCB5b3UnbGwg
c2VlIHRoZSBtZXNzYWdlIHlvdSB0eXBlZCBlY2hvZWQgYnkgdGhlIHNlcnZlci4KKworCitVU0lO
RyBUTFMKKz09PT09PT09PQorCitUbyBydW4gdGhlIHN0YW5kYWxvbmUgc2VydmVyIHdpdGggVExT
IHN1cHBvcnQsIHJ1biBpdCB3aXRoIC10LCAtaywgYW5kIC1jCitvcHRpb25zLiBXaGVuIFRMUyBp
cyBlbmFibGVkLCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgYWNjZXB0cyBvbmx5IFRMUyBjb25uZWN0
aW9uLgorCitOb3RlIHRoYXQgd2hlbiBzc2wgbW9kdWxlIGlzIHVzZWQgYW5kIHRoZSBrZXkvY2Vy
dCBsb2NhdGlvbiBpcyBpbmNvcnJlY3QsCitUTFMgY29ubmVjdGlvbiBzaWxlbnRseSBmYWlscyB3
aGlsZSBweU9wZW5TU0wgZmFpbHMgb24gc3RhcnR1cC4KKworRXhhbXBsZToKKworICAkIFBZVEhP
TlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgXAorICAgICAgICAt
ZCBleGFtcGxlIFwKKyAgICAgICAgLXAgMTA0NDMgXAorICAgICAgICAtdCBcCisgICAgICAgIC1j
IC4uL3Rlc3QvY2VydC9jZXJ0LnBlbSBcCisgICAgICAgIC1rIC4uL3Rlc3QvY2VydC9rZXkucGVt
IFwKKworTm90ZSB0aGF0IHdoZW4gcGFzc2luZyBhIHJlbGF0aXZlIHBhdGggdG8gLWMgYW5kIC1r
IG9wdGlvbiwgaXQgd2lsbCBiZSByZXNvbHZlZAordXNpbmcgdGhlIGRvY3VtZW50IHJvb3QgZGly
ZWN0b3J5IGFzIHRoZSBiYXNlLgorCisKK1VTSU5HIENMSUVOVCBBVVRIRU5USUNBVElPTgorPT09
PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIg
d2l0aCBUTFMgY2xpZW50IGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQsIHJ1biBpdCB3aXRoCistLXRs
cy1jbGllbnQtYXV0aCBhbmQgLS10bHMtY2xpZW50LWNhIG9wdGlvbnMgaW4gYWRkaXRpb24gdG8g
b25lcyByZXF1aXJlZCBmb3IKK1RMUyBzdXBwb3J0LgorCitFeGFtcGxlOgorCisgICQgUFlUSE9O
UEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtZCBleGFtcGxlIC1w
IDEwNDQzIC10IFwKKyAgICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIC1rIC4uL3Rlc3Qv
Y2VydC9rZXkucGVtIFwKKyAgICAgICAgLS10bHMtY2xpZW50LWF1dGggXAorICAgICAgICAtLXRs
cy1jbGllbnQtY2E9Li4vdGVzdC9jZXJ0L2NhY2VydC5wZW0KKworTm90ZSB0aGF0IHdoZW4gcGFz
c2luZyBhIHJlbGF0aXZlIHBhdGggdG8gLS10bHMtY2xpZW50LWNhIG9wdGlvbiwgaXQgd2lsbCBi
ZQorcmVzb2x2ZWQgdXNpbmcgdGhlIGRvY3VtZW50IHJvb3QgZGlyZWN0b3J5IGFzIHRoZSBiYXNl
LgorCisKK0NPTkZJR1VSQVRJT04gRklMRQorPT09PT09PT09PT09PT09PT09CisKK1lvdSBjYW4g
YWxzbyB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgdXNlIGl0IGJ5IHNwZWNpZnlpbmcg
dGhlIHBhdGggdG8KK3RoZSBjb25maWd1cmF0aW9uIGZpbGUgYnkgLS1jb25maWcgb3B0aW9uLiBQ
bGVhc2Ugd3JpdGUgYSBjb25maWd1cmF0aW9uIGZpbGUKK2ZvbGxvd2luZyB0aGUgZG9jdW1lbnRh
dGlvbiBvZiB0aGUgUHl0aG9uIENvbmZpZ1BhcnNlciBsaWJyYXJ5LiBOYW1lIG9mIGVhY2gKK2Vu
dHJ5IG11c3QgYmUgdGhlIGxvbmcgdmVyc2lvbiBhcmd1bWVudCBuYW1lLiBFLmcuIHRvIHNldCBs
b2cgbGV2ZWwgdG8gZGVidWcsCithZGQgdGhlIGZvbGxvd2luZyBsaW5lOgorCitsb2dfbGV2ZWw9
ZGVidWcKKworRm9yIG9wdGlvbnMgd2hpY2ggZG9lc24ndCB0YWtlIHZhbHVlLCBwbGVhc2UgYWRk
IHNvbWUgZmFrZSB2YWx1ZS4gRS5nLiBmb3IKKy0tdGxzIG9wdGlvbiwgYWRkIHRoZSBmb2xsb3dp
bmcgbGluZToKKwordGxzPVRydWUKKworTm90ZSB0aGF0IHRscyB3aWxsIGJlIGVuYWJsZWQgZXZl
biBpZiB5b3Ugd3JpdGUgdGxzPUZhbHNlIGFzIHRoZSB2YWx1ZSBwYXJ0IGlzCitmYWtlLgorCitX
aGVuIGJvdGggYSBjb21tYW5kIGxpbmUgYXJndW1lbnQgYW5kIGEgY29uZmlndXJhdGlvbiBmaWxl
IGVudHJ5IGFyZSBzZXQgZm9yCit0aGUgc2FtZSBjb25maWd1cmF0aW9uIGl0ZW0sIHRoZSBjb21t
YW5kIGxpbmUgdmFsdWUgd2lsbCBvdmVycmlkZSBvbmUgaW4gdGhlCitjb25maWd1cmF0aW9uIGZp
bGUuCisKKworVEhSRUFESU5HCis9PT09PT09PT0KKworVGhpcyBzZXJ2ZXIgaXMgZGVyaXZlZCBm
cm9tIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi4gSGVuY2UgYSB0aHJlYWQgaXMKK3VzZWQg
Zm9yIGVhY2ggcmVxdWVzdC4KKworCitTRUNVUklUWSBXQVJOSU5HCis9PT09PT09PT09PT09PT09
CisKK1RoaXMgdXNlcyBDR0lIVFRQU2VydmVyIGFuZCBDR0lIVFRQU2VydmVyIGlzIG5vdCBzZWN1
cmUuCitJdCBtYXkgZXhlY3V0ZSBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgb3IgZXh0ZXJuYWwgcHJv
Z3JhbXMuIEl0IHNob3VsZCBub3QgYmUKK3VzZWQgb3V0c2lkZSBhIGZpcmV3YWxsLgorIiIiCisK
K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIHNpeC5tb3ZlcyBp
bXBvcnQgY29uZmlncGFyc2VyCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgbG9nZ2luZworaW1wb3J0
IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKKworZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBzZXJ2ZXJfdXRpbAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQud2Vic29ja2V0X3NlcnZlciBpbXBvcnQgV2ViU29ja2V0U2VydmVyCisK
K19ERUZBVUxUX0xPR19NQVhfQllURVMgPSAxMDI0ICogMjU2CitfREVGQVVMVF9MT0dfQkFDS1VQ
X0NPVU5UID0gNQorCitfREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUgPSAxMjgKKworCitkZWYg
X2J1aWxkX29wdGlvbl9wYXJzZXIoKToKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIoKQorCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tY29uZmlnJywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdjb25maWdfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
c3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1BhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlLiBTZWUgdGhlIGZp
bGUgY29tbWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHRoZSB0b3Agb2Yg
dGhpcyBmaWxlIGZvciB0aGUgY29uZmlndXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2ZpbGUgZm9ybWF0JykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1IJywKKyAgICAg
ICAgICAgICAgICAgICAgICAnLS1zZXJ2ZXItaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAg
Jy0tc2VydmVyX2hvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9ob3N0
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byBsaXN0ZW4gdG8nKQorICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctVicsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbi1ob3N0JywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX2hvc3QnLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25faG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBob3N0bmFt
ZSB0byB2YWxpZGF0ZSBpbiBhYnNvbHV0ZSBwYXRoLicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy1wJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSdwb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Y29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JU
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLVAnLAorICAgICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRp
b24tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbl9wb3J0JywKKyAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX3BvcnQnLAorICAgICAgICAgICAg
ICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBwb3J0IHRvIHZhbGlkYXRlIGlu
IGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXcnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMnLAorICAgICAgICAgICAgICAgICAgICAg
ICctLXdlYnNvY2tfaGFuZGxlcnMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dlYnNv
Y2tfaGFuZGxlcnMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy4nLAorICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgV2ViU29ja2V0IGhh
bmRsZXIgZmlsZXMuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhlIHBhdGgg
aXMgcmVsYXRpdmUsIC0tZG9jdW1lbnQtcm9vdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnYXMgdGhlIGJhc2UuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywK
KyAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1maWxlJywKKyAg
ICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlJywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlJywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ1dlYlNvY2tldCBoYW5kbGVycyBtYXAgZmlsZS4gJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdFYWNoIGxpbmUgY29uc2lzdHMgb2YgYWxpYXNfcmVzb3VyY2VfcGF0aCBhbmQgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdGluZ19yZXNvdXJjZV9wYXRoLCBzZXBh
cmF0ZWQgYnkgc3BhY2VzLicpKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsCisgICAgICAg
ICAgICAgICAgICAgICAgJy0tc2Nhbi1kaXInLAorICAgICAgICAgICAgICAgICAgICAgICctLXNj
YW5fZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzY2FuX2RpcicsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdNdXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIC0td2Vic29jay1oYW5kbGVycy4gJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdPbmx5IGhhbmRsZXJzIHVuZGVyIHRoaXMgZGlyZWN0b3J5
IGFyZSBzY2FubmVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIHJlZ2lzdGVy
ZWQgdG8gdGhlIHNlcnZlci4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VmdWwg
Zm9yIHNhdmluZyBzY2FuIHRpbWUgd2hlbiB0aGUgaGFuZGxlciAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Jvb3QgZGlyZWN0b3J5IGNvbnRhaW5zIGxvdHMgb2YgZmlsZXMgdGhhdCBh
cmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgaGFuZGxlciBmaWxlIG9yIGFy
ZSBoYW5kbGVyIGZpbGVzIGJ1dCB5b3UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk
b25cJ3Qgd2FudCB0aGVtIHRvIGJlIHJlZ2lzdGVyZWQuICcpKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWFsbG93LWhhbmRsZXJzLW91dHNpZGUtcm9vdC1kaXInLAorICAgICAgICAgICAgICAg
ICAgICAgICctLWFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J2FsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAorICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnU2NhbnMgV2Vi
U29ja2V0IGhhbmRsZXJzIGV2ZW4gaWYgdGhlaXIgY2Fub25pY2FsICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncGF0aCBpcyBub3QgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLicpKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tZG9j
dW1lbnQtcm9vdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tZG9jdW1lbnRfcm9vdCcsCisg
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZG9jdW1lbnRfcm9vdCcsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nLicsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRG9jdW1l
bnQgcm9vdCBkaXJlY3RvcnkuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXgnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLWNnaS1wYXRocycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
Y2dpX3BhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZ2lfcGF0aHMnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSgnQ0dJIHBhdGhzIHJlbGF0aXZlIHRvIGRvY3VtZW50X3Jvb3QuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdDb21tYS1zZXBhcmF0ZWQuIChlLmcgLXggL2NnaSwvaHRiaW4pICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZXMgdW5kZXIgZG9jdW1lbnRfcm9vdC9j
Z2lfcGF0aCBhcmUgaGFuZGxlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIENH
SSBwcm9ncmFtcy4gTXVzdCBiZSBleGVjdXRhYmxlLicpKQorICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGxzJywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSd1c2VfdGxzJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3Jl
X3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0ndXNlIFRMUyAod3NzOi8vKScpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1rJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1wcml2YXRlLWtleScsCisgICAgICAg
ICAgICAgICAgICAgICAgJy0tcHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3ByaXZhdGVfa2V5JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J1RMUyBwcml2YXRlIGtleSBmaWxlLicpCisgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1jJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZXJ0aWZpY2F0
ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY2VydGlmaWNhdGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVExT
IGNlcnRpZmljYXRlIGZpbGUuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50
LWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfYXV0aCcsCisg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1JlcXVl
c3RzIFRMUyBjbGllbnQgYXV0aCBvbiBldmVyeSBjb25uZWN0aW9uLicpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tdGxzLWNsaWVudC1jZXJ0LW9wdGlvbmFsJywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSd0bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnTWFrZXMgY2xpZW50IGNlcnRpZmlj
YXRlIG9wdGlvbmFsIGV2ZW4gdGhvdWdoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
VExTIGNsaWVudCBhdXRoIGlzIGVuYWJsZWQuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
dGxzLWNsaWVudC1jYScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9j
YScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSgnU3BlY2lmaWVzIGEgcGVtIGZpbGUgd2hpY2ggY29udGFpbnMgYSBzZXQgb2Yg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25jYXRlbmF0ZWQgQ0EgY2VydGlmaWNh
dGVzIHdoaWNoIGFyZSB1c2VkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFs
aWRhdGUgY2VydGlmaWNhdGVzIHBhc3NlZCBmcm9tIGNsaWVudHMnKSkKKyAgICBwYXJzZXIuYWRk
X29wdGlvbignLS1iYXNpYy1hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2Vf
YmFzaWNfYXV0aCcsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1JlcXVpcmVzIEJhc2ljIGF1dGhlbnRpY2F0aW9uLicpCisgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tYmFzaWMtYXV0aC1jcmVkZW50aWFsJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdiYXNpY19hdXRoX2NyZWRlbnRpYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9J3Rlc3Q6dGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmaWVz
IHRoZSBjcmVkZW50aWFsIG9mIGJhc2ljIGF1dGhlbnRpY2F0aW9uICcKKyAgICAgICAgICAgICAg
ICAgICAgICAnYnkgdXNlcm5hbWU6cGFzc3dvcmQgcGFpciAoZS5nLiB0ZXN0OnRlc3QpLicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1sJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2ct
ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbG9nX2ZpbGUnLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J2xvZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PScnLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBmaWxlLicpCisgICAgIyBDdXN0
b20gbG9nIGxldmVsOgorICAgICMgLSBGSU5FOiBQcmludHMgc3RhdHVzIG9mIGVhY2ggZnJhbWUg
cHJvY2Vzc2luZyBzdGVwCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywKKyAg
ICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAg
IHR5cGU9J2Nob2ljZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbG9nX2xldmVsJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgICAgICAgICAg
ICAgICBjaG9pY2VzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmUnLCAnZGVidWcn
LCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY3JpdGljYWwnCisgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAg
ICAgICAgJy0tZGVmbGF0ZS1sb2ctbGV2ZWwnLAorICAgICAgICAnLS1kZWZsYXRlX2xvZ19sZXZl
bCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGRlc3Q9J2RlZmxhdGVfbG9nX2xl
dmVsJywKKyAgICAgICAgZGVmYXVsdD0nd2FybicsCisgICAgICAgIGNob2ljZXM9WydkZWJ1Zycs
ICdpbmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsICdjcml0aWNhbCddLAorICAgICAg
ICBoZWxwPSdMb2cgbGV2ZWwgZm9yIF9EZWZsYXRlciBhbmQgX0luZmxhdGVyLicpCisgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy0tdGhyZWFkLW1vbml0b3ItaW50ZXJ2YWwtaW4tc2VjJywKKyAgICAg
ICAgICAgICAgICAgICAgICAnLS10aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycs
CisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PS0xLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdJZiBwb3NpdGl2ZSBp
bnRlZ2VyIGlzIHNwZWNpZmllZCwgcnVuIGEgdGhyZWFkICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2RpY2FsbHkgaW4gdGhlIHNwZWNpZmll
ZCBpbnRldmFsIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Vjb25kLiBJZiBu
b24tcG9zaXRpdmUgaW50ZWdlciBpcyBzcGVjaWZpZWQsICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZGlzYWJsZSB0aGUgdGhyZWFkIG1vbml0b3IuJykpCisgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tbG9nLW1heCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbG9nX21heCcsCisg
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbG9nX21heCcsCisgICAgICAgICAgICAgICAgICAg
ICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0xP
R19NQVhfQllURVMsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIG1heGltdW0gYnl0
ZXMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1jb3VudCcsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0tbG9nX2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2df
Y291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9MT0dfQkFDS1VQX0NPVU5ULAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J0xvZyBiYWNrdXAgY291bnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctcScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tcXVldWUnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3JlcXVlc3RfcXVldWVfc2l6ZScsCisgICAgICAgICAgICAgICAgICAgICAg
dHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX1JFUVVF
U1RfUVVFVUVfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZXF1ZXN0IHF1ZXVl
IHNpemUnKQorCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2RlZiBfcGFyc2VfYXJnc19hbmRfY29u
ZmlnKGFyZ3MpOgorICAgIHBhcnNlciA9IF9idWlsZF9vcHRpb25fcGFyc2VyKCkKKworICAgICMg
Rmlyc3QsIHBhcnNlIG9wdGlvbnMgd2l0aG91dCBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgdGVt
cG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncz1h
cmdzKQorICAgIGlmIHRlbXBvcmFyeV9hcmdzOgorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdV
bnJlY29nbml6ZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICVyJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wb3JhcnlfYXJncykKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGlmIHRl
bXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBj
b25maWdfZnAgPSBvcGVuKHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlLCAncicpCisgICAg
ICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdG
YWlsZWQgdG8gb3BlbiBjb25maWd1cmF0aW9uIGZpbGUgJXI6ICVyJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsIGUpCisgICAgICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGNvbmZpZ19wYXJzZXIgPSBjb25maWdwYXJzZXIu
U2FmZUNvbmZpZ1BhcnNlcigpCisgICAgICAgIGNvbmZpZ19wYXJzZXIucmVhZGZwKGNvbmZpZ19m
cCkKKyAgICAgICAgY29uZmlnX2ZwLmNsb3NlKCkKKworICAgICAgICBhcmdzX2Zyb21fY29uZmln
ID0gW10KKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGNvbmZpZ19wYXJzZXIuaXRlbXMoJ3B5
d2Vic29ja2V0Jyk6CisgICAgICAgICAgICBhcmdzX2Zyb21fY29uZmlnLmFwcGVuZCgnLS0nICsg
bmFtZSkKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKHZhbHVlKQorICAgICAg
ICBpZiBhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZpZwor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJncyA9IGFyZ3NfZnJvbV9jb25maWcgKyBhcmdz
CisgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3MpCisgICAgZWxzZToK
KyAgICAgICAgcmV0dXJuIHRlbXBvcmFyeV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJncworCisKK2Rl
ZiBfbWFpbihhcmdzPU5vbmUpOgorICAgICIiIllvdSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGZy
b20geW91ciBvd24gcHJvZ3JhbSwgYnV0IHBsZWFzZSBub3RlIHRoYXQKKyAgICB0aGlzIGZ1bmN0
aW9uIGhhcyBzb21lIHNpZGUtZWZmZWN0cyB0aGF0IG1pZ2h0IGFmZmVjdCB5b3VyIHByb2dyYW0u
IEZvcgorICAgIGV4YW1wbGUsIHV0aWwud3JhcF9wb3BlbjNfZm9yX3dpbiB1c2UgaW4gdGhpcyBt
ZXRob2QgcmVwbGFjZXMgaW1wbGVtZW50YXRpb24KKyAgICBvZiBvcy5wb3BlbjMuCisgICAgIiIi
CisKKyAgICBvcHRpb25zLCBhcmdzID0gX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhhcmdzPWFyZ3Mp
CisKKyAgICBvcy5jaGRpcihvcHRpb25zLmRvY3VtZW50X3Jvb3QpCisKKyAgICBzZXJ2ZXJfdXRp
bC5jb25maWd1cmVfbG9nZ2luZyhvcHRpb25zKQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2xl
YW4gdXAgaW5pdGlhbGl6YXRpb24gb2YgQ0dJIHJlbGF0ZWQgdmFsdWVzLiBNb3ZlIHNvbWUKKyAg
ICAjIG9mIGNvZGUgaGVyZSB0byBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBjbGFzcyBpZiBpdCdz
IGJldHRlci4KKyAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IFtdCisgICAgb3B0aW9ucy5p
c19leGVjdXRhYmxlX21ldGhvZCA9IE5vbmUKKyAgICBpZiBvcHRpb25zLmNnaV9wYXRoczoKKyAg
ICAgICAgb3B0aW9ucy5jZ2lfZGlyZWN0b3JpZXMgPSBvcHRpb25zLmNnaV9wYXRocy5zcGxpdCgn
LCcpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgorICAg
ICAgICAgICAgY3lnd2luX3BhdGggPSBOb25lCisgICAgICAgICAgICAjIEZvciBXaW4zMiBQeXRo
b24sIGl0IGlzIGV4cGVjdGVkIHRoYXQgQ1lHV0lOX1BBVEgKKyAgICAgICAgICAgICMgaXMgc2V0
IHRvIGEgZGlyZWN0b3J5IG9mIGN5Z3dpbiBiaW5hcmllcy4KKyAgICAgICAgICAgICMgRm9yIGV4
YW1wbGUsIHdlYnNvY2tldF9zZXJ2ZXIucHkgaW4gQ2hyb21pdW0gc2V0cyBDWUdXSU5fUEFUSCB0
bworICAgICAgICAgICAgIyBmdWxsIHBhdGggb2YgdGhpcmRfcGFydHkvY3lnd2luL2Jpbi4KKyAg
ICAgICAgICAgIGlmICdDWUdXSU5fUEFUSCcgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAg
ICBjeWd3aW5fcGF0aCA9IG9zLmVudmlyb25bJ0NZR1dJTl9QQVRIJ10KKyAgICAgICAgICAgIHV0
aWwud3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0aCkKKworICAgICAgICAgICAgZGVmIF9f
Y2hlY2tfc2NyaXB0KHNjcmlwdHBhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiB1dGlsLmdl
dF9zY3JpcHRfaW50ZXJwKHNjcmlwdHBhdGgsIGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAgICBv
cHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gX19jaGVja19zY3JpcHQKKworICAgIGlmIG9w
dGlvbnMudXNlX3RsczoKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgc3NsIG1vZHVsZScp
CisKKyAgICAgICAgaWYgbm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMuY2Vy
dGlmaWNhdGU6CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAorICAgICAgICAgICAgICAg
ICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVfa2V5IGFuZCBjZXJ0aWZpY2F0ZS4nKQorICAg
ICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiAob3B0aW9ucy50bHNfY2xpZW50X2Nl
cnRfb3B0aW9uYWwgYW5kIG5vdCBvcHRpb25zLnRsc19jbGllbnRfYXV0aCk6CisgICAgICAgICAg
ICBsb2dnaW5nLmNyaXRpY2FsKCdDbGllbnQgYXV0aGVudGljYXRpb24gbXVzdCBiZSBlbmFibGVk
IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnkgdGxzX2NsaWVudF9j
ZXJ0X29wdGlvbmFsJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgZWxzZToKKyAgICAg
ICAgaWYgb3B0aW9ucy50bHNfY2xpZW50X2F1dGg6CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRp
Y2FsKCdUTFMgbXVzdCBiZSBlbmFibGVkIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uJykKKyAg
ICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgaWYgb3B0aW9ucy50bHNfY2xpZW50X2Nl
cnRfb3B0aW9uYWw6CisgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdUTFMgbXVzdCBiZSBl
bmFibGVkIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uJykKKyAgICAgICAgICAgIHN5cy5leGl0
KDEpCisKKyAgICBpZiBub3Qgb3B0aW9ucy5zY2FuX2RpcjoKKyAgICAgICAgb3B0aW9ucy5zY2Fu
X2RpciA9IG9wdGlvbnMud2Vic29ja19oYW5kbGVycworCisgICAgaWYgb3B0aW9ucy51c2VfYmFz
aWNfYXV0aDoKKyAgICAgICAgb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWwgPSAnQmFzaWMg
JyArIGJhc2U2NC5iNjRlbmNvZGUoCisgICAgICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3Jl
ZGVudGlhbC5lbmNvZGUoJ1VURi04JykpLmRlY29kZSgpCisKKyAgICB0cnk6CisgICAgICAgIGlm
IG9wdGlvbnMudGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjID4gMDoKKyAgICAgICAgICAg
ICMgUnVuIGEgdGhyZWFkIG1vbml0b3IgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHNlcnZlciB0aHJl
YWRzIGZvcgorICAgICAgICAgICAgIyBkZWJ1Z2dpbmcuCisgICAgICAgICAgICBzZXJ2ZXJfdXRp
bC5UaHJlYWRNb25pdG9yKAorICAgICAgICAgICAgICAgIG9wdGlvbnMudGhyZWFkX21vbml0b3Jf
aW50ZXJ2YWxfaW5fc2VjKS5zdGFydCgpCisKKyAgICAgICAgc2VydmVyID0gV2ViU29ja2V0U2Vy
dmVyKG9wdGlvbnMpCisgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ21vZF9weXdlYnNvY2tl
dDogJXMnICUgZSkKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICBzeXMuZXhpdCgxKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX21haW4oc3lzLmFyZ3ZbMTpdKQorCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNv
Y2tldC9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFt
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZjMzk5ZjJhODViOWZlNmM1MmVjNTY5MGY1ODBkMDZiMjIyZTQ3NDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3Ry
ZWFtLnB5CkBAIC0wLDAgKzEsOTUwIEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgor
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBw
cm92aWRlcyBjbGFzc2VzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBwYXJzaW5nL2J1aWxkaW5n
IGZyYW1lcworb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLgorCitTcGVjaWZp
Y2F0aW9uOgoraHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQorIiIiCisKK2Zyb20g
Y29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgc3RydWN0CitpbXBvcnQgdGltZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHNpeAorCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBC
YWRPcGVyYXRpb25FeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0
aW9ucyBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vi
c29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRVVEY4
RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0
IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KKworX05PT1BfTUFTS0VSID0gdXRpbC5Ob29wTWFz
a2VyKCkKKworCitjbGFzcyBGcmFtZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLAor
ICAgICAgICAgICAgICAgICBmaW49MSwKKyAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAgICAg
ICAgICAgICAgICByc3YyPTAsCisgICAgICAgICAgICAgICAgIHJzdjM9MCwKKyAgICAgICAgICAg
ICAgICAgb3Bjb2RlPU5vbmUsCisgICAgICAgICAgICAgICAgIHBheWxvYWQ9YicnKToKKyAgICAg
ICAgc2VsZi5maW4gPSBmaW4KKyAgICAgICAgc2VsZi5yc3YxID0gcnN2MQorICAgICAgICBzZWxm
LnJzdjIgPSByc3YyCisgICAgICAgIHNlbGYucnN2MyA9IHJzdjMKKyAgICAgICAgc2VsZi5vcGNv
ZGUgPSBvcGNvZGUKKyAgICAgICAgc2VsZi5wYXlsb2FkID0gcGF5bG9hZAorCisKKyMgSGVscGVy
IGZ1bmN0aW9ucyBtYWRlIHB1YmxpYyB0byBiZSB1c2VkIGZvciB3cml0aW5nIHVuaXR0ZXN0cyBm
b3IgV2ViU29ja2V0CisjIGNsaWVudHMuCisKKworZGVmIGNyZWF0ZV9sZW5ndGhfaGVhZGVyKGxl
bmd0aCwgbWFzayk6CisgICAgIiIiQ3JlYXRlcyBhIGxlbmd0aCBoZWFkZXIuCisKKyAgICBBcmdz
OgorICAgICAgICBsZW5ndGg6IEZyYW1lIGxlbmd0aC4gTXVzdCBiZSBsZXNzIHRoYW4gMl42My4K
KyAgICAgICAgbWFzazogTWFzayBiaXQuIE11c3QgYmUgYm9vbGVhbi4KKworICAgIFJhaXNlczoK
KyAgICAgICAgVmFsdWVFcnJvcjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KKyAgICAiIiIKKwor
ICAgIGlmIG1hc2s6CisgICAgICAgIG1hc2tfYml0ID0gMSA8PCA3CisgICAgZWxzZToKKyAgICAg
ICAgbWFza19iaXQgPSAwCisKKyAgICBpZiBsZW5ndGggPCAwOgorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdsZW5ndGggbXVzdCBiZSBub24gbmVnYXRpdmUgaW50ZWdlcicpCisgICAgZWxpZiBs
ZW5ndGggPD0gMTI1OgorICAgICAgICByZXR1cm4gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBs
ZW5ndGgpCisgICAgZWxpZiBsZW5ndGggPCAoMSA8PCAxNik6CisgICAgICAgIHJldHVybiB1dGls
LnBhY2tfYnl0ZShtYXNrX2JpdCB8IDEyNikgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW5ndGgpCisg
ICAgZWxpZiBsZW5ndGggPCAoMSA8PCA2Myk6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0
ZShtYXNrX2JpdCB8IDEyNykgKyBzdHJ1Y3QucGFjaygnIVEnLCBsZW5ndGgpCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBpcyB0b28gYmlnIGZvciBvbmUgZnJh
bWUnKQorCisKK2RlZiBjcmVhdGVfaGVhZGVyKG9wY29kZSwgcGF5bG9hZF9sZW5ndGgsIGZpbiwg
cnN2MSwgcnN2MiwgcnN2MywgbWFzayk6CisgICAgIiIiQ3JlYXRlcyBhIGZyYW1lIGhlYWRlci4K
KworICAgIFJhaXNlczoKKyAgICAgICAgRXhjZXB0aW9uOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVu
LgorICAgICIiIgorCisgICAgaWYgb3Bjb2RlIDwgMCBvciAweGYgPCBvcGNvZGU6CisgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ09wY29kZSBvdXQgb2YgcmFuZ2UnKQorCisgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPCAwIG9yICgxIDw8IDYzKSA8PSBwYXlsb2FkX2xlbmd0aDoKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigncGF5bG9hZF9sZW5ndGggb3V0IG9mIHJhbmdlJykKKworICAgIGlmIChm
aW4gfCByc3YxIHwgcnN2MiB8IHJzdjMpICYgfjE6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ZJTiBiaXQgYW5kIFJlc2VydmVkIGJpdCBwYXJhbWV0ZXIgbXVzdCBiZSAwIG9yIDEnKQorCisg
ICAgaGVhZGVyID0gYicnCisKKyAgICBmaXJzdF9ieXRlID0gKChmaW4gPDwgNykKKyAgICAgICAg
ICAgICAgICAgIHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1KSB8IChyc3YzIDw8IDQpCisgICAg
ICAgICAgICAgICAgICB8IG9wY29kZSkKKyAgICBoZWFkZXIgKz0gdXRpbC5wYWNrX2J5dGUoZmly
c3RfYnl0ZSkKKyAgICBoZWFkZXIgKz0gY3JlYXRlX2xlbmd0aF9oZWFkZXIocGF5bG9hZF9sZW5n
dGgsIG1hc2spCisKKyAgICByZXR1cm4gaGVhZGVyCisKKworZGVmIF9idWlsZF9mcmFtZShoZWFk
ZXIsIGJvZHksIG1hc2spOgorICAgIGlmIG5vdCBtYXNrOgorICAgICAgICByZXR1cm4gaGVhZGVy
ICsgYm9keQorCisgICAgbWFza2luZ19ub25jZSA9IG9zLnVyYW5kb20oNCkKKyAgICBtYXNrZXIg
PSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCisKKyAgICByZXR1cm4gaGVh
ZGVyICsgbWFza2luZ19ub25jZSArIG1hc2tlci5tYXNrKGJvZHkpCisKKworZGVmIF9maWx0ZXJf
YW5kX2Zvcm1hdF9mcmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgorICAg
IGZvciBmcmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKKyAgICAgICAgZnJhbWVfZmlsdGVy
LmZpbHRlcihmcmFtZSkKKworICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoZnJhbWUub3Bjb2Rl
LCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCisgICAgcmV0dXJu
IF9idWlsZF9mcmFtZShoZWFkZXIsIGZyYW1lLnBheWxvYWQsIG1hc2spCisKKworZGVmIGNyZWF0
ZV9iaW5hcnlfZnJhbWUobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1j
b21tb24uT1BDT0RFX0JJTkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbj0xLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lX2ZpbHRlcnM9W10pOgorICAgICIiIkNyZWF0ZXMgYSBzaW1wbGUgYmluYXJ5IGZyYW1l
IHdpdGggbm8gZXh0ZW5zaW9uLCByZXNlcnZlZCBiaXQuIiIiCisKKyAgICBmcmFtZSA9IEZyYW1l
KGZpbj1maW4sIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9bWVzc2FnZSkKKyAgICByZXR1cm4gX2Zp
bHRlcl9hbmRfZm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycykK
KworCitkZWYgY3JlYXRlX3RleHRfZnJhbWUobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgIGZpbj0x
LAorICAgICAgICAgICAgICAgICAgICAgIG1hc2s9RmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0IGZyYW1l
IHdpdGggbm8gZXh0ZW5zaW9uLCByZXNlcnZlZCBiaXQuIiIiCisKKyAgICBlbmNvZGVkX21lc3Nh
Z2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2Zy
YW1lKGVuY29kZWRfbWVzc2FnZSwgb3Bjb2RlLCBmaW4sIG1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVycykKKworCitkZWYgcGFyc2VfZnJhbWUocmVjZWl2
ZV9ieXRlcywKKyAgICAgICAgICAgICAgICBsb2dnZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICB3
c192ZXJzaW9uPWNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULAorICAgICAgICAgICAgICAgIHVu
bWFza19yZWNlaXZlPVRydWUpOgorICAgICIiIlBhcnNlcyBhIGZyYW1lLiBSZXR1cm5zIGEgdHVw
bGUgY29udGFpbmluZyBlYWNoIGhlYWRlciBmaWVsZCBhbmQKKyAgICBwYXlsb2FkLgorCisgICAg
QXJnczoKKyAgICAgICAgcmVjZWl2ZV9ieXRlczogYSBmdW5jdGlvbiB0aGF0IHJlYWRzIGZyYW1l
IGRhdGEgZnJvbSBhIHN0cmVhbSBvcgorICAgICAgICAgICAgc29tZXRoaW5nIHNpbWlsYXIuIFRo
ZSBmdW5jdGlvbiB0YWtlcyBsZW5ndGggb2YgdGhlIGJ5dGVzIHRvIGJlCisgICAgICAgICAgICBy
ZWFkLiBUaGUgZnVuY3Rpb24gbXVzdCByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
biBpZgorICAgICAgICAgICAgdGhlcmUgaXMgbm90IGVub3VnaCBkYXRhIHRvIGJlIHJlYWQuCisg
ICAgICAgIGxvZ2dlcjogYSBsb2dnaW5nIG9iamVjdC4KKyAgICAgICAgd3NfdmVyc2lvbjogdGhl
IHZlcnNpb24gb2YgV2ViU29ja2V0IHByb3RvY29sLgorICAgICAgICB1bm1hc2tfcmVjZWl2ZTog
dW5tYXNrIHJlY2VpdmVkIGZyYW1lcy4gV2hlbiByZWNlaXZlZCB1bm1hc2tlZAorICAgICAgICAg
ICAgZnJhbWUsIHJhaXNlcyBJbnZhbGlkRnJhbWVFeGNlcHRpb24uCisKKyAgICBSYWlzZXM6Cisg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlY2VpdmVfYnl0ZXMg
cmFpc2VzIGl0LgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1l
IGNvbnRhaW5zIGludmFsaWQgZGF0YS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBsb2dnZXI6Cisg
ICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKworICAgIGxvZ2dlci5sb2coY29t
bW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIHRoZSBmaXJzdCAyIG9jdGV0cyBvZiBhIGZyYW1l
JykKKworICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZV9ieXRlcygxKSkKKyAgICBmaW4gPSAo
Zmlyc3RfYnl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCisg
ICAgcnN2MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+
PiA0KSAmIDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNvbmRfYnl0
ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAgIG1hc2sgPSAoc2Vjb25kX2J5dGUgPj4gNykg
JiAxCisgICAgcGF5bG9hZF9sZW5ndGggPSBzZWNvbmRfYnl0ZSAmIDB4N2YKKworICAgIGxvZ2dl
ci5sb2coCisgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRklOPSVzLCBSU1YxPSVzLCBS
U1YyPSVzLCBSU1YzPSVzLCBvcGNvZGU9JXMsICcKKyAgICAgICAgJ01hc2s9JXMsIFBheWxvYWRf
bGVuZ3RoPSVzJywgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIG1hc2ssCisgICAgICAg
IHBheWxvYWRfbGVuZ3RoKQorCisgICAgaWYgKG1hc2sgPT0gMSkgIT0gdW5tYXNrX3JlY2VpdmU6
CisgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdNYXNr
IGJpdCBvbiB0aGUgcmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKKyAgICAg
ICAgICAgICdjb25maWd1cmF0aW9uIGZvciByZWNlaXZlZCBmcmFtZXMnKQorCisgICAgIyBUaGUg
SHlCaSBhbmQgbGF0ZXIgc3BlY3MgZGlzYWxsb3cgcHV0dGluZyBhIHZhbHVlIGluIDB4MC0weEZG
RkYKKyAgICAjIGludG8gdGhlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQg
KG9yIDB4MC0weEZEIGluCisgICAgIyAyLW9jdGV0IGZpZWxkKS4KKyAgICB2YWxpZF9sZW5ndGhf
ZW5jb2RpbmcgPSBUcnVlCisgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMQorICAgIGlmIHBh
eWxvYWRfbGVuZ3RoID09IDEyNzoKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwKKyAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxv
YWQgbGVuZ3RoJykKKworICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVf
Ynl0ZXMoOCkKKyAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCchUScsIGV4
dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA+IDB4
N0ZGRkZGRkZGRkZGRkZGRjoKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlv
bignRXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggPj0gMl42MycpCisgICAgICAgIGlmIHdzX3ZlcnNp
b24gPj0gMTMgYW5kIHBheWxvYWRfbGVuZ3RoIDwgMHgxMDAwMDoKKyAgICAgICAgICAgIHZhbGlk
X2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCisgICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0
ZXMgPSA4CisKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ0RlY29k
ZWRfcGF5bG9hZF9sZW5ndGg9JXMnLAorICAgICAgICAgICAgICAgICAgIHBheWxvYWRfbGVuZ3Ro
KQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2OgorICAgICAgICBsb2dnZXIubG9nKGNv
bW1vbi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDItb2N0ZXQg
ZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVu
Z3RoID0gcmVjZWl2ZV9ieXRlcygyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51
bnBhY2soJyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHdzX3Zl
cnNpb24gPj0gMTMgYW5kIHBheWxvYWRfbGVuZ3RoIDwgMTI2OgorICAgICAgICAgICAgdmFsaWRf
bGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRl
cyA9IDIKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRGVjb2Rl
ZF9wYXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgp
CisKKyAgICBpZiBub3QgdmFsaWRfbGVuZ3RoX2VuY29kaW5nOgorICAgICAgICBsb2dnZXIud2Fy
bmluZygKKyAgICAgICAgICAgICdQYXlsb2FkIGxlbmd0aCBpcyBub3QgZW5jb2RlZCB1c2luZyB0
aGUgbWluaW1hbCBudW1iZXIgb2YgJworICAgICAgICAgICAgJ2J5dGVzICglZCBpcyBlbmNvZGVk
IHVzaW5nICVkIGJ5dGVzKScsIHBheWxvYWRfbGVuZ3RoLAorICAgICAgICAgICAgbGVuZ3RoX2Vu
Y29kaW5nX2J5dGVzKQorCisgICAgaWYgbWFzayA9PSAxOgorICAgICAgICBsb2dnZXIubG9nKGNv
bW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBtYXNrJykKKworICAgICAgICBtYXNraW5nX25v
bmNlID0gcmVjZWl2ZV9ieXRlcyg0KQorICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9y
TWFza2VyKG1hc2tpbmdfbm9uY2UpCisKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVW
RUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQorICAgIGVsc2U6CisgICAgICAgIG1h
c2tlciA9IF9OT09QX01BU0tFUgorCisgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklO
RSwgJ1JlY2VpdmUgcGF5bG9hZCBkYXRhJykKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNv
bW1vbi5MT0dMRVZFTF9GSU5FKToKKyAgICAgICAgcmVjZWl2ZV9zdGFydCA9IHRpbWUudGltZSgp
CisKKyAgICByYXdfcGF5bG9hZF9ieXRlcyA9IHJlY2VpdmVfYnl0ZXMocGF5bG9hZF9sZW5ndGgp
CisKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKKyAg
ICAgICAgbG9nZ2VyLmxvZygKKyAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRG9u
ZSByZWNlaXZpbmcgcGF5bG9hZCBkYXRhIGF0ICVzIE1CL3MnLAorICAgICAgICAgICAgcGF5bG9h
ZF9sZW5ndGggLyAodGltZS50aW1lKCkgLSByZWNlaXZlX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQor
ICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdVbm1hc2sgcGF5bG9hZCBkYXRh
JykKKworICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgor
ICAgICAgICB1bm1hc2tfc3RhcnQgPSB0aW1lLnRpbWUoKQorCisgICAgdW5tYXNrZWRfYnl0ZXMg
PSBtYXNrZXIubWFzayhyYXdfcGF5bG9hZF9ieXRlcykKKworICAgIGlmIGxvZ2dlci5pc0VuYWJs
ZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5M
T0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICdEb25lIHVubWFza2luZyBwYXlsb2Fk
IGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGggLyAo
dGltZS50aW1lKCkgLSB1bm1hc2tfc3RhcnQpIC8gMTAwMCAvIDEwMDApCisKKyAgICByZXR1cm4g
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzCisKKworY2xhc3Mg
RnJhZ21lbnRlZEZyYW1lQnVpbGRlcihvYmplY3QpOgorICAgICIiIkEgc3RhdGVmdWwgY2xhc3Mg
dG8gc2VuZCBhIG1lc3NhZ2UgYXMgZnJhZ21lbnRzLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBtYXNrLCBmcmFtZV9maWx0ZXJzPVtdLCBlbmNvZGVfdXRmOD1UcnVlKToKKyAgICAgICAgIiIi
Q29uc3RydWN0cyBhbiBpbnN0YW5jZS4iIiIKKworICAgICAgICBzZWxmLl9tYXNrID0gbWFzawor
ICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzID0gZnJhbWVfZmlsdGVycworICAgICAgICAjIFRo
aXMgaXMgZm9yIHNraXBwaW5nIFVURi04IGVuY29kaW5nIHdoZW4gYnVpbGRpbmcgdGV4dCB0eXBl
IGZyYW1lcworICAgICAgICAjIGZyb20gY29tcHJlc3NlZCBkYXRhLgorICAgICAgICBzZWxmLl9l
bmNvZGVfdXRmOCA9IGVuY29kZV91dGY4CisKKyAgICAgICAgc2VsZi5fc3RhcnRlZCA9IEZhbHNl
CisKKyAgICAgICAgIyBIb2xkIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhbWUgaW4gbWVzc2FnZXMg
dG8gdmVyaWZ5IHR5cGVzIG9mIG90aGVyCisgICAgICAgICMgZnJhbWVzIGluIHRoZSBtZXNzYWdl
IGFyZSBhbGwgdGhlIHNhbWUuCisgICAgICAgIHNlbGYuX29wY29kZSA9IGNvbW1vbi5PUENPREVf
VEVYVAorCisgICAgZGVmIGJ1aWxkKHNlbGYsIHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpOgor
ICAgICAgICBpZiBiaW5hcnk6CisgICAgICAgICAgICBmcmFtZV90eXBlID0gY29tbW9uLk9QQ09E
RV9CSU5BUlkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24u
T1BDT0RFX1RFWFQKKyAgICAgICAgaWYgc2VsZi5fc3RhcnRlZDoKKyAgICAgICAgICAgIGlmIHNl
bGYuX29wY29kZSAhPSBmcmFtZV90eXBlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiBmcmFtZXMgZm9yICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBtZXNzYWdlJykKKyAgICAgICAgICAg
IG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCisgICAgICAgICAgICBzZWxmLl9vcGNvZGUgPSBm
cmFtZV90eXBlCisKKyAgICAgICAgaWYgZW5kOgorICAgICAgICAgICAgc2VsZi5fc3RhcnRlZCA9
IEZhbHNlCisgICAgICAgICAgICBmaW4gPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLl9zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgZmluID0gMAorCisgICAgICAgIGlmIGJp
bmFyeSBvciBub3Qgc2VsZi5fZW5jb2RlX3V0Zjg6CisgICAgICAgICAgICByZXR1cm4gY3JlYXRl
X2JpbmFyeV9mcmFtZShwYXlsb2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVfdGV4dF9mcmFtZShwYXls
b2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMpCisKKworZGVmIF9jcmVhdGVfY29u
dHJvbF9mcmFtZShvcGNvZGUsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgorICAgIGZyYW1l
ID0gRnJhbWUob3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1ib2R5KQorCisgICAgZm9yIGZyYW1lX2Zp
bHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1l
KQorCisgICAgaWYgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1OgorICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29u
dHJvbCBmcmFtZXMgbXVzdCBiZSAxMjUgYnl0ZXMgb3IgbGVzcycpCisKKyAgICBoZWFkZXIgPSBj
cmVhdGVfaGVhZGVyKGZyYW1lLm9wY29kZSwgbGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFt
ZS5yc3YzLCBtYXNrKQorICAgIHJldHVybiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXls
b2FkLCBtYXNrKQorCisKK2RlZiBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBm
cmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1v
bi5PUENPREVfUElORywgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycykKKworCitkZWYgY3JlYXRl
X3BvbmdfZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6CisgICAgcmV0
dXJuIF9jcmVhdGVfY29udHJvbF9mcmFtZShjb21tb24uT1BDT0RFX1BPTkcsIGJvZHksIG1hc2ss
IGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zZV9mcmFtZShib2R5LCBtYXNrPUZh
bHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4gX2NyZWF0ZV9jb250cm9sX2ZyYW1l
KGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfY2xvc2luZ19oYW5kc2hh
a2VfYm9keShjb2RlLCByZWFzb24pOgorICAgIGJvZHkgPSBiJycKKyAgICBpZiBjb2RlIGlzIG5v
dCBOb25lOgorICAgICAgICBpZiAoY29kZSA+IGNvbW1vbi5TVEFUVVNfVVNFUl9QUklWQVRFX01B
WAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJF
KToKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUg
aXMgb3V0IG9mIHJhbmdlJykKKyAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNUQVRVU19OT19T
VEFUVVNfUkVDRUlWRUQKKyAgICAgICAgICAgICAgICBvciBjb2RlID09IGNvbW1vbi5TVEFUVVNf
QUJOT1JNQUxfQ0xPU1VSRQorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9uLlNUQVRV
U19UTFNfSEFORFNIQUtFKToKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bignU3RhdHVzIGNvZGUgaXMgcmVzZXJ2ZWQgcHNldWRvICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29kZScpCisgICAgICAgIGVuY29kZWRfcmVhc29uID0gcmVh
c29uLmVuY29kZSgndXRmLTgnKQorICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29k
ZSkgKyBlbmNvZGVkX3JlYXNvbgorICAgIHJldHVybiBib2R5CisKKworY2xhc3MgU3RyZWFtT3B0
aW9ucyhvYmplY3QpOgorICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29uZmlndXJlIFN0
cmVhbSBvYmplY3RzLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgIiIiQ29u
c3RydWN0cyBTdHJlYW1PcHRpb25zLiIiIgorCisgICAgICAgICMgRmlsdGVycyBhcHBsaWVkIHRv
IGZyYW1lcy4KKyAgICAgICAgc2VsZi5vdXRnb2luZ19mcmFtZV9maWx0ZXJzID0gW10KKyAgICAg
ICAgc2VsZi5pbmNvbWluZ19mcmFtZV9maWx0ZXJzID0gW10KKworICAgICAgICAjIEZpbHRlcnMg
YXBwbGllZCB0byBtZXNzYWdlcy4gQ29udHJvbCBmcmFtZXMgYXJlIG5vdCBhZmZlY3RlZCBieSB0
aGVtLgorICAgICAgICBzZWxmLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycyA9IFtdCisgICAgICAg
IHNlbGYuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKworICAgICAgICBzZWxmLmVuY29k
ZV90ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IFRydWUKKyAgICAgICAgc2VsZi5tYXNrX3NlbmQgPSBG
YWxzZQorICAgICAgICBzZWxmLnVubWFza19yZWNlaXZlID0gVHJ1ZQorCisKK2NsYXNzIFN0cmVh
bShvYmplY3QpOgorICAgICIiIkEgY2xhc3MgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9m
IHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wKKyAgICAoUkZDIDY0NTUpLgorICAgICIiIgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvcHRpb25zKToKKyAgICAgICAgIiIiQ29uc3RydWN0
cyBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9k
X3B5dGhvbiByZXF1ZXN0LgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0
aW9ucworICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorCisgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LnNl
cnZlcl90ZXJtaW5hdGVkID0gRmFsc2UKKworICAgICAgICAjIEhvbGRzIGJvZHkgb2YgcmVjZWl2
ZWQgZnJhZ21lbnRzLgorICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMgPSBbXQorICAg
ICAgICAjIEhvbGRzIHRoZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYWdtZW50LgorICAgICAgICBz
ZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBOb25lCisKKyAgICAgICAgc2VsZi5fd3JpdGVyID0gRnJh
Z21lbnRlZEZyYW1lQnVpbGRlcigKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubWFza19zZW5k
LCBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMsCisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9fdXRmOCkKKworICAgICAgICBzZWxmLl9w
aW5nX3F1ZXVlID0gZGVxdWUoKQorCisgICAgZGVmIF9yZWFkKHNlbGYsIGxlbmd0aCk6CisgICAg
ICAgICIiIlJlYWRzIGxlbmd0aCBieXRlcyBmcm9tIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0
Y2ggYW55IGV4Y2VwdGlvbiwKKyAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhl
IGV4Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVy
bnMgZW1wdHkgc3RyaW5nLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICByZWFkX2J5dGVzID0gc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQorICAg
ICAgICAgICAgaWYgbm90IHJlYWRfYnl0ZXM6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVj
dGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdSZWNlaXZpbmcg
JWQgYnl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9zZWQgY29ubmVjdGlvbicgJQorICAgICAgICAg
ICAgICAgICAgICAobGVuZ3RoLCAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRy
LCApKSkKKyAgICAgICAgICAgIHJldHVybiByZWFkX2J5dGVzCisgICAgICAgIGV4Y2VwdCBJT0Vy
cm9yIGFzIGU6CisgICAgICAgICAgICAjIEFsc28gY2F0Y2ggYW4gSU9FcnJvciBiZWNhdXNlIG1v
ZF9weXRob24gdGhyb3dzIGl0LgorICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0
ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4g
SU9FcnJvciAoJXMpIG9jY3VycmVkJyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgZSkpCisK
KyAgICBkZWYgX3dyaXRlKHNlbGYsIGJ5dGVzX3RvX3dyaXRlKToKKyAgICAgICAgIiIiV3JpdGVz
IGdpdmVuIGJ5dGVzIHRvIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4Y2VwdGlv
biwKKyAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlvbiBtZXNz
YWdlIGFuZCByYWlzZSBhZ2Fpbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKGJ5dGVzX3RvX3dyaXRlKQorICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3Nh
Z2UgdG8gJXI6ICcgJQorICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24u
cmVtb3RlX2FkZHIsICksIGUpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHJlY2VpdmVf
Ynl0ZXMoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiUmVjZWl2ZXMgbXVsdGlwbGUgYnl0ZXMu
IFJldHJpZXMgcmVhZCB3aGVuIHdlIGNvdWxkbid0IHJlY2VpdmUgdGhlCisgICAgICAgIHNwZWNp
ZmllZCBhbW91bnQuIFRoaXMgbWV0aG9kIHJldHVybnMgYnl0ZSBzdHJpbmdzLgorCisgICAgICAg
IFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVu
IHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHJlYWRf
Ynl0ZXMgPSBbXQorICAgICAgICB3aGlsZSBsZW5ndGggPiAwOgorICAgICAgICAgICAgbmV3X3Jl
YWRfYnl0ZXMgPSBzZWxmLl9yZWFkKGxlbmd0aCkKKyAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBw
ZW5kKG5ld19yZWFkX2J5dGVzKQorICAgICAgICAgICAgbGVuZ3RoIC09IGxlbihuZXdfcmVhZF9i
eXRlcykKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMpCisKKyAgICBkZWYgX3Jl
YWRfdW50aWwoc2VsZiwgZGVsaW1fY2hhcik6CisgICAgICAgICIiIlJlYWRzIGJ5dGVzIHVudGls
IHdlIGVuY291bnRlciBkZWxpbV9jaGFyLiBUaGUgcmVzdWx0IHdpbGwgbm90CisgICAgICAgIGNv
bnRhaW4gZGVsaW1fY2hhci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBDb25uZWN0
aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgor
ICAgICAgICAiIiIKKworICAgICAgICByZWFkX2J5dGVzID0gW10KKyAgICAgICAgd2hpbGUgVHJ1
ZToKKyAgICAgICAgICAgIGNoID0gc2VsZi5fcmVhZCgxKQorICAgICAgICAgICAgaWYgY2ggPT0g
ZGVsaW1fY2hhcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9ieXRl
cy5hcHBlbmQoY2gpCisgICAgICAgIHJldHVybiBiJycuam9pbihyZWFkX2J5dGVzKQorCisgICAg
ZGVmIF9yZWNlaXZlX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFu
ZCByZXR1cm4gZGF0YSBpbiB0aGUgZnJhbWUgYXMgYSB0dXBsZSBjb250YWluaW5nCisgICAgICAg
IGVhY2ggaGVhZGVyIGZpZWxkIGFuZCBwYXlsb2FkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5CisgICAgICAgICAgICAgICAgc3RyaW5nLgorICAgICAgICAgICAgSW52
YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEu
CisgICAgICAgICIiIgorICAgICAgICBkZWYgX3JlY2VpdmVfYnl0ZXMobGVuZ3RoKToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQorCisgICAgICAgIHJldHVy
biBwYXJzZV9mcmFtZShyZWNlaXZlX2J5dGVzPV9yZWNlaXZlX2J5dGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZ2VyPXNlbGYuX2xvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdzX3ZlcnNpb249c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5tYXNrX3JlY2VpdmU9c2VsZi5fb3B0aW9ucy51bm1hc2tfcmVjZWl2
ZSkKKworICAgIGRlZiBfcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qoc2VsZik6CisgICAg
ICAgIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IHNlbGYu
X3JlY2VpdmVfZnJhbWUoKQorCisgICAgICAgIHJldHVybiBGcmFtZShmaW49ZmluLAorICAgICAg
ICAgICAgICAgICAgICAgcnN2MT1yc3YxLAorICAgICAgICAgICAgICAgICAgICAgcnN2Mj1yc3Yy
LAorICAgICAgICAgICAgICAgICAgICAgcnN2Mz1yc3YzLAorICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPW9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ9dW5tYXNrZWRfYnl0
ZXMpCisKKyAgICBkZWYgcmVjZWl2ZV9maWx0ZXJlZF9mcmFtZShzZWxmKToKKyAgICAgICAgIiIi
UmVjZWl2ZXMgYSBmcmFtZSBhbmQgYXBwbGllcyBmcmFtZSBmaWx0ZXJzIGFuZCBtZXNzYWdlIGZp
bHRlcnMuCisgICAgICAgIFRoZSBmcmFtZSB0byBiZSByZWNlaXZlZCBtdXN0IHNhdGlzZnkgZm9s
bG93aW5nIGNvbmRpdGlvbnM6CisgICAgICAgIC0gVGhlIGZyYW1lIGlzIG5vdCBmcmFnbWVudGVk
LgorICAgICAgICAtIFRoZSBvcGNvZGUgb2YgdGhlIGZyYW1lIGlzIFRFWFQgb3IgQklOQVJZLgor
CisgICAgICAgIERPIE5PVCBVU0UgdGhpcyBtZXRob2QgZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBv
c2UuCisgICAgICAgICIiIgorCisgICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9mcmFtZV9h
c19mcmFtZV9vYmplY3QoKQorICAgICAgICBpZiBub3QgZnJhbWUuZmluOgorICAgICAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdTZWdtZW50ZWQg
ZnJhbWVzIG11c3Qgbm90IGJlIHJlY2VpdmVkIHZpYSAnCisgICAgICAgICAgICAgICAgJ3JlY2Vp
dmVfZmlsdGVyZWRfZnJhbWUoKScpCisgICAgICAgIGlmIChmcmFtZS5vcGNvZGUgIT0gY29tbW9u
Lk9QQ09ERV9URVhUCisgICAgICAgICAgICAgICAgYW5kIGZyYW1lLm9wY29kZSAhPSBjb21tb24u
T1BDT0RFX0JJTkFSWSk6CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIHJlY2VpdmVkIHZp
YSAnCisgICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmlsdGVyZWRfZnJhbWUoKScpCisKKyAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CisgICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQorICAgICAgICBmb3Ig
bWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6
CisgICAgICAgICAgICBmcmFtZS5wYXlsb2FkID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKGZyYW1l
LnBheWxvYWQpCisgICAgICAgIHJldHVybiBmcmFtZQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKKyAgICAgICAgIiIiU2VuZCBt
ZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBtZXNzYWdlOiB0ZXh0IGluIHVu
aWNvZGUgb3IgYmluYXJ5IGluIHN0ciB0byBzZW5kLgorICAgICAgICAgICAgYmluYXJ5OiBzZW5k
IG1lc3NhZ2UgYXMgYmluYXJ5IGZyYW1lLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAg
IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBjYWxsZWQgb24gYSBzZXJ2ZXItdGVybWluYXRl
ZAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gb3IgY2FsbGVkIHdpdGggaW5jb25zaXN0ZW50
IG1lc3NhZ2UgdHlwZSBvcgorICAgICAgICAgICAgICAgIGJpbmFyeSBwYXJhbWV0ZXIuCisgICAg
ICAgICIiIgorCisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Cisg
ICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAg
J1JlcXVlc3RlZCBzZW5kX21lc3NhZ2UgYWZ0ZXIgc2VuZGluZyBvdXQgYSBjbG9zaW5nIGhhbmRz
aGFrZScpCisKKyAgICAgICAgaWYgYmluYXJ5IGFuZCBpc2luc3RhbmNlKG1lc3NhZ2UsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdNZXNzYWdlIGZvciBiaW5hcnkgZnJhbWUgbXVzdCBub3QgYmUgaW5zdGFu
Y2Ugb2YgVW5pY29kZScpCisKKyAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29w
dGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgbWVzc2FnZSA9IG1l
c3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlLCBlbmQsIGJpbmFyeSkKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICAjIFNldCB0aGlzIHRvIGFueSBwb3NpdGl2ZSBpbnRlZ2VyIHRvIGxpbWl0
IG1heGltdW0gc2l6ZSBvZiBkYXRhIGluCisgICAgICAgICAgICAjIHBheWxvYWQgZGF0YSBvZiBl
YWNoIGZyYW1lLgorICAgICAgICAgICAgTUFYX1BBWUxPQURfREFUQV9TSVpFID0gLTEKKworICAg
ICAgICAgICAgaWYgTUFYX1BBWUxPQURfREFUQV9TSVpFIDw9IDA6CisgICAgICAgICAgICAgICAg
c2VsZi5fd3JpdGUoc2VsZi5fd3JpdGVyLmJ1aWxkKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiA9IDAKKyAg
ICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1l
ID0gZW5kCisgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBsZW4obWVzc2FnZSkgLSBi
eXRlc193cml0dGVuCisgICAgICAgICAgICAgICAgaWYgKE1BWF9QQVlMT0FEX0RBVEFfU0laRSA+
IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBieXRlc190b193cml0ZSA+IE1BWF9QQVlM
T0FEX0RBVEFfU0laRSk6CisgICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19mcmFtZSA9
IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dyaXRlID0gTUFYX1BBWUxPQURf
REFUQV9TSVpFCisKKyAgICAgICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3dyaXRlci5idWlsZCgK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVtieXRlc193cml0dGVuOmJ5dGVzX3dyaXR0ZW4g
KyBieXRlc190b193cml0ZV0sCisgICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19mcmFt
ZSwgYmluYXJ5KQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgICAg
ICAgICAgICAgYnl0ZXNfd3JpdHRlbiArPSBieXRlc190b193cml0ZQorCisgICAgICAgICAgICAg
ICAgIyBUaGlzIGlmIG11c3QgYmUgcGxhY2VkIGhlcmUgKHRoZSBlbmQgb2Ygd2hpbGUgYmxvY2sp
IHNvIHRoYXQKKyAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSBmcmFtZSBpcyBzZW50Lgor
ICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlKSA8PSBieXRlc193cml0dGVuOgorICAgICAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAg
ICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCisKKyAgICBkZWYgX2dldF9t
ZXNzYWdlX2Zyb21fZnJhbWUoc2VsZiwgZnJhbWUpOgorICAgICAgICAiIiJHZXRzIGEgbWVzc2Fn
ZSBmcm9tIGZyYW1lLiBJZiB0aGUgbWVzc2FnZSBpcyBjb21wb3NlZCBvZiBmcmFnbWVudGVkCisg
ICAgICAgIGZyYW1lcyBhbmQgdGhlIGZyYW1lIGlzIG5vdCB0aGUgbGFzdCBmcmFnbWVudGVkIGZy
YW1lLCB0aGlzIG1ldGhvZAorICAgICAgICByZXR1cm5zIE5vbmUuIFRoZSB3aG9sZSBtZXNzYWdl
IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiB0aGUgbGFzdAorICAgICAgICBmcmFnbWVudGVkIGZyYW1l
IGlzIHBhc3NlZCB0byB0aGlzIG1ldGhvZC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAg
ICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGRvZXNuJ3QgbWF0Y2ggZGVm
cmFnbWVudGF0aW9uCisgICAgICAgICAgICAgICAgY29udGV4dCwgb3IgdGhlIGZyYW1lIGNvbnRh
aW5zIGludmFsaWQgZGF0YS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgZnJhbWUub3Bjb2Rl
ID09IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgorICAgICAgICAgICAgaWYgbm90IHNlbGYu
X3JlY2VpdmVkX2ZyYWdtZW50czoKKyAgICAgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdSZWNlaXZlZCBhIHRlcm1pbmF0aW9uIGZyYW1lIGJ1dCBmcmFnbWVudGF0
aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdub3Qgc3RhcnRlZCcpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIGludGVybWVkaWF0ZSBm
cmFtZSBidXQgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYWdtZW50YXRpb24gbm90IHN0
YXJ0ZWQnKQorCisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAgIyBF
bmQgb2YgZnJhZ21lbnRhdGlvbiBmcmFtZQorICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVk
X2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKKyAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gYicnLmpvaW4oc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzKQorICAgICAgICAgICAgICAgIHNl
bGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJbnRlcm1lZGlhdGUgZnJh
bWUKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1l
LnBheWxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50czoKKyAgICAgICAgICAgICAgICBp
ZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhbiB1bmZyYWdtZW50ZWQg
ZnJhbWUgd2l0aG91dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAndGVybWluYXRpbmcgZXhp
c3RpbmcgZnJhZ21lbnRhdGlvbicpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgJ05ldyBmcmFnbWVudGF0aW9uIHN0YXJ0ZWQgd2l0aG91dCB0ZXJtaW5hdGluZyAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RpbmcgZnJhZ21lbnRhdGlvbicpCisKKyAgICAg
ICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAjIFVuZnJhZ21lbnRlZCBmcmFt
ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gZnJhbWUub3Bjb2Rl
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBheWxvYWQKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBmcmFnbWVudGF0aW9uIGZyYW1lCisKKyAgICAg
ICAgICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdtZW50ZWQnKQor
CisgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gZnJhbWUub3Bjb2RlCisg
ICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXls
b2FkKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3Byb2Nlc3NfY2xv
c2VfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiUHJvY2Vzc2VzIGNsb3NlIG1l
c3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IGNsb3NlIG1lc3Nh
Z2UuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9u
OiB3aGVuIHRoZSBtZXNzYWdlIGlzIGludmFsaWQuCisgICAgICAgICIiIgorCisgICAgICAgIHNl
bGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBUcnVlCisKKyAgICAgICAgIyBTdGF0dXMg
Y29kZSBpcyBvcHRpb25hbC4gV2UgY2FuIGhhdmUgc3RhdHVzIHJlYXNvbiBvbmx5IGlmIHdlCisg
ICAgICAgICMgaGF2ZSBzdGF0dXMgY29kZS4gU3RhdHVzIHJlYXNvbiBjYW4gYmUgZW1wdHkgc3Ry
aW5nLiBTbywKKyAgICAgICAgIyBhbGxvd2VkIGNhc2VzIGFyZQorICAgICAgICAjIC0gbm8gYXBw
bGljYXRpb24gZGF0YTogbm8gY29kZSBubyByZWFzb24KKyAgICAgICAgIyAtIDIgb2N0ZXQgb2Yg
YXBwbGljYXRpb24gZGF0YTogaGFzIGNvZGUgYnV0IG5vIHJlYXNvbgorICAgICAgICAjIC0gMyBv
ciBtb3JlIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGJvdGggY29kZSBhbmQgcmVhc29uCisg
ICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdSZWNlaXZlZCBjbG9zZSBmcmFtZSAoZW1wdHkgYm9keSknKQorICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gY29tbW9uLlNUQVRVU19OT19TVEFUVVNfUkVDRUlW
RUQKKyAgICAgICAgZWxpZiBsZW4obWVzc2FnZSkgPT0gMToKKyAgICAgICAgICAgIHJhaXNlIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFtZSBo
YXMgc3RhdHVzIGNvZGUsIHRoZSBsZW5ndGggb2YgJworICAgICAgICAgICAgICAgICdzdGF0dXMg
Y29kZSBtdXN0IGJlIDIgb2N0ZXQnKQorICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAyOgor
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFjaygn
IUgnLCBtZXNzYWdlWzA6Ml0pWzBdCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3Nl
X3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKKyAgICAgICAgICAgICAgICAndXRmLTgnLCAn
cmVwbGFjZScpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsb3Nl
IGZyYW1lIChjb2RlPSVkLCByZWFzb249JXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCisKKyAgICAgICAgIyBBcyB3
ZSd2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29taW5nIG92ZXIg
dGhlCisgICAgICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0aGUgc29ja2V0
IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKKyAgICAgICAgIyBSU1Qgc2VuZGluZy4KKworICAgICAg
ICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgorICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNlcnZlci1p
bml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBjbGllbnQtaW5pdGlhdGVkIGNsb3Npbmcg
aGFuZHNoYWtlJykKKworICAgICAgICBjb2RlID0gY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VS
RQorICAgICAgICByZWFzb24gPSAnJworICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX3JlcXVlc3Qs
ICdfZGlzcGF0Y2hlcicpOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IHNlbGYuX3JlcXVlc3Qu
X2Rpc3BhdGNoZXIKKyAgICAgICAgICAgIGNvZGUsIHJlYXNvbiA9IGRpc3BhdGNoZXIucGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgaWYgY29kZSBp
cyBOb25lIGFuZCByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgJ0hh
bmRsZXIgc3BlY2lmaWVkIHJlYXNvbiBkZXNwaXRlIGNvZGUgYmVpbmcgTm9uZScpCisgICAgICAg
ICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgICAgIGlmIHJlYXNvbiBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19oYW5k
c2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAg
ICAgICAnQWNrbm93bGVkZ2VkIGNsb3NpbmcgaGFuZHNoYWtlIGluaXRpYXRlZCBieSB0aGUgcGVl
ciAnCisgICAgICAgICAgICAnKGNvZGU9JXIsIHJlYXNvbj0lciknLCBjb2RlLCByZWFzb24pCisK
KyAgICBkZWYgX3Byb2Nlc3NfcGluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAi
IiJQcm9jZXNzZXMgcGluZyBtZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBt
ZXNzYWdlOiBwaW5nIG1lc3NhZ2UuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGhhbmRsZXIgPSBzZWxmLl9yZXF1ZXN0Lm9uX3BpbmdfaGFuZGxlcgorICAgICAgICAg
ICAgaWYgaGFuZGxlcjoKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNlbGYuX3JlcXVlc3QsIG1l
c3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fc2VuZF9wb25nKG1lc3NhZ2Up
CisKKyAgICBkZWYgX3Byb2Nlc3NfcG9uZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAg
ICAiIiJQcm9jZXNzZXMgcG9uZyBtZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg
ICBtZXNzYWdlOiBwb25nIG1lc3NhZ2UuCisgICAgICAgICIiIgorCisgICAgICAgICMgVE9ETyh0
eW9zaGlubyk6IEFkZCBwaW5nIHRpbWVvdXQgaGFuZGxpbmcuCisKKyAgICAgICAgaW5mbGlnaHRf
cGluZ3MgPSBkZXF1ZSgpCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBleHBlY3RlZF9ib2R5ID0gc2VsZi5fcGluZ19xdWV1ZS5wb3BsZWZ0
KCkKKyAgICAgICAgICAgICAgICBpZiBleHBlY3RlZF9ib2R5ID09IG1lc3NhZ2U6CisgICAgICAg
ICAgICAgICAgICAgICMgaW5mbGlnaHRfcGluZ3MgY29udGFpbnMgcGluZ3MgaWdub3JlZCBieSB0
aGUKKyAgICAgICAgICAgICAgICAgICAgIyBvdGhlciBwZWVyLiBKdXN0IGZvcmdldCB0aGVtLgor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAg
ICAgICAgICAnUGluZyAlciBpcyBhY2tlZCAoJWQgcGluZ3Mgd2VyZSBpZ25vcmVkKScsCisgICAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9ib2R5LCBsZW4oaW5mbGlnaHRfcGluZ3MpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGluZmxpZ2h0X3BpbmdzLmFwcGVuZChleHBlY3RlZF9ib2R5KQorICAgICAg
ICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgIyBUaGUgcmVjZWl2ZWQg
cG9uZyB3YXMgdW5zb2xpY2l0ZWQgcG9uZy4gS2VlcCB0aGUKKyAgICAgICAgICAgICAgICAjIHBp
bmcgcXVldWUgYXMgaXMuCisgICAgICAgICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGluZmxp
Z2h0X3BpbmdzCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBh
IHVuc29saWNpdGVkIHBvbmcnKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcG9uZ19oYW5kbGVyCisg
ICAgICAgICAgICBpZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVx
dWVzdCwgbWVzc2FnZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAg
ICAgcGFzcworCisgICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKKyAgICAgICAgIiIiUmVj
ZWl2ZSBhIFdlYlNvY2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFzIGEgdGV4dCBp
bgorICAgICAgICB1bmljb2RlIG9yIGEgYmluYXJ5IGluIHN0ci4KKworICAgICAgICBSZXR1cm5z
OgorICAgICAgICAgICAgcGF5bG9hZCBkYXRhIG9mIHRoZSBmcmFtZQorICAgICAgICAgICAgLSBh
cyB1bmljb2RlIGluc3RhbmNlIGlmIHJlY2VpdmVkIHRleHQgZnJhbWUKKyAgICAgICAgICAgIC0g
YXMgc3RyIGluc3RhbmNlIGlmIHJlY2VpdmVkIGJpbmFyeSBmcmFtZQorICAgICAgICAgICAgb3Ig
Tm9uZSBpZmYgcmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBjYWxsZWQgb24gYSBjbGllbnQt
dGVybWluYXRlZAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uCisgICAgICAgICAgICBDb25u
ZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkKKyAgICAg
ICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQKKyAgICAgICAgICAgICAgICBkYXRhLgorICAg
ICAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgcmVjZWl2ZWQgZnJh
bWUgaGFzCisgICAgICAgICAgICAgICAgZmxhZ3MsIG9wY29kZSB3ZSBjYW5ub3QgaGFuZGxlLiBZ
b3UgY2FuIGlnbm9yZSB0aGlzCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uIGFuZCBjb250aW51
ZSByZWNlaXZpbmcgdGhlIG5leHQgZnJhbWUuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIHNl
bGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVy
YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCByZWNlaXZlX21lc3Nh
Z2UgYWZ0ZXIgcmVjZWl2aW5nIGEgY2xvc2luZyAnCisgICAgICAgICAgICAgICAgJ2hhbmRzaGFr
ZScpCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgbXBfY29ubi5yZWFkIHdp
bGwgYmxvY2sgaWYgbm8gYnl0ZXMgYXJlIGF2YWlsYWJsZS4KKworICAgICAgICAgICAgZnJhbWUg
PSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCisKKyAgICAgICAgICAgICMg
Q2hlY2sgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBheWxvYWQgc2l6ZSBmb3IgY29udHJvbCBmcmFt
ZXMKKyAgICAgICAgICAgICMgYmVmb3JlIGV4dGVuc2lvbiBwcm9jZXNzZXMgdGhlIGZyYW1lLgor
ICAgICAgICAgICAgIyBTZWUgYWxzbyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1
I3NlY3Rpb24tNS41CisgICAgICAgICAgICBpZiAoY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZy
YW1lLm9wY29kZSkKKyAgICAgICAgICAgICAgICAgICAgYW5kIGxlbihmcmFtZS5wYXlsb2FkKSA+
IDEyNSk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVz
dCBiZSAxMjUgYnl0ZXMgb3IgJworICAgICAgICAgICAgICAgICAgICAnbGVzcycpCisKKyAgICAg
ICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9m
aWx0ZXJzOgorICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisKKyAg
ICAgICAgICAgIGlmIGZyYW1lLnJzdjEgb3IgZnJhbWUucnN2MiBvciBmcmFtZS5yc3YzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgICAgICdVbnN1cHBvcnRlZCBmbGFnIGlzIHNldCAocnN2ID0gJWQlZCVkKScgJQorICAg
ICAgICAgICAgICAgICAgICAoZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MykpCisK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKGZyYW1l
KQorICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmlu
Y29taW5nX21lc3NhZ2VfZmlsdGVyczoKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2Fn
ZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UpCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9PSBjb21tb24uT1BDT0RFX1RFWFQ6CisgICAgICAgICAgICAgICAgIyBUaGUgV2Vi
U29ja2V0IHByb3RvY29sIHNlY3Rpb24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQKKyAgICAg
ICAgICAgICAgICAjIGNoYXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZmZCBSRVBM
QUNFTUVOVAorICAgICAgICAgICAgICAgICMgQ0hBUkFDVEVSLgorICAgICAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UuZGVjb2RlKCd1dGYtOCcpCisg
ICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlOgorICAgICAgICAg
ICAgICAgICAgICByYWlzZSBJbnZhbGlkVVRGOEV4Y2VwdGlvbihlKQorICAgICAgICAgICAgZWxp
ZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9CSU5BUlk6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxf
b3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ0xPU0U6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJv
Y2Vzc19jbG9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVf
UElORzoKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3BpbmdfbWVzc2FnZShtZXNzYWdl
KQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09E
RV9QT05HOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcG9uZ19tZXNzYWdlKG1lc3Nh
Z2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVk
RnJhbWVFeGNlcHRpb24oJ09wY29kZSAlZCBpcyBub3Qgc3VwcG9ydGVkJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNv
ZGUpCisKKyAgICBkZWYgX3NlbmRfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgY29kZSwgcmVhc29u
KToKKyAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KGNvZGUsIHJl
YXNvbikKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfY2xvc2VfZnJhbWUoCisgICAgICAgICAgICBi
b2R5LAorICAgICAgICAgICAgbWFzaz1zZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAgICAgICAg
ICAgIGZyYW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0ZXJzKQor
CisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCisKKyAgICAg
ICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9Y29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VS
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb249JycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgd2FpdF9yZXNwb25zZT1UcnVlKToKKyAgICAgICAgIiIiQ2xvc2VzIGEgV2ViU29j
a2V0IGNvbm5lY3Rpb24uIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBibG9ja3MgdW50aWwKKyAgICAg
ICAgaXQgcmVjZWl2ZXMgYWNrbm93bGVkZ2VtZW50IHRvIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgY29kZTogU3RhdHVzIGNvZGUgZm9yIGNsb3Nl
IGZyYW1lLiBJZiBjb2RlIGlzIE5vbmUsIGEgY2xvc2UKKyAgICAgICAgICAgICAgICBmcmFtZSB3
aXRoIGVtcHR5IGJvZHkgd2lsbCBiZSBzZW50LgorICAgICAgICAgICAgcmVhc29uOiBzdHJpbmcg
cmVwcmVzZW50aW5nIGNsb3NlIHJlYXNvbi4KKyAgICAgICAgICAgIHdhaXRfcmVzcG9uc2U6IFRy
dWUgd2hlbiBjYWxsZXIgd2FudCB0byB3YWl0IHRoZSByZXNwb25zZS4KKyAgICAgICAgUmFpc2Vz
OgorICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHJlYXNvbiBpcyBzcGVj
aWZpZWQgd2l0aCBjb2RlIE5vbmUKKyAgICAgICAgICAgIG9yIHJlYXNvbiBpcyBub3QgYW4gaW5z
dGFuY2Ugb2YgYm90aCBzdHIgYW5kIHVuaWNvZGUuCisgICAgICAgICIiIgorCisgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9zZV9jb25uZWN0aW9uIGJ1
dCBzZXJ2ZXIgaXMgYWxyZWFkeSB0ZXJtaW5hdGVkJykKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgICMgV2hlbiB3ZSByZWNlaXZlIGEgY2xvc2UgZnJhbWUsIHdlIGNhbGwgX3Byb2Nlc3Nf
Y2xvc2VfbWVzc2FnZSgpLgorICAgICAgICAjIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2UoKSBpbW1l
ZGlhdGVseSBhY2tub3dsZWRnZXMgdG8gdGhlCisgICAgICAgICMgc2VydmVyLWluaXRpYXRlZCBj
bG9zaW5nIGhhbmRzaGFrZSBhbmQgc2V0cyBzZXJ2ZXJfdGVybWluYXRlZCB0bworICAgICAgICAj
IFRydWUuIFNvLCBoZXJlIHdlIGNhbiBhc3N1bWUgdGhhdCB3ZSBoYXZlbid0IHJlY2VpdmVkIGFu
eSBjbG9zZQorICAgICAgICAjIGZyYW1lLiBXZSdyZSBpbml0aWF0aW5nIGEgY2xvc2luZyBoYW5k
c2hha2UuCisKKyAgICAgICAgaWYgY29kZSBpcyBOb25lOgorICAgICAgICAgICAgaWYgcmVhc29u
IGlzIG5vdCBOb25lIGFuZCBsZW4ocmVhc29uKSA+IDA6CisgICAgICAgICAgICAgICAgcmFpc2Ug
QmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnY2xvc2UgcmVhc29u
IG11c3Qgbm90IGJlIHNwZWNpZmllZCBpZiBjb2RlIGlzIE5vbmUnKQorICAgICAgICAgICAgcmVh
c29uID0gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJl
YXNvbiwgYnl0ZXMpIGFuZCBub3QgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgICAgICAgICAgcmVh
c29uLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25F
eGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBieXRlcyBvciB1bmljb2RlJykKKworICAgICAgICBzZWxmLl9zZW5kX2Nsb3Np
bmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdJ
bml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UgKGNvZGU9JXIsIHJlYXNvbj0lciknLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZSwgcmVhc29uKQorCisgICAgICAgIGlmIChjb2RlID09
IGNvbW1vbi5TVEFUVVNfR09JTkdfQVdBWQorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29t
bW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUikgb3Igbm90IHdhaXRfcmVzcG9uc2U6CisgICAgICAg
ICAgICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lIGlm
IHRoZSByZWFzb24gaXMKKyAgICAgICAgICAgICMgcHJvdG9jb2wgZXJyb3Igb3IgdGhhdCB0aGUg
c2VydmVyIGlzIGdvaW5nIGF3YXkuIEZvciBzb21lIG9mCisgICAgICAgICAgICAjIG90aGVyIHJl
YXNvbnMsIGl0IG1pZ2h0IG5vdCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUs
CisgICAgICAgICAgICAjIGJ1dCBpdCdzIG5vdCBjbGVhciwgeWV0LgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgIyBUT0RPKHVrYWkpOiAyLiB3YWl0IHVudGlsIHRoZSAvY2xpZW50IHRl
cm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0LAorICAgICAgICAjIG9yIHVudGlsIGEgc2VydmVy
LWRlZmluZWQgdGltZW91dCBleHBpcmVzLgorICAgICAgICAjCisgICAgICAgICMgRm9yIG5vdywg
d2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5nIGhhbmRzaGFrZSByaWdodCBhZnRlciBzZW5kaW5n
CisgICAgICAgICMgb3V0IGNsb3NpbmcgaGFuZHNoYWtlLgorICAgICAgICBtZXNzYWdlID0gc2Vs
Zi5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBtZXNzYWdlIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0RpZG5cJ3QgcmVjZWl2ZSB2YWxpZCBhY2sgZm9yIGNsb3NpbmcgaGFuZHNoYWtlJykK
KyAgICAgICAgIyBUT0RPOiAzLiBjbG9zZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCisgICAg
ICAgICMgbm90ZTogbW9kX3B5dGhvbiBDb25uZWN0aW9uIChtcF9jb25uKSBkb2Vzbid0IGhhdmUg
Y2xvc2UgbWV0aG9kLgorCisgICAgZGVmIHNlbmRfcGluZyhzZWxmLCBib2R5LCBiaW5hcnk9RmFs
c2UpOgorICAgICAgICBpZiBub3QgYmluYXJ5IGFuZCBpc2luc3RhbmNlKGJvZHksIHNpeC50ZXh0
X3R5cGUpOgorICAgICAgICAgICAgYm9keSA9IGJvZHkuZW5jb2RlKCdVVEYtOCcpCisgICAgICAg
IGZyYW1lID0gY3JlYXRlX3BpbmdfZnJhbWUoYm9keSwgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vdXRnb2lu
Z19mcmFtZV9maWx0ZXJzKQorICAgICAgICBzZWxmLl93cml0ZShmcmFtZSkKKworICAgICAgICBz
ZWxmLl9waW5nX3F1ZXVlLmFwcGVuZChib2R5KQorCisgICAgZGVmIF9zZW5kX3Bvbmcoc2VsZiwg
Ym9keSk6CisgICAgICAgIGZyYW1lID0gY3JlYXRlX3BvbmdfZnJhbWUoYm9keSwgc2VsZi5fb3B0
aW9ucy5tYXNrX3NlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0ZXJzKQorICAgICAgICBzZWxmLl93cml0ZShmcmFt
ZSkKKworICAgIGRlZiBnZXRfbGFzdF9yZWNlaXZlZF9vcGNvZGUoc2VsZik6CisgICAgICAgICIi
IlJldHVybnMgdGhlIG9wY29kZSBvZiB0aGUgV2ViU29ja2V0IG1lc3NhZ2Ugd2hpY2ggdGhlIGxh
c3QgcmVjZWl2ZWQKKyAgICAgICAgZnJhbWUgYmVsb25ncyB0by4gVGhlIHJldHVybiB2YWx1ZSBp
cyB2YWxpZCBpZmYgaW1tZWRpYXRlbHkgYWZ0ZXIKKyAgICAgICAgcmVjZWl2ZV9tZXNzYWdlIGNh
bGwuCisgICAgICAgICIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21v
ZF9weXdlYnNvY2tldC91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE2NGU2YjhlNDY4MjQ2NzE4N2ZjMzg5NGIxY2E3OWVjODJh
NDEzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC91dGlsLnB5CkBAIC0wLDAgKzEsNDA1IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldlYlNvY2tl
dCB1dGlsaXRpZXMuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
CitpbXBvcnQgYXJyYXkKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgc2l4Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNp
eC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9y
dCB6bGliCisKK3RyeToKKyAgICBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZmFzdF9tYXNr
aW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCisKK2RlZiBwcmVwZW5kX21lc3Nh
Z2VfdG9fZXhjZXB0aW9uKG1lc3NhZ2UsIGV4Yyk6CisgICAgIiIiUHJlcGVuZCBtZXNzYWdlIHRv
IHRoZSBleGNlcHRpb24uIiIiCisgICAgZXhjLmFyZ3MgPSAobWVzc2FnZSArIHN0cihleGMpLCAp
CisgICAgcmV0dXJuCisKKworZGVmIF9fdHJhbnNsYXRlX2ludGVycChpbnRlcnAsIGN5Z3dpbl9w
YXRoKToKKyAgICAiIiJUcmFuc2xhdGUgaW50ZXJwIHByb2dyYW0gcGF0aCBmb3IgV2luMzIgcHl0
aG9uIHRvIHJ1biBjeWd3aW4gcHJvZ3JhbQorICAgIChlLmcuIHBlcmwpLiAgTm90ZSB0aGF0IGl0
IGRvZXNuJ3Qgc3VwcG9ydCBwYXRoIHRoYXQgY29udGFpbnMgc3BhY2UsCisgICAgd2hpY2ggaXMg
dHlwaWNhbGx5IHRydWUgZm9yIFVuaXgsIHdoZXJlICMhLXNjcmlwdCBpcyB3cml0dGVuLgorICAg
IEZvciBXaW4zMiBweXRob24sIGN5Z3dpbl9wYXRoIGlzIGEgZGlyZWN0b3J5IG9mIGN5Z3dpbiBi
aW5hcmllcy4KKworICAgIEFyZ3M6CisgICAgICBpbnRlcnA6IGludGVycCBjb21tYW5kIGxpbmUK
KyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBO
b25lCisgICAgUmV0dXJuczoKKyAgICAgIHRyYW5zbGF0ZWQgaW50ZXJwIGNvbW1hbmQgbGluZS4K
KyAgICAiIiIKKyAgICBpZiBub3QgY3lnd2luX3BhdGg6CisgICAgICAgIHJldHVybiBpbnRlcnAK
KyAgICBtID0gcmUubWF0Y2goJ15bXiBdKi8oW14gXSspKCAuKik/JywgaW50ZXJwKQorICAgIGlm
IG06CisgICAgICAgIGNtZCA9IG9zLnBhdGguam9pbihjeWd3aW5fcGF0aCwgbS5ncm91cCgxKSkK
KyAgICAgICAgcmV0dXJuIGNtZCArIG0uZ3JvdXAoMikKKyAgICByZXR1cm4gaW50ZXJwCisKKwor
ZGVmIGdldF9zY3JpcHRfaW50ZXJwKHNjcmlwdF9wYXRoLCBjeWd3aW5fcGF0aD1Ob25lKToKKyAg
ICByIiIiR2V0ICMhLWludGVycHJldGVyIGNvbW1hbmQgbGluZSBmcm9tIHRoZSBzY3JpcHQuCisK
KyAgICBJdCBhbHNvIGZpeGVzIGNvbW1hbmQgcGF0aC4gIFdoZW4gQ3lnd2luIFB5dGhvbiBpcyB1
c2VkLCBlLmcuIGluIFdlYktpdCwKKyAgICBpdCBjb3VsZCBydW4gIi91c3IvYmluL3BlcmwgLXdU
IGhlbGxvLnBsIi4KKyAgICBXaGVuIFdpbjMyIFB5dGhvbiBpcyB1c2VkLCBlLmcuIGluIENocm9t
aXVtLCBpdCBjb3VsZG4ndC4gIFNvLCBmaXgKKyAgICAiL3Vzci9iaW4vcGVybCIgdG8gIjxjeWd3
aW5fcGF0aD5ccGVybC5leGUiLgorCisgICAgQXJnczoKKyAgICAgIHNjcmlwdF9wYXRoOiBwYXRo
bmFtZSBvZiB0aGUgc2NyaXB0CisgICAgICBjeWd3aW5fcGF0aDogZGlyZWN0b3J5IG5hbWUgb2Yg
Y3lnd2luIGJpbmFyeSwgb3IgTm9uZQorICAgIFJldHVybnM6CisgICAgICAjIS1pbnRlcnByZXRl
ciBjb21tYW5kIGxpbmUsIG9yIE5vbmUgaWYgaXQgaXMgbm90ICMhLXNjcmlwdC4KKyAgICAiIiIK
KyAgICBmcCA9IG9wZW4oc2NyaXB0X3BhdGgpCisgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKKyAg
ICBmcC5jbG9zZSgpCisgICAgbSA9IHJlLm1hdGNoKCdeIyEoLiopJywgbGluZSkKKyAgICBpZiBt
OgorICAgICAgICByZXR1cm4gX190cmFuc2xhdGVfaW50ZXJwKG0uZ3JvdXAoMSksIGN5Z3dpbl9w
YXRoKQorICAgIHJldHVybiBOb25lCisKKworZGVmIHdyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2lu
X3BhdGgpOgorICAgICIiIldyYXAgcG9wZW4zIHRvIHN1cHBvcnQgIyEtc2NyaXB0IG9uIFdpbmRv
d3MuCisKKyAgICBBcmdzOgorICAgICAgY3lnd2luX3BhdGg6ICBwYXRoIGZvciBjeWd3aW4gYmlu
YXJ5IGlmIGNvbW1hbmQgcGF0aCBpcyBuZWVkZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAg
dHJhbnNsYXRlZC4gIE5vbmUgaWYgbm8gdHJhbnNsYXRpb24gcmVxdWlyZWQuCisgICAgIiIiCisg
ICAgX19vcmlnX3BvcGVuMyA9IG9zLnBvcGVuMworCisgICAgZGVmIF9fd3JhcF9wb3BlbjMoY21k
LCBtb2RlPSd0JywgYnVmc2l6ZT0tMSk6CisgICAgICAgIGNtZGxpbmUgPSBjbWQuc3BsaXQoJyAn
KQorICAgICAgICBpbnRlcnAgPSBnZXRfc2NyaXB0X2ludGVycChjbWRsaW5lWzBdLCBjeWd3aW5f
cGF0aCkKKyAgICAgICAgaWYgaW50ZXJwOgorICAgICAgICAgICAgY21kID0gaW50ZXJwICsgJyAn
ICsgY21kCisgICAgICAgIHJldHVybiBfX29yaWdfcG9wZW4zKGNtZCwgbW9kZSwgYnVmc2l6ZSkK
KworICAgIG9zLnBvcGVuMyA9IF9fd3JhcF9wb3BlbjMKKworCitkZWYgaGV4aWZ5KHMpOgorICAg
IHJldHVybiAnICcuam9pbihbJyUwMngnICUgeCBmb3IgeCBpbiBzaXguaXRlcmJ5dGVzKHMpXSkK
KworCitkZWYgZ2V0X2NsYXNzX2xvZ2dlcihvKToKKyAgICAiIiJSZXR1cm4gdGhlIGxvZ2dpbmcg
Y2xhc3MgaW5mb3JtYXRpb24uIiIiCisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4l
cycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoby5fX2NsYXNzX18uX19tb2R1bGVf
Xywgby5fX2NsYXNzX18uX19uYW1lX18pKQorCisKK2RlZiBwYWNrX2J5dGUoYik6CisgICAgIiIi
UGFjayBhbiBpbnRlZ2VyIHRvIG5ldHdvcmstb3JkZXJlZCBieXRlIiIiCisgICAgcmV0dXJuIHN0
cnVjdC5wYWNrKCchQicsIGIpCisKKworY2xhc3MgTm9vcE1hc2tlcihvYmplY3QpOgorICAgICIi
IkEgTm9PcCBtYXNraW5nIG9iamVjdC4KKworICAgIFRoaXMgaGFzIHRoZSBzYW1lIGludGVyZmFj
ZSBhcyBSZXBlYXRlZFhvck1hc2tlciBidXQganVzdCByZXR1cm5zCisgICAgdGhlIHN0cmluZyBw
YXNzZWQgaW4gd2l0aG91dCBtYWtpbmcgYW55IGNoYW5nZS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZik6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHBhc3MKKworICAgIGRl
ZiBtYXNrKHNlbGYsIHMpOgorICAgICAgICAiIiJOb09wLiIiIgorICAgICAgICByZXR1cm4gcwor
CisKK2NsYXNzIFJlcGVhdGVkWG9yTWFza2VyKG9iamVjdCk6CisgICAgIiIiQSBtYXNraW5nIG9i
amVjdCB0aGF0IGFwcGxpZXMgWE9SIG9uIHRoZSBzdHJpbmcuCisKKyAgICBBcHBsaWVzIFhPUiBv
biB0aGUgYnl0ZSBzdHJpbmcgZ2l2ZW4gdG8gbWFzayBtZXRob2Qgd2l0aCB0aGUgbWFza2luZyBi
eXRlcworICAgIGdpdmVuIHRvIHRoZSBjb25zdHJ1Y3RvciByZXBlYXRlZGx5LiBUaGlzIG9iamVj
dCByZW1lbWJlcnMgdGhlIHBvc2l0aW9uCisgICAgaW4gdGhlIG1hc2tpbmcgYnl0ZXMgdGhlIGxh
c3QgbWFzayBtZXRob2QgY2FsbCBlbmRlZCBhbmQgcmVzdW1lcyBmcm9tCisgICAgdGhhdCBwb2lu
dCBvbiB0aGUgbmV4dCBtYXNrIG1ldGhvZCBjYWxsLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBtYXNraW5nX2tleSk6CisgICAgICAgIHNlbGYuX21hc2tpbmdfa2V5ID0gbWFza2lu
Z19rZXkKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAwCisKKyAgICBkZWYgX21h
c2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKKyAgICAgICAgIiIiUGVyZm9ybSB0aGUgbWFzayB2aWEg
U1dJRy4iIiIKKyAgICAgICAgbWFza2VkX2RhdGEgPSBmYXN0X21hc2tpbmcubWFzayhzLCBzZWxm
Ll9tYXNraW5nX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9tYXNraW5nX2tleV9pbmRleCkKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgg
PSAoKHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ICsgbGVuKHMpKSAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLl9tYXNraW5nX2tleSkpCisgICAgICAgIHJldHVy
biBtYXNrZWRfZGF0YQorCisgICAgZGVmIF9tYXNrX3VzaW5nX2FycmF5KHNlbGYsIHMpOgorICAg
ICAgICAiIiJQZXJmb3JtIHRoZSBtYXNrIHZpYSBweXRob24uIiIiCisgICAgICAgIGlmIGlzaW5z
dGFuY2Uocywgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisg
ICAgICAgICAgICAgICAgJ01hc2tpbmcgT3BlcmF0aW9uIHNob3VsZCBub3QgcHJvY2VzcyB1bmlj
b2RlIHN0cmluZ3MnKQorCisgICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheShzKQorCisgICAgICAg
ICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0IHRv
IGFjY2VzcworICAgICAgICAjIGF0dHJpYnV0ZXMKKyAgICAgICAgbWFza2luZ19rZXkgPSBbYyBm
b3IgYyBpbiBzaXguaXRlcmJ5dGVzKHNlbGYuX21hc2tpbmdfa2V5KV0KKyAgICAgICAgbWFza2lu
Z19rZXlfc2l6ZSA9IGxlbihtYXNraW5nX2tleSkKKyAgICAgICAgbWFza2luZ19rZXlfaW5kZXgg
PSBzZWxmLl9tYXNraW5nX2tleV9pbmRleAorCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihy
ZXN1bHQpKToKKyAgICAgICAgICAgIHJlc3VsdFtpXSBePSBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF0KKyAgICAgICAgICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2lu
ZGV4ICsgMSkgJSBtYXNraW5nX2tleV9zaXplCisKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXlf
aW5kZXggPSBtYXNraW5nX2tleV9pbmRleAorCisgICAgICAgIHJldHVybiBieXRlcyhyZXN1bHQp
CisKKyAgICBpZiAnZmFzdF9tYXNraW5nJyBpbiBnbG9iYWxzKCk6CisgICAgICAgIG1hc2sgPSBf
bWFza191c2luZ19zd2lnCisgICAgZWxzZToKKyAgICAgICAgbWFzayA9IF9tYXNrX3VzaW5nX2Fy
cmF5CisKKworIyBCeSBtYWtpbmcgd2JpdHMgb3B0aW9uIG5lZ2F0aXZlLCB3ZSBjYW4gc3VwcHJl
c3MgQ01GL0ZMRyAoMiBvY3RldCkgYW5kCisjIEFETEVSMzIgKDQgb2N0ZXQpIGZpZWxkcyBvZiB6
bGliIHNvIHRoYXQgd2UgY2FuIHVzZSB6bGliIG1vZHVsZSBqdXN0IGFzCisjIGRlZmxhdGUgbGli
cmFyeS4gRElDVElEIHdvbid0IGJlIGFkZGVkIGFzIGZhciBhcyB3ZSBkb24ndCBzZXQgZGljdGlv
bmFyeS4KKyMgTFo3NyB3aW5kb3cgb2YgMzJLIHdpbGwgYmUgdXNlZCBmb3IgYm90aCBjb21wcmVz
c2lvbiBhbmQgZGVjb21wcmVzc2lvbi4KKyMgRm9yIGRlY29tcHJlc3Npb24sIHdlIGNhbiBqdXN0
IHVzZSAzMksgdG8gY292ZXIgYW55IHdpbmRvd3Mgc2l6ZS4gRm9yCisjIGNvbXByZXNzaW9uLCB3
ZSB1c2UgMzJLIHNvIHJlY2VpdmVycyBtdXN0IHVzZSAzMksuCisjCisjIENvbXByZXNzaW9uIGxl
dmVsIGlzIFpfREVGQVVMVF9DT01QUkVTU0lPTi4gV2UgZG9uJ3QgaGF2ZSB0byBtYXRjaCBsZXZl
bAorIyB0byBkZWNvZGUuCisjCisjIFNlZSB6Y29uZi5oLCBkZWZsYXRlLmNjLCBpbmZsYXRlLmNj
IG9mIHpsaWIgbGlicmFyeSwgYW5kIHpsaWJtb2R1bGUuYyBvZgorIyBQeXRob24uIFNlZSBhbHNv
IFJGQzE5NTAgKFpMSUIgMy4zKS4KKworCitjbGFzcyBfRGVmbGF0ZXIob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHMpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSBn
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgIyBVc2luZyB0aGUgc21hbGxlc3Qgd2lu
ZG93IGJpdHMgb2YgOSBmb3IgZ2VuZXJhdGluZyBpbnB1dCBmcmFtZXMuCisgICAgICAgICMgT24g
V2ViU29ja2V0IHNwZWMsIHRoZSBzbWFsbGVzdCB3aW5kb3cgYml0IGlzIDguIEhvd2V2ZXIsIHps
aWIgZG9lcworICAgICAgICAjIG5vdCBhY2NlcHQgd2luZG93X2JpdCA9IDguCisgICAgICAgICMK
KyAgICAgICAgIyBCZWNhdXNlIG9mIGEgemxpYiBkZWZsYXRlIHF1aXJrLCBiYWNrLXJlZmVyZW5j
ZXMgd2lsbCBub3QgdXNlIHRoZQorICAgICAgICAjIGVudGlyZSByYW5nZSBvZiAxIDw8IHdpbmRv
d19iaXRzLCBidXQgd2lsbCBpbnN0ZWFkIHVzZSBhIHJlc3RyaWN0ZWQKKyAgICAgICAgIyByYW5n
ZSBvZiAoMSA8PCB3aW5kb3dfYml0cykgLSAyNjIuIFdpdGggYW4gaW5jcmVhc2VkIHdpbmRvd19i
aXRzID0gOSwKKyAgICAgICAgIyBiYWNrLXJlZmVyZW5jZXMgd2lsbCBiZSB3aXRoaW4gYSByYW5n
ZSBvZiAyNTAuIFRoZXNlIGNhbiBzdGlsbCBiZQorICAgICAgICAjIGRlY29tcHJlc3NlZCB3aXRo
IHdpbmRvd19iaXRzID0gOCBhbmQgdGhlIDI1Ni1ieXRlIHdpbmRvdyB1c2VkIHRoZXJlLgorICAg
ICAgICAjCisgICAgICAgICMgU2ltaWxhciBkaXNzY3Vzc2lvbnMgY2FuIGJlIGZvdW5kIGluIGh0
dHBzOi8vY3JidWcuY29tLzY5MTA3NAorICAgICAgICB3aW5kb3dfYml0cyA9IG1heCh3aW5kb3df
Yml0cywgOSkKKworICAgICAgICBzZWxmLl9jb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxp
Yi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB6bGliLkRFRkxBVEVELCAtd2luZG93X2JpdHMpCisKKyAgICBkZWYgY29tcHJl
c3Moc2VsZiwgYnl0ZXMpOgorICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJl
c3MuY29tcHJlc3MoYnl0ZXMpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3Mg
aW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBy
ZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9i
eXRlcworCisgICAgZGVmIGNvbXByZXNzX2FuZF9mbHVzaChzZWxmLCBieXRlcyk6CisgICAgICAg
IGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKKyAgICAg
ICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19G
TFVTSCkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5
dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNv
bXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCisKKyAgICBk
ZWYgY29tcHJlc3NfYW5kX2ZpbmlzaChzZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRf
Ynl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKKyAgICAgICAgY29tcHJlc3Nl
ZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMpCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykK
KyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworCitjbGFzcyBfSW5mbGF0ZXIob2Jq
ZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHMpOgorICAgICAgICBzZWxm
Ll9sb2dnZXIgPSBnZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisgICAgICAgIHNlbGYuX3dpbmRvd19i
aXRzID0gd2luZG93X2JpdHMKKworICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gYicnCisKKyAg
ICAgICAgc2VsZi5yZXNldCgpCisKKyAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBzaXplKToKKyAg
ICAgICAgaWYgbm90IChzaXplID09IC0xIG9yIHNpemUgPiAwKToKKyAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignc2l6ZSBtdXN0IGJlIC0xIG9yIHBvc2l0aXZlJykKKworICAgICAgICBkYXRh
ID0gYicnCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5f
ZGVjb21wcmVzcy5kZWNvbXByZXNzKHNlbGYuX3VuY29uc3VtZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgc2l6ZSAtIGxlbihkYXRhKSkp
CisgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzcy51bmNvbnN1
bWVkX3RhaWwKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3MudW51c2VkX2RhdGE6Cisg
ICAgICAgICAgICAgICAgIyBFbmNvdW50ZXJlZCBhIGxhc3QgYmxvY2sgKGkuZS4gYSBibG9jayB3
aXRoIEJGSU5BTCA9IDEpIGFuZAorICAgICAgICAgICAgICAgICMgZm91bmQgYSBuZXcgc3RyZWFt
ICh1bnVzZWRfZGF0YSkuIFdlIGNhbm5vdCB1c2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAj
IHpsaWIuRGVjb21wcmVzcyBvYmplY3QgZm9yIHRoZSBuZXcgc3RyZWFtLiBDcmVhdGUgYSBuZXcK
KyAgICAgICAgICAgICAgICAjIERlY29tcHJlc3Mgb2JqZWN0IHRvIGRlY29tcHJlc3MgdGhlIG5l
dyBvbmUuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgSXQncyBmaW5lIHRv
IGlnbm9yZSB1bmNvbnN1bWVkX3RhaWwgaWYgdW51c2VkX2RhdGEgaXMgbm90CisgICAgICAgICAg
ICAgICAgIyBlbXB0eS4KKyAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5f
ZGVjb21wcmVzcy51bnVzZWRfZGF0YQorICAgICAgICAgICAgICAgIHNlbGYucmVzZXQoKQorICAg
ICAgICAgICAgICAgIGlmIHNpemUgPj0gMCBhbmQgbGVuKGRhdGEpID09IHNpemU6CisgICAgICAg
ICAgICAgICAgICAgICMgZGF0YSBpcyBmaWxsZWQuIERvbid0IGNhbGwgZGVjb21wcmVzcyBhZ2Fp
bi4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAjIFJlLWludm9rZSBEZWNvbXByZXNzLmRlY29tcHJlc3MgdG8gdHJ5
IHRvIGRlY29tcHJlc3MgYWxsCisgICAgICAgICAgICAgICAgICAgICMgYXZhaWxhYmxlIGJ5dGVz
IGJlZm9yZSBpbnZva2luZyByZWFkIHdoaWNoIGJsb2NrcyB1bnRpbAorICAgICAgICAgICAgICAg
ICAgICAjIGFueSBuZXcgYnl0ZSBpcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSGVyZSwgc2luY2Ug
dW51c2VkX2RhdGEgaXMgZW1wdHksIGV2ZW4gaWYgdW5jb25zdW1lZF90YWlsIGlzCisgICAgICAg
ICAgICAgICAgIyBub3QgZW1wdHksIGJ5dGVzIG9mIHJlcXVlc3RlZCBsZW5ndGggYXJlIGFscmVh
ZHkgaW4gZGF0YS4gV2UKKyAgICAgICAgICAgICAgICAjIGRvbid0IGhhdmUgdG8gImNvbnRpbnVl
IiBoZXJlLgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgZGF0YToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRGVjb21wcmVzc2VkICVyJywgZGF0YSkKKyAgICAg
ICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgZGF0YSk6CisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnQXBwZW5kZWQgJXInLCBkYXRhKQorICAgICAgICBzZWxmLl91bmNv
bnN1bWVkICs9IGRhdGEKKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZXNldCcpCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3MgPSB6bGliLmRlY29t
cHJlc3NvYmooLXNlbGYuX3dpbmRvd19iaXRzKQorCisKKyMgQ29tcHJlc3Nlcy9kZWNvbXByZXNz
ZXMgZ2l2ZW4gb2N0ZXRzIHVzaW5nIHRoZSBtZXRob2QgaW50cm9kdWNlZCBpbiBSRkMxOTc5Lgor
CisKK2NsYXNzIF9SRkMxOTc5RGVmbGF0ZXIob2JqZWN0KToKKyAgICAiIiJBIGNvbXByZXNzb3Ig
Y2xhc3MgdGhhdCBhcHBsaWVzIERFRkxBVEUgdG8gZ2l2ZW4gYnl0ZSBzZXF1ZW5jZSBhbmQKKyAg
ICBmbHVzaGVzIHVzaW5nIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNl
Y3Rpb24gMi4xLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cywg
bm9fY29udGV4dF90YWtlb3Zlcik6CisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gTm9uZQorICAg
ICAgICBpZiB3aW5kb3dfYml0cyBpcyBOb25lOgorICAgICAgICAgICAgd2luZG93X2JpdHMgPSB6
bGliLk1BWF9XQklUUworICAgICAgICBzZWxmLl93aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzCisg
ICAgICAgIHNlbGYuX25vX2NvbnRleHRfdGFrZW92ZXIgPSBub19jb250ZXh0X3Rha2VvdmVyCisK
KyAgICBkZWYgZmlsdGVyKHNlbGYsIGJ5dGVzLCBlbmQ9VHJ1ZSwgYmZpbmFsPUZhbHNlKToKKyAg
ICAgICAgaWYgc2VsZi5fZGVmbGF0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RlZmxh
dGVyID0gX0RlZmxhdGVyKHNlbGYuX3dpbmRvd19iaXRzKQorCisgICAgICAgIGlmIGJmaW5hbDoK
KyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2go
Ynl0ZXMpCisgICAgICAgICAgICAjIEFkZCBhIHBhZGRpbmcgYmxvY2sgd2l0aCBCRklOQUwgPSAw
IGFuZCBCVFlQRSA9IDAuCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBwYWNrX2J5dGUo
MCkKKyAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gTm9uZQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdAorCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9m
bHVzaChieXRlcykKKyAgICAgICAgaWYgZW5kOgorICAgICAgICAgICAgIyBTdHJpcCBsYXN0IDQg
b2N0ZXRzIHdoaWNoIGlzIExFTiBhbmQgTkxFTiBmaWVsZCBvZiBhCisgICAgICAgICAgICAjIG5v
bi1jb21wcmVzc2VkIGJsb2NrIGFkZGVkIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHRbOi00XQorCisgICAgICAgIGlmIHNlbGYuX25vX2NvbnRleHRfdGFrZW92
ZXIgYW5kIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gTm9uZQorCisgICAgICAg
IHJldHVybiByZXN1bHQKKworCitjbGFzcyBfUkZDMTk3OUluZmxhdGVyKG9iamVjdCk6CisgICAg
IiIiQSBkZWNvbXByZXNzb3IgY2xhc3MgYSBsYSBSRkMxOTc5LgorCisgICAgQSBkZWNvbXByZXNz
b3IgY2xhc3MgZm9yIGJ5dGUgc2VxdWVuY2UgY29tcHJlc3NlZCBhbmQgZmx1c2hlZCBmb2xsb3dp
bmcKKyAgICB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgUkZDMTk3OSBzZWN0aW9uIDIu
MS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHM9emxpYi5NQVhf
V0JJVFMpOgorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3dfYml0cykK
KworICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMpOgorICAgICAgICAjIFJlc3RvcmUgc3RyaXBw
ZWQgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQKKyAg
ICAgICAgIyBmb3IgWl9TWU5DX0ZMVVNILgorICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQo
Ynl0ZXMgKyBiJ1x4MDBceDAwXHhmZlx4ZmYnKQorICAgICAgICByZXR1cm4gc2VsZi5faW5mbGF0
ZXIuZGVjb21wcmVzcygtMSkKKworCitjbGFzcyBEZWZsYXRlU29ja2V0KG9iamVjdCk6CisgICAg
IiIiQSB3cmFwcGVyIGNsYXNzIGZvciBzb2NrZXQgb2JqZWN0IHRvIGludGVyY2VwdCBzZW5kIGFu
ZCByZWN2IHRvIHBlcmZvcm0KKyAgICBkZWZsYXRlIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNz
aW9uIHRyYW5zcGFyZW50bHkuCisgICAgIiIiCisKKyAgICAjIFNpemUgb2YgdGhlIGJ1ZmZlciBw
YXNzZWQgdG8gcmVjdiB0byByZWNlaXZlIGNvbXByZXNzZWQgZGF0YS4KKyAgICBfUkVDVl9TSVpF
ID0gNDA5NgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tldCk6CisgICAgICAgIHNlbGYu
X3NvY2tldCA9IHNvY2tldAorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9jbGFzc19sb2dn
ZXIoc2VsZikKKworICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcih6bGliLk1BWF9X
QklUUykKKyAgICAgICAgc2VsZi5faW5mbGF0ZXIgPSBfSW5mbGF0ZXIoemxpYi5NQVhfV0JJVFMp
CisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplKToKKyAgICAgICAgIiIiUmVjZWl2ZXMgZGF0YSBm
cm9tIHRoZSBzb2NrZXQgc3BlY2lmaWVkIG9uIHRoZSBjb25zdHJ1Y3Rpb24gdXAKKyAgICAgICAg
dG8gdGhlIHNwZWNpZmllZCBzaXplLiBPbmNlIGFueSBkYXRhIGlzIGF2YWlsYWJsZSwgcmV0dXJu
cyBpdCBldmVuCisgICAgICAgIGlmIGl0J3Mgc21hbGxlciB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6
ZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQWxsb3cgY2FsbCB3
aXRoIHNpemU9MC4gSXQgc2hvdWxkIGJsb2NrIHVudGlsIGFueQorICAgICAgICAjIGRlY29tcHJl
c3NlZCBkYXRhIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgaWYgc2l6ZSA8PSAwOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdOb24tcG9zaXRpdmUgc2l6ZSBwYXNzZWQnKQorICAgICAgICB3
aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2luZmxhdGVyLmRlY29tcHJlc3Mo
c2l6ZSkKKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSAwOgorICAgICAgICAgICAgICAgIHJl
dHVybiBkYXRhCisKKyAgICAgICAgICAgIHJlYWRfZGF0YSA9IHNlbGYuX3NvY2tldC5yZWN2KERl
ZmxhdGVTb2NrZXQuX1JFQ1ZfU0laRSkKKyAgICAgICAgICAgIGlmIG5vdCByZWFkX2RhdGE6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGInJworICAgICAgICAgICAgc2VsZi5faW5mbGF0ZXIuYXBw
ZW5kKHJlYWRfZGF0YSkKKworICAgIGRlZiBzZW5kYWxsKHNlbGYsIGJ5dGVzKToKKyAgICAgICAg
c2VsZi5zZW5kKGJ5dGVzKQorCisgICAgZGVmIHNlbmQoc2VsZiwgYnl0ZXMpOgorICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0
ZXMpKQorICAgICAgICByZXR1cm4gbGVuKGJ5dGVzKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2MTQyNWUxMTRkMTRkODZmODFiY2QxNDFmNjJmNzdkNjY0YjljY2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9y
dC5sb2cKQEAgLTAsMCArMSwzMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L19zdHJlYW1fZXhjZXB0aW9ucy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9jb21tb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3Ry
ZWFtLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3dlYnNvY2tldF9zZXJ2ZXIu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZjhjZDM5M2M3ZWU4MDY5Njc1NzEzNjY1ZDg1YmU3ZDk3NjU3YjcwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3dlYnNv
Y2tldF9zZXJ2ZXIucHkKQEAgLTAsMCArMSwyODUgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU3Rh
bmRhbG9uZSBXZWJzb2NrZXRTZXJ2ZXIKKworVGhpcyBmaWxlIGRlYWxzIHdpdGggdGhlIG1haW4g
bW9kdWxlIG9mIHN0YW5kYWxvbmUgc2VydmVyLiBBbHRob3VnaCBpdCBpcyBmaW5lCit0byBpbXBv
cnQgdGhpcyBmaWxlIGRpcmVjdGx5IHRvIHVzZSBXZWJTb2NrZXRTZXJ2ZXIsIGl0IGlzIHN0cm9u
Z2x5IHJlY29tbWVuZGVkCit0byB1c2Ugc3RhbmRhbG9uZS5weSwgc2luY2UgaXQgaXMgaW50ZW5k
ZWQgdG8gYWN0IGFzIGEgc2tlbGV0b24gb2YgdGhpcyBtb2R1bGUuCisiIiIKKworZnJvbSBfX2Z1
dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBCYXNl
SFRUUFNlcnZlcgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHNvY2tldHNlcnZlcgoraW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHNz
bAoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldC5yZXF1ZXN0X2hhbmRsZXIgaW1wb3J0IFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyCisKKworZGVmIF9hbGlhc19oYW5kbGVycyhkaXNwYXRjaGVyLCB3ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlKToKKyAgICAiIiJTZXQgYWxpYXNlcyBzcGVjaWZpZWQgaW4gd2Vic29j
a19oYW5kbGVyX21hcF9maWxlIGluIGRpc3BhdGNoZXIuCisKKyAgICBBcmdzOgorICAgICAgICBk
aXNwYXRjaGVyOiBkaXNwYXRjaC5EaXNwYXRjaGVyIGluc3RhbmNlCisgICAgICAgIHdlYnNvY2tf
aGFuZGxlcl9tYXBfZmlsZTogYWxpYXMgbWFwIGZpbGUKKyAgICAiIiIKKworICAgIHdpdGggb3Bl
bih3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBm
OgorICAgICAgICAgICAgaWYgbGluZVswXSA9PSAnIycgb3IgbGluZS5pc3NwYWNlKCk6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnKFxTKylccyso
XFMrKSQnLCBsaW5lKQorICAgICAgICAgICAgaWYgbm90IG06CisgICAgICAgICAgICAgICAgbG9n
Z2luZy53YXJuaW5nKCdXcm9uZyBmb3JtYXQgaW4gbWFwIGZpbGU6JyArIGxpbmUpCisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkaXNw
YXRjaGVyLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKG0uZ3JvdXAoMSksIG0uZ3JvdXAoMikpCisg
ICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAg
ICAgICAgICAgICBsb2dnaW5nLmVycm9yKHN0cihlKSkKKworCitjbGFzcyBXZWJTb2NrZXRTZXJ2
ZXIoc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVy
KToKKyAgICAiIiJIVFRQU2VydmVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQuIiIiCisKKyAg
ICAjIE92ZXJyaWRlcyBTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4uZGFlbW9uX3RocmVhZHMK
KyAgICBkYWVtb25fdGhyZWFkcyA9IFRydWUKKyAgICAjIE92ZXJyaWRlcyBCYXNlSFRUUFNlcnZl
ci5IVFRQU2VydmVyLmFsbG93X3JldXNlX2FkZHJlc3MKKyAgICBhbGxvd19yZXVzZV9hZGRyZXNz
ID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiJP
dmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fIHRvIHNldCBTU0wgZW5hYmxl
ZAorICAgICAgICBzb2NrZXQgb2JqZWN0IHRvIHNlbGYuc29ja2V0IGJlZm9yZSBzZXJ2ZXJfYmlu
ZCBhbmQgc2VydmVyX2FjdGl2YXRlLAorICAgICAgICBpZiBuZWNlc3NhcnkuCisgICAgICAgICIi
IgorCisgICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3QgaGFuZGxlcnMg
dG8gc2F2ZSB0aW1lIGZvcgorICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNwYXRjaGVyIGNh
biBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KKyAgICAgICAgb3B0aW9ucy5k
aXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcigKKyAgICAgICAgICAgIG9wdGlvbnMud2Vi
c29ja19oYW5kbGVycywgb3B0aW9ucy5zY2FuX2RpciwKKyAgICAgICAgICAgIG9wdGlvbnMuYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKyAgICAgICAgaWYgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzX21hcF9maWxlOgorICAgICAgICAgICAgX2FsaWFzX2hhbmRsZXJzKG9wdGlvbnMu
ZGlzcGF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tf
aGFuZGxlcnNfbWFwX2ZpbGUpCisgICAgICAgIHdhcm5pbmdzID0gb3B0aW9ucy5kaXNwYXRjaGVy
LnNvdXJjZV93YXJuaW5ncygpCisgICAgICAgIGlmIHdhcm5pbmdzOgorICAgICAgICAgICAgZm9y
IHdhcm5pbmcgaW4gd2FybmluZ3M6CisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdX
YXJuaW5nIGluIHNvdXJjZSBsb2FkaW5nOiAlcycgJSB3YXJuaW5nKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYucmVx
dWVzdF9xdWV1ZV9zaXplID0gb3B0aW9ucy5yZXF1ZXN0X3F1ZXVlX3NpemUKKyAgICAgICAgc2Vs
Zi5fX3dzX2lzX3NodXRfZG93biA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHNlbGYuX193
c19zZXJ2aW5nID0gRmFsc2UKKworICAgICAgICBzb2NrZXRzZXJ2ZXIuQmFzZVNlcnZlci5fX2lu
aXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0
aW9ucy5zZXJ2ZXJfaG9zdCwgb3B0aW9ucy5wb3J0KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIpCisKKyAgICAgICAgIyBF
eHBvc2UgdGhlIG9wdGlvbnMgb2JqZWN0IHRvIGFsbG93IGhhbmRsZXIgb2JqZWN0cyBhY2Nlc3Mg
aXQuIFdlIG5hbWUKKyAgICAgICAgIyBpdCB3aXRoIHdlYnNvY2tldF8gcHJlZml4IHRvIGF2b2lk
IGNvbmZsaWN0LgorICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgICAgICBzZWxmLl9jcmVhdGVfc29ja2V0cygpCisgICAgICAgIHNlbGYuc2VydmVy
X2JpbmQoKQorICAgICAgICBzZWxmLnNlcnZlcl9hY3RpdmF0ZSgpCisKKyAgICBkZWYgX2NyZWF0
ZV9zb2NrZXRzKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzZWxmLnNlcnZlcl9w
b3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzcworICAgICAgICBzZWxmLl9zb2NrZXRzID0gW10KKyAg
ICAgICAgaWYgbm90IHNlbGYuc2VydmVyX25hbWU6CisgICAgICAgICAgICAjIE9uIHBsYXRmb3Jt
cyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBJUHY2LCB0aGUgZmlyc3QgYmluZCBmYWlscy4KKyAgICAg
ICAgICAgICMgT24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSVB2NgorICAgICAgICAgICAgIyAt
IElmIGl0IGJpbmRzIGJvdGggSVB2NCBhbmQgSVB2NiBvbiBjYWxsIHdpdGggQUZfSU5FVDYsIHRo
ZQorICAgICAgICAgICAgIyAgIGZpcnN0IGJpbmQgc3VjY2VlZHMgYW5kIHRoZSBzZWNvbmQgZmFp
bHMgKHdlJ2xsIHNlZSAnQWRkcmVzcworICAgICAgICAgICAgIyAgIGFscmVhZHkgaW4gdXNlJyBl
cnJvcikuCisgICAgICAgICAgICAjIC0gSWYgaXQgYmluZHMgb25seSBJUHY2IG9uIGNhbGwgd2l0
aCBBRl9JTkVUNiwgYm90aCBjYWxsIGFyZQorICAgICAgICAgICAgIyAgIGV4cGVjdGVkIHRvIHN1
Y2NlZWQgdG8gbGlzdGVuIGJvdGggcHJvdG9jb2wuCisgICAgICAgICAgICBhZGRyaW5mb19hcnJh
eSA9IFsoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19TVFJFQU0sICcnLCAnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLCAnJyldCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyaW5mb19hcnJheSA9IHNvY2tldC5nZXRhZGRy
aW5mbyhzZWxmLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5BRl9VTlNQRUMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09DS19TVFJFQU0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQ
Uk9UT19UQ1ApCisgICAgICAgIGZvciBhZGRyaW5mbyBpbiBhZGRyaW5mb19hcnJheToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDcmVhdGUgc29ja2V0IG9uOiAlcicsIGFkZHJpbmZv
KQorICAgICAgICAgICAgZmFtaWx5LCBzb2NrdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc29ja2Fk
ZHIgPSBhZGRyaW5mbworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2tldF8g
PSBzb2NrZXQuc29ja2V0KGZhbWlseSwgc29ja3R5cGUpCisgICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkg
ZmFpbHVyZTogJXInLCBlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBz
ZXJ2ZXJfb3B0aW9ucyA9IHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCisgICAgICAgICAg
ICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9v
cHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyX29w
dGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2NlcnRfID0gc3NsLkNFUlRfT1BUSU9OQUwKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX1JFUVVJ
UkVECisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Nl
cnRfID0gc3NsLkNFUlRfTk9ORQorICAgICAgICAgICAgICAgIHNvY2tldF8gPSBzc2wud3JhcF9z
b2NrZXQoCisgICAgICAgICAgICAgICAgICAgIHNvY2tldF8sCisgICAgICAgICAgICAgICAgICAg
IGtleWZpbGU9c2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXksCisgICAgICAgICAgICAgICAgICAg
IGNlcnRmaWxlPXNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgICAg
ICBjYV9jZXJ0cz1zZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NhLAorICAgICAgICAgICAgICAg
ICAgICBjZXJ0X3JlcXM9Y2xpZW50X2NlcnRfKQorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5h
cHBlbmQoKHNvY2tldF8sIGFkZHJpbmZvKSkKKworICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYmluZCB0
byBlbmFibGUgbXVsdGlwbGUKKyAgICAgICAgc29ja2V0cyBiaW5kLgorICAgICAgICAiIiIKKwor
ICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCisKKyAgICAgICAgZm9yIHNvY2tldGluZm8gaW4g
c2VsZi5fc29ja2V0czoKKyAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5m
bworICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0JpbmQgb246ICVyJywgYWRkcmluZm8p
CisgICAgICAgICAgICBpZiBzZWxmLmFsbG93X3JldXNlX2FkZHJlc3M6CisgICAgICAgICAgICAg
ICAgc29ja2V0Xy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VB
RERSLCAxKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2tldF8uYmluZChz
ZWxmLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywg
ZSkKKyAgICAgICAgICAgICAgICBzb2NrZXRfLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmYWls
ZWRfc29ja2V0cy5hcHBlbmQoc29ja2V0aW5mbykKKyAgICAgICAgICAgIGlmIHNlbGYuc2VydmVy
X2FkZHJlc3NbMV0gPT0gMDoKKyAgICAgICAgICAgICAgICAjIFRoZSBvcGVyYXRpbmcgc3lzdGVt
IGFzc2lnbnMgdGhlIGFjdHVhbCBwb3J0IG51bWJlciBmb3IgcG9ydAorICAgICAgICAgICAgICAg
ICMgbnVtYmVyIDAuIFRoaXMgY2FzZSwgdGhlIHNlY29uZCBhbmQgbGF0ZXIgc29ja2V0cyBzaG91
bGQgdXNlCisgICAgICAgICAgICAgICAgIyB0aGUgc2FtZSBwb3J0IG51bWJlci4gQWxzbyBzZWxm
LnNlcnZlcl9wb3J0IGlzIHJld3JpdHRlbgorICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCBp
cyBleHBvcnRlZCwgYW5kIHdpbGwgYmUgdXNlZCBieSBleHRlcm5hbCBjb2RlLgorICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2FkZHJlc3MgPSAoc2VsZi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF8uZ2V0c29ja25hbWUoKVsxXSkK
KyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzc1sx
XQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdQb3J0ICVyIGlzIGFzc2lnbmVk
Jywgc2VsZi5zZXJ2ZXJfcG9ydCkKKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRf
c29ja2V0czoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCisK
KyAgICBkZWYgc2VydmVyX2FjdGl2YXRlKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBTb2Nr
ZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9hY3RpdmF0ZSB0byBlbmFibGUgbXVsdGlwbGUKKyAg
ICAgICAgc29ja2V0cyBsaXN0ZW4uCisgICAgICAgICIiIgorCisgICAgICAgIGZhaWxlZF9zb2Nr
ZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxmLl9zb2NrZXRzOgorICAg
ICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuaW5mbygnTGlzdGVuIG9uOiAlcicsIGFkZHJpbmZvKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNvY2tldF8ubGlzdGVuKHNlbGYucmVxdWVzdF9xdWV1ZV9zaXpl
KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKKyAgICAgICAgICAgICAg
ICBzb2NrZXRfLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmYWlsZWRfc29ja2V0cy5hcHBlbmQo
c29ja2V0aW5mbykKKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRfc29ja2V0czoK
KyAgICAgICAgICAgIHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCisKKyAgICAgICAg
aWYgbGVuKHNlbGYuX3NvY2tldHMpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuY3Jp
dGljYWwoCisgICAgICAgICAgICAgICAgJ05vIHNvY2tldHMgYWN0aXZhdGVkLiBVc2UgaW5mbyBs
b2cgbGV2ZWwgdG8gc2VlIHRoZSByZWFzb24uJykKKworICAgIGRlZiBzZXJ2ZXJfY2xvc2Uoc2Vs
Zik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2Ns
b3NlIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGNsb3NlLgorICAgICAgICAi
IiIKKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxmLl9zb2NrZXRzOgorICAgICAgICAg
ICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnQ2xvc2Ugb246ICVyJywgYWRkcmluZm8pCisgICAgICAgICAgICBzb2NrZXRfLmNs
b3NlKCkKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tl
dFNlcnZlci5UQ1BTZXJ2ZXIuZmlsZW5vLiIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0
aWNhbCgnTm90IHN1cHBvcnRlZDogZmlsZW5vJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2tl
dHNbMF1bMF0uZmlsZW5vKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwg
Y2xpZW50X2FkZHJlc3MpOgorICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuaGFuZGxl
X2Vycm9yLiIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcignRXhjZXB0aW9uIGluIHBy
b2Nlc3NpbmcgcmVxdWVzdCBmcm9tOiAlclxuJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X2FkZHJlc3MsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICMgTm90
ZTogY2xpZW50X2FkZHJlc3MgaXMgYSB0dXBsZS4KKworICAgIGRlZiBnZXRfcmVxdWVzdChzZWxm
KToKKyAgICAgICAgIiIiT3ZlcnJpZGUgVENQU2VydmVyLmdldF9yZXF1ZXN0LiIiIgorCisgICAg
ICAgIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLnNvY2tldC5hY2NlcHQo
KQorCisgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlv
bnMKKyAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICMgUHJp
bnQgY2lwaGVyIGluIHVzZS4gSGFuZHNoYWtlIGlzIGRvbmUgb24gYWNjZXB0LgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDaXBoZXI6ICVzJywgYWNjZXB0ZWRfc29ja2V0LmNpcGhl
cigpKQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgY2VydDogJXInLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2Vy
dCgpKQorCisgICAgICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzCisK
KyAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6CisgICAgICAg
ICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXIuIiIiCisK
KyAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBUcnVlCisgICAgICAgIHNlbGYuX193c19pc19z
aHV0X2Rvd24uY2xlYXIoKQorICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuaGFuZGxlX3Jl
cXVlc3QKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2sn
KToKKyAgICAgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9i
bG9jaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJ0Zh
bGxiYWNrIHRvIGJsb2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHdoaWxlIHNlbGYuX193c19zZXJ2aW5nOgorICAgICAgICAgICAgICAgIHIsIHcsIGUg
PSBzZWxlY3Quc2VsZWN0KAorICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1swXSBmb3Igc29j
a2V0XyBpbiBzZWxmLl9zb2NrZXRzXSwgW10sIFtdLAorICAgICAgICAgICAgICAgICAgICBwb2xs
X2ludGVydmFsKQorICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0XworICAgICAgICAgICAgICAgICAgICBoYW5k
bGVfcmVxdWVzdCgpCisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNldCgpCisKKyAg
ICBkZWYgc2h1dGRvd24oc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5C
YXNlU2VydmVyLnNodXRkb3duLiIiIgorCisgICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFs
c2UKKyAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKKworCisjIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3NldHVwLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdlOTQyOGQ2OTFkNzU2Y2YzZDY4N2U3
NTZiNzM4MTRjY2QzYmU3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Nl
dHVwLnB5CkBAIC0wLDAgKzEsNzQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJTZXQgdXAgc2NyaXB0IGZvciBtb2RfcHl3ZWJzb2NrZXQuCisiIiIKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIEV4dGVu
c2lvbgoraW1wb3J0IHN5cworCitfUEFDS0FHRV9OQU1FID0gJ21vZF9weXdlYnNvY2tldCcKKwor
IyBCdWlsZCBhbmQgdXNlIGEgQysrIGV4dGVuc2lvbiBmb3IgZmFzdGVyIG1hc2tpbmcuIFNXSUcg
aXMgcmVxdWlyZWQuCitfVVNFX0ZBU1RfTUFTS0lORyA9IEZhbHNlCisKKyMgVGhpcyBpcyB1c2Vk
IHNpbmNlIHB5dGhvbl9yZXF1aXJlcyBmaWVsZCBpcyBub3QgcmVjb2duaXplZCB3aXRoCisjIHBp
cCB2ZXJzaW9uIDkuMC4wIGFuZCBlYXJsaWVyCitpZiBzeXMudmVyc2lvbiA8ICcyLjcnOgorICAg
IHByaW50KCclcyByZXF1aXJlcyBQeXRob24gMi43IG9yIGxhdGVyLicgJSBfUEFDS0FHRV9OQU1F
LCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQoMSkKKworaWYgX1VTRV9GQVNUX01BU0tJ
Tkc6CisgICAgc2V0dXAoZXh0X21vZHVsZXM9WworICAgICAgICBFeHRlbnNpb24oJ21vZF9weXdl
YnNvY2tldC9fZmFzdF9tYXNraW5nJywKKyAgICAgICAgICAgICAgICAgIFsnbW9kX3B5d2Vic29j
a2V0L2Zhc3RfbWFza2luZy5pJ10sCisgICAgICAgICAgICAgICAgICBzd2lnX29wdHM9WyctYysr
J10pCisgICAgXSkKKworc2V0dXAoCisgICAgYXV0aG9yPSdZdXpvIEZ1amlzaGltYScsCisgICAg
YXV0aG9yX2VtYWlsPSd5dXpvQGNocm9taXVtLm9yZycsCisgICAgZGVzY3JpcHRpb249J1N0YW5k
YWxvbmUgV2ViU29ja2V0IFNlcnZlciBmb3IgdGVzdGluZyBwdXJwb3Nlcy4nLAorICAgIGxvbmdf
ZGVzY3JpcHRpb249KCdtb2RfcHl3ZWJzb2NrZXQgaXMgYSBzdGFuZGFsb25lIHNlcnZlciBmb3Ig
JworICAgICAgICAgICAgICAgICAgICAgICd0aGUgV2ViU29ja2V0IFByb3RvY29sIChSRkMgNjQ1
NSkuICcKKyAgICAgICAgICAgICAgICAgICAgICAnU2VlIG1vZF9weXdlYnNvY2tldC9fX2luaXRf
Xy5weSBmb3IgbW9yZSBkZXRhaWwuJyksCisgICAgbGljZW5zZT0nU2VlIExJQ0VOU0UnLAorICAg
IG5hbWU9X1BBQ0tBR0VfTkFNRSwKKyAgICBwYWNrYWdlcz1bX1BBQ0tBR0VfTkFNRSwgX1BBQ0tB
R0VfTkFNRSArICcuaGFuZHNoYWtlJ10sCisgICAgcHl0aG9uX3JlcXVpcmVzPSc+PTIuNycsCisg
ICAgaW5zdGFsbF9yZXF1aXJlcz1bJ3NpeCddLAorICAgICNUT0RPKHN1enVraWtlaXRhKTogVXBk
YXRlIHRoaXMgdG8gbmV3IEdpdGh1YiBVUkwKKyAgICB1cmw9J2h0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9weXdlYnNvY2tldC8nLAorICAgIHZlcnNpb249JzMuMC4wJywKKykKKworIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4
Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L2NlcnQvY2FjZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2Vy
dC9jYWNlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkYWRhZTEyMWJkZDNhZGI3NDQzODNjZDNiZjA4YzIy
NmY4NTU0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQv
Y2FjZXJ0LnBlbQpAQCAtMCwwICsxLDE3IEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K
K01JSUN2RENDQWlXZ0F3SUJBZ0lKQUtxVmdoa0dGMXJTTUEwR0NTcUdTSWIzRFFFQkJRVUFNRWt4
Q3pBSkJnTlYKK0JBWVRBa3BRTVE0d0RBWURWUVFJRXdWVWIydDViekVVTUJJR0ExVUVDaE1MY0hs
M1pXSnpiMk5yWlhReEZEQVMKK0JnTlZCQU1UQzNCNWQyVmljMjlqYTJWME1CNFhEVEV5TURZd05q
QTNNalF6TTFvWERUTTVNVEF5TXpBM01qUXoKK00xb3dTVEVMTUFrR0ExVUVCaE1DU2xBeERqQU1C
Z05WQkFnVEJWUnZhM2x2TVJRd0VnWURWUVFLRXd0d2VYZGwKK1luTnZZMnRsZERFVU1CSUdBMVVF
QXhNTGNIbDNaV0p6YjJOclpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQUQKK2dZMEFNSUdKQW9H
QkFLb1NFVzJiaVF4VnJNTUtkbi84UEp6RFlpU1hEUFI5V1FiTFJSUTFHbTVqa0NZaWFoWFcKK3Uy
Q2JUVGhmUFBmaTJOSEEzSStIbFQ3Z085eVI3UlZVdk42SVNVekd3WERFcTRmNFVOcXRRT2hRYXFx
SytDWjkKK0xPL0JoTy9ZWWZOcmJTUGxZekhVS2FUOWVzZTd4TzlWelZLTFcrcVVmMk1qaDQvK1N6
eEJETlA3QWdNQkFBR2oKK2dhc3dnYWd3SFFZRFZSME9CQllFRk9zV2R4Q1N1eWh3YVplYWI2Qm9U
aG8zKytiek1Ia0dBMVVkSXdSeU1IQ0EKK0ZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpvVTJr
U3pCSk1Rc3dDUVlEVlFRR0V3SktVREVPTUF3R0ExVUUKK0NCTUZWRzlyZVc4eEZEQVNCZ05WQkFv
VEMzQjVkMlZpYzI5amEyVjBNUlF3RWdZRFZRUURFd3R3ZVhkbFluTnYKK1kydGxkSUlKQUtxVmdo
a0dGMXJTTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdZRUEKK2dzTUkx
V0VZcU53L2poVUlkclRCY0N4SjBYNmhKdkE5emlLQU5WbTFScys0UDNZREFya1E4YkNyNnhZK0t3
N3MKK1pwMHlFN2RNOEdNZGkrRFU2aEwzdDNFNWVNa1RTMXlacjlXQ0s0ZjJSTG8rZXQ5OHNlbFp5
ZHBIZW1GM0RKSjMKK2dBajhTeDRMQmFHOENiL1duRU1QdjNNeEczZkJFNWZhdkY2VjRqVTA3aFE9
CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L2NlcnQvY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2VydC5w
ZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjUzNzlhNzJiMGRhYzVmNDE5NzljODAyYzY2M2RmOGI4OGRlYTgyOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQpA
QCAtMCwwICsxLDYxIEBACitDZXJ0aWZpY2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9u
OiAzICgweDIpCisgICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkKKyAgICAgICAgU2lnbmF0
dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCisgICAgICAgIElzc3VlcjogQz1K
UCwgU1Q9VG9reW8sIE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0CisgICAgICAgIFZhbGlk
aXR5CisgICAgICAgICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6MDggMjAxMiBHTVQKKyAg
ICAgICAgICAgIE5vdCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5IEdNVAorICAgICAgICBT
dWJqZWN0OiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAg
ICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CisgICAgICAgICAgICBQdWJsaWMgS2V5IEFs
Z29yaXRobTogcnNhRW5jcnlwdGlvbgorICAgICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0
IGJpdCkKKyAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6CisgICAgICAgICAgICAg
ICAgICAgIDAwOmRlOjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVjOjIzOjgyOjFhOgorICAg
ICAgICAgICAgICAgICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3Nzo0OTo3Njo4OTowMzph
MjoyMToKKyAgICAgICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6ZGQ6ZmI6MzU6Mjc6M2E6
YTI6OTI6OGU6MTI6NjI6CisgICAgICAgICAgICAgICAgICAgIDJiOjNlOjFmOmY0Ojc4OmRmOmI2
Ojk0OmNiOjI3OmQ2OmNiOmQ2OjM3OmQ3OgorICAgICAgICAgICAgICAgICAgICA1YzowODpmMDow
OTozZTpjOTpjZToyNDoyZDowMDpjOTpkZjo0YTplMDo5OToKKyAgICAgICAgICAgICAgICAgICAg
ZTU6ZmI6MjM6YTk6ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6ODk6CisgICAgICAgICAg
ICAgICAgICAgIGIwOmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFjOjU1OmE5OjA3OjlhOgor
ICAgICAgICAgICAgICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2MjowMzpmOTo4Mjo4MzpkYjo2
ODpiZjpiODoKKyAgICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6MTE6Yjg6NTQ6NzM6N2IK
KyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAg
ICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgTmV0c2NhcGUgQ2VydCBUeXBlOiAK
KyAgICAgICAgICAgICAgICBTU0wgU2VydmVyCisgICAgICAgICAgICBOZXRzY2FwZSBDb21tZW50
OiAKKyAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQorICAgICAg
ICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDgy
OkExOjczOjhCOjE2OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMyOkMxOjg0OkU5OjA2OjAw
CisgICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAg
ICAgICAgICBrZXlpZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5Nzo5QTo2RjpBMDo2ODo0
RToxQTozNzpGQjpFNjpGMworCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FF
bmNyeXB0aW9uCisgICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4OjhlOmM0OmQ3OjdmOmEw
OjFlOjBkOjFhOmViOjJmOgorICAgICAgICBkZjpkMTo0ODo1NzozNjo1Zjo5NTo4YzoxYjpmMDo1
MTpkNjo1MjplNzo4ZDo4NDozYjo5ZjoKKyAgICAgICAgZDg6ZWQ6MjI6OWM6YWE6YmQ6ZWU6OWI6
OTA6MWQ6ODQ6YTM6NGM6MGI6Y2I6ZWI6NjQ6NzM6CisgICAgICAgIGJhOmY3OjE1OmNlOmRhOjVm
OmRiOjhiOjE1OjA3OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgorICAgICAgICBkMzpmMTpiZTo1
Mjo0ZjpjMzpkODo1ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4MToKKyAgICAgICAgZjk6
MDU6NTE6NzA6NjM6MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6MzQ6OTg6ZDU6CisgICAg
ICAgIDk5OjFlOjRlOjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAxOmY1OmRlOjM0OjYwOmIx
OgorICAgICAgICBjYjphZQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlDbURDQ0Fn
R2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlEVlFRR0V3SktVREVPCitN
QXdHQTFVRUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5amEyVjBNUlF3RWdZRFZR
UURFd3R3CitlWGRsWW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1EaGFGdzB6T1RFd01qTXdO
ekkxTURoYU1Fa3hDekFKCitCZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklH
QTFVRUNoTUxjSGwzWldKemIyTnJaWFF4CitGREFTQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUlH
Zk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCitnUURlRU00NldnU2tIQ21UWENPQ0d2
SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMrCitIL1I0MzdhVXl5Zld5
OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41YWliRFBBMmR2CitCSVlk
NzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3SURBUUFCbzRHUE1JR01N
QWtHCitBMVVkRXdRQ01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFNQ3dHQ1dDR1NBR0crRUlC
RFFRZkZoMVBjR1Z1CitVMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0
RUZnUVVncUZ6aXhZTWZPVFRScFVUCitsUm95d1lUcEJnQXdId1lEVlIwakJCZ3dGb0FVNnhaM0VK
SzdLSEJwbDVwdm9HaE9HamY3NXZNd0RRWUpLb1pJCitodmNOQVFFRkJRQURnWUVBYTdOR0tRTGZz
TWlPeE5kL29CNE5HdXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCisyTzBpbktxOTdwdVFIWVNq
VEF2TDYyUnp1dmNWenRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJGaiszbFpqCitZenRSN2Fl
QitRVlJjR015Q1E2VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFBZlhlTkdDeHk2ND0KKy0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jbGllbnRfY2VydC5wMTIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2xp
ZW50X2NlcnQucDEyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZTEzOTkyNzk4MmZhOTgyM2E1NzIzMWFmMTEzNDk5
ZDZhNWE4YjAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1ODIKemNtWStGWEgqamk3S01gIzB0
QmcycXpGaXRQIWY8UEhBLSpOTG9AVl9nY2YwdDhXQigjST97JVlSRngqdWAlKXlKCnoxbkchSzM1
YnFoWHJYN0FiOVElamY4NnVseCVadi0+JUheQWFacHdla1A0MllufWc2diNPdVlBOEd0bXZWalNJ
agp6RnBoNVUoKFolZkFTd1N1a1lYR3A9RipBKTBSZmk8YCVlT2ReRnBCaS1mI3M3ZmlyPz4yY1ck
VCM7MipHQVBfQWUKejFfI2xybjJFKGVLT01KNk4yNllKbmVfQGhwfVNLUFhVQjdGTWVyX341fDFx
Z0N7VHFubkJ1djEka3BwNU9CeiVACno8bXlTdys/WT5eakFaNCNYQS19KiFRc2J1T2hXKHNPODM2
NigkOygxQT5tbyhPLSV4KGhuKD15Wjt5fk5HI1FYMQp6Z0hrU2leXjhjdjRUVFNMOXZuNXFSKD5f
RDNmJm9jKmp3UGdJI0tAUSNBc0wpRDtCRCZXYjJkK0kxXko3bj59WVoKemJDWG85Zk9AZyFAZFdZ
YTJWJX07KSF7PHpEY3wocHZKSWF4VzdOZE8lTzZmPnImYU9ycEhre29fUjltUTQ3dW9iCno/bD45
fG58WDNgYWdwXkc7THdYUjU8KGxyK1I8Y0w1alRRKD9eRDxrUm8hSF9UI3A/eTNkfV50Q1lWIThS
Xk4/fQp6QyolWG05TGVmPmo3aGxyLT9qSGxwfHdmQSZebi1zOzwheiRxRDF4UHEhOEtRMX1+ZHVw
d35CTTFnc35AQW87Q3EKendSZ1V8Ml5kfU4tZ1Y7QGFZa3U4SSV9fDxsNlFNPz1kfkZZcGJHRkg5
JnZOZ0taKlN5Y0lTfG1jdU9SP2wmQ093Cnpze3pkNXptZWx4cU4xRFF5e31QZ0I9dSNmeklOUGtC
MG9OKmNrM3ZgKzF7IVlYUH57RVZJN1ZxaCp+dWFXX35VQwp6bFIzM1JaMDVIaGtDLTFlSXApLUBZ
Xnl2Yy18UiUhKjlkdzduZlcpeWpjSElZZjZyPWFDdChVaGktRkptMm57XykKeiV7dWxCVVhSYDI8
Pmx4fWVHbVNtUko+NW90a0AoK3Bqc1BxOzRoWjZGSUtsI3tueFAhQUwhMjhfX0FZZmxgVmd7Cnps
UlJhQVJ8Vm15MV9gXmJialpyekF7USRsWWVqSVlkXkEkWj5XJmp5bk09S2BUbDR3Vikzd0BkMUpj
YC01LUNHSgp6eHFeQDhfKCE8WkYycWxoX1p9fW5yP1MmNSp6K0ZAKXYoWjFFSXM7SG19ITF+TVRM
IWoxQGMkWkhMUn1WKD07Xm8KemRVcGZ5P28+eXpvbF9zaTw8VUVCPXQoZWVCemdKXldZd3NIQ0c5
MzRzJGQpQHFxSHdnXnlaTXtgXmpKITk7dHI2Cnplb1VheSYkK0J5R3xOXl96b0FIXnRZSWc+aGFZ
d3xAfGMzMV53KG5VZDdrKFltRUo3NlZZNzkrKEMoXyQ7MU1zVQp6aGlOaStCNWdTckRqfDk+PEA/
NlImOHpibThicj9DLU5uMWNrKCs8TkslNyk2di13V3E0PU1fVGJ0MTk0elUqeUYKemg8b3Q8SEJX
bm94QiUxazkoTTBvPE5nKVJnSFMoIz9lZEVRQiFefEZrLV8oYWBiVUJMQUsqaH5hen4hX3h1PVQ0
Cno2RzVLLWFYSm90SFFsRUM4Q1U1fFJ5TVJ1UWtYRSk/XnY2KGk9TXUpPSRebyUwIXlzNUdWUmFY
WjJTMkg0STgzTAp6cSliYHxQeHsoODlXMzJ6cTRzcXpIK0JBS1A5dWFERXBEOElJQTlELUg0NUMl
VlQ/SkojTWErQkBpOU1QZEYtIyMKek54RjVUdX1pel9oeiRTS1owX18mIVlwMXlhZFZ6b2NARXkr
QmVmSkN0Q1NWZDUoSnkoPEM2SWNDV31EbUh3QzhUCnpSe2txdlJAPzNyekxHMiRaZGN4LTV2RlJA
ZCRRI0REK357ZGhAbWRfZWBCQjYqVVk2Uis0XiNVJXo0bHR4OUIlOwp6TlY4eip7R2NHTTtncTJS
dHlkantIMFMwcCN6PDYlN20zISV7P01RdWE8YEBlNWJPdGJkIUVjP0dedXhmNGd4Y0kKei1GN1NU
WWl+dkRibXZDWjNORGNmSGo4PkM5RlY2amQxfShwU3dyZ0drKlFaOVJyNCk2IXNTa1RVcWJ4YmFl
YTJ1Cnp3U2AkeW9zUSllYiVvX3ZKTyohQWBkUjtZNGs+JnFZenVhLVpORTwzRkU9SStlU1U7eCFw
dF5BMzU+b0lvUGBKcQp6Wmx+KXJDNjBMK2tTeEFnb1BFfHJHalZAPzJBeSpYYj0kY2BjX0wzPUV6
aGpCVUQ9aDFfNCVlQkNmbGomRUhabU8KenN7MWJ8TnV4Nis7SyNLQj1Ua198aWt8eyowMWRrJDlL
YTZgY1JVPU1jWWlOIWstYSkyUEQzMWg8Y1RzJWtQaG9aCnpPKTJ3X1Q5LTh3Mk5NJiZxMnBsNF5L
cX1DUGU9bDlocSRXNCF0O0pEJXxVSigyOHZEYk0qTD5WRjdiV19Ye2IxNAp6R053KHc+RV9TOWA8
O3hRbFBgQHNkPjZtM24yKUwpMHAhWFJyRCMyNWlJa1JEcykxdWpOJVNzeXcjNjJ2ZHYmQWwKemNk
ai1ZbCM2K0BhMFdzY1U8M2BndlckMnctKF5IZkVSeXhzTnNxNm1LMGQ4Oz8wTFNlTmglTkVlMEJZ
SjRJTChhCnokV1huZClQQlc8QVRre3klMlM5R1BhMnF5SlckXkpKX2NvX1hQMW05RX1qKVE/Xmwk
IypNRHhQNXxtWTF6Y3EzeQp6Yj1AenlDWHVnd2R7Tmp4P2kyN2orelhPNCpWPn1aZS16QlF4KUh5
bndMYE5qKCE5dCk1NGRPO3pUVn4tTyM7VTsKek13cDBQVS11VUw/IyM4TC0pJnZtYm5BbW4jQCZh
PnY9Y1B9RVVRSlZ3YUR3OVY8LUl3WXRpVDl3KFRNZWEyJUR5Cnp8QTQwJE41dW9pUUVeX3tTMS1p
YHE1bHR0cGc+U0Q0cGFmaGZsQnw2UEU+IT5zaFdrb0VtWmhnK34wSHA8M0tUQAp6OWprJHFNQz0w
JkJia15mUm80ZjM4Sn5pV0N8eEdQMGB3WjNGI2s4ZypJZE5ZJEdGLUF4OF48RHJCXmoyOFhiNnMK
elJ8O1Z2YXIlPHxUWkt+PjMwa0QzKVckQUQjKHR0YCNAeDdROE9ZYXBUX0p5TTF2VD9sYngtK19G
KEpGJXlTME8kCnpwUyNsfXcqMGo+Yn1NM2U7NEk+e3BNTT5zJWA/ZlNBRV9RYmBBbj5fViFraX0k
OXdNTjkoZlUxdUpHbTBNaTdoSwp6QTVsMGUxd1ZjXiRxbD81Z20+OEV2QnBTYVdmNVRJZzNaU2J1
SmhwO2ElKFora2N7Y2R2MVB1WCRlMkdBTj9KZjgKeldLTmdTPChNMkZOVWBSeGRCR31mPVMxcm5R
KmVSMTJxRl9DJiZwbkBgeSVDfkw5XlFfWjlsaCZHPVh2R0MhNDEwCnp5bik1bz0peDJpSlkrXj9e
RUxqbnRISGB9Syl6YT9JPXx2ISRoTDBuJkd6eXB6YUx3TmRlTT1Pald8LS09bVJfagp6eXQ/flZ4
X185QkV2Y2hMPzlodVVvYi01bityMT88eEBjZ301YXxWfEZjRlFPKmVJcHdaRW5+VkdMZXF2U0BX
azIKeikhK0QzLTt7NEBPTyliK2JRTyM9LUUrQmVPQGYhMzxpVDBtYjJwYjM4OHtHSVJhcmpkblRp
JUA/NHF3eSNxNjBZCnpxaUF8e3Q2bzQ5RU0xOEomdzhEQSN3UUREc0Z3TiRIRypNVEwyMUJRailZ
UmBXNUw7WmZNTTwqckw9RklnfDBiSgp6VDlyN0ZsQkxMXnJWJTFVTyEzfEdERWFNIWpIUExyPzVR
QnVDQyFXKT5kcmZeUkNgYDdZUllaKEs+aWUwPnBKZF4KekpXX0h7JSleYyE2Pmx8OVA4P2M9aihC
NTdZSno4P1h5UXpFOXVHYX1kVjBQVHAzITtwIVNGKX10LWk+QzxFZEgrCnpNS0FTblYjISZTV2Zk
fTBkbGpYc3lRZnpzQDZpMCtkcVNISkx+Rjd+b3R8JEh3ZitGKjBqQ0sqdzVXb0ZAUTloTgp6aGxr
JVN7aDZDNTdDSTJfNVI5O2YzO3AtMT5EVW4qVV5lb0dqaHFvOypSKiRrVkUwMUo+VEpRUnN2OW96
JmshM3oKemtXVDsqMFFlME0zVUNMdzBEPUorZkdmY0Z2SlV8YFVkc0tfMzR0VHZIe2YmLVk4V0ZH
aD9eUCFYNTt5PUZadURzCmZmcldrMCVNKE9HblRNTjxoJnFAeUxkRFVfJk1jQWY/fDFrTWVqVU5v
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L2NlcnQva2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhZTg1ODMxOGYyOWJhNmI0NjIzYmQ1ZmJjNGEwOGNlNzNkOTAzMTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQva2V5LnBlbQpAQCAtMCww
ICsxLDE1IEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlDWGdJQkFBS0Jn
UURlRU00NldnU2tIQ21UWENPQ0d2SUdBZVlycEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxCitKenFp
a280U1lpcytIL1I0MzdhVXl5Zld5OVkzMTF3SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazls
dm9CCitpTjVhaWJEUEEyZHZCSVlkNzJJY1Zha0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1S
dUZSemV3SURBUUFCCitBb0dCQUl1Q3VWMVZjbmI3cm04Q3d0Z1pQNVhnbVk4dlNqeFRsZGFmYTZY
dmF3RVlVVFAwUzc3di8xbGxnMVl2CitVSVYrSStQUWdHOW9Wb1lPbDIyTG9pbUhTL1ozZTFmc290
NXREWXN6R2U4L0drc3Q0b2FSZVNveHZCVWE2V1hwCitRU283WUZDYWp1SHRFK1cvZ3pGK1VIYmR6
elhJRGpRWjMxNExORjV0KzRVbnNFUEJBa0VBK2dpckltcVdvTTJ0CiszVVI4ZjhvZWtFUndzbUVN
ZjlESDVZcEg0Y3ZVbnZJK2t3ZXNDL3IyVThTaG8rK2Z5RU1VTm03YUlYR3FOTGdhCitvZ0FNKzRO
WDRRSkJBT05kU3hTYXkyMmVnVEdOb0loTG5kbGpXa3VPdC85RldqMmtsZi80UXhENGJsTUpRNU9x
CitRZE9HQWg3blZRanBQTFE1RDdDQlZBS3BHTTJDRCtRSkJ0c0NRRVAya3ozNXB4UHlsRzN1cmND
Mm1mUXhCa2tXCitaQ1ZpQk5QNThHd0owYk9hdVRPU0JFd0ZYV3VMcVR3OGFEd3hMNDlVTm1xYzBO
MGZwZTJmQWVoajNVRUNRUUNtCitGSC9EalU4THc3eWJkZGpOdG02WFhQdVlOYWd4ejNjYmtCNEIz
RmNoRGxlSVVEd01vVkYwTVc5Ykk1LzU0bVYxCitRRGsxdFVLb3J0eHZRWkphQUQ0QkFrRUFoR09I
UXFQZDZiQkJvRkJ2cGFMelBKTXh3TEtyQitXdGtxL1FsQzcyCitDbFJpTW4yZzhTQUxpSUwzQkRn
R1hLY0tFL1d5N2pvL2FmL0pDelEvY1BxdC9BPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0t
LS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzkwNDQxOTBmNThiZTc3NDU2MTUyM2IzYTdlYjljZGRhYmE4MjM4NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpAQCAtMCww
ICsxLDIwIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NlcnQvY2FjZXJ0LnBl
bQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2Nl
cnQva2V5LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9y
X3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NTBhNmFjZDUzNzYyMjNjNjAzYWJlMjY0Yjk2Nzc5NjgzMmZiNTczCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3Rp
bmcucHkKQEAgLTAsMCArMSw3MTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcuCisKK1Ro
aXMgbW9kdWxlIGNvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBwZXJmb3JtaW5nIGhhbmRzaGFr
ZSwgZnJhbWUKK3NlbmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29ja2V0IGNsaWVudC4KKworVGhp
cyBpcyBjb2RlIGZvciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4gS2VlcCB0aGlzIGNvZGUgaW5k
ZXBlbmRlbnQgZnJvbQorbW9kX3B5d2Vic29ja2V0LiBEb24ndCBpbXBvcnQgZS5nLiBTdHJlYW0g
Y2xhc3MgZm9yIGdlbmVyYXRpbmcgZnJhbWUgZm9yCit0ZXN0aW5nLiBVc2luZyB1dGlsLmhleGlm
eSwgZXRjLiB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2NvbCBwcm9jZXNzaW5nCitpcyBh
bGxvd2VkLgorCitOb3RlOgorVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwgZS5nLiwgd2Ug
Y3V0IGNvcm5lcnMgaW4gaGFuZHNoYWtlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgYmFzZTY0CitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCByZQoraW1wb3J0IHNvY2tldAor
aW1wb3J0IHN0cnVjdAoraW1wb3J0IHRpbWUKK2Zyb20gaGFzaGxpYiBpbXBvcnQgc2hhMQorZnJv
bSBzaXggaW1wb3J0IGl0ZXJieXRlcworZnJvbSBzaXggaW1wb3J0IGluZGV4Ynl0ZXMKKworZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgSGFuZHNoYWtl
RXhjZXB0aW9uCisKK0RFRkFVTFRfUE9SVCA9IDgwCitERUZBVUxUX1NFQ1VSRV9QT1JUID0gNDQz
CisKKyMgT3Bjb2RlcyBpbnRyb2R1Y2VkIGluIElFVEYgSHlCaSAwMSBmb3IgdGhlIG5ldyBmcmFt
aW5nIGZvcm1hdAorT1BDT0RFX0NPTlRJTlVBVElPTiA9IDB4MAorT1BDT0RFX0NMT1NFID0gMHg4
CitPUENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKK09QQ09ERV9URVhUID0gMHgx
CitPUENPREVfQklOQVJZID0gMHgyCisKKyMgU3RyaW5ncyB1c2VkIGZvciBoYW5kc2hha2UKK19V
UEdSQURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5FQ1RJT05fSEVB
REVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCitXRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKworIyBTdGF0dXMgY29k
ZXMKK1NUQVRVU19OT1JNQUxfQ0xPU1VSRSA9IDEwMDAKK1NUQVRVU19HT0lOR19BV0FZID0gMTAw
MQorU1RBVFVTX1BST1RPQ09MX0VSUk9SID0gMTAwMgorU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEg
PSAxMDAzCitTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEID0gMTAwNQorU1RBVFVTX0FCTk9STUFM
X0NMT1NVUkUgPSAxMDA2CitTVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEgPSAxMDA3
CitTVEFUVVNfUE9MSUNZX1ZJT0xBVElPTiA9IDEwMDgKK1NUQVRVU19NRVNTQUdFX1RPT19CSUcg
PSAxMDA5CitTVEFUVVNfTUFOREFUT1JZX0VYVCA9IDEwMTAKK1NUQVRVU19JTlRFUk5BTF9FTkRQ
T0lOVF9FUlJPUiA9IDEwMTEKK1NUQVRVU19UTFNfSEFORFNIQUtFID0gMTAxNQorCisjIEV4dGVu
c2lvbiB0b2tlbnMKK19QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScKKworCitkZWYgX21ldGhvZF9saW5lKHJlc291cmNlKToKKyAgICByZXR1cm4gJ0dF
VCAlcyBIVFRQLzEuMVxyXG4nICUgcmVzb3VyY2UKKworCitkZWYgX3NlY19vcmlnaW5faGVhZGVy
KG9yaWdpbik6CisgICAgcmV0dXJuICdTZWMtV2ViU29ja2V0LU9yaWdpbjogJXNcclxuJyAlIG9y
aWdpbi5sb3dlcigpCisKKworZGVmIF9vcmlnaW5faGVhZGVyKG9yaWdpbik6CisgICAgIyA0LjEg
MTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3JpZ2luOiIsIGEgVSswMDIwIFNQQUNF
IGNoYXJhY3RlciwKKyAgICAjIGFuZCB0aGUgL29yaWdpbi8gdmFsdWUsIGNvbnZlcnRlZCB0byBB
U0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgorICAgIHJldHVybiAnT3JpZ2luOiAlc1xyXG4n
ICUgb3JpZ2luLmxvd2VyKCkKKworCitkZWYgX2Zvcm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0
LCBzZWN1cmUpOgorICAgICMgNC4xIDkuIExldCAvaG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmlu
Zy4KKyAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBB
U0NJSSBsb3dlcmNhc2UsIHRvCisgICAgIyAvaG9zdHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0
Lmxvd2VyKCkKKyAgICAjIDQuMSAxMS4gSWYgL3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8g
aXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLworICAgICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBu
b3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBDT0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBm
b2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQvLCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBp
bnRlZ2VyLAorICAgICMgdG8gL2hvc3Rwb3J0LworICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9y
dCAhPSBERUZBVUxUX1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IERF
RkFVTFRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3RyKHBvcnQp
CisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoiLCBhIFUr
MDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2ZpZWxkcy8u
CisgICAgcmV0dXJuICdIb3N0OiAlc1xyXG4nICUgaG9zdHBvcnQKKworCisjIFRPRE8odHlvc2hp
bm8pOiBEZWZpbmUgYSBiYXNlIGNsYXNzIGFuZCBtb3ZlIHRoZXNlIHNoYXJlZCBtZXRob2RzIHRv
IHRoYXQuCisKKworZGVmIHJlY2VpdmVfYnl0ZXMoc29ja2V0LCBsZW5ndGgpOgorICAgIHJlY2Vp
dmVkX2J5dGVzID0gW10KKyAgICByZW1haW5pbmcgPSBsZW5ndGgKKyAgICB3aGlsZSByZW1haW5p
bmcgPiAwOgorICAgICAgICBuZXdfcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5p
bmcpCisgICAgICAgIGlmIG5vdCBuZXdfcmVjZWl2ZWRfYnl0ZXM6CisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSBy
ZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQg
JWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAg
KGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMuYXBw
ZW5kKG5ld19yZWNlaXZlZF9ieXRlcykKKyAgICAgICAgcmVtYWluaW5nIC09IGxlbihuZXdfcmVj
ZWl2ZWRfYnl0ZXMpCisgICAgcmV0dXJuIGInJy5qb2luKHJlY2VpdmVkX2J5dGVzKQorCisKKyMg
VE9ETyh0eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0SGFuZHNoYWtlIGNsYXNzIGRpdmVydHMg
dGhlc2UgbWV0aG9kcy4gV2UKKyMgc2hvdWxkIG1vdmUgdG8gSFRUUCBwYXJzZXIgYXMgc3BlY2lm
aWVkIGluIFJGQyA2NDU1LgorCisKK2RlZiBfcmVhZF9maWVsZHMoc29ja2V0KToKKyAgICAjIDQu
MSAzMi4gbGV0IC9maWVsZHMvIGJlIGEgbGlzdCBvZiBuYW1lLXZhbHVlIHBhaXJzLCBpbml0aWFs
bHkgZW1wdHkuCisgICAgZmllbGRzID0ge30KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQu
MSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICBuYW1lID0gYicnCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICMgNC4xIDM0LiByZWFk
IC9uYW1lLworICAgICAgICBuYW1lID0gX3JlYWRfbmFtZShzb2NrZXQpCisgICAgICAgIGlmIG5h
bWUgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgNC4xIDM1LiByZWFkIHNw
YWNlcworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBTa2lwIG9ubHkgb25lIHNwYWNlIGFzIGRl
c2NyaWJlZCBpbiB0aGUgc3BlYy4KKyAgICAgICAgY2ggPSBfc2tpcF9zcGFjZXMoc29ja2V0KQor
ICAgICAgICAjIDQuMSAzNi4gcmVhZCAvdmFsdWUvCisgICAgICAgIHZhbHVlID0gX3JlYWRfdmFs
dWUoc29ja2V0LCBjaCkKKyAgICAgICAgIyA0LjEgMzcuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNl
cnZlcgorICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKQorICAgICAgICBpZiBj
aCAhPSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAg
ICAgICAgICAgICdFeHBlY3RlZCBMRiBidXQgZm91bmQgJXIgd2hpbGUgcmVhZGluZyB2YWx1ZSAl
ciBmb3IgaGVhZGVyICcKKyAgICAgICAgICAgICAgICAnJXInICUgKGNoLCBuYW1lLCB2YWx1ZSkp
CisgICAgICAgICMgNC4xIDM4LiBhcHBlbmQgYW4gZW50cnkgdG8gdGhlIC9maWVsZHMvIGxpc3Qg
dGhhdCBoYXMgdGhlIG5hbWUKKyAgICAgICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVk
IGJ5IGludGVycHJldGluZyB0aGUgL25hbWUvIGJ5dGUKKyAgICAgICAgIyBhcnJheSBhcyBhIFVU
Ri04IHN0cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgIyBv
YnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC92YWx1ZS8gYnl0ZSBhcnJheSBhcyBhIFVURi04
IGJ5dGUKKyAgICAgICAgIyBzdHJlYW0uCisgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkuYXBwZW5kKHZh
bHVlLmRlY29kZSgnVVRGLTgnKSkKKyAgICAgICAgIyA0LjEgMzkuIHJldHVybiB0byB0aGUgIkZp
ZWxkIiBzdGVwIGFib3ZlCisgICAgcmV0dXJuIGZpZWxkcworCisKK2RlZiBfcmVhZF9uYW1lKHNv
Y2tldCk6CisgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKKyAg
ICBuYW1lID0gYicnCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBi
eXRlIGZyb20gdGhlIHNlcnZlcgorICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAx
KQorICAgICAgICBpZiBjaCA9PSBiJ1xyJzogICMgMHgwRAorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgbmFtZSAlcicgJSBu
YW1lKQorICAgICAgICBlbGlmIGNoID09IGInOic6ICAjIDB4M0EKKyAgICAgICAgICAgIHJldHVy
biBuYW1lLmxvd2VyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgKz0gY2gKKwor
CitkZWYgX3NraXBfc3BhY2VzKHNvY2tldCk6CisgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZy
b20gdGhlIHNlcnZlcgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRl
cyhzb2NrZXQsIDEpCisgICAgICAgIGlmIGNoID09IGInICc6ICAjIDB4MjAKKyAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgIHJldHVybiBjaAorCisKK2RlZiBfcmVhZF92YWx1ZShzb2NrZXQs
IGNoKToKKyAgICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKKyAg
ICB2YWx1ZSA9IGInJworICAgICMgNC4xIDM2LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAg
ICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBjaCA9PSBiJ1xyJzogICMgMHgwRAorICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGVsaWYgY2ggPT0gYidcbic6ICAjIDB4MEEKKyAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVy
IHZhbHVlICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICB2YWx1ZSArPSBjaAorICAgICAgICBjaCA9IHJlY2VpdmVfYnl0
ZXMoc29ja2V0LCAxKQorCisKK2RlZiByZWFkX2ZyYW1lX2hlYWRlcihzb2NrZXQpOgorCisgICAg
Zmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgZmluID0gKGZp
cnN0X2J5dGUgPj4gNykgJiAxCisgICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQorICAg
IHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEKKyAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4g
NCkgJiAxCisgICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgorCisgICAgc2Vjb25kX2J5dGUg
PSBvcmQocmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpKQorICAgIG1hc2sgPSAoc2Vjb25kX2J5dGUg
Pj4gNykgJiAxCisgICAgcGF5bG9hZF9sZW5ndGggPSBzZWNvbmRfYnl0ZSAmIDB4N2YKKworICAg
IGlmIG1hc2sgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNYXNrIGJpdCBtdXN0IGJl
IDAgZm9yIGZyYW1lcyBjb21pbmcgZnJvbSBzZXJ2ZXInKQorCisgICAgaWYgcGF5bG9hZF9sZW5n
dGggPT0gMTI3OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0
ZXMoc29ja2V0LCA4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFR
JywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3Ro
ID4gMHg3RkZGRkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHRl
bmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09
IDEyNjoKKyAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMikKKyAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGV4
dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQorCisgICAgcmV0dXJuIGZpbiwgcnN2MSwgcnN2Miwg
cnN2Mywgb3Bjb2RlLCBwYXlsb2FkX2xlbmd0aAorCisKK2NsYXNzIF9UTFNTb2NrZXQob2JqZWN0
KToKKyAgICAiIiJXcmFwcGVyIGZvciBhIFRMUyBjb25uZWN0aW9uLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByYXdfc29ja2V0KToKKyAgICAgICAgc2VsZi5fc3NsID0gc29ja2V0LnNzbChy
YXdfc29ja2V0KQorCisgICAgZGVmIHNlbmQoc2VsZiwgYnl0ZXMpOgorICAgICAgICByZXR1cm4g
c2VsZi5fc3NsLndyaXRlKGJ5dGVzKQorCisgICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZT0tMSk6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9zc2wucmVhZChzaXplKQorCisgICAgZGVmIGNsb3NlKHNlbGYp
OgorICAgICAgICAjIE5vdGhpbmcgdG8gZG8uCisgICAgICAgIHBhc3MKKworCitjbGFzcyBIdHRw
U3RhdHVzRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBi
ZSByYWlzZWQgd2hlbiB1bmV4cGVjdGVkIGh0dHAgc3RhdHVzIGNvZGUgd2FzCisgICAgcmVjZWl2
ZWQgYXMgYSByZXN1bHQgb2YgaGFuZHNoYWtlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBzdGF0dXMpOgorICAgICAgICBzdXBlcihIdHRwU3RhdHVzRXhjZXB0aW9uLCBz
ZWxmKS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cworCisKK2Ns
YXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtl
IHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgIGRlZiBoYW5kc2hha2Uoc2VsZiwgc29ja2V0KToKKyAgICAgICAgIiIiSGFuZHNo
YWtlIFdlYlNvY2tldC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBFeGNlcHRpb246
IGhhbmRzaGFrZSBmYWlsZWQuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3NvY2tldCA9
IHNvY2tldAorCisgICAgICAgIHJlcXVlc3RfbGluZSA9IF9tZXRob2RfbGluZShzZWxmLl9vcHRp
b25zLnJlc291cmNlKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNo
YWtlIFJlcXVlc3QtTGluZTogJXInLCByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tl
dC5zZW5kYWxsKHJlcXVlc3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRz
ID0gW10KKyAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFERVIpCisgICAgICAgIGZp
ZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQorCisgICAgICAgIGZpZWxkcy5hcHBlbmQo
CisgICAgICAgICAgICBfZm9ybWF0X2hvc3RfaGVhZGVyKHNlbGYuX29wdGlvbnMuc2VydmVyX2hv
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVy
X3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNl
X3RscykpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uIGlzIDg6CisgICAgICAg
ICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdp
bikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVh
ZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51
cmFuZG9tKDE2KQorICAgICAgICBrZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkK
KyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZWMtV2ViU29ja2V0LUtleTogJXMgKCVzKScs
IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tl
eSkpCisgICAgICAgIGZpZWxkcy5hcHBlbmQodSdTZWMtV2ViU29ja2V0LUtleTogJXNcclxuJyAl
IGtleS5kZWNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJT
b2NrZXQtVmVyc2lvbjogJWRcclxuJyAlIHNlbGYuX29wdGlvbnMudmVyc2lvbikKKworICAgICAg
ICAjIFNldHRpbmcgdXAgZXh0ZW5zaW9ucy4KKyAgICAgICAgaWYgbGVuKHNlbGYuX29wdGlvbnMu
ZXh0ZW5zaW9ucykgPiAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9uczogJXNcclxuJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcu
am9pbihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKKwor
ICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwoZmllbGQuZW5jb2RlKCdVVEYtOCcpKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChiJ1xyXG4nKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IG9wZW5pbmcgaGFu
ZHNoYWtlIHJlcXVlc3QnKQorCisgICAgICAgIGZpZWxkID0gYicnCisgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAg
ICAgICAgICAgZmllbGQgKz0gY2gKKyAgICAgICAgICAgIGlmIGNoID09IGInXG4nOgorICAgICAg
ICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhh
bmRzaGFrZSBSZXNwb25zZS1MaW5lOiAlcicsIGZpZWxkKQorCisgICAgICAgICMgV2lsbCByYWlz
ZSBhIFVuaWNvZGVEZWNvZGVFcnJvciB3aGVuIHRoZSBkZWNvZGUgZmFpbHMKKyAgICAgICAgaWYg
bGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRoKGInXHJcbicpOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdXcm9uZyBzdGF0dXMgbGluZTogJXMnICUgZmllbGQuZGVjb2Rl
KCdMYXRpbi0xJykpCisgICAgICAgIG0gPSByZS5tYXRjaChiJ1teIF0qIChbXiBdKikgLionLCBm
aWVsZCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdObyBIVFRQIHN0YXR1cyBjb2RlIGZvdW5kIGluIHN0YXR1cyBsaW5lOiAlcycgJQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmRlY29kZSgnTGF0aW4tMScpKQorICAgICAgICBj
b2RlID0gbS5ncm91cCgxKQorICAgICAgICBpZiBub3QgcmUubWF0Y2goYidbMC05XVswLTldWzAt
OV0kJywgY29kZSk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXMgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBsaW5l
OiAlcycgJQorICAgICAgICAgICAgICAgIChjb2RlLmRlY29kZSgnTGF0aW4tMScpLCBmaWVsZC5k
ZWNvZGUoJ0xhdGluLTEnKSkpCisgICAgICAgIGlmIGNvZGUgIT0gYicxMDEnOgorICAgICAgICAg
ICAgcmFpc2UgSHR0cFN0YXR1c0V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQg
SFRUUCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5kICVzIGluIHN0YXR1cyBsaW5lOiAnCisgICAg
ICAgICAgICAgICAgJyVyJyAlIChjb2RlLmRlY29kZSgnTGF0aW4tMScpLCBmaWVsZC5kZWNvZGUo
J0xhdGluLTEnKSksCisgICAgICAgICAgICAgICAgaW50KGNvZGUpKQorICAgICAgICBmaWVsZHMg
PSBfcmVhZF9maWVsZHMoc2VsZi5fc29ja2V0KQorICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMo
c2VsZi5fc29ja2V0LCAxKQorICAgICAgICBpZiBjaCAhPSBiJ1xuJzogICMgMHgwQQorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHBlY3RlZCBMRiBidXQgZm91bmQ6ICVyJyAlIGNoKQor
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVzcG9uc2Ug
aGVhZGVyczogJXInLCBmaWVsZHMpCisKKyAgICAgICAgIyBDaGVjayAvZmllbGRzLworICAgICAg
ICBpZiBsZW4oZmllbGRzWyd1cGdyYWRlJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ011bHRpcGxlIFVwZ3JhZGUgaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWVsZHNbJ3VwZ3JhZGUnXSkKKyAgICAgICAgaWYgbGVuKGZpZWxk
c1snY29ubmVjdGlvbiddKSAhPSAxOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNdWx0
aXBsZSBDb25uZWN0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmllbGRzWydjb25uZWN0aW9uJ10pCisgICAgICAgIGlmIGZpZWxkc1sndXBncmFk
ZSddWzBdICE9ICd3ZWJzb2NrZXQnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4
cGVjdGVkIFVwZ3JhZGUgaGVhZGVyIHZhbHVlOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpZWxkc1sndXBncmFkZSddWzBdKQorICAgICAgICBpZiBmaWVsZHNbJ2Nvbm5lY3Rp
b24nXVswXS5sb3dlcigpICE9ICd1cGdyYWRlJzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignVW5leHBlY3RlZCBDb25uZWN0aW9uIGhlYWRlciB2YWx1ZTogJXMnICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXVswXSkKKworICAgICAgICBpZiBs
ZW4oZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddKSAhPSAxOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdNdWx0aXBsZSBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXJzIGZvdW5k
OiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1snc2VjLXdlYnNvY2tl
dC1hY2NlcHQnXSkKKworICAgICAgICBhY2NlcHQgPSBmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNj
ZXB0J11bMF0KKworICAgICAgICAjIFZhbGlkYXRlCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRlY29kZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGRlY29kZShhY2NlcHQpCisgICAgICAgIGV4Y2Vw
dCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigK
KyAgICAgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyIFNlYy1XZWJTb2NrZXQt
QWNjZXB0OiAnICsgYWNjZXB0KQorCisgICAgICAgIGlmIGxlbihkZWNvZGVkX2FjY2VwdCkgIT0g
MjA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgJ0RlY29kZWQgdmFsdWUgb2YgU2VjLVdlYlNvY2tldC1BY2NlcHQgaXMgbm90IDIwLWJ5dGUg
bG9uZycpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBY3R1YWwgU2VjLVdlYlNvY2tl
dC1BY2NlcHQ6ICVyICglcyknLCBhY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1
dGlsLmhleGlmeShkZWNvZGVkX2FjY2VwdCkpCisKKyAgICAgICAgb3JpZ2luYWxfZXhwZWN0ZWRf
YWNjZXB0ID0gc2hhMShrZXkgKyBXRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRpZ2VzdCgpCisgICAg
ICAgIGV4cGVjdGVkX2FjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfZXhwZWN0ZWRf
YWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgU2VjLVdlYlNv
Y2tldC1BY2NlcHQ6ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfYWNjZXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2lu
YWxfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRfYWNj
ZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnSW52YWxpZCBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXI6ICVyIChleHBl
Y3RlZCkgIT0gJXIgJworICAgICAgICAgICAgICAgICcoYWN0dWFsKScgJSAoYWNjZXB0LCBleHBl
Y3RlZF9hY2NlcHQpKQorCisgICAgICAgIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciA9IGZpZWxk
cy5nZXQoJ3NlYy13ZWJzb2NrZXQtZXh0ZW5zaW9ucycpCisgICAgICAgIGFjY2VwdGVkX2V4dGVu
c2lvbnMgPSBbXQorICAgICAgICBpZiBzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVu
c2lvbnMoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKHNlcnZlcl9leHRlbnNpb25zX2hlYWRl
cikpCisKKyAgICAgICAgIyBTY2FuIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0IHRvIGNoZWNrIGlm
IHRoZXJlIGlzIGFueSB1bnJlY29nbml6ZWQKKyAgICAgICAgIyBleHRlbnNpb25zIG9yIGV4dGVu
c2lvbnMgd2UgZGlkbid0IHJlcXVlc3QgaW4gaXQuIFRoZW4sIGZvcgorICAgICAgICAjIGV4dGVu
c2lvbnMgd2UgcmVxdWVzdCwgcGFyc2UgdGhlbSBhbmQgc3RvcmUgcGFyYW1ldGVycy4gVGhleSB3
aWxsIGJlCisgICAgICAgICMgdXNlZCBsYXRlciBieSBlYWNoIGV4dGVuc2lvbi4KKyAgICAgICAg
Zm9yIGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgaWYgZXh0
ZW5zaW9uLm5hbWUoKSA9PSBfUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTjoKKyAgICAgICAg
ICAgICAgICBjaGVja2VyID0gc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUK
KyAgICAgICAgICAgICAgICBpZiBjaGVja2VyOgorICAgICAgICAgICAgICAgICAgICBjaGVja2Vy
KGV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCB1bnJlY29nbml6ZWQgZXh0ZW5zaW9uOiAlcycgJQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5uYW1lKCkpCisKKworY2xhc3Mg
V2ViU29ja2V0U3RyZWFtKG9iamVjdCk6CisgICAgIiIiRnJhbWUgcHJvY2Vzc29yIGZvciB0aGUg
V2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHNvY2tldCwgaGFuZHNoYWtlKToKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFuZHNoYWtl
CisgICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAorCisgICAgICAgICMgRmlsdGVycyBhcHBs
aWVkIHRvIGFwcGxpY2F0aW9uIGRhdGEgcGFydCBvZiBkYXRhIGZyYW1lcy4KKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQorICAgICAgICBzZWxmLl9pbmNvbWluZ19m
cmFtZV9maWx0ZXIgPSBOb25lCisKKyAgICAgICAgc2VsZi5fZnJhZ21lbnRlZCA9IEZhbHNlCisK
KyAgICBkZWYgX21hc2tfaHliaShzZWxmLCBzKToKKyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTog
b3MudXJhbmRvbSBkb2VzIG9wZW4vcmVhZC9jbG9zZSBmb3IgZXZlcnkgY2FsbC4gSWYKKyAgICAg
ICAgIyBwZXJmb3JtYW5jZSBtYXR0ZXJzLCBjaGFuZ2UgdGhpcyB0byBzb21lIGxpYnJhcnkgY2Fs
bCB0aGF0IGdlbmVyYXRlcworICAgICAgICAjIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1
ZG8gcmFuZG9tIG51bWJlciBzZXF1ZW5jZS4KKyAgICAgICAgbWFza2luZ19ub25jZSA9IG9zLnVy
YW5kb20oNCkKKyAgICAgICAgcmVzdWx0ID0gW21hc2tpbmdfbm9uY2VdCisgICAgICAgIGNvdW50
ID0gMAorICAgICAgICBmb3IgYyBpbiBpdGVyYnl0ZXMocyk6CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHV0aWwucGFja19ieXRlKGMgXiBpbmRleGJ5dGVzKG1hc2tpbmdfbm9uY2UsIGNvdW50
KSkpCisgICAgICAgICAgICBjb3VudCA9IChjb3VudCArIDEpICUgbGVuKG1hc2tpbmdfbm9uY2Up
CisgICAgICAgIHJldHVybiBiJycuam9pbihyZXN1bHQpCisKKyAgICBkZWYgc2VuZF9mcmFtZV9v
Zl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToKKyAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoaGVhZGVyICsgc2VsZi5fbWFza19oeWJpKGJvZHkpKQorCisgICAgZGVmIHNl
bmRfZGF0YShzZWxmLAorICAgICAgICAgICAgICAgICAgcGF5bG9hZCwKKyAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICBlbmQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgIG1hc2s9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgIHJzdjE9MCwKKyAgICAgICAgICAg
ICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgIHJzdjM9MCk6CisgICAgICAgIGlmIHNl
bGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBheWxv
YWQgPSBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBheWxvYWQpCisKKyAgICAg
ICAgaWYgc2VsZi5fZnJhZ21lbnRlZDoKKyAgICAgICAgICAgIG9wY29kZSA9IE9QQ09ERV9DT05U
SU5VQVRJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wY29kZSA9IGZyYW1lX3R5cGUK
KworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UK
KyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2Zy
YWdtZW50ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAgICAgaWYgbWFzazoK
KyAgICAgICAgICAgIG1hc2tfYml0ID0gMSA8PCA3CisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBtYXNrX2JpdCA9IDAKKworICAgICAgICBoZWFkZXIgPSB1dGlsLnBhY2tfYnl0ZShmaW4gPDwg
NyB8IHJzdjEgPDwgNiB8IHJzdjIgPDwgNSB8IHJzdjMgPDwgNAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IG9wY29kZSkKKyAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5
bG9hZCkKKyAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPD0gMTI1OgorICAgICAgICAgICAgaGVh
ZGVyICs9IHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgcGF5bG9hZF9sZW5ndGgpCisgICAgICAg
IGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8IDE2OgorICAgICAgICAgICAgaGVhZGVyICs9IHV0
aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAg
ICAgICchSCcsIHBheWxvYWRfbGVuZ3RoKQorICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwg
MSA8PCA2MzoKKyAgICAgICAgICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8
IDEyNykgKyBzdHJ1Y3QucGFjaygKKyAgICAgICAgICAgICAgICAnIVEnLCBwYXlsb2FkX2xlbmd0
aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVG9vIGxvbmcg
cGF5bG9hZCAoJWQgYnl0ZSknICUgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGlmIG1hc2s6Cisg
ICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fbWFza19oeWJpKHBheWxvYWQpCisgICAgICAgIHNl
bGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIHBheWxvYWQpCisKKyAgICBkZWYgc2VuZF9iaW5h
cnkoc2VsZiwgcGF5bG9hZCwgZW5kPVRydWUsIG1hc2s9VHJ1ZSk6CisgICAgICAgIHNlbGYuc2Vu
ZF9kYXRhKHBheWxvYWQsIE9QQ09ERV9CSU5BUlksIGVuZCwgbWFzaykKKworICAgIGRlZiBzZW5k
X3RleHQoc2VsZiwgcGF5bG9hZCwgZW5kPVRydWUsIG1hc2s9VHJ1ZSk6CisgICAgICAgIHNlbGYu
c2VuZF9kYXRhKHBheWxvYWQuZW5jb2RlKCd1dGYtOCcpLCBPUENPREVfVEVYVCwgZW5kLCBtYXNr
KQorCisgICAgZGVmIF9hc3NlcnRfcmVjZWl2ZV9kYXRhKHNlbGYsIHBheWxvYWQsIG9wY29kZSwg
ZmluLCByc3YxLCByc3YyLCByc3YzKToKKyAgICAgICAgKGFjdHVhbF9maW4sIGFjdHVhbF9yc3Yx
LCBhY3R1YWxfcnN2MiwgYWN0dWFsX3JzdjMsIGFjdHVhbF9vcGNvZGUsCisgICAgICAgICBwYXls
b2FkX2xlbmd0aCkgPSByZWFkX2ZyYW1lX2hlYWRlcihzZWxmLl9zb2NrZXQpCisKKyAgICAgICAg
aWYgYWN0dWFsX29wY29kZSAhPSBvcGNvZGU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1VuZXhwZWN0ZWQgb3Bjb2RlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG9wY29kZSwgYWN0dWFsX29wY29kZSkpCisKKyAgICAg
ICAgaWYgYWN0dWFsX2ZpbiAhPSBmaW46CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgZmluOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZpbiwgYWN0dWFsX2ZpbikpCisKKyAgICAgICAgaWYgcnN2MSBp
cyBOb25lOgorICAgICAgICAgICAgcnN2MSA9IDAKKworICAgICAgICBpZiByc3YyIGlzIE5vbmU6
CisgICAgICAgICAgICByc3YyID0gMAorCisgICAgICAgIGlmIHJzdjMgaXMgTm9uZToKKyAgICAg
ICAgICAgIHJzdjMgPSAwCisKKyAgICAgICAgaWYgYWN0dWFsX3JzdjEgIT0gcnN2MToKKyAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCByc3YxOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjEsIGFjdHVh
bF9yc3YxKSkKKworICAgICAgICBpZiBhY3R1YWxfcnN2MiAhPSByc3YyOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjI6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFj
dHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2MiwgYWN0dWFsX3JzdjIp
KQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YzICE9IHJzdjM6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MzogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YzLCBhY3R1YWxfcnN2MykpCisKKyAg
ICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgcGF5bG9hZF9sZW5n
dGgpCisKKyAgICAgICAgaWYgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIuZmls
dGVyKHJlY2VpdmVkKQorCisgICAgICAgIGlmIGxlbihyZWNlaXZlZCkgIT0gbGVuKHBheWxvYWQp
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdVbmV4cGVj
dGVkIHBheWxvYWQgbGVuZ3RoOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCisgICAg
ICAgICAgICAgICAgKGxlbihwYXlsb2FkKSwgbGVuKHJlY2VpdmVkKSkpCisKKyAgICAgICAgaWYg
cGF5bG9hZCAhPSByZWNlaXZlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1
YWwpJyAlCisgICAgICAgICAgICAgICAgKHBheWxvYWQsIHJlY2VpdmVkKSkKKworICAgIGRlZiBh
c3NlcnRfcmVjZWl2ZV9iaW5hcnkoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBheWxvYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9T1BDT0RFX0JJ
TkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnN2MT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2Mz1Ob25lKToK
KyAgICAgICAgc2VsZi5fYXNzZXJ0X3JlY2VpdmVfZGF0YShwYXlsb2FkLCBvcGNvZGUsIGZpbiwg
cnN2MSwgcnN2MiwgcnN2MykKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGNvZGU9T1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmluPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJzdjI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc3YzPU5vbmUpOgorICAgICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQu
ZW5jb2RlKCd1dGYtOCcpLCBvcGNvZGUsIGZpbiwgcnN2MSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YyLCByc3YzKQorCisgICAgZGVmIF9idWlsZF9jbG9zZV9mcmFtZShz
ZWxmLCBjb2RlLCByZWFzb24sIG1hc2spOgorICAgICAgICBmcmFtZSA9IHV0aWwucGFja19ieXRl
KDEgPDwgNyB8IE9QQ09ERV9DTE9TRSkKKworICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgcmVhc29uLmVuY29k
ZSgndXRmLTgnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYm9keSA9IGInJworICAgICAg
ICBpZiBtYXNrOgorICAgICAgICAgICAgZnJhbWUgKz0gdXRpbC5wYWNrX2J5dGUoMSA8PCA3IHwg
bGVuKGJvZHkpKSArIHNlbGYuX21hc2tfaHliaShib2R5KQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZnJhbWUgKz0gdXRpbC5wYWNrX2J5dGUobGVuKGJvZHkpKSArIGJvZHkKKyAgICAgICAg
cmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgor
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChzZWxmLl9idWlsZF9jbG9zZV9mcmFtZShjb2Rl
LCByZWFzb24sIFRydWUpKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNv
ZGUsIHJlYXNvbik6CisgICAgICAgIGV4cGVjdGVkX2ZyYW1lID0gc2VsZi5fYnVpbGRfY2xvc2Vf
ZnJhbWUoY29kZSwgcmVhc29uLCBGYWxzZSkKKyAgICAgICAgYWN0dWFsX2ZyYW1lID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihleHBlY3RlZF9mcmFtZSkpCisgICAgICAgIGlmIGFj
dHVhbF9mcmFtZSAhPSBleHBlY3RlZF9mcmFtZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBjbG9zZSBmcmFtZTogJXIgKGV4cGVjdGVk
KSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAgICAgICAgIChleHBlY3RlZF9mcmFtZSwgYWN0
dWFsX2ZyYW1lKSkKKworCitjbGFzcyBDbGllbnRPcHRpb25zKG9iamVjdCk6CisgICAgIiIiSG9s
ZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIENsaWVudCBvYmplY3QuIiIiCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnZlcnNpb24gPSAxMworICAgICAgICBz
ZWxmLnNlcnZlcl9ob3N0ID0gJycKKyAgICAgICAgc2VsZi5vcmlnaW4gPSAnJworICAgICAgICBz
ZWxmLnJlc291cmNlID0gJycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IC0xCisgICAgICAg
IHNlbGYuc29ja2V0X3RpbWVvdXQgPSAxMDAwCisgICAgICAgIHNlbGYudXNlX3RscyA9IEZhbHNl
CisgICAgICAgIHNlbGYuZXh0ZW5zaW9ucyA9IFtdCisKKworZGVmIGNvbm5lY3Rfc29ja2V0X3dp
dGhfcmV0cnkoaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlX3RscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5PTEw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xlZXBfc2VjPTAuMSk6CisgICAgcmV0
cnlfY291bnQgPSAwCisgICAgd2hpbGUgcmV0cnlfY291bnQgPCByZXRyeToKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICAgICAgcy5zZXR0aW1l
b3V0KHRpbWVvdXQpCisgICAgICAgICAgICBzLmNvbm5lY3QoKGhvc3QsIHBvcnQpKQorICAgICAg
ICAgICAgaWYgdXNlX3RsczoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1RMU1NvY2tldChzKQor
ICAgICAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgor
ICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFRlVTRUQ6CisgICAgICAgICAg
ICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0cnlfY291
bnQgPSByZXRyeV9jb3VudCArIDEKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3Nl
YykKKworICAgIHJldHVybiBOb25lCisKKworY2xhc3MgQ2xpZW50KG9iamVjdCk6CisgICAgIiIi
V2ViU29ja2V0IGNsaWVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgaGFu
ZHNoYWtlLCBzdHJlYW1fY2xhc3MpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9j
bGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBOb25lCisKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gaGFu
ZHNoYWtlCisgICAgICAgIHNlbGYuX3N0cmVhbV9jbGFzcyA9IHN0cmVhbV9jbGFzcworCisgICAg
ZGVmIGNvbm5lY3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldCA9IGNvbm5lY3Rfc29ja2V0
X3dpdGhfcmV0cnkoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuc29ja2V0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKQorCisgICAgICAgIHNlbGYu
X2hhbmRzaGFrZS5oYW5kc2hha2Uoc2VsZi5fc29ja2V0KQorCisgICAgICAgIHNlbGYuX3N0cmVh
bSA9IHNlbGYuX3N0cmVhbV9jbGFzcyhzZWxmLl9zb2NrZXQsIHNlbGYuX2hhbmRzaGFrZSkKKwor
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCisKKyAg
ICBkZWYgc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoc2VsZiwgaGVhZGVyLCBib2R5KToK
KyAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKGhlYWRl
ciwgYm9keSkKKworICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICBlbmQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgIGJpbmFyeT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgIHJhdz1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1ZSk6CisgICAgICAgIGlmIGJpbmFyeToKKyAg
ICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShtZXNzYWdlLCBlbmQsIG1hc2spCisg
ICAgICAgIGVsaWYgcmF3OgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfZGF0YShtZXNz
YWdlLCBPUENPREVfVEVYVCwgZW5kLCBtYXNrKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLnNlbmRfdGV4dChtZXNzYWdlLCBlbmQsIG1hc2spCisKKyAgICBkZWYgYXNz
ZXJ0X3JlY2VpdmUoc2VsZiwgcGF5bG9hZCwgYmluYXJ5PUZhbHNlKToKKyAgICAgICAgaWYgYmlu
YXJ5OgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeShwYXls
b2FkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmFzc2VydF9yZWNl
aXZlX3RleHQocGF5bG9hZCkKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVT
X05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgorICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9j
bG9zZShjb2RlLCByZWFzb24pCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwg
Y29kZT1TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24pCisKKyAgICBkZWYgY2xvc2Vf
c29ja2V0KHNlbGYpOgorICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVmIGFz
c2VydF9jb25uZWN0aW9uX2Nsb3NlZChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmVhZF9kYXRhID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGlmIHN0cihlKS5maW5kKAorICAgICAgICAg
ICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQgYmVmb3JlIHJlY2VpdmluZyByZXF1ZXN0ZWQg
bGVuZ3RoICcKKyAgICAgICAgICAgICkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBlcnJvcl9udW1iZXIsIG1lc3NhZ2UgPSBl
CisgICAgICAgICAgICAgICAgZm9yIGVycm9yX25hbWUgaW4gWydFQ09OTlJFU0VUJywgJ1dTQUVD
T05OUkVTRVQnXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yX25hbWUgaW4gZGlyKGVy
cm5vKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlcnJvcl9udW1iZXIgPT0gZ2V0
YXR0cihlcnJubywgZXJyb3JfbmFtZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgZQorICAgICAgICAg
ICAgcmFpc2UgZQorCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ29ubmVjdGlvbiBpcyBub3Qg
Y2xvc2VkIChSZWFkOiAlciknICUgcmVhZF9kYXRhKQorCisKK2RlZiBjcmVhdGVfY2xpZW50KG9w
dGlvbnMpOgorICAgIHJldHVybiBDbGllbnQob3B0aW9ucywgV2ViU29ja2V0SGFuZHNoYWtlKG9w
dGlvbnMpLCBXZWJTb2NrZXRTdHJlYW0pCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVhZWY1MmVjZjAxOTdmN2U1N2YzNDZhNzE1NDgyNTJh
Mzg2MWU2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5w
eQpAQCAtMCwwICsxLDIyNyBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJNb2NrcyBmb3IgdGVzdGlu
Zy4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0
IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHN0cnVjdAoraW1wb3J0
IHNpeAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBT
dHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwor
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKworY2xhc3MgX01vY2tDb25uQmFzZShvYmpl
Y3QpOgorICAgICIiIkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9yIG1vZF9weXRob24uYXBhY2hlLm1w
X2Nvbm4uCisKKyAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVu
IHRvIGEgKG1vY2spIG1wX2Nvbm4uCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBzZWxmLl93cml0ZV9kYXRhID0gW10KKyAgICAgICAgc2VsZi5yZW1vdGVfYWRkciA9
IGInZmFrZV9hZGRyZXNzJworCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICAi
IiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLndyaXRlLgorCisgICAgICAgIGRh
dGEgc2hvdWxkIGJlIGJ5dGVzIHdoZW4gdG91Y2hpbmcgdGhpcyBtZXRob2QgbWFudWFsbHkuCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEuYXBwZW5kKGRhdGEpCisKKyAg
ICBkZWYgd3JpdHRlbl9kYXRhKHNlbGYpOgorICAgICAgICAiIiJHZXQgYnl0ZXMgd3JpdHRlbiB0
byB0aGlzIG1vY2suIiIiCisKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHNlbGYuX3dyaXRlX2Rh
dGEpCisKKworY2xhc3MgTW9ja0Nvbm4oX01vY2tDb25uQmFzZSk6CisgICAgIiIiTW9jayBmb3Ig
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBz
cGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCisgICAg
d2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCisgICAgIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlYWRfZGF0YSk6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlYWRfZGF0YTogYnl0ZXMgdGhh
dCBzaG91bGQgYmUgcmV0dXJuZWQgd2hlbiByZWFkKiBtZXRob2RzIGFyZQorICAgICAgICAgICAg
Y2FsbGVkLgorICAgICAgICAiIiIKKworICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNl
bGYpCisgICAgICAgIHNlbGYuX3JlYWRfZGF0YSA9IHJlYWRfZGF0YQorICAgICAgICBzZWxmLl9y
ZWFkX3BvcyA9IDAKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJp
ZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKKworICAgICAgICBpZiBz
ZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVhZF9kYXRhKToKKyAgICAgICAgICAgIHJldHVy
biBiJycKKyAgICAgICAgZW5kX2luZGV4ID0gc2VsZi5fcmVhZF9kYXRhLmZpbmQoYidcbicsIHNl
bGYuX3JlYWRfcG9zKSArIDEKKyAgICAgICAgaWYgbm90IGVuZF9pbmRleDoKKyAgICAgICAgICAg
IGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFkX2RhdGEpCisgICAgICAgIHJldHVybiBzZWxmLl9y
ZWFkX3VwX3RvKGVuZF9pbmRleCkKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6CisgICAg
ICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKKworICAg
ICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVhZF9kYXRhKToKKyAgICAgICAg
ICAgIHJldHVybiBiJycKKyAgICAgICAgZW5kX2luZGV4ID0gbWluKGxlbihzZWxmLl9yZWFkX2Rh
dGEpLCBzZWxmLl9yZWFkX3BvcyArIGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRf
dXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIF9yZWFkX3VwX3RvKHNlbGYsIGVuZF9pbmRleCk6
CisgICAgICAgIGxpbmUgPSBzZWxmLl9yZWFkX2RhdGFbc2VsZi5fcmVhZF9wb3M6ZW5kX2luZGV4
XQorICAgICAgICBzZWxmLl9yZWFkX3BvcyA9IGVuZF9pbmRleAorICAgICAgICByZXR1cm4gbGlu
ZQorCisKK2NsYXNzIE1vY2tCbG9ja2luZ0Nvbm4oX01vY2tDb25uQmFzZSk6CisgICAgIiIiQmxv
Y2tpbmcgbW9jayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KKworICAgIFRoaXMgZW5h
YmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBt
cF9jb25uIGFzCisgICAgd2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCisg
ICAgQ2FsbGVycyBvZiByZWFkKiBtZXRob2RzIHdpbGwgYmxvY2sgaWYgdGhlcmUgaXMgbm8gYnl0
ZXMgYXZhaWxhYmxlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
X01vY2tDb25uQmFzZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9xdWV1ZSA9IHNpeC5t
b3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICIi
Ik92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxpbmUuIiIiCisgICAgICAg
IGxpbmUgPSBieXRlYXJyYXkoKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYyA9
IHNlbGYuX3F1ZXVlLmdldCgpCisgICAgICAgICAgICBsaW5lLmFwcGVuZChjKQorICAgICAgICAg
ICAgaWYgYyA9PSBvcmQoYidcbicpOgorICAgICAgICAgICAgICAgIHJldHVybiBieXRlcyhsaW5l
KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgbW9k
X3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAgIGRhdGEgPSBieXRlYXJy
YXkoKQorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKGxlbmd0aCk6CisgICAgICAgICAgICBk
YXRhLmFwcGVuZChzZWxmLl9xdWV1ZS5nZXQoKSkKKworICAgICAgICByZXR1cm4gYnl0ZXMoZGF0
YSkKKworICAgIGRlZiBwdXRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgorICAgICAgICAiIiJQdXQgYnl0
ZXMgdG8gYmUgcmVhZCBmcm9tIHRoaXMgbW9jay4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgYnl0ZXM6IGJ5dGVzIHRvIGJlIHJlYWQuCisgICAgICAgICIiIgorCisgICAgICAgIGZvciBi
eXRlIGluIHNpeC5pdGVyYnl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0
KGJ5dGUpCisKKworY2xhc3MgTW9ja1RhYmxlKGRpY3QpOgorICAgICIiIk1vY2sgdGFibGUuCisK
KyAgICBUaGlzIG1pbWljcyBtb2RfcHl0aG9uIG1wX3RhYmxlLiBOb3RlIHRoYXQgb25seSB0aGUg
bWV0aG9kcyB1c2VkIGJ5CisgICAgdGVzdHMgYXJlIG92ZXJyaWRkZW4uCisgICAgIiIiCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGNvcHlfZnJvbT17fSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
Y29weV9mcm9tLCBkaWN0KToKKyAgICAgICAgICAgIGNvcHlfZnJvbSA9IGxpc3QoY29weV9mcm9t
Lml0ZW1zKCkpCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToKKyAgICAgICAg
ICAgIHNlbGYuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXkpOgorICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX2dldGl0
ZW1fXyhrZXkubG93ZXIoKSkKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVl
KToKKyAgICAgICAgc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhrZXkubG93ZXIo
KSwgdmFsdWUpCisKKyAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5vbmUpOgorICAg
ICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2VyKCksIGRlZl92
YWx1ZSkKKworCitjbGFzcyBNb2NrUmVxdWVzdChvYmplY3QpOgorICAgICIiIk1vY2sgcmVxdWVz
dC4KKworICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgdXJpPU5vbmUsCisgICAgICAgICAg
ICAgICAgIGhlYWRlcnNfaW49e30sCisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb249Tm9uZSwK
KyAgICAgICAgICAgICAgICAgbWV0aG9kPSdHRVQnLAorICAgICAgICAgICAgICAgICBwcm90b2Nv
bD0nSFRUUC8xLjEnLAorICAgICAgICAgICAgICAgICBpc19odHRwcz1GYWxzZSk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmd1bWVudHM6CisgICAgICAg
ICAgICB1cmk6IFVSSSBvZiB0aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIGhlYWRlcnNfaW46IFJl
cXVlc3QgaGVhZGVycy4KKyAgICAgICAgICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gdXNlZCBm
b3IgdGhlIHJlcXVlc3QuCisgICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QgbWV0aG9kLgorICAg
ICAgICAgICAgaXNfaHR0cHM6IFdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLgorCisg
ICAgICAgIFNlZSB0aGUgZG9jdW1lbnQgb2YgbW9kX3B5dGhvbiBSZXF1ZXN0IGZvciBkZXRhaWxz
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi51cmkgPSB1cmkKKyAgICAgICAgc2VsZi51bnBh
cnNlZF91cmkgPSB1cmkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAg
ICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9j
b2wKKyAgICAgICAgc2VsZi5oZWFkZXJzX2luID0gTW9ja1RhYmxlKGhlYWRlcnNfaW4pCisgICAg
ICAgICMgc2VsZi5pc19odHRwc18gbmVlZHMgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIHRlc3RzLiAg
VG8gYXZvaWQgbmFtZQorICAgICAgICAjIGNvbmZsaWN0IHdpdGggc2VsZi5pc19odHRwcygpLCBp
dCBpcyBuYW1lZCBhcyBzdWNoLgorICAgICAgICBzZWxmLmlzX2h0dHBzXyA9IGlzX2h0dHBzCisg
ICAgICAgIHNlbGYud3Nfc3RyZWFtID0gU3RyZWFtKHNlbGYsIFN0cmVhbU9wdGlvbnMoKSkKKyAg
ICAgICAgc2VsZi53c19jbG9zZV9jb2RlID0gTm9uZQorICAgICAgICBzZWxmLndzX2Nsb3NlX3Jl
YXNvbiA9IE5vbmUKKyAgICAgICAgc2VsZi53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlC
SV9MQVRFU1QKKyAgICAgICAgc2VsZi53c19kZWZsYXRlID0gRmFsc2UKKworICAgIGRlZiBpc19o
dHRwcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92
ZXIgU1NMLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5pc19odHRwc18KKworCitjbGFzcyBNb2Nr
RGlzcGF0Y2hlcihvYmplY3QpOgorICAgICIiIk1vY2sgZm9yIGRpc3BhdGNoLkRpc3BhdGNoZXIu
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRz
aGFrZV9jYWxsZWQgPSBGYWxzZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBj
b25uX2NvbnRleHQpOgorICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZV9jYWxsZWQgPSBU
cnVlCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAg
ICBwYXNzCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3J1bl9hbGwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3J1bl9hbGwucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjYyMjAxNTUzOWU0N2ZkZjUxODg3NTE1OGY2YmQ2ZjM2OTk0ZmFiYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQpAQCAtMCww
ICsxLDg3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIi
UnVuIGFsbCB0ZXN0cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK1RoaXMgc3VpdGUgaXMgZXhw
ZWN0ZWQgdG8gYmUgcnVuIHVuZGVyIHB5d2Vic29ja2V0J3Mgc3JjIGRpcmVjdG9yeSwgaS5lLiB0
aGUKK2RpcmVjdG9yeSBjb250YWluaW5nIG1vZF9weXdlYnNvY2tldCwgdGVzdCwgZXRjLgorCitU
byBjaGFuZ2UgbG9nZ2luIGxldmVsLCBwbGVhc2Ugc3BlY2lmeSAtLWxvZy1sZXZlbCBvcHRpb24u
CisgICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwgZGVidWcKKworVG8gcGFz
cyBhbnkgb3B0aW9uIHRvIHVuaXR0ZXN0IG1vZHVsZSwgcGxlYXNlIHNwZWNpZnkgb3B0aW9ucyBh
ZnRlciAnLS0nLiBGb3IKK2V4YW1wbGUsIHJ1biB0aGlzIGZvciBtYWtpbmcgdGhlIHRlc3QgcnVu
bmVyIHZlcmJvc2UuCisgICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwgZGVi
dWcgLS0gLXYKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAor
aW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2lt
cG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitfVEVTVF9NT0RVTEVfUEFUVEVSTiA9IHJlLmNv
bXBpbGUocideKHRlc3RfLispXC5weSQnKQorCisKK2RlZiBfbGlzdF90ZXN0X21vZHVsZXMoZGly
ZWN0b3J5KToKKyAgICBtb2R1bGVfbmFtZXMgPSBbXQorICAgIGZvciBmaWxlbmFtZSBpbiBvcy5s
aXN0ZGlyKGRpcmVjdG9yeSk6CisgICAgICAgIG1hdGNoID0gX1RFU1RfTU9EVUxFX1BBVFRFUk4u
c2VhcmNoKGZpbGVuYW1lKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIG1vZHVsZV9u
YW1lcy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCisgICAgcmV0dXJuIG1vZHVsZV9uYW1lcworCisK
K2RlZiBfc3VpdGUoKToKKyAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICBy
ZXR1cm4gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcygKKyAgICAgICAgX2xpc3RfdGVzdF9tb2R1
bGVzKG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4nKSkpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25Q
YXJzZXIoKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAgICAnLS1sb2ctbGV2ZWwnLAor
ICAgICAgICAnLS1sb2dfbGV2ZWwnLAorICAgICAgICB0eXBlPSdjaG9pY2UnLAorICAgICAgICBk
ZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICBkZWZhdWx0PSd3YXJuaW5nJywKKyAgICAgICAgY2hv
aWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRp
Y2FsJ10pCisgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBsb2dn
aW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xl
dmVsLnVwcGVyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFt
ZSlzICUoYXNjdGltZSlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICclKGZpbGVuYW1lKXM6
JShsaW5lbm8pZF0gJworICAgICAgICAgICAgICAgICAgICAgICAgJyUobWVzc2FnZSlzJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGVmbXQ9JyVIOiVNOiVTJykKKyAgICB1bml0dGVzdC5t
YWluKGRlZmF1bHRUZXN0PSdfc3VpdGUnLCBhcmd2PVtzeXMuYXJndlswXV0gKyBhcmdzKQorCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qvc2V0
X3N5c19wYXRoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWZjZTdiMzRiNjc1MWQ2MzVkY2RhNmUwZDRhNTcxMTk1MWEwYTMzYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qvc2V0X3N5c19wYXRoLnB5CkBAIC0w
LDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiQ29uZmlndXJhdGlvbiBmb3IgdGVzdGlu
Zy4KKworVGVzdCBmaWxlcyBzaG91bGQgaW1wb3J0IHRoaXMgbW9kdWxlIGJlZm9yZSBtb2RfcHl3
ZWJzb2NrZXQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQK
K2ltcG9ydCBvcworaW1wb3J0IHN5cworCisjIEFkZCB0aGUgcGFyZW50IGRpcmVjdG9yeSB0byBz
eXMucGF0aCB0byBlbmFibGUgaW1wb3J0aW5nIG1vZF9weXdlYnNvY2tldC4KK3N5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICcuLicpKQor
CisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZTYzOTgwZjI1ODFmOWY2MTM2ZTg1ZGMxNmJiNjRjY2JlMzczZGM5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5
CkBAIC0wLDAgKzEsMjk4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiVGVzdHMgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2lt
cG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJz
b2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gdGVzdCBpbXBvcnQgbW9j
aworZnJvbSBzaXgubW92ZXMgaW1wb3J0IHppcAorCitfVEVTVF9IQU5ETEVSU19ESVIgPSBvcy5w
YXRoLmpvaW4oCisgICAgb3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScsICdo
YW5kbGVycycpCisKK19URVNUX0hBTkRMRVJTX1NVQl9ESVIgPSBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJykKKworCitjbGFzcyBEaXNwYXRjaGVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorICAg
IGRlZiB0ZXN0X25vcm1hbGl6ZV9wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycp
LAorICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9iJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5y
ZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgo
J1xcYVxcYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgb3MucGF0
aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAorICAgICAgICAgICAgZGlzcGF0
Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9jLy4uL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnYWJjJykucmVwbGFjZSgnXFwnLCAnLycp
LAorICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhYmMnKSkKKworICAgIGRl
ZiB0ZXN0X2NvbnZlcnRlcihzZWxmKToKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2Ny
ZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYicpCisgICAgICAgICMgUHl0aG9u
IGJ1aWx0IGJ5IE1TQyBpbnNlcnRzIGEgZHJpdmUgbmFtZSBsaWtlICdDOlwnIHZpYSByZWFscGF0
aCgpLgorICAgICAgICAjIENvbnZlcnRlciBHZW5lcmF0b3IgZXhwYW5kcyBwcm92aWRlZCBwYXRo
IHVzaW5nIHJlYWxwYXRoKCkgYW5kIHVzZXMKKyAgICAgICAgIyB0aGUgcGF0aCBpbmNsdWRpbmcg
YSBkcml2ZSBuYW1lIHRvIHZlcmlmeSB0aGUgcHJlZml4LgorICAgICAgICBvc19yb290ID0gb3Mu
cGF0aC5yZWFscGF0aCgnLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVy
dGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9jL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvYy9oX3dzaC5weScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oLnB5JykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKCdhL2IvaF93c2gucHknKSkK
KworICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2Vf
Y29udmVydGVyKCdhL2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnYS9i
L2hfd3NoLnB5JykpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0
aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJy9hL2IvLy8nKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9u
b3JtYWxpemVfcGF0aCgnL2EvYi8uLi9iL2hfd3NoLnB5JykpKQorCisgICAgICAgIGNvbnZlcnRl
ciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoCisgICAgICAg
ICAgICAnL2EvLi4vYS9iLy4uL2IvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBj
b252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKworICAgICAgICBjb252ZXJ0ZXIg
PSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKHInXGFcYicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyByJ2FcYlxo
X3dzaC5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19y
b290ICsgcidhL2IvaF93c2gucHknKSkKKworICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV9oYW5kbGVy
X2ZpbGVfcGF0aHMoc2VsZik6CisgICAgICAgIHBhdGhzID0gbGlzdCgKKyAgICAgICAgICAgIGRp
c3BhdGNoLl9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKF9URVNUX0hBTkRMRVJTX0RJUikp
CisgICAgICAgIHBhdGhzLnNvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgsIGxlbihw
YXRocykpCisgICAgICAgIGV4cGVjdGVkX3BhdGhzID0gWworICAgICAgICAgICAgb3MucGF0aC5q
b2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2Fib3J0X2J5X3VzZXJfd3NoLnB5JyksCisgICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JyksCisg
ICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnb3JpZ2luX2NoZWNr
X3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwg
J3N1YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93
c2gucHknKSwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdz
dWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9U
RVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdwbGFpbl93c2gucHknKSwKKyAgICAgICAgICAgIG9z
LnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICd3cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSwKKyAgICAgICAgXQorICAgICAgICBmb3Ig
ZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfcGF0aHMsIHBhdGhzKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiB0ZXN0X3Nv
dXJjZV9oYW5kbGVyX2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3Bh
dGNoLkRpc3BhdGNoRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRj
aC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRp
c3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
YXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJzEvMCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgKKyAgICAgICAgICAgIGRpc3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlKAorICAg
ICAgICAgICAgICAgICdkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
cGFzc1xuJworICAgICAgICAgICAgICAgICdkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpOnBhc3NcbicpKQorCisgICAgZGVmIHRlc3Rfc291cmNlX3dhcm5pbmdzKHNlbGYpOgor
ICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19E
SVIsIE5vbmUpCisgICAgICAgIHdhcm5pbmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3Mo
KQorICAgICAgICB3YXJuaW5ncy5zb3J0KCkKKyAgICAgICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBb
CisgICAgICAgICAgICAob3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExF
UlNfRElSLCAnYmxhbmtfd3NoLnB5JykpCisgICAgICAgICAgICAgKyAnOiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAgIChvcy5wYXRo
LnJlYWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpKQorICAgICAgICAgICAgICsgJzogd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGNhbGxhYmxlLicpLAorICAgICAgICAg
ICAgKG9zLnBhdGgucmVhbHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNU
X0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCisgICAgICAgICAgICAob3MucGF0
aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNf
RElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX3RyYW5zZmVy
X3NpZ193c2gucHknKSkgKworICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDQsIGxlbih3YXJuaW5ncykpCisgICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChl
eHBlY3RlZF93YXJuaW5ncywgd2FybmluZ3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3RfZG9fZXh0cmFfaGFuZHNoYWtlKHNl
bGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5E
TEVSU19ESVIsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KCkKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJworICAgICAgICByZXF1
ZXN0LndzX29yaWdpbiA9ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIGRpc3BhdGNoZXIu
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpICAjIE11c3Qgbm90IHJhaXNlIGV4Y2VwdGlvbi4K
KworICAgICAgICByZXF1ZXN0LndzX29yaWdpbiA9ICdodHRwOi8vYmFkLmV4YW1wbGUuY29tJwor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0Y2ggSGFuZHNoYWtl
RXhjZXB0aW9uIHdpdGggNDAzIHN0YXR1cycpCisgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFu
ZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwMywg
ZS5zdGF0dXMpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNl
bGYuZmFpbCgnVW5leHBlY3RlZCBleGNlcHRpb246ICVyJyAlIGUpCisKKyAgICBkZWYgdGVzdF9h
Ym9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9hYm9y
dF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5kb19l
eHRyYV9oYW5kc2hha2UsIHJlcXVlc3QpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhKHNl
bGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5E
TEVSU19ESVIsIE5vbmUpCisKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoCisg
ICAgICAgICAgICBjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oYidceDg4XHgwMlx4MDNceGU4Jykp
CisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAgICAg
cmVxdWVzdC53c19wcm90b2NvbCA9ICdwMScKKyAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBiJ29y
aWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2luX2NoZWNrLCBwMScKKyAgICAg
ICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAg
IGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAg
cmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluJworICAgICAgICByZXF1ZXN0LndzX3By
b3RvY29sID0gTm9uZQorICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInc3ViL3BsYWluX3dzaC5w
eSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4sIE5vbmUnCisgICAgICAgICAgICBiJ1x4ODhceDAy
XHgwM1x4ZTgnLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoCisgICAgICAgICAgICBjb25uZWN0aW9uPW1vY2su
TW9ja0Nvbm4oYidceDg4XHgwMlx4MDNceGU4JykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UgPSAnL3N1Yi9wbGFpbj8nCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCisg
ICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3Ig
L3N1Yi9wbGFpbj8sIE5vbmUnCisgICAgICAgICAgICBiJ1x4ODhceDAyXHgwM1x4ZTgnLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IG1vY2su
TW9ja1JlcXVlc3QoCisgICAgICAgICAgICBjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oYidceDg4
XHgwMlx4MDNceGU4JykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFp
bj9xPXYnCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCisgICAgICAgIGRpc3Bh
dGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj9x
PXYsIE5vbmUnCisgICAgICAgICAgICBiJ1x4ODhceDAyXHgwM1x4ZTgnLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhX25vX2hh
bmRsZXIoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9U
RVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgZm9yIHJlc291cmNlIGluIFsKKyAgICAg
ICAgICAgICAgICAnL2JsYW5rJywgJy9zdWIvbm9uX2NhbGxhYmxlJywgJy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQnLAorICAgICAgICAgICAgICAgICcvZG9lcy9ub3QvZXhpc3QnCisgICAgICAgIF06
CisgICAgICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2su
TW9ja0Nvbm4oYicnKSkKKyAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSByZXNvdXJj
ZQorICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMicKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAg
ICAgICAgICAgICAgICBzZWxmLmZhaWwoKQorICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRp
c3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0
cihlKS5maW5kKCdObyBoYW5kbGVyJykgIT0gLTEpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zl
cl9kYXRhX2hhbmRsZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlz
cGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIHJlcXVl
c3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJycpKQorICAg
ICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJwor
ICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AzJworICAgICAgICB0cnk6CisgICAgICAg
ICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAgICAgIHNlbGYu
ZmFpbCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICAgICBzdHIoZSkuZmluZCgnSW50ZW50aW9uYWwnKSAh
PSAtMSwKKyAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBleGNlcHRpb246ICVzJyAlIGUpCisK
KyAgICBkZWYgdGVzdF9hYm9ydF90cmFuc2Zlcl9kYXRhKHNlbGYpOgorICAgICAgICBkaXNwYXRj
aGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAg
ICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KCkKKyAgICAgICAgcmVxdWVzdC53c19yZXNv
dXJjZSA9ICcvYWJvcnRfYnlfdXNlcicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNo
YWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoZXIudHJhbnNmZXJfZGF0YSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3NjYW5fZGly
KHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVS
U19ESVIsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvb3JpZ2luX2NoZWNrJyBp
biBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAg
ICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1
aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvc3ViL3BsYWluJyBpbiBkaXNwLl9o
YW5kbGVyX3N1aXRlX21hcCkKKworICAgIGRlZiB0ZXN0X3NjYW5fc3ViX2RpcihzZWxmKToKKyAg
ICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBfVEVT
VF9IQU5ETEVSU19TVUJfRElSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihkaXNw
Ll9oYW5kbGVyX3N1aXRlX21hcCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9vcmlnaW5f
Y2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoCisgICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGlu
IGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyX2Fz
X3Jvb3Qoc2VsZik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hB
TkRMRVJTX1NVQl9ESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9URVNU
X0hBTkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3Au
X2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnL29yaWdpbl9j
aGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoCisgICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcvc3ViL3BsYWluJyBp
biBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvZXhj
ZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCcvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorCisg
ICAgZGVmIHRlc3Rfc2Nhbl9kaXJfbXVzdF91bmRlcl9yb290KHNlbGYpOgorICAgICAgICBkaXNw
YXRjaC5EaXNwYXRjaGVyKCdhL2InLCAnYS9iL2MnKSAgIyBPSworICAgICAgICBkaXNwYXRjaC5E
aXNwYXRjaGVyKCdhL2IvLy8nLCAnYS9iJykgICMgT0sKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGRpc3BhdGNoLkRpc3BhdGNoZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICdhL2IvYycsICdhL2InKQorCisgICAgZGVmIHRlc3RfcmVz
b3VyY2VfcGF0aF9hbGlhcyhzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNo
ZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9w
YXRoX2FsaWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgnL29yaWdpbl9jaGVjaycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcicg
aW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1
Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgnLycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFzJywgJy9ub3QtZXhpc3Qn
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90
ZXN0X2VuZHRvZW5kLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0NWQyOWM2N2RkZjA3YjNmMTIzMjQ1OTc3Zjk1Y2ZlMDE0OGM4M2EKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkK
QEAgLTAsMCArMSw2MzAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJFbmQtdG8tZW5kIHRlc3RzIGZvciBweXdlYnNvY2tldC4gVGVzdHMgc3RhbmRhbG9u
ZS5weS4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHNvY2tldAoraW1w
b3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QK
KworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9w
eXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gdGVzdCBpbXBvcnQgY2xpZW50X2Zvcl90ZXN0aW5n
CisKKyMgU3BlY2lhbCBtZXNzYWdlIHRoYXQgdGVsbHMgdGhlIGVjaG8gc2VydmVyIHRvIHN0YXJ0
IGNsb3NpbmcgaGFuZHNoYWtlCitfR09PREJZRV9NRVNTQUdFID0gJ0dvb2RieWUnCisKK19TRVJW
RVJfV0FSTVVQX0lOX1NFQyA9IDAuMgorCisKKyMgVGVzdCBib2R5IGZ1bmN0aW9ucworZGVmIF9l
Y2hvX2NoZWNrX3Byb2NlZHVyZShjbGllbnQpOgorICAgIGNsaWVudC5jb25uZWN0KCkKKworICAg
IGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgn
dGVzdCcpCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZSgnaGVsbG93b3JsZCcpCisgICAgY2xpZW50
LmFzc2VydF9yZWNlaXZlKCdoZWxsb3dvcmxkJykKKworICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkK
KyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgY2xpZW50LmFzc2VydF9j
b25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2Jp
bmFyeShjbGllbnQpOgorICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgIGNsaWVudC5zZW5kX21l
c3NhZ2UoYidiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUo
YidiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKGInXHgwMFx4
ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRydWUpCisgICAgY2xpZW50LmFzc2VydF9yZWNl
aXZlKGInXHgwMFx4ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRydWUpCisKKyAgICBjbGll
bnQuc2VuZF9jbG9zZSgpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAg
IGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9nb29kYnllKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
KCd0ZXN0JykKKworICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoX0dPT0RCWUVfTUVTU0FHRSkKKyAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoX0dPT0RCWUVfTUVTU0FHRSkKKworICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorCisgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbihjbGllbnQsIGNvZGUsIHJlYXNvbik6CisgICAgY2xp
ZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQorICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24pCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX3VubWFza2VkX2ZyYW1lX2NoZWNr
X3Byb2NlZHVyZShjbGllbnQpOgorICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgIGNsaWVudC5z
ZW5kX21lc3NhZ2UoJ3Rlc3QnLCBtYXNrPUZhbHNlKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZShjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09MX0VSUk9SLCAnJykKKwor
ICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2NsYXNzIEVuZFRvRW5k
VGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGVuZC10
by1lbmQgdGVzdHMgdGhhdCBsYXVuY2ggcHl3ZWJzb2NrZXQgc3RhbmRhbG9uZQorICAgIHNlcnZl
ciBhcyBhIHNlcGFyYXRlIHByb2Nlc3MsIGNvbm5lY3QgdG8gaXQgdXNpbmcgdGhlIGNsaWVudF9m
b3JfdGVzdGluZworICAgIG1vZHVsZSwgYW5kIGNoZWNrIGlmIHRoZSBzZXJ2ZXIgYmVoYXZlcyBj
b3JyZWN0bHkgYnkgZXhjaGFuZ2luZyBvcGVuaW5nCisgICAgaGFuZHNoYWtlIGFuZCBmcmFtZXMg
b3ZlciBhIFRDUCBjb25uZWN0aW9uLgorICAgICIiIgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAg
ICAgICAgc2VsZi5zZXJ2ZXJfc3RkZXJyID0gTm9uZQorICAgICAgICBzZWxmLnRvcF9kaXIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICcuLicpCisgICAgICAgIG9z
LnB1dGVudignUFlUSE9OUEFUSCcsIG9zLnBhdGgucGF0aHNlcC5qb2luKHN5cy5wYXRoKSkKKyAg
ICAgICAgc2VsZi5zdGFuZGFsb25lX2NvbW1hbmQgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGly
LCAnbW9kX3B5d2Vic29ja2V0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3N0YW5kYWxvbmUucHknKQorICAgICAgICBzZWxmLmRvY3VtZW50X3Jvb3Qg
PSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScpCisgICAgICAgIHMgPSBzb2Nr
ZXQuc29ja2V0KCkKKyAgICAgICAgcy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCisgICAgICAgIChf
LCBzZWxmLnRlc3RfcG9ydCkgPSBzLmdldHNvY2tuYW1lKCkKKyAgICAgICAgcy5jbG9zZSgpCisK
KyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGNsaWVudF9mb3JfdGVzdGluZy5DbGllbnRPcHRpb25z
KCkKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCA9ICdsb2NhbGhvc3QnCisgICAg
ICAgIHNlbGYuX29wdGlvbnMub3JpZ2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCisgICAgICAgIHNl
bGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2VjaG8nCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5z
ZXJ2ZXJfcG9ydCA9IHNlbGYudGVzdF9wb3J0CisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBVc2Ug
dGVhckRvd24gdG8ga2lsbCB0aGUgc2VydmVyLgorCisgICAgZGVmIF9ydW5fcHl0aG9uX2NvbW1h
bmQoc2VsZiwgY29tbWFuZGxpbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CisgICAgICAg
IHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZV0gKyBjb21tYW5kbGluZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPVRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZGVycj1zdGRlcnIpCisKKyAgICBkZWYgX3J1bl9zZXJ2ZXIoc2Vs
Zik6CisgICAgICAgIGFyZ3MgPSBbCisgICAgICAgICAgICBzZWxmLnN0YW5kYWxvbmVfY29tbWFu
ZCwgJy1IJywgJ2xvY2FsaG9zdCcsICctVicsICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgJy1w
JywKKyAgICAgICAgICAgIHN0cihzZWxmLnRlc3RfcG9ydCksICctUCcsCisgICAgICAgICAgICBz
dHIoc2VsZi50ZXN0X3BvcnQpLCAnLWQnLCBzZWxmLmRvY3VtZW50X3Jvb3QKKyAgICAgICAgXQor
CisgICAgICAgICMgSW5oZXJpdCB0aGUgbGV2ZWwgc2V0IHRvIHRoZSByb290IGxvZ2dlciBieSB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgcm9vdF9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisg
ICAgICAgIGxvZ19sZXZlbCA9IHJvb3RfbG9nZ2VyLmdldEVmZmVjdGl2ZUxldmVsKCkKKyAgICAg
ICAgaWYgbG9nX2xldmVsICE9IGxvZ2dpbmcuTk9UU0VUOgorICAgICAgICAgICAgYXJncy5hcHBl
bmQoJy0tbG9nLWxldmVsJykKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGxvZ2dpbmcuZ2V0TGV2
ZWxOYW1lKGxvZ19sZXZlbCkubG93ZXIoKSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3B5
dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZGVycj1zZWxmLnNlcnZlcl9zdGRlcnIpCisKKyAgICBkZWYg
X2Nsb3NlX3NlcnZlcihzZWxmLCBzZXJ2ZXIpOgorICAgICAgICAiIiIKKworICAgICAgICBUaGlz
IG1ldGhvZCBtaW1pY3MgUG9wZW4uX19leGl0X18gdG8gZ3JhY2VmdWxseSBraWxsIHRoZSBzZXJ2
ZXIgcHJvY2Vzcy4KKyAgICAgICAgSXRzIG1haW4gcHVycG9zZSBpcyB0byBtYWludGFpbiBjb21w
dGFpYmlsaXR5IGJldHdlZW4gcHl0aG9uIDIgYW5kIDMsCisgICAgICAgIHNpbmNlIFBvcGVuIGlu
IHB5dGhvbiAyIGRvZXMgbm90IGhhdmUgX19leGl0X18gYXR0cmlidXRlLgorCisgICAgICAgICIi
IgorICAgICAgICBzZXJ2ZXIua2lsbCgpCisKKyAgICAgICAgaWYgc2VydmVyLnN0ZG91dDoKKyAg
ICAgICAgICAgIHNlcnZlci5zdGRvdXQuY2xvc2UoKQorICAgICAgICBpZiBzZXJ2ZXIuc3RkZXJy
OgorICAgICAgICAgICAgc2VydmVyLnN0ZGVyci5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZlci5z
dGRpbjoKKyAgICAgICAgICAgIHNlcnZlci5zdGRpbi5jbG9zZSgpCisKKyAgICAgICAgc2VydmVy
LndhaXQoKQorCisKK2NsYXNzIEVuZFRvRW5kSHlCaVRlc3QoRW5kVG9FbmRUZXN0QmFzZSk6Cisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBFbmRUb0VuZFRlc3RCYXNlLnNldFVwKHNlbGYp
CisKKyAgICBkZWYgX3J1bl90ZXN0X3dpdGhfY2xpZW50X29wdGlvbnMoc2VsZiwgdGVzdF9mdW5j
dGlvbiwgb3B0aW9ucyk6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBhZGQgc29tZSBsb2dpYyB0
byBwb2xsIHRoZSBzZXJ2ZXIgdW50aWwgaXQKKyAgICAgICAgICAgICMgYmVjb21lcyByZWFkeQor
ICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAgICAg
ICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KG9wdGlvbnMpCisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCisg
ICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQo
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2VydmVyKHNlcnZl
cikKKworICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6CisgICAgICAgIHNl
bGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29wdGlvbnModGVzdF9mdW5jdGlvbiwgc2VsZi5fb3B0
aW9ucykKKworICAgIGRlZiBfcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KHNlbGYsIG9mZmVy
LCByZXNwb25zZV9jaGVja2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfZnVuY3Rpb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMp
CisKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucyArPSBvZmZlcgorICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUgPSByZXNwb25zZV9j
aGVja2VyCisgICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2Ns
aWVudChzZWxmLl9vcHRpb25zKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
Y2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAgICAgaWYgdGVzdF9mdW5jdGlvbiBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCisKKyAg
ICAgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKyAgICAgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisg
ICAgZGVmIF9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdChzZWxmLCB0ZXN0X2Z1
bmN0aW9uLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhc29uKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQorCisg
ICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChzZWxm
Ll9vcHRpb25zKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rp
b24oY2xpZW50LCBjb2RlLCByZWFzb24pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgc2VsZi5fY2xvc2Vfc2VydmVyKHNlcnZlcikKKworICAgIGRlZiBfcnVuX2h0dHBfZmFsbGJh
Y2tfdGVzdChzZWxmLCBvcHRpb25zLCBzdGF0dXMpOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9y
dW5fc2VydmVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVS
X1dBUk1VUF9JTl9TRUMpCisKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGlu
Zy5jcmVhdGVfY2xpZW50KG9wdGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgY2xpZW50LmNvbm5lY3QoKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ291bGQgbm90
IGNhdGNoIEh0dHBTdGF0dXNFeGNlcHRpb24nKQorICAgICAgICAgICAgZXhjZXB0IGNsaWVudF9m
b3JfdGVzdGluZy5IdHRwU3RhdHVzRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdGF0dXMsIGUuc3RhdHVzKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2F0Y2ggdW5leHBlY3RlZCBl
eGNlcHRpb24nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQu
Y2xvc2Vfc29ja2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3Nl
X3NlcnZlcihzZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9lY2hvKHNlbGYpOgorICAgICAgICBzZWxm
Ll9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmUpCisKKyAgICBkZWYgdGVzdF9lY2hvX2Jp
bmFyeShzZWxmKToKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfYmluYXJ5KQorCisgICAgZGVmIHRlc3RfZWNob19zZXJ2ZXJfY2xvc2Uoc2VsZik6Cisg
ICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUp
CisKKyAgICBkZWYgdGVzdF91bm1hc2tlZF9mcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5fcnVu
X3Rlc3QoX3VubWFza2VkX2ZyYW1lX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0X2Vj
aG9fcGVybWVzc2FnZV9kZWZsYXRlKHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KKyAg
ICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4
MDAnCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoY29tcHJlc3NlZF9oZWxs
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2
MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAor
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCisgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICByc3YxPTEp
CisKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFy
YW1ldGVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScsIHBhcmFtZXRlci5uYW1lKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBw
YXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2Fn
ZV9kZWZsYXRlX3Rlc3QoWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24p
CisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fZnJhbWVzKHNlbGYp
OgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9t
IHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNl
bmRfZGF0YShiJ1x4ZjJceDQ4XHhjZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEo
YidceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQpCisgICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4
Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90
ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAg
ICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
X2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVy
Lm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRf
cGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVz
dChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0
ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tZXNzYWdlcyhzZWxmKToKKyAgICAgICAg
ZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBs
ZXMgaW4gdGhlIHNwZWMuCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoYidc
eGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJl
YW0uc2VuZF9kYXRhKGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGll
bnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYy
XHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAg
ICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAg
ICAgICBiJ1x4ZjJceDAwXHgxMVx4MDBceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKwor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tc2dzX3NlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQp
OgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KKyAgICAgICAg
ICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4
MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVz
dGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoYidceGYyXHgwMFx4
MTFceDAwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZl
X2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAn
LAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQs
CisgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNz
ZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4
YzlceDA3XHgwMCcsCisgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICByc3YxPTEpCisKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgp
CisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuZ2V0
X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rl
c3QoCisgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRf
dGFrZW92ZXInXSwKKyAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24p
CisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV9wcmVmZXJlbmNlKHNlbGYp
OgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9t
IHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBiJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnCisgICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5zZW5kX2RhdGEoY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9z
dHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRf
aGVsbG8sCisgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVCwKKyAgICAgICAgICAgICAgICByc3YxPTEpCisKKyAgICAgICAgICAgIGNsaWVudC5zZW5k
X2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAg
ICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkK
KworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAgICAg
ICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsICdkZWZsYXRlLWZyYW1lJ10sIHJlc3BvbnNlX2NoZWNr
ZXIsCisgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfZWNob19wZXJt
ZXNzYWdlX2RlZmxhdGVfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9m
dW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUg
c3BlYy4KKyAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBiJ1x4ZjJceDQ4XHhjZFx4Yzlc
eGM5XHgwN1x4MDAnCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoY29tcHJl
c3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
YmluYXJ5KAorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCisgICAgICAgICAgICAg
ICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAg
ICByc3YxPTEpCisKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2No
ZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdChbCisgICAgICAgICAgICAn
cGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwOyAnCisgICAgICAg
ICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInCisgICAgICAgIF0sIHJlc3BvbnNlX2No
ZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVm
bGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQor
ICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYg
cmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRlJykKKworICAgICAg
ICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAgICAgICBbJ3Blcm1l
c3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAwJ10sCisgICAgICAg
ICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfZWNo
b19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9iYWRfc2VydmVyX21heF93aW5kb3dfYml0cyhzZWxm
KToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgp
CisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1lc3NhZ2UtZGVm
bGF0ZScpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAorICAg
ICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MzAw
MDAwMCddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfdW5kZWZpbmVkX3BhcmFt
ZXRlcihzZWxmKToKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAg
ICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZSgpCisKKyAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKKyAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1l
c3NhZ2UtZGVmbGF0ZScpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90
ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlOyBmb289YmFyJ10sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQor
CisgICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbihzZWxmKToKKyAg
ICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvY2xvc2UnCisgICAgICAgIHNlbGYuX3J1
bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KAorICAgICAgICAgICAgX2VjaG9fY2hl
Y2tfcHJvY2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uLCAzMzMzLCAnc3Vuc3Vuc3Vuc3VuJykK
KworICAgIGRlZiB0ZXN0X2VjaG9fY2xvc2Vfd2l0aF9lbXB0eV9ib2R5KHNlbGYpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAgc2VsZi5fcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIE5vbmUsICcnKQorCisgICAgZGVmIHRlc3Rf
Y2xvc2Vfb25fcHJvdG9jb2xfZXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhl
IHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggcHJvdG9jb2wgZXJyb3Igc3RhdHVzCisg
ICAgICAgIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGRhdGEgd2l0aCBzb21lIHByb3RvY29s
IGVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToK
KyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKKworICAgICAgICAgICAgIyBJbnRlcm1lZGlh
dGUgZnJhbWUgd2l0aG91dCBhbnkgcHJlY2VkaW5nIHN0YXJ0IG9mIGZyYWdtZW50YXRpb24KKyAg
ICAgICAgICAgICMgZnJhbWUuCisgICAgICAgICAgICBjbGllbnQuc2VuZF9mcmFtZV9vZl9hcmJp
dHJhcnlfYnl0ZXMoYidceDgwXHg4MCcsICcnKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlX2Nsb3NlKAorICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNf
UFJPVE9DT0xfRVJST1IpCisKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikK
KworICAgIGRlZiB0ZXN0X2Nsb3NlX29uX3Vuc3VwcG9ydGVkX2ZyYW1lKHNlbGYpOgorICAgICAg
ICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIHVuc3Vw
cG9ydGVkIG9wZXJhdGlvbgorICAgICAgICBzdGF0dXMgY29kZSB3aGVuIHRoZSBjbGllbnQgc2Vu
ZHMgZGF0YSBhc2tpbmcgc29tZSBvcGVyYXRpb24gdGhhdCBpcworICAgICAgICBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBzZXJ2ZXIuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlv
bihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAj
IFRleHQgZnJhbWUgd2l0aCBSU1YzIGJpdCByYWlzZWQuCisgICAgICAgICAgICBjbGllbnQuc2Vu
ZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoYidceDkxXHg4MCcsICcnKQorICAgICAgICAgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAorICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5TVEFUVVNfVU5TVVBQT1JURURfREFUQSkKKworICAgICAgICBzZWxmLl9ydW5fdGVz
dCh0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfY2xvc2Vfb25faW52YWxpZF9mcmFtZShz
ZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJh
bWUgd2l0aCBpbnZhbGlkIGZyYW1lIHBheWxvYWQKKyAgICAgICAgZGF0YSBzdGF0dXMgY29kZSB3
aGVuIHRoZSBjbGllbnQgc2VuZHMgYW4gaW52YWxpZCBmcmFtZSBsaWtlIGNvbnRhaW5pbmcKKyAg
ICAgICAgaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIuCisgICAgICAgICIiIgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisg
ICAgICAgICAgICAjIFRleHQgZnJhbWUgd2l0aCBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAg
ICAgICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoYidceDgwJywgcmF3PVRydWUpCisgICAgICAgICAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zv
cl90ZXN0aW5nLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKKworICAgICAgICBz
ZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfY2xvc2Vfb25faW50
ZXJuYWxfZW5kcG9pbnRfZXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIHNl
cnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggaW50ZXJuYWwgZW5kcG9pbnQKKyAgICAgICAg
ZXJyb3Igc3RhdHVzIGNvZGUgd2hlbiB0aGUgaGFuZGxlciBkb2VzIGJhZCBvcGVyYXRpb24uCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2ludGVybmFs
X2Vycm9yJworCisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAg
ICBjbGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQor
CisgICAgIyBUT0RPKHRveW9zaGltKTogQWRkIHRlc3RzIHRvIHZlcmlmeSBpbnZhbGlkIGFic29s
dXRlIHVyaSBoYW5kbGluZyBsaWtlCisgICAgIyBob3N0IHVubWF0Y2gsIHBvcnQgdW5tYXRjaCBh
bmQgaW52YWxpZCBwb3J0IGRlc2NyaXB0aW9uICgnOicgd2l0aG91dCBwb3J0CisgICAgIyBudW1i
ZXIpLgorCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfdXJpKHNlbGYpOgorICAgICAgICAiIiJUZXN0
cyBhYnNvbHV0ZSB1cmkgcmVxdWVzdC4iIiIKKworICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0
aW9ucworICAgICAgICBvcHRpb25zLnJlc291cmNlID0gJ3dzOi8vbG9jYWxob3N0OiVkL2VjaG8n
ICUgb3B0aW9ucy5zZXJ2ZXJfcG9ydAorICAgICAgICBzZWxmLl9ydW5fdGVzdF93aXRoX2NsaWVu
dF9vcHRpb25zKF9lY2hvX2NoZWNrX3Byb2NlZHVyZSwgb3B0aW9ucykKKworICAgIGRlZiB0ZXN0
X29yaWdpbl9jaGVjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaHR0cCBmYWxsYmFjayBvbiBv
cmlnaW4gY2hlY2sgZmFpbC4iIiIKKworICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwor
ICAgICAgICBvcHRpb25zLnJlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgICMgU2Vy
dmVyIHNob3dzIHdhcm5pbmcgbWVzc2FnZSBmb3IgaHR0cCA0MDMgZmFsbGJhY2suIFRoaXMgd2Fy
bmluZworICAgICAgICAjIG1lc3NhZ2UgaXMgY29uZnVzaW5nLiBGb2xsb3dpbmcgcGlwZSBkaXNw
b3NlcyB3YXJuaW5nIG1lc3NhZ2VzLgorICAgICAgICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBzdWJw
cm9jZXNzLlBJUEUKKyAgICAgICAgc2VsZi5fcnVuX2h0dHBfZmFsbGJhY2tfdGVzdChvcHRpb25z
LCA0MDMpCisKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJU
ZXN0cyBodHRwIGZhbGxiYWNrIG9uIHZlcnNpb24gY2hlY2sgZmFpbC4iIiIKKworICAgICAgICBv
cHRpb25zID0gc2VsZi5fb3B0aW9ucworICAgICAgICBvcHRpb25zLnZlcnNpb24gPSA5OQorICAg
ICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQwMCkKKworCitjbGFz
cyBFbmRUb0VuZFRlc3RXaXRoRWNob0NsaWVudChFbmRUb0VuZFRlc3RCYXNlKToKKyAgICBkZWYg
c2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKKworICAg
IGRlZiBfY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoc2VsZiwgZXhwZWN0ZWQsIHN0
ZG91dGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl
cnJkYXRhKToKKyAgICAgICAgYWN0dWFsID0gc3Rkb3V0ZGF0YS5kZWNvZGUoInV0Zi04IikKKyAg
ICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdVbmV4cGVjdGVkIHJlc3VsdCBvbiBleGFtcGxlIGVjaG8gY2xpZW50OiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWQsIGFjdHVhbCkpCisgICAgICAgIGlmIHN0
ZGVycmRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhw
ZWN0ZWQgZXJyb3IgbWVzc2FnZSBvbiBleGFtcGxlIGVjaG8gJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjbGllbnQ6ICVyJyAlIHN0ZGVycmRhdGEpCisKKyAgICBkZWYgdGVzdF9leGFt
cGxlX2VjaG9fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBlY2hvX2Ns
aWVudC5weSBleGFtcGxlIGNhbiB0YWxrIHdpdGggdGhlIHNlcnZlci4iIiIKKworICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGlt
ZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAgICAgICAgIGNsaWVudF9jb21t
YW5kID0gb3MucGF0aC5qb2luKHNlbGYudG9wX2RpciwgJ2V4YW1wbGUnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VjaG9fY2xpZW50LnB5JykKKworICAgICAg
ICAgICAgIyBFeHBlY3RlZCBvdXRwdXQgZm9yIHRoZSBkZWZhdWx0IG1lc3NhZ2VzLgorICAgICAg
ICAgICAgZGVmYXVsdF9leHBlY3RhdGlvbiA9ICh1J1NlbmQ6IEhlbGxvXG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHUnUmVjdjogSGVsbG9cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdTZW5kOiBcdTY1ZTVcdTY3MmNcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBcdTY1ZTVcdTY3MmNcbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdTZW5kIGNsb3NlXG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHUnUmVjdiBhY2tcbicpCisKKyAgICAgICAgICAgIGFyZ3Mg
PSBbY2xpZW50X2NvbW1hbmQsICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KV0K
KyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRv
dXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9
IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2Vj
aG9fY2xpZW50X3Jlc3VsdChkZWZhdWx0X2V4cGVjdGF0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkK
KworICAgICAgICAgICAgIyBQcm9jZXNzIGEgYmlnIG1lc3NhZ2UgZm9yIHdoaWNoIGV4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoIGlzIHVzZWQuCisgICAgICAgICAgICAjIFRvIGhhbmRsZSBleHRlbmRl
ZCBwYXlsb2FkIGxlbmd0aCwgd3NfdmVyc2lvbiBhdHRyaWJ1dGUgd2lsbCBiZQorICAgICAgICAg
ICAgIyBhY2Nlc3NlZC4gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHdzX3ZlcnNpb24gaXMgY29ycmVj
dGx5IHNldC4KKyAgICAgICAgICAgIGJpZ19tZXNzYWdlID0gJ2EnICogMTAyNAorICAgICAgICAg
ICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICBjbGllbnRfY29tbWFuZCwgJy1wJywKKyAgICAg
ICAgICAgICAgICBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCksICctbScsIGJpZ19tZXNz
YWdlCisgICAgICAgICAgICBdCisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91
dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgZXhw
ZWN0ZWQgPSAoJ1NlbmQ6ICVzXG5SZWN2OiAlc1xuU2VuZCBjbG9zZVxuUmVjdiBhY2tcbicgJQor
ICAgICAgICAgICAgICAgICAgICAgICAgKGJpZ19tZXNzYWdlLCBiaWdfbWVzc2FnZSkpCisgICAg
ICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChleHBlY3RlZCwg
c3Rkb3V0ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZGVycmRhdGEpCisKKyAgICAgICAgICAgICMgVGVzdCB0aGUgcGVybWVzc2FnZS1k
ZWZsYXRlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIGFyZ3MgPSBbCisgICAgICAgICAgICAgICAg
Y2xpZW50X2NvbW1hbmQsICctcCcsCisgICAgICAgICAgICAgICAgc3RyKHNlbGYuX29wdGlvbnMu
c2VydmVyX3BvcnQpLCAnLS11c2VfcGVybWVzc2FnZV9kZWZsYXRlJworICAgICAgICAgICAgXQor
ICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0g
Y2xpZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNo
b19jbGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQor
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2VydmVyKHNlcnZlcikK
KworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzlhMTExODg4YmU5MDA1YmQ3YjY4NDM2NmFlYmZkMWQ5MTRmNGEzMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9leHRlbnNpb25z
LnB5CkBAIC0wLDAgKzEsMTkyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVGVzdHMgZm9yIGV4dGVuc2lvbnMgbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxp
YgorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9k
X3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1v
bgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGV4dGVuc2lvbnMKKworCitjbGFzcyBFeHRl
bnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3Igbm9u
LWNsYXNzIG1ldGhvZHMgaW4gZXh0ZW5zaW9ucy5weSIiIgorICAgIGRlZiB0ZXN0X3BhcnNlX3dp
bmRvd19iaXRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdmb29iYXIn
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJyA4ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnYThhJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcw
MDAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMu
X3BhcnNlX3dpbmRvd19iaXRzLCAnMDAwMDgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzB4OCcpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93
X2JpdHMsICc5LjUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRl
bnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzguMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzE1JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJy04JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9u
cy5fcGFyc2Vfd2luZG93X2JpdHMsICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc3JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzE2JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9u
cy5fcGFyc2Vfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcxMDAwMDAw
MCcpCisKKworY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5n
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcg
dGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvciBwYXJzZXMKKyAgICBnaXZl
biBleHRlbnNpb24gcGFyYW1ldGVyIGNvcnJlY3RseS4KKyAgICAiIiIKKyAgICBkZWYgdGVzdF9y
ZWdpc3RyeShzZWxmKToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5z
aW9uX3Byb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHJvY2Vz
c29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcikKKworICAgIGRlZiB0ZXN0X21pbmltYWxfb2ZmZXIo
c2VsZik6CisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoCisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5n
ZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVz
c2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHpsaWIuTUFYX1dCSVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nv
ci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl9ub19jb250ZXh0X3Rha2VvdmVyKQorCisg
ICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBh
cmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScp
CisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
JywgJzEwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzEwJyldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxMCwgcHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykK
KworICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfb3V0X29mX3JhbmdlX21heF93aW5kb3dfYml0cyhz
ZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVy
bWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZl
cl9tYXhfd2luZG93X2JpdHMnLCAnMCcpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMu
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisK
KyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X3ZhbHVlKHNl
bGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJt
ZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVy
X21heF93aW5kb3dfYml0cycsIE5vbmUpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMu
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisK
KyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6CisgICAg
ICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVm
bGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlcicsIE5vbmUpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHJlc3Bv
bnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKwor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVyLl9ub19j
b250ZXh0X3Rha2VvdmVyKQorCisgICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19jb250ZXh0X3Rh
a2VvdmVyX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5h
ZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsICdmb29iYXInKQorICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQorCisgICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF91bmtu
b3duX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ2ZvbycsICdiYXInKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQorCisK
K2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yQnVpbGRpbmdUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0IFBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIGJ1aWxkcworICAgIGEgcmVzcG9uc2Ug
YmFzZWQgb24gc3BlY2lmaWVkIG9wdGlvbnMgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRlZiB0
ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgorICAgICAgICBwYXJhbWV0
ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAg
ICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignY2xpZW50X21heF93aW5kb3dfYml0cycsIE5v
bmUpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9t
YXhfd2luZG93X2JpdHMoMTApCisKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdj
bGllbnRfbWF4X3dpbmRvd19iaXRzJywgJzEwJyldLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRo
X21heF93aW5kb3dfYml0c193aXRob3V0X2NsaWVudF9wZXJtaXNzaW9uKHNlbGYpOgorICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1k
ZWZsYXRlJykpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygx
MCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzcG9uc2UpCisKKyAgICBkZWYgdGVzdF9y
ZXNwb25zZV93aXRoX3RydWVfZm9yX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAg
IHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IoCisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnKSkKKworICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2Vv
dmVyKFRydWUpCisKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScs
IHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbm9f
Y29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNw
b25zZS5nZXRfcGFyYW1ldGVycygpKQorCisgICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9mYWxz
ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0
ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigKKyAgICAgICAgICAg
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAg
ICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoRmFsc2UpCisKKyAg
ICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cnMoKSkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWlu
KCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMGUyMjc4ZGZlNjUwMTlkNzY1OTQ4OWI1MzhmY2M4NWFkNTdk
NDU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weQpAQCAtMCwwICsxLDE3MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBoYW5kc2hha2UuX2Jhc2UgbW9kdWxlLiIiIgorCitm
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4
dGVuc2lvblBhcmFtZXRlcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuY29tbW9uIGltcG9ydCBFeHRl
bnNpb25QYXJzaW5nRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0
IGZvcm1hdF9leHRlbnNpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IHBh
cnNlX2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCisKKworY2xhc3MgVmFsaWRhdGVTdWJwcm90
b2NvbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIHZhbGlk
YXRlX3N1YnByb3RvY29sIG1ldGhvZC4iIiIKKyAgICBkZWYgdGVzdF92YWxpZGF0ZV9zdWJwcm90
b2NvbChzZWxmKToKKyAgICAgICAgIyBTaG91bGQgc3VjY2VlZC4KKyAgICAgICAgdmFsaWRhdGVf
c3VicHJvdG9jb2woJ3NhbXBsZScpCisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdTYW1w
bGUnKQorICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykK
KworICAgICAgICAjIFNob3VsZCBmYWlsLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5k
c2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3RvY29sLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MDlwcm90b2NvbCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgyMHByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJw
cm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4N2Zwcm90b2NvbCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0
aW9uLAorICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCisgICAgICAgICAgICAjICJK
YXBhbiIgaW4gSmFwYW5lc2UKKyAgICAgICAgICAgIHUnXHU2NWU1XHU2NzJjJykKKworCitfVEVT
VF9UT0tFTl9FWFRFTlNJT05fREFUQSA9IFsKKyAgICAoJ2ZvbycsIFsoJ2ZvbycsIFtdKV0pLAor
ICAgICgnZm9vOyBiYXInLCBbKCdmb28nLCBbKCdiYXInLCBOb25lKV0pXSksCisgICAgKCdmb287
IGJhcj1iYXonLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vOyBiYXI9
YmF6OyBjYXI9Y2RyJywgWygnZm9vJywgWygnYmFyJywgJ2JheicpLCAoJ2NhcicsICdjZHInKV0p
XSksCisgICAgKCdmb287IGJhcj1iYXosIGNhcjsgY2RyJywgWygnZm9vJywgWygnYmFyJywgJ2Jh
eicpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnY2FyJywgWygnY2RyJywg
Tm9uZSldKV0pLAorICAgICgnYSwgYiwgYywgZCcsIFsoJ2EnLCBbXSksICgnYicsIFtdKSwgKCdj
JywgW10pLCAoJ2QnLCBbXSldKSwKK10KKworX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBID0g
WworICAgICgnZm9vOyBiYXI9IiInLCBbKCdmb28nLCBbKCdiYXInLCAnJyldKV0pLAorICAgICgn
Zm9vOyBiYXI9IiBiYXogIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcgYmF6ICcpXSldKSwKKyAgICAo
J2ZvbzsgYmFyPSIsYmF6OyInLCBbKCdmb28nLCBbKCdiYXInLCAnLGJhejsnKV0pXSksCisgICAg
KCdmb287IGJhcj0iXFxcclxcXG5iYXoiJywgWygnZm9vJywgWygnYmFyJywgJ1xyXG5iYXonKV0p
XSksCisgICAgKCdmb287IGJhcj0iXFwiYmF6IicsIFsoJ2ZvbycsIFsoJ2JhcicsICciYmF6Jyld
KV0pLAorICAgICgnZm9vOyBiYXI9Ilx4YmJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJ1x4YmJi
YXonKV0pXSksCitdCisKK19URVNUX1JFRFVOREFOVF9UT0tFTl9FWFRFTlNJT05fREFUQSA9IFsK
KyAgICAoJ2ZvbyBcdCAnLCBbKCdmb28nLCBbXSldKSwKKyAgICAoJ2ZvbzsgXHJcbiBiYXInLCBb
KCdmb28nLCBbKCdiYXInLCBOb25lKV0pXSksCisgICAgKCdmb287IGJhcj1cclxuIFxyXG4gYmF6
JywgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyA7YmFyID0gYmF6ICcs
IFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdmb28sYmFyLCxiYXonLCBbKCdm
b28nLCBbXSksICgnYmFyJywgW10pLCAoJ2JheicsIFtdKV0pLAorXQorCitfVEVTVF9SRURVTkRB
TlRfUVVPVEVEX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vOyBiYXI9IlxyXG4gXHJcbiBi
YXoiJywgWygnZm9vJywgWygnYmFyJywgJyAgYmF6JyldKV0pLAorXQorCisKK2NsYXNzIEV4dGVu
c2lvbnNQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX3ZlcmlmeV9leHRl
bnNpb25fbGlzdChzZWxmLCBleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAgICAgICIi
IlZlcmlmaWVzIHRoYXQgRXh0ZW5zaW9uUGFyYW1ldGVyIG9iamVjdHMgaW4gYWN0dWFsX2xpc3Qg
aGF2ZSB0aGUKKyAgICAgICAgc2FtZSBtZW1iZXJzIGFzIGV4dGVuc2lvbiBkZWZpbml0aW9ucyBp
biBleHBlY3RlZF9saXN0LiBFeHRlbnNpb24KKyAgICAgICAgZGVmaW5pdGlvbiB1c2VkIGluIHRo
aXMgdGVzdCBpcyBhIHBhaXIgb2YgYW4gZXh0ZW5zaW9uIG5hbWUgYW5kIGEKKyAgICAgICAgcGFy
YW1ldGVyIGRpY3Rpb25hcnkuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0dWFsX2xpc3QpKQorICAgICAgICBmb3IgZXhw
ZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgorICAgICAg
ICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZXhwZWN0ZWQKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobmFtZSwgYWN0dWFsLl9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXJhbWV0ZXJzLCBhY3R1YWwuX3BhcmFtZXRlcnMpCisKKyAgICBkZWYgdGVzdF9wYXJzZShz
ZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRpb24gaW4gX1RFU1Rf
VE9LRU5fRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9u
X2xpc3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFy
c2VfcXVvdGVkX2RhdGEoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZp
bml0aW9uIGluIF9URVNUX1FVT1RFRF9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYu
X3ZlcmlmeV9leHRlbnNpb25fbGlzdChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisK
KyAgICBkZWYgdGVzdF9wYXJzZV9yZWR1bmRhbnRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIChm
b3JtYXR0ZWRfc3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVO
REFOVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRl
bnNpb25fbGlzdChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYgdGVz
dF9wYXJzZV9yZWR1bmRhbnRfcXVvdGVkX2RhdGEoc2VsZik6CisgICAgICAgIGZvciAoZm9ybWF0
dGVkX3N0cmluZywKKyAgICAgICAgICAgICBkZWZpbml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRf
UVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX2JhZF9kYXRhKHNlbGYpOgorICAgICAgICBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEEgPSBb
CisgICAgICAgICAgICAoJ2ZvbzsgOyAnKSwKKyAgICAgICAgICAgICgnZm9vOyBhIGEnKSwKKyAg
ICAgICAgICAgICgnZm9vIGZvbycpLAorICAgICAgICAgICAgKCcsLCwnKSwKKyAgICAgICAgICAg
ICgnZm9vOyBiYXI9JyksCisgICAgICAgICAgICAoJ2ZvbzsgYmFyPSJob2dlJyksCisgICAgICAg
ICAgICAoJ2ZvbzsgYmFyPSJhXHIiJyksCisgICAgICAgICAgICAoJ2ZvbzsgYmFyPSJcXFx4ZmYi
JyksCisgICAgICAgICAgICAoJ2ZvbzsgYmFyPVxyYScpLAorICAgICAgICBdCisKKyAgICAgICAg
Zm9yIGZvcm1hdHRlZF9zdHJpbmcgaW4gX1RFU1RfQkFEX0VYVEVOU0lPTl9EQVRBOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgcGFyc2Vf
ZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9zdHJp
bmcpCisKKworY2xhc3MgRm9ybWF0RXh0ZW5zaW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIGRlZiB0ZXN0X2Zvcm1hdF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBmb3IgZm9ybWF0
dGVkX3N0cmluZywgZGVmaW5pdGlvbnMgaW4gX1RFU1RfVE9LRU5fRVhURU5TSU9OX0RBVEE6Cisg
ICAgICAgICAgICBleHRlbnNpb25zID0gW10KKyAgICAgICAgICAgIGZvciBkZWZpbml0aW9uIGlu
IGRlZmluaXRpb25zOgorICAgICAgICAgICAgICAgIChuYW1lLCBwYXJhbWV0ZXJzKSA9IGRlZmlu
aXRpb24KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSBFeHRlbnNpb25QYXJhbWV0ZXIobmFt
ZSkKKyAgICAgICAgICAgICAgICBleHRlbnNpb24uX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChmb3JtYXR0ZWRfc3RyaW5nLCBmb3JtYXRfZXh0ZW5zaW9ucyhleHRl
bnNpb25zKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1h
aW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9oYW5kc2hha2VfaHliaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDg0MWYxZjc5ZmE4OWYwM2YwZTAyMTll
MDZiMjEzYzM0ZjVmMGZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5CkBAIC0wLDAgKzEsNDIyIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZSBtb2R1
bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
dW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9j
YXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
Y29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEFib3J0
ZWRCeVVzZXJFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5oeWJpIGltcG9ydCBIYW5kc2hha2VyCisKK2Zyb20gdGVzdCBpbXBvcnQgbW9jaworCisK
K2NsYXNzIFJlcXVlc3REZWZpbml0aW9uKG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgaG9s
ZGluZyBkYXRhIGZvciBjb25zdHJ1Y3Rpbmcgb3BlbmluZyBoYW5kc2hha2Ugc3RyaW5ncyBmb3IK
KyAgICB0ZXN0aW5nIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IuCisgICAgIiIiCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZCwgdXJpLCBoZWFkZXJzKToKKyAgICAgICAgc2Vs
Zi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51cmkgPSB1cmkKKyAgICAgICAgc2VsZi5o
ZWFkZXJzID0gaGVhZGVycworCisKK2RlZiBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKToKKyAg
ICByZXR1cm4gUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICdHRVQnLCAnL2RlbW8nLCB7Cisg
ICAgICAgICAgICAnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ1Vw
Z3JhZGUnOiAnd2Vic29ja2V0JywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUn
LAorICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5JzogJ2RHaGxJSE5oYlhCc1pTQnViMjVq
WlE9PScsCisgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1WZXJzaW9uJzogJzEzJywKKyAgICAg
ICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJworICAgICAgICB9KQorCisKK2Rl
ZiBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpOgorICAgIGNvbm4gPSBtb2NrLk1vY2tDb25u
KGInJykKKyAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVzdChtZXRob2Q9cmVxdWVzdF9kZWYubWV0
aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaT1yZXF1ZXN0X2RlZi51cmksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc19pbj1yZXF1ZXN0X2RlZi5oZWFkZXJz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb249Y29ubikKKworCitkZWYg
X2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpOgorICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2Vy
KHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICByZXR1cm4gaGFuZHNoYWtlcgor
CisKK2NsYXNzIFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKG9iamVjdCk6CisgICAgIiIi
QSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgc2V0cyB0aGUgaS10aCBz
dWJwcm90b2NvbAorICAgIG9mIHJlcXVlc3RlZCBvbmVzIHRvIHdzX3Byb3RvY29sIHdoZXJlIGkg
aXMgZ2l2ZW4gb24gY29uc3RydWN0aW9uIGFzIGluZGV4CisgICAgYXJndW1lbnQuIElmIGluZGV4
IGlzIG5lZ2F0aXZlLCBkZWZhdWx0X3ZhbHVlIHdpbGwgYmUgc2V0IHRvIHdzX3Byb3RvY29sLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleCwgZGVmYXVsdF92YWx1ZT1Ob25l
KToKKyAgICAgICAgc2VsZi5pbmRleCA9IGluZGV4CisgICAgICAgIHNlbGYuZGVmYXVsdF92YWx1
ZSA9IGRlZmF1bHRfdmFsdWUKKworICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29u
bl9jb250ZXh0KToKKyAgICAgICAgaWYgc2VsZi5pbmRleCA+PSAwOgorICAgICAgICAgICAgY29u
bl9jb250ZXh0LndzX3Byb3RvY29sID0gY29ubl9jb250ZXh0LndzX3JlcXVlc3RlZF9wcm90b2Nv
bHNbCisgICAgICAgICAgICAgICAgc2VsZi5pbmRleF0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGNvbm5fY29udGV4dC53c19wcm90b2NvbCA9IHNlbGYuZGVmYXVsdF92YWx1ZQorCisgICAg
ZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAgICAgcGFzcworCisK
K2NsYXNzIEhhbmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisK
KworY2xhc3MgQWJvcnRpbmdEaXNwYXRjaGVyKG9iamVjdCk6CisgICAgIiIiQSBkaXNwYXRjaGVy
IGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbgorICAg
IGRvX2V4dHJhX2hhbmRzaGFrZSB0byByZWplY3QgdGhlIHJlcXVlc3QuCisgICAgIiIiCisgICAg
ZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICByYWlz
ZSBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKCdBbiBleGNlcHRpb24gdG8gcmVqZWN0IHRoZSBy
ZXF1ZXN0JykKKworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Cisg
ICAgICAgIHBhc3MKKworCitjbGFzcyBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcihvYmplY3QpOgor
ICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBh
bgorICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gaW4gZG9fZXh0cmFfaGFuZHNoYWtlIHRvIHJl
amVjdCB0aGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNl
bGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHJhaXNlIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24o
J0FuIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gdG8gcmVqZWN0IHRoZSAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2Rh
dGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAgICAgcGFzcworCisKK19FWFBFQ1RFRF9SRVNQ
T05TRSA9ICgKKyAgICBiJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAg
ICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgYidDb25uZWN0aW9uOiBVcGdyYWRlXHJc
bicKKyAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcblxyXG4nKQorCisKK2NsYXNzIEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkcmFmdC1pZXRmLWh5YmktdGhld2Vic29ja2V0cHJv
dG9jb2wtMDYgYW5kIGxhdGVyCisgICAgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAgICAiIiIKKyAg
ICBkZWYgdGVzdF9kb19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpCisgICAgICAgIGRpc3BhdGNoZXIg
PSBtb2NrLk1vY2tEaXNwYXRjaGVyKCkKKyAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZV9j
YWxsZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfRVhQRUNURURfUkVTUE9OU0UsIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnL2RlbW8nLCByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdodHRwOi8vZXhhbXBsZS5jb20nLCByZXF1ZXN0LndzX29yaWdpbikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChOb25lLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwgcmVxdWVzdC53c192ZXJzaW9uKQorCisg
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfZXh0cmFfaGVhZGVycyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIEFk
ZCBoZWFkZXJzIG5vdCByZWxhdGVkIHRvIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZS4KKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRm9vS2V5J10gPSAnQmFyVmFsdWUnCisgICAgICAg
IHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0VtcHR5S2V5J10gPSAnJworCisgICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3Jl
YXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2Uo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dp
dGhfY2FwaXRhbGl6ZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sndXBncmFk
ZSddID0gJ1dFQlNPQ0tFVCcKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJl
cXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVl
c3QpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdVUEdSQURFJwor
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAg
IGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9S
RVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3RfZG9faGFuZHNoYWtlX3dpdGhfbXVsdGlwbGVfY29ubmVjdGlvbl92YWx1ZXMoc2VsZik6Cisg
ICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VwZ3JhZGUsIGtlZXAtYWxpdmUs
ICwgJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisg
ICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAg
aGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBF
Q1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAg
ZGVmIHRlc3RfYWJvcnRpbmdfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2VyID0g
SGFuZHNoYWtlcihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGluZ0Rpc3BhdGNoZXIoKSkKKyAg
ICAgICAgIyBkb19leHRyYV9oYW5kc2hha2UgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gQ2hlY2sgdGhh
dCBpdCdzIG5vdCBjYXVnaHQgYnkKKyAgICAgICAgIyBkb19oYW5kc2hha2UuCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUFib3J0ZWRFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2woc2Vs
Zik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2No
YXQsIHN1cGVyY2hhdCcKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVl
c3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBTdWJwcm90
b2NvbENob29zaW5nRGlzcGF0Y2hlcigwKSkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQorCisgICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0gKAorICAgICAgICAgICAgYidIVFRQ
LzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisgICAgICAgICAgICBiJ1VwZ3JhZGU6
IHdlYnNvY2tldFxyXG4nCisgICAgICAgICAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwor
ICAgICAgICAgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpS
YksreE9vPVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGNoYXRc
clxuXHJcbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNQT05TRSwg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdjaGF0JywgcmVxdWVzdC53c19wcm90b2NvbCkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRz
aGFrZV9wcm90b2NvbF9ub3RfaW5fcmVxdWVzdF9idXRfaW5fcmVzcG9uc2Uoc2VsZik6CisgICAg
ICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9
IEhhbmRzaGFrZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Vi
cHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoLTEsICdmb29iYXInKSkKKyAgICAgICAgIyBObyBy
ZXF1ZXN0IGhhcyBiZWVuIG1hZGUgYnV0IHdzX3Byb3RvY29sIGlzIHNldC4gSGFuZHNoYWtlRXhj
ZXB0aW9uCisgICAgICAgICMgbXVzdCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbF9ub19wcm90b2NvbF9zZWxlY3Rpb24o
c2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0g
J2NoYXQsIHN1cGVyY2hhdCcKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJl
cXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVl
c3QpCisgICAgICAgICMgd3NfcHJvdG9jb2wgaXMgbm90IHNldC4gSGFuZHNoYWtlRXhjZXB0aW9u
IG11c3QgYmUgcmFpc2VkLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNl
cHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNo
YWtlX3dpdGhfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRl
X2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2Vi
U29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKKyAgICAgICAgICAgICdwZXJtZXNzYWdlLWRlZmxhdGU7
IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykKKworICAgICAgICBFWFBFQ1RFRF9SRVNQT05T
RSA9ICgKKyAgICAgICAgICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxu
JworICAgICAgICAgICAgYidVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworICAgICAgICAgICAgYidD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1cclxuJworICAgICAgICAgICAgYidTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnM6ICcKKyAgICAgICAgICAgIGIncGVybWVzc2FnZS1kZWZsYXRl
OyBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlclxyXG4nCisgICAgICAgICAgICBiJ1xyXG4nKQor
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisgICAgICAg
IGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKKyAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JF
U1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCisgICAgICAgIGV4dGVu
c2lvbiA9IHJlcXVlc3Qud3NfZXh0ZW5zaW9uc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OLCBleHRlbnNpb24ubmFtZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgTm9uZSwgZXh0ZW5zaW9u
LmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkZWZsYXRlJywgcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9xdW90ZWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3Jl
YXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMt
V2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgKKyAgICAgICAgICAgICdwZXJtZXNzYWdlLWRlZmxh
dGUsICwgJworICAgICAgICAgICAgJ3Vua25vd247IGUgICA9ICAgICJtY14yIjsgbWE9IlxyXG4g
ICAgICBcXFxyZiAgIjsgcHY9bnJ0JykKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2Vy
KHJlcXVlc3QpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucykpCisg
ICAgICAgIGZpcnN0X2V4dGVuc2lvbiA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnNb
MF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgZmlyc3Rf
ZXh0ZW5zaW9uLm5hbWUoKSkKKyAgICAgICAgc2Vjb25kX2V4dGVuc2lvbiA9IHJlcXVlc3Qud3Nf
cmVxdWVzdGVkX2V4dGVuc2lvbnNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndW5rbm93
bicsIHNlY29uZF9leHRlbnNpb24ubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsn
ZScsICdtYScsICdwdiddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZF9leHRlbnNp
b24uZ2V0X3BhcmFtZXRlcl9uYW1lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtY14y
Jywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdlJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJyBccmYgJywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3Zh
bHVlKCdtYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCducnQnLCBzZWNvbmRfZXh0ZW5z
aW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3B2JykpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hh
a2Vfd2l0aF9vcHRpb25hbF9oZWFkZXJzKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Vt
cHR5VmFsdWUnXSA9ICcnCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0FLZXknXSA9ICdB
VmFsdWUnCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
KyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FW
YWx1ZScsIHJlcXVlc3QuaGVhZGVyc19pblsnQUtleSddKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcnLCByZXF1ZXN0LmhlYWRlcnNfaW5bJ0VtcHR5VmFsdWUnXSkKKworICAgIGRlZiB0ZXN0
X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRz
aGFrZXIoX2NyZWF0ZV9yZXF1ZXN0KF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRlZEJ5VXNlckRpc3BhdGNoZXIoKSkKKyAg
ICAgICAgIyBkb19leHRyYV9oYW5kc2hha2UgcmFpc2VzIGFuIEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24uIENoZWNrIHRoYXQgaXQncworICAgICAgICAjIG5vdCBjYXVnaHQgYnkgZG9faGFuZHNoYWtl
LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0ZXN0X2JhZF9yZXF1ZXN0cyhzZWxmKToK
KyAgICAgICAgYmFkX2Nhc2VzID0gWworICAgICAgICAgICAgKCdIVFRQIHJlcXVlc3QnLAorICAg
ICAgICAgICAgIFJlcXVlc3REZWZpbml0aW9uKAorICAgICAgICAgICAgICAgICAnR0VUJywgJy9k
ZW1vJywgeworICAgICAgICAgICAgICAgICAgICAgJ0hvc3QnOgorICAgICAgICAgICAgICAgICAg
ICAgJ3d3dy5nb29nbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzoK
KyAgICAgICAgICAgICAgICAgICAgICdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBN
YWMgT1MgWCAxMC41OycKKyAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMp
IEdlY2tvLzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCisgICAgICAgICAgICAgICAgICAgICAnIEdU
QjYgR1RCQScsCisgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzoKKyAgICAgICAgICAgICAg
ICAgICAgICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtx
PTAuOSwnCisgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKKyAgICAgICAgICAgICAg
ICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOgorICAgICAgICAgICAgICAgICAgICAgJ2VuLXVzLGVu
O3E9MC41JywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOgorICAgICAg
ICAgICAgICAgICAgICAgJ2d6aXAsZGVmbGF0ZScsCisgICAgICAgICAgICAgICAgICAgICAnQWNj
ZXB0LUNoYXJzZXQnOgorICAgICAgICAgICAgICAgICAgICAgJ0lTTy04ODU5LTEsdXRmLTg7cT0w
LjcsKjtxPTAuNycsCisgICAgICAgICAgICAgICAgICAgICAnS2VlcC1BbGl2ZSc6CisgICAgICAg
ICAgICAgICAgICAgICAnMzAwJywKKyAgICAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzoK
KyAgICAgICAgICAgICAgICAgICAgICdrZWVwLWFsaXZlJworICAgICAgICAgICAgICAgICB9KSwg
Tm9uZSwgVHJ1ZSkKKyAgICAgICAgXQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYubWV0aG9kID0gJ1BPU1QnCisg
ICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBtZXRob2QnLCByZXF1ZXN0X2RlZiwgTm9u
ZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snSG9zdCddCisgICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIEhvc3QnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkp
CisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snVXBncmFkZSddCisgICAgICAgIGJhZF9jYXNl
cy5hcHBlbmQoKCdNaXNzaW5nIFVwZ3JhZGUnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCisK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10gPSAnbm9ud2Vic29ja2V0JworICAgICAg
ICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10KKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgQ29ubmVjdGlvbicsIHJlcXVlc3RfZGVmLCBOb25l
LCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdEb3duZ3Jh
ZGUnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBDb25uZWN0aW9uJywgcmVxdWVz
dF9kZWYsIE5vbmUsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKKyAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtS2V5J10KKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgU2VjLVdlYlNv
Y2tldC1LZXknLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRl
cnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCisgICAgICAgICAgICAnZEdobElITmhiWEJzWlNC
dWIyNWpaUT09Z2FyYmFnZScpCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMt
V2ViU29ja2V0LUtleSAod2l0aCBnYXJiYWdlIG9uIHRoZSB0YWlsKScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdZUT09JyAgIyBCQVNFNjQgb2YgJ2EnCisgICAg
ICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQt
S2V5IChkZWNvZGVkIHZhbHVlIGlzIG5vdCAxNiBvY3RldHMgbG9uZyknLAorICAgICAgICAgICAg
IHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgIyBUaGUgbGFzdCBjaGFyYWN0ZXIgcmlnaHQg
YmVmb3JlID09IG11c3QgYmUgYW55IG9mIEEsIFEsIHcgYW5kIGcuCisgICAgICAgIHJlcXVlc3Rf
ZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAnQVFJREJBVUdCd2dKQ2dzTURRNFBF
Qz09JworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgKCdXcm9uZyBTZWMt
V2ViU29ja2V0LUtleSAocGFkZGluZyBiaXRzIGFyZSBub3QgemVybyknLAorICAgICAgICAgICAg
IHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdl
YlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0s
ZEdobElITmhiWEJzWlNCdWIyNWpaUT09JykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtS2V5IChtdWx0aXBsZSB2YWx1ZXMpJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9k
ZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10KKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVu
ZCgKKyAgICAgICAgICAgICgnTWlzc2luZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1ZXN0
X2RlZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0
LVZlcnNpb24nXSA9ICczJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAorICAgICAgICAgICAg
KCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1ZXN0X2RlZiwgTm9uZSwgRmFsc2Up
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMTMs
IDEzJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJz
aW9uIChtdWx0aXBsZSB2YWx1ZXMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0
LVByb3RvY29sJ10gPSAnaWxsZWdhbFx4MDlwcm90b2NvbCcKKyAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgKKyAgICAgICAgICAgICgnSWxsZWdhbCBTZWMtV2ViU29ja2V0LVByb3RvY29sJywgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LVByb3RvY29sJ10gPSAnJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAorICAgICAgICAg
ICAgKCdFbXB0eSBTZWMtV2ViU29ja2V0LVByb3RvY29sJywgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1
ZSkpCisKKyAgICAgICAgZm9yIChjYXNlX25hbWUsIHJlcXVlc3RfZGVmLCBleHBlY3RlZF9zdGF0
dXMsCisgICAgICAgICAgICAgZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pIGluIGJhZF9jYXNl
czoKKyAgICAgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCisg
ICAgICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNw
YXRjaGVyKCkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlci5k
b19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gZXhjZXB0aW9uIHRo
cm93biBmb3IgXCclc1wnIGNhc2UnICUgY2FzZV9uYW1lKQorICAgICAgICAgICAgZXhjZXB0IEhh
bmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShl
eHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkX3N0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNlcHQgVmVyc2lv
bkV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhwZWN0
X2hhbmRzaGFrZV9leGNlcHRpb24pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZTAxZWYy
ODM5MTNlM2ZjODc3NWIzYjI3MzExZjYxOTVjNTdiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQpAQCAtMCwwICsxLDkz
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGVzdHMg
Zm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKworY2xhc3MgVW5pdFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGh0dHBfaGVhZGVyX3V0
aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3BhcnNlX3JlbGF0aXZlX3VyaShzZWxmKToKKyAg
ICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgn
L3dzL3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGhvc3QpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
L3dzL3Rlc3QnLCByZXNvdXJjZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX2Fic29sdXRlX3VyaShz
ZWxmKToKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBh
cnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDoxMDA4MC93cy90ZXN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9jYWxob3N0JywgaG9zdCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxMDA4MCwgcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rl
c3QnLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVh
ZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb20vd3MvdGVz
dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCg4MCwgcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
L3dzL3Rlc3QnLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0
dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCd3c3M6Ly9leGFtcGxlLmNvbS8nKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdleGFtcGxlLmNvbScsIGhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoNDQzLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2Up
CisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaSgKKyAgICAgICAgICAgICd3czovL2V4YW1wbGUuY29tOjgwODAnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdleGFtcGxlLmNvbScsIGhvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoODA4MCwgcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLycsIHJlc291cmNlKQor
CisgICAgZGVmIHRlc3RfcGFyc2VfaW52YWxpZF91cmkoc2VsZik6CisgICAgICAgIGhvc3QsIHBv
cnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8vLycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9y
dCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3
czovL2xvY2FsaG9zdDpJTlZBTElEX1BPUlQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5v
bmUsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFk
ZXJfdXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9sb2NhbGhvc3Q6LTEvd3MnKQor
ICAgICAgICBpZiBzeXMudmVyc2lvbiA+PSAnMy42JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgcmVzb3VyY2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg4MCwgcG9ydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy93cycsIHJlc291cmNl
KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90
ZXN0X21lbW9yaXppbmdmaWxlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21lbW9y
aXppbmdmaWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3Mjg4YzUxMGI4OWJiMjg5MzFkZmY5YTc3OTE4M2E0
OTkxNzU2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkKQEAgLTAsMCArMSwxMDAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxl
LiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVu
aXR0ZXN0CitpbXBvcnQgc2l4CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKKworCitjbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIi
IgorICAgIGRlZiBjaGVjayhzZWxmLCBtZW1vcml6aW5nX2ZpbGUsIG51bV9yZWFkLCBleHBlY3Rl
ZF9saXN0KToKKyAgICAgICAgZm9yIHVudXNlZCBpbiByYW5nZShudW1fcmVhZCk6CisgICAgICAg
ICAgICBtZW1vcml6aW5nX2ZpbGUucmVhZGxpbmUoKQorICAgICAgICBhY3R1YWxfbGlzdCA9IG1l
bW9yaXppbmdfZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIGZvciBl
eHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgY2hl
Y2tfd2l0aF9zaXplKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgcmVhZF9zaXplLCBleHBlY3RlZF9s
aXN0KToKKyAgICAgICAgcmVhZF9saXN0ID0gW10KKyAgICAgICAgcmVhZF9saW5lID0gJycKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGxpbmUgPSBtZW1vcml6aW5nX2ZpbGUucmVh
ZGxpbmUocmVhZF9zaXplKQorICAgICAgICAgICAgbGluZV9sZW5ndGggPSBsZW4obGluZSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lX2xlbmd0aCA8PSByZWFkX3NpemUpCisgICAg
ICAgICAgICBpZiBsaW5lX2xlbmd0aCA9PSAwOgorICAgICAgICAgICAgICAgIGlmIHJlYWRfbGlu
ZSAhPSAnJzoKKyAgICAgICAgICAgICAgICAgICAgcmVhZF9saXN0LmFwcGVuZChyZWFkX2xpbmUp
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlYWRfbGluZSArPSBsaW5lCisg
ICAgICAgICAgICBpZiBsaW5lW2xpbmVfbGVuZ3RoIC0gMV0gPT0gJ1xuJzoKKyAgICAgICAgICAg
ICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKKyAgICAgICAgICAgICAgICByZWFkX2xp
bmUgPSAnJworICAgICAgICBhY3R1YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVtb3Jp
emVkX2xpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCks
IGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVk
X2xpc3QpLCBsZW4ocmVhZF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwsIHJl
YWQgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9saXN0KToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlYWQpCisKKyAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYp
OgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmls
ZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldvcmxkXG5XZWxjb21lJykpCisg
ICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRc
bicsICdXZWxjb21lJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2xpbWl0
X21lbW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3Jp
emluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCisgICAgICAgICAgICBzaXguU3RyaW5nSU8oJ0hlbGxv
XG5Xb3JsZFxuV2VsY29tZScpLCAyKQorICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmls
ZSwgMywgWydIZWxsb1xuJywgJ1dvcmxkXG4nXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6
ZWRfbGluZXNfZW1wdHlfZmlsZShzZWxmKToKKyAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVt
b3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoc2l4LlN0cmluZ0lPKCcnKSkKKyAgICAgICAgc2Vs
Zi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDEwLCBbXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1v
cml6ZWRfbGluZXNfd2l0aF9zaXplKHNlbGYpOgorICAgICAgICBmb3Igc2l6ZSBpbiByYW5nZSgx
LCAxMCk6CisgICAgICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1v
cml6aW5nRmlsZSgKKyAgICAgICAgICAgICAgICBzaXguU3RyaW5nSU8oJ0hlbGxvXG5Xb3JsZFxu
V2VsY29tZScpKQorICAgICAgICAgICAgc2VsZi5jaGVja193aXRoX3NpemUobWVtb3JpemluZ19m
aWxlLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydIZWxsb1xuJywg
J1dvcmxkXG4nLCAnV2VsY29tZSddKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
ICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzM4NzNkZGU5N2RmMDNmMjBkZjVhYzk3MjJmNmFk
NjVkZDAyZWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X21vY2sucHkKQEAgLTAsMCArMSwxMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgbW9jayBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4Lm1vdmVzLnF1ZXVlCitpbXBv
cnQgdGhyZWFkaW5nCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBV
cGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20g
dGVzdCBpbXBvcnQgbW9jaworCisKK2NsYXNzIE1vY2tDb25uVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja0Nvbm4gY2xhc3MuIiIiCisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9jb25uID0gbW9jay5Nb2NrQ29ubihiJ0FCQ1xyXG5E
RUZHXHJcblxyXG5ISUpLJykKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInQUJDXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0RFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0hJSksnLCBzZWxmLl9jb25uLnJlYWRsaW5l
KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkp
CisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
QUJDXHJcbkQnLCBzZWxmLl9jb25uLnJlYWQoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidFRkdcclxuXHJcbkhJJywgc2VsZi5fY29ubi5yZWFkKDkpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGInSksnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGInJywgc2VsZi5fY29ubi5yZWFkKDEwKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfYW5kX3Jl
YWRsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInQUJDXHJcbkQnLCBzZWxm
Ll9jb25uLnJlYWQoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidFRkdcclxuJywgc2Vs
Zi5fY29ubi5yZWFkbGluZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHJcbkhJSksn
LCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzZWxm
Ll9jb25uLnJlYWRsaW5lKCkpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAg
c2VsZi5fY29ubi53cml0ZShiJ0hlbGxvXHJcbicpCisgICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUo
YidXb3JsZFxyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSGVsbG9cclxuV29ybGRc
clxuJywgc2VsZi5fY29ubi53cml0dGVuX2RhdGEoKSkKKworCitjbGFzcyBNb2NrQmxvY2tpbmdD
b25uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja0Js
b2NraW5nQ29ubiBjbGFzcy4iIiIKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICAi
IiJUZXN0cyB0aGF0IGRhdGEgcHV0IHRvIE1vY2tCbG9ja2luZ0Nvbm4gYnkgcHV0X2J5dGVzIG1l
dGhvZCBjYW4gYmUKKyAgICAgICAgcmVhZCBmcm9tIGl0LgorICAgICAgICAiIiIKKyAgICAgICAg
Y2xhc3MgTGluZVJlYWRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAgICAgICAgICIiIkEgdGVz
dCBjbGFzcyB0aGF0IGxhdW5jaGVzIGEgdGhyZWFkLCBjYWxscyByZWFkbGluZSBvbiB0aGUKKyAg
ICAgICAgICAgIHNwZWNpZmllZCBjb25uIHJlcGVhdGVkbHkgYW5kIHB1dHMgdGhlIHJlYWQgZGF0
YSB0byB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICBxdWV1ZS4KKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4sIHF1ZXVlKToKKyAgICAgICAgICAg
ICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVldWUgPSBxdWV1ZQorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm4gPSBjb25uCisgICAg
ICAgICAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0
YXJ0KCkKKworICAgICAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgICAgICB3aGls
ZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29ubi5yZWFkbGluZSgp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChkYXRhKQorCisgICAgICAgIGNv
bm4gPSBtb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKQorICAgICAgICBxdWV1ZSA9IHNpeC5tb3Zlcy5x
dWV1ZS5RdWV1ZSgpCisgICAgICAgIHJlYWRlciA9IExpbmVSZWFkZXIoY29ubiwgcXVldWUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxdWV1ZS5lbXB0eSgpKQorICAgICAgICBjb25uLnB1dF9i
eXRlcyhiJ0ZvbyBiYXJcclxuJykKKyAgICAgICAgcmVhZCA9IHF1ZXVlLmdldCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYidGb28gYmFyXHJcbicsIHJlYWQpCisKKworY2xhc3MgTW9ja1Rh
YmxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgTW9ja1Rh
YmxlIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2RpY3Qoc2VsZik6CisgICAg
ICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydLZXknOiAnVmFsdWUnfSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9m
cm9tX2xpc3Qoc2VsZik6CisgICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoWygnS2V5Jywg
J1ZhbHVlJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgn
S0VZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQor
CisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fdHVwbGUoc2VsZik6CisgICAgICAgIHRhYmxlID0g
bW9jay5Nb2NrVGFibGUoKCgnS2V5JywgJ1ZhbHVlJyksICkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisKKyAgICBkZWYgdGVzdF9zZXRfYW5kX2dldChzZWxm
KToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoTm9uZSwgdGFibGUuZ2V0KCdLZXknKSkKKyAgICAgICAgdGFibGVbJ0tleSddID0gJ1Zh
bHVlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS2V5Jykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdrZXknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLZXknXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1ZhbHVlJywgdGFibGVbJ0tFWSddKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RfbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDNmMjFiOGQyOTc2Njg3NzBjYjkx
YzUwMWMyYjJmYzgyNThiOWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X21zZ3V0aWwucHkKQEAgLTAsMCArMSw5MTYgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgbXNndXRpbCBtb2R1bGUuIiIi
CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9u
CitpbXBvcnQgYXJyYXkKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCByYW5kb20KK2lt
cG9ydCBzdHJ1Y3QKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHpsaWIKKworaW1wb3J0IHNldF9z
eXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1
bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vi
c29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuc3RyZWFtIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBp
bXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zy
b20gdGVzdCBpbXBvcnQgbW9jaworZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAorZnJvbSBzaXgu
bW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBpbXBvcnQgaXRlcmJ5dGVzCisKKyMgV2UgdXNl
IG9uZSBmaXhlZCBub25jZSBmb3IgdGVzdGluZyBpbnN0ZWFkIG9mIGNyeXB0b2dyYXBoaWNhbGx5
IHNlY3VyZSBQUk5HLgorX01BU0tJTkdfTk9OQ0UgPSBiJ0FCQ0QnCisKKworZGVmIF9tYXNrX2h5
YmkoZnJhbWUpOgorICAgIGlmIGlzaW5zdGFuY2UoZnJhbWUsIHNpeC50ZXh0X3R5cGUpOgorICAg
ICAgICBFeGNlcHRpb24oJ21hc2tpbmcgZG9lcyBub3QgYWNjZXB0IFRleHRzJykKKworICAgIGZy
YW1lX2tleSA9IGxpc3QoaXRlcmJ5dGVzKF9NQVNLSU5HX05PTkNFKSkKKyAgICBmcmFtZV9rZXlf
bGVuID0gbGVuKGZyYW1lX2tleSkKKyAgICByZXN1bHQgPSBieXRlYXJyYXkoZnJhbWUpCisgICAg
Y291bnQgPSAwCisKKyAgICBmb3IgaSBpbiByYW5nZShsZW4ocmVzdWx0KSk6CisgICAgICAgIHJl
c3VsdFtpXSBePSBmcmFtZV9rZXlbY291bnRdCisgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkg
JSBmcmFtZV9rZXlfbGVuCisKKyAgICByZXR1cm4gX01BU0tJTkdfTk9OQ0UgKyBieXRlcyhyZXN1
bHQpCisKKworZGVmIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCByZXF1
ZXN0LCBzdHJlYW1fb3B0aW9ucyk6CisgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCisgICAgaWYgcmVzcG9uc2UgaXMgbm90IE5vbmU6CisgICAgICAgIHBy
b2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9ucykKKyAgICAgICAgcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycy5hcHBlbmQocHJvY2Vzc29yKQorCisKK2RlZiBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRfZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRl
X3JlcXVlc3Q9Tm9uZSk6CisgICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1v
Y2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKKyAgICByZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJT
SU9OX0hZQklfTEFURVNUCisgICAgcmVxLndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KKwor
ICAgIHByb2Nlc3NvciA9IE5vbmUKKyAgICBpZiBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdCBp
cyBub3QgTm9uZToKKyAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IoCisgICAgICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdCkKKwor
ICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCisgICAgaWYgcHJvY2Vzc29yIGlz
IG5vdCBOb25lOgorICAgICAgICBfaW5zdGFsbF9leHRlbnNpb25fcHJvY2Vzc29yKHByb2Nlc3Nv
ciwgcmVxLCBzdHJlYW1fb3B0aW9ucykKKyAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtKHJlcSwg
c3RyZWFtX29wdGlvbnMpCisKKyAgICByZXR1cm4gcmVxCisKKworZGVmIF9jcmVhdGVfcmVxdWVz
dCgqZnJhbWVzKToKKyAgICAiIiJDcmVhdGVzIE1vY2tSZXF1ZXN0IHVzaW5nIGRhdGEgZ2l2ZW4g
YXMgZnJhbWVzLgorCisgICAgZnJhbWVzIHdpbGwgYmUgcmV0dXJuZWQgb24gY2FsbGluZyByZXF1
ZXN0LmNvbm5lY3Rpb24ucmVhZCgpIHdoZXJlIHJlcXVlc3QKKyAgICBpcyBNb2NrUmVxdWVzdCBy
ZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uLgorICAgICIiIgorCisgICAgcmVhZF9kYXRhID0gW10K
KyAgICBmb3IgKGhlYWRlciwgYm9keSkgaW4gZnJhbWVzOgorICAgICAgICByZWFkX2RhdGEuYXBw
ZW5kKGhlYWRlciArIF9tYXNrX2h5YmkoYm9keSkpCisKKyAgICByZXR1cm4gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YShiJycuam9pbihyZWFkX2RhdGEpKQorCisKK2RlZiBfY3JlYXRlX2Js
b2NraW5nX3JlcXVlc3QoKToKKyAgICAiIiJDcmVhdGVzIE1vY2tSZXF1ZXN0LgorCisgICAgRGF0
YSB3cml0dGVuIHRvIGEgTW9ja1JlcXVlc3QgY2FuIGJlIHJlYWQgb3V0IGJ5IGNhbGxpbmcKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkuCisgICAgIiIiCisKKyAgICByZXEg
PSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQmxvY2tpbmdDb25uKCkpCisg
ICAgcmVxLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorICAgIHN0cmVh
bV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygpCisgICAgcmVxLndzX3N0cmVhbSA9IFN0cmVhbShy
ZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJldHVybiByZXEKKworCitjbGFzcyBCYXNpY01lc3Nh
Z2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCYXNpYyB0ZXN0cyBmb3IgU3RyZWFt
LiIiIgorICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDgxXHgwNUhlbGxvJywgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHBheWxvYWQgPSAnYScg
KiAxMjUKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidceDgxXHg3ZCcgKyBwYXlsb2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9zZW5kX21lZGl1bV9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gJ2EnICog
MTI2CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGInXHg4MVx4N2VceDAwXHg3ZScgKyBwYXlsb2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAg
ICAgICAgcGF5bG9hZCA9ICdhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
cGF5bG9hZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDdlXHhmZlx4ZmYnICsg
cGF5bG9hZC5lbmNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9sYXJnZV9t
ZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gJ2EnICogKDEgPDwgMTYpCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCBwYXlsb2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgYidceDgxXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyArCisgICAgICAg
ICAgICBwYXlsb2FkLmVuY29kZSgnVVRGLTgnKSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6CisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCB1J1x1NjVlNScpCisgICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMg
ZTYsOTcsYTUgaW4gVVRGLTgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDAzXHhl
Nlx4OTdceGE1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRzKHNl
bGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICcgJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9t
ZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIEZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnIScsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDAx
XHgwNUhlbGxvXHgwMFx4MDEgXHgwMFx4MDVXb3JsZFx4ODBceDAxIScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9mcmFnbWVudHNfaW1tZWRpYXRlX3plcm9fdGVybWluYXRpb24oc2VsZik6Cisg
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8gV29ybGQhJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGInXHgwMVx4MGNIZWxsbyBXb3JsZCFceDgwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3RfcmVj
ZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChi
J1x4ODFceDg1JywgYidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChiJ1x4ODFceDg2JywgYidXb3JsZCEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVs
bG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAg
ICAgICAgcGF5bG9hZCA9IGInYScgKiAxMjUKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgoYidceDgxXHhmZCcsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
eWxvYWQuZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1f
bWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9IGInYScgKiAxMjYKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDgxXHhmZVx4MDBceDdlJywgcGF5bG9hZCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAg
ICAgICAgcGF5bG9hZCA9IGInYScgKiAoKDEgPDwgMTYpIC0gMSkKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDgxXHhmZVx4ZmZceGZmJywgcGF5bG9hZCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYg
dGVzdF9yZWNlaXZlX2xhcmdlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSBiJ2En
ICogKDEgPDwgMTYpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisgICAgICAg
ICAgICAoYidceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJywgcGF5bG9h
ZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZC5kZWNvZGUoJ1VURi04JyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
CisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2xlbmd0aF9ub3RfZW5jb2RlZF91c2luZ19taW5pbWFs
X251bWJlcl9vZl9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBMb2cgd2FybmluZyBvbiByZWNlaXZp
bmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIHRoYXQgZG9lc24ndCB1c2UKKyAgICAgICAgIyBt
aW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQgY29udGludWUgcHJvY2Vzc2luZy4KKworICAgICAg
ICBwYXlsb2FkID0gYidhJworICAgICAgICAjIDEgYnl0ZSBjYW4gYmUgcmVwcmVzZW50ZWQgd2l0
aG91dCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZC4KKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDEnLCBwYXlsb2FkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXls
b2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV91
bmljb2RlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFc
eDgzJywgYidceGU2XHg5Y1x4YWMnKSkKKyAgICAgICAgIyBVKzY3MmMgaXMgZW5jb2RlZCBhcyBl
Niw5YyxhYyBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUnXHU2NzJjJywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21l
c3NhZ2VfZXJyb25lb3VzX3VuaWNvZGUoc2VsZik6CisgICAgICAgICMgXHg4MCBhbmQgXHg4MSBh
cmUgaW52YWxpZCBhcyBVVEYtOC4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDgxXHg4MicsIGInXHg4MFx4ODEnKSkKKyAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlcnMg
c2hvdWxkIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEludmFsaWRVVEY4RXhjZXB0aW9uLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJh
Z21lbnRzKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDFc
eDg1JywgYidIZWxsbycpLCAoYidceDAwXHg4MScsIGInICcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiJ1x4MDBceDg1JywgYidXb3JsZCcpLCAoYidceDgwXHg4MScsIGIn
IScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRz
X3VuaWNvZGUoc2VsZik6CisgICAgICAgICMgVVRGLTggZW5jb2RlcyBVKzZmMjIgaW50byBlNmJj
YTIgYW5kIFUrNWI1NyBpbnRvIGU1YWQ5Ny4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgoYidceDAxXHg4MicsIGInXHhlNlx4YmMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYidceDAwXHg4MicsIGInXHhhMlx4ZTUnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYidceDgwXHg4MicsIGInXHhhZFx4OTcnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh1J1x1NmYyMlx1NWI1NycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJl
cXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW1tZWRpYXRlX3plcm9f
dGVybWluYXRpb24oc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGIn
XHgwMVx4OGMnLCBiJ0hlbGxvIFdvcmxkIScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiJ1x4ODBceDgwJywgYicnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVs
bG8gV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYg
dGVzdF9yZWNlaXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2VsZik6CisgICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHgwMVx4ODUnLCBiJ1dvcmxkJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkK
KworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2ludGVybWVkaWF0ZV9idXRfbm90X3N0
YXJ0ZWQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMFx4
ODUnLCBiJ0hlbGxvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxp
ZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2Vu
ZF9idXRfbm90X3N0YXJ0ZWQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoKGInXHg4MFx4ODUnLCBiJ0hlbGxvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1z
Z3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVf
bWVzc2FnZV9kaXNjYXJkKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KAorICAgICAgICAgICAgKGInXHg4Zlx4ODYnLCBiJ0lHTk9SRScpLCAoYidceDgxXHg4NScsIGIn
SGVsbG8nKSwKKyAgICAgICAgICAgIChiJ1x4OGZceDg5JywgYidESVNSRUdBUkQnKSwgKGInXHg4
MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLlVu
c3VwcG9ydGVkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhtc2d1dGlsLlVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfY2xvc2Uoc2VsZik6CisgICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCisgICAgICAgICAgICAoYidceDg4XHg4YScsIHN0cnVjdC5w
YWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEwMDAsIHJlcXVlc3Qud3NfY2xvc2VfY29kZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnR29vZCBieWUnLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgIGRlZiB0
ZXN0X3NlbmRfbG9uZ2VzdF9jbG9zZShzZWxmKToKKyAgICAgICAgcmVhc29uID0gJ2EnICogMTIz
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisgICAgICAgICAgICAoYidceDg4
XHhmZCcsIHN0cnVjdC5wYWNrKCchSCcsIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpICsK
KyAgICAgICAgICAgICByZWFzb24uZW5jb2RlKCdVVEYtOCcpKSkKKyAgICAgICAgcmVxdWVzdC53
c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX2NvZGUsIGNvbW1vbi5TVEFUVVNf
Tk9STUFMX0NMT1NVUkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19jbG9z
ZV9yZWFzb24sIHJlYXNvbikKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfdG9vX2xvbmcoc2Vs
Zik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24sIHJlcXVlc3Qud3Nfc3RyZWFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAn
YScgKiAxMjQpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Nsb3NlX2luY29uc2lzdGVudF9jb2RlX2Fu
ZF9yZWFzb24oc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAg
ICAgICAjIHJlYXNvbiBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gY29kZSBp
cyBOb25lLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4
Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtLmNsb3NlX2Nvbm5lY3Rp
b24sIHJlcXVlc3Qud3Nfc3RyZWFtLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAn
YScpCisKKyAgICBkZWYgdGVzdF9zZW5kX3Bpbmcoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVs
bG8gV29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODlceDBjSGVsbG8gV29y
bGQhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2xvbmdlc3RfcGluZyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5n
KHJlcXVlc3QsICdhJyAqIDEyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODlceDdk
JyArIGInYScgKiAxMjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9waW5nX3Rvb19sb25nKHNl
bGYpOgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sIG1zZ3V0aWwuc2VuZF9w
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LCAnYScgKiAxMjYpCisKKyAg
ICBkZWYgdGVzdF9yZWNlaXZlX3Bpbmcoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHJlY2Vpdmlu
ZyBhIHBpbmcgY29udHJvbCBmcmFtZS4iIiIKKyAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwg
bWVzc2FnZSk6CisgICAgICAgICAgICByZXF1ZXN0LmNhbGxlZCA9IFRydWUKKworICAgICAgICAj
IFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgdG8gcGluZyB3aXRoIHBvbmcgd2l0aG91dCBh
bnkgYWN0aW9uCisgICAgICAgICMgYnkgYXBwbGljYXRpb24gbGF5ZXIuCisgICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4OVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDhhXHgwNUhlbGxvJywgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoKGInXHg4OVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25fcGlu
Z19oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2xvbmdlc3RfcGluZyhzZWxm
KToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZCcsIGInYScg
KiAxMjUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1Jywg
YidXb3JsZCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4YVx4
N2QnICsgYidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3BpbmdfdG9vX2xv
bmcoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4OVx4ZmVc
eDAwXHg3ZScsIGInYScgKiAxMjYpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGls
LkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Bvbmco
c2VsZik6CisgICAgICAgICIiIlRlc3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFtZS4i
IiIKKyAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgbWVzc2FnZSk6CisgICAgICAgICAgICBy
ZXF1ZXN0LmNhbGxlZCA9IFRydWUKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcpKQorICAgICAgICByZXF1ZXN0Lm9uX3BvbmdfaGFu
ZGxlciA9IGhhbmRsZXIKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxv
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODlceDA1SGVsbG8nLCByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgICMgVmFsaWQgcG9uZyBpcyByZWNlaXZl
ZCwgYnV0IHJlY2VpdmVfbWVzc2FnZSB3b24ndCByZXR1cm4gZm9yIGl0LgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQor
ICAgICAgICAjIENoZWNrIHRoYXQgbm90aGluZyB3YXMgd3JpdHRlbiBhZnRlciByZWNlaXZlX21l
c3NhZ2UgY2FsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODlceDA1SGVsbG8nLCBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlcXVlc3QuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV91bnNvbGljaXRlZF9w
b25nKHNlbGYpOgorICAgICAgICAjIFVuc29saWNpdGVkIHBvbmcgaXMgYWxsb3dlZCBmcm9tIEh5
QmkgMDcuCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4YVx4ODUnLCBi
J0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUn
LCBiJ1dvcmxkJykpCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVsbG8n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29y
bGQnKSkKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0p1bWJvJykKKyAgICAg
ICAgIyBCb2R5IG1pc21hdGNoLgorICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KQorCisgICAgZGVmIHRlc3RfcGluZ19jYW5ub3RfYmVfZnJhZ21lbnRlZChzZWxmKToKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDA5XHg4NScsIGInSGVsbG8nKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1
ZXN0KQorCisgICAgZGVmIHRlc3RfcGluZ193aXRoX3Rvb19sb25nX3BheWxvYWQoc2VsZik6Cisg
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4OVx4ZmVceDAxXHgwMCcsIGIn
YScgKiAyNTYpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFt
ZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UsIHJlcXVlc3QpCisKKworY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgcGVybWVzc2FnZS1kZWZsYXRlIGV4dGVuc2lv
bi4iIiIKKyAgICBkZWYgdGVzdF9yZXNwb25zZV9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9u
LlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFy
YW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpCisgICAgICAgIHByb2Nl
c3NvciA9IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKKyAg
ICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
Tm9uZSwgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXInKSkKKworICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAg
ICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9u
ZSkKKyAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IoZXh0ZW5zaW9uKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93aW5kb3df
Yml0cyg4KQorICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
KFRydWUpCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9u
c2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJzgnLCByZXNwb25z
ZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVyKCdjbGllbnRfbm9fY29udGV4
dF90YWtlb3ZlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgTm9u
ZSwgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXInKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZShzZWxmKToKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3Jl
cXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
SGVsbG8nKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9
IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkID0gYidceGMxJWMn
ICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRf
aGVsbG8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9lbXB0eV9tZXNzYWdlKHNl
bGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW4gZW1wdHkgbWVzc2FnZSBpcyBjb21wcmVzc2Vk
IGNvcnJlY3RseS4iIiIKKworICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAg
ICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisKKyAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCisKKyAgICAgICAgIyBQYXlsb2Fk
IGluIGJpbmFyeTogMGIwMDAwMDAwMAorICAgICAgICAjIEZyb20gTFNCLAorICAgICAgICAjIC0g
MSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFIChubyBjb21w
cmVzc2lvbikKKyAgICAgICAgIyAtIDUgYml0cyBvZiBwYWRkaW5nCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYidceGMxXHgwMVx4MDAnLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfd2l0aF9udWxsX2NoYXJhY3RlcihzZWxm
KToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgc2ltcGxlIHBheWxvYWQgKG9uZSBudWxsKSBpcyBm
cmFtZWQgY29ycmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVO
U0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisg
ICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKwor
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnXHgwMCcpCisKKyAgICAgICAg
IyBQYXlsb2FkIGluIGJpbmFyeTogMGIwMTEwMDAxMCAwYjAwMDAwMDAwIDBiMDAwMDAwMDAKKyAg
ICAgICAgIyBGcm9tIExTQiwKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5BTCAoMCkKKyAgICAg
ICAgIyAtIDIgYml0cyBvZiBCVFlQRSAoMDEgdGhhdCBtZWFucyBmaXhlZCBIdWZmbWFuKQorICAg
ICAgICAjIC0gOCBiaXRzIG9mIHRoZSBmaXJzdCBjb2RlICgwMDExMDAwMCB0aGF0IGlzIHRoZSBj
b2RlIGZvciB0aGUgbGl0ZXJhbAorICAgICAgICAjICAgYWxwaGFiZXQgMHgwMCkKKyAgICAgICAg
IyAtIDcgYml0cyBvZiB0aGUgc2Vjb25kIGNvZGUgKDAwMDAwMDAgdGhhdCBpcyB0aGUgY29kZSBm
b3IgdGhlCisgICAgICAgICMgICBlbmQtb2YtYmxvY2spCisgICAgICAgICMgLSAxIGJpdCBvZiBC
RklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQor
ICAgICAgICAjIC0gMiBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4YzFceDAzXHg2Mlx4MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3R3b19tZXNz
YWdlcyhzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRl
cigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAg
IGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21w
cmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAg
ICBleHBlY3RlZCA9IGInJworCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5j
b21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5m
bHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXBy
ZXNzZWRfaGVsbG9bOi00XQorICAgICAgICBleHBlY3RlZCArPSBiJ1x4YzElYycgJSBsZW4oY29t
cHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbworCisg
ICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAg
ICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVT
SCkKKyAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQorICAg
ICAgICBleHBlY3RlZCArPSBiJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKKyAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRl
ZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkKHNlbGYpOgorICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0dv
b2RieWUnLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkID0g
YidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9IGNv
bXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9nb29kYnllID0gY29tcHJlc3MuY29t
cHJlc3MoYidHb29kYnllJykKKyAgICAgICAgY29tcHJlc3NlZF9nb29kYnllICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBlY3RlZCArPSBiJ1x4MDAlYycg
JSBsZW4oY29tcHJlc3NlZF9nb29kYnllKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2Vk
X2dvb2RieWUKKyAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGIn
V29ybGQnKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3Js
ZFs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dv
cmxkKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2ZpcnN0X2ZyYW1l
KHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNv
bXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYicnKQorICAgICAgICBjb21w
cmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAg
ICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBj
b21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9lbXB0eSArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJlc3NlZF9lbXB0
eSA9IGNvbXByZXNzZWRfZW1wdHlbOi00XQorICAgICAgICBleHBlY3RlZCArPSBiJ1x4ODAlYycg
JSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9l
bXB0eQorICAgICAgICBwcmludCgnJXInICUgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
IGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xhc3RfZnJhbWUoc2VsZik6
CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAg
ICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1l
c3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3Nv
YmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAg
ZXhwZWN0ZWQgPSBiJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhw
ZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29t
cHJlc3MuY29tcHJlc3MoYicnKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29t
cHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihj
b21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV91c2luZ19zbWFsbF93aW5k
b3coc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXJ0ID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6JworICAgICAgICB0ZXN0X21lc3NhZ2UgPSBjb21tb25fcGFydCArICctJyAqIDMwMDAwICsg
Y29tbW9uX3BhcnQKKworICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisg
ICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywg
JzgnKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAg
ICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCisKKyAgICAg
ICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgorICAgICAgICBleHBlY3RlZF93
ZWJzb2NrZXRfcGF5bG9hZF9zaXplID0gOTEKKworICAgICAgICBhY3R1YWxfZnJhbWUgPSByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIGV4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZSArIGV4cGVjdGVkX3dl
YnNvY2tldF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICBsZW4oYWN0dWFsX2ZyYW1lKSkKKyAg
ICAgICAgYWN0dWFsX2hlYWRlciA9IGFjdHVhbF9mcmFtZVswOmV4cGVjdGVkX3dlYnNvY2tldF9o
ZWFkZXJfc2l6ZV0KKyAgICAgICAgYWN0dWFsX3BheWxvYWQgPSBhY3R1YWxfZnJhbWVbZXhwZWN0
ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplOl0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIn
XHhjMSVjJyAlIGV4cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0dWFsX2hlYWRlcikKKyAgICAgICAgZGVjb21wcmVzcyA9IHpsaWIuZGVj
b21wcmVzc29iaigtOCkKKyAgICAgICAgZGVjb21wcmVzc2VkX21lc3NhZ2UgPSBkZWNvbXByZXNz
LmRlY29tcHJlc3MoYWN0dWFsX3BheWxvYWQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MDBceDAwXHhmZlx4ZmYnKQorICAgICAgICBk
ZWNvbXByZXNzZWRfbWVzc2FnZSArPSBkZWNvbXByZXNzLmZsdXNoKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0ZXN0X21lc3NhZ2UsIGRlY29tcHJlc3NlZF9tZXNzYWdlLmRlY29kZSgnVVRG
LTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVzcy51bnVzZWRf
ZGF0YSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGRlY29tcHJlc3MudW5jb25z
dW1lZF90YWlsKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9ub19jb250ZXh0X3Rha2Vv
dmVyX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5T
SU9OKQorICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRf
dGFrZW92ZXInLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0
ZW5zaW9uKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKKyAgICAgICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1UcnVlKQorCisgICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwg
emxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGli
Lk1BWF9XQklUUykKKworICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGIn
SGVsbG8nKQorICAgICAgICBmaXJzdF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lO
Q19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4NDElYycgJSBsZW4oZmlyc3RfaGVsbG8p
CisgICAgICAgIGV4cGVjdGVkICs9IGZpcnN0X2hlbGxvCisgICAgICAgIHNlY29uZF9oZWxsbyA9
IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBzZWNvbmRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIHNlY29uZF9oZWxsbyA9IHNl
Y29uZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihzZWNv
bmRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9IHNlY29uZF9oZWxsbworCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQgKyBleHBlY3RlZCArIGV4cGVjdGVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
IGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2JmaW5hbChzZWxmKToKKyAgICAgICAg
ZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZs
YXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKKyAgICAgICAgcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29yc1swXS5zZXRfYmZpbmFsKFRydWUpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgZW5kPVRydWUpCisKKyAgICAgICAgZXhwZWN0
ZWQgPSBiJycKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyAr
PSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3NlZF9oZWxsbyArIHN0cnVjdC5wYWNrKCchQicsIDApCisgICAgICAgIGV4cGVj
dGVkICs9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoYidXb3JsZCcpCisgICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKKyAgICAgICAgY29t
cHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBzdHJ1Y3QucGFjaygnIUInLCAwKQor
ICAgICAgICBleHBlY3RlZCArPSBiJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKKyAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
IGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgorICAgICAgICBjb21wcmVz
cyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVG
TEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJ
VFMpCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVs
bG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6
LTRdCisgICAgICAgIGRhdGEgPSBiJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfaGVsbG8pIHwg
MHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG8pCisKKyAg
ICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsgX21hc2tf
aHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0
ZXN0X3JlY2VpdmVfbWVzc2FnZV9yYW5kb21fc2VjdGlvbihzZWxmKToKKyAgICAgICAgIiIiVGVz
dCB0aGF0IGEgY29tcHJlc3NlZCBtZXNzYWdlIGZyYWdtZW50ZWQgaW50byBsb3RzIG9mIGNodW5r
cyBpcworICAgICAgICBjb3JyZWN0bHkgcmVjZWl2ZWQuCisgICAgICAgICIiIgorCisgICAgICAg
IHJhbmRvbS5zZWVkKGE9MCkKKyAgICAgICAgcGF5bG9hZCA9IGInJy5qb2luKAorICAgICAgICAg
ICAgW3N0cnVjdC5wYWNrKCchQicsIHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJh
bmdlKDEwMDApXSkKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5a
X0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCA9IGNvbXByZXNzLmNvbXByZXNzKHBheWxvYWQpCisgICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJl
c3NlZF9wYXlsb2FkID0gY29tcHJlc3NlZF9wYXlsb2FkWzotNF0KKworICAgICAgICAjIEZyYWdt
ZW50IHRoZSBjb21wcmVzc2VkIHBheWxvYWQgaW50byBsb3RzIG9mIGZyYW1lcy4KKyAgICAgICAg
Ynl0ZXNfY2h1bmtlZCA9IDAKKyAgICAgICAgZGF0YSA9IGInJworICAgICAgICBmcmFtZV9jb3Vu
dCA9IDAKKworICAgICAgICBjaHVua19zaXplcyA9IFtdCisKKyAgICAgICAgd2hpbGUgYnl0ZXNf
Y2h1bmtlZCA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1
cmUgdGhhdAorICAgICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBlcXVhbCBv
ciBsZXNzIHRoYW4gMTI1IHNvIHRoYXQgd2UgY2FuCisgICAgICAgICAgICAjICAgdXNlIDEgb2N0
ZXQgbGVuZ3RoIGhlYWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCisgICAgICAgICAgICAjIC0g
YXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgbWlu
KDEyNSwKKyAgICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLy8gMTAs
CisgICAgICAgICAgICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1
bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKKyAgICAg
ICAgICAgIGNodW5rID0gY29tcHJlc3NlZF9wYXlsb2FkW2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1
bmtlZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua19zaXpl
XQorICAgICAgICAgICAgYnl0ZXNfY2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICAgICAgICAg
IGZpcnN0X29jdGV0ID0gMHgwMAorICAgICAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6CisgICAg
ICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSBmaXJzdF9vY3RldCB8IDB4NDIKKyAgICAgICAgICAg
IGlmIGJ5dGVzX2NodW5rZWQgPT0gbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAg
ICAgICAgZmlyc3Rfb2N0ZXQgPSBmaXJzdF9vY3RldCB8IDB4ODAKKworICAgICAgICAgICAgZGF0
YSArPSBiJyVjJWMnICUgKGZpcnN0X29jdGV0LCBjaHVua19zaXplIHwgMHg4MCkKKyAgICAgICAg
ICAgIGRhdGEgKz0gX21hc2tfaHliaShjaHVuaykKKworICAgICAgICAgICAgZnJhbWVfY291bnQg
Kz0gMQorCisgICAgICAgIHByaW50KCJDaHVuayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY2h1bmtfc2l6ZXMpID4gMTApCisKKyAgICAgICAg
IyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsgX21hc2tfaHliaShz
dHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVT
U0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisKKyAgICAgICAg
ZGF0YSA9IGInJworCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVz
cyhiJ0hlbGxvV2ViU29ja2V0JykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzZWRfaGVsbG9bOi00XQorICAgICAgICBzcGxpdF9wb3NpdGlvbiA9IGxlbihjb21wcmVz
c2VkX2hlbGxvKSAvLyAyCisgICAgICAgIGRhdGEgKz0gYidceDQxJWMnICUgKHNwbGl0X3Bvc2l0
aW9uIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG9b
OnNwbGl0X3Bvc2l0aW9uXSkKKworICAgICAgICBkYXRhICs9IGInXHg4MCVjJyAlICgobGVuKGNv
bXByZXNzZWRfaGVsbG8pIC0gc3BsaXRfcG9zaXRpb24pIHwgMHg4MCkKKyAgICAgICAgZGF0YSAr
PSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVsbG9bc3BsaXRfcG9zaXRpb246XSkKKworICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxp
Yi5NQVhfV0JJVFMpCisKKyAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXBy
ZXNzKGInV29ybGQnKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3Nl
ZF93b3JsZFs6LTRdCisgICAgICAgIGRhdGEgKz0gYidceGMxJWMnICUgKGxlbihjb21wcmVzc2Vk
X3dvcmxkKSB8IDB4ODApCisgICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dv
cmxkKQorCisgICAgICAgICMgQ2xvc2UgZnJhbWUKKyAgICAgICAgZGF0YSArPSBiJ1x4ODhceDhh
JyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykKKwor
ICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAg
ICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgZGF0YSwgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdIZWxsb1dlYlNvY2tldCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJl
cXVlc3QpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfbWl4ZWRf
YnR5cGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhIG1lc3NhZ2UgY29tcHJlc3NlZCB1
c2luZyBsb3RzIG9mIERFRkxBVEUgYmxvY2tzIHdpdGgKKyAgICAgICAgdmFyaW91cyBmbHVzaCBt
b2RlIGlzIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFuZG9t
LnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisgICAgICAgICAgICBbc3Ry
dWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4gcmFuZ2UoMTAw
MCldKQorCisgICAgICAgIGNvbXByZXNzID0gTm9uZQorCisgICAgICAgICMgRnJhZ21lbnQgdGhl
IGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgorICAgICAgICBieXRlc19j
aHVua2VkID0gMAorICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgPSBiJycKKworICAgICAgICBj
aHVua19zaXplcyA9IFtdCisgICAgICAgIG1ldGhvZHMgPSBbXQorICAgICAgICBzeW5jX3VzZWQg
PSBGYWxzZQorICAgICAgICBmaW5pc2hfdXNlZCA9IEZhbHNlCisKKyAgICAgICAgd2hpbGUgYnl0
ZXNfY2h1bmtlZCA8IGxlbihwYXlsb2FkKToKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIGF0IGxl
YXN0IDEwIGNodW5rcyBhcmUgY3JlYXRlZC4KKyAgICAgICAgICAgIGNodW5rX3NpemUgPSByYW5k
b20ucmFuZGludCgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1p
bigxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihw
YXlsb2FkKSAtIGJ5dGVzX2NodW5rZWQpKQorICAgICAgICAgICAgY2h1bmtfc2l6ZXMuYXBwZW5k
KGNodW5rX3NpemUpCisgICAgICAgICAgICBjaHVuayA9IHBheWxvYWRbYnl0ZXNfY2h1bmtlZDpi
eXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0KKworICAgICAgICAgICAgYnl0ZXNfY2h1bmtlZCAr
PSBjaHVua19zaXplCisKKyAgICAgICAgICAgIGlmIGNvbXByZXNzIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCisKKyAgICAgICAgICAgIGlmIGJ5dGVzX2NodW5r
ZWQgPT0gbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCAr
PSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKKyAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgICAgICAg
ICAgY29tcHJlc3NlZF9wYXlsb2FkID0gY29tcHJlc3NlZF9wYXlsb2FkWzotNF0KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gcmFuZG9tLnJhbmRpbnQoMCwgMSkK
KyAgICAgICAgICAgICAgICBtZXRob2RzLmFwcGVuZChtZXRob2QpCisgICAgICAgICAgICAgICAg
aWYgbWV0aG9kID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCAr
PSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nl
ZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICAg
ICAgICAgICAgICBzeW5jX3VzZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNo
dW5rKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX0ZJTklTSCkKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3MgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaF91c2VkID0gVHJ1ZQorCisgICAgICAgIHByaW50
KCJDaHVuayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShsZW4oY2h1bmtfc2l6ZXMpID4gMTApCisgICAgICAgIHByaW50KCJNZXRob2RzOiAlciIgJSBt
ZXRob2RzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3luY191c2VkKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoZmluaXNoX3VzZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDEyNSA8
IGxlbihjb21wcmVzc2VkX3BheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNv
bXByZXNzZWRfcGF5bG9hZCkgPCA2NTUzNikKKyAgICAgICAgZGF0YSA9IGInXHhjMlx4ZmUnICsg
c3RydWN0LnBhY2soJyFIJywgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIGRhdGEg
Kz0gX21hc2tfaHliaShjb21wcmVzc2VkX3BheWxvYWQpCisKKyAgICAgICAgIyBDbG9zZSBmcmFt
ZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygn
IUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRF
X0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2Rh
dGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UocmVxdWVzdCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworCitjbGFzcyBNZXNzYWdlUmVjZWl2ZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyB0aGUgU3RyZWFtIGNsYXNzIHVzaW5n
IE1lc3NhZ2VSZWNlaXZlci4iIiIKKyAgICBkZWYgdGVzdF9xdWV1ZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCisgICAgICAgIHJlY2VpdmVyID0g
bXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIHJlY2VpdmVyLnJlY2VpdmVfbm93YWl0KCkpCisKKyAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhiJ1x4ODFceDg2JyArIF9tYXNrX2h5YmkoYidIZWxsbyEnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQor
CisgICAgZGVmIHRlc3Rfb25tZXNzYWdlKHNlbGYpOgorICAgICAgICBvbm1lc3NhZ2VfcXVldWUg
PSBzaXgubW92ZXMucXVldWUuUXVldWUoKQorCisgICAgICAgIGRlZiBvbm1lc3NhZ2VfaGFuZGxl
cihtZXNzYWdlKToKKyAgICAgICAgICAgIG9ubWVzc2FnZV9xdWV1ZS5wdXQobWVzc2FnZSkKKwor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVj
ZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0LCBvbm1lc3NhZ2VfaGFuZGxl
cikKKworICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsg
X21hc2tfaHliaShiJ0hlbGxvIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEn
LCBvbm1lc3NhZ2VfcXVldWUuZ2V0KCkpCisKKworY2xhc3MgTWVzc2FnZVNlbmRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVz
c2FnZVNlbmRlci4iIiIKKyAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgc2VuZGVyID0gbXNndXRpbC5N
ZXNzYWdlU2VuZGVyKHJlcXVlc3QpCisKKyAgICAgICAgc2VuZGVyLnNlbmQoJ1dvcmxkJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1V29ybGQnLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKKyAg
ICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdl
U2VuZGVyLgorICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5u
b3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKKyAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4g
YSBzZXBhcmF0ZSB0aHJlYWQuCisgICAgICAgIHNlbmRfcXVldWUgPSBzaXgubW92ZXMucXVldWUu
UXVldWUoKQorCisgICAgICAgIGRlZiB3cml0ZShieXRlcyk6CisgICAgICAgICAgICBzZW5kX3F1
ZXVlLnB1dChieXRlcykKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1
ZXN0KCkKKyAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlID0gd3JpdGUKKworICAgICAg
ICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5k
ZXIuc2VuZF9ub3dhaXQoJ0hlbGxvJykKKyAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdXb3Js
ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDgxXHgwNUhlbGxvJywgc2VuZF9xdWV1
ZS5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1V29ybGQnLCBzZW5k
X3F1ZXVlLmdldCgpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRl
c3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9z
dHJlYW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzODk5ZDIwNTMzZWI0Y2YwYTk4MTZjOGIzYjJiYzhjNTA1
NDhiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJl
YW0ucHkKQEAgLTAsMCArMSw3MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciBzdHJlYW0gbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBzZXRf
c3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9k
dWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgc3RyZWFtCisKKworY2xhc3MgU3RyZWFtVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3Igc3RyZWFtIG1vZHVsZS4iIiIKKyAgICBkZWYg
dGVzdF9jcmVhdGVfaGVhZGVyKHNlbGYpOgorICAgICAgICAjIG1vcmUsIHJzdjEsIC4uLiwgcnN2
NCBhcmUgYWxsIHRydWUKKyAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0ZV9oZWFkZXIoY29t
bW9uLk9QQ09ERV9URVhULCAxLCAxLCAxLCAxLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGInXHhmMVx4ODEnLCBoZWFkZXIpCisKKyAgICAgICAgIyBNYXhpbXVtIHBheWxvYWQgc2l6
ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24uT1BDT0RFX1RF
WFQsICgxIDw8IDYzKSAtIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDAxXHg3Zlx4N2Zc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmJywgaGVhZGVyKQorCisgICAgICAgICMgSW52YWxp
ZCBvcGNvZGUgMHgxMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdHJl
YW0uY3JlYXRlX2hlYWRlciwgMHgxMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCkKKworICAgICAgICAjIEludmFsaWQgdmFsdWUgMHhmIHBhc3NlZCB0byBtb3Jl
IHBhcmFtZXRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdHJlYW0u
Y3JlYXRlX2hlYWRlciwgY29tbW9uLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAweGYsIDAsIDAsIDAsIDApCisKKyAgICAgICAgIyBUb28gbG9uZyBwYXlsb2FkX2xl
bmd0aAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdHJlYW0uY3JlYXRl
X2hlYWRlciwgY29tbW9uLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAx
IDw8IDYzLCAwLCAwLCAwLCAwLCAwKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
ICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDM0Nzk0MTA1MTQ1NWViZWU1ODgyM2I0YjBiZTkz
NzYyOTEyYjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X3V0aWwucHkKQEAgLTAsMCArMSwxOTQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50
X2Z1bmN0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzeXMKK2ltcG9ydCB1
bml0dGVzdAoraW1wb3J0IHN0cnVjdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBz
eXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorZnJvbSBz
aXggaW1wb3J0IFBZMworZnJvbSBzaXggaW1wb3J0IGludDJieXRlCisKK19URVNUX0RBVEFfRElS
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnKQor
CisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0
IGZvciB1dGlsIG1vZHVsZS4iIiIKKyAgICBkZWYgdGVzdF9wcmVwZW5kX21lc3NhZ2VfdG9fZXhj
ZXB0aW9uKHNlbGYpOgorICAgICAgICBleGMgPSBFeGNlcHRpb24oJ1dvcmxkJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBzdHIoZXhjKSkKKyAgICAgICAgdXRpbC5wcmVwZW5k
X21lc3NhZ2VfdG9fZXhjZXB0aW9uKCdIZWxsbyAnLCBleGMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvIFdvcmxkJywgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9nZXRfc2NyaXB0
X2ludGVycChzZWxmKToKKyAgICAgICAgY3lnd2luX3BhdGggPSAnYzpcXGN5Z3dpblxcYmluJwor
ICAgICAgICBjeWd3aW5fcGVybCA9IG9zLnBhdGguam9pbihjeWd3aW5fcGF0aCwgJ3BlcmwnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgTm9uZSwgdXRpbC5nZXRfc2Ny
aXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUkVBRE1FJykpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIHV0aWwu
Z2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnUkVBRE1FJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICcvdXNyL2Jpbi9wZXJsIC13VCcsCisg
ICAgICAgICAgICB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRB
X0RJUiwgJ2hlbGxvLnBsJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgY3lnd2luX3BlcmwgKyAnIC13VCcsCisgICAgICAgICAgICB1dGlsLmdldF9zY3JpcHRfaW50
ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoKSkKKworICAgIGRlZiB0ZXN0X2hl
eGlmeShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnNjEgN2EgNDEgNWEgMzAgMzkg
MjAgMDkgMGQgMGEgMDAgZmYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5
KGInYXpBWjA5IFx0XHJcblx4MDBceGZmJykpCisKKworY2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBSZXBlYXRlZFhv
ck1hc2tlciBjbGFzcy4iIiIKKyAgICBkZWYgdGVzdF9tYXNrKHNlbGYpOgorICAgICAgICAjIFNh
bXBsZSBpbnB1dCBlNiw5NyxhNSBpcyBVKzY1ZTUgaW4gVVRGLTgKKyAgICAgICAgbWFza2VyID0g
dXRpbC5SZXBlYXRlZFhvck1hc2tlcihiJ1x4ZmZceGZmXHhmZlx4ZmYnKQorICAgICAgICByZXN1
bHQgPSBtYXNrZXIubWFzayhiJ1x4ZTZceDk3XHhhNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidceDE5XHg2OFx4NWEnLCByZXN1bHQpCisKKyAgICAgICAgbWFza2VyID0gdXRpbC5SZXBl
YXRlZFhvck1hc2tlcihiJ1x4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhiJ1x4ZTZceDk3XHhhNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGU2
XHg5N1x4YTUnLCByZXN1bHQpCisKKyAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1h
c2tlcihiJ1x4ZTZceDk3XHhhNVx4MjAnKQorICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhi
J1x4ZTZceDk3XHhhNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDAwXHgwMFx4MDAn
LCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9tYXNrX3R3aWNlKHNlbGYpOgorICAgICAgICBtYXNr
ZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKGInXHgwMFx4N2ZceGZmXHgyMCcpCisgICAgICAg
ICMgbWFza1swXSwgbWFza1sxXSwgLi4uIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgcmVzdWx0ID0g
bWFza2VyLm1hc2soYidceDAwXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYidceDAwXHg3Zlx4ZmZceDIwXHgwMCcsIHJlc3VsdCkKKyAgICAgICAgIyBtYXNrWzJd
LCBtYXNrWzBdLCAuLi4gd2lsbCBiZSB1c2VkIGZvciB0aGUgbmV4dCBjYWxsLgorICAgICAgICBy
ZXN1bHQgPSBtYXNrZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ1x4N2ZceGZmXHgyMFx4MDBceDdmJywgcmVzdWx0KQorCisgICAgZGVm
IHRlc3RfbWFza19sYXJnZV9kYXRhKHNlbGYpOgorICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVh
dGVkWG9yTWFza2VyKGInbUFTaycpCisgICAgICAgIG9yaWdpbmFsID0gYicnLmpvaW4oW3V0aWwu
cGFja19ieXRlKGkgJSAyNTYpIGZvciBpIGluIHJhbmdlKDEwMDApXSkKKyAgICAgICAgcmVzdWx0
ID0gbWFza2VyLm1hc2sob3JpZ2luYWwpCisgICAgICAgIGV4cGVjdGVkID0gYicnLmpvaW4oWwor
ICAgICAgICAgICAgdXRpbC5wYWNrX2J5dGUoKGkgJSAyNTYpIF4gb3JkKCdtQVNrJ1tpICUgNF0p
KSBmb3IgaSBpbiByYW5nZSgxMDAwKQorICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCByZXN1bHQpCisKKyAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhv
ck1hc2tlcihiJ01hU2snKQorICAgICAgICBmaXJzdF9wYXJ0ID0gYidUaGUgV2ViU29ja2V0IFBy
b3RvY29sIGVuYWJsZXMgdHdvLXdheSBjb21tdW5pY2F0aW9uLicKKyAgICAgICAgcmVzdWx0ID0g
bWFza2VyLm1hc2soZmlyc3RfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGInXHgxOVx0NktceDFhXHgwNDE4Ilx4MDI4XHgwZTlBXHgwM1x4MTkiXHgxNTxceDA4
Ilxyc1x4MGUjJworICAgICAgICAgICAgYidceDAwMVx4MDcoXHgxMnNceDFmOlx4MGV+XHgxYyxc
eDE4c1x4MDgiXHgwYz5ceDFlI1x4MDgwXG45JworICAgICAgICAgICAgYidceDA4PFx4MDVjJywg
cmVzdWx0KQorICAgICAgICBzZWNvbmRfcGFydCA9IGInSXQgaGFzIHR3byBwYXJ0czogYSBoYW5k
c2hha2UgYW5kIHRoZSBkYXRhIHRyYW5zZmVyLicKKyAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1h
c2soc2Vjb25kX3BhcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBi
IignSyVceDAwIEs5XHgxNjxLPVx4MDAhXHgxZj5bc1xubVx0Mlx4MDUpXHgxMjtcbiZceDA0c1xu
IyIKKyAgICAgICAgICAgIGIiXHgwNXNceDFmJVx4MDRzXHgwZixceDE1Mks5XHgxMzJceDA1Plx4
MDc2XHgxOWMiLCByZXN1bHQpCisKKworZGVmIGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIG1p
bl9udW1fY2h1bmtzKToKKyAgICBjaHVua3MgPSBbXQorICAgIGJ5dGVzX2NodW5rZWQgPSAwCisK
KyAgICB3aGlsZSBieXRlc19jaHVua2VkIDwgbGVuKHNvdXJjZSk6CisgICAgICAgIGNodW5rX3Np
emUgPSByYW5kb20ucmFuZGludCgKKyAgICAgICAgICAgIDEsIG1pbihsZW4oc291cmNlKSAvIG1p
bl9udW1fY2h1bmtzLAorICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2UpIC0gYnl0ZXNfY2h1
bmtlZCkpCisgICAgICAgIGNodW5rID0gc291cmNlW2J5dGVzX2NodW5rZWQ6Ynl0ZXNfY2h1bmtl
ZCArIGNodW5rX3NpemVdCisgICAgICAgIGNodW5rcy5hcHBlbmQoY2h1bmspCisgICAgICAgIGJ5
dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6ZQorCisgICAgcmV0dXJuIGNodW5rcworCisKK2NsYXNz
IEluZmxhdGVyRGVmbGF0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0
ZXN0IGZvciBfSW5mbGF0ZXIgYW5kIF9EZWZsYXRlciBjbGFzcy4iIiIKKyAgICBkZWYgdGVzdF9p
bmZsYXRlX2RlZmxhdGVfZGVmYXVsdChzZWxmKToKKyAgICAgICAgaW5wdXQgPSBiJ2hlbGxvJyAr
IGInLScgKiAzMDAwMCArIGInaGVsbG8nCisgICAgICAgIGluZmxhdGVyMTUgPSB1dGlsLl9JbmZs
YXRlcigxNSkKKyAgICAgICAgZGVmbGF0ZXIxNSA9IHV0aWwuX0RlZmxhdGVyKDE1KQorICAgICAg
ICBpbmZsYXRlcjggPSB1dGlsLl9JbmZsYXRlcig4KQorICAgICAgICBkZWZsYXRlcjggPSB1dGls
Ll9EZWZsYXRlcig4KQorCisgICAgICAgIGNvbXByZXNzZWQxNSA9IGRlZmxhdGVyMTUuY29tcHJl
c3NfYW5kX2ZpbmlzaChpbnB1dCkKKyAgICAgICAgY29tcHJlc3NlZDggPSBkZWZsYXRlcjguY29t
cHJlc3NfYW5kX2ZpbmlzaChpbnB1dCkKKworICAgICAgICBpbmZsYXRlcjE1LmFwcGVuZChjb21w
cmVzc2VkMTUpCisgICAgICAgIGluZmxhdGVyOC5hcHBlbmQoY29tcHJlc3NlZDgpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb21wcmVzc2VkMTUsIGNvbXByZXNzZWQ4KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBpbmZsYXRlcjE1LmRlY29tcHJlc3MoLTEpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBpbmZsYXRlcjguZGVjb21wcmVzcygtMSkpCisK
KyAgICBkZWYgdGVzdF9yYW5kb21fc2VjdGlvbihzZWxmKToKKyAgICAgICAgcmFuZG9tLnNlZWQo
YT0wKQorICAgICAgICBzb3VyY2UgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtpbnQyYnl0ZShy
YW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAgKiAxMDI0KV0pCisKKyAg
ICAgICAgY2h1bmtlZF9pbnB1dCA9IGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIDEwKQorICAg
ICAgICBwcmludCgiSW5wdXQgY2h1bmsgc2l6ZXM6ICVyIiAlIFtsZW4oYykgZm9yIGMgaW4gY2h1
bmtlZF9pbnB1dF0pCisKKyAgICAgICAgZGVmbGF0ZXIgPSB1dGlsLl9EZWZsYXRlcigxNSkKKyAg
ICAgICAgY29tcHJlc3NlZCA9IFtdCisgICAgICAgIGZvciBjaHVuayBpbiBjaHVua2VkX2lucHV0
OgorICAgICAgICAgICAgY29tcHJlc3NlZC5hcHBlbmQoZGVmbGF0ZXIuY29tcHJlc3MoY2h1bmsp
KQorICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNo
KGInJykpCisKKyAgICAgICAgY2h1bmtlZF9leHBlY3RhdGlvbiA9IGdldF9yYW5kb21fc2VjdGlv
bihzb3VyY2UsIDEwKQorICAgICAgICBwcmludCgiRXhwZWN0YXRpb24gY2h1bmsgc2l6ZXM6ICVy
IiAlCisgICAgICAgICAgICAgIFtsZW4oYykgZm9yIGMgaW4gY2h1bmtlZF9leHBlY3RhdGlvbl0p
CisKKyAgICAgICAgaW5mbGF0ZXIgPSB1dGlsLl9JbmZsYXRlcigxNSkKKyAgICAgICAgaW5mbGF0
ZXIuYXBwZW5kKGInJy5qb2luKGNvbXByZXNzZWQpKQorICAgICAgICBmb3IgY2h1bmsgaW4gY2h1
bmtlZF9leHBlY3RhdGlvbjoKKyAgICAgICAgICAgIGRlY29tcHJlc3NlZCA9IGluZmxhdGVyLmRl
Y29tcHJlc3MobGVuKGNodW5rKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2h1bmss
IGRlY29tcHJlc3NlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgaW5mbGF0ZXIu
ZGVjb21wcmVzcygtMSkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0
dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL1JFQURNRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDFhYTU1OTVjZGQxMzQwN2Y1NzI4ZWNkNTMyYTVk
MTIyNjNlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rk
YXRhL1JFQURNRQpAQCAtMCwwICsxIEBACitUZXN0IGRhdGEgZGlyZWN0b3J5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9hYm9ydF9i
eV91c2VyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2NiNTQxYmI3ZWM0MDQ0NzQ1Nzk4YWI5N2FlN2Nj
YmE1N2UwNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQpAQCAtMCwwICsxLDQxIEBACisjIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisK
K2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBo
YW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKK2Rl
ZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcmFpc2UgaGFuZHNoYWtl
LkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oImFib3J0IGZvciB0ZXN0IikKKworCisjIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvYmxhbmtfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9ibGFua193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM5OGU5Njc3OGQ4Zjc1YzhkNzQyNGMyN2I0
MGMxZmFkOTkxOGVmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5CkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJp
Z2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIGludGVudGlvbmFsbHkgbGVmdCBibGFuawpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3No
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmNjQ0MmU2NWI5OWRkN2Q0NTVjYjA5YTBhZmM5ZDQ5NThkZjA0MWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL29yaWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIGlm
IHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20nOgorICAgICAgICByZXR1
cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3JpZ2luOiAlcicgJSByZXF1
ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgIG1lc3NhZ2UgPSAnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAl
cycgJSAoCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wp
CisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1lc3NhZ2UuZW5jb2RlKCdVVEYtOCcpKQor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90
cmFuc2Zlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQzOTA5OTRkNzEyZGZlOGYxZTRkZmRkOTRmZjU2
YWJlNjY3M2Q4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKQEAgLTAsMCAr
MSw0MiBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJFeGNlcHRpb24gaW4gd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKCkuCisiIiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnRlbnRpb25hbCBFeGNlcHRpb24gZm9yICVz
LCAlcycgJQorICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVz
dC53c19wcm90b2NvbCkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dz
aF9hdF90aGVfZW5kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZmRkYjc0NDk1ZWVmMWQxZjM1MWUzMzRhYzQ4
NTA0NzNlZDE2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQpAQCAtMCwwICsxLDQzIEBA
CisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIkNvcnJlY3Qgc2lnbmF0dXJlcywgd3JvbmcgZmlsZSBuYW1l
LgorIiIiCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgor
ICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAg
IG1lc3NhZ2UgPSAnc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVz
JyAlICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkK
KyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisK
KworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YWZjZmE5N2E5NTRhMmJlNjk2YzE0OGRkMWY1NTM2MjhmMTIxZWE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
bm9uX2NhbGxhYmxlX3dzaC5weQpAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
Ik5vbi1jYWxsYWJsZSBoYW5kbGVycy4KKyIiIgorCit3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZSA9IFRydWUKK3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSA9IDEKKworIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9wbGFpbl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE3ZGIxZTVhYzMyNmRmNTFjNjhl
M2VkMjY5MGJlMmEwM2M4NzNjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQpAQCAtMCwwICsxLDQxIEBA
CisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgbWVzc2FnZSA9ICdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMs
ICVzJyAlIChyZXF1ZXN0LndzX3Jlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNjVkYmUz
MmFhYzkxMjI5MWEzNjNhOGM4M2ViZThlMGZlZDYwZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwpA
QCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisK
K1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQ
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVf
d3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxh
aW5fd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
d3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hh
a2Vfc2lnX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYmIwZGExYWI2YjBi
ZGQwNzdiODMzMjgxMzc2YzFhODExNTUwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dz
aC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldyb25nIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlIHNpZ25hdHVyZS4KKyIiIgorCisKK2RlZiBub193ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1Yi93cm9uZ19o
YW5kc2hha2Vfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJSAoCisgICAgICAgIHJl
cXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKG1lc3NhZ2UuZW5jb2RlKCdVVEYtOCcpKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWQyN2Q2YmNmZWVhZjAyYTk0MmE4YjMwYjdkMzM0MGZiMjBkMjMzMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25n
X3RyYW5zZmVyX3NpZ193c2gucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAwOSwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisi
IiJXcm9uZyB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEoKSBzaWduYXR1cmUuCisiIiIKKworCitk
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisK
K2RlZiBub193ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVzc2FnZSA9
ICdzdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJSAo
CisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKG1lc3NhZ2UuZW5jb2RlKCdVVEYtOCcpKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA4YzBmNjU3MmIxMmZj
MWIxNDY2NjNmZmVhZDU4YzQ4MjVjMjM3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwx
OSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9h
Ym9ydF9ieV91c2VyX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvYmxhbmtfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90
ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjc2YjhlMTkyMGRjM2JlY2E2ZWU1MGRk
MzIyYmQ2MGE1OGNjNGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL1JFQURNRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdzNj
LWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmOWVlYTE5MTRiOTFkNmY1NWU1NDY3ZGI5MDgxNTFk
Njg3ZTk1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdzNjLWlt
cG9ydC5sb2cKQEAgLTAsMCArMSwzMiBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5n
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9ydW5fYWxsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZXh0ZW5zaW9ucy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9tb2NrLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X21zZ3V0aWwucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rfc3RyZWFtLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X3V0aWwucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJm
ZGJjMWY2MTg5OTQ2ZGFlYmM4ZWYwYzVkYzUyNzU4ZmNhOTQ0OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMjEgQEAKK1RoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVz
OgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORworL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJ
Q0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9NQU5JRkVTVC5pbgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L1JFQURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9DSEFOR0VTIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwppbmRleCBiMzk5ODgyNTYxZWMyOTVkOGRl
ZmNhZGJlMWI5Yjk5NWIxZWI5ZTExLi5mZmE3MDI2MDFiNjUwOWIyNWZiZDY3ODdkMWU3NjgyZTVh
YzM5MzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5H
RVMKQEAgLTMsNiArMywyOCBAQCBDaGFuZ2Vsb2cgZm9yIHNpeAogCiBUaGlzIGZpbGUgbGlzdHMg
dGhlIGNoYW5nZXMgaW4gZWFjaCBzaXggdmVyc2lvbi4KIAorMS4xMy4wCistLS0tLS0KKworLSBJ
c3N1ZSAjMjk4LCBwdWxsIHJlcXVlc3QgIzI5OTogQWRkIGBzaXgubW92ZXMuZGJtX25kYm1gLgor
CistIElzc3VlICMxNTU6IEFkZCBgc2l4Lm1vdmVzLmNvbGxlY3Rpb25zX2FiY2AsIHdoaWNoIGFs
aWFzZXMgdGhlIGBjb2xsZWN0aW9uc2AKKyAgbW9kdWxlIG9uIFB5dGhvbiAyLTMuMiBhbmQgdGhl
IGBjb2xsZWN0aW9ucy5hYmNgIG9uIFB5dGhvbiAzLjMgYW5kIGdyZWF0ZXIuCisKKy0gUHVsbCBy
ZXF1ZXN0ICMzMDQ6IFJlLWFkZCBkaXN0dXRpbHMgZmFsbGJhY2sgaW4gYHNldHVwLnB5YC4KKwor
LSBQdWxsIHJlcXVlc3QgIzMwNTogT24gUHl0aG9uIDMuNywgYHdpdGhfbWV0YWNsYXNzYCBzdXBw
b3J0cyBjbGFzc2VzIHVzaW5nIFBFUAorICA1NjAgZmVhdHVyZXMuCisKKzEuMTIuMAorLS0tLS0t
CisKKy0gSXNzdWUgIzI1OSwgcHVsbCByZXF1ZXN0ICMyNjA6IGBzaXguYWRkX21ldGFjbGFzc2Ag
bm93IHByZXNlcnZlcworICBgX19xdWFsbmFtZV9fYCBmcm9tIHRoZSBvcmlnaW5hbCBjbGFzcy4K
KworLSBQdWxsIHJlcXVlc3QgIzIwNDogQWRkIGBzaXguZW5zdXJlX2JpbmFyeWAsIGBzaXguZW5z
dXJlX3RleHRgLCBhbmQKKyAgYHNpeC5lbnN1cmVfc3RyYC4KKwogMS4xMS4wCiAtLS0tLS0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UKaW5kZXggZjMw
NjhiZmQ5ZTBjZDg2ZGU2YjJjZTVmNWZhN2ZhZjM4YzY4ZTVjZS4uNGIwNWE1NDUyNjFjMGY5YjMx
YWJlM2VkZWM3MTA1ODc1ODdhNjU5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9MSUNFTlNFCkBAIC0xLDQgKzEsNCBAQAotQ29weXJpZ2h0IChjKSAyMDEwLTIw
MTcgQmVuamFtaW4gUGV0ZXJzb24KK0NvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBl
dGVyc29uCiAKIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9QS0ctSU5GTyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDVmZjRiYjhlNGZhMGExY2FmNmQzZGY1MjhhYmMyMGIz
ZGY1YWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L1BLRy1JTkZPCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotTWV0YWRhdGEt
VmVyc2lvbjogMS4xCi1OYW1lOiBzaXgKLVZlcnNpb246IDEuMTEuMAotU3VtbWFyeTogUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKLUhvbWUtcGFnZTogaHR0cDovL3B5cGku
cHl0aG9uLm9yZy9weXBpL3NpeC8KLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24KLUF1dGhvci1l
bWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZwotTGljZW5zZTogTUlUCi1EZXNjcmlwdGlvbjogLi4g
aW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcKLSAgICAgICAgICAg
OnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgKLSAgICAgICAgCi0gICAg
ICAgIC4uIGltYWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXguc3ZnP2Jy
YW5jaD1tYXN0ZXIKLSAgICAgICAgICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9i
ZW5qYW1pbnAvc2l4Ci0gICAgICAgIAotICAgICAgICAuLiBpbWFnZTo6IGh0dHA6Ly9pbWcuc2hp
ZWxkcy5pby9iYWRnZS9saWNlbnNlLU1JVC1ncmVlbi5zdmcKLSAgICAgICAgICAgOnRhcmdldDog
aHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgvYmxvYi9tYXN0ZXIvTElDRU5TRQotICAg
ICAgICAKLSAgICAgICAgU2l4IGlzIGEgUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSBsaWJy
YXJ5LiAgSXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMKLSAgICAgICAgZm9yIHNtb290aGlu
ZyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBQeXRob24gdmVyc2lvbnMgd2l0aCB0
aGUgZ29hbCBvZgotICAgICAgICB3cml0aW5nIFB5dGhvbiBjb2RlIHRoYXQgaXMgY29tcGF0aWJs
ZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0aGUKLSAgICAgICAgZG9jdW1lbnRhdGlv
biBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGlzIHByb3ZpZGVkLgotICAgICAgICAKLSAg
ICAgICAgU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlz
IGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KLSAgICAgICAgZmlsZSwgc28gaXQgY2FuIGJl
IGVhc2lseSBjb3BpZWQgaW50byB5b3VyIHByb2plY3QuIChUaGUgY29weXJpZ2h0IGFuZCBsaWNl
bnNlCi0gICAgICAgIG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKLSAgICAgICAgCi0gICAgICAg
IE9ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHA6Ly9zaXgucnRmZC5vcmcuCi0gICAgICAg
IAotICAgICAgICBCdWdzIGNhbiBiZSByZXBvcnRlZCB0byBodHRwczovL2dpdGh1Yi5jb20vYmVu
amFtaW5wL3NpeC4gIFRoZSBjb2RlIGNhbiBhbHNvCi0gICAgICAgIGJlIGZvdW5kIHRoZXJlLgot
ICAgICAgICAKLSAgICAgICAgRm9yIHF1ZXN0aW9ucyBhYm91dCBzaXggb3IgcG9ydGluZyBpbiBn
ZW5lcmFsLCBlbWFpbCB0aGUgcHl0aG9uLXBvcnRpbmcgbWFpbGluZwotICAgICAgICBsaXN0OiBo
dHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCi0g
ICAgICAgIAotUGxhdGZvcm06IFVOS05PV04KLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1
YWdlIDo6IFB5dGhvbiA6OiAyCi1DbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQ
eXRob24gOjogMwotQ2xhc3NpZmllcjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycwot
Q2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UKLUNsYXNz
aWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcwotQ2xhc3Np
ZmllcjogVG9waWMgOjogVXRpbGl0aWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9SRUFETUUucnN0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdAppbmRleCBjMTdkOGQ3MzJhZjg1OWRlMmM0NmFiYWQwMDY0
NDM0YTg0ZGMxNjBhLi5hOTllNmY1NTg1YTkxOGI4YTY4Y2VhYmFjZTJmYjZlMzRlOTIxODNiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9SRUFETUUucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QK
QEAgLTEsMTEgKzEsMTggQEAKLS4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRzLmlvL3B5cGkv
di9zaXguc3ZnCi0gICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAor
Li4gaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkK
IAogLi4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJh
bmNoPW1hc3RlcgotICAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAv
c2l4CisgICA6dGFyZ2V0OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeAorICAg
OmFsdDogc2l4IG9uIFRyYXZpc0NJCiAKLS4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRzLmlv
L2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZworLi4gaW1hZ2U6OiBodHRwczovL3JlYWR0aGVk
b2NzLm9yZy9wcm9qZWN0cy9zaXgvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0CisgICA6dGFyZ2V0OiBo
dHRwczovL3NpeC5yZWFkdGhlZG9jcy5pby8KKyAgIDphbHQ6IHNpeCdzIGRvY3VtZW50YXRpb24g
b24gUmVhZCB0aGUgRG9jcworCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFk
Z2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCiAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20v
YmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCisgICA6YWx0OiBNSVQgTGljZW5zZSBi
YWRnZQogCiBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnkuICBJ
dCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwogZm9yIHNtb290aGluZyBvdmVyIHRoZSBkaWZm
ZXJlbmNlcyBiZXR3ZWVuIHRoZSBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZ29hbCBvZgpAQCAt
MTYsNyArMjMsNyBAQCBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42
LiAgSXQgaXMgY29udGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgogZmlsZSwgc28gaXQgY2FuIGJl
IGVhc2lseSBjb3BpZWQgaW50byB5b3VyIHByb2plY3QuIChUaGUgY29weXJpZ2h0IGFuZCBsaWNl
bnNlCiBub3RpY2UgbXVzdCBiZSByZXRhaW5lZC4pCiAKLU9ubGluZSBkb2N1bWVudGF0aW9uIGlz
IGF0IGh0dHA6Ly9zaXgucnRmZC5vcmcuCitPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
czovL3NpeC5yZWFkdGhlZG9jcy5pby8uCiAKIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KIGJlIGZvdW5k
IHRoZXJlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CmluZGV4IGFkOTI1YzFjMWQxZTgzNjE0OTM3MDcy
YmJlOTRlNmMzMDU2ZDE4OGQuLmIzZDEzMjhhZGMyYTQyYWZkZTcxOTE1MTkzMDYwNDMzNTA0Y2Uy
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vY29uZi5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkKQEAgLTMzLDcgKzMzLDcgQEAgbWFzdGVyX2RvYyA9
ICJpbmRleCIKIAogIyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgogcHJv
amVjdCA9IHUic2l4IgotY29weXJpZ2h0ID0gdSIyMDEwLTIwMTcsIEJlbmphbWluIFBldGVyc29u
IgorY29weXJpZ2h0ID0gdSIyMDEwLTIwMTksIEJlbmphbWluIFBldGVyc29uIgogCiBzeXMucGF0
aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbigiLiIsICIuLiIpKSkKIGZyb20g
c2l4IGltcG9ydCBfX3ZlcnNpb25fXyBhcyBzaXhfdmVyc2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2luZGV4
LnJzdAppbmRleCBkZDBkYzZlM2JkZThjNDU4ZGM0ZjExMzMxZWY3YmUxMmVkNjdhYmE4Li5iN2Vj
Mjc1NGVjZjgzZDVhMjkxYzEzOTg4NzM4ZmVmNjIwNDVjOTg2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2lu
ZGV4LnJzdApAQCAtMTMsNyArMTMsNyBAQCBQeXRob24gMy4gIEl0IGlzIGludGVuZGVkIHRvIHN1
cHBvcnQgY29kZWJhc2VzIHRoYXQgd29yayBvbiBib3RoIFB5dGhvbiAyIGFuZCAzCiB3aXRob3V0
IG1vZGlmaWNhdGlvbi4gIHNpeCBjb25zaXN0cyBvZiBvbmx5IG9uZSBQeXRob24gZmlsZSwgc28g
aXQgaXMgcGFpbmxlc3MKIHRvIGNvcHkgaW50byBhIHByb2plY3QuCiAKLVNpeCBjYW4gYmUgZG93
bmxvYWRlZCBvbiBgUHlQaSA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvPmBfLiAg
SXRzIGJ1ZworU2l4IGNhbiBiZSBkb3dubG9hZGVkIG9uIGBQeVBJIDxodHRwczovL3B5cGkub3Jn
L3Byb2plY3Qvc2l4Lz5gXy4gIEl0cyBidWcKIHRyYWNrZXIgYW5kIGNvZGUgaG9zdGluZyBpcyBv
biBgR2l0SHViIDxodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeD5gXy4KIAogVGhlIG5h
bWUsICJzaXgiLCBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgMiozIGVxdWFscyA2LiAgV2h5IG5v
dCBhZGRpdGlvbj8KQEAgLTUwLDggKzUwLDkgQEAgU2l4IHByb3ZpZGVzIGNvbnN0YW50cyB0aGF0
IG1heSBkaWZmZXIgYmV0d2VlbiBQeXRob24gdmVyc2lvbnMuICBPbmVzIGVuZGluZwogCiAuLiBk
YXRhOjogY2xhc3NfdHlwZXMKIAotICAgUG9zc2libGUgY2xhc3MgdHlwZXMuICBJbiBQeXRob24g
MiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZQotICAgY2xhc3Nlcy4g
IEluIFB5dGhvbiAzLCB0aGlzIGlzIGp1c3QgbmV3LXN0eWxlcy4KKyAgIFBvc3NpYmxlIGNsYXNz
IHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgZW5jb21wYXNzZXMgb2xkLXN0eWxlCisgICA6ZGF0
YTpgcHkyOnR5cGVzLkNsYXNzVHlwZWAgYW5kIG5ldy1zdHlsZSBgYHR5cGVgYCBjbGFzc2VzLiAg
SW4gUHl0aG9uIDMsCisgICB0aGlzIGlzIGp1c3QgYGB0eXBlYGAuCiAKIAogLi4gZGF0YTo6IGlu
dGVnZXJfdHlwZXMKQEAgLTc1LDcgKzc2LDkgQEAgU2l4IHByb3ZpZGVzIGNvbnN0YW50cyB0aGF0
IG1heSBkaWZmZXIgYmV0d2VlbiBQeXRob24gdmVyc2lvbnMuICBPbmVzIGVuZGluZwogLi4gZGF0
YTo6IGJpbmFyeV90eXBlCiAKICAgIFR5cGUgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0YS4g
IFRoaXMgaXMgOmZ1bmM6YHB5MjpzdHJgIGluIFB5dGhvbiAyIGFuZAotICAgOmZ1bmM6YHB5Mzpi
eXRlc2AgaW4gUHl0aG9uIDMuCisgICA6ZnVuYzpgcHkzOmJ5dGVzYCBpbiBQeXRob24gMy4gIFB5
dGhvbiAyLjYgYW5kIDIuNyBpbmNsdWRlIGBgYnl0ZXNgYCBhcyBhCisgICBidWlsdGluIGFsaWFz
IG9mIGBgc3RyYGAsIHNvIHNpeOKAmXMgdmVyc2lvbiBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgUHl0
aG9uIDIuNQorICAgY29tcGF0aWJpbGl0eS4KIAogCiAuLiBkYXRhOjogTUFYU0laRQpAQCAtMzcx
LDcgKzM3NCw3IEBAIHN0cmluZyBkYXRhIGluIGFsbCBQeXRob24gdmVyc2lvbnMuCiAuLiBmdW5j
dGlvbjo6IGIoZGF0YSkKIAogICAgQSAiZmFrZSIgYnl0ZXMgbGl0ZXJhbC4gICpkYXRhKiBzaG91
bGQgYWx3YXlzIGJlIGEgbm9ybWFsIHN0cmluZyBsaXRlcmFsLiAgSW4KLSAgIFB5dGhvbiAyLCA6
ZnVuYzpgYmAgcmV0dXJucyBhIDgtYml0IHN0cmluZy4gIEluIFB5dGhvbiAzLCAqZGF0YSogaXMg
ZW5jb2RlZAorICAgUHl0aG9uIDIsIDpmdW5jOmBiYCByZXR1cm5zIGFuIDgtYml0IHN0cmluZy4g
IEluIFB5dGhvbiAzLCAqZGF0YSogaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgbGF0aW4tMSBlbmNv
ZGluZyB0byBieXRlcy4KIAogCkBAIC00MzMsNiArNDM2LDI0IEBAIHN0cmluZyBkYXRhIGluIGFs
bCBQeXRob24gdmVyc2lvbnMuCiAgICBhIGJ5dGVzIG9iamVjdCBpdGVyYXRvciBpbiBQeXRob24g
My4KIAogCisuLiBmdW5jdGlvbjo6IGVuc3VyZV9iaW5hcnkocywgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorCisgICBDb2VyY2UgKnMqIHRvIDpkYXRhOmBiaW5hcnlfdHlwZWAu
ICplbmNvZGluZyosICplcnJvcnMqIGFyZSB0aGUgc2FtZSBhcworICAgOm1ldGg6YHB5MzpzdHIu
ZW5jb2RlYAorCisKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX3N0cihzLCBlbmNvZGluZz0ndXRmLTgn
LCBlcnJvcnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gYGBzdHJgYC4gKmVuY29kaW5n
KiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNvZGVgCisK
KworLi4gZnVuY3Rpb246OiBlbnN1cmVfdGV4dChzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9
J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YHRleHRfdHlwZWAuICplbmNvZGlu
ZyosICplcnJvcnMqIGFyZSB0aGUgc2FtZSBhcworICAgOm1ldGg6YHB5MzpzdHIuZW5jb2RlYAor
CisKIC4uIGRhdGE6OiBTdHJpbmdJTwogCiAgICBUaGlzIGlzIGEgZmFrZSBmaWxlIG9iamVjdCBm
b3IgdGV4dHVhbCBkYXRhLiAgSXQncyBhbiBhbGlhcyBmb3IKQEAgLTUwMyw3ICs1MjQsNyBAQCBQ
eXRob24gMiBvciAzLCB3cml0ZTo6CiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgaHRtbF9wYXJz
ZXIKIAogU2ltaWxhcmx5LCB0byBnZXQgdGhlIGZ1bmN0aW9uIHRvIHJlbG9hZCBtb2R1bGVzLCB3
aGljaCB3YXMgbW92ZWQgZnJvbSB0aGUKLWJ1aWx0aW4gbW9kdWxlIHRvIHRoZSBgYGltcGBgIG1v
ZHVsZSwgdXNlOjoKK2J1aWx0aW4gbW9kdWxlIHRvIHRoZSBgYGltcG9ydGxpYmBgIG1vZHVsZSwg
dXNlOjoKIAogICAgZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJlbG9hZF9tb2R1bGUKIApAQCAtNTYz
LDcgKzU4NCwxMSBAQCBTdXBwb3J0ZWQgcmVuYW1lczoKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgY1N0cmluZ0lPYGAgICAgICAgICAg
ICAgICAgfCA6ZnVuYzpgcHkyOmNTdHJpbmdJTy5TdHJpbmdJT2AgICAgICB8IDpjbGFzczpgcHkz
OmlvLlN0cmluZ0lPYCAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkYm1fZ251YGAgICAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6Z2RibWAgICAgICAgICAgICAgICAgICAgIHwgOmNsYXNzOmBweTM6ZGJt
LmdudWAgICAgICAgICAgICAgICAgICB8Cit8IGBgY29sbGVjdGlvbnNfYWJjYGAgICAgICAgICAg
fCA6bW9kOmBweTI6Y29sbGVjdGlvbnNgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzpjb2xsZWN0
aW9ucy5hYmNgICgzLjMrKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBkYm1fZ251YGAgICAgICAgICAgICAgICAgICB8IDpt
b2Q6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmRibS5nbnVgICAg
ICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9uZGJtYGAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmRibWAgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJtLm5kYm1gICAgICAg
ICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCiB8IGBgX2R1bW15X3RocmVhZGBgICAgICAgICAgICAgfCA6bW9kOmBweTI6
ZHVtbXlfdGhyZWFkYCAgICAgICAgICAgICB8IDptb2Q6YHB5MzpfZHVtbXlfdGhyZWFkYCAgICAg
ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LmNmZwppbmRleCBlMTIwNjhjNTczYzZmNmVmZDNhOTM3OTZlNmRjZWVhZTE4OGIzNWNkLi4zMTdl
MDE2YzhjYzA0ZDA5N2IzYjY5NjM5NzEwMzU3ZGViMWM5NzJiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zZXR1cC5jZmcKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnCkBAIC01LDE3ICs1LDE2IEBAIHVu
aXZlcnNhbCA9IDEKIG1heC1saW5lLWxlbmd0aCA9IDEwMAogaWdub3JlID0gRjgyMQogCi1bdG9v
bDpweXRlc3RdCi1taW52ZXJzaW9uID0gMi4yLjAKLXBlcDhpZ25vcmUgPSAKLQlkb2N1bWVudGF0
aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi1mbGFrZXMtaWdub3JlID0gCi0JZG9jdW1l
bnRhdGlvbi8qLnB5IEFMTAotCXRlc3Rfc2l4LnB5IEFMTAotCXNpeC5weSBVbmRlZmluZWROYW1l
CitbbWV0YWRhdGFdCitsaWNlbnNlX2ZpbGUgPSBMSUNFTlNFCiAKLVtlZ2dfaW5mb10KLXRhZ19i
dWlsZCA9IAotdGFnX2RhdGUgPSAwCitbdG9vbDpweXRlc3RdCittaW52ZXJzaW9uPTIuMi4wCitw
ZXA4aWdub3JlID0KKyAgICBkb2N1bWVudGF0aW9uLyoucHkgQUxMCisgICAgdGVzdF9zaXgucHkg
QUxMCiAKK2ZsYWtlcy1pZ25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0
ZXN0X3NpeC5weSBBTEwKKyAgICBzaXgucHkgVW5kZWZpbmVkTmFtZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5weQppbmRleCBjYTQ0ZTEwMGU0MjdlY2Y1
NDI0YmFjYjg0ZDVlYjZmNWM3MTJmMjMxLi45N2M2ODViNWE1MGJkOTc2OTgwNDg2MWY0YWQ3YTgz
OTYyMTVkMjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9z
ZXR1cC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTcgQmVuamFt
aW4gUGV0ZXJzb24KKyMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJzb24K
ICMKICMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbApAQCAtMzEs
NiArMzEsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiBpbXBvcnQgc2l4CiAKIHNpeF9jbGFzc2lm
aWVycyA9IFsKKyAgICAiRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZSIsCiAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyIiwKICAgICAiUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMiLAogICAgICJJbnRlbmRlZCBBdWRpZW5j
ZSA6OiBEZXZlbG9wZXJzIiwKQEAgLTQ2LDExICs0NywxMiBAQCBzZXR1cChuYW1lPSJzaXgiLAog
ICAgICAgdmVyc2lvbj1zaXguX192ZXJzaW9uX18sCiAgICAgICBhdXRob3I9IkJlbmphbWluIFBl
dGVyc29uIiwKICAgICAgIGF1dGhvcl9lbWFpbD0iYmVuamFtaW5AcHl0aG9uLm9yZyIsCi0gICAg
ICB1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIiwKKyAgICAgIHVybD0iaHR0
cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgiLAogICAgICAgdGVzdHNfcmVxdWlyZT1bInB5
dGVzdCJdLAogICAgICAgcHlfbW9kdWxlcz1bInNpeCJdLAogICAgICAgZGVzY3JpcHRpb249IlB5
dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgdXRpbGl0aWVzIiwKICAgICAgIGxvbmdfZGVzY3Jp
cHRpb249c2l4X2xvbmdfZGVzY3JpcHRpb24sCiAgICAgICBsaWNlbnNlPSJNSVQiLAotICAgICAg
Y2xhc3NpZmllcnM9c2l4X2NsYXNzaWZpZXJzCisgICAgICBjbGFzc2lmaWVycz1zaXhfY2xhc3Np
ZmllcnMsCisgICAgICBweXRob25fcmVxdWlyZXM9Ij49Mi42LCAhPTMuMC4qLCAhPTMuMS4qIiwK
ICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lOU1RB
TExFUiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lOU1RBTExFUgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMWI1ODllMzhhMzIwNDFlNDkzMzJlNWU4MWMyZDM2M2RjNDE4ZDY4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCkBAIC0wLDAgKzEg
QEAKK3BpcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5T
RSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIw
NWE1NDUyNjFjMGY5YjMxYWJlM2VkZWM3MTA1ODc1ODdhNjU5YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKQEAgLTAsMCArMSwxOCBAQAor
Q29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJzb24KKworUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weSBvZgordGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KK3RoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8KK3Vz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwgY29waWVzIG9mCit0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u
cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sCitzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCitjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MKK0ZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUgor
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIgTElBQklMSVRZLCBXSEVUSEVSCitJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgorQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFEQVRBIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBjOGY1MWUx
ZjM2NjEzOGQzODE2YWJlMGRkYjNlZmVlNDE3NWMzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL01FVEFEQVRBCkBAIC0wLDAgKzEsNTIgQEAKK01ldGFk
YXRhLVZlcnNpb246IDIuMQorTmFtZTogc2l4CitWZXJzaW9uOiAxLjEzLjAKK1N1bW1hcnk6IFB5
dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgdXRpbGl0aWVzCitIb21lLXBhZ2U6IGh0dHBzOi8v
Z2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4CitBdXRob3I6IEJlbmphbWluIFBldGVyc29uCitBdXRo
b3ItZW1haWw6IGJlbmphbWluQHB5dGhvbi5vcmcKK0xpY2Vuc2U6IE1JVAorUGxhdGZvcm06IFVO
S05PV04KK0NsYXNzaWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9T
dGFibGUKK0NsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyCitD
bGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMworQ2xhc3NpZmll
cjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycworQ2xhc3NpZmllcjogTGljZW5zZSA6
OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UKK0NsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3
YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcworQ2xhc3NpZmllcjogVG9waWMgOjogVXRpbGl0
aWVzCitSZXF1aXJlcy1QeXRob246ID49Mi42LCAhPTMuMC4qLCAhPTMuMS4qCisKKy4uIGltYWdl
OjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZworICAgOnRhcmdldDogaHR0
cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3NpeC8KKyAgIDphbHQ6IHNpeCBvbiBQeVBJCisKKy4uIGlt
YWdlOjogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXguc3ZnP2JyYW5jaD1tYXN0
ZXIKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4CisgICA6
YWx0OiBzaXggb24gVHJhdmlzQ0kKKworLi4gaW1hZ2U6OiBodHRwczovL3JlYWR0aGVkb2NzLm9y
Zy9wcm9qZWN0cy9zaXgvYmFkZ2UvP3ZlcnNpb249bGF0ZXN0CisgICA6dGFyZ2V0OiBodHRwczov
L3NpeC5yZWFkdGhlZG9jcy5pby8KKyAgIDphbHQ6IHNpeCdzIGRvY3VtZW50YXRpb24gb24gUmVh
ZCB0aGUgRG9jcworCisuLiBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvbGlj
ZW5zZS1NSVQtZ3JlZW4uc3ZnCisgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYmVuamFt
aW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCisgICA6YWx0OiBNSVQgTGljZW5zZSBiYWRnZQor
CitTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnkuICBJdCBwcm92
aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucworZm9yIHNtb290aGluZyBvdmVyIHRoZSBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZ29hbCBvZgord3JpdGluZyBQ
eXRob24gY29kZSB0aGF0IGlzIGNvbXBhdGlibGUgb24gYm90aCBQeXRob24gdmVyc2lvbnMuICBT
ZWUgdGhlCitkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJv
dmlkZWQuCisKK1NpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJ
dCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCitmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
K25vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKKworT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQg
aHR0cHM6Ly9zaXgucmVhZHRoZWRvY3MuaW8vLgorCitCdWdzIGNhbiBiZSByZXBvcnRlZCB0byBo
dHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC4gIFRoZSBjb2RlIGNhbiBhbHNvCitiZSBm
b3VuZCB0aGVyZS4KKworRm9yIHF1ZXN0aW9ucyBhYm91dCBzaXggb3IgcG9ydGluZyBpbiBnZW5l
cmFsLCBlbWFpbCB0aGUgcHl0aG9uLXBvcnRpbmcgbWFpbGluZworbGlzdDogaHR0cHM6Ly9tYWls
LnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tcG9ydGluZworCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1JFQ09SRCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0x
LjEzLjAuZGlzdC1pbmZvL1JFQ09SRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTc2NjVjOTk2NDI1NWQxNzAyZjAx
NmM4YmQxMWRhZWRlNTE2NmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vUkVDT1JECkBAIC0wLDAgKzEsOCBAQAorc2l4LTEuMTMuMC5kaXN0LWluZm8v
SU5TVEFMTEVSLHNoYTI1Nj16dXV1ZTRrbm95Si1Vd1BQWGc4ZmV6UzdWQ3JYSlFyQVA3emVOdXd2
RlFnLDQNCitzaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFLHNoYTI1Nj10MUtiakFjWEduaW93
Mnd5ZzVCVktPU0JLVVhaZDlFbDY1SnVqTXZ5UmJZLDEwNjYNCitzaXgtMS4xMy4wLmRpc3QtaW5m
by9NRVRBREFUQSxzaGEyNTY9aHhTNHJTUFJmTzhld2JjTFMzMGFub0ZpNkxGZ1VRM21rX3hrblo4
UlY0dywxOTQwDQorc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JELCwNCitzaXgtMS4xMy4wLmRp
c3QtaW5mby9XSEVFTCxzaGEyNTY9OFQ4ZnhlZnJfci1BNzlxYk9KOWRfQWFFZ2twQ0dtRVBIYy1n
cENxNUJSZywxMTANCitzaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0LHNoYTI1Nj1f
aVZIX2lZRXRFWG5EOG5ZR1FZcFlGVXZrVVc5c0VPMUdZYmtlS1NBYWlzLDQNCitzaXgucHksc2hh
MjU2PW85V0hPOHV0V0dheU5oTnFEbU5xUGRRc1FhaXI1UmFSV2pMXzhJWWYxcXcsMzMwNTENCitz
aXgucHljLCwNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9XSEVF
TCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMDEy
MzU1MzMzZTA2NjRmYWMzMTIzOGFhMDQyMTZmZjUzNjIyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9XSEVFTApAQCAtMCwwICsxLDYgQEAKK1doZWVs
LVZlcnNpb246IDEuMAorR2VuZXJhdG9yOiBiZGlzdF93aGVlbCAoMC4zMi4xKQorUm9vdC1Jcy1Q
dXJlbGliOiB0cnVlCitUYWc6IHB5Mi1ub25lLWFueQorVGFnOiBweTMtbm9uZS1hbnkKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZl
MmZjZTQ5ODk1NWI2MjgwMTQ2MThiMjhjNmJjZjE1MjQ2NmE0YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQKQEAgLTAsMCArMSBA
QAorc2l4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1ZTFkMjJjYjg2MzBjY2QyMGMyMDNkNjM4OWE1YWU2MjUwMGFmOWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5m
by9JTlNUQUxMRVIKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4w
LmRpc3QtaW5mby9SRUNPUkQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9XSEVFTAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L3NpeC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQppbmRleCA2YmY0ZmQzODEwNDYyMDdh
NDc5NGFlZTE3YmU2ZDIyZGIyMzdmMzBhLi5kMGFlY2U4OWZhNGFhZTk0OGQ3NWU4ZWYyMjc3Y2Uy
NDk1MWViYjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQ
ZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwog
IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0yOSw3ICsy
OSw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogCiBfX2F1dGhvcl9fID0gIkJlbmphbWlu
IFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPiIKLV9fdmVyc2lvbl9fID0gIjEuMTEuMCIK
K19fdmVyc2lvbl9fID0gIjEuMTMuMCIKIAogCiAjIFVzZWZ1bCBmb3IgdmVyeSBjb2Fyc2UgdmVy
c2lvbiBkaWZmZXJlbnRpYXRpb24uCkBAIC0yNTUsOCArMjU1LDEwIEBAIF9tb3ZlZF9hdHRyaWJ1
dGVzID0gWwogICAgIE1vdmVkQXR0cmlidXRlKCJ6aXBfbG9uZ2VzdCIsICJpdGVydG9vbHMiLCAi
aXRlcnRvb2xzIiwgIml6aXBfbG9uZ2VzdCIsICJ6aXBfbG9uZ2VzdCIpLAogICAgIE1vdmVkTW9k
dWxlKCJidWlsdGlucyIsICJfX2J1aWx0aW5fXyIpLAogICAgIE1vdmVkTW9kdWxlKCJjb25maWdw
YXJzZXIiLCAiQ29uZmlnUGFyc2VyIiksCisgICAgTW92ZWRNb2R1bGUoImNvbGxlY3Rpb25zX2Fi
YyIsICJjb2xsZWN0aW9ucyIsICJjb2xsZWN0aW9ucy5hYmMiIGlmIHN5cy52ZXJzaW9uX2luZm8g
Pj0gKDMsIDMpIGVsc2UgImNvbGxlY3Rpb25zIiksCiAgICAgTW92ZWRNb2R1bGUoImNvcHlyZWci
LCAiY29weV9yZWciKSwKICAgICBNb3ZlZE1vZHVsZSgiZGJtX2dudSIsICJnZGJtIiwgImRibS5n
bnUiKSwKKyAgICBNb3ZlZE1vZHVsZSgiZGJtX25kYm0iLCAiZGJtIiwgImRibS5uZGJtIiksCiAg
ICAgTW92ZWRNb2R1bGUoIl9kdW1teV90aHJlYWQiLCAiZHVtbXlfdGhyZWFkIiwgIl9kdW1teV90
aHJlYWQiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVqYXIiLCAiY29va2llbGliIiwg
Imh0dHAuY29va2llamFyIiksCiAgICAgTW92ZWRNb2R1bGUoImh0dHBfY29va2llcyIsICJDb29r
aWUiLCAiaHR0cC5jb29raWVzIiksCkBAIC02MzcsNiArNjM5LDcgQEAgaWYgUFkzOgogICAgIGlt
cG9ydCBpbwogICAgIFN0cmluZ0lPID0gaW8uU3RyaW5nSU8KICAgICBCeXRlc0lPID0gaW8uQnl0
ZXNJTworICAgIGRlbCBpbwogICAgIF9hc3NlcnRDb3VudEVxdWFsID0gImFzc2VydENvdW50RXF1
YWwiCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1sxXSA8PSAxOgogICAgICAgICBfYXNzZXJ0UmFp
c2VzUmVnZXggPSAiYXNzZXJ0UmFpc2VzUmVnZXhwIgpAQCAtODI0LDcgKzgyNywxNSBAQCBkZWYg
d2l0aF9tZXRhY2xhc3MobWV0YSwgKmJhc2VzKToKICAgICBjbGFzcyBtZXRhY2xhc3ModHlwZSk6
CiAKICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCB0aGlzX2Jhc2VzLCBkKToKLSAgICAg
ICAgICAgIHJldHVybiBtZXRhKG5hbWUsIGJhc2VzLCBkKQorICAgICAgICAgICAgaWYgc3lzLnZl
cnNpb25faW5mb1s6Ml0gPj0gKDMsIDcpOgorICAgICAgICAgICAgICAgICMgVGhpcyB2ZXJzaW9u
IGludHJvZHVjZWQgUEVQIDU2MCB0aGF0IHJlcXVpcmVzIGEgYml0CisgICAgICAgICAgICAgICAg
IyBvZiBleHRyYSBjYXJlICh3ZSBtaW1pYyB3aGF0IGlzIGRvbmUgYnkgX19idWlsZF9jbGFzc19f
KS4KKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IHR5cGVzLnJlc29sdmVfYmFzZXMo
YmFzZXMpCisgICAgICAgICAgICAgICAgaWYgcmVzb2x2ZWRfYmFzZXMgaXMgbm90IGJhc2VzOgor
ICAgICAgICAgICAgICAgICAgICBkWydfX29yaWdfYmFzZXNfXyddID0gYmFzZXMKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRfYmFzZXMgPSBiYXNlcworICAgICAg
ICAgICAgcmV0dXJuIG1ldGEobmFtZSwgcmVzb2x2ZWRfYmFzZXMsIGQpCiAKICAgICAgICAgQGNs
YXNzbWV0aG9kCiAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMp
OgpAQCAtODQ0LDEzICs4NTUsNzQgQEAgZGVmIGFkZF9tZXRhY2xhc3MobWV0YWNsYXNzKToKICAg
ICAgICAgICAgICAgICBvcmlnX3ZhcnMucG9wKHNsb3RzX3ZhcikKICAgICAgICAgb3JpZ192YXJz
LnBvcCgnX19kaWN0X18nLCBOb25lKQogICAgICAgICBvcmlnX3ZhcnMucG9wKCdfX3dlYWtyZWZf
XycsIE5vbmUpCisgICAgICAgIGlmIGhhc2F0dHIoY2xzLCAnX19xdWFsbmFtZV9fJyk6CisgICAg
ICAgICAgICBvcmlnX3ZhcnNbJ19fcXVhbG5hbWVfXyddID0gY2xzLl9fcXVhbG5hbWVfXwogICAg
ICAgICByZXR1cm4gbWV0YWNsYXNzKGNscy5fX25hbWVfXywgY2xzLl9fYmFzZXNfXywgb3JpZ192
YXJzKQogICAgIHJldHVybiB3cmFwcGVyCiAKIAorZGVmIGVuc3VyZV9iaW5hcnkocywgZW5jb2Rp
bmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKToKKyAgICAiIiJDb2VyY2UgKipzKiogdG8gc2l4
LmJpbmFyeV90eXBlLgorCisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBgdW5pY29kZWAgLT4g
ZW5jb2RlZCB0byBgc3RyYAorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorCisgICAgRm9yIFB5dGhv
biAzOgorICAgICAgLSBgc3RyYCAtPiBlbmNvZGVkIHRvIGBieXRlc2AKKyAgICAgIC0gYGJ5dGVz
YCAtPiBgYnl0ZXNgCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgor
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKKyAgICBlbGlmIGlzaW5z
dGFuY2UocywgYmluYXJ5X3R5cGUpOgorICAgICAgICByZXR1cm4gcworICAgIGVsc2U6CisgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGV4cGVjdGluZyB0eXBlICclcyciICUgdHlwZShzKSkK
KworCitkZWYgZW5zdXJlX3N0cihzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcp
OgorICAgICIiIkNvZXJjZSAqcyogdG8gYHN0cmAuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAg
ICAtIGB1bmljb2RlYCAtPiBlbmNvZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJg
CisKKyAgICBGb3IgUHl0aG9uIDM6CisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisgICAgICAtIGBi
eXRlc2AgLT4gZGVjb2RlZCB0byBgc3RyYAorICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNl
KHMsICh0ZXh0X3R5cGUsIGJpbmFyeV90eXBlKSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigi
bm90IGV4cGVjdGluZyB0eXBlICclcyciICUgdHlwZShzKSkKKyAgICBpZiBQWTIgYW5kIGlzaW5z
dGFuY2UocywgdGV4dF90eXBlKToKKyAgICAgICAgcyA9IHMuZW5jb2RlKGVuY29kaW5nLCBlcnJv
cnMpCisgICAgZWxpZiBQWTMgYW5kIGlzaW5zdGFuY2UocywgYmluYXJ5X3R5cGUpOgorICAgICAg
ICBzID0gcy5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKKyAgICByZXR1cm4gcworCisKK2RlZiBl
bnN1cmVfdGV4dChzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIi
IkNvZXJjZSAqcyogdG8gc2l4LnRleHRfdHlwZS4KKworICAgIEZvciBQeXRob24gMjoKKyAgICAg
IC0gYHVuaWNvZGVgIC0+IGB1bmljb2RlYAorICAgICAgLSBgc3RyYCAtPiBgdW5pY29kZWAKKwor
ICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAgICAgIC0gYGJ5dGVz
YCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShzLCBiaW5h
cnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAg
IGVsaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICByZXR1cm4gcworICAgIGVs
c2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGV4cGVjdGluZyB0eXBlICclcyciICUg
dHlwZShzKSkKKworCisKIGRlZiBweXRob25fMl91bmljb2RlX2NvbXBhdGlibGUoa2xhc3MpOgog
ICAgICIiIgotICAgIEEgZGVjb3JhdG9yIHRoYXQgZGVmaW5lcyBfX3VuaWNvZGVfXyBhbmQgX19z
dHJfXyBtZXRob2RzIHVuZGVyIFB5dGhvbiAyLgorICAgIEEgY2xhc3MgZGVjb3JhdG9yIHRoYXQg
ZGVmaW5lcyBfX3VuaWNvZGVfXyBhbmQgX19zdHJfXyBtZXRob2RzIHVuZGVyIFB5dGhvbiAyLgog
ICAgIFVuZGVyIFB5dGhvbiAzIGl0IGRvZXMgbm90aGluZy4KIAogICAgIFRvIHN1cHBvcnQgUHl0
aG9uIDIgYW5kIDMgd2l0aCBhIHNpbmdsZSBjb2RlIGJhc2UsIGRlZmluZSBhIF9fc3RyX18gbWV0
aG9kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC90ZXN0X3NpeC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4
LnB5CmluZGV4IDQzZTc0MjZkZWExMjQxYmJkMzcxZDJmMjRmNjNmNTEwNDI3YTUxOWYuLjNlZWZj
ZTM3YzMyOGQ3YjE1YjIzZWU4M2RkODk4YzRiM2U1NzYzM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L3Rlc3Rfc2l4LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5CkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQZXRlcnNvbgorIyBDb3B5cmlnaHQg
KGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwogIyBQZXJtaXNzaW9uIGlzIGhlcmVi
eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5
CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0yMiw4ICsyMiw5IEBAIGltcG9ydCBvcGVyYXRv
cgogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBhYmMK
IAotaW1wb3J0IHB5CitpbXBvcnQgcHl0ZXN0CiAKIGltcG9ydCBzaXgKIApAQCAtODAsNyArODEs
NyBAQCBkZWYgdGVzdF9NQVhTSVpFKCk6CiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAg
ICAgICAjIEJlZm9yZSBQeXRob24gMi42LgogICAgICAgICBwYXNzCi0gICAgcHkudGVzdC5yYWlz
ZXMoCisgICAgcHl0ZXN0LnJhaXNlcygKICAgICAgICAgKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJy
b3IpLAogICAgICAgICBvcGVyYXRvci5tdWwsIFtOb25lXSwgc2l4Lk1BWFNJWkUgKyAxKQogCkBA
IC0xMTIsNyArMTEzLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKICAgICAgICAgaGF2ZV9nZGJtID0gRmFsc2UKIAotQHB5LnRlc3QubWFyay5wYXJhbWV0
cml6ZSgiaXRlbV9uYW1lIiwKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0ubmFtZSBmb3IgaXRlbSBpbiBzaXguX21v
dmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtcyhpdGVtX25hbWUpOgogICAgICIi
IkVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMTIyLDM2ICsx
MjMsMzYgQEAgZGVmIHRlc3RfbW92ZV9pdGVtcyhpdGVtX25hbWUpOgogICAgICAgICAgICAgX19p
bXBvcnRfXygic2l4Lm1vdmVzLiIgKyBpdGVtX25hbWUpCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVy
cm9yOgogICAgICAgICBpZiBpdGVtX25hbWUgPT0gInppcF9sb25nZXN0IiBhbmQgc3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiemlwX2xvbmdlc3Qg
b25seSBhdmFpbGFibGUgb24gMi42KyIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiemlwX2xv
bmdlc3Qgb25seSBhdmFpbGFibGUgb24gMi42KyIpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgog
ICAgICAgICBpZiBpdGVtX25hbWUgPT0gIndpbnJlZyIgYW5kIG5vdCBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgid2luIik6Ci0gICAgICAgICAgICBweS50ZXN0LnNraXAoIldpbmRvd3Mgb25seSBt
b2R1bGUiKQorICAgICAgICAgICAgcHl0ZXN0LnNraXAoIldpbmRvd3Mgb25seSBtb2R1bGUiKQog
ICAgICAgICBpZiBpdGVtX25hbWUuc3RhcnRzd2l0aCgidGtpbnRlciIpOgogICAgICAgICAgICAg
aWYgbm90IGhhdmVfdGtpbnRlcjoKLSAgICAgICAgICAgICAgICBweS50ZXN0LnNraXAoInJlcXVp
cmVzIHRraW50ZXIiKQorICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyB0a2lu
dGVyIikKICAgICAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAidGtpbnRlcl90dGsiIGFuZCBzeXMu
dmVyc2lvbl9pbmZvWzoyXSA8PSAoMiwgNik6Ci0gICAgICAgICAgICAgICAgcHkudGVzdC5za2lw
KCJ0dGsgb25seSBhdmFpbGFibGUgb24gMi43KyIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNr
aXAoInR0ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKICAgICAgICAgaWYgaXRlbV9uYW1lLnN0
YXJ0c3dpdGgoImRibV9nbnUiKSBhbmQgbm90IGhhdmVfZ2RibToKLSAgICAgICAgICAgIHB5LnRl
c3Quc2tpcCgicmVxdWlyZXMgZ2RibSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgicmVxdWly
ZXMgZ2RibSIpCiAgICAgICAgIHJhaXNlCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0g
KDIsIDYpOgogICAgICAgICBhc3NlcnQgaXRlbV9uYW1lIGluIGRpcihzaXgubW92ZXMpCiAKIAot
QHB5LnRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwKK0BweXRlc3QubWFyay5wYXJh
bWV0cml6ZSgiaXRlbV9uYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0ubmFt
ZSBmb3IgaXRlbSBpbiBzaXguX3VybGxpYl9wYXJzZV9tb3ZlZF9hdHRyaWJ1dGVzXSkKIGRlZiB0
ZXN0X21vdmVfaXRlbXNfdXJsbGliX3BhcnNlKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5zdXJlIHRo
YXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCiAgICAgaWYgaXRlbV9uYW1lID09ICJQ
YXJzZVJlc3VsdCIgYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMiwgNSk6Ci0gICAgICAgIHB5LnRl
c3Quc2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKKyAgICAgICAgcHl0
ZXN0LnNraXAoIlBhcnNlUmVzdWx0IGlzIG9ubHkgZm91bmQgb24gMi41KyIpCiAgICAgaWYgaXRl
bV9uYW1lIGluICgicGFyc2VfcXMiLCAicGFyc2VfcXNsIikgYW5kIHN5cy52ZXJzaW9uX2luZm8g
PCAoMiwgNik6Ci0gICAgICAgIHB5LnRlc3Quc2tpcCgicGFyc2VfcXNbbF0gaXMgbmV3IGluIDIu
NiIpCisgICAgICAgIHB5dGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBuZXcgaW4gMi42IikKICAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwgNik6CiAgICAgICAgIGFzc2VydCBpdGVt
X25hbWUgaW4gZGlyKHNpeC5tb3Zlcy51cmxsaWIucGFyc2UpCiAgICAgZ2V0YXR0cihzaXgubW92
ZXMudXJsbGliLnBhcnNlLCBpdGVtX25hbWUpCiAKIAotQHB5LnRlc3QubWFyay5wYXJhbWV0cml6
ZSgiaXRlbV9uYW1lIiwKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0ubmFtZSBmb3IgaXRlbSBpbiBzaXguX3VybGxp
Yl9lcnJvcl9tb3ZlZF9hdHRyaWJ1dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX2Vy
cm9yKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5zdXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3Jy
ZWN0bHkuIiIiCkBAIC0xNjAsNyArMTYxLDcgQEAgZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJf
ZXJyb3IoaXRlbV9uYW1lKToKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51cmxsaWIuZXJyb3IsIGl0
ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3JlcXVlc3RfbW92ZWRfYXR0
cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0KGl0ZW1fbmFtZSk6
CiAgICAgIiIiRW5zdXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0x
NjksNyArMTcwLDcgQEAgZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVxdWVzdChpdGVtX25h
bWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXF1ZXN0LCBpdGVtX25hbWUpCiAK
IAotQHB5LnRlc3QubWFyay5wYXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwKK0BweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgiaXRlbV9uYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0u
bmFtZSBmb3IgaXRlbSBpbiBzaXguX3VybGxpYl9yZXNwb25zZV9tb3ZlZF9hdHRyaWJ1dGVzXSkK
IGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3Jlc3BvbnNlKGl0ZW1fbmFtZSk6CiAgICAgIiIi
RW5zdXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0xNzgsNyArMTc5
LDcgQEAgZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToKICAg
ICBnZXRhdHRyKHNpeC5tb3Zlcy51cmxsaWIucmVzcG9uc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHku
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZv
ciBpdGVtIGluIHNpeC5fdXJsbGliX3JvYm90cGFyc2VyX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVm
IHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcm9ib3RwYXJzZXIoaXRlbV9uYW1lKToKICAgICAiIiJF
bnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTI0Myw3ICsyNDQs
NyBAQCBkZWYgdGVzdF96aXAoKToKICAgICBhc3NlcnQgc2l4LmFkdmFuY2VfaXRlcmF0b3Ioemlw
KHJhbmdlKDIpLCByYW5nZSgyKSkpID09ICgwLCAwKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlm
KCJzeXMudmVyc2lvbl9pbmZvIDwgKDIsIDYpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52
ZXJzaW9uX2luZm8gPCAoMiwgNikiKQogZGVmIHRlc3RfemlwX2xvbmdlc3QoKToKICAgICBmcm9t
IHNpeC5tb3ZlcyBpbXBvcnQgemlwX2xvbmdlc3QKICAgICBpdCA9IHppcF9sb25nZXN0KHJhbmdl
KDIpLCByYW5nZSgxKSkKQEAgLTMyMSw3ICszMjIsNyBAQCBjbGFzcyBUZXN0Q3VzdG9taXplZE1v
dmVzOgogCiAKICAgICBkZWYgdGVzdF9lbXB0eV9yZW1vdmUoc2VsZik6Ci0gICAgICAgIHB5LnRl
c3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUsICJlZ2dzIikKKyAgICAg
ICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LnJlbW92ZV9tb3ZlLCAiZWdncyIp
CiAKIAogZGVmIHRlc3RfZ2V0X3VuYm91bmRfZnVuY3Rpb24oKToKQEAgLTMzNyw3ICszMzgsNyBA
QCBkZWYgdGVzdF9nZXRfbWV0aG9kX3NlbGYoKToKICAgICAgICAgICAgIHBhc3MKICAgICB4ID0g
WCgpCiAgICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX3NlbGYoeC5tKSBpcyB4Ci0gICAgcHkudGVz
dC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX3NlbGYsIDQyKQorICAgIHB5
dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX3NlbGYsIDQyKQogCiAK
IGRlZiB0ZXN0X2dldF9tZXRob2RfZnVuY3Rpb24oKToKQEAgLTM0Niw3ICszNDcsNyBAQCBkZWYg
dGVzdF9nZXRfbWV0aG9kX2Z1bmN0aW9uKCk6CiAgICAgICAgICAgICBwYXNzCiAgICAgeCA9IFgo
KQogICAgIGFzc2VydCBzaXguZ2V0X21ldGhvZF9mdW5jdGlvbih4Lm0pIGlzIFguX19kaWN0X19b
Im0iXQotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXguZ2V0X21ldGhvZF9m
dW5jdGlvbiwgaGFzYXR0cikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgu
Z2V0X21ldGhvZF9mdW5jdGlvbiwgaGFzYXR0cikKIAogCiBkZWYgdGVzdF9nZXRfZnVuY3Rpb25f
Y2xvc3VyZSgpOgpAQCAtMzY0LDcgKzM2NSw3IEBAIGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9jb2Rl
KCk6CiAgICAgICAgIHBhc3MKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaXguZ2V0X2Z1bmN0aW9u
X2NvZGUoZiksIHR5cGVzLkNvZGVUeXBlKQogICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgInB5cHlf
dmVyc2lvbl9pbmZvIik6Ci0gICAgICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBz
aXguZ2V0X2Z1bmN0aW9uX2NvZGUsIGhhc2F0dHIpCisgICAgICAgIHB5dGVzdC5yYWlzZXMoQXR0
cmlidXRlRXJyb3IsIHNpeC5nZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKIAogCiBkZWYgdGVz
dF9nZXRfZnVuY3Rpb25fZGVmYXVsdHMoKToKQEAgLTQwNCw3ICs0MDUsNyBAQCBkZWYgdGVzdF9k
aWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIGl0ID0gbWV0aChkKQog
ICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoaXQsIGxpc3QpCiAgICAgICAgIGFzc2VydCBs
aXN0KGl0KSA9PSBsaXN0KGdldGF0dHIoZCwgbmFtZSkoKSkKLSAgICAgICAgcHkudGVzdC5yYWlz
ZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0KQorICAgICAgICBweXRl
c3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5hZHZhbmNlX2l0ZXJhdG9yLCBpdCkKICAgICAg
ICAgcmVjb3JkID0gW10KICAgICAgICAgZGVmIHdpdGhfa3coKmFyZ3MsICoqa3cpOgogICAgICAg
ICAgICAgcmVjb3JkLmFwcGVuZChrd1sia3ciXSkKQEAgLTQxNiwxNyArNDE3LDkgQEAgZGVmIHRl
c3RfZGljdGlvbmFyeV9pdGVyYXRvcnMobW9ua2V5cGF0Y2gpOgogICAgICAgICBtb25rZXlwYXRj
aC51bmRvKCkKIAogCi1AcHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0g
PCAoMiwgNykiLAorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAo
MiwgNykiLAogICAgICAgICAgICAgICAgIHJlYXNvbj0idmlldyBtZXRob2RzIG9uIGRpY3Rpb25h
cmllcyBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKIGRlZiB0ZXN0X2RpY3Rpb25hcnlfdmlld3Mo
KToKLSAgICBkZWYgc3RvY2tfbWV0aG9kX25hbWUodmlld3doYXQpOgotICAgICAgICAiIiJHaXZl
biBhIG1ldGhvZCBzdWZmaXggbGlrZSAia2V5cyIgb3IgInZhbHVlcyIsIHJldHVybiB0aGUgbmFt
ZQotICAgICAgICBvZiB0aGUgZGljdCBtZXRob2QgdGhhdCBkZWxpdmVycyB0aG9zZSBvbiB0aGUg
dmVyc2lvbiBvZiBQeXRob24KLSAgICAgICAgd2UncmUgcnVubmluZyBpbi4iIiIKLSAgICAgICAg
aWYgc2l4LlBZMzoKLSAgICAgICAgICAgIHJldHVybiB2aWV3d2hhdAotICAgICAgICByZXR1cm4g
J3ZpZXcnICsgdmlld3doYXQKLQogICAgIGQgPSBkaWN0KHppcChyYW5nZSgxMCksIChyYW5nZSgx
MSwgMjApKSkpCiAgICAgZm9yIG5hbWUgaW4gImtleXMiLCAidmFsdWVzIiwgIml0ZW1zIjoKICAg
ICAgICAgbWV0aCA9IGdldGF0dHIoc2l4LCAidmlldyIgKyBuYW1lKQpAQCAtNDQwLDggKzQzMyw4
IEBAIGRlZiB0ZXN0X2FkdmFuY2VfaXRlcmF0b3IoKToKICAgICBpdCA9IGl0ZXIobCkKICAgICBh
c3NlcnQgc2l4Lm5leHQoaXQpID09IDEKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IDIKLSAg
ICBweS50ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCi0gICAgcHkudGVz
dC5yYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4Lm5leHQsIGl0KQorICAgIHB5dGVzdC5yYWlzZXMo
U3RvcEl0ZXJhdGlvbiwgc2l4Lm5leHQsIGl0KQorICAgIHB5dGVzdC5yYWlzZXMoU3RvcEl0ZXJh
dGlvbiwgc2l4Lm5leHQsIGl0KQogCiAKIGRlZiB0ZXN0X2l0ZXJhdG9yKCk6CkBAIC00ODksNyAr
NDgyLDcgQEAgZGVmIHRlc3RfY3JlYXRlX3VuYm91bmRfbWV0aG9kKCk6CiAgICAgZGVmIGYoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmCiAgICAgdSA9IHNpeC5jcmVhdGVfdW5ib3VuZF9tZXRo
b2QoZiwgWCkKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHUpCisgICAgcHl0ZXN0LnJh
aXNlcyhUeXBlRXJyb3IsIHUpCiAgICAgaWYgc2l4LlBZMjoKICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UodSwgdHlwZXMuTWV0aG9kVHlwZSkKICAgICB4ID0gWCgpCkBAIC01MzcsMTMgKzUzMCwx
MyBAQCBkZWYgdGVzdF91bmljaHIoKToKIAogZGVmIHRlc3RfaW50MmJ5dGUoKToKICAgICBhc3Nl
cnQgc2l4LmludDJieXRlKDMpID09IHNpeC5iKCJceDAzIikKLSAgICBweS50ZXN0LnJhaXNlcyhF
eGNlcHRpb24sIHNpeC5pbnQyYnl0ZSwgMjU2KQorICAgIHB5dGVzdC5yYWlzZXMoRXhjZXB0aW9u
LCBzaXguaW50MmJ5dGUsIDI1NikKIAogCiBkZWYgdGVzdF9ieXRlMmludCgpOgogICAgIGFzc2Vy
dCBzaXguYnl0ZTJpbnQoc2l4LmIoIlx4MDMiKSkgPT0gMwogICAgIGFzc2VydCBzaXguYnl0ZTJp
bnQoc2l4LmIoIlx4MDNceDA0IikpID09IDMKLSAgICBweS50ZXN0LnJhaXNlcyhJbmRleEVycm9y
LCBzaXguYnl0ZTJpbnQsIHNpeC5iKCIiKSkKKyAgICBweXRlc3QucmFpc2VzKEluZGV4RXJyb3Is
IHNpeC5ieXRlMmludCwgc2l4LmIoIiIpKQogCiAKIGRlZiB0ZXN0X2J5dGVzaW5kZXgoKToKQEAg
LTU1NCw3ICs1NDcsNyBAQCBkZWYgdGVzdF9ieXRlc2l0ZXIoKToKICAgICBpdCA9IHNpeC5pdGVy
Ynl0ZXMoc2l4LmIoImhpIikpCiAgICAgYXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImgiKQog
ICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gb3JkKCJpIikKLSAgICBweS50ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0
aW9uLCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfU3RyaW5nSU8oKToKQEAgLTY4OSw3ICs2
ODIsNyBAQCBkZWYgdGVzdF9wcmludF8oKToKICAgICBhc3NlcnQgb3V0LmZsdXNoZWQKIAogCi1A
cHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYpIikKK0Bw
eXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KSIpCiBkZWYg
dGVzdF9wcmludF9lbmNvZGluZyhtb25rZXlwYXRjaCk6CiAgICAgIyBGb29sIHRoZSB0eXBlIGNo
ZWNraW5nIGluIHByaW50Xy4KICAgICBtb25rZXlwYXRjaC5zZXRhdHRyKHNpeCwgImZpbGUiLCBz
aXguQnl0ZXNJTywgcmFpc2luZz1GYWxzZSkKQEAgLTcwMSwxNiArNjk0LDE2IEBAIGRlZiB0ZXN0
X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICBvdXQgPSBzaXguQnl0ZXNJTygpCiAg
ICAgb3V0LmVuY29kaW5nID0gImFzY2lpIgogICAgIG91dC5lcnJvcnMgPSAic3RyaWN0IgotICAg
IHB5LnRlc3QucmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc2l4LnByaW50Xywgc2l4LnUoIlx1
MDUzYyIpLCBmaWxlPW91dCkKKyAgICBweXRlc3QucmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwg
c2l4LnByaW50Xywgc2l4LnUoIlx1MDUzYyIpLCBmaWxlPW91dCkKICAgICBvdXQuZXJyb3JzID0g
ImJhY2tzbGFzaHJlcGxhY2UiCiAgICAgc2l4LnByaW50XyhzaXgudSgiXHUwNTNjIiksIGVuZD0i
IiwgZmlsZT1vdXQpCiAgICAgYXNzZXJ0IG91dC5nZXR2YWx1ZSgpID09IHNpeC5iKCJcXHUwNTNj
IikKIAogCiBkZWYgdGVzdF9wcmludF9leGNlcHRpb25zKCk6Ci0gICAgcHkudGVzdC5yYWlzZXMo
VHlwZUVycm9yLCBzaXgucHJpbnRfLCB4PTMpCi0gICAgcHkudGVzdC5yYWlzZXMoVHlwZUVycm9y
LCBzaXgucHJpbnRfLCBlbmQ9MykKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5w
cmludF8sIHNlcD00MikKKyAgICBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50Xywg
eD0zKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBlbmQ9MykKKyAg
ICBweXRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50Xywgc2VwPTQyKQogCiAKIGRlZiB0
ZXN0X3dpdGhfbWV0YWNsYXNzKCk6CkBAIC03NDQsNyArNzM3LDU0IEBAIGRlZiB0ZXN0X3dpdGhf
bWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0IFkuX19tcm9fXyA9PSAoWSwgWCwgb2JqZWN0KQogCiAK
LUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAwKSIpCitA
cHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSIpCitkZWYg
dGVzdF93aXRoX21ldGFjbGFzc190eXBpbmcoKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB0
eXBpbmcKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHB5dGVzdC5za2lwKCJ0eXBp
bmcgbW9kdWxlIHJlcXVpcmVkIikKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNz
CisgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNyk6CisgICAgICAgICMgR2VuZXJp
Y3Mgd2l0aCBjdXN0b20gbWV0YWNsYXNzZXMgd2VyZSBicm9rZW4gb24gb2xkZXIgdmVyc2lvbnMu
CisgICAgICAgIGNsYXNzIE1ldGEoTWV0YSwgdHlwaW5nLkdlbmVyaWNNZXRhKToKKyAgICAgICAg
ICAgIHBhc3MKKyAgICBUID0gdHlwaW5nLlR5cGVWYXIoJ1QnKQorICAgIGNsYXNzIEcoc2l4Lndp
dGhfbWV0YWNsYXNzKE1ldGEsIHR5cGluZy5HZW5lcmljW1RdKSk6CisgICAgICAgIHBhc3MKKyAg
ICBjbGFzcyBHQShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIHR5cGluZy5HZW5lcmlj
W1RdKSk6CisgICAgICAgIHBhc3MKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShHLCBNZXRhKQorICAg
IGFzc2VydCBpc2luc3RhbmNlKEdBLCBhYmMuQUJDTWV0YSkKKyAgICBhc3NlcnQgR1tpbnRdIGlz
IG5vdCBHW0dbaW50XV0KKyAgICBhc3NlcnQgR0FbaW50XSBpcyBub3QgR0FbR0FbaW50XV0KKyAg
ICBhc3NlcnQgRy5fX2Jhc2VzX18gPT0gKHR5cGluZy5HZW5lcmljLCkKKyAgICBhc3NlcnQgRy5f
X29yaWdfYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWNbVF0sKQorCisKK0BweXRlc3QubWFyay5z
a2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDcpIikKK2RlZiB0ZXN0X3dpdGhfbWV0
YWNsYXNzX3BlcF81NjAoKToKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisg
ICAgY2xhc3MgQToKKyAgICAgICAgcGFzcworICAgIGNsYXNzIEI6CisgICAgICAgIHBhc3MKKyAg
ICBjbGFzcyBGYWtlOgorICAgICAgICBkZWYgX19tcm9fZW50cmllc19fKHNlbGYsIGJhc2VzKToK
KyAgICAgICAgICAgIHJldHVybiAoQSwgQikKKyAgICBmYWtlID0gRmFrZSgpCisgICAgY2xhc3Mg
RyhzaXgud2l0aF9tZXRhY2xhc3MoTWV0YSwgZmFrZSkpOgorICAgICAgICBwYXNzCisgICAgY2xh
c3MgR0Eoc2l4LndpdGhfbWV0YWNsYXNzKGFiYy5BQkNNZXRhLCBmYWtlKSk6CisgICAgICAgIHBh
c3MKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShHLCBNZXRhKQorICAgIGFzc2VydCBpc2luc3RhbmNl
KEdBLCBhYmMuQUJDTWV0YSkKKyAgICBhc3NlcnQgRy5fX2Jhc2VzX18gPT0gKEEsIEIpCisgICAg
YXNzZXJ0IEcuX19vcmlnX2Jhc2VzX18gPT0gKGZha2UsKQorCisKK0BweXRlc3QubWFyay5za2lw
aWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDApIikKIGRlZiB0ZXN0X3dpdGhfbWV0YWNs
YXNzX3ByZXBhcmUoKToKICAgICAiIiJUZXN0IHRoYXQgd2l0aF9tZXRhY2xhc3MgY2F1c2VzIE1l
dGEuX19wcmVwYXJlX18gdG8gYmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgYXJndW1lbnRzLiIi
IgogCkBAIC04NTcsNyArODk3LDcgQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygpOgogICAgIGFz
c2VydCBNeVNsb3RzLl9fc2xvdHNfXyA9PSBbImEiLCAiYiJdCiAgICAgaW5zdGFuY2UgPSBNeVNs
b3RzKCkKICAgICBpbnN0YW5jZS5hID0gImZvbyIKLSAgICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2V0YXR0ciwgaW5zdGFuY2UsICJjIiwgImJheiIpCisgICAgcHl0ZXN0LnJhaXNl
cyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgaW5zdGFuY2UsICJjIiwgImJheiIpCiAKICAgICAj
IFRlc3QgYSBjbGFzcyB3aXRoIHN0cmluZyBmb3Igc2xvdHMuCiAgICAgY2xhc3MgTXlTdHJpbmdT
bG90cyhvYmplY3QpOgpAQCAtODY2LDggKzkwNiw4IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3Mo
KToKICAgICBhc3NlcnQgTXlTdHJpbmdTbG90cy5fX3Nsb3RzX18gPT0gImFiIgogICAgIGluc3Rh
bmNlID0gTXlTdHJpbmdTbG90cygpCiAgICAgaW5zdGFuY2UuYWIgPSAiZm9vIgotICAgIHB5LnRl
c3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImEiLCAiYmF6IikK
LSAgICBweS50ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgaW5zdGFuY2UsICJi
IiwgImJheiIpCisgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgaW5z
dGFuY2UsICJhIiwgImJheiIpCisgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0
YXR0ciwgaW5zdGFuY2UsICJiIiwgImJheiIpCiAKICAgICBjbGFzcyBNeVNsb3RzV2Vha3JlZihv
YmplY3QpOgogICAgICAgICBfX3Nsb3RzX18gPSAiX193ZWFrcmVmX18iLApAQCAtODc1LDcgKzkx
NSwyNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0IHR5cGUoTXlTbG90
c1dlYWtyZWYpIGlzIE1ldGEKIAogCi1AcHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25f
aW5mb1s6Ml0gPCAoMiwgNykgb3Igc3lzLnZlcnNpb25faW5mb1s6Ml0gaW4gKCgzLCAwKSwgKDMs
IDEpKSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAz
KSIpCitkZWYgdGVzdF9hZGRfbWV0YWNsYXNzX25lc3RlZCgpOgorICAgICMgUmVncmVzc2lvbiB0
ZXN0IGZvciBodHRwczovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9pc3N1ZXMvMjU5CisgICAg
Y2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgcGFzcworCisgICAgY2xhc3MgQToKKyAgICAgICAg
Y2xhc3MgQjogcGFzcworCisgICAgZXhwZWN0ZWQgPSAndGVzdF9hZGRfbWV0YWNsYXNzX25lc3Rl
ZC48bG9jYWxzPi5BLkInCisKKyAgICBhc3NlcnQgQS5CLl9fcXVhbG5hbWVfXyA9PSBleHBlY3Rl
ZAorCisgICAgY2xhc3MgQToKKyAgICAgICAgQHNpeC5hZGRfbWV0YWNsYXNzKE1ldGEpCisgICAg
ICAgIGNsYXNzIEI6IHBhc3MKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09IGV4cGVj
dGVkCisKKworQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiwg
Nykgb3Igc3lzLnZlcnNpb25faW5mb1s6Ml0gaW4gKCgzLCAwKSwgKDMsIDEpKSIpCiBkZWYgdGVz
dF9hc3NlcnRDb3VudEVxdWFsKCk6CiAgICAgY2xhc3MgVGVzdEFzc2VydENvdW50RXF1YWwodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgdGVzdChzZWxmKToKQEAgLTg4Nyw3ICs5NDcs
NyBAQCBkZWYgdGVzdF9hc3NlcnRDb3VudEVxdWFsKCk6CiAgICAgVGVzdEFzc2VydENvdW50RXF1
YWwoJ3Rlc3QnKS50ZXN0KCkKIAogCi1AcHkudGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25f
aW5mb1s6Ml0gPCAoMiwgNykiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5m
b1s6Ml0gPCAoMiwgNykiKQogZGVmIHRlc3RfYXNzZXJ0UmVnZXgoKToKICAgICBjbGFzcyBUZXN0
QXNzZXJ0UmVnZXgodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgdGVzdChzZWxmKToK
QEAgLTg5OSw3ICs5NTksNyBAQCBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIFRlc3RBc3Nl
cnRSZWdleCgndGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVy
c2lvbl9pbmZvWzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lv
bl9pbmZvWzoyXSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSYWlzZXNSZWdleCgpOgogICAg
IGNsYXNzIFRlc3RBc3NlcnRSYWlzZXNSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IGRlZiB0ZXN0KHNlbGYpOgpAQCAtOTMyLDMgKzk5Miw2MSBAQCBkZWYgdGVzdF9weXRob25fMl91
bmljb2RlX2NvbXBhdGlibGUoKToKICAgICAgICAgYXNzZXJ0IHN0cihteV90ZXN0KSA9PSBzaXgu
dSgiaGVsbG8iKQogCiAgICAgYXNzZXJ0IGdldGF0dHIoc2l4Lm1vdmVzLmJ1aWx0aW5zLCAnYnl0
ZXMnLCBzdHIpKG15X3Rlc3QpID09IHNpeC5iKCJoZWxsbyIpCisKKworY2xhc3MgRW5zdXJlVGVz
dHM6CisKKyAgICAjIGdyaW5uaW5nIGZhY2UgZW1vamkKKyAgICBVTklDT0RFX0VNT0pJID0gc2l4
LnUoIlxVMDAwMUY2MDAiKQorICAgIEJJTkFSWV9FTU9KSSA9IGIiXHhmMFx4OWZceDk4XHg4MCIK
KworICAgIGRlZiB0ZXN0X2Vuc3VyZV9iaW5hcnlfcmFpc2VfdHlwZV9lcnJvcihzZWxmKToKKyAg
ICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaXguZW5z
dXJlX3N0cig4KQorCisgICAgZGVmIHRlc3RfZXJyb3JzX2FuZF9lbmNvZGluZyhzZWxmKToKKyAg
ICAgICAgc2l4LmVuc3VyZV9iaW5hcnkoc2VsZi5VTklDT0RFX0VNT0pJLCBlbmNvZGluZz0nbGF0
aW4tMScsIGVycm9ycz0naWdub3JlJykKKyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFVuaWNv
ZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNP
REVfRU1PSkksIGVuY29kaW5nPSdsYXRpbi0xJywgZXJyb3JzPSdzdHJpY3QnKQorCisgICAgZGVm
IHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZShzZWxmKToKKyAgICAgICAgY29udmVydGVkX3VuaWNv
ZGUgPSBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSd1dGYt
OCcsIGVycm9ycz0nc3RyaWN0JykKKyAgICAgICAgY29udmVydGVkX2JpbmFyeSA9IHNpeC5lbnN1
cmVfYmluYXJ5KHNlbGYuQklOQVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0
cmljdCcpCisgICAgICAgIGlmIHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAt
PiBzdHIKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLkJJTkFS
WV9FTU9KSSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAg
ICAgIyBQWTI6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5
ID09IHNlbGYuQklOQVJZX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF9iaW5hcnksIHN0
cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUFkzOiBzdHIgLT4gYnl0ZXMKKyAgICAg
ICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLkJJTkFSWV9FTU9KSSBhbmQg
aXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgYnl0ZXMpCisgICAgICAgICAgICAjIFBZMzog
Ynl0ZXMgLT4gYnl0ZXMKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNl
bGYuQklOQVJZX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF9iaW5hcnksIGJ5dGVzKQor
CisgICAgZGVmIHRlc3RfZW5zdXJlX3N0cihzZWxmKToKKyAgICAgICAgY29udmVydGVkX3VuaWNv
ZGUgPSBzaXguZW5zdXJlX3N0cihzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSd1dGYtOCcs
IGVycm9ycz0nc3RyaWN0JykKKyAgICAgICAgY29udmVydGVkX2JpbmFyeSA9IHNpeC5lbnN1cmVf
c3RyKHNlbGYuQklOQVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcp
CisgICAgICAgIGlmIHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiBzdHIK
KyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLkJJTkFSWV9FTU9K
SSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAgICAgIyBQ
WTI6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNl
bGYuQklOQVJZX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF9iaW5hcnksIHN0cikKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUFkzOiBzdHIgLT4gc3RyCisgICAgICAgICAgICBh
c3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBpc2luc3Rh
bmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAjIFBZMzogYnl0ZXMgLT4g
c3RyCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBzZWxmLlVOSUNPREVf
RU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHN0cikKKworICAgIGRlZiB0
ZXN0X2Vuc3VyZV90ZXh0KHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9IHNpeC5l
bnN1cmVfdGV4dChzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0n
c3RyaWN0JykKKyAgICAgICAgY29udmVydGVkX2JpbmFyeSA9IHNpeC5lbnN1cmVfdGV4dChzZWxm
LkJJTkFSWV9FTU9KSSwgZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSdzdHJpY3QnKQorICAgICAg
ICBpZiBzaXguUFkyOgorICAgICAgICAgICAgIyBQWTI6IHVuaWNvZGUgLT4gdW5pY29kZQorICAg
ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09ERV9FTU9KSSBh
bmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgdW5pY29kZSkKKyAgICAgICAgICAgICMg
UFkyOiBzdHIgLT4gdW5pY29kZQorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkg
PT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1
bmljb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAg
ICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkg
YW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkz
OiBieXRlcyAtPiBzdHIKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNl
bGYuVU5JQ09ERV9FTU9KSSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0
LmxvZwppbmRleCA3MDk0ZGY4MjM0MjJlZDQ4MzIwM2Q1NjdhMDdiNWI4YTQyMTE5MzFkLi5mMGYy
MmNhMmQ2YzM0YzM1YTMzOGFlMTdhMjcxMjQyMWEzNTVlY2Q1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZwpAQCAtMTcsNyAr
MTcsNiBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKIC9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNF
TlNFCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9QS0ctSU5GTwogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L1JFQURNRS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90b3guaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90b3guaW5pCmluZGV4IGU4NjczZGIwYTY5YWU0Njk1ZTdiMWZhMTUyYzUzM2FhMWIwZjk4
ZDEuLmJiZWMxYWZiYjZkZDJmZDZjMDQyMmVkODkzZTA5YWEyZmM5ZjM4YzEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94Lmlu
aQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RveC5pbmkKQEAgLTEsNiArMSw3IEBACiBbdG94XQotZW52bGlzdCA9IHB5MjcscHkzNSxweTM2
LHB5MzcscHlweSx7cHkyNyxweTM1LHB5MzYscHkzN30tZmxha2U4LHtweTM1LHB5MzYscHkzN30t
bXlweQorZW52bGlzdCA9IHB5MjcscHkzNSxweTM2LHB5MzcscHkzOCx7cHkyNyxweTM1LHB5MzYs
cHkzNyxweTM4fS1mbGFrZTgse3B5MzUscHkzNixweTM3LHB5Mzh9LW15cHkKIHNraXBzZGlzdD1U
cnVlCitza2lwX21pc3NpbmdfaW50ZXJwcmV0ZXJzID0gRmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBz
ID0KQEAgLTE0LDcgKzE1LDcgQEAgZGVwcyA9CiAgIGpzb24tZQogICBqc29uc2NoZW1hCiAKLWNv
bW1hbmRzID0gcHl0ZXN0IHtwb3NhcmdzfQorY29tbWFuZHMgPSBweXRlc3QgLS1jb3Y9dG9vbHMg
LS1jb3YtcmVwb3J0PXRlcm0ge3Bvc2FyZ3N9CiAKIHBhc3NlbnYgPQogICBIWVBPVEhFU0lTX1BS
T0ZJTEUKQEAgLTI3LDE1ICsyOCwxOSBAQCBjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25m
aWc9e3RveGluaWRpcn0vcHkyNy1mbGFrZTguaW5pIHtwb3NhcmdzfQogCiBbdGVzdGVudjpweTM1
LWZsYWtlOF0KIGRlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0Ci1jb21tYW5kcyA9IGZs
YWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzNi1mbGFrZTguaW5pIHtwb3Nhcmdz
fQorY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5My1mbGFr
ZTguaW5pIHtwb3NhcmdzfQogCiBbdGVzdGVudjpweTM2LWZsYWtlOF0KIGRlcHMgPSAtcnJlcXVp
cmVtZW50c19mbGFrZTgudHh0Ci1jb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3Rv
eGluaWRpcn0vcHkzNi1mbGFrZTguaW5pIHtwb3NhcmdzfQorY29tbWFuZHMgPSBmbGFrZTggLS1h
cHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9L3B5My1mbGFrZTguaW5pIHtwb3NhcmdzfQogCiBbdGVz
dGVudjpweTM3LWZsYWtlOF0KIGRlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0Ci1jb21t
YW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzNi1mbGFrZTguaW5p
IHtwb3NhcmdzfQorY29tbWFuZHMgPSBmbGFrZTggLS1hcHBlbmQtY29uZmlnPXt0b3hpbmlkaXJ9
L3B5My1mbGFrZTguaW5pIHtwb3NhcmdzfQorCitbdGVzdGVudjpweTM4LWZsYWtlOF0KK2RlcHMg
PSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1j
b25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5
MzUtbXlweV0KIGRlcHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dApAQCAtNTQsMyArNTksOSBA
QCBkZXBzID0gLXJyZXF1aXJlbWVudHNfbXlweS50eHQKIGNoYW5nZWRpciA9IHt0b3hpbmlkaXJ9
Ly4uCiBjb21tYW5kcyA9CiAgIG15cHkgLS1jb25maWctZmlsZT17dG94aW5pZGlyfS9teXB5Lmlu
aSAtLW5vLWluY3JlbWVudGFsIC0tcHkyIC1wIHRvb2xzLm1hbmlmZXN0IC1wIHRvb2xzLmxpbnQg
LXAgdG9vbHMuZ2l0aWdub3JlCisKK1t0ZXN0ZW52OnB5MzgtbXlweV0KK2RlcHMgPSAtcnJlcXVp
cmVtZW50c19teXB5LnR4dAorY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4KK2NvbW1hbmRzID0K
KyAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0tbm8taW5jcmVtZW50
YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0b29scy5naXRpZ25v
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCmluZGV4IGM0YzFiYzI1YzhmZDQ4OTM0
NjNiNGUxM2JkOGI1NDdlNjdmY2VjNjcuLmM2NzIyOTQwNmJhYTI3M2U0N2M4ZjhlNGVjYmU3NDQ5
YWNkOWY5YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZwpAQCAtMjAsNyArMjAs
NyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbG9jYWxwYXRocy5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5MjctZmxha2U4LmluaQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkzNi1mbGFrZTguaW5pCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxh
a2U4LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl0ZXN0LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5LnR4dApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKaW5k
ZXggMGM1YmJmZjU2Mjk4NjhmZGM0OGExYTQxY2Y4ODJmYWJlNTYxN2MxYi4uNjU4ZWQwZTAwZjhh
MzQ0OTQxNjczZWVkNjcxYmE5ZGUzMTc4NThhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2Ns
aWVudC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50LnB5CkBAIC0zNzMsMTAgKzM3Myw4IEBA
IGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgICAgICAgICAgcG9ydCwKICAgICAgICAg
ICAgICAgICAgdXJsX3ByZWZpeD0iLyIsCiAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcz1O
b25lLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsCiAgICAgICAgICAgICAgICAgIGV4
dGVuc2lvbj1Ob25lKToKLSAgICAgICAgc2VsZi50cmFuc3BvcnQgPSB0cmFuc3BvcnQuSFRUUFdp
cmVQcm90b2NvbCgKLSAgICAgICAgICAgIGhvc3QsIHBvcnQsIHVybF9wcmVmaXgsIHRpbWVvdXQ9
dGltZW91dCkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQgPSB0cmFuc3BvcnQuSFRUUFdpcmVQcm90
b2NvbChob3N0LCBwb3J0LCB1cmxfcHJlZml4KQogICAgICAgICBzZWxmLnJlcXVlc3RlZF9jYXBh
YmlsaXRpZXMgPSBjYXBhYmlsaXRpZXMKICAgICAgICAgc2VsZi5jYXBhYmlsaXRpZXMgPSBOb25l
CiAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IE5vbmUKQEAgLTQ0Niw3ICs0NDQsNyBAQCBjbGFz
cyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNl
c3Npb25faWQgPSBOb25lCiAKLSAgICBkZWYgc2VuZF9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJs
LCBib2R5PU5vbmUpOgorICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmwsIGJv
ZHk9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFNlbmQgYSBjb21t
YW5kIHRvIHRoZSByZW1vdGUgZW5kIGFuZCB2YWxpZGF0ZSBpdHMgc3VjY2Vzcy4KIApAQCAtNDY3
LDcgKzQ2NSw3IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgcmVzcG9uc2UgPSBz
ZWxmLnRyYW5zcG9ydC5zZW5kKAogICAgICAgICAgICAgbWV0aG9kLCB1cmwsIGJvZHksCiAgICAg
ICAgICAgICBlbmNvZGVyPXByb3RvY29sLkVuY29kZXIsIGRlY29kZXI9cHJvdG9jb2wuRGVjb2Rl
ciwKLSAgICAgICAgICAgIHNlc3Npb249c2VsZikKKyAgICAgICAgICAgIHNlc3Npb249c2VsZiwg
dGltZW91dD10aW1lb3V0KQogCiAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1cyAhPSAyMDA6CiAg
ICAgICAgICAgICBlcnIgPSBlcnJvci5mcm9tX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtNDk1LDcg
KzQ5Myw3IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gdmFsdWUK
IAotICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1O
b25lKToKKyAgICBkZWYgc2VuZF9zZXNzaW9uX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmksIGJv
ZHk9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFNlbmQgYSBjb21t
YW5kIHRvIGFuIGVzdGFibGlzaGVkIHNlc3Npb24gYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgog
CkBAIC01MTIsNyArNTEwLDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAg
YW4gZXJyb3IuCiAgICAgICAgICIiIgogICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKCJz
ZXNzaW9uLyVzLyIgJSBzZWxmLnNlc3Npb25faWQsIHVyaSkKLSAgICAgICAgcmV0dXJuIHNlbGYu
c2VuZF9jb21tYW5kKG1ldGhvZCwgdXJsLCBib2R5KQorICAgICAgICByZXR1cm4gc2VsZi5zZW5k
X2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHksIHRpbWVvdXQpCiAKICAgICBAcHJvcGVydHkKICAg
ICBAY29tbWFuZApAQCAtNzM3LDYgKzczNSwxMCBAQCBjbGFzcyBFbGVtZW50KG9iamVjdCk6CiAg
ICAgZGVmIHNlbGVjdGVkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zZW5kX2VsZW1lbnRf
Y29tbWFuZCgiR0VUIiwgInNlbGVjdGVkIikKIAorICAgIEBjb21tYW5kCisgICAgZGVmIHNjcmVl
bnNob3Qoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21tYW5kKCJH
RVQiLCAic2NyZWVuc2hvdCIpCisKICAgICBAY29tbWFuZAogICAgIGRlZiBhdHRyaWJ1dGUoc2Vs
ZiwgbmFtZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21tYW5kKCJHRVQi
LCAiYXR0cmlidXRlLyVzIiAlIG5hbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9j
b2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKaW5kZXggMThhM2Q1MmM4YTNiNTM3YmE3
NWQ0ODdmZDdmNmM1Y2RlMjA2ZWMzZS4uYzgxMWY2ZjI2ZGI3OTA4Y2FlNTI4ZDA0ZDI1ZDY4ODI3
ODRlNzRhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3Byb3RvY29sLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dl
YmRyaXZlci9wcm90b2NvbC5weQpAQCAtMiw2ICsyLDggQEAgaW1wb3J0IGpzb24KIAogaW1wb3J0
IHdlYmRyaXZlcgogCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCisKIAogIiIiV2ViRHJpdmVy
IHdpcmUgcHJvdG9jb2wgY29kZWNzLiIiIgogCkBAIC0zOSw1ICs0MSw1IEBAIGNsYXNzIERlY29k
ZXIoanNvbi5KU09ORGVjb2Rlcik6CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBk
aWN0KSBhbmQgd2ViZHJpdmVyLldpbmRvdy5pZGVudGlmaWVyIGluIHBheWxvYWQ6CiAgICAgICAg
ICAgICByZXR1cm4gd2ViZHJpdmVyLldpbmRvdy5mcm9tX2pzb24ocGF5bG9hZCwgc2VsZi5zZXNz
aW9uKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgZGljdCk6Ci0gICAgICAgICAg
ICByZXR1cm4ge2s6IHNlbGYub2JqZWN0X2hvb2sodikgZm9yIGssIHYgaW4gcGF5bG9hZC5pdGVy
aXRlbXMoKX0KKyAgICAgICAgICAgIHJldHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3Ig
aywgdiBpbiBpdGVyaXRlbXMocGF5bG9hZCl9CiAgICAgICAgIHJldHVybiBwYXlsb2FkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9y
dC5weQppbmRleCAzMmJhMzFhMmFlOWE5OTZhNWM1N2ZkMDQwNjEyOTNmMzE3ZTViZjA0Li5mODE3
ZWM4MWE5NmZiOTNjYzVjNjAxNTRmMDU3ZDcyZTk4Mzc1Njk0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJk
cml2ZXIvdHJhbnNwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkKQEAgLTEs
MTIgKzEsMTIgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgc2VsZWN0CisKK2Zyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUsIFBZMworZnJvbSBzaXgubW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEhUVFBD
b25uZWN0aW9uCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIgaW1wb3J0IHBhcnNlIGFzIHVybHBhcnNl
Ci1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgaHR0cF9jbGllbnQgYXMgaHR0cGxpYgogCiBmcm9tIC4g
aW1wb3J0IGVycm9yCiAKLWZyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUKLQogIiIiSW1wbGVtZW50
cyBIVFRQIHRyYW5zcG9ydCBmb3IgdGhlIFdlYkRyaXZlciB3aXJlIHByb3RvY29sLiIiIgogCiAK
QEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgSFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAg
ICAjID0+IHdlYmRyaXZlci5FbGVtZW50CiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIsIHRpbWVvdXQ9Tm9uZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIHVybF9wcmVmaXg9Ii8iKToKICAgICAgICAgIiIiCiAg
ICAgICAgIENvbnN0cnVjdCBpbnRlcmZhY2UgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgcmVt
b3RlIHNlcnZlci4KIApAQCAtODUsOSArODUsOCBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9i
amVjdCk6CiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLnVybF9wcmVmaXggPSB1cmxfcHJlZml4Ci0KICAgICAgICAgc2VsZi5f
Y29ubiA9IE5vbmUKLSAgICAgICAgc2VsZi5fdGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2Vs
Zi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQgPSBGYWxzZQogCiAgICAgZGVmIF9fZGVsX18oc2Vs
Zik6CiAgICAgICAgIHNlbGYuY2xvc2UoKQpAQCAtMTAyLDExICsxMDEsMTEgQEAgY2xhc3MgSFRU
UFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAiIiJHZXRzIHRoZSBjdXJyZW50IEhUVFAg
Y29ubmVjdGlvbiwgb3IgbGF6aWx5IGNyZWF0ZXMgb25lLiIiIgogICAgICAgICBpZiBub3Qgc2Vs
Zi5fY29ubjoKICAgICAgICAgICAgIGNvbm5fa3dhcmdzID0ge30KLSAgICAgICAgICAgIGlmIHNl
bGYuX3RpbWVvdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgY29ubl9rd2FyZ3NbInRp
bWVvdXQiXSA9IHNlbGYuX3RpbWVvdXQKLQotICAgICAgICAgICAgc2VsZi5fY29ubiA9IGh0dHBs
aWIuSFRUUENvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQs
IHN0cmljdD1UcnVlLCAqKmNvbm5fa3dhcmdzKQorICAgICAgICAgICAgaWYgbm90IFBZMzoKKyAg
ICAgICAgICAgICAgICBjb25uX2t3YXJnc1sic3RyaWN0Il0gPSBUcnVlCisgICAgICAgICAgICAj
IFdlIGFyZSBub3Qgc2V0dGluZyBhbiBIVFRQIHRpbWVvdXQgb3RoZXIgdGhhbiB0aGUgZGVmYXVs
dCB3aGVuIHRoZQorICAgICAgICAgICAgIyBjb25uZWN0aW9uIGl0cyBjcmVhdGVkLiBUaGUgc2Vu
ZCBtZXRob2QgaGFzIGEgdGltZW91dCB2YWx1ZSBpZiBuZWVkZWQuCisgICAgICAgICAgICBzZWxm
Ll9jb25uID0gSFRUUENvbm5lY3Rpb24oc2VsZi5ob3N0LCBzZWxmLnBvcnQsICoqY29ubl9rd2Fy
Z3MpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4KIApAQCAtMTI0LDYgKzEyMyw3IEBAIGNs
YXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgICAgICBoZWFkZXJzPU5vbmUs
CiAgICAgICAgICAgICAgZW5jb2Rlcj1qc29uLkpTT05FbmNvZGVyLAogICAgICAgICAgICAgIGRl
Y29kZXI9anNvbi5KU09ORGVjb2RlciwKKyAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsCiAgICAg
ICAgICAgICAgKipjb2RlY19rd2FyZ3MpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNv
bW1hbmQgdG8gdGhlIHJlbW90ZS4KQEAgLTE3MiwxMCArMTcyLDE4IEBAIGNsYXNzIEhUVFBXaXJl
UHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGYWls
ZWQgdG8gZW5jb2RlIHJlcXVlc3QgYm9keSBhcyBKU09OOlxuIgogICAgICAgICAgICAgICAgICAg
ICAiJXMiICUganNvbi5kdW1wcyhib2R5LCBpbmRlbnQ9MikpCiAKLSAgICAgICAgcmVzcG9uc2Ug
PSBzZWxmLl9yZXF1ZXN0KG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzKQorICAgICAgICAj
IFdoZW4gdGhlIHRpbWVvdXQgdHJpZ2dlcnMsIHRoZSBUZXN0UnVubmVyTWFuYWdlciB0aHJlYWQg
d2lsbCByZXVzZQorICAgICAgICAjIHRoaXMgY29ubmVjdGlvbiB0byBjaGVjayBpZiB0aGUgV2Vi
RHJpdmVyIGl0cyBhbGl2ZSBhbmQgd2UgbWF5IGVuZAorICAgICAgICAjIHJhaXNpbmcgYW4gaHR0
cGxpYi5DYW5ub3RTZW5kUmVxdWVzdCBleGNlcHRpb24gaWYgdGhlIFdlYkRyaXZlciBpcworICAg
ICAgICAjIG5vdCByZXNwb25kaW5nIGFuZCB0aGlzIGh0dHBsaWIucmVxdWVzdCgpIGNhbGwgaXMg
YmxvY2tlZCBvbiB0aGUKKyAgICAgICAgIyBydW5uZXIgdGhyZWFkLiBXZSB1c2UgdGhlIGJvb2xl
YW4gYmVsb3cgdG8gY2hlY2sgZm9yIHRoYXQgYW5kIHJlc3RhcnQKKyAgICAgICAgIyB0aGUgY29u
bmVjdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgICAgIHNlbGYuX2xhc3RfcmVxdWVzdF9pc19ibG9j
a2VkID0gVHJ1ZQorICAgICAgICByZXNwb25zZSA9IHNlbGYuX3JlcXVlc3QobWV0aG9kLCB1cmks
IHBheWxvYWQsIGhlYWRlcnMsIHRpbWVvdXQ9Tm9uZSkKKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1
ZXN0X2lzX2Jsb2NrZWQgPSBGYWxzZQogICAgICAgICByZXR1cm4gUmVzcG9uc2UuZnJvbV9odHRw
KHJlc3BvbnNlLCBkZWNvZGVyPWRlY29kZXIsICoqY29kZWNfa3dhcmdzKQogCi0gICAgZGVmIF9y
ZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUpOgorICAgIGRl
ZiBfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVyaSwgcGF5bG9hZCwgaGVhZGVycz1Ob25lLCB0aW1l
b3V0PU5vbmUpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIHRleHRfdHlwZSk6CiAg
ICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoInV0Zi04IikKIApAQCAtMTg1LDEw
ICsxOTMsMjMgQEAgY2xhc3MgSFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogCiAgICAgICAgIHVy
bCA9IHNlbGYudXJsKHVyaSkKIAotICAgICAgICBpZiBzZWxmLl9oYXNfdW5yZWFkX2RhdGEoKToK
KyAgICAgICAgaWYgc2VsZi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQgb3Igc2VsZi5faGFzX3Vu
cmVhZF9kYXRhKCk6CiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKwogICAgICAgICBzZWxmLmNv
bm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgcGF5bG9hZCwgaGVhZGVycykKLSAgICAgICAg
cmV0dXJuIHNlbGYuY29ubmVjdGlvbi5nZXRyZXNwb25zZSgpCisKKyAgICAgICAgIyB0aW1lb3V0
IGZvciByZXF1ZXN0IGhhcyB0byBiZSBzZXQganVzdCBiZWZvcmUgY2FsbGluZyBodHRwbGliLmdl
dHJlc3BvbnNlKCkKKyAgICAgICAgIyBhbmQgdGhlIHByZXZpb3VzIHZhbHVlIHJlc3RvcmVkIGp1
c3QgYWZ0ZXIgdGhhdCwgZXZlbiBvbiBleGNlcHRpb24gcmFpc2VkCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGlmIHRpbWVvdXQ6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfdGltZW91dCA9
IHNlbGYuX2Nvbm4uZ2V0dGltZW91dCgpCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0
aW1lb3V0KHRpbWVvdXQpCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuY29ubmVjdGlvbi5n
ZXRyZXNwb25zZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiB0aW1lb3V0Ogor
ICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm4uc2V0dGltZW91dChwcmV2aW91c190aW1lb3V0KQor
CisgICAgICAgIHJldHVybiByZXNwb25zZQogCiAgICAgZGVmIF9oYXNfdW5yZWFkX2RhdGEoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jb25uIGFuZCBzZWxmLl9jb25uLnNvY2sgYW5kIHNl
bGVjdC5zZWxlY3QoW3NlbGYuX2Nvbm4uc29ja10sIFtdLCBbXSwgMClbMF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Fu
ZHJvaWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9hbmRyb2lkLnB5CmluZGV4IDUxZGViNzFlMzE2NTM4MTQ4ZTA2YjE0NmJjYTc1NTVm
YjdiMDQ2ZGYuLjc0NGUxMzRkMzgyNmVhZmZlYmE2Mzg3NzEzYTJjYjEzMmFlMWE5ZDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2FuZHJvaWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvYW5kcm9pZC5weQpAQCAtODksOCArODksOCBAQCBkZWYgaW5zdGFs
bF9hbmRyb2lkX3BhY2thZ2VzKGxvZ2dlciwgc2RrX3BhdGgsIG5vX3Byb21wdD1GYWxzZSk6CiAK
ICAgICAjVE9ETzogTm90IHN1cmUgd2hhdCdzIHJlYWxseSBuZWVkZWQgaGVyZQogICAgIHBhY2th
Z2VzID0gWyJwbGF0Zm9ybS10b29scyIsCi0gICAgICAgICAgICAgICAgImJ1aWxkLXRvb2xzOzI4
LjAuMyIsCi0gICAgICAgICAgICAgICAgInBsYXRmb3JtczthbmRyb2lkLTI4IiwKKyAgICAgICAg
ICAgICAgICAiYnVpbGQtdG9vbHM7MjkuMC4zIiwKKyAgICAgICAgICAgICAgICAicGxhdGZvcm1z
O2FuZHJvaWQtMjkiLAogICAgICAgICAgICAgICAgICJlbXVsYXRvciJdCiAKICAgICAjIFRPRE86
IG1ha2UgdGhpcyB3b3JrIG5vbi1pbnRlcm5hY3RpdmVseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2Jy
b3dzZXIucHkKaW5kZXggM2VlOThkOTU5ZWM1YmVmYzU4Yjg4NGUwZWM1Mzg1ZDU1NGJjODcyNS4u
MzY2ZGM3ODFkOTBlZTIxYjgyMGI5MzM0YzY5ZWRlMmM0NTFjYjRiOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nl
ci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdC9icm93c2VyLnB5CkBAIC02LDIwICs2LDE5IEBAIGltcG9ydCBzdGF0CiBpbXBvcnQg
ZXJybm8KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB1cmxwYXJz
ZQogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBmcm9tIGRhdGV0aW1l
IGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQg
ZmluZF9leGVjdXRhYmxlCiAKK2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
c3BsaXQKIGltcG9ydCByZXF1ZXN0cwogCi1mcm9tIHV0aWxzIGltcG9ydCBjYWxsLCBnZXQsIHVu
dGFyLCB1bnppcAorZnJvbSAudXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIsIHVuemlwCiAK
IHVuYW1lID0gcGxhdGZvcm0udW5hbWUoKQogCiAjIHRoZSByb290VXJsIGZvciB0aGUgZmlyZWZv
eC1jaSBkZXBsb3ltZW50IG9mIFRhc2tjbHVzdGVyCi0jIChhZnRlciBOb3ZlbWJlciA5LCBodHRw
czovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20vKQotRklSRUZPWF9DSV9ST09U
X1VSTCA9ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCcKK0ZJUkVGT1hfQ0lfUk9PVF9VUkwgPSAn
aHR0cHM6Ly9maXJlZm94LWNpLXRjLnNlcnZpY2VzLm1vemlsbGEuY29tJwogCiAKIGRlZiBfZ2V0
X2ZpbGV2ZXJzaW9uKGJpbmFyeSwgbG9nZ2VyPU5vbmUpOgpAQCAtNDEsNiArNDAsMjMgQEAgZGVm
IGhhbmRsZV9yZW1vdmVfcmVhZG9ubHkoZnVuYywgcGF0aCwgZXhjKToKICAgICAgICAgcmFpc2UK
IAogCitkZWYgZ2V0X2V4dChmaWxlbmFtZSk6CisgICAgIiIiR2V0IHRoZSBleHRlbnNpb24gZnJv
bSBhIGZpbGVuYW1lIHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgLnRhci5mb28iIiIKKyAgICBu
YW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgIGlmIG5hbWUuZW5kc3dp
dGgoIi50YXIiKToKKyAgICAgICAgZXh0ID0gIi50YXIlcyIgJSBleHQKKyAgICByZXR1cm4gZXh0
CisKKworZGVmIGdldF90YXNrY2x1c3Rlcl9hcnRpZmFjdChpbmRleCwgcGF0aCk6CisgICAgVENf
SU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9pbmRleC92MS8iCisKKyAg
ICByZXNwID0gZ2V0KFRDX0lOREVYX0JBU0UgKyAidGFzay8lcy9hcnRpZmFjdHMvJXMiICUgKGlu
ZGV4LCBwYXRoKSkKKyAgICByZXNwLnJhaXNlX2Zvcl9zdGF0dXMoKQorCisgICAgcmV0dXJuIHJl
c3AKKworCiBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01l
dGEKIApAQCAtNDgsOCArNjQsMTMgQEAgY2xhc3MgQnJvd3NlcihvYmplY3QpOgogICAgICAgICBz
ZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAgICAgQGFic3RyYWN0bWV0aG9kCi0gICAgZGVmIGRvd25s
b2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKLSAgICAgICAgIiIiRG93bmxvYWQg
YSBwYWNrYWdlIG9yIGluc3RhbGxlciBmb3IgdGhlIGJyb3dzZXIiIiIKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKKyAgICAgICAg
IiIiRG93bmxvYWQgYSBwYWNrYWdlIG9yIGluc3RhbGxlciBmb3IgdGhlIGJyb3dzZXIKKyAgICAg
ICAgOnBhcmFtIGRlc3Q6IERpcmVjdG9yeSBpbiB3aGljaCB0byBwdXQgdGhlIGRvd2xvYWRlZCBw
YWNrYWdlCisgICAgICAgIDpwYXJhbSBjaGFubmVsOiBCcm93c2VyIGNoYW5uZWwgdG8gZG93bmxv
YWQKKyAgICAgICAgOnBhcmFtIHJlbmFtZTogT3B0aW9uYWwgbmFtZSBmb3IgdGhlIGRvd25sb2Fk
ZWQgcGFja2FnZTsgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
biBpcyBwcmVzZXJ2ZWQuCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50
ZWQKIAogICAgIEBhYnN0cmFjdG1ldGhvZApAQCAtMTMzLDcgKzE1NCw3IEBAIGNsYXNzIEZpcmVm
b3goQnJvd3Nlcik6CiAKICAgICAgICAgcmV0dXJuIGRlc3QKIAotICAgIGRlZiBkb3dubG9hZChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiKToKKyAgICBkZWYgZG93bmxvYWQoc2Vs
ZiwgZGVzdD1Ob25lLCBjaGFubmVsPSJuaWdodGx5IiwgcmVuYW1lPU5vbmUpOgogICAgICAgICBw
cm9kdWN0ID0gewogICAgICAgICAgICAgIm5pZ2h0bHkiOiAiZmlyZWZveC1uaWdodGx5LWxhdGVz
dC1zc2wiLAogICAgICAgICAgICAgImJldGEiOiAiZmlyZWZveC1iZXRhLWxhdGVzdC1zc2wiLApA
QCAtMTYxLDcgKzE4Miw3IEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nlcik6CiAgICAgICAgIHVybCA9
ICJodHRwczovL2Rvd25sb2FkLm1vemlsbGEub3JnLz9wcm9kdWN0PSVzJm9zPSVzJmxhbmc9ZW4t
VVMiICUgKHByb2R1Y3RbY2hhbm5lbF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zX2J1aWxkc1tv
c19rZXldKQogICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJEb3dubG9hZGluZyBGaXJlZm94IGZy
b20gJXMiICUgdXJsKQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KHVybCkKKyAgICAgICAg
cmVzcCA9IGdldCh1cmwpCiAKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAKQEAgLTE3MiwxMSAr
MTkzLDE0IEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nlcik6CiAgICAgICAgICAgICAgICAgZmlsZW5h
bWUgPSBmaWxlbmFtZXNbMF0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6Ci0gICAgICAgICAg
ICBmaWxlbmFtZSA9IHVybHBhcnNlLnVybHNwbGl0KHJlc3AudXJsKS5wYXRoLnJzcGxpdCgiLyIs
IDEpWzFdCisgICAgICAgICAgICBmaWxlbmFtZSA9IHVybHNwbGl0KHJlc3AudXJsKS5wYXRoLnJz
cGxpdCgiLyIsIDEpWzFdCiAKICAgICAgICAgaWYgbm90IGZpbGVuYW1lOgogICAgICAgICAgICAg
ZmlsZW5hbWUgPSAiZmlyZWZveC50YXIuYnoyIgogCisgICAgICAgIGlmIHJlbmFtZToKKyAgICAg
ICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChmaWxlbmFtZSkpCisK
ICAgICAgICAgaW5zdGFsbGVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgZmlsZW5hbWUpCiAK
ICAgICAgICAgd2l0aCBvcGVuKGluc3RhbGxlcl9wYXRoLCAid2IiKSBhcyBmOgpAQCAtMzYzLDE0
ICszODcsMTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgdGFncyA9IGNhbGwo
ImdpdCIsICJscy1yZW1vdGUiLCAiLS10YWdzIiwgIi0tcmVmcyIsCiAgICAgICAgICAgICAgICAg
ICAgICJodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrb2RyaXZlci5naXQiKQogICAgICAg
ICByZWxlYXNlX3JlID0gcmUuY29tcGlsZShyIi4qcmVmcy90YWdzL3YoXGQrKVwuKFxkKylcLihc
ZCspIikKLSAgICAgICAgbGF0ZXN0X3JlbGVhc2UgPSAwCisgICAgICAgIGxhdGVzdF9yZWxlYXNl
ID0gKDAsMCwwKQogICAgICAgICBmb3IgaXRlbSBpbiB0YWdzLnNwbGl0KCJcbiIpOgogICAgICAg
ICAgICAgbSA9IHJlbGVhc2VfcmUubWF0Y2goaXRlbSkKICAgICAgICAgICAgIGlmIG06Ci0gICAg
ICAgICAgICAgICAgdmVyc2lvbiA9IFtpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gbS5ncm91cHMoKV0K
KyAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdHVwbGUoaW50KGl0ZW0pIGZvciBpdGVtIGluIG0u
Z3JvdXBzKCkpCiAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA+IGxhdGVzdF9yZWxlYXNlOgog
ICAgICAgICAgICAgICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IHZlcnNpb24KLSAgICAgICAgYXNz
ZXJ0IGxhdGVzdF9yZWxlYXNlICE9IDAKKyAgICAgICAgYXNzZXJ0IGxhdGVzdF9yZWxlYXNlICE9
ICgwLDAsMCkKICAgICAgICAgcmV0dXJuICJ2JXMuJXMuJXMiICUgdHVwbGUoc3RyKGl0ZW0pIGZv
ciBpdGVtIGluIGxhdGVzdF9yZWxlYXNlKQogCiAgICAgZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNl
bGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCBicm93c2VyX2JpbmFyeT1Ob25lKToKQEAgLTM5
NywzMiArNDIxLDMyIEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nlcik6CiAgICAgICAgIHJldHVybiBm
aW5kX2V4ZWN1dGFibGUob3MucGF0aC5qb2luKGRlc3QsICJnZWNrb2RyaXZlciIpKQogCiAgICAg
ZGVmIGluc3RhbGxfZ2Vja29kcml2ZXJfbmlnaHRseShzZWxmLCBkZXN0KToKLSAgICAgICAgaW1w
b3J0IHRhcmZpbGUKLSAgICAgICAgaW1wb3J0IG1vemRvd25sb2FkCiAgICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oIkF0dGVtcHRpbmcgdG8gaW5zdGFsbCB3ZWJkcml2ZXIgZnJvbSBuaWdodGx5IikK
KworICAgICAgICBwbGF0Zm9ybV9iaXRzID0gKCI2NCIgaWYgdW5hbWVbNF0gPT0gIng4Nl82NCIg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICgiMzIiIGlmIHNlbGYucGxhdGZvcm0gPT0g
IndpbiIgZWxzZSAiIikpCisgICAgICAgIHRjX3BsYXRmb3JtID0gIiVzJXMiICUgKHNlbGYucGxh
dGZvcm0sIHBsYXRmb3JtX2JpdHMpCisKKyAgICAgICAgYXJjaGl2ZV9leHQgPSAiLnppcCIgaWYg
dW5hbWVbMF0gPT0gIldpbmRvd3MiIGVsc2UgIi50YXIuZ3oiCisgICAgICAgIGFyY2hpdmVfbmFt
ZSA9ICJwdWJsaWMvZ2Vja29kcml2ZXIlcyIgJSBhcmNoaXZlX2V4dAorCiAgICAgICAgIHRyeToK
LSAgICAgICAgICAgIHMgPSBtb3pkb3dubG9hZC5EYWlseVNjcmFwZXIoYnJhbmNoPSJtb3ppbGxh
LWNlbnRyYWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRl
bnNpb249ImNvbW1vbi50ZXN0cy50YXIuZ3oiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbj1kZXN0KQotICAgICAgICAgICAgcGFja2FnZV9wYXRo
ID0gcy5kb3dubG9hZCgpCi0gICAgICAgIGV4Y2VwdCBtb3pkb3dubG9hZC5lcnJvcnMuTm90Rm91
bmRFcnJvcjoKKyAgICAgICAgICAgIHJlc3AgPSBnZXRfdGFza2NsdXN0ZXJfYXJ0aWZhY3QoCisg
ICAgICAgICAgICAgICAgImdlY2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3QuZ2Vja29kcml2
ZXIuJXMiICUgdGNfcGxhdGZvcm0sCisgICAgICAgICAgICAgICAgYXJjaGl2ZV9uYW1lKQorICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2Vj
a29kcml2ZXIgZG93bmxvYWQgZmFpbGVkIikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGV4ZV9zdWZmaXggPSAiLmV4ZSIgaWYgdW5hbWVbMF0gPT0gIldp
bmRvd3MiIGVsc2UgIiIKLSAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHBhY2thZ2VfcGF0
aCwgInIiKSBhcyBmOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg
bWVtYmVyID0gZi5nZXRtZW1iZXIoImJpbiVzZ2Vja29kcml2ZXIlcyIgJSAob3MucGF0aC5zZXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZV9zdWZmaXgpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgIyBSZW1vdmUgYmlu
LyBmcm9tIHRoZSBwYXRoLgotICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lID0gb3MucGF0aC5i
YXNlbmFtZShtZW1iZXIubmFtZSkKLSAgICAgICAgICAgICAgICBmLmV4dHJhY3RhbGwobWVtYmVy
cz1bbWVtYmVyXSwgcGF0aD1kZXN0KQotICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpv
aW4oZGVzdCwgbWVtYmVyLm5hbWUpCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJFeHRy
YWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUgcGF0aCkKLSAgICAgICAgZmluYWxseToKLSAgICAg
ICAgICAgIG9zLnVubGluayhwYWNrYWdlX3BhdGgpCisgICAgICAgIGlmIGFyY2hpdmVfZXh0ID09
ICIuemlwIjoKKyAgICAgICAgICAgIHVuemlwKHJlc3AucmF3LCBkZXN0KQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgdW50YXIocmVzcC5yYXcsIGRlc3QpCisKKyAgICAgICAgZXhlX2V4dCA9
ICIuZXhlIiBpZiB1bmFtZVswXSA9PSAiV2luZG93cyIgZWxzZSAiIgorICAgICAgICBwYXRoID0g
b3MucGF0aC5qb2luKGRlc3QsICJnZWNrb2RyaXZlciVzIiAlIGV4ZV9leHQpCisKKyAgICAgICAg
c2VsZi5sb2dnZXIuaW5mbygiRXh0cmFjdGVkIGdlY2tvZHJpdmVyIHRvICVzIiAlIHBhdGgpCiAK
ICAgICAgICAgcmV0dXJuIHBhdGgKIApAQCAtNDQxLDMwICs0NjUsMTkgQEAgY2xhc3MgRmlyZWZv
eEFuZHJvaWQoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJmaXJlZm94X2FuZHJvaWQiCiAgICAg
cmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19maXJlZm94LnR4dCIKIAotICAgIGRlZiBkb3du
bG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNl
bGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRl
c3QgaXMgTm9uZToKICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAotICAgICAgICBpZiBGSVJF
Rk9YX0NJX1JPT1RfVVJMID09ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCc6Ci0gICAgICAgICAg
ICAjIE5PVEU6IHRoaXMgY29uZGl0aW9uIGNhbiBiZSByZW1vdmVkIGFmdGVyIE5vdmVtYmVyIDks
IDIwMTkKLSAgICAgICAgICAgIFRDX1FVRVVFX0JBU0UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1
c3Rlci5uZXQvdjEvIgotICAgICAgICAgICAgVENfSU5ERVhfQkFTRSA9ICJodHRwczovL2luZGV4
LnRhc2tjbHVzdGVyLm5ldC92MS8iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBUQ19RVUVV
RV9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL3F1ZXVlL3YxLyIKLSAgICAgICAg
ICAgIFRDX0lOREVYX0JBU0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvaW5kZXgvdjEv
IgotCi0KLSAgICAgICAgcmVzcCA9IHJlcXVlc3RzLmdldChUQ19JTkRFWF9CQVNFICsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGFzay9nZWNrby52Mi5tb3ppbGxhLWNlbnRyYWwubGF0
ZXN0Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiKQotICAgICAgICByZXNwLnJhaXNlX2Zvcl9z
dGF0dXMoKQotICAgICAgICBpbmRleCA9IHJlc3AuanNvbigpCi0gICAgICAgIHRhc2tfaWQgPSBp
bmRleFsidGFza0lkIl0KIAotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX1FVRVVFX0JB
U0UgKyAidGFzay8lcy9hcnRpZmFjdHMvJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodGFza19pZCwgInB1YmxpYy9idWlsZC9nZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikpCi0g
ICAgICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisgICAgICAgIHJlc3AgPSBnZXRfdGFza2Ns
dXN0ZXJfYXJ0aWZhY3QoCisgICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxh
dGVzdC5tb2JpbGUuYW5kcm9pZC14ODZfNjQtb3B0IiwKKyAgICAgICAgICAgICJwdWJsaWMvYnVp
bGQvZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCiAKLSAgICAgICAgYXBrX3BhdGggPSBvcy5w
YXRoLmpvaW4oZGVzdCwgImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKQorICAgICAgICBmaWxl
bmFtZSA9ICJnZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIgorICAgICAgICBpZiByZW5hbWU6Cisg
ICAgICAgICAgICBmaWxlbmFtZSA9ICIlcyVzIiAlIChyZW5hbWUsIGdldF9leHQoZmlsZW5hbWUp
WzFdKQorICAgICAgICBhcGtfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKIAog
ICAgICAgICB3aXRoIG9wZW4oYXBrX3BhdGgsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndy
aXRlKHJlc3AuY29udGVudCkKQEAgLTUwMCw3ICs1MTMsNyBAQCBjbGFzcyBDaHJvbWUoQnJvd3Nl
cik6CiAgICAgcHJvZHVjdCA9ICJjaHJvbWUiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVt
ZW50c19jaHJvbWUudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hh
bm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5v
bmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAg
ICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtNjU4LDcg
KzY3MSw3IEBAIGNsYXNzIENocm9tZUFuZHJvaWRCYXNlKEJyb3dzZXIpOgogICAgICAgICBzdXBl
cihDaHJvbWVBbmRyb2lkQmFzZSwgc2VsZikuX19pbml0X18obG9nZ2VyKQogICAgICAgICBzZWxm
LmRldmljZV9zZXJpYWwgPSBOb25lCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC03
NjYsNyArNzc5LDcgQEAgY2xhc3MgQ2hyb21laU9TKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAi
Y2hyb21lX2lvcyIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2Nocm9tZV9pb3Mu
dHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1O
b25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODAyLDcgKzgxNSw3IEBAIGNs
YXNzIE9wZXJhKEJyb3dzZXIpOgogICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJVbmFibGUg
dG8gZmluZCB0aGUgYnJvd3NlciBiaW5hcnkuIikKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTg3NCw3ICs4ODcsNyBAQCBjbGFzcyBFZGdlQ2hy
b21pdW0oQnJvd3Nlcik6CiAgICAgZWRnZWRyaXZlcl9uYW1lID0gIm1zZWRnZWRyaXZlciIKICAg
ICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2VkZ2VfY2hyb21pdW0udHh0IgogCi0gICAg
ZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93
bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVz
dD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODg4LDExICs5MDEsMTMgQEAgY2xhc3MgRWRnZUNo
cm9taXVtKEJyb3dzZXIpOgogICAgICAgICAgICAgaWYgbm90IGJpbmFyeToKICAgICAgICAgICAg
ICAgICAjIFVzZSBwYXRocyBmcm9tIGRpZmZlcmVudCBFZGdlIGNoYW5uZWxzIHN0YXJ0aW5nIHdp
dGggUmVsZWFzZVxCZXRhXERldlxDYW5hcnkKICAgICAgICAgICAgICAgICB3aW5wYXRocyA9IFtv
cy5wYXRoLmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcXExvY2FsXFxNaWNyb3NvZnRcXEVkZ2VcXEFw
cGxpY2F0aW9uIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR2
YXJzKCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXNcXE1pY3Jvc29mdFxcRWRnZVxcQXBwbGlj
YXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMo
IiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIEJldGFcXEFwcGxp
Y2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR2YXJz
KCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXNcXE1pY3Jvc29mdFxcRWRnZSBEZXZcXEFwcGxp
Y2F0aW9uIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR2YXJz
KCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdFxcRWRnZVxcQXBw
bGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZh
cnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdlIEJl
dGFcXEFwcGxpY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5l
eHBhbmR2YXJzKCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdFxc
RWRnZSBEZXZcXEFwcGxpY2F0aW9uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu
cGF0aC5leHBhbmR1c2VyKCJ+XFxBcHBEYXRhXExvY2FsXFxNaWNyb3NvZnRcXEVkZ2UgU3hTXFxB
cHBsaWNhdGlvbiIpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5k
dXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZSBTeFNcXEFwcGxpY2F0aW9u
IildCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfZXhlY3V0YWJsZShiaW5hcnluYW1lLCBv
cy5wYXRoc2VwLmpvaW4od2lucGF0aHMpKQogICAgICAgICBpZiBzZWxmLnBsYXRmb3JtID09ICJt
YWNvcyI6CiAgICAgICAgICAgICBiaW5hcnluYW1lID0gIk1pY3Jvc29mdCBFZGdlIENhbmFyeSIK
QEAgLTk3Myw3ICs5ODgsNyBAQCBjbGFzcyBFZGdlKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAi
ZWRnZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2VkZ2UudHh0IgogCi0gICAg
ZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93
bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVz
dD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTAwNyw3ICsxMDIyLDcgQEAgY2xhc3MgSW50ZXJu
ZXRFeHBsb3JlcihCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImllIgogICAgIHJlcXVpcmVtZW50
cyA9ICJyZXF1aXJlbWVudHNfaWUudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9
Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBj
aGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpA
QCAtMTAzNSw3ICsxMDUwLDcgQEAgY2xhc3MgU2FmYXJpKEJyb3dzZXIpOgogICAgIHByb2R1Y3Qg
PSAic2FmYXJpIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfc2FmYXJpLnR4dCIK
IAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAg
ZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNl
bGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExMDUsMTQgKzExMjAsMTUgQEAgY2xh
c3MgU2Vydm8oQnJvd3Nlcik6CiAgICAgICAgIHVybCA9ICJodHRwczovL2Rvd25sb2FkLnNlcnZv
Lm9yZy9uaWdodGx5LyVzL3NlcnZvLWxhdGVzdCVzIiAlIChwbGF0Zm9ybSwgZXh0ZW5zaW9uKQog
ICAgICAgICByZXR1cm4gZ2V0KHVybCkKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Im5pZ2h0bHkiKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPSJuaWdodGx5IiwgcmVuYW1lPU5vbmUpOgogICAgICAgICBpZiBkZXN0IGlzIE5v
bmU6CiAgICAgICAgICAgICBkZXN0ID0gb3MucHdkCiAKICAgICAgICAgcmVzcCA9IHNlbGYuX2dl
dChkZXN0LCBjaGFubmVsKQogICAgICAgICBfLCBleHRlbnNpb24sIF8gPSBzZWxmLnBsYXRmb3Jt
X2NvbXBvbmVudHMoKQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVzdCwgInNl
cnZvLWxhdGVzdCVzIiAlIChleHRlbnNpb24sKSksICJ3IikgYXMgZjoKKyAgICAgICAgZmlsZW5h
bWUgPSByZW5hbWUgaWYgcmVuYW1lIGlzIG5vdCBOb25lIGVsc2UgInNlcnZvLWxhdGVzdCIKKyAg
ICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAiJXMlcyIgJSAoZmlsZW5hbWUsIGV4
dGVuc2lvbiwpKSwgInciKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShyZXNwLmNvbnRlbnQp
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiKToK
QEAgLTExNTksNyArMTE3NSw3IEBAIGNsYXNzIFNhdWNlKEJyb3dzZXIpOgogICAgIHByb2R1Y3Qg
PSAic2F1Y2UiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYXVjZS50eHQiCiAK
LSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRl
ZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxm
LCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMTg0LDcgKzEyMDAsNyBAQCBjbGFzcyBX
ZWJLaXQoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJ3ZWJraXQiCiAgICAgcmVxdWlyZW1lbnRz
ID0gInJlcXVpcmVtZW50c193ZWJraXQudHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUp
OgpAQCAtMTI1MCw3ICsxMjY2LDcgQEAgY2xhc3MgRXBpcGhhbnkoQnJvd3Nlcik6CiAgICAgcHJv
ZHVjdCA9ICJlcGlwaGFueSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2VwaXBo
YW55LnR4dCIKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9u
ZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5h
bWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBp
bnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2NvbW1hbmRz
Lmpzb24gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdC9jb21tYW5kcy5qc29uCmluZGV4IDYwZmUxNjIxYWYwZGVjZDBmYWE0MzRmMjZkY2JhOTk1
MTU0MTczZTcuLmE0N2FiNDBkNzI4NDdkNWY1MzZlMGFjMmUwMmViM2ZlMGZlYTIzM2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2NvbW1hbmRzLmpzb24KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNvbgpAQCAtNTIsNyArNTIsNiBAQAogICAg
ICJwYXJzZXIiOiAiZ2V0X3BhcnNlciIsCiAgICAgImhlbHAiOiAiSW5zdGFsbCBicm93c2VyIGNv
bXBvbmVudHMiLAogICAgICJpbnN0YWxsIjogWwotICAgICAgIm1vemRvd25sb2FkIiwKICAgICAg
ICJtb3ppbnN0YWxsIgogICAgIF0KICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0YWxsLnB5
CmluZGV4IDI0OTE1ZjBjOThkMGJlM2E4NjRhM2E1MTViYTBlMTYyZGMzN2RhOGMuLjZlYjU5Zjgx
NGJmMDhkMTM5ZDU5N2E0YjRiMjZhN2Q3YWE5MjBmZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
aW5zdGFsbC5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGJyb3dz
ZXIKIGltcG9ydCBzeXMKLQorZnJvbSAuIGltcG9ydCBicm93c2VyCiAKIGxhdGVzdF9jaGFubmVs
cyA9IHsKICAgICAnZmlyZWZveCc6ICduaWdodGx5JywKQEAgLTQ0LDYgKzQzLDkgQEAgZGVmIGdl
dF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgICdsYXRlc3QgYnJvd3NlciByZWxl
YXNlIG9uIHRoZSBzZWxlY3RlZCBjaGFubmVsLicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LS1kb3dubG9hZC1vbmx5JywgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IkRvd25sb2FkIHRoZSBzZWxlY3RlZCBjb21wb25lbnQgYnV0IGRvbid0IGlu
c3RhbGwgaXQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVuYW1lJywgYWN0aW9uPSJz
dG9yZSIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGVu
YW1lLCBleGNsdWRpbmcgZXh0ZW5zaW9uIGZvciBkb3dubG9hZGVkIGFyY2hpdmUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIihvbmx5IHdpdGggLS1kb3dubG9hZC1vbmx5KSIpCiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1kZXN0aW5hdGlvbicsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdmaWxlc3lzdGVtIGRpcmVjdG9yeSB0byBwbGFjZSB0aGUgY29tcG9uZW50
JykKICAgICByZXR1cm4gcGFyc2VyCkBAIC03NiwxMCArNzgsMTEgQEAgZGVmIHJ1bih2ZW52LCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyAt
LWRlc3RpbmF0aW9uIGFyZ3VtZW50LCBhbmQgbm8gZGVmYXVsdCBmb3IgdGhlIGVudmlyb25tZW50
IikKIAogICAgIGluc3RhbGwoYnJvd3Nlciwga3dhcmdzWyJjb21wb25lbnQiXSwgZGVzdGluYXRp
b24sIGNoYW5uZWwsCi0gICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxvYWRf
b25seSJdKQorICAgICAgICAgICAgZG93bmxvYWRfb25seT1rd2FyZ3NbImRvd25sb2FkX29ubHki
XSwgcmVuYW1lPWt3YXJnc1sicmVuYW1lIl0pCiAKIAotZGVmIGluc3RhbGwobmFtZSwgY29tcG9u
ZW50LCBkZXN0aW5hdGlvbiwgY2hhbm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9h
ZF9vbmx5PUZhbHNlKToKK2RlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRpb24s
IGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvYWRfb25seT1GYWxzZSwKKyAg
ICAgICAgICAgIHJlbmFtZT1Ob25lKToKICAgICBpZiBsb2dnZXIgaXMgTm9uZToKICAgICAgICAg
aW1wb3J0IGxvZ2dpbmcKICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImluc3Rh
bGwiKQpAQCAtOTEsNiArOTQsOSBAQCBkZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQsIGRlc3Rp
bmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sbwogCiAgICAgc3Vi
Y2xhc3MgPSBnZXRhdHRyKGJyb3dzZXIsIG5hbWUudGl0bGUoKSkKICAgICBzeXMuc3Rkb3V0Lndy
aXRlKCdOb3cgaW5zdGFsbGluZyAlcyAlcy4uLlxuJyAlIChuYW1lLCBjb21wb25lbnQpKQotICAg
IHBhdGggPSBnZXRhdHRyKHN1YmNsYXNzKGxvZ2dlciksIG1ldGhvZCkoZGVzdD1kZXN0aW5hdGlv
biwgY2hhbm5lbD1jaGFubmVsKQorICAgIGt3YXJncyA9IHt9CisgICAgaWYgZG93bmxvYWRfb25s
eSBhbmQgcmVuYW1lOgorICAgICAgICBrd2FyZ3NbInJlbmFtZSJdID0gcmVuYW1lCisgICAgcGF0
aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3RpbmF0aW9uLCBj
aGFubmVsPWNoYW5uZWwsICoqa3dhcmdzKQogICAgIGlmIHBhdGg6CiAgICAgICAgIHN5cy5zdGRv
dXQud3JpdGUoJ0JpbmFyeSAlcyBhcyAlc1xuJyAlICgiZG93bmxvYWRlZCIgaWYgZG93bmxvYWRf
b25seSBlbHNlICJpbnN0YWxsZWQiLCBwYXRoLCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9wYXRocyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzCmluZGV4
IDM1ODY3YzRjY2JmZTk1YzRlNzFhOGQ3MWNlOTBhN2IzNzg5NTFmZDUuLjZiMDljYzhiZGFiZWM5
YzZhMzZlZTI1NzI5M2JlOTAyYzc5OGIxNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzCkBAIC0y
LDUgKzIsNiBAQCB0b29scy9jaS8KIHRvb2xzL2RvY2tlci8KIHRvb2xzL2xpbnQvCiB0b29scy9t
YW5pZmVzdC8KK3Rvb2xzL3F1aWMvCiB0b29scy9zZXJ2ZS8KIHRvb2xzL3dwdC8KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CmluZGV4IDU2NjA4M2NiNmJlODlhMDNl
NDhjYzVjMWEwYTg4ZmM1Y2U1M2E4NTMuLjNiYWVmYTUwZWE5ODE5NzRiZTY2YjZlMjI2ZTA1MGU1
OWUwMzRjMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dApA
QCAtMSArMSwyIEBACi1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCittb3ppbmZv
PT0xLjIuMSAgIyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjIxMjI2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQppbmRleCBjNGNiYzI5NDNiN2Nl
MDJlZjJhNThmNjVkMzRhYjcxN2JmYjBjOTgxLi4xODkzZmRlZmE4MzQ2ZThmOTY5ZTQxNzg5ZGY2
ZTNkZGQ4NTQwNjI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKQEAgLTEwNiwx
MSArMTA2LDE0IEBAIGRlZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlPWludCwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im1heGltdW0gbnVtYmVyIG9m
IHJldmlzaW9ucyB0byBiZSByZXR1cm5lZCBieSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0aGUgY29tbWFuZCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZXJib3NlIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iZGVidWcgbG9nZ2luZyIpCiAgICAgcmV0dXJuIHBh
cnNlcgogCiAKIGRlZiBydW5fcmV2X2xpc3QoKiprd2FyZ3MpOgogICAgICMgdHlwZTogKCoqQW55
KSAtPiBOb25lCisgICAgaWYga3dhcmdzLmdldCgndmVyYm9zZScpOgorICAgICAgICBsb2dnZXIu
c2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKICAgICAjICJlcG9jaF90aHJlc2hvbGQiIGlzIGEgc2Fm
ZXR5IG1hcmdpbi4gQWZ0ZXIgdGhpcyB0aW1lIGl0IGlzIGZpbmUgdG8KICAgICAjIGFzc3VtZSB0
aGF0IGFueSB0YWdzIGFyZSBjcmVhdGVkIGFuZCBwdXNoZWQuCiAgICAgZXBvY2hfdGhyZXNob2xk
ID0gNjAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKaW5kZXggMGM3MzJlN2FlOGFlZTdkNDQxMDE1
NjQyYmE4ZjJmY2JkN2U2NmUwZS4uYTlmZGVhZGExZWM3ODBhNTAwOTNmMjIxNjczY2Y0MDY4NjRl
MzZjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQpAQCAtMTgzLDYgKzE4MywxNiBAQCBjbGFz
cyBCcm93c2VyU2V0dXAob2JqZWN0KToKICAgICBkZWYgc2V0dXAoc2VsZiwga3dhcmdzKToKICAg
ICAgICAgc2VsZi5zZXR1cF9rd2FyZ3Moa3dhcmdzKQogCitkZWYgc2FmZV91bnNldGVudihlbnZf
dmFyKToKKyAgICAiIiJTYWZlbHkgcmVtb3ZlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisg
ICAgUHl0aG9uMyBkb2VzIG5vdCBzdXBwb3J0IG9zLnVuc2V0ZW52IGluIFdpbmRvd3MgZm9yIHB5
dGhvbjwzLjksIHNvIHdlIGJldHRlcgorICAgIHJlbW92ZSB0aGUgdmFyaWFibGUgZGlyZWN0bHkg
ZnJvbSBvcy5lbnZpcm9uLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgZGVsIG9zLmVudmly
b25bZW52X3Zhcl0KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKIAogY2xhc3Mg
RmlyZWZveChCcm93c2VyU2V0dXApOgogICAgIG5hbWUgPSAiZmlyZWZveCIKQEAgLTI0Myw5ICsy
NTMsOSBAQCBDb25zaWRlciBpbnN0YWxsaW5nIGNlcnR1dGlsIHZpYSB5b3VyIE9TIHBhY2thZ2Ug
bWFuYWdlciBvciBkaXJlY3RseS4iIiIpCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiUnVubmlu
ZyBpbiBoZWFkbGVzcyBtb2RlLCBwYXNzIC0tbm8taGVhZGxlc3MgdG8gZGlzYWJsZSIpCiAKICAg
ICAgICAgIyBUdXJuIG9mZiBGaXJlZm94IFdlYlJUQyBJQ0UgbG9nZ2luZyBvbiBXUFQgKHR1cm5l
ZCBvbiBieSBtb3pydW5uZXIpCi0gICAgICAgIG9zLnVuc2V0ZW52KCdSX0xPR19MRVZFTCcpCi0g
ICAgICAgIG9zLnVuc2V0ZW52KCdSX0xPR19ERVNUSU5BVElPTicpCi0gICAgICAgIG9zLnVuc2V0
ZW52KCdSX0xPR19WRVJCT1NFJykKKyAgICAgICAgc2FmZV91bnNldGVudignUl9MT0dfTEVWRUwn
KQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19ERVNUSU5BVElPTicpCisgICAgICAgIHNh
ZmVfdW5zZXRlbnYoJ1JfTE9HX1ZFUkJPU0UnKQogCiAgICAgICAgICMgQWxsb3cgV2ViUlRDIHRl
c3RzIHRvIGNhbGwgZ2V0VXNlck1lZGlhLgogICAgICAgICBrd2FyZ3NbImV4dHJhX3ByZWZzIl0u
YXBwZW5kKCJtZWRpYS5uYXZpZ2F0b3Iuc3RyZWFtcy5mYWtlPXRydWUiKQpAQCAtNzA1LDggKzcx
NSw5IEBAIGRlZiBzZXR1cF9sb2dnaW5nKGt3YXJncywgZGVmYXVsdF9jb25maWc9Tm9uZSwgZm9y
bWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogCiBkZWYgc2V0dXBfd3B0cnVubmVyKHZlbnYsIHByb21w
dD1UcnVlLCBpbnN0YWxsX2Jyb3dzZXI9RmFsc2UsICoqa3dhcmdzKToKICAgICBmcm9tIHdwdHJ1
bm5lciBpbXBvcnQgd3B0Y29tbWFuZGxpbmUKKyAgICBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1z
CiAKLSAgICBrd2FyZ3MgPSB1dGlscy5Ld2FyZ3Moa3dhcmdzLml0ZXJpdGVtcygpKQorICAgIGt3
YXJncyA9IHV0aWxzLkt3YXJncyhpdGVyaXRlbXMoa3dhcmdzKSkKIAogICAgIHByb2R1Y3RfcGFy
dHMgPSBrd2FyZ3NbInByb2R1Y3QiXS5zcGxpdCgiOiIpCiAgICAga3dhcmdzWyJwcm9kdWN0Il0g
PSBwcm9kdWN0X3BhcnRzWzBdLnJlcGxhY2UoIi0iLCAiXyIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dC90ZXN0ZmlsZXMucHkKaW5kZXggY2YxMmE1OWM4ZTY4YTcwZjc4MjU2M2E4MWMxNTExMjQyOTYy
ZWRmMy4uZjI5NjBlOGY1MWU0NDVlM2Y2ZjUzYmE4ZTdjMDE0NWFhNTA3MjAzOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdGZpbGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIGRlZiBhZmZl
Y3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdlZCwgICMgdHlwZTogSXRlcmFibGVbVGV4dF0KICAg
ICBub250ZXN0c19jaGFuZ2VkID0gc2V0KGZpbGVzX2NoYW5nZWQpCiAgICAgd3B0X21hbmlmZXN0
ID0gbG9hZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoLCBtYW5pZmVzdF91cGRhdGUpCiAKLSAgICB0
ZXN0X3R5cGVzID0gWyJ0ZXN0aGFybmVzcyIsICJyZWZ0ZXN0IiwgIndkc3BlYyJdCisgICAgdGVz
dF90eXBlcyA9IFsiY3Jhc2h0ZXN0IiwgInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVj
Il0KICAgICBzdXBwb3J0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9vdCwgcGF0aCkKICAg
ICAgICAgICAgICAgICAgICAgIGZvciBfLCBwYXRoLCBfIGluIHdwdF9tYW5pZmVzdC5pdGVydHlw
ZXMoInN1cHBvcnQiKX0KICAgICB3ZHNwZWNfdGVzdF9maWxlcyA9IHtvcy5wYXRoLmpvaW4od3B0
X3Jvb3QsIHBhdGgpCkBAIC0yNzgsOCArMjc4LDggQEAgZGVmIGFmZmVjdGVkX3Rlc3RmaWxlcyhm
aWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtUZXh0XQogICAgICAgICAgICAgZnVsbF9w
YXRoID0gb3MucGF0aC5qb2luKHdwdF9yb290LCByZXBvX3BhdGhbMTpdLnJlcGxhY2UoIi8iLCBv
cy5wYXRoLnNlcCkpCiAgICAgICAgIG5vbnRlc3RfY2hhbmdlZF9wYXRocy5hZGQoKGZ1bGxfcGF0
aCwgcmVwb19wYXRoKSkKIAotICAgIGludGVyZmFjZV9uYW1lID0gbGFtYmRhIHg6IG9zLnBhdGgu
c3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh4KSlbMF0KLSAgICBpbnRlcmZhY2VzX2NoYW5nZWRf
bmFtZXMgPSBtYXAoaW50ZXJmYWNlX25hbWUsIGludGVyZmFjZXNfY2hhbmdlZCkKKyAgICBpbnRl
cmZhY2VzX2NoYW5nZWRfbmFtZXMgPSBbb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1l
KGludGVyZmFjZSkpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbnRl
cmZhY2UgaW4gaW50ZXJmYWNlc19jaGFuZ2VkXQogCiAgICAgZGVmIGFmZmVjdGVkX2J5X3dkc3Bl
Yyh0ZXN0KToKICAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBib29sCkBAIC0zMjQsOSArMzI0LDkg
QEAgZGVmIGFmZmVjdGVkX3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJs
ZVtUZXh0XQogCiAgICAgICAgICAgICB3aXRoIG9wZW4odGVzdF9mdWxsX3BhdGgsICJyYiIpIGFz
IGZoOgogICAgICAgICAgICAgICAgIHJhd19maWxlX2NvbnRlbnRzID0gZmgucmVhZCgpICAjIHR5
cGU6IGJ5dGVzCi0gICAgICAgICAgICAgICAgaWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0
aCgiXHhmZVx4ZmYiKToKKyAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5zdGFy
dHN3aXRoKGIiXHhmZVx4ZmYiKToKICAgICAgICAgICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9
IHJhd19maWxlX2NvbnRlbnRzLmRlY29kZSgidXRmLTE2YmUiLCAicmVwbGFjZSIpICAjIHR5cGU6
IFRleHQKLSAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dpdGgo
Ilx4ZmZceGZlIik6CisgICAgICAgICAgICAgICAgZWxpZiByYXdfZmlsZV9jb250ZW50cy5zdGFy
dHN3aXRoKGIiXHhmZlx4ZmUiKToKICAgICAgICAgICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9
IHJhd19maWxlX2NvbnRlbnRzLmRlY29kZSgidXRmLTE2bGUiLCAicmVwbGFjZSIpCiAgICAgICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9IHJhd19m
aWxlX2NvbnRlbnRzLmRlY29kZSgidXRmOCIsICJyZXBsYWNlIikKQEAgLTM5Niw3ICszOTYsNyBA
QCBkZWYgcnVuX2NoYW5nZWRfZmlsZXMoKiprd2FyZ3MpOgogICAgIHNlcGFyYXRvciA9ICJcMCIg
aWYga3dhcmdzWyJudWxsIl0gZWxzZSAiXG4iCiAKICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQoY2hh
bmdlZCk6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3MucGF0aC5yZWxwYXRoKGl0ZW0uZW5j
b2RlKCJ1dGY4IiksIHdwdF9yb290KSArIHNlcGFyYXRvcikKKyAgICAgICAgc3lzLnN0ZG91dC53
cml0ZShvcy5wYXRoLnJlbHBhdGgoc2l4LmVuc3VyZV9zdHIoaXRlbSksIHdwdF9yb290KSArIHNl
cGFyYXRvcikKIAogCiBkZWYgcnVuX3Rlc3RzX2FmZmVjdGVkKCoqa3dhcmdzKToKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQppbmRleCAyNWI2NmU3
ZDkyMmY1NGVkZjE5N2JhYWFmNDJjMjZjOWZjZTA0NjIxLi5lN2MzMmEzNjIxMTg2MDg2MTAyZDVi
NDRhYWRlM2M3ZjE3NWYwN2FhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X2Jyb3dzZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5CkBAIC0xNSwxMSArMTUsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3Zl
cnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgc2FmYXJpID0gYnJvd3Nlci5TYWZhcmko
bG9nZ2VyKQogCiAgICAgIyBTYWZhcmkKLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92
YWx1ZSA9ICdJbmNsdWRlZCB3aXRoIFNhZmFyaSAxMi4xICgxNDYwNy4xLjExKScKKyAgICBtb2Nr
ZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInSW5jbHVkZWQgd2l0aCBTYWZhcmkgMTIu
MSAoMTQ2MDcuMS4xMSknCiAgICAgYXNzZXJ0IHNhZmFyaS52ZXJzaW9uKHdlYmRyaXZlcl9iaW5h
cnk9InNhZmFyaWRyaXZlciIpID09ICcxMi4xICgxNDYwNy4xLjExKScKIAogICAgICMgU2FmYXJp
IFRlY2hub2xvZ3kgUHJldmlldwotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2Nywg
MTM2MDcuMS45LjAuMSknCisgICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBi
J0luY2x1ZGVkIHdpdGggU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2
MDcuMS45LjAuMSknCiAgICAgYXNzZXJ0IHNhZmFyaS52ZXJzaW9uKHdlYmRyaXZlcl9iaW5hcnk9
InNhZmFyaWRyaXZlciIpID09ICdUZWNobm9sb2d5IFByZXZpZXcgKFJlbGVhc2UgNjcsIDEzNjA3
LjEuOS4wLjEpJwogCiBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnKQpAQCAt
MzAsMTEgKzMwLDExIEBAIGRlZiB0ZXN0X3NhZmFyaV92ZXJzaW9uX2Vycm9ycyhtb2NrZWRfY2hl
Y2tfb3V0cHV0KToKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24oKSBpcyBOb25lCiAKICAgICAj
IGBzYWZhcmlkcml2ZXIgLS12ZXJzaW9uYCByZXR1cm4gZ2liYmVyaXNoCi0gICAgbW9ja2VkX2No
ZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZ2liYmVyaXNoJworICAgIG1vY2tlZF9jaGVja19v
dXRwdXQucmV0dXJuX3ZhbHVlID0gYidnaWJiZXJpc2gnCiAgICAgYXNzZXJ0IHNhZmFyaS52ZXJz
aW9uKHdlYmRyaXZlcl9iaW5hcnk9InNhZmFyaWRyaXZlciIpIGlzIE5vbmUKIAogICAgICMgYHNh
ZmFyaWRyaXZlciAtLXZlcnNpb25gIGZhaWxzIChhcyBpdCBkb2VzIGZvciBTYWZhcmkgPD0xMi4w
KQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1v
Y2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hl
Y2tfb3V0cHV0LnNpZGVfZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwg
J2NtZCcpCiAgICAgYXNzZXJ0IHNhZmFyaS52ZXJzaW9uKHdlYmRyaXZlcl9iaW5hcnk9InNhZmFy
aWRyaXZlciIpIGlzIE5vbmUKIApAQCAtNDQsMTEgKzQ0LDExIEBAIGRlZiB0ZXN0X3dlYmtpdGd0
a19taW5pYnJvd3Nlcl92ZXJzaW9uKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIHdlYmtpdGd0
a19taW5pYnJvd3NlciA9IGJyb3dzZXIuV2ViS2l0R1RLTWluaUJyb3dzZXIobG9nZ2VyKQogCiAg
ICAgIyBzdGFibGUgdmVyc2lvbgotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ1dlYktpdEdUSyAyLjI2LjFcbicKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92
YWx1ZSA9IGInV2ViS2l0R1RLIDIuMjYuMVxuJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgPT0gJzIuMjYuMScKIAogICAgICMg
bmlnaHRseSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
V2ViS2l0R1RLIDIuMjcuMSAocjI1MDgyMylcbicKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJl
dHVybl92YWx1ZSA9IGInV2ViS2l0R1RLIDIuMjcuMSAocjI1MDgyMylcbicKICAgICBhc3NlcnQg
d2Via2l0Z3RrX21pbmlicm93c2VyLnZlcnNpb24oYmluYXJ5PSdNaW5pQnJvd3NlcicpID09ICcy
LjI3LjEgKHIyNTA4MjMpJwogCiBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQn
KQpAQCAtNTksMTEgKzU5LDExIEBAIGRlZiB0ZXN0X3dlYmtpdGd0a19taW5pYnJvd3Nlcl92ZXJz
aW9uX2Vycm9ycyhtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBhc3NlcnQgd2Via2l0Z3RrX21p
bmlicm93c2VyLnZlcnNpb24oKSBpcyBOb25lCiAKICAgICAjIGBNaW5pQnJvd3NlciAtLXZlcnNp
b25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1
ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBi
J2dpYmJlcmlzaCcKICAgICBhc3NlcnQgd2Via2l0Z3RrX21pbmlicm93c2VyLnZlcnNpb24oYmlu
YXJ5PSdNaW5pQnJvd3NlcicpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2VyIC0tdmVyc2lv
bmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIE1pbmlCcm93c2VyIDw9IDIuMjYuMCkKLSAgICBtb2Nr
ZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdkdW1teScKKyAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnJldHVybl92YWx1ZSA9IGInZHVtbXknCiAgICAgbW9ja2VkX2NoZWNrX291dHB1dC5z
aWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKQogICAg
IGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2Vy
JykgaXMgTm9uZQogCkBAIC05MywxMSArOTMsMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmli
cm93c2VyX2ZpbmRfYmluYXJ5KG1vY2tlZF9vc19wYXRoX2lzZmlsZSk6CiAgICAgIyBGb3VuZCBv
biB0aGUgZGVmYXVsdCBEZWJpYW4gcGF0aCBmb3IgQU1ENjQgKGdjYyBhdmFpbGFibGUgYnV0IGdp
dmVzIGFuIGVycm9yKQogICAgIGRlYmlhbl9taW5pYnJvd3Nlcl9wYXRoX2FtZDY0ID0gJy91c3Iv
bGliL3g4Nl82NC1saW51eC1nbnUvd2Via2l0Mmd0ay00LjAvTWluaUJyb3dzZXInCiAgICAgbW9j
a2VkX29zX3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGggaW4gW2Rl
Ymlhbl9taW5pYnJvd3Nlcl9wYXRoX2FtZDY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICB3aXRoIG1v
Y2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfb3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gJ2Vycm9y
Jywgc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigxLCAnY21kJykp
OgorICAgIHdpdGggbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5f
dmFsdWUgPSBiJ2Vycm9yJywgc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NF
cnJvcigxLCAnY21kJykpOgogICAgICAgICBhc3NlcnQgd2Via2l0Z3RrX21pbmlicm93c2VyLmZp
bmRfYmluYXJ5KCkgPT0gZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQKIAogICAgICAgICAj
IEZvdW5kIG9uIHRoZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBUk02NCAoZ2NjIGF2YWlsYWJs
ZSkKICAgICAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYXJtNjQgPSAnL3Vzci9saWIvYWFy
Y2g2NC1saW51eC1nbnUvd2Via2l0Mmd0ay00LjAvTWluaUJyb3dzZXInCiAgICAgICAgIG1vY2tl
ZF9vc19wYXRoX2lzZmlsZS5zaWRlX2VmZmVjdCA9IGxhbWJkYSBwYXRoOiBwYXRoIGluIFtkZWJp
YW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCwgJy91c3IvYmluL2djYyddCi0gICAgICAgIHdpdGgg
bW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSAnYWFy
Y2g2NC1saW51eC1nbnUnKToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNo
ZWNrX291dHB1dCcsIHJldHVybl92YWx1ZSA9IGInYWFyY2g2NC1saW51eC1nbnUnKToKICAgICAg
ICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIuZmluZF9iaW5hcnkoKSA9PSBkZWJp
YW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3Rlc3RzL3Rlc3RfbWFya2Rvd24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVjOWFkOWM0ODkwNjc2NjYyNGVj
NTk0Yzk5NGQ1MmU3MGM5NmZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfbWFya2Rvd24u
cHkKQEAgLTAsMCArMSwzNSBAQAorZnJvbSB0b29scy53cHQgaW1wb3J0IG1hcmtkb3duCisKK2Rl
ZiB0ZXN0X2Zvcm1hdF9jb21tZW50X3RpdGxlKCk6CisgICAgYXNzZXJ0ICcjIEJyb3dzZXIgIycg
PT0gbWFya2Rvd24uZm9ybWF0X2NvbW1lbnRfdGl0bGUoImJyb3dzZXIiKQorICAgIGFzc2VydCAn
IyBCcm93c2VyIChjaGFubmVsKSAjJyA9PSBtYXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgi
YnJvd3NlcjpjaGFubmVsIikKKworZGVmIHRlc3RfbWFya2Rvd25fYWRqdXN0KCk6CisgICAgYXNz
ZXJ0IHUnXFx0JyA9PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1x0JykKKyAgICBhc3NlcnQg
dSdcXHInID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHInKQorICAgIGFzc2VydCB1J1xc
bicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdcbicpCisgICAgYXNzZXJ0IHUnJyA9PSBt
YXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ2AnKQorICAgIGFzc2VydCB1J1xcfCcgPT0gbWFya2Rv
d24ubWFya2Rvd25fYWRqdXN0KCd8JykKKyAgICBhc3NlcnQgdSdcXHRcXHJcXG5cXHwnID09IG1h
cmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHRcclxuYHwnKQorCityZXN1bHQgPSAnJworZGVmIGxv
Zyh0ZXh0KToKKyAgICBnbG9iYWwgcmVzdWx0CisgICAgcmVzdWx0ICs9IHRleHQKKworZGVmIHRl
c3RfdGFibGUoKToKKyAgICBnbG9iYWwgcmVzdWx0CisgICAgaGVhZGluZ3MgPSBbJ2gxJywnaDIn
XQorICAgIGRhdGEgPSBbWycwJywgJzEnXV0KKyAgICBtYXJrZG93bi50YWJsZShoZWFkaW5ncywg
ZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgaDEgfCBoMiB8IgorICAgICAgICAgICAgInwtLS0t
fC0tLS18IgorICAgICAgICAgICAgInwgMCAgfCAxICB8IikgPT0gcmVzdWx0CisKKyAgICByZXN1
bHQgPSAnJworICAgIGRhdGEuYXBwZW5kKFsnYWFhJywgJ2JiJ10pCisgICAgbWFya2Rvd24udGFi
bGUoaGVhZGluZ3MsIGRhdGEsIGxvZykKKyAgICBhc3NlcnQgKCJ8ICBoMSB8IGgyIHwiCisgICAg
ICAgICAgICAifC0tLS0tfC0tLS18IgorICAgICAgICAgICAgInwgMCAgIHwgMSAgfCIKKyAgICAg
ICAgICAgICJ8IGFhYSB8IGJiIHwiKSA9PSByZXN1bHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2
bGlzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQppbmRleCBlYzJhNmI4OTlkNWQxYTkyN2RjYWQx
ZjlhNzU4M2Y5ODdhM2FkOTQ3Li4zMDIwOGY0Y2Y2OGQ3OTU5NjZlNzg1OGRhYTA3MzBiNjhmYTNl
OTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5CkBAIC0xMSwxMCArMTEsMTMgQEAgZGVmIHRlc3RfY2FsY3VsYXRlX2N1dG9mZl9kYXRlKCk6
CiAKIAogZGVmIHRlc3RfcGFyc2VfZXBvY2goKToKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9l
cG9jaChiIjEwaCIpID09IDM2MDAwCi0gICAgYXNzZXJ0IHJldmxpc3QucGFyc2VfZXBvY2goYiIx
MGQiKSA9PSA4NjQwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaChiIjEwdyIpID09
IDYwNDgwMDAKKyAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaCgiMTBoIikgPT0gMzYwMDAK
KyAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaCgiMTBkIikgPT0gODY0MDAwCisgICAgYXNz
ZXJ0IHJldmxpc3QucGFyc2VfZXBvY2goIjEwdyIpID09IDYwNDgwMDAKIAorZGVmIGNoZWNrX3Jl
dmlzaW9ucyh0YWdnZWRfcmV2aXNpb25zLCBleHBlY3RlZF9yZXZpc2lvbnMpOgorICAgIGZvciB0
YWdnZWQsIGV4cGVjdGVkIGluIHppcCh0YWdnZWRfcmV2aXNpb25zLCBleHBlY3RlZF9yZXZpc2lv
bnMpOgorICAgICAgICBhc3NlcnQgdGFnZ2VkID09IGV4cGVjdGVkCiAKIEBtb2NrLnBhdGNoKCdz
dWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCiBkZWYgdGVzdF9nZXRfZXBvY2hfcmV2aXNpb25zKG1v
Y2tlZF9jaGVja19vdXRwdXQpOgpAQCAtNTAsMTYgKzUzLDkgQEAgbWVyZ2VfcHJfQyBDIDQ3NTIw
MCBfdHVlXwogbWVyZ2VfcHJfQiBCIDQ1MzYwMCBfdHVlXwogbWVyZ2VfcHJfQSBBIDM4ODgwMCBf
bW9uXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNp
b25zKGVwb2NoLCB1bnRpbCwgOCkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9
PSAnTicKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnTScKLSAgICBhc3Nl
cnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnSycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlz
b25zLm5leHQoKSA9PSAnSicKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAn
RycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBhc3NlcnQg
dGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnQycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25z
Lm5leHQoKSA9PSAnQScKLSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0g
MCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3Qu
Z2V0X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDgpCisgICAgY2hlY2tfcmV2aXNpb25z
KHRhZ2dlZF9yZXZpc2lvbnMsIFsnTicsICdNJywgJ0snLCAnSicsICdHJywgJ0YnLCAnQycsICdB
J10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVy
YXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogbWF4X2NvdW50IHdpdGggZW5vdWdoIGNh
bmRpZGF0ZSBpdGVtcyBpbiB0aGUgcmV2aXNpb24gbGlzdApAQCAtODIsMTMgKzc4LDkgQEAgbWVy
Z2VfcHJfRCBEIDY0ODAwMCBfdGh1XwogbWVyZ2VfcHJfQyBDIDU2MTYwMCBfd2VkXwogbWVyZ2Vf
cHJfQiBCIDQ3NTIwMCBfdGh1XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jl
dmlzb25zLm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9
PSAnRicKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRScKLSAgICBhc3Nl
cnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRCcKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlz
b25zLm5leHQoKSA9PSAnQycKLSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkg
PT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxp
c3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNp
b25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsnRycsICdGJywgJ0UnLCAnRCcsICdDJ10pCisgICAgYXNz
ZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0
ZWQKIAogCiAgICAgIyBjaGVjazogbWF4X2NvdW50IHdpdGggbGVzcyByZXR1cm5lZCBjYW5kaWRh
dGVzIGl0ZW1zIHRoYW4gdGhlIG5lZWRlZApAQCAtMTA3LDEwICs5OSw5IEBAIG1lcmdlX3ByX0gg
SCA5OTM2MDAgX21vbl8KIG1lcmdlX3ByX0cgRyA5MDcyMDAgX3N1bl8KIG1lcmdlX3ByX0YgRiA4
MjA4MDAgX3NhdF8KICcnJwotICAgIHRhZ2dlZF9yZXZpc29ucyA9IHJldmxpc3QuZ2V0X2Vwb2No
X3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDUpCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5u
ZXh0KCkgPT0gJ0cnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0gJ0YnCi0g
ICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc29ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4
aGF1c3RlZAorICAgIHRhZ2dlZF9yZXZpc2lvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lv
bnMoZXBvY2gsIHVudGlsLCA1KQorICAgIGNoZWNrX3JldmlzaW9ucyh0YWdnZWRfcmV2aXNpb25z
LCBbJ0cnLCAnRiddKQorICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNpb25zKSkgPT0g
MCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCiAKIAogICAgICMgY2hlY2s6IGluaXRpYWwgdW50aWwg
dmFsdWUgaXMgb24gYW4gZXBvY2ggYm91bmRhcnkKQEAgLTEzNCwxMCArMTI1LDkgQEAgbWVyZ2Vf
cHJfSCBIIDEyOTYwMDAgX3dlZF8KIG1lcmdlX3ByX0cgRyA5NTA0MDAgX21vbl8KIG1lcmdlX3By
X0YgRiA5MjE2MDAgX3N1ZF8KICcnJwotICAgIHRhZ2dlZF9yZXZpc29ucyA9IHJldmxpc3QuZ2V0
X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWwsIDMpCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZp
c29ucy5uZXh0KCkgPT0gJ0cnCi0gICAgYXNzZXJ0IHRhZ2dlZF9yZXZpc29ucy5uZXh0KCkgPT0g
J0YnCi0gICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc29ucykpID09IDAgICMgZ2VuZXJh
dG9yIGV4aGF1c3RlZAorICAgIHRhZ2dlZF9yZXZpc2lvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9y
ZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAzKQorICAgIGNoZWNrX3JldmlzaW9ucyh0YWdnZWRfcmV2
aXNpb25zLCBbJ0cnLCAnRiddKQorICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNpb25z
KSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCiAKIAogICAgICMgY2hlY2s6IHVudGlsIGFs
aWduZWQgd2l0aCBNb25kYXksIDUgSmFudWFyeSAxOTcwIDA6MDA6MDAgKDM0NTYwMCkKQEAgLTE1
OCw2ICsxNDgsNiBAQCBtZXJnZV9wcl9IIEggMTE4MDgwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1
MDQwMCBfbW9uXwogbWVyZ2VfcHJfRiBGIDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jl
dmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMSkKLSAg
ICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBhc3NlcnQgbGVuKGxp
c3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVzdGVkCisgICAgdGFn
Z2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhlcG9jaCwgdW50aWws
IDEpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsnRiddKQorICAgIGFz
c2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNpb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVz
dGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Rlc3RmaWxlcy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVz
LnB5CmluZGV4IDMzMTM1ZGZkYzJkNWI1YWUwYzcyMmRjZTM0ZjM1YjU4MTI3YmYzMzkuLjlmZDZj
NmY5Yjg1MTUzN2RmMDQ0Mjg2MTIzYmE2NGM5YjNlMTllODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rf
dGVzdGZpbGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5CkBAIC0xLDUgKzEsNyBAQAor
aW1wb3J0IG9zLnBhdGgKIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKIAorZnJvbSB0b29scy5tYW5p
ZmVzdC5tYW5pZmVzdCBpbXBvcnQgTWFuaWZlc3QKIGZyb20gdG9vbHMud3B0IGltcG9ydCB0ZXN0
ZmlsZXMKIAogCkBAIC0xMSwzICsxMywzNCBAQCBkZWYgdGVzdF9nZXRyZXZpc2hfa3dhcmcoKToK
IGRlZiB0ZXN0X2dldHJldmlzaF9pbXBsaWNpdCgpOgogICAgIHdpdGggcGF0Y2goInRvb2xzLndw
dC50ZXN0ZmlsZXMuYnJhbmNoX3BvaW50IiwgcmV0dXJuX3ZhbHVlPXUiYmFzZSIpOgogICAgICAg
ICBhc3NlcnQgdGVzdGZpbGVzLmdldF9yZXZpc2goKSA9PSBiImJhc2UuLkhFQUQiCisKKworZGVm
IHRlc3RfYWZmZWN0ZWRfdGVzdGZpbGVzKCk6CisgICAgbWFuaWZlc3RfanNvbiA9IHsKKyAgICAg
ICAgIml0ZW1zIjogeworICAgICAgICAgICAgImNyYXNodGVzdCI6IHsKKyAgICAgICAgICAgICAg
ICAiYSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImIiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAiYyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vLWNyYXNoLmh0bWwi
OiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2RlZmdoMTIzNDU2IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJudWxsIiwge31dLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInVybF9iYXNlIjogIi8iLAorICAgICAgICAidmVyc2lvbiI6IDgsCisgICAgfQor
ICAgIG1hbmlmZXN0ID0gTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwgbWFuaWZlc3RfanNvbikKKyAg
ICB3aXRoIHBhdGNoKCJ0b29scy53cHQudGVzdGZpbGVzLmxvYWRfbWFuaWZlc3QiLCByZXR1cm5f
dmFsdWU9bWFuaWZlc3QpOgorICAgICAgICAjIERlcGVuZGVudCBhZmZlY3RlZCB0ZXN0cyBhcmUg
ZGV0ZXJtaW5lZCBieSB3YWxraW5nIHRoZSBmaWxlc3lzdGVtLAorICAgICAgICAjIHdoaWNoIGRv
ZXNuJ3Qgd29yayBpbiBvdXIgdGVzdCBzZXR1cC4gV2Ugd291bGQgbmVlZCB0byByZWZhY3Rvcgor
ICAgICAgICAjIHRlc3RmaWxlcy5hZmZlY3RlZF90ZXN0ZmlsZXMgb3IgaGF2ZSBhIG1vcmUgY29t
cGxleCB0ZXN0IHNldHVwIHRvCisgICAgICAgICMgc3VwcG9ydCB0ZXN0aW5nIHRob3NlLgorICAg
ICAgICBmdWxsX3Rlc3RfcGF0aCA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIHRlc3RmaWxl
cy53cHRfcm9vdCwgImEiLCAiYiIsICJjIiwgImZvby1jcmFzaC5odG1sIikKKyAgICAgICAgdGVz
dHNfY2hhbmdlZCwgXyA9IHRlc3RmaWxlcy5hZmZlY3RlZF90ZXN0ZmlsZXMoW2Z1bGxfdGVzdF9w
YXRoXSkKKyAgICAgICAgYXNzZXJ0IHRlc3RzX2NoYW5nZWQgPT0gc2V0KFtmdWxsX3Rlc3RfcGF0
aF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3dwdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5CmluZGV4IDY1
Njk1ODBlOWZmNDcxNzg0ZTMwN2I3ZTg0NTU1OTM1ZGVjOTk1ODYuLmY4OTdiNjg4YWQ2ZjY4MmJl
OWQ3NjlkYTk4NTc5Yzc4ODUwNWMwOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RzL3Rlc3Rfd3B0LnB5CkBAIC0xLDEyICsxLDE4IEBACiBpbXBvcnQgZXJybm8KIGltcG9ydCBv
cworaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQg
c3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1w
b3J0IHVybGxpYjIKKwordHJ5OgorICAgIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9w
ZW4KKyAgICBmcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IKK2V4Y2VwdCBJbXBvcnRF
cnJvcjoKKyAgICBmcm9tIHVybGxpYjIgaW1wb3J0IHVybG9wZW4sIFVSTEVycm9yCiAKIGltcG9y
dCBweXRlc3QKIApAQCAtMzgsNiArNDQsOSBAQCBkZWYgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3Rf
cGF0aCgpOgogCiBAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIsIGF1dG91c2U9VHJ1ZSkK
IGRlZiBpbml0X21hbmlmZXN0KCk6CisgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEv
dmlydHVhbGVudi9pc3N1ZXMvMTcxMAorICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMyBh
bmQgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgorICAgICAgICBweXRlc3QueGZhaWwo
cmVhc29uPSJ2aXJ0dWFsZW52IGFjdGl2YXRpb24gZmFpbHMgaW4gV2luZG93cyBmb3IgcHl0aG9u
MyIpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CiAgICAg
ICAgIHdwdC5tYWluKGFyZ3Y9WyJtYW5pZmVzdCIsICItLW5vLWRvd25sb2FkIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tcGF0aCIsIGdldF9wZXJzaXN0ZW50X21hbmlmZXN0X3BhdGgoKV0p
CkBAIC0yMzMsOSArMjQyLDkgQEAgZGVmIHRlc3RfcnVuX3ZlcmlmeV91bnN0YWJsZSh0ZW1wX3Rl
c3QpOgogQHB5dGVzdC5tYXJrLnJlbW90ZV9uZXR3b3JrCiBkZWYgdGVzdF9pbnN0YWxsX2Nocm9t
ZWRyaXZlcigpOgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICBjaHJv
bWVkcml2ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJf
dmVudiIsICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQorICAgICAgICBjaHJvbWVkcml2
ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52
X2RpcigpLCAiU2NyaXB0cyIsICJjaHJvbWVkcml2ZXIuZXhlIikKICAgICBlbHNlOgotICAgICAg
ICBjaHJvbWVkcml2ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jv
b3QsICJfdmVudiIsICJiaW4iLCAiY2hyb21lZHJpdmVyIikKKyAgICAgICAgY2hyb21lZHJpdmVy
X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0aHMucmVwb19yb290LCB3cHQudmVudl9k
aXIoKSwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGNocm9t
ZWRyaXZlcl9wYXRoKToKICAgICAgICAgb3MudW5saW5rKGNocm9tZWRyaXZlcl9wYXRoKQogICAg
IHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBleGNpbmZvOgpAQCAtMjUxLDkgKzI2
MCw5IEBAIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJpdmVyKCk6CiAgICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1
ZXMvMTcwNzQiKQogZGVmIHRlc3RfaW5zdGFsbF9maXJlZm94KCk6CiAgICAgaWYgc3lzLnBsYXRm
b3JtID09ICJkYXJ3aW4iOgotICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2Nh
bHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAiRmlyZWZv
eCBOaWdodGx5LmFwcCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAi
RmlyZWZveCBOaWdodGx5LmFwcCIpCiAgICAgZWxzZToKLSAgICAgICAgZnhfcGF0aCA9IG9zLnBh
dGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVudiIsICJicm93c2VycyIsICJu
aWdodGx5IiwgImZpcmVmb3giKQorICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5s
b2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGlyKCksICJicm93c2VycyIsICJuaWdodGx5
IiwgImZpcmVmb3giKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ4X3BhdGgpOgogICAgICAgICBz
aHV0aWwucm10cmVlKGZ4X3BhdGgpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQp
IGFzIGV4Y2luZm86CkBAIC0zODgsOSArMzk3LDkgQEAgZGVmIHRlc3Rfc2VydmUoKToKICAgICAg
ICAgICAgIGlmIHRpbWUudGltZSgpIC0gc3RhcnQgPiA2MDoKICAgICAgICAgICAgICAgICBhc3Nl
cnQgRmFsc2UsICJzZXJ2ZXIgZGlkIG5vdCBzdGFydCByZXNwb25kaW5nIHdpdGhpbiA2MHMiCiAg
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVzcCA9IHVybGxpYjIudXJsb3Blbigi
aHR0cDovL3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDAiKQorICAgICAgICAgICAgICAgIHJlc3AgPSB1
cmxvcGVuKCJodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCiAgICAgICAgICAgICAgICAg
cHJpbnQocmVzcCkKLSAgICAgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yOgorICAgICAg
ICAgICAgZXhjZXB0IFVSTEVycm9yOgogICAgICAgICAgICAgICAgIHByaW50KCJVUkxFcnJvciIp
CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAgICAgZWxzZToKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdzNjLWltcG9ydC5sb2cKaW5kZXggNWM0M2Yz
Y2E2YjI2YWE2MDU2NmFjZmZjMzBlOGVjOGVhMmI5NjRlMy4uNWJmMjU5OTkyMmFhZDU2MzM0Y2Mx
YmFkYTE2OWJiY2NmZDg2MWI4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdzNjLWltcG9ydC5sb2cKQEAgLTE2LDYgKzE2LDcgQEAgTm9uZQogTGlzdCBvZiBmaWxlczoK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90
ZXN0cy9sYXRlc3RfbW96aWxsYV9jZW50cmFsLnR4dAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L3Rlc3RfbWFya2Rvd24ucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3J1bi5weQog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RzL3Rlc3RfdGVzdGZpbGVzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQppbmRleCA2YTA0
NDQ3M2E2Yjc0OTgxMzQ1NjgzYWJiOTYwNTg4ZGU2NTM1YmZiLi44ZTNlMjZlMTM1YjRkMzc2YTQ5
MmFlYTVhZGJkMjQyNzk3YjAzZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKQEAgLTEs
NiArMSw3IEBACiBbdG94XQotZW52bGlzdCA9IHB5MjcKK2Vudmxpc3QgPSBweTI3LHB5MzUscHkz
NixweTM3LHB5MzgKIHNraXBzZGlzdD1UcnVlCitza2lwX21pc3NpbmdfaW50ZXJwcmV0ZXJzID0g
RmFsc2UKIAogW3Rlc3RlbnZdCiBkZXBzID0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3V0aWxzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkKaW5k
ZXggMmQ0Mjc3MTNlNGU4MjQ4NDViNmQ3ODcxYjYxY2Q2ZjExZWMyNTFmNi4uOWE2YzA2NDY3MTIw
NjRlMTgzZjM2NmRmZDU2MjlhMWI1MmU4MTE5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMu
cHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZGVmIGNhbGwoKmFyZ3MpOgogICAgICIiIgogICAgIGxvZ2dl
ci5kZWJ1ZygiICIuam9pbihhcmdzKSkKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBzdWJwcm9j
ZXNzLmNoZWNrX291dHB1dChhcmdzKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19v
dXRwdXQoYXJncykuZGVjb2RlKCd1dGY4JykKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQ
cm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCIlcyBleGl0ZWQgd2l0
aCByZXR1cm4gY29kZSAlaSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgKGUuY21kLCBlLnJl
dHVybmNvZGUpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYucHkKaW5kZXggNDAw
ZGViYzg4ZTQ2OTEwZDI2NDFlNzI4ZmM0YWRiODZhODg1NjhlMC4uMThlZGNjMDRmYjRkNTI4ZTY1
NjZkYTEwOTAyYTlhYzk2NGI0MmE2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFs
ZW52LnB5CkBAIC0zMiw3ICszMiw5IEBAIGNsYXNzIFZpcnR1YWxlbnYob2JqZWN0KToKIAogICAg
IEBwcm9wZXJ0eQogICAgIGRlZiBleGlzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRo
LmlzZGlyKHNlbGYucGF0aCkKKyAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGFsc28gZm9yIGxp
Yl9wYXRoIGJlY2F1c2UgZGlmZmVyZW50IHB5dGhvbiB2ZXJzaW9ucworICAgICAgICAjIGNyZWF0
ZSBkaWZmZXJlbnQgbGlicmFyeSBwYXRocy4KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIo
c2VsZi5wYXRoKSBhbmQgb3MucGF0aC5pc2RpcihzZWxmLmxpYl9wYXRoKQogCiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIGJyb2tlbl9saW5rKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5Cmlu
ZGV4IDkzMzAxZGQ4NmI0ZmZlMjAyOTAyYTQ5MjIwNGViYTY1MzdmYjUwZDUuLjM5NWRiMDM5NGRh
NjdjYWE4YmRjMWFkOWU2ODllNTgzMTc1MTkyYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkK
QEAgLTMxLDYgKzMxLDcgQEAgZGVmIGxvYWRfY29tbWFuZHMoKToKICAgICAgICAgICAgICAgICAg
ICAgInNjcmlwdCI6IHByb3BzWyJzY3JpcHQiXSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNl
ciI6IHByb3BzLmdldCgicGFyc2VyIiksCiAgICAgICAgICAgICAgICAgICAgICJwYXJzZV9rbm93
biI6IHByb3BzLmdldCgicGFyc2Vfa25vd24iLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAg
ICJweTNvbmx5IjogcHJvcHMuZ2V0KCJweTNvbmx5IiwgRmFsc2UpLAogICAgICAgICAgICAgICAg
ICAgICAiaGVscCI6IHByb3BzLmdldCgiaGVscCIpLAogICAgICAgICAgICAgICAgICAgICAidmly
dHVhbGVudiI6IHByb3BzLmdldCgidmlydHVhbGVudiIsIFRydWUpLAogICAgICAgICAgICAgICAg
ICAgICAiaW5zdGFsbCI6IHByb3BzLmdldCgiaW5zdGFsbCIsIFtdKSwKQEAgLTQwLDEzICs0MSwx
NCBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgIHJldHVybiBydgogCiAKLWRlZiBwYXJzZV9h
cmdzKGFyZ3YsIGNvbW1hbmRzKToKK2RlZiBwYXJzZV9hcmdzKGFyZ3YsIGNvbW1hbmRzPWxvYWRf
Y29tbWFuZHMoKSk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVudiIsIGFjdGlvbj0ic3RvcmUiLCBoZWxwPSJQYXRo
IHRvIGFuIGV4aXN0aW5nIHZpcnR1YWxlbnYgdG8gdXNlIikKICAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLXNraXAtdmVudi1zZXR1cCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSJza2lwX3ZlbnZfc2V0dXAiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0iV2hldGhlciB0byB1c2UgdGhlIHZpcnR1YWxlbnYgYXMtaXMuIE11c3Qgc2V0
IC0tdmVudiBhcyB3ZWxsIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWRlYnVnIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUnVuIHRoZSBkZWJ1Z2dlciBpbiBjYXNlIG9mIGFuIGV4
Y2VwdGlvbiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1weTMiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBoZWxwPSJSdW4gd2l0aCBweXRob24zIikKICAgICBzdWJwYXJzZXJzID0gcGFyc2Vy
LmFkZF9zdWJwYXJzZXJzKGRlc3Q9ImNvbW1hbmQiKQogICAgIGZvciBjb21tYW5kLCBwcm9wcyBp
biBpdGVyaXRlbXMoY29tbWFuZHMpOgogICAgICAgICBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoY29t
bWFuZCwgaGVscD1wcm9wc1siaGVscCJdLCBhZGRfaGVscD1GYWxzZSkKQEAgLTkzLDcgKzk1LDgg
QEAgZGVmIGNyZWF0ZV9jb21wbGV0ZV9wYXJzZXIoKToKICAgICBmb3IgY29tbWFuZCBpbiBjb21t
YW5kczoKICAgICAgICAgcHJvcHMgPSBjb21tYW5kc1tjb21tYW5kXQogCi0gICAgICAgIGlmIHBy
b3BzWyJ2aXJ0dWFsZW52Il06CisgICAgICAgIGlmIChwcm9wc1sidmlydHVhbGVudiJdIGFuZAor
ICAgICAgICAgICAgKG5vdCBwcm9wc1sicHkzb25seSJdIG9yIHN5cy52ZXJzaW9uX2luZm8ubWFq
b3IgPT0gMykpOgogICAgICAgICAgICAgc2V0dXBfdmlydHVhbGVudihOb25lLCBGYWxzZSwgcHJv
cHMpCiAKICAgICAgICAgc3VicGFyc2VyID0gaW1wb3J0X2NvbW1hbmQoJ3dwdCcsIGNvbW1hbmQs
IHByb3BzKVsxXQpAQCAtMTA4LDEyICsxMTEsMTYgQEAgZGVmIGNyZWF0ZV9jb21wbGV0ZV9wYXJz
ZXIoKToKICAgICByZXR1cm4gcGFyc2VyCiAKIAorZGVmIHZlbnZfZGlyKCk6CisgICAgcmV0dXJu
ICJfdmVudiIgKyBzdHIoc3lzLnZlcnNpb25faW5mb1swXSkKKworCiBkZWYgc2V0dXBfdmlydHVh
bGVudihwYXRoLCBza2lwX3ZlbnZfc2V0dXAsIHByb3BzKToKICAgICBpZiBza2lwX3ZlbnZfc2V0
dXAgYW5kIHBhdGggaXMgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTXVzdCBzZXQg
LS12ZW52IHdoZW4gLS1za2lwLXZlbnYtc2V0dXAgaXMgdXNlZCIpCiAgICAgc2hvdWxkX3NraXBf
c2V0dXAgPSBwYXRoIGlzIG5vdCBOb25lIGFuZCBza2lwX3ZlbnZfc2V0dXAKICAgICBpZiBwYXRo
IGlzIE5vbmU6Ci0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsICJfdmVudiIp
CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHZlbnZfZGlyKCkpCiAgICAg
dmVudiA9IHZpcnR1YWxlbnYuVmlydHVhbGVudihwYXRoLCBzaG91bGRfc2tpcF9zZXR1cCkKICAg
ICBpZiBub3Qgc2hvdWxkX3NraXBfc2V0dXA6CiAgICAgICAgIHZlbnYuc3RhcnQoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ1ODk2ZTZiZTJiZDUxZjRiNzhlOTcwM2NhZWZiOWI2NzJlMTBhNTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvTElDRU5TRQorKysgL2Rldi9u
dWxsCkBAIC0xLDMwICswLDAgQEAKLVczQyAzLWNsYXVzZSBCU0QgTGljZW5zZQotCi1odHRwOi8v
d3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDMtYnNkLWxpY2Vuc2UuaHRtbAotCi1S
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29y
a3MgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIGNvcHlyaWdodCBub3RpY2UsCi0gIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLSogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5
cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0qIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIFczQyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlCi0gIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsg
d2l0aG91dAotICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVx
dWlyZW1lbnRzLnR4dAppbmRleCAzY2QwMTQ0NmUyNWJjZWI0ZGFkZWY0ODI1OTExN2JkMDU3ZWE2
ZjQ4Li41MzEwNzIxYmJiOTBmYTk0YjkwYjRjMTBkMjAyZmM1YTEzYzA0ZDU4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHMudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQKQEAgLTEsOCAr
MSw5IEBACiBodG1sNWxpYj09MS4wLjEKLW1vemluZm89PTEuMS4wCi1tb3psb2c9PTUuMAotbW96
ZGVidWc9PTAuMS4xCi1waWxsb3c9PTYuMi4xCi11cmxsaWIzW3NlY3VyZV09PTEuMjUuNwotcmVx
dWVzdHM9PTIuMjIuMAotc2l4PT0xLjEzLjAKK21vemluZm89PTEuMi4xICAjIGh0dHBzOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEyMjYKK21vemxvZz09Ni4wCitt
b3pkZWJ1Zz09MC4yCisjIFBpbGxvdyA3IHJlcXVpcmVzIFB5dGhvbiAzCitwaWxsb3c9PTYuMi4y
ICAjIHB5dXA6IDw3LjAKK3VybGxpYjNbc2VjdXJlXT09MS4yNS45CityZXF1ZXN0cz09Mi4yMy4w
CitzaXg9PTEuMTUuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CmluZGV4IDRjYmI3YTVlYzAyOTNlZmYxZWYxOThh
MjFlY2RjOTBmZWNmNDE0MTEuLjE3NjcwNWYzYWY1MDhhY2IzMTE3ZDczZDVhYjRmMGMzMDYwMjQ2
NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19maXJlZm94LnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfZmlyZWZveC50eHQKQEAgLTEsMTEgKzEsMTAgQEAKIG1hcmlvbmV0dGVfZHJpdmVy
PT0zLjAuMAotbW96Y3Jhc2g9PTEuMS4wCi1tb3pkb3dubG9hZD09MS4yNi4wCittb3pjcmFzaD09
Mi4wLjAKIG1vemluc3RhbGw9PTIuMC4wCiBtb3psZWFrPT0wLjIKLW1vem5ldHdvcms9PTAuMjcK
K21vem5ldHdvcms9PTEuMS4wCiBtb3pwcm9jZXNzPT0xLjAuMAotbW96cHJvZmlsZT09Mi40LjAK
LW1venJ1bm5lcj09Ny43LjAKLW1venZlcnNpb249PTIuMi4wCi1wc3V0aWw9PTUuNi43Cittb3pw
cm9maWxlPT0yLjUuMAorbW96cnVubmVyPT03LjguMAorbW96dmVyc2lvbj09Mi4zLjAKK3BzdXRp
bD09NS43LjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1
aXJlbWVudHNfc2F1Y2UudHh0CmluZGV4IDMyYjVmNjRkMTRmZDAzZGY0ZWVhY2I1NzgzOTIxMGEy
NmEyODNmYTcuLmU5ZTk3NjQ3Nzk2ZTdmOTQwZjJlZWY5OGM3MmIxOTg3MWQzMjNjNzIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3JlcXVpcmVtZW50c19zYXVjZS50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3Nh
dWNlLnR4dApAQCAtMSwzICsxLDMgQEAKIG1venByb2Nlc3M9PTEuMC4wCiBzZWxlbml1bT09My4x
NDEuMAotcmVxdWVzdHM9PTIuMjIuMAorcmVxdWVzdHM9PTIuMjMuMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CmluZGV4IDhmMzIzYTMzODZjOTk3Y2JjZmEw
MTNlNjU4NTA4NjQ3MWRkZmEyMDguLjQyZTdhYmJiYWI0OTA5MjM3MDY1Y2IwMTI1ZGI3MTFhMTg2
MDc4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkK
QEAgLTEsNSArMSw0IEBACiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1p
bXBvcnQgQ29uZmlnUGFyc2VyCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHN5
cwpAQCAtNyw2ICs2LDggQEAgaW1wb3J0IHN5cwogZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVy
ZWRsb2cKIGZyb20gbW96bG9nLmhhbmRsZXJzIGltcG9ydCBCYXNlSGFuZGxlciwgU3RyZWFtSGFu
ZGxlcgogZnJvbSBtb3psb2cuZm9ybWF0dGVycyBpbXBvcnQgTWFjaEZvcm1hdHRlcgorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcworZnJvbSBzaXgubW92ZXMuY29uZmlncGFyc2VyIGltcG9ydCBD
b25maWdQYXJzZXIKIGZyb20gd3B0cnVubmVyIGltcG9ydCB3cHRjb21tYW5kbGluZSwgd3B0cnVu
bmVyCiAKIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkK
QEAgLTU4LDcgKzU5LDcgQEAgZGVmIHRlc3Rfc2V0dGluZ3MoKToKICAgICB9CiAKIGRlZiByZWFk
X2NvbmZpZygpOgotICAgIHBhcnNlciA9IENvbmZpZ1BhcnNlci5Db25maWdQYXJzZXIoKQorICAg
IHBhcnNlciA9IENvbmZpZ1BhcnNlcigpCiAgICAgcGFyc2VyLnJlYWQoInRlc3QuY2ZnIikKIAog
ICAgIHJ2ID0geyJnZW5lcmFsIjp7fSwKQEAgLTgzLDcgKzg0LDcgQEAgZGVmIHJ1bl90ZXN0cyhw
cm9kdWN0LCBrd2FyZ3MpOgogCiBkZWYgc2V0dGluZ3NfdG9fYXJndihzZXR0aW5ncyk6CiAgICAg
cnYgPSBbXQotICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZXR0aW5ncy5pdGVyaXRlbXMoKToKKyAg
ICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNldHRpbmdzKToKICAgICAgICAga2V5ID0g
Ii0tJXMiICUgbmFtZQogICAgICAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgICAgICBydi5hcHBl
bmQoa2V5KQpAQCAtMTA5LDcgKzExMCw3IEBAIGRlZiBydW4oY29uZmlnLCBhcmdzKToKIAogICAg
IGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0cz1bXSkKIAotICAgIGZvciBwcm9kdWN0LCBwcm9kdWN0
X3NldHRpbmdzIGluIGNvbmZpZ1sicHJvZHVjdHMiXS5pdGVyaXRlbXMoKToKKyAgICBmb3IgcHJv
ZHVjdCwgcHJvZHVjdF9zZXR0aW5ncyBpbiBpdGVyaXRlbXMoY29uZmlnWyJwcm9kdWN0cyJdKToK
ICAgICAgICAgaWYgYXJncy5wcm9kdWN0IGFuZCBwcm9kdWN0IG5vdCBpbiBhcmdzLnByb2R1Y3Q6
CiAgICAgICAgICAgICBjb250aW51ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5pIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdG94
LmluaQppbmRleCBhZDM1MDJlMDJhOWU4MTAxNjk0MGM4ZjM5ZjU2NTQwZjVhYjFmMjZkLi5jNTQ0
ZGE3YTk1ZDJhOTgyY2FiOGI2OGFmNTM3NDQwYjcxZmEwOTZiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3gu
aW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3RveC5pbmkKQEAgLTIsOCArMiw4IEBACiB4ZmFpbF9zdHJpY3Q9dHJ1ZQog
CiBbdG94XQotZW52bGlzdCA9IHB5Mjcte2Jhc2UsY2hyb21lLGVkZ2UsZmlyZWZveCxpZSxvcGVy
YSxzYWZhcmksc2F1Y2Usc2Vydm8sd2Via2l0LHdlYmtpdGd0a19taW5pYnJvd3NlcixlcGlwaGFu
eX0scHkzNi1iYXNlCi1za2lwX21pc3NpbmdfaW50ZXJwcmV0ZXJzID0gdHJ1ZQorZW52bGlzdCA9
IHB5Mjcte2Jhc2UsY2hyb21lLGVkZ2UsZmlyZWZveCxpZSxvcGVyYSxzYWZhcmksc2F1Y2Usc2Vy
dm8sd2Via2l0LHdlYmtpdGd0a19taW5pYnJvd3NlcixlcGlwaGFueX0se3B5MzUscHkzNixweTM3
LHB5Mzh9LWJhc2UKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVu
dl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0
LmxvZwppbmRleCA0MDZhNWZhZTI1NjQyNzIyODRhYzU3MDBjYzA0NmZiMGI2N2MxZjZhLi41OGU5
NzBhMGVkZjZlZGZjMTYwN2M3NjZhNzYzYmY5NTE1MGY2M2YzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2Mt
aW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMTQsNyArMTQsNiBAQCBQcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKIE5vbmUKIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvTUFOSUZFU1QuaW4KIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9S
RUFETUUucnN0CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL2FuZHJvaWRfd2VibGF5ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5k
cm9pZF93ZWJsYXllci5weQppbmRleCA5M2Y0ZDZiNjMwZDI4OGM3NWY4ODhjYjczMDRiYmY4YTQx
OTVkYjZjLi5mNzU1ODdkODM5ZmZmY2YwMzkwMTc3OWEwYjY1MTI2MTkwYjlkNDgxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJsYXllci5weQpAQCAtMTI0LDcgKzEyNCw3IEBA
IGNsYXNzIFdlYmxheWVyU2hlbGwoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlz
IG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNu
J3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAg
IyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAg
ICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6
CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
YW5kcm9pZF93ZWJ2aWV3LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2FuZHJvaWRfd2Vidmll
dy5weQppbmRleCBkYzY4N2I0OGVkN2E5ZGRlODI3MzM0YWU4YjU5MDk2Y2M1OGQyNGQ3Li44Nzkw
NTY3NzA3ZTk1N2E3YjY1ZDdkYzE1YmFhZDVlMzE5MGI4YmJkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBTeXN0ZW1X
ZWJWaWV3U2hlbGwoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5k
aWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFu
eXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3Rp
dmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4g
c2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAg
IHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYmFzZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CmluZGV4IDY1NTM0NDU4MTk3M2MxNWI2NTc3
MjlmZWI3MzZkZDIwNzNkNzlhMzAuLmEwMjdjZjMyNjEwYTQ5ZTYxZjQxNDFiZmI1ZmNlNWQwNTEz
ODViM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CkBAIC0zLDYgKzMsNyBAQCBpbXBvcnQgcGxhdGZv
cm0KIGltcG9ydCBzb2NrZXQKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhv
ZAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwog
CiBmcm9tIC4ud3B0Y29tbWFuZGxpbmUgaW1wb3J0IHJlcXVpcmVfYXJnICAjIG5vcWE6IEY0MDEK
IApAQCAtMTQ3LDEwICsxNDgsNiBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgICIi
IkJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBicm93c2VyIHByb2Nlc3MgaXMgc3RpbGwg
cnVubmluZyIiIgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYsIGhvc3Rz
KToKLSAgICAgICAgIiIiUmV0dXJuIGEgY2VydGlmaWNhdGUgdG8gdXNlIGZvciB0ZXN0cyByZXF1
aXJpbmcgc3NsIHRoYXQgd2lsbCBiZSB0cnVzdGVkIGJ5IHRoZSBicm93c2VyIiIiCi0gICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInNzbCB0ZXN0aW5nIG5vdCBzdXBwb3J0ZWQiKQot
CiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgICIiIkJyb3dzZXItc3BlY2lmaWMgY2xl
YW51cCB0aGF0IGlzIHJ1biBhZnRlciB0aGUgdGVzdHJ1biBpcyBmaW5pc2hlZCIiIgogICAgICAg
ICBwYXNzCkBAIC0xOTksNSArMTk2LDUgQEAgY2xhc3MgRXhlY3V0b3JCcm93c2VyKG9iamVjdCk6
CiAgICAgdXAgdGhlIGJyb3dzZXIgZnJvbSB0aGUgcnVubmVyIHByb2Nlc3MuCiAgICAgIiIiCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgZm9yIGssIHYgaW4ga3dh
cmdzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaywgdiBpbiBpdGVyaXRlbXMoa3dhcmdzKToK
ICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgdikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9jaHJvbWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5Cmlu
ZGV4IDUxM2ZkNWY0MjQ5MmZjYTRmNjExNTZlNTQ1OTU3NmQxYzg0NjY5OGEuLmJhYzFhZmZkMzY1
MGUyNGM0Yjk2ZWZjNjVlNmI0NjkyYzliMmIyNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9jaHJvbWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weQpA
QCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIENocm9tZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAg
ICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAg
ICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2Vy
IHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZl
ci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAg
ZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvY2hyb21lX2FuZHJvaWQucHkKaW5kZXggYjRlZGMwNTBkMGM3MDljZmE0NjdhNDNiNmU2YTQx
MjAwYWEwNGM3My4uY2Q4YzQwZmFiMWZlYjA2MjlhODE0YjJiYmE2OGVkZWNhYTNlZThkMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weQpAQCAtMTE0LDcgKzExNCw3IEBA
IGNsYXNzIENocm9tZUFuZHJvaWRCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRv
KTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFu
ZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAg
ICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVw
KHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZV9pb3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2lvcy5w
eQppbmRleCBhMDQyOTY2NWM5YmM1N2UyN2MwMmNlODFhN2RlYjkwOWI4ZmEwMGY1Li42ZGIwMTg4
ZTU1ZWJmZjhkM2E0MGY5YTE1ZGM3MTQ0MTllZGFjYmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvY2hyb21lX2lvcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hy
b21lX2lvcy5weQpAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBDaHJvbWVpT1NCcm93c2VyKEJyb3dz
ZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVy
IGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0
aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1
cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2Fs
aXZlKCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2UucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvZWRnZS5weQppbmRleCBkOWQwYWYxMTVjYzllOWM2NGU5MjdiMTVjZGQyOTFmMzE0YjA3
YWU1Li4xOGExZWQ3ODExODljY2EyM2RmMmE0ZTFiNWI1ZGNhODMwYmQwZWE0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZWRnZS5weQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIEVkZ2VCcm93c2VyKEJyb3dzZXIp
OgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgc2VydmVyIGlz
IGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVy
IGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4g
c2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZl
KCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1bS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKaW5kZXggNjM2ODBiNjc3NGEyNzU5MjQ5MWU2NzFm
NTNmMTQwYjY1ZTE3MDQyYi4uNWM1MWYwNjZmMDQ0MTMyMTY2MGNhYjk2ZjZkZTUxYWY4NjhkMzEw
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2VjaHJvbWl1bS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CkBAIC0xMDcsNyArMTA3LDcg
QEAgY2xhc3MgRWRnZUNocm9taXVtQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0
byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwNCiAgICAgICAgICMg
YW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24N
CiAgICAgICAgICMgaXMgYWN0aXZlLg0KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2Fs
aXZlDQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQ0KIA0KICAgICBkZWYg
Y2xlYW51cChzZWxmKToNCiAgICAgICAgIHNlbGYuc3RvcCgpDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VwaXBo
YW55LnB5CmluZGV4IDhhMGU1ZjU3OGIyZmViODcxZGRkNTBhYjA4MTY4YzZiOWQ0NWU0YjAuLmY2
YzRjNjAyYTM4YzA0MzYzN2NmOWRiYzhiYmI1MzUwZWM5NDUyN2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9lcGlwaGFueS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
ZXBpcGhhbnkucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0
X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0aWZpY2F0ZV9kb21haW5fbGlzCiBmcm9t
IC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4
ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAuLmV4ZWN1dG9ycy5l
eGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IsICAj
IG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IsICAjIG5v
cWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJE
cml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycy5l
eGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTog
RjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwKQEAgLTExLDcg
KzEyLDggQEAgX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJlcGlwaGFueSIsCiAgICAgICAg
ICAgICAgICAgICJicm93c2VyX2t3YXJncyI6ICJicm93c2VyX2t3YXJncyIsCiAgICAgICAgICAg
ICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NF
eGVjdXRvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJXZWJE
cml2ZXJSZWZUZXN0RXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndk
c3BlYyI6ICJXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciJ9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIndkc3BlYyI6ICJXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIldlYkRyaXZlckNyYXNodGVz
dEV4ZWN1dG9yIn0sCiAgICAgICAgICAgICAgICAgICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0
b3Jfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIs
CiAgICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyIsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9maXJlZm94LnB5CmluZGV4IDBmODA3NTMzNzgxMzc4M2M3NmU0YmU0ZGVjOWNjOTMxYTQy
NTJjNDEuLjJkZTdkZjM5NmJkMmE0OGI3ODY0YTY2YWVlNGI2MmNmYTFmYjM2NzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94LnB5CkBAIC00LDYgKzQsNyBAQCBpbXBvcnQgcGxhdGZvcm0KIGltcG9y
dCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitmcm9tIGFiYyBpbXBvcnQg
QUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIAogaW1wb3J0IG1vemluZm8KIGltcG9ydCBtb3psZWFr
CkBAIC0yNSw2ICsyNiw3IEBAIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JtYXJpb25ldHRlIGlt
cG9ydCAoTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3Is
ICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRv
cikgICMgbm9xYTogRjQwMQorZnJvbSAuLnByb2Nlc3MgaW1wb3J0IGNhc3RfZW52CiAKIAogaGVy
ZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSkKQEAgLTYzLDYgKzY1
LDggQEAgZGVmIGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBlLCBydW5faW5mb19kYXRh
LCAqKmt3YXJncyk6CiAgICAgIyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTM4NzI1CiAgICAgZWxpZiBydW5faW5mb19kYXRhWyJvcyJdID09ICJ3aW4iIGFu
ZCBydW5faW5mb19kYXRhWyJwcm9jZXNzb3IiXSA9PSAiYWFyY2g2NCI6CiAgICAgICAgIHJldHVy
biA0CisgICAgZWxpZiBydW5faW5mb19kYXRhLmdldCgiY2NvdiIpOgorICAgICAgICByZXR1cm4g
MgogICAgIHJldHVybiAxCiAKIApAQCAtODIsNiArODYsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3Mo
dGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAg
ICJjYV9jZXJ0aWZpY2F0ZV9wYXRoIjogY29uZmlnLnNzbF9jb25maWdbImNhX2NlcnRfcGF0aCJd
LAogICAgICAgICAgICAgImUxMHMiOiBrd2FyZ3NbImdlY2tvX2UxMHMiXSwKICAgICAgICAgICAg
ICJlbmFibGVfd2VicmVuZGVyIjoga3dhcmdzWyJlbmFibGVfd2VicmVuZGVyIl0sCisgICAgICAg
ICAgICAiZW5hYmxlX2Zpc3Npb24iOiBrd2FyZ3NbImVuYWJsZV9maXNzaW9uIl0sCiAgICAgICAg
ICAgICAic3RhY2tmaXhfZGlyIjoga3dhcmdzWyJzdGFja2ZpeF9kaXIiXSwKICAgICAgICAgICAg
ICJiaW5hcnlfYXJncyI6IGt3YXJnc1siYmluYXJ5X2FyZ3MiXSwKICAgICAgICAgICAgICJ0aW1l
b3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKQEAgLTkz
LDcgKzk4LDggQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwg
Y29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAiY2hhb3NfbW9kZV9mbGFncyI6IGt3YXJn
c1siY2hhb3NfbW9kZV9mbGFncyJdLAogICAgICAgICAgICAgImNvbmZpZyI6IGNvbmZpZywKICAg
ICAgICAgICAgICJicm93c2VyX2NoYW5uZWwiOiBrd2FyZ3NbImJyb3dzZXJfY2hhbm5lbCJdLAot
ICAgICAgICAgICAgImhlYWRsZXNzIjoga3dhcmdzWyJoZWFkbGVzcyJdfQorICAgICAgICAgICAg
ImhlYWRsZXNzIjoga3dhcmdzWyJoZWFkbGVzcyJdLAorICAgICAgICAgICAgInByZWxvYWRfYnJv
d3NlciI6IGt3YXJnc1sicHJlbG9hZF9icm93c2VyIl19CiAKIAogZGVmIGV4ZWN1dG9yX2t3YXJn
cyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEs
CkBAIC0xNjgsMTcgKzE3NCwxMyBAQCBkZWYgcnVuX2luZm9fZXh0cmFzKCoqa3dhcmdzKToKICAg
ICAgICAgICAid2FzbSI6IGt3YXJncy5nZXQoIndhc20iLCBUcnVlKSwKICAgICAgICAgICAidmVy
aWZ5Ijoga3dhcmdzWyJ2ZXJpZnkiXSwKICAgICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3MuZ2V0
KCJoZWFkbGVzcyIsIEZhbHNlKSBvciAiTU9aX0hFQURMRVNTIiBpbiBvcy5lbnZpcm9uLAotICAg
ICAgICAgICJmaXNzaW9uIjogZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KKyAg
ICAgICAgICAic3ctZTEwcyI6IFRydWUsCisgICAgICAgICAgImZpc3Npb24iOiBrd2FyZ3MuZ2V0
KCJlbmFibGVfZmlzc2lvbiIpIG9yIGdldF9ib29sX3ByZWYoImZpc3Npb24uYXV0b3N0YXJ0Iil9
CiAKICAgICAjIFRoZSB2YWx1ZSBvZiBgc3ctZTEwc2AgZGVmYXVsdHMgdG8gd2hldGhlciB0aGUg
InBhcmVudF9pbnRlcmNlcHQiCiAgICAgIyBpbXBsZW1lbnRhdGlvbiBpcyBlbmFibGVkIGZvciB0
aGUgY3VycmVudCBidWlsZC4gVGhpcyB2YWx1ZSwgaG93ZXZlciwKICAgICAjIGNhbiBiZSBvdmVy
cmlkZGVuIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgcHJlZiB3aXRoIHRoZSBgLS1zZXRwcmVm
YCBDTEkKLSAgICAjIGZsYWcsIHdoaWNoIGlzIGNoZWNrZWQgaGVyZS4gSWYgbm90IHN1cHBsaWVk
LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgotICAgICMgYHN3LWUxMHNgIHdpbGwgYmUgZmlsbGVkIGlu
IGluIGBSdW5JbmZvYCdzIGNvbnN0cnVjdG9yLgotICAgICMKLSAgICAjIFdlIGNhbid0IGNhcHR1
cmUgdGhlIGRlZmF1bHQgdmFsdWUgcmlnaHQgbm93IGJlY2F1c2UgKGN1cnJlbnRseSksIGl0Ci0g
ICAgIyBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYG5pZ2h0bHlfYnVpbGRgLCB3aGljaCBpc24n
dCBrbm93biB1bnRpbAotICAgICMgYFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCisgICAgIyBmbGFn
LCB3aGljaCBpcyBjaGVja2VkIGhlcmUuCiAgICAgc3dfZTEwc19vdmVycmlkZSA9IGdldF9ib29s
X3ByZWZfaWZfZXhpc3RzKCJkb20uc2VydmljZVdvcmtlcnMucGFyZW50X2ludGVyY2VwdCIpCiAg
ICAgaWYgc3dfZTEwc19vdmVycmlkZSBpcyBub3QgTm9uZToKICAgICAgICAgcnZbInN3LWUxMHMi
XSA9IHN3X2UxMHNfb3ZlcnJpZGUKQEAgLTIwMyw3OSArMjA1LDYwIEBAIGRlZiB1cGRhdGVfcHJv
cGVydGllcygpOgogICAgICAgICAgICAgeyJvcyI6IFsidmVyc2lvbiJdLCAicHJvY2Vzc29yIjog
WyJiaXRzIl19KQogCiAKLWNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgotICAgIGluaXRf
dGltZW91dCA9IDcwCi0gICAgc2h1dGRvd25fdGltZW91dCA9IDcwCitjbGFzcyBGaXJlZm94SW5z
dGFuY2VNYW5hZ2VyKG9iamVjdCk6CisgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgcHJlZnNfcm9vdCwgdGVzdF90eXBl
LCBleHRyYV9wcmVmcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN5
bWJvbHNfcGF0aD1Ob25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1O
b25lLAotICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFs
c2UsIGVuYWJsZV93ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAotICAgICAgICAg
ICAgICAgICBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19j
aGVjaz1GYWxzZSwgYXNhbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0x
LCBjaGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5p
Z2h0bHkiLCBoZWFkbGVzcz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEJyb3dzZXIuX19pbml0
X18oc2VsZiwgbG9nZ2VyKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwg
YmluYXJ5X2FyZ3MsIHByb2ZpbGVfY3JlYXRvciwgZGVidWdfaW5mbywKKyAgICAgICAgICAgICAg
ICAgY2hhb3NfbW9kZV9mbGFncywgaGVhZGxlc3MsIGVuYWJsZV93ZWJyZW5kZXIsIHN0eWxvX3Ro
cmVhZHMsCisgICAgICAgICAgICAgICAgIGxlYWtfY2hlY2ssIHN0YWNrZml4X2Rpciwgc3ltYm9s
c19wYXRoLCBhc2FuKToKKyAgICAgICAgIiIiT2JqZWN0IHRoYXQgbWFuYWdlcyBzdGFydGluZyBh
bmQgc3RvcHBpbmcgaW5zdGFuY2VzIG9mIEZpcmVmb3guIiIiCisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCiAgICAgICAgIHNlbGYuYmluYXJ5ID0gYmluYXJ5Ci0gICAgICAgIHNlbGYucHJl
ZnNfcm9vdCA9IHByZWZzX3Jvb3QKLSAgICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUK
LSAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCi0gICAgICAgIHNlbGYubWFy
aW9uZXR0ZV9wb3J0ID0gTm9uZQotICAgICAgICBzZWxmLnJ1bm5lciA9IE5vbmUKKyAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCisgICAgICAgIHNlbGYuYmFzZV9wcm9maWxl
ID0gcHJvZmlsZV9jcmVhdG9yLmNyZWF0ZSgpCiAgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRl
YnVnX2luZm8KLSAgICAgICAgc2VsZi5wcm9maWxlID0gTm9uZQotICAgICAgICBzZWxmLnN5bWJv
bHNfcGF0aCA9IHN5bWJvbHNfcGF0aAotICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBz
dGFja3dhbGtfYmluYXJ5Ci0gICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2Nl
cnRpZmljYXRlX3BhdGgKLSAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRpbF9i
aW5hcnkKLSAgICAgICAgc2VsZi5lMTBzID0gZTEwcworICAgICAgICBzZWxmLmNoYW9zX21vZGVf
ZmxhZ3MgPSBjaGFvc19tb2RlX2ZsYWdzCisgICAgICAgIHNlbGYuaGVhZGxlc3MgPSBoZWFkbGVz
cwogICAgICAgICBzZWxmLmVuYWJsZV93ZWJyZW5kZXIgPSBlbmFibGVfd2VicmVuZGVyCi0gICAg
ICAgIHNlbGYuYmluYXJ5X2FyZ3MgPSBiaW5hcnlfYXJncwotICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZwotICAgICAgICBpZiBzdGFja2ZpeF9kaXI6Ci0gICAgICAgICAgICBzZWxmLnN0YWNr
X2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0aW9uKHN0YWNrZml4X2RpciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zeW1i
b2xzX3BhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnN0YWNrX2ZpeGVyID0g
Tm9uZQorICAgICAgICBzZWxmLnN0eWxvX3RocmVhZHMgPSBzdHlsb190aHJlYWRzCisgICAgICAg
IHNlbGYubGVha19jaGVjayA9IGxlYWtfY2hlY2sKKyAgICAgICAgc2VsZi5zdGFja2ZpeF9kaXIg
PSBzdGFja2ZpeF9kaXIKKyAgICAgICAgc2VsZi5zeW1ib2xzX3BhdGggPSBzeW1ib2xzX3BhdGgK
KyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgogCi0gICAgICAgIGlmIHRpbWVvdXRfbXVsdGlwbGll
cjoKLSAgICAgICAgICAgIHNlbGYuaW5pdF90aW1lb3V0ID0gc2VsZi5pbml0X3RpbWVvdXQgKiB0
aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5vbmUKKyAgICAgICAg
c2VsZi5jdXJyZW50ID0gTm9uZQogCi0gICAgICAgIHNlbGYuYXNhbiA9IGFzYW4KLSAgICAgICAg
c2VsZi5sc2FuX2FsbG93ZWQgPSBOb25lCi0gICAgICAgIHNlbGYubHNhbl9tYXhfc3RhY2tfZGVw
dGggPSBOb25lCi0gICAgICAgIHNlbGYubW96bGVha19hbGxvd2VkID0gTm9uZQotICAgICAgICBz
ZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IE5vbmUKLSAgICAgICAgc2VsZi5sZWFrX2NoZWNrID0g
bGVha19jaGVjawotICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBOb25lCi0gICAgICAg
IHNlbGYubHNhbl9oYW5kbGVyID0gTm9uZQotICAgICAgICBzZWxmLnN0eWxvX3RocmVhZHMgPSBz
dHlsb190aHJlYWRzCi0gICAgICAgIHNlbGYuY2hhb3NfbW9kZV9mbGFncyA9IGNoYW9zX21vZGVf
ZmxhZ3MKLSAgICAgICAgc2VsZi5icm93c2VyX2NoYW5uZWwgPSBicm93c2VyX2NoYW5uZWwKLSAg
ICAgICAgc2VsZi5oZWFkbGVzcyA9IGhlYWRsZXNzCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgcGFzcwogCi0gICAgZGVm
IHNldHRpbmdzKHNlbGYsIHRlc3QpOgotICAgICAgICByZXR1cm4geyJjaGVja19sZWFrcyI6IHNl
bGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVha3MsCi0gICAgICAgICAgICAgICAgImxzYW5f
YWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAotICAgICAgICAgICAgICAgICJsc2FuX21heF9z
dGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCi0gICAgICAgICAgICAgICAg
Im1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX2FsbG93
ZWQsCi0gICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNlbGYubGVha19jaGVj
ayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBk
ZWYgZ2V0KHNlbGYpOgorICAgICAgICAiIiJHZXQgYSBCcm93c2VySW5zdGFuY2UgZm9yIGEgcnVu
bmluZyBGaXJlZm94LgogCi0gICAgZGVmIHN0YXJ0KHNlbGYsIGdyb3VwX21ldGFkYXRhPU5vbmUs
ICoqa3dhcmdzKToKLSAgICAgICAgaWYgZ3JvdXBfbWV0YWRhdGEgaXMgTm9uZToKLSAgICAgICAg
ICAgIGdyb3VwX21ldGFkYXRhID0ge30KKyAgICAgICAgVGhpcyBjYW4gb25seSBiZSBjYWxsZWQg
b25jZSBwZXIgaW5zdGFuY2UsIGFuZCBiZXR3ZWVuIGNhbGxzIHN0b3BfY3VycmVudCgpCisgICAg
ICAgIG11c3QgYmUgY2FsbGVkLiIiIgorICAgICAgICBwYXNzCiAKLSAgICAgICAgc2VsZi5ncm91
cF9tZXRhZGF0YSA9IGdyb3VwX21ldGFkYXRhCi0gICAgICAgIHNlbGYubHNhbl9hbGxvd2VkID0g
a3dhcmdzLmdldCgibHNhbl9hbGxvd2VkIikKLSAgICAgICAgc2VsZi5sc2FuX21heF9zdGFja19k
ZXB0aCA9IGt3YXJncy5nZXQoImxzYW5fbWF4X3N0YWNrX2RlcHRoIikKLSAgICAgICAgc2VsZi5t
b3psZWFrX2FsbG93ZWQgPSBrd2FyZ3MuZ2V0KCJtb3psZWFrX2FsbG93ZWQiKQotICAgICAgICBz
ZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IGt3YXJncy5nZXQoIm1vemxlYWtfdGhyZXNob2xkcyIp
CisgICAgZGVmIHN0b3BfY3VycmVudChzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgICIiIlNo
dXRkb3duIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIEZpcmVmb3guCiAKLSAgICAgICAgaWYgc2Vs
Zi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9w
b3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisgICAgICAgIFRoZSBCcm93c2VySW5zdGFuY2UgcmVtYWlu
cyBhdmFpbGFibGUgdGhyb3VnaCBzZWxmLnByZXZpb3VzLCBzaW5jZSBzb21lCisgICAgICAgIG9w
ZXJhdGlvbnMgaGFwcGVuIGFmdGVyIHNodXRkb3duLiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5j
dXJyZW50OgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc2VsZi5hc2FuOgotICAg
ICAgICAgICAgc2VsZi5sc2FuX2hhbmRsZXIgPSBtb3psZWFrLkxTQU5MZWFrcyhzZWxmLmxvZ2dl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nv
cGU9Z3JvdXBfbWV0YWRhdGEuZ2V0KCJzY29wZSIsICIvIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQ9c2VsZi5sc2FuX2FsbG93ZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE51
bVJlY29yZGVkRnJhbWVzPXNlbGYubHNhbl9tYXhfc3RhY2tfZGVwdGgpCisgICAgICAgIHNlbGYu
Y3VycmVudC5zdG9wKGZvcmNlKQorICAgICAgICBzZWxmLnByZXZpb3VzID0gc2VsZi5jdXJyZW50
CisgICAgICAgIHNlbGYuY3VycmVudCA9IE5vbmUKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAg
ICAgICAgIiIiU3RhcnQgYW4gaW5zdGFuY2Ugb2YgRmlyZWZveCwgcmV0dXJuaW5nIGEgQnJvd3Nl
ckluc3RhbmNlIGhhbmRsZSIiIgorICAgICAgICBwcm9maWxlID0gc2VsZi5iYXNlX3Byb2ZpbGUu
Y2xvbmUoc2VsZi5iYXNlX3Byb2ZpbGUucHJvZmlsZSkKKworICAgICAgICBtYXJpb25ldHRlX3Bv
cnQgPSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJt
YXJpb25ldHRlLnBvcnQiOiBtYXJpb25ldHRlX3BvcnR9KQogCiAgICAgICAgIGVudiA9IHRlc3Rf
ZW52aXJvbm1lbnQoeHJlUGF0aD1vcy5wYXRoLmRpcm5hbWUoc2VsZi5iaW5hcnkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyPXNlbGYuZGVidWdfaW5mbyBpcyBub3Qg
Tm9uZSwKQEAgLTI5Miw0MCArMjc1LDYgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZbIk1PWl9XRUJSRU5ERVIiXSA9ICIwIgog
Ci0gICAgICAgIHByZWZlcmVuY2VzID0gc2VsZi5sb2FkX3ByZWZzKCkKLQotICAgICAgICBzZWxm
LnByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJlbmNlcykKLSAgICAg
ICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Ci0gICAgICAgICAgICAibWFyaW9uZXR0
ZS5wb3J0Ijogc2VsZi5tYXJpb25ldHRlX3BvcnQsCi0gICAgICAgICAgICAibmV0d29yay5kbnMu
bG9jYWxEb21haW5zIjogIiwiLmpvaW4oc2VsZi5jb25maWcuZG9tYWluc19zZXQpLAotICAgICAg
ICAgICAgImRvbS5maWxlLmNyZWF0ZUluQ2hpbGQiOiBUcnVlLAotICAgICAgICAgICAgIyBUT0RP
OiBSZW1vdmUgcHJlZmVyZW5jZXMgb25jZSBGaXJlZm94IDY0IGlzIHN0YWJsZSAoQnVnIDkwNTQw
NCkKLSAgICAgICAgICAgICJuZXR3b3JrLnByb3h5LnR5cGUiOiAwLAotICAgICAgICAgICAgInBs
YWNlcy5oaXN0b3J5LmVuYWJsZWQiOiBGYWxzZSwKLSAgICAgICAgICAgICJuZXR3b3JrLnByZWxv
YWQiOiBUcnVlLAotICAgICAgICB9KQotICAgICAgICBpZiBzZWxmLmUxMHM6Ci0gICAgICAgICAg
ICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRv
c3RhcnQiOiBUcnVlfSkKLQotICAgICAgICBpZiBzZWxmLnRlc3RfdHlwZSA9PSAicmVmdGVzdCI6
Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVy
cnVwdGlibGUtcmVmbG93LmVuYWJsZWQiOiBGYWxzZX0pCi0KLSAgICAgICAgaWYgc2VsZi5sZWFr
X2NoZWNrOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYucHJvZmlsZS5wcm9maWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBp
ZCgpKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5sZWFrX3JlcG9ydF9maWxl
KToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAg
ICAgICAgICAgZW52WyJYUENPTV9NRU1fQkxPQVRfTE9HIl0gPSBzZWxmLmxlYWtfcmVwb3J0X2Zp
bGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5v
bmUKLQotICAgICAgICAjIEJ1ZyAxMjYyOTU0OiB3aW54cCArIGUxMHMsIGRpc2FibGUgaHdhY2Nl
bAotICAgICAgICBpZiAoc2VsZi5lMTBzIGFuZCBwbGF0Zm9ybS5zeXN0ZW0oKSBpbiAoIldpbmRv
d3MiLCAiTWljcm9zb2Z0IikgYW5kCi0gICAgICAgICAgICAnNS4xJyBpbiBwbGF0Zm9ybS52ZXJz
aW9uKCkpOgotICAgICAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7ImxheWVy
cy5hY2NlbGVyYXRpb24uZGlzYWJsZWQiOiBUcnVlfSkKLQotICAgICAgICBpZiBzZWxmLmNhX2Nl
cnRpZmljYXRlX3BhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldHVwX3NzbCgp
Ci0KICAgICAgICAgYXJncyA9IHNlbGYuYmluYXJ5X2FyZ3NbOl0gaWYgc2VsZi5iaW5hcnlfYXJn
cyBlbHNlIFtdCiAgICAgICAgIGFyZ3MgKz0gW2NtZF9hcmcoIm1hcmlvbmV0dGUiKSwgImFib3V0
OmJsYW5rIl0KIApAQCAtMzMzLDYwICsyODIsMTAxIEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJy
b3dzZXIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdfaW5m
bykKIAotICAgICAgICBzZWxmLnJ1bm5lciA9IEZpcmVmb3hSdW5uZXIocHJvZmlsZT1zZWxmLnBy
b2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnk9Y21kWzBd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfY2xhc3M9UHJvY2Vzc0hhbmRsZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNz
T3V0cHV0TGluZSI6IFtzZWxmLm9uX291dHB1dF19KQorICAgICAgICBpZiBzZWxmLmxlYWtfY2hl
Y2s6CisgICAgICAgICAgICBsZWFrX3JlcG9ydF9maWxlID0gb3MucGF0aC5qb2luKHByb2ZpbGUu
cHJvZmlsZSwgInJ1bnRlc3RzX2xlYWtzXyVzLmxvZyIgJSBvcy5nZXRwaWQoKSkKKyAgICAgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKGxlYWtfcmVwb3J0X2ZpbGUpOgorICAgICAgICAgICAgICAg
IG9zLnJlbW92ZShsZWFrX3JlcG9ydF9maWxlKQorICAgICAgICAgICAgZW52WyJYUENPTV9NRU1f
QkxPQVRfTE9HIl0gPSBsZWFrX3JlcG9ydF9maWxlCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBsZWFrX3JlcG9ydF9maWxlID0gTm9uZQorCisgICAgICAgIG91dHB1dF9oYW5kbGVyID0gT3V0
cHV0SGFuZGxlcihzZWxmLmxvZ2dlciwgc2VsZi5zdGFja2ZpeF9kaXIsIHNlbGYuc3ltYm9sc19w
YXRoLCBzZWxmLmFzYW4pCisgICAgICAgIHJ1bm5lciA9IEZpcmVmb3hSdW5uZXIocHJvZmlsZT1w
cm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT1jbWRbMF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NfY2xhc3M9UHJvY2Vzc0hhbmRsZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19hcmdzPXsicHJvY2Vzc091dHB1dExpbmUiOiBb
b3V0cHV0X2hhbmRsZXJdfSkKKyAgICAgICAgaW5zdGFuY2UgPSBCcm93c2VySW5zdGFuY2Uoc2Vs
Zi5sb2dnZXIsIHJ1bm5lciwgbWFyaW9uZXR0ZV9wb3J0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSkKIAogICAgICAg
ICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RhcnRpbmcgRmlyZWZveCIpCi0KLSAgICAgICAgc2VsZi5y
dW5uZXIuc3RhcnQoZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVn
X2luZm8gYW5kIHNlbGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKKyAgICAgICAgcnVubmVyLnN0
YXJ0KGRlYnVnX2FyZ3M9ZGVidWdfYXJncywgaW50ZXJhY3RpdmU9c2VsZi5kZWJ1Z19pbmZvIGFu
ZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmUpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVn
KCJGaXJlZm94IFN0YXJ0ZWQiKQogCi0gICAgZGVmIGxvYWRfcHJlZnMoc2VsZik6Ci0gICAgICAg
IHByZWZzID0gUHJlZmVyZW5jZXMoKQotCi0gICAgICAgIHByZWZfcGF0aHMgPSBbXQotCi0gICAg
ICAgIHByb2ZpbGVzID0gb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3Byb2ZpbGVzLmpz
b24nKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwcm9maWxlcyk6Ci0gICAgICAgICAgICB3
aXRoIG9wZW4ocHJvZmlsZXMsICdyJykgYXMgZmg6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUg
aW4ganNvbi5sb2FkKGZoKVsnd2ViLXBsYXRmb3JtLXRlc3RzJ106Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIHNlbGYuYnJvd3Nlcl9jaGFubmVsIGluIChOb25lLCAnbmlnaHRseScpOgotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJl
ZnNfcm9vdCwgbmFtZSwgJ3VzZXIuanMnKSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBuYW1l
ICE9ICd1bml0dGVzdC1mZWF0dXJlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVmX3Bh
dGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCBuYW1lLCAndXNlci5qcycp
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBPbGQgcHJlZmVyZW5jZSBmaWxlcyB1c2Vk
IGJlZm9yZSB0aGUgY3JlYXRpb24gb2YgcHJvZmlsZXMuanNvbiAocmVtb3ZlIHdoZW4gbm8gbG9u
Z2VyIHN1cHBvcnRlZCkKLSAgICAgICAgICAgIGxlZ2FjeV9wcmVmX3BhdGhzID0gKAotICAgICAg
ICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdwcmVmc19nZW5lcmFsLmpz
JyksICAgIyBVc2VkIGluIEZpcmVmb3ggNjAgYW5kIGJlbG93Ci0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ2NvbW1vbicsICd1c2VyLmpzJyksICAjIFVzZWQg
aW4gRmlyZWZveCA2MQotICAgICAgICAgICAgKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gbGVn
YWN5X3ByZWZfcGF0aHM6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6
Ci0gICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKHBhdGgpCi0KLSAgICAgICAg
Zm9yIHBhdGggaW4gcHJlZl9wYXRoczoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBh
dGgpOgotICAgICAgICAgICAgICAgIHByZWZzLmFkZChQcmVmZXJlbmNlcy5yZWFkX3ByZWZzKHBh
dGgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCJGYWlsZWQgdG8gZmluZCBiYXNlIHByZWZzIGZpbGUgaW4gJXMiICUgcGF0aCkKLQotICAg
ICAgICAjIEFkZCBhbnkgY3VzdG9tIHByZWZlcmVuY2VzCi0gICAgICAgIHByZWZzLmFkZChzZWxm
LmV4dHJhX3ByZWZzLCBjYXN0PVRydWUpCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisKK2Ns
YXNzIFNpbmdsZUluc3RhbmNlTWFuYWdlcihGaXJlZm94SW5zdGFuY2VNYW5hZ2VyKToKKyAgICAi
IiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQgbWFuYWdlcyBhIHNpbmdsZSBGaXJlZm94IGlu
c3RhbmNlIiIiCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmN1
cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBvbiBJbnN0YW5jZU1hbmFnZXIgdGhhdCBoYXMg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBleGlzdGluZyBpbnN0YW5j
ZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6CisgICAgICAgICAgICBzZWxmLnByZXZpb3Vz
LmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5jdXJyZW50ID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnQKKwor
ICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGZvciBpbnN0YW5j
ZSBpbiBbc2VsZi5wcmV2aW91cywgc2VsZi5jdXJyZW50XToKKyAgICAgICAgICAgIGlmIGluc3Rh
bmNlOgorICAgICAgICAgICAgICAgIGluc3RhbmNlLnN0b3AoZm9yY2UpCisgICAgICAgICAgICAg
ICAgaW5zdGFuY2UuY2xlYW51cCgpCisKKworY2xhc3MgUHJlbG9hZEluc3RhbmNlTWFuYWdlcihG
aXJlZm94SW5zdGFuY2VNYW5hZ2VyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKToKKyAgICAgICAgIiIiRmlyZWZveEluc3RhbmNlTWFuYWdlciB0aGF0IGtlZXBzIG9u
Y2UgRmlyZWZveCBpbnN0YW5jZSBwcmVsb2FkZWQKKyAgICAgICAgdG8gYWxsb3cgcmFwaWQgcmVz
dW1wdGlvbiBhZnRlciBhbiBpbnN0YW5jZSBzaHV0cyBkb3duLiIiIgorICAgICAgICBzdXBlcihQ
cmVsb2FkSW5zdGFuY2VNYW5hZ2VyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisg
ICAgICAgIHNlbGYucGVuZGluZyA9IE5vbmUKKworICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAg
IGFzc2VydCBub3Qgc2VsZi5jdXJyZW50LCAoIlRyaWVkIHRvIGNhbGwgZ2V0KCkgb24gSW5zdGFu
Y2VNYW5hZ2VyIHRoYXQgaGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YW4gZXhpc3RpbmcgaW5zdGFuY2UiKQorICAgICAgICBpZiBzZWxmLnByZXZpb3VzOgorICAgICAg
ICAgICAgc2VsZi5wcmV2aW91cy5jbGVhbnVwKCkKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMg
PSBOb25lCisgICAgICAgIGlmIG5vdCBzZWxmLnBlbmRpbmc6CisgICAgICAgICAgICBzZWxmLnBl
bmRpbmcgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gc2VsZi5wZW5kaW5n
CisgICAgICAgIHNlbGYucGVuZGluZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICByZXR1cm4gc2Vs
Zi5jdXJyZW50CisKKyAgICBkZWYgdGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAg
ICBmb3IgaW5zdGFuY2UsIHNraXBfbWFyaW9uZXR0ZSBpbiBbKHNlbGYucHJldmlvdXMsIEZhbHNl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmN1cnJl
bnQsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLnBlbmRpbmcsIFRydWUpXToKKyAgICAgICAgICAgIGlmIGluc3RhbmNlOgorICAgICAgICAg
ICAgICAgIGluc3RhbmNlLnN0b3AoZm9yY2UsIHNraXBfbWFyaW9uZXR0ZT1za2lwX21hcmlvbmV0
dGUpCisgICAgICAgICAgICAgICAgaW5zdGFuY2UuY2xlYW51cCgpCisKKworY2xhc3MgQnJvd3Nl
ckluc3RhbmNlKG9iamVjdCk6CisgICAgc2h1dGRvd25fdGltZW91dCA9IDcwCiAKLSAgICAgICAg
cmV0dXJuIHByZWZzKCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBydW5uZXIsIG1h
cmlvbmV0dGVfcG9ydCwgb3V0cHV0X2hhbmRsZXIsIGxlYWtfcmVwb3J0X2ZpbGUpOgorICAgICAg
ICAiIiJIYW5kbGUgdG8gYSBydW5uaW5nIEZpcmVmb3ggaW5zdGFuY2UiIiIKKyAgICAgICAgc2Vs
Zi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBydW5uZXIKKyAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBtYXJpb25ldHRlX3BvcnQKKyAgICAgICAgc2VsZi5vdXRw
dXRfaGFuZGxlciA9IG91dHB1dF9oYW5kbGVyCisgICAgICAgIHNlbGYubGVha19yZXBvcnRfZmls
ZSA9IGxlYWtfcmVwb3J0X2ZpbGUKIAotICAgIGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlKToK
KyAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSwgc2tpcF9tYXJpb25ldHRlPUZhbHNlKToK
KyAgICAgICAgIiIiU3RvcCBGaXJlZm94IiIiCiAgICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5v
dCBOb25lIGFuZCBzZWxmLnJ1bm5lci5pc19ydW5uaW5nKCk6CisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiU3RvcHBpbmcgRmlyZWZveCAlcyIgJSBzZWxmLnBpZCgpKQorICAgICAgICAg
ICAgc2h1dGRvd25fbWV0aG9kcyA9IFsoVHJ1ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci53YWl0KHNl
bGYuc2h1dGRvd25fdGltZW91dCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
RmFsc2UsIGxhbWJkYTogc2VsZi5ydW5uZXIuc3RvcChzaWduYWwuU0lHVEVSTSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIGxhbWJkYTogc2VsZi5ydW5uZXIuc3Rv
cChzaWduYWwuU0lHS0lMTCkpXQorICAgICAgICAgICAgaWYgc2tpcF9tYXJpb25ldHRlOgorICAg
ICAgICAgICAgICAgIHNodXRkb3duX21ldGhvZHMgPSBzaHV0ZG93bl9tZXRob2RzWzE6XQogICAg
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgRm9yIEZpcmVmb3ggd2UgYXNzdW1lIHRo
YXQgc3RvcHBpbmcgdGhlIHJ1bm5lciBwcm9tcHRzIHRoZQogICAgICAgICAgICAgICAgICMgYnJv
d3NlciB0byBzaHV0IGRvd24uIFRoaXMgYWxsb3dzIHRoZSBsZWFrIGxvZyB0byBiZSB3cml0dGVu
Ci0gICAgICAgICAgICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gWyhUcnVlLCBsYW1iZGE6IHNl
bGYucnVubmVyLndhaXQoc2VsZi5zaHV0ZG93bl90aW1lb3V0KSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNp
Z25hbC5TSUdURVJNKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChG
YWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdLSUxMKSldOgorICAgICAg
ICAgICAgICAgIGZvciBjbGVhbiwgc3RvcF9mIGluIHNodXRkb3duX21ldGhvZHM6CiAgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBmb3JjZSBvciBub3QgY2xlYW46CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXRjb2RlID0gc3RvcF9mKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJl
dGNvZGUgaXMgbm90IE5vbmU6CkBAIC0zOTUsMjMgKzM4NSw4IEBAIGNsYXNzIEZpcmVmb3hCcm93
c2VyKEJyb3dzZXIpOgogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAg
ICAgIyBUaGlzIGNhbiBoYXBwZW4gb24gV2luZG93cyBpZiB0aGUgcHJvY2VzcyBpcyBhbHJlYWR5
IGRlYWQKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYucHJvY2Vzc19sZWFrcygp
Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJzdG9wcGVkIikKLQotICAgIGRlZiBwcm9jZXNz
X2xlYWtzKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtTICVz
IiAlIHNlbGYubGVha19yZXBvcnRfZmlsZSkKLSAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6
Ci0gICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKLSAgICAgICAgaWYgc2Vs
Zi5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbW96bGVhay5wcm9j
ZXNzX2xlYWtfbG9nKAotICAgICAgICAgICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSwKLSAg
ICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3RocmVzaG9sZHMsCi0g
ICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJnbXBsdWdpbiJdLAotICAgICAg
ICAgICAgICAgIGxvZz1zZWxmLmxvZ2dlciwKLSAgICAgICAgICAgICAgICBzdGFja19maXhlcj1z
ZWxmLnN0YWNrX2ZpeGVyLAotICAgICAgICAgICAgICAgIHNjb3BlPXNlbGYuZ3JvdXBfbWV0YWRh
dGEuZ2V0KCJzY29wZSIpLAotICAgICAgICAgICAgICAgIGFsbG93ZWQ9c2VsZi5tb3psZWFrX2Fs
bG93ZWQKLSAgICAgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNraXBfbWFyaW9uZXR0ZToKKyAg
ICAgICAgICAgIHNlbGYub3V0cHV0X2hhbmRsZXIuYWZ0ZXJfc3RvcCgpCiAKICAgICBkZWYgcGlk
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIgaXMgTm9uZToK
QEAgLTQyMiw0NCArMzk3LDIwOCBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAot
ICAgIGRlZiBvbl9vdXRwdXQoc2VsZiwgbGluZSk6CisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgor
ICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bm5lci5p
c19ydW5uaW5nKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY2xlYW51cChzZWxm
KToKKyAgICAgICAgIyBtb3pwcm9maWxlIGhhbmRsZXMgZGVsZXRpbmcgdGhlIHByb2ZpbGUgd2hl
biB0aGUgcmVmY291bnQgcmVhY2hlcyAwCisgICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorCisK
K2NsYXNzIE91dHB1dEhhbmRsZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBzdGFja2ZpeF9kaXIsIHN5bWJvbHNfcGF0aCwgYXNhbik6CisgICAgICAgICIiIkZpbHRl
ciBmb3IgaGFuZGxpbmcgRmlyZWZveCBwcm9jZXNzIG91dHB1dC4KKworICAgICAgICBUaGlzIHJl
Y2VpdmVzIEZpcmVmb3ggcHJvY2VzcyBvdXRwdXQgaW4gdGhlIF9fY2FsbF9fIGZ1bmN0aW9uLCBk
b2VzCisgICAgICAgIGFueSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgdGhhdCdzIHJlcXVpcmVkLCBh
bmQgZGVjaWRlcyB3aGV0aGVyIHRvIGxvZworICAgICAgICB0aGUgb3V0cHV0LiBCZWNhdXNlIHRo
ZSBGaXJlZm94IHByb2Nlc3MgY2FuIGJlIHN0YXJ0ZWQgYmVmb3JlIHdlIGtub3cKKyAgICAgICAg
d2hpY2ggZmlsdGVycyBhcmUgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIHdlIGJ1ZmZlciBhbGwgb3V0
cHV0IHVudGlsCisgICAgICAgIHNldHVwKCkgaXMgY2FsbGVkLiBUaGlzIGlzIHJlc3BvbnNpYmxl
IGZvciBkb2luZyB0aGUgZmluYWwgY29uZmlndXJhdGlvbgorICAgICAgICBvZiB0aGUgb3V0cHV0
IGhhbmRsZXJzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgor
ICAgICAgICAjIFRoZXNlIGFyZSBmaWxsZWQgaW4gYWZ0ZXIgc2V0dXAoKSBpcyBjYWxsZWQKKyAg
ICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKKworICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9
IHN5bWJvbHNfcGF0aAorICAgICAgICBpZiBzdGFja2ZpeF9kaXI6CisgICAgICAgICAgICAjIFdl
IGhpZGUgZXJyb3JzIGJlY2F1c2UgdGhleSBjYXVzZSBkaXNjb25jZXJ0aW5nIGBDUklUSUNBTGAK
KyAgICAgICAgICAgICMgd2FybmluZ3MgaW4gd2ViIHBsYXRmb3JtIHRlc3Qgb3V0cHV0LgorICAg
ICAgICAgICAgc2VsZi5zdGFja19maXhlciA9IGdldF9zdGFja19maXhlcl9mdW5jdGlvbihzdGFj
a2ZpeF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlRXJyb3JzPVRydWUpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gTm9uZQorICAgICAgICBzZWxmLmFz
YW4gPSBhc2FuCisKKyAgICAgICAgc2VsZi5sc2FuX2hhbmRsZXIgPSBOb25lCisgICAgICAgIHNl
bGYubW96bGVha19hbGxvd2VkID0gTm9uZQorICAgICAgICBzZWxmLm1vemxlYWtfdGhyZXNob2xk
cyA9IE5vbmUKKyAgICAgICAgc2VsZi5ncm91cF9tZXRhZGF0YSA9IHt9CisKKyAgICAgICAgc2Vs
Zi5saW5lX2J1ZmZlciA9IFtdCisgICAgICAgIHNlbGYuc2V0dXBfcmFuID0gRmFsc2UKKworICAg
IGRlZiBzZXR1cChzZWxmLCBpbnN0YW5jZT1Ob25lLCBncm91cF9tZXRhZGF0YT1Ob25lLCBsc2Fu
X2Rpc2FibGVkPUZhbHNlLAorICAgICAgICAgICAgICBsc2FuX2FsbG93ZWQ9Tm9uZSwgbHNhbl9t
YXhfc3RhY2tfZGVwdGg9Tm9uZSwgbW96bGVha19hbGxvd2VkPU5vbmUsCisgICAgICAgICAgICAg
IG1vemxlYWtfdGhyZXNob2xkcz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICIiIkNvbmZpZ3Vy
ZSB0aGUgb3V0cHV0IGhhbmRsZXIiIiIKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGluc3RhbmNl
CisKKyAgICAgICAgaWYgZ3JvdXBfbWV0YWRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIGdyb3Vw
X21ldGFkYXRhID0ge30KKyAgICAgICAgc2VsZi5ncm91cF9tZXRhZGF0YSA9IGdyb3VwX21ldGFk
YXRhCisKKyAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBtb3psZWFrX2FsbG93ZWQKKyAg
ICAgICAgc2VsZi5tb3psZWFrX3RocmVzaG9sZHMgPSBtb3psZWFrX3RocmVzaG9sZHMKKworICAg
ICAgICBpZiBzZWxmLmFzYW46CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxl
YWsuTFNBTkxlYWtzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY29wZT1ncm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxs
b3dlZD1sc2FuX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heE51bVJlY29yZGVkRnJhbWVzPWxzYW5fbWF4X3N0YWNrX2RlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0Fs
bD1sc2FuX2Rpc2FibGVkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5sc2FuX2hh
bmRsZXIgPSBOb25lCisKKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBUcnVlCisKKyAgICAgICAg
Zm9yIGxpbmUgaW4gc2VsZi5saW5lX2J1ZmZlcjoKKyAgICAgICAgICAgIHNlbGYuX19jYWxsX18o
bGluZSkKKyAgICAgICAgc2VsZi5saW5lX2J1ZmZlciA9IFtdCisKKyAgICBkZWYgYWZ0ZXJfc3Rv
cChzZWxmKToKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUFJPQ0VTUyBMRUFLUyAlcyIgJSBz
ZWxmLmluc3RhbmNlLmxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgIGlmIHNlbGYubHNhbl9oYW5k
bGVyOgorICAgICAgICAgICAgc2VsZi5sc2FuX2hhbmRsZXIucHJvY2VzcygpCisgICAgICAgIGlm
IHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICMgV2UgaGF2ZSB0byBpZ25vcmUgbWlzc2luZyBsZWFrcyBpbiB0aGUgdGFiIGJlY2F1c2UgaXQg
Y2FuIGhhcHBlbiB0aGF0IHRoZQorICAgICAgICAgICAgIyBjb250ZW50IHByb2Nlc3MgY3Jhc2hl
ZCBhbmQgaW4gdGhhdCBjYXNlIHdlIGRvbid0IHdhbnQgdGhlIHRlc3QgdG8gZmFpbC4KKyAgICAg
ICAgICAgICMgSWRlYWxseSB3ZSB3b3VsZCByZWNvcmQgd2hpY2ggY29udGVudCBwcm9jZXNzIGNy
YXNoZWQgYW5kIGp1c3Qgc2tpcCB0aG9zZS4KKyAgICAgICAgICAgIG1vemxlYWsucHJvY2Vzc19s
ZWFrX2xvZygKKyAgICAgICAgICAgICAgICBzZWxmLmluc3RhbmNlLmxlYWtfcmVwb3J0X2ZpbGUs
CisgICAgICAgICAgICAgICAgbGVha190aHJlc2hvbGRzPXNlbGYubW96bGVha190aHJlc2hvbGRz
LAorICAgICAgICAgICAgICAgIGlnbm9yZV9taXNzaW5nX2xlYWtzPVsidGFiIiwgImdtcGx1Z2lu
Il0sCisgICAgICAgICAgICAgICAgbG9nPXNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgIHN0
YWNrX2ZpeGVyPXNlbGYuc3RhY2tfZml4ZXIsCisgICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5n
cm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiksCisgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxm
Lm1vemxlYWtfYWxsb3dlZCkKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBsaW5lKToKICAgICAg
ICAgIiIiV3JpdGUgYSBsaW5lIG9mIG91dHB1dCBmcm9tIHRoZSBmaXJlZm94IHByb2Nlc3MgdG8g
dGhlIGxvZyIiIgotICAgICAgICBpZiAiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgor
ICAgICAgICBpZiBiIkdMaWItR09iamVjdC1DUklUSUNBTCIgaW4gbGluZToKICAgICAgICAgICAg
IHJldHVybgogICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2V0dXBf
cmFuOgorICAgICAgICAgICAgICAgIHNlbGYubGluZV9idWZmZXIuYXBwZW5kKGxpbmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBkYXRhID0gbGluZS5kZWNvZGUoInV0Zjgi
LCAicmVwbGFjZSIpCiAgICAgICAgICAgICBpZiBzZWxmLnN0YWNrX2ZpeGVyOgogICAgICAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLnN0YWNrX2ZpeGVyKGRhdGEpCiAgICAgICAgICAgICBpZiBzZWxm
LmxzYW5faGFuZGxlcjoKICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5sc2FuX2hhbmRsZXIu
bG9nKGRhdGEpCiAgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNlbGYucGlkKCksCisgICAgICAgICAgICAg
ICAgc2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5pbnN0YW5jZSBhbmQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RhbmNlLnJ1bm5lci5w
cm9jZXNzX2hhbmRsZXIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5pbnN0YW5jZS5ydW5uZXIucHJvY2Vzc19oYW5kbGVyLnBpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9IiAiLmpvaW4oc2VsZi5ydW5uZXIu
Y29tbWFuZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD0iICIuam9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5jb21tYW5kKSkKIAotICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5ydW5uZXI6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCi0gICAgICAgIHJldHVybiBGYWxzZQogCi0gICAg
ZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2UpOgotICAgICAgICBzZWxmLnN0b3AoZm9yY2Up
CitjbGFzcyBQcm9maWxlQ3JlYXRvcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBs
b2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVzdF90eXBlLCBleHRyYV9wcmVmcywgZTEwcywK
KyAgICAgICAgICAgICAgICAgZW5hYmxlX2Zpc3Npb24sIGJyb3dzZXJfY2hhbm5lbCwgYmluYXJ5
LCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRlX3BhdGgpOgorICAgICAgICBzZWxmLmxv
Z2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByZWZzX3Jvb3QgPSBwcmVmc19yb290CisgICAg
ICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisgICAgICAgIHNlbGYudGVzdF90eXBlID0gdGVzdF90
eXBlCisgICAgICAgIHNlbGYuZXh0cmFfcHJlZnMgPSBleHRyYV9wcmVmcworICAgICAgICBzZWxm
LmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuZW5hYmxlX2Zpc3Npb24gPSBlbmFibGVfZmlzc2lv
bgorICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAorICAgICAg
ICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0ZV9wYXRoCisgICAgICAg
IHNlbGYuYmluYXJ5ID0gYmluYXJ5CisgICAgICAgIHNlbGYuY2VydHV0aWxfYmluYXJ5ID0gY2Vy
dHV0aWxfYmluYXJ5CisgICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRp
ZmljYXRlX3BhdGgKIAotICAgIGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgotICAgICAgICBh
c3NlcnQgc2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgbm90IE5vbmUKLSAgICAgICAgcmV0dXJuIEV4
ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydH0K
KyAgICBkZWYgY3JlYXRlKHNlbGYpOgorICAgICAgICAiIiJDcmVhdGUgYSBGaXJlZm94IHByb2Zp
bGUgYW5kIHJldHVybiB0aGUgbW96cHJvZmlsZSBQcm9maWxlIG9iamVjdCBwb2ludGluZyBhdCB0
aGF0CisgICAgICAgIHByb2ZpbGUiIiIKKyAgICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLl9sb2Fk
X3ByZWZzKCkKIAotICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToKLSAg
ICAgICAgZHVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcm9maWxlLnByb2ZpbGUsICJtaW5p
ZHVtcHMiKQorICAgICAgICBwcm9maWxlID0gRmlyZWZveFByb2ZpbGUocHJlZmVyZW5jZXM9cHJl
ZmVyZW5jZXMpCisgICAgICAgIHNlbGYuX3NldF9yZXF1aXJlZF9wcmVmcyhwcm9maWxlKQorICAg
ICAgICBpZiBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9zZXR1cF9zc2wocHJvZmlsZSkKKworICAgICAgICByZXR1cm4gcHJvZmlsZQorCisg
ICAgZGVmIF9sb2FkX3ByZWZzKHNlbGYpOgorICAgICAgICBwcmVmcyA9IFByZWZlcmVuY2VzKCkK
KworICAgICAgICBwcmVmX3BhdGhzID0gW10KIAotICAgICAgICByZXR1cm4gYm9vbChtb3pjcmFz
aC5sb2dfY3Jhc2hlcyhzZWxmLmxvZ2dlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHVtcF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bWJvbHNfcGF0aD1zZWxmLnN5bWJvbHNfcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2t3YWxrX2JpbmFyeT1zZWxmLnN0YWNrd2Fsa19i
aW5hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3M9
cHJvY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdD10
ZXN0KSkKKyAgICAgICAgcHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAn
cHJvZmlsZXMuanNvbicpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKKyAg
ICAgICAgICAgIHdpdGggb3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKKyAgICAgICAgICAgICAg
ICBmb3IgbmFtZSBpbiBqc29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKKyAgICAg
ICAgICAgICAgICAgICAgaWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5
Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpv
aW4oc2VsZi5wcmVmc19yb290LCBuYW1lLCAndXNlci5qcycpKQorICAgICAgICAgICAgICAgICAg
ICBlbGlmIG5hbWUgIT0gJ3VuaXR0ZXN0LWZlYXR1cmVzJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUs
ICd1c2VyLmpzJykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNl
IGZpbGVzIHVzZWQgYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUg
d2hlbiBubyBsb25nZXIgc3VwcG9ydGVkKQorICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMg
PSAoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZz
X2dlbmVyYWwuanMnKSwgICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKKyAgICAgICAg
ICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMn
KSwgICMgVXNlZCBpbiBGaXJlZm94IDYxCisgICAgICAgICAgICApCisgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBsZWdhY3lfcHJlZl9wYXRoczoKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZmlsZShwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkK
KworICAgICAgICBmb3IgcGF0aCBpbiBwcmVmX3BhdGhzOgorICAgICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJl
YWRfcHJlZnMocGF0aCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLndhcm5pbmcoIkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBw
YXRoKQogCi0gICAgZGVmIHNldHVwX3NzbChzZWxmKToKKyAgICAgICAgIyBBZGQgYW55IGN1c3Rv
bSBwcmVmZXJlbmNlcworICAgICAgICBwcmVmcy5hZGQoc2VsZi5leHRyYV9wcmVmcywgY2FzdD1U
cnVlKQorCisgICAgICAgIHJldHVybiBwcmVmcygpCisKKyAgICBkZWYgX3NldF9yZXF1aXJlZF9w
cmVmcyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgIiIiU2V0IHByZWZlcmVuY2VzIHJlcXVpcmVk
IGZvciB3cHRydW5uZXIgdG8gZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9l
c24ndCBzZXQgdGhlIG1hcmlvbmV0dGUgcG9ydCwgc2luY2Ugd2UgZG9uJ3QgYWx3YXlzCisgICAg
ICAgIGtub3cgdGhhdCBhdCBwcm9maWxlIGNyZWF0aW9uIHRpbWUuIFNvIHRoZSBjYWxsZXIgaXMg
cmVzcG9uaXNibGUgZm9yCisgICAgICAgIHNldHRpbmcgdGhhdCBvbmNlIGl0J3MgYXZhaWxhYmxl
LiIiIgorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7CisgICAgICAgICAgICAibmV0
d29yay5kbnMubG9jYWxEb21haW5zIjogIiwiLmpvaW4oc2VsZi5jb25maWcuZG9tYWluc19zZXQp
LAorICAgICAgICAgICAgImRvbS5maWxlLmNyZWF0ZUluQ2hpbGQiOiBUcnVlLAorICAgICAgICAg
ICAgIyBUT0RPOiBSZW1vdmUgcHJlZmVyZW5jZXMgb25jZSBGaXJlZm94IDY0IGlzIHN0YWJsZSAo
QnVnIDkwNTQwNCkKKyAgICAgICAgICAgICJuZXR3b3JrLnByb3h5LnR5cGUiOiAwLAorICAgICAg
ICAgICAgInBsYWNlcy5oaXN0b3J5LmVuYWJsZWQiOiBGYWxzZSwKKyAgICAgICAgICAgICJuZXR3
b3JrLnByZWxvYWQiOiBUcnVlLAorICAgICAgICB9KQorICAgICAgICBpZiBzZWxmLmUxMHM6Cisg
ICAgICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7ImJyb3dzZXIudGFicy5yZW1vdGUu
YXV0b3N0YXJ0IjogVHJ1ZX0pCisKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfZmlzc2lvbjoKKyAg
ICAgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiZmlzc2lvbi5hdXRvc3RhcnQiOiBU
cnVlfSkKKworICAgICAgICBpZiBzZWxmLnRlc3RfdHlwZSA9PSAicmVmdGVzdCI6CisgICAgICAg
ICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7ImxheW91dC5pbnRlcnJ1cHRpYmxlLXJlZmxv
dy5lbmFibGVkIjogRmFsc2V9KQorCisgICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEw
cywgZGlzYWJsZSBod2FjY2VsCisgICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5
c3RlbSgpIGluICgiV2luZG93cyIsICJNaWNyb3NvZnQiKSBhbmQKKyAgICAgICAgICAgICI1LjEi
IGluIHBsYXRmb3JtLnZlcnNpb24oKSk6CisgICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3By
ZWZlcmVuY2VzKHsibGF5ZXJzLmFjY2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQorCisgICAg
ZGVmIF9zZXR1cF9zc2woc2VsZiwgcHJvZmlsZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIGNlcnRp
ZmljYXRlIGRhdGFiYXNlIHRvIHVzZSBpbiB0aGUgdGVzdCBwcm9maWxlLiBUaGlzIGlzIGNvbmZp
Z3VyZWQKICAgICAgICAgdG8gdHJ1c3QgdGhlIENBIENlcnRpZmljYXRlIHRoYXQgaGFzIHNpZ25l
ZCB0aGUgd2ViLXBsYXRmb3JtLnRlc3Qgc2VydmVyCiAgICAgICAgIGNlcnRpZmljYXRlLiIiIgpA
QCAtNDkwLDE2ICs2MjksMTYgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6CiAgICAg
ICAgICAgICBjbWQgPSBbc2VsZi5jZXJ0dXRpbF9iaW5hcnldICsgbGlzdChhcmdzKQogICAgICAg
ICAgICAgc2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoImNlcnR1dGlsIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1z
dWJwcm9jZXNzLlNURE9VVCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICIuam9pbihjbWQpKQogCi0gICAgICAgIHB3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5w
cm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCisgICAgICAgIHB3X3BhdGggPSBvcy5wYXRoLmpv
aW4ocHJvZmlsZS5wcm9maWxlLCAiLmNydGRicHciKQogICAgICAgICB3aXRoIG9wZW4ocHdfcGF0
aCwgInciKSBhcyBmOgogICAgICAgICAgICAgIyBVc2UgZW1wdHkgcGFzc3dvcmQgZm9yIGNlcnRp
ZmljYXRlIGRiCiAgICAgICAgICAgICBmLndyaXRlKCJcbiIpCiAKLSAgICAgICAgY2VydF9kYl9w
YXRoID0gc2VsZi5wcm9maWxlLnByb2ZpbGUKKyAgICAgICAgY2VydF9kYl9wYXRoID0gcHJvZmls
ZS5wcm9maWxlCiAKICAgICAgICAgIyBDcmVhdGUgYSBuZXcgY2VydGlmaWNhdGUgZGIKICAgICAg
ICAgY2VydHV0aWwoIi1OIiwgIi1kIiwgY2VydF9kYl9wYXRoLCAiLWYiLCBwd19wYXRoKQpAQCAt
NTEwLDMgKzY0OSwxMDYgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6CiAKICAgICAg
ICAgIyBMaXN0IGFsbCBjZXJ0cyBpbiB0aGUgZGF0YWJhc2UKICAgICAgICAgY2VydHV0aWwoIi1M
IiwgIi1kIiwgY2VydF9kYl9wYXRoKQorCisKKworY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nl
cik6CisgICAgaW5pdF90aW1lb3V0ID0gNzAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIGJpbmFyeSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCBleHRyYV9wcmVmcz1Ob25lLCBkZWJ1
Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1Ob25lLCBzdGFja3dh
bGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1Ob25lLAorICAgICAgICAgICAgICAgICBj
YV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93ZWJyZW5kZXI9RmFs
c2UsIGVuYWJsZV9maXNzaW9uPUZhbHNlLAorICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXI9
Tm9uZSwgYmluYXJ5X2FyZ3M9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPU5vbmUsIGxlYWtfY2hl
Y2s9RmFsc2UsCisgICAgICAgICAgICAgICAgIGFzYW49RmFsc2UsIHN0eWxvX3RocmVhZHM9MSwg
Y2hhb3NfbW9kZV9mbGFncz1Ob25lLCBjb25maWc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYnJv
d3Nlcl9jaGFubmVsPSJuaWdodGx5IiwgaGVhZGxlc3M9Tm9uZSwgcHJlbG9hZF9icm93c2VyPUZh
bHNlLCAqKmt3YXJncyk6CisgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQor
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisKKyAgICAgICAgaWYgdGltZW91dF9tdWx0
aXBsaWVyOgorICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGltZW91
dCAqIHRpbWVvdXRfbXVsdGlwbGllcgorCisgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBOb25lCisK
KyAgICAgICAgc2VsZi5zdGFja2ZpeF9kaXIgPSBzdGFja2ZpeF9kaXIKKyAgICAgICAgc2VsZi5z
eW1ib2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5
ID0gc3RhY2t3YWxrX2JpbmFyeQorCisgICAgICAgIHNlbGYuYXNhbiA9IGFzYW4KKyAgICAgICAg
c2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworCisgICAgICAgIHByb2ZpbGVfY3JlYXRvciA9
IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlZnNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJh
X3ByZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jaGFubmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnR1dGlsX2JpbmFyeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydGlmaWNhdGVfcGF0
aCkKKworICAgICAgICBpZiBwcmVsb2FkX2Jyb3dzZXI6CisgICAgICAgICAgICBpbnN0YW5jZV9t
YW5hZ2VyX2NscyA9IFByZWxvYWRJbnN0YW5jZU1hbmFnZXIKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGluc3RhbmNlX21hbmFnZXJfY2xzID0gU2luZ2xlSW5zdGFuY2VNYW5hZ2VyCisgICAg
ICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlciA9IGluc3RhbmNlX21hbmFnZXJfY2xzKGxvZ2dlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
YXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5hcnlfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZV9jcmVhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFvc19tb2RlX2ZsYWdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGVz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5hYmxlX3dlYnJlbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVha19jaGVjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tmaXhfZGlyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzX3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFzYW4pCisKKworICAgIGRlZiBzZXR0aW5ncyhzZWxmLCB0ZXN0KToKKyAgICAgICAgcmV0dXJu
IHsiY2hlY2tfbGVha3MiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIG5vdCB0ZXN0LmxlYWtzLAorICAg
ICAgICAgICAgICAgICJsc2FuX2Rpc2FibGVkIjogdGVzdC5sc2FuX2Rpc2FibGVkLAorICAgICAg
ICAgICAgICAgICJsc2FuX2FsbG93ZWQiOiB0ZXN0LmxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAg
ICAgICAibHNhbl9tYXhfc3RhY2tfZGVwdGgiOiB0ZXN0LmxzYW5fbWF4X3N0YWNrX2RlcHRoLAor
ICAgICAgICAgICAgICAgICJtb3psZWFrX2FsbG93ZWQiOiBzZWxmLmxlYWtfY2hlY2sgYW5kIHRl
c3QubW96bGVha19hbGxvd2VkLAorICAgICAgICAgICAgICAgICJtb3psZWFrX3RocmVzaG9sZHMi
OiBzZWxmLmxlYWtfY2hlY2sgYW5kIHRlc3QubW96bGVha190aHJlc2hvbGR9CisKKyAgICBkZWYg
c3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxm
Lmluc3RhbmNlID0gc2VsZi5pbnN0YW5jZV9tYW5hZ2VyLmdldCgpCisgICAgICAgIHNlbGYuaW5z
dGFuY2Uub3V0cHV0X2hhbmRsZXIuc2V0dXAoc2VsZi5pbnN0YW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9tZXRhZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKKworICAgIGRlZiBzdG9w
KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5pbnN0YW5jZV9tYW5hZ2VyLnN0b3Bf
Y3VycmVudChmb3JjZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQorCisg
ICAgZGVmIHBpZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5zdGFuY2UucGlkKCkKKwor
ICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5zdGFuY2UgYW5k
IHNlbGYuaW5zdGFuY2UuaXNfYWxpdmUoKQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9
RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIudGVhcmRvd24oZm9yY2UpCisK
KyAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuaW5z
dGFuY2UgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJp
b25ldHRlX3BvcnQiOiBzZWxmLmluc3RhbmNlLm1hcmlvbmV0dGVfcG9ydH0KKworICAgIGRlZiBj
aGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToKKyAgICAgICAgZHVtcF9kaXIgPSBvcy5w
YXRoLmpvaW4oc2VsZi5pbnN0YW5jZS5ydW5uZXIucHJvZmlsZS5wcm9maWxlLCAibWluaWR1bXBz
IikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gYm9vbChtb3pjcmFzaC5sb2df
Y3Jhc2hlcyhzZWxmLmxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGR1bXBfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2t3YWxrX2JpbmFyeT1zZWxmLnN0YWNr
d2Fsa19iaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzPXByb2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0PXRlc3QpKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAg
IHNlbGYubG9nZ2VyLndhcm5pbmcoIkxvb2tpbmcgZm9yIGNyYXNoIGR1bXAgZmlsZXMgZmFpbGVk
IikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94
X2FuZHJvaWQucHkKaW5kZXggMzNiNWQ1MWU1NGU4MmFkYjZjZGJlNDYxMjI2M2JjMzA4ODNkZDEw
OC4uYTZjYjhmMGRkM2UwZjY2OWQ0N2I0YTlhNGE3MjhkOTlmYzY0ODk4OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CkBAIC0xLDI2ICsxLDMwIEBACiBpbXBvcnQg
b3MKIAogaW1wb3J0IG1vem5ldHdvcmsKLWZyb20gbW96cHJvZmlsZSBpbXBvcnQgRmlyZWZveFBy
b2ZpbGUKIGZyb20gbW96cnVubmVyIGltcG9ydCBGZW5uZWNFbXVsYXRvclJ1bm5lcgogCiBmcm9t
IC5iYXNlIGltcG9ydCAoZ2V0X2ZyZWVfcG9ydCwKICAgICAgICAgICAgICAgICAgICBjbWRfYXJn
LAogICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfY29tbWFuZCkKIGZyb20gLi5leGVjdXRvcnMu
ZXhlY3V0b3JtYXJpb25ldHRlIGltcG9ydCAoTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3Is
ICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9y
LCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorZnJvbSAuLnBy
b2Nlc3MgaW1wb3J0IGNhc3RfZW52Citmcm9tIC5iYXNlIGltcG9ydCAoQnJvd3NlciwKKyAgICAg
ICAgICAgICAgICAgICBFeGVjdXRvckJyb3dzZXIpCiBmcm9tIC5maXJlZm94IGltcG9ydCAoZ2V0
X3RpbWVvdXRfbXVsdGlwbGllciwgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAg
IHJ1bl9pbmZvX2V4dHJhcyBhcyBmeF9ydW5faW5mb19leHRyYXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgdXBkYXRlX3Byb3BlcnRpZXMsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9rd2FyZ3MsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAg
ICBGaXJlZm94QnJvd3NlcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgIFBy
b2ZpbGVDcmVhdG9yIGFzIEZpcmVmb3hQcm9maWxlQ3JlYXRvcikKIAogCiBfX3dwdHJ1bm5lcl9f
ID0geyJwcm9kdWN0IjogImZpcmVmb3hfYW5kcm9pZCIsCiAgICAgICAgICAgICAgICAgICJjaGVj
a19hcmdzIjogImNoZWNrX2FyZ3MiLAogICAgICAgICAgICAgICAgICAiYnJvd3NlciI6ICJGaXJl
Zm94QW5kcm9pZEJyb3dzZXIiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3Ro
YXJuZXNzIjogIk1hcmlvbmV0dGVUZXN0aGFybmVzc0V4ZWN1dG9yIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIk1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IifSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIk1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6
ICJNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImJyb3dz
ZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9y
X2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJh
cyI6ICJlbnZfZXh0cmFzIiwKQEAgLTUxLDYgKzU1LDcgQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAi
dGltZW91dF9tdWx0aXBsaWVyIjogZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpLAorICAgICAgICAgICAgImUxMHMiOiBydW5faW5mb19k
YXRhWyJlMTBzIl0sCiAgICAgICAgICAgICAjIGRlc2t0b3Agb25seQogICAgICAgICAgICAgImxl
YWtfY2hlY2siOiBGYWxzZSwKICAgICAgICAgICAgICJzdHlsb190aHJlYWRzIjoga3dhcmdzWyJz
dHlsb190aHJlYWRzIl0sCkBAIC04MCw0MCArODUsMTUgQEAgZGVmIGVudl9vcHRpb25zKCk6CiAg
ICAgICAgICAgICAic3VwcG9ydHNfZGVidWdnZXIiOiBUcnVlfQogCiAKLWNsYXNzIEZpcmVmb3hB
bmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6Ci0gICAgaW5pdF90aW1lb3V0ID0gMzAwCi0g
ICAgc2h1dGRvd25fdGltZW91dCA9IDYwCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIHBhY2thZ2VfbmFtZT0ib3JnLm1vemlsbGEuZ2Vja292
aWV3LnRlc3QiLAotICAgICAgICAgICAgICAgICBkZXZpY2Vfc2VyaWFsPSJlbXVsYXRvci01NDQ0
IiwgKiprd2FyZ3MpOgotICAgICAgICBGaXJlZm94QnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIE5vbmUsIHByZWZzX3Jvb3QsIHRlc3RfdHlwZSwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYu
cGFja2FnZV9uYW1lID0gcGFja2FnZV9uYW1lCi0gICAgICAgIHNlbGYuZGV2aWNlX3NlcmlhbCA9
IGRldmljZV9zZXJpYWwKLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0ga3dhcmdzWyJ0ZXN0c19y
b290Il0KLSAgICAgICAgc2VsZi5pbnN0YWxsX2ZvbnRzID0ga3dhcmdzWyJpbnN0YWxsX2ZvbnRz
Il0KLSAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5ID0ga3dhcmdzWyJzdGFja3dhbGtfYmlu
YXJ5Il0KLQotICAgIGRlZiBzdGFydChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHNlbGYu
bWFyaW9uZXR0ZV9wb3J0IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9y
dCA9IGdldF9mcmVlX3BvcnQoKQotCi0gICAgICAgIGVudiA9IHt9Ci0gICAgICAgIGVudlsiTU9a
X0NSQVNIUkVQT1JURVIiXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9DUkFTSFJFUE9SVEVSX1NI
VVRET1dOIl0gPSAiMSIKLSAgICAgICAgZW52WyJNT1pfRElTQUJMRV9OT05MT0NBTF9DT05ORUNU
SU9OUyJdID0gIjEiCi0gICAgICAgIGVudlsiU1RZTE9fVEhSRUFEUyJdID0gc3RyKHNlbGYuc3R5
bG9fdGhyZWFkcykKLSAgICAgICAgaWYgc2VsZi5jaGFvc19tb2RlX2ZsYWdzIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZW52WyJNT1pfQ0hBT1NNT0RFIl0gPSBzdHIoc2VsZi5jaGFvc19tb2Rl
X2ZsYWdzKQotICAgICAgICBpZiBzZWxmLmVuYWJsZV93ZWJyZW5kZXI6Ci0gICAgICAgICAgICBl
bnZbIk1PWl9XRUJSRU5ERVIiXSA9ICIxIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW52
WyJNT1pfV0VCUkVOREVSIl0gPSAiMCIKLQotICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYubG9h
ZF9wcmVmcygpCitjbGFzcyBQcm9maWxlQ3JlYXRvcihGaXJlZm94UHJvZmlsZUNyZWF0b3IpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3QsIGNvbmZpZywgdGVzdF90
eXBlLCBleHRyYV9wcmVmcywgZTEwcywKKyAgICAgICAgICAgICAgICAgZW5hYmxlX2Zpc3Npb24s
IGJyb3dzZXJfY2hhbm5lbCwgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKToK
KyAgICAgICAgc3VwZXIoUHJvZmlsZUNyZWF0b3IsIHNlbGYpLl9faW5pdF9fKGxvZ2dlciwgcHJl
ZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTEwcywgZW5hYmxlX2Zpc3Npb24sIGJyb3dz
ZXJfY2hhbm5lbCwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNlcnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCkKIAotICAgICAgICBz
ZWxmLnByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJlbmNlcykKLSAg
ICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Ci0gICAgICAgICAgICAibWFyaW9u
ZXR0ZS5wb3J0Ijogc2VsZi5tYXJpb25ldHRlX3BvcnQsCisgICAgZGVmIF9zZXRfcmVxdWlyZWRf
cHJlZnMoc2VsZiwgcHJvZmlsZSk6CisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsK
ICAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNv
bmZpZy5kb21haW5zX3NldCksCiAgICAgICAgICAgICAiZG9tLmRpc2FibGVfb3Blbl9kdXJpbmdf
bG9hZCI6IEZhbHNlLAogICAgICAgICAgICAgInBsYWNlcy5oaXN0b3J5LmVuYWJsZWQiOiBGYWxz
ZSwKQEAgLTEyMSw5ICsxMDEsMTIgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVm
b3hCcm93c2VyKToKICAgICAgICAgICAgICJuZXR3b3JrLnByZWxvYWQiOiBUcnVlLAogICAgICAg
ICB9KQogCisgICAgICAgIGlmIHNlbGYuZTEwczoKKyAgICAgICAgICAgIHByb2ZpbGUuc2V0X3By
ZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRvc3RhcnQiOiBUcnVlfSkKKwogICAg
ICAgICBpZiBzZWxmLnRlc3RfdHlwZSA9PSAicmVmdGVzdCI6CiAgICAgICAgICAgICBzZWxmLmxv
Z2dlci5pbmZvKCJTZXR0aW5nIGFuZHJvaWQgcmVmdGVzdCBwcmVmZXJlbmNlcyIpCi0gICAgICAg
ICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAgICAgIHByb2ZpbGUu
c2V0X3ByZWZlcmVuY2VzKHsKICAgICAgICAgICAgICAgICAiYnJvd3Nlci52aWV3cG9ydC5kZXNr
dG9wV2lkdGgiOiA4MDAsCiAgICAgICAgICAgICAgICAgIyBEaXNhYmxlIGhpZ2ggRFBJCiAgICAg
ICAgICAgICAgICAgImxheW91dC5jc3MuZGV2UGl4ZWxzUGVyUHgiOiAiMS4wIiwKQEAgLTEzNSw2
ICsxMTgsNzMgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToK
ICAgICAgICAgICAgICAgICAibGF5b3V0LnRlc3Rpbmcub3ZlcmxheS1zY3JvbGxiYXJzLmFsd2F5
cy12aXNpYmxlIjogVHJ1ZSwKICAgICAgICAgICAgIH0pCiAKKworCitjbGFzcyBGaXJlZm94QW5k
cm9pZEJyb3dzZXIoQnJvd3Nlcik6CisgICAgaW5pdF90aW1lb3V0ID0gMzAwCisgICAgc2h1dGRv
d25fdGltZW91dCA9IDYwCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcmVmc19y
b290LCB0ZXN0X3R5cGUsIHBhY2thZ2VfbmFtZT0ib3JnLm1vemlsbGEuZ2Vja292aWV3LnRlc3Qi
LAorICAgICAgICAgICAgICAgICBkZXZpY2Vfc2VyaWFsPSJlbXVsYXRvci01NDQ0IiwgZXh0cmFf
cHJlZnM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAorICAgICAgICAgICAgICAgICBzeW1ib2xzX3Bh
dGg9Tm9uZSwgc3RhY2t3YWxrX2JpbmFyeT1Ob25lLCBjZXJ0dXRpbF9iaW5hcnk9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgY2FfY2VydGlmaWNhdGVfcGF0aD1Ob25lLCBlMTBzPUZhbHNlLCBlbmFi
bGVfd2VicmVuZGVyPUZhbHNlLCBzdGFja2ZpeF9kaXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAg
YmluYXJ5X2FyZ3M9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPU5vbmUsIGxlYWtfY2hlY2s9RmFs
c2UsIGFzYW49RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0eWxvX3RocmVhZHM9MSwgY2hhb3Nf
bW9kZV9mbGFncz1Ob25lLCBjb25maWc9Tm9uZSwgYnJvd3Nlcl9jaGFubmVsPSJuaWdodGx5IiwK
KyAgICAgICAgICAgICAgICAgaW5zdGFsbF9mb250cz1GYWxzZSwgdGVzdHNfcm9vdD1Ob25lLCAq
Kmt3YXJncyk6CisKKyAgICAgICAgc3VwZXIoRmlyZWZveEFuZHJvaWRCcm93c2VyLCBzZWxmKS5f
X2luaXRfXyhsb2dnZXIpCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jvb3QKKyAg
ICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUKKyAgICAgICAgc2VsZi5wYWNrYWdlX25h
bWUgPSBwYWNrYWdlX25hbWUKKyAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gZGV2aWNlX3Nl
cmlhbAorICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCisgICAgICAgIHNlbGYu
c3ltYm9sc19wYXRoID0gc3ltYm9sc19wYXRoCisgICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFy
eSA9IHN0YWNrd2Fsa19iaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0
dXRpbF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlm
aWNhdGVfcGF0aAorICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuZW5hYmxl
X3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKKyAgICAgICAgc2VsZi5zdGFja2ZpeF9kaXIg
PSBzdGFja2ZpeF9kaXIKKyAgICAgICAgc2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCisg
ICAgICAgIHNlbGYudGltZW91dF9tdWx0aXBsaWVyID0gdGltZW91dF9tdWx0aXBsaWVyCisgICAg
ICAgIHNlbGYubGVha19jaGVjayA9IGxlYWtfY2hlY2sKKyAgICAgICAgc2VsZi5hc2FuID0gYXNh
bgorICAgICAgICBzZWxmLnN0eWxvX3RocmVhZHMgPSBzdHlsb190aHJlYWRzCisgICAgICAgIHNl
bGYuY2hhb3NfbW9kZV9mbGFncyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5jb25m
aWcgPSBjb25maWcKKyAgICAgICAgc2VsZi5icm93c2VyX2NoYW5uZWwgPSBicm93c2VyX2NoYW5u
ZWwKKyAgICAgICAgc2VsZi5pbnN0YWxsX2ZvbnRzID0gaW5zdGFsbF9mb250cworICAgICAgICBz
ZWxmLnRlc3RzX3Jvb3QgPSB0ZXN0c19yb290CisKKyAgICAgICAgc2VsZi5wcm9maWxlX2NyZWF0
b3IgPSBQcm9maWxlQ3JlYXRvcihsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJlZnNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dHJhX3ByZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJvd3Nlcl9jaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNlcnR1dGlsX2JpbmFyeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQorCisgICAg
ICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0gTm9uZQorICAgICAgICBzZWxmLnByb2ZpbGUgPSBO
b25lCisgICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorCisgICAgZGVmIHNldHRpbmdzKHNlbGYs
IHRlc3QpOgorICAgICAgICByZXR1cm4geyJjaGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBh
bmQgbm90IHRlc3QubGVha3MsCisgICAgICAgICAgICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3Qu
bHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAgICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRl
c3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dl
ZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX2FsbG93ZWQsCisgICAgICAgICAg
ICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5tb3ps
ZWFrX3RocmVzaG9sZH0KKworICAgIGRlZiBzdGFydChzZWxmLCAqKmt3YXJncyk6CisgICAgICAg
IGlmIHNlbGYubWFyaW9uZXR0ZV9wb3J0IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLm1hcmlv
bmV0dGVfcG9ydCA9IGdldF9mcmVlX3BvcnQoKQorCisgICAgICAgIHNlbGYucHJvZmlsZSA9IHNl
bGYucHJvZmlsZV9jcmVhdG9yLmNyZWF0ZSgpCisgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJl
ZmVyZW5jZXMoeyJtYXJpb25ldHRlLnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydH0pCisKICAg
ICAgICAgaWYgc2VsZi5pbnN0YWxsX2ZvbnRzOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoIkNvcHlpbmcgQWhlbSBmb250IHRvIHByb2ZpbGUiKQogICAgICAgICAgICAgZm9udF9kaXIg
PSBvcy5wYXRoLmpvaW4oc2VsZi5wcm9maWxlLnByb2ZpbGUsICJmb250cyIpCkBAIC0xNDYsMTgg
KzE5NiwyNyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgog
CiAgICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUKIAotICAgICAgICBpZiBzZWxm
LmNhX2NlcnRpZmljYXRlX3BhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldHVw
X3NzbCgpCi0KICAgICAgICAgZGVidWdfYXJncywgY21kID0gYnJvd3Nlcl9jb21tYW5kKHNlbGYu
cGFja2FnZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyBpZiBzZWxmLmJpbmFyeV9hcmdzIGVsc2UgW10gKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtZF9hcmcoIm1hcmlvbmV0dGUiKSwg
ImFib3V0OmJsYW5rIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmRlYnVnX2luZm8pCiAKKyAgICAgICAgZW52ID0ge30KKyAgICAgICAgZW52WyJNT1pf
Q1JBU0hSRVBPUlRFUiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVJfU0hV
VERPV04iXSA9ICIxIgorICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FMX0NPTk5FQ1RJ
T05TIl0gPSAiMSIKKyAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIoc2VsZi5zdHls
b190aHJlYWRzKQorICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNoYW9zX21vZGVf
ZmxhZ3MpCisgICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKKyAgICAgICAgICAgIGVu
dlsiTU9aX1dFQlJFTkRFUiJdID0gIjEiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbnZb
Ik1PWl9XRUJSRU5ERVIiXSA9ICIwIgorCiAgICAgICAgIHNlbGYucnVubmVyID0gRmVubmVjRW11
bGF0b3JSdW5uZXIoYXBwPXNlbGYucGFja2FnZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGU9c2VsZi5wcm9maWxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZGFyZ3M9Y21kWzE6XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1zZWxmLnN5
bWJvbHNfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXJpYWw9c2VsZi5kZXZpY2Vfc2VyaWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgVE9ETyAtIGNob29zZSBhcHByb3ByaWF0ZSBsb2cgZGlyCkBAIC0xOTYs
NiArMjU1LDI2IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6
CiAgICAgICAgICAgICBzZWxmLnJ1bm5lci5zdG9wKCkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcoInN0b3BwZWQiKQogCisgICAgZGVmIHBpZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5u
ZXIucHJvY2Vzc19oYW5kbGVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bm5lci5wcm9jZXNzX2hhbmRs
ZXIucGlkCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYucnVubmVy
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKQorICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhbnVwKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAg
ICAgc2VsZi5zdG9wKGZvcmNlKQorCisgICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Cisg
ICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsibWFyaW9uZXR0ZV9wb3J0Ijogc2VsZi5t
YXJpb25ldHRlX3BvcnR9CisKICAgICBkZWYgY2hlY2tfY3Jhc2goc2VsZiwgcHJvY2VzcywgdGVz
dCk6CiAgICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgiTUlOSURVTVBfU1RBQ0tXQUxLIiwg
IiIpIGFuZCBzZWxmLnN0YWNrd2Fsa19iaW5hcnk6CiAgICAgICAgICAgICBvcy5lbnZpcm9uWyJN
SU5JRFVNUF9TVEFDS1dBTEsiXSA9IHNlbGYuc3RhY2t3YWxrX2JpbmFyeQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5
CmluZGV4IDYzNWU4MjdjMjk1YjViMTE5MjgyMmY1MWQ5M2E0YjA5ZTM3NjQxOTIuLjc4YzIyYjkw
OWFjZjQxMDAzOGZmMDY3NjkzNjY2NjJhYjBjNTg5YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9pZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKQEAgLTY0
LDcgKzY0LDcgQEAgY2xhc3MgSW50ZXJuZXRFeHBsb3JlckJyb3dzZXIoQnJvd3Nlcik6CiAgICAg
ICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIgaXMgYWxpdmUs
CiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93
c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNl
cnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAg
ICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvb3BlcmEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3Bl
cmEucHkKaW5kZXggNTVjMDUwOWVlZDkyYTJhYmUyN2NkNjJjZTQwZDc0OWRkYWNiNmE4My4uODA1
ZmVkZWU2MzZjZDIyMTU1ZWQxNDNjZjExNDhmM2MyZjVkOThlNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVy
YS5weQpAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBPcGVyYUJyb3dzZXIoQnJvd3Nlcik6CiAgICAg
ICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUs
CiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93
c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNl
cnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAg
ICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nh
ZmFyaS5weQppbmRleCBmNGZkMzMxM2Y5ZmJiYzFiZjE3Zjg3MGQzOTUwNjk0NmI5NTM4YjY3Li5j
YjJiMTc1ZDRkZmJjMzE2NmU0YWQ1YTZhZmUxNzRmZmRiYzZmZjhhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9z
YWZhcmkucHkKQEAgLTMsNyArMyw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211
bHRpcGxpZXIgICAjIG5vcWE6IEY0MDEKIGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBT
YWZhcmlEcml2ZXJTZXJ2ZXIKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJn
cyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRy
aXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZU
ZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRl
c3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcnNhZmFy
aSBpbXBvcnQgU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogCiAKQEAg
LTEyLDcgKzEzLDggQEAgX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJzYWZhcmkiLAogICAg
ICAgICAgICAgICAgICAiYnJvd3NlciI6ICJTYWZhcmlCcm93c2VyIiwKICAgICAgICAgICAgICAg
ICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1
dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZl
clJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIlNhZmFyaURyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2RzcGVjIjogIlNhZmFyaURyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhl
Y3V0b3IifSwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dh
cmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2Fy
Z3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKQEAgLTc5
LDcgKzgxLDcgQEAgY2xhc3MgU2FmYXJpQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RP
KGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAg
IyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lv
bgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2Fs
aXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xl
YW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9zYXVjZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZS5weQppbmRl
eCAzMzAxYzc1YjIxMDA0YTU1NGY5MWQ0NzY3Yjg1NjBmYzQwMjE0NDEyLi5mZTgzNjgyZjVmYzE2
ZjRiMmRhNjY0YjhlNmNhNGRiYzhkZGM1MDljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvc2F1Y2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CkBAIC05
LDEwICs5LDExIEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGFyZmlsZQogaW1wb3J0IHRl
bXBmaWxlCiBpbXBvcnQgdGltZQotZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPIGFzIENT
dHJpbmdJTwogCiBpbXBvcnQgcmVxdWVzdHMKIAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IGNTdHJp
bmdJTyBhcyBTdHJpbmdJTworCiBmcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBFeGVjdXRvckJy
b3dzZXIsIHJlcXVpcmVfYXJnCiBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBs
aWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2Fy
Z3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKQEAgLTEyNCw3ICsxMjUsNyBAQCBkZWYgZW52X29w
dGlvbnMoKToKIGRlZiBnZXRfdGFyKHVybCwgZGVzdCk6CiAgICAgcmVzcCA9IHJlcXVlc3RzLmdl
dCh1cmwsIHN0cmVhbT1UcnVlKQogICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCi0gICAgd2l0
aCB0YXJmaWxlLm9wZW4oZmlsZW9iaj1DU3RyaW5nSU8ocmVzcC5yYXcucmVhZCgpKSkgYXMgZjoK
KyAgICB3aXRoIHRhcmZpbGUub3BlbihmaWxlb2JqPVN0cmluZ0lPKHJlc3AucmF3LnJlYWQoKSkp
IGFzIGY6CiAgICAgICAgIGYuZXh0cmFjdGFsbChwYXRoPWRlc3QpCiAKIApAQCAtMTc4LDcgKzE3
OSw3IEBAIGNsYXNzIFNhdWNlQ29ubmVjdCgpOgogCiAgICAgICAgIHRvdF93YWl0ID0gMAogICAg
ICAgICB3aGlsZSBub3Qgb3MucGF0aC5leGlzdHMoJy4vc2F1Y2VfaXNfcmVhZHknKSBhbmQgc2Vs
Zi5zY19wcm9jZXNzLnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgaWYgdG90X3dhaXQgPj0g
c2VsZi5zYXVjZV9pbml0X3RpbWVvdXQ6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zYXVjZV9p
bml0X3RpbWVvdXQgb3IgKHRvdF93YWl0ID49IHNlbGYuc2F1Y2VfaW5pdF90aW1lb3V0KToKICAg
ICAgICAgICAgICAgICBzZWxmLnF1aXQoKQogCiAgICAgICAgICAgICAgICAgcmFpc2UgU2F1Y2VF
eGNlcHRpb24oIlNhdWNlIENvbm5lY3QgUHJveHkgd2FzIG5vdCByZWFkeSBhZnRlciAlZCBzZWNv
bmRzIiAlIHRvdF93YWl0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZv
ZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5CmluZGV4IDI5
NTNkZTE4MTc0ZWY3NWQ1MDVkYjBiOGQ1MThmZTMzMzlmNzA2NWUuLjAyYjc5NmI3NTYwMzg1Y2Qw
MDkwMmJiZmMxYjM2MWE1NDIyNDlmODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zZXJ2b2RyaXZlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIu
cHkKQEAgLTExLDYgKzExLDcgQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dh
cmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2Vy
dm9kcml2ZXIgaW1wb3J0IChTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IsICAjIG5v
cWE6IEY0MDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl
cnZvV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2Vz
cyBpbXBvcnQgY2FzdF9lbnYKIAogaGVyZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9f
ZmlsZV9fKVswXSkKIApAQCAtMTMwLDExICsxMzEsMTEgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJC
cm93c2VyKEJyb3dzZXIpOgogICAgICAgICBpZiBub3Qgc2VsZi5kZWJ1Z19pbmZvIG9yIG5vdCBz
ZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmU6CiAgICAgICAgICAgICBzZWxmLnByb2MgPSBQcm9j
ZXNzSGFuZGxlcihzZWxmLmNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzT3V0cHV0TGluZT1bc2VsZi5vbl9vdXRwdXRdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmVPdXRwdXQ9RmFsc2UpCiAgICAgICAgICAgICBzZWxm
LnByb2MucnVuKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnBy
b2Nlc3MuUG9wZW4oc2VsZi5jb21tYW5kLCBlbnY9ZW52KQorICAgICAgICAgICAgc2VsZi5wcm9j
ID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1jYXN0X2VudihlbnYpKQogCiAg
ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXJ2byBTdGFydGVkIikKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
ZWJraXQucHkKaW5kZXggYWEyODYyMTM5NDUwZjY4MmU2MDUxYzVmNjE3YWI4Y2FmMTk2MDc4NC4u
ZGE5M2NmMTY0Mzk5NWQ5NWI4ZDZkZTFmNzBjNzczMWI1NTU5NzY4YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
d2Via2l0LnB5CkBAIC0yLDcgKzIsOCBAQCBmcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBFeGVj
dXRvckJyb3dzZXIsIHJlcXVpcmVfYXJnCiBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9t
dWx0aXBsaWVyLCBjZXJ0aWZpY2F0ZV9kb21haW5fbGlzdCAgIyBub3FhOiBGNDAxCiBmcm9tIC4u
ZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MK
IGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJkcml2ZXIgaW1wb3J0IChXZWJEcml2ZXJUZXN0
aGFybmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAx
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVm
VGVzdEV4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEK
IGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJraXQgaW1wb3J0IFdlYktpdERyaXZlcldkc3Bl
Y0V4ZWN1dG9yICAjIG5vcWE6IEY0MDEKIGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBX
ZWJLaXREcml2ZXJTZXJ2ZXIKIApAQCAtMTMsNyArMTQsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJw
cm9kdWN0IjogIndlYmtpdCIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyX2t3YXJncyI6ICJi
cm93c2VyX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5l
c3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJXZWJLaXREcml2ZXJXZHNwZWNFeGVj
dXRvciJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJXZWJLaXRE
cml2ZXJXZHNwZWNFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogIldlYkRyaXZlckNyYXNodGVzdEV4ZWN1dG9yIn0sCiAgICAgICAgICAgICAgICAg
ICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAg
ImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsCiAgICAgICAgICAgICAgICAgICJlbnZfb3B0aW9u
cyI6ICJlbnZfb3B0aW9ucyIsCkBAIC05OSw3ICsxMDEsNyBAQCBjbGFzcyBXZWJLaXRCcm93c2Vy
KEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUg
ZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91
dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAg
ICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3Ao
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nl
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXRndGtfbWluaWJyb3dzZXIucHkKaW5k
ZXggZDczNWYzYzA3OTJhNjM1NmM2MjcwMTQzMjA1YzU1YjdjMDJlZWY0Ny4uZDhiOTc0NGJkNzQz
ZTM5Y2UxOWYwMDhlN2Y0MGNiYzgwZTgwMTA3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CkBAIC0yLDcgKzIsOCBAQCBmcm9tIC5iYXNlIGlt
cG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVyLCBtYXliZV9hZGRfYXJncywgY2VydGlmaWNhdGVf
ZG9tYWluX2xpcwogZnJvbSAud2Via2l0IGltcG9ydCBXZWJLaXRCcm93c2VyCiBmcm9tIC4uZXhl
Y3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZy
b20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJkcml2ZXIgaW1wb3J0IChXZWJEcml2ZXJUZXN0aGFy
bmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVz
dEV4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKIGZy
b20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJraXQgaW1wb3J0IFdlYktpdERyaXZlcldkc3BlY0V4
ZWN1dG9yICAjIG5vcWE6IEY0MDEKIAogX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJ3ZWJr
aXRndGtfbWluaWJyb3dzZXIiLApAQCAtMTEsNyArMTIsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJw
cm9kdWN0IjogIndlYmtpdGd0a19taW5pYnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJicm93
c2VyX2t3YXJncyI6ICJicm93c2VyX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRv
ciI6IHsidGVzdGhhcm5lc3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZUZXN0RXhl
Y3V0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJXZWJLaXRE
cml2ZXJXZHNwZWNFeGVjdXRvciJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndk
c3BlYyI6ICJXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIldlYkRyaXZlckNyYXNodGVzdEV4ZWN1dG9yIn0sCiAg
ICAgICAgICAgICAgICAgICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsCiAgICAgICAgICAgICAg
ICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZW52aXJvbm1lbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQucHkKaW5kZXggZTc5
YWUzNzUwNjQ3Zjg4YmJhNDQ3MDMxODFjMjA4MjI5ODAwZjY1OC4uZjc2ODM2ZWE2NmI1OWJiMTZm
MmQzNzkyNDUxYmNmMjhlY2IyZmI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25t
ZW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQpAQCAtNSw2ICs1LDcgQEAg
aW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKK2Zy
b20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogZnJvbSBtb3psb2cgaW1wb3J0IGdldF9kZWZhdWx0
X2xvZ2dlciwgaGFuZGxlcnMsIHByb3h5CiAKQEAgLTUyLDcgKzUzLDkgQEAgY2xhc3MgVGVzdEVu
dmlyb25tZW50RXJyb3IoRXhjZXB0aW9uKToKIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3Qp
OgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IG93bnMgdGhlIHRlc3QgZW52aXJvbm1lbnQg
aS5lLiB0aGUgaHR0cCBhbmQKICAgICB3ZWJzb2NrZXRzIHNlcnZlcnMiIiIKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGVzdF9wYXRocywgdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIsIHBh
dXNlX2FmdGVyX3Rlc3QsIGRlYnVnX2luZm8sIG9wdGlvbnMsIHNzbF9jb25maWcsIGVudl9leHRy
YXMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1l
b3V0X211bHRpcGxlciwKKyAgICAgICAgICAgICAgICAgcGF1c2VfYWZ0ZXJfdGVzdCwgZGVidWdf
aW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywgZW52X2V4dHJhcywKKyAgICAgICAgICAgICAgICAg
ZW5hYmxlX3F1aWM9RmFsc2UpOgogICAgICAgICBzZWxmLnRlc3RfcGF0aHMgPSB0ZXN0X3BhdGhz
CiAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQogICAgICAgICBzZWxmLmNvbmZpZ19jdHggPSBO
b25lCkBAIC02OCw2ICs3MSw3IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAg
ICAgICBzZWxmLmVudl9leHRyYXMgPSBlbnZfZXh0cmFzCiAgICAgICAgIHNlbGYuZW52X2V4dHJh
c19jbXMgPSBOb25lCiAgICAgICAgIHNlbGYuc3NsX2NvbmZpZyA9IHNzbF9jb25maWcKKyAgICAg
ICAgc2VsZi5lbmFibGVfcXVpYyA9IGVuYWJsZV9xdWljCiAKICAgICBkZWYgX19lbnRlcl9fKHNl
bGYpOgogICAgICAgICBzZWxmLmNvbmZpZ19jdHggPSBzZWxmLmJ1aWxkX2NvbmZpZygpCkBAIC05
MSw2ICs5NSw3IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogCiAgICAgICAgIHNl
bGYuc2VydmVycyA9IHNlcnZlLnN0YXJ0KHNlbGYuY29uZmlnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmdldF9yb3V0ZXMoKSkKKwogICAgICAgICBpZiBzZWxmLm9w
dGlvbnMuZ2V0KCJzdXBwb3J0c19kZWJ1Z2dlciIpIGFuZCBzZWxmLmRlYnVnX2luZm8gYW5kIHNl
bGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYuaWdub3JlX2ludGVy
cnVwdHMoKQogICAgICAgICByZXR1cm4gc2VsZgpAQCAtOTgsNyArMTAzLDcgQEAgY2xhc3MgVGVz
dEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBl
eGNfdmFsLCBleGNfdGIpOgogICAgICAgICBzZWxmLnByb2Nlc3NfaW50ZXJydXB0cygpCiAKLSAg
ICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBzZWxmLnNlcnZlcnMuaXRlcml0ZW1zKCk6Cisg
ICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gaXRlcml0ZW1zKHNlbGYuc2VydmVycyk6CiAg
ICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNlcnZlcnM6CiAgICAgICAgICAgICAgICAg
c2VydmVyLmtpbGwoKQogICAgICAgICBmb3IgY20gaW4gc2VsZi5lbnZfZXh0cmFzX2NtczoKQEAg
LTEyNiw3ICsxMzEsMTAgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
ICAgICAiaHR0cHMiOiBbODQ0M10sCiAgICAgICAgICAgICAid3MiOiBbODg4OF0sCiAgICAgICAg
ICAgICAid3NzIjogWzg4ODldLAorICAgICAgICAgICAgImgyIjogWzkwMDBdLAogICAgICAgICB9
CisgICAgICAgIGlmIHNlbGYuZW5hYmxlX3F1aWM6CisgICAgICAgICAgICBjb25maWcucG9ydHNb
InF1aWMiXSA9IFsxMDAwMF0KIAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZV9w
YXRoKToKICAgICAgICAgICAgIHdpdGggb3BlbihvdmVycmlkZV9wYXRoKSBhcyBmOgpAQCAtMTkx
LDEwICsxOTksMTAgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAgICAg
ICBkYXRhICs9IGZwLnJlYWQoKQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUs
ICJ0ZXN0ZHJpdmVyLWV4dHJhLmpzIiksICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgZGF0YSAr
PSBmcC5yZWFkKCkKLSAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfaGFuZGxlcihiIkdFVCIsIGIi
L3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKKyAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfaGFu
ZGxlcigiR0VUIiwgIi9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nSGFuZGxlcihkYXRhLCAidGV4dC9qYXZhc2NyaXB0Iikp
CiAKLSAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBzZWxmLnRlc3RfcGF0aHMuaXRlcml0
ZW1zKCk6CisgICAgICAgIGZvciB1cmxfYmFzZSwgcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYudGVz
dF9wYXRocyk6CiAgICAgICAgICAgICBpZiB1cmxfYmFzZSA9PSAiLyI6CiAgICAgICAgICAgICAg
ICAgY29udGludWUKICAgICAgICAgICAgIHJvdXRlX2J1aWxkZXIuYWRkX21vdW50X3BvaW50KHVy
bF9iYXNlLCBwYXRoc1sidGVzdHNfcGF0aCJdKQpAQCAtMjEwLDggKzIxOCwxMCBAQCBjbGFzcyBU
ZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgZWFjaF9zbGVlcF9zZWNzID0gMC41CiAg
ICAgICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkgKyB0b3RhbF9zbGVlcF9zZWNzCiAgICAgICAg
IHdoaWxlIHRpbWUudGltZSgpIDwgZW5kX3RpbWU6Ci0gICAgICAgICAgICBmYWlsZWQgPSBzZWxm
LnRlc3Rfc2VydmVycygpCi0gICAgICAgICAgICBpZiBub3QgZmFpbGVkOgorICAgICAgICAgICAg
ZmFpbGVkLCBwZW5kaW5nID0gc2VsZi50ZXN0X3NlcnZlcnMoKQorICAgICAgICAgICAgaWYgZmFp
bGVkOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3QgcGVuZGluZzoK
ICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHRpbWUuc2xlZXAoZWFjaF9zbGVl
cF9zZWNzKQogICAgICAgICByYWlzZSBFbnZpcm9ubWVudEVycm9yKCJTZXJ2ZXJzIGZhaWxlZCB0
byBzdGFydDogJXMiICUKQEAgLTIxOSwxOSArMjI5LDIzIEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVu
dChvYmplY3QpOgogCiAgICAgZGVmIHRlc3Rfc2VydmVycyhzZWxmKToKICAgICAgICAgZmFpbGVk
ID0gW10KKyAgICAgICAgcGVuZGluZyA9IFtdCiAgICAgICAgIGhvc3QgPSBzZWxmLmNvbmZpZ1si
c2VydmVyX2hvc3QiXQotICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVy
cy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMo
c2VsZi5zZXJ2ZXJzKToKICAgICAgICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLnRlc3Rfc2VydmVyX3BvcnQ6CisgICAgICAgICAgICAg
ICAgaWYgbm90IHNlcnZlci5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBmYWlsZWQu
YXBwZW5kKChzY2hlbWUsIHBvcnQpKQorCisgICAgICAgIGlmIG5vdCBmYWlsZWQgYW5kIHNlbGYu
dGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAgICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gaXRl
cml0ZW1zKHNlbGYuc2VydmVycyk6CisgICAgICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBp
biBzZXJ2ZXJzOgogICAgICAgICAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCiAgICAg
ICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjEpCiAgICAgICAgICAgICAgICAgICAgIHRy
eToKICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCiAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsZWQuYXBwZW5kKChob3N0LCBwb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBlbmRpbmcuYXBwZW5kKChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgZmluYWxs
eToKICAgICAgICAgICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCi0gICAgICAgICAgICAgICAg
aWYgbm90IHNlcnZlci5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAgICAgICBmYWlsZWQuYXBw
ZW5kKChzY2hlbWUsIHBvcnQpKQotICAgICAgICByZXR1cm4gZmFpbGVkCisgICAgICAgIHJldHVy
biBmYWlsZWQsIHBlbmRpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0
aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYWN0aW9ucy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YzQzZGQ2NjVhMmYzYmM1NTc2Y2I1MzVmMjlkNDlhYmJjOTU5M2ZkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5CkBAIC0wLDAgKzEsMTg0IEBACisK
K2NsYXNzIENsaWNrQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJjbGljayIKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIg
PSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19j
YWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGVjdG9yID0gcGF5bG9hZFsic2VsZWN0
b3IiXQorICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9z
ZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNsaWNraW5nIGVs
ZW1lbnQ6ICVzIiAlIHNlbGVjdG9yKQorICAgICAgICBzZWxmLnByb3RvY29sLmNsaWNrLmVsZW1l
bnQoZWxlbWVudCkKKworCitjbGFzcyBTZW5kS2V5c0FjdGlvbihvYmplY3QpOgorICAgIG5hbWUg
PSAic2VuZF9rZXlzIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wp
OgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0g
cHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2Vs
ZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJdCisgICAgICAgIGtleXMgPSBwYXlsb2FkWyJrZXlz
Il0KKyAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZW5kaW5nIGtleXMg
dG8gZWxlbWVudDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZF9r
ZXlzLnNlbmRfa2V5cyhlbGVtZW50LCBrZXlzKQorCisKK2NsYXNzIEFjdGlvblNlcXVlbmNlQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJhY3Rpb25fc2VxdWVuY2UiCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgorICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVy
cm9yIGNoZWNraW5nCisgICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KKyAgICAg
ICAgZm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6CisgICAgICAgICAgICBpZiBhY3Rpb25T
ZXF1ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKKyAgICAgICAgICAgICAgICBmb3IgYWN0aW9u
IGluIGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06CisgICAgICAgICAgICAgICAgICAgIGlmIChh
Y3Rpb25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAorICAgICAgICAgICAgICAgICAgICAg
ICAgaXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6CisgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdp
biJdWyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCisgICAgICAgIHNlbGYu
cHJvdG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25z
fSkKKworICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6
CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVj
dG9yKGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQorICAgICAgICByZXR1cm4gZWxlbWVudAorCitj
bGFzcyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImdlbmVy
YXRlX3Rlc3RfcmVwb3J0IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAg
bWVzc2FnZSA9IHBheWxvYWRbIm1lc3NhZ2UiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
R2VuZXJhdGluZyB0ZXN0IHJlcG9ydDogJXMiICUgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5nZW5lcmF0ZV90ZXN0X3JlcG9ydC5nZW5lcmF0ZV90ZXN0X3JlcG9ydChtZXNzYWdlKQor
CitjbGFzcyBTZXRQZXJtaXNzaW9uQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJzZXRfcGVy
bWlzc2lvbiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3Rv
Y29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHBlcm1pc3Np
b25fcGFyYW1zID0gcGF5bG9hZFsicGVybWlzc2lvbl9wYXJhbXMiXQorICAgICAgICBkZXNjcmlw
dG9yID0gcGVybWlzc2lvbl9wYXJhbXNbImRlc2NyaXB0b3IiXQorICAgICAgICBuYW1lID0gZGVz
Y3JpcHRvclsibmFtZSJdCisgICAgICAgIHN0YXRlID0gcGVybWlzc2lvbl9wYXJhbXNbInN0YXRl
Il0KKyAgICAgICAgb25lX3JlYWxtID0gcGVybWlzc2lvbl9wYXJhbXMuZ2V0KCJvbmVSZWFsbSIs
IEZhbHNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyBwZXJtaXNzaW9uICVz
IHRvICVzLCBvbmVSZWFsbT0lcyIgJSAobmFtZSwgc3RhdGUsIG9uZV9yZWFsbSkpCisgICAgICAg
IHNlbGYucHJvdG9jb2wuc2V0X3Blcm1pc3Npb24uc2V0X3Blcm1pc3Npb24oZGVzY3JpcHRvciwg
c3RhdGUsIG9uZV9yZWFsbSkKKworY2xhc3MgQWRkVmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24o
b2JqZWN0KToKKyAgICBuYW1lID0gImFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQWRkaW5n
IHZpcnR1YWwgYXV0aGVudGljYXRvciIpCisgICAgICAgIGNvbmZpZyA9IHBheWxvYWRbImNvbmZp
ZyJdCisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0
aGVudGljYXRvci5hZGRfdmlydHVhbF9hdXRoZW50aWNhdG9yKGNvbmZpZykKKyAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIkF1dGhlbnRpY2F0b3IgY3JlYXRlZCB3aXRoIElEICVzIiAlIGF1dGhl
bnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBhdXRoZW50aWNhdG9yX2lkCisKK2NsYXNzIFJl
bW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1v
dmVfdmlydHVhbF9hdXRoZW50aWNhdG9yIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxm
LnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToK
KyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQor
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9y
ICVzIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZp
cnR1YWxfYXV0aGVudGljYXRvci5yZW1vdmVfdmlydHVhbF9hdXRoZW50aWNhdG9yKGF1dGhlbnRp
Y2F0b3JfaWQpCisKKworY2xhc3MgQWRkQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAgIG5h
bWUgPSAiYWRkX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIGNyZWRlbnRpYWwgPSBwYXlsb2FkWyJjcmVkZW50aWFsIl0KKyAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIkFkZGluZyBjcmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLmFkZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRp
YWwpCisKK2NsYXNzIEdldENyZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJn
ZXRfY3JlZGVudGlhbHMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJHZXR0aW5nIGNyZWRlbnRpYWxzIGZyb20gdmlydHVhbCBhdXRoZW50
aWNhdG9yICVzICIgJSBhdXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90
b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IuZ2V0X2NyZWRlbnRpYWxzKGF1dGhlbnRpY2F0b3Jf
aWQpCisKK2NsYXNzIFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0g
InJlbW92ZV9jcmVkZW50aWFsIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJv
dG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3Rv
Y29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAg
ICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAg
ICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsiY3JlZGVudGlhbF9pZCJdCisgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVkZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAl
cyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVudGljYXRvcl9pZCkpCisgICAgICAgIHJldHVybiBz
ZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRo
ZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lkKQorCitjbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFs
c0FjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAicmVtb3ZlX2FsbF9jcmVkZW50aWFscyIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5s
b2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBk
ZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBw
YXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJl
bW92aW5nIGFsbCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGlj
YXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNh
dG9yLnJlbW92ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKKworY2xhc3MgU2V0
VXNlclZlcmlmaWVkQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJzZXRfdXNlcl92ZXJpZmll
ZCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAg
c2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisK
KyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3Jf
aWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgdXYgPSBwYXlsb2FkWyJ1
diJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIlNldHRpbmcgdXNl
ciB2ZXJpZmllZCBmbGFnIG9uIGF1dGhlbnRpY2F0b3IgJXMgdG8gJXMiICUgKGF1dGhlbnRpY2F0
b3JfaWQsIHV2WyJpc1VzZXJWZXJpZmllZCJdKSkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9j
b2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnNldF91c2VyX3ZlcmlmaWVkKGF1dGhlbnRpY2F0b3Jf
aWQsIHV2KQorCisKK2FjdGlvbnMgPSBbQ2xpY2tBY3Rpb24sCisgICAgICAgICAgIFNlbmRLZXlz
QWN0aW9uLAorICAgICAgICAgICBBY3Rpb25TZXF1ZW5jZUFjdGlvbiwKKyAgICAgICAgICAgR2Vu
ZXJhdGVUZXN0UmVwb3J0QWN0aW9uLAorICAgICAgICAgICBTZXRQZXJtaXNzaW9uQWN0aW9uLAor
ICAgICAgICAgICBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgUmVt
b3ZlVmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24sCisgICAgICAgICAgIEFkZENyZWRlbnRpYWxB
Y3Rpb24sCisgICAgICAgICAgIEdldENyZWRlbnRpYWxzQWN0aW9uLAorICAgICAgICAgICBSZW1v
dmVDcmVkZW50aWFsQWN0aW9uLAorICAgICAgICAgICBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlv
biwKKyAgICAgICAgICAgU2V0VXNlclZlcmlmaWVkQWN0aW9uXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5
CmluZGV4IDNkOGFmNGRlNDg2OGU5ZGE4NmIzOGQxYzlkN2IzMmVkMGJmZDI2NWIuLmM3NWE4ZWYz
MjBmMmQxNDkyMDZjOWFiODJjZTU1YmI3NTRkZGJiNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvYmFzZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkK
QEAgLTEsNiArMSw1IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgaGFzaGxpYgotZnJvbSBzaXgu
bW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEhUVFBDb25uZWN0aW9uCiBpbXBvcnQgaW8KIGltcG9y
dCBqc29uCiBpbXBvcnQgb3MKQEAgLTgsMTAgKzcsMTMgQEAgaW1wb3J0IHRocmVhZGluZwogaW1w
b3J0IHRyYWNlYmFjawogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwotZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdCwgdXJsdW5zcGxpdAogZnJvbSBh
YmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCitmcm9tIHNpeCBpbXBvcnQgdGV4dF90
eXBlCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KK2Zy
b20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwgdXJsc3BsaXQsIHVybHVu
c3BsaXQKIAogZnJvbSAuLnRlc3RydW5uZXIgaW1wb3J0IFN0b3AKK2Zyb20gLmFjdGlvbnMgaW1w
b3J0IGFjdGlvbnMKIGZyb20gLnByb3RvY29sIGltcG9ydCBQcm90b2NvbCwgQmFzZVByb3RvY29s
UGFydAogCiBoZXJlID0gb3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0KQEAgLTE2MiwxNCArMTY0
LDE4IEBAIGNsYXNzIFRpbWVkUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsICIlcy5ydW5fZnVuYyBkaWRuJ3Qgc2V0
IGEgcmVzdWx0IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gIkV4ZWN1dG9yIGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0
ZSBhIGhhbmcpXG4iCi0gICAgICAgICAgICAgICAgIyBnZXQgYSB0cmFjZWJhY2sgZm9yIHRoZSBj
dXJyZW50IHN0YWNrIG9mIHRoZSBleGVjdXRvciB0aHJlYWQKLSAgICAgICAgICAgICAgICBtZXNz
YWdlICs9ICIiLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhzeXMuX2N1cnJlbnRfZnJhbWVz
KClbZXhlY3V0b3IuaWRlbnRdKSkKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNl
LCAoIkVYVEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGlmIHNlbGYu
cHJvdG9jb2wuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJFeGVj
dXRvciBoaXQgZXh0ZXJuYWwgdGltZW91dCAodGhpcyBtYXkgaW5kaWNhdGUgYSBoYW5nKVxuIgor
ICAgICAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBmb3IgdGhlIGN1cnJlbnQgc3Rh
Y2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICIiLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhzeXMuX2N1cnJlbnRfZnJhbWVzKClbZXhl
Y3V0b3IuaWRlbnRdKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwg
KCJFWFRFUk5BTC1USU1FT1VUIiwgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJCcm93c2VyIG5vdCByZXNwb25kaW5n
LCBzZXR0aW5nIHN0YXR1cyB0byBDUkFTSCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVz
dWx0ID0gRmFsc2UsICgiQ1JBU0giLCBOb25lKQogICAgICAgICBlbGlmIHNlbGYucmVzdWx0WzFd
IGlzIE5vbmU6CiAgICAgICAgICAgICAjIFdlIGRpZG4ndCBnZXQgYW55IGRhdGEgYmFjayBmcm9t
IHRoZSB0ZXN0LCBzbyBjaGVjayBpZiB0aGUKICAgICAgICAgICAgICMgYnJvd3NlciBpcyBzdGls
bCByZXNwb25zaXZlCi0gICAgICAgICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlOgorICAg
ICAgICAgICAgaWYgc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgIHNl
bGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBOb25lKQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJCcm93c2VyIG5vdCByZXNw
b25kaW5nLCBzZXR0aW5nIHN0YXR1cyB0byBDUkFTSCIpCkBAIC0yMTAsOCArMjE2LDkgQEAgY2xh
c3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgZXh0cmFfdGltZW91dCA9IDUgICMgc2Vjb25k
cwogCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nl
ciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAg
IGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dl
cgogICAgICAgICBzZWxmLnJ1bm5lciA9IE5vbmUKICAgICAgICAgc2VsZi5icm93c2VyID0gYnJv
d3NlcgogICAgICAgICBzZWxmLnNlcnZlcl9jb25maWcgPSBzZXJ2ZXJfY29uZmlnCkBAIC0yMjEs
MTIgKzIyOCw2IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInByZWZzIjoge319CiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBO
b25lICAjIFRoaXMgbXVzdCBiZSBzZXQgaW4gc3ViY2xhc3NlcwogCi0gICAgQHByb3BlcnR5Ci0g
ICAgZGVmIGxvZ2dlcihzZWxmKToKLSAgICAgICAgIiIiU3RydWN0dXJlZExvZ2dlciBmb3IgdGhp
cyBleGVjdXRvciIiIgotICAgICAgICBpZiBzZWxmLnJ1bm5lciBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJ1bm5lci5sb2dnZXIKLQogICAgIGRlZiBzZXR1cChzZWxmLCBy
dW5uZXIpOgogICAgICAgICAiIiJSdW4gc3RlcHMgbmVlZGVkIGJlZm9yZSB0ZXN0cyBjYW4gYmUg
c3RhcnRlZCBlLmcuIGNvbm5lY3RpbmcgdG8KICAgICAgICAgYnJvd3NlciBpbnN0YW5jZQpAQCAt
MjU1LDggKzI1Niw5IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3QpOgogICAgICAgICB0cnk6
CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmRvX3Rlc3QodGVzdCkKICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJh
Y2suZm9ybWF0X2V4YyhlKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucmVzdWx0X2Zyb21f
ZXhjZXB0aW9uKHRlc3QsIGUpCisgICAgICAgICAgICBleGNlcHRpb25fc3RyaW5nID0gdHJhY2Vi
YWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyhleGNlcHRp
b25fc3RyaW5nKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1bHRfZnJvbV9leGNlcHRp
b24odGVzdCwgZSwgZXhjZXB0aW9uX3N0cmluZykKIAogICAgICAgICBpZiByZXN1bHQgaXMgU3Rv
cDoKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKQEAgLTI3MCw3ICsyNzIsOCBAQCBjbGFzcyBU
ZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICAgICAgc2VsZi5ydW5uZXIuc2VuZF9tZXNzYWdlKCJ0
ZXN0X2VuZGVkIiwgdGVzdCwgcmVzdWx0KQogCiAgICAgZGVmIHNlcnZlcl91cmwoc2VsZiwgcHJv
dG9jb2wpOgotICAgICAgICByZXR1cm4gIiVzOi8vJXM6JXMiICUgKHByb3RvY29sLAorICAgICAg
ICBzY2hlbWUgPSAiaHR0cHMiIGlmIHByb3RvY29sID09ICJoMiIgZWxzZSBwcm90b2NvbAorICAg
ICAgICByZXR1cm4gIiVzOi8vJXM6JXMiICUgKHNjaGVtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9jb25maWdbImJyb3dzZXJfaG9zdCJdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1sicG9ydHMiXVtwcm90b2Nv
bF1bMF0pCiAKQEAgLTI4OCwxNSArMjkxLDE1IEBAIGNsYXNzIFRlc3RFeGVjdXRvcihvYmplY3Qp
OgogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmlyb25tZW50KToK
ICAgICAgICAgcGFzcwogCi0gICAgZGVmIHJlc3VsdF9mcm9tX2V4Y2VwdGlvbihzZWxmLCB0ZXN0
LCBlKToKKyAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNlbGYsIHRlc3QsIGUsIGV4Y2Vw
dGlvbl9zdHJpbmcpOgogICAgICAgICBpZiBoYXNhdHRyKGUsICJzdGF0dXMiKSBhbmQgZS5zdGF0
dXMgaW4gdGVzdC5yZXN1bHRfY2xzLnN0YXR1c2VzOgogICAgICAgICAgICAgc3RhdHVzID0gZS5z
dGF0dXMKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN0YXR1cyA9ICJJTlRFUk5BTC1FUlJP
UiIKLSAgICAgICAgbWVzc2FnZSA9IHVuaWNvZGUoZ2V0YXR0cihlLCAibWVzc2FnZSIsICIiKSkK
KyAgICAgICAgbWVzc2FnZSA9IHRleHRfdHlwZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQog
ICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAg
IG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgbWVzc2FnZSArPSBl
eGNlcHRpb25fc3RyaW5nCiAgICAgICAgIHJldHVybiB0ZXN0LnJlc3VsdF9jbHMoc3RhdHVzLCBt
ZXNzYWdlKSwgW10KIAogICAgIGRlZiB3YWl0KHNlbGYpOgpAQCAtMzEwLDkgKzMxMyw5IEBAIGNs
YXNzIFRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdEV4ZWN1dG9yKToKIGNsYXNzIFJlZlRlc3RFeGVj
dXRvcihUZXN0RXhlY3V0b3IpOgogICAgIGNvbnZlcnRfcmVzdWx0ID0gcmVmdGVzdF9yZXN1bHRf
Y29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211
bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAogICAgICAgICAgICAgICAgICBkZWJ1
Z19pbmZvPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRf
XyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogCkBAIC00
OTYsMTEgKzQ5OSwxMSBAQCBjbGFzcyBXZHNwZWNFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogICAg
IGNvbnZlcnRfcmVzdWx0ID0gcHl0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKICAgICBwcm90b2NvbF9j
bHMgPSBOb25lCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
Zywgd2ViZHJpdmVyX2JpbmFyeSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93
c2VyLCBzZXJ2ZXJfY29uZmlnLCB3ZWJkcml2ZXJfYmluYXJ5LAogICAgICAgICAgICAgICAgICB3
ZWJkcml2ZXJfYXJncywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGNhcGFiaWxpdGllcz1Ob25lLAog
ICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgc2Vs
Zi5kb19kZWxheWVkX2ltcG9ydHMoKQotICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAg
IHNlbGYud2ViZHJpdmVyX2JpbmFyeSA9IHdlYmRyaXZlcl9iaW5hcnkKQEAgLTUxMCw3ICs1MTMs
NyBAQCBjbGFzcyBXZHNwZWNFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogICAgICAgICBzZWxmLnBy
b3RvY29sID0gc2VsZi5wcm90b2NvbF9jbHMoc2VsZiwgYnJvd3NlcikKIAogICAgIGRlZiBpc19h
bGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25t
ZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBwYXNzCkBAIC01NzMs
NyArNTc2LDcgQEAgY2xhc3MgV2RzcGVjUnVuKG9iamVjdCk6CiAgICAgICAgICAgICBtZXNzYWdl
ID0gZ2V0YXR0cihlLCAibWVzc2FnZSIpCiAgICAgICAgICAgICBpZiBtZXNzYWdlOgogICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJh
Y2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0
X2V4YygpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9S
IiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcuc2V0KCkKQEAgLTYzNiwxMCArNjM5LDkgQEAgY2xhc3MgV2ViRHJpdmVyUHJvdG9jb2woUHJv
dG9jb2wpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVhcmRvd24oc2VsZik6Ci0gICAgICAg
IGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25lIGFuZCBzZWxmLnNlcnZlci5pc19hbGl2ZToKKyAg
ICAgICAgaWYgc2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2FsaXZl
KCk6CiAgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKIAotICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBjb25uZWN0aW9u
IGlzIHN0aWxsIGFsaXZlLgogCkBAIC02NzUsMjAgKzY3Nyw3IEBAIGNsYXNzIENhbGxiYWNrSGFu
ZGxlcihvYmplY3QpOgogICAgICAgICAgICAgImNvbXBsZXRlIjogc2VsZi5wcm9jZXNzX2NvbXBs
ZXRlCiAgICAgICAgIH0KIAotICAgICAgICBzZWxmLmFjdGlvbnMgPSB7Ci0gICAgICAgICAgICAi
Y2xpY2siOiBDbGlja0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCi0gICAgICAg
ICAgICAic2VuZF9rZXlzIjogU2VuZEtleXNBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9j
b2wpLAotICAgICAgICAgICAgImFjdGlvbl9zZXF1ZW5jZSI6IEFjdGlvblNlcXVlbmNlQWN0aW9u
KHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJnZW5lcmF0ZV90ZXN0
X3JlcG9ydCI6IEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgICAgICAic2V0X3Blcm1pc3Npb24iOiBTZXRQZXJtaXNzaW9uQWN0aW9u
KHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJhZGRfdmlydHVhbF9h
dXRoZW50aWNhdG9yIjogQWRkVmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24oc2VsZi5sb2dnZXIs
IHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0
b3IiOiBSZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5w
cm90b2NvbCksCi0gICAgICAgICAgICAiYWRkX2NyZWRlbnRpYWwiOiBBZGRDcmVkZW50aWFsQWN0
aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJnZXRfY3JlZGVu
dGlhbHMiOiBHZXRDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAicmVtb3ZlX2NyZWRlbnRpYWwiOiBSZW1vdmVDcmVkZW50aWFsQWN0aW9u
KHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAgICJyZW1vdmVfYWxsX2Ny
ZWRlbnRpYWxzIjogUmVtb3ZlQWxsQ3JlZGVudGlhbHNBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYu
cHJvdG9jb2wpLAotICAgICAgICAgICAgInNldF91c2VyX3ZlcmlmaWVkIjogU2V0VXNlclZlcmlm
aWVkQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgfQorICAgICAg
ICBzZWxmLmFjdGlvbnMgPSB7Y2xzLm5hbWU6IGNscyhzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2Nv
bCkgZm9yIGNscyBpbiBhY3Rpb25zfQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHJlc3VsdCk6
CiAgICAgICAgIHVybCwgY29tbWFuZCwgcGF5bG9hZCA9IHJlc3VsdApAQCAtNzI5LDE1MCArNzE4
LDMgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVyKG9iamVjdCk6CiAKICAgICBkZWYgX3NlbmRfbWVz
c2FnZShzZWxmLCBtZXNzYWdlX3R5cGUsIHN0YXR1cywgbWVzc2FnZT1Ob25lKToKICAgICAgICAg
c2VsZi5wcm90b2NvbC50ZXN0ZHJpdmVyLnNlbmRfbWVzc2FnZShtZXNzYWdlX3R5cGUsIHN0YXR1
cywgbWVzc2FnZT1tZXNzYWdlKQotCi0KLWNsYXNzIENsaWNrQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxl
Y3RvciJdCi0gICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5
X3NlbGVjdG9yKHNlbGVjdG9yKQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcg
ZWxlbWVudDogJXMiICUgc2VsZWN0b3IpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxl
bWVudChlbGVtZW50KQotCi0KLWNsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9
IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2Nh
bGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3Rv
ciJdCi0gICAgICAgIGtleXMgPSBwYXlsb2FkWyJrZXlzIl0KLSAgICAgICAgZWxlbWVudCA9IHNl
bGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAg
IHNlbGYubG9nZ2VyLmRlYnVnKCJTZW5kaW5nIGtleXMgdG8gZWxlbWVudDogJXMiICUgc2VsZWN0
b3IpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZF9rZXlzLnNlbmRfa2V5cyhlbGVtZW50LCBr
ZXlzKQotCi0KLWNsYXNzIEFjdGlvblNlcXVlbmNlQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgIyBUT0RPOiBzb21lIHNvcnQgb2Ygc2hhbGxvdyBl
cnJvciBjaGVja2luZwotICAgICAgICBhY3Rpb25zID0gcGF5bG9hZFsiYWN0aW9ucyJdCi0gICAg
ICAgIGZvciBhY3Rpb25TZXF1ZW5jZSBpbiBhY3Rpb25zOgotICAgICAgICAgICAgaWYgYWN0aW9u
U2VxdWVuY2VbInR5cGUiXSA9PSAicG9pbnRlciI6Ci0gICAgICAgICAgICAgICAgZm9yIGFjdGlv
biBpbiBhY3Rpb25TZXF1ZW5jZVsiYWN0aW9ucyJdOgotICAgICAgICAgICAgICAgICAgICBpZiAo
YWN0aW9uWyJ0eXBlIl0gPT0gInBvaW50ZXJNb3ZlIiBhbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlzaW5zdGFuY2UoYWN0aW9uWyJvcmlnaW4iXSwgZGljdCkpOgotICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uWyJvcmlnaW4iXSA9IHNlbGYuZ2V0X2VsZW1lbnQoYWN0aW9uWyJvcmln
aW4iXVsic2VsZWN0b3IiXSwgYWN0aW9uWyJmcmFtZSJdWyJmcmFtZSJdKQotICAgICAgICBzZWxm
LnByb3RvY29sLmFjdGlvbl9zZXF1ZW5jZS5zZW5kX2FjdGlvbnMoeyJhY3Rpb25zIjogYWN0aW9u
c30pCi0KLSAgICBkZWYgZ2V0X2VsZW1lbnQoc2VsZiwgZWxlbWVudF9zZWxlY3RvciwgZnJhbWUp
OgotICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxl
Y3RvcihlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQKLQot
Y2xhc3MgR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgot
ICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxm
LCBwYXlsb2FkKToKLSAgICAgICAgbWVzc2FnZSA9IHBheWxvYWRbIm1lc3NhZ2UiXQotICAgICAg
ICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2VuZXJhdGluZyB0ZXN0IHJlcG9ydDogJXMiICUgbWVzc2Fn
ZSkKLSAgICAgICAgc2VsZi5wcm90b2NvbC5nZW5lcmF0ZV90ZXN0X3JlcG9ydC5nZW5lcmF0ZV90
ZXN0X3JlcG9ydChtZXNzYWdlKQotCi1jbGFzcyBTZXRQZXJtaXNzaW9uQWN0aW9uKG9iamVjdCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgcGVybWlzc2lvbl9wYXJhbXMg
PSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCi0gICAgICAgIGRlc2NyaXB0b3IgPSBwZXJt
aXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCi0gICAgICAgIG5hbWUgPSBkZXNjcmlwdG9yWyJu
YW1lIl0KLSAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFtc1sic3RhdGUiXQotICAgICAg
ICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9uZVJlYWxtIiwgRmFsc2UpCi0g
ICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1pc3Npb24gJXMgdG8gJXMsIG9u
ZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkKLSAgICAgICAgc2VsZi5wcm90
b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNjcmlwdG9yLCBzdGF0ZSwgb25l
X3JlYWxtKQotCi1jbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5s
b2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBk
ZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJB
ZGRpbmcgdmlydHVhbCBhdXRoZW50aWNhdG9yIikKLSAgICAgICAgY29uZmlnID0gcGF5bG9hZFsi
Y29uZmlnIl0KLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQotICAgICAg
ICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMiICUg
YXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKLQotY2xh
c3MgUmVtb3ZlVmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0
aGVudGljYXRvcl9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0
dWFsIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJu
IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhl
bnRpY2F0b3IoYXV0aGVudGljYXRvcl9pZCkKLQotCi1jbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9u
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAg
ICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9j
b2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGlj
YXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFs
ID0gcGF5bG9hZFsiY3JlZGVudGlhbCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRp
bmcgY3JlZGVudGlhbCB0byB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMgIiAlIGF1dGhlbnRpY2F0
b3JfaWQpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRv
ci5hZGRfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsKQotCi1jbGFzcyBH
ZXRDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2Vs
Zi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6
Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0K
LSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0
dWFsIGF1dGhlbnRpY2F0b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCi0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0
aGVudGljYXRvcl9pZCkKLQotY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5s
b2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBk
ZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBw
YXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgY3JlZGVudGlhbF9pZCA9IHBheWxv
YWRbImNyZWRlbnRpYWxfaWQiXQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3Zpbmcg
Y3JlZGVudGlhbCAlcyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgKGNyZWRlbnRpYWxfaWQsIGF1
dGhlbnRpY2F0b3JfaWQpKQotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IucmVtb3ZlX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlh
bF9pZCkKLQotY2xhc3MgUmVtb3ZlQWxsQ3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9h
ZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmlu
ZyBhbGwgY3JlZGVudGlhbHMgZnJvbSBhdXRoZW50aWNhdG9yICVzIiAlIGF1dGhlbnRpY2F0b3Jf
aWQpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5y
ZW1vdmVfYWxsX2NyZWRlbnRpYWxzKGF1dGhlbnRpY2F0b3JfaWQpCi0KLWNsYXNzIFNldFVzZXJW
ZXJpZmllZEFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBy
b3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm90
b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6Ci0gICAg
ICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KLSAgICAg
ICAgdXYgPSBwYXlsb2FkWyJ1diJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKAotICAgICAg
ICAgICAgIlNldHRpbmcgdXNlciB2ZXJpZmllZCBmbGFnIG9uIGF1dGhlbnRpY2F0b3IgJXMgdG8g
JXMiICUgKGF1dGhlbnRpY2F0b3JfaWQsIHV2WyJpc1VzZXJWZXJpZmllZCJdKSkKLSAgICAgICAg
cmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnNldF91c2VyX3Zlcmlm
aWVkKGF1dGhlbnRpY2F0b3JfaWQsIHV2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9leGVjdXRvcm1hcmlvbmV0dGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1
dG9ybWFyaW9uZXR0ZS5weQppbmRleCA1OWY3ZTg2NWE1Yjg3MTFmYTcxYzljODk1NWVjYTczMWUw
MDQ4YzNmLi4yZWFmMjU4MDFkZjUwMjc2ZjJiMDI0NDdkNjhhM2ZjOThjNWMzNzdlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9ybWFyaW9uZXR0ZS5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9ybWFyaW9uZXR0ZS5weQpAQCAtMyw5ICszLDEx
IEBAIGltcG9ydCBvcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFj
ZWJhY2sKLWltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHV1aWQKIAorZnJvbSBzaXggaW1wb3J0IGl0
ZXJpdGVtcywgaXRlcmtleXMKK2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbgorCiBlcnJvcnMgPSBOb25lCiBtYXJpb25ldHRlID0gTm9uZQogcHl0ZXN0cnVubmVyID0g
Tm9uZQpAQCAtMTEzLDggKzExNSw4IEBAIGNsYXNzIE1hcmlvbmV0dGVCYXNlUHJvdG9jb2xQYXJ0
KEJhc2VQcm90b2NvbFBhcnQpOgogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNvY2tldCBjbG9zZWQiKQogICAgICAgICAgICAg
ICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2Fy
bmluZyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKIApA
QCAtMTMyLDE3ICsxMzQsMTYgQEAgY2xhc3MgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzUHJvdG9jb2xQ
YXJ0KFRlc3RoYXJuZXNzUHJvdG9jb2xQYXJ0KToKICAgICAgICAgIyBDaGVjayBpZiB3ZSBwcmV2
aW91c2x5IGhhZCBhIHRlc3Qgd2luZG93IG9wZW4sIGFuZCBpZiB3ZSBkaWQgbWFrZSBzdXJlIGl0
J3MgY2xvc2VkCiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAgICAgICAgICAgIHNl
bGYuX2Nsb3NlX3dpbmRvd3MoKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYu
cGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJs
ID0gdXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCks
ICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
TG9hZGluZyAlcyIgJSB1cmwpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZGlzbWlz
c19hbGVydChsYW1iZGE6IHNlbGYubWFyaW9uZXR0ZS5uYXZpZ2F0ZSh1cmwpKQotICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgKICAgICAgICAgICAgICAgICAiTG9hZGluZyBpbml0
aWFsIHBhZ2UgJXMgZmFpbGVkLiBFbnN1cmUgdGhhdCB0aGUgIgogICAgICAgICAgICAgICAgICJ0
aGVyZSBhcmUgbm8gb3RoZXIgcHJvZ3JhbXMgYm91bmQgdG8gdGhpcyBwb3J0IGFuZCAiCiAgICAg
ICAgICAgICAgICAgInRoYXQgeW91ciBmaXJld2FsbCBydWxlcyBvciBuZXR3b3JrIHNldHVwIGRv
ZXMgbm90ICIKLSAgICAgICAgICAgICAgICByInByZXZlbnQgYWNjZXNzLlxlJXMiICUgKHVybCwg
dHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpKQorICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nl
c3MuXGUlcyIgJSAodXJsLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKSkKICAgICAgICAgICAgIHJh
aXNlCiAgICAgICAgIHNlbGYucnVubmVyX2hhbmRsZSA9IHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50
X3dpbmRvd19oYW5kbGUKICAgICAgICAgZm9ybWF0X21hcCA9IHsidGl0bGUiOiB0aHJlYWRpbmcu
Y3VycmVudF90aHJlYWQoKS5uYW1lLnJlcGxhY2UoIiciLCAnIicpfQpAQCAtNTkyLDcgKzU5Myw2
IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICBkZWwg
c2VsZi5tYXJpb25ldHRlCiAgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVQcm90b2NvbCwgc2VsZiku
dGVhcmRvd24oKQogCi0gICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm1hcmlvbmV0dGUuY3VycmVudF93aW5kb3dfaGFu
ZGxlCkBAIC02MDIsMTQgKzYwMiwxNCBAQCBjbGFzcyBNYXJpb25ldHRlUHJvdG9jb2woUHJvdG9j
b2wpOgogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBvbGRfZW52aXJvbm1l
bnQsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgICNVbnNldCBhbGwgdGhlIG9sZCBwcmVmcwot
ICAgICAgICBmb3IgbmFtZSBpbiBvbGRfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVy
a2V5cygpOgorICAgICAgICBmb3IgbmFtZSBpbiBpdGVya2V5cyhvbGRfZW52aXJvbm1lbnQuZ2V0
KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuZXhlY3V0b3Iub3JpZ2lu
YWxfcHJlZl92YWx1ZXNbbmFtZV0KICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CiAgICAg
ICAgICAgICAgICAgc2VsZi5wcmVmcy5jbGVhcihuYW1lKQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnByZWZzLnNldChuYW1lLCB2YWx1ZSkKIAotICAgICAgICBmb3Ig
bmFtZSwgdmFsdWUgaW4gbmV3X2Vudmlyb25tZW50LmdldCgicHJlZnMiLCB7fSkuaXRlcml0ZW1z
KCk6CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMobmV3X2Vudmlyb25tZW50
LmdldCgicHJlZnMiLCB7fSkpOgogICAgICAgICAgICAgc2VsZi5leGVjdXRvci5vcmlnaW5hbF9w
cmVmX3ZhbHVlc1tuYW1lXSA9IHNlbGYucHJlZnMuZ2V0KG5hbWUpCiAgICAgICAgICAgICBzZWxm
LnByZWZzLnNldChuYW1lLCB2YWx1ZSkKIApAQCAtNjU5LDcgKzY1OSw3IEBAIGNsYXNzIEV4ZWN1
dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9
IGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikKICAgICAgICAgICAgICAgICBpZiBtZXNzYWdlOgog
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgICAgICBtZXNz
YWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpCisgICAgICAgICAgICAgICAgbWVzc2FnZSAr
PSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2Fy
bmluZyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBG
YWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAgIGZpbmFsbHk6CkBAIC02
NjksMTEgKzY2OSwxMSBAQCBjbGFzcyBFeGVjdXRlQXN5bmNTY3JpcHRSdW4oVGltZWRSdW5uZXIp
OgogY2xhc3MgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRv
cik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBk
ZWJ1Z19pbmZvPU5vbmUsIGNhcGFiaWxpdGllcz1Ob25lLAogICAgICAgICAgICAgICAgICBkZWJ1
Zz1GYWxzZSwgY2Nvdj1GYWxzZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJNYXJpb25ldHRlLWJh
c2VkIGV4ZWN1dG9yIGZvciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFy
bmVzc0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAg
ICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3Rv
Y29sID0gTWFyaW9uZXR0ZVByb3RvY29sKHNlbGYsCkBAIC02OTgsNyArNjk4LDcgQEAgY2xhc3Mg
TWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAg
ICAgIHNlbGYucHJvdG9jb2wudGVzdGhhcm5lc3MubG9hZF9ydW5uZXIoc2VsZi5sYXN0X2Vudmly
b25tZW50WyJwcm90b2NvbCJdKQogCiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2Nv
bC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG5ld19l
bnZpcm9ubWVudCk6CiAgICAgICAgIHNlbGYucHJvdG9jb2wub25fZW52aXJvbm1lbnRfY2hhbmdl
KHNlbGYubGFzdF9lbnZpcm9ubWVudCwgbmV3X2Vudmlyb25tZW50KQpAQCAtNzY1LDEzICs3NjUs
MTQgQEAgY2xhc3MgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAKIAogY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89Tm9uZSwgcmVmdGVzdF9pbnRlcm5hbD1GYWxzZSwKICAgICAgICAg
ICAgICAgICAgcmVmdGVzdF9zY3JlZW5zaG90PSJ1bmV4cGVjdGVkIiwgY2Nvdj1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRl
YnVnPUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQgZXhlY3V0
b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
Y3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC03OTgsNyArNzk5LDcgQEAgY2xh
c3MgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAg
ICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVhZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13
YWl0In0KIAogICAgIGRlZiBzZXR1cChzZWxmLCBydW5uZXIpOgotICAgICAgICBzdXBlcihzZWxm
Ll9fY2xhc3NfXywgc2VsZikuc2V0dXAocnVubmVyKQorICAgICAgICBzdXBlcihNYXJpb25ldHRl
UmVmVGVzdEV4ZWN1dG9yLCBzZWxmKS5zZXR1cChydW5uZXIpCiAgICAgICAgIHNlbGYuaW1wbGVt
ZW50YXRpb24uc2V0dXAoKipzZWxmLmltcGxlbWVudGF0aW9uX2t3YXJncykKIAogICAgIGRlZiB0
ZWFyZG93bihzZWxmKToKQEAgLTgwOCwxNyArODA5LDE3IEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgICAgICBoYW5kbGVzID0g
c2VsZi5wcm90b2NvbC5tYXJpb25ldHRlLndpbmRvd19oYW5kbGVzCiAgICAgICAgICAgICAgICAg
aWYgaGFuZGxlczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5tYXJpb25ldHRl
LnN3aXRjaF90b193aW5kb3coaGFuZGxlc1swXSkKLSAgICAgICAgICAgIHN1cGVyKHNlbGYuX19j
bGFzc19fLCBzZWxmKS50ZWFyZG93bigpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsIHNlbGYpLnRlYXJk
b3duKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICMgSWdub3JlIGVy
cm9ycyBkdXJpbmcgdGVhcmRvd24KICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkV4
Y2VwdGlvbiBkdXJpbmcgcmVmdGVzdCB0ZWFyZG93bjpcbiVzIiAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogCiAgICAgZGVmIHJlc2V0
KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxlbWVudGF0aW9uLnJlc2V0KCoqc2VsZi5pbXBsZW1l
bnRhdGlvbl9rd2FyZ3MpCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlz
X2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmly
b25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
Zi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC04OTMsOCArODk0LDkgQEAg
Y2xhc3MgSW50ZXJuYWxSZWZUZXN0SW1wbGVtZW50YXRpb24oUmVmVGVzdEltcGxlbWVudGF0aW9u
KToKICAgICBkZWYgc2V0dXAoc2VsZiwgc2NyZWVuc2hvdD0idW5leHBlY3RlZCIpOgogICAgICAg
ICBkYXRhID0geyJzY3JlZW5zaG90Ijogc2NyZWVuc2hvdH0KICAgICAgICAgaWYgc2VsZi5leGVj
dXRvci5ncm91cF9tZXRhZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGRhdGFbInVybENv
dW50Il0gPSB7dXJscGFyc2UudXJsam9pbihzZWxmLmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBd
KSwga2V5WzFdKTp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRhLmdldCgidXJsX2NvdW50Iiwg
e30pLml0ZXJpdGVtcygpCisgICAgICAgICAgICBkYXRhWyJ1cmxDb3VudCJdID0ge3VybGpvaW4o
c2VsZi5leGVjdXRvci5zZXJ2ZXJfdXJsKGtleVswXSksIGtleVsxXSk6dmFsdWUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRvci5ncm91cF9tZXRh
ZGF0YS5nZXQoInVybF9jb3VudCIsIHt9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgdmFsdWUgPiAxfQogICAgICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0
dGUuc2V0X2NvbnRleHQoc2VsZi5leGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRlLkNPTlRFWFRf
Q0hST01FKQogICAgICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuX3NlbmRf
bWVzc2FnZSgicmVmdGVzdDpzZXR1cCIsIGRhdGEpCkBAIC05MzQsOSArOTM2LDkgQEAgY2xhc3Mg
SW50ZXJuYWxSZWZUZXN0SW1wbGVtZW50YXRpb24oUmVmVGVzdEltcGxlbWVudGF0aW9uKToKICAg
ICAgICAgICAgICAgICBoYW5kbGVzID0gc2VsZi5leGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRl
LndpbmRvd19oYW5kbGVzCiAgICAgICAgICAgICAgICAgaWYgaGFuZGxlczoKICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5leGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRlLnN3aXRjaF90b193aW5k
b3coaGFuZGxlc1swXSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3JzIGR1cmluZyB0ZWFy
ZG93bgotICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4
YyhlKSkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1hdF9l
eGMoKSkKIAogCiBjbGFzcyBHZWNrb0RyaXZlclByb3RvY29sKFdlYkRyaXZlclByb3RvY29sKToK
QEAgLTk0OCwxMSArOTUwLDExIEBAIGNsYXNzIE1hcmlvbmV0dGVXZHNwZWNFeGVjdXRvcihXZHNw
ZWNFeGVjdXRvcik6CiAKIAogY2xhc3MgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKENyYXNo
dGVzdEV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2Nv
bmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAg
ICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnPUZhbHNl
LAogICAgICAgICAgICAgICAgICBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1h
cmlvbmV0dGUtYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAg
ICAgIENyYXNodGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25m
aWcsCisgICAgICAgIENyYXNodGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnBy
b3RvY29sID0gTWFyaW9uZXR0ZVByb3RvY29sKHNlbGYsCkBAIC05NzIsNyArOTc0LDcgQEAgY2xh
c3MgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKENyYXNodGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIGRvX2RlbGF5ZWRfaW1wb3J0cygpCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnByb3RvY29sLmlzX2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
ZiwgbmV3X2Vudmlyb25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVu
dF9jaGFuZ2Uoc2VsZi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC05OTEs
MTUgKzk5MywxNiBAQCBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0
RXhlY3V0b3IpOgogICAgICAgICBpZiBub3Qgc3VjY2VzczoKICAgICAgICAgICAgIHN0YXR1cyA9
IGRhdGFbMF0KIAorICAgICAgICBleHRyYSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5kZWJ1ZyBh
bmQgKHN1Y2Nlc3Mgb3Igc3RhdHVzIG5vdCBpbiAoIkNSQVNIIiwgIklOVEVSTkFMLUVSUk9SIikp
OgogICAgICAgICAgICAgYXNzZXJ0aW9uX2NvdW50ID0gc2VsZi5wcm90b2NvbC5hc3NlcnRzLmdl
dCgpCiAgICAgICAgICAgICBpZiBhc3NlcnRpb25fY291bnQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgZGF0YVsiZXh0cmEiXSA9IHsiYXNzZXJ0aW9uX2NvdW50IjogYXNzZXJ0aW9uX2Nv
dW50fQorICAgICAgICAgICAgICAgIGV4dHJhID0geyJhc3NlcnRpb25fY291bnQiOiBhc3NlcnRp
b25fY291bnR9CiAKICAgICAgICAgaWYgc3VjY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxm
LmNvbnZlcnRfcmVzdWx0KHRlc3QsIGRhdGEpCiAKLSAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3Vs
dF9jbHMoKipkYXRhKSwgW10pCisgICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKGV4dHJh
PWV4dHJhLCAqZGF0YSksIFtdKQogCiAgICAgZGVmIGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2Nv
bCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgaWYgc2VsZi5wcm90b2NvbC5jb3ZlcmFnZS5pc19l
bmFibGVkOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVu
aXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVuaXVtLnB5CmluZGV4
IGNlY2E4MTIxMWUxMTQwNTc3Y2MzYTVmMTYzZmZlMTdjNzNkZDU2YTMuLjk2MzEyZjNmOWY5NTQy
ZmVkZTYwOWU2Zjk5ZWY5MzEyN2YxMjJkMWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvZXhlY3V0b3JzZWxlbml1bS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4
ZWN1dG9yc2VsZW5pdW0ucHkKQEAgLTEsMTEgKzEsMTIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc29ja2V0
CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0
IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9y
dCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFja0hhbmRsZXIsCiAgICAgICAg
ICAgICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLApAQCAtNzIsOCArNzMsOCBAQCBjbGFzcyBTZWxl
bml1bUJhc2VQcm90b2NvbFBhcnQoQmFzZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNl
cHQgKHNvY2tldC50aW1lb3V0LCBleGNlcHRpb25zLk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5FcnJvckluUmVzcG9uc2VFeGNlcHRpb24sIElP
RXJyb3IpOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZv
cm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAg
ICAgICAgYnJlYWsKIAogCkBAIC04Nyw4ICs4OCw4IEBAIGNsYXNzIFNlbGVuaXVtVGVzdGhhcm5l
c3NQcm90b2NvbFBhcnQoVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgIGRlZiBsb2FkX3J1
bm5lcihzZWxmLCB1cmxfcHJvdG9jb2wpOgogICAgICAgICBpZiBzZWxmLnJ1bm5lcl9oYW5kbGU6
CiAgICAgICAgICAgICBzZWxmLndlYmRyaXZlci5zd2l0Y2hfdG9fd2luZG93KHNlbGYucnVubmVy
X2hhbmRsZSkKLSAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVj
dXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4o
c2VsZi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiTG9hZGluZyAlcyIgJSB1cmwpCiAgICAgICAgIHNlbGYud2ViZHJpdmVyLmdl
dCh1cmwpCiAgICAgICAgIHNlbGYucnVubmVyX2hhbmRsZSA9IHNlbGYud2ViZHJpdmVyLmN1cnJl
bnRfd2luZG93X2hhbmRsZQpAQCAtMjYxLDcgKzI2Miw3IEBAIGNsYXNzIFNlbGVuaXVtUnVuKFRp
bWVkUnVubmVyKToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIoZ2V0YXR0cihlLCAibWVzc2Fn
ZSIsICIiKSkKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
CisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAg
ICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBtZXNzYWdlKQogICAg
ICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5zZXQoKQpAQCAtMjcw
LDExICsyNzEsMTEgQEAgY2xhc3MgU2VsZW5pdW1SdW4oVGltZWRSdW5uZXIpOgogY2xhc3MgU2Vs
ZW5pdW1UZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhlY3V0b3IpOgogICAgIHN1cHBv
cnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwg
c2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEs
CiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwgY2FwYWJpbGl0aWVzPU5v
bmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAgc3VwcG9ydHNfZWFnZXJfcGFn
ZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxlbml1bS1iYXNlZCBleGVjdXRv
ciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0aGFy
bmVzc0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxp
ZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2VsZi5wcm90b2NvbCA9IFNlbGVu
aXVtUHJvdG9jb2woc2VsZiwgYnJvd3NlciwgY2FwYWJpbGl0aWVzKQpAQCAtMzU1LDExICszNTYs
MTIgQEAgaWYgKGxvY2F0aW9uLmhyZWYgPT09ICJhYm91dDpibGFuayIpIHsKIAogCiBjbGFzcyBT
ZWxlbml1bVJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25l
LCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9u
ZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiU2VsZW5pdW0gV2Vi
RHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAgICBSZWZUZXN0RXhl
Y3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90X2NhY2hlLApAQCAt
MzcxLDggKzM3Myw4IEBAIGNsYXNzIFNlbGVuaXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVj
dXRvcik6CiAgICAgICAgIHNlbGYuY2xvc2VfYWZ0ZXJfZG9uZSA9IGNsb3NlX2FmdGVyX2RvbmUK
ICAgICAgICAgc2VsZi5oYXNfd2luZG93ID0gRmFsc2UKIAotICAgICAgICB3aXRoIG9wZW4ob3Mu
cGF0aC5qb2luKGhlcmUsICJ0ZXN0LXdhaXQuanMiICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13
YWl0In0pKSBhcyBmOgotICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVhZCgpCisg
ICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIpKSBhcyBm
OgorICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVhZCgpICUgeyJjbGFzc25hbWUi
OiAicmVmdGVzdC13YWl0In0KIAogICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICAgc2VsZi5p
bXBsZW1lbnRhdGlvbi5yZXNldCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yc2Vydm8ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8u
cHkKaW5kZXggOWNlZjFmYjJkN2Y3OGU4NzI5ZTUxZmY0MDBiM2RmMjQwMmEyZTk0ZS4uZjgzZjAx
MTVlMDA2ODExNGJiNjJhODA0YjMwNTVjYjUxMDgxNGIxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvZXhlY3V0b3JzZXJ2by5weQpAQCAtNyw2ICs3LDcgQEAgaW1wb3J0IHRlbXBmaWxlCiBpbXBv
cnQgdGhyZWFkaW5nCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdXVpZAorZnJvbSBzaXggaW1w
b3J0IGVuc3VyZV9zdHIsIGl0ZXJpdGVtcwogCiBmcm9tIG1venByb2Nlc3MgaW1wb3J0IFByb2Nl
c3NIYW5kbGVyCiAKQEAgLTIyLDggKzIzLDEwIEBAIGZyb20gLmJhc2UgaW1wb3J0IChDb25uZWN0
aW9ubGVzc1Byb3RvY29sLAogICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclByb3RvY29sKQog
ZnJvbSAucHJvY2VzcyBpbXBvcnQgUHJvY2Vzc1Rlc3RFeGVjdXRvcgogZnJvbSAuLmJyb3dzZXJz
LmJhc2UgaW1wb3J0IGJyb3dzZXJfY29tbWFuZAorZnJvbSAuLnByb2Nlc3MgaW1wb3J0IGNhc3Rf
ZW52CiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgU2Vydm9Ecml2ZXJTZXJ2ZXIKIAor
CiBweXRlc3RydW5uZXIgPSBOb25lCiB3ZWJkcml2ZXIgPSBOb25lCiAKQEAgLTQ1LDcgKzQ4LDcg
QEAgZGVmIGJ1aWxkX3NlcnZvX2NvbW1hbmQodGVzdCwgdGVzdF91cmxfZnVuYywgYnJvd3Nlciwg
YmluYXJ5LCBwYXVzZV9hZnRlcl90ZXN0LAogICAgICAgICBhcmdzICs9IFsiLVoiLCBkZWJ1Z19v
cHRzXQogICAgIGZvciBzdHlsZXNoZWV0IGluIGJyb3dzZXIudXNlcl9zdHlsZXNoZWV0czoKICAg
ICAgICAgYXJncyArPSBbIi0tdXNlci1zdHlsZXNoZWV0Iiwgc3R5bGVzaGVldF0KLSAgICBmb3Ig
cHJlZiwgdmFsdWUgaW4gdGVzdC5lbnZpcm9ubWVudC5nZXQoJ3ByZWZzJywge30pLml0ZXJpdGVt
cygpOgorICAgIGZvciBwcmVmLCB2YWx1ZSBpbiBpdGVyaXRlbXModGVzdC5lbnZpcm9ubWVudC5n
ZXQoJ3ByZWZzJywge30pKToKICAgICAgICAgYXJncyArPSBbIi0tcHJlZiIsICIlcz0lcyIgJSAo
cHJlZiwgdmFsdWUpXQogICAgIGlmIGJyb3dzZXIuY2FfY2VydGlmaWNhdGVfcGF0aDoKICAgICAg
ICAgYXJncyArPSBbIi0tY2VydGlmaWNhdGUtcGF0aCIsIGJyb3dzZXIuY2FfY2VydGlmaWNhdGVf
cGF0aF0KQEAgLTYyLDkgKzY1LDkgQEAgZGVmIGJ1aWxkX3NlcnZvX2NvbW1hbmQodGVzdCwgdGVz
dF91cmxfZnVuYywgYnJvd3NlciwgYmluYXJ5LCBwYXVzZV9hZnRlcl90ZXN0LAogY2xhc3MgU2Vy
dm9UZXN0aGFybmVzc0V4ZWN1dG9yKFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgIGNvbnZlcnRf
cmVzdWx0ID0gdGVzdGhhcm5lc3NfcmVzdWx0X2NvbnZlcnRlcgogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLCBkZWJ1
Z19pbmZvPU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2Vy
dmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGRlYnVnX2luZm89Tm9uZSwKICAgICAg
ICAgICAgICAgICAgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwgKiprd2FyZ3MpOgotICAgICAgICBQ
cm9jZXNzVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcs
CisgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93
c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxm
LnBhdXNlX2FmdGVyX3Rlc3QgPSBwYXVzZV9hZnRlcl90ZXN0CkBAIC0xMDAsMTEgKzEwMywxMSBA
QCBjbGFzcyBTZXJ2b1Rlc3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAg
ICAgICAgICAgICBzZWxmLnByb2MgPSBQcm9jZXNzSGFuZGxlcihzZWxmLmNvbW1hbmQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzT3V0cHV0TGluZT1bc2Vs
Zi5vbl9vdXRwdXRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25G
aW5pc2g9c2VsZi5vbl9maW5pc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1h
bmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNl
bGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVudikpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgdGltZW91dCA9IHRlc3QudGltZW91dCAqIHNlbGYudGltZW91dF9tdWx0aXBsaWVyCkBAIC0x
NzksMTAgKzE4MiwxMSBAQCBjbGFzcyBUZW1wRmlsZW5hbWUob2JqZWN0KToKIGNsYXNzIFNlcnZv
UmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgIGNvbnZlcnRfcmVzdWx0
ID0gcmVmdGVzdF9yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJp
bmFyeT1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgc2NyZWVu
c2hvdF9jYWNoZT1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsIHBhdXNlX2FmdGVyX3Rlc3Q9RmFsc2Us
CiAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRf
bXVsdGlwbGllciwKQEAgLTIzMSw3ICsyMzUsNyBAQCBjbGFzcyBTZXJ2b1JlZlRlc3RFeGVjdXRv
cihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmludGVyYWN0
aXZlOgogICAgICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29t
bWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
T3V0cHV0TGluZT1bc2VsZi5vbl9vdXRwdXRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudikpCiAKIAogICAgICAgICAgICAgICAgIHRyeToK
QEAgLTI0Myw3ICsyNDcsNyBAQCBjbGFzcyBTZXJ2b1JlZlRlc3RFeGVjdXRvcihQcm9jZXNzVGVz
dEV4ZWN1dG9yKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1h
bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3Rf
ZW52KGVudikpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBydiA9
IHNlbGYucHJvYy53YWl0KCkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1
cHQ6CkBAIC0yNTcsMTAgKzI2MSwxMCBAQCBjbGFzcyBTZXJ2b1JlZlRlc3RFeGVjdXRvcihQcm9j
ZXNzVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgIGlmIHJ2ICE9IDAgb3Igbm90IG9zLnBhdGgu
ZXhpc3RzKG91dHB1dF9wYXRoKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsICgiQ1JB
U0giLCBOb25lKQogCi0gICAgICAgICAgICB3aXRoIG9wZW4ob3V0cHV0X3BhdGgpIGFzIGY6Cisg
ICAgICAgICAgICB3aXRoIG9wZW4ob3V0cHV0X3BhdGgsICJyYiIpIGFzIGY6CiAgICAgICAgICAg
ICAgICAgIyBNaWdodCBuZWVkIHRvIHN0cmlwIHZhcmlhYmxlIGhlYWRlcnMgb3Igc29tZXRoaW5n
IGhlcmUKICAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZSwgYmFzZTY0LmI2NGVuY29kZShkYXRhKQorICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlLCBlbnN1cmVfc3RyKGJhc2U2NC5iNjRlbmNvZGUoZGF0YSkpCiAKICAgICBkZWYgZG9f
dGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5pbXBsZW1lbnRhdGlvbi5y
dW5fdGVzdCh0ZXN0KQpAQCAtMzA1LDEwICszMDksMTEgQEAgY2xhc3MgU2Vydm9UaW1lZFJ1bm5l
cihUaW1lZFJ1bm5lcik6CiBjbGFzcyBTZXJ2b0NyYXNodGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0
RXhlY3V0b3IpOgogICAgIGNvbnZlcnRfcmVzdWx0ID0gY3Jhc2h0ZXN0X3Jlc3VsdF9jb252ZXJ0
ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5h
cnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxv
Z2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5PU5vbmUsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGRlYnVnX2lu
Zm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgKiprd2Fy
Z3MpOgogICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLApAQCAtMzI5LDYgKzMz
NCw4IEBAIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6
CiAgICAgICAgIHNlbGYudGVzdCA9IHRlc3QKICAgICAgICAgc3VjY2VzcywgZGF0YSA9IFNlcnZv
VGltZWRSdW5uZXIoc2VsZi5sb2dnZXIsIHNlbGYuZG9fY3Jhc2h0ZXN0LCBzZWxmLnByb3RvY29s
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3VybCwgdGlt
ZW91dCwgc2VsZi5leHRyYV90aW1lb3V0KS5ydW4oKQorICAgICAgICAjIEVuc3VyZSB0aGF0IG5v
IHByb2Nlc3NlcyBoYW5nIGFyb3VuZCBpZiB0aGV5IHRpbWVvdXQuCisgICAgICAgIHNlbGYucHJv
Yy5raWxsKCkKIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
Y29udmVydF9yZXN1bHQodGVzdCwgZGF0YSkKQEAgLTM1MCwxMSArMzU3LDExIEBAIGNsYXNzIFNl
cnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAKICAgICAgICAgaWYg
bm90IHNlbGYuaW50ZXJhY3RpdmU6CiAgICAgICAgICAgICBzZWxmLnByb2MgPSBQcm9jZXNzSGFu
ZGxlcihjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2Vu
dihlbnYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVPdXRw
dXQ9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLnByb2MucnVuKCkKICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgZW52PWVudikK
KyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgZW52PWNh
c3RfZW52KGVudikpCiAKICAgICAgICAgc2VsZi5wcm9jLndhaXQoKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkKaW5kZXggMDJlY2M3NTY2NDc2NTZl
NmIyMGUwNjM3MWQyODc2N2ZhMGViMDBmMS4uMDY4MGM0ZWQyMjk5MDM1MTQ2YzJiMWU0NzhmNGIz
ZmExYzMwMTEwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNl
cnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2Ry
aXZlci5weQpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyUHJvdG9jb2wo
UHJvdG9jb2wpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGV4Y2VwdCAoc29j
a2V0LnRpbWVvdXQsIElPRXJyb3IpOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJy
b3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3Mg
U2Vydm9XZWJEcml2ZXJSdW4oVGltZWRSdW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IGdl
dGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAg
ICAgICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFj
ay5mb3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRf
ZXhjKCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1Ii
LCBlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5zZXQo
KQpAQCAtMTU1LDEwICsxNTUsMTAgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSdW4oVGltZWRSdW5u
ZXIpOgogY2xhc3MgU2Vydm9XZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNz
RXhlY3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEs
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywg
dGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9
VHJ1ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAg
ICAgKiprd2FyZ3MpOgotICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgICAgICBU
ZXN0aGFybmVzc0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVy
X2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lKQogICAgICAgICBzZWxmLnByb3RvY29sID0gU2Vy
dm9XZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0
aWVzKQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUsICJ0ZXN0aGFybmVzc19z
ZXJ2b2RyaXZlci5qcyIpKSBhcyBmOgpAQCAtMjIxLDExICsyMjEsMTIgQEAgY2xhc3MgVGltZW91
dEVycm9yKEV4Y2VwdGlvbik6CiAKIAogY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0
b3IoUmVmVGVzdEV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2Vy
dmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAg
ICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUs
IGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICAi
IiJTZWxlbml1bSBXZWJEcml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAg
ICAgIFJlZlRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJv
d3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNo
b3RfY2FjaGUsCkBAIC0yMzUsOCArMjM2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0
RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPWNhcGFiaWxpdGllcykKICAgICAgICAgc2Vs
Zi5pbXBsZW1lbnRhdGlvbiA9IFJlZlRlc3RJbXBsZW1lbnRhdGlvbihzZWxmKQogICAgICAgICBz
ZWxmLnRpbWVvdXQgPSBOb25lCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwg
InJlZnRlc3Qtd2FpdF93ZWJkcml2ZXIuanMiKSkgYXMgZjoKLSAgICAgICAgICAgIHNlbGYud2Fp
dF9zY3JpcHQgPSBmLnJlYWQoKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUs
ICJ0ZXN0LXdhaXQuanMiKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zY3JpcHQgPSBm
LnJlYWQoKSAlIHsiY2xhc3NuYW1lIjogInJlZnRlc3Qtd2FpdCJ9CiAKICAgICBkZWYgcmVzZXQo
c2VsZik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKQpAQCAtMjU2LDcgKzI1
Nyw3IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRv
cik6CiAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAg
ICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAg
IG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAgcmV0dXJuIHRl
c3QucmVzdWx0X2NscygiSU5URVJOQUwtRVJST1IiLCBtZXNzYWdlKSwgW10KIAogICAgIGRlZiBz
Y3JlZW5zaG90KHNlbGYsIHRlc3QsIHZpZXdwb3J0X3NpemUsIGRwaSk6CkBAIC0yNzcsNyArMjc4
LDcgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKIAogICAgICAgICByZXR1cm4gU2Vydm9XZWJEcml2ZXJSdW4oc2VsZi5sb2dnZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zY3JlZW5zaG90LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5zZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm90b2NvbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYudGVzdF91cmwodGVzdCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5leHRyYV90aW1lb3V0KS5ydW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9leGVjdXRvcndlYmRyaXZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3J3ZWJkcml2ZXIucHkKaW5kZXggOWI1ZjM5NzY0MDI1ZWJkOTEyZjlmZDA4MGFkMDVkZDBkZWVh
ODI3Yy4uYzVmMjk2NWVjMTg1ODYxMzFiYzIwZDM5NGY1NmI3ODgyN2MxMDJlYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndlYmRyaXZlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CkBAIC0xLDExICsxLDEyIEBA
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAogaW1wb3J0IGpzb24KIGlt
cG9ydCBvcwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIGlt
cG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHV1aWQKK2Zyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgogCiBmcm9tIC5iYXNlIGltcG9ydCAoQ2Fs
bGJhY2tIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgIENyYXNodGVzdEV4ZWN1dG9yLApAQCAt
NjYsMTMgKzY3LDIwIEBAIGNsYXNzIFdlYkRyaXZlckJhc2VQcm90b2NvbFBhcnQoQmFzZVByb3Rv
Y29sUGFydCk6CiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAg
ICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZXhlY3V0ZV9hc3luY19zY3JpcHQoIiIpCi0gICAgICAg
ICAgICBleGNlcHQgKGNsaWVudC5UaW1lb3V0RXhjZXB0aW9uLCBjbGllbnQuU2NyaXB0VGltZW91
dEV4Y2VwdGlvbik6CisgICAgICAgICAgICBleGNlcHQgKGNsaWVudC5UaW1lb3V0RXhjZXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuU2NyaXB0VGltZW91dEV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgY2xpZW50LkphdmFzY3JpcHRFcnJvckV4Y2VwdGlvbik6CisgICAg
ICAgICAgICAgICAgIyBBIEphdmFzY3JpcHRFcnJvckV4Y2VwdGlvbiB3aWxsIGhhcHBlbiB3aGVu
IHdlIG5hdmlnYXRlOworICAgICAgICAgICAgICAgICMgYnkgaWdub3JpbmcgaXQgaXQncyBwb3Nz
aWJsZSB0byByZWxvYWQgdGhlIHRlc3Qgd2hpbHN0IHRoZQorICAgICAgICAgICAgICAgICMgaGFy
bmVzcyByZW1haW5zIHBhdXNlZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGV4
Y2VwdCAoc29ja2V0LnRpbWVvdXQsIGNsaWVudC5Ob1N1Y2hXaW5kb3dFeGNlcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgIGNsaWVudC5Vbmtub3duRXJyb3JFeGNlcHRpb24sIElPRXJyb3IpOgor
ICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAg
Y2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50
LlVua25vd25FcnJvckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgSU9FcnJvcik6CiAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
LSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4Yyhl
KSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgc2VsZi5s
b2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgICAgICBicmVh
awogCiAKQEAgLTg2LDggKzk0LDggQEAgY2xhc3MgV2ViRHJpdmVyVGVzdGhhcm5lc3NQcm90b2Nv
bFBhcnQoVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgIGRlZiBsb2FkX3J1bm5lcihzZWxm
LCB1cmxfcHJvdG9jb2wpOgogICAgICAgICBpZiBzZWxmLnJ1bm5lcl9oYW5kbGU6CiAgICAgICAg
ICAgICBzZWxmLndlYmRyaXZlci53aW5kb3dfaGFuZGxlID0gc2VsZi5ydW5uZXJfaGFuZGxlCi0g
ICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVy
X3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVz
dGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAgICAgICB1cmwgPSB1cmxqb2luKHNlbGYucGFyZW50
LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
IkxvYWRpbmcgJXMiICUgdXJsKQogCiAgICAgICAgIHNlbGYud2ViZHJpdmVyLnVybCA9IHVybApA
QCAtMjg4LDE1ICsyOTYsMTkgQEAgY2xhc3MgV2ViRHJpdmVyUHJvdG9jb2woUHJvdG9jb2wpOgog
ICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQogICAg
ICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAg
IG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcobWVzc2FnZSkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIgPSBOb25lCiAKICAgICBk
ZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgR2V0IGEgc2lt
cGxlIHByb3BlcnR5IG92ZXIgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAgICAgIHNlbGYud2ViZHJp
dmVyLndpbmRvd19oYW5kbGUKLSAgICAgICAgZXhjZXB0IChzb2NrZXQudGltZW91dCwgY2xpZW50
LlVua25vd25FcnJvckV4Y2VwdGlvbik6CisgICAgICAgICAgICAjIEdldCBhIHNpbXBsZSBwcm9w
ZXJ0eSBvdmVyIHRoZSBjb25uZWN0aW9uLCB3aXRoIDIgc2Vjb25kcyBvZiB0aW1lb3V0CisgICAg
ICAgICAgICAjIHRoYXQgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gY2hlY2sgaWYgdGhl
IFdlYkRyaXZlciBpdHMKKyAgICAgICAgICAgICMgc3RpbGwgYWxpdmUsIGFuZCBhbGxvd3MgdG8g
Y29tcGxldGUgdGhlIGNoZWNrIHdpdGhpbiB0aGUgdGVzdHJ1bm5lcgorICAgICAgICAgICAgIyA1
IHNlY29uZHMgb2YgZXh0cmFfdGltZW91dCB3ZSBoYXZlIGFzIG1heGltdW0gdG8gZW5kIHRoZSB0
ZXN0IGJlZm9yZQorICAgICAgICAgICAgIyB0aGUgZXh0ZXJuYWwgdGltZW91dCBmcm9tIHRlc3Ry
dW5uZXIgdHJpZ2dlcnMuCisgICAgICAgICAgICBzZWxmLndlYmRyaXZlci5zZW5kX3Nlc3Npb25f
Y29tbWFuZCgiR0VUIiwgIndpbmRvdyIsIHRpbWVvdXQ9MikKKyAgICAgICAgZXhjZXB0IChzb2Nr
ZXQudGltZW91dCwgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgY2xpZW50LkludmFsaWRT
ZXNzaW9uSWRFeGNlcHRpb24pOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJl
dHVybiBUcnVlCiAKQEAgLTMyOSw3ICszNDEsNyBAQCBjbGFzcyBXZWJEcml2ZXJSdW4oVGltZWRS
dW5uZXIpOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIoZ2V0YXR0cihlLCAibWVzc2Fn
ZSIsICIiKSkKICAgICAgICAgICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0
X2V4YygpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1F
UlJPUiIsIG1lc3NhZ2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3Vs
dF9mbGFnLnNldCgpCkBAIC0zMzgsMTEgKzM1MCwxMSBAQCBjbGFzcyBXZWJEcml2ZXJSdW4oVGlt
ZWRSdW5uZXIpOgogY2xhc3MgV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVz
c0V4ZWN1dG9yKToKICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0x
LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcs
IHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25l
PVRydWUsIGNhcGFiaWxpdGllcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCiAgICAgICAgICAgICAg
ICAgIHN1cHBvcnRzX2VhZ2VyX3BhZ2Vsb2FkPVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIiIi
V2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAg
ICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9j
b25maWcsCisgICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAg
ICBzZWxmLnByb3RvY29sID0gV2ViRHJpdmVyUHJvdG9jb2woc2VsZiwgYnJvd3NlciwgY2FwYWJp
bGl0aWVzKQpAQCAtNDM3LDExICs0NDksMTIgQEAgaWYgKGxvY2F0aW9uLmhyZWYgPT09ICJhYm91
dDpibGFuayIpIHsKIAogCiBjbGFzcyBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4
ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywg
dGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAg
ICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLAogICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGNhcGFiaWxpdGllcz1Ob25lLCAqKmt3YXJncyk6
CiAgICAgICAgICIiIldlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAg
ICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVu
c2hvdF9jYWNoZSwKQEAgLTUwNSwxMSArNTE4LDEyIEBAIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogCiAKIGNsYXNzIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKENyYXNodGVzdEV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJvd3Nl
ciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVy
PTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgY2xvc2VfYWZ0ZXJf
ZG9uZT1UcnVlLAogICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsIGNhcGFiaWxpdGll
cz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICIiIldlYkRyaXZlci1iYXNlZCBleGVjdXRvciBm
b3IgcmVmdGVzdHMiIiIKICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC01MzUsNyArNTQ5LDcg
QEAgY2xhc3MgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgog
ICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF9yZXN1
bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqKmRhdGEp
LCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoKmRhdGEpLCBbXSkKIAogICAg
IGRlZiBkb19jcmFzaHRlc3Qoc2VsZiwgcHJvdG9jb2wsIHVybCwgdGltZW91dCk6CiAgICAgICAg
IHByb3RvY29sLmJhc2UubG9hZCh1cmwpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL3Byb3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQppbmRl
eCA5NWZkZWM3Yzk4MTY4OGFhOTljYTEzZWVhZjRjN2I2YzQwNTJjOTE3Li40ZWNkZDUxYTBlZjVl
Y2E4MTUzZmZiODQ4ZjAyNTNlZWI2ZDdmNzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhl
Y3V0b3JzL3Byb3RvY29sLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHJvdG9jb2wu
cHkKQEAgLTMyLDcgKzMyLDYgQEAgY2xhc3MgUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgIiIi
OnJldHVybnM6IEN1cnJlbnQgbG9nZ2VyIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmV4ZWN1dG9y
LmxvZ2dlcgogCi0gICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAgICAg
ICAiIiJJcyB0aGUgYnJvd3NlciBjb25uZWN0aW9uIHN0aWxsIGFjdGl2ZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9ydW5uZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5lci9ydW5uZXIucHkKaW5kZXggYzE5MzZlYjk2NmY3
ODgzNGQ4MzljNzk0MDkzMjJiMGE5NmFmMTI4NC4uM2QzMjkxNzY1OWIzOTAwZjllNDY0NjcwZDJj
ZGMzOWI4ZmYxODBhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3Ry
dW5uZXIvcnVubmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVy
L3J1bm5lci5weQpAQCAtNDQsNyArNDQsNyBAQCBkZWYgcnVuKHBhdGgsIHNlcnZlcl9jb25maWcs
IHNlc3Npb25fY29uZmlnLCB0aW1lb3V0PTApOgogICAgIG9zLmVudmlyb25bIldEX0hPU1QiXSA9
IHNlc3Npb25fY29uZmlnWyJob3N0Il0KICAgICBvcy5lbnZpcm9uWyJXRF9QT1JUIl0gPSBzdHIo
c2Vzc2lvbl9jb25maWdbInBvcnQiXSkKICAgICBvcy5lbnZpcm9uWyJXRF9DQVBBQklMSVRJRVMi
XSA9IGpzb24uZHVtcHMoc2Vzc2lvbl9jb25maWdbImNhcGFiaWxpdGllcyJdKQotICAgIG9zLmVu
dmlyb25bIldEX1NFUlZFUl9DT05GSUciXSA9IGpzb24uZHVtcHMoc2VydmVyX2NvbmZpZy5hc19k
aWN0KCkpCisgICAgb3MuZW52aXJvblsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhz
ZXJ2ZXJfY29uZmlnLmFzX2RpY3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogCiAgICAgaGFybmVz
cyA9IEhhcm5lc3NSZXN1bHRSZWNvcmRlcigpCiAgICAgc3VidGVzdHMgPSBTdWJ0ZXN0UmVzdWx0
UmVjb3JkZXIoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy90ZXN0LXdhaXQu
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcwppbmRleCA4YTdlZGI3OWQ2
MjI1NmVlZjYzYzcxZWFiZDQ1MGQ0MmJjZTdjNGQyLi5hZDA4YWQ3ZDc2ZmIwMjk5YWFkZWRiNTcy
MTkzYzM4YzUwNTVlNjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qt
d2FpdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcwpAQCAtMzIs
NyArMzIsOCBAQCBmdW5jdGlvbiB3YWl0X3BhaW50cygpIHsKIH0KIAogZnVuY3Rpb24gc2NyZWVu
c2hvdF9pZl9yZWFkeSgpIHsKLSAgaWYgKHJvb3QuY2xhc3NMaXN0LmNvbnRhaW5zKCIlKGNsYXNz
bmFtZSlzIikgJiYKKyAgaWYgKHJvb3QgJiYKKyAgICAgIHJvb3QuY2xhc3NMaXN0LmNvbnRhaW5z
KCIlKGNsYXNzbmFtZSlzIikgJiYKICAgICAgIG9ic2VydmVyID09PSBudWxsKSB7CiAgICAgb2Jz
ZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih3YWl0X3BhaW50cyk7CiAgICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShyb290LCB7YXR0cmlidXRlczogdHJ1ZX0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNj
LWltcG9ydC5sb2cKaW5kZXggNWQ5YjY5OGYzY2EzNWFiYTdmZGUwMjUyNWI4NTg1OTk1OGQyMzhh
YS4uNjExNjhhMjA3YmZiNDA3NjM2OGQ2ZDRkMTkxOTFiYmRjZDU2Zjc3MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCkBAIC0xNSw2ICsxNSw3IEBAIE5vbmUKIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL19faW5pdF9f
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5CiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmNocm9tZS5w
eQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JlZGdlLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5w
eQppbmRleCA0ZDUwNTA4NmJkOGQ5OTFjOTUzYzM0ZDM4ZDhlMWZhMGNiOTIwZjk5Li43NTIxZjI1
YjEzNDRmNWM1MGI4MTgyYTJiN2E2ODI3ODg1OGY5YjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhwZWN0ZWR0cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leHBlY3RlZHRyZWUucHkKQEAg
LTEsNSArMSw2IEBACiBmcm9tIG1hdGggaW1wb3J0IGxvZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBv
cnQgZGVmYXVsdGRpY3QKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMKIAog
Y2xhc3MgTm9kZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wLCB2YWx1ZSk6
CkBAIC0zMyw3ICszNCw3IEBAIGRlZiBlbnRyb3B5KHJlc3VsdHMpOgogCiAgICAgcmVzdWx0X2Nv
dW50cyA9IGRlZmF1bHRkaWN0KGludCkKICAgICB0b3RhbCA9IGZsb2F0KGxlbihyZXN1bHRzKSkK
LSAgICBmb3IgdmFsdWVzIGluIHJlc3VsdHMuaXRlcnZhbHVlcygpOgorICAgIGZvciB2YWx1ZXMg
aW4gaXRlcnZhbHVlcyhyZXN1bHRzKToKICAgICAgICAgIyBOb3Qgc3VyZSB0aGlzIGlzIHJpZ2h0
LCBwb3NzaWJseSB3YW50IHRvIHRyZWF0IG11bHRpcGxlIHZhbHVlcyBhcwogICAgICAgICAjIGRp
c3RpbmN0IGZyb20gbXVsdGlwbGUgb2YgdGhlIHNhbWUgdmFsdWU/CiAgICAgICAgIGZvciB2YWx1
ZSBpbiB2YWx1ZXM6CkBAIC00MSw3ICs0Miw3IEBAIGRlZiBlbnRyb3B5KHJlc3VsdHMpOgogCiAg
ICAgZW50cm9weV9zdW0gPSAwCiAKLSAgICBmb3IgY291bnQgaW4gcmVzdWx0X2NvdW50cy5pdGVy
dmFsdWVzKCk6CisgICAgZm9yIGNvdW50IGluIGl0ZXJ2YWx1ZXMocmVzdWx0X2NvdW50cyk6CiAg
ICAgICAgIHByb3AgPSBmbG9hdChjb3VudCkgLyB0b3RhbAogICAgICAgICBlbnRyb3B5X3N1bSAt
PSBwcm9wICogbG9nKHByb3AsIDIpCiAKQEAgLTUyLDcgKzUzLDcgQEAgZGVmIHNwbGl0X3Jlc3Vs
dHMocHJvcCwgcmVzdWx0cyk6CiAgICAgIiIiU3BsaXQgYSBkaWN0aW9uYXJ5IG9mIHJlc3VsdHMg
aW50byBhIGRpY3Rpb25hcnkgb2YgZGljdGlvbmFyaWVzIHdoZXJlCiAgICAgZWFjaCBzdWItZGlj
dGlvbmFyeSBoYXMgYSBzcGVjaWZpYyB2YWx1ZSBvZiB0aGUgZ2l2ZW4gcHJvcGVydHkiIiIKICAg
ICBieV9wcm9wID0gZGVmYXVsdGRpY3QoZGljdCkKLSAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGlu
IHJlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHJ1bl9pbmZvLCB2YWx1ZSBpbiBpdGVyaXRl
bXMocmVzdWx0cyk6CiAgICAgICAgIGJ5X3Byb3BbcnVuX2luZm9bcHJvcF1dW3J1bl9pbmZvXSA9
IHZhbHVlCiAKICAgICByZXR1cm4gYnlfcHJvcApAQCAtNzcsMTMgKzc4LDEzIEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
ICAgICBwcm9wX2luZGV4ID0ge3Byb3A6IGkgZm9yIGksIHByb3AgaW4gZW51bWVyYXRlKHByb3Bl
cnRpZXMpfQogCiAgICAgYWxsX3Jlc3VsdHMgPSBkZWZhdWx0ZGljdChpbnQpCi0gICAgZm9yIHJl
c3VsdF92YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6Ci0gICAgICAgIGZvciByZXN1bHRf
dmFsdWUsIGNvdW50IGluIHJlc3VsdF92YWx1ZXMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHJlc3Vs
dF92YWx1ZXMgaW4gaXRlcnZhbHVlcyhyZXN1bHRzKToKKyAgICAgICAgZm9yIHJlc3VsdF92YWx1
ZSwgY291bnQgaW4gaXRlcml0ZW1zKHJlc3VsdF92YWx1ZXMpOgogICAgICAgICAgICAgYWxsX3Jl
c3VsdHNbcmVzdWx0X3ZhbHVlXSArPSBjb3VudAogCiAgICAgIyBJZiB0aGVyZSBpcyBvbmx5IG9u
ZSByZXN1bHQgd2UgYXJlIGRvbmUKICAgICBpZiBub3QgcHJvcGVydGllcyBvciBsZW4oYWxsX3Jl
c3VsdHMpID09IDE6Ci0gICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gYWxsX3Jlc3VsdHMuaXRl
cml0ZW1zKCk6CisgICAgICAgIGZvciB2YWx1ZSwgY291bnQgaW4gaXRlcml0ZW1zKGFsbF9yZXN1
bHRzKToKICAgICAgICAgICAgIHRyZWUucmVzdWx0X3ZhbHVlc1t2YWx1ZV0gKz0gY291bnQKICAg
ICAgICAgdHJlZS5ydW5faW5mbyB8PSBzZXQocmVzdWx0cy5rZXlzKCkpCiAgICAgICAgIHJldHVy
biB0cmVlCkBAIC05OSw3ICsxMDAsNyBAQCBkZWYgYnVpbGRfdHJlZShwcm9wZXJ0aWVzLCBkZXBl
bmRlbnRfcHJvcHMsIHJlc3VsdHMsIHRyZWU9Tm9uZSk6CiAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICBuZXdfZW50cm9weSA9IDAuCiAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5ID0g
W10KLSAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gcmVzdWx0X3NldHMuaXRl
cml0ZW1zKCk6CisgICAgICAgIGZvciBwcm9wX3ZhbHVlLCByZXN1bHRfc2V0IGluIGl0ZXJpdGVt
cyhyZXN1bHRfc2V0cyk6CiAgICAgICAgICAgICByZXN1bHRzX3NldHNfZW50cm9weS5hcHBlbmQo
KGVudHJvcHkocmVzdWx0X3NldCksIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQpKQogICAgICAgICAg
ICAgbmV3X2VudHJvcHkgKz0gKGZsb2F0KGxlbihyZXN1bHRfc2V0KSkgLyBsZW4ocmVzdWx0cykp
ICogcmVzdWx0c19zZXRzX2VudHJvcHlbLTFdWzBdCiAKQEAgLTEwOSw3ICsxMTAsNyBAQCBkZWYg
YnVpbGRfdHJlZShwcm9wZXJ0aWVzLCBkZXBlbmRlbnRfcHJvcHMsIHJlc3VsdHMsIHRyZWU9Tm9u
ZSk6CiAKICAgICAjIEluIHRoZSBjYXNlIHRoYXQgbm8gcHJvcGVydGllcyBwYXJ0aXRpb24gdGhl
IHNwYWNlCiAgICAgaWYgbm90IHJlc3VsdHNfcGFydGl0aW9uczoKLSAgICAgICAgZm9yIHZhbHVl
LCBjb3VudCBpbiBhbGxfcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBj
b3VudCBpbiBpdGVyaXRlbXMoYWxsX3Jlc3VsdHMpOgogICAgICAgICAgICAgdHJlZS5yZXN1bHRf
dmFsdWVzW3ZhbHVlXSArPSBjb3VudAogICAgICAgICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1
bHRzLmtleXMoKSkKICAgICAgICAgcmV0dXJuIHRyZWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9mb250LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2ZvbnQucHkKaW5kZXggNjY0N2E4NTgwYmU3YWI0MDUw
YmJkMzc1OTNiMmU2NTk1YmMzYWM3Mi4uNjIyNmZjNjZmZWRmMmFmYzk2YjUxMTBmMzUyNGIwMGQx
ODVjYzUzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2ZvbnQucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2ZvbnQucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgY3R5cGVzCi1pbXBvcnQgbG9nZ2lu
ZwogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwbGlzdGxpYgpAQCAtMTIsNyAr
MTEsOCBAQCBTWVNURU0gPSBwbGF0Zm9ybS5zeXN0ZW0oKS5sb3dlcigpCiAKIAogY2xhc3MgRm9u
dEluc3RhbGxlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb250X2Rpcj1Ob25l
LCAqKmZvbnRzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBmb250X2Rpcj1Ob25l
LCAqKmZvbnRzKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKICAgICAgICAgc2VsZi5m
b250X2RpciA9IGZvbnRfZGlyCiAgICAgICAgIHNlbGYuaW5zdGFsbGVkX2ZvbnRzID0gRmFsc2UK
ICAgICAgICAgc2VsZi5jcmVhdGVkX2RpciA9IEZhbHNlCkBAIC0yNiwxNCArMjYsMTMgQEAgY2xh
c3MgRm9udEluc3RhbGxlcihvYmplY3QpOgogICAgICAgICAgICAgZm9udF9uYW1lID0gZm9udF9w
YXRoLnNwbGl0KCcvJylbLTFdCiAgICAgICAgICAgICBpbnN0YWxsID0gZ2V0YXR0cihzZWxmLCAn
aW5zdGFsbF8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCBpbnN0
YWxsOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnRm9udCBpbnN0YWxsYXRpb24g
bm90IHN1cHBvcnRlZCBvbiAlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZ
U1RFTSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdGb250IGluc3RhbGxh
dGlvbiBub3Qgc3VwcG9ydGVkIG9uICVzJyAlIFNZU1RFTSkKICAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKICAgICAgICAgICAgIGlmIGluc3RhbGwoZm9udF9uYW1lLCBmb250X3BhdGgpOgog
ICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFsbGVkX2ZvbnRzID0gVHJ1ZQotICAgICAgICAgICAg
ICAgIGxvZ2dpbmcuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJywgZm9udF9uYW1lKQorICAgICAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ0luc3RhbGxlZCBmb250OiAlcycgJSBmb250X25h
bWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygn
VW5hYmxlIHRvIGluc3RhbGwgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIud2FybmluZygnVW5hYmxlIHRvIGluc3RhbGwgZm9udDogJXMnICUgZm9udF9u
YW1lKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIp
OgogICAgICAgICBpZiBub3Qgc2VsZi5pbnN0YWxsZWRfZm9udHM6CkBAIC00MywxMiArNDIsMTIg
QEAgY2xhc3MgRm9udEluc3RhbGxlcihvYmplY3QpOgogICAgICAgICAgICAgZm9udF9uYW1lID0g
Zm9udF9wYXRoLnNwbGl0KCcvJylbLTFdCiAgICAgICAgICAgICByZW1vdmUgPSBnZXRhdHRyKHNl
bGYsICdyZW1vdmVfJXNfZm9udCcgJSBTWVNURU0sIE5vbmUpCiAgICAgICAgICAgICBpZiBub3Qg
cmVtb3ZlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnRm9udCByZW1vdmFsIG5v
dCBzdXBwb3J0ZWQgb24gJXMnLCBTWVNURU0pCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIu
d2FybmluZygnRm9udCByZW1vdmFsIG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgaWYgcmVtb3ZlKGZvbnRfbmFt
ZSwgZm9udF9wYXRoKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ1JlbW92ZWQgZm9u
dDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUmVt
b3ZlZCBmb250OiAlcycgJSBmb250X25hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnVW5hYmxlIHRvIHJlbW92ZSBmb250OiAlcycsIGZvbnRf
bmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gcmVt
b3ZlIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKIAogICAgIGRlZiBpbnN0YWxsX2xpbnV4X2ZvbnQo
c2VsZiwgZm9udF9uYW1lLCBmb250X3BhdGgpOgogICAgICAgICBpZiBub3Qgc2VsZi5mb250X2Rp
cjoKQEAgLTYyLDcgKzYxLDcgQEAgY2xhc3MgRm9udEluc3RhbGxlcihvYmplY3QpOgogICAgICAg
ICAgICAgZmNfY2FjaGVfcmV0dXJuY29kZSA9IGNhbGwoJ2ZjLWNhY2hlJykKICAgICAgICAgICAg
IHJldHVybiBub3QgZmNfY2FjaGVfcmV0dXJuY29kZQogICAgICAgICBleGNlcHQgT1NFcnJvcjog
ICMgSWYgZm9udGNvbmZpZyBkb2Vzbid0IGV4aXN0LCByZXR1cm4gRmFsc2UKLSAgICAgICAgICAg
IGxvZ2dpbmcuZXJyb3IoJ2ZvbnRjb25maWcgbm90IGF2YWlsYWJsZSBvbiB0aGlzIExpbnV4IHN5
c3RlbS4nKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoJ2ZvbnRjb25maWcgbm90IGF2
YWlsYWJsZSBvbiB0aGlzIExpbnV4IHN5c3RlbS4nKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CiAKICAgICBkZWYgaW5zdGFsbF9kYXJ3aW5fZm9udChzZWxmLCBmb250X25hbWUsIGZvbnRfcGF0
aCk6CkBAIC03OSw3ICs3OCwxMiBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAg
ICAgICMgUGVyIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvcmVzdWx0cy1j
b2xsZWN0aW9uL2lzc3Vlcy8yMTgKICAgICAgICAgIyBpbnN0YWxsaW5nIEFoZW0gb24gbWFjT1Mg
aXMgZmxha3ksIHNvIGNoZWNrIGlmIGl0IGFjdHVhbGx5IGluc3RhbGxlZAogICAgICAgICBmb250
cyA9IGNoZWNrX291dHB1dChbJy91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXInLCAnLXhtbCcsICdT
UEZvbnRzRGF0YVR5cGUnXSkKLSAgICAgICAgZm9udHMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9t
U3RyaW5nKGZvbnRzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGlmIHB5MworICAgICAg
ICAgICAgcmVhZFBsaXN0RnJvbUJ5dGVzID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbUJ5dGVzCisg
ICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJlYWRQbGlzdEZyb21C
eXRlcyA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJpbmcKKyAgICAgICAgZm9udHMgPSByZWFk
UGxpc3RGcm9tQnl0ZXMoZm9udHMpCiAgICAgICAgIGFzc2VydCBsZW4oZm9udHMpID09IDEKICAg
ICAgICAgZm9yIGZvbnQgaW4gZm9udHNbMF1bJ19pdGVtcyddOgogICAgICAgICAgICAgaWYgZm9u
dFsncGF0aCddID09IGluc3RhbGxlZF9mb250X3BhdGg6CkBAIC0xMTAsNyArMTE0LDcgQEAgY2xh
c3MgRm9udEluc3RhbGxlcihvYmplY3QpOgogICAgICAgICAgICAgZmNfY2FjaGVfcmV0dXJuY29k
ZSA9IGNhbGwoJ2ZjLWNhY2hlJykKICAgICAgICAgICAgIHJldHVybiBub3QgZmNfY2FjaGVfcmV0
dXJuY29kZQogICAgICAgICBleGNlcHQgT1NFcnJvcjogICMgSWYgZm9udGNvbmZpZyBkb2Vzbid0
IGV4aXN0LCByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ2ZvbnRjb25m
aWcgbm90IGF2YWlsYWJsZSBvbiB0aGlzIExpbnV4IHN5c3RlbS4nKQorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IoJ2ZvbnRjb25maWcgbm90IGF2YWlsYWJsZSBvbiB0aGlzIExpbnV4IHN5
c3RlbS4nKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgcmVtb3ZlX2Rhcndp
bl9mb250KHNlbGYsIGZvbnRfbmFtZSwgXyk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9y
bWF0dGVycy9jaHJvbWl1bS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL2Nocm9taXVtLnB5
CmluZGV4IDU2NDM1ZWFiZjRiYmVhZGJlZTdhZmEyOTRlM2UwYmIxZTc2ODViOTkuLjA4NjU2MGI2
YTg3M2NkYzlmZWZkM2I4YjhiN2E1M2IwMTczYjM4NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9mb3JtYXR0ZXJzL2Nocm9taXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL2No
cm9taXVtLnB5CkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2Uu
QmFzZUZvcm1hdHRlcik6CiAgICAgICAgIDpwYXJhbSBzdHIgdGVzdDogdGhlIG5hbWUgb2YgdGhl
IHRlc3QKICAgICAgICAgOnBhcmFtIHN0ciBzdWJ0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgc3VidGVz
dCB3aXRoIHRoZSBtZXNzYWdlCiAgICAgICAgIDpwYXJhbSBzdHIgc3RhdHVzOiB0aGUgc3VidGVz
dCBzdGF0dXMKLSAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVjdGVkIHN1YnRl
c3Qgc3RhdHVzCisgICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IHRoZSBleHBlY3RlZCBzdWJ0
ZXN0IHN0YXR1c2VzCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGhlIHN0cmluZyB0byBh
cHBlbmQgdG8gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgdGVzdAogCiAgICAgICAgIEhlcmUncyBhbiBl
eGFtcGxlIG9mIGEgbWVzc2FnZToKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3Jt
YXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAj
IEFkZCB0aGUgcHJlZml4LCB3aXRoIHRoZSB0ZXN0IHN0YXR1cyBhbmQgc3VidGVzdCBuYW1lIChp
ZiBhdmFpbGFibGUpCiAgICAgICAgIHByZWZpeCA9ICJbJXMiICUgc3RhdHVzCi0gICAgICAgIGlm
IGV4cGVjdGVkIGFuZCBleHBlY3RlZCAhPSBzdGF0dXM6CisgICAgICAgIGlmIGV4cGVjdGVkIGFu
ZCBzdGF0dXMgbm90IGluIGV4cGVjdGVkOgogICAgICAgICAgICAgcHJlZml4ICs9ICIgZXhwZWN0
ZWQgJXNdICIgJSBleHBlY3RlZAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJlZml4ICs9
ICJdICIKQEAgLTU1LDEzICs1NSwyOCBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJh
c2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcHJlZml4ICs9ICIlczogIiAlIHN1YnRlc3QKICAg
ICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0XSArPSBwcmVmaXggKyBtZXNzYWdlICsgIlxuIgogCi0g
ICAgZGVmIF9zdG9yZV90ZXN0X3Jlc3VsdChzZWxmLCBuYW1lLCBhY3R1YWwsIGV4cGVjdGVkLCBt
ZXNzYWdlKToKKyAgICBkZWYgX2FwcGVuZF9hcnRpZmFjdChzZWxmLCBjdXJfZGljdCwgYXJ0aWZh
Y3RfbmFtZSwgYXJ0aWZhY3RfdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQXBwZW5kcyBh
cnRpZmFjdHMgdG8gdGhlIHNwZWNpZmllZCBkaWN0aW9uYXJ5LgorICAgICAgICA6cGFyYW0gZGlj
dCBjdXJfZGljdDogdGhlIHRlc3QgbGVhZiBkaWN0aW9uYXJ5IHRvIGFwcGVuZCB0bworICAgICAg
ICA6cGFyYW0gc3RyIGFydGlmYWN0X25hbWU6IHRoZSBuYW1lIG9mIHRoZSBhcnRpZmFjdAorICAg
ICAgICA6cGFyYW0gc3RyIGFydGlmYWN0X3ZhbHVlOiB0aGUgdmFsdWUgb2YgdGhlIGFydGlmYWN0
CisgICAgICAgICIiIgorICAgICAgICBpZiAiYXJ0aWZhY3RzIiBub3QgaW4gY3VyX2RpY3Qua2V5
cygpOgorICAgICAgICAgICAgY3VyX2RpY3RbImFydGlmYWN0cyJdID0ge30KKyAgICAgICAgIyBB
cnRpZmFjdHMgYXJlIGFsbCBleHBlY3RlZCB0byBiZSBsaXN0cywgc28gZXZlbiB0aG91Z2ggd2Ug
b25seSBoYXZlIGEKKyAgICAgICAgIyBzaW5nbGUgfGFydGlmYWN0X3ZhbHVlfCB3ZSBzdGlsbCBw
dXQgaXQgaW4gYSBsaXN0LgorICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl1bYXJ0aWZhY3Rf
bmFtZV0gPSBbYXJ0aWZhY3RfdmFsdWVdCisKKyAgICBkZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNl
bGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIHdwdF9hY3R1YWwsIHN1YnRlc3Rf
ZmFpbHVyZSk6CiAgICAgICAgICIiIgogICAgICAgICBTdG9yZXMgdGhlIHJlc3VsdCBvZiBhIHNp
bmdsZSB0ZXN0IGluIHxzZWxmLnRlc3RzfAogICAgICAgICA6cGFyYW0gc3RyIG5hbWU6IG5hbWUg
b2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgYWN0dWFsOiBhY3R1YWwgc3RhdHVzIG9m
IHRoZSB0ZXN0LgotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiBleHBlY3RlZCBzdGF0dXMg
b2YgdGhlIHRlc3QuCisgICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVkIHN0YXR1
c2VzIG9mIHRoZSB0ZXN0LgogICAgICAgICA6cGFyYW0gc3RyIG1lc3NhZ2U6IHRlc3Qgb3V0cHV0
LCBzdWNoIGFzIHN0YXR1cywgc3VidGVzdCwgZXJyb3JzIGV0Yy4KKyAgICAgICAgOnBhcmFtIHN0
ciB3cHRfYWN0dWFsOiBhY3R1YWwgc3RhdHVzIHJlcG9ydGVkIGJ5IHdwdCwgbWF5IGRpZmZlciBm
cm9tIHxhY3R1YWx8LgorICAgICAgICA6cGFyYW0gYm9vbCBzdWJ0ZXN0X2ZhaWx1cmU6IHdoZXRo
ZXIgdGhpcyB0ZXN0IGZhaWxlZCBiZWNhdXNlIG9mIHN1YnRlc3RzCiAgICAgICAgICIiIgogICAg
ICAgICAjIFRoZSB0ZXN0IG5hbWUgY2FuIGNvbnRhaW4gYSBsZWFkaW5nIC8gd2hpY2ggd2lsbCBw
cm9kdWNlIGFuIGVtcHR5CiAgICAgICAgICMgc3RyaW5nIGluIHRoZSBmaXJzdCBwb3NpdGlvbiBv
ZiB0aGUgbGlzdCByZXR1cm5lZCBieSBzcGxpdC4gV2UgdXNlCkBAIC03MiwxMyArODcsMTcgQEAg
Y2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAgICAgICAg
IGN1cl9kaWN0ID0gY3VyX2RpY3Quc2V0ZGVmYXVsdChuYW1lX3BhcnQsIHt9KQogICAgICAgICBj
dXJfZGljdFsiYWN0dWFsIl0gPSBhY3R1YWwKICAgICAgICAgY3VyX2RpY3RbImV4cGVjdGVkIl0g
PSBleHBlY3RlZAorICAgICAgICBpZiBzdWJ0ZXN0X2ZhaWx1cmU6CisgICAgICAgICAgICBzZWxm
Ll9hcHBlbmRfYXJ0aWZhY3QoY3VyX2RpY3QsICJ3cHRfc3VidGVzdF9mYWlsdXJlIiwgInRydWUi
KQorICAgICAgICBpZiB3cHRfYWN0dWFsICE9IGFjdHVhbDoKKyAgICAgICAgICAgIHNlbGYuX2Fw
cGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9hY3R1YWxfc3RhdHVzIiwgd3B0X2FjdHVhbCkK
ICAgICAgICAgaWYgbWVzc2FnZSAhPSAiIjoKLSAgICAgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFj
dHMiXSA9IHsibG9nIjogbWVzc2FnZX0KKyAgICAgICAgICAgIHNlbGYuX2FwcGVuZF9hcnRpZmFj
dChjdXJfZGljdCwgImxvZyIsIG1lc3NhZ2UpCiAKICAgICAgICAgIyBGaWd1cmUgb3V0IGlmIHRo
ZXJlIHdhcyBhIHJlZ3Jlc3Npb24gb3IgdW5leHBlY3RlZCBzdGF0dXMuIFRoaXMgb25seQogICAg
ICAgICAjIGhhcHBlbnMgZm9yIHRlc3RzIHRoYXQgd2VyZSBydW4KICAgICAgICAgaWYgYWN0dWFs
ICE9ICJTS0lQIjoKLSAgICAgICAgICAgIGlmIGFjdHVhbCAhPSBleHBlY3RlZDoKKyAgICAgICAg
ICAgIGlmIGFjdHVhbCBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICAgICAgY3VyX2RpY3Rb
ImlzX3VuZXhwZWN0ZWQiXSA9IFRydWUKICAgICAgICAgICAgICAgICBpZiBhY3R1YWwgIT0gIlBB
U1MiOgogICAgICAgICAgICAgICAgICAgICBjdXJfZGljdFsiaXNfcmVncmVzc2lvbiJdID0gVHJ1
ZQpAQCAtMTAzLDcgKzEyMiw3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZv
cm1hdHRlcik6CiAgICAgICAgICAgICByZXR1cm4gIlNLSVAiCiAgICAgICAgIGlmIHN0YXR1cyA9
PSAiRVhURVJOQUwtVElNRU9VVCI6CiAgICAgICAgICAgICByZXR1cm4gIlRJTUVPVVQiCi0gICAg
ICAgIGlmIHN0YXR1cyBpbiAoIkVSUk9SIiwgIkNSQVNIIik6CisgICAgICAgIGlmIHN0YXR1cyBp
biAoIkVSUk9SIiwgIkNSQVNIIiwgIlBSRUNPTkRJVElPTl9GQUlMRUQiKToKICAgICAgICAgICAg
ICMgQ1JBU0ggaW4gV1BUIG1lYW5zIGEgYnJvd3NlciBjcmFzaCwgd2hpY2ggQ2hyb21pdW0gdHJl
YXRzIGFzIGEKICAgICAgICAgICAgICMgdGVzdCBmYWlsdXJlLgogICAgICAgICAgICAgcmV0dXJu
ICJGQUlMIgpAQCAtMTE2LDcgKzEzNSw3IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2Uu
QmFzZUZvcm1hdHRlcik6CiAKICAgICBkZWYgX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KHNlbGYsIGFjdHVhbF9zdGF0dXMsIGRhdGEpOgogICAgICAgICAiIiIKLSAgICAgICAgR2V0cyB0
aGUgZXhwZWN0ZWQgc3RhdHVzIGZyb20gYSB8ZGF0YXwgZGljdGlvbmFyeS4KKyAgICAgICAgR2V0
cyB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgogCiAgICAg
ICAgIElmIHRoZXJlIGlzIG5vIGV4cGVjdGVkIHN0YXR1cyBpbiBkYXRhLCB0aGUgYWN0dWFsIHN0
YXR1cyBpcyByZXR1cm5lZC4KICAgICAgICAgVGhpcyBpcyBiZWNhdXNlIG1vemxvZyB3aWxsIGRl
bGV0ZSAiZXhwZWN0ZWQiIGZyb20gfGRhdGF8IGlmIGl0IGlzIHRoZQpAQCAtMTI1LDQ3ICsxNDQs
NjEgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0dGVyKToKICAgICAg
ICAgaXMgZXhwZWN0ZWQuIFNvIHdlIHVzZSB0aGUgImV4cGVjdGVkIiBzdGF0dXMgaWYgaXQncyB0
aGVyZSBvciBmYWxsIGJhY2sKICAgICAgICAgdG8gdGhlIGFjdHVhbCBzdGF0dXMgaWYgaXQncyBu
b3QuCiAKKyAgICAgICAgSWYgdGhlIHRlc3QgaGFzIG11bHRpcGxlIHN0YXR1c2VzLCBpdCB3aWxs
IGhhdmUgb3RoZXIgc3RhdHVzZXMgbGlzdGVkIGFzCisgICAgICAgICJrbm93bl9pbnRlcm1pdHRl
bnQiIGluIHxkYXRhfC4gSWYgdGhlc2UgZXhpc3QsIHRoZXkgd2lsbCBiZSBhcHBlbmRlZCB0bwor
ICAgICAgICB0aGUgcmV0dXJuZWQgc3RhdHVzIHdpdGggc3BhY2VkIGluIGJldHdlZW4uCisKICAg
ICAgICAgOnBhcmFtIHN0ciBhY3R1YWxfc3RhdHVzOiB0aGUgYWN0dWFsIHN0YXR1cyBvZiB0aGUg
dGVzdAogICAgICAgICA6cGFyYW0gZGF0YTogYSBkYXRhIGRpY3Rpb25hcnkgdG8gZXh0cmFjdCBl
eHBlY3RlZCBzdGF0dXMgZnJvbQotICAgICAgICA6cmV0dXJuIHN0cjogdGhlIGV4cGVjdGVkIHN0
YXR1cworICAgICAgICA6cmV0dXJuIHN0cjogdGhlIGV4cGVjdGVkIHN0YXR1c2VzIGFzIGEgc3Ry
aW5nCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKHNlbGYuX21hcF9zdGF0dXNfbmFtZShk
YXRhWyJleHBlY3RlZCJdKQotICAgICAgICAgICAgICAgIGlmICJleHBlY3RlZCIgaW4gZGF0YSBl
bHNlIGFjdHVhbF9zdGF0dXMpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1c2VzID0gc2VsZi5fbWFw
X3N0YXR1c19uYW1lKGRhdGFbImV4cGVjdGVkIl0pIGlmICJleHBlY3RlZCIgaW4gZGF0YSBlbHNl
IGFjdHVhbF9zdGF0dXMKKyAgICAgICAgaWYgZGF0YS5nZXQoImtub3duX2ludGVybWl0dGVudCIp
OgorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgKz0gIiAiICsgIiAiLmpvaW4oCisgICAg
ICAgICAgICAgICAgW3NlbGYuX21hcF9zdGF0dXNfbmFtZShvdGhlcl9zdGF0dXMpIGZvciBvdGhl
cl9zdGF0dXMgaW4gZGF0YVsia25vd25faW50ZXJtaXR0ZW50Il1dKQorICAgICAgICByZXR1cm4g
ZXhwZWN0ZWRfc3RhdHVzZXMKIAogICAgIGRlZiBzdWl0ZV9zdGFydChzZWxmLCBkYXRhKToKLSAg
ICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChkYXRhWyJ0aW1lIl0gaWYgInRp
bWUiIGluIGRhdGEKKyAgICAgICAgIyB8ZGF0YXwgY29udGFpbnMgYSB0aW1lc3RhbXAgaW4gbWlj
cm9zZWNvbmRzLCB3aGlsZSB0aW1lLnRpbWUoKSBnaXZlcworICAgICAgICAjIGl0IGluIHNlY29u
ZHMuCisgICAgICAgIHNlbGYuc3RhcnRfdGltZXN0YW1wX3NlY29uZHMgPSAoZmxvYXQoZGF0YVsi
dGltZSJdKSAvIDEwMDAgaWYgInRpbWUiIGluIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIHRpbWUudGltZSgpKQogCiAgICAgZGVmIHRlc3Rfc3RhdHVz
KHNlbGYsIGRhdGEpOgogICAgICAgICB0ZXN0X25hbWUgPSBkYXRhWyJ0ZXN0Il0KLSAgICAgICAg
aXNfdW5leHBlY3RlZCA9IE5vbmUKICAgICAgICAgYWN0dWFsX3N0YXR1cyA9IHNlbGYuX21hcF9z
dGF0dXNfbmFtZShkYXRhWyJzdGF0dXMiXSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gc2Vs
Zi5fZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoYWN0dWFsX3N0YXR1cywgZGF0YSkKKyAg
ICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21f
ZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQogCi0gICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBhY3R1
YWxfc3RhdHVzICE9IGV4cGVjdGVkX3N0YXR1cworICAgICAgICBpc191bmV4cGVjdGVkID0gYWN0
dWFsX3N0YXR1cyBub3QgaW4gZXhwZWN0ZWRfc3RhdHVzZXMKICAgICAgICAgaWYgaXNfdW5leHBl
Y3RlZCBhbmQgdGVzdF9uYW1lIG5vdCBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlsczoK
ICAgICAgICAgICAgIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzLmFkZCh0ZXN0X25hbWUp
CiAgICAgICAgIGlmICJtZXNzYWdlIiBpbiBkYXRhOgotICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X3Rlc3RfbWVzc2FnZSh0ZXN0X25hbWUsIGRhdGFbInN1YnRlc3QiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX3N0YXR1cywgZXhwZWN0ZWRfc3RhdHVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyJtZXNzYWdlIl0pCisg
ICAgICAgICAgICBzZWxmLl9hcHBlbmRfdGVzdF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3Vi
dGVzdCJdLCBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXNlcywgZGF0YVsibWVzc2FnZSJd
KQogCiAgICAgZGVmIHRlc3RfZW5kKHNlbGYsIGRhdGEpOgogICAgICAgICB0ZXN0X25hbWUgPSBk
YXRhWyJ0ZXN0Il0KLSAgICAgICAgYWN0dWFsX3N0YXR1cyA9IHNlbGYuX21hcF9zdGF0dXNfbmFt
ZShkYXRhWyJzdGF0dXMiXSkKLSAgICAgICAgaWYgYWN0dWFsX3N0YXR1cyA9PSAiUEFTUyIgYW5k
IHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlsczoKLSAgICAgICAgICAg
ICMgVGhpcyB0ZXN0IHBhc3NlZCBidXQgaXQgaGFzIGZhaWxpbmcgc3VidGVzdHMsIHNvIHdlIGZs
aXAgdGhlIHN0YXR1cwotICAgICAgICAgICAgIyB0byBGQUlMLgotICAgICAgICAgICAgYWN0dWFs
X3N0YXR1cyA9ICJGQUlMIgorICAgICAgICAjIFNhdmUgdGhlIHN0YXR1cyByZXBvcnRlZCBieSBX
UFQgc2luY2Ugd2UgbWlnaHQgY2hhbmdlIGl0IHdoZW4gcmVwb3J0aW5nCisgICAgICAgICMgdG8g
Q2hyb21pdW0uCisgICAgICAgIHdwdF9hY3R1YWxfc3RhdHVzID0gZGF0YVsic3RhdHVzIl0KKyAg
ICAgICAgYWN0dWFsX3N0YXR1cyA9IHNlbGYuX21hcF9zdGF0dXNfbmFtZSh3cHRfYWN0dWFsX3N0
YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9nZXRfZXhwZWN0ZWRfc3Rh
dHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQorICAgICAgICBzdWJ0ZXN0X2ZhaWx1
cmUgPSBGYWxzZQorICAgICAgICBpZiB0ZXN0X25hbWUgaW4gc2VsZi50ZXN0c193aXRoX3N1YnRl
c3RfZmFpbHM6CisgICAgICAgICAgICBzdWJ0ZXN0X2ZhaWx1cmUgPSBUcnVlCiAgICAgICAgICAg
ICAjIENsZWFuIHVwIHRoZSB0ZXN0IGxpc3QgdG8gYXZvaWQgYWNjdW11bGF0aW5nIHRvbyBtYW55
LgogICAgICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMucmVtb3ZlKHRlc3Rf
bmFtZSkKKyAgICAgICAgICAgICMgVGhpcyB0ZXN0IHBhc3NlZCBidXQgaXQgaGFzIGZhaWxpbmcg
c3VidGVzdHMuIFNpbmNlIHdlIGNhbiBvbmx5CisgICAgICAgICAgICAjIHJlcG9ydCBhIHNpbmds
ZSBzdGF0dXMgdG8gQ2hyb21pdW0sIHdlIGNob29zZSBGQUlMIHRvIGluZGljYXRlCisgICAgICAg
ICAgICAjIHRoYXQgc29tZXRoaW5nIGFib3V0IHRoaXMgdGVzdCBkaWQgbm90IHJ1biBjb3JyZWN0
bHkuCisgICAgICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQQVNTIjoKKyAgICAgICAgICAg
ICAgICBhY3R1YWxfc3RhdHVzID0gIkZBSUwiCiAKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0g
c2VsZi5fZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoYWN0dWFsX3N0YXR1cywgZGF0YSkK
ICAgICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6CiAgICAgICAgICAgICBzZWxmLl9hcHBlbmRf
dGVzdF9tZXNzYWdlKHRlc3RfbmFtZSwgTm9uZSwgYWN0dWFsX3N0YXR1cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzLCBkYXRhWyJtZXNzYWdl
Il0pCi0gICAgICAgIHNlbGYuX3N0b3JlX3Rlc3RfcmVzdWx0KHRlc3RfbmFtZSwgYWN0dWFsX3N0
YXR1cywgZXhwZWN0ZWRfc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLm1lc3NhZ2VzW3Rlc3RfbmFtZV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJtZXNzYWdlIl0pCisgICAgICAgIHNlbGYu
X3N0b3JlX3Rlc3RfcmVzdWx0KHRlc3RfbmFtZSwgYWN0dWFsX3N0YXR1cywgZXhwZWN0ZWRfc3Rh
dHVzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZXNbdGVz
dF9uYW1lXSwgd3B0X2FjdHVhbF9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YnRlc3RfZmFpbHVyZSkKIAogICAgICAgICAjIFJlbW92ZSB0aGUgdGVzdCBmcm9tIG1l
c3NhZ2VzIGRpY3QgdG8gYXZvaWQgYWNjdW11bGF0aW5nIHRvbyBtYW55LgogICAgICAgICBzZWxm
Lm1lc3NhZ2VzLnBvcCh0ZXN0X25hbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0
dGVycy90ZXN0cy90ZXN0X2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVz
dHMvdGVzdF9jaHJvbWl1bS5weQppbmRleCA4M2MxMjhhYzVjYjQ2YTY1MzczYTJmZWEwMDhjNmJh
NjAzNTBmZDhmLi4yYTVkM2U3OTI4MGNiNTU2Mzc0N2JlY2RkYTRhZmUxODhkM2I2MGUwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90ZXN0X2Nocm9taXVtLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKQEAgLTE1
NiwxMiArMTU2LDEzIEBAIGRlZiB0ZXN0X3N1YnRlc3RfbWVzc2FnZXMoY2FwZmQpOgogICAgIG91
dHB1dC5zZWVrKDApCiAgICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCi0gICAg
dDFfbG9nID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl1bImFydGlmYWN0cyJdWyJsb2ciXQot
ICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMIGV4cGVjdGVkIFBBU1NdIHQxX2E6IHQxX2FfbWVz
c2FnZVxuIiBcCi0gICAgICAgICAgICAgICAgICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2Fn
ZVxuIgotCi0gICAgdDJfbG9nID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQyIl1bImFydGlmYWN0
cyJdWyJsb2ciXQotICAgIGFzc2VydCB0Ml9sb2cgPT0gIltUSU1FT1VUIGV4cGVjdGVkIFBBU1Nd
IHQyX21lc3NhZ2VcbiIKKyAgICB0MV9hcnRpZmFjdHMgPSBvdXRwdXRfanNvblsidGVzdHMiXVsi
dDEiXVsiYXJ0aWZhY3RzIl0KKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJsb2ciXSA9PSBbIltG
QUlMIGV4cGVjdGVkIFBBU1NdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2FnZVxuIl0KKyAgICBh
c3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfc3VidGVzdF9mYWlsdXJlIl0gPT0gWyJ0cnVlIl0KKyAg
ICB0Ml9hcnRpZmFjdHMgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsiYXJ0aWZhY3RzIl0K
KyAgICBhc3NlcnQgdDJfYXJ0aWZhY3RzWyJsb2ciXSA9PSBbIltUSU1FT1VUIGV4cGVjdGVkIFBB
U1NdIHQyX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0ICJ3cHRfc3VidGVzdF9mYWlsdXJlIiBub3Qg
aW4gdDJfYXJ0aWZhY3RzLmtleXMoKQogCiAKIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVyZShjYXBm
ZCk6CkBAIC0yMDIsMTMgKzIwMywxNyBAQCBkZWYgdGVzdF9zdWJ0ZXN0X2ZhaWx1cmUoY2FwZmQp
OgogICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKIAogICAgIHRlc3Rfb2JqID0g
b3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KLSAgICB0MV9sb2cgPSB0ZXN0X29ialsiYXJ0aWZh
Y3RzIl1bImxvZyJdCi0gICAgYXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10g
dDFfYTogdDFfYV9tZXNzYWdlXG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFf
YjogdDFfYl9tZXNzYWdlXG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBl
Y3RlZCBQQVNTXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiIKKyAgICB0MV9hcnRpZmFjdHMgPSB0ZXN0
X29ialsiYXJ0aWZhY3RzIl0KKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJsb2ciXSA9PSBbIltG
QUlMIGV4cGVjdGVkIFBBU1NdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2FnZVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDFf
YzogdDFfY19tZXNzYWdlXG4iXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0
X2ZhaWx1cmUiXSA9PSBbInRydWUiXQogICAgICMgVGhlIHN0YXR1cyBvZiB0aGUgdGVzdCBpbiB0
aGUgb3V0cHV0IGlzIGEgZmFpbHVyZSBiZWNhdXNlIHN1YnRlc3RzIGZhaWxlZCwKLSAgICAjIGRl
c3BpdGUgdGhlIGhhcm5lc3MgcmVwb3J0aW5nIHRoYXQgdGhlIHRlc3QgcGFzc2VkLgorICAgICMg
ZGVzcGl0ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQuIEJ1dCB0
aGUgaGFybmVzcyBzdGF0dXMKKyAgICAjIGlzIGxvZ2dlZCBhcyBhbiBhcnRpZmFjdC4KKyAgICBh
c3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUEFTUyJdCiAgICAg
YXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IHRoZSBmb3JtYXR0
ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAgICBhc3NlcnQgInQxIiBub3QgaW4g
Zm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwogCkBAIC0yNTMsMTIgKzI1OCwxMyBA
QCBkZWYgdGVzdF9leHBlY3RlZF9zdWJ0ZXN0X2ZhaWx1cmUoY2FwZmQpOgogCiAgICAgdGVzdF9v
YmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQogICAgIHQxX2xvZyA9IHRlc3Rfb2JqWyJh
cnRpZmFjdHMiXVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTF0gdDFfYTogdDFf
YV9tZXNzYWdlXG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9t
ZXNzYWdlXG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVF0gdDFfYzogdDFfY19t
ZXNzYWdlXG4iCisgICAgYXNzZXJ0IHQxX2xvZyA9PSBbIltGQUlMXSB0MV9hOiB0MV9hX21lc3Nh
Z2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiW1BBU1NdIHQxX2I6IHQxX2JfbWVzc2FnZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVF0gdDFfYzogdDFfY19tZXNzYWdlXG4i
XQogICAgICMgVGhlIHN0YXR1cyBvZiB0aGUgdGVzdCBpbiB0aGUgb3V0cHV0IGlzIGEgcGFzcyBi
ZWNhdXNlIHRoZSBzdWJ0ZXN0CiAgICAgIyBmYWlsdXJlcyB3ZXJlIGFsbCBleHBlY3RlZC4KICAg
ICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJQQVNTIgorICAgIGFzc2VydCB0ZXN0X29i
alsiZXhwZWN0ZWQiXSA9PSAiUEFTUyIKIAogCiBkZWYgdGVzdF91bmV4cGVjdGVkX3N1YnRlc3Rf
cGFzcyhjYXBmZCk6CkBAIC0yOTYsMTAgKzMwMiwxNCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3N1
YnRlc3RfcGFzcyhjYXBmZCk6CiAgICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQog
CiAgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9
IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbUEFT
UyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiIKLSAgICAjIFNpbmNlIHRoZSBz
dWJ0ZXN0IHN0YXR1cyBpcyB1bmV4cGVjdGVkLCB3ZSBmYWlsIHRoZSB0ZXN0LgorICAgIHQxX2Fy
dGlmYWN0cyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNb
ImxvZyJdID09IFsiW1BBU1MgZXhwZWN0ZWQgRkFJTF0gdDFfYTogdDFfYV9tZXNzYWdlXG4iXQor
ICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUi
XQorICAgICMgU2luY2UgdGhlIHN1YnRlc3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwg
dGhlIHRlc3QuIEJ1dCB3ZSByZXBvcnQKKyAgICAjIHdwdF9hY3R1YWxfc3RhdHVzIGFzIGFuIGFy
dGlmYWN0CisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X2FjdHVhbF9zdGF0dXMiXSA9PSBb
IlBBU1MiXQogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisgICAgYXNz
ZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgogICAgICMgQWxzbyBlbnN1cmUgdGhh
dCB0aGUgZm9ybWF0dGVyIGNsZWFuZWQgdXAgaXRzIGludGVybmFsIHN0YXRlCiAgICAgYXNzZXJ0
ICJ0MSIgbm90IGluIGZvcm1hdHRlci50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMKIApAQCAtMzY3
LDYgKzM3NywxNDQgQEAgZGVmIHRlc3RfdW5leHBlY3RlZF90ZXN0X2ZhaWwoY2FwZmQpOgogICAg
ICMgT0stPlBBU1MKICAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgogICAg
IGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFTUyIKLSAgICAjIC4uYW5kIHRoaXMg
dGVzdCBzaG91bGQgbm90IGJlIGEgcmVncmVzc2lvbiBub3IgdW5leHBlY3RlZAorICAgICMgLi5h
bmQgdGhpcyB0ZXN0IHNob3VsZCBiZSBhIHJlZ3Jlc3Npb24gYW5kIHVuZXhwZWN0ZWQKKyAgICBh
c3NlcnQgdGVzdF9vYmpbImlzX3JlZ3Jlc3Npb24iXSBpcyBUcnVlCisgICAgYXNzZXJ0IHRlc3Rf
b2JqWyJpc191bmV4cGVjdGVkIl0gaXMgVHJ1ZQorCisKK2RlZiB0ZXN0X2ZsYWt5X3Rlc3RfZXhw
ZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBhIGZsYWt5IHRlc3Qgd2l0aCBtdWx0aXBs
ZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisgICAgIyBleHBlY3RlZCBpZiBpdHMgYWN0
dWFsIHN0YXR1cyBpcyBvbmUgb2YgdGhlIHBvc3NpYmxlIG9uZXMuCisKKyAgICAjIHNldCB1cCB0
aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0
dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxl
cihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisK
KyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBmbGFreQorICAgIGxvZ2dlci5z
dWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEyMykKKyAgICBsb2dnZXIudGVz
dF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEiLCBzdGF0dXM9IkVSUk9SIiwg
ZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJtaXR0ZW50PVsiRVJST1IiLCAiVElNRU9VVCJdKQor
ICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdvdCBvdXRwdXQg
dG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0cyBleGNlcHRp
b25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0gY2FwZmQucmVh
ZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFzc2VydCBjYXB0
dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhlIGZv
cm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQo
b3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQorICAg
ICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBlZCwgY2hhbmdpbmcgRVJST1ItPkZB
SUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIK
KyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIGNvbmNhdGVuYXRlZCB0b2dldGhl
ciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFT
UyBGQUlMIFRJTUVPVVQiCisgICAgIyAuLi50aGlzIGlzIG5vdCBhIHJlZ3Jlc3Npb24gb3IgdW5l
eHBlY3RlZCBiZWNhdXNlIHRoZSBhY3R1YWwgc3RhdHVzIGlzIG9uZQorICAgICMgb2YgdGhlIGV4
cGVjdGVkIG9uZXMKKyAgICBhc3NlcnQgImlzX3JlZ3Jlc3Npb24iIG5vdCBpbiB0ZXN0X29iagor
ICAgIGFzc2VydCAiaXNfdW5leHBlY3RlZCIgbm90IGluIHRlc3Rfb2JqCisKKworZGVmIHRlc3Rf
Zmxha3lfdGVzdF91bmV4cGVjdGVkKGNhcGZkKToKKyAgICAjIENoZWNrIHRoYXQgYSBmbGFreSB0
ZXN0IHdpdGggbXVsdGlwbGUgcG9zc2libGUgc3RhdHVzZXMgaXMgc2VlbiBhcworICAgICMgdW5l
eHBlY3RlZCBpZiBpdHMgYWN0dWFsIHN0YXR1cyBpcyBOT1Qgb25lIG9mIHRoZSBwb3NzaWJsZSBv
bmVzLgorCisgICAgIyBzZXQgdXAgdGhlIGhhbmRsZXIuCisgICAgb3V0cHV0ID0gU3RyaW5nSU8o
KQorICAgIGxvZ2dlciA9IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigidGVzdF9hIikK
KyAgICBsb2dnZXIuYWRkX2hhbmRsZXIoaGFuZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQsIENo
cm9taXVtRm9ybWF0dGVyKCkpKQorCisgICAgIyBSdW4gYSB0ZXN0IHRoYXQgaXMga25vd24gdG8g
YmUgZmxha3kKKyAgICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGlt
ZT0xMjMpCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQo
InQxIiwgc3RhdHVzPSJFUlJPUiIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1b
IlRJTUVPVVQiXSkKKyAgICBsb2dnZXIuc3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGlu
ZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9zdGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91
dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJl
ZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQorICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAg
ICBhc3NlcnQgY2FwdHVyZWQuZXJyID09ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0
cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAgICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29u
ID0ganNvbi5sb2FkKG91dHB1dCkKKworICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3Rz
Il1bInQxIl0KKyAgICAjIFRoZSB0ZXN0J3Mgc3RhdHVzZXMgYXJlIGFsbCBtYXBwZWQsIGNoYW5n
aW5nIEVSUk9SLT5GQUlMIGFuZCBPSy0+UEFTUworICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFs
Il0gPT0gIkZBSUwiCisgICAgIyBBbGwgdGhlIHBvc3NpYmxlIHN0YXR1c2VzIGFyZSBjb25jYXRl
bmF0ZWQgdG9nZXRoZXIgaW50byBleHBlY3RlZC4KKyAgICBhc3NlcnQgdGVzdF9vYmpbImV4cGVj
dGVkIl0gPT0gIlBBU1MgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgYSByZWdyZXNzaW9uIGFu
ZCB1bmV4cGVjdGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgbm90CisgICAgIyBvbmUg
b2YgdGhlIGV4cGVjdGVkIG9uZXMKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3JlZ3Jlc3Npb24i
XSBpcyBUcnVlCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJpc191bmV4cGVjdGVkIl0gaXMgVHJ1ZQor
CisKK2RlZiB0ZXN0X3ByZWNvbmRpdGlvbl9mYWlsZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhh
dCBhIGZhaWxlZCBwcmVjb25kaXRpb24gZ2V0cyBwcm9wZXJseSBoYW5kbGVkLgorCisgICAgIyBz
ZXQgdXAgdGhlIGhhbmRsZXIuCisgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAgIGxvZ2dlciA9
IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigidGVzdF9hIikKKyAgICBsb2dnZXIuYWRk
X2hhbmRsZXIoaGFuZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQsIENocm9taXVtRm9ybWF0dGVy
KCkpKQorCisgICAgIyBSdW4gYSB0ZXN0IHdpdGggYSBwcmVjb25kaXRpb24gZmFpbHVyZQorICAg
IGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEyMykKKyAgICBs
b2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEiLCBzdGF0dXM9
IlBSRUNPTkRJVElPTl9GQUlMRUQiLCBleHBlY3RlZD0iT0siKQorICAgIGxvZ2dlci5zdWl0ZV9l
bmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdvdCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgor
ICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGlu
ZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0gY2FwZmQucmVhZG91dGVycigpCisgICAgYXNz
ZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFzc2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKwor
ICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1
dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQorCisgICAgdGVz
dF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXQorICAgICMgVGhlIHByZWNvbmRpdGlv
biBmYWlsdXJlIHNob3VsZCBtYXAgdG8gRkFJTCBzdGF0dXMsIGJ1dCB3ZSBzaG91bGQgYWxzbwor
ICAgICMgaGF2ZSBhbiBhcnRpZmFjdCBjb250YWluaW5nIHRoZSBvcmlnaW5hbCBQUkVDT05ESVRJ
T05fRkFJTEVEIHN0YXR1cy4KKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlM
IgorICAgIGFzc2VydCB0ZXN0X29ialsiYXJ0aWZhY3RzIl1bIndwdF9hY3R1YWxfc3RhdHVzIl0g
PT0gWyJQUkVDT05ESVRJT05fRkFJTEVEIl0KKyAgICAjIC4uLnRoaXMgaXMgYW4gdW5leHBlY3Rl
ZCByZWdyZXNzaW9uIGJlY2F1c2Ugd2UgZXhwZWN0ZWQgYSBwYXNzIGJ1dCBmYWlsZWQKKyAgICBh
c3NlcnQgdGVzdF9vYmpbImlzX3JlZ3Jlc3Npb24iXSBpcyBUcnVlCisgICAgYXNzZXJ0IHRlc3Rf
b2JqWyJpc191bmV4cGVjdGVkIl0gaXMgVHJ1ZQorCisKK2RlZiB0ZXN0X2tub3duX2ludGVybWl0
dGVudF9lbXB0eShjYXBmZCk6CisgICAgIyBJZiB0aGUga25vd25faW50ZXJtaXR0ZW50IGxpc3Qg
aXMgZW1wdHksIHdlIHdhbnQgdG8gZW5zdXJlIHdlIGRvbid0IGFwcGVuZAorICAgICMgYW55IGV4
dHJhbmVvdXMgY2hhcmFjdGVycyB0byB0aGUgb3V0cHV0LgorCisgICAgIyBzZXQgdXAgdGhlIGhh
bmRsZXIuCisgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAgIGxvZ2dlciA9IHN0cnVjdHVyZWRs
b2cuU3RydWN0dXJlZExvZ2dlcigidGVzdF9hIikKKyAgICBsb2dnZXIuYWRkX2hhbmRsZXIoaGFu
ZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQsIENocm9taXVtRm9ybWF0dGVyKCkpKQorCisgICAg
IyBSdW4gYSB0ZXN0IGFuZCBpbmNsdWRlIGFuIGVtcHR5IGtub3duX2ludGVybWl0dGVudCBsaXN0
CisgICAgbG9nZ2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQor
ICAgIGxvZ2dlci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0
YXR1cz0iT0siLCBleHBlY3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9W10pCisgICAgbG9n
Z2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRv
dXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVy
aW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJy
KCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVy
ciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVy
CisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQp
CisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBCb3Ro
IGFjdHVhbCBhbmQgZXhwZWN0ZWQgc3RhdHVzZXMgZ2V0IG1hcHBlZCB0byBQYXNzLiBObyBleHRy
YSB3aGl0ZXNwYWNlCisgICAgIyBhbnl3aGVyZS4KKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVh
bCJdID09ICJQQVNTIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQiXSA9PSAiUEFTUyIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9pbnN0cnVtZW50cy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9p
bnN0cnVtZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODg3Y2Y0ZmRhNzI0MjZiODkyMTNjYzQwMzdmNzQ1
Y2U1MjMyOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5
CkBAIC0wLDAgKzEsMTE3IEBACitpbXBvcnQgdGltZQoraW1wb3J0IHRocmVhZGluZworZnJvbSBz
aXgubW92ZXMucXVldWUgaW1wb3J0IFF1ZXVlCisKKyIiIkluc3RydW1lbnRhdGlvbiBmb3IgbWVh
c3VyaW5nIGhpZ2gtbGV2ZWwgdGltZSBzcGVudCBvbiB2YXJpb3VzIHRhc2tzIGluc2lkZSB0aGUg
cnVubmVyLgorCitUaGlzIGlzIGxvd2VyIGZpZGVsaXR5IHRoYW4gYW4gYWN0dWFsIHByb2ZpbGUs
IGJ1dCBhbGxvd3MgY3VzdG9tIGRhdGEgdG8gYmUgY29uc2lkZXJlZCwKK3NvIHRoYXQgd2UgY2Fu
IHNlZSB0aGUgdGltZSBzcGVudCBpbiBzcGVjaWZpYyB0ZXN0cyBhbmQgdGVzdCBkaXJlY3Rvcmll
cy4KKworCitJbnN0cnVtZW50cyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBjb250ZXh0IG1h
bmFnZXJzIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiBfX2VudGVyX18KK2NvbnRhaW5pbmcgdGhl
IHVzZXItZmFjaW5nIEFQSSBlLmcuCisKK3dpdGggSW5zdHJ1bWVudCgqYXJncykgYXMgcmVjb3Jk
aW5nOgorICAgIHJlY29yZGluZy5zZXQoWyJpbml0Il0pCisgICAgZG9faW5pdCgpCisgICAgcmVj
b3JkaW5nLnBhdXNlKCkKKyAgICBmb3IgdGhyZWFkIGluIHRlc3RfdGhyZWFkczoKKyAgICAgICB0
aHJlYWQuc3RhcnQocmVjb3JkaW5nLCAqYXJncykKKyAgICBmb3IgdGhyZWFkIGluIHRlc3RfdGhy
ZWFkczoKKyAgICAgICB0aHJlYWQuam9pbigpCisgICAgcmVjb3JkaW5nLnNldChbInRlYXJkb3du
Il0pICAgIyB1bi1wYXVzZXMgdGhlIEluc3RydW1lbnQKKyAgICBkb190ZWFyZG93bigpCisiIiIK
KworY2xhc3MgTnVsbEluc3RydW1lbnQob2JqZWN0KToKKyAgICBkZWYgc2V0KHNlbGYsIHN0YWNr
KToKKyAgICAgICAgIiIiU2V0IHRoZSBjdXJyZW50IHRhc2sgdG8gc3RhY2sKKworICAgICAgICA6
cGFyYW0gc3RhY2s6IEEgbGlzdCBvZiBzdHJpbmdzIGRlZmluaW5nIHRoZSBjdXJyZW50IHRhc2su
CisgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYXJlIGludGVycHJldGVkIGxpa2UgYSBzdGFj
ayB0cmFjZSBzbyB0aGF0IFsiZm9vIl0gYW5kCisgICAgICAgICAgICAgICAgICAgICAgWyJmb28i
LCAiYmFyIl0gYm90aCBzaG93IHVwIGFzIGRlc2NlbmRhbnRzIG9mICJmb28iCisgICAgICAgICIi
IgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcGF1c2Uoc2VsZik6CisgICAgICAgICIiIlN0b3Ag
cmVjb3JkaW5nIGEgdGFzayBvbiB0aGUgY3VycmVudCB0aHJlYWQuIFRoaXMgaXMgdXNlZnVsIGlm
IHRoZSB0aHJlYWQKKyAgICAgICAgaXMgcHVyZWx5IHdhaXRpbmcgb24gdGhlIHJlc3VsdHMgb2Yg
b3RoZXIgdGhyZWFkcyIiIgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6CisgICAgICAgIHJldHVybgorCisKK2NsYXNzIEluc3RydW1lbnRXcml0ZXIob2Jq
ZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWUpOgorICAgICAgICBzZWxmLnF1ZXVl
ID0gcXVldWUKKworICAgIGRlZiBzZXQoc2VsZiwgc3RhY2spOgorICAgICAgICBzdGFjay5pbnNl
cnQoMCwgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSkKKyAgICAgICAgc3RhY2sgPSBz
ZWxmLl9jaGVja19zdGFjayhzdGFjaykKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJzZXQiLCB0
aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5pZGVudCwgdGltZS50aW1lKCksIHN0YWNrKSkKKwor
ICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJwYXVzZSIsIHRo
cmVhZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgTm9uZSkpCisKKyAg
ICBkZWYgX2NoZWNrX3N0YWNrKHNlbGYsIHN0YWNrKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2Uoc3RhY2ssICh0dXBsZSwgbGlzdCkpCisgICAgICAgIHJldHVybiBbaXRlbS5yZXBsYWNlKCIg
IiwgIl8iKSBmb3IgaXRlbSBpbiBzdGFja10KKworCitjbGFzcyBJbnN0cnVtZW50KG9iamVjdCk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIkluc3RydW1l
bnQgdGhhdCBjb2xsZWN0cyBkYXRhIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhbmQgc3VtcyB0aGUg
dGltZSBpbiBlYWNoCisgICAgICAgIHRocmVhZC4gVGhlIG91dHB1dCBpcyBpbiB0aGUgZm9ybWF0
IHJlcXVpcmVkIGJ5IGZsYW1lZ3JhcGgucGwgdG8gZW5hYmxlIHZpc3VhbGlzYXRpb24KKyAgICAg
ICAgb2YgdGhlIHRpbWUgc3BlbnQgaW4gZWFjaCB0YXNrLgorCisgICAgICAgIDpwYXJhbSBmaWxl
X3BhdGg6IC0gVGhlIHBhdGggb24gd2hpY2ggdG8gd3JpdGUgaW5zdHJ1bWVudCBvdXRwdXQuIEFu
eSBleGlzdGluZyBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIHBhdGgg
d2lsbCBiZSBvdmVyd3JpdHRlbgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5wYXRoID0gZmls
ZV9wYXRoCisgICAgICAgIHNlbGYucXVldWUgPSBOb25lCisgICAgICAgIHNlbGYuY3VycmVudCA9
IE5vbmUKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gTm9uZQorICAgICAgICBzZWxmLnRocmVh
ZCA9IE5vbmUKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGFzc2VydCBzZWxm
LnRocmVhZCBpcyBOb25lCisgICAgICAgIGFzc2VydCBzZWxmLnF1ZXVlIGlzIE5vbmUKKyAgICAg
ICAgc2VsZi5xdWV1ZSA9IFF1ZXVlKCkKKyAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcu
VGhyZWFkKHRhcmdldD1zZWxmLnJ1bikKKyAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorICAg
ICAgICByZXR1cm4gSW5zdHJ1bWVudFdyaXRlcihzZWxmLnF1ZXVlKQorCisgICAgZGVmIF9fZXhp
dF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYucXVldWUucHV0KCgic3Rv
cCIsIE5vbmUsIHRpbWUudGltZSgpLCBOb25lKSkKKyAgICAgICAgc2VsZi50aHJlYWQuam9pbigp
CisgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQorICAgICAgICBzZWxmLnF1ZXVlID0gTm9uZQor
CisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAga25vd25fY29tbWFuZHMgPSB7InN0b3AiLCAi
cGF1c2UiLCAic2V0In0KKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aCwgInciKSBhcyBmOgor
ICAgICAgICAgICAgdGhyZWFkX2RhdGEgPSB7fQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAg
ICAgICAgICAgICAgICBjb21tYW5kLCB0aHJlYWQsIHRpbWVfc3RhbXAsIHN0YWNrID0gc2VsZi5x
dWV1ZS5nZXQoKQorICAgICAgICAgICAgICAgIGFzc2VydCBjb21tYW5kIGluIGtub3duX2NvbW1h
bmRzCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBkb25lIHJlY29yZGluZywgZHVtcCB0
aGUgaW5mb3JtYXRpb24gZnJvbSBhbGwgdGhyZWFkcyB0byB0aGUgZmlsZQorICAgICAgICAgICAg
ICAgICMgYmVmb3JlIGV4aXRpbmcuIE90aGVyd2lzZSBmb3IgZWl0aGVyICdzZXQnIG9yICdwYXVz
ZScgd2Ugb25seSBuZWVkIHRvIGR1bXAKKyAgICAgICAgICAgICAgICAjIGluZm9ybWF0aW9uIGZy
b20gdGhlIGN1cnJlbnQgc3RhY2sgKGlmIGFueSkgdGhhdCB3YXMgcmVjb3JkaW5nIG9uIHRoZSBy
ZXBvcnRpbmcKKyAgICAgICAgICAgICAgICAjIHRocmVhZCAoYXMgdGhhdCBzdGFjayBpcyBubyBs
b25nZXIgYWN0aXZlKS4KKyAgICAgICAgICAgICAgICBpdGVtcyA9IFtdCisgICAgICAgICAgICAg
ICAgaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhy
ZWFkX2RhdGEudmFsdWVzKCkKKyAgICAgICAgICAgICAgICBlbGlmIHRocmVhZCBpbiB0aHJlYWRf
ZGF0YToKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMuYXBwZW5kKHRocmVhZF9kYXRhLnBvcCh0
aHJlYWQpKQorICAgICAgICAgICAgICAgIGZvciBvdXRwdXRfc3RhY2ssIHN0YXJ0X3RpbWUgaW4g
aXRlbXM6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIiVzICVkXG4iICUgKCI7Ii5qb2lu
KG91dHB1dF9zdGFjayksIGludCgxMDAwICogKHRpbWVfc3RhbXAgLSBzdGFydF90aW1lKSkpKQor
CisgICAgICAgICAgICAgICAgaWYgY29tbWFuZCA9PSAic2V0IjoKKyAgICAgICAgICAgICAgICAg
ICAgdGhyZWFkX2RhdGFbdGhyZWFkXSA9IChzdGFjaywgdGltZV9zdGFtcCkKKyAgICAgICAgICAg
ICAgICBlbGlmIGNvbW1hbmQgPT0gInN0b3AiOgorICAgICAgICAgICAgICAgICAgICBicmVhawpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RleHBlY3RlZC5weQppbmRleCBlYWU4NWIxZjY2NjFhNjdkZmY1OWVmNzhhOWVk
NjI3ZTNlMzYwM2Q4Li4zMWM1N2U5Y2I3MzRmNzQxZTQyNzVlNzRlOGZjZjdjZDBhZDRlZTMxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwotZnJv
bSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiBmcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBkZXF1ZQorZnJvbSBzaXggaW1wb3J0IHN0cmluZ190eXBlcywgdGV4dF90eXBlCitm
cm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KKwogCiBmcm9tIC53cHRt
YW5pZmVzdC5iYWNrZW5kcyBpbXBvcnQgc3RhdGljCiBmcm9tIC53cHRtYW5pZmVzdC5iYWNrZW5k
cy5iYXNlIGltcG9ydCBNYW5pZmVzdEl0ZW0KQEAgLTE1LDYgKzE3LDcgQEAgRWFjaCBUZXN0Tm9k
ZSBoYXMgemVybyBvciBtb3JlIFN1YnRlc3ROb2RlIGNoaWxkcmVuLCBvbmUgZm9yIGVhY2gKIGtu
b3duIHN1YnRlc3Qgb2YgdGhlIHRlc3QuCiAiIiIKIAorCiBkZWYgZGF0YV9jbHNfZ2V0dGVyKG91
dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUpOgogICAgICMgdmlzaXRlZF9ub2RlIGlzIGludGVudGlv
bmFsbHkgdW51c2VkCiAgICAgaWYgb3V0cHV0X25vZGUgaXMgTm9uZToKQEAgLTI5LDcgKzMyLDcg
QEAgZGVmIGRhdGFfY2xzX2dldHRlcihvdXRwdXRfbm9kZSwgdmlzaXRlZF9ub2RlKToKIGRlZiBi
b29sX3Byb3AobmFtZSwgbm9kZSk6CiAgICAgIiIiQm9vbGVhbiBwcm9wZXJ0eSIiIgogICAgIHRy
eToKLSAgICAgICAgcmV0dXJuIG5vZGUuZ2V0KG5hbWUpCisgICAgICAgIHJldHVybiBib29sKG5v
ZGUuZ2V0KG5hbWUpKQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUK
IApAQCAtNDYsMTggKzQ5LDI4IEBAIGRlZiBsaXN0X3Byb3AobmFtZSwgbm9kZSk6CiAgICAgIiIi
TGlzdCBwcm9wZXJ0eSIiIgogICAgIHRyeToKICAgICAgICAgbGlzdF9wcm9wID0gbm9kZS5nZXQo
bmFtZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X3Byb3AsIGJhc2VzdHJpbmcpOgorICAg
ICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgc3RyaW5nX3R5cGVzKToKICAgICAgICAgICAg
IHJldHVybiBbbGlzdF9wcm9wXQogICAgICAgICByZXR1cm4gbGlzdChsaXN0X3Byb3ApCiAgICAg
ZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1cm4gW10KIAogCitkZWYgc3RyX3Byb3AobmFt
ZSwgbm9kZSk6CisgICAgdHJ5OgorICAgICAgICBwcm9wID0gbm9kZS5nZXQobmFtZSkKKyAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2UocHJvcCwgc3RyaW5nX3R5cGVzKToKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IKKyAgICAgICAgcmV0dXJuIHByb3AKKyAgICBleGNlcHQgS2V5RXJyb3I6
CisgICAgICAgIHJldHVybiBOb25lCisKKwogZGVmIHRhZ3Mobm9kZSk6CiAgICAgIiIiU2V0IG9m
IHRhZ3MgdGhhdCBoYXZlIGJlZW4gYXBwbGllZCB0byB0aGUgdGVzdCIiIgogICAgIHRyeToKICAg
ICAgICAgdmFsdWUgPSBub2RlLmdldCgidGFncyIpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFs
dWUsIChzdHIsIHVuaWNvZGUpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdGV4dF90
eXBlKToKICAgICAgICAgICAgIHJldHVybiB7dmFsdWV9CiAgICAgICAgIHJldHVybiBzZXQodmFs
dWUpCiAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNjYsNyArNzksNyBAQCBkZWYgdGFncyhub2Rl
KToKIAogZGVmIHByZWZzKG5vZGUpOgogICAgIGRlZiB2YWx1ZShpbmlfdmFsdWUpOgotICAgICAg
ICBpZiBpc2luc3RhbmNlKGluaV92YWx1ZSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBp
c2luc3RhbmNlKGluaV92YWx1ZSwgdGV4dF90eXBlKToKICAgICAgICAgICAgIHJldHVybiB0dXBs
ZShwcmVmX3BpZWNlLnN0cmlwKCkgZm9yIHByZWZfcGllY2UgaW4gaW5pX3ZhbHVlLnNwbGl0KCc6
JywgMSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIHRoaXMgc2hvdWxkIGJlIHRoaW5n
cyBsaWtlIEBSZXNldCwgd2hpY2ggYXJlIGFwcGFyZW50bHkgdHlwZSAnb2JqZWN0JwpAQCAtNzQs
NyArODcsNyBAQCBkZWYgcHJlZnMobm9kZSk6CiAKICAgICB0cnk6CiAgICAgICAgIG5vZGVfcHJl
ZnMgPSBub2RlLmdldCgicHJlZnMiKQotICAgICAgICBpZiB0eXBlKG5vZGVfcHJlZnMpIGluIChz
dHIsIHVuaWNvZGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfcHJlZnMsIHRleHRfdHlw
ZSk6CiAgICAgICAgICAgICBydiA9IGRpY3QodmFsdWUobm9kZV9wcmVmcykpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBydiA9IGRpY3QodmFsdWUoaXRlbSkgZm9yIGl0ZW0gaW4gbm9kZV9w
cmVmcykKQEAgLTg2LDcgKzk5LDcgQEAgZGVmIHByZWZzKG5vZGUpOgogZGVmIHNldF9wcm9wKG5h
bWUsIG5vZGUpOgogICAgIHRyeToKICAgICAgICAgbm9kZV9pdGVtcyA9IG5vZGUuZ2V0KG5hbWUp
Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgKHN0ciwgdW5pY29kZSkpOgorICAg
ICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIHRleHRfdHlwZSk6CiAgICAgICAgICAgICBy
diA9IHtub2RlX2l0ZW1zfQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcnYgPSBzZXQobm9k
ZV9pdGVtcykKQEAgLTk5LDcgKzExMiw3IEBAIGRlZiBsZWFrX3RocmVzaG9sZChub2RlKToKICAg
ICBydiA9IHt9CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5nZXQoImxlYWst
dGhyZXNob2xkIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmlj
b2RlKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAg
ICAgICAgICAgIG5vZGVfaXRlbXMgPSBbbm9kZV9pdGVtc10KICAgICAgICAgZm9yIGl0ZW0gaW4g
bm9kZV9pdGVtczoKICAgICAgICAgICAgIHByb2Nlc3MsIHZhbHVlID0gaXRlbS5yc3BsaXQoIjoi
LCAxKQpAQCAtMTU2LDcgKzE2OSw3IEBAIGRlZiBmdXp6eV9wcm9wKG5vZGUpOgogICAgIGlmIG5v
dCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCiAgICAg
Zm9yIGl0ZW0gaW4gdmFsdWU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIChzdHIs
IHVuaWNvZGUpKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgdGV4dF90eXBlKToK
ICAgICAgICAgICAgIHJ2LmFwcGVuZChpdGVtKQogICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgcGFydHMgPSBpdGVtLnJzcGxpdCgiOiIsIDEpCkBAIC0yNzksNiArMjkyLDEwIEBAIGNsYXNz
IEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgcHJlZnMoc2VsZik6CiAg
ICAgICAgIHJldHVybiBwcmVmcyhzZWxmKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxzYW5f
ZGlzYWJsZWQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sX3Byb3AoImxzYW4tZGlzYWJsZWQi
LCBzZWxmKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNldF9wcm9wKCJsc2FuLWFsbG93ZWQiLCBzZWxmKQpAQCAtMzA3LDYgKzMy
NCwxMCBAQCBjbGFzcyBFeHBlY3RlZE1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGtu
b3duX2ludGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgiZXhwZWN0
ZWQiLCBzZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9z
dGF0dXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3Rh
dHVzIiwgc2VsZikKKwogCiBjbGFzcyBEaXJlY3RvcnlNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
ICAgIEBwcm9wZXJ0eQpAQCAtMzM3LDYgKzM1OCwxMCBAQCBjbGFzcyBEaXJlY3RvcnlNYW5pZmVz
dChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHBy
ZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNhYmxlZChzZWxmKToK
KyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxlZCIsIHNlbGYpCisKICAgICBA
cHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2V0
X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0zNTcsNiArMzgyLDEwIEBAIGNsYXNzIERp
cmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGZ1enp5KHNlbGYpOgogICAg
ICAgICByZXR1cm4gZnV6enlfcHJvcChzZWxmKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlt
cGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBs
ZW1lbnRhdGlvbi1zdGF0dXMiLCBzZWxmKQorCiAKIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRl
bSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGUsICoqa3dhcmdzKToKQEAgLTQxNCw2ICs0
NDMsMTAgQEAgY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgcHJlZnMoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBwcmVmcyhzZWxmKQogCisgICAgQHByb3BlcnR5CisgICAgZGVm
IGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sX3Byb3AoImxzYW4tZGlz
YWJsZWQiLCBzZWxmKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChzZWxm
KToKICAgICAgICAgcmV0dXJuIHNldF9wcm9wKCJsc2FuLWFsbG93ZWQiLCBzZWxmKQpAQCAtNDQy
LDYgKzQ3NSwxMCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBrbm93
bl9pbnRlcm1pdHRlbnQoc2VsZik6CiAgICAgICAgIHJldHVybiBsaXN0X3Byb3AoImV4cGVjdGVk
Iiwgc2VsZilbMTpdCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW1wbGVtZW50YXRpb25fc3Rh
dHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3Byb3AoImltcGxlbWVudGF0aW9uLXN0YXR1
cyIsIHNlbGYpCisKICAgICBkZWYgYXBwZW5kKHNlbGYsIG5vZGUpOgogICAgICAgICAiIiJBZGQg
YSBzdWJ0ZXN0IHRvIHRoZSBjdXJyZW50IHRlc3QKIApAQCAtNDc4LDcgKzUxNSw3IEBAIGRlZiBn
ZXRfbWFuaWZlc3QobWV0YWRhdGFfcm9vdCwgdGVzdF9wYXRoLCB1cmxfYmFzZSwgcnVuX2luZm8p
OgogICAgICIiIgogICAgIG1hbmlmZXN0X3BhdGggPSBleHBlY3RlZC5leHBlY3RlZF9wYXRoKG1l
dGFkYXRhX3Jvb3QsIHRlc3RfcGF0aCkKICAgICB0cnk6Ci0gICAgICAgIHdpdGggb3BlbihtYW5p
ZmVzdF9wYXRoKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInJiIikg
YXMgZjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWMuY29tcGlsZShmLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFfY2xzX2dldHRlcj1kYXRhX2Nsc19nZXR0ZXIsCkBAIC00OTcsNyArNTM0
LDcgQEAgZGVmIGdldF9kaXJfbWFuaWZlc3QocGF0aCwgcnVuX2luZm8pOgogICAgICAgICAgICAg
ICAgICAgICAgdmFsdWVzIHNob3VsZCBiZSBjb21wdXRlZC4KICAgICAiIiIKICAgICB0cnk6Ci0g
ICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJi
IikgYXMgZjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWMuY29tcGlsZShmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFfY2xzX2dldHRlcj1sYW1iZGEgeCx5OiBEaXJlY3RvcnlNYW5pZmVz
dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CmluZGV4IGQzMDI4MzFhNTdhYmJhYWRkNzVmZTQ5ZTA5
NDQ4MmRjMTQyMjNlYTMuLjc5YjViMTliM2EzZjYxN2U1ZGQ0MDExODA0MmRhMGIzZWE4ZTQxMTUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQpAQCAtNiw2ICs2LDcgQEAgYmUgaW5jbHVkZWQgb3Ig
ZXhjbHVkZWQuCiAiIiIKIGltcG9ydCBnbG9iCiBpbXBvcnQgb3MKK2Zyb20gc2l4IGltcG9ydCBp
dGVyaXRlbXMKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHVy
bHNwbGl0CiAKIGZyb20gLndwdG1hbmlmZXN0Lm5vZGUgaW1wb3J0IERhdGFOb2RlCkBAIC05NCw3
ICs5NSw3IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgICAgICBp
ZiBwYXRoczoKICAgICAgICAgICAgIHVybHMgPSBbXQogICAgICAgICAgICAgZm9yIHBhdGggaW4g
cGF0aHM6Ci0gICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBkYXRhIGluIHRlc3RfbWFuaWZl
c3RzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgIGZvciBtYW5pZmVzdCwgZGF0YSBpbiBp
dGVyaXRlbXModGVzdF9tYW5pZmVzdHMpOgogICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IEZh
bHNlCiAgICAgICAgICAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5yZWxwYXRoKHBhdGgs
IGRhdGFbInRlc3RzX3BhdGgiXSkKICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBtYW5p
ZmVzdC5pdGVycGF0aCBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSBlbHNlIG1hbmlmZXN0Lml0ZXJk
aXIKQEAgLTE1MCw1ICsxNTEsNSBAQCBjbGFzcyBJbmNsdWRlTWFuaWZlc3QoTWFuaWZlc3RJdGVt
KToKIAogCiBkZWYgZ2V0X21hbmlmZXN0KG1hbmlmZXN0X3BhdGgpOgotICAgIHdpdGggb3Blbiht
YW5pZmVzdF9wYXRoKSBhcyBmOgorICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIiKSBh
cyBmOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShmLCBkYXRhX2Nsc19nZXR0
ZXI9bGFtYmRhIHgsIHk6IEluY2x1ZGVNYW5pZmVzdCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdHVwZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdHVwZGF0ZS5weQppbmRl
eCBhZjlhZjE4ZDkwNzE1ZDQzYmJjZDJhZTQ3Y2U3NjI3NWJiMGUxNTc3Li4xMjk0NTdiM2ZkMTI3
MGRjNjYwMjlkM2VhODczZDM1MzcxNGFhNjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFu
aWZlc3R1cGRhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CkBAIC0z
LDcgKzMsNyBAQCBpbXBvcnQgb3MKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQg
dXJsam9pbiwgdXJsc3BsaXQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIGRl
ZmF1bHRkaWN0LCBkZXF1ZQogZnJvbSBtYXRoIGltcG9ydCBjZWlsCi1mcm9tIHNpeCBpbXBvcnQg
aXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcworZnJvbSBzaXggaW1wb3J0IGludGVnZXJf
dHlwZXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCBpdGVyaXRlbXMsIHN0cmluZ190eXBlcywgdGV4
dF90eXBlCiAKIGZyb20gLndwdG1hbmlmZXN0IGltcG9ydCBzZXJpYWxpemUKIGZyb20gLndwdG1h
bmlmZXN0Lm5vZGUgaW1wb3J0IChEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2RlLCBCaW5hcnlFeHBy
ZXNzaW9uTm9kZSwKQEAgLTQxMSw3ICs0MTEsNyBAQCBjbGFzcyBQcm9wZXJ0eVVwZGF0ZShvYmpl
Y3QpOgogICAgICAgICBmb3IgZSBpbiBlcnJvcnM6CiAgICAgICAgICAgICBpZiBkaXNhYmxlX2lu
dGVybWl0dGVudDoKICAgICAgICAgICAgICAgICBjb25kaXRpb24gPSBlLmNvbmQuY2hpbGRyZW5b
MF0gaWYgZS5jb25kIGVsc2UgTm9uZQotICAgICAgICAgICAgICAgIG1zZyA9IGRpc2FibGVfaW50
ZXJtaXR0ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIChzdHIsIHVuaWNv
ZGUpKSBlbHNlICJ1bnN0YWJsZSIKKyAgICAgICAgICAgICAgICBtc2cgPSBkaXNhYmxlX2ludGVy
bWl0dGVudCBpZiBpc2luc3RhbmNlKGRpc2FibGVfaW50ZXJtaXR0ZW50LCBzdHJpbmdfdHlwZXMr
KHRleHRfdHlwZSwpKSBlbHNlICJ1bnN0YWJsZSIKICAgICAgICAgICAgICAgICBzZWxmLm5vZGUu
c2V0KCJkaXNhYmxlZCIsIG1zZywgY29uZGl0aW9uKQogICAgICAgICAgICAgICAgIHNlbGYubm9k
ZS5uZXdfZGlzYWJsZWQgPSBUcnVlCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTEzLDcgKzUxMyw3
IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6CiAgICAgICAgICAgICB0b3BfbGV2ZWxf
cHJvcHMsIGRlcGVuZGVudF9wcm9wcyA9IHNlbGYubm9kZS5yb290LnJ1bl9pbmZvX3Byb3BlcnRp
ZXMKICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gc2V0KHRvcF9sZXZlbF9wcm9wcykK
ICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKLSAg
ICAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGllcyB8PSBzZXQoZGVwZW5kZW50X3Byb3BzKQor
ICAgICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChpdGVtKQogICAgICAgICAg
ICAgZm9yIGNvbmRpdGlvbiBpbiBjdXJyZW50X2NvbmRpdGlvbnM6CiAgICAgICAgICAgICAgICAg
aWYgKChub3QgY29uZGl0aW9uLnZhcmlhYmxlcy5pc3N1YnNldCh1cGRhdGVfcHJvcGVydGllcykg
YW5kCiAgICAgICAgICAgICAgICAgICAgICBub3QgcnVuX2luZm9fYnlfY29uZGl0aW9uW2NvbmRp
dGlvbl0pKToKQEAgLTc3NCw3ICs3NzQsNyBAQCBjbGFzcyBBcHBlbmRPbmx5TGlzdFVwZGF0ZShQ
cm9wZXJ0eVVwZGF0ZSk6CiAgICAgICAgIGZvciBpdGVtIGluIG5ldzoKICAgICAgICAgICAgIGlm
IGl0ZW0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGl0ZW0sIChzdHIsIHVuaWNvZGUpKToKKyAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgICAgIHJ2LmFkZChpdGVtKQog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBydiB8PSBpdGVtCkBAIC04OTcsMTAg
Kzg5NywxMCBAQCBkZWYgbWFrZV9leHByKHByb3Bfc2V0LCByaHMpOgogCiAKIGRlZiBtYWtlX25v
ZGUodmFsdWUpOgotICAgIGlmIHR5cGUodmFsdWUpIGluIChpbnQsIGZsb2F0LCBsb25nKToKKyAg
ICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnRlZ2VyX3R5cGVzKyhmbG9hdCwpKToKICAgICAgICAg
bm9kZSA9IE51bWJlck5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBlKHZhbHVlKSBpbiAoc3RyLCB1
bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFN0cmluZ05vZGUodW5pY29kZSh2YWx1ZSkpCisgICAg
ZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpOgorICAgICAgICBub2RlID0gU3RyaW5n
Tm9kZSh0ZXh0X3R5cGUodmFsdWUpKQogICAgIGVsaWYgaGFzYXR0cih2YWx1ZSwgIl9faXRlcl9f
Iik6CiAgICAgICAgIG5vZGUgPSBMaXN0Tm9kZSgpCiAgICAgICAgIGZvciBpdGVtIGluIHZhbHVl
OgpAQCAtOTA5LDEwICs5MDksMTAgQEAgZGVmIG1ha2Vfbm9kZSh2YWx1ZSk6CiAKIAogZGVmIG1h
a2VfdmFsdWVfbm9kZSh2YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQs
IGxvbmcpOgorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkp
OgogICAgICAgICBub2RlID0gVmFsdWVOb2RlKHZhbHVlKQotICAgIGVsaWYgdHlwZSh2YWx1ZSkg
aW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodW5pY29kZSh2YWx1
ZSkpCisgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUpOgorICAgICAgICBub2Rl
ID0gVmFsdWVOb2RlKHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAi
X19pdGVyX18iKToKICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0g
aW4gdmFsdWU6CkBAIC05MzEsNyArOTMxLDcgQEAgZGVmIGdldF9tYW5pZmVzdChtZXRhZGF0YV9y
b290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGUKICAg
ICA6cGFyYW0gdXJsX2Jhc2U6IEJhc2UgdXJsIGZvciBzZXJ2aW5nIHRoZSB0ZXN0cyBpbiB0aGlz
IG1hbmlmZXN0IiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVkX3BhdGgo
bWV0YWRhdGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKG1h
bmlmZXN0X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIi
KSBhcyBmOgogICAgICAgICAgICAgcnYgPSBjb21waWxlKGYsIHRlc3RfcGF0aCwgdXJsX2Jhc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm9fcHJvcGVydGllcywgdXBkYXRlX2lu
dGVybWl0dGVudCwgcmVtb3ZlX2ludGVybWl0dGVudCkKICAgICBleGNlcHQgSU9FcnJvcjoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tZXRhZGF0YS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tZXRhZGF0
YS5weQppbmRleCBjMzI4ZGNlZmE3MjUzZGRlYTk1MjU0OWM3MDI3MjNlOThiNGNhZGM0Li5kZjMx
YWM0MGRlOGI4ZWU3MDgxM2MzYjJlMDNkMTg2NWY2NzJlMjlkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWV0YWRhdGEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CkBAIC0xLDEw
ICsxLDEyIEBACiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQg
YXJyYXkKIGltcG9ydCBvcworaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVm
YXVsdGRpY3QsIG5hbWVkdHVwbGUKIAogZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRsb2cK
LWZyb20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4KK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfc3Ry
LCBlbnN1cmVfdGV4dCwgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywgdGV4dF90eXBl
Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgaW50ZXJuLCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1h
bmlmZXN0dXBkYXRlCiBmcm9tIC4gaW1wb3J0IHRlc3Rsb2FkZXIKQEAgLTQzLDExICs0NSwxMSBA
QCBjbGFzcyBSdW5JbmZvKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmNhbm9uaWNhbF9y
ZXByID09IG90aGVyLmNhbm9uaWNhbF9yZXByCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgot
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6CisgICAgICAg
IGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEpOgogICAgICAgICAgICAgeWll
bGQga2V5LCB2YWx1ZQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgotICAgICAgICByZXR1cm4gbGlz
dChzZWxmLml0ZXJpdGVtcygpKQorICAgICAgICByZXR1cm4gbGlzdChpdGVyaXRlbXMoc2VsZikp
CiAKIAogZGVmIHVwZGF0ZV9leHBlY3RlZCh0ZXN0X3BhdGhzLCBzZXJ2ZV9yb290LCBsb2dfZmls
ZV9uYW1lcywKQEAgLTEyNyw3ICsxMjksNyBAQCBkZWYgdW5leHBlY3RlZF9jaGFuZ2VzKG1hbmlm
ZXN0cywgY2hhbmdlX2RhdGEsIGZpbGVzX2NoYW5nZWQpOgogICAgIGZpbGVzX2NoYW5nZWQgPSBz
ZXQoZmlsZXNfY2hhbmdlZCkKIAogICAgIHJvb3RfbWFuaWZlc3QgPSBOb25lCi0gICAgZm9yIG1h
bmlmZXN0LCBwYXRocyBpbiBtYW5pZmVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIG1hbmlmZXN0
LCBwYXRocyBpbiBpdGVyaXRlbXMobWFuaWZlc3RzKToKICAgICAgICAgaWYgcGF0aHNbInVybF9i
YXNlIl0gPT0gIi8iOgogICAgICAgICAgICAgcm9vdF9tYW5pZmVzdCA9IG1hbmlmZXN0CiAgICAg
ICAgICAgICBicmVhawpAQCAtMTk4LDcgKzIwMCw3IEBAIGNsYXNzIEludGVybmVkRGF0YShvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gb2JqCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAg
ICAgIGZvciBpIGluIHhyYW5nZSgxLCBsZW4oc2VsZi5fZGF0YVswXSkpOgorICAgICAgICBmb3Ig
aSBpbiByYW5nZSgxLCBsZW4oc2VsZi5fZGF0YVswXSkpOgogICAgICAgICAgICAgeWllbGQgc2Vs
Zi5nZXQoaSkKIAogCkBAIC0yMzgsNyArMjQwLDcgQEAgZGVmIHBhY2tfcmVzdWx0KGRhdGEpOgog
ZGVmIHVucGFja19yZXN1bHQoZGF0YSk6CiAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBpbnQpOgog
ICAgICAgICByZXR1cm4gKHN0YXR1c19pbnRlcm4uZ2V0KGRhdGEpLCBOb25lKQotICAgIGlmIGlz
aW5zdGFuY2UoZGF0YSwgdW5pY29kZSk6CisgICAgaWYgaXNpbnN0YW5jZShkYXRhLCB0ZXh0X3R5
cGUpOgogICAgICAgICByZXR1cm4gKGRhdGEsIE5vbmUpCiAgICAgIyBVbnBhY2sgbXVsdGlwbGUg
c3RhdHVzZXMgaW50byBhIHR1cGxlIHRvIGJlIHVzZWQgaW4gdGhlIFJlc3VsdHMgbmFtZWQgdHVw
bGUgYmVsb3csCiAgICAgIyBzZXBhcmF0aW5nIGBzdGF0dXNgIGFuZCBga25vd25faW50ZXJtaXR0
ZW50YC4KQEAgLTI1Nyw3ICsyNTksNyBAQCBkZWYgbG9hZF90ZXN0X2RhdGEodGVzdF9wYXRocyk6
CiAgICAgbWFuaWZlc3RzID0gbWFuaWZlc3RfbG9hZGVyLmxvYWQoKQogCiAgICAgaWRfdGVzdF9t
YXAgPSB7fQotICAgIGZvciB0ZXN0X21hbmlmZXN0LCBwYXRocyBpbiBtYW5pZmVzdHMuaXRlcml0
ZW1zKCk6CisgICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVz
dHMpOgogICAgICAgICBpZF90ZXN0X21hcC51cGRhdGUoY3JlYXRlX3Rlc3RfdHJlZShwYXRoc1si
bWV0YWRhdGFfcGF0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X21hbmlmZXN0KSkKICAgICByZXR1cm4gaWRfdGVzdF9tYXAKQEAgLTI4NSwxMCAr
Mjg3LDEwIEBAIGRlZiB1cGRhdGVfcmVzdWx0cyhpZF90ZXN0X21hcCwKICAgICAgICAgICAgICAg
ICAgICBkaXNhYmxlX2ludGVybWl0dGVudCwKICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaW50
ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQpOgotICAg
IHRlc3RfZmlsZV9pdGVtcyA9IHNldChpZF90ZXN0X21hcC5pdGVydmFsdWVzKCkpCisgICAgdGVz
dF9maWxlX2l0ZW1zID0gc2V0KGl0ZXJ2YWx1ZXMoaWRfdGVzdF9tYXApKQogCiAgICAgZGVmYXVs
dF9leHBlY3RlZF9ieV90eXBlID0ge30KLSAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X2NscyBpbiB3
cHR0ZXN0Lm1hbmlmZXN0X3Rlc3RfY2xzLml0ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0X3R5cGUs
IHRlc3RfY2xzIGluIGl0ZXJpdGVtcyh3cHR0ZXN0Lm1hbmlmZXN0X3Rlc3RfY2xzKToKICAgICAg
ICAgaWYgdGVzdF9jbHMucmVzdWx0X2NsczoKICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0ZWRf
YnlfdHlwZVsodGVzdF90eXBlLCBGYWxzZSldID0gdGVzdF9jbHMucmVzdWx0X2Nscy5kZWZhdWx0
X2V4cGVjdGVkCiAgICAgICAgIGlmIHRlc3RfY2xzLnN1YnRlc3RfcmVzdWx0X2NsczoKQEAgLTMy
NCw4ICszMjYsMTEgQEAgZGVmIHdyaXRlX25ld19leHBlY3RlZChtZXRhZGF0YV9wYXRoLCBleHBl
Y3RlZCk6CiAgICAgICAgIHRtcF9wYXRoID0gcGF0aCArICIudG1wIgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICB3aXRoIG9wZW4odG1wX3BhdGgsICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICAg
ICAgZi53cml0ZShtYW5pZmVzdF9zdHIpCi0gICAgICAgICAgICBvcy5yZW5hbWUodG1wX3BhdGgs
IHBhdGgpCisgICAgICAgICAgICAgICAgZi53cml0ZShtYW5pZmVzdF9zdHIuZW5jb2RlKCJ1dGY4
IikpCisgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAzKToKKyAgICAgICAg
ICAgICAgICBvcy5yZXBsYWNlKHRtcF9wYXRoLCBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBvcy5yZW5hbWUodG1wX3BhdGgsIHBhdGgpCiAgICAgICAgIGV4Y2VwdCAo
RXhjZXB0aW9uLCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAg
ICAgICAgICAgb3MudW5saW5rKHRtcF9wYXRoKQpAQCAtNDI2LDcgKzQzMSw3IEBAIGNsYXNzIEV4
cGVjdGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICAgICAgYWN0aW9uX21hcFsibHNhbl9sZWFr
Il0oaXRlbSkKIAogICAgICAgICBtb3psZWFrX2RhdGEgPSBkYXRhLmdldCgibW96bGVhayIsIHt9
KQotICAgICAgICBmb3Igc2NvcGUsIHNjb3BlX2RhdGEgaW4gbW96bGVha19kYXRhLml0ZXJpdGVt
cygpOgorICAgICAgICBmb3Igc2NvcGUsIHNjb3BlX2RhdGEgaW4gaXRlcml0ZW1zKG1vemxlYWtf
ZGF0YSk6CiAgICAgICAgICAgICBmb3Iga2V5LCBhY3Rpb24gaW4gWygib2JqZWN0cyIsICJtb3ps
ZWFrX29iamVjdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInRvdGFsIiwg
Im1vemxlYWtfdG90YWwiKV06CiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2NvcGVfZGF0
YS5nZXQoa2V5LCBbXSk6CkBAIC00MzgsNyArNDQzLDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYucnVuX2luZm8gPSBydW5faW5mb19pbnRlcm4uc3RvcmUo
UnVuSW5mbyhkYXRhWyJydW5faW5mbyJdKSkKIAogICAgIGRlZiB0ZXN0X3N0YXJ0KHNlbGYsIGRh
dGEpOgotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUoInV0Zjgi
KSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuaWRfdGVzdF9tYXBbdGVzdF9pZF0KICAgICAg
ICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNDQ4LDggKzQ1Myw4IEBAIGNsYXNzIEV4cGVjdGVkVXBk
YXRlcihvYmplY3QpOgogICAgICAgICBzZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0gPSBzZXQo
KQogCiAgICAgZGVmIHRlc3Rfc3RhdHVzKHNlbGYsIGRhdGEpOgotICAgICAgICB0ZXN0X2lkID0g
aW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKLSAgICAgICAgc3VidGVzdCA9IGlu
dGVybihkYXRhWyJzdWJ0ZXN0Il0uZW5jb2RlKCJ1dGY4IikpCisgICAgICAgIHRlc3RfaWQgPSBp
bnRlcm4oZW5zdXJlX3N0cihkYXRhWyJ0ZXN0Il0pKQorICAgICAgICBzdWJ0ZXN0ID0gaW50ZXJu
KGVuc3VyZV9zdHIoZGF0YVsic3VidGVzdCJdKSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5p
ZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAgICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAg
ICAgICAgICAgICByZXR1cm4KQEAgLTQ2Niw3ICs0NzEsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0
ZXIob2JqZWN0KToKICAgICAgICAgaWYgZGF0YVsic3RhdHVzIl0gPT0gIlNLSVAiOgogICAgICAg
ICAgICAgcmV0dXJuCiAKLSAgICAgICAgdGVzdF9pZCA9IGludGVybihkYXRhWyJ0ZXN0Il0uZW5j
b2RlKCJ1dGY4IikpCisgICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihkYXRhWyJ0
ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rlc3RfbWFwLmdldCh0ZXN0X2lk
KQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgpAQCAt
NDc5LDcgKzQ4NCw3IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICBk
ZWwgc2VsZi50ZXN0c192aXNpdGVkW3Rlc3RfaWRdCiAKICAgICBkZWYgYXNzZXJ0aW9uX2NvdW50
KHNlbGYsIGRhdGEpOgotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNv
ZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRl
c3QiXSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQp
CiAgICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00
OTAsMTIgKzQ5NSwxNSBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2JqZWN0KToKIAogICAgIGRl
ZiB0ZXN0X2Zvcl9zY29wZShzZWxmLCBkYXRhKToKICAgICAgICAgZGlyX3BhdGggPSBkYXRhLmdl
dCgic2NvcGUiLCAiLyIpCi0gICAgICAgIGRpcl9pZCA9IGludGVybihvcy5wYXRoLmpvaW4oZGly
X3BhdGgsICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKS5lbmNvZGUoInV0Zjgi
KSkKKyAgICAgICAgZGlyX2lkID0gaW50ZXJuKGVuc3VyZV9zdHIob3MucGF0aC5qb2luKGRpcl9w
YXRoLCAiX19kaXJfXyIpLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikpKQogICAgICAgICBpZiBk
aXJfaWQuc3RhcnRzd2l0aCgiLyIpOgogICAgICAgICAgICAgZGlyX2lkID0gZGlyX2lkWzE6XQog
ICAgICAgICByZXR1cm4gZGlyX2lkLCBzZWxmLmlkX3Rlc3RfbWFwW2Rpcl9pZF0KIAogICAgIGRl
ZiBsc2FuX2xlYWsoc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8i
OgorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBsc2FuIGFubm90YXRp
b25zIGZvciByb290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJfaWQs
IHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRh
LnNldChkaXJfaWQsIE5vbmUsICJsc2FuIiwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1
bl9pbmZvLCAoZGF0YVsiZnJhbWVzIl0sIGRhdGEuZ2V0KCJhbGxvd2VkX21hdGNoIikpKQpAQCAt
NTAzLDYgKzUxMSw5IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICAg
ICAgdGVzdF9kYXRhLnNldF9yZXF1aXJlc191cGRhdGUoKQogCiAgICAgZGVmIG1vemxlYWtfb2Jq
ZWN0KHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBkYXRhWyJzY29wZSJdID09ICIvIjoKKyAgICAg
ICAgICAgIGxvZ2dlci53YXJuaW5nKCJOb3QgdXBkYXRpbmcgbW96bGVhayBhbm5vdGF0aW9ucyBm
b3Igcm9vdCBzY29wZSIpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZGlyX2lkLCB0ZXN0
X2RhdGEgPSBzZWxmLnRlc3RfZm9yX3Njb3BlKGRhdGEpCiAgICAgICAgIHRlc3RfZGF0YS5zZXQo
ZGlyX2lkLCBOb25lLCAibGVhay1vYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
cnVuX2luZm8sICgiJXM6JXMiLCAoZGF0YVsicHJvY2VzcyJdLCBkYXRhWyJuYW1lIl0pLApAQCAt
NTExLDYgKzUyMiw5IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogICAgICAgICAg
ICAgdGVzdF9kYXRhLnNldF9yZXF1aXJlc191cGRhdGUoKQogCiAgICAgZGVmIG1vemxlYWtfdG90
YWwoc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8iOgorICAgICAg
ICAgICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90YXRpb25zIGZv
ciByb290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBkYXRhWyJieXRl
cyJdOgogICAgICAgICAgICAgZGlyX2lkLCB0ZXN0X2RhdGEgPSBzZWxmLnRlc3RfZm9yX3Njb3Bl
KGRhdGEpCiAgICAgICAgICAgICB0ZXN0X2RhdGEuc2V0KGRpcl9pZCwgTm9uZSwgImxlYWstdGhy
ZXNob2xkIiwKQEAgLTUyOSwzMSArNTQzLDMwIEBAIGRlZiBjcmVhdGVfdGVzdF90cmVlKG1ldGFk
YXRhX3BhdGgsIHRlc3RfbWFuaWZlc3QpOgogICAgIGFzc2VydCBhbGxfdHlwZXMgPiBleGNsdWRl
X3R5cGVzCiAgICAgaW5jbHVkZV90eXBlcyA9IGFsbF90eXBlcyAtIGV4Y2x1ZGVfdHlwZXMKICAg
ICBmb3IgaXRlbV90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIHRlc3RfbWFuaWZlc3QuaXRlcnR5
cGVzKCppbmNsdWRlX3R5cGVzKToKLSAgICAgICAgdGVzdF9maWxlX2RhdGEgPSBUZXN0RmlsZURh
dGEoaW50ZXJuKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UuZW5jb2RlKCJ1dGY4IikpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm4oaXRlbV90eXBlLmVuY29kZSgi
dXRmOCIpKSwKKyAgICAgICAgdGVzdF9maWxlX2RhdGEgPSBUZXN0RmlsZURhdGEoaW50ZXJuKGVu
c3VyZV9zdHIodGVzdF9tYW5pZmVzdC51cmxfYmFzZSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm4oZW5zdXJlX3N0cihpdGVtX3R5cGUpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFfcGF0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0cykKICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0g
ICAgICAgICAgICBpZF90ZXN0X21hcFtpbnRlcm4odGVzdC5pZC5lbmNvZGUoInV0ZjgiKSldID0g
dGVzdF9maWxlX2RhdGEKKyAgICAgICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybihlbnN1cmVfc3Ry
KHRlc3QuaWQpKV0gPSB0ZXN0X2ZpbGVfZGF0YQogCi0gICAgICAgIGRpcl9wYXRoID0gb3MucGF0
aC5zcGxpdCh0ZXN0X3BhdGgpWzBdLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikKKyAgICAgICAg
ZGlyX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKQogICAgICAgICB3aGlsZSBUcnVl
OgotICAgICAgICAgICAgaWYgZGlyX3BhdGg6Ci0gICAgICAgICAgICAgICAgZGlyX2lkID0gZGly
X3BhdGggKyAiL19fZGlyX18iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRp
cl9pZCA9ICJfX2Rpcl9fIgotICAgICAgICAgICAgZGlyX2lkID0gaW50ZXJuKCh0ZXN0X21hbmlm
ZXN0LnVybF9iYXNlICsgZGlyX2lkKS5sc3RyaXAoIi8iKS5lbmNvZGUoInV0ZjgiKSkKLSAgICAg
ICAgICAgIGlmIGRpcl9pZCBub3QgaW4gaWRfdGVzdF9tYXA6Ci0gICAgICAgICAgICAgICAgdGVz
dF9maWxlX2RhdGEgPSBUZXN0RmlsZURhdGEoaW50ZXJuKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2Uu
ZW5jb2RlKCJ1dGY4IikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0YWRhdGFfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW10pCi0gICAgICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGlyX2lkXSA9IHRlc3RfZmls
ZV9kYXRhCi0gICAgICAgICAgICBpZiBub3QgZGlyX3BhdGggb3IgZGlyX3BhdGggaW4gaWRfdGVz
dF9tYXA6CisgICAgICAgICAgICBkaXJfbWV0YV9wYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRo
LCAiX19kaXJfXyIpCisgICAgICAgICAgICBkaXJfaWQgPSAodGVzdF9tYW5pZmVzdC51cmxfYmFz
ZSArIGRpcl9tZXRhX3BhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkubHN0cmlwKCIvIikK
KyAgICAgICAgICAgIGlmIGRpcl9pZCBpbiBpZF90ZXN0X21hcDoKKyAgICAgICAgICAgICAgICBi
cmVhaworCisgICAgICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4o
ZW5zdXJlX3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGFfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcl9tZXRhX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSkKKyAgICAgICAgICAgIGlkX3Rlc3RfbWFwW2Rpcl9pZF0gPSB0
ZXN0X2ZpbGVfZGF0YQorICAgICAgICAgICAgZGlyX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoZGly
X3BhdGgpCisgICAgICAgICAgICBpZiBub3QgZGlyX3BhdGg6CiAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIGRpcl9wYXRoID0gZGlyX3BhdGgucnNwbGl0KCIvIiwgMSlbMF0gaWYg
Ii8iIGluIGRpcl9wYXRoIGVsc2UgIiIKIAogICAgIHJldHVybiBpZF90ZXN0X21hcAogCkBAIC02
MTQsNyArNjI3LDcgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
aXRlbV90eXBlID0gaXRlbV90eXBlCiAgICAgICAgIHNlbGYudGVzdF9wYXRoID0gdGVzdF9wYXRo
CiAgICAgICAgIHNlbGYubWV0YWRhdGFfcGF0aCA9IG1ldGFkYXRhX3BhdGgKLSAgICAgICAgc2Vs
Zi50ZXN0cyA9IHtpbnRlcm4oaXRlbS5pZC5lbmNvZGUoInV0ZjgiKSkgZm9yIGl0ZW0gaW4gdGVz
dHN9CisgICAgICAgIHNlbGYudGVzdHMgPSB7aW50ZXJuKGVuc3VyZV9zdHIoaXRlbS5pZCkpIGZv
ciBpdGVtIGluIHRlc3RzfQogICAgICAgICBzZWxmLl9yZXF1aXJlc191cGRhdGUgPSBGYWxzZQog
ICAgICAgICBzZWxmLmRhdGEgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KFBhY2tl
ZFJlc3VsdExpc3QpKQogCkBAIC02NTUsMTEgKzY2OCwxMSBAQCBjbGFzcyBUZXN0RmlsZURhdGEo
b2JqZWN0KToKICAgICAgICAgIyBSZXR1cm4gc3VidGVzdCBub2RlcyBwcmVzZW50IGluIHRoZSBl
eHBlY3RlZCBmaWxlLCBidXQgbWlzc2luZyBmcm9tIHRoZSBkYXRhCiAgICAgICAgIHJ2ID0gW10K
IAotICAgICAgICBmb3IgdGVzdF9pZCwgc3VidGVzdHMgaW4gc2VsZi5kYXRhLml0ZXJpdGVtcygp
OgotICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KHRlc3RfaWQuZGVjb2RlKCJ1
dGY4IikpCisgICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBpdGVyaXRlbXMoc2VsZi5k
YXRhKToKKyAgICAgICAgICAgIHRlc3QgPSBleHBlY3RlZC5nZXRfdGVzdChlbnN1cmVfdGV4dCh0
ZXN0X2lkKSkKICAgICAgICAgICAgIGlmIG5vdCB0ZXN0OgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGl0ZW0uZGVjb2RlKCJ1dGY4Iikg
Zm9yIGl0ZW0gaW4gc3VidGVzdHMuaXRlcmtleXMoKSBpZiBpdGVtIGlzIG5vdCBOb25lKQorICAg
ICAgICAgICAgc2Vlbl9zdWJ0ZXN0cyA9IHNldChlbnN1cmVfdGV4dChpdGVtKSBmb3IgaXRlbSBp
biBpdGVya2V5cyhzdWJ0ZXN0cykgaWYgaXRlbSBpcyBub3QgTm9uZSkKICAgICAgICAgICAgIG1p
c3Npbmdfc3VidGVzdHMgPSBzZXQodGVzdC5zdWJ0ZXN0cy5rZXlzKCkpIC0gc2Vlbl9zdWJ0ZXN0
cwogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbWlzc2luZ19zdWJ0ZXN0czoKICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9zdWJ0ZXN0ID0gdGVzdC5nZXRfc3VidGVzdChpdGVtKQpAQCAtNjczLDYg
KzY4NiwyOSBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKIAogICAgICAgICByZXR1cm4g
cnYKIAorICAgIGRlZiBmaWx0ZXJfdW5rbm93bl9wcm9wcyhzZWxmLCB1cGRhdGVfcHJvcGVydGll
cywgc3VidGVzdHMpOgorICAgICAgICAjIFJlbW92ZSBzdWJ0ZXN0cyB3aGljaCBoYXZlIHNvbWUg
Y29uZGl0aW9ucyB0aGF0IGFyZW4ndCBpbiB1cGRhdGVfcHJvcGVydGllcworICAgICAgICAjIHNp
bmNlIHJlbW92aW5nIHRoZXNlIG1heSBiZSBpbmFwcHJvcHJpYXRlCisgICAgICAgIHRvcF9sZXZl
bF9wcm9wcywgZGVwZW5kZW50X3Byb3BzID0gdXBkYXRlX3Byb3BlcnRpZXMKKyAgICAgICAgYWxs
X3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQorICAgICAgICBmb3IgaXRlbSBpbiBp
dGVydmFsdWVzKGRlcGVuZGVudF9wcm9wcyk6CisgICAgICAgICAgICBhbGxfcHJvcGVydGllcyB8
PSBzZXQoaXRlbSkKKworICAgICAgICBmaWx0ZXJlZCA9IFtdCisgICAgICAgIGZvciBzdWJ0ZXN0
IGluIHN1YnRlc3RzOgorICAgICAgICAgICAgaW5jbHVkZSA9IFRydWUKKyAgICAgICAgICAgIGZv
ciBrZXksIF8gaW4gc3VidGVzdC5pdGVyX3Byb3BlcnRpZXMoKToKKyAgICAgICAgICAgICAgICBj
b25kaXRpb25zID0gc3VidGVzdC5nZXRfY29uZGl0aW9ucyhrZXkpCisgICAgICAgICAgICAgICAg
Zm9yIGNvbmRpdGlvbiBpbiBjb25kaXRpb25zOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qg
Y29uZGl0aW9uLnZhcmlhYmxlcy5pc3N1YnNldChhbGxfcHJvcGVydGllcyk6CisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgaWYgbm90IGluY2x1ZGU6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBpZiBpbmNsdWRlOgorICAgICAgICAgICAgICAgIGZpbHRlcmVk
LmFwcGVuZChzdWJ0ZXN0KQorICAgICAgICByZXR1cm4gZmlsdGVyZWQKKwogICAgIGRlZiB1cGRh
dGUoc2VsZiwgZGVmYXVsdF9leHBlY3RlZF9ieV90eXBlLCB1cGRhdGVfcHJvcGVydGllcywKICAg
ICAgICAgICAgICAgIGZ1bGxfdXBkYXRlPUZhbHNlLCBkaXNhYmxlX2ludGVybWl0dGVudD1Ob25l
LCB1cGRhdGVfaW50ZXJtaXR0ZW50PUZhbHNlLAogICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVy
bWl0dGVudD1GYWxzZSk6CkBAIC02ODcsNiArNzIzLDcgQEAgY2xhc3MgVGVzdEZpbGVEYXRhKG9i
amVjdCk6CiAKICAgICAgICAgaWYgZnVsbF91cGRhdGU6CiAgICAgICAgICAgICBvcnBoYW5zID0g
c2VsZi5vcnBoYW5fc3VidGVzdHMoZXhwZWN0ZWQpCisgICAgICAgICAgICBvcnBoYW5zID0gc2Vs
Zi5maWx0ZXJfdW5rbm93bl9wcm9wcyh1cGRhdGVfcHJvcGVydGllcywgb3JwaGFucykKIAogICAg
ICAgICAgICAgaWYgbm90IHNlbGYucmVxdWlyZXNfdXBkYXRlIGFuZCBub3Qgb3JwaGFuczoKICAg
ICAgICAgICAgICAgICByZXR1cm4KQEAgLTcwNCw5ICs3NDEsOSBAQCBjbGFzcyBUZXN0RmlsZURh
dGEob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfZXhwZWN0ZWQgPSBleHBlY3RlZC5nZXRfdGVz
dCh0ZXN0X2lkKQogICAgICAgICAgICAgZXhwZWN0ZWRfYnlfdGVzdFt0ZXN0X2lkXSA9IHRlc3Rf
ZXhwZWN0ZWQKIAotICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIHNlbGYuZGF0YS5p
dGVyaXRlbXMoKToKLSAgICAgICAgICAgIHRlc3RfaWQgPSB0ZXN0X2lkLmRlY29kZSgidXRmOCIp
Ci0gICAgICAgICAgICBmb3Igc3VidGVzdF9pZCwgcmVzdWx0c19saXN0IGluIHRlc3RfZGF0YS5p
dGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfaWQsIHRlc3RfZGF0YSBpbiBpdGVyaXRlbXMo
c2VsZi5kYXRhKToKKyAgICAgICAgICAgIHRlc3RfaWQgPSBlbnN1cmVfc3RyKHRlc3RfaWQpCisg
ICAgICAgICAgICBmb3Igc3VidGVzdF9pZCwgcmVzdWx0c19saXN0IGluIGl0ZXJpdGVtcyh0ZXN0
X2RhdGEpOgogICAgICAgICAgICAgICAgIGZvciBwcm9wLCBydW5faW5mbywgdmFsdWUgaW4gcmVz
dWx0c19saXN0OgogICAgICAgICAgICAgICAgICAgICAjIFNwZWNpYWwgY2FzZSBkaXJlY3Rvcnkg
bWV0YWRhdGEKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25lIGFuZCB0
ZXN0X2lkLmVuZHN3aXRoKCJfX2Rpcl9fIik6CkBAIC03MjIsOCArNzU5LDcgQEAgY2xhc3MgVGVz
dEZpbGVEYXRhKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHN1YnRlc3RfaWQgaXMg
Tm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fZXhwZWN0ZWQgPSB0ZXN0X2V4cGVj
dGVkCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKHN1YnRlc3RfaWQsIHN0cik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VidGVzdF9pZCA9IHN1YnRlc3RfaWQuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnRlc3RfaWQgPSBlbnN1cmVfdGV4dChzdWJ0ZXN0X2lkKQogICAgICAgICAg
ICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQuZ2V0X3N1YnRlc3Qo
c3VidGVzdF9pZCkKIAogICAgICAgICAgICAgICAgICAgICBpZiBwcm9wID09ICJzdGF0dXMiOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vz
cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YTJiODk0Y2I3NGQ0ZWMwOTE5MzFiZjQxN2M5MmQ1YmVhMDcxY2Fl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKQEAgLTAsMCArMSwx
MSBAQAoraW1wb3J0IHN5cworCitpbXBvcnQgc2l4CisKKworZGVmIGNhc3RfZW52KGVudik6Cisg
ICAgIiIiRW5jb2RlIGFsbCB0aGUgZW52aXJvbm1lbnQgdmFsdWVzIGFzIHRoZSBhcHByb3ByaWF0
ZSB0eXBlIGZvciBlYWNoIFB5dGhvbiB2ZXJzaW9uCisgICAgVGhpcyBhc3N1bWVzIHRoYXQgYWxs
IHRoZSBkYXRhIGlzIG9yIGNhbiBiZSByZXByZXNlbnRlZCBhcyBVVEY4IiIiCisKKyAgICBlbnZf
dHlwZSA9IHNpeC5lbnN1cmVfYmluYXJ5IGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPCAzIGVsc2Ug
c2l4LmVuc3VyZV9zdHIKKyAgICByZXR1cm4ge2Vudl90eXBlKGtleSk6IGVudl90eXBlKHZhbHVl
KSBmb3Iga2V5LCB2YWx1ZSBpbiBzaXguaXRlcml0ZW1zKGVudil9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvcHJvZHVjdHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkKaW5kZXggZTMx
MTcwNDI3MDlmOTlmNGUwNDQzZGMwZGZhZjU2MWFkMGI1NDhiMC4uYWJkODQwOTRiYjMzZGJkMTNi
MzU5NGE3YWNiZTg0Njc1MTJhOTljZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3Rz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9y
dCBpbXBvcnRsaWIKIGltcG9ydCBpbXAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAogZnJv
bSAuYnJvd3NlcnMgaW1wb3J0IHByb2R1Y3RfbGlzdAogCkBAIC00NCw3ICs0NSw3IEBAIGNsYXNz
IFByb2R1Y3Qob2JqZWN0KToKICAgICAgICAgc2VsZi5nZXRfdGltZW91dF9tdWx0aXBsaWVyID0g
Z2V0YXR0cihtb2R1bGUsIGRhdGFbInRpbWVvdXRfbXVsdGlwbGllciJdKQogCiAgICAgICAgIHNl
bGYuZXhlY3V0b3JfY2xhc3NlcyA9IHt9Ci0gICAgICAgIGZvciB0ZXN0X3R5cGUsIGNsc19uYW1l
IGluIGRhdGFbImV4ZWN1dG9yIl0uaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciB0ZXN0X3R5cGUs
IGNsc19uYW1lIGluIGl0ZXJpdGVtcyhkYXRhWyJleGVjdXRvciJdKToKICAgICAgICAgICAgIGNs
cyA9IGdldGF0dHIobW9kdWxlLCBjbHNfbmFtZSkKICAgICAgICAgICAgIHNlbGYuZXhlY3V0b3Jf
Y2xhc3Nlc1t0ZXN0X3R5cGVdID0gY2xzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFi
aWxpdHkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CmluZGV4IGMwNmY3ZTVlOWQ2YjEw
YjRlNjE5Yzk1YTYyNDE3ZTUyYTU5NmJlNTMuLjNmODk4OTcyOWZkZTBlZTQ1Y2Y3ODNiYzY5ODMw
N2UzOGM4NDRkOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQpAQCAtNSw2ICs1LDcgQEAgaW1wb3J0IGlvCiBpbXBv
cnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGljdAog
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMK
IAogZnJvbSBtb3psb2cgaW1wb3J0IHJlYWRlcgogZnJvbSBtb3psb2cuZm9ybWF0dGVycyBpbXBv
cnQgSlNPTkZvcm1hdHRlcgpAQCAtMTQwLDEwICsxNDEsMTAgQEAgZGVmIHByb2Nlc3NfcmVzdWx0
cyhsb2csIGl0ZXJhdGlvbnMpOgogICAgIGhhbmRsZXIgPSBMb2dIYW5kbGVyKCkKICAgICByZWFk
ZXIuaGFuZGxlX2xvZyhyZWFkZXIucmVhZChsb2cpLCBoYW5kbGVyKQogICAgIHJlc3VsdHMgPSBo
YW5kbGVyLnJlc3VsdHMKLSAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIHJlc3VsdHMuaXRlcml0
ZW1zKCk6CisgICAgZm9yIHRlc3RfbmFtZSwgdGVzdCBpbiBpdGVyaXRlbXMocmVzdWx0cyk6CiAg
ICAgICAgIGlmIGlzX2luY29uc2lzdGVudCh0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAg
ICAgICAgICAgICBpbmNvbnNpc3RlbnQuYXBwZW5kKCh0ZXN0X25hbWUsIE5vbmUsIHRlc3RbInN0
YXR1cyJdLCBbXSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3QgaW4gdGVzdFsi
c3VidGVzdHMiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVz
dCBpbiBpdGVyaXRlbXModGVzdFsic3VidGVzdHMiXSk6CiAgICAgICAgICAgICBpZiBpc19pbmNv
bnNpc3RlbnQoc3VidGVzdFsic3RhdHVzIl0sIGl0ZXJhdGlvbnMpOgogICAgICAgICAgICAgICAg
IGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgc3VidGVzdF9uYW1lLCBzdWJ0ZXN0WyJz
dGF0dXMiXSwgc3VidGVzdFsibWVzc2FnZXMiXSkpCiAKQEAgLTIwOCw3ICsyMDksNyBAQCBkZWYg
d3JpdGVfcmVzdWx0cyhsb2csIHJlc3VsdHMsIGl0ZXJhdGlvbnMsIHByX251bWJlcj1Ob25lLCB1
c2VfZGV0YWlscz1GYWxzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0cyIgaWYgbGVuKHJlc3VsdHMpID4gMQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICJ0ZXN0IikpCiAKLSAgICBm
b3IgdGVzdF9uYW1lLCB0ZXN0IGluIHJlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3Rf
bmFtZSwgdGVzdCBpbiBpdGVyaXRlbXMocmVzdWx0cyk6CiAgICAgICAgIGJhc2V1cmwgPSAiaHR0
cDovL3czYy10ZXN0Lm9yZy9zdWJtaXNzaW9ucyIKICAgICAgICAgaWYgImh0dHBzIiBpbiBvcy5w
YXRoLnNwbGl0ZXh0KHRlc3RfbmFtZSlbMF0uc3BsaXQoIi4iKVsxOl06CiAgICAgICAgICAgICBi
YXNldXJsID0gImh0dHBzOi8vdzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgpAQCAtMjM2LDcgKzIz
Nyw3IEBAIGRlZiB3cml0ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVt
YmVyPU5vbmUsIHVzZV9kZXRhaWxzPUZhbHNlKToKIAogCiBkZWYgcnVuX3N0ZXAobG9nZ2VyLCBp
dGVyYXRpb25zLCByZXN0YXJ0X2FmdGVyX2l0ZXJhdGlvbiwga3dhcmdzX2V4dHJhcywgKiprd2Fy
Z3MpOgotICAgIGltcG9ydCB3cHRydW5uZXIKKyAgICBmcm9tIC4gaW1wb3J0IHdwdHJ1bm5lcgog
ICAgIGt3YXJncyA9IGNvcHkuZGVlcGNvcHkoa3dhcmdzKQogCiAgICAgaWYgcmVzdGFydF9hZnRl
cl9pdGVyYXRpb246CkBAIC0yNzgsNyArMjc5LDcgQEAgZGVmIGdldF9zdGVwcyhsb2dnZXIsIHJl
cGVhdF9sb29wLCByZXBlYXRfcmVzdGFydCwga3dhcmdzX2V4dHJhcyk6CiAgICAgZm9yIGt3YXJn
c19leHRyYSBpbiBrd2FyZ3NfZXh0cmFzOgogICAgICAgICBpZiBrd2FyZ3NfZXh0cmE6CiAgICAg
ICAgICAgICBmbGFnc19zdHJpbmcgPSAiIHdpdGggZmxhZ3MgJXMiICUgIiAiLmpvaW4oCi0gICAg
ICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4ga3dhcmdzX2V4dHJhLml0ZXJp
dGVtcygpKQorICAgICAgICAgICAgICAgICIlcz0lcyIgJSBpdGVtIGZvciBpdGVtIGluIGl0ZXJp
dGVtcyhrd2FyZ3NfZXh0cmEpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmxhZ3Nfc3Ry
aW5nID0gIiIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdGxvYWRlci5weQppbmRleCBmYTU0Y2EzNjE1NzYzMThjYjM1ZWM3MTZhMWEx
NTliZGI1MzJlNmM4Li4zYTI2ZWZjNTU0MjExYTUyNDhhNzkwOTA5ZDk5ODkzYWZlOWZmNjc0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdGxvYWRlci5weQpAQCAtNSw2ICs1LDggQEAgZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFi
c3RyYWN0bWV0aG9kCiBmcm9tIHNpeC5tb3Zlcy5xdWV1ZSBpbXBvcnQgRW1wdHkKIGZyb20gY29s
bGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0LCBkZXF1ZQogZnJvbSBtdWx0aXByb2Nlc3Npbmcg
aW1wb3J0IFF1ZXVlCitmcm9tIHNpeCBpbXBvcnQgZW5zdXJlX2JpbmFyeSwgaXRlcml0ZW1zCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIAogZnJvbSAuIGltcG9ydCBtYW5pZmVzdGluY2x1
ZGUKIGZyb20gLiBpbXBvcnQgbWFuaWZlc3RleHBlY3RlZApAQCAtMTUsNiArMTcsNyBAQCBtYW5p
ZmVzdCA9IE5vbmUKIG1hbmlmZXN0X3VwZGF0ZSA9IE5vbmUKIGRvd25sb2FkX2Zyb21fZ2l0aHVi
ID0gTm9uZQogCisKIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToKICAgICAjIFRoaXMgcmVsaWVz
IG9uIGFuIGFscmVhZHkgbG9hZGVkIG1vZHVsZSBoYXZpbmcgc2V0IHRoZSBzeXMucGF0aCBjb3Jy
ZWN0bHkgOigKICAgICBnbG9iYWwgbWFuaWZlc3QsIG1hbmlmZXN0X3VwZGF0ZSwgZG93bmxvYWRf
ZnJvbV9naXRodWIKQEAgLTI0LDEyICsyNywxMyBAQCBkZWYgZG9fZGVsYXllZF9pbXBvcnRzKCk6
CiAKIAogY2xhc3MgVGVzdENodW5rZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
dG90YWxfY2h1bmtzLCBjaHVua19udW1iZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3Rh
bF9jaHVua3MsIGNodW5rX251bWJlciwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnRvdGFsX2No
dW5rcyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9IGNodW5rX251
bWJlcgogICAgICAgICBhc3NlcnQgc2VsZi5jaHVua19udW1iZXIgPD0gc2VsZi50b3RhbF9jaHVu
a3MKICAgICAgICAgc2VsZi5sb2dnZXIgPSBzdHJ1Y3R1cmVkLmdldF9kZWZhdWx0X2xvZ2dlcigp
CiAgICAgICAgIGFzc2VydCBzZWxmLmxvZ2dlcgorICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJn
cwogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0KToKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgpAQCAtNDAsNyArNDQsNyBAQCBjbGFzcyBVbmNodW5rZWQoVGVzdENo
dW5rZXIpOgogICAgICAgICBUZXN0Q2h1bmtlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpCiAgICAgICAgIGFzc2VydCBzZWxmLnRvdGFsX2NodW5rcyA9PSAxCiAKLSAgICBkZWYgX19j
YWxsX18oc2VsZiwgbWFuaWZlc3QpOgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBtYW5pZmVzdCwg
Kiprd2FyZ3MpOgogICAgICAgICBmb3IgaXRlbSBpbiBtYW5pZmVzdDoKICAgICAgICAgICAgIHlp
ZWxkIGl0ZW0KIApAQCAtNDksNyArNTMsNyBAQCBjbGFzcyBIYXNoQ2h1bmtlcihUZXN0Q2h1bmtl
cik6CiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0KToKICAgICAgICAgY2h1bmtfaW5k
ZXggPSBzZWxmLmNodW5rX251bWJlciAtIDEKICAgICAgICAgZm9yIHRlc3RfdHlwZSwgdGVzdF9w
YXRoLCB0ZXN0cyBpbiBtYW5pZmVzdDoKLSAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
dGVzdF9wYXRoKS5oZXhkaWdlc3QoKSwgMTYpCisgICAgICAgICAgICBoID0gaW50KGhhc2hsaWIu
bWQ1KGVuc3VyZV9iaW5hcnkodGVzdF9wYXRoKSkuaGV4ZGlnZXN0KCksIDE2KQogICAgICAgICAg
ICAgaWYgaCAlIHNlbGYudG90YWxfY2h1bmtzID09IGNodW5rX2luZGV4OgogICAgICAgICAgICAg
ICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0ZXN0cwogCkBAIC02Miw4ICs2NiwxMyBA
QCBjbGFzcyBEaXJlY3RvcnlIYXNoQ2h1bmtlcihUZXN0Q2h1bmtlcik6CiAgICAgIiIiCiAgICAg
ZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0KToKICAgICAgICAgY2h1bmtfaW5kZXggPSBzZWxm
LmNodW5rX251bWJlciAtIDEKKyAgICAgICAgZGVwdGggPSBzZWxmLmt3YXJncy5nZXQoImRlcHRo
IikKICAgICAgICAgZm9yIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0ZXN0cyBpbiBtYW5pZmVzdDoK
LSAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUob3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0
aCkpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGlmIGRlcHRoOgorICAgICAgICAgICAg
ICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguc2VwLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0
aCkuc3BsaXQob3MucGF0aC5zZXAsIGRlcHRoKVs6ZGVwdGhdKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoYXNoX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKQor
ICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShlbnN1cmVfYmluYXJ5KGhhc2hfcGF0aCkp
LmhleGRpZ2VzdCgpLCAxNikKICAgICAgICAgICAgIGlmIGggJSBzZWxmLnRvdGFsX2NodW5rcyA9
PSBjaHVua19pbmRleDoKICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0X3R5cGUsIHRlc3RfcGF0
aCwgdGVzdHMKIApAQCAtMTI0LDcgKzEzMyw3IEBAIGNsYXNzIE1hbmlmZXN0TG9hZGVyKG9iamVj
dCk6CiAKICAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAgcnYgPSB7fQotICAgICAgICBmb3Ig
dXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVyaXRlbXMoKToKKyAgICAgICAg
Zm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMoc2VsZi50ZXN0X3BhdGhzKToKICAgICAg
ICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBzZWxmLmxvYWRfbWFuaWZlc3QodXJsX2Jhc2U9dXJsX2Jh
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqcGF0
aHMpCiAgICAgICAgICAgICBwYXRoX2RhdGEgPSB7InVybF9iYXNlIjogdXJsX2Jhc2V9CkBAIC0x
NTksNyArMTY4LDEwIEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgdG90YWxfY2h1bmtzPTEsCiAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcj0xLAogICAg
ICAgICAgICAgICAgICBpbmNsdWRlX2h0dHBzPVRydWUsCi0gICAgICAgICAgICAgICAgIHNraXBf
dGltZW91dD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfcXVpYz1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgc2tpcF90aW1lb3V0PUZhbHNlLAorICAgICAgICAgICAgICAgICBza2lw
X2ltcGxlbWVudGF0aW9uX3N0YXR1cz1Ob25lLAorICAgICAgICAgICAgICAgICBjaHVua2VyX2t3
YXJncz1Ob25lKToKIAogICAgICAgICBzZWxmLnRlc3RfdHlwZXMgPSB0ZXN0X3R5cGVzCiAgICAg
ICAgIHNlbGYucnVuX2luZm8gPSBydW5faW5mbwpAQCAtMTcwLDE2ICsxODIsMjEgQEAgY2xhc3Mg
VGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICBzZWxmLnRlc3RzID0gTm9uZQogICAgICAgICBz
ZWxmLmRpc2FibGVkX3Rlc3RzID0gTm9uZQogICAgICAgICBzZWxmLmluY2x1ZGVfaHR0cHMgPSBp
bmNsdWRlX2h0dHBzCisgICAgICAgIHNlbGYuaW5jbHVkZV9xdWljID0gaW5jbHVkZV9xdWljCiAg
ICAgICAgIHNlbGYuc2tpcF90aW1lb3V0ID0gc2tpcF90aW1lb3V0CisgICAgICAgIHNlbGYuc2tp
cF9pbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBza2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cwogCiAg
ICAgICAgIHNlbGYuY2h1bmtfdHlwZSA9IGNodW5rX3R5cGUKICAgICAgICAgc2VsZi50b3RhbF9j
aHVua3MgPSB0b3RhbF9jaHVua3MKICAgICAgICAgc2VsZi5jaHVua19udW1iZXIgPSBjaHVua19u
dW1iZXIKIAorICAgICAgICBpZiBjaHVua2VyX2t3YXJncyBpcyBOb25lOgorICAgICAgICAgICAg
Y2h1bmtlcl9rd2FyZ3MgPSB7fQogICAgICAgICBzZWxmLmNodW5rZXIgPSB7Im5vbmUiOiBVbmNo
dW5rZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzaCI6IEhhc2hDaHVua2VyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgImRpcl9oYXNoIjogRGlyZWN0b3J5SGFzaENodW5rZXJ9W2No
dW5rX3R5cGVdKHRvdGFsX2NodW5rcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua19udW1iZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2h1bmtfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqY2h1bmtlcl9rd2FyZ3MpCiAK
ICAgICAgICAgc2VsZi5fdGVzdF9pZHMgPSBOb25lCiAKQEAgLTIwNiw3ICsyMjMsNyBAQCBjbGFz
cyBUZXN0TG9hZGVyKG9iamVjdCk6CiAgICAgZGVmIGxvYWRfZGlyX21ldGFkYXRhKHNlbGYsIHRl
c3RfbWFuaWZlc3QsIG1ldGFkYXRhX3BhdGgsIHRlc3RfcGF0aCk6CiAgICAgICAgIHJ2ID0gW10K
ICAgICAgICAgcGF0aF9wYXJ0cyA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpLnNwbGl0KG9z
LnBhdGguc2VwKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6
CisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihwYXRoX3BhcnRzKSArIDEpOgogICAgICAgICAg
ICAgcGF0aCA9IG9zLnBhdGguam9pbihtZXRhZGF0YV9wYXRoLCBvcy5wYXRoLnNlcC5qb2luKHBh
dGhfcGFydHNbOmldKSwgIl9fZGlyX18uaW5pIikKICAgICAgICAgICAgIGlmIHBhdGggbm90IGlu
IHNlbGYuZGlyZWN0b3J5X21hbmlmZXN0czoKICAgICAgICAgICAgICAgICBzZWxmLmRpcmVjdG9y
eV9tYW5pZmVzdHNbcGF0aF0gPSBtYW5pZmVzdGV4cGVjdGVkLmdldF9kaXJfbWFuaWZlc3QocGF0
aCwKQEAgLTIzNiw3ICsyNTMsNyBAQCBjbGFzcyBUZXN0TG9hZGVyKG9iamVjdCk6CiAgICAgICAg
ICAgICBtYW5pZmVzdF9pdGVtcyA9IHNlbGYuY2h1bmtlcihtYW5pZmVzdF9pdGVtcykKIAogICAg
ICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2l0ZW1zOgot
ICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSA9IG1hbmlmZXN0c19ieV91cmxfYmFzZVtpdGVyKHRl
c3RzKS5uZXh0KCkudXJsX2Jhc2VdCisgICAgICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZl
c3RzX2J5X3VybF9iYXNlW25leHQoaXRlcih0ZXN0cykpLnVybF9iYXNlXQogICAgICAgICAgICAg
bWV0YWRhdGFfcGF0aCA9IHNlbGYubWFuaWZlc3RzW21hbmlmZXN0X2ZpbGVdWyJtZXRhZGF0YV9w
YXRoIl0KIAogICAgICAgICAgICAgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSA9IHNl
bGYubG9hZF9tZXRhZGF0YShtYW5pZmVzdF9maWxlLCBtZXRhZGF0YV9wYXRoLCB0ZXN0X3BhdGgp
CkBAIC0yNTIsOCArMjY5LDEyIEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGVuYWJsZWQgPSBub3QgdGVzdC5kaXNhYmxlZCgpCiAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5pbmNsdWRlX2h0dHBzIGFuZCB0ZXN0LmVudmlyb25tZW50WyJwcm90b2NvbCJdID09ICJodHRw
cyI6CiAgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3Qg
c2VsZi5pbmNsdWRlX3F1aWMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInF1aWMiXToKKyAgICAgICAg
ICAgICAgICBlbmFibGVkID0gRmFsc2UKICAgICAgICAgICAgIGlmIHNlbGYuc2tpcF90aW1lb3V0
IGFuZCB0ZXN0LmV4cGVjdGVkKCkgPT0gIlRJTUVPVVQiOgogICAgICAgICAgICAgICAgIGVuYWJs
ZWQgPSBGYWxzZQorICAgICAgICAgICAgaWYgc2VsZi5za2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1
cyBhbmQgdGVzdC5pbXBsZW1lbnRhdGlvbl9zdGF0dXMoKSBpbiBzZWxmLnNraXBfaW1wbGVtZW50
YXRpb25fc3RhdHVzOgorICAgICAgICAgICAgICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAg
ICAga2V5ID0gImVuYWJsZWQiIGlmIGVuYWJsZWQgZWxzZSAiZGlzYWJsZWQiCiAgICAgICAgICAg
ICB0ZXN0c1trZXldW3Rlc3RfdHlwZV0uYXBwZW5kKHRlc3QpCiAKQEAgLTI4NCw2ICszMDUsMTAg
QEAgY2xhc3MgVGVzdFNvdXJjZShvYmplY3QpOgogICAgIGRlZiBtYWtlX3F1ZXVlKGNscywgdGVz
dHMsICoqa3dhcmdzKTogICMgbm9xYTogTjgwNQogICAgICAgICBwYXNzCiAKKyAgICBAYWJzdHJh
Y3RtZXRob2QKKyAgICBkZWYgdGVzdHNfYnlfZ3JvdXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOiAg
IyBub3FhOiBOODA1CisgICAgICAgIHBhc3MKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBn
cm91cF9tZXRhZGF0YShjbHMsIHN0YXRlKToKICAgICAgICAgcmV0dXJuIHsic2NvcGUiOiAiLyJ9
CkBAIC0zMjIsMTQgKzM0NywyNSBAQCBjbGFzcyBHcm91cGVkU291cmNlKFRlc3RTb3VyY2UpOgog
ICAgICAgICAgICAgdGVzdF9xdWV1ZS5wdXQoaXRlbSkKICAgICAgICAgcmV0dXJuIHRlc3RfcXVl
dWUKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3Rz
LCAqKmt3YXJncyk6CisgICAgICAgIGdyb3VwcyA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgICAg
IHN0YXRlID0ge30KKyAgICAgICAgY3VycmVudCA9IE5vbmUKKyAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CisgICAgICAgICAgICBpZiBjbHMubmV3X2dyb3VwKHN0YXRlLCB0ZXN0LCAqKmt3YXJn
cyk6CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGNscy5ncm91cF9tZXRhZGF0YShzdGF0ZSlb
J3Njb3BlJ10KKyAgICAgICAgICAgIGdyb3Vwc1tjdXJyZW50XS5hcHBlbmQodGVzdC5pZCkKKyAg
ICAgICAgcmV0dXJuIGdyb3VwcworCiAKIGNsYXNzIFNpbmdsZVRlc3RTb3VyY2UoVGVzdFNvdXJj
ZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywgKipr
d2FyZ3MpOgogICAgICAgICB0ZXN0X3F1ZXVlID0gUXVldWUoKQogICAgICAgICBwcm9jZXNzZXMg
PSBrd2FyZ3NbInByb2Nlc3NlcyJdCi0gICAgICAgIHF1ZXVlcyA9IFtkZXF1ZShbXSkgZm9yIF8g
aW4geHJhbmdlKHByb2Nlc3NlcyldCi0gICAgICAgIG1ldGFkYXRhcyA9IFtjbHMuZ3JvdXBfbWV0
YWRhdGEoTm9uZSkgZm9yIF8gaW4geHJhbmdlKHByb2Nlc3NlcyldCisgICAgICAgIHF1ZXVlcyA9
IFtkZXF1ZShbXSkgZm9yIF8gaW4gcmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAgbWV0YWRhdGFz
ID0gW2Nscy5ncm91cF9tZXRhZGF0YShOb25lKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQog
ICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlkeCA9IGhhc2godGVzdC5p
ZCkgJSBwcm9jZXNzZXMKICAgICAgICAgICAgIGdyb3VwID0gcXVldWVzW2lkeF0KQEAgLTM0Miw2
ICszNzgsMTAgQEAgY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShUZXN0U291cmNlKToKIAogICAgICAg
ICByZXR1cm4gdGVzdF9xdWV1ZQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5
X2dyb3VwKGNscywgdGVzdHMsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHtjbHMuZ3JvdXBf
bWV0YWRhdGEoTm9uZSlbJ3Njb3BlJ106IFt0LmlkIGZvciB0IGluIHRlc3RzXX0KKwogCiBjbGFz
cyBQYXRoR3JvdXBlZFNvdXJjZShHcm91cGVkU291cmNlKToKICAgICBAY2xhc3NtZXRob2QKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Ry
dW5uZXIucHkKaW5kZXggN2I2YmY1N2QxNTk5MjljZGNhODdlOWNhMzIxNjEwNDAxYjM3MTY2YS4u
NDlhMzUyNWU4ODNkMTVhMDU5MDIyYTU0OTExZWVjZjUzMWQ4MzZmZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkK
QEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHRy
eToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmV4ZWN1dG9yLnJ1bl90ZXN0KHRlc3QpCiAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCh0
cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJh
Y2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgd2FpdChz
ZWxmKToKQEAgLTE1OCw3ICsxNTgsNyBAQCBkZWYgc3RhcnRfcnVubmVyKHJ1bm5lcl9jb21tYW5k
X3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLAogICAgIHdpdGggY2FwdHVyZS5DYXB0dXJlSU8o
bG9nZ2VyLCBjYXB0dXJlX3N0ZGlvKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYnJvd3Nl
ciA9IGV4ZWN1dG9yX2Jyb3dzZXJfY2xzKCoqZXhlY3V0b3JfYnJvd3Nlcl9rd2FyZ3MpCi0gICAg
ICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX2Nscyhicm93c2VyLCAqKmV4ZWN1dG9yX2t3YXJn
cykKKyAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGxvZ2dlciwgYnJvd3Nlciwg
KipleGVjdXRvcl9rd2FyZ3MpCiAgICAgICAgICAgICB3aXRoIFRlc3RSdW5uZXIobG9nZ2VyLCBy
dW5uZXJfY29tbWFuZF9xdWV1ZSwgcnVubmVyX3Jlc3VsdF9xdWV1ZSwgZXhlY3V0b3IpIGFzIHJ1
bm5lcjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ1bm5lci5y
dW4oKQpAQCAtMjgwLDcgKzI4MCw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWl0ZV9uYW1lLCB0ZXN0X3F1ZXVl
LCB0ZXN0X3NvdXJjZV9jbHMsIGJyb3dzZXJfY2xzLCBicm93c2VyX2t3YXJncywKICAgICAgICAg
ICAgICAgICAgZXhlY3V0b3JfY2xzLCBleGVjdXRvcl9rd2FyZ3MsIHN0b3BfZmxhZywgcmVydW49
MSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcGF1c2Vfb25fdW5l
eHBlY3RlZD1GYWxzZSwgcmVzdGFydF9vbl91bmV4cGVjdGVkPVRydWUsIGRlYnVnX2luZm89Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAg
ICAgY2FwdHVyZV9zdGRpbz1UcnVlLCByZWNvcmRpbmc9Tm9uZSk6CiAgICAgICAgICIiIlRocmVh
ZCB0aGF0IG93bnMgYSBzaW5nbGUgVGVzdFJ1bm5lciBwcm9jZXNzIGFuZCBhbnkgcHJvY2Vzc2Vz
IHJlcXVpcmVkCiAgICAgICAgIGJ5IHRoZSBUZXN0UnVubmVyIChlLmcuIHRoZSBGaXJlZm94IGJp
bmFyeSkuCiAKQEAgLTMxOCw2ICszMTgsOCBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJl
YWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdfaW5mbwogCiAg
ICAgICAgIHNlbGYubWFuYWdlcl9udW1iZXIgPSBuZXh0X21hbmFnZXJfbnVtYmVyKCkKKyAgICAg
ICAgYXNzZXJ0IHJlY29yZGluZyBpcyBub3QgTm9uZQorICAgICAgICBzZWxmLnJlY29yZGluZyA9
IHJlY29yZGluZwogCiAgICAgICAgIHNlbGYuY29tbWFuZF9xdWV1ZSA9IFF1ZXVlKCkKICAgICAg
ICAgc2VsZi5yZW1vdGVfcXVldWUgPSBRdWV1ZSgpCkBAIC0zNTAsNiArMzUyLDcgQEAgY2xhc3Mg
VGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIG1heSBhbHNvIGhh
dmUgYSBzdG9wIGZsYWcgc2V0IGJ5IHRoZSBtYWluIHRocmVhZCBpbmRpY2F0aW5nCiAgICAgICAg
IHRoYXQgdGhlIG1hbmFnZXIgc2hvdWxkIHNodXQgZG93biB0aGUgbmV4dCB0aW1lIHRoZSBldmVu
dCBsb29wCiAgICAgICAgIHNwaW5zLiIiIgorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0
ZXN0cnVubmVyIiwgInN0YXJ0dXAiXSkKICAgICAgICAgc2VsZi5sb2dnZXIgPSBzdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoc2VsZi5zdWl0ZV9uYW1lKQogICAgICAgICB3aXRoIHNlbGYu
YnJvd3Nlcl9jbHMoc2VsZi5sb2dnZXIsICoqc2VsZi5icm93c2VyX2t3YXJncykgYXMgYnJvd3Nl
cjoKICAgICAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXJNYW5hZ2VyKHNlbGYubG9nZ2Vy
LApAQCAtMzkwLDggKzM5Myw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5U
aHJlYWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAg
ICAgICAgICBzZWxmLnN0YXRlID0gbmV3X3N0YXRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCJuZXcgc3RhdGU6ICVzIiAlIHNlbGYuc3RhdGUuX19jbGFzc19fLl9fbmFt
ZV9fKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFj
ZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBm
aW5hbGx5OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUZXN0UnVubmVyTWFu
YWdlciBtYWluIGxvb3AgdGVybWluYXRpbmcsIHN0YXJ0aW5nIGNsZWFudXAiKQpAQCAtNDY3LDYg
KzQ3MCw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAg
ICAgZGVmIHN0YXJ0X2luaXQoc2VsZik6CiAgICAgICAgIHRlc3QsIHRlc3RfZ3JvdXAsIGdyb3Vw
X21ldGFkYXRhID0gc2VsZi5nZXRfbmV4dF90ZXN0KCkKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcu
c2V0KFsidGVzdHJ1bm5lciIsICJpbml0Il0pCiAgICAgICAgIGlmIHRlc3QgaXMgTm9uZToKICAg
ICAgICAgICAgIHJldHVybiBSdW5uZXJNYW5hZ2VyU3RhdGUuc3RvcCgpCiAgICAgICAgIGVsc2U6
CkBAIC01NTYsNiArNTYwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5zdGF0ZS50ZXN0X2dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUuZ3JvdXBfbWV0YWRhdGEpCiAKKyAgICAgICAgc2Vs
Zi5yZWNvcmRpbmcuc2V0KFsidGVzdHJ1bm5lciIsICJ0ZXN0Il0gKyBzZWxmLnN0YXRlLnRlc3Qu
aWQuc3BsaXQoIi8iKVsxOl0pCiAgICAgICAgIHNlbGYubG9nZ2VyLnRlc3Rfc3RhcnQoc2VsZi5z
dGF0ZS50ZXN0LmlkKQogICAgICAgICBpZiBzZWxmLnJlcnVuID4gMToKICAgICAgICAgICAgIHNl
bGYubG9nZ2VyLmluZm8oIlJ1biAlZC8lZCIgJSAoc2VsZi5ydW5fY291bnQsIHNlbGYucmVydW4p
KQpAQCAtNjcyLDYgKzY3Nyw3IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5U
aHJlYWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3VidGVzdF91bmV4cGVj
dGVkIG9yIGlzX3VuZXhwZWN0ZWQpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnJlc3RhcnRfb25fdW5leHBlY3RlZCkpCiAKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcu
c2V0KFsidGVzdHJ1bm5lciIsICJhZnRlci10ZXN0Il0pCiAgICAgICAgIGlmIChub3QgZmlsZV9y
ZXN1bHQuc3RhdHVzID09ICJDUkFTSCIgYW5kCiAgICAgICAgICAgICBzZWxmLnBhdXNlX2FmdGVy
X3Rlc3Qgb3IKICAgICAgICAgICAgIChzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQgYW5kIChzdWJ0
ZXN0X3VuZXhwZWN0ZWQgb3IgaXNfdW5leHBlY3RlZCkpKToKQEAgLTcyMCw2ICs3MjYsNyBAQCBj
bGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKIAogICAgIGRlZiBzdG9w
X3J1bm5lcihzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAgICAgICIiIlN0b3AgdGhlIFRlc3RSdW5u
ZXIgYW5kIHRoZSBicm93c2VyIGJpbmFyeS4iIiIKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcuc2V0
KFsidGVzdHJ1bm5lciIsICJzdG9wX3J1bm5lciJdKQogICAgICAgICBpZiBzZWxmLnRlc3RfcnVu
bmVyX3Byb2MgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogCkBAIC03MzgsNiArNzQ1LDcg
QEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHNl
bGYucmVtb3RlX3F1ZXVlLmNsb3NlKCkKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gTm9u
ZQogICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNvcmRp
bmcucGF1c2UoKQogCiAgICAgZGVmIGVuc3VyZV9ydW5uZXJfc3RvcHBlZChzZWxmKToKICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoImVuc3VyZV9ydW5uZXJfc3RvcHBlZCIpCkBAIC04MjUsNyAr
ODMzLDggQEAgY2xhc3MgTWFuYWdlckdyb3VwKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIHBh
dXNlX29uX3VuZXhwZWN0ZWQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgIHJlc3RhcnRfb25fdW5l
eHBlY3RlZD1UcnVlLAogICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPU5vbmUsCi0gICAgICAg
ICAgICAgICAgIGNhcHR1cmVfc3RkaW89VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGNhcHR1cmVf
c3RkaW89VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPU5vbmUpOgogICAgICAgICBz
ZWxmLnN1aXRlX25hbWUgPSBzdWl0ZV9uYW1lCiAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAg
ICAgICAgc2VsZi50ZXN0X3NvdXJjZV9jbHMgPSB0ZXN0X3NvdXJjZV9jbHMKQEAgLTg0MCw2ICs4
NDksOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvID0gZGVidWdfaW5mbwogICAgICAgICBzZWxmLnJlcnVuID0gcmVydW4KICAgICAgICAgc2Vs
Zi5jYXB0dXJlX3N0ZGlvID0gY2FwdHVyZV9zdGRpbworICAgICAgICBzZWxmLnJlY29yZGluZyA9
IHJlY29yZGluZworICAgICAgICBhc3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCiAKICAgICAg
ICAgc2VsZi5wb29sID0gc2V0KCkKICAgICAgICAgIyBFdmVudCB0aGF0IGlzIHBvbGxlZCBieSB0
aHJlYWRzIHNvIHRoYXQgdGhleSBjYW4gZ3JhY2VmdWxseSBleGl0IGluIHRoZSBmYWNlCkBAIC04
NzcsNyArODg4LDggQEAgY2xhc3MgTWFuYWdlckdyb3VwKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXVzZV9vbl91bmV4cGVjdGVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdGFydF9vbl91bmV4
cGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVi
dWdfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5jYXB0dXJlX3N0ZGlvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY29yZGluZz1zZWxmLnJlY29yZGluZykKICAgICAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQog
ICAgICAgICAgICAgc2VsZi5wb29sLmFkZChtYW5hZ2VyKQogICAgICAgICBzZWxmLndhaXQoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2UucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVjZS5weQppbmRleCAwNmE1NjQxZDUw
ZmJiYWVkNGRlOWRmNTExYzU2Nzc1M2VmMWEzMjZkLi5lMWUxOGVjNWU5Y2QyMWRhYTg5ZjkxNzY5
MGFkMTI4NTJmOWEyODk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMv
dGVzdF9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVj
ZS5weQpAQCAtMSw5ICsxLDEwIEBACiBpbXBvcnQgc3lzCi1mcm9tIG9zLnBhdGggaW1wb3J0IGpv
aW4sIGRpcm5hbWUKIAogaW1wb3J0IG1vY2sKIGltcG9ydCBweXRlc3QKIAorZnJvbSBvcy5wYXRo
IGltcG9ydCBqb2luLCBkaXJuYW1lCisKIHN5cy5wYXRoLmluc2VydCgwLCBqb2luKGRpcm5hbWUo
X19maWxlX18pLCAiLi4iLCAiLi4iLCAiLi4iKSkKIAogc2F1Y2UgPSBweXRlc3QuaW1wb3J0b3Jz
a2lwKCJ3cHRydW5uZXIuYnJvd3NlcnMuc2F1Y2UiKQpAQCAtOTUsNyArOTYsNiBAQCBkZWYgdGVz
dF9zYXVjZWNvbm5lY3RfY2xlYW51cCgpOgogCiAgICAgICAgIHNsZWVwLmFzc2VydF9jYWxsZWQo
KQogCi0KIGRlZiB0ZXN0X3NhdWNlY29ubmVjdF9mYWlsdXJlX25ldmVyX3JlYWR5KCk6CiAgICAg
d2l0aCBtb2NrLnBhdGNoLm9iamVjdChzYXVjZS5TYXVjZUNvbm5lY3QsICJ1cGxvYWRfcHJlcnVu
X2V4ZWMiKSxcCiAgICAgICAgICAgICBtb2NrLnBhdGNoLm9iamVjdChzYXVjZS5zdWJwcm9jZXNz
LCAiUG9wZW4iKSBhcyBQb3BlbixcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVz
dF9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9leHBlY3RlZHRyZWUu
cHkKaW5kZXggMjMwOGJlOTU5MGU5MDA0ZjQxYTQ5MjY4MmQxODdhN2I0ZmM1NzIzMS4uZDcxMjM3
YTQyZGFkNThjNjliNjg2ZTYwNDBiNjVmNDAwNjRjOTQzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RzL3Rlc3RfZXhwZWN0ZWR0cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X2V4cGVjdGVkdHJlZS5weQpAQCAtMSw3ICsxLDMgQEAKLWltcG9ydCBzeXMKLQotaW1wb3J0
IHB5dGVzdAotCiBmcm9tIC4uIGltcG9ydCBleHBlY3RlZHRyZWUsIG1ldGFkYXRhCiBmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCkBAIC0zMiw4ICsyOCw2IEBAIGRlZiByZXN1
bHRzX29iamVjdChyZXN1bHRzKToKICAgICByZXR1cm4gcmVzdWx0c19vYmoKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVl
XzAoKToKICAgICAjIFBhc3MgaWYgZGVidWcKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4
IiwgInZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBUcnVlfSwgIkZBSUwiKSwKQEAgLTUzLDgg
KzQ3LDYgQEAgZGVmIHRlc3RfYnVpbGRfdHJlZV8wKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0
cmVlKSA9PSBleHBlY3RlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9
PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBv
cnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMSgpOgogICAgICMgUGFzcyBpZiBsaW51eCBv
ciB3aW5kb3dzIDEwCiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjog
IjE4LjA0IiwgImRlYnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC03Nyw4ICs2OSw2IEBAIGRlZiB0
ZXN0X2J1aWxkX3RyZWVfMSgpOgogICAgIGFzc2VydCBkdW1wX3RyZWUodHJlZSkgPT0gZXhwZWN0
ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYg
dGVzdF9idWlsZF90cmVlXzIoKToKICAgICAjIEZhaWxzIGluIGEgc3BlY2lmaWMgY29uZmlndXJh
dGlvbgogICAgIHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAidmVyc2lvbiI6ICIxOC4wNCIs
ICJkZWJ1ZyI6IFRydWV9LCAiUEFTUyIpLApAQCAtMTA0LDggKzk0LDYgQEAgZGVmIHRlc3RfYnVp
bGRfdHJlZV8yKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAogCiAK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1
aWxkX3RyZWVfMygpOgogCiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9u
IjogIjE4LjA0IiwgImRlYnVnIjogVHJ1ZSwgInVudXNlZCI6IEZhbHNlfSwgIlBBU1MiKSwKQEAg
LTExOCw4ICsxMDYsNiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzMoKToKICAgICBhc3NlcnQgZHVt
cF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV80KCk6CiAgICAgIyBDaGVjayBj
b3VudHMgZm9yIG11bHRpcGxlIHN0YXR1c2VzCiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51
eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRlYnVnIjogRmFsc2V9LCAiRkFJTCIpLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKaW5kZXggNzJmM2E1OTFhZDdmOTA1MzI2NzFjY2I4
OTdkZmNiMTYxYmM4ZjQ1ZC4uNjBiMWIwYTVhODc4Y2RhOWM1MDBlYWFlMjVmM2ZlODllYWRmODE5
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CkBAIC03LDYgKzcsNyBAQCBp
bXBvcnQgbW9jawogZnJvbSBtb3psb2cgaW1wb3J0IGhhbmRsZXJzLCBzdHJ1Y3R1cmVkbG9nCiAK
IGZyb20gLi5mb3JtYXR0ZXJzIGltcG9ydCB3cHRyZXBvcnQKK2Zyb20gLi5mb3JtYXR0ZXJzLndw
dHNjcmVlbnNob3QgaW1wb3J0IFdwdHNjcmVlbnNob3RGb3JtYXR0ZXIKIGZyb20gLi5mb3JtYXR0
ZXJzLndwdHJlcG9ydCBpbXBvcnQgV3B0cmVwb3J0Rm9ybWF0dGVyCiAKIApAQCAtMTY2LDMgKzE2
NywyNiBAQCBkZWYgdGVzdF93cHRyZXBvcnRfa25vd25faW50ZXJtaXR0ZW50KGNhcGZkKToKICAg
ICBzdWJ0ZXN0ID0gdGVzdFsic3VidGVzdHMiXVswXQogICAgIGFzc2VydCBzdWJ0ZXN0WyJleHBl
Y3RlZCJdID09IHUiUEFTUyIKICAgICBhc3NlcnQgc3VidGVzdFsia25vd25faW50ZXJtaXR0ZW50
Il0gPT0gW3UnRkFJTCddCisKKworZGVmIHRlc3Rfd3B0c2NyZWVuc2hvdF90ZXN0X2VuZChjYXBm
ZCk6CisgICAgZm9ybWF0dGVyID0gV3B0c2NyZWVuc2hvdEZvcm1hdHRlcigpCisKKyAgICAjIEVt
cHR5CisgICAgZGF0YSA9IHt9CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKSBp
cyBOb25lCisKKyAgICAjIE5vIGl0ZW1zCisgICAgZGF0YVsnZXh0cmEnXSA9IHsicmVmdGVzdF9z
Y3JlZW5zaG90cyI6IFtdfQorICAgIGFzc2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMg
Tm9uZQorCisgICAgIyBJbnZhbGlkIGl0ZW0KKyAgICBkYXRhWydleHRyYSddWydyZWZ0ZXN0X3Nj
cmVlbnNob3RzJ10gPSBbIm5vIGRpY3QgaXRlbSJdCisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0
X2VuZChkYXRhKSBpcyBOb25lCisKKyAgICAjIFJhbmRvbSBoYXNoCisgICAgZGF0YVsnZXh0cmEn
XVsncmVmdGVzdF9zY3JlZW5zaG90cyddID0gW3siaGFzaCI6ICJIQVNIIiwgInNjcmVlbnNob3Qi
OiAiREFUQSJ9XQorICAgIGFzc2VydCAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LERBVEFcbicgPT0g
Zm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpCisKKyAgICAjIEFscmVhZHkgY2FjaGVkIGhhc2gKKyAg
ICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5vbmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IDUyNTkxNWQxODMyYWM4YWYxOTU3
YTc5OTYxNTk2OWUwNThlZWZjYTUuLmYzZTRjZTc5NmE0NWM0NzJhODhmZTAyMjI3N2UwMzQ3YjRl
OTg5NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X21hbmlmZXN0ZXhwZWN0
ZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weQpA
QCAtMSw0ICsxLDMgQEAKLWltcG9ydCBzeXMKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAogaW1w
b3J0IHB5dGVzdApAQCAtNiw4ICs1LDYgQEAgaW1wb3J0IHB5dGVzdAogZnJvbSAuLiBpbXBvcnQg
bWFuaWZlc3RleHBlY3RlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9
PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBp
biBweTMiKQogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmdXp6eSwgZXhwZWN0ZWQiLCBbCiAg
ICAgKGIicmVmLmh0bWw6MTsyMDAiLCBbKCJyZWYuaHRtbCIsICgoMSwgMSksICgyMDAsIDIwMCkp
KV0pLAogICAgIChiInJlZi5odG1sOjAtMTsxMDAtMjAwIiwgWygicmVmLmh0bWwiLCAoKDAsIDEp
LCAoMTAwLCAyMDApKSldKSwKQEAgLTI1LDcgKzIyLDcgQEAgZnJvbSAuLiBpbXBvcnQgbWFuaWZl
c3RleHBlY3RlZAogICAgICAgKCh1InRlc3QuaHRtbCIsIHUicmVmMS5odG1sIiwgIj09IiksICgo
NSwxMCksICgxMDAsIDEwMCkpKV0pLAogXSkKIGRlZiB0ZXN0X2Z1enp5KGZ1enp5LCBleHBlY3Rl
ZCk6Ci0gICAgZGF0YSA9ICIiIgorICAgIGRhdGEgPSBiIiIiCiBbdGVzdC5odG1sXQogICBmdXp6
eTogJXMiIiIgJSBmdXp6eQogICAgIGYgPSBCeXRlc0lPKGRhdGEpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVz
dF9zdGFiaWxpdHkucHkKaW5kZXggNDc0MDU2ZGRlNmM2N2JiMGFhZDIxMDA2MTNlNmNhMzMxOTYy
Mzk2Mi4uOWE4ZmNjZjkzNWExMzZjNjA1MGU4NTJmOWE1NzA0MTM4YjBkM2Y0MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weQpAQCAtMSw1ICsxLDUgQEAKIGZyb20gLi4gaW1wb3J0
IHN0YWJpbGl0eQotCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgZGVmYXVs
dGRpY3QKIAogZGVmIHRlc3RfaXNfaW5jb25zaXN0ZW50KCk6CiAgICAgYXNzZXJ0IHN0YWJpbGl0
eS5pc19pbmNvbnNpc3RlbnQoeyJQQVNTIjogMTB9LCAxMCkgaXMgRmFsc2UKQEAgLTI5LDMgKzI5
LDExNCBAQCBkZWYgdGVzdF9maW5kX3Nsb3dfc3RhdHVzKCk6CiAgICAgICAgICJ0aW1lb3V0Ijog
MTAwfSkgPT0gIkZBSUwiCiAgICAgYXNzZXJ0IHN0YWJpbGl0eS5maW5kX3Nsb3dfc3RhdHVzKHsK
ICAgICAgICAgImxvbmdlc3RfZHVyYXRpb24iOiB7IlNLSVAiOiAwfX0pIGlzIE5vbmUKKworCitk
ZWYgdGVzdF9nZXRfc3RlcHMoKToKKyAgICBsb2dnZXIgPSBOb25lCisKKyAgICBzdGVwcyA9IHN0
YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCAwLCAwLCBbXSkKKyAgICBhc3NlcnQgbGVuKHN0ZXBz
KSA9PSAwCisKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCAwLCAwLCBb
e31dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDAKKworICAgIHJlcGVhdF9sb29wID0gMQor
ICAgIGZsYWdfbmFtZSA9ICdmbGFnJworICAgIGZsYWdfdmFsdWUgPSAneScKKyAgICBzdGVwcyA9
IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRfbG9vcCwgMCwgWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ZmxhZ19uYW1lOiBmbGFnX3ZhbHVlfV0pCisgICAgYXNz
ZXJ0IGxlbihzdGVwcykgPT0gMQorICAgIGFzc2VydCBzdGVwc1swXVswXSA9PSAiUnVubmluZyB0
ZXN0cyBpbiBhIGxvb3AgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAgIHJl
cGVhdF9sb29wLCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9vcCA9IDAK
KyAgICByZXBlYXRfcmVzdGFydCA9IDEKKyAgICBmbGFnX25hbWUgPSAnZmxhZycKKyAgICBmbGFn
X3ZhbHVlID0gJ24nCisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dlciwgcmVw
ZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkKKyAgICBhc3NlcnQgbGVuKHN0ZXBzKSA9PSAx
CisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3RzIGluIGEgbG9vcCB3aXRo
IHJlc3RhcnRzICVkIHRpbWVzIHdpdGggZmxhZ3MgJXM9JXMiICUgKAorICAgICAgICByZXBlYXRf
cmVzdGFydCwgZmxhZ19uYW1lLCBmbGFnX3ZhbHVlKQorCisgICAgcmVwZWF0X2xvb3AgPSAxMAor
ICAgIHJlcGVhdF9yZXN0YXJ0ID0gNQorICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhs
b2dnZXIsIHJlcGVhdF9sb29wLCByZXBlYXRfcmVzdGFydCwgW3t9XSkKKyAgICBhc3NlcnQgbGVu
KHN0ZXBzKSA9PSAyCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3RzIGlu
IGEgbG9vcCAlZCB0aW1lcyIgJSByZXBlYXRfbG9vcAorICAgIGFzc2VydCBzdGVwc1sxXVswXSA9
PSAoCisgICAgICAgICJSdW5uaW5nIHRlc3RzIGluIGEgbG9vcCB3aXRoIHJlc3RhcnRzICVkIHRp
bWVzIiAlIHJlcGVhdF9yZXN0YXJ0KQorCisKK2RlZiB0ZXN0X2xvZ19oYW5kbGVyKCk6CisgICAg
aGFuZGxlciA9IHN0YWJpbGl0eS5Mb2dIYW5kbGVyKCkKKyAgICBkYXRhID0gT3JkZXJlZERpY3Qo
KQorICAgIGRhdGFbInRlc3QiXSA9ICJ0ZXN0X25hbWUiCisgICAgdGVzdCA9IGhhbmRsZXIuZmlu
ZF9vcl9jcmVhdGVfdGVzdChkYXRhKQorICAgIGFzc2VydCB0ZXN0WyJzdWJ0ZXN0cyJdID09IE9y
ZGVyZWREaWN0KCkKKyAgICBhc3NlcnQgdGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50
KQorICAgIGFzc2VydCB0ZXN0WyJsb25nZXN0X2R1cmF0aW9uIl0gPT0gZGVmYXVsdGRpY3QoZmxv
YXQpCisgICAgYXNzZXJ0IHRlc3QgPT0gaGFuZGxlci5maW5kX29yX2NyZWF0ZV90ZXN0KGRhdGEp
CisKKyAgICBzdGFydF90aW1lID0gMTAwCisgICAgZGF0YVsidGltZSJdID0gc3RhcnRfdGltZQor
ICAgIGhhbmRsZXIudGVzdF9zdGFydChkYXRhKQorICAgIGFzc2VydCB0ZXN0WyJzdGFydF90aW1l
Il0gPT0gc3RhcnRfdGltZQorCisgICAgZGF0YVsic3VidGVzdCJdID0gInN1YnRlc3RfbmFtZSIK
KyAgICBzdWJ0ZXN0ID0gaGFuZGxlci5maW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisgICAg
YXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdID09IGRlZmF1bHRkaWN0KGludCkKKyAgICBhc3NlcnQg
c3VidGVzdFsibWVzc2FnZXMiXSA9PSBzZXQoKQorICAgIGFzc2VydCBzdWJ0ZXN0ID09IGhhbmRs
ZXIuZmluZF9vcl9jcmVhdGVfc3VidGVzdChkYXRhKQorCisgICAgZGF0YVsic3RhdHVzIl0gPSAw
CisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAwCisgICAg
aGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtk
YXRhWyJzdGF0dXMiXV0gPT0gMQorICAgIGhhbmRsZXIudGVzdF9zdGF0dXMoZGF0YSkKKyAgICBh
c3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDIKKyAgICBkYXRhWyJz
dGF0dXMiXSA9IDEKKyAgICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1d
ID09IDAKKyAgICBtZXNzYWdlID0gInRlc3QgbWVzc2FnZSIKKyAgICBkYXRhWyJtZXNzYWdlIl0g
PSBtZXNzYWdlCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2VydCBzdWJ0
ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMQorICAgIGFzc2VydCBsZW4oc3VidGVz
dFsibWVzc2FnZXMiXSkgPT0gMQorICAgIGFzc2VydCBtZXNzYWdlIGluIHN1YnRlc3RbIm1lc3Nh
Z2VzIl0KKworICAgIHRlc3RfZHVyYXRpb24gPSAxMAorICAgIGRhdGFbInRpbWUiXSA9IGRhdGFb
InRpbWUiXSArIHRlc3RfZHVyYXRpb24KKyAgICBoYW5kbGVyLnRlc3RfZW5kKGRhdGEpCisgICAg
YXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXVtkYXRhWyJzdGF0dXMiXV0gPT0gdGVzdF9k
dXJhdGlvbgorICAgIGFzc2VydCAidGltZW91dCIgbm90IGluIHRlc3QKKworICAgIGRhdGFbInRl
c3QyIl0gPSAidGVzdF9uYW1lXzIiCisgICAgdGltZW91dCA9IDUKKyAgICBkYXRhWyJleHRyYSJd
ID0ge30KKyAgICBkYXRhWyJleHRyYSJdWyJ0ZXN0X3RpbWVvdXQiXSA9IHRpbWVvdXQKKyAgICBo
YW5kbGVyLnRlc3Rfc3RhcnQoZGF0YSkKKyAgICBoYW5kbGVyLnRlc3RfZW5kKGRhdGEpCisgICAg
YXNzZXJ0IHRlc3RbInRpbWVvdXQiXSA9PSB0aW1lb3V0ICogMTAwMAorCisKK2RlZiB0ZXN0X2Vy
cl9zdHJpbmcoKToKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1
J09LJzogMSwgdSdGQUlMJzogMX0sIDEpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioi
CisgICAgYXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdPSyc6IDIsIHUn
RkFJTCc6IDF9LCAyKSA9PSB1IioqRHVwbGljYXRlIHN1YnRlc3QgbmFtZSoqIgorICAgIGFzc2Vy
dCBzdGFiaWxpdHkuZXJyX3N0cmluZyh7dSdTS0lQJzogMX0sIDApID09IHUiRHVwbGljYXRlIHN1
YnRlc3QgbmFtZSIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1
J1NLSVAnOiAxLCB1J09LJzogMX0sIDEpID09IHUiRHVwbGljYXRlIHN1YnRlc3QgbmFtZSIKKwor
ICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDF9LCAy
KSA9PSB1IioqRkFJTDogMS8yLCBNSVNTSU5HOiAxLzIqKiIKKyAgICBhc3NlcnQgc3RhYmlsaXR5
LmVycl9zdHJpbmcoCisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J09LJzogMX0sIDMpID09IHUiKipG
QUlMOiAxLzMsIE9LOiAxLzMsIE1JU1NJTkc6IDEvMyoqIgorCisgICAgYXNzZXJ0IHN0YWJpbGl0
eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdPSyc6IDEsIHUnRkFJTCc6IDF9LCAyKSA9PSB1Iioq
RkFJTDogMS8yLCBPSzogMS8yKioiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J09LJzogMiwgdSdGQUlMJzogMSwgdSdTS0lQJzogMX0sIDQpID09IHUiRkFJ
TDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCisgICAgYXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3Ry
aW5nKAorICAgICAgICB7dSdGQUlMJzogMSwgdSdTS0lQJzogMSwgdSdPSyc6IDJ9LCA0KSA9PSB1
IkZBSUw6IDEvNCwgT0s6IDIvNCwgU0tJUDogMS80IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rs
b2FkZXIucHkKaW5kZXggZTg1N2NkNDNkYjZkMjgxZjk1NDE0MjMwZjUyYzk4NGFhZDkxNTExOC4u
ODM2MDAzZDEwNjAzOGFiNDMwMzAzNWVlY2NhMzE3NzRjOWEyNmNlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF90ZXN0bG9hZGVyLnB5CkBAIC0yMCw4ICsyMCw2IEBAIHNraXA6IHRydWUKIAogQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAogICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0iTmFtZWRUZW1wb3JhcnlGaWxlIGNhbm5vdCBiZSByZW9wZW5lZCBvbiBXaW4z
MiIpCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfZmlsdGVyX3VuaWNvZGUoKToKICAgICB0ZXN0cyA9IG1ha2VfbW9ja19tYW5p
ZmVzdCgoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoInRlc3QiLCAiYyIsIDEwKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Vw
ZGF0ZS5weQppbmRleCA1ZDkwMGEzZDZjOWNkMjM2OTZmZTBkMmI3YzIwZDhmZjUxNDJiOWU1Li42
ZGMwNGNlZGYzNGM3YThmYjY2NzNmMWM1ZjQ3N2QwNTYxZWIxZmZhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvdGVzdF91cGRhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rl
c3RfdXBkYXRlLnB5CkBAIC0xMiw3ICsxMiw3IEBAIGZyb20gbW96bG9nIGltcG9ydCBzdHJ1Y3R1
cmVkbG9nLCBoYW5kbGVycywgZm9ybWF0dGVycwogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCBvcy5wYXJkaXIs
IG9zLnBhcmRpciwgb3MucGFyZGlyKSkKLWZyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCBp
dGVtIGFzIG1hbmlmZXN0X2l0ZW0KK2Zyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCBpdGVt
IGFzIG1hbmlmZXN0X2l0ZW0sIHV0aWxzCiAKIAogZGVmIHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHJl
bF9wYXRoKToKQEAgLTIxLDcgKzIxLDkgQEAgZGVmIHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHJlbF9w
YXRoKToKIAogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhhc2gsIGNscywgKmFyZ3Mp
OgotICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgaGFzaD1oYXNoKQorICAgIHBhdGhf
cGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KCIvIikpCisgICAgcGF0aCA9IHV0aWxzLnRvX29zX3Bh
dGgocGF0aCkKKyAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIHJlbF9wYXRoX3BhcnRz
PXBhdGhfcGFydHMsIGhhc2g9aGFzaCkKICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwg
Ii8iLCByZWxfcGF0aF90b190ZXN0X3VybChwYXRoKSwgKmFyZ3MpCiAgICAgcy5tYW5pZmVzdF9p
dGVtcyA9IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkpCiAg
ICAgcmV0dXJuIHMKQEAgLTI5LDcgKzMxLDYgQEAgZGVmIFNvdXJjZUZpbGVXaXRoVGVzdChwYXRo
LCBoYXNoLCBjbHMsICphcmdzKToKIAogaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IG1h
bmlmZXN0X2l0ZW0uVGVzdGhhcm5lc3NUZXN0LAogICAgICAgICAgICAgICAgICJyZWZ0ZXN0Ijog
bWFuaWZlc3RfaXRlbS5SZWZUZXN0LAotICAgICAgICAgICAgICAgICJyZWZ0ZXN0X25vZGUiOiBt
YW5pZmVzdF9pdGVtLlJlZlRlc3ROb2RlLAogICAgICAgICAgICAgICAgICJtYW51YWwiOiBtYW5p
ZmVzdF9pdGVtLk1hbnVhbFRlc3QsCiAgICAgICAgICAgICAgICAgIndkc3BlYyI6IG1hbmlmZXN0
X2l0ZW0uV2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgImNvbmZvcm1hbmNlY2hl
Y2tlciI6IG1hbmlmZXN0X2l0ZW0uQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwKQEAgLTY3LDExICs2
OCwxMiBAQCBkZWYgdXBkYXRlKHRlc3RzLCAqbG9ncywgKiprd2FyZ3MpOgogICAgICAgICB1cGRh
dGVyLnVwZGF0ZV9mcm9tX2xvZyhsb2cpCiAKICAgICB1cGRhdGVfcHJvcGVydGllcyA9IChbImRl
YnVnIiwgIm9zIiwgInZlcnNpb24iLCAicHJvY2Vzc29yIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgeyJvcyI6IFsidmVyc2lvbiJdLCAicHJvY2Vzc29yIjogImJpdHMifSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJpdHMi
XX0pCiAKICAgICBleHBlY3RlZF9kYXRhID0ge30KICAgICBtZXRhZGF0YS5sb2FkX2V4cGVjdGVk
ID0gbGFtYmRhIF8sIF9fLCB0ZXN0X3BhdGgsICphcmdzOiBleHBlY3RlZF9kYXRhLmdldCh0ZXN0
X3BhdGgpCiAgICAgZm9yIHRlc3RfcGF0aCwgdGVzdF9pZHMsIHRlc3RfdHlwZSwgbWFuaWZlc3Rf
c3RyIGluIHRlc3RzOgorICAgICAgICB0ZXN0X3BhdGggPSB1dGlscy50b19vc19wYXRoKHRlc3Rf
cGF0aCkKICAgICAgICAgZXhwZWN0ZWRfZGF0YVt0ZXN0X3BhdGhdID0gbWFuaWZlc3R1cGRhdGUu
Y29tcGlsZShCeXRlc0lPKG1hbmlmZXN0X3N0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiwKQEAgLTEw
OSw3ICsxMTEsNyBAQCBkZWYgY3JlYXRlX2xvZyhlbnRyaWVzKToKICAgICAgICAgICAgIGdldGF0
dHIobG9nZ2VyLCBhY3Rpb24pKCoqa3dhcmdzKQogICAgICAgICBsb2dnZXIucmVtb3ZlX2hhbmRs
ZXIoaGFuZGxlcikKICAgICBlbHNlOgotICAgICAgICBqc29uLmR1bXAoZW50cmllcywgZGF0YSkK
KyAgICAgICAgZGF0YS53cml0ZShqc29uLmR1bXBzKGVudHJpZXMpLmVuY29kZSgpKQogICAgIGRh
dGEuc2VlaygwKQogICAgIHJldHVybiBkYXRhCiAKQEAgLTEzMywxMSArMTM1LDkgQEAgZGVmIGNy
ZWF0ZV90ZXN0X21hbmlmZXN0KHRlc3RzLCB1cmxfYmFzZT0iLyIpOgogICAgIHJldHVybiBtCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlXzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAg
ICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApA
QCAtMTU1LDExICsxNTUsOSBAQCBkZWYgdGVzdF91cGRhdGVfMCgpOgogICAgIGFzc2VydCB1cGRh
dGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlXzEoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0
ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4
cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTE3OCwxMSArMTc2LDkgQEAgZGVmIHRlc3RfdXBkYXRl
XzEoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVu
WzBdLmdldCgiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVf
a25vd25faW50ZXJtaXR0ZW50XzEoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0K
KyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBQ
QVNTIiIiKV0KIApAQCAtMjE5LDExICsyMTUsOSBAQCBkZWYgdGVzdF91cGRhdGVfa25vd25faW50
ZXJtaXR0ZW50XzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0g
WyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9
PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBv
cnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1pdHRlbnRfMigpOgogICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAg
ICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQog
ICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFBBU1MiIiIpXQogCkBAIC0yNDQsMTEgKzIzOCw5IEBA
IGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1pdHRlbnRfMigpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZXhpc3Rpbmdfa25vd25f
aW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAg
ICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZB
SUxdIiIiKV0KIApAQCAtMjg3LDExICsyNzksOSBAQCBkZWYgdGVzdF91cGRhdGVfZXhpc3Rpbmdf
a25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2lu
Zm8pID09IFsiUEFTUyIsICJFUlJPUiIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVtb3ZlX3ByZXZpb3Vz
X2ludGVybWl0dGVudCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0
X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAg
ICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBG
QUlMXSIiIildCiAKQEAgLTMzNSw4ICszMjUsNiBAQCBkZWYgdGVzdF91cGRhdGVfcmVtb3ZlX3By
ZXZpb3VzX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9p
bmZvKSA9PSBbIlBBU1MiLCAiRVJST1IiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9uZXdfdGVzdF93aXRoX2ludGVybWl0
dGVudCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTM3NCw4ICszNjIsNiBAQCBkZWYgdGVzdF91cGRhdGVf
bmV3X3Rlc3Rfd2l0aF9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVs
dF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0
YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leHBlY3RlZF90aWVfcmVz
b2x1dGlvbigpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTQwMywxMSArMzg5LDkgQEAgZGVmIHRlc3RfdXBk
YXRlX2V4cGVjdGVkX3RpZV9yZXNvbHV0aW9uKCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1
bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3Rl
ZCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXSIiIildCiAK
QEAgLTQ0NiwxMCArNDMwLDggQEAgZGVmIHRlc3RfdXBkYXRlX3Jlb3JkZXJfZXhwZWN0ZWQoKToK
ICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJGQUlMIiwgIlBBU1Mi
XQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9hbmRfcHJlc2VydmVfdW5jaGFuZ2VkX2V4cGVjdGVkX2ludGVybWl0dGVudCgp
OgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJu
ZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09
ICJhbmRyb2lkIjogW1BBU1MsIEZBSUxdCkBAIC00ODksMTEgKzQ3MSw5IEBAIGRlZiB0ZXN0X3Vw
ZGF0ZV9hbmRfcHJlc2VydmVfdW5jaGFuZ2VkX2V4cGVjdGVkX2ludGVybWl0dGVudCgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiUEFTUyIKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfdGVz
dF93aXRoX2ludGVybWl0dGVudF90b19vbmVfZXhwZWN0ZWRfc3RhdHVzKCk6CiAgICAgdGVzdHMg
PSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAg
ICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0
ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KIApAQCAtNTE0LDEwICs0OTQs
OCBAQCBkZWYgdGVzdF91cGRhdGVfdGVzdF93aXRoX2ludGVybWl0dGVudF90b19vbmVfZXhwZWN0
ZWRfc3RhdHVzKCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJF
UlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgotICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJhbmRyb2lkIjog
W1BBU1MsIEZBSUxdIiIiKV0KQEAgLTU0OSwxMCArNTI3LDggQEAgZGVmIHRlc3RfdXBkYXRlX2lu
dGVybWl0dGVudF93aXRoX2NvbmRpdGlvbnMoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2lu
Zm9fMSkgPT0gWyJQQVNTIiwgIlRJTUVPVVQiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2FuZF9yZW1vdmVf
aW50ZXJtaXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5o
dG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJhbmRyb2lkIjogW1BBU1MsIEZBSUxdIiIi
KV0KQEAgLTU4NCwxMSArNTYwLDkgQEAgZGVmIHRlc3RfdXBkYXRlX2FuZF9yZW1vdmVfaW50ZXJt
aXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18x
KSA9PSBbIlBBU1MiLCAiVElNRU9VVCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsKCk6CiAg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5o
dG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBbRkFJ
TCwgVElNRU9VVF0KQEAgLTYyNCwxMSArNTk4LDkgQEAgZGVmIHRlc3RfdXBkYXRlX2ludGVybWl0
dGVudF9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJG
QUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRl
ZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbF9yZW1vdmUoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VULCBQ
QVNTXQpAQCAtNjc1LDExICs2NDcsOSBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1
bGxfcmVtb3ZlKCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJG
QUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRl
ZiB0ZXN0X2Z1bGxfdXBkYXRlKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwg
W3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisg
ICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAg
ICAgIGlmIG9zID09ICJtYWMiOiBbRkFJTCwgVElNRU9VVF0KQEAgLTcxNSwxMSArNjg1LDkgQEAg
ZGVmIHRlc3RfZnVsbF91cGRhdGUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5f
aW5mbykgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9y
dCBweTMiKQogZGVmIHRlc3RfZnVsbF9vcnBoYW4oKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0
ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4
cGVjdGVkOiBGQUlMCiAgICAgW3N1YnN1YiB0ZXN0XQpAQCAtNzQ4LDExICs3MTYsOSBAQCBkZWYg
dGVzdF9mdWxsX29ycGhhbigpOgogICAgIGFzc2VydCBsZW4obmV3X21hbmlmZXN0LmdldF90ZXN0
KHRlc3RfaWQpLmNoaWxkcmVuKSA9PSAxCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3Jlb3JkZXJfZXhwZWN0ZWRfZnVsbF9j
b25kaXRpb25zKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKICAgICAgIGlmIG9z
ID09ICJtYWMiOiBbRkFJTCwgVElNRU9VVF0KQEAgLTgwOSwxMSArNzc1LDkgQEAgZGVmIHRlc3Rf
dXBkYXRlX3Jlb3JkZXJfZXhwZWN0ZWRfZnVsbF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBl
Y3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9za2lwXzAoKToK
ICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0
Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtODI5LDEwICs3
OTMsOCBAQCBkZWYgdGVzdF9za2lwXzAoKToKICAgICBhc3NlcnQgbm90IHVwZGF0ZWQKIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9uZXdf
c3VidGVzdCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtODU0LDEwICs4MTYsOCBAQCBkZWYgdGVz
dF9uZXdfc3VidGVzdCgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9p
ZCkuY2hpbGRyZW5bMV0uZ2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlM
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9tdWx0aXBsZV8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3Qu
aHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04OTMsMTAgKzg1
Myw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8wKCk6CiAgICAgICAgICJleHBlY3RlZCIs
IHsiZGVidWciOiBGYWxzZSwgIm9zIjogImxpbnV4In0pID09ICJUSU1FT1VUIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9t
dWx0aXBsZV8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVz
dDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC05MzcsMTAgKzg5NSw4IEBAIGRlZiB0
ZXN0X3VwZGF0ZV9tdWx0aXBsZV8xKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzMp
ID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkz
IikKIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8yKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3Rv
L3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC05
NzcsMTAgKzkzMyw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8yKCk6CiAgICAgICAgICJl
eHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8zKCk6
Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rl
c3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhw
ZWN0ZWQ6CiAgICAgICBpZiBkZWJ1ZzogRkFJTApAQCAtMTAxOSwxMCArOTczLDggQEAgZGVmIHRl
c3RfdXBkYXRlX211bHRpcGxlXzMoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikg
PT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9leGlzdGluZygpOgotICAgIHRlc3RzID0gWygi
cGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRt
XQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJu
ZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYg
ZGVidWc6IFRJTUVPVVQKQEAgLTEwNjEsOCArMTAxMyw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pZ25v
cmVfZXhpc3RpbmcoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIk5PVFJV
TiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYg
dGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIE5vbmUpXQogCkBAIC0xMDg1LDEwICsxMDM1LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0KCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9p
bmZvXzEpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9
PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBv
cnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9kdXBsaWNhdGUoKToKLSAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgog
W3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTA3LDEwICsxMDU1LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5f
aW5mb18xKSA9PSAiRVJST1IiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0ZW50KCk6Ci0gICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAi
IiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTEy
OSwxMCArMTA3NSw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9kaXNhYmxlX2ludGVybWl0dGVudCgpOgog
ICAgICAgICAiZGlzYWJsZWQiLCBydW5faW5mb18xKSA9PSAiU29tZSBtZXNzYWdlIgogCiAKLUBw
eXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0
ZV9zdGFiaWxpdHlfY29uZGl0aW9uYWxfaW5zdGFiaWxpdHkoKToKLSAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgog
W3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTY1LDEwICsxMTA5LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX3N0YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgog
ICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZnVsbCgp
OgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJu
ZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4
cGVjdGVkOgogICAgICAgaWYgZGVidWc6IFRJTUVPVVQKQEAgLTEyMTcsMTAgKzExNTksOCBAQCBk
ZWYgdGVzdF91cGRhdGVfZnVsbCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9
PSAiRVJST1IiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2Z1bGxfdW5rbm93bigpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgcmVsZWFz
ZV9vcl9iZXRhOiBFUlJPUgpAQCAtMTI2MCwxMSArMTIwMCwyOSBAQCBkZWYgdGVzdF91cGRhdGVf
ZnVsbF91bmtub3duKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJFUlJP
UiIKIAogCitkZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duX21pc3NpbmcoKToKKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dCisgIFtzdWJ0ZXN0X2RlbGV0ZWRdCisgICAgZXhwZWN0ZWQ6CisgICAgICBpZiBy
ZWxlYXNlX29yX2JldGE6IEVSUk9SCisgICAgICBGQUlMCisiIiIpXQorCisgICAgbG9nXzAgPSBz
dWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MifSks
CisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldLAor
ICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsiZGVidWciOiBGYWxzZSwgInJlbGVhc2Vf
b3JfYmV0YSI6IEZhbHNlfSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBm
dWxsX3VwZGF0ZT1UcnVlKQorICAgIGFzc2VydCBsZW4odXBkYXRlZCkgPT0gMAorCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9k
ZWZhdWx0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFd
CiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogRkFJTApAQCAtMTI5NCwxMCAr
MTI1Miw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9kZWZhdWx0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5p
ZmVzdC5pc19lbXB0eQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAi
MyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQg
cHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9kZWZhdWx0XzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIgogW3Rl
c3QuaHRtXQogICBleHBlY3RlZDoKICAgICBpZiBvcyA9PSAibWFjIjogVElNRU9VVApAQCAtMTMy
NiwxMCArMTI4Miw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9kZWZhdWx0XzEoKToKICAgICAgICAgImV4
cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMigpOgotICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
IiIiCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBiIiIiCiBbdGVzdC5odG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMi
OiBUSU1FT1VUCkBAIC0xMzU4LDEwICsxMzEyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRf
MigpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiVElNRU9VVCIKIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfYXNzZXJ0aW9uX2NvdW50XzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5o
dG1dCiAgIG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3NlcnRzOiAyCiAiIiIpXQpAQCAtMTM4Miwx
MCArMTMzNCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMCgpOgogICAgIGFz
c2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KCJtaW4tYXNzZXJ0cyIpID09
ICIyIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRl
ZiB0ZXN0X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
YiIiIlt0ZXN0Lmh0bV0KICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIild
CkBAIC0xNDA2LDEwICsxMzU2LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8x
KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5oYXNfa2V5KCJt
aW4tYXNzZXJ0cyIpIGlzIEZhbHNlCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8yKCk6Ci0gICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAi
IiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4t
YXNzZXJ0czogMgogIiIiKV0KQEAgLTE0MjYsMTAgKzEzNzQsOCBAQCBkZWYgdGVzdF91cGRhdGVf
YXNzZXJ0aW9uX2NvdW50XzIoKToKICAgICBhc3NlcnQgbm90IHVwZGF0ZWQKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNz
ZXJ0aW9uX2NvdW50XzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAg
IG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3NlcnRzOiAyCiAiIiIpXQpAQCAtMTQ2MCwxMCArMTQw
Niw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfMygpOgogICAgIGFzc2VydCBu
ZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KCJtaW4tYXNzZXJ0cyIpID09ICIyIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9hc3NlcnRpb25fY291bnRfNCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXSIiIildCisgICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBi
IiIiW3Rlc3QuaHRtXSIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0
IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAogICAgICAgICAgICAgICAgICAgICAgICAoImFzc2VydGlv
bl9jb3VudCIsIHsidGVzdCI6IHRlc3RfaWQsCkBAIC0xNDkxLDExICsxNDM1LDkgQEAgZGVmIHRl
c3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF80KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXRfdGVzdCh0ZXN0X2lkKS5oYXNfa2V5KCJtaW4tYXNzZXJ0cyIpIGlzIEZhbHNlCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRl
X2xzYW5fMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rp
cl9pZF0sIE5vbmUsICIiKV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGly
X18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoImxz
YW5fbGVhayIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZnJhbWVzIjogWyJmb28iLCAiYmFyIl19KV0pCkBAIC0xNTA4LDExICsx
NDUwLDkgQEAgZGVmIHRlc3RfdXBkYXRlX2xzYW5fMCgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZl
c3QuZ2V0KCJsc2FuLWFsbG93ZWQiKSA9PSBbImZvbyJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWls
KHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFk
YXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xzYW5fMSgpOgotICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
IiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIi
IgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJu
ZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBO
b25lLCBiIiIiCiBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVf
bG9nKFsoImxzYW5fbGVhayIsIHsic2NvcGUiOiAicGF0aC90by8iLApAQCAtMTUyOCwxMyArMTQ2
OCwxMSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKV0KICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8yKCk6
Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL19fZGlyX18iLCBbInBhdGgvX19kaXJfXyJd
LCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL19fZGlyX18iLCBbInBh
dGgvX19kaXJfXyJdLCBOb25lLCBiIiIiCiBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKLSAgICAg
ICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIildCisgICAgICAg
ICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiKV0KIAogICAgIGxv
Z18wID0gc3VpdGVfbG9nKFsoImxzYW5fbGVhayIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogWyJmb28iLCAiYmFy
Il0sCkBAIC0xNTUwLDExICsxNDg4LDkgQEAgbHNhbi1hbGxvd2VkOiBbZm9vXSIiIiksCiAgICAg
YXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxzYW4tYWxsb3dlZCIpID09IFsiYmF6Il0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfbHNhbl8zKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBb
ZGlyX2lkXSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19k
aXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygi
bHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSwKQEAgLTE1NzIsMTEg
KzE1MDgsOSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8zKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5p
ZmVzdC5nZXQoImxzYW4tYWxsb3dlZCIpID09IFsiYmF6IiwgImZvbyJdCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJl
cG9ydF8wKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAi
dGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAg
IGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAg
LTE1OTQsMTEgKzE1MjgsOSBAQCBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0XzAoKToKICAgICBh
c3NlcnQgdXBkYXRlZFswXVsxXS5pc19lbXB0eQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgotICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
IiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIi
KV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgYiIiKV0KIAogICAgIGxvZyA9IHsicnVuX2luZm8iOiBkZWZhdWx0X3J1bl9pbmZvLmNv
cHkoKSwKICAgICAgICAgICAgInJlc3VsdHMiOiBbXSwKQEAgLTE2MTEsMTEgKzE1NDMsOSBAQCBk
ZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0XzEoKToKICAgICBhc3NlcnQgdXBkYXRlZFswXVsxXS5n
ZXQoImxzYW4tYWxsb3dlZCIpID09IFsiYmF6Il0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8wKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwg
IiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRd
LCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190b3RhbCIs
IHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjMwLDExICsxNTYwLDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMCgpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
KCJsZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5dGVzdC5tYXJr
LnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249
Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90
YWxfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9p
ZF0sIE5vbmUsICIiKV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18i
LCBbZGlyX2lkXSwgTm9uZSwgYiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxl
YWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwcm9jZXNzIjogImRlZmF1bHQiLApAQCAtMTY0NiwxMSArMTU3
NCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzEoKToKICAgICBhc3NlcnQgbm90IHVw
ZGF0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8yKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJw
YXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsIGIiIiIKIGxlYWstdG90YWw6
IDExMCIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJz
Y29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNjYzLDExICsxNTg5LDkgQEAgbGVhay10b3RhbDogMTEw
IiIiKV0KICAgICBhc3NlcnQgbm90IHVwZGF0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8zKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwg
IiIiCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0s
IE5vbmUsIGIiIiIKIGxlYWstdG90YWw6IDEwMCIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xv
ZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNjgzLDExICsx
NjA3LDkgQEAgbGVhay10b3RhbDogMTAwIiIiKV0KICAgICBhc3NlcnQgbmV3X21hbmlmZXN0Lmdl
dCgibGVhay10aHJlc2hvbGQiKSA9PSBbJ2RlZmF1bHQ6NTEyMDAnXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3Rv
dGFsXzQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJf
aWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18i
LCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTEwIiIiKV0KIAogICAgIGxvZ18w
ID0gc3VpdGVfbG9nKFsKQEAgLTE3MTYsOCArMTYzOCw2IEBAIGNsYXNzIFVwZGF0ZVJ1bm5lcihT
dGVwUnVubmVyKToKICAgICBzdGVwcyA9IFtUZXN0U3RlcF0KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idXBk
YXRlLnN0YXRlIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3BpY2tsZSgp
OgogICAgIGxvZ2dlciA9IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigiZXhwZWN0ZWRf
dGVzdCIpCiAgICAgYXJncyA9IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0
X3dwdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CmluZGV4IDli
YjNlMWZkMzRlMzdjNDQzMGY3NTJiODdlNGJiNGUzYmZhN2Y5NTkuLmRiY2NkOTBlMzM5NTgwYThk
NWZhMTAwNWJlMDQzNDA5NWM0NjgyNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3dwdHRlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0dGVzdC5weQpA
QCAtMSwzNSArMSwzNCBAQAotaW1wb3J0IHB5dGVzdAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBv
cnQgQnl0ZXNJTwogZnJvbSBtb2NrIGltcG9ydCBNb2NrCiAKIGZyb20gbWFuaWZlc3QgaW1wb3J0
IG1hbmlmZXN0IGFzIHdwdG1hbmlmZXN0Ci1mcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3Ro
YXJuZXNzVGVzdAorZnJvbSBtYW5pZmVzdC5pdGVtIGltcG9ydCBUZXN0aGFybmVzc1Rlc3QsIFJl
ZlRlc3QKK2Zyb20gbWFuaWZlc3QudXRpbHMgaW1wb3J0IHRvX29zX3BhdGgKIGZyb20gLi4gaW1w
b3J0IG1hbmlmZXN0ZXhwZWN0ZWQsIHdwdHRlc3QKIAotZGlyX2luaV8wID0gIiIiXAorZGlyX2lu
aV8wID0gYiIiIlwKIHByZWZzOiBbYTpiXQogIiIiCiAKLWRpcl9pbmlfMSA9ICIiIlwKK2Rpcl9p
bmlfMSA9IGIiIiJcCiBwcmVmczogW0BSZXNldCwgYjpjXQogbWF4LWFzc2VydHM6IDIKIG1pbi1h
c3NlcnRzOiAxCiB0YWdzOiBbYiwgY10KICIiIgogCi1kaXJfaW5pXzIgPSAiIiJcCitkaXJfaW5p
XzIgPSBiIiIiXAogbHNhbi1tYXgtc3RhY2stZGVwdGg6IDQyCiAiIiIKIAotdGVzdF8wID0gIiIi
XAordGVzdF8wID0gYiIiIlwKIFswLmh0bWxdCiAgIHByZWZzOiBbYzpkXQogICBtYXgtYXNzZXJ0
czogMwogICB0YWdzOiBbYSwgQFJlc2V0XQogIiIiCiAKLXRlc3RfMSA9ICIiIlwKK3Rlc3RfMSA9
IGIiIiJcCiBbMS5odG1sXQogICBwcmVmczoKICAgICBpZiBvcyA9PSAnd2luJzogW2E6YiwgYzpk
XQpAQCAtMzcsMTIgKzM2LDEyIEBAIHRlc3RfMSA9ICIiIlwKICAgICBpZiBvcyA9PSAnd2luJzog
RkFJTAogIiIiCiAKLXRlc3RfMiA9ICIiIlwKK3Rlc3RfMiA9IGIiIiJcCiBbMi5odG1sXQogICBs
c2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0XzMgPSAiIiJcCit0ZXN0XzMgPSBi
IiIiXAogWzMuaHRtbF0KICAgW3N1YnRlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0K
QEAgLTU0LDMyICs1MywzMiBAQCB0ZXN0XzMgPSAiIiJcCiAgICAgZXhwZWN0ZWQ6IEZBSUwKICIi
IgogCi10ZXN0XzQgPSAiIiJcCit0ZXN0XzQgPSBiIiIiXAogWzQuaHRtbF0KICAgZXhwZWN0ZWQ6
IEZBSUwKICIiIgogCi10ZXN0XzUgPSAiIiJcCit0ZXN0XzUgPSBiIiIiXAogWzUuaHRtbF0KICIi
IgogCi10ZXN0XzYgPSAiIiJcCit0ZXN0XzYgPSBiIiIiXAogWzYuaHRtbF0KICAgZXhwZWN0ZWQ6
IFtPSywgRkFJTF0KICIiIgogCi10ZXN0XzcgPSAiIiJcCit0ZXN0XzcgPSBiIiIiXAogWzcuaHRt
bF0KICAgYmxpbmtfZXhwZWN0X2FueV9zdWJ0ZXN0X3N0YXR1czogeWVwCiAiIiIKIAotdGVzdF9m
dXp6eSA9ICIiIlwKK3Rlc3RfZnV6enkgPSBiIiIiXAogW2Z1enp5Lmh0bWxdCiAgIGZ1enp5OiBm
dXp6eS1yZWYuaHRtbDoxOzIwMAogIiIiCiAKIAotdGVzdGhhcm5lc3NfdGVzdCA9ICIiIjxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KK3Rlc3RoYXJuZXNz
X3Rlc3QgPSBiIiIiPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PiIiIgogCiAKQEAgLTExNyw4ICsxMTYsNiBAQCBkZWYgbWFrZV90ZXN0X29iamVjdCh0ZXN0
X25hbWUsCiAgICAgcmV0dXJuIHdwdHRlc3QuZnJvbV9tYW5pZmVzdCh0ZXN0cywgdGVzdCwgaW5o
ZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YS5nZXRfdGVzdCh0ZXN0LmlkKSkKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRh
X2luaGVyaXQoKToKICAgICBpdGVtcyA9IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEv
YiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAxMCldCiAgICAgaW5oZXJpdF9tZXRhZGF0YSA9IFsKQEAg
LTEzNiw4ICsxMzMsNiBAQCBkZWYgdGVzdF9tZXRhZGF0YV9pbmhlcml0KCk6CiAgICAgYXNzZXJ0
IHRlc3Rfb2JqLnRhZ3MgPT0geyJhIiwgImRpcjphIn0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMv
dGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2NvbmRpdGlvbmFsKCk6CiAgICAgaXRl
bXMgPSBbKCJ0ZXN0IiwgImEiLCAxMCksICgidGVzdCIsICJhL2IiLCAxMCksICgidGVzdCIsICJj
IiwgMTApXQogCkBAIC0xNDcsOCArMTQyLDYgQEAgZGVmIHRlc3RfY29uZGl0aW9uYWwoKToKICAg
ICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
Ynl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2xzYW5fc3Rh
Y2tfZGVwdGgoKToKICAgICBpdGVtcyA9IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEv
YiIsIDEwKV0KIApAQCAtMTcyLDggKzE2NSw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2xzYW5fc3Rh
Y2tfZGVwdGgoKToKICAgICBhc3NlcnQgdGVzdF9vYmoubHNhbl9tYXhfc3RhY2tfZGVwdGggPT0g
NDIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0
ZXN0X3N1YnRlc3RzKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfMywg
ImEvMy5odG1sIiwgMywgKCJ0ZXN0IiwgImEiLCA0KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0
IHRlc3Rfb2JqLmV4cGVjdGVkKCJzdWJ0ZXN0MSIpID09ICJQQVNTIgpAQCAtMTg0LDU3ICsxNzUs
NTAgQEAgZGVmIHRlc3Rfc3VidGVzdHMoKToKICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50
ZXJtaXR0ZW50KCJzdWJ0ZXN0MyIpID09IFtdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQg
Y29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVzdF9leHBlY3RlZF9mYWlsKCk6CiAgICAgdGVzdF9v
YmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNCwgImEvNC5odG1sIiwgNCwgKCJ0ZXN0IiwgImEi
LCA1KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIkZB
SUwiCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVybWl0dGVudCgpID09IFtdCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVzdF9ub19l
eHBlY3RlZCgpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0XzUsICJhLzUu
aHRtbCIsIDUsICgidGVzdCIsICJhIiwgNiksIE5vbmUsIEZhbHNlKQogICAgIGFzc2VydCB0ZXN0
X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJt
aXR0ZW50KCkgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4g
cHkzIikKIGRlZiB0ZXN0X2tub3duX2ludGVybWl0dGVudCgpOgogICAgIHRlc3Rfb2JqID0gbWFr
ZV90ZXN0X29iamVjdCh0ZXN0XzYsICJhLzYuaHRtbCIsIDYsICgidGVzdCIsICJhIiwgNyksIE5v
bmUsIEZhbHNlKQogICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBh
c3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0gWyJGQUlMIl0KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdF9h
bnlfc3VidGVzdF9zdGF0dXMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVz
dF83LCAiYS83Lmh0bWwiLCA3LCAoInRlc3QiLCAiYSIsIDgpLCBOb25lLCBGYWxzZSkKICAgICBh
c3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiT0siCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4
cGVjdF9hbnlfc3VidGVzdF9zdGF0dXMoKSBpcyBUcnVlCiAKIAotQHB5dGVzdC5tYXJrLnhmYWls
KHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVz
L3RleHQgY29uZnVzaW9uIGluIHB5MyIpCiBkZWYgdGVzdF9tZXRhZGF0YV9mdXp6eSgpOgotICAg
IG1hbmlmZXN0X2RhdGEgPSB7Ci0gICAgICAgICJpdGVtcyI6IHsicmVmdGVzdCI6IHsiYS9mdXp6
eS5odG1sIjogW1siYS9mdXp6eS5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtbIi9hL2Z1enp5LXJlZi5odG1sIiwgIj09Il1dLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJmdXp6eSI6IFtbWyIv
YS9mdXp6eS5odG1sIiwgJy9hL2Z1enp5LXJlZi5odG1sJywgJz09J10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzIsIDNdLCBb
MTAsIDE1XV1dXX1dXX19LAotICAgICAgICAicGF0aHMiOiB7ImEvZnV6enkuaHRtbCI6IFsiMCIq
NDAsICJyZWZ0ZXN0Il19LAotICAgICAgICAidmVyc2lvbiI6IDcsCi0gICAgICAgICJ1cmxfYmFz
ZSI6ICIvIn0KLSAgICBtYW5pZmVzdCA9IHdwdG1hbmlmZXN0Lk1hbmlmZXN0LmZyb21fanNvbigi
LiIsIG1hbmlmZXN0X2RhdGEpCisgICAgaXRlbSA9IFJlZlRlc3QoIi4iLCAiYS9mdXp6eS5odG1s
IiwgIi8iLCAiYS9mdXp6eS5odG1sIiwKKyAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPVtb
Ii9hL2Z1enp5LXJlZi5odG1sIiwgIj09Il1dLAorICAgICAgICAgICAgICAgICAgIGZ1enp5PVtb
WyIvYS9mdXp6eS5odG1sIiwgJy9hL2Z1enp5LXJlZi5odG1sJywgJz09J10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbWzIsIDNdLCBbMTAsIDE1XV1dXSkKKyAgICBzID0gTW9jayhyZWxf
cGF0aD0iYS9mdXp6eS5odG1sIiwgcmVsX3BhdGhfcGFydHM9KCJhIiwgImZ1enp5Lmh0bWwiKSwg
aGFzaD0iMCIqNDApCisgICAgcy5tYW5pZmVzdF9pdGVtcyA9IE1vY2socmV0dXJuX3ZhbHVlPShp
dGVtLml0ZW1fdHlwZSwgW2l0ZW1dKSkKKworCisgICAgbWFuaWZlc3QgPSB3cHRtYW5pZmVzdC5N
YW5pZmVzdCgpCisKKyAgICBhc3NlcnQgbWFuaWZlc3QudXBkYXRlKFsocywgVHJ1ZSldKSBpcyBU
cnVlCisKICAgICB0ZXN0X21ldGFkYXRhID0gbWFuaWZlc3RleHBlY3RlZC5zdGF0aWMuY29tcGls
ZShCeXRlc0lPKHRlc3RfZnV6enkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFfY2xzX2dldHRlcj1tYW5pZmVzdGV4cGVjdGVkLmRhdGFf
Y2xzX2dldHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X3BhdGg9ImEvZnV6enkuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX2Jhc2U9Ii8iKQogCi0gICAgdGVzdCA9
IG1hbmlmZXN0Lml0ZXJwYXRoKCJhL2Z1enp5Lmh0bWwiKS5uZXh0KCkKKyAgICB0ZXN0ID0gbmV4
dChtYW5pZmVzdC5pdGVycGF0aCh0b19vc19wYXRoKCJhL2Z1enp5Lmh0bWwiKSkpCiAgICAgdGVz
dF9vYmogPSB3cHR0ZXN0LmZyb21fbWFuaWZlc3QobWFuaWZlc3QsIHRlc3QsIFtdLCB0ZXN0X21l
dGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQogCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmZ1enp5ID09
IHsoJy9hL2Z1enp5Lmh0bWwnLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nKTogW1syLCAzXSwg
WzEwLCAxNV1dfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKaW5kZXggMjYyNjE4M2ZjODBkYmM3NWQz
ZDI4NWRlNzlhN2QzODZmNTNjZTZlMy4uNzhjZGE5YzJkNjU1ZjQyZDY4MTEzZjc5MTA3ZTI0YWU0
MTdhZmYzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBy
ZW1vdmVfbG9nZ2luZ19hcmdzKGFyZ3MpOgogCiAgICAgOnBhcmFtIGFyZ3M6IERpY3Rpb25hcnkg
b2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KICAgICAiIiIKLSAgICBmb3IgbmFtZSBpbiBhcmdz
LmtleXMoKToKKyAgICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYg
bmFtZS5zdGFydHN3aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Vw
ZGF0ZS9zdGF0ZS5weQppbmRleCA2NGRiZjExODA2MDRjZDhkZjdhNDY4ZTAzNjQ0N2Y5NWI4MDM3
MWIwLi5mOGE4MzUyNWNiZDQ3MDZiZGZiYzk5YTUxOGQyYmFjMTIzZDM0ZTk2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL3N0YXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUv
c3RhdGUucHkKQEAgLTExLDcgKzExLDcgQEAgY2xhc3MgQmFzZVN0YXRlKG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gcnYKIAogICAgICAgICBsb2dnZXIuZGVidWcoIk5vIGV4aXN0aW5nIHN0
YXRlIGZvdW5kIikKLSAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscywgbG9nZ2VyKQor
ICAgICAgICByZXR1cm4gc3VwZXIoQmFzZVN0YXRlLCBjbHMpLl9fbmV3X18oY2xzKQogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlcik6CiAgICAgICAgICIiIk9iamVjdCBjb250YWluaW5n
IHN0YXRlIHZhcmlhYmxlcyBjcmVhdGVkIHdoZW4gcnVubmluZyBTdGVwcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5w
eQppbmRleCAwZDc1YTEyMzJmYzBjYmE5ZmJkNmU4YTMzNjNhZGVhMDQ3NWRkNDM2Li4wYTQxZjcw
NmViYzM3NjA3MjlkOWJhNTUzMDc2ZmUwZDdlMGI0MGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdXBkYXRlL3N5bmMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5CkBAIC0x
MCwzNyArMTAsNiBAQCBmcm9tIC50cmVlIGltcG9ydCBDb21taXQKIAogaGVyZSA9IG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSkKIAotYnNkX2xpY2Vuc2UgPSAiIiJX
M0MgMy1jbGF1c2UgQlNEIExpY2Vuc2UKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6
Ci0KLSogUmVkaXN0cmlidXRpb25zIG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzCi0gIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotCi0qIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgb3JpZ2luYWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLQotKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBp
dHMgY29udHJpYnV0b3JzIG1heSBiZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCi1JUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKLUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQotTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLVNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1B
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQotUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0iIiIKLQogCiBk
ZWYgY29weV93cHRfdHJlZSh0cmVlLCBkZXN0LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25l
KToKICAgICAiIiJDb3B5IHRoZSB3b3JraW5nIGNvcHkgb2YgYSBUcmVlIHRvIGEgZGVzdGluYXRp
b24gZGlyZWN0b3J5LgpAQCAtODQsMTYgKzUzLDYgQEAgZGVmIGNvcHlfd3B0X3RyZWUodHJlZSwg
ZGVzdCwgZXhjbHVkZXM9Tm9uZSwgaW5jbHVkZXM9Tm9uZSk6CiAgICAgICAgIGRlc3RfcGF0aCA9
IG9zLnBhdGguam9pbihkZXN0LCBkZXN0aW5hdGlvbiwgb3MucGF0aC5zcGxpdChzb3VyY2UpWzFd
KQogICAgICAgICBzaHV0aWwuY29weTIoc291cmNlX3BhdGgsIGRlc3RfcGF0aCkKIAotICAgIGFk
ZF9saWNlbnNlKGRlc3QpCi0KLQotZGVmIGFkZF9saWNlbnNlKGRlc3QpOgotICAgICIiIldyaXRl
IHRoZSBic2QgbGljZW5zZSBzdHJpbmcgdG8gYSBMSUNFTlNFIGZpbGUuCi0KLSAgICA6cGFyYW0g
ZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHBsYWNlIHRoZSBMSUNFTlNFIGZpbGUuIiIiCi0g
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAiTElDRU5TRSIpLCAidyIpIGFzIGY6Ci0g
ICAgICAgIGYud3JpdGUoYnNkX2xpY2Vuc2UpCi0KIAogY2xhc3MgVXBkYXRlQ2hlY2tvdXQoU3Rl
cCk6CiAgICAgIiIiUHVsbCBjaGFuZ2VzIGZyb20gdXBzdHJlYW0gaW50byB0aGUgbG9jYWwgc3lu
YyB0cmVlLiIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CmluZGV4IDkwMDZkZjY3MTkzMzJhZTU5MmVlMzg2MTQ4
NWQ4MmMyMTI0MjNiNDguLmYzNjI3NzBmZjE2ZDMwZTQ0OWRlODUzZjY4NzQ2NzI5N2IwZWQwNzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdHJlZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdXBkYXRlL3RyZWUucHkKQEAgLTMsNiArMyw4IEBAIGltcG9ydCByZQogaW1wb3J0IHN1YnBy
b2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKwog
ZnJvbSAuLiBpbXBvcnQgdmNzCiBmcm9tIC4udmNzIGltcG9ydCBnaXQsIGhnCiAKQEAgLTE2LDcg
KzE4LDcgQEAgZGVmIGdldF91bmlxdWVfbmFtZShleGlzdGluZywgaW5pdGlhbCk6CiAgICAgOnBh
cmFtIGluaXRpYWw6IE5hbWUsIG9yIG5hbWUgcHJlZml4LCB0byB1c2UiIiIKICAgICBpZiBpbml0
aWFsIG5vdCBpbiBleGlzdGluZzoKICAgICAgICAgcmV0dXJuIGluaXRpYWwKLSAgICBmb3IgaSBp
biB4cmFuZ2UobGVuKGV4aXN0aW5nKSArIDEpOgorICAgIGZvciBpIGluIHJhbmdlKGxlbihleGlz
dGluZykgKyAxKToKICAgICAgICAgdGVzdCA9ICIlc18lcyIgJSAoaW5pdGlhbCwgaSArIDEpCiAg
ICAgICAgIGlmIHRlc3Qgbm90IGluIGV4aXN0aW5nOgogICAgICAgICAgICAgcmV0dXJuIHRlc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3VwZGF0ZS91cGRhdGUucHkKaW5kZXggOTYzMDJlZTI2N2U5MDVhYThhNDhhZjEyYjY1OTc4ZTAy
NWViZDQ5Mi4uODBlNTA5ZGQzODNiMzhlZjRhMzM3ZWYxMzA3NWY1ODgyNmNmODE4NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Vw
ZGF0ZS91cGRhdGUucHkKQEAgLTEsNiArMSw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAor
ZnJvbSBzaXggaW1wb3J0IGl0ZXJ2YWx1ZXMKKwogZnJvbSAubWV0YWRhdGEgaW1wb3J0IE1ldGFk
YXRhVXBkYXRlUnVubmVyCiBmcm9tIC5zeW5jIGltcG9ydCBTeW5jRnJvbVVwc3RyZWFtUnVubmVy
CiBmcm9tIC50cmVlIGltcG9ydCBHaXRUcmVlLCBIZ1RyZWUsIE5vVkNTVHJlZQpAQCAtMTA5LDcg
KzExMSw3IEBAIGNsYXNzIFJlbW92ZU9ic29sZXRlKFN0ZXApOgogICAgICAgICBzdGF0ZS50ZXN0
c19wYXRoID0gc3RhdGUucGF0aHNbIi8iXVsidGVzdHNfcGF0aCJdCiAgICAgICAgIHN0YXRlLm1l
dGFkYXRhX3BhdGggPSBzdGF0ZS5wYXRoc1siLyJdWyJtZXRhZGF0YV9wYXRoIl0KIAotICAgICAg
ICBmb3IgdXJsX3BhdGhzIGluIHBhdGhzLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAgZm9yIHVybF9w
YXRocyBpbiBpdGVydmFsdWVzKHBhdGhzKToKICAgICAgICAgICAgIHRlc3RzX3BhdGggPSB1cmxf
cGF0aHNbInRlc3RzX3BhdGgiXQogICAgICAgICAgICAgbWV0YWRhdGFfcGF0aCA9IHVybF9wYXRo
c1sibWV0YWRhdGFfcGF0aCJdCiAgICAgICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZp
bGVuYW1lcyBpbiBvcy53YWxrKG1ldGFkYXRhX3BhdGgpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCmluZGV4IGFi
MDZjNDFhZjk4ZjVjMmM4OGNiODllZTU4YmI3YWEyMzRlOTAyNDMuLmZhYWY4NmZlZDZhNjM4ZGRi
NTE4NDQ2N2E4ZTA3MDgyMzdhNDY5ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1w
b3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKQEAgLTIwLDEwICsyMCwx
MiBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leHBlY3RlZC5weQogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leHBlY3RlZHRyZWUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9pbnN0cnVtZW50cy5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdHVwZGF0
ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9tZXRhZGF0YS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNzLnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0ZHJpdmVyLWV4dHJhLmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd2ViZHJpdmVyX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93ZWJkcml2ZXJfc2VydmVyLnB5
CmluZGV4IDE2MmZmYWUzZmM5M2FlZWIyOWEyNTM1ZTgyOWFmNDViOWUxNWMxZjMuLjE4YmU2ODA2
MDc0ZGE4Njg1Y2QzOTI4NjE5NDU1ZWQyNzViZmU4ZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93ZWJkcml2ZXJfc2VydmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93ZWJkcml2ZXJfc2VydmVy
LnB5CkBAIC04LDYgKzgsOCBAQCBpbXBvcnQgdHJhY2ViYWNrCiAKIGltcG9ydCBtb3pwcm9jZXNz
CiAKK2Zyb20gLnByb2Nlc3MgaW1wb3J0IGNhc3RfZW52CisKIAogX19hbGxfXyA9IFsiU2VsZW5p
dW1TZXJ2ZXIiLCAiQ2hyb21lRHJpdmVyU2VydmVyIiwgIkNXVENocm9tZURyaXZlclNlcnZlciIs
CiAgICAgICAgICAgICJFZGdlQ2hyb21pdW1Ecml2ZXJTZXJ2ZXIiLCAiT3BlcmFEcml2ZXJTZXJ2
ZXIiLCAiR2Vja29Ecml2ZXJTZXJ2ZXIiLApAQCAtNTUsNyArNTcsNyBAQCBjbGFzcyBXZWJEcml2
ZXJTZXJ2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcHJvYyA9IG1venByb2Nlc3MuUHJvY2Vz
c0hhbmRsZXIoCiAgICAgICAgICAgICBzZWxmLl9jbWQsCiAgICAgICAgICAgICBwcm9jZXNzT3V0
cHV0TGluZT1zZWxmLm9uX291dHB1dCwKLSAgICAgICAgICAgIGVudj1zZWxmLmVudiwKKyAgICAg
ICAgICAgIGVudj1jYXN0X2VudihzZWxmLmVudiksCiAgICAgICAgICAgICBzdG9yZU91dHB1dD1G
YWxzZSkKIAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RhcnRpbmcgV2ViRHJpdmVyOiAl
cyIgJSAnICcuam9pbihzZWxmLl9jbWQpKQpAQCAtODIsMTQgKzg0LDEzIEBAIGNsYXNzIFdlYkRy
aXZlclNlcnZlcihvYmplY3QpOgogCiAgICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgog
ICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RvcHBpbmcgV2ViRHJpdmVyIikKLSAgICAgICAg
aWYgc2VsZi5pc19hbGl2ZToKKyAgICAgICAgaWYgc2VsZi5pc19hbGl2ZSgpOgogICAgICAgICAg
ICAga2lsbF9yZXN1bHQgPSBzZWxmLl9wcm9jLmtpbGwoKQogICAgICAgICAgICAgaWYgZm9yY2Ug
YW5kIGtpbGxfcmVzdWx0ICE9IDA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Mu
a2lsbCg5KQogICAgICAgICAgICAgcmV0dXJuIGtpbGxfcmVzdWx0Ci0gICAgICAgIHJldHVybiBu
b3Qgc2VsZi5pc19hbGl2ZQorICAgICAgICByZXR1cm4gbm90IHNlbGYuaXNfYWxpdmUoKQogCi0g
ICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAgICAgICByZXR1cm4gaGFz
YXR0cihzZWxmLl9wcm9jLCAicHJvYyIpIGFuZCBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lCiAK
QEAgLTE4NCw3ICsxODUsMTEgQEAgY2xhc3MgR2Vja29Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2Vy
dmVyKToKICAgICAgICAgICAgICAgICAgaG9zdD0iMTI3LjAuMC4xIiwgcG9ydD1Ob25lLCBhcmdz
PU5vbmUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBlbnZbIlJV
U1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAgICAgICAgV2ViRHJpdmVyU2VydmVyLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0PWhvc3QsIHBvcnQ9cG9ydCwgZW52PWVudiwgYXJncz1h
cmdzKQorICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5h
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3M9YXJncykKICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQgPSBtYXJp
b25ldHRlX3BvcnQKIAogICAgIGRlZiBtYWtlX2NvbW1hbmQoc2VsZik6CkBAIC0yMDksNyArMjE0
LDExIEBAIGNsYXNzIFNlcnZvRHJpdmVyU2VydmVyKFdlYkRyaXZlclNlcnZlcik6CiAgICAgICAg
ICAgICAgICAgIHBvcnQ9Tm9uZSwgYXJncz1Ob25lKToKICAgICAgICAgZW52ID0gb3MuZW52aXJv
bi5jb3B5KCkKICAgICAgICAgZW52WyJSVVNUX0JBQ0tUUkFDRSJdID0gIjEiCi0gICAgICAgIFdl
YkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgaG9zdD1ob3N0LCBw
b3J0PXBvcnQsIGVudj1lbnYsIGFyZ3M9YXJncykKKyAgICAgICAgV2ViRHJpdmVyU2VydmVyLl9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1w
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MpCiAgICAgICAgIHNl
bGYuYmluYXJ5X2FyZ3MgPSBiaW5hcnlfYXJncwogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxm
KToKQEAgLTI2NCw3ICsyNzMsNyBAQCBkZWYgd2FpdF9mb3Jfc2VydmljZShhZGRyLCB0aW1lb3V0
PTYwKToKICAgICAgICAgZXhjZXB0IHNvY2tldC50aW1lb3V0OgogICAgICAgICAgICAgcGFzcwog
ICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlWzBdICE9
IGVycm5vLkVDT05OUkVGVVNFRDoKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNP
Tk5SRUZVU0VEOgogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5l
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CmluZGV4IDkyM2JkYWE1NTg1N2U3
OTNlOGQ2ZThjNTg3MTY3MzYwYWVkNGFlOTQuLjk2MjI3YmI0NjkwNWUxNjhkNjkxZTM1MDk0NmRi
ZmJhNjgwOTgyNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKQEAgLTEsNCArMSw0IEBACi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0
IG9zCiBpbXBvcnQgc3lzCkBAIC0xNiw5ICsxNiw5IEBAIGRlZiBhYnNfcGF0aChwYXRoKToKIAog
CiBkZWYgdXJsX29yX3BhdGgocGF0aCk6Ci0gICAgaW1wb3J0IHVybHBhcnNlCisgICAgZnJvbSBz
aXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQogCi0gICAgcGFyc2VkID0gdXJs
cGFyc2UudXJscGFyc2UocGF0aCkKKyAgICBwYXJzZWQgPSB1cmxwYXJzZShwYXRoKQogICAgIGlm
IGxlbihwYXJzZWQuc2NoZW1lKSA+IDI6CiAgICAgICAgIHJldHVybiBwYXRoCiAgICAgZWxzZToK
QEAgLTM3LDcgKzM3LDcgQEAgZGVmIHJlcXVpcmVfYXJnKGt3YXJncywgbmFtZSwgdmFsdWVfZnVu
Yz1Ob25lKToKIGRlZiBjcmVhdGVfcGFyc2VyKHByb2R1Y3RfY2hvaWNlcz1Ob25lKToKICAgICBm
cm9tIG1vemxvZyBpbXBvcnQgY29tbWFuZGxpbmUKIAotICAgIGltcG9ydCBwcm9kdWN0cworICAg
IGZyb20gLiBpbXBvcnQgcHJvZHVjdHMKIAogICAgIGlmIHByb2R1Y3RfY2hvaWNlcyBpcyBOb25l
OgogICAgICAgICBjb25maWdfZGF0YSA9IGNvbmZpZy5sb2FkKCkKQEAgLTEzNyw2ICsxMzcsMTQg
QEAgc2NoZW1lIGhvc3QgYW5kIHBvcnQuIiIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJQYXRoIHRvIG1hbmlmZXN0IGxpc3RpbmcgdGVzdHMgdG8gaW5jbHVk
ZSIpCiAgICAgdGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtdGltZW91
dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlNraXAgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gdGltZSBvdXQiKQor
ICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1za2lwLWltcGxlbWVudGF0
aW9uLXN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0iYXBwZW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNl
cz1bIm5vdC1pbXBsZW1lbnRpbmciLCAiYmFja2xvZyIsICJpbXBsZW1lbnRpbmciXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGhh
dmUgdGhlIGdpdmVuIGltcGxlbWVudGF0aW9uIHN0YXR1cyIpCisgICAgIyBUT0RPOiBSZW1vdmUg
dGhpcyB3aGVuIFFVSUMgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIHRlc3Rfc2VsZWN0aW9u
X2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUtcXVpYyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9IkVuYWJsZSB0ZXN0cyB0aGF0IHJlcXVpcmUgUVVJQyBzZXJ2ZXIgKGRlZmF1bHQ6IGZhbHNl
KSIpCisKICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tdGFnIiwgYWN0
aW9uPSJhcHBlbmQiLCBkZXN0PSJ0YWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iTGFiZWxzIGFwcGxpZWQgdG8gdGVzdHMgdG8gaW5jbHVkZSBpbiB0aGUg
cnVuLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxhYmVs
cyBzdGFydGluZyBkaXI6IGFyZSBlcXVpdmFsZW50IHRvIHRvcC1sZXZlbCBkaXJlY3Rvcmllcy4i
KQpAQCAtMjEwLDEzICsyMTgsMTcgQEAgc2NoZW1lIGhvc3QgYW5kIHBvcnQuIiIiKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBjb25maWcgZmlsZSIpCiAgICAg
Y29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1pbnN0YWxsLWZvbnRzIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkFsbG93IHRoZSB3cHRydW5uZXIgdG8g
aW5zdGFsbCBmb250cyBvbiB5b3VyIHN5c3RlbSIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJJbnN0YWxsIGFkZGl0aW9uYWwgc3lzdGVtIGZvbnRzIG9uIHlvdXIgc3lzdGVt
IikKKyAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWluc3RhbGwtZm9udHMiLCBk
ZXN0PSJpbnN0YWxsX2ZvbnRzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJEbyBub3QgaW5zdGFsbCBhZGRpdGlvbmFsIHN5c3RlbSBm
b250cyBvbiB5b3VyIHN5c3RlbSIpCiAgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1m
b250LWRpciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPWFic19wYXRoLCBkZXN0PSJmb250X2RpciIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGxvY2FsIGZvbnQg
aW5zdGFsbGF0aW9uIGRpcmVjdG9yeSIsIGRlZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLWhlYWRsZXNzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biBicm93c2VyIGluIGhlYWRsZXNzIG1vZGUi
LCBkZWZhdWx0PU5vbmUpCiAgICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1oZWFk
bGVzcyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoZWFkbGVzcyIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBydW4gYnJvd3NlciBpbiBoZWFkbGVzcyBt
b2RlIikKKyAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RydW1lbnQtdG8tZmls
ZSIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
UGF0aCB0byB3cml0ZSBpbnN0cnVtZW50YXRpb24gbG9ncyB0byIpCiAKICAgICBidWlsZF90eXBl
ID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgIGJ1aWxkX3R5cGUu
YWRkX2FyZ3VtZW50KCItLWRlYnVnLWJ1aWxkIiwgZGVzdD0iZGVidWciLCBhY3Rpb249InN0b3Jl
X3RydWUiLApAQCAtMjU1LDEyICsyNjcsMjAgQEAgc2NoZW1lIGhvc3QgYW5kIHBvcnQuIiIiKQog
ICAgIGdlY2tvX2dyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgiR2Vja28tc3BlY2lm
aWMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVmcy1yb290IiwgZGVzdD0i
cHJlZnNfcm9vdCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPWFic19wYXRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIHRoZSBmb2xkZXIgY29udGFpbmluZyBicm93
c2VyIHByZWZzIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tcHJlbG9hZC1icm93
c2VyIiwgZGVzdD0icHJlbG9hZF9icm93c2VyIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxwPSJQcmVsb2FkIGEgZ2Vj
a28gaW5zdGFuY2UgZm9yIGZhc3RlciByZXN0YXJ0cyIpCisgICAgZ2Vja29fZ3JvdXAuYWRkX2Fy
Z3VtZW50KCItLW5vLXByZWxvYWQtYnJvd3NlciIsIGRlc3Q9InByZWxvYWRfYnJvd3NlciIsIGFj
dGlvbj0ic3RvcmVfZmFsc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PU5vbmUsIGhlbHA9IkRvbid0IHByZWxvYWQgYSBnZWNrbyBpbnN0YW5jZSBmb3IgZmFzdGVyIHJl
c3RhcnRzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZGlzYWJsZS1lMTBzIiwg
ZGVzdD0iZ2Vja29fZTEwcyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZWZhdWx0PVRydWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biB0ZXN0cyB3aXRob3V0IGVsZWN0
cm9seXNpcyBwcmVmZXJlbmNlcyIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWVu
YWJsZS13ZWJyZW5kZXIiLCBkZXN0PSJlbmFibGVfd2VicmVuZGVyIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJF
bmFibGUgdGhlIFdlYlJlbmRlciBjb21wb3NpdG9yIGluIEdlY2tvIChkZWZhdWx0cyB0byBkaXNh
YmxlZCkuIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8tZW5hYmxlLXdlYnJl
bmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRGlzYWJsZSB0aGUgV2ViUmVuZGVyIGNv
bXBvc2l0b3IgaW4gR2Vja28uIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5h
YmxlLWZpc3Npb24iLCBkZXN0PSJlbmFibGVfZmlzc2lvbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRW5hYmxl
IGZpc3Npb24gaW4gR2Vja28gKGRlZmF1bHRzIHRvIGRpc2FibGVkKS4iKQorICAgIGdlY2tvX2dy
b3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFibGUtZmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNz
aW9uIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9IkRpc2FibGUgZmlzc2lvbiBpbiBHZWNrby4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9h
cmd1bWVudCgiLS1zdGFja2ZpeC1kaXIiLCBkZXN0PSJzdGFja2ZpeF9kaXIiLCBhY3Rpb249InN0
b3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBkaXJlY3Rv
cnkgY29udGFpbmluZyBhc3NlcnRpb24gc3RhY2sgZml4aW5nIHNjcmlwdHMiKQogICAgIGdlY2tv
X2dyb3VwLmFkZF9hcmd1bWVudCgiLS1zZXRwcmVmIiwgZGVzdD0iZXh0cmFfcHJlZnMiLCBhY3Rp
b249J2FwcGVuZCcsCkBAIC01MzQsOSArNTU0LDYgQEAgZGVmIGNoZWNrX2FyZ3Moa3dhcmdzKToK
ICAgICAgICAga3dhcmdzWyJjZXJ0dXRpbF9iaW5hcnkiXSA9IHBhdGgKIAogICAgIGlmIGt3YXJn
c1snZXh0cmFfcHJlZnMnXToKLSAgICAgICAgIyBJZiBhIHNpbmdsZSBwcmVmIGlzIHBhc3NlZCBp
biBhcyBhIHN0cmluZywgbWFrZSBpdCBhIGxpc3QKLSAgICAgICAgaWYgdHlwZShrd2FyZ3NbJ2V4
dHJhX3ByZWZzJ10pIGluIChzdHIsIHVuaWNvZGUpOgotICAgICAgICAgICAga3dhcmdzWydleHRy
YV9wcmVmcyddID0gW2t3YXJnc1snZXh0cmFfcHJlZnMnXV0KICAgICAgICAgbWlzc2luZyA9IGFu
eSgnPScgbm90IGluIHByZWZhcmcgZm9yIHByZWZhcmcgaW4ga3dhcmdzWydleHRyYV9wcmVmcydd
KQogICAgICAgICBpZiBtaXNzaW5nOgogICAgICAgICAgICAgcHJpbnQoIlByZWZlcmVuY2VzIHZp
YSAtLXNldHByZWYgbXVzdCBiZSBpbiBrZXk9dmFsdWUgZm9ybWF0IiwgZmlsZT1zeXMuc3RkZXJy
KQpAQCAtNTUzLDYgKzU3MCwxMCBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAgIGlmIGt3
YXJnc1siZW5hYmxlX3dlYnJlbmRlciJdIGlzIE5vbmU6CiAgICAgICAgIGt3YXJnc1siZW5hYmxl
X3dlYnJlbmRlciJdID0gRmFsc2UKIAorICAgIGlmIGt3YXJnc1sicHJlbG9hZF9icm93c2VyIl0g
aXMgTm9uZToKKyAgICAgICAgIyBEZWZhdWx0IHRvIHByZWxvYWRpbmcgYSBnZWNrbyBpbnN0YW5j
ZSBpZiB3ZSdyZSBvbmx5IHJ1bm5pbmcgYSBzaW5nbGUgcHJvY2VzcworICAgICAgICBrd2FyZ3Nb
InByZWxvYWRfYnJvd3NlciJdID0ga3dhcmdzWyJwcm9jZXNzZXMiXSA9PSAxCisKICAgICByZXR1
cm4ga3dhcmdzCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxvZ2dpbmcucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bG9nZ2luZy5weQppbmRleCA2OWNlZTc0NDg3OWViNjc4MGNiOTllYzkz
MTIzOTIyZTE2NmQ5ZTE2Li40NDRkMWQ5NjJkMjU4NzMxMDk5NzdiOTM3ZDk2Yzg2Y2IyOTNjZDhm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bG9nZ2luZy5weQpAQCAtMTQsNyArMTQsNyBAQCBkZWYgc2V0dXAoYXJncywgZGVmYXVs
dHMsIGZvcm1hdHRlcl9kZWZhdWx0cz1Ob25lKToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfZGVmYXVsdHM9Zm9ybWF0dGVyX2RlZmF1bHRzKQog
ICAgIHNldHVwX3N0ZGxpYl9sb2dnZXIoKQogCi0gICAgZm9yIG5hbWUgaW4gYXJncy5rZXlzKCk6
CisgICAgZm9yIG5hbWUgaW4gbGlzdChhcmdzLmtleXMoKSk6CiAgICAgICAgIGlmIG5hbWUuc3Rh
cnRzd2l0aCgibG9nXyIpOgogICAgICAgICAgICAgYXJncy5wb3AobmFtZSkKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2Jhc2UucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weQppbmRleCA0NWUyMTQ3ZmM0Y2E1MDlhOWRl
MjhmY2RjYmI3MDdkODIzNDU5NzExLi5jNTM5ZDQzNjdlOTRhNWU1MjVjNWQ4ZDhlOWVkYzMxMTZl
OGFmZmZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFz
ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weQpAQCAt
MSw0ICsxLDUgQEAKIGltcG9ydCBhYmMKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMsIGl0ZXJr
ZXlzLCBpdGVydmFsdWVzCiAKIGZyb20gLi5ub2RlIGltcG9ydCBOb2RlVmlzaXRvcgogZnJvbSAu
LnBhcnNlciBpbXBvcnQgcGFyc2UKQEAgLTE4NiwyMSArMTg3LDIxIEBAIGNsYXNzIE1hbmlmZXN0
SXRlbShvYmplY3QpOgogICAgIGRlZiBfZmxhdHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQog
ICAgICAgICBmb3Igbm9kZSBpbiBbc2VsZiwgc2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBu
YW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5h
bWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2RlLl9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBu
YW1lIG5vdCBpbiBydjoKICAgICAgICAgICAgICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAg
ICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBp
dGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4g
aXRlcml0ZW1zKHNlbGYuX2ZsYXR0ZW4oKSk6CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAg
ICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4o
KS5pdGVya2V5cygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVu
KCkpOgogICAgICAgICAgICAgeWllbGQgaXRlbQogCiAgICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6
Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVydmFsdWVzKCk6CisgICAg
ICAgIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAg
IHlpZWxkIGl0ZW0KIAogICAgIGRlZiBhcHBlbmQoc2VsZiwgY2hpbGQpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CmluZGV4IGFhY2Q3ODU3
MDcyZjQyMGEyMDlhZWVmZjU1OWVjMmFlMjk0MTcwYmEuLjNiMTFlODMwMTJhYjUwZmUwZWEyNDBh
ZTA1NmQwMmM4OTY4YjZhNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9i
YWNrZW5kcy9jb25kaXRpb25hbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFj
a2VuZHMvY29uZGl0aW9uYWwucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3BlcmF0b3IKK2Zy
b20gc2l4IGltcG9ydCBlbnN1cmVfdGV4dCwgaXRlcml0ZW1zLCBpdGVya2V5cywgdGV4dF90eXBl
CiAKIGZyb20gLi5ub2RlIGltcG9ydCBOb2RlVmlzaXRvciwgRGF0YU5vZGUsIENvbmRpdGlvbmFs
Tm9kZSwgS2V5VmFsdWVOb2RlLCBMaXN0Tm9kZSwgVmFsdWVOb2RlLCBCaW5hcnlFeHByZXNzaW9u
Tm9kZSwgVmFyaWFibGVOb2RlCiBmcm9tIC4ucGFyc2VyIGltcG9ydCBwYXJzZQpAQCAtNDIsOSAr
NDMsNyBAQCBjbGFzcyBDb25kaXRpb25hbFZhbHVlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBz
ZWxmLmNvbmRpdGlvbl9mdW5jKHJ1bl9pbmZvKQogCiAgICAgZGVmIHNldF92YWx1ZShzZWxmLCB2
YWx1ZSk6Ci0gICAgICAgIGlmIHR5cGUodmFsdWUpIG5vdCBpbiAoc3RyLCB1bmljb2RlKToKLSAg
ICAgICAgICAgIHZhbHVlID0gdW5pY29kZSh2YWx1ZSkKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZh
bHVlCisgICAgICAgIHNlbGYudmFsdWUgPSBlbnN1cmVfdGV4dCh2YWx1ZSkKIAogICAgIGRlZiB2
YWx1ZV9hcyhzZWxmLCB0eXBlX2Z1bmMpOgogICAgICAgICAiIiJHZXQgdmFsdWUgYW5kIGNvbnZl
cnQgdG8gYSBnaXZlbiB0eXBlLgpAQCAtMzAxLDkgKzMwMCw5IEBAIGNsYXNzIE1hbmlmZXN0SXRl
bShvYmplY3QpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAg
ICAgIHZhbHVlX25vZGUgPSBMaXN0Tm9kZSgpCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiB2YWx1
ZToKLSAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodW5pY29kZShp
dGVtKSkpCisgICAgICAgICAgICAgICAgdmFsdWVfbm9kZS5hcHBlbmQoVmFsdWVOb2RlKHRleHRf
dHlwZShpdGVtKSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFs
dWVOb2RlKHVuaWNvZGUodmFsdWUpKQorICAgICAgICAgICAgdmFsdWVfbm9kZSA9IFZhbHVlTm9k
ZSh0ZXh0X3R5cGUodmFsdWUpKQogICAgICAgICBpZiBjb25kaXRpb24gaXMgbm90IE5vbmU6CiAg
ICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb25kaXRpb24sIENvbmRpdGlvbmFsTm9kZSk6
CiAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxfbm9kZSA9IENvbmRpdGlvbmFsTm9kZSgpCkBA
IC0zNjksMTkgKzM2OCwyMyBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICBkZWYg
X2ZsYXR0ZW4oc2VsZik6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG5vZGUgaW4gW3Nl
bGYsIHNlbGYucm9vdF06Ci0gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbm9kZS5fZGF0
YS5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMo
bm9kZS5fZGF0YSk6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gcnY6CiAgICAgICAg
ICAgICAgICAgICAgIHJ2W25hbWVdID0gdmFsdWUKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBk
ZWYgaXRlcml0ZW1zKHNlbGYpOgotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVuKCku
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJpdGVtcyhzZWxmLl9mbGF0dGVu
KCkpOgogICAgICAgICAgICAgeWllbGQgaXRlbQogCiAgICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgot
ICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLl9mbGF0dGVuKCkuaXRlcmtleXMoKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlcmtleXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxk
IGl0ZW0KIAorICAgIGRlZiBpdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGZvciBpdGVt
IGluIHNlbGYuX2RhdGE6CisgICAgICAgICAgICB5aWVsZCBpdGVtLCBzZWxmLl9kYXRhW2l0ZW1d
CisKICAgICBkZWYgcmVtb3ZlX3ZhbHVlKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICBpZiBr
ZXkgbm90IGluIHNlbGYuX2RhdGE6CiAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRtYW5pZmVzdC9ub2RlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L25vZGUucHkKaW5kZXggNzdiMTdhNTAzMjVjNzcwNjczOTFhYjY2MzlkMGUwMjllMzM5NTA0Ny4u
MGY4MmQ3MDA2YjY5ZWQwZTQ4NTI5MDM4N2I2NTc2OGI4NTlhODcwMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L25vZGUucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgeHJhbmdl
Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIAogY2xhc3MgTm9kZVZpc2l0b3Iob2JqZWN0
KToKICAgICBkZWYgdmlzaXQoc2VsZiwgbm9kZSk6CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIERh
dGFOb2RlKE5vZGUpOgogICAgICAgICAgICAgaW5kZXggPSBsZW4oc2VsZi5jaGlsZHJlbikKICAg
ICAgICAgICAgIHdoaWxlIGluZGV4ID4gMCBhbmQgaXNpbnN0YW5jZShzZWxmLmNoaWxkcmVuW2lu
ZGV4IC0gMV0sIERhdGFOb2RlKToKICAgICAgICAgICAgICAgICBpbmRleCAtPSAxCi0gICAgICAg
ICAgICBmb3IgaSBpbiB4cmFuZ2UoaW5kZXgpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
aW5kZXgpOgogICAgICAgICAgICAgICAgIGlmIG90aGVyLmRhdGEgPT0gc2VsZi5jaGlsZHJlbltp
XS5kYXRhOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJEdXBsaWNhdGUg
a2V5ICVzIiAlIHNlbGYuY2hpbGRyZW5baV0uZGF0YSkKICAgICAgICAgICAgIHNlbGYuY2hpbGRy
ZW4uaW5zZXJ0KGluZGV4LCBvdGhlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5p
ZmVzdC9wYXJzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CmluZGV4
IDYyYzVmN2QzYTQ2NzljYTlhZWE5NjFhZmVjYzYzZjI1ZTdhNTQ5NjIuLjkxMWVmYWM4MGYyN2Vl
OTJkZjdmYmVhNTc3YzQxNDY5MTg5OTc3NWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9wYXJzZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3BhcnNlci5w
eQpAQCAtMTQsOCArMTQsOCBAQAogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0
ZXJhbHMKIAotZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUsIEJ5dGVzSU8K
LWZyb20gc2l4Lm1vdmVzIGltcG9ydCB4cmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlw
ZSwgdGV4dF90eXBlLCBCeXRlc0lPLCB1bmljaHIKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5n
ZQogCiBmcm9tIC5ub2RlIGltcG9ydCAoTm9kZSwgQXRvbU5vZGUsIEJpbmFyeUV4cHJlc3Npb25O
b2RlLCBCaW5hcnlPcGVyYXRvck5vZGUsCiAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWxO
b2RlLCBEYXRhTm9kZSwgSW5kZXhOb2RlLCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLApAQCAtNzUs
NiArNzUsNyBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5zdGF0ZSA9
IHNlbGYubGluZV9zdGFydF9zdGF0ZQogICAgICAgICBzZWxmLm5leHRfc3RhdGUgPSBzZWxmLmRh
dGFfbGluZV9zdGF0ZQogICAgICAgICBzZWxmLmxpbmVfbnVtYmVyID0gMAorICAgICAgICBzZWxm
LmZpbGVuYW1lID0gIiIKIAogICAgIGRlZiB0b2tlbml6ZShzZWxmLCBzdHJlYW0pOgogICAgICAg
ICBzZWxmLnJlc2V0KCkKQEAgLTEzNiw5ICsxMzcsMTAgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVj
dCk6CiAgICAgICAgICAgICBzZWxmLmluZGVudF9sZXZlbHMuYXBwZW5kKHNlbGYuaW5kZXgpCiAg
ICAgICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMuZ3JvdXBfc3RhcnQsIE5vbmUpCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICB3aGlsZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxz
Wy0xXToKLSAgICAgICAgICAgICAgICBzZWxmLmluZGVudF9sZXZlbHMucG9wKCkKLSAgICAgICAg
ICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMuZ3JvdXBfZW5kLCBOb25lKQorICAgICAgICAgICAg
aWYgc2VsZi5pbmRleCA8IHNlbGYuaW5kZW50X2xldmVsc1stMV06CisgICAgICAgICAgICAgICAg
d2hpbGUgc2VsZi5pbmRleCA8IHNlbGYuaW5kZW50X2xldmVsc1stMV06CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQorICAgICAgICAgICAgICAgICAgICB5aWVs
ZCAodG9rZW5fdHlwZXMuZ3JvdXBfZW5kLCBOb25lKQogICAgICAgICAgICAgICAgICMgVGhpcyBp
cyB0ZXJyaWJsZTsgaWYgd2Ugd2VyZSBwYXJzaW5nIGFuIGV4cHJlc3Npb24KICAgICAgICAgICAg
ICAgICAjIHRoZW4gdGhlIG5leHRfc3RhdGUgd2lsbCBiZSBleHByX29yX3ZhbHVlIGJ1dCB3aGVu
IHdlIGRlaW5kZW50CiAgICAgICAgICAgICAgICAgIyBpdCBtdXN0IGFsd2F5cyBiZSBhIGhlYWRp
bmcgb3Iga2V5IG5leHQgc28gd2UgZ28gYmFjayB0byBkYXRhX2xpbmVfc3RhdGUKQEAgLTMwMyw3
ICszMDUsOCBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToKIAogICAgIGRlZiB2YWx1ZV9zdGF0
ZShzZWxmKToKICAgICAgICAgc2VsZi5za2lwX3doaXRlc3BhY2UoKQotICAgICAgICBpZiBzZWxm
LmNoYXIoKSBpbiAoIiciLCAnIicpOgorICAgICAgICBjID0gc2VsZi5jaGFyKCkKKyAgICAgICAg
aWYgYyBpbiAoIiciLCAnIicpOgogICAgICAgICAgICAgcXVvdGVfY2hhciA9IHNlbGYuY2hhcigp
CiAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQogICAgICAgICAgICAgeWllbGQgKHRva2VuX3R5
cGVzLnN0cmluZywgc2VsZi5jb25zdW1lX3N0cmluZyhxdW90ZV9jaGFyKSkKQEAgLTMxMSwxMCAr
MzE0LDEyIEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYu
c3RhdGUgPSBzZWxmLmNvbW1lbnRfc3RhdGUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYubGluZV9lbmRfc3RhdGUKLSAgICAgICAgZWxpZiBzZWxm
LmNoYXIoKSA9PSAiQCI6CisgICAgICAgIGVsaWYgYyA9PSAiQCI6CiAgICAgICAgICAgICBzZWxm
LmNvbnN1bWUoKQogICAgICAgICAgICAgZm9yIF8sIHZhbHVlIGluIHNlbGYudmFsdWVfaW5uZXJf
c3RhdGUoKToKICAgICAgICAgICAgICAgICB5aWVsZCB0b2tlbl90eXBlcy5hdG9tLCB2YWx1ZQor
ICAgICAgICBlbGlmIGMgPT0gIlsiOgorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYubGlz
dF9zdGFydF9zdGF0ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IHNl
bGYudmFsdWVfaW5uZXJfc3RhdGUKIApAQCAtNDk0LDcgKzQ5OSw3IEBAIGNsYXNzIFRva2VuaXpl
cihvYmplY3QpOgogCiAgICAgZGVmIGRlY29kZV9lc2NhcGUoc2VsZiwgbGVuZ3RoKToKICAgICAg
ICAgdmFsdWUgPSAwCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW5ndGgpOgorICAgICAgICBm
b3IgaSBpbiByYW5nZShsZW5ndGgpOgogICAgICAgICAgICAgYyA9IHNlbGYuY2hhcigpCiAgICAg
ICAgICAgICB2YWx1ZSAqPSAxNgogICAgICAgICAgICAgdmFsdWUgKz0gc2VsZi5lc2NhcGVfdmFs
dWUoYykKQEAgLTU5Niw2ICs2MDEsOSBAQCBjbGFzcyBQYXJzZXIob2JqZWN0KToKICAgICAgICAg
ICAgIHNlbGYuZXhwcmVzc2lvbl92YWx1ZXMoKQogICAgICAgICAgICAgaWYgc2VsZi50b2tlblsw
XSA9PSB0b2tlbl90eXBlcy5zdHJpbmc6CiAgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSgpCisg
ICAgICAgICAgICBlbGlmIHNlbGYudG9rZW5bMF0gPT0gdG9rZW5fdHlwZXMubGlzdF9zdGFydDoK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQorICAgICAgICAgICAgICAgIHNlbGYubGlz
dF92YWx1ZSgpCiAgICAgICAgICAgICBzZWxmLmVvZl9vcl9lbmRfZ3JvdXAoKQogICAgICAgICBl
bGlmIHNlbGYudG9rZW5bMF0gPT0gdG9rZW5fdHlwZXMuYXRvbToKICAgICAgICAgICAgIHNlbGYu
YXRvbSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvc2VyaWFsaXplci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5CmluZGV4IDNiMjljOTll
ZGU3Y2FjNThlZGU1ZDQ4MjM3Njk2ZTMwYzlkODU2YzcuLmVjOGQ4MGVkNmY3MTUxYjI5MTNmOTc1
ZGYwZmMzODdhMTI3ZGUxNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9z
ZXJpYWxpemVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5
CkBAIC0xLDcgKzEsMTAgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFs
cworZnJvbSBzaXggaW1wb3J0IGVuc3VyZV90ZXh0CisKIGZyb20gLm5vZGUgaW1wb3J0IE5vZGVW
aXNpdG9yLCBWYWx1ZU5vZGUsIExpc3ROb2RlLCBCaW5hcnlFeHByZXNzaW9uTm9kZQogZnJvbSAu
cGFyc2VyIGltcG9ydCBhdG9tcywgcHJlY2VkZW5jZQogCi1hdG9tX25hbWVzID0ge3Y6IkAlcyIg
JSBrIGZvciAoayx2KSBpbiBhdG9tcy5pdGVtcygpfQorYXRvbV9uYW1lcyA9IHt2OiAiQCVzIiAl
IGsgZm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CiAKIG5hbWVkX2VzY2FwZXMgPSB7IlxhIiwg
IlxiIiwgIlxmIiwgIlxuIiwgIlxyIiwgIlx0IiwgIlx2In0KIApAQCAtMTAsNyArMTMsNyBAQCBk
ZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICBydiA9ICIiCiAgICAgZm9yIGMgaW4g
c3RyaW5nOgogICAgICAgICBpZiBjIGluIG5hbWVkX2VzY2FwZXM6Ci0gICAgICAgICAgICBydiAr
PSBjLmVuY29kZSgidW5pY29kZV9lc2NhcGUiKQorICAgICAgICAgICAgcnYgKz0gYy5lbmNvZGUo
InVuaWNvZGVfZXNjYXBlIikuZGVjb2RlKCkKICAgICAgICAgZWxpZiBjID09ICJcXCI6CiAgICAg
ICAgICAgICBydiArPSAiXFxcXCIKICAgICAgICAgZWxpZiBjIDwgJ1x4MjAnOgpAQCAtMTksMTAg
KzIyLDcgQEAgZGVmIGVzY2FwZShzdHJpbmcsIGV4dHJhcz0iIik6CiAgICAgICAgICAgICBydiAr
PSAiXFwiICsgYwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcnYgKz0gYwotICAgIGlmIGlz
aW5zdGFuY2UocnYsIHVuaWNvZGUpOgotICAgICAgICByZXR1cm4gcnYuZW5jb2RlKCJ1dGY4IikK
LSAgICBlbHNlOgotICAgICAgICByZXR1cm4gcnYKKyAgICByZXR1cm4gZW5zdXJlX3RleHQocnYp
CiAKIAogY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKQEAgLTc0LDEwICs3
NCw3IEBAIGNsYXNzIE1hbmlmZXN0U2VyaWFsaXplcihOb2RlVmlzaXRvcik6CiAgICAgICAgIHJl
dHVybiBbIiIuam9pbihydildCiAKICAgICBkZWYgdmlzaXRfVmFsdWVOb2RlKHNlbGYsIG5vZGUp
OgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLmRhdGEsIChzdHIsIHVuaWNvZGUpKToK
LSAgICAgICAgICAgIGRhdGEgPSB1bmljb2RlKG5vZGUuZGF0YSkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGRhdGEgPSBub2RlLmRhdGEKKyAgICAgICAgZGF0YSA9IGVuc3VyZV90ZXh0KG5v
ZGUuZGF0YSkKICAgICAgICAgaWYgKCIjIiBpbiBkYXRhIG9yCiAgICAgICAgICAgICBkYXRhLnN0
YXJ0c3dpdGgoImlmICIpIG9yCiAgICAgICAgICAgICAoaXNpbnN0YW5jZShub2RlLnBhcmVudCwg
TGlzdE5vZGUpIGFuZApAQCAtMTAzLDcgKzEwMCw3IEBAIGNsYXNzIE1hbmlmZXN0U2VyaWFsaXpl
cihOb2RlVmlzaXRvcik6CiAgICAgICAgIHJldHVybiBydgogCiAgICAgZGVmIHZpc2l0X051bWJl
ck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5vZGUuZGF0YSldCisgICAg
ICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogICAgIGRlZiB2aXNpdF9WYXJp
YWJsZU5vZGUoc2VsZiwgbm9kZSk6CiAgICAgICAgIHJ2ID0gZXNjYXBlKG5vZGUuZGF0YSkKQEAg
LTEzNywxMCArMTM0LDEwIEBAIGNsYXNzIE1hbmlmZXN0U2VyaWFsaXplcihOb2RlVmlzaXRvcik6
CiAgICAgICAgIHJldHVybiBbIiAiLmpvaW4oY2hpbGRyZW4pXQogCiAgICAgZGVmIHZpc2l0X1Vu
YXJ5T3BlcmF0b3JOb2RlKHNlbGYsIG5vZGUpOgotICAgICAgICByZXR1cm4gW3N0cihub2RlLmRh
dGEpXQorICAgICAgICByZXR1cm4gW2Vuc3VyZV90ZXh0KG5vZGUuZGF0YSldCiAKICAgICBkZWYg
dmlzaXRfQmluYXJ5T3BlcmF0b3JOb2RlKHNlbGYsIG5vZGUpOgotICAgICAgICByZXR1cm4gW3N0
cihub2RlLmRhdGEpXQorICAgICAgICByZXR1cm4gW2Vuc3VyZV90ZXh0KG5vZGUuZGF0YSldCiAK
IAogZGVmIHNlcmlhbGl6ZSh0cmVlLCAqYXJncywgKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weQppbmRleCBmYmM3NWVj
ODM5MGZhMzRhYjdlM2NhYTM5MWMzZTZlNzgzN2E1NTRkLi5hZjRkOTk2MDMyMmM3ZThkZmNjYjA3
NmEyZTQ2NjEyNTQ1N2QxODc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9jb25kaXRpb25hbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9jb25kaXRpb25hbC5weQpAQCAtMSwxOSArMSwxNSBAQAotaW1wb3J0IHB5dGVz
dAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gLi5iYWNrZW5kcyBpbXBvcnQg
Y29uZGl0aW9uYWwKIGZyb20gLi5ub2RlIGltcG9ydCBCaW5hcnlFeHByZXNzaW9uTm9kZSwgQmlu
YXJ5T3BlcmF0b3JOb2RlLCBWYXJpYWJsZU5vZGUsIE51bWJlck5vZGUKIAogCi1AcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3MgVGVzdENv
bmRpdGlvbmFsKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY29tcGlsZShzZWxmLCBpbnB1
dF90ZXh0KToKICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbmFsLmNvbXBpbGUoaW5wdXRfdGV4dCkK
IAogICAgIGRlZiB0ZXN0X2dldF8wKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAg
IGRhdGEgPSBiIiIiCiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC0yNSwxOSArMjEsMTkg
QEAga2V5OiB2YWx1ZQogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEpCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQog
ICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hp
bGRyZW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9u
ID0gY2hpbGRyZW5bMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAi
SGVhZGluZyAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFk
aW5nIDEiKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9r
ZXkiLCB7ImEiOiAxfSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vj
dGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDJ9KSwgInZhbHVlXzIiKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogN30pLCAidmFsdWVf
MyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVl
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJh
IjogMX0pLCAidmFsdWVfMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQo
Im90aGVyX2tleSIsIHsiYSI6IDJ9KSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSksICJ2YWx1ZV8zIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIpCiAKICAgICBk
ZWYgdGVzdF9nZXRfMShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0g
YiIiIgoga2V5OiB2YWx1ZQogCiBbSGVhZGluZyAxXQpAQCAtNTIsMTEgKzQ4LDExIEBAIGtleTog
dmFsdWUKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0ZW0gaW4gbWFuaWZlc3Qu
aXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rpb24gPSBjaGlsZHJlblswXQogCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAiMSJ9KSwg
InZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJf
a2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vj
dGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6ICIxIn0pLCAidmFsdWVfMSIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDF9KSwgInZhbHVl
XzMiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzIoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYVsxXSA9PSAiYiI6IHZhbHVlXzEKICAgaWYg
YVsxXSA9PSAyOiB2YWx1ZV8yCkBAIC02NSwxMSArNjEsMTEgQEAga2V5OgogCiAgICAgICAgIG1h
bmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
bWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVl
XzIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjog
ImFiIn0pLCAidmFsdWVfMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0
KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzMo
c2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAg
aWYgYVsxXSA9PSAiYWIiWzFdOiB2YWx1ZV8xCiAgIGlmIGFbMV0gPT0gMjogdmFsdWVfMgpAQCAt
NzgsMTEgKzc0LDExIEBAIGtleToKIAogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShk
YXRhKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJh
IjogImFiIn0pLCAidmFsdWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0
LmdldCgia2V5IiwgeyJhIjogWzEsIDJdfSksICJ2YWx1ZV8yIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogWzEsIDJdfSks
ICJ2YWx1ZV8yIikKIAogICAgIGRlZiB0ZXN0X3NldF8wKHNlbGYpOgotICAgICAgICBkYXRhID0g
IiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAg
IGlmIGEgPT0gImIiOiB2YWx1ZV8yCkBAIC05MiwxMCArODgsMTAgQEAga2V5OgogCiAgICAgICAg
IG1hbmlmZXN0LnNldCgibmV3X2tleSIsICJ2YWx1ZV9uZXciKQogCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVfbmV3IikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoIm5ld19rZXkiKSwgInZhbHVlX25ldyIpCiAK
ICAgICBkZWYgdGVzdF9zZXRfMShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBk
YXRhID0gYiIiIgoga2V5OgogICBpZiBhID09ICJhIjogdmFsdWVfMQogICBpZiBhID09ICJiIjog
dmFsdWVfMgpAQCAtMTA2LDExICsxMDIsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0LnNl
dCgia2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZl
c3QuZ2V0KCJrZXkiKSwgInZhbHVlX25ldyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1h
bmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfbmV3IikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhIn0pLCAidmFsdWVfMSIp
CiAKICAgICBkZWYgdGVzdF9zZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAg
ICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhID09ICJhIjogdmFsdWVfMQogICBpZiBhID09ICJi
IjogdmFsdWVfMgpAQCAtMTI1LDExICsxMjEsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0
LnNldCgia2V5IiwgInZhbHVlX25ldyIsIGV4cHIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAxfSksICJ2YWx1ZV9uZXciKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhIn0pLCAidmFsdWVf
MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAx
fSksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgi
a2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X2FwaV8wKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEg
PT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKQEAgLTEzOCw4ICsxMzQsOCBAQCBrZXlfMTogb3Ro
ZXJfdmFsdWUKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG1hbmlmZXN0LmlzX2VtcHR5KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhtYW5pZmVzdC5yb290LCBtYW5pZmVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtYW5pZmVzdC5yb290LCBtYW5pZmVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmlm
ZXN0Lmhhc19rZXkoImtleV8xIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzIiKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZXQobWFuaWZl
c3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2V0KG1hbmlmZXN0Lml0ZXJrZXlzKCkpLCB7ImtleSIsICJrZXlfMSJ9KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CmluZGV4IDgwNWU0N2IzNzFm
NWE3MzA3NjVmM2U1ZDFhYzVmNmM5NGRjM2U5OTcuLjIzYmViMmJlZjIwOGEyMTEwN2IxMDg2MjBm
ZDU0ZjFlYzU2NTRkOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVz
dF9wYXJzZXIucHkKQEAgLTE4LDkgKzE4LDkgQEAgY2xhc3MgVGVzdEV4cHJlc3Npb24odW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLm1hdGNoKGV4cGVjdGVkLCBhY3R1YWwpCiAKICAg
ICBkZWYgbWF0Y2goc2VsZiwgZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9ub2RlWzBdLCBhY3R1YWxfbm9kZS5fX2NsYXNzX18u
X19uYW1lX18pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMV0sIGFj
dHVhbF9ub2RlLmRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihleHBlY3RlZF9u
b2RlWzJdKSwgbGVuKGFjdHVhbF9ub2RlLmNoaWxkcmVuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZF9ub2RlWzBdLCBhY3R1YWxfbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbm9kZVsxXSwgYWN0dWFsX25vZGUuZGF0
YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbm9kZVsyXSksIGxlbihh
Y3R1YWxfbm9kZS5jaGlsZHJlbikpCiAgICAgICAgIGZvciBleHBlY3RlZF9jaGlsZCwgYWN0dWFs
X2NoaWxkIGluIHppcChleHBlY3RlZF9ub2RlWzJdLCBhY3R1YWxfbm9kZS5jaGlsZHJlbik6CiAg
ICAgICAgICAgICBzZWxmLm1hdGNoKGV4cGVjdGVkX2NoaWxkLCBhY3R1YWxfY2hpbGQpCiAKQEAg
LTEwNSw2ICsxMDUsNDUgQEAga2V5OgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHBh
cnNlci5QYXJzZUVycm9yKToKICAgICAgICAgICAgIHNlbGYucGFyc2UoYiJrZXk6IEB0cnVlIikK
IAorICAgIGRlZiB0ZXN0X2xpc3RfZXhwcihzZWxmKToKKyAgICAgICAgc2VsZi5jb21wYXJlKAor
ICAgICAgICAgICAgYiIiIgora2V5OgorICBpZiB4ID09IDE6IFthXQorICBbYl0iIiIsCisgICAg
ICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICBbWyJLZXlWYWx1ZU5vZGUi
LCAia2V5IiwKKyAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFsTm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJlc3Npb25Ob2RlIiwgTm9uZSwKKyAgICAgICAgICAg
ICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5vZGUiLCAiPT0iLCBbXV0sCisgICAgICAgICAgICAg
ICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngiLCBbXV0sCisgICAgICAgICAgICAgICAgICAgICAg
IFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisgICAgICAgICAgICAgICAgICAgIF1dLAorICAgICAg
ICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAg
W1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwKKyAgICAgICAgICAgICAgICAgIF1dLAorICAgICAg
ICAgICAgICAgIFsiTGlzdE5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAgICBbWyJWYWx1ZU5v
ZGUiLCAiYiIsIFtdXV1dXV1dXSkKKworICAgIGRlZiB0ZXN0X2xpc3RfaGVhZGluZyhzZWxmKToK
KyAgICAgICAgc2VsZi5jb21wYXJlKAorICAgICAgICAgICAgYiIiIgora2V5OgorICBpZiB4ID09
IDE6IFthXQorW2JdIiIiLAorICAgICAgICAgICAgWyJEYXRhTm9kZSIsIE5vbmUsCisgICAgICAg
ICAgICAgW1siS2V5VmFsdWVOb2RlIiwgImtleSIsCisgICAgICAgICAgICAgICBbWyJDb25kaXRp
b25hbE5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAgICBbWyJCaW5hcnlFeHByZXNzaW9uTm9k
ZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgW1siQmluYXJ5T3BlcmF0b3JOb2RlIiwgIj09
IiwgW11dLAorICAgICAgICAgICAgICAgICAgICBbIlZhcmlhYmxlTm9kZSIsICJ4IiwgW11dLAor
ICAgICAgICAgICAgICAgICAgICAgICBbIk51bWJlck5vZGUiLCAiMSIsIFtdXQorICAgICAgICAg
ICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICAgICAgIFsiTGlzdE5vZGUiLCBOb25lLAor
ICAgICAgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIsICJhIiwgW11dXV0sCisgICAgICAg
ICAgICAgICAgICBdXV1dLAorICAgICAgICAgICAgICBbIkRhdGFOb2RlIiwgImIiLCBbXV1dXSkK
KwogICAgIGRlZiB0ZXN0X2lmXzEoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMocGFyc2VyLlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTogaWYg
Zm9vIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Nl
cmlhbGl6ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxp
emVyLnB5CmluZGV4IDdmZTdhYzg1Y2I4YTE0ZjA1MTEzY2JmZDQ4M2I4ZDA0MmEwN2I5ODkuLmIy
NDc4NTU4MDFlYWM2NTg5YWViZDQ1NTVjNmQ5ZTg2NTNlMTJlNGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQpAQCAtNiw4ICs2LDYg
QEAgaW1wb3J0IHB5dGVzdAogZnJvbSAuLiBpbXBvcnQgcGFyc2VyLCBzZXJpYWxpemVyCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249IndwdG1hbmlmZXN0LnBhcnNlciBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxm
KToKICAgICAgICAgc2VsZi5zZXJpYWxpemVyID0gc2VyaWFsaXplci5NYW5pZmVzdFNlcmlhbGl6
ZXIoKQpAQCAtMTgsMjYgKzE2LDI1IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgaW5wdXRfc3RyLCBleHBlY3RlZD1Ob25l
KToKICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgTm9uZToKLSAgICAgICAgICAgIGV4cGVjdGVkID0g
aW5wdXRfc3RyCi0gICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuZW5jb2RlKCJ1dGY4IikKKyAg
ICAgICAgICAgIGV4cGVjdGVkID0gaW5wdXRfc3RyLmRlY29kZSgidXRmLTgiKQogICAgICAgICBh
Y3R1YWwgPSBzZWxmLnNlcmlhbGl6ZShpbnB1dF9zdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBl
eHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0XzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgi
IiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRp
bmcgMV0KICAgb3RoZXJfa2V5OiBvdGhlcl92YWx1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfMShz
ZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5j
b21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYg
YSBvciBiOiBvdGhlcl92YWx1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfMihzZWxmKToKLSAgICAg
ICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJr
ZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSBvciBiOiBvdGhl
cl92YWx1ZQpAQCAtNDUsNyArNDIsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29t
cGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQog
W0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5OgogICAgIGlmIGEgPT0gMTogb3RoZXJfdmFsdWUKQEAg
LTUzLDcgKzUwLDcgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAi
IiIpCiAKICAgICBkZWYgdGVzdF80KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5
OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFd
CiAgIG90aGVyX2tleToKICAgICBpZiBhID09ICIxIjogb3RoZXJfdmFsdWUKQEAgLTYxLDcgKzU4
LDcgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAg
ICBkZWYgdGVzdF81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQor
ICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVy
X2tleToKICAgICBpZiBhID09ICJhYmMiWzFdOiBvdGhlcl92YWx1ZQpAQCAtNjksNyArNjYsNyBA
QCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRl
ZiB0ZXN0XzYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5
OgogICAgIGlmIGEgPT0gImFiYyJbY106IG90aGVyX3ZhbHVlCkBAIC03Nyw3ICs3NCw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfNyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAg
ICAgaWYgKGEgb3IgYikgYW5kIGM6IG90aGVyX3ZhbHVlCkBAIC05MSw3ICs4OCw3IEBAIGNsYXNz
IFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3Rf
OChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAg
aWYgYSBvciAoYiBhbmQgYyk6IG90aGVyX3ZhbHVlCkBAIC05OSw3ICs5Niw3IEBAIGNsYXNzIFRv
a2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfOShz
ZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5j
b21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYg
bm90IChhIGFuZCBiKTogb3RoZXJfdmFsdWUKQEAgLTEwNyw3ICsxMDQsNyBAQCBjbGFzcyBUb2tl
bml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzEwKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNv
bXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIHNvbWVfa2V5OiBzb21lX3ZhbHVl
CiAKQEAgLTExNiwxMjEgKzExMywxMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF8xMShzZWxmKToKLSAgICAgICAgc2VsZi5j
b21wYXJlKCIiImtleToKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6CiAgIGlmIG5vdCBh
IGFuZCBiIGFuZCBjIGFuZCBkOiB0cnVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xMihzZWxmKToK
LSAgICAgICAgc2VsZi5jb21wYXJlKCIiIltIZWFkaW5nIDFdCisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIiW0hlYWRpbmcgMV0KICAga2V5OiBbYToxLCBiOjJdCiAiIiIpCiAKICAgICBkZWYgdGVz
dF8xMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogW2E6MSwgImI6IyJdCisg
ICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBbYToxLCAiYjojIl0KICIiIikKIAogICAgIGRl
ZiB0ZXN0XzE0KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbIiwiXQorICAg
ICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogWyIsIl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE1
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiAsCisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIia2V5OiAsCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xNihzZWxmKToKLSAgICAgICAg
c2VsZi5jb21wYXJlKCIiImtleTogWyJdIiwgYl0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJr
ZXk6IFsiXSIsIGJdCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xNyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKCIiImtleTogXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogXQogIiIi
KQogCiAgICAgZGVmIHRlc3RfMTgoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5
OiBcXQorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFxdCiAgICAgICAgICIiIiwgIiIi
a2V5OiBdCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMChzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKHIiIiJrXHRcOnk6IFxhXGJcZlxuXHJcdFx2IiIiLAorICAgICAgICBzZWxmLmNv
bXBhcmUoYnIiIiJrXHRcOnk6IFxhXGJcZlxuXHJcdFx2IiIiLAogICAgICAgICAgICAgICAgICAg
ICAgciIiImtcdFw6eTogXHgwN1x4MDhceDBjXG5cclx0XHgwYgogIiIiKQogCiAgICAgZGVmIHRl
c3RfZXNjYXBlXzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia1x4MDA6IFx4MTJB
XHg0NSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia1x4MDA6IFx4MTJBXHg0NSIiIiwK
ICAgICAgICAgICAgICAgICAgICAgIHIiIiJrXHgwMDogXHgxMkFFCiAiIiIpCiAKICAgICBkZWYg
dGVzdF9lc2NhcGVfMihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHUwMDQ1eTog
XHUxMjM0QVx1QUJjNiIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia1x1MDA0NXk6IFx1
MTIzNEFcdUFCYzYiIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIia0V5OiBcdTEyMzRBXHVh
YmM2CiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMyhzZWxmKToKLSAgICAgICAgc2VsZi5j
b21wYXJlKHIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKKyAgICAgICAgc2VsZi5jb21w
YXJlKGJyIiIia1x1MDA0NXk6IFx1MTIzNEFcdUFCYzYiIiIsCiAgICAgICAgICAgICAgICAgICAg
ICB1IiIia0V5OiBcdTEyMzRBXHVhYmM2CiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfNChz
ZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIiIiwK
KyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiAnXHUxMjM0QVx1QUJjNiciIiIsCiAgICAg
ICAgICAgICAgICAgICAgICB1IiIia2V5OiBcdTEyMzRBXHVhYmM2CiAiIiIpCiAKICAgICBkZWYg
dGVzdF9lc2NhcGVfNShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFtcdTEy
MzRBXHVBQmM2XSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5OiBbXHUxMjM0QVx1
QUJjNl0iIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIia2V5OiBbXHUxMjM0QVx1YWJjNl0K
ICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV82KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUociIiImtleTogW1x1MTIzNEFcdUFCYzZcLF0iIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogW1x1MTIzNEFcdUFCYzZcLF0iIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIi
a2V5OiBbIlx1MTIzNEFcdWFiYzYsIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV83KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW1wsXF1cI10iIiIsCisgICAgICAg
IHNlbGYuY29tcGFyZShiciIiImtleTogW1wsXF1cI10iIiIsCiAgICAgICAgICAgICAgICAgICAg
ICByIiIia2V5OiBbIixdIyJdCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfOChzZWxmKToK
LSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFwjIiIiLAorICAgICAgICBzZWxmLmNvbXBh
cmUoYnIiIiJrZXk6IFwjIiIiLAogICAgICAgICAgICAgICAgICAgICAgciIiImtleTogIiMiCiAi
IiIpCiAKICAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLm1heHVuaWNvZGUgPT0gMHhGRkZGLCBy
ZWFzb249Im5hcnJvdyB1bmljb2RlIikKICAgICBkZWYgdGVzdF9lc2NhcGVfOShzZWxmKToKLSAg
ICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFxVMTBGRkZGYWJjIiIiLAorICAgICAgICBzZWxm
LmNvbXBhcmUoYnIiIiJrZXk6IFxVMTBGRkZGYWJjIiIiLAogICAgICAgICAgICAgICAgICAgICAg
dSIiImtleTogXFUwMDEwRkZGRmFiYwogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzEwKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXHUxMEZGYWIiIiIsCisgICAgICAg
IHNlbGYuY29tcGFyZShiciIiImtleTogXHUxMEZGYWIiIiIsCiAgICAgICAgICAgICAgICAgICAg
ICB1IiIia2V5OiBcdTEwRkZhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzExKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXFxhYgorICAgICAgICBzZWxmLmNvbXBh
cmUoYnIiIiJrZXk6IFxcYWIKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fMShzZWxmKToKLSAg
ICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IEBUcnVlCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogQFRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fMihzZWxmKToKLSAgICAg
ICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IEBGYWxzZQorICAgICAgICBzZWxmLmNvbXBhcmUoYnIi
IiJrZXk6IEBGYWxzZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8zKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogQFJlc2V0CisgICAgICAgIHNlbGYuY29tcGFyZShiciIi
ImtleTogQFJlc2V0CiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzQoc2VsZik6Ci0gICAgICAg
IHNlbGYuY29tcGFyZShyIiIia2V5OiBbYSwgQFJlc2V0LCBiXQorICAgICAgICBzZWxmLmNvbXBh
cmUoYnIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCiAiIiIpCiAKICAgICBkZWYgdGVzdF9jb25kaXRp
b25hbF8xKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIiZm9vOgorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImZvbzoKICAgaWYgYSBvciBiOiBbMSwgMl0KICIiIikKIAogICAgIGRlZiB0
ZXN0X2lmX3N0cmluZ18wKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIiZm9vOiAiaWYg
YmFyIgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImZvbzogImlmIGJhciIKKyIiIikKKworICAg
IGRlZiB0ZXN0X25vbl9hc2NpaV8xKHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiIltc
eGYwXHg5Zlx4OTlceDg0XQogIiIiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc3RhdGljLnB5CmluZGV4IGFhZjg0NjU5MTUyNDZhYWM1OGEwNjhkY2ZjMDY5N2I4Yzlh
ZjQxODEuLmU4MTFhMmI0MmI0NTUwY2NlYzFjZGE5ZjZiMWEyYjliYjI3MGZhY2UgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zdGF0aWMucHkKQEAgLTEsNSArMSwz
IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAu
LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKQEAgLTgsMTQgKzYsMTIgQEAgZnJvbSAuLmJhY2tlbmRz
IGltcG9ydCBzdGF0aWMKICMgdXNlIHRlc3Rfc2VyaWFsaXplciBmb3IgdGhlIG1ham9yaXR5IG9m
IGNhc2VzCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249IndwdG1hbmlmZXN0LnBhcnNlciBkb2Vzbid0IHN1cHBv
cnQgcHkzIikKIGNsYXNzIFRlc3RTdGF0aWModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBj
b21waWxlKHNlbGYsIGlucHV0X3RleHQsIGlucHV0X2RhdGEpOgogICAgICAgICByZXR1cm4gc3Rh
dGljLmNvbXBpbGUoaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSkKIAogICAgIGRlZiB0ZXN0X2dldF8w
KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6IHZh
bHVlCiAKIFtIZWFkaW5nIDFdCkBAIC0yNywxNyArMjMsMTcgQEAga2V5OiB2YWx1ZQogCiAgICAg
ICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IDJ9KQogCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKICAgICAgICAgY2hp
bGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjaGlsZHJlbiksIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGNoaWxkcmVuKSwgMSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVu
WzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcgMSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKIAot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5IiksICJ2YWx1
ZV8yIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIpLCAidmFs
dWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwg
InZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwg
InZhbHVlIikKIAogICAgIGRlZiB0ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIi
CisgICAgICAgIGRhdGEgPSBiIiIiCiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MCwz
MiArNDYsMzIgQEAga2V5OiB2YWx1ZQogCiAgICAgICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZv
ciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJlbigpKQogICAgICAgICBzZWN0aW9uID0gY2hp
bGRyZW5bMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tl
eSIpLCAidmFsdWVfMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90
aGVyX2tleSIpLCAidmFsdWVfMyIpCiAKICAgICBkZWYgdGVzdF9nZXRfMyhzZWxmKToKLSAgICAg
ICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIiIiJrZXk6CiAgIGlmIGEgPT0gIjEi
OiB2YWx1ZV8xCiAgIGlmIGFbMF0gPT0gImFiIlswXTogdmFsdWVfMgogIiIiCiAgICAgICAgIG1h
bmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6ICIxIn0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMSIpCiAKICAgICAgICAgbWFu
aWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogImFjIn0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVz
dF9nZXRfNChzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIi
IiJrZXk6CiAgIGlmIG5vdCBhOiB2YWx1ZV8xCiAgIHZhbHVlXzIKICIiIgogICAgICAgICBtYW5p
ZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiBUcnVlfSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAgICAgICBtYW5p
ZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiBGYWxzZX0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMSIpCiAKICAgICBkZWYgdGVz
dF9hcGkoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiJrZXk6CisgICAgICAgIGRhdGEgPSBiIiIi
a2V5OgogICBpZiBhID09IDEuNTogdmFsdWVfMQogICB2YWx1ZV8yCiBrZXlfMTogb3RoZXJfdmFs
dWUKQEAgLTgzLDE1ICs3OSwxNSBAQCBrZXlfMTogb3RoZXJfdmFsdWUKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMS41fSkKIAogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1hbmlmZXN0LmlzX2VtcHR5KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5p
ZmVzdC5yb290LCBtYW5pZmVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5y
b290LCBtYW5pZmVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmlmZXN0Lmhhc19rZXko
ImtleV8xIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaGFzX2tleSgia2V5
XzIiKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZXQobWFuaWZlc3QuaXRlcmtleXMo
KSksIHsia2V5IiwgImtleV8xIn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5p
ZmVzdC5pdGVydmFsdWVzKCkpLCB7InZhbHVlXzEiLCAib3RoZXJfdmFsdWUifSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8x
In0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG1hbmlmZXN0Lml0ZXJ2YWx1ZXMoKSks
IHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQogCiAgICAgZGVmIHRlc3RfaXNfZW1wdHlfMShz
ZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgogW1NlY3Rpb25d
CiAgIFtTdWJzZWN0aW9uXQogIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0cnVubmVy
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weQppbmRleCBjYWMxNzJhNTk0MGVjNjk2ZTNh
M2IyNzkxNzBmOTcxMmFhZjQ2NjhkLi5kMGNjMTk0ODFkYmRlZGM0NWVkZmVlOTYwOGQ4MmRlYjRh
MTk2NTcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRydW5uZXIucHkKQEAgLTMsMTkgKzMsMjEgQEAgZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscwogaW1wb3J0IGpzb24KIGltcG9y
dCBvcwogaW1wb3J0IHN5cworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcwog
CiBmcm9tIHdwdHNlcnZlIGltcG9ydCBzc2x1dGlscwogCi1pbXBvcnQgZW52aXJvbm1lbnQgYXMg
ZW52Ci1pbXBvcnQgcHJvZHVjdHMKLWltcG9ydCB0ZXN0bG9hZGVyCi1pbXBvcnQgd3B0Y29tbWFu
ZGxpbmUKLWltcG9ydCB3cHRsb2dnaW5nCi1pbXBvcnQgd3B0dGVzdAorZnJvbSAuIGltcG9ydCBl
bnZpcm9ubWVudCBhcyBlbnYKK2Zyb20gLiBpbXBvcnQgaW5zdHJ1bWVudHMKK2Zyb20gLiBpbXBv
cnQgcHJvZHVjdHMKK2Zyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgorZnJvbSAuIGltcG9ydCB3cHRj
b21tYW5kbGluZQorZnJvbSAuIGltcG9ydCB3cHRsb2dnaW5nCitmcm9tIC4gaW1wb3J0IHdwdHRl
c3QKIGZyb20gbW96bG9nIGltcG9ydCBjYXB0dXJlLCBoYW5kbGVycwotZnJvbSBmb250IGltcG9y
dCBGb250SW5zdGFsbGVyCi1mcm9tIHRlc3RydW5uZXIgaW1wb3J0IE1hbmFnZXJHcm91cAotZnJv
bSBicm93c2Vycy5iYXNlIGltcG9ydCBOdWxsQnJvd3NlcgorZnJvbSAuZm9udCBpbXBvcnQgRm9u
dEluc3RhbGxlcgorZnJvbSAudGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCitmcm9tIC5i
cm93c2Vycy5iYXNlIGltcG9ydCBOdWxsQnJvd3NlcgogCiBoZXJlID0gb3MucGF0aC5zcGxpdChf
X2ZpbGVfXylbMF0KIApAQCAtNDMsNyArNDUsNyBAQCBkZWYgc2V0dXBfbG9nZ2luZygqYXJncywg
Kiprd2FyZ3MpOgogICAgIHJldHVybiBsb2dnZXIKIAogCi1kZWYgZ2V0X2xvYWRlcih0ZXN0X3Bh
dGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3Mp
OgorZGVmIGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVidWc9Tm9uZSwgcnVuX2lu
Zm9fZXh0cmFzPU5vbmUsIGNodW5rZXJfa3dhcmdzPU5vbmUsICoqa3dhcmdzKToKICAgICBpZiBy
dW5faW5mb19leHRyYXMgaXMgTm9uZToKICAgICAgICAgcnVuX2luZm9fZXh0cmFzID0ge30KIApA
QCAtNzYsNyArNzgsMTAgQEAgZGVmIGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVi
dWc9Tm9uZSwgcnVuX2luZm9fZXh0cmFzPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9jaHVua3M9a3dhcmdzWyJ0b3RhbF9jaHVu
a3MiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua19udW1i
ZXI9a3dhcmdzWyJ0aGlzX2NodW5rIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZV9odHRwcz1zc2xfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBza2lwX3RpbWVvdXQ9a3dhcmdzWyJza2lwX3RpbWVvdXQiXSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3F1aWM9a3dh
cmdzWyJlbmFibGVfcXVpYyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGltZW91dCJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzPWt3YXJn
c1sic2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXMiXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaHVua2VyX2t3YXJncz1jaHVua2VyX2t3YXJncykKICAgICByZXR1
cm4gcnVuX2luZm8sIHRlc3RfbG9hZGVyCiAKIApAQCAtMTAyLDcgKzEwNyw3IEBAIGRlZiBsaXN0
X2Rpc2FibGVkKHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKICAgICBydW5faW5mbywg
dGVzdF9sb2FkZXIgPSBnZXRfbG9hZGVyKHRlc3RfcGF0aHMsIHByb2R1Y3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cnVuX2luZm9fZXh0
cmFzLCAqKmt3YXJncykKIAotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RzIGluIHRlc3RfbG9hZGVy
LmRpc2FibGVkX3Rlc3RzLml0ZXJpdGVtcygpOgorICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RzIGlu
IGl0ZXJpdGVtcyh0ZXN0X2xvYWRlci5kaXNhYmxlZF90ZXN0cyk6CiAgICAgICAgIGZvciB0ZXN0
IGluIHRlc3RzOgogICAgICAgICAgICAgcnYuYXBwZW5kKHsidGVzdCI6IHRlc3QuaWQsICJyZWFz
b24iOiB0ZXN0LmRpc2FibGVkKCl9KQogICAgIHByaW50KGpzb24uZHVtcHMocnYsIGluZGVudD0y
KSkKQEAgLTEyNyw3ICsxMzIsNyBAQCBkZWYgZ2V0X3BhdXNlX2FmdGVyX3Rlc3QodGVzdF9sb2Fk
ZXIsICoqa3dhcmdzKToKICAgICAgICAgaWYga3dhcmdzWyJoZWFkbGVzcyJdOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHRlc3RzID0gdGVzdF9sb2FkZXIudGVzdHMKLSAgICAg
ICAgaXNfc2luZ2xlX3Rlc3RoYXJuZXNzID0gKHN1bShsZW4oaXRlbSkgZm9yIGl0ZW0gaW4gdGVz
dHMuaXRlcnZhbHVlcygpKSA9PSAxIGFuZAorICAgICAgICBpc19zaW5nbGVfdGVzdGhhcm5lc3Mg
PSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHRlc3RzKSkgPT0gMSBhbmQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbih0ZXN0cy5nZXQoInRlc3RoYXJu
ZXNzIiwgW10pKSA9PSAxKQogICAgICAgICBpZiBrd2FyZ3NbInJlcGVhdCJdID09IDEgYW5kIGt3
YXJnc1sicmVydW4iXSA9PSAxIGFuZCBpc19zaW5nbGVfdGVzdGhhcm5lc3M6CiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQpAQCAtMTM4LDcgKzE0MywxMiBAQCBkZWYgZ2V0X3BhdXNlX2FmdGVyX3Rl
c3QodGVzdF9sb2FkZXIsICoqa3dhcmdzKToKIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3Bh
dGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgIiIiU2V0IHVwIHRoZSB0ZXN0IGVudmlyb25t
ZW50LCBsb2FkIHRoZSBsaXN0IG9mIHRlc3RzIHRvIGJlIGV4ZWN1dGVkLCBhbmQKICAgICBpbnZv
a2UgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29kZSB0byBleGVjdXRlIHRlc3RzIiIiCi0gICAgd2l0
aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8i
XSk6CisgICAgaWYga3dhcmdzWyJpbnN0cnVtZW50X3RvX2ZpbGUiXSBpcyBOb25lOgorICAgICAg
ICByZWNvcmRlciA9IGluc3RydW1lbnRzLk51bGxJbnN0cnVtZW50KCkKKyAgICBlbHNlOgorICAg
ICAgICByZWNvcmRlciA9IGluc3RydW1lbnRzLkluc3RydW1lbnQoa3dhcmdzWyJpbnN0cnVtZW50
X3RvX2ZpbGUiXSkKKyAgICB3aXRoIHJlY29yZGVyIGFzIHJlY29yZGluZywgY2FwdHVyZS5DYXB0
dXJlSU8obG9nZ2VyLCBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0ZGlvIl0pOgorICAgICAgICBy
ZWNvcmRpbmcuc2V0KFsic3RhcnR1cCJdKQogICAgICAgICBlbnYuZG9fZGVsYXllZF9pbXBvcnRz
KGxvZ2dlciwgdGVzdF9wYXRocykKIAogICAgICAgICBwcm9kdWN0ID0gcHJvZHVjdHMubG9hZF9w
cm9kdWN0KGNvbmZpZywgcHJvZHVjdCwgbG9hZF9jbHM9VHJ1ZSkKQEAgLTE0OSwyMiArMTU5LDI5
IEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6
CiAKICAgICAgICAgaWYga3dhcmdzWyJpbnN0YWxsX2ZvbnRzIl06CiAgICAgICAgICAgICBlbnZf
ZXh0cmFzLmFwcGVuZChGb250SW5zdGFsbGVyKAorICAgICAgICAgICAgICAgIGxvZ2dlciwKICAg
ICAgICAgICAgICAgICBmb250X2Rpcj1rd2FyZ3NbImZvbnRfZGlyIl0sCiAgICAgICAgICAgICAg
ICAgYWhlbT1vcy5wYXRoLmpvaW4odGVzdF9wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0sICJmb250
cy9BaGVtLnR0ZiIpCiAgICAgICAgICAgICApKQogCi0gICAgICAgIHJ1bl9pbmZvLCB0ZXN0X2xv
YWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9kdWN0Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm9fZXh0cmFzPXByb2R1Y3QucnVuX2luZm9fZXh0cmFz
KCoqa3dhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
Kmt3YXJncykKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0YXJ0dXAiLCAibG9hZF90ZXN0cyJd
KQogCiAgICAgICAgIHRlc3Rfc291cmNlX2t3YXJncyA9IHsicHJvY2Vzc2VzIjoga3dhcmdzWyJw
cm9jZXNzZXMiXX0KKyAgICAgICAgY2h1bmtlcl9rd2FyZ3MgPSB7fQogICAgICAgICBpZiBrd2Fy
Z3NbInJ1bl9ieV9kaXIiXSBpcyBGYWxzZToKICAgICAgICAgICAgIHRlc3Rfc291cmNlX2NscyA9
IHRlc3Rsb2FkZXIuU2luZ2xlVGVzdFNvdXJjZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
IyBBIHZhbHVlIG9mIE5vbmUgaW5kaWNhdGVzIGluZmluaXRlIGRlcHRoCiAgICAgICAgICAgICB0
ZXN0X3NvdXJjZV9jbHMgPSB0ZXN0bG9hZGVyLlBhdGhHcm91cGVkU291cmNlCiAgICAgICAgICAg
ICB0ZXN0X3NvdXJjZV9rd2FyZ3NbImRlcHRoIl0gPSBrd2FyZ3NbInJ1bl9ieV9kaXIiXQorICAg
ICAgICAgICAgY2h1bmtlcl9rd2FyZ3NbImRlcHRoIl0gPSBrd2FyZ3NbInJ1bl9ieV9kaXIiXQor
CisgICAgICAgIHJ1bl9pbmZvLCB0ZXN0X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lm5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm9fZXh0
cmFzPXByb2R1Y3QucnVuX2luZm9fZXh0cmFzKCoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua2VyX2t3YXJncz1jaHVua2VyX2t3YXJncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKKwog
CiAgICAgICAgIGxvZ2dlci5pbmZvKCJVc2luZyAlaSBjbGllbnQgcHJvY2Vzc2VzIiAlIGt3YXJn
c1sicHJvY2Vzc2VzIl0pCiAKQEAgLTE4OCwxOSArMjA1LDI0IEBAIGRlZiBydW5fdGVzdHMoY29u
ZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAKICAgICAgICAgdGVzdGhhcm5l
c3NfdGltZW91dF9tdWx0aXBsZXIgPSBwcm9kdWN0LmdldF90aW1lb3V0X211bHRpcGxpZXIoInRl
c3RoYXJuZXNzIiwgcnVuX2luZm8sICoqa3dhcmdzKQogCisgICAgICAgIHJlY29yZGluZy5zZXQo
WyJzdGFydHVwIiwgInN0YXJ0X2Vudmlyb25tZW50Il0pCiAgICAgICAgIHdpdGggZW52LlRlc3RF
bnZpcm9ubWVudCh0ZXN0X3BhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrd2FyZ3NbInBhdXNlX2FmdGVyX3Rlc3QiXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZHVjdC5lbnZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNzbF9jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnZfZXh0cmFzKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW52X2V4dHJhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3
YXJnc1siZW5hYmxlX3F1aWMiXSkgYXMgdGVzdF9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHJl
Y29yZGluZy5zZXQoWyJzdGFydHVwIiwgImVuc3VyZV9lbnZpcm9ubWVudCJdKQogICAgICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgICAgIHRlc3RfZW52aXJvbm1lbnQuZW5zdXJlX3N0YXJ0ZWQo
KQogICAgICAgICAgICAgZXhjZXB0IGVudi5UZXN0RW52aXJvbm1lbnRFcnJvciBhcyBlOgogICAg
ICAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiRXJyb3Igc3RhcnRpbmcgdGVzdCBlbnZpcm9u
bWVudDogJXMiICUgZS5tZXNzYWdlKQogICAgICAgICAgICAgICAgIHJhaXNlCiAKKyAgICAgICAg
ICAgIHJlY29yZGluZy5zZXQoWyJzdGFydHVwIl0pCisKICAgICAgICAgICAgIHJlcGVhdCA9IGt3
YXJnc1sicmVwZWF0Il0KICAgICAgICAgICAgIHJlcGVhdF9jb3VudCA9IDAKICAgICAgICAgICAg
IHJlcGVhdF91bnRpbF91bmV4cGVjdGVkID0ga3dhcmdzWyJyZXBlYXRfdW50aWxfdW5leHBlY3Rl
ZCJdCkBAIC0yMTQsNyArMjM2LDEyIEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhz
LCBwcm9kdWN0LCAqKmt3YXJncyk6CiAKICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50ID0gMAog
ICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfY291bnQgPSAwCi0gICAgICAgICAgICAgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KHRlc3RfbG9hZGVyLnRlc3RfaWRzLAorCisgICAgICAgICAgICAgICAg
dGVzdHMgPSBbXQorICAgICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4gdGVzdF9sb2FkZXIu
dGVzdF90eXBlczoKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKHRlc3RfbG9hZGVy
LnRlc3RzW3Rlc3RfdHlwZV0pCisKKyAgICAgICAgICAgICAgICBsb2dnZXIuc3VpdGVfc3RhcnQo
dGVzdF9zb3VyY2VfY2xzLnRlc3RzX2J5X2dyb3VwKHRlc3RzLCAqKnRlc3Rfc291cmNlX2t3YXJn
cyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J3dlYi1wbGF0Zm9y
bS10ZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm89cnVu
X2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPXsicnVuX2J5
X2RpciI6IGt3YXJnc1sicnVuX2J5X2RpciJdfSkKQEAgLTI2Niw2ICsyOTMsNyBAQCBkZWYgcnVu
X3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgICAgICAg
ICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3Rlc3RzID0gdGVz
dF9sb2FkZXIudGVzdHMKIAorICAgICAgICAgICAgICAgICAgICByZWNvcmRpbmcucGF1c2UoKQog
ICAgICAgICAgICAgICAgICAgICB3aXRoIE1hbmFnZXJHcm91cCgid2ViLXBsYXRmb3JtLXRlc3Rz
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJwcm9jZXNz
ZXMiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9zb3VyY2Vf
Y2xzLApAQCAtMjc5LDcgKzMwNyw4IEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhz
LCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sicGF1c2Vfb25fdW5leHBlY3RlZCJdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrd2FyZ3NbInJlc3RhcnRfb25fdW5leHBlY3RlZCJdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVnX2luZm8iXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGt3YXJnc1sibm9fY2FwdHVy
ZV9zdGRpbyJdKSBhcyBtYW5hZ2VyX2dyb3VwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0ZGlvIl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZz1yZWNvcmRpbmcpIGFzIG1hbmFnZXJf
Z3JvdXA6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFuYWdlcl9ncm91cC5ydW4odGVzdF90eXBlLCBydW5fdGVzdHMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CkBAIC0yODgsNyArMzE3
LDcgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdz
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb3VudCArPSBtYW5hZ2VyX2dyb3VwLnRlc3RfY291bnQoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCArPSBtYW5hZ2VyX2dyb3VwLnVuZXhwZWN0
ZWRfY291bnQoKQotCisgICAgICAgICAgICAgICAgcmVjb3JkaW5nLnNldChbImFmdGVyLWVuZCJd
KQogICAgICAgICAgICAgICAgIHRlc3RfdG90YWwgKz0gdGVzdF9jb3VudAogICAgICAgICAgICAg
ICAgIHVuZXhwZWN0ZWRfdG90YWwgKz0gdW5leHBlY3RlZF9jb3VudAogICAgICAgICAgICAgICAg
IGxvZ2dlci5pbmZvKCJHb3QgJWkgdW5leHBlY3RlZCByZXN1bHRzIiAlIHVuZXhwZWN0ZWRfY291
bnQpCkBAIC0zMTcsNyArMzQ2LDcgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMs
IHByb2R1Y3QsICoqa3dhcmdzKToKIAogCiBkZWYgY2hlY2tfc3RhYmlsaXR5KCoqa3dhcmdzKToK
LSAgICBpbXBvcnQgc3RhYmlsaXR5CisgICAgZnJvbSAuIGltcG9ydCBzdGFiaWxpdHkKICAgICBp
ZiBrd2FyZ3NbInN0YWJpbGl0eSJdOgogICAgICAgICBsb2dnZXIud2FybmluZygiLS1zdGFiaWxp
dHkgaXMgZGVwcmVjYXRlZDsgcGxlYXNlIHVzZSAtLXZlcmlmeSBpbnN0ZWFkISIpCiAgICAgICAg
IGt3YXJnc1sndmVyaWZ5X21heF90aW1lJ10gPSBOb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHR0ZXN0LnB5CmluZGV4IDFkMTRmNGVmZWVh
ZTI3OWMyYzM2MGZiYTEzODhlYTVmM2E0Mzg3N2YuLjZiMGZhYjZlZWJhZjUwNWZmZDIwNzEwZTFh
MmNhNDZlM2Q2ZjU5ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHR0ZXN0LnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHR0ZXN0LnB5CkBAIC0xLDcgKzEsOSBAQAogaW1wb3J0IG9zCiBpbXBv
cnQgc3VicHJvY2VzcworaW1wb3J0IHN5cwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcywgc3RyaW5nX3R5cGVzCiAKIGZyb20gLndwdG1hbmlmZXN0LnBh
cnNlciBpbXBvcnQgYXRvbXMKIApAQCAtOTIsNyArOTQsNyBAQCBjbGFzcyBSdW5JbmZvKGRpY3Qp
OgogICAgICAgICBzZWxmLl91cGRhdGVfbW96aW5mbyhtZXRhZGF0YV9yb290KQogICAgICAgICBz
ZWxmLnVwZGF0ZShtb3ppbmZvLmluZm8pCiAKLSAgICAgICAgZnJvbSB1cGRhdGUudHJlZSBpbXBv
cnQgR2l0VHJlZQorICAgICAgICBmcm9tIC51cGRhdGUudHJlZSBpbXBvcnQgR2l0VHJlZQogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAjIEdpdFRyZWUuX19pbml0X18gdGhyb3dzIGlmIHdlIGFy
ZSBub3QgaW4gYSBnaXQgdHJlZS4KICAgICAgICAgICAgIHJldiA9IEdpdFRyZWUobG9nX2Vycm9y
PUZhbHNlKS5yZXYKQEAgLTEwMSw2ICsxMDMsNyBAQCBjbGFzcyBSdW5JbmZvKGRpY3QpOgogICAg
ICAgICBpZiByZXY6CiAgICAgICAgICAgICBzZWxmWyJyZXZpc2lvbiJdID0gcmV2CiAKKyAgICAg
ICAgc2VsZlsicHl0aG9uX3ZlcnNpb24iXSA9IHN5cy52ZXJzaW9uX2luZm8ubWFqb3IKICAgICAg
ICAgc2VsZlsicHJvZHVjdCJdID0gcHJvZHVjdAogICAgICAgICBpZiBkZWJ1ZyBpcyBub3QgTm9u
ZToKICAgICAgICAgICAgIHNlbGZbImRlYnVnIl0gPSBkZWJ1ZwpAQCAtMTE4LDIyICsxMjEsOSBA
QCBjbGFzcyBSdW5JbmZvKGRpY3QpOgogICAgICAgICBpZiBleHRyYXMgaXMgbm90IE5vbmU6CiAg
ICAgICAgICAgICBzZWxmLnVwZGF0ZShleHRyYXMpCiAKLSAgICAgICAgIyBVbnRpbCB0aGUgdGVz
dCBoYXJuZXNzIGNhbiB1bmRlcnN0YW5kIGRlZmF1bHQgcHJlZiB2YWx1ZXMsCi0gICAgICAgICMg
KGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc5MTIpIHRo
aXMgdmFsdWUKLSAgICAgICAgIyBzaG91bGQgYnkgc3luY2hyb25pemVkIHdpdGggdGhlIGRlZmF1
bHQgcHJlZiB2YWx1ZSBpbmRpY2F0ZWQgaW4KLSAgICAgICAgIyBTdGF0aWNQcmVmTGlzdC55YW1s
LgotICAgICAgICAjCi0gICAgICAgICMgQ3VycmVudGx5IGZvciBhdXRvbWF0aW9uLCB0aGUgcHJl
ZiAoYW5kIGBzdy1lMTBzYCkgZGVmYXVsdHMgdG8gdHJ1ZSBpbgotICAgICAgICAjIG5pZ2h0bHkg
YnVpbGRzIGFuZCBmYWxzZSBvdGhlcndpc2UgYnV0IGNhbiBiZSBvdmVycmlkZGVuIHdpdGgKLSAg
ICAgICAgIyBgLS1zZXRwcmVmYC4gSWYgb3ZlcnJpZGRlbiwgdGhlIHZhbHVlIHdvdWxkIGJlIGlu
aXRpYWxpemVkIGluCi0gICAgICAgICMgYHJ1bl9pbmZvX2V4dHJhc2AgYW5kIGJlIHN1cHBsaWVk
IGluIHRoZSBgZXh0cmFzYCBwYXJhbWV0ZXIuCi0gICAgICAgIGlmICJzdy1lMTBzIiBub3QgaW4g
c2VsZjoKLSAgICAgICAgICAgIHNlbGZbInN3LWUxMHMiXSA9IHNlbGYuZ2V0KCJuaWdodGx5X2J1
aWxkIiwgRmFsc2UpCi0KICAgICAgICAgc2VsZlsiaGVhZGxlc3MiXSA9IGV4dHJhcy5nZXQoImhl
YWRsZXNzIiwgRmFsc2UpCiAgICAgICAgIHNlbGZbIndlYnJlbmRlciJdID0gZW5hYmxlX3dlYnJl
bmRlcgogCi0KICAgICBkZWYgX3VwZGF0ZV9tb3ppbmZvKHNlbGYsIG1ldGFkYXRhX3Jvb3QpOgog
ICAgICAgICAiIiJBZGQgZXh0cmEgYnVpbGQgaW5mb3JtYXRpb24gZnJvbSBhIG1vemluZm8uanNv
biBmaWxlIGluIGEgcGFyZW50CiAgICAgICAgIGRpcmVjdG9yeSIiIgpAQCAtMTUwLDYgKzE0MCwx
NCBAQCBjbGFzcyBSdW5JbmZvKGRpY3QpOgogICAgICAgICBtb3ppbmZvLmZpbmRfYW5kX3VwZGF0
ZV9mcm9tX2pzb24oKmRpcnMpCiAKIAorZGVmIHNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVt
KToKKyAgICBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJoMiIpIGFuZCBtYW5pZmVzdF9pdGVt
LmgyOgorICAgICAgICByZXR1cm4gImgyIgorICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwg
Imh0dHBzIikgYW5kIG1hbmlmZXN0X2l0ZW0uaHR0cHM6CisgICAgICAgIHJldHVybiAiaHR0cHMi
CisgICAgcmV0dXJuICJodHRwIgorCisKIGNsYXNzIFRlc3Qob2JqZWN0KToKIAogICAgIHJlc3Vs
dF9jbHMgPSBOb25lCkBAIC0xNjAsMTQgKzE1OCwxNCBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAg
ICAgbG9uZ190aW1lb3V0ID0gNjAgICMgc2Vjb25kcwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHRlc3RzX3Jvb3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKLSAgICAg
ICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIik6Cisg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCBwcm90b2NvbD0iaHR0cCIs
IHF1aWM9RmFsc2UpOgogICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSB0ZXN0c19yb290CiAgICAg
ICAgIHNlbGYudXJsID0gdXJsCiAgICAgICAgIHNlbGYuX2luaGVyaXRfbWV0YWRhdGEgPSBpbmhl
cml0X21ldGFkYXRhCiAgICAgICAgIHNlbGYuX3Rlc3RfbWV0YWRhdGEgPSB0ZXN0X21ldGFkYXRh
CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQgaWYgdGltZW91dCBpcyBub3QgTm9uZSBl
bHNlIHNlbGYuZGVmYXVsdF90aW1lb3V0CiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLSAgICAg
ICAgc2VsZi5lbnZpcm9ubWVudCA9IHsicHJvdG9jb2wiOiBwcm90b2NvbCwgInByZWZzIjogc2Vs
Zi5wcmVmc30KKyAgICAgICAgc2VsZi5lbnZpcm9ubWVudCA9IHsicHJvdG9jb2wiOiBwcm90b2Nv
bCwgInByZWZzIjogc2VsZi5wcmVmcywgInF1aWMiOiBxdWljfQogCiAgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBUZXN0KToKQEAg
LTE4NiwxNCArMTg0LDEzIEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgZnJvbV9tYW5pZmVzdChjbHMsIG1hbmlmZXN0X2ZpbGUsIG1hbmlmZXN0X2l0ZW0s
IGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEpOgogICAgICAgICB0aW1lb3V0ID0gY2xz
LmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF9pdGVtLnRpbWVvdXQgPT0gImxvbmciIGVsc2UgY2xz
LmRlZmF1bHRfdGltZW91dAotICAgICAgICBwcm90b2NvbCA9ICJodHRwcyIgaWYgaGFzYXR0ciht
YW5pZmVzdF9pdGVtLCAiaHR0cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwcyBlbHNlICJodHRw
IgogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAgICAgICAg
ICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAgICAgICAgICAgICBpbmhlcml0
X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHBhdGg9b3MucGF0
aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZlc3RfaXRlbS5wYXRoKSwKLSAg
ICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCkKKyAgICAgICAgICAgICAgICAgICBw
cm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSkpCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgaWQoc2VsZik6CkBAIC0yNjIsNiArMjU5LDEzIEBAIGNsYXNzIFRlc3Qob2JqZWN0
KToKICAgICAgICAgICAgICAgICByZXR1cm4gY291bnQKICAgICAgICAgcmV0dXJuIDAKIAorICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBmb3IgbWV0
YSBpbiBzZWxmLml0ZXJtZXRhKCk6CisgICAgICAgICAgICBpZiBtZXRhLmxzYW5fZGlzYWJsZWQg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGEubHNhbl9kaXNhYmxlZAor
ICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93
ZWQoc2VsZik6CiAgICAgICAgIGxzYW5fYWxsb3dlZCA9IHNldCgpCkBAIC0yOTUsNyArMjk5LDcg
QEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgICAgICBydiA9IHt9CiAgICAgICAgIGZvciBtZXRh
IGluIHNlbGYuaXRlcm1ldGEoTm9uZSk6CiAgICAgICAgICAgICB0aHJlc2hvbGQgPSBtZXRhLmxl
YWtfdGhyZXNob2xkCi0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0aHJlc2hvbGQuaXRl
cml0ZW1zKCk6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXModGhyZXNo
b2xkKToKICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIHJ2OgogICAgICAgICAgICAgICAg
ICAgICBydltrZXldID0gdmFsdWUKICAgICAgICAgcmV0dXJuIHJ2CkBAIC0zMzcsNyArMzQxLDcg
QEAgY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGV4cGVj
dGVkID0gbWV0YWRhdGEuZ2V0KCJleHBlY3RlZCIpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNl
KGV4cGVjdGVkLCAoYmFzZXN0cmluZykpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBl
Y3RlZCwgc3RyaW5nX3R5cGVzKToKICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQKICAg
ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgbGlzdCk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4cGVjdGVkWzBdCkBAIC0zNDYsNiArMzUwLDE2IEBAIGNsYXNzIFRlc3Qob2Jq
ZWN0KToKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIGRlZmF1
bHQKIAorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMoc2VsZik6CisgICAgICAgIGltcGxl
bWVudGF0aW9uX3N0YXR1cyA9IE5vbmUKKyAgICAgICAgZm9yIG1ldGEgaW4gc2VsZi5pdGVybWV0
YSgpOgorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25fc3RhdHVzID0gbWV0YS5pbXBsZW1lbnRh
dGlvbl9zdGF0dXMKKyAgICAgICAgICAgIGlmIGltcGxlbWVudGF0aW9uX3N0YXR1czoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb25fc3RhdHVzCisKKyAgICAgICAgIyBhc3N1
bWluZyBubyBzcGVjaWZpYyBjYXNlLCB3ZSBhcmUgaW1wbGVtZW50aW5nIGl0CisgICAgICAgIHJl
dHVybiAiaW1wbGVtZW50aW5nIgorCiAgICAgZGVmIGtub3duX2ludGVybWl0dGVudChzZWxmLCBz
dWJ0ZXN0PU5vbmUpOgogICAgICAgICBtZXRhZGF0YSA9IHNlbGYuX2dldF9tZXRhZGF0YShzdWJ0
ZXN0KQogICAgICAgICBpZiBtZXRhZGF0YSBpcyBOb25lOgpAQCAtMzgxLDkgKzM5NSw5IEBAIGNs
YXNzIFRlc3RoYXJuZXNzVGVzdChUZXN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0
c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsCiAgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCBwcm90b2NvbD0iaHR0cCIsIHRlc3Rkcml2
ZXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGpzc2hlbGw9RmFsc2UsIHNjcmlwdHM9Tm9uZSk6
CisgICAgICAgICAgICAgICAgIGpzc2hlbGw9RmFsc2UsIHNjcmlwdHM9Tm9uZSwgcXVpYz1GYWxz
ZSk6CiAgICAgICAgIFRlc3QuX19pbml0X18oc2VsZiwgdGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0
X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLCB0aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAg
IHBhdGgsIHByb3RvY29sKQorICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHByb3RvY29sLCBx
dWljKQogCiAgICAgICAgIHNlbGYudGVzdGRyaXZlciA9IHRlc3Rkcml2ZXIKICAgICAgICAgc2Vs
Zi5qc3NoZWxsID0ganNzaGVsbApAQCAtMzkyLDIyICs0MDYsMjMgQEAgY2xhc3MgVGVzdGhhcm5l
c3NUZXN0KFRlc3QpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tX21hbmlmZXN0KGNs
cywgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfaXRlbSwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9t
ZXRhZGF0YSk6CiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9uZ190aW1lb3V0IGlmIG1hbmlmZXN0
X2l0ZW0udGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVmYXVsdF90aW1lb3V0Ci0gICAgICAg
IHByb3RvY29sID0gImh0dHBzIiBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJodHRwcyIpIGFu
ZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVsc2UgImh0dHAiCiAgICAgICAgIHRlc3Rkcml2ZXIgPSBt
YW5pZmVzdF9pdGVtLnRlc3Rkcml2ZXIgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAidGVzdGRy
aXZlciIpIGVsc2UgRmFsc2UKICAgICAgICAganNzaGVsbCA9IG1hbmlmZXN0X2l0ZW0uanNzaGVs
bCBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJqc3NoZWxsIikgZWxzZSBGYWxzZQorICAgICAg
ICBxdWljID0gbWFuaWZlc3RfaXRlbS5xdWljIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgInF1
aWMiKSBlbHNlIEZhbHNlCiAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IG1hbmlmZXN0X2l0ZW0u
c2NyaXB0X21ldGFkYXRhIG9yIFtdCi0gICAgICAgIHNjcmlwdHMgPSBbdiBmb3IgKGssIHYpIGlu
IHNjcmlwdF9tZXRhZGF0YSBpZiBrID09IGIic2NyaXB0Il0KKyAgICAgICAgc2NyaXB0cyA9IFt2
IGZvciAoaywgdikgaW4gc2NyaXB0X21ldGFkYXRhCisgICAgICAgICAgICAgICAgICAgaWYgayA9
PSAic2NyaXB0Il0KICAgICAgICAgcmV0dXJuIGNscyhtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
CiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbS51cmwsCiAgICAgICAgICAgICAgICAg
ICAgaW5oZXJpdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICB0ZXN0X21ldGFkYXRhLAog
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKICAgICAgICAgICAgICAgICAgICBw
YXRoPW9zLnBhdGguam9pbihtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsIG1hbmlmZXN0X2l0ZW0u
cGF0aCksCi0gICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9cHJvdG9jb2wsCisgICAgICAgICAg
ICAgICAgICAgcHJvdG9jb2w9c2VydmVyX3Byb3RvY29sKG1hbmlmZXN0X2l0ZW0pLAogICAgICAg
ICAgICAgICAgICAgIHRlc3Rkcml2ZXI9dGVzdGRyaXZlciwKICAgICAgICAgICAgICAgICAgICBq
c3NoZWxsPWpzc2hlbGwsCi0gICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3JpcHRzCi0gICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgIHNjcmlwdHM9c2NyaXB0cywKKyAg
ICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaWQo
c2VsZik6CkBAIC00MjMsMTMgKzQzOCwyNCBAQCBjbGFzcyBNYW51YWxUZXN0KFRlc3QpOgogCiAK
IGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgorICAgICIiIkEgcmVmdGVzdAorCisgICAgQSByZWZ0
ZXN0IHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIHBhc3MgaWYgb25lIG9mIGl0cyByZWZlcmVuY2Vz
IG1hdGNoZXMgKHNlZSBiZWxvdykgKmFuZCogdGhlCisgICAgcmVmZXJlbmNlIHBhc3NlcyBpZiBp
dCBoYXMgYW55IHJlZmVyZW5jZXMgcmVjdXJzaXZlbHkuCisKKyAgICBBdHRyaWJ1dGVzOgorICAg
ICAgICByZWZlcmVuY2VzIChMaXN0W1R1cGxlW3N0ciwgc3RyXV0pOiBhIGxpc3Qgb2YgYWx0ZXJu
YXRlIHJlZmVyZW5jZXMsIHdoZXJlIG9uZSBtdXN0IG1hdGNoIGZvciB0aGUgdGVzdCB0byBwYXNz
CisgICAgICAgIHZpZXdwb3J0X3NpemUgKE9wdGlvbmFsW1R1cGxlW2ludCwgaW50XV0pOiBzaXpl
IG9mIHRoZSB2aWV3cG9ydCBmb3IgdGhpcyB0ZXN0LCBpZiBub3QgZGVmYXVsdAorICAgICAgICBk
cGkgKE9wdGlvbmFsW2ludF0pOiBkcGkgdG8gdXNlIHdoZW4gcmVuZGVyaW5nIHRoaXMgdGVzdCwg
aWYgbm90IGRlZmF1bHQKKworICAgICIiIgogICAgIHJlc3VsdF9jbHMgPSBSZWZ0ZXN0UmVzdWx0
CiAgICAgdGVzdF90eXBlID0gInJlZnRlc3QiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLCByZWZlcmVuY2Vz
LAotICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6
ZT1Ob25lLCBkcGk9Tm9uZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiKToKKyAgICAgICAg
ICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHZpZXdwb3J0X3NpemU9Tm9uZSwgZHBp
PU5vbmUsIGZ1enp5PU5vbmUsIHByb3RvY29sPSJodHRwIiwgcXVpYz1GYWxzZSk6CiAgICAgICAg
IFRlc3QuX19pbml0X18oc2VsZiwgdGVzdHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0
ZXN0X21ldGFkYXRhLCB0aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHByb3Rv
Y29sKQorICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHByb3RvY29sLCBxdWljKQogCiAgICAg
ICAgIGZvciBfLCByZWZfdHlwZSBpbiByZWZlcmVuY2VzOgogICAgICAgICAgICAgaWYgcmVmX3R5
cGUgbm90IGluICgiPT0iLCAiIT0iKToKQEAgLTQ0NSwxNiArNDcxLDEwIEBAIGNsYXNzIFJlZnRl
c3RUZXN0KFRlc3QpOgogICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBp
bmhlcml0X21ldGFkYXRhLAotICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgbm9kZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBy
ZWZlcmVuY2VzX3NlZW49Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0
YSk6CiAKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfdGVz
dC50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLQotICAgICAgICBp
ZiBub2RlcyBpcyBOb25lOgotICAgICAgICAgICAgbm9kZXMgPSB7fQotICAgICAgICBpZiByZWZl
cmVuY2VzX3NlZW4gaXMgTm9uZToKLSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2VlbiA9IHNldCgp
CisgICAgICAgIHF1aWMgPSBtYW5pZmVzdF90ZXN0LnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF90
ZXN0LCAicXVpYyIpIGVsc2UgRmFsc2UKIAogICAgICAgICB1cmwgPSBtYW5pZmVzdF90ZXN0LnVy
bAogCkBAIC00NjcsNDEgKzQ4Nyw2MCBAQCBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToKICAgICAg
ICAgICAgICAgICAgICBwYXRoPW1hbmlmZXN0X3Rlc3QucGF0aCwKICAgICAgICAgICAgICAgICAg
ICB2aWV3cG9ydF9zaXplPW1hbmlmZXN0X3Rlc3Qudmlld3BvcnRfc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICBkcGk9bWFuaWZlc3RfdGVzdC5kcGksCi0gICAgICAgICAgICAgICAgICAgcHJvdG9j
b2w9Imh0dHBzIiBpZiBoYXNhdHRyKG1hbmlmZXN0X3Rlc3QsICJodHRwcyIpIGFuZCBtYW5pZmVz
dF90ZXN0Lmh0dHBzIGVsc2UgImh0dHAiLAotICAgICAgICAgICAgICAgICAgIGZ1enp5PW1hbmlm
ZXN0X3Rlc3QuZnV6enkpCisgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9c2VydmVyX3Byb3Rv
Y29sKG1hbmlmZXN0X3Rlc3QpLAorICAgICAgICAgICAgICAgICAgIGZ1enp5PW1hbmlmZXN0X3Rl
c3QuZnV6enksCisgICAgICAgICAgICAgICAgICAgcXVpYz1xdWljKQogCi0gICAgICAgIG5vZGVz
W3VybF0gPSBub2RlCisgICAgICAgIHJlZnNfYnlfdHlwZSA9IGRlZmF1bHRkaWN0KGxpc3QpCiAK
ICAgICAgICAgZm9yIHJlZl91cmwsIHJlZl90eXBlIGluIG1hbmlmZXN0X3Rlc3QucmVmZXJlbmNl
czoKLSAgICAgICAgICAgIGNvbXBhcmlzb25fa2V5ID0gKHJlZl90eXBlLCkgKyB0dXBsZShzb3J0
ZWQoW3VybCwgcmVmX3VybF0pKQotICAgICAgICAgICAgaWYgcmVmX3VybCBpbiBub2RlczoKLSAg
ICAgICAgICAgICAgICBtYW5pZmVzdF9ub2RlID0gcmVmX3VybAotICAgICAgICAgICAgICAgIGlm
IGNvbXBhcmlzb25fa2V5IGluIHJlZmVyZW5jZXNfc2VlbjoKLSAgICAgICAgICAgICAgICAgICAg
IyBXZSBoYXZlIHJlYWNoZWQgYSBjeWNsZSBzbyBzdG9wIGhlcmUKLSAgICAgICAgICAgICAgICAg
ICAgIyBOb3RlIHRoYXQganVzdCBzZWVpbmcgYSBub2RlIGZvciB0aGUgc2Vjb25kIHRpbWUgaXMg
bm90Ci0gICAgICAgICAgICAgICAgICAgICMgZW5vdWdoIHRvIGRldGVjdCBhIGN5Y2xlIGJlY2F1
c2UKLSAgICAgICAgICAgICAgICAgICAgIyBBICE9IEIgIT0gQyAhPSBBIG11c3QgaW5jbHVkZSBD
ICE9IEEKLSAgICAgICAgICAgICAgICAgICAgIyBidXQgQSA9PSBCID09IEEgc2hvdWxkIG5vdCBp
bmNsdWRlIHRoZSByZWR1bmRhbnQgQiA9PSBBLgotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQotCi0gICAgICAgICAgICByZWZlcmVuY2VzX3NlZW4uYWRkKGNvbXBhcmlzb25fa2V5KQotCi0g
ICAgICAgICAgICBtYW5pZmVzdF9ub2RlID0gbWFuaWZlc3RfZmlsZS5nZXRfcmVmZXJlbmNlKHJl
Zl91cmwpCi0gICAgICAgICAgICBpZiBtYW5pZmVzdF9ub2RlOgotICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZSA9IFJlZnRlc3RUZXN0LmZyb21fbWFuaWZlc3QobWFuaWZlc3RfZmlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0
X25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNfc2VlbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgcmVmZXJlbmNlID0gUmVmdGVzdFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19y
b290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZl91cmwsCisg
ICAgICAgICAgICByZWZzX2J5X3R5cGVbcmVmX3R5cGVdLmFwcGVuZChyZWZfdXJsKQorCisgICAg
ICAgICMgQ29uc3RydWN0IGEgbGlzdCBvZiBhbGwgdGhlIG1pc21hdGNoZXMsIHdoZXJlIHdlIGVu
ZCB1cCB3aXRoIG1pc21hdGNoXzEgIT0gdXJsICE9CisgICAgICAgICMgbWlzbWF0Y2hfMiAhPSB1
cmwgIT0gbWlzbWF0Y2hfMyBldGMuCisgICAgICAgICMKKyAgICAgICAgIyBQZXIgdGhlIGxvZ2lj
IGRvY3VtZW50ZWQgYWJvdmUsIHRoaXMgbWVhbnMgdGhhdCBub25lIG9mIHRoZSBtaXNtYXRjaGVz
IHByb3ZpZGVkIG1hdGNoLAorICAgICAgICBtaXNtYXRjaF93YWxrID0gTm9uZQorICAgICAgICBp
ZiByZWZzX2J5X3R5cGVbIiE9Il06CisgICAgICAgICAgICBtaXNtYXRjaF93YWxrID0gUmVmdGVz
dFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZnNfYnlfdHlwZVsiIT0iXVswXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdKQotCi0gICAgICAgICAgICBub2RlLnJlZmVyZW5jZXMuYXBwZW5kKChyZWZlcmVuY2UsIHJl
Zl90eXBlKSkKKyAgICAgICAgICAgIGNtcF9yZWYgPSBtaXNtYXRjaF93YWxrCisgICAgICAgICAg
ICBmb3IgcmVmX3VybCBpbiByZWZzX2J5X3R5cGVbIiE9Il1bMTpdOgorICAgICAgICAgICAgICAg
IGNtcF9zZWxmID0gUmVmdGVzdFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
CisgICAgICAgICAgICAgICAgY21wX3JlZi5yZWZlcmVuY2VzLmFwcGVuZCgoY21wX3NlbGYsICIh
PSIpKQorICAgICAgICAgICAgICAgIGNtcF9yZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxl
LnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZl91
cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSkKKyAgICAgICAgICAgICAgICBjbXBfc2VsZi5yZWZlcmVuY2Vz
LmFwcGVuZCgoY21wX3JlZiwgIiE9IikpCisKKyAgICAgICAgaWYgbWlzbWF0Y2hfd2FsayBpcyBO
b25lOgorICAgICAgICAgICAgbWlzbWF0Y2hfcmVmcyA9IFtdCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBtaXNtYXRjaF9yZWZzID0gWyhtaXNtYXRjaF93YWxrLCAiIT0iKV0KKworICAgICAg
ICBpZiByZWZzX2J5X3R5cGVbIj09Il06CisgICAgICAgICAgICAjIEZvciBlYWNoID09IHJlZiwg
YWRkIGEgcmVmZXJlbmNlIHRvIHRoaXMgbm9kZSB3aG9zZSB0YWlsIGlzIHRoZSBtaXNtYXRjaCBs
aXN0LgorICAgICAgICAgICAgIyBQZXIgdGhlIGxvZ2ljIGRvY3VtZW50ZWQgYWJvdmUsIHRoaXMg
bWVhbnMgYW55IG9uZSBvZiB0aGUgbWF0Y2hlcyBtdXN0IHBhc3MgcGx1cyBhbGwgdGhlIG1pc21h
dGNoZXMuCisgICAgICAgICAgICBmb3IgcmVmX3VybCBpbiByZWZzX2J5X3R5cGVbIj09Il06Cisg
ICAgICAgICAgICAgICAgcmVmID0gUmVmdGVzdFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19yb290
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZl91cmwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNtYXRjaF9y
ZWZzKQorICAgICAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZiwgIj09Iikp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE90aGVyd2lzZSwgd2UganVzdCBhZGQgdGhl
IG1pc21hdGNoZXMgZGlyZWN0bHkgYXMgd2UgYXJlIGltbWVkaWF0ZWx5IGludG8gdGhlCisgICAg
ICAgICAgICAjIG1pc21hdGNoIGNoYWluIHdpdGggbm8gYWx0ZXJuYXRlcy4KKyAgICAgICAgICAg
IG5vZGUucmVmZXJlbmNlcy5leHRlbmQobWlzbWF0Y2hfcmVmcykKIAogICAgICAgICByZXR1cm4g
bm9kZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDQ1ODk2ZTZiZTJiZDUxZjRiNzhlOTcwM2NhZWZiOWI2NzJlMTBhNTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNF
CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNl
Ci0KLWh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5z
ZS5odG1sCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0
aW9ucyBvZiB3b3JrcyBtdXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwK
LSAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LQotKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9y
aWdpbmFsIGNvcHlyaWdodAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUKLSAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgd29yayB3aXRob3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Nl
dHVwLnB5CmluZGV4IGM5YzM2NGI4YmFjYzcyYTZmZjc3ZjlkMGM4MTFiMmQ3ZDE4MTBkMTMuLjc1
OWNiNDhkMWY2NWY1MmY2NTAwZWQyYjg3MWM3ZWY0MzA1MThhYjYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0
dXAucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS9zZXR1cC5weQpAQCAtMSw2ICsxLDYgQEAKIGZyb20gc2V0dXB0b29scyBp
bXBvcnQgc2V0dXAKIAotUEFDS0FHRV9WRVJTSU9OID0gJzIuMCcKK1BBQ0tBR0VfVkVSU0lPTiA9
ICczLjAnCiBkZXBzID0gWyJzaXg+PTEuOCIsICJoMj09My4wLjEiXQogCiBzZXR1cChuYW1lPSd3
cHRzZXJ2ZScsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQppbmRleCAyZTJkMGQ2NzcxYmEy
NmExZmJlN2U4ZmM4YmIyZTI1OThiYzM0MjIzLi42NGVhYjJkODA2YjUyZGU5MzNiMjhkNTg0MTZi
NjlkMzZiZGNiMjVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVz
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkKQEAgLTEwLDcgKzEw
LDcgQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAg
ZGVmIHRlc3RfbmFtZV92YWx1ZShzZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhh
bmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgotICAgICAgICAg
ICAgcmVzcG9uc2Uuc2V0X2Nvb2tpZSgibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgICAgICByZXNw
b25zZS5zZXRfY29va2llKGIibmFtZSIsIGIidmFsdWUiKQogICAgICAgICAgICAgcmV0dXJuICJU
ZXN0IgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvbmFtZV92YWx1ZSIsIGhhbmRs
ZXIpCkBAIC0yMiw4ICsyMiw4IEBAIGNsYXNzIFRlc3RSZXNwb25zZVNldENvb2tpZShUZXN0VXNp
bmdTZXJ2ZXIpOgogICAgIGRlZiB0ZXN0X3Vuc2V0KHNlbGYpOgogICAgICAgICBAd3B0c2VydmUu
aGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKLSAgICAg
ICAgICAgIHJlc3BvbnNlLnVuc2V0X2Nvb2tpZSgibmFtZSIpCisgICAgICAgICAgICByZXNwb25z
ZS5zZXRfY29va2llKGIibmFtZSIsIGIidmFsdWUiKQorICAgICAgICAgICAgcmVzcG9uc2UudW5z
ZXRfY29va2llKGIibmFtZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3QiCiAKICAgICAgICAg
cm91dGUgPSAoIkdFVCIsICIvdGVzdC91bnNldCIsIGhhbmRsZXIpCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIFRlc3RSZXNwb25zZVNldENvb2tpZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgIGRlZiB0
ZXN0X2RlbGV0ZShzZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAg
ICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgotICAgICAgICAgICAgcmVzcG9u
c2UuZGVsZXRlX2Nvb2tpZSgibmFtZSIpCisgICAgICAgICAgICByZXNwb25zZS5kZWxldGVfY29v
a2llKGIibmFtZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3QiCiAKICAgICAgICAgcm91dGUg
PSAoIkdFVCIsICIvdGVzdC9kZWxldGUiLCBoYW5kbGVyKQpAQCAtNDcsMTggKzQ3LDIwIEBAIGNs
YXNzIFRlc3RSZXNwb25zZVNldENvb2tpZShUZXN0VXNpbmdTZXJ2ZXIpOgogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFydHNbIm5hbWUiXSwgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFydHNbIlBhdGgiXSwgIi8iKQotICAgICAgICAjU2hvdWxkIGFsc28gY2hlY2sgdGhhdCBl
eHBpcmVzIGlzIGluIHRoZSBwYXN0CisgICAgICAgICMgVE9ETzogU2hvdWxkIGFsc28gY2hlY2sg
dGhhdCBleHBpcmVzIGlzIGluIHRoZSBwYXN0CisKIAogY2xhc3MgVGVzdFJlcXVlc3RDb29raWVz
KFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3Rfc2V0X2Nvb2tpZShzZWxmKToKICAgICAg
ICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVz
dCwgcmVzcG9uc2UpOgotICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QuY29va2llc1sibmFtZSJd
LnZhbHVlCisgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVzW2IibmFtZSJdLnZhbHVl
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9zZXRfY29va2llIiwgaGFuZGxlcikK
ICAgICAgICAgc2VsZi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKICAgICAgICAgcmVz
cCA9IHNlbGYucmVxdWVzdChyb3V0ZVsxXSwgaGVhZGVycz17IkNvb2tpZSI6ICJuYW1lPXZhbHVl
In0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGIidmFsdWUiKQogCisK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9yZXNwb25zZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC90ZXN0X3Jlc3BvbnNlLnB5CmluZGV4IGQ4ZDY0ZDU0Y2NjNzhhM2M2ZGViYTIxYjczNDI4
ZTcxYWViMWJlNjAuLjZlOTQ3ZTQ3OGQ5ZTE0ZTMzNjc2Y2JkNjJiYmJhZGEyZjExOGVjN2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQg
c3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGpzb24KIGZyb20gaW8gaW1w
b3J0IEJ5dGVzSU8KIAogaW1wb3J0IHB5dGVzdAotZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3Vu
ZF9tZXRob2QKK2Zyb20gc2l4IGltcG9ydCBjcmVhdGVfYm91bmRfbWV0aG9kLCBQWTMKK2Zyb20g
c2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBCYWRTdGF0dXNMaW5lCiAKIHdwdHNlcnZlID0g
cHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0c2VydmUiKQogZnJvbSAuYmFzZSBpbXBvcnQgVGVzdFVz
aW5nU2VydmVyLCBUZXN0VXNpbmdIMlNlcnZlciwgZG9jX3Jvb3QKQEAgLTE2Nyw3ICsxNjcsNiBA
QCBjbGFzcyBUZXN0UmVzcG9uc2UoVGVzdFVzaW5nU2VydmVyKToKICAgICAgICAgc2VsZi5zZXJ2
ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKICAgICAgICAgc2VsZi5yZXF1ZXN0KHJvdXRlWzFd
KQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVh
c29uPSJweTMgdXJsbGliIGRvZXNuJ3QgaGFuZGxlIGludmFsaWQgSFRUUCB2ZXJ5IHdlbGwiKQog
ICAgIGRlZiB0ZXN0X3dyaXRlX3Jhd19jb250ZW50c19pbnZhbGlkX2h0dHAoc2VsZik6CiAgICAg
ICAgIHJlc3BfY29udGVudCA9IGIiSU5WQUxJRCBIVFRQIgogCkBAIC0xNzcsOSArMTc2LDE0IEBA
IGNsYXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogCiAgICAgICAgIHJvdXRlID0g
KCJHRVQiLCAiL3Rlc3QvdGVzdF93cml0ZV9yYXdfY29udGVudCIsIGhhbmRsZXIpCiAgICAgICAg
IHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCi0gICAgICAgIHJlc3AgPSBzZWxm
LnJlcXVlc3Qocm91dGVbMV0pCi0gICAgICAgIGFzc2VydCByZXNwLnJlYWQoKSA9PSByZXNwX2Nv
bnRlbnQKIAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJv
dXRlWzFdKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVudAor
ICAgICAgICBleGNlcHQgQmFkU3RhdHVzTGluZSBhcyBlOgorICAgICAgICAgICAgIyBJbiBQeXRo
b24zLCBhbiBpbnZhbGlkIEhUVFAgcmVxdWVzdCBzaG91bGQgdGhyb3cgQmFkU3RhdHVzTGluZS4K
KyAgICAgICAgICAgIGFzc2VydCBQWTMKKyAgICAgICAgICAgIGFzc2VydCBzdHIoZSkgPT0gcmVz
cF9jb250ZW50LmRlY29kZSgndXRmLTgnKQogCiBjbGFzcyBUZXN0SDJSZXNwb25zZShUZXN0VXNp
bmdIMlNlcnZlcik6CiAgICAgZGVmIHRlc3Rfd3JpdGVfd2l0aG91dF9lbmRpbmdfc3RyZWFtKHNl
bGYpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3Rfc3Rhc2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQppbmRleCAzMDlkZDllNTc3YTAzMzViN2E1Njk5
MmM4MmE0OGI0M2EyNTlhMjhkLi4xYzRjOWFkOTMzYTM3NzQ2NjIzYTAxOTVmNTUzYWQ4Y2ZlNzA2
ODhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weQpAQCAtMTgsMTAgKzE4LDEwIEBAIGNsYXNz
IFRlc3RSZXNwb25zZVNldENvb2tpZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBAd3B0c2Vy
dmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25z
ZSk6CiAgICAgICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6Ci0gICAgICAgICAg
ICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHJlcXVlc3QuUE9TVC5maXJzdCgiaWQiKSwg
cmVxdWVzdC5QT1NULmZpcnN0KCJkYXRhIikpCisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXJ2
ZXIuc3Rhc2gucHV0KHJlcXVlc3QuUE9TVC5maXJzdChiImlkIiksIHJlcXVlc3QuUE9TVC5maXJz
dChiImRhdGEiKSkKICAgICAgICAgICAgICAgICBkYXRhID0gIk9LIgogICAgICAgICAgICAgZWxp
ZiByZXF1ZXN0Lm1ldGhvZCA9PSAiR0VUIjoKLSAgICAgICAgICAgICAgICBkYXRhID0gcmVxdWVz
dC5zZXJ2ZXIuc3Rhc2gudGFrZShyZXF1ZXN0LkdFVC5maXJzdCgiaWQiKSkKKyAgICAgICAgICAg
ICAgICBkYXRhID0gcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZShyZXF1ZXN0LkdFVC5maXJzdChi
ImlkIikpCiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gIk5PVCBGT1VORCIKICAgICAgICAgICAgIHJldHVybiBkYXRhCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL3Rlc3RfcmVxdWVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg2OWQzZDQ2MDQ0MDk0MTE5ODRjYjQ5ZmNkNDBlYjdlOTcxYjNjNTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfcmVxdWVzdC5weQpAQCAtMCwwICsxLDc4IEBACitp
bXBvcnQgbW9jaworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlCisKK2Zyb20gd3B0c2VydmUu
cmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgUmVxdWVzdEhlYWRlcnMKKworCitjbGFzcyBNb2NrSFRU
UE1lc3NhZ2UoZGljdCk6CisgICAgIiIiQSBtaW5pbXVtIChhbmQgbm90IGNvbXBsZXRlbHkgY29y
cmVjdGx5KSBtb2NrIG9mIEhUVFBNZXNzYWdlIGZvciB0ZXN0aW5nLgorCisgICAgQ29uc3RydWN0
aW5nIEhUVFBNZXNzYWdlIGlzIGFubm95aW5nIGFuZCBkaWZmZXJlbnQgaW4gUHl0aG9uIDIgYW5k
IDMuIFRoaXMKKyAgICBvbmx5IGltcGxlbWVudHMgdGhlIHBhcnRzIHVzZWQgYnkgUmVxdWVzdEhl
YWRlcnMuCisKKyAgICBSZXF1aXJlbWVudHMgZm9yIGNvbnN0cnVjdGlvbjoKKyAgICAqIEtleXMg
YXJlIGhlYWRlciBuYW1lcyBhbmQgTVVTVCBiZSBsb3dlci1jYXNlLgorICAgICogVmFsdWVzIGFy
ZSBsaXN0cyBvZiBoZWFkZXIgdmFsdWVzIChldmVuIGlmIHRoZXJlJ3Mgb25seSBvbmUpLgorICAg
ICogS2V5cyBhbmQgdmFsdWVzIHNob3VsZCBiZSBuYXRpdmUgc3RyaW5ncyB0byBtYXRjaCBzdGRs
aWIncyBiZWhhdmlvdXJzLgorICAgICIiIgorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkp
OgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShrZXksIHN0cikKKyAgICAgICAgdmFsdWVzID0g
ZGljdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkubG93ZXIoKSkKKyAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UodmFsdWVzLCBsaXN0KQorICAgICAgICByZXR1cm4gdmFsdWVzWzBdCisKKyAgICBkZWYg
Z2V0KHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
cmV0dXJuIHNlbGZba2V5XQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBy
ZXR1cm4gZGVmYXVsdAorCisgICAgZGVmIGdldGFsbG1hdGNoaW5naGVhZGVycyhzZWxmLCBrZXkp
OgorICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQor
ICAgICAgICByZXR1cm4gWyJ7fToge31cbiIuZm9ybWF0KGtleSwgdikgZm9yIHYgaW4gdmFsdWVz
XQorCisKK2RlZiB0ZXN0X3JlcXVlc3RfaGVhZGVyc19nZXQoKToKKyAgICByYXdfaGVhZGVycyA9
IE1vY2tIVFRQTWVzc2FnZSh7CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4
LWJhcic6IFsnYmFyMScsICdiYXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhl
YWRlcnMocmF3X2hlYWRlcnMpCisgICAgYXNzZXJ0IGhlYWRlcnNbJ3gtZm9vJ10gPT0gYidmb28n
CisgICAgYXNzZXJ0IGhlYWRlcnNbJ1gtQmFyJ10gPT0gYidiYXIxLCBiYXIyJworICAgIGFzc2Vy
dCBoZWFkZXJzLmdldCgneC1iYXInKSA9PSBiJ2JhcjEsIGJhcjInCisKKworZGVmIHRlc3RfcmVx
dWVzdF9oZWFkZXJzX2VuY29kaW5nKCk6CisgICAgcmF3X2hlYWRlcnMgPSBNb2NrSFRUUE1lc3Nh
Z2UoeworICAgICAgICAneC1mb28nOiBbJ2ZvbyddLAorICAgICAgICAneC1iYXInOiBbJ2JhcjEn
LCAnYmFyMiddLAorICAgIH0pCisgICAgaGVhZGVycyA9IFJlcXVlc3RIZWFkZXJzKHJhd19oZWFk
ZXJzKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtZm9vJ10sIGJpbmFyeV90eXBl
KQorICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnNbJ3gtYmFyJ10sIGJpbmFyeV90eXBlKQor
ICAgIGFzc2VydCBpc2luc3RhbmNlKGhlYWRlcnMuZ2V0X2xpc3QoJ3gtYmFyJylbMF0sIGJpbmFy
eV90eXBlKQorCisKK2RlZiB0ZXN0X3JlcXVlc3RfdXJsX2Zyb21fc2VydmVyX2FkZHJlc3MoKToK
KyAgICByZXF1ZXN0X2hhbmRsZXIgPSBtb2NrLk1vY2soKQorICAgIHJlcXVlc3RfaGFuZGxlci5z
ZXJ2ZXIuc2NoZW1lID0gJ2h0dHAnCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJf
YWRkcmVzcyA9ICgnbG9jYWxob3N0JywgJzgwMDAnKQorICAgIHJlcXVlc3RfaGFuZGxlci5wYXRo
ID0gJy9kZW1vJworICAgIHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzID0gTW9ja0hUVFBNZXNzYWdl
KCkKKworICAgIHJlcXVlc3QgPSBSZXF1ZXN0KHJlcXVlc3RfaGFuZGxlcikKKyAgICBhc3NlcnQg
cmVxdWVzdC51cmwgPT0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9kZW1vJworICAgIGFzc2VydCBp
c2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJv
bV9ob3N0X2hlYWRlcigpOgorICAgIHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAg
cmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRs
ZXIuc2VydmVyLnNlcnZlcl9hZGRyZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVx
dWVzdF9oYW5kbGVyLnBhdGggPSAnL2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMg
PSBNb2NrSFRUUE1lc3NhZ2Uoeydob3N0JzogWyd3ZWItcGxhdGZvcm0udGVzdDo4MDAxJ119KQor
CisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAgIGFzc2VydCByZXF1
ZXN0LnVybCA9PSAnaHR0cDovL3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDEvZGVtbycKKyAgICBhc3Nl
cnQgaXNpbnN0YW5jZShyZXF1ZXN0LnVybCwgc3RyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0
X3N0YXNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmluZGV4IDFlYTk5YzA2MDlmNWJlZDg1
OTY1MTI4NGViM2RhODBhNGNkZGY3MzcuLjMxYWYxNTU4YjBjYzVjMDQ2ODQzZTBlOTY1NjlkYjQy
YzQ2N2NmMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3Rz
L3Rlc3Rfc3Rhc2gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCB0aHJlYWRpbmcKIGZyb20gbXVs
dGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBCYXNlTWFuYWdlcgogCiBpbXBvcnQgcHl0ZXN0
Citmcm9tIHNpeCBpbXBvcnQgUFkzCiAKIFN0YXNoID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0
c2VydmUuc3Rhc2giKS5TdGFzaAogCkBAIC01Nyw3ICs1OCw4IEBAIGRlZiBydW4ocHJvY2Vzc19x
dWV1ZSwgcmVxdWVzdF9sb2NrLCByZXNwb25zZV9sb2NrKToKICAgICBwcm9jZXNzX3F1ZXVlLnB1
dCh0aHJlYWRfcXVldWUuZ2V0KCkpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9y
bSA9PSAid2luMzIiLAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
IG9yCisgICAgICAgICAgICAgICAgICAgUFkzIGFuZCBtdWx0aXByb2Nlc3NpbmcuZ2V0X3N0YXJ0
X21ldGhvZCgpID09ICJzcGF3biIsCiAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMTY5MzgiKQogZGVmIHRl
c3RfZGVsYXllZF9sb2NrKGFkZF9jbGVhbnVwKToKICAgICAiIiJFbnN1cmUgdGhhdCBkZWxheXMg
aW4gcHJveGllZCBMb2NrIHJldHJpZXZhbCBkbyBub3QgaW50ZXJmZXJlIHdpdGgKQEAgLTk2LDcg
Kzk4LDggQEAgZGVmIHRlc3RfZGVsYXllZF9sb2NrKGFkZF9jbGVhbnVwKToKICAgICAgICAgImJv
dGggaW5zdGFuY2VzIGhhZCB2YWxpZCBsb2NrcyIpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiIG9yCisgICAgICAgICAgICAgICAgICAgUFkzIGFuZCBtdWx0aXByb2Nlc3Npbmcu
Z2V0X3N0YXJ0X21ldGhvZCgpID09ICJzcGF3biIsCiAgICAgICAgICAgICAgICAgICAgcmVhc29u
PSJodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMTY5Mzgi
KQogZGVmIHRlc3RfZGVsYXllZF9kaWN0KGFkZF9jbGVhbnVwKToKICAgICAiIiJFbnN1cmUgdGhh
dCBkZWxheXMgaW4gcHJveGllZCBgZGljdGAgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0
aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9y
dC5sb2cKaW5kZXggZWY5ZDZhODBhYTZhYzE0MjNmNTQ4NWJiMjViZDMzNjk3NWQ5YWI1Ny4uNWY5
ZWI2YjM4YjY1MTQ5ZmRlN2RhZDE5YjgwNTZmM2NjNWJmMTM2MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nCkBAIC0xNiw0ICsx
Niw1IEBAIE5vbmUKIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X2NvbmZpZy5weQogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
dGVzdHMvdGVzdF9yZXBsYWNlbWVudF90b2tlbml6ZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfcmVxdWVz
dC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvdGVzdF9zdGFzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdzNjLWltcG9ydC5sb2cKaW5kZXggNTk3YjMyNjA0ZGMyMGUwZTNhMjc2MTlkOTA2ZTQ1
ZDhkNzkwMzNjMS4uZmFhYWY2N2U5ODU4YTEwN2RjODNhOTUyODVmMmI5Mzk0N2ZiMDEzMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3
ICsxNCw2IEBAIFByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9u
ZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTUFOSUZF
U1QuaW4KIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL1JFQURNRS5tZAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
Y29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25maWcucHkKaW5kZXggZTExY2FlMTM3YjljNTFkODY3
NzQwMDFlYWQ3MTkzOGZkNTVjMDU1NS4uNzc2NjU2NWZlNGZkMTc1NTk4YjhiNmNjZTBlNGZmNGI0
MGYxMGQ5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25maWcucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2
ZS9jb25maWcucHkKQEAgLTY5LDYgKzY5LDMxIEBAIGNsYXNzIENvbmZpZyhNYXBwaW5nKToKICAg
ICBkZWYgYXNfZGljdChzZWxmKToKICAgICAgICAgcmV0dXJuIGpzb25fdHlwZXMoc2VsZi5fX2Rp
Y3RfXykKIAorICAgICMgRW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBsaW1pdGVkIGluIHNpemUg
c28gd2UgbmVlZCB0byBwcnVuZSB0aGUgbW9zdCBlZ3JlZ2lvdXMgY29udHJpYnV0b3JzCisgICAg
IyB0byBzaXplLCB0aGUgb3JpZ2luIHBvbGljeSBzdWJkb21haW5zLgorICAgIGRlZiBhc19kaWN0
X2Zvcl93ZF9lbnZfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuYXNfZGlj
dCgpCisKKyAgICAgICAgZm9yIGtleSBpbiBbCisgICAgICAgICAgICAoInN1YmRvbWFpbnMiLCks
CisgICAgICAgICAgICAoImRvbWFpbnMiLCAiYWx0IiksCisgICAgICAgICAgICAoImRvbWFpbnMi
LCAiIiksCisgICAgICAgICAgICAoImFsbF9kb21haW5zIiwgImFsdCIpLAorICAgICAgICAgICAg
KCJhbGxfZG9tYWlucyIsICIiKSwKKyAgICAgICAgICAgICgiZG9tYWluc19zZXQiLCksCisgICAg
ICAgICAgICAoImFsbF9kb21haW5zX3NldCIsKQorICAgICAgICBdOgorICAgICAgICAgICAgdGFy
Z2V0ID0gcmVzdWx0CisgICAgICAgICAgICBmb3IgcGFydCBpbiBrZXlbOi0xXToKKyAgICAgICAg
ICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcGFydF0KKyAgICAgICAgICAgIHZhbHVlID0gdGFyZ2V0
W2tleVstMV1dCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKKyAgICAg
ICAgICAgICAgICB0YXJnZXRba2V5Wy0xXV0gPSB7azp2IGZvciAoayx2KSBpbiBpdGVyaXRlbXMo
dmFsdWUpIGlmIG5vdCBrLnN0YXJ0c3dpdGgoIm9wIil9CisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IFt4IGZvciB4IGluIHZhbHVlIGlmIG5vdCB4
LnN0YXJ0c3dpdGgoIm9wIildCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAKIGRlZiBqc29u
X3R5cGVzKG9iaik6CiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9oYW5kbGVycy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKaW5kZXggY2E1
MTE4MDA5Y2ZjOWM0NzYzZjk5ZTJhNjI5NmQ3ODRhNjUzOTIxNi4uZmVhMTI3N2IwZDFjYjVjYWM4
Y2E0NDVhYjA1OTk0NzQxMjY2OWFjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IGNn
aQogaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTQsNiArMTMsMTEgQEAg
ZnJvbSAucmVxdWVzdCBpbXBvcnQgQXV0aGVudGljYXRpb24KIGZyb20gLnJlc3BvbnNlIGltcG9y
dCBNdWx0aXBhcnRDb250ZW50CiBmcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCit0
cnk6CisgICAgZnJvbSBodG1sIGltcG9ydCBlc2NhcGUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAg
ICBmcm9tIGNnaSBpbXBvcnQgZXNjYXBlCisKIF9fYWxsX18gPSBbImZpbGVfaGFuZGxlciIsICJw
eXRob25fc2NyaXB0X2hhbmRsZXIiLAogICAgICAgICAgICAiRnVuY3Rpb25IYW5kbGVyIiwgImhh
bmRsZXIiLCAianNvbl9oYW5kbGVyIiwKICAgICAgICAgICAgImFzX2lzX2hhbmRsZXIiLCAiRXJy
b3JIYW5kbGVyIiwgIkJhc2ljQXV0aEhhbmRsZXIiXQpAQCAtNzYsNyArODAsNyBAQCBjbGFzcyBE
aXJlY3RvcnlIYW5kbGVyKG9iamVjdCk6CiA8dWw+CiAlKGl0ZW1zKXMKIDwvdWw+Ci0iIiIgJSB7
InBhdGgiOiBjZ2kuZXNjYXBlKHVybF9wYXRoKSwKKyIiIiAlIHsicGF0aCI6IGVzY2FwZSh1cmxf
cGF0aCksCiAgICAgICAgIml0ZW1zIjogIlxuIi5qb2luKHNlbGYubGlzdF9pdGVtcyh1cmxfcGF0
aCwgcGF0aCkpfSAgIyBub3FhOiBFMTIyCiAKICAgICBkZWYgbGlzdF9pdGVtcyhzZWxmLCBiYXNl
X3BhdGgsIHBhdGgpOgpAQCAtOTIsMTUgKzk2LDI5IEBAIGNsYXNzIERpcmVjdG9yeUhhbmRsZXIo
b2JqZWN0KToKICAgICAgICAgICAgIGxpbmsgPSB1cmxqb2luKGJhc2VfcGF0aCwgIi4uIikKICAg
ICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9ImRpciI+PGEgaHJlZj0iJShsaW5rKXMiPiUo
bmFtZSlzPC9hPjwvbGk+IiIiICUKICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBsaW5rLCAi
bmFtZSI6ICIuLiJ9KQorICAgICAgICBpdGVtcyA9IFtdCisgICAgICAgIHByZXZfaXRlbSA9IE5v
bmUKICAgICAgICAgZm9yIGl0ZW0gaW4gc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpOgotICAgICAg
ICAgICAgbGluayA9IGNnaS5lc2NhcGUocXVvdGUoaXRlbSkpCisgICAgICAgICAgICBpZiBwcmV2
X2l0ZW0gYW5kIHByZXZfaXRlbSArICIuaGVhZGVycyIgPT0gaXRlbToKKyAgICAgICAgICAgICAg
ICBpdGVtc1stMV1bMV0gPSBpdGVtCisgICAgICAgICAgICAgICAgcHJldl9pdGVtID0gTm9uZQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoW2l0ZW0s
IE5vbmVdKQorICAgICAgICAgICAgcHJldl9pdGVtID0gaXRlbQorICAgICAgICBmb3IgaXRlbSwg
ZG90X2hlYWRlcnMgaW4gaXRlbXM6CisgICAgICAgICAgICBsaW5rID0gZXNjYXBlKHF1b3RlKGl0
ZW0pKQorICAgICAgICAgICAgZG90X2hlYWRlcnNfbWFya3VwID0gIiIKKyAgICAgICAgICAgIGlm
IGRvdF9oZWFkZXJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRvdF9oZWFkZXJzX21h
cmt1cCA9ICgiIiIgKDxhIGhyZWY9IiUobGluaylzIj4uaGVhZGVyczwvYT4pIiIiICUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJsaW5rIjogZXNjYXBlKHF1b3RlKGRv
dF9oZWFkZXJzKSl9KQogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4o
cGF0aCwgaXRlbSkpOgogICAgICAgICAgICAgICAgIGxpbmsgKz0gIi8iCiAgICAgICAgICAgICAg
ICAgY2xhc3NfID0gImRpciIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY2xh
c3NfID0gImZpbGUiCi0gICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNzKXMi
PjxhIGhyZWY9IiUobGluaylzIj4lKG5hbWUpczwvYT48L2xpPiIiIiAlCi0gICAgICAgICAgICAg
ICAgICAgeyJsaW5rIjogbGluaywgIm5hbWUiOiBjZ2kuZXNjYXBlKGl0ZW0pLCAiY2xhc3MiOiBj
bGFzc199KQorICAgICAgICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iJShjbGFzcylzIj48YSBo
cmVmPSIlKGxpbmspcyI+JShuYW1lKXM8L2E+JShoZWFkZXJzKXM8L2xpPiIiIiAlCisgICAgICAg
ICAgICAgICAgICAgeyJsaW5rIjogbGluaywgIm5hbWUiOiBlc2NhcGUoaXRlbSksICJjbGFzcyI6
IGNsYXNzXywKKyAgICAgICAgICAgICAgICAgICAgImhlYWRlcnMiOiBkb3RfaGVhZGVyc19tYXJr
dXB9KQogCiAKIGRlZiB3cmFwX3BpcGVsaW5lKHBhdGgsIHJlcXVlc3QsIHJlc3BvbnNlKToKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CmluZGV4
IGNlYjM0Y2MzZjRmOTk0ZWQwNDk5MTVjNzc4NGY3YzY5YzcxMmFiY2EuLmJiZjI1ZTZmZTExMTJl
MTgxZGE1YTdiNmE5YzZlZTJiNzU2M2FiYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gY2dpIGlt
cG9ydCBlc2NhcGUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBpbXBvcnQgYmFzZTY0
CiBpbXBvcnQgZ3ppcCBhcyBnemlwX21vZHVsZQpAQCAtNywxMCArNiwxNSBAQCBpbXBvcnQgb3MK
IGltcG9ydCByZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1dWlkCi1mcm9tIHNpeC5tb3ZlcyBpbXBv
cnQgU3RyaW5nSU8KIAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHNpeCBp
bXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQogCit0cnk6CisgICAgZnJvbSBodG1sIGltcG9y
dCBlc2NhcGUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNnaSBpbXBvcnQgZXNjYXBl
CisKIGRlZiByZXNvbHZlX2NvbnRlbnQocmVzcG9uc2UpOgogICAgIHJldHVybiBiIiIuam9pbihp
dGVtIGZvciBpdGVtIGluIHJlc3BvbnNlLml0ZXJfY29udGVudChyZWFkX2ZpbGU9VHJ1ZSkpCiAK
QEAgLTMxNiw2ICszMjAsOCBAQCBjbGFzcyBGaXJzdFdyYXBwZXIob2JqZWN0KToKIAogICAgIGRl
ZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGtleSwgdGV4dF90eXBlKToKKyAgICAgICAgICAgICAgICBrZXkgPSBrZXkuZW5j
b2RlKCdpc28tODg1OS0xJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmFtcy5maXJzdChr
ZXkpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAiIgpAQCAt
MzkzLDggKzM5OSw4IEBAIGNsYXNzIFN1YkZ1bmN0aW9ucyhvYmplY3QpOgogICAgIGRlZiB1dWlk
KHJlcXVlc3QpOgogICAgICAgICByZXR1cm4gc3RyKHV1aWQudXVpZDQoKSkKIAotICAgICMgTWFp
bnRhaW4gYSB3aGl0ZWxpc3Qgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8g
dGhvc2UgdGhhdAotICAgICMgYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhp
cyBlbnN1cmVzIHRoYXQgdGVzdCBhdXRob3JzIGRvIG5vdAorICAgICMgTWFpbnRhaW4gYSBsaXN0
IG9mIHN1cHBvcnRlZCBhbGdvcml0aG1zLCByZXN0cmljdGVkIHRvIHRob3NlIHRoYXQgYXJlCisg
ICAgIyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyBbMV0uIFRoaXMgZW5zdXJlcyB0aGF0IHRl
c3QgYXV0aG9ycyBkbyBub3QKICAgICAjIHVua25vd2luZ2x5IGludHJvZHVjZSBwbGF0Zm9ybS1z
cGVjaWZpYyB0ZXN0cy4KICAgICAjCiAgICAgIyBbMV0gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcv
Mi9saWJyYXJ5L2hhc2hsaWIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CmluZGV4IGE4MGJjMGM4MzAwYWNmY2Y3NjY1MTJiODll
Y2ZlZTMzOGJhYzIyOTUuLjdjNGQwMmQ2ZGU2ZjFhMGIwZWNjYzA1YWIwMzA0Y2ZmYmMxMGY5NTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVl
c3QucHkKQEAgLTEsMTMgKzEsMTMgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBjZ2kKLWZyb20g
c2l4Lm1vdmVzLmh0dHBfY29va2llcyBpbXBvcnQgQmFzZUNvb2tpZQotZnJvbSBzaXggaW1wb3J0
IEJ5dGVzSU8sIGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUsIGl0ZXJpdGVtcywgUFkzCiBpbXBvcnQg
dGVtcGZpbGUKIAorZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8sIGJpbmFyeV90eXBlLCBpdGVyaXRl
bXMsIFBZMworZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCiBm
cm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHBhcnNlX3FzbCwgdXJsc3BsaXQKIAog
ZnJvbSAuIGltcG9ydCBzdGFzaAotZnJvbSAudXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24KK2Zy
b20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uLCBpc29tb3JwaGljX2VuY29kZSwgaXNvbW9y
cGhpY19kZWNvZGUKIAogbWlzc2luZyA9IG9iamVjdCgpCiAKQEAgLTIxOSwyMiArMjE5LDIzIEBA
IGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRoZSBw
YXJhbWV0ZXJzIHN1cHBsaWVkIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgTm90ZSB0aGF0IHRoZXNl
IG1heSBiZSBwcmVzZW50IG9uIG5vbi1HRVQgcmVxdWVzdHM7IHRoZSBuYW1lIGlzCiAgICAgY2hv
c2VuIHRvIGJlIGZhbWlsaWFyIHRvIHVzZXJzIG9mIG90aGVyIHN5c3RlbXMgc3VjaCBhcyBQSFAu
CisgICAgQm90aCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFyeSBzdHJpbmdzLgogCiAgICAgLi4g
YXR0cmlidXRlOjogUE9TVAogCiAgICAgTXVsdGlEaWN0IHJlcHJlc2VudGluZyB0aGUgcmVxdWVz
dCBib2R5IHBhcmFtZXRlcnMuIE1vc3QgcGFyYW1ldGVycwogICAgIGFyZSBwcmVzZW50IGFzIHN0
cmluZyB2YWx1ZXMsIGJ1dCBmaWxlIHVwbG9hZHMgaGF2ZSBmaWxlLWxpa2UKLSAgICB2YWx1ZXMu
CisgICAgdmFsdWVzLiBBbGwgc3RyaW5nIHZhbHVlcyAoaW5jbHVkaW5nIGtleXMpIGhhdmUgYmlu
YXJ5IHR5cGUuCiAKICAgICAuLiBhdHRyaWJ1dGU6OiBjb29raWVzCiAKLSAgICBDb29raWVzIG9i
amVjdCByZXByZXNlbnRpbmcgY29va2llcyBzZW50IHdpdGggdGhlIHJlcXVlc3Qgd2l0aCBhCisg
ICAgQSBDb29raWVzIG9iamVjdCByZXByZXNlbnRpbmcgY29va2llcyBzZW50IHdpdGggdGhlIHJl
cXVlc3Qgd2l0aCBhCiAgICAgZGljdGlvbmFyeS1saWtlIGludGVyZmFjZS4KIAogICAgIC4uIGF0
dHJpYnV0ZTo6IGF1dGgKIAotICAgIE9iamVjdCB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBw
cm9wZXJ0aWVzIHJlcHJlc2VudGluZyBhbnkKLSAgICBjcmVkZW50aWFscyBzdXBwbGllZCB1c2lu
ZyBIVFRQIGF1dGhlbnRpY2F0aW9uLgorICAgIEFuIGluc3RhbmNlIG9mIEF1dGhlbnRpY2F0aW9u
IHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHByb3BlcnRpZXMKKyAgICByZXByZXNlbnRpbmcg
YW55IGNyZWRlbnRpYWxzIHN1cHBsaWVkIHVzaW5nIEhUVFAgYXV0aGVudGljYXRpb24uCiAKICAg
ICAuLiBhdHRyaWJ1dGU6OiBzZXJ2ZXIKIApAQCAtMjQ4LDggKzI0OSwxMiBAQCBjbGFzcyBSZXF1
ZXN0KG9iamVjdCk6CiAgICAgICAgIHNlbGYucHJvdG9jb2xfdmVyc2lvbiA9IHJlcXVlc3RfaGFu
ZGxlci5wcm90b2NvbF92ZXJzaW9uCiAgICAgICAgIHNlbGYubWV0aG9kID0gcmVxdWVzdF9oYW5k
bGVyLmNvbW1hbmQKIAorICAgICAgICAjIEtleXMgYW5kIHZhbHVlcyBpbiByYXcgaGVhZGVycyBh
cmUgbmF0aXZlIHN0cmluZ3MuCisgICAgICAgIHNlbGYuX2hlYWRlcnMgPSBOb25lCisgICAgICAg
IHNlbGYucmF3X2hlYWRlcnMgPSByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycworCiAgICAgICAgIHNj
aGVtZSA9IHJlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2NoZW1lCi0gICAgICAgIGhvc3QgPSByZXF1
ZXN0X2hhbmRsZXIuaGVhZGVycy5nZXQoIkhvc3QiKQorICAgICAgICBob3N0ID0gc2VsZi5yYXdf
aGVhZGVycy5nZXQoIkhvc3QiKQogICAgICAgICBwb3J0ID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZl
ci5zZXJ2ZXJfYWRkcmVzc1sxXQogCiAgICAgICAgIGlmIGhvc3QgaXMgTm9uZToKQEAgLTI2Miwy
MiArMjY3LDE3IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICAgICAgc2VsZi51cmxfYmFz
ZSA9ICIvIgogCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF9wYXRoLnN0YXJ0c3dpdGgoc2NoZW1l
ICsgIjovLyIpOgotICAgICAgICAgICAgc2VsZi51cmwgPSByZXF1ZXN0X2hhbmRsZXIucGF0aAor
ICAgICAgICAgICAgc2VsZi51cmwgPSBzZWxmLnJlcXVlc3RfcGF0aAogICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgc2VsZi51cmwgPSAiJXM6Ly8lczolcyVzIiAlIChzY2hlbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucmVxdWVzdF9wYXRoKQorICAgICAgICAgICAgIyBUT0RPKCMyMzM2Mik6IFN0
b3AgdXNpbmcgbmF0aXZlIHN0cmluZ3MgZm9yIFVSTHMuCisgICAgICAgICAgICBzZWxmLnVybCA9
ICIlczovLyVzOiVzJXMiICUgKAorICAgICAgICAgICAgICAgIHNjaGVtZSwgaG9zdCwgcG9ydCwg
c2VsZi5yZXF1ZXN0X3BhdGgpCiAgICAgICAgIHNlbGYudXJsX3BhcnRzID0gdXJsc3BsaXQoc2Vs
Zi51cmwpCiAKLSAgICAgICAgc2VsZi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFk
ZXJzCi0KICAgICAgICAgc2VsZi5yZXF1ZXN0X2xpbmUgPSByZXF1ZXN0X2hhbmRsZXIucmF3X3Jl
cXVlc3RsaW5lCiAKLSAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUKLQogICAgICAgICBzZWxm
LnJhd19pbnB1dCA9IElucHV0RmlsZShyZXF1ZXN0X2hhbmRsZXIucmZpbGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmhlYWRlcnMuZ2V0KCJDb250ZW50LUxl
bmd0aCIsIDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYu
cmF3X2hlYWRlcnMuZ2V0KCJDb250ZW50LUxlbmd0aCIsIDApKSkKIAogICAgICAgICBzZWxmLl9i
b2R5ID0gTm9uZQogCkBAIC0yOTcsMTkgKzI5NywyNCBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6
CiAgICAgICAgICAgICBwYXJhbXMgPSBwYXJzZV9xc2woc2VsZi51cmxfcGFydHMucXVlcnksIGtl
ZXBfYmxhbmtfdmFsdWVzPVRydWUpCiAgICAgICAgICAgICBzZWxmLl9HRVQgPSBNdWx0aURpY3Qo
KQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcGFyYW1zOgotICAgICAgICAgICAgICAg
IHNlbGYuX0dFVC5hZGQoa2V5LCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9HRVQuYWRk
KGlzb21vcnBoaWNfZW5jb2RlKGtleSksIGlzb21vcnBoaWNfZW5jb2RlKHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIHNlbGYuX0dFVAogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIFBPU1Qoc2VsZik6
CiAgICAgICAgIGlmIHNlbGYuX1BPU1QgaXMgTm9uZToKLSAgICAgICAgICAgICNXb3JrIG91dCB0
aGUgcG9zdCBwYXJhbWV0ZXJzCisgICAgICAgICAgICAjIFdvcmsgb3V0IHRoZSBwb3N0IHBhcmFt
ZXRlcnMKICAgICAgICAgICAgIHBvcyA9IHNlbGYucmF3X2lucHV0LnRlbGwoKQogICAgICAgICAg
ICAgc2VsZi5yYXdfaW5wdXQuc2VlaygwKQotICAgICAgICAgICAgZnMgPSBjZ2kuRmllbGRTdG9y
YWdlKGZwPXNlbGYucmF3X2lucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudmlyb249eyJSRVFVRVNUX01FVEhPRCI6IHNlbGYubWV0aG9kfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXNlbGYucmF3X2hlYWRlcnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2VlcF9ibGFua192YWx1ZXM9VHJ1ZSkKKyAgICAgICAg
ICAgIGt3YXJncyA9IHsKKyAgICAgICAgICAgICAgICAiZnAiOiBzZWxmLnJhd19pbnB1dCwKKyAg
ICAgICAgICAgICAgICAiZW52aXJvbiI6IHsiUkVRVUVTVF9NRVRIT0QiOiBzZWxmLm1ldGhvZH0s
CisgICAgICAgICAgICAgICAgImhlYWRlcnMiOiBzZWxmLnJhd19oZWFkZXJzLAorICAgICAgICAg
ICAgICAgICJrZWVwX2JsYW5rX3ZhbHVlcyI6IFRydWUsCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiBQWTM6CisgICAgICAgICAgICAgICAga3dhcmdzWyJlbmNvZGluZyJdID0gImlzby04
ODU5LTEiCisgICAgICAgICAgICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2UoKiprd2FyZ3MpCiAgICAg
ICAgICAgICBzZWxmLl9QT1NUID0gTXVsdGlEaWN0LmZyb21fZmllbGRfc3RvcmFnZShmcykKICAg
ICAgICAgICAgIHNlbGYucmF3X2lucHV0LnNlZWsocG9zKQogICAgICAgICByZXR1cm4gc2VsZi5f
UE9TVApAQCAtMzE3LDE0ICszMjIsMTIgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgIEBw
cm9wZXJ0eQogICAgIGRlZiBjb29raWVzKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9jb29raWVz
IGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXJzZXIgPSBCYXNlQ29va2llKCkKKyAgICAgICAgICAg
IHBhcnNlciA9IEJpbmFyeUNvb2tpZVBhcnNlcigpCiAgICAgICAgICAgICBjb29raWVfaGVhZGVy
cyA9IHNlbGYuaGVhZGVycy5nZXQoImNvb2tpZSIsIGIiIikKLSAgICAgICAgICAgIGlmIFBZMzoK
LSAgICAgICAgICAgICAgICBjb29raWVfaGVhZGVycyA9IGNvb2tpZV9oZWFkZXJzLmRlY29kZSgi
aXNvLTg4NTktMSIpCiAgICAgICAgICAgICBwYXJzZXIubG9hZChjb29raWVfaGVhZGVycykKICAg
ICAgICAgICAgIGNvb2tpZXMgPSBDb29raWVzKCkKICAgICAgICAgICAgIGZvciBrZXksIHZhbHVl
IGluIGl0ZXJpdGVtcyhwYXJzZXIpOgotICAgICAgICAgICAgICAgIGNvb2tpZXNba2V5XSA9IENv
b2tpZVZhbHVlKHZhbHVlKQorICAgICAgICAgICAgICAgIGNvb2tpZXNbaXNvbW9ycGhpY19lbmNv
ZGUoa2V5KV0gPSBDb29raWVWYWx1ZSh2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuX2Nvb2tpZXMg
PSBjb29raWVzCiAgICAgICAgIHJldHVybiBzZWxmLl9jb29raWVzCiAKQEAgLTM1NywyNCArMzYw
LDYgQEAgY2xhc3MgSDJSZXF1ZXN0KFJlcXVlc3QpOgogICAgICAgICBzdXBlcihIMlJlcXVlc3Qs
IHNlbGYpLl9faW5pdF9fKHJlcXVlc3RfaGFuZGxlcikKIAogCi1kZWYgX21heWJlX2VuY29kZShz
KToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJpbmFyeSBkYXRhIHVz
aW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhvbiAyIGFuZCBgYnl0
ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAgIGlmIHRoZSBhcmd1
bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFu
Y2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAgIyBQeXRob24gMyBh
c3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNoIHdpbGwgZ2FyYmxl
IHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRyeSB0byBlbmNvZGUg
dGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFkMDMyZmI4L0xp
Yi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgot
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCi0gICAgcmFpc2UgVHlwZUVy
cm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIFJlcXVlc3RIZWFkZXJzOiAlciIgJSBzKQotCi0KIGNs
YXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICIiIlJlYWQtb25seSBkaWN0aW9uYXJ5LWxp
a2UgQVBJIGZvciBhY2Nlc3NpbmcgcmVxdWVzdCBoZWFkZXJzLgogCkBAIC0zODQsNyArMzY5LDcg
QEAgY2xhc3MgUmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGl0ZW1zKToKICAgICAgICAgZm9yIGhlYWRlciBpbiBpdGVtcy5rZXlzKCk6Ci0gICAg
ICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGhlYWRlcikubG93ZXIoKQorICAgICAgICAgICAg
a2V5ID0gaXNvbW9ycGhpY19lbmNvZGUoaGVhZGVyKS5sb3dlcigpCiAgICAgICAgICAgICAjIGdl
dCBhbGwgaGVhZGVycyB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICAgICAgICAgIHZhbHVlcyA9IGl0
ZW1zLmdldGFsbG1hdGNoaW5naGVhZGVycyhoZWFkZXIpCiAgICAgICAgICAgICBpZiBsZW4odmFs
dWVzKSA+IDE6CkBAIC0zOTQsMjIgKzM3OSwyMSBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0
KToKICAgICAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAg
ICAgICAjIGdldGFsbG1hdGNoaW5naGVhZGVycyByZXR1cm5zIHJhdyBoZWFkZXIgbGluZXMsIHNv
CiAgICAgICAgICAgICAgICAgICAgICMgc3BsaXQgdG8gZ2V0IG5hbWUsIHZhbHVlCi0gICAgICAg
ICAgICAgICAgICAgIG11bHRpcGxlcy5hcHBlbmQoX21heWJlX2VuY29kZSh2YWx1ZSkuc3BsaXQo
Yic6JywgMSlbMV0uc3RyaXAoKSkKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVzLmFwcGVu
ZChpc29tb3JwaGljX2VuY29kZSh2YWx1ZSkuc3BsaXQoYic6JywgMSlbMV0uc3RyaXAoKSkKICAg
ICAgICAgICAgICAgICBoZWFkZXJzID0gbXVsdGlwbGVzCiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGhlYWRlcnMgPSBbX21heWJlX2VuY29kZShpdGVtc1toZWFkZXJdKV0KKyAg
ICAgICAgICAgICAgICBoZWFkZXJzID0gW2lzb21vcnBoaWNfZW5jb2RlKGl0ZW1zW2hlYWRlcl0p
XQogICAgICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIGhlYWRlcnMpCiAKLQog
ICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgYWxsIGhlYWRl
cnMgb2YgYSBjZXJ0YWluIChjYXNlLWluc2Vuc2l0aXZlKSBuYW1lLiBJZiB0aGVyZSBpcwogICAg
ICAgICBtb3JlIHRoYW4gb25lLCB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBjb21tYSBzZXBhcmF0
ZWQiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAgICAgIGtleSA9IGlz
b21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdmFsdWVzID0gZGljdC5fX2dldGl0ZW1fXyhz
ZWxmLCBrZXkubG93ZXIoKSkKICAgICAgICAgaWYgbGVuKHZhbHVlcykgPT0gMToKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZXNbMF0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAi
LCAiLmpvaW4odmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIGIiLCAiLmpvaW4odmFsdWVzKQog
CiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uCkBAIC00MzAsNyArNDE0LDcgQEAgY2xhc3MgUmVxdWVzdEhlYWRlcnMoZGljdCk6
CiAgICAgZGVmIGdldF9saXN0KHNlbGYsIGtleSwgZGVmYXVsdD1taXNzaW5nKToKICAgICAgICAg
IiIiR2V0IGFsbCB0aGUgaGVhZGVyIHZhbHVlcyBmb3IgYSBwYXJ0aWN1bGFyIGZpZWxkIG5hbWUg
YXMKICAgICAgICAgYSBsaXN0IiIiCi0gICAgICAgIGtleSA9IF9tYXliZV9lbmNvZGUoa2V5KQor
ICAgICAgICBrZXkgPSBpc29tb3JwaGljX2VuY29kZShrZXkpCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHJldHVybiBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQogICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CkBAIC00NDAsNyArNDI0LDcgQEAgY2xhc3MgUmVxdWVzdEhlYWRl
cnMoZGljdCk6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBfX2NvbnRhaW5zX18o
c2VsZiwga2V5KToKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAgICAgIGtl
eSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgcmV0dXJuIGRpY3QuX19jb250YWlu
c19fKHNlbGYsIGtleS5sb3dlcigpKQogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKQEAgLTQ1
MSw2ICs0MzUsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAgICAgZm9yIGl0
ZW0gaW4gc2VsZjoKICAgICAgICAgICAgIHlpZWxkIHNlbGZbaXRlbV0KIAorCiBjbGFzcyBDb29r
aWVWYWx1ZShvYmplY3QpOgogICAgICIiIlJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCiAKQEAg
LTUyNCw5ICs1MDksOCBAQCBjbGFzcyBDb29raWVWYWx1ZShvYmplY3QpOgogCiAKIGNsYXNzIE11
bHRpRGljdChkaWN0KToKLSAgICAiIiJEaWN0aW9uYXJ5IHR5cGUgdGhhdCBob2xkcyBtdWx0aXBs
ZSB2YWx1ZXMgZm9yIGVhY2gKLSAgICBrZXkiIiIKLSAgICAjVE9ETzogdGhpcyBzaG91bGQgcGVy
aGFwcyBhbHNvIG9yZGVyIHRoZSBrZXlzCisgICAgIiIiRGljdGlvbmFyeSB0eXBlIHRoYXQgaG9s
ZHMgbXVsdGlwbGUgdmFsdWVzIGZvciBlYWNoIGtleSIiIgorICAgICMgVE9ETzogdGhpcyBzaG91
bGQgcGVyaGFwcyBhbHNvIG9yZGVyIHRoZSBrZXlzCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgog
ICAgICAgICBwYXNzCiAKQEAgLTU0MSw3ICs1MjUsNiBAQCBjbGFzcyBNdWx0aURpY3QoZGljdCk6
CiAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgIiIiR2V0IHRoZSBm
aXJzdCB2YWx1ZSB3aXRoIGEgZ2l2ZW4ga2V5IiIiCi0gICAgICAgICNUT0RPOiBzaG91bGQgdGhp
cyBpbnN0ZWFkIGJlIHRoZSBsYXN0IHZhbHVlPwogICAgICAgICByZXR1cm4gc2VsZi5maXJzdChr
ZXkpCiAKICAgICBkZWYgZmlyc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgpAQCAtNTg0
LDYgKzU2NywxMCBAQCBjbGFzcyBNdWx0aURpY3QoZGljdCk6CiAKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgZnJvbV9maWVsZF9zdG9yYWdlKGNscywgZnMpOgorICAgICAgICAiIiJDb25zdHJ1
Y3QgYSBNdWx0aURpY3QgZnJvbSBhIGNnaS5GaWVsZFN0b3JhZ2UKKworICAgICAgICBOb3RlIHRo
YXQgYWxsIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCisgICAgICAgICIiIgog
ICAgICAgICBzZWxmID0gY2xzKCkKICAgICAgICAgaWYgZnMubGlzdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYKQEAgLTU5NCwxMyArNTgxLDQ2IEBAIGNsYXNzIE11bHRpRGljdChk
aWN0KToKIAogICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKICAgICAgICAgICAgICAg
ICBpZiBub3QgdmFsdWUuZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFs
dWUudmFsdWUKLSAgICAgICAgICAgICAgICBzZWxmLmFkZChrZXksIHZhbHVlKQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGlzb21vcnBoaWNfZW5jb2RlKHZhbHVlLnZhbHVlKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHZh
bHVlLCBjZ2kuRmllbGRTdG9yYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYWRkKGlzb21vcnBo
aWNfZW5jb2RlKGtleSksIHZhbHVlKQogICAgICAgICByZXR1cm4gc2VsZgogCiAKK2NsYXNzIEJp
bmFyeUNvb2tpZVBhcnNlcihCYXNlQ29va2llKToKKyAgICAiIiJBIHN1YmNsYXNzIG9mIEJhc2VD
b29raWUgdGhhdCByZXR1cm5zIHZhbHVlcyBpbiBiaW5hcnkgc3RyaW5ncworCisgICAgVGhpcyBp
cyBub3QgaW50ZW5kZWQgdG8gc3RvcmUgdGhlIGNvb2tpZXM7IHVzZSBDb29raWVzIGluc3RlYWQu
CisgICAgIiIiCisgICAgZGVmIHZhbHVlX2RlY29kZShzZWxmLCB2YWwpOgorICAgICAgICAiIiJE
ZWNvZGUgdmFsdWUgZnJvbSBuZXR3b3JrIHRvIChyZWFsX3ZhbHVlLCBjb2RlZF92YWx1ZSkuCisK
KyAgICAgICAgT3ZlcnJpZGUgQmFzZUNvb2tpZS52YWx1ZV9kZWNvZGUuCisgICAgICAgICIiIgor
ICAgICAgICByZXR1cm4gaXNvbW9ycGhpY19lbmNvZGUodmFsKSwgdmFsCisKKyAgICBkZWYgdmFs
dWVfZW5jb2RlKHNlbGYsIHZhbCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Io
J0JpbmFyeUNvb2tpZVBhcnNlciBpcyBub3QgZm9yIHNldHRpbmcgY29va2llcycpCisKKyAgICBk
ZWYgbG9hZChzZWxmLCByYXdkYXRhKToKKyAgICAgICAgIiIiTG9hZCBjb29raWVzIGZyb20gYSBi
aW5hcnkgc3RyaW5nLgorCisgICAgICAgIFRoaXMgb3ZlcnJpZGVzIGFuZCBjYWxscyBCYXNlQ29v
a2llLmxvYWQuIFVubGlrZSBCYXNlQ29va2llLmxvYWQsIGl0CisgICAgICAgIGRvZXMgbm90IGFj
Y2VwdCBkaWN0aW9uYXJpZXMuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShyYXdkYXRhLCBiaW5hcnlfdHlwZSkKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgIyBC
YXNlQ29va2llLmxvYWQgZXhwZWN0cyBhIG5hdGl2ZSBzdHJpbmcsIHdoaWNoIGluIFB5dGhvbiAz
IGlzIHRleHQuCisgICAgICAgICAgICByYXdkYXRhID0gaXNvbW9ycGhpY19kZWNvZGUocmF3ZGF0
YSkKKyAgICAgICAgc3VwZXIoQmluYXJ5Q29va2llUGFyc2VyLCBzZWxmKS5sb2FkKHJhd2RhdGEp
CisKKwogY2xhc3MgQ29va2llcyhNdWx0aURpY3QpOgotICAgICIiIk11bHRpRGljdCBzcGVjaWFs
aXNlZCBmb3IgQ29va2llIHZhbHVlcyIiIgorICAgICIiIk11bHRpRGljdCBzcGVjaWFsaXNlZCBm
b3IgQ29va2llIHZhbHVlcworCisgICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5n
cy4KKyAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHBhc3MKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkK
aW5kZXggM2E2MGMyYmFiYjM5ZDhkNzc5OTkwMjJhN2ZiNGQxODRjYjAxOWFhOC4uYjZmMjc0NDc0
NTE5ODQ2ZDI5OGEyOWRhMGIzZGIzOTYxOTk5YjI0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9y
ZXNwb25zZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5CkBAIC0xLDE5ICsxLDIyIEBA
CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBkYXRldGltZSBpbXBv
cnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQotZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVzIGltcG9y
dCBCYXNlQ29va2llLCBNb3JzZWwKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBqc29u
Ci1pbXBvcnQgdXVpZAogaW1wb3J0IHNvY2tldAotZnJvbSAuY29uc3RhbnRzIGltcG9ydCByZXNw
b25zZV9jb2RlcywgaDJfaGVhZGVycwotZnJvbSAubG9nZ2VyIGltcG9ydCBnZXRfbG9nZ2VyCi1m
cm9tIGlvIGltcG9ydCBCeXRlc0lPCitpbXBvcnQgdXVpZAogCi1mcm9tIHNpeCBpbXBvcnQgYmlu
YXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBlcywgaXRlcnZhbHVlcywgUFkzCi1mcm9t
IGh5cGVyZnJhbWUuZnJhbWUgaW1wb3J0IEhlYWRlcnNGcmFtZSwgRGF0YUZyYW1lLCBDb250aW51
YXRpb25GcmFtZQogZnJvbSBocGFjay5zdHJ1Y3QgaW1wb3J0IEhlYWRlclR1cGxlCitmcm9tIGh5
cGVyZnJhbWUuZnJhbWUgaW1wb3J0IEhlYWRlcnNGcmFtZSwgRGF0YUZyYW1lLCBDb250aW51YXRp
b25GcmFtZQorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUsIGludGVnZXJf
dHlwZXMsIGl0ZXJ2YWx1ZXMsIFBZMworZnJvbSBzaXgubW92ZXMuaHR0cF9jb29raWVzIGltcG9y
dCBCYXNlQ29va2llLCBNb3JzZWwKKworZnJvbSAuY29uc3RhbnRzIGltcG9ydCByZXNwb25zZV9j
b2RlcywgaDJfaGVhZGVycworZnJvbSAubG9nZ2VyIGltcG9ydCBnZXRfbG9nZ2VyCitmcm9tIC51
dGlscyBpbXBvcnQgaXNvbW9ycGhpY19kZWNvZGUsIGlzb21vcnBoaWNfZW5jb2RlCiAKIG1pc3Np
bmcgPSBvYmplY3QoKQogCisKIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgIiIiT2JqZWN0
IHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgdG8gYSBIVFRQIHJlcXVlc3QKIApAQCAtNzksNyAr
ODIsNiBAQCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICBzZWxmLmhlYWRlcnMgPSBS
ZXNwb25zZUhlYWRlcnMoKQogICAgICAgICBzZWxmLmNvbnRlbnQgPSBbXQogCi0KICAgICBAcHJv
cGVydHkKICAgICBkZWYgc3RhdHVzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fc3RhdHVz
CkBAIC05OSw4ICsxMDEsOCBAQCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAiIiJT
ZXQgYSBjb29raWUgdG8gYmUgc2VudCB3aXRoIGEgU2V0LUNvb2tpZSBoZWFkZXIgaW4gdGhlCiAg
ICAgICAgIHJlc3BvbnNlCiAKLSAgICAgICAgOnBhcmFtIG5hbWU6IFN0cmluZyBuYW1lIG9mIHRo
ZSBjb29raWUKLSAgICAgICAgOnBhcmFtIHZhbHVlOiBTdHJpbmcgdmFsdWUgb2YgdGhlIGNvb2tp
ZQorICAgICAgICA6cGFyYW0gbmFtZTogbmFtZSBvZiB0aGUgY29va2llIChhIGJpbmFyeSBzdHJp
bmcpCisgICAgICAgIDpwYXJhbSB2YWx1ZTogdmFsdWUgb2YgdGhlIGNvb2tpZSAoYSBiaW5hcnkg
c3RyaW5nLCBvciBOb25lKQogICAgICAgICA6cGFyYW0gbWF4X2FnZTogZGF0ZXRpbWUudGltZWRl
bHRhIGludCByZXByZXNlbnRpbmcgdGhlIHRpbWUgKGluIHNlY29uZHMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnRpbCB0aGUgY29va2llIGV4cGlyZXMKICAgICAgICAgOnBhcmFtIHBhdGg6
IFN0cmluZyBwYXRoIHRvIHdoaWNoIHRoZSBjb29raWUgYXBwbGllcwpAQCAtMTEzLDE0ICsxMTUs
MjAgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWUgb3IgaW50ZXJ2YWwgZnJvbSBub3cgd2hlbiB0aGUgY29va2llIGV4cGlyZXMKIAogICAgICAg
ICAiIiIKKyAgICAgICAgIyBUT0RPKFB5dGhvbiAzKTogQ29udmVydCBvdGhlciBwYXJhbWV0ZXJz
IChlLmcuIHBhdGgpIHRvIGJ5dGVzLCB0b28uCisgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Cisg
ICAgICAgICAgICB2YWx1ZSA9IGInJworICAgICAgICAgICAgbWF4X2FnZSA9IDAKKyAgICAgICAg
ICAgIGV4cGlyZXMgPSB0aW1lZGVsdGEoZGF5cz0tMSkKKworICAgICAgICBpZiBQWTM6CisgICAg
ICAgICAgICBuYW1lID0gaXNvbW9ycGhpY19kZWNvZGUobmFtZSkKKyAgICAgICAgICAgIHZhbHVl
ID0gaXNvbW9ycGhpY19kZWNvZGUodmFsdWUpCisKICAgICAgICAgZGF5cyA9IHtpKzE6IG5hbWUg
Zm9yIGksIG5hbWUgaW4gZW51bWVyYXRlKFsiamFuIiwgImZlYiIsICJtYXIiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcHIiLCAibWF5Iiwg
Imp1biIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImp1bCIsICJhdWciLCAic2VwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAib2N0IiwgIm5vdiIsICJkZWMiXSl9Ci0gICAgICAgIGlmIHZh
bHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9ICcnCi0gICAgICAgICAgICBtYXhfYWdl
ID0gMAotICAgICAgICAgICAgZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQogCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoZXhwaXJlcywgdGltZWRlbHRhKToKICAgICAgICAgICAgIGV4cGlyZXMg
PSBkYXRldGltZS51dGNub3coKSArIGV4cGlyZXMKQEAgLTE1NCwxMSArMTYyLDE0IEBAIGNsYXNz
IFJlc3BvbnNlKG9iamVjdCk6CiAKICAgICBkZWYgdW5zZXRfY29va2llKHNlbGYsIG5hbWUpOgog
ICAgICAgICAiIiJSZW1vdmUgYSBjb29raWUgZnJvbSB0aG9zZSB0aGF0IGFyZSBiZWluZyBzZW50
IHdpdGggdGhlIHJlc3BvbnNlIiIiCisgICAgICAgIGlmIFBZMzoKKyAgICAgICAgICAgIG5hbWUg
PSBpc29tb3JwaGljX2RlY29kZShuYW1lKQogICAgICAgICBjb29raWVzID0gc2VsZi5oZWFkZXJz
LmdldCgiU2V0LUNvb2tpZSIpCiAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQogICAgICAg
ICBmb3IgY29va2llIGluIGNvb2tpZXM6CiAgICAgICAgICAgICBpZiBQWTM6Ci0gICAgICAgICAg
ICAgICAgY29va2llID0gY29va2llLmRlY29kZSgiaXNvLTg4NTktMSIpCisgICAgICAgICAgICAg
ICAgIyBCYXNlQ29va2llLmxvYWQgZXhwZWN0cyBhIHRleHQgc3RyaW5nLgorICAgICAgICAgICAg
ICAgIGNvb2tpZSA9IGlzb21vcnBoaWNfZGVjb2RlKGNvb2tpZSkKICAgICAgICAgICAgIHBhcnNl
ci5sb2FkKGNvb2tpZSkKIAogICAgICAgICBpZiBuYW1lIGluIHBhcnNlci5rZXlzKCk6CkBAIC0y
MjMsOSArMjM0LDEyIEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYud3Jp
dGVfc3RhdHVzX2hlYWRlcnMoKQogICAgICAgICBzZWxmLndyaXRlX2NvbnRlbnQoKQogCi0gICAg
ZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPSIiKToKLSAgICAgICAgIiIiU2V0IHRo
ZSByZXNwb25zZSBzdGF0dXMgaGVhZGVycyBhbmQgYm9keSB0byBpbmRpY2F0ZSBhbgotICAgICAg
ICBlcnJvciIiIgorICAgIGRlZiBzZXRfZXJyb3Ioc2VsZiwgY29kZSwgbWVzc2FnZT11IiIpOgor
ICAgICAgICAiIiJTZXQgdGhlIHJlc3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCByZXR1cm4gYSBK
U09OIGVycm9yIG9iamVjdDoKKworICAgICAgICB7ImVycm9yIjogeyJjb2RlIjogY29kZSwgIm1l
c3NhZ2UiOiBtZXNzYWdlfX0KKyAgICAgICAgY29kZSBpcyBhbiBpbnQgKEhUVFAgc3RhdHVzIGNv
ZGUpLCBhbmQgbWVzc2FnZSBpcyBhIHRleHQgc3RyaW5nLgorICAgICAgICAiIiIKICAgICAgICAg
ZXJyID0geyJjb2RlIjogY29kZSwKICAgICAgICAgICAgICAgICJtZXNzYWdlIjogbWVzc2FnZX0K
ICAgICAgICAgZGF0YSA9IGpzb24uZHVtcHMoeyJlcnJvciI6IGVycn0pCkBAIC0yOTcsMjQgKzMx
MSwxMCBAQCBjbGFzcyBNdWx0aXBhcnRQYXJ0KG9iamVjdCk6CiAKIAogZGVmIF9tYXliZV9lbmNv
ZGUocyk6Ci0gICAgIiIiRW5jb2RlcyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0
YSB1c2luZyBpc28tODg1OS0xLgotCi0gICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQg
YGJ5dGVzYCBpbiBQeXRob24gMy4gVGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKLSAgICBpZiB0aGUg
YXJndW1lbnQgYWxyZWFkeSBoYXMgYSBiaW5hcnkgdHlwZS4KLSAgICAiIiIKLSAgICBpZiBpc2lu
c3RhbmNlKHMsIGJpbmFyeV90eXBlKToKLSAgICAgICAgcmV0dXJuIHMKLQotICAgICMgUHl0aG9u
IDMgYXNzdW1lcyBpc28tODg1OS0xIHdoZW4gcGFyc2luZyBoZWFkZXJzLCB3aGljaCB3aWxsIGdh
cmJsZSB0ZXh0Ci0gICAgIyB3aXRoIG5vbiBBU0NJSSBjaGFyYWN0ZXJzLiBXZSB0cnkgdG8gZW5j
b2RlIHRoZSB0ZXh0IGJhY2sgdG8gYmluYXJ5LgotICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5
dGhvbi9jcHl0aG9uL2Jsb2IvMjczZmMyMjBiMjU5MzNlNDQzYzgyYWY2ODg4ZWIxODcxZDAzMmZi
OC9MaWIvaHR0cC9jbGllbnQucHkjTDIxMwotICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBl
KToKLSAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKLQorICAgICIiIkVuY29k
ZSBhIHN0cmluZyBvciBhbiBpbnQgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc29tb3JwaGljX2Vu
Y29kZSgpLiIiIgogICAgIGlmIGlzaW5zdGFuY2UocywgaW50ZWdlcl90eXBlcyk6CiAgICAgICAg
IHJldHVybiBiIiVpIiAlIChzLCkKLQotICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2
YWx1ZSBpbiBSZXNwb25zZUhlYWRlcnM6ICVyIiAlIHMpCisgICAgcmV0dXJuIGlzb21vcnBoaWNf
ZW5jb2RlKHMpCiAKIAogY2xhc3MgUmVzcG9uc2VIZWFkZXJzKG9iamVjdCk6CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVyLnB5CmluZGV4IGMwMzc3
MzJhNmJhZWYzMWQ1OGIzZGZmOTI3YjA3NGRmY2ZhYmI0ZmYuLmMyNDk4YzRlZTFlOGY0NWRlNjA0
ZjcxMzk0YzNkNmZlZWY4MmFlZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVyLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvc2VydmVyLnB5CkBAIC02NCwxMiArNjQsNiBAQCBoYW5kbGVyIHJldHVy
bnMsIG9yIGZvciBkaXJlY3RseSB3cml0aW5nIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogIiIiCiAK
IAotRURJVF9IT1NUU19IRUxQID0gKCJQbGVhc2UgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IFdQ
VCBzdWJkb21haW5zICIKLSAgICAgICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJh
Y2sgZGV2aWNlIGluIC9ldGMvaG9zdHMuICIKLSAgICAgICAgICAgICAgICAgICJTZWUgaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQjcnVubmluZy10aGUtdGVzdHMgIgot
ICAgICAgICAgICAgICAgICAgImZvciBpbnN0cnVjdGlvbnMuIikKLQotCiBjbGFzcyBSZXF1ZXN0
UmV3cml0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnVsZXMpOgogICAgICAg
ICAiIiJPYmplY3QgZm9yIHJld3JpdGluZyB0aGUgcmVxdWVzdCBwYXRoLgpAQCAtNjc2LDcgKzY3
MCw4IEBAIGNsYXNzIFdlYlRlc3RIdHRwZChvYmplY3QpOgogCiAgICAgICAgICAgICBfaG9zdCwg
c2VsZi5wb3J0ID0gc2VsZi5odHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQogICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuY3JpdGljYWwoIkZhaWxlZCB0
byBzdGFydCBIVFRQIHNlcnZlci4ge30iLmZvcm1hdChFRElUX0hPU1RTX0hFTFApKQorICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuY3JpdGljYWwoIkZhaWxlZCB0byBzdGFydCBIVFRQIHNlcnZlciBv
biBwb3J0ICVzOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMgc29tZXRo
aW5nIGFscmVhZHkgdXNpbmcgdGhhdCBwb3J0PyIgJSBwb3J0KQogICAgICAgICAgICAgcmFpc2UK
IAogICAgIGRlZiBzdGFydChzZWxmLCBibG9jaz1GYWxzZSk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL3NzbHV0aWxzL29wZW5zc2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkK
aW5kZXggYWVhMWM3MzgwYjE3OWNlZDEzNjZiNjYxNzA1NzU3OGIzNWQ5ZTE0Yi4uNjRmNmQ1ZmIy
ZGIyNzk1OGYzM2RkMzZiNTdiN2MxNzRkZjBiZDdlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9z
c2x1dGlscy9vcGVuc3NsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQpA
QCAtNDAyLDYgKzQwMiw4IEBAIGNsYXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgogCiAg
ICAgZGVmIF9nZW5lcmF0ZV9ob3N0X2NlcnQoc2VsZiwgaG9zdHMpOgogICAgICAgICBob3N0ID0g
aG9zdHNbMF0KKyAgICAgICAgaWYgbm90IHNlbGYuZm9yY2VfcmVnZW5lcmF0ZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvYWRfY2FfY2VydCgpCiAgICAgICAgIGlmIHNlbGYuX2NhX2tleV9wYXRoIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9nZW5lcmF0ZV9jYShob3N0cykKICAgICAgICAgY2Ff
a2V5X3BhdGggPSBzZWxmLl9jYV9rZXlfcGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkKaW5kZXggOGI2ZmQzNGYwMmMwZTliNzA3M2QwYzk0
MDExNzA3ZWFhNGU1YTFmMS4uNmIzNTE4NDc0OTFiZmVlMWY4ZTE3YTQyMTI3Yzg4YmU5N2E2Mjky
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNo
LnB5CkBAIC00LDcgKzQsOSBAQCBpbXBvcnQgb3MKIGltcG9ydCB1dWlkCiBpbXBvcnQgdGhyZWFk
aW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5tYW5hZ2VycyBpbXBvcnQgQWNxdWlyZXJQcm94eSwg
QmFzZU1hbmFnZXIsIERpY3RQcm94eQotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQorZnJvbSBz
aXggaW1wb3J0IHRleHRfdHlwZSwgYmluYXJ5X3R5cGUKKworZnJvbSAudXRpbHMgaW1wb3J0IGlz
b21vcnBoaWNfZW5jb2RlCiAKIAogY2xhc3MgU2VydmVyRGljdE1hbmFnZXIoQmFzZU1hbmFnZXIp
OgpAQCAtMTQ1LDkgKzE0NywxMiBAQCBjbGFzcyBTdGFzaChvYmplY3QpOgogICAgICAgICBpZiBw
YXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXRoID0gc2VsZi5kZWZhdWx0X3BhdGgKICAgICAg
ICAgIyBUaGlzIGtleSBmb3JtYXQgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB1c2luZyB0aGUgcGF0
aC4gU2luY2UgdGhlIGRhdGEKLSAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2ggY2FuIGJl
IGEgRGljdFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdCBjaGFuZ2VzCi0gICAgICAgICMgd2hl
biB3cml0aW5nIHRvIGEgc3ViZGljdC4KLSAgICAgICAgcmV0dXJuIChzdHIocGF0aCksIHN0cih1
dWlkLlVVSUQoa2V5KSkpCisgICAgICAgICMgcGFzc2VkIGludG8gdGhlIHN0YXNoIGNhbiBiZSBh
IERpY3RQcm94eSB3aGljaCB3b3VsZG4ndCBkZXRlY3QKKyAgICAgICAgIyBjaGFuZ2VzIHdoZW4g
d3JpdGluZyB0byBhIHN1YmRpY3QuCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBiaW5hcnlf
dHlwZSk6CisgICAgICAgICAgICAjIFVVSURzIGFyZSB3aXRoaW4gdGhlIEFTQ0lJIGNoYXJzZXQu
CisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdhc2NpaScpCisgICAgICAgIHJldHVybiAo
aXNvbW9ycGhpY19lbmNvZGUocGF0aCksIHV1aWQuVVVJRChrZXkpLmJ5dGVzKQogCiAgICAgZGVm
IHB1dChzZWxmLCBrZXksIHZhbHVlLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJQbGFjZSBhIHZh
bHVlIGluIHRoZSBzaGFyZWQgc3Rhc2guCkBAIC0xNjIsNyArMTY3LDcgQEAgY2xhc3MgU3Rhc2go
b2JqZWN0KToKICAgICAgICAgaWYgaW50ZXJuYWxfa2V5IGluIHNlbGYuZGF0YToKICAgICAgICAg
ICAgIHJhaXNlIFN0YXNoRXJyb3IoIlRyaWVkIHRvIG92ZXJ3cml0ZSBleGlzdGluZyBzaGFyZWQg
c3Rhc2ggdmFsdWUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGtleSAlcyAo
b2xkIHZhbHVlIHdhcyAlcywgbmV3IHZhbHVlIGlzICVzKSIgJQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoaW50ZXJuYWxfa2V5LCBzZWxmLmRhdGFbc3RyKGludGVybmFsX2tleSldLCB2
YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYu
ZGF0YVtpbnRlcm5hbF9rZXldLCB2YWx1ZSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBz
ZWxmLmRhdGFbaW50ZXJuYWxfa2V5XSA9IHZhbHVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
dXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxzLnB5CmluZGV4IDY0YjA4YTI3YWE4YjMzZDRjZWE4
Njc3YjMwZDMzMDk2Y2FlMjEyZDUuLmIwMDViNDE3ZDc0M2YyMGYwNjVjMTk1ZTc0M2Q4YWJjZmIw
NGFkZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91
dGlscy5weQpAQCAtMSw2ICsxLDQ1IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiAKK2Zy
b20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCisKKworZGVmIGlzb21vcnBoaWNf
ZGVjb2RlKHMpOgorICAgICIiIkRlY29kZXMgYSBiaW5hcnkgc3RyaW5nIGludG8gYSB0ZXh0IHN0
cmluZyB1c2luZyBpc28tODg1OS0xLgorCisgICAgUmV0dXJucyBgdW5pY29kZWAgaW4gUHl0aG9u
IDIgYW5kIGBzdHJgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYQorICAgIG5vLW9wIGlm
IHRoZSBhcmd1bWVudCBhbHJlYWR5IGhhcyBhIHRleHQgdHlwZS4gaXNvLTg4NTktMSBpcyBjaG9z
ZW4gYmVjYXVzZQorICAgIGl0IGlzIGFuIDgtYml0IGVuY29kaW5nIHdob3NlIGNvZGUgcG9pbnRz
IHJhbmdlIGZyb20gMHgwIHRvIDB4RkYgYW5kIHRoZQorICAgIHZhbHVlcyBhcmUgdGhlIHNhbWUg
YXMgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbnMsIHNvIGFueSBiaW5hcnkgc3RyaW5nIGNhbgor
ICAgIGJlIGRlY29kZWQgaW50byBhbmQgZW5jb2RlZCBmcm9tIGlzby04ODU5LTEgd2l0aG91dCBh
bnkgZXJyb3JzIG9yIGRhdGEKKyAgICBsb3NzLiBQeXRob24gMyBhbHNvIHVzZXMgaXNvLTg4NTkt
MSAob3IgbGF0aW4tMSkgZXh0ZW5zaXZlbHkgaW4gaHR0cDoKKyAgICBodHRwczovL2dpdGh1Yi5j
b20vcHl0aG9uL2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFk
MDMyZmI4L0xpYi9odHRwL2NsaWVudC5weSNMMjEzCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5j
ZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICByZXR1cm4gcworCisgICAgaWYgaXNpbnN0YW5jZShz
LCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzLmRlY29kZSgiaXNvLTg4NTktMSIpCisK
KyAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgKGV4cGVjdGluZyBzdHJpbmct
bGlrZSk6ICVyIiAlIHMpCisKKworZGVmIGlzb21vcnBoaWNfZW5jb2RlKHMpOgorICAgICIiIkVu
Y29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcgaXNvLTg4NTkt
MS4KKworICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2AgaW4gUHl0aG9u
IDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCisgICAgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkg
aGFzIGEgYmluYXJ5IHR5cGUuIFRoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0IG9mCisgICAgaXNvbW9y
cGhpY19kZWNvZGUuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6
CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Cisg
ICAgICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCisKKyAgICByYWlzZSBUeXBlRXJy
b3IoIlVuZXhwZWN0ZWQgdmFsdWUgKGV4cGVjdGluZyBzdHJpbmctbGlrZSk6ICVyIiAlIHMpCisK
KwogZGVmIGludmVydF9kaWN0KGRpY3QpOgogICAgIHJ2ID0ge30KICAgICBmb3Iga2V5LCB2YWx1
ZXMgaW4gZGljdC5pdGVtcygpOgpAQCAtMjUsNiArNjQsNyBAQCBkZWYgX29wZW5fc29ja2V0KGhv
c3QsIHBvcnQpOgogICAgIHNvY2subGlzdGVuKDUpCiAgICAgcmV0dXJuIHNvY2sKIAorCiBkZWYg
aXNfYmFkX3BvcnQocG9ydCk6CiAgICAgIiIiCiAgICAgQmFkIHBvcnQgYXMgcGVyIGh0dHBzOi8v
ZmV0Y2guc3BlYy53aGF0d2cub3JnLyNwb3J0LWJsb2NraW5nCkBAIC05OSw2ICsxMzksNyBAQCBk
ZWYgaXNfYmFkX3BvcnQocG9ydCk6CiAgICAgICAgIDY2OTcsICAjIGlyYyt0bHMKICAgICBdCiAK
KwogZGVmIGdldF9wb3J0KGhvc3Q9JycpOgogICAgIGhvc3QgPSBob3N0IG9yICcxMjcuMC4wLjEn
CiAgICAgcG9ydCA9IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25z
dHJ1Y3Rvci9jb21waWxlLmFueS5qcwppbmRleCA2YzQxMjM5NDNlNzc1ZjQ2ZTg1NGIyYzA3MjU4
YTdkMDhjNWNmNjkyLi5lOTRjZTExNzE3MzY5ZmI2NWVmMDRjNmVjNmExM2RhMTkyODkzMDc3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBp
bGUuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlw
dD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9N
b2R1bGUobW9kdWxlKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWlt
cG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1pbXBvcnRzLmFueS5qcwpp
bmRleCAzNzA3MjQzNDIwOGE1ODgxOWEwYTQxZmFhNmExOTEwNzA0YzEwODQ1Li4zMDI1MmJkNmVl
YjNhYjk3Mjg2MzMxYWE3Njk2ODIyNWRhZDVhNTAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5z
dGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS1i
YWQtaW1wb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVs
bAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVU
QTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNj
cmlwdD0vd2FzbS9qc2FwaS9iYWQtaW1wb3J0cy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3Iv
aW5zdGFudGlhdGUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcwppbmRleCAw
MjE4ZGUyYjQ1MjkyYzIzZThmY2M3MjBkYmY4YzJjNGE1YzliNjkzLi44MTUyZjNhNTZmM2Y0Mzk5
OTc2NWMzNDllNDg4ZGRiMzEzNDQyMTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlh
dGUuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5hbnkuanMKQEAgLTEsNCArMSw0
IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRp
Y2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9k
dWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRpb25zLmpz
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvaW5zdGFuY2VUZXN0RmFjdG9yeS5qcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2NvbnN0cnVjdG9yL211bHRpLXZhbHVlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12
YWx1ZS5hbnkuanMKaW5kZXggMmM1M2UzNjExZTA0NGM4YmE0NGE1YzA0MzZkNDQwOWJjOWYxYWY0
Mi4uNGIwNmQxZGEzYzQ5YjkzNDA2ZTk5ZWNiM2U2YTcyY2E3NmM5ZDFiZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2Nv
bnN0cnVjdG9yL211bHRpLXZhbHVlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0v
d2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20v
anNhcGkvYXNzZXJ0aW9ucy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvdmFsaWRhdGUuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2NvbnN0cnVjdG9yL3ZhbGlkYXRlLmFueS5qcwppbmRleCBhNTIzYWNjNzkyNWM5ZWY3NjQ2
ZDI5NmE3OGJmOTgzMWVkYTg2ZDcxLi44YjRmNDU4MmFiMjk4NzczMmQ0MDQ5OTQ4OTllOWE3NzY2
MmUyYTMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1
Y3Rvci92YWxpZGF0ZS5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogbGV0IGVt
cHR5TW9kdWxlQmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC9jb25zdHJ1Y3Rvci5hbnkuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xv
YmFsL2NvbnN0cnVjdG9yLmFueS5qcwppbmRleCAyNzAxNDllYzE0NDMwNDVlNDEzNGVlYjgwNDAz
NjUxYTNkMGExMmZmLi5iMDA4ZWYzMDE2MDFlYjRlNGEyNTU1N2VmYWYxZWMxMzVjZWUxMGI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9y
LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfR2xvYmFsKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90
b1N0cmluZy5hbnkuanMKaW5kZXggNWY2NGQ3MmRlOWQ5ZGY0YTk5ZTQ4MmNkZWQ1YTMwYWMxYzhh
MzQzYy4uMzU5YzQyNzNiNWJkNzg2N2FjZGE0NGZjNDZhNmRkYzAwYWNjOTc2ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2dsb2JhbC90b1N0cmluZy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0cmluZy5hbnkuanMKQEAgLTEs
NCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRv
dyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3QgYXJndW1l
bnQgPSB7ICJ2YWx1ZSI6ICJpMzIiIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2dsb2JhbC92YWx1ZS1nZXQtc2V0LmFueS5qcwppbmRleCA2OWYwZTQ2Mzc5ZmZkMjBh
M2I5YmZiMTkwNDg3Mzc2ZDYxNmQ5MTZlLi40M2Q4NDc0YTI1ZDE4MmQ3NDIyNjU0ZjYxNzY5YmY4
N2QzYWJhMjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9i
YWwvdmFsdWUtZ2V0LXNldC5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9
anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAog
CiB0ZXN0KCgpID0+IHsKICAgY29uc3QgdGhpc1ZhbHVlcyA9IFsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwv
dmFsdWVPZi5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVlT2YuYW55LmpzCmluZGV4IDBkNGRlOTNhNmJkMjI5
ZjhkOWZhYjc5NDFiMjRhMTk0NGRjNmFhNzguLjA2OTVhNWE2MWZiYzZlMjQ1MDE5YTdiZjQyODEw
Y2I4NGEwZGZhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92
YWx1ZU9mLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkg
PT4gewogICBjb25zdCBhcmd1bWVudCA9IHsgInZhbHVlIjogImkzMiIgfTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9p
bnN0YW5jZS9jb25zdHJ1Y3Rvci1iYWQtaW1wb3J0cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3RydWN0
b3ItYmFkLWltcG9ydHMuYW55LmpzCmluZGV4IGU4OGQwMmI2NDk2ODRiMGQ3Y2VlY2IwZDBhM2Qx
ZTg3NWRkMjFjNDkuLmU0YTVhYmI4ZWIyMTY5ZmJjZTE3YjYwZGEyNzMxMmJhOTRhMGI5ZDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1iYWQtaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1F
VEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtl
cixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRl
ci5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2JhZC1pbXBvcnRzLmpzCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1jYWNoaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1
Y3Rvci1jYWNoaW5nLmFueS5qcwppbmRleCA2OTViMDc4YTBmOTQ3ODYyMDcxNWIwZmVmMjU5Zjcy
MDc0MzdmMjlkLi4xYWE0NzM5YjYyOTRkMDEzN2VhZDMwOTdkNWRiY2VjM2UzYTFmMjIyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20v
anNhcGkvaW5zdGFuY2UvY29uc3RydWN0b3ItY2FjaGluZy5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2Nv
bnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFs
PWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwK
IC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1
bmN0aW9uIGdldEV4cG9ydHMoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3RydWN0b3IuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLmFueS5qcwppbmRleCAwNmM2ZDdhODhjMDkyMzVhYmQ0
MGE3MWEzNzlmMGQ4MDA1YTMzNjE4Li4yNjM5MGViZDJjZGIyZTRjNDhkYzMwYmQ1MGY2ZTU3OTRl
ODA3OTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5j
ZS9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6
IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRpb25zLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20v
anNhcGkvaW5zdGFuY2VUZXN0RmFjdG9yeS5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55LmpzCmluZGV4IDdjODFhNDEyOTViMGExZjJlMjBl
ZTc5NzIyOTFlMTA5OWYyMzc1ZmUuLjZkY2ZiY2VlOTUwZDg3MWNkNmVlM2U1YWY5NGJlZTM5ZmQ4
ZjUxZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvZXhw
b3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2Ny
aXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogbGV0IGVtcHR5TW9kdWxl
QmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0
cmluZy5hbnkuanMKaW5kZXggNzAxZWM4ZjliYWQ5OThiYzI2MzEwZTc0YThhN2UyM2YyY2JmNWM0
ZC4uNTQ3YTljYTgyOTVmNWI2ODEzYTNkMTc5YmJmZDNjYTkwNTRlNDk3MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2lu
c3RhbmNlL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55LmpzCkBAIC0x
LDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5k
b3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93
YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIHRlc3QoKCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2ludGVyZmFj
ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvaW50ZXJmYWNlLmFueS5qcwppbmRleCA4ODk0MGJlNTFhN2Y1NzI3YzI3ZTE2N2Q5
ZTEwYWJiYWViMDRhMDZiLi40NTUxZTZlNmUzZDQzZTU0ZTBkYmI2YTY0ZjA3ZmI1N2VmOThhYzQ0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvaW50ZXJmYWNlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFueS5qcwpAQCAtMSw0
ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93
LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYXNz
ZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiB0ZXN0X29wZXJhdGlvbnMob2JqZWN0LCBvYmplY3RfbmFt
ZSwgb3BlcmF0aW9ucykgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9idWZmZXIuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9i
dWZmZXIuYW55LmpzCmluZGV4IGE4MzVlNjUxMWEwYTZjNTNjMzZhMGZmZDgxNDNmNGExYTczODhl
Y2EuLmZiMWQxMjAwYjg5MmJlMWViN2FlYTY2ZGIzNDNkYjQ5MWU5MjFhOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9t
ZW1vcnkvYnVmZmVyLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMKQEAgLTEsNCArMSw0
IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRp
Y2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3QgdGhpc1ZhbHVlcyA9
IFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tZW1vcnkvY29uc3RydWN0b3IuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rv
ci5hbnkuanMKaW5kZXggMDNlZWQ1MjcwODMxYjUwNGU2YWIyMWJjYzhlZTM2ZmRmZDA1MDMwNC4u
ZjUwNTcxOWQyYzVlNDExY2E5ZGViYzAwNzZhMmI0MGRlZDAyMGUxYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMKQEAgLTEs
NCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRv
dyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fz
c2VydGlvbnMuanMKIAogZnVuY3Rpb24gYXNzZXJ0X01lbW9yeShtZW1vcnksIGV4cGVjdGVkKSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS9ncm93LmFueS5qcwppbmRleCAw
Y2VhOGI0YjFhNjMzZjFmNmRhOTIzMTMzMmUzOTRiN2ZjZDc2MTk3Li5kYjllNzgxMzYxN2I5NjQ3
MWE5MGMzNWM5NmI4NWYwOTI2OTk4ZGMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9tZW1vcnkvZ3Jvdy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiBm
dW5jdGlvbiBhc3NlcnRfQXJyYXlCdWZmZXIoYWN0dWFsLCB7IHNpemU9MCwgc2hhcmVkPWZhbHNl
LCBkZXRhY2hlZD1mYWxzZSB9LCBtZXNzYWdlKSB7CiAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9X
ZWJBc3NlbWJseS9zcGVjL2lzc3Vlcy84NDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvdG9TdHJpbmcuYW55
LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMKaW5kZXggYmI5MDgxZDE4NjE3ZTFhZjcyNDI0ZWE3
MDBkMzBlNWNiMGVmZDk4ZC4uZjQwNTlmNzY1NzcyMjc1OWNlNGZjOTUwYzQ4NTA5MTZkMTAyZGVk
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5h
bnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAg
Y29uc3QgYXJndW1lbnQgPSB7ICJpbml0aWFsIjogMCB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9jb25z
dHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVjdG9yLmFueS5qcwppbmRleCBhYzRjZGUyZTMx
N2U1ZWNiMTg3YTk2NGY0ZjUyZjZhN2RjNzZkZDk4Li45OTc4ZjdlNmFjOGYyYjExYmNhY2E4MjNi
ODc3ZWE4MTdkZmU3ZTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVjdG9yLmFueS5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bW9kdWxlL2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2Jh
bD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxs
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVs
ZS9jdXN0b21TZWN0aW9ucy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1c3RvbVNlY3Rpb25zLmFueS5qcwppbmRl
eCA4YzIxNWQxN2JkMjU4MzRhZDI5ODNlODgxNzIzNzFjNGVlMWY2NWMyLi40MDI5ODc3ZTkyYzdi
OGIzYmQzMjE4NDg1Mzk0NzVjM2FmNTJlZGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1c3RvbVNlY3Rp
b25zLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2N1c3RvbVNlY3Rpb25zLmFueS5qcwpAQCAtMSw0ICsxLDQg
QEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGlj
YXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1
bGUtYnVpbGRlci5qcwogCiBmdW5jdGlvbiBhc3NlcnRfQXJyYXlCdWZmZXIoYnVmZmVyLCBleHBl
Y3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5h
bnkuanMKaW5kZXggMTMyOWM2YTYwMjFmMmQ1OTAyZjc1OWU0ZGE5MmQyMDk5NzRkYTcwZS4uNjBi
MmMwNGY0MzY5NjhhYzExNTU3ODYwMjc1ZDc1YmM4OWU0OWUzZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9l
eHBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAot
Ly8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1i
dWlsZGVyLmpzCiAKIGxldCBlbXB0eU1vZHVsZUJpbmFyeTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvaW1w
b3J0cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMuYW55LmpzCmluZGV4IDlhN2Q2MTE1OTg2ZWEwNjZj
NTA3NWQxNGY2MGQzY2IwMjc3YTc4YTEuLmQ2NzU0YzllZmJkYzQ0Y2Q5NjM3MDhmNWI3NTFmMTU0
NmRkZmNkMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBv
cnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3Jp
cHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBmdW5jdGlvbiBhc3NlcnRf
TW9kdWxlSW1wb3J0RGVzY3JpcHRvcihpbXBvcnRfLCBleHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21v
ZHVsZS90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL3RvU3RyaW5nLmFueS5qcwppbmRleCA3ZGQ4NWEx
YzRhYzZlNTI1ZTFlNGMwZjliYWNjMzI5NWU3ZWRhN2ZjLi4xYzIwY2Q2MTA4Yzg0ZTU2ZTIxOWYw
ZTczOGUwNjcyY2Q3YzJkMDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL3RvU3RyaW5nLmFueS5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bW9kdWxlL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1q
c3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAv
LyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiB0ZXN0
KCgpID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvY29uc3Ry
dWN0b3IuYW55LmpzCmluZGV4IDVjOWE2ZjEzZDkxZWJhMDk4YWI1OWU4OTMxNDUyMjIzNzVlMWI2
Y2MuLmU5ZTc3YTEzMmI3NmE0NzlhMjg5NWMxOGM2OWI0MDJiZTcxZmUzZTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90
YWJsZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2NvbnN0cnVjdG9yLmFueS5qcwpAQCAt
MSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2lu
ZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkv
YXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfVGFibGUoYWN0dWFsLCBleHBlY3RlZCkg
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55LmpzCmlu
ZGV4IDRlMGE1ZjhjMTA0OGY0Yjc3MWMzOGZmMGFlZjk5MTBlZDM3YjI1YzIuLjJlMTYzNDZjNjQ3
OWVjNTVlMTZhMzM0OWYxMmI2Y2E0YjZkYTdkNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9nZXQtc2V0LmFu
eS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBn
bG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNz
aGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMK
IC8vIE1FVEE6IHNjcmlwdD1hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LXJl
ZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1yZWZ0eXBlcy50ZW50YXRpdmUuYW55
LmpzCmluZGV4IGVkZmIzMzQ5OTFlMDRkMmNhYmZlZWI0NDI2YWQwNTM3OTZjNjdlYzUuLjg1ZGNi
ZDFkMDA2NDNhMDIyZDA2NjUyNmI1YzAwODFjOWM2ZTBiYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93
LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVmdHlwZXMudGVudGF0
aXZlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBN
RVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3Jp
cHQ9YXNzZXJ0aW9ucy5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tY29uc3Rh
bnRzLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5q
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzCmluZGV4IGY1
NDNjYzYyMGJjYzRjY2MwZTcwNmQwZGNiOGU2OGFmNDIxMGEyNGUuLjNiMmVlNWZhOGVmNjZkZDZh
N2QwMmM1OTc2OWE0MTMwM2U2YTFjNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LmFueS5qcworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
dGFibGUvZ3Jvdy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVs
bAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVU
QTogc2NyaXB0PWFzc2VydGlvbnMuanMKIAogZnVuY3Rpb24gbnVsbHMobikgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L3RhYmxlL2xlbmd0aC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvbGVuZ3RoLmFueS5qcwppbmRleCBmNGUxMTQ4NDc5
NzI5MDYxYTdmNDBlNjgzMTFhZGQ0M2UwYzUxYjFjLi5hOWVmMDk1ZGVkNDQ1ODFkNDRkZWNlNTk1
Nzc1NzdmYTZmZTI1NDFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvbGVuZ3RoLmFueS5qcworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUv
bGVuZ3RoLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkg
PT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL3RvU3RyaW5nLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMKaW5kZXggNzA4YzE3YjNhY2FkZmRlMmM5YWJkYTMw
MGMyZDU3ZTYxZjVhNzBjZS4uOGEwOWYyODMyYzFkNjQ1OTQxODJmYWU0NjUxYmM5YjA3YTUwOGQ0
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL3RhYmxlL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7CiAgIGNv
bnN0IGFyZ3VtZW50ID0geyAiZWxlbWVudCI6ICJhbnlmdW5jIiwgImluaXRpYWwiOiAwIH07CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMKaW5kZXggNDVlNGRh
ZGIzYjljZTVmYmVhZDg4ZGM4NWQ2ODgzMmI2ZGQwNGI1YS4uNDQ3YmNkZWZiZTVmYjc4NmRlMzFm
YWZmYzljNDQ2Mjk0OGY0ZTJiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2Jhc2ljLWF1dGguYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9iYXNp
Yy1hdXRoLmFueS5qcwpAQCAtMSw1ICsxLDUgQEAKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29y
a2VyCiAvLyBNRVRBOiBzY3JpcHQ9d2Vic29ja2V0LnN1Yi5qcwotLy8gTUVUQTogZ2xvYmFsPXNo
YXJlZHdvcmtlcixzZXJ2aWNld29ya2VyCiAKIGFzeW5jX3Rlc3QodCA9PiB7CiAgIGNvbnN0IGlz
U2VjdXJlID0gbmV3IFVSTChsb2NhdGlvbi5ocmVmKS5zY2hlbWUgPT09ICdodHRwcyc7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNv
Y2tldHMvYnVmZmVyZWRBbW91bnQtdW5jaGFuZ2VkLWJ5LXN5bmMteGhyLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9idWZmZXJl
ZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55LmpzCmluZGV4IDgzOTdmYWYzYzU3NTcz
YjZlZDcwYzdhYmNiN2RiODcwZTJmNWZmMWMuLjUzY2E2N2UyNjliZmU2YWRhYjE2YmIyZDY3YzVi
NmNkNGY3OTk4NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14
aHIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2Vic29ja2V0cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLy8gTUVUQTogc2NyaXB0PXdlYnNvY2tldC5zdWIuanMKLS8vIE1F
VEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLHNoYXJlZHdvcmtlcgogCiBhc3luY190ZXN0KHQgPT4gewogICBjb25zdCB1cmwgPSAn
d3NzOi8vJyArIF9fU0VSVkVSX19OQU1FICsgJzonICsgX19TRUNVUkVfX1BPUlQgKyAnL2VjaG8n
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJzb2NrZXRzL29wZW5pbmctaGFuZHNoYWtlLzAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvb3BlbmluZy1o
YW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dAppbmRleCAzNWRjYzI3Mzg1NzdmZDAwMWExNzNlYjlm
MTM4ODIwOGQwMjdmZGY5Li42ZTczNTk5YThkMGQ5YTRiMDEwMzY4NWEwNDY1ZjhjOWNhYmJmZTli
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnNvY2tldHMvb3BlbmluZy1oYW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvb3Blbmlu
Zy1oYW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDUgQEAKIAotUEFTUyBXZWJT
b2NrZXRzOiBwcm9wZXIgZmlyc3QgbGluZSAKK0hhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNz
YWdlID0gbnVsbAorCitUSU1FT1VUIFdlYlNvY2tldHM6IHByb3BlciBmaXJzdCBsaW5lIFRlc3Qg
dGltZWQgb3V0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMveGhyL2lkbGhhcm5lc3MuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMKaW5kZXggZDQ1ZTUy
ZTIzNDFiOGNlNDNkM2U3ZTE0NGFmZTUxOGViYTc0YzE3My4uZDgyYTgyNjM1NzY2YjE5YWM5YTk1
NmQ0MDMyN2I0YjJiOWEyNTA2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMK
QEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVkd29ya2VyCisvLyBNRVRBOiBn
bG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixzaGFyZWR3b3JrZXIKIC8vIE1FVEE6IHNjcmlw
dD0vcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcwogLy8gTUVUQTogc2NyaXB0PS9yZXNvdXJjZXMv
aWRsaGFybmVzcy5qcwogLy8gTUVUQTogdGltZW91dD1sb25nCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zeW5jLW5vLXRpbWVvdXQu
YW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
c3luYy1uby10aW1lb3V0LmFueS5qcwppbmRleCBkMjNmYmI4YzY2ZGVmNDdlMzFhZDAxYWE3YTMx
MTA2NGJhOGZkZGJkLi5hYzczZTBiZjA1ZDIzMDg1M2QzNDY0ZWIzYzc1M2EzZTQ2OTRjZDI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ho
ci9zeW5jLW5vLXRpbWVvdXQuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5bmMtbm8tdGltZW91dC5hbnkuanMKQEAgLTEsNCArMSw0
IEBACi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVkd29ya2VyCisvLyBNRVRBOiBnbG9iYWw9d2luZG93
LGRlZGljYXRlZHdvcmtlcixzaGFyZWR3b3JrZXIKIC8vIE1FVEE6IHRpbWVvdXQ9bG9uZwogCiAv
LyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2NyYnVnLmNvbS84NDQyNjgs
IHdoZW4gYSB0aW1lb3V0IG9mIDEwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400586</attachid>
            <date>2020-05-29 08:29:37 -0700</date>
            <delta_ts>2020-05-29 10:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200529082936.patch</filename>
            <type>text/plain</type>
            <size>2339697</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVk
LWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggMTYwMGNhMjJhZDQ2
MjA3YzExMTQ5N2U1YTBkM2QxMzRjOWE5NDA2Zi4uM2E1MjcxNjNhOTA1M2IxZjE3OGY5ZTk5NzFh
MjBhMWVmZTE1ZTRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQt
Y3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNl
c3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN25vbmUlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5
PSYjeDI3O25vbmUmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVj
dGl2ZSB3aXRoIGEgdmFsdWUgJ25vbmUnIHNob3VsZCBibG9jayByZW5kZXJpbmcgaW4gbmVzdGVk
IGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzogVGhlIElGcmFtZSBz
aG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0IHdhc24ndC4gUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2Vz
dG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVz
dGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggYmQ1YjMwODEz
NGJjNTY1NDY1NDAxNWFlYzhhZDQ0MTAxYjY4NDQ2Ny4uZGUzZjViMWFkNTgxZTQxNDU5OWY5OGRk
NTdjMGNiMmEwZDIzYWRlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMv
ZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0
ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgw
MS9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1h
bmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN3NlbGYlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9s
aWN5PSYjeDI3O3NlbGYmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRp
cmVjdGl2ZSB3aXRoIGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1v
cmlnaW4gbmVzdGVkIGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzog
VGhlIElGcmFtZSBzaG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0
IHdhc24ndC4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxm
LWFsbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFu
Y2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGNhMzUzYTg0NzAxN2FiYjY5YWE3ZTQ2OGM4NWVlNzk5YmYxM2IzMGYuLjE5ZWI5MWYzNzgyNWEy
NGM5NDcxNTJhNDAxYjY1NjM2NWU2MmZhMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUt
YW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAogCiAKLVBBU1MgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGgg
YSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQg
ZnJhbWVzLiAKK0ZBSUwgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2
YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJh
bWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGJsb2NrZWQuIEl0IHdhcy4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZp
Z2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24v
amF2YXNjcmlwdC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CmluZGV4
IGExYmMzYjY0NDJlNmY1ZjliNmFjYzU5ZWQ5NTIyZDQ3NTMwOTk2NGIuLjhiMTM3ODkxNzkxZmU5
NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdh
dGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5o
ZXJpdHMtY3NwLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxIEBACiAKLUZBSUwgVmlvbGF0aW9uIHJl
cG9ydCBzdGF0dXMgT0suIGFzc2VydF90cnVlOiB2aW9sYXRlZC1kaXJlY3RpdmUgdmFsdWUgb2Yg
ICJkZWZhdWx0LXNyYyAnbm9uZSciIGRpZCBub3QgbWF0Y2ggZnJhbWUtc3JjLiBleHBlY3RlZCB0
cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L2ludGVncml0eS5zdWIuYW55LmpzCmluZGV4IGQ0ODdjMzczOGFjNDk4ZjRiOTM2ZTI2OWMwOTNj
YTJiYWQ1ODFjYjAuLjU2ZGJkNDkwOWY2YTQzZTQ4OWVlNWI2YzUwMDU0ZDJiNDRkMDcwOWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3V0aWxzLmpzCiAKIGZ1bmN0aW9uIGludGVncml0eShkZXNj
LCB1cmwsIGludGVncml0eSwgaW5pdFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CkBAIC0yMCw3
ICsyMCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIGludGVncml0eSwgaW5pdFJl
cXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CiAgICAgfSwgZGVzYyk7CiAgIH0gZWxzZSB7CiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwsIGZldGNoUmVxdWVzdEluaXQpKTsK
KyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1
cmwsIGZldGNoUmVxdWVzdEluaXQpKTsKICAgICB9LCBkZXNjKTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRp
b24uYW55LmpzCmluZGV4IDE4MGQzMzg2NTkwMjFmZWQzZDI5ZTA4Y2NlYTQxNWNjNTg1MmZlZDIu
LjM3YzgyMWNlNzNmMjVjNWUyYzVkMDJhNjg3ZDZhODAwNmVmNTA2MGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zdHJlYW0tc2FmZS1jcmVhdGlv
bi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9d29ya2VyCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcgogCiAvLyBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBzdHJl
YW0gY3JlYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8KIC8vIE9iamVjdC5wcm90
b3R5cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbAppbmRleCA3Y2MyMmEyOGMyMGMwMWYyYzYwMmI2Yjc5
ODE0ZmM2ODQ0MDU0MzA2Li4zZWI4OTNmNGU2NWMzYzBlNTU2NzY4OGJkMzA3MjViYzIxZWI0MGNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNCArMSw1IEBACiBzdWdnZXN0ZWRfcmV2aWV3
ZXJzOgogICAtIGpncmFoYW0KLSAgLSBnc25lZGRlcnMKLSAgLSBqdWdnbGlubWlrZQorICAtIEhl
eGNsZXMKKyAgLSBzdGVwaGVubWNncnVlcgorICAtIEx1a2VaaWVsaW5za2kKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMv
Y2FjZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LmtleQppbmRleCAxYTEyMWRmYWM5NTJkZmU4ODg2YjFiNWU0MWU3
YzczMTFkNWYwYjMyLi40NDVhYWUxYjlmYjk3NjBlMzkwZTdlNGQwNDc2YTgwOGM0ZTNmODBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CkBAIC0xLDMwICsxLDMwIEBACi0t
LS0tLUJFR0lOIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi1NSUlGSHpCSkJna3Foa2lHOXcw
QkJRMHdQREFiQmdrcWhraUc5dzBCQlF3d0RnUUltaW5IVHprWGhyc0NBZ2dBCi1NQjBHQ1dDR1NB
RmxBd1FCS2dRUVhWd0pjcVd6ZTZBM1ZZdUFTMEJQZ3dTQ0JOQ1J0dnJvQjZxcm9RbEY1OEhFCi01
U0pIRi9qUVJKUnhmMDUxbHJxK2pmVXhNN2tadWNOTitteVYyemlMb2dhNk9RTTU3OUQ4dnk4dHFr
ckxwbnNUCi1jWGtnSHV3dEJKRjQ3dzFZQVBHR0FSZTNLc3YvMkM5c1VWY1B2bW5WcnpTTVg4NkVz
ZXJmZnFNM3pmd1oySDNTCi1qeFREU3lJdkpVVSs0WGZ4cldlZ1RpUVFQTnFEeUxmTzVkQmZhdFQy
enRYQ211M0JGaXB1aEdGcHd3Q0ppcktyCi0xeGI2WFBFdVQwUEN6VE5wZVNVUnBYRktITURNa2Nq
T2tOQVV5Z0lFdytMZzdldFZmTGNzZ0J1ekVBM1JXd2YzCi1PTVkxbVRCSmx2eDZ6WnhkWDdhMFFt
eGVyVURrRFM5WVlBRUdTRmErRng2Y0dXNVB5ZWVmOXh0bEh4WkhpK3BtCi1UeEN3Y3ZKeVhxZUQ0
Z1dtM3MxZ3dPamk1V21Ydm8yRWlyY3hmU0trOFRVd2FweGZDWVFiT2pRSVBhSG5FR29hCi1DUWhT
RWdEWDV1ZndzWEo5L3BTUDZralcreStmMGduaEhWdUtKS3NPQm1qZzZpcXducUVodyt1TkZXS0ts
L01vCi1URlQ3Q3JheUpUdm8rOVVkUVRKVjlNQkFzTVVRUzdkK0hIOWtOT0FuL2hmbUV6ekdVS1ZU
WjB6SWQwZktIMTNwCi1Ubm9ZZ01ZYm0yVXJuME5YQkZPOFJ2elkzS3BLeVJoTWNPTEt4a1BWVWpL
VUE1QnVBdjZyY3ZNZmxJNkhuNXdVCi1xUE0rdUVDU2dkT25OZUltaTFGZitjVzhkVEdHUmIraWhh
K0VuQUJvWDN3UjVPdnpnQ1lIZUVOSmIzMkZVb1ZzCi1JRDJUNU1adFFOQXJraXMveFdaN0p5UGJt
c1FvMnd5aUZMYXNYOFdnaCs4TWdGeG9scHZqbFgzL1FkVFRKcUVjCi1yb2ZWR09QT21mb0hvM2VZ
TkpPbExiYUpUREllOE9ySzQ5UElldTFnbTh6cUIyV1lxbUYvM0FZeTRJQUl3VVl1Ci1yYlB3VUM5
SHljZVJQU1llUE05V2YxeE0ycHJvSzNubXA2YXBkSENSTmpiZDQ2ODlFTG1COTBiMmF3Nk5GaWFt
Ci0zdGFLUG1GTGIvdnQyWXhncU90YWdQclRsYzFRTEhCS3JzbnBnL0JoY0JqdXBxUktHRm1YQ0p6
aVBJYURLdkFzCi1qdGc0S0RvOGpOSXhtd1FBd0VWNCthSDBoaE11bXhhOHlhWG9DLzNHNkp4RDJz
ZG9yYU9wK3ZyVHpqVU1rSW9jCi14THFXbDhHSFZMRjA5ZlpKNFN0SmZJV0lPbW1waWNTeFcxdkRJ
Q2FadVUraVB3bE5PekY3c2VQUmtpeGJhckhyCi1pcVRsTEcvLytIdXEvbjlJUnhoem1TT3VyNjNX
TVhGUnkwc0tXNVcrdVE5eHNuVjhTZGp3Um1BR0x0blpIcTRZCi1OT0NRLyt5T1JsNHl4a1B2VjAx
SHlrQWw0Q1J0UEJHUis0WkM1TktocHloSmJ1NldjcXdpWHlBZWhVL2NQZ0wrCi1oOE53RW95UCtP
SHJ2RVlkeTRvY0JuSnEvNDM2V3d6ZldpczhuSUc0YlNsRDNEU0VnSkYvUVVtcTRpL0VVcS9BCi1E
NlNmemJGcFBHdFRqM0taNkQ4RFByd1dHNjhPQ0ZzcVJXOVlFdlVJSzhKVDI2NUJOM016STVpMC8r
azRDZEFnCi1hU2FpQzk3cWc3cUphVk05YjlFSHNjVVhSL2ZlRnh2TzVRa2trWTVDVFUzQnhiMHMx
STRSdzJNWW9BZE1HdGJBCi02bWR6bVJWWW9SdjlOTWR6TDZ6T1RvUFU2b09nNm1iakhnWlFnTmQ3
dzhHdFRGVytzZnNsTE9YWEM4ZXJ6YkhsCi1CeVFKR2NGR3RLVEJVRCs3VkhaaHB3TTdiUE9idHp5
QTJyMFViUzFReDBJem52dWJkRlZjWHlFN2RJalc3Y0FnCi1JYkJ6S2VpRVJ3cHUzck1xMmJZVlcz
REEzM1ZsclRmcGpYdWpoSHYxaVgxNWk2cXNXZDdPdFp3Nng3VGNjSDFaCi1qZG1oOVhCOXhEeWRu
c3MzdTlEd0dSRU1ZQzlUZFBaWS9udWk2bGdDampPaGFUYXVuTXVpZ0ZCTVdVQmtEbEliCi11anUr
QXR2K1BTQlQ5RG1UeVRRR2hQWlJJdz09Ci0tLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVkt
LS0tLQorLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0KK01JSUZIREJPQmdr
cWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSUF3c3VaN3lKeExzQ0FnZ0ENCitN
QXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDQ0tSc3dMWHNoOVBCSUlFeUtPdDQy
bUxlTDZoDQordVBCaDYzZG9Ib3FKeEI5NXB3cHRSNjNmcXAyUmZ2WlVVemZyV25JMmRubjB4UnRS
Y1BtZjUyQlI0c2xpSUpKeg0KK0sraDEwVk80YWlsRzRtTWVQKzJWUEhGdWZsUW41eGdTQzVWZDdq
ZWRWMFZleWNNcjBnZloxWGJjTXVWSXJyVzINCit3UVZNL0RiYjNBNk5IVDV5VUErWlR5YW0zU1lo
MFZyQkxwOEZRbi8yMnhpdm1qQzVqcVpiRnF2VWwrTm5CRjBIDQordTkrbWRDbmxZcWNxOXFUMWIy
aEMvVlZTZU95aUNaWFZFRThYbjd0ckxHbFNHSWpmZ05XbWRISllhZEw5SnVXWA0KKy81eEVVMy9N
WnRmajdEZmFyWXZKWU9OVjlwbkJFdXVjV1VqUkpnYlBnTXVxWjJzYjdJcC85L1haSHZnRmdWcnkN
CitMSUplc0xpRmxrOEVtZTdrREg4RVBueTRJNVJVdXVmdE9mWHo1c2VtQ09pUUtxc1Y1aktsQnlQ
eFlNZGgrQURWDQoramlvMHVFNTVMYjRNR2ZoeFd1emNXRC9Sb3Y2SXdJZzB1dVhXcEV6aktyMEp5
VmwvODR3Z25pNUhxMU85RWdlWQ0KKzA3VkJRT3VpRXptaGxtVkdsa3FpMS9rRkFaK1BrZE5VU043
SlBndm5WQS9WZ2ZpZ3RsY0lKOWFtcHNxYXUyeW0NCitLV2gzYlVLaVYwZUpWUEEzL3R2RWRCb29Y
bis4RFFidDQ0c3lEN1A1Mk1mbC9iUzJMYzV5Nm1QdHRWTy9tRHp1DQorWGc2Ym9ETnphWEIvSERV
RjJUZDhSYWNrdnFySFBLS1hYb0F6OXc4c3hZRkdlOEpWZXVPd2ZPNUhYNkpIeXNjZA0KK2NLcUVa
Tk1CTGp4ZWRwTDBFWk16cDcyYnNlMVhjdnZJdi9YQ2habmZLMllmaGZ4Y2wzUklpVFB4M3M2RmVl
SW8NCitUc3JOaVRGOGQvY09MSzExLzAyaEVVZG8ycjVqZzhQSG9abVhsMEE4bjZhYlhWY09uV2k1
TTF0RWpOZHV3S002DQorQVFVUlk3WjlBbFNzUVh3NnhqMno2MHppOCtJd3UzdGdENEhQN05xd1pS
c0Q5OWxhMDlIZGNJMGNTbWVhRU9URQ0KK0J5clZ5cW5PQnI4WkpWTUx1ZTR5TTcrQmRsR1VhYlRX
KzB1MHF5OVExQXh1ZVF6VW1FNFZGS3RmalJxSVVsQUENCis2SHJmRXNPZTdIUkxLeG5kY3RKN3VC
WEk1Z2h2M3pHZDB1Wm1SeWpYc0VqR3IySnFhWmExSGV4cmFCL0dIWEdEDQorOVBaVEpXUzFtTDhL
RTNvMWhTajF5VGdsaGZoSjdXZi9lcmZCR3pjdFVQS1FCa2twelZxWk1TNlkyQUlIVEI1Rw0KK2Iy
d294L2x3dkZBMmNsb2RvVDN0YmVEbWhOSHhJdUdsT25ZdGNQaElMRDdNUmVETnVsMVI5SEwvU3NX
N0FCNisNCitxNlI1NFBzU2NoTmdGaExTZHowcTZhelhVbGs2bWNGNUJnUk92Z3lvYSs3R3YwVWxi
U1FiVXVWdUxEMGszU01VDQorRG1wci93OU9tcVVzT2N6WWxuUFdvdmgrR2JWaHplK2VGVE5JR1Yv
d1ZOTkpRUkMxUlVOckMvZThhZjRjcC8vcg0KKzZqaVE1ZU5mOHJWQjhWTWVNWFJVSHhQd1JYdEZW
RUN1dVRkTWRQbjRVMlRISm8rNDVaMGJWRzl5dFo2Q1VQMG4NCis1NkRXSDYvZEtlSWl2RUZ6L2JZ
NG9DWm1zSWZrak5lbzU0NUdSZmhGTk5HUmdyZGpDZXZyMHBKdFk0aDVWakkyDQoraVBVTDg1UjB4
emU4b0NUMGEvR0hZNlh2cGJuUno1cXJ5MWMyRG9SM0llRFFrcTl5UWpBN1dhdXRUYnA4VXpDZA0K
KzFTN1JYSWtyelBDZzRYQklwUXU1aHN3S0M3Vy9VaUg3SDkycHR5bDJncmlDN0UwSk9mWi9Ndmd4
WnBGaTh1cGUNCit5WThqMUdESWd3cHRmOVFHTGttL2Vwdi9RTTZMMjV3R0VFOTE2elErM3JrVVhU
WFQyb1BJaThqYVFSc2xvWGNpDQorTkkzbDFGRkVRak40VjRpdDNHMnRWbmVnY0FRZFg5bnNaOTdw
QXErTk9LMjhPaU45a0ROOW9sVitBMExNZTc1aQ0KK0JJQi96UlVmSWVnL1RTYllpRlYyY1E9PQ0K
Ky0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQu
cGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy9jYWNlcnQucGVtCmluZGV4IGUxYjVhZGQ1NGU3OTdkYjFjNmMxZDNlZGE5NjFhZjNlNTRi
YzdhNzcuLmVlYmE1MjhkMjZkMzU3MzIwYmE0MmY1MTZmMTdlMzI0NDdhODNhZDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvY2FjZXJ0LnBlbQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KQEAgLTEsMTI1ICsxLDM0NCBAQAotLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlXNXpDQ0ZjK2dBd0lCQWdJREJiRkhNQTBHQ1NxR1NJ
YjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVG
dzB4T1RFd01UUXhNelE1TWpsYUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQjB4R3pBWkJnTlZCQU1N
RW5kbFlpMXdiR0YwWm05eWJTMTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCi1CUUFEZ2dF
UEFEQ0NBUW9DZ2dFQkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2ZqeDJOV2svV0ZFTG9j
Ci1EblV2MnpScDVFMjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09uNE9pL0tOSm5ERTJY
ZVNqUUgvYXdQCi1NaTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjErV1VTYWViSncrOHdI
TG9KVVdJYmVVN0tMVmdYc2NmCi1oTEdCUUI2cC91UWV3em1tYjFiVWJpekYzR25iRnhTYkZna0sz
VHRmOU5wSHFxUnRnVUFhWnRQOWVkYS9rUlA3Ci1qMGlJUW5jQ3lod1VNY0VnLzlZc0tlTE9TVUd6
TGpVU0NKcU9JdlVMblF3UkJZaklFd3VpMDBxZENocVY4Y2h6Ci1LYmszMmRqNnZMRnMzdDdQK3hv
ai9KalpYWmlXUUZUekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdHCi1BMVVkRXdRRk1B
TUJBZjh3SFFZRFZSME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpjYU1FY0dBMVVkCi1J
d1JBTUQ2QUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1Sc3dHUVlEVlFRRERC
SjNaV0l0Ci1jR3hoZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVCQU1DQWdRd2dnb0ZC
Z05WSFI0RWdnbjhNSUlKCi0rS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElW
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wTUJlQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2haM2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1CaUNGbmQzZHpJdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVk
R1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzCi1kekl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5Ci1iUzUwWlhOME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlD
R25kM2R6SXVkM2QzCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVkM2QzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wCi1NQnlDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUIyQ0czZDNkekV1ZDNkM01TNTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNk
M2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCi1kM2QzTWk1M2QzY3lMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkREFmZ2gxM2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWdnaDUz
Ci1kM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNUzUzZDNj
dWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6Ci1kREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdJSUllZDNkM01pNTNkM2N1Ci1ibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNHQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdJWUlmZDNk
M01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzCi1kM2N4TG5kM2R6
RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01pNXViM1F0Ci1k
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNH
eGhkR1p2Ci1jbTB1ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1NDCi1Jbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdKWUlqZDNkM01pNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdKWUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdK
WUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3Ci1LSUlt
ZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tJSW1k
M2QzCi1Mbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUlu
ZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNt
Q0ozZDNkekl1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QXBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUw
WlhOME1DdUNLWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3Ci1iR0YwWm05
eWJTNTBaWE4wTUMyQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
Ci1ZWFJtYjNKdExuUmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R5NTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNRd01JSXVkM2Qz
TVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQXdnaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4Ci1MbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5Ci1P
R0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1Ci1kM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRiaTB0YkhabExUWnNZ
V1F1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXpnakY0
YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTURPQ01YZDNkeTU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0WVM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0Ci1iamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05JSXllRzR0Ci1MVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3Ci1OSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0Ci1MblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25G
b2RqSTRZUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3T0lJMmVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyCi1iR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTURpQ05uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0
WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZV1F1Ci1lRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRHlD
Ci1Pbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNR
dGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd1I0SkZlRzR0TFc0NGFqWmtjelV6Ci1iSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1MFpYTjBNQk1HQTFV
ZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDCi1FWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzCi1a
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Qz
ZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpkM2QzCi1MbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlhZDNkM01p
NTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCi1MbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliCi1kM2Qz
TVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZ
WFJtCi1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUli
ZDNkM01pNTNkM2N4Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NI
bmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekV1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0Ci1kMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
Ci1jM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpF
dWQzZDNNUzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0Ci1iaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOMGdp
TjNkM2N5TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpkM2QzCi1N
UzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5t
eGhaQzUzCi1kM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lXUXVk
M2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXRObXho
WkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNj
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluCi1kM2QzTWk1NGJpMHRiSFpsTFRac1lX
UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1Ci1MUzFzZG1VdE5teGha
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N5
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0
YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNk
M2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJs
YzNTQ0xuZDNkekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhS
bWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZp
Ci1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R6SXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGha
QzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCi1MWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ci1ibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCi1N
amhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5Ci1PR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTW5odUxTMXVP
R28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdqSjNkM2N5TG5odUxTMXVPR28yCi1aSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWVH
NHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0Ci1iaTB0YkhabExUWnNZ
V1F1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0Ci1MblJs
YzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuaHVMUzFzCi1kbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVho
dUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1na1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0Ci1ZUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlxMXZBCi14amM4aWoz
NGk0Yis4aW5WQlZ3VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6K2RiMzZVNll3SGFr
Ci1JM0hZaGlwUE1CMVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQL1I1azl2dDhBRW0w
Wm1FV2tOWXRMCi1vcGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4VnErZnEvT3p3K1lR
YlJiVTFLbEhDTmF5aXN2UWE0Ci1UTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFhNlJuSXdvOHp2Q3Fr
MFpSUEF4ZXVsZEFlL3UxUHp0ZVhSekVIVEFFCi1ETVZMTXdNNzUyYkxGdWZ2MUdSQ1pOSEVMWkt5
aFVvRnJQMzBBcUU3cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCi11NS90SGVmUEtEN2JtL1k9Ci0t
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0NCitN
SUpBR3pDQ1B3T2dBd0lCQWdJREMvT3VNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJB
TU1FbmRsDQorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5TURJNU5EZGFGdzB6
TURBeU1UVXlNREk1TkRkYQ0KK01CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBabTl5YlMxMFpY
TjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUINCitCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMOTlhV2sz
ZFJpWXhJak5IbHhMelpMTXFhZmEvd0FyRzVROVQyRUx4YjByDQorT2dEa1ZVTXBpVkJtQTRyV3BH
SXU4UmdlL3RIb2EzRk03NnZreHl1M0I2L3NJZlNQV3BuVTdZTi9QUTk0YmpCNA0KK1dUVUZRUjBM
Qm5LVUdiWTFYVnhlNUFPMWQxZlkzdEFtejNOSEE0NmlmV3piVnFSUFpTelhwdU5nNWV0Qm1mSjIN
CitmWjZyZVl0Z1M5VklxdVVvUFNBRk1LTXQzSjQ2YkQ2VlA4UVBjVkZ6WUlMMERyblJscWQxb29N
RkZCTWl6WHE2DQorOVpTbFkyU1hBK001N2E0bExtdlVUNTFmNVcvQnRCN3VjS2JhT254ZVpaTFlB
TDkrMCtycDkyMkVlMkRyb0l0Rg0KK01na0FRUWN2Y3VEb3RXUzg2VmdTRjdkUFRqUTEyRS83ZUgr
OW9QUUZTeHNDQXdFQUFhT0NQV0l3Z2oxZU1Bd0cNCitBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9C
QllFRlBhNTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc01FY0dBMVVkDQorSXdSQU1ENkFGUGE1MmhZ
SEJidHZ5V013eG1kQXl3UFRIcERzb1NHa0h6QWRNUnN3R1FZRFZRUUREQkozWldJdA0KK2NHeGhk
R1p2Y20wdGRHVnpkSE9DQXd2enJqQUxCZ05WSFE4RUJBTUNBZ1F3Z2g5akJnTlZIUjRFZ2g5YU1J
SWYNCitWcUNDSDFJd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYjNBeUxuZGxZaTF3
YkdGMFptOXliUzUwDQorWlhOME1CZUNGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWGdo
VnZjRGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3RjRJVmIzQXhMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmVDRlc5d015NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVhnaFZ2Y0RZdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwDQorWm05eWJTNTBaWE4w
TUJlQ0ZXOXdOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEUXVkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzUXdGNElWYjNBNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CZUNGWGQzZHk1
M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGczTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdPREF1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTVOQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NERTJMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
QmlDRm05d05EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBeE55NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNG
bTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5TXk1M1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZERBWWdoWnZjREk0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNVE11
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpOaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNERXhMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d056a3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMg0KK01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QVlnaFp2Y0RRNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TVRrdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdo
WnZjRFEyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1F3R0lJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEWTJM
bmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmlDRm5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBeU5pNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZM0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpNdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNR
d0dJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRFl5TG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJ
V2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESXlMbmRsWWkxd2JHRjBabTl5
YlM1MA0KK1pYTjBNQmlDRm05d01qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXZDNkM01p
NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVlnaFp2Y0RFNExuZGxZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TnpRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TVM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE16TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4w
TUJpQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXoNCitNQzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFZZ2hadmNETTVMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQor
Rm05d05USXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME15NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWeg0KK2REQVlnaFp2Y0RnMUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TXpR
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0dJSVdiM0F5TVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBWWdoWnZjRGN4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVEF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTROQzUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpk
REFZZ2hadmNETXhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05UUXUNCitkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2
DQorY0RRMExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRVdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRdw0KK0dJSVdiM0F6TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGMy
TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3R0lJV2IzQTRNUzUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNEZzRMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qQXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMz
UXdHSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVeExuZGwNCitZaTF3
YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdi
M0ExDQorTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREkzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUJpQw0KK0ZtOXdNVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTNO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTNMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNQmlDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBNU15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhO
ME1CaUNGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0ExTXk1M1pXSXQNCitj
R3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREk1TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0Zt
OXdNalV1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFZZ2hadg0KK2NEazNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05E
RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek1pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVlnaFp2Y0Rjd0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TmpBdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TWk1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6
ZERBWWdoWnZjRGM0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPRGt1ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXhNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
dmNEYzNMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05Ua3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdHSUlXYjNBeA0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZ
MUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TmpndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0dJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRGd5TG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOaTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRM
blJsYzNRd0c0SVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWJnaGx2Y0RrdWJt
OTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5d05DNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3DQorRzRJWmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYmdo
bDNkM2N1ZDNkM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CdUNHVzl3TWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBeExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFiZ2hsM2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wDQorTUJ1Q0dXOXdOUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F6TG01dmRDMTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemREQWNnaHB2Y0RJM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hw
dmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFExTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNESTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RGd6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RNekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTJMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZERBY2docDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RZeQ0K
K0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTRMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RRekxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RrMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGt4DQorTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dQ0KK2RHVnpkREFjZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RFk1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNeUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRGs0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RF
NUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzINCitMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdW
emREQWNnaHB2Y0RjNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3lMbmQz
ZHk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcyTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjRFUxTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2do
cHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrMExtNXZkQzEzDQor
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBYw0KK2docHZjRE13TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNj
eExuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTFMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkwDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RJd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEVXhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF4TG01dmRDMTMNCitaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
DQorZ2hwdmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGN5TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJeUxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RZM0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3dMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2
Y0RNeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXpMbTV2ZEMxM1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RNMQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTJM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFl6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNExtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEVTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMExtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGN3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNERTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRFkxTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGczTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemREQWNnaHB2Y0RjNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3UN
CitkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd5TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwM2QzY3VkM2QzTVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
Y2docHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJMA0KK0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHUNCitkR1Z6ZERBY2docHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
UTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREUzDQorTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkREFjZ2hwdmNEZzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFUzTG01
dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
ZGdodDNkM2N5TG5kM2R6RXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdIWUliZDNkM01TNTNk
M2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWRnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxj
M1F3SDRJZGQzZDNMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJSUllZDNkMw0K
K01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXho
WkM1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3DQorSUlJZWQzZDNMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ0NDSG5kM2R5NTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWhnaDkzZDNjeExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOME1DR0NIM2Qz
ZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lZSWZkM2QzDQorTWk1M2Qz
Y3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N5TG5kM2R6SXVibTkwTFhk
bA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNRd0pJSWllRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWtnaUozDQorZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1dDSTNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNXQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGwNCitZaTF3YkdGMFptOXli
UzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNpQw0KK0puZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQ2lDSm5odUxTMXMNCitkbVV0Tm14aFpDNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DbUNKM2QzZHpFdWVHNHRMV3gyDQorWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBcGdpZDNkM2N5TG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWJtOTANCitMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNQ21DSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemREQXJnaWw0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXRnaXQ0YmkwdGJIWmxMVFpzWVdRdWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQytDTFhodUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBdmdpMTRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdM
NEl0ZDNkM0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXcNCitiR0YwWm05
eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
DQorTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1ZDNkM01TNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0YmpocU5tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1M2QzY3gNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRENDTG5odUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzDQorZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd01ZSXZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3TTRJeGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkNCitPR0V1
ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6Z2pGM2QzY3VlRzR0TFc0NGFqWmtj
elV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDTW5k
M2R6RXVlRzR0TFc0NA0KK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNRFNDTW5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDDQorTW5kM2R6SXVlRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNRFNDTW5o
dUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjANCita
bTl5YlM1MFpYTjBNRGlDTm5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2Rt
VXRObXhoDQorWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBNGdqWjRiaTB0YkhabExUWnNZV1F1
ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdQSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0DQorYmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1FT0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTEN
CitNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUVlQ1JYaHVMUzF1T0dv
MlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFj
REFUQ0NIVnNHQTFVZEVRU0NIVkl3Z2gxT2doRjMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0F5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEa3VkMlZpDQorTFhCc1lYUm1iM0p0TG5S
bGMzU0NGVzl3Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXhMbmRsWWkxdw0KK2JHRjBa
bTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOaTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlWYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRFV1
ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDRlc5d05DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVZiM0E0TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3T0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPREF1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d09UUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TVRZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d01UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpJdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qTXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdNVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016WXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TVRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOemt1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TkRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVGt1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d05ESXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRZdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09U
Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpZdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qWXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3TmpjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOek11
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMz
U0NGbTl3TmpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDRm05d05UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpJdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0ZtOXdOelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09URXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdO
amt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016QXVkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NGbTl3TXprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEl1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d05ETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RVdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d01qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EUXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdOVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05Ea3VkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TkRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORFV1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d016VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpZ
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d09ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0RndWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdNakF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UVXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdPRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UVXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TWpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVEl1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TkRjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVFl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09UTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRjdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05U
TXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWprdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdNalV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09ETXVkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3T1RjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREV1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TnpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakF1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm05d09USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGt1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d01UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpjdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01UVXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3TmpVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOamd1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3T0RJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0dXOXdOaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdPQzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dX
OXdPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOQzV1YjNRdA0KK2QyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDMN
CitkeTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsDQorYzNTQ0dXOXdNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDNk
eTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0dXOXdOUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dXOXdNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
amN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF3DQorTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NH
bTl3T1RZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNExtNXZkQzEzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d016TXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2QzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdOakl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREU0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT0M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TkRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNQ0KK0xt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk1DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmwNCitjM1NDR205d09UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3pM
bTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTVNUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOREl1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
REkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0EyT1M1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBn
aHB2Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU9DNXViM1F0ZDJWaQ0K
K0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEYzINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNeTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdOemt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocDNkM2N5TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0Tmk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpjdWJtOTANCitMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMU5T
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhkbFlpMXdiR0YwWm05
eQ0KK2JTNTBaWE4wZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTFO
QzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRE0wDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0F6TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbmQzZHpFdWQzZDNMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlhYjNBMk5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01qQXVibTkwDQorTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYQ0KK2IzQTBNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEl1Ym05MExY
ZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0EzTWk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpJdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBM05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d05q
Y3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3dMbTV2ZEMxM1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJYWIzQTROQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
ekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWENCitiM0F5TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TXpVdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFMkxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxj
M1NDR205d016Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTQNCitMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0dtOXdNVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt3TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TVRFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFMUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk5TNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d05UQXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNRdGQyVmkNCitMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNk
M2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0TWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdWQzZDNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBeU1TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056RXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTRPQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNalF1Ym05MExYZGxZaTF3YkdGMFptOXkNCiti
UzUwWlhOMGdocHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT1M1dWIz
UXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RRMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d016a3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIz
QXhOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOelV1Ym05MA0KK0xYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWEN
CitiM0ExTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWJtOTBMWGRsWWkx
d2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RneExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01pNTNkM2N4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2h0M2QzY3hMbmQzZHpJ
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaDEzZDNj
dWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUzZDNjdQ0KK2JtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0huZDNkekV1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUll
ZDNkM0xuZDNkekV1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDMNCitNUzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1ND
SDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxcw0KK2Rt
VXRObXhoWkM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1
dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NJM2QzZHpFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeQ0KK0xuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDMNCitkekl1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBa
WE4wZ2laM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0K
K2RJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SjNkM2R6RXUNCitlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SW5kM2QzTWk1NGJpMHRiSFpsDQorTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2lkNGJpMHRiSFpsTFRac1lXUXVkM2QzTVM1dQ0KK2IzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NKM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6
ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtDQorYjNKdExu
UmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHUNCitkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNk
M0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpJdWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5kM2R6RXVl
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNT
Q0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1ZDJWaUxY
QnNZWFJtYjNKdExuUmwNCitjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2pGM2QzY3VlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjANCitabTl5YlM1MFpY
TjBnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNN
UzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekl1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXUNCitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKNGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVlRzR0TFd4MlpTMDJi
R0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJpMHRiSFpsTFRac1lXUXUNCitlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFz
DQorZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1
TFMxc2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NRWGh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Seg0KK05UTnNkM2RyY25Gb2Rq
STRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnMNCitZWFJt
YjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUllVHUySXlUcEFQYlVZQ3hmUjNU
NkJxDQorZDVZbW8zVEc4cG5acnNZcXpIdENJdkdvTzgxSkVJSmRoUHlpdGJKZC91c2J0a0VUaExo
YWZlUWk5Um1pQ1pZdg0KK0NVZXgwSWRVeEhhVzM2Wng0a0l6TkxmMDJ6Y3h3Qkp0QUZwZi95QXNR
ZEtJSTBaRk5HUjFXa1JxbmF0Zno1dHkNCitTSy9TNTkzTVk5c083eGR4c1BjUW5KN1dQYVhLNjYw
eU8xR290Ymg0YlJ3cGRMOHVKdkZWcGU2K1VBT1M2NE1rDQorakt5Rkl5M1o5SGxiK0hQVjB3RkJT
ODlXcXFFZkFvTGticmYwS0Vqb0JydklsSVhmOC90TG9nVFRVU2JaZDY2Nw0KK3FmODhTWC8wdFlW
TUVZQzYvSVVpeWlnQXgvaE1pdVdDRENTMTBtV0x3WWZQczJKd0RRUmxTSW92ZU5CcCt3Zz0NCist
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCBiNjJhZjIwOGMzNGNiMzE2N2FlNjQwMzhj
ZGZmNjk2ZjA0Nzg5M2ViLi5jZmFjY2NlNDIzZWRlZGRiODkwZDRhODA2ODNjNzQ3NjkyZTIzZmUw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0
LmtleQpAQCAtMSwyOCArMSwyOCBAQAotLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlF
dmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1NrQWdFQUFvSUJBUUNyWlhWWG1PUGxx
by8rCi0yeGoxNVBnY1pHSEdvL2JvZmlRUTNnbDZKTDFWWDFHcHRZSU5oVHEyc1VoZk44dENiK2NI
eXphcE85b1Vtd3F3Ci1wNVVwN3RKNElwN3VFMS93d1N4VmN2Q2F3RzUvUE41aUQ3SDJ3c21FcHBI
WE9jM0xsMDg1L2d6ZXMrMStObitxCi1BUm1wMWJGL3ZqcGxENlZkSDJyQlczc0ozREFvQmFvWGxB
TWZlUkFGRHBhcWErOWx4TXJNNVdrVUhuZFErdUVNCi02a1p5ZXZoeXAwMlhEUDB2THdOQ3RQTEdC
MGVtQUFmQzd4cHdSR1ZHU3RFc1VoZi9tYzl5Tk5hS2dxQktJMG5vCi1vVm51VTNSR2RLSFAxOHZj
anRCU1YwbFlnamZnOWEwN09CdTFoZ1FmZmhvZmkyQnlkZmFDcEJBTXpGaGx1MXV5Ci1zNmFoVmtK
cEFnTUJBQUVDZ2dFQWZtdnp4WTBNYkZjR3AyRk1ZL05qM3UxY0FYem5uazJNcExSaUlTb0FUWHhs
Ci1hOXhwOVRjVU83VkFRSnVTM1lwVXlyYmx0cVpqRVZmYTVycDFsOXlFZWdCdllnUUFmRURBUnJi
bEtnQk9nS09SCi1GSnVuRlBCUVcvdlJEd09mL0UrN0xIZHJYc2t3b0N2cXRxYmhHeGg0T0ZWRUZV
OFpGanNhTDAwZTBBTU5zalpsCi0wT3NFT05sSUg0bkNhN0U2RFRhc0h4YzFWa0hRcjN1dkJsNS80
SGZPYzA1dHIrWktsTVlYekFQV2tMMHNDMjE2Ci1EcXk0QXhKME0wYXg4QllFWnVvMGdxUW1NQW9u
SlRrRW5weW9ENHo4OVM4Nzd2RnA4dzFWUGJHWWtWNDh5alYvCi1JN2ZRNllqdDN5ZythcytzNGFy
R0VzVUIwbCtYQXBCWVlZL0orcWNZVVFLQmdRRGVkN0RPTUpVYzNrUFRGRWNOCi1wL0ViU2g5VFh4
Uy83NGNJeUdpZDlJRWlSRUpZeFl2OGt6MEtwbEd1Sm9sSVEzL0lrOVJhYzZCM1R1NFdrVzBnCi1U
UGJOdW5ZRXN5ZFpCQW5hUTRlQVZkT2Z2UlE2VjNlQloydkVyc0hKUkZhajVjT2Nlc1VYeEJaSTZt
MnRRRVN4Ci1kQldGRE5HOWt6dHIwSG1hTDZQdXo0elpJd0tCZ1FERk94ZlI3RmNwR2R3NjF6aVNz
Wm10dmtmNmVwa0czK291Ci11aFk1MEowVXJUYks3VHVpbWtvUncvWEhlQmU0ZGIrZWpPT3VMRDlR
RS95WHZtdEVXdXlVVFRZT1Z2WitIdU5qCi1ScDNrZGkxR3VXWG42Z1J2ZGxrZjlYd1c3akhtZ2tw
YkE1QSt1RFhzM0VZWWExOEx4UE5mTVN2aHlIZGtGblVHCi1hVHp5WU5wZEF3S0JnR3YvUU5hbjRR
dDFud2x1VTV2K2hsNlFHaXI0QW5PMnpSL25ZbG9qNHppR1dJc053NHBtCi0xQUJDZzI1K2lMQ0xE
QktNS1UrTHlEK0RFclBqLzB6cDcvb3BaYmVjWFNLcWdqbnlCR3E1djVWUlRldVFvSlF5Ci1aNi9B
Z3BTNVZ6SVRqV1YrZUFXMGpIanpUVEVJL1JBRVlab0lnaDE4eHlEc3dNdW9DdllZemJCdkFvR0JB
TU0yCi1JL053K3l3QkhvdFdyZlh6dHVuU3BpZHk1TGQ3Tkt5ZkhwU0d1SkxZaHB6L2hjRUErVUx3
TS9vRUVXWlBsU04yCi15M3QrN0FOMFpOUkVjcU1yWTNHOW9qMDdNYW5QSkwwRURnOHNNTkFKZktX
NGFEOXlZZkJSNTBwQzVEMEV4RmVsCi1CVVl1eWFEd3ZLZzZ6YzQyVjdQbVZVcWFRaUZjWU9QQmtj
Tk12WlRGQW9HQkFMQnRkdDBpSXZ0Qm9wcCtJUWFWCi16Wk1BNVpRSVE1bjV2MDcxTEthMXM3YXIz
K2hJb0RSc1piTTdYa1VJQTh6UWxyd0ZSaGJVNVlGTmNicG9vUVNtCi03ajQrZkl1ZGNweGo5dEFN
R0FiNXlnODlrMURqVHk3RlVXTDllbEdJZ3ZKTXFnRjZJUTUzK3ZSOHh3R0R5UUxCCi1zUDVtaXpG
MXdpNDdEWVBKUWNEUkN6VSsKLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4g
UFJJVkFURSBLRVktLS0tLQ0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dn
U2pBZ0VBQW9JQkFRQy9mdVlxYkpMWUtvVHcNCitGemF1blNKMzYybXBBN0JvV09JTWlURmtHSzF0
WkFncHoycnZ6QkQ1c3pOTUlySGFKRi9ETWZIeGUyQ1hzbmtEDQorWFdiYzBjdUQ3Tk1NNGRLYmZS
YmpudHhZM1d5SmQ1aWpETEo4YnRDL1BTd1pvY21Id2dwT3FCNDBxRy9hTFFwTg0KK3dMUnhCa2xo
NmhyQVpNSFRzSS9BTzRJQktNVG9NWXNIUzdYN1loZE1LZzNlcTg3Y2dHaS9xeDFGNHFTaUFXb0YN
CiszMEhtL2ZpVUx1S2ZwQUZWZmV2QlBUNWhVS0RxTnlyVnh4aE03UFVOT1cxVTB3UXhSdGdTb0Fx
Q1kyMkNwSTdXDQorZ2tOaG14MlVtckFkTlFMNHUxVi9qUGNoNG1VMlFxbUxXQkdRb0h3b1JkaWJp
SldhSnVuOVJ3ZURjSXFZR3d0Tw0KK2hJd0d0K0xqQWdNQkFBRUNnZ0VBY0Rlb0g3SlNkelNyaEpy
RjQ1dVhxRmlmS1hsTTlra241cHE3QStKbU54V0kNCitweCt5bGVXckNQalhsY1U3SGc5MHdzbFE4
K2NPR3JkdXJPY2VNVWNNRVRwR0QyV0NhclhxSk9kaVR2MHE3bi9VDQorUmJCYUpBczRidWtsSDd3
c2drN1doWE9GaCt3dzU5Uy9GZ05ZZW1kcHQyUmQydUx3cHVIdnk0SFQxR1FVeDgvQw0KKzlxaE51
dTkyQk5FdzVZWFpqV2xVWHNYNC9NT2hRczZpYUVmZUdwaG8yMHVoVVJSWmxHNWt2L3pDcTl5Q1gr
c2ENCitPNUM1MDR6a1pnWG9qQ3ZlYWhPWGVXTHJoTm5ScDFkdDNESFZwM2NGMmZ5UDBJUmIrK3l3
MFpZZHZjYnljODJzDQorQkhlbmpDM3ZCd25nN2FBOTVRZWh5ZUxRTzNQVlZqOFFQbmRWQjcyYVFR
S0JnUUQ3MXlZMnRCeVh6akhnRFJhRw0KK2RERFlRdGd5VmZ6NGNYK2tTK0JZV1d6dUNRbzkvVW9i
d3VjVVRtVXoxUmMwNC9xdVNrL3A2M2FnMXZicXh5b0cNCitwVnlWMlA2SVk1K0YzcEVrbFd0Zlht
eTdBbnVrOGpVZ1hqZ1MyKzc4Z3hQenk0OU53ZVROVFVjbExBWkpTRmtMDQorR0FCNm9YVzB0YWVW
UnNDWjlnZ3B2MFVTb1FLQmdRRENxSmgrTW10cDA0emNqUm0wZ1VabWY4RXJGWFlqNnVxcg0KK3JW
c0dRTG42d1JSY2M4SnJOQTRYYmxxN3JqZjdCNUQyRHM4SXBvUGVGb0I4R2ErUEdlNE1RSlpkRzBV
bXZRRmcNCitSWHBBaUI2TzduNCs4b2FYU09tRnBGTDVKZDAvQ2RHdXRXRzQ0Q3dKb3JiQ0JZcVY4
ZklGNVVhWUZHaWdKRVVUDQorV3JjUFEwUExBd0tCZ0hSWG5HdkJJVVJ3R1ZKc09XKzcxYVRTbkpZ
RWEyMUs0YkRBN005ajRKTEcwbGg0M3ZlYw0KK1BxeCsydm5yQTJHSHdKTXIrV2NUUkNaaHFJZ2xv
aUNYM0FITjBTaW8vVlVXME82WnFKVFNSbURPY05odW5HUnINCitvblB6N3AvdzNoTE9nMUZrdFpL
eWxKOXppeVBuckZzWHA0RC9maVVSbG0yNzFkWktkdEx5YmJLQkFvR0FTUkV2DQorN0c3UWt2Q3R0
enZmb2puRVMwVTVKUXJ4Ulpvd2JEQ3VNaktwbk01TTdrY2xlMGdXNGdTeVdqQ1RJczg4UXFCYw0K
K1prcmF4TXA5Z0JmRUpscjlWK3dHaFB4dmdKTUJxVGxySWozMStvRGJNcFdtbjdMbXRSdHhhY1Fr
d0R6WFVGVVYNCitVV2dVSDZuTUlCZ2taUlJrWElJcmRYcHpxMmp4NU1ud1hQSkt5REVDZ1lFQTA5
UDJad2VCSkU5YTlvb0tHV29pDQorMmlSVjRHQWVJWkdVWHkxc1QvRFdNNmVVc3B1RnNJRTFkYWsw
SjVWVktkSWNlN0NWM0lwREU4UFo1UDBpVWZpZQ0KK2dMMTcwS3hmSlJrT2ZJNnB4NHdCV0dlL1JN
MG5JbldKSUlSNW9HY2lmekJ4N3RWUXFLYnpOY2xMVWtNT2hoZzcNCitlcFpkUEpKdVpTZ3JpeGFQ
bzd5bXo0MD0NCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxh
dGZvcm0udGVzdC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQppbmRleCA1OTU5MzE2YmI1YjQ4
MjVlNjQwYmIxZjdjYWIwOGJjOWY0MDVhNjNhLi42OGE5Yjk2ZjNlZTlkOWNkYTU3ZGFlYjY3OTZi
NWI2NzRkNzVhYzQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1w
bGF0Zm9ybS50ZXN0LnBlbQpAQCAtMSwxMzMgKzEsMjM5IEBACi1DZXJ0aWZpY2F0ZToKLSAgICBE
YXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDM3
MzA2NCAoMHg1YjE0OCkKLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5j
cnlwdGlvbgotICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cwotICAgICAgICBW
YWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDE0IDEzOjQ5OjI5IDIwMTkgR01U
Ci0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTEgMTM6NDk6MjkgMjAyOSBHTVQKLSAgICAg
ICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QKLSAgICAgICAgU3ViamVjdCBQdWJsaWMg
S2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlv
bgotICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKLSAgICAgICAgICAgICAg
ICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDphYjo2NTo3NTo1Nzo5ODplMzplNTph
YTo4ZjpmZTpkYjoxODpmNTplNDoKLSAgICAgICAgICAgICAgICAgICAgZjg6MWM6NjQ6NjE6YzY6
YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Ci0gICAgICAgICAgICAgICAgICAgIGJkOjU1
OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4OjVmOjM3OgotICAgICAgICAgICAgICAg
ICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpkYToxNDo5YjowYTpiMDphNzoKLSAgICAg
ICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6OWU6ZWU6MTM6NWY6ZjA6YzE6MmM6NTU6
NzI6Ci0gICAgICAgICAgICAgICAgICAgIGYwOjlhOmMwOjZlOjdmOjNjOmRlOjYyOjBmOmIxOmY2
OmMyOmM5Ojg0OmE2OgotICAgICAgICAgICAgICAgICAgICA5MTpkNzozOTpjZDpjYjo5Nzo0Zjoz
OTpmZTowYzpkZTpiMzplZDo3ZTozNjoKLSAgICAgICAgICAgICAgICAgICAgN2Y6YWE6MDE6MTk6
YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6Ci0gICAgICAgICAgICAgICAgICAgIDZh
OmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0OjAzOjFmOjc5OgotICAgICAgICAgICAg
ICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpjNDpjYTpjYzplNTo2OToxNDoxZToKLSAg
ICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6ZWE6NDY6NzI6N2E6Zjg6NzI6YTc6NGQ6
OTc6MGM6Ci0gICAgICAgICAgICAgICAgICAgIGZkOjJmOjJmOjAzOjQyOmI0OmYyOmM2OjA3OjQ3
OmE2OjAwOjA3OmMyOmVmOgotICAgICAgICAgICAgICAgICAgICAxYTo3MDo0NDo2NTo0Njo0YTpk
MToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKLSAgICAgICAgICAgICAgICAgICAgZDY6OGE6ODI6
YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6NzQ6Ci0gICAgICAgICAgICAgICAgICAg
IGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4OjgyOjM3OmUwOmY1OgotICAgICAgICAg
ICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDoxZjo3ZToxYToxZjo4Yjo2MDo3Mjo3NToK
LSAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6MGM6Y2M6NTg6NjU6YmI6NWI6YjI6YjM6
YTY6YTE6NTY6Ci0gICAgICAgICAgICAgICAgICAgIDQyOjY5Ci0gICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKLSAgICAg
ICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCi0gICAgICAgICAgICAgICAgQ0E6RkFM
U0UKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAg
ICAgICAgICAyQToxODowQjowOToyMjo2RToyODpEMjpEQjpGRDpDMjoyRDo0MDpBNjpGMzozODo2
Mjo2RTpDNzpDNQotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjog
Ci0gICAgICAgICAgICAgICAga2V5aWQ6NDE6NDk6RkY6OEM6NjY6NTA6NUY6ODc6QTE6MDY6QTg6
QkI6QUI6OEE6REQ6NzM6MEQ6MEU6Mzc6MUEKLQotICAgICAgICAgICAgWDUwOXYzIEtleSBVc2Fn
ZTogCi0gICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwg
S2V5IEVuY2lwaGVybWVudAotICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTog
Ci0gICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24KLSAgICAgICAg
ICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IAotICAgICAgICAgICAgICAgIERO
Uzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdAotICAgIFNpZ25h
dHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICBhZjpjMjpl
YTpjYzo2YTo1ZTo0OTplMDpkYjo3MjoxNDowNTozYzoyMTphMDo4YjpmZjpiNjoKLSAgICAgICAg
IGE5OjcxOjgyOmY3OjYxOmNkOjIzOjJhOjAwOjY2OjkxOmFjOjAxOjk5OjYzOjM4OjExOjIxOgot
ICAgICAgICAgODU6YjI6NTc6OTI6MGI6M2Y6Nzk6Njg6ZjU6ZDg6NTk6OGI6YTc6NzQ6MTk6ZWI6
MGI6ZTc6Ci0gICAgICAgICAzZDo4Njo0ZTo2NjpkNDplNjoyZjpmZjplZDo2Yzo3ZDo5YTo1ZTox
Mjo0ZTpiZjozOTpmZjoKLSAgICAgICAgIGY3OmQwOmZiOjUyOjUzOmEwOmZiOmIxOjVjOjlhOjkx
OjkyOjM2OjAwOmQ4OmE0OjZmOmY5OgotICAgICAgICAgOWM6MzY6MjE6YjI6YzI6NWU6MTQ6MTE6
Y2E6NTU6ZTc6ODg6MzA6NjA6OGQ6ODY6ZGE6NjU6Ci0gICAgICAgICAyNjpmZjplMjo0NTozNjoy
YTowOTozZDphNDpiYjozODo2MTo0ZDo1NzplNDpjOTpiNjo1MDoKLSAgICAgICAgIDNjOjA2OjJm
OjZiOmJmOjA0OjM0OjQyOjU0OmRjOjUzOmI2OjYxOmM1OjRlOjQwOjAwOmQ2OgotICAgICAgICAg
NWU6MTk6MTc6M2E6NTQ6MmM6YzU6MTY6N2E6NmQ6NGE6NzA6NTY6NDU6Y2Q6OTk6NWE6MmE6Ci0g
ICAgICAgICBkMTphNzo0ZTozNTo5NzozZDpkODpjOTo5NTo4MDphYjoxNTo0Mjo4NjpmNjphMDph
NjpjMzoKLSAgICAgICAgIDIxOmMxOjlhOjA3OjM0OjQ5OmFkOjYxOjNjOmJjOjk0OmIyOjJkOjky
OmY3OjQ0OjgwOjAxOgotICAgICAgICAgNWY6Mjc6YmQ6ODM6ZjU6NTE6MjI6Mzk6Y2Q6OTg6YjE6
Mzk6MjM6Yjg6ZjQ6NWM6MDg6MjA6Ci0gICAgICAgICA5ZTpmZTpmMToyZDo5YTplOTo5YjpjNzo1
ZTpiODozMzo4YjoxNjo3Nzo1MjozZDpjOTo3YToKLSAgICAgICAgIDQzOjllOjI1OmQwOmM3OjVh
Ojk2OjA4OjUzOjFhOmRjOjc1OjUzOjc1OjQ0OjYyOjE4OjdjOgotICAgICAgICAgZWY6ZmI6NzM6
NTIKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJTXNqQ0NDNXFnQXdJQkFnSURCYkZJ
TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMx
MFpYTjBjekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1TWpsYQotTUJ3eEdq
QVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFF
RgotQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxMlYxVjVqajVhcVAvdHNZOWVUNEhHUmh4cVAyNkg0a0VO
NEplaVM5VlY5UgotcWJXQ0RZVTZ0ckZJWHpmTFFtL25COHMycVR2YUZKc0tzS2VWS2U3U2VDS2U3
aE5mOE1Fc1ZYTHdtc0J1Znp6ZQotWWcreDlzTEpoS2FSMXpuTnk1ZFBPZjRNM3JQdGZqWi9xZ0Va
cWRXeGY3NDZaUStsWFI5cXdWdDdDZHd3S0FXcQotRjVRREgza1FCUTZXcW12dlpjVEt6T1ZwRkI1
M1VQcmhET3BHY25yNGNxZE5sd3o5THk4RFFyVHl4Z2RIcGdBSAotd3U4YWNFUmxSa3JSTEZJWC81
blBjalRXaW9LZ1NpTko2S0ZaN2xOMFJuU2h6OWZMM0k3UVVsZEpXSUkzNFBXdAotT3pnYnRZWUVI
MzRhSDR0Z2NuWDJncVFRRE14WVpidGJzck9tb1ZaQ2FRSURBUUFCbzRJSitqQ0NDZll3Q1FZRAot
VlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVS2hnTENTSnVLTkxiL2NJdFFLYnpPR0p1eDhVd0h3WURW
UjBqQkJndwotRm9BVVFVbi9qR1pRWDRlaEJxaTdxNHJkY3cwT054b3dDd1lEVlIwUEJBUURBZ1hn
TUJNR0ExVWRKUVFNTUFvRwotQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDRVhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdQotYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZY
ZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkMwotTVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkMwotTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJ
YWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3
YkdGMAotWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWQzZDNNaTUzZDNjdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwMwotZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBnaHQzZDNjeExuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1MwotWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxMwotZDNjdWQz
ZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNMbmQzZHpJdWJtOTBMWGRsWWkx
dwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5odQotTFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNM
bmQzZHpFdWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkMwotZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSDNkM2R6RXVk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1Mwot
ZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlM
WEJzWVhSbQotYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNodQotTFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU4zZDNjeUxuaHVMUzFzZG1VdAotTm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWpkM2QzTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0kzaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2laNGJpMHRiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odQotTFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1MwotZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MAotTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSzNodUxTMXNkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhodQotTFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dAotTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTEzZDNjdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5k
M2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdQotZUc0dExXNDRhalprY3pVemJI
ZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxcwot
ZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akY0YmkwdAotYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGMwotZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXllRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1ND
TW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxdwotYkdG
MFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2
ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MgotWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NAotYmkwdGJqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odQotTFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExu
UmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
MwotZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25GbwotZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbAotYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFLL0M2c3hx
WGtuZzIzSVVCVHdob0l2L3RxbHhndmRoelNNcQotQUdhUnJBR1pZemdSSVlXeVY1SUxQM2xvOWRo
Wmk2ZDBHZXNMNXoyR1RtYlU1aS8vN1d4OW1sNFNUcjg1Ly9mUQotKzFKVG9QdXhYSnFSa2pZQTJL
UnYrWncySWJMQ1hoUVJ5bFhuaURCZ2pZYmFaU2IvNGtVMktnazlwTHM0WVUxWAotNU1tMlVEd0dM
MnUvQkRSQ1ZOeFR0bUhGVGtBQTFsNFpGenBVTE1VV2VtMUtjRlpGelpsYUt0R25UaldYUGRqSgot
bFlDckZVS0c5cUNtd3lIQm1nYzBTYTFoUEx5VXNpMlM5MFNBQVY4bnZZUDFVU0k1elppeE9TTzQ5
RndJSUo3KwotOFMyYTZadkhYcmd6aXhaM1VqM0pla09lSmRESFdwWUlVeHJjZFZOMVJHSVlmTy83
YzFJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorQ2VydGlmaWNhdGU6DQorICAgIERhdGE6
DQorICAgICAgICBWZXJzaW9uOiAzICgweDIpDQorICAgICAgICBTZXJpYWwgTnVtYmVyOiA3ODMy
NzkgKDB4YmYzYWYpDQorICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNB
RW5jcnlwdGlvbg0KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVzdHMNCisgICAg
ICAgIFZhbGlkaXR5DQorICAgICAgICAgICAgTm90IEJlZm9yZTogRmViIDE4IDIwOjI5OjQ3IDIw
MjAgR01UDQorICAgICAgICAgICAgTm90IEFmdGVyIDogRmViIDE1IDIwOjI5OjQ3IDIwMzAgR01U
DQorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdA0KKyAgICAgICAgU3ViamVj
dCBQdWJsaWMgS2V5IEluZm86DQorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24NCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkN
CisgICAgICAgICAgICAgICAgTW9kdWx1czoNCisgICAgICAgICAgICAgICAgICAgIDAwOmJmOjdl
OmU2OjJhOjZjOjkyOmQ4OjJhOjg0OmYwOjE3OjM2OmFlOjlkOg0KKyAgICAgICAgICAgICAgICAg
ICAgMjI6Nzc6ZWI6Njk6YTk6MDM6YjA6Njg6NTg6ZTI6MGM6ODk6MzE6NjQ6MTg6DQorICAgICAg
ICAgICAgICAgICAgICBhZDo2ZDo2NDowODoyOTpjZjo2YTplZjpjYzoxMDpmOTpiMzozMzo0Yzoy
MjoNCisgICAgICAgICAgICAgICAgICAgIGIxOmRhOjI0OjVmOmMzOjMxOmYxOmYxOjdiOjYwOjk3
OmIyOjc5OjAzOjVkOg0KKyAgICAgICAgICAgICAgICAgICAgNjY6ZGM6ZDE6Y2I6ODM6ZWM6ZDM6
MGM6ZTE6ZDI6OWI6N2Q6MTY6ZTM6OWU6DQorICAgICAgICAgICAgICAgICAgICBkYzo1ODpkZDo2
Yzo4OTo3Nzo5ODphMzowYzpiMjo3Yzo2ZTpkMDpiZjozZDoNCisgICAgICAgICAgICAgICAgICAg
IDJjOjE5OmExOmM5Ojg3OmMyOjBhOjRlOmE4OjFlOjM0OmE4OjZmOmRhOjJkOg0KKyAgICAgICAg
ICAgICAgICAgICAgMGE6NGQ6YzA6YjQ6NzE6MDY6NDk6NjE6ZWE6MWE6YzA6NjQ6YzE6ZDM6YjA6
DQorICAgICAgICAgICAgICAgICAgICA4ZjpjMDozYjo4MjowMToyODpjNDplODozMTo4YjowNzo0
YjpiNTpmYjo2MjoNCisgICAgICAgICAgICAgICAgICAgIDE3OjRjOjJhOjBkOmRlOmFiOmNlOmRj
OjgwOjY4OmJmOmFiOjFkOjQ1OmUyOg0KKyAgICAgICAgICAgICAgICAgICAgYTQ6YTI6MDE6NmE6
MDU6ZGY6NDE6ZTY6ZmQ6Zjg6OTQ6MmU6ZTI6OWY6YTQ6DQorICAgICAgICAgICAgICAgICAgICAw
MTo1NTo3ZDplYjpjMTozZDozZTo2MTo1MDphMDplYTozNzoyYTpkNTpjNzoNCisgICAgICAgICAg
ICAgICAgICAgIDE4OjRjOmVjOmY1OjBkOjM5OjZkOjU0OmQzOjA0OjMxOjQ2OmQ4OjEyOmEwOg0K
KyAgICAgICAgICAgICAgICAgICAgMGE6ODI6NjM6NmQ6ODI6YTQ6OGU6ZDY6ODI6NDM6NjE6OWI6
MWQ6OTQ6OWE6DQorICAgICAgICAgICAgICAgICAgICBiMDoxZDozNTowMjpmODpiYjo1NTo3Zjo4
YzpmNzoyMTplMjo2NTozNjo0MjoNCisgICAgICAgICAgICAgICAgICAgIGE5OjhiOjU4OjExOjkw
OmEwOjdjOjI4OjQ1OmQ4OjliOjg4Ojk1OjlhOjI2Og0KKyAgICAgICAgICAgICAgICAgICAgZTk6
ZmQ6NDc6MDc6ODM6NzA6OGE6OTg6MWI6MGI6NGU6ODQ6OGM6MDY6Yjc6DQorICAgICAgICAgICAg
ICAgICAgICBlMjplMw0KKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
DQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoNCisgICAgICAgICAgICBYNTA5djMgQmFzaWMg
Q29uc3RyYWludHM6IA0KKyAgICAgICAgICAgICAgICBDQTpGQUxTRQ0KKyAgICAgICAgICAgIFg1
MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAgICAgQUU6RDg6MkY6
OTk6QkE6QjE6RTg6MDM6RDI6QTU6QzU6MkM6MEQ6QkI6MTY6NUM6OUI6OUY6Rjc6MDgNCisgICAg
ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAg
ICAga2V5aWQ6RjY6Qjk6REE6MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6Njc6NDA6Q0I6MDM6
RDM6MUU6OTA6RUMNCisNCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiANCisgICAgICAg
ICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVy
bWVudA0KKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6IA0KKyAgICAgICAg
ICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbg0KKyAgICAgICAgICAgIFg1MDl2
MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IA0KKyAgICAgICAgICAgICAgICBETlM6d2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcwLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQz
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDM1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUw
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A4OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
ODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZs
YWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRz
NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QNCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24NCisgICAgICAgICA4OTphNDo0NDo0MzplZjowZjphNjoz
Njo3MjozMTo4Nzo0NDo3NTo4NjpiNjo1Yjo1ODoyYzoNCisgICAgICAgICBjYjoxYzowYToyZToz
NTozMjo4Mzo4MDo3MDo3MDoxYzpiNzo0YTpkMTo0NTo0NDo3ODpjNDoNCisgICAgICAgICAxNzpk
ODo3NzozNDo0ZTo0MjpkMjo3MjoyMjpmZTowZDowYTphZTpiODowNjo5NDpkMDo2ZDoNCisgICAg
ICAgICA3YToyMTpkODphNDo4MzozMzoxNzpkMzowNDphODo5Mzo2Zjo2NjpmMDozMzoxOTowNTow
NzoNCisgICAgICAgICBiNTozNTo4MzoyODphOTo4Zjo4NToxODoxYTo4NjpkZjplODpiZTo4ZDpj
Zjo2YToyNDpjMToNCisgICAgICAgICAwODoyNjpkZDowMjo5ODoxYzowMTpkODo4MTo0YTplNDoy
MDoxNDoxOTo3YzplZjo5MTpiNToNCisgICAgICAgICAzZTpkYTo1YTpmNjoxNDo0NToxODo3ZDo0
NTo0YjoyODo3NjozMzo1ODpjNTo4YzpjOToyZDoNCisgICAgICAgICBlZjo4OToxMTo3MDo3ZDpl
Yjo0Nzo5ZToxMjpiMDo4MToxOTpjODowNzpkOTpjYzo4NzpmMToNCisgICAgICAgICAxYjpmZTpm
MDo4ZjpiMjpjMzpmMTpkYTpmMDo1NTplNTo0YTo5YjpmZjowZDowMTo1Zjo2NToNCisgICAgICAg
ICA5NTowNzo5MjpjNjo3Yjo3Mzo5NTo1OTphYTo2YjpjNjo5YzowMTo0ZTphMjoyYjplYTo3NzoN
CisgICAgICAgICBkNDpmNDphYjpkNjplNTo5NDplYjo4MTozNzo1NTo5Yzo5MDozZjo3MzoyMzox
ZDo4NDpjMjoNCisgICAgICAgICA4Mjo0Mjo1Njo5YToxMzo2OTozMzo0ODpkNjowZDowZTo1ODo4
MjphYzo5MDplZjpiMzphMDoNCisgICAgICAgICA2YzpkZTo3OTpmNjoxNzpjNTpmMDoxZTpmMzoz
Nzo3NDowMTpmMDo0Nzo5Yzo3Nzo5YzphNzoNCisgICAgICAgICBhZjplMDo2MDpjYTpkNzowMjpk
ZDo1MDo0ODo2OTpiMToxYjo4Mzo4Nzo1YTo3Yzo3NDo0NDoNCisgICAgICAgICBkYTpjNTpkZTpi
OA0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSWdpRENDSDNDZ0F3SUJBZ0lEQy9P
dk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZaTF3YkdGMFptOXli
UzEwWlhOMGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1ESTVORGRhDQorTUJ3
eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBC
QVFFRg0KK0FBT0NBUThBTUlJQkNnS0NBUUVBdjM3bUtteVMyQ3FFOEJjMnJwMGlkK3RwcVFPd2FG
amlESWt4WkJpdGJXUUkNCitLYzlxNzh3UStiTXpUQ0t4MmlSZnd6SHg4WHRnbDdKNUExMW0zTkhM
Zyt6VERPSFNtMzBXNDU3Y1dOMXNpWGVZDQorb3d5eWZHN1F2ejBzR2FISmg4SUtUcWdlTktodjJp
MEtUY0MwY1FaSlllb2F3R1RCMDdDUHdEdUNBU2pFNkRHTA0KK0IwdTErMklYVENvTjNxdk8zSUJv
djZzZFJlS2tvZ0ZxQmQ5QjV2MzRsQzdpbjZRQlZYM3J3VDArWVZDZzZqY3ENCisxY2NZVE96MURU
bHRWTk1FTVViWUVxQUtnbU50Z3FTTzFvSkRZWnNkbEpxd0hUVUMrTHRWZjR6M0llSmxOa0twDQor
aTFnUmtLQjhLRVhZbTRpVm1pYnAvVWNIZzNDS21Cc0xUb1NNQnJmaTR3SURBUUFCbzRJZDBEQ0NI
Y3d3Q1FZRA0KK1ZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVXJ0Z3ZtYnF4NkFQU3BjVXNEYnNXWEp1
Zjl3Z3dId1lEVlIwakJCZ3cNCitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3WURW
UjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HDQorQ0NzR0FRVUZCd01CTUlJZFd3WURWUjBSQklJ
ZFVqQ0NIVTZDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdg0KK2NESXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTMNCitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNeTUz
DQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
VnViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVZiM0EwTG5kbFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2hWdmNEZ3VkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0E1TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOaTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tnk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
Mk5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXlPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhN
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTWk1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBek55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNaTUzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTmk1
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBeU5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM05DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
V2IzQXpNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpPUzUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
TXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBek5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBOQzUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F6TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
eU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTFNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5pNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOeTUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBNU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
YjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5TNTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVO
eTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBNE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTRNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkSUla
YjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaDQor
YjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhk
R1p2Y20wdQ0KK2RHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
eExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlaYjNBMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
ekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeQ0KK055NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d05EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hw
dmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlMWEJz
DQorWVhSbWIzSnRMblJsYzNTQ0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGd6TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6TXk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBMk1pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UZ3VibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTANCitNeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRGt1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwDQorWlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1TlM1
dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpNdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RreExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
ME1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qWXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEWTVMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJ
YWIzQXpNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNemN1Ym05MExYZGwNCitZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGs0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0F4DQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpZdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RFekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBM09TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVkM2Qz
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNamt1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUxTG01dmRDMTNaV0l0Y0d4aGRHWnYN
CitjbTB1ZEdWemRJSWFiM0E1TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRR
dWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBNQ0KK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d016UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNETXdMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNUzUzZDNjdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNT
Q0dtOXdNalV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkwTG01dg0KK2RDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0MNCitHbTl3TlRFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RReExtNXZkQzEz
WldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeE1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR205d01UQXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitNaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRGMw
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzU0NHbTl3T0RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rn
MExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDDQorR205d05UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNESXpMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXpOUzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVFl1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6DQorT0M1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0K
K1pYTjBnaHB2Y0RZeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d09UQXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEY3dMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNVFV1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFkxTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0Ex
TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpndWJtOTBMWGRsDQorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mw0KK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R5NTNkM2N5TG5kbFlpMXdi
R0YwWm05eWJTNTANCitaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTVNeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNkeTUzZDNjeExuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjREl4TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0EzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3T1RjdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20w
dWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qWXVibTkw
TFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTENCitPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORFl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F6T1M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3
TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFM0xtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQor
R205d09EVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTNMbTV2ZEMxM1pXSXRj
R3hoZEdadg0KK2NtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdPREV1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNkM2N5TG5kM2R6RXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpFdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2h0M2QzY3hM
bmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0hYZDNkeTUzZDNjdWJtOTANCitMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM01T
NTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5kM2R5NTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWZkM2QzTVM1M2QzY3lMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJZmQzZDNNUzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUlmZDNkM01p
NTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTWk1M2QzY3kNCitMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJaQ0KK2QzZDNMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJamQzZDNNUzU0YmkwdGJIWmwNCitMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdpTjRi
aTB0YkhabExUWnNZV1F1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RJSWplRzR0TFd4
MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKbmQzZHk1NGJpMHQNCiti
SFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lX
UXVkM2QzDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2QzTVM1NGJpMHRiSFps
TFRac1lXUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3lMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbmVHNHRMV3gyWlMwMmJH
RmtMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWw0YmkwdA0KK2JqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXJlRzR0TFd4MlpTMDIN
CitiR0ZrTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0
NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTE0YmkwdGJqaHFObVJ6TlROcw0KK2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDTFhkM2R5NTRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJdWQzZDNNaTU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJ
NFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTVM1NGJpMHRiamhxTm1Seg0KK05UTnNk
M2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExXNDRhalprY3pVemJI
ZDMNCithM0p4YUhZeU9HRXVkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWVHNHRMVzQ0
YWpaa2N6VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SXZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0KK0xTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDTVhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1qaGhMbmQzZHk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGQzZHk1NGJpMHRiamhxDQorTm1Sek5UTnNkM2Ry
Y25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekV1ZUc0dA0KK0xX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pK
NGJpMHQNCitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUl5DQorZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHlj
V2gyTWpoaExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdqWjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpDQorTFhCc1lYUm1i
M0p0TG5SbGMzU0NObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gbw0K
K2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHVMUzF1
T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
STZlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmtMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElKQg0KK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NSWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQU5CZ2txaGtp
Rw0KKzl3MEJBUXNGQUFPQ0FRRUFpYVJFUSs4UHBqWnlNWWRFZFlhMlcxZ3N5eHdLTGpVeWc0Qndj
QnkzU3RGRlJIakUNCitGOWgzTkU1QzBuSWkvZzBLcnJnR2xOQnRlaUhZcElNekY5TUVxSk52WnZB
ekdRVUh0VFdES0ttUGhSZ2FodC9vDQordm8zUGFpVEJDQ2JkQXBnY0FkaUJTdVFnRkJsODc1RzFQ
dHBhOWhSRkdIMUZTeWgyTTFqRmpNa3Q3NGtSY0gzcg0KK1I1NFNzSUVaeUFmWnpJZnhHLzd3ajdM
RDhkcndWZVZLbS84TkFWOWxsUWVTeG50emxWbXFhOGFjQVU2aUsrcDMNCisxUFNyMXVXVTY0RTNW
WnlRUDNNakhZVENna0pXbWhOcE0waldEUTVZZ3F5UTc3T2diTjU1OWhmRjhCN3pOM1FCDQorOEVl
Y2Q1eW5yK0JneXRjQzNWQklhYkViZzRkYWZIUkUyc1hldUE9PQ0KKy0tLS0tRU5EIENFUlRJRklD
QVRFLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRf
dGVzdHMueW1sCmluZGV4IDc4MTFiYTk1OTE3YmIzY2M2YjVkMzJlY2JlOWU4OTUyOTc2MWFkYzMu
LjQ5NGZmMWVmYTE5Y2MwMjEzMzM3MDk0ODM4M2U1ZmIyMjE0NGQ0ZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
YWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCkBAIC0xNSw3ICsx
NSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1sCiAtIHRlbXBsYXRl
OiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZlc3QueW1sCi0tIHNj
cmlwdDogbm9fcHJveHk9JyonIC4vd3B0IHJ1biAtLXllcyAtLW5vLXBhdXNlIC0tbm8tZmFpbC1v
bi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0tYWZmZWN0ZWQgJHt7IHBh
cmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQgJChCdWlsZC5BcnRpZmFj
dFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13cHRzY3JlZW5zaG90ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVuc2hvdC50eHQgLS1jaGFu
bmVsIHByZXZpZXcgc2FmYXJpCistIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2Ug
LS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZl
Y3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1
aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNj
cmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90
LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKICAgZGlzcGxheU5hbWU6ICdSdW4gdGVzdHMn
CiAtIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCiAgIGRpc3BsYXlOYW1lOiAnUHVibGlz
aCByZXN1bHRzJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20u
YXBwbGUuU2FmYXJpLnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjIwODA5
NzJjOWY2MzQxMDA2MmVlOGQzM2QwZWQwMjg2YWY4ZjExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9F
TiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBs
aXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkFsbG93UmVtb3RlQXV0b21hdGlvbjwv
a2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
Y2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDZiZDVjMjMzNGFkNGUzZTRk
NWQ2ZmFhZjgwMDVmNGUwYjQ0Y2YxZmUuLmZkNjUwZTgwYWFhZDMwOWM4ZTk4MzI3NGQyYjgyM2Ji
YTkxYjFmYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFs
bF9jaHJvbWUueW1sCkBAIC0xLDYgKzEsOSBAQAogc3RlcHM6Ci0jIFRoaXMgaXMgZXF1aXZhbGVu
dCB0byBgSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9nb29nbGUtY2hyb21lLWRldmAs
Ci0jIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6
IEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcu
Z2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFz
dGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisjIFRoZSBjb25mbGljdGluZyBnb29nbGUt
Y2hyb21lIGFuZCBjaHJvbWVkcml2ZXIgY2Fza3MgYXJlIGZpcnN0IHVuaW5zdGFsbGVkLgorIyBU
aGUgcmF3IGdvb2dsZS1jaHJvbWUtZGV2IGNhc2sgVVJMIGlzIHVzZWQgdG8gYnlwYXNzIGNhY2hp
bmcuCistIHNjcmlwdDogfAorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNr
IHVuaW5zdGFsbCBnb29nbGUtY2hyb21lIHx8IHRydWUKKyAgICBIT01FQlJFV19OT19BVVRPX1VQ
REFURT0xIGJyZXcgY2FzayB1bmluc3RhbGwgY2hyb21lZHJpdmVyIHx8IHRydWUKKyAgICBIT01F
QlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBzOi8vcmF3LmdpdGh1
YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9D
YXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgogICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgQ2hyb21l
IERldicKICAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQu
T1MnXSwgJ0RhcndpbicpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2VkZ2UueW1sCmluZGV4IGU0YzQyNWFiN2EwZjAzMjE4ZDkyMmU3MzEwZWE5ZDhmZGUwZjUx
YWEuLjI5N2I2ZTYwYjI5ZjNhOWJiZDAwYjNlZTAwYjcwNTYzNTEzOGYyY2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvaW5zdGFsbF9lZGdlLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwKQEAgLTQsNiArNCwy
NiBAQCBwYXJhbWV0ZXJzOgogIyBTaG91bGQgbWF0Y2ggaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVz
dHMub3JnL3J1bm5pbmctdGVzdHMvY2hyb21lLmh0bWwKICMgSnVzdCByZXBsYWNlIGNocm9tZSB3
aXRoIGVkZ2VjaHJvbWl1bQogc3RlcHM6CistICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWws
ICdzdGFibGUnKSB9fToKKyAgLSBwb3dlcnNoZWxsOiB8CisgICAgICAkZWRnZUluc3RhbGxlck5h
bWUgPSAnTWljcm9zb2Z0RWRnZVNldHVwLmV4ZScKKyAgICAgICMgTGluayB0byBTdGFibGUgY2hh
bm5lbCBpbnN0YWxsZXIKKyAgICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291cmNlICdodHRwczov
L2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjEwODgzNCZDaGFubmVsPVN0YWJsZSZs
YW5ndWFnZT1lbicgLURlc3RpbmF0aW9uIE1pY3Jvc29mdEVkZ2VTZXR1cC5leGUKKyAgICAgIGlm
ICgtbm90IChUZXN0LVBhdGggJGVkZ2VJbnN0YWxsZXJOYW1lKSkgeworICAgICAgICBUaHJvdyAi
RmFpbGVkIHRvIGRvd25sb2FkIEVkZ2UgaW5zdGFsbGVyIHRvICRlZGdlSW5zdGFsbGVyTmFtZS4i
CisgICAgICB9CisgICAgICBjbWQgL2MgU1RBUlQgL1dBSVQgJGVkZ2VJbnN0YWxsZXJOYW1lIC9z
aWxlbnQgL2luc3RhbGwKKyAgICAgICRlZGdlUGF0aCA9ICIkZW52OnN5c3RlbWRyaXZlXFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb24iCisgICAgICBpZiAoVGVz
dC1QYXRoICRlZGdlUGF0aCkgeworICAgICAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBl
bmRwYXRoXSRlZGdlUGF0aCIKKyAgICAgICAgV3JpdGUtSG9zdCAiRWRnZSBTdGFibGUgaW5zdGFs
bGVkIGF0ICRlZGdlUGF0aC4iCisgICAgICAgIChHZXQtSXRlbSAtUGF0aCAiJGVkZ2VQYXRoXG1z
ZWRnZS5leGUiKS5WZXJzaW9uSW5mbyB8IEZvcm1hdC1MaXN0CisgICAgICB9IGVsc2UgeworICAg
ICAgICBDb3B5LUl0ZW0gLVBhdGggIiRlbnY6dGVtcFwqZWRnZSoubG9nIiAtRGVzdGluYXRpb24g
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpICAtRm9yY2UKKyAgICAgICAgVGhyb3cg
IkZhaWxlZCB0byBpbnN0YWxsIEVkZ2UgYXQgJGVkZ2VQYXRoIgorICAgICAgfQorICAgIGRpc3Bs
YXlOYW1lOiAnSW5zdGFsbCBFZGdlIFN0YWJsZScKKwogLSAke3sgaWYgZXEocGFyYW1ldGVycy5j
aGFubmVsLCAnY2FuYXJ5JykgfX06CiAgIC0gcG93ZXJzaGVsbDogfAogICAgICAgJGVkZ2VJbnN0
YWxsZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3Rh
bGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IGE4NjQxNDY1YWM4ZWFl
NzAwODZiZDBjZWQ0YTgwZDNhMmRhMzUxMTMuLmQwNjYwZDE1MmJiZGZjODlmMzA4YmZjMDQ4Y2Qy
MjIxZTllYTc1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9zYWZhcmkueW1sCkBAIC0zLDYgKzMsOSBAQCBwYXJhbWV0ZXJzOgogCiAjIFNob3VsZCBt
YXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9zYWZhcmku
aHRtbAogc3RlcHM6CistIHNjcmlwdDogZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLldlYkRyaXZl
ciBEaWFnbm9zdGljc0VuYWJsZWQgMQorICBkaXNwbGF5TmFtZTogJ0VuYWJsZSBzYWZhcmlkcml2
ZXIgZGlhZ25vc3RpY3MnCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJf
ZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZp
ZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKICAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEg
YnJldyBjYXNrIGluc3RhbGwgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmll
dy5yYgpAQCAtMTIsOSArMTUsNiBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwg
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5l
bCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgIyBXb3JrYXJvdW5kIGZvciBg
c3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmc6Ci0gICAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xOTg0NQotICAgICAgbWtk
aXIgLXAgfi9MaWJyYXJ5L1dlYkRyaXZlci8KLSAgICAgIGNwIHRvb2xzL2NpL2F6dXJlL2NvbS5h
cHBsZS5TYWZhcmkucGxpc3Qgfi9MaWJyYXJ5L1dlYkRyaXZlci8KKyAgICAgIHN1ZG8gc2FmYXJp
ZHJpdmVyIC0tZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdl
YktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlO
YW1lOiAnQ29uZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9waXBfaW5zdGFsbC55bWwKaW5kZXggYzg3OTUzNDVmNmJjZjRhOTQzZTA3YTQ1OTk0N2U3MThh
ZDZhMGFmYy4uMThkMTg3OWU5NzE2MTM1MzJmYWM1NjczZDlhODA0YWNjMWJjODY3MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9waXBfaW5zdGFsbC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKQEAgLTIsMTQg
KzIsNSBAQCBwYXJhbWV0ZXJzOgogICBwYWNrYWdlczogJycKIAogc3RlcHM6Ci0tIHNjcmlwdDog
fAotICAgICMgYHN1ZG8gcGlwIGluc3RhbGxgIGlzIG5vdCB1c2VkIGJlY2F1c2Ugc29tZSBwYWNr
YWdlcyAoZS5nLiB0b3gpIGRlcGVuZCBvbgotICAgICMgc3lzdGVtIHBhY2thZ2VzIChlLmcuIHNl
dHVwdG9vbHMpIHdoaWNoIGNhbm5vdCBiZSB1cGdyYWRlZCBkdWUgdG8gU3lzdGVtCi0gICAgIyBJ
bnRlZ3JpdHkgUHJvdGVjdGlvbiwgc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMzAw
NDkyMC4KLSAgICBwaXAgaW5zdGFsbCAtLXVzZXIgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0K
LSAgICBlY2hvICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXSRIT01FL0xpYnJhcnkvUHl0aG9uLzIu
Ny9iaW4iCi0gIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMgKG1hY09TKScK
LSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQuT1MnXSwg
J0RhcndpbicpKQogLSBzY3JpcHQ6IHBpcCAtLWRpc2FibGUtcGlwLXZlcnNpb24tY2hlY2sgaW5z
dGFsbCAtLXVwZ3JhZGUgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0KLSAgZGlzcGxheU5hbWU6
ICdJbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyAoV2luZG93cyknCi0gIGNvbmRpdGlvbjogYW5kKHN1
Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCisgIGRp
c3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxp
c2hfbG9ncy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5Mzk3YTkxYWQ3
Y2E0MjQ4NjRjNTMyNmI1ZmU3YjRhMzY4NWE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlz
aF9sb2dzLnltbApAQCAtMCwwICsxLDcgQEAKK3N0ZXBzOgorLSB0YXNrOiBQdWJsaXNoQnVpbGRB
cnRpZmFjdHNAMQorICBkaXNwbGF5TmFtZTogJ1B1Ymxpc2ggc2FmYXJpZHJpdmVyIGxvZ3MnCisg
IGlucHV0czoKKyAgICBwYXRodG9QdWJsaXNoOiAvVXNlcnMvcnVubmVyL0xpYnJhcnkvTG9ncy9j
b20uYXBwbGUuV2ViRHJpdmVyLworICAgIGFydGlmYWN0TmFtZTogc2FmYXJpZHJpdmVyLWxvZ3MK
KyAgY29uZGl0aW9uOiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFnbm9zZSddLCB0cnVl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3LnJiCmluZGV4IGIzMjczOWJlNThhNzAyOGQ1ZmY0YTJkZTliNTZk
ZmI3ZWEwOTk4MmIuLmVhZTAzNDc0YTQ5ZmY3YmVjZTMyZGFmNDgyMzkwMDI1YzNjZTllMmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10
ZWNobm9sb2d5LXByZXZpZXcucmIKQEAgLTEsMTAgKzEsMTAgQEAKIGNhc2sgJ3NhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcnIGRvCiAgIGlmIE1hY09TLnZlcnNpb24gPD0gOm1vamF2ZQotICAgIHZl
cnNpb24gJzk2LDA2MS00NDA1Ni0yMDE5MTEyMC1hYzdiYjE5Ni0yNzI0LTQ4NDAtYmNlOS02Yzgz
ZWNkYmZiMmMnCi0gICAgc2hhMjU2ICdlODBjZWFjZGZmN2U3NTIxODM2NTk5M2U1YWYxYzgxYzli
Y2M0Nzg1MjkxYWUwMGFiYmEzZDE0YWM1NjE0MzE3JworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU5
NjYtMjAyMDA1MTMtODY1NzFiZTYtODc4ZS00MTFiLWE1YjktNjVhOTcxNTczZmFlJworICAgIHNo
YTI1NiAnODUxOGM4OTE3YTkxNzJhZWI3NWRlZWI2MTA2MGQzNTMyMjk3NjBmZDU0ZGM4NWJkMzhh
MDg5N2NjMWQxMjEwNScKICAgZWxzZQotICAgIHZlcnNpb24gJzk2LDA2MS00NzcxOC0yMDE5MTEy
MC0wMmJjNzU2OS1lZTZiLTRjMjgtOWVjNC0wY2VlZGEzYzNjM2EnCi0gICAgc2hhMjU2ICdiYmZj
ZGMzNmJmOWI1NWFlYzU4MzhkNjZlMzRjNDFkZDNmNmE2NDA5MTQwNmJjMzhmNDVjODg4MzYwZjE5
MWZlJworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU4OTAtMjAyMDA1MTMtMzIxYTY5YjQtZGU1OC00
NDBlLTgxODItOGFjMDNkNjVmNmNlJworICAgIHNoYTI1NiAnZjNjMDczZDliNjBmZjZkMTFmODJh
YmJjNmNjMTMxZTU5MTNlNmQwZjJhMTFmMDk2OGFlNzdkYjFiNTFlMWUzNScKICAgZW5kCiAKICAg
dXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRl
cl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hf
cHl0ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKaW5kZXggYmM5MzA4MzZkM2Q3YjY2YmM2M2Fj
MjM5MmI1MDVmZDk5YWYzZTExZC4uMTJlZDY2YTlhMDIwNmY2ODY2ZmIxMjBlMjY0YmUzOWRjN2Uy
OTJlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1s
CkBAIC0xLDcgKzEsNyBAQAogcGFyYW1ldGVyczoKICAgZGlyZWN0b3J5OiAnJwogICB0b3hlbnY6
ICdBTEwnCi0KKyAgCiBzdGVwczoKIC0gdGVtcGxhdGU6IHBpcF9pbnN0YWxsLnltbAogICBwYXJh
bWV0ZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cK
aW5kZXggNDRmNTQzMTljMmI5ZjAyNGVhOTI1YTZjM2VjN2NlMjBlZTRkNTBkMi4uY2U3MDEyZjcz
Mzk5YTYyODZmNzdkNzMxNjIxNDAxNzRiMDljMzI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0
LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCkBAIC0xOCw3ICsxOCw2IEBAIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY2xlYW51cF93
aW4xMC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9ob29rLnltbAogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9jZXJ0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbApAQCAtMjgsNiArMjcsNyBA
QCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFy
aS55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJp
LXRlY2hub2xvZ3ktcHJldmlldy5yYgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0
LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCmluZGV4IDcwOWNj
MmFhN2U2ODY3ZjU0OGQ0ZWZkZDYyZDc0YWJjMTg1ZTY1N2IuLmY4YWUzZTYxYmY3NTZkOTdjNzhl
MmQ5NTg5MTIxYjdkNjAxMDY2ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0
X2RpZmYuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQCBtYWluKCkgewogCiAgICAgI8KgRXhjbHVkZSB0
ZXN0cyB0aGF0IHJlbHkgb24gZm9udCByZW5kZXJpbmcKICAgICBleGNsdWRlZD0oCi0gICAgICAg
ICcyZGNvbnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwu
YmFzaWMucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKLSAgICAgICAgJzJkY29udGV4
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5ydGwucG5nJwot
ICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJh
dy5zdHJva2UuYmFzaWMucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAgICdvZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKLSAgICAgICAgJ29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKKyAgICAgICAgJ2h0
bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3
LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRl
eHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCisg
ICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJk
LnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2Ry
YXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwor
ICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LmZpbGwuYmFz
aWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3
LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVu
L3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29m
ZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwogICAgICkKIAogICAg
IC4vdXBkYXRlLWJ1aWx0LXRlc3RzLnNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVj
dHVyZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCmluZGV4IDhkYjA4Nzk0YWRlMjZi
ZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIuLjg5MjY3YjUwY2I2NDMyYzQ5NWQ0MjhhMTgwYzU5
NjU5YjVjNWE2MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCkBAIC01LDMxICs1LDI1IEBAIFNDUklQVF9ESVI9
JChjZCAkKGRpcm5hbWUgIiQwIikgJiYgcHdkIC1QKQogV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4v
Li4KIGNkICRXUFRfUk9PVAogCi1hZGRfd3B0X2hvc3RzKCkgewotICAgIC4vd3B0IG1ha2UtaG9z
dHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMKLX0KLQogdGVzdF9pbmZyYXN0cnVjdHVy
ZSgpIHsKLSAgICBsb2NhbCBBUkdTPSIiOwotICAgIGlmIFsgJFBST0RVQ1QgPT0gImZpcmVmb3gi
IF07IHRoZW4KLSAgICAgICAgQVJHUz0iLS1pbnN0YWxsLWJyb3dzZXIiCi0gICAgZWxzZQotICAg
ICAgICBBUkdTPSQxCi0gICAgZmkKLSAgICBURVJNPWR1bWIgLi93cHQgcnVuIC0tbG9nLW1hY2gg
LSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFz
dHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0
cnVjdHVyZS8KKyAgICBQWTNfRkxBRz0iJDIiCisgICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxB
RyBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24g
LS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzICQxICRQ
Uk9EVUNUIGluZnJhc3RydWN0dXJlLwogfQogCiBtYWluKCkgewotICAgIFBST0RVQ1RTPSggImZp
cmVmb3giICJjaHJvbWUiICkKKyAgICBpZiBbWyAkIyAtZXEgMSAmJiAiJDEiID0gIi0tcHkzIiBd
XTsgdGhlbgorICAgICAgICBQUk9EVUNUUz0oICJjaHJvbWUiICkKKyAgICBlbHNlCisgICAgICAg
IFBST0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBmaQogICAgIC4vd3B0IG1hbmlm
ZXN0IC0tcmVidWlsZCAtcCB+L21ldGEvTUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGlu
ICIke1BST0RVQ1RTW0BdfSI7IGRvCiAgICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9t
ZSIgXV07IHRoZW4KLSAgICAgICAgICAgIGFkZF93cHRfaG9zdHMKLSAgICAgICAgICAgIHRlc3Rf
aW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkg
LS1jaGFubmVsIGRldiIKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5
PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlCisgICAgICAgICAgICB0
ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKICAg
ICAgICAgZmkKICAgICBkb25lCiB9CiAKLW1haW4KK21haW4gJDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9i
cy5weQppbmRleCAzZDgwOWVmYTM3Y2NmZjJjMjU4MzQzYjY0NzkxNzYyZmM1MDdhOTBmLi43NjI0
ZWIwZDUxNmZjMTZhNTcyNGE2NzE0ZDI3NjdiYzRlMTIzMjVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9q
b2JzLnB5CkBAIC0zMywxNSArMzMsMTYgQEAgam9iX3BhdGhfbWFwID0gewogICAgICJ3cHRydW5u
ZXJfdW5pdHRlc3QiOiBbInRvb2xzLyJdLAogICAgICJidWlsZF9jc3MiOiBbImNzcy8iXSwKICAg
ICAidXBkYXRlX2J1aWx0IjogWyJ1cGRhdGUtYnVpbHQtdGVzdHNcXC5zaCIsCi0gICAgICAgICAg
ICAgICAgICAgICAiMmRjb250ZXh0LyIsCiAgICAgICAgICAgICAgICAgICAgICAiaW5mcmFzdHJ1
Y3R1cmUvIiwKICAgICAgICAgICAgICAgICAgICAgICJodG1sLyIsCi0gICAgICAgICAgICAgICAg
ICAgICAib2Zmc2NyZWVuLWNhbnZhcy8iLAogICAgICAgICAgICAgICAgICAgICAgIm1pbWVzbmlm
Zi8iLAogICAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdWkvIiwKICAgICAgICAgICAgICAg
ICAgICAgICJXZWJJREwiXSwKICAgICAid3B0X2ludGVncmF0aW9uIjogWyJ0b29scy8iXSwKLSAg
ICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZyYXN0cnVjdHVyZS8iLCAidG9vbHMv
IiwgInJlc291cmNlcy8iXSwKKyAgICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZy
YXN0cnVjdHVyZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VzLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZHJpdmVyL3Rlc3RzL3N1cHBvcnQiXSwKIH0K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQppbmRleCAxZTM4
OGRmYTc0MTlhMjFiMjA1MDNiMzA3NWMzNmJjMTExMzZkZDdkLi4yMGY5NmQ5YTNlZWVjNjM5OTc0
Y2E0NjFkOWQ0NWY5MWM5NmMwMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZl
c3RfYnVpbGQucHkKQEAgLTg0LDggKzg0LDcgQEAgZGVmIHJlcXVlc3QodXJsLCBkZXNjLCBtZXRo
b2Q9Tm9uZSwgZGF0YT1Ob25lLCBqc29uX2RhdGE9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWQKICAg
ICB0cnk6CiAgICAgICAgIHJldHVybiByZXNwLmpzb24oKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQgZGF0YSB3YXMgbm90
IEpTT04gUmVzcG9uc2U6IiAlCi0gICAgICAgICAgICAgICAgICAgICAoZGVzYywgcmVzcC5zdGF0
dXNfY29kZSkpCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgZmFpbGVkOiBSZXR1cm5lZCBkYXRh
IHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUgZGVzYykKICAgICAgICAgbG9nZ2VyLmVycm9yKHJl
c3AudGV4dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKaW5kZXggYmE3
Nzc0NDQ2ZTA4MzZlMzE5YzBkMDcxZDYyNjJlNTYyZmIxNDZlMS4uYmE1OTk3ZjY4YTYxNWY0OTMy
MmFjMDA5YTE1YWViZjBhNWEwNzFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmll
dy5weQpAQCAtMTIzLDYgKzEyMywyNyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAgICAg
ICAgcmV0dXJuIGRhdGFbJ2l0ZW1zJ10KIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIHB1
bGxfcmVxdWVzdF9pc19mcm9tX2Zvcmsoc2VsZiwgcHVsbF9yZXF1ZXN0KToKKyAgICAgICAgcHJf
bnVtYmVyID0gcHVsbF9yZXF1ZXN0WydudW1iZXInXQorICAgICAgICB1cmwgPSAne30vcmVwb3Mv
e30vcHVsbHMve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1
Yl9wcm9qZWN0LCBwcl9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdD
aGVja2luZyBpZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCisK
KyAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKworICAgICAgICByZXBvX25h
bWUgPSBkYXRhWydoZWFkJ11bJ3JlcG8nXVsnZnVsbF9uYW1lJ10KKyAgICAgICAgaXNfZm9yayA9
IHJlcG9fbmFtZSAhPSBzZWxmLl9naXRodWJfcHJvamVjdAorCisgICAgICAgIGxvZ2dlci5pbmZv
KAorICAgICAgICAgICAgJ1B1bGwgcmVxdWVzdCAlcyBpcyBmcm9tIFwnJXNcJy4gSXMgYSBmb3Jr
OiAlcycsCisgICAgICAgICAgICBwcl9udW1iZXIsIHJlcG9fbmFtZSwgaXNfZm9yaworICAgICAg
ICApCisKKyAgICAgICAgcmV0dXJuIGlzX2ZvcmsKKwogICAgIEBndWFyZCgnY29yZScpCiAgICAg
ZGVmIGNyZWF0ZV9yZWYoc2VsZiwgcmVmc3BlYywgcmV2aXNpb24pOgogICAgICAgICB1cmwgPSAn
e30vcmVwb3Mve30vZ2l0L3JlZnMnLmZvcm1hdChzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJv
amVjdCkKQEAgLTE4MCw5ICsyMDEsOCBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgQGd1
YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX2RlcGxveW1lbnQoc2VsZiwgdGFyZ2V0LCBkZXBs
b3ltZW50LCBzdGF0ZSwgZGVzY3JpcHRpb249JycpOgogICAgICAgICBpZiBzdGF0ZSBpbiAoJ3Bl
bmRpbmcnLCAnc3VjY2VzcycpOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3N1
Ym1pc3Npb25zL3t9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0LCBkZXBsb3ltZW50
WydlbnZpcm9ubWVudCddCi0gICAgICAgICAgICApCisgICAgICAgICAgICBwcl9udW1iZXIgPSBk
ZXBsb3ltZW50WydlbnZpcm9ubWVudCddW2xlbihERVBMT1lNRU5UX1BSRUZJWCk6XQorICAgICAg
ICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3t9Jy5mb3JtYXQodGFyZ2V0LCBwcl9udW1iZXIp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwgPSBOb25lCiAgICAg
ICAgIHVybCA9ICd7fS9yZXBvcy97fS9kZXBsb3ltZW50cy97fS9zdGF0dXNlcycuZm9ybWF0KApA
QCAtMjQ2LDEzICsyNjYsMTYgQEAgZGVmIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1ZXN0
KToKIAogICAgIHJldHVybiBGYWxzZQogCi1kZWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVx
dWVzdCk6CitkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAg
ICAgcmV0dXJuICgKLSAgICAgICAgaXNfb3BlbihwdWxsX3JlcXVlc3QpIGFuZAotICAgICAgICBw
dWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElPTl9HSVRIVUJfVVNF
UlMgYW5kICgKLSAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10g
aW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TIG9yCi0gICAgICAgICAgICBoYXNfbWlycm9y
aW5nX2xhYmVsKHB1bGxfcmVxdWVzdCkKLSAgICAgICAgKQorICAgICAgICBpc19vcGVuKHB1bGxf
cmVxdWVzdCkgYW5kICgKKyAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1
ZXN0KSBvciAoCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10g
bm90IGluIEFVVE9NQVRJT05fR0lUSFVCX1VTRVJTIGFuZAorICAgICAgICAgICAgICAgIHB1bGxf
cmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJ
T05TCisgICAgICAgICAgICApCisgICAgICAgICkgYW5kCisgICAgICAgICMgUXVlcnkgdGhpcyBs
YXN0IGFzIGl0IHJlcXVpcmVzIGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5CisgICAgICAgIG5v
dCBwcm9qZWN0LnB1bGxfcmVxdWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQogICAgICkK
IAogZGVmIGlzX2RlcGxveWVkKGhvc3QsIGRlcGxveW1lbnQpOgpAQCAtMjkxLDcgKzMxNCw3IEBA
IGRlZiBzeW5jaHJvbml6ZShob3N0LCBnaXRodWJfcHJvamVjdCwgd2luZG93KToKICAgICAgICAg
cmV2aXNpb25fdHJ1c3RlZCA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3BlY190cnVzdGVkKQog
ICAgICAgICByZXZpc2lvbl9vcGVuID0gcmVtb3RlLmdldF9yZXZpc2lvbihyZWZzcGVjX29wZW4p
CiAKLSAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVxdWVzdCk6CisgICAgICAg
IGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgogICAgICAgICAg
ICAgbG9nZ2VyLmluZm8oJ1B1bGwgUmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQogCiAgICAg
ICAgICAgICBpZiByZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IGY5MDg2YTMxYmQ5M2JhZjcyODE5ZmM0NTBmOTBhMjkwZDY1Njc0ZmQuLmE1
YThjYTdkYjI5YWI0ODRmZTM5NzQ3NWY5YjVjZmM0MTJkNjUxN2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcnVuX3RjLnB5CkBAIC0zNiwxMSArMzYsMTUgQEAgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBH
aXRIdWIgZXZlbnQgcGF5bG9hZC4KICIiIgogCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBmbm1h
dGNoCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cworaW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCB6
aXBmaWxlCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgU29ja2V0RXJyb3IgICMgTk9RQTog
TjgxMgogaW1wb3J0IGVycm5vCiB0cnk6CkBAIC0xNDcsMTMgKzE1MSwxNCBAQCBkZWYgaW5zdGFs
bF9jaHJvbWUoY2hhbm5lbCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXpl
ZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKICAgICBkZXN0ID0gb3MucGF0aC5q
b2luKCIvdG1wIiwgZGViX2FyY2hpdmUpCi0gICAgcmVzcCA9IHVybG9wZW4oImh0dHBzOi8vZGwu
Z29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUpCisgICAgZGViX3VybCA9
ICJodHRwczovL2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRlYl9hcmNoaXZlCiAg
ICAgd2l0aCBvcGVuKGRlc3QsICJ3IikgYXMgZjoKLSAgICAgICAgZi53cml0ZShyZXNwLnJlYWQo
KSkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgZGViX3VybCkKIAogICAg
IHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQogICAgIHJ1bihbInN1
ZG8iLCAiZ2RlYmkiLCAiLXFuIiwgIi90bXAvJXMiICUgZGViX2FyY2hpdmVdKQogCisKIGRlZiBp
bnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwpOgogICAgICMgQ29u
ZmlndXJlIHdlYmtpdGd0ay5vcmcvZGViaWFuIHJlcG9zaXRvcnkgZm9yICRjaGFubmVsIGFuZCBw
aW4gaXQgd2l0aCBtYXhpbXVtIHByaW9yaXR5CiAgICAgcnVuKFsic3VkbyIsICJhcHQta2V5Iiwg
ImFkdiIsICItLWZldGNoLWtleXMiLCAiaHR0cHM6Ly93ZWJraXRndGsub3JnL2RlYmlhbi9hcHQu
a2V5Il0pCkBAIC0xNjksMTUgKzE3NCwxNiBAQCBkZWYgaW5zdGFsbF93ZWJraXRndGtfZnJvbV9h
cHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFx
eSIsICItdCIsICJiaW9uaWMtd3B0LXdlYmtpdC11cGRhdGVzIiwgImluc3RhbGwiLCAid2Via2l0
Mmd0ay1kcml2ZXIiXSkKIAogCi0jIERvd25sb2FkIGFuIFVSTCBpbiBjaHVua3MgYW5kIHNhdmVz
IGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0cnVuY2F0aW5nIGl0KQotIyBJdCBkb2Vzbid0IGNs
b3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgotIyBJdCByZXRy
aWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8gbWF4X3JldHJpZXMu
Ci1kZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4X3JldHJpZXM9Myk6
Ci0gICAgZG93bmxvYWRfc3VjY2VlZCA9IEZhbHNlCi0gICAgaWYgbWF4X3JldHJpZXMgPCAwOgot
ICAgICAgICBtYXhfcmV0cmllcyA9IDAKLSAgICBmb3IgY3VycmVudF9yZXRyeSBpbiByYW5nZSht
YXhfcmV0cmllcysxKToKK2RlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBt
YXhfcmV0cmllcz01KToKKyAgICAiIiJEb3dubG9hZCBhbiBVUkwgaW4gY2h1bmtzIGFuZCBzYXZl
cyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKKyAgICBJdCBkb2Vzbid0
IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgorICAgIEl0
IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2YgRUNPTk5SRVNFVCB1cCB0byBtYXhfcmV0
cmllcy4iIiIKKyAgICBpZiBtYXhfcmV0cmllcyA8IDE6CisgICAgICAgIG1heF9yZXRyaWVzID0g
MQorICAgIHdhaXQgPSAyCisgICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFuZ2UoMSwgbWF4X3Jl
dHJpZXMrMSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJJTkZPOiBEb3dubG9h
ZGluZyAlcyBUcnkgJWQvJWQiICUgKHVybCwgY3VycmVudF9yZXRyeSwgbWF4X3JldHJpZXMpKQog
ICAgICAgICAgICAgcmVzcCA9IHVybG9wZW4odXJsKQogICAgICAgICAgICAgIyBXZSBtYXkgY29t
ZSBoZXJlIGluIGEgcmV0cnksIGVuc3VyZSB0byB0cnVuY2F0ZSBmZCBiZWZvcmUgc3RhcnQgd3Jp
dGluZy4KICAgICAgICAgICAgIGZkLnNlZWsoMCkKQEAgLTE4OCwyMiArMTk0LDIzIEBAIGRlZiBk
b3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBtYXhfcmV0cmllcz0zKToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsgICMgRG93bmxvYWQgZmluaXNoZWQKICAgICAgICAgICAgICAg
ICBmZC53cml0ZShjaHVuaykKICAgICAgICAgICAgIGZkLmZsdXNoKCkKLSAgICAgICAgICAgIGRv
d25sb2FkX3N1Y2NlZWQgPSBUcnVlCi0gICAgICAgICAgICBicmVhayAgIyBTdWNlc3MKKyAgICAg
ICAgICAgICMgU3VjY2VzcworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGV4Y2VwdCBTb2Nr
ZXRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFU0VU
OgotICAgICAgICAgICAgICAgIHJhaXNlICAjIFVua25vd24gZXJyb3IKLSAgICAgICAgICAgIGlm
IGN1cnJlbnRfcmV0cnkgPCBtYXhfcmV0cmllczoKLSAgICAgICAgICAgICAgICBwcmludCgiRVJS
T1I6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gUmV0cnlpbmcgLi4uIikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZSAgIyBSZXRyeQotICAgIHJldHVybiBkb3dubG9hZF9zdWNjZWVkCisgICAg
ICAgICAgICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXMgYW5kIGUuZXJybm8gPT0gZXJy
bm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAjIFJldHJ5CisgICAgICAgICAgICAgICAg
cHJpbnQoIkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5aW5nIGFmdGVyICVk
cy4uLiIgJSB3YWl0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICAgICAg
ICAgICAgICB3YWl0ICo9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBN
YXhpbXVtIHJldHJpZXMgb3IgdW5rbm93biBlcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlCiAK
IAogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fdGFyYmFsbF9idW5kbGUoY2hhbm5lbCk6CiAg
ICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIudGFyLnh6IikgYXMg
dGVtcF90YXJiYWxsOgogICAgICAgICBkb3dubG9hZF91cmwgPSAiaHR0cHM6Ly93ZWJraXRndGsu
b3JnL2J1aWx0LXByb2R1Y3RzL25pZ2h0bHkvd2Via2l0Z3RrLW5pZ2h0bHktYnVpbGQtbGFzdC50
YXIueHoiCi0gICAgICAgIGlmIG5vdCBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcih0ZW1wX3Rh
cmJhbGwsIGRvd25sb2FkX3VybCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNh
bid0IGRvd25sb2FkICVzLiBBYm9ydGluZyIgJSBkb3dubG9hZF91cmwpCisgICAgICAgIGRvd25s
b2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRfdXJsKQogICAgICAg
ICBydW4oWyJzdWRvIiwgInRhciIsICJ4ZmEiLCB0ZW1wX3RhcmJhbGwubmFtZSwgIi1DIiwgIi8i
XSkKICAgICAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0
IiwgIi1xcXkiLCAidXBkYXRlIl0pCkBAIC0yMTgsNiArMjI1LDcgQEAgZGVmIGluc3RhbGxfd2Vi
a2l0Z3RrKGNoYW5uZWwpOgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVu
cmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKKwogZGVmIHN0YXJ0
X3h2ZmIoKToKICAgICBzdGFydChbInN1ZG8iLCAiWHZmYiIsIG9zLmVudmlyb25bIkRJU1BMQVki
XSwgIi1zY3JlZW4iLCAiMCIsCiAgICAgICAgICAgICIlc3glc3glcyIgJSAob3MuZW52aXJvblsi
U0NSRUVOX1dJRFRIIl0sCkBAIC0yNDYsNyArMjU0LDY3IEBAIGRlZiBzZXRfdmFyaWFibGVzKGV2
ZW50KToKICAgICAgICAgb3MuZW52aXJvblsiR0lUSFVCX0JSQU5DSCJdID0gYnJhbmNoCiAKIAor
ZGVmIHRhc2tfdXJsKHRhc2tfaWQpOgorICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NM
VVNURVJfUk9PVF9VUkwnXQorICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVy
Lm5ldCc6CisgICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5u
ZXQvdjEvdGFzayIKKyAgICBlbHNlOgorICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAi
L2FwaS9xdWV1ZS92MS90YXNrIgorCisgICAgcmV0dXJuICIlcy8lcyIgJSAocXVldWVfYmFzZSwg
dGFza19pZCkKKworCitkZWYgZG93bmxvYWRfYXJ0aWZhY3RzKGFydGlmYWN0cyk6CisgICAgYXJ0
aWZhY3RfbGlzdF9ieV90YXNrID0ge30KKyAgICBmb3IgYXJ0aWZhY3QgaW4gYXJ0aWZhY3RzOgor
ICAgICAgICBiYXNlX3VybCA9IHRhc2tfdXJsKGFydGlmYWN0WyJ0YXNrIl0pCisgICAgICAgIGlm
IGFydGlmYWN0WyJ0YXNrIl0gbm90IGluIGFydGlmYWN0X2xpc3RfYnlfdGFzazoKKyAgICAgICAg
ICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAgICAgICAgICAgICAg
ZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgYmFzZV91cmwgKyAiL2FydGlmYWN0cyIpCisg
ICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgYXJ0aWZhY3RzX2RhdGEg
PSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgIGFydGlmYWN0X2xpc3RfYnlfdGFza1thcnRpZmFj
dFsidGFzayJdXSA9IGFydGlmYWN0c19kYXRhCisKKyAgICAgICAgYXJ0aWZhY3RzX2RhdGEgPSBh
cnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0aWZhY3RbInRhc2siXV0KKyAgICAgICAgcHJpbnQoIkRF
QlVHOiBHb3QgYXJ0aWZhY3RzICVzIiAlIGFydGlmYWN0c19kYXRhKQorICAgICAgICBmb3VuZCA9
IEZhbHNlCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gYXJ0aWZhY3RzX2RhdGFbImFydGlmYWN0
cyJdOgorICAgICAgICAgICAgcHJpbnQoIkRFQlVHOiBjYW5kaWRhdGU6ICVzIGdsb2I6ICVzIiAl
IChjYW5kaWRhdGVbIm5hbWUiXSwgYXJ0aWZhY3RbImdsb2IiXSkpCisgICAgICAgICAgICBpZiBm
bm1hdGNoLmZubWF0Y2goY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJnbG9iIl0pOgorICAg
ICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIHByaW50KCJJTkZPOiBG
ZXRjaGluZyBhcml0ZmFjdCAlcyBmcm9tIHRhc2sgJXMiICUgKGNhbmRpZGF0ZVsibmFtZSJdLCBh
cnRpZmFjdFsidGFzayJdKSkKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBjYW5kaWRhdGVb
Im5hbWUiXS5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgICAgIHVybCA9IGJhc2VfdXJs
ICsgIi9hcnRpZmFjdHMvIiArIGNhbmRpZGF0ZVsibmFtZSJdCisgICAgICAgICAgICAgICAgZGVz
dF9wYXRoID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIsIGFydGlmYWN0WyJk
ZXN0Il0sIGZpbGVfbmFtZSkpCisgICAgICAgICAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUoZGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhk
ZXN0X2Rpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAg
ICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0X3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIHVybCkKKworICAgICAgICAg
ICAgICAgIGlmIGFydGlmYWN0LmdldCgiZXh0cmFjdCIpOgorICAgICAgICAgICAgICAgICAgICB1
bnBhY2soZGVzdF9wYXRoKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBwcmlu
dCgiV0FSTklORzogTm8gYXJ0aWZhY3QgZm91bmQgbWF0Y2hpbmcgJXMgaW4gdGFzayAlcyIgJSAo
YXJ0aWZhY3RbImdsb2IiXSwgYXJ0aWZhY3RbInRhc2siXSkpCisKKworZGVmIHVucGFjayhwYXRo
KToKKyAgICBkZXN0ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisgICAgaWYgdGFyZmlsZS5pc190
YXJmaWxlKHBhdGgpOgorICAgICAgICBydW4oWyJ0YXIiLCAiLXhmIiwgcGF0aF0sIGN3ZD1vcy5w
YXRoLmRpcm5hbWUocGF0aCkpCisgICAgZWxpZiB6aXBmaWxlLmlzX3ppcGZpbGUocGF0aCk6Cisg
ICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHBhdGgpIGFzIGFyY2hpdmU6CisgICAgICAgICAg
ICBhcmNoaXZlLmV4dHJhY3RhbGwoZGVzdCkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiRVJS
T1I6IERvbid0IGtub3cgaG93IHRvIGV4dHJhY3QgJXMiICUgcGF0aCkKKyAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uCisKKwogZGVmIHNldHVwX2Vudmlyb25tZW50KGFyZ3MpOgorICAgIGlmICJUQVNL
X0FSVElGQUNUUyIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJ0aWZhY3RzID0ganNvbi5sb2Fk
cyhvcy5lbnZpcm9uWyJUQVNLX0FSVElGQUNUUyJdKQorICAgICAgICBkb3dubG9hZF9hcnRpZmFj
dHMoYXJ0aWZhY3RzKQorCiAgICAgaWYgYXJncy5ob3N0c19maWxlOgogICAgICAgICBtYWtlX2hv
c3RzX2ZpbGUoKQogCkBAIC0zNjQsMTYgKzQzMiwxMCBAQCBkZWYgZmV0Y2hfZXZlbnRfZGF0YSgp
OgogICAgICAgICAjIEZvciBleGFtcGxlIHVuZGVyIGxvY2FsIHRlc3RpbmcKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NMVVNURVJfUk9PVF9V
UkwnXQotICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCc6Ci0gICAg
ICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5uZXQvdjEvdGFzayIK
LSAgICBlbHNlOgotICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAiL2FwaS9xdWV1ZS92
MS90YXNrIgotCi0KLSAgICByZXNwID0gdXJsb3BlbigiJXMvJXMiICUgKHF1ZXVlX2Jhc2UsIHRh
c2tfaWQpKQotCi0gICAgdGFza19kYXRhID0ganNvbi5sb2FkKHJlc3ApCisgICAgd2l0aCB0ZW1w
ZmlsZS5UZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2Ny
aXB0b3IoZiwgdGFza191cmwodGFza19pZCkpCisgICAgICAgIGYuc2VlaygwKQorICAgICAgICB0
YXNrX2RhdGEgPSBqc29uLmxvYWQoZikKICAgICBldmVudF9kYXRhID0gdGFza19kYXRhLmdldCgi
ZXh0cmEiLCB7fSkuZ2V0KCJnaXRodWJfZXZlbnQiKQogICAgIGlmIGV2ZW50X2RhdGEgaXMgbm90
IE5vbmU6CiAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGV2ZW50X2RhdGEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rh
c2tjbHVzdGVyLXJ1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CmluZGV4IGFjNWFiYzEyYjFmMTdkMmZj
OTNjNmFjNTYzNmJmZDZmZTdjYWZhMDQuLmQ4ZTQyY2NlYTIxMTI2OTRjNmQzYjhiMWFhNmNhNzAz
NGVhMjIyODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5
CkBAIC05LDEwICs5LDE4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKIGJyb3dz
ZXJfc3BlY2lmaWNfYXJncyA9IHsKLSAgICAiZmlyZWZveCI6IFsiLS1pbnN0YWxsLWJyb3dzZXIi
XSwKICAgICAic2Vydm8iOiBbIi0taW5zdGFsbC1icm93c2VyIiwgIi0tcHJvY2Vzc2VzPTEyIl0K
IH0KIAorZGVmIGdldF9icm93c2VyX2FyZ3MocHJvZHVjdCk6CisgICAgaWYgcHJvZHVjdCA9PSAi
ZmlyZWZveCI6CisgICAgICAgIGxvY2FsX2JpbmFyeSA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5w
YXRoLmpvaW4oIn4iLCAiYnVpbGQiLCAiZmlyZWZveCIsICJmaXJlZm94IikpCisgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGxvY2FsX2JpbmFyeSk6CisgICAgICAgICAgICByZXR1cm4gWyItLWJp
bmFyeT0lcyIgJSBsb2NhbF9iaW5hcnldCisgICAgICAgIHByaW50KCJXQVJOSU5HOiBMb2NhbCBm
aXJlZm94IGJpbmFyeSBub3QgZm91bmQiKQorICAgICAgICByZXR1cm4gWyItLWluc3RhbGwtYnJv
d3NlciJdCisgICAgcmV0dXJuIGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQocHJvZHVjdCwgW10p
CisKIAogZGVmIGZpbmRfd3B0cmVwb3J0KGFyZ3MpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKCkKQEAgLTY2LDcgKzc0LDcgQEAgZGVmIG1haW4ocHJvZHVjdCwgY29tbWl0
X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgICAgICItLW5vLWhlYWRsZXNzIiwKICAgICAgICAgIi0t
dmVyaWZ5LWxvZy1mdWxsIgogICAgIF0KLSAgICB3cHRfYXJncyArPSBicm93c2VyX3NwZWNpZmlj
X2FyZ3MuZ2V0KHByb2R1Y3QsIFtdKQorICAgIHdwdF9hcmdzICs9IGdldF9icm93c2VyX2FyZ3Mo
cHJvZHVjdCkKIAogICAgICMgSGFjayB0byBydW4gc2Vydm8gd2l0aCBvbmUgcHJvY2VzcyBvbmx5
IGZvciB3ZHNwZWMKICAgICBpZiBwcm9kdWN0ID09ICJzZXJ2byIgYW5kICItLXRlc3QtdHlwZT13
ZHNwZWMiIGluIHdwdF9hcmdzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAppbmRl
eCAxMWYzNjdmOTg2Zjk3ZmRiZmU0MGYwOWIyYWU0MTE0ZjI2MzkxNmY3Li43ODVjODJjY2EzOWNk
ZmIxODZmZGEyNDEwM2E1YTZmZDY0OWJlZTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JF
QURNRS5tZApAQCAtNDAsNiArNDAsMTQgQEAgdG9wLWxldmVsIHByb3BlcnRpZXM6CiAqIGBuYW1l
YDogT3B0aW9uYWwgU3RyaW5nLiBOYW1lIHRvIHVzZSBmb3IgdGhlIHRhc2sgb3ZlcnJpZGluZyB0
aGUKICAgcHJvcGVydHkgbmFtZS4gVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBz
dWJzdGl0dXRpb25zCiAgIGRlc2NyaWJlZCBiZWxvdy4KKyogYGRvd25sb2FkLWFydGlmYWN0c2A6
IE9wdGlvbmFsIE9iamVjdC4gQW4gYXJ0aWZhY3QgdG8gZG93bmxvYWQgZnJvbQorICBhIHRhc2sg
dGhhdCB0aGlzIHRhc2sgZGVwZW5kcyBvbi4gVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgorICAtIGB0YXNrYCAtIE5hbWUgb2YgdGhlIHRhc2sgcHJvZHVjaW5nIHRoZSBhcnRpZmFj
dAorICAtIGBnbG9iYCAtIEEgZ2xvYiBwYXR0ZXJuIGZvciB0aGUgZmlsZW5hbWUgb2YgdGhlIGFy
dGlmYWN0CisgIC0gYGRlc3RgIC0gQSBkaXJlY3RvcnkgcmVsdGl2ZSB0byB0aGUgaG9tZSBkaXJl
Y3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UKKyAgICAgICAgICAgICB0aGUgYXJ0aWZhY3QKKyAgLSBg
ZXh0cmFjdGAgLSBPcHRpb25hbC4gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhbiBhcmNo
aXZlIGFydGlmYWN0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbi1wbGFj
ZS4KIAogIyMgVGFzayBFeHBhbnNpb25zCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lz
aW9uLnB5CmluZGV4IDBjOTM1YjkzZjhlZTg3ZjY2ZGFkZWZkZGQzYTExNjE2MGVkOWRkM2YuLmY4
ZjE4NmY3NDRkODA4Mjc5MGE4YzNiZWM4NjU0ZmExNWNhN2YzZTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNp
b24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kZWNpc2lvbi5weQpAQCAtMTk5LDYgKzE5OSw3IEBAIGRlZiBidWlsZF9mdWxs
X2NvbW1hbmQoZXZlbnQsIHRhc2spOgogfi9zdGFydC5zaCBcCiAgICUocmVwb191cmwpcyBcCiAg
ICUoZmV0Y2hfcmVmKXM7CitzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6ZGVhZHNuYWtlcy9w
cGEKICUoaW5zdGFsbF9zdHIpcwogY2Qgd2ViLXBsYXRmb3JtLXRlc3RzOwogLi90b29scy9jaS9y
dW5fdGMucHkgJShvcHRpb25zX3N0cilzIC0tICUodGFza19jbWQpczsKQEAgLTIxMyw3ICsyMTQs
NyBAQCBkZWYgZ2V0X293bmVyKGV2ZW50KToKICAgICByZXR1cm4gIndlYi1wbGF0Zm9ybS10ZXN0
c0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20iCiAKIAotZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50
LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKK2RlZiBjcmVhdGVfdGNfdGFz
ayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywgZW52X2V4dHJhPU5v
bmUpOgogICAgIGNvbW1hbmQgPSBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQsIHRhc2spCiAgICAg
dGFza19pZCA9IHRhc2tjbHVzdGVyLnNsdWdJZCgpCiAgICAgdGFza19kYXRhID0gewpAQCAtMjQw
LDEyICsyNDEsMjQgQEAgZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBf
aWQsIGRlcGVuZHNfb25faWRzKToKICAgICAgICAgICAgICJnaXRodWJfZXZlbnQiOiBqc29uLmR1
bXBzKGV2ZW50KQogICAgICAgICB9CiAgICAgfQorICAgIGlmIGVudl9leHRyYToKKyAgICAgICAg
dGFza19kYXRhWyJwYXlsb2FkIl1bImVudiJdLnVwZGF0ZShlbnZfZXh0cmEpCiAgICAgaWYgZGVw
ZW5kc19vbl9pZHM6CiAgICAgICAgIHRhc2tfZGF0YVsiZGVwZW5kZW5jaWVzIl0gPSBkZXBlbmRz
X29uX2lkcwogICAgICAgICB0YXNrX2RhdGFbInJlcXVpcmVzIl0gPSAiYWxsLWNvbXBsZXRlZCIK
ICAgICByZXR1cm4gdGFza19pZCwgdGFza19kYXRhCiAKIAorZGVmIGdldF9hcnRpZmFjdF9kYXRh
KGFydGlmYWN0LCB0YXNrX2lkX21hcCk6CisgICAgdGFza19pZCwgZGF0YSA9IHRhc2tfaWRfbWFw
W2FydGlmYWN0WyJ0YXNrIl1dCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRhc2siOiB0YXNrX2lk
LAorICAgICAgICAiZ2xvYiI6IGFydGlmYWN0WyJnbG9iIl0sCisgICAgICAgICJkZXN0IjogYXJ0
aWZhY3RbImRlc3QiXSwKKyAgICAgICAgImV4dHJhY3QiOiBhcnRpZmFjdC5nZXQoImV4dHJhY3Qi
LCBGYWxzZSkKKyAgICB9CisKKwogZGVmIGJ1aWxkX3Rhc2tfZ3JhcGgoZXZlbnQsIGFsbF90YXNr
cywgdGFza3MpOgogICAgIHRhc2tfaWRfbWFwID0gT3JkZXJlZERpY3QoKQogICAgIHRhc2tncm91
cF9pZCA9IG9zLmVudmlyb24uZ2V0KCJUQVNLX0lEIiwgdGFza2NsdXN0ZXIuc2x1Z0lkKCkpCkBA
IC0yNTgsNyArMjcxLDE0IEBAIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50LCBhbGxfdGFza3Ms
IHRhc2tzKToKICAgICAgICAgICAgICAgICAgICAgYWRkX3Rhc2soZGVwZW5kc19uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGFza3NbZGVwZW5kc19uYW1lXSkKICAgICAg
ICAgICAgICAgICBkZXBlbmRzX29uX2lkcy5hcHBlbmQodGFza19pZF9tYXBbZGVwZW5kc19uYW1l
XVswXSkKLSAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQs
IHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpCisgICAgICAgIGVudl9leHRyYSA9
IHt9CisgICAgICAgIGlmICJkb3dubG9hZC1hcnRpZmFjdHMiIGluIHRhc2s6CisgICAgICAgICAg
ICBlbnZfZXh0cmFbIlRBU0tfQVJUSUZBQ1RTIl0gPSBqc29uLmR1bXBzKAorICAgICAgICAgICAg
ICAgIFtnZXRfYXJ0aWZhY3RfZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXApCisgICAgICAgICAg
ICAgICAgIGZvciBhcnRpZmFjdCBpbiB0YXNrWyJkb3dubG9hZC1hcnRpZmFjdHMiXV0pCisKKyAg
ICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQsIHRhc2ssIHRh
c2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudl9leHRyYT1lbnZfZXh0cmEpCiAgICAgICAgIHRhc2tfaWRfbWFw
W3Rhc2tfbmFtZV0gPSAodGFza19pZCwgdGFza19kYXRhKQogCiAgICAgZm9yIHRhc2tfbmFtZSwg
dGFzayBpbiBpdGVyaXRlbXModGFza3MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFz
a3MvdGVzdC55bWwKaW5kZXggZTgwZTc5NDIwM2VkY2EzYzhkNWYxOWVhOTgzM2E0Zjc5ZTk3OWYw
OC4uMzE4NDM3YTgwZWMzMjQwNzIxYTE3Y2M2MjUzZjI0MTEwOTAzOGI2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC00LDcgKzQsNyBAQCBjb21wb25l
bnRzOgogICAgIHdvcmtlclR5cGU6IGNpCiAgICAgc2NoZWR1bGVySWQ6IHRhc2tjbHVzdGVyLWdp
dGh1YgogICAgIGRlYWRsaW5lOiAiMjQgaG91cnMiCi0gICAgaW1hZ2U6IGhhcmpnYW0vd2ViLXBs
YXRmb3JtLXRlc3RzOjAuMzQKKyAgICBpbWFnZTogd2VicGxhdGZvcm10ZXN0cy93cHQ6MC4zNwog
ICAgIG1heFJ1blRpbWU6IDcyMDAKICAgICBhcnRpZmFjdHM6CiAgICAgICBwdWJsaWMvcmVzdWx0
czoKQEAgLTgyLDYgKzgyLDExIEBAIGNvbXBvbmVudHM6CiAgIGJyb3dzZXItZmlyZWZveDoKICAg
ICBkZXBlbmRzLW9uOgogICAgICAgLSBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFubmVsfQor
ICAgIGRvd25sb2FkLWFydGlmYWN0czoKKyAgICAgIC0gdGFzazogZG93bmxvYWQtZmlyZWZveC0k
e3ZhcnMuY2hhbm5lbH0KKyAgICAgICAgZ2xvYjogcHVibGljL3Jlc3VsdHMvZmlyZWZveC0ke3Zh
cnMuY2hhbm5lbH0uKgorICAgICAgICBkZXN0OiBidWlsZC8KKyAgICAgICAgZXh0cmFjdDogdHJ1
ZQogCiAgIGJyb3dzZXItd2Via2l0Z3RrX21pbmlicm93c2VyOiB7fQogCkBAIC05OCw4ICsxMDMs
MTUgQEAgY29tcG9uZW50czoKICAgICBlbnY6CiAgICAgICBUT1hFTlY6IHB5MzYKICAgICAgIFBZ
X0NPTE9SUzogMAorCisgIHRveC1weXRob24zODoKKyAgICBlbnY6CisgICAgICBUT1hFTlY6IHB5
MzgKKyAgICAgIFBZX0NPTE9SUzogMAogICAgIGluc3RhbGw6Ci0gICAgICAtIHB5dGhvbjMtcGlw
CisgICAgICAtIHB5dGhvbjMuOAorICAgICAgLSBweXRob24zLjgtZGlzdHV0aWxzCisgICAgICAt
IHB5dGhvbjMuOC1kZXYKIAogICB0ZXN0cy1hZmZlY3RlZDoKICAgICBvcHRpb25zOgpAQCAtMjE4
LDYgKzIzMCw3IEBAIHRhc2tzOgogICAgICAgICAgICAgICAtLQogICAgICAgICAgICAgICAtLWNo
YW5uZWw9JHt2YXJzLmNoYW5uZWx9CiAgICAgICAgICAgICAgIC0tdmVyaWZ5CisgICAgICAgICAg
ICAgIC0tdmVyaWZ5LW5vLWNoYW9zLW1vZGUKIAogICAgICAgICAtIHdwdC0ke3ZhcnMuYnJvd3Nl
cn0tJHt2YXJzLmNoYW5uZWx9LXJlc3VsdHM6CiAgICAgICAgICAgICB1c2U6CkBAIC0yNzIsNyAr
Mjg1LDcgQEAgdGFza3M6CiAgICAgICAgIGRvd25sb2FkLWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9
OgogICAgICAgICAgIHVzZToKICAgICAgICAgICAgIC0gd3B0LWJhc2UKLSAgICAgICAgICBjb21t
YW5kOiAiLi93cHQgaW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5hdGlvbiAvaG9tZS90
ZXN0L2FydGlmYWN0cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSBmaXJlZm94IGJyb3dzZXIi
CisgICAgICAgICAgY29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9hZC1vbmx5IC0tZGVz
dGluYXRpb24gL2hvbWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0g
IC0tcmVuYW1lPWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJvd3NlciIKIAogICAt
IGxpbnQ6CiAgICAgICB1c2U6CkBAIC0zMDYsOSArMzE5LDkgQEAgdGFza3M6CiAgICAgICAgIHJ1
bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMvIHVuaXR0ZXN0
cyAoUHl0aG9uIDMpOgorICAtIHRvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzLjYpOgogICAgICAg
ZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5k
ZXIgUHl0aG9uIDMsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3Ig
dG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42LCBleGNsdWRpbmcgd3B0cnVubmVyCiAgICAg
ICB1c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCkBAIC0zMjAs
NyArMzMzLDIxIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gdG9vbHNf
dW5pdHRlc3QKIAotICAtIHRvb2xzL3dwdC8gdGVzdHM6CisgIC0gdG9vbHMvIHVuaXR0ZXN0cyAo
UHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgVW5pdCB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy44LCBleGNsdWRpbmcgd3B0cnVubmVyCisg
ICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAg
ICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xzX3Vu
aXR0ZXN0LnNoCisgICAgICBlbnY6CisgICAgICAgIEhZUE9USEVTSVNfUFJPRklMRTogY2kKKyAg
ICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0gdG9vbHNfdW5p
dHRlc3QKKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAyKToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNvbW1hbmRzCiAgICAg
ICB1c2U6CkBAIC0zNDIsNiArMzY5LDUwIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAg
ICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24g
My42KToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3Igd3B0IGNvbW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAg
LSB0cmlnZ2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjMKKyAgICAgIGNvbW1hbmQ6IC4vdG9v
bHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMK
KyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3Nl
cjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFu
bmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1
ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRf
aW50ZWdyYXRpb24KKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpOgorICAgICAg
ZGVzY3JpcHRpb246ID4tCisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZvciB3cHQgY29tbWFu
ZHMKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIK
KyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0
LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgIG9wdGlv
bnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3NlcjoKKyAgICAgICAg
ICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFubmVsOiBleHBlcmlt
ZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1ZQorICAgICAgc2No
ZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRfaW50ZWdyYXRpb24K
KwogICAtIHJlc291cmNlcy8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAg
VGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJjZXMvCkBA
IC0zNjIsMTAgKzQzMywxMiBAQCB0YXNrczoKICAgLSBpbmZyYXN0cnVjdHVyZS8gdGVzdHM6CiAg
ICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisg
ICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CiAgICAgICB1c2U6CiAgICAgICAg
IC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCi0gICAgICAgIC0gdG94LXB5dGhvbjIK
KyAgICAgICAgLSBicm93c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCiAgICAgICBpbnN0YWxsOgogICAgICAgICAtIGxp
Ym5zczMtdG9vbHMKQEAgLTM4MiwzICs0NTUsMjggQEAgdGFza3M6CiAgICAgICBzY2hlZHVsZS1p
ZjoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHdwdHJ1bm5lcl9pbmZyYXN0cnVjdHVy
ZQorCisgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMyk6CisgICAgICBkZXNjcmlw
dGlvbjogPi0KKyAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisgICAgICB2YXJzOgor
ICAgICAgICBjaGFubmVsOiBuaWdodGx5CisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UK
KyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3dwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZS5zaCAtLXB5MworICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBw
eXRob24zLXBpcAorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgICAgLSBsaWJhcHBpbmRp
Y2F0b3IxCisgICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgorICAgICAgb3B0aW9uczoKKyAgICAg
ICAgb29tLWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gY2hyb21l
CisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZiOiB0cnVlCisgICAg
ICAgIGhvc3RzOiBmYWxzZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6Cisg
ICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQppbmRleCBiMTcwOTI4YjI5MGEyN2Y3NWVh
ZGE2NjE2MmVhNDA0YTFkYmFlOWY5Li40N2NiYzJlODdiYjgwNTk3ZGQ5ODBlOWY5OGJjNDEzYjA0
MTZiNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3Zh
bGlkLnB5CkBAIC02LDcgKzYsNiBAQCBpbXBvcnQganNvbmUKIGltcG9ydCBtb2NrCiBpbXBvcnQg
cHl0ZXN0CiBpbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKIGltcG9ydCB5YW1sCiBmcm9tIGpz
b25zY2hlbWEgaW1wb3J0IHZhbGlkYXRlCiAKQEAgLTIwLDkgKzE5LDYgQEAgZGVmIGRhdGFfcGF0
aChmaWxlbmFtZSk6CiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihoZXJlLCAiLi4iLCAidGVzdGRh
dGEiLCBmaWxlbmFtZSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mby5t
YWpvciA9PSAyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idGFza2NsdXN0ZXIgbGlicmFy
eSBoYXMgYW4gZW5jb2RpbmcgYnVnICIKLSAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc2tjbHVzdGVyL2pzb24tZS9pc3N1ZXMvMzM4IikKIGRlZiB0ZXN0X3ZlcmlmeV90
YXNrY2x1c3Rlcl95bWwoKToKICAgICAiIiJWZXJpZnkgdGhhdCB0aGUganNvbi1lIGluIHRoZSAu
dGFza2NsdXN0ZXIueW1sIGlzIHZhbGlkIiIiCiAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihy
b290LCAiLnRhc2tjbHVzdGVyLnltbCIpLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CkBAIC00Niwx
MSArNDIsMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAiIiJWZXJpZnkgdGhh
dCB0aGUgZGVjaXNpb24gdGFzayBwcm9kdWNlcyB0YXNrcyB3aXRoIGEgdmFsaWQgcGF5bG9hZCIi
IgogICAgIGZyb20gdG9vbHMuY2kudGMuZGVjaXNpb24gaW1wb3J0IGRlY2lkZQogCi0gICAgY3Jl
YXRlX3Rhc2tfc2NoZW1hID0gcmVxdWVzdHMuZ2V0KAotICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tjbHVzdGVyL2Jsb2IvbWFzdGVyL3Nl
cnZpY2VzL3F1ZXVlL3NjaGVtYXMvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC55bWwiKQotICAgIGNy
ZWF0ZV90YXNrX3NjaGVtYSA9IHlhbWwuc2FmZV9sb2FkKGNyZWF0ZV90YXNrX3NjaGVtYS5jb250
ZW50KQorICAgIHIgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vY29tbXVuaXR5LXRjLnNlcnZpY2Vz
Lm1vemlsbGEuY29tL3NjaGVtYXMvcXVldWUvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC5qc29uIikK
KyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIGNyZWF0ZV90YXNrX3NjaGVtYSA9IHIuanNv
bigpCiAKLSAgICBwYXlsb2FkX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL2RvY2tlci13b3JrZXIvbWFzdGVyL3NjaGVt
YXMvdjEvcGF5bG9hZC5qc29uIikuanNvbigpCisgICAgIyBUT0RPKEhleGNsZXMpOiBDaGFuZ2Ug
aXQgdG8gaHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5jb20vcmVmZXJlbmNl
cy9zY2hlbWFzL2RvY2tlci13b3JrZXIvdjEvcGF5bG9hZC5qc29uCisgICAgIyBhZnRlciB0aGUg
bmV4dCBDb21tdW5pdHktVEMgcmVsZWFzZSAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mzk3MzIpLi4KKyAgICByID0gcmVxdWVzdHMuZ2V0KAorICAg
ICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tj
bHVzdGVyLyIKKyAgICAgICAgIjNlZDUxMWVmOTExOWRhNTRmYzA5M2U5NzZiN2I1OTU1ODc0Yzli
NTQvd29ya2Vycy9kb2NrZXItd29ya2VyL3NjaGVtYXMvdjEvcGF5bG9hZC5qc29uIikKKyAgICBy
LnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIHBheWxvYWRfc2NoZW1hID0gci5qc29uKCkKIAogICAg
IGpvYnMgPSBbImxpbnQiLAogICAgICAgICAgICAgIm1hbmlmZXN0X3VwbG9hZCIsCkBAIC0xMjcs
MTIgKzEyOSwxNyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ3dwdC1jaHJv
bWUtZGV2LWNyYXNodGVzdC0xJywKICAgICAgICdsaW50J30pLAogICAgICgicHJfZXZlbnQuanNv
biIsIFRydWUsIHsiLnRhc2tjbHVzdGVyLnltbCIsIi50cmF2aXMueW1sIiwidG9vbHMvY2kvc3Rh
cnQuc2gifSwKLSAgICAgeydsaW50JywKKyAgICAgeydkb3dubG9hZC1maXJlZm94LW5pZ2h0bHkn
LAorICAgICAgJ2xpbnQnLAogICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAyKScsCi0g
ICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpJywKLSAgICAgICd0b29scy93cHQvIHRl
c3RzJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KScsCisgICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5
dGhvbiAyKScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMuNiknLAorICAgICAg
J3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpJywKICAgICAgICdyZXNvdXJjZXMvIHRlc3Rz
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnfSksCisgICAgICAnaW5mcmFzdHJ1Y3R1
cmUvIHRlc3RzJywKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKSd9KSwK
ICAgICAjIE1vcmUgdGVzdHMgYXJlIGFmZmVjdGVkIGluIHRoZSBhY3R1YWwgUFIgYnV0IGl0IHNo
b3VsZG4ndCBhZmZlY3QgdGhlIHNjaGVkdWxlZCB0YXNrcwogICAgICgicHJfZXZlbnRfdGVzdHNf
YWZmZWN0ZWQuanNvbiIsIFRydWUsIHsibGF5b3V0LWluc3RhYmlsaXR5L2NsaXAtbmVnYXRpdmUt
Ym90dG9tLW1hcmdpbi5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxheW91dC1pbnN0YWJpbGl0eS9jb21wb3NpdGVkLWVsZW1lbnQtbW92ZW1lbnQu
aHRtbCJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQppbmRl
eCA5NGY3OTk4NzcwY2Y1ZDhiYWQzNmQxODhkZDYzZTI1M2Y5ODE5OWE4Li5hYTEyNzM4MjA0ZjM2
NTJlMmRmOTY0NDQ0NjkzNjhlMGU2MjYxOTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3Rlc3Rfam9icy5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVmIHRlc3RfYnVpbGRf
Y3NzKCk6CiAKIAogZGVmIHRlc3RfdXBkYXRlX2J1aWx0KCk6Ci0gICAgYXNzZXJ0IGpvYnMuZ2V0
X2pvYnMoWyIyZGNvbnRleHQvZm9vLmh0bWwiXSwKKyAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
Imh0bWwvY2FudmFzL2VsZW1lbnQvZm9vLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9CiAgICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQotICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsib2Zmc2NyZWVuLWNhbnZhcy9mb28uaHRtbCJdLAorICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvb2Zmc2NyZWVuL2Zvby5odG1sIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0g
eyJ1cGRhdGVfYnVpbHQifQogCiAKQEAgLTEzNCwzICsxMzQsNyBAQCBkZWYgdGVzdF93cHRfaW5m
cmFzdHJ1Y3R1cmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CiAg
ICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJpbmZyYXN0cnVjdHVyZS9hc3N1bXB0aW9ucy9haGVt
Lmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl9p
bmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CisKK2RlZiB0
ZXN0X3dkc3BlY19zdXBwb3J0KCk6CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ3ZWJkcml2
ZXIvdGVzdHMvc3VwcG9ydC9fX2luaXRfXy5weSJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0
X3ByX3ByZXZpZXcucHkKaW5kZXggNjM0ODJmYjE4NGM3ZjE0ZGIwZWJkNDVjMTg3OTRlM2E5Nzcx
YzkwYi4uMmQ5OTY2ZmM4Y2Y0MTg3OTEzYWRjZTg2MDllZTc1MGFkZTFiOTc5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiBjbGFz
cyBSZXF1ZXN0cyhvYmplY3QpOgogICAgIGdldF9yYXRlID0gKCdHRVQnLCAnL3JhdGVfbGltaXQn
LCB7fSkKICAgICBzZWFyY2ggPSAoJ0dFVCcsICcvc2VhcmNoL2lzc3VlcycsIHt9KQorICAgIHBy
X2RldGFpbHMgPSAoJ0dFVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL3B1bGxzLzIzJywg
e30pCiAgICAgcmVmX2NyZWF0ZV9vcGVuID0gKAogICAgICAgICAnUE9TVCcsICcvcmVwb3MvdGVz
dC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidyZWZzL3Bycy1vcGVuLzIzJ30KICAg
ICApCkBAIC0zNzYsNiArMzc3LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19jb2xsYWJv
cmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQp
LAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMu
c2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7CkBAIC0zOTEsNiArMzkz
LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29sbGFib3JhdG9yKCk6CiAgICAgICAg
ICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAg
ICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8n
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3Qt
cmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgy
MDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwge30pKSwKQEAgLTQ1
Miw2ICs0NjMsNDEgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250
cmlidXRvcigpOgogICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKICAgICBhc3NlcnQgc2FtZV9t
ZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCitkZWYgdGVzdF9zeW5j
aHJvbml6ZV9pZ25vcmVfcHVsbF9yZXF1ZXN0X2Zyb21fZm9yaygpOgorICAgIGV4cGVjdGVkX3Ry
YWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0
KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAg
ICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnbGFiZWxzJzogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6ICdncmFjZSd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFU
T1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzog
eworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICdzb21lLW90aGVyLW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAorICAgIF0KKworICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisKKyAg
ICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKwogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190
cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLApAQCAtNDU5LDEyICs1MDUs
MTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAog
ICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdpdGVtcyc6
IFsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJl
cic6IDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBjb250cmli
dXRvciAodW50cnVzdGVkKSwgYnV0IHRoZSBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAg
IyBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xh
YmVscyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIn
OiB7J2xvZ2luJzogJ0hleGNsZXMnfSwKQEAgLTQ3NCw2ICs1MjMsNjAgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgICAgICAgICAgICAgJ2lu
Y29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAg
ICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgyMDAsIHt9KSksCisg
ICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCisgICAgICAg
IChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCisgICAgXQorCisgICAgcmV0dXJuY29kZSwg
YWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZp
YykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgc2FtZV9tZW1iZXJz
KGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQorCitkZWYgdGVzdF9zeW5jaHJvbml6
ZV9zeW5jX2JvdF93aXRoX2xhYmVsKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5n
ZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRl
LCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAgICAgICAgMjAwLAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9ybWFsbHkgbm90
IG1pcnJvcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlzc3VlIGhhcyBi
ZWVuIGxhYmVsbGVkIGFzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1
bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0
cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFk
JzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAg
ICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmRl
cGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLApAQCAtNDkyLDYgKzU5NSw3IEBAIGRlZiB0ZXN0X3N5
bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTUwNiw2ICs2MTAsMTUgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAgICAgICAgICdpbmNvbXBs
ZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAgICAgICAg
KFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkp
LAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCiAgICAgICAg
IChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCkBAIC01MjgsNiArNjQxLDcgQEAgZGVm
IHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgyMDAsCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAtNTQyLDYgKzY1NiwxNSBAQCBkZWYgdGVzdF9z
eW5jaHJvbml6ZV91cGRhdGVfbWVtYmVyKCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVf
cmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVx
dWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAn
aGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAg
ICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW3snc29tZSc6ICdkZXBsb3lt
ZW50J31dKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSks
CiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
ZG9ja2VyL0RvY2tlcmZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCmluZGV4IDBhODQyZGUxYWI4NTdkMWY2NTVi
OTM2NWRmNjFmM2ZhOTc4ZTMxYmUuLmYzOTI3ZmQwZDcxY2NmMjkyZDk2OTlkNTk3YTQ3OTk0NWE4
ZTUxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQpAQCAtMjUsNiAr
MjUsOCBAQCBSVU4gYXB0LWdldCAtcXF5IHVwZGF0ZSBcCiAgICAgcHVsc2VhdWRpbyBcCiAgICAg
cHl0aG9uIFwKICAgICBweXRob24tcGlwIFwKKyAgICBweXRob24zIFwKKyAgICBweXRob24zLXBp
cCBcCiAgICAgcWVtdS1rdm0gXAogICAgIHR6ZGF0YSBcCiAgICAgc3VkbyBcCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9SRUFETUUubWQKaW5kZXggNDUwOTgxZjY4NmJmYWNlMmQ5MjQzZTU2Mjgw
NDBiYjZiMmY2YzRlMC4uOTM0MmFkZWQyOThiZGQwZTVkYWFjMTIyODljNzgxNjNkMWQ1YmVjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZApAQCAtMSwxMCArMSwxOCBAQAog
VGhpcyBkb2NrZXIgaW1hZ2VzIGlzIHVzZWQgZm9yIHRlc3RpbmcgQ2hyb21lLCBGaXJlZm94LCBX
ZWJLaXRHVEsgYW5kIHJ1bm5pbmcKIG90aGVyIHRhc2tzIG9uIFRhc2tjbHVzdGVyLiBXaGVuIGFu
eSBvZiB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2hhbmdlLCB0aGUKLWltYWdlcyBtdXN0
IGJlIHVwZGF0ZWQgYXMgd2VsbC4gVG8gZG8gdGhpcywgYXNzdW1pbmcgeW91IGhhdmUgZG9ja2Vy
IGluc3RhbGxlZDoKK2ltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4gRG9pbmcgdGhpcyBy
ZXF1aXJlcyB5b3UgYmUgcGFydCBvZiB0aGUKKyd3ZWJwbGF0Zm9ybXRlc3RzJyBvcmdhbml6YXRp
b24gb24gRG9ja2VyIEh1YjsgcGluZyBASGV4Y2xlcyBvciBAc3RlcGhlbm1jZ3J1ZXIKK2lmIHlv
dSBhcmUgbm90IGEgbWVtYmVyLgorCitJbiB0aGlzIGRpcmVjdG9yeSwgcnVuIHRoZSBmb2xsb3dp
bmcsIHdoZXJlIGA8dGFnPmAgaXMgb2YgdGhlIGZvcm0KK2B3ZWJwbGF0Zm9ybXRlc3RzL3dwdDp7
Y3VycmVudC12ZXJzaW9uICsgMC4wMX1gOgogCi1JbiB0aGlzIGRpcmVjdG9yeSwgcnVuCiBgYGBz
aAotZG9ja2VyIGJ1aWxkIC10IDx0YWc+IC4KKyMgLS1wdWxsIGZvcmNlcyBEb2NrZXIgdG8gZ2V0
IHRoZSBuZXdlc3QgYmFzZSBpbWFnZS4KK2RvY2tlciBidWlsZCAtLXB1bGwgLXQgPHRhZz4gLgog
ZG9ja2VyIHB1c2ggPHRhZz4KIGBgYAogCitUaGVuIHVwZGF0ZSB0aGUgZm9sbG93aW5nIFRhc2tj
bHVzdGVyIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSB0aGUgbmV3IGltYWdlOgorKiBgLnRhc2tjbHVz
dGVyLnltbGAgKHRoZSBkZWNpc2lvbiB0YXNrKQorKiBgdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55
bWxgIChhbGwgdGhlIG90aGVyIHRhc2tzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQppbmRleCA5NzYxNTZjZjY1YTAwODIxYTExYTMzNTEzMDFiNDdjMTA3OGM4NDE2Li41
OWExY2ZmMmViZDBlZmRhMDZmYWRkMTQ0YTg0YjVkMzViMmQ4MWM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtOCw2ICs4LDcgQEAgd3B0X3Jvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIGRl
ZiBidWlsZCgqYXJncywgKiprd2FyZ3MpOgogICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbImRv
Y2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tcHVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS10
YWciLCAid3B0OmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVdKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CmluZGV4IDYxMjZiNzgxYmZhZGQxNWU4MmI4
YTNhM2I5NDk0MDUwOTM5ZWFiNmMuLjVjOGU2ZDc5YzMwMzhkZGZmNDk2ODhkNGYxZmM3ZTdmMjk0
YWQwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CkBAIC0yMSwyMyArMjEs
MjggQEAgZGVmIGl0ZXJfcmFuZ2Uobik6CiAgICAgICAgIGkgKz0gMQogCiAKK2RlZiBsb2codmFs
dWUpOgorICAgIHByaW50KHZhbHVlKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKIGRlZiBt
YWluKCk6CiAgICAgYXJncyA9IGdldF9hcmdzKCkucGFyc2VfYXJncygpCiAKICAgICBpZiBub3Qg
YXJncy5jbWQ6Ci0gICAgICAgIHByaW50KCJObyBjb21tYW5kIHN1cHBsaWVkIikKKyAgICAgICAg
bG9nKCJObyBjb21tYW5kIHN1cHBsaWVkIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIHJl
dGNvZGUgPSBOb25lCiAKICAgICBmb3IgbiBpbiBpdGVyX3JhbmdlKGFyZ3MuY291bnQpOgogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCgiUnVubmluZyAlcyBbdHJ5ICVkLyVkXSIgJSAo
IiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCisgICAgICAgICAgICBsb2co
IlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0iICUgKCIgIi5qb2luKGFyZ3MuY21kKSwgKG4rMSksIGFy
Z3MuY291bnQpKQogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGFyZ3MuY21kKQog
ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAg
ICAgICAgIHJldGNvZGUgPSBlLnJldHVybmNvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHByaW50KCJDb21tYW5kIHN1Y2NlZWRlZCIpCisgICAgICAgICAgICBsb2coIkNvbW1hbmQgc3Vj
Y2VlZGVkIikKICAgICAgICAgICAgIHJldGNvZGUgPSAwCiAgICAgICAgICAgICBicmVhawogCkBA
IC00NiwxMCArNTEsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHdhaXRfdGltZSA9IGFyZ3MuZmFjdG9yKipuICogYXJncy5kZWxheQogICAgICAgICBpZiBuIDwg
YXJncy5jb3VudCAtIDE6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIHdhaXRp
bmcgJXMgc2Vjb25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCisgICAgICAgICAgICBsb2coIkNv
bW1hbmQgZmFpbGVkLCB3YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUgd2FpdF90aW1lKQog
ICAgICAgICAgICAgdGltZS5zbGVlcCh3YWl0X3RpbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKKyAgICAgICAgICAg
IGxvZygiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKIAogICAgIHN5cy5leGl0KHJl
dGNvZGUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpp
bmRleCBkNWVhNGE2YThmM2Q2NGQ0YWJhM2I4ZGNiZTVmZmU4NDliNzRlOTY5Li4wZjNkOTQ1MGQx
MjM0NDljMGRjYzNmZjNjMDRjYTg2YzgxYjI0YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CkBAIC0yNjksNyArMjY5LDcgQEAgY2xhc3MgUGF0aEZp
bHRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmQo
aXRlbSkKIAogICAgICAgICAgICAgZGlybmFtZXNbOl0gPSBrZWVwX2RpcnMKLSAgICAgICAgICAg
IGFzc2VydCAiLmdpdCIgbm90IGluIGRpcm5hbWVzCisgICAgICAgICAgICBhc3NlcnQgbm90IGFu
eSgiLmdpdCIgPT0gbmFtZSBmb3IgbmFtZSwgXyBpbiBkaXJuYW1lcykKICAgICAgICAgICAgIHlp
ZWxkIG9yaWdfZGlycGF0aCwgZGlybmFtZXMsIGtlZXBfZmlsZXMKIAogICAgIGRlZiBfX2NhbGxf
XyhzZWxmLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQppbmRleCBhMDUwY2ZhOGE4ZTRlMjY5
OWRiNDRjZTllNTJmOGYyMzBhMzRhODY5Li5mYzFhODE2ZjhhYmY4NWVmY2UzMWEzYThlNjE0YmE1
OTFiNjAwOTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpAQCAtMjAsNyArMjAsNyBA
QCBmcm9tIC4uZ2l0aWdub3JlLmdpdGlnbm9yZSBpbXBvcnQgUGF0aEZpbHRlcgogZnJvbSAuLndw
dCBpbXBvcnQgdGVzdGZpbGVzCiBmcm9tIC4ubWFuaWZlc3QudmNzIGltcG9ydCB3YWxrCiAKLWZy
b20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBw
eXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlfdmFyaWFudHMsIGdldF9kZWZhdWx0
X2FueV92YXJpYW50cworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZp
bGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92YXJp
YW50cwogZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMs
IHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIGZyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KQEAgLTQxLDcgKzQxLDEy
IEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVW5pb24KIAotICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQorICAgICMgVGhlIElnbm9yZWxpc3QgaXMgYSB0d28gbGV2ZWwg
ZGljdGlvbmFyeS4gVGhlIHRvcCBsZXZlbCBpcyBpbmRleGVkIGJ5CisgICAgIyBlcnJvciBuYW1l
cyAoZS5nLiAnVFJBSUxJTkcgV0hJVEVTUEFDRScpLiBFYWNoIG9mIHRob3NlIHRoZW4gaGFzIGEg
bWFwIG9mCisgICAgIyBmaWxlIHBhdHRlcm5zIChlLmcuICdmb28vKicpIHRvIGEgc2V0IG9mIHNw
ZWNpZmljIGxpbmUgbnVtYmVycyBmb3IgdGhlCisgICAgIyBleGNlcHRpb24uIFRoZSBsaW5lIG51
bWJlcnMgYXJlIG9wdGlvbmFsOyBpZiBtaXNzaW5nIHRoZSBlbnRpcmUgZmlsZQorICAgICMgaWdu
b3JlcyB0aGUgZXJyb3IuCisgICAgSWdub3JlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQogCiAKIGxvZ2dlciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxb
bG9nZ2luZy5Mb2dnZXJdCkBAIC03NSwxMiArODAsMTIgQEAgRVJST1JfTVNHID0gIiIiWW91IG11
c3QgZml4IGFsbCBlcnJvcnM7IGZvciBkZXRhaWxzIG9uIGhvdyB0byBmaXggdGhlbSwgc2VlCiBo
dHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9saW50LXRvb2wuaHRt
bAogCiBIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIgZXJyb3IsIGl0J3Mg
c29tZXRpbWVzCi1PSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlIGlu
IHRoZSByb290IG9mIHRoZQorT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC5pZ25vcmUgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUKIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFr
ZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KIAogRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxp
bnQgdG9vbCBpZ25vcmUgYWxsICclcycKIGVycm9ycyBpbiB0aGUgJXMgZmlsZSwKLXlvdSBjb3Vs
ZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgoreW91
IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQuaWdub3JlIGZpbGUuCiAK
ICVzOiAlcyIiIgogCkBAIC0zMTgsMTQgKzMyMyw1MiBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5
X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICByZXR1cm4gZXJyb3JzCiAKIAotZGVmIHBh
cnNlX3doaXRlbGlzdChmKToKLSAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+IFR1cGxlW1doaXRl
bGlzdCwgU2V0W1RleHRdXQorZGVmIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZXMo
cmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0cl0pIC0+IExpc3Rb
cnVsZXMuRXJyb3JdCisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgYWxsIHRlc3RoYXJuZXNzIGZp
bGVzIGhhdmUgdW5pcXVlIGJhc2VuYW1lIHBhdGhzLgorCisgICAgVGhlICdiYXNlbmFtZSBwYXRo
JyByZWZlcnMgdG8gdGhlIGVudGlyZSBwYXRoIGV4Y2x1ZGluZyB0aGUgZXh0ZW5zaW9uLiBGb3IK
KyAgICBleGFtcGxlLCAnZm9vL2Jhci9iYXouaHRtbCcgYW5kICdmb28vYmFyL2Jhei54aHRtbCcg
aGF2ZSB0aGUgc2FtZSBiYXNlbmFtZQorICAgIHBhdGgsIGJ1dCAnZm9vL2Jhci9iYXouaHRtbCcg
YW5kICdmb28vcXV4L2Jhei5odG1sJyBkbyBub3QuCisKKyAgICBUZXN0aGFybmVzcyBmaWxlcyB3
aXRoIGlkZW50aWNhbCBiYXNlbmFtZXMgaGF2ZSBjYXVzZWQgaXNzdWVzIGluIGRvd25zdHJlYW0K
KyAgICBpbmZyYXN0cnVjdHVyZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0L2lzc3Vlcy83NTcwKSwKKyAgICBhbmQgbWF5IGNhdXNlIGNvbmZ1c2lvbiBpbiBn
ZW5lcmFsLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAg
IDpwYXJhbSBwYXRoczogbGlzdCBvZiBhbGwgcGF0aHMKKyAgICA6cmV0dXJuczogYSBsaXN0IG9m
IGVycm9ycyBmb3VuZCBpbiBgYHBhdGhzYGAKKyAgICAiIiIKKworICAgIGVycm9ycyA9IFtdCisg
ICAgZmlsZV9kaWN0ID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3IgcGF0aCBpbiBwYXRoczoK
KyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQor
ICAgICAgICBpZiBzb3VyY2VfZmlsZS50eXBlICE9ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBmaWxlX25hbWUsIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5z
cGxpdGV4dChwYXRoKQorICAgICAgICBmaWxlX2RpY3RbZmlsZV9uYW1lXS5hcHBlbmQoZmlsZV9l
eHRlbnNpb24pCisgICAgZm9yIGssIHYgaW4gZmlsZV9kaWN0Lml0ZW1zKCk6CisgICAgICAgIGlm
IGxlbih2KSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY29udGV4dCA9ICgn
LCAnLmpvaW4odiksKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHY6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKHJ1bGVzLkR1cGxpY2F0ZUJhc2VuYW1lUGF0aC5lcnJvcihrICsgZXh0ZW5z
aW9uLCBjb250ZXh0KSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIHBhcnNlX2lnbm9yZWxp
c3QoZik6CisgICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtJZ25vcmVsaXN0LCBTZXRb
VGV4dF1dCiAgICAgIiIiCi0gICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxlIGdpdmVuIGJ5IGBm
YCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICBQYXJzZSB0aGUgaWdub3Jl
bGlzdCBmaWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4K
KworICAgIDpyZXR1cm5zOiBhIHR1cGxlIG9mIGFuIElnbm9yZWxpc3QgYW5kIGEgc2V0IG9mIGZp
bGVzIHRoYXQgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgc2tpcHBlZCBieSB0aGUgbGlu
dGVyIChpLmUuIGhhdmUgYSAnKicgZW50cnkpLgogICAgICIiIgogCi0gICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBXaGl0ZWxpc3QKLSAgICBp
Z25vcmVkX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBJZ25vcmVsaXN0CisgICAg
c2tpcHBlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgZm9yIGxpbmUg
aW4gZjoKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQpAQCAtMzQ0LDM3ICszODcsMzcgQEAg
ZGVmIHBhcnNlX3doaXRlbGlzdChmKToKICAgICAgICAgZmlsZV9tYXRjaCA9IG9zLnBhdGgubm9y
bWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3JfdHlwZXM6Ci0gICAg
ICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQorICAgICAgICAgICAgc2tpcHBl
ZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBl
cnJvcl90eXBlIGluIGVycm9yX3R5cGVzOgogICAgICAgICAgICAgICAgIGRhdGFbZXJyb3JfdHlw
ZV1bZmlsZV9tYXRjaF0uYWRkKGxpbmVfbnVtYmVyKQogCi0gICAgcmV0dXJuIGRhdGEsIGlnbm9y
ZWRfZmlsZXMKKyAgICByZXR1cm4gZGF0YSwgc2tpcHBlZF9maWxlcwogCiAKLWRlZiBmaWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgotICAgICMgdHlwZTogKFdoaXRlbGlzdCwg
U2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorZGVmIGZpbHRlcl9p
Z25vcmVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgorICAgICMgdHlwZTogKElnbm9yZWxpc3Qs
IFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KICAgICAiIiIKLSAg
ICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBpbiBgZGF0YWAu
CisgICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgaWdub3JlZCBpbiBgZGF0YWAu
CiAgICAgIiIiCiAKICAgICBpZiBub3QgZXJyb3JzOgogICAgICAgICByZXR1cm4gW10KIAotICAg
IHdoaXRlbGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KKyAg
ICBza2lwcGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KIAogICAg
IGZvciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVtZXJhdGUoZXJyb3Jz
KToKICAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgpCi0gICAgICAgICMg
QWxsb3cgd2hpdGVsaXN0aW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhlIElHTk9SRUQgUEFU
SCBsaW50LAotICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXggaXQgY29ycmVjdGx5
IGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZC4KKyAgICAgICAgIyBBbGxvdyBza2lwcGluZyBhbGwg
bGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVEIFBBVEggbGludCwKKyAgICAgICAgIyB3aGlj
aCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJlY3RseSBhbmQgc2hvdWxkbid0IGJlIHNraXBw
ZWQuCiAgICAgICAgIGlmIGVycm9yX3R5cGUgaW4gZGF0YSBhbmQgZXJyb3JfdHlwZSAhPSAiSUdO
T1JFRCBQQVRIIjoKICAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJvcl90eXBlXQogICAg
ICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRlcml0ZW1zKHdsX2Zp
bGVzKToKICAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGluZXMgb3IgbGluZSBp
biBhbGxvd2VkX2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hj
YXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRl
bGlzdGVkW2ldID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtpXSA9IFRy
dWUKIAotICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoZXJyb3JzKSBp
ZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisgICAgcmV0dXJuIFtpdGVtIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShlcnJvcnMpIGlmIG5vdCBza2lwcGVkW2ldXQogCiAKIHJlZ2V4cHMgPSBbaXRlbSgp
IGZvciBpdGVtIGluICAjIHR5cGU6IGlnbm9yZQpAQCAtMzkwLDcgKzQzMywxMCBAQCByZWdleHBz
ID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgICAgIHJ1bGVz
LlByaW50UmVnZXhwLAogICAgICAgICAgICAgcnVsZXMuTGF5b3V0VGVzdHNSZWdleHAsCiAgICAg
ICAgICAgICBydWxlcy5NaXNzaW5nRGVwc1JlZ2V4cCwKLSAgICAgICAgICAgIHJ1bGVzLlNwZWNp
YWxQb3dlcnNSZWdleHBdXQorICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBvd2Vyc1JlZ2V4cCwK
KyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFRocm93c1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVz
LlByb21pc2VSZWplY3RzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNzZXJ0UHJlY29uZGl0
aW9uUmVnZXhwXV0KIAogCiBkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19yb290LCBwYXRoLCBm
KToKQEAgLTQyMSw2ICs0NjcsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CiAKICAgICAgICAgaWYgKHNvdXJjZV9maWxlLnR5cGUgIT0gInN1cHBvcnQiIGFuZAogICAg
ICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFuZAorICAgICAgICAg
ICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfdGVudGF0aXZlIGFuZAogICAgICAgICAgICAgbm90
IHNvdXJjZV9maWxlLnNwZWNfbGlua3MpOgogICAgICAgICAgICAgcmV0dXJuIFtydWxlcy5NaXNz
aW5nTGluay5lcnJvcihwYXRoKV0KIApAQCAtNTg0LDcgKzYzMSw4IEBAIGFzdF9jaGVja2VycyA9
IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYgY2hlY2tfcHl0aG9u
X2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICMgdHlwZTogKHN0ciwgc3RyLCBJT1tieXRl
c10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCi0gICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5weSIp
OgorICAgICMgKi5xdWljLnB5IGFyZSBQeXRob24gMyBvbmx5IGFuZCBjYW5ub3QgYmUgcGFyc2Vk
IGJ5IFB5dGhvbiAyLgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBwYXRoLmVu
ZHN3aXRoKCIucXVpYy5weSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAgIHRyeToKQEAgLTYw
NSwzMCArNjUzLDEyIEBAIGJyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxlKGJyIiNc
cypNRVRBOiIpCiAKIGRlZiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUpOgogICAgICMgdHlw
ZTogKHN0cikgLT4gSXRlcmFibGVbVHVwbGVbVHlwZVtydWxlcy5SdWxlXSwgVHVwbGVbQW55LCAu
Li5dXV0KLSAgICBnbG9iYWxfdmFsdWVzID0ge2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9Ci0KLSAgICBpbmNsdWRlZF92YXJpYW50cyA9
IHNldC51bmlvbihnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKGdldF9hbnlfdmFyaWFudHModikgZm9yIHYgaW4gZ2xvYmFsX3Zh
bHVlcyBpZiBub3Qgdi5zdGFydHN3aXRoKGIiISIpKSkKKyAgICBnbG9iYWxfdmFsdWVzID0ge2l0
ZW0uc3RyaXAoKS5kZWNvZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiB2YWx1ZS5zcGxpdChiIiwiKSBp
ZiBpdGVtLnN0cmlwKCl9CiAKKyAgICAjIFRPRE86IHRoaXMgY291bGQgY2hlY2sgZm9yIGR1cGxp
Y2F0ZXMgYW5kIHN1Y2gKICAgICBmb3IgZ2xvYmFsX3ZhbHVlIGluIGdsb2JhbF92YWx1ZXM6Ci0g
ICAgICAgIGlmIGdsb2JhbF92YWx1ZS5zdGFydHN3aXRoKGIiISIpOgotICAgICAgICAgICAgZXhj
bHVkZWRfdmFsdWUgPSBnbG9iYWxfdmFsdWVbMTpdCi0gICAgICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhleGNsdWRlZF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVz
LlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCi0KLSAgICAgICAgICAgIGVsaWYgZXhjbHVkZWRf
dmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuQnJv
a2VuR2xvYmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICgoIkNhbm5vdCBzcGVj
aWZ5IGJvdGggJXMgYW5kICVzIiAlIChnbG9iYWxfdmFsdWUsIGV4Y2x1ZGVkX3ZhbHVlKSksKSkK
LQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGNsdWRlZF92YXJpYW50cyA9
IGdldF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgbm90
IChleGNsdWRlZF92YXJpYW50cyAmIGluY2x1ZGVkX3ZhcmlhbnRzKToKLSAgICAgICAgICAgICAg
ICAgICAgeWllbGQgKHJ1bGVzLkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90IGluY2x1ZGVkIiAl
IChleGNsdWRlZF92YWx1ZSwpKSwpKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBu
b3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgotICAgICAgICAgICAgICAgIHlpZWxk
IChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQorICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgorICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25v
d25HbG9iYWxNZXRhZGF0YSwgKCkpCiAKIAogZGVmIGNoZWNrX3NjcmlwdF9tZXRhZGF0YShyZXBv
X3Jvb3QsIHBhdGgsIGYpOgpAQCAtNjU3LDEzICs2ODcsNyBAQCBkZWYgY2hlY2tfc2NyaXB0X21l
dGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CiAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0g
YiJsb25nIjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3du
VGltZW91dE1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25vPWlkeCArIDEp
KQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiAoYiJ0
aXRsZSIsIGIic2NyaXB0IiwgYiJ2YXJpYW50IiwgYiJxdWljIik6CiAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3duTWV0YWRhdGEuZXJyb3IocGF0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25v
PWlkeCArIDEpKQogICAgICAgICBlbHNlOgpAQCAtODI1LDcgKzg0OSw3IEBAIGRlZiBsaW50X3Bh
dGhzKGt3YXJncywgd3B0X3Jvb3QpOgogICAgICAgICBmb3JjZV9hbGwgPSBGYWxzZQogICAgICAg
ICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhzOgogICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVw
bGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICAgICAgaWYgcGF0aCA9PSAibGludC53aGl0
ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKKyAgICAgICAgICAgIGlm
IHBhdGggPT0gImxpbnQuaWdub3JlIiBvciBwYXRoLnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6
CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFr
CiAgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90IGZvcmNlX2FsbCAg
IyB0eXBlOiBpZ25vcmUKQEAgLTg0Myw3ICs4NjcsNyBAQCBkZWYgY3JlYXRlX3BhcnNlcigpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNP
TiBmb3JtYXQiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249
InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtk
b3duIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBX
UFQgZGlyZWN0b3J5LiBVc2UgdGhpcyIKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8t
cm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAib3B0aW9uIGlmIHRoZSBsaW50IHNjcmlwdCBleGlzdHMgb3V0c2lkZSB0aGUg
cmVwb3NpdG9yeSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtZ2xvYiIsIGhl
bHA9IkFkZGl0aW9uYWwgZmlsZSBnbG9iIHRvIGlnbm9yZS4iKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYgbm8gcGF0aHMgYXJl
IHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKQEAgLTg3OSwxMSArOTAzLDExIEBAIGRl
ZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigp
KToKICAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGludCkgICMgdHlwZTogRGljdFtUZXh0
LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVw
b19yb290LCAibGludC53aGl0ZWxpc3QiKSkgYXMgZjoKLSAgICAgICAgd2hpdGVsaXN0LCBpZ25v
cmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0KGYpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bihyZXBvX3Jvb3QsICJsaW50Lmlnbm9yZSIpKSBhcyBmOgorICAgICAgICBpZ25vcmVsaXN0LCBz
a2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChmKQogCiAgICAgaWYgaWdub3JlX2dsb2I6
Ci0gICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQorICAgICAgICBza2lwcGVk
X2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKIAogICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24iOiBv
dXRwdXRfZXJyb3JzX2pzb24sCiAgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBvdXRw
dXRfZXJyb3JzX21hcmtkb3duLApAQCAtODk5LDcgKzkyMyw3IEBAIGRlZiBsaW50KHJlcG9fcm9v
dCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigpKToKICAgICAgICAgICAg
ICAgICAgIGEgdHVwbGUgb2YgdGhlIGVycm9yIHR5cGUgYW5kIHRoZSBwYXRoIG90aGVyd2lzZQog
ICAgICAgICAiIiIKIAotICAgICAgICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIGVycm9ycykKKyAgICAgICAgZXJyb3JzID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJy
b3JzKGlnbm9yZWxpc3QsIGVycm9ycykKIAogICAgICAgICBpZiBub3QgZXJyb3JzOgogICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKQEAgLTkxNiw3ICs5NDAsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAgICAgICAgICAgICBw
YXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgYW55
KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBpZ25v
cmVkX2ZpbGVzKToKKyAgICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21h
dGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBza2lwcGVkX2ZpbGVzKToKICAgICAgICAgICAgIHBhdGhz
LnJlbW92ZShwYXRoKQogICAgICAgICAgICAgY29udGludWUKIApAQCAtOTQyLDcgKzk2Niw3IEBA
IGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0
cigpKToKIAogcGF0aF9saW50cyA9IFtjaGVja19maWxlX3R5cGUsIGNoZWNrX3BhdGhfbGVuZ3Ro
LCBjaGVja193b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHksCiAgICAgICAgICAgICAg
IGNoZWNrX2dpdGlnbm9yZV9maWxlXQotYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNrX2Nzc19nbG9i
YWxseV91bmlxdWVdCithbGxfcGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1
ZSwgY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lc10KIGZpbGVfbGludHMgPSBbY2hl
Y2tfcmVnZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2Ny
aXB0X21ldGFkYXRhLAogICAgICAgICAgICAgICBjaGVja19haGVtX3N5c3RlbV9mb250XQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKaW5kZXggZmFhMjg1ZmQ3Y2RiY2M0MDZmOGMwMmFi
MDNlZDZiZWIzNmViMGJlZi4uNjk1ZjZjZDRlNTMyOGNhZjJmMDg1YTExNWQzMWE5YzBiNGFlMjcx
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpAQCAtMzIyLDYgKzMyMiwxNSBAQCBj
bGFzcyBUZXN0aGFybmVzc0luT3RoZXJUeXBlKFJ1bGUpOgogICAgIGRlc2NyaXB0aW9uID0gInRl
c3RoYXJuZXNzLmpzIGluY2x1ZGVkIGluIGEgJXMgdGVzdCIKIAogCitjbGFzcyBEdXBsaWNhdGVC
YXNlbmFtZVBhdGgoUnVsZSk6CisgICAgbmFtZSA9ICJEVVBMSUNBVEUtQkFTRU5BTUUtUEFUSCIK
KyAgICBkZXNjcmlwdGlvbiA9IGNvbGxhcHNlKCIiIgorICAgICAgICAgICAgRmlsZSBoYXMgaWRl
bnRpY2FsIGJhc2VuYW1lIHBhdGggKHBhdGggZXhjbHVkaW5nIGV4dGVuc2lvbikgYXMKKyAgICAg
ICAgICAgIG90aGVyIGZpbGUocykgKGZvdW5kIGV4dGVuc2lvbnM6ICVzKQorICAgICIiIikKKyAg
ICB0b19maXggPSAicmVuYW1lIGZpbGVzIHNvIHRoZXkgaGF2ZSB1bmlxdWUgYmFzZW5hbWUgcGF0
aHMiCisKKwogY2xhc3MgUmVnZXhwKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkpOgog
ICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgIGRlZiBwYXR0ZXJuKHNlbGYpOgpAQCAtNDYy
LDMgKzQ3MSwyNyBAQCBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAoUmVnZXhwKToKICAg
ICBkZXNjcmlwdGlvbiA9ICJXaGl0ZXNwYWNlIGF0IEVPTCIKICAgICBwYXR0ZXJuID0gYiJbIFx0
XGZcdl0kIgogICAgIHRvX2ZpeCA9ICIiIlJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20g
YWxsIGxpbmVzIGluIHRoZSBmaWxlLiIiIgorCisKK2NsYXNzIEFzc2VydFRocm93c1JlZ2V4cChS
ZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJbXi5dYXNzZXJ0X3Rocm93c1woIgorICAgIG5hbWUg
PSAiQVNTRVJUX1RIUk9XUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlRl
c3QtZmlsZSBsaW5lIGhhcyBhbiBgYXNzZXJ0X3Rocm93cyguLi4pYCBjYWxsIgorICAgIHRvX2Zp
eCA9ICIiIlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X3Rocm93c19kb21gIG9yIGBhc3NlcnRfdGhyb3dz
X2pzYCBvciBgYXNzZXJ0X3Rocm93c19leGFjdGx5YCIiIgorCisKK2NsYXNzIFByb21pc2VSZWpl
Y3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyInByb21pc2VfcmVqZWN0c1woIgor
ICAgIG5hbWUgPSAiUFJPTUlTRV9SRUpFQ1RTIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0
bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3Jp
cHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGEgYHByb21pc2VfcmVqZWN0cyguLi4pYCBjYWxs
IgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBwcm9taXNlX3JlamVjdHNfZG9tIG9yIHBy
b21pc2VfcmVqZWN0c19qcyBvciBgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHlgIiIiCisKKworY2xh
c3MgQXNzZXJ0UHJlY29uZGl0aW9uUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyIlte
Ll1hc3NlcnRfcHJlY29uZGl0aW9uXCgiCisgICAgbmFtZSA9ICJBU1NFUlQtUFJFQ09ORElUSU9O
IgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIs
ICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFz
IGFuIGBhc3NlcnRfcHJlY29uZGl0aW9uKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVw
bGFjZSB3aXRoIGBhc3NlcnRfaW1wbGVtZW50c2Agb3IgYGFzc2VydF9pbXBsZW1lbnRzX29wdGlv
bmFsYCIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xp
bnQuaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEw
ZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKQEAgLTAsMCAr
MSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53
aGl0ZWxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEwZmZkZDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQu
d2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKjpicm9rZW5faWdub3JlZC5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMS9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1ZTU4NTNk
ZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2Eu
aHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1NWRhYjZhNzdjYjI4MTAzY2MxNThmZjBmOWNjZGU5NmI1
MjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuanMKQEAgLTAs
MCArMSw2IEBACisvLyBUaGlzIGlzIGEgZHVtbXkgSmF2YVNjcmlwdCBmaWxlLCBtZWFudCB0byBp
bmRpY2F0ZSBhICdzdXBwb3J0JyBmaWxlIG9mCisvLyBzb3J0cyB0aGF0IG1heSBiZSBpbmNsdWRl
ZCBieSBzb21lIHRlc3QuCisKK2Z1bmN0aW9uIGhlbGxvV29ybGQoKSB7CisgIHJldHVybiAnSGVs
bG8sIHdvcmxkISc7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGI0Y2MyZTUyMjNh
ODYyNTVlZmI1MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjEvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1
ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2IuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjI5OTFkOWJl
NmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi9hLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4NjI1NWVmYjUzMWE0
ZDVhNDQzMGY5NTFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9h
LnhodG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNjY5ZTY1M2JmYzIzN2I2
Mzc4ZjNhZTllZTY2NzUwYzU1MGJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0
cy9kaXIyL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS90ZXN0cy9kaXIyL2EueGh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwppbmRleCA0NjA1NmU2NzEzZmQzMTNkZmUyNGIx
Yjg4MmMyODM4OWNiZWNmYzljLi5mMzRkMTY3MzBmNzAwNGY3NGQyMzRjOWNjYWRiMmMwZWNlZDJi
NTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3czYy1pbXBvcnQubG9nCkBAIC0xOCw1ICsxOCw1IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Jyb2tlbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvZGVwZW5kZW5jeS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2xpbnQuaWdub3JlCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
ZmlsZV9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKaW5kZXggMDhjMDliNmIwOTUw
YjJjZjU0OGMzYjVlNDE1MzAzNTk3ZGQ4YzY1NC4uN2RhY2ZhZDYzODBkYzhiNjY4YTIyZGM3YzRm
ZTJlNzRkMzc1NDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC02MzMsNiArNjMzLDggQEAgZGVmIHRlc3RfbGF0ZV90
aW1lb3V0KCk6CiAgICAgICAgICAgICBdCiAKIAorIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBwcmludCAqc3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCisj
ICAgICAgIFRoZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5j
dGlvbiBiZWxvdy4KIEBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3Qg
cGFyc2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKIGRlZiB0ZXN0X3ByaW50X3N0
YXRlbWVudCgpOgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6
XG4gIHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQpAQCAtNzk0LDYgKzc5NiwyMCBAQCBk
ZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgogICAgIF0KIAogCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX3RlbnRhdGl2ZSgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisKKyAgICAjIFRoZSB0
ZW50YXRpdmUgZmxhZyBjb3ZlcnMgdGVzdHMgdGhhdCBtYWtlIGFzc2VydGlvbnMgJ25vdCB5ZXQg
cmVxdWlyZWQgYnkKKyAgICAjIGFueSBzcGVjaWZpY2F0aW9uJywgc28gdGhleSBuZWVkIG5vdCBo
YXZlIGEgc3BlY2lmaWNhdGlvbiBsaW5rLgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci50ZW50YXRpdmUuaHRtbCIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgIGFzc2VydCBub3QgZXJyb3JzCisKKwogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaWxl
bmFtZSIsIFsKICAgICAiZm9vLndvcmtlci5qcyIsCiAgICAgImZvby5hbnkuanMiLApAQCAtODQy
LDE3ICs4NTgsMTcgQEAgZGVmIHRlc3Rfc2NyaXB0X21ldGFkYXRhKGZpbGVuYW1lLCBpbnB1dCwg
ZXJyb3IpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdsb2JhbHMsZXJyb3IiLCBbCiAg
ICAgKGIiIiwgTm9uZSksCi0gICAgKGIiZGVmYXVsdCIsIE5vbmUpLAotICAgIChiIiFkZWZhdWx0
IiwgTm9uZSksCisgICAgKGIiZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAor
ICAgIChiIiFkZWZhdWx0IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiAgICAgKGIid2lu
ZG93IiwgTm9uZSksCi0gICAgKGIiIXdpbmRvdyIsIE5vbmUpLAotICAgIChiIiFkZWRpY2F0ZWR3
b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiQlJPS0VOLUdMT0JBTC1N
RVRBREFUQSIpLAotICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1HTE9CQUwtTUVUQURB
VEEiKSwKLSAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIsICJCUk9LRU4tR0xP
QkFMLU1FVEFEQVRBIiksCi0gICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29ya2VyIiwgTm9uZSks
Ci0gICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsIE5vbmUpLAotICAgIChiIiF3b3JrZXIi
LCBOb25lKSwKKyAgICAoYiIhd2luZG93IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisg
ICAgKGIiIWRlZGljYXRlZHdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAg
IChiIndpbmRvdywgIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChi
IiFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIic2Vy
dmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwK
KyAgICAoYiJ3b3JrZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURB
VEEiKSwKKyAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIiIXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAog
ICAgIChiImZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAgIChiIiFmb28iLCAi
VU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKIF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCBhZjJiN2QzZDRhYTE5ZjBjMWQ3MmE1NTc1YjUw
MTNjNzg5N2UxZGM0Li4xMGQ5NzI4YjQwNTc1MWJkYjI4ZGI1ZTAxOTMxNjJlYzdmNmRmNDg2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTgs
NyArOCw3IEBAIGltcG9ydCBzaXgKIAogZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9ydCByZXBvX3Jv
b3QKIGZyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKLWZyb20gLi5saW50IGltcG9ydCBm
aWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBjcmVhdGVfcGFy
c2VyCitmcm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzLCBwYXJzZV9p
Z25vcmVsaXN0LCBsaW50LCBjcmVhdGVfcGFyc2VyCiAKIF9kdW1teV9yZXBvID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkdW1teSIpCiAKQEAgLTE3LDggKzE3LDgg
QEAgZGVmIF9tb2NrX2xpbnQobmFtZSwgKiprd2FyZ3MpOgogICAgIHJldHVybiBtb2NrLnBhdGNo
KGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9d3JhcHBlZCwgKiprd2FyZ3Mp
CiAKIAotZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoKToKLSAgICB3aGl0ZWxpc3Qg
PSB7CitkZWYgdGVzdF9maWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoKToKKyAgICBpZ25vcmVsaXN0
ID0gewogICAgICAgICAnQ09OU09MRSc6IHsKICAgICAgICAgICAgICdzdmcvKic6IHsxMn0KICAg
ICAgICAgfSwKQEAgLTI2LDM0ICsyNiwzNCBAQCBkZWYgdGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vy
cm9ycygpOgogICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFsaXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRj
aCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIHdoaXRlbGlzdCA9IHtlOiB7b3Mu
cGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9Ci0gICAgICAgICAgICAg
ICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5pdGVtcygpfQotICAgICMgcGF0aHMgcGFzc2VkIGlu
dG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMgYXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgIyBw
YXJzZV9pZ25vcmVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUgbWF0Y2ggc3Ry
aW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAgICBpZ25vcmVsaXN0ID0ge2U6IHtvcy5wYXRo
Lm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAg
Zm9yIGUsIHAgaW4gaWdub3JlbGlzdC5pdGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQogICAgIGZpbHRl
cmVkZmlsZSA9ICdzdmcvdGVzdC5odG1sJwogICAgIHVuZmlsdGVyZWRmaWxlID0gJ2h0bWwvdGVz
dC5odG1sJwogICAgICMgVGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGZpbHRlcmVkID0g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVs
aXN0LCBbXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVs
aXN0LCBbXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KICAgICAjIFRlc3RzIGZvciBmaWx0
ZXJpbmcgb24gZmlsZSBhbmQgbGluZSBudW1iZXIKLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEy
XV0pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwg
W1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVk
ID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3Qs
IFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgZmlsdGVyZWQgPSBm
aWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snQ09OU09MRScsICcnLCB1bmZp
bHRlcmVkZmlsZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCB1bmZpbHRlcmVkZmlsZSwgMTJdXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAg
ICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydDT05T
T0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1sn
Q09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0KICAgICAjIFRlc3RzIGZvciBmaWx0ZXJp
bmcgb24ganVzdCBmaWxlCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBm
aWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQg
VEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtd
Ci0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lO
REVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRl
cl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0
ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycs
IHVuZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3Rf
ZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAx
MV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRl
cmVkZmlsZSwgMTFdXQogCiAKLWRlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgpOgorZGVmIHRlc3Rf
cGFyc2VfaWdub3JlbGlzdCgpOgogICAgIGlucHV0X2J1ZmZlciA9IHNpeC5TdHJpbmdJTygiIiIK
ICMgQ29tbWVudAogQ1IgQVQgRU9MOiBzdmcvaW1wb3J0LyoKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IENSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCiAgICAgfQogICAgIGV4
cGVjdGVkX2RhdGEgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5p
dGVtcygpfQogICAgICAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5p
dGVtcygpfQotICAgIGV4cGVjdGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3Ig
eCBpbiB7IioucGRmIiwgInJlc291cmNlcy8qIiwgIioucG5nIn19Ci0gICAgZGF0YSwgaWdub3Jl
ZCA9IHBhcnNlX3doaXRlbGlzdChpbnB1dF9idWZmZXIpCisgICAgZXhwZWN0ZWRfc2tpcHBlZCA9
IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVzb3VyY2VzLyoiLCAi
Ki5wbmcifX0KKyAgICBkYXRhLCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChpbnB1
dF9idWZmZXIpCiAgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQotICAgIGFzc2VydCBp
Z25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKyAgICBhc3NlcnQgc2tpcHBlZF9maWxlcyA9PSBl
eHBlY3RlZF9za2lwcGVkCiAKIAogZGVmIHRlc3RfbGludF9ub19maWxlcyhjYXBsb2cpOgpAQCAt
Mzk4LDYgKzM5OCw2NSBAQCBkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9y
ZWRfZGlyKGNhcGxvZyk6CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCiAKIAorZGVmIHRl
c3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lX3NhbWVfYmFzZW5hbWUoY2FwbG9n
KToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHRlc3RoYXJuZXNzIGZpbGVzIHdpdGgg
Y29uZmxpY3RpbmcgYmFzZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikg
YXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmls
ZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAg
cnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEv
YS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBiZSBvbmUgZmFp
bHVyZSBmb3IgZWFjaCBmaWxlLgorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAg
ICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBh
c3NlcnQgIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfbmFtZShjYXBs
b2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3RoYXJuZXNzIGZpbGVz
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoCisgICAgIyBkaWZmZXJlbnQgbmFtZXMuCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYi5odG1sJykpCisKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVzdHMvZGly
MS9hLmh0bWwiLCAidGVzdHMvZGlyMS9iLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfZGlyKGNhcGxv
Zyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0d28gdGVzdGhhcm5lc3MgZmlsZXMg
aW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzCisgICAgIyB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lLgor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIyJywgJ2EueGh0bWwnKSkKKworICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tf
ZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0
cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIyL2EueGh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAg
ICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRo
LmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisK
K2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9ub3RfdGVzdGhhcm5l
c3MoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIG5vbi10ZXN0aGFybmVz
cyBmaWxlcyB3aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAgIGFzc2VydCBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2Eu
aHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3Jl
cG8sICd0ZXN0cycsICdkaXIxJywgJ2EuanMnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0
ZXN0cy9kaXIxL2EuanMiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKIGRlZiB0ZXN0X2lnbm9yZV9nbG9i
KGNhcGxvZyk6CiAgICAgIyBMaW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBkaXJlY3RvcnksIGFu
ZCBwYXNzIGluIGlnbm9yZV9nbG9iIHRvIG9taXQgb25lCiAgICAgIyBvZiB0aGVtLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
b2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IGY2ZTI0YjQ4NmQ1OGI3ODhiOTQ0MTE3NWM1ZTFj
ODlmOTM4NzRmZWIuLmNlM2I0MWUzMDBjOWYxMTM4MGVhMDY1ZjViMjg4ZDVhZWY4MTI1ODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbG9jYWxwYXRocy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKQEAgLTYsNyArNiw3IEBAIHJlcG9fcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyKSkKIAogc3lzLnBh
dGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgIndwdHNlcnZlIikpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKGhlcmUsICJweXdlYnNvY2tldCIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl3ZWJzb2NrZXQzIikpCiBzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJhdG9taWN3cml0ZXMiKSkKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImF0dHJz
IiwgInNyYyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRf
cGFydHkiLCAiZnVuY3NpZ3MiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDQzMDdiMWMyYzQzMzJiMjk0OTk5YTVmYTMxM2E2YTI4
ZWVjNTdmZjYuLjgwNDIzNDgwYmM1OTc1NDI2OTEwMTBhNTBjYTJjMTZmOTQ1YTcwODQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZApAQCAt
MSwyMTI1ICsxLDIxMjUgQEAKLTwhRU5USVRZIFRhYiAiJiN4OTsiPgotPCFFTlRJVFkgTmV3TGlu
ZSAiJiN4QTsiPgotPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KLTwhRU5USVRZIHF1b3QgIiYjeDIy
OyI+Ci08IUVOVElUWSBRVU9UICImI3gyMjsiPgotPCFFTlRJVFkgbnVtICImI3gyMzsiPgotPCFF
TlRJVFkgZG9sbGFyICImI3gyNDsiPgotPCFFTlRJVFkgcGVyY250ICImI3gyNTsiPgotPCFFTlRJ
VFkgYW1wICImI3gyNjsjeDI2OyI+Ci08IUVOVElUWSBBTVAgIiYjeDI2OyN4MjY7Ij4KLTwhRU5U
SVRZIGFwb3MgIiYjeDI3OyI+Ci08IUVOVElUWSBscGFyICImI3gyODsiPgotPCFFTlRJVFkgcnBh
ciAiJiN4Mjk7Ij4KLTwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZIG1pZGFzdCAiJiN4
MkE7Ij4KLTwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Ci08IUVOVElUWSBjb21tYSAiJiN4MkM7Ij4K
LTwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KLTwhRU5USVRZIHNvbCAiJiN4MkY7Ij4KLTwhRU5U
SVRZIGNvbG9uICImI3gzQTsiPgotPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij4KLTwhRU5USVRZIGx0
ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiPgotPCFFTlRJVFkgbnZs
dCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBlcXVhbHMgIiYjeDNEOyI+Ci08IUVO
VElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGd0ICImI3gzRTsiPgotPCFFTlRJ
VFkgR1QgIiYjeDNFOyI+Ci08IUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQyOyI+Ci08IUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ij4KLTwhRU5USVRZIGNvbW1hdCAiJiN4NDA7Ij4KLTwhRU5USVRZIGxz
cWIgIiYjeDVCOyI+Ci08IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Ci08IUVOVElUWSBic29sICIm
I3g1QzsiPgotPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KLTwhRU5USVRZIHJicmFjayAiJiN4NUQ7
Ij4KLTwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KLTwhRU5USVRZIGxvd2JhciAiJiN4NUY7Ij4KLTwh
RU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgotPCFFTlRJVFkgZ3JhdmUgIiYjeDYwOyI+Ci08IUVO
VElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgotPCFFTlRJVFkgZmpsaWcgIiYjeDY2OyYj
eDZBOyI+Ci08IUVOVElUWSBsY3ViICImI3g3QjsiPgotPCFFTlRJVFkgbGJyYWNlICImI3g3Qjsi
PgotPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgotPCFFTlRJVFkgdmVydCAiJiN4N0M7Ij4KLTwh
RU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KLTwhRU5USVRZIHJjdWIgIiYjeDdEOyI+Ci08
IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Ci08IUVOVElUWSBuYnNwICImI3hBMDsiPgotPCFFTlRJ
VFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KLTwhRU5USVRZIGlleGNsICImI3hBMTsiPgot
PCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KLTwhRU5USVRZIHBvdW5kICImI3hBMzsiPgotPCFFTlRJ
VFkgY3VycmVuICImI3hBNDsiPgotPCFFTlRJVFkgeWVuICImI3hBNTsiPgotPCFFTlRJVFkgYnJ2
YmFyICImI3hBNjsiPgotPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KLTwhRU5USVRZIERvdCAiJiN4
QTg7Ij4KLTwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KLTwhRU5USVRZIERvdWJsZURvdCAiJiN4QTg7
Ij4KLTwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KLTwhRU5USVRZIGNvcHkgIiYjeEE5OyI+Ci08IUVO
VElUWSBDT1BZICImI3hBOTsiPgotPCFFTlRJVFkgb3JkZiAiJiN4QUE7Ij4KLTwhRU5USVRZIGxh
cXVvICImI3hBQjsiPgotPCFFTlRJVFkgbm90ICImI3hBQzsiPgotPCFFTlRJVFkgc2h5ICImI3hB
RDsiPgotPCFFTlRJVFkgcmVnICImI3hBRTsiPgotPCFFTlRJVFkgY2lyY2xlZFIgIiYjeEFFOyI+
Ci08IUVOVElUWSBSRUcgIiYjeEFFOyI+Ci08IUVOVElUWSBtYWNyICImI3hBRjsiPgotPCFFTlRJ
VFkgc3RybnMgIiYjeEFGOyI+Ci08IUVOVElUWSBkZWcgIiYjeEIwOyI+Ci08IUVOVElUWSBwbHVz
bW4gIiYjeEIxOyI+Ci08IUVOVElUWSBwbSAiJiN4QjE7Ij4KLTwhRU5USVRZIFBsdXNNaW51cyAi
JiN4QjE7Ij4KLTwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Ci08IUVOVElUWSBzdXAzICImI3hCMzsi
PgotPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICIm
I3hCNDsiPgotPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Ci08IUVOVElUWSBwYXJhICImI3hCNjsi
PgotPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VudGVyZG90ICImI3hCNzsi
PgotPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VkaWwgIiYjeEI4OyI+
Ci08IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgotPCFFTlRJVFkgc3VwMSAiJiN4Qjk7Ij4KLTwh
RU5USVRZIG9yZG0gIiYjeEJBOyI+Ci08IUVOVElUWSByYXF1byAiJiN4QkI7Ij4KLTwhRU5USVRZ
IGZyYWMxNCAiJiN4QkM7Ij4KLTwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij4KLTwhRU5USVRZIGhh
bGYgIiYjeEJEOyI+Ci08IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Ci08IUVOVElUWSBpcXVlc3Qg
IiYjeEJGOyI+Ci08IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Ci08IUVOVElUWSBBYWN1dGUgIiYj
eEMxOyI+Ci08IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KLTwhRU5USVRZIEF0aWxkZSAiJiN4QzM7
Ij4KLTwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Ci08IUVOVElUWSBBcmluZyAiJiN4QzU7Ij4KLTwh
RU5USVRZIGFuZ3N0ICImI3hDNTsiPgotPCFFTlRJVFkgQUVsaWcgIiYjeEM2OyI+Ci08IUVOVElU
WSBDY2VkaWwgIiYjeEM3OyI+Ci08IUVOVElUWSBFZ3JhdmUgIiYjeEM4OyI+Ci08IUVOVElUWSBF
YWN1dGUgIiYjeEM5OyI+Ci08IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4KLTwhRU5USVRZIEV1bWwg
IiYjeENCOyI+Ci08IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Ci08IUVOVElUWSBJYWN1dGUgIiYj
eENEOyI+Ci08IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KLTwhRU5USVRZIEl1bWwgIiYjeENGOyI+
Ci08IUVOVElUWSBFVEggIiYjeEQwOyI+Ci08IUVOVElUWSBOdGlsZGUgIiYjeEQxOyI+Ci08IUVO
VElUWSBPZ3JhdmUgIiYjeEQyOyI+Ci08IUVOVElUWSBPYWN1dGUgIiYjeEQzOyI+Ci08IUVOVElU
WSBPY2lyYyAiJiN4RDQ7Ij4KLTwhRU5USVRZIE90aWxkZSAiJiN4RDU7Ij4KLTwhRU5USVRZIE91
bWwgIiYjeEQ2OyI+Ci08IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KLTwhRU5USVRZIE9zbGFzaCAi
JiN4RDg7Ij4KLTwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KLTwhRU5USVRZIFVhY3V0ZSAiJiN4
REE7Ij4KLTwhRU5USVRZIFVjaXJjICImI3hEQjsiPgotPCFFTlRJVFkgVXVtbCAiJiN4REM7Ij4K
LTwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KLTwhRU5USVRZIFRIT1JOICImI3hERTsiPgotPCFF
TlRJVFkgc3psaWcgIiYjeERGOyI+Ci08IUVOVElUWSBhZ3JhdmUgIiYjeEUwOyI+Ci08IUVOVElU
WSBhYWN1dGUgIiYjeEUxOyI+Ci08IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij4KLTwhRU5USVRZIGF0
aWxkZSAiJiN4RTM7Ij4KLTwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Ci08IUVOVElUWSBhcmluZyAi
JiN4RTU7Ij4KLTwhRU5USVRZIGFlbGlnICImI3hFNjsiPgotPCFFTlRJVFkgY2NlZGlsICImI3hF
NzsiPgotPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgotPCFFTlRJVFkgZWFjdXRlICImI3hFOTsi
PgotPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Ci08IUVOVElUWSBldW1sICImI3hFQjsiPgotPCFF
TlRJVFkgaWdyYXZlICImI3hFQzsiPgotPCFFTlRJVFkgaWFjdXRlICImI3hFRDsiPgotPCFFTlRJ
VFkgaWNpcmMgIiYjeEVFOyI+Ci08IUVOVElUWSBpdW1sICImI3hFRjsiPgotPCFFTlRJVFkgZXRo
ICImI3hGMDsiPgotPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgotPCFFTlRJVFkgb2dyYXZlICIm
I3hGMjsiPgotPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgotPCFFTlRJVFkgb2NpcmMgIiYjeEY0
OyI+Ci08IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Ci08IUVOVElUWSBvdW1sICImI3hGNjsiPgot
PCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgotPCFFTlRJVFkgZGl2ICImI3hGNzsiPgotPCFFTlRJ
VFkgb3NsYXNoICImI3hGODsiPgotPCFFTlRJVFkgdWdyYXZlICImI3hGOTsiPgotPCFFTlRJVFkg
dWFjdXRlICImI3hGQTsiPgotPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+Ci08IUVOVElUWSB1dW1s
ICImI3hGQzsiPgotPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgotPCFFTlRJVFkgdGhvcm4gIiYj
eEZFOyI+Ci08IUVOVElUWSB5dW1sICImI3hGRjsiPgotPCFFTlRJVFkgQW1hY3IgIiYjeDEwMDsi
PgotPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgotPCFFTlRJVFkgQWJyZXZlICImI3gxMDI7Ij4K
LTwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Ci08IUVOVElUWSBBb2dvbiAiJiN4MTA0OyI+Ci08
IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Ci08IUVOVElUWSBDYWN1dGUgIiYjeDEwNjsiPgotPCFF
TlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KLTwhRU5USVRZIENjaXJjICImI3gxMDg7Ij4KLTwhRU5U
SVRZIGNjaXJjICImI3gxMDk7Ij4KLTwhRU5USVRZIENkb3QgIiYjeDEwQTsiPgotPCFFTlRJVFkg
Y2RvdCAiJiN4MTBCOyI+Ci08IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiPgotPCFFTlRJVFkgY2Nh
cm9uICImI3gxMEQ7Ij4KLTwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+Ci08IUVOVElUWSBkY2Fy
b24gIiYjeDEwRjsiPgotPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4KLTwhRU5USVRZIGRzdHJv
ayAiJiN4MTExOyI+Ci08IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Ci08IUVOVElUWSBlbWFjciAi
JiN4MTEzOyI+Ci08IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KLTwhRU5USVRZIGVkb3QgIiYjeDEx
NzsiPgotPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgotPCFFTlRJVFkgZW9nb24gIiYjeDExOTsi
PgotPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KLTwhRU5USVRZIGVjYXJvbiAiJiN4MTFCOyI+
Ci08IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Ci08IUVOVElUWSBnY2lyYyAiJiN4MTFEOyI+Ci08
IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgotPCFFTlRJVFkgZ2JyZXZlICImI3gxMUY7Ij4KLTwh
RU5USVRZIEdkb3QgIiYjeDEyMDsiPgotPCFFTlRJVFkgZ2RvdCAiJiN4MTIxOyI+Ci08IUVOVElU
WSBHY2VkaWwgIiYjeDEyMjsiPgotPCFFTlRJVFkgSGNpcmMgIiYjeDEyNDsiPgotPCFFTlRJVFkg
aGNpcmMgIiYjeDEyNTsiPgotPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij4KLTwhRU5USVRZIGhz
dHJvayAiJiN4MTI3OyI+Ci08IUVOVElUWSBJdGlsZGUgIiYjeDEyODsiPgotPCFFTlRJVFkgaXRp
bGRlICImI3gxMjk7Ij4KLTwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4KLTwhRU5USVRZIGltYWNy
ICImI3gxMkI7Ij4KLTwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KLTwhRU5USVRZIGlvZ29uICIm
I3gxMkY7Ij4KLTwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgotPCFFTlRJVFkgaW1hdGggIiYjeDEz
MTsiPgotPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KLTwhRU5USVRZIElKbGlnICImI3gxMzI7
Ij4KLTwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KLTwhRU5USVRZIEpjaXJjICImI3gxMzQ7Ij4K
LTwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KLTwhRU5USVRZIEtjZWRpbCAiJiN4MTM2OyI+Ci08
IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgotPCFFTlRJVFkga2dyZWVuICImI3gxMzg7Ij4KLTwh
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Ci08IUVOVElUWSBsYWN1dGUgIiYjeDEzQTsiPgotPCFF
TlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KLTwhRU5USVRZIGxjZWRpbCAiJiN4MTNDOyI+Ci08IUVO
VElUWSBMY2Fyb24gIiYjeDEzRDsiPgotPCFFTlRJVFkgbGNhcm9uICImI3gxM0U7Ij4KLTwhRU5U
SVRZIExtaWRvdCAiJiN4MTNGOyI+Ci08IUVOVElUWSBsbWlkb3QgIiYjeDE0MDsiPgotPCFFTlRJ
VFkgTHN0cm9rICImI3gxNDE7Ij4KLTwhRU5USVRZIGxzdHJvayAiJiN4MTQyOyI+Ci08IUVOVElU
WSBOYWN1dGUgIiYjeDE0MzsiPgotPCFFTlRJVFkgbmFjdXRlICImI3gxNDQ7Ij4KLTwhRU5USVRZ
IE5jZWRpbCAiJiN4MTQ1OyI+Ci08IUVOVElUWSBuY2VkaWwgIiYjeDE0NjsiPgotPCFFTlRJVFkg
TmNhcm9uICImI3gxNDc7Ij4KLTwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI+Ci08IUVOVElUWSBu
YXBvcyAiJiN4MTQ5OyI+Ci08IUVOVElUWSBFTkcgIiYjeDE0QTsiPgotPCFFTlRJVFkgZW5nICIm
I3gxNEI7Ij4KLTwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KLTwhRU5USVRZIG9tYWNyICImI3gx
NEQ7Ij4KLTwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Ci08IUVOVElUWSBvZGJsYWMgIiYjeDE1
MTsiPgotPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgotPCFFTlRJVFkgb2VsaWcgIiYjeDE1Mzsi
PgotPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KLTwhRU5USVRZIHJhY3V0ZSAiJiN4MTU1OyI+
Ci08IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgotPCFFTlRJVFkgcmNlZGlsICImI3gxNTc7Ij4K
LTwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Ci08IUVOVElUWSByY2Fyb24gIiYjeDE1OTsiPgot
PCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KLTwhRU5USVRZIHNhY3V0ZSAiJiN4MTVCOyI+Ci08
IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Ci08IUVOVElUWSBzY2lyYyAiJiN4MTVEOyI+Ci08IUVO
VElUWSBTY2VkaWwgIiYjeDE1RTsiPgotPCFFTlRJVFkgc2NlZGlsICImI3gxNUY7Ij4KLTwhRU5U
SVRZIFNjYXJvbiAiJiN4MTYwOyI+Ci08IUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiPgotPCFFTlRJ
VFkgVGNlZGlsICImI3gxNjI7Ij4KLTwhRU5USVRZIHRjZWRpbCAiJiN4MTYzOyI+Ci08IUVOVElU
WSBUY2Fyb24gIiYjeDE2NDsiPgotPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7Ij4KLTwhRU5USVRZ
IFRzdHJvayAiJiN4MTY2OyI+Ci08IUVOVElUWSB0c3Ryb2sgIiYjeDE2NzsiPgotPCFFTlRJVFkg
VXRpbGRlICImI3gxNjg7Ij4KLTwhRU5USVRZIHV0aWxkZSAiJiN4MTY5OyI+Ci08IUVOVElUWSBV
bWFjciAiJiN4MTZBOyI+Ci08IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+Ci08IUVOVElUWSBVYnJl
dmUgIiYjeDE2QzsiPgotPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4KLTwhRU5USVRZIFVyaW5n
ICImI3gxNkU7Ij4KLTwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KLTwhRU5USVRZIFVkYmxhYyAi
JiN4MTcwOyI+Ci08IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgotPCFFTlRJVFkgVW9nb24gIiYj
eDE3MjsiPgotPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgotPCFFTlRJVFkgV2NpcmMgIiYjeDE3
NDsiPgotPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgotPCFFTlRJVFkgWWNpcmMgIiYjeDE3Njsi
PgotPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgotPCFFTlRJVFkgWXVtbCAiJiN4MTc4OyI+Ci08
IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgotPCFFTlRJVFkgemFjdXRlICImI3gxN0E7Ij4KLTwh
RU5USVRZIFpkb3QgIiYjeDE3QjsiPgotPCFFTlRJVFkgemRvdCAiJiN4MTdDOyI+Ci08IUVOVElU
WSBaY2Fyb24gIiYjeDE3RDsiPgotPCFFTlRJVFkgemNhcm9uICImI3gxN0U7Ij4KLTwhRU5USVRZ
IGZub2YgIiYjeDE5MjsiPgotPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPgotPCFFTlRJVFkgZ2Fj
dXRlICImI3gxRjU7Ij4KLTwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4KLTwhRU5USVRZIGNpcmMg
IiYjeDJDNjsiPgotPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgotPCFFTlRJVFkgSGFjZWsgIiYj
eDJDNzsiPgotPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkgQnJldmUgIiYjeDJE
ODsiPgotPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsRG90ICIm
I3gyRDk7Ij4KLTwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgotPCFFTlRJVFkgb2dvbiAiJiN4MkRC
OyI+Ci08IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbFRpbGRl
ICImI3gyREM7Ij4KLTwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KLTwhRU5USVRZIERpYWNyaXRp
Y2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgotPCFFTlRJVFkgRG93bkJyZXZlICImI3gzMTE7Ij4K
LTwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KLTwhRU5USVRZIEJldGEgIiYjeDM5MjsiPgotPCFF
TlRJVFkgR2FtbWEgIiYjeDM5MzsiPgotPCFFTlRJVFkgRGVsdGEgIiYjeDM5NDsiPgotPCFFTlRJ
VFkgRXBzaWxvbiAiJiN4Mzk1OyI+Ci08IUVOVElUWSBaZXRhICImI3gzOTY7Ij4KLTwhRU5USVRZ
IEV0YSAiJiN4Mzk3OyI+Ci08IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+Ci08IUVOVElUWSBJb3Rh
ICImI3gzOTk7Ij4KLTwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KLTwhRU5USVRZIExhbWJkYSAi
JiN4MzlCOyI+Ci08IUVOVElUWSBNdSAiJiN4MzlDOyI+Ci08IUVOVElUWSBOdSAiJiN4MzlEOyI+
Ci08IUVOVElUWSBYaSAiJiN4MzlFOyI+Ci08IUVOVElUWSBPbWljcm9uICImI3gzOUY7Ij4KLTwh
RU5USVRZIFBpICImI3gzQTA7Ij4KLTwhRU5USVRZIFJobyAiJiN4M0ExOyI+Ci08IUVOVElUWSBT
aWdtYSAiJiN4M0EzOyI+Ci08IUVOVElUWSBUYXUgIiYjeDNBNDsiPgotPCFFTlRJVFkgVXBzaWxv
biAiJiN4M0E1OyI+Ci08IUVOVElUWSBQaGkgIiYjeDNBNjsiPgotPCFFTlRJVFkgQ2hpICImI3gz
QTc7Ij4KLTwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Ci08IUVOVElUWSBPbWVnYSAiJiN4M0E5OyI+
Ci08IUVOVElUWSBvaG0gIiYjeDNBOTsiPgotPCFFTlRJVFkgYWxwaGEgIiYjeDNCMTsiPgotPCFF
TlRJVFkgYmV0YSAiJiN4M0IyOyI+Ci08IUVOVElUWSBnYW1tYSAiJiN4M0IzOyI+Ci08IUVOVElU
WSBkZWx0YSAiJiN4M0I0OyI+Ci08IUVOVElUWSBlcHNpICImI3gzQjU7Ij4KLTwhRU5USVRZIGVw
c2lsb24gIiYjeDNCNTsiPgotPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+Ci08IUVOVElUWSBldGEg
IiYjeDNCNzsiPgotPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgotPCFFTlRJVFkgaW90YSAiJiN4
M0I5OyI+Ci08IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Ci08IUVOVElUWSBsYW1iZGEgIiYjeDNC
QjsiPgotPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgotPCFFTlRJVFkgbnUgIiYjeDNCRDsiPgotPCFF
TlRJVFkgeGkgIiYjeDNCRTsiPgotPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JGOyI+Ci08IUVOVElU
WSBwaSAiJiN4M0MwOyI+Ci08IUVOVElUWSByaG8gIiYjeDNDMTsiPgotPCFFTlRJVFkgc2lnbWF2
ICImI3gzQzI7Ij4KLTwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4KLTwhRU5USVRZIHNpZ21h
ZiAiJiN4M0MyOyI+Ci08IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Ci08IUVOVElUWSB0YXUgIiYj
eDNDNDsiPgotPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Ci08IUVOVElUWSB1cHNpbG9uICImI3gz
QzU7Ij4KLTwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Ci08IUVOVElUWSBjaGkgIiYjeDNDNzsiPgot
PCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KLTwhRU5USVRZIG9tZWdhICImI3gzQzk7Ij4KLTwhRU5U
SVRZIHRoZXRhdiAiJiN4M0QxOyI+Ci08IUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyI+Ci08IUVO
VElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Ci08IUVOVElUWSBVcHNpICImI3gzRDI7Ij4KLTwhRU5U
SVRZIHVwc2loICImI3gzRDI7Ij4KLTwhRU5USVRZIHN0cmFpZ2h0cGhpICImI3gzRDU7Ij4KLTwh
RU5USVRZIHBoaXYgIiYjeDNENTsiPgotPCFFTlRJVFkgdmFycGhpICImI3gzRDU7Ij4KLTwhRU5U
SVRZIHBpdiAiJiN4M0Q2OyI+Ci08IUVOVElUWSB2YXJwaSAiJiN4M0Q2OyI+Ci08IUVOVElUWSBH
YW1tYWQgIiYjeDNEQzsiPgotPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7Ij4KLTwhRU5USVRZIGRp
Z2FtbWEgIiYjeDNERDsiPgotPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij4KLTwhRU5USVRZIHZh
cmthcHBhICImI3gzRjA7Ij4KLTwhRU5USVRZIHJob3YgIiYjeDNGMTsiPgotPCFFTlRJVFkgdmFy
cmhvICImI3gzRjE7Ij4KLTwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4KLTwhRU5USVRZIHN0cmFp
Z2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Ci08IUVOVElUWSB2YXJlcHNpbG9uICImI3gzRjU7Ij4KLTwh
RU5USVRZIGJlcHNpICImI3gzRjY7Ij4KLTwhRU5USVRZIGJhY2tlcHNpbG9uICImI3gzRjY7Ij4K
LTwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgotPCFFTlRJVFkgREpjeSAiJiN4NDAyOyI+Ci08IUVO
VElUWSBHSmN5ICImI3g0MDM7Ij4KLTwhRU5USVRZIEp1a2N5ICImI3g0MDQ7Ij4KLTwhRU5USVRZ
IERTY3kgIiYjeDQwNTsiPgotPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsiPgotPCFFTlRJVFkgWUlj
eSAiJiN4NDA3OyI+Ci08IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgotPCFFTlRJVFkgTEpjeSAi
JiN4NDA5OyI+Ci08IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KLTwhRU5USVRZIFRTSGN5ICImI3g0
MEI7Ij4KLTwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgotPCFFTlRJVFkgVWJyY3kgIiYjeDQwRTsi
PgotPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Ci08IUVOVElUWSBBY3kgIiYjeDQxMDsiPgotPCFF
TlRJVFkgQmN5ICImI3g0MTE7Ij4KLTwhRU5USVRZIFZjeSAiJiN4NDEyOyI+Ci08IUVOVElUWSBH
Y3kgIiYjeDQxMzsiPgotPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KLTwhRU5USVRZIElFY3kgIiYj
eDQxNTsiPgotPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Ci08IUVOVElUWSBaY3kgIiYjeDQxNzsi
PgotPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KLTwhRU5USVRZIEpjeSAiJiN4NDE5OyI+Ci08IUVO
VElUWSBLY3kgIiYjeDQxQTsiPgotPCFFTlRJVFkgTGN5ICImI3g0MUI7Ij4KLTwhRU5USVRZIE1j
eSAiJiN4NDFDOyI+Ci08IUVOVElUWSBOY3kgIiYjeDQxRDsiPgotPCFFTlRJVFkgT2N5ICImI3g0
MUU7Ij4KLTwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Ci08IUVOVElUWSBSY3kgIiYjeDQyMDsiPgot
PCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KLTwhRU5USVRZIFRjeSAiJiN4NDIyOyI+Ci08IUVOVElU
WSBVY3kgIiYjeDQyMzsiPgotPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4KLTwhRU5USVRZIEtIY3kg
IiYjeDQyNTsiPgotPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Ci08IUVOVElUWSBDSGN5ICImI3g0
Mjc7Ij4KLTwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgotPCFFTlRJVFkgU0hDSGN5ICImI3g0Mjk7
Ij4KLTwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Ci08IUVOVElUWSBZY3kgIiYjeDQyQjsiPgot
PCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KLTwhRU5USVRZIEVjeSAiJiN4NDJEOyI+Ci08IUVO
VElUWSBZVWN5ICImI3g0MkU7Ij4KLTwhRU5USVRZIFlBY3kgIiYjeDQyRjsiPgotPCFFTlRJVFkg
YWN5ICImI3g0MzA7Ij4KLTwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Ci08IUVOVElUWSB2Y3kgIiYj
eDQzMjsiPgotPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KLTwhRU5USVRZIGRjeSAiJiN4NDM0OyI+
Ci08IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KLTwhRU5USVRZIHpoY3kgIiYjeDQzNjsiPgotPCFF
TlRJVFkgemN5ICImI3g0Mzc7Ij4KLTwhRU5USVRZIGljeSAiJiN4NDM4OyI+Ci08IUVOVElUWSBq
Y3kgIiYjeDQzOTsiPgotPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KLTwhRU5USVRZIGxjeSAiJiN4
NDNCOyI+Ci08IUVOVElUWSBtY3kgIiYjeDQzQzsiPgotPCFFTlRJVFkgbmN5ICImI3g0M0Q7Ij4K
LTwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Ci08IUVOVElUWSBwY3kgIiYjeDQzRjsiPgotPCFFTlRJ
VFkgcmN5ICImI3g0NDA7Ij4KLTwhRU5USVRZIHNjeSAiJiN4NDQxOyI+Ci08IUVOVElUWSB0Y3kg
IiYjeDQ0MjsiPgotPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KLTwhRU5USVRZIGZjeSAiJiN4NDQ0
OyI+Ci08IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KLTwhRU5USVRZIHRzY3kgIiYjeDQ0NjsiPgot
PCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Ci08IUVOVElUWSBzaGN5ICImI3g0NDg7Ij4KLTwhRU5U
SVRZIHNoY2hjeSAiJiN4NDQ5OyI+Ci08IUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiPgotPCFFTlRJ
VFkgeWN5ICImI3g0NEI7Ij4KLTwhRU5USVRZIHNvZnRjeSAiJiN4NDRDOyI+Ci08IUVOVElUWSBl
Y3kgIiYjeDQ0RDsiPgotPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Ci08IUVOVElUWSB5YWN5ICIm
I3g0NEY7Ij4KLTwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgotPCFFTlRJVFkgZGpjeSAiJiN4NDUy
OyI+Ci08IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KLTwhRU5USVRZIGp1a2N5ICImI3g0NTQ7Ij4K
LTwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgotPCFFTlRJVFkgaXVrY3kgIiYjeDQ1NjsiPgotPCFF
TlRJVFkgeWljeSAiJiN4NDU3OyI+Ci08IUVOVElUWSBqc2VyY3kgIiYjeDQ1ODsiPgotPCFFTlRJ
VFkgbGpjeSAiJiN4NDU5OyI+Ci08IUVOVElUWSBuamN5ICImI3g0NUE7Ij4KLTwhRU5USVRZIHRz
aGN5ICImI3g0NUI7Ij4KLTwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgotPCFFTlRJVFkgdWJyY3kg
IiYjeDQ1RTsiPgotPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Ci08IUVOVElUWSBlbnNwICImI3gy
MDAyOyI+Ci08IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Ci08IUVOVElUWSBlbXNwMTMgIiYjeDIw
MDQ7Ij4KLTwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgotPCFFTlRJVFkgbnVtc3AgIiYjeDIw
MDc7Ij4KLTwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgotPCFFTlRJVFkgdGhpbnNwICImI3gy
MDA5OyI+Ci08IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KLTwhRU5USVRZIGhhaXJzcCAi
JiN4MjAwQTsiPgotPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsiPgotPCFFTlRJVFkg
WmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlVmVyeVRoaW5TcGFj
ZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ij4KLTwh
RU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZl
VGhpY2tTcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgenduaiAiJiN4MjAwQzsiPgotPCFFTlRJ
VFkgendqICImI3gyMDBEOyI+Ci08IUVOVElUWSBscm0gIiYjeDIwMEU7Ij4KLTwhRU5USVRZIHJs
bSAiJiN4MjAwRjsiPgotPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+Ci08IUVOVElUWSBkYXNo
ICImI3gyMDEwOyI+Ci08IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgotPCFFTlRJVFkgbWRhc2gg
IiYjeDIwMTQ7Ij4KLTwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgotPCFFTlRJVFkgVmVyYmFy
ICImI3gyMDE2OyI+Ci08IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Ci08IUVOVElUWSBsc3F1byAi
JiN4MjAxODsiPgotPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ij4KLTwhRU5USVRZ
IHJzcXVvICImI3gyMDE5OyI+Ci08IUVOVElUWSByc3F1b3IgIiYjeDIwMTk7Ij4KLTwhRU5USVRZ
IENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgotPCFFTlRJVFkgbHNxdW9yICImI3gyMDFBOyI+
Ci08IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgotPCFFTlRJVFkgbGRxdW8gIiYjeDIwMUM7Ij4K
LTwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+Ci08IUVOVElUWSByZHF1
byAiJiN4MjAxRDsiPgotPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+Ci08IUVOVElUWSBDbG9z
ZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIGxkcXVvciAiJiN4MjAxRTsi
PgotPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KLTwhRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsi
PgotPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBkZGFnZ2VyICImI3gyMDIx
OyI+Ci08IUVOVElUWSBidWxsICImI3gyMDIyOyI+Ci08IUVOVElUWSBidWxsZXQgIiYjeDIwMjI7
Ij4KLTwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KLTwhRU5USVRZIGhlbGxpcCAiJiN4MjAyNjsi
PgotPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgotPCFFTlRJVFkgcGVybWlsICImI3gyMDMwOyI+
Ci08IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Ci08IUVOVElUWSBwcmltZSAiJiN4MjAzMjsi
PgotPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KLTwhRU5USVRZIHRwcmltZSAiJiN4MjAzNDsi
PgotPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Ci08IUVOVElUWSBiYWNrcHJpbWUgIiYjeDIw
MzU7Ij4KLTwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgotPCFFTlRJVFkgcnNhcXVvICImI3gy
MDNBOyI+Ci08IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgotPCFFTlRJVFkgT3ZlckJhciAiJiN4
MjAzRTsiPgotPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KLTwhRU5USVRZIGh5YnVsbCAiJiN4
MjA0MzsiPgotPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KLTwhRU5USVRZIGJzZW1pICImI3gy
MDRGOyI+Ci08IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KLTwhRU5USVRZIE1lZGl1bVNwYWNl
ICImI3gyMDVGOyI+Ci08IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYjeDIwMEE7Ij4KLTwh
RU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KLTwhRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIw
NjE7Ij4KLTwhRU5USVRZIGFmICImI3gyMDYxOyI+Ci08IUVOVElUWSBJbnZpc2libGVUaW1lcyAi
JiN4MjA2MjsiPgotPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KLTwhRU5USVRZIEludmlzaWJsZUNv
bW1hICImI3gyMDYzOyI+Ci08IUVOVElUWSBpYyAiJiN4MjA2MzsiPgotPCFFTlRJVFkgZXVybyAi
JiN4MjBBQzsiPgotPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgotPCFFTlRJVFkgVHJpcGxlRG90
ICImI3gyMERCOyI+Ci08IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4KLTwhRU5USVRZIENvcGYg
IiYjeDIxMDI7Ij4KLTwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsiPgotPCFFTlRJVFkgaW5j
YXJlICImI3gyMTA1OyI+Ci08IUVOVElUWSBnc2NyICImI3gyMTBBOyI+Ci08IUVOVElUWSBoYW1p
bHQgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiPgotPCFFTlRJ
VFkgSHNjciAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGZyICImI3gyMTBDOyI+Ci08IUVOVElUWSBQ
b2luY2FyZXBsYW5lICImI3gyMTBDOyI+Ci08IUVOVElUWSBxdWF0ZXJuaW9ucyAiJiN4MjEwRDsi
PgotPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgotPCFFTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
PgotPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Ci08IUVOVElUWSBoYmFyICImI3gyMTBGOyI+
Ci08IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIGhzbGFzaCAiJiN4MjEwRjsi
PgotPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7
Ij4KLTwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Ci08IUVOVElUWSBJbSAiJiN4MjExMTsiPgot
PCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KLTwhRU5USVRZIElmciAiJiN4MjExMTsiPgot
PCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgotPCFFTlRJVFkgbGFncmFuICImI3gyMTEyOyI+Ci08
IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Ci08IUVOVElUWSBlbGwgIiYjeDIxMTM7Ij4K
LTwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG5hdHVyYWxzICImI3gyMTE1OyI+
Ci08IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KLTwhRU5USVRZIGNvcHlzciAiJiN4MjExNzsi
PgotPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Ci08IUVOVElUWSB3cCAiJiN4MjExODsiPgot
PCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgotPCFFTlRJVFkgcHJpbWVzICImI3gyMTE5OyI+Ci08
IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KLTwhRU5USVRZIFFvcGYgIiYjeDIxMUE7Ij4K
LTwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWxpbmUgIiYjeDIxMUI7Ij4K
LTwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJlICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscGFydCAiJiN4MjExQzsiPgotPCFFTlRJVFkgUmZyICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscyAiJiN4MjExRDsiPgotPCFFTlRJVFkgUm9wZiAiJiN4MjExRDsiPgotPCFFTlRJ
VFkgcnggIiYjeDIxMUU7Ij4KLTwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+Ci08IUVOVElUWSBU
UkFERSAiJiN4MjEyMjsiPgotPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZ
IFpvcGYgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZIG1obyAiJiN4MjEyNzsiPgotPCFFTlRJVFkgWmZy
ICImI3gyMTI4OyI+Ci08IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4KLTwhRU5USVRZIGlpb3Rh
ICImI3gyMTI5OyI+Ci08IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJlcm5v
dWxsaXMgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJzY3IgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIENm
ciAiJiN4MjEyRDsiPgotPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiPgotPCFFTlRJVFkgZXNj
ciAiJiN4MjEyRjsiPgotPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgotPCFFTlRJVFkgZXhwZWN0
YXRpb24gIiYjeDIxMzA7Ij4KLTwhRU5USVRZIEZzY3IgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIEZv
dXJpZXJ0cmYgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIHBobW1hdCAiJiN4MjEzMzsiPgotPCFFTlRJ
VFkgTWVsbGludHJmICImI3gyMTMzOyI+Ci08IUVOVElUWSBNc2NyICImI3gyMTMzOyI+Ci08IUVO
VElUWSBvcmRlciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgb3JkZXJvZiAiJiN4MjEzNDsiPgotPCFF
TlRJVFkgb3NjciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgYWxlZnN5bSAiJiN4MjEzNTsiPgotPCFF
TlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KLTwhRU5USVRZIGJldGggIiYjeDIxMzY7Ij4KLTwhRU5U
SVRZIGdpbWVsICImI3gyMTM3OyI+Ci08IUVOVElUWSBkYWxldGggIiYjeDIxMzg7Ij4KLTwhRU5U
SVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Ci08IUVOVElUWSBERCAiJiN4MjE0
NTsiPgotPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgotPCFFTlRJVFkgZGQgIiYj
eDIxNDY7Ij4KLTwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0NzsiPgotPCFFTlRJVFkgZXhw
b25lbnRpYWxlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBlZSAiJiN4MjE0NzsiPgotPCFFTlRJVFkg
SW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgaWkgIiYjeDIxNDg7Ij4KLTwhRU5USVRZ
IGZyYWMxMyAiJiN4MjE1MzsiPgotPCFFTlRJVFkgZnJhYzIzICImI3gyMTU0OyI+Ci08IUVOVElU
WSBmcmFjMTUgIiYjeDIxNTU7Ij4KLTwhRU5USVRZIGZyYWMyNSAiJiN4MjE1NjsiPgotPCFFTlRJ
VFkgZnJhYzM1ICImI3gyMTU3OyI+Ci08IUVOVElUWSBmcmFjNDUgIiYjeDIxNTg7Ij4KLTwhRU5U
SVRZIGZyYWMxNiAiJiN4MjE1OTsiPgotPCFFTlRJVFkgZnJhYzU2ICImI3gyMTVBOyI+Ci08IUVO
VElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KLTwhRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiPgotPCFF
TlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Ci08IUVOVElUWSBmcmFjNzggIiYjeDIxNUU7Ij4KLTwh
RU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIGxlZnRhcnJvdyAiJiN4MjE5MDsiPgot
PCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBzbGFyciAiJiN4MjE5MDsi
PgotPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIHVhcnIgIiYj
eDIxOTE7Ij4KLTwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIFVwQXJyb3cg
IiYjeDIxOTE7Ij4KLTwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsiPgotPCFFTlRJVFkg
cmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJ
VFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ij4KLTwh
RU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgZGFyciAiJiN4MjE5
MzsiPgotPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Ci08IUVOVElUWSBEb3duQXJyb3cg
IiYjeDIxOTM7Ij4KLTwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkzOyI+Ci08IUVOVElU
WSBoYXJyICImI3gyMTk0OyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAiJiN4MjE5NDsiPgot
PCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZIHZhcnIgIiYjeDIx
OTU7Ij4KLTwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Ci08IUVOVElUWSBVcERvd25B
cnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij4KLTwhRU5USVRZIFVw
cGVyTGVmdEFycm93ICImI3gyMTk2OyI+Ci08IUVOVElUWSBud2Fycm93ICImI3gyMTk2OyI+Ci08
IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgotPCFFTlRJVFkgVXBwZXJSaWdodEFycm93ICImI3gy
MTk3OyI+Ci08IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Ci08IUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiPgotPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJVFkgTG93ZXJSaWdo
dEFycm93ICImI3gyMTk4OyI+Ci08IUVOVElUWSBzd2FyciAiJiN4MjE5OTsiPgotPCFFTlRJVFkg
c3dhcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgTG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ij4K
LTwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Ci08IUVOVElUWSBubGVmdGFycm93ICImI3gyMTlB
OyI+Ci08IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgotPCFFTlRJVFkgbnJpZ2h0YXJyb3cgIiYj
eDIxOUI7Ij4KLTwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Ci08IUVOVElUWSByaWdodHNxdWln
YXJyb3cgIiYjeDIxOUQ7Ij4KLTwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ij4KLTwh
RU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIHR3b2hlYWRsZWZ0YXJyb3cgIiYjeDIx
OUU7Ij4KLTwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KLTwhRU5USVRZIFJhcnIgIiYjeDIxQTA7
Ij4KLTwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+Ci08IUVOVElUWSBEYXJy
ICImI3gyMUExOyI+Ci08IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIGxlZnRh
cnJvd3RhaWwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiPgotPCFFTlRJ
VFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KLTwhRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4
MjFBNDsiPgotPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgotPCFFTlRJVFkgVXBUZWVB
cnJvdyAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ij4KLTwhRU5USVRZ
IG1hcCAiJiN4MjFBNjsiPgotPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAiJiN4MjFBNjsiPgotPCFF
TlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Ci08IUVOVElUWSBEb3duVGVlQXJyb3cgIiYjeDIxQTc7
Ij4KLTwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KLTwhRU5USVRZIGxhcnJoayAiJiN4
MjFBOTsiPgotPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPgotPCFFTlRJVFkgcmFy
cmhrICImI3gyMUFBOyI+Ci08IUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiPgotPCFF
TlRJVFkgbGFycmxwICImI3gyMUFCOyI+Ci08IUVOVElUWSBsb29wYXJyb3dsZWZ0ICImI3gyMUFC
OyI+Ci08IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGxvb3BhcnJvd3JpZ2h0
ICImI3gyMUFDOyI+Ci08IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbGVmdHJp
Z2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ij4KLTwh
RU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgotPCFFTlRJVFkgbHNoICImI3gyMUIw
OyI+Ci08IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIHJzaCAiJiN4MjFCMTsiPgot
PCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBsZHNoICImI3gyMUIyOyI+Ci08IUVO
VElUWSByZHNoICImI3gyMUIzOyI+Ci08IUVOVElUWSBjcmFyciAiJiN4MjFCNTsiPgotPCFFTlRJ
VFkgY3VsYXJyICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93bGVmdCAiJiN4MjFCNjsi
PgotPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93cmlnaHQg
IiYjeDIxQjc7Ij4KLTwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Ci08IUVOVElUWSBjaXJjbGVh
cnJvd2xlZnQgIiYjeDIxQkE7Ij4KLTwhRU5USVRZIG9yYXJyICImI3gyMUJCOyI+Ci08IUVOVElU
WSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Ci08IUVOVElUWSBsaGFydSAiJiN4MjFCQzsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGVmdGhhcnBvb251
cCAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIGxlZnRo
YXJwb29uZG93biAiJiN4MjFCRDsiPgotPCFFTlRJVFkgRG93bkxlZnRWZWN0b3IgIiYjeDIxQkQ7
Ij4KLTwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Ci08IUVOVElUWSB1cGhhcnBvb25yaWdodCAi
JiN4MjFCRTsiPgotPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFCRTsiPgotPCFFTlRJVFkg
dWhhcmwgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ij4KLTwh
RU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgotPCFFTlRJVFkgcmhhcnUgIiYjeDIxQzA7
Ij4KLTwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Ci08IUVOVElUWSByaWdodGhhcnBv
b251cCAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7Ij4KLTwhRU5USVRZIHJp
Z2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvciAiJiN4
MjFDMTsiPgotPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blZl
Y3RvciAiJiN4MjFDMjsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25yaWdodCAiJiN4MjFDMjsiPgot
PCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIExlZnREb3duVmVjdG9yICImI3gy
MUMzOyI+Ci08IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIHJs
YXJyICImI3gyMUM0OyI+Ci08IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KLTwhRU5USVRZIHVkYXJyICIm
I3gyMUM1OyI+Ci08IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyI+Ci08IUVOVElU
WSBscmFyciAiJiN4MjFDNjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3dzICImI3gyMUM2OyI+
Ci08IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+Ci08IUVOVElUWSBsbGFy
ciAiJiN4MjFDNzsiPgotPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ij4KLTwhRU5U
SVRZIHV1YXJyICImI3gyMUM4OyI+Ci08IUVOVElUWSB1cHVwYXJyb3dzICImI3gyMUM4OyI+Ci08
IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgotPCFFTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4
MjFDOTsiPgotPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZIGRvd25kb3duYXJy
b3dzICImI3gyMUNBOyI+Ci08IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPgotPCFFTlRJVFkgUmV2
ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRoYXJwb29ucyAi
JiN4MjFDQjsiPgotPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KLTwhRU5USVRZIHJpZ2h0bGVm
dGhhcnBvb25zICImI3gyMUNDOyI+Ci08IUVOVElUWSBFcXVpbGlicml1bSAiJiN4MjFDQzsiPgot
PCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5MZWZ0YXJyb3cgIiYjeDIxQ0Q7
Ij4KLTwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Ci08IUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cg
IiYjeDIxQ0U7Ij4KLTwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Ci08IUVOVElUWSBuUmlnaHRh
cnJvdyAiJiN4MjFDRjsiPgotPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPgotPCFFTlRJVFkgTGVm
dGFycm93ICImI3gyMUQwOyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0QXJyb3cgIiYjeDIxRDA7Ij4K
LTwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIFVwYXJyb3cgIiYjeDIxRDE7Ij4K
LTwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIHJBcnIgIiYjeDIx
RDI7Ij4KLTwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIEltcGxpZXMg
IiYjeDIxRDI7Ij4KLTwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5U
SVRZIGRBcnIgIiYjeDIxRDM7Ij4KLTwhRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiPgotPCFF
TlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBoQXJyICImI3gyMUQ0
OyI+Ci08IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgotPCFFTlRJVFkgRG91Ymxl
TGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIGlmZiAiJiN4MjFENDsiPgotPCFF
TlRJVFkgdkFyciAiJiN4MjFENTsiPgotPCFFTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7Ij4K
LTwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Ci08IUVOVElUWSBud0FyciAi
JiN4MjFENjsiPgotPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KLTwhRU5USVRZIHNlQXJyICIm
I3gyMUQ4OyI+Ci08IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgotPCFFTlRJVFkgbEFhcnIgIiYj
eDIxREE7Ij4KLTwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4KLTwhRU5USVRZIHJBYXJy
ICImI3gyMURCOyI+Ci08IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiPgotPCFFTlRJVFkg
emlncmFyciAiJiN4MjFERDsiPgotPCFFTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ij4KLTwhRU5USVRZ
IExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgotPCFFTlRJVFkgcmFycmIgIiYjeDIxRTU7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KLTwhRU5USVRZIGR1YXJyICImI3gyMUY1
OyI+Ci08IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+Ci08IUVOVElUWSBsb2Fy
ciAiJiN4MjFGRDsiPgotPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4KLTwhRU5USVRZIGhvYXJy
ICImI3gyMUZGOyI+Ci08IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4KLTwhRU5USVRZIEZvckFs
bCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgY29tcGxl
bWVudCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPgotPCFFTlRJVFkgUGFy
dGlhbEQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYjeDMzODsiPgotPCFF
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KLTwhRU5USVRZIEV4aXN0cyAiJiN4MjIwMzsiPgotPCFF
TlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Ci08IUVOVElUWSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ij4K
LTwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KLTwhRU5USVRZIGVtcHR5ICImI3gyMjA1OyI+
Ci08IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgotPCFFTlRJVFkgZW1wdHl2ICImI3gyMjA1
OyI+Ci08IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Ci08IUVOVElUWSBuYWJsYSAiJiN4
MjIwNzsiPgotPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Ci08IUVOVElUWSBpc2luICImI3gyMjA4
OyI+Ci08IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgotPCFFTlRJVFkgRWxlbWVudCAiJiN4MjIw
ODsiPgotPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIG5vdGluICImI3gyMjA5OyI+
Ci08IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Ci08IUVOVElUWSBub3RpbnZhICImI3gy
MjA5OyI+Ci08IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFJldmVyc2VFbGVtZW50
ICImI3gyMjBCOyI+Ci08IUVOVElUWSBuaSAiJiN4MjIwQjsiPgotPCFFTlRJVFkgU3VjaFRoYXQg
IiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Ci08IUVOVElUWSBub3RuaXZh
ICImI3gyMjBDOyI+Ci08IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiPgotPCFF
TlRJVFkgcHJvZCAiJiN4MjIwRjsiPgotPCFFTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsiPgotPCFF
TlRJVFkgY29wcm9kICImI3gyMjEwOyI+Ci08IUVOVElUWSBDb3Byb2R1Y3QgIiYjeDIyMTA7Ij4K
LTwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgotPCFFTlRJVFkgU3VtICImI3gyMjExOyI+Ci08IUVO
VElUWSBtaW51cyAiJiN4MjIxMjsiPgotPCFFTlRJVFkgbW5wbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBtcCAiJiN4MjIxMzsiPgotPCFFTlRJVFkgTWludXNQbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KLTwhRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ij4KLTwh
RU5USVRZIHNldG1uICImI3gyMjE2OyI+Ci08IUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiPgot
PCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Ci08IUVOVElUWSBzc2V0bW4gIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KLTwhRU5USVRZIGxvd2FzdCAi
JiN4MjIxNzsiPgotPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Ci08IUVOVElUWSBTbWFsbENp
cmNsZSAiJiN4MjIxODsiPgotPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIFNx
cnQgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHByb3B0
byAiJiN4MjIxRDsiPgotPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFEOyI+Ci08IUVOVElU
WSB2cHJvcCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyI+Ci08IUVO
VElUWSBpbmZpbiAiJiN4MjIxRTsiPgotPCFFTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ij4KLTwhRU5U
SVRZIGFuZyAiJiN4MjIyMDsiPgotPCFFTlRJVFkgYW5nbGUgIiYjeDIyMjA7Ij4KLTwhRU5USVRZ
IG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgotPCFFTlRJVFkgYW5nbXNkICImI3gyMjIxOyI+Ci08
IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Ci08IUVOVElUWSBhbmdzcGggIiYjeDIy
MjI7Ij4KLTwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgVmVydGljYWxCYXIgIiYj
eDIyMjM7Ij4KLTwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIHNob3J0bWlkICIm
I3gyMjIzOyI+Ci08IUVOVElUWSBubWlkICImI3gyMjI0OyI+Ci08IUVOVElUWSBOb3RWZXJ0aWNh
bEJhciAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIG5z
aG9ydG1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgcGFyICImI3gyMjI1OyI+Ci08IUVOVElUWSBw
YXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgRG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjU7
Ij4KLTwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ij4KLTwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KLTwhRU5USVRZIG5wYXJhbGxlbCAi
JiN4MjIyNjsiPgotPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjY7Ij4KLTwh
RU5USVRZIG5zcGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NjsiPgotPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Ci08IUVOVElUWSB3ZWRnZSAiJiN4MjIyNzsi
PgotPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KLTwhRU5USVRZIHZlZSAiJiN4MjIyODsiPgotPCFF
TlRJVFkgY2FwICImI3gyMjI5OyI+Ci08IUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZFMDA7Ij4K
LTwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgotPCFFTlRJVFkgY3VwcyAiJiN4MjIyQTsmI3hGRTAw
OyI+Ci08IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludGVncmFsICImI3gyMjJC
OyI+Ci08IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KLTwhRU5USVRZIHRpbnQgIiYjeDIyMkQ7Ij4K
LTwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Ci08IUVOVElUWSBjb25pbnQgIiYjeDIyMkU7Ij4K
LTwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4
MjIyRTsiPgotPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Ci08IUVOVElUWSBEb3VibGVDb250
b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KLTwhRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ij4KLTwh
RU5USVRZIGN3aW50ICImI3gyMjMxOyI+Ci08IUVOVElUWSBjd2NvbmludCAiJiN4MjIzMjsiPgot
PCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI+Ci08IUVOVElUWSBh
d2NvbmludCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRl
Z3JhbCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI+Ci08IUVOVElUWSB0
aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIFRoZXJlZm9yZSAiJiN4MjIzNDsiPgotPCFF
TlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Ci08IUVOVElUWSBiZWNhdXNlICImI3gyMjM1OyI+Ci08
IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Ci08IUVOVElUWSByYXRpbyAiJiN4MjIzNjsiPgot
PCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7
Ij4KLTwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgotPCFFTlRJVFkgZG90bWludXMgIiYjeDIy
Mzg7Ij4KLTwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Ci08IUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ij4KLTwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgVGlsZGUgIiYjeDIyM0M7
Ij4KLTwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhpY2tzaW0gIiYjeDIy
M0M7Ij4KLTwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGJzaW0g
IiYjeDIyM0Q7Ij4KLTwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4KLTwhRU5USVRZIHJhY2Ug
IiYjeDIyM0Q7JiN4MzMxOyI+Ci08IUVOVElUWSBhYyAiJiN4MjIzRTsiPgotPCFFTlRJVFkgbXN0
cG9zICImI3gyMjNFOyI+Ci08IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyI+Ci08IUVOVElU
WSBhY2QgIiYjeDIyM0Y7Ij4KLTwhRU5USVRZIHdyZWF0aCAiJiN4MjI0MDsiPgotPCFFTlRJVFkg
VmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgotPCFFTlRJVFkgd3IgIiYjeDIyNDA7Ij4KLTwhRU5U
SVRZIG5zaW0gIiYjeDIyNDE7Ij4KLTwhRU5USVRZIE5vdFRpbGRlICImI3gyMjQxOyI+Ci08IUVO
VElUWSBlc2ltICImI3gyMjQyOyI+Ci08IUVOVElUWSBFcXVhbFRpbGRlICImI3gyMjQyOyI+Ci08
IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0
MjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsiPgotPCFFTlRJVFkg
c2ltZSAiJiN4MjI0MzsiPgotPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiPgotPCFFTlRJ
VFkgc2ltZXEgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIG5zaW1lICImI3gyMjQ0OyI+Ci08IUVOVElU
WSBuc2ltZXEgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRXF1YWwgIiYjeDIyNDQ7Ij4K
LTwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ1OyI+Ci08IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgotPCFFTlRJVFkgbmNvbmcgIiYjeDIy
NDc7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI+Ci08IUVOVElUWSBh
c3ltcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIFRpbGRl
VGlsZGUgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwcHJveCAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
dGhrYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyI+Ci08IUVO
VElUWSBuYXAgIiYjeDIyNDk7Ij4KLTwhRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYjeDIyNDk7Ij4K
LTwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KLTwhRU5USVRZIGFwZSAiJiN4MjI0QTsiPgot
PCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KLTwhRU5USVRZIGFwaWQgIiYjeDIyNEI7Ij4K
LTwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgotPCFFTlRJVFkgYmNvbmcgIiYjeDIy
NEM7Ij4KLTwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Ci08IUVOVElUWSBhc3ltcGVxICIm
I3gyMjREOyI+Ci08IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KLTwhRU5USVRZIG52YXAgIiYj
eDIyNEQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsiPgotPCFFTlRJVFkgSHVt
cERvd25IdW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ij4KLTwhRU5U
SVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5idW1wICIm
I3gyMjRFOyYjeDMzODsiPgotPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIEh1
bXBFcXVhbCAiJiN4MjI0RjsiPgotPCFFTlRJVFkgYnVtcGVxICImI3gyMjRGOyI+Ci08IUVOVElU
WSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RIdW1wRXF1YWwgIiYjeDIy
NEY7JiN4MzM4OyI+Ci08IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgotPCFFTlRJVFkgRG90RXF1
YWwgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+Ci08IUVOVElUWSBuZWRv
dCAiJiN4MjI1MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVEb3QgIiYjeDIyNTE7Ij4KLTwhRU5USVRZ
IGRvdGVxZG90ICImI3gyMjUxOyI+Ci08IUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiPgotPCFFTlRJ
VFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgotPCFFTlRJVFkgZXJEb3QgIiYjeDIyNTM7Ij4K
LTwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgotPCFFTlRJVFkgY29sb25lICImI3gy
MjU0OyI+Ci08IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Ci08IUVOVElUWSBBc3NpZ24gIiYj
eDIyNTQ7Ij4KLTwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJVFkgZXFjb2xvbiAi
JiN4MjI1NTsiPgotPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgotPCFFTlRJVFkgZXFjaXJjICIm
I3gyMjU2OyI+Ci08IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Ci08IUVOVElUWSBjaXJjZXEgIiYj
eDIyNTc7Ij4KLTwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgotPCFFTlRJVFkgdmVlZXEgIiYj
eDIyNUE7Ij4KLTwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcSAi
JiN4MjI1QzsiPgotPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Ci08IUVOVElUWSBxdWVzdGVx
ICImI3gyMjVGOyI+Ci08IUVOVElUWSBuZSAiJiN4MjI2MDsiPgotPCFFTlRJVFkgTm90RXF1YWwg
IiYjeDIyNjA7Ij4KLTwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Ci08IUVOVElUWSBDb25ncnVl
bnQgIiYjeDIyNjE7Ij4KLTwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4MjBFNTsiPgotPCFF
TlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Ci08IUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7
Ij4KLTwhRU5USVRZIGxlICImI3gyMjY0OyI+Ci08IUVOVElUWSBsZXEgIiYjeDIyNjQ7Ij4KLTwh
RU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgZ2UgIiYjeDIyNjU7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgotPCFFTlRJVFkgZ2VxICImI3gyMjY1
OyI+Ci08IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KLTwhRU5USVRZIGxFICImI3gy
MjY2OyI+Ci08IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+Ci08IUVOVElUWSBsZXFx
ICImI3gyMjY2OyI+Ci08IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4OyI+Ci08IUVOVElUWSBu
bGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdFICImI3gyMjY3OyI+Ci08IUVOVElU
WSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Ci08IUVOVElUWSBnZXFxICImI3gyMjY3OyI+
Ci08IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2VxcSAiJiN4MjI2
NzsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4
OyI+Ci08IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGxuZXFxICImI3gyMjY4OyI+
Ci08IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZIGx2ZXJ0bmVxcSAi
JiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBnbkUgIiYjeDIyNjk7Ij4KLTwhRU5USVRZIGdu
ZXFxICImI3gyMjY5OyI+Ci08IUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZFMDA7Ij4KLTwhRU5U
SVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08IUVOVElUWSBMdCAiJiN4MjI2QTsi
PgotPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KLTwhRU5USVRZIGxsICImI3gy
MjZBOyI+Ci08IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgotPCFFTlRJVFkgTm90TGVz
c0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Ci08IUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBEMjsi
PgotPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIE5lc3RlZEdyZWF0ZXJHcmVhdGVy
ICImI3gyMjZCOyI+Ci08IUVOVElUWSBnZyAiJiN4MjI2QjsiPgotPCFFTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyYjeDMz
ODsiPgotPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHR3aXh0ICIm
I3gyMjZDOyI+Ci08IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Ci08IUVOVElUWSBOb3RDdXBD
YXAgIiYjeDIyNkQ7Ij4KLTwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgotPCFFTlRJVFkgTm90TGVz
cyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIG5ndCAi
JiN4MjI2RjsiPgotPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmd0
ciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Ci08IUVOVElUWSBOb3RMZXNz
RXF1YWwgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5sZXEgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5n
ZSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gyMjcxOyI+Ci08IUVO
VElUWSBuZ2VxICImI3gyMjcxOyI+Ci08IUVOVElUWSBsc2ltICImI3gyMjcyOyI+Ci08IUVOVElU
WSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KLTwhRU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ij4KLTwh
RU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KLTwhRU5USVRZIGd0cnNpbSAiJiN4MjI3MzsiPgotPCFF
TlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Ci08IUVOVElUWSBubHNpbSAiJiN4MjI3NDsi
PgotPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Ci08IUVOVElUWSBuZ3NpbSAiJiN4
MjI3NTsiPgotPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI+Ci08IUVOVElUWSBs
ZyAiJiN4MjI3NjsiPgotPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiPgotPCFFTlRJVFkgTGVz
c0dyZWF0ZXIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGdsICImI3gyMjc3OyI+Ci08IUVOVElUWSBn
dHJsZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiPgotPCFF
TlRJVFkgbnRsZyAiJiN4MjI3ODsiPgotPCFFTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7
Ij4KLTwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJMZXNzICIm
I3gyMjc5OyI+Ci08IUVOVElUWSBwciAiJiN4MjI3QTsiPgotPCFFTlRJVFkgUHJlY2VkZXMgIiYj
eDIyN0E7Ij4KLTwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIHNjICImI3gyMjdC
OyI+Ci08IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgotPCFFTlRJVFkgc3VjYyAiJiN4MjI3
QjsiPgotPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIFByZWNlZGVzU2xhbnRF
cXVhbCAiJiN4MjI3QzsiPgotPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIyN0M7Ij4KLTwhRU5U
SVRZIHNjY3VlICImI3gyMjdEOyI+Ci08IUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
N0Q7Ij4KLTwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Ci08IUVOVElUWSBwcnNpbSAi
JiN4MjI3RTsiPgotPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgUHJlY2Vk
ZXNUaWxkZSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZ
IHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7Ij4K
LTwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyI+Ci08IUVOVElUWSBu
cHIgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+Ci08IUVOVElUWSBOb3RQ
cmVjZWRlcyAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnNjICImI3gyMjgxOyI+Ci08IUVOVElUWSBu
c3VjYyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIyODE7Ij4KLTwhRU5U
SVRZIHN1YiAiJiN4MjI4MjsiPgotPCFFTlRJVFkgc3Vic2V0ICImI3gyMjgyOyI+Ci08IUVOVElU
WSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYj
eDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElU
WSBzdXAgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiPgotPCFFTlRJVFkg
U3VwZXJzZXQgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHZuc3VwICImI3gyMjgzOyYjeDIwRDI7Ij4K
LTwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgTm90U3VwZXJz
ZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YiAiJiN4MjI4NDsiPgotPCFFTlRJ
VFkgbnN1cCAiJiN4MjI4NTsiPgotPCFFTlRJVFkgc3ViZSAiJiN4MjI4NjsiPgotPCFFTlRJVFkg
U3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyI+Ci08
IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Ci08IUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiPgot
PCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgotPCFFTlRJVFkgbnN1YmUgIiYjeDIy
ODg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgotPCFFTlRJVFkgTm90U3Vic2V0
RXF1YWwgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdXBlICImI3gyMjg5OyI+Ci08IUVOVElUWSBu
c3Vwc2V0ZXEgIiYjeDIyODk7Ij4KLTwhRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYjeDIyODk7
Ij4KLTwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Ci08IUVOVElUWSBzdWJzZXRuZXEgIiYjeDIy
OEE7Ij4KLTwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJz
dWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ij4K
LTwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgdnN1cG5lICImI3gyMjhC
OyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyI+Ci08
IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KLTwhRU5USVRZIHVwbHVzICImI3gyMjhFOyI+Ci08
IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIHNxc3ViICImI3gyMjhGOyI+
Ci08IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIHNxc3Vic2V0ICIm
I3gyMjhGOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4MzM4OyI+Ci08
IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIy
OTA7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiPgot
PCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3Vic2V0
ZXEgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiPgotPCFFTlRJVFkgU3F1
YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FzdXBzZXRlcSAiJiN4MjI5
MjsiPgotPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KLTwhRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiPgotPCFFTlRJVFkgc3FjYXBzICImI3gyMjkzOyYjeEZFMDA7Ij4KLTwh
RU5USVRZIHNxY3VwICImI3gyMjk0OyI+Ci08IUVOVElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsi
PgotPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KLTwhRU5USVRZIG9wbHVzICIm
I3gyMjk1OyI+Ci08IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+Ci08IUVOVElUWSBvbWlu
dXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyI+Ci08IUVOVElU
WSBvdGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIENpcmNsZVRpbWVzICImI3gyMjk3OyI+Ci08
IUVOVElUWSBvc29sICImI3gyMjk4OyI+Ci08IUVOVElUWSBvZG90ICImI3gyMjk5OyI+Ci08IUVO
VElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIG9jaXIgIiYjeDIyOUE7Ij4KLTwh
RU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Ci08IUVOVElUWSBvYXN0ICImI3gyMjlCOyI+
Ci08IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Ci08IUVOVElUWSBvZGFzaCAiJiN4MjI5
RDsiPgotPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KLTwhRU5USVRZIHBsdXNiICIm
I3gyMjlFOyI+Ci08IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Ci08IUVOVElUWSBtaW51c2Ig
IiYjeDIyOUY7Ij4KLTwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+Ci08IUVOVElUWSB0aW1l
c2IgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIGJveHRpbWVzICImI3gyMkEwOyI+Ci08IUVOVElUWSBz
ZG90YiAiJiN4MjJBMTsiPgotPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyI+Ci08IUVOVElU
WSB2ZGFzaCAiJiN4MjJBMjsiPgotPCFFTlRJVFkgUmlnaHRUZWUgIiYjeDIyQTI7Ij4KLTwhRU5U
SVRZIGRhc2h2ICImI3gyMkEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlICImI3gyMkEzOyI+Ci08IUVO
VElUWSB0b3AgIiYjeDIyQTQ7Ij4KLTwhRU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ij4KLTwhRU5U
SVRZIGJvdHRvbSAiJiN4MjJBNTsiPgotPCFFTlRJVFkgYm90ICImI3gyMkE1OyI+Ci08IUVOVElU
WSBwZXJwICImI3gyMkE1OyI+Ci08IUVOVElUWSBVcFRlZSAiJiN4MjJBNTsiPgotPCFFTlRJVFkg
bW9kZWxzICImI3gyMkE3OyI+Ci08IUVOVElUWSB2RGFzaCAiJiN4MjJBODsiPgotPCFFTlRJVFkg
RG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KLTwhRU5USVRZIFZkYXNoICImI3gyMkE5OyI+Ci08
IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KLTwhRU5USVRZIFZEYXNoICImI3gyMkFCOyI+Ci08
IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KLTwhRU5USVRZIG52RGFzaCAiJiN4MjJBRDsiPgot
PCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Ci08IUVOVElUWSBuVkRhc2ggIiYjeDIyQUY7Ij4K
LTwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgotPCFFTlRJVFkgdmx0cmkgIiYjeDIyQjI7Ij4K
LTwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgotPCFFTlRJVFkgTGVmdFRyaWFu
Z2xlICImI3gyMkIyOyI+Ci08IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiPgotPCFFTlRJVFkgdmFy
dHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgotPCFFTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJC
MzsiPgotPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlbGVmdGVx
ICImI3gyMkI0OyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiPgotPCFF
TlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Ci08IUVOVElUWSBydHJpZSAiJiN4MjJC
NTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+Ci08IUVOVElUWSBSaWdo
dFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4
MjBEMjsiPgotPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Ci08IUVOVElUWSBpbW9mICImI3gy
MkI3OyI+Ci08IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkgbXVsdGltYXAgIiYj
eDIyQjg7Ij4KLTwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgotPCFFTlRJVFkgaW50Y2FsICIm
I3gyMkJBOyI+Ci08IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgotPCFFTlRJVFkgdmVlYmFy
ICImI3gyMkJCOyI+Ci08IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4KLTwhRU5USVRZIGFuZ3J0
dmIgIiYjeDIyQkU7Ij4KLTwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+Ci08IUVOVElUWSB4d2Vk
Z2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSBiaWd3
ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgVmVl
ICImI3gyMkMxOyI+Ci08IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZIHhjYXAg
IiYjeDIyQzI7Ij4KLTwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiPgotPCFFTlRJVFkg
YmlnY2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSB4Y3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBV
bmlvbiAiJiN4MjJDMzsiPgotPCFFTlRJVFkgYmlnY3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBk
aWFtICImI3gyMkM0OyI+Ci08IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBE
aWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBzZG90ICImI3gyMkM1OyI+Ci08IUVOVElUWSBz
c3RhcmYgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIFN0YXIgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIGRp
dm9ueCAiJiN4MjJDNzsiPgotPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiPgotPCFF
TlRJVFkgYm93dGllICImI3gyMkM4OyI+Ci08IUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ij4KLTwh
RU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgotPCFFTlRJVFkgbHRocmVlICImI3gyMkNCOyI+Ci08
IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgotPCFFTlRJVFkgcnRocmVlICImI3gy
MkNDOyI+Ci08IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7Ij4KLTwhRU5USVRZIGJz
aW1lICImI3gyMkNEOyI+Ci08IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ij4KLTwhRU5USVRZ
IGN1dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXJseXZlZSAiJiN4MjJDRTsiPgotPCFFTlRJ
VFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KLTwhRU5USVRZIGN1cmx5d2VkZ2UgIiYjeDIyQ0Y7Ij4KLTwh
RU5USVRZIFN1YiAiJiN4MjJEMDsiPgotPCFFTlRJVFkgU3Vic2V0ICImI3gyMkQwOyI+Ci08IUVO
VElUWSBTdXAgIiYjeDIyRDE7Ij4KLTwhRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiPgotPCFFTlRJ
VFkgQ2FwICImI3gyMkQyOyI+Ci08IUVOVElUWSBDdXAgIiYjeDIyRDM7Ij4KLTwhRU5USVRZIGZv
cmsgIiYjeDIyRDQ7Ij4KLTwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiPgotPCFFTlRJVFkg
ZXBhciAiJiN4MjJENTsiPgotPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGxl
c3Nkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGd0ZG90ICImI3gyMkQ3OyI+Ci08IUVOVElUWSBn
dHJkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIExsICImI3gyMkQ4OyI+Ci08IUVOVElUWSBuTGwg
IiYjeDIyRDg7JiN4MzM4OyI+Ci08IUVOVElUWSBHZyAiJiN4MjJEOTsiPgotPCFFTlRJVFkgZ2dn
ICImI3gyMkQ5OyI+Ci08IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4OyI+Ci08IUVOVElUWSBs
ZWcgIiYjeDIyREE7Ij4KLTwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ij4KLTwh
RU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzZyAiJiN4MjJEQTsmI3hG
RTAwOyI+Ci08IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KLTwhRU5USVRZIGd0cmVxbGVzcyAiJiN4
MjJEQjsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJEQjsiPgotPCFFTlRJVFkg
Z2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Ci08IUVOVElUWSBjdWVwciAiJiN4MjJERTsiPgotPCFF
TlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KLTwhRU5USVRZIGN1ZXNjICImI3gyMkRGOyI+
Ci08IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgotPCFFTlRJVFkgbnByY3VlICImI3gy
MkUwOyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ij4KLTwhRU5U
SVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNTbGFudEVxdWFsICIm
I3gyMkUxOyI+Ci08IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Ci08IUVOVElUWSBOb3RTcXVh
cmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgotPCFFTlRJVFkgbnNxc3VwZSAiJiN4MjJFMzsiPgot
PCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPgotPCFFTlRJVFkgbG5z
aW0gIiYjeDIyRTY7Ij4KLTwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+Ci08IUVOVElUWSBwcm5z
aW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyI+Ci08IUVOVElUWSBz
Y25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyI+Ci08IUVOVElU
WSBubHRyaSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiPgot
PCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Ci08IUVOVElUWSBucnRyaSAiJiN4
MjJFQjsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIG5sdHJpZSAiJiN4MjJFQzsiPgot
PCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVFcXVhbCAiJiN4MjJFQzsiPgotPCFFTlRJVFkgbnJ0cmllICImI3gyMkVEOyI+Ci08IUVO
VElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Ci08IUVOVElUWSBOb3RSaWdodFRyaWFu
Z2xlRXF1YWwgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIHZlbGxpcCAiJiN4MjJFRTsiPgotPCFFTlRJ
VFkgY3Rkb3QgIiYjeDIyRUY7Ij4KLTwhRU5USVRZIHV0ZG90ICImI3gyMkYwOyI+Ci08IUVOVElU
WSBkdGRvdCAiJiN4MjJGMTsiPgotPCFFTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ij4KLTwhRU5USVRZ
IGlzaW5zdiAiJiN4MjJGMzsiPgotPCFFTlRJVFkgaXNpbnMgIiYjeDIyRjQ7Ij4KLTwhRU5USVRZ
IGlzaW5kb3QgIiYjeDIyRjU7Ij4KLTwhRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
PgotPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgotPCFFTlRJVFkgbm90aW52YiAiJiN4MjJG
NzsiPgotPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KLTwhRU5USVRZIG5vdGluRSAiJiN4MjJG
OTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KLTwhRU5USVRZIHhuaXMgIiYj
eDIyRkI7Ij4KLTwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgotPCFFTlRJVFkgbm90bml2YyAiJiN4
MjJGRDsiPgotPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgotPCFFTlRJVFkgYmFyd2VkICIm
I3gyMzA1OyI+Ci08IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgotPCFFTlRJVFkgQmFyd2Vk
ICImI3gyMzA2OyI+Ci08IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4MjMwNjsiPgotPCFFTlRJ
VFkgbGNlaWwgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyI+Ci08
IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgotPCFFTlRJVFkgUmlnaHRDZWlsaW5nICImI3gyMzA5
OyI+Ci08IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KLTwhRU5USVRZIExlZnRGbG9vciAiJiN4
MjMwQTsiPgotPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Ci08IUVOVElUWSBSaWdodEZsb29y
ICImI3gyMzBCOyI+Ci08IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4KLTwhRU5USVRZIGRsY3Jv
cCAiJiN4MjMwRDsiPgotPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+Ci08IUVOVElUWSB1bGNy
b3AgIiYjeDIzMEY7Ij4KLTwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4KLTwhRU5USVRZIHByb2Zs
aW5lICImI3gyMzEyOyI+Ci08IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMxMzsiPgotPCFFTlRJVFkg
dGVscmVjICImI3gyMzE1OyI+Ci08IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ij4KLTwhRU5USVRZ
IHVsY29ybiAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdWxjb3JuZXIgIiYjeDIzMUM7Ij4KLTwhRU5U
SVRZIHVyY29ybiAiJiN4MjMxRDsiPgotPCFFTlRJVFkgdXJjb3JuZXIgIiYjeDIzMUQ7Ij4KLTwh
RU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgotPCFFTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ij4K
LTwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgotPCFFTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7
Ij4KLTwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Ci08IUVOVElUWSBzZnJvd24gIiYjeDIzMjI7
Ij4KLTwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Ci08IUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ij4KLTwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgotPCFFTlRJVFkgcHJvZmFsYXIgIiYjeDIz
MkU7Ij4KLTwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgotPCFFTlRJVFkgb3ZiYXIgIiYjeDIz
M0Q7Ij4KLTwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgotPCFFTlRJVFkgYW5nemFyciAiJiN4
MjM3QzsiPgotPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Ci08IUVOVElUWSBsbW91c3RhY2hl
ICImI3gyM0IwOyI+Ci08IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHJtb3Vz
dGFjaGUgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHRicmsgIiYjeDIzQjQ7Ij4KLTwhRU5USVRZIE92
ZXJCcmFja2V0ICImI3gyM0I0OyI+Ci08IUVOVElUWSBiYnJrICImI3gyM0I1OyI+Ci08IUVOVElU
WSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyI+
Ci08IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KLTwhRU5USVRZIFVuZGVyUGFy
ZW50aGVzaXMgIiYjeDIzREQ7Ij4KLTwhRU5USVRZIE92ZXJCcmFjZSAiJiN4MjNERTsiPgotPCFF
TlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgotPCFFTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7
Ij4KLTwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Ci08IUVOVElUWSBibGFuayAiJiN4MjQy
MzsiPgotPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGNpcmNsZWRTICImI3gyNEM4
OyI+Ci08IUVOVElUWSBib3hoICImI3gyNTAwOyI+Ci08IUVOVElUWSBIb3Jpem9udGFsTGluZSAi
JiN4MjUwMDsiPgotPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgotPCFFTlRJVFkgYm94ZHIgIiYj
eDI1MEM7Ij4KLTwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Ci08IUVOVElUWSBib3h1ciAiJiN4
MjUxNDsiPgotPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KLTwhRU5USVRZIGJveHZyICImI3gy
NTFDOyI+Ci08IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgotPCFFTlRJVFkgYm94aGQgIiYjeDI1
MkM7Ij4KLTwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Ci08IUVOVElUWSBib3h2aCAiJiN4MjUz
QzsiPgotPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgotPCFFTlRJVFkgYm94ViAiJiN4MjU1MTsi
PgotPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KLTwhRU5USVRZIGJveERyICImI3gyNTUzOyI+
Ci08IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgotPCFFTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ij4K
LTwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Ci08IUVOVElUWSBib3hETCAiJiN4MjU1NzsiPgot
PCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KLTwhRU5USVRZIGJveFVyICImI3gyNTU5OyI+Ci08
IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgotPCFFTlRJVFkgYm94dUwgIiYjeDI1NUI7Ij4KLTwh
RU5USVRZIGJveFVsICImI3gyNTVDOyI+Ci08IUVOVElUWSBib3hVTCAiJiN4MjU1RDsiPgotPCFF
TlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KLTwhRU5USVRZIGJveFZyICImI3gyNTVGOyI+Ci08IUVO
VElUWSBib3hWUiAiJiN4MjU2MDsiPgotPCFFTlRJVFkgYm94dkwgIiYjeDI1NjE7Ij4KLTwhRU5U
SVRZIGJveFZsICImI3gyNTYyOyI+Ci08IUVOVElUWSBib3hWTCAiJiN4MjU2MzsiPgotPCFFTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ij4KLTwhRU5USVRZIGJveGhEICImI3gyNTY1OyI+Ci08IUVOVElU
WSBib3hIRCAiJiN4MjU2NjsiPgotPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7Ij4KLTwhRU5USVRZ
IGJveGhVICImI3gyNTY4OyI+Ci08IUVOVElUWSBib3hIVSAiJiN4MjU2OTsiPgotPCFFTlRJVFkg
Ym94dkggIiYjeDI1NkE7Ij4KLTwhRU5USVRZIGJveFZoICImI3gyNTZCOyI+Ci08IUVOVElUWSBi
b3hWSCAiJiN4MjU2QzsiPgotPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij4KLTwhRU5USVRZIGxo
YmxrICImI3gyNTg0OyI+Ci08IUVOVElUWSBibG9jayAiJiN4MjU4ODsiPgotPCFFTlRJVFkgYmxr
MTQgIiYjeDI1OTE7Ij4KLTwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+Ci08IUVOVElUWSBibGsz
NCAiJiN4MjU5MzsiPgotPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Ci08IUVOVElUWSBzcXVhcmUg
IiYjeDI1QTE7Ij4KLTwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgc3F1ZiAi
JiN4MjVBQTsiPgotPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Ci08IUVOVElUWSBibGFja3Nx
dWFyZSAiJiN4MjVBQTsiPgotPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFB
OyI+Ci08IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsiPgotPCFFTlRJVFkg
cmVjdCAiJiN4MjVBRDsiPgotPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI+Ci08IUVOVElUWSBm
bHRucyAiJiN4MjVCMTsiPgotPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIGJp
Z3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIHV0cmlmICImI3gyNUI0OyI+Ci08IUVO
VElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Ci08IUVOVElUWSB1dHJpICImI3gyNUI1OyI+
Ci08IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgotPCFFTlRJVFkgcnRyaWYgIiYjeDI1Qjg7
Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPgotPCFFTlRJVFkgcnRy
aSAiJiN4MjVCOTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVCOTsiPgotPCFFTlRJ
VFkgeGR0cmkgIiYjeDI1QkQ7Ij4KLTwhRU5USVRZIGJpZ3RyaWFuZ2xlZG93biAiJiN4MjVCRDsi
PgotPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVkb3du
ICImI3gyNUJFOyI+Ci08IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Ci08IUVOVElUWSB0cmlhbmds
ZWRvd24gIiYjeDI1QkY7Ij4KLTwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI+Ci08IUVOVElUWSBi
bGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgotPCFFTlRJVFkgbHRyaSAiJiN4MjVDMzsiPgot
PCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Ci08IUVOVElUWSBsb3ogIiYjeDI1Q0E7
Ij4KLTwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGNpciAiJiN4MjVDQjsi
PgotPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Ci08IUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsi
PgotPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgdWx0cmkgIiYjeDI1Rjg7
Ij4KLTwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Ci08IUVOVElUWSBsbHRyaSAiJiN4MjVGQTsi
PgotPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgotPCFFTlRJVFkgRmlsbGVk
U21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KLTwhRU5USVRZIHN0YXJmICImI3gyNjA1OyI+Ci08IUVO
VElUWSBiaWdzdGFyICImI3gyNjA1OyI+Ci08IUVOVElUWSBzdGFyICImI3gyNjA2OyI+Ci08IUVO
VElUWSBwaG9uZSAiJiN4MjYwRTsiPgotPCFFTlRJVFkgZmVtYWxlICImI3gyNjQwOyI+Ci08IUVO
VElUWSBtYWxlICImI3gyNjQyOyI+Ci08IUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ij4KLTwhRU5U
SVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgotPCFFTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ij4KLTwh
RU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Ci08IUVOVElUWSBoZWFydHMgIiYjeDI2NjU7Ij4K
LTwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgotPCFFTlRJVFkgZGlhbXMgIiYjeDI2NjY7
Ij4KLTwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Ci08IUVOVElUWSBzdW5nICImI3gy
NjZBOyI+Ci08IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Ci08IUVOVElUWSBuYXR1ciAiJiN4MjY2
RTsiPgotPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgotPCFFTlRJVFkgc2hhcnAgIiYjeDI2
NkY7Ij4KLTwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Ci08IUVOVElUWSBjaGVja21hcmsgIiYj
eDI3MTM7Ij4KLTwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Ci08IUVOVElUWSBtYWx0ICImI3gy
NzIwOyI+Ci08IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Ci08IUVOVElUWSBzZXh0ICImI3gy
NzM2OyI+Ci08IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1ODsiPgotPCFFTlRJVFkg
bGJicmsgIiYjeDI3NzI7Ij4KLTwhRU5USVRZIHJiYnJrICImI3gyNzczOyI+Ci08IUVOVElUWSBi
c29saHN1YiAiJiN4MjdDODsiPgotPCFFTlRJVFkgc3VwaHNvbCAiJiN4MjdDOTsiPgotPCFFTlRJ
VFkgbG9icmsgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIExlZnREb3VibGVCcmFja2V0ICImI3gyN0U2
OyI+Ci08IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgotPCFFTlRJVFkgUmlnaHREb3VibGVCcmFj
a2V0ICImI3gyN0U3OyI+Ci08IUVOVElUWSBsYW5nICImI3gyN0U4OyI+Ci08IUVOVElUWSBMZWZ0
QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Ci08IUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ij4KLTwh
RU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gy
N0U5OyI+Ci08IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIExhbmcgIiYjeDI3
RUE7Ij4KLTwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KLTwhRU5USVRZIGxvYW5nICImI3gyN0VD
OyI+Ci08IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgotPCFFTlRJVFkgeGxhcnIgIiYjeDI3RjU7
Ij4KLTwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIExvbmdMZWZ0
QXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIHhyYXJyICImI3gyN0Y2OyI+Ci08IUVOVElUWSBs
b25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3
RjY7Ij4KLTwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Ci08IUVOVElUWSBsb25nbGVmdHJpZ2h0
YXJyb3cgIiYjeDI3Rjc7Ij4KLTwhRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGNzsi
PgotPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYj
eDI3Rjg7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYjeDI3Rjg7Ij4KLTwhRU5U
SVRZIHhyQXJyICImI3gyN0Y5OyI+Ci08IUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
PgotPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7Ij4KLTwhRU5USVRZIHho
QXJyICImI3gyN0ZBOyI+Ci08IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ij4K
LTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsiPgotPCFFTlRJVFkg
eG1hcCAiJiN4MjdGQzsiPgotPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiPgotPCFFTlRJ
VFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KLTwhRU5USVRZIG52bEFyciAiJiN4MjkwMjsiPgotPCFF
TlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Ci08IUVOVElUWSBudkhhcnIgIiYjeDI5MDQ7Ij4KLTwh
RU5USVRZIE1hcCAiJiN4MjkwNTsiPgotPCFFTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ij4KLTwhRU5U
SVRZIHJiYXJyICImI3gyOTBEOyI+Ci08IUVOVElUWSBia2Fyb3cgIiYjeDI5MEQ7Ij4KLTwhRU5U
SVRZIGxCYXJyICImI3gyOTBFOyI+Ci08IUVOVElUWSByQmFyciAiJiN4MjkwRjsiPgotPCFFTlRJ
VFkgZGJrYXJvdyAiJiN4MjkwRjsiPgotPCFFTlRJVFkgUkJhcnIgIiYjeDI5MTA7Ij4KLTwhRU5U
SVRZIGRyYmthcm93ICImI3gyOTEwOyI+Ci08IUVOVElUWSBERG90cmFoZCAiJiN4MjkxMTsiPgot
PCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgotPCFFTlRJVFkgRG93bkFycm93QmFyICIm
I3gyOTEzOyI+Ci08IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KLTwhRU5USVRZIGxhdGFpbCAi
JiN4MjkxOTsiPgotPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Ci08IUVOVElUWSBsQXRhaWwg
IiYjeDI5MUI7Ij4KLTwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgotPCFFTlRJVFkgbGFycmZz
ICImI3gyOTFEOyI+Ci08IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4KLTwhRU5USVRZIGxhcnJi
ZnMgIiYjeDI5MUY7Ij4KLTwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ij4KLTwhRU5USVRZIG53
YXJoayAiJiN4MjkyMzsiPgotPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI+Ci08IUVOVElUWSBz
ZWFyaGsgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1OyI+Ci08IUVOVElU
WSBzd2FyaGsgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIGhrc3dhcm93ICImI3gyOTI2OyI+Ci08IUVO
VElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KLTwhRU5USVRZIG5lc2VhciAiJiN4MjkyODsiPgotPCFF
TlRJVFkgdG9lYSAiJiN4MjkyODsiPgotPCFFTlRJVFkgc2Vzd2FyICImI3gyOTI5OyI+Ci08IUVO
VElUWSB0b3NhICImI3gyOTI5OyI+Ci08IUVOVElUWSBzd253YXIgIiYjeDI5MkE7Ij4KLTwhRU5U
SVRZIHJhcnJjICImI3gyOTMzOyI+Ci08IUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4MzM4OyI+
Ci08IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Ci08IUVOVElUWSBsZGNhICImI3gyOTM2OyI+
Ci08IUVOVElUWSByZGNhICImI3gyOTM3OyI+Ci08IUVOVElUWSBjdWRhcnJsICImI3gyOTM4OyI+
Ci08IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KLTwhRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7
Ij4KLTwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KLTwhRU5USVRZIHJhcnJwbCAiJiN4Mjk0
NTsiPgotPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgotPCFFTlRJVFkgVWFycm9jaXIgIiYj
eDI5NDk7Ij4KLTwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Ci08IUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICImI3gyOTRFOyI+Ci08IUVO
VElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgotPCFFTlRJVFkgRG93bkxlZnRSaWdo
dFZlY3RvciAiJiN4Mjk1MDsiPgotPCFFTlRJVFkgTGVmdFVwRG93blZlY3RvciAiJiN4Mjk1MTsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgotPCFFTlRJVFkgUmlnaHRWZWN0
b3JCYXIgIiYjeDI5NTM7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIgIiYjeDI5NTQ7Ij4K
LTwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgotPCFFTlRJVFkgRG93bkxl
ZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvckJhciAiJiN4
Mjk1NzsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyI+Ci08IUVOVElUWSBM
ZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgotPCFFTlRJVFkgTGVmdFRlZVZlY3RvciAiJiN4
Mjk1QTsiPgotPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ij4KLTwhRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blRlZVZlY3RvciAi
JiN4Mjk1RDsiPgotPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYjeDI5NUU7Ij4KLTwhRU5U
SVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgotPCFFTlRJVFkgTGVmdFVwVGVlVmVj
dG9yICImI3gyOTYwOyI+Ci08IUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiPgot
PCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgotPCFFTlRJVFkgdUhhciAiJiN4Mjk2MzsiPgotPCFF
TlRJVFkgckhhciAiJiN4Mjk2NDsiPgotPCFFTlRJVFkgZEhhciAiJiN4Mjk2NTsiPgotPCFFTlRJ
VFkgbHVydWhhciAiJiN4Mjk2NjsiPgotPCFFTlRJVFkgbGRyZGhhciAiJiN4Mjk2NzsiPgotPCFF
TlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgotPCFFTlRJVFkgcmRsZGhhciAiJiN4Mjk2OTsiPgot
PCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Ci08IUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7Ij4K
LTwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgotPCFFTlRJVFkgbHJoYXJkICImI3gyOTZEOyI+
Ci08IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgVXBFcXVpbGlicml1bSAiJiN4
Mjk2RTsiPgotPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KLTwhRU5USVRZIFJldmVyc2VVcEVx
dWlsaWJyaXVtICImI3gyOTZGOyI+Ci08IUVOVElUWSBSb3VuZEltcGxpZXMgIiYjeDI5NzA7Ij4K
LTwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Ci08IUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyI+
Ci08IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Ci08IUVOVElUWSByYXJyc2ltICImI3gyOTc0
OyI+Ci08IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KLTwhRU5USVRZIGx0bGFyciAiJiN4Mjk3
NjsiPgotPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Ci08IUVOVElUWSBzdWJyYXJyICImI3gy
OTc5OyI+Ci08IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Ci08IUVOVElUWSBsZmlzaHQgIiYj
eDI5N0M7Ij4KLTwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgotPCFFTlRJVFkgdWZpc2h0ICIm
I3gyOTdFOyI+Ci08IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KLTwhRU5USVRZIGxvcGFyICIm
I3gyOTg1OyI+Ci08IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgotPCFFTlRJVFkgbGJya2UgIiYj
eDI5OEI7Ij4KLTwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Ci08IUVOVElUWSBsYnJrc2x1ICIm
I3gyOThEOyI+Ci08IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Ci08IUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyI+Ci08IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+Ci08IUVOVElUWSBsYW5n
ZCAiJiN4Mjk5MTsiPgotPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4KLTwhRU5USVRZIGxwYXJs
dCAiJiN4Mjk5MzsiPgotPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+Ci08IUVOVElUWSBndGxQ
YXIgIiYjeDI5OTU7Ij4KLTwhRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiPgotPCFFTlRJVFkgdnpp
Z3phZyAiJiN4Mjk5QTsiPgotPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI+Ci08IUVOVElUWSBh
bmdydHZiZCAiJiN4Mjk5RDsiPgotPCFFTlRJVFkgYW5nZSAiJiN4MjlBNDsiPgotPCFFTlRJVFkg
cmFuZ2UgIiYjeDI5QTU7Ij4KLTwhRU5USVRZIGR3YW5nbGUgIiYjeDI5QTY7Ij4KLTwhRU5USVRZ
IHV3YW5nbGUgIiYjeDI5QTc7Ij4KLTwhRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyI+Ci08IUVO
VElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgotPCFFTlRJVFkgYW5nbXNkYWMgIiYjeDI5QUE7Ij4K
LTwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Ci08IUVOVElUWSBhbmdtc2RhZSAiJiN4MjlB
QzsiPgotPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KLTwhRU5USVRZIGFuZ21zZGFnICIm
I3gyOUFFOyI+Ci08IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgotPCFFTlRJVFkgYmVtcHR5
diAiJiN4MjlCMDsiPgotPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPgotPCFFTlRJVFkgY2Vt
cHR5diAiJiN4MjlCMjsiPgotPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ij4KLTwhRU5USVRZ
IGxhZW1wdHl2ICImI3gyOUI0OyI+Ci08IUVOVElUWSBvaGJhciAiJiN4MjlCNTsiPgotPCFFTlRJ
VFkgb21pZCAiJiN4MjlCNjsiPgotPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsiPgotPCFFTlRJVFkg
b3BlcnAgIiYjeDI5Qjk7Ij4KLTwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5QkI7Ij4KLTwhRU5USVRZ
IG9kc29sZCAiJiN4MjlCQzsiPgotPCFFTlRJVFkgb2xjaXIgIiYjeDI5QkU7Ij4KLTwhRU5USVRZ
IG9mY2lyICImI3gyOUJGOyI+Ci08IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij4KLTwhRU5USVRZIG9n
dCAiJiN4MjlDMTsiPgotPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiPgotPCFFTlRJVFkgY2ly
RSAiJiN4MjlDMzsiPgotPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgotPCFFTlRJVFkgYnNvbGIg
IiYjeDI5QzU7Ij4KLTwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgotPCFFTlRJVFkgdHJpc2Ig
IiYjeDI5Q0Q7Ij4KLTwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+Ci08IUVOVElUWSBMZWZ0
VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZUJhciAiJiN4
MjlDRjsmI3gzMzg7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7Ij4KLTwh
RU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI+Ci08IUVOVElUWSBp
aW5maW4gIiYjeDI5REM7Ij4KLTwhRU5USVRZIGluZmludGllICImI3gyOUREOyI+Ci08IUVOVElU
WSBudmluZmluICImI3gyOURFOyI+Ci08IUVOVElUWSBlcGFyc2wgIiYjeDI5RTM7Ij4KLTwhRU5U
SVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Ci08IUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiPgot
PCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgotPCFFTlRJVFkgYmxhY2tsb3plbmdlICImI3gyOUVC
OyI+Ci08IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgotPCFFTlRJVFkgZHNvbCAiJiN4
MjlGNjsiPgotPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZIGJpZ29kb3QgIiYj
eDJBMDA7Ij4KLTwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJVFkgYmlnb3BsdXMg
IiYjeDJBMDE7Ij4KLTwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgotPCFFTlRJVFkgYmlnb3Rp
bWVzICImI3gyQTAyOyI+Ci08IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ij4KLTwhRU5USVRZIGJp
Z3VwbHVzICImI3gyQTA0OyI+Ci08IUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7Ij4KLTwhRU5USVRZ
IGJpZ3NxY3VwICImI3gyQTA2OyI+Ci08IUVOVElUWSBxaW50ICImI3gyQTBDOyI+Ci08IUVOVElU
WSBpaWlpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGZwYXJ0aW50ICImI3gyQTBEOyI+Ci08IUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiPgotPCFFTlRJVFkgYXdpbnQgIiYjeDJBMTE7Ij4KLTwh
RU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Ci08IUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsi
PgotPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgotPCFFTlRJVFkgcG9pbnRpbnQgIiYjeDJB
MTU7Ij4KLTwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KLTwhRU5USVRZIGludGxhcmhrICIm
I3gyQTE3OyI+Ci08IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Ci08IUVOVElUWSBwbHVzYWNp
ciAiJiN4MkEyMzsiPgotPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsiPgotPCFFTlRJVFkgcGx1
c2R1ICImI3gyQTI1OyI+Ci08IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI+Ci08IUVOVElUWSBw
bHVzdHdvICImI3gyQTI3OyI+Ci08IUVOVElUWSBtY29tbWEgIiYjeDJBMjk7Ij4KLTwhRU5USVRZ
IG1pbnVzZHUgIiYjeDJBMkE7Ij4KLTwhRU5USVRZIGxvcGx1cyAiJiN4MkEyRDsiPgotPCFFTlRJ
VFkgcm9wbHVzICImI3gyQTJFOyI+Ci08IUVOVElUWSBDcm9zcyAiJiN4MkEyRjsiPgotPCFFTlRJ
VFkgdGltZXNkICImI3gyQTMwOyI+Ci08IUVOVElUWSB0aW1lc2JhciAiJiN4MkEzMTsiPgotPCFF
TlRJVFkgc21hc2hwICImI3gyQTMzOyI+Ci08IUVOVElUWSBsb3RpbWVzICImI3gyQTM0OyI+Ci08
IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Ci08IUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsi
PgotPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Ci08IUVOVElUWSBvZGl2ICImI3gyQTM4OyI+
Ci08IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Ci08IUVOVElUWSB0cmltaW51cyAiJiN4MkEz
QTsiPgotPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgotPCFFTlRJVFkgaXByb2QgIiYjeDJB
M0M7Ij4KLTwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZIGFtYWxnICImI3gy
QTNGOyI+Ci08IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KLTwhRU5USVRZIG5jdXAgIiYjeDJB
NDI7Ij4KLTwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KLTwhRU5USVRZIGNhcGFuZCAiJiN4MkE0
NDsiPgotPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KLTwhRU5USVRZIGN1cGNhcCAiJiN4MkE0
NjsiPgotPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Ci08IUVOVElUWSBjdXBicmNhcCAiJiN4
MkE0ODsiPgotPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KLTwhRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiPgotPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Ci08IUVOVElUWSBjY3VwcyAi
JiN4MkE0QzsiPgotPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KLTwhRU5USVRZIGNjdXBzc20g
IiYjeDJBNTA7Ij4KLTwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgotPCFFTlRJVFkgT3IgIiYjeDJB
NTQ7Ij4KLTwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgotPCFFTlRJVFkgb3JvciAiJiN4MkE1
NjsiPgotPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgotPCFFTlRJVFkgYW5kc2xvcGUgIiYj
eDJBNTg7Ij4KLTwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KLTwhRU5USVRZIG9ydiAiJiN4MkE1
QjsiPgotPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgotPCFFTlRJVFkgb3JkICImI3gyQTVEOyI+
Ci08IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KLTwhRU5USVRZIHNkb3RlICImI3gyQTY2OyI+
Ci08IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KLTwhRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7
Ij4KLTwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgotPCFFTlRJVFkgZWFzdGVy
ICImI3gyQTZFOyI+Ci08IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4KLTwhRU5USVRZIGFwRSAi
JiN4MkE3MDsiPgotPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVw
bHVzICImI3gyQTcxOyI+Ci08IUVOVElUWSBwbHVzZSAiJiN4MkE3MjsiPgotPCFFTlRJVFkgRXNp
bSAiJiN4MkE3MzsiPgotPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+Ci08IUVOVElUWSBFcXVh
bCAiJiN4MkE3NTsiPgotPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGRkb3Rz
ZXEgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ij4KLTwhRU5USVRZIGx0
Y2lyICImI3gyQTc5OyI+Ci08IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPgotPCFFTlRJVFkgbHRx
dWVzdCAiJiN4MkE3QjsiPgotPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3QzsiPgotPCFFTlRJVFkg
bGVzICImI3gyQTdEOyI+Ci08IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsiPgotPCFF
TlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4
OyI+Ci08IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5U
SVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGdlcyAiJiN4MkE3RTsi
PgotPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4KLTwhRU5USVRZIGdlcXNs
YW50ICImI3gyQTdFOyI+Ci08IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJ
VFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2Vx
c2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ij4KLTwh
RU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgotPCFFTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiPgot
PCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgotPCFFTlRJVFkgbGVzZG90b3IgIiYjeDJBODM7
Ij4KLTwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Ci08IUVOVElUWSBsYXAgIiYjeDJBODU7
Ij4KLTwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KLTwhRU5USVRZIGdhcCAiJiN4MkE4
NjsiPgotPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Ci08IUVOVElUWSBsbmUgIiYjeDJB
ODc7Ij4KLTwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGduZSAiJiN4MkE4ODsi
PgotPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgbG5hcCAiJiN4MkE4OTsiPgot
PCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KLTwhRU5USVRZIGduYXAgIiYjeDJBOEE7Ij4K
LTwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Ci08IUVOVElUWSBsRWcgIiYjeDJBOEI7Ij4K
LTwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KLTwhRU5USVRZIGdFbCAiJiN4MkE4Qzsi
PgotPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgotPCFFTlRJVFkgbHNpbWUgIiYjeDJB
OEQ7Ij4KLTwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Ci08IUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiPgotPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KLTwhRU5USVRZIGxnRSAiJiN4MkE5MTsi
PgotPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Ci08IUVOVElUWSBsZXNnZXMgIiYjeDJBOTM7Ij4K
LTwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgotPCFFTlRJVFkgZWxzICImI3gyQTk1OyI+Ci08
IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgotPCFFTlRJVFkgZWdzICImI3gyQTk2OyI+
Ci08IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Ci08IUVOVElUWSBlbHNkb3QgIiYjeDJB
OTc7Ij4KLTwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgotPCFFTlRJVFkgZWwgIiYjeDJBOTk7
Ij4KLTwhRU5USVRZIGVnICImI3gyQTlBOyI+Ci08IUVOVElUWSBzaW1sICImI3gyQTlEOyI+Ci08
IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Ci08IUVOVElUWSBzaW1sRSAiJiN4MkE5RjsiPgotPCFF
TlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KLTwhRU5USVRZIExlc3NMZXNzICImI3gyQUExOyI+Ci08
IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ij4KLTwhRU5USVRZIEdy
ZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRl
ciAiJiN4MkFBMjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdsaiAiJiN4MkFBNDsiPgotPCFFTlRJVFkg
Z2xhICImI3gyQUE1OyI+Ci08IUVOVElUWSBsdGNjICImI3gyQUE2OyI+Ci08IUVOVElUWSBndGNj
ICImI3gyQUE3OyI+Ci08IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgotPCFFTlRJVFkgZ2VzY2Mg
IiYjeDJBQTk7Ij4KLTwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgotPCFFTlRJVFkgbGF0ICImI3gy
QUFCOyI+Ci08IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Ci08IUVOVElUWSBzbXRlcyAiJiN4MkFB
QzsmI3hGRTAwOyI+Ci08IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Ci08IUVOVElUWSBsYXRlcyAi
JiN4MkFBRDsmI3hGRTAwOyI+Ci08IUVOVElUWSBidW1wRSAiJiN4MkFBRTsiPgotPCFFTlRJVFkg
cHJlICImI3gyQUFGOyI+Ci08IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyI+
Ci08IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgotPCFFTlRJVFkgTm90UHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNjZSAiJiN4MkFCMDsiPgotPCFF
TlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Ci08IUVOVElUWSBTdWNjZWVkc0VxdWFsICImI3gyQUIw
OyI+Ci08IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJVFkgbnN1Y2NlcSAi
JiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7JiN4
MzM4OyI+Ci08IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KLTwhRU5USVRZIHNjRSAiJiN4MkFCNDsi
PgotPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7
Ij4KLTwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHN1Y2NuZXFxICImI3gyQUI2
OyI+Ci08IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Ci08IUVOVElUWSBwcmVjYXBwcm94ICImI3gy
QUI3OyI+Ci08IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Ci08IUVOVElUWSBzdWNjYXBwcm94ICIm
I3gyQUI4OyI+Ci08IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgotPCFFTlRJVFkgcHJlY25hcHBy
b3ggIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+Ci08IUVOVElUWSBzdWNj
bmFwcHJveCAiJiN4MkFCQTsiPgotPCFFTlRJVFkgUHIgIiYjeDJBQkI7Ij4KLTwhRU5USVRZIFNj
ICImI3gyQUJDOyI+Ci08IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4KLTwhRU5USVRZIHN1cGRv
dCAiJiN4MkFCRTsiPgotPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiPgotPCFFTlRJVFkgc3Vw
cGx1cyAiJiN4MkFDMDsiPgotPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFDMTsiPgotPCFFTlRJVFkg
c3VwbXVsdCAiJiN4MkFDMjsiPgotPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiPgotPCFFTlRJ
VFkgc3VwZWRvdCAiJiN4MkFDNDsiPgotPCFFTlRJVFkgc3ViRSAiJiN4MkFDNTsiPgotPCFFTlRJ
VFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Ci08IUVOVElUWSBuc3ViRSAiJiN4MkFDNTsmI3gzMzg7
Ij4KLTwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+Ci08IUVOVElUWSBzdXBF
ICImI3gyQUM2OyI+Ci08IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ij4KLTwhRU5USVRZIG5z
dXBFICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gz
Mzg7Ij4KLTwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgotPCFFTlRJVFkgc3Vwc2ltICImI3gy
QUM4OyI+Ci08IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgotPCFFTlRJVFkgc3Vic2V0bmVxcSAi
JiN4MkFDQjsiPgotPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbkUgIiYjeDJB
Q0M7Ij4KLTwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KLTwhRU5USVRZIHZzdXBuRSAi
JiN4MkFDQzsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXFxICImI3gyQUNDOyYjeEZF
MDA7Ij4KLTwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KLTwhRU5USVRZIGNzdXAgIiYjeDJBRDA7
Ij4KLTwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Ci08IUVOVElUWSBjc3VwZSAiJiN4MkFEMjsi
PgotPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Ci08IUVOVElUWSBzdXBzdWIgIiYjeDJBRDQ7
Ij4KLTwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgotPCFFTlRJVFkgc3Vwc3VwICImI3gyQUQ2
OyI+Ci08IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Ci08IUVOVElUWSBzdXBkc3ViICImI3gy
QUQ4OyI+Ci08IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgotPCFFTlRJVFkgdG9wZm9yayAiJiN4
MkFEQTsiPgotPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgotPCFFTlRJVFkgRGFzaHYgIiYjeDJB
RTQ7Ij4KLTwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4KLTwhRU5USVRZIFZkYXNo
bCAiJiN4MkFFNjsiPgotPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgotPCFFTlRJVFkgdkJhciAi
JiN4MkFFODsiPgotPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KLTwhRU5USVRZIFZiYXIgIiYj
eDJBRUI7Ij4KLTwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgotPCFFTlRJVFkgYk5vdCAiJiN4MkFF
RDsiPgotPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KLTwhRU5USVRZIGNpcm1pZCAiJiN4MkFF
RjsiPgotPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Ci08IUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ij4KLTwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Ci08IUVOVElUWSBwYXJzaW0gIiYjeDJB
RjM7Ij4KLTwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Ci08IUVOVElUWSBucGFyc2wgIiYjeDJB
RkQ7JiN4MjBFNTsiPgotPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4KLTwhRU5USVRZIGZpbGln
ICImI3hGQjAxOyI+Ci08IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgotPCFFTlRJVFkgZmZpbGln
ICImI3hGQjAzOyI+Ci08IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4KLTwhRU5USVRZIEFzY3Ig
IiYjeDFENDlDOyI+Ci08IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgotPCFFTlRJVFkgRHNjciAi
JiN4MUQ0OUY7Ij4KLTwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Ci08IUVOVElUWSBKc2NyICIm
I3gxRDRBNTsiPgotPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KLTwhRU5USVRZIE5zY3IgIiYj
eDFENEE5OyI+Ci08IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgotPCFFTlRJVFkgUHNjciAiJiN4
MUQ0QUI7Ij4KLTwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Ci08IUVOVElUWSBTc2NyICImI3gx
RDRBRTsiPgotPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KLTwhRU5USVRZIFVzY3IgIiYjeDFE
NEIwOyI+Ci08IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgotPCFFTlRJVFkgV3NjciAiJiN4MUQ0
QjI7Ij4KLTwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Ci08IUVOVElUWSBZc2NyICImI3gxRDRC
NDsiPgotPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KLTwhRU5USVRZIGFzY3IgIiYjeDFENEI2
OyI+Ci08IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgotPCFFTlRJVFkgY3NjciAiJiN4MUQ0Qjg7
Ij4KLTwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Ci08IUVOVElUWSBmc2NyICImI3gxRDRCQjsi
PgotPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KLTwhRU5USVRZIGlzY3IgIiYjeDFENEJFOyI+
Ci08IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgotPCFFTlRJVFkga3NjciAiJiN4MUQ0QzA7Ij4K
LTwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Ci08IUVOVElUWSBtc2NyICImI3gxRDRDMjsiPgot
PCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KLTwhRU5USVRZIHBzY3IgIiYjeDFENEM1OyI+Ci08
IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgotPCFFTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ij4KLTwh
RU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Ci08IUVOVElUWSB0c2NyICImI3gxRDRDOTsiPgotPCFF
TlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KLTwhRU5USVRZIHZzY3IgIiYjeDFENENCOyI+Ci08IUVO
VElUWSB3c2NyICImI3gxRDRDQzsiPgotPCFFTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ij4KLTwhRU5U
SVRZIHlzY3IgIiYjeDFENENFOyI+Ci08IUVOVElUWSB6c2NyICImI3gxRDRDRjsiPgotPCFFTlRJ
VFkgQWZyICImI3gxRDUwNDsiPgotPCFFTlRJVFkgQmZyICImI3gxRDUwNTsiPgotPCFFTlRJVFkg
RGZyICImI3gxRDUwNzsiPgotPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPgotPCFFTlRJVFkgRmZy
ICImI3gxRDUwOTsiPgotPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgotPCFFTlRJVFkgSmZyICIm
I3gxRDUwRDsiPgotPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgotPCFFTlRJVFkgTGZyICImI3gx
RDUwRjsiPgotPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgotPCFFTlRJVFkgTmZyICImI3gxRDUx
MTsiPgotPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgotPCFFTlRJVFkgUGZyICImI3gxRDUxMzsi
PgotPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgotPCFFTlRJVFkgU2ZyICImI3gxRDUxNjsiPgot
PCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgotPCFFTlRJVFkgVWZyICImI3gxRDUxODsiPgotPCFF
TlRJVFkgVmZyICImI3gxRDUxOTsiPgotPCFFTlRJVFkgV2ZyICImI3gxRDUxQTsiPgotPCFFTlRJ
VFkgWGZyICImI3gxRDUxQjsiPgotPCFFTlRJVFkgWWZyICImI3gxRDUxQzsiPgotPCFFTlRJVFkg
YWZyICImI3gxRDUxRTsiPgotPCFFTlRJVFkgYmZyICImI3gxRDUxRjsiPgotPCFFTlRJVFkgY2Zy
ICImI3gxRDUyMDsiPgotPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgotPCFFTlRJVFkgZWZyICIm
I3gxRDUyMjsiPgotPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgotPCFFTlRJVFkgZ2ZyICImI3gx
RDUyNDsiPgotPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgotPCFFTlRJVFkgaWZyICImI3gxRDUy
NjsiPgotPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgotPCFFTlRJVFkga2ZyICImI3gxRDUyODsi
PgotPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgotPCFFTlRJVFkgbWZyICImI3gxRDUyQTsiPgot
PCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgotPCFFTlRJVFkgb2ZyICImI3gxRDUyQzsiPgotPCFF
TlRJVFkgcGZyICImI3gxRDUyRDsiPgotPCFFTlRJVFkgcWZyICImI3gxRDUyRTsiPgotPCFFTlRJ
VFkgcmZyICImI3gxRDUyRjsiPgotPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsiPgotPCFFTlRJVFkg
dGZyICImI3gxRDUzMTsiPgotPCFFTlRJVFkgdWZyICImI3gxRDUzMjsiPgotPCFFTlRJVFkgdmZy
ICImI3gxRDUzMzsiPgotPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgotPCFFTlRJVFkgeGZyICIm
I3gxRDUzNTsiPgotPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgotPCFFTlRJVFkgemZyICImI3gx
RDUzNzsiPgotPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KLTwhRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyI+Ci08IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgotPCFFTlRJVFkgRW9wZiAiJiN4MUQ1
M0M7Ij4KLTwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Ci08IUVOVElUWSBHb3BmICImI3gxRDUz
RTsiPgotPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KLTwhRU5USVRZIEpvcGYgIiYjeDFENTQx
OyI+Ci08IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgotPCFFTlRJVFkgTG9wZiAiJiN4MUQ1NDM7
Ij4KLTwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Ci08IUVOVElUWSBPb3BmICImI3gxRDU0Njsi
PgotPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KLTwhRU5USVRZIFRvcGYgIiYjeDFENTRCOyI+
Ci08IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgotPCFFTlRJVFkgVm9wZiAiJiN4MUQ1NEQ7Ij4K
LTwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Ci08IUVOVElUWSBYb3BmICImI3gxRDU0RjsiPgot
PCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KLTwhRU5USVRZIGFvcGYgIiYjeDFENTUyOyI+Ci08
IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgotPCFFTlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ij4KLTwh
RU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Ci08IUVOVElUWSBlb3BmICImI3gxRDU1NjsiPgotPCFF
TlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KLTwhRU5USVRZIGdvcGYgIiYjeDFENTU4OyI+Ci08IUVO
VElUWSBob3BmICImI3gxRDU1OTsiPgotPCFFTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ij4KLTwhRU5U
SVRZIGpvcGYgIiYjeDFENTVCOyI+Ci08IUVOVElUWSBrb3BmICImI3gxRDU1QzsiPgotPCFFTlRJ
VFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KLTwhRU5USVRZIG1vcGYgIiYjeDFENTVFOyI+Ci08IUVOVElU
WSBub3BmICImI3gxRDU1RjsiPgotPCFFTlRJVFkgb29wZiAiJiN4MUQ1NjA7Ij4KLTwhRU5USVRZ
IHBvcGYgIiYjeDFENTYxOyI+Ci08IUVOVElUWSBxb3BmICImI3gxRDU2MjsiPgotPCFFTlRJVFkg
cm9wZiAiJiN4MUQ1NjM7Ij4KLTwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI+Ci08IUVOVElUWSB0
b3BmICImI3gxRDU2NTsiPgotPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ij4KLTwhRU5USVRZIHZv
cGYgIiYjeDFENTY3OyI+Ci08IUVOVElUWSB3b3BmICImI3gxRDU2ODsiPgotPCFFTlRJVFkgeG9w
ZiAiJiN4MUQ1Njk7Ij4KLTwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+Ci08IUVOVElUWSB6b3Bm
ICImI3gxRDU2QjsiPgorPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgorPCEtLUVOVElUWSBOZXdM
aW5lICImI3hBOyItLT4KKzwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgorPCEtLUVOVElUWSBx
dW90ICImI3gyMjsiLS0+Cis8IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KKzwhLS1FTlRJVFkg
bnVtICImI3gyMzsiLS0+Cis8IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgorPCEtLUVOVElU
WSBwZXJjbnQgIiYjeDI1OyItLT4KKzwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KKzwh
LS1FTlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KKzwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0t
PgorPCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Cis8IS0tRU5USVRZIHJwYXIgIiYjeDI5OyIt
LT4KKzwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7
Ii0tPgorPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Cis8IS0tRU5USVRZIGNvbW1hICImI3gy
QzsiLS0+Cis8IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgorPCEtLUVOVElUWSBzb2wgIiYj
eDJGOyItLT4KKzwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KKzwhLS1FTlRJVFkgc2VtaSAi
JiN4M0I7Ii0tPgorPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Cis8IS0tRU5USVRZIExU
ICImI3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyIt
LT4KKzwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Cis8IS0tRU5USVRZIGJuZSAiJiN4M0Q7
JiN4MjBFNTsiLS0+Cis8IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Cis8IS0tRU5USVRZIEdUICIm
I3gzRTsiLS0+Cis8IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ii0tPgorPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KKzwhLS1F
TlRJVFkgbHNxYiAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KKzwh
LS1FTlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgorPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Cis8
IS0tRU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgorPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4K
KzwhLS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQmFyICImI3g1
RjsiLS0+Cis8IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRp
Y2FsR3JhdmUgIiYjeDYwOyItLT4KKzwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4K
KzwhLS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyIt
LT4KKzwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHZlcnQgIiYjeDdD
OyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHJj
dWIgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Cis8IS0tRU5USVRZ
IG5ic3AgIiYjeEEwOyItLT4KKzwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0t
PgorPCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgorPCEtLUVOVElUWSBjZW50ICImI3hBMjsi
LS0+Cis8IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Cis8IS0tRU5USVRZIGN1cnJlbiAiJiN4
QTQ7Ii0tPgorPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KKzwhLS1FTlRJVFkgYnJ2YmFyICIm
I3hBNjsiLS0+Cis8IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KKzwhLS1FTlRJVFkgRG90ICIm
I3hBODsiLS0+Cis8IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVE
b3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Cis8IS0tRU5USVRZIGNv
cHkgIiYjeEE5OyItLT4KKzwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgorPCEtLUVOVElUWSBv
cmRmICImI3hBQTsiLS0+Cis8IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Cis8IS0tRU5USVRZ
IG5vdCAiJiN4QUM7Ii0tPgorPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KKzwhLS1FTlRJVFkg
cmVnICImI3hBRTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Cis8IS0tRU5U
SVRZIFJFRyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Cis8IS0tRU5U
SVRZIHN0cm5zICImI3hBRjsiLS0+Cis8IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgorPCEtLUVO
VElUWSBwbHVzbW4gIiYjeEIxOyItLT4KKzwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KKzwhLS1F
TlRJVFkgUGx1c01pbnVzICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4K
KzwhLS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgorPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0t
PgorPCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Cis8IS0tRU5USVRZIG1p
Y3JvICImI3hCNTsiLS0+Cis8IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KKzwhLS1FTlRJVFkg
bWlkZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgorPCEt
LUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyIt
LT4KKzwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgorPCEtLUVOVElUWSBzdXAxICImI3hC
OTsiLS0+Cis8IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KKzwhLS1FTlRJVFkgcmFxdW8gIiYj
eEJCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Cis8IS0tRU5USVRZIGZyYWMx
MiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Cis8IS0tRU5USVRZIGZy
YWMzNCAiJiN4QkU7Ii0tPgorPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KKzwhLS1FTlRJ
VFkgQWdyYXZlICImI3hDMDsiLS0+Cis8IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgorPCEt
LUVOVElUWSBBY2lyYyAiJiN4QzI7Ii0tPgorPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4K
KzwhLS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgorPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0t
PgorPCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7
Ii0tPgorPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KKzwhLS1FTlRJVFkgRWdyYXZlICIm
I3hDODsiLS0+Cis8IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgorPCEtLUVOVElUWSBFY2ly
YyAiJiN4Q0E7Ii0tPgorPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Cis8IS0tRU5USVRZIEln
cmF2ZSAiJiN4Q0M7Ii0tPgorPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KKzwhLS1FTlRJ
VFkgSWNpcmMgIiYjeENFOyItLT4KKzwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgorPCEtLUVO
VElUWSBFVEggIiYjeEQwOyItLT4KKzwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Cis8IS0t
RU5USVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgorPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4K
KzwhLS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KKzwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsi
LS0+Cis8IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KKzwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3
OyItLT4KKzwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Cis8IS0tRU5USVRZIFVncmF2ZSAi
JiN4RDk7Ii0tPgorPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KKzwhLS1FTlRJVFkgVWNp
cmMgIiYjeERCOyItLT4KKzwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgorPCEtLUVOVElUWSBZ
YWN1dGUgIiYjeEREOyItLT4KKzwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KKzwhLS1FTlRJ
VFkgc3psaWcgIiYjeERGOyItLT4KKzwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Cis8IS0t
RU5USVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgorPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgor
PCEtLUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KKzwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0t
PgorPCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgorPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7
Ii0tPgorPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KKzwhLS1FTlRJVFkgZWdyYXZlICIm
I3hFODsiLS0+Cis8IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgorPCEtLUVOVElUWSBlY2ly
YyAiJiN4RUE7Ii0tPgorPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Cis8IS0tRU5USVRZIGln
cmF2ZSAiJiN4RUM7Ii0tPgorPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KKzwhLS1FTlRJ
VFkgaWNpcmMgIiYjeEVFOyItLT4KKzwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgorPCEtLUVO
VElUWSBldGggIiYjeEYwOyItLT4KKzwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Cis8IS0t
RU5USVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgorPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4K
KzwhLS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KKzwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsi
LS0+Cis8IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KKzwhLS1FTlRJVFkgZGl2aWRlICImI3hG
NzsiLS0+Cis8IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgorPCEtLUVOVElUWSBvc2xhc2ggIiYj
eEY4OyItLT4KKzwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Cis8IS0tRU5USVRZIHVhY3V0
ZSAiJiN4RkE7Ii0tPgorPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgorPCEtLUVOVElUWSB1
dW1sICImI3hGQzsiLS0+Cis8IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgorPCEtLUVOVElU
WSB0aG9ybiAiJiN4RkU7Ii0tPgorPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Cis8IS0tRU5U
SVRZIEFtYWNyICImI3gxMDA7Ii0tPgorPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KKzwh
LS1FTlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgorPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsi
LS0+Cis8IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgorPCEtLUVOVElUWSBhb2dvbiAiJiN4
MTA1OyItLT4KKzwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgorPCEtLUVOVElUWSBjYWN1
dGUgIiYjeDEwNzsiLS0+Cis8IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgorPCEtLUVOVElU
WSBjY2lyYyAiJiN4MTA5OyItLT4KKzwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KKzwhLS1F
TlRJVFkgY2RvdCAiJiN4MTBCOyItLT4KKzwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgor
PCEtLUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Cis8IS0tRU5USVRZIERjYXJvbiAiJiN4MTBF
OyItLT4KKzwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgorPCEtLUVOVElUWSBEc3Ryb2sg
IiYjeDExMDsiLS0+Cis8IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KKzwhLS1FTlRJVFkg
RW1hY3IgIiYjeDExMjsiLS0+Cis8IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgorPCEtLUVO
VElUWSBFZG90ICImI3gxMTY7Ii0tPgorPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgorPCEt
LUVOVElUWSBFb2dvbiAiJiN4MTE4OyItLT4KKzwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+
Cis8IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KKzwhLS1FTlRJVFkgZWNhcm9uICImI3gx
MUI7Ii0tPgorPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KKzwhLS1FTlRJVFkgZ2NpcmMg
IiYjeDExRDsiLS0+Cis8IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KKzwhLS1FTlRJVFkg
Z2JyZXZlICImI3gxMUY7Ii0tPgorPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgorPCEtLUVO
VElUWSBnZG90ICImI3gxMjE7Ii0tPgorPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Cis8
IS0tRU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgorPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyIt
LT4KKzwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgorPCEtLUVOVElUWSBoc3Ryb2sgIiYj
eDEyNzsiLS0+Cis8IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KKzwhLS1FTlRJVFkgaXRp
bGRlICImI3gxMjk7Ii0tPgorPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KKzwhLS1FTlRJ
VFkgaW1hY3IgIiYjeDEyQjsiLS0+Cis8IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgorPCEt
LUVOVElUWSBpb2dvbiAiJiN4MTJGOyItLT4KKzwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4K
KzwhLS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Cis8IS0tRU5USVRZIGlub2RvdCAiJiN4MTMx
OyItLT4KKzwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Cis8IS0tRU5USVRZIGlqbGlnICIm
I3gxMzM7Ii0tPgorPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KKzwhLS1FTlRJVFkgamNp
cmMgIiYjeDEzNTsiLS0+Cis8IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KKzwhLS1FTlRJ
VFkga2NlZGlsICImI3gxMzc7Ii0tPgorPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Cis8
IS0tRU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KKzwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7
Ii0tPgorPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Cis8IS0tRU5USVRZIGxjZWRpbCAi
JiN4MTNDOyItLT4KKzwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgorPCEtLUVOVElUWSBs
Y2Fyb24gIiYjeDEzRTsiLS0+Cis8IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KKzwhLS1F
TlRJVFkgbG1pZG90ICImI3gxNDA7Ii0tPgorPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+
Cis8IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KKzwhLS1FTlRJVFkgTmFjdXRlICImI3gx
NDM7Ii0tPgorPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Cis8IS0tRU5USVRZIE5jZWRp
bCAiJiN4MTQ1OyItLT4KKzwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgorPCEtLUVOVElU
WSBOY2Fyb24gIiYjeDE0NzsiLS0+Cis8IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KKzwh
LS1FTlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Cis8IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4K
KzwhLS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgorPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyIt
LT4KKzwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Cis8IS0tRU5USVRZIE9kYmxhYyAiJiN4
MTUwOyItLT4KKzwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgorPCEtLUVOVElUWSBPRWxp
ZyAiJiN4MTUyOyItLT4KKzwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Cis8IS0tRU5USVRZ
IFJhY3V0ZSAiJiN4MTU0OyItLT4KKzwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgorPCEt
LUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Cis8IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyIt
LT4KKzwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgorPCEtLUVOVElUWSByY2Fyb24gIiYj
eDE1OTsiLS0+Cis8IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KKzwhLS1FTlRJVFkgc2Fj
dXRlICImI3gxNUI7Ii0tPgorPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KKzwhLS1FTlRJ
VFkgc2NpcmMgIiYjeDE1RDsiLS0+Cis8IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KKzwh
LS1FTlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgorPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsi
LS0+Cis8IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KKzwhLS1FTlRJVFkgVGNlZGlsICIm
I3gxNjI7Ii0tPgorPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Cis8IS0tRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyItLT4KKzwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgorPCEtLUVO
VElUWSBUc3Ryb2sgIiYjeDE2NjsiLS0+Cis8IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4K
KzwhLS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgorPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2
OTsiLS0+Cis8IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgorPCEtLUVOVElUWSB1bWFjciAi
JiN4MTZCOyItLT4KKzwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgorPCEtLUVOVElUWSB1
YnJldmUgIiYjeDE2RDsiLS0+Cis8IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgorPCEtLUVO
VElUWSB1cmluZyAiJiN4MTZGOyItLT4KKzwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgor
PCEtLUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Cis8IS0tRU5USVRZIFVvZ29uICImI3gxNzI7
Ii0tPgorPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KKzwhLS1FTlRJVFkgV2NpcmMgIiYj
eDE3NDsiLS0+Cis8IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgorPCEtLUVOVElUWSBZY2ly
YyAiJiN4MTc2OyItLT4KKzwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Cis8IS0tRU5USVRZ
IFl1bWwgIiYjeDE3ODsiLS0+Cis8IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KKzwhLS1F
TlRJVFkgemFjdXRlICImI3gxN0E7Ii0tPgorPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgor
PCEtLUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgorPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsi
LS0+Cis8IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KKzwhLS1FTlRJVFkgZm5vZiAiJiN4
MTkyOyItLT4KKzwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Cis8IS0tRU5USVRZIGdhY3V0
ZSAiJiN4MUY1OyItLT4KKzwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Cis8IS0tRU5USVRZ
IGNpcmMgIiYjeDJDNjsiLS0+Cis8IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgorPCEtLUVO
VElUWSBIYWNlayAiJiN4MkM3OyItLT4KKzwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Cis8
IS0tRU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgorPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+
Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgorPCEtLUVOVElUWSByaW5n
ICImI3gyREE7Ii0tPgorPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgorPCEtLUVOVElUWSB0
aWxkZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyIt
LT4KKzwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2Fs
RG91YmxlQWN1dGUgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyIt
LT4KKzwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Cis8IS0tRU5USVRZIEJldGEgIiYjeDM5
MjsiLS0+Cis8IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgorPCEtLUVOVElUWSBEZWx0YSAi
JiN4Mzk0OyItLT4KKzwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KKzwhLS1FTlRJVFkg
WmV0YSAiJiN4Mzk2OyItLT4KKzwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgorPCEtLUVOVElU
WSBUaGV0YSAiJiN4Mzk4OyItLT4KKzwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KKzwhLS1F
TlRJVFkgS2FwcGEgIiYjeDM5QTsiLS0+Cis8IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4K
KzwhLS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Cis8IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgor
PCEtLUVOVElUWSBYaSAiJiN4MzlFOyItLT4KKzwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyIt
LT4KKzwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Cis8IS0tRU5USVRZIFJobyAiJiN4M0ExOyIt
LT4KKzwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Cis8IS0tRU5USVRZIFRhdSAiJiN4M0E0
OyItLT4KKzwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KKzwhLS1FTlRJVFkgUGhpICIm
I3gzQTY7Ii0tPgorPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Cis8IS0tRU5USVRZIFBzaSAi
JiN4M0E4OyItLT4KKzwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Cis8IS0tRU5USVRZIG9o
bSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Cis8IS0tRU5USVRZ
IGJldGEgIiYjeDNCMjsiLS0+Cis8IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgorPCEtLUVO
VElUWSBkZWx0YSAiJiN4M0I0OyItLT4KKzwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KKzwh
LS1FTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KKzwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyIt
LT4KKzwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgorPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4
OyItLT4KKzwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KKzwhLS1FTlRJVFkga2FwcGEgIiYj
eDNCQTsiLS0+Cis8IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KKzwhLS1FTlRJVFkgbXUg
IiYjeDNCQzsiLS0+Cis8IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgorPCEtLUVOVElUWSB4aSAi
JiN4M0JFOyItLT4KKzwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KKzwhLS1FTlRJVFkg
cGkgIiYjeDNDMDsiLS0+Cis8IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KKzwhLS1FTlRJVFkg
c2lnbWF2ICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KKzwh
LS1FTlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyIt
LT4KKzwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgorPCEtLUVOVElUWSB1cHNpICImI3gzQzU7
Ii0tPgorPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgorPCEtLUVOVElUWSBwaGkgIiYj
eDNDNjsiLS0+Cis8IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KKzwhLS1FTlRJVFkgcHNpICIm
I3gzQzg7Ii0tPgorPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KKzwhLS1FTlRJVFkgdGhl
dGF2ICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KKzwhLS1F
TlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+
Cis8IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgorPCEtLUVOVElUWSBzdHJhaWdodHBoaSAi
JiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgdmFy
cGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Cis8IS0tRU5USVRZ
IHZhcnBpICImI3gzRDY7Ii0tPgorPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Cis8IS0t
RU5USVRZIGdhbW1hZCAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyIt
LT4KKzwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgorPCEtLUVOVElUWSB2YXJrYXBwYSAi
JiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KKzwhLS1FTlRJVFkgdmFy
cmhvICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJ
VFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSB2YXJlcHNpbG9uICIm
I3gzRjU7Ii0tPgorPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KKzwhLS1FTlRJVFkgYmFj
a2Vwc2lsb24gIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Cis8IS0t
RU5USVRZIERKY3kgIiYjeDQwMjsiLS0+Cis8IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Cis8
IS0tRU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgorPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0t
PgorPCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KKzwhLS1FTlRJVFkgWUljeSAiJiN4NDA3
OyItLT4KKzwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgorPCEtLUVOVElUWSBMSmN5ICIm
I3g0MDk7Ii0tPgorPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgorPCEtLUVOVElUWSBUU0hj
eSAiJiN4NDBCOyItLT4KKzwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KKzwhLS1FTlRJVFkg
VWJyY3kgIiYjeDQwRTsiLS0+Cis8IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Cis8IS0tRU5U
SVRZIEFjeSAiJiN4NDEwOyItLT4KKzwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgorPCEtLUVO
VElUWSBWY3kgIiYjeDQxMjsiLS0+Cis8IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KKzwhLS1F
TlRJVFkgRGN5ICImI3g0MTQ7Ii0tPgorPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgorPCEt
LUVOVElUWSBaSGN5ICImI3g0MTY7Ii0tPgorPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Cis8
IS0tRU5USVRZIEljeSAiJiN4NDE4OyItLT4KKzwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgor
PCEtLUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Cis8IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4K
KzwhLS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgorPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+
Cis8IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KKzwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0t
PgorPCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Cis8IS0tRU5USVRZIFNjeSAiJiN4NDIxOyIt
LT4KKzwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgorPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsi
LS0+Cis8IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KKzwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1
OyItLT4KKzwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KKzwhLS1FTlRJVFkgQ0hjeSAiJiN4
NDI3OyItLT4KKzwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KKzwhLS1FTlRJVFkgU0hDSGN5
ICImI3g0Mjk7Ii0tPgorPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Cis8IS0tRU5USVRZ
IFljeSAiJiN4NDJCOyItLT4KKzwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgorPCEtLUVO
VElUWSBFY3kgIiYjeDQyRDsiLS0+Cis8IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Cis8IS0t
RU5USVRZIFlBY3kgIiYjeDQyRjsiLS0+Cis8IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KKzwh
LS1FTlRJVFkgYmN5ICImI3g0MzE7Ii0tPgorPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Cis8
IS0tRU5USVRZIGdjeSAiJiN4NDMzOyItLT4KKzwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgor
PCEtLUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgorPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0t
PgorPCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Cis8IS0tRU5USVRZIGljeSAiJiN4NDM4OyIt
LT4KKzwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgorPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsi
LS0+Cis8IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KKzwhLS1FTlRJVFkgbWN5ICImI3g0M0M7
Ii0tPgorPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Cis8IS0tRU5USVRZIG9jeSAiJiN4NDNF
OyItLT4KKzwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgorPCEtLUVOVElUWSByY3kgIiYjeDQ0
MDsiLS0+Cis8IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KKzwhLS1FTlRJVFkgdGN5ICImI3g0
NDI7Ii0tPgorPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Cis8IS0tRU5USVRZIGZjeSAiJiN4
NDQ0OyItLT4KKzwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KKzwhLS1FTlRJVFkgdHNjeSAi
JiN4NDQ2OyItLT4KKzwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KKzwhLS1FTlRJVFkgc2hj
eSAiJiN4NDQ4OyItLT4KKzwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgorPCEtLUVOVElU
WSBoYXJkY3kgIiYjeDQ0QTsiLS0+Cis8IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KKzwhLS1F
TlRJVFkgc29mdGN5ICImI3g0NEM7Ii0tPgorPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Cis8
IS0tRU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Cis8IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+
Cis8IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Cis8IS0tRU5USVRZIGRqY3kgIiYjeDQ1Mjsi
LS0+Cis8IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Cis8IS0tRU5USVRZIGp1a2N5ICImI3g0
NTQ7Ii0tPgorPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgorPCEtLUVOVElUWSBpdWtjeSAi
JiN4NDU2OyItLT4KKzwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KKzwhLS1FTlRJVFkganNl
cmN5ICImI3g0NTg7Ii0tPgorPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgorPCEtLUVOVElU
WSBuamN5ICImI3g0NUE7Ii0tPgorPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KKzwhLS1F
TlRJVFkga2pjeSAiJiN4NDVDOyItLT4KKzwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Cis8
IS0tRU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Cis8IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0t
PgorPCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KKzwhLS1FTlRJVFkgZW1zcDEzICImI3gy
MDA0OyItLT4KKzwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KKzwhLS1FTlRJVFkgbnVt
c3AgIiYjeDIwMDc7Ii0tPgorPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgorPCEtLUVO
VElUWSB0aGluc3AgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7
Ii0tPgorPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgorPCEtLUVOVElUWSBWZXJ5VGhp
blNwYWNlICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7
Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEt
LUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0
aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3Bh
Y2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KKzwhLS1FTlRJ
VFkgendqICImI3gyMDBEOyItLT4KKzwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KKzwhLS1F
TlRJVFkgcmxtICImI3gyMDBGOyItLT4KKzwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4K
KzwhLS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Cis8IS0tRU5USVRZIG5kYXNoICImI3gyMDEz
OyItLT4KKzwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgorPCEtLUVOVElUWSBob3JiYXIg
IiYjeDIwMTU7Ii0tPgorPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgorPCEtLUVOVElU
WSBWZXJ0ICImI3gyMDE2OyItLT4KKzwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgorPCEt
LUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Cis8IS0tRU5USVRZIHJzcXVvICIm
I3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkg
Q2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFB
OyItLT4KKzwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgorPCEtLUVOVElUWSBsZHF1byAi
JiN4MjAxQzsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyIt
LT4KKzwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSByZHF1b3IgIiYj
eDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0t
PgorPCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgorPCEtLUVOVElUWSBiZHF1byAiJiN4
MjAxRTsiLS0+Cis8IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Cis8IS0tRU5USVRZIERh
Z2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgorPCEt
LUVOVElUWSBidWxsICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyIt
LT4KKzwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Cis8IS0tRU5USVRZIGhlbGxpcCAiJiN4
MjAyNjsiLS0+Cis8IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgorPCEtLUVOVElUWSBwZXJt
aWwgIiYjeDIwMzA7Ii0tPgorPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KKzwhLS1F
TlRJVFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgorPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+
Cis8IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Cis8IS0tRU5USVRZIGJwcmltZSAiJiN4
MjAzNTsiLS0+Cis8IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Cis8IS0tRU5USVRZ
IGxzYXF1byAiJiN4MjAzOTsiLS0+Cis8IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Cis8
IS0tRU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAz
RTsiLS0+Cis8IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KKzwhLS1FTlRJVFkgaHlidWxs
ICImI3gyMDQzOyItLT4KKzwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgorPCEtLUVOVElU
WSBic2VtaSAiJiN4MjA0RjsiLS0+Cis8IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Cis8
IS0tRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KKzwhLS1FTlRJVFkgVGhpY2tTcGFj
ZSAiJiN4MjA1RjsmI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+
Cis8IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgorPCEtLUVOVElUWSBhZiAi
JiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KKzwh
LS1FTlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4
MjA2MzsiLS0+Cis8IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KKzwhLS1FTlRJVFkgZXVybyAi
JiN4MjBBQzsiLS0+Cis8IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBU
cmlwbGVEb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgor
PCEtLUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgY29tcGxleGVzICImI3gy
MTAyOyItLT4KKzwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KKzwhLS1FTlRJVFkgZ3Nj
ciAiJiN4MjEwQTsiLS0+Cis8IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Cis8IS0tRU5U
SVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7
Ii0tPgorPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElUWSBQb2luY2FyZXBs
YW5lICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgor
PCEtLUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KKzwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEw
RTsiLS0+Cis8IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIGhiYXIg
IiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElU
WSBoc2xhc2ggIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KKzwh
LS1FTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBpbWFnZSAiJiN4MjEx
MTsiLS0+Cis8IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgaW1hZ3BhcnQg
IiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBM
c2NyICImI3gyMTEyOyItLT4KKzwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KKzwhLS1F
TlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGVsbCAiJiN4MjExMzsi
LS0+Cis8IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFscyAi
JiN4MjExNTsiLS0+Cis8IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Cis8IS0tRU5USVRZ
IGNvcHlzciAiJiN4MjExNzsiLS0+Cis8IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Cis8
IS0tRU5USVRZIHdwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+
Cis8IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Cis8IS0tRU5USVRZIHJhdGlvbmFscyAi
JiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgorPCEtLUVOVElUWSBS
c2NyICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Cis8IS0t
RU5USVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Cis8
IS0tRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgUmZyICImI3gyMTFD
OyItLT4KKzwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgorPCEtLUVOVElUWSBSb3BmICIm
I3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgorPCEtLUVOVElUWSB0cmFk
ZSAiJiN4MjEyMjsiLS0+Cis8IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KKzwhLS1FTlRJ
VFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4K
KzwhLS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KKzwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyIt
LT4KKzwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KKzwhLS1FTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ii0tPgorPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgorPCEtLUVOVElUWSBC
ZXJub3VsbGlzICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Cis8
IS0tRU5USVRZIENmciAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7
Ii0tPgorPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KKzwhLS1FTlRJVFkgRXNjciAiJiN4
MjEzMDsiLS0+Cis8IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KKzwhLS1FTlRJ
VFkgRnNjciAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0t
PgorPCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNZWxsaW50cmYg
IiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkg
b3JkZXIgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KKzwh
LS1FTlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7
Ii0tPgorPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Cis8IS0tRU5USVRZIGJldGggIiYj
eDIxMzY7Ii0tPgorPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Cis8IS0tRU5USVRZIGRh
bGV0aCAiJiN4MjEzODsiLS0+Cis8IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gy
MTQ1OyItLT4KKzwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgorPCEtLUVOVElUWSBEaWZmZXJl
bnRpYWxEICImI3gyMTQ2OyItLT4KKzwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgorPCEtLUVO
VElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBleHBvbmVudGlhbGUg
IiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Cis8IS0tRU5USVRZIElt
YWdpbmFyeUkgIiYjeDIxNDg7Ii0tPgorPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Cis8IS0t
RU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Cis8IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsi
LS0+Cis8IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Cis8IS0tRU5USVRZIGZyYWMyNSAi
JiN4MjE1NjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Cis8IS0tRU5USVRZ
IGZyYWM0NSAiJiN4MjE1ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Cis8
IS0tRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Cis8IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1
QjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Cis8IS0tRU5USVRZIGZyYWM1
OCAiJiN4MjE1RDsiLS0+Cis8IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Cis8IS0tRU5U
SVRZIGxhcnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0t
PgorPCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBzbGFyciAi
JiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KKzwh
LS1FTlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7
Ii0tPgorPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgU2hvcnRV
cEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Cis8IS0t
RU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93ICIm
I3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBT
aG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyIt
LT4KKzwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgRG93bkFy
cm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0t
PgorPCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJy
b3cgIiYjeDIxOTQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+
Cis8IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSB1cGRvd25hcnJvdyAi
JiN4MjE5NTsiLS0+Cis8IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KKzwhLS1F
TlRJVFkgbndhcnIgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4
MjE5NjsiLS0+Cis8IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBu
ZWFyciAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5Nzsi
LS0+Cis8IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgorPCEtLUVOVElUWSBzZWFyciAi
JiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElU
WSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5
OTsiLS0+Cis8IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEtLUVOVElUWSBMb3dl
ckxlZnRBcnJvdyAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4K
KzwhLS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Cis8IS0tRU5USVRZIG5yYXJyICIm
I3gyMTlCOyItLT4KKzwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgorPCEtLUVO
VElUWSByYXJydyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4
MjE5RDsiLS0+Cis8IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBMYXJyICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4
MjE5RTsiLS0+Cis8IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgorPCEtLUVOVElUWSBSYXJy
ICImI3gyMUEwOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0t
PgorPCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KKzwhLS1FTlRJVFkgbGFycnRsICImI3gy
MUEyOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Cis8IS0tRU5U
SVRZIHJhcnJ0bCAiJiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gy
MUEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KKzwhLS1FTlRJ
VFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Cis8IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIx
QTU7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Cis8IS0tRU5USVRZIG1h
cCAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgor
PCEtLUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBEb3duVGVlQXJyb3cg
IiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KKzwhLS1F
TlRJVFkgbGFycmhrICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4
MjFBOTsiLS0+Cis8IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Cis8IS0tRU5USVRZIGhv
b2tyaWdodGFycm93ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyIt
LT4KKzwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Cis8IS0tRU5USVRZIHJh
cnJscCAiJiN4MjFBQzsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyIt
LT4KKzwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgor
PCEtLUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgorPCEtLUVOVElUWSBsc2gg
IiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBy
c2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElU
WSBsZHNoICImI3gyMUIyOyItLT4KKzwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Cis8IS0t
RU5USVRZIGNyYXJyICImI3gyMUI1OyItLT4KKzwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyIt
LT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgorPCEtLUVOVElUWSBj
dXJhcnIgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7
Ii0tPgorPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWFy
cm93bGVmdCAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KKzwh
LS1FTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Cis8IS0tRU5USVRZIGxoYXJ1
ICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Cis8IS0t
RU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElUWSBsaGFyZCAiJiN4
MjFCRDsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Cis8IS0t
RU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgdWhhcnIgIiYj
eDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1aGFybCAiJiN4
MjFCRjsiLS0+Cis8IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSByaGFydSAiJiN4MjFD
MDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkg
cmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsi
LS0+Cis8IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElU
WSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElUWSBkaGFyciAiJiN4MjFD
MjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Cis8IS0tRU5U
SVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgorPCEtLUVOVElUWSBkaGFybCAiJiN4
MjFDMzsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KKzwhLS1F
TlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KKzwhLS1FTlRJVFkgcmxhcnIgIiYj
eDIxQzQ7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgorPCEt
LUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KKzwhLS1FTlRJVFkgdWRh
cnIgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyIt
LT4KKzwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRh
cnJvd3MgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gy
MUM2OyItLT4KKzwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgorPCEtLUVOVElUWSBsZWZ0
bGVmdGFycm93cyAiJiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4K
KzwhLS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Cis8IS0tRU5USVRZIHJyYXJyICIm
I3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Cis8
IS0tRU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ii0tPgorPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZ
IFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodGhh
cnBvb25zICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgorPCEt
LUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIEVxdWls
aWJyaXVtICImI3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgorPCEt
LUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KKzwhLS1FTlRJVFkgbmhBcnIgIiYjeDIx
Q0U7Ii0tPgorPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgorPCEtLUVO
VElUWSBuckFyciAiJiN4MjFDRjsiLS0+Cis8IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNG
OyItLT4KKzwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIExlZnRhcnJv
dyAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+
Cis8IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBVcGFycm93ICImI3gy
MUQxOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Cis8IS0tRU5U
SVRZIHJBcnIgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyIt
LT4KKzwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0QXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KKzwh
LS1FTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlRG93bkFy
cm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Cis8IS0tRU5U
SVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTGVmdFJp
Z2h0QXJyb3cgIiYjeDIxRDQ7Ii0tPgorPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgorPCEt
LUVOVElUWSB2QXJyICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIx
RDU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Cis8IS0t
RU5USVRZIG53QXJyICImI3gyMUQ2OyItLT4KKzwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0t
PgorPCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Cis8IS0tRU5USVRZIHN3QXJyICImI3gy
MUQ5OyItLT4KKzwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgorPCEtLUVOVElUWSBMbGVm
dGFycm93ICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgorPCEt
LUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZIHppZ3JhcnIgIiYj
eDIxREQ7Ii0tPgorPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIExl
ZnRBcnJvd0JhciAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4K
KzwhLS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Cis8IS0tRU5USVRZIGR1YXJy
ICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+
Cis8IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KKzwhLS1FTlRJVFkgcm9hcnIgIiYjeDIx
RkU7Ii0tPgorPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Cis8IS0tRU5USVRZIGZvcmFs
bCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5U
SVRZIGNvbXAgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyIt
LT4KKzwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZIFBhcnRpYWxEICIm
I3gyMjAyOyItLT4KKzwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0t
PgorPCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RFeGlzdHMg
IiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KKzwhLS1FTlRJ
VFkgZW1wdHkgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+
Cis8IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIHZhcm5vdGhpbmcg
IiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZ
IERlbCAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgorPCEtLUVO
VElUWSBpc2ludiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0t
PgorPCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIG5vdGluICImI3gyMjA5
OyItLT4KKzwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Cis8IS0tRU5USVRZIG5v
dGludmEgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgorPCEtLUVO
VElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIG5pICImI3gyMjBC
OyItLT4KKzwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBub3Ru
aSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgorPCEtLUVO
VElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIHByb2QgIiYj
eDIyMEY7Ii0tPgorPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KKzwhLS1FTlRJVFkg
Y29wcm9kICImI3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4K
KzwhLS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgU3VtICImI3gyMjExOyIt
LT4KKzwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgorPCEtLUVOVElUWSBtbnBsdXMgIiYj
eDIyMTM7Ii0tPgorPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIE1pbnVz
UGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Cis8IS0t
RU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgorPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsi
LS0+Cis8IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgQmFja3Ns
YXNoICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KKzwhLS1F
TlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIGxvd2FzdCAiJiN4
MjIxNzsiLS0+Cis8IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Cis8IS0tRU5USVRZIFNt
YWxsQ2lyY2xlICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgor
PCEtLUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KKzwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsi
LS0+Cis8IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIFByb3BvcnRp
b25hbCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KKzwhLS1F
TlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7
Ii0tPgorPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Cis8IS0tRU5USVRZIGFuZyAiJiN4
MjIyMDsiLS0+Cis8IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KKzwhLS1FTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4K
KzwhLS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Cis8IS0tRU5USVRZIGFuZ3Nw
aCAiJiN4MjIyMjsiLS0+Cis8IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZ
IFZlcnRpY2FsQmFyICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+
Cis8IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgbm1pZCAiJiN4
MjIyNDsiLS0+Cis8IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KKzwhLS1F
TlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7
Ii0tPgorPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBwYXJhbGxlbCAi
JiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4K
KzwhLS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIHNob3J0cGFyYWxsZWwg
IiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkg
bnBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIg
IiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZ
IG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyIt
LT4KKzwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElUWSBvciAiJiN4MjIy
ODsiLS0+Cis8IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Cis8IS0tRU5USVRZIGNhcCAiJiN4
MjIyOTsiLS0+Cis8IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Cis8IS0tRU5U
SVRZIGN1cCAiJiN4MjIyQTsiLS0+Cis8IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsi
LS0+Cis8IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZIEludGVncmFsICIm
I3gyMjJCOyItLT4KKzwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KKzwhLS1FTlRJVFkgdGlu
dCAiJiN4MjIyRDsiLS0+Cis8IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KKzwhLS1FTlRJ
VFkgY29uaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Cis8
IS0tRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Cis8IS0tRU5USVRZIENvbmlu
dCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIy
RjsiLS0+Cis8IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgorPCEtLUVOVElUWSBjd2lu
dCAiJiN4MjIzMTsiLS0+Cis8IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KKzwhLS1F
TlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KKzwhLS1FTlRJVFkg
YXdjb25pbnQgIiYjeDIyMzM7Ii0tPgorPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91
ckludGVncmFsICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4K
KzwhLS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgVGhlcmVmb3Jl
ICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KKzwhLS1FTlRJ
VFkgYmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0t
PgorPCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Cis8IS0tRU5USVRZIENvbG9uICImI3gy
MjM3OyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Cis8IS0tRU5USVRZ
IG1pbnVzZCAiJiN4MjIzODsiLS0+Cis8IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4K
KzwhLS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgorPCEtLUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ii0tPgorPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVOVElUWSBUaWxkZSAi
JiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZ
IHRoaWNrc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2lt
ICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgorPCEt
LUVOVElUWSBhYyAiJiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+
Cis8IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgorPCEtLUVOVElUWSBhY2QgIiYj
eDIyM0Y7Ii0tPgorPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgorPCEtLUVOVElUWSBW
ZXJ0aWNhbFRpbGRlICImI3gyMjQwOyItLT4KKzwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIy
NDE7Ii0tPgorPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KKzwhLS1FTlRJVFkgRXF1YWxU
aWxkZSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KKzwhLS1F
TlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuZXNp
bSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KKzwh
LS1FTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZIHNpbWVxICImI3gy
MjQzOyItLT4KKzwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBuc2lt
ZXEgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4K
KzwhLS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFs
ICImI3gyMjQ1OyItLT4KKzwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgorPCEtLUVOVElU
WSBuY29uZyAiJiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ3OyItLT4KKzwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSBhcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgorPCEtLUVO
VElUWSBhcHByb3ggIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+
Cis8IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgbmFwICIm
I3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Cis8IS0t
RU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0t
PgorPCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5USVRZIGFwaWQgIiYj
eDIyNEI7Ii0tPgorPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBiY29uZyAiJiN4MjI0QzsiLS0+Cis8IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyIt
LT4KKzwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIEN1cENhcCAi
JiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIy
NEU7Ii0tPgorPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBOb3RI
dW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElU
WSBIdW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0t
PgorPCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90
SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVzZG90ICImI3gyMjUw
OyItLT4KKzwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBkb3Rl
cSAiJiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgorPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1
MTsiLS0+Cis8IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KKzwhLS1FTlRJVFkgZmFsbGlu
Z2RvdHNlcSAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KKzwh
LS1FTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KKzwhLS1FTlRJVFkgY29sb25lICIm
I3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZ
IEFzc2lnbiAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Cis8
IS0tRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgorPCEtLUVOVElUWSBlY2lyICImI3gyMjU2
OyItLT4KKzwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KKzwhLS1FTlRJVFkgY2lyZSAi
JiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZ
IHdlZGdlcSAiJiN4MjI1OTsiLS0+Cis8IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KKzwh
LS1FTlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1
QzsiLS0+Cis8IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Cis8IS0tRU5USVRZIHF1ZXN0
ZXEgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Cis8IS0tRU5USVRZ
IE5vdEVxdWFsICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgor
PCEtLUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgorPCEtLUVOVElUWSBibmVxdWl2ICIm
I3gyMjYxOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgorPCEt
LUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgorPCEtLUVOVElUWSBsZSAiJiN4MjI2
NDsiLS0+Cis8IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5USVRZIG52bGUgIiYj
eDIyNjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KKzwhLS1FTlRJ
VFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyIt
LT4KKzwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbEUg
IiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KKzwh
LS1FTlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBnRSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7
Ii0tPgorPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KKzwhLS1FTlRJVFkgbmdFICImI3gy
MjY3OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbG5FICImI3gyMjY4OyItLT4KKzwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgor
PCEtLUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBsdmVydG5l
cXEgIiYjeDIyNjg7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Cis8
IS0tRU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsm
I3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICIm
I3gyMjZBOyItLT4KKzwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBuTHR2
ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJ
VFkgR3QgIiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4
MjI2QjsiLS0+Cis8IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgbkd0diAi
JiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIHR3aXh0ICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2Qzsi
LS0+Cis8IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Cis8IS0tRU5USVRZIG5sdCAi
JiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElU
WSBubGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Cis8IS0t
RU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBuZ3RyICImI3gyMjZG
OyItLT4KKzwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgTm90TGVzc0Vx
dWFsICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Cis8IS0tRU5U
SVRZIG5nZSAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3
MTsiLS0+Cis8IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgorPCEtLUVOVElUWSBsc2ltICIm
I3gyMjcyOyItLT4KKzwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KKzwhLS1FTlRJ
VFkgbGVzc3NpbSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgor
PCEtLUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUg
IiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZ
IE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyIt
LT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KKzwhLS1FTlRJVFkg
bGcgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KKzwhLS1F
TlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBnbCAiJiN4MjI3Nzsi
LS0+Cis8IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVy
TGVzcyAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgorPCEtLUVO
VElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZIG50Z2wgIiYjeDIy
Nzk7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Cis8IS0tRU5U
SVRZIHByICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgor
PCEtLUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0t
PgorPCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIHN1Y2MgIiYj
eDIyN0I7Ii0tPgorPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIFBy
ZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHByZWNjdXJseWVxICIm
I3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBT
dWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBzdWNjY3VybHllcSAi
JiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KKzwhLS1FTlRJVFkg
cHJlY3NpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7
Ii0tPgorPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5USVRZIHN1Y2NzaW0g
IiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KKzwh
LS1FTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBucHIgIiYjeDIyODA7Ii0tPgorPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Cis8IS0t
RU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgbnNjICImI3gyMjgx
OyItLT4KKzwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNj
ZWVkcyAiJiN4MjI4MTsiLS0+Cis8IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Cis8IS0tRU5U
SVRZIHN1YnNldCAiJiN4MjI4MjsiLS0+Cis8IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIw
RDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHN1cCAiJiN4
MjI4MzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIFN1
cGVyc2V0ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsi
LS0+Cis8IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZ
IE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBuc3ViICImI3gy
Mjg0OyItLT4KKzwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Cis8IS0tRU5USVRZIHN1YmUg
IiYjeDIyODY7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Cis8IS0t
RU5USVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4Nzsi
LS0+Cis8IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KKzwhLS1FTlRJVFkgU3VwZXJz
ZXRFcXVhbCAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KKzwh
LS1FTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkgTm90U3Vic2V0RXF1
YWwgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5U
SVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwg
IiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZ
IHN1YnNldG5lcSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hG
RTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4
MjI4QjsiLS0+Cis8IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KKzwhLS1F
TlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBjdXBk
b3QgIiYjeDIyOEQ7Ii0tPgorPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyIt
LT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgc3Fz
dWJzZXQgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBT
cXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkw
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0
RXF1YWwgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4K
KzwhLS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3VwZXJz
ZXRFcXVhbCAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0t
PgorPCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZUludGVy
c2VjdGlvbiAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVV
bmlvbiAiJiN4MjI5NDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVQbHVz
ICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7
Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Cis8IS0tRU5USVRZIG9z
b2wgIiYjeDIyOTg7Ii0tPgorPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlRG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+
Cis8IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KKzwhLS1FTlRJVFkgb2FzdCAi
JiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgorPCEtLUVO
VElUWSBvZGFzaCAiJiN4MjI5RDsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlE
OyItLT4KKzwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgorPCEtLUVOVElUWSBib3hwbHVz
ICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KKzwhLS1FTlRJ
VFkgYm94bWludXMgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0t
PgorPCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Cis8IS0tRU5USVRZIHNkb3RiICIm
I3gyMkExOyItLT4KKzwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KKzwhLS1FTlRJ
VFkgdmRhc2ggIiYjeDIyQTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+
Cis8IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4
MjJBMzsiLS0+Cis8IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Cis8IS0tRU5USVRZIERvd25U
ZWUgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgorPCEtLUVO
VElUWSBib3QgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KKzwh
LS1FTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7
Ii0tPgorPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0VGVlICImI3gyMkE4OyItLT4KKzwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgorPCEt
LUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgorPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsi
LS0+Cis8IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Cis8IS0tRU5USVRZIG52RGFzaCAi
JiN4MjJBRDsiLS0+Cis8IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Cis8IS0tRU5USVRZ
IG5WRGFzaCAiJiN4MjJBRjsiLS0+Cis8IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Cis8
IS0tRU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0
ICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KKzwh
LS1FTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0
ICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Cis8
IS0tRU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEg
IiYjeDIyQjQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+
Cis8IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHJ0
cmllICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KKzwhLS1FTlRJ
VFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgb3JpZ29mICImI3gy
MkI2OyItLT4KKzwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Cis8IS0tRU5USVRZIG11bWFw
ICImI3gyMkI4OyItLT4KKzwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgorPCEtLUVO
VElUWSBoZXJjb24gIiYjeDIyQjk7Ii0tPgorPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0t
PgorPCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5USVRZIHZlZWJhciAi
JiN4MjJCQjsiLS0+Cis8IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Cis8IS0tRU5USVRZ
IGFuZ3J0dmIgIiYjeDIyQkU7Ii0tPgorPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Cis8
IS0tRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIFdlZGdlICImI3gyMkMw
OyItLT4KKzwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSB4dmVl
ICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkg
YmlndmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Cis8IS0t
RU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZIGJpZ2NhcCAiJiN4
MjJDMjsiLS0+Cis8IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgorPCEtLUVOVElUWSBVbmlv
biAiJiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Cis8IS0tRU5U
SVRZIGRpYW0gIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4K
KzwhLS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Cis8IS0tRU5USVRZIHNkb3QgIiYjeDIy
QzU7Ii0tPgorPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgorPCEtLUVOVElUWSBTdGFy
ICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KKzwhLS1FTlRJ
VFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Cis8IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJD
ODsiLS0+Cis8IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Cis8IS0tRU5USVRZIHJ0aW1l
cyAiJiN4MjJDQTsiLS0+Cis8IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Cis8IS0tRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkgcnRocmVlICImI3gy
MkNDOyItLT4KKzwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KKzwhLS1F
TlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7
Ii0tPgorPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5USVRZIGN1cmx5dmVl
ICImI3gyMkNFOyItLT4KKzwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgorPCEtLUVOVElU
WSBjdXJseXdlZGdlICImI3gyMkNGOyItLT4KKzwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4K
KzwhLS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KKzwhLS1FTlRJVFkgU3VwICImI3gyMkQx
OyItLT4KKzwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KKzwhLS1FTlRJVFkgQ2FwICIm
I3gyMkQyOyItLT4KKzwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KKzwhLS1FTlRJVFkgZm9y
ayAiJiN4MjJENDsiLS0+Cis8IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Cis8IS0t
RU5USVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgorPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+
Cis8IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgorPCEtLUVOVElUWSBndGRvdCAiJiN4
MjJENzsiLS0+Cis8IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Cis8IS0tRU5USVRZIExs
ICImI3gyMkQ4OyItLT4KKzwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIEdnICImI3gyMkQ5OyItLT4KKzwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KKzwh
LS1FTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGxlZyAiJiN4MjJE
QTsiLS0+Cis8IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgorPCEtLUVO
VElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgorPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBndHJl
cWxlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRC
OyItLT4KKzwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkg
Y3VlcHIgIiYjeDIyREU7Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+
Cis8IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkgY3VybHllcXN1Y2Mg
IiYjeDIyREY7Ii0tPgorPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElU
WSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElUWSBuc2NjdWUg
IiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7
Ii0tPgorPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1
YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgorPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUz
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Cis8
IS0tRU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KKzwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7
Ii0tPgorPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVOVElUWSBwcmVjbnNp
bSAiJiN4MjJFODsiLS0+Cis8IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgTm90
TGVmdFRyaWFuZ2xlICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Cis8IS0tRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7
Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIG5ydHJpZSAi
JiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgor
PCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgorPCEtLUVOVElU
WSB2ZWxsaXAgIiYjeDIyRUU7Ii0tPgorPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Cis8
IS0tRU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KKzwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7
Ii0tPgorPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Cis8IS0tRU5USVRZIGlzaW5zdiAi
JiN4MjJGMzsiLS0+Cis8IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KKzwhLS1FTlRJVFkg
aXNpbmRvdCAiJiN4MjJGNTsiLS0+Cis8IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMz
ODsiLS0+Cis8IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgorPCEtLUVOVElUWSBub3Rp
bnZiICImI3gyMkY3OyItLT4KKzwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgorPCEtLUVO
VElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmlzZCAiJiN4MjJG
QTsiLS0+Cis8IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgorPCEtLUVOVElUWSBuaXMgIiYj
eDIyRkM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KKzwhLS1FTlRJVFkg
bm90bml2YiAiJiN4MjJGRTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Cis8
IS0tRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkgQmFyd2VkICImI3gy
MzA2OyItLT4KKzwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgorPCEtLUVO
VElUWSBsY2VpbCAiJiN4MjMwODsiLS0+Cis8IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4
OyItLT4KKzwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBSaWdodENl
aWxpbmcgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEt
LUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEtLUVOVElUWSByZmxvb3IgIiYjeDIz
MEI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KKzwhLS1FTlRJVFkg
ZHJjcm9wICImI3gyMzBDOyItLT4KKzwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KKzwh
LS1FTlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KKzwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBG
OyItLT4KKzwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Cis8IS0tRU5USVRZIHByb2ZsaW5l
ICImI3gyMzEyOyItLT4KKzwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgorPCEtLUVO
VElUWSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgorPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0t
PgorPCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElUWSB1bGNvcm5lciAi
JiN4MjMxQzsiLS0+Cis8IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Cis8IS0tRU5USVRZ
IHVyY29ybmVyICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4K
KzwhLS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElUWSBkcmNvcm4gIiYj
eDIzMUY7Ii0tPgorPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Cis8IS0tRU5USVRZ
IGZyb3duICImI3gyMzIyOyItLT4KKzwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KKzwh
LS1FTlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ii0tPgorPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgorPCEtLUVOVElUWSBwcm9mYWxh
ciAiJiN4MjMyRTsiLS0+Cis8IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Cis8IS0tRU5U
SVRZIG92YmFyICImI3gyMzNEOyItLT4KKzwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4K
KzwhLS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdCAiJiN4
MjNCMDsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgorPCEtLUVOVElU
WSBybW91c3QgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyIt
LT4KKzwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFja2V0
ICImI3gyM0I0OyItLT4KKzwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZ
IFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2
OyItLT4KKzwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KKzwhLS1FTlRJ
VFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFjZSAi
JiN4MjNERTsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgorPCEtLUVO
VElUWSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Cis8IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3
OyItLT4KKzwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgorPCEtLUVOVElUWSBvUyAiJiN4
MjRDODsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KKzwhLS1FTlRJVFkg
Ym94aCAiJiN4MjUwMDsiLS0+Cis8IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyIt
LT4KKzwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Cis8IS0tRU5USVRZIGJveGRyICImI3gy
NTBDOyItLT4KKzwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgorPCEtLUVOVElUWSBib3h1
ciAiJiN4MjUxNDsiLS0+Cis8IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KKzwhLS1FTlRJ
VFkgYm94dnIgIiYjeDI1MUM7Ii0tPgorPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Cis8
IS0tRU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KKzwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7
Ii0tPgorPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Cis8IS0tRU5USVRZIGJveEggIiYj
eDI1NTA7Ii0tPgorPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KKzwhLS1FTlRJVFkgYm94
ZFIgIiYjeDI1NTI7Ii0tPgorPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Cis8IS0tRU5U
SVRZIGJveERSICImI3gyNTU0OyItLT4KKzwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgor
PCEtLUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Cis8IS0tRU5USVRZIGJveERMICImI3gyNTU3
OyItLT4KKzwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgorPCEtLUVOVElUWSBib3hVciAi
JiN4MjU1OTsiLS0+Cis8IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KKzwhLS1FTlRJVFkg
Ym94dUwgIiYjeDI1NUI7Ii0tPgorPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Cis8IS0t
RU5USVRZIGJveFVMICImI3gyNTVEOyItLT4KKzwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0t
PgorPCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Cis8IS0tRU5USVRZIGJveFZSICImI3gy
NTYwOyItLT4KKzwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgorPCEtLUVOVElUWSBib3hW
bCAiJiN4MjU2MjsiLS0+Cis8IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KKzwhLS1FTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ii0tPgorPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Cis8
IS0tRU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KKzwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7
Ii0tPgorPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Cis8IS0tRU5USVRZIGJveEhVICIm
I3gyNTY5OyItLT4KKzwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgorPCEtLUVOVElUWSBi
b3hWaCAiJiN4MjU2QjsiLS0+Cis8IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KKzwhLS1F
TlRJVFkgdWhibGsgIiYjeDI1ODA7Ii0tPgorPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+
Cis8IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KKzwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1
OTE7Ii0tPgorPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Cis8IS0tRU5USVRZIGJsazM0
ICImI3gyNTkzOyItLT4KKzwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkg
c3F1YXJlICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KKzwh
LS1FTlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsi
LS0+Cis8IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRmls
bGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRW1wdHlWZXJ5U21h
bGxTcXVhcmUgIiYjeDI1QUI7Ii0tPgorPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KKzwh
LS1FTlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KKzwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7
Ii0tPgorPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Cis8IS0tRU5USVRZIGJpZ3RyaWFu
Z2xldXAgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Cis8IS0t
RU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgorPCEtLUVOVElUWSB1dHJpICImI3gy
NUI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgorPCEtLUVOVElUWSBy
dHJpZiAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVC
ODsiLS0+Cis8IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmds
ZXJpZ2h0ICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgorPCEt
LUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgorPCEtLUVOVElUWSBkdHJpZiAi
JiN4MjVCRTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4K
KzwhLS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlZG93biAi
JiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KKzwhLS1FTlRJVFkg
YmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBsdHJpICImI3gyNUMz
OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KKzwhLS1FTlRJVFkg
bG96ICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Cis8IS0t
RU5USVRZIGNpciAiJiN4MjVDQjsiLS0+Cis8IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+
Cis8IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4
MjVFRjsiLS0+Cis8IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KKzwhLS1FTlRJVFkgdXJ0
cmkgIiYjeDI1Rjk7Ii0tPgorPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Cis8IS0tRU5U
SVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgorPCEtLUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiLS0+Cis8IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KKzwh
LS1FTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Cis8IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7
Ii0tPgorPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Cis8IS0tRU5USVRZIGZlbWFsZSAi
JiN4MjY0MDsiLS0+Cis8IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgorPCEtLUVOVElUWSBz
cGFkZXMgIiYjeDI2NjA7Ii0tPgorPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgor
PCEtLUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGNsdWJzdWl0ICImI3gy
NjYzOyItLT4KKzwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgaGVh
cnRzdWl0ICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgorPCEt
LUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZIHN1bmcgIiYjeDI2
NkE7Ii0tPgorPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KKzwhLS1FTlRJVFkgbmF0dXIg
IiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KKzwhLS1FTlRJ
VFkgc2hhcnAgIiYjeDI2NkY7Ii0tPgorPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Cis8
IS0tRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Cis8IS0tRU5USVRZIGNyb3NzICImI3gy
NzE3OyItLT4KKzwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Cis8IS0tRU5USVRZIG1hbHRl
c2UgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KKzwhLS1FTlRJ
VFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgorPCEtLUVOVElUWSBsYmJyayAiJiN4
Mjc3MjsiLS0+Cis8IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KKzwhLS1FTlRJVFkgYnNv
bGhzdWIgIiYjeDI3Qzg7Ii0tPgorPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KKzwh
LS1FTlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tl
dCAiJiN4MjdFNjsiLS0+Cis8IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KKzwhLS1FTlRJ
VFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KKzwhLS1FTlRJVFkgbGFuZyAiJiN4
MjdFODsiLS0+Cis8IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgorPCEt
LUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElU
WSByYW5nbGUgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KKzwh
LS1FTlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Cis8IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyIt
LT4KKzwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgorPCEtLUVOVElUWSB4bGFyciAiJiN4
MjdGNTsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgorPCEtLUVO
VElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3
RjY7Ii0tPgorPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Cis8IS0tRU5U
SVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3
Rjc7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEt
LUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEtLUVOVElUWSB4bEFy
ciAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgor
PCEtLUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KKzwhLS1FTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
LS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KKzwhLS1F
TlRJVFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cg
IiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3
RkE7Ii0tPgorPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KKzwhLS1FTlRJVFkgbG9uZ21h
cHN0byAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KKzwh
LS1FTlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KKzwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAz
OyItLT4KKzwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KKzwhLS1FTlRJVFkgTWFwICIm
I3gyOTA1OyItLT4KKzwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgorPCEtLUVOVElUWSBy
YmFyciAiJiN4MjkwRDsiLS0+Cis8IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Cis8IS0t
RU5USVRZIGxCYXJyICImI3gyOTBFOyItLT4KKzwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0t
PgorPCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KKzwhLS1FTlRJVFkgUkJhcnIgIiYj
eDI5MTA7Ii0tPgorPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Cis8IS0tRU5USVRZ
IEREb3RyYWhkICImI3gyOTExOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsi
LS0+Cis8IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Cis8IS0tRU5USVRZIFJh
cnJ0bCAiJiN4MjkxNjsiLS0+Cis8IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Cis8IS0t
RU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Cis8IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsi
LS0+Cis8IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Cis8IS0tRU5USVRZIGxhcnJmcyAi
JiN4MjkxRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Cis8IS0tRU5USVRZ
IGxhcnJiZnMgIiYjeDI5MUY7Ii0tPgorPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4K
KzwhLS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KKzwhLS1FTlRJVFkgbmVhcmhrICImI3gy
OTI0OyItLT4KKzwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KKzwhLS1FTlRJVFkgaGtz
ZWFyb3cgIiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgorPCEt
LUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIG53bmVhciAiJiN4Mjky
NzsiLS0+Cis8IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Cis8IS0tRU5USVRZIHRvZWEg
IiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgorPCEtLUVOVElU
WSB0b3NhICImI3gyOTI5OyItLT4KKzwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KKzwh
LS1FTlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgorPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Cis8IS0tRU5USVRZ
IGxkY2EgIiYjeDI5MzY7Ii0tPgorPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KKzwhLS1F
TlRJVFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Cis8IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsi
LS0+Cis8IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgorPCEtLUVOVElUWSBjdWxhcnJw
ICImI3gyOTNEOyItLT4KKzwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KKzwhLS1FTlRJ
VFkgaGFycmNpciAiJiN4Mjk0ODsiLS0+Cis8IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyIt
LT4KKzwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgorPCEtLUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiLS0+Cis8IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+
Cis8IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KKzwhLS1FTlRJVFkg
RG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Cis8IS0tRU5USVRZIExlZnRVcERvd25W
ZWN0b3IgIiYjeDI5NTE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9y
QmFyICImI3gyOTU1OyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7
Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG93blZl
Y3RvckJhciAiJiN4Mjk1OTsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7
Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Cis8IS0tRU5USVRZ
IFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvd25UZWVW
ZWN0b3IgIiYjeDI5NUQ7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1
RTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Cis8IS0t
RU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Cis8IS0tRU5USVRZIExlZnREb3du
VGVlVmVjdG9yICImI3gyOTYxOyItLT4KKzwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Cis8
IS0tRU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgorPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyIt
LT4KKzwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Cis8IS0tRU5USVRZIGx1cnVoYXIgIiYj
eDI5NjY7Ii0tPgorPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KKzwhLS1FTlRJVFkg
cnVsdWhhciAiJiN4Mjk2ODsiLS0+Cis8IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgor
PCEtLUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgorPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5
NkI7Ii0tPgorPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgorPCEtLUVOVElUWSBscmhh
cmQgIiYjeDI5NkQ7Ii0tPgorPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Cis8IS0tRU5U
SVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgorPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2
RjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KKzwh
LS1FTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KKzwhLS1FTlRJVFkgZXJhcnIgIiYj
eDI5NzE7Ii0tPgorPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KKzwhLS1FTlRJVFkg
bGFycnNpbSAiJiN4Mjk3MzsiLS0+Cis8IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgor
PCEtLUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgorPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5
NzY7Ii0tPgorPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgorPCEtLUVOVElUWSBzdWJy
YXJyICImI3gyOTc5OyItLT4KKzwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Cis8IS0t
RU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Cis8IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsi
LS0+Cis8IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Cis8IS0tRU5USVRZIGRmaXNodCAi
JiN4Mjk3RjsiLS0+Cis8IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KKzwhLS1FTlRJVFkg
cm9wYXIgIiYjeDI5ODY7Ii0tPgorPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Cis8IS0t
RU5USVRZIHJicmtlICImI3gyOThDOyItLT4KKzwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsi
LS0+Cis8IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgorPCEtLUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Cis8IS0tRU5U
SVRZIGxhbmdkICImI3gyOTkxOyItLT4KKzwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgor
PCEtLUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgorPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5
OTQ7Ii0tPgorPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgorPCEtLUVOVElUWSBsdHJQ
YXIgIiYjeDI5OTY7Ii0tPgorPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KKzwhLS1F
TlRJVFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7
Ii0tPgorPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KKzwhLS1FTlRJVFkgcmFuZ2UgIiYj
eDI5QTU7Ii0tPgorPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KKzwhLS1FTlRJVFkg
dXdhbmdsZSAiJiN4MjlBNzsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4K
KzwhLS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYyAi
JiN4MjlBQTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KKzwhLS1FTlRJ
VFkgYW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsi
LS0+Cis8IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNk
YWggIiYjeDI5QUY7Ii0tPgorPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KKzwhLS1F
TlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Cis8IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7
Ii0tPgorPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Cis8IS0tRU5USVRZIGxhZW1w
dHl2ICImI3gyOUI0OyItLT4KKzwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgorPCEtLUVO
VElUWSBvbWlkICImI3gyOUI2OyItLT4KKzwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Cis8
IS0tRU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KKzwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlC
QjsiLS0+Cis8IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Cis8IS0tRU5USVRZIG9sY2ly
ICImI3gyOUJFOyItLT4KKzwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgorPCEtLUVOVElU
WSBvbHQgIiYjeDI5QzA7Ii0tPgorPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgorPCEtLUVO
VElUWSBjaXJzY2lyICImI3gyOUMyOyItLT4KKzwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+
Cis8IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgorPCEtLUVOVElUWSBic29sYiAiJiN4MjlD
NTsiLS0+Cis8IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Cis8IS0tRU5USVRZIHRyaXNi
ICImI3gyOUNEOyItLT4KKzwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgorPCEtLUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJh
ciAiJiN4MjlEMDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KKzwhLS1FTlRJVFkg
aW5maW50aWUgIiYjeDI5REQ7Ii0tPgorPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4K
KzwhLS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KKzwhLS1FTlRJVFkgc21lcGFyc2wgIiYj
eDI5RTQ7Ii0tPgorPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Cis8IS0tRU5USVRZ
IGxvemYgIiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0t
PgorPCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Cis8IS0tRU5USVRZIGRzb2wg
IiYjeDI5RjY7Ii0tPgorPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Cis8IS0tRU5USVRZ
IGJpZ29kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgor
PCEtLUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZIHhvdGltZSAiJiN4
MkEwMjsiLS0+Cis8IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Cis8IS0tRU5USVRZ
IHh1cGx1cyAiJiN4MkEwNDsiLS0+Cis8IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4K
KzwhLS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkgYmlnc3FjdXAgIiYj
eDJBMDY7Ii0tPgorPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgaWlp
aW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgorPCEt
LUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Cis8IS0tRU5USVRZIGF3aW50ICImI3gyQTEx
OyItLT4KKzwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgorPCEtLUVOVElUWSBzY3Bv
bGludCAiJiN4MkExMzsiLS0+Cis8IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgorPCEt
LUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Cis8IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJB
MTY7Ii0tPgorPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Cis8IS0tRU5USVRZIHBs
dXNjaXIgIiYjeDJBMjI7Ii0tPgorPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Cis8
IS0tRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgorPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJB
MjU7Ii0tPgorPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KKzwhLS1FTlRJVFkgcGx1
c3R3byAiJiN4MkEyNzsiLS0+Cis8IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Cis8IS0t
RU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgorPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7
Ii0tPgorPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgorPCEtLUVOVElUWSBDcm9zcyAi
JiN4MkEyRjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Cis8IS0tRU5USVRZ
IHRpbWVzYmFyICImI3gyQTMxOyItLT4KKzwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4K
KzwhLS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Cis8IS0tRU5USVRZIHJvdGltZXMgIiYj
eDJBMzU7Ii0tPgorPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Cis8IS0tRU5USVRZ
IE90aW1lcyAiJiN4MkEzNzsiLS0+Cis8IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgorPCEt
LUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KKzwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJB
M0E7Ii0tPgorPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KKzwhLS1FTlRJVFkgaXBy
b2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KKzwhLS1F
TlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgorPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0t
PgorPCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KKzwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0
MzsiLS0+Cis8IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Cis8IS0tRU5USVRZIGN1cG9y
ICImI3gyQTQ1OyItLT4KKzwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KKzwhLS1FTlRJ
VFkgY2FwY3VwICImI3gyQTQ3OyItLT4KKzwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0t
PgorPCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Cis8IS0tRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiLS0+Cis8IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Cis8IS0tRU5USVRZ
IGNjdXBzICImI3gyQTRDOyItLT4KKzwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgorPCEt
LUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KKzwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyIt
LT4KKzwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgorPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJB
NTU7Ii0tPgorPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KKzwhLS1FTlRJVFkgb3JzbG9w
ZSAiJiN4MkE1NzsiLS0+Cis8IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KKzwhLS1F
TlRJVFkgYW5kdiAiJiN4MkE1QTsiLS0+Cis8IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Cis8
IS0tRU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgorPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0t
PgorPCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgorPCEtLUVOVElUWSBzZG90ZSAiJiN4
MkE2NjsiLS0+Cis8IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Cis8IS0tRU5USVRZIGNv
bmdkb3QgIiYjeDJBNkQ7Ii0tPgorPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgorPCEtLUVOVElUWSBhcGFjaXIg
IiYjeDJBNkY7Ii0tPgorPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgorPCEtLUVOVElUWSBu
YXBFICImI3gyQTcwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4K
KzwhLS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgorPCEtLUVOVElUWSBFc2ltICImI3gyQTcz
OyItLT4KKzwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KKzwhLS1FTlRJVFkgRXF1YWwg
IiYjeDJBNzU7Ii0tPgorPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Cis8IS0tRU5USVRZ
IGRkb3RzZXEgIiYjeDJBNzc7Ii0tPgorPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4K
KzwhLS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgorPCEtLUVOVElUWSBndGNpciAiJiN4MkE3
QTsiLS0+Cis8IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgorPCEtLUVOVElUWSBndHF1
ZXN0ICImI3gyQTdDOyItLT4KKzwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KKzwhLS1FTlRJ
VFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4
MkE3RDsiLS0+Cis8IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmxl
cXNsYW50ICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+
Cis8IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkg
Z2Vxc2xhbnQgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+
Cis8IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBs
ZXNkb3QgIiYjeDJBN0Y7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgorPCEt
LUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KKzwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4
MjsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KKzwhLS1FTlRJVFkgZ2Vz
ZG90b2wgIiYjeDJBODQ7Ii0tPgorPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgorPCEtLUVO
VElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KKzwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyIt
LT4KKzwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KKzwhLS1FTlRJVFkgbG5lICIm
I3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Cis8IS0tRU5USVRZIGdu
ZSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgorPCEtLUVOVElU
WSBsbmFwICImI3gyQTg5OyItLT4KKzwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgor
PCEtLUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KKzwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJB
OEE7Ii0tPgorPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgorPCEtLUVOVElUWSBsZXNzZXFx
Z3RyICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KKzwhLS1FTlRJ
VFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Cis8IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyIt
LT4KKzwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgorPCEtLUVOVElUWSBsc2ltZyAiJiN4
MkE4RjsiLS0+Cis8IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KKzwhLS1FTlRJVFkgbGdF
ICImI3gyQTkxOyItLT4KKzwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KKzwhLS1FTlRJVFkg
bGVzZ2VzICImI3gyQTkzOyItLT4KKzwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KKzwh
LS1FTlRJVFkgZWxzICImI3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJB
OTU7Ii0tPgorPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgorPCEtLUVOVElUWSBlcXNsYW50
Z3RyICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KKzwhLS1F
TlRJVFkgZWdzZG90ICImI3gyQTk4OyItLT4KKzwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgor
PCEtLUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Cis8IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0t
PgorPCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KKzwhLS1FTlRJVFkgc2ltbEUgIiYjeDJB
OUY7Ii0tPgorPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Cis8IS0tRU5USVRZIExlc3NM
ZXNzICImI3gyQUExOyItLT4KKzwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgorPCEt
LUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgorPCEt
LUVOVElUWSBnbGogIiYjeDJBQTQ7Ii0tPgorPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgor
PCEtLUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KKzwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsi
LS0+Cis8IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KKzwhLS1FTlRJVFkgZ2VzY2MgIiYj
eDJBQTk7Ii0tPgorPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgorPCEtLUVOVElUWSBsYXQg
IiYjeDJBQUI7Ii0tPgorPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KKzwhLS1FTlRJVFkg
c210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0t
PgorPCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgYnVt
cEUgIiYjeDJBQUU7Ii0tPgorPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElU
WSBwcmVjZXEgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFG
OyItLT4KKzwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBu
cHJlY2VxICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwg
IiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KKzwhLS1F
TlRJVFkgc3VjY2VxICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4
MkFCMDsiLS0+Cis8IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc0Vx
dWFsICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Cis8
IS0tRU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Cis8IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0t
PgorPCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5USVRZIHNjbkUgIiYj
eDJBQjY7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Cis8IS0tRU5USVRZ
IHByYXAgIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4K
KzwhLS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYj
eDJBQjg7Ii0tPgorPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Cis8IS0tRU5USVRZIHBy
ZWNuYXBwcm94ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgor
PCEtLUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5USVRZIFByICImI3gy
QUJCOyItLT4KKzwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgorPCEtLUVOVElUWSBzdWJkb3Qg
IiYjeDJBQkQ7Ii0tPgorPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgorPCEtLUVOVElU
WSBzdWJwbHVzICImI3gyQUJGOyItLT4KKzwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+
Cis8IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgorPCEtLUVOVElUWSBzdXBtdWx0ICIm
I3gyQUMyOyItLT4KKzwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Cis8IS0tRU5USVRZ
IHN1cGVkb3QgIiYjeDJBQzQ7Ii0tPgorPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KKzwh
LS1FTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KKzwhLS1FTlRJVFkgbnN1YkUgIiYjeDJB
QzU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0ZXFxICIm
I3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzdWJzaW0g
IiYjeDJBQzc7Ii0tPgorPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgorPCEtLUVOVElU
WSBzdWJuRSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0t
PgorPCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZh
cnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHN1cG5FICImI3gy
QUNDOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Cis8IS0tRU5USVRZ
IHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAi
JiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Cis8IS0t
RU5USVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgorPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+
Cis8IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KKzwhLS1FTlRJVFkgc3Vic3VwICImI3gy
QUQzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KKzwhLS1FTlRJVFkgc3Vi
c3ViICImI3gyQUQ1OyItLT4KKzwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KKzwhLS1F
TlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Cis8IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ii0tPgorPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Cis8IS0tRU5USVRZIHRvcGZvcmsg
IiYjeDJBREE7Ii0tPgorPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KKzwhLS1FTlRJVFkg
RGFzaHYgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyIt
LT4KKzwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KKzwhLS1FTlRJVFkgQmFydiAiJiN4
MkFFNzsiLS0+Cis8IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgorPCEtLUVOVElUWSB2QmFy
diAiJiN4MkFFOTsiLS0+Cis8IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgorPCEtLUVOVElU
WSBOb3QgIiYjeDJBRUM7Ii0tPgorPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KKzwhLS1F
TlRJVFkgcm5taWQgIiYjeDJBRUU7Ii0tPgorPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0t
PgorPCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgorPCEtLUVOVElUWSB0b3BjaXIgIiYj
eDJBRjE7Ii0tPgorPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Cis8IS0tRU5USVRZIHBh
cnNpbSAiJiN4MkFGMzsiLS0+Cis8IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KKzwhLS1F
TlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBmZmxpZyAiJiN4
RkIwMDsiLS0+Cis8IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KKzwhLS1FTlRJVFkgZmxs
aWcgIiYjeEZCMDI7Ii0tPgorPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgorPCEtLUVO
VElUWSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgorPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+
Cis8IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KKzwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0
OUY7Ii0tPgorPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Cis8IS0tRU5USVRZIEpzY3Ig
IiYjeDFENEE1OyItLT4KKzwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgorPCEtLUVOVElU
WSBOc2NyICImI3gxRDRBOTsiLS0+Cis8IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KKzwh
LS1FTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgorPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsi
LS0+Cis8IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KKzwhLS1FTlRJVFkgVHNjciAiJiN4
MUQ0QUY7Ii0tPgorPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Cis8IS0tRU5USVRZIFZz
Y3IgIiYjeDFENEIxOyItLT4KKzwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgorPCEtLUVO
VElUWSBYc2NyICImI3gxRDRCMzsiLS0+Cis8IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4K
KzwhLS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgorPCEtLUVOVElUWSBhc2NyICImI3gxRDRC
NjsiLS0+Cis8IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KKzwhLS1FTlRJVFkgY3NjciAi
JiN4MUQ0Qjg7Ii0tPgorPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Cis8IS0tRU5USVRZ
IGZzY3IgIiYjeDFENEJCOyItLT4KKzwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgorPCEt
LUVOVElUWSBpc2NyICImI3gxRDRCRTsiLS0+Cis8IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyIt
LT4KKzwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgorPCEtLUVOVElUWSBsc2NyICImI3gx
RDRDMTsiLS0+Cis8IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KKzwhLS1FTlRJVFkgbnNj
ciAiJiN4MUQ0QzM7Ii0tPgorPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Cis8IS0tRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyItLT4KKzwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgor
PCEtLUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Cis8IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5
OyItLT4KKzwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgorPCEtLUVOVElUWSB2c2NyICIm
I3gxRDRDQjsiLS0+Cis8IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KKzwhLS1FTlRJVFkg
eHNjciAiJiN4MUQ0Q0Q7Ii0tPgorPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Cis8IS0t
RU5USVRZIHpzY3IgIiYjeDFENENGOyItLT4KKzwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+
Cis8IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgorPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3
OyItLT4KKzwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Cis8IS0tRU5USVRZIEZmciAiJiN4
MUQ1MDk7Ii0tPgorPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KKzwhLS1FTlRJVFkgSmZy
ICImI3gxRDUwRDsiLS0+Cis8IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgorPCEtLUVOVElU
WSBMZnIgIiYjeDFENTBGOyItLT4KKzwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Cis8IS0t
RU5USVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgorPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4K
KzwhLS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Cis8IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7
Ii0tPgorPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KKzwhLS1FTlRJVFkgVGZyICImI3gx
RDUxNzsiLS0+Cis8IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgorPCEtLUVOVElUWSBWZnIg
IiYjeDFENTE5OyItLT4KKzwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Cis8IS0tRU5USVRZ
IFhmciAiJiN4MUQ1MUI7Ii0tPgorPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KKzwhLS1F
TlRJVFkgYWZyICImI3gxRDUxRTsiLS0+Cis8IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgor
PCEtLUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KKzwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsi
LS0+Cis8IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgorPCEtLUVOVElUWSBmZnIgIiYjeDFE
NTIzOyItLT4KKzwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Cis8IS0tRU5USVRZIGhmciAi
JiN4MUQ1MjU7Ii0tPgorPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KKzwhLS1FTlRJVFkg
amZyICImI3gxRDUyNzsiLS0+Cis8IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgorPCEtLUVO
VElUWSBsZnIgIiYjeDFENTI5OyItLT4KKzwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Cis8
IS0tRU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgorPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyIt
LT4KKzwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Cis8IS0tRU5USVRZIHFmciAiJiN4MUQ1
MkU7Ii0tPgorPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KKzwhLS1FTlRJVFkgc2ZyICIm
I3gxRDUzMDsiLS0+Cis8IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgorPCEtLUVOVElUWSB1
ZnIgIiYjeDFENTMyOyItLT4KKzwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Cis8IS0tRU5U
SVRZIHdmciAiJiN4MUQ1MzQ7Ii0tPgorPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KKzwh
LS1FTlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Cis8IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0t
PgorPCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Cis8IS0tRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyItLT4KKzwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgorPCEtLUVOVElUWSBFb3Bm
ICImI3gxRDUzQzsiLS0+Cis8IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KKzwhLS1FTlRJ
VFkgR29wZiAiJiN4MUQ1M0U7Ii0tPgorPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Cis8
IS0tRU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KKzwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7
Ii0tPgorPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Cis8IS0tRU5USVRZIE1vcGYgIiYj
eDFENTQ0OyItLT4KKzwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgorPCEtLUVOVElUWSBT
b3BmICImI3gxRDU0QTsiLS0+Cis8IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KKzwhLS1F
TlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgorPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+
Cis8IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KKzwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1
NEY7Ii0tPgorPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Cis8IS0tRU5USVRZIGFvcGYg
IiYjeDFENTUyOyItLT4KKzwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgorPCEtLUVOVElU
WSBjb3BmICImI3gxRDU1NDsiLS0+Cis8IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KKzwh
LS1FTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgorPCEtLUVOVElUWSBmb3BmICImI3gxRDU1Nzsi
LS0+Cis8IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KKzwhLS1FTlRJVFkgaG9wZiAiJiN4
MUQ1NTk7Ii0tPgorPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Cis8IS0tRU5USVRZIGpv
cGYgIiYjeDFENTVCOyItLT4KKzwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgorPCEtLUVO
VElUWSBsb3BmICImI3gxRDU1RDsiLS0+Cis8IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4K
KzwhLS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgorPCEtLUVOVElUWSBvb3BmICImI3gxRDU2
MDsiLS0+Cis8IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KKzwhLS1FTlRJVFkgcW9wZiAi
JiN4MUQ1NjI7Ii0tPgorPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Cis8IS0tRU5USVRZ
IHNvcGYgIiYjeDFENTY0OyItLT4KKzwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgorPCEt
LUVOVElUWSB1b3BmICImI3gxRDU2NjsiLS0+Cis8IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyIt
LT4KKzwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgorPCEtLUVOVElUWSB4b3BmICImI3gx
RDU2OTsiLS0+Cis8IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KKzwhLS1FTlRJVFkgem9w
ZiAiJiN4MUQ1NkI7Ii0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQu
cHkKaW5kZXggMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUzZGIzMC4uZjhiZTAz
ZWZiMjc1MGFkNzU0YzYwMzhmNzM0MWE5NzYxMjkxZGYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9h
ZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGlmIE1ZUFk6CiAgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
ICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VGV4dAogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCkBAIC01MCw5ICs1MSw5
IEBAIGRlZiBzaG91bGRfZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWlsZF90aW1lPXRpbWVk
ZWx0YShkYXlzPTUpKToKIAogCiBkZWYgbWVyZ2VfcHJfdGFncyhyZXBvX3Jvb3QsIG1heF9jb3Vu
dD01MCk6Ci0gICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3Rbc3RyXQorICAgICMgdHlwZTog
KHN0ciwgaW50KSAtPiBMaXN0W1RleHRdCiAgICAgZ2l0ZnVuYyA9IGdpdChyZXBvX3Jvb3QpCi0g
ICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHRhZ3MgPSBbXSAgIyB0eXBlOiBM
aXN0W1RleHRdCiAgICAgaWYgZ2l0ZnVuYyBpcyBOb25lOgogICAgICAgICByZXR1cm4gdGFncwog
ICAgIGZvciBsaW5lIGluIGdpdGZ1bmMoImxvZyIsICItLWZvcm1hdD0lRCIsICItLW1heC1jb3Vu
dD0lcyIgJSBtYXhfY291bnQpLnNwbGl0KCJcbiIpOgpAQCAtNzksNyArODAsNyBAQCBkZWYgc2Nv
cmVfbmFtZShuYW1lKToKIAogCiBkZWYgZ2l0aHViX3VybCh0YWdzKToKLSAgICAjIHR5cGU6IChM
aXN0W3N0cl0pIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAjIHR5cGU6IChMaXN0W1RleHRd
KSAtPiBPcHRpb25hbFtMaXN0W1RleHRdXQogICAgIGZvciB0YWcgaW4gdGFnczoKICAgICAgICAg
dXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dC9yZWxlYXNlcy90YWdzLyVzIiAlIHRhZwogICAgICAgICB0cnk6CkBAIC0xMTEsOCArMTEyLDgg
QEAgZGVmIGdpdGh1Yl91cmwodGFncyk6CiAKIGRlZiBkb3dubG9hZF9tYW5pZmVzdCgKICAgICAg
ICAgbWFuaWZlc3RfcGF0aCwgICMgdHlwZTogc3RyCi0gICAgICAgIHRhZ3NfZnVuYywgICMgdHlw
ZTogQ2FsbGFibGVbW10sIExpc3Rbc3RyXV0KLSAgICAgICAgdXJsX2Z1bmMsICAjIHR5cGU6IENh
bGxhYmxlW1tMaXN0W3N0cl1dLCBPcHRpb25hbFtMaXN0W3N0cl1dXQorICAgICAgICB0YWdzX2Z1
bmMsICAjIHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W1RleHRdXQorICAgICAgICB1cmxfZnVuYywg
ICMgdHlwZTogQ2FsbGFibGVbW0xpc3RbVGV4dF1dLCBPcHRpb25hbFtMaXN0W1RleHRdXV0KICAg
ICAgICAgZm9yY2U9RmFsc2UgICMgdHlwZTogYm9vbAogKToKICAgICAjIHR5cGU6ICguLi4pIC0+
IGJvb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCAxYzQwMzRhZDA1
Zjk5YTI2MzE1OTAxYTE4YzhmNDAyZDVmYTY0YzEwLi5lZTA3ZjBkMWQ3OTcxNzUzNzRiMTY5YTQ2
OGI0YzJjODUwNTc5NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CkBA
IC0xLDQgKzEsNCBAQAotZnJvbSBjb3B5IGltcG9ydCBjb3B5CitpbXBvcnQgb3MucGF0aAogZnJv
bSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCB3
aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
LCB1cmxwYXJzZQpAQCAtNjEsNiArNjEsMTEgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKICAgICAgICAgIiIiVGhlIGl0ZW0ncyB0eXBlIiIi
CiAgICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXRoX3BhcnRzKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYucGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBkZWYga2V5KHNlbGYp
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIiIkEgdW5pcXVlIGlk
ZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCkBAIC0xMDQsMTQgKzEwOSwxNCBAQCBjbGFzcyBVUkxN
YW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwg
ICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAgICAg
ICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgIHVy
bCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlvbmFs
W1RleHRdCiAgICAgICAgICAgICAgICAgICoqZXh0cmFzICAjIHR5cGU6IEFueQogICAgICAgICAg
ICAgICAgICApOgogICAgICAgICAjIHR5cGU6ICguLi4pIC0+IE5vbmUKICAgICAgICAgc3VwZXIo
VVJMTWFuaWZlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19yb290LCBwYXRoKQogICAgICAg
ICBhc3NlcnQgdXJsX2Jhc2VbMF0gPT0gIi8iCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1cmxf
YmFzZQotICAgICAgICBhc3NlcnQgdXJsWzBdICE9ICIvIgorICAgICAgICBhc3NlcnQgdXJsIGlz
IE5vbmUgb3IgdXJsWzBdICE9ICIvIgogICAgICAgICBzZWxmLl91cmwgPSB1cmwKICAgICAgICAg
c2VsZi5fZXh0cmFzID0gZXh0cmFzCiAKQEAgLTEyMywyMCArMTI4LDI4IEBAIGNsYXNzIFVSTE1h
bmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB1cmwoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAorICAgICAgICByZWxfdXJsID0gc2VsZi5f
dXJsIG9yIHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKQogICAgICAgICAjIHdl
IGNhbiBvdXRwZXJmb3JtIHVybGpvaW4sIGJlY2F1c2Ugd2Uga25vdyB3ZSBqdXN0IGhhdmUgcGF0
aCByZWxhdGl2ZSBVUkxzCiAgICAgICAgIGlmIHNlbGYudXJsX2Jhc2UgPT0gIi8iOgotICAgICAg
ICAgICAgcmV0dXJuICIvIiArIHNlbGYuX3VybAotICAgICAgICByZXR1cm4gdXJsam9pbihzZWxm
LnVybF9iYXNlLCBzZWxmLl91cmwpCisgICAgICAgICAgICByZXR1cm4gIi8iICsgcmVsX3VybAor
ICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLCByZWxfdXJsKQogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
ICAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICgiaHR0cHMiIGluIGZsYWdz
IG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgaDIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICBmbGFncyA9
IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxpdCgiLiIp
WzE6LTFdKQorICAgICAgICByZXR1cm4gImgyIiBpbiBmbGFncwogCiAgICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1d
Ci0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwge30pICAjIHR5cGU6IFR1cGxlW1RleHQsIERpY3Rb
QW55LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBE
aWN0W0FueSwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5fdXJsID09IHNl
bGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKSBlbHNlIHNlbGYuX3VybAorICAgICAg
ICBydiA9IChyZWxfdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3Rb
QW55LCBBbnldXQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTc3
LDEzICsxOTAsMTggQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAg
ICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4dHJhcy5nZXQoImpzc2hlbGwiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHF1aWMoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V4dHJhcy5nZXQoInF1aWMiKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHNjcmlw
dF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQog
ICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgic2NyaXB0X21ldGFkYXRhIikKIAogICAg
IGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERp
Y3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0
XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVyKFRlc3RoYXJuZXNzVGVzdCwg
c2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0xOTEsMjMgKzIw
OSwyNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAg
ICAgIHJ2Wy0xXVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAgICAgICAgIGlmIHNl
bGYuanNzaGVsbDoKICAgICAgICAgICAgIHJ2Wy0xXVsianNzaGVsbCJdID0gVHJ1ZQorICAgICAg
ICBpZiBzZWxmLnF1aWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBydlstMV1bInF1aWMiXSA9
IHNlbGYucXVpYwogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAg
IHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBzZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAg
ICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IFsoaywgdikgZm9yIChrLHYpIGluIHNl
bGYuc2NyaXB0X21ldGFkYXRhXQogICAgICAgICByZXR1cm4gcnYKIAogCi1jbGFzcyBSZWZUZXN0
QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgorY2xhc3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgog
ICAgIF9fc2xvdHNfXyA9ICgicmVmZXJlbmNlcyIsKQogCisgICAgaXRlbV90eXBlID0gInJlZnRl
c3QiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9v
dCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAg
ICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAg
IHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlv
bmFsW1RleHRdCiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9Tm9uZSwgICMgdHlwZTogT3B0
aW9uYWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgICAgICAgICAgICoqZXh0cmFz
ICAjIHR5cGU6IEFueQogICAgICAgICAgICAgICAgICApOgotICAgICAgICBzdXBlcihSZWZUZXN0
QmFzZSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jhc2UsIHVybCwgKipl
eHRyYXMpCisgICAgICAgIHN1cGVyKFJlZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3Qs
IHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0cmFzKQogICAgICAgICBpZiByZWZlcmVuY2VzIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlZmVyZW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1
cGxlW1RleHQsIFRleHRdXQogICAgICAgICBlbHNlOgpAQCAtMjQ3LDggKzI2OSw5IEBAIGNsYXNz
IFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVybiBydgogCiAgICAg
ZGVmIHRvX2pzb24oc2VsZik6ICAjIHR5cGU6IGlnbm9yZQotICAgICAgICAjIHR5cGU6ICgpIC0+
IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCi0g
ICAgICAgIHJ2ID0gKHNlbGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVw
bGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtUdXBsZVtUZXh0LCBU
ZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5f
dXJsID09IHNlbGYucGF0aCBlbHNlIHNlbGYuX3VybAorICAgICAgICBydiA9IChyZWxfdXJsLCBz
ZWxmLnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgZXh0cmFzID0gcnZb
LTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4
dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0yNjYsNyArMjg5LDcgQEAgY2xhc3Mg
UmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgIHBhdGgsICAj
IHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgIG9iaiAgIyB0eXBlOiBUdXBsZVtUZXh0LCBM
aXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtBbnksIEFueV1dCiAgICAgICAgICAgICAgICAg
ICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFJlZlRlc3RCYXNlCisgICAgICAgICMgdHlw
ZTogKC4uLikgLT4gUmVmVGVzdAogICAgICAgICB0ZXN0c19yb290ID0gbWFuaWZlc3QudGVzdHNf
cm9vdAogICAgICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBwYXRo
ID0gdG9fb3NfcGF0aChwYXRoKQpAQCAtMjc4LDM4ICszMDEsNiBAQCBjbGFzcyBSZWZUZXN0QmFz
ZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsCiAgICAg
ICAgICAgICAgICAgICAgKipleHRyYXMpCiAKLSAgICBkZWYgdG9fUmVmVGVzdChzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgPT0gUmVm
VGVzdDoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRlc3QpCi0gICAg
ICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikKLSAgICAgICAgcnYu
X19jbGFzc19fID0gUmVmVGVzdAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShydiwgUmVmVGVz
dCkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgdG9fUmVmVGVzdE5vZGUoc2VsZik6Ci0g
ICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdE5vZGUKLSAgICAgICAgaWYgdHlwZShzZWxmKSA9
PSBSZWZUZXN0Tm9kZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRl
c3ROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBjb3B5KHNlbGYp
Ci0gICAgICAgIHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3ROb2RlCi0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJ2LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLQotY2xhc3MgUmVm
VGVzdE5vZGUoUmVmVGVzdEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5
cGUgPSAicmVmdGVzdF9ub2RlIgotCi0KLWNsYXNzIFJlZlRlc3QoUmVmVGVzdEJhc2UpOgotICAg
IF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIKLQogCiBjbGFzcyBN
YW51YWxUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0gKCkKQEAgLTM1MSw3
ICszNDIsNyBAQCBjbGFzcyBXZWJEcml2ZXJTcGVjVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAKICAgICBkZWYgdG9fanNv
bihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBEaWN0W1RleHQsIEFu
eV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3RbVGV4
dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVzdCwgc2VsZikudG9f
anNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCAyYWQ3ZmNjZjQ4Njc1YmRjYzdiNTQ0NzQ3ZTFkMTgy
NGE1OTg1NDJmLi4zNDVlZWI2ZDJiMGJlZWIzY2UzYzEzOTA5NDljYjllMmQxOWE0MzVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKQEAgLTEsMTUgKzEsMjUg
QEAKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGpzb24KIGltcG9ydCBvcwot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIGRlZmF1bHRkaWN0Ci1mcm9t
IHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywgc3RyaW5nX3R5cGVz
LCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCitmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9t
IG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbCwgY3B1X2NvdW50Citmcm9tIHNpeCBpbXBvcnQg
KAorICAgIFBZMywKKyAgICBiaW5hcnlfdHlwZSwKKyAgICBlbnN1cmVfdGV4dCwKKyAgICBpdGVy
aXRlbXMsCisgICAgaXRlcnZhbHVlcywKKyAgICBzdHJpbmdfdHlwZXMsCisgICAgdGV4dF90eXBl
LAorKQogCiBmcm9tIC4gaW1wb3J0IHZjcwotZnJvbSAuaXRlbSBpbXBvcnQgKENvbmZvcm1hbmNl
Q2hlY2tlclRlc3QsIE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVzdCwgUmVmVGVzdE5v
ZGUsCi0gICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKK2Zyb20gLml0ZW0gaW1wb3J0
IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJlZlRl
c3QsIFN1cHBvcnRGaWxlLAorICAgICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKIGZyb20gLmxvZyBpbXBvcnQg
Z2V0X2xvZ2dlcgogZnJvbSAuc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQotZnJvbSAudXRp
bHMgaW1wb3J0IGZyb21fb3NfcGF0aCwgdG9fb3NfcGF0aAorZnJvbSAudHlwZWRhdGEgaW1wb3J0
IFR5cGVEYXRhCiAKIE1ZUFkgPSBGYWxzZQogaWYgTVlQWToKQEAgLTE5LDE2ICsyOSwxNCBAQCBp
ZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWluZXIKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgRGljdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJTwotICAgIGZyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgotICAgIGZy
b20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCiAg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNl
dAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KLSAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAogCiB0cnk6CiAgICAgaW1wb3J0IHVq
c29uCkBAIC0zNiw3ICs0NCw3IEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmYXN0
X2pzb24gPSBqc29uICAjIHR5cGU6IGlnbm9yZQogCi1DVVJSRU5UX1ZFUlNJT04gPSA3CitDVVJS
RU5UX1ZFUlNJT04gPSA4ICAjIHR5cGU6IGludAogCiAKIGNsYXNzIE1hbmlmZXN0RXJyb3IoRXhj
ZXB0aW9uKToKQEAgLTQ5LDcgKzU3LDYgQEAgY2xhc3MgTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2go
TWFuaWZlc3RFcnJvcik6CiAKIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBUZXN0aGFy
bmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBSZWZUZXN0LAotICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogQ3Jhc2hUZXN0LAogICAgICAgICAgICAgICAgICJtYW51YWwiOiBNYW51YWxUZXN0
LAogICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZWJEcml2ZXJTcGVjVGVzdCwKQEAgLTU4LDE1
NiArNjUsMTIgQEAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3RoYXJuZXNzVGVz
dCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IFN1cHBvcnRGaWxlfSAgIyB0eXBlOiBEaWN0
W3N0ciwgVHlwZVtNYW5pZmVzdEl0ZW1dXQogCiAKLWlmIE1ZUFk6Ci0gICAgVHlwZURhdGFUeXBl
ID0gTXV0YWJsZU1hcHBpbmdbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi1lbHNlOgotICAgIFR5
cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCi0KLWNsYXNzIFR5cGVEYXRhKFR5cGVEYXRhVHlw
ZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmlmZXN0LCB0eXBlX2Nscyk6Ci0gICAgICAg
ICMgdHlwZTogKE1hbmlmZXN0LCBUeXBlW01hbmlmZXN0SXRlbV0pIC0+IE5vbmUKLSAgICAgICAg
IiIiRGljdC1saWtlIG9iamVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVz
dCB0eXBlLgotCi0gICAgICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2gg
dGVzdCBpcyB1bm5lY2Vzc2FyaWx5Ci0gICAgICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dz
IGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAotICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZl
c3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSByYXcganNvbgotICAgICAgICBjb3JyZXNwb25kaW5n
IHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCi0gICAgICAgIHN1YmNs
YXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJlbWFpbgotICAgICAg
ICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFu
IEl0ZW0KLSAgICAgICAgZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVt
cyB3aGVuIGl0ZXJhdGluZwotICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIKLSAgICAgICAgc2Vs
Zi5tYW5pZmVzdCA9IG1hbmlmZXN0Ci0gICAgICAgIHNlbGYudHlwZV9jbHMgPSB0eXBlX2Nscwot
ICAgICAgICBzZWxmLmpzb25fZGF0YSA9IHt9ICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwg
TGlzdFtBbnldXV0KLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtzdHJdCi0gICAgICAgIHNlbGYuZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0
W01hbmlmZXN0SXRlbV1dCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAg
ICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W01hbmlmZXN0SXRlbV0KLSAgICAgICAgaWYga2V5IG5v
dCBpbiBzZWxmLmRhdGEgYW5kIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5sb2FkKGtleSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtrZXldCi0KLSAgICBk
ZWYgX19ub256ZXJvX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLmRhdGEpIG9yIGJvb2woc2VsZi5qc29uX2RhdGEpCi0KLSAgICBk
ZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKLSAgICAgICAgcnYg
PSBsZW4oc2VsZi5kYXRhKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJ2ICs9IGxlbihzZWxmLmpzb25fZGF0YSkKLSAgICAgICAgcmV0dXJuIHJ2
Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4
dCkgLT4gTm9uZQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgZGVs
IHNlbGYuZGF0YVtrZXldCi0gICAgICAgIGVsaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbZnJvbV9vc19wYXRoKGtleSldCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcgotCi0gICAgZGVmIF9fc2V0aXRl
bV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBTZXRbTWFuaWZl
c3RJdGVtXSkgLT4gTm9uZQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAgICAgICAgaWYgcGF0
aCBpbiBzZWxmLmpzb25fZGF0YToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFb
cGF0aF0KLSAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQotCi0gICAgZGVmIF9fY29udGFp
bnNfXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJvb2wKLSAgICAgICAg
c2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5kYXRhCi0KLSAgICBk
ZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gSXRlcmF0b3JbVGV4dF0K
LSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEuX19pdGVy
X18oKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbU2V0W01hbmlmZXN0SXRlbV1dCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAg
ICAgICByZXR1cm4gaXRlcnZhbHVlcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYgaXRlcml0ZW1zKHNl
bGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1RleHQsIFNldFtNYW5p
ZmVzdEl0ZW1dXV0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAgICAgICAgIyB0eXBl
OiAoKSAtPiBMaXN0W1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICByZXR1cm4gbGlzdChzZWxm
Lml0ZXJ2YWx1ZXMoKSkKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBMaXN0W1R1cGxlW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAgICAgICAgcmV0dXJu
IGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKLQotICAgIGRlZiBsb2FkKHNlbGYsIGtleSk6Ci0gICAg
ICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBhIHNwZWNpZmljIEl0
ZW0gZ2l2ZW4gYSBwYXRoIiIiCi0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZGF0YSA9IHNldCgpCi0gICAgICAgICAgICBwYXRoID0gZnJvbV9vc19w
YXRoKGtleSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRo
LCBbXSk6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlwZV9jbHMuZnJv
bV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAgICAgICAgZGF0YS5h
ZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwg
c2VsZi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGRhdGEKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLQotICAgIGRlZiBsb2FkX2Fs
bChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCi0gICAgICAgICIiIkxvYWQgYWxs
IHRlc3QgaXRlbXMgaW4gdGhpcyBjbGFzcyIiIgotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBwYXRoLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5qc29uX2RhdGEpOgotICAgICAgICAgICAgICAgIGtleSA9IHRvX29zX3BhdGgocGF0aCkKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAgICAgICAgICAgIGZv
ciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRoLCBbXSk6Ci0gICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xzLmZyb21fanNvbihzZWxmLm1hbmlmZXN0
LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVt
KQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAgICAgICAgICAgc2Vs
Zi5qc29uX2RhdGEgPSBOb25lCi0KLSAgICBkZWYgc2V0X2pzb24oc2VsZiwgdGVzdHNfcm9vdCwg
ZGF0YSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldKSAtPiBOb25lCi0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiR290IGEgJXMgZXhwZWN0ZWQgYSBkaWN0IiAlICh0eXBlKGRhdGEpKSkKLSAg
ICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAotICAgICAgICBzZWxmLmpzb25fZGF0
YSA9IGRhdGEKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgQW55XQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgZnJvbV9vc19w
YXRoKHBhdGgpOgotICAgICAgICAgICAgW3QgZm9yIHQgaW4gc29ydGVkKHRlc3QudG9fanNvbigp
IGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICAj
IGF2b2lkIGNvcHlpbmcgaWYgdGhlcmUncyBub3RoaW5nIGhlcmUgeWV0Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuanNvbl9kYXRhCi0gICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLmpz
b25fZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHBhdGhzKHNlbGYpOgot
ICAgICAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0XQotICAgICAgICAiIiJHZXQgYSBsaXN0IG9m
IGFsbCBwYXRocyBjb250YWluaW5nIGl0ZW1zIG9mIHRoaXMgdHlwZSwKLSAgICAgICAgd2l0aG91
dCBhY3R1YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgotICAgICAgICBydiA9IHNl
dChpdGVya2V5cyhzZWxmLmRhdGEpKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YToKLSAgICAg
ICAgICAgIHJ2IHw9IHt0b19vc19wYXRoKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYu
anNvbl9kYXRhKX0KLSAgICAgICAgcmV0dXJuIHJ2Ci0KK2RlZiBjb21wdXRlX21hbmlmZXN0X2l0
ZW1zKHNvdXJjZV9maWxlKToKKyAgICAjIHR5cGU6IChTb3VyY2VGaWxlKSAtPiBUdXBsZVtUdXBs
ZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF0KKyAgICByZWxfcGF0
aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgbmV3X3R5cGUsIG1hbmlm
ZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQorICAgIGZpbGVfaGFzaCA9
IHNvdXJjZV9maWxlLmhhc2gKKyAgICByZXR1cm4gcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBz
ZXQobWFuaWZlc3RfaXRlbXMpLCBmaWxlX2hhc2gKIAogaWYgTVlQWToKICAgICBNYW5pZmVzdERh
dGFUeXBlID0gRGljdFtBbnksIFR5cGVEYXRhXQpAQCAtMjM3LDE3ICsxMDAsMjUgQEAgY2xhc3Mg
TWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0YVR5cGUpOgogICAgICAgICB3aXRob3V0IGFjdHVhbGx5
IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlw
ZTogU2V0W1RleHRdCiAgICAgICAgIGZvciBpdGVtX2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToK
LSAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0aHMoKSkKKyAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydi5hZGQob3MucGF0aC5zZXAu
am9pbihpdGVtKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgdHlwZV9ieV9wYXRoKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVHVwbGVbVGV4dCwgLi4uXSwgc3RyXQor
ICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBpdGVtX3R5cGUsIGl0ZW1fZGF0YSBpbiBpdGVy
aXRlbXMoc2VsZik6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtX2RhdGE6CisgICAgICAg
ICAgICAgICAgcnZbaXRlbV0gPSBpdGVtX3R5cGUKKyAgICAgICAgcmV0dXJuIHJ2CisKKwogCiBj
bGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290
PU5vbmUsIHVybF9iYXNlPSIvIik6CiAgICAgICAgICMgdHlwZTogKE9wdGlvbmFsW3N0cl0sIFRl
eHQpIC0+IE5vbmUKICAgICAgICAgYXNzZXJ0IHVybF9iYXNlIGlzIG5vdCBOb25lCi0gICAgICAg
IHNlbGYuX3BhdGhfaGFzaCA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4
dF1dCiAgICAgICAgIHNlbGYuX2RhdGEgPSBNYW5pZmVzdERhdGEoc2VsZikgICMgdHlwZTogTWFu
aWZlc3REYXRhCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gTm9uZSAgIyB0
eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV1dCiAg
ICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UgICMgdHlwZTogVGV4dAogCkBAIC0y
NTgsNDcgKzEyOSwzNCBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBpdGVydHlw
ZXMoc2VsZiwgKnR5cGVzKToKICAgICAgICAgIyB0eXBlOiAoKnN0cikgLT4gSXRlcmF0b3JbVHVw
bGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCiAgICAgICAgIGZvciBpdGVtX3R5cGUg
aW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMoKSkpOgotICAgICAgICAgICAgZm9y
IHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBlXSk6CisgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLl9kYXRhW2l0ZW1fdHlwZV06CisgICAgICAgICAgICAgICAgc3RyX3BhdGgg
PSBvcy5zZXAuam9pbihwYXRoKQogICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZGF0YVtp
dGVtX3R5cGVdW3BhdGhdCi0gICAgICAgICAgICAgICAgeWllbGQgaXRlbV90eXBlLCBwYXRoLCB0
ZXN0cworICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgc3RyX3BhdGgsIHRlc3RzCiAK
ICAgICBkZWYgaXRlcnBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+
IEl0ZXJhdG9yW01hbmlmZXN0SXRlbV0KKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFi
bGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0
aC5zZXApKQorCiAgICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6
Ci0gICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQocGF0aCwgc2V0KCkpCisgICAgICAgICAg
ICBpID0gdHlwZV90ZXN0cy5nZXQodHBhdGgsIHNldCgpKQogICAgICAgICAgICAgYXNzZXJ0IGkg
aXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciB0ZXN0IGluIGk6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdAogCiAgICAgZGVmIGl0ZXJkaXIoc2VsZiwgZGlyX25hbWUpOgotICAgICAgICAj
IHR5cGU6IChUZXh0KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCi0gICAgICAgIGlmIG5vdCBk
aXJfbmFtZS5lbmRzd2l0aChvcy5wYXRoLnNlcCk6Ci0gICAgICAgICAgICBkaXJfbmFtZSA9IGRp
cl9uYW1lICsgb3MucGF0aC5zZXAKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFibGVb
TWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKGRpcl9uYW1lLnNwbGl0KG9zLnBh
dGguc2VwKSkKKyAgICAgICAgdHBhdGhfbGVuID0gbGVuKHRwYXRoKQorCiAgICAgICAgIGZvciB0
eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcGF0aCwg
dGVzdHMgaW4gdHlwZV90ZXN0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBwYXRo
LnN0YXJ0c3dpdGgoZGlyX25hbWUpOgorICAgICAgICAgICAgZm9yIHBhdGgsIHRlc3RzIGluIGl0
ZXJpdGVtcyh0eXBlX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoWzp0cGF0aF9sZW5d
ID09IHRwYXRoOgogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBy
ZWZ0ZXN0X25vZGVzX2J5X3VybChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1Rl
eHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV0KLSAgICAgICAgaWYgc2VsZi5fcmVmdGVz
dF9ub2Rlc19ieV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIGJ5X3VybCA9IHt9Ci0gICAgICAg
ICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9k
YXRhWyJyZWZ0ZXN0Il0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0pKToKLSAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKLSAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0gYnlfdXJsCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5
X3VybAotCi0gICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKLSAgICAgICAgIyB0eXBl
OiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQotICAgICAgICByZXR1cm4gc2VsZi5y
ZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVl
KToKLSAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNlRmlsZSwgYnl0
ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHRyZWUsIHBhcmFsbGVs
PVRydWUpOgorICAgICAgICAjIHR5cGU6IChJdGVyYWJsZVtUdXBsZVtVbmlvbltTb3VyY2VGaWxl
LCBieXRlc10sIGJvb2xdXSwgYm9vbCkgLT4gYm9vbAogICAgICAgICAiIiJVcGRhdGUgdGhlIG1h
bmlmZXN0IGdpdmVuIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIHRoYXQgbWFrZSB1cCB0aGUgdXBkYXRl
ZCBtYW5pZmVzdC4KIAogICAgICAgICBUaGUgaXRlcmFibGUgbXVzdCBlaXRoZXIgZ2VuZXJhdGUg
dHVwbGVzIG9mIHRoZSBmb3JtIChTb3VyY2VGaWxlLCBUcnVlKSBmb3IgcGF0aHMKQEAgLTMwNiwx
NzAgKzE2NCwxMjcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAgICAgdW51c3VhbCBB
UEkgaXMgZGVzaWduZWQgYXMgYW4gb3B0aW1pc3RhaW9uIG1lYW5pbmcgdGhhdCBTb3VyY2VGaWxl
IGl0ZW1zIG5lZWQgbm90IGJlCiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFy
ZSBub3QgdXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAg
ICAgICAgIHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVz
IGZyb20gdGhlIG1hbmlmZXN0LiIiIgotICAgICAgICBhbGxfcmVmdGVzdF9ub2RlcyA9IFtdICAj
IHR5cGU6IExpc3RbVHVwbGVbTWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAgICAgc2Vlbl9maWxl
cyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgICAgIGNoYW5nZWQgPSBGYWxzZQot
ICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2Fs
IHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCiAgICAg
ICAgICMgYXR0cmlidXRlIGFjY2VzcyBpbiB0aGUgaG90IGxvb3AgYmVsb3cKLSAgICAgICAgcGF0
aF9oYXNoID0gc2VsZi5fcGF0aF9oYXNoICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwg
VGV4dF1dCiAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhCiAKLSAgICAgICAgcHJldl9maWxlcyA9
IGRhdGEucGF0aHMoKSAgIyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgdHlwZXMgPSBkYXRhLnR5
cGVfYnlfcGF0aCgpCisgICAgICAgIGRlbGV0ZWQgPSBzZXQodHlwZXMpCiAKLSAgICAgICAgcmVm
dGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorICAgICAgICB0b191cGRh
dGUgPSBbXQogCi0gICAgICAgIGZvciBzb3VyY2VfZmlsZSwgdXBkYXRlIGluIHRyZWU6CisgICAg
ICAgIGZvciBzb3VyY2VfZmlsZV9vcl9wYXRoLCB1cGRhdGUgaW4gdHJlZToKICAgICAgICAgICAg
IGlmIG5vdCB1cGRhdGU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNl
X2ZpbGUsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlICAjIHR5cGU6IFRleHQKLSAgICAgICAgICAgICAgICBzZWVuX2ZpbGVz
LmFkZChyZWxfcGF0aCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVsX3BhdGggaW4gcGF0aF9o
YXNoCi0gICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9w
YXRoXSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBUZXh0XQotICAgICAgICAgICAgICAgIGlmIG9sZF90
eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW1z
ID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdICAjIHR5cGU6IEl0ZXJhYmxlW01hbmlmZXN0SXRl
bV0KLSAgICAgICAgICAgICAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMuZXh0ZW5kKChpdGVtLCBv
bGRfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5
cGUpKQorICAgICAgICAgICAgICAgIHBhdGggPSBlbnN1cmVfdGV4dChzb3VyY2VfZmlsZV9vcl9w
YXRoKQorICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHR1cGxlKHBhdGguc3BsaXQob3Mu
cGF0aC5zZXApKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5v
dCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCBieXRlcykKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlLnJlbF9wYXRoCi0gICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQo
cmVsX3BhdGgpCi0KLSAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNo
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc291
cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKQorICAgICAgICAgICAg
ICAgIHNvdXJjZV9maWxlID0gc291cmNlX2ZpbGVfb3JfcGF0aAorICAgICAgICAgICAgICAgIHJl
bF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3BhdGhfcGFydHMKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZWxfcGF0aF9wYXJ0cywgdHVwbGUpCiAKLSAgICAgICAgICAg
ICAgICBpc19uZXcgPSByZWxfcGF0aCBub3QgaW4gcGF0aF9oYXNoICAjIHR5cGU6IGJvb2wKKyAg
ICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aF9wYXJ0cyBub3QgaW4gZGVsZXRlZCAgIyB0
eXBlOiBib29sCiAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gRmFsc2UgICMgdHlwZTog
Ym9vbAogCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAgICAgICAgICAgICAg
ICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkLnJlbW92ZShyZWxfcGF0aF9wYXJ0cykKKyAgICAgICAgICAgICAgICAg
ICAgb2xkX3R5cGUgPSB0eXBlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAgICAgICAgICAgICAg
b2xkX2hhc2ggPSBkYXRhW29sZF90eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFydHNdCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMgdHlwZTogVGV4dAog
ICAgICAgICAgICAgICAgICAgICBpZiBvbGRfaGFzaCAhPSBmaWxlX2hhc2g6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2NoYW5nZWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSAhPSBvbGRfdHlwZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAg
ICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3R5cGUg
PSBvbGRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVz
dF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtcyA9IGRh
dGFbb2xkX3R5cGVdW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0
X2l0ZW1zKCkKLQotICAgICAgICAgICAgICAgIGlmIG5ld190eXBlIGluIHJlZnRlc3RfdHlwZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRlbSwgZmls
ZV9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVzdF9pdGVtcykKLSAgICAgICAgICAgICAgICAgICAg
aWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRl
c3RfY2hhbmdlcyA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzX25ldyBvciBoYXNoX2No
YW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3JlbF9wYXRoXSA9IHNl
dChtYW5pZmVzdF9pdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW29sZF90
eXBlXVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICAgICAgICAgIGlmIGlzX25ldyBvciBoYXNo
X2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfaGFzaFtyZWxfcGF0aF0gPSAoZmls
ZV9oYXNoLCBuZXdfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKKyAg
ICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLmFwcGVuZChzb3VyY2VfZmlsZSkKKworICAgICAg
ICBpZiB0b191cGRhdGU6CisgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQorCisgICAgICAgIGlm
IHBhcmFsbGVsIGFuZCBsZW4odG9fdXBkYXRlKSA+IDI1IGFuZCBjcHVfY291bnQoKSA+IDE6Cisg
ICAgICAgICAgICAjIDI1IGRlcml2ZWQgZXhwZXJpbWVudGFsbHkgKDIwMjAtMDEpIHRvIGJlIGFw
cHJveGltYXRlbHkKKyAgICAgICAgICAgICMgdGhlIHBvaW50IGF0IHdoaWNoIGl0IGlzIHF1aWNr
ZXIgdG8gY3JlYXRlIFBvb2wgYW5kCisgICAgICAgICAgICAjIHBhcmFsbGVsaXplIHRoaXMKKyAg
ICAgICAgICAgIHBvb2wgPSBQb29sKCkKKworICAgICAgICAgICAgIyBjaHVua3NpemUgc2V0ID4g
MSB3aGVuIG1vcmUgdGhhbiAxMDAwMCB0ZXN0cywgYmVjYXVzZQorICAgICAgICAgICAgIyBjaHVu
a2luZyBpcyBhIG5ldC1nYWluIG9uY2Ugd2UgZ2V0IHRvIHZlcnkgbGFyZ2UgbnVtYmVycworICAg
ICAgICAgICAgIyBvZiBpdGVtcyAoYWdhaW4sIGV4cGVyaW1lbnRhbGx5LCAyMDIwLTAxKQorICAg
ICAgICAgICAgcmVzdWx0cyA9IHBvb2wuaW1hcF91bm9yZGVyZWQoY29tcHV0ZV9tYW5pZmVzdF9p
dGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3VwZGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rc2l6ZT1t
YXgoMSwgbGVuKHRvX3VwZGF0ZSkgLy8gMTAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApICAjIHR5cGU6IEl0ZXJhdG9yW1R1cGxlW1R1cGxlW1RleHQsIC4u
Ll0sIFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dLCBUZXh0XV0KKyAgICAgICAgZWxpZiBQWTM6Cisg
ICAgICAgICAgICByZXN1bHRzID0gbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsIHRvX3VwZGF0
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBpdGVydG9vbHMuaW1hcChj
b21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCisKKyAgICAgICAgZm9yIHJlc3VsdCBp
biByZXN1bHRzOgorICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVz
dF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0CisgICAgICAgICAgICBkYXRhW25ld190eXBlXVty
ZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9pdGVtcworICAgICAgICAgICAgZGF0YVtuZXdfdHlw
ZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9IGZpbGVfaGFzaAogCi0gICAgICAgIGRlbGV0ZWQg
PSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcwogICAgICAgICBpZiBkZWxldGVkOgogICAgICAgICAg
ICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgIGZvciByZWxfcGF0aCBpbiBkZWxldGVkOgot
ICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKLSAgICAgICAgICAgICAg
ICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGRlbCBwYXRoX2hh
c2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gaXRlcnZh
bHVlcyhkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHRlc3Rf
ZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRo
XQotCi0gICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKLSAgICAgICAgICAgIHJlZnRlc3RzLCBy
ZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVfcmVmdGVzdHMoYWxs
X3JlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBkYXRhWyJyZWZ0ZXN0
Il0KLSAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3IgcGF0
aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZ
OgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBjYXN0KFNldFtNYW5p
ZmVzdEl0ZW1dLCBpdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcwotCi0gICAgICAgICAgICByZWZ0ZXN0X25v
ZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCi0gICAgICAgICAgICByZWZ0ZXN0X25vZGVf
ZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2RlX2l0ZW1zIGluIGl0
ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZOgotICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gY2FzdChTZXRbTWFu
aWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9kZV9pdGVtcwotCi0g
ICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVzKQorICAgICAgICAgICAg
Zm9yIHJlbF9wYXRoX3BhcnRzIGluIGRlbGV0ZWQ6CisgICAgICAgICAgICAgICAgZm9yIHRlc3Rf
ZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0
aF9wYXJ0cyBpbiB0ZXN0X2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9k
YXRhW3JlbF9wYXRoX3BhcnRzXQogCiAgICAgICAgIHJldHVybiBjaGFuZ2VkCiAKLSAgICBkZWYg
X2NvbXB1dGVfcmVmdGVzdHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVz
dF9ub2RlcyAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikgLT4gVHVwbGVbRGlj
dFtUZXh0LCBTZXRbUmVmVGVzdF1dLCBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dLCBEaWN0
W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXV0KLSAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19i
eV91cmwgPSB7fQotICAgICAgICBoYXNfaW5ib3VuZCA9IHNldCgpCi0gICAgICAgIGZvciBpdGVt
LCBfIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgZm9yIHJlZl91cmwsIHJlZl90
eXBlIGluIGl0ZW0ucmVmZXJlbmNlczoKLSAgICAgICAgICAgICAgICBoYXNfaW5ib3VuZC5hZGQo
cmVmX3VybCkKLQotICAgICAgICByZWZ0ZXN0cyA9IGRlZmF1bHRkaWN0KHNldCkgICMgdHlwZTog
RGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dCi0gICAgICAgIHJlZmVyZW5jZXMgPSBkZWZhdWx0ZGlj
dChzZXQpICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0KLSAgICAgICAgY2hh
bmdlZF9oYXNoZXMgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXQot
Ci0gICAgICAgIGZvciBpdGVtLCBmaWxlX2hhc2ggaW4gcmVmdGVzdF9ub2RlczoKLSAgICAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0gICAg
ICAgICAgICBpZiBpdGVtLnVybCBpbiBoYXNfaW5ib3VuZDoKLSAgICAgICAgICAgICAgICAjIFRo
aXMgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3QpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19SZWZUZXN0Tm9kZSgp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9o
YXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3ROb2RlKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5wYXRoXS5hZGQoaXRl
bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0Tm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRvX1JlZlRl
c3QoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZp
bGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0KQotICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0aF0uYWRkKGl0ZW0p
Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRl
c3QpKQotICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxbaXRlbS51cmxdID0g
aXRlbQotCi0gICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywgY2hhbmdlZF9oYXNo
ZXMKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3Rb
VGV4dCwgQW55XQorICAgIGRlZiB0b19qc29uKHNlbGYsIGNhbGxlcl9vd25zX29iaj1UcnVlKToK
KyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgICIiIkR1
bXAgYSBtYW5pZmVzdCBpbnRvIGEgb2JqZWN0IHdoaWNoIGNhbiBiZSBzZXJpYWxpemVkIGFzIEpT
T04KKworICAgICAgICBJZiBjYWxsZXJfb3duc19vYmogaXMgRmFsc2UsIHRoZW4gdGhlIHJldHVy
biB2YWx1ZSByZW1haW5zCisgICAgICAgIG93bmVkIGJ5IHRoZSBtYW5pZmVzdDsgaXQgaXMgX3Zp
dGFsbHkgaW1wb3J0YW50XyB0aGF0IF9ub18KKyAgICAgICAgKGV2ZW4gcmVhZCkgb3BlcmF0aW9u
IGlzIGRvbmUgb24gdGhlIG1hbmlmZXN0LCBhcyBvdGhlcndpc2UKKyAgICAgICAgb2JqZWN0cyB3
aXRoaW4gdGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQgdGhlIHJldHVybiB2YWx1ZSBjYW4KKyAg
ICAgICAgYmUgbXV0YXRlZC4gVGhpcyBlc3NlbnRpYWxseSBtYWtlcyB0aGlzIG1vZGUgdmVyeSBk
YW5nZXJvdXMKKyAgICAgICAgYW5kIG9ubHkgdG8gYmUgdXNlZCB1bmRlciBleHRyZW1lIGNhcmUu
CisKKyAgICAgICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3Rf
dHlwZTogdHlwZV9wYXRocy50b19qc29uKCkKICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5
cGVfcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKICAgICAgICAg
fQorCisgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKKyAgICAgICAgICAgIG91dF9pdGVtcyA9
IGRlZXBjb3B5KG91dF9pdGVtcykKKwogICAgICAgICBydiA9IHsidXJsX2Jhc2UiOiBzZWxmLnVy
bF9iYXNlLAotICAgICAgICAgICAgICAicGF0aHMiOiB7ZnJvbV9vc19wYXRoKGspOiB2IGZvciBr
LCB2IGluIGl0ZXJpdGVtcyhzZWxmLl9wYXRoX2hhc2gpfSwKICAgICAgICAgICAgICAgIml0ZW1z
Ijogb3V0X2l0ZW1zLAogICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJFTlRfVkVSU0lPTn0g
ICMgdHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9u
ZSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250
YWluZXJbVGV4dF1dKSAtPiBNYW5pZmVzdAorICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19y
b290LCBvYmosIHR5cGVzPU5vbmUsIGNhbGxlZV9vd25zX29iaj1GYWxzZSk6CisgICAgICAgICMg
dHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250YWluZXJbVGV4dF1dLCBi
b29sKSAtPiBNYW5pZmVzdAorICAgICAgICAiIiJMb2FkIGEgbWFuaWZlc3QgZnJvbSBhIEpTT04g
b2JqZWN0CisKKyAgICAgICAgVGhpcyBsb2FkcyBhIG1hbmlmZXN0IGZvciBhIGdpdmVuIGxvY2Fs
IHRlc3Rfcm9vdCBwYXRoIGZyb20gYW4KKyAgICAgICAgb2JqZWN0IG9iaiwgcG90ZW50aWFsbHkg
cGFydGlhbGx5IGxvYWRpbmcgaXQgdG8gb25seSBsb2FkIHRoZQorICAgICAgICB0eXBlcyBnaXZl
biBieSB0eXBlcy4KKworICAgICAgICBJZiBjYWxsZWVfb3duc19vYmogaXMgVHJ1ZSwgdGhlbiBv
d25lcnNoaXAgb2Ygb2JqIHRyYW5zZmVycworICAgICAgICB0byB0aGlzIGZ1bmN0aW9uIHdoZW4g
Y2FsbGVkLCBhbmQgdGhlIGNhbGxlciBtdXN0IG5ldmVyIG11dGF0ZQorICAgICAgICB0aGUgb2Jq
IG9yIGFueXRoaW5nIHJlZmVycmVkIHRvIGluIHRoZSBvYmplY3QgZ3JhcGggcm9vdGVkIGF0Cisg
ICAgICAgIG9iai4KKworICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9IG9iai5nZXQoInZl
cnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTjoKICAgICAgICAg
ICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKICAgICAgICAgc2VsZiA9IGNscyh0
ZXN0c19yb290LCB1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikpCi0gICAgICAgIGlm
IG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIikgYW5kIGhhc2F0dHIob2JqLCAicGF0aHMiKToKKyAg
ICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKToKICAgICAgICAgICAgIHJhaXNlIE1h
bmlmZXN0RXJyb3IKIAotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7dG9fb3NfcGF0aChrKTog
diBmb3IgaywgdiBpbiBpdGVyaXRlbXMob2JqWyJwYXRocyJdKX0KLQogICAgICAgICBmb3IgdGVz
dF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0pOgogICAgICAgICAg
ICAgaWYgdGVzdF90eXBlIG5vdCBpbiBpdGVtX2NsYXNzZXM6CiAgICAgICAgICAgICAgICAgcmFp
c2UgTWFuaWZlc3RFcnJvcgpAQCAtNDc3LDcgKzI5MiwxMCBAQCBjbGFzcyBNYW5pZmVzdChvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgdHlwZXMgYW5kIHRlc3RfdHlwZSBub3QgaW4gdHlwZXM6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2VsZi5fZGF0YVt0ZXN0X3R5
cGVdLnNldF9qc29uKHRlc3RzX3Jvb3QsIHR5cGVfcGF0aHMpCisgICAgICAgICAgICBpZiBub3Qg
Y2FsbGVlX293bnNfb2JqOgorICAgICAgICAgICAgICAgIHR5cGVfcGF0aHMgPSBkZWVwY29weSh0
eXBlX3BhdGhzKQorCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24o
dHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC01MTEsMTAgKzMyOSwxMSBA
QCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0ICVzIiAlIG1hbmlm
ZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyYiIp
IGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLm9wZW4obWFuaWZlc3QsICJyIiwgZW5jb2Rpbmc9
InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBydiA9IE1hbmlmZXN0LmZyb21fanNvbih0
ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rf
anNvbi5sb2FkKGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVz
PXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9v
d25zX29iaj1UcnVlKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTIzLDcgKzM0Miw4IEBAIGRl
ZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgIGVsc2U6CiAgICAgICAgIHJ2ID0g
TWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVfb3duc19v
Ymo9VHJ1ZSkKIAogICAgIGlmIGFsbG93X2NhY2hlZDoKICAgICAgICAgX19sb2FkX2NhY2hlW21h
bmlmZXN0X3BhdGhdID0gcnYKQEAgLTU0MCw3ICszNjAsOCBAQCBkZWYgbG9hZF9hbmRfdXBkYXRl
KHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdf
Y29weT1UcnVlLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAgIHR5cGVzPU5vbmUs
ICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KICAgICAgICAgICAgICAgICAgICAg
d3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAotICAgICAgICAgICAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIGFsbG93
X2NhY2hlZD1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVs
PVRydWUgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICApOgogICAgICMgdHlwZTog
KC4uLikgLT4gTWFuaWZlc3QKICAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkKQEAgLTU2OCw3ICsz
ODksNyBAQCBkZWYgbG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAg
ICAgaWYgcmVidWlsZCBvciB1cGRhdGU6CiAgICAgICAgIHRyZWUgPSB2Y3MuZ2V0X3RyZWUodGVz
dHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNhY2hlX3Jvb3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAgICAgICBjaGFuZ2Vk
ID0gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgICAgIGNoYW5nZWQgPSBtYW5pZmVzdC51cGRh
dGUodHJlZSwgcGFyYWxsZWwpCiAgICAgICAgIGlmIHdyaXRlX21hbmlmZXN0IGFuZCBjaGFuZ2Vk
OgogICAgICAgICAgICAgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpCiAgICAgICAgIHRy
ZWUuZHVtcF9jYWNoZXMoKQpAQCAtNTgxLDkgKzQwMiw5IEBAIGRlZiB3cml0ZShtYW5pZmVzdCwg
bWFuaWZlc3RfcGF0aCk6CiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUobWFuaWZlc3Rf
cGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgogICAgICAgICBvcy5t
YWtlZGlycyhkaXJfbmFtZSkKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgIndiIikgYXMg
ZjoKKyAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInciKSBhcyBmOgogICAgICAgICAjIFVz
ZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRy
YWlsaW5nCiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJh
cnkvanNvbi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNv
bigpLCBmLAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxsZXJfb3duc19v
Ymo9VHJ1ZSksIGYsCiAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTEs
IHNlcGFyYXRvcnM9KCcsJywgJzogJykpCiAgICAgICAgIGYud3JpdGUoIlxuIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQppbmRleCBiOWRjYzhmNTM2MzZk
M2RiODBlNDUxOGY3ZDgzODAyN2YwOThhOGQ3Li4yOTlhZDIxMmY3NjgwZTc1MTc1MDU2NjdjNmUw
OWJkNjBlZDBiN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2Vm
aWxlLnB5CkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHJlCiBpbXBvcnQg
b3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIFBZMworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBlbnN1cmVfdGV4dCwgaXRl
cml0ZW1zLCB0ZXh0X3R5cGUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTMzLDcgKzMzLDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogaW1wb3J0IGh0bWw1bGliCiAKIGZyb20gLiBpbXBvcnQgWE1MUGFy
c2VyCi1mcm9tIC5pdGVtIGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBXZWJEcml2
ZXJTcGVjVGVzdCwgUmVmVGVzdE5vZGUsIFRlc3RoYXJuZXNzVGVzdCwKK2Zyb20gLml0ZW0gaW1w
b3J0IChNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBSZWZUZXN0
LCBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIENyYXNo
VGVzdCwgQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgVmlzdWFsVGVzdCkKIGZyb20gLnV0aWxzIGlt
cG9ydCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hlZF9wcm9wZXJ0eQogCkBAIC01Niw5ICs1
Niw5IEBAIGRlZiByZXBsYWNlX2VuZChzLCBvbGQsIG5ldyk6CiAKIAogZGVmIHJlYWRfc2NyaXB0
X21ldGFkYXRhKGYsIHJlZ2V4cCk6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8sIFBhdHRlcm5bYnl0
ZXNdKSAtPiBJdGVyYWJsZVtUdXBsZVtieXRlcywgYnl0ZXNdXQorICAgICMgdHlwZTogKEJpbmFy
eUlPLCBQYXR0ZXJuW2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbVGV4dCwgVGV4dF1dCiAgICAg
IiIiCi0gICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0cmluZ3MpIGZyb20g
dGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAorICAgIFlpZWxkcyBhbnkgbWV0YWRhdGEgKHBhaXJz
IG9mIHN0cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAogICAgIGFzIHNwZWNp
ZmllZCBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCiAKICAgICBgcmVnZXhwYCAtIFJl
Z2V4cCBjb250YWluaW5nIHR3byBncm91cHMgY29udGFpbmluZyB0aGUgbWV0YWRhdGEgbmFtZSBh
bmQKQEAgLTcwLDI3ICs3MCwyNSBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhw
KToKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHlpZWxk
IChtLmdyb3VwcygpWzBdLCBtLmdyb3VwcygpWzFdKQorICAgICAgICB5aWVsZCAobS5ncm91cHMo
KVswXS5kZWNvZGUoInV0ZjgiKSwgbS5ncm91cHMoKVsxXS5kZWNvZGUoInV0ZjgiKSkKIAogCiBf
YW55X3ZhcmlhbnRzID0gewotICAgIGIiZGVmYXVsdCI6IHsibG9uZ2hhbmQiOiB7YiJ3aW5kb3ci
LCBiImRlZGljYXRlZHdvcmtlciJ9fSwKLSAgICBiIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnku
aHRtbCJ9LAotICAgIGIic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKLSAg
ICBiInNoYXJlZHdvcmtlciI6IHt9LAotICAgIGIiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgi
OiAiLmFueS53b3JrZXIuaHRtbCJ9LAotICAgIGIid29ya2VyIjogeyJsb25naGFuZCI6IHtiImRl
ZGljYXRlZHdvcmtlciIsIGIic2hhcmVkd29ya2VyIiwgYiJzZXJ2aWNld29ya2VyIn19LAotICAg
IGIianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKLX0gICMgdHlwZTogRGljdFtieXRl
cywgRGljdFtzdHIsIEFueV1dCisgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAorICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzaGFy
ZWR3b3JrZXIiOiB7fSwKKyAgICAiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53
b3JrZXIuaHRtbCJ9LAorICAgICJ3b3JrZXIiOiB7ImxvbmdoYW5kIjogeyJkZWRpY2F0ZWR3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIifX0sCisgICAgImpzc2hlbGwiOiB7
InN1ZmZpeCI6ICIuYW55LmpzIn0sCit9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGljdFtUZXh0LCBB
bnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgotICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIi
Ci0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkg
dGhlIGdpdmVuIGtleXdvcmQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5n
cykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCBiaW5hcnlfdHlwZSksIGl0ZW0KLSAgICBhc3NlcnQgbm90IGl0ZW0uc3Rh
cnRzd2l0aChiIiEiKSwgaXRlbQorICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlw
ZSksIGl0ZW0KIAogICAgIHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzLmdldChpdGVtLCBOb25lKQog
ICAgIGlmIHZhcmlhbnQgaXMgTm9uZToKQEAgLTEwMCw0OCArOTgsNDYgQEAgZGVmIGdldF9hbnlf
dmFyaWFudHMoaXRlbSk6CiAKIAogZGVmIGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpOgotICAg
ICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCiAg
ICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIHRoYXQg
d2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAo
c3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KICAgICAiIiIKLSAgICByZXR1
cm4gc2V0KF9hbnlfdmFyaWFudHNbYiJkZWZhdWx0Il1bImxvbmdoYW5kIl0pCisgICAgcmV0dXJu
IHNldCh7IndpbmRvdyIsICJkZWRpY2F0ZWR3b3JrZXIifSkKIAogCiBkZWYgcGFyc2VfdmFyaWFu
dHModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBl
OiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJp
YW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgYSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCisg
ICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5ncykgZGVmaW5lZCBieSBhIGNvbW1h
LXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwg
YmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5
cGUpLCB2YWx1ZQogCi0gICAgZ2xvYmFscyA9IGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpCisg
ICAgaWYgdmFsdWUgPT0gIiI6CisgICAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFu
dHMoKQogCi0gICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIik6CisgICAgZ2xvYmFscyA9
IHNldCgpCisgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoIiwiKToKICAgICAgICAgaXRlbSA9
IGl0ZW0uc3RyaXAoKQotICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoYiIhIik6Ci0gICAgICAg
ICAgICBnbG9iYWxzIC09IGdldF9hbnlfdmFyaWFudHMoaXRlbVsxOl0pCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKLQorICAgICAg
ICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKICAgICByZXR1cm4gZ2xvYmFscwog
CiAKIGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBT
ZXRbVHVwbGVbYnl0ZXMsIGJvb2xdXQorICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtUdXBsZVtU
ZXh0LCBib29sXV0KICAgICAiIiIKICAgICBZaWVsZHMgdHVwbGVzIG9mIHRoZSByZWxldmFudCBm
aWxlbmFtZSBzdWZmaXggKGEgc3RyaW5nKSBhbmQgd2hldGhlciB0aGUKICAgICB2YXJpYW50IGlz
IGludGVuZGVkIHRvIHJ1biBpbiBhIEpTIHNoZWxsLCBmb3IgdGhlIHZhcmlhbnRzIGRlZmluZWQg
YnkgdGhlCiAgICAgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAgIGFz
c2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlz
aW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKICAg
ICBnbG9iYWxfdHlwZXMgPSBwYXJzZV92YXJpYW50cyh2YWx1ZSkKICAgICBmb3IgZ2xvYmFsX3R5
cGUgaW4gZ2xvYmFsX3R5cGVzOgogICAgICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50c1tnbG9i
YWxfdHlwZV0KLSAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZpeCIsICIuYW55LiVz
Lmh0bWwiICUgZ2xvYmFsX3R5cGUuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICBydi5hZGQoKHN1
ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gYiJqc3NoZWxsIikpCisgICAgICAgIHN1ZmZpeCA9IHZhcmlh
bnQuZ2V0KCJzdWZmaXgiLCAiLmFueS4lcy5odG1sIiAlIGdsb2JhbF90eXBlKQorICAgICAgICBy
di5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gImpzc2hlbGwiKSkKIAogICAgIHJldHVybiBy
dgogCkBAIC0xNTYsNiArMTUyLDggQEAgZGVmIGdsb2JhbF92YXJpYW50X3VybCh1cmwsIHN1ZmZp
eCk6CiAgICAgIyB0aGUgZm9ybSAuaHR0cHMuYW55LmpzCiAgICAgaWYgIi5odHRwcy4iIGluIHVy
bCBhbmQgc3VmZml4LnN0YXJ0c3dpdGgoIi5odHRwcy4iKToKICAgICAgICAgdXJsID0gdXJsLnJl
cGxhY2UoIi5odHRwcy4iLCAiLiIpCisgICAgZWxpZiAiLmgyLiIgaW4gdXJsIGFuZCBzdWZmaXgu
c3RhcnRzd2l0aCgiLmgyLiIpOgorICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgiLmgyLiIsICIu
IikKICAgICByZXR1cm4gcmVwbGFjZV9lbmQodXJsLCAiLmpzIiwgc3VmZml4KQogCiAKQEAgLTE5
MiwyNCArMTkwLDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMgdHlwZTogU2V0W1R1cGxlW2J5dGVzLCAuLi5d
XQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFz
ZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToKLSAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBB
bnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoX3N0ciwgdXJsX2Jhc2Us
IGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKEFueVN0ciwgQW55
U3RyLCBUZXh0LCBPcHRpb25hbFtUZXh0XSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCiAgICAg
ICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291cmNlIHRyZWUuCiAKICAg
ICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlCi0gICAgICAgIDpwYXJhbSByZWxfcGF0aDogRmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRlc3Rz
X3Jvb3QKKyAgICAgICAgOnBhcmFtIHJlbF9wYXRoX3N0cjogRmlsZSBwYXRoIHJlbGF0aXZlIHRv
IHRlc3RzX3Jvb3QKICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIFVSTCB1c2VkIHdoZW4g
Y29udmVydGluZyBmaWxlIHBhdGhzIHRvIHVybHMKICAgICAgICAgOnBhcmFtIGNvbnRlbnRzOiBC
eXRlIGFycmF5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBgYE5vbmVgYC4KICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcmVsX3BhdGggPSBlbnN1cmVfdGV4dChyZWxfcGF0aF9zdHIpCiAg
ICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5pc2FicyhyZWxfcGF0aCksIHJlbF9wYXRoCi0KICAg
ICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgIyBkbyBzbGFzaCBub3JtYWxp
emF0aW9uIG9uIFdpbmRvd3MKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVsX3BhdGgsIGJp
bmFyeV90eXBlKToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHJlbF9wYXRoLnJlcGxhY2Uo
YiIvIiwgYiJcXCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlbF9wYXRo
ID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKKyAgICAgICAgICAgIHJlbF9wYXRoID0g
cmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAogICAgICAgICBkaXJfcGF0aCwgZmlsZW5h
bWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQogICAgICAgICBuYW1lLCBleHQgPSBvcy5wYXRo
LnNwbGl0ZXh0KGZpbGVuYW1lKQpAQCAtMjIwLDEzICsyMTUsMTMgQEAgY2xhc3MgU291cmNlRmls
ZShvYmplY3QpOgogCiAgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0KCIuIilbMTpdCiAK
LSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdCAgIyB0eXBlOiBVbmlvbltieXRl
cywgVGV4dF0KLSAgICAgICAgc2VsZi5yZWxfcGF0aCA9IHJlbF9wYXRoICAjIHR5cGU6IFVuaW9u
W2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmRpcl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTog
VW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0
eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBl
OiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVW5p
b25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5
cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0XV0KKyAgICAgICAgc2VsZi50ZXN0c19yb290
ID0gZW5zdXJlX3RleHQodGVzdHNfcm9vdCkgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnJl
bF9wYXRoID0gcmVsX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmRpcl9wYXRoID0g
ZGlyX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUg
ICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5cGU6IFRleHQKKyAg
ICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnR5cGVfZmxh
ZyA9IHR5cGVfZmxhZyAgIyB0eXBlOiBPcHRpb25hbFtUZXh0XQogICAgICAgICBzZWxmLm1ldGFf
ZmxhZ3MgPSBtZXRhX2ZsYWdzICAjIHR5cGU6IFVuaW9uW0xpc3RbYnl0ZXNdLCBMaXN0W1RleHRd
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKICAgICAgICAgc2VsZi5jb250ZW50
cyA9IGNvbnRlbnRzCkBAIC0yNDAsOSArMjM1LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogCiAgICAgICAgIGlmICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHJ2OgogICAgICAgICAg
ICAgY2FjaGVkX3Byb3BlcnRpZXMgPSBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KLSAgICAg
ICAgICAgIGZvciBrZXkgaW4gcnYua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBj
YWNoZWRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHJ2W2tleV0KKyAgICAg
ICAgICAgIHJ2ID0ge2tleTp2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMocnYpIGlm
IGtleSBub3QgaW4gY2FjaGVkX3Byb3BlcnRpZXN9CiAgICAgICAgICAgICBkZWwgcnZbIl9fY2Fj
aGVkX3Byb3BlcnRpZXNfXyJdCiAgICAgICAgIHJldHVybiBydgogCkBAIC0yNzksOSArMjcyLDE0
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgIGZpbGVfb2JqID0gb3Bl
bihzZWxmLnBhdGgsICdyYicpCiAgICAgICAgIHJldHVybiBmaWxlX29iagogCisgICAgQGNhY2hl
ZF9wcm9wZXJ0eQorICAgIGRlZiByZWxfcGF0aF9wYXJ0cyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLnJlbF9w
YXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKwogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYg
cGF0aChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBVbmlvbltieXRlcywgVGV4dF0KKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2Vs
Zi50ZXN0c19yb290LCBzZWxmLnJlbF9wYXRoKQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQpAQCAt
Mjk3LDE3ICsyOTUsMTMgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hl
ZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IGJ5
dGVzCisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBpZiBub3Qgc2VsZi5faGFz
aDoKICAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKCkgYXMgZjoKICAgICAgICAgICAgICAgICBj
b250ZW50ID0gZi5yZWFkKCkKIAogICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKChiImJsb2Ig
IiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKLSAgICAgICAgICAgIGhh
c2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5cGU6IHN0cgotICAg
ICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoX3N0ci5l
bmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
aGFzaCA9IGhhc2hfc3RyCisgICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hs
aWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSkKIAogICAgICAgICByZXR1cm4gc2VsZi5faGFzaAog
CkBAIC0zMTYsMTggKzMxMCwxNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
IGlmIHNlbGYuZGlyX3BhdGggPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAg
ICAgIHBhcnRzID0gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgcGFy
dHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCiAKICAgICAgICAgaWYgKHBhcnRzWzBdIGluIHNlbGYu
cm9vdF9kaXJfbm9uX3Rlc3Qgb3IKICAgICAgICAgICAgIGFueShpdGVtIGluIHNlbGYuZGlyX25v
bl90ZXN0IGZvciBpdGVtIGluIHBhcnRzKSBvcgotICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4o
cGF0aCldID09IGxpc3QocGF0aCkgZm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0aF9ub25fdGVzdCkp
OgorICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4ocGF0aCldID09IHBhdGggZm9yIHBhdGggaW4g
c2VsZi5kaXJfcGF0aF9ub25fdGVzdCkpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaW5fY29uZm9ybWFuY2VfY2hlY2tlcl9kaXIoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICByZXR1cm4gKHNlbGYuZGly
X3BhdGggPT0gImNvbmZvcm1hbmNlLWNoZWNrZXJzIiBvcgotICAgICAgICAgICAgICAgIHNlbGYu
ZGlyX3BhdGguc3RhcnRzd2l0aCgiY29uZm9ybWFuY2UtY2hlY2tlcnMiICsgb3MucGF0aC5zZXAp
KQorICAgICAgICByZXR1cm4gc2VsZi5yZWxfcGF0aF9wYXJ0c1swXSA9PSAiY29uZm9ybWFuY2Ut
Y2hlY2tlcnMiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19ub25fdGVzdChzZWxm
KToKQEAgLTMzOSw2ICszMzIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9PSAiTUVUQS55bWwiIG9yCiAgICAgICAgICAgICAgICAg
c2VsZi5maWxlbmFtZS5zdGFydHN3aXRoKCIuIikgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZp
bGVuYW1lLmVuZHN3aXRoKCIuaGVhZGVycyIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi5maWxl
bmFtZS5lbmRzd2l0aCgiLmluaSIpIG9yCiAgICAgICAgICAgICAgICAgc2VsZi5pbl9ub25fdGVz
dF9kaXIoKSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzk0LDEwICszODgsMTAgQEAgY2xhc3MgU291
cmNlRmlsZShvYmplY3QpOgogICAgICAgICBiZSBhIHdlYmRyaXZlciBzcGVjIHRlc3QgZmlsZSIi
IgogICAgICAgICAjIHdkc3BlYyB0ZXN0cyBhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3dlYmRy
aXZlciBleGNsdWRpbmcgX19pbml0X18ucHkKICAgICAgICAgIyBmaWxlcy4KLSAgICAgICAgcmVs
X2Rpcl90cmVlID0gc2VsZi5yZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgICAgICAgcmV0
dXJuICgoKHJlbF9kaXJfdHJlZVswXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVuKHJlbF9kaXJfdHJl
ZSkgPiAxKSBvcgotICAgICAgICAgICAgICAgICAocmVsX2Rpcl90cmVlWzoyXSA9PSBbImluZnJh
c3RydWN0dXJlIiwgIndlYmRyaXZlciJdIGFuZAotICAgICAgICAgICAgICAgICAgbGVuKHJlbF9k
aXJfdHJlZSkgPiAyKSkgYW5kCisgICAgICAgIHJlbF9wYXRoX3BhcnRzID0gc2VsZi5yZWxfcGF0
aF9wYXJ0cworICAgICAgICByZXR1cm4gKCgocmVsX3BhdGhfcGFydHNbMF0gPT0gIndlYmRyaXZl
ciIgYW5kIGxlbihyZWxfcGF0aF9wYXJ0cykgPiAxKSBvcgorICAgICAgICAgICAgICAgICAocmVs
X3BhdGhfcGFydHNbOjJdID09ICgiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJpdmVyIikgYW5kCisg
ICAgICAgICAgICAgICAgICBsZW4ocmVsX3BhdGhfcGFydHMpID4gMikpIGFuZAogICAgICAgICAg
ICAgICAgIHNlbGYuZmlsZW5hbWUgbm90IGluICgiX19pbml0X18ucHkiLCAiY29uZnRlc3QucHki
KSBhbmQKICAgICAgICAgICAgICAgICBmbm1hdGNoKHNlbGYuZmlsZW5hbWUsIHdkX3BhdHRlcm4p
KQogCkBAIC00MTMsNiArNDA3LDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfZmxhZyA9PSAi
Y3Jhc2giIG9yICJjcmFzaHRlc3RzIiBpbiBzZWxmLmRpcl9wYXRoLnNwbGl0KG9zLnBhdGguc2Vw
KQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWVfaXNfdGVudGF0aXZlKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0byBiZSBhCisgICAgICAgIHRl
bnRhdGl2ZSBmaWxlLgorCisgICAgICAgIFNlZSBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5v
cmcvd3JpdGluZy10ZXN0cy9maWxlLW5hbWVzLmh0bWwjdGVzdC1mZWF0dXJlcyIiIgorICAgICAg
ICByZXR1cm4gInRlbnRhdGl2ZSIgaW4gc2VsZi5tZXRhX2ZsYWdzCisKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgbWFya3VwX3R5cGUoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9u
YWxbVGV4dF0KQEAgLTQ2NSw3ICs0NjgsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAK
ICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNjcmlwdF9tZXRhZGF0YShzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW2J5dGVzLCBieXRlc11dXQor
ICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQog
ICAgICAgICBpZiBzZWxmLm5hbWVfaXNfd29ya2VyIG9yIHNlbGYubmFtZV9pc19tdWx0aV9nbG9i
YWwgb3Igc2VsZi5uYW1lX2lzX3dpbmRvdzoKICAgICAgICAgICAgIHJlZ2V4cCA9IGpzX21ldGFf
cmUKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfd2ViZHJpdmVyOgpAQCAtNDgyLDcgKzQ4NSw3
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgIiIiVGhlIHRpbWVvdXQgb2Yg
YSB0ZXN0IG9yIHJlZmVyZW5jZSBmaWxlLiAibG9uZyIgaWYgdGhlIGZpbGUgaGFzIGFuIGV4dGVu
ZGVkIHRpbWVvdXQKICAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UiIiIKICAgICAgICAgaWYgc2Vs
Zi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICBpZiBhbnkobSA9PSAoYiJ0aW1lb3V0Iiwg
YiJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGEpOgorICAgICAgICAgICAgaWYg
YW55KG0gPT0gKCJ0aW1lb3V0IiwgImxvbmciKSBmb3IgbSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0
YSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJsb25nIgogCiAgICAgICAgIGlmIHNlbGYucm9v
dCBpcyBOb25lOgpAQCAtNjQ0LDggKzY0Nyw4IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAg
ICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlLmRl
Y29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBpZiBrZXkgPT0gInZhcmlhbnQiOgorICAg
ICAgICAgICAgICAgICAgICBydi5hcHBlbmQodmFsdWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLnZhcmlhbnRfbm9kZXM6CiAgICAgICAgICAgICAgICAg
aWYgImNvbnRlbnQiIGluIGVsZW1lbnQuYXR0cmliOgpAQCAtNjc3LDYgKzY4MCwzNiBAQCBjbGFz
cyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5
CisgICAgZGVmIHF1aWNfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtF
bGVtZW50VHJlZS5FbGVtZW50XQorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1l
bnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKKyAgICAgICAgc3BlY2lm
eSB3aGV0aGVyIGl0IG5lZWRzIFFVSUMgc2VydmVyLiIiIgorICAgICAgICBhc3NlcnQgc2VsZi5y
b290IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ncXVpYyddIikKKworICAgIEBj
YWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAt
PiBPcHRpb25hbFtib29sXQorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBh
IHRlc3QgcmVxdWlyZXMgUVVJQyBzZXJ2ZXIKKworICAgICAgICBEZXRlcm1pbmVkIGJ5IDxtZXRh
PiBlbGVtZW50cyAoYHF1aWNfbm9kZXMoKWApIGFuZCAiLy8gTUVUQSIgY29tbWVudHMKKyAgICAg
ICAgKGBzY3JpcHRfbWV0YWRhdGEoKWApLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5z
Y3JpcHRfbWV0YWRhdGE6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInF1aWMiLCAidHJ1ZSIp
IGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICBpZiBzZWxmLnF1aWNfbm9kZXM6CisgICAgICAgICAgICBxdWljX3N0
ciA9IHNlbGYucXVpY19ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgImZhbHNlIikgICMg
dHlwZTogVGV4dAorICAgICAgICAgICAgaWYgcXVpY19zdHIubG93ZXIoKSA9PSAidHJ1ZSI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAg
QGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgogICAgICAgICAj
IHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KQEAgLTc4NCw2ICs4MTcsOCBA
QCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuaXRlbXNfY2FjaGU6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCisgICAgICAgIGRyb3BfY2Fj
aGVkID0gInJvb3QiIG5vdCBpbiBzZWxmLl9fZGljdF9fCisKICAgICAgICAgaWYgc2VsZi5uYW1l
X2lzX25vbl90ZXN0OgogICAgICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFsKICAgICAgICAgICAg
ICAgICBTdXBwb3J0RmlsZSgKQEAgLTgzNSwxMSArODcwLDExIEBAIGNsYXNzIFNvdXJjZUZpbGUo
b2JqZWN0KToKICAgICAgICAgICAgICAgICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lz
X211bHRpX2dsb2JhbDoKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAgICAgICAgICAgIGds
b2JhbHMgPSB1IiIKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAg
ICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAi
Z2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCiAKQEAgLTg1MSw2ICs4ODYsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF92YXJpYW50X3VybChzZWxmLnJlbF91
cmwsIHN1ZmZpeCkgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYu
dGltZW91dCwKICAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxsLAorICAgICAgICAg
ICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21l
dGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgIGZvciAoc3VmZml4LCBqc3NoZWxsKSBpbiBzb3J0ZWQoZ2xvYmFsX3N1ZmZpeGVzKGds
b2JhbHMpKQpAQCAtODY3LDYgKzkwMyw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgdGVz
dF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHMKQEAg
LTg4Miw2ICs5MTksNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsICsgdmFy
aWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAg
ICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICBzY3JpcHRf
bWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCkBAIC05MTgsMTkgKzk1
NiwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5x
dWljLAogICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2ZXIsCiAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAg
ICAgICAgICAgICkpCiAKICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6Ci0g
ICAgICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWwotICAgICAgICAgICAgICAg
IFJlZlRlc3ROb2RlKAorICAgICAgICAgICAgcnYgPSBSZWZUZXN0Lml0ZW1fdHlwZSwgWworICAg
ICAgICAgICAgICAgIFJlZlRlc3QoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9v
dCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfdXJsLAogICAg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPXNlbGYucmVmZXJlbmNlcywKICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9
c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXplPXNlbGYudmlld3Bv
cnRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAogICAgICAgICAgICAg
ICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CkBAIC05NTYsNCArOTk2LDExIEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgICAgICBzZWxmLml0ZW1zX2NhY2hlID0gcnYKIAorICAgICAg
ICBpZiBkcm9wX2NhY2hlZCBhbmQgIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIgaW4gc2VsZi5fX2Rp
Y3RfXzoKKyAgICAgICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gc2VsZi5fX2RpY3RfX1siX19j
YWNoZWRfcHJvcGVydGllc19fIl0KKyAgICAgICAgICAgIGZvciBwcm9wIGluIGNhY2hlZF9wcm9w
ZXJ0aWVzOgorICAgICAgICAgICAgICAgIGlmIHByb3AgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAg
ICAgICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bcHJvcF0KKyAgICAgICAgICAgIGRlbCBz
ZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorCiAgICAgICAgIHJldHVybiBy
dgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21h
bmlmZXN0LnB5CmluZGV4IDczM2NhZmRjYmU5ZGM5Y2UwN2NiM2U4NDNiZDk1NmQwMmM2ZmQyZmUu
LmI2MThkNzVlYzFlZDJlOTU1ZTI3Zjc2MzQ0NmMxYjBmYzM5ODdmMWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dGVzdHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKQEAg
LTUsNyArNSw3IEBAIGltcG9ydCBtb2NrCiBpbXBvcnQgaHlwb3RoZXNpcyBhcyBoCiBpbXBvcnQg
aHlwb3RoZXNpcy5zdHJhdGVnaWVzIGFzIGhzCiAKLWltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGlt
cG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLiBpbXBvcnQgbWFuaWZlc3QsIHNvdXJjZWZpbGUsIGl0
ZW0sIHV0aWxzCiAKQEAgLTE4LDcgKzE4LDEwIEBAIGlmIE1ZUFk6CiAKIGRlZiBTb3VyY2VGaWxl
V2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoc3RyLCBz
dHIsIFR5cGVbaXRlbS5NYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmlsZS5Tb3VyY2VG
aWxlCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcmVs
X3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICBzID0gbW9j
ay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxfcGF0aF9wYXJ0cz1y
ZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkKICAgICBpZiBjbHMg
PT0gaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgp
CiAgICAgZWxzZToKQEAgLTI5LDUxICszMiw4MyBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBh
dGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0cyhwYXRo
LCBoYXNoLCBjbHMsIHZhcmlhbnRzKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVt
LlVSTE1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJjZUZpbGUKLSAgICBz
ID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICByZWxfcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIHMgPSBtb2NrLk1vY2socmVs
X3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3Bh
cnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogICAgIHRlc3RzID0gW2NscygiL2Zv
b2JhciIsIHBhdGgsICIvIiwgaXRlbVswXSwgKippdGVtWzFdKSBmb3IgaXRlbSBpbiB2YXJpYW50
c10KICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0
ZW1fdHlwZSwgdGVzdHMpKQogICAgIHJldHVybiBzICAjIHR5cGU6IGlnbm9yZQogCiAKLUBocy5j
b21wb3NpdGUKLWRlZiByZWxfZGlyX2ZpbGVfcGF0aChkcmF3KToKLSAgICBsZW5ndGggPSBkcmF3
KGhzLmludGVnZXJzKG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MjApKQotICAgIGlmIGxlbmd0aCA9
PSAxOgotICAgICAgICByZXR1cm4gImEiCi0gICAgZWxzZToKLSAgICAgICAgcmVtYWluaW5nID0g
bGVuZ3RoIC0gMgotICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGguc2VwCi0gICAgICAg
IG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3NpemU9cmVtYWluaW5n
LCBtYXhfc2l6ZT1yZW1haW5pbmcpKQotICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZSgi
YSIgKyBtaWQgKyAiYSIpCi0KLQogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJjZWZpbGVfc3RyYXRl
Z3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5lc3NUZXN0LCBpdGVt
LlJlZlRlc3ROb2RlLAorICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwg
aXRlbS5SZWZUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLk1hbnVhbFRlc3QsIGl0ZW0u
V2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uQ29uZm9ybWFuY2VD
aGVja2VyVGVzdCwgaXRlbS5TdXBwb3J0RmlsZV0KICAgICBjbHMgPSBkcmF3KGhzLnNhbXBsZWRf
ZnJvbShpdGVtX2NsYXNzZXMpKQogCi0gICAgcGF0aCA9IGRyYXcocmVsX2Rpcl9maWxlX3BhdGgo
KSkKLSAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PSIwMTIzNDU2Nzg5YWJjZGVmIiwg
bWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBh
dGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoID0gdSJhIgorICAgIHJlbF9wYXRoX3BhcnRzID0gdHVw
bGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgaGFzaCA9IGRyYXcoaHMudGV4dChhbHBo
YWJldD11IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQorICAg
IHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRo
X3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogCi0g
ICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdE5vZGU6Ci0gICAgICAgIHJlZl9wYXRoID0gZHJhdyhy
ZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgICAgICBoLmFzc3VtZShwYXRoICE9IHJlZl9wYXRoKQor
ICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3Q6CisgICAgICAgIHJlZl9wYXRoID0gdSJiIgogICAg
ICAgICByZWZfZXEgPSBkcmF3KGhzLnNhbXBsZWRfZnJvbShbIj09IiwgIiE9Il0pKQogICAgICAg
ICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0
aCksIHJlZmVyZW5jZXM9Wyh1dGlscy5mcm9tX29zX3BhdGgocmVmX3BhdGgpLCByZWZfZXEpXSkK
ICAgICBlbGlmIGNscyBpcyBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAgICB0ZXN0ID0gY2xzKCIv
Zm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwg
cGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0aCkpCisgICAgICAgIHRlc3QgPSBjbHMo
Ii9mb29iYXIiLCBwYXRoLCAiLyIsICJmb29iYXIiKQogCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9
IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkpCiAgICAgcmV0
dXJuIHMKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCi0gICAg
ICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCBtYXhfc2l6ZT0xMDAwLCB1bmlxdWVfYnk9bGFtYmRh
IHg6IHgucmVsX3BhdGgpKQorQGhzLmNvbXBvc2l0ZQorZGVmIG1hbmlmZXN0X3RyZWUoZHJhdyk6
CisgICAgbmFtZXMgPSBocy50ZXh0KGFscGhhYmV0PWhzLmNoYXJhY3RlcnMoYmxhY2tsaXN0X2No
YXJhY3RlcnM9dSJcMC9cXDoqXCI/PD58IiksIG1pbl9zaXplPTEpCisgICAgdHJlZSA9IGhzLnJl
Y3Vyc2l2ZShzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCisgICAgICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgY2hpbGRyZW46IGhzLmRpY3Rpb25hcmllcyhuYW1lcywgY2hpbGRyZW4sIG1pbl9zaXpl
PTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlYXZlcz0xMCkKKworICAgIGdlbmVy
YXRlZF9yb290ID0gZHJhdyh0cmVlKQorICAgIGguYXNzdW1lKGlzaW5zdGFuY2UoZ2VuZXJhdGVk
X3Jvb3QsIGRpY3QpKQorCisgICAgcmVmdGVzdF91cmxzID0gW10KKyAgICBvdXRwdXQgPSBbXQor
ICAgIHN0YWNrID0gWygoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZ2VuZXJhdGVkX3Jv
b3QpXQorICAgIHdoaWxlIHN0YWNrOgorICAgICAgICBwYXRoLCBub2RlID0gc3RhY2sucG9wKCkK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgIHN0YWNrLmV4
dGVuZCgocGF0aCArIChrLCksIHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhub2RlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihwYXRoKQor
ICAgICAgICAgICAgbm9kZS5yZWxfcGF0aCA9IHJlbF9wYXRoCisgICAgICAgICAgICBub2RlLnJl
bF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aCkKKyAgICAgICAgICAgIGZvciB0ZXN0X2l0ZW0gaW4g
bm9kZS5tYW5pZmVzdF9pdGVtcy5yZXR1cm5fdmFsdWVbMV06CisgICAgICAgICAgICAgICAgdGVz
dF9pdGVtLnBhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGVz
dF9pdGVtLCBpdGVtLlJlZlRlc3QpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWZ0ZXN0X3Vy
bHM6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzID0gaHMuc2FtcGxlZF9m
cm9tKHJlZnRlc3RfdXJscykgfCBuYW1lcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IG5hbWVzCisgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZSA9IGhzLnR1cGxlcyhocy5zYW1wbGVkX2Zyb20oW3UiPT0iLCB1IiE9
Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVf
dXJscykKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyA9IGhzLmxpc3RzKHJlZmVyZW5j
ZSwgbWluX3NpemU9MSwgdW5pcXVlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRlc3RfaXRl
bS5yZWZlcmVuY2VzID0gZHJhdyhyZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICByZWZ0
ZXN0X3VybHMuYXBwZW5kKHRlc3RfaXRlbS51cmwpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KG5vZGUpCisKKyAgICByZXR1cm4gb3V0cHV0CisKKworQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgp
KQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hl
Y2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRo
VGVzdCgiYSIsICIwIio0MCwgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0KV0pCiBkZWYgdGVz
dF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCkBAIC04
OCwxMCArMTIzLDExIEBAIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6CiAgICAgYXNzZXJ0
IGxvYWRlZC50b19qc29uKCkgPT0ganNvbl9zdHIKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3Vy
Y2VmaWxlX3N0cmF0ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCB1bmlxdWVf
Ynk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgpKQorIyBG
SVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hlY2s9KGgu
SGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgi
YSIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXSkKLUBoLmV4YW1wbGUoW1NvdXJjZUZp
bGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
YWEiLCAiPT0iKV0pXSkKK0BoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0
MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQogZGVmIHRlc3Rf
bWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCkBA
IC0xMDcsMTkxICsxNDMsNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKIGRl
ZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fZm9yd2FyZHNsYXNoKCk6CiAgICAgbSA9IG1hbmlmZXN0
Lk1hbmlmZXN0KCkKIAotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEvYiIsICIwIio0MCwg
aXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzLCBUcnVlKV0p
IGlzIFRydWUKLQotICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAgICAgICdwYXRocyc6
IHsKLSAgICAgICAgICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6
IDcsCi0gICAgICAgICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1zJzogewotICAgICAg
ICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2InOiBbKCdhL2InLCB7
fSldCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotQHB5dGVzdC5tYXJrLnNr
aXBpZihvcy5zZXAgIT0gIlxcIiwgcmVhc29uPSJiYWNrc2xhc2ggcGF0aCIpCi1kZWYgdGVzdF9t
YW5pZmVzdF90b19qc29uX2JhY2tzbGFzaCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgp
Ci0KLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhXFxiIiwgIjAiKjQwLCBpdGVtLlRlc3Ro
YXJuZXNzVGVzdCkKKyAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhIiArIG9zLnBhdGguc2Vw
ICsgImIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQogCiAgICAgYXNzZXJ0IG0udXBk
YXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBhc3NlcnQgbS50b19qc29uKCkgPT0gewot
ICAgICAgICAncGF0aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgfSwKLSAg
ICAgICAgJ3ZlcnNpb24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICdp
dGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAn
YS9iJzogWygnYS9iJywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0K
LWRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKLSAgICBqc29uX29iaiA9
IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2FcXGInOiAoJzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9
LAotICAgICAgICAndmVyc2lvbic6IDcsCisgICAgICAgICd2ZXJzaW9uJzogOCwKICAgICAgICAg
J3VybF9iYXNlJzogJy8nLAogICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhh
cm5lc3MnOiB7Ci0gICAgICAgICAgICAgICAgJ2FcXGInOiBbWydhL2InLCB7fV1dCi0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7J2EnOiB7J2InOiBbCisgICAgICAg
ICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLAorICAg
ICAgICAgICAgICAgIChOb25lLCB7fSkKKyAgICAgICAgICAgIF19fSwKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgbWFuaWZl
c3QuTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwganNvbl9vYmopCiAKIAogZGVmIHRlc3RfcmVmdGVz
dF9jb21wdXRhdGlvbl9jaGFpbigpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
dGVzdDMiLCAiPT0iKV0pCisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAi
KjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQorICAgIHMy
ID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZl
cmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAogICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAo
czIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogICAg
IHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgYXNzZXJ0IGxpc3QobSkg
PT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0K
LQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9hZGQoKToKLSAg
ICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgpfSldCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHRlc3QxID0gczEubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQg
aGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBub2RlCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygi
cmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9yZW1vdmUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9
PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0u
UmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgdGVzdDEg
PSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVt
cygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0
aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRl
c3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5j
aGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIG5vZGUgdG8gYSB0ZXN0Ci0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0g
WygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mi50b19SZWZUZXN0KCl9KV0KLQotCi1kZWYg
dGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV90ZXN0X3R5cGUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QtcmVmIiwg
Ij09IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpXSkgaXMgVHJ1ZQotCi0g
ICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdCht
KSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pXQotCi0g
ICAgIyB0ZXN0IGJlY29tZXMgYSB0ZXN0aGFybmVzcyB0ZXN0IChoYXNoIGNoYW5nZSBiZWNhdXNl
IHRoYXQgaXMgZGV0ZXJtaW5lZAotICAgICMgYmFzZWQgb24gdGhlIGZpbGUgY29udGVudHMpLiBU
aGUgdXBkYXRlZCBtYW5pZmVzdCBzaG91bGQgbm90IGluY2x1ZGVzIHRoZQotICAgICMgb2xkIHJl
ZnRlc3QuCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QiLCAiMSIqNDAsIGl0ZW0u
VGVzdGhhcm5lc3NUZXN0KQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRy
dWUKLQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZSgpOgot
ICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3Qy
IiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCi0KLSAgICBh
c3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0
ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0
X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0
MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICAjdGVzdDIgY2hhbmdl
cyB0byBzdXBwb3J0IHR5cGUKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAi
MSIqNDAsIGl0ZW0uU3VwcG9ydEZpbGUpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1
ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0gICAgdGVzdDMgPSBzMi5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwg
e3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInN1cHBvcnQi
LCB0ZXN0My5wYXRoLCB7dGVzdDN9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9u
X2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZV9wYXJ0aWFsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1h
bmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIg
PSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCBy
ZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMx
LCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3Rf
aXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0g
ICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19S
ZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0
Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIs
ICIxIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0p
Ci0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpLCAoczIsIFRydWUp
XSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBh
dGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0
ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQgbGlzdChtKSA9PSBb
KCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICgicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAKIGRlZiB0ZXN0X2l0ZXJwYXRo
KCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHNvdXJjZXMgPSBbU291cmNl
RmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNl
cz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICBzb3VyY2VzID0gW1NvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNlcz1bKCIvdGVzdDEt
cmVmIiwgIj09IildKSwKICAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdHMoInRlc3Qy
IiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5odG1sIiwge30pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAgICAgICAgICAgICAg
IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0
KV0KQEAgLTMwMiwyNCArMTg5LDYgQEAgZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBhc3NlcnQg
c2V0KG0uaXRlcnBhdGgoIm1pc3NpbmciKSkgPT0gc2V0KCkKIAogCi1kZWYgdGVzdF9yZWZ0ZXN0
X25vZGVfYnlfdXJsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLQotICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkKLQotICAg
IHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rlc19ieV91cmwgPT0g
eyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLSAgICBtLl9yZWZ0ZXN0X25vZGVzX2J5X3Vy
bCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6
IHRlc3QxLnRvX1JlZlRlc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0MiI6IHRlc3QyfQotCi0KIGRlZiB0ZXN0X25vX3VwZGF0ZSgpOgogICAgIG0gPSBt
YW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTM1NCw5ICsyMjMsNyBAQCBkZWYgdGVzdF9ub191cGRh
dGVfZGVsZXRlKCk6CiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAot
ICAgIHMxXzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVtLk1hbnVh
bFRlc3QpCi0KLSAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNlKV0pCisgICAgbS51
cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpXSkKIAogICAgIGFzc2VydCBsaXN0KG0pID09IFso
InRlc3RoYXJuZXNzIiwgdGVzdDEucGF0aCwge3Rlc3QxfSldCiAKQEAgLTM5NCw5ICsyNjEsMTAg
QEAgZGVmIHRlc3RfdXBkYXRlX2Zyb21fanNvbl9tb2RpZmllZCgpOgogICAgIG0udXBkYXRlKFso
czIsIFRydWUpXSkKICAgICBqc29uX3N0ciA9IG0udG9fanNvbigpCiAgICAgYXNzZXJ0IGpzb25f
c3RyID09IHsKLSAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsndGVzdDEnOiBbKCd0
ZXN0MScsIHsidGltZW91dCI6ICJsb25nIn0pXX19LAotICAgICAgICAncGF0aHMnOiB7J3Rlc3Qx
JzogKCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MnKX0sCisgICAgICAgICdpdGVtcyc6IHsn
dGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzogWworICAgICAgICAgICAgIjEiKjQwLAorICAgICAgICAg
ICAgKE5vbmUsIHsndGltZW91dCc6ICdsb25nJ30pCisgICAgICAgIF19fSwKICAgICAgICAgJ3Vy
bF9iYXNlJzogJy8nLAotICAgICAgICAndmVyc2lvbic6IDcKKyAgICAgICAgJ3ZlcnNpb24nOiA4
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc291cmNlZmlsZS5weQppbmRleCAwYTdhMWNhMGI0MWE5YzFiOTVmY2VhMzA5NTRjZWZm
NGJjYzc0YWQ4Li44YjBmYjk0NGVhNTY3NGE3ZDIxYjhkZGFhYzg5MDg1NjRkNDQ0MWJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291
cmNlZmlsZS5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8KIGZyb20g
Li4ubGludC5saW50IGltcG9ydCBjaGVja19nbG9iYWxfbWV0YWRhdGEKIGZyb20gLi5zb3VyY2Vm
aWxlIGltcG9ydCBTb3VyY2VGaWxlLCByZWFkX3NjcmlwdF9tZXRhZGF0YSwganNfbWV0YV9yZSwg
cHl0aG9uX21ldGFfcmUKIAorCiBkZWYgY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50cz1iIiIpOgog
ICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcykKICAgICByZXR1cm4gU291cmNl
RmlsZSgiLyIsIGZpbGVuYW1lLCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpAQCAtMzYsNiArMzcs
NyBAQCBkZWYgaXRlbXMocyk6CiAgICAgImZvby9yZXNvdXJjZXMvdGVzdC5odG1sIiwKICAgICAi
Zm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKICAgICAiZm9vL2Zvby1tYW51YWwuaHRtbC5oZWFkZXJz
IiwKKyAgICAiY3Jhc2h0ZXN0cy9mb28uaHRtbC5pbmkiLAogICAgICJjc3MvY29tbW9uL3Rlc3Qu
aHRtbCIsCiAgICAgImNzcy9DU1MyL2FyY2hpdmUvdGVzdC5odG1sIiwKIF0pCkBAIC0xMDYsOCAr
MTA4LDggQEAgZGVmIHRlc3RfbmFtZV9pc192aXN1YWwocmVsX3BhdGgpOgogICAgICJjc3MyMS9m
bG9hdHMvZmxvYXRzLXBsYWNlbWVudC12ZXJ0aWNhbC0wMDQtcmVmMi54aHQiLAogICAgICJjc3My
MS9ib3gvcnRsLWxpbmVicmVhay1ub3RyZWYxLnhodCIsCiAgICAgImNzczIxL2JveC9ydGwtbGlu
ZWJyZWFrLW5vdHJlZjIueGh0IiwKLSAgICAiMmRjb250ZXh0L2RyYXdpbmctaW1hZ2VzLXRvLXRo
ZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYuaHRtbCIsCi0gICAgIjJkY29udGV4
dC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAorICAgICJodG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYu
aHRtbCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvbGluZS1zdHlsZXMvbGluZXRvX3JlZi5o
dG1sIiwKICAgICAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3RoZS1maWVs
ZHNldC1lbGVtZW50LTAvcmVmLmh0bWwiCiBdKQogZGVmIHRlc3RfbmFtZV9pc19yZWZlcmVuY2Uo
cmVsX3BhdGgpOgpAQCAtMTIwLDYgKzEyMiwxNCBAQCBkZWYgdGVzdF9uYW1lX2lzX3JlZmVyZW5j
ZShyZWxfcGF0aCk6CiAgICAgYXNzZXJ0IGl0ZW1zKHMpID09IFtdCiAKIAorZGVmIHRlc3RfbmFt
ZV9pc190ZW50YXRpdmUoKToKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVpL2FwcGVhcmFuY2Ut
cmV2ZXJ0LTAwMS50ZW50YXRpdmUuaHRtbCIpCisgICAgYXNzZXJ0IHMubmFtZV9pc190ZW50YXRp
dmUKKworICAgIHMgPSBjcmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1yZXZlcnQtMDAxLmh0
bWwiKQorICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisKIGRlZiB0ZXN0X3dv
cmtlcigpOgogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC53b3JrZXIuanMiKQogICAgIGFzc2Vy
dCBub3Qgcy5uYW1lX2lzX25vbl90ZXN0CkBAIC0xNDMsNiArMTUzLDggQEAgZGVmIHRlc3Rfd29y
a2VyKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgog
ICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVv
dXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKKwogCiBkZWYgdGVz
dF93aW5kb3coKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93LmpzIikKQEAgLTE2
Nyw2ICsxNzksNyBAQCBkZWYgdGVzdF93aW5kb3coKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHpp
cChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwK
ICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVt
LnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3dvcmtlcl9sb25nX3RpbWVvdXQoKToKQEAgLTE3
NSw3ICsxODgsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykK
IHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5
dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhi
InRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIs
ICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2VyLmpzIiwgY29udGVu
dHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193b3JrZXIKQEAgLTE5Miw3ICsyMDUs
NyBAQCBkZWYgdGVzdF93aW5kb3dfbG9uZ190aW1lb3V0KCk6CiB0ZXN0KCkiIiIKIAogICAgIG1l
dGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRlbnRzKSwganNf
bWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0IiwgYiJsb25nIild
CisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIpXQogCiAgICAgcyA9
IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAgIGFz
c2VydCBzLm5hbWVfaXNfd2luZG93CkBAIC0yMzIsNiArMjQ1LDcgQEAgdGVzdCgpIiIiCiAgICAg
Zm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3Nl
cnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQor
ICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVzdF93aW5kb3dfd2l0
aF92YXJpYW50cygpOgpAQCAtMjYyLDYgKzI3Niw3IEBAIHRlc3QoKSIiIgogICAgIGZvciBpdGVt
LCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0u
dXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAg
YXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfcHl0aG9uX2xvbmdfdGltZW91
dCgpOgpAQCAtMjcxLDcgKzI4Niw3IEBAIGRlZiB0ZXN0X3B5dGhvbl9sb25nX3RpbWVvdXQoKToK
IAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRl
bnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21l
dGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQor
ICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBj
cmVhdGUoIndlYmRyaXZlci90ZXN0LnB5IiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0
IHMubmFtZV9pc193ZWJkcml2ZXIKQEAgLTMwNiw2ICszMjEsNyBAQCBkZWYgdGVzdF9tdWx0aV9n
bG9iYWwoKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6
CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF9sb25nX3RpbWVvdXQoKToKQEAgLTMxNCw3ICszMzAsNyBAQCBpbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykKIHRlc3QoKSIiIgogCiAgICAg
bWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBq
c19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmci
KV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25nIildCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNz
ZXJ0IHMubmFtZV9pc19tdWx0aV9nbG9iYWwKQEAgLTMyNywyNSArMzQzLDEwIEBAIHRlc3QoKSIi
IgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0ZWQiLCBbCi0gICAg
KGIiIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiImRlZmF1bHQiLCB7
ImRlZGljYXRlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZmF1bHQiLCB7fSksCi0g
ICAgKGIiIWRlZmF1bHQsd2luZG93IiwgeyJ3aW5kb3cifSksCi0gICAgKGIid2luZG93LCFkZWZh
dWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LGRlZGljYXRlZHdvcmtlciIsIHsiZGVkaWNhdGVk
d29ya2VyIn0pLAotICAgIChiImRlZGljYXRlZHdvcmtlciwhZGVmYXVsdCIsIHt9KSwKLSAgICAo
YiIhZGVmYXVsdCx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwg
InNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZmF1bHQiLCB7InNlcnZpY2V3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIiFkZWRpY2F0ZWR3b3JrZXIiLCB7IndpbmRv
dyJ9KSwKLSAgICAoYiIhd29ya2VyIiwgeyJ3aW5kb3cifSksCi0gICAgKGIiIXdpbmRvdyIsIHsi
ZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiIiF3aW5kb3csd29ya2VyIiwgeyJkZWRpY2F0ZWR3
b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAgKGIid29ya2Vy
LCFkZWRpY2F0ZWR3b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndp
bmRvdyJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyLHdvcmtlciIsIHsiZGVkaWNhdGVkd29y
a2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAo
YiJ3b3JrZXIsIXNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3Jr
ZXIiLCAid2luZG93In0pLAotICAgIChiIiFzaGFyZWR3b3JrZXIsd29ya2VyIiwgeyJkZWRpY2F0
ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93In0pLAot
ICAgIChiInNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7ImRlZGlj
YXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSks
CisgICAgKGIid2luZG93IiwgeyJ3aW5kb3cifSksCisgICAgKGIic2hhcmVkd29ya2VyIiwgeyJz
aGFyZWR3b3JrZXIifSksCisgICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7InNl
cnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAorICAgIChiIndvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAogXSkKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2N1c3RvbV9nbG9iYWxzKGlucHV0LCBleHBlY3RlZCk6CiAg
ICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPSVzCkBAIC0zODAsMTAgKzM4MSwxMSBA
QCB0ZXN0KCkiIiIgJSBpbnB1dAogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAg
ICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgaXMgRmFsc2UKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2pzc2hlbGxfZ2xvYmFscygpOgotICAgIGNvbnRlbnRzID0g
YiIiIi8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisgICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogdGVzdCgpIiIiCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCkBAIC00MTAs
NiArNDEyLDcgQEAgdGVzdCgpIiIiCiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAg
ICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCA9PSBqc3NoZWxsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF92YXJpYW50cygpOgpAQCAtNDQ4LDE3ICs0NTEsMTgg
QEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3Vy
bHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwotICAgIChiIiIiLy9N
RVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyBNRVRB
OiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyAgTUVUQTog
Zm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIiLy9NRVRBOiBmb289
YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxu
IiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vICBNRVRBOiBmb289YmFyXG4iIiIs
IFsoImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiXG4vLyBNRVRBOiBmb289YmFyXG4iIiIsIFtd
KSwKICAgICAoYiIiIiAvLyBNRVRBOiBmb289YmFyXG4iIiIsIFtdKSwKLSAgICAoYiIiIi8vIE1F
VEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28iLCBiImJhciIpLCAo
YiJiYXoiLCBiInF1dXgiKV0pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRB
OiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8gTUVUQTog
Zm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFso
YiJmb28iLCBiImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBNRVRBOiBi
YXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIiksICgiYmF6IiwgInF1dXgiKV0pLAorICAgIChi
IiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAi
YmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIFN0YXJ0IG9mIHRoZSB0ZXN0
XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKICAgICAoYiIiIi8v
IE1FVEE6XG4iIiIsIFtdKSwKICAgICAoYiIiIi8vIE1FVEE6IGZvb2JhclxuIiIiLCBbXSksCiBd
KQpAQCAtNjU3LDcgKzY2MSwzNiBAQCBkZWYgdGVzdF9yZWxhdGl2ZV90ZXN0ZHJpdmVyKGV4dCk6
CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0bSIsICJodG1sIl0pCi1k
ZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0KToKK2RlZiB0ZXN0X3F1aWNfaHRtbChleHQpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC4iICsgZXh0CisKKyAgICBjb250ZW50ID0gYic8bWV0YSBu
YW1lPSJxdWljIiBjb250ZW50PSJ0cnVlIj4nCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29u
dGVudCkKKyAgICBhc3NlcnQgcy5xdWljCisKKyAgICBjb250ZW50ID0gYic8bWV0YSBuYW1lPSJx
dWljIiBjb250ZW50PSJmYWxzZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQp
CisgICAgYXNzZXJ0IHMucXVpYyBpcyBOb25lCisKKworZGVmIHRlc3RfcXVpY19qcygpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC5hbnkuanMiCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRB
OiBxdWljPXRydWUiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVudCkKKyAgICBfLCBp
dGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAg
ICBhc3NlcnQgaXRlbS5xdWljCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRBOiBxdWljPWZhbHNl
IgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgXywgaXRlbXMgPSBzLm1h
bmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgYXNzZXJ0IGl0
ZW0ucXVpYyBpcyBOb25lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0
bSIsICJodG1sIl0pCitkZWYgdGVzdF9yZWZ0ZXN0KGV4dCk6CiAgICAgY29udGVudCA9IGIiPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+IgogCiAgICAgZmlsZW5hbWUgPSAiZm9vL3Rlc3Qu
IiArIGV4dApAQCAtNjczLDcgKzcwNiw3IEBAIGRlZiB0ZXN0X3JlZnRlc3Rfbm9kZShleHQpOgog
CiAgICAgYXNzZXJ0IHMuY29udGVudF9pc19yZWZfbm9kZQogCi0gICAgYXNzZXJ0IGl0ZW1zKHMp
ID09IFsoInJlZnRlc3Rfbm9kZSIsICIvIiArIGZpbGVuYW1lKV0KKyAgICBhc3NlcnQgaXRlbXMo
cykgPT0gWygicmVmdGVzdCIsICIvIiArIGZpbGVuYW1lKV0KIAogCiBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImV4dCIsIFsieGh0IiwgImh0bWwiLCAieGh0bWwiLCAiaHRtIiwgInhtbCIsICJz
dmciXSkKQEAgLTgzMSw0ICs4NjQsNCBAQCBkZWYgdGVzdF9yZWZ0ZXN0X2Z1enp5X211bHRpKGZ1
enp5LCBleHBlY3RlZCk6CiAKIGRlZiB0ZXN0X2hhc2goKToKICAgICBzID0gU291cmNlRmlsZSgi
LyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIpCi0gICAgYXNzZXJ0IGIi
YjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0gcy5oYXNoCisgICAg
YXNzZXJ0ICJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMwMjUzNjdiNzIxNjg0IiA9PSBzLmhh
c2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYTA0MWU1NGMzZTI0MGUyNmRiODNjMThhMWY1ODllMDVjZGM4NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0wLDAgKzEsMzQyIEBACitmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBNdXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcywgaXRlcml0
ZW1zCisKKworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1
ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
ZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworICAgICMgYXZvaWQgYWN0dWFs
bHkgaW1wb3J0aW5nIHRoZXNlLCB0aGV5J3JlIG9ubHkgdXNlZCBieSB0eXBlIGNvbW1lbnRzCisg
ICAgZnJvbSAuIGltcG9ydCBpdGVtCisgICAgZnJvbSAuIGltcG9ydCBtYW5pZmVzdAorCisKK2lm
IE1ZUFk6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVHVwbGVbVGV4dCwgLi4u
XSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXV0KKyAgICBQYXRoSGFzaFR5cGUgPSBNdXRhYmxlTWFw
cGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQorZWxzZToKKyAgICBUeXBlRGF0YVR5cGUgPSBN
dXRhYmxlTWFwcGluZworICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBwaW5nCisKKworY2xh
c3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbSwgdHlw
ZV9jbHMpOgorICAgICAgICAjIHR5cGU6IChtYW5pZmVzdC5NYW5pZmVzdCwgVHlwZVtpdGVtLk1h
bmlmZXN0SXRlbV0pIC0+IE5vbmUKKyAgICAgICAgIiIiRGljdC1saWtlIG9iamVjdCBjb250YWlu
aW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVzdCB0eXBlLgorCisgICAgICAgIExvYWRpbmcg
YW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vzc2FyaWx5CisgICAg
ICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAor
ICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSBy
YXcganNvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5
IGNyZWF0ZSBhbiBJdGVtCisgICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNz
ZWQuIEluIG9yZGVyIHRvIHJlbWFpbgorICAgICAgICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1
bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFuIEl0ZW0KKyAgICAgICAgZnJvbSBpdGVyYXRp
b24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGluZworICAgICAgICBv
dmVyIHRoZSBjbGFzcy4iIiIKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBtCisgICAgICAgIHNl
bGYuX3R5cGVfY2xzID0gdHlwZV9jbHMgICMgdHlwZTogVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0K
KyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCisg
ICAgICAgIHNlbGYuX2RhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KKyAgICAgICAg
c2VsZi5faGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQor
ICAgICAgICBzZWxmLmhhc2hlcyA9IFBhdGhIYXNoKHNlbGYpCisKKyAgICBkZWYgX2RlbGV0ZV9u
b2RlKHNlbGYsIGRhdGEsIGtleSk6CisgICAgICAgICMgdHlwZTogKERpY3RbVGV4dCwgQW55XSwg
VHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICAiIiJkZWxldGUgYSBwYXRoIGZyb20g
YSBEaWN0IGRhdGEgd2l0aCBhIGdpdmVuIGtleSIiIgorICAgICAgICBwYXRoID0gW10KKyAgICAg
ICAgbm9kZSA9IGRhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5WzotMV06CisgICAgICAg
ICAgICBwYXRoLmFwcGVuZCgobm9kZSwgcGF0aHNlZykpCisgICAgICAgICAgICBub2RlID0gbm9k
ZVtwYXRoc2VnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGRlbCBub2RlW2tl
eVstMV1dCisgICAgICAgIHdoaWxlIHBhdGg6CisgICAgICAgICAgICBub2RlLCBwYXRoc2VnID0g
cGF0aC5wb3AoKQorICAgICAgICAgICAgaWYgbGVuKG5vZGVbcGF0aHNlZ10pID09IDA6CisgICAg
ICAgICAgICAgICAgZGVsIG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAg
ICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IFVuaW9uW0RpY3RbVGV4dCwgQW55XSwg
U2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSwgTGlzdFtBbnldXQorICAgICAgICBmb3IgcGF0aHNlZyBp
biBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGRpY3QpIGFuZCBwYXRoc2Vn
IGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgc2V0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkp
CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pzb25fZGF0YQorICAgICAgICBmb3VuZCA9IEZhbHNl
CisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90
IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKG5vZGUsIGxpc3QpOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5
KQorCisgICAgICAgIHNlbGYuX2hhc2hlc1trZXldID0gbm9kZVswXQorCisgICAgICAgIGRhdGEg
PSBzZXQoKQorICAgICAgICBwYXRoID0gIi8iLmpvaW4oa2V5KQorICAgICAgICBmb3IgdGVzdCBp
biBub2RlWzE6XToKKyAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLl90eXBlX2Nscy5m
cm9tX2pzb24oc2VsZi5fbWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAgICAgICBkYXRhLmFk
ZChtYW5pZmVzdF9pdGVtKQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleVs6
LTFdOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVmYXVsdChwYXRoc2VnLCB7fSkKKyAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGFzc2VydCBr
ZXlbLTFdIG5vdCBpbiBub2RlCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSBkYXRhCisKKyAgICAg
ICAgc2VsZi5fZGVsZXRlX25vZGUoc2VsZi5fanNvbl9kYXRhLCBrZXkpCisKKyAgICAgICAgcmV0
dXJuIGRhdGEKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSkgLT4g
Tm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9q
c29uX2RhdGEsIGtleSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBpLCBwYXRoc2VnIGlu
IGVudW1lcmF0ZShrZXlbOi0xXSk6CisgICAgICAgICAgICBub2RlID0gbm9kZS5zZXRkZWZhdWx0
KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVyIGlzIGEgY2hpbGQgb2YgYSB0ZXN0
ICglcikiICUgKGtleSwga2V5WzppKzFdKSkKKyAgICAgICAgbm9kZVtrZXlbLTFdXSA9IHZhbHVl
CisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoVHVw
bGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9k
ZWxldGVfbm9kZShzZWxmLl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9oYXNo
ZXNba2V5XQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVy
YXRvcltUdXBsZVtUZXh0LCAuLi5dXQorICAgICAgICAiIiJJdGVyYXRvciBvdmVyIGtleXMgaW4g
dGhlIFR5cGVEYXRhIGluIGNvZGVwb2ludCBvcmRlciIiIgorICAgICAgICBkYXRhX25vZGUgPSBz
ZWxmLl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55XV0KKyAgICAgICAganNv
bl9ub2RlID0gc2VsZi5fanNvbl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55
XV0KKyAgICAgICAgcGF0aCA9IHR1cGxlKCkgICMgdHlwZTogVHVwbGVbVGV4dCwgLi4uXQorICAg
ICAgICBzdGFjayA9IFsoZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhdGgpXQorICAgICAgICB3aGls
ZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFfbm9kZSwganNvbl9ub2RlLCBwYXRoID0gc3RhY2su
cG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YV9ub2RlLCBzZXQpIG9yIGlzaW5z
dGFuY2UoanNvbl9ub2RlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGF0YV9ub2Rl
IGlzIE5vbmUgb3IganNvbl9ub2RlIGlzIE5vbmUKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRo
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhX25vZGUgaXMg
Tm9uZSBvciBpc2luc3RhbmNlKGRhdGFfbm9kZSwgZGljdCkKKyAgICAgICAgICAgICAgICBhc3Nl
cnQganNvbl9ub2RlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShqc29uX25vZGUsIGRpY3QpCisKKyAg
ICAgICAgICAgICAgICBrZXlzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgICAg
ICAgICAgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlz
IHw9IHNldChpdGVyKGRhdGFfbm9kZSkpCisgICAgICAgICAgICAgICAgaWYganNvbl9ub2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlzIHw9IHNldChpdGVyKGpzb25fbm9k
ZSkpCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChrZXlzLCByZXZlcnNlPVRy
dWUpOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoKGRhdGFfbm9kZS5nZXQoa2V5
KSBpZiBkYXRhX25vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzb25fbm9kZS5nZXQoa2V5KSBpZiBqc29uX25vZGUgaXMgbm90IE5v
bmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggKyAo
a2V5LCkpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
aW50CisgICAgICAgIGNvdW50ID0gMAorCisgICAgICAgIHN0YWNrID0gW3NlbGYuX2RhdGFdCisg
ICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQoaXRlcnZhbHVl
cyh2KSkKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9qc29uX2RhdGFdCisgICAgICAgIHdoaWxl
IHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHYsIGxpc3QpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2YWx1ZXModikpCisKKyAg
ICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9kYXRhKSBvciBi
b29sKHNlbGYuX2pzb25fZGF0YSkKKworICAgIF9fYm9vbF9fID0gX19ub256ZXJvX18KKworICAg
IGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoQW55KSAtPiBi
b29sCisgICAgICAgICMgd2UgcHJvdmlkZSBvdXIgb3duIGltcGwgb2YgdGhpcyB0byBhdm9pZCBj
YWxsaW5nIF9fZ2V0aXRlbV9fIGFuZCBnZW5lcmF0aW5nIGl0ZW1zIGZvcgorICAgICAgICAjIHRo
b3NlIGluIHNlbGYuX2pzb25fZGF0YQorICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRoc2VnIGluIG5vZGU6Cisg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBi
b29sKGlzaW5zdGFuY2Uobm9kZSwgc2V0KSkKKworICAgICAgICBub2RlID0gc2VsZi5fanNvbl9k
YXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIHBhdGhzZWcg
aW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBsaXN0KSkKKworICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25l
CisgICAgICAgICMgbXVjaCwgbXVjaCBzaW1wbGVyL3F1aWNrZXIgdGhhbiB0aGF0IGRlZmluZWQg
aW4gTXV0YWJsZU1hcHBpbmcKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhLmNsZWFyKCkKKyAgICAg
ICAgc2VsZi5fZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuX2hhc2hlcy5jbGVhcigpCisKKyAg
ICBkZWYgc2V0X2pzb24oc2VsZiwganNvbl9kYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtU
ZXh0LCBBbnldKSAtPiBOb25lCisgICAgICAgICIiIlByb3ZpZGUgdGhlIG9iamVjdCB3aXRoIGEg
cmF3IEpTT04gYmxvYgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBncmFwaCBpcyBh
c3N1bWVkIHRvIGJlIG93bmVkIGJ5IHRoZSBUeXBlRGF0YQorICAgICAgICBvYmplY3QgYWZ0ZXIg
dGhlIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZQor
ICAgICAgICBncmFwaC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2pzb25fZGF0YToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldF9qc29uIGNhbGwgd2hlbiBKU09OIGRh
dGEgaXMgbm90IGVtcHR5IikKKworICAgICAgICBzZWxmLl9qc29uX2RhdGEgPSBqc29uX2RhdGEK
KworICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4
dCwgQW55XQorICAgICAgICAiIiJDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGEgdG8gSlNPTgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgb2JqZWN0IG1heSBjb250YWluIHJlZmVyZW5j
ZXMgdG8gdGhlIGludGVybmFsCisgICAgICAgIGRhdGEgc3RydWN0dXJlcywgYW5kIGlzIG9ubHkg
Z3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgbmV4dAorICAgICAgICBfX2dldGl0ZW1f
XywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QK
KyAgICAgICAgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZSByZXR1cm5lZCBvYmplY3QgZ3JhcGguCisK
KyAgICAgICAgIiIiCisgICAgICAgIGpzb25fcnYgPSBzZWxmLl9qc29uX2RhdGEuY29weSgpCisK
KyAgICAgICAgZGVmIHNhZmVfc29ydGVyKGVsZW1lbnQpOgorICAgICAgICAgICAgIyB0eXBlOiAo
VHVwbGVbc3RyLHN0cl0pIC0+IFR1cGxlW3N0cixzdHJdCisgICAgICAgICAgICAiIiIga2V5IGZ1
bmN0aW9uIHRvIHNvcnQgbGlzdHMgd2l0aCBOb25lIHZhbHVlcy4KKworICAgICAgICAgICAgUHl0
aG9uMyBpcyBtb3JlIHN0cmljdCB0eXBld2lzZS4gQ29tcGFyaW5nIE5vbmUgYW5kIHN0ciBmb3Ig
ZXhhbXBsZSBpcyB2YWxpZAorICAgICAgICAgICAgaW4gcHl0aG9uMiBidXQgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBpbiBweXRob24zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpZiBlbGVt
ZW50IGFuZCBub3QgZWxlbWVudFswXToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCIiLCBlbGVt
ZW50WzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dAorCisgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBqc29uX3J2LCB0dXBsZSgpKV0gICMg
dHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERpY3RbVGV4dCwgQW55XSwgVHVwbGVb
VGV4dCwgLi4uXV1dCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgZGF0YV9ub2Rl
LCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBmb3Ig
aywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAgICAgICAgICAgICBmdWxsX2tleSA9
IHBhcl9mdWxsX2tleSArIChrLCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHNl
dCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBrIG5vdCBpbiBqc29uX25vZGUKKyAgICAg
ICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0gW3NlbGYuX2hhc2hlcy5nZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmdWxsX2tleSldICsgW3QgZm9yIHQgaW4gc29ydGVkKCh0ZXN0LnRv
X2pzb24oKSBmb3IgdGVzdCBpbiB2KSwga2V5PXNhZmVfc29ydGVyKV0KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10gPSBqc29uX25vZGUuZ2V0
KGssIHt9KS5jb3B5KCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKCh2LCBqc29u
X25vZGVba10sIGZ1bGxfa2V5KSkKKworICAgICAgICByZXR1cm4ganNvbl9ydgorCisKK2NsYXNz
IFBhdGhIYXNoKFBhdGhIYXNoVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgor
ICAgICAgICAjIHR5cGU6IChUeXBlRGF0YSkgLT4gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0g
ZGF0YQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgICAgICAjIHR5cGU6IChU
dXBsZVtUZXh0LCAuLi5dKSAtPiBUZXh0CisgICAgICAgIGlmIGsgbm90IGluIHNlbGYuX2RhdGE6
CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAgICAgIGlmIGsgaW4gc2VsZi5fZGF0
YS5faGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEuX2hhc2hlc1trXQorCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcg
aW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG5vZGVbMF0gICMgdHlwZTog
aWdub3JlCisKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAidW5yZWFjaGFibGUiCisgICAgICAgIHJh
aXNlIEtleUVycm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgdik6CisgICAgICAg
ICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFRleHQpIC0+IE5vbmUKKyAgICAgICAgaWYgayBu
b3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCisKKyAgICAgICAg
aWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhLl9oYXNo
ZXNba10gPSB2CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pzb25fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2RlOgorICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub2RlWzBdID0g
diAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2Rh
dGEuX2hhc2hlc1trXSA9IHYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJrZXlzIGhlcmUgbXVzdCBtYXRjaCB1bmRlcmx5aW5nIGRhdGEiKQorCisgICAgZGVm
IF9faXRlcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1Rl
eHQsIC4uLl1dCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGxl
bihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRl
eCBiZmJhYWY4OTcxMjZkOGVlY2E2OWRjZWY5NGJiMzEzMDg4OTdmZGUyLi4yOTY1MzNhNmJhYmYx
NzZlNDUxNGJjZjNmMjllMTYzZmRmOWE5ZmRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3VwZGF0ZS5weQpAQCAtMjYsNyArMjYsOCBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAj
IHR5cGU6IHN0cgogICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW3N0cl0KICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5cGU6IGJvb2wKICAg
ICAgICAgICAgY2FjaGVfcm9vdD1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCi0gICAgICAg
ICAgIHJlYnVpbGQ9RmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICAgICByZWJ1aWxkPUZhbHNl
LCAgIyB0eXBlOiBib29sCisgICAgICAgICAgIHBhcmFsbGVsPVRydWUgICMgdHlwZTogYm9vbAog
ICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbAogICAgIGxvZ2dlci53YXJu
aW5nKCJEZXByZWNhdGVkOyB1c2UgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlIGluc3RlYWQiKQpA
QCAtMzQsNyArMzUsNyBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IHN0cgogCiAg
ICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0
aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVi
dWlsZCkKLSAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgcmV0dXJuIG1hbmlm
ZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKIAogCiBkZWYgdXBkYXRlX2Zyb21fY2xpKCoqa3dh
cmdzKToKQEAgLTUxLDcgKzUyLDggQEAgZGVmIHVwZGF0ZV9mcm9tX2NsaSgqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sidXJsX2Jhc2UiXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1aWxkIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsPWt3YXJnc1sicGFyYWxsZWwiXSkKIAogCiBkZWYg
YWJzX3BhdGgocGF0aCk6CkBAIC03OCw2ICs4MCw5IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi0tY2FjaGUtcm9vdCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PW9zLnBhdGguam9pbih3cHRfcm9vdCwgIi53cHRjYWNoZSIpLAogICAg
ICAgICBoZWxwPSJQYXRoIGluIHdoaWNoIHRvIHN0b3JlIGFueSBjYWNoZXMgKGRlZmF1bHQgPHRl
c3RzX3Jvb3Q+Ly53cHRjYWNoZS8pIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLS1uby1wYXJhbGxlbCIsIGRlc3Q9InBhcmFsbGVsIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0iRG8gbm90IHBhcmFsbGVsaXplIGJ1aWxkaW5n
IHRoZSBtYW5pZmVzdCIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRp
bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IDJlZWQ3OWY0Mjc5ZDBlYzc4YzY5M2Y2MzJiOTZlMzZj
ZTNjOTZmYTkuLmFlZmMyYzk0ZjQwZTFhZTI5ZDM2NTdmZTQxMTRmNzlmOTc1NjhiYTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtNTUsMTYgKzU1LDE2IEBAIGRl
ZiB0b19vc19wYXRoKHBhdGgpOgogCiAKIGRlZiBnaXQocGF0aCk6Ci0gICAgIyB0eXBlOiAoYnl0
ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwgYnl0ZXNdXQorICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIFRleHRdXQogICAgIGRlZiBnaXRmdW5jKGNtZCwg
KmFyZ3MpOgotICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBieXRlcworICAgICAg
ICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBUZXh0CiAgICAgICAgIGZ1bGxfY21kID0gWyJn
aXQiLCBjbWRdICsgbGlzdChhcmdzKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJv
Y2Vzcy5TVERPVVQpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
ZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgndXRm
OCcpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIHBsYXRm
b3JtLnVuYW1lKClbMF0gPT0gIldpbmRvd3MiIGFuZCBpc2luc3RhbmNlKGUsIFdpbmRvd3NFcnJv
cik6CiAgICAgICAgICAgICAgICAgZnVsbF9jbWRbMF0gPSAiZ2l0LmJhdCIKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nl
c3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RE
T1VUKS5kZWNvZGUoJ3V0ZjgnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBy
YWlzZQogCkBAIC0xMDMsNCArMTAzLDUgQEAgY2xhc3MgY2FjaGVkX3Byb3BlcnR5KEdlbmVyaWNb
VF0pOgogICAgICAgICAjIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgYXNzaWduIGFzIG5leHQgdGlt
ZSB0aGlzIHdvbid0IGJlIGNhbGxlZAogICAgICAgICBhc3NlcnQgc2VsZi5uYW1lIG5vdCBpbiBv
YmouX19kaWN0X18KICAgICAgICAgcnYgPSBvYmouX19kaWN0X19bc2VsZi5uYW1lXSA9IHNlbGYu
ZnVuYyhvYmopCisgICAgICAgIG9iai5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfX2NhY2hlZF9wcm9w
ZXJ0aWVzX18iLCBzZXQoKSkuYWRkKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Zjcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CmluZGV4IGQ0ZjQ3ZjZiZjBhYjM1YzlkYTUxNGVk
YjRjNGI3Nzk2NDRmZjkwZGQuLjdjMGZlZWI4MTY0Nzk5NzUyNzViMWExYzRkODRmMTIxNWZhYzE0
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CkBAIC0zMyw3ICszMyw3IEBA
IGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVf
cm9vdCwKICAgICAjIHR5cGU6IChieXRlcywgTWFuaWZlc3QsIE9wdGlvbmFsW2J5dGVzXSwgT3B0
aW9uYWxbYnl0ZXNdLCBib29sLCBib29sKSAtPiBGaWxlU3lzdGVtCiAgICAgdHJlZSA9IE5vbmUK
ICAgICBpZiBjYWNoZV9yb290IGlzIE5vbmU6Ci0gICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRo
LmpvaW4odGVzdHNfcm9vdCwgYiIud3B0Y2FjaGUiKQorICAgICAgICBjYWNoZV9yb290ID0gb3Mu
cGF0aC5qb2luKHRlc3RzX3Jvb3QsICIud3B0Y2FjaGUiKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhjYWNoZV9yb290KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWFrZWRpcnMo
Y2FjaGVfcm9vdCkKQEAgLTU4LDIxICs1OCwyMSBAQCBjbGFzcyBHaXRIYXNoZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkKIAogICAgIGRlZiBfbG9jYWxfY2hhbmdlcyhz
ZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAgICAgICMgdHlwZTog
KCkgLT4gU2V0W1RleHRdCiAgICAgICAgICIiImdldCBhIHNldCBvZiBmaWxlcyB3aGljaCBoYXZl
IGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHkiIiIKICAgICAgICAgYXNzZXJ0
IHNlbGYuZ2l0IGlzIG5vdCBOb25lCiAgICAgICAgICMgbm90ZSB0aGF0IGdpdCBydW5zIHRoZSBj
b21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGljaCBtYXkKICAgICAgICAgIyBu
b3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4gYSBicm93c2VyIHJl
cG8pCi0gICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0tcmVsYXRpdmUiLCBiIi0tbm8t
cmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFEIl0KKyAgICAgICAgY21kID0g
WyJkaWZmLWluZGV4IiwgIi0tcmVsYXRpdmUiLCAiLS1uby1yZW5hbWVzIiwgIi0tbmFtZS1vbmx5
IiwgIi16IiwgIkhFQUQiXQogICAgICAgICBkYXRhID0gc2VsZi5naXQoKmNtZCkKLSAgICAgICAg
cmV0dXJuIHNldChkYXRhLnNwbGl0KGIiXDAiKSkKKyAgICAgICAgcmV0dXJuIHNldChkYXRhLnNw
bGl0KCJcMCIpKQogCiAgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6Ci0gICAgICAgICMgdHlwZTog
KCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAgICAgICAgICIiIgogICAgICAgICBBIGRpY3Qg
b2YgcmVsX3BhdGggLT4gY3VycmVudCBnaXQgb2JqZWN0IGlkIGlmIHRoZSB3b3JraW5nIHRyZWUg
bWF0Y2hlcyBIRUFEIGVsc2UgTm9uZQogICAgICAgICAiIiIKLSAgICAgICAgaGFzaF9jYWNoZSA9
IHt9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAgICAgICAgaGFzaF9j
YWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAKICAgICAgICAg
aWYgc2VsZi5naXQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBoYXNoX2NhY2hlCkBAIC04
MSw5ICs4MSw5IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAgICAjIG5vdCBiZSB0
aGUgcm9vdCBvZiB0aGUgZ2l0IHJlcG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dzZXIgcmVwbykKICAg
ICAgICAgY21kID0gWyJscy10cmVlIiwgIi1yIiwgIi16IiwgIkhFQUQiXQogICAgICAgICBsb2Nh
bF9jaGFuZ2VzID0gc2VsZi5fbG9jYWxfY2hhbmdlcygpCi0gICAgICAgIGZvciByZXN1bHQgaW4g
c2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6IGJ5dGVzCi0gICAgICAg
ICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIsIDEpCi0gICAgICAgICAg
ICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdl
cyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxm
LmdpdCgqY21kKS5zcGxpdCgiXDAiKVs6LTFdOiAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICBk
YXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoIlx0IiwgMSkKKyAgICAgICAgICAgIGhhc2hf
Y2FjaGVbcmVsX3BhdGhdID0gTm9uZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9jaGFuZ2VzIGVsc2Ug
ZGF0YS5zcGxpdCgiICIsIDMpWzJdCiAKICAgICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKIApAQCAt
MTc0LDcgKzE3NCw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogCiAKIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToKLSAgICBmaWxlX25hbWUgPSBi
Im10aW1lLmpzb24iCisgICAgZmlsZV9uYW1lID0gIm10aW1lLmpzb24iCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgbWFuaWZlc3RfcGF0aCwgcmVidWls
ZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKGJ5dGVzLCBieXRlcywgYnl0ZXMsIGJvb2wpIC0+
IE5vbmUKQEAgLTIyMiwxNiArMjIyLDE2IEBAIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToK
IAogCiBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVNYXBwaW5nKTogICMg
dHlwZTogaWdub3JlCi0gICAgZmlsZV9uYW1lID0gYiJnaXRpZ25vcmUuanNvbiIKKyAgICBmaWxl
X25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCiAKICAgICBkZWYgY2hlY2tfdmFsaWQoc2VsZiwgZGF0
YSk6CiAgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBBbnldKSAtPiBEaWN0W0FueSwgQW55XQot
ICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RzX3Jvb3QsIGIiLmdp
dGlnbm9yZSIpCisgICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdHNf
cm9vdCwgIi5naXRpZ25vcmUiKQogICAgICAgICBtdGltZSA9IG9zLnBhdGguZ2V0bXRpbWUoaWdu
b3JlX3BhdGgpCi0gICAgICAgIGlmIGRhdGEuZ2V0KGIiL2dpdGlnbm9yZV9maWxlIikgIT0gW2ln
bm9yZV9wYXRoLCBtdGltZV06CisgICAgICAgIGlmIGRhdGEuZ2V0KCIvZ2l0aWdub3JlX2ZpbGUi
KSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBU
cnVlCiAgICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGRhdGFbYiIvZ2l0aWdub3Jl
X2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgICAgICBkYXRhWyIvZ2l0aWdu
b3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCiAgICAgICAgIHJldHVybiBkYXRhCiAK
ICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CkBAIC0yODYsNyArMjg2LDcgQEAgZGVm
IHdhbGsocm9vdCk6CiAgICAgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAogCiAgICAgcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChyb290KQotICAgIHN0YWNrID0gZGVxdWUoWyhyb290LCBiIiIpXSkK
KyAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgIiIpXSkKIAogICAgIHdoaWxlIHN0YWNrOgogICAg
ICAgICBkaXJfcGF0aCwgcmVsX3BhdGggPSBzdGFjay5wb3BsZWZ0KCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCmluZGV4IGEwMTU0MjY4N2IxYTAxNmRm
YjQ3NTI1ZTBhZTJlZDRhYTJiMjE3ZjguLjM4OGZiYjExZWQ5ZDhkYTAxNDNmODJlZGMwMmQxMGM5
NzliZTM3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMjMsNiArMjMsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3NvdXJjZWZpbGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0
ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYWM4
ZWRkMzdkM2FjMjkwNDEzM2ExMmVlOWU3NTUwZGQ1YTQ4NzIzOC4uYjk0M2I2ZDA4OWE0YjhmODFl
OWI2ZTIzYzc2ODgwZmI5M2NmNjY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCkBAIC0xLDEyICsx
LDEzIEBACiBbbXlweV0KICNjaGVja191bnR5cGVkX2RlZnMgPSBUcnVlCi1kaXNhbGxvd191bnR5
cGVkX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCiBkaXNhbGxvd19p
bmNvbXBsZXRlX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19zdWJjbGFzc2luZ19hbnkgPSBUcnVlCiBk
aXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQogZGlzYWxsb3dfdW50eXBlZF9kZWNvcmF0b3Jz
ID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQogbm9faW1wbGljaXRfb3B0aW9u
YWwgPSBUcnVlCitzdHJpY3RfZXF1YWxpdHkgPSBUcnVlCiB3YXJuX3JlZHVuZGFudF9jYXN0cyA9
IFRydWUKIHdhcm5fcmV0dXJuX2FueSA9IFRydWUKIHdhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmluZGV4IDk5MzI0YjJhYWQxNGQ5MjFm
NDY5ZjUyOTM0ZjdmZjkzNzRhMWQ5ZWUuLmRkNmNlYjZmZWE0Yjk3M2MwMTI0ZGY0MzgyZjlmMWEz
YTlkNWEwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCkBAIC0yMiw2ICsy
Miw3IEBAIGlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIsRTMwMyxF
MzA1LEU0MDIsRTczMSxXNTA0LFc2MDEsVzYwNSxXCiBleGNsdWRlID0KICAgICAudG94LAogICAg
IHB5d2Vic29ja2V0LAorICAgIHF1aWMsCiAgICAgdGhpcmRfcGFydHksCiAgICAgd3B0c2VydmUv
ZG9jcy9jb25mLnB5LAogICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZh
bGlkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNjMWRj
NmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4
LmluaQpAQCAtMCwwICsxLDI3IEBACitbZmxha2U4XQorc2VsZWN0ID0gRSxXLEYsTgorIyBFMTI4
OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAorIyBF
MTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dp
Y2FsIGxpbmUKKyMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9w
ZXJhdG9yCisjIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZ
LCBvciDigJg64oCZCisjIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8g
cGFyYW1ldGVyIGVxdWFscworIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRo
IOKAmCMg4oCYCisjIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKKyMgRTMw
MzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCisjIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGlu
ZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCisjIEU0MDI6IG1vZHVsZSBsZXZlbCBp
bXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCisjIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEg
ZXhwcmVzc2lvbiwgdXNlIGEgZGVmCisjIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9w
ZXJhdG9yCisjIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisjIE44MDE6IGNsYXNzIG5h
bWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgorIyBOODAyOiBmdW5jdGlvbiBuYW1l
IHNob3VsZCBiZSBsb3dlcmNhc2UKKyMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxk
IGJlIGxvd2VyY2FzZQoraWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMw
MixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgorZXhjbHVkZSA9
CisgICAgLnRveCwKKyAgICBweXdlYnNvY2tldCwKKyAgICB0aGlyZF9wYXJ0eSwKKyAgICB3cHRy
dW5uZXIsCisgICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAorICAgIHdwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CittYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHkzNi1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5YTAyM2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi1bZmxha2U4XQotc2VsZWN0ID0gRSxXLEYsTgotIyBFMTI4OiBjb250
aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAotIyBFMTI5OiB2
aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dpY2FsIGxp
bmUKLSMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9wZXJhdG9y
Ci0jIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZLCBvciDi
gJg64oCZCi0jIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8gcGFyYW1l
dGVyIGVxdWFscwotIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRoIOKAmCMg
4oCYCi0jIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKLSMgRTMwMzogdG9v
IG1hbnkgYmxhbmsgbGluZXMgKDMpCi0jIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMgYWZ0
ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCi0jIEU0MDI6IG1vZHVsZSBsZXZlbCBpbXBvcnQg
bm90IGF0IHRvcCBvZiBmaWxlCi0jIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEgZXhwcmVz
c2lvbiwgdXNlIGEgZGVmCi0jIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9y
Ci0jIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCi0jIE44MDE6IGNsYXNzIG5hbWVzIHNo
b3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlvbiBuYW1lIHNob3Vs
ZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxkIGJlIGxv
d2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMwMixFMzAz
LEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgotZXhjbHVkZSA9Ci0gICAg
LnRveCwKLSAgICBweXdlYnNvY2tldCwKLSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRydW5uZXIs
Ci0gICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAotICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9pbnZhbGlkLnB5Ci1tYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9S
RUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNjRiNzAxY2ZiODU5MDBjMjE5NDYzNjI0
ZTZhZmEyOTlhMzgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzAg
QEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCitbUVVJQ10oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9vbHMuCisKKyMgUXVp
Y1RyYW5zcG9ydAorW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWljX3RyYW5zcG9ydF9z
ZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKK1tRdWljVHJhbnNwb3J0XShodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWljKSBzZXJ2ZXIKK2Zv
ciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fp
b3F1aWMvKSwgYW5kIHRlc3QKK2F1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0b20gaGFuZGxlcnMg
YnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgorW3dwdC93ZWJ0cmFuc3BvcnQvcXVpYy9oYW5k
bGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCisKKyMjIEN1c3RvbSBI
YW5kbGVycworVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rpb25zIGRlZmluZWQg
aW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KKworIC0gaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uIGlz
IGNhbGxlZCBkdXJpbmcgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MuCisgICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRocmVlIGFyZ3VtZW50czoKKyAgIAorICAgLSBjb25uZWN0
aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgLSBvcmlnaW46
IHN0ciBUaGUgb3JpZ2luIG9mIHRoZSBpbml0aWF0b3IuCisgICAtIHF1ZXJ5OiBEaWN0W3N0ciwg
c3RyXSBUaGUgZGljdGlvbmFyeSBvZiBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBVUkwgb2YgdGhl
CisgICAgICAgICAgICBjb25uZWN0aW9uLgorCisgICBBIGhhbmRsZXIgY2FuIGFib3J0IHRoZSBj
bGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzIGVpdGhlciBieSByYWlzaW5nIGFuCisgICBleGNlcHRp
b24gb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbi4KKwkgICAgCisgLSBoYW5kbGVfZXZlbnQgaXMg
Y2FsbGVkIHdoZW4gYSBRdWljRXZlbnQgYXJyaXZlcy4KKyAgIC0gY29ubmVjdGlvbjogYWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gZXZlbnQ6IGFpb3F1aWMucXVp
Yy5ldmVudHMuUXVpY0V2ZW50CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB1bnRp
bCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBmaW5pc2hlcworICAgc3VjY2Vzc2Z1bGx5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0
X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjE2Y2YxM2ZmZmMxYmJhODdkNjEwZTIyY2Y2MGUxMTA0M2Y1MzkxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKQEAgLTAsMCArMSwxMiBAQAorVG8gZ2VuZXJhdGUgY2Vy
dC5rZXkgYW5kIGNlcnQucGVtOgorCisgMS4gUmVtb3ZlIHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBh
bmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluIC4uLy4uL2NlcnRzLgorIDEuIEZyb20gdGhlIHJv
b3QsIHJ1bgorICAgIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29scy9xdWljL2NlcnRzL2NvbmZp
Zy5qc29uYCBhbmQgdGVybWluYXRlIGl0CisgICAgYWZ0ZXIgaXQgaGFzIHN0YXJ0ZWQgdXAuCisg
MS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkgdG8gdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LmtleS4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBl
bSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQucGVtLgorIDEuIFJlY292ZXIgdGhlIG9yaWdpbmFs
IHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluCisgICAg
Li4vLi4vY2VydHMuCisKK1NlZSBhbHNvOiAuLi8uLi9jZXJ0cy9SRUFETUUubWQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5r
ZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTkzY2RmYTU0MzcyOGI2MzY5YjA1ZWVmZTIwODExY2Q2NjYyYjcxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpAQCAtMCwwICsxLDI4IEBACistLS0tLUJF
R0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV3QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktv
d2dnU21BZ0VBQW9JQkFRRGJ5UHVpQkdweGhhdkYKKzNqN3BJNmcrQTBnQzRCVExUcU1PYktTVGtR
V3NqcTFHT2QyTEExbHdUUExPYndydmhJVUZ6YndvSWJPd29QTWUKK01ranNzRkNIRzNGTWo1NmNL
aUFRMkRGSTZkSzVQakdVVk5TUnhrL0Y0SGgyWng5RFRFTmwvRWIvY1JUMnl1dSsKK1c5SEN1L0JX
ZmJXd2x3d041dnh5bmVDb2g1Y0JCL2pkMUtUT1JndVlwdWF0SGI4NUFENUJSaFlMWHdIRjd5VkgK
K05WeEhldUdsSzMxeXVZQ0hOS3ZCSERnWkY1VHA4RnFLWG5WVStQbEtYQ1NVNTYwMmMyVTV4SElG
dktUeWlabE0KK2NZWE5TVXAwbGNOdy9pVFNWdHNQRTRrMXN0dTZxa1dkVDdIL3VVK0dVQithTHFP
K3N2QS9zOUdHWDhIWmd0K3IKK3ZTRkU4bElKQWdNQkFBRUNnZ0VCQUpBOTZEOWRqSW95Z3hoYUVv
bXBtQ29TdHprRDNVSE11eUNsVnFGdVJQNEoKK3FWaDBjNXhmTjF5SGM3YmRrNXk4S1IwMDk2NlM1
NzRjODFHM0NMc2x2OFBiMDlDK1ZRY0Njb2I3aStUaGFDV2cKKzFxTVZ4V2hpY1VwWlZsWEd1ZkxO
NDFIVWJyZ0lmQXk0QWwydEh3NGhqOHNEdDdGTWdHSERYWnpQVm5qa2U4cjEKK085WWlKbDFReDRM
N3ZNV3J1R2E5UVdqRmdIbkcrdWhhS2pzTDJ2N0pRT0d5NXQ4YWJvVnliN2g4ckdnL21DK2UKK0hJ
WU91Y1YxYUVNZ1lWYUFuaEdzS01Ia3g1QTF4V3BYQlNydUcrR1JCeC9rWFdaK2tDTmNrTFh1VmRy
aHE0SEkKK0FkYnhJenFRVFBNWHBPM1JBdWp5cnhrSGFiRU5NUEEvRkdINHN6bWRMb0VDZ1lFQTl6
OHBlNy92U2xXZ2Zoc0YKK3o1UW53V0h5RmpydWhnRC8yc2E0TEIvY213VFFkR3c4RTVUTkhEYkNn
bVM0OTlEWlVYSVp1Qk9UZWtkRVZEUWEKK25nOFZ5TDNvN0Rtcys1aVBpNWNxc2NwMUtrakxFTXlQ
cHFzNEpUdWl4UnBqbU1meWNkeFZUcFhoY3VxbkpwVEwKK1FDOXBSNU4velpjQU1EbEJ2MEZ6YzhU
NzhYa0NnWUVBNDVEdWVXR0hWZjJ1NHVNWXlXeHlaaGFORGFnbDEzeXgKKy9vU1NVVHpvTHZTcEdR
eEtrditmeFNOcUwzbnU1SWE2dUQ0R3U1TnViUDRIci9WZVNLUmZta1QxbHV2RmNWZkMKK2tuOHI4
YnNzWnE4NTVBVkp4WGE1SzFhdVdqQ3VGSGowcFlmNTZzZmhrUHhwWTBSUUVna3Z1RTNpb3NRMTJn
RlgKK3Z3MTQ3RnRRVVJFQ2dZRUE4NVJwVlA0NVMzMWlPUHA4VmcxNndSeXllRTRrc1NZSTZrcitK
SkpiTHVtbVNCeGQKK2Ixa1lYU1JocWo1NnI4STBadlhHK3I5bWVuLzloQXMwOGVTZ3JIelVITzJS
U3VqNCtpZTZLeC92SC9KSkJFclQKK2R2cVZ2TENzNGd2bWRSeis4RWVHVDM1L2RreFEwa1NpbktC
WTB1Z3diNlhFekwyTDFWVXczYXdDSGRrQ2dZRUEKK3F0UUlnT3Y2dVUybmRFREFRYXg4TURDcmtG
M3lrbEhVR0ZrU3NaTkVSTU43RVFlT0Q4MSs5WEZCYkFSZmxnT2gKK3RWOHlsS3IzRVRDZE9yUzZJ
MVBwUkppUnQ4cWp2Qk1DU0JEWlB5eWdCekZ4QnNBRmdncytzODd0TVYwcndNaVAKKzlwY2R2K1p1
YVBWaWM1YzdlRjZYQ1FiR3BDTWd2ZGVXTkNCNzd3b1pQOUVDZ1lFQWxvYmtQR0RZQ3kvUmFWaVUK
K0ZicTVHbzZ3MHBNVm5MellibjRHaDFBSlBlUUtJU3FYdEpaN3RxcGRXK2k3cXprTHc3NEVMYVlD
QlIyWkVscmoKK0VWZTVhUk94NlRGTjlSbmprRm55djlMZXlZTCtZUGM4QUl3VlVDZVNQaWtTR0xG
cEpmYS9qd0RtV2gzdkhtbUEKK05SVVA0MHdidEJpNDJDMnVkclR4VVdzSHhxYz0KKy0tLS0tRU5E
IFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUzNjdjODlmZjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCkBAIC0wLDAgKzEsMjQwIEBACitDZXJ0aWZp
Y2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAzICgweDIpCisgICAgICAgIFNlcmlh
bCBOdW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKKyAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0t
dGVzdHMKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEFwciAyMCAx
MToyMDo1NiAyMDIwIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDE4IDExOjIwOjU2
IDIwMzAgR01UCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CisgICAgICAg
IFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0
aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDgg
Yml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAgICAgICAgIDAwOmRi
OmM4OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgorICAgICAgICAgICAgICAg
ICAgICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5Mzo5MToKKyAgICAg
ICAgICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6NzA6NGM6ZjI6Y2U6
NmY6CisgICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJjOjI4OjIxOmIzOmIw
OmEwOmYzOjFlOjMyOgorICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1MDo4NzoxYjo3MTo0
Yzo4Zjo5ZTo5YzoyYToyMDoxMDpkODoKKyAgICAgICAgICAgICAgICAgICAgMzE6NDg6ZTk6ZDI6
Yjk6M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6CisgICAgICAgICAgICAgICAgICAgIDc4
Ojc2OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgorICAgICAgICAgICAg
ICAgICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5NzowYzowZDplNjoKKyAg
ICAgICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6Zjg6ZGQ6ZDQ6YTQ6
Y2U6NDY6CisgICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFkOmJmOjM5OjAwOjNl
OjQxOjQ2OjE2OjBiOjVmOgorICAgICAgICAgICAgICAgICAgICAwMTpjNTplZjoyNTo0NzozNTo1
Yzo0Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKKyAgICAgICAgICAgICAgICAgICAgODA6ODc6MzQ6
YWI6YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6CisgICAgICAgICAgICAgICAgICAg
IDc1OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0OgorICAgICAgICAg
ICAgICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0OTo0YTo3NDo5NToK
KyAgICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6MTM6ODk6MzU6YjI6
ZGI6YmE6YWE6CisgICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZmOmI5OjRmOjg2OjUw
OjFmOjlhOjJlOmEzOmJlOmIyOgorICAgICAgICAgICAgICAgICAgICBmMDozZjpiMzpkMTo4Njo1
ZjpjMTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKKyAgICAgICAgICAgICAgICAgICAgNTI6MDkK
KyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAg
ICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElk
ZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdDOjQxOjJCOjNCOjlG
OjFCOjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCisgICAgICAgICAgICBYNTA5djMgQXV0aG9y
aXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjow
NzowNTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQworCisgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAgICAgICBYNTA5djMg
RXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRo
ZW50aWNhdGlvbgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTog
CisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTku
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3
dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4t
LWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0CisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAg
ICAgICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1OmQ1OmRjOjk5Ojlm
OjNmOgorICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6NGU6Yzg6ZDQ6YWE6
MzQ6OTU6ZTQ6OWU6CisgICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMTozMTo2NzplNTphNjpk
YTo4NTo2YjowZjpkNzo2NDpiNzoKKyAgICAgICAgIGU3OmViOmZlOjA5OmI2Ojg4OmUxOjc0OjFk
OjBjOjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgorICAgICAgICAgN2M6YmE6ZTY6ZmI6NTI6MWQ6
NTg6Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6CisgICAgICAgICA0MTo3MTo5OTph
MzoxYTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoKKyAgICAgICAgIGE5
OmQ4OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAxOjk5OjdhOgorICAg
ICAgICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6ZWM6NzU6YjI6Nzc6
MTE6CisgICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpmZDphOTowYjphMjpl
ZDoyZDoxYzo2ZToKKyAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEwOmNhOmU4OmU2OmUw
OjdhOmE5OmY0OjI2Ojk0OjZiOgorICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6M2U6ZTA6ZWY6ZDI6
YmU6MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6CisgICAgICAgICAwYzoyNDo4Mzo3MjplMjplNDo2
ZjoyNTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKKyAgICAgICAgIGMzOmQ2OjA2OmFl
OjFkOmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgorICAgICAgICAgMTc6
ODc6MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6NGQ6MDQ6CisgICAg
ICAgICBmZjo2MDpmZTplMworLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlndkRDQ0g2
U2dBd0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCitZ
aTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3MHpNREEwTVRneE1U
SXdOVFphCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUlJQklqQU5C
Z2txaGtpRzl3MEJBUUVGCitBQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1JxY1lXcnhkNCs2U09v
UGdOSUF1QVV5MDZqRG15a2s1RUZySTZ0CitSam5kaXdOWmNFenl6bThLNzRTRkJjMjhLQ0d6c0tE
ekhqSkk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4CitsRlRVa2NaUHhlQjRkbWNmUTB4RFpm
eEcvM0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0CiszZFNremtZTG1LYm1y
UjIvT1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdSZVU2ZkJhCitpbDUx
VlBqNVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGswbGJiRHhPSk5iTGJ1
cXBGCituVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpTQ1FJREFRQUJvNEll
QkRDQ0hnQXdDUVlECitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZOOFFTczdueHNOMXFt
NHQwL21ZVnd3SHdZRFZSMGpCQmd3CitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3
WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCitDQ3NHQVFVRkJ3TUJNSUlkandZRFZSMFJC
SUlkaGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2CitjRGd1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0E1CitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXNXZkQzEz
CitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hW
dmNETXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlWYjNBeExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTVM1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1TVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F6T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4
T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EzTnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TkM1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F6TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E0Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TUM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F5TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlaYjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxtNXZkQzEzCitaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpi
M0ExCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6CitkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
M0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSVpiM0EwTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2CitkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TlRN
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2
CitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpF
dWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0E0CitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNk
ekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205
d01qRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2CitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitH
bTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xtNXZkQzEzWldJdGNH
eGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TmpVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxj
M1NDR205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2CitkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDCitHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNUxtNXZkQzEz
WldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TnprdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCitMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNETTVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNK
dExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTRMbTV2
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDCitHbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZeUxt
NXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitPQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNE
STJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
TTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDCitHbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0ExTkM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitOeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4w
Z2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlM
WEJzCitZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEUXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3T1RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0ExCitOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
CitaWE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOQzV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNERXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F4TXk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRsCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5CitO
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwCitaWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhO
UzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNERTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mk15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpndWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFi
M0EyTmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsCitZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0EzCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTROeTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaHQzZDNjeUxuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2Qz
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5kM2R5NTNkM2N5CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNN
aTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCitNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1Citk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2Qz
Y3VkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsCitjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0CitMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0kzZDNk
ekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0CitiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNk
bVV0CitObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCitlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzCitkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0
CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTE0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNXaDJNamhoTG5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNX
aDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0Cith
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2Rt
VXRObXhoCitaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akYzZDNjdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxCitObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2Rq
STRZUzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5CitkM2QzTVM1NGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1ND
TW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5CitiUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2
ZEMxM1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MlpTMDJiR0ZrCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCithM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG5odUxTMXNkbVV0
Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0CitObXhoWkM1
NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
CitjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyCitNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCitLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBdUxWV3Ew
WmFncU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCitOSlhrbmt2a2RPVEU3QkV4WitX
bTJvVnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpOCithS05Wakp0WHU0
a3lFRUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRmZUhRR1plazl5CitS
Mm1jbUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1RUYxRENtWkFRUXl1
am00SHFwCis5Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1RzhscU83RkVvbloz
WStDRk1QV0JxNGR1M3M4CisvSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5Nk5DNkJtOU5CUDln
L3VNPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5q
c29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTZkMDUyOWZiOTQ0OWM0YmZiMGM5
MzU0NmE3OTYyYTVhYmQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24KQEAg
LTAsMCArMSwxNyBAQAoreworICAgICJwb3J0cyI6IHsKKyAgICAgICAgImh0dHAiOiBbXSwKKyAg
ICAgICAgImh0dHBzIjogWyJhdXRvIl0sCisgICAgICAgICJ3cyI6IFtdLAorICAgICAgICAid3Nz
IjogW10KKyAgICB9LAorICAgICJjaGVja19zdWJkb21haW5zIjogZmFsc2UsCisgICAgInNzbCI6
IHsKKyAgICAgICAgInR5cGUiOiAib3BlbnNzbCIsCisgICAgICAgICJvcGVuc3NsIjogeworICAg
ICAgICAgICAgImR1cmF0aW9uIjogMzY1MCwKKyAgICAgICAgICAgICJmb3JjZV9yZWdlbmVyYXRl
IjogZmFsc2UsCisgICAgICAgICAgICAiYmFzZV9wYXRoIjogInRvb2xzL2NlcnRzIgorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZmM1YTE5ZjNjYjlkNjQzM2FlNDM0MzUxM2U4NDQ1ZGU4
NDg4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwy
MCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9jZXJ0cy9jb25maWcuanNvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDQzMjJlZWQzYmFmNDY3YzZkODA5ZmMyNmFjOTU4NTk4OTQyMzExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAic2Vy
dmVxdWljIjogeworICAgICJwYXRoIjogInNlcnZlLnB5IiwKKyAgICAic2NyaXB0IjogInJ1biIs
CisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAicHkzb25seSI6IHRydWUsCisgICAg
ImhlbHAiOiAiU3RhcnQgdGhlIFFVSUMgc2VydmVyIiwKKyAgICAidmlydHVhbGVudiI6IHRydWUs
CisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICJyZXF1aXJlbWVudHMudHh0IgorICAgIF0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9y
dF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNGFkMTdmMTk1YzZlNWQyMzNlODRhOWIyMzkwNGNj
Y2ZlY2NkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKQEAgLTAs
MCArMSwyNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IGFzeW5jaW8KK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdXJsbGliLnBhcnNlCitmcm9tIHR5cGluZyBpbXBv
cnQgRGljdCwgT3B0aW9uYWwKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGlt
cG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBpbXBv
cnQgRU5EX1NUQVRFUworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRh
UmVjZWl2ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tl
dAorCitTRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5zcG9ydCcKKworaGFuZGxlcnNfcGF0aCA9
IE5vbmUKKworCitjbGFzcyBFdmVudEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0OiBEaWN0KToKKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLmdsb2JhbF9k
aWN0ID0gZ2xvYmFsX2RpY3QKKworICAgIGRlZiBoYW5kbGVfY2xpZW50X2luZGljYXRpb24oCisg
ICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgb3JpZ2luOiBzdHIsCisgICAgICAgICAgICBx
dWVyeTogRGljdFtzdHIsIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSAnaGFuZGxlX2Ns
aWVudF9pbmRpY2F0aW9uJworICAgICAgICBpZiBuYW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6Cisg
ICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25hbWVdKHNlbGYuY29ubmVjdGlvbiwgb3JpZ2lu
LCBxdWVyeSkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkg
LT4gTm9uZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfZXZlbnQnCisgICAgICAgIGlmIG5hbWUg
aW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3RbbmFtZV0o
c2VsZi5jb25uZWN0aW9uLCBldmVudCkKKworCitjbGFzcyBRdWljVHJhbnNwb3J0UHJvdG9jb2wo
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCisgICAgICAgIHNlbGYuc3RyZWFtcyA9IGRpY3QoKQorICAgICAgICBzZWxmLnBlbmRpbmdf
ZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZGF0YSA9IGInJworICAgICAgICBz
ZWxmLmhhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBwcmVmaXggPSAnISEnCisgICAgICAg
IGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ1FVSUMgZXZlbnQ6ICVzJyAlIHR5cGUoZXZlbnQp
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuY2xpZW50X2luZGljYXRp
b25fZmluaXNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZXZlbnQsIFN0
cmVhbURhdGFSZWNlaXZlZCkgYW5kCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cmVhbV9p
ZCA9PSAyKToKKyAgICAgICAgICAgICAgICAjIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSAnQ2xpZW50IGluZGljYXRpb24gZXJyb3I6ICcKKyAgICAg
ICAgICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgKz0gZXZlbnQuZGF0YQorICAg
ICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEpID4gNjU1MzU6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndG9vIGxhcmdlIGRhdGEgZm9y
IGNsaWVudCBpbmRpY2F0aW9uJykKKyAgICAgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFt
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfY2xpZW50X2luZGljYXRpb24oKQor
ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0g
J0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIHNl
bGYucGVuZGluZ19ldmVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIu
aGFuZGxlX2V2ZW50KGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMu
Y2xlYXIoKQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5p
c2hlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAgICAgICAgICAgIHNl
bGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZlbnQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKyAgICAgICAgICAgIGxvZ2dp
bmcubG9nKGxvZ2dpbmcuV0FSTiwgcHJlZml4ICsgc3RyKGUpKQorICAgICAgICAgICAgc2VsZi5j
bG9zZSgpCisKKyAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2VsZiwgYnMpOgorICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAga2V5X2IgPSBicy5yZWFkKDIpCisgICAgICAg
ICAgICBpZiBsZW4oa2V5X2IpID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICBsZW5ndGhfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxlbihrZXlfYikgIT0g
MjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBnZXQgIktleSIg
ZmllbGQnKQorICAgICAgICAgICAgaWYgbGVuKGxlbmd0aF9iKSAhPSAyOgorICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiTGVuZ3RoIiBmaWVsZCcpCisgICAg
ICAgICAgICBrZXkgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGtleV9iKVswXQorICAgICAgICAgICAg
bGVuZ3RoID0gc3RydWN0LnVucGFjaygnIUgnLCBsZW5ndGhfYilbMF0KKyAgICAgICAgICAgIHZh
bHVlID0gYnMucmVhZChsZW5ndGgpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpICE9IGxlbmd0
aDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RydW5jYXRlZCAiVmFsdWUiIGZp
ZWxkJykKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQorCisgICAgZGVmIHByb2Nlc3Nf
Y2xpZW50X2luZGljYXRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgb3JpZ2luID0gTm9uZQor
ICAgICAgICBvcmlnaW5fc3RyaW5nID0gTm9uZQorICAgICAgICBwYXRoID0gTm9uZQorICAgICAg
ICBwYXRoX3N0cmluZyA9IE5vbmUKKyAgICAgICAgS0VZX09SSUdJTiA9IDAKKyAgICAgICAgS0VZ
X1BBVEggPSAxCisgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5wYXJzZV9jbGllbnRf
aW5kaWNhdGlvbigKKyAgICAgICAgICAgICAgICBpby5CeXRlc0lPKHNlbGYuY2xpZW50X2luZGlj
YXRpb25fZGF0YSkpOgorICAgICAgICAgICAgaWYga2V5ID09IEtFWV9PUklHSU46CisgICAgICAg
ICAgICAgICAgb3JpZ2luX3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKG9yaWdpbl9zdHJpbmcpCisgICAgICAgICAg
ICBlbGlmIGtleSA9PSBLRVlfUEFUSDoKKyAgICAgICAgICAgICAgICBwYXRoX3N0cmluZyA9IHZh
bHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51cmxwYXJz
ZShwYXRoX3N0cmluZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBt
dXN0IGlnbm9yZSB1bnJlY29nbml6ZWQgZmllbGRzLgorICAgICAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLAorICAgICAgICAgICAgICAgICAgICAnb3Jp
Z2luID0gJXMsIHBhdGggPSAlcycgJSAob3JpZ2luX3N0cmluZywgcGF0aF9zdHJpbmcpKQorICAg
ICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8g
b3JpZ2luIGlzIGdpdmVuJykKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdObyBwYXRoIGlzIGdpdmVuJykKKyAgICAgICAgaWYgb3JpZ2luLnNj
aGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1lICE9ICdodHRwJzoKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9yaWdpbl9zdHJpbmcpCisg
ICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5nKQorCisgICAgICAgICMgVG8g
bWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2NlcHQgb25seSBzaW1wbGUgcGF0aCBzdHJp
bmdzLgorICAgICAgICBtID0gcmUuY29tcGlsZSgnXi8oW2EtekEtWjAtOVwuX1wtXSspJCcpLm1h
dGNoKHBhdGgucGF0aCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICVzJyAlIHBhdGhfc3RyaW5nKQorCisgICAgICAgIGhh
bmRsZXJfbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgcXVlcnkgPSBkaWN0KHVybGxpYi5wYXJz
ZS5wYXJzZV9xc2wocGF0aC5xdWVyeSkpCisgICAgICAgIHNlbGYuaGFuZGxlciA9IHNlbGYuY3Jl
YXRlX2V2ZW50X2hhbmRsZXIoaGFuZGxlcl9uYW1lKQorICAgICAgICBzZWxmLmhhbmRsZXIuaGFu
ZGxlX2NsaWVudF9pbmRpY2F0aW9uKG9yaWdpbl9zdHJpbmcsIHF1ZXJ5KQorICAgICAgICBpZiBz
ZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IFRydWUKKyAgICAgICAgbG9nZ2luZy5s
b2cobG9nZ2luZy5JTkZPLCAnQ2xpZW50IGluZGljYXRpb24gZmluaXNoZWQnKQorCisgICAgZGVm
IGNyZWF0ZV9ldmVudF9oYW5kbGVyKHNlbGYsIGhhbmRsZXJfbmFtZTogc3RyKSAtPiBOb25lOgor
ICAgICAgICBnbG9iYWxfZGljdCA9IHt9CisgICAgICAgIHdpdGggb3BlbihoYW5kbGVyc19wYXRo
ICsgJy8nICsgaGFuZGxlcl9uYW1lKSBhcyBmOgorICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwg
Z2xvYmFsX2RpY3QpCisgICAgICAgIHJldHVybiBFdmVudEhhbmRsZXIoc2VsZiwgZ2xvYmFsX2Rp
Y3QpCisKKyAgICBkZWYgaXNfY2xvc2luZ19vcl9jbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgaWYgc2VsZi5fcXVpYy5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGlmIHNlbGYuX3F1aWMuX3N0YXRlIGluIEVORF9TVEFURVM6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBTZXNzaW9uVGlj
a2V0U3RvcmU6CisgICAgJycnCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lv
biB0aWNrZXRzLgorICAgICcnJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisg
ICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxm
LCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1
cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9u
PSdRVUlDIHNlcnZlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy1jJywK
KyAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVx
dWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20g
dGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0taG9zdCcsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBkZWZhdWx0PSc6Oics
CisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgKGRlZmF1bHRz
IHRvIDo6KScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXBv
cnQnLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMzLAorICAgICAgICBo
ZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0byA0NDMzKScsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctaycsCisgICAgICAgICct
LXByaXZhdGUta2V5JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUs
CisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZp
ZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWhh
bmRsZXJzLXBhdGgnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNUcmFuc3BvcnQgZXZlbnQg
aGFuZGxlcnMnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLXYn
LAorICAgICAgICAnLS12ZXJib3NlJywKKyAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCisgICAgKQorICAgIGFyZ3Mg
PSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAg
ICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMn
LAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dp
bmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24o
CisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsnd3EtdnZ2LTAxJ10gKyBbJ3NpZHVjayddLAorICAg
ICAgICBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1
NTM2LAorICAgICkKKworICAgIGhhbmRsZXJzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5leHBhbmR1c2VyKGFyZ3MuaGFuZGxlcnNfcGF0aCkpCisgICAgbG9nZ2luZy5sb2cobG9nZ2lu
Zy5JTkZPLCAncG9ydCA9ICVzJyAlIGFyZ3MucG9ydCkKKyAgICBsb2dnaW5nLmxvZyhsb2dnaW5n
LklORk8sICdoYW5kbGVycyBwYXRoID0gJXMnICUgaGFuZGxlcnNfcGF0aCkKKworICAgICMgbG9h
ZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQorICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2No
YWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3MucHJpdmF0ZV9rZXkpCisKKyAgICB0aWNrZXRfc3Rv
cmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50
X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBzZXJ2ZSgKKyAg
ICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAgICAgIGFyZ3MucG9ydCwKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1RdWljVHJhbnNwb3J0UHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICkKKyAgICApCisgICAgdHJ5OgorICAgICAgICBs
b29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAg
IHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY1MjYwYzc4ZjdhYzg1NzliZDkxMWJjZjljY2U2MzY0NWM4MGU0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEgQEAKK2Fpb3F1aWM9PTAuOC43CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5M2YyNWUyN2JkYjNhZmQ0
YmYzOTkyMWU5NmFiZGNjNDIzM2Y5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpAQCAtMCww
ICsxLDI4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IHN5cworCisKK2RlZiBnZXRfcGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJ0dXJuIG9uIHZlcmJvc2UgbG9nZ2luZyIpCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2Rl
ZiBydW4odmVudiwgKiprd2FyZ3MpOgorICAgICMgVE9ETyhIZXhjbGVzKTogUmVwbGFjZSB0aGlz
IHdpdGggYWN0dWFsIGltcGxlbWVudGF0aW9uLgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAg
IGFzc2VydCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBpbXBvcnQgYWlvcXVpYwor
ICAgIHByaW50KCdhaW9xdWljOiAnICsgYWlvcXVpYy5fX3ZlcnNpb25fXykKKworCitkZWYgbWFp
bigpOgorICAgIGt3YXJncyA9IHZhcnMoZ2V0X3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkKKyAgICBy
ZXR1cm4gcnVuKE5vbmUsICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzdkNTQ1OWUxNTFmMmU0MjkzOWRlOTk1N2I1MTUzM2FiYTZhMGRmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1F
Lm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRfc2VydmVyLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3Jl
cXVpcmVtZW50cy50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19mbGFrZTgudHh0CmluZGV4IDBhNDUyMjQwMTY0MTdjZGRiZjU5MjA5MTk2MzgwY2NlMGEw
ODllZGYuLmFlMTZiZTM5NTVmYmYzZDVmYTk2NDg5NjdjNmM4ZDM5NzUxOTAxM2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVx
dWlyZW1lbnRzX2ZsYWtlOC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dApAQCAtMSw0ICsxLDQg
QEAKLWZsYWtlOD09My43LjkKLXB5Y29kZXN0eWxlPT0yLjUuMAotcHlmbGFrZXM9PTIuMS4xCi1w
ZXA4LW5hbWluZz09MC45LjEKK2ZsYWtlOD09My44LjIKK3B5Y29kZXN0eWxlPT0yLjYuMAorcHlm
bGFrZXM9PTIuMi4wCitwZXA4LW5hbWluZz09MC4xMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDE5NGY0Mjg0YjI2OTAzYjFmYWY5NjliNmFiNWQz
MGY1YzQ4ZWI1NjIuLjk4OGZmZTg0ODE3NGY3MjE1Mjc4YzJjNDAxOWY5MjRiZWQzYTYxZjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX215cHkudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC0xLDMgKzEs
MyBAQAotbXlweT09MC43NTAKK215cHk9PTAuNzcwCiBteXB5LWV4dGVuc2lvbnM9PTAuNC4zCi10
eXBlZC1hc3Q9PTEuNC4wCit0eXBlZC1hc3Q9PTEuNC4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5l
ci9yZXBvcnQucHkKaW5kZXggNWViOGQ2N2M3ZjZkYTljNWZkMDFkZThkZTQwZjVjYzkyYzExYmU5
MC4uZTk5ODZmZGIzOTgyNWNkNWU0OWY4ZDRhMTU4Yzc5NDhhZDUyODFlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
cmVwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQpAQCAtNSwxMCArNSwxMSBAQCBmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBp
bXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKKwogZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQogZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLQotaW1wb3J0IHR5cGVzCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCiAKIAogZGVmIGh0bWxfZXNjYXBlKGl0ZW0sIGVzY2FwZV9xdW90ZT1G
YWxzZSk6CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIE5vZGUob2JqZWN0KToKICAgICAgICAgICAg
IGF0dHJzX3VuaWNvZGUgPSAiICIgKyAiICIuam9pbigiJXM9XCIlc1wiIiAlIChodG1sX2VzY2Fw
ZShrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWxfZXNjYXBlKHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZV9xdW90ZT1U
cnVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmF0
dHJzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dHJzX3VuaWNvZGUgPSAiIgogICAg
ICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2VsZi5uYW1lLApAQCAtMTU3LDcgKzE1
OCw3IEBAIGRlZiB0ZXN0X2lkKGlkKToKIAogZGVmIGFsbF90ZXN0cyhkYXRhKToKICAgICB0ZXN0
cyA9IGRlZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRl
bXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEpOgogICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAgIGlkID0gdGVzdF9p
ZChyZXN1bHRbInRlc3QiXSkKICAgICAgICAgICAgIHRlc3RzW2lkXSB8PSB7c3VidGVzdFsibmFt
ZSJdIGZvciBzdWJ0ZXN0IGluIHJlc3VsdFsic3VidGVzdHMiXX0KQEAgLTE4NSw3ICsxODYsNyBA
QCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKIAogICAgIHJlc3VsdHNfYnlfdGVzdCA9IGRlZmF1
bHRkaWN0KHJlc3VsdCkKIAotICAgIGZvciBVQSwgcmVzdWx0cyBpbiBkYXRhLml0ZXJpdGVtcygp
OgorICAgIGZvciBVQSwgcmVzdWx0cyBpbiBpdGVyaXRlbXMoZGF0YSk6CiAgICAgICAgIGZvciB0
ZXN0X2RhdGEgaW4gcmVzdWx0c1sicmVzdWx0cyJdOgogICAgICAgICAgICAgaWQgPSB0ZXN0X2lk
KHRlc3RfZGF0YVsidGVzdCJdKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0c19ieV90ZXN0
W2lkXQpAQCAtMjMwLDEwICsyMzEsMTAgQEAgZGVmIHRlc3RfbGluayh0ZXN0X2lkLCBzdWJ0ZXN0
PU5vbmUpOgogZGVmIHN1bW1hcnkoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgogICAgICIiIlJlbmRl
ciB0aGUgaW1wbGVtZW50YXRpb24gcmVwb3J0IHN1bW1hcnkiIiIKICAgICBub3RfcGFzc2luZyA9
IFtdCi0gICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gcmVzdWx0c19ieV90ZXN0Lml0ZXJpdGVtcygp
OgorICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRzX2J5X3Rlc3QpOgog
ICAgICAgICBpZiBub3QgYW55KGl0ZW1bMF0gaW4gKCJQQVNTIiwgIk9LIikgZm9yIGl0ZW0gaW4g
cmVzdWx0c1siaGFybmVzcyJdLnZhbHVlcygpKToKICAgICAgICAgICAgIG5vdF9wYXNzaW5nLmFw
cGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RfcmVz
dWx0cyBpbiByZXN1bHRzWyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3Vi
dGVzdF9uYW1lLCBzdWJ0ZXN0X3Jlc3VsdHMgaW4gaXRlcml0ZW1zKHJlc3VsdHNbInN1YnRlc3Rz
Il0pOgogICAgICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdID09ICJQQVNTIiBmb3IgaXRlbSBp
biBzdWJ0ZXN0X3Jlc3VsdHMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAgIG5vdF9wYXNzaW5n
LmFwcGVuZCgodGVzdCwgc3VidGVzdF9uYW1lKSkKICAgICBpZiBub3RfcGFzc2luZzoKQEAgLTI2
MCw3ICsyNjEsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1bHQpOgogICAgICAg
ICBjbGFzc189InRlc3QiCiAgICAgKQogCi0gICAgZm9yIG5hbWUsIHN1YnRlc3RfcmVzdWx0IGlu
IHNvcnRlZChyZXN1bHRbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCkpOgorICAgIGZvciBuYW1lLCBz
dWJ0ZXN0X3Jlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdFsic3VidGVzdHMiXSkpOgog
ICAgICAgICB5aWVsZCBoLnRyKAogICAgICAgICAgICAgaC50ZChuYW1lKSwKICAgICAgICAgICAg
IFtzdGF0dXNfY2VsbChzdGF0dXMsIG1lc3NhZ2UpCkBAIC0yNzEsNyArMjcyLDcgQEAgZGVmIHJl
c3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKIAogZGVmIHJlc3VsdF9ib2RpZXMoVUFzLCBy
ZXN1bHRzX2J5X3Rlc3QpOgogICAgIHJldHVybiBbaC50Ym9keShyZXN1bHRfcm93cyhVQXMsIHRl
c3QsIHJlc3VsdCkpCi0gICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHNvcnRlZChyZXN1
bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCkpXQorICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBp
biBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCkpXQogCiAKIGRlZiBnZW5lcmF0ZV9o
dG1sKFVBcywgcmVzdWx0c19ieV90ZXN0KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5l
ci5qcwppbmRleCBkYWFmOWQ0NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1MmQwMDM1Li4yNzk0
NmUxMzliOWFhM2I4MDZhMWFkMjQ1MTUzOTg4Y2Y3OGY3NDQyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvcnVubmVyLmpzCkBAIC0xNiwyMiArMTYsNiBAQCBNYW5pZmVzdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZ2VuZXJhdGUobG9hZGVkX2NhbGxiYWNrKTsKICAgICB9LAogCi0g
ICAgZG9fbG9hZDogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7Ci0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCEo
eGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCAiICsgdGhpcy5wYXRoICsgIiBmYWlsZWQgdG8g
bG9hZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJz
ZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGxvYWRlZF9jYWxsYmFjaygpOwotICAg
ICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCB0aGlzLnBhdGgpOwot
ICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9LAotCiAgICAgZ2VuZXJhdGU6IGZ1bmN0aW9u
KGxvYWRlZF9jYWxsYmFjaykgewogICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKQEAgLTQx
LDcgKzI1LDggQEAgTWFuaWZlc3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCEoeGhy
LnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7CiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCBnZW5lcmF0aW9uIGZhaWxlZCIpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhpcy5kb19sb2FkKGxvYWRlZF9jYWxsYmFjayk7CisgICAgICAg
ICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAg
ICAgbG9hZGVkX2NhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgeGhy
Lm9wZW4oIlBPU1QiLCAidXBkYXRlX21hbmlmZXN0LnB5Iik7CiAgICAgICAgIHhoci5zZW5kKG51
bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5
CmluZGV4IDcxNGQyYjUzYjM5YTk4OWQ0ZjMzY2UxZDU4N2Q2MzRkMjBhNjFkNDQuLjFhMjRlMTQz
NDc4ZWFjYzBmNjI0MzBiNWJiY2IyMzNjYzY1MDI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5p
ZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKQEAgLTcsMjEgKzcsMzAgQEAgbG9jYWxw
YXRocyA9IGltcC5sb2FkX3NvdXJjZSgibG9jYWxwYXRocyIsIG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4oaGVyZSwgb3MKIAogcm9vdCA9IGxvY2FscGF0aHMucmVwb19yb290CiAKLWZyb20g
bWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK2Zyb20gbWFuaWZlc3QgaW1wb3J0IG1h
bmlmZXN0CiAKIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHJvb3QsICJNQU5JRkVTVC5qc29uIikKIAotICAgIG1hbmlmZXN0X2ZpbGUgPSBOb25l
Ci0gICAgdHJ5OgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZChyb290LCBw
YXRoKQotICAgIGV4Y2VwdCBtYW5pZmVzdC5NYW5pZmVzdFZlcnNpb25NaXNtYXRjaDoKLSAgICAg
ICAgcGFzcwotICAgIGlmIG1hbmlmZXN0X2ZpbGUgaXMgTm9uZToKLSAgICAgICAgbWFuaWZlc3Rf
ZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCIvIikKLQotICAgIHVwZGF0ZS51cGRhdGUocm9vdCwg
bWFuaWZlc3RfZmlsZSkKLQotICAgIG1hbmlmZXN0LndyaXRlKG1hbmlmZXN0X2ZpbGUsIHBhdGgp
Ci0KLSAgICByZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKV0sIGpz
b24uZHVtcHMoeyJ1cmwiOiAiL01BTklGRVNULmpzb24ifSkKKyAgICAjIFRPRE8gbWFrZSB0aGlz
IGRvd25sb2FkIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHdoZW4gcG9zc2li
bGUKKyAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHJvb3QsIHBh
dGgsICIvIiwgcGFyYWxsZWw9RmFsc2UpCisKKyAgICBzdXBwb3J0ZWRfdHlwZXMgPSBbInRlc3Ro
YXJuZXNzIiwgInJlZnRlc3QiLCAibWFudWFsIl0KKyAgICBkYXRhID0geyJpdGVtcyI6IHt9LAor
ICAgICAgICAgICAgInVybF9iYXNlIjogIi8ifQorICAgIGZvciBpdGVtX3R5cGUgaW4gc3VwcG9y
dGVkX3R5cGVzOgorICAgICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0gPSB7fQorICAgIGZv
ciBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2ZpbGUuaXRlcnR5cGVzKCpzdXBw
b3J0ZWRfdHlwZXMpOgorICAgICAgICB0ZXN0c19kYXRhID0gW10KKyAgICAgICAgZm9yIGl0ZW0g
aW4gdGVzdHM6CisgICAgICAgICAgICB0ZXN0X2RhdGEgPSBbaXRlbS51cmxbMTpdXQorICAgICAg
ICAgICAgaWYgaXRlbV90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAgICAgICB0ZXN0X2Rh
dGEuYXBwZW5kKGl0ZW0ucmVmZXJlbmNlcykKKyAgICAgICAgICAgIHRlc3RfZGF0YS5hcHBlbmQo
e30pCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgIT0gIm1hbnVhbCI6CisgICAgICAgICAgICAg
ICAgdGVzdF9kYXRhWy0xXVsidGltZW91dCJdID0gaXRlbS50aW1lb3V0CisgICAgICAgICAgICB0
ZXN0c19kYXRhLmFwcGVuZCh0ZXN0X2RhdGEpCisgICAgICAgIGFzc2VydCBwYXRoIG5vdCBpbiBk
YXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0KKyAgICAgICAgZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVd
W3BhdGhdID0gdGVzdHNfZGF0YQorCisgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qc29uIildLCBqc29uLmR1bXBzKGRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9z
ZXJ2ZS5weQppbmRleCAxODY4YjFhMzZlNTFjMTg3NDkxZDczYWEyNzA4NDg0ZGE4ODIwNDJmLi40
M2ZmN2JkMGRmYmFjNWVhZTc0Y2JlNDMyMzVmMDE2YzRmZTE0ZDM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2VydmUvc2VydmUucHkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHN0YW5kYWxvbmUgYXMgcHl3ZWJzb2NrZXQKIAogCiBFRElUX0hPU1RTX0hFTFAgPSAo
IlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1YmRvbWFpbnMgIgotICAgICAg
ICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2aWNlIGluIC9ldGMvaG9z
dHMuICIKLSAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0I3J1bm5pbmctdGhlLXRlc3RzICIKKyAgICAgICAgICAgICAgICAgICAi
YXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3RzLlxuIgorICAgICAg
ICAgICAgICAgICAgICJTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmct
dGVzdHMvZnJvbS1sb2NhbC1zeXN0ZW0uaHRtbCNzeXN0ZW0tc2V0dXAgIgogICAgICAgICAgICAg
ICAgICAgICJmb3IgaW5zdHJ1Y3Rpb25zLiIpCiAKIApAQCAtMTc4LDkgKzE3OCw5IEBAIGNsYXNz
IEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAKICAgICBkZWYgY2hlY2tfZXhw
b3N1cmUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHNlbGYuZ2xvYmFsX3R5cGU6Ci0gICAg
ICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAgICBnbG9iYWxzID0gdSIiCiAgICAgICAg
ICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYuX2dldF9tZXRhZGF0YShyZXF1ZXN0KToKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtl
eSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE4OSwyMyArMTg5LDIzIEBAIGNsYXNzIEh0bWxX
cmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmdsb2JhbF90eXBlKQogCiAgICAgZGVmIF9tZXRhX3JlcGxhY2VtZW50
KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJ0aW1lb3V0IjoKLSAgICAg
ICAgICAgIGlmIHZhbHVlID09IGIibG9uZyI6CisgICAgICAgIGlmIGtleSA9PSAidGltZW91dCI6
CisgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibG9uZyI6CiAgICAgICAgICAgICAgICAgcmV0dXJu
ICc8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4nCi0gICAgICAgIGlmIGtleSA9
PSBiInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJl
cGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICAgICAgICBpZiBrZXkg
PT0gInRpdGxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiJiIsICImYW1w
OyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgICAgICAgICByZXR1cm4gJzx0aXRsZT4lczwv
dGl0bGU+JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3NjcmlwdF9y
ZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIic2NyaXB0
IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBsYWNl
KCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQorICAgICAgICBpZiBrZXkgPT0g
InNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCImIiwgIiZh
bXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQogICAgICAgICAgICAgcmV0dXJuICc8c2NyaXB0
IHNyYz0iJXMiPjwvc2NyaXB0PicgJSBhdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
CiBjbGFzcyBXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJkZWRpY2F0ZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5cGUgPSAiZGVkaWNhdGVkd29y
a2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIs
ICIuYW55Lndvcmtlci5qcyIpLAogICAgICAgICAgICAgICAgICAgICAoIi53b3JrZXIuaHRtbCIs
ICIud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjM0
LDcgKzIzNCw3IEBAIGNsYXNzIFdpbmRvd0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKIAog
CiBjbGFzcyBBbnlIdG1sSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJ3aW5kb3ciCisgICAgZ2xvYmFsX3R5cGUgPSAid2luZG93IgogICAgIHBhdGhfcmVw
bGFjZSA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9j
dHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzZWxm
LkdMT0JBTCA9IHsKIAogCiBjbGFzcyBTaGFyZWRXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhh
bmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzaGFyZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2hhcmVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkuc2hhcmVkd29y
a2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAgIHdyYXBwZXIgPSAi
IiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0yNjksNyArMjY5LDcg
QEAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigiJShwYXRoKXMlKHF1
ZXJ5KXMiKSk7CiAKIAogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFu
ZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiInNlcnZpY2V3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3
b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9
ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTMwNywxMSArMzA3
LDExIEBAIGRvbmUoKTsKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfc2NyaXB0X3Jl
cGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJzY3JpcHQi
OgotICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2Uo
IlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAic2Ny
aXB0IjoKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLnJlcGxhY2UoIlxcIiwgIlxcXFwi
KS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ2ltcG9ydFNjcmlwdHMo
IiVzIiknICUgYXR0cmlidXRlCi0gICAgICAgIGlmIGtleSA9PSBiInRpdGxlIjoKLSAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIlxcIiwgIlxcXFwiKS5y
ZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCIn
KQogICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFfVElUTEUgPSAiJXMiOycgJSB2YWx1ZQog
ICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNTEsNyArMzUxLDcgQEAgY2xhc3MgUm91dGVzQnVp
bGRlcihvYmplY3QpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBo
ZWFkZXJzID0ge30KICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzLlN0YXRpY0hhbmRsZXIocGF0
aCwgZm9ybWF0X2FyZ3MsIGNvbnRlbnRfdHlwZSwgKipoZWFkZXJzKQotICAgICAgICBzZWxmLmFk
ZF9oYW5kbGVyKGIiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRf
aGFuZGxlcigiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKIAogICAgIGRlZiBhZGRfbW91bnRf
cG9pbnQoc2VsZiwgdXJsX2Jhc2UsIHBhdGgpOgogICAgICAgICB1cmxfYmFzZSA9ICIvJXMvIiAl
IHVybF9iYXNlLnN0cmlwKCIvIikgaWYgdXJsX2Jhc2UgIT0gIi8iIGVsc2UgIi8iCkBAIC0zNjYs
NiArMzY2LDcgQEAgY2xhc3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAgICAgICAgICAgKCJH
RVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2VydmljZVdvcmtlcnNIYW5kbGVyKSwK
ICAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIsIEFueVdvcmtlckhhbmRsZXIp
LAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hc2lzIiwgaGFuZGxlcnMuQXNJc0hhbmRsZXIpLAor
ICAgICAgICAgICAgKCJHRVQiLCAiLy53ZWxsLWtub3duL29yaWdpbi1wb2xpY3kiLCBoYW5kbGVy
cy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAgICAgICAgICAgICgiKiIsICIqLnB5IiwgaGFuZGxl
cnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqIiwgaGFuZGxl
cnMuRmlsZUhhbmRsZXIpCiAgICAgICAgIF0KQEAgLTQxOCwxMCArNDE5LDEwIEBAIGNsYXNzIFNl
cnZlclByb2Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kYWVtb24g
PSBpbml0X2Z1bmMoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25m
aWcsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAg
cHJpbnQoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVzIiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikK
KyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU29ja2V0IGVycm9yIG9uIHBvcnQgJXMiICUg
cG9ydCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGZp
bGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCh0cmFjZWJhY2suZm9y
bWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBzZWxmLmRhZW1vbjoK
QEAgLTUxNSw3ICs1MTYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMs
IHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgYXNzZXJ0
IGxlbihwb3J0cykgPT0geyJodHRwIjogMn0uZ2V0KHNjaGVtZSwgMSkKIAogICAgICAgICAjIElm
IHRyeWluZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBhdGliaWxpdHkKLSAg
ICAgICAgaWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21wYXRpYmxlKCk6Cisg
ICAgICAgIGlmIHNjaGVtZSA9PSAnaDInIGFuZCBub3QgaHR0cDJfY29tcGF0aWJsZSgpOgogICAg
ICAgICAgICAgbG9nZ2VyLmVycm9yKCdDYW5ub3Qgc3RhcnQgSFRUUC8yLjAgc2VydmVyIGFzIHRo
ZSBlbnZpcm9ubWVudCBpcyBub3QgY29tcGF0aWJsZS4gJyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1JlcXVpcmVzIFB5dGhvbiAyLjcuMTArICg8IDMuMCkgYW5kIE9wZW5TU0wgMS4wLjIr
JykKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MjUsNyArNTI2LDcgQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGluaXRfZnVu
YyA9IHsiaHR0cCI6IHN0YXJ0X2h0dHBfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJodHRwcyI6IHN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Ijogc3RhcnRfaHR0cDJfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ3cyI6IHN0
YXJ0X3dzX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3NzIjogc3RhcnRfd3Nz
X3NlcnZlcn1bc2NoZW1lXQogCkBAIC01MzcsNTAgKzUzOCw2OCBAQCBkZWYgc3RhcnRfc2VydmVy
cyhob3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dh
cmdzKToKICAgICByZXR1cm4gc2VydmVycwogCiAKK2RlZiBzdGFydHVwX2ZhaWxlZChsb2c9VHJ1
ZSk6CisgICAgIyBMb2c9RmFsc2UgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICBpZiBsb2c6CisgICAg
ICAgIGxvZ2dlci5jcml0aWNhbChFRElUX0hPU1RTX0hFTFApCisgICAgZWxzZToKKyAgICAgICAg
cHJpbnQoIkNSSVRJQ0FMICVzIiAlIEVESVRfSE9TVFNfSEVMUCwgZmlsZT1zeXMuc3RkZXJyKQor
ICAgIHN5cy5leGl0KDEpCisKKwogZGVmIHN0YXJ0X2h0dHBfc2VydmVyKGhvc3QsIHBvcnQsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJu
IHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3J0PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJvdXRlcz1yb3V0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdy
aXRlcz1yZXdyaXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRk
cmVzcz1iaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPU5vbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IikpCisg
ICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRy
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPU5vbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nf
cm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xf
Y29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25u
ZWN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5PWt3YXJncy5n
ZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0
SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1w
YXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3Jp
dGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRf
YWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2Zp
bGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29u
bmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwMl9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfY2xzPXdwdHNlcnZl
Lkh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9z
c2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNvbmZp
Zy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xf
Y29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3
cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyX2Nscz13cHRzZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jv
b3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM9cm91dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5k
X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPWNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNz
bF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcu
c3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICBleGNlcHQgRXhj
ZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogY2xhc3MgV2ViU29ja2V0RGFl
bW9uKG9iamVjdCk6CkBAIC01OTEsMjEgKzYxMCw5IEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiLXciLCBoYW5kbGVyc19yb290XQogCiAgICAg
ICAgIGlmIHNzbF9jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdXN1
YWxseSBkb25lIHRocm91Z2ggcHl3ZWJzb2NrZXQubWFpbiwgaG93ZXZlciB3ZSdyZQotICAgICAg
ICAgICAgIyB3b3JraW5nIGFyb3VuZCB0aGF0IHRvIGdldCB0aGUgc2VydmVyIGluc3RhbmNlIGFu
ZCBtYW51YWxseQotICAgICAgICAgICAgIyBzZXR1cCB0aGUgd3NzIHNlcnZlci4KLSAgICAgICAg
ICAgIGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxzX21v
ZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfU1RBTkRBUkRfTU9EVUxFCi0gICAgICAgICAgICBl
bGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxz
X21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfUFlPUEVOU1NMCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHByaW50KCJObyBTU0wgbW9kdWxlIGF2YWlsYWJsZSIpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAgICAgY21kX2FyZ3MgKz0gWyItLXRs
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHJpdmF0ZS1rZXkiLCBzc2xfY29uZmln
WyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICItLWNlcnRpZmljYXRlIiwg
c3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tdGxz
LW1vZHVsZSIsIHRsc19tb2R1bGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY2VydGlm
aWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXV0KIAogICAgICAgICBpZiAoYmluZF9hZGRy
ZXNzKToKICAgICAgICAgICAgIGNtZF9hcmdzID0gWyItSCIsIGhvc3RdICsgY21kX2FyZ3MKQEAg
LTYxNCw2ICs2MjEsMTIgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CiAgICAgICAg
IG9wdHMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyID0g
cHl3ZWJzb2NrZXQuV2ViU29ja2V0U2VydmVyKG9wdHMpCiAgICAgICAgIHBvcnRzID0gW2l0ZW1b
MF0uZ2V0c29ja25hbWUoKVsxXSBmb3IgaXRlbSBpbiBzZWxmLnNlcnZlci5fc29ja2V0c10KKyAg
ICAgICAgaWYgbm90IHBvcnRzOgorICAgICAgICAgICAgIyBUT0RPOiBGaXggdGhlIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbiBpbiBXZWJTb2NrZXRzIHByb2Nlc3NlcworICAgICAgICAgICAgIyBzZWUg
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzE5Cisg
ICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIHN0YXJ0IHdlYnNvY2tldCBzZXJ2ZXIgb24gcG9y
dCAlcywgIgorICAgICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJlYWR5IHVzaW5nIHRo
YXQgcG9ydD8iICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcmFpc2UgT1NF
cnJvcigpCiAgICAgICAgIGFzc2VydCBhbGwoaXRlbSA9PSBwb3J0c1swXSBmb3IgaXRlbSBpbiBw
b3J0cykKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydHNbMF0KICAgICAgICAgc2VsZi5zdGFydGVk
ID0gRmFsc2UKQEAgLTY2MiwxMiArNjc1LDE1IEBAIGRlZiBzdGFydF93c19zZXJ2ZXIoaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAg
ICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9hZF9tb2R1bGUobG9n
Z2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4gV2ViU29ja2V0RGFl
bW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29uZmlnPU5v
bmUpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcucGF0aHNbIndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25m
aWc9Tm9uZSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZChs
b2c9RmFsc2UpCiAKIAogZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKQEAgLTY3NSwxMiArNjkxLDE1
IEBAIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRf
YWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBpbiB0aGUgbG9nZ2luZyBtb2R1bGUg
dW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2df
bG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19y
b290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9v
dCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLnNzbF9jb25maWcpCisgICAgdHJ5OgorICAgICAgICBy
ZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQorICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkKIAogCiBkZWYgc3Rh
cnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKQEAgLTcwNSw4ICs3MjQsMTEgQEAgZGVmIGl0
ZXJfcHJvY3Moc2VydmVycyk6CiBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgIHJ2ID0gQ29uZmlnQnVpbGRlcigpCiAKLSAgICBpZiBrd2FyZ3MuZ2V0
KCJoMiIpOgotICAgICAgICBydi5fZGVmYXVsdFsicG9ydHMiXVsiaHR0cDIiXSA9IFs5MDAwXQor
ICAgIGVuYWJsZV9odHRwMiA9IGt3YXJncy5nZXQoImgyIikKKyAgICBpZiBlbmFibGVfaHR0cDIg
aXMgTm9uZToKKyAgICAgICAgZW5hYmxlX2h0dHAyID0gVHJ1ZQorICAgIGlmIGVuYWJsZV9odHRw
MjoKKyAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImgyIl0gPSBbOTAwMF0KIAogICAgIGlm
IG92ZXJyaWRlX3BhdGggYW5kIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgpOgogICAgICAg
ICB3aXRoIG9wZW4ob3ZlcnJpZGVfcGF0aCkgYXMgZjoKQEAgLTczOSw2ICs3NjEsOSBAQCBkZWYg
YnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogZGVmIF9tYWtlX3N1
YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKICAgICByZXR1cm4ge3UiLiIuam9pbih4KSBm
b3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGluIHJhbmdlKDEsIGRl
cHRoKzEpKSl9CiAKK2RlZiBfbWFrZV9vcmlnaW5fcG9saWN5X3N1YmRvbWFpbnMobGltaXQpOgor
ICAgIHJldHVybiB7dSJvcCVkIiAlIHggZm9yIHggaW4gcmFuZ2UoMSxsaW1pdCsxKX0KKwogCiBf
c3ViZG9tYWlucyA9IHt1Ind3dyIsCiAgICAgICAgICAgICAgICB1Ind3dzEiLApAQCAtNzUwLDYg
Kzc3NSwxMiBAQCBfbm90X3N1YmRvbWFpbnMgPSB7dSJub25leGlzdGVudCJ9CiAKIF9zdWJkb21h
aW5zID0gX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9zdWJkb21haW5zKQogCisjIE9yaWdpbiBw
b2xpY3kgc3ViZG9tYWlucyBuZWVkIHRvIG5vdCBiZSByZXVzZWQgYnkgYW55IG90aGVyIHRlc3Rz
LCBzaW5jZSBvcmlnaW4gcG9saWNpZXMgaGF2ZQorIyBvcmlnaW4td2lkZSBpbXBhY3RzIGxpa2Ug
aW5zdGFsbGluZyBhIENTUCBvciBGZWF0dXJlIFBvbGljeSB0aGF0IGNvdWxkIGludGVyZmVyZSB3
aXRoIGZlYXR1cmVzCisjIHVuZGVyIHRlc3QuCisjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3JmY3MvcHVsbC80NC4KK19zdWJkb21haW5zIHw9IF9tYWtlX29yaWdp
bl9wb2xpY3lfc3ViZG9tYWlucyg5OSkKKwogX25vdF9zdWJkb21haW5zID0gX21ha2Vfc3ViZG9t
YWluc19wcm9kdWN0KF9ub3Rfc3ViZG9tYWlucykKIAogCkBAIC04NDUsOSArODc2LDEwIEBAIGRl
ZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIFdl
YlNvY2tldHMgZG9jdW1lbnQgcm9vdC4gT3ZlcnJpZGVzIGNvbmZpZy4iKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tYWxpYXNfZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJhbGlhc19m
aWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGUgd2l0aCBlbnRyaWVzIGZv
ciBhbGlhc2VzL211bHRpcGxlIGRvYyByb290cy4gSW4gZm9ybSBvZiBgL0FMSUFTX05BTUUvLCBE
T0NfUk9PVFxcbmAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGbGFn
IGZvciBlbmFibGluZyB0aGUgSFRUUC8yLjAgc2VydmVyIikKLSAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKGgyPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1u
by1oMiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIEhUVFAvMi4wIHNlcnZlciIp
CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKQEAgLTg5MCwxNiArOTIyLDIyIEBAIGRlZiBydW4oKipr
d2FyZ3MpOgogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgaGFuZGxl
X3NpZ25hbCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaGFuZGxl
X3NpZ25hbCkKIAotICAgICAgICAgICAgd2hpbGUgYWxsKGl0ZW0uaXNfYWxpdmUoKSBmb3IgaXRl
bSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQgbm90IHJlY2VpdmVkX3NpZ25hbC5pc19zZXQo
KToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgotICAg
ICAgICAgICAgICAgICAgICBpdGVtLmpvaW4oMSkKLSAgICAgICAgICAgIGV4aXRlZCA9IFtpdGVt
IGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykgaWYgbm90IGl0ZW0uaXNfYWxpdmUoKV0K
LSAgICAgICAgICAgIHN1YmplY3QgPSAic3VicHJvY2VzcyIgaWYgbGVuKGV4aXRlZCkgPT0gMSBl
bHNlICJzdWJwcm9jZXNzZXMiCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAlcyBleGl0
ZWQ6IiAlIChsZW4oZXhpdGVkKSwgc3ViamVjdCkpCi0KLSAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXR1
cyBvZiAlczpcdCVzIiAlIChpdGVtLm5hbWUsICJydW5uaW5nIiBpZiBpdGVtLmlzX2FsaXZlKCkg
ZWxzZSAibm90IHJ1bm5pbmciKSkKKyAgICAgICAgICAgIHdoaWxlIChhbGwoc3VicHJvYy5pc19h
bGl2ZSgpIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFuZAorICAgICAgICAg
ICAgICAgICAgIG5vdCByZWNlaXZlZF9zaWduYWwuaXNfc2V0KCkpOgorICAgICAgICAgICAgICAg
IGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAgICAgICAg
IHN1YnByb2Muam9pbigxKQorCisgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyA9IDAKKyAgICAg
ICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAg
ICAgaWYgc3VicHJvYy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5m
bygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogcnVubmluZycgJSBzdWJwcm9jLm5hbWUpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VicHJvYy5leGl0
Y29kZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1N0YXR1cyBv
ZiBzdWJwcm9jZXNzICIlcyI6IGV4aXRlZCBjb3JyZWN0bHknICUgc3VicHJvYy5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndh
cm5pbmcoJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGZhaWxlZC4gRXhpdCB3aXRoIG5vbi16
ZXJvIHN0YXR1czogJWQnICUgKHN1YnByb2MubmFtZSwgc3VicHJvYy5leGl0Y29kZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyArPSAxCisgICAgICAgICAgICByZXR1
cm4gZmFpbGVkX3N1YnByb2MKIAogCiBkZWYgbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
ZXJ2ZS90ZXN0X3NlcnZlLnB5CmluZGV4IGQ2YzA4MmE5NzAzNTdmNDc3ZTgyY2QyNWExYzA5NTJl
ZTc0NGRiNTQuLmQ5MDI0NzkzY2FmZGExYmIzNjNiNWQzYTM5OWFhOTNhNGQ2OTExMGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdGVzdF9zZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKQEAgLTgyLDcgKzgyLDcgQEAg
ZGVmIHRlc3RfY29uZmlnX2pzb25fbGVuZ3RoKCk6CiAgICAgIyB3ZSBzZXJpYWxpemUgdGhlIGNv
bmZpZyBhcyBKU09OIGZvciBweXRlc3RydW5uZXIgYW5kIHB1dCBpdCBpbiBhbiBlbnYKICAgICAj
IHZhcmlhYmxlLCB3aGljaCBvbiBXaW5kb3dzIG11c3QgaGF2ZSBhIGxlbmd0aCA8PSAweDdGRkYg
KGludDE2KQogICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6Ci0gICAgICAgIGRhdGEgPSBq
c29uLmR1bXBzKGMuYXNfZGljdCgpKQorICAgICAgICBkYXRhID0ganNvbi5kdW1wcyhjLmFzX2Rp
Y3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogICAgIGFzc2VydCBsZW4oZGF0YSkgPD0gMHg3RkZG
CiAKIGRlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X3Vuc3BlY2lmaWVkKCk6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTliMjFkNzQ1ODhlMGI1MTdk
NmU5N2U0N2M2YWVjNmZhZWYwNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApAQCAtMCwwICsxLDEyOCBAQAorbmFtZTogdGVzdHMK
Kworb246IFtwdXNoLCBwdWxsX3JlcXVlc3RdCisKK2pvYnM6CisKKyAgbGludDoKKyAgICBydW5z
LW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAg
d2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5hbWU6IEluc3Rh
bGwgcGFja2FnZXMKKyAgICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBmbGFrZTggaXNvcnQg
bXlweQorICAgICAgLSBuYW1lOiBSdW4gbGludGVycworICAgICAgICBydW46IHwKKyAgICAgICAg
ICBmbGFrZTggZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgaXNvcnQgLWMgLWRmIC1yYyBl
eGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBibGFjayAtLWNoZWNrIC0tZGlmZiBleGFtcGxl
cyBzcmMgdGVzdHMKKyAgICAgICAgICBteXB5IGV4YW1wbGVzIHNyYworCisgIHRlc3Q6CisgICAg
cnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1mYXN0
OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29z
LWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgICAgIHB5dGhvbjogWzMuOCwgMy43LCAzLjZd
CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBw
eXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAgIC0gbmFtZTogRGlzYWJs
ZSBmaXJld2FsbCBhbmQgY29uZmlndXJlIGNvbXBpbGVyCisgICAgICAgIGlmOiBtYXRyaXgub3Mg
PT0gJ21hY29zLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc3VkbyAvdXNyL2xp
YmV4ZWMvQXBwbGljYXRpb25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNldGdsb2JhbHN0YXRl
IG9mZgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNfU0tJUF9URVNUUzo6
Y2hhY2hhMjAiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZMQUdTOjotSS91c3Iv
bG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFt
ZT1MREZMQUdTOjotTC91c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgorICAgICAgLSBuYW1lOiBJ
bnN0YWxsIE9wZW5TU0wKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3Qn
CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNob2NvIGluc3RhbGwgb3BlbnNzbCAtLW5vLXBy
b2dyZXNzCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9JQzpcUHJvZ3JhfjFc
T3BlblNTTC1XaW42NFxpbmNsdWRlIgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxJ
Tks6Oi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorICAgICAgLSBuYW1l
OiBSdW4gdGVzdHMKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcGlwIGluc3RhbGwgLVUgcGlw
IHNldHVwdG9vbHMgd2hlZWwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjb3ZlcmFnZQorICAgICAg
ICAgIHBpcCBpbnN0YWxsIC4KKyAgICAgICAgICBjb3ZlcmFnZSBydW4gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXYKKyAgICAgICAgICBjb3ZlcmFnZSB4bWwKKyAgICAgICAgc2hlbGw6IGJhc2gKKyAg
ICAgIC0gbmFtZTogVXBsb2FkIGNvdmVyYWdlIHJlcG9ydAorICAgICAgICB1c2VzOiBjb2RlY292
L2NvZGVjb3YtYWN0aW9uQHYxCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9uICE9ICdweXB5MycK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMuQ09ERUNPVl9UT0tF
TiB9fQorCisgIHBhY2thZ2Utc291cmNlOgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAg
ICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2Vz
OiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhv
bi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTogQnVpbGQgc291cmNlIHBhY2thZ2UKKyAgICAg
ICAgcnVuOiBweXRob24gc2V0dXAucHkgc2Rpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHNvdXJj
ZSBwYWNrYWdlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHYxCisgICAg
ICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QvCisK
KyAgcGFja2FnZS13aGVlbDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19CisgICAgc3Ry
YXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3Mt
bGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9u
cy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTog
SW5zdGFsbCBuYXNtCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0Jwor
ICAgICAgICBydW46IGNob2NvIGluc3RhbGwgLXkgbmFzbQorICAgICAgLSBuYW1lOiBJbnN0YWxs
IG5tYWtlCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0JworICAgICAg
ICBydW46IHwKKyAgICAgICAgICAmICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXEluc3RhbGxlclx2c19pbnN0YWxsZXIuZXhlIiBtb2RpZnkgYAorICAgICAg
ICAgICAtLWluc3RhbGxQYXRoICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXDIwMTlcRW50ZXJwcmlzZSIgYAorICAgICAgICAgICAtLWFkZCBNaWNyb3NvZnQu
VmlzdWFsU3R1ZGlvLkNvbXBvbmVudC5WQy5Ub29scy54ODYueDY0IC0tcGFzc2l2ZSAtLW5vcmVz
dGFydAorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgLSBuYW1lOiBCdWlsZCB3aGVl
bHMKKyAgICAgICAgZW52OgorICAgICAgICAgIENJQldfQkVGT1JFX0JVSUxEOiBzY3JpcHRzL2J1
aWxkLW9wZW5zc2wgL3RtcC92ZW5kb3IKKyAgICAgICAgICBDSUJXX0JFRk9SRV9CVUlMRF9XSU5E
T1dTOiBzY3JpcHRzXGJ1aWxkLW9wZW5zc2wuYmF0IEM6XGNpYndcdmVuZG9yCisgICAgICAgICAg
Q0lCV19FTlZJUk9OTUVOVDogQUlPUVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9zcyBDRkxBR1M9LUkv
dG1wL3ZlbmRvci9pbmNsdWRlIExERkxBR1M9LUwvdG1wL3ZlbmRvci9saWIKKyAgICAgICAgICBD
SUJXX0VOVklST05NRU5UX1dJTkRPV1M6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxvc3MgQ0w9
Ii9JQzpcY2lid1x2ZW5kb3JcaW5jbHVkZSIgTElOSz0iL0xJQlBBVEg6QzpcY2lid1x2ZW5kb3Jc
bGliIgorICAgICAgICAgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0LSogY3AzNS0qIHBw
MjctKgorICAgICAgICAgIENJQldfVEVTVF9DT01NQU5EOiBweXRob24gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXQge3Byb2plY3R9IC1zIHtwcm9qZWN0fS90ZXN0cworICAgICAgICBydW46IHwKKyAg
ICAgICAgICBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKKyAgICAgICAgICBjaWJ1aWxkd2hlZWwg
LS1vdXRwdXQtZGlyIGRpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHdoZWVscworICAgICAgICB1
c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAg
IG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0LworCisgIHB1Ymxpc2g6CisgICAgcnVu
cy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIG5lZWRzOiBbbGludCwgdGVzdCwgcGFja2FnZS1zb3Vy
Y2UsIHBhY2thZ2Utd2hlZWxdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0Lwor
ICAgICAgLSBuYW1lOiBQdWJsaXNoIHRvIFB5UEkKKyAgICAgICAgaWY6IGdpdGh1Yi5ldmVudF9u
YW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYsICdyZWZzL3RhZ3Mv
JykKKyAgICAgICAgdXNlczogcHlwYS9naC1hY3Rpb24tcHlwaS1wdWJsaXNoQG1hc3RlcgorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHVzZXI6IF9fdG9rZW5fXworICAgICAgICAgIHBhc3N3b3Jk
OiAke3sgc2VjcmV0cy5QWVBJX1RPS0VOIH19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3Jr
Zmxvd3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JjMGFlOTliMjBmNDg5ZWU3N2E4NTU5
ZTUyYWM3OTQ1MzRkYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHVi
L3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkyNGE1
YWEwODM5ODZkMGJkNzA2OWVkYzZlZGRlYWI3Y2UwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQgKGMpIDIwMTkgSmVy
ZW15IExhaW7DqS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5CisgICAgICBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFO
SUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVlMDkwM2Fm
OTk0ZTM0YzM1ZDhiMmVlZTIwYjRiYjNiNzY5ZGUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUgTElDRU5TRQorcmVj
dXJzaXZlLWluY2x1ZGUgZG9jcyAqLnB5ICoucnN0IE1ha2VmaWxlCityZWN1cnNpdmUtaW5jbHVk
ZSBleGFtcGxlcyAqLmh0bWwgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdHMgKi5iaW4gKi5w
ZW0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzIyMDQyYzI0ZGQyNjZkZWExYjcyODQzNjRlOWE1
Y2NlYjY2YTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKQEAg
LTAsMCArMSwxNjQgQEAKK2Fpb3F1aWMKKz09PT09PT0KKworfHJ0ZHwgfHB5cGktdnwgfHB5cGkt
cHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwgfGJsYWNrfAorCisuLiB8cnRk
fCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2Fpb3F1aWMvYmFkZ2Uv
P3ZlcnNpb249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2Nz
LmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92
L2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9h
aW9xdWljCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL3B5dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5
cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8v
cHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGltYWdlOjogaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9iYWRnZS5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvYWN0aW9ucworCisu
LiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRo
dWIvYWlvcnRjL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2do
L2Fpb3J0Yy9haW9xdWljCisKKy4uIHxibGFja3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCisgICAgOnRhcmdldDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9ibGFjaworCitXaGF0IGlzIGBgYWlvcXVpY2BgPworLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJ
QyBuZXR3b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMKK2EgbWluaW1hbCBUTFMg
MS4zIGltcGxlbWVudGF0aW9uLCBhIFFVSUMgc3RhY2sgYW5kIGFuIEhUVFAvMyBzdGFjay4KKwor
UVVJQyBzdGFuZGFyZGlzYXRpb24gaXMgbm90IGZpbmFsaXNlZCB5ZXQsIGJ1dCBgYGFpb3F1aWNg
YCBjbG9zZWx5IHRyYWNrcyB0aGUKK3NwZWNpZmljYXRpb24gZHJhZnRzIGFuZCBpcyByZWd1bGFy
bHkgdGVzdGVkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGFnYWluc3Qgb3RoZXIKK2BRVUlDIGltcGxl
bWVudGF0aW9uc2BfLgorCitUbyBsZWFybiBtb3JlIGFib3V0IGBgYWlvcXVpY2BgIHBsZWFzZSBg
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbmBfLgorCitXaHkgc2hvdWxkIEkgdXNlIGBgYWlvcXVpY2Bg
PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaGFzIGJlZW4g
ZGVzaWduZWQgdG8gYmUgZW1iZWRkZWQgaW50byBQeXRob24gY2xpZW50IGFuZCBzZXJ2ZXIKK2xp
YnJhcmllcyB3aXNoaW5nIHRvIHN1cHBvcnQgUVVJQyBhbmQgLyBvciBIVFRQLzMuIFRoZSBnb2Fs
IGlzIHRvIHByb3ZpZGUgYQorY29tbW9uIGNvZGViYXNlIGZvciBQeXRob24gbGlicmFyaWVzIGlu
IHRoZSBob3BlIG9mIGF2b2lkaW5nIGR1cGxpY2F0ZWQgZWZmb3J0LgorCitCb3RoIHRoZSBRVUlD
IGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0
ZXJuLAorbGVhdmluZyBhY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlz
IGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRo
ZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCitkaWZmZXJlbnQg
Y29uY3VycmVuY3kgbW9kZWxzLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBRVUlDIHN0YWNr
IGNvbmZvcm1pbmcgd2l0aCBkcmFmdC0yNworLSBIVFRQLzMgc3RhY2sgY29uZm9ybWluZyB3aXRo
IGRyYWZ0LTI3CistIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbgorLSBJUHY0IGFuZCBJ
UHY2IHN1cHBvcnQKKy0gY29ubmVjdGlvbiBtaWdyYXRpb24gYW5kIE5BVCByZWJpbmRpbmcKKy0g
bG9nZ2luZyBUTFMgdHJhZmZpYyBzZWNyZXRzCistIGxvZ2dpbmcgUVVJQyBldmVudHMgaW4gUUxP
RyBmb3JtYXQKKy0gSFRUUC8zIHNlcnZlciBwdXNoIHN1cHBvcnQKKworUmVxdWlyZW1lbnRzCist
LS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgcmVxdWlyZXMgUHl0aG9uIDMuNiBvciBiZXR0ZXIs
IGFuZCB0aGUgT3BlblNTTCBkZXZlbG9wbWVudCBoZWFkZXJzLgorCitMaW51eAorLi4uLi4KKwor
T24gRGViaWFuL1VidW50dSBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQg
c3VkbyBhcHQgaW5zdGFsbCBsaWJzc2wtZGV2IHB5dGhvbjMtZGV2CisKK09uIEFscGluZSBMaW51
eCB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIGZvbGxvd2luZzoKKworLi4gY29kZS1ibG9jazo6IGNv
bnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGJzZC1jb21wYXQtaGVhZGVycyBsaWJmZmkt
ZGV2CisKK09TIFgKKy4uLi4KKworT24gT1MgWCBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25z
b2xlCisKKyAgICQgYnJldyBpbnN0YWxsIG9wZW5zc2wKKworWW91IHdpbGwgbmVlZCB0byBzZXQg
c29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBhZ2FpbnN0IE9wZW5TU0w6CisKKy4u
IGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgZXhwb3J0IENGTEFHUz0tSS91c3IvbG9jYWwv
b3B0L29wZW5zc2wvaW5jbHVkZQorICAgJCBleHBvcnQgTERGTEFHUz0tTC91c3IvbG9jYWwvb3B0
L29wZW5zc2wvbGliCisKK1dpbmRvd3MKKy4uLi4uLi4KKworT24gV2luZG93cyB0aGUgZWFzaWVz
dCB3YXkgdG8gaW5zdGFsbCBPcGVuU1NMIGlzIHRvIHVzZSBgQ2hvY29sYXRleWBfLgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICA+IGNob2NvIGluc3RhbGwgb3BlbnNzbAorCitZb3Ug
d2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBsaW5rIGFnYWlu
c3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICA+ICRFbnY6Q0wgPSAi
L0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgID4gJEVudjpMSU5LID0gIi9M
SUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorCitSdW5uaW5nIHRoZSBleGFt
cGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoZSBjb2Rl
IHVzaW5nIGdpdCB5b3UgY2FuIHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAg
JCBwaXAgaW5zdGFsbCAtZSAuCisgICAkIHBpcCBpbnN0YWxsIGFpb2ZpbGVzIGFzZ2lyZWYgaHR0
cGJpbiBzdGFybGV0dGUgd3Nwcm90bworCitIVFRQLzMgc2VydmVyCisuLi4uLi4uLi4uLi4uCisK
K1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIHNlcnZlciwgd2hpY2ggaGFuZGxlcyBib3RoIEhUVFAv
MC45IGFuZCBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgcHl0aG9u
IGV4YW1wbGVzL2h0dHAzX3NlcnZlci5weSAtLWNlcnRpZmljYXRlIHRlc3RzL3NzbF9jZXJ0LnBl
bSAtLXByaXZhdGUta2V5IHRlc3RzL3NzbF9rZXkucGVtCisKK0hUVFAvMyBjbGllbnQKKy4uLi4u
Li4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgY2xpZW50IHRvIHBlcmZvcm0gYW4g
SFRUUC8zIHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRob24g
ZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVtIGh0
dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK0FsdGVybmF0aXZlbHkgeW91IGNhbiBwZXJmb3JtIGFu
IEhUVFAvMC45IHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRo
b24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVt
IC0tbGVnYWN5LWh0dHAgaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworWW91IGNhbiBhbHNvIG9w
ZW4gYSBXZWJTb2NrZXQgb3ZlciBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHlj
YWNlcnQucGVtIHdzczovL2xvY2FsaG9zdDo0NDMzL3dzCisKK0xpY2Vuc2UKKy0tLS0tLS0KKwor
YGBhaW9xdWljYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5zZWBfLgorCisuLiBf
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlvL2Vu
L2xhdGVzdC8KKy4uIF9RVUlDIGltcGxlbWVudGF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL3F1
aWN3Zy9iYXNlLWRyYWZ0cy93aWtpL0ltcGxlbWVudGF0aW9ucworLi4gX2NyeXB0b2dyYXBoeTog
aHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfQ2hvY29sYXRleTogaHR0cHM6Ly9jaG9jb2xh
dGV5Lm9yZy8KKy4uIF9CU0QgbGljZW5zZTogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlv
L2VuL2xhdGVzdC9saWNlbnNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01h
a2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiNzM4Yjk2
MTdmYjJkOWRkMDY2ODRiZDIyNGYwYWQwM2UwNmEwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgTWluaW1hbCBtYWtlZmls
ZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJp
YWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorU1BISU5YT1BUUyAgICA9CitTUEhJTlhCVUlM
RCAgID0gc3BoaW54LWJ1aWxkCitTUEhJTlhQUk9KICAgID0gYWlvcXVpYworU09VUkNFRElSICAg
ICA9IC4KK0JVSUxERElSICAgICAgPSBfYnVpbGQKKworIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAi
bWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBsaWtlICJtYWtlIGhlbHAiLgoraGVscDoKKwlAJChT
UEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5Y
T1BUUykgJChPKQorCisuUEhPTlk6IGhlbHAgTWFrZWZpbGUKKworIyBDYXRjaC1hbGwgdGFyZ2V0
OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJt
YWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJ
TlhPUFRTKS4KKyU6IE1ha2VmaWxlCisJQCQoU1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJ
UikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWM1NjgwOTAxNDYwYjAzMjgz
YTRhYzZjZjY1NGU4YzJhYWM2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvYXN5bmNpby5yc3QKQEAgLTAsMCArMSwzMiBAQAorYXN5bmNpbyBBUEkKKz09PT09PT09PT09
CisKK1RoZSBhc3luY2lvIEFQSSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgUVVJQyBBUEkgYnVpbHQg
b24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLAorUHl0aG9uJ3Mgc3RhbmRhcmQgYXN5bmNocm9ub3Vz
IEkvTyBmcmFtZXdvcmsuCisKK2BgYWlvcXVpY2BgIGNvbWVzIHdpdGggYSBzZWxlY3Rpb24gb2Yg
ZXhhbXBsZXMsIGluY2x1ZGluZzoKKworLSBhbiBIVFRQLzMgY2xpZW50CistIGFuIEhUVFAvMyBz
ZXJ2ZXIKKworVGhlIGV4YW1wbGVzIGNhbiBiZSBicm93c2VkIG9uIEdpdEh1YjoKKworaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3RyZWUvbWFzdGVyL2V4YW1wbGVzCisKKy4uIGF1
dG9tb2R1bGU6OiBhaW9xdWljLmFzeW5jaW8KKworQ2xpZW50CistLS0tLS0KKworICAgIC4uIGF1
dG9mdW5jdGlvbjo6IGNvbm5lY3QKKworU2VydmVyCistLS0tLS0KKworICAgIC4uIGF1dG9mdW5j
dGlvbjo6IHNlcnZlCisKK0NvbW1vbgorLS0tLS0tCisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWlj
Q29ubmVjdGlvblByb3RvY29sCisgICAgICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg5MDYyYWM5NzUzMjZhNDdmODhlZGFlNGQ4ZDM0M2NmZTc2MGMwYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIGFpb3F1aWMg
ZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKKyMgc3Bo
aW54LXF1aWNrc3RhcnQgb24gVGh1IEZlYiAgOCAxNzoyMjoxNCAyMDE4LgorIworIyBUaGlzIGZp
bGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cwor
IyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29uZmln
dXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2VuZXJhdGVkIGZpbGUu
CisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRo
YXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KKworaW1w
b3J0IHN5cywgb3MKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdp
dGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0
b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0
aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQg
YWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFi
c3BhdGgoJy4uJykpCisKKworY2xhc3MgTW9ja0J1ZmZlcjoKKyAgICBCdWZmZXIgPSBOb25lCisg
ICAgQnVmZmVyUmVhZEVycm9yID0gTm9uZQorICAgIEJ1ZmZlcldyaXRlRXJyb3IgPSBOb25lCisK
KworY2xhc3MgTW9ja0NyeXB0bzoKKyAgICBBRUFEID0gTm9uZQorICAgIENyeXB0b0Vycm9yID0g
VmFsdWVFcnJvcgorICAgIEhlYWRlclByb3RlY3Rpb24gPSBOb25lCisKKworY2xhc3MgTW9ja1B5
bHNxcGFjazoKKyAgICBEZWNvZGVyID0gTm9uZQorICAgIEVuY29kZXIgPSBOb25lCisgICAgU3Ry
ZWFtQmxvY2tlZCA9IE5vbmUKKworCitzeXMubW9kdWxlcy51cGRhdGUoeworICAgICJhaW9xdWlj
Ll9idWZmZXIiOiBNb2NrQnVmZmVyKCksCisgICAgImFpb3F1aWMuX2NyeXB0byI6IE1vY2tDcnlw
dG8oKSwKKyAgICAicHlsc3FwYWNrIjogTW9ja1B5bHNxcGFjaygpLAorfSkKKworIyAtLSBHZW5l
cmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhp
bnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KKyMKKyMgbmVlZHNfc3BoaW54ID0gJzEuMCcKKwor
IyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3Mu
IFRoZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3Bo
aW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20KKyMgb25lcy4KK2V4dGVuc2lvbnMgPSBbCisgICAg
J3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJzcGhpbngnLAorICAg
ICdzcGhpbnhfYXV0b2RvY190eXBlaGludHMnLAorICAgICdzcGhpbnhjb250cmliLmFzeW5jaW8n
LAorXQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAnY3J5cHRvZ3JhcGh5JzogKCdodHRw
czovL2NyeXB0b2dyYXBoeS5pby9lbi9sYXRlc3QnLCBOb25lKSwKKyAgICAncHl0aG9uJzogKCdo
dHRwczovL2RvY3MucHl0aG9uLm9yZy8zJywgTm9uZSksCit9CisKKyMgQWRkIGFueSBwYXRocyB0
aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5Lgor
dGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXgoZXMpIG9mIHNv
dXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBzdWZmaXggYXMgYSBs
aXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcsICcubWQnXQorc291
cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1bWVudC4KK21h
c3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJv
amVjdC4KK3Byb2plY3QgPSAnYWlvcXVpYycKK2NvcHlyaWdodCA9IHUnMjAxOSwgSmVyZW15IExh
aW7DqScKK2F1dGhvciA9IHUnSmVyZW15IExhaW7DqScKKworIyBUaGUgdmVyc2lvbiBpbmZvIGZv
ciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9y
CisjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBw
bGFjZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIworIyBUaGUgc2hvcnQg
WC5ZIHZlcnNpb24uCit2ZXJzaW9uID0gJycKKyMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5jbHVkaW5n
IGFscGhhL2JldGEvcmMgdGFncy4KK3JlbGVhc2UgPSAnJworCisjIFRoZSBsYW5ndWFnZSBmb3Ig
Y29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgor
IyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjCisjIFRoaXMgaXMgYWxzbyB1
c2VkIGlmIHlvdSBkbyBjb250ZW50IHRyYW5zbGF0aW9uIHZpYSBnZXR0ZXh0IGNhdGFsb2dzLgor
IyBVc3VhbGx5IHlvdSBzZXQgImxhbmd1YWdlIiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRo
ZXNlIGNhc2VzLgorbGFuZ3VhZ2UgPSBOb25lCisKKyMgTGlzdCBvZiBwYXR0ZXJucywgcmVsYXRp
dmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQKKyMgZGlyZWN0b3Jp
ZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgorIyBUaGlzIHBhdHRl
cm5zIGFsc28gZWZmZWN0IHRvIGh0bWxfc3RhdGljX3BhdGggYW5kIGh0bWxfZXh0cmFfcGF0aAor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJywgJ1RodW1icy5kYicsICcuRFNfU3RvcmUnXQor
CisjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdodGluZykgc3R5bGUg
dG8gdXNlLgorcHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JworCisjIElmIHRydWUsIGB0b2RvYCBh
bmQgYHRvZG9MaXN0YCBwcm9kdWNlIG91dHB1dCwgZWxzZSB0aGV5IHByb2R1Y2Ugbm90aGluZy4K
K3RvZG9faW5jbHVkZV90b2RvcyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25zIGZvciBIVE1MIG91
dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMg
VGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBk
b2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCisjCitodG1sX3Ro
ZW1lID0gJ2FsYWJhc3RlcicKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBh
bmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMgZnVydGhlci4gIEZv
ciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKKyMg
ZG9jdW1lbnRhdGlvbi4KKyMKK2h0bWxfdGhlbWVfb3B0aW9ucyA9IHsKKyAgICAnZGVzY3JpcHRp
b24nOiAnQSBsaWJyYXJ5IGZvciBRVUlDIGluIFB5dGhvbi4nLAorICAgICdnaXRodWJfYnV0dG9u
JzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAnYWlvcnRjJywKKyAgICAnZ2l0aHViX3JlcG8n
OiAnYWlvcXVpYycsCit9CisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHN0
YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3RhdGljIGZp
bGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0ZSB0aGUg
YnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsnX3N0YXRpYyddCisK
KyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtdXN0IGJlIGEgZGljdGlvbmFyeSB0aGF0IG1h
cHMgZG9jdW1lbnQgbmFtZXMKKyMgdG8gdGVtcGxhdGUgbmFtZXMuCisjCisjIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHRoZSBhbGFiYXN0ZXIgdGhlbWUKKyMgcmVmczogaHR0cDovL2FsYWJhc3Rlci5y
ZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5zdGFsbGF0aW9uLmh0bWwjc2lkZWJhcnMKK2h0bWxf
c2lkZWJhcnMgPSB7CisgICAgJyoqJzogWworICAgICAgICAnYWJvdXQuaHRtbCcsCisgICAgICAg
ICduYXZpZ2F0aW9uLmh0bWwnLAorICAgICAgICAncmVsYXRpb25zLmh0bWwnLAorICAgICAgICAn
c2VhcmNoYm94Lmh0bWwnLAorICAgIF0KK30KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxw
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBP
dXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFz
ZW5hbWUgPSAnYWlvcXVpY2RvYycKKworCisjIC0tIE9wdGlvbnMgZm9yIExhVGVYIG91dHB1dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbGF0ZXhfZWxl
bWVudHMgPSB7CisgICAgIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBl
cicpLgorICAgICMKKyAgICAjICdwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAorCisgICAgIyBU
aGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgorICAgICMKKyAgICAjICdw
b2ludHNpemUnOiAnMTBwdCcsCisKKyAgICAjIEFkZGl0aW9uYWwgc3R1ZmYgZm9yIHRoZSBMYVRl
WCBwcmVhbWJsZS4KKyAgICAjCisgICAgIyAncHJlYW1ibGUnOiAnJywKKworICAgICMgTGF0ZXgg
ZmlndXJlIChmbG9hdCkgYWxpZ25tZW50CisgICAgIworICAgICMgJ2ZpZ3VyZV9hbGlnbic6ICdo
dGJwJywKK30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVz
LiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRs
ZSwKKyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNz
XSkuCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdhaW9xdWljLnRleCcs
ICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdtYW51YWwnKSwKK10KKwor
CisjIC0tIE9wdGlvbnMgZm9yIG1hbnVhbCBwYWdlIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0
IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRo
b3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdh
aW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRob3JdLCAxKQorXQor
CisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVlIGlu
dG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0
YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5LCBkZXNjcmlwdGlv
biwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2Fp
b3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9yLCAnYWlvcXVpYycs
ICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0LicsCisgICAgICdNaXNjZWxsYW5lb3Vz
JyksCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI5ZTc2MmY1YTYzNGUyYTM1Nzkx
ZTQ2NWI5MDQ5YmE0YmU2MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3Mv
ZGVzaWduLnJzdApAQCAtMCwwICsxLDM3IEBACitEZXNpZ24KKz09PT09PQorCitTYW5zLUlPIEFQ
SXMKKy4uLi4uLi4uLi4uLgorCitCb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9s
bG93IHRoZSBgc2FucyBJL09gXyBwYXR0ZXJuLCBsZWF2aW5nCithY3R1YWwgSS9PIG9wZXJhdGlv
bnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50
YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRl
Z3JhdGlvbiB3aXRoCitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgorCitUTFMgYW5kIGVu
Y3J5cHRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLgorCitUTFMgMS4zCisrKysrKysrCisKK2BgYWlv
cXVpY2BgIGZlYXR1cmVzIGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uIGJ1aWx0IHVw
b24gdGhlCitgY3J5cHRvZ3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNhdXNlIFFVSUMgcmVx
dWlyZXMgc29tZSBBUElzIHdoaWNoIGFyZQorY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIG1haW5z
dHJlYW0gVExTIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6CisKKy0gdGhlIGFiaWxp
dHkgdG8gZXh0cmFjdCB0cmFmZmljIHNlY3JldHMKKworLSB0aGUgYWJpbGl0eSB0byBvcGVyYXRl
IGRpcmVjdGx5IG9uIFRMUyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUgVExTCisgIHJlY29y
ZCBsYXllcgorCitIZWFkZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNyeXB0aW9uCisrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1FVSUMgbWFrZXMgZXh0ZW5z
aXZlIHVzZSBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVjdCBRVUlDIHBhY2tl
dAoraGVhZGVycyBhbmQgZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNlIG9wZXJhdGlvbnMg
b2NjdXIgZm9yIGV2ZXJ5IHNpbmdsZQorcGFja2V0IGFuZCBhcmUgYSBkZXRlcm1pbmluZyBmYWN0
b3IgZm9yIHBlcmZvcm1hbmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKK2FyZSBpbXBsZW1lbnRl
ZCBhcyBhIEMgZXh0ZW5zaW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgorCisuLiBfc2FucyBJL086
IGh0dHBzOi8vc2Fucy1pby5yZWFkdGhlZG9jcy5pby8KKy4uIF9jcnlwdG9ncmFwaHk6IGh0dHBz
Oi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3Jn
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvaDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZTIyMDFjNDNkNDZiMGNiYjJiYWMyOGRmY2Y1OTIwYTAx
MjkxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKQEAgLTAs
MCArMSw0NCBAQAorSFRUUC8zIEFQSQorPT09PT09PT09PQorCitUaGUgSFRUUC8zIEFQSSBwZXJm
b3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1Ro
aXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgSFRUUC8zIGluIGFueSBQeXRob24gYXBwbGljYXRp
b24sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3UgYXJlIHVzaW5nLgor
CitDb25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmNv
bm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6IEgzQ29ubmVjdGlvbgorICAgICAgICA6bWVt
YmVyczoKKworCitFdmVudHMKKy0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5l
dmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBEYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBIZWFkZXJzUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBQdXNoUHJvbWlzZVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMu
ZXhjZXB0aW9ucworCisgICAgLi4gYXV0b2NsYXNzOjogSDNFcnJvcgorICAgICAgICA6bWVtYmVy
czoKKworICAgIC4uIGF1dG9jbGFzczo6IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKyAgICAgICAg
Om1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0MTU2MWEyMjQwNDBiYzFhOGFj
ZTI2NmFkMDE1NjhmNjg0MTdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2Nz
L2luZGV4LnJzdApAQCAtMCwwICsxLDM5IEBACithaW9xdWljCis9PT09PT09CisKK3xweXBpLXZ8
IHxweXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8CisKKy4uIHxweXBp
LXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5
cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJz
aW9ucy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvYWlvcXVpYworCisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v
cHlwaS9sL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS9haW9xdWljCisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlv
cnRjL2Fpb3F1aWMvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxjb2RlY292fCBpbWFn
ZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVp
Yy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMK
KworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJQyBuZXR3b3JrIHByb3RvY29s
IGluIFB5dGhvbi4gSXQgZmVhdHVyZXMgc2V2ZXJhbAorQVBJczoKKworLSBhIFFVSUMgQVBJIGZv
bGxvd2luZyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwgc3VpdGFibGUgZm9yCisg
IGVtYmVkZGluZyBpbiBhbnkgZnJhbWV3b3JrLAorCistIGFuIEhUVFAvMyBBUEkgd2hpY2ggYWxz
byBmb2xsb3dzIHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLAorCistIGEgUVVJQyBj
b252ZW5pZW5jZSBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLCBQeXRob24ncyBz
dGFuZGFyZCBhc3luY2hyb25vdXMKKyAgSS9PIGZyYW1ld29yay4KKworLi4gdG9jdHJlZTo6Cisg
ICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBxdWljCisgICBoMworICAgYXN5bmNpbwor
ICAgbGljZW5zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkM2IwN2ZjOTNmNjQ3
ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCistLS0tLS0tCisKKy4u
IGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvcXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVi
ZWZiNDlkNTE0YTQ1MTVjMjIzY2RjODQzNjljZDE2YTEyYjczCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKQEAgLTAsMCArMSw1MSBAQAorUVVJQyBBUEkKKz09
PT09PT09CisKK1RoZSBRVUlDIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmlu
ZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgUVVJ
QyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mCit0aGUgY29uY3VycmVu
Y3kgbW9kZWwgeW91IGFyZSB1c2luZy4KKworQ29ubmVjdGlvbgorLS0tLS0tLS0tLQorCisuLiBh
dXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6
IFF1aWNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0NvbmZpZ3VyYXRpb24KKy0t
LS0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
CisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWljQ29uZmlndXJhdGlvbgorICAgICAgICA6bWVtYmVy
czoKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5sb2dnZXIKKworICAgIC4uIGF1dG9j
bGFzczo6IFF1aWNMb2dnZXIKKyAgICAgICAgOm1lbWJlcnM6CisKK0V2ZW50cworLS0tLS0tCisK
Ky4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuZXZlbnRzCisKKyAgICAuLiBhdXRvY2xhc3M6
OiBRdWljRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBDb25u
ZWN0aW9uVGVybWluYXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6
IEhhbmRzaGFrZUNvbXBsZXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFz
czo6IFBpbmdBY2tub3dsZWRnZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xh
c3M6OiBTdHJlYW1EYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBTdHJlYW1SZXNldAorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDgwZTc5OTkwNDNkMjk3NDFhMTM0OTE2Njc4ZDU0MDQ5OTJhOTc1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjQgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2Uu
cnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5CkBAIC0wLDAgKzEsMTA5IEBA
CisjCisjIGRlbW8gYXBwbGljYXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQorIworCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBvcworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQor
CitpbXBvcnQgaHR0cGJpbgorZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdzZ2lUb0FzZ2kKK2Zy
b20gc3RhcmxldHRlLmFwcGxpY2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCitmcm9tIHN0YXJsZXR0
ZS5yZXNwb25zZXMgaW1wb3J0IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25zZQorZnJvbSBzdGFy
bGV0dGUuc3RhdGljZmlsZXMgaW1wb3J0IFN0YXRpY0ZpbGVzCitmcm9tIHN0YXJsZXR0ZS50ZW1w
bGF0aW5nIGltcG9ydCBKaW5qYTJUZW1wbGF0ZXMKK2Zyb20gc3RhcmxldHRlLndlYnNvY2tldHMg
aW1wb3J0IFdlYlNvY2tldERpc2Nvbm5lY3QKKworUk9PVCA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKK1NUQVRJQ19ST09UID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19ST09UIiwgb3MucGF0
aC5qb2luKFJPT1QsICJodGRvY3MiKSkKK1NUQVRJQ19VUkwgPSAiLyIKK0xPR1NfUEFUSCA9IG9z
LnBhdGguam9pbihTVEFUSUNfUk9PVCwgImxvZ3MiKQorUVZJU19VUkwgPSAiaHR0cHM6Ly9xdmlz
LmVkbS51aGFzc2VsdC5iZS8iCisKK3RlbXBsYXRlcyA9IEppbmphMlRlbXBsYXRlcyhkaXJlY3Rv
cnk9b3MucGF0aC5qb2luKFJPT1QsICJ0ZW1wbGF0ZXMiKSkKK2FwcCA9IFN0YXJsZXR0ZSgpCisK
KworQGFwcC5yb3V0ZSgiLyIpCithc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVzdCk6CisgICAgIiIi
CisgICAgU2ltcGxlIGhvbWVwYWdlLgorICAgICIiIgorICAgIGF3YWl0IHJlcXVlc3Quc2VuZF9w
dXNoX3Byb21pc2UoIi9zdHlsZS5jc3MiKQorICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVS
ZXNwb25zZSgiaW5kZXguaHRtbCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQorCisKK0BhcHAucm91
dGUoIi9lY2hvIiwgbWV0aG9kcz1bIlBPU1QiXSkKK2FzeW5jIGRlZiBlY2hvKHJlcXVlc3QpOgor
ICAgICIiIgorICAgIEhUVFAgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAgICBjb250ZW50ID0g
YXdhaXQgcmVxdWVzdC5ib2R5KCkKKyAgICBtZWRpYV90eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdl
dCgiY29udGVudC10eXBlIikKKyAgICByZXR1cm4gUmVzcG9uc2UoY29udGVudCwgbWVkaWFfdHlw
ZT1tZWRpYV90eXBlKQorCisKK0BhcHAucm91dGUoIi9sb2dzLz8iKQorYXN5bmMgZGVmIGxvZ3Mo
cmVxdWVzdCk6CisgICAgIiIiCisgICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxPRyBmaWxlcy4KKyAg
ICAiIiIKKyAgICBsb2dzID0gW10KKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKExPR1NfUEFU
SCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5xbG9nIik6CisgICAgICAgICAgICBzID0g
b3Muc3RhdChvcy5wYXRoLmpvaW4oTE9HU19QQVRILCBuYW1lKSkKKyAgICAgICAgICAgIGZpbGVf
dXJsID0gImh0dHBzOi8vIiArIHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsgIi9sb2dzLyIgKyBu
YW1lCisgICAgICAgICAgICBsb2dzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJkYXRlIjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChz
LnN0X210aW1lKS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlWS0lbS0lZCAl
SDolTTolUyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgImZp
bGVfdXJsIjogZmlsZV91cmwsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZVs6LTVd
LAorICAgICAgICAgICAgICAgICAgICAicXZpc191cmwiOiBRVklTX1VSTAorICAgICAgICAgICAg
ICAgICAgICArICI/IgorICAgICAgICAgICAgICAgICAgICArIHVybGVuY29kZSh7ImZpbGUiOiBm
aWxlX3VybH0pCisgICAgICAgICAgICAgICAgICAgICsgIiMvc2VxdWVuY2UiLAorICAgICAgICAg
ICAgICAgICAgICAic2l6ZSI6IHMuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApCisgICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKAorICAgICAgICAi
bG9ncy5odG1sIiwKKyAgICAgICAgeworICAgICAgICAgICAgImxvZ3MiOiBzb3J0ZWQobG9ncywg
a2V5PWxhbWJkYSB4OiB4WyJkYXRlIl0sIHJldmVyc2U9VHJ1ZSksCisgICAgICAgICAgICAicmVx
dWVzdCI6IHJlcXVlc3QsCisgICAgICAgIH0sCisgICAgKQorCisKK0BhcHAucm91dGUoIi97c2l6
ZTppbnR9IikKK2RlZiBwYWRkaW5nKHJlcXVlc3QpOgorICAgICIiIgorICAgIER5bmFtaWNhbGx5
IGdlbmVyYXRlZCBkYXRhLCBtYXhpbXVtIDUwTUIuCisgICAgIiIiCisgICAgc2l6ZSA9IG1pbig1
MDAwMDAwMCwgcmVxdWVzdC5wYXRoX3BhcmFtc1sic2l6ZSJdKQorICAgIHJldHVybiBQbGFpblRl
eHRSZXNwb25zZSgiWiIgKiBzaXplKQorCisKK0BhcHAud2Vic29ja2V0X3JvdXRlKCIvd3MiKQor
YXN5bmMgZGVmIHdzKHdlYnNvY2tldCk6CisgICAgIiIiCisgICAgV2ViU29ja2V0IGVjaG8gZW5k
cG9pbnQuCisgICAgIiIiCisgICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5zY29wZVsic3VicHJv
dG9jb2xzIl06CisgICAgICAgIHN1YnByb3RvY29sID0gImNoYXQiCisgICAgZWxzZToKKyAgICAg
ICAgc3VicHJvdG9jb2wgPSBOb25lCisgICAgYXdhaXQgd2Vic29ja2V0LmFjY2VwdChzdWJwcm90
b2NvbD1zdWJwcm90b2NvbCkKKworICAgIHRyeToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0KCkKKyAgICAgICAg
ICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kX3RleHQobWVzc2FnZSkKKyAgICBleGNlcHQgV2ViU29j
a2V0RGlzY29ubmVjdDoKKyAgICAgICAgcGFzcworCisKK2FwcC5tb3VudCgiL2h0dHBiaW4iLCBX
c2dpVG9Bc2dpKGh0dHBiaW4uYXBwKSkKKworYXBwLm1vdW50KFNUQVRJQ19VUkwsIFN0YXRpY0Zp
bGVzKGRpcmVjdG9yeT1TVEFUSUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odGRvY3Mvcm9ib3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWFhMGJkZWFhY2U2MzcyYTdlYjEzMDEw
ZmQxNjY2YzY1NTQ2ODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L2h0ZG9jcy9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMiBAQAorVXNlci1hZ2VudDogKgorRGlzYWxs
b3c6IC9sb2dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxl
LmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxNTIzZGI4YWQ4ZDE2Zjc1MjYwYzU4MTdhYjQ4ZTg5ZTIxZWJiZDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpAQCAtMCwwICsxLDEw
IEBACitib2R5IHsKKyAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA0MGVtOworfQor
Cit0YWJsZS5sb2dzIHsKKyAgICB3aWR0aDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NjgyMGRmMGRmODA5YzdjOTg5
OTI3YThiOGIzMjhlMDQ5NTZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTg4OGEzNmVhN2ViYTI3ZjM2YTVkZDQwYjBjNzZhMDQyNDlkYzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpAQCAt
MCwwICsxLDQ1NSBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpz
b24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzc2wK
K2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcg
aW1wb3J0IENhbGxhYmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0
Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworaW1wb3J0IHdzcHJvdG8KK2lt
cG9ydCB3c3Byb3RvLmV2ZW50cworCitpbXBvcnQgYWlvcXVpYworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24g
aW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgKAorICAgIERhdGFSZWNlaXZlZCwKKyAgICBIM0V2ZW50LAorICAgIEhlYWRlcnNSZWNlaXZl
ZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50
cyBpbXBvcnQgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNM
b2dnZXIKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCitIdHRwQ29ubmVjdGlvbiA9
IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitVU0VSX0FHRU5UID0gImFpb3F1
aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBVUkw6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHVybDogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXJzZWQgPSB1cmxwYXJzZSh1
cmwpCisKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHNl
bGYuZnVsbF9wYXRoID0gcGFyc2VkLnBhdGgKKyAgICAgICAgaWYgcGFyc2VkLnF1ZXJ5OgorICAg
ICAgICAgICAgc2VsZi5mdWxsX3BhdGggKz0gIj8iICsgcGFyc2VkLnF1ZXJ5CisgICAgICAgIHNl
bGYuc2NoZW1lID0gcGFyc2VkLnNjaGVtZQorCisKK2NsYXNzIEh0dHBSZXF1ZXN0OgorICAgIGRl
ZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbWV0aG9kOiBzdHIsIHVybDogVVJMLCBjb250ZW50
OiBieXRlcyA9IGIiIiwgaGVhZGVyczogRGljdCA9IHt9CisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMK
KyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKwor
CitjbGFzcyBXZWJTb2NrZXQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBodHRw
OiBIdHRwQ29ubmVjdGlvbiwgc3RyZWFtX2lkOiBpbnQsIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwg
Tm9uZV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaHR0cCA9IGh0dHAKKyAgICAgICAg
c2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtzdHJdID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAg
IHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3VicHJvdG9jb2w6IE9w
dGlvbmFsW3N0cl0gPSBOb25lCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorICAg
ICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlvbih3c3Byb3RvLkNvbm5lY3Rp
b25UeXBlLkNMSUVOVCkKKworICAgIGFzeW5jIGRlZiBjbG9zZShzZWxmLCBjb2RlPTEwMDAsIHJl
YXNvbj0iIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFBlcmZvcm0gdGhlIGNsb3Np
bmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0
LnNlbmQoCisgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29kZT1j
b2RlLCByZWFzb249cmVhc29uKQorICAgICAgICApCisgICAgICAgIHNlbGYuaHR0cC5zZW5kX2Rh
dGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkK
KyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBkZWYgcmVjdihzZWxmKSAtPiBz
dHI6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5
bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBhIG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShtZXNzYWdlLCBzdHIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQo
d3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5o
dHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwgZW5kX3N0
cmVhbT1GYWxzZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBkZWYgaHR0cF9ldmVu
dF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIGZvciBoZWFkZXIs
IHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIi
c2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VicHJv
dG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldC5yZWNlaXZlX2RhdGEoZXZl
bnQuZGF0YSkKKworICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJzb2NrZXQuZXZlbnRz
KCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkK
KworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IHdzcHJvdG8u
ZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCB3c3By
b3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dh
aXQoZXZlbnQuZGF0YSkKKworCitjbGFzcyBIdHRwQ2xpZW50KFF1aWNDb25uZWN0aW9uUHJvdG9j
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6Cisg
ICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYu
cHVzaGVzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5faHR0
cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0
X2V2ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYuX3Jl
cXVlc3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVbSDNFdmVudF1dXSA9
IHt9CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHM6IERpY3RbaW50LCBXZWJTb2NrZXRdID0ge30K
KworICAgICAgICBpZiBzZWxmLl9xdWljLmNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHNbMF0u
c3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9u
KHNlbGYuX3F1aWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDND
b25uZWN0aW9uKHNlbGYuX3F1aWMpCisKKyAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIHVybDogc3Ry
LCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAg
ICAgICAgUGVyZm9ybSBhIEdFVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IGF3YWl0IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IkdF
VCIsIHVybD1VUkwodXJsKSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3lu
YyBkZWYgcG9zdChzZWxmLCB1cmw6IHN0ciwgZGF0YTogYnl0ZXMsIGhlYWRlcnM6IERpY3QgPSB7
fSkgLT4gRGVxdWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIGEgUE9T
VCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3JlcXVl
c3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IlBPU1QiLCB1cmw9VVJMKHVybCks
IGNvbnRlbnQ9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3luYyBk
ZWYgd2Vic29ja2V0KHNlbGYsIHVybDogc3RyLCBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtd
KSAtPiBXZWJTb2NrZXQ6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIGEgV2ViU29ja2V0Lgor
ICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IEh0dHBSZXF1ZXN0KG1ldGhvZD0iQ09OTkVD
VCIsIHVybD1VUkwodXJsKSkKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2Vic29ja2V0ID0gV2ViU29ja2V0KAor
ICAgICAgICAgICAgaHR0cD1zZWxmLl9odHRwLCBzdHJlYW1faWQ9c3RyZWFtX2lkLCB0cmFuc21p
dD1zZWxmLnRyYW5zbWl0CisgICAgICAgICkKKworICAgICAgICBzZWxmLl93ZWJzb2NrZXRzW3N0
cmVhbV9pZF0gPSB3ZWJzb2NrZXQKKworICAgICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiQ09OTkVDVCIpLAorICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1ZXN0LnVybC5hdXRob3JpdHku
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGgu
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnByb3RvY29sIiwgYiJ3ZWJzb2NrZXQiKSwKKyAg
ICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgpKSwKKyAgICAgICAg
ICAgIChiInNlYy13ZWJzb2NrZXQtdmVyc2lvbiIsIGIiMTMiKSwKKyAgICAgICAgXQorICAgICAg
ICBpZiBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwgIiwgIi5qb2luKHN1YnByb3RvY29s
cykuZW5jb2RlKCkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9oZWFk
ZXJzKHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAgICAgICBzZWxm
LnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4gd2Vic29ja2V0CisKKyAgICBkZWYgaHR0cF9l
dmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShldmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2VpdmVkKSk6CisgICAg
ICAgICAgICBzdHJlYW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCBpbiBzZWxmLl9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAgICAjIGh0dHAKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tldmVudC5zdHJlYW1faWRdLmFwcGVu
ZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1fZW5kZWQ6CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5fcmVxdWVzdF93YWl0ZXIucG9wKHN0
cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIuc2V0X3Jlc3VsdChz
ZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkKKworICAgICAgICAgICAgZWxpZiBz
dHJlYW1faWQgaW4gc2VsZi5fd2Vic29ja2V0czoKKyAgICAgICAgICAgICAgICAjIHdlYnNvY2tl
dAorICAgICAgICAgICAgICAgIHdlYnNvY2tldCA9IHNlbGYuX3dlYnNvY2tldHNbc3RyZWFtX2lk
XQorICAgICAgICAgICAgICAgIHdlYnNvY2tldC5odHRwX2V2ZW50X3JlY2VpdmVkKGV2ZW50KQor
CisgICAgICAgICAgICBlbGlmIGV2ZW50LnB1c2hfaWQgaW4gc2VsZi5wdXNoZXM6CisgICAgICAg
ICAgICAgICAgIyBwdXNoCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9p
ZF0uYXBwZW5kKGV2ZW50KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUHVzaFBy
b21pc2VSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXSA9
IGRlcXVlKCkKKyAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdLmFwcGVuZChl
dmVudCkKKworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZl
bnQpIC0+IE5vbmU6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBIVFRQIGxheWVyCisg
ICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaHR0cF9l
dmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAgICAgICAgICAgICAg
c2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKyAgICBhc3luYyBkZWYgX3Jl
cXVlc3Qoc2VsZiwgcmVxdWVzdDogSHR0cFJlcXVlc3QpOgorICAgICAgICBzdHJlYW1faWQgPSBz
ZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBzZWxmLl9o
dHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5t
ZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVy
bC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1
ZXN0LnVybC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
cmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiJ1c2Vy
LWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAg
ICArIFsoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkgZm9yIChrLCB2KSBpbiByZXF1ZXN0LmhlYWRl
cnMuaXRlbXMoKV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2RhdGEoc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LmNvbnRlbnQsIGVuZF9zdHJlYW09VHJ1ZSkK
KworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9y
ZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQo
KQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisKKworYXN5
bmMgZGVmIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgIGNsaWVudDogSHR0cENsaWVudCwgdXJs
OiBzdHIsIGRhdGE6IHN0ciwgaW5jbHVkZTogYm9vbCwgb3V0cHV0X2RpcjogT3B0aW9uYWxbc3Ry
XSwKKykgLT4gTm9uZToKKyAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgIHN0YXJ0ID0gdGltZS50
aW1lKCkKKyAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBodHRwX2V2ZW50cyA9IGF3
YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgdXJsLAorICAgICAgICAgICAgZGF0YT1kYXRh
LmVuY29kZSgpLAorICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAg
ICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisgICAgZWxhcHNlZCA9IHRp
bWUudGltZSgpIC0gc3RhcnQKKworICAgICMgcHJpbnQgc3BlZWQKKyAgICBvY3RldHMgPSAwCisg
ICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIG9jdGV0cyArPSBsZW4oaHR0
cF9ldmVudC5kYXRhKQorICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAiUmVjZWl2ZWQgJWQgYnl0
ZXMgaW4gJS4xZiBzICglLjNmIE1icHMpIgorICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9j
dGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICApCisKKyAgICAjIG91dHB1dCByZXNw
b25zZQorICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dF9wYXRo
ID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3V0cHV0X2Rpciwgb3MucGF0aC5iYXNlbmFt
ZSh1cmxwYXJzZSh1cmwpLnBhdGgpIG9yICJpbmRleC5odG1sIgorICAgICAgICApCisgICAgICAg
IHdpdGggb3BlbihvdXRwdXRfcGF0aCwgIndiIikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGluY2x1ZGU6CisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnMgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYg
aW4gaHR0cF9ldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyAr
PSBrICsgYiI6ICIgKyB2ICsgYiJcclxuIgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXJz
OgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoaGVhZGVycyArIGIi
XHJcbiIpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFS
ZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGh0dHBfZXZl
bnQuZGF0YSkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQ6IFNlc3Npb25UaWNr
ZXQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0
aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAgaXMgcmVjZWl2ZWQu
CisgICAgIiIiCisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIp
CisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vz
c2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0
LCBmcCkKKworCithc3luYyBkZWYgcnVuKAorICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1
cmF0aW9uLAorICAgIHVybHM6IExpc3Rbc3RyXSwKKyAgICBkYXRhOiBzdHIsCisgICAgaW5jbHVk
ZTogYm9vbCwKKyAgICBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorICAgIGxvY2FsX3BvcnQ6
IGludCwKKykgLT4gTm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNl
KHVybHNbMF0pCisgICAgYXNzZXJ0IHBhcnNlZC5zY2hlbWUgaW4gKAorICAgICAgICAiaHR0cHMi
LAorICAgICAgICAid3NzIiwKKyAgICApLCAiT25seSBodHRwczovLyBvciB3c3M6Ly8gVVJMcyBh
cmUgc3VwcG9ydGVkLiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoKKyAgICAgICAgaG9z
dCwgcG9ydF9zdHIgPSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGlu
dChwb3J0X3N0cikKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2VkLm5ldGxvYworICAg
ICAgICBwb3J0ID0gNDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3Qs
CisgICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAg
ICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgbG9jYWxfcG9ydD1sb2NhbF9w
b3J0LAorICAgICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0KEh0dHBDbGllbnQs
IGNsaWVudCkKKworICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICJ3c3MiOgorICAgICAgICAg
ICAgd3MgPSBhd2FpdCBjbGllbnQud2Vic29ja2V0KHVybHNbMF0sIHN1YnByb3RvY29scz1bImNo
YXQiLCAic3VwZXJjaGF0Il0pCisKKyAgICAgICAgICAgICMgc2VuZCBzb21lIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGx5CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gIkhlbGxvIHt9LCBXZWJTb2NrZXQhIi5mb3JtYXQoaSkKKyAgICAg
ICAgICAgICAgICBwcmludCgiPiAiICsgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBhd2FpdCB3
cy5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgd3MucmVj
digpCisgICAgICAgICAgICAgICAgcHJpbnQoIjwgIiArIG1lc3NhZ2UpCisKKyAgICAgICAgICAg
IGF3YWl0IHdzLmNsb3NlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGVyZm9ybSBy
ZXF1ZXN0CisgICAgICAgICAgICBjb3JvcyA9IFsKKyAgICAgICAgICAgICAgICBwZXJmb3JtX2h0
dHBfcmVxdWVzdCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50PWNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlPWluY2x1ZGUsCisgICAgICAgICAgICAgICAgICAgIG91
dHB1dF9kaXI9b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
Zm9yIHVybCBpbiB1cmxzCisgICAgICAgICAgICBdCisgICAgICAgICAgICBhd2FpdCBhc3luY2lv
LmdhdGhlcigqY29yb3MpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBkZWZh
dWx0cyA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorCisgICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBjbGllbnQiKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ1cmwiLCB0eXBlPXN0ciwgbmFyZ3M9Iisi
LCBoZWxwPSJ0aGUgVVJMIHRvIHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBlPXN0ciwgaGVscD0i
bG9hZCBDQSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEiLCB0eXBlPXN0ciwg
aGVscD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVlc3QiCisgICAgKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItaSIsCisgICAgICAgICItLWluY2x1
ZGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJpbmNsdWRl
IHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgaW4gdGhlIG91dHB1dCIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1kYXRhIiwKKyAgICAgICAgdHlwZT1p
bnQsCisgICAgICAgIGhlbHA9ImNvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQgKGRl
ZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfZGF0YSwKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbWF4LXN0cmVhbS1kYXRhIiwKKyAgICAgICAgdHlwZT1pbnQs
CisgICAgICAgIGhlbHA9InBlci1zdHJlYW0gZmxvdyBjb250cm9sIGxpbWl0IChkZWZhdWx0OiAl
ZCkiICUgZGVmYXVsdHMubWF4X3N0cmVhbV9kYXRhLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1pbnNlY3VyZSIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRvIG5vdCB2YWxpZGF0ZSBzZXJ2ZXIg
Y2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxlZ2FjeS1o
dHRwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0idXNlIEhUVFAvMC45IikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgdHlwZT1zdHIsIGhlbHA9
IndyaXRlIGRvd25sb2FkZWQgZmlsZXMgdG8gdGhpcyBkaXJlY3RvcnkiLAorICAgICkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3Ry
LCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNy
ZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0
byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisg
ICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRp
Y2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbG9jYWwtcG9ydCIsIHR5cGU9aW50LCBkZWZhdWx0PTAsIGhl
bHA9ImxvY2FsIHBvcnQgdG8gYmluZCBmb3IgY29ubmVjdGlvbnMiLAorICAgICkKKworICAgIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAg
ICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdl
KXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxv
Z2dpbmcuSU5GTywKKyAgICApCisKKyAgICBpZiBhcmdzLm91dHB1dF9kaXIgaXMgbm90IE5vbmUg
YW5kIG5vdCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0cHV0X2Rpcik6CisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGFyZ3Mub3V0cHV0X2RpcikKKworICAg
ICMgcHJlcGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2NvbHM9SDBfQUxQTiBp
ZiBhcmdzLmxlZ2FjeV9odHRwIGVsc2UgSDNfQUxQTgorICAgICkKKyAgICBpZiBhcmdzLmNhX2Nl
cnRzOgorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhhcmdzLmNh
X2NlcnRzKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24udmVy
aWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5tYXhfZGF0YToKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5tYXhfZGF0YSA9IGFyZ3MubWF4X2RhdGEKKyAgICBpZiBhcmdzLm1heF9z
dHJlYW1fZGF0YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEgPSBhcmdz
Lm1heF9zdHJlYW1fZGF0YQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9n
OgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2Vj
cmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgorICAgICAgICB0cnk6
CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgInJiIikgYXMgZnA6
CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9IHBpY2tsZS5s
b2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxs
KCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgdHJ5OgorICAgICAg
ICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgdXJscz1h
cmdzLnVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWFyZ3MuZGF0YSwKKyAgICAgICAgICAgICAg
ICBpbmNsdWRlPWFyZ3MuaW5jbHVkZSwKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPWFyZ3Mu
b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICBsb2NhbF9wb3J0PWFyZ3MubG9jYWxfcG9ydCwK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZp
Z3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4o
YXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5k
dW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVu
dD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1YjA0
YjAzYzE1NDNmMzYwZDA0Njg4Njk4MzUzNmNlMjVlYWE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKQEAgLTAsMCArMSw0ODQgQEAKK2lt
cG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBq
c29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IGZvcm1hdGRhdGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBV
bmlvbiwgY2FzdAorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8uZXZlbnRzCisKK2lt
cG9ydCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCwgc2VydmUKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBO
LCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBO
LCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZl
ZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBp
bXBvcnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBp
bXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBQcm90b2NvbE5lZ290aWF0ZWQsIFF1aWNFdmVu
dAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyLCBRdWljTG9nZ2Vy
VHJhY2UKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K0FzZ2lBcHBsaWNhdGlvbiA9IENhbGxhYmxlCitIdHRwQ29ubmVjdGlvbiA9IFVuaW9uW0gwQ29u
bmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitTRVJWRVJfTkFNRSA9ICJhaW9xdWljLyIgKyBhaW9x
dWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgSHR0cFJlcXVlc3RIYW5kbGVyOgorICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgYXV0aG9yaXR5OiBi
eXRlcywKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisgICAgICAgIHByb3Rv
Y29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgICAgICBzY29wZTogRGljdCwKKyAgICAg
ICAgc3RyZWFtX2VuZGVkOiBib29sLAorICAgICAgICBzdHJlYW1faWQ6IGludCwKKyAgICAgICAg
dHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuYXV0aG9yaXR5ID0gYXV0aG9yaXR5CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5l
Y3Rpb24KKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYucXVl
dWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5z
Y29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAg
IHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAg
ICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAiaHR0cC5yZXF1ZXN0In0p
CisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4g
Tm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImh0dHAucmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICJib2R5IjogZXZlbnQuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIm1vcmVfYm9keSI6IG5v
dCBldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50
LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAg
ICAgICAgICAgICB7InR5cGUiOiAiaHR0cC5yZXF1ZXN0IiwgImJvZHkiOiBiIiIsICJtb3JlX2Jv
ZHkiOiBGYWxzZX0KKyAgICAgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxm
LCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgYXdhaXQgYXBwbGljYXRp
b24oc2VsZi5zY29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisKKyAgICBhc3luYyBkZWYg
cmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5n
ZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogRGljdCkgLT4gTm9uZToK
KyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnN0YXJ0IjoKKyAg
ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgc3RyKG1lc3NhZ2VbInN0YXR1cyJdKS5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9OQU1FLmVuY29k
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1l
KCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICsgWyhrLCB2KSBmb3IgaywgdiBpbiBtZXNzYWdlWyJoZWFkZXJzIl1dLAorICAgICAg
ICAgICAgKQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5i
b2R5IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9bWVz
c2FnZS5nZXQoImJvZHkiLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09bm90IG1l
c3NhZ2UuZ2V0KCJtb3JlX2JvZHkiLCBGYWxzZSksCisgICAgICAgICAgICApCisgICAgICAgIGVs
aWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnB1c2giIGFuZCBpc2luc3RhbmNl
KAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb24KKyAgICAgICAgKToK
KyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IFsKKyAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzZWxmLmF1dGhvcml0eSksCisgICAgICAg
ICAgICAgICAgKGIiOnBhdGgiLCBtZXNzYWdlWyJwYXRoIl0uZW5jb2RlKCkpLAorICAgICAgICAg
ICAgXSArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJdXQorCisgICAgICAg
ICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcHVzaF9zdHJlYW1faWQgPSBzZWxmLmNvbm5lY3Rpb24uc2VuZF9wdXNoX3Byb21pc2UoCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwgaGVhZGVycz1yZXF1
ZXN0X2hlYWRlcnMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgTm9BdmFp
bGFibGVQdXNoSURFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAg
IyBmYWtlIHJlcXVlc3QKKyAgICAgICAgICAgIGNhc3QoSHR0cFNlcnZlclByb3RvY29sLCBzZWxm
LnByb3RvY29sKS5odHRwX2V2ZW50X3JlY2VpdmVkKAorICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1yZXF1ZXN0X2hlYWRlcnMsIHN0
cmVhbV9lbmRlZD1UcnVlLCBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK2NsYXNzIFdl
YlNvY2tldEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAg
ICAqLAorICAgICAgICBjb25uZWN0aW9uOiBIdHRwQ29ubmVjdGlvbiwKKyAgICAgICAgc2NvcGU6
IERpY3QsCisgICAgICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFuc21pdDogQ2FsbGFi
bGVbW10sIE5vbmVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxz
ZQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAgIHNlbGYuaHR0
cF9ldmVudF9xdWV1ZTogRGVxdWVbRGF0YVJlY2VpdmVkXSA9IGRlcXVlKCkKKyAgICAgICAgc2Vs
Zi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFzeW5jaW8uUXVldWUoKQorICAgICAgICBz
ZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKKyAg
ICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYud2Vic29ja2V0OiBP
cHRpb25hbFt3c3Byb3RvLkNvbm5lY3Rpb25dID0gTm9uZQorCisgICAgZGVmIGh0dHBfZXZlbnRf
cmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAg
ICAgIGlmIHNlbGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
d2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAgICAgICAgICAgZm9y
IHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBkZWxheSBldmVudCBwcm9jZXNzaW5nIHVudGlsIHdlIGdl
dCBgd2Vic29ja2V0LmFjY2VwdGAKKyAgICAgICAgICAgICAgICAjIGZyb20gdGhlIEFTR0kgYXBw
bGljYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcXVldWUuYXBwZW5kKGV2
ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogd3Nw
cm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQs
IHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0
X25vd2FpdCh7InR5cGUiOiAid2Vic29ja2V0LnJlY2VpdmUiLCAidGV4dCI6IGV2ZW50LmRhdGF9
KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLk1lc3NhZ2Up
OgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQu
cmVjZWl2ZSIsICJieXRlcyI6IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgICAgICBzZWxm
LnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5kaXNjb25uZWN0IiwgImNvZGUi
OiBldmVudC5jb2RlfSkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxmLCBhcHA6IEFzZ2lB
cHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlw
ZSI6ICJ3ZWJzb2NrZXQuY29ubmVjdCJ9KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF3
YWl0IGFwcGxpY2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2VsZi5zZW5kKQorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAg
ICAgICAgIGF3YWl0IHNlbGYuc2VuZCh7InR5cGUiOiAid2Vic29ja2V0LmNsb3NlIiwgImNvZGUi
OiAxMDAwfSkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6CisgICAgICAg
IHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxm
LCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBkYXRhID0gYiIiCisgICAgICAgIGVu
ZF9zdHJlYW0gPSBGYWxzZQorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gIndlYnNvY2tl
dC5hY2NlcHQiOgorICAgICAgICAgICAgc3VicHJvdG9jb2wgPSBtZXNzYWdlLmdldCgic3VicHJv
dG9jb2wiKQorCisgICAgICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlv
bih3c3Byb3RvLkNvbm5lY3Rpb25UeXBlLlNFUlZFUikKKworICAgICAgICAgICAgaGVhZGVycyA9
IFsKKyAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIi
ZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisg
ICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwg
c3VicHJvdG9jb2wuZW5jb2RlKCkpKQorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRf
aGVhZGVycyhzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAg
ICAgICAgICAgIyBjb25zdW1lIGJhY2tsb2cKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuaHR0cF9l
dmVudF9xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoc2Vs
Zi5odHRwX2V2ZW50X3F1ZXVlLnBvcGxlZnQoKSkKKworICAgICAgICBlbGlmIG1lc3NhZ2VbInR5
cGUiXSA9PSAid2Vic29ja2V0LmNsb3NlIjoKKyAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5k
KAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29k
ZT1tZXNzYWdlWyJjb2RlIl0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9WyhiIjpzdGF0dXMi
LCBiIjQwMyIpXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVuZF9zdHJlYW0gPSBU
cnVlCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuc2VuZCI6Cisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmdldCgidGV4dCIpIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAgICAgICAgICAgICAgICB3
c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShkYXRhPW1lc3NhZ2VbInRleHQiXSkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBlbGlmIG1lc3NhZ2UuZ2V0KCJieXRlcyIpIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAg
ICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5NZXNzYWdlKGRhdGE9bWVzc2FnZVsiYnl0ZXMi
XSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHNl
bGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYu
c3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbQorICAgICAgICAgICAg
KQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVl
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK0hhbmRsZXIgPSBVbmlvbltIdHRwUmVxdWVz
dEhhbmRsZXIsIFdlYlNvY2tldEhhbmRsZXJdCisKKworY2xhc3MgSHR0cFNlcnZlclByb3RvY29s
KFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBzZWxmLl9oYW5kbGVyczogRGljdFtpbnQsIEhhbmRsZXJdID0ge30KKyAg
ICAgICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorCisgICAg
ZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50LnN0
cmVhbV9pZCBub3QgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAgICBhdXRob3JpdHkgPSBO
b25lCisgICAgICAgICAgICBoZWFkZXJzID0gW10KKyAgICAgICAgICAgIGh0dHBfdmVyc2lvbiA9
ICIwLjkiIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDBDb25uZWN0aW9uKSBlbHNlICIzIgor
ICAgICAgICAgICAgcmF3X3BhdGggPSBiIiIKKyAgICAgICAgICAgIG1ldGhvZCA9ICIiCisgICAg
ICAgICAgICBwcm90b2NvbCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGlu
IGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOmF1dGhvcml0
eSI6CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IHZhbHVlCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnMuYXBwZW5kKChiImhvc3QiLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAg
ZWxpZiBoZWFkZXIgPT0gYiI6bWV0aG9kIjoKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0g
dmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjpwYXRoIjoK
KyAgICAgICAgICAgICAgICAgICAgcmF3X3BhdGggPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVs
aWYgaGVhZGVyID09IGIiOnByb3RvY29sIjoKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wg
PSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVyIGFuZCBub3QgaGVh
ZGVyLnN0YXJ0c3dpdGgoYiI6Iik6CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5k
KChoZWFkZXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgYiI/IiBpbiByYXdfcGF0aDoKKyAg
ICAgICAgICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aC5zcGxpdChi
Ij8iLCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXRo
X2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aCwgYiIiCisgICAgICAgICAgICBwYXRoID0g
cGF0aF9ieXRlcy5kZWNvZGUoKQorCisgICAgICAgICAgICAjIEZJWE1FOiBhZGQgYSBwdWJsaWMg
QVBJIHRvIHJldHJpZXZlIHBlZXIgYWRkcmVzcworICAgICAgICAgICAgY2xpZW50X2FkZHIgPSBz
ZWxmLl9odHRwLl9xdWljLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIKKyAgICAgICAgICAgIGNsaWVu
dCA9IChjbGllbnRfYWRkclswXSwgY2xpZW50X2FkZHJbMV0pCisKKyAgICAgICAgICAgIGhhbmRs
ZXI6IEhhbmRsZXIKKyAgICAgICAgICAgIHNjb3BlOiBEaWN0CisgICAgICAgICAgICBpZiBtZXRo
b2QgPT0gIkNPTk5FQ1QiIGFuZCBwcm90b2NvbCA9PSAid2Vic29ja2V0IjoKKyAgICAgICAgICAg
ICAgICBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGhl
YWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVh
ZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJwcm90b2NvbHMgPSBbeC5zdHJpcCgpIGZvciB4IGluIHZhbHVlLmRlY29kZSgpLnNwbGl0
KCIsIildCisgICAgICAgICAgICAgICAgc2NvcGUgPSB7CisgICAgICAgICAgICAgICAgICAgICJj
bGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgInBh
dGgiOiBwYXRoLAorICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3Ry
aW5nLAorICAgICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgInJvb3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAgICAgICAic2NoZW1l
IjogIndzcyIsCisgICAgICAgICAgICAgICAgICAgICJzdWJwcm90b2NvbHMiOiBzdWJwcm90b2Nv
bHMsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIndlYnNvY2tldCIsCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBXZWJTb2NrZXRIYW5kbGVyKAorICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAgICAg
ICAgIHNjb3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uczogRGljdFtzdHIsIERpY3RdID0ge30KKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHNlbGYuX2h0dHAsIEgzQ29ubmVjdGlvbik6CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnNbImh0dHAucmVzcG9uc2UucHVzaCJdID0ge30KKyAgICAgICAgICAgICAgICBzY29wZSA9IHsK
KyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVuc2lvbnMiOiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVy
cyI6IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNpb24iOiBodHRwX3Zl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2QsCisgICAgICAgICAg
ICAgICAgICAgICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X3N0cmlu
ZyI6IHF1ZXJ5X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19wYXRoIjogcmF3X3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgInNjaGVtZSI6ICJodHRwcyIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImh0
dHAiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gSHR0cFJl
cXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHk9YXV0aG9yaXR5LAor
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAg
ICAgICAgIHByb3RvY29sPXNlbGYsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlPXNjb3BlLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9ZXZlbnQuc3RyZWFtX2VuZGVkLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0gPSBoYW5kbGVyCisgICAgICAg
ICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaGFuZGxlci5ydW5fYXNnaShhcHBsaWNhdGlvbikp
CisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5jZShldmVudCwgKERhdGFSZWNl
aXZlZCwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIGFuZCBldmVudC5zdHJlYW1faWQg
aW4gc2VsZi5faGFuZGxlcnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxm
Ll9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdCisgICAgICAgICAgICBoYW5kbGVyLmh0dHBfZXZl
bnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBQ
cm90b2NvbE5lZ290aWF0ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5z
dGFydHN3aXRoKCJoMy0iKToKKyAgICAgICAgICAgICAgICBzZWxmLl9odHRwID0gSDNDb25uZWN0
aW9uKHNlbGYuX3F1aWMpCisgICAgICAgICAgICBlbGlmIGV2ZW50LmFscG5fcHJvdG9jb2wuc3Rh
cnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVjdGlv
bihzZWxmLl9xdWljKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFncmFtRnJh
bWVSZWNlaXZlZCk6CisgICAgICAgICAgICBpZiBldmVudC5kYXRhID09IGIicXVhY2siOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShiInF1YWNrLWFjayIp
CisKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYg
c2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNl
bGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBf
ZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6
CisgICAgIiIiCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lvbiB0aWNrZXRz
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYudGlj
a2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBsYWJlbDog
Ynl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitjbGFzcyBRdWljTG9nZ2VyQ3VzdG9tKFF1aWNM
b2dnZXIpOgorICAgICIiIgorICAgIEN1c3RvbSBRVUlDIGxvZ2dlciB3aGljaCB3cml0ZXMgb25l
IHRyYWNlIHBlciBmaWxlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg6
IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJRVUlDIGxvZyBvdXRwdXQgZGlyZWN0b3J5ICclcycg
ZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIGRlZiBlbmRfdHJhY2Uoc2VsZiwgdHJhY2U6IFF1
aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKKyAgICAgICAgdHJhY2VfZGljdCA9IHRyYWNlLnRvX2Rp
Y3QoKQorICAgICAgICB0cmFjZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgc2Vs
Zi5wYXRoLCB0cmFjZV9kaWN0WyJjb21tb25fZmllbGRzIl1bIk9EQ0lEIl0gKyAiLnFsb2ciCisg
ICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX3BhdGgsICJ3IikgYXMgbG9nZ2VyX2Zw
OgorICAgICAgICAgICAganNvbi5kdW1wKHsicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwgInRy
YWNlcyI6IFt0cmFjZV9kaWN0XX0sIGxvZ2dlcl9mcCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLnJl
bW92ZSh0cmFjZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJRVUlDIHNlcnZlciIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImFwcCIsCisgICAgICAgIHR5cGU9c3RyLAor
ICAgICAgICBuYXJncz0iPyIsCisgICAgICAgIGRlZmF1bHQ9ImRlbW86YXBwIiwKKyAgICAgICAg
aGVscD0idGhlIEFTR0kgYXBwbGljYXRpb24gYXMgPG1vZHVsZT46PGF0dHJpYnV0ZT4iLAorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWMiLAorICAgICAgICAiLS1j
ZXJ0aWZpY2F0ZSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAor
ICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVk
IGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1ob3N0
IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Ijo6IiwKKyAgICAgICAgaGVs
cD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tcG9ydCIsCisgICAgICAg
IHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhlbHA9Imxpc3RlbiBv
biB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0tcHJpdmF0ZS1rZXki
LAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVs
cD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
c2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3Jl
dHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVs
cD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAgICAgIi0tc3RhdGVsZXNz
LXJldHJ5IiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0ic2Vu
ZCBhIHN0YXRlbGVzcyByZXRyeSBmb3IgbmV3IGNvbm5lY3Rpb25zIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKyAgICBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAg
ICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2Fn
ZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBs
b2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBpbXBvcnQgQVNHSSBhcHBsaWNhdGlvbgorICAg
IG1vZHVsZV9zdHIsIGF0dHJfc3RyID0gYXJncy5hcHAuc3BsaXQoIjoiLCBtYXhzcGxpdD0xKQor
ICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9zdHIpCisgICAgYXBw
bGljYXRpb24gPSBnZXRhdHRyKG1vZHVsZSwgYXR0cl9zdHIpCisKKyAgICAjIGNyZWF0ZSBRVUlD
IGxvZ2dlcgorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIHF1aWNfbG9nZ2VyID0gUXVp
Y0xvZ2dlckN1c3RvbShhcmdzLnF1aWNfbG9nKQorICAgIGVsc2U6CisgICAgICAgIHF1aWNfbG9n
Z2VyID0gTm9uZQorCisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0
c19sb2c6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2cs
ICJhIikKKyAgICBlbHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29s
cz1IM19BTFBOICsgSDBfQUxQTiArIFsic2lkdWNrIl0sCisgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisgICAgICAgIHF1aWNf
bG9nZ2VyPXF1aWNfbG9nZ2VyLAorICAgICAgICBzZWNyZXRzX2xvZ19maWxlPXNlY3JldHNfbG9n
X2ZpbGUsCisgICAgKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5CisgICAg
Y29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0ZSwgYXJncy5wcml2
YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisKKyAg
ICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxsKCkKKyAgICBs
b29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAorICAgICAgICAgICAg
YXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBTZXJ2ZXJQcm90b2NvbCwKKyAgICAgICAgICAg
IHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAgICAgICAgICAgIHNl
c3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAgICAgICAgIHN0YXRl
bGVzc19yZXRyeT1hcmdzLnN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgKQorICAgICkKKyAgICB0
cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0
dHB4X2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMyOTk5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKQEAgLTAs
MCArMSwyMTMgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29u
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUK
K2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUs
IERpY3QsIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCitmcm9tIGh0
dHB4IGltcG9ydCBBc3luY0NsaWVudAorZnJvbSBodHRweC5jb25maWcgaW1wb3J0IFRpbWVvdXQK
K2Zyb20gaHR0cHguZGlzcGF0Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRjaGVyCitmcm9tIGh0
dHB4Lm1vZGVscyBpbXBvcnQgUmVxdWVzdCwgUmVzcG9uc2UKKworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQor
CisKK2NsYXNzIEgzRGlzcGF0Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29sLCBBc3luY0Rpc3Bh
dGNoZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9odHRw
ID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRz
OiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5fcmVxdWVzdF93
YWl0ZXI6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KKwor
ICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRpbWVvdXQ6IFRpbWVv
dXQgPSBOb25lKSAtPiBSZXNwb25zZToKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKworICAgICAgICAjIHByZXBhcmUgcmVxdWVz
dAorICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBzdHIocmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2RlKCkpLAor
ICAgICAgICAgICAgXQorICAgICAgICAgICAgKyBbCisgICAgICAgICAgICAgICAgKGsuZW5jb2Rl
KCksIHYuZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiByZXF1ZXN0Lmhl
YWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIGsgbm90IGluICgiY29ubmVjdGlvbiIs
ICJob3N0IikKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5z
ZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJlYWQoKSwgZW5kX3N0
cmVhbT1UcnVlKQorCisgICAgICAgICMgdHJhbnNtaXQgcmVxdWVzdAorICAgICAgICB3YWl0ZXIg
PSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50
c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJl
YW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgICAgICMgcHJv
Y2VzcyByZXNwb25zZQorICAgICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRdID0gYXdhaXQgYXN5
bmNpby5zaGllbGQod2FpdGVyKQorICAgICAgICBjb250ZW50ID0gYiIiCisgICAgICAgIGhlYWRl
cnMgPSBbXQorICAgICAgICBzdGF0dXNfY29kZSA9IE5vbmUKKyAgICAgICAgZm9yIGV2ZW50IGlu
IGV2ZW50czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXJbMDoxXSAhPSBiIjoiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUuZGVjb2RlKCkpKQor
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgKz0gZXZlbnQuZGF0YQorCisgICAgICAgIHJldHVybiBSZXNwb25z
ZSgKKyAgICAgICAgICAgIHN0YXR1c19jb2RlPXN0YXR1c19jb2RlLAorICAgICAgICAgICAgaHR0
cF92ZXJzaW9uPSJIVFRQLzMiLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAg
ICAgICAgY29udGVudD1jb250ZW50LAorICAgICAgICAgICAgcmVxdWVzdD1yZXF1ZXN0LAorICAg
ICAgICApCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVu
dCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFS
ZWNlaXZlZCkpOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAg
ICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQp
CisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQp
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVx
dWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZl
ZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhl
IEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAg
ICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitk
ZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICIiIgorICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tl
dAorICAgIGlzIHJlY2VpdmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lv
biB0aWNrZXQgcmVjZWl2ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAg
IHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAg
IHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9u
OiBRdWljQ29uZmlndXJhdGlvbiwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4gTm9uZToKKyAgICAj
IHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKyAgICBhc3NlcnQgcGFyc2Vk
LnNjaGVtZSA9PSAiaHR0cHMiLCAiT25seSBodHRwczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgor
ICAgIGlmICI6IiBpbiBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBh
cnNlZC5uZXRsb2Muc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQorICAg
IGVsc2U6CisgICAgICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHBvcnQgPSA0NDMK
KworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAgICAgICAgcG9ydCwK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9SDNEaXNwYXRjaGVyLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVf
c2Vzc2lvbl90aWNrZXQsCisgICAgKSBhcyBkaXNwYXRjaDoKKyAgICAgICAgY2xpZW50ID0gQXN5
bmNDbGllbnQoZGlzcGF0Y2g9Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3BhdGNoKSkKKworICAg
ICAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNs
aWVudC5wb3N0KAorICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWRh
dGEuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisK
KyAgICAgICAgZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICAjIHByaW50
IHNwZWVkCisgICAgICAgIG9jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50KQorICAgICAgICBs
b2dnZXIuaW5mbygKKyAgICAgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUu
M2YgTWJwcykiCisgICAgICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9jdGV0cyAqIDggLyBl
bGFwc2VkIC8gMTAwMDAwMCkKKyAgICAgICAgKQorCisgICAgICAgICMgcHJpbnQgcmVzcG9uc2UK
KyAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVycy5pdGVtcygpOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsgdmFsdWUgKyAiXHJc
biIpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlxyXG4iKQorICAgICAgICBzeXMuc3Rkb3V0
LmJ1ZmZlci53cml0ZShyZXNwb25zZS5jb250ZW50KQorICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZl
ci5mbHVzaCgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRoZSBVUkwgdG8gcXVl
cnkgKG11c3QgYmUgSFRUUFMpIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGlu
IGEgUE9TVCByZXF1ZXN0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8g
YSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3Ry
LAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJl
c2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXMiLAor
ICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBo
ZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmls
ZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJv
c2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9n
Z2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFt
ZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBp
ZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBwcmVwYXJl
IGNvbmZpZ3VyYXRpb24KKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4pCisgICAgaWYgYXJncy5xdWljX2xv
ZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQorICAg
IGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2df
ZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90
aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25f
dGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Np
b25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9s
b29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFyZ3MudXJsLCBkYXRh
PWFyZ3MuZGF0YSkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJn
cy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5kdW1w
KGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmFkMjBiNjZiNGI3NTEzZWNl
YTZiYTMzZDM3NGE0OTVlNGU1MmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2ludGVyb3AucHkKQEAgLTAsMCArMSw1MzIgQEAKKyMKKyMgISEhIFdBUk5JTkcgISEh
CisjCisjIFRoaXMgZXhhbXBsZSB1c2VzIHNvbWUgcHJpdmF0ZSBBUElzLgorIworCitpbXBvcnQg
YXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3Ms
IGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEZsYWcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bCwgY2FzdAorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCB1cmxsaWIzCitmcm9tIGh0dHAzX2Ns
aWVudCBpbXBvcnQgSHR0cENsaWVudAorCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgY29u
bmVjdAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4KK2Zyb20gYWlv
cXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlv
cXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNo
UHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBR
dWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9n
Z2VyCisKKworY2xhc3MgUmVzdWx0KEZsYWcpOgorICAgIFYgPSAweDAwMDAwMQorICAgIEggPSAw
eDAwMDAwMgorICAgIEQgPSAweDAwMDAwNAorICAgIEMgPSAweDAwMDAwOAorICAgIFIgPSAweDAw
MDAxMAorICAgIFogPSAweDAwMDAyMAorICAgIFMgPSAweDAwMDA0MAorICAgIFEgPSAweDAwMDA4
MAorCisgICAgTSA9IDB4MDAwMTAwCisgICAgQiA9IDB4MDAwMjAwCisgICAgQSA9IDB4MDAwNDAw
CisgICAgVSA9IDB4MDAwODAwCisgICAgUCA9IDB4MDAxMDAwCisgICAgRSA9IDB4MDAyMDAwCisg
ICAgTCA9IDB4MDA0MDAwCisgICAgVCA9IDB4MDA4MDAwCisKKyAgICB0aHJlZSA9IDB4MDEwMDAw
CisgICAgZCA9IDB4MDIwMDAwCisgICAgcCA9IDB4MDQwMDAwCisKKyAgICBkZWYgX19zdHJfXyhz
ZWxmKToKKyAgICAgICAgZmxhZ3MgPSBzb3J0ZWQoCisgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgbGFtYmRhIHg6IGdldGF0dHIoUmVzdWx0LCB4KSwKKyAgICAgICAgICAgICAgICBm
aWx0ZXIobGFtYmRhIHg6IG5vdCB4LnN0YXJ0c3dpdGgoIl8iKSwgZGlyKFJlc3VsdCkpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogeC52YWx1ZSwKKyAgICAgICAg
KQorICAgICAgICByZXN1bHRfc3RyID0gIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6Cisg
ICAgICAgICAgICBpZiBzZWxmICYgZmxhZzoKKyAgICAgICAgICAgICAgICByZXN1bHRfc3RyICs9
IGZsYWcubmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHRfc3Ry
ICs9ICItIgorICAgICAgICByZXR1cm4gcmVzdWx0X3N0cgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFNlcnZlcjoKKyAgICBuYW1lOiBzdHIKKyAgICBob3N0OiBzdHIKKyAgICBwb3J0OiBpbnQgPSA0
NDMzCisgICAgaHR0cDM6IGJvb2wgPSBUcnVlCisgICAgcmV0cnlfcG9ydDogT3B0aW9uYWxbaW50
XSA9IDQ0MzQKKyAgICBwYXRoOiBzdHIgPSAiLyIKKyAgICBwdXNoX3BhdGg6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgcmVzdWx0OiBSZXN1bHQgPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGFt
YmRhOiBSZXN1bHQoMCkpCisgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgc3RydWN0dXJlZF9sb2dnaW5nOiBib29sID0gRmFsc2UKKyAgICB0aHJv
dWdocHV0X2ZpbGVfc3VmZml4OiBzdHIgPSAiIgorICAgIHZlcmlmeV9tb2RlOiBPcHRpb25hbFtp
bnRdID0gTm9uZQorCisKK1NFUlZFUlMgPSBbCisgICAgU2VydmVyKCJha2FtYWlxdWljIiwgImll
dGYuYWthcXVpYy5jb20iLCBwb3J0PTQ0MywgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCisg
ICAgU2VydmVyKAorICAgICAgICAiYWlvcXVpYyIsICJxdWljLmFpb3J0Yy5vcmciLCBwb3J0PTQ0
MywgcHVzaF9wYXRoPSIvIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAgICApLAorICAgIFNl
cnZlcigiYXRzIiwgInF1aWMub2dyZS5jb20iKSwKKyAgICBTZXJ2ZXIoImY1IiwgImY1cXVpYy5j
b20iLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZlcigiaGFza2VsbCIsICJtZXcub3JnIiwg
cmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImdxdWljIiwgInF1aWMucm9ja3MiLCByZXRy
eV9wb3J0PU5vbmUpLAorICAgIFNlcnZlcigibHNxdWljIiwgImh0dHAzLXRlc3QubGl0ZXNwZWVk
dGVjaC5jb20iLCBwdXNoX3BhdGg9Ii8yMDA/cHVzaD0vMTAwIiksCisgICAgU2VydmVyKAorICAg
ICAgICAibXNxdWljIiwKKyAgICAgICAgInF1aWMud2VzdHVzLmNsb3VkYXBwLmF6dXJlLmNvbSIs
CisgICAgICAgIHBvcnQ9NDQzMywKKyAgICAgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ9NDQz
MywKKyAgICAgICAgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUsCisgICAgICAgIHRocm91Z2hwdXRf
ZmlsZV9zdWZmaXg9Ii50eHQiLAorICAgICAgICB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FLAor
ICAgICksCisgICAgU2VydmVyKAorICAgICAgICAibXZmc3QiLCAiZmIubXZmc3QubmV0IiwgcG9y
dD00NDMsIHB1c2hfcGF0aD0iL3B1c2giLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9VHJ1ZQorICAgICks
CisgICAgU2VydmVyKCJuZ3RjcDIiLCAibmdodHRwMi5vcmciLCBwdXNoX3BhdGg9Ii8/cHVzaD0v
MTAwIiksCisgICAgU2VydmVyKCJuZ3hfcXVpYyIsICJjbG91ZGZsYXJlLXF1aWMuY29tIiwgcG9y
dD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInBhbmRvcmEiLCAicGFuZG9yYS5j
bS5pbi50dW0uZGUiLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAgICBTZXJ2ZXIoInBp
Y29xdWljIiwgInRlc3QucHJpdmF0ZW9jdG9wdXMuY29tIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRy
dWUpLAorICAgIFNlcnZlcigicXVhbnQiLCAicXVhbnQuZWdnZXJ0Lm9yZyIsIGh0dHAzPUZhbHNl
KSwKKyAgICBTZXJ2ZXIoInF1aWMtZ28iLCAicXVpYy5zZWVtYW5uLmlvIiwgcG9ydD00NDMsIHJl
dHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInF1aWNoZSIsICJxdWljLnRlY2giLCBwb3J0PTg0
NDMsIHJldHJ5X3BvcnQ9ODQ0NCksCisgICAgU2VydmVyKCJxdWljbHkiLCAicXVpYy5leGFtcDFl
Lm5ldCIpLAorICAgIFNlcnZlcigicXVpbm4iLCAicmFsaXRoLmNvbSIpLAorXQorCisKK2FzeW5j
IGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb24oc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRp
b246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICAjIGZvcmNlIHZlcnNpb24gbmVnb3RpYXRpb24K
KyAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0
QSkKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInZlcnNpb25f
bmVnb3RpYXRpb24iCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1
bHQgfD0gUmVzdWx0LlYKKworCithc3luYyBkZWYgdGVzdF9oYW5kc2hha2VfYW5kX2Nsb3NlKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5
bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0
IHByb3RvY29sLnBpbmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ICisgICAg
c2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQworCisKK2FzeW5jIGRlZiB0ZXN0X3N0YXRlbGVzc19y
ZXRyeShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgor
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5yZXRy
eV9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInJldHJ5Igor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5T
CisKKworYXN5bmMgZGVmIHRlc3RfcXVhbnR1bV9yZWFkaW5lc3Moc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBjb25maWd1cmF0aW9uLnF1YW50
dW1fcmVhZGluZXNzX3Rlc3QgPSBUcnVlCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAg
ICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorICAgICAg
ICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5RCisKKworYXN5bmMgZGVmIHRlc3RfaHR0cF8wKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgaWYg
c2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBjb25maWd1cmF0aW9u
LmFscG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAg
ICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAgICBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBw
cm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0CisgICAgICAgIGV2ZW50
cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZv
cm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICApCisg
ICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ECisKKworYXN5bmMgZGVm
IHRlc3RfaHR0cF8zKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJh
dGlvbik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1IdHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2Fz
dChIdHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0
CisgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRw
czovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRo
KQorICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0s
IEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5E
CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC50aHJlZQorCisgICAgICAgICMg
cGVyZm9ybSBtb3JlIEhUVFAgcmVxdWVzdHMgdG8gdXNlIFFQQUNLIGR5bmFtaWMgdGFibGVzCisg
ICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJv
dG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZvcm1hdChzZXJ2
ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgor
ICAgICAgICAgICAgaHR0cCA9IGNhc3QoSDNDb25uZWN0aW9uLCBwcm90b2NvbC5faHR0cCkKKyAg
ICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICAgICAi
UVBBQ0sgZGVjb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAgICAgICAgaHR0cC5f
ZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5
dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fbG9n
Z2VyLmluZm8oCisgICAgICAgICAgICAgICAgIlFQQUNLIGVuY29kZXIgYnl0ZXMgUlggJWQgVFgg
JWQiLAorICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQsCisgICAg
ICAgICAgICAgICAgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50LAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNfcmVjZWl2
ZWQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZGVjb2Rlcl9ieXRlc19zZW50CisgICAgICAg
ICAgICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAg
ICBhbmQgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50CisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LmQKKworICAgICAgICAjIGNoZWNrIHB1c2gg
c3VwcG9ydAorICAgICAgICBpZiBzZXJ2ZXIucHVzaF9wYXRoIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgcHJvdG9jb2wucHVzaGVzLmNsZWFyKCkKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29s
LmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucHVzaF9wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjUpCisgICAgICAgICAgICBmb3IgcHVzaF9pZCwg
ZXZlbnRzIGluIHByb3RvY29sLnB1c2hlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICAgICAgbGVuKGV2ZW50cykgPj0gMworICAgICAgICAgICAgICAgICAg
ICBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIFB1c2hQcm9taXNlUmVjZWl2ZWQpCisgICAgICAg
ICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1sxXSwgSGVhZGVyc1JlY2VpdmVkKQor
ICAgICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMl0sIERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5fcXVp
Yy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAiUHVzaCBwcm9taXNlICVk
IGZvciAlcyByZWNlaXZlZCAoc3RhdHVzICVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGljdChldmVudHNbMF0uaGVhZGVycylb
YiI6cGF0aCJdLmRlY29kZSgiYXNjaWkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludChk
aWN0KGV2ZW50c1sxXS5oZWFkZXJzKVtiIjpzdGF0dXMiXSksCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5wCisKKwor
YXN5bmMgZGVmIHRlc3Rfc2Vzc2lvbl9yZXN1bXB0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgcG9ydCA9IHNlcnZlci5zZXNzaW9uX3Jl
c3VtcHRpb25fcG9ydCBvciBzZXJ2ZXIucG9ydAorICAgIHNhdmVkX3RpY2tldCA9IE5vbmUKKwor
ICAgIGRlZiBzZXNzaW9uX3RpY2tldF9oYW5kbGVyKHRpY2tldCk6CisgICAgICAgIG5vbmxvY2Fs
IHNhdmVkX3RpY2tldAorICAgICAgICBzYXZlZF90aWNrZXQgPSB0aWNrZXQKKworICAgICMgY29u
bmVjdCBhIGZpcnN0IHRpbWUsIHJlY2VpdmUgYSB0aWNrZXQKKyAgICBhc3luYyB3aXRoIGNvbm5l
Y3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vz
c2lvbl90aWNrZXRfaGFuZGxlciwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBhd2FpdCBw
cm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHNvbWUgc2VydmVycyBkb24ndCBzZW5kIHRoZSB0
aWNrZXQgaW1tZWRpYXRlbHkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCisgICAg
IyBjb25uZWN0IGEgc2Vjb25kIHRpbWUsIHdpdGggdGhlIHRpY2tldAorICAgIGlmIHNhdmVkX3Rp
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9
IHNhdmVkX3RpY2tldAorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2VydmVyLmhvc3QsIHBv
cnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikgYXMgcHJvdG9jb2w6CisgICAgICAgICAg
ICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHdh
cyByZXN1bWVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMuc2Vzc2lvbl9yZXN1
bWVkOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlIKKworICAgICAg
ICAgICAgIyBjaGVjayBlYXJseSBkYXRhIHdhcyBhY2NlcHRlZAorICAgICAgICAgICAgaWYgcHJv
dG9jb2wuX3F1aWMudGxzLmVhcmx5X2RhdGFfYWNjZXB0ZWQ6CisgICAgICAgICAgICAgICAgc2Vy
dmVyLnJlc3VsdCB8PSBSZXN1bHQuWgorCisKK2FzeW5jIGRlZiB0ZXN0X2tleV91cGRhdGUoc2Vy
dmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVz
ZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAg
IyByZXF1ZXN0IGtleSB1cGRhdGUKKyAgICAgICAgcHJvdG9jb2wucmVxdWVzdF9rZXlfdXBkYXRl
KCkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2Nv
bC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5VCisKKworYXN5bmMg
ZGVmIHRlc3RfbWlncmF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9z
dCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJv
dG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3Rv
Y29sLnBpbmcoKQorCisgICAgICAgICMgY2hhbmdlIGNvbm5lY3Rpb24gSUQgYW5kIHJlcGxhY2Ug
dHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgcHJvdG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0IGxvb3AuY3JlYXRl
X2RhdGFncmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2FkZHI9KCI6OiIsIDAp
KQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29s
LnBpbmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGRjaWRzID0gc2V0KCkKKyAg
ICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBdWzBd
WyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9
PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2Vp
dmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICIxUlRUIgor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBkY2lkcy5hZGQoZGF0YVsiaGVhZGVyIl1b
ImRjaWQiXSkKKyAgICAgICAgaWYgbGVuKGRjaWRzKSA9PSAyOgorICAgICAgICAgICAgc2VydmVy
LnJlc3VsdCB8PSBSZXN1bHQuTQorCisKK2FzeW5jIGRlZiB0ZXN0X3JlYmluZGluZyhzZXJ2ZXI6
IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdp
dGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNv
bWUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHJl
cGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQuY2xvc2UoKQorICAg
ICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1iZGE6IHByb3RvY29s
LCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYwor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9
IFJlc3VsdC5CCisKKworYXN5bmMgZGVmIHRlc3Rfc3Bpbl9iaXQoc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
CisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Cisg
ICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZwor
ICAgICAgICBzcGluX2JpdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBl
dmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAg
ICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYg
Y2F0ZWdvcnkgPT0gImNvbm5lY3Rpdml0eSIgYW5kIGV2ZW50ID09ICJzcGluX2JpdF91cGRhdGVk
IjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdHMuYWRkKGRhdGFbInN0YXRlIl0pCisgICAgICAg
IGlmIGxlbihzcGluX2JpdHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5QCisKKworYXN5bmMgZGVmIHRlc3RfdGhyb3VnaHB1dChzZXJ2ZXI6IFNlcnZlciwgY29u
ZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGZhaWx1cmVzID0gMAorCisgICAg
Zm9yIHNpemUgaW4gWzUwMDAwMDAsIDEwMDAwMDAwXToKKyAgICAgICAgcHJpbnQoIlRlc3Rpbmcg
JWQgYnl0ZXMgZG93bmxvYWQiICUgc2l6ZSkKKyAgICAgICAgcGF0aCA9ICIvJWQlcyIgJSAoc2l6
ZSwgc2VydmVyLnRocm91Z2hwdXRfZmlsZV9zdWZmaXgpCisKKyAgICAgICAgIyBwZXJmb3JtIEhU
VFAgcmVxdWVzdCBvdmVyIFRDUAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAg
IHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovLyIgKyBzZXJ2ZXIuaG9zdCArIHBhdGgs
IHZlcmlmeT1GYWxzZSkKKyAgICAgICAgdGNwX29jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50
KQorICAgICAgICB0Y3BfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgYXNz
ZXJ0IHRjcF9vY3RldHMgPT0gc2l6ZSwgIkhUVFAvVENQIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2gi
CisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFFVSUMKKyAgICAgICAgaWYg
c2VydmVyLmh0dHAzOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9
IEgzX0FMUE4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9w
cm90b2NvbHMgPSBIMF9BTFBOCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgICAg
ICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICAgICApIGFzIHBy
b3RvY29sOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29s
KQorCisgICAgICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAg
ICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5w
b3J0LCBwYXRoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcXVpY19lbGFwc2VkID0gdGlt
ZS50aW1lKCkgLSBzdGFydAorICAgICAgICAgICAgcXVpY19vY3RldHMgPSAwCisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIHF1
aWNfb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgICAgIGFzc2VydCBxdWljX29j
dGV0cyA9PSBzaXplLCAiSFRUUC9RVUlDIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2giCisKKyAgICAg
ICAgcHJpbnQoIiAtIEhUVFAvVENQICBjb21wbGV0ZWQgaW4gJS4zZiBzIiAlIHRjcF9lbGFwc2Vk
KQorICAgICAgICBwcmludCgiIC0gSFRUUC9RVUlDIGNvbXBsZXRlZCBpbiAlLjNmIHMiICUgcXVp
Y19lbGFwc2VkKQorCisgICAgICAgIGlmIHF1aWNfZWxhcHNlZCA+IDEuMSAqIHRjcF9lbGFwc2Vk
OgorICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQorICAgICAgICAgICAgcHJpbnQoIiA9PiBGQUlM
IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCIgPT4gUEFTUyIpCisKKyAgICBp
ZiBmYWlsdXJlcyA9PSAwOgorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5UCisKKwor
ZGVmIHByaW50X3Jlc3VsdChzZXJ2ZXI6IFNlcnZlcikgLT4gTm9uZToKKyAgICByZXN1bHQgPSBz
dHIoc2VydmVyLnJlc3VsdCkucmVwbGFjZSgidGhyZWUiLCAiMyIpCisgICAgcmVzdWx0ID0gcmVz
dWx0WzA6OF0gKyAiICIgKyByZXN1bHRbODoxNl0gKyAiICIgKyByZXN1bHRbMTY6XQorICAgIHBy
aW50KCIlcyVzJXMiICUgKHNlcnZlci5uYW1lLCAiICIgKiAoMjAgLSBsZW4oc2VydmVyLm5hbWUp
KSwgcmVzdWx0KSkKKworCithc3luYyBkZWYgcnVuKHNlcnZlcnMsIHRlc3RzLCBxdWljX2xvZz1G
YWxzZSwgc2VjcmV0c19sb2dfZmlsZT1Ob25lKSAtPiBOb25lOgorICAgIGZvciBzZXJ2ZXIgaW4g
c2VydmVyczoKKyAgICAgICAgaWYgc2VydmVyLnN0cnVjdHVyZWRfbG9nZ2luZzoKKyAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkwKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgdGVz
dF9mdW5jIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQoIlxuPT09ICVzICVzID09PVxuIiAl
IChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBR
dWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1IM19BTFBO
ICsgSDBfQUxQTiwKKyAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksCisgICAgICAgICAgICAgICAgc2VjcmV0c19s
b2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlPXNl
cnZlci52ZXJpZnlfbW9kZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHRlc3RfbmFt
ZSA9PSAidGVzdF90aHJvdWdocHV0IjoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gNjAKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDEwCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0X2ZvcigKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdF9mdW5jKHNlcnZlciwgY29uZmlndXJhdGlvbiksIHRpbWVvdXQ9dGlt
ZW91dAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICAgICAgICAgIHByaW50KGV4YykKKworICAgICAgICAgICAgaWYgcXVpY19s
b2c6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIlcy0lcy5xbG9nIiAlIChzZXJ2ZXIubmFt
ZSwgdGVzdF9uYW1lKSwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAgICAgIGpz
b24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBp
bmRlbnQ9NCkKKworICAgICAgICBwcmludCgiIikKKyAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZl
cikKKworICAgICMgcHJpbnQgc3VtbWFyeQorICAgIGlmIGxlbihzZXJ2ZXJzKSA+IDE6CisgICAg
ICAgIHByaW50KCJTVU1NQVJZIikKKyAgICAgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAg
ICAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZlcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJR
VUlDIGludGVyb3AgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LXEiLAorICAgICAgICAiLS1xdWljLWxvZyIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
CisgICAgICAgIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQi
LAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1zZXJ2ZXIiLCB0
eXBlPXN0ciwgaGVscD0ib25seSBydW4gYWdhaW5zdCB0aGUgc3BlY2lmaWVkIHNlcnZlci4iCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGVzdCIsIHR5cGU9c3RyLCBoZWxwPSJv
bmx5IHJ1biB0aGUgc3BlY2lmZWQgdGVzdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIs
CisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVz
aGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZl
cmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVs
bmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJV
RyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBvcGVu
IFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIHNlY3JldHNf
bG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBlbHNlOgorICAgICAg
ICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAgIyBkZXRlcm1pbmUgd2hhdCB0byBydW4K
KyAgICBzZXJ2ZXJzID0gU0VSVkVSUworICAgIHRlc3RzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6
IHhbMF0uc3RhcnRzd2l0aCgidGVzdF8iKSwgZ2xvYmFscygpLml0ZW1zKCkpKQorICAgIGlmIGFy
Z3Muc2VydmVyOgorICAgICAgICBzZXJ2ZXJzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHgubmFt
ZSA9PSBhcmdzLnNlcnZlciwgc2VydmVycykpCisgICAgaWYgYXJncy50ZXN0OgorICAgICAgICB0
ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdID09IGFyZ3MudGVzdCwgdGVzdHMpKQor
CisgICAgIyBkaXNhYmxlIHJlcXVlc3RzIFNTTCB3YXJuaW5ncworICAgIHVybGxpYjMuZGlzYWJs
ZV93YXJuaW5ncyh1cmxsaWIzLmV4Y2VwdGlvbnMuSW5zZWN1cmVSZXF1ZXN0V2FybmluZykKKwor
ICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb29wLnJ1bl91bnRpbF9j
b21wbGV0ZSgKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2VydmVycz1zZXJ2ZXJzLAorICAg
ICAgICAgICAgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBxdWljX2xvZz1hcmdzLnF1aWNfbG9n
LAorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAg
ICApCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGll
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjZhNWI3NmUwZTcwMTgyODI2N2MzMzNmMzM4NDc2ZDViMGU3MjJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKQEAgLTAsMCArMSwx
MDAgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29uCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHNzbAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsLCBjYXN0
CisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9x
dWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9t
IGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNlaXZlZCwgUXVpY0V2
ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgU2lkdWNrQ2xpZW50KFF1
aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5fYWNrX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9uZV1dID0gTm9u
ZQorCisgICAgYXN5bmMgZGVmIHF1YWNrKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBz
ZWxmLl9hY2tfd2FpdGVyIGlzIE5vbmUsICJPbmx5IG9uZSBxdWFjayBhdCBhIHRpbWUuIgorICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjayIpCisKKyAgICAgICAg
d2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgc2VsZi5fYWNrX3dh
aXRlciA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4g
YXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2
ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fYWNr
X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFncmFtRnJhbWVSZWNlaXZlZCkgYW5kIGV2ZW50LmRhdGEgPT0gYiJxdWFjay1hY2siOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Fja193YWl0ZXIKKyAgICAgICAgICAgICAgICBz
ZWxmLl9hY2tfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0
KE5vbmUpCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwgaG9zdDogc3RyLCBwb3J0OiBpbnQpIC0+IE5vbmU6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0
KAorICAgICAgICBob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNyZWF0
ZV9wcm90b2NvbD1TaWR1Y2tDbGllbnQKKyAgICApIGFzIGNsaWVudDoKKyAgICAgICAgY2xpZW50
ID0gY2FzdChTaWR1Y2tDbGllbnQsIGNsaWVudCkKKyAgICAgICAgbG9nZ2VyLmluZm8oInNlbmRp
bmcgcXVhY2siKQorICAgICAgICBhd2FpdCBjbGllbnQucXVhY2soKQorICAgICAgICBsb2dnZXIu
aW5mbygicmVjZWl2ZWQgcXVhY2stYWNrIikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJTaURV
Q0sgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiaG9zdCIsIHR5
cGU9c3RyLCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBob3N0IG5hbWUgb3IgSVAgYWRkcmVzcyIK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicG9ydCIsIHR5cGU9aW50LCBoZWxwPSJU
aGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2VydmVyIGNlcnRpZmlj
YXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0t
cXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBR
TE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1s
IiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAg
aGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5Igor
ICAgICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJh
c2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShu
YW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3Mu
dmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0g
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsic2lkdWNrIl0sIGlz
X2NsaWVudD1UcnVlLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02NTUzNgorICAgICkKKyAgICBp
ZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlID0gc3Ns
LkNFUlRfTk9ORQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
cXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAg
ICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19s
b2csICJhIikKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6
CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgcnVuKGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgaG9zdD1hcmdzLmhvc3QsIHBvcnQ9YXJncy5wb3J0KQor
ICAgICAgICApCisgICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAi
dyIpIGFzIGxvZ2dlcl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4NTQ4N2U4NDA4
MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCIvPgorICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+CisgICAgICAgIDxwPgorICAg
ICAgICAgICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu
Y29tL2Fpb3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCisgICAgICAgICAgICBhIFFVSUMgYW5k
IEhUVFAvMyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KKyAgICAgICAgPC9wPgor
eyUgaWYgcmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9CisgICAgICAgIDxw
PgorICAgICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRoaXMgcGFnZSB1c2lu
ZyBIVFRQLzMhCisgICAgICAgIDwvcD4KK3slIGVuZGlmICV9CisgICAgICAgIDxoMj5BdmFpbGFi
bGUgZW5kcG9pbnRzPC9oMj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+
R0VUIC88L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgorICAgICAgICAgICAgPGxp
PjxzdHJvbmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5dGVzIG9mIHBsYWlu
IHRleHQ8L2xpPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNobzwvc3Ryb25nPiBy
ZXR1cm5zIHRoZSByZXF1ZXN0IGRhdGE8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgIDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdlYlNvY2tldCBlY2hv
IHNlcnZpY2UuCisgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8ZW0+OnByb3RvY29s
PC9lbT4gcHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4KKyAgICAgICAgICAg
IDwvbGk+CisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBocmVmPSIvaHR0cGJp
bi8iPmh0dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9s
b2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MDk5ZjY3ZGNhMjJjNTdmYmM5MWQ4ZDE5YTBkNmE4OGYzYzFiOWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwKQEAg
LTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFpb3F1aWMgLSBsb2dz
PC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGUuY3Nz
Ii8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+UUxPRyBmaWxlczwvaDE+
CisgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9ncyI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAg
IDx0aD5uYW1lPC90aD4KKyAgICAgICAgICAgIDx0aD5kYXRlIChVVEMpPC90aD4KKyAgICAgICAg
ICAgIDx0aD5zaXplPC90aD4KKyAgICAgICAgPC90cj4KK3slIGZvciBsb2cgaW4gbG9ncyAlfQor
ICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgorICAgICAgICAgICAg
ICAgIDxhIGhyZWY9Int7IGxvZy5maWxlX3VybCB9fSI+e3sgbG9nLm5hbWUgfX08L2E+CisgICAg
ICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLnF2aXNfdXJsIH19Ij5bcXZpc108L2E+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJkYXRlIj57eyBsb2cuZGF0ZSB9
fTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPnt7IGxvZy5zaXplIH19PC90ZD4K
KyAgICAgICAgPC90cj4KK3slIGVuZGZvciAlfQorICAgICAgICA8L3RhYmxlPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3czYy1pbXBv
cnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2YmI5ZDM2NGQ3Y2RjMDJmMjY0M2UzZDdiZGQ3NDgyMWJmNDQ2
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0
ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjhmMjIwNGFkNDFlNDhmZjFkZjRiNWI0NzMxNjFkZGU2ZTgyN2ZjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9l
eGFtcGxlcy9odHRwM19jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2Vy
dmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19j
bGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzMzYTM5Nzg3
NGM2NTNjOTFhMjBhMGI5MjU2NzNkNWM0OWM3Yjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CkBAIC0wLDAgKzEsMyBAQAorY3J5cHRvZ3JhcGh5
CitzcGhpbnhfYXV0b2RvY190eXBlaGludHMKK3NwaGlueGNvbnRyaWItYXN5bmNpbwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVlMjJlNzRiZDIx
YTk0NjdjZjE2NmQ5NDA0YzYyNjlhMDlkNWEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxNyBAQAorVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQt
b3BlbnNzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NGRlZDcyYzE3MjRiYjAwNDMyMzI4YzVlMjI5YmE3Mzc2MmM1
ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNz
bApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2Rlc3RkaXI9JDEKK2Nh
Y2hlZGlyPSQxLiRQWVRIT05fQVJDSAorCitmb3IgZCBpbiBvcGVuc3NsICRkZXN0ZGlyOyBkbwor
ICAgIGlmIFsgLWUgJGQgXTsgdGhlbgorICAgICAgICBybSAtcmYgJGQKKyAgICBmaQorZG9uZQor
CitpZiBbICEgLWUgJGNhY2hlZGlyIF07IHRoZW4KKyAgICAjIGJ1aWxkIG9wZW5zc2wKKyAgICBt
a2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uv
b3BlbnNzbC0xLjEuMWYudGFyLmd6IHwgdGFyIHh6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25l
bnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICAuL2NvbmZpZyBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cworICAgIG1ha2UKKworICAgIG1rZGlyICRjYWNoZWRpcgorICAgIG1rZGlyICRjYWNo
ZWRpci9saWIKKyAgICBjcCAtUiBpbmNsdWRlICRjYWNoZWRpcgorICAgIGNwIGxpYmNyeXB0by5h
IGxpYnNzbC5hICRjYWNoZWRpci9saWIKK2ZpCisKK2NwIC1SICRjYWNoZWRpciAkZGVzdGRpcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTAwNzlkZGY4
MzIwZjc1NGJkOTQyMjE1N2U2NTQzOTQ2ZDYwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKQEAgLTAsMCArMSwzOSBAQAorc2V0IGRl
c3RkaXI9JTEKK3NldCBjYWNoZWRpcj0lMS4lUFlUSE9OX0FSQ0glCisKK2ZvciAlJWQgaW4gKG9w
ZW5zc2wgJWRlc3RkaXIlKSBkbyAoCisgICAgaWYgZXhpc3QgJSVkICgKKyAgICAgICAgcm1kaXIg
L3MgL3EgJSVkCisgICAgKQorKQorCitpZiAlUFlUSE9OX0FSQ0glID09IDY0ICgKKyAgIHNldCBP
UEVOU1NMX0NPTkZJRz1WQy1XSU42NEEKKyAgIHNldCBWQ19BUkNIPXg2NAorKSBlbHNlICgKKyAg
IHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU4zMgorICAgc2V0IFZDX0FSQ0g9eDg2CispCisKK2Nh
bGwgIkM6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxF
bnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiAlVkNfQVJDSCUKK1NF
VCBQQVRIPSVQQVRIJTtDOlxQcm9ncmFtIEZpbGVzXE5BU00KKworaWYgbm90IGV4aXN0ICVjYWNo
ZWRpciUgKAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0dHBzOi8vd3d3Lm9wZW5z
c2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogLW8gb3BlbnNzbC50YXIuZ3oKKyAg
ICB0YXIgeHpmIG9wZW5zc2wudGFyLmd6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25lbnRzIDEK
KyAgICBjZCBvcGVuc3NsCisKKyAgICBwZXJsIENvbmZpZ3VyZSBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cyAlT1BFTlNTTF9DT05GSUclCisgICAgbm1ha2UKKworICAgIG1rZGlyICVjYWNoZWRp
ciUKKyAgICBta2RpciAlY2FjaGVkaXIlXGluY2x1ZGUKKyAgICBta2RpciAlY2FjaGVkaXIlXGxp
YgorICAgIHhjb3B5IGluY2x1ZGUgJWNhY2hlZGlyJVxpbmNsdWRlXCAvRQorICAgIGNvcHkgbGli
Y3J5cHRvLmxpYiAlY2FjaGVkaXIlXGxpYlwKKyAgICBjb3B5IGxpYnNzbC5saWIgJWNhY2hlZGly
JVxsaWJcCispCisKK21rZGlyICVkZXN0ZGlyJQoreGNvcHkgJWNhY2hlZGlyJSAlZGVzdGRpciUg
L0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3ZjkzOWQ0Mjhm
NzEwNjk0MzQ3NTMzN2FiZDgyODBkZjBmMTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9i
dWlsZC1vcGVuc3NsLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMDI1YWQwZjczM2IzOGJiOTRmOGJi
OGViMDQ3ODVkYTNiNGY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5j
ZmcKQEAgLTAsMCArMSwyMSBAQAorW2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9IGFpb3F1aWMKKwor
W2ZsYWtlOF0KK2lnbm9yZT1FMjAzLFc1MDMKK21heC1saW5lLWxlbmd0aD0xNTAKKworW2lzb3J0
XQorZGVmYXVsdF9zZWN0aW9uID0gVEhJUkRQQVJUWQoraW5jbHVkZV90cmFpbGluZ19jb21tYSA9
IFRydWUKK2tub3duX2ZpcnN0X3BhcnR5ID0gYWlvcXVpYworbGluZV9sZW5ndGggPSA4OAorbXVs
dGlfbGluZV9vdXRwdXQgPSAzCisKK1tteXB5XQorZGlzYWxsb3dfdW50eXBlZF9jYWxscyA9IFRy
dWUKK2Rpc2FsbG93X3VudHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK2lnbm9yZV9taXNzaW5nX2lt
cG9ydHMgPSBUcnVlCitzdHJpY3Rfb3B0aW9uYWwgPSBGYWxzZQord2Fybl9yZWR1bmRhbnRfY2Fz
dHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzVl
YTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc2V0dXAucHkKQEAgLTAsMCArMSw2OSBAQAoraW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKKworaW1wb3J0IHNldHVwdG9vbHMKKworcm9vdF9kaXIgPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworYWJvdXQgPSB7fQorYWJvdXRfZmlsZSA9
IG9zLnBhdGguam9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFib3V0LnB5IikKK3dp
dGggb3BlbihhYm91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICBleGVjKGZw
LnJlYWQoKSwgYWJvdXQpCisKK3JlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAi
UkVBRE1FLnJzdCIpCit3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpIGFz
IGY6CisgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCisKK2lmIHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCisgICAgbGlicmFyaWVzID0g
WyJsaWJjcnlwdG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIsICJ1c2VyMzIiLCAi
d3MyXzMyIl0KK2Vsc2U6CisgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyItc3RkPWM5OSJdCisg
ICAgbGlicmFyaWVzID0gWyJjcnlwdG8iXQorCitzZXR1cHRvb2xzLnNldHVwKAorICAgIG5hbWU9
YWJvdXRbIl9fdGl0bGVfXyJdLAorICAgIHZlcnNpb249YWJvdXRbIl9fdmVyc2lvbl9fIl0sCisg
ICAgZGVzY3JpcHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCisgICAgbG9uZ19kZXNjcmlwdGlv
bj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD1hYm91dFsiX191cmlfXyJdLAorICAgIGF1dGhv
cj1hYm91dFsiX19hdXRob3JfXyJdLAorICAgIGF1dGhvcl9lbWFpbD1hYm91dFsiX19lbWFpbF9f
Il0sCisgICAgbGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKKyAgICBpbmNsdWRlX3BhY2th
Z2VfZGF0YT1UcnVlLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRldmVsb3BtZW50IFN0
YXR1cyA6OiA0IC0gQmV0YSIsCisgICAgICAgICJFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1l
bnQiLAorICAgICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAg
ICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisgICAgICAgICJPcGVy
YXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42
IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAorICAg
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIsCisgICAgICAgICJU
b3BpYyA6OiBJbnRlcm5ldCA6OiBXV1cvSFRUUCIsCisgICAgXSwKKyAgICBleHRfbW9kdWxlcz1b
CisgICAgICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAgICAgImFpb3F1aWMuX2J1
ZmZlciIsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdz
LAorICAgICAgICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIuYyJdLAorICAgICAg
ICApLAorICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAgICAgICJhaW9xdWlj
Ll9jcnlwdG8iLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVf
YXJncywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBzb3Vy
Y2VzPVsic3JjL2Fpb3F1aWMvX2NyeXB0by5jIl0sCisgICAgICAgICksCisgICAgXSwKKyAgICBw
YWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKKyAgICBwYWNrYWdlX2RhdGE9eyJhaW9xdWljIjogWyJw
eS50eXBlZCIsICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKKyAgICBwYWNrYWdlcz1b
ImFpb3F1aWMiLCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAiYWlvcXVpYy5oMyIs
ICJhaW9xdWljLnF1aWMiXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgImNlcnRp
ZmkiLAorICAgICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCisgICAgICAgICdkYXRhY2xhc3Nl
czsgcHl0aG9uX3ZlcnNpb24gPCAiMy43IicsCisgICAgICAgICJweWxzcXBhY2sgPj0gMC4zLjMs
IDwgMC40LjAiLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDRhY2ViZWVmODNlYTQxODliZmFlNGNhOWYwODBkMjNkODc3YThiNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQpAQCAtMCww
ICsxLDMgQEAKKyMgZmxha2U4OiBub3FhCisKK2Zyb20gLmFib3V0IGltcG9ydCBfX3ZlcnNpb25f
XwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzRkYjgxNzU5MGJl
OGQ3MzZiMzI2NDZkNGNmZjQxYzlmNjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKQEAgLTAsMCArMSw0NDAgQEAKKyNkZWZpbmUgUFlfU1NJ
WkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
KyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2J1ZmZlciIKKworc3RhdGljIFB5T2JqZWN0
ICpCdWZmZXJSZWFkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlcldyaXRlRXJyb3I7CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDhfdCAqYmFzZTsK
KyAgICB1aW50OF90ICplbmQ7CisgICAgdWludDhfdCAqcG9zOworfSBCdWZmZXJPYmplY3Q7CisK
KyNkZWZpbmUgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKSBcCisgICAgaWYgKGxlbiA8IDAg
fHwgc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3Ry
aW5nKEJ1ZmZlclJlYWRFcnJvciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOyBcCisgICAgICAgIHJl
dHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCBs
ZW4pIFwKKyAgICBpZiAoc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKEJ1ZmZlcldyaXRlRXJyb3IsICJXcml0ZSBvdXQgb2YgYm91bmRzIik7
IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKK3N0YXRpYyBpbnQKK0J1ZmZlcl9p
bml0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqa3dsaXN0W10gPSB7ImNhcGFjaXR5IiwgImRhdGEiLCBOVUxM
fTsKKyAgICBpbnQgY2FwYWNpdHkgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEg
PSBOVUxMOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4gPSAwOworCisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGl5IyIsIChjaGFyKiopa3dsaXN0
LCAmY2FwYWNpdHksICZkYXRhLCAmZGF0YV9sZW4pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmJhc2UgPSBtYWxsb2MoZGF0YV9s
ZW4pOworICAgICAgICBzZWxmLT5lbmQgPSBzZWxmLT5iYXNlICsgZGF0YV9sZW47CisgICAgICAg
IG1lbWNweShzZWxmLT5iYXNlLCBkYXRhLCBkYXRhX2xlbik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhjYXBhY2l0eSk7CisgICAgICAgIHNlbGYtPmVuZCA9IHNl
bGYtPmJhc2UgKyBjYXBhY2l0eTsKKyAgICB9CisgICAgc2VsZi0+cG9zID0gc2VsZi0+YmFzZTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0J1ZmZlcl9kZWFsbG9jKEJ1ZmZlck9i
amVjdCAqc2VsZikKK3sKKyAgICBmcmVlKHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMgUHlPYmpl
Y3QgKgorQnVmZmVyX2RhdGFfc2xpY2UoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn
cykKK3sKKyAgICBpbnQgc3RhcnQsIHN0b3A7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFy
Z3MsICJpaSIsICZzdGFydCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChzdGFydCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0YXJ0ID4gc2VsZi0+ZW5kIHx8CisgICAgICAg
IHN0b3AgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdG9wID4gc2VsZi0+ZW5kIHx8CisgICAgICAgIHN0
b3AgPCBzdGFydCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAi
UmVhZCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAg
IHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikoc2VsZi0+YmFz
ZSArIHN0YXJ0KSwgKHN0b3AgLSBzdGFydCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVm
ZmVyX2VvZihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChz
ZWxmLT5wb3MgPT0gc2VsZi0+ZW5kKQorICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBQeV9S
RVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF9ieXRlcyhC
dWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmxlbikpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKTsKKworICAgIFB5T2JqZWN0
ICpvID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+cG9zLCBs
ZW4pOworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgcmV0dXJuIG87Cit9CisKK3N0YXRpYyBQ
eU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50OChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDEpCisKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21VbnNpZ25lZExvbmcoCisgICAgICAgICh1aW50OF90KSgqKHNlbGYtPnBvcysr
KSkKKyAgICApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDE2KEJ1
ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9CT1VO
RFMoc2VsZiwgMikKKworICAgIHVpbnQxNl90IHZhbHVlID0gKHVpbnQxNl90KSgqKHNlbGYtPnBv
cykpIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyAr
IDEpKTsKKyAgICBzZWxmLT5wb3MgKz0gMjsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25l
ZExvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDMy
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9C
T1VORFMoc2VsZiwgNCkKKworICAgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYt
PnBvcykpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5w
b3MgKyAxKSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxm
LT5wb3MgKyAzKSk7CisgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9t
VW5zaWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxs
X3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNL
X1JFQURfQk9VTkRTKHNlbGYsIDgpCisKKyAgICB1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdCko
KihzZWxmLT5wb3MpKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCko
KihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDYpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1
aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7CisgICAgc2VsZi0+cG9zICs9IDg7CisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9i
amVjdCAqCitCdWZmZXJfcHVsbF91aW50X3ZhcihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAgIENIRUNLX1JFQURfQk9VTkRTKHNl
bGYsIDEpCisgICAgc3dpdGNoICgqKHNlbGYtPnBvcykgPj4gNikgeworICAgIGNhc2UgMDoKKyAg
ICAgICAgdmFsdWUgPSAqKHNlbGYtPnBvcysrKSAmIDB4M0Y7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMikKKyAgICAgICAgdmFs
dWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDggfAorICAgICAgICAgICAg
ICAgICh1aW50MTZfdCkoKihzZWxmLT5wb3MgKyAxKSk7CisgICAgICAgIHNlbGYtPnBvcyArPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIENIRUNLX1JFQURfQk9VTkRT
KHNlbGYsIDQpCisgICAgICAgIHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYtPnBvcykgJiAweDNG
KSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDEpKSA8
PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA4
IHwKKyAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMykpOworICAgICAg
ICBzZWxmLT5wb3MgKz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Q0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKyAgICAgICAgdmFsdWUgPSAodWludDY0X3QpKCoo
c2VsZi0+cG9zKSAmIDB4M0YpIDw8IDU2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2Vs
Zi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+
cG9zICsgMykpIDw8IDMyIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9z
ICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsg
NSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNikp
IDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7Cisg
ICAgICAgIHNlbGYtPnBvcyArPSA4OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVj
dCAqCitCdWZmZXJfcHVzaF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlfc3NpemVfdCBkYXRh
X2xlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjIiwgJmRhdGEsICZkYXRh
X2xlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNl
bGYsIGRhdGFfbGVuKQorCisgICAgbWVtY3B5KHNlbGYtPnBvcywgZGF0YSwgZGF0YV9sZW4pOwor
ICAgIHNlbGYtPnBvcyArPSBkYXRhX2xlbjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3Rh
dGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX3VpbnQ4KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlP
YmplY3QgKmFyZ3MpCit7CisgICAgdWludDhfdCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgIkIiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENI
RUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAxKQorCisgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsK
KyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNo
X3VpbnQxNihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQx
Nl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSCIsICZ2YWx1ZSkp
CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDIp
CisKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysr
KSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgor
QnVmZmVyX3B1c2hfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7
CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJ
IiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVDS19XUklURV9CT1VO
RFMoc2VsZiwgNCkKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAgKihz
ZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVl
ID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7
Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50NjQoQnVmZmVyT2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICooc2VsZi0+cG9zKysp
ID0gKHZhbHVlID4+IDU2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0OCk7Cisg
ICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDMyKTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05P
TkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50X3ZhcihCdWZmZXJP
YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAg
IGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgaWYgKHZhbHVlIDw9IDB4M0YpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVf
Qk9VTkRTKHNlbGYsIDEpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgICAg
IFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGKSB7CisgICAg
ICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAyKQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA4KSB8IDB4NDA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7Cisg
ICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGRkZG
RikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAgICAgICAgKihzZWxm
LT5wb3MrKykgPSAodmFsdWUgPj4gMjQpIHwgMHg4MDsKKyAgICAgICAgKihzZWxmLT5wb3MrKykg
PSAodmFsdWUgPj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7
CisgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkYpIHsKKyAgICAgICAg
Q0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDU2KSB8IDB4QzA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQ4
KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAzMik7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDI0KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAg
ICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnRlZ2VyIGlzIHRvbyBiaWcg
Zm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3NlZWsoQnVmZmVyT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9zOworICAgIGlmICghUHlBcmdfUGFy
c2VUdXBsZShhcmdzLCAiaSIsICZwb3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChwb3MgPCAwIHx8IHNlbGYtPmJhc2UgKyBwb3MgPiBzZWxmLT5lbmQpIHsKKyAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlNlZWsgb3V0IG9mIGJvdW5kcyIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlICsg
cG9zOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVy
X3RlbGwoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQnVmZmVyX21ldGhvZHNbXSA9IHsKKyAgICB7ImRhdGFfc2xpY2UiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX2RhdGFfc2xpY2UsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsiZW9m
IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9lb2YsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicHVs
bF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF9ieXRlcywgTUVUSF9WQVJBUkdTLCAi
UHVsbCBieXRlcy4ifSwKKyAgICB7InB1bGxfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1
bGxfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1bGwgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4i
fSwKKyAgICB7InB1bGxfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQxNiwg
TUVUSF9WQVJBUkdTLCAiUHVsbCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVsbF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDMyLCBNRVRIX1ZBUkFS
R1MsICJQdWxsIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnQ2
NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1bGwg
YSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludF92YXIiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSBRVUlD
IHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF9ieXRlcyIs
IChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF9ieXRlcywgTUVUSF9WQVJBUkdTLCAiUHVzaCBieXRl
cy4ifSwKKyAgICB7InB1c2hfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDgs
IE1FVEhfVkFSQVJHUywgIlB1c2ggYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7
InB1c2hfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQxNiwgTUVUSF9WQVJB
UkdTLCAiUHVzaCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50
MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDMyLCBNRVRIX1ZBUkFSR1MsICJQdXNo
IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnQ2NCIsIChQeUNG
dW5jdGlvbilCdWZmZXJfcHVzaF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSA2NC1iaXQg
dW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfdWludF92YXIiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3B1c2hfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSBRVUlDIHZhcmlhYmxl
LWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilC
dWZmZXJfc2VlaywgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9u
KUJ1ZmZlcl90ZWxsLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRp
YyBQeU9iamVjdCoKK0J1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIoQnVmZmVyT2JqZWN0KiBzZWxmLCB2
b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5lbmQg
LSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVyX2RhdGFfZ2V0dGVy
KEJ1ZmZlck9iamVjdCogc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUJ5dGVz
X0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5iYXNlLCBzZWxmLT5wb3MgLSBz
ZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIEJ1ZmZlcl9nZXRzZXRbXSA9IHsK
KyAgICB7ImNhcGFjaXR5IiwgKGdldHRlcikgQnVmZmVyX2NhcGFjaXR5X2dldHRlciwgTlVMTCwg
IiIsIE5VTEwgfSwKKyAgICB7ImRhdGEiLCAoZ2V0dGVyKSBCdWZmZXJfZGF0YV9nZXR0ZXIsIE5V
TEwsICIiLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJ1
ZmZlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9E
VUxFX05BTUUgIi5CdWZmZXIiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVv
ZihCdWZmZXJPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAg
KGRlc3RydWN0b3IpQnVmZmVyX2RlYWxsb2MsICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5j
ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21h
cHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9o
YXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Nh
bGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRy
byAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0
dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNf
YnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBf
ZmxhZ3MgKi8KKyAgICAiQnVmZmVyIG9iamVjdHMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9k
b2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2
ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Ns
ZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmlj
aGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJ1ZmZlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQnVmZmVyX2dldHNldCwgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJ1ZmZlcl9pbml0LCAg
ICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVE
ZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICBNT0RVTEVf
TkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICAiQSBmYXN0ZXIg
YnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5
SW5pdF9fYnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1
bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQnVmZmVyUmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQnVmZmVyUmVhZEVycm9yIiwgUHlFeGNfVmFsdWVFcnJvciwgTlVMTCk7CisgICAg
UHlfSU5DUkVGKEJ1ZmZlclJlYWRFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJC
dWZmZXJSZWFkRXJyb3IiLCBCdWZmZXJSZWFkRXJyb3IpOworCisgICAgQnVmZmVyV3JpdGVFcnJv
ciA9IFB5RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkJ1ZmZlcldyaXRlRXJyb3IiLCBQ
eUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVyV3JpdGVFcnJvcik7
CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCdWZmZXJXcml0ZUVycm9yIiwgQnVmZmVyV3Jp
dGVFcnJvcik7CisKKyAgICBCdWZmZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkJ1ZmZlclR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgUHlfSU5DUkVGKCZCdWZmZXJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3Qo
bSwgIkJ1ZmZlciIsIChQeU9iamVjdCAqKSZCdWZmZXJUeXBlKTsKKworICAgIHJldHVybiBtOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTQzY2NhM2E1
MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKQEAgLTAsMCArMSwyNyBAQAorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCisKK2NsYXNzIEJ1ZmZlclJlYWRFcnJvcihWYWx1ZUVycm9yKTog
Li4uCitjbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4KKworY2xhc3MgQnVm
ZmVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9uYWxbaW50XSA9IDAs
IGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0
YShzZWxmKSAtPiBieXRlczogLi4uCisgICAgZGVmIGRhdGFfc2xpY2Uoc2VsZiwgc3RhcnQ6IGlu
dCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW9mKHNlbGYpIC0+IGJvb2w6IC4u
LgorICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgdGVs
bChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYsIGxlbmd0aDogaW50
KSAtPiBieXRlczogLi4uCisgICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4gaW50OiAuLi4KKyAg
ICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50MzIo
c2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50NjQoc2VsZikgLT4gaW50OiAuLi4K
KyAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdXNoX2J5
dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDgo
c2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDE2KHNlbGYs
IHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQzMihzZWxmLCB2OiBp
bnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2OiBpbnQpIC0+IE5v
bmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6
IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxNTU0ZDRiMjEz
Y2QwN2ZjZWRmOGEzOTMwNGNkNjIwMDQ0ZjE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKQEAgLTAsMCArMSw0NTUgQEAKKyNkZWZpbmUgUFlf
U1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9l
cnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FICJh
aW9xdWljLl9jcnlwdG8iCisKKyNkZWZpbmUgQUVBRF9LRVlfTEVOR1RIX01BWCAzMgorI2RlZmlu
ZSBBRUFEX05PTkNFX0xFTkdUSCAxMgorI2RlZmluZSBBRUFEX1RBR19MRU5HVEggMTYKKworI2Rl
ZmluZSBQQUNLRVRfTEVOR1RIX01BWCAxNTAwCisjZGVmaW5lIFBBQ0tFVF9OVU1CRVJfTEVOR1RI
X01BWCA0CisjZGVmaW5lIFNBTVBMRV9MRU5HVEggMTYKKworI2RlZmluZSBDSEVDS19SRVNVTFQo
ZXhwcikgXAorICAgIGlmICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7
IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3BlblNTTCBjYWxsIGZh
aWxlZCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNL
X1JFU1VMVF9DVE9SKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisgICAgICAgIEVSUl9j
bGVhcl9lcnJvcigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9w
ZW5TU0wgY2FsbCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKK3N0
YXRpYyBQeU9iamVjdCAqQ3J5cHRvRXJyb3I7CisKKy8qIEFFQUQgKi8KKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAqZGVjcnlwdF9jdHg7
CisgICAgRVZQX0NJUEhFUl9DVFggKmVuY3J5cHRfY3R4OworICAgIHVuc2lnbmVkIGNoYXIgYnVm
ZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGtleVtBRUFEX0tFWV9M
RU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGl2W0FFQURfTk9OQ0VfTEVOR1RIXTsKKyAg
ICB1bnNpZ25lZCBjaGFyIG5vbmNlW0FFQURfTk9OQ0VfTEVOR1RIXTsKK30gQUVBRE9iamVjdDsK
Kworc3RhdGljIEVWUF9DSVBIRVJfQ1RYICoKK2NyZWF0ZV9jdHgoY29uc3QgRVZQX0NJUEhFUiAq
Y2lwaGVyLCBpbnQga2V5X2xlbmd0aCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBFVlBfQ0lQSEVS
X0NUWCAqY3R4OworICAgIGludCByZXM7CisKKyAgICBjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXco
KTsKKyAgICBDSEVDS19SRVNVTFQoY3R4ICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlcklu
aXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIG9wZXJhdGlvbik7CisgICAgQ0hF
Q0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlf
bGVuZ3RoKGN0eCwga2V5X2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX0lWTEVO
LCBBRUFEX05PTkNFX0xFTkdUSCwgTlVMTCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsK
KworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbnQKK0FFQURfaW5pdChBRUFET2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBj
aGFyICpjaXBoZXJfbmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksICppdjsKKyAg
ICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbiwgaXZfbGVuOworCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjeSMiLCAmY2lwaGVyX25hbWUsICZjaXBoZXJf
bmFtZV9sZW4sICZrZXksICZrZXlfbGVuLCAmaXYsICZpdl9sZW4pKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVSICpldnBfY2lwaGVyID0gRVZQX2dldF9jaXBoZXJi
eW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlmIChldnBfY2lwaGVyID09IDApIHsKKyAgICAgICAg
UHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAiSW52YWxpZCBjaXBoZXIgbmFtZTogJXMiLCBjaXBo
ZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGtleV9sZW4gPiBB
RUFEX0tFWV9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJv
ciwgIkludmFsaWQga2V5IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAg
IGlmIChpdl9sZW4gPiBBRUFEX05PTkNFX0xFTkdUSCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGl2IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisgICAgbWVtY3B5KHNlbGYtPmtleSwga2V5LCBrZXlfbGVuKTsKKyAgICBtZW1j
cHkoc2VsZi0+aXYsIGl2LCBpdl9sZW4pOworCisgICAgc2VsZi0+ZGVjcnlwdF9jdHggPSBjcmVh
dGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDApOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNl
bGYtPmRlY3J5cHRfY3R4ICE9IDApOworCisgICAgc2VsZi0+ZW5jcnlwdF9jdHggPSBjcmVhdGVf
Y3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNlbGYt
PmVuY3J5cHRfY3R4ICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitB
RUFEX2RlYWxsb2MoQUVBRE9iamVjdCAqc2VsZikKK3sKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVl
KHNlbGYtPmRlY3J5cHRfY3R4KTsKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKHNlbGYtPmVuY3J5
cHRfY3R4KTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQUVBRF9kZWNyeXB0KEFFQURPYmplY3Qg
KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEs
ICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4sIGFzc29jaWF0ZWRfbGVuOwor
ICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAgICB1aW50NjRfdCBwbjsKKworICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0siLCAmZGF0YSwgJmRhdGFfbGVuLCAmYXNz
b2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor
ICAgIGlmIChkYXRhX2xlbiA8IEFFQURfVEFHX0xFTkdUSCB8fCBkYXRhX2xlbiA+IFBBQ0tFVF9M
RU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFs
aWQgcGF5bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAg
bWVtY3B5KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5HVEgpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5vbmNlW0FFQURfTk9O
Q0VfTEVOR1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7CisgICAgfQorCisg
ICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3RybChzZWxmLT5kZWNyeXB0X2N0eCwgRVZQX0NUUkxf
Q0NNX1NFVF9UQUcsIEFFQURfVEFHX0xFTkdUSCwgKHZvaWQqKShkYXRhICsgKGRhdGFfbGVuIC0g
QUVBRF9UQUdfTEVOR1RIKSkpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBy
ZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2Vs
Zi0+a2V5LCBzZWxmLT5ub25jZSwgMCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRs
ZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRfbGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9
IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5kZWNyeXB0X2N0eCwgc2Vs
Zi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBkYXRhX2xlbiAtIEFFQURfVEFHX0xFTkdUSCk7Cisg
ICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJGaW5hbF9l
eChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIGlmIChyZXMgPT0gMCkg
eworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJQYXlsb2FkIGRlY3J5cHRp
b24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQ
eUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5idWZmZXIsIG91dGxl
bik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZW5jcnlwdChBRUFET2JqZWN0ICpzZWxm
LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCAqYXNz
b2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVkX2xlbjsKKyAgICBp
bnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisKKyAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xlbiwgJmFzc29jaWF0
ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBp
ZiAoZGF0YV9sZW4gPiBQQUNLRVRfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURf
Tk9OQ0VfTEVOR1RIKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAg
ICBzZWxmLT5ub25jZVtBRUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4g
Pj4gOCAqIGkpOworICAgIH0KKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmVu
Y3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNlLCAxKTsKKyAgICBD
SEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxm
LT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNzb2NpYXRlZF9sZW4p
OworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyVXBk
YXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4sIGRhdGEsIGRhdGFf
bGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
ckZpbmFsX2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVuMik7CisgICAgQ0hFQ0tf
UkVTVUxUKHJlcyAhPSAwICYmIG91dGxlbjIgPT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVS
X0NUWF9jdHJsKHNlbGYtPmVuY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgQUVBRF9U
QUdfTEVOR1RILCBzZWxmLT5idWZmZXIgKyBvdXRsZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hh
ciopc2VsZi0+YnVmZmVyLCBvdXRsZW4gKyBBRUFEX1RBR19MRU5HVEgpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQUVBRF9tZXRob2RzW10gPSB7CisgICAgeyJkZWNyeXB0IiwgKFB5Q0Z1bmN0
aW9uKUFFQURfZGVjcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJlbmNyeXB0IiwgKFB5
Q0Z1bmN0aW9uKUFFQURfZW5jcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQUVBRFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3Rf
SEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5BRUFEIiwgICAgICAgICAgICAg
ICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihBRUFET2JqZWN0KSwgICAgICAgICAgICAgICAg
IC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQUVBRF9kZWFsbG9jLCAgICAg
ICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZB
VUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQUVBRCBvYmplY3RzIiwg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEFFQURf
bWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisg
ICAgKGluaXRwcm9jKUFFQURfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9Owor
CisvKiBIZWFkZXJQcm90ZWN0aW9uICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVj
dF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAgICBpbnQgaXNfY2hhY2hhMjA7Cisg
ICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOworICAgIHVuc2lnbmVk
IGNoYXIgbWFza1szMV07CisgICAgdW5zaWduZWQgY2hhciB6ZXJvWzVdOworfSBIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0OworCitzdGF0aWMgaW50CitIZWFkZXJQcm90ZWN0aW9uX2luaXQoSGVhZGVy
UHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqa2V5OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVuLCBrZXlfbGVuOworICAgIGlu
dCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMiLCAmY2lwaGVy
X25hbWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRfY2lwaGVy
YnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7CisgICAgICAg
IFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVzIiwgY2lw
aGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KHNlbGYt
Pm1hc2ssIDAsIHNpemVvZihzZWxmLT5tYXNrKSk7CisgICAgbWVtc2V0KHNlbGYtPnplcm8sIDAs
IHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgc2VsZi0+aXNfY2hhY2hhMjAgPSBjaXBoZXJfbmFt
ZV9sZW4gPT0gOCAmJiBtZW1jbXAoY2lwaGVyX25hbWUsICJjaGFjaGEyMCIsIDgpID09IDA7CisK
KyAgICBzZWxmLT5jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKyAgICBDSEVDS19SRVNVTFRf
Q1RPUihzZWxmLT5jdHggIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxm
LT5jdHgsIGV2cF9jaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VM
VF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVu
Z3RoKHNlbGYtPmN0eCwga2V5X2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1IocmVzICE9IDAp
OworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4LCBOVUxMLCBOVUxMLCBr
ZXksIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorSGVhZGVyUHJvdGVjdGlvbl9kZWFsbG9jKEhlYWRl
clByb3RlY3Rpb25PYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxm
LT5jdHgpOworfQorCitzdGF0aWMgaW50IEhlYWRlclByb3RlY3Rpb25fbWFzayhIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0ICpzZWxmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzYW1wbGUpCit7CisgICAg
aW50IG91dGxlbjsKKyAgICBpZiAoc2VsZi0+aXNfY2hhY2hhMjApIHsKKyAgICAgICAgcmV0dXJu
IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVMTCwgTlVMTCwgc2FtcGxlLCAx
KSAmJgorICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5jdHgsIHNlbGYtPm1h
c2ssICZvdXRsZW4sIHNlbGYtPnplcm8sIHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBzZWxmLT5tYXNr
LCAmb3V0bGVuLCBzYW1wbGUsIFNBTVBMRV9MRU5HVEgpOworICAgIH0KK30KKworc3RhdGljIFB5
T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9hcHBseShIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkZXIs
ICpwYXlsb2FkOworICAgIFB5X3NzaXplX3QgaGVhZGVyX2xlbiwgcGF5bG9hZF9sZW47CisgICAg
aW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5IyIsICZoZWFk
ZXIsICZoZWFkZXJfbGVuLCAmcGF5bG9hZCwgJnBheWxvYWRfbGVuKSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKGhlYWRlclswXSAmIDB4MDMpICsgMTsKKyAg
ICBpbnQgcG5fb2Zmc2V0ID0gaGVhZGVyX2xlbiAtIHBuX2xlbmd0aDsKKworICAgIHJlcyA9IEhl
YWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYXlsb2FkICsgUEFDS0VUX05VTUJFUl9MRU5HVEhf
TUFYIC0gcG5fbGVuZ3RoKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgbWVt
Y3B5KHNlbGYtPmJ1ZmZlciwgaGVhZGVyLCBoZWFkZXJfbGVuKTsKKyAgICBtZW1jcHkoc2VsZi0+
YnVmZmVyICsgaGVhZGVyX2xlbiwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOworCisgICAgaWYgKHNl
bGYtPmJ1ZmZlclswXSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYt
Pm1hc2tbMF0gJiAweDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBe
PSBzZWxmLT5tYXNrWzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHBuX2xlbmd0aDsgKytpKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSBe
PSBzZWxmLT5tYXNrWzEgKyBpXTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3Ry
aW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBoZWFkZXJfbGVuICsgcGF5bG9h
ZF9sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZShI
ZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CisgICAgUHlfc3NpemVfdCBwYWNrZXRfbGVuOworICAg
IGludCBwbl9vZmZzZXQsIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
eSNJIiwgJnBhY2tldCwgJnBhY2tldF9sZW4sICZwbl9vZmZzZXQpKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYWNrZXQgKyBw
bl9vZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworICAgIENIRUNLX1JFU1VMVChy
ZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBwYWNrZXQsIHBuX29mZnNldCAr
IFBBQ0tFVF9OVU1CRVJfTEVOR1RIX01BWCk7CisKKyAgICBpZiAoc2VsZi0+YnVmZmVyWzBdICYg
MHg4MCkgeworICAgICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MEY7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0g
JiAweDFGOworICAgIH0KKworICAgIGludCBwbl9sZW5ndGggPSAoc2VsZi0+YnVmZmVyWzBdICYg
MHgwMykgKyAxOworICAgIHVpbnQzMl90IHBuX3RydW5jYXRlZCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zm
c2V0ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgICAgIHBuX3RydW5jYXRlZCA9IHNl
bGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSB8IChwbl90cnVuY2F0ZWQgPDwgOCk7CisgICAgfQor
CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInkjaSIsIHNlbGYtPmJ1ZmZlciwgcG5fb2Zmc2V0
ICsgcG5fbGVuZ3RoLCBwbl90cnVuY2F0ZWQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgSGVh
ZGVyUHJvdGVjdGlvbl9tZXRob2RzW10gPSB7CisgICAgeyJhcHBseSIsIChQeUNGdW5jdGlvbilI
ZWFkZXJQcm90ZWN0aW9uX2FwcGx5LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlbW92ZSIs
IChQeUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZSwgTUVUSF9WQVJBUkdTLCAiIn0s
CisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEhlYWRlclByb3RlY3Rpb25U
eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRFVMRV9O
QU1FICIuSGVhZGVyUHJvdGVjdGlvbiIsICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdCksICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0
cnVjdG9yKUhlYWRlclByb3RlY3Rpb25fZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLworICAgICJIZWFkZXJQcm90ZWN0aW9uIG9iamVjdHMiLCAgICAgICAgIC8qIHRwX2Rv
YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCisgICAgSGVhZGVyUHJvdGVjdGlvbl9tZXRob2RzLCAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpSGVhZGVyUHJvdGVjdGlv
bl9pbml0LCAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURl
ZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgIE1PRFVMRV9O
QU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgICJBIGZhc3RlciBi
dWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5p
dF9fY3J5cHRvKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1bGVf
Q3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ3J5cHRvRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUg
Ii5DcnlwdG9FcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAgIFB5X0lOQ1JFRihD
cnlwdG9FcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDcnlwdG9FcnJvciIsIENy
eXB0b0Vycm9yKTsKKworICAgIEFFQURUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkFFQURUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxM
OworICAgIFB5X0lOQ1JFRigmQUVBRFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAi
QUVBRCIsIChQeU9iamVjdCAqKSZBRUFEVHlwZSk7CisKKyAgICBIZWFkZXJQcm90ZWN0aW9uVHlw
ZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZIZWFk
ZXJQcm90ZWN0aW9uVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNS
RUYoJkhlYWRlclByb3RlY3Rpb25UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhl
YWRlclByb3RlY3Rpb24iLCAoUHlPYmplY3QgKikmSGVhZGVyUHJvdGVjdGlvblR5cGUpOworCisg
ICAgLy8gZW5zdXJlIHJlcXVpcmVkIGNpcGhlcnMgYXJlIGluaXRpYWxpc2VkCisgICAgRVZQX2Fk
ZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOworICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf
MTI4X2djbSgpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7CisgICAg
RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworCisgICAgcmV0dXJuIG07Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjNTIzMGQ5OTJlN2Yy
MTljOTNiZWMzY2I0NTcyMTRjMjUxOGM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQpAQCAtMCwwICsxLDE3IEBACitmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKKworY2xhc3MgQUVBRDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVy
X25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzLCBpdjogYnl0ZXMpOiAuLi4KKyAgICBkZWYgZGVjcnlw
dCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0YTogYnl0ZXMsIHBh
Y2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBlbmNyeXB0KAor
ICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRhOiBieXRlcywgcGFja2V0
X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczogLi4uCisKK2NsYXNzIENyeXB0b0Vycm9yKFZh
bHVlRXJyb3IpOiAuLi4KKworY2xhc3MgSGVhZGVyUHJvdGVjdGlvbjoKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzKTogLi4uCisgICAgZGVmIGFw
cGx5KHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHByb3RlY3RlZF9wYXlsb2FkOiBieXRlcykg
LT4gYnl0ZXM6IC4uLgorICAgIGRlZiByZW1vdmUoc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlw
dGVkX29mZnNldDogaW50KSAtPiBUdXBsZVtieXRlcywgaW50XTogLi4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYWJvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjZDhmMzNkNjVkY2JmMjM5N2QxMmM4M2M2NTFjYzg5
OWU5MTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91
dC5weQpAQCAtMCwwICsxLDcgQEAKK19fYXV0aG9yX18gPSAiSmVyZW15IExhaW7DqSIKK19fZW1h
aWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKK19fbGljZW5zZV9fID0gIkJTRCIKK19fc3Vt
bWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhUVFAvMyIKK19fdGl0bGVf
XyA9ICJhaW9xdWljIgorX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1
aWMiCitfX3ZlcnNpb25fXyA9ICIwLjguNyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fz
eW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYTY5ZDg5OTM0ZThmODdhMjFjNWI5OGU5
N2ExMTQ5MTJiZThjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9hc3luY2lvL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSAuY2xpZW50IGltcG9y
dCBjb25uZWN0ICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblBy
b3RvY29sICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgc2VydmUgICMgbm9xYQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOTM3ZTll
ODkyYmZlNzZjZDJjMmZjN2NiM2E2ZTRmZjczOTMzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKQEAgLTAsMCArMSw5NCBAQAor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBz
eXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBc3luY0dlbmVyYXRvciwgQ2FsbGFibGUsIE9wdGlvbmFs
LCBjYXN0CisKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbgorZnJvbSAu
LnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldEhhbmRsZXIKK2Zyb20gLmNvbXBhdCBpbXBvcnQgYXN5
bmNjb250ZXh0bWFuYWdlcgorZnJvbSAucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18gPSBbImNvbm5lY3QiXQorCisKK0Bh
c3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgY29ubmVjdCgKKyAgICBob3N0OiBzdHIsCisg
ICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJhdGlvbjogT3B0aW9uYWxbUXVpY0Nv
bmZpZ3VyYXRpb25dID0gTm9uZSwKKyAgICBjcmVhdGVfcHJvdG9jb2w6IE9wdGlvbmFsW0NhbGxh
YmxlXSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICBzdHJlYW1faGFu
ZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwKKyAgICB3YWl0X2Nvbm5l
Y3RlZDogYm9vbCA9IFRydWUsCisgICAgbG9jYWxfcG9ydDogaW50ID0gMCwKKykgLT4gQXN5bmNH
ZW5lcmF0b3JbUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgTm9uZV06CisgICAgIiIiCisgICAgQ29u
bmVjdCB0byBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9zdGAgYW5kIGBwb3J0YC4KKwor
ICAgIDptZXRoOmBjb25uZWN0KClgIHJldHVybnMgYW4gYXdhaXRhYmxlLiBBd2FpdGluZyBpdCB5
aWVsZHMgYQorICAgIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3Rv
Y29sYCB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBzdHJlYW1zLgorCisgICAgOmZ1
bmM6YGNvbm5lY3RgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50
czoKKworICAgICogYGBjb25maWd1cmF0aW9uYGAgaXMgYSA6Y2xhc3M6YH5haW9xdWljLnF1aWMu
Y29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICAgIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0LgorICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9taXppbmcgdGhlIDpj
bGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMgdGhlIGNvbm5lY3Rp
b24uIEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZQor
ICAgICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlv
blByb3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5h
aW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4KKyAg
ICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52
b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBp
cyByZWNlaXZlZC4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNo
IGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNyZWF0ZWQuIEl0IG11c3Qg
YWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVJlYWRlcmAKKyAg
ICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgorICAgICogYGBsb2NhbF9w
b3J0YGAgaXMgdGhlIFVEUCBwb3J0IG51bWJlciB0aGF0IHRoaXMgY2xpZW50IHdhbnRzIHRvIGJp
bmQuCisgICAgIiIiCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxv
Y2FsX2hvc3QgPSAiOjoiCisKKyAgICAjIGlmIGhvc3QgaXMgbm90IGFuIElQIGFkZHJlc3MsIHBh
c3MgaXQgdG8gZW5hYmxlIFNOSQorICAgIHRyeToKKyAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJl
c3MoaG9zdCkKKyAgICAgICAgc2VydmVyX25hbWUgPSBOb25lCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIHNlcnZlcl9uYW1lID0gaG9zdAorCisgICAgIyBsb29rdXAgcmVtb3RlIGFk
ZHJlc3MKKyAgICBpbmZvcyA9IGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgdHlw
ZT1zb2NrZXQuU09DS19ER1JBTSkKKyAgICBhZGRyID0gaW5mb3NbMF1bNF0KKyAgICBpZiBsZW4o
YWRkcikgPT0gMjoKKyAgICAgICAgIyBkZXRlcm1pbmUgYmVoYXZpb3VyIGZvciBJUHY0CisgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgIyBvbiBXaW5kb3dz
LCB3ZSBtdXN0IHVzZSBhbiBJUHY0IHNvY2tldCB0byByZWFjaCBhbiBJUHY0IGhvc3QKKyAgICAg
ICAgICAgIGxvY2FsX2hvc3QgPSAiMC4wLjAuMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgb3RoZXIgcGxhdGZvcm1zIHN1cHBvcnQgZHVhbC1zdGFjayBzb2NrZXRzCisgICAgICAgICAg
ICBhZGRyID0gKCI6OmZmZmY6IiArIGFkZHJbMF0sIGFkZHJbMV0sIDAsIDApCisKKyAgICAjIHBy
ZXBhcmUgUVVJQyBjb25uZWN0aW9uCisgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAg
ICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgaWYgc2VydmVyX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vy
dmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgIGNvbm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICApCisKKyAgICAjIGNvbm5lY3QKKyAgICBf
LCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAg
ICBsYW1iZGE6IGNyZWF0ZV9wcm90b2NvbChjb25uZWN0aW9uLCBzdHJlYW1faGFuZGxlcj1zdHJl
YW1faGFuZGxlciksCisgICAgICAgIGxvY2FsX2FkZHI9KGxvY2FsX2hvc3QsIGxvY2FsX3BvcnQp
LAorICAgICkKKyAgICBwcm90b2NvbCA9IGNhc3QoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgcHJv
dG9jb2wpCisgICAgcHJvdG9jb2wuY29ubmVjdChhZGRyKQorICAgIGlmIHdhaXRfY29ubmVjdGVk
OgorICAgICAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nvbm5lY3RlZCgpCisgICAgdHJ5OgorICAg
ICAgICB5aWVsZCBwcm90b2NvbAorICAgIGZpbmFsbHk6CisgICAgICAgIHByb3RvY29sLmNsb3Nl
KCkKKyAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nsb3NlZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxZTYyZjZkOTQyOTYxOTMzZmI2
ZmUwNzJhZTBmMjdlNjQzYjRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpAQCAtMCwwICsxLDMzIEBACitmcm9tIGNvbnRleHRs
aWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwor
Cit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCitl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9IE5vbmUKKworCitj
bGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihDb250ZXh0RGVjb3JhdG9yKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJncywga3dkcyk6CisgICAgICAgIHNlbGYuZ2Vu
ID0gZnVuYygqYXJncywgKiprd2RzKQorICAgICAgICBzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2Vs
Zi5rd2RzID0gZnVuYywgYXJncywga3dkcworICAgICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9f
ZG9jX18KKworICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
YXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKKworICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2Vs
ZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgaWYgdHlwIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRocm93KHR5cCwgdmFsdWUsIHRyYWNlYmFjaykK
KworCitkZWYgX2FzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CisgICAgQHdyYXBzKGZ1bmMpCisg
ICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIF9Bc3luY0dlbmVy
YXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCisKKyAgICByZXR1cm4gaGVscGVy
CisKKworaWYgYXN5bmNjb250ZXh0bWFuYWdlciBpcyBOb25lOgorICAgIGFzeW5jY29udGV4dG1h
bmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby9wcm90b2NvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAwNDMzNWI4ZmZmZjlkNzAyNWQzNjVl
Y2FhOTMxZjc3NDcyMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2FzeW5jaW8vcHJvdG9jb2wucHkKQEAgLTAsMCArMSwyNDAgQEAKK2ltcG9ydCBhc3luY2lv
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQs
IFR1cGxlLCBVbmlvbiwgY2FzdAorCitmcm9tIC4ucXVpYyBpbXBvcnQgZXZlbnRzCitmcm9tIC4u
cXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nvbm5lY3Rpb24KKwor
UXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBDYWxsYWJsZVtbYnl0ZXNdLCBOb25lXQorUXVpY1N0
cmVhbUhhbmRsZXIgPSBDYWxsYWJsZVtbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXSwgTm9uZV0KKworCitjbGFzcyBRdWljQ29ubmVjdGlvblByb3RvY29sKGFzeW5j
aW8uRGF0YWdyYW1Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBx
dWljOiBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFsW1F1aWNTdHJlYW1I
YW5kbGVyXSA9IE5vbmUKKyAgICApOgorICAgICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpCisKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gYXN5bmNpby5FdmVudCgpCisgICAgICAg
IHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXI6
IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9v
cCA9IGxvb3AKKyAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzOiBEaWN0W2ludCwgYXN5bmNpby5G
dXR1cmVbTm9uZV1dID0ge30KKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtX3JlYWRlcnM6IERpY3RbaW50LCBhc3luY2lvLlN0cmVhbVJlYWRlcl0gPSB7fQor
ICAgICAgICBzZWxmLl90aW1lcjogT3B0aW9uYWxbYXN5bmNpby5UaW1lckhhbmRsZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3RpbWVyX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuX3RyYW5zbWl0X3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uSGFuZGxlXSA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fdHJhbnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0
XSA9IE5vbmUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9jb25uZWN0aW9u
X2lkX2lzc3VlZF9oYW5kbGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBO
b25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyOiBRdWljQ29u
bmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rp
b25fdGVybWluYXRlZF9oYW5kbGVyOiBDYWxsYWJsZVtbXSwgTm9uZV0gPSBsYW1iZGE6IE5vbmUK
KyAgICAgICAgaWYgc3RyZWFtX2hhbmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IGxhbWJkYSByLCB3OiBOb25lCisKKyAgICBkZWYg
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IENoYW5nZSB0aGUgY29ubmVjdGlvbiBJRCB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBl
ZXIuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gSUQgd2lsbCBiZSByZXRpcmVk
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jaGFuZ2VfY29ubmVjdGlvbl9pZCgp
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2UuCisKKyAgICAgICAg
VGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0
aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jb25uZWN0KGFkZHIsIG5vdz1z
ZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBk
ZWYgY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wg
PSBGYWxzZQorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFVSUMgc3RyZWFtIGFu
ZCByZXR1cm4gYSBwYWlyIG9mIChyZWFkZXIsIHdyaXRlcikgb2JqZWN0cy4KKworICAgICAgICBU
aGUgcmV0dXJuZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0cyBhcmUgaW5zdGFuY2VzIG9mIDpj
bGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICAgIGFuZCA6Y2xhc3M6YGFzeW5jaW8u
U3RyZWFtV3JpdGVyYCBjbGFzc2VzLgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0g
c2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKAorICAgICAgICAgICAgaXNf
dW5pZGlyZWN0aW9uYWw9aXNfdW5pZGlyZWN0aW9uYWwKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisKKyAgICBkZWYgcmVxdWVzdF9rZXlf
dXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSZXF1ZXN0IGFuIHVw
ZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
cXVpYy5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAg
IGFzeW5jIGRlZiBwaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQaW5n
IHRoZSBwZWVyIGFuZCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAg
ICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICB1aWQgPSBpZCh3
YWl0ZXIpCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyc1t1aWRdID0gd2FpdGVyCisgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9waW5nKHVpZCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisgICAg
ICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiB0cmFuc21pdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBwZW5kaW5nIGRhdGFncmFtcyB0
byB0aGUgcGVlciBhbmQgYXJtIHRoZSB0aW1lciBpZiBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLl90cmFuc21pdF90YXNrID0gTm9uZQorCisgICAgICAgICMgc2VuZCBkYXRhZ3Jh
bXMKKyAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VsZi5fcXVpYy5kYXRhZ3JhbXNfdG9fc2Vu
ZChub3c9c2VsZi5fbG9vcC50aW1lKCkpOgorICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNl
bmR0byhkYXRhLCBhZGRyKQorCisgICAgICAgICMgcmUtYXJtIHRpbWVyCisgICAgICAgIHRpbWVy
X2F0ID0gc2VsZi5fcXVpYy5nZXRfdGltZXIoKQorICAgICAgICBpZiBzZWxmLl90aW1lciBpcyBu
b3QgTm9uZSBhbmQgc2VsZi5fdGltZXJfYXQgIT0gdGltZXJfYXQ6CisgICAgICAgICAgICBzZWxm
Ll90aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBOb25lCisgICAgICAg
IGlmIHNlbGYuX3RpbWVyIGlzIE5vbmUgYW5kIHRpbWVyX2F0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fdGltZXIgPSBzZWxmLl9sb29wLmNhbGxfYXQodGltZXJfYXQsIHNlbGYuX2hh
bmRsZV90aW1lcikKKyAgICAgICAgc2VsZi5fdGltZXJfYXQgPSB0aW1lcl9hdAorCisgICAgYXN5
bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBX
YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQuCisgICAgICAgICIiIgorICAgICAg
ICBhd2FpdCBzZWxmLl9jbG9zZWQud2FpdCgpCisKKyAgICBhc3luYyBkZWYgd2FpdF9jb25uZWN0
ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgZm9yIHRoZSBUTFMg
aGFuZHNoYWtlIHRvIGNvbXBsZXRlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYu
X2Nvbm5lY3RlZF93YWl0ZXIgaXMgTm9uZSwgImFscmVhZHkgYXdhaXRpbmcgY29ubmVjdGVkIgor
ICAgICAgICBpZiBub3Qgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAgc2VsZi5fY29ubmVj
dGVkX3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLl9jb25uZWN0ZWRfd2FpdGVyKQorCisgICAgIyBhc3luY2lv
LlRyYW5zcG9ydAorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6IGFz
eW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0g
Y2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisKKyAgICBkZWYgZGF0
YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0ZXMsIFRleHRdLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5yZWNlaXZlX2RhdGFncmFt
KGNhc3QoYnl0ZXMsIGRhdGEpLCBhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAg
IHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAj
IG92ZXJyaWRhYmxlCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
ZXZlbnRzLlF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxlZCB3
aGVuIGEgUVVJQyBldmVudCBpcyByZWNlaXZlZC4KKworICAgICAgICBSZWltcGxlbWVudCB0aGlz
IGluIHlvdXIgc3ViY2xhc3MgdG8gaGFuZGxlIHRoZSBldmVudHMuCisgICAgICAgICIiIgorICAg
ICAgICAjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBzdWJjbGFzcworICAgICAgICBpZiBpc2luc3Rh
bmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQpOgorICAgICAgICAgICAgZm9y
IHJlYWRlciBpbiBzZWxmLl9zdHJlYW1fcmVhZGVycy52YWx1ZXMoKToKKyAgICAgICAgICAgICAg
ICByZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50
cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5fc3RyZWFt
X3JlYWRlcnMuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIHJlYWRl
ciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gc2VsZi5fY3JlYXRl
X3N0cmVhbShldmVudC5zdHJlYW1faWQpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hh
bmRsZXIocmVhZGVyLCB3cml0ZXIpCisgICAgICAgICAgICByZWFkZXIuZmVlZF9kYXRhKGV2ZW50
LmRhdGEpCisgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFtOgorICAgICAgICAgICAgICAg
IHJlYWRlci5mZWVkX2VvZigpCisKKyAgICAjIHByaXZhdGUKKworICAgIGRlZiBfY3JlYXRlX3N0
cmVhbSgKKyAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+IFR1cGxlW2FzeW5j
aW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06CisgICAgICAgIGFkYXB0ZXIg
PSBRdWljU3RyZWFtQWRhcHRlcihzZWxmLCBzdHJlYW1faWQpCisgICAgICAgIHJlYWRlciA9IGFz
eW5jaW8uU3RyZWFtUmVhZGVyKCkKKyAgICAgICAgd3JpdGVyID0gYXN5bmNpby5TdHJlYW1Xcml0
ZXIoYWRhcHRlciwgTm9uZSwgcmVhZGVyLCBzZWxmLl9sb29wKQorICAgICAgICBzZWxmLl9zdHJl
YW1fcmVhZGVyc1tzdHJlYW1faWRdID0gcmVhZGVyCisgICAgICAgIHJldHVybiByZWFkZXIsIHdy
aXRlcgorCisgICAgZGVmIF9oYW5kbGVfdGltZXIoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbm93
ID0gbWF4KHNlbGYuX3RpbWVyX2F0LCBzZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi5f
dGltZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gTm9uZQorICAgICAgICBzZWxm
Ll9xdWljLmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50
cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIF9wcm9jZXNzX2V2ZW50cyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4dF9ldmVudCgpCisg
ICAgICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcihldmVudC5jb25uZWN0aW9uX2lkKQorICAg
ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvbklkUmV0aXJl
ZCk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hhbmRsZXIo
ZXZlbnQuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcigpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IGNv
bm5lY3Rpb24gd2FpdGVyCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkX3dhaXRl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5fY29ubmVj
dGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9u
RXJyb3IpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IHBpbmcgd2FpdGVycworICAgICAgICAg
ICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fcGluZ193YWl0ZXJzLnZhbHVlcygpOgorICAgICAg
ICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9uRXJyb3IpCisgICAg
ICAgICAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzLmNsZWFyKCkKKworICAgICAgICAgICAgICAg
IHNlbGYuX2Nsb3NlZC5zZXQoKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jb25u
ZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIgPSBz
ZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX3Bpbmdfd2FpdGVycy5wb3AoZXZlbnQudWlkLCBO
b25lKQorICAgICAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYucXVpY19l
dmVudF9yZWNlaXZlZChldmVudCkKKyAgICAgICAgICAgIGV2ZW50ID0gc2VsZi5fcXVpYy5uZXh0
X2V2ZW50KCkKKworICAgIGRlZiBfdHJhbnNtaXRfc29vbihzZWxmKSAtPiBOb25lOgorICAgICAg
ICBpZiBzZWxmLl90cmFuc21pdF90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl90cmFu
c21pdF90YXNrID0gc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi50cmFuc21pdCkKKworCitjbGFz
cyBRdWljU3RyZWFtQWRhcHRlcihhc3luY2lvLlRyYW5zcG9ydCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzdHJlYW1faWQ6IGludCk6
CisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxmLnN0cmVhbV9p
ZCA9IHN0cmVhbV9pZAorCisgICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lOiBz
dHIsIGRlZmF1bHQ6IEFueSA9IE5vbmUpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIEdl
dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBRVUlDIHN0cmVhbS4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIG5hbWUgPT0gInN0cmVhbV9pZCI6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdHJlYW1faWQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFtX2lkLCBkYXRhKQor
ICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKKworICAgIGRlZiB3cml0ZV9l
b2Yoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLnN0cmVhbV9pZCwgYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYucHJvdG9j
b2wuX3RyYW5zbWl0X3Nvb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2Vy
dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0MGVlNDYwYjZlZDY2ZTA5NDUzODVmMWY1NDg1OGNjMGVmOTE4
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9z
ZXJ2ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgb3MKK2Zy
b20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUs
IERpY3QsIE9wdGlvbmFsLCBUZXh0LCBVbmlvbiwgY2FzdAorCitmcm9tIC4uYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nv
bm5lY3Rpb24KK2Zyb20gLi5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9u
ZWdvdGlhdGlvbiwKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorKQorZnJvbSAuLnF1aWMucmV0cnkg
aW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorZnJvbSAuLnRscyBpbXBvcnQgU2Vzc2lvblRp
Y2tldEZldGNoZXIsIFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5wcm90b2NvbCBpbXBvcnQg
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKworX19hbGxfXyA9IFsi
c2VydmUiXQorCisKK2NsYXNzIFF1aWNTZXJ2ZXIoYXN5bmNpby5EYXRhZ3JhbVByb3RvY29sKToK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w6
IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAgc2Vzc2lvbl90aWNr
ZXRfZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJd
ID0gTm9uZSwKKyAgICAgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFsc2UsCisgICAgICAg
IHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0gPSBOb25lLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24K
KyAgICAgICAgc2VsZi5fY3JlYXRlX3Byb3RvY29sID0gY3JlYXRlX3Byb3RvY29sCisgICAgICAg
IHNlbGYuX2xvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAgICAgc2VsZi5fcHJv
dG9jb2xzOiBEaWN0W2J5dGVzLCBRdWljQ29ubmVjdGlvblByb3RvY29sXSA9IHt9CisgICAgICAg
IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tldF9mZXRjaGVyCisg
ICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRy
YW5zcG9ydF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1f
aGFuZGxlcgorCisgICAgICAgIGlmIHN0YXRlbGVzc19yZXRyeToKKyAgICAgICAgICAgIHNlbGYu
X3JldHJ5ID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX3JldHJ5ID0gTm9uZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBm
b3IgcHJvdG9jb2wgaW4gc2V0KHNlbGYuX3Byb3RvY29scy52YWx1ZXMoKSk6CisgICAgICAgICAg
ICBwcm90b2NvbC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3Byb3RvY29scy5jbGVhcigpCisgICAg
ICAgIHNlbGYuX3RyYW5zcG9ydC5jbG9zZSgpCisKKyAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNl
bGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3BvcnQsIHRyYW5zcG9y
dCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBVbmlvbltieXRlcywg
VGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAgICBkYXRhID0gY2Fz
dChieXRlcywgZGF0YSkKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAg
ICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlv
bl9pZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAg
ICAgaWYgKAorICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5vbmUKKyAgICAgICAg
ICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0
ZWRfdmVyc2lvbnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5zZW5k
dG8oCisgICAgICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJjZV9jaWQsCisgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwcm90b2Nv
bCA9IHNlbGYuX3Byb3RvY29scy5nZXQoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgTm9uZSkKKyAg
ICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAg
ICAgICBpZiAoCisgICAgICAgICAgICBwcm90b2NvbCBpcyBOb25lCisgICAgICAgICAgICBhbmQg
bGVuKGRhdGEpID49IDEyMDAKKyAgICAgICAgICAgIGFuZCBoZWFkZXIucGFja2V0X3R5cGUgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICApOgorICAgICAgICAgICAgIyBzdGF0ZWxlc3Mg
cmV0cnkKKyAgICAgICAgICAgIGlmIHNlbGYuX3JldHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIG5vdCBoZWFkZXIudG9rZW46CisgICAgICAgICAgICAgICAgICAgICMgY3JlYXRl
IGEgcmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0
bygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb249aGVhZGVyLnZlcnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlX2NpZD1vcy51cmFuZG9tKDgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2NpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLmRlc3Rp
bmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeV90b2tlbj1zZWxm
Ll9yZXRyeS5jcmVhdGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSByZXRy
eSB0b2tlbgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcmV0cnkudmFsaWRhdGVfdG9rZW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLnRva2VuCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY3JlYXRlIG5l
dyBjb25uZWN0aW9uCisgICAgICAgICAgICBjb25uZWN0aW9uID0gUXVpY0Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAg
ICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgb3Ig
aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0
aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQsCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90
aWNrZXRfZmV0Y2hlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAgICAgICAg
ICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sID0gc2VsZi5fY3JlYXRlX3Byb3Rv
Y29sKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyPXNlbGYuX3N0
cmVhbV9oYW5kbGVyCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5jb25uZWN0
aW9uX21hZGUoc2VsZi5fdHJhbnNwb3J0KQorCisgICAgICAgICAgICAjIHJlZ2lzdGVyIGNhbGxi
YWNrcworICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkLCBw
cm90b2NvbD1wcm90b2NvbAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX2Nv
bm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZCwg
cHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5fcHJv
dG9jb2xzW2hlYWRlci5kZXN0aW5hdGlvbl9jaWRdID0gcHJvdG9jb2wKKyAgICAgICAgICAgIHNl
bGYuX3Byb3RvY29sc1tjb25uZWN0aW9uLmhvc3RfY2lkXSA9IHByb3RvY29sCisKKyAgICAgICAg
aWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2NvbC5kYXRhZ3JhbV9y
ZWNlaXZlZChkYXRhLCBhZGRyKQorCisgICAgZGVmIF9jb25uZWN0aW9uX2lkX2lzc3VlZChzZWxm
LCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgICAg
IHNlbGYuX3Byb3RvY29sc1tjaWRdID0gcHJvdG9jb2wKKworICAgIGRlZiBfY29ubmVjdGlvbl9p
ZF9yZXRpcmVkKAorICAgICAgICBzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Byb3Rv
Y29sc1tjaWRdID09IHByb3RvY29sCisgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQor
CisgICAgZGVmIF9jb25uZWN0aW9uX3Rlcm1pbmF0ZWQoc2VsZiwgcHJvdG9jb2w6IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wpOgorICAgICAgICBmb3IgY2lkLCBwcm90byBpbiBsaXN0KHNlbGYuX3By
b3RvY29scy5pdGVtcygpKToKKyAgICAgICAgICAgIGlmIHByb3RvID09IHByb3RvY29sOgorICAg
ICAgICAgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQorCisKK2FzeW5jIGRlZiBzZXJ2
ZSgKKyAgICBob3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJh
dGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgY3JlYXRlX3Byb3RvY29sOiBDYWxsYWJsZSA9
IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgIHN0YXRl
bGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAgIHN0cmVhbV9oYW5kbGVyOiBRdWljU3RyZWFt
SGFuZGxlciA9IE5vbmUsCispIC0+IFF1aWNTZXJ2ZXI6CisgICAgIiIiCisgICAgU3RhcnQgYSBR
VUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAuCisKKyAgICA6ZnVuYzpg
c2VydmVgIHJlcXVpcmVzIGEgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24uUXVp
Y0NvbmZpZ3VyYXRpb25gCisgICAgY29udGFpbmluZyBUTFMgY2VydGlmaWNhdGUgYW5kIHByaXZh
dGUga2V5IGFzIHRoZSBgYGNvbmZpZ3VyYXRpb25gYCBhcmd1bWVudC4KKworICAgIDpmdW5jOmBz
ZXJ2ZWAgYWxzbyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgorCisg
ICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFsbG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+
YXN5bmNpby5Qcm90b2NvbGAgdGhhdAorICAgICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQg
c2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBzYW1lCisgICAgICBh
cmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9j
b2xgIGFuZCByZXR1cm5pbmcKKyAgICAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMu
YXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sYCBvciBhIHN1YmNsYXNzLgorICAgICogYGBz
ZXNzaW9uX3RpY2tldF9mZXRjaGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5
IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgc2Vzc2lvbiB0aWNrZXQgaXMgcHJlc2VudGVk
IGJ5IHRoZSBwZWVyLiBJdCBzaG91bGQgcmV0dXJuCisgICAgICB0aGUgc2Vzc2lvbiB0aWNrZXQg
d2l0aCB0aGUgc3BlY2lmaWVkIElEIG9yIGBOb25lYCBpZiBpdCBpcyBub3QgZm91bmQuCisgICAg
KiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0aWNrZXQgaXMg
aXNzdWVkLiBJdCBzaG91bGQgc3RvcmUgdGhlIHNlc3Npb24KKyAgICAgIHRpY2tldCBmb3IgZnV0
dXJlIGxvb2t1cC4KKyAgICAqIGBgc3RhdGVsZXNzX3JldHJ5YGAgc3BlY2lmaWVzIHdoZXRoZXIg
YSBzdGF0ZWxlc3MgcmV0cnkgc2hvdWxkIGJlCisgICAgICBwZXJmb3JtZWQgcHJpb3IgdG8gaGFu
ZGxpbmcgbmV3IGNvbm5lY3Rpb25zLgorICAgICogYGBzdHJlYW1faGFuZGxlcmBgIGlzIGEgY2Fs
bGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcworICAgICAgY3JlYXRl
ZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFt
UmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdyaXRlcmAuCisgICAg
IiIiCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKKyAgICBfLCBwcm90
b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAgICBsYW1i
ZGE6IFF1aWNTZXJ2ZXIoCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sLAorICAgICAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAg
ICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAg
ICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PXN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgICAgIHN0
cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyLAorICAgICAgICApLAorICAgICAgICBsb2NhbF9h
ZGRyPShob3N0LCBwb3J0KSwKKyAgICApCisgICAgcmV0dXJuIGNhc3QoUXVpY1NlcnZlciwgcHJv
dG9jb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4OGYxZWIxNTkyYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05v
bmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3lu
Y2lvL2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1
ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E0Mjk4Zjk1NGMyMmU1Mzg5YTEyOWExZWU2NzVlOGVmZWQ4
N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5w
eQpAQCAtMCwwICsxLDI5IEBACitmcm9tIC5fYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJl
YWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciAgIyBub3FhCisKK1VJTlRfVkFSX01BWCA9IDB4M0ZG
RkZGRkZGRkZGRkZGRgorCisKK2RlZiBlbmNvZGVfdWludF92YXIodmFsdWU6IGludCkgLT4gYnl0
ZXM6CisgICAgIiIiCisgICAgRW5jb2RlIGEgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVn
ZXIuCisgICAgIiIiCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgYnVmLnB1c2hf
dWludF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIHNpemVfdWludF92
YXIodmFsdWU6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUKKyAgICBhcyBhIFFVSUMg
dmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuCisgICAgIiIiCisgICAgaWYgdmFsdWUg
PD0gMHgzRjoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRjoKKyAg
ICAgICAgcmV0dXJuIDIKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA0CisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA4CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW50ZWdlciBpcyB0
b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9oMC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2gwL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIxZWU0ZTdkNmIxOGQ4
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0
aW9uLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0CisK
K2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVh
ZGVycywgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZl
bnQsIFN0cmVhbURhdGFSZWNlaXZlZAorCitIMF9BTFBOID0gWyJocS0yNyIsICJocS0yNiIsICJo
cS0yNSJdCisKKworY2xhc3MgSDBDb25uZWN0aW9uOgorICAgICIiIgorICAgIEFuIEhUVFAvMC45
IGNvbm5lY3Rpb24gb2JqZWN0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZDogRGlj
dFtpbnQsIGJvb2xdID0ge30KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1
cmF0aW9uLmlzX2NsaWVudAorICAgICAgICBzZWxmLl9xdWljID0gcXVpYworCisgICAgZGVmIGhh
bmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gzRXZlbnRdOgorICAg
ICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0cmVhbV9pZCAlIDQp
ID09IDA6CisgICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgRmFsc2UpOgorICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgaHR0
cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0cmVhbV9lbmRlZD1G
YWxzZSwgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxpdChiIiAiLCAxKQor
ICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1bKGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkW2V2ZW50LnN0cmVh
bV9pZF0gPSBUcnVlCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgc3Ry
ZWFtX2VuZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZl
bnRzCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRhOiBieXRl
cywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKKworICAgIGRlZiBzZW5kX2hl
YWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBl
bmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2lzX2NsaWVudDoKKyAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3QoaGVhZGVycykKKyAg
ICAgICAgICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBiIiAiICsgaGVhZGVy
c19kaWN0W2IiOnBhdGgiXSArIGIiXHJcbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRh
dGEgPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwg
ZGF0YSwgZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjM2MWVhNDA1NTFiNjI4NmIzZTFlZTVmMjlhNzc3NGFlNjA3MGI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBv
cnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0aW9u
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZjhjNTQyODNjZDc3Yzdm
OWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDc3NiBAQAoraW1wb3J0IGxv
Z2dpbmcKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKKworaW1wb3J0IHB5bHNxcGFjaworCitmcm9tIGFp
b3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgZW5jb2RlX3VpbnRf
dmFyCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0YVJlY2VpdmVkLAor
ICAgIEgzRXZlbnQsCisgICAgSGVhZGVycywKKyAgICBIZWFkZXJzUmVjZWl2ZWQsCisgICAgUHVz
aFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBO
b0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFp
b3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorCitsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigiaHR0cDMiKQorCitIM19BTFBOID0gWyJoMy0yNyIsICJoMy0yNiIsICJo
My0yNSJdCisKKworY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgorICAgIEhUVFBfTk9fRVJST1Ig
PSAweDEwMAorICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4MTAxCisgICAgSFRU
UF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCisgICAgSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1Ig
PSAweDEwMworICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4MTA0CisgICAgSFRU
UF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKKyAgICBIVFRQX0ZSQU1FX0VSUk9SID0gMHgxMDYK
KyAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKKyAgICBIVFRQX0lEX0VSUk9SID0gMHgx
MDgKKyAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKKyAgICBIVFRQX01JU1NJTkdfU0VU
VElOR1MgPSAweDEwQQorICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4MTBCCisgICAgSFRU
UF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCisgICAgSFRUUF9SRVFVRVNUX0lOQ09NUExFVEUg
PSAweDEwRAorICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQorICAgIEhUVFBfQ09OTkVD
VF9FUlJPUiA9IDB4MTBGCisgICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0gMHgxMTAKKyAgICBI
VFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKKyAgICBIVFRQX1FQQUNLX0VO
Q09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKKyAgICBIVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFN
X0VSUk9SID0gMHgyMDIKKworCitjbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6CisgICAgREFUQSA9
IDB4MAorICAgIEhFQURFUlMgPSAweDEKKyAgICBQUklPUklUWSA9IDB4MgorICAgIENBTkNFTF9Q
VVNIID0gMHgzCisgICAgU0VUVElOR1MgPSAweDQKKyAgICBQVVNIX1BST01JU0UgPSAweDUKKyAg
ICBHT0FXQVkgPSAweDcKKyAgICBNQVhfUFVTSF9JRCA9IDB4RAorICAgIERVUExJQ0FURV9QVVNI
ID0gMHhFCisKKworY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgorICAgIElOSVRJQUwgPSAwCisg
ICAgQUZURVJfSEVBREVSUyA9IDEKKyAgICBBRlRFUl9UUkFJTEVSUyA9IDIKKworCitjbGFzcyBT
ZXR0aW5nKEludEVudW0pOgorICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lUWSA9IDEKKyAgICBT
RVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKKyAgICBRUEFDS19CTE9DS0VEX1NUUkVB
TVMgPSA3CisgICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKKworCitjbGFzcyBTdHJl
YW1UeXBlKEludEVudW0pOgorICAgIENPTlRST0wgPSAwCisgICAgUFVTSCA9IDEKKyAgICBRUEFD
S19FTkNPREVSID0gMgorICAgIFFQQUNLX0RFQ09ERVIgPSAzCisKKworY2xhc3MgUHJvdG9jb2xF
cnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGVy
cm9ycy4KKworICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIEFQSSB1c2Vy
LCB0aGV5IGFyZSBoYW5kbGVkCisgICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlvbi5oYW5kbGVfZXZl
bnRgLgorICAgICIiIgorCisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0dFTkVSQUxf
UFJPVE9DT0xfRVJST1IKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFzb25fcGhyYXNlOiBz
dHIgPSAiIik6CisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKKwor
CitjbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJvcik6CisgICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVECisKKwor
Y2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3Jf
Y29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xh
c3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3JfY29k
ZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xhc3Mg
U3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJy
b3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCisKKworY2xhc3MgRnJhbWVVbmV4cGVj
dGVkKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9GUkFN
RV9VTkVYUEVDVEVECisKKworZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBlOiBpbnQsIGZyYW1l
X2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKKyAgICBmcmFtZV9sZW5ndGggPSBsZW4oZnJhbWVfZGF0
YSkKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsgMTYpCisgICAgYnVm
LnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKKyAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV9s
ZW5ndGgpCisgICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKKyAgICByZXR1cm4gYnVmLmRh
dGEKKworCitkZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2ludCwgaW50XSkgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAgZm9yIHNldHRpbmcs
IHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNl
dHRpbmcpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAgIHJldHVybiBidWYu
ZGF0YQorCisKK2RlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykgLT4gaW50OgorICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgbWF4X3B1c2hfaWQgPSBidWYucHVsbF91aW50
X3ZhcigpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBtYXhfcHVzaF9pZAorCisK
K2RlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQsIGludF06CisgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICBzZXR0aW5ncyA9IFtdCisgICAgd2hpbGUgbm90
IGJ1Zi5lb2YoKToKKyAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHNldHRpbmdzLmFwcGVuZCgo
c2V0dGluZywgdmFsdWUpKQorICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQorCisKK2RlZiBxbG9n
X2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBE
aWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0
aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0sCisgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworZGVmIHFsb2dfZW5jb2RlX2hl
YWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKKyAgICByZXR1cm4gWworICAg
ICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBoWzFdLmRlY29kZSgi
dXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCisgICAgXQorCisKK2RlZiBxbG9nX2VuY29kZV9oZWFk
ZXJzX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIHN0cmVh
bV9pZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAgImJ5dGVfbGVuZ3Ro
Ijogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFtZV90eXBlIjogImhl
YWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyl9LAorICAgICAg
ICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2RlZiBxbG9nX2VuY29k
ZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6IGludCwgaGVhZGVyczogSGVh
ZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAorKSAtPiBEaWN0OgorICAgIHJldHVy
biB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCksCisgICAgICAgICJm
cmFtZSI6IHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJvbWlzZSIsCisgICAg
ICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyksCisgICAgICAg
ICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmVh
bV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitjbGFzcyBIM1N0cmVhbToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
YmxvY2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9zaXplOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLmVu
ZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAg
IHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3RhdGUuSU5J
VElBTAorICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVyc1N0YXRlID0gSGVh
ZGVyc1N0YXRlLklOSVRJQUwKKyAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnN0
cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK2NsYXNzIEgzQ29ubmVjdGlvbjoK
KyAgICAiIiIKKyAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBvYmplY3QuCisKKyAg
ICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b25gIGluc3RhbmNlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWM6IFF1
aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5ID0gNDA5Ngor
ICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgorCisgICAgICAgIHNlbGYuX2lzX2Ns
aWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAgc2VsZi5faXNfZG9u
ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVpY19sb2dnZXIKKyAg
ICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAorICAgICAgICAgICAgc2Vs
Zi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAorICAgICAgICBzZWxmLl9k
ZWNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXIgPSBweWxzcXBhY2su
RW5jb2RlcigpCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgPSAwCisgICAg
ICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAgICAgc2VsZi5fc3RyZWFtOiBE
aWN0W2ludCwgSDNTdHJlYW1dID0ge30KKworICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZDogT3B0
aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQorICAgICAgICBzZWxm
Ll9uZXh0X3B1c2hfaWQ6IGludCA9IDAKKworICAgICAgICBzZWxmLl9sb2NhbF9jb250cm9sX3N0
cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rl
cl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2FsX2Vu
Y29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3Bl
ZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYu
X3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAg
ICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwg
ZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRUUCBldmVudHMuCisK
KyAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5kbGUuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFu
ZCBub3Qgc2VsZi5faXNfZG9uZToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0cmVh
bV9pZAorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbV9pZCAl
IDQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2VpdmVfcmVxdWVz
dF9vcl9wdXNoX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2ZW50LmRh
dGEsIGV2ZW50LmVuZF9zdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVhbQorICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJvciBhcyBl
eGM6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWV4Yy5l
cnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBzZW5kX3B1c2hfcHJvbWlzZShzZWxm
LCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50OgorICAgICAgICAiIiIK
KyAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgc3Ry
ZWFtLgorCisgICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGljaCBoZWFkZXJzIGFu
ZCBkYXRhIGNhbiBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJl
YW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBhcmFtIGhlYWRlcnM6
IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZlcnMgbWF5IHNlbmQg
YSBwdXNoIHByb21pc2UuIgorICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9pZCBpcyBOb25lIG9y
IHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKKyAgICAgICAgICAgIHJh
aXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKworICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNl
CisgICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKKyAgICAgICAgc2VsZi5fbmV4
dF9wdXNoX2lkICs9IDEKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAg
ICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICAgICAgZW5jb2RlX3Vp
bnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJz
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIMKgY3JlYXRlIHB1c2gg
c3RyZWFtCisgICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0o
U3RyZWFtVHlwZS5QVVNIKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEocHVz
aF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKKworICAgICAgICByZXR1cm4g
cHVzaF9zdHJlYW1faWQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmll
dmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0
aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhl
IGRhdGEuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5kLgorICAgICAgICA6
cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KKyAgICAgICAgIiIi
CisgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIHN0cmVhbSA9
IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAgaWYgc3RyZWFt
LmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUzoKKyAgICAg
ICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBp
biB0aGlzIHN0YXRlIikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxv
Z19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAg
ICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9cWxvZ19lbmNv
ZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9pZD1zdHJlYW1faWQp
LAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgK
KyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5EQVRBLCBkYXRh
KSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgc2VuZF9oZWFkZXJzKAorICAgICAg
ICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5kX3N0cmVhbTogYm9v
bCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBoZWFk
ZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmlldmUgZGF0YWdyYW0g
d2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0aGUgUVVJQworICAg
ICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICA6cGFyYW0g
c3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGhlYWRlcnMuCisg
ICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNlbmQuCisgICAgICAg
IDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFtLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICBpZiBz
dHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUzoK
KyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBpcyBub3Qg
YWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICBmcmFtZV9kYXRhID0gc2VsZi5fZW5j
b2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRw
IiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisgICAgICAgICAgICAg
ICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBi
eXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywgc3RyZWFtX2lkPXN0
cmVhbV9pZAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyB1
cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycworICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19z
ZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgorICAgICAgICAgICAgc3RyZWFtLmhl
YWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVyc1N0YXRl
LkFGVEVSX1RSQUlMRVJTCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAg
ICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBmcmFt
ZV9kYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgX2NyZWF0ZV91bmlfc3Ry
ZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAg
IENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVuIHR5cGUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcXVpYy5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV90eXBlKSkK
KyAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIF9kZWNvZGVfaGVhZGVycyhzZWxm
LCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdKSAtPiBIZWFkZXJz
OgorICAgICAgICAiIiIKKyAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBk
ZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgorCisgICAgICAgIFRoaXMgaXMg
Y2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVjb21lcyB1bmJsb2Nr
ZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmcmFtZV9kYXRh
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNlbGYuX2RlY29k
ZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRfaGVhZGVyKHN0cmVh
bV9pZCwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfc2VudCAr
PSBsZW4oZGVjb2RlcikKKyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKKyAgICAgICAgZXhjZXB0IHB5
bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFFw
YWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCisKKyAgICAgICAgcmV0dXJuIGhlYWRl
cnMKKworICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRl
cnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAgICAgICAgRW5jb2RlIGEgSEVB
REVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVuY29kZXIgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9IHNlbGYuX2VuY29k
ZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fZW5jb2Rlcl9ieXRl
c19zZW50ICs9IGxlbihlbmNvZGVyKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCisgICAgICAgIHJldHVy
biBmcmFtZV9kYXRhCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9pZDogaW50KSAtPiBIM1N0cmVhbToKKyAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBpbiBzZWxm
Ll9zdHJlYW06CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXSA9IEgzU3RyZWFt
KHN0cmVhbV9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAg
ICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6IGludCwgZnJhbWVf
ZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFt
ZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6CisgICAgICAgICAgICBz
ZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbmNvZGVy
ID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICBtYXhfdGFi
bGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NBUEFDSVRZ
LCAwKSwKKyAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGluZ3MuZ2V0KFNldHRp
bmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9p
ZCwgZW5jb2RlcikKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5NQVhfUFVT
SF9JRDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBNQVhfUFVTSF9JRCIp
CisgICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9wdXNoX2lkKGZyYW1l
X2RhdGEpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCisgICAgICAgICAgICBGcmFtZVR5
cGUuREFUQSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5EVVBMSUNBVEVfUFVT
SCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSW52YWxp
ZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKKworICAgIGRlZiBfaGFuZGxlX3JlcXVl
c3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJhbWVfdHlwZTogaW50
LAorICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCisgICAgICAgIHN0cmVhbTog
SDNTdHJlYW0sCisgICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICApIC0+IExpc3RbSDNF
dmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFtZSByZWNlaXZlZCBvbiBh
IHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBodHRwX2V2ZW50
czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5
cGUuREFUQToKKyAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAg
ICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRlcnNTdGF0ZS5BRlRF
Ul9IRUFERVJTOgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBm
cmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAgICAgaWYgc3Ry
ZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lk
PXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0
cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6CisgICAgICAgICAgICAjIGNo
ZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRl
cnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2Vk
IGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICAgICAjIHRyeSB0byBkZWNvZGUgSEVBREVSUywg
bWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCisgICAgICAgICAgICBoZWFkZXJzID0g
c2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKKworICAg
ICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAg
ICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2Vu
Y29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9
c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZnJh
bWVfZGF0YSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxlbihmcmFtZV9k
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB1cGRhdGUgc3Rh
dGUgYW5kIGVtaXQgaGVhZGVycworICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNfcmVjdl9z
dGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgICAgICBzdHJlYW0uaGVh
ZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lk
LAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgc3RyZWFtLmZyYW1lX3R5cGUgPT0gRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgcmFpc2UgRnJhbWVV
bmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNFIikKKyAgICAgICAg
ICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCisgICAgICAgICAgICBwdXNo
X2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgaGVhZGVycyA9IHNl
bGYuX2RlY29kZV9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsIGZy
YW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50
PSJmcmFtZV9wYXJzZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX3B1
c2hfcHJvbWlzZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPWxl
bihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbWl0IGV2ZW50CisgICAg
ICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgUHVzaFByb21pc2VS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLCBwdXNoX2lkPXB1
c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBSSU9SSVRZLAorICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNFTF9QVVNILAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgRnJhbWVUeXBlLlBVU0hf
UFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCisgICAgICAgICAgICBGcmFt
ZVR5cGUuTUFYX1BVU0hfSUQsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRFX1BVU0gs
CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoCisgICAgICAg
ICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVhbSIKKyAgICAgICAg
ICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCisgICAgICAgICAgICAgICAgZWxzZSAi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAg
ICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9pbml0X2Nvbm5lY3Rpb24oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncworICAgICAgICBzZWxmLl9sb2Nh
bF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKFN0cmVhbVR5cGUu
Q09OVFJPTCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAg
ICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCisgICAgICAgICAgICBlbmNvZGVfZnJh
bWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgICAg
IGVuY29kZV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNlbGYuX21heF90YWJs
ZV9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tfQkxPQ0tF
RF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBp
ZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgICAgIHNl
bGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGVuY29kZV9mcmFt
ZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxmLl9tYXhfcHVzaF9p
ZCkpLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgY3JlYXRlIGVuY29kZXIgYW5kIGRlY29k
ZXIgc3RyZWFtcworICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9pZCA9IHNlbGYu
X2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAgICAgICAgU3RyZWFtVHlwZS5RUEFDS19FTkNPREVS
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQgPSBzZWxm
Ll9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RF
UgorICAgICAgICApCisKKyAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoCisg
ICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1fZW5kZWQ6
IGJvb2wKKyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIi
IgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgc3Ry
ZWFtLmJ1ZmZlciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAg
IHN0cmVhbS5lbmRlZCA9IFRydWUKKyAgICAgICAgaWYgc3RyZWFtLmJsb2NrZWQ6CisgICAgICAg
ICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIHNob3J0Y3V0IGZvciBEQVRBIGZy
YW1lIGZyYWdtZW50cworICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfdHlw
ZSA9PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV9zaXplIGlz
IG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIpIDwgc3RyZWFtLmZy
YW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9c3Ry
ZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBsZW4oc3RyZWFtLmJ1
ZmZlcikKKyAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHJldHVy
biBodHRwX2V2ZW50cworCisgICAgICAgICMgaGFuZGxlIGxvbmUgRklOCisgICAgICAgIGlmIHN0
cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICBodHRwX2V2ZW50
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPWIiIiwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1bWVkID0gMAorCisg
ICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZldGNoIG5leHQgZnJh
bWUgaGVhZGVyCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3R5cGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9z
aXplID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJS
ZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29u
c3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV90eXBlID09IEZy
YW1lVHlwZS5EQVRBCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdv
cnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2RhdGFfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFtLmZyYW1lX3NpemUs
IHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgaG93IG11Y2ggZGF0
YSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc3RyZWFtLmZyYW1l
X3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQorICAgICAgICAgICAgaWYgc3RyZWFtLmZy
YW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBzdHJlYW0uZnJhbWVf
c2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIHJlYWQgYXZhaWxh
YmxlIGRhdGEKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9ieXRlcyhjaHVua19z
aXplKQorICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICMg
ZGV0ZWN0IGVuZCBvZiBmcmFtZQorICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgLT0gY2h1
bmtfc2l6ZQorICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXplOgorICAgICAgICAg
ICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2RhdGE9ZnJhbWVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVuZGVkIGFu
ZCBidWYuZW9mKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6CisgICAgICAgICAgICAg
ICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWRf
ZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAgICAgICAgc3RyZWFt
LmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgIHJldHVybiBodHRw
X2V2ZW50cworCisgICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAgc2Vs
Ziwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9vbAorICAg
ICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0g
PSBbXQorCisgICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAgICBpZiBzdHJlYW1f
ZW5kZWQ6CisgICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgY29uc3VtZWQgPSAwCisgICAgICAg
IHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCisKKyAgICAgICAgd2hpbGUgc3Ry
ZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVmLmVvZigpOgorICAg
ICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9uYWwgc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5cGUgPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50
ZWxsKCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQorICAgICAgICAgICAgICAg
IGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9yKCJPbmx5IG9u
ZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVI6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNvZGVyIHN0
cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFtLnN0cmVhbV9pZAor
ICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBB
Q0tfRU5DT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9lbmNvZGVyX3N0
cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0cmVh
bUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIFFQ
QUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQgPSBzdHJl
YW0uc3RyZWFtX2lkCisKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJl
YW1UeXBlLkNPTlRST0w6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0IGZyYW1lCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9i
eXRlcyhmcmFtZV9sZW5ndGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb250cm9sX2ZyYW1l
KGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBwdXNoIGlk
CisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2hfaWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFk
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMgcmVtb3ZlIHByb2Nl
c3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgICAgICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0
cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
Y2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbV9lbmRlZCkKKyAg
ICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBBQ0tfREVD
T0RFUjoKKyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBkZWNvZGVyCisg
ICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50
ZWxsKCkpCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyLmZlZWRfZGVjb2Rl
cihkYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVjb2RlclN0cmVhbUVy
cm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvZGVyU3RyZWFt
RXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfcmVj
ZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9
PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAgIyBmZWVkIHVuZnJh
bWVkIGRhdGEgdG8gZW5jb2RlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRl
cyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdW5i
bG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNvZGVyKGRhdGEpKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVhbUVycm9yIGFzIGV4
YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoKSBm
cm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgKz0g
bGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgdW5rbm93biBz
dHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCisgICAgICAgICAgICAgICAgYnVmLnNlZWsoYnVmLmNh
cGFjaXR5KQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAg
ICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgIHN0cmVhbS5idWZm
ZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAjIHByb2Nlc3MgdW5ibG9j
a2VkIHN0cmVhbXMKKyAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2NrZWRfc3RyZWFtczoK
KyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAgICAgICAg
ICAgICMgcmVzdW1lIGhlYWRlcnMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQgYW5kIG5v
dCBzdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0cmVhbS5ibG9ja2Vk
X2ZyYW1lX3NpemUgPSBOb25lCisKKyAgICAgICAgICAgICMgcmVzdW1lIHByb2Nlc3NpbmcKKyAg
ICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVz
aF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QyMWM1YWJjNDI3MGMyZThmMWJlNThhMDA5YWU3NTI4MTJkMWExNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMucHkK
QEAgLTAsMCArMSw2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK0hlYWRlcnMgPSBMaXN0W1R1
cGxlW2J5dGVzLCBieXRlc11dCisKKworY2xhc3MgSDNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBIVFRQLzMgZXZlbnRzLgorICAgICIiIgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IERhdGFSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYSBzdHJlYW0gZnJvbQor
ICAgIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRo
ZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJU
aGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworICAgIHN0
cmVhbV9lbmRlZDogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBG
SU4gYml0IHNldC4iCisKKyAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICJU
aGUgUHVzaCBJRCBvciBgTm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBIZWFkZXJzUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIEhl
YWRlcnNSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBoZWFkZXJzIGFyZSByZWNlaXZl
ZC4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhlYWRlcnMKKyAgICAiVGhlIGhlYWRlcnMuIgor
CisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGhlYWRl
cnMgd2VyZSByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBib29sCisgICAgIldo
ZXRoZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHB1c2hf
aWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9yIGBOb25lYCBpZiB0
aGlzIGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFB1c2hQcm9taXNlUmVj
ZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFB1c2hlZFN0cmVhbVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcHVzaGVkIHN0cmVhbSBoYXMgYmVlbgorICAgIHJlY2Vp
dmVkIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICIiIgorCisgICAgaGVhZGVyczogSGVhZGVy
cworICAgICJUaGUgcmVxdWVzdCBoZWFkZXJzLiIKKworICAgIHB1c2hfaWQ6IGludAorICAgICJU
aGUgUHVzaCBJRCBvZiB0aGUgcHVzaCBwcm9taXNlLiIKKworICAgIHN0cmVhbV9pZDogaW50Cisg
ICAgIlRoZSBTdHJlYW0gSUQgb2YgdGhlIHN0cmVhbSB0aGF0IHRoZSBwdXNoIGlzIHJlbGF0ZWQg
dG8uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTIwMGMxZDYxZmE1YjNhMTE1YjQzNDY0ZDU2N2VhM2FhMjg1NzZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKQEAgLTAsMCAr
MSwxMCBAQAorY2xhc3MgSDNFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xh
c3MgZm9yIEhUVFAvMyBleGNlcHRpb25zLgorICAgICIiIgorCisKK2NsYXNzIE5vQXZhaWxhYmxl
UHVzaElERXJyb3IoSDNFcnJvcik6CisgICAgIiIiCisgICAgVGhlcmUgYXJlIG5vIGF2YWlsYWJs
ZSBwdXNoIElEcyBsZWZ0LgorICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL3cz
Yy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzYzZTliNjA4MGIwZWYzZThiZDY4YWE1MzMwMjQ5
ZGZmMTIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2gzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRzLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9w
eS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTY0MmY3OWYyMWQ4NzJmMDEwOTc5ZGNmNmYwYzRhNDE1YWNj
MTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVk
CkBAIC0wLDAgKzEgQEAKK01hcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2lu
aXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJj
MjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19p
bml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29u
ZmlndXJhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZpZ3VyYXRp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3ZjNlYTYxZDBkYTA3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZp
Z3VyYXRpb24ucHkKQEAgLTAsMCArMSwxMjQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcywgZmllbGQKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4dElPLCBVbmlvbgorCitmcm9tIC4udGxzIGltcG9y
dCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9wcml2YXRlX2tleSwgbG9hZF9wZW1feDUwOV9jZXJ0
aWZpY2F0ZXMKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJvbSAucGFja2V0IGlt
cG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0NvbmZp
Z3VyYXRpb246CisgICAgIiIiCisgICAgQSBRVUlDIGNvbmZpZ3VyYXRpb24uCisgICAgIiIiCisK
KyAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICAiIiIK
KyAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFMUE4gcHJvdG9jb2xzLgorICAgICIiIgorCisgICAg
Y29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9IDgKKyAgICAiIiIKKyAgICBUaGUgbGVuZ3RoIGlu
IGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24gSURzLgorICAgICIiIgorCisgICAgaWRsZV90aW1l
b3V0OiBmbG9hdCA9IDYwLjAKKyAgICAiIiIKKyAgICBUaGUgaWRsZSB0aW1lb3V0IGluIHNlY29u
ZHMuCisKKyAgICBUaGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkIGlmIG5vdGhpbmcgaXMgcmVj
ZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KKyAgICAiIiIKKworICAgIGlzX2NsaWVudDog
Ym9vbCA9IFRydWUKKyAgICAiIiIKKyAgICBXaGV0aGVyIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRl
IG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBtYXhfZGF0YTogaW50ID0g
MTA0ODU3NgorICAgICIiIgorICAgIENvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQu
CisgICAgIiIiCisKKyAgICBtYXhfc3RyZWFtX2RhdGE6IGludCA9IDEwNDg1NzYKKyAgICAiIiIK
KyAgICBQZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIKKworICAgIHF1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyXSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUgOmNs
YXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5RdWljTG9nZ2VyYCBpbnN0YW5jZSB0byBsb2cgZXZl
bnRzIHRvLgorICAgICIiIgorCisgICAgc2VjcmV0c19sb2dfZmlsZTogVGV4dElPID0gTm9uZQor
ICAgICIiIgorICAgIEEgZmlsZS1saWtlIG9iamVjdCBpbiB3aGljaCB0byBsb2cgdHJhZmZpYyBz
ZWNyZXRzLgorCisgICAgVGhpcyBpcyB1c2VmdWwgdG8gYW5hbHl6ZSB0cmFmZmljIGNhcHR1cmVz
IHdpdGggV2lyZXNoYXJrLgorICAgICIiIgorCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgIiIiCisgICAgVGhlIHNlcnZlciBuYW1lIHRvIHNlbmQgZHVyaW5nIHRo
ZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgorCisgICAgLi4gbm90
ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNsaWVudHMuCisgICAgIiIiCisKKyAgICBzZXNzaW9u
X3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgIiIiCisgICAgVGhl
IFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3Igc2Vzc2lvbiByZXN1
bXB0aW9uLgorICAgICIiIgorCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNhcGF0aDogT3B0aW9uYWxbc3Ry
XSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0ZTogQW55ID0gTm9uZQorICAgIGNlcnRpZmljYXRlX2No
YWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKyAgICBtYXhfZGF0
YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBwcml2YXRlX2tleTog
QW55ID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzX3Rlc3Q6IGJvb2wgPSBGYWxzZQorICAg
IHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRf
ZmFjdG9yeT1sYW1iZGE6IFsKKyAgICAgICAgICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRf
MjcsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI2LAorICAgICAgICAg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICAgICAgXQorICAgICkKKyAgICB2
ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBsb2FkX2NlcnRfY2hh
aW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNlcnRmaWxlOiBQYXRoTGlrZSwKKyAgICAgICAg
a2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2VdID0gTm9uZSwKKyAgICAgICAgcGFzc3dvcmQ6IE9w
dGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBj
ZXJ0aWZpY2F0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3BlbihjZXJ0ZmlsZSwgInJi
IikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBsb2FkX3BlbV94NTA5X2NlcnRp
ZmljYXRlcyhmcC5yZWFkKCkpCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0
ZXNbMF0KKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbiA9IGNlcnRpZmljYXRlc1sxOl0K
KworICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVu
KGtleWZpbGUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNlbGYucHJpdmF0ZV9rZXkg
PSBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgZnAucmVhZCgpLAor
ICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZC5lbmNvZGUoInV0ZjgiKQorICAg
ICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhc3N3b3JkLCBzdHIpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGxv
YWRfdmVyaWZ5X2xvY2F0aW9ucygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgY2FmaWxlOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9y
aXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvCisgICAgICAgIHZhbGlkYXRlIG90aGVyIHBl
ZXJzJyBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNhZmlsZSA9IGNh
ZmlsZQorICAgICAgICBzZWxmLmNhcGF0aCA9IGNhcGF0aAorICAgICAgICBzZWxmLmNhZGF0YSA9
IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVj
dGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDYxZGY0ZmMxOTE2ZmRhM2VmYjQ2MWU2NjczNGVjMzU5YWUwYzMyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkK
QEAgLTAsMCArMSwyNjUyIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3MKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGRhdGFjbGFzc2VzIGlt
cG9ydCBkYXRhY2xhc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueSwgRGVxdWUsIERpY3QsIEZyb3plblNldCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBU
dXBsZQorCitmcm9tIC4uIGltcG9ydCB0bHMKK2Zyb20gLi5idWZmZXIgaW1wb3J0IFVJTlRfVkFS
X01BWCwgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIHNpemVfdWludF92YXIKK2Zyb20gLiBpbXBv
cnQgZXZlbnRzCitmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgor
ZnJvbSAuY3J5cHRvIGltcG9ydCBDcnlwdG9FcnJvciwgQ3J5cHRvUGFpciwgS2V5VW5hdmFpbGFi
bGVFcnJvcgorZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tl
dCBpbXBvcnQgKAorICAgIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tF
VF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9U
WVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVS
T19SVFQsCisgICAgUFJPQklOR19GUkFNRV9UWVBFUywKKyAgICBSRVRSWV9JTlRFR1JJVFlfVEFH
X1NJWkUsCisgICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIFF1aWNQ
cm90b2NvbFZlcnNpb24sCisgICAgUXVpY1N0cmVhbUZyYW1lLAorICAgIFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzLAorICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAgIGdldF9zcGluX2Jp
dCwKKyAgICBpc19sb25nX2hlYWRlciwKKyAgICBwdWxsX2Fja19mcmFtZSwKKyAgICBwdWxsX3F1
aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKyAgICBwdXNo
X2Fja19mcmFtZSwKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCispCitmcm9t
IC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgKAorICAgIFBBQ0tFVF9NQVhfU0laRSwKKyAgICBRdWlj
RGVsaXZlcnlTdGF0ZSwKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAgICBRdWljUGFja2V0QnVp
bGRlclN0b3AsCispCitmcm9tIC5yZWNvdmVyeSBpbXBvcnQgS19HUkFOVUxBUklUWSwgUXVpY1Bh
Y2tldFJlY292ZXJ5LCBRdWljUGFja2V0U3BhY2UKK2Zyb20gLnN0cmVhbSBpbXBvcnQgUXVpY1N0
cmVhbQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicXVpYyIpCisKK0VQT0NIX1NIT1JU
Q1VUUyA9IHsKKyAgICAiSSI6IHRscy5FcG9jaC5JTklUSUFMLAorICAgICJIIjogdGxzLkVwb2No
LkhBTkRTSEFLRSwKKyAgICAiMCI6IHRscy5FcG9jaC5aRVJPX1JUVCwKKyAgICAiMSI6IHRscy5F
cG9jaC5PTkVfUlRULAorfQorTUFYX0VBUkxZX0RBVEEgPSAweEZGRkZGRkZGCitTRUNSRVRTX0xB
QkVMUyA9IFsKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX0NMSUVOVF9FQVJM
WV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NMSUVOVF9IQU5EU0hBS0VfVFJBRkZJ
Q19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAg
XSwKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX1NF
UlZFUl9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19TRVJWRVJfVFJB
RkZJQ19TRUNSRVRfMCIsCisgICAgXSwKK10KK1NUUkVBTV9GTEFHUyA9IDB4MDcKKworTmV0d29y
a0FkZHJlc3MgPSBBbnkKKworIyBmcmFtZSBzaXplcworQUNLX0ZSQU1FX0NBUEFDSVRZID0gNjQg
ICMgRklYTUU6IHRoaXMgaXMgYXJiaXRyYXJ5IQorQVBQTElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQ
QUNJVFkgPSAxICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCitIQU5EU0hBS0VfRE9ORV9GUkFN
RV9DQVBBQ0lUWSA9IDEKK01BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK01BWF9TVFJF
QU1fREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOAorTkVXX0NPTk5FQ1RJT05fSURfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyAxICsgMjAgKyAxNgorUEFUSF9DSEFMTEVOR0VfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOAorUEFUSF9SRVNQT05TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4
CitQSU5HX0ZSQU1FX0NBUEFDSVRZID0gMQorUkVUSVJFX0NPTk5FQ1RJT05fSURfQ0FQQUNJVFkg
PSAxICsgOAorU1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZID0gMSArIDgKK1RSQU5TUE9SVF9DTE9T
RV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCisKKwor
ZGVmIEVQT0NIUyhzaG9ydGN1dDogc3RyKSAtPiBGcm96ZW5TZXRbdGxzLkVwb2NoXToKKyAgICBy
ZXR1cm4gZnJvemVuc2V0KEVQT0NIX1NIT1JUQ1VUU1tpXSBmb3IgaSBpbiBzaG9ydGN1dCkKKwor
CitkZWYgZHVtcF9jaWQoY2lkOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVybiBiaW5hc2NpaS5o
ZXhsaWZ5KGNpZCkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIGdldF9lcG9jaChwYWNrZXRfdHlw
ZTogaW50KSAtPiB0bHMuRXBvY2g6CisgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVf
SU5JVElBTDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5JTklUSUFMCisgICAgZWxpZiBwYWNr
ZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9aRVJPX1JUVDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9j
aC5aRVJPX1JUVAorICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSEFORFNIQUtF
OgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgIGVsc2U6CisgICAgICAg
IHJldHVybiB0bHMuRXBvY2guT05FX1JUVAorCisKK2RlZiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUg
aWYgdGhlIHN0cmVhbSBpcyBjbGllbnQgaW5pdGlhdGVkLgorICAgICIiIgorICAgIHJldHVybiBu
b3QgKHN0cmVhbV9pZCAmIDEpCisKKworZGVmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJl
YW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUgaWYgdGhlIHN0
cmVhbSBpcyB1bmlkaXJlY3Rpb25hbC4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbChzdHJlYW1f
aWQgJiAyKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uRXJyb3IoRXhjZXB0aW9uKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBlOiBpbnQsIHJlYXNv
bl9waHJhc2U6IHN0cik6CisgICAgICAgIHNlbGYuZXJyb3JfY29kZSA9IGVycm9yX2NvZGUKKyAg
ICAgICAgc2VsZi5mcmFtZV90eXBlID0gZnJhbWVfdHlwZQorICAgICAgICBzZWxmLnJlYXNvbl9w
aHJhc2UgPSByZWFzb25fcGhyYXNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6Cisg
ICAgICAgIHMgPSAiRXJyb3I6ICVkLCByZWFzb246ICVzIiAlIChzZWxmLmVycm9yX2NvZGUsIHNl
bGYucmVhc29uX3BocmFzZSkKKyAgICAgICAgaWYgc2VsZi5mcmFtZV90eXBlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcyArPSAiLCBmcmFtZV90eXBlOiAlcyIgJSBzZWxmLmZyYW1lX3R5cGUK
KyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkFkYXB0ZXIobG9nZ2lu
Zy5Mb2dnZXJBZGFwdGVyKToKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBtc2c6IHN0ciwga3dhcmdz
OiBBbnkpIC0+IFR1cGxlW3N0ciwgQW55XToKKyAgICAgICAgcmV0dXJuICJbJXNdICVzIiAlIChz
ZWxmLmV4dHJhWyJpZCJdLCBtc2cpLCBrd2FyZ3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWlj
Q29ubmVjdGlvbklkOgorICAgIGNpZDogYnl0ZXMKKyAgICBzZXF1ZW5jZV9udW1iZXI6IGludAor
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMgPSBiIiIKKyAgICB3YXNfc2VudDogYm9v
bCA9IEZhbHNlCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25TdGF0ZShFbnVtKToKKyAgICBGSVJT
VEZMSUdIVCA9IDAKKyAgICBDT05ORUNURUQgPSAxCisgICAgQ0xPU0lORyA9IDIKKyAgICBEUkFJ
TklORyA9IDMKKyAgICBURVJNSU5BVEVEID0gNAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNO
ZXR3b3JrUGF0aDoKKyAgICBhZGRyOiBOZXR3b3JrQWRkcmVzcworICAgIGJ5dGVzX3JlY2VpdmVk
OiBpbnQgPSAwCisgICAgYnl0ZXNfc2VudDogaW50ID0gMAorICAgIGlzX3ZhbGlkYXRlZDogYm9v
bCA9IEZhbHNlCisgICAgbG9jYWxfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgcmVtb3RlX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisgICAgZGVmIGNh
bl9zZW5kKHNlbGYsIHNpemU6IGludCkgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNf
dmFsaWRhdGVkIG9yIChzZWxmLmJ5dGVzX3NlbnQgKyBzaXplKSA8PSAzICogc2VsZi5ieXRlc19y
ZWNlaXZlZAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNSZWNlaXZlQ29udGV4dDoKKyAgICBl
cG9jaDogdGxzLkVwb2NoCisgICAgaG9zdF9jaWQ6IGJ5dGVzCisgICAgbmV0d29ya19wYXRoOiBR
dWljTmV0d29ya1BhdGgKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbQW55
XV0KKyAgICB0aW1lOiBmbG9hdAorCisKK0VORF9TVEFURVMgPSBmcm96ZW5zZXQoCisgICAgWwor
ICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcsCisgICAgICAgIFF1aWNDb25uZWN0
aW9uU3RhdGUuRFJBSU5JTkcsCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRF
RCwKKyAgICBdCispCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb246CisgICAgIiIiCisgICAgQSBR
VUlDIGNvbm5lY3Rpb24uCisKKyAgICBUaGUgc3RhdGUgbWFjaGluZSBpcyBkcml2ZW4gYnkgdGhy
ZWUga2luZHMgb2Ygc291cmNlczoKKworICAgIC0gdGhlIEFQSSB1c2VyIHJlcXVlc3RpbmcgZGF0
YSB0byBiZSBzZW5kIG91dCAoc2VlIDptZXRoOmBjb25uZWN0YCwKKyAgICAgIDptZXRoOmBzZW5k
X3BpbmdgLCA6bWV0aDpgc2VuZF9kYXRhZ3JhbV9kYXRhYCBhbmQgOm1ldGg6YHNlbmRfc3RyZWFt
X2RhdGFgKQorICAgIC0gZGF0YSBiZWluZyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIChzZWUg
Om1ldGg6YHJlY2VpdmVfZGF0YWdyYW1gKQorICAgIC0gYSB0aW1lciBmaXJpbmcgKHNlZSA6bWV0
aDpgaGFuZGxlX3RpbWVyYCkKKworICAgIDpwYXJhbSBjb25maWd1cmF0aW9uOiBUaGUgUVVJQyBj
b25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3Vy
YXRpb24sCisgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lv
blRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjog
T3B0aW9uYWxbdGxzLlNlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgKSAtPiBOb25l
OgorICAgICAgICBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudDoKKyAgICAgICAgICAgIGFzc2Vy
dCAoCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBpcyBOb25lCisgICAg
ICAgICAgICApLCAiQ2Fubm90IHNldCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGZvciBhIGNsaWVu
dCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKSwgIlNT
TCBjZXJ0aWZpY2F0ZSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisgICAgICAgICAgICBhc3Nl
cnQgKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkgaXMgbm90IE5v
bmUKKyAgICAgICAgICAgICksICJTU0wgcHJpdmF0ZSBrZXkgaXMgcmVxdWlyZWQgZm9yIGEgc2Vy
dmVyIgorCisgICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9jb25maWd1cmF0
aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9pc19jbGllbnQgPSBjb25maWd1cmF0
aW9uLmlzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Fja19kZWxheSA9IEtfR1JBTlVMQVJJVFkK
KyAgICAgICAgc2VsZi5fY2xvc2VfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fY2xvc2VfZXZlbnQ6IE9wdGlvbmFsW2V2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZF0g
PSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fY3J5cHRvczogRGljdFt0bHMuRXBvY2gsIENyeXB0b1BhaXJdID0ge30KKyAgICAgICAgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnM6IERpY3RbdGxzLkVwb2NoLCBCdWZmZXJdID0ge30KKyAgICAgICAg
c2VsZi5fY3J5cHRvX3N0cmVhbXM6IERpY3RbdGxzLkVwb2NoLCBRdWljU3RyZWFtXSA9IHt9Cisg
ICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbZXZlbnRzLlF1aWNFdmVudF0gPSBkZXF1ZSgpCisg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX2hh
bmRzaGFrZV9jb25maXJtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ob3N0X2NpZHMgPSBbCisg
ICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAgIGNpZD1vcy51cmFu
ZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcj0wLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tl
bj1vcy51cmFuZG9tKDE2KSwKKyAgICAgICAgICAgICAgICB3YXNfc2VudD1UcnVlLAorICAgICAg
ICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBzZWxmLl9ob3N0X2Np
ZHNbMF0uY2lkCisgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSA9IDEKKyAgICAgICAgc2VsZi5f
bG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9sb2NhbF9hY3RpdmVf
Y29ubmVjdGlvbl9pZF9saW1pdCA9IDgKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGEgPSBj
b25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQg
PSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Vz
ZWQgPSAwCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0g
Y29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IGNvbmZpZ3VyYXRpb24ubWF4
X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGkgPSAxMjgK
KyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pID0gMTI4CisgICAgICAgIHNlbGYu
X2xvc3NfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmV0d29ya19w
YXRoczogTGlzdFtRdWljTmV0d29ya1BhdGhdID0gW10KKyAgICAgICAgc2VsZi5fb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZCA9IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgc2VsZi5fcGFj
aW5nX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9udW1i
ZXIgPSAwCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAg
ICBzZWxmLl9wZWVyX2NpZCA9IG9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lk
X2xlbmd0aCkKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6IExpc3RbUXVpY0Nvbm5lY3Rpb25J
ZF0gPSBbXQorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gYiIiCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZQorICAgICAgICBzZWxm
Ll9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9yZW1vdGVfYWN0
aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9pZGxlX3Rp
bWVvdXQgPSAwLjAgICMgc2Vjb25kcworICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGEgPSAw
CisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkID0gMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCA9IDAKKyAgICAgICAg
c2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IDAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtc19iaWRpID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5p
ID0gMAorICAgICAgICBzZWxmLl9zcGFjZXM6IERpY3RbdGxzLkVwb2NoLCBRdWljUGFja2V0U3Bh
Y2VdID0ge30KKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
cGluX2hpZ2hlc3RfcG4gPSAwCisgICAgICAgIHNlbGYuX3N0YXRlID0gUXVpY0Nvbm5lY3Rpb25T
dGF0ZS5GSVJTVEZMSUdIVAorICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgPSAw
CisgICAgICAgIHNlbGYuX3N0cmVhbXM6IERpY3RbaW50LCBRdWljU3RyZWFtXSA9IHt9CisgICAg
ICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOiBMaXN0W1F1aWNTdHJlYW1dID0gW10KKyAg
ICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaTogTGlzdFtRdWljU3RyZWFtXSA9IFtdCisg
ICAgICAgIHNlbGYuX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAgICAgIyBs
b2dnaW5nCisgICAgICAgIGlmIGxvZ2dlcl9jb25uZWN0aW9uX2lkIGlzIE5vbmU6CisgICAgICAg
ICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IFF1aWNDb25uZWN0aW9uQWRhcHRlcigKKyAgICAgICAgICAgIGxvZ2dlciwgeyJp
ZCI6IGR1bXBfY2lkKGxvZ2dlcl9jb25uZWN0aW9uX2lkKX0KKyAgICAgICAgKQorICAgICAgICBp
ZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIgPSBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnN0YXJ0X3RyYWNlKAorICAgICAgICAgICAg
ICAgIGlzX2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9bG9nZ2VyX2Nvbm5l
Y3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvc3MgcmVjb3ZlcnkKKyAgICAg
ICAgc2VsZi5fbG9zcyA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAgICAgIGlzX2NsaWVu
dF93aXRob3V0XzFydHQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAgcXVpY19sb2dnZXI9
c2VsZi5fcXVpY19sb2dnZXIsCisgICAgICAgICAgICBzZW5kX3Byb2JlPXNlbGYuX3NlbmRfcHJv
YmUsCisgICAgICAgICkKKworICAgICAgICAjIHRoaW5ncyB0byBzZW5kCisgICAgICAgIHNlbGYu
X2Nsb3NlX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzog
RGVxdWVbYnl0ZXNdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5k
aW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nOiBMaXN0W2ludF0gPSBbXQor
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmV0aXJl
X2Nvbm5lY3Rpb25faWRzOiBMaXN0W2ludF0gPSBbXQorICAgICAgICBzZWxmLl9zdHJlYW1zX2Js
b2NrZWRfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAgICAg
ICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIK
KworICAgICAgICAjIGZyYW1lIGhhbmRsZXJzCisgICAgICAgIHNlbGYuX19mcmFtZV9oYW5kbGVy
cyA9IHsKKyAgICAgICAgICAgIDB4MDA6IChzZWxmLl9oYW5kbGVfcGFkZGluZ19mcmFtZSwgRVBP
Q0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMTogKHNlbGYuX2hhbmRsZV9waW5nX2ZyYW1l
LCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAweDAyOiAoc2VsZi5faGFuZGxlX2Fja19m
cmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDAzOiAoc2VsZi5faGFuZGxlX2Fj
a19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA0OiAoc2VsZi5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MDU6IChz
ZWxmLl9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgwNjogKHNlbGYuX2hhbmRsZV9jcnlwdG9fZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAg
ICAgICAgICAgMHgwNzogKHNlbGYuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUsIEVQT0NIUygiMSIp
KSwKKyAgICAgICAgICAgIDB4MDg6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgwOTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQ
T0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBBOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEI6IChzZWxmLl9oYW5kbGVfc3RyZWFt
X2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQzogKHNlbGYuX2hhbmRsZV9z
dHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBEOiAoc2VsZi5faGFu
ZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEU6IChzZWxm
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwRjog
KHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDEwOiAoc2VsZi5faGFuZGxlX21heF9kYXRhX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICAgICAgMHgxMTogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUsIEVQT0NIUygi
MDEiKSksCisgICAgICAgICAgICAweDEyOiAoc2VsZi5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEzOiAoc2VsZi5faGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTQ6IChz
ZWxmLl9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgxNTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxNjogKHNlbGYuX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE3OiAoc2VsZi5faGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTg6IChz
ZWxmLl9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAg
ICAgICAgICAweDE5OiAoc2VsZi5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lLCBF
UE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQTogKHNlbGYuX2hhbmRsZV9wYXRoX2NoYWxs
ZW5nZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUI6IChzZWxmLl9oYW5k
bGVfcGF0aF9yZXNwb25zZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUM6
IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisg
ICAgICAgICAgICAweDFEOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUsIEVQ
T0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MUU6IChzZWxmLl9oYW5kbGVfaGFuZHNoYWtlX2Rv
bmVfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MzA6IChzZWxmLl9oYW5kbGVf
ZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDMxOiAoc2VsZi5f
aGFuZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICB9CisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgY29uZmlndXJhdGlvbihzZWxmKSAtPiBRdWljQ29uZmlndXJhdGlv
bjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBjaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU3dpdGNo
IHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBjb25uZWN0aW9uIElEIGFuZCByZXRpcmUKKyAgICAgICAg
dGhlIHByZXZpb3VzIG9uZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNh
bGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAgIHdo
aWNoIG5lZWRzIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wZWVy
X2NpZF9hdmFpbGFibGU6CisgICAgICAgICAgICAjIHJldGlyZSBwcmV2aW91cyBDSUQKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiUmV0aXJpbmcgQ0lE
ICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3BlZXJfY2lkX3NlcQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFw
cGVuZChzZWxmLl9wZWVyX2NpZF9zZXEpCisKKyAgICAgICAgICAgICMgYXNzaWduIG5ldyBDSUQK
KyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUucG9w
KDApCisgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSBjb25uZWN0aW9uX2lkLnNlcXVl
bmNlX251bWJlcgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBjb25uZWN0aW9uX2lkLmNp
ZAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJTd2l0
Y2hpbmcgdG8gQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3Bl
ZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKAorICAgICAgICBzZWxm
LAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQgPSBRdWljRXJyb3JDb2RlLk5PX0VSUk9SLAorICAg
ICAgICBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgcmVhc29uX3Bo
cmFzZTogc3RyID0gIiIsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xv
c2UgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgOnBhcmFtIGVycm9yX2NvZGU6IEFuIGVycm9y
IGNvZGUgaW5kaWNhdGluZyB3aHkgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJlaW5nIGNsb3NlZC4KKyAgICAgICAgOnBhcmFtIHJlYXNvbl9waHJhc2U6IEEg
aHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2Ygd2h5IHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisgICAgICAgICIiIgorICAg
ICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHNlbGYu
X2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IFRydWUKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBub3c6IGZsb2F0KSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2Uu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFu
ZCBhIHNpbmdsZSB0aW1lLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2Fs
bCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hp
Y2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsg
YWRkcmVzcyBvZiB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJy
ZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2Vs
Zi5faXNfY2xpZW50IGFuZCBub3Qgc2VsZi5fY29ubmVjdF9jYWxsZWQKKyAgICAgICAgKSwgImNv
bm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUi
CisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX25l
dHdvcmtfcGF0aHMgPSBbUXVpY05ldHdvcmtQYXRoKGFkZHIsIGlzX3ZhbGlkYXRlZD1UcnVlKV0K
KyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3Zl
cnNpb25zWzBdCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKworICAgIGRlZiBkYXRh
Z3JhbXNfdG9fc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBMaXN0W1R1cGxlW2J5dGVzLCBOZXR3
b3JrQWRkcmVzc11dOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBgKGRh
dGEsIGFkZHIpYCB0dXBsZXMgb2YgZGF0YWdyYW1zIHdoaWNoIG5lZWQgdG8gYmUKKyAgICAgICAg
c2VudCwgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MgdG8gd2hpY2ggdGhleSBuZWVkIHRvIGJlIHNl
bnQuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBnZXRf
dGltZXJgIHRvIGtub3cgd2hlbiB0aGUgbmV4dAorICAgICAgICB0aW1lciBuZWVkcyB0byBiZSBz
ZXQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgIiIi
CisgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX25ldHdvcmtfcGF0aHNbMF0KKworICAgICAg
ICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
KyAgICAgICAgIyBidWlsZCBkYXRhZ3JhbXMKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRC
dWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9c2VsZi5ob3N0X2NpZCwKKyAgICAgICAgICAg
IGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNl
bGYuX3BhY2tldF9udW1iZXIsCisgICAgICAgICAgICBwZWVyX2NpZD1zZWxmLl9wZWVyX2NpZCwK
KyAgICAgICAgICAgIHBlZXJfdG9rZW49c2VsZi5fcGVlcl90b2tlbiwKKyAgICAgICAgICAgIHF1
aWNfbG9nZ2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc3Bpbl9iaXQ9c2VsZi5f
c3Bpbl9iaXQsCisgICAgICAgICAgICB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24sCisgICAgICAgICkK
KyAgICAgICAgaWYgc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIGZvciBlcG9jaCwg
cGFja2V0X3R5cGUgaW4gKAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2guT05FX1JUVCwgUEFD
S0VUX1RZUEVfT05FX1JUVCksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5IQU5EU0hBS0Us
IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5JTklU
SUFMLCBQQUNLRVRfVFlQRV9JTklUSUFMKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg
ICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgICAgICBpZiBjcnlw
dG8uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1zZWxmLl9jbG9z
ZV9ldmVudC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1z
ZWxmLl9jbG9zZV9ldmVudC5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT1zZWxmLl9jbG9zZV9ldmVudC5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBGYWxz
ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi5fY2xvc2VfYmVn
aW4oaXNfaW5pdGlhdG9yPVRydWUsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAjIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5
dGVzID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuY29uZ2VzdGlvbl93aW5kb3cgLSBz
ZWxmLl9sb3NzLmJ5dGVzX2luX2ZsaWdodAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYg
c2VsZi5fcHJvYmVfcGVuZGluZyBhbmQgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVzIDwgUEFDS0VU
X01BWF9TSVpFOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IFBB
Q0tFVF9NQVhfU0laRQorCisgICAgICAgICAgICAjIGxpbWl0IGRhdGEgb24gdW4tdmFsaWRhdGVk
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRh
dGVkOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gKAorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKiAzIC0gbmV0d29ya19w
YXRoLmJ5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZDoKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIGVwb2NoIGluIFt0bHMuRXBvY2guSU5JVElBTCwgdGxzLkVwb2NoLkhB
TkRTSEFLRV06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9oYW5kc2hha2Uo
YnVpbGRlciwgZXBvY2gsIG5vdykKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9hcHBsaWNh
dGlvbihidWlsZGVyLCBuZXR3b3JrX3BhdGgsIG5vdykKKyAgICAgICAgICAgIGV4Y2VwdCBRdWlj
UGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorCisgICAgICAgIGlmIGRhdGFncmFtczoK
KyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgPSBidWlsZGVyLnBhY2tldF9udW1iZXIK
KworICAgICAgICAgICAgIyByZWdpc3RlciBwYWNrZXRzCisgICAgICAgICAgICBzZW50X2hhbmRz
aGFrZSA9IEZhbHNlCisgICAgICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAg
ICAgICAgICAgcGFja2V0LnNlbnRfdGltZSA9IG5vdworICAgICAgICAgICAgICAgIHNlbGYuX2xv
c3Mub25fcGFja2V0X3NlbnQoCisgICAgICAgICAgICAgICAgICAgIHBhY2tldD1wYWNrZXQsIHNw
YWNlPXNlbGYuX3NwYWNlc1twYWNrZXQuZXBvY2hdCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGlmIHBhY2tldC5lcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAg
ICAgICAgICAgICAgICBzZW50X2hhbmRzaGFrZSA9IFRydWUKKworICAgICAgICAgICAgICAgICMg
bG9nIHBhY2tldAorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfc2VudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBzZWxm
Ll9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFja2V0LnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXQucGFja2V0X251bWJlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IHBhY2tldC5z
ZW50X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBf
Y2lkKHNlbGYuaG9zdF9jaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
X2xvbmdfaGVhZGVyKHBhY2tldC5wYWNrZXRfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQi
OiBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcGFja2V0LnF1aWNfbG9n
Z2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBjYW4gZGlzY2FyZCBpbml0aWFsIGtl
eXMKKyAgICAgICAgICAgIGlmIHNlbnRfaGFuZHNoYWtlIGFuZCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5JVElBTCkKKwor
ICAgICAgICAjIHJldHVybiBkYXRhZ3JhbXMgdG8gc2VuZCBhbmQgdGhlIGRlc3RpbmF0aW9uIG5l
dHdvcmsgYWRkcmVzcworICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgZGF0YWdyYW0gaW4g
ZGF0YWdyYW1zOgorICAgICAgICAgICAgYnl0ZV9sZW5ndGggPSBsZW4oZGF0YWdyYW0pCisgICAg
ICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudCArPSBieXRlX2xlbmd0aAorICAgICAgICAg
ICAgcmV0LmFwcGVuZCgoZGF0YWdyYW0sIG5ldHdvcmtfcGF0aC5hZGRyKSkKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
dHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFncmFtc19zZW50IiwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogYnl0ZV9sZW5ndGgsICJj
b3VudCI6IDF9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAg
ZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw9
RmFsc2UpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3RyZWFtIElE
IGZvciB0aGUgbmV4dCBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGVuZHBvaW50LgorICAgICAgICAi
IiIKKyAgICAgICAgc3RyZWFtX2lkID0gKGludChpc191bmlkaXJlY3Rpb25hbCkgPDwgMSkgfCBp
bnQobm90IHNlbGYuX2lzX2NsaWVudCkKKyAgICAgICAgd2hpbGUgc3RyZWFtX2lkIGluIHNlbGYu
X3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW1faWQgKz0gNAorICAgICAgICByZXR1cm4gc3Ry
ZWFtX2lkCisKKyAgICBkZWYgZ2V0X3RpbWVyKHNlbGYpIC0+IE9wdGlvbmFsW2Zsb2F0XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgdGltZXIgc2hv
dWxkIGZpcmUgb3IgTm9uZSBpZiBubyB0aW1lciBpcyBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICB0aW1lcl9hdCA9IHNlbGYuX2Nsb3NlX2F0CisgICAgICAgIGlmIHNlbGYuX3N0YXRlIG5v
dCBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgIyBhY2sgdGltZXIKKyAgICAgICAgICAgIGZv
ciBzcGFjZSBpbiBzZWxmLl9sb3NzLnNwYWNlczoKKyAgICAgICAgICAgICAgICBpZiBzcGFjZS5h
Y2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8IHRpbWVyX2F0OgorICAgICAgICAg
ICAgICAgICAgICB0aW1lcl9hdCA9IHNwYWNlLmFja19hdAorCisgICAgICAgICAgICAjIGxvc3Mg
ZGV0ZWN0aW9uIHRpbWVyCisgICAgICAgICAgICBzZWxmLl9sb3NzX2F0ID0gc2VsZi5fbG9zcy5n
ZXRfbG9zc19kZXRlY3Rpb25fdGltZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9sb3NzX2F0IGlz
IG5vdCBOb25lIGFuZCBzZWxmLl9sb3NzX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAgICAgICAg
dGltZXJfYXQgPSBzZWxmLl9sb3NzX2F0CisKKyAgICAgICAgICAgICMgcGFjaW5nIHRpbWVyCisg
ICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3BhY2lu
Z19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fcGFjaW5n
X2F0CisKKyAgICAgICAgcmV0dXJuIHRpbWVyX2F0CisKKyAgICBkZWYgaGFuZGxlX3RpbWVyKHNl
bGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhl
IHRpbWVyLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpg
ZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2ggbmVlZHMg
dG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVudCB0aW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgIyBlbmQgb2YgY2xvc2luZyBwZXJpb2Qgb3IgaWRsZSB0aW1lb3V0
CisgICAgICAgIGlmIG5vdyA+PSBzZWxmLl9jbG9zZV9hdDoKKyAgICAgICAgICAgIGlmIHNlbGYu
X2Nsb3NlX2V2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQg
PSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJZGxl
IHRpbWVvdXQiLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Vu
ZCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uIHRpbWVv
dXQKKyAgICAgICAgaWYgc2VsZi5fbG9zc19hdCBpcyBub3QgTm9uZSBhbmQgbm93ID49IHNlbGYu
X2xvc3NfYXQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkxvc3MgZGV0ZWN0aW9u
IHRyaWdnZXJlZCIpCisgICAgICAgICAgICBzZWxmLl9sb3NzLm9uX2xvc3NfZGV0ZWN0aW9uX3Rp
bWVvdXQobm93PW5vdykKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpIC0+IE9wdGlvbmFsW2V2
ZW50cy5RdWljRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0cmlldmUgdGhlIG5leHQg
ZXZlbnQgZnJvbSB0aGUgZXZlbnQgYnVmZmVyLgorCisgICAgICAgIFJldHVybnMgYE5vbmVgIGlm
IHRoZXJlIGFyZSBubyBidWZmZXJlZCBldmVudHMuCisgICAgICAgICIiIgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcGxlZnQoKQorICAgICAgICBleGNl
cHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVjZWl2
ZV9kYXRhZ3JhbShzZWxmLCBkYXRhOiBieXRlcywgYWRkcjogTmV0d29ya0FkZHJlc3MsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYW4gaW5jb21pbmcg
ZGF0YWdyYW0uCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRo
OmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAgICB3aGljaCBuZWVk
cyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YWdyYW0gd2hpY2gg
d2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsgYWRkcmVzcyBm
cm9tIHdoaWNoIHRoZSBkYXRhZ3JhbSB3YXMgcmVjZWl2ZWQuCisgICAgICAgIDpwYXJhbSBub3c6
IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIHN0b3AgaGFuZGxpbmcg
cGFja2V0cyB3aGVuIGNsb3NpbmcKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRF
UzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2ZW50
PSJkYXRhZ3JhbXNfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9eyJieXRlX2xlbmd0
aCI6IGxlbihkYXRhKSwgImNvdW50IjogMX0sCisgICAgICAgICAgICApCisKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAg
ICAgICAgIHN0YXJ0X29mZiA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAgICAgICAgICAgICBi
dWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVu
Z3RoCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hlY2sgZGVzdGluYXRpb24g
Q0lEIG1hdGNoZXMKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXE6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBzZWxmLl9ob3N0X2Np
ZHM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCA9PSBjb25uZWN0
aW9uX2lkLmNpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSA9IGNv
bm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIGRlc3RpbmF0aW9uX2NpZF9zZXEgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YT17InRyaWdnZXIiOiAidW5rbm93bl9jb25uZWN0aW9uX2lkIn0sCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBjaGVjayBw
cm90b2NvbCB2ZXJzaW9uCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5f
aXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0
aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLnZlcnNpb24g
PT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTgorICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAgICAgICB2ZXJzaW9u
cyA9IFtdCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKGJ1Zi5wdWxsX3VpbnQzMigpKQorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBj
YXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNr
ZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInZlcnNpb25fbmVnb3RpYXRpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0
aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbW1vbiA9IHNldChz
ZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucykuaW50ZXJzZWN0aW9uKAorICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9ucworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY29tbW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZXJy
b3IoIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24iKQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRF
Uk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNvdWxkIG5vdCBmaW5kIGEgY29t
bW9uIHByb3RvY29sIHZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xWZXJzaW9uKG1heChj
b21tb24pKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJSZXRyeWluZyB3aXRo
ICVzIiwgc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1u
b3cpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmICgKKyAgICAgICAg
ICAgICAgICBoZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBo
ZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lv
bnMKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgIyB1bnN1cHBvcnRlZCB2ZXJzaW9u
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9
eyJ0cmlnZ2VyIjogInVuc3VwcG9ydGVkX3ZlcnNpb24ifSwKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGll
bnQgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRSWToKKyAgICAgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBzdGF0ZWxlc3MgcmV0cnkgaW50ZWdyaXR5IHRhZworICAgICAg
ICAgICAgICAgIGludGVncml0eV90YWcgPSBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uoc3RhcnRfb2ZmLCBidWYudGVsbCgpIC0gUkVU
UllfSU5URUdSSVRZX1RBR19TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IHNlbGYuaG9zdF9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgYW5kIGhlYWRlci5pbnRlZ3JpdHlfdGFnID09IGludGVncml0eV90YWcK
KyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQK
KyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJh
bnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2Vp
dmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInJldHJ5IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGlu
YXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJjZV9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGhlYWRlci50b2tlbgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgKz0gMQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUGVyZm9ybWluZyBzdGF0ZWxlc3MgcmV0cnkiKQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX2ZpbmRfbmV0d29y
a19wYXRoKGFkZHIpCisKKyAgICAgICAgICAgICMgc2VydmVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9zdGF0ZSA9PSBRdWljQ29u
bmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAg
ICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFM
CisgICAgICAgICAgICAgICAgKSwgImZpcnN0IHBhY2tldCBtdXN0IGJlIElOSVRJQUwiCisgICAg
ICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtuZXR3b3JrX3BhdGhdCisgICAgICAg
ICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24oaGVhZGVyLnZlcnNp
b24pCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZShoZWFkZXIuZGVzdGluYXRpb25f
Y2lkKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBjcnlwdG8gYW5kIHBhY2tldCBzcGFjZQor
ICAgICAgICAgICAgZXBvY2ggPSBnZXRfZXBvY2goaGVhZGVyLnBhY2tldF90eXBlKQorICAgICAg
ICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgIGlmIGVwb2No
ID09IHRscy5FcG9jaC5aRVJPX1JUVDoKKyAgICAgICAgICAgICAgICBzcGFjZSA9IHNlbGYuX3Nw
YWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgICAgICMgZGVjcnlwdCBw
YWNrZXQKKyAgICAgICAgICAgIGVuY3J5cHRlZF9vZmYgPSBidWYudGVsbCgpIC0gc3RhcnRfb2Zm
CisgICAgICAgICAgICBlbmRfb2ZmID0gYnVmLnRlbGwoKSArIGhlYWRlci5yZXN0X2xlbmd0aAor
ICAgICAgICAgICAgYnVmLnNlZWsoZW5kX29mZikKKworICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IGNy
eXB0by5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtzdGFydF9vZmY6
ZW5kX29mZl0sIGVuY3J5cHRlZF9vZmYsIHNwYWNlLmV4cGVjdGVkX3BhY2tldF9udW1iZXIKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgS2V5VW5hdmFpbGFibGVFcnJvciBh
cyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4YykKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIi
OiAia2V5X3VuYXZhaWxhYmxlIn0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IENyeXB0b0Vycm9yIGFzIGV4YzoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29y
eT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJv
cHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJwYXlsb2Fk
X2RlY3J5cHRfZXJyb3IifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgY2hlY2sgcmVzZXJ2ZWQgYml0cworICAgICAgICAg
ICAgaWYgaGVhZGVyLmlzX2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDBDCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDE4CisgICAgICAgICAgICBpZiBwbGFpbl9oZWFkZXJbMF0gJiByZXNlcnZlZF9tYXNr
OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
UmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyByYWlzZSBleHBlY3RlZCBwYWNrZXQgbnVt
YmVyCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UuZXhwZWN0ZWRfcGFja2V0
X251bWJlcjoKKyAgICAgICAgICAgICAgICBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVyID0g
cGFja2V0X251bWJlciArIDEKKworICAgICAgICAgICAgIyBsb2cgcGFja2V0CisgICAgICAgICAg
ICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0gTm9uZQorICAgICAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cXVpY19sb2dnZXJfZnJhbWVzID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAor
ICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBz
ZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXIucGFja2V0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldF9udW1iZXIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IGVuZF9vZmYgLSBzdGFydF9vZmYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGluYXRpb25fY2lk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5z
b3VyY2VfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZnJhbWVzIjogcXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkaXNjYXJkIGluaXRpYWwg
a2V5cyBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50
IGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIHNlbGYu
X2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwpCisKKyAgICAgICAgICAgICMgdXBkYXRl
IHN0YXRlCisgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NpZF9zZXEgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lkCisgICAgICAgICAg
ICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gMAorCisgICAgICAgICAgICBpZiBzZWxmLl9zdGF0
ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkKKworICAgICAgICAg
ICAgIyB1cGRhdGUgc3BpbiBiaXQKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXIuaXNfbG9uZ19o
ZWFkZXIgYW5kIHBhY2tldF9udW1iZXIgPiBzZWxmLl9zcGluX2hpZ2hlc3RfcG46CisgICAgICAg
ICAgICAgICAgc3Bpbl9iaXQgPSBnZXRfc3Bpbl9iaXQocGxhaW5faGVhZGVyWzBdKQorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c3Bpbl9iaXQgPSBub3Qgc3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Bpbl9oaWdoZXN0X3BuID0gcGFja2V0X251bWJlcgorCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJjb25uZWN0aXZpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InNwaW5fYml0
X3VwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InN0YXRlIjogc2VsZi5f
c3Bpbl9iaXR9LAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaGFuZGxl
IHBheWxvYWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBRdWljUmVjZWl2ZUNvbnRleHQoCisgICAg
ICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICAgICAgaG9zdF9jaWQ9aGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGg9bmV0d29ya19w
YXRoLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1xdWljX2xvZ2dlcl9mcmFt
ZXMsCisgICAgICAgICAgICAgICAgdGltZT1ub3csCisgICAgICAgICAgICApCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNfcHJvYmluZyA9IHNl
bGYuX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBsYWlu
X3BheWxvYWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUXVpY0Nvbm5l
Y3Rpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
ZXhjKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZXhjLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ZXhjLnJl
YXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fc3Rh
dGUgaW4gRU5EX1NUQVRFUyBvciBzZWxmLl9jbG9zZV9wZW5kaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgICAgICAjIHVwZGF0ZSBpZGxlIHRpbWVvdXQKKyAgICAgICAgICAg
IHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVvdXQK
KworICAgICAgICAgICAgIyBoYW5kbGUgbWlncmF0aW9uCisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgbm90IHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgICAgIGFuZCBjb250
ZXh0Lmhvc3RfY2lkICE9IHNlbGYuaG9zdF9jaWQKKyAgICAgICAgICAgICAgICBhbmQgZXBvY2gg
PT0gdGxzLkVwb2NoLk9ORV9SVFQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBzd2l0Y2hpbmcgdG8g
Q0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChjb250ZXh0Lmhvc3Rf
Y2lkKSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NpZCA9IGNvbnRleHQuaG9zdF9j
aWQKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgbmV0d29yayBwYXRoCisgICAgICAgICAgICBpZiBub3QgbmV0d29ya19w
YXRoLmlzX3ZhbGlkYXRlZCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICJOZXR3
b3JrIHBhdGggJXMgdmFsaWRhdGVkIGJ5IGhhbmRzaGFrZSIsIG5ldHdvcmtfcGF0aC5hZGRyCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5pc192YWxpZGF0
ZWQgPSBUcnVlCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKz0gZW5k
X29mZiAtIHN0YXJ0X29mZgorICAgICAgICAgICAgaWYgbmV0d29ya19wYXRoIG5vdCBpbiBzZWxm
Ll9uZXR3b3JrX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuYXBw
ZW5kKG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlkeCA9IHNlbGYuX25ldHdvcmtfcGF0aHMu
aW5kZXgobmV0d29ya19wYXRoKQorICAgICAgICAgICAgaWYgaWR4IGFuZCBub3QgaXNfcHJvYmlu
ZyBhbmQgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRoICVzIHByb21vdGVk
IiwgbmV0d29ya19wYXRoLmFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRo
cy5wb3AoaWR4KQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuaW5zZXJ0KDAs
IG5ldHdvcmtfcGF0aCkKKworICAgICAgICAgICAgIyByZWNvcmQgcGFja2V0IGFzIHJlY2VpdmVk
CisgICAgICAgICAgICBpZiBub3Qgc3BhY2UuZGlzY2FyZGVkOgorICAgICAgICAgICAgICAgIGlm
IHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfdGltZSA9IG5vdwor
ICAgICAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5hZGQocGFja2V0X251bWJlcikKKyAgICAg
ICAgICAgICAgICBpZiBpc19hY2tfZWxpY2l0aW5nIGFuZCBzcGFjZS5hY2tfYXQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc3BhY2UuYWNrX2F0ID0gbm93ICsgc2VsZi5fYWNrX2RlbGF5
CisKKyAgICBkZWYgcmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBSZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAg
ICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSwgImNhbm5v
dCBjaGFuZ2Uga2V5IGJlZm9yZSBoYW5kc2hha2UgY29tcGxldGVzIgorICAgICAgICBzZWxmLl9j
cnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXS51cGRhdGVfa2V5KCkKKworICAgIGRlZiBzZW5kX3Bp
bmcoc2VsZiwgdWlkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEg
UElORyBmcmFtZSB0byB0aGUgcGVlci4KKworICAgICAgICA6cGFyYW0gdWlkOiBBIHVuaXF1ZSBJ
RCBmb3IgdGhpcyBQSU5HLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5n
LmFwcGVuZCh1aWQpCisKKyAgICBkZWYgc2VuZF9kYXRhZ3JhbV9mcmFtZShzZWxmLCBkYXRhOiBi
eXRlcykgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBEQVRBR1JBTSBmcmFt
ZS4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLmFwcGVuZChkYXRhKQorCisgICAg
ZGVmIHNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRh
OiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBzcGVjaWZpYyBzdHJlYW0uCisKKyAgICAg
ICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSdzIElELgorICAgICAgICA6cGFyYW0gZGF0
YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAgOnBhcmFtIGVuZF9zdHJlYW06IElmIHNl
dCB0byBgVHJ1ZWAsIHRoZSBGSU4gYml0IHdpbGwgYmUgc2V0LgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSAhPSBzZWxmLl9pc19j
bGllbnQ6CisgICAgICAgICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYuX3N0cmVhbXM6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQgZGF0YSBvbiB1bmtu
b3duIHBlZXItaW5pdGlhdGVkIHN0cmVhbSIpCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfdW5p
ZGlyZWN0aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNlbmQgZGF0YSBvbiBwZWVyLWluaXRpYXRl
ZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXQorICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVh
bV9pZF0KKyAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSkK
KworICAgICMgUHJpdmF0ZQorCisgICAgZGVmIF9hbHBuX2hhbmRsZXIoc2VsZiwgYWxwbl9wcm90
b2NvbDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hpY2gg
aXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIEFMUE4gbmVnb3RpYXRpb24gY29tcGxl
dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuUHJv
dG9jb2xOZWdvdGlhdGVkKGFscG5fcHJvdG9jb2w9YWxwbl9wcm90b2NvbCkpCisKKyAgICBkZWYg
X2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJlYW1f
aWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVjaWZp
ZWQgc3RyZWFtIGNhbiByZWNlaXZlIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3JlY2VpdmUo
c3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwK
KyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAg
cmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHNlbmQtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJl
YW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVj
aWZpZWQgc3RyZWFtIGNhbiBzZW5kIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3NlbmQoc3Ry
ZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iU3RyZWFtIGlzIHJlY2VpdmUtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Nsb3NlX2JlZ2luKHNlbGYsIGlzX2luaXRpYXRvcjogYm9vbCwgbm93OiBmbG9hdCkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEJlZ2luIHRoZSBjbG9zZSBwcm9jZWR1cmUu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIDMgKiBzZWxmLl9s
b3NzLmdldF9wcm9iZV90aW1lb3V0KCkKKyAgICAgICAgaWYgaXNfaW5pdGlhdG9yOgorICAgICAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xPU0lORykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRl
LkRSQUlOSU5HKQorCisgICAgZGVmIF9jbG9zZV9lbmQoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEVuZCB0aGUgY2xvc2UgcHJvY2VkdXJlLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fY2xvc2VfYXQgPSBOb25lCisgICAgICAgIGZvciBlcG9jaCBpbiBzZWxmLl9zcGFj
ZXMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaChlcG9jaCkKKyAgICAg
ICAgc2VsZi5fZXZlbnRzLmFwcGVuZChzZWxmLl9jbG9zZV9ldmVudCkKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRFRCkKKworICAgICAgICAjIHNp
Z25hbCBsb2cgZW5kCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5lbmRfdHJhY2Uoc2Vs
Zi5fcXVpY19sb2dnZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IE5vbmUKKwor
ICAgIGRlZiBfY29ubmVjdChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgU3RhcnQgdGhlIGNsaWVudCBoYW5kc2hha2UuCisgICAgICAgICIiIgorICAgICAg
ICBhc3NlcnQgc2VsZi5faXNfY2xpZW50CisKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cg
KyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorICAgICAgICBzZWxmLl9pbml0aWFs
aXplKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgIHNlbGYudGxzLmhhbmRsZV9tZXNzYWdlKGIi
Iiwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEo
KQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBRdWlj
U3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgUVVJQyBzdHJlYW0gaW4gb3Jk
ZXIgdG8gc2VuZCBkYXRhIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAgICAgIyBkZXRl
cm1pbmUgbGltaXRzCisgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1f
aWQpOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gMAorICAgICAgICAgICAg
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5p
CisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkK
KyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYu
X2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQor
ICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQor
ICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkK
KworICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFt
c1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWw9bWF4X3N0cmVhbV9kYXRhX2xv
Y2FsLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFf
cmVtb3RlLAorICAgICAgICApCisKKyAgICAgICAgIyBtYXJrIHN0cmVhbSBhcyBibG9ja2VkIGlm
IG5lZWRlZAorICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3RyZWFtczoKKyAgICAg
ICAgICAgIHN0cmVhbS5pc19ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtc19ibG9j
a2VkLmFwcGVuZChzdHJlYW0pCisgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVu
ZGluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2Rpc2NhcmRf
ZXBvY2goc2VsZiwgZXBvY2g6IHRscy5FcG9jaCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCJEaXNjYXJkaW5nIGVwb2NoICVzIiwgZXBvY2gpCisgICAgICAgIHNlbGYuX2Ny
eXB0b3NbZXBvY2hdLnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5fbG9zcy5kaXNjYXJkX3NwYWNl
KHNlbGYuX3NwYWNlc1tlcG9jaF0pCisgICAgICAgIHNlbGYuX3NwYWNlc1tlcG9jaF0uZGlzY2Fy
ZGVkID0gVHJ1ZQorCisgICAgZGVmIF9maW5kX25ldHdvcmtfcGF0aChzZWxmLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gUXVpY05ldHdvcmtQYXRoOgorICAgICAgICAjIGNoZWNrIGV4aXN0aW5n
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgZm9yIGlkeCwgbmV0d29ya19wYXRoIGluIGVudW1lcmF0
ZShzZWxmLl9uZXR3b3JrX3BhdGhzKToKKyAgICAgICAgICAgIGlmIG5ldHdvcmtfcGF0aC5hZGRy
ID09IGFkZHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtfcGF0aAorCisgICAgICAg
ICMgbmV3IG5ldHdvcmsgcGF0aAorICAgICAgICBuZXR3b3JrX3BhdGggPSBRdWljTmV0d29ya1Bh
dGgoYWRkcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3JrIHBhdGggJXMgZGlz
Y292ZXJlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICByZXR1cm4gbmV0d29ya19wYXRo
CisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
c3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgorICAgICAgICBHZXQg
b3IgY3JlYXRlIGEgc3RyZWFtIGluIHJlc3BvbnNlIHRvIGEgcmVjZWl2ZWQgZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zLmdldChzdHJlYW1faWQsIE5v
bmUpCisgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgorICAgICAgICAgICAgIyBjaGVjayBpbml0
aWF0b3IKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9p
ZCkgPT0gc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5T
VFJFQU1fU1RBVEVfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iV3Jvbmcgc3RyZWFtIGlu
aXRpYXRvciIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBs
aW1pdHMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQp
OgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21h
eF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
ID0gMAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVh
bXNfdW5pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAg
ICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfbG9jYWwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX2xv
Y2FsX21heF9zdHJlYW1zX2JpZGkKKworICAgICAgICAgICAgIyBjaGVjayBtYXggc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPSJUb28gbWFueSBzdHJlYW1zIG9wZW4iLAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
IlN0cmVhbSAlZCBjcmVhdGVkIGJ5IHBlZXIiICUgc3RyZWFtX2lkKQorICAgICAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgKQorICAg
ICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2hhbmRsZV9zZXNzaW9uX3RpY2tldChzZWxm
LCBzZXNzaW9uX3RpY2tldDogdGxzLlNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXpl
ICE9IE1BWF9FQVJMWV9EQVRBCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVU
eXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJbnZhbGlkIG1heF9l
YXJseV9kYXRhIHZhbHVlICVzIgorICAgICAgICAgICAgICAgICUgc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcihzZXNzaW9uX3RpY2tldCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZShzZWxm
LCBwZWVyX2NpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICMgVExTCisgICAgICAgIHNlbGYu
dGxzID0gdGxzLkNvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9jb25m
aWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRhPXNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2NvbmZpZ3VyYXRpb24u
Y2FmaWxlLAorICAgICAgICAgICAgY2FwYXRoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwYXRoLAor
ICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKKyAgICAgICAgICAgIGxvZ2dl
cj1zZWxmLl9sb2dnZXIsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0YT1Ob25lIGlmIHNlbGYu
X2lzX2NsaWVudCBlbHNlIE1BWF9FQVJMWV9EQVRBLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgIHZlcmlmeV9tb2Rl
PXNlbGYuX2NvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi50bHMuY2VydGlmaWNhdGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRpZmljYXRlCisgICAg
ICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX2NoYWluID0gc2VsZi5fY29uZmlndXJhdGlvbi5jZXJ0
aWZpY2F0ZV9jaGFpbgorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSA9
IHNlbGYuX2NvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2VsZi50bHMuaGFuZHNo
YWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4
dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgXQorCisgICAgICAgICMgVExTIHNlc3Npb24gcmVzdW1wdGlvbgorICAgICAgICBzZXNz
aW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQKKyAgICAgICAg
aWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICBhbmQgc2Vzc2lv
bl90aWNrZXQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192
YWxpZAorICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LnNlcnZlcl9uYW1lID09IHNlbGYu
X2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYu
dGxzLnNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldAor
CisgICAgICAgICAgICAjIHBhcnNlIHNhdmVkIFFVSUMgdHJhbnNwb3J0IHBhcmFtZXRlcnMgLSBm
b3IgMC1SVFQKKyAgICAgICAgICAgIGlmIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3Np
emUgPT0gTUFYX0VBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZm9yIGV4dF90eXBlLCBleHRf
ZGF0YSBpbiBzZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAg
ICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGEsIGZyb21fc2Vz
c2lvbl90aWNrZXQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRMUyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi50bHMuYWxwbl9jYiA9IHNlbGYuX2FscG5faGFuZGxlcgorICAgICAgICBpZiBzZWxmLl9zZXNz
aW9uX3RpY2tldF9mZXRjaGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi50bHMuZ2V0
X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgorICAgICAg
ICBpZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc2VsZi50bHMubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5faGFuZGxlX3Nlc3Npb25f
dGlja2V0CisgICAgICAgIHNlbGYudGxzLnVwZGF0ZV90cmFmZmljX2tleV9jYiA9IHNlbGYuX3Vw
ZGF0ZV90cmFmZmljX2tleQorCisgICAgICAgICMgcGFja2V0IHNwYWNlcworICAgICAgICBzZWxm
Ll9jcnlwdG9zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IENyeXB0b1BhaXIo
KSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5aRVJPX1JUVDogQ3J5cHRvUGFpcigpLAorICAgICAg
ICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQ3J5cHRvUGFpcigpLAorICAgICAgICAgICAgdGxz
LkVwb2NoLk9ORV9SVFQ6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLl9j
cnlwdG9fYnVmZmVycyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNh
cGFjaXR5PTQwOTYpLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0b19zdHJlYW1zID0g
eworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAg
ICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBRdWljU3RyZWFtKCksCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5fc3Bh
Y2VzID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNQYWNrZXRTcGFjZSgp
LAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVpY1BhY2tldFNwYWNlKCksCisg
ICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogUXVpY1BhY2tldFNwYWNlKCksCisgICAgICAg
IH0KKworICAgICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5JTklUSUFMXS5zZXR1cF9pbml0
aWFsKAorICAgICAgICAgICAgY2lkPXBlZXJfY2lkLCBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50
LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvc3Mu
c3BhY2VzID0gbGlzdChzZWxmLl9zcGFjZXMudmFsdWVzKCkpCisgICAgICAgIHNlbGYuX3BhY2tl
dF9udW1iZXIgPSAwCisKKyAgICBkZWYgX2hhbmRsZV9hY2tfZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhbiBBQ0sgZnJh
bWUuCisgICAgICAgICIiIgorICAgICAgICBhY2tfcmFuZ2VzZXQsIGFja19kZWxheV9lbmNvZGVk
ID0gcHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFt
ZVR5cGUuQUNLX0VDTjoKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
ICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgYWNrX2RlbGF5ID0gKGFja19kZWxheV9lbmNvZGVkIDw8IHNlbGYuX3JlbW90ZV9h
Y2tfZGVsYXlfZXhwb25lbnQpIC8gMTAwMDAwMAorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoYWNrX3Jhbmdlc2V0LCBhY2tfZGVsYXkpCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAg
ICBzcGFjZT1zZWxmLl9zcGFjZXNbY29udGV4dC5lcG9jaF0sCisgICAgICAgICAgICBhY2tfcmFu
Z2VzZXQ9YWNrX3Jhbmdlc2V0LAorICAgICAgICAgICAgYWNrX2RlbGF5PWFja19kZWxheSwKKyAg
ICAgICAgICAgIG5vdz1jb250ZXh0LnRpbWUsCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxl
X2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENPTk5FQ1RJT05fQ0xPU0UgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBlcnJvcl9jb2RlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAg
ICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JUX0NMT1NFOgorICAg
ICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBOb25lCisgICAgICAgIHJlYXNvbl9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYXNvbl9waHJh
c2UgPSBidWYucHVsbF9ieXRlcyhyZWFzb25fbGVuZ3RoKS5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9
ICIiCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rpb25f
Y2xvc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
IkNvbm5lY3Rpb24gY2xvc2UgY29kZSAweCVYLCByZWFzb24gJXMiLCBlcnJvcl9jb2RlLCByZWFz
b25fcGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMu
Q29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUs
IGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9yPUZhbHNlLCBub3c9
Y29udGV4dC50aW1lKQorCisgICAgZGVmIF9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBDUllQ
VE8gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBvZmZzZXQgPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgb2Zm
c2V0ICsgbGVuZ3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5l
Y3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRlJB
TUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxlbmd0aCBjYW5ub3Qg
ZXhjZWVkIDJeNjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJhbWUgPSBRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpKQorCisg
ICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9fZnJhbWUoZnJhbWUp
CisgICAgICAgICAgICApCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNb
Y29udGV4dC5lcG9jaF0KKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgcGFzcyBkYXRhIHRv
IFRMUyBsYXllcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGxzLmhh
bmRsZV9tZXNzYWdlKGV2ZW50LmRhdGEsIHNlbGYuX2NyeXB0b19idWZmZXJzKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEoKQorICAgICAgICAgICAgZXhjZXB0IHRscy5B
bGVydCBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkNSWVBUT19FUlJP
UiArIGludChleGMuZGVzY3JpcHRpb24pLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBl
PWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9c3RyKGV4Yyks
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHBhcnNlIHRyYW5zcG9ydCBwYXJh
bWV0ZXJzCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX3BhcmFt
ZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgc2VsZi50bHMucmVjZWl2ZWRfZXh0
ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBmb3Ig
ZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlbGYudGxzLnJlY2VpdmVkX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90
cmFuc3BvcnRfcGFyYW1ldGVycyhleHRfZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICApLCAiTm8gUVVJQyB0cmFuc3Bv
cnQgcGFyYW1ldGVycyByZWNlaXZlZCIKKworICAgICAgICAgICAgIyB1cGRhdGUgY3VycmVudCBl
cG9jaAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSBhbmQgc2Vs
Zi50bHMuc3RhdGUgaW4gWworICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5DTElFTlRfUE9TVF9I
QU5EU0hBS0UsCisgICAgICAgICAgICAgICAgdGxzLlN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFL
RSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBs
ZXRlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBmb3Igc2VydmVycywgdGhlIGhhbmRzaGFr
ZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVu
dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFO
RFNIQUtFKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0g
VHJ1ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5pc19jbGllbnRfd2l0aG91dF8xcnR0
ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29ubmVjdGlvbl9pZHMo
KQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBh
bHBuX3Byb3RvY29sPXNlbGYudGxzLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVhcmx5X2RhdGFfYWNjZXB0ZWQ9c2VsZi50bHMuZWFybHlfZGF0YV9hY2NlcHRlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fcmVzdW1lZD1zZWxmLnRscy5zZXNzaW9u
X3Jlc3VtZWQsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNl
KQorICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
ICAgICAgICAiQUxQTiBuZWdvdGlhdGVkIHByb3RvY29sICVzIiwgc2VsZi50bHMuYWxwbl9uZWdv
dGlhdGVkCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1l
X3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBIYW5kbGUgYSBEQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBs
aW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKGxpbWl0PWxpbWl0KQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERBVEFHUkFNIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgIGlmIGZy
YW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSDoKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIHN0YXJ0CisgICAgICAgIGRhdGEgPSBidWYucHVs
bF9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICApCisKKyAgICAgICAg
IyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYu
X2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgaXMgTm9uZQorICAgICAgICAg
ICAgb3IgYnVmLnRlbGwoKSAtIHN0YXJ0ID49IHNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFn
cmFtX2ZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIs
CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuRGF0
YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9ZGF0YSkpCisKKyAgICBkZWYgX2hhbmRsZV9oYW5kc2hh
a2VfZG9uZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgSGFuZGxlIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJh
bWUoKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMiLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgwqBmb3IgY2xpZW50cywgdGhlIGhhbmRzaGFrZSBpcyBub3cgY29u
ZmlybWVkCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkOgorICAgICAg
ICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFORFNIQUtFKQorICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IFRydWUKKworICAgIGRlZiBfaGFuZGxlX21h
eF9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBNQVhfREFUQSBmcmFtZS4KKworICAgICAgICBUaGlzIGFkanVz
dHMgdGhlIHRvdGFsIGFtb3VudCBvZiB3ZSBjYW4gc2VuZCB0byB0aGUgcGVlci4KKyAgICAgICAg
IiIiCisgICAgICAgIG1heF9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShtYXhpbXVtPW1heF9k
YXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9kYXRhID4gc2VsZi5fcmVtb3Rl
X21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X2Rh
dGEgcmFpc2VkIHRvICVkIiwgbWF4X2RhdGEpCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4
X2RhdGEgPSBtYXhfZGF0YQorCisgICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhpcyBhZGp1c3RzIHRo
ZSBhbW91bnQgb2YgZGF0YSB3ZSBjYW4gc2VuZCBvbiBhIHNwZWNpZmljIHN0cmVhbS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
bWF4X3N0cmVhbV9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIG1heGltdW09bWF4X3N0cmVhbV9kYXRhLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFt
IGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1lX3R5
cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0
cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG1heF9zdHJlYW1fZGF0YSA+
IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgcmVtb3RlIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICBtYXhfc3RyZWFtX2RhdGEsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0u
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YQorCisgICAgZGVmIF9oYW5k
bGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfQklESSBmcmFtZS4K
KworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgYmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdl
IGNhbiBpbml0aWF0ZSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9zdHJl
YW1zID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5p
ZGlyZWN0aW9uYWw9RmFsc2UsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9yZW1vdGVf
bWF4X3N0cmVhbXNfYmlkaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiUmVtb3Rl
IG1heF9zdHJlYW1zX2JpZGkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMpCisgICAgICAgICAg
ICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSA9IG1heF9zdHJlYW1zCisgICAgICAgICAg
ICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCisKKyAgICBk
ZWYgX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6
IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1TX1VOSSBm
cmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgdW5pZGlyZWN0aW9uYWwgc3Ry
ZWFtcyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIiIgorICAgICAgICBt
YXhfc3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAgICAgICAgICAgICAg
IGlzX3VuaWRpcmVjdGlvbmFsPVRydWUsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfdW5pOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJS
ZW1vdGUgbWF4X3N0cmVhbXNfdW5pIHJhaXNlZCB0byAlZCIsIG1heF9zdHJlYW1zKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSA9IG1heF9zdHJlYW1zCisgICAgICAg
ICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKworICAg
IGRlZiBfaGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBORVdfQ09OTkVDVElP
Tl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGNvbm5lY3Rp
b25faWQgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisgICAgICAgIHN0YXRlbGVzc19yZXNldF90
b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgICAgICByZXRpcmVf
cHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXI9c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKworICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUuYXBwZW5kKAorICAg
ICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBjaWQ9Y29ubmVjdGlv
bl9pZCwKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyLAor
ICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxlc3NfcmVzZXRfdG9r
ZW4sCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX25ld190b2tl
bl9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFt
ZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgSGFuZGxlIGEgTkVXX1RPS0VOIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgbGVu
Z3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0b2tlbiA9IGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbmV3X3Rv
a2VuX2ZyYW1lKHRva2VuPXRva2VuKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVz
IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAg
ICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBi
dWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBh
IFBBRERJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGNvbnN1bWUgcGFkZGluZwor
ICAgICAgICBwb3MgPSBidWYudGVsbCgpCisgICAgICAgIGZvciBieXRlIGluIGJ1Zi5kYXRhX3Ns
aWNlKHBvcywgYnVmLmNhcGFjaXR5KToKKyAgICAgICAgICAgIGlmIGJ5dGU6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGJ1Zi5zZWVrKHBvcykK
KworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5k
bGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBBVEhfQ0hBTExFTkdFIGZyYW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisKKyAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9ZGF0
YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBjb250ZXh0Lm5ldHdvcmtfcGF0aC5yZW1vdGVf
Y2hhbGxlbmdlID0gZGF0YQorCisgICAgZGVmIF9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgK
KyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBp
bnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFu
ZGxlIGEgUEFUSF9SRVNQT05TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBi
dWYucHVsbF9ieXRlcyg4KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAg
ICBpZiBkYXRhICE9IGNvbnRleHQubmV0d29ya19wYXRoLmxvY2FsX2NoYWxsZW5nZToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iUmVz
cG9uc2UgZG9lcyBub3QgbWF0Y2ggY2hhbGxlbmdlIiwKKyAgICAgICAgICAgICkKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIk5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0
ZWQgYnkgY2hhbGxlbmdlIiwgY29udGV4dC5uZXR3b3JrX3BhdGguYWRkcgorICAgICAgICApCisg
ICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRydWUKKworICAgIGRl
ZiBfaGFuZGxlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZl
Q29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5kbGVfcmVzZXRf
c3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBSRVNFVF9TVFJFQU0gZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVycm9yX2NvZGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGZpbmFsX3NpemUgPSBidWYucHVsbF91aW50
X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBm
aW5hbF9zaXplPWZpbmFsX3NpemUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgIlN0cmVhbSAl
ZCByZXNldCBieSBwZWVyIChlcnJvciBjb2RlICVkLCBmaW5hbCBzaXplICVkKSIsCisgICAgICAg
ICAgICBzdHJlYW1faWQsCisgICAgICAgICAgICBlcnJvcl9jb2RlLAorICAgICAgICAgICAgZmlu
YWxfc2l6ZSwKKyAgICAgICAgKQorICAgICAgICAjIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVh
dGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFw
cGVuZCgKKyAgICAgICAgICAgIGV2ZW50cy5TdHJlYW1SZXNldChlcnJvcl9jb2RlPWVycm9yX2Nv
ZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3Jl
dGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVRJUkVfQ09OTkVDVElPTl9JRCBmcmFt
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nv
bm5lY3Rpb25faWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAg
ICAgICMgZmluZCB0aGUgY29ubmVjdGlvbiBJRCBieSBzZXF1ZW5jZSBudW1iZXIKKyAgICAgICAg
Zm9yIGluZGV4LCBjb25uZWN0aW9uX2lkIGluIGVudW1lcmF0ZShzZWxmLl9ob3N0X2NpZHMpOgor
ICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIgPT0gc2VxdWVuY2Vf
bnVtYmVyOgorICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuY2lkID09IGNvbnRleHQu
aG9zdF9jaWQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2Fubm90IHJldGly
ZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBy
ZXRpcmluZyBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgIGR1bXBfY2lkKGNvbm5l
Y3Rpb25faWQuY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9o
b3N0X2NpZHNbaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQoY29ubmVjdGlvbl9p
ZD1jb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAjIGlzc3VlIGEgbmV3IGNvbm5lY3Rpb24gSUQKKyAgICAgICAgc2Vs
Zi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25faWRzKCkKKworICAgIGRlZiBfaGFuZGxlX3N0b3Bfc2Vu
ZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgU1RPUF9TRU5ESU5HIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAg
ICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlcnJvcl9jb2RlID0g
YnVmLnB1bGxfdWludF92YXIoKSAgIyBhcHBsaWNhdGlvbiBlcnJvciBjb2RlCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBzdHJlYW1faWQ9c3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3Ry
ZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1l
X3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShm
cmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDQ6CisgICAgICAgICAgICBv
ZmZzZXQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBv
ZmZzZXQgPSAwCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiAyOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGgg
PiBVSU5UX1ZBUl9NQVg6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19F
UlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAt
IDEiLAorICAgICAgICAgICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAg
ICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMobGVuZ3RoKSwgZmlu
PWJvb2woZnJhbWVfdHlwZSAmIDEpCisgICAgICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKGZyYW1lLCBzdHJlYW1faWQ9c3RyZWFtX2lk
KQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAg
ICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0cmVhbV9p
ZCkKKworICAgICAgICAjIGNoZWNrIGZsb3ctY29udHJvbCBsaW1pdHMKKyAgICAgICAgc3RyZWFt
ID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorICAg
ICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsOgor
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SLAorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgbmV3bHlf
cmVjZWl2ZWQgPSBtYXgoMCwgb2Zmc2V0ICsgbGVuZ3RoIC0gc3RyZWFtLl9yZWN2X2hpZ2hlc3Qp
CisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKyBuZXdseV9yZWNlaXZlZCA+
IHNlbGYuX2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05U
Uk9MX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJPdmVyIGNvbm5lY3Rpb24gZGF0YSBsaW1pdCIsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5h
cHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKz0gbmV3bHlf
cmVjZWl2ZWQKKworICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTV9EQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJl
YW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgc3Ry
ZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVh
bV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fZ2V0
X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgZGVmIF9oYW5k
bGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVFJFQU1TX0JMT0NLRUQgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNG
cmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9
bGltaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF9vbl9h
Y2tfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwg
c3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgaGlnaGVzdF9hY2tlZDogaW50CisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhbiBBQ0sgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSA9PSBR
dWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5zdWJ0
cmFjdCgwLCBoaWdoZXN0X2Fja2VkICsgMSkKKworICAgIGRlZiBfb25faGFuZHNoYWtlX2RvbmVf
ZGVsaXZlcnkoc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIEhBTkRTSEFLRV9ET05FIGZyYW1lIGlz
IGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkg
IT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
ZG9uZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9vbl9tYXhfZGF0YV9kZWxpdmVyeShzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX0RBVEEgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxv
c3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0
ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgPSAwCisKKyAg
ICBkZWYgX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZl
cnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX1NUUkVBTV9EQVRBIGZy
YW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVs
aXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSAwCisKKyAgICBkZWYgX29uX25ld19jb25uZWN0aW9u
X2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTkVXX0NPTk5FQ1RJT05fSUQgZnJhbWUgaXMg
YWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAh
PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQud2Fz
X3NlbnQgPSBGYWxzZQorCisgICAgZGVmIF9vbl9waW5nX2RlbGl2ZXJ5KAorICAgICAgICBzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHVpZHM6IFNlcXVlbmNlW2ludF0KKyAgICAp
IC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgUElORyBmcmFt
ZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2
ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCJSZWNlaXZlZCBQSU5HJXMgcmVzcG9uc2UiLCAiIiBpZiB1aWRzIGVsc2UgIiAocHJv
YmUpIikKKyAgICAgICAgICAgIGZvciB1aWQgaW4gdWlkczoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9ldmVudHMuYXBwZW5kKGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKHVpZD11aWQpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmV4dGVuZCh1aWRzKQorCisg
ICAgZGVmIF9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwg
ZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzZXF1ZW5jZV9udW1iZXI6IGludAorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBSRVRJUkVfQ09O
TkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAg
ICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFwcGVuZChzZXF1ZW5jZV9udW1iZXIpCisK
KyAgICBkZWYgX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNS
ZWNlaXZlQ29udGV4dCwgcGxhaW46IGJ5dGVzCisgICAgKSAtPiBUdXBsZVtib29sLCBib29sXToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgcGFja2V0IHBheWxvYWQuCisgICAg
ICAgICIiIgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1wbGFpbikKKworICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nID0gRmFsc2UKKyAgICAgICAgaXNfcHJvYmluZyA9IE5vbmUKKyAgICAgICAg
d2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgdHlwZSBpcyBrbm93bgorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIsIGZyYW1lX2Vwb2No
cyA9IHNlbGYuX19mcmFtZV9oYW5kbGVyc1tmcmFtZV90eXBlXQorICAgICAgICAgICAgZXhjZXB0
IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9M
QVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5rbm93biBmcmFtZSB0eXBlIiwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgaXMgYWxsb3dlZCBmb3Ig
dGhlIGVwb2NoCisgICAgICAgICAgICBpZiBjb250ZXh0LmVwb2NoIG5vdCBpbiBmcmFtZV9lcG9j
aHM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIGZyYW1lIHR5cGUiLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGZyYW1lCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlcihjb250ZXh0LCBmcmFtZV90eXBlLCBi
dWYpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiLAorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgQUNLIG9ubHkgLyBwcm9iaW5nIGZsYWdzCisgICAgICAgICAgICBpZiBm
cmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAg
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBmcmFtZV90
eXBlIG5vdCBpbiBQUk9CSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgICAgIGlzX3Byb2Jp
bmcgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBpc19wcm9iaW5nIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgaXNfcHJvYmluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gaXNfYWNrX2VsaWNp
dGluZywgYm9vbChpc19wcm9iaW5nKQorCisgICAgZGVmIF9yZXBsZW5pc2hfY29ubmVjdGlvbl9p
ZHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIG5ldyBjb25u
ZWN0aW9uIElEcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9ob3N0X2Np
ZHMpIDwgbWluKDgsIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCk6Cisg
ICAgICAgICAgICBzZWxmLl9ob3N0X2NpZHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIFF1aWND
b25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgICAgIGNpZD1vcy51cmFuZG9tKHNlbGYuX2Nv
bmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXI9c2VsZi5faG9zdF9jaWRfc2VxLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRfc2VxICs9IDEKKworICAg
IGRlZiBfcHVzaF9jcnlwdG9fZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAgICBmb3IgZXBvY2gs
IGJ1ZiBpbiBzZWxmLl9jcnlwdG9fYnVmZmVycy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5f
Y3J5cHRvX3N0cmVhbXNbZXBvY2hdLndyaXRlKGJ1Zi5kYXRhKQorICAgICAgICAgICAgYnVmLnNl
ZWsoMCkKKworICAgIGRlZiBfc2VuZF9wcm9iZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9wYXJzZV90cmFuc3BvcnRfcGFyYW1l
dGVycygKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGZyb21fc2Vzc2lvbl90aWNrZXQ6IGJv
b2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWRhdGEpLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQor
CisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lIGFuZCBub3QgZnJvbV9zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0
IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAorICAgICAgICAgICAg
ICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgICAgICBvd25lcj0icmVtb3RlIiwgcGFyYW1ldGVycz1xdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIHZhbGlkYXRlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAgIGlmICgKKyAgICAgICAg
ICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIG5vdCBmcm9tX3Nlc3Npb25fdGlj
a2V0CisgICAgICAgICAgICBhbmQgKAorICAgICAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAgICAgICE9IHNlbGYu
X29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlRSQU5TUE9SVF9QQVJBTUVURVJfRVJST1IsCisgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGRvZXMgbm90IG1hdGNoIiwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIHN0b3JlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAg
IGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWNrX2RlbGF5X2V4cG9uZW50IGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCA9IHNlbGYu
X3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9ICgKKyAgICAgICAg
ICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0CisgICAgICAgICAgICApCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMu
aWRsZV90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2lkbGVf
dGltZW91dCA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuaWRsZV90aW1lb3V0IC8gMTAwMC4w
CisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvc3MubWF4X2Fja19kZWxheSA9IHF1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSAvIDEwMDAuMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgPSAoCisgICAgICAgICAgICBxdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplCisgICAgICAgICkKKyAgICAg
ICAgZm9yIHBhcmFtIGluIFsKKyAgICAgICAgICAgICJtYXhfZGF0YSIsCisgICAgICAgICAgICAi
bWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1fZGF0
YV9iaWRpX3JlbW90ZSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX3VuaSIsCisgICAg
ICAgICAgICAibWF4X3N0cmVhbXNfYmlkaSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbXNfdW5p
IiwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihxdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLCAiaW5pdGlhbF8iICsgcGFyYW0pCisgICAgICAgICAgICBpZiB2YWx1ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJfcmVtb3RlXyIgKyBw
YXJhbSwgdmFsdWUpCisKKyAgICBkZWYgX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFyYW1ldGVycyhz
ZWxmKSAtPiBieXRlczoKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycyA9IFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50PXNlbGYu
X2xvY2FsX2Fja19kZWxheV9leHBvbmVudCwKKyAgICAgICAgICAgIGFjdGl2ZV9jb25uZWN0aW9u
X2lkX2xpbWl0PXNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0LAorICAgICAg
ICAgICAgaWRsZV90aW1lb3V0PWludChzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dCAq
IDEwMDApLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT1zZWxmLl9sb2NhbF9tYXhfZGF0
YSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwsCisgICAgICAgICAgICBpbml0aWFsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9yZW1vdGUsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVh
bXNfYmlkaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpLAorICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtc191bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pLAorICAgICAgICAg
ICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PXNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUsCisgICAgICAgICAg
ICBxdWFudHVtX3JlYWRpbmVzcz1iIlEiICogMTIwMAorICAgICAgICAgICAgaWYgc2VsZi5fY29u
ZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190ZXN0CisgICAgICAgICAgICBlbHNlIE5vbmUs
CisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9ICgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgICAgICAp
CisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAg
ICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9
InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAgICAgb3duZXI9
ImxvY2FsIiwgcGFyYW1ldGVycz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9
MyAqIFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzKAorICAgICAgICAgICAgYnVmLCBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLCBwcm90b2Nv
bF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorICAgICAgICByZXR1cm4gYnVmLmRh
dGEKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0YXRlOiBRdWljQ29ubmVjdGlvblN0YXRl
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIiVzIC0+ICVzIiwgc2VsZi5f
c3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICBkZWYgX3N0
cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAgICAgc3RyZWFtX2lk
CisgICAgICAgICkgIT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgc3RyZWFt
X2lkOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZCgKKyAgICAgICAgICAgIHN0cmVhbV9pZAorICAgICAgICApID09IHNlbGYuX2lzX2NsaWVu
dCBvciBub3Qgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCkKKworICAgIGRlZiBf
dW5ibG9ja19zdHJlYW1zKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sKSAtPiBOb25lOgor
ICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaQorICAgICAgICAgICAg
bWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pCisgICAgICAgICAgICBz
dHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9z
dHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2Vs
Zi5fc3RyZWFtc19ibG9ja2VkX2JpZGkKKworICAgICAgICB3aGlsZSBzdHJlYW1zX2Jsb2NrZWQg
YW5kIHN0cmVhbXNfYmxvY2tlZFswXS5zdHJlYW1faWQgLy8gNCA8IG1heF9zdHJlYW1zOgorICAg
ICAgICAgICAgc3RyZWFtID0gc3RyZWFtc19ibG9ja2VkLnBvcCgwKQorICAgICAgICAgICAgc3Ry
ZWFtLmlzX2Jsb2NrZWQgPSBGYWxzZQorICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisKKyAgICAgICAgaWYgbm90IHNlbGYu
X3N0cmVhbXNfYmxvY2tlZF9iaWRpIGFuZCBub3Qgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaToK
KyAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKKworICAg
IGRlZiBfdXBkYXRlX3RyYWZmaWNfa2V5KAorICAgICAgICBzZWxmLAorICAgICAgICBkaXJlY3Rp
b246IHRscy5EaXJlY3Rpb24sCisgICAgICAgIGVwb2NoOiB0bHMuRXBvY2gsCisgICAgICAgIGNp
cGhlcl9zdWl0ZTogdGxzLkNpcGhlclN1aXRlLAorICAgICAgICBzZWNyZXQ6IGJ5dGVzLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBuZXcgdHJhZmZpYyBrZXlzIGFyZQorICAgICAgICBh
dmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gc2VsZi5f
Y29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlCisgICAgICAgIGlmIHNlY3JldHNfbG9nX2Zp
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYWJlbF9yb3cgPSBzZWxmLl9pc19jbGllbnQg
PT0gKGRpcmVjdGlvbiA9PSB0bHMuRGlyZWN0aW9uLkRFQ1JZUFQpCisgICAgICAgICAgICBsYWJl
bCA9IFNFQ1JFVFNfTEFCRUxTW2xhYmVsX3Jvd11bZXBvY2gudmFsdWVdCisgICAgICAgICAgICBz
ZWNyZXRzX2xvZ19maWxlLndyaXRlKAorICAgICAgICAgICAgICAgICIlcyAlcyAlc1xuIiAlIChs
YWJlbCwgc2VsZi50bHMuY2xpZW50X3JhbmRvbS5oZXgoKSwgc2VjcmV0LmhleCgpKQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZS5mbHVzaCgpCisKKyAgICAgICAg
Y3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgaWYgZGlyZWN0aW9uID09IHRs
cy5EaXJlY3Rpb24uRU5DUllQVDoKKyAgICAgICAgICAgIGNyeXB0by5zZW5kLnNldHVwKAorICAg
ICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsIHNlY3JldD1zZWNyZXQsIHZl
cnNpb249c2VsZi5fdmVyc2lvbgorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgY3J5cHRvLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWNp
cGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX3dyaXRlX2FwcGxpY2F0aW9uKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgbmV0d29ya19wYXRoOiBRdWljTmV0d29ya1BhdGgsIG5v
dzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0b19zdHJlYW06IE9wdGlvbmFs
W1F1aWNTdHJlYW1dID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5P
TkVfUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlw
dG9zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgY3J5cHRvX3N0cmVhbSA9IHNlbGYu
X2NyeXB0b19zdHJlYW1zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5
cGUgPSBQQUNLRVRfVFlQRV9PTkVfUlRUCisgICAgICAgIGVsaWYgc2VsZi5fY3J5cHRvc1t0bHMu
RXBvY2guWkVST19SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIGNyeXB0byA9IHNl
bGYuX2NyeXB0b3NbdGxzLkVwb2NoLlpFUk9fUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5cGUg
PSBQQUNLRVRfVFlQRV9aRVJPX1JUVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQorCisgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIGFwcGx5IHBhY2luZywgZXhjZXB0IGlmIHdl
IGhhdmUgQUNLcyB0byBzZW5kCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgTm9uZSBv
ciBzcGFjZS5hY2tfYXQgPj0gbm93OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhY2luZ19hdCA9
IHNlbGYuX2xvc3MuX3BhY2VyLm5leHRfc2VuZF90aW1lKG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0
bykKKworICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlOgorICAgICAgICAg
ICAgICAgICMgQUNLCisgICAgICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIG5vdCBOb25l
IGFuZCBzcGFjZS5hY2tfYXQgPD0gbm93OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKKworICAg
ICAgICAgICAgICAgICMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9o
YW5kc2hha2VfZG9uZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9o
YW5kc2hha2VfZG9uZV9mcmFtZShidWlsZGVyPWJ1aWxkZXIpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAgICAg
IyBQQVRIIENIQUxMRU5HRQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAg
ICAgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgYW5k
IG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgaXMgTm9uZQorICAgICAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA9IG9zLnVyYW5kb20oOCkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5nZT1jaGFsbGVuZ2UKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGgubG9jYWxf
Y2hhbGxlbmdlID0gY2hhbGxlbmdlCisKKyAgICAgICAgICAgICAgICAjIFBBVEggUkVTUE9OU0UK
KyAgICAgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9yZXNwb25zZV9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgY2hhbGxlbmdlPW5l
dHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgPSBOb25lCisKKyAg
ICAgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lECisgICAgICAgICAgICAgICAgZm9yIGNv
bm5lY3Rpb25faWQgaW4gc2VsZi5faG9zdF9jaWRzOgorICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgY29ubmVjdGlvbl9pZC53YXNfc2VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIFJFVElSRV9DT05ORUNUSU9O
X0lECisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzOgor
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBzZWxmLl9yZXRpcmVfY29ubmVj
dGlvbl9pZHMucG9wKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JldGlyZV9j
b25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLCBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICMgU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmc6CisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPVF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX0JJREksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0cmVhbXNf
YmxvY2tlZF91bmk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJlYW1z
X2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlw
ZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFs
c2UKKworICAgICAgICAgICAgICAgICMgTUFYX0RBVEEKKyAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb25uZWN0aW9uX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlKQorCisg
ICAgICAgICAgICAjIHN0cmVhbS1sZXZlbCBsaW1pdHMKKyAgICAgICAgICAgIGZvciBzdHJlYW0g
aW4gc2VsZi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9z
dHJlYW1fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1zdHJlYW0p
CisKKyAgICAgICAgICAgICMgUElORyAodXNlci1yZXF1ZXN0KQorICAgICAgICAgICAgaWYgc2Vs
Zi5fcGluZ19wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUo
YnVpbGRlciwgc2VsZi5fcGluZ19wZW5kaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdf
cGVuZGluZy5jbGVhcigpCisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUpCisgICAgICAgICAg
ICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Bp
bmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0icHJvYmUiKQorICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIENSWVBUTworICAgICAgICAg
ICAgaWYgY3J5cHRvX3N0cmVhbSBpcyBub3QgTm9uZSBhbmQgbm90IGNyeXB0b19zdHJlYW0uc2Vu
ZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY3J5cHRvX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBz
dHJlYW09Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBE
QVRBR1JBTQorICAgICAgICAgICAgd2hpbGUgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmc6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fZGF0YWdyYW1zX3BlbmRpbmdbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lU
SF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1zX3BlbmRpbmcucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IFF1
aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICAgICAgIyBTVFJFQU0KKyAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gc2VsZi5fc3RyZWFtcy52
YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyZWFtLmlzX2Jsb2NrZWQgYW5kIG5v
dCBzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3JlbW90ZV9tYXhfZGF0YV91c2VkICs9IHNlbGYuX3dyaXRlX3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vZmZzZXQ9bWluKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyBzZWxmLl9yZW1vdGVfbWF4X2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBidWlsZGVyLnBh
Y2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLl9wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9
bm93KQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2UoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBlcG9jaDogdGxzLkVwb2NoLCBub3c6IGZsb2F0CisgICAgKSAt
PiBOb25lOgorICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQorICAgICAgICBp
ZiBub3QgY3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGNyeXB0b19zdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9jaF0KKyAgICAgICAg
c3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5JTklUSUFMOgorICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlID0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRQorICAgICAgICAg
ICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykKKworICAgICAgICAg
ICAgIyBBQ0sKKyAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1z
cGFjZSwgbm93PW5vdykKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAgICAgICAgIGlmIG5v
dCBjcnlwdG9fc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1i
dWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKwor
ICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nCisgICAgICAgICAgICAgICAgYW5kIGVwb2NoID09IHRs
cy5FcG9jaC5IQU5EU0hBS0UKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX2hhbmRzaGFr
ZV9jb21wbGV0ZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9w
aW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgaWYgYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfd3JpdGVfYWNrX2Zy
YW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBjYWxj
dWxhdGUgQUNLIGRlbGF5CisgICAgICAgIGFja19kZWxheSA9IG5vdyAtIHNwYWNlLmxhcmdlc3Rf
cmVjZWl2ZWRfdGltZQorICAgICAgICBhY2tfZGVsYXlfZW5jb2RlZCA9IGludChhY2tfZGVsYXkg
KiAxMDAwMDAwKSA+PiBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQKKworICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ss
CisgICAgICAgICAgICBjYXBhY2l0eT1BQ0tfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBo
YW5kbGVyPXNlbGYuX29uX2Fja19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0o
c3BhY2UsIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0KSwKKyAgICAgICAgKQorICAgICAg
ICByYW5nZXMgPSBwdXNoX2Fja19mcmFtZShidWYsIHNwYWNlLmFja19xdWV1ZSwgYWNrX2RlbGF5
X2VuY29kZWQpCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5vbmUKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBy
YW5nZXM9c3BhY2UuYWNrX3F1ZXVlLCBkZWxheT1hY2tfZGVsYXkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBuZWVkIHRvIHRyaWdnZXIg
YW4gQUNLLW9mLUFDSworICAgICAgICBpZiByYW5nZXMgPiAxIGFuZCBidWlsZGVyLnBhY2tldF9u
dW1iZXIgJSA4ID09IDA6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5nX2ZyYW1lKGJ1aWxk
ZXIsIGNvbW1lbnQ9IkFDSy1vZi1BQ0sgdHJpZ2dlciIpCisKKyAgICBkZWYgX3dyaXRlX2Nvbm5l
Y3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQsCisgICAgICAgIGZyYW1lX3R5
cGU6IE9wdGlvbmFsW2ludF0sCisgICAgICAgIHJlYXNvbl9waHJhc2U6IHN0ciwKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHJlYXNvbl9ieXRlcyA9IHJlYXNvbl9waHJhc2UuZW5jb2RlKCJ1dGY4
IikKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGxlbihyZWFzb25fYnl0ZXMpCisKKyAgICAgICAg
aWYgZnJhbWVfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAor
ICAgICAgICAgICAgICAgIGNhcGFjaXR5PUFQUExJQ0FUSU9OX0NMT1NFX0ZSQU1FX0NBUEFDSVRZ
ICsgcmVhc29uX2xlbmd0aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKGVycm9yX2NvZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZWFzb25f
bGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5dGVzKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgICAgICAgICBj
YXBhY2l0eT1UUkFOU1BPUlRfQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25fbGVuZ3RoLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJyb3JfY29kZSkK
KyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgICAgICAgICBi
dWYucHVzaF91aW50X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0
ZXMocmVhc29uX2J5dGVzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2Rl
PWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9s
aW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTog
UXVpY1BhY2tldFNwYWNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFp
c2UgTUFYX0RBVEEgaWYgbmVlZGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbG9j
YWxfbWF4X2RhdGFfdXNlZCAqIDIgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAg
IHNlbGYuX2xvY2FsX21heF9kYXRhICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygiTG9jYWwgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgc2VsZi5fbG9jYWxfbWF4X2RhdGEpCisg
ICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgIT0gc2VsZi5fbG9jYWxfbWF4X2Rh
dGE6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9TUFY
X0RBVEFfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9t
YXhfZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4
X2RhdGFfc2VudCA9IHNlbGYuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShzZWxmLl9s
b2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2NyeXB0
b19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkgLT4gYm9vbDoKKyAg
ICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAzICsgc2l6ZV91aW50X3ZhcihzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCkKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkKQorICAgICAgICBpZiBmcmFtZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9
ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9k
ZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJh
bWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNldCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDApCisgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnVpbGRlci5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZyYW1lKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0
QnVpbGRlciwgZGF0YTogYnl0ZXMsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUKKyAgICApIC0+
IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIERBVEFHUkFNIGZyYW1lLgorCisg
ICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnJhbWUgd2FzIHByb2Nlc3NlZCwgRmFsc2Ugb3Ro
ZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGZyYW1lX3R5cGUgPT0gUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSAorICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkK
KyAgICAgICAgZnJhbWVfc2l6ZSA9IDEgKyBzaXplX3VpbnRfdmFyKGxlbmd0aCkgKyBsZW5ndGgK
KworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKGZyYW1lX3R5cGUsIGNhcGFjaXR5
PWZyYW1lX3NpemUpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbmd0aCkKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZGF0YSkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0aCkKKyAgICAgICAgICAgICkKKworICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2VfZG9uZV9mcmFtZShz
ZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlcikgLT4gTm9uZToKKyAgICAgICAgYnVpbGRl
ci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUs
CisgICAgICAgICAgICBjYXBhY2l0eT1IQU5EU0hBS0VfRE9ORV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25faGFuZHNoYWtlX2RvbmVfZGVsaXZlcnksCisgICAg
ICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtl
X2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9uZXdfY29ubmVj
dGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IHJldGlyZV9wcmlvcl90byA9IDAgICMgRklYTUUKKworICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09OTkVDVElPTl9JRCwK
KyAgICAgICAgICAgIGNhcGFjaXR5PU5FV19DT05ORUNUSU9OX0lEX0ZSQU1FX0NBUEFDSVRZLAor
ICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9uZXdfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwK
KyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oY29ubmVjdGlvbl9pZCwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyKQor
ICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZXRpcmVfcHJpb3JfdG8pCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQ4KGxlbihjb25uZWN0aW9uX2lkLmNpZCkpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGNvbm5lY3Rpb25faWQuY2lkKQorICAgICAgICBidWYucHVzaF9ieXRlcyhjb25uZWN0aW9uX2lk
LnN0YXRlbGVzc19yZXNldF90b2tlbikKKworICAgICAgICBjb25uZWN0aW9uX2lkLndhc19zZW50
ID0gVHJ1ZQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5Db25uZWN0aW9uSWRJ
c3N1ZWQoY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkpCisKKyAgICAgICAgIyBsb2cg
ZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkLAorICAgICAgICAg
ICAgICAgICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXI9Y29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1jb25uZWN0aW9uX2lkLnN0
YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK
KyAgICBkZWYgX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAgICkgLT4gTm9uZToK
KyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuUEFUSF9DSEFMTEVOR0UsIGNhcGFjaXR5PVBBVEhfQ0hBTExFTkdFX0ZSQU1FX0NBUEFD
SVRZCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY2hhbGxlbmdlKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShk
YXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGF0aF9yZXNw
b25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGNo
YWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsIGNhcGFj
aXR5PVBBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNf
bG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1jaGFsbGVuZ2UpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1
aWNQYWNrZXRCdWlsZGVyLCB1aWRzOiBMaXN0W2ludF0gPSBbXSwgY29tbWVudD0iIgorICAgICk6
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBl
LlBJTkcsCisgICAgICAgICAgICBjYXBhY2l0eT1QSU5HX0ZSQU1FX0NBUEFDSVRZLAorICAgICAg
ICAgICAgaGFuZGxlcj1zZWxmLl9vbl9waW5nX2RlbGl2ZXJ5LAorICAgICAgICAgICAgaGFuZGxl
cl9hcmdzPSh0dXBsZSh1aWRzKSwpLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICJTZW5kaW5nIFBJTkclcyBpbiBwYWNrZXQgJWQiLAorICAgICAg
ICAgICAgIiAoJXMpIiAlIGNvbW1lbnQgaWYgY29tbWVudCBlbHNlICIiLAorICAgICAgICAgICAg
YnVpbGRlci5wYWNrZXRfbnVtYmVyLAorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJhbWUK
KyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBi
dWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJh
bWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzZXF1ZW5jZV9u
dW1iZXI6IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisg
ICAgICAgICAgICBjYXBhY2l0eT1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBBQ0lUWSwKKyAgICAg
ICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRfZGVsaXZlcnksCisg
ICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHNlcXVlbmNlX251bWJlciwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNlcXVlbmNlX251bWJlcikKKworICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoc2Vx
dWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fZnJh
bWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBzdHJlYW06IFF1aWNTdHJl
YW0sCisgICAgICAgIG1heF9vZmZzZXQ6IGludCwKKyAgICApIC0+IGludDoKKyAgICAgICAgIyB0
aGUgZnJhbWUgZGF0YSBzaXplIGlzIGNvbnN0cmFpbmVkIGJ5IG91ciBwZWVyJ3MgTUFYX0RBVEEg
YW5kCisgICAgICAgICMgdGhlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwYWNrZXQK
KyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAoCisgICAgICAgICAgICAzCisgICAgICAgICAgICAr
IHNpemVfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAgICAgICsgKHNpemVfdWlu
dF92YXIoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQpIGlmIHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
IGVsc2UgMCkKKyAgICAgICAgKQorICAgICAgICBwcmV2aW91c19zZW5kX2hpZ2hlc3QgPSBzdHJl
YW0uX3NlbmRfaGlnaGVzdAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoCisgICAg
ICAgICAgICBidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFtZV9vdmVyaGVhZCwg
bWF4X29mZnNldAorICAgICAgICApCisKKyAgICAgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDIgICMg
bGVuZ3RoCisgICAgICAgICAgICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAgICAgICAgICAgZnJh
bWVfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSB8PSAxCisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9ZnJh
bWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9kZWxp
dmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJhbWUu
b2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAgICBpZiBmcmFtZS5v
ZmZzZXQ6CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWUub2Zmc2V0KQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8IDB4NDAwMCkKKyAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAgICMgbG9n
IGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0
dXJuIHN0cmVhbS5fc2VuZF9oaWdoZXN0IC0gcHJldmlvdXNfc2VuZF9oaWdoZXN0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fbGlt
aXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmFpc2UgTUFYX1NUUkVBTV9EQVRBIGlmIG5lZWRlZC4KKworICAgICAg
ICBUaGUgb25seSBjYXNlIHdoZXJlIGBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsYCBpcyB6
ZXJvIGlzIGZvcgorICAgICAgICBsb2NhbGx5IGNyZWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFt
cy4gV2Ugc2tpcCBzdWNoIHN0cmVhbXMgdG8gYXZvaWQKKyAgICAgICAgc3B1cmlvdXMgbG9nZ2lu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uX3JlY3ZfaGlnaGVzdCAqIDIg
PiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICk6CisgICAgICAgICAgICBz
dHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIGxvY2FsIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwKKyAgICAgICAgICAgICkK
KyAgICAgICAgaWYgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ICE9IHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAg
ICAgICAgICAgICAgIGNhcGFjaXR5PU1BWF9TVFJFQU1fREFUQV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHN0cmVhbSwpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwpCisgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBzdHJlYW0ubWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVy
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhpbXVtPXN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIHN0cmVhbV9pZD1z
dHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUsIGxp
bWl0OiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9U1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZKQorICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihsaW1pdCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBp
c191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9D
S0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNkMzU4NzM0YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkK
QEAgLTAsMCArMSwxOTYgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB0eXBpbmcgaW1wb3J0IE9w
dGlvbmFsLCBUdXBsZQorCitmcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwgQ3J5cHRvRXJyb3Is
IEhlYWRlclByb3RlY3Rpb24KK2Zyb20gLi50bHMgaW1wb3J0IENpcGhlclN1aXRlLCBjaXBoZXJf
c3VpdGVfaGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAorZnJvbSAucGFja2V0
IGltcG9ydCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIKKworQ0lQSEVSX1NV
SVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6IChiImFlcy0xMjgt
ZWNiIiwgYiJhZXMtMTI4LWdjbSIpLAorICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4
NDogKGIiYWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCisgICAgQ2lwaGVyU3VpdGUuQ0hB
Q0hBMjBfUE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hhMjAtcG9seTEzMDUi
KSwKK30KK0lOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hB
MjU2CitJTklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVmNzEyYzcyZWJiNWEx
MWE3ZDI0MzJiYjQ2MzY1YmVmOWY1MDIiKQorU0FNUExFX1NJWkUgPSAxNgorCisKK2NsYXNzIEtl
eVVuYXZhaWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgorICAgIHBhc3MKKworCitkZWYgZGVyaXZl
X2tleV9pdl9ocCgKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNyZXQ6IGJ5dGVz
CispIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgorICAgIGFsZ29yaXRobSA9IGNpcGhl
cl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICBpZiBjaXBoZXJfc3VpdGUgaW4gWworICAg
ICAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAgIENpcGhlclN1aXRl
LkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICBdOgorICAgICAgICBrZXlfc2l6ZSA9IDMy
CisgICAgZWxzZToKKyAgICAgICAga2V5X3NpemUgPSAxNgorICAgIHJldHVybiAoCisgICAgICAg
IGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMga2V5IiwgYiIiLCBr
ZXlfc2l6ZSksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBi
InF1aWMgaXYiLCBiIiIsIDEyKSwKKyAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGht
LCBzZWNyZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAorICAgICkKKworCitjbGFzcyBD
cnlwdG9Db250ZXh0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhhc2U6IGludCA9IDAp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0gPSBOb25lCisgICAg
ICAgIHNlbGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9uZQorICAgICAgICBz
ZWxmLmtleV9waGFzZSA9IGtleV9waGFzZQorICAgICAgICBzZWxmLnNlY3JldDogT3B0aW9uYWxb
Ynl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25l
CisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMs
IGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAg
KSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06CisgICAgICAgIGlmIHNlbGYuYWVh
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVFcnJvcigiRGVjcnlw
dGlvbiBrZXkgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlv
bgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxmLmhwLnJlbW92ZShw
YWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQpCisgICAgICAgIGZpcnN0X2J5dGUgPSBwbGFpbl9oZWFk
ZXJbMF0KKworICAgICAgICAjIHBhY2tldCBudW1iZXIKKyAgICAgICAgcG5fbGVuZ3RoID0gKGZp
cnN0X2J5dGUgJiAweDAzKSArIDEKKyAgICAgICAgcGFja2V0X251bWJlciA9IGRlY29kZV9wYWNr
ZXRfbnVtYmVyKAorICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVuZ3RoICogOCwgZXhw
ZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgIyBkZXRlY3Qga2V5IHBo
YXNlIGNoYW5nZQorICAgICAgICBjcnlwdG8gPSBzZWxmCisgICAgICAgIGlmIG5vdCBpc19sb25n
X2hlYWRlcihmaXJzdF9ieXRlKToKKyAgICAgICAgICAgIGtleV9waGFzZSA9IChmaXJzdF9ieXRl
ICYgNCkgPj4gMgorICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYua2V5X3BoYXNlOgor
ICAgICAgICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYpCisKKyAgICAgICAg
IyBwYXlsb2FkIHByb3RlY3Rpb24KKyAgICAgICAgcGF5bG9hZCA9IGNyeXB0by5hZWFkLmRlY3J5
cHQoCisgICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0sIHBsYWluX2hlYWRl
ciwgcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRl
ciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKKworICAgIGRlZiBlbmNy
eXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5
bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6CisgICAgICAg
IGFzc2VydCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxl
IgorCisgICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHByb3RlY3RlZF9wYXls
b2FkID0gc2VsZi5hZWFkLmVuY3J5cHQoCisgICAgICAgICAgICBwbGFpbl9wYXlsb2FkLCBwbGFp
bl9oZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgICMgaGVhZGVyIHBy
b3RlY3Rpb24KKyAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5faGVhZGVyLCBwcm90
ZWN0ZWRfcGF5bG9hZCkKKworICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCisKKyAgICBkZWYgc2V0dXAoc2VsZiwgY2lw
aGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lvbjogaW50KSAtPiBO
b25lOgorICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFtZSA9IENJUEhFUl9T
VUlURVNbY2lwaGVyX3N1aXRlXQorCisgICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9p
dl9ocChjaXBoZXJfc3VpdGUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hZWFkID0gQUVBRChhZWFk
X2NpcGhlcl9uYW1lLCBrZXksIGl2KQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhl
cl9zdWl0ZQorICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbihocF9jaXBoZXJfbmFt
ZSwgaHApCisgICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0CisgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24KKworICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmFlYWQgPSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gTm9uZQorICAgICAg
ICBzZWxmLmhwID0gTm9uZQorICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUKKworCitkZWYgYXBw
bHlfa2V5X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5cHRvQ29udGV4dCkg
LT4gTm9uZToKKyAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAorICAgIHNlbGYua2V5X3BoYXNl
ID0gY3J5cHRvLmtleV9waGFzZQorICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRvLnNlY3JldAorCisK
K2RlZiBuZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBDcnlwdG9Db250ZXh0
OgorICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lwaGVyX3N1aXRlKQor
CisgICAgY3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5vdCBzZWxmLmtleV9w
aGFzZSkpCisgICAgY3J5cHRvLnNldHVwKAorICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5jaXBo
ZXJfc3VpdGUsCisgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAg
IGFsZ29yaXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplCisgICAgICAgICksCisgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAorICAgICkK
KyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3MgQ3J5cHRvUGFpcjoKKyAgICBkZWYgX19pbml0
X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXplID0gMTYKKyAgICAg
ICAgc2VsZi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYuc2VuZCA9IENyeXB0
b0NvbnRleHQoKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCisK
KyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVu
Y3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAgKSAt
PiBUdXBsZVtieXRlcywgYnl0ZXMsIGludF06CisgICAgICAgIHBsYWluX2hlYWRlciwgcGF5bG9h
ZCwgcGFja2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNyeXB0X3BhY2tldCgK
KyAgICAgICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0ZWRfcGFja2V0X251
bWJlcgorICAgICAgICApCisgICAgICAgIGlmIHVwZGF0ZV9rZXk6CisgICAgICAgICAgICBzZWxm
Ll91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFj
a2V0X251bWJlcgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwbGFp
bl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjogaW50
CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQ6
CisgICAgICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vu
ZC5lbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1i
ZXIpCisKKyAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVzLCBpc19jbGllbnQ6
IGJvb2wsIHZlcnNpb246IGludCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAg
ICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGluIiwgYiJjbGllbnQg
aW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xhYmVsID0g
YiJjbGllbnQgaW4iLCBiInNlcnZlciBpbiIKKworICAgICAgICBhbGdvcml0aG0gPSBjaXBoZXJf
c3VpdGVfaGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKKyAgICAgICAgaW5pdGlhbF9zZWNyZXQg
PSBoa2RmX2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkKKyAgICAgICAgc2Vs
Zi5yZWN2LnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NV
SVRFLAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAg
ICAgIGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIiIiwgYWxnb3JpdGht
LmRpZ2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9u
LAorICAgICAgICApCisgICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhl
cl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCBz
ZW5kX2xhYmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgKQorCisgICAgZGVmIHRlYXJkb3du
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigpCisgICAgICAgIHNl
bGYuc2VuZC50ZWFyZG93bigpCisKKyAgICBkZWYgdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgorICAgICAgICBpZiBzZWxmLl91cGRh
dGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHJldHVybiBpbnQobm90IHNlbGYucmVjdi5r
ZXlfcGhhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWN2Lmtl
eV9waGFzZQorCisgICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFw
cGx5X2tleV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYucmVjdikpCisgICAg
ICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNlKHNlbGYuc2VuZCkp
CisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMwNjkzOTM2YzE4ODE2YWUx
MTgzMjZkMmEyMjUxMjk1MjQ1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitmcm9tIGRhdGFjbGFz
c2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCisKK2Ns
YXNzIFF1aWNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBRVUlDIGV2ZW50cy4K
KyAgICAiIiIKKworICAgIHBhc3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uSWRJ
c3N1ZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9uX2lkOiBieXRlcworCisKK0BkYXRhY2xh
c3MKK2NsYXNzIENvbm5lY3Rpb25JZFJldGlyZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9u
X2lkOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25UZXJtaW5hdGVkKFF1
aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIENvbm5lY3Rpb25UZXJtaW5hdGVkIGV2ZW50IGlz
IGZpcmVkIHdoZW4gdGhlIFFVSUMgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkLgorICAgICIiIgor
CisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHdoaWNoIHdhcyBzcGVj
aWZpZWQgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiIKKworICAgIGZyYW1lX3R5cGU6IE9w
dGlvbmFsW2ludF0KKyAgICAiVGhlIGZyYW1lIHR5cGUgd2hpY2ggY2F1c2VkIHRoZSBjb25uZWN0
aW9uIHRvIGJlIGNsb3NlZCwgb3IgYE5vbmVgLiIKKworICAgIHJlYXNvbl9waHJhc2U6IHN0cgor
ICAgICJUaGUgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB3aGljaCB0aGUgY29ubmVjdGlvbiB3
YXMgY2xvc2VkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
UXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YWdyYW1GcmFtZVJlY2VpdmVkIGV2ZW50
IGlzIGZpcmVkIHdoZW4gYSBEQVRBR1JBTSBmcmFtZSBpcyByZWNlaXZlZC4KKyAgICAiIiIKKwor
ICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKwor
QGRhdGFjbGFzcworY2xhc3MgSGFuZHNoYWtlQ29tcGxldGVkKFF1aWNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIEhhbmRzaGFrZUNvbXBsZXRlZCBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBUTFMg
aGFuZHNoYWtlIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlv
bmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFM
UE4sIG9yIGBOb25lYC4iCisKKyAgICBlYXJseV9kYXRhX2FjY2VwdGVkOiBib29sCisgICAgIldo
ZXRoZXIgZWFybHkgKDAtUlRUKSBkYXRhIHdhcyBhY2NlcHRlZCBieSB0aGUgcmVtb3RlIHBlZXIu
IgorCisgICAgc2Vzc2lvbl9yZXN1bWVkOiBib29sCisgICAgIldoZXRoZXIgYSBUTFMgc2Vzc2lv
biB3YXMgcmVzdW1lZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUGluZ0Fja25vd2xlZGdlZChR
dWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrbm93bGVkZ2VkIGV2ZW50IGlzIGZp
cmVkIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZC4KKyAgICAiIiIKKworICAgIHVp
ZDogaW50CisgICAgIlRoZSB1bmlxdWUgSUQgb2YgdGhlIFBJTkcuIgorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIFByb3RvY29sTmVnb3RpYXRlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQ
cm90b2NvbE5lZ290aWF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBBTFBOIG5lZ290aWF0aW9uIGNv
bXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0KKyAg
ICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFMUE4sIG9yIGBOb25l
YC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgU3RyZWFtRGF0YVJlY2VpdmVkKFF1aWNFdmVudCk6
CisgICAgIiIiCisgICAgVGhlIFN0cmVhbURhdGFSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVu
ZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEKKyAgICBzdHJlYW0uCisgICAgIiIiCisKKyAgICBk
YXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgorCisgICAgZW5k
X3N0cmVhbTogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4g
Yml0IHNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQgb2YgdGhlIHN0cmVh
bSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBTdHJl
YW1SZXNldChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1SZXNldCBldmVudCBp
cyBmaXJlZCB3aGVuIHRoZSByZW1vdGUgcGVlciByZXNldHMgYSBzdHJlYW0uCisgICAgIiIiCisK
KyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAiVGhlIGVycm9yIGNvZGUgdGhhdCB0cmlnZ2VyZWQg
dGhlIHJlc2V0LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3Ry
ZWFtIHRoYXQgd2FzIHJlc2V0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDk3NWJkNTkyZTFjMDg3ODI1Y2Q5NWM2MDNjNjkwNmE3NDNkYjgxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5
CkBAIC0wLDAgKzEsMjY2IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0aW1lCitmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGVxdWUsIERp
Y3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5wYWNrZXQgaW1wb3J0ICgKKyAgICBQ
QUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNL
RVRfVFlQRV9NQVNLLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVf
UkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQsCisgICAgUXVpY1N0cmVhbUZyYW1lLAor
ICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorKQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJh
bmdlU2V0CisKK1BBQ0tFVF9UWVBFX05BTUVTID0geworICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUw6
ICJpbml0aWFsIiwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6ICJoYW5kc2hha2UiLAorICAg
IFBBQ0tFVF9UWVBFX1pFUk9fUlRUOiAiMFJUVCIsCisgICAgUEFDS0VUX1RZUEVfT05FX1JUVDog
IjFSVFQiLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZOiAicmV0cnkiLAorfQorCisKK2RlZiBoZXhk
dW1wKGRhdGE6IGJ5dGVzKSAtPiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkoZGF0
YSkuZGVjb2RlKCJhc2NpaSIpCisKKworY2xhc3MgUXVpY0xvZ2dlclRyYWNlOgorICAgICIiIgor
ICAgIEEgUVVJQyBldmVudCB0cmFjZS4KKworICAgIEV2ZW50cyBhcmUgbG9nZ2VkIGluIHRoZSBm
b3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2VlOiBodHRwczovL3F1aWNs
b2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFsb2ctZXZlbnQtZGVmaW5p
dGlvbnMtcXVpYy1oMy5odG1sCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwg
aXNfY2xpZW50OiBib29sLCBvZGNpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX29k
Y2lkID0gb2RjaWQKKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtUdXBsZVtmbG9hdCwgc3Ry
LCBzdHIsIERpY3Rbc3RyLCBBbnldXV0gPSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX3ZhbnRhZ2Vf
cG9pbnQgPSB7CisgICAgICAgICAgICAibmFtZSI6ICJhaW9xdWljIiwKKyAgICAgICAgICAgICJ0
eXBlIjogImNsaWVudCIgaWYgaXNfY2xpZW50IGVsc2UgInNlcnZlciIsCisgICAgICAgIH0KKwor
ICAgIGRlZiBlbmNvZGVfYWNrX2ZyYW1lKHNlbGYsIHJhbmdlczogUmFuZ2VTZXQsIGRlbGF5OiBm
bG9hdCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJhY2tfZGVsYXki
OiBzdHIoc2VsZi5lbmNvZGVfdGltZShkZWxheSkpLAorICAgICAgICAgICAgImFja2VkX3Jhbmdl
cyI6IFtbc3RyKHguc3RhcnQpLCBzdHIoeC5zdG9wIC0gMSldIGZvciB4IGluIHJhbmdlc10sCisg
ICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJhY2siLAorICAgICAgICB9CisKKyAgICBkZWYgZW5j
b2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGlu
dCwgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwgcmVhc29uX3BocmFzZTogc3RyCisgICAgKSAt
PiBEaWN0OgorICAgICAgICBhdHRycyA9IHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJy
b3JfY29kZSwKKyAgICAgICAgICAgICJlcnJvcl9zcGFjZSI6ICJhcHBsaWNhdGlvbiIgaWYgZnJh
bWVfdHlwZSBpcyBOb25lIGVsc2UgInRyYW5zcG9ydCIsCisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJjb25uZWN0aW9uX2Nsb3NlIiwKKyAgICAgICAgICAgICJyYXdfZXJyb3JfY29kZSI6IGVy
cm9yX2NvZGUsCisgICAgICAgICAgICAicmVhc29uIjogcmVhc29uX3BocmFzZSwKKyAgICAgICAg
fQorICAgICAgICBpZiBmcmFtZV90eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXR0cnNb
InRyaWdnZXJfZnJhbWVfdHlwZSJdID0gZnJhbWVfdHlwZQorCisgICAgICAgIHJldHVybiBhdHRy
cworCisgICAgZGVmIGVuY29kZV9jcnlwdG9fZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1G
cmFtZSkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBl
IjogImNyeXB0byIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGZyYW1lLmRhdGEpLAorICAg
ICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBsaW1pdDogaW50KSAtPiBEaWN0Ogor
ICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFfYmxvY2tlZCIsICJsaW1pdCI6IHN0
cihsaW1pdCl9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFncmFtX2ZyYW1lKHNlbGYsIGxlbmd0aDog
aW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFncmFtIiwg
Imxlbmd0aCI6IGxlbmd0aH0KKworICAgIGRlZiBlbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUo
c2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJoYW5kc2hha2Vf
ZG9uZSJ9CisKKyAgICBkZWYgZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYsIG1heGltdW06IGlu
dCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJtYXhfZGF0YSIsICJt
YXhpbXVtIjogc3RyKG1heGltdW0pfQorCisgICAgZGVmIGVuY29kZV9tYXhfc3RyZWFtX2RhdGFf
ZnJhbWUoc2VsZiwgbWF4aW11bTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogIm1heF9zdHJlYW1fZGF0YSIs
CisgICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAgICAgICAgICJzdHJl
YW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9tYXhf
c3RyZWFtc19mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCwgbWF4aW11bTogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAi
bWF4X3N0cmVhbXMiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4aW11bSksCisgICAg
ICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlmIGlzX3VuaWRpcmVjdGlv
bmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX25l
d19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBjb25uZWN0aW9u
X2lkOiBieXRlcywKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvOiBpbnQsCisgICAgICAgIHNlcXVl
bmNlX251bWJlcjogaW50LAorICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzLAor
ICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25uZWN0aW9u
X2lkIjogaGV4ZHVtcChjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjog
Im5ld19jb25uZWN0aW9uX2lkIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oY29ubmVjdGlv
bl9pZCksCisgICAgICAgICAgICAicmVzZXRfdG9rZW4iOiBoZXhkdW1wKHN0YXRlbGVzc19yZXNl
dF90b2tlbiksCisgICAgICAgICAgICAicmV0aXJlX3ByaW9yX3RvIjogc3RyKHJldGlyZV9wcmlv
cl90byksCisgICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNlcXVlbmNlX251bWJl
ciksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X3Rva2VuX2ZyYW1lKHNlbGYsIHRv
a2VuOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFt
ZV90eXBlIjogIm5ld190b2tlbiIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKHRva2VuKSwK
KyAgICAgICAgICAgICJ0b2tlbiI6IGhleGR1bXAodG9rZW4pLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX3BhZGRpbmdfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsi
ZnJhbWVfdHlwZSI6ICJwYWRkaW5nIn0KKworICAgIGRlZiBlbmNvZGVfcGF0aF9jaGFsbGVuZ2Vf
ZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImRhdGEi
OiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJwYXRoX2NoYWxsZW5nZSJ9CisKKyAgICBk
ZWYgZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6
CisgICAgICAgIHJldHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJw
YXRoX3Jlc3BvbnNlIn0KKworICAgIGRlZiBlbmNvZGVfcGluZ19mcmFtZShzZWxmKSAtPiBEaWN0
OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBpbmcifQorCisgICAgZGVmIGVuY29k
ZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGludCwgZmlu
YWxfc2l6ZTogaW50LCBzdHJlYW1faWQ6IGludAorICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAg
ICJmaW5hbF9zaXplIjogc3RyKGZpbmFsX3NpemUpLAorICAgICAgICAgICAgImZyYW1lX3R5cGUi
OiAicmVzZXRfc3RyZWFtIiwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lk
KSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFt
ZShzZWxmLCBzZXF1ZW5jZV9udW1iZXI6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInJldGlyZV9jb25uZWN0aW9uX2lkIiwKKyAgICAg
ICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgICAg
fQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYsIGxpbWl0
OiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtX2RhdGFfYmxvY2tlZCIsCisgICAgICAgICAgICAi
bGltaXQiOiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1f
aWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZShzZWxm
LCBlcnJvcl9jb2RlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RvcF9zZW5kaW5nIiwKKyAgICAgICAg
ICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBz
dHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZmluIjogZnJhbWUuZmluLAorICAgICAgICAg
ICAgImZyYW1lX3R5cGUiOiAic3RyZWFtIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oZnJh
bWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9mZnNldCksCisgICAg
ICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRl
ZiBlbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBi
b29sLCBsaW1pdDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ImZyYW1lX3R5cGUiOiAic3RyZWFtc19ibG9ja2VkIiwKKyAgICAgICAgICAgICJsaW1pdCI6IHN0
cihsaW1pdCksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlm
IGlzX3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAg
ICBkZWYgZW5jb2RlX3RpbWUoc2VsZiwgc2Vjb25kczogZmxvYXQpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIENvbnZlcnQgYSB0aW1lIHRvIGludGVnZXIgbWljcm9zZWNvbmRzLgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWNvbmRzICogMTAwMDAwMCkKKworICAgIGRl
ZiBlbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgIHNlbGYsIG93bmVyOiBzdHIs
IHBhcmFtZXRlcnM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzCisgICAgKSAtPiBEaWN0W3N0ciwg
QW55XToKKyAgICAgICAgZGF0YTogRGljdFtzdHIsIEFueV0gPSB7Im93bmVyIjogb3duZXJ9Cisg
ICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBwYXJhbWV0ZXJzLl9fZGljdF9f
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBib29sKToK
KyAgICAgICAgICAgICAgICBkYXRhW3BhcmFtX25hbWVdID0gcGFyYW1fdmFsdWUKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYnl0ZXMpOgorICAgICAgICAgICAgICAg
IGRhdGFbcGFyYW1fbmFtZV0gPSBoZXhkdW1wKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBpbnQpOgorICAgICAgICAgICAgICAgIGRhdGFbcGFy
YW1fbmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGxv
Z19ldmVudChzZWxmLCAqLCBjYXRlZ29yeTogc3RyLCBldmVudDogc3RyLCBkYXRhOiBEaWN0KSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCh0aW1lLnRpbWUoKSwgY2F0ZWdv
cnksIGV2ZW50LCBkYXRhKSkKKworICAgIGRlZiBwYWNrZXRfdHlwZShzZWxmLCBwYWNrZXRfdHlw
ZTogaW50KSAtPiBzdHI6CisgICAgICAgIHJldHVybiBQQUNLRVRfVFlQRV9OQU1FUy5nZXQocGFj
a2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLLCAiMVJUVCIpCisKKyAgICBkZWYgdG9fZGljdChz
ZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUg
dHJhY2UgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9ldmVudHM6CisgICAgICAgICAgICByZWZlcmVuY2Vf
dGltZSA9IHNlbGYuX2V2ZW50c1swXVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVm
ZXJlbmNlX3RpbWUgPSAwLjAKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25maWd1
cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAgICAiY29tbW9uX2ZpZWxk
cyI6IHsKKyAgICAgICAgICAgICAgICAiT0RDSUQiOiBoZXhkdW1wKHNlbGYuX29kY2lkKSwKKyAg
ICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiBzdHIoc2VsZi5lbmNvZGVfdGltZShyZWZl
cmVuY2VfdGltZSkpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJldmVudF9maWVsZHMi
OiBbInJlbGF0aXZlX3RpbWUiLCAiY2F0ZWdvcnkiLCAiZXZlbnRfdHlwZSIsICJkYXRhIl0sCisg
ICAgICAgICAgICAiZXZlbnRzIjogbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgICAgIGxhbWJkYSBldmVudDogKAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
KHNlbGYuZW5jb2RlX3RpbWUoZXZlbnRbMF0gLSByZWZlcmVuY2VfdGltZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFsy
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzNdLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJ2YW50YWdlX3BvaW50Ijogc2VsZi5fdmFu
dGFnZV9wb2ludCwKKyAgICAgICAgfQorCisKK2NsYXNzIFF1aWNMb2dnZXI6CisgICAgIiIiCisg
ICAgQSBRVUlDIGV2ZW50IGxvZ2dlci4KKworICAgIFNlcnZlcyBhcyBhIGNvbnRhaW5lciBmb3Ig
dHJhY2VzIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2Vl
OiBodHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFs
b2ctbWFpbi1zY2hlbWEuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYWNlczogTGlzdFtRdWljTG9nZ2VyVHJhY2VdID0gW10K
KworICAgIGRlZiBzdGFydF90cmFjZShzZWxmLCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRl
cykgLT4gUXVpY0xvZ2dlclRyYWNlOgorICAgICAgICB0cmFjZSA9IFF1aWNMb2dnZXJUcmFjZShp
c19jbGllbnQ9aXNfY2xpZW50LCBvZGNpZD1vZGNpZCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLmFw
cGVuZCh0cmFjZSkKKyAgICAgICAgcmV0dXJuIHRyYWNlCisKKyAgICBkZWYgZW5kX3RyYWNlKHNl
bGYsIHRyYWNlOiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCB0cmFj
ZSBpbiBzZWxmLl90cmFjZXMsICJRdWljTG9nZ2VyVHJhY2UgZG9lcyBub3QgYmVsb25nIHRvIFF1
aWNMb2dnZXIiCisKKyAgICBkZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdHJhY2VzIGFzIGEgZGljdGlvbmFyeSB3aGlj
aCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLAorICAgICAgICAgICAgInRy
YWNlcyI6IFt0cmFjZS50b19kaWN0KCkgZm9yIHRyYWNlIGluIHNlbGYuX3RyYWNlc10sCisgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYwYmNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CkBAIC0wLDAgKzEsNTA4
IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBvcworZnJvbSBk
YXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zy
b20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNHQ00KKworZnJvbSAu
LmJ1ZmZlciBpbXBvcnQgQnVmZmVyCitmcm9tIC4udGxzIGltcG9ydCBwdWxsX2Jsb2NrLCBwdXNo
X2Jsb2NrCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFDS0VUX0xPTkdfSEVB
REVSID0gMHg4MAorUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKK1BBQ0tFVF9TUElOX0JJVCA9IDB4
MjAKKworUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBBQ0tFVF9G
SVhFRF9CSVQgfCAweDAwCitQQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tFVF9MT05HX0hFQURF
UiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCitQQUNLRVRfVFlQRV9IQU5EU0hBS0UgPSBQQUNL
RVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAorUEFDS0VUX1RZUEVfUkVU
UlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgzMAorUEFDS0VU
X1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKK1BBQ0tFVF9UWVBFX01BU0sgPSAweEYw
CisKK0NPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAorUEFDS0VUX05VTUJFUl9NQVhfU0laRSA9
IDQKK1JFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMyZWNkYjJhMjEzM2M4
NDFlNDA0M2RmMjdkNDQzMCIpCitSRVRSWV9BRUFEX05PTkNFID0gYmluYXNjaWkudW5oZXhsaWZ5
KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQorUkVUUllfSU5URUdSSVRZX1RBR19TSVpFID0g
MTYKKworCitjbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgorICAgIE5PX0VSUk9SID0gMHgw
CisgICAgSU5URVJOQUxfRVJST1IgPSAweDEKKyAgICBTRVJWRVJfQlVTWSA9IDB4MgorICAgIEZM
T1dfQ09OVFJPTF9FUlJPUiA9IDB4MworICAgIFNUUkVBTV9MSU1JVF9FUlJPUiA9IDB4NAorICAg
IFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQorICAgIEZJTkFMX1NJWkVfRVJST1IgPSAweDYKKyAg
ICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NworICAgIFRSQU5TUE9SVF9QQVJBTUVURVJfRVJS
T1IgPSAweDgKKyAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5CisgICAgUFJPVE9D
T0xfVklPTEFUSU9OID0gMHhBCisgICAgSU5WQUxJRF9UT0tFTiA9IDB4QgorICAgIENSWVBUT19C
VUZGRVJfRVhDRUVERUQgPSAweEQKKyAgICBDUllQVE9fRVJST1IgPSAweDEwMAorCisKK2NsYXNz
IFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6CisgICAgTkVHT1RJQVRJT04gPSAwCisgICAg
RFJBRlRfMjUgPSAweEZGMDAwMDE5CisgICAgRFJBRlRfMjYgPSAweEZGMDAwMDFBCisgICAgRFJB
RlRfMjcgPSAweEZGMDAwMDFCCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0hlYWRlcjoKKyAg
ICBpc19sb25nX2hlYWRlcjogYm9vbAorICAgIHZlcnNpb246IE9wdGlvbmFsW2ludF0KKyAgICBw
YWNrZXRfdHlwZTogaW50CisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcworICAgIHNvdXJjZV9j
aWQ6IGJ5dGVzCisgICAgdG9rZW46IGJ5dGVzID0gYiIiCisgICAgaW50ZWdyaXR5X3RhZzogYnl0
ZXMgPSBiIiIKKyAgICByZXN0X2xlbmd0aDogaW50ID0gMAorCisKK2RlZiBkZWNvZGVfcGFja2V0
X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0ZWQ6IGludCkgLT4g
aW50OgorICAgICIiIgorICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZyb20gYSB0cnVuY2F0
ZWQgcGFja2V0IG51bWJlci4KKworICAgIFNlZTogQXBwZW5kaXggQSAtIFNhbXBsZSBQYWNrZXQg
TnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQorICAgICIiIgorICAgIHdpbmRvdyA9IDEgPDwgbnVt
X2JpdHMKKyAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCisgICAgY2FuZGlkYXRlID0gKGV4
cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKKyAgICBpZiBjYW5kaWRhdGUgPD0g
ZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwgNjIpIC0gd2luZG93
OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93CisgICAgZWxpZiBjYW5kaWRhdGUg
PiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2luZG93OgorICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZQorCisKK2RlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICBwYWNrZXRfd2l0
aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzCispIC0+IGJ5
dGVzOgorICAgICIiIgorICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRhZyBmb3IgYSBSRVRS
WSBwYWNrZXQuCisgICAgIiIiCisgICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8gcGFja2V0CisgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSAr
IGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdpbmFsX2Rlc3RpbmF0
aW9uX2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90YWcpCisgICAgYXNz
ZXJ0IGJ1Zi5lb2YoKQorCisgICAgIyBydW4gQUVTLTEyOC1HQ00KKyAgICBhZWFkID0gQUVTR0NN
KFJFVFJZX0FFQURfS0VZKQorICAgIGludGVncml0eV90YWcgPSBhZWFkLmVuY3J5cHQoUkVUUllf
QUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKKyAgICBhc3NlcnQgbGVuKGludGVncml0eV90YWcp
ID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQorICAgIHJldHVybiBpbnRlZ3JpdHlfdGFnCisK
KworZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6CisgICAgcmV0dXJu
IGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKKworCitkZWYgaXNfbG9uZ19oZWFk
ZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJldHVybiBib29sKGZpcnN0X2J5dGUg
JiBQQUNLRVRfTE9OR19IRUFERVIpCisKKworZGVmIHB1bGxfcXVpY19oZWFkZXIoYnVmOiBCdWZm
ZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IFF1aWNIZWFkZXI6
CisgICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKworICAgIGludGVncml0eV90YWcg
PSBiIiIKKyAgICB0b2tlbiA9IGIiIgorICAgIGlmIGlzX2xvbmdfaGVhZGVyKGZpcnN0X2J5dGUp
OgorICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAorICAgICAgICB2ZXJzaW9uID0gYnVmLnB1
bGxfdWludDMyKCkKKworICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID0gYnVmLnB1bGxf
dWludDgoKQorICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4gQ09OTkVDVElPTl9J
RF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIGRlc3RpbmF0aW9u
X2NpZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZGVzdGluYXRpb25fY2lkID0gYnVm
LnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKKworICAgICAgICBzb3VyY2VfY2lk
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgc291cmNlX2NpZF9sZW5ndGgg
PiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
U291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9jaWRfbGVuZ3RoKQor
ICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2NpZF9sZW5ndGgpCisK
KyAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OOgor
ICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAgICBwYWNrZXRfdHlw
ZSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRl
bGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IChmaXJzdF9ieXRlICYgUEFD
S0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0
IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBmaXJzdF9i
eXRlICYgUEFDS0VUX1RZUEVfTUFTSworICAgICAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFD
S0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVsbF9ieXRlcyh0b2tl
bl9sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JFVFJZOgor
ICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkg
LSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGJ1Zi5w
dWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBpbnRlZ3JpdHlfdGFnID0g
YnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQorICAgICAgICAgICAgICAg
IHJlc3RfbGVuZ3RoID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN0
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICByZXR1cm4gUXVpY0hlYWRl
cigKKyAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCisgICAgICAgICAgICB2ZXJzaW9u
PXZlcnNpb24sCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICBzb3VyY2Vf
Y2lkPXNvdXJjZV9jaWQsCisgICAgICAgICAgICB0b2tlbj10b2tlbiwKKyAgICAgICAgICAgIGlu
dGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoPXJlc3Rf
bGVuZ3RoLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgIyBzaG9ydCBoZWFkZXIgcGFj
a2V0CisgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhFRF9CSVQpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKwor
ICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNLCisgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lkX2xlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCisgICAgICAgICAgICBpc19sb25nX2hlYWRlcj1GYWxz
ZSwKKyAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPXBh
Y2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0aW9uX2NpZCwK
KyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAorICAgICAgICAgICAgdG9rZW49YiIiLAorICAg
ICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSwKKyAgICAgICAg
KQorCisKK2RlZiBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICB2ZXJzaW9uOiBpbnQsCisgICAgc291
cmNlX2NpZDogYnl0ZXMsCisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywKKyAgICBvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAorICAgIHJldHJ5X3Rva2VuOiBieXRlcywKKykgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBjYXBhY2l0eT03CisgICAgICAgICsg
bGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4oc291cmNlX2NpZCkKKyAgICAgICAg
KyBsZW4ocmV0cnlfdG9rZW4pCisgICAgICAgICsgUkVUUllfSU5URUdSSVRZX1RBR19TSVpFCisg
ICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQorICAgIGJ1Zi5wdXNo
X3VpbnQzMih2ZXJzaW9uKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0aW5hdGlvbl9jaWQp
KQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAgICBidWYucHVzaF91aW50
OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291cmNlX2NpZCkKKyAgICBi
dWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKKyAgICBidWYucHVzaF9ieXRlcyhnZXRfcmV0cnlf
aW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSkKKyAgICBh
c3NlcnQgYnVmLmVvZigpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIGVuY29kZV9xdWlj
X3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgc291cmNlX2NpZDogYnl0ZXMsIGRlc3RpbmF0aW9u
X2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCispIC0+IGJ5dGVzOgor
ICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAgICArIGxlbihkZXN0
aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAgICAgICsgNCAqIGxl
bihzdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KG9zLnVyYW5k
b20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCisgICAgYnVmLnB1c2hfdWludDMyKFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgYnVmLnB1c2hfdWludDgobGVuKGRlc3Rp
bmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25fY2lkKQorICAgIGJ1
Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhzb3VyY2Vf
Y2lkKQorICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoKKyAgICAgICAgYnVm
LnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworIyBUTFMgRVhU
RU5TSU9OCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAg
aXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgaXB2Nl9hZGRyZXNz
OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKKyAg
ICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVp
Y1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBt
YXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfZGF0
YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRp
X2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1z
X2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgYWNrX2RlbGF5X2V4cG9uZW50OiBPcHRpb25hbFtp
bnRdID0gTm9uZQorICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZhbHNlCisgICAgcHJl
ZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNzXSA9IE5vbmUKKyAg
ICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBxdWFudHVt
X3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisKK1BBUkFNUyA9IHsKKyAgICAw
OiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCisgICAgMTogKCJpZGxlX3RpbWVv
dXQiLCBpbnQpLAorICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwgYnl0ZXMpLAorICAg
IDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKKyAgICA0OiAoImluaXRpYWxfbWF4X2RhdGEi
LCBpbnQpLAorICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCIsIGlu
dCksCisgICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIsIGludCks
CisgICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQpLAorICAgIDg6ICgi
aW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKKyAgICA5OiAoImluaXRpYWxfbWF4X3N0
cmVhbXNfdW5pIiwgaW50KSwKKyAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25lbnQiLCBpbnQpLAor
ICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAorICAgIDEyOiAoImRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbiIsIGJvb2wpLAorICAgIDEzOiAoInByZWZlcnJlZF9hZGRyZXNzIiwgUXVpY1By
ZWZlcnJlZEFkZHJlc3MpLAorICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0Iiwg
aW50KSwKKyAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGludCksCisgICAgMzEy
NzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKK30KKworCitkZWYgcHVsbF9xdWljX3By
ZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAg
ICBpcHY0X2FkZHJlc3MgPSBOb25lCisgICAgaXB2NF9ob3N0ID0gYnVmLnB1bGxfYnl0ZXMoNCkK
KyAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlwdjRfaG9zdCAhPSBi
eXRlcyg0KToKKyAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2NEFkZHJl
c3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKKworICAgIGlwdjZfYWRkcmVzcyA9IE5vbmUKKyAg
ICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKKyAgICBpcHY2X3BvcnQgPSBidWYucHVs
bF91aW50MTYoKQorICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6CisgICAgICAgIGlwdjZf
YWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9zdCkpLCBpcHY2X3Bv
cnQpCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICBj
b25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9sZW5ndGgpCisgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisKKyAgICByZXR1cm4g
UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgIGlwdjRfYWRkcmVzcz1pcHY0X2FkZHJlc3Ms
CisgICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCisgICAgICAgIGNvbm5lY3Rpb25f
aWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0YXRlbGVz
c19yZXNldF90b2tlbiwKKyAgICApCisKKworZGVmIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVz
cygKKyAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQcmVmZXJyZWRBZGRy
ZXNzCispIC0+IE5vbmU6CisgICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzIGlz
IG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3Mo
cHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0pCisgICAgZWxzZToK
KyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCisKKyAgICBpZiBwcmVmZXJyZWRfYWRk
cmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGlw
YWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3NbMF0pLnBh
Y2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNzLmlwdjZfYWRk
cmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygxOCkpCisK
KyAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkp
CisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkKKyAg
ICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4p
CisKKworZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZl
ciwgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzOgor
ICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKKworICAgIGlmIHByb3RvY29s
X3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgorICAgICAgICB3aXRoIHB1
bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6CisgICAgICAgICAgICBlbmQgPSBidWYudGVsbCgp
ICsgbGVuZ3RoCisgICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgorICAgICAgICAg
ICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgICAgICBwYXJh
bV9sZW4gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgICAgIHBhcmFtX3N0YXJ0ID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xl
bikpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBUcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg
c2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBidWYucHVsbF9ieXRl
cyhwYXJhbV9sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gcGFyYW1f
c3RhcnQgKyBwYXJhbV9sZW4KKyAgICBlbHNlOgorICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigp
OgorICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAg
ICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBwYXJhbV9zdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIHBhcmFt
X25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAgICAgICAgICAgaWYg
cGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAgICAgIGVsaWYgcGFy
YW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBh
cmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCisgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAgICAg
ICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNz
KGJ1ZikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0
cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGJ1Zi5wdWxs
X2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09IHBhcmFt
X3N0YXJ0ICsgcGFyYW1fbGVuCisKKyAgICByZXR1cm4gcGFyYW1zCisKKworZGVmIHB1c2hfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZlciwgcGFyYW1zOiBRdWljVHJh
bnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IE5vbmU6CisgICAg
aWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjc6CisgICAg
ICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgZm9yIHBhcmFtX2lkLCAo
cGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkKKyAgICAgICAgICAg
ICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMgbm90IEZh
bHNlOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFyYW1faWQpCisgICAg
ICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlm
IHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFyYW1fdmFsdWUpCisg
ICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkg
aW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmUg
YW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbV9idWYg
PSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9
PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3VpbnRfdmFyKHBhcmFt
X3ZhbHVlKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAg
ICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAg
ICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFyYW1fYnVmLCBwYXJh
bV92YWx1ZSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9pZCkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVsbCgpKQorICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQorCisKKyMgRlJBTUVTCisK
KworY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKKyAgICBQQURESU5HID0gMHgwMAorICAg
IFBJTkcgPSAweDAxCisgICAgQUNLID0gMHgwMgorICAgIEFDS19FQ04gPSAweDAzCisgICAgUkVT
RVRfU1RSRUFNID0gMHgwNAorICAgIFNUT1BfU0VORElORyA9IDB4MDUKKyAgICBDUllQVE8gPSAw
eDA2CisgICAgTkVXX1RPS0VOID0gMHgwNworICAgIFNUUkVBTV9CQVNFID0gMHgwOAorICAgIE1B
WF9EQVRBID0gMHgxMAorICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKKyAgICBNQVhfU1RSRUFN
U19CSURJID0gMHgxMgorICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKKyAgICBEQVRBX0JMT0NL
RUQgPSAweDE0CisgICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKKyAgICBTVFJFQU1TX0JM
T0NLRURfQklESSA9IDB4MTYKKyAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0gMHgxNworICAgIE5F
V19DT05ORUNUSU9OX0lEID0gMHgxOAorICAgIFJFVElSRV9DT05ORUNUSU9OX0lEID0gMHgxOQor
ICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQorICAgIFBBVEhfUkVTUE9OU0UgPSAweDFCCisgICAg
VFJBTlNQT1JUX0NMT1NFID0gMHgxQworICAgIEFQUExJQ0FUSU9OX0NMT1NFID0gMHgxRAorICAg
IEhBTkRTSEFLRV9ET05FID0gMHgxRQorICAgIERBVEFHUkFNID0gMHgzMAorICAgIERBVEFHUkFN
X1dJVEhfTEVOR1RIID0gMHgzMQorCisKK05PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTID0g
ZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAgIFF1
aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5HLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCitOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVT
ID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAg
IFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRf
Q0xPU0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgXQor
KQorCitQUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVp
Y0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JF
U1BPTlNFLAorICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCisgICAgXQorKQorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFF1aWNTdHJlYW1GcmFtZToKKyAgICBkYXRhOiBieXRlcyA9IGIiIgorICAgIGZpbjogYm9vbCA9
IEZhbHNlCisgICAgb2Zmc2V0OiBpbnQgPSAwCisKKworZGVmIHB1bGxfYWNrX2ZyYW1lKGJ1Zjog
QnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKKyAgICByYW5nZXNldCA9IFJhbmdlU2V0
KCkKKyAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3QgYWNrbm93bGVkZ2Vk
CisgICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNrX3JhbmdlX2NvdW50ID0g
YnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkg
ICMgZmlyc3QgYWNrIHJhbmdlCisgICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFja19jb3VudCwgZW5k
ICsgMSkKKyAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgZm9yIF8gaW4gcmFuZ2UoYWNrX3Jhbmdl
X2NvdW50KToKKyAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgKyAyCisgICAgICAg
IGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKGVu
ZCAtIGFja19jb3VudCwgZW5kICsgMSkKKyAgICAgICAgZW5kIC09IGFja19jb3VudAorICAgIHJl
dHVybiByYW5nZXNldCwgZGVsYXkKKworCitkZWYgcHVzaF9hY2tfZnJhbWUoYnVmOiBCdWZmZXIs
IHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgorICAgIHJhbmdlcyA9IGxl
bihyYW5nZXNldCkKKyAgICBpbmRleCA9IHJhbmdlcyAtIDEKKyAgICByID0gcmFuZ2VzZXRbaW5k
ZXhdCisgICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKKyAgICBidWYucHVzaF91aW50
X3ZhcihkZWxheSkKKyAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKKyAgICBidWYucHVzaF91
aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKKyAgICBzdGFydCA9IHIuc3RhcnQKKyAgICB3
aGlsZSBpbmRleCA+IDA6CisgICAgICAgIGluZGV4IC09IDEKKyAgICAgICAgciA9IHJhbmdlc2V0
W2luZGV4XQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIuc3RvcCAtIDEpCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAxKQorICAgICAgICBz
dGFydCA9IHIuc3RhcnQKKyAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODM3YzJjMzMwNDky
MDY0NDVmYzlmYjgxNDczYWNmY2JmNGI2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDM2NiBAQAor
ZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVtIGltcG9y
dCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgTGlzdCwgT3B0
aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uYnVmZmVyIGltcG9ydCBCdWZmZXIsIHNp
emVfdWludF92YXIKK2Zyb20gLi50bHMgaW1wb3J0IEVwb2NoCitmcm9tIC5jcnlwdG8gaW1wb3J0
IENyeXB0b1BhaXIKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRyYWNlCitmcm9tIC5w
YWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUywKKyAgICBO
T05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tFVF9OVU1CRVJfTUFYX1NJWkUsCisg
ICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfTUFTSywKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGlzX2xvbmdfaGVhZGVy
LAorKQorCitQQUNLRVRfTUFYX1NJWkUgPSAxMjgwCitQQUNLRVRfTEVOR1RIX1NFTkRfU0laRSA9
IDIKK1BBQ0tFVF9OVU1CRVJfU0VORF9TSVpFID0gMgorCisKK1F1aWNEZWxpdmVyeUhhbmRsZXIg
PSBDYWxsYWJsZVsuLi4sIE5vbmVdCisKKworY2xhc3MgUXVpY0RlbGl2ZXJ5U3RhdGUoRW51bSk6
CisgICAgQUNLRUQgPSAwCisgICAgTE9TVCA9IDEKKyAgICBFWFBJUkVEID0gMgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFF1aWNTZW50UGFja2V0OgorICAgIGVwb2NoOiBFcG9jaAorICAgIGluX2Zs
aWdodDogYm9vbAorICAgIGlzX2Fja19lbGljaXRpbmc6IGJvb2wKKyAgICBpc19jcnlwdG9fcGFj
a2V0OiBib29sCisgICAgcGFja2V0X251bWJlcjogaW50CisgICAgcGFja2V0X3R5cGU6IGludAor
ICAgIHNlbnRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgIHNlbnRfYnl0ZXM6IGlu
dCA9IDAKKworICAgIGRlbGl2ZXJ5X2hhbmRsZXJzOiBMaXN0W1R1cGxlW1F1aWNEZWxpdmVyeUhh
bmRsZXIsIEFueV1dID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeT1saXN0CisgICAg
KQorICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogTGlzdFtEaWN0XSA9IGZpZWxkKGRlZmF1bHRfZmFj
dG9yeT1saXN0KQorCisKK2NsYXNzIFF1aWNQYWNrZXRCdWlsZGVyU3RvcChFeGNlcHRpb24pOgor
ICAgIHBhc3MKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlcjoKKyAgICAiIiIKKyAgICBIZWxw
ZXIgZm9yIGJ1aWxkaW5nIFFVSUMgcGFja2V0cy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdF9jaWQ6IGJ5dGVzLAor
ICAgICAgICBwZWVyX2NpZDogYnl0ZXMsCisgICAgICAgIHZlcnNpb246IGludCwKKyAgICAgICAg
aXNfY2xpZW50OiBib29sLAorICAgICAgICBwYWNrZXRfbnVtYmVyOiBpbnQgPSAwLAorICAgICAg
ICBwZWVyX3Rva2VuOiBieXRlcyA9IGIiIiwKKyAgICAgICAgcXVpY19sb2dnZXI6IE9wdGlvbmFs
W1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICAgICBzcGluX2JpdDogYm9vbCA9IEZhbHNl
LAorICAgICk6CisgICAgICAgIHNlbGYubWF4X2ZsaWdodF9ieXRlczogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdG90YWxfYnl0ZXM6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0W0RpY3RdXSA9
IE5vbmUKKworICAgICAgICBzZWxmLl9ob3N0X2NpZCA9IGhvc3RfY2lkCisgICAgICAgIHNlbGYu
X2lzX2NsaWVudCA9IGlzX2NsaWVudAorICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IHBlZXJfY2lk
CisgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBwZWVyX3Rva2VuCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBzcGluX2Jp
dAorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorCisgICAgICAgICMgYXNzZW1ibGVk
IGRhdGFncmFtcyBhbmQgcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXM6IExpc3RbYnl0
ZXNdID0gW10KKyAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzID0gMAorICAgICAg
ICBzZWxmLl9kYXRhZ3JhbV9pbml0ID0gVHJ1ZQorICAgICAgICBzZWxmLl9wYWNrZXRzOiBMaXN0
W1F1aWNTZW50UGFja2V0XSA9IFtdCisgICAgICAgIHNlbGYuX2ZsaWdodF9ieXRlcyA9IDAKKyAg
ICAgICAgc2VsZi5fdG90YWxfYnl0ZXMgPSAwCisKKyAgICAgICAgIyBjdXJyZW50IHBhY2tldAor
ICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fcGFja2V0OiBPcHRp
b25hbFtRdWljU2VudFBhY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG86
IE9wdGlvbmFsW0NyeXB0b1BhaXJdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRfbG9uZ19o
ZWFkZXIgPSBGYWxzZQorICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0gcGFja2V0X251bWJl
cgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX3BhY2tldF90
eXBlID0gMAorCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlcihQQUNLRVRfTUFYX1NJWkUp
CisgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IFBBQ0tFVF9NQVhfU0laRQorICAgICAg
ICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBwYWNrZXRfaXNfZW1wdHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisg
ICAgICAgIFJldHVybnMgYFRydWVgIGlmIHRoZSBjdXJyZW50IHBhY2tldCBpcyBlbXB0eS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9wYWNrZXQgaXMgbm90IE5vbmUKKyAgICAg
ICAgcGFja2V0X3NpemUgPSBzZWxmLl9idWZmZXIudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0
CisgICAgICAgIHJldHVybiBwYWNrZXRfc2l6ZSA8PSBzZWxmLl9oZWFkZXJfc2l6ZQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9udW1iZXIoc2VsZikgLT4gaW50OgorICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGFja2V0IG51bWJlciBmb3IgdGhlIG5leHQgcGFja2V0
LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tldF9udW1iZXIKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfYnVmZmVyX3NwYWNlKHNlbGYpIC0+IGludDoK
KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YgYnl0
ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgcGFja2V0LgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBh
Y2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVsbCgpCisgICAgICAgICAgICAtIHNl
bGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICApCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgcmVtYWluaW5nX2ZsaWdodF9zcGFjZShzZWxmKSAtPiBpbnQ6CisgICAgICAg
ICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIGJ5dGVzIHdoaWNo
IGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIi
CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkKKyAg
ICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAgLSBzZWxmLl9wYWNr
ZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgZGVmIGZsdXNoKHNlbGYp
IC0+IFR1cGxlW0xpc3RbYnl0ZXNdLCBMaXN0W1F1aWNTZW50UGFja2V0XV06CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIHRoZSBhc3NlbWJsZWQgZGF0YWdyYW1zLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
ZW5kX3BhY2tldCgpCisgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorCisg
ICAgICAgIGRhdGFncmFtcyA9IHNlbGYuX2RhdGFncmFtcworICAgICAgICBwYWNrZXRzID0gc2Vs
Zi5fcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXMgPSBbXQorICAgICAgICBzZWxmLl9w
YWNrZXRzID0gW10KKyAgICAgICAgcmV0dXJuIGRhdGFncmFtcywgcGFja2V0cworCisgICAgZGVm
IHN0YXJ0X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBmcmFtZV90eXBlOiBpbnQsCisg
ICAgICAgIGNhcGFjaXR5OiBpbnQgPSAxLAorICAgICAgICBoYW5kbGVyOiBPcHRpb25hbFtRdWlj
RGVsaXZlcnlIYW5kbGVyXSA9IE5vbmUsCisgICAgICAgIGhhbmRsZXJfYXJnczogU2VxdWVuY2Vb
QW55XSA9IFtdLAorICAgICkgLT4gQnVmZmVyOgorICAgICAgICAiIiIKKyAgICAgICAgU3RhcnRz
IGEgbmV3IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfYnVm
ZmVyX3NwYWNlIDwgY2FwYWNpdHkgb3IgKAorICAgICAgICAgICAgZnJhbWVfdHlwZSBub3QgaW4g
Tk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUworICAgICAgICAgICAgYW5kIHNlbGYucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSA8IGNhcGFjaXR5CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBR
dWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAgICBzZWxmLl9idWZmZXIucHVzaF91aW50X3Zh
cihmcmFtZV90eXBlKQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJ
VElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pc19hY2tfZWxpY2l0
aW5nID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fSU5fRkxJR0hUX0ZS
QU1FX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkNSWVBUTzoKKyAgICAgICAgICAg
IHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFja2V0ID0gVHJ1ZQorICAgICAgICBpZiBoYW5kbGVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmRlbGl2ZXJ5X2hhbmRsZXJz
LmFwcGVuZCgoaGFuZGxlciwgaGFuZGxlcl9hcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
ZmZlcgorCisgICAgZGVmIHN0YXJ0X3BhY2tldChzZWxmLCBwYWNrZXRfdHlwZTogaW50LCBjcnlw
dG86IENyeXB0b1BhaXIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMgYSBu
ZXcgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5fYnVmZmVyCisKKyAg
ICAgICAgIyBmaW5pc2ggcHJldmlvdXMgZGF0YWdyYW0KKyAgICAgICAgaWYgc2VsZi5fcGFja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZW5kX3BhY2tldCgpCisKKyAgICAgICAg
IyBpZiB0aGVyZSBpcyB0b28gbGl0dGxlIHNwYWNlIHJlbWFpbmluZywgc3RhcnQgYSBuZXcgZGF0
YWdyYW0KKyAgICAgICAgIyBGSVhNRTogdGhlIGxpbWl0IGlzIGFyYml0cmFyeSEKKyAgICAgICAg
cGFja2V0X3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBpZiBzZWxmLl9idWZmZXJfY2FwYWNp
dHkgLSBwYWNrZXRfc3RhcnQgPCAxMjg6CisgICAgICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50
X2RhdGFncmFtKCkKKyAgICAgICAgICAgIHBhY2tldF9zdGFydCA9IDAKKworICAgICAgICAjIGlu
aXRpYWxpemUgZGF0YWdyYW0gaWYgbmVlZGVkCisgICAgICAgIGlmIHNlbGYuX2RhdGFncmFtX2lu
aXQ6CisgICAgICAgICAgICBpZiBzZWxmLm1heF90b3RhbF9ieXRlcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmdfdG90YWxfYnl0ZXMgPSBzZWxmLm1heF90b3RhbF9ieXRl
cyAtIHNlbGYuX3RvdGFsX2J5dGVzCisgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nX3RvdGFs
X2J5dGVzIDwgc2VsZi5fYnVmZmVyX2NhcGFjaXR5OgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9idWZmZXJfY2FwYWNpdHkgPSByZW1haW5pbmdfdG90YWxfYnl0ZXMKKworICAgICAgICAgICAg
c2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gc2VsZi5fYnVmZmVyX2NhcGFjaXR5CisgICAgICAgICAg
ICBpZiBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nX2ZsaWdodF9ieXRlcyA9IHNlbGYubWF4X2ZsaWdodF9ieXRlcyAtIHNlbGYuX2Zs
aWdodF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPCBz
ZWxmLl9mbGlnaHRfY2FwYWNpdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsaWdodF9j
YXBhY2l0eSA9IHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2luaXQgPSBG
YWxzZQorCisgICAgICAgICMgY2FsY3VsYXRlIGhlYWRlciBzaXplCisgICAgICAgIHBhY2tldF9s
b25nX2hlYWRlciA9IGlzX2xvbmdfaGVhZGVyKHBhY2tldF90eXBlKQorICAgICAgICBpZiBwYWNr
ZXRfbG9uZ19oZWFkZXI6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDExICsgbGVuKHNlbGYu
X3BlZXJfY2lkKSArIGxlbihzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAgIGlmIChwYWNrZXRf
dHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAg
ICAgICAgICAgdG9rZW5fbGVuZ3RoID0gbGVuKHNlbGYuX3BlZXJfdG9rZW4pCisgICAgICAgICAg
ICAgICAgaGVhZGVyX3NpemUgKz0gc2l6ZV91aW50X3Zhcih0b2tlbl9sZW5ndGgpICsgdG9rZW5f
bGVuZ3RoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDMgKyBsZW4o
c2VsZi5fcGVlcl9jaWQpCisKKyAgICAgICAgIyBjaGVjayB3ZSBoYXZlIGVub3VnaCBzcGFjZQor
ICAgICAgICBpZiBwYWNrZXRfc3RhcnQgKyBoZWFkZXJfc2l6ZSA+PSBzZWxmLl9idWZmZXJfY2Fw
YWNpdHk6CisgICAgICAgICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAg
ICAjIGRldGVybWluZSBhY2sgZXBvY2gKKyAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VU
X1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSU5JVElBTAorICAgICAg
ICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRToKKyAgICAgICAgICAg
IGVwb2NoID0gRXBvY2guSEFORFNIQUtFCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlcG9j
aCA9IEVwb2NoLk9ORV9SVFQKKworICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IGhlYWRlcl9z
aXplCisgICAgICAgIHNlbGYuX3BhY2tldCA9IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICBpbl9mbGlnaHQ9RmFsc2UsCisgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxz
ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251bWJlciwKKyAgICAg
ICAgICAgIHBhY2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICApCisgICAgICAgIHNlbGYu
X3BhY2tldF9jcnlwdG8gPSBjcnlwdG8KKyAgICAgICAgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVy
ID0gcGFja2V0X2xvbmdfaGVhZGVyCisgICAgICAgIHNlbGYuX3BhY2tldF9zdGFydCA9IHBhY2tl
dF9zdGFydAorICAgICAgICBzZWxmLl9wYWNrZXRfdHlwZSA9IHBhY2tldF90eXBlCisgICAgICAg
IHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1l
cworCisgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHNlbGYuX2hlYWRlcl9z
aXplKQorCisgICAgZGVmIF9lbmRfcGFja2V0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgor
ICAgICAgICBFbmRzIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1
ZiA9IHNlbGYuX2J1ZmZlcgorICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBzZWxm
Ll9wYWNrZXRfc3RhcnQKKyAgICAgICAgaWYgcGFja2V0X3NpemUgPiBzZWxmLl9oZWFkZXJfc2l6
ZToKKyAgICAgICAgICAgICMgcGFkIGluaXRpYWwgZGF0YWdyYW0KKyAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBhbmQgc2Vs
Zi5fcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldAorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2U6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKHNlbGYucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplID0gYnVmLnRlbGwoKSAtIHNlbGYuX3BhY2tl
dF9zdGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0ID0gVHJ1
ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHdyaXRlIGhlYWRlcgor
ICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAg
IGxlbmd0aCA9ICgKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUKKyAgICAgICAgICAg
ICAgICAgICAgLSBzZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAgICAgICArIFBBQ0tF
VF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2VsZi5fcGFja2V0X2Ny
eXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg
YnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQ4KHNlbGYuX3BhY2tldF90eXBlIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDMyKHNlbGYuX3ZlcnNpb24pCisgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX3BlZXJfY2lkKSkKKyAgICAgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF91aW50OChsZW4oc2VsZi5faG9zdF9jaWQpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKHNlbGYuX2hvc3RfY2lkKQorICAgICAgICAgICAgICAgIGlmIChzZWxmLl9wYWNrZXRfdHlw
ZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbihzZWxmLl9wZWVyX3Rva2VuKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl90b2tlbikKKyAgICAgICAg
ICAgICAgICBidWYucHVzaF91aW50MTYobGVuZ3RoIHwgMHg0MDAwKQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNrZXRfbnVtYmVyICYgMHhGRkZGKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3NwaW5fYml0IDw8IDUp
CisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3BhY2tldF9jcnlwdG8ua2V5X3BoYXNlIDw8
IDIpCisgICAgICAgICAgICAgICAgICAgIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5f
cGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNlbGYuX3BhY2tldF9u
dW1iZXIgJiAweEZGRkYpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgd2UgbmVl
ZCBwYWRkaW5nCisgICAgICAgICAgICAgICAgcGFkZGluZ19zaXplID0gKAorICAgICAgICAgICAg
ICAgICAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpFCisgICAgICAgICAgICAgICAgICAgIC0gUEFD
S0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgKyBzZWxmLl9oZWFkZXJf
c2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHBhY2tldF9zaXplCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIHBhZGRpbmdfc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHBhY2tldF9zaXplKQorICAgICAgICAg
ICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhwYWRkaW5nX3NpemUpKQorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfc2l6ZSArPSBwYWRkaW5nX3NpemUKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBlbmNyeXB0IGluIHBsYWNlCisgICAgICAgICAgICBwbGFpbiA9IGJ1
Zi5kYXRhX3NsaWNlKHNlbGYuX3BhY2tldF9zdGFydCwgc2VsZi5fcGFja2V0X3N0YXJ0ICsgcGFj
a2V0X3NpemUpCisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcygKKyAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXRfY3J5
cHRvLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgICAgICAgICBwbGFpblswIDogc2VsZi5f
aGVhZGVyX3NpemVdLAorICAgICAgICAgICAgICAgICAgICBwbGFpbltzZWxmLl9oZWFkZXJfc2l6
ZSA6IHBhY2tldF9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJl
ciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9w
YWNrZXQuc2VudF9ieXRlcyA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAg
ICAgICAgIHNlbGYuX3BhY2tldHMuYXBwZW5kKHNlbGYuX3BhY2tldCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX3BhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1f
ZmxpZ2h0X2J5dGVzICs9IHNlbGYuX3BhY2tldC5zZW50X2J5dGVzCisKKyAgICAgICAgICAgICMg
c2hvcnQgaGVhZGVyIHBhY2tldHMgY2Fubm90IGJlIGNvYWxsZXNjZWQsIHdlIG5lZWQgYSBuZXcg
ZGF0YWdyYW0KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYWNrZXRfbG9uZ19oZWFkZXI6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3VycmVudF9kYXRhZ3JhbSgpCisKKyAgICAgICAg
ICAgIHNlbGYuX3BhY2tldF9udW1iZXIgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
IyAiY2FuY2VsIiB0aGUgcGFja2V0CisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRf
c3RhcnQpCisKKyAgICAgICAgc2VsZi5fcGFja2V0ID0gTm9uZQorICAgICAgICBzZWxmLnF1aWNf
bG9nZ2VyX2ZyYW1lcyA9IE5vbmUKKworICAgIGRlZiBfZmx1c2hfY3VycmVudF9kYXRhZ3JhbShz
ZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhZ3JhbV9ieXRlcyA9IHNlbGYuX2J1ZmZlci50ZWxs
KCkKKyAgICAgICAgaWYgZGF0YWdyYW1fYnl0ZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXMuYXBwZW5kKHNlbGYuX2J1ZmZlci5kYXRhKQorICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2J5
dGVzICs9IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcworICAgICAgICAgICAgc2VsZi5fdG90
YWxfYnl0ZXMgKz0gZGF0YWdyYW1fYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2lu
aXQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9idWZmZXIuc2VlaygwKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjA4NmM5Yzc0Zjc3NTYw
MzIwODY5MDA3NmJlZTk2MzgxNDYxMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKQEAgLTAsMCArMSw5OCBAQAorZnJvbSBjb2xs
ZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBJdGVy
YWJsZSwgTGlzdCwgT3B0aW9uYWwKKworCitjbGFzcyBSYW5nZVNldChTZXF1ZW5jZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhbmdlczogSXRlcmFibGVbcmFuZ2VdID0gW10pOgorICAgICAg
ICBzZWxmLl9fcmFuZ2VzOiBMaXN0W3JhbmdlXSA9IFtdCisgICAgICAgIGZvciByIGluIHJhbmdl
czoKKyAgICAgICAgICAgIGFzc2VydCByLnN0ZXAgPT0gMQorICAgICAgICAgICAgc2VsZi5hZGQo
ci5zdGFydCwgci5zdG9wKQorCisgICAgZGVmIGFkZChzZWxmLCBzdGFydDogaW50LCBzdG9wOiBP
cHRpb25hbFtpbnRdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc3RvcCBpcyBOb25lOgor
ICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMQorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0
CisKKyAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKHNlbGYuX19yYW5nZXMpOgorICAgICAg
ICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYmVmb3JlIGN1cnJlbnQgaXRlbSwg
aW5zZXJ0IGhlcmUKKyAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0YXJ0OgorICAgICAgICAgICAg
ICAgIHNlbGYuX19yYW5nZXMuaW5zZXJ0KGksIHJhbmdlKHN0YXJ0LCBzdG9wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJl
bHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAgICAgICAgICAgIGlmIHN0YXJ0
ID4gci5zdG9wOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGhl
IGFkZGVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbSwgbWVyZ2UgaXQKKyAgICAgICAg
ICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCByLnN0YXJ0KQorICAgICAgICAgICAgc3RvcCA9IG1heChz
dG9wLCByLnN0b3ApCisgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5nZXMpIC0g
MSBhbmQgc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RhcnQgPD0gc3RvcDoKKyAgICAgICAgICAgICAg
ICBzdG9wID0gbWF4KHNlbGYuX19yYW5nZXNbaSArIDFdLnN0b3AsIHN0b3ApCisgICAgICAgICAg
ICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSArIDEpCisgICAgICAgICAgICBzZWxmLl9fcmFuZ2Vz
W2ldID0gcmFuZ2Uoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAj
IHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBhbGwgZXhpc3RpbmcgaXRlbXMsIGFw
cGVuZCBpdAorICAgICAgICBzZWxmLl9fcmFuZ2VzLmFwcGVuZChyYW5nZShzdGFydCwgc3RvcCkp
CisKKyAgICBkZWYgYm91bmRzKHNlbGYpIC0+IHJhbmdlOgorICAgICAgICByZXR1cm4gcmFuZ2Uo
c2VsZi5fX3Jhbmdlc1swXS5zdGFydCwgc2VsZi5fX3Jhbmdlc1stMV0uc3RvcCkKKworICAgIGRl
ZiBzaGlmdChzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMucG9w
KDApCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgc3RhcnQ6IGludCwgc3RvcDogaW50KSAtPiBO
b25lOgorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0CisKKyAgICAgICAgaSA9IDAKKyAgICAg
ICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2VzKToKKyAgICAgICAgICAgIHIgPSBzZWxmLl9f
cmFuZ2VzW2ldCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgaXMgZW50aXJlbHkg
YmVmb3JlIGN1cnJlbnQgaXRlbSwgc3RvcCBoZXJlCisgICAgICAgICAgICBpZiBzdG9wIDw9IHIu
c3RhcnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92
ZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAg
ICAgICAgICAgIGlmIHN0YXJ0ID49IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBpICs9IDEKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdl
IGNvbXBsZXRlbHkgY292ZXJzIHRoZSBjdXJyZW50IGl0ZW0sIHJlbW92ZSBpdAorICAgICAgICAg
ICAgaWYgc3RhcnQgPD0gci5zdGFydCBhbmQgc3RvcCA+PSByLnN0b3A6CisgICAgICAgICAgICAg
ICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbQorICAg
ICAgICAgICAgaWYgc3RhcnQgPiByLnN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX19yYW5n
ZXNbaV0gPSByYW5nZShyLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgICAgICAgICBpZiBzdG9wIDwg
ci5zdG9wOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLmluc2VydChpICsgMSwg
cmFuZ2Uoc3RvcCwgci5zdG9wKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHN0b3AsIHIuc3RvcCkKKworICAgICAgICAgICAgaSAr
PSAxCisKKyAgICBkZWYgX19ib29sX18oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWw6IEFueSkg
LT4gYm9vbDoKKyAgICAgICAgZm9yIHIgaW4gc2VsZi5fX3JhbmdlczoKKyAgICAgICAgICAgIGlm
IHZhbCBpbiByOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUmFuZ2VTZXQpOgorICAgICAgICAgICAgcmV0
dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMgPT0gb3Ro
ZXIuX19yYW5nZXMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IEFueSkgLT4gcmFu
Z2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzW2tleV0KKworICAgIGRlZiBfX2xlbl9f
KHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9fcmFuZ2VzKQorCisgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJSYW5nZVNldCh7fSki
LmZvcm1hdChyZXByKHNlbGYuX19yYW5nZXMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJlYjFlY2Y1NjYxZjcxYzkzZTc3YmY3ZmE2MmE3
MTYyZjM4NzBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvcmVjb3ZlcnkucHkKQEAgLTAsMCArMSw0OTcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAorCitmcm9t
IC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0X2J1aWxkZXIgaW1w
b3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAorZnJvbSAucmFuZ2VzZXQgaW1w
b3J0IFJhbmdlU2V0CisKKyMgbG9zcyBkZXRlY3Rpb24KK0tfUEFDS0VUX1RIUkVTSE9MRCA9IDMK
K0tfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcworS19HUkFOVUxBUklUWSA9IDAuMDAxICAj
IHNlY29uZHMKK0tfVElNRV9USFJFU0hPTEQgPSA5IC8gOAorS19NSUNST19TRUNPTkQgPSAwLjAw
MDAwMQorS19TRUNPTkQgPSAxLjAKKworIyBjb25nZXN0aW9uIGNvbnRyb2wKK0tfTUFYX0RBVEFH
UkFNX1NJWkUgPSAxMjgwCitLX0lOSVRJQUxfV0lORE9XID0gMTAgKiBLX01BWF9EQVRBR1JBTV9T
SVpFCitLX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUKK0tfTE9TU19S
RURVQ1RJT05fRkFDVE9SID0gMC41CisKKworY2xhc3MgUXVpY1BhY2tldFNwYWNlOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFja19hdDogT3B0aW9uYWxb
ZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLmFja19xdWV1ZSA9IFJhbmdlU2V0KCkKKyAgICAg
ICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmV4cGVjdGVkX3BhY2tldF9u
dW1iZXIgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSAtMQorICAg
ICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQor
CisgICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCisgICAgICAgIHNlbGYuYWNrX2VsaWNp
dGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSAw
CisgICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQYWNrZXRdID0ge30KKworCitj
bGFzcyBRdWljUGFja2V0UGFjZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5idWNrZXRf
dGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5ldmFsdWF0aW9uX3RpbWU6IGZsb2F0ID0g
MC4wCisgICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKwor
ICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0KSAtPiBmbG9hdDoKKyAgICAg
ICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBk
YXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8PSAw
OgorICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBhY2tldF90aW1lCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX2FmdGVyX3NlbmQoc2VsZiwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2Vs
Zi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6CisgICAgICAgICAgICAgICAgc2VsZi5i
dWNrZXRfdGltZSA9IDAuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKKworICAgIGRlZiB1cGRhdGVfYnVja2V0
KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdyA+IHNlbGYuZXZhbHVh
dGlvbl90aW1lOgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IG1pbigKKyAgICAgICAg
ICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYuZXZhbHVhdGlvbl90aW1lKSwg
c2VsZi5idWNrZXRfbWF4CisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmV2YWx1YXRp
b25fdGltZSA9IG5vdworCisgICAgZGVmIHVwZGF0ZV9yYXRlKHNlbGYsIGNvbmdlc3Rpb25fd2lu
ZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHBhY2luZ19y
YXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRfcnR0LCBLX01JQ1JPX1NFQ09O
RCkKKyAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKKyAgICAgICAgICAgIEtfTUlDUk9f
U0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2luZ19yYXRlLCBLX1NFQ09ORCkK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYnVja2V0X21heCA9ICgKKyAgICAgICAgICAgIG1h
eCgKKyAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1fU0laRSwKKyAgICAgICAgICAg
ICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBLX01BWF9EQVRBR1JBTV9TSVpF
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIC8gcGFjaW5nX3JhdGUKKyAgICAgICAgKQor
ICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNrZXRfbWF4OgorICAgICAgICAg
ICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAorCisKK2NsYXNzIFF1aWNDb25n
ZXN0aW9uQ29udHJvbDoKKyAgICAiIiIKKyAgICBOZXcgUmVubyBjb25nZXN0aW9uIGNvbnRyb2wu
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgPSBL
X0lOSVRJQUxfV0lORE9XCisgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRf
dGltZSA9IDAuMAorICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoID0gMAorICAgICAgICBz
ZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKyAgICAgICAgc2VsZi5zc3RocmVz
aDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBvbl9wYWNrZXRfYWNrZWQoc2VsZiwg
cGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ieXRlc19pbl9m
bGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgICAgICAjIGRvbid0IGluY3JlYXNlIHdp
bmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5CisgICAgICAgIGlmIHBhY2tldC5zZW50X3RpbWUg
PD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lOgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIG9yIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgorICAgICAgICAgICAgIyBzbG93IHN0YXJ0CisgICAg
ICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZvaWRhbmNlCisgICAgICAgICAg
ICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAgICAgICAg
ICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2VsZi5jb25nZXN0aW9uX3dpbmRv
dworICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlv
bl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKyAgICAgICAgICAgICAg
ICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19NQVhfREFUQUdSQU1fU0laRQor
CisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDogUXVpY1NlbnRQYWNrZXQpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X2J5dGVz
CisKKyAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1
aWNTZW50UGFja2V0XSkgLT4gTm9uZToKKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgor
ICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKwor
ICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQ
YWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBsb3N0X2xhcmdlc3RfdGltZSA9
IDAuMAorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAgICAgICBzZWxmLmJ5
dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAgICAgICAgbG9zdF9sYXJn
ZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgIyBzdGFydCBhIG5ldyBjb25n
ZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0aGUKKyAgICAgICAgIyBzdGFy
dCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBwZXJpb2QuCisgICAgICAgIGlm
IGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1l
OgorICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lID0gbm93
CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0gbWF4KAorICAgICAgICAgICAg
ICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NTX1JFRFVDVElPTl9GQUNUT1Ip
LCBLX01JTklNVU1fV0lORE9XCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnNzdGhy
ZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisgICAgICAgICMgVE9ETyA6IGNvbGxhcHNl
IGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2VzdGlvbgorCisgICAgZGVmIG9u
X3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9hdCwgbm93OiBmbG9hdCkgLT4g
Tm9uZToKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3VsZCBleGl0IHNsb3cgc3RhcnQK
KyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBzZWxmLl9ydHRfbW9uaXRvci5p
c19ydHRfaW5jcmVhc2luZygKKyAgICAgICAgICAgIGxhdGVzdF9ydHQsIG5vdworICAgICAgICAp
OgorICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKwor
CitjbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6CisgICAgIiIiCisgICAgUGFja2V0IGxvc3MgYW5k
IGNvbmdlc3Rpb24gY29udHJvbGxlci4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dDogYm9vbCwKKyAgICAg
ICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICAgICBxdWljX2xvZ2dlcjog
T3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGllbnRfd2l0aG91dF8xcnR0Cisg
ICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1CisgICAgICAgIHNlbGYuc3BhY2VzOiBM
aXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQorCisgICAgICAgICMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc2VuZF9wcm9i
ZSA9IHNlbmRfcHJvYmUKKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uCisgICAgICAgIHNlbGYu
X3B0b19jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAorICAgICAgICBzZWxmLl9ydHRfbWluID0gbWF0
aC5pbmYKKyAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4wCisgICAgICAgIHNlbGYuX3J0
dF92YXJpYW5jZSA9IDAuMAorICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tfZWxp
Y2l0aW5nX3BhY2tldCA9IDAuMAorCisgICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCisgICAg
ICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkKKyAgICAgICAgc2VsZi5fcGFj
ZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJ5dGVzX2lu
X2ZsaWdodChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5ieXRlc19pbl9m
bGlnaHQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25nZXN0aW9uX3dpbmRvdyhzZWxmKSAt
PiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdworCisgICAg
ZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSkgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCisKKyAgICAgICAgc2VsZi5fY2Mu
b25fcGFja2V0c19leHBpcmVkKAorICAgICAgICAgICAgZmlsdGVyKGxhbWJkYSB4OiB4LmluX2Zs
aWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQorICAgICAgICApCisgICAgICAgIHNw
YWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCisKKyAgICAgICAgc3BhY2UuYWNrX2F0ID0gTm9uZQor
ICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAgICAgICAgc3BhY2Uu
bG9zc190aW1lID0gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisKKyAgICBkZWYg
Z2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9uYWxbUXVpY1BhY2tldFNwYWNl
XToKKyAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKKyAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYu
c3BhY2VzOgorICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIG5vdCBOb25lIGFuZCAo
CisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA8
IGxvc3Nfc3BhY2UubG9zc190aW1lCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGxv
c3Nfc3BhY2UgPSBzcGFjZQorICAgICAgICByZXR1cm4gbG9zc19zcGFjZQorCisgICAgZGVmIGdl
dF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0OgorICAgICAgICAjIGxvc3MgdGlt
ZXIKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2UoKQor
ICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxv
c3Nfc3BhY2UubG9zc190aW1lCisKKyAgICAgICAgIyBwYWNrZXQgdGltZXIKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0CisgICAgICAgICAgICBv
ciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9yIHNwYWNlIGluIHNlbGYuc3Bh
Y2VzKSA+IDAKKyAgICAgICAgKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBLX0lOSVRJQUxfUlRUICogKDIg
Kiogc2VsZi5fcHRvX2NvdW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0
aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIgKiogc2VsZi5fcHRvX2NvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRp
bmdfcGFja2V0ICsgdGltZW91dAorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0
X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICBzZWxmLl9ydHRfc21vb3RoZWQKKyAgICAgICAgICAgICsgbWF4KDQgKiBzZWxmLl9ydHRf
dmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCisgICAgICAgICAgICArIHNlbGYubWF4X2Fja19kZWxh
eQorICAgICAgICApCisKKyAgICBkZWYgb25fYWNrX3JlY2VpdmVkKAorICAgICAgICBzZWxmLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBhY2tfcmFuZ2VzZXQ6IFJh
bmdlU2V0LAorICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAorICAgICAgICBub3c6IGZsb2F0LAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSBtZXRyaWNzIGFzIHRo
ZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGxhcmdlc3RfYWNrZWQgPSBhY2tfcmFu
Z2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKKyAgICAgICAgbGFyZ2VzdF9uZXdseV9hY2tlZCA9IE5v
bmUKKyAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCisKKyAgICAgICAgaWYgbGFyZ2Vz
dF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0OgorICAgICAgICAgICAgc3BhY2Uu
bGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCisKKyAgICAgICAgZm9yIHBhY2tl
dF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5rZXlzKCkpOgorICAgICAgICAg
ICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNrX3Jhbmdlc2V0OgorICAgICAg
ICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNvdW50ZXJzCisgICAgICAgICAg
ICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChwYWNrZXRfbnVtYmVyKQorICAg
ICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAgICAg
ICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzcGFjZS5h
Y2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFja2V0Lmlu
X2ZsaWdodDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0X2Fja2VkKHBh
Y2tldCkKKyAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0gcGFja2V0X251bWJl
cgorICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gcGFja2V0LnNlbnRfdGltZQor
CisgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcworICAgICAgICAgICAgICAgIGZv
ciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5kbGVyczoKKyAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgKmFyZ3MpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXdseSBhY2tlZCBwYWNrZXRzCisg
ICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2VzdF9uZXdseV9hY2tlZCBhbmQg
aXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIGxhdGVzdF9ydHQgPSBub3cgLSBsYXJnZXN0
X3NlbnRfdGltZQorICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUKKworICAgICAgICAgICAgIyBs
aW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQorICAgICAgICAgICAgYWNrX2RlbGF5ID0g
bWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQorCisgICAgICAgICAgICAjIHVwZGF0
ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMKKyAgICAgICAgICAgIHNlbGYu
X3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCisgICAgICAgICAgICBpZiBzZWxm
Ll9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRf
bWluID0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgaWYgc2VsZi5fcnR0X2xhdGVzdCA+
IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X2xh
dGVzdCAtPSBhY2tfZGVsYXkKKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX3J0dF9pbml0aWFs
aXplZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0X3J0dCAvIDIKKyAgICAgICAg
ICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0CisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDMgLyA0ICogc2VsZi5fcnR0
X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9t
aW4gLSBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKKyAgICAgICAgICAgICAgICAgICAgNyAvIDggKiBzZWxm
Ll9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRlc3QKKyAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJvbGxlcgorICAgICAg
ICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVzdF9ydHQsIG5vdz1ub3cpCisg
ICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25n
ZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAg
ICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UKKworICAgICAgICBzZWxmLl9k
ZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQobG9n
X3J0dD1sb2dfcnR0KQorCisgICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKKworICAgIGRlZiBv
bl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAg
ICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNlKCkKKyAgICAgICAg
aWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RldGVjdF9sb3Nz
KGxvc3Nfc3BhY2UsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9w
dG9fY291bnQgKz0gMQorCisgICAgICAgICAgICAjIHJlc2NoZWR1bGUgc29tZSBkYXRhCisgICAg
ICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAgICAgICAgc2VsZi5f
b25fcGFja2V0c19sb3N0KAorICAgICAgICAgICAgICAgICAgICB0dXBsZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEg
aTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tldHMudmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAgICAgICAgICAgIG5vdz1ub3csCisgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLl9zZW5kX3Byb2JlKCkKKworICAgIGRl
ZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0LCBzcGFjZTogUXVp
Y1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBzcGFjZS5zZW50X3BhY2tldHNbcGFja2V0
LnBhY2tldF9udW1iZXJdID0gcGFja2V0CisKKyAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGlj
aXRpbmc6CisgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCArPSAxCisg
ICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNr
X2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tf
ZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKKworICAgICAgICAgICAgIyBhZGQg
cGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAorICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0
X3NlbnQocGFja2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAg
IGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHdoZXRoZXIgYW55IHBhY2tl
dHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBsb3NzX2Rl
bGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKKyAgICAgICAgICAgIG1heChzZWxmLl9ydHRfbGF0
ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCisgICAgICAgICAgICBpZiBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQKKyAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAorICAgICAgICApCisgICAgICAg
IHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldCAtIEtfUEFDS0VU
X1RIUkVTSE9MRAorICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5vdyAtIGxvc3NfZGVsYXkKKwor
ICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQorICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBOb25l
CisgICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4gc3BhY2Uuc2VudF9wYWNrZXRz
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9h
Y2tlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcGFj
a2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tldC5zZW50X3RpbWUgPD0gdGlt
ZV90aHJlc2hvbGQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzLmFwcGVuZChwYWNrZXQp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF9sb3NzX3RpbWUgPSBw
YWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQorICAgICAgICAgICAgICAgIGlmIHNwYWNlLmxv
c3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBhY2tldF9sb3NzX3RpbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBhY2tldF9sb3NzX3RpbWUKKwor
ICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNrZXRzLCBzcGFjZT1zcGFjZSwg
bm93PW5vdykKKworICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRlZChzZWxmLCBsb2dfcnR0PUZh
bHNlKSAtPiBOb25lOgorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImJ5dGVzX2luX2Zs
aWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKKyAgICAgICAgICAgICJjd25kIjogc2Vs
Zi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgIH0KKyAgICAgICAgaWYgc2VsZi5fY2Mu
c3N0aHJlc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyJzc3RocmVzaCJdID0gc2Vs
Zi5fY2Muc3N0aHJlc2gKKworICAgICAgICBpZiBsb2dfcnR0OgorICAgICAgICAgICAgZGF0YS51
cGRhdGUoCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF0ZXN0X3J0
dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9sYXRlc3QpLAorICAg
ICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF9taW4pLAorICAgICAgICAgICAgICAgICAgICAic21vb3RoZWRfcnR0Ijogc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Ntb290aGVkKSwKKyAgICAgICAg
ICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF92YXJpYW5jZSksCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
CisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgIGNhdGVn
b3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQiLCBkYXRhPWRhdGEKKyAgICAg
ICAgKQorCisgICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgIHNlbGYsIHBhY2tldHM6
IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBm
bG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9wYWNrZXRzX2NjID0gW10KKyAgICAg
ICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgZGVsIHNwYWNlLnNlbnRfcGFj
a2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KKworICAgICAgICAgICAgaWYgcGFja2V0LmluX2Zs
aWdodDoKKyAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2MuYXBwZW5kKHBhY2tldCkKKwor
ICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAg
c3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorCisgICAgICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIs
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9zdCIsCisgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiBzZWxmLl9xdWlj
X2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9udW1iZXIpLAorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxi
YWNrcworICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0LmRlbGl2ZXJ5X2hh
bmRsZXJzOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
KmFyZ3MpCisKKyAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBjb250cm9sbGVyCisgICAgICAg
IGlmIGxvc3RfcGFja2V0c19jYzoKKyAgICAgICAgICAgIHNlbGYuX2NjLm9uX3BhY2tldHNfbG9z
dChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCisgICAgICAgICAgICBzZWxmLl9wYWNlci51cGRh
dGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25n
ZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Nt
b290aGVkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgp
CisKKworY2xhc3MgUXVpY1J0dE1vbml0b3I6CisgICAgIiIiCisgICAgUm91bmR0cmlwIHRpbWUg
bW9uaXRvciBmb3IgSHlTdGFydC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHNlbGYuX2xhc3Rf
dGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
aXplID0gNQorCisgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjogT3B0aW9uYWxbZmxvYXRdID0g
Tm9uZQorCisgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAgIHNlbGYuX3NhbXBs
ZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2FtcGxlX21pbjog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zYW1wbGVfdGltZSA9IDAuMAor
ICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiByYW5nZShzZWxmLl9zaXplKV0K
KworICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKKyAgICAgICAgc2VsZi5fc2FtcGxl
X2lkeCArPSAxCisKKyAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lkeCA+PSBzZWxmLl9zaXplOgor
ICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3JlYWR5
ID0gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAgICAgc2VsZi5fc2Ft
cGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4g
PSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBmb3Igc2FtcGxlIGluIHNlbGYuX3NhbXBs
ZXNbMTpdOgorICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNlbGYuX3NhbXBsZV9taW46Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBzYW1wbGUKKyAgICAgICAgICAg
ICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKKworICAgIGRlZiBpc19ydHRfaW5jcmVhc2luZyhz
ZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgorICAgICAgICBpZiBub3cgPiBz
ZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6CisgICAgICAgICAgICBzZWxmLmFkZF9y
dHQocnR0KQorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSBub3cKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcmVhZHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsdGVyZWRfbWlu
IGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5fc2FtcGxlX21heDoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2VsZi5fc2FtcGxlX21heAorCisg
ICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWluIC0gc2VsZi5fZmlsdGVyZWRf
bWluCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNlbGYuX2ZpbHRlcmVkX21pbjoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVsdGEgPiAwOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHJldHVybiBGYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDVjM2E1
YzU1YzlhMzk1ODkzOThjOTdjZWU5NjVjMmIzNzA2NjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKQEAgLTAsMCArMSwzOSBAQAoraW1w
b3J0IGlwYWRkcmVzcworCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0
IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1w
b3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJp
YyBpbXBvcnQgcGFkZGluZywgcnNhCisKK2Zyb20gLmNvbm5lY3Rpb24gaW1wb3J0IE5ldHdvcmtB
ZGRyZXNzCisKKworZGVmIGVuY29kZV9hZGRyZXNzKGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBi
eXRlczoKKyAgICByZXR1cm4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoYWRkclswXSkucGFja2VkICsg
Ynl0ZXMoW2FkZHJbMV0gPj4gOCwgYWRkclsxXSAmIDB4RkZdKQorCisKK2NsYXNzIFF1aWNSZXRy
eVRva2VuSGFuZGxlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAg
c2VsZi5fa2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgcHVibGlj
X2V4cG9uZW50PTY1NTM3LCBrZXlfc2l6ZT0xMDI0LCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgp
CisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfdG9rZW4oc2VsZiwgYWRkcjogTmV0d29ya0Fk
ZHJlc3MsIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9t
ZXNzYWdlID0gZW5jb2RlX2FkZHJlc3MoYWRkcikgKyBiInwiICsgZGVzdGluYXRpb25fY2lkCisg
ICAgICAgIHJldHVybiBzZWxmLl9rZXkucHVibGljX2tleSgpLmVuY3J5cHQoCisgICAgICAgICAg
ICByZXRyeV9tZXNzYWdlLAorICAgICAgICAgICAgcGFkZGluZy5PQUVQKAorICAgICAgICAgICAg
ICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVzLlNIQTI1NigpKSwgYWxnb3JpdGhtPWhhc2hlcy5T
SEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHZhbGlkYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCB0b2tlbjogYnl0ZXMp
IC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9tZXNzYWdlID0gc2VsZi5fa2V5LmRlY3J5cHQoCisg
ICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgKKyAgICAgICAgICAg
ICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29yaXRobT1oYXNoZXMu
U0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAg
ZW5jb2RlZF9hZGRyLCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gcmV0cnlfbWVzc2FnZS5zcGxp
dChiInwiLCBtYXhzcGxpdD0xKQorICAgICAgICBpZiBlbmNvZGVkX2FkZHIgIT0gZW5jb2RlX2Fk
ZHJlc3MoYWRkcik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZW1vdGUgYWRkcmVz
cyBkb2VzIG5vdCBtYXRjaC4iKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxfY29ubmVjdGlvbl9p
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MjM2
ODZmNWQ2YmNkNmY5MGI0ZTUzZjM3MTRmM2JmOWI2ZjYxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKQEAgLTAsMCArMSwyMTQgQEAK
K2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworZnJv
bSAucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gLnBhY2tldF9idWlsZGVyIGlt
cG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisK
KworY2xhc3MgUXVpY1N0cmVhbToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHN0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIG1heF9zdHJl
YW1fZGF0YV9sb2NhbDogaW50ID0gMCwKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZTog
aW50ID0gMCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfYmxvY2tlZCA9IEZhbHNl
CisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gbWF4X3N0cmVhbV9kYXRhX2xv
Y2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gbWF4X3N0
cmVhbV9kYXRhX3JlbW90ZQorICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gVHJ1
ZQorCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgc2VsZi5fcmVjdl9oaWdoZXN0ID0gMCAgIyB0aGUgaGlnaGVzdCBvZmZz
ZXQgZXZlciBzZWVuCisgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHNlbGYuX3NlbmRfYWNrZWQgPSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuX3NlbmRf
YnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfZmluOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCA9IDAgICMg
dGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAgICAgc2VsZi5fc2Vu
ZF9idWZmZXJfc3RvcCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0b3Agb2YgdGhlIGJ1ZmZl
cgorICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSAwCisgICAgICAgIHNlbGYuX3NlbmRfcGVu
ZGluZyA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZhbHNl
CisKKyAgICAgICAgc2VsZi5fX3N0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIHN0cmVhbV9pZChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1
cm4gc2VsZi5fX3N0cmVhbV9pZAorCisgICAgIyByZWFkZXIKKworICAgIGRlZiBhZGRfZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSkgLT4gT3B0aW9uYWxbZXZlbnRzLlN0cmVhbURh
dGFSZWNlaXZlZF06CisgICAgICAgICIiIgorICAgICAgICBBZGQgYSBmcmFtZSBvZiByZWNlaXZl
ZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcG9zID0gZnJhbWUub2Zmc2V0IC0gc2VsZi5f
cmVjdl9idWZmZXJfc3RhcnQKKyAgICAgICAgY291bnQgPSBsZW4oZnJhbWUuZGF0YSkKKyAgICAg
ICAgZnJhbWVfZW5kID0gZnJhbWUub2Zmc2V0ICsgY291bnQKKworICAgICAgICAjIHdlIHNob3Vs
ZCByZWNlaXZlIG5vIG1vcmUgZGF0YSBiZXlvbmQgRklOIQorICAgICAgICBpZiBzZWxmLl9yZWN2
X2J1ZmZlcl9maW4gaXMgbm90IE5vbmUgYW5kIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfYnVmZmVy
X2ZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRGF0YSByZWNlaXZlZCBiZXlvbmQg
RklOIikKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXJfZmluID0gZnJhbWVfZW5kCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfaGln
aGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IGZyYW1lX2VuZAorCisgICAg
ICAgICMgZmFzdCBwYXRoOiBuZXcgaW4tb3JkZXIgY2h1bmsKKyAgICAgICAgaWYgcG9zID09IDAg
YW5kIGNvdW50IGFuZCBub3Qgc2VsZi5fcmVjdl9idWZmZXI6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCArPSBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJl
YW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1mcmFtZS5kYXRhLCBlbmRfc3Ry
ZWFtPWZyYW1lLmZpbiwgc3RyZWFtX2lkPXNlbGYuX19zdHJlYW1faWQKKyAgICAgICAgICAgICkK
KworICAgICAgICAjIGRpc2NhcmQgZHVwbGljYXRlIGRhdGEKKyAgICAgICAgaWYgcG9zIDwgMDoK
KyAgICAgICAgICAgIGZyYW1lLmRhdGEgPSBmcmFtZS5kYXRhWy1wb3M6XQorICAgICAgICAgICAg
ZnJhbWUub2Zmc2V0IC09IHBvcworICAgICAgICAgICAgcG9zID0gMAorCisgICAgICAgICMgbWFy
a2VkIHJlY2VpdmVkIHJhbmdlCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IGZyYW1lLm9mZnNldDoK
KyAgICAgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzLmFkZChmcmFtZS5vZmZzZXQsIGZyYW1lX2Vu
ZCkKKworICAgICAgICAjIGFkZCBuZXcgZGF0YQorICAgICAgICBnYXAgPSBwb3MgLSBsZW4oc2Vs
Zi5fcmVjdl9idWZmZXIpCisgICAgICAgIGlmIGdhcCA+IDA6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlciArPSBieXRlYXJyYXkoZ2FwKQorICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcltw
b3MgOiBwb3MgKyBjb3VudF0gPSBmcmFtZS5kYXRhCisKKyAgICAgICAgIyByZXR1cm4gZGF0YSBm
cm9tIHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGRhdGEgPSBzZWxmLl9wdWxsX2Rh
dGEoKQorICAgICAgICBlbmRfc3RyZWFtID0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPT0gc2Vs
Zi5fcmVjdl9idWZmZXJfZmluCisgICAgICAgIGlmIGRhdGEgb3IgZW5kX3N0cmVhbToKKyAgICAg
ICAgICAgIHJldHVybiBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c2VsZi5fX3N0cmVh
bV9pZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBfcHVsbF9kYXRhKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAg
ICAgICAgUmVtb3ZlIGRhdGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAg
IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBzZWxmLl9y
ZWN2X3Jhbmdlc1swXS5zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAorICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBGYWxzZQor
ICAgICAgICBpZiBub3QgaGFzX2RhdGFfdG9fcmVhZDoKKyAgICAgICAgICAgIHJldHVybiBiIiIK
KworICAgICAgICByID0gc2VsZi5fcmVjdl9yYW5nZXMuc2hpZnQoKQorICAgICAgICBwb3MgPSBy
LnN0b3AgLSByLnN0YXJ0CisgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9yZWN2X2J1ZmZlcls6
cG9zXSkKKyAgICAgICAgZGVsIHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdCisgICAgICAgIHNlbGYu
X3JlY3ZfYnVmZmVyX3N0YXJ0ID0gci5zdG9wCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAj
IHdyaXRlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5leHRfc2VuZF9vZmZzZXQoc2VsZikg
LT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIG9mZnNldCBmb3IgdGhlIG5leHQgZnJh
bWUgdG8gc2VuZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzcGFj
ZSBuZWVkZWQgZm9yIHRoZSBmcmFtZSdzIGBvZmZzZXRgIGZpZWxkLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfcGVuZGluZ1swXS5zdGFy
dAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9z
ZW5kX2J1ZmZlcl9zdG9wCisKKyAgICBkZWYgZ2V0X2ZyYW1lKAorICAgICAgICBzZWxmLCBtYXhf
c2l6ZTogaW50LCBtYXhfb2Zmc2V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICkgLT4gT3B0
aW9uYWxbUXVpY1N0cmVhbUZyYW1lXToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhIGZyYW1l
IG9mIGRhdGEgdG8gc2VuZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgZ2V0IHRoZSBmaXJzdCBw
ZW5kaW5nIGRhdGEgcmFuZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgciA9IHNlbGYuX3Nl
bmRfcGVuZGluZ1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGlm
IHNlbGYuX3NlbmRfcGVuZGluZ19lb2Y6CisgICAgICAgICAgICAgICAgIyBGSU4gb25seQorICAg
ICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBGYWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBRdWljU3RyZWFtRnJhbWUoZmluPVRydWUsIG9mZnNldD1zZWxmLl9zZW5kX2J1
ZmZlcl9maW4pCisKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVl
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYXBwbHkgZmxvdyBjb250cm9s
CisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgICAgICBzdG9wID0gbWluKHIuc3RvcCwgc3Rh
cnQgKyBtYXhfc2l6ZSkKKyAgICAgICAgaWYgbWF4X29mZnNldCBpcyBub3QgTm9uZSBhbmQgc3Rv
cCA+IG1heF9vZmZzZXQ6CisgICAgICAgICAgICBzdG9wID0gbWF4X29mZnNldAorICAgICAgICBp
ZiBzdG9wIDw9IHN0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNy
ZWF0ZSBmcmFtZQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAgICAgICAgICAg
IGRhdGE9Ynl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJbCisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0IC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgOiBzdG9wIC0gc2Vs
Zi5fc2VuZF9idWZmZXJfc3RhcnQKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgb2Zmc2V0PXN0YXJ0LAorICAgICAgICApCisgICAgICAgIHNlbGYuX3NlbmRf
cGVuZGluZy5zdWJ0cmFjdChzdGFydCwgc3RvcCkKKworICAgICAgICAjIHRyYWNrIHRoZSBoaWdo
ZXN0IG9mZnNldCBldmVyIHNlbnQKKyAgICAgICAgaWYgc3RvcCA+IHNlbGYuX3NlbmRfaGlnaGVz
dDoKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9IHN0b3AKKworICAgICAgICAjIGlm
IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIEVPRiB3YXMgd3JpdHRlbiwgc2V0IHRoZSBGSU4gYml0
CisgICAgICAgIGlmIHNlbGYuX3NlbmRfYnVmZmVyX2ZpbiA9PSBzdG9wOgorICAgICAgICAgICAg
ZnJhbWUuZmluID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZh
bHNlCisKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgb25fZGF0YV9kZWxpdmVyeSgK
KyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdGFydDogaW50LCBz
dG9wOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3
aGVuIHNlbnQgZGF0YSBpcyBBQ0snZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2VuZF9i
dWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICBpZiBkZWxpdmVyeSA9PSBRdWljRGVsaXZl
cnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2Fja2VkLmFkZChzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICBm
aXJzdF9yYW5nZSA9IHNlbGYuX3NlbmRfYWNrZWRbMF0KKyAgICAgICAgICAgICAgICBpZiBmaXJz
dF9yYW5nZS5zdGFydCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydDoKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IGZpcnN0X3JhbmdlLnN0b3AgLSBmaXJzdF9yYW5nZS5zdGFydAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLnNoaWZ0KCkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgKz0gc2l6ZQorICAgICAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5fc2VuZF9idWZmZXJbOnNpemVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBp
ZiBzdG9wID4gc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLmFkZChz
dGFydCwgc3RvcCkKKyAgICAgICAgICAgIGlmIHN0b3AgPT0gc2VsZi5fc2VuZF9idWZmZXJfZmlu
OgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfZW1wdHkgPSBGYWxzZQorICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFdyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgUVVJQyBzdHJl
YW0uCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fc2VuZF9idWZmZXJfZmluIGlz
IE5vbmUsICJjYW5ub3QgY2FsbCB3cml0ZSgpIGFmdGVyIEZJTiIKKyAgICAgICAgc2l6ZSA9IGxl
bihkYXRhKQorCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVy
X2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZy5hZGQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCwgc2VsZi5fc2VuZF9idWZmZXJf
c3RvcCArIHNpemUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVy
ICs9IGRhdGEKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AgKz0gc2l6ZQorICAg
ICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0
eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gPSBzZWxmLl9zZW5k
X2J1ZmZlcl9zdG9wCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gVHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OGI4YzI2ZmE0YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwyOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0
X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2V2ZW50cy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNv
dmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMGI2OWZmMmQzMjI3NDE2ZTcxNWRmZTE4YjgwMjY5ZTBiMWMyNTliCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpAQCAtMCwwICsx
LDE5MjggQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHNzbAoraW1wb3J0IHN0cnVjdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFu
YWdlcgorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVt
IGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJv
bSB0eXBpbmcgaW1wb3J0ICgKKyAgICBBbnksCisgICAgQ2FsbGFibGUsCisgICAgRGljdCwKKyAg
ICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBTZXF1ZW5jZSwKKyAg
ICBUdXBsZSwKKyAgICBUeXBlVmFyLAorICAgIFVuaW9uLAorKQorCitpbXBvcnQgY2VydGlmaQor
ZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3JhcGh5LmV4Y2VwdGlv
bnMgaW1wb3J0IEludmFsaWRTaWduYXR1cmUKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5iYWNr
ZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmlu
ZGluZ3Mub3BlbnNzbC5iaW5kaW5nIGltcG9ydCBCaW5kaW5nCitmcm9tIGNyeXB0b2dyYXBoeS5o
YXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBobWFjLCBzZXJpYWxpemF0aW9uCitmcm9t
IGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCAoCisgICAg
ZHNhLAorICAgIGVjLAorICAgIHBhZGRpbmcsCisgICAgcnNhLAorICAgIHg0NDgsCisgICAgeDI1
NTE5LAorKQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMua2RmLmhrZGYgaW1w
b3J0IEhLREZFeHBhbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLnNlcmlh
bGl6YXRpb24gaW1wb3J0IEVuY29kaW5nLCBQdWJsaWNGb3JtYXQKKworZnJvbSAuYnVmZmVyIGlt
cG9ydCBCdWZmZXIKKworYmluZGluZyA9IEJpbmRpbmcoKQorYmluZGluZy5pbml0X3N0YXRpY19s
b2NrcygpCitmZmkgPSBiaW5kaW5nLmZmaQorbGliID0gYmluZGluZy5saWIKKworVExTX1ZFUlNJ
T05fMV8yID0gMHgwMzAzCitUTFNfVkVSU0lPTl8xXzMgPSAweDAzMDQKK1RMU19WRVJTSU9OXzFf
M19EUkFGVF8yOCA9IDB4N0YxQworVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3ID0gMHg3RjFCCitU
TFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYgPSAweDdGMUEKKworVCA9IFR5cGVWYXIoIlQiKQorCisj
IGZhY2lsaXRhdGUgbW9ja2luZyBmb3IgdGhlIHRlc3Qgc3VpdGUKK3V0Y25vdyA9IGRhdGV0aW1l
LmRhdGV0aW1lLnV0Y25vdworCisKK2NsYXNzIEFsZXJ0RGVzY3JpcHRpb24oSW50RW51bSk6Cisg
ICAgY2xvc2Vfbm90aWZ5ID0gMAorICAgIHVuZXhwZWN0ZWRfbWVzc2FnZSA9IDEwCisgICAgYmFk
X3JlY29yZF9tYWMgPSAyMAorICAgIHJlY29yZF9vdmVyZmxvdyA9IDIyCisgICAgaGFuZHNoYWtl
X2ZhaWx1cmUgPSA0MAorICAgIGJhZF9jZXJ0aWZpY2F0ZSA9IDQyCisgICAgdW5zdXBwb3J0ZWRf
Y2VydGlmaWNhdGUgPSA0MworICAgIGNlcnRpZmljYXRlX3Jldm9rZWQgPSA0NAorICAgIGNlcnRp
ZmljYXRlX2V4cGlyZWQgPSA0NQorICAgIGNlcnRpZmljYXRlX3Vua25vd24gPSA0NgorICAgIGls
bGVnYWxfcGFyYW1ldGVyID0gNDcKKyAgICB1bmtub3duX2NhID0gNDgKKyAgICBhY2Nlc3NfZGVu
aWVkID0gNDkKKyAgICBkZWNvZGVfZXJyb3IgPSA1MAorICAgIGRlY3J5cHRfZXJyb3IgPSA1MQor
ICAgIHByb3RvY29sX3ZlcnNpb24gPSA3MAorICAgIGluc3VmZmljaWVudF9zZWN1cml0eSA9IDcx
CisgICAgaW50ZXJuYWxfZXJyb3IgPSA4MAorICAgIGluYXBwcm9wcmlhdGVfZmFsbGJhY2sgPSA4
NgorICAgIHVzZXJfY2FuY2VsZWQgPSA5MAorICAgIG1pc3NpbmdfZXh0ZW5zaW9uID0gMTA5Cisg
ICAgdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uID0gMTEwCisgICAgdW5yZWNvZ25pemVkX25hbWUgPSAx
MTIKKyAgICBiYWRfY2VydGlmaWNhdGVfc3RhdHVzX3Jlc3BvbnNlID0gMTEzCisgICAgdW5rbm93
bl9wc2tfaWRlbnRpdHkgPSAxMTUKKyAgICBjZXJ0aWZpY2F0ZV9yZXF1aXJlZCA9IDExNgorICAg
IG5vX2FwcGxpY2F0aW9uX3Byb3RvY29sID0gMTIwCisKKworY2xhc3MgQWxlcnQoRXhjZXB0aW9u
KToKKyAgICBkZXNjcmlwdGlvbjogQWxlcnREZXNjcmlwdGlvbgorCisKK2NsYXNzIEFsZXJ0QmFk
Q2VydGlmaWNhdGUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5i
YWRfY2VydGlmaWNhdGUKKworCitjbGFzcyBBbGVydENlcnRpZmljYXRlRXhwaXJlZChBbGVydCk6
CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmNlcnRpZmljYXRlX2V4cGlyZWQK
KworCitjbGFzcyBBbGVydERlY3J5cHRFcnJvcihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBB
bGVydERlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3IKKworCitjbGFzcyBBbGVydEhhbmRzaGFrZUZh
aWx1cmUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5oYW5kc2hh
a2VfZmFpbHVyZQorCisKK2NsYXNzIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcihBbGVydCk6CisgICAg
ZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCisKKworY2xh
c3MgQWxlcnRJbnRlcm5hbEVycm9yKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVz
Y3JpcHRpb24uaW50ZXJuYWxfZXJyb3IKKworCitjbGFzcyBBbGVydFByb3RvY29sVmVyc2lvbihB
bGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNp
b24KKworCitjbGFzcyBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlKEFsZXJ0KToKKyAgICBkZXNjcmlw
dGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlCisKKworY2xhc3MgRGly
ZWN0aW9uKEVudW0pOgorICAgIERFQ1JZUFQgPSAwCisgICAgRU5DUllQVCA9IDEKKworCitjbGFz
cyBFcG9jaChFbnVtKToKKyAgICBJTklUSUFMID0gMAorICAgIFpFUk9fUlRUID0gMQorICAgIEhB
TkRTSEFLRSA9IDIKKyAgICBPTkVfUlRUID0gMworCisKK2NsYXNzIFN0YXRlKEVudW0pOgorICAg
IENMSUVOVF9IQU5EU0hBS0VfU1RBUlQgPSAwCisgICAgQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVM
TE8gPSAxCisgICAgQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUyA9IDIKKyAgICBD
TElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEUgPSAzCisgICAg
Q0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9DRVJUSUZJQ0FURSA9IDQKKyAgICBDTElFTlRfRVhQ
RUNUX0NFUlRJRklDQVRFX1ZFUklGWSA9IDUKKyAgICBDTElFTlRfRVhQRUNUX0ZJTklTSEVEID0g
NgorICAgIENMSUVOVF9QT1NUX0hBTkRTSEFLRSA9IDcKKworICAgIFNFUlZFUl9FWFBFQ1RfQ0xJ
RU5UX0hFTExPID0gOAorICAgIFNFUlZFUl9FWFBFQ1RfRklOSVNIRUQgPSA5CisgICAgU0VSVkVS
X1BPU1RfSEFORFNIQUtFID0gMTAKKworCitkZWYgaGtkZl9sYWJlbChsYWJlbDogYnl0ZXMsIGhh
c2hfdmFsdWU6IGJ5dGVzLCBsZW5ndGg6IGludCkgLT4gYnl0ZXM6CisgICAgZnVsbF9sYWJlbCA9
IGIidGxzMTMgIiArIGxhYmVsCisgICAgcmV0dXJuICgKKyAgICAgICAgc3RydWN0LnBhY2soIiFI
QiIsIGxlbmd0aCwgbGVuKGZ1bGxfbGFiZWwpKQorICAgICAgICArIGZ1bGxfbGFiZWwKKyAgICAg
ICAgKyBzdHJ1Y3QucGFjaygiIUIiLCBsZW4oaGFzaF92YWx1ZSkpCisgICAgICAgICsgaGFzaF92
YWx1ZQorICAgICkKKworCitkZWYgaGtkZl9leHBhbmRfbGFiZWwoCisgICAgYWxnb3JpdGhtOiBo
YXNoZXMuSGFzaEFsZ29yaXRobSwKKyAgICBzZWNyZXQ6IGJ5dGVzLAorICAgIGxhYmVsOiBieXRl
cywKKyAgICBoYXNoX3ZhbHVlOiBieXRlcywKKyAgICBsZW5ndGg6IGludCwKKykgLT4gYnl0ZXM6
CisgICAgcmV0dXJuIEhLREZFeHBhbmQoCisgICAgICAgIGFsZ29yaXRobT1hbGdvcml0aG0sCisg
ICAgICAgIGxlbmd0aD1sZW5ndGgsCisgICAgICAgIGluZm89aGtkZl9sYWJlbChsYWJlbCwgaGFz
aF92YWx1ZSwgbGVuZ3RoKSwKKyAgICAgICAgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSwKKyAg
ICApLmRlcml2ZShzZWNyZXQpCisKKworZGVmIGhrZGZfZXh0cmFjdCgKKyAgICBhbGdvcml0aG06
IGhhc2hlcy5IYXNoQWxnb3JpdGhtLCBzYWx0OiBieXRlcywga2V5X21hdGVyaWFsOiBieXRlcwor
KSAtPiBieXRlczoKKyAgICBoID0gaG1hYy5ITUFDKHNhbHQsIGFsZ29yaXRobSwgYmFja2VuZD1k
ZWZhdWx0X2JhY2tlbmQoKSkKKyAgICBoLnVwZGF0ZShrZXlfbWF0ZXJpYWwpCisgICAgcmV0dXJu
IGguZmluYWxpemUoKQorCisKK2RlZiBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICBkYXRhOiBi
eXRlcywgcGFzc3dvcmQ6IE9wdGlvbmFsW2J5dGVzXQorKSAtPiBVbmlvbltkc2EuRFNBUHJpdmF0
ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2YXRlS2V5XToKKyAg
ICAiIiIKKyAgICBMb2FkIGEgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkuCisgICAgIiIiCisgICAg
cmV0dXJuIHNlcmlhbGl6YXRpb24ubG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgICAgIGRhdGEs
IHBhc3N3b3JkPXBhc3N3b3JkLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgKQorCisK
K2RlZiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhkYXRhOiBieXRlcykgLT4gTGlzdFt4NTA5
LkNlcnRpZmljYXRlXToKKyAgICAiIiIKKyAgICBMb2FkIGEgY2hhaW4gb2YgUEVNLWVuY29kZWQg
WDUwOSBjZXJ0aWZpY2F0ZXMuCisgICAgIiIiCisgICAgYm91bmRhcnkgPSBiIi0tLS0tRU5EIENF
UlRJRklDQVRFLS0tLS1cbiIKKyAgICBjZXJ0aWZpY2F0ZXMgPSBbXQorICAgIGZvciBjaHVuayBp
biBkYXRhLnNwbGl0KGJvdW5kYXJ5KToKKyAgICAgICAgaWYgY2h1bms6CisgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHg1MDkubG9hZF9wZW1feDUwOV9j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgKyBib3VuZGFyeSwgYmFja2Vu
ZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg
ICByZXR1cm4gY2VydGlmaWNhdGVzCisKKworZGVmIG9wZW5zc2xfYXNzZXJ0KG9rOiBib29sLCBm
dW5jOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgbm90IG9rOgorICAgICAgICBsaWIuRVJSX2NsZWFy
X2Vycm9yKCkKKyAgICAgICAgcmFpc2UgQWxlcnRJbnRlcm5hbEVycm9yKCJPcGVuU1NMIGNhbGwg
dG8gJXMgZmFpbGVkIiAlIGZ1bmMpCisKKworZGVmIG9wZW5zc2xfZGVjb2RlX3N0cmluZyhjaGFy
cCkgLT4gc3RyOgorICAgIHJldHVybiBmZmkuc3RyaW5nKGNoYXJwKS5kZWNvZGUoInV0Zi04Iikg
aWYgY2hhcnAgZWxzZSAiIgorCisKK2RlZiBvcGVuc3NsX2VuY29kZV9wYXRoKHM6IE9wdGlvbmFs
W3N0cl0pIC0+IEFueToKKyAgICBpZiBzIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gb3Mu
ZnNlbmNvZGUocykKKyAgICByZXR1cm4gZmZpLk5VTEwKKworCitkZWYgY2VydF94NTA5X3B0cihj
ZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSkgLT4gQW55OgorICAgICIiIgorICAgIEFjY2Vz
c29yIGZvciBwcml2YXRlIGF0dHJpYnV0ZS4KKyAgICAiIiIKKyAgICByZXR1cm4gZ2V0YXR0cihj
ZXJ0aWZpY2F0ZSwgIl94NTA5IikKKworCitkZWYgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgIGNl
cnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRlLAorICAgIGNoYWluOiBMaXN0W3g1MDkuQ2VydGlm
aWNhdGVdID0gW10sCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg
IGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICBjYWZpbGU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCispIC0+IE5vbmU6
CisgICAgIyB2ZXJpZnkgZGF0ZXMKKyAgICBub3cgPSB1dGNub3coKQorICAgIGlmIG5vdyA8IGNl
cnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmU6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKyAgICBpZiBub3cgPiBj
ZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXI6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIgdmFsaWQiKQorCisgICAgIyB2ZXJp
Znkgc3ViamVjdAorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBzdWJq
ZWN0ID0gW10KKyAgICAgICAgc3ViamVjdEFsdE5hbWU6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSA9
IFtdCisgICAgICAgIGZvciBhdHRyIGluIGNlcnRpZmljYXRlLnN1YmplY3Q6CisgICAgICAgICAg
ICBpZiBhdHRyLm9pZCA9PSB4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUU6CisgICAgICAgICAgICAg
ICAgc3ViamVjdC5hcHBlbmQoKCgiY29tbW9uTmFtZSIsIGF0dHIudmFsdWUpLCkpCisgICAgICAg
IGZvciBleHQgaW4gY2VydGlmaWNhdGUuZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXh0LnZhbHVlLCB4NTA5LlN1YmplY3RBbHRlcm5hdGl2ZU5hbWUpOgorICAgICAgICAg
ICAgICAgIGZvciBuYW1lIGluIGV4dC52YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShuYW1lLCB4NTA5LkROU05hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
amVjdEFsdE5hbWUuYXBwZW5kKCgiRE5TIiwgbmFtZS52YWx1ZSkpCisKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lKAorICAgICAgICAgICAgICAgIHsic3ViamVj
dCI6IHR1cGxlKHN1YmplY3QpLCAic3ViamVjdEFsdE5hbWUiOiB0dXBsZShzdWJqZWN0QWx0TmFt
ZSl9LAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorICAgICAg
ICBleGNlcHQgc3NsLkNlcnRpZmljYXRlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2Ug
QWxlcnRCYWRDZXJ0aWZpY2F0ZSgiXG4iLmpvaW4oZXhjLmFyZ3MpKSBmcm9tIGV4YworCisgICAg
IyB2ZXJpZnkgY2VydGlmaWNhdGUgY2hhaW4KKyAgICBzdG9yZSA9IGxpYi5YNTA5X1NUT1JFX25l
dygpCisgICAgb3BlbnNzbF9hc3NlcnQoc3RvcmUgIT0gZmZpLk5VTEwsICJYNTA5X3N0b3JlX25l
dyIpCisgICAgc3RvcmUgPSBmZmkuZ2Moc3RvcmUsIGxpYi5YNTA5X1NUT1JFX2ZyZWUpCisKKyAg
ICAjIGxvYWQgZGVmYXVsdCBDQXMKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgbGliLlg1
MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMoc3RvcmUpLCAiWDUwOV9TVE9SRV9zZXRfZGVmYXVs
dF9wYXRocyIKKyAgICApCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgIGxpYi5YNTA5X1NU
T1JFX2xvYWRfbG9jYXRpb25zKAorICAgICAgICAgICAgc3RvcmUsIG9wZW5zc2xfZW5jb2RlX3Bh
dGgoY2VydGlmaS53aGVyZSgpKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChOb25lKSwKKyAgICAgICAg
KSwKKyAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAorICAgICkKKworICAgICMg
bG9hZCBleHRyYSBDQXMKKyAgICBpZiBjYWRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBj
ZXJ0IGluIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGNhZGF0YSk6CisgICAgICAgICAgICBv
cGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgICAgICBsaWIuWDUwOV9TVE9SRV9hZGRfY2VydChz
dG9yZSwgY2VydF94NTA5X3B0cihjZXJ0KSksCisgICAgICAgICAgICAgICAgIlg1MDlfU1RPUkVf
YWRkX2NlcnQiLAorICAgICAgICAgICAgKQorCisgICAgaWYgY2FmaWxlIGlzIG5vdCBOb25lIG9y
IGNhcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAg
ICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAgICAgICBzdG9yZSwg
b3BlbnNzbF9lbmNvZGVfcGF0aChjYWZpbGUpLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNhcGF0aCkK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAiWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucyIs
CisgICAgICAgICkKKworICAgIGNoYWluX3N0YWNrID0gbGliLnNrX1g1MDlfbmV3X251bGwoKQor
ICAgIG9wZW5zc2xfYXNzZXJ0KGNoYWluX3N0YWNrICE9IGZmaS5OVUxMLCAic2tfWDUwOV9uZXdf
bnVsbCIpCisgICAgY2hhaW5fc3RhY2sgPSBmZmkuZ2MoY2hhaW5fc3RhY2ssIGxpYi5za19YNTA5
X2ZyZWUpCisgICAgZm9yIGNlcnQgaW4gY2hhaW46CisgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAor
ICAgICAgICAgICAgbGliLnNrX1g1MDlfcHVzaChjaGFpbl9zdGFjaywgY2VydF94NTA5X3B0cihj
ZXJ0KSksICJza19YNTA5X3B1c2giCisgICAgICAgICkKKworICAgIHN0b3JlX2N0eCA9IGxpYi5Y
NTA5X1NUT1JFX0NUWF9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3JlX2N0eCAhPSBmZmku
TlVMTCwgIlg1MDlfU1RPUkVfQ1RYX25ldyIpCisgICAgc3RvcmVfY3R4ID0gZmZpLmdjKHN0b3Jl
X2N0eCwgbGliLlg1MDlfU1RPUkVfQ1RYX2ZyZWUpCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAg
ICAgIGxpYi5YNTA5X1NUT1JFX0NUWF9pbml0KAorICAgICAgICAgICAgc3RvcmVfY3R4LCBzdG9y
ZSwgY2VydF94NTA5X3B0cihjZXJ0aWZpY2F0ZSksIGNoYWluX3N0YWNrCisgICAgICAgICksCisg
ICAgICAgICJYNTA5X1NUT1JFX0NUWF9pbml0IiwKKyAgICApCisKKyAgICByZXMgPSBsaWIuWDUw
OV92ZXJpZnlfY2VydChzdG9yZV9jdHgpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgZXJyID0g
bGliLlg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihzdG9yZV9jdHgpCisgICAgICAgIGVycl9zdHIg
PSBvcGVuc3NsX2RlY29kZV9zdHJpbmcobGliLlg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5n
KGVycikpCisgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoZXJyX3N0cikKKworCitj
bGFzcyBDaXBoZXJTdWl0ZShJbnRFbnVtKToKKyAgICBBRVNfMTI4X0dDTV9TSEEyNTYgPSAweDEz
MDEKKyAgICBBRVNfMjU2X0dDTV9TSEEzODQgPSAweDEzMDIKKyAgICBDSEFDSEEyMF9QT0xZMTMw
NV9TSEEyNTYgPSAweDEzMDMKKyAgICBFTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViA9IDB4
MDBGRgorCisKK2NsYXNzIENvbXByZXNzaW9uTWV0aG9kKEludEVudW0pOgorICAgIE5VTEwgPSAw
CisKKworY2xhc3MgRXh0ZW5zaW9uVHlwZShJbnRFbnVtKToKKyAgICBTRVJWRVJfTkFNRSA9IDAK
KyAgICBTVEFUVVNfUkVRVUVTVCA9IDUKKyAgICBTVVBQT1JURURfR1JPVVBTID0gMTAKKyAgICBT
SUdOQVRVUkVfQUxHT1JJVEhNUyA9IDEzCisgICAgQUxQTiA9IDE2CisgICAgQ09NUFJFU1NfQ0VS
VElGSUNBVEUgPSAyNworICAgIFBSRV9TSEFSRURfS0VZID0gNDEKKyAgICBFQVJMWV9EQVRBID0g
NDIKKyAgICBTVVBQT1JURURfVkVSU0lPTlMgPSA0MworICAgIENPT0tJRSA9IDQ0CisgICAgUFNL
X0tFWV9FWENIQU5HRV9NT0RFUyA9IDQ1CisgICAgS0VZX1NIQVJFID0gNTEKKyAgICBRVUlDX1RS
QU5TUE9SVF9QQVJBTUVURVJTID0gNjU0NDUKKyAgICBFTkNSWVBURURfU0VSVkVSX05BTUUgPSA2
NTQ4NgorCisKK2NsYXNzIEdyb3VwKEludEVudW0pOgorICAgIFNFQ1AyNTZSMSA9IDB4MDAxNwor
ICAgIFNFQ1AzODRSMSA9IDB4MDAxOAorICAgIFNFQ1A1MjFSMSA9IDB4MDAxOQorICAgIFgyNTUx
OSA9IDB4MDAxRAorICAgIFg0NDggPSAweDAwMUUKKyAgICBHUkVBU0UgPSAweEFBQUEKKworCitj
bGFzcyBIYW5kc2hha2VUeXBlKEludEVudW0pOgorICAgIENMSUVOVF9IRUxMTyA9IDEKKyAgICBT
RVJWRVJfSEVMTE8gPSAyCisgICAgTkVXX1NFU1NJT05fVElDS0VUID0gNAorICAgIEVORF9PRl9F
QVJMWV9EQVRBID0gNQorICAgIEVOQ1JZUFRFRF9FWFRFTlNJT05TID0gOAorICAgIENFUlRJRklD
QVRFID0gMTEKKyAgICBDRVJUSUZJQ0FURV9SRVFVRVNUID0gMTMKKyAgICBDRVJUSUZJQ0FURV9W
RVJJRlkgPSAxNQorICAgIEZJTklTSEVEID0gMjAKKyAgICBLRVlfVVBEQVRFID0gMjQKKyAgICBD
T01QUkVTU0VEX0NFUlRJRklDQVRFID0gMjUKKyAgICBNRVNTQUdFX0hBU0ggPSAyNTQKKworCitj
bGFzcyBQc2tLZXlFeGNoYW5nZU1vZGUoSW50RW51bSk6CisgICAgUFNLX0tFID0gMAorICAgIFBT
S19ESEVfS0UgPSAxCisKKworY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtKEludEVudW0pOgorICAg
IEVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYgPSAweDA0MDMKKyAgICBFQ0RTQV9TRUNQMzg0UjFfU0hB
Mzg0ID0gMHgwNTAzCisgICAgRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiA9IDB4MDYwMworICAgIEVE
MjU1MTkgPSAweDA4MDcKKyAgICBFRDQ0OCA9IDB4MDgwOAorICAgIFJTQV9QS0NTMV9TSEEyNTYg
PSAweDA0MDEKKyAgICBSU0FfUEtDUzFfU0hBMzg0ID0gMHgwNTAxCisgICAgUlNBX1BLQ1MxX1NI
QTUxMiA9IDB4MDYwMQorICAgIFJTQV9QU1NfUFNTX1NIQTI1NiA9IDB4MDgwOQorICAgIFJTQV9Q
U1NfUFNTX1NIQTM4NCA9IDB4MDgwQQorICAgIFJTQV9QU1NfUFNTX1NIQTUxMiA9IDB4MDgwQgor
ICAgIFJTQV9QU1NfUlNBRV9TSEEyNTYgPSAweDA4MDQKKyAgICBSU0FfUFNTX1JTQUVfU0hBMzg0
ID0gMHgwODA1CisgICAgUlNBX1BTU19SU0FFX1NIQTUxMiA9IDB4MDgwNgorCisgICAgIyBsZWdh
Y3kKKyAgICBSU0FfUEtDUzFfU0hBMSA9IDB4MDIwMQorICAgIFNIQTFfRFNBID0gMHgwMjAyCisg
ICAgRUNEU0FfU0hBMSA9IDB4MDIwMworCisKKyMgQkxPQ0tTCisKKworQGNvbnRleHRtYW5hZ2Vy
CitkZWYgcHVsbF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gR2VuZXJhdG9y
OgorICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgYiBpbiBidWYucHVsbF9ieXRlcyhjYXBhY2l0eSk6
CisgICAgICAgIGxlbmd0aCA9IChsZW5ndGggPDwgOCkgfCBiCisgICAgZW5kID0gYnVmLnRlbGwo
KSArIGxlbmd0aAorICAgIHlpZWxkIGxlbmd0aAorICAgIGFzc2VydCBidWYudGVsbCgpID09IGVu
ZAorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfYmxvY2soYnVmOiBCdWZmZXIsIGNhcGFj
aXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICAiIiIKKyAgICBDb250ZXh0IG1hbmFnZXIgdG8g
cHVzaCBhIHZhcmlhYmxlLWxlbmd0aCBibG9jaywgd2l0aCBgY2FwYWNpdHlgIGJ5dGVzCisgICAg
dG8gd3JpdGUgdGhlIGxlbmd0aC4KKyAgICAiIiIKKyAgICBzdGFydCA9IGJ1Zi50ZWxsKCkgKyBj
YXBhY2l0eQorICAgIGJ1Zi5zZWVrKHN0YXJ0KQorICAgIHlpZWxkCisgICAgZW5kID0gYnVmLnRl
bGwoKQorICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0CisgICAgd2hpbGUgY2FwYWNpdHk6CisgICAg
ICAgIGJ1Zi5zZWVrKHN0YXJ0IC0gY2FwYWNpdHkpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KChs
ZW5ndGggPj4gKDggKiAoY2FwYWNpdHkgLSAxKSkpICYgMHhGRikKKyAgICAgICAgY2FwYWNpdHkg
LT0gMQorICAgIGJ1Zi5zZWVrKGVuZCkKKworCisjIExJU1RTCisKKworZGVmIHB1bGxfbGlzdChi
dWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW10sIFRdKSAtPiBMaXN0
W1RdOgorICAgICIiIgorICAgIFB1bGwgYSBsaXN0IG9mIGl0ZW1zLgorICAgICIiIgorICAgIGl0
ZW1zID0gW10KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkgYXMgbGVuZ3RoOgor
ICAgICAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgIHdoaWxlIGJ1Zi50ZWxs
KCkgPCBlbmQ6CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoZnVuYygpKQorICAgIHJldHVybiBp
dGVtcworCisKK2RlZiBwdXNoX2xpc3QoCisgICAgYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IGZ1bmM6IENhbGxhYmxlW1tUXSwgTm9uZV0sIHZhbHVlczogU2VxdWVuY2VbVF0KKykgLT4gTm9u
ZToKKyAgICAiIiIKKyAgICBQdXNoIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAiIiIKKyAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6
CisgICAgICAgICAgICBmdW5jKHZhbHVlKQorCisKK2RlZiBwdWxsX29wYXF1ZShidWY6IEJ1ZmZl
ciwgY2FwYWNpdHk6IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgUHVsbCBhbiBvcGFxdWUg
dmFsdWUgcHJlZml4ZWQgYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdWxsX2Jsb2Nr
KGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKKyAgICAgICAgcmV0dXJuIGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworCitkZWYgcHVzaF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IHZhbHVlOiBieXRlcykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGFuIG9wYXF1ZSB2YWx1
ZSBwcmVmaXggYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Y2FwYWNpdHkpOgorICAgICAgICBidWYucHVzaF9ieXRlcyh2YWx1ZSkKKworCitAY29udGV4dG1h
bmFnZXIKK2RlZiBwdXNoX2V4dGVuc2lvbihidWY6IEJ1ZmZlciwgZXh0ZW5zaW9uX3R5cGU6IGlu
dCkgLT4gR2VuZXJhdG9yOgorICAgIGJ1Zi5wdXNoX3VpbnQxNihleHRlbnNpb25fdHlwZSkKKyAg
ICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgeWllbGQKKworCisjIEtleVNoYXJl
RW50cnkKKworCitLZXlTaGFyZUVudHJ5ID0gVHVwbGVbaW50LCBieXRlc10KKworCitkZWYgcHVs
bF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIpIC0+IEtleVNoYXJlRW50cnk6CisgICAgZ3JvdXAgPSBi
dWYucHVsbF91aW50MTYoKQorICAgIGRhdGEgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgcmV0
dXJuIChncm91cCwgZGF0YSkKKworCitkZWYgcHVzaF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIsIHZh
bHVlOiBLZXlTaGFyZUVudHJ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQxNih2YWx1ZVsw
XSkKKyAgICBwdXNoX29wYXF1ZShidWYsIDIsIHZhbHVlWzFdKQorCisKKyMgQUxQTgorCisKK2Rl
ZiBwdWxsX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIpIC0+IHN0cjoKKyAgICByZXR1cm4gcHVs
bF9vcGFxdWUoYnVmLCAxKS5kZWNvZGUoImFzY2lpIikKKworCitkZWYgcHVzaF9hbHBuX3Byb3Rv
Y29sKGJ1ZjogQnVmZmVyLCBwcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgcHJvdG9jb2wuZW5jb2RlKCJhc2NpaSIpKQorCisKKyMgUFJFIFNIQVJFRCBLRVkK
KworUHNrSWRlbnRpdHkgPSBUdXBsZVtieXRlcywgaW50XQorCisKK2RlZiBwdWxsX3Bza19pZGVu
dGl0eShidWY6IEJ1ZmZlcikgLT4gUHNrSWRlbnRpdHk6CisgICAgaWRlbnRpdHkgPSBwdWxsX29w
YXF1ZShidWYsIDIpCisgICAgb2JmdXNjYXRlZF90aWNrZXRfYWdlID0gYnVmLnB1bGxfdWludDMy
KCkKKyAgICByZXR1cm4gKGlkZW50aXR5LCBvYmZ1c2NhdGVkX3RpY2tldF9hZ2UpCisKKworZGVm
IHB1c2hfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyLCBlbnRyeTogUHNrSWRlbnRpdHkpIC0+IE5v
bmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVswXSkKKyAgICBidWYucHVzaF91aW50
MzIoZW50cnlbMV0pCisKKworZGVmIHB1bGxfcHNrX2JpbmRlcihidWY6IEJ1ZmZlcikgLT4gYnl0
ZXM6CisgICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKworCitkZWYgcHVzaF9wc2tfYmlu
ZGVyKGJ1ZjogQnVmZmVyLCBiaW5kZXI6IGJ5dGVzKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgYmluZGVyKQorCisKKyMgTUVTU0FHRVMKKworRXh0ZW5zaW9uID0gVHVwbGVbaW50
LCBieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBPZmZlcmVkUHNrczoKKyAgICBpZGVudGl0
aWVzOiBMaXN0W1Bza0lkZW50aXR5XQorICAgIGJpbmRlcnM6IExpc3RbYnl0ZXNdCisKKworQGRh
dGFjbGFzcworY2xhc3MgQ2xpZW50SGVsbG86CisgICAgcmFuZG9tOiBieXRlcworICAgIHNlc3Np
b25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlczogTGlzdFtpbnRdCisgICAgY29tcHJlc3Np
b25fbWV0aG9kczogTGlzdFtpbnRdCisKKyAgICAjIGV4dGVuc2lvbnMKKyAgICBhbHBuX3Byb3Rv
Y29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICBlYXJseV9kYXRhOiBib29sID0g
RmFsc2UKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVFbnRyeV1dID0gTm9u
ZQorICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10gPSBOb25lCisgICAg
cHNrX2tleV9leGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBz
ZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBzaWduYXR1cmVfYWxnb3JpdGht
czogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfZ3JvdXBzOiBPcHRp
b25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHN1cHBvcnRlZF92ZXJzaW9uczogT3B0aW9uYWxb
TGlzdFtpbnRdXSA9IE5vbmUKKworICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9u
XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2NsaWVudF9oZWxs
byhidWY6IEJ1ZmZlcikgLT4gQ2xpZW50SGVsbG86CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4
KCkgPT0gSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVm
LCAzKToKKyAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFf
MgorICAgICAgICBjbGllbnRfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIpCisKKyAgICAgICAg
aGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1jbGllbnRfcmFuZG9tLAor
ICAgICAgICAgICAgc2Vzc2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlcz1wdWxsX2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50MTYpLAorICAgICAg
ICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1wdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50
OCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgYWZ0ZXJfcHNr
ID0gRmFsc2UKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgorICAgICAg
ICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAgICAgIG5vbmxvY2Fs
IGFmdGVyX3BzaworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhZnRlcl9wc2sKKworICAgICAgICAg
ICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5z
aW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBpZiBleHRlbnNpb25f
dHlwZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAgICAgICBoZWxsby5r
ZXlfc2hhcmUgPSBwdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfa2V5X3NoYXJlLCBidWYp
KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNVUFBP
UlRFRF9WRVJTSU9OUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMg
PSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09SSVRITVM6CisgICAg
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBwdWxsX2xpc3QoYnVmLCAy
LCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4
dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfZ3JvdXBzID0gcHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWludDE2KQorICAgICAg
ICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBTS19LRVlfRVhDSEFO
R0VfTU9ERVM6CisgICAgICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcyA9
IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KQorICAgICAgICAgICAgZWxpZiBleHRl
bnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FOgorICAgICAgICAgICAgICAg
IHdpdGggcHVsbF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYnVm
LnB1bGxfdWludDgoKSA9PSAwCisgICAgICAgICAgICAgICAgICAgIGhlbGxvLnNlcnZlcl9uYW1l
ID0gcHVsbF9vcGFxdWUoYnVmLCAyKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGVsaWYg
ZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAgICAgICAgICAgIGhl
bGxvLmFscG5fcHJvdG9jb2xzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAgICAgICBidWYs
IDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RB
VEE6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRydWUKKyAgICAgICAgICAg
IGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWToKKyAg
ICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IE9mZmVyZWRQc2tzKAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGl0aWVzPXB1bGxfbGlzdChidWYsIDIsIHBhcnRpYWwocHVsbF9w
c2tfaWRlbnRpdHksIGJ1ZikpLAorICAgICAgICAgICAgICAgICAgICBiaW5kZXJzPXB1bGxfbGlz
dChidWYsIDIsIHBhcnRpYWwocHVsbF9wc2tfYmluZGVyLCBidWYpKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgYWZ0ZXJfcHNrID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVs
bF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVzaF9jbGllbnRfaGVs
bG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBDbGllbnRIZWxsbykgLT4gTm9uZToKKyAgICBidWYucHVz
aF91aW50OChIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTykKKyAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9OXzFfMikKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAgICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNo
X3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRlcykKKyAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwg
YnVmLnB1c2hfdWludDgsIGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMpCisKKyAgICAgICAgIyBl
eHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NIQVJFKToKKyAgICAg
ICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1c2hfa2V5X3NoYXJlLCBidWYp
LCBoZWxsby5rZXlfc2hhcmUpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAgICAgICAgICAgcHVz
aF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMp
CisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNJ
R05BVFVSRV9BTEdPUklUSE1TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBi
dWYucHVzaF91aW50MTYsIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zKQorCisgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBT
KToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYucHVzaF91aW50MTYsIGhl
bGxvLnN1cHBvcnRlZF9ncm91cHMpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLnBza19rZXlfZXhj
aGFuZ2VfbW9kZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVu
c2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUyk6CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQ4LCBoZWxsby5wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzKQorCisgICAgICAgICAgICBpZiBoZWxsby5zZXJ2ZXJfbmFtZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9i
bG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgaGVsbG8uc2VydmVy
X25hbWUuZW5jb2RlKCJhc2NpaSIpKQorCisgICAgICAgICAgICBpZiBoZWxsby5hbHBuX3Byb3Rv
Y29scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1
ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1c2hfYWxwbl9wcm90b2Nv
bCwgYnVmKSwgaGVsbG8uYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBoZWxsby5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0YToKKyAgICAg
ICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9E
QVRBKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAjIHByZV9zaGFy
ZWRfa2V5IE1VU1QgYmUgbGFzdAorICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4
dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX3Bza19pZGVudGl0eSwg
YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50
aXRpZXMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9s
aXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfYmluZGVyLCBi
dWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVy
cywKKyAgICAgICAgICAgICAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFNlcnZlckhl
bGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBzZXNzaW9uX2lkOiBieXRlcworICAgIGNpcGhl
cl9zdWl0ZTogaW50CisgICAgY29tcHJlc3Npb25fbWV0aG9kOiBpbnQKKworICAgICMgZXh0ZW5z
aW9ucworICAgIGtleV9zaGFyZTogT3B0aW9uYWxbS2V5U2hhcmVFbnRyeV0gPSBOb25lCisgICAg
cHJlX3NoYXJlZF9rZXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3VwcG9ydGVkX3ZlcnNp
b246IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBs
ZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVs
bF9zZXJ2ZXJfaGVsbG8oYnVmOiBCdWZmZXIpIC0+IFNlcnZlckhlbGxvOgorICAgIGFzc2VydCBi
dWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hFTExPCisgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50MTYoKSA9PSBU
TFNfVkVSU0lPTl8xXzIKKyAgICAgICAgc2VydmVyX3JhbmRvbSA9IGJ1Zi5wdWxsX2J5dGVzKDMy
KQorCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209c2Vy
dmVyX3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAxKSwK
KyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwKKyAgICAgICAgICAg
IGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAorICAgICAgICApCisKKyAgICAg
ICAgIyBleHRlbnNpb25zCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6Cisg
ICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgorICAgICAg
ICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxfdWludDE2KCkKKyAg
ICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkU6
CisgICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlfc2hhcmUoYnVmKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBSRV9TSEFS
RURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5ID0gYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVsbG8ub3RoZXJf
ZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwg
YnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGhl
bGxvCisKKworZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBoZWxsbzogU2VydmVy
SGVsbG8pIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5TRVJWRVJf
SEVMTE8pCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihUTFNfVkVSU0lPTl8xXzIpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGhlbGxvLnJhbmRv
bSkKKworICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5jaXBoZXJfc3VpdGUpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQ4KGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCkKKworICAgICAgICAjIGV4dGVuc2lvbnMK
KyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICBpZiBoZWxsby5z
dXBwb3J0ZWRfdmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hf
ZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lPTlMpOgorICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24pCisK
KyAgICAgICAgICAgIGlmIGhlbGxvLmtleV9zaGFyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkUpOgor
ICAgICAgICAgICAgICAgICAgICBwdXNoX2tleV9zaGFyZShidWYsIGhlbGxvLmtleV9zaGFyZSkK
KworICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFJFX1NI
QVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8ucHJl
X3NoYXJlZF9rZXkpCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9u
X3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgd2l0aCBw
dXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIE5l
d1Nlc3Npb25UaWNrZXQ6CisgICAgdGlja2V0X2xpZmV0aW1lOiBpbnQgPSAwCisgICAgdGlja2V0
X2FnZV9hZGQ6IGludCA9IDAKKyAgICB0aWNrZXRfbm9uY2U6IGJ5dGVzID0gYiIiCisgICAgdGlj
a2V0OiBieXRlcyA9IGIiIgorCisgICAgIyBleHRlbnNpb25zCisgICAgbWF4X2Vhcmx5X2RhdGFf
c2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1
cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBw
dWxsX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlcikgLT4gTmV3U2Vzc2lvblRpY2tldDoK
KyAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KCkKKworICAgIGFzc2Vy
dCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUCisg
ICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50
aWNrZXRfbGlmZXRpbWUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vzc2lvbl90
aWNrZXQudGlja2V0X2FnZV9hZGQgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vz
c2lvbl90aWNrZXQudGlja2V0X25vbmNlID0gcHVsbF9vcGFxdWUoYnVmLCAxKQorICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0ID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorCisgICAgICAg
IGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fdHlw
ZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVm
LnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lv
blR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhl
eHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0
KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gbmV3X3Nlc3Npb25fdGlja2V0
CisKKworZGVmIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZjogQnVmZmVyLCBuZXdfc2Vzc2lv
bl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgo
SGFuZHNoYWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQpCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0
X2xpZmV0aW1lKQorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0LnRp
Y2tldF9hZ2VfYWRkKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIG5ld19zZXNzaW9uX3Rp
Y2tldC50aWNrZXRfbm9uY2UpCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgbmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldCkKKworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAg
ICAgICAgICAgIGlmIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNp
b25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MzIo
bmV3X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUpCisKKyAgICAgICAgICAgIGZv
ciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIG5ld19zZXNzaW9uX3RpY2tldC5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBFbmNyeXB0ZWRFeHRlbnNpb25z
OgorICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgZWFybHlfZGF0
YTogYm9vbCA9IEZhbHNlCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwg
Ynl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVmZmVyKSAtPiBFbmNyeXB0ZWRFeHRlbnNpb25zOgorICAg
IGV4dGVuc2lvbnMgPSBFbmNyeXB0ZWRFeHRlbnNpb25zKCkKKworICAgIGFzc2VydCBidWYucHVs
bF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlMKKyAgICB3aXRo
IHB1bGxfYmxvY2soYnVmLCAzKToKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBO
b25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAg
ICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFMUE46CisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAg
ICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAg
ICAgICAgKVswXQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5lYXJseV9kYXRhID0g
VHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLm90aGVy
X2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUs
IGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVybiBl
eHRlbnNpb25zCisKKworZGVmIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmOiBCdWZmZXIs
IGV4dGVuc2lvbnM6IEVuY3J5cHRlZEV4dGVuc2lvbnMpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hf
dWludDgoSGFuZHNoYWtlVHlwZS5FTkNSWVBURURfRVhURU5TSU9OUykKKyAgICB3aXRoIHB1c2hf
YmxvY2soYnVmLCAzKToKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAg
ICAgICBpZiBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuQUxQTik6CisgICAg
ICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0
aWFsKHB1c2hfYWxwbl9wcm90b2NvbCwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtl
eHRlbnNpb25zLmFscG5fcHJvdG9jb2xdLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbnMuZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHB1
c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAg
ICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lv
bl92YWx1ZSBpbiBleHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0NlcnRpZmljYXRlRW50
cnkgPSBUdXBsZVtieXRlcywgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgQ2VydGlmaWNh
dGU6CisgICAgcmVxdWVzdF9jb250ZXh0OiBieXRlcyA9IGIiIgorICAgIGNlcnRpZmljYXRlczog
TGlzdFtDZXJ0aWZpY2F0ZUVudHJ5XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisK
K2RlZiBwdWxsX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZToKKyAgICBj
ZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKCkKKworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgp
ID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAz
KToKKyAgICAgICAgY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0ID0gcHVsbF9vcGFxdWUoYnVm
LCAxKQorCisgICAgICAgIGRlZiBwdWxsX2NlcnRpZmljYXRlX2VudHJ5KGJ1ZjogQnVmZmVyKSAt
PiBDZXJ0aWZpY2F0ZUVudHJ5OgorICAgICAgICAgICAgZGF0YSA9IHB1bGxfb3BhcXVlKGJ1Ziwg
MykKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgICAg
ICAgICByZXR1cm4gKGRhdGEsIGV4dGVuc2lvbnMpCisKKyAgICAgICAgY2VydGlmaWNhdGUuY2Vy
dGlmaWNhdGVzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1bGxf
Y2VydGlmaWNhdGVfZW50cnksIGJ1ZikKKyAgICAgICAgKQorCisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGUoYnVmOiBCdWZmZXIsIGNlcnRpZmljYXRlOiBD
ZXJ0aWZpY2F0ZSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNF
UlRJRklDQVRFKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBwdXNoX29w
YXF1ZShidWYsIDEsIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCkKKworICAgICAgICBkZWYg
cHVzaF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZlciwgZW50cnk6IENlcnRpZmljYXRlRW50
cnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDMsIGVudHJ5WzBdKQor
ICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVsxXSkKKworICAgICAgICBwdXNo
X2xpc3QoCisgICAgICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVzaF9jZXJ0aWZpY2F0ZV9lbnRy
eSwgYnVmKSwgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzCisgICAgICAgICkKKworCitAZGF0YWNs
YXNzCitjbGFzcyBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhbGdvcml0aG06IGludAorICAgIHNp
Z25hdHVyZTogYnl0ZXMKKworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZm
ZXIpIC0+IENlcnRpZmljYXRlVmVyaWZ5OgorICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09
IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGFsZ29yaXRobSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNp
Z25hdHVyZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAgIHJldHVybiBDZXJ0aWZpY2F0ZVZl
cmlmeShhbGdvcml0aG09YWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0dXJlKQorCisKK2RlZiBw
dXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlciwgdmVyaWZ5OiBDZXJ0aWZpY2F0ZVZl
cmlmeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNFUlRJRklD
QVRFX1ZFUklGWSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1
c2hfdWludDE2KHZlcmlmeS5hbGdvcml0aG0pCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
dmVyaWZ5LnNpZ25hdHVyZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBGaW5pc2hlZDoKKyAgICB2
ZXJpZnlfZGF0YTogYnl0ZXMgPSBiIiIKKworCitkZWYgcHVsbF9maW5pc2hlZChidWY6IEJ1ZmZl
cikgLT4gRmluaXNoZWQ6CisgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgpCisKKyAgICBhc3NlcnQg
YnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkZJTklTSEVECisgICAgZmluaXNoZWQu
dmVyaWZ5X2RhdGEgPSBwdWxsX29wYXF1ZShidWYsIDMpCisKKyAgICByZXR1cm4gZmluaXNoZWQK
KworCitkZWYgcHVzaF9maW5pc2hlZChidWY6IEJ1ZmZlciwgZmluaXNoZWQ6IEZpbmlzaGVkKSAt
PiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRklOSVNIRUQpCisgICAg
cHVzaF9vcGFxdWUoYnVmLCAzLCBmaW5pc2hlZC52ZXJpZnlfZGF0YSkKKworCisjIENPTlRFWFQK
KworCitjbGFzcyBLZXlTY2hlZHVsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZSk6CisgICAgICAgIHNlbGYuYWxnb3JpdGhtID0gY2lwaGVyX3N1aXRl
X2hhc2goY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhlcl9z
dWl0ZQorICAgICAgICBzZWxmLmdlbmVyYXRpb24gPSAwCisgICAgICAgIHNlbGYuaGFzaCA9IGhh
c2hlcy5IYXNoKHNlbGYuYWxnb3JpdGhtLCBkZWZhdWx0X2JhY2tlbmQoKSkKKyAgICAgICAgc2Vs
Zi5oYXNoX2VtcHR5X3ZhbHVlID0gc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6ZSgpCisgICAgICAg
IHNlbGYuc2VjcmV0ID0gYnl0ZXMoc2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUpCisKKyAgICBk
ZWYgY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZiwgY29udGV4dF9zdHJpbmc6IGJ5dGVzKSAt
PiBieXRlczoKKyAgICAgICAgcmV0dXJuIGIiICIgKiA2NCArIGNvbnRleHRfc3RyaW5nICsgYiJc
eDAwIiArIHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorCisgICAgZGVmIGZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYsIHNlY3JldDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICBobWFjX2tl
eSA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLAorICAgICAgICAgICAgc2VjcmV0PXNlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWIiZmlu
aXNoZWQiLAorICAgICAgICAgICAgaGFzaF92YWx1ZT1iIiIsCisgICAgICAgICAgICBsZW5ndGg9
c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAgICAgICBoID0gaG1h
Yy5ITUFDKGhtYWNfa2V5LCBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sIGJhY2tlbmQ9ZGVmYXVs
dF9iYWNrZW5kKCkpCisgICAgICAgIGgudXBkYXRlKHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisgICAgZGVmIGRlcml2ZV9zZWNyZXQo
c2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJuIGhrZGZfZXhwYW5k
X2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAgICAg
ICAgc2VjcmV0PXNlbGYuc2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9bGFiZWwsCisgICAgICAg
ICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKSwKKyAgICAgICAgICAg
IGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisgICAgZGVm
IGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAtPiBO
b25lOgorICAgICAgICBpZiBrZXlfbWF0ZXJpYWwgaXMgTm9uZToKKyAgICAgICAgICAgIGtleV9t
YXRlcmlhbCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQorCisgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc2VjcmV0ID0gaGtkZl9leHBhbmRf
bGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAg
ICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgICAgICBsYWJlbD1iImRl
cml2ZWQiLAorICAgICAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNoX2VtcHR5X3ZhbHVl
LAorICAgICAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdlbmVyYXRpb24gKz0gMQorICAgICAgICBzZWxm
LnNlY3JldCA9IGhrZGZfZXh0cmFjdCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29y
aXRobSwgc2FsdD1zZWxmLnNlY3JldCwga2V5X21hdGVyaWFsPWtleV9tYXRlcmlhbAorICAgICAg
ICApCisKKyAgICBkZWYgdXBkYXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuaGFzaC51cGRhdGUoZGF0YSkKKworCitjbGFzcyBLZXlTY2hlZHVsZVByb3h5
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGVzOiBMaXN0W0NpcGhlclN1aXRl
XSk6CisgICAgICAgIHNlbGYuX19zY2hlZHVsZXMgPSBkaWN0KG1hcChsYW1iZGEgYzogKGMsIEtl
eVNjaGVkdWxlKGMpKSwgY2lwaGVyX3N1aXRlcykpCisKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBr
ZXlfbWF0ZXJpYWw6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGZv
ciBrIGluIHNlbGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAgICBrLmV4dHJhY3Qo
a2V5X21hdGVyaWFsKQorCisgICAgZGVmIHNlbGVjdChzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhl
clN1aXRlKSAtPiBLZXlTY2hlZHVsZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zY2hlZHVsZXNb
Y2lwaGVyX3N1aXRlXQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6IGJ5dGVzKSAt
PiBOb25lOgorICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgorICAg
ICAgICAgICAgay51cGRhdGVfaGFzaChkYXRhKQorCisKK0NJUEhFUl9TVUlURVMgPSB7CisgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiBoYXNoZXMuU0hBMjU2LAorICAgIENpcGhl
clN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogaGFzaGVzLlNIQTM4NCwKKyAgICBDaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IGhhc2hlcy5TSEEyNTYsCit9CisKK1NJR05BVFVS
RV9BTEdPUklUSE1TOiBEaWN0ID0geworICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQ
MjU2UjFfU0hBMjU2OiAoTm9uZSwgaGFzaGVzLlNIQTI1NiksCisgICAgU2lnbmF0dXJlQWxnb3Jp
dGhtLkVDRFNBX1NFQ1AzODRSMV9TSEEzODQ6IChOb25lLCBoYXNoZXMuU0hBMzg0KSwKKyAgICBT
aWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMjogKE5vbmUsIGhhc2hlcy5T
SEE1MTIpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMTogKHBhZGRpbmcu
UEtDUzF2MTUsIGhhc2hlcy5TSEExKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1Mx
X1NIQTI1NjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0OiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNI
QTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTI6IChwYWRkaW5n
LlBLQ1MxdjE1LCBoYXNoZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BT
U19SU0FFX1NIQTI1NjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBMjU2KSwKKyAgICBTaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NDogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hB
Mzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTUxMjogKHBhZGRp
bmcuUFNTLCBoYXNoZXMuU0hBNTEyKSwKK30KKworR1JPVVBfVE9fQ1VSVkU6IERpY3QgPSB7Cisg
ICAgR3JvdXAuU0VDUDI1NlIxOiBlYy5TRUNQMjU2UjEsCisgICAgR3JvdXAuU0VDUDM4NFIxOiBl
Yy5TRUNQMzg0UjEsCisgICAgR3JvdXAuU0VDUDUyMVIxOiBlYy5TRUNQNTIxUjEsCit9CitDVVJW
RV9UT19HUk9VUCA9IGRpY3QoKHYsIGspIGZvciBrLCB2IGluIEdST1VQX1RPX0NVUlZFLml0ZW1z
KCkpCisKKworZGVmIGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUp
IC0+IGhhc2hlcy5IYXNoQWxnb3JpdGhtOgorICAgIHJldHVybiBDSVBIRVJfU1VJVEVTW2NpcGhl
cl9zdWl0ZV0oKQorCisKK2RlZiBkZWNvZGVfcHVibGljX2tleSgKKyAgICBrZXlfc2hhcmU6IEtl
eVNoYXJlRW50cnksCispIC0+IFVuaW9uW2VjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUx
OS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleSwgTm9uZV06CisgICAgaWYga2V5
X3NoYXJlWzBdID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgcmV0dXJuIHgyNTUxOS5YMjU1MTlQ
dWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3No
YXJlWzBdID09IEdyb3VwLlg0NDg6CisgICAgICAgIHJldHVybiB4NDQ4Llg0NDhQdWJsaWNLZXku
ZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3NoYXJlWzBdIGlu
IEdST1VQX1RPX0NVUlZFOgorICAgICAgICByZXR1cm4gZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tl
eS5mcm9tX2VuY29kZWRfcG9pbnQoCisgICAgICAgICAgICBHUk9VUF9UT19DVVJWRVtrZXlfc2hh
cmVbMF1dKCksIGtleV9zaGFyZVsxXQorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworCitkZWYgZW5jb2RlX3B1YmxpY19rZXkoCisgICAgcHVibGljX2tleTogVW5p
b25bCisgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUxOS5YMjU1MTlQdWJs
aWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgIF0KKykgLT4gS2V5U2hhcmVFbnRyeToKKyAg
ICBpZiBpc2luc3RhbmNlKHB1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAg
ICAgICByZXR1cm4gKEdyb3VwLlgyNTUxOSwgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2Rp
bmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkKKyAgICBlbGlmIGlzaW5zdGFuY2UocHVibGljX2tl
eSwgeDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgcmV0dXJuIChHcm91cC5YNDQ4LCBwdWJs
aWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1hdC5SYXcpKQorICAg
IHJldHVybiAoCisgICAgICAgIENVUlZFX1RPX0dST1VQW3B1YmxpY19rZXkuY3VydmUuX19jbGFz
c19fXSwKKyAgICAgICAgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuWDk2MiwgUHVi
bGljRm9ybWF0LlVuY29tcHJlc3NlZFBvaW50KSwKKyAgICApCisKKworZGVmIG5lZ290aWF0ZSgK
KyAgICBzdXBwb3J0ZWQ6IExpc3RbVF0sIG9mZmVyZWQ6IE9wdGlvbmFsW0xpc3RbQW55XV0sIGV4
YzogT3B0aW9uYWxbQWxlcnRdID0gTm9uZQorKSAtPiBUOgorICAgIGlmIG9mZmVyZWQgaXMgbm90
IE5vbmU6CisgICAgICAgIGZvciBjIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIGlmIGMgaW4g
b2ZmZXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYworCisgICAgaWYgZXhjIGlzIG5vdCBO
b25lOgorICAgICAgICByYWlzZSBleGMKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBzaWduYXR1
cmVfYWxnb3JpdGhtX3BhcmFtcygKKyAgICBzaWduYXR1cmVfYWxnb3JpdGhtOiBpbnQsCispIC0+
IFVuaW9uW1R1cGxlW2VjLkVDRFNBXSwgVHVwbGVbcGFkZGluZy5Bc3ltbWV0cmljUGFkZGluZywg
aGFzaGVzLkhhc2hBbGdvcml0aG1dXToKKyAgICBwYWRkaW5nX2NscywgYWxnb3JpdGhtX2NscyA9
IFNJR05BVFVSRV9BTEdPUklUSE1TW3NpZ25hdHVyZV9hbGdvcml0aG1dCisgICAgYWxnb3JpdGht
ID0gYWxnb3JpdGhtX2NscygpCisgICAgaWYgcGFkZGluZ19jbHMgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIChlYy5FQ0RTQShhbGdvcml0aG0pLCkKKyAgICBlbGlmIHBhZGRpbmdfY2xzID09IHBh
ZGRpbmcuUFNTOgorICAgICAgICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xzKAorICAgICAgICAg
ICAgbWdmPXBhZGRpbmcuTUdGMShhbGdvcml0aG0pLCBzYWx0X2xlbmd0aD1hbGdvcml0aG0uZGln
ZXN0X3NpemUKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHBhZGRpbmdfb2JqID0gcGFk
ZGluZ19jbHMoKQorICAgIHJldHVybiBwYWRkaW5nX29iaiwgYWxnb3JpdGhtCisKKworQGNvbnRl
eHRtYW5hZ2VyCitkZWYgcHVzaF9tZXNzYWdlKAorICAgIGtleV9zY2hlZHVsZTogVW5pb25bS2V5
U2NoZWR1bGUsIEtleVNjaGVkdWxlUHJveHldLCBidWY6IEJ1ZmZlcgorKSAtPiBHZW5lcmF0b3I6
CisgICAgaGFzaF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICB5aWVsZAorICAgIGtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChidWYuZGF0YV9zbGljZShoYXNoX3N0YXJ0LCBidWYudGVsbCgpKSkKKwor
CisjIGNhbGxiYWNrIHR5cGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgU2Vzc2lvblRpY2tldDoK
KyAgICAiIiIKKyAgICBBIFRMUyBzZXNzaW9uIHRpY2tldCBmb3Igc2Vzc2lvbiByZXN1bXB0aW9u
LgorICAgICIiIgorCisgICAgYWdlX2FkZDogaW50CisgICAgY2lwaGVyX3N1aXRlOiBDaXBoZXJT
dWl0ZQorICAgIG5vdF92YWxpZF9hZnRlcjogZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICBub3RfdmFs
aWRfYmVmb3JlOiBkYXRldGltZS5kYXRldGltZQorICAgIHJlc3VtcHRpb25fc2VjcmV0OiBieXRl
cworICAgIHNlcnZlcl9uYW1lOiBzdHIKKyAgICB0aWNrZXQ6IGJ5dGVzCisKKyAgICBtYXhfZWFy
bHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVyX2V4dGVuc2lvbnM6
IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
bm93ID0gdXRjbm93KCkKKyAgICAgICAgcmV0dXJuIG5vdyA+PSBzZWxmLm5vdF92YWxpZF9iZWZv
cmUgYW5kIG5vdyA8PSBzZWxmLm5vdF92YWxpZF9hZnRlcgorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIG9iZnVzY2F0ZWRfYWdlKHNlbGYpIC0+IGludDoKKyAgICAgICAgYWdlID0gaW50KCh1dGNu
b3coKSAtIHNlbGYubm90X3ZhbGlkX2JlZm9yZSkudG90YWxfc2Vjb25kcygpKQorICAgICAgICBy
ZXR1cm4gKGFnZSArIHNlbGYuYWdlX2FkZCkgJSAoMSA8PCAzMikKKworCitBbHBuSGFuZGxlciA9
IENhbGxhYmxlW1tzdHJdLCBOb25lXQorU2Vzc2lvblRpY2tldEZldGNoZXIgPSBDYWxsYWJsZVtb
Ynl0ZXNdLCBPcHRpb25hbFtTZXNzaW9uVGlja2V0XV0KK1Nlc3Npb25UaWNrZXRIYW5kbGVyID0g
Q2FsbGFibGVbW1Nlc3Npb25UaWNrZXRdLCBOb25lXQorCisKK2NsYXNzIENvbnRleHQ6CisgICAg
ZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGllbnQ6IGJvb2wsCisg
ICAgICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0gTm9uZSwKKyAgICAg
ICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICAgICBjYWZpbGU6IE9wdGlv
bmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICBsb2dnZXI6IE9wdGlvbmFsW1VuaW9uW2xvZ2dpbmcuTG9nZ2VyLCBsb2dnaW5nLkxv
Z2dlckFkYXB0ZXJdXSA9IE5vbmUsCisgICAgICAgIG1heF9lYXJseV9kYXRhOiBPcHRpb25hbFtp
bnRdID0gTm9uZSwKKyAgICAgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgKToKKyAgICAg
ICAgIyBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2FscG5fcHJvdG9jb2xzID0gYWxwbl9w
cm90b2NvbHMKKyAgICAgICAgc2VsZi5fY2FkYXRhID0gY2FkYXRhCisgICAgICAgIHNlbGYuX2Nh
ZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLl9jYXBhdGggPSBjYXBhdGgKKyAgICAgICAgc2Vs
Zi5jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25lCisgICAgICAg
IHNlbGYuY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBbXQorICAg
ICAgICBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5OiBPcHRpb25hbFsKKyAgICAgICAgICAg
IFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleSwgcnNh
LlJTQVByaXZhdGVLZXldCisgICAgICAgIF0gPSBOb25lCisgICAgICAgIHNlbGYuaGFuZHNoYWtl
X2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IFtdCisgICAgICAgIHNlbGYuX21heF9lYXJs
eV9kYXRhID0gbWF4X2Vhcmx5X2RhdGEKKyAgICAgICAgc2VsZi5zZXNzaW9uX3RpY2tldDogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0g
c2VydmVyX25hbWUKKyAgICAgICAgaWYgdmVyaWZ5X21vZGUgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHZlcmlmeV9tb2RlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVEIGlmIGlzX2NsaWVu
dCBlbHNlIHNzbC5DRVJUX05PTkUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxm
LmFscG5fY2I6IE9wdGlvbmFsW0FscG5IYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5nZXRf
c2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUK
KyAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRIYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2I6IENh
bGxhYmxlWworICAgICAgICAgICAgW0RpcmVjdGlvbiwgRXBvY2gsIENpcGhlclN1aXRlLCBieXRl
c10sIE5vbmUKKyAgICAgICAgXSA9IGxhbWJkYSBkLCBlLCBjLCBzOiBOb25lCisKKyAgICAgICAg
IyBzdXBwb3J0ZWQgcGFyYW1ldGVycworICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzID0gWwor
ICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgQ2lwaGVyU3VpdGUu
Q0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICBdCisgICAgICAgIHNlbGYuX2NvbXBy
ZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XSA9IFtDb21wcmVzc2lvbk1ldGhvZC5OVUxMXQorICAg
ICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBMaXN0W2ludF0gPSBbUHNrS2V5RXhj
aGFuZ2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZV9hbGdvcml0aG1z
OiBMaXN0W2ludF0gPSBbCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19S
U0FFX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2
UjFfU0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAg
ICAgIF0KKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3VwcyA9IFtHcm91cC5TRUNQMjU2UjFd
CisgICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLngyNTUxOV9zdXBwb3J0ZWQoKToKKyAgICAg
ICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAg
ICAgaWYgZGVmYXVsdF9iYWNrZW5kKCkueDQ0OF9zdXBwb3J0ZWQoKToKKyAgICAgICAgICAgIHNl
bGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlg0NDgpCisgICAgICAgIHNlbGYuX3N1
cHBvcnRlZF92ZXJzaW9ucyA9IFtUTFNfVkVSU0lPTl8xXzNdCisKKyAgICAgICAgIyBzdGF0ZQor
ICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGU6IE9wdGlvbmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNlaXZl
ZF9leHRlbnNpb25zOiBPcHRpb25hbFtMaXN0W0V4dGVuc2lvbl1dID0gTm9uZQorICAgICAgICBz
ZWxmLl9rZXlfc2NoZWR1bGVfcHNrOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eTogT3B0aW9uYWxbS2V5U2NoZWR1bGVQcm94eV0g
PSBOb25lCisgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbTmV3U2Vz
c2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGU6IE9wdGlv
bmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmlj
YXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10KKyAgICAgICAgc2VsZi5fcmVj
ZWl2ZV9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fZW5jX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBz
ZWxmLl9kZWNfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYuX19sb2dn
ZXIgPSBsb2dnZXIKKworICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleTogT3B0aW9uYWxbZWMu
RWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxmLl94MjU1MTlfcHJp
dmF0ZV9rZXk6IE9wdGlvbmFsW3gyNTUxOS5YMjU1MTlQcml2YXRlS2V5XSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleTogT3B0aW9uYWxbeDQ0OC5YNDQ4UHJpdmF0ZUtleV0g
PSBOb25lCisKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAgICAgICAgICAgc2VsZi5jbGllbnRf
cmFuZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IG9z
LnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuQ0xJRU5UX0hBTkRT
SEFLRV9TVEFSVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbGllbnRfcmFuZG9t
ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQorICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXN1bWVkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBzdWNjZXNz
ZnVsbHkgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zZXNzaW9uX3Jl
c3VtZWQKKworICAgIGRlZiBoYW5kbGVfbWVzc2FnZSgKKyAgICAgICAgc2VsZiwgaW5wdXRfZGF0
YTogYnl0ZXMsIG91dHB1dF9idWY6IERpY3RbRXBvY2gsIEJ1ZmZlcl0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVDoK
KyAgICAgICAgICAgIHNlbGYuX2NsaWVudF9zZW5kX2hlbGxvKG91dHB1dF9idWZbRXBvY2guSU5J
VElBTF0pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZl
ciArPSBpbnB1dF9kYXRhCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9yZWNlaXZlX2J1ZmZlcikg
Pj0gNDoKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIG1lc3NhZ2UgbGVuZ3RoCisgICAgICAgICAg
ICBtZXNzYWdlX3R5cGUgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclswXQorICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAwCisgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLl9yZWNlaXZlX2J1ZmZl
clsxOjRdOgorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoID0gKG1lc3NhZ2VfbGVuZ3Ro
IDw8IDgpIHwgYgorICAgICAgICAgICAgbWVzc2FnZV9sZW5ndGggKz0gNAorCisgICAgICAgICAg
ICAjIGNoZWNrIG1lc3NhZ2UgaXMgY29tcGxldGUKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9y
ZWNlaXZlX2J1ZmZlcikgPCBtZXNzYWdlX2xlbmd0aDoKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfYnVmZmVyWzptZXNzYWdlX2xlbmd0
aF0KKyAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyID0gc2VsZi5fcmVjZWl2ZV9idWZm
ZXJbbWVzc2FnZV9sZW5ndGg6XQorCisgICAgICAgICAgICBpbnB1dF9idWYgPSBCdWZmZXIoZGF0
YT1tZXNzYWdlKQorCisgICAgICAgICAgICAjIGNsaWVudCBzdGF0ZXMKKworICAgICAgICAgICAg
aWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTzoKKyAgICAg
ICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5TRVJWRVJfSEVMTE86
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfaGVsbG8oaW5wdXRfYnVm
LCBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAg
IGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJ
T05TOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkVO
Q1JZUFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFu
ZGxlX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAg
ICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlw
ZSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgY2VydGlmaWNhdGUgcmVx
dWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisg
ICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJ
Q0FURV9WRVJJRlk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFr
ZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGll
bnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1dF9idWYpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNI
RUQ6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRklO
SVNIRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZmluaXNoZWQo
aW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFLRV0pCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5ORVdf
U0VTU0lPTl9USUNLRVQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVf
bmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAg
ICAgICMgc2VydmVyIHN0YXRlcworCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3Rh
dGUuU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE86CisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZltFcG9jaC5JTklUSUFM
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guSEFORFNIQUtFXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guT05FX1JUVF0sCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYu
c3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICBp
ZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZb
RXBvY2guT05FX1JUVF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0
YXRlID09IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRToKKyAgICAgICAgICAgICAgICByYWlz
ZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAgICAgIGFzc2VydCBpbnB1dF9idWYu
ZW9mKCkKKworICAgIGRlZiBfYnVpbGRfc2Vzc2lvbl90aWNrZXQoCisgICAgICAgIHNlbGYsIG5l
d19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldAorICAgICkgLT4gU2Vzc2lvblRpY2tl
dDoKKyAgICAgICAgcmVzdW1wdGlvbl9tYXN0ZXJfc2VjcmV0ID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZGVyaXZlX3NlY3JldChiInJlcyBtYXN0ZXIiKQorICAgICAgICByZXN1bXB0aW9uX3NlY3JldCA9
IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYua2V5X3NjaGVk
dWxlLmFsZ29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1yZXN1bXB0aW9uX21hc3Rlcl9zZWNy
ZXQsCisgICAgICAgICAgICBsYWJlbD1iInJlc3VtcHRpb24iLAorICAgICAgICAgICAgaGFzaF92
YWx1ZT1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlLAorICAgICAgICAgICAgbGVuZ3Ro
PXNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisg
ICAgICAgIHRpbWVzdGFtcCA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBTZXNzaW9uVGlja2V0
KAorICAgICAgICAgICAgYWdlX2FkZD1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQs
CisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRl
LAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1uZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgIG5vdF92YWxpZF9hZnRlcj10aW1lc3RhbXAK
KyAgICAgICAgICAgICsgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bmV3X3Nlc3Npb25fdGlj
a2V0LnRpY2tldF9saWZldGltZSksCisgICAgICAgICAgICBub3RfdmFsaWRfYmVmb3JlPXRpbWVz
dGFtcCwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0PXJlc3VtcHRpb25fc2VjcmV0LAor
ICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICB0
aWNrZXQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCwKKyAgICAgICAgKQorCisgICAgZGVmIF9j
bGllbnRfc2VuZF9oZWxsbyhzZWxmLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAg
ICAgIGtleV9zaGFyZTogTGlzdFtLZXlTaGFyZUVudHJ5XSA9IFtdCisgICAgICAgIHN1cHBvcnRl
ZF9ncm91cHM6IExpc3RbaW50XSA9IFtdCisKKyAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX3N1
cHBvcnRlZF9ncm91cHM6CisgICAgICAgICAgICBpZiBncm91cCA9PSBHcm91cC5TRUNQMjU2UjE6
CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgPSBlYy5nZW5lcmF0ZV9wcml2
YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVbR3JvdXAuU0VDUDI1
NlIxXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX2VjX3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBl
bmQoR3JvdXAuU0VDUDI1NlIxKQorICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YMjU1
MTk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5ID0geDI1NTE5Llgy
NTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX3gyNTUxOV9w
cml2YXRlX2tleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAgICAgICAgIGVs
aWYgZ3JvdXAgPT0gR3JvdXAuWDQ0ODoKKyAgICAgICAgICAgICAgICBzZWxmLl94NDQ4X3ByaXZh
dGVfa2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAg
a2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl94NDQ4X3ByaXZhdGVfa2V5
LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDQ0OCkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAuR1JFQVNFOgorICAg
ICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoKEdyb3VwLkdSRUFTRSwgYiJceDAwIikpCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3JvdXAuR1JFQVNFKQorCisg
ICAgICAgIGFzc2VydCBsZW4oa2V5X3NoYXJlKSwgIm5vIGtleSBzaGFyZSBlbnRyaWVzIgorCisg
ICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209c2VsZi5jbGll
bnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNlc3Npb25faWQsCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGVzPVtpbnQoeCkgZm9yIHggaW4gc2VsZi5fY2lwaGVyX3N1aXRl
c10sCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXNlbGYuX2NvbXByZXNzaW9uX21l
dGhvZHMsCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBuX3Byb3RvY29scywK
KyAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCisgICAgICAgICAgICBwc2tfa2V5X2V4
Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAgICAgICAgICAgIGlm
IChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5v
dCBOb25lKQorICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcz1zZWxm
Ll9zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9c3Vw
cG9ydGVkX2dyb3VwcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9zdXBw
b3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNo
YWtlX2V4dGVuc2lvbnMsCisgICAgICAgICkKKworICAgICAgICAjIFBTSworICAgICAgICBpZiBz
ZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0LmlzX3ZhbGlkOgorICAg
ICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxlKHNlbGYuc2Vzc2lv
bl90aWNrZXQuY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisgICAgICAg
ICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJpdmVfc2VjcmV0KGIi
cmVzIGJpbmRlciIpCisgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5fa2V5X3NjaGVk
dWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgIyB1cGRhdGUgaGVs
bG8KKyAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9kYXRhID0gVHJ1ZQor
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKKyAgICAgICAg
ICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2Vzc2lvbl90
aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRfYWdlKQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMoYmluZGVyX2xlbmd0
aCldLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlcmlhbGl6ZSBoZWxsbyB3aXRo
b3V0IGJpbmRlcgorICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQor
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8pCisKKyAgICAgICAg
ICAgICMgY2FsY3VsYXRlIGJpbmRlcgorICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSB0bXBfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCisg
ICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZpbmlzaGVkX3Zlcmlm
eV9kYXRhKGJpbmRlcl9rZXkpCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5k
ZXJzWzBdID0gYmluZGVyCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0
ZV9oYXNoKAorICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0
YToKKyAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmRl
cml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
dHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAor
ICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICAgICAgICAg
IGVhcmx5X2tleSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3VpdGVzKQorICAgICAg
ICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQorCisgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0X2J1Zik6CisgICAg
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykKKworICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisKKyAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91dHB1dF9i
dWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfc2VydmVyX2hl
bGxvKGlucHV0X2J1ZikKKworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlhdGUoCisgICAg
ICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgW3BlZXJfaGVsbG8uY2lw
aGVyX3N1aXRlXSwKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiVW5zdXBwb3J0
ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8u
Y29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMKKyAgICAgICAg
YXNzZXJ0IHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaW4gc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAgIGlmIHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayBpcyBOb25lCisgICAgICAgICAgICAg
ICAgb3IgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSAhPSAwCisgICAgICAgICAgICAgICAgb3Ig
Y2lwaGVyX3N1aXRlICE9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVyX3N1aXRlCisgICAg
ICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcgor
ICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrCisg
ICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eS5z
ZWxlY3QoY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrID0gTm9u
ZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBOb25lCisKKyAgICAgICAgIyBw
ZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVi
bGljX2tleShwZWVyX2hlbGxvLmtleV9zaGFyZSkKKyAgICAgICAgc2hhcmVkX2tleTogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBl
ZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSkKKyAgICAgICAgICAgIGFuZCBz
ZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgKToKKyAgICAgICAg
ICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9w
dWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpCisgICAgICAgICAgICBhbmQgc2VsZi5feDQ0
OF9wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVk
X2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQor
ICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCBl
Yy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZh
dGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fZWNfcHJpdmF0ZV9rZXku
cHVibGljX2tleSgpLmN1cnZlLl9fY2xhc3NfXworICAgICAgICAgICAgPT0gcGVlcl9wdWJsaWNf
a2V5LmN1cnZlLl9fY2xhc3NfXworICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVkX2tleSA9
IHNlbGYuX2VjX3ByaXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5
KQorICAgICAgICBhc3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorICAgICAgICBzZWxmLmtl
eV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJh
ZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLkhB
TkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUykKKworICAgIGRl
ZiBfY2xpZW50X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmLCBpbnB1dF9idWY6IEJ1
ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZW5jcnlwdGVkX2V4dGVuc2lvbnMgPSBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRl
ZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmFscG5fcHJvdG9jb2wKKyAgICAgICAgc2VsZi5lYXJs
eV9kYXRhX2FjY2VwdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuZWFybHlfZGF0YQorICAgICAg
ICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5vdGhlcl9l
eHRlbnNpb25zCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAgIHNlbGYuYWxw
bl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmlj
X3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guSEFORFNI
QUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIg
YWNjZXB0ZWQgb3VyIFBTSyB3ZSBhcmUgZG9uZSwgb3RoZXIgd2Ugd2FudCBpdHMgY2VydGlmaWNh
dGUKKyAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkOgorICAgICAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFKQorCisgICAgZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRp
ZmljYXRlKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICBjZXJ0aWZp
Y2F0ZSA9IHB1bGxfY2VydGlmaWNhdGUoaW5wdXRfYnVmKQorCisgICAgICAgIHNlbGYuX3BlZXJf
Y2VydGlmaWNhdGUgPSB4NTA5LmxvYWRfZGVyX3g1MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbMF1bMF0sIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5k
KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluID0gWwor
ICAgICAgICAgICAgeDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1tpXVswXSwgYmFja2VuZD1kZWZhdWx0X2JhY2tl
bmQoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGNl
cnRpZmljYXRlLmNlcnRpZmljYXRlcykpCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkpCisKKyAgICBkZWYg
X2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVy
KSAtPiBOb25lOgorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1
dF9idWYpCisKKyAgICAgICAgYXNzZXJ0IHZlcmlmeS5hbGdvcml0aG0gaW4gc2VsZi5fc2lnbmF0
dXJlX2FsZ29yaXRobXMKKworICAgICAgICAjIGNoZWNrIHNpZ25hdHVyZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlLnB1YmxpY19rZXkoKS52ZXJpZnko
CisgICAgICAgICAgICAgICAgdmVyaWZ5LnNpZ25hdHVyZSwKKyAgICAgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXModmVyaWZ5LmFs
Z29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBJbnZhbGlkU2lnbmF0dXJl
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAgICAgICAjIGNoZWNr
IGNlcnRpZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3ZlcmlmeV9tb2RlICE9IHNzbC5DRVJUX05P
TkU6CisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2Fk
YXRhPXNlbGYuX2NhZGF0YSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9c2VsZi5fY2FmaWxlLAor
ICAgICAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jYXBhdGgsCisgICAgICAgICAgICAgICAgY2Vy
dGlmaWNhdGU9c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBjaGFpbj1z
ZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1l
PXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgIHNlbGYuX3NldF9z
dGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9jbGllbnRfaGFu
ZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIp
IC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisK
KyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBleHBlY3RlZF92ZXJpZnlfZGF0
YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2RlY19rZXkp
CisgICAgICAgIGlmIGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IGV4cGVjdGVkX3ZlcmlmeV9kYXRh
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKyAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgIyBwcmVwYXJl
IHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1bGUuZ2VuZXJhdGlv
biA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAgICAg
c2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRF
Q1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAgICApCisgICAgICAg
IG5leHRfZW5jX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJjIGFwIHRy
YWZmaWMiKQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3aXRoIHB1c2hfbWVz
c2FnZShzZWxmLmtleV9zY2hlZHVsZSwgb3V0cHV0X2J1Zik6CisgICAgICAgICAgICBwdXNoX2Zp
bmlzaGVkKAorICAgICAgICAgICAgICAgIG91dHB1dF9idWYsCisgICAgICAgICAgICAgICAgRmlu
aXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxl
LmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIGNvbW1pdCB0cmFmZmljIGtleQorICAgICAgICBz
ZWxmLl9lbmNfa2V5ID0gbmV4dF9lbmNfa2V5CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNf
a2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAgICAgICAgICBFcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAor
ICAgICAgICAgICAgc2VsZi5fZW5jX2tleSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3Nl
dF9zdGF0ZShTdGF0ZS5DTElFTlRfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBkZWYgX2NsaWVudF9o
YW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25l
OgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChp
bnB1dF9idWYpCisKKyAgICAgICAgIyBub3RpZnkgYXBwbGljYXRpb24KKyAgICAgICAgaWYgc2Vs
Zi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aWNrZXQg
PSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAg
ICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAgICBkZWYgX3NlcnZl
cl9oYW5kbGVfaGVsbG8oCisgICAgICAgIHNlbGYsCisgICAgICAgIGlucHV0X2J1ZjogQnVmZmVy
LAorICAgICAgICBpbml0aWFsX2J1ZjogQnVmZmVyLAorICAgICAgICBoYW5kc2hha2VfYnVmOiBC
dWZmZXIsCisgICAgICAgIG9uZXJ0dF9idWY6IEJ1ZmZlciwKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIHBlZXJfaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhpbnB1dF9idWYpCisKKyAgICAgICAg
IyBkZXRlcm1pbmUgYXBwbGljYWJsZSBzaWduYXR1cmUgYWxnb3JpdGhtcworICAgICAgICBzaWdu
YXR1cmVfYWxnb3JpdGhtczogTGlzdFtTaWduYXR1cmVBbGdvcml0aG1dID0gW10KKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LCByc2EuUlNBUHJpdmF0
ZUtleSk6CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFsKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAgICAgICBdCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0
ZV9rZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5CisgICAgICAgICkgYW5kIGlzaW5zdGFu
Y2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleS5jdXJ2ZSwgZWMuU0VDUDI1NlIxKToKKyAg
ICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zID0gW1NpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2XQorCisgICAgICAgICMgbmVnb3RpYXRlIHBhcmFtZXRlcnMKKyAg
ICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fY2lwaGVy
X3N1aXRlcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAg
ICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpLAor
ICAgICAgICApCisgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZCA9IG5lZ290aWF0ZSgKKyAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBwZWVyX2hlbGxv
LmNvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUo
Ik5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwKKyAgICAgICAgKQorICAgICAgICBw
c2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCisgICAgICAgICAgICBzZWxmLl9wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAg
ICAgICAgKQorICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtID0gbmVnb3RpYXRlKAorICAgICAg
ICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBwZWVyX2hlbGxvLnNpZ25h
dHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJObyBz
dXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAorICAgICAgICApCisgICAgICAgIHN1cHBv
cnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAg
ICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZlcnNp
b24iKSwKKyAgICAgICAgKQorCisgICAgICAgICMgbmVnb3RpYXRlIEFMUE4KKyAgICAgICAgaWYg
c2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFscG5f
bmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9hbHBuX3Byb3Rv
Y29scywKKyAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFscG5fcHJvdG9jb2xzLAorICAgICAg
ICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gY29tbW9uIEFMUE4gcHJvdG9jb2xz
IiksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAg
IHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLmNsaWVu
dF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQorICAgICAgICBzZWxmLnNlcnZlcl9yYW5kb20g
PSBvcy51cmFuZG9tKDMyKQorICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBwZWVyX2hlbGxvLnNl
c3Npb25faWQKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gcGVlcl9oZWxsby5v
dGhlcl9leHRlbnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAg
IHByZV9zaGFyZWRfa2V5ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLmdl
dF9zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBza19rZXlf
ZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBlZXJfaGVsbG8ucHJl
X3NoYXJlZF9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5w
cmVfc2hhcmVkX2tleS5pZGVudGl0aWVzKSA9PSAxCisgICAgICAgICAgICBhbmQgbGVuKHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVycykgPT0gMQorICAgICAgICApOgorICAgICAgICAg
ICAgIyBhc2sgYXBwbGljYXRpb24gdG8gZmluZCBzZXNzaW9uIHRpY2tldAorICAgICAgICAgICAg
aWRlbnRpdHkgPSBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRpZXNbMF0KKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5nZXRfc2Vzc2lvbl90aWNrZXRfY2IoaWRlbnRp
dHlbMF0pCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAg
ICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192YWxpZAorICAgICAgICAgICAgICAg
IGFuZCBzZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUgPT0gY2lwaGVyX3N1aXRlCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gS2V5U2NoZWR1bGUo
Y2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qo
c2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisKKyAgICAgICAgICAgICAgICBiaW5k
ZXJfa2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJlcyBiaW5kZXIiKQor
ICAgICAgICAgICAgICAgIGJpbmRlcl9sZW5ndGggPSBzZWxmLmtleV9zY2hlZHVsZS5hbGdvcml0
aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ID0gaW5wdXRfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICAgICAgYmluZGVyID0gaW5w
dXRfYnVmLmRhdGFfc2xpY2UoCisgICAgICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ICsgMywg
aGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRh
X3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9iaW5kZXIg
PSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShiaW5kZXJfa2V5KQorCisg
ICAgICAgICAgICAgICAgaWYgYmluZGVyICE9IGV4cGVjdGVkX2JpbmRlcjoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJQU0sgdmFsaWRhdGlvbiBmYWls
ZWQiKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goCisg
ICAgICAgICAgICAgICAgICAgIGlucHV0X2J1Zi5kYXRhX3NsaWNlKGhhc2hfb2Zmc2V0LCBoYXNo
X29mZnNldCArIDMgKyBiaW5kZXJfbGVuZ3RoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgICAgIGlmIHBlZXJfaGVsbG8u
ZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxm
LnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlv
bi5ERUNSWVBULAorICAgICAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVST19SVFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gMAorCisgICAgICAgICMgaWYgUFNLIGlz
IG5vdCB1c2VkLCBpbml0aWFsaXplIGtleSBzY2hlZHVsZQorICAgICAgICBpZiBwcmVfc2hhcmVk
X2tleSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVs
ZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5v
bmUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYu
ZGF0YSkKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAgICAgIHB1YmxpY19r
ZXk6IFVuaW9uWworICAgICAgICAgICAgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSwgeDI1NTE5
LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5CisgICAgICAgIF0KKyAgICAgICAg
c2hhcmVkX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBmb3Iga2V5X3NoYXJl
IGluIHBlZXJfaGVsbG8ua2V5X3NoYXJlOgorICAgICAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0g
ZGVjb2RlX3B1YmxpY19rZXkoa2V5X3NoYXJlKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShw
ZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUxOS5YMjU1MTlQcml2YXRlS2V5LmdlbmVy
YXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1
MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4NDQ4
Llg0NDhQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkg
PSB4NDQ4Llg0NDhQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNf
a2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAg
ICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5leGNoYW5nZShwZWVyX3B1Ymxp
Y19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVfcHJpdmF0ZV9rZXkoCisg
ICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVswXV0oKSwgZGVmYXVs
dF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcHVibGljX2tl
eSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNo
YXJlZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJf
cHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBhc3NlcnQgc2hhcmVk
X2tleSBpcyBub3QgTm9uZQorCisgICAgICAgICMgc2VuZCBoZWxsbworICAgICAgICBoZWxsbyA9
IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYuc2VydmVyX3JhbmRvbSwKKyAg
ICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAorICAgICAgICAgICAgY2lwaGVy
X3N1aXRlPWNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1jb21w
cmVzc2lvbl9tZXRob2QsCisgICAgICAgICAgICBrZXlfc2hhcmU9ZW5jb2RlX3B1YmxpY19rZXko
cHVibGljX2tleSksCisgICAgICAgICAgICBwcmVfc2hhcmVkX2tleT1wcmVfc2hhcmVkX2tleSwK
KyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXN1cHBvcnRlZF92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBpbml0aWFs
X2J1Zik6CisgICAgICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhpbml0aWFsX2J1ZiwgaGVsbG8p
CisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tleSkKKworICAgICAg
ICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24u
RU5DUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rp
b24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQor
CisgICAgICAgICMgc2VuZCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hf
bWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYs
CisgICAgICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAg
ICAgYWxwbl9wcm90b2NvbD1zZWxmLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgZWFybHlfZGF0YT1zZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQsCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlz
IE5vbmU6CisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUKKyAgICAgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAg
ICAgICAgICBwdXNoX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfY29udGV4dD1iIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
aWZpY2F0ZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB1YmxpY19ieXRlcyhF
bmNvZGluZy5ERVIpLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g
W3NlbGYuY2VydGlmaWNhdGVdICsgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgc2VuZCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgICAgIHNp
Z25hdHVyZSA9IHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuc2lnbigKKyAgICAgICAgICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAg
ICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXMo
c2lnbmF0dXJlX2FsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHB1
c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAg
ICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoCisgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlVmVyaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNpZ25hdHVyZV9hbGdvcml0aG0sIHNpZ25hdHVy
ZT1zaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYu
a2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZmluaXNoZWQo
CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICBGaW5pc2hl
ZCgKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X2RhdGE9c2VsZi5rZXlfc2NoZWR1bGUuZmlu
aXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZW5jX2tleSkKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgcHJlcGFyZSB0cmFmZmljIGtleXMKKyAgICAgICAgYXNz
ZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVyYXRpb24gPT0gMgorICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVj
dGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMg
YXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBzZWxm
LmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBhcCB0cmFmZmljIikKKworICAgICAgICAj
IGFudGljaXBhdGUgY2xpZW50J3MgRklOSVNIRUQgYXMgd2UgZG9uJ3QgdXNlIGNsaWVudCBhdXRo
CisgICAgICAgIHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZmluaXNoZWRfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICBzZWxmLl9kZWNfa2V5CisgICAgICAg
ICkKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTY0KQorICAgICAgICBwdXNoX2Zpbmlz
aGVkKGJ1ZiwgRmluaXNoZWQodmVyaWZ5X2RhdGE9c2VsZi5fZXhwZWN0ZWRfdmVyaWZ5X2RhdGEp
KQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYuZGF0YSkKKworICAg
ICAgICAjIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgICAgICBpZiBzZWxmLm5ld19z
ZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZSBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vz
c2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCisgICAg
ICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9c3RydWN0LnVucGFjaygiSSIsIG9zLnVyYW5kb20o
NCkpWzBdLAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1iIiIsCisgICAgICAgICAgICAg
ICAgdGlja2V0PW9zLnVyYW5kb20oNjQpLAorICAgICAgICAgICAgICAgIG1heF9lYXJseV9kYXRh
X3NpemU9c2VsZi5fbWF4X2Vhcmx5X2RhdGEsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgc2VuZCBtZXNzc2FnZQorICAgICAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQob25l
cnR0X2J1Ziwgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorCisgICAgICAgICAgICAjIG5vdGlm
eSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgdGlja2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90
aWNrZXQoc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICAgICAgc2VsZi5uZXdfc2Vz
c2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9zZXJ2ZXJfaGFuZGxlX2ZpbmlzaGVk
KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6Cisg
ICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisKKyAgICAgICAgIyBj
aGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBzZWxm
Ll9leHBlY3RlZF92ZXJpZnlfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVy
cm9yCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAgICAgc2VsZi5fZGVjX2tl
eSA9IHNlbGYuX25leHRfZGVjX2tleQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBOb25l
CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0
aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICBFcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgc2VsZi5fZGVjX2tleSwK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5TRVJWRVJfUE9TVF9I
QU5EU0hBS0UpCisKKyAgICBkZWYgX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAg
c2VsZiwgZGlyZWN0aW9uOiBEaXJlY3Rpb24sIGVwb2NoOiBFcG9jaCwgbGFiZWw6IGJ5dGVzCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBrZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2Vj
cmV0KGxhYmVsKQorCisgICAgICAgIGlmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRU5DUllQVDoK
KyAgICAgICAgICAgIHNlbGYuX2VuY19rZXkgPSBrZXkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2RlY19rZXkgPSBrZXkKKworICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tl
eV9jYigKKyAgICAgICAgICAgIGRpcmVjdGlvbiwgZXBvY2gsIHNlbGYua2V5X3NjaGVkdWxlLmNp
cGhlcl9zdWl0ZSwga2V5CisgICAgICAgICkKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0
YXRlOiBTdGF0ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fX2xvZ2dlcjoKKyAgICAgICAg
ICAgIHNlbGYuX19sb2dnZXIuZGVidWcoIlRMUyAlcyAtPiAlcyIsIHNlbGYuc3RhdGUsIHN0YXRl
KQorICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93M2Mt
aW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiMGNlZTQ2NjEzNDJmZWU0ZWMwMzFjMDYyZjkzNTc0
NzBjNWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjUgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvX2NyeXB0by5jCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5p
dGlhbF9jbGllbnQuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2I3MDU1Y2RhYWNhOTVlZmZiOTNlNTE5ZWNl
NWUzZWQ1M2NkNWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyODAKemNtVitiMV5AY1l7e1Iz
UDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5sO0toPTl1PWkla0IkRSUtRVliZ3djCnpvNm5Y
cC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1RT1FVzJTMGMyZWdPRVlOUXJIUiRHI01TJk5T
O1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+WnpJbyNmMVY9T3I9RHM2MldoQUJHUWFeQlpf
Ym5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYwUTxUOzZRenI4e24leilnLTA+QFd7PGRBJnAm
V3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8dUshfXYycF54fk14QHxUPzJnc3BkNnJeflpJ
Klo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdAKm4lfgp6WSZrWU8ycn1Ccyl8VXI8aTIjNk0m
cSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVKc1lNNykyMCZ1NHo3P1IKenM8JDtSdHYjTD1Y
fU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2hoUEp1VFRwbFQrKj9gdzY+c1pqc2V0c1M3Cnow
YnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRmb1NaYEh5VGkjO3FYVGErdFJAfENSJG1PYkFZ
Wnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1WkArI253eC1NNypmcHkjbyo3PG0rIWNsaj5I
WFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCReVk07N3h+dGY1ZiRfeCozTiR3WGFlQ0lxR1VU
flF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7SnxJXiV8PVZCT3FwbHJmd2ZWRDc4SWBtNzxl
XkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/I0FKJml6Tgp6clojU0U4QUFIIyVKdXApN3Rv
RmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7Vmo/NlhFQlptKVU1PEZTQUwKej1hbjJZJDBS
Q01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFpPD1iIXhTfksleGtZTGBzZlBNbG58OTh5PWNq
Cno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJGcl5MVlFQR1RecG80O1YmNDsjTWhDYFlROGhu
dzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdIdDUlNl9TKXRGOVVqN08jQTJTT0plR0VmY0I3
NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05XcUtHYEQ8Zi18anFGKCVRSU57NjElcjArSn5Y
JTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5eCnpWdkkqUF9LeGBZdmlUfHhRYEl3enArR0Fl
OFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRLckVVU3hoX31saAp6dUg/YndGViU2OXshe0ly
QkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9SKSNweiNJSy1WX0dDfCZeTn1nbkkKenRuSnMm
JnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFqZFIoS3M+e2t9P2EmfCZfMV47KEplQE0+XnV2
aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7SFkpVH4kc1NgZSRUXy1aQEp3KTF4fmkyclIk
bFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYqRi08eDFobklBNil9bWJJbGFCWG1pVHRPKGpI
KTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwlVHdsNU5TOWkmWXw5QD1HKW9NcCVsaitkUW1I
JCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhvNzwjCnp2N20kfXBRYWRnRntHKUMqKnJTbzdo
VktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6TX1Hbys/KDIqOW4xKwp6RUhwejl5YHt7ZFE8
P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZXVCEzSXwqQDRVST93JnQ/SEBjQ3N4NmUKcSl5
Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVDKjlSY1ZjTk95N0wjSTxBYjYzekh8b3cKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0
aWFsX3NlcnZlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9zZXJ2ZXIuYmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YmJiOWMwYWZmODk0NzRmZDcwMjFmNmUxYjQ0ZTA1YmExYTFjNDcKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDIwMgp6Y21WOyowNSQpP3t7UjNQMDA8ZGVYZiNlSilPaTN2eFZx
WVBxdDxHPWVzV0tQbnxBdVNWSz82eXdSNWUwVT11PDMKekZyI0VVOXV7bjxXQlAoT0U/ZXlObDcm
Rm5MQ1dhZlUwcGBHS29WTTtPV1RLc1l+IzJ9OWZDZnJEZXRGUDk8SEl8CnplYzREfmtjelJnJFV2
PWdZPX56UjliYE9VWD90X2hBeyVBZzxGVyZIKCE4ITYmP15fdXF3bElBeGZaN1Y2P0smegp6KVBK
SlI0dnxGPDdpVyp0Z0tyPTB1XkhTTlVPT0Yjdn1LUW9nJCglbkZFMXRYcn44JEl1b0UqNFF2dkcj
RmVHPmIKRWNlNzdsSk9CVXkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNl
cnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTUwYzk2MGYzNTgxNGRlZjJjMmJjNWZhZjdiZGZlYjhkYWIz
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtCkBA
IC0wLDAgKzEsOTkgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246
IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIGNiOjJkOjgwOjk5
OjVhOjY5OjUyOjViCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9u
IENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3Qg
QmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6
IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAorICAgICAgICBTdWJqZWN0OiBDPVhZLCBPPVB5dGhv
biBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFN1Ympl
Y3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3MiBiaXQpCisgICAg
ICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6OTc6ZWQ6NTU6NDE6
YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6CisgICAgICAgICAgICAgICAgICAgIGFjOjU4
OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgorICAgICAgICAgICAgICAg
ICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4ZTpkZjoKKyAgICAg
ICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6YzY6ZWM6NzA6YjA6
M2E6CisgICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2OjRjOmM0OmE3Ojgx
OmU3OmI2OjI0OjY4OgorICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZTozNTowNzoyZjphMDo1
YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKKyAgICAgICAgICAgICAgICAgICAgMTE6ZmU6Y2E6MWE6
M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6CisgICAgICAgICAgICAgICAgICAgIGUx
OmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgorICAgICAgICAgICAg
ICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1ZjozNjpmMjo3ODoKKyAg
ICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6MWI6OGQ6ZmE6MjU6
ZmU6ZDQ6CisgICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVmOmVhOjE3OmNiOjU0
OmM4OjI3Ojk5OjgwOmNiOgorICAgICAgICAgICAgICAgICAgICAzYzo0NTpmMToyYzo1MjoxYzpk
ZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKKyAgICAgICAgICAgICAgICAgICAgNTc6NzM6MWI6
NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6CisgICAgICAgICAgICAgICAgICAg
IDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4OgorICAgICAgICAg
ICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5ZTo5NTpjZTo0YzoK
KyAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6MzU6NTc6Y2U6MDI6
ZGM6ZWM6Y2E6CisgICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5OmNiOjE2OjIwOjE1
OjAzOjI0OjYxOjZjOmY0OjdhOgorICAgICAgICAgICAgICAgICAgICBmYzpiNjo0ODplNTo1OTox
MDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKKyAgICAgICAgICAgICAgICAgICAgZTk6Njg6
OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6CisgICAgICAgICAgICAgICAg
ICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBiOjY4OgorICAgICAg
ICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoyODo5NDo5Nzo3MTo1
NDoKKyAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6YzU6ZGM6MWI6OWU6
ODk6NmQ6MDk6YWM6CisgICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNiOjZkOmYxOjk3OjMx
OmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgorICAgICAgICAgICAgICAgICAgICBhMDplMDpkYzo2OTox
MTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKKyAgICAgICAgICAgICAgICAgICAgYTc6
MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6CisgICAgICAgICAgICAg
ICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCisgICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAg
ICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBE
RDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoyODpGMjozNTpCNjo0
OAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAg
ICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6MjE6Q0E6NkY6OUE6
MDg6Mjg6RjI6MzU6QjY6NDgKKworICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRz
OiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIDMzOjZhOjU0OmQzOjZiOmMwOmQ3OjAxOjVm
OjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgorICAgICAgICAgYjc6MTg6ZTk6YjA6MWU6NGE6
YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6CisgICAgICAgICAxNToxMzplNDpk
ZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToKKyAgICAgICAgIDdk
OjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3OjgwOjlhOjYzOgorICAg
ICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6Yjc6NGQ6YTc6ODQ6
Y2E6CisgICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpkZjpkNzo5OTphYjox
YjplZTo4YjozMDoKKyAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFlOjk3OmJmOmU0Ojdi
OmZkOjBmOmE3OmI0Ojg1Ojc5OgorICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6YmY6MWY6Mjk6NDU6
MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6CisgICAgICAgICBlYzoyYjo0Mjo2YTplNTpiYjpj
ODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKKyAgICAgICAgIGI4OmJmOmQ1OmY3
OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3OgorICAgICAgICAgODc6
YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6NDM6ZDM6CisgICAg
ICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3NjpmNzo3NjoxZjpiMzpm
ZToKKyAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVlOjA4OmQ4OmY0OmZm
OjVhOmRjOjI1OgorICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6NTA6NzM6NzY6MjU6
MzU6ZmM6YjY6MjU6MjY6MTU6CisgICAgICAgICBjYjplYjpjNDoyYjo2MTowYzoxYzplNzplZToy
ZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKKyAgICAgICAgIGQyOmFmOmRlOmU0OjFiOjI0OjE0
OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgorICAgICAgICAgMGE6ZTA6OGQ6ZDc6
NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6CisgICAgICAgICBjNDo5
Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTowMTowNToKKyAgICAg
ICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3OmFjOmViOjRiOjdk
OgorICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6Yzc6Zjk6NmE6NDA6
ZTE6Yjg6NjQ6CisgICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3ZDo1ODo3ZDo2NDo3
OTplNTphNDowOTphYzoxZToKKyAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4CistLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KK01JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NT
cUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9i
MjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05o
TFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgKK05ESXpNVFphTUUw
eEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1Jt
OTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZ
SktvWkkKK2h2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJG
aHo0OGFXenlzZnVBajEKK25VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNj
TEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KKzRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2Fw
WDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKK3J5WDQrRUozTFcxZk52SjRIbjFLaDJo
amJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKKzNSOVJSU0JRSGw2clYz
TWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKK3JGT2Vs
YzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1
LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRr
YzE0elNpVWwzRlUKKys4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0Rj
YVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lzV3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFB
Qm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKK05MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZS
MGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKK0RBWURWUjBUQkFVd0F3RUIv
ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRndaTm0KK2tGRFF0eGpw
c0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMK
K1NZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNi
N29zd3pQZjgKKzU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0
Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdr
ZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKK0RFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEky
UFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKK0syRU1IT2Z1THhlYjdQRFVvWVRu
MHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkKK1Q0c0R4SmFmN1B0
SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKK2p1
VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCistLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjNiZDQ5ODFhNGE2NTk2
YjUwZWM2NWVkYmQ1MWIwYjRjYTNiZWU0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjUKemNt
Vi1AMER9TVV7e1IzUDI8ZyNBKndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtEQSUrTF4qbWopfGZk
dzZINXJHCnpHSU14WV5oVlJGLTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhSUT1fREVYKnJNUz1Q
Mnc5N2tGIWg+Y1dnKW5wKQpmbkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+bXFwTFphQ1g5fWha
PwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Nob3J0X2hlYWRlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yODM2ODNkMmQ1YjU1NWQ5YjAyMzE5OTkwMmZjZWU1N2QxYjU5MzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4KQEAgLTAs
MCArMSBAQAorXfRap7WcDhrW5mj1MEzU/R+zeZMnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3MTI3YTRiMDI1YWEyMzMyMzE5
M2YwNmNmMTc3M2E1NjBlMzgxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9zc2xfY2VydC5wZW0KQEAgLTAsMCArMSwzNCBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FHU0liM0RRRUJDd1VB
TUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21V
Z1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3
MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhDekFKQmdOVkJBWVRB
bGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VHQTFVRUNnd2FVSGww
YUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2CitZMkZzYUc5
emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUo4b0x6ZEI3Mzlr
CitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdPcW5rTHBCNXRuTTgy
NTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VSaHpHRGQzZGtqVWVC
alh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4
NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllvK01kZ1pPY3krN2pF
ak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6ME9CbWg0d2VRcG00
K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpDCitXWXhIQUZwQlFz
NnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JOekV6STZiNHpVCitO
c3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUy
M1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldI
WXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRH
QTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFV
SEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6TmNBQmF6aTI5cmI5
Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCitiNW9JS1BJMXRraWhV
YVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltCitkSGRo
Y21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNvSUpB
TXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gw
ZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhK
MExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpY
TjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRvRGFnTklZeWFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2Y21WMmIyTmhkR2x2
Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5LQUMvCit1bzE3RXdQ
eEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitmUjdzS0trMjJaSFNZ
CitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJ
UEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURmcFNFTG4rdjUzT005
bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JXYm53cmwra0g4eEt4
TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkz
bFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3QXR5ZlRaU1FvRnlN
bU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJCitBWTY1Q2xUVSt6
UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0YWVUUEIxQVV2CitT
dFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29tT29pdz09CistLS0t
LUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9j
aGFpbi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwYWQ0MTY4N2UyYWZkN2EwZjk0ZDE1NjFhYmRlYTFlNWRk
NDM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRo
X2NoYWluLnBlbQpAQCAtMCwwICsxLDYwIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K
K01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1zdGdKbGFhVkpjTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4
Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05
MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9E
QTRNamt4TkRJek1UWmFGdzB5T0RBM01EY3gKK05ESXpNVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpN
UmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1
SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERD
Q0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSjhvTHpkQjczOWsKK1l4
WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9zRHoxTVQ3RGxqY1pMQkx5N09xbmtMcEI1dG5NODI1NkR3
ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZCVzJINWNNQ296N1gxN2tvZVJoekdEZDNka2pVZUJqWHZS
NXFSb3NHOHdNM2xRdWcKK1U3QWl6WSszQXphajF5TjNtWjlLNWEyMGpyNThLcWlueitYeHg2c2Iy
SmZZWWZmMm5lSmJCYWhObTVpZDBBRDIKK3BpL1R0aFpxTzVEVVJKWW8rTWRnWk9jeSs3akVqT0pz
TFdaZDNZenE3OGlNMDdxRGpicElvVnBFTlpDVEhUV0EKK2hYOExJcXowT0JtaDR3ZVFwbTQrcGxV
N0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0QUJXTzduOWZXeVNtZjlRWkMKK1dZeEhBRnBCUXM2elVW
cUFEN25oRmRUcXBROWJSaWFFbmpFNEhpQWNjUFcrTUFvU3hGbnYvck56RXpJNmI0elUKK05zcEZN
ZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5UEp5a3FFWDRQWmwzTGExQmUycTdZWjF3eWRSNTIzWGQr
ZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZSdmliMTc1TDRyMldWMUNYUUg3Z0Z3WllDb2Q2V0hZcTVU
UUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BNEdBMVVk
RHdFQi93UUVBd0lGb0RBZEJnTlYKK0hTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJ
d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEUKK0ZnUVVqK29kNHpOY0FCYXppMjlyYjlOTXk3
WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNiL0sydWJSTkxvM2RTSEsKK2I1b0lLUEkxdGtpaFVhUlBN
RTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW0KK2RIZGhjbVVn
Um05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY29JSkFNc3QK
K2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFjQkFRUjNNSFV3UEFZSUt3WUJCUVVITUFLR01HaDBkSEE2
THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNCNVkyRmpaWEowTG1O
bGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBhSFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExt
NWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3WUQKK1ZSMGZCRHd3T2pBNG9EYWdOSVl5YUhSMGNEb3ZM
M1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjAKK1kyRXZjbVYyYjJOaGRHbHZiaTVq
Y213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFDZjFqRmtROU1ibktBQy8KK3VvMTdFd1B4SEta
ZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJSNVpXY2hEQ3BWN2tDT2haK2ZSN3NLS2syMlpIU1kKK29I
K3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdXdklkM0p2YXBwZFZXa0MvVnBVeUZmTHNHVURGdUlQQURt
WlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4Sy8xbVY2R3E5TVJyUnFpRGZwU0VMbit2NTNPTTltR3Nw
d1crTloxQ0lyYkN1VzAKK0t4Wi90UGtxbjhQU2Q5Zk5aUjcwYkI3cldibndybCtrSDh4S3hMbDZx
ZGxyTW1nNzRXV3doTGVReEs3KzlEZFAKK0lhRGVuenF4NWN3V0JHWS9DMEhjUWowZ1B1eTNsU3Mx
Vi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3WFM3NWlSQXIKKytVRkdUendBdHlmVFpTUW9GeU1tTVVM
cWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExXRXN0VTFOSUIxSy9DUkk3Z0kKK0FZNjVDbFRVK3pSUy90
bEY4SUE3dHNGdmd0RWY4anNJOWthbWxpZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQQjFBVXYKK1N0UFlR
a0tOTStOanl0V0hsNXROdUJvRE5Mc2MwZ0kvV1NQaUk0Q0lZOEx3b21Pb2l3PT0KKy0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRWJUQ0NB
dFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgor
QkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZi
aUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6
TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dHUEFEQ0NB
WW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQorblV0THh6RDJ1QXV6
VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVwNEhudGlSbworNHFC
K05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVaTDF5UUFSZHVmajU5
eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9XbEY3SHY2aGZMVk1n
bm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1JVTJXSGwyb05KaHlC
dXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFWODRDM096S2FmaUtX
am5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtBSjdZL1RMSFoyMk4v
WjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgvd045N0pKc1hjRzU2
SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3cHhEWQoraXNXcUc4
Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVUzYi9LMnVi
UgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1YlJOTG8zZFNIS2I1
b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFN
MnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0RlZReEZSUGszbjVP
RE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6RFFMeVAxQ3JhUHRI
dUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2Nlh2K1I3L1ErbnRJ
VjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6WQorZlUzUnVML1Y5
eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpwazV5aUQwY1NOdgor
REVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdIUEpRYzNZbE5meTJK
U1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09yS1ZoR29ObkFDdUNO
MTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdFRml2T1NDdDJKYkpl
aHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdTbWxYODk5V0gxa2Vl
V2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5
LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGZkZWMxMDFjOGQ2NzRjNTIwN2QxMDBmNzRiNmE3MjQyNGNiNTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCkBAIC0w
LDAgKzEsNDAgQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRy9RSUJBREFOQmdr
cWhraUc5dzBCQVFFRkFBU0NCdWN3Z2diakFnRUFBb0lCZ1FDZktDODNRZTkvWkdNVworWWhicEFS
UmlLY282bUpJOUNOTmVhZjdBODlURSt3NVkzR1N3Uzh1enFwNUM2UWViWnpQTnVlZzhIWW9Ud044
NQorWjN4TTAzNi9RdzlLaFFWdGgrWERBcU0rMTllNUtIa1ljeGczZDNaSTFIZ1kxNzBlYWthTEJ2
TURONVVMb0ZPdworSXMyUHR3TTJvOWNqZDVtZlN1V3R0STYrZkNxb3A4L2w4Y2VyRzlpWDJHSDM5
cDNpV3dXb1RadVluZEFBOXFZdgorMDdZV2FqdVExRVNXS1BqSFlHVG5NdnU0eEl6aWJDMW1YZDJN
NnUvSWpOTzZnNDI2U0tGYVJEV1FreDAxZ0lWLworQ3lLczlEZ1pvZU1Ia0tadVBxWlZPeE9LK0Ev
TnJtcnFIRnNQSXNyczV3azdRQVZqdTUvWDFza3BuL1VHUWxtTQorUndCYVFVTE9zMUZhZ0ErNTRS
WFU2cVVQVzBZbWhKNHhPQjRnSEhEMXZqQUtFc1JaNy82emN4TXlPbStNMURiSworUlRINE5XalZX
cG5ZOFhhVkdkUmh0VHBIOU1qeWNwS2hGK0QyWmR5MnRRWHRxdTJHZGNNblVlZHQxM2ZuOXhEdQor
UDRQb3BoRTBpcC9JTWduK2tiNG05ZStTK0s5bGxkUWwwQis0QmNHV0FxSGVsaDJLdVUwQ0F3RUFB
UUtDQVlFQQorbEtpV0lZam15UmpkTEtVR1BURVM5dldOdk5tUmpvelYwUlEwTGNvU2JNTUxEWmtl
TzBVd3lXcU9WSFVROCtpYgorakljZkVqZU5KeEk1N29ab3BlSE9PNXZKaHBObEZIK2c3bHRpVzJx
RVJxQTFLODhsU1htOTlCenc2Rk5xaENSRQorSzh1YjVOOWZ5ZkpBK1A0by94bTBXSzhFWGs1eUlV
VjE3cC85ekpKeHpnS2d2MmpzVlRpM1FHMk9aR3ZuNE91ZworQnlvbU1aRUdIa0JEemR4ejhjL2NQ
MVRsazFSRnV3U2dld3MxNzhrMnhxN0FZU00vczBZbUhpN2IvUlN2cHRYNgorMXY4UDhrWE5VZTRB
d1RhTnlybHZGMmx3SWFkWjhoMWhBN3RDRTJuNDRiN2E3S2ZoQWt3Y2JyMVQ1OWlvWWg2UAorenhz
eVBUNjc4dUQ1MWRidEQvRFhKQ2NvZWVGT2I4dXprUjJLTmNyblF6WnBDSm5ScTRHcDV5Ynh3c3h4
dXpwcgorZ3owZ2JObGh1V3RFN0VvU3ptSUs5dCtXVFM3SU0yQ3ZaeW1kNi9PQWgxRnV3NkFRaFNw
NjRYUnAzT2ZNTUFBQworSWUyRVB0S2o0aXNsV0dUOFZvVWp1UllHbWRSaDRkdUFIMWRraUFYT1dB
M1I3eTVhMS95L2lFOEtFOEJ0eG9jQgorQW9IQkFNOGFpVVJncHUxRnMwT3F6Nml6ZWM3S1NMTDNs
OGhtVytNS1VPZmsvWWJuZzZGclRGc0w1WXR6UitBcAord1c0d3dXbm5JS0VjMUpMaVo3ZzhhZ1JF
VEs4aHI1UHdGWFVuL0dTV0MwU01zYXpMSlRveVNRUzVMT1YwdEx6Swora0ozanROVTd0bmxER05r
Q0hUSFNvVkwyVC84dCtJa1pJL2g1WjZ3amxZUHZVMkl1MG5WSVh0aUcrYWx2NEE2TQorSHJoOWw1
b3I0bWpCNnJHblZYZVlvaExrQ202cy9XOTdhaFZ4TE1jRWRic0JvMXBybTJKcUduU29pUi90RUZD
LworUUhRbmJRS0J3UURFdTdrVzBZZzlzWjg5UXRZdFZRMVlwaXhGWk9SYVVlUklSTG5wRXMxdzdM
MW1DYk9aMkxqOQorSkh4c0gwNWNZQWM3SEpmUHd3eHYzKzNhR0FJQy9kZnU0VlN3RUZ0YXRBelVw
emxoektTNStIUUNXQjRKVU5OVQorTVEzK0Z3SzJ4UVg0UGg4dCtPenJGaVljSzJnMEFuNVV4V01h
MkhXSUFXVU9oblRPeWRBVnNvSDZ5UDMxY1ZtNAorMGh4b0FCQ3dmbGFOTE5HalJVeWZCcExUQWNO
dS9ZdGNFK0tSRXk3WUFBZ1hYcmhSU080WHBMc1NYd0xuTFQ3LworWU9rb0JXRGNUV0VDZ2NCUFdu
U1VEWkNJUTNlZml0aE1aSkJjaXFkMlkyWDE5RHBxOE8zMUhJbUQ0anRPWTBWNworY1VCL3dTa2VI
QUd3amQvZUN5QTJlMHg4QjJJRWRxbU1mdnIrODZKSnhla0MzZEpZWENGdkg1V0loc0g1M1lDYQor
M2JUMUtsV0NMUDlpYi9nKzU4VlFDMFIvQ2M5VDRzZkxlUE5IN0Q1WmtaZDF3bGJWMzBDUHIraThL
d0theTZNRAoreGh2dEx4K2prMDdHRStFOXdtamJDTW83VGNseXJMb1ZFT2xxWk1BcXNoZ0FwVCtw
OWV5Q1BldHdYdURId2EzbgorV3hoSGNsY1pDVjdSNHJVQ2djQWtkR1NueGN2cElyRFBPVU5Xd3h2
bUFXVFN0dzlaYlROUDhPeENOQ205Y3lEbAorZDRiQVMxaDhEL2ErVWs3QzcwaG51N1NsMnc3QzdF
dTJ6aHdSVWRoaGUzK2w0R0lOUEsvajk5aTZOcUdQbEdwcQoreE1sTUVKNFlTNzY4QnFlS0ZwZzBs
ODVQUm9FZ1RzcGhEZW9ST1NVUHNFUGRCWjlCeElCbFlLVGtiS0VTWkRHUgordHd6WUhsangxbjFO
Q0RZUGZsbXJiMUtwWG40RU9jT2JOZ2h3MktxcU5VVVdmT2VCUHdCQTFGeHpNNEJyQVN0cAorREJJ
TnBHUzREYzBtalZpVmVnRUNnY0EzaFR0bTgyWGR4UVhqOUxRbWIvRTNsS3gvN0g4N1hJT2VOTW12
all1WgoraVM5d0tya0YrdTQydnlvRHhjS01DbnhQNTA1NndwZFNUNHA1NnIrU0J3VlRIY2MzbEdC
U0djTVRJZndSWHJqMwordGhPQTJvdXIybjRvdU5Jc1l5VGxjc1FTemlmd21wUm1WTVJQeGw5ZllW
ZEVXVWdCODNGZ0hUMEQ5YXZ2Wm5GOQordDlPY2NuR0pYU2hBSVpJQkFEaFZqL0p3RzRGYmFYNDJO
aWpENVBOcFZMazFZMTdPVjBJNTc2VDlTZmFRb0JqSgorYUgxTS96QzRhVmFTMERZQi9HeHE3djg9
CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9hc3luY2lvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDllY2Q1Zjc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpAQCAtMCww
ICsxLDM3NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHJhbmRv
bQoraW1wb3J0IHNvY2tldAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgor
ZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorCitmcm9tIGFpb3F1aWMuYXN5bmNp
by5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGlt
cG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitmcm9tIGFpb3F1aWMuYXN5bmNpby5zZXJ2ZXIg
aW1wb3J0IHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWlj
Q29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2Vy
CisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VS
VkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIFNLSVBfVEVTVFMsCisgICAg
Z2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgcnVuLAorKQorCityZWFsX3NlbmR0byA9IHNv
Y2tldC5zb2NrZXQuc2VuZHRvCisKKworZGVmIHNlbmR0b193aXRoX2xvc3Moc2VsZiwgZGF0YSwg
YWRkcj1Ob25lKToKKyAgICAiIiIKKyAgICBTaW11bGF0ZSAyNSUgcGFja2V0IGxvc3MuCisgICAg
IiIiCisgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC4yNToKKyAgICAgICAgcmVhbF9zZW5kdG8o
c2VsZiwgZGF0YSwgYWRkcikKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgaGFuZGxlX3N0cmVhbShyZWFkZXIsIHdy
aXRlcik6CisgICAgYXN5bmMgZGVmIHNlcnZlKCk6CisgICAgICAgIGRhdGEgPSBhd2FpdCByZWFk
ZXIucmVhZCgpCisgICAgICAgIHdyaXRlci53cml0ZShieXRlcyhyZXZlcnNlZChkYXRhKSkpCisg
ICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKHNl
cnZlKCkpCisKKworY2xhc3MgSGlnaExldmVsVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5zZXJ2ZXJf
aG9zdCA9ICJsb2NhbGhvc3QiCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSA0NDMzCisKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorCisgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGhvc3Q9Tm9uZSwKKyAgICAgICAgcG9ydD1O
b25lLAorICAgICAgICBjYWRhdGE9Tm9uZSwKKyAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRG
SUxFLAorICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgIHJlcXVlc3Q9YiJwaW5n
IiwKKyAgICAgICAgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBpZiBob3N0IGlzIE5vbmU6Cisg
ICAgICAgICAgICBob3N0ID0gc2VsZi5zZXJ2ZXJfaG9zdAorICAgICAgICBpZiBwb3J0IGlzIE5v
bmU6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXJfcG9ydAorICAgICAgICBpZiBjb25m
aWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZp
Z3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJp
ZnlfbG9jYXRpb25zKGNhZGF0YT1jYWRhdGEsIGNhZmlsZT1jYWZpbGUpCisgICAgICAgIGFzeW5j
IHdpdGggY29ubmVjdChob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sICoq
a3dhcmdzKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAjIHdhaXRpbmcgZm9yIGNvbm5lY3RlZCB3
aGVuIGNvbm5lY3RlZCByZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgICAgICBhd2FpdCBjbGll
bnQud2FpdF9jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0
IGNsaWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3Jp
dGVyLmNhbl93cml0ZV9lb2YoKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
d3JpdGVyLmdldF9leHRyYV9pbmZvKCJzdHJlYW1faWQiKSwgMCkKKworICAgICAgICAgICAgd3Jp
dGVyLndyaXRlKHJlcXVlc3QpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKKworICAg
ICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAgICAgICAgIyB3YWl0
aW5nIGZvciBjbG9zZWQgd2hlbiBjbG9zZWQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgICAgICBh
d2FpdCBjbGllbnQud2FpdF9jbG9zZWQoKQorCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisg
ICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBob3N0PSI6
OiIsICoqa3dhcmdzKToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklM
RSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyID0gYXdhaXQgc2VydmUoCisg
ICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICBwb3J0PXNlbGYuc2VydmVyX3BvcnQs
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBz
dHJlYW1faGFuZGxlcj1oYW5kbGVfc3RyZWFtLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rf
YW5kX3NlcnZlKHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAg
IHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
aXB2NChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihob3N0PSIwLjAuMC4wIikp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0PSIxMjcuMC4wLjEi
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIEBz
a2lwSWYoImlwdjYiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBJUHY2IHRlc3RzIikKKyAgICBk
ZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY2KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKGhvc3Q9Ijo6IikpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2Ns
aWVudChob3N0PSI6OjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJn
bmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2NlcnRpZmljYXRlKHNl
bGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19jZXJ0
aWZpY2F0ZShjb21tb25fbmFtZT0ibG9jYWxob3N0IikKKworICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsIHByaXZhdGVfa2V5PXByaXZhdGVfa2V5LCBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2UgPSBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY2FkYXRh
PWNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisg
ICAgICAgICAgICAgICAgY2FmaWxlPU5vbmUsCisgICAgICAgICAgICApCisgICAgICAgICkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRl
c3RfY29ubmVjdF9hbmRfc2VydmVfbGFyZ2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBU
cmFuc2ZlciBlbm91Z2ggZGF0YSB0byByZXF1aXJlIHJhaXNpbmcgTUFYX0RBVEEgYW5kIE1BWF9T
VFJFQU1fREFUQS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogMjA5NzE1Mgor
ICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNl
bGYucnVuX2NsaWVudChyZXF1ZXN0PWRhdGEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aG91dF9j
bGllbnRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRf
d2l0aG91dF9jb25maWcoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChzZWxmLnNl
cnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
YXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAg
ICAgcnVuKHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xp
ZW50X3dyaXRlbGluZXMoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFz
eW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxm
LnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkg
YXMgY2xpZW50OgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50
LmNyZWF0ZV9zdHJlYW0oKQorICAgICAgICAgICAgICAgIGFzc2VydCB3cml0ZXIuY2FuX3dyaXRl
X2VvZigpIGlzIFRydWUKKworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZWxpbmVzKFtiIjAx
MjM0NTY3IiwgYiI4OTAxMjM0NSJdKQorICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9lb2Yo
KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKCkKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHJ1bl9jbGll
bnRfd3JpdGVsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiIjU0
MzIxMDk4NzY1NDMyMTAiKQorCisgICAgQHNraXBJZigibG9zcyIgaW4gU0tJUF9URVNUUywgIlNr
aXBwaW5nIGxvc3MgdGVzdHMiKQorICAgIEBwYXRjaCgic29ja2V0LnNvY2tldC5zZW5kdG8iLCBu
ZXdfY2FsbGFibGU9bGFtYmRhOiBzZW5kdG9fd2l0aF9sb3NzKQorICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dpdGhfcGFja2V0X2xvc3Moc2VsZiwgbW9ja19zZW5kdG8pOgorICAgICAg
ICAiIiIKKyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1Y2Nlc3MgYW5kIHN0
cmVhbSBkYXRhIGlzIHN1Y2Nlc3NmdWxseSBzZW50CisgICAgICAgIGFuZCByZWNlaXZlZCBpbiB0
aGUgcHJlc2VuY2Ugb2YgcGFja2V0IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGluIGVhY2ggZGlyZWN0
aW9uKS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogNjU1MzYKKworICAgICAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
aXNfY2xpZW50PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAgICAgICAgKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjb25maWd1cmF0
aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKSkKKworICAgICAgICByZXNwb25zZSA9IHJ1bigKKyAg
ICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwg
cXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0PWRhdGEsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5k
X3NlcnZlX3dpdGhfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VydmVy
CisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHN0b3JlID0gU2Vzc2lvblRp
Y2tldFN0b3JlKCkKKworICAgICAgICBkZWYgc2F2ZV90aWNrZXQodCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdAorCisg
ICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAgICAgICAgICAgICAg
ICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cj1zdG9yZS5hZGQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgZmlyc3Qg
cmVxdWVzdAorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcj1zYXZlX3RpY2tldCksKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiImduaXAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNsaWVudF90
aWNrZXQpCisKKyAgICAgICAgIyBzZWNvbmQgcmVxdWVzdAorICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsIHNlc3Np
b25fdGlja2V0PWNsaWVudF90aWNrZXQKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIp
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeShz
ZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9
IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3RhdGVs
ZXNzX3JldHJ5X2JhZF9vcmlnaW5hbF9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgSWYgdGhlIHNlcnZlcidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZl
IHRoZSBjb3JyZWN0CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgdGhlIGNvbm5lY3Rp
b24gZmFpbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9wcm90b2NvbCgqYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBRdWljQ29ubmVjdGlvblByb3Rv
Y29sKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9vcmlnaW5h
bF9jb25uZWN0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHByb3RvY29sCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29s
LCBzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKwor
ICAgIEBwYXRjaCgiYWlvcXVpYy5xdWljLnJldHJ5LlF1aWNSZXRyeVRva2VuSGFuZGxlci52YWxp
ZGF0ZV90b2tlbiIpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxl
c3NfcmV0cnlfYmFkKHNlbGYsIG1vY2tfdmFsaWRhdGUpOgorICAgICAgICBtb2NrX3ZhbGlkYXRl
LnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigiRGVjcnlwdGlvbiBmYWlsZWQuIikKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAor
ICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90aW1lb3V0
PTQuMCksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9hbmRfc2VydmVfd2l0aF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYpOgorICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisKKyAgICAgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290
aWF0aW9uCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpKQorICAgICAgICBjb25maWd1cmF0aW9u
LnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0QSkKKworICAgICAgICByZXNw
b25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNl
bGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgcG9ydD00NDAwLAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
LCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0X25vX3dhaXRfY29ubmVjdGVkKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZChjb25maWd1cmF0aW9u
KToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgIDQ0MDAsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgIHdhaXRfY29ubmVjdGVkPUZhbHNlLAorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAg
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBydW5fY2xpZW50X25vX3dhaXRfY29ubmVjdGVkKAorICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVv
dXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9sb2NhbF9wb3J0KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChsb2NhbF9wb3J0PTM0NTYp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVm
IHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5f
Y2xpZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisg
ICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2
ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisg
ICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGlu
ZygpCisgICAgICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpKQor
CisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnRfa2V5X3VwZGF0ZSgpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2Fk
X3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNl
bGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAgICAgICAg
KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorICAgICAg
ICAgICAgICAgIGNsaWVudC5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICAgICAgICAgIGF3
YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAg
ICAgIHJ1bihydW5fY2xpZW50X2tleV91cGRhdGUoKSkKKworICAgIGRlZiB0ZXN0X3Bpbmcoc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FD
RVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAg
ICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIGF3YWl0
IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9waW5n
KCkpCisKKyAgICBkZWYgdGVzdF9waW5nX3BhcmFsbGVsKHNlbGYpOgorICAgICAgICBhc3luYyBk
ZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwg
c2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgICAgICAg
ICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBjb3JvcyA9IFtjbGllbnQucGluZygpIGZv
ciB4IGluIHJhbmdlKDE2KV0KKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLmdhdGhlcigq
Y29yb3MpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVu
X2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2ZXNfZ2FyYmFnZShz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBz
ZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJjMDAwMDAwMDAwODAi
KSwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNlcnZlci5jbG9zZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmRiZjUxMTI0Y2Ri
NjMyYWRhMzBiNjZjM2YyZTQ0NmVmYmMyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQg
YXN5bmNpbworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmFz
eW5jaW8uY29tcGF0IGltcG9ydCBfYXN5bmNjb250ZXh0bWFuYWdlcgorCitmcm9tIC51dGlscyBp
bXBvcnQgcnVuCisKKworQF9hc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgc29tZV9jb250
ZXh0KCk6CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorICAgIHlpZWxkCisgICAgYXdhaXQg
YXN5bmNpby5zbGVlcCgwKQorCisKK2NsYXNzIEFzeW5jaW9Db21wYXRUZXN0KFRlc3RDYXNlKToK
KyAgICBkZWYgdGVzdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAg
ICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcGFzcwor
CisgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIHNv
bWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29tZSBy
ZWFzb24iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToK
KyAgICAgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb25f
dHlwZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzeW5j
IHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAg
ICAgICAgcnVuKHRlc3QoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1
ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MWRiYzQ0ZDBkZDI2ZjFlZjY4NTY4MjRkNTViYjg4MDk5Mjg4NzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAgKzEsMjAxIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciwgc2l6ZV91aW50X3Zh
cgorCisKK2NsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RhdGFfc2xp
Y2Uoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhX3NsaWNl
KDAsIDgpLCBiIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YV9zbGljZSgxLCAzKSwgYiJceDA3XHgwNiIpCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLmRhdGFfc2xpY2UoLTEsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVm
ZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDkpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1
Zi5kYXRhX3NsaWNlKDEsIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAx
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygzKSwgYiJceDA4XHgw
N1x4MDYiKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc19uZWdhdGl2ZShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAg
ICAgICAgIGJ1Zi5wdWxsX2J5dGVzKC0xKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc190cnVu
Y2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYu
cHVsbF9ieXRlcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisK
KyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3plcm8oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wdWxs
X3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4
MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91
aW50OCgpLCAweDA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEpCisK
KyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ4X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MTYoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAz
XHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQxNigpLCAw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMikKKworICAgIGRl
ZiB0ZXN0X3B1bGxfdWludDE2X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDMyKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJc
eDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50MzIoKSwgMHgwODA3
MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgZGVm
IHRlc3RfcHVsbF91aW50MzJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJy
b3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50NjQoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4
MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ2NCgpLCAweDA4MDcw
NjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKwor
ICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ2NCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXMoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGIiXHgwOFx4MDdceDA2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAz
KQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlcldyaXRlRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiJceDA4XHgwN1x4
MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ZGVmIHRlc3RfcHVzaF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9MykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDgoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICBidWYucHVzaF91aW50OCgweDA4KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDgiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQxNihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTIpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNigw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDciKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAgICBkZWYgdGVzdF9w
dXNoX3VpbnQzMihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQzMigweDA4MDcwNjA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhLCBiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ2NChzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ2NCgweDA4
MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDgpCisKKyAgICBkZWYgdGVzdF9zZWVrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1iIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWYu
ZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgICAg
ICBidWYuc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgICAgIGJ1Zi5zZWVrKDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2VlaygtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2Vlayg5KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKworY2xhc3MgVWludFZhclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiByb3VuZHRyaXAoc2VsZiwgZGF0YSwgdmFsdWUpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3Vp
bnRfdmFyKCksIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIGxl
bihkYXRhKSkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkKKyAgICAgICAgYnVm
LnB1c2hfdWludF92YXIodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGRhdGEpCisKKyAgICBkZWYgdGVzdF91aW50X3ZhcihzZWxmKToKKyAgICAgICAgIyAxIGJ5dGUK
KyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDAwIiwgMCkKKyAgICAgICAgc2VsZi5yb3VuZHRy
aXAoYiJceDAxIiwgMSkKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDI1IiwgMzcpCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHgzZiIsIDYzKQorCisgICAgICAgICMgMiBieXRlcworICAg
ICAgICBzZWxmLnJvdW5kdHJpcChiIlx4N2JceGJkIiwgMTUyOTMpCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHg3Zlx4ZmYiLCAxNjM4MykKKworICAgICAgICAjIDQgYnl0ZXMKKyAgICAgICAg
c2VsZi5yb3VuZHRyaXAoYiJceDlkXHg3Zlx4M2VceDdkIiwgNDk0ODc4MzMzKQorICAgICAgICBz
ZWxmLnJvdW5kdHJpcChiIlx4YmZceGZmXHhmZlx4ZmYiLCAxMDczNzQxODIzKQorCisgICAgICAg
ICMgOCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YzJceDE5XHg3Y1x4NWVceGZm
XHgxNFx4ZThceDhjIiwgMTUxMjg4ODA5OTQxOTUyNjUyKQorICAgICAgICBzZWxmLnJvdW5kdHJp
cChiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwgNDYxMTY4NjAxODQyNzM4Nzkw
MykKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludF92YXJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhmZiIpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludF92YXJfdG9vX2JpZyhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBidWYucHVzaF91aW50X3Zhcig0NjExNjg2
MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
KGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3Ro
IGludGVnZXIiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NpemVfdWludF92YXIoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig2MyksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxNjM4MyksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxMDczNzQxODIzKSwgNCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDMpLCA4KQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAg
ICBzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVnZXIgaXMgdG9vIGJp
ZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYTVjZGM1OGY1OWM2ZTk5OGIwZDM5
NDlhYTc0Zjc3ZDIxNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxODAwIEBACitpbXBvcnQgYXN5bmNpbworaW1w
b3J0IGJpbmFzY2lpCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitpbXBvcnQgdGltZQor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljIGltcG9ydCB0bHMK
K2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBlbmNvZGVf
dWludF92YXIKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgUXVpY0Nvbm5lY3Rpb24sCisgICAgUXVpY0Nv
bm5lY3Rpb25FcnJvciwKKyAgICBRdWljTmV0d29ya1BhdGgsCisgICAgUXVpY1JlY2VpdmVDb250
ZXh0LAorKQorZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9t
IGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gYWlvcXVpYy5xdWlj
LnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgUXVpY0Vycm9y
Q29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGVuY29kZV9xdWljX3JldHJ5LAorICAgIGVu
Y29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNr
ZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNrZXRCdWlsZGVyCitm
cm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBhY2VyCisKK2Zyb20g
LnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRG
SUxFLAorICAgIFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAorICAgIFNFUlZFUl9LRVlGSUxF
LAorKQorCitDTElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCisKK1NFUlZFUl9BRERSID0g
KCIyLjMuNC41IiwgNDQzMykKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQsIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRUKToKKyAgICByZXR1cm4gUXVpY1JlY2VpdmVD
b250ZXh0KAorICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Lmhv
c3RfY2lkLAorICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3JrX3BhdGhzWzBdLAor
ICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9W10sCisgICAgICAgIHRpbWU9YXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnRpbWUoKSwKKyAgICApCisKKworZGVmIGNvbnN1bWVfZXZlbnRzKGNvbm5l
Y3Rpb24pOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV2ZW50ID0gY29ubmVjdGlvbi5uZXh0
X2V2ZW50KCkKKyAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisK
KworZGVmIGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVudF9vcHRpb25zKToK
KyAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1R
dWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICAgICAgKQorICAgICkKKyAgICBjbGll
bnQuX2Fja19kZWxheSA9IDAKKworICAgICMga2ljay1vZmYgaGFuZHNoYWtlCisgICAgY2xpZW50
LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIHJldHVybiBjbGllbnQKKworCitAY29udGV4dGxp
Yi5jb250ZXh0bWFuYWdlcgorZGVmIGNsaWVudF9hbmRfc2VydmVyKAorICAgIGNsaWVudF9rd2Fy
Z3M9e30sCisgICAgY2xpZW50X29wdGlvbnM9e30sCisgICAgY2xpZW50X3BhdGNoPWxhbWJkYSB4
OiBOb25lLAorICAgIGhhbmRzaGFrZT1UcnVlLAorICAgIHNlcnZlcl9rd2FyZ3M9e30sCisgICAg
c2VydmVyX2NlcnRmaWxlPVNFUlZFUl9DRVJURklMRSwKKyAgICBzZXJ2ZXJfa2V5ZmlsZT1TRVJW
RVJfS0VZRklMRSwKKyAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKKyAgICBzZXJ2ZXJfcGF0Y2g9bGFt
YmRhIHg6IE5vbmUsCispOgorICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCks
ICoqY2xpZW50X29wdGlvbnMKKyAgICApCisgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKworICAgIGNsaWVudCA9
IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24sICoqY2xp
ZW50X2t3YXJncykKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tl
dF9wYWNpbmcoY2xpZW50KQorICAgIGNsaWVudF9wYXRjaChjbGllbnQpCisKKyAgICBzZXJ2ZXJf
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9RmFs
c2UsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9ucworICAgICkKKyAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVyX2NlcnRmaWxlLCBz
ZXJ2ZXJfa2V5ZmlsZSkKKworICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRp
b249c2VydmVyX2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKKyAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVyKQorICAgIHNlcnZl
cl9wYXRjaChzZXJ2ZXIpCisKKyAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCisgICAgaWYgaGFuZHNo
YWtlOgorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgp
KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlcikKKworICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCisKKyAgICAjIGNsb3NlCisg
ICAgY2xpZW50LmNsb3NlKCkKKyAgICBzZXJ2ZXIuY2xvc2UoKQorCisKK2RlZiBkaXNhYmxlX3Bh
Y2tldF9wYWNpbmcoY29ubmVjdGlvbik6CisgICAgY2xhc3MgRHVtbXlQYWNrZXRQYWNlcihRdWlj
UGFja2V0UGFjZXIpOgorICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93KToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBjb25uZWN0aW9uLl9sb3NzLl9wYWNlciA9IER1
bW15UGFja2V0UGFjZXIoKQorCisKK2RlZiBzZXF1ZW5jZV9udW1iZXJzKGNvbm5lY3Rpb25faWRz
KToKKyAgICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2VfbnVtYmVyLCBjb25u
ZWN0aW9uX2lkcykpCisKKworZGVmIGRyb3Aoc2VuZGVyKToKKyAgICAiIiIKKyAgICBEcm9wIGRh
dGFncmFtcyBmcm9tIGBzZW5kZXJgLgorICAgICIiIgorICAgIHJldHVybiBsZW4oc2VuZGVyLmRh
dGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCisKKworZGVmIHJvdW5kdHJpcChzZW5k
ZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJg
IHRvIGByZWNlaXZlcmAgYW5kIGJhY2suCisgICAgIiIiCisgICAgcmV0dXJuICh0cmFuc2Zlcihz
ZW5kZXIsIHJlY2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikpCisKKworZGVmIHRy
YW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAgIFNlbmQgZGF0YWdyYW1zIGZy
b20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYC4KKyAgICAiIiIKKyAgICBkYXRhZ3JhbXMgPSAwCisg
ICAgZnJvbV9hZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGllbnQgZWxzZSBTRVJW
RVJfQUREUgorICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9dGltZS50aW1lKCkpOgorICAgICAgICBkYXRhZ3JhbXMgKz0gMQorICAgICAgICByZWNlaXZl
ci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUudGltZSgpKQorICAg
IHJldHVybiBkYXRhZ3JhbXMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvblRlc3QoVGVzdENhc2Up
OgorICAgIGRlZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIsIGFscG5fcHJv
dG9jb2w9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBoYW5kc2hha2UgY29tcGxl
dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290
aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxw
bl9wcm90b2NvbCkKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90
b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9kYXRhX2FjY2VwdGVk
LCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNzaW9uX3Jlc3VtZWQs
IEZhbHNlKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElz
c3VlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKKwor
ICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAg
ICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBmb3Ig
aSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIu
bmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Qo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAg
ICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQorCisg
ICAgICAgICAgICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJsZSBjb25uZWN0aW9u
IElEcyBmb3IgdGhlIHBlZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsx
LCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNlcnZlci5fcGVlcl9j
aWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgY2xp
ZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50
LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9u
IHRoZSBjbGllbnQgc2lkZQorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihjbGllbnQu
Z2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbGll
bnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2Vz
IG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcihzZXJ2
ZXIuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShz
ZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNsaWVudCBsb2cKKyAg
ICAgICAgICAgIGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50
b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2xpZW50X2xvZ1si
dHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICAgICAgICAgICMgY2hlY2sgc2VydmVy
IGxvZworICAgICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1cmF0aW9uLnF1aWNf
bG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzZXJ2
ZXJfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3Rfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAg
ICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsiaDMtMjUiLCAiaHEt
MjUiXX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogWyJo
cS0yNSJdfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBj
aGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFr
ZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPSJocS0yNSIpCisK
KyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6CisgICAgICAgIGNs
aWVudF9sb2dfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VydmVyX2xvZ19maWxlID0g
aW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50X2xvZ19maWxlfSwK
KyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IHNlcnZlcl9s
b2dfZmlsZX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMg
Y2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hh
a2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgICAgICAgICAgIyBjaGVjayBz
ZWNyZXRzIHdlcmUgbG9nZ2VkCisgICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50X2xvZ19m
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXJfbG9nX2ZpbGUu
Z2V0dmFsdWUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfbG9nLCBzZXJ2
ZXJfbG9nKQorICAgICAgICAgICAgbGFiZWxzID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGlu
IGNsaWVudF9sb2cuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQo
bGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBsYWJlbHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
UVVJQ19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2VydF9jaGFpbihzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2VydGZpbGU9U0VSVkVS
X0NFUlRGSUxFX1dJVEhfQ0hBSU4pIGFzICgKKyAgICAgICAgICAgIGNsaWVudCwKKyAgICAgICAg
ICAgIHNlcnZlciwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNv
bXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwg
c2VydmVyPXNlcnZlcikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzEoc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGV2
ZW4gaW4gdGhlIGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1zKToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhb
MF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVp
Y0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0
aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAg
ICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmln
dXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVy
X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAg
ICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUs
IFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5
ID0gMAorCisgICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4w
CisgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQorCisgICAgICAgICMgSU5JVElBTCBp
cyBsb3N0CisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBjbGllbnQuaGFuZGxlX3RpbWVyKG5v
dz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAzLjApCisKKyAg
ICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFL
RQorICAgICAgICBub3cgPSAxLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFn
cmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlcnZlci5nZXRfdGltZXIoKSwgMi4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMu
UHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4
dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBub3JtYWxseQorICAg
ICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3Jh
bShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xp
ZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RF
cXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVu
dC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5v
dyA9IDEuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJ
RU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3Rp
bWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Mu
c3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29t
cGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQo
KSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAg
IyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzIoc2VsZik6
CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4g
W2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29u
ZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxF
KQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50
X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAg
IHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNl
KQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NF
UlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5v
dyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNl
cnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFIGJ1dCBzZWNv
bmQgZGF0YWdyYW0gaXMgbG9zdAorICAgICAgICBub3cgPSAwLjEKKyAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAg
ICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2Vu
dF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2VpdmVzIGZpcnN0IGRh
dGFncmFtIGFuZCBzZW5kcyBBQ0tTCisgICAgICAgIG5vdyA9IDAuMgorICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAg
ICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQorICAgICAgICBzZWxm
LmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29s
TmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQo
KSkKKworICAgICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORworICAgICAgICBub3cg
PSBjbGllbnQuZ2V0X3RpbWVyKCkgICMgfjAuNjI1CisgICAgICAgIGNsaWVudC5oYW5kbGVfdGlt
ZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93
PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0
NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAx
Ljg3NSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNjYXJkcyBJTklUSUFM
IGFuZCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC43MjUKKyAgICAgICAgc2VydmVyLnJlY2Vp
dmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFj
a2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIEFDS3MgYXJlIGxvc3QsIHNlcnZl
ciByZXRyYW5zbWl0cyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gc2VydmVyLmdldF90aW1lcigp
CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNr
ZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkK
KworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKKyAgICAgICAgbm93ID0g
MS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJf
QUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzMyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50
LmdldF90aW1lcigpLCAyLjQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50
Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25J
ZElzc3VlZCkKKworICAgICAgICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2
ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAgICAgIGNs
aWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykK
KyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxl
IHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMoc2VsZik6CisgICAg
ICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4gW2xlbih4
WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1
aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29uZmlndXJh
dGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorCisg
ICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZp
Z3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgIHNlcnZl
cl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fja19kZWxh
eSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5vdyA9IDAu
MAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAg
aXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9
IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5U
X0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5k
KG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
LCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1l
cigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFj
ZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vy
dmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAgICAgICMgY2xpZW50
IHJlY2VpdmVzIElOSVRJQUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gMC4yCisgICAgICAg
IGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5v
dykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9B
RERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwg
WzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50
KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBjb21wbGV0ZXMgaGFuZHNo
YWtlCisgICAgICAgIG5vdyA9IDAuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShp
dGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVy
LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVu
dHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2Vy
dmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rp
b25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQSU5HCisgICAgICAg
IG5vdyA9IDAuODI1CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkKKworICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC45CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkK
KworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRzIEhBTkRTSEFLRV9E
T05FCisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5f
aGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAgICAgICBpdGVtcyA9IHNlcnZl
ci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
cnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjRdKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRo
X3F1YW50dW1fcmVhZGluZXNzKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KGNsaWVudF9vcHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRydWV9LCkgYXMgKAor
ICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAgICAgICApOgorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxv
IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQorICAgICAgICAgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVudC5kYXRhCisgICAg
ICAgICAgICAgICAgZWxpZiBldmVudCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVh
aworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBiImhlbGxvIikKKwor
ICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgorICAgICAgICBjbGllbnRfdGlj
a2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0
CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNsaWVudF9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCisg
ICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tl
dF9zdG9yZS5hZGR9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNs
aWVudF9vcHRpb25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0fSwKKyAgICAgICAg
ICAgIHNlcnZlcl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjogdGlja2V0X3N0b3Jl
LnBvcH0sCisgICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCisgICAgICAgICkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9
dGltZS50aW1lKCkpCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShz
dHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgyLCAxKSkKKworICAgICAgICAgICAgZXZlbnQgPSBzZXJ2
ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQp
LCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCks
IGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBydHRf
YmFkX21heF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQor
ICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgICAgIGRl
ZiBwYXRjaChzZXJ2ZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBQYXRjaCBzZXJ2
ZXIncyBUTFMgaW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKKyAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhIHZhbHVlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICByZWFsX2lu
aXRpYWxpemUgPSBzZXJ2ZXIuX2luaXRpYWxpemUKKworICAgICAgICAgICAgZGVmIHBhdGNoZWRf
aW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAgIHJlYWxfaW5pdGlh
bGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9tYXhfZWFybHlfZGF0
YSA9IDEyMzQ1CisKKyAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5p
dGlhbGl6ZQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAg
ICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0
ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAg
IGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3Rp
Y2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxl
ciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICAgICAgc2VydmVyX3BhdGNoPXBhdGNoLAor
ICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRz
aGFrZSBmYWlsZWQKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBb
MSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUg
Y2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9j
b25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xp
ZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIs
IDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZl
ciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lk
X2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdfY29ubmVjdGlvbl9p
ZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5n
ZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lk
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYs
IDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBh
IG5ldyBjb25uZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJf
Y2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQKKyAgICAgICAgICAg
IHNlcnZlci5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgICAgICAgICAg
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFdCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50
KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2Vx
dWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2
LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25f
aWRfcmV0cmFuc21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9w
ZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRCwgUkVUSVJF
X0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0
aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgcmV0
cmFuc21pdHRlZAorICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9k
ZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgICMgdGhl
IHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3Bl
ZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmKToKKyAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICAgICAjIGNsaWVudAorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1f
aWQsIDApCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIi
aGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwg
NCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxs
byIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbV9pZCwgMikKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgICMg
c2VydmVyCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMSkK
KyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIp
CisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3Ry
ZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA1KQorICAg
ICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKwor
ICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1f
aWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtX2lkLCAzKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0
X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQorICAgICAgICAgICAgc2VydmVyLnNlbmRf
c3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2RhdGFncmFt
X2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAg
ICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUz
Nn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sg
aGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xp
ZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKQorCisgICAgICAg
ICAgICAjIHNlbmQgZGF0YWdyYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFtX2Zy
YW1lKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGll
bnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQo
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkRhdGFn
cmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0
YSwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8yKHNlbGYpOgorICAg
ICAgICAjIHBheWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUgcGFja2V0CisgICAg
ICAgIHBheWxvYWQgPSBiIloiICogMTI1MAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
IjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJh
bWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNr
X2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPU5v
bmUpCisKKyAgICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCisgICAgICAgICAgICBmb3Ig
aSBpbiByYW5nZSgyMCk6CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJh
bWUocGF5bG9hZCkKKworICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkgMTEgZGF0YWdyYW1z
IGFyZSBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKKyAgICAgICAgICAgIGZvciBp
IGluIHJhbmdlKDExKToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50
KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMu
RGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgQUNLCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkK
KworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFncmFtcworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDkpCisgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZSg5KToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRp
b25fZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlwdGlvbiBrZXkKKyAg
ICAgICAgICAgIHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0uc2VuZC5zZXR1cCgK
KyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NN
X1NIQTI1NiwKKyAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAorICAgICAgICAgICAg
ICAgIHZlcnNpb249c2VydmVyLl92ZXJzaW9uLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIHNlcnZlciBzZW5kcyBjbG9zZQorICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGlu
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6CisgICAgICAgIGRlZiBwYXRj
aChjbGllbnQpOgorICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xpZW50Ll9pbml0aWFs
aXplCisKKyAgICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVz
KToKKyAgICAgICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQpCisgICAgICAgICAg
ICAgICAgY2xpZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5UTFNfVkVSU0lPTl8x
XzNfRFJBRlRfMjhdCisKKyAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6ZSA9IHBhdGNoZWRf
aW5pdGlhbGl6ZQorCisgICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAgICAgICAgICAgIHNl
cnZlci5oYW5kbGVfdGltZXIodGltZXJfYXQpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVy
Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5lcnJvcl9jb2RlLCAzMjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
ZW50LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZl
cnNpb24iKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJiYWdlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAg
ICBkYXRhZ3JhbSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgwIikKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2VydmVkX2JpdHNfbm9u
X3plcm8oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChz
ZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKKyAgICAgICAgICAg
IGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19jbGllbnQ9RmFsc2Us
CisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICB2ZXJz
aW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNf
Y2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAgY3J5cHRvLmVu
Y3J5cHRfcGFja2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKKworICAgICAgICBkZWYg
ZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
KToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKKyAgICAgICAgICAgIHBs
YWluX2hlYWRlciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkgKyBwbGFpbl9oZWFk
ZXJbMTpdCisgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwoCisg
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICApCisKKyAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0ID0gZW5jcnlw
dF9wYWNrZXQKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklU
SUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBidWlsZGVyLmZs
dXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhZ3JhbSwg
U0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
cm9wKGNsaWVudCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
bGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9W
SU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fd3Jvbmdf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAg
ICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAgICAgICAgICAgIHZl
cnNpb249MHhGRjAwMDAxMSwgICMgRFJBRlRfMTYKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8g
PSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVy
X2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAg
ICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFERElORykKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkK
KworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBdOgorICAgICAgICAg
ICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGlt
ZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgY2xpZW50LnJlY2Vp
dmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICAgICAgICAg
ICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lk
PWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAorICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICAgICAgb3JpZ2lu
YWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgcmV0
cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9B
RERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9k
YXRhZ3JhbV9yZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5yZWNl
aXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAgICAg
ICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgc291cmNlX2Np
ZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNmZThmNWYwZmY0Iiks
CisgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgp
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2Fja19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBzZXJ2ZXIuY2xvc2UoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFt
ZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZy
YW1lIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisgICAgICAgICAgICAg
ICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1l
X2FwcChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLk5PX0VSUk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZl
bnQsCisgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iZ29vZGJ5ZSIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcF9ub3RfdXRmOChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisK
KyAgICAgICAgY2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisg
ICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBlPU5vbmUsIHJlYXNv
bl9waHJhc2U9IiIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfY3J5cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
IyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1l
bmNvZGVfdWludF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElO
R19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhy
YXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUKKyAgICAgICAgICAg
IGNsaWVudC5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBX0JMT0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKDEyMzQ1KSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdy
YW1fZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVu
dChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAg
IEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1G
cmFtZVJlY2VpdmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hh
bmRsZV9kYXRhZ3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgY2xpZW50ID0g
Y3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPU5v
bmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9y
KSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAg
ICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAg
ICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFt
ZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJl
YXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT01
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikg
YXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1i
ImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVU
eXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT03
KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhl
bGxvanVuayIpLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNsaWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
ZGF0YT1iImhlbGxvIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFt
X2ZyYW1lX3dpdGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBj
cmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9u
ZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3Ip
IGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJP
VE9DT0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBE
QVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0
aF9sZW5ndGhfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRh
bG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKKworICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9O
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2FsbG93ZWQoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUgZnJhbWUKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2VydmVyKSwKKyAgICAg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YiIiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLAorICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNI
QUtFX0RPTkUgZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9t
YXhfZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5f
cmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBNQVhfREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhf
ZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwKKyAgICAgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfZGF0YSwg
MTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisg
ICAgICAgICAgICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNX0RB
VEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9k
YXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKKyAgICAg
ICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1Nzcp
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIE1BWF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1B
WF9TVFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5j
b2RlX3VpbnRfdmFyKDEwNDg1NzUpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2VpdmVfb25seShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAzCisg
ICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MywgZGF0YT1iImhl
bGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBOiAz
LCAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJy
b3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0
YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIpLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9y
X2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5NQVhf
U1RSRUFNX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5y
ZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkKKworICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5nIGxpbWl0CisgICAg
ICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjkpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgbG93ZXJpbmcgbGlt
aXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI3KSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEy
OSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmks
IDEyOCkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJh
aXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9m
cmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAgICAg
ICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191
bmksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5J
IHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3Vu
aV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFt
c191bmksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RP
S0VOLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgw
MTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X25ld190b2tlbl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBORVdfVE9LRU4KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVp
Y0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVf
bmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VO
LAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjA4
MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2xpZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBkYXRhCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikKKyAgICAgICAgICAg
IGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1l
KCkpOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4y
LjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1lKCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgcGF0
aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbmV0d29ya19wYXRo
cyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRo
c1swXS5hZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIs
IDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRo
c1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIFBBVEhfQ0hB
TExFTkdFIGFuZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCisgICAgICAgICAgICBmb3IgZGF0YSwg
YWRkciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKKyAgICAg
ICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRhdGFn
cmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUoKSkK
KworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlk
YXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhz
WzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIg
cmVjZWl2ZXMgdW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgc2VydmVyLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiXHgxMVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQ
T05TRSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNlbGYpOgorICAgICAg
ICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAjIG5v
IG1vcmUgcGFkZGluZworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIpCisgICAgICAgIGNs
aWVudC5faGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgICAgICMgcGFkZGlu
ZyB1bnRpbCBlbmQKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApKQorICAgICAg
ICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisKKyAgICAgICAgIyBw
YWRkaW5nIHRoZW4gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0
ZXMoMTApICsgYiJceDAxIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgK
KyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlw
ZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDEwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAg
ICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVs
bG8iKQorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0s
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMDAxMDAi
KSksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZl
bnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0
cmVhbVJlc2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5zdHJlYW1faWQsIDApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVzZXRfc3Ry
ZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFU0VU
X1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KCIwMjExMDAiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RB
VEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFt
ZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5
IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNl
X251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5F
Q1RJT05fSUQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lELAorICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJz
KGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhdCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWVfY3Vy
cmVudF9jaWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQs
IDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IFJFVElSRV9DT05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlJFVElSRV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
Q2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJl
cnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikK
KworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5HCisgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MTEi
KSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkg
YXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5pZGly
ZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nv
bm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Rv
cF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5E
SU5HLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNceDExIiksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlNUT1BfU0VORElORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0gMQorICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3Zh
cihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcihV
SU5UX1ZBUl9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3Zhcigx
KQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2Nv
ZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1l
X3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQg
Ml42MiAtIDEiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2Zy
YW1lX292ZXJfbWF4X2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2Ug
cmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRh
X3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5
cGUuU1RSRUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAg
ICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoc3RyZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwg
UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgY29ubmVj
dGlvbiBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zl
cl9tYXhfc3RyZWFtX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RS
RUFNIGZyYW1lCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1f
QkFTRSB8IDQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsgZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlICsgMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBzdHJlYW0gZGF0YSBs
aW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X3N0cmVh
bXMoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNt
OgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAgICAgICAgICAgICBC
dWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihjbGll
bnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKKyAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1
aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBvcGVuIikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgorICAgICAgICB3
aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
ICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAgICAgICAgICAgIGNs
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8iKQorCisgICAg
ICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMiIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9S
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9yKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDAwIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0aWF0b3IiKQorCisg
ICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9C
TE9DS0VEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF91bmlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2
ZXMgU1RSRUFNU19CTE9DS0VEX1VOSTogMAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Ry
ZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tF
RF9VTkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdfb25seShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKKyAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MDAiICog
MTIwMAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hY2tf
ZWxpY2l0aW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Byb2JpbmcpCisKKyAg
ICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAg
ICBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LCBiIlx4MWYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJy
b3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFGKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVua25vd24g
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3VuZXhwZWN0ZWRf
ZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZUFRPIGZyYW1lIGlu
IDAtUlRUCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVwb2No
PXRscy5FcG9jaC5aRVJPX1JUVCksIGIiXHgwNiIKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JD
b2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQg
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX21hbGZvcm1lZF9m
cmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxmb3JtZWQgVFJBTlNQ
T1JUX0NMT1NFIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9y
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLCBiIlx4MWNceDAwXHgwMSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBR
dWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFDKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkZh
aWxlZCB0byBwYXJzZSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX2Jsb2Nr
ZWRfYnlfY2Moc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9uIGNvbnRyb2wKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVzX2luX2ZsaWdodCwg
MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmNvbmdlc3Rpb25f
d2luZG93LCAxNDMwMykKKworICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2
ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQg
PSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
cnZlci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGFydGlmaWNp
YWxseSByYWlzZSBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIGNsaWVudC5fbG9zcy5fY2Mu
Ynl0ZXNfaW5fZmxpZ2h0ID0gMTQzMDMKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBub3Qg
c2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfcmV0cmFu
c21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRh
IGNvdW50ZXIKKyAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVu
dC5fbG9jYWxfbWF4X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9y
ZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgc2Vu
dCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2Vu
dCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVf
bWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21p
dHRlZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tYXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNs
aWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIHN0cmVhbSA9
IGNsaWVudC5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwganVzdCBiZWZvcmUg
cmFpc2luZyBNQVhfU1RSRUFNX0RBVEEKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9k
YXRhKDAsIGIiWiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgorICAgICAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2Nh
bCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJl
YW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIHNlcnZlciBzZW5k
cyBvbmUgbW9yZSBieXRlCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgwLCBi
IloiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVu
dCksIDEpCisKKyAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNlbnQgYW5kIGxvc3QK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsX3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBjbGllbnQuX29uX21heF9zdHJlYW1fZGF0
YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxf
c2VudCwgMCkKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBh
Y2tlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKworICAgIGRlZiB0ZXN0
X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0CisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNo
ZWNrIGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVk
Z2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY29uc3Vt
ZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBhbm90aGVyIHBp
bmcsIFBJTkcgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgICAg
ICAgICAgIyBQSU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBjbGll
bnQuX29uX3BpbmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgKDEyMzQ1LCkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgx
LCAxKSkKKworICAgICAgICAgICAgIyBjaGVjayBldmVudAorICAgICAgICAgICAgZXZlbnQgPSBj
bGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuUGluZ0Fja25vd2xlZGdlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQudWlkLCAxMjM0NSkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zl
cl9tYXhfc3RyZWFtc19iaWRpKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
ID0gaSAqIDQKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQsIGIiIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFt
c1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKKwor
ICAgICAgICAgICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gMTI4ICogNAorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xp
ZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwg
KDEsIDEpKQorCisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9
ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3VuaShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNyZWF0ZSBzdHJlYW1zCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgp
OgorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgorICAgICAgICAgICAgICAg
IGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2Vk
X2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJl
YW1zX2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBvbmUg
dG9vIG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJlYW1faWQgPSAxMjgg
KiA0ICsgMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBi
IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9p
ZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5f
c3RyZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAg
ICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9t
YXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29u
dGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNf
VU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2Rh
dGFfcGVlcl9pbml0aWF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMSwg
YiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIs
IGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJl
Y3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDMsIGIi
aGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBj
bGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rp
b25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVs
bG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRhdGEgb24gc2VydmVy
LWluaXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQg
Y3JlYXRlIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoMiwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQgdHJp
ZXMgdG8gc2VuZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhlbGxvIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlv
biksCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0aWF0ZWQg
dW5pZGlyZWN0aW9uYWwgc3RyZWFtIiwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBj
bGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWluaXRpYXRlZCBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSg1
LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1p
bml0aWF0ZWQgc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtX2Rp
cmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4XToKKyAgICAgICAg
ICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmKSkK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2Vp
dmUob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1f
Y2FuX3NlbmQob2ZmKSkKKworICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgQmlk
aXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
Y2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAxKSkK
KworICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZl
KG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fc2VuZChvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKKworICAgICAgICAg
ICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChv
ZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFt
X2Nhbl9yZWNlaXZlKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
ZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25f
bmVnb3RpYXRpb25fZmFpbChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxv
bmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBubyBjb21tb24gdmVyc2lvbiwgbm8gcmV0cnkK
KyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVp
Y192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50
Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3Rf
Y2lkLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhGRjAwMDAxMV0sICAj
IERSQUZUXzE2CisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIsCisgICAg
ICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVu
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBldmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJv
dG9jb2wgdmVyc2lvbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlh
dGlvbl9vayhzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCByZXRyeQorICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNp
b25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJf
Y2lkLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3ZlcnNpb25dLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRp
bWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGll
bnQpLCAxKQorCisKK2NsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2Nhbl9zZW5kKHNlbGYpOgorICAgICAgICBwYXRoID0gUXVpY05ldHdvcmtQYXRoKCgi
MS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguaXNfdmFsaWRh
dGVkKQorCisgICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkgZGF0YQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwYXRoLmNhbl9zZW5kKDEpKQorCisgICAgICAgICMgcmVjZWl2ZSBzb21lIGRhdGEKKyAg
ICAgICAgcGF0aC5ieXRlc19yZWNlaXZlZCArPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgx
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBhdGguY2FuX3NlbmQoNCkpCisKKyAgICAgICAgIyBzZW5kIHNvbWUgZGF0YQorICAgICAgICBw
YXRoLmJ5dGVzX3NlbnQgKz0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2Vu
ZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNGU0ZGNmNWUxOGU0NzAyNDUwZDFiZWJm
NDlkZmZjMjEzZTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jcnlwdG8ucHkKQEAgLTAsMCArMSwzMTkgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB1bml0
dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgKAorICAgIElOSVRJQUxf
Q0lQSEVSX1NVSVRFLAorICAgIENyeXB0b0Vycm9yLAorICAgIENyeXB0b1BhaXIsCisgICAgZGVy
aXZlX2tleV9pdl9ocCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUEFDS0VU
X0ZJWEVEX0JJVCwgUXVpY1Byb3RvY29sVmVyc2lvbgorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
Q2lwaGVyU3VpdGUKKworZnJvbSAudXRpbHMgaW1wb3J0IFNLSVBfVEVTVFMKKworUFJPVE9DT0xf
VkVSU0lPTiA9IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKworQ0hBQ0hBMjBfQ0xJRU5U
X1BBQ0tFVF9OVU1CRVIgPSAyCitDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICJlMWZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1MjRiMDg1MGZjMmEy
OGUyNDBmZDc2NDAxNzAwMDIiCispCitDSEFDSEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgiMDIwMTAwMDAwMCIpCitDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVE
X1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZThmZjAwMDAxNjA4ODBiNTdjN2I3
MGQ4NTI0YjA4NTBmYzJhMjhlMjQwZmQ3NjQwMTc4MzEzYjA0YmU5ODQ0OSIKKyAgICAiZWIxMDU2
N2UyNWNlOTMwMzgxZjJhNWI3ZGEyZGI4ZGIiCispCisKK0xPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1C
RVIgPSAyCitMT05HX0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgImMzZmYwMDAwMTcwODgzOTRjOGYwM2U1MTU3MDgwMDAwNDQ5ZTAwMDAwMDAyIgorKQorTE9O
R19DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYwMDQw
YzQwMTAwMDBjMDAzMDM2NjYwMjYxZmY5NDdjZWE0OWNjZTZjZmFkNjg3ZjQ1N2NmMWIxNDUzMWJh
MSIKKyAgICAiNDEzMWEwZThmMzA5YTFkMGI5YzQwMDAwMDYxMzAxMTMwMzEzMDIwMTAwMDA5MTAw
MDAwMDBiMDAwOTAwMDAwNiIKKyAgICAiNzM2NTcyNzY2NTcyZmYwMTAwMDEwMDAwMGEwMDE0MDAx
MjAwMWQwMDE3MDAxODAwMTkwMTAwMDEwMTAxMDIwMSIKKyAgICAiMDMwMTA0MDAyMzAwMDAwMDMz
MDAyNjAwMjQwMDFkMDAyMDRjZmRmY2QxNzhiNzg0YmYzMjhjYWU3OTNiMTM2ZiIKKyAgICAiMmFl
ZGNlMDA1ZmYxODNkN2JiMTQ5NTIwNzIzNjY0NzAzNzAwMmIwMDAzMDIwMzA0MDAwZDAwMjAwMDFl
MDQwMyIKKyAgICAiMDUwMzA2MDMwMjAzMDgwNDA4MDUwODA2MDQwMTA1MDEwNjAxMDIwMTA0MDIw
NTAyMDYwMjAyMDIwMDJkMDAwMiIKKyAgICAiMDEwMTAwMWMwMDAyNDAwMSIKKykgKyBieXRlcyg5
NjIpCitMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICJjMGZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUzYjM0M2FhODUzNTA2NGE0
MjY4YTBkOWQ3YjFjIgorICAgICI5ZDI1MGFlMzU1MTYyMjc2ZTliMWUzMDExZWY2YmJjMGFiNDhh
ZDViY2MyNjgxZTk1Mzg1N2NhNjJiZWNkNzUyIgorICAgICI0ZGFhYzQ3M2U2OGQ3NDA1ZmJiYTRl
OWVlNjE2Yzg3MDM4YmRiZTkwOGMwNmQ5NjA1ZDlhYzQ5MDMwMzU5ZWVjIgorICAgICJiMWQwNWEx
NGUxMTdkYjhjZWRlMmJiMDlkMGRiYmZlZTI3MWNiMzc0ZDhmMTBhYmVjODJkMGY1OWExZGVlMjlm
IgorICAgICJlOTU2MzhlZDhkZDQxZGEwNzQ4NzQ2ODc5MWI3MTljNTVjNDY5NjhlYjNiNTQ2ODAw
MzcxMDJhMjhlNTNkYzFkIgorICAgICIxMjkwM2RiMGFmNTgyMTc5NGI0MWM0YTkzMzU3ZmE1OWNl
NjljZmU3ZjZiZGZhNjI5ZWVmNzg2MTY0NDdlMWQ2IgorICAgICIxMWM0YmFmNzFiZjMzZmViY2Iw
MzEzN2MyYzc1ZDI1MzE3ZDNlMTNiNjg0MzcwZjY2ODQxMWMwZjAwMzA0YjUwIgorICAgICIxYzhm
ZDQyMmJkOWI5YWQ4MWQ2NDNiMjBkYTg5Y2EwNTI1ZDI0ZDJiMTQyMDQxY2FlMGFmMjA1MDkyZTQz
MDA4IgorICAgICIwY2Q4NTU5ZWE0YzVjNmU0ZmEzZjY2MDgyYjdkMzAzZTUyY2UwMTYyYmFhOTU4
NTMyYjBiYmMyYmM3ODU2ODFmIgorICAgICJjZjM3NDg1ZGZmNjU5NWUwMWU3MzljOGFjOWVmYmEz
MWI5ODVkNWY2NTZjYzA5MjQzMmQ3ODFkYjk1MjIxNzI0IgorICAgICI4NzY0MWM0ZDNhYjhlY2Uw
MWUzOWJjODViMTU0MzY2MTQ3NzVhOThiYThmYTEyZDQ2ZjliMzVlMmE1NWViNzJkIgorICAgICI3
Zjg1MTgxYTM2NjY2MzM4N2RkYzIwNTUxODA3ZTAwNzY3M2JkN2UyNmJmOWIyOWI1YWIxMGExY2E4
N2NiYjdhIgorICAgICJkOTdlOTllYjY2OTU5YzJhOWJjM2NiZGU0NzA3ZmY3NzIwYjExMGZhOTUz
NTQ2NzRlMzk1ODEyZTQ3YTBhZTUzIgorICAgICJiNDY0ZGNiMmQxZjM0NWRmMzYwZGMyMjcyNzBj
NzUwNjc2ZjY3MjRlYjQ3OWYwZDJmYmI2MTI0NDI5OTkwNDU3IgorICAgICJhYzZjOTE2N2Y0MGFh
YjczOTk5OGYzOGI5ZWNjYjI0ZmQ0N2M4NDEwMTMxYmY2NWE1MmFmODQxMjc1ZDViM2QxIgorICAg
ICI4ODBiMTk3ZGYyYjVkZWEzZTZkZTU2ZWJjZTNmZmI2ZTkyNzdhODIwODJmOGQ5Njc3YTY3Njcw
ODliNjcxZWJkIgorICAgICIyNDRjMjE0ZjBiZGU5NWMyYmViMDJjZDExNzJkNThiZGYzOWRjZTU2
ZmY2OGViMzVhYjM5YjQ5YjRlYWM3YzgxIgorICAgICI1ZWE2MDQ1MWQ2ZTZhYjgyMTE5MTE4ZGYw
MmE1ODY4NDRhOWZmZTE2MmJhMDA2ZDA2NjllZjU3NjY4Y2FiMzhiIgorICAgICI2MmY3MWEyNTIz
YTA4NDg1MmNkMWQwNzliMzY1OGRjMmYzZTg3OTQ5YjU1MGJhYjNlMTc3Y2ZjNDllZDE5MGRmIgor
ICAgICJmMDYzMGU0MzA3N2MzMGRlOGY2YWUwODE1MzdmMWU4M2RhNTM3ZGE5ODBhZmE2NjhlN2I3
ZmIyNTMwMWNmNzQxIgorICAgICI1MjRiZTNjNDk4ODRiNDI4MjFmMTc1NTJmYmQxOTMxYTgxMzAx
N2I2YjY1OTBhNDFlYTE4YjZiYTQ5Y2Q0OGE0IgorICAgICI0MGJkOWEzMzQ2YTc2MjNmYjRiYTM0
YTNlZTU3MWUzYzczMWYzNWE3YTNjZjI1YjU1MWE2ODBmYTY4NzYzNTA3IgorICAgICJiN2ZkZTNh
YWYwMjNjNTBiOWQyMmRhNjg3NmJhMzM3ZWI1ZTlkZDllYzNkYWY5NzAyNDJiNmM1YWFiM2FhNGIy
IgorICAgICI5NmFkOGI5ZjY4MzJmNjg2ZWY3MGZhOTM4YjMxYjRlNWRkZDczNjQ0NDJkM2VhNzJl
NzNkNjY4ZmIwOTM3Nzk2IgorICAgICJmNDYyOTIzYTgxYTQ3ZTFjZWU3NDI2ZmY2ZDkyMjEyNjli
NWE2MmVjMDNkNmVjOTRkMTI2MDZjYjQ4NTU2MGJhIgorICAgICJiNTc0ODE2MDA5ZTk2NTA0MjQ5
Mzg1YmI2MWE4MTliZTA0ZjYyYzIwNjYyMTRkODM2MGEyMDIyYmViMzE2MjQwIgorICAgICJiNmM3
ZDc4YmJlNTZjMTMwODJlMGNhMjcyNjYxMjEwYWJmMDIwYmYzYjU3ODNmMTQyNjQzNmNmOWZmNDE4
NDA1IgorICAgICI5M2E1ZDA2MzhkMzJmYzUxYzVjNjVmZjI5MWEzYTdhNTJmZDY3NzVlNjIzYTQ0
MzljYzA4ZGQyNTU4MmZlYmM5IgorICAgICI0NGVmOTJkOGRiZDMyOWM5MWRlM2U5Yzk1ODJlNDFm
MTdmM2QxODZmMTA0YWQzZjkwOTk1MTE2YzY4MmEyYTE0IgorICAgICJhM2I0YjFmNTQ3YzMzNWYw
YmU3MTBmYzlmYzAzZTBlNTg3YjhjZGEzMWNlNjViOTY5ODc4YTRhZDQyODNlNmQ1IgorICAgICJi
MDM3M2Y0M2RhODZlOWUwZmZlMWFlMGZkZGQzNTE2MjU1YmQ3NDU2NmYzNmEzODcwM2Q1ZjM0MjQ5
ZGVkMWY2IgorICAgICI2YjNkOWI0NWI5YWYyY2NmZWZlOTg0ZTEzMzc2YjFiMmM2NDA0YWE0OGM4
MDI2MTMyMzQzZGEzZjNhMzM2NTllIgorICAgICJjMWIzZTk1MDgwNTQwYjI4YjdmM2ZjZDM1ZmE1
ZDg0M2I1NzlhODRjMDg5MTIxYTYwZDhjMTc1NDkxNWMzNDRlIgorICAgICJlYWY0NWE5YmYyN2Rj
MGMxZTc4NDE2MTY5MTIyMDkxMzEzZWIwZTg3NTU1YWJkNzA2NjI2ZTU1N2ZjMzZhMDRmIgorICAg
ICJjZDE5MWE1ODgyOTEwNGQ2MDc1YzU1OTRmNjI3Y2E1MDZiZjE4MWRhZWM5NDBmNGE0ZjNhZjAw
NzRlZWU4OWRhIgorICAgICJhY2RlNjc1ODMxMjYyMmQ0ZmE2NzViMzlmNzI4ZTA2MmQyYmVlNjgw
ZDhmNDFhNTk3YzI2MjY0OGJiMThiY2ZjIgorICAgICIxM2M4YjNkOTdiMWE3N2IyYWMzYWY3NDVk
NjFhMzRjYzQ3MDk4NjViYWM4MjRhOTRiYjE5MDU4MDE1ZTRlNDJkIgorICAgICJjOWJlNmM3ODAz
NTY3MzIxODI5ZGQ4NTg1MzM5NjI2OSIKKykKKworTE9OR19TRVJWRVJfUEFDS0VUX05VTUJFUiA9
IDEKK0xPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAi
YzFmZjAwMDAxNzAwMDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MDAwMSIKKykKK0xPTkdfU0VSVkVS
X1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjBkMDAwMDAwMDAxODQx
MGEwMjAwMDA1NjAzMDNlZWZjZTdmN2IzN2JhMWQxNjMyZTk2Njc3ODI1ZGRmNzM5ODgiCisgICAg
ImNmYzc5ODI1ZGY1NjZkYzU0MzBiOWEwNDVhMTIwMDEzMDEwMDAwMmUwMDMzMDAyNDAwMWQwMDIw
OWQzYzk0MGQiCisgICAgIjg5NjkwYjg0ZDA4YTYwOTkzYzE0NGVjYTY4NGQxMDgxMjg3YzgzNGQ1
MzExYmNmMzJiYjlkYTFhMDAyYjAwMDIiCisgICAgIjAzMDQiCispCitMT05HX1NFUlZFUl9FTkNS
WVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjOWZmMDAwMDE3MDAwOGYw
NjdhNTUwMmE0MjYyYjUwMDQwNzQxNjhiZjIyYjcwMDI1OTZmOTlhZTY3YWJmNjVhIgorICAgICI1
ODUyZjU0ZjU4YzM3YzgwODY4MmUyZTQwNDkyZDhhMzg5OWZiMDRmYzBhZmU5YWFiYzg3NjdiMThh
MGFhNDkzIgorICAgICI1Mzc0MjYzNzNiNDhkNTAyMjE0ZGQ4NTZkNjNiNzhjZWUzN2JjNjY0YjNm
ZTg2ZDQ4N2FjN2E3N2M1MzAzOGEzIgorICAgICJjZDMyZjBiNTAwNGQ5ZjU3NTRjNGY3ZjJkMWYz
NWNmM2Y3MTE2MzUxYzkyYjljZjliYjZkMDkxZGRmYzhiMzJkIgorICAgICI0MzIzNDhhMmM0MTMi
CispCisKK1NIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMworU0hPUlRfU0VSVkVSX1BMQUlO
X0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNDFiMDFmZDI0YTU4NmE5Y2YzMDAwMyIpCitT
SE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYw
MDM5MDQwMDAwMzUwMDAxNTE4MDVhNGJlYmY1MDAwMDIwYjA5OGM4ZGM0MTgzZTRjMTgyNTcyZTEw
YWMzZSIKKyAgICAiMmI4ODg5N2UwNTI0Yzg0NjE4NDc1NDhiZDJkZmZhMmMwYWU2MDAwODAwMmEw
MDA0ZmZmZmZmZmYiCispCitTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAiNWRiMDFmZDI0YTU4NmE5Y2YzM2RlYzA5NGFhZWM2ZDZiNGI3YTVl
MTVmNWEzZjA1ZDA2Y2YxYWQwMzU1YzE5ZCIKKyAgICAiY2NlMDgwN2VlY2Y3YmYxYzg0NGE2NmUx
ZWNkMWY3NGIyYTJkNjliZmQyNWQyMTc4MzNlZGQ5NzMyNDY1OTdiZCIKKyAgICAiNTEwN2VhMTVj
YjFlMjEwMDQ1Mzk2YWZhNjAyZmUyMzQzMmY0YWIyNGNlMjUxYiIKKykKKworCitjbGFzcyBDcnlw
dG9UZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZlY3RvcnMgZnJvbToKKworICAg
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMtdGxzLTE4I2FwcGVu
ZGl4LUEKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfY3J5cHRvKHNlbGYsIGlzX2NsaWVudCk6
CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZXR1cF9pbml0aWFs
KAorICAgICAgICAgICAgY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIp
LAorICAgICAgICAgICAgaXNfY2xpZW50PWlzX2NsaWVudCwKKyAgICAgICAgICAgIHZlcnNpb249
UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gcGFpcgorCisgICAg
ZGVmIHRlc3RfZGVyaXZlX2tleV9pdl9ocChzZWxmKToKKyAgICAgICAgIyBjbGllbnQKKyAgICAg
ICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhhMzUxNWExNGFl
M2MzMWI5YzJkNmQ1YmM1ODUzOGNhNWNkMmJhYTExOTA4NzE0M2U2MDg4NzQyOGRjYjUyZjYiCisg
ICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hwKElOSVRJQUxf
Q0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5LCBiaW5h
c2NpaS51bmhleGxpZnkoIjk4YjBkN2U1ZTdhNDAyYzY3YzMzZjM1MGZhNjVlYTU0IikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgiMTllOTQzODc4MDVl
YjBiNDZjMDNhNzg4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAsIGJpbmFzY2lpLnVu
aGV4bGlmeSgiMGVkZDk4MmE2YWM1MjdmMmVkZGNiYjczNDhkZWE1ZDciKSkKKworICAgICAgICAj
IHNlcnZlcgorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAiNDdiMmVhZWE2YzI2NmUzMmMwNjk3YTllMmE4OThiZGY1YzRmYjNlNWFjMzRmMGU1NDliZjJj
NTg1ODFhMzgxMSIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBocCA9IGRlcml2ZV9rZXlf
aXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWE4YmU5MDJhOWJkZDkxZDE2MDY0Y2ExMTgw
NDVmYjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmluYXNjaWkudW5oZXhsaWZ5
KCIwYTgyMDg2ZDMyMjA1YmEyMjI0MWQ4ZGMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
cCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5NGI5NDUyZDJiM2M3YzdmNmRhN2ZkZDg1OTM1MzdmZCIp
KQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFj
aGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZGVjcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAor
ICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
YjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2Iy
ODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZF
UlNJT04sCisgICAgICAgICkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgQ0hBQ0hB
MjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDI1LCAwCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgQ0hBQ0hBMjBfQ0xJRU5U
X1BMQUlOX1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwg
Q0hBQ0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X2xv
bmdfY2xpZW50KHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2Ns
aWVudD1GYWxzZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tl
dF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9OR19DTElFTlRf
RU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBsYWluX2hlYWRlciwgTE9OR19DTElFTlRfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfQ0xJRU5UX1BMQUlOX1BBWUxPQUQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19DTElFTlRfUEFDS0VU
X05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCisKKyAgICAgICAg
cGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0
X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAw
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIExPTkdf
U0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXls
b2FkLCBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhY2tldF9udW1iZXIsIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVz
dF9kZWNyeXB0X25vX2tleShzZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENyeXB0b0Vycm9yKToKKyAgICAgICAgICAgIHBh
aXIuZGVjcnlwdF9wYWNrZXQoTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDApCisK
KyAgICBkZWYgdGVzdF9kZWNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMxYzEyMTJkNzg0
YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAg
ICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVj
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwg
OSwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWlu
X3BheWxvYWQsIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldF9udW1iZXIsIFNIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQorCisgICAg
QHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFjaGEyMCB0ZXN0
cyIpCisgICAgZGVmIHRlc3RfZW5jcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYjQyNzcyZGYz
M2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2IyODlhZThjMCIK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisg
ICAgICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIENIQUNIQTIw
X0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BBQ0tF
VF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIENI
QUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9s
b25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19j
bGllbnQ9VHJ1ZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAg
ICAgICAgICAgTE9OR19DTElFTlRfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19DTElF
TlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfQ0xJRU5U
X0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xvbmdfc2VydmVyKHNl
bGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkK
KworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9O
R19TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19TRVJWRVJfUExBSU5fUEFZ
TE9BRCwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9Q
QUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNy
ZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMx
YzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAg
KQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BMQUlO
X1BBWUxPQUQsCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgU0hPUlRfU0VSVkVSX0VOQ1JZ
UFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlbGYpOgorICAgICAgICBw
YWlyMSA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgcGFpcjIg
PSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIGRlZiBjcmVh
dGVfcGFja2V0KGtleV9waGFzZSwgcGFja2V0X251bWJlcik6CisgICAgICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9MTAwKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoUEFDS0VUX0ZJ
WEVEX0JJVCB8IGtleV9waGFzZSA8PCAyIHwgMSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIpKQorICAgICAgICAgICAgYnVm
LnB1c2hfdWludDE2KHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gYnVmLmRhdGEs
IGIiXHgwMFx4MDFceDAyXHgwMyIKKworICAgICAgICBkZWYgc2VuZChzZW5kZXIsIHJlY2VpdmVy
LCBwYWNrZXRfbnVtYmVyPTApOgorICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkID0gY3JlYXRlX3BhY2tldCgKKyAgICAgICAgICAgICAgICBrZXlfcGhhc2U9c2VuZGVyLmtl
eV9waGFzZSwgcGFja2V0X251bWJlcj1wYWNrZXRfbnVtYmVyCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBlbmNyeXB0ZWQgPSBzZW5kZXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAg
ICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICAg
ICApCisgICAgICAgICAgICByZWNvdl9oZWFkZXIsIHJlY292X3BheWxvYWQsIHJlY292X3BhY2tl
dF9udW1iZXIgPSByZWNlaXZlci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICBlbmNy
eXB0ZWQsIGxlbihwbGFpbl9oZWFkZXIpIC0gMiwgMAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9oZWFkZXIsIHBsYWluX2hlYWRlcikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGF5bG9hZCwgcGxhaW5fcGF5bG9hZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGFja2V0X251bWJlciwgcGFja2V0X251bWJl
cikKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMCkK
KyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFpcjEua2V5X3BoYXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9w
aGFzZSwgMCkKKworICAgICAgICAjIHBhaXIgMSBrZXkgdXBkYXRlCisgICAgICAgIHBhaXIxLnVw
ZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNlbmQocGFpcjEsIHBh
aXIyLCAxKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFp
cjIua2V5X3BoYXNlLCAxKQorCisgICAgICAgICMgcGFpciAyIGtleSB1cGRhdGUKKyAgICAgICAg
cGFpcjIudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChw
YWlyMiwgcGFpcjEsIDIpCisgICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYWlyMi5rZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEga2V5IC0gdXBkYXRl
LCBidXQgbm90IG5leHQgdG8gc2VuZAorICAgICAgICBwYWlyMS51cGRhdGVfa2V5KCkKKworICAg
ICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMykKKyAgICAgICAg
c2VuZChwYWlyMSwgcGFpcjIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFpcjEua2V5
X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9waGFzZSwgMSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfaDAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjY2Y2NWUxMTc0OThjZmRkNWIwN2JlZGUx
ZjA3NjNkMWNhMjBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2gwLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQor
Citmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwgSDBDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNl
aXZlZAorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVudF9hbmRfc2VydmVyLCB0
cmFuc2ZlcgorCisKK2RlZiBoMF9jbGllbnRfYW5kX3NlcnZlcigpOgorICAgIHJldHVybiBjbGll
bnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IEgwX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDBf
QUxQTn0sCisgICAgKQorCisKK2RlZiBoMF90cmFuc2ZlcihxdWljX3NlbmRlciwgaDBfcmVjZWl2
ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoMF9yZWNlaXZlci5fcXVpYworICAgIHRyYW5zZmVy
KHF1aWNfc2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRz
CisgICAgaHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2
ZW50KCkKKyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKGgwX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0g
cXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitj
bGFzcyBIMENvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb25uZWN0KHNl
bGYpOgorICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50
LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24ocXVp
Y19jbGllbnQpCisgICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19zZXJ2
ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1faWQg
PSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBoMF9jbGllbnQuc2VuZF9kYXRhKHN0cmVh
bV9pZD1zdHJlYW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRob2QiLCBiIkdFVCIpLCAo
YiI6cGF0aCIsIGIiLyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKwor
ICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBoMF9zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5Pjwv
aHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiPGh0bWw+PGJvZHk+
aGVsbG88L2JvZHk+PC9odG1sPiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcnNfb25s
eShzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2Ns
aWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0gSDBDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25uZWN0aW9uKHF1aWNf
c2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRo
b2QiLCBiIkhFQUQiKSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRh
UmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBz
dHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1f
ZW5kZWQsIFRydWUpCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAg
aDBfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwg
YiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sw
XS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMwOTRmZTk4OThjNTQzMTc1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKQEAgLTAsMCAr
MSwxMjkyIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3ZhcgorZnJvbSBhaW9x
dWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAgICBIM19BTFBOLAorICAgIEVycm9yQ29kZSwK
KyAgICBGcmFtZVR5cGUsCisgICAgRnJhbWVVbmV4cGVjdGVkLAorICAgIEgzQ29ubmVjdGlvbiwK
KyAgICBTdHJlYW1UeXBlLAorICAgIGVuY29kZV9mcmFtZSwKKykKK2Zyb20gYWlvcXVpYy5oMy5l
dmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNoUHJvbWlzZVJl
Y2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQdXNo
SURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZp
Z3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2Vp
dmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworZnJvbSAu
dGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJhbnNmZXIKKworCitk
ZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4gY2xpZW50X2FuZF9zZXJ2ZXIo
CisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwKKyAg
ICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAorICAgICkK
KworCitkZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVyKToKKyAgICBxdWlj
X3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKKyAgICBpZiBoYXNhdHRyKHF1aWNfc2VuZGVy
LCAic3RyZWFtX3F1ZXVlIik6CisgICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2ZW50cy5leHRlbmQo
cXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQorICAgICAgICBxdWljX3NlbmRlci5zdHJlYW1fcXVl
dWUuY2xlYXIoKQorICAgIGVsc2U6CisgICAgICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBxdWlj
X3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCisgICAgaHR0cF9ldmVudHMg
PSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICB3aGlsZSBl
dmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKGgzX3JlY2VpdmVy
LmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0
X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitjbGFzcyBGYWtlUXVpY0Nvbm5l
Y3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICBz
ZWxmLmNsb3NlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJh
dGlvbgorICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2V2ZW50
cyA9IFtdCisgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlmIGNvbmZpZ3VyYXRp
b24uaXNfY2xpZW50IGVsc2UgMQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgPSAyIGlm
IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMworICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKKyAgICAgICAgICAgIGlzX2NsaWVudD1jb25m
aWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCisgICAgICAgICkKKworICAgIGRlZiBjbG9z
ZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKKyAgICAgICAgc2VsZi5jbG9zZWQg
PSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKKworICAgIGRlZiBnZXRfbmV4dF9hdmFpbGFi
bGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToKKyAgICAgICAgaWYg
aXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0
cmVhbV91bmkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSArPSA0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpCisg
ICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKKyAgICAgICAgcmV0dXJuIHN0
cmVhbV9pZAorCisgICAgZGVmIG5leHRfZXZlbnQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCisgICAgICAgIGV4Y2VwdCBJbmRleEVy
cm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZW5kX3N0cmVhbV9kYXRh
KHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6CisgICAgICAgICMgY2hv
cCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcworICAgICAgICBmb3IgYyBpbiBkYXRhOgor
ICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1ieXRlcyhbY10pLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5z
dHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQorICAg
ICAgICAgICAgKQorCisKK2NsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgorICAgIG1h
eERpZmYgPSBOb25lCisKKyAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBoM19jbGllbnQsIGgz
X3NlcnZlcik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9xdWljCisgICAgICAg
IHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCisKKyAgICAgICAgIyBzZW5kIHJlcXVlc3QK
KyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVhbT1U
cnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2ZW50cyA9IGgzX3Ry
YW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJjbGllbnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBz
dHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxv
PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAp
CisKKyAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5z
ZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVhZGVy
c1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0
bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNvbnRyb2wgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpCisgICAgICAg
ICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksCisgICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlkIGZy
YW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUgTUFYX1BVU0hfSUQg
b24gdGhlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuTUFY
X1BVU0hfSUQsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1F
X1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hfSUQiKSwKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIGNv
bnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgY29udHJvbCBz
dHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAg
ICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGNvbnRyb2wgc3Ry
ZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRhdGE9ZW5jb2RlX3Vp
bnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVp
Y19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29k
ZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAiT25seSBvbmUg
Y29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBTRVRUSU5HUyBvbiBh
IHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAg
ICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0x
NSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlBVU0gp
CisgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVzaCBJRAorICAgICAg
ICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAg
ICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQs
CisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQg
ZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVyIHN0cmVhbS4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0KKyAgICAgICAgaDNf
Y2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAgICAgICAgICBlbmRf
c3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNl
aXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZl
bnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
IEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAi
T25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9zdHJlYW1f
ZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBvbiB0
aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9uLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAg
ICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2Vp
dmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAgICAgICAgICAgICBkYXRh
PWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsgYiJceDAwIiwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIFFQ
QUNLIGVuY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBG
YWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgz
Q29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUgYSBmaXJzdCBlbmNv
ZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
U3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBzdHJlYW0KKyAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAgZGF0YT1l
bmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKKyAgICAgICAgICAgICAg
ICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VS
Uk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBpcyBh
bGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSB0cmlnZ2VycyBh
biBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWlj
Q29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24o
aXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0
aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAg
ICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTcs
CisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19F
TkNPREVSKSArIGIiXHgwMCIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5DT0RFUl9T
VFJFQU1fRVJST1IsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVz
dF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3Vs
ZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVkLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJh
bWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlMRUQsICIi
KQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9kYXRhX2Jl
Zm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBy
ZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgorICAgICAgICAiIiIKKyAgICAg
ICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNf
c2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkRB
VEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQ
RUNURUQsCisgICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhp
cyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0ZXIgcmVjZWl2aW5n
IHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWND
b25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihp
c19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9v
IildLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgKQorICAgICAgICBoM190cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3RyZWFt
PUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAorICAgICAgICAgICAg
ICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVf
cHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBz
ZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJlcXVlc3Qgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLCBiIiIpLAor
ICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNs
b3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAiQ2xp
ZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAg
ICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19z
ZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX2Zy
YW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFt
PUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JD
b2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0
IHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgorICAg
ICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3Nl
cnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLl9tYWtlX3Jl
cXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSBzZWNvbmQg
cmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2Vy
dmVyKQorCisgICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBkeW5hbWljIHRhYmxl
CisgICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisK
KyAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBo
M19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAg
ICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAg
ICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAj
IHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25l
eHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFk
ZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAg
ICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJj
bGllbnQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09
VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAg
ICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAg
ICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAo
YiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBl
IiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
eC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUg
cmVzcG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBo
M19jbGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2VsZik6CisgICAgICAg
IHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisKKyAg
ICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICBoM19z
ZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyBzZW5kIHJlcXVl
c3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwK
KyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngt
Zm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNf
Y2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRf
c3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
ImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwK
KyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBz
ZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgzX3NlcnZlci5zZW5k
X3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKKworICAgICAgICAjIHNlbmQgcmVzcG9uc2UK
KyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6c3Rh
dHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAg
ICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVy
cygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKKyAgICAgICAgICAgIGhl
YWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxh
aW4iKV0sCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICApCisgICAgICAg
IGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkLCBkYXRhPWIidGV4
dCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcHVzaCBwcm9taXNlIC8g
cmVwb25zZQorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZlciwgaDNfY2xp
ZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXZlbnRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhv
ZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRw
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC50eHQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
aCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAor
ICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibCIs
IHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFS
ZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKKyAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxhaW4iKV0s
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBz
dHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1G
YWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIngi
LCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRl
ZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
IiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9MCksCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1
c2goc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19j
bGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlv
bihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVh
bV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
M190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9z
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIHB1c2hfc3Ry
ZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvYXBw
LmNzcyIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCisKKyAgICAgICAgICAgIHB1
c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0
aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBi
Ii9hcHAuanMiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxo
dG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyDCoGZ1bGZpbGwgcHVzaCBw
cm9taXNlcworICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvY3NzIild
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1w
dXNoX3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgZGF0YT1iImJvZHkgeyBjb2xvcjog
cGluayB9IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7Iiwg
ZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSBw
dXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKKworICAgICAgICAgICAg
ZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50
LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQtdHlwZSIsIGIidGV4
dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFt
X2lkX2NzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0
cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4X3B1c2hfaWQoc2Vs
Zik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQs
IHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWlj
X2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZl
cikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFu
c2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDAsIDgpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1hdChpKS5lbmNvZGUo
ImFzY2lpIikpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQorICAgICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKKyAgICAgICAgICAgICAgICBoM19z
ZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLzguY3NzIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJhaWxlcnMuCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJl
YW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9z
dHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZy
YW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCisKKyAgICBkZWYg
dGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAg
c3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxv
IiwgZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfaGVhZGVyc19hZnRlcl90
cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBI
RUFERVJTIGFmdGVyIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2Ns
aWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hl
YWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNv
bWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJhaWxlciIsIGIiZm9v
IildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJjYzAw
MDAwMDBmYWNlYjAwYyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9
NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3Ry
ZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjAwNDA4
ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJjMjA3MjY1NjE2MzY4
MjAiCisgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcwNmY2
OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2OTYx
NjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCisgICAgICAgICAgICAgICAg
ICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50Lmhh
bmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJpbmFz
Y2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIzZmUxMDFjNjk2ZDA3YWJl
OTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0
aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNo
byByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0
cmVhbV90cmFpbGVyKHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVj
dGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1
aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAg
ICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAg
ICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBjIgor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgwMiIs
IGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9l
dmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRhdGE9
YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgwMTdk
NDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJkYXRlIiwgYiJN
b24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwMDQwOGQ3OTZmNzUy
MDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYxNjM2ODIwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5NmU3
NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCisgICAgICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2MTcy
Njk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgorICAgICAgICAgICAg
ICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTczIgorICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0aGUgL2VjaG8g
ZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNobyByZXNwb25z
ZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIKKyAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdW5pX3N0cmVh
bV9ncmVhc2Uoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9zdHJl
YW1fZGF0YSgKKyAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
CisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICB3aXRo
IGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6Cisg
ICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1
aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDNf
Y2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwg
YiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0g
aDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgZW5k
X3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5k
X2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIildLAorICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBy
ZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9k
eT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBoM19jbGllbnRfYW5k
X3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDNf
c2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHVua25v
d24gc3RyZWFtIHR5cGUgOQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAgICAgICBxdWljX2Ns
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtleXMo
KSksIFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1b
Ml0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorCisgICAgICAgICAgICAjIHVua25vd24gc3RyZWFt
IHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1U
cnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCisKKyAgICAg
ICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNf
c2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2VydmVy
Ll9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
M19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwgYiJceDQwIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uc3RyZWFtX3R5
cGUsIE5vbmUpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zl
cihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUs
IDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1
ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVh
bVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI3YzUyMDkzOGUyY2YyNGFlYjc2YjkxOWQ5NjdhZmJjNmM2ZWVlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQpAQCAtMCwwICsxLDM3IEBA
Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5sb2dn
ZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBRdWljTG9nZ2VyVGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIGxvZ2dlciA9IFF1aWNMb2dnZXIo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci50b19kaWN0KCksIHsicWxvZ192ZXJz
aW9uIjogImRyYWZ0LTAxIiwgInRyYWNlcyI6IFtdfSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3Ry
YWNlKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICAgICAgdHJhY2Ug
PSBsb2dnZXIuc3RhcnRfdHJhY2UoaXNfY2xpZW50PVRydWUsIG9kY2lkPWJ5dGVzKDgpKQorICAg
ICAgICBsb2dnZXIuZW5kX3RyYWNlKHRyYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgbG9nZ2VyLnRvX2RpY3QoKSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAgICAgICAidHJhY2Vz
IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY29t
bW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0RDSUQiOiAiMDAw
MDAwMDAwMDAwMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZV90
aW1lIjogIjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZXZlbnRfZmllbGRzIjogWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZWxhdGl2ZV90aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdv
cnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF90eXBlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbnRhZ2VfcG9pbnQiOiB7Im5hbWUiOiAiYWlvcXVpYyIsICJ0eXBlIjogImNsaWVu
dCJ9LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Bh
Y2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjliN2FhOWE2MTk3NjdhN2Y1YzAzNWY3NzMwZmYzNzFkN2Q1Zjc5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CkBAIC0wLDAgKzEsNTEzIEBACitp
bXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlv
cXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yCitmcm9tIGFpb3F1aWMu
cXVpYyBpbXBvcnQgcGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAg
ICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZLAorICAgIFF1aWNQ
cmVmZXJyZWRBZGRyZXNzLAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMsCisgICAgZGVjb2RlX3BhY2tldF9udW1iZXIsCisgICAgZW5jb2RlX3F1
aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZywKKyAg
ICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcywKKyAg
ICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAgcHVzaF9xdWljX3ByZWZlcnJl
ZF9hZGRyZXNzLAorICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKykKKworZnJv
bSAudXRpbHMgaW1wb3J0IGxvYWQKKworCitjbGFzcyBQYWNrZXRUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9kZWNvZGVfcGFja2V0X251bWJlcihzZWxmKToKKyAgICAgICAgIyBleHBlY3Rl
ZCA9IDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MCksIGkpCisK
KyAgICAgICAgIyBleHBlY3RlZCA9IDEyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29k
ZV9wYWNrZXRfbnVtYmVyKDAsIDgsIGV4cGVjdGVkPTEyOCksIDI1NikKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3Bh
Y2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI4KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVk
ID0gMTI5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwg
OCwgZXhwZWN0ZWQ9MTI5KSwgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9w
YWNrZXRfbnVtYmVyKDEsIDgsIGV4cGVjdGVkPTEyOSksIDI1NykKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoMiwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tl
dF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI5KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVkID0g
MjU2CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDEyOCk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTI1NiksIDI1NiAr
IGkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MjU2KSwgaSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3Ip
OgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQor
CisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX2NsaWVudChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9jbGllbnQuYmluIikpCisgICAgICAgIGhlYWRlciA9
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX0lOSVRJQUwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNj
aWkudW5oZXhsaWZ5KCI4NThiMzkzNjhiOGUzYzZlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5
X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwg
MTI2MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRl
ZiB0ZXN0X3B1bGxfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWxvYWQoImluaXRpYWxfc2VydmVyLmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1
aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklUSUFMKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCIx
OTVjNjgzNDRlMjhkNDc5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2Vu
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDE4NCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRlZiB0ZXN0X3B1
bGxfcmV0cnkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInJldHJ5LmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBl
LCBQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVz
dGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImU5ZDE0NmQ4ZDE0Y2IyOGUiKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5zb3VyY2VfY2lkLAor
ICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KCIwYjBhMjA1YTY0OGZjZjgyZDg1ZjEyOGI2
N2JiZTA4MDUzZTYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVhZGVyLnRva2VuLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICI0NDM5N2EzNWQ2OTgzOTNjMTM0YjA4YTkzMjczNzg1OWY0NDZkM2Fh
ZGQwMGVkODE1NDBjOGQ4ZGUxNzIiCisgICAgICAgICAgICAgICAgIjkwNmQzZTdhMTExYjUwM2Y5
NzI5Yjg5MjhlNzUyOGY5YTg2YTQ1ODFmOWViYjRjYjNiNTNjMjgzNjYxZSIKKyAgICAgICAgICAg
ICAgICAiODUzMDc0MWE5OTE5MmVlNTY5MTRjNTYyNjk5OGVjMGYiCisgICAgICAgICAgICApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIu
aW50ZWdyaXR5X3RhZywgYmluYXNjaWkudW5oZXhsaWZ5KCJlMWEzYzgwYzc5N2VhNDAxYzA4ZmM5
YzM0MmEyZDkwZCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIu
cmVzdF9sZW5ndGgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTI1
KQorCisgICAgICAgICMgY2hlY2sgaW50ZWdyaXR5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAgICAgICAgICAgICBi
dWYuZGF0YV9zbGljZSgwLCAxMDkpLCBiaW5hc2NpaS51bmhleGxpZnkoImZiYmQyMTliNzM2M2I2
NGIiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBoZWFkZXIuaW50ZWdyaXR5X3RhZywK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVsbF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ2ZXJzaW9uX25lZ290aWF0aW9uLmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uTkVHT1RJQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90
eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9j
aWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY5MmY0
MzM2ZmE5NTFiYTEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyMykKKworICAgIGRlZiB0ZXN0X3B1bGxfbG9u
Z19oZWFkZXJfZGNpZF90b29fbG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKAorICAg
ICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImM2ZmYw
MDAwMTYxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Igor
ICAgICAgICAgICAgICAgICIwMWM1MTRmOTllYzRiYmYxZjdhMzBmOWIwYzk0ZmVmNzE3ZjFjMWQw
N2ZlYzI0Yzk5YTg2NGRhN2VkZSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVs
bF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGVzdGluYXRpb24gQ0lEIGlzIHRvbyBsb25nICgy
MSBieXRlcykiKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9zY2lkX3Rvb19sb25n
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBkYXRhPWJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYzJmZjAwMDAxNjAwMTUwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAgICAgICAgIjAxY2Zj
ZWU5OWVjNGJiZjFmN2EzMGY5YjBjOTQxN2I4YzI2M2NkZDhjYzk3MmE0NDM5ZDY4YTQ2MzIwIgor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9z
dF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlv
biksICJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICgyMSBieXRlcykiKQorCisgICAgZGVmIHRlc3Rf
cHVsbF9sb25nX2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHg4MFx4ZmZceDAwXHgwMFx4MTFceDAwXHgwMCIpCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNf
aGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgZGVm
IHRlc3RfcHVsbF9sb25nX2hlYWRlcl90b29fc2hvcnQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWIiXHhjMFx4MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9j
aWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hlYWRlcihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgic2hvcnRfaGVhZGVyLmJpbiIpKQorICAgICAg
ICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgMHg1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY0NWFhN2I1OWMwZTFh
ZDYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWYudGVsbCgpLCA5KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9oZWFkZXJfbm9fZml4
ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDAiKQorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAg
cHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikK
KworICAgIGRlZiB0ZXN0X2VuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAg
ICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIp
LAorICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoImY5MmY0MzM2ZmE5
NTFiYTEiKSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHg0NTQ3NDcxNiwgUXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhWzE6XSwgbG9hZCgidmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4iKVsxOl0pCisK
KworY2xhc3MgUGFyYW1zVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAg
IGRlZiB0ZXN0X3BhcmFtcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICIwMTAyNjcxMDAyMTBjYzJmZDZlN2Q5N2E1M2FiNWJlODViMjhkNzVj
ODAwODAzMDI0N2U0MDQwNDgwMDVmZmYiCisgICAgICAgICAgICAiYTA1MDQ4MDAwZmZmZjA2MDQ4
MDAwZmZmZjA4MDEwNjBhMDEwMzBiMDExOSIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTEwMDAwLAorICAg
ICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhkNlx4ZTdceGQ5elNc
eGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBtYXhfcGFja2V0X3Np
emU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5MzIxMCwKKyAgICAg
ICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY1NTM1LAorICAg
ICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY1NTM1LAor
ICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1Ob25lLAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4
cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJv
dG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfbGVnYWN5
KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjAwNDcwMDAyMDAxMGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4MDAwODAwMDEwNjAw
MDEwMDAyNiIKKyAgICAgICAgICAgICI3MTAwMDA2MDAwNDgwMDBmZmZmMDAwNTAwMDQ4MDAwZmZm
ZjAwMDQwMDA0ODAwNWZmZmEwMDBhMDAwMTAzMDAiCisgICAgICAgICAgICAiMGIwMDAxMTkwMDAz
MDAwMjQ3ZTQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwKKyAgICAgICAgICAgICAgICBzdGF0
ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhkOXpTXHhhYltceGU4WyhceGQ3XFxc
eDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTIwMjAsCisgICAgICAg
ICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisgICAgICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwKKyAgICAgICAgICAgICAgICBpbml0
aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUzNSwKKyAgICAgICAgICAgICAgICBp
bml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAgICAgICAgICAgICAgICBpbml0aWFs
X21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1z
X3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAg
ICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAg
ICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2Rpc2FibGVfYWN0aXZlX21pZ3JhdGlv
bihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMGMwMCIpCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBw
YXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYs
IHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cyhkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uX2xlZ2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwNDAwMGMwMDAwIikKKworICAgICAgICAjIHBhcnNlCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lv
bj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbj1UcnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWlj
UHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19wcmVmZXJyZWRfYWRk
cmVzcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICIwZDNiOGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUz
MTI2MmM0NTE4ZDYiCisgICAgICAgICAgICAiMzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZi
MmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1
bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzPVF1
aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIx
MzkuMTYyLjEyMy4xMzQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNz
PSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4
OTBceDk1YDciLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJG
XHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwMCkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249
UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcHJlZmVycmVk
X2FkZHJlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgIjAwM2YwMDBkMDAzYjhiYTI3Yjg2MTE1MzI0MDA4OTAyMDAwMDAwMDBm
MDNjOTFmZmZlNjlhNDU0MTE1MzEyNiIKKyAgICAgICAgICAgICIyYzQ1MThkNjMwMTNmMGMyODdl
ZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDgiCisgICAgICAgICAg
ICAiZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJh
bWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZl
cnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisg
ICAgICAgICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisg
ICAgICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFm
ZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1i
ImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5c
XG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAg
ICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd24oc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjgwMDBmZjAwMDEwMCIpCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxs
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3Zl
cnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygpKQorCisgICAg
ZGVmIHRlc3RfcGFyYW1zX3Vua25vd25fbGVnYWN5KHNlbGYpOgorICAgICAgICAjIGZiLm12ZnN0
Lm5ldCBzZW5kcyBhIHByb3ByaWV0YXJ5IHBhcmFtZXRlciA2NTI4MAorICAgICAgICBkYXRhID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwNjQwMDA1MDAwNDgwMDEwNDAwMDAw
NjAwMDQ4MDAxMDQwMDAwMDcwMDA0ODAwMTA0MDAwMDA0MDAwNDgwMSIKKyAgICAgICAgICAgICIw
MDAwMDAwMDgwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDkwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDEw
MDA0ODAiCisgICAgICAgICAgICAiMDBlYTYwMDAwYTAwMDEwMzAwMDMwMDAyNTAwMDAwMDIwMDEw
NjE2MTYxNjE2MjYyNjI2MjYzNjM2MzYzNjQ2IgorICAgICAgICAgICAgIjQ2NDY0ZmYwMDAwMDEw
MCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICAgICAgaWRsZV90aW1lb3V0PTYwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19y
ZXNldF90b2tlbj1iImFhYWFiYmJiY2NjY2RkZGQiLAorICAgICAgICAgICAgICAgIG1heF9wYWNr
ZXRfc2l6ZT00MDk2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9MTA0ODU3NiwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY2NTYw
LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY2
NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT02NjU2MCwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NDI5NDk2NzI5NSwKKyAg
ICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT00Mjk0OTY3Mjk1LAorICAgICAg
ICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2NF9vbmx5KHNlbGYpOgorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhiYTI3Yjg2MTE1
MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyNjJjNDUxOGQ2MzAxMyIKKyAg
ICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2
ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9IHB1bGxfcXVpY19w
cmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNz
KAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz1Ob25lLAorICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDci
LAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4
MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEp
KQorICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmLCBwcmVmZXJyZWRfYWRk
cmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRl
ZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjZfb25seShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDAwMDAwMDAwMDAyNDAwODkwMjAw
MDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNjMwMTMiCisgICAgICAgICAgICAi
ZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNiNCIK
KyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9
ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1aWNfcHJlZmVycmVkX2Fk
ZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlZmVy
cmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAg
ICAgICAgICBpcHY0X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9
KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5
NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAt
RUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcHJlZmVycmVk
X2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKwor
Y2xhc3MgRnJhbWVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWUoc2VsZik6
CisgICAgICAgIGRhdGEgPSBiIlx4MDBceDAyXHgwMFx4MDAiCisKKyAgICAgICAgIyBwYXJzZQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNldCwgZGVsYXkg
PSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdl
c2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZShzZWxmKToKKyAgICAgICAgZGF0
YSA9IGIiXHgwMlx4MDJceDAxXHgwMFx4MDBceDAwIgorCisgICAgICAgICMgcGFyc2UKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFj
a2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1
ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBk
YXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlXzIoc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAwXHgwMyIKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBk
ZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KSwgcmFuZ2UoNSwgNildKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fj
a19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZV8z
KHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgwMVx4MDIiCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBy
YW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyksIHJhbmdlKDUsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6
ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNr
ZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF90
d29fcmFuZ2VzKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA0XHgwMlx4MDJceDAwXHgwMFx4
MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShi
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KSwgcmFuZ2UoMiwgMyksIHJhbmdlKDQsIDUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5n
ZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZTIz
MTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVjNmY3Y2FkODkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDU2OSBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMuY3J5
cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgK
KyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAg
ICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFF1aWNGcmFtZVR5cGUsCisgICAgUXVpY1Byb3Rv
Y29sVmVyc2lvbiwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCAo
CisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tldEJ1aWxkZXJTdG9wLAorICAg
IFF1aWNTZW50UGFja2V0LAorKQorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgRXBvY2gKKworCitk
ZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKKyAgICByZXR1cm4gUXVpY1BhY2tl
dEJ1aWxkZXIoCisgICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAorICAgICAgICBpc19jbGllbnQ9
aXNfY2xpZW50LAorICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgIHBlZXJfY2lkPWJ5
dGVzKDgpLAorICAgICAgICBwZWVyX3Rva2VuPWIiIiwKKyAgICAgICAgc3Bpbl9iaXQ9RmFsc2Us
CisgICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICApCisK
KworZGVmIGNyZWF0ZV9jcnlwdG8oKToKKyAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKKyAgICBj
cnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRydWUsIHZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3Mg
UXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRl
cl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAg
ICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0
X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVp
bGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisK
KyAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBh
Y2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5CisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5J
VElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRl
c3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9
IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVf
Y3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAg
ICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAg
ICAgICAgIyBJTklUSUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDEw
MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisK
KyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQ
QUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWls
ZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAg
ICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdy
YW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBh
Y2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisg
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5n
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5
dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAg
ICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19l
bGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVl
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVy
X2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIo
KQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwK
KyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRv
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBl
LkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJ
QUwsIGVtcHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJ
QUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFj
a2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAx
NDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFD
S0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xNDUsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fc2hvcnRfaGVhZGVyKHNl
bGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEy
MzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1w
dHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGZ1bGwgbGVu
Z3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVy
LnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGVtcHR5CisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hl
Y2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2go
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElB
TCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQs
CisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAg
IGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2VsZik6CisgICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNL
RVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRl
ci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhi
eXRlcygxOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgSEFORFNIQUtFCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0
KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgICMgT05FX1JUVAorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCisgICAgICAgIGJ1ZiA9IGJ1
aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdy
YW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFt
c1swXSksIDkxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tl
dHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAg
ICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
dHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVz
PTI0NCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hBS0UsCisgICAgICAgICAg
ICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxp
Y2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MzQzLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0yLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTMyNywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRl
c3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMg
T05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VU
X1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIu
cmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFt
cworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgYnVp
bGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVz
ID0gMTAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDk3MykKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNl
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMDAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTAwMCwKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3pl
cm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5dGVzID0gMCBvbmx5
IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgorCisgICAgICAgIENoZWNrIENSWVBU
TyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAg
ICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorCisgICAgICAgICMgY2hlY2sg
YnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwg
MCkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3plcm9fYWNr
KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyA9IDAgb25seSBh
bGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBDaGVjayBBQ0sgaXMg
YWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigp
CisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
UXVpY0ZyYW1lVHlwZS5BQ0spCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDY0KSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCA5MikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAg
ICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNL
RVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTkyLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18xKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGRvZXNuJ3QgYWxsb3cg
YW55IHBhY2tldHMuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxk
ZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDExCisKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQo
UEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1z
CisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3Rfc2hvcnRf
aGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAg
IGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5
dGVzID0gODAwCisKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNzczKQor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToK
KyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
ODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxp
Z2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBB
Q0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9ODAwLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAj
IGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9u
dW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzMo
c2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxk
ZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlw
dG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQs
IGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5w
YWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2Vu
dFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAg
ICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fj
a19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAg
ICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Jhbmdlc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDA4YzhhYzZjNTIzNmQxMzYzNDhhZDI0YWJmOWZh
NmQ4NTkzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5n
ZXNldC5weQpAQCAtMCwwICsxLDIzNyBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UK
KworZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKKworY2xhc3Mg
UmFuZ2VTZXRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRfc2luZ2xlX2R1cGxpY2F0
ZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5n
ZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICBkZWYgdGVzdF9hZGRf
c2luZ2xlX29yZGVyZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2Vz
ZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9tZXJnZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDMpXSkK
KworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDMpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKKwor
ICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vcmRlcmVkKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5n
ZXNldC5hZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDAsIDQpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMs
IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KSwgcmFuZ2UoMywgNSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCAzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNSldKQorCisgICAgZGVm
IHRlc3RfYWRkX3JhbmdlX292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDUpXSkKKworICAg
IGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwXzIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0g
UmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAgICAgICByYW5nZXNl
dC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEwLCAxMikKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDE2LCAxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgpLCByYW5nZSgxMCwgMTIpLCBy
YW5nZSgxNiwgMTgpXQorICAgICAgICApCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDE1KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgMTUpLCBy
YW5nZSgxNiwgMTgpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoNiwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDYsIDgp
XSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgcmFuZ2Vz
ZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNCwgNildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgy
LCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwg
NildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9zcGFyc2Uoc2VsZik6Cisg
ICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMild
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDYsIDgpXSkKKworICAgICAgICBy
YW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQorCisgICAgZGVmIHRl
c3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAg
ICByYW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyMCwgMzApCisKKyAg
ICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDEwKSwgcmFuZ2UoMjAsIDMwKV0pCisKKyAgICBkZWYg
dGVzdF9zdWJ0cmFjdF9ub19jaGFuZ2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoNSwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgx
NSwgMjApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyNSwgMzApCisKKyAgICAgICAgcmFuZ2VzZXQu
c3VidHJhY3QoMCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMwKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuc3VidHJhY3QoMTAsIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjApLCByYW5nZSgyNSwgMzApXSkK
KworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0
ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMSwgNCkKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMjApCisgICAgICAgIHJhbmdl
c2V0LmFkZCgzMCwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwg
cmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAs
IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwgcmFuZ2UoMzAsIDQw
KV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDMsIDExKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgMyksIHJhbmdlKDEx
LCAyMCksIHJhbmdlKDMwLCA0MCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Rfc3BsaXQoc2Vs
Zik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQo
MCwgMTApCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDIsIDUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNSwgMTApXSkKKwor
ICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Tm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBib29sKFJhbmdlU2V0KCkpCisKKyAg
ICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiByYW5nZXNldCkKKworICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgw
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCisK
KyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSksIHJhbmdlKDMsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgyIGluIHJh
bmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiByYW5nZXNldCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKDQgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gcmFuZ2VzZXQpCisK
KyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgcjAgPSBSYW5nZVNldChbcmFuZ2UoMCwg
MSldKQorICAgICAgICByMSA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQor
ICAgICAgICByMiA9IFJhbmdlU2V0KFtyYW5nZSgzLCA0KSwgcmFuZ2UoMSwgMildKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMCA9PSByMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
MCA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMCA9PSAwKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyMSA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMSA9PSBy
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIyKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHIxID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIyKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocjIgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cjIgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjIgPT0gMCkKKworICAgIGRlZiB0
ZXN0X2xlbihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdlc2V0KSwgMCkKKworICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdl
c2V0KSwgMSkKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBS
YW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAgICAgciA9IHJhbmdlc2V0
LnNoaWZ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCByYW5nZSgxLCAyKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDQpXSkKKworICAg
IGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3Jhbmdl
KDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyYW5n
ZXNldCksICJSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkiKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzEzZjhmYzhhNGM0MGZiNjQzMTE0NGI4
YzBmYmJkYjdhODBiYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcmVjb3ZlcnkucHkKQEAgLTAsMCArMSwyMjcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHVuaXR0
ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9x
dWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfVFlQRV9JTklUSUFMLCBQQUNLRVRfVFlQRV9P
TkVfUlRUCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY1NlbnRQ
YWNrZXQKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNldAorZnJvbSBh
aW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0UGFjZXIsCisgICAg
UXVpY1BhY2tldFJlY292ZXJ5LAorICAgIFF1aWNQYWNrZXRTcGFjZSwKKyAgICBRdWljUnR0TW9u
aXRvciwKKykKKworCitkZWYgc2VuZF9wcm9iZSgpOgorICAgIHBhc3MKKworCitjbGFzcyBRdWlj
UGFja2V0UGFjZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHNlbGYucGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgZGVmIHRlc3Rfbm9fbWVhc3Vy
ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTAuMCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2Vu
ZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5v
dz0wLjApCisKKyAgICBkZWYgdGVzdF93aXRoX21lYXN1cmVtZW50KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAg
ICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0wLjApCisKKyAgICAgICAgc2Vs
Zi5wYWNlci51cGRhdGVfcmF0ZShjb25nZXN0aW9uX3dpbmRvdz0xMjgwMDAwLCBzbW9vdGhlZF9y
dHQ9MC4wNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF9tYXgs
IDAuMDAwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF90aW1l
LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5wYWNrZXRfdGltZSwg
MC4wMDAwNSkKKworICAgICAgICAjIDE2IHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRf
dGltZShub3c9MS4wKSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRf
c2VuZF90aW1lKG5vdz0xLjApLCAxLjAwMDA1KQorCisgICAgICAgICMgMiBwYWNrZXRzCisgICAg
ICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2Vs
Zi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAwNSkpCisgICAgICAgICAgICBzZWxmLnBh
Y2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDA1KQorICAgICAgICBzZWxmLmFzc2VydEFs
bW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMDUpLCAxLjAwMDEp
CisKKyAgICAgICAgIyAxIHBhY2tldAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBh
Y2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDEpKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0
ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwo
c2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSwgMS4wMDAxNSkKKworICAgICAg
ICAjIDIgcGFja2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpKQor
ICAgICAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAxNSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0xLjAwMDE1KSwgMS4wMDAyKQorCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNvdmVyeVRlc3QoVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNF
ID0gUXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UgPSBRdWlj
UGFja2V0U3BhY2UoKQorICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0UgPSBRdWljUGFja2V0U3Bh
Y2UoKQorCisgICAgICAgIHNlbGYucmVjb3ZlcnkgPSBRdWljUGFja2V0UmVjb3ZlcnkoCisgICAg
ICAgICAgICBpc19jbGllbnRfd2l0aG91dF8xcnR0PUZhbHNlLCBzZW5kX3Byb2JlPXNlbmRfcHJv
YmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLnJlY292ZXJ5LnNwYWNlcyA9IFsKKyAgICAgICAg
ICAgIHNlbGYuSU5JVElBTF9TUEFDRSwKKyAgICAgICAgICAgIHNlbGYuSEFORFNIQUtFX1NQQUNF
LAorICAgICAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFLAorICAgICAgICBdCisKKyAgICBkZWYg
dGVzdF9kaXNjYXJkX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLnJlY292ZXJ5LmRpc2NhcmRf
c3BhY2Uoc2VsZi5JTklUSUFMX1NQQUNFKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X2Fja19lbGljaXRpbmcoc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
c2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwKKyAgICAgICAgKQor
ICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAgICMgwqBwYWNrZXQg
c2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwgc3BhY2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQs
IDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5v
bl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdlc2V0PVJhbmdlU2V0
KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQsIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQsIDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0cyksIDApCisK
KyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucmVjb3Zl
cnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292
ZXJ5Ll9ydHRfbGF0ZXN0LCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVj
b3ZlcnkuX3J0dF9taW4sIDEwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNv
dmVyeS5fcnR0X3Ntb290aGVkLCAxMC4wKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X25vbl9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBhY2tl
dCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9
MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MTIzLjQ1LAorICAg
ICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNFCisKKyAgICAgICAgIyDC
oHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFja2V0X3NlbnQocGFja2V0
LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2lu
X2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0
aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2Vu
dF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBhY2snZAorICAgICAgICBzZWxmLnJl
Y292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlLCBhY2tfcmFuZ2VzZXQ9
UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5vdz0xMC4wCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdo
dCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2Zs
aWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRz
KSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAwLjApCisKKyAgICBkZWYgdGVzdF9vbl9w
YWNrZXRfbG9zdF9jcnlwdG8oc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICBpbl9m
bGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAg
ICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwK
KyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAg
ICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MC4wLAorICAgICAgICAp
CisgICAgICAgIHNwYWNlID0gc2VsZi5JTklUSUFMX1NQQUNFCisKKyAgICAgICAgc2VsZi5yZWNv
dmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisgICAgICAgIHNlbGYu
cmVjb3ZlcnkuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9MS4wKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisKK2NsYXNzIFF1aWNS
dHRNb25pdG9yVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbW9uaXRvcihzZWxmKToKKyAg
ICAgICAgbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwLCBub3c9MTAwMCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAw
LjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAg
ICMgbm90IHRha2VuIGludG8gYWNjb3VudAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0
b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAwLjBdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5vdz0xMDAxKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAwLjAsIDAu
MCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEyLCBu
b3c9MTAwMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEw
LCAxMSwgMTIsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9y
ZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTEzLCBub3c9MTAwMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
c2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgICMgd2Ugbm93IGhhdmUgZW5vdWdoIHNhbXBsZXMK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0x
NCwgbm93PTEwMDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMs
IFsxMCwgMTEsIDEyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9uaXRvci5f
cmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFz
aW5nKHJ0dD0yMCwgbm93PTEwMDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3Iu
X2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0
X2luY3JlYXNpbmcocnR0PTMwLCBub3c9MTAwNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NDAsIG5vdz0xMDA3KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD01MCwgbm93PTEwMDgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTYwLCBub3c9MTAwOSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAxKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NzAsIG5vdz0x
MDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD04
MCwgbm93PTEwMTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNl
cywgMykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTkwLCBub3c9MTAxMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
aW5jcmVhc2VzLCA0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25pdG9yLmlzX3J0dF9p
bmNyZWFzaW5nKHJ0dD0xMDAsIG5vdz0xMDEzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
b25pdG9yLl9pbmNyZWFzZXMsIDUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3NmYwMjNiZjkzZGE0YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpAQCAtMCwwICsxLDMwIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5yZXRyeSBp
bXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCisKKworY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5k
bGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmV0cnlfdG9rZW4oc2VsZik6CisgICAg
ICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQpCisgICAgICAgIGNpZCA9IGIiXHgwOFx4MDdc
eDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKKworICAgICAgICBoYW5kbGVyID0gUXVpY1JldHJ5VG9r
ZW5IYW5kbGVyKCkKKworICAgICAgICAjIGNyZWF0ZSB0b2tlbgorICAgICAgICB0b2tlbiA9IGhh
bmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5v
bmUodG9rZW4pCisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIG9rCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCB0b2tlbiksIGNpZCkKKwor
ICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1wdHkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRsZXIudmFsaWRhdGVf
dG9rZW4oYWRkciwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0IGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIGtl
eSBzaXplLiIKKyAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSB3cm9uZyBh
ZGRyZXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRlX3Rva2VuKCgiMS4yLjMuNCIsIDEyMzQ1KSwg
dG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJSZW1v
dGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1MzdhZTJlZDEyYjZmNmMwNDJkMDk5MDRlY2ZiNGYwYzJkZjU3ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKQEAgLTAsMCAr
MSw0NDYgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5w
YWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFtZQorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0X2J1
aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9tIGFpb3F1aWMucXVpYy5zdHJlYW0g
aW1wb3J0IFF1aWNTdHJlYW0KKworCitjbGFzcyBRdWljU3RyZWFtVGVzdChUZXN0Q2FzZSk6Cisg
ICAgZGVmIHRlc3RfcmVjdl9lbXB0eShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIikp
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZm
ZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFu
Z2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9z
dGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3JkZXJlZChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IHN0
YXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFs
c2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5
dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBtb3JlIGRhdGEK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSksCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwg
c3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMo
c3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgICAgICAjIGFkZCBkYXRhIGFuZCBmaW4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD0xNiwgZGF0YT1iIjY3ODkwMTIzIiwgZmluPVRydWUpKSwK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiNjc4OTAxMjMiLCBlbmRfc3Ry
ZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMjQpCisKKyAgICBkZWYgdGVzdF9yZWN2
X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9
MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIlx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwODkwMTIzNDUiCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbcmFuZ2UoOCwg
MTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0
LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9m
ZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9
MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVmIHRlc3RfcmVjdl9vZmZzZXRfb25seShzZWxmKToK
KyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFk
ZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAg
ICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIiIpKSwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVj
dl9idWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9mdWxseV9jb25zdW1lZChzZWxmKToKKyAgICAg
ICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRh
IGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBk
YXRhIGFnYWluIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAx
MjM0NTY3IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICBkZWYgdGVzdF9yZWN2X2FscmVhZHlf
cGFydGlhbGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0
cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiKSksCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lk
PTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9y
ZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5f
cmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3Zf
YnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVk
KGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVl
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfZmluX291dF9vZl9vcmRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShz
dHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4IHdpdGggRklOCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1
aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAg
ICAgICAgICAgIE5vbmUsCisgICAgICAgICkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNl
dCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY3Zf
ZmluX3RoZW5fZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1f
aWQ9MCkKKyAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAs
IGRhdGE9YiIiLCBmaW49VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhj
ZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZy
YW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHIoY20uZXhjZXB0aW9uKSwgIkRhdGEgcmVjZWl2ZWQgYmV5b25kIEZJTiIpCisKKyAgICBk
ZWYgdGVzdF9yZWN2X2Zpbl90d2ljZShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1Njci
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5k
X3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEy
MzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIi
IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X3JlY3ZfZmluX3dpdGhvdXRfZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIiwgZmlu
PVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiIiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRf
ZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBub3Ro
aW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEKKyAg
ICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3Nl
bmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5r
CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdl
dF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMg
Zmlyc3QgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVs
aXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDAsIDgpCisKKyAgICAgICAgIyBzZWNvbmQg
Y2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDgsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRh
X2FuZF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisgICAgICAg
ICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBk
YXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVu
ZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2Vu
ZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAj
IHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEyMzQ1IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
NikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0KHNlbGYpOgorICAgICAgICBzdHJlYW0g
PSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0
ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3Iiwg
ZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNl
bmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZp
bj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8g
c2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAg
ICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVy
eShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgOCldKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2Vu
ZCBjaHVuayBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
ZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1G
YWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2xvc3Rf
ZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5v
dGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBh
bmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3Ry
ZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3Ry
ZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
cmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVh
bUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisK
KyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
bmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAg
ICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCA4LCAx
NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFt
RnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbSgpCisgICAgICAgIG1heF9vZmZzZXQgPSAxMgorCisgICAgICAgICMgbm90aGluZyB0byBz
ZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgd3JpdGUgZGF0YSwg
c2VuZCBhIGNodW5rCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiKQor
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShm
cmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2Uo
OCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgOCkKKworICAgICAgICAjIHNlbmQgaXMgbGltaXRlZCBieSBwZWVyCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiODkwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAx
NildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
MikKKworICAgICAgICAjIHVuYWJsZSB0byBzZW5kLCBibG9ja2VkCisgICAgICAgIGZyYW1lID0g
c3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5k
aW5nKSwgW3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHdyaXRlIG1vcmUgZGF0YSwgc3RpbGwg
YmxvY2tlZAorICAgICAgICBzdHJlYW0ud3JpdGUoYiJhYmNkZWZnaCIpCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDEyLCAyNCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHBlZXIgcmFpc2VzIGxpbWl0LCBz
ZW5kIHNvbWUgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBz
dHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIyMzQ1YWJjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMTIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgyMCwg
MjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwg
MjApCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCBhZ2Fpbiwgc2VuZCByZW1haW5pbmcg
ZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0
YSwgYiJlZmdoIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDI0KQorCisgICAgICAgICMgbm90aGluZyBt
b3JlIHRvIHNlbmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9maW5fb25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0u
c2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIEVP
RgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFt
ZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5k
YXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGluZyBtb3Jl
IHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZmZXJfaXNf
ZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Zpbl9vbmx5
X2Rlc3BpdGVfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisK
KyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdy
aXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAg
ICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGlu
ZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZm
ZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF90bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzJkZDU2ZGViOGJhZWFjOTZmY2QxYTNmZTBiYjVmOTQzNWQ3YzBjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpAQCAtMCwwICsxLDE0
MDAgQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3NsCitmcm9t
IHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRj
aAorCitmcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEFsZ29y
aXRobQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IHNlcmlhbGl6
YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1w
b3J0IGVjCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1aWMuYnVmZmVyIGlt
cG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0ICgK
KyAgICBDZXJ0aWZpY2F0ZSwKKyAgICBDZXJ0aWZpY2F0ZVZlcmlmeSwKKyAgICBDbGllbnRIZWxs
bywKKyAgICBDb250ZXh0LAorICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMsCisgICAgRmluaXNoZWQs
CisgICAgTmV3U2Vzc2lvblRpY2tldCwKKyAgICBTZXJ2ZXJIZWxsbywKKyAgICBTdGF0ZSwKKyAg
ICBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcywKKyAgICBwdWxsX2Jsb2NrLAorICAgIHB1bGxf
Y2VydGlmaWNhdGUsCisgICAgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisgICAgcHVsbF9jbGll
bnRfaGVsbG8sCisgICAgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAgICBwdWxsX2Zpbmlz
aGVkLAorICAgIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1bGxfc2VydmVyX2hlbGxv
LAorICAgIHB1c2hfY2VydGlmaWNhdGUsCisgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisg
ICAgcHVzaF9jbGllbnRfaGVsbG8sCisgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAg
ICBwdXNoX2ZpbmlzaGVkLAorICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1c2hf
c2VydmVyX2hlbGxvLAorICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSwKKykKKworZnJvbSAudXRpbHMg
aW1wb3J0ICgKKyAgICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisg
ICAgU0VSVkVSX0tFWUZJTEUsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgbG9h
ZCwKKykKKworQ0VSVElGSUNBVEVfREFUQSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKVsx
MTotMl0KK0NFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUgPSBsb2FkKCJ0bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiIpWy0zODQ6XQorCitDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDExMDAzMTAwMDUwMDA0ODAxMDAw
MDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4MDEwMDAwMDAwMCIKKyAgICBiIjQwMDA0ODEwMDAw
MDAwMDAxMDAwMjQyNTgwMDA4MDAwMjQwNjQwMDBhMDAwMTBhIgorKQorCitTRVJWRVJfUVVJQ19U
UkFOU1BPUlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDEx
MDRmZjAwMDAxMTAwNDUwMDA1MDAwNDgwMTAwMDAwMDAwNjAwMDQ4MDEwMDAwMDAwMDcwMDA0OCIK
KyAgICBiIjAxMDAwMDAwMDA0MDAwNDgxMDAwMDAwMDAwMTAwMDI0MjU4MDAwMjAwMTAwMDAwMDAw
MDAwMDAwMDAwMDAwMCIKKyAgICBiIjAwMDAwMDAwMDAwMDAwMDgwMDAyNDA2NDAwMGEwMDAxMGEi
CispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgYiIwMDU3MDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAwMGZmZmYwMDAyMDAx
MGM1YWM0MTBmYmRkNGZlNmUyYzEiCisgICAgYiI0MjI3OWYyMzFlOGUwMDAwYTAwMDEwMzAwMDQw
MDA0ODAwNWZmZmEwMDBiMDAwMTE5MDAwMTAwMDI2NzEwZmYiCisgICAgYiI0MjAwMGM1YzA2N2Yy
N2UzOTMyMWM2M2UyOGU3YzkwMDAzMDAwMjQ3ZTQwMDA4MDAwMTA2IgorKQorCitTRVJWRVJfUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSU18zID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgIGIiMDA1
NDAwMDIwMDEwMGRjYjUwYTQ0MjUxMzI5NWI0Njc5YmFmMDRjYjVlZmZmZjhhMDAwOWM4YWZlNzJh
NjM5NyIKKyAgICBiIjI1NTQwNzAwMDYwMDA0ODAwMGZmZmYwMDA4MDAwMTA2MDAwNDAwMDQ4MDA1
ZmZmYTAwMDUwMDA0ODAwMGZmZmYiCisgICAgYiIwMDAzMDAwMjQ3ZTQwMDBhMDAwMTAzMDAwMTAw
MDI2NzEwMDAwYjAwMDExOSIKKykKKworCitjbGFzcyBCdWZmZXJUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9wdWxsX2Jsb2NrX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVh
ZEVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDEpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworCitkZWYgY3JlYXRlX2J1ZmZlcnMoKToKKyAgICByZXR1cm4geworICAg
ICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB0
bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgfQorCisKK2RlZiBtZXJn
ZV9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIHJldHVybiBiIiIuam9pbih4LmRhdGEgZm9yIHggaW4g
YnVmZmVycy52YWx1ZXMoKSkKKworCitkZWYgcmVzZXRfYnVmZmVycyhidWZmZXJzKToKKyAgICBm
b3IgayBpbiBidWZmZXJzLmtleXMoKToKKyAgICAgICAgYnVmZmVyc1trXS5zZWVrKDApCisKKwor
Y2xhc3MgQ29udGV4dFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfY2xpZW50KAorICAg
ICAgICBzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lLCBjYWRhdGE9Tm9uZSwgY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFLCAqKmt3YXJncworICAgICk6CisgICAgICAgIGNsaWVudCA9IENvbnRleHQo
CisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAg
IGNhZGF0YT1jYWRhdGEsCisgICAgICAgICAgICBjYWZpbGU9Y2FmaWxlLAorICAgICAgICAgICAg
aXNfY2xpZW50PVRydWUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisgICAgICAg
IGNsaWVudC5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAg
ICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAg
ICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUKQorICAgICAgICByZXR1cm4gY2xpZW50CisKKyAg
ICBkZWYgY3JlYXRlX3NlcnZlcihzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lKToKKyAgICAgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJf
S0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBDb250ZXh0KAorICAgICAgICAgICAgYWxwbl9w
cm90b2NvbHM9YWxwbl9wcm90b2NvbHMsIGlzX2NsaWVudD1GYWxzZSwgbWF4X2Vhcmx5X2RhdGE9
MHhGRkZGRkZGRgorICAgICAgICApCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSA9IGNvbmZp
Z3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VydmVyLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5ID0gY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQorICAgICAgICBzZXJ2ZXIuaGFuZHNoYWtl
X2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4dGVu
c2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBTRVJW
RVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICkKKyAgICAgICAgXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVD
VF9DTElFTlRfSEVMTE8pCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Ns
aWVudF91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudCgpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJc
eDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3Rh
dGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJT05TCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9i
dWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9D
RVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisK
KyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9W
RVJJRlkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0
ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
dGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9t
ZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAg
Y2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZm
ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2NlcnRpZmljYXRlX3ZlcmlmeV9kYXRh
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVs
bG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0
X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAg
ICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmlj
YXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBj
cmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikK
KworICAgICAgICAjIG1lc3Mgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgY2xpZW50
X2lucHV0ID0gY2xpZW50X2lucHV0WzotNTZdICsgYnl0ZXMoNCkgKyBjbGllbnRfaW5wdXRbLTUy
Ol0KKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25z
LCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6CisgICAgICAgICAgICBj
bGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorCisgICAgZGVm
IHRlc3RfY2xpZW50X2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVf
c2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9i
dWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIs
IGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0
ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVy
Z2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYp
CisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICMgc2VuZCBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAg
ICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9G
SU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVm
KQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgIyBtZXNzIHdp
dGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgY2xpZW50X2lucHV0ID0gY2xpZW50X2lu
cHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5j
cnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlz
aGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9y
KToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVu
dF9idWYpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5leHBlY3RlZF9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlcnZlci5z
dGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAg
c2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJz
KCkpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hF
RAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNz
YWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4
MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNF
UlZFUl9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2Fn
ZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgZGVmIF9zZXJ2
ZXJfZmFpbF9oZWxsbyhzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMgc2VuZCBjbGll
bnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAg
IHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVs
bG8KKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVy
LmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKworICAgIGRlZiB0ZXN0
X3NlcnZlcl91bnN1cHBvcnRlZF9jaXBoZXJfc3VpdGUoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fY2lwaGVyX3N1aXRlcyA9IFt0
bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2XQorCisgICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5fY2lwaGVyX3N1aXRlcyA9IFt0bHMu
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0XQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAgICAgICAgICBz
ZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3VpdGUiKQor
CisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG0oc2Vs
Zik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVu
dC5fc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FRDQ0OF0K
KworICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBzaWduYXR1
cmUgYWxnb3JpdGhtIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF92ZXJzaW9u
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBj
bGllbnQuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJT05fMV8yXQorCisgICAg
ICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyh0bHMuQWxlcnRQcm90b2NvbFZlcnNpb24pIGFzIGNtOgorICAgICAgICAgICAg
c2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lv
biIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfYmFkX2ZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYp
OgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8KKyAg
ICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZl
cnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBj
ZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVf
YnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNl
cnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZm
ZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAg
ICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZp
Y2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAjIHNlbmQgZmluaXNo
ZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1
ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBt
ZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgc2VydmVyX2lucHV0ID0gc2Vy
dmVyX2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9yKToKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisKKyAgICBkZWYgX2hhbmRzaGFrZShzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAyMTMp
CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzNTgpCisg
ICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGll
bnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lvbiB0
aWNrZXQpCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNl
cnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVE
KQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCA2MDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAyMzE2KQorCisgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZCwgKHNlc3Npb24gdGlja2V0KQorICAgICAgICAjIHNlbmQgZmluaXNoZWQK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NU
X0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA1MikKKyAg
ICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMgaGFuZGxlIGZpbmlz
aGVkCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9i
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJf
UE9TVF9IQU5EU0hBS0UpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2Vy
dmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMCkK
KworICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAgICAjIGNoZWNrIGNp
cGhlciBzdWl0ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50
LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9T
SEEzODQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c2VydmVyLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2
X0dDTV9TSEEzODQKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNl
cnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2hhbmRz
aGFrZV9lY2RzYV9zZWNwMjU2cjEoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSwgc2VydmVyLmNlcnRpZmljYXRl
X3ByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisg
ICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgKKyAgICAgICAgICAgIGNhZGF0YT1z
ZXJ2ZXIuY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVN
KSwKKyAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
aGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sgQUxQTiBtYXRjaGVz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3RpYXRlZCwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQor
CisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiXSkKKyAgICAgICAg
c2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiLCAiaDMt
MjAiXSkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAg
ICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQu
YWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZl
ci5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0
aF9hbHBuX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudChh
bHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcihhbHBuX3Byb3RvY29scz1bImgzLTIwIl0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoY20uZXhjZXB0aW9uKSwgIk5vIGNvbW1vbiBBTFBOIHByb3RvY29scyIpCisKKyAgICBkZWYg
dGVzdF9oYW5kc2hha2Vfd2l0aF9yc2FfcGtjczFfc2hhMjU2X3NpZ25hdHVyZShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zaWdu
YXR1cmVfYWxnb3JpdGhtcyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTZdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dp
dGhfY2VydGlmaWNhdGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudChjYWZpbGU9Tm9uZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmlj
YXRlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVuYWJsZSB0byBn
ZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93
aXRoX2NlcnRpZmljYXRlX25vX3ZlcmlmeShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2dyZWFz
ZV9ncm91cChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAg
ICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5HUkVBU0UsIHRscy5H
cm91cC5TRUNQMjU2UjFdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisK
KyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
aGFuZHNoYWtlX3dpdGhfeDI1NTE5KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0
ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMgPSBbdGxzLkdyb3Vw
LlgyNTUxOV0KKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIGV4Y2VwdCBVbnN1cHBvcnRlZEFsZ29yaXRobSBhcyBleGM6CisgICAgICAgICAgICBzZWxm
LnNraXBUZXN0KHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfeDQ0OChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xp
ZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5YNDQ4XQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
X2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkQWxn
b3JpdGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCisKKyAg
ICBkZWYgdGVzdF9zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgY2xpZW50X3RpY2tldHMg
PSBbXQorICAgICAgICBzZXJ2ZXJfdGlja2V0cyA9IFtdCisKKyAgICAgICAgZGVmIGNsaWVudF9u
ZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBjbGllbnRfdGlja2V0cy5hcHBlbmQodGlj
a2V0KQorCisgICAgICAgIGRlZiBzZXJ2ZXJfZ2V0X3RpY2tldChsYWJlbCk6CisgICAgICAgICAg
ICBmb3IgdCBpbiBzZXJ2ZXJfdGlja2V0czoKKyAgICAgICAgICAgICAgICBpZiB0LnRpY2tldCA9
PSBsYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgZGVmIHNlcnZlcl9uZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAg
ICAgICBzZXJ2ZXJfdGlja2V0cy5hcHBlbmQodGlja2V0KQorCisgICAgICAgIGRlZiBmaXJzdF9o
YW5kc2hha2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisg
ICAgICAgICAgICBjbGllbnQubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gY2xpZW50X25ld190aWNr
ZXQKKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAg
ICAgIHNlcnZlci5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfbmV3X3RpY2tldAorCisg
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBub3QgdXNlZAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAgICAgICAgICAjIGNoZWNr
IHRpY2tldHMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF90
aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl90aWNr
ZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3RpY2tldHNbMF0u
dGlja2V0LCBzZXJ2ZXJfdGlja2V0c1swXS50aWNrZXQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudF90aWNrZXRzWzBdLnJlc3VtcHRpb25fc2Vj
cmV0LCBzZXJ2ZXJfdGlja2V0c1swXS5yZXN1bXB0aW9uX3NlY3JldAorICAgICAgICAgICAgKQor
CisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlKCk6CisgICAgICAgICAgICBjbGllbnQgPSBz
ZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0g
Y2xpZW50X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2Vy
dmVyKCkKKyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJf
Z2V0X3RpY2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3No
YXJlZF9rZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAg
ICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VS
VkVSX0hFTExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9p
bnB1dCksIDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJf
aW5wdXQpLCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAg
ICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2
ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNz
YWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICAg
ICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAgICAgICAgICAgcmVz
ZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVs
bG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5
LCBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgICAgICBjbGll
bnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RSkKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQorICAg
ICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRs
ZSBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIG5ld19zZXNzaW9uX3RpY2tldAorICAgICAg
ICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfUE9T
VF9IQU5EU0hBS0UpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNl
cnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnRfaW5wdXQp
LCAwKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAg
ICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9kZWNfa2V5KQorCisgICAgICAgICAgICAjIGNoZWNr
IHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgdXNlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNsaWVudC5zZXNzaW9uX3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRf
YmluZGVyKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAg
ICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0KKworICAg
ICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAgIHNlcnZl
ci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAgICAgICAg
ICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAgICAgIGNs
aWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICAgICAg
c2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAgICAgICAg
ICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgdGFtcGVyIHdpdGgg
YmluZGVyCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5
dGVzKDQpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAg
ICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBTSyB2
YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hha2VfYmFkX3By
ZV9zaGFyZWRfa2V5KCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0K
KworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAg
IHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAg
ICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAg
ICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFu
ZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAg
ICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxl
IGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVk
IGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwg
c2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgICAgICAgICAjIHRhbXBlciB3aXRo
IHByZV9zaGFyZV9rZXkgaW5kZXgKKyAgICAgICAgICAgIGJ1ZiA9IHNlcnZlcl9idWZbdGxzLkVw
b2NoLklOSVRJQUxdCisgICAgICAgICAgICBidWYuc2VlayhidWYudGVsbCgpIC0gMSkKKyAgICAg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDEpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYp
CisKKyAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbyBhbmQgYm9tYgorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbGxlZ2FsUGFyYW1ldGVyKToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRf
YnVmKQorCisgICAgICAgIGZpcnN0X2hhbmRzaGFrZSgpCisgICAgICAgIHNlY29uZF9oYW5kc2hh
a2UoKQorICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKQorICAgICAgICBzZWNv
bmRfaGFuZHNoYWtlX2JhZF9wcmVfc2hhcmVkX2tleSgpCisKKworY2xhc3MgVGxzVGVzdChUZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG8oc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikpCisgICAgICAgIGhl
bGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVm
LmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5y
YW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1
YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlk
Y2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8u
Y2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVy
U3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0
ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNI
QUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXBy
ZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZS
MSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNmZmE4MjQwNWEyMTFi
NjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAgICAiOTNjNzY2NWE1
NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFmOThhMWU4NGYxNSIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBb
dGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1Nf
UlNBRV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsIFt0bHMuR3JvdXAuU0VDUDI1
NlIxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnN1cHBv
cnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjgs
CisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5v
dGhlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAg
ICAgICAiZWQ1NzVjNmZiZDU5OWM0ZGZhYWJkMDAzZGNhNmU4NjBjY2RiMGUxNzgyYzFhZjAyZTU3
YmYyN2NiNjQ3OWI3NiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWxsby5zZXNzaW9uX2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAg
ICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5FTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5j
b21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAg
ICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJv
dG9jb2xzLCBbImgzLTE5Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uZWFybHlf
ZGF0YSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4ODQyMzE1YzQzN2Ji
MGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGViYjBkNCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5MTU1ODY2ZTI2NGM5
ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgorICAgICAgICAgICAgICAgICAgICAgICAgIjIy
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2ZXJf
bmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hB
MjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDM4
NFIxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNB
X1NFQ1A1MjFSMV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRo
bS5FRDI1NTE5LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUQ0NDgs
CisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19T
SEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BT
U19TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisg
ICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKKyAgICAgICAgICAgICAgICB0bHMuR3Jv
dXAuU0VDUDM4NFIxLAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQNTIxUjEsCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3Vw
cG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hl
bGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAgICAgICBo
ZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKKyAgICAgICAgICAgIHRscy5PZmZlcmVkUHNr
cygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBlNjAxNTkxYTc1MGI4
MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
NDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBhNGJmZTQwMmQ2YTA2
YTAwNTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUyMDg1MjMzYjY5ZDBk
ZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFiIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJmNGE5OTRmY2E3NGVl
N2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bCisgICAgICAgICAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIx
Nzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3ZGEzMjgxMWI1YmFl
NGU3OCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5YjcxMzg3MmYyYmIyODgx
OGNhMWE2YjAxIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQor
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQor
CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5ZjdmNjE5NjNkN2I2NDA0
ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIyNmIxOWJkZDMwZGJm
NzUxMDE1YTNhMTZlMTNiZDU5MDAyZGZlNDIwYjc5OWQyYTVjZDVlMTFiOGZhN2JjYjY2IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2Rz
LCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0YjYyZDcwZjkwN2M4MTRjZDY1ZDBmNzNiOGI5OTFm
MDZiNzBjNzcxNTNmNTQ4NDEwYTE5MWQyYjE5NzY0YTIiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZWNjMDYwNjVhNDgwZWZhOWUxZjEwYzhkYTZlNzM3ZDViZmMwNGJlM2Y3NzNlMjBhMGM5OTdm
NTFiNTYyMTI4MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI0MCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hh
bmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsICJjbG91ZGZsYXJl
LXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxv
LnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9y
dGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMsCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9u
VHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICBDTElF
TlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0
aF9zbmkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX2NsaWVudF9oZWxsbyhzZWxmKToKKyAg
ICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1iaW5hc2NpaS51
bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1
ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMx
MzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1bCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1bdGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTExdLAorICAgICAgICAgICAga2V5X3NoYXJlPVsKKyAgICAgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAg
ICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNDdi
ZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFlYjhkMWQ5NDRlNjdh
ZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2QwMzJjZmFmMjJhNzNk
YTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCisgICAgICAgICAgICAgICAg
ICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM9W3Rscy5Q
c2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0sCisgICAgICAgICAgICBzaWduYXR1cmVfYWxn
b3JpdGhtcz1bCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNE
U0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBzdXBwb3J0
ZWRfZ3JvdXBzPVt0bHMuR3JvdXAuU0VDUDI1NlIxXSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9ucz1bCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfMywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAorICAgICAgICAgICAgICAgIHRs
cy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJT
SU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBvdGhlcl9leHRl
bnNpb25zPVsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5FeHRl
bnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAg
IENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAg
ICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsby5iaW4iKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1s
b2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVy
X2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAg
ICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2
MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4
NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJl
c3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0
YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAg
ICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNh
MTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9OXzFfMykKKworICAg
IGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAg
ICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICJjY2JhYWYwNGZjMWJkNTE0M2IyY2M2Yjk3NTIwY2YzN2Q5MTQ3MGRiZmM4MTI3MTMx
YTdiZjBmOTQxZTNhMTM3IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAg
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTQ4M2U3ZTg5NWQwZjRjZWMx
NzA4NmIwODQ5NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFiMCIKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJf
c3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRo
b2QuTlVMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtl
eV9zaGFyZSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1
NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgIjA0ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQwNTZiMTY0YTI3Zjc3
MDJjYTMxOGMxNmU0ODgiCisgICAgICAgICAgICAgICAgICAgICIxOGI2NDA5NTkzYjE1YzY2NDlk
NmY0NTkzODdhNTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYyIgorICAgICAgICAg
ICAgICAgICAgICAiNzYiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRM
U19WRVJTSU9OXzFfMykKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bz
ay5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2
ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBw
dWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLAorICAgICAg
ICAgICAgU2VydmVySGVsbG8oCisgICAgICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUz
ZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVh
NTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEws
CisgICAgICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5YzRmMTNl
Y2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJjYTE5NThkN2YzODcz
MTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMiIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5z
aW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVz
aF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
ZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIp
KQorCisgICAgZGVmIHRlc3RfcHVzaF9zZXJ2ZXJfaGVsbG8oc2VsZik6CisgICAgICAgIGhlbGxv
ID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYz
YjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNl
c3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQx
ODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1Igor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMuQ2lwaGVyU3VpdGUu
QUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5D
b21wcmVzc2lvbk1ldGhvZC5OVUxMLAorICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAg
ICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5
YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAg
ICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4
NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbj10bHMuVExT
X1ZFUlNJT05fMV8zLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisg
ICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikpCisKKyAgICBkZWYg
dGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4iKSkKKyAgICAgICAgbmV3X3Nl
c3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNrZXQoCisgICAg
ICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAgICAgIHRpY2tl
dF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25vbmNlPWIiIiwK
KyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkwNjE4NzA0NzA5
NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICksCisgICAgICAgICkK
KworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwKQorICAgICAg
ICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3RpY2tldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tl
dC5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5r
bm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAg
ICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNr
ZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAg
ICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25v
bmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkw
NjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICBv
dGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCisg
ICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnVmLmRhdGEsIGxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKQorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAg
ZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9ucy5iaW4iKQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRf
ZXh0ZW5zaW9ucyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRF
eHRlbnNpb25zKAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5R
VUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS
X1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAgICAgICAgcHVzaF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9u
c193aXRoX2FscG4oc2VsZik6CisgICAgICAgIGRhdGEgPSBsb2FkKCJ0bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
CisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAg
ICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEtMjAiLAorICAgICAgICAgICAgICAgIG90aGVyX2V4
dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VSVkVS
X05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18yLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEx
NSkKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxsX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhf
YWxwbl9hbmRfZWFybHlfZGF0YS5iaW4iKSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5j
cnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRl
bnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAgRW5j
cnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0yMCIs
CisgICAgICAgICAgICAgICAgZWFybHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgIG90aGVy
X2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VS
VkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18zLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVy
KDExNikKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2NlcnRpZmljYXRlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNf
Y2VydGlmaWNhdGUuYmluIikpCisgICAgICAgIGNlcnRpZmljYXRlID0gcHVsbF9jZXJ0aWZpY2F0
ZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMsIFsoQ0VSVElGSUNBVEVf
REFUQSwgYiIiKV0pCisKKyAgICBkZWYgdGVzdF9wdXNoX2NlcnRpZmljYXRlKHNlbGYpOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKAorICAgICAgICAgICAgcmVxdWVzdF9jb250
ZXh0PWIiIiwgY2VydGlmaWNhdGVzPVsoQ0VSVElGSUNBVEVfREFUQSwgYiIiKV0KKyAgICAgICAg
KQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxNjAwKQorICAgICAgICBwdXNoX2NlcnRpZmljYXRl
KGJ1ZiwgY2VydGlmaWNhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxv
YWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2VydGlmaWNh
dGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2Vy
dGlmaWNhdGVfdmVyaWZ5LmJpbiIpKQorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRl
X3ZlcmlmeShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuYWxnb3JpdGhtLCB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyaWZ5
LnNpZ25hdHVyZSwgQ0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICB2ZXJpZnkgPSBDZXJ0aWZp
Y2F0ZVZlcmlmeSgKKyAgICAgICAgICAgIGFsZ29yaXRobT10bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBzaWduYXR1cmU9Q0VSVElGSUNBVEVf
VkVSSUZZX1NJR05BVFVSRSwKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcig0MDAp
CisgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZiwgdmVyaWZ5KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJp
biIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9maW5pc2hlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQorICAgICAgICBmaW5pc2hlZCA9
IHB1bGxfZmluaXNoZWQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBmaW5pc2hlZC52ZXJpZnlf
ZGF0YSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
ZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhm
NDA4ZWM2OCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3B1c2hf
ZmluaXNoZWQoc2VsZik6CisgICAgICAgIGZpbmlzaGVkID0gRmluaXNoZWQoCisgICAgICAgICAg
ICB2ZXJpZnlfZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImYxNTc5
MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZmOWFmMjY4ZjQwOGVj
NjgiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTI4
KQorICAgICAgICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgZmluaXNoZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkKKworCitjbGFzcyBW
ZXJpZnlDZXJ0aWZpY2F0ZVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0
aWZpY2F0ZV9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFNFUlZFUl9DRVJURklMRSwg
InJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZSA9IGxvYWRfcGVtX3g1MDlfY2Vy
dGlmaWNhdGVzKGZwLnJlYWQoKSlbMF0KKworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRs
cy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVy
bl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKworICAgICAgICAgICAgIyBm
YWlsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRp
ZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoY2VydGlm
aWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgInVu
YWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIgorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAorICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2No
YWluX3NlbGZfc2lnbmVkKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1
cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVp
Yy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5y
ZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAg
ICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJzZWxmIHNpZ25lZCBjZXJ0
aWZpY2F0ZSIpCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZp
Y2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNl
cmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1j
ZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICkKKworICAgIEBwYXRjaCgiYWlvcXVpYy50bHMubGliLlg1MDlfU1RPUkVfbmV3
IikKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5faW50ZXJuYWxfZXJyb3Io
c2VsZiwgbW9ja19zdG9yZV9uZXcpOgorICAgICAgICBtb2NrX3N0b3JlX25ldy5yZXR1cm5fdmFs
dWUgPSB0bHMuZmZpLk5VTEwKKworICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2Vj
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRJbnRlcm5hbEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVz
KHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0
ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9u
KSwgIk9wZW5TU0wgY2FsbCB0byBYNTA5X3N0b3JlX25ldyBmYWlsZWQiKQorCisgICAgZGVmIHRl
c3RfdmVyaWZ5X2RhdGVzKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwg
Y3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNh
dGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgICMg
wqB0b28gZWFybHkKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSAoCisg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZSAtIGRhdGV0aW1lLnRp
bWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJlZCkgYXMgY206CisgICAgICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9
Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNt
LmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKworICAgICAgICAj
IHZhbGlkCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tf
dXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNh
dGUubm90X3ZhbGlkX2JlZm9yZQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRj
aCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2Nr
X3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIKKyAgICAg
ICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRh
LCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgdG9vIGxhdGUKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlv
cXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25v
dy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIgKyBkYXRldGltZS50
aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgc2Vjb25kcz0xCisgICAgICAgICAgICApCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJl
ZCkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAg
ICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVy
X25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIg
dmFsaWQiKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Qoc2VsZik6CisgICAgICAgIGNl
cnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorICAg
ICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNv
ZGluZy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0
aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFsaWQKKyAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAg
ICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIiwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0
cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAndGVzdC5leGFtcGxl
LmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIiwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkg
YXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25h
bWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJob3N0bmFtZSAnYWNt
ZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIKKyAgICAgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0X3dpdGhfc3ViamFsdG5hbWUoc2VsZik6CisgICAgICAg
IGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBh
bHRlcm5hdGl2ZV9uYW1lcz1bIiouZXhhbXBsZS5jb20iLCAiZXhhbXBsZS5jb20iXSwKKyAgICAg
ICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsCisgICAgICAgICAgICBjdXJ2ZT1lYy5T
RUNQMjU2UjEsCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNhdGUucHVibGlj
X2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgIHdpdGggcGF0Y2go
ImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191
dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAg
ICAgICAgICAjIHZhbGlkCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9u
YW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0
aWZpY2F0ZSwgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgaW52YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZp
Y2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNt
LmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICdhY21lLmNvbScgZG9lc24n
dCBtYXRjaCBlaXRoZXIgb2YgJyouZXhhbXBsZS5jb20nLCAnZXhhbXBsZS5jb20nIiwKKyAgICAg
ICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUu
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3NmFjZDdjOQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTUzOAp6Y21kO1BWRXhDeSExe31VXntZVj4+cW1ub21kRkxuT3BIdVNvRDhSUjgp
aW1qMkVgY2d2VDxzKWQ5OzEhV258PUwKeldpYXFIPFRsYEJWLTk2dTZLMEJ0RyptTkMwZGNyXldD
SlFvR1Y9MmpnN2VjIyRgZ3hINzJOVm1eSExIXkdKI153CnpqKXIwZUF8UTNsSmlQZyhNWV9wfXky
WXRRV3ZOOTVhXmsjKDc2dWtabVdDIXEjKWY4NTs9RCF7MklkQ2xQXzk4ZAp6cyYoUTlxOTl8fmRI
OT9ZaSVXNys2JiYrUUdLdnhfNDMhTk9BP31kRT9HOGdCMHxBSTVJQ0p1bzZMVHsxaSVTZmUKejcj
QVVYayYlXnd4cndvIzBWditaKVdxMXhGa2VJOC0wXipWTzBybXoqaEB4e0IrWE0rR2JZKGBUI24y
OWNpezd0CnpCZnQzfj94YncrS0R+TD5KZzFsSnYodF53P3RFYiorYS1NOXpHWnJpJippJVAmaXIx
anRod3peND5LKmN5TUJHQQp6TXh7aXRnbjQ8SCRDVjArPndEJDArYDhGNUduLUg0VUokJU4+MV9Y
WVgweWZEbUNJKyZfajxaXk9XKGQ0dHJnNDkKekttQi1vd2UqZVlIeGo+cG9CSnI1YiVwUWo4Rk1j
JWR8UmV9ZDdEXzReQEotZig9PmhAUGVeJWdebjFzVm88fSpsCnpYfFo+RVVjRW9qYjlxO0Q/PUZ2
cFE3KXp2Q2QtO093QU9QZ3RAJmFoeCRyVWpna15ibCVSO1MleU1GTVdVNj1Kcgp6Q1lvUkEpU0tz
PSkoKSk2eVhSbE9jMmFaeFMybX19OShSVClOMmhhfTFFVSlGY1JtIW9AQGdyNnczfU1YSlZPZ1AK
ejEofH1jYHdYfipqenFyeXg0QnJAJFNTfCppckZidyF5bCNAU0VGWCRfKmdib0A9REBYRUI3eGFK
ezMoYERFe0RFCno+WVome1M+TFhEK2c1czVKQDkkJV80NFE2MT5WXj16Z1EreyhsITV0NSRDXiZg
XyNVXnBZJnNXPmVNVCQ3dnkpYQp6OS1QTHNAWkwxcHVBUlAyJSF+fC1pPD1rXjBBcGtpSTEkTVR2
aFcma0h6Q0MjQTIzI0JgNTc3aXYjPkJUdWBWIT4KejFAVG9gS3h2TGNufmpsYG03U1JwJlNFbSkw
Wjl2a2xydEdIS29zK19oX1EoRHptazF5OUsjXkN4alIyUXxGWH5OCnp0KjJ7MzRRZkcobTA4TFJO
KllBJj9tdTx3KityOUc9QjB8S0BASHtxZEB8a1V1YHFDbktiMTJANkZtMXQ4I0ZlPAp6OUx+dGRR
Zl5SY1U8MmJERnRyKEVsI349JD5GYnhJN01DT14+SkAtPEFjJil2bXMkYzkpaTA8X1BFMVpNRCR4
VEgKejJCdlZgakJUMzQ9Kn58ckYzPmt7MV9ncFZpO2FQbWZ5RHh8MXR4N3EjT04oYkVkeXBWUHpq
KXlUJEY+SCVZWCQ1CnpGcWJ0bHNESkg9NiE+IU54ZHl9alVBQCk5JXBZWnojY3lUe1U4MXp9X05K
P0RkJXlHQ2I8VyNUblZQUTFxWlJ0agp6cHw1clJlRH5kNFRFNSMtTkBnc21Vdzd4RC1mZ0ZIaTNn
P0tZTmk+NzlwN2YzQ0A7Iy1uaVUoRyRARGlXPFY1KUMKejRYTW14a042b1pYUW5OZi03IzdHUUl1
fF9ZNWVyP2lYLWQ0Jld2a1llT1lqPSlGUiRySz58RGY/Vm8kal8tNU90CnpJYnVKcW0yITA1PTZi
cUNUZGFQfFBwJGNmRk9eP0VuPTFEdU5BN2p4JkpYTTJtJmwqLUk8bThCPDtgclA0Q3t4Zgp6OChP
d2NJSWB+RjdqdThiMV40RCNaRzN1MGozdiNVK3dxUSp0JUJXfj9OaFopISstNm8tKTZQemx6K3Mo
UWFnQEwKem90X1BgZE90ZV93MH1DZmBQKHBUU0hHTzlxOUx4Vlg2Vz4pJlRzT1E+V3ErNl5XOHFi
Kk04WmB2JGJXQFJhMjlPCnpRdGJ+RG0zTUczX1UrXmZ4JEBnMj0tKkEoNC1NQWE0KDJ5cWw+Y1BT
QHklYDdIMSRPOTIlez1LKn5wX1ZZdlpJVQp6alNwVTcpJVV1NSFeeEBGXztLPjd0TEBXZ2B8Z2xw
SHJYdzZpT0RgdmBIXnglTkFqVCRpO2BEI0djVylFVUxyfTQKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZjA4Mzk1MGI1MzhjMTIzZWI5ZWRjOGZjYmVkOTJlMTkzMjk1NzM1CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAzOTIKemNtVjszMGVBaW4wMEQjdTFPYjQ4ck91PTljT2QwQXZ2MyU5
QzI9bSU3PXIqIyE8YiZhPld7JUclfFdDT0BgclZhCnpsOzhHemVsQDVzJlZpWDc2eDs7flJXJjde
eiVBenUpZil6bEdDK0k2Tz9wY3MhfTxtKDNBWG0qYmhucVgoIS1HWgp6byE0fkJYUmAkWXpHUD1U
ZSZofD5UP2UjVDxJZFdobzVeMEBoZlh3RFU3OUJweUFSM0peP2FAQngzIUB+QkprTTUKekgxPUFE
JjEhRGZ4MnJ4Yz1mJl9qZCpmJTRsLVZsbUUyNkV4dkUqYWImcE5ONzE+bHlDP1hsO2xOTDx1V0Q2
fGUzCnpgRj5FNHZ1MkE5NUA3YSpkKkp8V0BtJkI3c0xublFyen5zKHQ7TGlQPDI9PTEkfX0yZExN
PTE4P28mM2IrPmI/dgp6MV5fRn4jbXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQqUGFKNzdUeFhkYXww
QmRsMzY+ajFDQzBhVE9iOzg4cVpDNSgKemFiSTNZS21FalpxSHxTMVZGWmJJQVl+S0heeyVZZW5g
VT9TJlgob1dtNUR8UU0jc2JIR0Z3XyRveTh7UTNfX0JYCm07e2A+ejg+UFNHOGpXVGAwISV5bjgm
SFd+dEhDJihaKCRFdHlVTVFBUTJ8QDhYVEFGWAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNDBhZWNmYzY5
ZmI4NGQ1YmVkNmIxYWFjOTE2MmVjMTNhMDQ2ODYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1
OAp6Y21aUSVWRUQoKEVVe15tXzIoenZ1fGE0NFJsVjYwfEl1Jmw7bWUtQ19CWiR6ZW9TM2dfV1l7
Q3Rhblh8RjE4JiEKelpNMGJQPUFDfkdVUSo2bzdkKWJaa0xeRG5kZUNUKmt0cVk0RnExSCZGZiRf
cSErSGl8MjZxTm0yNXw7UW1nO3x0CnpVRUU0ZFMpRyElJEclVEV8RXRMJU4+TXVGO19GYDdEU3Fr
ZWVvUWB8NzhPIV8hUlkqWXJSQkRaYG5JZShePzxTTgp6cUg2Zm9POEZUSlUtKmt8Vjk7alo8WH5w
MG0jTFNvbXR4PiQ7OX10NVV9MGZxVlBzK2l2Uk4zSWZWU3V8RmZsVXoKeVUmPihxcE1nUDshSHxL
S2Z1JXUhZnF7VnlPMHo/MDc2ejZecGZDZD8xQ3Z0KDB8eF8+TGtpRmdNbEp4JEkjR0g2CgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Ns
aWVudF9oZWxsb193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEzYTNlNzVlMTRkNmQ5MjkwZjVkYTQy
OWEzMjUwMmQ3YzRjMjZjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDYKemNtWlElVkFOd35l
ajZUPnpjK0dAQDJ9TXRuQ35vbWsjT2NWcExvOzNeLU5FektoPG49cEl5ZWx6IyteaSVwfWFyCnpA
U2wtXjtxVSpZNDVrZG00NkY8KzRKLUB7M35XJUU5Wkl0UlgjdD0oMkxtR2AxMUFITUxrYV5VUD43
K18wNE9OSQp6QWpaSFRvU2MoaW52I34yU2ReKztTZWx1dm16PHg9enxGd0klKXJSUnp5KlhINEJg
eTNLKCYkIyUwTjg9S3QzQzUKemhPd0BwQn1nfD1qKTglZkw1QEwmZ18pSV5qaFRhO2dNKSpVZ051
V2tnTjF7WWdOPW9lbTY0NStMN1JiQGlKNjUjCnptd15mQjN9WGcmMjNNZClOMHRzSiF4LW80NGQq
bTlQbCl8e14zdiV8JShtTkUqfFdiWFdpV1FVLWYoNEcoNmI0fgppLV5KUWlGYGhtP0Z8O2pEJjFi
JnhtI0JyPXl1U24lRExyMTZzUlJJKyhNTV9rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Y2OTVjM2E3YjM3YzI3MDE5YWZhNTFhNjA1MjVjYmJjMTA5NjZiOApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIjR21yQXV6Y3NxTkdF
aXtCe29KK1I2Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+OWx4WGAmWSQ7I3p4
R2VkOFV7OURDU2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlXS2R7VzlgUy1QfV9X
M1YqWTkwJTBzKExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5eDNBCnopJShsLVVI
T3xHKW1YTmNMN1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/XjZnK00+KEEjS18z
Tgp6eiN6alEjbFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERUNjd7VTkxYyY0Rlcq
NVkqM21WTzB6SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9AXkhlRWV2KFBIczdo
T3syYUhgWnF8SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEzZUcpdEA1NXtrb1ZP
anBNZE1xaT1QRWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+QDNIbz50Kl4+UUNn
P1NIJVktVms/dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3RWhuJXp0V3JSR2F6
RVZsWHJpP154Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYkYT4jTnFNClN1R311
JXVDS2tSTCprVEZIWHtJQ0FGQGdTCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU2OGE4NjE2N2ZmMTYxODMxZjNlOTc5ZTc0NTAyYzMwM2UxNmE1ZQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjg2CnpjbVpRJVYzY0JKbz5BTHJCRXJxKGJTQmk1VUVZM3ZlZDA5Uj5KKm1PPXt+
KnQwP2stVnZLNz1lJmMxN0tgK0ZjYAp6bCRGPis+I0d4KD9tdG8zS0ooSmp2dkdudWVwUjFOVl8q
fHo1QHItO1dAS1BFJjB4Jm4mZnYtKiZmdihoT31GNEQKemB3NVk9c1RhT21jaDhoKCtzOyFpWTlH
PWZ1eUVwfmpuaCpXeSpaR094fUBSIyU3LTYkZFkzJm56cTxjYF92NyF5CnprR09iZCkoMzcpNV44
V0AmfVFKfFV9bVk4c2g2Jm9WJkctcVYmTEZsVlBSJXJXTVR4ZVNzMGpydyYqZjJGI0BlKwp6a1lF
c0ZVPVU4dSR1Q1Z3JVNrTHMpaCNUfE94OD16Jjs3clkhVGRpMWdDSyg7MTFrZWRnOCkhMTg8Yns7
KGt1KXQKWGpYK0ByTWd9SVEybkclWUNXalFEYEhXbHUxfENyVAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5z
aW9ucy5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3Mzk3NTUzZWE2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MAp6Y21kO0pVPGhMZmBNO0RROzZEUntBUGIwS2FBamEr
VX0rRndVfD9XXygoRiowZ0BMNkpEOXBnZnp+bUljentDSmoKUWc5PG5wbT5nMFZ4RUw2QDA0fVR1
KiNIMGwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDg0MzZhN2IzMzgzMDc3ZjRhMzlhZDMxOGE1OGIyOGUzYmQzNTcyCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwxLTg2cHxOOFEyKEQ4
V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUzKjErNCNuRj5vXzVO
LXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5dlFWMVFSCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlf
ZGF0YS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5MDY5ZjZiZTNkMmU0NTdlNjNjOTQyZmM5ZjA1NGNkYmFj
NGE5MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE2CnpjbWQ7SlU/XmI3ViptakcxYFktYCl7
SGAzQkxmQzQyOFJEajhOd0pzNz8+Q1ljdXhsYGFTQWs9eCtRKH5kWTAzMQp6fE5uT31hR3FISVRx
fTlIWTZ2PzY4dnshTiF+ZyQ0JjVTQE1raStgXzdYdkYpa2VQd1d7UnNtWDEweXA3QkxoPnEKSzAw
VER6cWEqLW9fOFo2bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Zp
bmlzaGVkLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0YWI3OTRmMzllZjc3
NmZkNWZhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNgp1Y21WKzwwTmVpKjAwMUVJU0NUUmB8
QyZpNXNAcENPJEZaWGkmVTU+b3p7RHFTbih9RCQyPCZKYU5ELVI9CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3Rp
Y2tldC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQzOWI0NzMxZTA0YjNiNmQ2ZDNhNjE1ZmMzM2RlNWRmNzQ2Y2Y1YgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkmfENmZ1RuMStBRDM1RTlC
fDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZFR1JPMER3anFKXiVtIQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Mzc5Mjg5MGFjZTc1MTNjZmI1YWExOGEzNzNhOTQ5ZjQxZGI4Y2Nm
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NAp6Y21aUSFWNmI2ZTN+Vl5eWSZ8Q2ZnVG4xK0FE
MzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUViQ1lAPHkKVDtBaFpjVkVHUk8yOV54V1k1
RG04RjtmfSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGE2YzUxZmU1NjAyOTUxM2I4MzhjNmQyNDMxOWNl
NWM4ZmZkYmY0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTUKemNtVjtNMEEmOUgwMDVUKjFG
ZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ayc0VBSTJmRlBSZ2Z9K3VlCnohT0pxRURj
UmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMihfRCp5cm0xT1BKdE1GMUI3Sz9JOEAmP3E4
OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFsaUNvR1lQJkBFOWlwRzxDSEF4Wj9afVRN
KENjTDRRamVqX0UKSjdSV20wJiQxTipLe0B+YwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlY2NkZjU5YWI5NWU4OWU0MDRjZTIzNGRiM2Y4MWQxOGRlMWUwZWIKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3QjAwNWw+MUkpVXcxcEZKLTZndz0meHBnNFZI
YHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQKel52PU8+aE9tVHwwbDtHPlYkRjY9ZnshbldG
SEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdLP0hAQCZkY2xrCnpSRkI0Mnpmcmo4K0pxYFZS
PFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NTdlkhQTV7bmk9YyYqNGw3bi1kQgpQKGBATm9W
cy0jMjAwSUMyNkkoO2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlNWI3MDczZmRiZTNjYjdiZmZiNzE4YjE0NmRlMjUxMDgz
YmVkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYyCnpjbVY7VDBBMnFBMDA1bz8xRmZpMWFu
WTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6IU9KcUVEY1JpcTA3
QER8aXFKP31RXnZvflJsemMlR0JwemQwMDM0MUQqeXJtMU9QSnRNRjFCN0s/SThAJj9xODgKeipo
XyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hBeFo/Wn1UTShDY0w0
UWplal9FClE3UldtMCYkMkslMDBVLWtafFJkbF95N09eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiYWIyYjY4YTI0OGZiYzUzNDBmMjNlMmE3OTc2
NzA1MGE1ZjVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5w
eQpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gY3J5cHRvZ3JhcGh5IGlt
cG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0IGRlZmF1
bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhh
c2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBv
cnQgZWMKKworCitkZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9uX25hbWUsIGN1cnZl
PWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgorICAgIGtleSA9IGVjLmdlbmVy
YXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1cnZlPWN1cnZlKQor
CisgICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKKyAgICAgICAgW3g1MDkuTmFtZUF0
dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1lKV0KKyAgICApCisK
KyAgICBidWlsZGVyID0gKAorICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVpbGRlcigpCisgICAg
ICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgLmlzc3Vlcl9uYW1lKGlzc3VlcikK
KyAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKKyAgICAgICAgLnNlcmlhbF9u
dW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAgICAubm90X3ZhbGlkX2Jl
Zm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKKyAgICAgICAgLm5vdF92YWxpZF9hZnRl
cihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVkZWx0YShkYXlzPTEw
KSkKKyAgICApCisgICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6CisgICAgICAgIGJ1aWxkZXIgPSBi
dWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAgICB4NTA5LlN1YmplY3RBbHRlcm5hdGl2
ZU5hbWUoCisgICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBmb3IgbmFtZSBpbiBh
bHRlcm5hdGl2ZV9uYW1lc10KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBjcml0aWNhbD1G
YWxzZSwKKyAgICAgICAgKQorICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5LCBoYXNoZXMuU0hB
MjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQorICAgIHJldHVybiBjZXJ0LCBrZXkKKworCitkZWYg
bG9hZChuYW1lKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksIG5hbWUpCisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICBy
ZXR1cm4gZnAucmVhZCgpCisKKworZGVmIHJ1bihjb3JvKToKKyAgICByZXR1cm4gYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQorCisKK1NFUlZFUl9DQUNF
UlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJweWNhY2Vy
dC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFX1dJVEhfQ0hBSU4gPSBv
cy5wYXRoLmpvaW4oCisgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtIgorKQorU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKK1NLSVBfVEVTVFMgPSBmcm96ZW5zZXQo
b3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxpdCgiLCIpKQorCitp
ZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgorICAgIGxvZ2dpbmcuYmFzaWNDb25m
aWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKKworaWYgKAorICAgIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMworICAgIGFuZCBzeXMudmVy
c2lvbl9pbmZvLm1pbm9yID09IDgKKyk6CisgICAgIyBQeXRob24gMy44IHVzZXMgUHJvYWN0b3JF
dmVudExvb3AgYnkgZGVmYXVsdCwKKyAgICAjIHdoaWNoIGJyZWFrcyBVRFAgLyBJUHY2IHN1cHBv
cnQsIHNlZToKKyAgICAjCisgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM5MTQ4
CisKKyAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lvLldpbmRvd3NTZWxl
Y3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3Rp
YXRpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTA5YzkwOTljZWE4YWVlMjhkZWZmYjU1MDYyZDM5M2Qx
YzNiYTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxCmxjbWFGRzAwYlBmKTxrKmtZRzJ7V0Bs
KVR+P0FLSzNnfDY9SVYqZVEhQm11SUozaitXRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGYxM2UxYjJjMzc1M2UyODY5M2Zh
ZTIzODI1MmFmNjdhNzg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSw1NyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfY2xpZW50LmJpbgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvcHljYWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0
LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5j
aW8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9oMC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF90bHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlLmJpbgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50
X2hlbGxvX3dpdGhfYWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
b193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRo
X3NuaS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9h
bHBuX2FuZF9lYXJseV9kYXRhLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQu
YmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXQuYmluCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsby5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy92ZXJzaW9uX25l
Z290aWF0aW9uLmJpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNGVjOTVjOWExNjE2N2Nj
M2VjMGMzMTczNTMyYzU0MDBjMTE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL0xJ
Q0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJz
dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L0NPTlRSSUJVVElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc1YmUxMjZmYjQ1ODljODY1OTk0YzU5ZDYxM2Uz
ZDQxYTdhOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVU
SU5HCkBAIC0wLDAgKzEsMzAgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKworV2UnZCBsb3ZlIHRv
IGFjY2VwdCB5b3VyIHBhdGNoZXMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0LiBU
aGVyZSBhcmUKK2p1c3QgYSBmZXcgc21hbGwgZ3VpZGVsaW5lcyB5b3UgbmVlZCB0byBmb2xsb3cu
CisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50CisKK0NvbnRyaWJ1dGlvbnMgdG8g
dGhpcyBwcm9qZWN0IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBDb250cmlidXRvciBMaWNlbnNl
CitBZ3JlZW1lbnQuIFlvdSAob3IgeW91ciBlbXBsb3llcikgcmV0YWluIHRoZSBjb3B5cmlnaHQg
dG8geW91ciBjb250cmlidXRpb247Cit0aGlzIHNpbXBseSBnaXZlcyB1cyBwZXJtaXNzaW9uIHRv
IHVzZSBhbmQgcmVkaXN0cmlidXRlIHlvdXIgY29udHJpYnV0aW9ucyBhcworcGFydCBvZiB0aGUg
cHJvamVjdC4gSGVhZCBvdmVyIHRvIDxodHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5jb20v
PiB0byBzZWUKK3lvdXIgY3VycmVudCBhZ3JlZW1lbnRzIG9uIGZpbGUgb3IgdG8gc2lnbiBhIG5l
dyBvbmUuCisKK1lvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1pdCBhIENMQSBvbmNlLCBz
byBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCisoZXZlbiBpZiBpdCB3YXMgZm9yIGEg
ZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBkbyBpdAorYWdh
aW4uCisKKyMjIENvZGUgcmV2aWV3cworCitBbGwgc3VibWlzc2lvbnMsIGluY2x1ZGluZyBzdWJt
aXNzaW9ucyBieSBwcm9qZWN0IG1lbWJlcnMsIHJlcXVpcmUgcmV2aWV3LiBXZQordXNlIEdpdEh1
YiBwdWxsIHJlcXVlc3RzIGZvciB0aGlzIHB1cnBvc2UuIENvbnN1bHQKK1tHaXRIdWIgSGVscF0o
aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvYWJvdXQtcHVsbC1yZXF1ZXN0cy8pIGZv
ciBtb3JlCitpbmZvcm1hdGlvbiBvbiB1c2luZyBwdWxsIHJlcXVlc3RzLgorRm9yIGluc3RydWN0
aW9ucyBmb3IgY29udHJpYnV0aW5nIGNvZGUsIHBsZWFzZSByZWFkOgoraHR0cHM6Ly9naXRodWIu
Y29tL2dvb2dsZS9weXdlYnNvY2tldC93aWtpL0NvZGVSZXZpZXdJbnN0cnVjdGlvbgorCisjIyBD
b21tdW5pdHkgR3VpZGVsaW5lcworCitUaGlzIHByb2plY3QgZm9sbG93cworW0dvb2dsZSdzIE9w
ZW4gU291cmNlIENvbW11bml0eSBHdWlkZWxpbmVzXShodHRwczovL29wZW5zb3VyY2UuZ29vZ2xl
L2NvbmR1Y3QvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWJlYTkwMjU0Mjg3NzllMTY0NDU5
YzJhMTIwZTFhMDdhYTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9M
SUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24u
CisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZF
U1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5NzllNjNlNGEw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCkBAIC0w
LDAgKzEsNiBAQAoraW5jbHVkZSBDT1BZSU5HCitpbmNsdWRlIE1BTklGRVNULmluCitpbmNsdWRl
IFJFQURNRQorcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5CityZWN1cnNpdmUtaW5jbHVk
ZSBtb2RfcHl3ZWJzb2NrZXQgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9S
RUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3Y2JlNTUwYzA2NTc4MmIwZTMxNWRlMDQ2NTFjOWUwNjhj
YjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZApAQCAt
MCwwICsxLDM2IEBACisKKyMgcHl3ZWJzb2NrZXQzICMKKworVGhlIHB5d2Vic29ja2V0IHByb2pl
Y3QgYWltcyB0byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUpIHN0YW5kYWxvbmUgc2VydmVyLgorCitweXdlYnNvY2tldCBpcyBpbnRlbmRl
ZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBlcmltZW50YWwqKiBwdXJwb3Nlcy4KKworUnVuIHRo
aXMgdG8gcmVhZCB0aGUgZ2VuZXJhbCBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJz
b2NrZXQKK2BgYAorCitQbGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBmb3IgbW9yZSBkZXRh
aWxzLgorCisjIElOU1RBTEwgIworCitUbyBpbnN0YWxsIHRoaXMgcGFja2FnZSB0byB0aGUgc3lz
dGVtLCBydW4gdGhpczoKK2BgYAorJCBweXRob24gc2V0dXAucHkgYnVpbGQKKyQgc3VkbyBweXRo
b24gc2V0dXAucHkgaW5zdGFsbAorYGBgCisKK1RvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6CisKK2BgYAorJCBweXRob24gc2V0dXAucHkg
YnVpbGQKKyQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCitgYGAKKyMgTEFVTkNIICMK
KworVG8gdXNlIHB5d2Vic29ja2V0IGFzIHN0YW5kYWxvbmUgc2VydmVyLCBydW4gdGhpcyB0byBy
ZWFkIHRoZSBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3RhbmRhbG9u
ZQorYGBgCisjIERpc2NsYWltZXIgIworVGhpcyBpcyBub3QgYW4gb2ZmaWNpYWxseSBzdXBwb3J0
ZWQgR29vZ2xlIHByb2R1Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
YWJvcnRfaGFuZHNoYWtlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRf
aGFuZHNoYWtlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjcxOWNhODk3MzcxMDU3MTljNzFjMmE0MmVh
ZmYwZDQ2NDQ3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbigKKyAgICAgICAgIkFib3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ui
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNGMyNDBiZjJjMWNiMGJkNTM4ZWMzN2JmNTUxYzExMjU2Mzk2YjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkK
QEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAiQWJvcnRlZCBpbiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODY5Y2Q3ZTFlZTY1M2Q1OWYwNGI4MDJmZjM0YzhkMDgxMzE3Y2E4OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVu
Y2htYXJrLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitk
aXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIFBSSU5U
X1NJWkUgPSB0cnVlOworCisvLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgordmFyIFNUQVJUX1NJ
WkUgPSAxMCAqIDEwMjQ7CisvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBh
cnJheSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgordmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAw
ICogMTAyNDsKKy8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3Jl
YWQgdGhlIGFycmF5IG11bHRpcGxlIHRpbWVzCisvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJl
YWNoZXMgdGhpcyB0aHJlc2hvbGQuCit2YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKK3Zh
ciBNVUxUSVBMSUVSUyA9IFs1LCAyXTsKKworLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJh
bCB0aW1lcyB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAorLy8gKHN1Y2ggYXMg
SklUKSBydW4uCit2YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOworCitmdW5jdGlvbiB3cml0ZUJl
bmNobWFyayhzaXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUg
KHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKHNpemUpOworCisgICAgLy8gV3JpdGUgJ2Ency4KKyAgICBmaWxsQXJyYXlCdWZmZXIo
YXJyYXlCdWZmZXIsIDB4NjEpOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0
dXJuIHRvdGFsU2l6ZTsKK30KKworZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3Rh
bCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFs
KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAg
aWYgKCF2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKKyAgICAgIHF1ZXVl
TG9nKCdWZXJpZmljYXRpb24gZmFpbGVkJyk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg
ICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworZnVu
Y3Rpb24gcnVuQmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKKyAgICAgICAg
ICAgICAgICAgICAgICBtaW5Ub3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVy
cywKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKKyAgd2hpbGUgKHNp
emUgPD0gc3RvcFRocmVzaG9sZCkgeworICAgIHZhciBtYXhTcGVlZCA9IDA7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKKyAgICAgIHZhciBzdGFy
dFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5j
aG1hcmtGdW5jdGlvbihzaXplLCBtaW5Ub3RhbCk7CisKKyAgICAgIG1heFNwZWVkID0gTWF0aC5t
YXgobWF4U3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5L
Qih0b3RhbFNpemUsIHN0YXJ0VGltZUluTXMpKTsKKyAgICB9CisgICAgcXVldWVMb2coZm9ybWF0
UmVzdWx0SW5LaUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKKworICAgIHNpemUgKj0g
bXVsdGlwbGllcnNbbXVsdGlwbGllckluZGV4XTsKKyAgICBtdWx0aXBsaWVySW5kZXggPSAobXVs
dGlwbGllckluZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7CisgIH0KK30KKworZnVuY3Rp
b24gcnVuQmVuY2htYXJrcygpIHsKKyAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNw
ZWVkIGluIGtCL3MnKTsKKworICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7CisgIHJ1bkJl
bmNobWFyaygKKyAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9M
RCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwor
CisgIHF1ZXVlTG9nKCdSZWFkIGJlbmNobWFyaycpOworICBydW5CZW5jaG1hcmsoCisgICAgICBy
ZWFkQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxU
SVBMSUVSUywgMCk7CisgIGFkZFRvTG9nKCdGaW5pc2hlZCcpOworfQorCitmdW5jdGlvbiBpbml0
KCkgeworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisKKyAgcXVl
dWVMb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisKKyAgYWRk
VG9Mb2coJ1N0YXJ0ZWQuLi4nKTsKKworICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzx0ZXh0YXJl
YQorICAgIGlkPSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5Pjwv
dGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hf
d3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkZjUwZTc3ZGIyNzZjY2ExZGU0NzIwNTlhMDc0MDcxYjgxYTkz
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dz
aC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkEgc2ltcGxlIGxvYWQg
dGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KKworQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBh
IG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCit0aGlz
IGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNv
Y2tldCBtZXNzYWdlcworY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMu
IDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAordmFsdWUuIDxjb3VudD4gbXVzdCBiZSBh
biBpbnRlZ2VyIHZhbHVlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgdGltZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3
YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgIHBhcnRz
ID0gbGluZS5zcGxpdCgnICcpCisgICAgaWYgbGVuKHBhcnRzKSAhPSAzOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdCYWQgcGFyYW1ldGVyIGZvcm1hdCcpCisgICAgd2FpdCA9IGZsb2F0KHBh
cnRzWzBdKQorICAgIGNvdW50ID0gaW50KHBhcnRzWzFdKQorICAgIG1lc3NhZ2UgPSBwYXJ0c1sy
XQorICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKKyAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxZTVjOTdiM2E3MWJjZjllYmRlN2M0ZmNhZjE1Mzc1Mzg5YjFjNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCkBA
IC0wLDAgKzEsMTc1IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgor
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0Eg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgYmVuY2htYXJrPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGFk
ZHJlc3NCb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRDb25maWcoKSB7CisgIHJldHVybiB7Cisg
ICAgcHJlZml4VXJsOiBhZGRyZXNzQm94LnZhbHVlLAorICAgIHByaW50U2l6ZTogZ2V0Qm9vbEZy
b21DaGVja0JveCgncHJpbnRzaXplJyksCisgICAgbnVtU29ja2V0czogZ2V0SW50RnJvbUlucHV0
KCdudW1zb2NrZXRzJyksCisgICAgLy8gSW5pdGlhbCBzaXplIG9mIG1lc3NhZ2VzLgorICAgIG51
bUl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtaXRlcmF0aW9ucycpLAorICAgIG51bVdh
cm1VcEl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtd2FybXVwaXRlcmF0aW9ucycpLAor
ICAgIHN0YXJ0U2l6ZTogZ2V0SW50RnJvbUlucHV0KCdzdGFydHNpemUnKSwKKyAgICAvLyBTdG9w
cyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBtZXNzYWdlIGV4Y2VlZHMgdGhpcyB0aHJlc2hv
bGQuCisgICAgc3RvcFRocmVzaG9sZDogZ2V0SW50RnJvbUlucHV0KCdzdG9wdGhyZXNob2xkJyks
CisgICAgLy8gSWYgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlIGlzIHNtYWxsLCBzZW5kL3JlY2Vp
dmUgbXVsdGlwbGUgbWVzc2FnZXMKKyAgICAvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNo
ZXMgdGhpcyB0aHJlc2hvbGQuCisgICAgbWluVG90YWw6IGdldEludEZyb21JbnB1dCgnbWludG90
YWwnKSwKKyAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGll
cnMnKSwKKyAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyks
CisgICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogYWRkVG9TdW1tYXJ5
LAorICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAorICAgIG5vdGlmeUFib3J0OiBub3Rp
ZnlBYm9ydAorICB9OworfQorCitmdW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7CisgIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ3NlbmRCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rpb24gb25SZWNlaXZl
QmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNv
bmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7
Cit9CisKK2Z1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7CisgIHZhciBjb25maWcgPSBnZXRD
b25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ2JhdGNoQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3RvcCgpIHsKKyAgdmFyIGNv
bmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tC
b3goJ3dvcmtlcicpLCAnc3RvcCcpOworfQorCitmdW5jdGlvbiBpbml0KCkgeworICBhZGRyZXNz
Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgbG9nQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisgIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOworCisgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRp
b24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZh
dWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtf
aGVscGVyJzsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7CisKKyAgYWRk
VG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisgIGFkZFRv
U3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKKworICBp
ZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBp
cyBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBpbml0V29ya2VyKCcnKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8ZGl2IGlkPSJiZW5jaG1hcmtf
ZGl2Ij4KKyAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgor
ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2ht
YXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0i
b25SZWNlaXZlQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0
Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+CisKKyAgPGJyLz4KKworICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9InBy
aW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+CisgIDxpbnB1
dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9
InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KKyAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0id29ya2VyIj4KKyAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJl
bD4KKworICA8YnIvPgorCisgIFBhcmFtZXRlcnM6CisKKyAgPGJyLz4KKworICA8dGFibGU+Cisg
ICAgPHRyPgorICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwvdHI+CisgICAg
PHRyPgorICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KKyAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwv
dHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8
L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYQorICAgICAgaWQ9ImxvZyIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2
PgorPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgorICBTdW1tYXJ5CisgIDx0ZXh0YXJlYQorICAgICAg
aWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4
dGFyZWE+Cis8L2Rpdj4KKworTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWluYXRlZC4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzAxNDcyYTRmYWFjNDQ2YjFjOGJkMjQ1NmYyNzFlOTM0ZGI1NzFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKQEAg
LTAsMCArMSwyMzggQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCitpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7CisgIC8v
IFJ1bm5pbmcgb24gYSB3b3JrZXIKKyAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dv
cmtlci5qcycpOworfQorCisvLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KK3ZhciBi
ZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07CisKK3ZhciBzb2NrZXRzID0gW107Cit2YXIg
bnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKwordmFyIHRpbWVySUQgPSBudWxsOworCitmdW5j
dGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgeworICBzb2NrZXQub25vcGVuID0gbnVsbDsKKyAg
c29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7CisgIHNvY2tldC5vbmVycm9yID0gbnVsbDsKKyAgc29j
a2V0Lm9uY2xvc2UgPSBudWxsOworICBzb2NrZXQuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gZGVz
dHJveUFsbFNvY2tldHMoKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7
ICsraSkgeworICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7CisgIH0KKyAgc29ja2V0cyA9
IFtdOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2Fy
bVVwKSB7CisgIHRpbWVySUQgPSBudWxsOworCisgIHZhciB0b3RhbFNpemUgPSAwOworICB2YXIg
dG90YWxSZXBsaWVkID0gMDsKKworICB2YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBldmVudC5kYXRh
LCBzaXplKSkgeworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFsUmVwbGllZCArPSBz
aXplOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2FybVVwKTsKKworICAg
IHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2Nr
ZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07CisgICAgc29j
a2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICB2YXIgZGF0YUFycmF5
ID0gW107CisKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHZh
ciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBmaWxsQXJyYXlCdWZmZXIo
YnVmZmVyLCAweDYxKTsKKworICAgIGRhdGFBcnJheS5wdXNoKGJ1ZmZlcik7CisgICAgdG90YWxT
aXplICs9IHNpemU7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHRvdGFsU2l6ZSA9IDA7CisKKyAgdmFyIHNvY2tldEluZGV4ID0gMDsKKyAg
dmFyIGRhdGFJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwp
IHsKKyAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOworICAgIGNvbW1hbmQucHVzaChjb25maWcu
dmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChj
b21tYW5kLmpvaW4oJyAnKSk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChkYXRhQXJy
YXlbZGF0YUluZGV4XSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNv
Y2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgICAgKytkYXRhSW5kZXg7
CisgIH0KK30KKworZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBp
c1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxTaXplID0gMDsKKyAg
dmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5ieXRlTGVuZ3Ro
OworICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKKyAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCisgICAgICAgICAgYnl0
ZXNSZWNlaXZlZCArICdCJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29u
ZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbmZp
Zy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVudC5kYXRhLCAweDYxKSkgewor
ICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmljYXRpb24gZmFpbGVkJyk7Cisg
ICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7
CisKKyAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJr
LnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKKyAgICAgICAgaXNXYXJtVXApOworCisgICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKKyAgfTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMu
bGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKKyAgICBzb2NrZXQu
YmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7CisgICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVz
c2FnZUhhbmRsZXI7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBj
b25maWcubWluVG90YWwpIHsKKyAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKCdyZWNlaXZl
ICcgKyBzaXplKTsKKyAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0
cy5sZW5ndGg7CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorfQorCitmdW5jdGlvbiBj
cmVhdGVTb2NrZXQoY29uZmlnKSB7CisgIC8vIFRPRE8odHlvc2hpbm8pOiBBZGQgVENQIHdhcm0g
dXAuCisgIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOworCisgIGNvbmZpZy5hZGRUb0xvZygn
Q29ubmVjdCAnICsgdXJsKTsKKworICB2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
ICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBjb25maWcuYWRkVG9M
b2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRpbmcuJyk7CisgIH07CisgIHNv
Y2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdFcnJvcicp
OworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgY29uZmln
LmFkZFRvTG9nKCdDbG9zZWQnKTsKKyAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgfTsKKyAg
cmV0dXJuIHNvY2tldDsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7Cisg
IGNsZWFyVGltZW91dCh0aW1lcklEKTsKKyAgZGVzdHJveUFsbFNvY2tldHMoKTsKKworICBudW1F
c3RhYmxpc2hlZFNvY2tldHMgPSAwOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVNvY2tldHM7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQoY29uZmlnKTsK
KyAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICBjb25maWcuYWRkVG9Mb2co
J09wZW5lZCcpOworCisgICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKKworICAgICAgaWYg
KG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgeworICAgICAgICBydW5O
ZXh0VGFzayhjb25maWcpOworICAgICAgfQorICAgIH07CisgICAgc29ja2V0cy5wdXNoKHNvY2tl
dCk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgeworICByZXR1
cm4gJyhXZWJTb2NrZXQnICsKKyAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAi
dW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCisgICAgJywgbnVtU29ja2V0cz0nICsg
Y29uZmlnLm51bVNvY2tldHMgKworICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1J
dGVyYXRpb25zICsKKyAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCisg
ICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCisgICAgJywgbnVtV2FybVVwSXRl
cmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKworICAgICcpJzsKK30KKwor
ZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnQmF0
Y2ggYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIGFk
ZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRp
bmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKworICAgICAgZ2V0Q29uZmlnU3Ry
aW5nKGNvbmZpZykpOworICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiBj
bGVhbnVwKCkgeworICBkZXN0cm95QWxsU29ja2V0cygpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxNzUz
MzMzNTRjYzljODg1NjJjZjZmYzgxZWYzMjYwOTM3Mjk4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKQEAgLTAsMCAr
MSw4NCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4i
IiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4CisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCisgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBkYXRh
ID0gYicnCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjb21tYW5kID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgY29tbWFuZCBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWFuZCwgc2l4
LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1h
bmQgZGF0YTonICsgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZHMgPSBjb21tYW5kLnNwbGl0KCcg
JykKKyAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6ICcgKyBjb21tYW5kKQorCisgICAgICAgIGlm
IGNvbW1hbmRzWzBdID09ICdyZWNlaXZlJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsgY29t
bWFuZCkKKyAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0pCisKKyAgICAgICAgICAg
ICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSBz
aXplOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiJ2EnICogc2l6ZQorICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQorICAgICAgICBl
bGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWNlaXZlIGNvbW1hbmQnICsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKKyAgICAgICAgICAgIHZlcmlmeV9kYXRhID0g
Y29tbWFuZHNbMV0gPT0gJzEnCisKKyAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LndzX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgbm90IHJlY2VpdmVkJykKKyAgICAg
ICAgICAgIHNpemUgPSBsZW4oZGF0YSkKKworICAgICAgICAgICAgaWYgdmVyaWZ5X2RhdGE6Cisg
ICAgICAgICAgICAgICAgaWYgZGF0YSAhPSBiJ2EnICogc2l6ZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmljYXRpb24gZmFpbGVkJykKKworICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHN0cihzaXplKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZDog
JyArIGNvbW1hbmRzWzBdKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjAwMDVmZmVhOTkwNWQ2YzE5N2MwZjRk
ZDU5M2MwNmZmNDM3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw3MCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc3RydWN0CisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5lLnNwbGl0KCcgJywgMSkKKyAgICAgICAgaWYg
Y29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oaW50KGNvZGUpLCByZWFzb24p
CisgICAgICAgICMgY2xvc2VfY29ubmVjdGlvbigpIGluaXRpYXRlcyBjbG9zaW5nIGhhbmRzaGFr
ZS4gSXQgdmFsaWRhdGVzIGNvZGUKKyAgICAgICAgIyBhbmQgcmVhc29uLiBJZiB5b3Ugd2FudCB0
byBzZW5kIGEgYnJva2VuIGNsb3NlIGZyYW1lIGZvciBhIHRlc3QsCisgICAgICAgICMgZm9sbG93
aW5nIGNvZGUgd2lsbCBiZSB1c2VmdWwuCisgICAgICAgICMgPiBkYXRhID0gc3RydWN0LnBhY2so
JyFIJywgaW50KGNvZGUpKSArIHJlYXNvbi5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgIyA+IHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2Nsb3NlX2ZyYW1lKGRhdGEpKQor
ICAgICAgICAjID4gIyBTdXBwcmVzcyB0byByZS1yZXNwb25kIGNsaWVudCByZXNwb25kaW5nIGNs
b3NlIGZyYW1lLgorICAgICAgICAjID4gcmFpc2UgRXhjZXB0aW9uKCJjdXN0b21pemVkIHNlcnZl
ciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UiKQorCisKK2RlZiB3ZWJfc29ja2V0X3Bhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBTaW1wbHkgZWNobyBhIGNsb3Nl
IHN0YXR1cyBjb2RlCisgICAgY29kZSwgcmVhc29uID0gcmVxdWVzdC53c19jbG9zZV9jb2RlLCBy
ZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisgICAgIyBweXdlYnNvY2tldCBzZXRzIHBzZXVkbyBj
b2RlIGZvciByZWNlaXZpbmcgYW4gZW1wdHkgYm9keSBjbG9zZSBmcmFtZS4KKyAgICBpZiBjb2Rl
ID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEOgorICAgICAgICBjb2RlID0gTm9u
ZQorICAgICAgICByZWFzb24gPSAnJworICAgIHJldHVybiBjb2RlLCByZWFzb24KKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29u
c29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4MzQxMWRkZDBiMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCkBAIC0wLDAg
KzEsMzE3IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMg
cmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCEtLQorQSBzaW1w
bGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2NrZXQgc2VydmVyLgorCitUeXBlIGFuIGFkZHJl
c3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5kIGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNo
CitXZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBtZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0
IGlucHV0IGFuZCBjbGljayBzZW5kCit0byBzZW5kIHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50
IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRlIHdpbGwgYmUgc2hvd24KK29uIHRoZSBtaWRk
bGUgdGV4dGFyZWEuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgY29u
c29sZTwvdGl0bGU+Cis8c2NyaXB0PgordmFyIHNvY2tldCA9IG51bGw7CisKK3ZhciBzaG93VGlt
ZVN0YW1wID0gZmFsc2U7CisKK3ZhciBhZGRyZXNzQm94ID0gbnVsbDsKK3ZhciBwcm90b2NvbHNC
b3ggPSBudWxsOwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgbWVzc2FnZUJveCA9IG51bGw7Cit2
YXIgZmlsZUJveCA9IG51bGw7Cit2YXIgY29kZUJveCA9IG51bGw7Cit2YXIgcmVhc29uQm94ID0g
bnVsbDsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICByZXR1cm4gbmV3IERhdGUoKS5n
ZXRUaW1lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBpZiAoc2hvd1RpbWVT
dGFtcCkgeworICAgIGxvZ0JveC52YWx1ZSArPSAnWycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7
CisgIH0KKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdcbicKKyAgLy8gTGFyZ2UgZW5vdWdoIHRv
IGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3NhZ2UuCisgIGxvZ0JveC5zY3JvbGxUb3AgPSAx
MDAwMDAwOworfQorCitmdW5jdGlvbiBzZXRiaW5hcnl0eXBlKGJpbmFyeVR5cGUpIHsKKyAgaWYg
KCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsK
KyAgfQorCisgIHNvY2tldC5iaW5hcnlUeXBlID0gYmluYXJ5VHlwZTsKKyAgYWRkVG9Mb2coJ1Nl
dCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBlKTsKK30KKworZnVuY3Rpb24gc2VuZCgpIHsK
KyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJl
dHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKG1lc3NhZ2VCb3gudmFsdWUpOworICBhZGRUb0xv
ZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7CisgIG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKK30K
KworZnVuY3Rpb24gc2VuZGZpbGUoKSB7CisgIGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2co
J05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgZmlsZXMgPSBmaWxl
Qm94LmZpbGVzOworCisgIGlmIChmaWxlcy5sZW5ndGggPT0gMCkgeworICAgIGFkZFRvTG9nKCdG
aWxlIG5vdCBzZWxlY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKGZp
bGVzWzBdKTsKKyAgYWRkVG9Mb2coJz4gU2VuZCAnICsgZmlsZXNbMF0ubmFtZSk7Cit9CisKK2Z1
bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc1RleHQpIHsKKyAgdmFyIHByb3RvY29scyA9
IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2Nv
bHMubGVuZ3RoOyArK2kpIHsKKyAgICBwcm90b2NvbHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgp
OworICB9CisKKyAgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMCkgeworICAgIC8vIERvbid0IHBh
c3MuCisgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgfSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3Ro
ID09IDEpIHsKKyAgICBpZiAocHJvdG9jb2xzWzBdLmxlbmd0aCA9PSAwKSB7CisgICAgICAvLyBE
b24ndCBwYXNzLgorICAgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgICB9IGVsc2UgeworICAgICAg
Ly8gUGFzcyBhcyBhIHN0cmluZy4KKyAgICAgIHByb3RvY29scyA9IHByb3RvY29sc1swXTsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitmdW5jdGlvbiBjb25uZWN0KCkg
eworICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1ZTsKKyAgdmFyIHByb3RvY29scyA9IHBhcnNl
UHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7CisKKyAgaWYgKCdXZWJTb2NrZXQnIGluIHdp
bmRvdykgeworICAgIGlmIChwcm90b2NvbHMpIHsKKyAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2Nr
ZXQodXJsLCBwcm90b2NvbHMpOworICAgIH0gZWxzZSB7CisgICAgICBzb2NrZXQgPSBuZXcgV2Vi
U29ja2V0KHVybCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldHVybjsKKyAgfQorCisgIHNv
Y2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGV4dHJhSW5mbyA9IFtdOworICAg
IGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYmIHNvY2tldC5wcm90b2NvbCkgeworICAgICAg
ZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyArIHNvY2tldC5wcm90b2NvbCk7CisgICAgfQor
ICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tldCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsK
KyAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNpb25zID0gJyArIHNvY2tldC5leHRlbnNpb25z
KTsKKyAgICB9CisKKyAgICB2YXIgbG9nTWVzc2FnZSA9ICdPcGVuZWQnOworICAgIGlmIChleHRy
YUluZm8ubGVuZ3RoID4gMCkgeworICAgICAgbG9nTWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZv
LmpvaW4oJywgJykgKyAnKSc7CisgICAgfQorICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UpOworICB9
OworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgaWYgKCgnQXJy
YXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl
cikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBl
dmVudC5kYXRhLmJ5dGVMZW5ndGggKworICAgICAgICAgICAgICAgJyBieXRlcycpCisgICAgfSBl
bHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9i
KSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRh
LnNpemUgKyAnIGJ5dGVzJykKKyAgICB9IGVsc2UgeworICAgICAgYWRkVG9Mb2coJzwgJyArIGV2
ZW50LmRhdGEpOworICAgIH0KKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
CisgICAgYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnQ2xvc2VkICgnOworICAgIGlmICgo
YXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Nsb3NlRXZlbnQnIGluIHdpbmRvdykgJiYKKyAg
ICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VFdmVudCkpIHsKKyAgICAgIGxvZ01lc3NhZ2Ug
Kz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0NsZWFuOworICAgICAgLy8gY29kZSBhbmQgcmVh
c29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCisgICAgICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vi
c29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCisgICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7
CisgICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29kZSA9ICcgKyBldmVudC5jb2RlOworICAgICAg
fQorICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50KSB7CisgICAgICAgIGxvZ01lc3NhZ2UgKz0g
JywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBpcyBub3QgYXZhaWxhYmxlJzsKKyAgICB9Cisg
ICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7CisgIH07CisKKyAgaWYgKHByb3RvY29scykg
eworICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJv
dG9jb2xzICsgJyknKTsKKyAgfSBlbHNlIHsKKyAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJs
KTsKKyAgfQorfQorCitmdW5jdGlvbiBjbG9zZVNvY2tldCgpIHsKKyAgaWYgKCFzb2NrZXQpIHsK
KyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52YWx1ZSkgeworICAgIHNvY2tldC5jbG9zZShj
b2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUpOworICB9IGVsc2UgeworICAgIHNvY2tldC5j
bG9zZSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3RhdGUoKSB7CisgIGlmICghc29ja2V0
KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBhZGRUb0xvZygKKyAgICAgICd1cmwgPSAnICsgc29ja2V0LnVybCArCisgICAgICAnLCByZWFk
eVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRlICsKKyAgICAgICcsIGJ1ZmZlcmVkQW1vdW50
ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7Cisg
IHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3Nz
Oi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5s
b2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKKworICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgcHJvdG9jb2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Byb3RvY29scycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bG9nJyk7CisgIG1lc3NhZ2VCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScp
OworICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUnKTsKKyAgY29kZUJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CisgIHJlYXNvbkJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVm
YXVsdEFkZHJlc3M7CisKKyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgeworICAgIGFk
ZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9Cit9Cis8L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citmb3JtIHsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNj
b25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2RpdiwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2Rp
diwgI3ByaW50c3RhdGVfZGl2IHsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDVweDsKKyAg
Ym9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4OworICBib3JkZXItc3R5bGU6IHNvbGlkOwor
ICBib3JkZXItY29sb3I6IHNpbHZlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImluaXQoKSI+CisKKzxkaXY+CisKKzxkaXYgaWQ9ImNvbm5lY3RfZGl2Ij4KKyAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+CisgICAgPGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgorICAgIDxici8+CisgICAgcHJvdG9jb2xzIDxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xzIiBzaXplPSIyMCI+CisgIDwvZm9ybT4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4KKyAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEw
IiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAgPGJyLz4KKyAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IgorICAgICAgICAgbmFtZT0ic2hvd3RpbWVzdGFtcCIKKyAgICAgICAgIHZhbHVl
PSJzaG93dGltZXN0YW1wIgorICAgICAgICAgb25jbGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMu
Y2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCis8L2Rpdj4KKworPGRpdiBpZD0ic2VuZF9kaXYiPgor
ICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kKCk7IHJldHVybiBmYWxzZTsiPgorICAg
IGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJtZXNzYWdlIiBzaXplPSI0MCI+CisgICAgPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQiPgorICA8L2Zvcm0+Cis8L2Rpdj4KKworPGRp
diBpZD0ic2VuZGZpbGVfZGl2Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZp
bGUoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBz
aXplPSI0MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Cisg
IDwvZm9ybT4KKworICBTZXQgYmluYXJ5VHlwZQorICA8aW5wdXQgdHlwZT0icmFkaW8iCisgICAg
ICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImJsb2IiCisgICAgICAgICBv
bmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJykiIGNoZWNrZWQ+YmxvYgorICA8aW5wdXQgdHlw
ZT0icmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImFy
cmF5YnVmZmVyIgorICAgICAgICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXIn
KSI+YXJyYXlidWZmZXIKKzwvZGl2PgorCis8ZGl2IGlkPSJjbG9zZV9kaXYiPgorICA8Zm9ybSBh
Y3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tldCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICBj
b2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29kZSIgc2l6ZT0iMTAiPgorICAgIHJlYXNvbiA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIgc2l6ZT0iMjAiPgorICAgIDxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+CisgIDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJw
cmludHN0YXRlX2RpdiI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0
ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Cis8L2Rpdj4KKworPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTUyMDk2OTRlM2ZmMjMyMGY1NjgzZWUwNTk2YWUzNDQyOGIxNWViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5CkBAIC0wLDAgKzEs
NTQgQEAKKyMgQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCisKKworZGVmIF9hZGRfc2V0X2Nvb2tp
ZShyZXF1ZXN0LCB2YWx1ZSk6CisgICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1Nl
dC1Db29raWUnLCB2YWx1ZSkpCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIGNvbXBvbmVudHMgPSB1cmxsaWIucGFyc2UudXJscGFyc2UocmVxdWVz
dC51cmkpCisgICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KKworICAgIE9ORV9EQVlfTElGRSA9
ICdNYXgtQWdlPTg2NDAwJworCisgICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKKyAgICAgICAgX2Fk
ZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVd
KSkKKyAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6CisgICAgICAgIF9hZGRfc2V0
X2Nvb2tpZSgKKyAgICAgICAgICAgIHJlcXVlc3QsICc7ICcuam9pbihbJ2h0dHBPbmx5Rm9vPWJh
cicsIE9ORV9EQVlfTElGRSwgJ2h0dHBPbmx5J10pKQorICAgIGVsaWYgY29tbWFuZCA9PSAnY2xl
YXInOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2Zvbz0wOyBNYXgtQWdlPTAn
KQorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2h0dHBPbmx5Rm9vPTA7IE1heC1B
Z2U9MCcpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDQ1OWExOWJjNjhjNzg3OWExNzRmNTcyMTIyMzgyOTE0ZTZmN2RkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpAQCAtMCwwICsxLDY5
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KKworbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2VydmVyIHNldHVwCisgJSBjZCAkcHl3
ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQorCisjIHJ1
biBjbGllbnQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCisgICAgIC1zIGxvY2FsaG9zdCBcCisgICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
CitpbXBvcnQgYmFzZTY0CitpbXBvcnQgY29kZWNzCitmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEK
K2ltcG9ydCBsb2dnaW5nCitmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9y
dCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2l4CitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5leHRlbnNpb25zIGltcG9ydCBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIKK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9wYXJzZV93aW5kb3dfYml0cworZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKKworX1RJTUVPVVRfU0VDID0gMTAKK19VTkRFRklORURfUE9SVCA9IC0xCisKK19VUEdS
QURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5FQ1RJT05fSEVBREVS
ID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCisjIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRl
bGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQorX0dPT0RCWUVf
TUVTU0FHRSA9ICdHb29kYnllJworCitfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEz
JworCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcwor
CisKK2RlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIs
IG9yaWdpbik6CisgICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3Jp
Z2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKKyAgICAjIGFuZCB0aGUgL29yaWdpbi8g
dmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgorICAgIHJl
dHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKKworCitkZWYgX2Zv
cm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgorICAgICMgNC4xIDkuIExldCAv
aG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAv
aG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCisgICAgIyAvaG9z
dHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKKyAgICAjIDQuMSAxMS4gSWYgL3Nl
Y3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLworICAg
ICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBD
T0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQv
LCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAorICAgICMgdG8gL2hvc3Rwb3J0Lwor
ICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VU
X1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3Ry
KHBvcnQpCisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoi
LCBhIFUrMDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2Zp
ZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhv
c3Rwb3J0KQorCisKK2RlZiBfcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVj
dl9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0gbGVuZ3RoCisgICAgd2hpbGUgcmVtYWluaW5n
ID4gMDoKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCisg
ICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3Io
CisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVx
dWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0
IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVu
Z3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjdl9ieXRlcy5hcHBlbmQocmVjZWl2ZWRfYnl0
ZXMpCisgICAgICAgIHJlbWFpbmluZyAtPSBsZW4ocmVjZWl2ZWRfYnl0ZXMpCisgICAgcmV0dXJu
IGInJy5qb2luKHJlY3ZfYnl0ZXMpCisKKworZGVmIF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVs
ZHMsIG5hbWUpOgorICAgICIiIkdldHMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgc3BlY2lmaWVk
IGJ5IG5hbWUgZnJvbSBmaWVsZHMuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhhdCB0
aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQorICAgIGluIGZp
ZWxkcy4gT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCisgICAgIiIi
CisKKyAgICB2YWx1ZXMgPSBmaWVsZHMuZ2V0KG5hbWUubG93ZXIoKSkKKyAgICBpZiB2YWx1ZXMg
aXMgTm9uZSBvciBsZW4odmFsdWVzKSA9PSAwOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcignJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCisgICAg
aWYgbGVuKHZhbHVlcykgPiAxOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcign
TXVsdGlwbGUgJXMgaGVhZGVycyBmb3VuZDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5hbWUsIHZhbHVlcykpCisgICAgcmV0dXJuIHZhbHVlc1swXQorCisKK2Rl
ZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX3NlbnNpdGl2ZT1G
YWxzZSk6CisgICAgIiIiR2V0cyBhbmQgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVy
IHNwZWNpZmllZCBieSBuYW1lIGZyb20KKyAgICBmaWVsZHMuCisKKyAgICBJZiBleHBlY3RlZF92
YWx1ZSBpcyBzcGVjaWZpZWQsIGNvbXBhcmVzIGV4cGVjdGVkIHZhbHVlIGFuZCBhY3R1YWwgdmFs
dWUKKyAgICBhbmQgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yIG9uIGZhaWx1cmUuIFlv
dSBjYW4gc3BlY2lmeSBjYXNlCisgICAgc2Vuc2l0aXZlbmVzcyBpbiB0aGlzIGNvbXBhcmlzb24g
YnkgY2FzZV9zZW5zaXRpdmUgcGFyYW1ldGVyLiBUaGlzIGZ1bmN0aW9uCisgICAgZXhwZWN0cyB0
aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGZp
ZWxkcy4KKyAgICBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvci4KKyAg
ICAiIiIKKworICAgIHZhbHVlID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSkK
KworICAgIGlmICgoY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlKSBv
cgorICAgICAgICAobm90IGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZS5sb3dlcigpICE9IGV4cGVj
dGVkX3ZhbHVlLmxvd2VyKCkpKToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3Io
CisgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAobmFtZSwgZXhwZWN0ZWRfdmFsdWUsIHZh
bHVlKSkKKworCitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3Ig
YSBUTFMgY29ubmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisg
ICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCkKKwor
ICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBkb25lIG9uIHdyYXBf
c29ja2V0IGNhbGwuCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJDaXBoZXI6ICVzIiwgc2Vs
Zi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKKworICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC53cml0ZShkYXRhKQorCisgICAgZGVmIHNlbmRh
bGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnNlbmRhbGwo
ZGF0YSkKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdGxzX3NvY2tldC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl90bHNfc29ja2V0LmNsb3NlKCkKKworICAgIGRlZiBnZXRwZWVybmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisK
K2NsYXNzIENsaWVudEhhbmRzaGFrZUJhc2Uob2JqZWN0KToKKyAgICAiIiJBIGJhc2UgY2xhc3Mg
Zm9yIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBlYWNoCisgICAg
cHJvdG9jb2wgdmVyc2lvbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVm
IF9yZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBh
IGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgICAgICBmaWVs
ZHMgPSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAgICAgICAgICAjIDQu
MSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICAgICAgbmFtZSA9IGInJworICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgICAgICMg
NC4xIDM0LiByZWFkIC9uYW1lLworICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3JlYWRfbmFtZSgp
CisgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgICMgNC4xIDM1LiByZWFkIHNwYWNlcworICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjaCA9IHNlbGYuX3NraXBfc3BhY2VzKCkKKyAgICAgICAgICAgICMgNC4xIDM2LiBy
ZWFkIC92YWx1ZS8KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fcmVhZF92YWx1ZShjaCkKKyAg
ICAgICAgICAgICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAg
ICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYg
Y2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCisgICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCisgICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCisgICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQorICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCisgICAgICAg
ICAgICAjIHN0cmVhbS4KKyAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUuZGVjb2Rl
KCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLmFwcGVuZCh2YWx1
ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAi
RmllbGQiIHN0ZXAgYWJvdmUKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisgICAgZGVmIF9yZWFk
X25hbWUoc2VsZik6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUg
YXJyYXlzCisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAg
ICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYgY2ggPT0g
Yidccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAg
ZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhh
bmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJl
YWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gYic6
JzogICMgMHgzQQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxvd2VyKCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSArPSBjaAorCisgICAgZGVmIF9za2lwX3Nw
YWNlcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZl
cgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJyAnOiAgIyAweDIwCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybiBjaAorCisgICAgZGVmIF9y
ZWFkX3ZhbHVlKHNlbGYsIGNoKToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVt
cHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICMgNC4xIDM2LiBy
ZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisg
ICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgICAgICBjaCA9IF9yZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKworCitkZWYgX2dldF9wZXJtZXNzYWdlX2RlZmxh
dGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6CisgICAgIiIiVmFsaWRhdGUgdGhlIHJlc3Bv
bnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGluCisg
ICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCB0aGUgc2VydmVyXy4q
IHBhcmFtZXRlcnMuCisgICAgIiIiCisKKyAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gTm9u
ZQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQorCisgICAgY2xpZW50X21h
eF93aW5kb3dfYml0c19uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3Zlcl9uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCisKKyAgICAj
IFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgorICAgICMgSGFuZGxlIHRo
b3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCisKKyAg
ICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3df
Yml0c19uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignTXVsdGlw
bGUgJXMgZm91bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCisKKyAgICAgICAgICAgIHBhcnNlZF92YWx1
ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGlmIHBhcnNl
ZF92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFkICVzOiAlcicgJSAoY2xpZW50X21heF93aW5k
b3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzID0gcGFyc2VkX3ZhbHVlCisgICAgICAgIGVsaWYgcGFyYW1fbmFtZSA9PSBjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoJ011bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkKKwor
ICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6
IEhhcyB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAgICAoY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXJfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBp
cyBOb25lOgorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCisKKyAg
ICByZXR1cm4gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKGNsaWVudF9tYXhfd2luZG93X2JpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlcikKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoQ2xpZW50SGFuZHNo
YWtlQmFzZSk6CisgICAgIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvcgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgorICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKKworICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAg
ICAiIiIKKworICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAg
ZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy51c2VfdGxzKSkKKyAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFE
RVIpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgX29yaWdpbl9oZWFkZXIoY29tbW9uLk9SSUdJTl9IRUFE
RVIsIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51
cmFuZG9tKDE2KQorICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFs
X2tleSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVzKScsIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9rZXksIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCisgICAgICAgIGZpZWxkcy5hcHBlbmQo
CisgICAgICAgICAgICAnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleS5kZWNvZGUoJ1VURi04JykpKQorCisgICAgICAg
IGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVkXHJcbicgJQorICAgICAgICAgICAg
KGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLCBjb21tb24uVkVSU0lPTl9IWUJJ
X0xBVEVTVCkpCisKKyAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6CisgICAgICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICAgICAgIyBBY2NlcHQg
dGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0
LgorICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAg
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCisgICAgICAgICAgICAgICAgX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sIE5vbmUpCisgICAgICAgICAgICBleHRlbnNpb25z
X3RvX3JlcXVlc3QuYXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBpZiBsZW4oZXh0ZW5zaW9u
c190b19yZXF1ZXN0KSAhPSAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJc
bicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhU
RU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190b19yZXF1ZXN0KSkpCisKKyAgICAgICAgZm9yIGZpZWxk
IGluIGZpZWxkczoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkLmVuY29k
ZSgnVVRGLTgnKSkKKworICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChiJ1xyXG4nKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQorCisg
ICAgICAgIHN0YXR1c19saW5lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIHN0YXR1
c19saW5lICs9IGNoCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xuJzoKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIG0gPSByZS5tYXRjaChiJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxk
XFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1h
dDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19s
aW5lKQorICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgc3RhdHVz
X2NvZGUgIT0gYicxMDEnOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICVzIHdpdGggZm9sbG93aW5nIGhlYWRl
cnM6ICVyJywKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgc2VsZi5fcmVhZF9maWVsZHMo
KSkKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAg
ICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXInICUgc3RhdHVz
X2NvZGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCB2YWxpZCBTdGF0
dXMtTGluZScpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3RhcnQgcmVhZGluZyBoZWFk
ZXJzIHVudGlsIHdlIHNlZSBhbiBlbXB0eSBsaW5lJykKKworICAgICAgICBmaWVsZHMgPSBzZWxm
Ll9yZWFkX2ZpZWxkcygpCisKKyAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0
IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCisgICAgICAgICAg
ICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLCBmaWVsZHMp
CisKKyAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBjb21tb24uVVBH
UkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5X
RUJTT0NLRVRfVVBHUkFERV9UWVBFLCBGYWxzZSkKKworICAgICAgICBfdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLCBG
YWxzZSkKKworICAgICAgICBhY2NlcHQgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICAjIFZhbGlkYXRlCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0KSkK
KworICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6CisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBv
ZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCisgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19X
RUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jl
c3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywgYWNjZXB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCisKKyAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoc2VsZi5fa2V5ICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkK
KyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0
ZWRfYWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgcmVzcG9u
c2UgZm9yIGNoYWxsZW5nZTogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShi
aW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRf
YWNjZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAorICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVk
OiAlcyknICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hF
QURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9hY2NlcHRlZCA9IEZhbHNlCisKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVs
ZHMuZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFE
RVIubG93ZXIoKSkKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgIGlm
IGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFkZXIp
ICE9IDA6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4
dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCisKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBp
biBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWUgPSBleHRl
bnNpb24ubmFtZSgpCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUgPT0gY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04KKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6CisgICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKKyAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lKQorCisgICAgICAgIGlmIChzZWxmLl9vcHRp
b25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAgICAgICAgICAgICBhbmQgbm90IHBlcm1l
c3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCk6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkICVzLCBidXQgdGhlIHNlcnZlciBy
ZWplY3RlZCBpdCcgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVf
RVhURU5TSU9OKQorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29j
a2V0LVByb3RvY29sCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0
Yy4KKworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiQSB3cmFwcGVy
IGZvciBzb2NrZXQgb2JqZWN0IHRvIHByb3ZpZGUgdGhlIG1wX2Nvbm4gaW50ZXJmYWNlLgorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9zb2Nr
ZXQgPSBzb2NrZXQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIG4pOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKKworICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisgICAgcmVt
b3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisKKworY2xhc3MgQ2xpZW50UmVx
dWVzdChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBqdXN0IHRvIG1ha2UgaXQgYWJs
ZSB0byBwYXNzIGEgc29ja2V0IG9iamVjdCB0bworICAgIGZ1bmN0aW9ucyB0aGF0IGV4cGVjdCBh
IG1wX3JlcXVlc3Qgb2JqZWN0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2Nr
ZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCisgICAgICAgIHNlbGYud3NfdmVyc2lvbiA9IGNv
bW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisKKworY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgor
ICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYu
X3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICIiIlJ1biB0aGUgY2xp
ZW50LgorCisgICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3Nh
Z2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0
KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jb25uZWN0KAorICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LCBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKKyAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQgPSBfVExT
U29ja2V0KHNlbGYuX3NvY2tldCkKKworICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gQ2xp
ZW50SGFuZHNoYWtlUHJvY2Vzc29yKHNlbGYuX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zKQorCisgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKKworICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAgICAgICAgICByZXF1
ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgICAgIHN0cmVhbV9v
cHRpb24gPSBTdHJlYW1PcHRpb25zKCkKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb24ubWFza19z
ZW5kID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtX29wdGlvbi51bm1hc2tfcmVjZWl2ZSA9IEZh
bHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgZnJhbWVyLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb24pCisKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0
cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBmb3IgbGluZSBpbiBz
ZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDogJXMnICUgbGluZSkK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gc2Vs
Zi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlY3Y6
ICVzJyAlIHJlY2VpdmVkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgICAgICAg
ICByYWlzZQorCisgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVm
IF9kb19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5n
IGhhbmRzaGFrZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01F
U1NBR0U6CisgICAgICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3Npbmcg
aGFuZHNoYWtlLCBzbworICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2Ug
bWVzc2FnZSBmcm9tIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0
IGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIG1l
c3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmVjdiBjbG9zZScpCisgICAg
ICAgICAgICAgICAgcHJpbnQoJ1NlbmQgYWNrJykKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQorICAgICAgICBz
ZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCisKKworZGVmIG1haW4oKToK
KyAgICBpZiBzaXguUFkyOgorICAgICAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcign
dXRmLTgnKShzeXMuc3Rkb3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKKyAgICAj
IFdlIGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBz
YW1lIGFzIEdvb2dsZQorICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1h
bmQtbGluZS1mbGFnIHN0eWxlIGZsYWdzLgorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsCisg
ICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJf
aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J3NlcnZlciBob3N0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX3BvcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2Vy
dmVyIHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tb3JpZ2luJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdvcmlnaW4nLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J29yaWdpbicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1yZXNv
dXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVzb3VyY2UnLAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nL2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jlc291cmNlIHBhdGgnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbWVz
c2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWVzc2FnZScsCisgICAgICAgICAg
ICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
Y29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4n
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAgICctLXF1aWV0JywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywKKyAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGxz
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfdGxzJywKKyAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIFRMUyAod3NzOi8vKS4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
c29ja2V0LXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNvY2tldF90aW1lb3V0
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PV9USU1FT1VUX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaW1lb3V0KHNlYykg
Zm9yIHNvY2tldHMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXVzZS1wZXJtZXNzYWdlLWRl
ZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2Ug
dGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uJykKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4n
LAorICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4n
LCAnZXJyb3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cg
bGV2ZWwuJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQorCisgICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVy
IGRlcGVuZHMgb24gd2hldGhlciBUTFMgaXMgdXNlZC4KKyAgICBpZiBvcHRpb25zLnNlcnZlcl9w
b3J0ID09IF9VTkRFRklORURfUE9SVDoKKyAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgorICAg
ICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3Bv
cnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworICAgICMgb3B0cGFyc2UgZG9l
c24ndCBzZWVtIHRvIGhhbmRsZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMuCisgICAgIyBTZXQg
ZGVmYXVsdCBtZXNzYWdlIGhlcmUuCisgICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKKyAgICAg
ICAgb3B0aW9ucy5tZXNzYWdlID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAjICJKYXBhbiIgaW4g
SmFwYW5lc2UKKworICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYTUw
MzIyMThkMjY5OTU4YmY3NTFiZjYwOGJiYjUyNTU2YzZmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CkBAIC0wLDAgKzEsNjIg
QEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc2l4CisKK19HT09EQllFX01FU1NBR0UgPSB1
J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUg
aXMgcGFyc2VkIGludG8KKyAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdl
YnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgorICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3Jl
IGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAorICAgIGFmdGVy
IHRoZSBjYWxsLgorCisgICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0
aGUgcHJvY2Vzc29yIGxpc3QuCisgICAgIiIiCisKKyAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9w
cm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHkuIiIiCisKKyAgICB3aGlsZSBUcnVl
OgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAg
ICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlz
aW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
ZWNob193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2M2YzUzMTFiYmI5OWYzMzRmMzM1N2Q4MDFhMmY0
MjA1NjAwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNo
b193c2gucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzaXgK
KworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUaGlzIGV4YW1wbGUgaGFuZGxlciBhY2Nl
cHRzIGFueSByZXF1ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3IgaG93CisgICAgIyB0
byByZWplY3QgYWNjZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQgb24gb3JpZ2luIHZh
bHVlLgorCisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJl
cXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxp
bmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FH
RToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFu
ZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1OTkwNTg2Nzg0MmFlYjg2NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKyMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkg
c3RhbmRhbG9uZS5weSAtbSBvcHRpb24uCisjIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBh
IGNvbW1lbnQgbGluZS4KKyMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9w
YXRoJyBhbmQgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnCisjIHNlcGFyYXRlZCBieSBzcGFjZXMu
CisjIEFsaWFzaW5nIGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0
aGUgbGluZSwgYW5kCisjICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9y
ZSBpdCBpcyBhbGlhc2VkLgorIyBGb3IgZXhhbXBsZSwKKyMgIC8gL2VjaG8KKyMgbWVhbnMgdGhh
dCBhIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hv
Jy4KKy8gL2VjaG8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3Rz
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKQEAgLTAsMCArMSw0
MCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCisgICAgICAg
ICgnU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNGFhNjg0MjgzYTYwM2Y1YjMzZGRhNTI2MzAxOTk5YjQ0NzkyZGRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
bXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICByYWlzZSBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9vcmlnaW5f
Y2hlY2tfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTc2N2FiOTMyZmI1ODI4MjRhYWYxYTU3ZDkyNDlj
MzA0YmQ1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29y
aWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
VGhpcyBleGFtcGxlIGlzIGRlcml2ZWQgZnJvbSB0ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdp
bl9jaGVja193c2gucHkuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20n
OgorICAgICAgICByZXR1cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3Jp
Z2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2No
ZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4YjJjMDhmNmEyMjU0
YTFmOWQ3NjUwNzkwMmMxYTZiNWFlZTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IS0tCitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJm
b3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDQwOWFhNmViNWZk
MWExMWFlMmQ1YmExNTZiYjhhYWMyZmNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCkBAIC0wLDAgKzEsODYg
QEAKKy8vIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gcGVyZlRlc3RBZGRUb0xvZyh0ZXh0KSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1h
bmQnOiAnbG9nJywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0
QWRkVG9TdW1tYXJ5KHRleHQpIHsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RNZWFzdXJlVmFsdWUo
dmFsdWUpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdtZWFzdXJlVmFsdWUn
LCAndmFsdWUnOiB2YWx1ZX0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0Tm90aWZ5QWJv
cnQoKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90aWZ5QWJvcnQnfSwg
JyonKTsKK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGFUeXBl
LCBhc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlEYXRh
LCBudW1JdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVdhcm1VcEl0ZXJhdGlvbnMpIHsKKworICByZXR1cm4geworICAgIHByZWZpeFVybDogJ3dzOi8v
JyArIGxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInLAorICAgIHByaW50U2l6ZTog
dHJ1ZSwKKyAgICBudW1Tb2NrZXRzOiAxLAorICAgIC8vICsgMSBpcyBmb3IgYSB3YXJtdXAgaXRl
cmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgorICAgIG51bUl0ZXJhdGlvbnM6IG51
bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKKyAgICBudW1XYXJtVXBJdGVy
YXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAorICAgIG1pblRvdGFsOiAxMDI0MDAwMCwKKyAg
ICBzdGFydFNpemU6IDEwMjQwMDAwLAorICAgIHN0b3BUaHJlc2hvbGQ6IDEwMjQwMDAwLAorICAg
IG11bHRpcGxpZXJzOiBbMl0sCisgICAgdmVyaWZ5RGF0YTogdmVyaWZ5RGF0YSwKKyAgICBkYXRh
VHlwZTogZGF0YVR5cGUsCisgICAgYXN5bmM6IGFzeW5jLAorICAgIGFkZFRvTG9nOiBwZXJmVGVz
dEFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRUb1N1bW1hcnksCisgICAg
bWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKKyAgICBub3RpZnlBYm9ydDogcGVy
ZlRlc3ROb3RpZnlBYm9ydAorICB9OworfQorCit2YXIgZGF0YTsKK29ubWVzc2FnZSA9IGZ1bmN0
aW9uKG1lc3NhZ2UpIHsKKyAgdmFyIGFjdGlvbjsKKyAgaWYgKG1lc3NhZ2UuZGF0YS5jb21tYW5k
ID09PSAnc3RhcnQnKSB7CisgICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKKyAgICBpbml0V29ya2Vy
KCdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QpOworICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJr
TmFtZTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rpb24gPSAnc3RvcCc7CisgIH0KKworICB2YXIgY29u
ZmlnID0gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGEuZGF0YVR5cGUsIGRhdGEuYXN5
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52ZXJp
ZnlEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFs
X2hlYWRlcnMuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwM2NiNzQwMWI3ODdhYzZlMTFjNjc0NmM2ODQyZTU3
ZDM4MDk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3Nw
ZWNpYWxfaGVhZGVycy5jZ2kKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKKyMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCisiIiJDR0kg
c2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRUUCBoZWFkZXJzIG9uIHRoZSBv
cmlnaW4gcGFnZS4KKworTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRvbid0IHdvcmsgb24gdGhlIHN0
YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKK21vZGUuCisiIiIKKworcHJpbnQg
IiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKK0NvbnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25u
ZWN0LXNyYyBzZWxmCisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1w
bGUuY29tIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTAxNjBjYjQwYzRjNzgwMGNkOWU3NjMwMDE0MGI5YmZl
OWYxNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
LmpzCkBAIC0wLDAgKzEsMzIzIEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9y
IGJvdGggbWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCisKK3ZhciByZXN1bHRzID0ge307CisKK2Z1
bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIERhdGUubm93KCk7Cit9CisKK2Z1bmN0
aW9uIGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLAorICAgIHNwZWVkLCBwcmludFNpemUpIHsKKyAgaWYgKHByaW50U2l6
ZSkgeworICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKKyAgICAgICAgJ1x0JyArIHRpbWVQZXJN
ZXNzYWdlSW5Ncy50b0ZpeGVkKDMpICsKKyAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5N
cyA9PSAtMSA/CisgICAgICAgICAgICAnJyA6CisgICAgICAgICAgICAnXHQnICsgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKKyAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4
ZWQoMyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7CisgIH0KK30K
KworZnVuY3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKKyAgcmVzdWx0cyA9IHt9OworfQorCitm
dW5jdGlvbiByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvU3VtbWFy
eSgKKyAgICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0
U3BlZWRbS0Ivc10nKTsKKyAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7CisgICAgdmFyIGF2
ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tz
aXplXS5uOworICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdl
VGltZVBlck1lc3NhZ2VJbk1zKTsKKyAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRl
dmlhdGlvbgorICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCisg
ICAgICAgIChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCisgICAgICAg
ICAgICBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5N
cykgKgorICAgICAgICByZXN1bHRzW3NpemVdLm4gLworICAgICAgICAocmVzdWx0c1tzaXplXS5u
IC0gMSkpOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCisgICAg
ICAgIHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdl
SW5Ncywgc3BlZWQsCisgICAgICAgIHRydWUpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYWxjdWxh
dGVTcGVlZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgeworICByZXR1cm4gTWF0aC5yb3VuZChz
aXplIC8gdGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKK30KKworZnVuY3Rpb24gY2FsY3Vs
YXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAor
ICAgIGlzV2FybVVwKSB7CisgIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBz
dGFydFRpbWVJbk1zOworICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXpl
LCB0aW1lU3BlbnRJbk1zKTsKKyAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudElu
TXMgLyAodG90YWxTaXplIC8gc2l6ZSk7CisgIGlmICghaXNXYXJtVXApIHsKKyAgICBjb25maWcu
bWVhc3VyZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgaWYgKCFyZXN1bHRzW3NpemVd
KSB7CisgICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9Owor
ICAgIH0KKyAgICByZXN1bHRzW3NpemVdLm4gKys7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdCAr
PSB0aW1lUGVyTWVzc2FnZUluTXM7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBl
ck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOworICB9CisgIGNvbmZpZy5hZGRUb0xv
Zyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwK
KyAgICAgIGNvbmZpZy5wcmludFNpemUpKTsKK30KKworZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0
ciwgY291bnQpIHsKKyAgdmFyIGRhdGEgPSAnJzsKKyAgdmFyIGV4cENodW5rID0gc3RyOworICB2
YXIgcmVtYWluID0gY291bnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYgKHJlbWFpbiAlIDIp
IHsKKyAgICAgIGRhdGEgKz0gZXhwQ2h1bms7CisgICAgICByZW1haW4gPSAocmVtYWluIC0gMSkg
LyAyOworICAgIH0gZWxzZSB7CisgICAgICByZW1haW4gLz0gMjsKKyAgICB9CisKKyAgICBpZiAo
cmVtYWluID09IDApCisgICAgICBicmVhazsKKworICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBl
eHBDaHVuazsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZmlsbEFycmF5QnVm
ZmVyKGJ1ZmZlciwgYykgeworICB2YXIgaTsKKworICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAx
MDEwMTAxOworCisgIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3Ro
IC8gNCk7CisgIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxv
Y2tzKTsKKyAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNl
IGl0IGZvciBsb29wIGNvbmRpdGlvbi4KKyAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytp
KSB7CisgICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7CisgIH0KKworICAvLyBGcmFjdGlvbgor
ICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7CisgIHZh
ciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tz
KTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAgICB1OFZpZXdbaV0gPSBj
OworICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRD
aGFyKSB7CisgIHZhciBpOworCisgIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFy
ICogMHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0
ZUxlbmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAs
IHUzMkJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgeworICAgIGlm
ICh1MzJWaWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJs
b2NrcyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2Nr
cyAqIDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAg
ICBpZiAodThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgeworICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB2ZXJpZnlCbG9iKGNv
bmZpZywgYmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKKyAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKGJsb2IpOworICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewor
ICAgIGNvbmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5t
ZXNzYWdlKTsKKyAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7CisgIH0KKyAgcmVh
ZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJh
eUJ1ZmZlcihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOworICAgIGRvbmVDYWxsYmFjayhi
bG9iLnNpemUsIHJlc3VsdCk7CisgIH0KKyAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2Ip
OworfQorCitmdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBz
aXplKSB7CisgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgeworICAgIGNvbmZpZy5h
ZGRUb0xvZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOworICBp
ZiAoaXNOYU4ocGFyc2VkQWNrKSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sg
dmFsdWU6ICcgKyBtZXNzYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHBhcnNl
ZEFjayAhPSBzaXplKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKAorICAgICAgICAnRXhwZWN0ZWQg
YWNrIGZvciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sg
KworICAgICAgICAnQicpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKKyAgdmFyIG5ld09iaiA9IHt9Owor
ICBmb3IgKGtleSBpbiBvYmopIHsKKyAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOworICB9Cisg
IHJldHVybiBuZXdPYmo7Cit9CisKK3ZhciB0YXNrcyA9IFtdOworCitmdW5jdGlvbiBydW5OZXh0
VGFzayhjb25maWcpIHsKKyAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOworICBpZiAodGFzayA9
PSB1bmRlZmluZWQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7CisgICAgY2xl
YW51cCgpOworICAgIHJldHVybjsKKyAgfQorICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAw
KTsKK30KKworZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7CisgIHZhciBsZWdl
bmQgPSAnJworICBpZiAoY29uZmlnLnByaW50U2l6ZSkKKyAgICBsZWdlbmQgPSAnTWVzc2FnZSBz
aXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOworICBsZWdlbmQgKz0gJ1NwZWVkIGlu
IGtCL3MnOworICByZXR1cm4gbGVnZW5kOworfQorCitmdW5jdGlvbiBhZGRUYXNrcyhjb25maWcs
IHN0ZXBGdW5jKSB7CisgIGZvciAodmFyIGkgPSAwOworICAgICAgaSA8IGNvbmZpZy5udW1XYXJt
VXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgeworICAgIHZhciBtdWx0
aXBsaWVySW5kZXggPSAwOworICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwor
ICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKKyAgICAgICAgICsrbXVsdGlw
bGllckluZGV4KSB7CisgICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCisgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICBzaXplLAorICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICAgICAgdGFza3MucHVzaCh0YXNrKTsKKyAg
ICAgIHZhciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWworICAgICAgICBtdWx0aXBs
aWVySW5kZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKKyAgICAgIGlmIChtdWx0aXBs
aWVyIDw9IDEpIHsKKyAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIg
JyArIG11bHRpcGxpZXIpOworICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOworICAgICAgfQorICAgICAgc2l6
ZSA9IE1hdGguY2VpbChzaXplICogbXVsdGlwbGllcik7CisgICAgfQorICB9Cit9CisKK2Z1bmN0
aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgeworICB0YXNrcy5wdXNo
KGZ1bmN0aW9uKCl7CisgICAgICB0aW1lcklEID0gbnVsbDsKKyAgICAgIGNvbmZpZy5hZGRUb1N1
bW1hcnkodGl0bGUpOworICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKKyAgICAgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH0pOworfQor
CitmdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2coJ1Nl
bmQgYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0
YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29u
ZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKKyAgY29uZmln
LmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107Cisg
IGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJr
U3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAorICAgICAgJ1JlY2VpdmUg
QmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0YXJ0QmVuY2htYXJr
KGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoY29uZmlnKSB7CisgIGNsZWFyVGltZW91dCh0
aW1lcklEKTsKKyAgdGltZXJJRCA9IG51bGw7CisgIHRhc2tzID0gW107CisgIGNvbmZpZy5hZGRU
b0xvZygnU3RvcHBlZCcpOworICBjbGVhbnVwKCk7Cit9CisKK3ZhciB3b3JrZXI7CisKK2Z1bmN0
aW9uIGluaXRXb3JrZXIob3JpZ2luKSB7CisgIHdvcmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsg
Jy9iZW5jaG1hcmsuanMnKTsKK30KKworZnVuY3Rpb24gZG9BY3Rpb24oY29uZmlnLCBpc1dpbmRv
d1RvV29ya2VyLCBhY3Rpb24pIHsKKyAgaWYgKGlzV2luZG93VG9Xb3JrZXIpIHsKKyAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9Mb2csIGFkZFRvU3VtbWFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZVZhbHVlLCBub3RpZnlBYm9ydCwgbWVzc2Fn
ZSkgeworICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQorICAgICAg
ICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRh
dGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCisgICAgICAgIGFkZFRvU3VtbWFyeShtZXNzYWdl
LmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ21lYXN1
cmVWYWx1ZScpCisgICAgICAgIG1lYXN1cmVWYWx1ZShtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAg
ICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ25vdGlmeUFib3J0JykKKyAgICAgICAg
bm90aWZ5QWJvcnQoKTsKKyAgICB9LmJpbmQodW5kZWZpbmVkLCBjb25maWcuYWRkVG9Mb2csIGNv
bmZpZy5hZGRUb1N1bW1hcnksCisgICAgICAgICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUsIGNvbmZp
Zy5ub3RpZnlBYm9ydCk7CisgICAgY29uZmlnLmFkZFRvTG9nID0gdW5kZWZpbmVkOworICAgIGNv
bmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9
IHVuZGVmaW5lZDsKKyAgICBjb25maWcubm90aWZ5QWJvcnQgPSB1bmRlZmluZWQ7CisgICAgd29y
a2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24sIGNvbmZpZzogY29uZmlnfSk7CisgIH0gZWxz
ZSB7CisgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRCZW5jaG1hcmsnKQorICAgICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlY2VpdmVCZW5jaG1hcmsn
KQorICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9
PT0gJ2JhdGNoQmVuY2htYXJrJykKKyAgICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7CisgICAg
ZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCisgICAgICBzdG9wKGNvbmZpZyk7CisgIH0KK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhZGQ0ODcz
MWY4OGZlODVlZWVhNDBlNmUwMTljZjE3Y2NjZTNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCkBAIC0wLDAgKzEsODkgQEAKKy8vIENv
cHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgorCit2
YXIgbG9nQm94ID0gbnVsbDsKK3ZhciBxdWV1ZWRMb2cgPSAnJzsKKwordmFyIHN1bW1hcnlCb3gg
PSBudWxsOworCitmdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKKyAgcXVldWVkTG9nICs9IGxvZyAr
ICdcbic7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBsb2dCb3gudmFsdWUgKz0g
cXVldWVkTG9nOworICBxdWV1ZWRMb2cgPSAnJzsKKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdc
bic7CisgIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5jdGlvbiBhZGRUb1N1
bW1hcnkobG9nKSB7CisgIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKKyAgc3VtbWFy
eUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCisvLyB2YWx1ZTogZXhlY3V0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgorLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0byBi
ZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgorLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1Q
ZXJmb3JtYW5jZVRlc3QuCitmdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKK30KKworLy8g
Y29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1hcmsgZmFpbGVkIGFu
ZCBhYm9ydGVkLCBhbmQKKy8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVz
dHMuCisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KK2Z1bmN0aW9u
IG5vdGlmeUFib3J0KCkgeworfQorCitmdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKKyAg
cmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Cit9CisK
K2Z1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7CisgIHZhciBsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNr
ZWQpCisgICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOworICByZXR1cm4gdW5kZWZpbmVk
OworfQorZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgeworICByZXR1cm4gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Cit9CisKK2Z1bmN0aW9uIGdldEludEFycmF5
RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0
cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOworfQorCitmdW5jdGlvbiBnZXRGbG9h
dEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKHBhcnNl
RmxvYXQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX3dv
cmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGQ5MDQ0OWE5MGE3ZDc4MmI5NzAyM2U4ZDlkNWE3YWFlZTk0YTMyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKQEAgLTAs
MCArMSw0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2Vy
IHRocmVhZHMgb25seSkuCisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CisgIHZh
ciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmlnOworICBjb25maWcuYWRkVG9Mb2cgPSBmdW5j
dGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTog
dGV4dH0pOyB9OworICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gZnVuY3Rpb24odGV4dCkgeworICAg
ICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Cisg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcG9zdE1lc3Nh
Z2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOyB9OworICBjb25maWcubm90
aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9
KTsgfTsKKworICBkb0FjdGlvbihjb25maWcsIGZhbHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Cit9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
M2QzOGUyYWI2MmZhNzYxZTU0MWMzZTQ3YjUxNTY0ZDkxMzFhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwzOSBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3No
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2NvbnNvbGUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9lY2hvX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDVmNTk1MGYzNDc1MzFiOTI2MmMzMWI3N2Qw
YzI5ZDQyNmU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
IiIiIEEgU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzCisK
K21vZF9weXdlYnNvY2tldCBpcyBhbiBBUEkgdGhhdCBwcm92aWRlcyBXZWJTb2NrZXQgZnVuY3Rp
b25hbGl0aWVzIHdpdGgKK2Egc3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVyLiBJdCBpcyBpbnRl
bmRlZCBmb3IgdGVzdGluZyBvcgorZXhwZXJpbWVudGFsIHB1cnBvc2VzLgorCitJbnN0YWxsYXRp
b24KKz09PT09PT09PT09PQorMS4gRm9sbG93IHN0YW5kYWxvbmUgc2VydmVyIGRvY3VtZW50YXRp
b24gdG8gc3RhcnQgcnVubmluZyB0aGUKK3N0YW5kYWxvbmUgc2VydmVyLiBJdCBjYW4gYmUgcmVh
ZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0LnN0YW5kYWxvbmUKKworMi4gT25jZSB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgaXMg
bGF1bmNoZWQgdmVyaWZ5IGl0IGJ5IGFjY2Vzc2luZworaHR0cDovL2xvY2FsaG9zdFs6cG9ydF0v
Y29uc29sZS5odG1sLiBJbmNsdWRlIHRoZSBwb3J0IG51bWJlciB3aGVuCitzcGVjaWZpZWQgb24g
bGF1bmNoLiBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgY29ycmVjdGx5LCB5b3UKK3dpbGwgc2Vl
IGEgc2ltcGxlIGVjaG8gY29uc29sZS4KKworCitXcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwor
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNv
bWVzIGluLCB0aGUgcmVzb3VyY2UgbmFtZQorc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMg
Y29uc2lkZXJlZCBhcyBpZiBpdCBpcyBhIGZpbGUgcGF0aCB1bmRlcgorPHdlYnNvY2tfaGFuZGxl
cnM+IGFuZCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5kbGVycz4vPHJlc291
cmNlX25hbWU+X3dzaC5weSBpcyBpbnZva2VkLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291
cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hhdCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNv
Y2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hhdF93c2gucHkgaXMgaW52b2tlZC4KKworQSBXZWJTb2Nr
ZXQgaGFuZGxlciBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoK
KworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCisgICAgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmlu
ZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZCBhbmQgV2ViU29ja2V0IHByb3BlcnRpZXMgKHdzX29yaWdpbiwKK2FuZCB3c19yZXNvdXJjZSkg
YXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBi
eSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQorZXh0cmEgaGFuZHNo
YWtlICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CistIHdzX3Jlc291cmNlCistIHdz
X29yaWdpbgorLSB3c192ZXJzaW9uCistIHdzX2V4dGVuc2lvbnMKKy0gd3NfZGVmbGF0ZQorLSB3
c19wcm90b2NvbAorLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzCisKK1RoZSBsYXN0IHR3byBhcmUg
YSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlvbi4KKworCitTdWJwcm90b2NvbCBO
ZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKword3NfcHJvdG9jb2wgaXMgYWx3
YXlzIHNldCB0byBOb25lIHdoZW4KK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNh
bGxlZC4gSWYgd3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKK05vbmUsIHlvdSBtdXN0IGNo
b29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bword3NfcHJv
dG9jb2wuCisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKword2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAorc3VjY2Vz
c2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBj
bGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92
aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRyYW5zZmVyLgorCitZb3UgY2FuIHJlY2VpdmUgYSBt
ZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgbWVzc2FnZSA9IHJlcXVl
c3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKK1RoaXMgY2FsbCBibG9ja3MgdW50aWwg
YW55IGNvbXBsZXRlIHRleHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKK29m
IHRoZSBpbmNvbWluZyBmcmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91
J3JlIHVzaW5nIElFVEYKK0h5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2Fn
ZSgpIHdpbGwgcmV0dXJuIE5vbmUgb24gcmVjZWl2aW5nCitjbGllbnQtaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlLiBXaGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCit3
aWxsIHJhaXNlIHNvbWUgZXhjZXB0aW9uLgorCitZb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKG1lc3NhZ2UpCisKKworQ2xvc2luZyBDb25uZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0K
KworRXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBm
cm9tCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KKwor
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorCitjbG9zZV9jb25uZWN0
aW9uIHdpbGwgd2FpdAorZm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21p
bmcgZnJvbSB0aGUgY2xpZW50LiBXaGVuIGl0Citjb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNr
bm93bGVkZ2VtZW50LCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCit3ZWJfc29ja2V0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKK2lu
Y29taW5nIGNsb3NpbmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlv
dSBjYW4gc3BlY2lmeQorY29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJl
IHNlbnQgYXMgYSBvdXRnb2luZyBjbG9zaW5nIGZyYW1lCitmcm9tIHRoZSBzZXJ2ZXIuIEEgcmVx
dWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KK3Vz
ZSBpbiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCistIHdzX2Nsb3NlX2Nv
ZGUKKy0gd3NfY2xvc2VfcmVhc29uCisKKworVGhyZWFkaW5nCistLS0tLS0tLS0KKworQSBXZWJT
b2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGUgc3RhbmRhbG9uZQorc2VydmVy
IHVzZXMgdGhyZWFkcyBieSBkZWZhdWx0LgorCisKK0NvbmZpZ3VyaW5nIFdlYlNvY2tldCBFeHRl
bnNpb24gUHJvY2Vzc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1NlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29ja2V0IGV4dGVuc2lv
bnMuIE5vdGUgdGhhdCB0aGV5IGFyZQordW5zdGFibGUgYW5kIHRoZWlyIEFQSXMgYXJlIHN1Ympl
Y3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCisKK0EgcmVxdWVzdCBvYmplY3QgaGFzIHRoZXNl
IGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KKworLSB3c19yZXF1ZXN0
ZWRfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBp
bnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJzIHJlY2VpdmVkIGZy
b20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBz
aG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgorCistIHdzX2V4dGVuc2lvbnM6CisKKyAgQSBs
aXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBl
eHRlbnNpb24KKyAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNsaWVudCBpbiB0aGUg
c2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBzaG91bGRuJ3QgdG91Y2ggaXQgZGly
ZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KKyAgcHJvY2Vzc29ycy4K
KworLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKKworICBBIGxpc3Qgb2YgbG9hZGVkIGV4dGVu
c2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQorICBleHRlbnNpb24g
eW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBtZXRob2RzLgorIiIi
CisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
ODc4YmM0YTM3OWI1YWQ4YzQyM2E4ZTM4ZGY0MDVhOTZjY2JmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkK
QEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdHJlYW0gRXhjZXB0aW9ucy4K
KyIiIgorCisjIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGlu
IHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhh
dCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgorIyBoYW5kbGVycy4gVW5m
b3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKKyMgcmVx
dWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93
IGRpcmVjdCByYXcgYnl0ZXMKKyMgd3JpdGluZy9yZWFkaW5nLgorCisKKyMgRXhjZXB0aW9ucwor
Y2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJU
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5h
dGVkCisgICAgdW5leHBlY3RlZGx5LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6CisgICAg
IiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZh
bGlkIGZyYW1lIHdlCisgICAgY2Fubm90IHBhcnNlLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhj
ZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCisg
ICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBj
YWxsZWQgb24KKyAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToK
KyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBm
cmFtZSB3aXRoIGZsYWcsIG9wY29kZQorICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNh
biBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCisgICAgY2FsbCByZWNl
aXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1l
LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSBy
ZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAorICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3Ry
aW5ncy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYjEx
ZjE1Y2IyZjU4MmU2YzI5ZTY5OGVlNWZmZjJhZmRlOGE3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CkBAIC0wLDAgKzEsMjcz
IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55
IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgorIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRp
b25zLgorTE9HTEVWRUxfRklORSA9IDkKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgdmVyc2lvbi4KK1ZFUlNJT05fSFlCSTEzID0gMTMKK1ZFUlNJT05fSFlCSTE0
ID0gMTMKK1ZFUlNJT05fSFlCSTE1ID0gMTMKK1ZFUlNJT05fSFlCSTE2ID0gMTMKK1ZFUlNJT05f
SFlCSTE3ID0gMTMKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJvdG9jb2wg
bGF0ZXN0IHZlcnNpb24uCitWRVJTSU9OX0hZQklfTEFURVNUID0gVkVSU0lPTl9IWUJJMTMKKwor
IyBQb3J0IG51bWJlcnMKK0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKK0RFRkFVTFRfV0VC
X1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIFNjaGVtZXMKK1dFQl9TT0NLRVRfU0NIRU1F
ID0gJ3dzJworV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycKKworIyBGcmFtZSBvcGNv
ZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENP
REVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorT1BDT0RFX0NMT1NFID0gMHg4CitP
UENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKKworIyBVVUlEIGZvciB0aGUgb3Bl
bmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tpbmcuCitXRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKworIyBPcGVuaW5nIGhh
bmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5kIGV4cGVjdGVkIHZhbHVlcy4KK1VQR1JBREVfSEVBREVS
ID0gJ1VwZ3JhZGUnCitXRUJTT0NLRVRfVVBHUkFERV9UWVBFID0gJ3dlYnNvY2tldCcKK0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCitVUEdSQURFX0NPTk5FQ1RJT05fVFlQRSA9ICdV
cGdyYWRlJworSE9TVF9IRUFERVIgPSAnSG9zdCcKK09SSUdJTl9IRUFERVIgPSAnT3JpZ2luJwor
U0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5JworU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JworU0VDX1dFQlNPQ0tF
VF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCitTRUNfV0VCU09DS0VU
X1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJworU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnCisKKyMgRXh0
ZW5zaW9ucworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxh
dGUnCisKKyMgU3RhdHVzIGNvZGVzCisjIENvZGUgU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCwg
U1RBVFVTX0FCTk9STUFMX0NMT1NVUkUsIGFuZAorIyBTVEFUVVNfVExTX0hBTkRTSEFLRSBhcmUg
cHNldWRvIGNvZGVzIHRvIGluZGljYXRlIHNwZWNpZmljIGVycm9yIGNhc2VzLgorIyBDb3VsZCBu
b3QgYmUgdXNlZCBmb3IgY29kZXMgaW4gYWN0dWFsIGNsb3NpbmcgZnJhbWVzLgorIyBBcHBsaWNh
dGlvbiBsZXZlbCBlcnJvcnMgbXVzdCB1c2UgY29kZXMgaW4gdGhlIHJhbmdlCisjIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4gVGhlIGNvZGVz
IGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VT
RVJfUkVHSVNURVJFRF9NQVggYXJlIG1hbmFnZWQKKyMgYnkgSUFOQS4gVXN1YWxseSBhcHBsaWNh
dGlvbiBtdXN0IGRlZmluZSB1c2VyIHByb3RvY29sIGxldmVsIGVycm9ycyBpbiB0aGUKKyMgcmFu
Z2UgU1RBVFVTX1VTRVJfUFJJVkFURV9CQVNFIHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLgor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VO
RFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CitTVEFUVVNf
VVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCitTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCA9
IDM5OTkKK1NUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSA9IDQwMDAKK1NUQVRVU19VU0VSX1BSSVZB
VEVfTUFYID0gNDk5OQorIyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGFsaWFzZXMgdG8ga2Vl
cCBjb21wYXRpYmlsaXR5LiBBcHBsaWNhdGlvbnMgbXVzdAorIyBub3QgdXNlIHRoZXNlIG9ic29s
ZXRlZCBkZWZpbml0aW9ucyBhbnltb3JlLgorU1RBVFVTX05PUk1BTCA9IFNUQVRVU19OT1JNQUxf
Q0xPU1VSRQorU1RBVFVTX1VOU1VQUE9SVEVEID0gU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEKK1NU
QVRVU19DT0RFX05PVF9BVkFJTEFCTEUgPSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECitTVEFU
VVNfQUJOT1JNQUxfQ0xPU0UgPSBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRQorU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRCA9IFNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQQorU1RB
VFVTX01BTkRBVE9SWV9FWFQgPSBTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTgorCisjIEhUVFAg
c3RhdHVzIGNvZGVzCitIVFRQX1NUQVRVU19CQURfUkVRVUVTVCA9IDQwMAorSFRUUF9TVEFUVVNf
Rk9SQklEREVOID0gNDAzCitIVFRQX1NUQVRVU19OT1RfRk9VTkQgPSA0MDQKKworCitkZWYgaXNf
Y29udHJvbF9vcGNvZGUob3Bjb2RlKToKKyAgICByZXR1cm4gKG9wY29kZSA+PiAzKSA9PSAxCisK
KworY2xhc3MgRXh0ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CisgICAgIiIiVGhpcyBpcyBleGNo
YW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGluIG9wZW5pbmcgaGFuZHNoYWtlLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUK
KyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBt
b3JlIGVmZmljaWVudCBvbmUgc3VjaAorICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBj
aGFuZ2VzIHRvIHNheSBsaWtlCisgICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1
bmlxdWUKKyAgICAgICAgIyAtIFRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZp
Y2FudAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gW10KKworICAgIGRlZiBuYW1lKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dGVuc2lvbiBuYW1lLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUp
OgorICAgICAgICAiIiJBZGQgYSBwYXJhbWV0ZXIuIiIiCisgICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6
CisgICAgICAgICIiIlJldHVybiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcmFtZXRlcnMKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgorICAgICAgICBy
ZXR1cm4gW25hbWUgZm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQor
CisgICAgZGVmIGhhc19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlRlc3QgaWYg
YSBwYXJhbWV0ZXIgZXhpc3RzLiIiIgorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFs
dWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFt
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQg
dGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgcGFyYW1ldGVyLiIiIgorICAgICAgICBmb3IgcGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBh
cmFtX25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKKwor
CitjbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiRXhj
ZXB0aW9uIHRvIGhhbmRsZSBlcnJvcnMgaW4gZXh0ZW5zaW9uIHBhcnNpbmcuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhj
ZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorCisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uX3Bh
cmFtKHN0YXRlLCBkZWZpbml0aW9uKToKKyAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3Rva2VuKHN0YXRlKQorCisgICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgorICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3VuZCcpCisKKyAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0n
KToKKyAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCisg
ICAgICAgIHJldHVybgorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRl
KQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJz
ZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KKyAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQorICAgIGlmIHBhcmFtX3Zh
bHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCisg
ICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1o
YW5kIHNpZGUgb2YgJworICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQor
CisgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQor
CisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKKyAgICBleHRlbnNpb25fdG9rZW4gPSBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgaWYgZXh0ZW5zaW9uX3Rv
a2VuIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBleHRlbnNpb24gPSBFeHRl
bnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIG5v
dCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgorICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0
ZSwgZXh0ZW5zaW9uKQorICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJSAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKKworICAgIHJldHVybiBleHRlbnNpb24KKworCitkZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKKyAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgorCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCisgICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCisgICAgIiIiCisg
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
CisgICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JworICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJSBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAg
ICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgZXh0ZW5zaW9u
IGVudHJ5IGZvdW5kJykKKworICAgIHJldHVybiBleHRlbnNpb25fbGlzdAorCisKK2RlZiBmb3Jt
YXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6CisgICAgIiIiRm9ybWF0IGFuIEV4dGVuc2lvblBhcmFt
ZXRlciBvYmplY3QuIiIiCisgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgp
XQorICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFt
ZXRlcnMoKToKKyAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIGZv
cm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShw
YXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycg
JSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKKyAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1h
dHRlZF9wYXJhbXMpCisKKworZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToK
KyAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgor
ICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCisgICAgZm9yIGV4dGVuc2lvbiBpbiBl
eHRlbnNpb25fbGlzdDoKKyAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChm
b3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCisgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0
ZWRfZXh0ZW5zaW9uX2xpc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlOTQzYTVi
ODBhZmRjMGJkYTk1M2FhMmE3MzE5OGI5OWE0NTliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpAQCAtMCwwICsxLDM4NSBA
QAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisiIiJEaXNwYXRjaCBXZWJTb2NrZXQgcmVxdWVzdC4KKyIiIgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgc3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCitf
U09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dzaFwucHkkJykKK19TT1VS
Q0VfU1VGRklYID0gJ193c2gucHknCitfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9
ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKK19UUkFOU0ZFUl9EQVRBX0hBTkRMRVJf
TkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCitfUEFTU0lWRV9DTE9TSU5HX0hBTkRT
SEFLRV9IQU5ETEVSX05BTUUgPSAoCisgICAgJ3dlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZScpCisKKworY2xhc3MgRGlzcGF0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAi
IiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViU29ja2V0IHJlcXVlc3QuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5E
KToKKyAgICAgICAgc3VwZXIoRGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUp
CisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworZGVmIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KToKKyAgICAiIiJEZWZhdWx0IHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgorCisgICAgcmV0dXJu
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICcnCisKKworZGVmIF9ub3JtYWxpemVfcGF0
aChwYXRoKToKKyAgICAiIiJOb3JtYWxpemUgcGF0aC4KKworICAgIEFyZ3M6CisgICAgICAgIHBh
dGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KKworICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRo
ZSBhYnNvbHV0ZSBwYXRoLgorICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcg
b3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCisgICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMg
dXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCisgICAgIiIiCisKKyAgICBwYXRo
ID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQorICAgIHBhdGggPSBvcy5wYXRoLnJl
YWxwYXRoKHBhdGgpCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCisgICAgcmV0
dXJuIHBhdGgKKworCitkZWYgX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNl
X2Rpcik6CisgICAgIiIiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGgg
b2YgYSBXZWJTb2NrZXQgaGFuZGxlciBzb3VyY2UKKyAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3Ry
aW5nIGJ5IHJlbW92aW5nIHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCisgICAg
aXRzIGhlYWQsIHJlbW92aW5nIF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBs
YWNpbmcgcGF0aAorICAgIHNlcGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCisKKyAgICBBcmdzOgor
ICAgICAgICBiYXNlX2RpcjogdGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgorICAgICIi
IgorCisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCisKKyAgICBiYXNl
X2xlbiA9IGxlbihiYXNlX2RpcikKKyAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklY
KQorCisgICAgZGVmIGNvbnZlcnRlcihwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dp
dGgoX1NPVVJDRV9TVUZGSVgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBf
bm9ybWFsaXplX3BhdGggbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5r
IGJyZWFrcworICAgICAgICAjIGZvbGxvd2luZyBwYXRoIGNoZWNrLgorICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChi
YXNlX2Rpcik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gcGF0aFti
YXNlX2xlbjotc3VmZml4X2xlbl0KKworICAgIHJldHVybiBjb252ZXJ0ZXIKKworCitkZWYgX2Vu
dW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAiIiJSZXR1cm5zIGEg
Z2VuZXJhdG9yIHRoYXQgZW51bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBu
YW1lcworICAgIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCisgICAgIiIiCisKKyAgICBmb3Igcm9v
dCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAgICAgZm9y
IGJhc2UgaW4gZmlsZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJh
c2UpCisgICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Cisg
ICAgICAgICAgICAgICAgeWllbGQgcGF0aAorCisKK2NsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0
KToKKyAgICAiIiJBIGhhbmRsZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGEsCisgICAgICAgICAg
ICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgorICAgICAgICBzZWxmLmRvX2V4dHJh
X2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICBzZWxmLnRyYW5zZmVyX2Rh
dGEgPSB0cmFuc2Zlcl9kYXRhCisgICAgICAgIHNlbGYucGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKKworCitkZWYgX3NvdXJjZV9oYW5kbGVyX2Zp
bGUoaGFuZGxlcl9kZWZpbml0aW9uKToKKyAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRp
b24gc3RyaW5nLgorCisgICAgQXJnczoKKyAgICAgICAgaGFuZGxlcl9kZWZpbml0aW9uOiBhIHN0
cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVmaW5lCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCisgICAgIiIiCisKKyAgICBnbG9i
YWxfZGljID0ge30KKyAgICB0cnk6CisgICAgICAgICMgVGhpcyBzdGF0ZW1lbnQgaXMgZ3JhbWF0
aWNhbGx5IGRpZmZlcmVudCBpbiBweXRob24gMiBhbmQgMy4KKyAgICAgICAgIyBIZW5jZSwgeWFw
ZiB3aWxsIGNvbXBsYWluIGFib3V0IHRoaXMuIFRvIG92ZXJjb21lIHRoaXMsIHdlIGRpc2FibGUK
KyAgICAgICAgIyB5YXBmIGZvciB0aGlzIGxpbmUuCisgICAgICAgIGV4ZWMoaGFuZGxlcl9kZWZp
bml0aW9uLCBnbG9iYWxfZGljKSAjIHlhcGY6IGRpc2FibGUKKyAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFu
ZGxlcjonICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKKyAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCisg
ICAgdHJ5OgorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0
cmFjdF9oYW5kbGVyKAorICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19I
QU5EU0hBS0VfSEFORExFUl9OQU1FKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHBh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKKyAgICAgICAgICAgIF9kZWZhdWx0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKKyAgICByZXR1cm4gX0hhbmRsZXJT
dWl0ZSgKKyAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFO
RFNIQUtFX0hBTkRMRVJfTkFNRSksCisgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5n
X2hhbmRzaGFrZV9oYW5kbGVyKQorCisKK2RlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6
CisgICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9t
IHRoZSBnaXZlbiBkaWN0aW9uYXJ5CisgICAgZGljLgorICAgICIiIgorCisgICAgaWYgbmFtZSBu
b3QgaW4gZGljOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRl
ZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRpY1tuYW1lXQorICAgIGlmIG5vdCBjYWxs
YWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5v
dCBjYWxsYWJsZS4nICUgbmFtZSkKKyAgICByZXR1cm4gaGFuZGxlcgorCisKK2NsYXNzIERpc3Bh
dGNoZXIob2JqZWN0KToKKyAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KKwor
ICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5k
bGVycy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAg
cm9vdF9kaXIsCisgICAgICAgICAgICAgICAgIHNjYW5fZGlyPU5vbmUsCisgICAgICAgICAgICAg
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6CisgICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcm9vdF9k
aXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVzIGFyZQorICAg
ICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5fZGlyOiBUaGUgZGly
ZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAgICAgICAgICAgICAg
ICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciByb290
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9kaXIgaXRzZWxmLiAg
SWYgc2Nhbl9kaXIgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICByb290X2RpciBpcyB1
c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCisgICAgICAgICAgICAgICAg
ICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRhaW5zIG1hbnkKKyAg
ICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIGFsbG93X2hh
bmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmlsZXMgZXZlbiBpZiB0aGVp
cgorICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciByb290
X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXAgPSB7fQor
ICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQorICAgICAgICBpZiBzY2FuX2RpciBp
cyBOb25lOgorICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2RpcgorICAgICAgICBpZiBub3Qg
b3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICBv
cy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4
Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMuJyAlIChzY2FuX2Rpciwg
cm9vdF9kaXIpKQorICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIocm9v
dF9kaXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKworICAgIGRlZiBhZGRfcmVzb3Vy
Y2VfcGF0aF9hbGlhcyhzZWxmLCBhbGlhc19yZXNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKKyAgICAgICAgIiIiQWRk
IHJlc291cmNlIHBhdGggYWxpYXMuCisKKyAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0byBh
bGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgaGFuZGxlciBy
ZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCisgICAg
ICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRoCisg
ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2Vs
Zi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KKyAgICAgICAgICAg
IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhdID0gaGFuZGxlcl9z
dWl0ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRj
aEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAgZGVmIHNvdXJjZV93
YXJuaW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5nIGhh
bmRsZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKKworICAg
IGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkRvIGV4
dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICAgICAgU2VsZWN0IGEg
aGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKKyAgICAgICAgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQK
KyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFi
b3J0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBvcGVu
aW5nIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgaGFuZGxlcl9zdWl0
ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAg
aWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAg
ICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRyYV9oYW5kc2hha2UK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0KQor
ICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24g
dG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcg
YW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAnICUKKyAgICAg
ICAgICAgICAgICAoX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLCBlKQorICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2Vw
dGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVOKQorCisgICAgZGVmIHRyYW5zZmVy
X2RhdGEoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkxldCBhIGhhbmRsZXIgdHJhbnNmZXJf
ZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVy
IGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2FzIG5vdCBmb3VuZAorICAg
ICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2VyIGhhbmRsZXIgYWJvcnQg
Y29ubmVjdGlvbgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBUZXJt
aW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4KKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVx
dWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6
ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSkKKyAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0ZS50
cmFuc2Zlcl9kYXRhCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQorCisgICAg
ICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAgICAgIyBDYXRjaCBu
b24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUgaGFuZGxlciBkaWRuJ3QgaGFuZGxlLgorICAgICAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIEludmFs
aWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBiZWZvcmUKKyAgICAgICAgICAgICMgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbi4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RP
Q09MX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19V
TlNVUFBPUlRFRF9EQVRBKQorICAgICAgICBleGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKKyAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAjIEFueSBvdGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQg
dG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAgICAgICAjIGZ1bmN0aW9uLgorICAgICAgICAg
ICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICcl
cyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisgICAgICAgICAgICAgICAgKF9UUkFOU0ZF
Ul9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUpCisgICAgICAgICAg
ICByYWlzZQorCisgICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciByZXNwb25kaW5nIGNs
aWVudCBpbml0aWF0ZWQgY2xvc2luZworICAgICAgICBoYW5kc2hha2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9jbG9zaW5nX2hhbmRz
aGFrZShyZXF1ZXN0KQorCisgICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNlbGYsIHJlc291cmNl
KToKKyAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZvciBleHRyYSBoYW5k
c2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQorICAgICAgICBmb3IgZGF0YSB0cmFuc2ZlcikgZm9y
IHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgZnJhZ21lbnQgPSBOb25lCisgICAgICAgIGlmICcjJyBpbiByZXNvdXJjZToK
KyAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNwbGl0KCcjJywgMSkK
KyAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVzb3VyY2UgPSByZXNv
dXJjZS5zcGxpdCgnPycsIDEpWzBdCisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLl9oYW5k
bGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgYW5k
IGZyYWdtZW50OgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gV2ViU29j
a2V0IFVSSXMnLAorICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKKworICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKToK
KyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMgaW4gdGhlIHNj
YW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBpcyBkZXRlcm1p
bmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIGJ1
aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5nIHRoYXQgdGhl
cmUncworICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBzY2FuX2RpciBh
bmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5CisgICAgICAgICMgY29tcGFyaW5nIHJlYWxwYXRoIG9m
IHRoZW0uCisKKyAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4gU2VlCisgICAg
ICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjAzCisKKyAg
ICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocm9vdF9k
aXIpCisgICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKQor
ICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2RpcikKKyAgICAg
ICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nhbl9yZWFscGF0
aCk6CisgICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIg
YW5kCisgICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpLnN0YXJ0c3dp
dGgocm9vdF9yZWFscGF0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
CisgICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBub3QgdW5kZXIg
cm9vdCBkaXJlY3RvcnknICUgcGF0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBoYW5kbGVyX2Zp
bGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJf
ZmlsZShoYW5kbGVyX2ZpbGUucmVhZCgpKQorICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzLmFwcGVu
ZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmVzb3VyY2UgPSBjb252ZXJ0KHBhdGgpCisgICAgICAgICAgICBpZiByZXNvdXJjZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUGF0aCB0byByZXNv
dXJjZSBjb252ZXJzaW9uIG9uICVzIGZhaWxlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJfc3VpdGUKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2V4dGVuc2lvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0NTM5ZjZmY2UxNGJlZTY1ZDdmYTdhNTgzYWNi
YjY1ZjAyM2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5CkBAIC0wLDAgKzEsNDczIEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldC5odHRwX2hlYWRlcl91dGlsIGltcG9ydCBxdW90ZV9pZl9uZWNl
c3NhcnkKKworIyBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzc2VzLgorX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KKworCitjbGFzcyBF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYu
X2FjdGl2ZSA9IFRydWUKKworICAgIGRlZiByZXF1ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKHNlbGYs
IHByb2Nlc3NvcnMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0X2FjdGl2ZShzZWxmLCBh
Y3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUKKworICAgIGRlZiBpc19hY3Rp
dmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgIGRlZiBfZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHRlbnNpb24gJXMg
aXMgZGVhY3RpdmF0ZWQnLCBzZWxmLm5hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFs
KCkKKyAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2
ZSA9IEZhbHNlCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIF9zZXR1cF9zdHJl
YW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX3N0cmVhbV9v
cHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQorCisKK2RlZiBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6CisgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxv
YXQoJ2luZicpCisgICAgaWYgb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8gPSBm
bG9hdChmaWx0ZXJlZF9ieXRlcykgLyBvcmlnaW5hbF9ieXRlcworCisgICAgbG9nZ2VyLmRlYnVn
KCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAg
ICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfbG9nX2luY29taW5n
X2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6Cisg
ICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0g
ZmxvYXQoJ2luZicpCisgICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8g
PSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcworCisgICAgbG9nZ2VyLmRl
YnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAg
ICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfcGFyc2Vfd2lu
ZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVlIGlmZiB0
aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAgIGdyYW1tYXIgb2YgdGhlIHdpbmRv
dyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAgaWYgYml0cyBpcyBO
b25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcpCisKKyAg
ICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJyb3Igd2ls
bCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0cykKKworICAgICMgRmlyc3QgY29u
ZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgorICAgIGlmIGJp
dHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAxNToKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykKKworICAg
IHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKG9iamVj
dCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1bHQgZGF0
YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJhdGlvLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdG90YWxfb3Jp
Z2luYWxfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKKwor
ICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUK
KworICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fdG90
YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5f
dG90YWxfcmVzdWx0X2J5dGVzKSAvCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29y
aWdpbmFsX2J5dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdp
bmYnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIicGVybWVzc2FnZS1kZWZsYXRlIGV4dGVu
c2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Cisg
ICAgIiIiCisKKyAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJworICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJworICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLiIiIgorCisgICAgICAgIEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICMg
VGhpcyBtZXRob2QgcmV0dXJucyAiZGVmbGF0ZSIgKG5vdCAicGVybWVzc2FnZS1kZWZsYXRlIikg
Zm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgcmV0dXJuICdkZWZsYXRlJwor
CisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgorICAgICAg
ICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKToKKyAgICAg
ICAgICAgIGlmIG5hbWUgbm90IGluIFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0KKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFtZXRlcjogJXInLCBuYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0
cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1NF
UlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93
X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKKyAgICAgICAgaWYgKHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisg
ICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlz
IG5vdCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJvbSBh
IGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgorICAgICAgICAjIGFjY2Vw
dCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgorICAgICAgICBj
bGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cigKKyAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAg
ICAgIGlmIChjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKKyAgICAgICAgICAgICAgICAnY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93
aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorCisgICAgICAg
ICMgTm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQg
d2l0aCB3aW5kb3cKKyAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xp
ZW50X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQorICAgICAgICAjIHNlbnQgdG8gdGhlIGNs
aWVudC4KKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVy
KHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKyAgICAgICAgc2Vs
Zi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29t
cHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgICAgIHJlc3BvbnNlID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKworICAgICAgICBpZiBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2Uu
YWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX21heF93aW5kb3dfYml0cykp
CisKKyAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBy
ZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BB
UkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisgICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgaWYgbm90IGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ1Byb2Nl
c3NvciBpcyBjb25maWd1cmVkIHRvIHVzZSAlcyBidXQgJworICAgICAgICAgICAgICAgICAgICAn
dGhlIGNsaWVudCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Q0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQorCisgICAgICAgIGlmIHNl
bGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgcmVzcG9uc2UuYWRk
X3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXNwb25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
PSVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgp
LCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKSkKKworICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgc2V0X2NsaWVudF9tYXhfd2luZG93
X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZp
ZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyBl
eHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsCisgICAgICAgIGJ1
dCBkb2Vzbid0IHJlZHVjZSB0aGUgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXplIG9mIGl0cyBpbmZs
YXRlci4KKyAgICAgICAgSS5lLiwgeW91IGNhbiB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQg
aW1wbGVtZW50YXRpb24gYnV0IGNhbm5vdAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9m
IHRoaXMgY2xhc3MuCisKKyAgICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIHdp
dGggVHJ1ZSBhbmQgYW4gb2ZmZXIgd2l0aG91dCB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5k
b3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIGlzIHJlY2VpdmVkLAorICAgICAgICAtIChXaGVu
IHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24pIHRoaXMgcHJvY2Vz
c29yCisgICAgICAgICAgZGVjbGluZXMgdGhlIHJlcXVlc3QuCisgICAgICAgIC0gKFdoZW4gcHJv
Y2Vzc2luZyB0aGUgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29y
CisgICAgICAgICAgYWNjZXB0cyB0aGUgcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSB2YWx1ZQorCisgICAgZGVm
IHNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6CisgICAgICAgICIi
IklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAgICAg
ICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBo
YW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlc2V0IGluZmxhdGVyIGZv
ciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBjYW4KKyAgICAgICAgdXNlIHRoaXMgZm9yIHRlc3Rp
bmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QgcmVkdWNlIG1lbW9yeQorICAgICAg
ICB1c2FnZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9jbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxm
LCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZhbHVlKQorCisgICAg
ZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisKKyAgICBkZWYgZGlzYWJs
ZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZhbHNlKQorCisKK2NsYXNzIF9QZXJNZXNzYWdlRGVm
bGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEgZnJhbWVyIGZvciBleHRlbnNpb25zIHdpdGgg
cGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
ZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAg
ICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAg
ICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92
ZXIpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKKworICAgICAgICBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKKworICAgICAgICAjIFRydWUgaWYgYSBt
ZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9uIGlzIG9uZ29pbmcuCisgICAgICAg
IHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQorCisgICAgICAgICMgQ2FsY3VsYXRlcwor
ICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0
ZXIpIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0
ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2Vf
cmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKKworICAgICAgICAj
IENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVk
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCisKKyAgICBk
ZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVl
CisKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgor
ICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gdmFsdWUKKworICAgIGRl
ZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgor
ICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKKyAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisK
KyAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCisgICAgICAgIHNl
bGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAor
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAgICAgIGZpbHRlcmVk
X3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25f
cmF0aW8oCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKKworICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKwor
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygK
KyAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1lbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmluYWw9c2VsZi5fYmZpbmFsKQorCisg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxm
Ll9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKKyAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBfbG9nX291dGdvaW5n
X2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLCBvcmlnaW5hbF9w
YXlsb2FkX3NpemUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQorCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgorICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQorICAgICAgICBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nID0gbm90IGVuZAorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisg
ICAgZGVmIF9wcm9jZXNzX2luY29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAgICAgaWYg
ZnJhbWUucnN2MSA9PSAxIGFuZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSk6CisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXBy
ZXNzX25leHRfbWVzc2FnZSgpCisgICAgICAgICAgICBmcmFtZS5yc3YxID0gMAorCisgICAgZGVm
IF9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgor
ICAgICAgICBpZiAobm90IGNvbXByZXNzaW9uX2JpdCBvciBjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmcmFtZS5y
c3YxID0gMQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0
cmVhbU9wdGlvbnMuIiIiCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2Jq
ZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNl
bGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSgKKyAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgY2xhc3MgX0luY29taW5n
TWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0ID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQoc2Vs
Zik6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUKKwor
ICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKGZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxz
ZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1l
KQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1l
RmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNv
bWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVu
ZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikKKworICAgICAgICBz
dHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQorCisKK19h
dmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0g
PSAoCisgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisKKworZGVmIGdl
dF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToKKyAgICAiIiJHaXZlbiBh
biBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVuc2lvbiBvZmZlciByZWNl
aXZlZAorICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBleHRlbnNpb24gcHJvY2Vzc29yIGNsYXNzLgor
ICAgICIiIgorCisgICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJsZV9wcm9jZXNzb3JzLmdl
dChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCisgICAgaWYgcHJvY2Vzc29yX2NsYXNzIGlzIE5v
bmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHByb2Nlc3Nvcl9jbGFzcyhleHRl
bnNpb25fcmVxdWVzdCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGFhZDI3
ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCkBAIC0wLDAgKzEs
OTggQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisl
bW9kdWxlIGZhc3RfbWFza2luZworCislaW5jbHVkZSAiY3N0cmluZy5pIgorCisleworI2luY2x1
ZGUgPGNzdHJpbmc+CisKKyNpZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgor
I2VuZGlmCislfQorCislYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgeworICAgIChj
b25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAorICAgIChjb25zdCBjaGFy
KiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKKyVjc3RyaW5nX291dHB1
dF9hbGxvY2F0ZV9zaXplKAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwg
ZGVsZXRlIFtdICokMSk7CisKKyVpbmxpbmUgJXsKKwordm9pZCBtYXNrKAorICAgIGNvbnN0IGNo
YXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKKyAgICBjb25zdCBjaGFyKiBtYXNraW5n
X2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKKyAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgs
CisgICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7CisgICpyZXN1bHQgPSBu
ZXcgY2hhcltwYXlsb2FkX2xlbmd0aF07CisgICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5n
dGg7CisgIG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7CisKKyAgY2hh
ciogY3Vyc29yID0gKnJlc3VsdDsKKyAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVz
dWx0X2xlbmd0aDsKKworI2lmZGVmIF9fU1NFMl9fCisgIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29y
X2VuZCkgJiYKKyAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4
ZikpIHsKKyAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAg
ICArK2N1cnNvcjsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCAr
IDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisgIGlmIChjdXJzb3IgPT0gY3Vyc29yX2Vu
ZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Cisg
IF9fbTEyOGkgbWFza2luZ19rZXlfYmxvY2s7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2Nr
U2l6ZTsgKytpKSB7CisgICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlf
YmxvY2spICsgaSkgPQorICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Cisg
ICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdf
a2V5X2xlbmd0aDsKKyAgfQorCisgIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNv
cl9lbmQpIHsKKyAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQorICAgICAgICBfbW1fbG9hZF9z
aTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKKyAgICBfbW1fc3RyZWFt
X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCisgICAgICAgICAgICAg
ICAgICAgICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7
CisgICAgY3Vyc29yICs9IGtCbG9ja1NpemU7CisgIH0KKyNlbmRpZgorCisgIHdoaWxlIChjdXJz
b3IgPCBjdXJzb3JfZW5kKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF07CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2lu
Z19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorfQorCislfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiZTVhZTlmZGZkNDZkMTg5NzBiZjk5MmNjMWFkZWEyNWFj
YzVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMgQ29weXJpZ2h0IDIw
MTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4gVGhpcyBjbGFzcyB0
cnkgdG8gYXBwbHkgYXZhaWxhYmxlCitvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBl
YWNoIHByb3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCitzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaQorIyBFeHBvcnQgQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwgSGFuZHNoYWtlRXhjZXB0aW9uLCBhbmQgVmVyc2lvbkV4Y2Vw
dGlvbgorIyBzeW1ib2wgZnJvbSB0aGlzIG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgor
CitfTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIGRvX2hhbmRz
aGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAiIiJQZXJmb3JtcyBXZWJTb2NrZXQgaGFu
ZHNoYWtlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgorICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4K
KworICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNl
IGluIHBlcmZvcm1pbmcKKyAgICBoYW5kc2hha2UuCisgICAgIiIiCisKKyAgICBfTE9HR0VSLmRl
YnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgcmVzb3VyY2U6ICVyJywgcmVxdWVzdC51
cmkpCisgICAgIyBUbyBwcmludCBtaW1ldG9vbHMuTWVzc2FnZSBhcyBlc2NhcGVkIG9uZS1saW5l
IHN0cmluZywgd2UgY29udmVydHMKKyAgICAjIGhlYWRlcnNfaW4gdG8gZGljdCBvYmplY3QuIFdp
dGhvdXQgY29udmVyc2lvbiwgaWYgd2UgdXNlICVyLCBpdCBqdXN0CisgICAgIyBwcmludHMgdGhl
IHR5cGUgYW5kIGFkZHJlc3MsIGFuZCBpZiB3ZSB1c2UgJXMsIGl0IHByaW50cyB0aGUgb3JpZ2lu
YWwKKyAgICAjIGhlYWRlciBzdHJpbmcgYXMgbXVsdGlwbGUgbGluZXMuCisgICAgIworICAgICMg
Qm90aCBtaW1ldG9vbHMuTWVzc2FnZSBhbmQgTXBUYWJsZV9UeXBlIG9mIG1vZF9weXRob24gY2Fu
IGJlCisgICAgIyBjb252ZXJ0ZWQgdG8gZGljdC4KKyAgICAjCisgICAgIyBtaW1ldG9vbHMuTWVz
c2FnZS5fX3N0cl9fIHJldHVybnMgdGhlIG9yaWdpbmFsIGhlYWRlciBzdHJpbmcuCisgICAgIyBk
aWN0KG1pbWV0b29scy5NZXNzYWdlIG9iamVjdCkgcmV0dXJucyB0aGUgbWFwIGZyb20gaGVhZGVy
IG5hbWVzIHRvCisgICAgIyBoZWFkZXIgdmFsdWVzLiBXaGlsZSBNcFRhYmxlX1R5cGUgZG9lc24n
dCBoYXZlIHN1Y2ggX19zdHJfXyBidXQganVzdAorICAgICMgX19yZXByX18gd2hpY2ggZm9ybWF0
cyBpdHNlbGYgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgICBfTE9HR0VSLmRlYnVn
KCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAg
ICAgICAgZGljdChyZXF1ZXN0LmhlYWRlcnNfaW4pKQorCisgICAgaGFuZHNoYWtlcnMgPSBbXQor
ICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgoJ1JGQyA2NDU1JywgaHliaS5IYW5kc2hha2VyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpKSkKKworICAgIGZvciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFr
ZXJzOgorICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycs
IG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKKyAgICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVzIHByb3RvY29sKScs
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
RmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcics
CisgICAgICAgICAgICAgICAgbmFtZSwgZSkKKyAgICAgICAgICAgIGlmIGUuc3RhdHVzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorCisgICAgIyBUT0RPKHRveW9zaGltKTogQWRk
IGEgdGVzdCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFpbC4KKyAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3Blbmlu
ZyBoYW5kc2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKKyAgICAgICAgc3RhdHVz
PWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1OGRkOGQ0OTdkOWQ4OWRkOWMxMDQzMmJjZGJhM2U5MDNlMWI2
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CkBAIC0wLDAgKzEsMTc5IEBACisjIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkNvbW1vbiBmdW5jdGlvbnMgYW5kIGV4Y2VwdGlvbnMgdXNlZCBieSBXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UKK3Byb2Nlc3NvcnMuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKworY2xhc3MgQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRp
bmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFsbHkuCisKKyAgICBJZiB0aGlzIGV4Y2VwdGlvbiBp
cyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCisg
ICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRs
ZXIgd2lsbCBiZSBpbnZva2VkLgorCisgICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlu
IHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAorICAgIGJlIGNsb3Nl
ZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChT
KSBoYW5kbGVyCisgICAgd2lsbCBiZSBpbnZva2VkLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2lu
ZworICAgIFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgc3RhdHVzPU5vbmUpOgorICAgICAgICBzdXBlcihIYW5kc2hha2VF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3Rh
dHVzCisKKworY2xhc3MgVmVyc2lvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMg
ZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSB2ZXJzaW9uIG9mIGNsaWVudCByZXF1ZXN0
IGRvZXMgbm90CisgICAgbWF0Y2ggd2l0aCB2ZXJzaW9uIHRoZSBzZXJ2ZXIgc3VwcG9ydHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0n
Jyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEgc3RyIG9iamVjdCB0byBzaG93IHN1cHBv
cnRlZCBoeWJpIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcu
ICcxMycpCisgICAgICAgICIiIgorICAgICAgICBzdXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxm
KS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBv
cnRlZF92ZXJzaW9ucworCisKK2RlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6CisgICAg
aWYgaXNfc2VjdXJlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9T
RUNVUkVfUE9SVAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQKKworCitkZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgor
ICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmll
bGQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMg
NjQ1NS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBzdWJwcm90b2NvbDoKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29sIG5hbWU6IGVtcHR5JykKKwor
ICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4uCisgICAgc3RhdGUg
PSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShzdWJwcm90b2NvbCkKKyAgICB0b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICByZXN0ID0gaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQorICAgICMgSWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3Vi
cHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3IgaW52YWxpZC4gSWYKKyAgICAjIHxyZXN0fCBp
cyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlz
CisgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5v
bmUuCisgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9jb2wgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJlc3QpCisKKworZGVmIHBh
cnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgorICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19p
bltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKKyAgICBpZiBsZW4oZmllbGRzKSA9
PSAxOgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3Qu
aXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVs
ZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUgZSkKKworCitk
ZWYgZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSk6CisgICAgcmV0dXJuIHUnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCisKKworZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6CisgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKKyAgICBpZiB2YWx1
ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6CisgICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
CisKKyAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6CisgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKKyAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksCisgICAgICAgICAgICBzdGF0dXM9ZmFp
bF9zdGF0dXMpCisKKworZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KToKKyAgICAjIDUu
MSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4KKyAgICAjIDUuMSAy
LiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRlKS4KKyAg
ICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSB1J0dFVCc6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisgICAg
aWYgcmVxdWVzdC5wcm90b2NvbCAhPSB1J0hUVFAvMS4xJzoKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCisKKworZGVmIHBhcnNlX3Rv
a2VuX2xpc3QoZGF0YSk6CisgICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxv
d3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKKyAgICBhcyBhIGxpc3Qgb2Yg
c3RyaW5ncy4KKworICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgorICAgICIiIgor
CisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAg
dG9rZW5fbGlzdCA9IFtdCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0b2tlbiA9IGh0dHBf
aGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKKworICAgICAgICBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbih0b2tlbl9saXN0KSA9PSAwOgorICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ05vIHZhbGlkIHRva2VuIGZvdW5kJykKKworICAg
IHJldHVybiB0b2tlbl9saXN0CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZkNjNlYjYzZWRkMWY0YWNmODg3ZGYzNWQ0YmRjM2I2ZTEzOTkxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5w
eQpAQCAtMCwwICsxLDM5NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgcHJvdmlk
ZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAorcHJv
dG9jb2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydAoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJl
Citmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVu
c2lvbl9wcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgY2hlY2tfcmVxdWVzdF9saW5lCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9z
dWJwcm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBW
ZXJzaW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAor
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKyMgVXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFs
dWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2NDgKKyMg
ZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQgYmVmb3Jl
ID09IG11c3QgYmUgYW55IG9mCisjIEEsIFEsIGcgYW5kIHcuCitfU0VDX1dFQlNPQ0tFVF9LRVlf
UkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQorCisjIERl
ZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRF
U1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9
IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJT
SU9OX0xBVEVTVCwKK10KKworCitkZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKKyAgICAiIiJDb21w
dXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9tIHZhbHVl
IG9mIHRoZQorICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAiIiIKKworICAgIGFj
Y2VwdF9iaW5hcnkgPSBzaGExKGtleSArIGNvbW1vbi5XRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRp
Z2VzdCgpCisgICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2NlcHRfYmluYXJ5KQorCisg
ICAgcmV0dXJuIGFjY2VwdAorCisKK2RlZiBjb21wdXRlX2FjY2VwdF9mcm9tX3VuaWNvZGUodW5p
Y29kZV9rZXkpOgorICAgICIiIkEgd3JhcHBlciBmdW5jdGlvbiBmb3IgY29tcHV0ZV9hY2NlcHQg
d2hpY2ggdGFrZXMgYSB1bmljb2RlIHN0cmluZyBhcyBhbgorICAgIGFyZ3VtZW50LCBhbmQgZW5j
b2RlcyBpdCB0byBieXRlIHN0cmluZy4gSXQgdGhlbiBwYXNzZXMgaXQgb24gdG8KKyAgICBjb21w
dXRlX2FjY2VwdC4KKyAgICAiIiIKKworICAgIGtleSA9IHVuaWNvZGVfa2V5LmVuY29kZSgnVVRG
LTgnKQorICAgIHJldHVybiBjb21wdXRlX2FjY2VwdChrZXkpCisKKworY2xhc3MgSGFuZHNoYWtl
cihvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
CisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVy
KS4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19y
ZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9s
b2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisg
ICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgY29ubmVj
dGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tl
bl9saXN0KGNvbm5lY3Rpb24pCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRmFpbGVkIHRvIHBhcnNl
ICVzOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24u
Q09OTkVDVElPTl9IRUFERVIsIGUpKQorCisgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBG
YWxzZQorICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6CisgICAgICAgICAg
ICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dl
cigpOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6CisgICAg
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIGhl
YWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLkNP
Tk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQorCisgICAg
ZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9j
b2RlID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUK
KworICAgICAgICAjIFBhcnNpbmcuCisKKyAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYu
X3JlcXVlc3QpCisKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1
ZXN0LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCisKKyAgICAgICAgc2VsZi5fdmFs
aWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVz
b3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIHVudXNlZF9ob3N0ID0gZ2V0X21h
bmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgY29tbW9uLkhPU1RfSEVBREVSKQorCisgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3ZlcnNpb24oKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQorICAgICAgICAgICAg
c2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMo
KQorCisgICAgICAgICAgICAjIEtleSB2YWxpZGF0aW9uLCByZXNwb25zZSBnZW5lcmF0aW9uLgor
CisgICAgICAgICAgICBrZXkgPSBzZWxmLl9nZXRfa2V5KCkKKyAgICAgICAgICAgIGFjY2VwdCA9
IGNvbXB1dGVfYWNjZXB0KGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6
ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1dGlsLmhleGlmeShiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkpKQorCisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQorCisg
ICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorCisgICAgICAgICAgICBw
cm9jZXNzb3JzID0gW10KKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVk
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9y
ZXF1ZXN0IGluIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NvciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lv
bl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVl
c3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHBy
b2Nlc3NvcikKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMgPSBwcm9jZXNzb3JzCisKKyAgICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBU
aGUgZXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IGFkZCBoZWFkZXIKKyAgICAgICAgICAgICMg
ZGF0YSBhcyBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBw
ZW5kcworICAgICAgICAgICAgIyB0aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFkZXJzID0gW10KKworICAgICAgICAgICAg
IyBFeHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgor
ICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVx
dWVzdCkKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yCisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgICMgQXNrIGVhY2ggcHJvY2Vzc29yIGlm
IHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdoaWNoCisgICAgICAgICAgICAj
IGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRlZCBvdGhlciBwcm9jZXNzb3Jz
IGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0LCB0aGUgcHJvY2Vzc29yIG1h
cmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMgImluYWN0aXZlIi4gVGhlIGZp
cnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0bworICAgICAgICAgICAgIyBt
YWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiByZXZlcnNl
ZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19jb25zaXN0ZW5jeV93aXRoX290
aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQorICAg
ICAgICAgICAgcHJvY2Vzc29ycyA9IFsKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgZm9yIHBy
b2Nlc3NvciBpbiBwcm9jZXNzb3JzIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKQorICAgICAgICAg
ICAgXQorCisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KKworICAgICAgICAg
ICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKworICAgICAgICAgICAgZm9yIGlu
ZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3Bv
bnNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgUmVqZWN0ZWQuCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25z
LmFwcGVuZChleHRlbnNpb25fcmVzcG9uc2UpCisKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICAgICAgICAgICAgICAj
IEluYWN0aXZhdGUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcHJlc3Npb24gZXh0ZW5zaW9ucy4K
KyAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3Jz
KSk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkK
KworICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25z
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAg
ICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAgICBsaXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zKSkpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9ucyA9IE5vbmUKKworICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxm
Ll9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
ZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQg
dG8gd3NfcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xp
ZW50IGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnBy
b3RvY29sJykKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQorICAg
ICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBub3Qg
ZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAgYmFkIHJlcXVlc3Qg
YnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVAorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgZGVmIF9nZXRfb3JpZ2lu
KHNlbGYpOgorICAgICAgICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJTl9IRUFERVIKKyAg
ICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChvcmlnaW5faGVhZGVy
KQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50IHJlcXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVhZGVyJykKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmlnaW4KKworICAgIGRlZiBfY2hlY2tfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYu
X3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUikKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVS
U0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAor
CisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICgl
cikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAgICAgICAgICAodmVy
c2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAorICAgICAgICAgICAg
ICAgIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisgICAgICAgIHJhaXNl
IFZlcnNpb25FeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQorCisgICAgZGVmIF9zZXRf
cHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
CisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKKwor
ICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rv
a2VuX2xpc3QoCisgICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQorCisgICAg
ZGVmIF9wYXJzZV9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9
IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCisgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUikKKyAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVh
ZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAgICAgICAgZXhjZXB0
IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAor
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBrZXkpOgor
ICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVnYWwgY2hh
cmFjdGVyIFwnLFwnOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisgICAgICAgICMgVmFs
aWRhdGUKKyAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBhcnNpbmcg
YnkgYmFzZTY0CisgICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9kdWxlIHNr
aXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQorICAgICAgICAgICAgIyB0byBkbyB0aGlz
IGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxsZWdhbAor
ICAgICAgICAgICAgIyBrZXlzLgorICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRfS0VZX1JF
R0VYLm1hdGNoKGtleSk6CisgICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNlNjQuYjY0
ZGVjb2RlKGtleSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09IDE2Ogor
ICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBU
eXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBub3Qga2V5X2lz
X3ZhbGlkOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbGxlZ2FsIHZh
bHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSkpCisKKyAgICAgICAg
cmV0dXJuIGRlY29kZWRfa2V5CisKKyAgICBkZWYgX2dldF9rZXkoc2VsZik6CisgICAgICAgIGtl
eSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCisKKyAg
ICAgICAgZGVjb2RlZF9rZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQorCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlf
SEVBREVSLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShkZWNv
ZGVkX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGtleS5lbmNvZGUoJ1VURi04JykKKworICAgIGRl
ZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHJldHVybiBT
dHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKKyAgICAgICAgcmVzcG9uc2UgPSBbXQor
CisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9j
b2xzXHJcbicpCisKKyAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycworICAgICAgICByZXNwb25z
ZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNvbW1vbi5VUEdSQURFX0hFQURF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZ
UEUpKQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVy
KGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAor
ICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVB
REVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQuZGVjb2RlKCdVVEYtOCcpKSkK
KyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNv
bW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQorICAgICAgICBpZiAoc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYW5kIGxl
bihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKAorICAgICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoCisgICAgICAgICAgICAg
ICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLAorICAgICAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0
CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6
CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkp
CisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUnXHJcbicpCisKKyAgICAgICAgcmV0dXJuIHUn
Jy5qb2luKHJlc3BvbnNlKQorCisgICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQp
OgorICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
KGFjY2VwdCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHJhd19yZXNw
b25zZS5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBz
ZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhd19yZXNwb25zZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1OThmNTcwZjJkYzFlZTAxNjJkOTk2ZDY4ODVjYTBiZDZhYjdmMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlZDkwYjI0N2I4ZGVkOWYyNTRkYWJhNzA5MDljYmM4ZmYzYzgyZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJf
dXRpbC5weQpAQCAtMCwwICsxLDI1NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJVdGlsaXRpZXMg
Zm9yIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVhZGVycyB0aGF0IGZvbGxvdyB0aGUgZ3JhbW1h
ciBkZWZpbmVkCitpbiBIVFRQIFJGQyBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjE2LnR4
dC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UKKworX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/
PXt9IFx0JworCisKK2RlZiBfaXNfY2hhcihjKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMg
aXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCisKKyAgICByZXR1cm4gb3Jk
KGMpIDw9IDEyNworCisKK2RlZiBfaXNfY3RsKGMpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZmYg
YyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisgICAgcmV0dXJuIG9y
ZChjKSA8PSAzMSBvciBvcmQoYykgPT0gMTI3CisKKworY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGEgPSBk
YXRhCisgICAgICAgIHNlbGYuaGVhZCA9IDAKKworCitkZWYgcGVlayhzdGF0ZSwgcG9zPTApOgor
ICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20gdGhlIGhlYWQgb2YgZGF0YS4i
IiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0YXRlLmRhdGEpOgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgcmV0dXJuIHN0YXRlLmRhdGFbc3RhdGUuaGVhZCArIHBvc10K
KworCitkZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgorICAgICIiIkNvbnN1bWVzIHNwZWNp
ZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQgcmV0dXJucyB0aGUKKyAgICBj
b25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5dGVzIHRvIGNvbnN1bWUsIHJl
dHVybnMgTm9uZS4KKyAgICAiIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBhbW91bnQgPiBsZW4o
c3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXN1bHQgPSBzdGF0ZS5k
YXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KKyAgICBzdGF0ZS5oZWFkID0gc3Rh
dGUuaGVhZCArIGFtb3VudAorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgY29uc3VtZV9zdHJp
bmcoc3RhdGUsIGV4cGVjdGVkKToKKyAgICAiIiJHaXZlbiBhIHBhcnNpbmcgc3RhdGUgYW5kIGEg
ZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZyb20KKyAgICB0aGUgaGVhZC4g
UmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3aXNlLCByZXR1cm5z
CisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBwb3MgPSAwCisKKyAgICBmb3IgYyBpbiBleHBl
Y3RlZDoKKyAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3MpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHBvcyArPSAxCisKKyAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3Moc3RhdGUpOgorICAgICIiIkNvbnN1
bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBpZiBhbnkgTFdTIGlzIGNvbnN1
bWVkLgorICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KKworICAgIExXUyA9IFtDUkxGXSAx
KiggU1AgfCBIVCApCisgICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0gc3RhdGUuaGVhZAor
CisgICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKKworICAgIHBvcyA9IDAKKworICAg
IHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlmIGMg
PT0gJyAnIG9yIGMgPT0gJ1x0JzoKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBpZiBwb3MgPT0gMDoKKyAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkID0g
b3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3NlcyhzdGF0ZSk6CisgICAgIiIiQ29u
c3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgorCisgICAgd2hpbGUgY29uc3VtZV9sd3Moc3Rh
dGUpOgorICAgICAgICBwYXNzCisKKworZGVmIGNvbnN1bWVfdG9rZW4oc3RhdGUpOgorICAgICIi
IkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJucyB0aGUgdG9rZW4gb3IgTm9u
ZSBpZiBubyB0b2tlbgorICAgIHdhcyBmb3VuZC4KKyAgICAiIiIKKworICAgIHBvcyA9IDAKKwor
ICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlm
IGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19j
aGFyKGMpOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3RhdGUsIHBvcykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHBvcyArPSAxCisKKworZGVmIGNvbnN1bWVfdG9rZW5fb3JfcXVv
dGVkX3N0cmluZyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBvciBhIHF1b3RlZC1z
dHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3RlZAorICAgIHN0cmluZy4gSWYg
bm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJldHVybnMgTm9uZS4KKyAgICAi
IiIKKworICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBpZiBub3QgY29uc3Vt
ZV9zdHJpbmcoc3RhdGUsICciJyk6CisgICAgICAgIHJldHVybiBjb25zdW1lX3Rva2VuKHN0YXRl
KQorCisgICAgcmVzdWx0ID0gW10KKworICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCisK
KyAgICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBub3QgZXhwZWN0X3F1b3RlZF9wYWlyIGFuZCBj
b25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJykKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYyA9IGNvbnN1bWUoc3RhdGUpCisgICAgICAgIGlm
IGMgaXMgTm9uZToKKyAgICAgICAgICAgICMgcXVvdGVkLXN0cmluZyBpcyBub3QgZW5jbG9zZWQg
d2l0aCBkb3VibGUgcXVvdGF0aW9uCisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxf
aGVhZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBleHBlY3RfcXVvdGVk
X3BhaXI6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxzZQorICAgICAgICAg
ICAgaWYgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vbiBDSEFSIGNoYXJhY3RlciBmb3Vu
ZCBpbiBxdW90ZWQtcGFpcgorICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9o
ZWFkCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBjID09ICdcXCc6
CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVlCisgICAgICAgIGVsaWYgYyA9
PSAnIic6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisgICAgICAgIGVsaWYg
X2lzX2N0bChjKToKKyAgICAgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXIgJXIgZm91bmQgaW4g
cWR0ZXh0CisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YykKKworCitkZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgorICAgICIiIlF1b3RlcyBhcmJpdHJh
cnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKKworICAgIHF1b3RlID0gRmFsc2UKKyAg
ICBpZiBzID09ICcnOgorICAgICAgICByZXR1cm4gJyIiJworCisgICAgcmVzdWx0ID0gW10KKyAg
ICBmb3IgYyBpbiBzOgorICAgICAgICBpZiBjID09ICciJyBvciBjIGluIF9TRVBBUkFUT1JTIG9y
IF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVl
CisKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xcJyArIGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGMpCisKKyAgICBpZiBxdW90ZToKKyAgICAgICAgcmV0dXJuICciJyArICcnLmpvaW4ocmVz
dWx0KSArICciJworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgcGFyc2VfdXJpKHVyaSk6CisgICAgIiIiUGFyc2UgYWJzb2x1dGUgVVJJIHRoZW4gcmV0
dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgorCisgICAgcGFyc2VkID0gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmkpCisgICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3Nz
JyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgorICAgICAgICAjIHx1cml8IG11c3QgYmUgYSBy
ZWxhdGl2ZSBVUkkuCisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8
dXJpfC4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVyaQorCisgICAgaWYgcGFyc2VkLmhv
c3RuYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAgICBw
b3J0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0CisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICMgVGhlIHBvcnQgcHJvcGVydHkgY2F1c2UgVmFsdWVF
cnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbnMKKyAgICAgICAgIyBsaWtlICd3
czovL2hvc3Q6SU5WQUxJRF9QT1JUL3BhdGgnLCB3aGVyZSB0aGUgYXNzaWduZWQgcG9ydCBpcyBu
b3QKKyAgICAgICAgIyAqRElHSVQuIEZvciBweXRob24gMy42IGFuZCBsYXRlciwgVmFsdWVFcnJv
ciBhbHNvIHJhaXNlcyB3aGVuCisgICAgICAgICMgYXNzaWduaW5nIGludmFsaWQgcG9ydCBudW1i
ZXJzIHN1Y2ggYXMgJ3dzOi8vaG9zdDotMS9wYXRoJy4gRWFybGllcgorICAgICAgICAjIHZlcnNp
b25zIHNpbXBseSByZXR1cm4gTm9uZSBhbmQgaWdub3JlIGludmFsaWQgcG9ydCBhdHRyaWJ1dGVz
LgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgaWYgcG9ydCBpcyBOb25l
OgorICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICd3cyc6CisgICAgICAgICAgICBwb3J0ID0g
ODAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcnQgPSA0NDMKKworICAgIHBhdGggPSBw
YXJzZWQucGF0aAorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoICs9ICcvJworICAgIGlm
IHBhcnNlZC5xdWVyeToKKyAgICAgICAgcGF0aCArPSAnPycgKyBwYXJzZWQucXVlcnkKKyAgICBp
ZiBwYXJzZWQuZnJhZ21lbnQ6CisgICAgICAgIHBhdGggKz0gJyMnICsgcGFyc2VkLmZyYWdtZW50
CisKKyAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lLCBwb3J0LCBwYXRoCisKKworIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVt
b3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1Mzk2NzYxODQ3YTY4NDA0NjQ4NDBiMGU3MmVi
YzdiYTE1MGU0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTWVtb3JpemluZyBmaWxlLgorCitBIG1l
bW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJl
YWRsaW5lLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgc3lzCisKKworY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKKyAgICAiIiJNZW1v
cml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRs
aW5lLgorCisgICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3Qg
bWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCisgICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXpp
bmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBiZWZvcmUKKyAgICB0aGUgY29udHJvbCBy
ZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlXywgbWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4c2l6ZSk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg
ZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAgbWF4X21lbW9yaXpl
ZF9saW5lczogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgorICAgICAg
ICAgICAgICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXpl
ZC4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCisgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9
IFtdCisgICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xp
bmVzCisgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fYnVmZmVy
ZWRfbGluZSA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgor
ICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgCisgICAgICAgIFJl
dHVybnMgdGhlIHZhbHVlIG92ZXJyaWRkZW4gYnkgdGhpcyBjbGFzcyBmb3Igc29tZSBhdHRyaWJ1
dGVzLAorICAgICAgICBhbmQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gX2ZpbGUgZm9yIHRoZSBvdGhl
ciBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSBpbiAoJ19maWxlJywg
J19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAorICAgICAgICAgICAg
ICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3JlYWRsaW5lJywKKyAgICAg
ICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwg
c2l6ZT0tMSk6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUgYW5kIG1lbW9yaXpl
IHRoZSBsaW5lIHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGV2ZW4gaWYgc2l6ZSBpcyBzcGVj
aWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKKyAgICAgICAgdGhlIHdob2xlIGxp
bmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgYnkKKyAgICAg
ICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuX2J1ZmZlcmVkOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcmVkX2xpbmUKKyAg
ICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5k
IGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21lbW9yaXplZF9saW5lczoK
KyAgICAgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMuYXBwZW5kKGxpbmUpCisgICAg
ICAgIGlmIHNpemUgPj0gMCBhbmQgc2l6ZSA8IGxlbihsaW5lKToKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlcmVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IGxpbmVb
c2l6ZTpdCisgICAgICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIGxp
bmUKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQg
bGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21lbW9yaXpl
ZF9saW5lcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThjYTc4ZTE0YWQyNWU3YTQ0ZDFh
YjI2MmU3YmQzNWNlYWVhNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KKworTm90ZTogcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCitt
b2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4g
Y29ubmVjdGlvbgoraGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0
aW9ucy4gRm9yIGV4YW1wbGUsCityZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBi
ZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdworYnl0ZXMgd3JpdGluZy9yZWFkaW5n
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
c2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCisKKyMgRXhwb3J0IEV4Y2VwdGlvbiBz
eW1ib2xzIGZyb20gbXNndXRpbCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9y
dCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhj
ZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KKwor
CisjIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2ViU29ja2V0IG1lc3NhZ2Vz
LgorZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgIiIiQ2xvc2UgY29ubmVjdGlv
bi4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAg
ICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKworCitkZWYg
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6CisgICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBtZXNzYWdlKS4KKworICAg
IEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgcGF5
bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBzZW5kLgorICAgICAgICBl
bmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KKyAgICAgICAgICAgICBGYWxzZSB0byBz
ZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0IGlzIHRvIGJlCisgICAg
ICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRfbWVzc2FnZSBjYWxsIHdp
dGggZW5kPVRydWUuCisgICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2FkX2RhdGEgYXMgYmluYXJ5
IGZyYW1lKHMpLgorICAgIFJhaXNlczoKKyAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3
aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpCisKKworZGVmIHJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKKyAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1l
IGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisgICAgdW5pY29kZSBvciBhIGJp
bmFyeSBpbiBzdHIuCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJl
cXVlc3QuCisgICAgUmFpc2VzOgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246ICAgICB3
aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCisgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVF
eGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJhbWUgZS5nLiBzb21lCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2VydmVkIGJpdCBpcyBzZXQg
YnV0IG5vIGV4dGVuc2lvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjb2duaXplIGl0LgorICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlvbjogICAgICB3aGVuIGNs
aWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAgICAgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRseS4KKyAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFkeSB0ZXJtaW5hdGVkLgor
ICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQor
CisKK2RlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keSk6CisgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9waW5nKGJvZHkpCisKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRocmVhZGluZy5UaHJl
YWQpOgorICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50
LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJlY2VpdmUgbWVzc2Fn
ZXM6IGJsb2NraW5nLAorICAgIG5vbi1ibG9ja2luZywgYW5kIHZpYSBjYWxsYmFjay4gQ2FsbGJh
Y2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNo
b3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAg
YmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9y
IGlmIHRoZSBzb2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBvbm1lc3Nh
Z2U6IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgor
ICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5j
dGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQu
IEluIHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKKyAgICAgICAgICAgICAgICAg
ICAgICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcworICAg
ICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1l
c3NhZ2VzLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuX3F1
ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5fb25tZXNzYWdlID0g
b25tZXNzYWdlCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisKKyAgICBkZWYgcnVu
KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9y
ZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxm
Ll9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCisK
KyAgICBkZWYgcmVjZWl2ZShzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZy
b20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg
ICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fcXVldWUuZ2V0KCkKKworICAgIGRlZiByZWNlaXZlX25vd2FpdChzZWxmKToKKyAg
ICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2lu
Zy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUg
c3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCisg
ICAgICAgIGV4Y2VwdCBzaXgubW92ZXMucXVldWUuRW1wdHk6CisgICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIHN0b3Aoc2VsZik6Cisg
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgorCisgICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
CisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKKyAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCisKKworY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKKyAgICBtZXNzYWdlcy4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAorICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9xdWV1
ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUp
CisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdl
dCgpCisgICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBzZW5kX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5ub3Rp
ZnkoKQorICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmQoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKKwor
ICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgY29uZGl0
aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlv
bikpCisgICAgICAgIGNvbmRpdGlvbi53YWl0KCkKKworICAgIGRlZiBzZW5kX25vd2FpdChzZWxm
LCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIK
KworICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24o
KSkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDM4ZDlmNDNh
Y2QzN2JmNWExYjEwYTBjZTU1ODViZDUxZWQ2MDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpAQCAtMCwwICsx
LDMxOSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSZXF1ZXN0IEhhbmRsZXIgYW5kIFJlcXVlc3Qv
Q29ubmVjdGlvbiBjbGFzc2VzIGZvciBzdGFuZGFsb25lIHNlcnZlci4KKyIiIgorCitpbXBvcnQg
b3MKKworZnJvbSBzaXgubW92ZXMgaW1wb3J0IENHSUhUVFBTZXJ2ZXIKK2Zyb20gc2l4Lm1vdmVz
IGltcG9ydCBodHRwX2NsaWVudAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9u
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hl
YWRlcl91dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKyMgMTAyNCBpcyBwcmFjdGljYWxseSBs
YXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgorX01BWF9N
RU1PUklaRURfTElORVMgPSAxMDI0CisKKworY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisKKyAgICBkZWYgZ2V0X2xv
Y2FsX2FkZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2Fs
X2FkZHIuIiIiCisKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVy
LnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2
ZXIuc2VydmVyX3BvcnQpCisKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2Fk
ZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIg
dG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KKworICAgICAgICBTZXR0aW5nIHRoZSBwcm9w
ZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKKyAgICAgICAg
aGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgorCisgICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKKworICAgIHJlbW90ZV9hZGRy
ID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEp
OgorICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQorCisgICAgZGVmIHJlYWQo
c2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi5yZWFkKCkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5yZWFkKGxlbmd0aCkKKwor
ICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQgbWVtb3Jp
emVkIGxpbmVzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZp
bGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisKKworY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgorICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFu
ZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisgICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCisg
ICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCisgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9
IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKKyAgICBkZWYgZ2V0X3VyaShzZWxmKToKKyAgICAg
ICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgorCisgICAgICAgIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQorICAg
ICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9i
amVjdCBvZiBtb2RfcHl0aG9uCisgICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRl
ciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAgICAgICBrZXB0IGZv
ciBjb21wYXRpYmlsaXR5LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVx
dWVzdF9oYW5kbGVyLnBhdGgKKworICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCisKKyAgICBk
ZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJl
cXVlc3QudW5wYXJzZWRfdXJpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hh
bmRsZXIucGF0aAorCisgICAgdW5wYXJzZWRfdXJpID0gcHJvcGVydHkoZ2V0X3VucGFyc2VkX3Vy
aSkKKworICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWlt
aWMgcmVxdWVzdC5tZXRob2QuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFu
ZGxlci5jb21tYW5kCisKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9kKQorCisgICAg
ZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVl
c3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZXF1ZXN0X3ZlcnNpb24KKworICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0X3Byb3RvY29sKQor
CisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pYyByZXF1ZXN0LmlzX2h0
dHBzKCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKKworCitjbGFzcyBXZWJT
b2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6
CisgICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCisKKyAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xz
Lk1lc3NhZ2UuCisgICAgTWVzc2FnZUNsYXNzID0gaHR0cF9jbGllbnQuSFRUUE1lc3NhZ2UKKwor
ICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0
cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAgcmZpbGUKKyAgICAgICAgd2l0aCBNZW1v
cml6aW5nRmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNl
UmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICBiZWZvcmUgY2FsbGluZyBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KKyAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxl
ci5oYW5kbGUgd2lsbCBjYWxsCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxl
X29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKKyAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIucGFyc2VfcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBDYWxsIHN1cGVy
Y2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3ZmlsZSwgZXRjLiBTZWUgc2V0dXAKKyAg
ICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNsYXNzIFNvY2tldFNlcnZlci5TdHJlYW1S
ZXF1ZXN0SGFuZGxlciB0bworICAgICAgICAjIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuCisg
ICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnNldHVwKHNlbGYpCisK
KyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAorICAg
ICAgICAgICAgc2VsZi5yZmlsZSwgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9SSVpFRF9M
SU5FUykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywg
c2VydmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29w
dGlvbnMKKworICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhhbmRsZXIu
Y2dpX2RpcmVjdG9yaWVzLgorICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNlbGYuX29w
dGlvbnMuY2dpX2RpcmVjdG9yaWVzCisgICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVxdWVzdEhh
bmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaXNf
ZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmlzX2V4ZWN1
dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCisKKyAgICAgICAgIyBU
aGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KKyAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgcmVxdWVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2FkZHJlc3MsIHNlcnZlcikKKworICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVy
LnBhcnNlX3JlcXVlc3QuCisKKyAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJvY2Vz
c2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgICAgIFNlZSBCYXNlSFRU
UFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMKKyAg
ICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorCisgICAgICAgICMgV2UgaG9vayBwYXJzZV9yZXF1
ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxzZSwK
KyAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNvbnRp
bnVlcyBwcm9jZXNzaW5nIGFuZAorICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQgYnkg
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAgICMKKyAgICAgICAg
IyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdlYlNv
Y2tldCByZXF1ZXN0CisgICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21tYW5k
LCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCisgICAgICAgICMgaG93IF9TdGFuZGFs
b25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCisgICAgICAg
ICMgYXR0cmlidXRlcykuCisgICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKKyAgICAgICAgICAg
IGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKKyAgICAgICAg
ICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6CisgICAg
ICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMSkKKyAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdCYXNpYyByZWFsbT0iUHl3ZWJzb2NrZXQiJykKKyAgICAgICAgICAgICAgICBz
ZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVx
dWVzdCBiYXNpYyBhdXRoZW50aWNhdGlvbicpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaShzZWxmLnBhdGgpCisgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBVUkk6ICVyJywgc2VsZi5wYXRoKQorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxl
cicpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNl
bGYuc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworICAgICAgICBpZiBob3N0IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0ID0gc2VydmVyX29wdGlvbnMudmFs
aWRhdGlvbl9ob3N0CisgICAgICAgICAgICBpZiB2YWxpZGF0aW9uX2hvc3QgaXMgbm90IE5vbmUg
YW5kIGhvc3QgIT0gdmFsaWRhdGlvbl9ob3N0OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdJbnZhbGlkIGhvc3Q6ICVyIChleHBlY3RlZDogJXIpJywgaG9zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRp
b25fcG9ydAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBw
b3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIHBvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHNlbGYucGF0aCA9IHJlc291cmNlCisK
KyAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChzZWxmLCBzZWxmLl9vcHRpb25z
LnVzZV90bHMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBkZWZh
dWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gKKyAgICAgICAgICAg
ICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgorICAgICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShzZWxmLnBhdGgpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5kbGVyIGZvciByZXNvdXJjZTog
JXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxi
YWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMn
LCBlKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2Vw
dCBjbGF1c2Ugc2V0dXAgKGluY2x1ZGluZworICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBp
cyByYWlzZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKKyAgICAgICAgIyBh
bmQgbG9nZ2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZShyZXF1ZXN0LCBz
ZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIpCisgICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZl
cnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisg
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVk
X3ZlcnNpb25zKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mocykg
ZmFpbGVkLgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFp
bGVkIGZvciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihl
LnN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmVx
dWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcgorICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRlZDogJXMnLCBlKQorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgorICAg
ICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfcmVxdWVzdC4iIiIKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAlcyAlcycsIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQorCisgICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6CisgICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKKworICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCisgICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
IHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1swXSAlIGFyZ3NbMTpdKQorCisgICAgZGVmIGlzX2NnaShzZWxmKToKKyAgICAgICAgIiIiVGVz
dCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCisKKyAgICAg
ICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KKyAg
ICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3Qu
CisgICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFz
IHN0YXRpYyBmaWxlIG9yIGRpcgorICAgICAgICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCisg
ICAgICAgICIiIgorCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5k
bGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJh
bWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxm
LnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25h
bWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAgICAgICAgc2NyaXB0
ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjllMjczZTk3NzA4NDRiN2NiNDQ2MTZlYmY5ODI1ODg2YmY0NGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5CkBAIC0w
LDAgKzEsODcgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2VydmVyIHJlbGF0ZWQgdXRpbGl0aWVz
LiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKworZGVmIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3MoYyk6CisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAo
Yy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKKworCitkZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdG
SU5FJykKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCisg
ICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuaGFuZGxl
cnMuUm90YXRpbmdGaWxlSGFuZGxlcihvcHRpb25zLmxvZ19maWxlLCAnYScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2df
bWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIgPSBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAor
ICAgICAgICAnWyUoYXNjdGltZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2Fn
ZSlzJykKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoaGFuZGxlcikKKworICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5n
LmdldExldmVsTmFtZSgKKyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigp
KQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKGRl
ZmxhdGVfbG9nX2xldmVsX25hbWUpCisgICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9J
bmZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKworCitjbGFzcyBUaHJl
YWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRhZW1vbiA9IFRydWUKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgorICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3InKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2lu
dGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYworCisgICAgZGVmIHJ1bihzZWxmKToKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QgPSBbXQorICAg
ICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCk6CisgICAgICAgICAg
ICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygiJWQgYWN0aXZlIHRocmVhZHM6ICVzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkKKyAgICAgICAgICAg
IHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQorCisKKyMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDQyYzQ5NmM1OGEyM2I2Y2U0YzIzZWVlMGJhNDYyMDk1NDUyNjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkKQEAgLTAsMCArMSw0NzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJTdGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCisKK1VzZSB0aGlzIGZp
bGUgdG8gbGF1bmNoIHB5d2Vic29ja2V0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIuCisKKworQkFT
SUMgVVNBR0UKKz09PT09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4K
KworICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tf
aGFuZGxlcnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQg
PGRvY3VtZW50X3Jvb3Q+XQorCis8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBm
b3Igd3M6Ly8gY29ubmVjdGlvbi4KKworPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRo
ZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgorCis8d2Vic29ja19oYW5kbGVycz4gaXMg
dGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KK0lm
IG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRf
Xy5weSAob3IKK3J1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBX
ZWJTb2NrZXQgaGFuZGxlcnMuCisKK0ZvciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywg
cnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCisK
K29yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCisKK0ZvciB0cm91Ymxl
IHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KKwor
CitUUlkgREVNTworPT09PT09PT0KKworR28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBz
dGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKK2RvY3VtZW50IHJvb3QgdG8g
dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2Ug
dGhpczoKKworICAkIGNkIHNyYworICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQorCit0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0
aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3BlbgoraHR0cDovL2xv
Y2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21l
dGhpbmcgaW50bwordGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGlj
ayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKK2lzIHdvcmtpbmcsIHlvdSdsbCBzZWUg
dGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgorCisKK1VTSU5HIFRM
UworPT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3Vw
cG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKK29wdGlvbnMuIFdoZW4gVExTIGlzIGVu
YWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24u
CisKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxv
Y2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxl
IHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCitFeGFtcGxlOgorCisgICQgUFlUSE9OUEFU
SD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCisgICAgICAgIC1kIGV4
YW1wbGUgXAorICAgICAgICAtcCAxMDQ0MyBcCisgICAgICAgIC10IFwKKyAgICAgICAgLWMgLi4v
dGVzdC9jZXJ0L2NlcnQucGVtIFwKKyAgICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAor
CitOb3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0
aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCit1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkgYXMgdGhlIGJhc2UuCisKKworVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRo
IFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKKy0tdGxzLWNs
aWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVz
IHJlcXVpcmVkIGZvcgorVExTIHN1cHBvcnQuCisKK0V4YW1wbGU6CisKKyAgJCBQWVRIT05QQVRI
PS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0
NDMgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0
L2tleS5wZW0gXAorICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCisgICAgICAgIC0tdGxzLWNs
aWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorCitOb3RlIHRoYXQgd2hlbiBwYXNzaW5n
IGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCity
ZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCisK
KworQ09ORklHVVJBVElPTiBGSUxFCis9PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiBhbHNv
IHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUg
cGF0aCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFz
ZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorZm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAorZW50cnkg
bXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBs
ZXZlbCB0byBkZWJ1ZywKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK2xvZ19sZXZlbD1kZWJ1
ZworCitGb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29t
ZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgorLS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBs
aW5lOgorCit0bHM9VHJ1ZQorCitOb3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlm
IHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKK2Zha2UuCisKK1doZW4g
Ym90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50
cnkgYXJlIHNldCBmb3IKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQg
bGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4K
KworCitUSFJFQURJTkcKKz09PT09PT09PQorCitUaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20g
U29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBpcwordXNlZCBmb3Ig
ZWFjaCByZXF1ZXN0LgorCisKK1NFQ1VSSVRZIFdBUk5JTkcKKz09PT09PT09PT09PT09PT0KKwor
VGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4K
K0l0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFt
cy4gSXQgc2hvdWxkIG5vdCBiZQordXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwuCisiIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9y
dCBjb25maWdwYXJzZXIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0
cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHNlcnZlcl91dGlsCitmcm9tIG1vZF9w
eXdlYnNvY2tldC53ZWJzb2NrZXRfc2VydmVyIGltcG9ydCBXZWJTb2NrZXRTZXJ2ZXIKKworX0RF
RkFVTFRfTE9HX01BWF9CWVRFUyA9IDEwMjQgKiAyNTYKK19ERUZBVUxUX0xPR19CQUNLVVBfQ09V
TlQgPSA1CisKK19ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAorCisKK2RlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
CisKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2NvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJp
bmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBj
b21tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlz
IGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZmlsZSBmb3JtYXQnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLUgnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1WJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uLWhvc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRpb25faG9zdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ndmFsaWRhdGlvbl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRv
IHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBsaXN0ZW4gdG8nKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctUCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbi1w
b3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX3BvcnQnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsCisgICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRhdGUgaW4gYWJz
b2x1dGUgcGF0aC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0td2Vic29jay1oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
d2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19o
YW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nLicsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxl
ciBmaWxlcy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyBy
ZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcyB0aGUgYmFzZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
V2ViU29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRl
ZCBieSBzcGFjZXMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1zY2FuLWRpcicsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2Nhbl9k
aXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NjYW5fZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011
c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJl
IHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0
byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Ig
c2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhh
bmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvblwn
dCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcicsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2Nr
ZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCisgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1kJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVu
dC1yb290JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVudF9yb290JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCBy
b290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2dpLXBhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZ2lf
cGF0aHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NnaV9wYXRocycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9odGJpbikgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVudF9yb290L2NnaV9w
YXRoIGFyZSBoYW5kbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgQ0dJIHBy
b2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbign
LWsnLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGUta2V5JywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1wcml2YXRlX2tleScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAorICAgICAgICAgICAgICAgICAgICAgICctLWNlcnRpZmljYXRlJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZXJ0aWZpY2F0ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMgY2Vy
dGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0
aCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWVzdHMg
VExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQgY2VydGlmaWNhdGUg
b3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUTFMg
Y2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMt
Y2xpZW50LWNhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NhJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMg
d2hpY2ggYXJlIHVzZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0
ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWJhc2ljLWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9iYXNp
Y19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0ndGVzdDp0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhl
IGNyZWRlbnRpYWwgb2YgYmFzaWMgYXV0aGVudGljYXRpb24gJworICAgICAgICAgICAgICAgICAg
ICAgICdieSB1c2VybmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZy1maWxl
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfZmlsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nbG9nX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGZpbGUuJykKKyAgICAjIEN1c3RvbSBs
b2cgbGV2ZWw6CisgICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9j
ZXNzaW5nIHN0ZXAKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAgICAgICAg
IGNob2ljZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZScsICdkZWJ1ZycsICdp
bmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdjcml0aWNhbCcKKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAg
ICAnLS1kZWZsYXRlLWxvZy1sZXZlbCcsCisgICAgICAgICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nZGVmbGF0ZV9sb2dfbGV2ZWwn
LAorICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2lu
Zm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCisgICAgICAgIGhl
bHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKKyAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9LTEsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVn
ZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0aHJlYWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGlu
dGV2YWwgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1w
b3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkaXNhYmxlIHRoZSB0aHJlYWQgbW9uaXRvci4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbWF4JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX01B
WF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRlcycp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1sb2dfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19jb3Vu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1x
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWV1ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXplJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBl
PSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6
ZScpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIF9wYXJzZV9hcmdzX2FuZF9jb25maWco
YXJncyk6CisgICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJzZXIoKQorCisgICAgIyBGaXJz
dCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICB0ZW1wb3Jh
cnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3Mp
CisgICAgaWYgdGVtcG9yYXJ5X2FyZ3M6CisgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VucmVj
b2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBvcmFyeV9hcmdzKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgdGVtcG9y
YXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZp
Z19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKKyAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0ZhaWxl
ZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgZSkKKyAgICAgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICAgICAgY29uZmlnX3BhcnNlciA9IGNvbmZpZ3BhcnNlci5TYWZl
Q29uZmlnUGFyc2VyKCkKKyAgICAgICAgY29uZmlnX3BhcnNlci5yZWFkZnAoY29uZmlnX2ZwKQor
ICAgICAgICBjb25maWdfZnAuY2xvc2UoKQorCisgICAgICAgIGFyZ3NfZnJvbV9jb25maWcgPSBb
XQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnX3BhcnNlci5pdGVtcygncHl3ZWJz
b2NrZXQnKToKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKCctLScgKyBuYW1l
KQorICAgICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQodmFsdWUpCisgICAgICAgIGlm
IGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZpZyArIGFyZ3MKKyAg
ICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBlbHNlOgorICAg
ICAgICByZXR1cm4gdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzCisKKworZGVmIF9t
YWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSB5
b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRoaXMgZnVuY3Rpb24g
aGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIgcHJvZ3JhbS4gRm9y
CisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBpbiB0aGlzIG1ldGhv
ZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4KKyAgICAiIiIKKwor
ICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3M9YXJncykKKwor
ICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIHNlcnZlcl91dGlsLmNv
bmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1
cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQorICAgICMg
b2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0
dGVyLgorICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gW10KKyAgICBvcHRpb25zLmlzX2V4
ZWN1dGFibGVfbWV0aG9kID0gTm9uZQorICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgorICAgICAg
ICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykK
KyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAg
ICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKKyAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwg
aXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAorICAgICAgICAgICAgIyBpcyBzZXQgdG8g
YSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgorICAgICAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCisg
ICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgorICAgICAg
ICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN5
Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQorICAgICAgICAgICAgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19jaGVj
a19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3Nj
cmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisKKyAgICAgICAgICAgIG9wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAorCisgICAgaWYgb3B0aW9u
cy51c2VfdGxzOgorICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKKwor
ICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZp
Y2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAgICAgICAgICAgICAgJ1Rv
IHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRlLicpCisgICAgICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIChvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbCBhbmQgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8g
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2NlcnRf
b3B0aW9uYWwnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBp
ZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJs
ZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkK
KworICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgorICAgICAgICBvcHRpb25zLnNjYW5fZGly
ID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCisKKyAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19h
dXRoOgorICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsg
YmFzZTY0LmI2NGVuY29kZSgKKyAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50
aWFsLmVuY29kZSgnVVRGLTgnKSkuZGVjb2RlKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgb3B0
aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMgPiAwOgorICAgICAgICAgICAgIyBS
dW4gYSB0aHJlYWQgbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMg
Zm9yCisgICAgICAgICAgICAjIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNlcnZlcl91dGlsLlRo
cmVhZE1vbml0b3IoCisgICAgICAgICAgICAgICAgb3B0aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMpLnN0YXJ0KCkKKworICAgICAgICBzZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIo
b3B0aW9ucykKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSBlKQorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbihzeXMuYXJndlsxOl0pCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmMzOTlmMmE4NWI5ZmU2YzUyZWM1NjkwZjU4MGQwNmIyMjJlNDc0OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKQEAgLTAsMCArMSw5NTAgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhpcyBmaWxlIHByb3Zp
ZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJh
bWVzCitvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCisKK1NwZWNpZmljYXRp
b246CitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIKKworZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
dHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc2l4CisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1
dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25z
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFVURjhFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCitfTk9PUF9NQVNLRVIgPSB1dGlsLk5vb3BNYXNrZXIo
KQorCisKK2NsYXNzIEZyYW1lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAg
ICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICByc3YxPTAsCisgICAgICAgICAg
ICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mz0wLAorICAgICAgICAgICAgICAg
ICBvcGNvZGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGF5bG9hZD1iJycpOgorICAgICAgICBz
ZWxmLmZpbiA9IGZpbgorICAgICAgICBzZWxmLnJzdjEgPSByc3YxCisgICAgICAgIHNlbGYucnN2
MiA9IHJzdjIKKyAgICAgICAgc2VsZi5yc3YzID0gcnN2MworICAgICAgICBzZWxmLm9wY29kZSA9
IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCisKKworIyBIZWxwZXIgZnVu
Y3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQgZm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBX
ZWJTb2NrZXQKKyMgY2xpZW50cy4KKworCitkZWYgY3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3Ro
LCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgbGVuZ3RoIGhlYWRlci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBNdXN0IGJlIGxlc3MgdGhhbiAyXjYzLgorICAg
ICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBib29sZWFuLgorCisgICAgUmFpc2VzOgorICAg
ICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVuLgorICAgICIiIgorCisgICAg
aWYgbWFzazoKKyAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICBlbHNlOgorICAgICAgICBt
YXNrX2JpdCA9IDAKKworICAgIGlmIGxlbmd0aCA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyJykKKyAgICBlbGlmIGxlbmd0
aCA8PSAxMjU6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8IGxlbmd0
aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFj
a19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIGxlbmd0aCkKKyAgICBl
bGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFja19ieXRlKG1h
c2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScp
CisKKworZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3Yx
LCByc3YyLCByc3YzLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgorCisg
ICAgUmFpc2VzOgorICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCisg
ICAgIiIiCisKKyAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCisKKyAgICBpZiBwYXlsb2FkX2xl
bmd0aCA8IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgorICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQorCisgICAgaWYgKGZpbiB8
IHJzdjEgfCByc3YyIHwgcnN2MykgJiB+MToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklO
IGJpdCBhbmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCisKKyAgICBo
ZWFkZXIgPSBiJycKKworICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQorICAgICAgICAgICAg
ICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkKKyAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShmaXJzdF9i
eXRlKQorICAgIGhlYWRlciArPSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwg
bWFzaykKKworICAgIHJldHVybiBoZWFkZXIKKworCitkZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwg
Ym9keSwgbWFzayk6CisgICAgaWYgbm90IG1hc2s6CisgICAgICAgIHJldHVybiBoZWFkZXIgKyBi
b2R5CisKKyAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQorICAgIG1hc2tlciA9IHV0
aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgIHJldHVybiBoZWFkZXIg
KyBtYXNraW5nX25vbmNlICsgbWFza2VyLm1hc2soYm9keSkKKworCitkZWYgX2ZpbHRlcl9hbmRf
Zm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZm9y
IGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmls
dGVyKGZyYW1lKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFtZS5vcGNvZGUsIGxl
bihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAgICByZXR1cm4gX2J1
aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitkZWYgY3JlYXRlX2Jp
bmFyeV9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGZyYW1lID0gRnJhbWUoZmlu
PWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQorICAgIHJldHVybiBfZmlsdGVy
X2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisK
K2RlZiBjcmVhdGVfdGV4dF9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBm
cmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIHRleHQgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGVuY29kZWRfbWVzc2FnZSA9
IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
ZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBwYXJzZV9mcmFtZShyZWNlaXZlX2J5
dGVzLAorICAgICAgICAgICAgICAgIGxvZ2dlcj1Ob25lLAorICAgICAgICAgICAgICAgIHdzX3Zl
cnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCisgICAgICAgICAgICAgICAgdW5tYXNr
X3JlY2VpdmU9VHJ1ZSk6CisgICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0dXBsZSBj
b250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAorICAgIHBheWxvYWQuCisKKyAgICBBcmdz
OgorICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJhbWUgZGF0
YSBmcm9tIGEgc3RyZWFtIG9yCisgICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4gVGhlIGZ1
bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKKyAgICAgICAgICAgIHJlYWQu
IFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGlm
CisgICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4KKyAgICAg
ICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgorICAgICAgICB3c192ZXJzaW9uOiB0aGUgdmVy
c2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCisgICAgICAgIHVubWFza19yZWNlaXZlOiB1bm1h
c2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCisgICAgICAgICAgICBm
cmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KKworICAgIFJhaXNlczoKKyAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRlcyByYWlz
ZXMgaXQuCisgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29u
dGFpbnMgaW52YWxpZCBkYXRhLgorICAgICIiIgorCisgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJhbWUnKQor
CisgICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAgIGZpbiA9IChmaXJz
dF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKKyAgICBy
c3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisgICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQp
ICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKKworICAgIHNlY29uZF9ieXRlID0g
b3JkKHJlY2VpdmVfYnl0ZXMoMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEK
KyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgbG9nZ2VyLmxv
ZygKKyAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9
JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5n
dGg9JXMnLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywKKyAgICAgICAgcGF5
bG9hZF9sZW5ndGgpCisKKyAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKKyAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgJ01hc2sgYml0
IG9uIHRoZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJworICAgICAgICAg
ICAgJ2NvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCisKKyAgICAjIFRoZSBIeUJp
IGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgor
ICAgICMgaW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3Ig
MHgwLTB4RkQgaW4KKyAgICAjIDItb2N0ZXQgZmllbGQpLgorICAgIHZhbGlkX2xlbmd0aF9lbmNv
ZGluZyA9IFRydWUKKyAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCisgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPT0gMTI3OgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRl
cyg4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFRJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZG
RkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKCdF
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAwOgorICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9
IDgKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgpCisg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRl
bmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgg
PSByZWNlaXZlX2J5dGVzKDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFj
aygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgd3NfdmVyc2lv
biA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6CisgICAgICAgICAgICB2YWxpZF9sZW5n
dGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0g
MgorCisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEZWNvZGVkX3Bh
eWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CisgICAgICAgIGxvZ2dlci53YXJuaW5n
KAorICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBt
aW5pbWFsIG51bWJlciBvZiAnCisgICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNp
bmcgJWQgYnl0ZXMpJywgcGF5bG9hZF9sZW5ndGgsCisgICAgICAgICAgICBsZW5ndGhfZW5jb2Rp
bmdfYnl0ZXMpCisKKyAgICBpZiBtYXNrID09IDE6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQorCisgICAgICAgIG1hc2tpbmdfbm9uY2Ug
PSByZWNlaXZlX2J5dGVzKDQpCisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9G
SU5FLCAnTWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCisgICAgZWxzZToKKyAgICAgICAgbWFza2Vy
ID0gX05PT1BfTUFTS0VSCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
UmVjZWl2ZSBwYXlsb2FkIGRhdGEnKQorICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKKwor
ICAgIHJhd19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAg
ICBsb2dnZXIubG9nKAorICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEb25lIHJl
Y2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAgICBwYXlsb2FkX2xl
bmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEwMDApCisgICAg
bG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2FkIGRhdGEnKQor
CisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAg
ICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICB1bm1hc2tlZF9ieXRlcyA9IG1h
c2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZv
cihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0
YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1l
LnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKKworICAgIHJldHVybiBvcGNv
ZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKKworCitjbGFzcyBGcmFn
bWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6CisgICAgIiIiQSBzdGF0ZWZ1bCBjbGFzcyB0byBz
ZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
c2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgorICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgorCisgICAgICAgIHNlbGYuX21hc2sgPSBtYXNrCisgICAg
ICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCisgICAgICAgICMgVGhpcyBp
cyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0IHR5cGUgZnJh
bWVzCisgICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIHNlbGYuX2VuY29k
ZV91dGY4ID0gZW5jb2RlX3V0ZjgKKworICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFsc2UKKwor
ICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNzYWdlcyB0byB2
ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKKyAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1lc3NhZ2UgYXJl
IGFsbCB0aGUgc2FtZS4KKyAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhU
CisKKyAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSk6CisgICAg
ICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX0JJ
TkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENP
REVfVEVYVAorICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgorICAgICAgICAgICAgaWYgc2VsZi5f
b3Bjb2RlICE9IGZyYW1lX3R5cGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
TWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQorICAgICAgICAgICAgb3Bj
b2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgICAgIHNlbGYuX29wY29kZSA9IGZyYW1l
X3R5cGUKKworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFs
c2UKKyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
X3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAgICAgaWYgYmluYXJ5
IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVfYmlu
YXJ5X2ZyYW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKHBheWxvYWRf
ZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykKKworCitkZWYgX2NyZWF0ZV9jb250cm9s
X2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZnJhbWUgPSBG
cmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkpCisKKyAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIGZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisK
KyAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6CisgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9s
IGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNzJykKKworICAgIGhlYWRlciA9IGNyZWF0
ZV9oZWFkZXIoZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMsIG1hc2spCisgICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIsIGZyYW1lLnBheWxvYWQs
IG1hc2spCisKKworZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1l
X2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9Q
Q09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfcG9u
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKKworCitkZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2Us
IGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29t
bW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9i
b2R5KGNvZGUsIHJlYXNvbik6CisgICAgYm9keSA9IGInJworICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6CisgICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYCisg
ICAgICAgICAgICAgICAgb3IgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBv
dXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5P
Uk1BTF9DTE9TVVJFCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24uU1RBVFVTX1RM
U19IQU5EU0hBS0UpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdT
dGF0dXMgY29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb2RlJykKKyAgICAgICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSAr
IGVuY29kZWRfcmVhc29uCisgICAgcmV0dXJuIGJvZHkKKworCitjbGFzcyBTdHJlYW1PcHRpb25z
KG9iamVjdCk6CisgICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFt
IG9iamVjdHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJDb25zdHJ1
Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gZnJh
bWVzLgorICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorICAgICAgICBz
ZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorCisgICAgICAgICMgRmlsdGVycyBhcHBs
aWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZW0u
CisgICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKyAgICAgICAgc2Vs
Zi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQorCisgICAgICAgIHNlbGYuZW5jb2RlX3Rl
eHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQorICAgICAgICBzZWxmLm1hc2tfc2VuZCA9IEZhbHNl
CisgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCisKKworY2xhc3MgU3RyZWFtKG9i
amVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldCBwcm90b2NvbAorICAgIChSRkMgNjQ1NSkuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisKKyAgICAgICAgc2VsZi5fcmVxdWVz
dC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVy
X3Rlcm1pbmF0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBm
cmFnbWVudHMuCisgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCisgICAgICAg
ICMgSG9sZHMgdGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCisgICAgICAgIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9IE5vbmUKKworICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVu
dGVkRnJhbWVCdWlsZGVyKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4KQorCisgICAgICAgIHNlbGYuX3Bpbmdf
cXVldWUgPSBkZXF1ZSgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBh
bnkgZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhj
ZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
YWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCisgICAgICAg
ICAgICBpZiBub3QgcmVhZF9ieXRlczoKKyAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBi
eXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCisgICAgICAgICAgICAg
ICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsICkp
KQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhjZXB0IElPRXJyb3Ig
YXMgZToKKyAgICAgICAgICAgICMgQWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5
dGhvbiB0aHJvd3MgaXQuCisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vy
cm9yICglcykgb2NjdXJyZWQnICUKKyAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKKworICAg
IGRlZiBfd3JpdGUoc2VsZiwgYnl0ZXNfdG9fd3JpdGUpOgorICAgICAgICAiIiJXcml0ZXMgZ2l2
ZW4gYnl0ZXMgdG8gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAor
ICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ug
YW5kIHJhaXNlIGFnYWluLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdl
X3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0
byAlcjogJyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1v
dGVfYWRkciwgKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgcmVjZWl2ZV9ieXRl
cyhzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWNlaXZlcyBtdWx0aXBsZSBieXRlcy4gUmV0
cmllcyByZWFkIHdoZW4gd2UgY291bGRuJ3QgcmVjZWl2ZSB0aGUKKyAgICAgICAgc3BlY2lmaWVk
IGFtb3VudC4gVGhpcyBtZXRob2QgcmV0dXJucyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVhZF9ieXRl
cyA9IFtdCisgICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6CisgICAgICAgICAgICBuZXdfcmVhZF9i
eXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQorICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQo
bmV3X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVz
KQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVhZF9ieXRlcykKKworICAgIGRlZiBfcmVhZF91
bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKKyAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2Ug
ZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKKyAgICAgICAgY29udGFp
biBkZWxpbV9jaGFyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAg
ICAgICIiIgorCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCisgICAgICAgICAgICBpZiBjaCA9PSBkZWxp
bV9jaGFyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZWFkX2J5dGVzLmFw
cGVuZChjaCkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMpCisKKyAgICBkZWYg
X3JlY2VpdmVfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIHJl
dHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcKKyAgICAgICAgZWFj
aCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KKworICAgICAgICBSYWlzZXM6
CisgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJl
dHVybnMgZW1wdHkKKyAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICBJbnZhbGlk
RnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgcmV0dXJuIHBh
cnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQor
CisgICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKKyAgICAgICAg
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZSgpCisKKyAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sCisgICAgICAgICAg
ICAgICAgICAgICByc3YxPXJzdjEsCisgICAgICAgICAgICAgICAgICAgICByc3YyPXJzdjIsCisg
ICAgICAgICAgICAgICAgICAgICByc3YzPXJzdjMsCisgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGU9b3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykK
KworICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNl
aXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVy
cy4KKyAgICAgICAgVGhlIGZyYW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAgICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCisg
ICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCisKKyAg
ICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2Zy
YW1lX29iamVjdCgpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFt
ZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9m
aWx0ZXJlZF9mcmFtZSgpJykKKyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BD
T0RFX1RFWFQKKyAgICAgICAgICAgICAgICBhbmQgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENP
REVfQklOQVJZKToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcK
KyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKKworICAgICAgICBm
b3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoK
KyAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgICAgIGZvciBtZXNz
YWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKKyAg
ICAgICAgICAgIGZyYW1lLnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAiIiJTZW5kIG1lc3Nh
Z2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29k
ZSBvciBiaW5hcnkgaW4gc3RyIHRvIHNlbmQuCisgICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVz
c2FnZSBhcyBiaW5hcnkgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVz
c2FnZSB0eXBlIG9yCisgICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVx
dWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtl
JykKKworICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgc2l4LnRleHRf
dHlwZSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IG5vdCBiZSBpbnN0YW5jZSBv
ZiBVbmljb2RlJykKKworICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2Fn
ZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIgdG8gbGltaXQgbWF4
aW11bSBzaXplIG9mIGRhdGEgaW4KKyAgICAgICAgICAgICMgcGF5bG9hZCBkYXRhIG9mIGVhY2gg
ZnJhbWUuCisgICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAtMQorCisgICAgICAg
ICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKKyAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5hcnkpKQorICAgICAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBieXRlc193cml0dGVuID0gMAorICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJhbWUgPSBl
bmQKKyAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNzYWdlKSAtIGJ5dGVz
X3dyaXR0ZW4KKyAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFUQV9TSVpFID4gMAor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5dGVzX3RvX3dyaXRlID4gTUFYX1BBWUxPQURf
REFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRB
X1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fd3JpdGVyLmJ1aWxkKAorICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5
dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lLCBi
aW5hcnkpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICAgICAgICAg
ICAgICBieXRlc193cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAgICAgICAgICAgICAj
IFRoaXMgaWYgbXVzdCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28g
dGhhdAorICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCisgICAg
ICAgICAgICAgICAgaWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oZSkKKworICAgIGRlZiBfZ2V0X21lc3Nh
Z2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZy
b20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKKyAgICAg
ICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUs
IHRoaXMgbWV0aG9kCisgICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2ls
bCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0CisgICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMg
cGFzc2VkIHRvIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdt
ZW50YXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMg
aW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVj
ZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24g
JworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1l
IGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRl
ZCcpCisKKyAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAjIEVuZCBv
ZiBmcmFnbWVudGF0aW9uIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJh
Z21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBi
Jycuam9pbihzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBmcmFtZQor
ICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZy
YW1lLmZpbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFt
ZSB3aXRob3V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBleGlzdGlu
ZyBmcmFnbWVudGF0aW9uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAnTmV3IGZyYWdtZW50YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0aW5nICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKworICAgICAgICAg
ICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVudGVkIGZyYW1lCisK
KyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKworICAgICAgICAg
ICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZCcpCisKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHJvY2Vzc19jbG9zZV9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgY2xvc2UgbWVzc2Fn
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogY2xvc2UgbWVzc2FnZS4K
KworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICAjIFN0YXR1cyBjb2Rl
IGlzIG9wdGlvbmFsLiBXZSBjYW4gaGF2ZSBzdGF0dXMgcmVhc29uIG9ubHkgaWYgd2UKKyAgICAg
ICAgIyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBlbXB0eSBzdHJpbmcu
IFNvLAorICAgICAgICAjIGFsbG93ZWQgY2FzZXMgYXJlCisgICAgICAgICMgLSBubyBhcHBsaWNh
dGlvbiBkYXRhOiBubyBjb2RlIG5vIHJlYXNvbgorICAgICAgICAjIC0gMiBvY3RldCBvZiBhcHBs
aWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCisgICAgICAgICMgLSAzIG9yIG1v
cmUgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogYm90aCBjb2RlIGFuZCByZWFzb24KKyAgICAg
ICAgaWYgbGVuKG1lc3NhZ2UpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAor
ICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBz
dGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2Rl
IG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6CisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcs
IG1lc3NhZ2VbMDoyXSlbMF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVh
c29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBs
YWNlJykKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJh
bWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgICAgICAjIEFzIHdlJ3Zl
IHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUK
KyAgICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0
aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAjIFJTVCBzZW5kaW5nLgorCisgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCisg
ICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19k
aXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlz
cGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBpZiBjb2RlIGlzIE5v
bmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAnSGFuZGxl
ciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKKyAgICAgICAgICAg
ICAgICByZWFzb24gPSAnJworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFr
ZShjb2RlLCByZWFzb24pCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAg
ICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcK
KyAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKKworICAg
IGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlBy
b2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3Nh
Z2U6IHBpbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCisgICAgICAgICAgICBp
ZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKKwor
ICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIi
IlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1l
c3NhZ2U6IHBvbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5kbGluZy4KKworICAgICAgICBpbmZsaWdodF9waW5n
cyA9IGRlcXVlKCkKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkgPSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQor
ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBjb250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQor
ICAgICAgICAgICAgICAgICAgICAjIG90aGVyIHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdQaW5nICVyIGlzIGFja2VkICglZCBwaW5ncyB3ZXJlIGlnbm9yZWQpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHksIGxlbihpbmZsaWdodF9waW5ncykpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBwZW5kKGV4cGVjdGVkX2JvZHkpCisgICAgICAgICAg
ICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25n
IHdhcyB1bnNvbGljaXRlZCBwb25nLiBLZWVwIHRoZQorICAgICAgICAgICAgICAgICMgcGluZyBx
dWV1ZSBhcyBpcy4KKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRf
cGluZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5z
b2xpY2l0ZWQgcG9uZycpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKKyAgICAg
ICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0
LCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZl
IGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisg
ICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgorCisgICAgICAgIFJldHVybnM6Cisg
ICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCisgICAgICAgICAgICAtIGFzIHVu
aWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQorICAgICAgICAgICAgLSBhcyBz
dHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCisgICAgICAgICAgICBvciBOb25l
IGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgUmFpc2VzOgorICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJt
aW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQorICAgICAgICAg
ICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0
aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAorICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAg
ICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBo
YXMKKyAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBj
YW4gaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJl
Y2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBh
ZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKKyAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykK
KworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBi
bG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgICAgICBmcmFtZSA9IHNl
bGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKworICAgICAgICAgICAgIyBDaGVj
ayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwor
ICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCisgICAg
ICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2Vj
dGlvbi01LjUKKyAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKQorICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKworICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CisgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKworICAgICAg
ICAgICAgaWYgZnJhbWUucnN2MSBvciBmcmFtZS5yc3YyIG9yIGZyYW1lLnJzdjM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMgc2V0IChyc3YgPSAlZCVkJWQpJyAlCisgICAgICAg
ICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzKSkKKworICAg
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoZnJhbWUpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21p
bmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlX2Zp
bHRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICAgICAgaWYgc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfVEVYVDoKKyAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2Nr
ZXQgcHJvdG9jb2wgc2VjdGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAorICAgICAgICAg
ICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VN
RU5UCisgICAgICAgICAgICAgICAgIyBDSEFSQUNURVIuCisgICAgICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykKKyAgICAg
ICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uKGUpCisgICAgICAgICAgICBlbGlmIHNl
bGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9DTE9TRToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNz
X2Nsb3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5H
OgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCisg
ICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BP
Tkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFt
ZUV4Y2VwdGlvbignT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSkK
KworICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgor
ICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29u
KQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgIGJvZHks
CisgICAgICAgICAgICBtYXNrPXNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAg
ZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICBz
ZWxmLl93cml0ZShmcmFtZSkKKworICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbAorICAgICAgICBp
dCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJh
bWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQorICAgICAgICAgICAgICAgIGZyYW1lIHdpdGgg
ZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCisgICAgICAgICAgICByZWFzb246IHN0cmluZyByZXBy
ZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3
aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgorICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmll
ZCB3aXRoIGNvZGUgTm9uZQorICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5j
ZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNl
cnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9z
ZV9tZXNzYWdlKCkuCisgICAgICAgICMgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0
ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90ZXJtaW5hdGVkIHRvCisgICAgICAgICMgVHJ1
ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNs
b3NlCisgICAgICAgICMgZnJhbWUuIFdlJ3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFr
ZS4KKworICAgICAgICBpZiBjb2RlIGlzIE5vbmU6CisgICAgICAgICAgICBpZiByZWFzb24gaXMg
bm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVz
dCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCisgICAgICAgICAgICByZWFzb24g
PSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29u
LCBieXRlcykgYW5kIG5vdCBpc2luc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICByZWFzb24s
IHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIGJ5dGVzIG9yIHVuaWNvZGUnKQorCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19o
YW5kc2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0luaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlLCByZWFzb24pCisKKyAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24u
U1RBVFVTX1BST1RPQ09MX0VSUk9SKSBvciBub3Qgd2FpdF9yZXNwb25zZToKKyAgICAgICAgICAg
ICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUgaWYgdGhl
IHJlYXNvbiBpcworICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvciBvciB0aGF0IHRoZSBzZXJ2
ZXIgaXMgZ29pbmcgYXdheS4gRm9yIHNvbWUgb2YKKyAgICAgICAgICAgICMgb3RoZXIgcmVhc29u
cywgaXQgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSwKKyAg
ICAgICAgICAgICMgYnV0IGl0J3Mgbm90IGNsZWFyLCB5ZXQuCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWlu
YXRlZC8gZmxhZyBoYXMgYmVlbiBzZXQsCisgICAgICAgICMgb3IgdW50aWwgYSBzZXJ2ZXItZGVm
aW5lZCB0aW1lb3V0IGV4cGlyZXMuCisgICAgICAgICMKKyAgICAgICAgIyBGb3Igbm93LCB3ZSBl
eHBlY3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVyIHNlbmRpbmcKKyAg
ICAgICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJl
Y2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2luZyBoYW5kc2hha2UnKQorICAg
ICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKyAgICAgICAg
IyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4pIGRvZXNuJ3QgaGF2ZSBjbG9z
ZSBtZXRob2QuCisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHksIGJpbmFyeT1GYWxzZSk6
CisgICAgICAgIGlmIG5vdCBiaW5hcnkgYW5kIGlzaW5zdGFuY2UoYm9keSwgc2l4LnRleHRfdHlw
ZSk6CisgICAgICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgZnJh
bWUgPSBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgICAgIHNlbGYu
X3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5
KToKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25z
Lm1hc2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQor
CisgICAgZGVmIGdldF9sYXN0X3JlY2VpdmVkX29wY29kZShzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgb3Bjb2RlIG9mIHRoZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGljaCB0aGUgbGFzdCBy
ZWNlaXZlZAorICAgICAgICBmcmFtZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHZh
bGlkIGlmZiBpbW1lZGlhdGVseSBhZnRlcgorICAgICAgICByZWNlaXZlX21lc3NhZ2UgY2FsbC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRp
bC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTY0ZTZiOGU0NjgyNDY3MTg3ZmMzODk0YjFjYTc5ZWM4MmE0MTNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0
aWwucHkKQEAgLTAsMCArMSw0MDUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IHV0
aWxpdGllcy4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzaXgKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHps
aWIKKwordHJ5OgorICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKKworZGVmIHByZXBlbmRfbWVzc2FnZV90
b19leGNlcHRpb24obWVzc2FnZSwgZXhjKToKKyAgICAiIiJQcmVwZW5kIG1lc3NhZ2UgdG8gdGhl
IGV4Y2VwdGlvbi4iIiIKKyAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3RyKGV4YyksICkKKyAg
ICByZXR1cm4KKworCitkZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgp
OgorICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24g
dG8gcnVuIGN5Z3dpbiBwcm9ncmFtCisgICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9l
c24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKKyAgICB3aGljaCBpcyB0eXBp
Y2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCisgICAgRm9y
IFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFy
aWVzLgorCisgICAgQXJnczoKKyAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQorICAg
ICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUK
KyAgICBSZXR1cm5zOgorICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgorICAg
ICIiIgorICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKKyAgICAgICAgcmV0dXJuIGludGVycAorICAg
IG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCisgICAgaWYgbToK
KyAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQorICAg
ICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQorICAgIHJldHVybiBpbnRlcnAKKworCitkZWYg
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgorICAgIHIi
IiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KKworICAg
IEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQs
IGUuZy4gaW4gV2ViS2l0LAorICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVs
bG8ucGwiLgorICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0s
IGl0IGNvdWxkbid0LiAgU28sIGZpeAorICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9w
YXRoPlxwZXJsLmV4ZSIuCisKKyAgICBBcmdzOgorICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1l
IG9mIHRoZSBzY3JpcHQKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3
aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgorICAgICIiIgorICAg
IGZwID0gb3BlbihzY3JpcHRfcGF0aCkKKyAgICBsaW5lID0gZnAucmVhZGxpbmUoKQorICAgIGZw
LmNsb3NlKCkKKyAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQorICAgIGlmIG06Cisg
ICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgp
CisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0
aCk6CisgICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4K
KworICAgIEFyZ3M6CisgICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkg
aWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KKyAgICAiIiIKKyAgICBf
X29yaWdfcG9wZW4zID0gb3MucG9wZW4zCisKKyAgICBkZWYgX193cmFwX3BvcGVuMyhjbWQsIG1v
ZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAgICAgY21kbGluZSA9IGNtZC5zcGxpdCgnICcpCisg
ICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5Z3dpbl9wYXRo
KQorICAgICAgICBpZiBpbnRlcnA6CisgICAgICAgICAgICBjbWQgPSBpbnRlcnAgKyAnICcgKyBj
bWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZzaXplKQorCisg
ICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMworCisKK2RlZiBoZXhpZnkocyk6CisgICAgcmV0
dXJuICcgJy5qb2luKFsnJTAyeCcgJSB4IGZvciB4IGluIHNpeC5pdGVyYnl0ZXMocyldKQorCisK
K2RlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgorICAgICIiIlJldHVybiB0aGUgbG9nZ2luZyBjbGFz
cyBpbmZvcm1hdGlvbi4iIiIKKyAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoJyVzLiVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCisKKworZGVmIHBhY2tfYnl0ZShiKToKKyAgICAiIiJQYWNr
IGFuIGludGVnZXIgdG8gbmV0d29yay1vcmRlcmVkIGJ5dGUiIiIKKyAgICByZXR1cm4gc3RydWN0
LnBhY2soJyFCJywgYikKKworCitjbGFzcyBOb29wTWFza2VyKG9iamVjdCk6CisgICAgIiIiQSBO
b09wIG1hc2tpbmcgb2JqZWN0LgorCisgICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFz
IFJlcGVhdGVkWG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKKyAgICB0aGUgc3RyaW5nIHBhc3Nl
ZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgIiIiTm9PcC4iIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIG1h
c2soc2VsZiwgcyk6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHJldHVybiBzCisKKwor
Y2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIG1hc2tpbmcgb2JqZWN0
IHRoYXQgYXBwbGllcyBYT1Igb24gdGhlIHN0cmluZy4KKworICAgIEFwcGxpZXMgWE9SIG9uIHRo
ZSBieXRlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhvZCB3aXRoIHRoZSBtYXNraW5nIGJ5dGVz
CisgICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJlcGVhdGVkbHkuIFRoaXMgb2JqZWN0IHJl
bWVtYmVycyB0aGUgcG9zaXRpb24KKyAgICBpbiB0aGUgbWFza2luZyBieXRlcyB0aGUgbGFzdCBt
YXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVzIGZyb20KKyAgICB0aGF0IHBvaW50IG9u
IHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1hc2tpbmdfa2V5KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkgPSBtYXNraW5nX2tl
eQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9IDAKKworICAgIGRlZiBfbWFza191
c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBtYXNrIHZpYSBTV0lH
LiIiIgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3RfbWFza2luZy5tYXNrKHMsIHNlbGYuX21h
c2tpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4KQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9ICgo
c2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKKyAgICAgICAgcmV0dXJuIG1h
c2tlZF9kYXRhCisKKyAgICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwgcyk6CisgICAgICAg
ICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIHB5dGhvbi4iIiIKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShzLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnTWFza2luZyBPcGVyYXRpb24gc2hvdWxkIG5vdCBwcm9jZXNzIHVuaWNvZGUg
c3RyaW5ncycpCisKKyAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KHMpCisKKyAgICAgICAgIyBV
c2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNvc3QgdG8gYWNj
ZXNzCisgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICBtYXNraW5nX2tleSA9IFtjIGZvciBj
IGluIHNpeC5pdGVyYnl0ZXMoc2VsZi5fbWFza2luZ19rZXkpXQorICAgICAgICBtYXNraW5nX2tl
eV9zaXplID0gbGVuKG1hc2tpbmdfa2V5KQorICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJlc3Vs
dCkpOgorICAgICAgICAgICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XQorICAgICAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXgg
KyAxKSAlIG1hc2tpbmdfa2V5X3NpemUKKworICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRl
eCA9IG1hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKwor
ICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAgbWFzayA9IF9tYXNr
X3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkK
KworCisjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBD
TUYvRkxHICgyIG9jdGV0KSBhbmQKKyMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIg
c28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKKyMgZGVmbGF0ZSBsaWJyYXJ5
LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5
LgorIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9u
IGFuZCBkZWNvbXByZXNzaW9uLgorIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNl
IDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKKyMgY29tcHJlc3Npb24sIHdlIHVz
ZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KKyMKKyMgQ29tcHJlc3Npb24gbGV2ZWwg
aXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCisj
IHRvIGRlY29kZS4KKyMKKyMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2Yg
emxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCisjIFB5dGhvbi4gU2VlIGFsc28gUkZD
MTk1MCAoWkxJQiAzLjMpLgorCisKK2NsYXNzIF9EZWZsYXRlcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9j
bGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA5IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KKyAgICAgICAgIyBPbiBXZWJT
b2NrZXQgc3BlYywgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXQgaXMgOC4gSG93ZXZlciwgemxpYiBk
b2VzCisgICAgICAgICMgbm90IGFjY2VwdCB3aW5kb3dfYml0ID0gOC4KKyAgICAgICAgIworICAg
ICAgICAjIEJlY2F1c2Ugb2YgYSB6bGliIGRlZmxhdGUgcXVpcmssIGJhY2stcmVmZXJlbmNlcyB3
aWxsIG5vdCB1c2UgdGhlCisgICAgICAgICMgZW50aXJlIHJhbmdlIG9mIDEgPDwgd2luZG93X2Jp
dHMsIGJ1dCB3aWxsIGluc3RlYWQgdXNlIGEgcmVzdHJpY3RlZAorICAgICAgICAjIHJhbmdlIG9m
ICgxIDw8IHdpbmRvd19iaXRzKSAtIDI2Mi4gV2l0aCBhbiBpbmNyZWFzZWQgd2luZG93X2JpdHMg
PSA5LAorICAgICAgICAjIGJhY2stcmVmZXJlbmNlcyB3aWxsIGJlIHdpdGhpbiBhIHJhbmdlIG9m
IDI1MC4gVGhlc2UgY2FuIHN0aWxsIGJlCisgICAgICAgICMgZGVjb21wcmVzc2VkIHdpdGggd2lu
ZG93X2JpdHMgPSA4IGFuZCB0aGUgMjU2LWJ5dGUgd2luZG93IHVzZWQgdGhlcmUuCisgICAgICAg
ICMKKyAgICAgICAgIyBTaW1pbGFyIGRpc3NjdXNzaW9ucyBjYW4gYmUgZm91bmQgaW4gaHR0cHM6
Ly9jcmJ1Zy5jb20vNjkxMDc0CisgICAgICAgIHdpbmRvd19iaXRzID0gbWF4KHdpbmRvd19iaXRz
LCA5KQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHpsaWIuREVGTEFURUQsIC13aW5kb3dfYml0cykKKworICAgIGRlZiBjb21wcmVzcyhz
ZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5j
b21wcmVzcyhieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1
dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3Vs
dCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVz
CisKKyAgICBkZWYgY29tcHJlc3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29t
cHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBj
b21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMp
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJl
c3NlZF9ieXRlcykKKyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworICAgIGRlZiBj
b21wcmVzc19hbmRfZmluaXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29tcHJlc3NlZF9ieXRl
cyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBjb21wcmVzc2VkX2J5
dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAg
ICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcworCisKK2NsYXNzIF9JbmZsYXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAgICAgICAgc2VsZi5fd2luZG93X2JpdHMg
PSB3aW5kb3dfYml0cworCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKworICAgICAg
ICBzZWxmLnJlc2V0KCkKKworICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIHNpemUpOgorICAgICAg
ICBpZiBub3QgKHNpemUgPT0gLTEgb3Igc2l6ZSA+IDApOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdzaXplIG11c3QgYmUgLTEgb3IgcG9zaXRpdmUnKQorCisgICAgICAgIGRhdGEgPSBi
JycKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9kZWNv
bXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzaXplIC0gbGVuKGRhdGEpKSkKKyAg
ICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRf
dGFpbAorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKKyAgICAg
ICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGgg
QkZJTkFMID0gMSkgYW5kCisgICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVu
dXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICMgemxp
Yi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldworICAg
ICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9u
ZS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdu
b3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKKyAgICAgICAgICAgICAg
ICAjIGVtcHR5LgorICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNv
bXByZXNzLnVudXNlZF9kYXRhCisgICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAg
ICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8g
ZGVjb21wcmVzcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVm
b3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCisgICAgICAgICAgICAgICAgICAg
ICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVz
ZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKKyAgICAgICAgICAg
ICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBp
biBkYXRhLiBXZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhl
cmUuCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBkYXRhOgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQorICAgICAgICBy
ZXR1cm4gZGF0YQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCisgICAgICAgIHNlbGYuX3VuY29uc3Vt
ZWQgKz0gZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1Jlc2V0JykKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVz
c29iaigtc2VsZi5fd2luZG93X2JpdHMpCisKKworIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBn
aXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCisKKwor
Y2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgorICAgICIiIkEgY29tcHJlc3NvciBjbGFz
cyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAorICAgIGZs
dXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlv
biAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzLCBub19j
b250ZXh0X3Rha2VvdmVyKToKKyAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAg
IGlmIHdpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICB3aW5kb3dfYml0cyA9IHpsaWIu
TUFYX1dCSVRTCisgICAgICAgIHNlbGYuX3dpbmRvd19iaXRzID0gd2luZG93X2JpdHMKKyAgICAg
ICAgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciA9IG5vX2NvbnRleHRfdGFrZW92ZXIKKworICAg
IGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGVuZD1UcnVlLCBiZmluYWw9RmFsc2UpOgorICAgICAg
ICBpZiBzZWxmLl9kZWZsYXRlciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIg
PSBfRGVmbGF0ZXIoc2VsZi5fd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYgYmZpbmFsOgorICAg
ICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaChieXRl
cykKKyAgICAgICAgICAgICMgQWRkIGEgcGFkZGluZyBibG9jayB3aXRoIEJGSU5BTCA9IDAgYW5k
IEJUWVBFID0gMC4KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHBhY2tfYnl0ZSgwKQor
ICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0CisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNo
KGJ5dGVzKQorICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICAjIFN0cmlwIGxhc3QgNCBvY3Rl
dHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAgICAgICAgICMgbm9uLWNv
bXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdFs6LTRdCisKKyAgICAgICAgaWYgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciBh
bmQgZW5kOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisKK2NsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0KToKKyAgICAiIiJB
IGRlY29tcHJlc3NvciBjbGFzcyBhIGxhIFJGQzE5NzkuCisKKyAgICBBIGRlY29tcHJlc3NvciBj
bGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkIGZvbGxvd2luZwor
ICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNlY3Rpb24gMi4xLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklU
Uyk6CisgICAgICAgIHNlbGYuX2luZmxhdGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQorCisg
ICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcyk6CisgICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBM
RU4gYW5kIE5MRU4gZmllbGQgb2YgYSBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZAorICAgICAg
ICAjIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRl
cyArIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQorCisKK2NsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKKyAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQorICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KKyAgICAiIiIKKworICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgorICAgIF9SRUNWX1NJWkUgPSA0
MDk2CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0CisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQorCisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKKwor
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgorICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAorICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KKyAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgor
ICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55CisgICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCisgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKKworICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQorICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQo
cmVhZF9kYXRhKQorCisgICAgZGVmIHNlbmRhbGwoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxm
LnNlbmQoYnl0ZXMpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykp
CisgICAgICAgIHJldHVybiBsZW4oYnl0ZXMpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDYxNDI1ZTExNGQxNGQ4NmY4MWJjZDE0MWY2MmY3N2Q2NjRiOWNjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDMxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9leGNlcHRpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvc2VydmVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRmOGNkMzkzYzdlZTgwNjk2NzU3MTM2NjVkODViZTdkOTc2NTdiNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0
X3NlcnZlci5weQpAQCAtMCwwICsxLDI4NSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdGFuZGFs
b25lIFdlYnNvY2tldFNlcnZlcgorCitUaGlzIGZpbGUgZGVhbHMgd2l0aCB0aGUgbWFpbiBtb2R1
bGUgb2Ygc3RhbmRhbG9uZSBzZXJ2ZXIuIEFsdGhvdWdoIGl0IGlzIGZpbmUKK3RvIGltcG9ydCB0
aGlzIGZpbGUgZGlyZWN0bHkgdG8gdXNlIFdlYlNvY2tldFNlcnZlciwgaXQgaXMgc3Ryb25nbHkg
cmVjb21tZW5kZWQKK3RvIHVzZSBzdGFuZGFsb25lLnB5LCBzaW5jZSBpdCBpcyBpbnRlbmRlZCB0
byBhY3QgYXMgYSBza2VsZXRvbiBvZiB0aGlzIG1vZHVsZS4KKyIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQ
U2VydmVyCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgc29ja2V0c2VydmVyCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitp
bXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LnJlcXVlc3RfaGFuZGxlciBpbXBvcnQgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIKKworCitkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxl
cnNfbWFwX2ZpbGUpOgorICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3ZWJzb2NrX2hh
bmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KKworICAgIEFyZ3M6CisgICAgICAgIGRpc3Bh
dGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKKyAgICAgICAgd2Vic29ja19oYW5k
bGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQorICAgICIiIgorCisgICAgd2l0aCBvcGVuKHdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6Cisg
ICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUysp
JCcsIGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAgZmlsZTonICsgbGluZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpc3BhdGNo
ZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMobS5ncm91cCgxKSwgbS5ncm91cCgyKSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQorCisKK2NsYXNzIFdlYlNvY2tldFNlcnZlcihz
b2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgor
ICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4iIiIKKworICAgICMg
T3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi5kYWVtb25fdGhyZWFkcworICAg
IGRhZW1vbl90aHJlYWRzID0gVHJ1ZQorICAgICMgT3ZlcnJpZGVzIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcworICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBU
cnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18gdG8gc2V0IFNTTCBlbmFibGVkCisg
ICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2NrZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFu
ZCBzZXJ2ZXJfYWN0aXZhdGUsCisgICAgICAgIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1vbmcgcmVxdWVzdCBoYW5kbGVycyB0byBz
YXZlIHRpbWUgZm9yCisgICAgICAgICMgaW5zdGFudGlhdGlvbi4gIERpc3BhdGNoZXIgY2FuIGJl
IHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZlLgorICAgICAgICBvcHRpb25zLmRpc3Bh
dGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAorICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzLCBvcHRpb25zLnNjYW5fZGlyLAorICAgICAgICAgICAgb3B0aW9ucy5hbGxvd19o
YW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQorICAgICAgICBpZiBvcHRpb25zLndlYnNvY2tfaGFu
ZGxlcnNfbWFwX2ZpbGU6CisgICAgICAgICAgICBfYWxpYXNfaGFuZGxlcnMob3B0aW9ucy5kaXNw
YXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5k
bGVyc19tYXBfZmlsZSkKKyAgICAgICAgd2FybmluZ3MgPSBvcHRpb25zLmRpc3BhdGNoZXIuc291
cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgaWYgd2FybmluZ3M6CisgICAgICAgICAgICBmb3Igd2Fy
bmluZyBpbiB3YXJuaW5nczoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5p
bmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5yZXF1ZXN0
X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAgICAgICBzZWxmLl9f
d3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5fX3dzX3Nl
cnZpbmcgPSBGYWxzZQorCisgICAgICAgIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLl9faW5pdF9f
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25z
LnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcikKKworICAgICAgICAjIEV4cG9z
ZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFuZGxlciBvYmplY3RzIGFjY2VzcyBpdC4g
V2UgbmFtZQorICAgICAgICAjIGl0IHdpdGggd2Vic29ja2V0XyBwcmVmaXggdG8gYXZvaWQgY29u
ZmxpY3QuCisgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYmlu
ZCgpCisgICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRlZiBfY3JlYXRlX3Nv
Y2tldHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX25hbWUsIHNlbGYuc2VydmVyX3BvcnQg
PSBzZWxmLnNlcnZlcl9hZGRyZXNzCisgICAgICAgIHNlbGYuX3NvY2tldHMgPSBbXQorICAgICAg
ICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRo
YXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJzdCBiaW5kIGZhaWxzLgorICAgICAgICAg
ICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJUHY2CisgICAgICAgICAgICAjIC0gSWYg
aXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNhbGwgd2l0aCBBRl9JTkVUNiwgdGhlCisg
ICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVkcyBhbmQgdGhlIHNlY29uZCBmYWlscyAo
d2UnbGwgc2VlICdBZGRyZXNzCisgICAgICAgICAgICAjICAgYWxyZWFkeSBpbiB1c2UnIGVycm9y
KS4KKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBvbmx5IElQdjYgb24gY2FsbCB3aXRoIEFG
X0lORVQ2LCBib3RoIGNhbGwgYXJlCisgICAgICAgICAgICAjICAgZXhwZWN0ZWQgdG8gc3VjY2Vl
ZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0g
Wyhzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZv
KHNlbGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BFQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RP
X1RDUCkKKyAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCisg
ICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9
IGFkZHJpbmZvCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNv
Y2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWls
dXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcnZl
cl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgICAgIGlm
IHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlv
bnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlSRUQK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNzbC53cmFwX3NvY2tl
dCgKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0XywKKyAgICAgICAgICAgICAgICAgICAga2V5
ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgY2Vy
dGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgIGNh
X2NlcnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCisgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLmFwcGVu
ZCgoc29ja2V0XywgYWRkcmluZm8pKQorCisgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgorICAg
ICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kIHRvIGVu
YWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGJpbmQuCisgICAgICAgICIiIgorCisgICAg
ICAgIGZhaWxlZF9zb2NrZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxm
Ll9zb2NrZXRzOgorICAgICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQmluZCBvbjogJXInLCBhZGRyaW5mbykKKyAg
ICAgICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBz
b2NrZXRfLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIs
IDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0Xy5iaW5kKHNlbGYu
c2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQor
ICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9z
b2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQorICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRk
cmVzc1sxXSA9PSAwOgorICAgICAgICAgICAgICAgICMgVGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNz
aWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBwb3J0CisgICAgICAgICAgICAgICAgIyBu
dW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFuZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1
c2UKKyAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBvcnQgbnVtYmVyLiBBbHNvIHNlbGYuc2Vy
dmVyX3BvcnQgaXMgcmV3cml0dGVuCisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4
cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVybmFsIGNvZGUuCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IChzZWxmLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFdKQorICAg
ICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdCisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWduZWQnLCBz
ZWxmLnNlcnZlcl9wb3J0KQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2Nr
ZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAg
IGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNl
cnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAg
ICBzb2NrZXRzIGxpc3Rlbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFpbGVkX3NvY2tldHMg
PSBbXQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAg
ICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUpCisg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQorICAgICAgICAgICAgICAgIHNv
Y2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2Nr
ZXRpbmZvKQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgorICAg
ICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAgICAgICBpZiBs
ZW4oc2VsZi5fc29ja2V0cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNh
bCgKKyAgICAgICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBs
ZXZlbCB0byBzZWUgdGhlIHJlYXNvbi4nKQorCisgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2Ug
dG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgY2xvc2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAgICAgICBz
b2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdDbG9zZSBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIHNvY2tldF8uY2xvc2Uo
KQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2Vy
dmVyLlRDUFNlcnZlci5maWxlbm8uIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KCdOb3Qgc3VwcG9ydGVkOiBmaWxlbm8nKQorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1sw
XVswXS5maWxlbm8oKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGll
bnRfYWRkcmVzcyk6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJy
b3IuIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKCdFeGNlcHRpb24gaW4gcHJvY2Vz
c2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfYWRkcmVzcywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgIyBOb3RlOiBj
bGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgorCisgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QuIiIiCisKKyAgICAgICAg
YWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisK
KyAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwor
ICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAgICAgIyBQcmludCBj
aXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiBhY2NlcHQuCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2NrZXQuY2lwaGVyKCkp
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkp
CisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MKKworICAg
IGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWw9MC41KToKKyAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlci4iIiIKKworICAg
ICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IFRydWUKKyAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRf
ZG93bi5jbGVhcigpCisgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5oYW5kbGVfcmVxdWVz
dAorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaGFuZGxlX3JlcXVlc3Rfbm9ibG9jaycpOgor
ICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2Nr
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnRmFsbGJh
Y2sgdG8gYmxvY2tpbmcgcmVxdWVzdCBoYW5kbGVyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgd2hpbGUgc2VsZi5fX3dzX3NlcnZpbmc6CisgICAgICAgICAgICAgICAgciwgdywgZSA9IHNl
bGVjdC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIFtzb2NrZXRfWzBdIGZvciBzb2NrZXRf
IGluIHNlbGYuX3NvY2tldHNdLCBbXSwgW10sCisgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50
ZXJ2YWwpCisgICAgICAgICAgICAgICAgZm9yIHNvY2tldF8gaW4gcjoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXRfCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9y
ZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uc2V0KCkKKworICAgIGRl
ZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VT
ZXJ2ZXIuc2h1dGRvd24uIiIiCisKKyAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQor
ICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLndhaXQoKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U5NDI4ZDY5MWQ3NTZjZjNkNjg3ZTc1NmI3
MzgxNGNjZDNiZTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAu
cHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KKyIiIgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9u
CitpbXBvcnQgc3lzCisKK19QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29ja2V0JworCisjIEJ1
aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBmYXN0ZXIgbWFza2luZy4gU1dJRyBpcyBy
ZXF1aXJlZC4KK19VU0VfRkFTVF9NQVNLSU5HID0gRmFsc2UKKworIyBUaGlzIGlzIHVzZWQgc2lu
Y2UgcHl0aG9uX3JlcXVpcmVzIGZpZWxkIGlzIG5vdCByZWNvZ25pemVkIHdpdGgKKyMgcGlwIHZl
cnNpb24gOS4wLjAgYW5kIGVhcmxpZXIKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNyc6CisgICAgcHJp
bnQoJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjcgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUsIGZp
bGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitpZiBfVVNFX0ZBU1RfTUFTS0lORzoK
KyAgICBzZXR1cChleHRfbW9kdWxlcz1bCisgICAgICAgIEV4dGVuc2lvbignbW9kX3B5d2Vic29j
a2V0L19mYXN0X21hc2tpbmcnLAorICAgICAgICAgICAgICAgICAgWydtb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmknXSwKKyAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSkK
KyAgICBdKQorCitzZXR1cCgKKyAgICBhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKKyAgICBhdXRo
b3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3JnJywKKyAgICBkZXNjcmlwdGlvbj0nU3RhbmRhbG9u
ZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLicsCisgICAgbG9uZ19kZXNj
cmlwdGlvbj0oJ21vZF9weXdlYnNvY2tldCBpcyBhIHN0YW5kYWxvbmUgc2VydmVyIGZvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJGQyA2NDU1KS4g
JworICAgICAgICAgICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
IGZvciBtb3JlIGRldGFpbC4nKSwKKyAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCisgICAgbmFt
ZT1fUEFDS0FHRV9OQU1FLAorICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9O
QU1FICsgJy5oYW5kc2hha2UnXSwKKyAgICBweXRob25fcmVxdWlyZXM9Jz49Mi43JywKKyAgICBp
bnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgI1RPRE8oc3V6dWtpa2VpdGEpOiBVcGRhdGUg
dGhpcyB0byBuZXcgR2l0aHViIFVSTAorICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3B5d2Vic29ja2V0LycsCisgICAgdmVyc2lvbj0nMy4wLjAnLAorKQorCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVz
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2Nh
Y2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1
NTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNl
cnQucGVtCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJ
Q3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNEUUVCQlFVQU1Fa3hDekFK
QmdOVgorQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldK
emIyTnJaWFF4RkRBUworQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0WERURXlNRFl3TmpBM01q
UXpNMW9YRFRNNU1UQXlNekEzTWpRegorTTFvd1NURUxNQWtHQTFVRUJoTUNTbEF4RGpBTUJnTlZC
QWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAorWW5OdlkydGxkREVVTUJJR0ExVUVBeE1M
Y0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAorZ1kwQU1JR0pBb0dCQUtv
U0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWprQ1lpYWhYVwordTJDYlRU
aGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0VU5xdFFPaFFhcXFLK0Na
OQorTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytxVWYyTWpoNC8rU3p4QkRO
UDdBZ01CQUFHagorZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMr
K2J6TUhrR0ExVWRJd1J5TUhDQQorRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8zKytiem9VMmtTekJK
TVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQorQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNC
NWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgorWTJ0bGRJSUpBS3FWZ2hrR0Yx
clNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQQorZ3NNSTFXRVlx
TncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJrUThiQ3I2eFkrS3c3cwor
WnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJMbytldDk4c2VsWnlkcEhl
bUYzREpKMworZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2RjZWNGpVMDdoUT0KKy0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNTM3OWE3MmIwZGFjNWY0MTk3OWM4MDJjNjYzZGY4Yjg4ZGVhODI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCkBAIC0w
LDAgKzEsNjEgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246IDMg
KDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQorICAgICAgICBTaWduYXR1cmUg
QWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPUpQLCBT
VD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAgICAgICAgVmFsaWRpdHkK
KyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEyIEdNVAorICAgICAg
ICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCisgICAgICAgIFN1Ympl
Y3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNvY2tldAorICAgICAg
ICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3Jp
dGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0
KQorICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKyAgICAgICAgICAgICAgICAg
ICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6MWE6CisgICAgICAg
ICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2Ojg5OjAzOmEyOjIx
OgorICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjozNToyNzozYTphMjo5
Mjo4ZToxMjo2MjoKKyAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6Nzg6ZGY6YjY6OTQ6
Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6CisgICAgICAgICAgICAgICAgICAgIDVjOjA4OmYwOjA5OjNl
OmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgorICAgICAgICAgICAgICAgICAgICBlNTpm
YjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKKyAgICAgICAgICAgICAg
ICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6MDc6OWE6CisgICAg
ICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5OjgyOjgzOmRiOjY4OmJm
OmI4OgorICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1NDo3Mzo3YgorICAg
ICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4
dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAg
ICAgICAgICAgIENBOkZBTFNFCisgICAgICAgICAgICBOZXRzY2FwZSBDZXJ0IFR5cGU6IAorICAg
ICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKKyAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAor
ICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCisgICAgICAgICAg
ICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAgODI6QTE6
NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6RTk6MDY6MDAKKyAg
ICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAg
ICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZGOkEwOjY4OjRFOjFB
OjM3OkZCOkU2OkYzCisKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6ZDc6N2Y6YTA6MWU6
MGQ6MWE6ZWI6MmY6CisgICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1OjhjOjFiOmYwOjUxOmQ2
OjUyOmU3OjhkOjg0OjNiOjlmOgorICAgICAgICBkODplZDoyMjo5YzphYTpiZDplZTo5Yjo5MDox
ZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKKyAgICAgICAgYmE6Zjc6MTU6Y2U6ZGE6NWY6ZGI6
OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6CisgICAgICAgIGQzOmYxOmJlOjUyOjRm
OmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgorICAgICAgICBmOTowNTo1
MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpkNToKKyAgICAgICAg
OTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6MzQ6NjA6YjE6Cisg
ICAgICAgIGNiOmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNtRENDQWdHZ0F3
SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdKS1VERU8KK01Bd0dB
MVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3
dHcKK2VYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpPVEV3TWpNd056STFN
RGhhTUVreEN6QUoKK0JnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVF
Q2hNTGNIbDNaV0p6YjJOclpYUXgKK0ZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNSUdmTUEw
R0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKK2dRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0Fl
WXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKK0gvUjQzN2FVeXlmV3k5WTMx
MXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEyZHYKK0JJWWQ3Mklj
VmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJvNEdQTUlHTU1Ba0cK
K0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NHU0FHRytFSUJEUVFm
RmgxUGNHVnUKK1UxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdR
VWdxRnppeFlNZk9UVFJwVVQKK2xSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0ZvQVU2eFozRUpLN0tI
QnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKK2h2Y05BUUVGQlFBRGdZRUFhN05HS1FMZnNNaU94
TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKKzJPMGluS3E5N3B1UUhZU2pUQXZM
NjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoKK1l6dFI3YWVCK1FW
UmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4eTY0PQorLS0tLS1F
TkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9j
ZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMxYWYxMTM0OTlkNmE1
YThiMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4Mgp6Y21ZK0ZYSCpqaTdLTWAjMHRCZzJx
ekZpdFAhZjxQSEEtKk5Mb0BWX2djZjB0OFdCKCNJP3slWVJGeCp1YCUpeUoKejFuRyFLMzVicWhY
clg3QWI5USVqZjg2dWx4JVp2LT4lSF5BYVpwd2VrUDQyWW59ZzZ2I091WUE4R3RtdlZqU0lqCnpG
cGg1VSgoWiVmQVN3U3VrWVhHcD1GKkEpMFJmaTxgJWVPZF5GcEJpLWYjczdmaXI/PjJjVyRUIzsy
KkdBUF9BZQp6MV8jbHJuMkUoZUtPTUo2TjI2WUpuZV9AaHB9U0tQWFVCN0ZNZXJffjV8MXFnQ3tU
cW5uQnV2MSRrcHA1T0J6JUAKejxteVN3Kz9ZPl5qQVo0I1hBLX0qIVFzYnVPaFcoc084MzY2KCQ7
KDFBPm1vKE8tJXgoaG4oPXlaO3l+TkcjUVgxCnpnSGtTaV5eOGN2NFRUU0w5dm41cVIoPl9EM2Ym
b2MqandQZ0kjS0BRI0FzTClEO0JEJldiMmQrSTFeSjduPn1ZWgp6YkNYbzlmT0BnIUBkV1lhMlYl
fTspIXs8ekRjfChwdkpJYXhXN05kTyVPNmY+ciZhT3JwSGt7b19SOW1RNDd1b2IKej9sPjl8bnxY
M2BhZ3BeRztMd1hSNTwobHIrUjxjTDVqVFEoP15EPGtSbyFIX1QjcD95M2R9XnRDWVYhOFJeTj99
CnpDKiVYbTlMZWY+ajdobHItP2pIbHB8d2ZBJl5uLXM7PCF6JHFEMXhQcSE4S1ExfX5kdXB3fkJN
MWdzfkBBbztDcQp6d1JnVXwyXmR9Ti1nVjtAYVlrdThJJX18PGw2UU0/PWR+RllwYkdGSDkmdk5n
S1oqU3ljSVN8bWN1T1I/bCZDT3cKenN7emQ1em1lbHhxTjFEUXl7fVBnQj11I2Z6SU5Qa0Iwb04q
Y2szdmArMXshWVhQfntFVkk3VnFoKn51YVdfflVDCnpsUjMzUlowNUhoa0MtMWVJcCktQFleeXZj
LXxSJSEqOWR3N25mVyl5amNISVlmNnI9YUN0KFVoaS1GSm0ybntfKQp6JXt1bEJVWFJgMjw+bHh9
ZUdtU21SSj41b3RrQCgrcGpzUHE7NGhaNkZJS2wje254UCFBTCEyOF9fQVlmbGBWZ3sKemxSUmFB
UnxWbXkxX2BeYmJqWnJ6QXtRJGxZZWpJWWReQSRaPlcmanluTT1LYFRsNHdWKTN3QGQxSmNgLTUt
Q0dKCnp4cV5AOF8oITxaRjJxbGhfWn19bnI/UyY1KnorRkApdihaMUVJcztIbX0hMX5NVEwhajFA
YyRaSExSfVYoPTtebwp6ZFVwZnk/bz55em9sX3NpPDxVRUI9dChlZUJ6Z0peV1l3c0hDRzkzNHMk
ZClAcXFId2deeVpNe2BeakohOTt0cjYKemVvVWF5JiQrQnlHfE5eX3pvQUhedFlJZz5oYVl3fEB8
YzMxXncoblVkN2soWW1FSjc2Vlk3OSsoQyhfJDsxTXNVCnpoaU5pK0I1Z1NyRGp8OT48QD82UiY4
emJtOGJyP0MtTm4xY2soKzxOSyU3KTZ2LXdXcTQ9TV9UYnQxOTR6VSp5Rgp6aDxvdDxIQldub3hC
JTFrOShNMG88TmcpUmdIUygjP2VkRVFCIV58RmstXyhhYGJVQkxBSypofmF6fiFfeHU9VDQKejZH
NUstYVhKb3RIUWxFQzhDVTV8UnlNUnVRa1hFKT9edjYoaT1NdSk9JF5vJTAheXM1R1ZSYVhaMlMy
SDRJODNMCnpxKWJgfFB4eyg4OVczMnpxNHNxekgrQkFLUDl1YURFcEQ4SUlBOUQtSDQ1QyVWVD9K
SiNNYStCQGk5TVBkRi0jIwp6TnhGNVR1fWl6X2h6JFNLWjBfXyYhWXAxeWFkVnpvY0BFeStCZWZK
Q3RDU1ZkNShKeSg8QzZJY0NXfURtSHdDOFQKelJ7a3F2UkA/M3J6TEcyJFpkY3gtNXZGUkBkJFEj
REQrfntkaEBtZF9lYEJCNipVWTZSKzReI1UlejRsdHg5QiU7CnpOVjh6KntHY0dNO2dxMlJ0eWRq
e0gwUzBwI3o8NiU3bTMhJXs/TVF1YTxgQGU1Yk90YmQhRWM/R151eGY0Z3hjSQp6LUY3U1RZaX52
RGJtdkNaM05EY2ZIajg+QzlGVjZqZDF9KHBTd3JnR2sqUVo5UnI0KTYhc1NrVFVxYnhiYWVhMnUK
endTYCR5b3NRKWViJW9fdkpPKiFBYGRSO1k0az4mcVl6dWEtWk5FPDNGRT1JK2VTVTt4IXB0XkEz
NT5vSW9QYEpxCnpabH4pckM2MEwra1N4QWdvUEV8ckdqVkA/MkF5KlhiPSRjYGNfTDM9RXpoakJV
RD1oMV80JWVCQ2ZsaiZFSFptTwp6c3sxYnxOdXg2KztLI0tCPVRrX3xpa3x7KjAxZGskOUthNmBj
UlU9TWNZaU4hay1hKTJQRDMxaDxjVHMla1Bob1oKek8pMndfVDktOHcyTk0mJnEycGw0XktxfUNQ
ZT1sOWhxJFc0IXQ7SkQlfFVKKDI4dkRiTSpMPlZGN2JXX1h7YjE0CnpHTncodz5FX1M5YDw7eFFs
UGBAc2Q+Nm0zbjIpTCkwcCFYUnJEIzI1aUlrUkRzKTF1ak4lU3N5dyM2MnZkdiZBbAp6Y2RqLVls
IzYrQGEwV3NjVTwzYGd2VyQydy0oXkhmRVJ5eHNOc3E2bUswZDg7PzBMU2VOaCVORWUwQllKNElM
KGEKeiRXWG5kKVBCVzxBVGt7eSUyUzlHUGEycXlKVyReSkpfY29fWFAxbTlFfWopUT9ebCQjKk1E
eFA1fG1ZMXpjcTN5CnpiPUB6eUNYdWd3ZHtOang/aTI3ait6WE80KlY+fVplLXpCUXgpSHlud0xg
TmooITl0KTU0ZE87elRWfi1PIztVOwp6TXdwMFBVLXVVTD8jIzhMLSkmdm1ibkFtbiNAJmE+dj1j
UH1FVVFKVndhRHc5VjwtSXdZdGlUOXcoVE1lYTIlRHkKenxBNDAkTjV1b2lRRV5fe1MxLWlgcTVs
dHRwZz5TRDRwYWZoZmxCfDZQRT4hPnNoV2tvRW1aaGcrfjBIcDwzS1RACno5amskcU1DPTAmQmJr
XmZSbzRmMzhKfmlXQ3x4R1AwYHdaM0YjazhnKklkTlkkR0YtQXg4XjxEckJeajI4WGI2cwp6Unw7
VnZhciU8fFRaS34+MzBrRDMpVyRBRCModHRgI0B4N1E4T1lhcFRfSnlNMXZUP2xieC0rX0YoSkYl
eVMwTyQKenBTI2x9dyowaj5ifU0zZTs0ST57cE1NPnMlYD9mU0FFX1FiYEFuPl9WIWtpfSQ5d01O
OShmVTF1SkdtME1pN2hLCnpBNWwwZTF3VmNeJHFsPzVnbT44RXZCcFNhV2Y1VElnM1pTYnVKaHA7
YSUoWitrY3tjZHYxUHVYJGUyR0FOP0pmOAp6V0tOZ1M8KE0yRk5VYFJ4ZEJHfWY9UzFyblEqZVIx
MnFGX0MmJnBuQGB5JUN+TDleUV9aOWxoJkc9WHZHQyE0MTAKenluKTVvPSl4MmlKWSteP15FTGpu
dEhIYH1LKXphP0k9fHYhJGhMMG4mR3p5cHphTHdOZGVNPU9qV3wtLT1tUl9qCnp5dD9+VnhfXzlC
RXZjaEw/OWh1VW9iLTVuK3IxPzx4QGNnfTVhfFZ8RmNGUU8qZUlwd1pFbn5WR0xlcXZTQFdrMgp6
KSErRDMtO3s0QE9PKWIrYlFPIz0tRStCZU9AZiEzPGlUMG1iMnBiMzg4e0dJUmFyamRuVGklQD80
cXd5I3E2MFkKenFpQXx7dDZvNDlFTTE4SiZ3OERBI3dRRERzRndOJEhHKk1UTDIxQlFqKVlSYFc1
TDtaZk1NPCpyTD1GSWd8MGJKCnpUOXI3RmxCTExeclYlMVVPITN8R0RFYU0hakhQTHI/NVFCdUND
IVcpPmRyZl5SQ2BgN1lSWVooSz5pZTA+cEpkXgp6SldfSHslKV5jITY+bHw5UDg/Yz1qKEI1N1lK
ejg/WHlRekU5dUdhfWRWMFBUcDMhO3AhU0YpfXQtaT5DPEVkSCsKek1LQVNuViMhJlNXZmR9MGRs
alhzeVFmenNANmkwK2RxU0hKTH5GN35vdHwkSHdmK0YqMGpDSyp3NVdvRkBROWhOCnpobGslU3to
NkM1N0NJMl81Ujk7ZjM7cC0xPkRVbipVXmVvR2pocW87KlIqJGtWRTAxSj5USlFSc3Y5b3omayEz
egp6a1dUOyowUWUwTTNVQ0x3MEQ9SitmR2ZjRnZKVXxgVWRzS18zNHRUdkh7ZiYtWThXRkdoP15Q
IVg1O3k9Rlp1RHMKZmZyV2swJU0oT0duVE1OPGgmcUB5TGREVV8mTWNBZj98MWtNZWpVTm8KCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
Y2VydC9rZXkucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFlODU4MzE4ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtCkBAIC0wLDAgKzEs
MTUgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNYZ0lCQUFLQmdRRGVF
TTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczEKK0p6cWlrbzRT
WWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0IK
K2lONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6
ZXdJREFRQUIKK0FvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4VGxkYWZhNlh2YXdF
WVVUUDBTNzd2LzFsbGcxWXYKK1VJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMvWjNlMWZzb3Q1dERZ
c3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKK1FTbzdZRkNhanVIdEUrVy9nekYrVUhiZHp6WElE
alFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKKzNVUjhmOG9la0VSd3NtRU1mOURI
NVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EKK29nQU0rNE5YNFFK
QkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0YmxNSlE1T3EKK1Fk
T0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQeWxHM3VyY0MybWZR
eEJra1cKK1pDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0OVVObXFjME4wZnBl
MmZBZWhqM1VFQ1FRQ20KK0ZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6M2Nia0I0QjNGY2hE
bGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKK1FEazF0VUtvcnR4dlFaSmFBRDRCQWtFQWhHT0hRcVBk
NmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKK0NsUmlNbjJnOFNBTGlJTDNCRGdHWEtj
S0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OTA0NDE5MGY1OGJlNzc0NTYxNTIzYjNhN2ViOWNkZGFiYTgyMzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9r
ZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVz
dGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ1MGE2YWNkNTM3NjIyM2M2MDNhYmUyNjRiOTY3Nzk2ODMyZmI1NzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5w
eQpAQCAtMCwwICsxLDcxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGluZy4KKworVGhpcyBt
b2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgaGFuZHNoYWtlLCBm
cmFtZQorc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50LgorCitUaGlzIGlz
IGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMgY29kZSBpbmRlcGVu
ZGVudCBmcm9tCittb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcuIFN0cmVhbSBjbGFz
cyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKK3Rlc3RpbmcuIFVzaW5nIHV0aWwuaGV4aWZ5LCBl
dGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3NpbmcKK2lzIGFsbG93
ZWQuCisKK05vdGU6CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcuLCB3ZSBjdXQg
Y29ybmVycyBpbiBoYW5kc2hha2UuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBv
cnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBoYXNobGliIGltcG9ydCBzaGExCitmcm9tIHNp
eCBpbXBvcnQgaXRlcmJ5dGVzCitmcm9tIHNpeCBpbXBvcnQgaW5kZXhieXRlcworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KKworREVGQVVMVF9QT1JUID0gODAKK0RFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKKwor
IyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcg
Zm9ybWF0CitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENPREVfQ0xPU0UgPSAweDgKK09Q
Q09ERV9QSU5HID0gMHg5CitPUENPREVfUE9ORyA9IDB4YQorT1BDT0RFX1RFWFQgPSAweDEKK09Q
Q09ERV9CSU5BUlkgPSAweDIKKworIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQorX1VQR1JB
REVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCitfQ09OTkVDVElPTl9IRUFERVIg
PSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKK1dFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9IGIn
MjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJworCisjIFN0YXR1cyBjb2Rlcwor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5U
X0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CisKKyMgRXh0ZW5zaW9u
IHRva2VucworX1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZs
YXRlJworCisKK2RlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfc2VjX29yaWdpbl9oZWFkZXIob3Jp
Z2luKToKKyAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2lu
Lmxvd2VyKCkKKworCitkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKKyAgICAjIDQuMSAxMy4g
Y29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hh
cmFjdGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBv
cmlnaW4ubG93ZXIoKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNl
Y3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5nLgor
ICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9ydCA9IGhvc3QubG93
ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBu
b3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0
NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAgICMgKDopIGZvbGxv
d2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVn
ZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9
IERFRkFVTFRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVM
VF9TRUNVUkVfUE9SVCkpOgorICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKKyAg
ICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIw
IFNQQUNFCisgICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJ0hvc3Q6ICVzXHJcbicgJSBob3N0cG9ydAorCisKKyMgVE9ETyh0eW9zaGlubyk6
IERlZmluZSBhIGJhc2UgY2xhc3MgYW5kIG1vdmUgdGhlc2Ugc2hhcmVkIG1ldGhvZHMgdG8gdGhh
dC4KKworCitkZWYgcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVjZWl2ZWRf
Ynl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxlIHJlbWFpbmluZyA+
IDA6CisgICAgICAgIG5ld19yZWNlaXZlZF9ieXRlcyA9IHNvY2tldC5yZWN2KHJlbWFpbmluZykK
KyAgICAgICAgaWYgbm90IG5ld19yZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQgYmVmb3JlIHJlY2Vp
dmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAnKHJlcXVlc3RlZCAlZCBi
eXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUKKyAgICAgICAgICAgICAgICAobGVu
Z3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICByZWNlaXZlZF9ieXRlcy5hcHBlbmQo
bmV3X3JlY2VpdmVkX2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVuKG5ld19yZWNlaXZl
ZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWRfYnl0ZXMpCisKKworIyBUT0RP
KHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xhc3MgZGl2ZXJ0cyB0aGVz
ZSBtZXRob2RzLiBXZQorIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNlciBhcyBzcGVjaWZpZWQg
aW4gUkZDIDY0NTUuCisKKworZGVmIF9yZWFkX2ZpZWxkcyhzb2NrZXQpOgorICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KKyAgICBmaWVsZHMgPSB7fQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgNC4xIDMz
LiBsZXQgL25hbWUvIGFuZCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIG5h
bWUgPSBiJycKKyAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25h
bWUvCisgICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKKyAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2Vz
CisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBzcGVjLgorICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCisgICAg
ICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShz
b2NrZXQsIGNoKQorICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVy
CisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9
IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZv
ciBoZWFkZXIgJworICAgICAgICAgICAgICAgICclcicgJSAoY2gsIG5hbWUsIHZhbHVlKSkKKyAg
ICAgICAgIyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0
IGhhcyB0aGUgbmFtZQorICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkg
aW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAjIGFycmF5IGFzIGEgVVRGLTgg
c3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZworICAgICAgICAjIG9idGFp
bmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0
ZQorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgZmllbGRzLnNldGRlZmF1bHQobmFtZS5kZWNv
ZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5hcHBlbmQodmFsdWUu
ZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKKyAgICByZXR1cm4gZmllbGRzCisKKworZGVmIF9yZWFkX25hbWUoc29ja2V0
KToKKyAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIG5h
bWUgPSBiJycKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQuMSAzNC4gcmVhZCBhIGJ5dGUg
ZnJvbSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisg
ICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUp
CisgICAgICAgIGVsaWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAgICAgcmV0dXJuIG5h
bWUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSArPSBjaAorCisKK2Rl
ZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKKyAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0
aGUgc2VydmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgcmV0dXJuIGNoCisKKworZGVmIF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gp
OgorICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIHZh
bHVlID0gYicnCisgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgorICAgIHdo
aWxlIFRydWU6CisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFs
dWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpCisKKworZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6CisKKyAgICBmaXJz
dF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkKKyAgICBmaW4gPSAoZmlyc3Rf
Ynl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCisgICAgcnN2
MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAm
IDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNvbmRfYnl0ZSA9IG9y
ZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3
KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgaWYg
bWFzayAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ01hc2sgYml0IG11c3QgYmUgMCBm
b3IgZnJhbWVzIGNvbWluZyBmcm9tIHNlcnZlcicpCisKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9
PSAxMjc6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygnIVEnLCBl
eHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPiAw
eDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0
LCAyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFIJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisKKyAgICByZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3Yz
LCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCisKKworY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgor
ICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJhd19zb2NrZXQpOgorICAgICAgICBzZWxmLl9zc2wgPSBzb2NrZXQuc3NsKHJhd19z
b2NrZXQpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9zc2wud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3NzbC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6Cisg
ICAgICAgICMgTm90aGluZyB0byBkby4KKyAgICAgICAgcGFzcworCisKK2NsYXNzIEh0dHBTdGF0
dXNFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIHVuZXhwZWN0ZWQgaHR0cCBzdGF0dXMgY29kZSB3YXMKKyAgICByZWNlaXZlZCBh
cyBhIHJlc3VsdCBvZiBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHN0YXR1cyk6CisgICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYp
Ll9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworY2xhc3Mg
V2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgorICAgICAgICAiIiJIYW5kc2hha2Ug
V2ViU29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFu
ZHNoYWtlIGZhaWxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0CisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMgPSBb
XQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAgICAgICAgZmllbGRz
LmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAg
ICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxz
KSkKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKKyAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
c2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorCisgICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5k
b20oMTYpCisgICAgICAgIGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfa2V5KSkK
KyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2NrZXQtS2V5OiAlc1xyXG4nICUga2V5
LmRlY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tl
dC1WZXJzaW9uOiAlZFxyXG4nICUgc2VsZi5fb3B0aW9ucy52ZXJzaW9uKQorCisgICAgICAgICMg
U2V0dGluZyB1cCBleHRlbnNpb25zLgorICAgICAgICBpZiBsZW4oc2VsZi5fb3B0aW9ucy5leHRl
bnNpb25zKSA+IDA6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zOiAlc1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2lu
KHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQorCisgICAg
ICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChmaWVsZC5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGIn
XHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hh
a2UgcmVxdWVzdCcpCisKKyAgICAgICAgZmllbGQgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAg
ICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNo
YWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGEg
VW5pY29kZURlY29kZUVycm9yIHdoZW4gdGhlIGRlY29kZSBmYWlscworICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoYidcclxuJyk6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcycgJSBmaWVsZC5kZWNvZGUoJ0xh
dGluLTEnKSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKGInW14gXSogKFteIF0qKSAuKicsIGZpZWxk
KQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVzJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpCisgICAgICAgIGNvZGUg
PSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCByZS5tYXRjaChiJ1swLTldWzAtOV1bMC05XSQn
LCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
SFRUUCBzdGF0dXMgY29kZSAlcyBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVz
JyAlCisgICAgICAgICAgICAgICAgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29k
ZSgnTGF0aW4tMScpKSkKKyAgICAgICAgaWYgY29kZSAhPSBiJzEwMSc6CisgICAgICAgICAgICBy
YWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQ
IHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXMgaW4gc3RhdHVzIGxpbmU6ICcKKyAgICAgICAg
ICAgICAgICAnJXInICUgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29kZSgnTGF0
aW4tMScpKSwKKyAgICAgICAgICAgICAgICBpbnQoY29kZSkpCisgICAgICAgIGZpZWxkcyA9IF9y
ZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCisKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFk
ZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICAjIENoZWNrIC9maWVsZHMvCisgICAgICAgIGlm
IGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1sndXBncmFkZSddKQorICAgICAgICBpZiBsZW4oZmllbGRzWydj
b25uZWN0aW9uJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011bHRpcGxl
IENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKKyAgICAgICAgaWYgZmllbGRzWyd1cGdyYWRlJ11b
MF0gIT0gJ3dlYnNvY2tldCc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmllbGRzWyd1cGdyYWRlJ11bMF0pCisgICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbidd
WzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQorCisgICAgICAgIGlmIGxlbihm
aWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFj
Y2VwdCddKQorCisgICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XVswXQorCisgICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVj
b2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAgICAgZXhjZXB0IFR5
cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICcgKyBhY2NlcHQpCisKKyAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
RGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25n
JykKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkKKworICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQgPSBzaGExKGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKKyAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2ViU29ja2V0
LUFjY2VwdDogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9h
Y2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQu
ZGVjb2RlKCdVVEYtOCcpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVk
KSAhPSAlciAnCisgICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVk
X2FjY2VwdCkpCisKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdl
dCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IFtdCisgICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9u
cygKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkK
KworICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhl
cmUgaXMgYW55IHVucmVjb2duaXplZAorICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9u
cyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCisgICAgICAgICMgZXh0ZW5zaW9u
cyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwg
YmUKKyAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgorICAgICAgICBmb3Ig
ZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBleHRlbnNp
b24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OOgorICAgICAgICAgICAg
ICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQorICAg
ICAgICAgICAgICAgIGlmIGNoZWNrZXI6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0
ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKKworCitjbGFzcyBXZWJT
b2NrZXRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJT
b2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29j
a2V0LCBoYW5kc2hha2UpOgorICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKKyAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQg
dG8gYXBwbGljYXRpb24gZGF0YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgorICAgICAgICBzZWxmLl9v
dXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1l
X2ZpbHRlciA9IE5vbmUKKworICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UKKworICAg
IGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBvcy51
cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJZgorICAgICAgICAj
IHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGlicmFyeSBjYWxsIHRo
YXQgZ2VuZXJhdGVzCisgICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkbyBy
YW5kb20gbnVtYmVyIHNlcXVlbmNlLgorICAgICAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRv
bSg0KQorICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KKyAgICAgICAgY291bnQgPSAw
CisgICAgICAgIGZvciBjIGluIGl0ZXJieXRlcyhzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodXRpbC5wYWNrX2J5dGUoYyBeIGluZGV4Ynl0ZXMobWFza2luZ19ub25jZSwgY291bnQpKSkK
KyAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKKyAg
ICAgICAgcmV0dXJuIGInJy5qb2luKHJlc3VsdCkKKworICAgIGRlZiBzZW5kX2ZyYW1lX29mX2Fy
Yml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAgICAgICBzZWxmLl9zb2NrZXQu
c2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCisKKyAgICBkZWYgc2VuZF9k
YXRhKHNlbGYsCisgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgbWFzaz1UcnVlLAorICAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAgICAgICAgICAgICAg
ICAgcnN2Mj0wLAorICAgICAgICAgICAgICAgICAgcnN2Mz0wKToKKyAgICAgICAgaWYgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGF5bG9hZCA9
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkKKworICAgICAgICBp
ZiBzZWxmLl9mcmFnbWVudGVkOgorICAgICAgICAgICAgb3Bjb2RlID0gT1BDT0RFX0NPTlRJTlVB
VElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQorCisg
ICAgICAgIGlmIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQorICAg
ICAgICAgICAgZmluID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZnJhZ21l
bnRlZCA9IFRydWUKKyAgICAgICAgICAgIGZpbiA9IDAKKworICAgICAgICBpZiBtYXNrOgorICAg
ICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1h
c2tfYml0ID0gMAorCisgICAgICAgIGhlYWRlciA9IHV0aWwucGFja19ieXRlKGZpbiA8PCA3IHwg
cnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2Fk
KQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6CisgICAgICAgICAgICBoZWFkZXIg
Kz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgZWxp
ZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6CisgICAgICAgICAgICBoZWFkZXIgKz0gdXRpbC5w
YWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAg
JyFIJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8
IDYzOgorICAgICAgICAgICAgaGVhZGVyICs9IHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI3
KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICchUScsIHBheWxvYWRfbGVuZ3RoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUb28gbG9uZyBwYXls
b2FkICglZCBieXRlKScgJSBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgaWYgbWFzazoKKyAgICAg
ICAgICAgIHBheWxvYWQgPSBzZWxmLl9tYXNrX2h5YmkocGF5bG9hZCkKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoaGVhZGVyICsgcGF5bG9hZCkKKworICAgIGRlZiBzZW5kX2JpbmFyeShz
ZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5kX2Rh
dGEocGF5bG9hZCwgT1BDT0RFX0JJTkFSWSwgZW5kLCBtYXNrKQorCisgICAgZGVmIHNlbmRfdGV4
dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5k
X2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisK
KyAgICBkZWYgX2Fzc2VydF9yZWNlaXZlX2RhdGEoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMpOgorICAgICAgICAoYWN0dWFsX2ZpbiwgYWN0dWFsX3JzdjEsIGFj
dHVhbF9yc3YyLCBhY3R1YWxfcnN2MywgYWN0dWFsX29wY29kZSwKKyAgICAgICAgIHBheWxvYWRf
bGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVhZGVyKHNlbGYuX3NvY2tldCkKKworICAgICAgICBpZiBh
Y3R1YWxfb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5l
eHBlY3RlZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkKKworICAgICAgICBp
ZiBhY3R1YWxfZmluICE9IGZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmluLCBhY3R1YWxfZmluKSkKKworICAgICAgICBpZiByc3YxIGlzIE5v
bmU6CisgICAgICAgICAgICByc3YxID0gMAorCisgICAgICAgIGlmIHJzdjIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJzdjIgPSAwCisKKyAgICAgICAgaWYgcnN2MyBpcyBOb25lOgorICAgICAgICAg
ICAgcnN2MyA9IDAKKworICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSByc3YxOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIg
KGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2MSwgYWN0dWFsX3Jz
djEpKQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJzdjI6CisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCisK
KyAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2MzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKKworICAgICAg
ICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkK
KworICAgICAgICBpZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIo
cmVjZWl2ZWQpCisKKyAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
cGF5bG9hZCBsZW5ndGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAobGVuKHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKKworICAgICAgICBpZiBwYXls
b2FkICE9IHJlY2VpdmVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQorCisgICAgZGVmIGFzc2Vy
dF9yZWNlaXZlX2JpbmFyeShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5
bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1PUENPREVfQklOQVJZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29kZSwgZmluLCByc3Yx
LCByc3YyLCByc3YzKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz
djM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNv
ZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgX2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYs
IGNvZGUsIHJlYXNvbiwgbWFzayk6CisgICAgICAgIGZyYW1lID0gdXRpbC5wYWNrX2J5dGUoMSA8
PCA3IHwgT1BDT0RFX0NMT1NFKQorCisgICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24uZW5jb2RlKCd1
dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBib2R5ID0gYicnCisgICAgICAgIGlm
IG1hc2s6CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZSgxIDw8IDcgfCBsZW4o
Ym9keSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZShsZW4oYm9keSkpICsgYm9keQorICAgICAgICByZXR1
cm4gZnJhbWUKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6CisgICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJl
YXNvbiwgVHJ1ZSkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZSwg
cmVhc29uKToKKyAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIEZhbHNlKQorICAgICAgICBhY3R1YWxfZnJhbWUgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKKyAgICAgICAgaWYgYWN0dWFs
X2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAor
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2ZyYW1lLCBhY3R1YWxf
ZnJhbWUpKQorCisKK2NsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJIb2xkcyBv
cHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCisgICAgICAgIHNlbGYu
c2VydmVyX2hvc3QgPSAnJworICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCisgICAgICAgIHNlbGYu
cmVzb3VyY2UgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKKyAgICAgICAgc2Vs
Zi5zb2NrZXRfdGltZW91dCA9IDEwMDAKKyAgICAgICAgc2VsZi51c2VfdGxzID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KKworCitkZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9y
ZXRyeShob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VfdGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk9MTAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGVlcF9zZWM9MC4xKToKKyAgICByZXRyeV9j
b3VudCA9IDAKKyAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQo
dGltZW91dCkKKyAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCisgICAgICAgICAg
ICBpZiB1c2VfdGxzOgorICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29ja2V0KHMpCisgICAg
ICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAg
ICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKKyAgICAgICAgICAgICAg
ICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXRyeV9jb3VudCA9
IHJldHJ5X2NvdW50ICsgMQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xlZXBfc2VjKQor
CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBDbGllbnQob2JqZWN0KToKKyAgICAiIiJXZWJT
b2NrZXQgY2xpZW50LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hh
a2UsIHN0cmVhbV9jbGFzcyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAg
IHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hh
a2UKKyAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNzCisKKyAgICBkZWYg
Y29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0
aF9yZXRyeShzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zb2NrZXRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAgICAgc2VsZi5faGFu
ZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgc2VsZi5fc3RyZWFtID0g
c2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQorCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKKworICAgIGRl
ZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBi
b2R5KQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICAgYmluYXJ5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcmF3PUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKToKKyAgICAgICAgaWYgYmluYXJ5OgorICAgICAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKKyAgICAg
ICAgZWxpZiByYXc6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2Us
IE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW0uc2VuZF90ZXh0KG1lc3NhZ2UsIGVuZCwgbWFzaykKKworICAgIGRlZiBhc3NlcnRf
cmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBiaW5hcnk6
CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
dGV4dChwYXlsb2FkKQorCisgICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3Nl
KGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2Rl
PVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAgICAgICAgc2VsZi5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBjbG9zZV9zb2Nr
ZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0
X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFk
X2RhdGEgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCisgICAgICAgICAgICAg
ICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5n
dGggJworICAgICAgICAgICAgKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKKyAg
ICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5S
RVNFVCddOgorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX251bWJlciA9PSBnZXRhdHRy
KGVycm5vLCBlcnJvcl9uYW1lKSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICBy
YWlzZSBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25uZWN0aW9uIGlzIG5vdCBjbG9z
ZWQgKFJlYWQ6ICVyKScgJSByZWFkX2RhdGEpCisKKworZGVmIGNyZWF0ZV9jbGllbnQob3B0aW9u
cyk6CisgICAgcmV0dXJuIENsaWVudChvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9u
cyksIFdlYlNvY2tldFN0cmVhbSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWFlZjUyZWNmMDE5N2Y3ZTU3ZjM0NmE3MTU0ODI1MmEzODYx
ZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5CkBA
IC0wLDAgKzEsMjI3IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1vY2tzIGZvciB0ZXN0aW5nLgor
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4
Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2l4
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitjbGFzcyBfTW9ja0Nvbm5CYXNlKG9iamVjdCk6
CisgICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8g
YSAobW9jaykgbXBfY29ubi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQorICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gYidm
YWtlX2FkZHJlc3MnCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk92
ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuCisKKyAgICAgICAgZGF0YSBz
aG91bGQgYmUgYnl0ZXMgd2hlbiB0b3VjaGluZyB0aGlzIG1ldGhvZCBtYW51YWxseS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKKworICAgIGRl
ZiB3cml0dGVuX2RhdGEoc2VsZik6CisgICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRo
aXMgbW9jay4iIiIKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5fd3JpdGVfZGF0YSkK
KworCitjbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJNb2NrIGZvciBtb2Rf
cHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNp
Znkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxs
IGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVhZF9kYXRhKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5j
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNo
b3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCisgICAgICAgICAgICBjYWxs
ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikK
KyAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCisgICAgICAgIHNlbGYuX3JlYWRf
cG9zID0gMAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgorCisgICAgICAgIGlmIHNlbGYu
X3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAgcmV0dXJuIGIn
JworICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZChiJ1xuJywgc2VsZi5f
cmVhZF9wb3MpICsgMQorICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAgICAgICAgICAgZW5k
X2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRf
dXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAg
IGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAg
cmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSks
IHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90
byhlbmRfaW5kZXgpCisKKyAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToKKyAg
ICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCisg
ICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4CisgICAgICAgIHJldHVybiBsaW5lCisK
KworY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJCbG9ja2lu
ZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVz
IHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nv
bm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICBD
YWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBh
dmFpbGFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBfTW9j
a0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVz
LnF1ZXVlLlF1ZXVlKCkKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3Zl
cnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKKyAgICAgICAgbGlu
ZSA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2Vs
Zi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpCisgICAgICAgICAgICBp
ZiBjID09IG9yZChiJ1xuJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKGxpbmUpCisK
KyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0
aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9IGJ5dGVhcnJheSgp
CisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgIGRhdGEu
YXBwZW5kKHNlbGYuX3F1ZXVlLmdldCgpKQorCisgICAgICAgIHJldHVybiBieXRlcyhkYXRhKQor
CisgICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIiIlB1dCBieXRlcyB0
byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBi
eXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIGJ5dGUg
aW4gc2l4Lml0ZXJieXRlcyhieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoYnl0
ZSkKKworCitjbGFzcyBNb2NrVGFibGUoZGljdCk6CisgICAgIiIiTW9jayB0YWJsZS4KKworICAg
IFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBvbmx5IHRoZSBtZXRo
b2RzIHVzZWQgYnkKKyAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KKyAgICAiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5
X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29weV9mcm9tID0gbGlzdChjb3B5X2Zyb20uaXRl
bXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgorICAgICAgICAgICAg
c2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYs
IGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fZ2V0aXRlbV9f
KGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgor
ICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtleS5sb3dlcigpLCB2
YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9uZSk6CisgICAgICAg
IHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIoKSwgZGVmX3ZhbHVl
KQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTW9jayByZXF1ZXN0Lgor
CisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICB1cmk9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgaGVhZGVyc19pbj17fSwKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1Ob25lLAorICAg
ICAgICAgICAgICAgICBtZXRob2Q9J0dFVCcsCisgICAgICAgICAgICAgICAgIHByb3RvY29sPSdI
VFRQLzEuMScsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToKKyAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAg
IHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVz
dCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0
aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCisgICAgICAg
ICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCisKKyAgICAg
ICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCisg
ICAgICAgICIiIgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLnVucGFyc2Vk
X3VyaSA9IHVyaQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAg
IHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAor
ICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKKyAgICAgICAg
IyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBh
dm9pZCBuYW1lCisgICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlz
IG5hbWVkIGFzIHN1Y2guCisgICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKKyAgICAg
ICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW0oc2VsZiwgU3RyZWFtT3B0aW9ucygpKQorICAgICAg
ICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29u
ID0gTm9uZQorICAgICAgICBzZWxmLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xB
VEVTVAorICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQorCisgICAgZGVmIGlzX2h0dHBz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXworCisKK2NsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6CisgICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtl
X2NhbGxlZCA9IEZhbHNlCisKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5f
Y29udGV4dCk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUK
KworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHBh
c3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjIyMDE1NTM5ZTQ3ZmRmNTE4ODc1MTU4ZjZiZDZmMzY5OTRmYWJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5CkBAIC0wLDAgKzEs
ODcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSdW4g
YWxsIHRlc3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworVGhpcyBzdWl0ZSBpcyBleHBlY3Rl
ZCB0byBiZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5LCBpLmUuIHRoZQor
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBldGMuCisKK1RvIGNo
YW5nZSBsb2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVsIG9wdGlvbi4KKyAg
ICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZworCitUbyBwYXNzIGFu
eSBvcHRpb24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBvcHRpb25zIGFmdGVy
ICctLScuIEZvcgorZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUgdGVzdCBydW5uZXIg
dmVyYm9zZS4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZyAt
LSAtdgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK19URVNUX01PRFVMRV9QQVRURVJOID0gcmUuY29tcGls
ZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9kdWxlcyhkaXJlY3Rv
cnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3Rk
aXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVfUEFUVEVSTi5zZWFy
Y2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgbW9kdWxlX25hbWVz
LmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25hbWVzCisKKworZGVm
IF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgIHJldHVy
biBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMo
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLicpKSkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cigpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWxvZy1sZXZlbCcsCisgICAg
ICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGRlc3Q9
J2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnLAorICAgICAgICBjaG9pY2Vz
PVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwn
XSkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwu
dXBwZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKXMg
JShhc2N0aW1lKXMgJworICAgICAgICAgICAgICAgICAgICAgICAgJyUoZmlsZW5hbWUpczolKGxp
bmVubylkXSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQorICAgIHVuaXR0ZXN0Lm1haW4o
ZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBdXSArIGFyZ3MpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lz
X3BhdGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZmNlN2IzNGI2NzUxZDYzNWRjZGE2ZTBkNGE1NzExOTUxYTBhMzNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkKQEAgLTAsMCAr
MSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nLgor
CitUZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBtb2R1bGUgYmVmb3JlIG1vZF9weXdlYnNv
Y2tldC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IG9zCitpbXBvcnQgc3lzCisKKyMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5w
YXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgorc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlNjM5ODBmMjU4MWY5ZjYxMzZlODVkYzE2YmI2NGNjYmUzNzNkYzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKQEAg
LTAsMCArMSwyOTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSB0ZXN0IGltcG9ydCBtb2NrCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlwCisKK19URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGgu
am9pbigKKyAgICBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJywgJ2hhbmRs
ZXJzJykKKworX1RFU1RfSEFORExFUlNfU1VCX0RJUiA9IG9zLnBhdGguam9pbihfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInKQorCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkaXNwYXRjaCBtb2R1bGUuIiIiCisgICAgZGVm
IHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxh
Y2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxh
XFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFi
c3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5f
bm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQorCisgICAgZGVmIHRl
c3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRl
X3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAgICAgICAgIyBQeXRob24gYnVp
bHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCku
CisgICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNp
bmcgcmVhbHBhdGgoKSBhbmQgdXNlcworICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRy
aXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCisgICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRo
LnJlYWxwYXRoKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIo
b3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Mv
aCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQorCisg
ICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252
ZXJ0ZXIoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhL2IvaF93
c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3Rv
X3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1h
bGl6ZV9wYXRoKCcvYS9iLy4uL2IvaF93c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0g
ZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigKKyAgICAgICAgICAg
ICcvYS8uLi9hL2IvLi4vYi8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRp
c3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3No
LnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3Qg
KyByJ2EvYi9oX3dzaC5weScpKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmls
ZV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBsaXN0KAorICAgICAgICAgICAgZGlzcGF0
Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKKyAg
ICAgICAgcGF0aHMuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhz
KSkKKyAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwKKyAgICAgICAgICAg
IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSwKKyAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3No
LnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5w
eScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1Yics
ICdub25fY2FsbGFibGVfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
d3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICBdCisgICAgICAgIGZvciBleHBl
Y3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc291cmNl
X2hhbmRsZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9z
b3VyY2VfaGFuZGxlcl9maWxlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0
Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNo
Ll9zb3VyY2VfaGFuZGxlcl9maWxlLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKAorICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUoCisgICAgICAg
ICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KTpwYXNz
XG4nCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6cGFzc1xuJykpCisKKyAgICBkZWYgdGVzdF9zb3VyY2Vfd2FybmluZ3Moc2VsZik6CisgICAg
ICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKKyAgICAgICAgd2FybmluZ3MgPSBkaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCisg
ICAgICAgIHdhcm5pbmdzLnNvcnQoKQorICAgICAgICBleHBlY3RlZF93YXJuaW5ncyA9IFsKKyAg
ICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdibGFua193c2gucHknKSkKKyAgICAgICAgICAgICArICc6IHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgKG9zLnBhdGgucmVh
bHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwg
J3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpCisgICAgICAgICAgICAgKyAnOiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisgICAgICAgICAgICAo
b3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAgIChvcy5wYXRoLnJl
YWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2ln
X3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlz
IG5vdCBkZWZpbmVkLicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwg
bGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVj
dGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAg
ICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qu
d3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKKyAgICAgICAgZGlzcGF0Y2hlci5kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgorCisg
ICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNl
cHRpb24gd2l0aCA0MDMgc3RhdHVzJykKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDAzLCBlLnN0
YXR1cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5m
YWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0
X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5
X3VzZXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJh
X2hhbmRzaGFrZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJworICAgICAgICByZXF1
ZXN0LndzX3Byb3RvY29sID0gJ3AxJworICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInb3JpZ2lu
X2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAxJworICAgICAgICAg
ICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29u
bmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAz
XHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9
ICcvc3ViL3BsYWluPycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluPywgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAy
XHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluP3E9
dicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluP3E9diwg
Tm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxl
cihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gWworICAgICAgICAg
ICAgICAgICcvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLCAnL3N1Yi9ub193c2hfYXRfdGhl
X2VuZCcsCisgICAgICAgICAgICAgICAgJy9kb2VzL25vdC9leGlzdCcKKyAgICAgICAgXToKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJycpKQorICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0
Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyKGUp
LmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInJykpCisgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWls
KCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKAorICAgICAgICAgICAgICAgIHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0x
LAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkKKworICAg
IGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIg
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNl
ID0gJy9hYm9ydF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2Uu
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2Vs
Zik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5fY2hlY2snIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAg
ICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgorICAgICAg
ICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hB
TkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnL29yaWdpbl9jaGVj
aycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1Yi9wbGFpbicgaW4gZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9v
dChzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExF
UlNfU1VCX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFO
RExFUlNfU1VCX0RJUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcvb3JpZ2luX2NoZWNr
JyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9zdWIvcGxhaW4nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9leGNlcHRp
b25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBk
ZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6CisgICAgICAgIGRpc3BhdGNo
LkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCisgICAgICAgIGRpc3BhdGNoLkRpc3Bh
dGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhk
aXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guRGlzcGF0Y2hlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EvYi9jJywgJ2EvYicpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJj
ZV9wYXRoX2FsaWFzKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihf
VEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcv
b3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBk
aXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvc3ViL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25vdC1leGlzdCcpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQ1ZDI5YzY3ZGRmMDdiM2YxMjMyNDU5NzdmOTVjZmUwMTQ4YzgzYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpAQCAt
MCwwICsxLDYzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitp
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3RpbmcKKwor
IyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xv
c2luZyBoYW5kc2hha2UKK19HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKKworX1NFUlZFUl9X
QVJNVVBfSU5fU0VDID0gMC4yCisKKworIyBUZXN0IGJvZHkgZnVuY3Rpb25zCitkZWYgX2VjaG9f
Y2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xp
ZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0
JykKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKKyAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5l
Y3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5
KGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2Fn
ZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShiJ2Jp
bmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoYidceDAwXHg4MFx4
ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUo
YidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKworICAgIGNsaWVudC5z
ZW5kX2Nsb3NlKCkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2dvb2RieWUoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rl
c3QnKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZShfR09PREJZRV9NRVNTQUdFKQorICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZShfR09PREJZRV9NRVNTQUdFKQorCisgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfY29kZV9hbmRfcmVhc29uKGNsaWVudCwgY29kZSwgcmVhc29uKToKKyAgICBjbGllbnQu
Y29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9jbG9zZShjb2RlLCByZWFzb24pCisgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGNsaWVudC5hc3Nl
cnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJv
Y2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRf
bWVzc2FnZSgndGVzdCcsIG1hc2s9RmFsc2UpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IsICcnKQorCisgICAg
Y2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworY2xhc3MgRW5kVG9FbmRUZXN0
QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVu
ZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCisgICAgc2VydmVyIGFz
IGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90
ZXN0aW5nCisgICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJl
Y3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKKyAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVy
IGEgVENQIGNvbm5lY3Rpb24uCisgICAgIiIiCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKKyAgICAgICAgb3MucHV0
ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBhdGgpKQorICAgICAg
ICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdt
b2RfcHl3ZWJzb2NrZXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc3RhbmRhbG9uZS5weScpCisgICAgICAgIHNlbGYuZG9jdW1lbnRfcm9vdCA9IG9z
LnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFtcGxlJykKKyAgICAgICAgcyA9IHNvY2tldC5z
b2NrZXQoKQorICAgICAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgKF8sIHNl
bGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBzLmNsb3NlKCkKKworICAg
ICAgICBzZWxmLl9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQor
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKKyAgICAgICAg
c2VsZi5fb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKKyAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKKworICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9wb3J0ID0gc2VsZi50ZXN0X3BvcnQKKworICAgICMgVE9ETyh0eW9zaGlubyk6IFVzZSB0ZWFy
RG93biB0byBraWxsIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX3J1bl9weXRob25fY29tbWFuZChz
ZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKKworICAgIGRlZiBfcnVuX3NlcnZlcihzZWxmKToK
KyAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kLCAn
LUgnLCAnbG9jYWxob3N0JywgJy1WJywgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAnLXAnLAor
ICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1QJywKKyAgICAgICAgICAgIHN0cihz
ZWxmLnRlc3RfcG9ydCksICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdAorICAgICAgICBdCisKKyAg
ICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9nZ2VyIGJ5IHRlc3Qg
cnVubmVyLgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAg
ICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICBp
ZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1sb2ctbGV2ZWwnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2luZy5nZXRMZXZlbE5h
bWUobG9nX2xldmVsKS5sb3dlcigpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3RkZXJyPXNlbGYuc2VydmVyX3N0ZGVycikKKworICAgIGRlZiBfY2xv
c2Vfc2VydmVyKHNlbGYsIHNlcnZlcik6CisgICAgICAgICIiIgorCisgICAgICAgIFRoaXMgbWV0
aG9kIG1pbWljcyBQb3Blbi5fX2V4aXRfXyB0byBncmFjZWZ1bGx5IGtpbGwgdGhlIHNlcnZlciBw
cm9jZXNzLgorICAgICAgICBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIG1haW50YWluIGNvbXB0YWli
aWxpdHkgYmV0d2VlbiBweXRob24gMiBhbmQgMywKKyAgICAgICAgc2luY2UgUG9wZW4gaW4gcHl0
aG9uIDIgZG9lcyBub3QgaGF2ZSBfX2V4aXRfXyBhdHRyaWJ1dGUuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHNlcnZlci5raWxsKCkKKworICAgICAgICBpZiBzZXJ2ZXIuc3Rkb3V0OgorICAgICAg
ICAgICAgc2VydmVyLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZlci5zdGRlcnI6Cisg
ICAgICAgICAgICBzZXJ2ZXIuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VydmVyLnN0ZGlu
OgorICAgICAgICAgICAgc2VydmVyLnN0ZGluLmNsb3NlKCkKKworICAgICAgICBzZXJ2ZXIud2Fp
dCgpCisKKworY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKKwor
ICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1bmN0aW9u
LCBvcHRpb25zKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2ljIHRvIHBv
bGwgdGhlIHNlcnZlciB1bnRpbCBpdAorICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAg
Y2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKyAgICAg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQor
CisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgc2VsZi5f
cnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25z
KQorCisgICAgZGVmIF9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qoc2VsZiwgb2ZmZXIsIHJl
c3BvbnNlX2NoZWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zICs9IG9mZmVyCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZSA9IHJlc3BvbnNlX2NoZWNr
ZXIKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50
KHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjbGll
bnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0X2Z1bmN0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKworICAgICAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorICAgICAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKyAgICBk
ZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rp
b24sIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFzb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAg
ICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29w
dGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihj
bGllbnQsIGNvZGUsIHJlYXNvbikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190
ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNy
ZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0
Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCisgICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90
ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2Vw
dGlvbicpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jbG9z
ZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2Vy
dmVyKHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAgICAgIHNlbGYuX3J1
bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5
KHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0
aF9iaW5hcnkpCisKKyAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKKyAgICAg
ICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKKwor
ICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVz
dChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQorCisgICAgZGVmIHRlc3RfZWNob19w
ZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcK
KyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEp
CisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKwor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFtZXMoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9k
YXRhKGInXHhmMlx4NDhceGNkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4XHhjZFx4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVyLmdldF9wYXJh
bWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsn
cGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3Rf
ZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5z
ZW5kX2RhdGEoYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4
XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAg
ICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAg
IGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAg
ICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJh
bWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVy
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0
ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Cisg
ICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAg
Y2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDAwXHgxMVx4
MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmlu
YXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRf
cmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4
MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFy
YW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
KyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3ByZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGIn
XHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxs
bywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwgcmVzcG9uc2VfY2hlY2tlciwK
KyAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVj
LgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2Vk
X2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5h
cnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJz
djE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tl
cihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Wygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsKKyAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcKKyAgICAgICAgICAg
ICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICAgICAgXSwgcmVzcG9uc2VfY2hlY2tl
ciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRl
X3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNw
b25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNl
bGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKKyAgICAgICAgICAg
IHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Bl
cm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgor
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRl
JykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAg
ICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAw
J10sCisgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVy
KHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2Fn
ZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qo
WydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAg
ICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAgc2VsZi5fcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQorCisg
ICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6CisgICAgICAgIHNl
bGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJworICAgICAgICBzZWxmLl9ydW5fY2xvc2Vf
d2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKKyAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCisKKyAgICBkZWYgdGVzdF9jbG9z
ZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2Vy
dmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJvciBzdGF0dXMKKyAgICAg
ICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNvbWUgcHJvdG9jb2wgZXJy
b3IuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAg
ICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBm
cmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRhdGlvbgorICAgICAg
ICAgICAgIyBmcmFtZS4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFy
eV9ieXRlcyhiJ1x4ODBceDgwJywgJycpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQorCisg
ICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6CisgICAgICAgICIi
IlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0
ZWQgb3BlcmF0aW9uCisgICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBk
YXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCisgICAgICAgIG5vdCBzdXBwb3J0ZWQg
YnkgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICMgVGV4
dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Zy
YW1lX29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4OTFceDgwJywgJycpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0
aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRl
c3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlkX2ZyYW1lKHNlbGYp
OgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAorICAgICAgICBkYXRhIHN0YXR1cyBjb2RlIHdoZW4g
dGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFpbmluZworICAgICAg
ICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgorICAgICAgICAg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZShiJ1x4ODAnLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5h
bF9lbmRwb2ludF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVy
IHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRwb2ludAorICAgICAgICBlcnJv
ciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJhdGlvbi4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJy
b3InCisKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAg
ICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFsaWQgYWJzb2x1dGUg
dXJpIGhhbmRsaW5nIGxpa2UKKyAgICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBp
bnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBvcnQKKyAgICAjIG51bWJlciku
CisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGFi
c29sdXRlIHVyaSByZXF1ZXN0LiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25z
CisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBv
cHRpb25zLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29w
dGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQorCisgICAgZGVmIHRlc3Rfb3Jp
Z2luX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdp
biBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAg
ICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAgICAgIyBTZXJ2ZXIg
c2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxsYmFjay4gVGhpcyB3YXJuaW5n
CisgICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxvd2luZyBwaXBlIGRpc3Bvc2Vz
IHdhcm5pbmcgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IHN1YnByb2Nl
c3MuUElQRQorICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQw
MykKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6CisgICAgICAgICIiIlRlc3Rz
IGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9IDk5CisgICAgICAg
IHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAwKQorCisKK2NsYXNzIEVu
ZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgorICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQorCisgICAgZGVm
IF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBlY3RlZCwgc3Rkb3V0
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmRh
dGEpOgorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAg
ICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAgICAgaWYgc3RkZXJy
ZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3Rl
ZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKKworICAgIGRlZiB0ZXN0X2V4YW1wbGVf
ZWNob19jbGllbnQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50
LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgorCisgICAgICAgIHNlcnZl
ciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNs
ZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50X2NvbW1hbmQg
PSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZWNob19jbGllbnQucHknKQorCisgICAgICAgICAg
ICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMuCisgICAgICAgICAg
ICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQgY2xvc2VcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdSZWN2IGFja1xuJykKKworICAgICAgICAgICAgYXJncyA9IFtj
bGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpXQorICAg
ICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xp
ZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19j
bGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQorCisg
ICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5
bG9hZCBsZW5ndGggaXMgdXNlZC4KKyAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBh
eWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCisgICAgICAgICAgICAj
IGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkg
c2V0LgorICAgICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0CisgICAgICAgICAgICBh
cmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAnLAorICAgICAgICAg
ICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy1tJywgYmlnX21lc3NhZ2UK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29t
bWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgc3Rkb3V0ZGF0
YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleHBlY3Rl
ZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5SZWN2IGFja1xuJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19tZXNzYWdlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGV4cGVjdGVkLCBzdGRv
dXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkZXJyZGF0YSkKKworICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxh
dGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICBjbGll
bnRfY29tbWFuZCwgJy1wJywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCksICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGll
bnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4
dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWExMTE4ODhiZTkwMDViZDdiNjg0MzY2YWViZmQxZDkxNGY0YTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkK
QEAgLTAsMCArMSwxOTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6bGliCisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZXh0ZW5zaW9ucworCisKK2NsYXNzIEV4dGVuc2lv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBub24tY2xh
c3MgbWV0aG9kcyBpbiBleHRlbnNpb25zLnB5IiIiCisgICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93
X2JpdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVu
c2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnIDggJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzkuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
LTgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
MTYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMDAwMDAwJykK
KworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvclBhcnNpbmdUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcworICAgIGdpdmVuIGV4
dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRlZiB0ZXN0X3JlZ2lz
dHJ5KHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25f
cHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxm
KToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoemxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9y
ZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
cm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICBk
ZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKKyAgICAgICAgcGFyYW1l
dGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAg
ICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAn
MTAnKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVy
bWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQorCisg
ICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX21h
eF93aW5kb3dfYml0cycsICcwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6
CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAg
cGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRl
JykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgcmVzcG9uc2Ug
PSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRl
eHRfdGFrZW92ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92
ZXJfd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2JhcicpCisgICAgICAg
IHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25f
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignZm9vJywgJ2JhcicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKworY2xh
c3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGluZ1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCisgICAgYSByZXNwb25zZSBiYXNl
ZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCisgICAgIiIiCisgICAgZGVmIHRlc3Rf
cmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkK
KyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93
aW5kb3dfYml0cygxMCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZs
YXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVu
dF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4
X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2VsZik6CisgICAgICAgIHBy
b2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Io
CisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxh
dGUnKSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQor
CisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQor
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X3Jlc3Bv
bnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigK
KyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX2ZhbHNlX2Zv
cl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAgICAg
cHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihGYWxzZSkKKworICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygp
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQor
CisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9oYW5kc2hha2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwZTIyNzhkZmU2NTAxOWQ3NjU5NDg5YjUzOGZjYzg1YWQ1N2Q0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5z
aW9uUGFyYW1ldGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2Vf
ZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKKworCitjbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29s
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVf
c3VicHJvdG9jb2wgbWV0aG9kLiIiIgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29s
KHNlbGYpOgorICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgorICAgICAgICB2YWxpZGF0ZV9zdWJw
cm90b2NvbCgnc2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScp
CisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKQorCisg
ICAgICAgICMgU2hvdWxkIGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3RvY29sLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb24s
CisgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAgICAgICMgIkphcGFu
IiBpbiBKYXBhbmVzZQorICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQorCisKK19URVNUX1RP
S0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCisgICAg
KCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFy
PWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdmb287IGJhcj1iYXo7
IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6Jyld
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXInLCBbKCdjZHInLCBOb25l
KV0pXSksCisgICAgKCdhLCBiLCBjLCBkJywgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBb
XSksICgnZCcsIFtdKV0pLAorXQorCitfVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisg
ICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCisgICAgKCdmb287
IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAorICAgICgnZm9v
OyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKKyAgICAoJ2Zv
bzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSks
CisgICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicp
XSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAg
ICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAorICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2Zv
bycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBb
KCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygn
Zm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2Zvbycs
IFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCitdCisKK19URVNUX1JFRFVOREFOVF9R
VU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiIn
LCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCitdCisKKworY2xhc3MgRXh0ZW5zaW9u
c1BhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAgIiIiVmVy
aWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZl
IHRoZQorICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4
cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgorICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0
ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQorICAgICAgICBwYXJhbWV0
ZXIgZGljdGlvbmFyeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIGZvciBleHBlY3Rl
ZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAgICAgICAg
ICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYp
OgorICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tF
Tl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlz
dChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9x
dW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRp
b24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgorICAgICAgICBmb3IgKGZvcm1h
dHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5U
X1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIChmb3JtYXR0ZWRf
c3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9U
RURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xp
c3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2Vf
YmFkX2RhdGEoc2VsZik6CisgICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQSA9IFsKKyAg
ICAgICAgICAgICgnZm9vOyA7ICcpLAorICAgICAgICAgICAgKCdmb287IGEgYScpLAorICAgICAg
ICAgICAgKCdmb28gZm9vJyksCisgICAgICAgICAgICAoJywsLCcpLAorICAgICAgICAgICAgKCdm
b287IGJhcj0nKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwKKyAgICAgICAgICAg
ICgnZm9vOyBiYXI9ImFcciInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9IlxcXHhmZiInKSwK
KyAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCisgICAgICAgIF0KKworICAgICAgICBmb3Ig
Zm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRl
bnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX3N0cmluZykK
KworCitjbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRf
c3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVm
aW5pdGlvbnM6CisgICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlv
bgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lv
bnMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigp
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hh
bmRzaGFrZV9oeWJpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ODQxZjFmNzlmYTg5ZjAzZjBlMDIxOWUwNmIy
MTNjMzRmNWYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkucHkKQEAgLTAsMCArMSw0MjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4i
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0
dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Lmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKKworZnJvbSB0ZXN0IGltcG9ydCBtb2NrCisKKworY2xh
c3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBob2xkaW5n
IGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZvcgorICAg
IHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgorICAgICAgICBzZWxmLm1l
dGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLmhlYWRl
cnMgPSBoZWFkZXJzCisKKworZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgorICAgIHJl
dHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKKyAgICAgICAgJ0dFVCcsICcvZGVtbycsIHsKKyAgICAg
ICAgICAgICdIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnVXBncmFk
ZSc6ICd3ZWJzb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCisg
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09
JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAorICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIH0pCisKKworZGVmIF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oYicn
KQorICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmLnVyaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVmLmhlYWRlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3Jl
YXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6CisgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgIHJldHVybiBoYW5kc2hha2VyCisKKwor
Y2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRp
c3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnBy
b3RvY29sCisgICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBn
aXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKKyAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMg
bmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJvdG9jb2wuCisgICAg
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlPU5vbmUpOgor
ICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0g
ZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2Nv
bnRleHQpOgorICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6CisgICAgICAgICAgICBjb25uX2Nv
bnRleHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVkX3Byb3RvY29sc1sK
KyAgICAgICAgICAgICAgICBzZWxmLmluZGV4XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y29ubl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVlCisKKyAgICBkZWYg
dHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworY2xh
c3MgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitj
bGFzcyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRpc3BhdGNoZXIgZm9y
IHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9uIGluCisgICAgZG9f
ZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBkZWYg
ZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVl
c3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAg
ICAgcGFzcworCisKK2NsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6CisgICAg
IiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCisg
ICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0
IHRoZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwg
Y29ubl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4g
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShz
ZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworX0VYUEVDVEVEX1JFU1BPTlNF
ID0gKAorICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIGIn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwor
ICAgIGInU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1c
clxuXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2Nv
bC0wNiBhbmQgbGF0ZXIKKyAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgorICAgICIiIgorICAgIGRl
ZiB0ZXN0X2RvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSkKKyAgICAgICAgZGlzcGF0Y2hlciA9IG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKQorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxl
ZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
ZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCisKKyAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgICMgQWRkIGhl
YWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScKKyAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCisKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVf
aGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9j
YXBpdGFsaXplZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWyd1cGdyYWRlJ10g
PSAnV0VCU09DS0VUJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VQR1JBREUnCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BP
TlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAn
CisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVE
X1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0
J3Mgbm90IGNhdWdodCBieQorICAgICAgICAjIGRvX2hhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbChzZWxmKToK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hhdCwg
c3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIFN1YnByb3RvY29s
Q2hvb3NpbmdEaXNwYXRjaGVyKDApKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgp
CisKKyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAgICBiJ0hUVFAvMS4x
IDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGInVXBncmFkZTogd2Vi
c29ja2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAg
ICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5c
clxuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm90
b2NvbENob29zaW5nRGlzcGF0Y2hlcigtMSwgJ2Zvb2JhcicpKQorICAgICAgICAjIE5vIHJlcXVl
c3QgaGFzIGJlZW4gbWFkZSBidXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5kc2hha2VFeGNlcHRp
b24KKyAgICAgICAgIyBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3NlbGVjdGlvbihzZWxm
KToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hh
dCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgIyB3c19wcm90b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24gbXVz
dCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXInKQorCisgICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0g
KAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisg
ICAgICAgICAgICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgICAgICAgICBiJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJworICAgICAgICAgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9uczogJworICAgICAgICAgICAgYidwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKKyAgICAgICAgICAgIGInXHJcbicpCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9O
U0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAgICAgICAgZXh0ZW5zaW9u
ID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sIGV4dGVuc2lvbi5uYW1lKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBleHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLCByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZSwg
LCAnCisgICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAg
IFxcXHJmICAiOyBwdj1ucnQnKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKKyAgICAg
ICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQorICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9uc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtub3duJywg
c2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydlJywg
J21hJywgJ3B2J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kX2V4dGVuc2lvbi5n
ZXRfcGFyYW1ldGVyX25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBz
ZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J21hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24u
Z2V0X3BhcmFtZXRlcl92YWx1ZSgncHYnKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlW
YWx1ZSddID0gJycKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1
ZScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAg
ICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCisgICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVl
JywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQorCisgICAgZGVmIHRlc3RfYWJv
cnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbi4g
Q2hlY2sgdGhhdCBpdCdzCisgICAgICAgICMgbm90IGNhdWdodCBieSBkb19oYW5kc2hha2UuCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNlbGYpOgorICAg
ICAgICBiYWRfY2FzZXMgPSBbCisgICAgICAgICAgICAoJ0hUVFAgcmVxdWVzdCcsCisgICAgICAg
ICAgICAgUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgICdHRVQnLCAnL2RlbW8n
LCB7CisgICAgICAgICAgICAgICAgICAgICAnSG9zdCc6CisgICAgICAgICAgICAgICAgICAgICAn
d3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgorICAg
ICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBP
UyBYIDEwLjU7JworICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vj
a28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKKyAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBH
VEJBJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOgorICAgICAgICAgICAgICAgICAg
ICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45
LCcKKyAgICAgICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAorICAgICAgICAgICAgICAgICAg
ICAgJ0FjY2VwdC1MYW5ndWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAnZW4tdXMsZW47cT0w
LjUnLAorICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6CisgICAgICAgICAg
ICAgICAgICAgICAnZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQt
Q2hhcnNldCc6CisgICAgICAgICAgICAgICAgICAgICAnSVNPLTg4NTktMSx1dGYtODtxPTAuNywq
O3E9MC43JywKKyAgICAgICAgICAgICAgICAgICAgICdLZWVwLUFsaXZlJzoKKyAgICAgICAgICAg
ICAgICAgICAgICczMDAnLAorICAgICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOgorICAg
ICAgICAgICAgICAgICAgICAgJ2tlZXAtYWxpdmUnCisgICAgICAgICAgICAgICAgIH0pLCBOb25l
LCBUcnVlKQorICAgICAgICBdCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9TVCcKKyAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KKyAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKwor
ICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAg
IGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KKyAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCisgICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQorICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRy
dWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rvd25ncmFkZScK
KyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCByZXF1ZXN0X2Rl
ZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tl
dC1LZXknXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0
LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1
alpRPT1nYXJiYWdlJykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScKKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkg
KGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciByaWdodCBiZWZv
cmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KKyAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0n
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5IChwYWRkaW5nIGJpdHMgYXJlIG5vdCB6ZXJvKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LUtleSddID0gKAorICAgICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PSxkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT0nKQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3Jvbmcg
U2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFk
ZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAor
ICAgICAgICAgICAgKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVy
c2lvbiddID0gJzMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBGYWxzZSkpCisK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICcxMywgMTMn
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24g
KG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2Rl
ZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICdpbGxlZ2FsXHgwOXByb3RvY29sJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAorICAgICAgICAgICAgKCdJbGxlZ2FsIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0
X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnXSA9ICcnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkK
KworICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywK
KyAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgor
ICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3du
IGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCisgICAgICAgICAgICBleGNlcHQgSGFuZHNo
YWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVj
dF9oYW5kc2hha2VfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RfaGFu
ZHNoYWtlX2V4Y2VwdGlvbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMDFlZjI4Mzkx
M2UzZmM4Nzc1YjNiMjczMTFmNjE5NWM1N2JlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0wLDAgKzEsOTMgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3Ig
aHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworCitjbGFzcyBVbml0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgaHR0cF9oZWFkZXJfdXRpbCBt
b2R1bGUuIiIiCisgICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNlbGYpOgorICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCcvd3Mv
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1dGVfdXJpKHNlbGYp
OgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAorICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwMDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3MvdGVzdCcs
IHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbS93cy90ZXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzczovL2V4YW1wbGUuY29tLycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0NDMsIHBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKKwor
ICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJp
KAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4
MDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCisKKyAg
ICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKKyAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCBy
ZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8v
bG9jYWxob3N0OklOVkFMSURfUE9SVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
cmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDotMS93cycpCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCByZXNvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgw
LCBwb3J0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzJywgcmVzb3VyY2UpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyODhjNTEwYjg5YmIyODkzMWRmZjlhNzc5MTgzYTQ5OTE3
NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIi
CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRl
c3QKK2ltcG9ydCBzaXgKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGgg
dG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCisg
ICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xp
c3QpOgorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKKyAgICAgICAgICAg
IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3Jp
emluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVj
dGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiBjaGVja193
aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3Qp
OgorICAgICAgICByZWFkX2xpc3QgPSBbXQorICAgICAgICByZWFkX2xpbmUgPSAnJworICAgICAg
ICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGlu
ZShyZWFkX3NpemUpCisgICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKKyAgICAgICAg
ICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6CisgICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9
ICcnOgorICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKKyAgICAg
ICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgorICAgICAgICAgICAgICAg
IHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9
ICcnCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRf
bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVu
KGFjdHVhbF9saXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlz
dCksIGxlbihyZWFkX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBp
biB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgcmVhZCkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Cisg
ICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAor
ICAgICAgICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKKyAgICAg
ICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJywg
J1dlbGNvbWUnXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGltaXRfbWVt
b3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5n
ZmlsZS5NZW1vcml6aW5nRmlsZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldv
cmxkXG5XZWxjb21lJyksIDIpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAz
LCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9s
aW5lc19lbXB0eV9maWxlKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShzaXguU3RyaW5nSU8oJycpKQorICAgICAgICBzZWxmLmNo
ZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXpl
ZF9saW5lc193aXRoX3NpemUoc2VsZik6CisgICAgICAgIGZvciBzaXplIGluIHJhbmdlKDEsIDEw
KToKKyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXpp
bmdGaWxlKAorICAgICAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldvcmxkXG5XZWxj
b21lJykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1vcml6aW5nX2ZpbGUs
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hlbGxvXG4nLCAnV29y
bGRcbicsICdXZWxjb21lJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3Mzg3M2RkZTk3ZGYwM2YyMGRmNWFjOTcyMmY2YWQ2NWRk
MDJlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9j
ay5weQpAQCAtMCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0
ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0
IGltcG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKGInQUJDXHJcbkRFRkdc
clxuXHJcbkhJSksnKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKwor
ICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNc
clxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VG
R1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YicnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorCisgICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxp
bmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuRCcsIHNlbGYuX2Nv
bm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuSElKSycsIHNl
bGYuX2Nvbm4ucmVhZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nv
bm4ucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9jb25uLndyaXRlKGInSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29ubi53cml0ZShiJ1dv
cmxkXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidIZWxsb1xyXG5Xb3JsZFxyXG4n
LCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQorCisKK2NsYXNzIE1vY2tCbG9ja2luZ0Nvbm5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQmxvY2tp
bmdDb25uIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgICIiIlRl
c3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRfYnl0ZXMgbWV0aG9k
IGNhbiBiZQorICAgICAgICByZWFkIGZyb20gaXQuCisgICAgICAgICIiIgorICAgICAgICBjbGFz
cyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAgIiIiQSB0ZXN0IGNs
YXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQorICAgICAg
ICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRv
IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHF1ZXVlLgorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgorICAgICAgICAgICAgICAg
IHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWV1ZSA9IHF1ZXVlCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNvbm4KKyAgICAgICAg
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnQo
KQorCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEpCisKKyAgICAgICAgY29ubiA9
IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCisgICAgICAgIHF1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVl
LlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHF1ZXVlLmVtcHR5KCkpCisgICAgICAgIGNvbm4ucHV0X2J5dGVz
KGInRm9vIGJhclxyXG4nKQorICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ0ZvbyBiYXJcclxuJywgcmVhZCkKKworCitjbGFzcyBNb2NrVGFibGVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrVGFibGUg
Y2xhc3MuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21f
bGlzdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdLZXknLCAnVmFs
dWUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2Nr
Lk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwgKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgor
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUn
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tleScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZVsnS0VZJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9tc2d1dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2YyMWI4ZDI5NzY2ODc3MGNiOTFjNTAx
YzJiMmZjODI1OGI5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDkxNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KK2lt
cG9ydCBhcnJheQoraW1wb3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0
IHN0cnVjdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitpbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
KworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSB0
ZXN0IGltcG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNpeC5tb3Zl
cyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKKworIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCitfTUFTS0lOR19OT05DRSA9IGInQUJDRCcKKworCitkZWYgX21hc2tfaHliaShm
cmFtZSk6CisgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAg
IEV4Y2VwdGlvbignbWFza2luZyBkb2VzIG5vdCBhY2NlcHQgVGV4dHMnKQorCisgICAgZnJhbWVf
a2V5ID0gbGlzdChpdGVyYnl0ZXMoX01BU0tJTkdfTk9OQ0UpKQorICAgIGZyYW1lX2tleV9sZW4g
PSBsZW4oZnJhbWVfa2V5KQorICAgIHJlc3VsdCA9IGJ5dGVhcnJheShmcmFtZSkKKyAgICBjb3Vu
dCA9IDAKKworICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXN1bHQpKToKKyAgICAgICAgcmVzdWx0
W2ldIF49IGZyYW1lX2tleVtjb3VudF0KKyAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZy
YW1lX2tleV9sZW4KKworICAgIHJldHVybiBfTUFTS0lOR19OT05DRSArIGJ5dGVzKHJlc3VsdCkK
KworCitkZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVlc3Qs
IHN0cmVhbV9vcHRpb25zKToKKyAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKKyAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisKKworZGVmIF9jcmVh
dGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1Ob25lKToKKyAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5N
b2NrQ29ubihyZWFkX2RhdGEpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05f
SFlCSV9MQVRFU1QKKyAgICByZXEud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQorCisgICAg
cHJvY2Vzc29yID0gTm9uZQorICAgIGlmIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0IGlzIG5v
dCBOb25lOgorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQorCisgICAg
c3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICBpZiBwcm9jZXNzb3IgaXMgbm90
IE5vbmU6CisgICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCBy
ZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJl
YW1fb3B0aW9ucykKKworICAgIHJldHVybiByZXEKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0KCpm
cmFtZXMpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBm
cmFtZXMuCisKKyAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3Qu
Y29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAorICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICAgIiIiCisKKyAgICByZWFkX2RhdGEgPSBbXQorICAg
IGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6CisgICAgICAgIHJlYWRfZGF0YS5hcHBlbmQo
aGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKKworICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKGInJy5qb2luKHJlYWRfZGF0YSkpCisKKworZGVmIF9jcmVhdGVfYmxvY2tp
bmdfcmVxdWVzdCgpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QuCisKKyAgICBEYXRhIHdy
aXR0ZW4gdG8gYSBNb2NrUmVxdWVzdCBjYW4gYmUgcmVhZCBvdXQgYnkgY2FsbGluZworICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKS4KKyAgICAiIiIKKworICAgIHJlcSA9IG1v
Y2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKKyAgICBy
ZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisgICAgc3RyZWFtX29w
dGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtKHJlcSwg
c3RyZWFtX29wdGlvbnMpCisgICAgcmV0dXJuIHJlcQorCisKK2NsYXNzIEJhc2ljTWVzc2FnZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0uIiIi
CisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hl
bGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEy
NQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4ODFceDdkJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0
X3NlbmRfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjYK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAg
ICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXls
b2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2VceGZmXHhmZicgKyBwYXls
b2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2xhcmdlX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBi
J1x4ODFceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsKKyAgICAgICAgICAg
IHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsIHUnXHU2NWU1JykKKyAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5
NyxhNSBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDNceGU2XHg5
N1x4YTUnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICchJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDA1
SGVsbG9ceDAwXHgwMSBceDAwXHgwNVdvcmxkXHg4MFx4MDEhJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVz
dF9zZW5kX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJtaW5hdGlvbihzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdIZWxsbyBXb3JsZCEnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4
MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIn
XHg4MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4ODFceGZkJywgcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lZGl1bV9tZXNz
YWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHgwMFx4N2UnLCBwYXlsb2FkKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9IGInYScgKiAo
MSA8PCAxNikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAg
IChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5nX21pbmltYWxfbnVt
YmVyX29mX2J5dGVzKHNlbGYpOgorICAgICAgICAjIExvZyB3YXJuaW5nIG9uIHJlY2VpdmluZyBi
YWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQorICAgICAgICAjIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgorCisgICAgICAgIHBh
eWxvYWQgPSBiJ2EnCisgICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0
IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNv
ZGUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ODMn
LCBiJ1x4ZTZceDljXHhhYycpKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDlj
LGFjIGluIFVURi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBp
bnZhbGlkIGFzIFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4
ODFceDgyJywgYidceDgwXHg4MScpKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91
bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFVURjhFeGNlcHRpb24sIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVu
dHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODUn
LCBiJ0hlbGxvJyksIChiJ1x4MDBceDgxJywgYicgJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGInXHgwMFx4ODUnLCBiJ1dvcmxkJyksIChiJ1x4ODBceDgxJywgYichJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfdW5p
Y29kZShzZWxmKToKKyAgICAgICAgIyBVVEYtOCBlbmNvZGVzIFUrNmYyMiBpbnRvIGU2YmNhMiBh
bmQgVSs1YjU3IGludG8gZTVhZDk3LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4MDFceDgyJywgYidceGU2XHhiYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiJ1x4MDBceDgyJywgYidceGEyXHhlNScpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiJ1x4ODBceDgyJywgYidceGFkXHg5NycpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHUnXHU2ZjIyXHU1YjU3JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJt
aW5hdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAx
XHg4YycsIGInSGVsbG8gV29ybGQhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGInXHg4MFx4ODAnLCBiJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYidceDAxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3RhcnRl
ZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAwXHg4NScs
IGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJh
bWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfZW5kX2J1
dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDgwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNz
YWdlX2Rpc2NhcmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisg
ICAgICAgICAgICAoYidceDhmXHg4NicsIGInSUdOT1JFJyksIChiJ1x4ODFceDg1JywgYidIZWxs
bycpLAorICAgICAgICAgICAgKGInXHg4Zlx4ODknLCBiJ0RJU1JFR0FSRCcpLCAoYidceDgxXHg4
NicsIGInV29ybGQhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBw
b3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceDhhJywgc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZWFzb24gPSAnYScgKiAxMjMKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceGZk
Jywgc3RydWN0LnBhY2soJyFIJywgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSkgKworICAg
ICAgICAgICAgIHJlYXNvbi5lbmNvZGUoJ1VURi04JykpKQorICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX3Jl
YXNvbiwgcmVhc29uKQorCisgICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV90b29fbG9uZyhzZWxmKToK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwgcmVxdWVzdC53c19zdHJlYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICdhJyAq
IDEyNCkKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfaW5jb25zaXN0ZW50X2NvZGVfYW5kX3Jl
YXNvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
ICMgcmVhc29uIHBhcmFtZXRlciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb2RlIGlzIE5v
bmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwg
cmVxdWVzdC53c19zdHJlYW0sIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhJykK
KworICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbyBX
b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MGNIZWxsbyBXb3JsZCEn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ2EnICogMTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4N2QnICsg
YidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfdG9vX2xvbmcoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwgbXNndXRpbC5zZW5kX3Bpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsICdhJyAqIDEyNikKKworICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfcGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEg
cGluZyBjb250cm9sIGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNz
YWdlKToKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgICMgU3Ry
ZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3aXRob3V0IGFueSBh
Y3Rpb24KKyAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDA1SGVsbG8nLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hh
bmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1
ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZkJywgYidhJyAqIDEy
NSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dv
cmxkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDhhXHg3ZCcg
KyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDBc
eDdlJywgYidhJyAqIDEyNikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxm
KToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgor
ICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAgICAgICAgIHJlcXVl
c3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGIn
XHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25fcG9uZ19oYW5kbGVy
ID0gaGFuZGxlcgorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8nKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBi
dXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAg
ICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29saWNpdGVkX3Bvbmco
c2VsZik6CisgICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2VkIGZyb20gSHlCaSAw
Ny4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVs
bG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGIn
V29ybGQnKSkKKyAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKworICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcp
KQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSnVtYm8nKQorICAgICAgICAj
IEJvZHkgbWlzbWF0Y2guCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX2Nhbm5vdF9iZV9mcmFnbWVudGVkKHNlbGYpOgorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDlceDg1JywgYidIZWxsbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDFceDAwJywgYidhJyAq
IDI1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwgcmVxdWVzdCkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIi
IgorICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVS
TUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29y
ID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQorICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25l
LCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
cicpKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAg
ZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQor
ICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
KDgpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1
ZSkKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnOCcsIHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2NsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBy
ZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcicp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4YzElYycgJSBs
ZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxs
bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X21lc3NhZ2Uoc2VsZik6
CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNvbXByZXNzZWQgY29y
cmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAg
ICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKworICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICAjIFBheWxvYWQgaW4g
YmluYXJ5OiAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAgICAgICMgLSAxIGJp
dCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNz
aW9uKQorICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChiJ1x4YzFceDAxXHgwMCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV93aXRoX251bGxfY2hhcmFjdGVyKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0IHRoYXQgYSBzaW1wbGUgcGF5bG9hZCAob25lIG51bGwpIGlzIGZyYW1l
ZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
KQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAg
ICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorCisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKKworICAgICAgICAjIFBh
eWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAwMAorICAgICAg
ICAjIEZyb20gTFNCLAorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAj
IC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCisgICAgICAg
ICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMgdGhlIGNvZGUg
Zm9yIHRoZSBsaXRlcmFsCisgICAgICAgICMgICBhbHBoYWJldCAweDAwKQorICAgICAgICAjIC0g
NyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0
aGUKKyAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5B
TCAoMCkKKyAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCisgICAg
ICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhj
MVx4MDNceDYyXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdHdvX21lc3NhZ2Vz
KHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGV4
cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisKKyAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGInV29ybGQnKQorICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCisgICAgICAg
IGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4
dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywg
ZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5
ZScsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dv
cmxkJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4
NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgPSBjb21wcmVzcy5jb21wcmVz
cyhiJ0dvb2RieWUnKQorICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkICs9IGInXHgwMCVjJyAlIGxl
bihjb21wcmVzc2VkX2dvb2RieWUpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZ29v
ZGJ5ZQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoYidXb3Js
ZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzot
NF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQp
CisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2Vs
Zik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAg
ICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4
cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVj
dGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXBy
ZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0g
Y29tcHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxl
bihjb21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5
CisgICAgICAgIHByaW50KCclcicgJSBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKKyAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICcnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBl
Y3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
cy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
c2VkX2VtcHR5WzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXBy
ZXNzZWRfZW1wdHkpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhz
ZWxmKToKKyAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon
CisgICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21t
b25fcGFydAorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
CisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcp
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAg
ICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKKworICAgICAgICBl
eHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCisgICAgICAgIGV4cGVjdGVkX3dlYnNv
Y2tldF9wYXlsb2FkX3NpemUgPSA5MQorCisgICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplICsgZXhwZWN0ZWRfd2Vic29j
a2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIGxlbihhY3R1YWxfZnJhbWUpKQorICAgICAg
ICBhY3R1YWxfaGVhZGVyID0gYWN0dWFsX2ZyYW1lWzA6ZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRl
cl9zaXplXQorICAgICAgICBhY3R1YWxfcGF5bG9hZCA9IGFjdHVhbF9mcmFtZVtleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemU6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGMx
JWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3R1YWxfaGVhZGVyKQorICAgICAgICBkZWNvbXByZXNzID0gemxpYi5kZWNvbXBy
ZXNzb2JqKC04KQorICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSA9IGRlY29tcHJlc3MuZGVj
b21wcmVzcyhhY3R1YWxfcGF5bG9hZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIGRlY29t
cHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3NhZ2UuZGVjb2RlKCdVVEYtOCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNzLnVudXNlZF9kYXRh
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVzcy51bmNvbnN1bWVk
X3RhaWwpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRleHRfdGFrZW92ZXJf
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
CisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPVRydWUpCisKKyAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFY
X1dCSVRTKQorCisgICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxs
bycpCisgICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihmaXJzdF9oZWxsbykKKyAg
ICAgICAgZXhwZWN0ZWQgKz0gZmlyc3RfaGVsbG8KKyAgICAgICAgc2Vjb25kX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25k
X2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKHNlY29uZF9o
ZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgorICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVf
cmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQorICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLnNldF9iZmluYWwoVHJ1ZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBlbmQ9VHJ1ZSkKKworICAgICAgICBleHBlY3RlZCA9
IGInJworCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzc2VkX2hlbGxvICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAgICAgZXhwZWN0ZWQg
Kz0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIHN0cnVjdC5wYWNrKCchQicsIDApCisgICAg
ICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykK
KworICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycp
CisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
KyAgICAgICAgZGF0YSA9IGInXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgw
KQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKKworICAgICAg
ICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRo
YXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlz
CisgICAgICAgIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFu
ZG9tLnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisgICAgICAgICAgICBb
c3RydWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4gcmFuZ2Uo
MTAwMCldKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3MuY29tcHJlc3MocGF5bG9hZCkKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2Vk
X3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorCisgICAgICAgICMgRnJhZ21lbnQg
dGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgorICAgICAgICBieXRl
c19jaHVua2VkID0gMAorICAgICAgICBkYXRhID0gYicnCisgICAgICAgIGZyYW1lX2NvdW50ID0g
MAorCisgICAgICAgIGNodW5rX3NpemVzID0gW10KKworICAgICAgICB3aGlsZSBieXRlc19jaHVu
a2VkIDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0
aGF0CisgICAgICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxl
c3MgdGhhbiAxMjUgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBs
ZW5ndGggaGVhZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KKyAgICAgICAgICAgICMgLSBhdCBs
ZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICBjaHVua19zaXplID0gcmFu
ZG9tLnJhbmRpbnQoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICBtaW4oMTI1
LAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSAvLyAxMCwKKyAg
ICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXplKQorICAgICAgICAg
ICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2Vk
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemVdCisg
ICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAgICAgICAgICAgZmly
c3Rfb2N0ZXQgPSAweDAwCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0MgorICAgICAgICAgICAgaWYg
Ynl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToKKyAgICAgICAgICAgICAg
ICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAorCisgICAgICAgICAgICBkYXRhICs9
IGInJWMlYycgJSAoZmlyc3Rfb2N0ZXQsIGNodW5rX3NpemUgfCAweDgwKQorICAgICAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNodW5rKQorCisgICAgICAgICAgICBmcmFtZV9jb3VudCArPSAx
CisKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKworICAgICAgICAjIENs
b3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2
ZV90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAgICBkYXRh
ID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGIn
SGVsbG9XZWJTb2NrZXQnKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCisgICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRf
aGVsbG8pIC8vIDIKKyAgICAgICAgZGF0YSArPSBiJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24g
fCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3Bs
aXRfcG9zaXRpb25dKQorCisgICAgICAgIGRhdGEgKz0gYidceDgwJWMnICUgKChsZW4oY29tcHJl
c3NlZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQorICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQorCisgICAgICAgIGNv
bXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1B
WF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3Mo
YidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dv
cmxkWzotNF0KKyAgICAgICAgZGF0YSArPSBiJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29y
bGQpIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQp
CisKKyAgICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsg
X21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdl
X2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlw
ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5n
IGxvdHMgb2YgREVGTEFURSBibG9ja3Mgd2l0aAorICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUg
aXMgY29ycmVjdGx5IHJlY2VpdmVkLgorICAgICAgICAiIiIKKworICAgICAgICByYW5kb20uc2Vl
ZChhPTApCisgICAgICAgIHBheWxvYWQgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtzdHJ1Y3Qu
cGFjaygnIUInLCByYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAwKV0p
CisKKyAgICAgICAgY29tcHJlc3MgPSBOb25lCisKKyAgICAgICAgIyBGcmFnbWVudCB0aGUgY29t
cHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCisgICAgICAgIGJ5dGVzX2NodW5r
ZWQgPSAwCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGInJworCisgICAgICAgIGNodW5r
X3NpemVzID0gW10KKyAgICAgICAgbWV0aG9kcyA9IFtdCisgICAgICAgIHN5bmNfdXNlZCA9IEZh
bHNlCisgICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKKworICAgICAgICB3aGlsZSBieXRlc19j
aHVua2VkIDwgbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYXQgbGVhc3Qg
MTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5y
YW5kaW50KDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKDEw
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHBheWxv
YWQpIC0gYnl0ZXNfY2h1bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1
bmtfc2l6ZSkKKyAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5dGVz
X2NodW5rZWQgKyBjaHVua19zaXplXQorCisgICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNo
dW5rX3NpemUKKworICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVG
TEFURUQsIC16bGliLk1BWF9XQklUUykKKworICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9
PSBsZW4ocGF5bG9hZCk6CisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5kb20ucmFuZGludCgwLCAxKQorICAg
ICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBt
ZXRob2QgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgICAgICAg
ICAgICAgIHN5bmNfdXNlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmsp
CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfRklOSVNIKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyA9IE5vbmUKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVlCisKKyAgICAgICAgcHJpbnQoIkNo
dW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxl
bihjaHVua19zaXplcykgPiAxMCkKKyAgICAgICAgcHJpbnQoIk1ldGhvZHM6ICVyIiAlIG1ldGhv
ZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeW5jX3VzZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmaW5pc2hfdXNlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoMTI1IDwgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY29tcHJl
c3NlZF9wYXlsb2FkKSA8IDY1NTM2KQorICAgICAgICBkYXRhID0gYidceGMyXHhmZScgKyBzdHJ1
Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAgICAgZGF0YSArPSBf
bWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKKworICAgICAgICAjIENsb3NlIGZyYW1lCisg
ICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
KyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVz
c2FnZVJlY2VpdmVyLiIiIgorICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVjZWl2ZXIgPSBtc2d1
dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKKworICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsgX21hc2tfaHliaShiJ0hlbGxvIScpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCisKKyAg
ICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IHNp
eC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1l
c3NhZ2UpOgorICAgICAgICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQorCisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICByZWNlaXZl
ciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQor
CisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgxXHg4NicgKyBfbWFz
a19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9u
bWVzc2FnZV9xdWV1ZS5nZXQoKSkKKworCitjbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdl
U2VuZGVyLiIiIgorICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3Nh
Z2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5kZXIuc2VuZCgnV29ybGQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgorICAgICAg
ICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5k
ZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBi
ZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNl
cGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1
ZSgpCisKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAgIHNlbmRfcXVldWUu
cHV0KGJ5dGVzKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3Qo
KQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQorCisgICAgICAgIHNl
bmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbmRlci5z
ZW5kX25vd2FpdCgnSGVsbG8nKQorICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCBzZW5kX3F1ZXVlLmdl
dCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHNlbmRfcXVl
dWUuZ2V0KCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVh
bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTM4OTlkMjA1MzNlYjRjZjBhOTgxNmM4YjNiMmJjOGM1MDU0OGJm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVhbS5w
eQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNf
cGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUu
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KKworCitjbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0
X2NyZWF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgICMgbW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFy
ZSBhbGwgdHJ1ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24u
T1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidceGYxXHg4MScsIGhlYWRlcikKKworICAgICAgICAjIE1heGltdW0gcGF5bG9hZCBzaXplCisg
ICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwg
KDEgPDwgNjMpIC0gMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDdmXHg3Zlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCisKKyAgICAgICAgIyBJbnZhbGlkIG9w
Y29kZSAweDEwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5j
cmVhdGVfaGVhZGVyLCAweDEwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwKQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFy
YW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVh
dGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDB4ZiwgMCwgMCwgMCwgMCkKKworICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3Ro
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVhdGVfaGVh
ZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwg
NjMsIDAsIDAsIDAsIDAsIDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQ3OTQxMDUxNDU1ZWJlZTU4ODIzYjRiMGJlOTM3NjI5
MTJiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRp
bC5weQpAQCAtMCwwICsxLDE5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0CitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBp
bXBvcnQgUFkzCitmcm9tIHNpeCBpbXBvcnQgaW50MmJ5dGUKKworX1RFU1RfREFUQV9ESVIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScpCisKKwor
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IHV0aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3ByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oc2VsZik6CisgICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29ybGQnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQorICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2dldF9zY3JpcHRfaW50
ZXJwKHNlbGYpOgorICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxcY3lnd2luXFxiaW4nCisgICAg
ICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCAncGVybCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRUFETUUnKSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgdXRpbC5nZXRf
c2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy91c3IvYmluL3BlcmwgLXdUJywKKyAgICAg
ICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElS
LCAnaGVsbG8ucGwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
eWd3aW5fcGVybCArICcgLXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAo
b3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorCisgICAgZGVmIHRlc3RfaGV4aWZ5
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAw
OSAwZCAwYSAwMCBmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoYidh
ekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkKKworCitjbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFz
a2VyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X21hc2soc2VsZik6CisgICAgICAgICMgU2FtcGxl
IGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYtOAorICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKGInXHhmZlx4ZmZceGZmXHhmZicpCisgICAgICAgIHJlc3VsdCA9
IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4MTlceDY4XHg1YScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVk
WG9yTWFza2VyKGInXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ZTZceDk3
XHhhNScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2Vy
KGInXHhlNlx4OTdceGE1XHgyMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHhl
Nlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBceDAwXHgwMCcsIHJl
c3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6CisgICAgICAgIG1hc2tlciA9
IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHg3Zlx4ZmZceDIwJykKKyAgICAgICAgIyBt
YXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2VkLgorICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQorICAgICAgICAjIG1hc2tbMl0sIG1h
c2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCisgICAgICAgIHJlc3Vs
dCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCByZXN1bHQpCisKKyAgICBkZWYgdGVz
dF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6CisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRY
b3JNYXNrZXIoYidtQVNrJykKKyAgICAgICAgb3JpZ2luYWwgPSBiJycuam9pbihbdXRpbC5wYWNr
X2J5dGUoaSAlIDI1NikgZm9yIGkgaW4gcmFuZ2UoMTAwMCldKQorICAgICAgICByZXN1bHQgPSBt
YXNrZXIubWFzayhvcmlnaW5hbCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycuam9pbihbCisgICAg
ICAgICAgICB1dGlsLnBhY2tfYnl0ZSgoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kgJSA0XSkpIGZv
ciBpIGluIHJhbmdlKDEwMDApCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFz
a2VyKGInTWFTaycpCisgICAgICAgIGZpcnN0X3BhcnQgPSBiJ1RoZSBXZWJTb2NrZXQgUHJvdG9j
b2wgZW5hYmxlcyB0d28td2F5IGNvbW11bmljYXRpb24uJworICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhmaXJzdF9wYXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgYidceDE5XHQ2S1x4MWFceDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJceDE1PFx4MDgiXHJz
XHgwZSMnCisgICAgICAgICAgICBiJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgwZX5ceDFjLFx4MThz
XHgwOCJceDBjPlx4MWUjXHgwODBcbjknCisgICAgICAgICAgICBiJ1x4MDg8XHgwNWMnLCByZXN1
bHQpCisgICAgICAgIHNlY29uZF9wYXJ0ID0gYidJdCBoYXMgdHdvIHBhcnRzOiBhIGhhbmRzaGFr
ZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJworICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhz
ZWNvbmRfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGIiKCdL
JVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlceDEyO1xuJlx4MDRzXG4jIgor
ICAgICAgICAgICAgYiJceDA1c1x4MWYlXHgwNHNceDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZc
eDE5YyIsIHJlc3VsdCkKKworCitkZWYgZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgbWluX251
bV9jaHVua3MpOgorICAgIGNodW5rcyA9IFtdCisgICAgYnl0ZXNfY2h1bmtlZCA9IDAKKworICAg
IHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291cmNlKToKKyAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgMSwgbWluKGxlbihzb3VyY2UpIC8gbWluX251
bV9jaHVua3MsCisgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgY2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsg
Y2h1bmtfc2l6ZV0KKyAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKKyAgICAgICAgYnl0ZXNf
Y2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICByZXR1cm4gY2h1bmtzCisKKworY2xhc3MgSW5m
bGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X2luZmxh
dGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgYict
JyAqIDMwMDAwICsgYidoZWxsbycKKyAgICAgICAgaW5mbGF0ZXIxNSA9IHV0aWwuX0luZmxhdGVy
KDE1KQorICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVmbGF0ZXIoMTUpCisgICAgICAgIGlu
ZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCisgICAgICAgIGRlZmxhdGVyOCA9IHV0aWwuX0Rl
ZmxhdGVyKDgpCisKKyAgICAgICAgY29tcHJlc3NlZDE1ID0gZGVmbGF0ZXIxNS5jb21wcmVzc19h
bmRfZmluaXNoKGlucHV0KQorICAgICAgICBjb21wcmVzc2VkOCA9IGRlZmxhdGVyOC5jb21wcmVz
c19hbmRfZmluaXNoKGlucHV0KQorCisgICAgICAgIGluZmxhdGVyMTUuYXBwZW5kKGNvbXByZXNz
ZWQxNSkKKyAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21wcmVzc2VkOCkKKworICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29tcHJlc3NlZDgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVjb21wcmVzcygtMSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5kZWNvbXByZXNzKC0xKSkKKworICAg
IGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICByYW5kb20uc2VlZChhPTAp
CisgICAgICAgIHNvdXJjZSA9IGInJy5qb2luKAorICAgICAgICAgICAgW2ludDJieXRlKHJhbmRv
bS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMCAqIDEwMjQpXSkKKworICAgICAg
ICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCisgICAgICAg
IHByaW50KCJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2Vk
X2lucHV0XSkKKworICAgICAgICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQorICAgICAg
ICBjb21wcmVzc2VkID0gW10KKyAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Cisg
ICAgICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCisg
ICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYicn
KSkKKworICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNv
dXJjZSwgMTApCisgICAgICAgIHByaW50KCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUK
KyAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2V4cGVjdGF0aW9uXSkKKwor
ICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxhdGVyKDE1KQorICAgICAgICBpbmZsYXRlci5h
cHBlbmQoYicnLmpvaW4oY29tcHJlc3NlZCkpCisgICAgICAgIGZvciBjaHVuayBpbiBjaHVua2Vk
X2V4cGVjdGF0aW9uOgorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21w
cmVzcyhsZW4oY2h1bmspKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVj
b21wcmVzc2VkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBpbmZsYXRlci5kZWNv
bXByZXNzKC0xKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0
Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2
M2VmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
UkVBRE1FCkBAIC0wLDAgKzEgQEAKK1Rlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3Vz
ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2I1NDFiYjdlYzQwNDQ3NDU3OThhYjk3YWU3Y2NiYTU3
ZTA0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJhaXNlIGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzk4ZTk2Nzc4ZDhmNzVjOGQ3NDI0YzI3YjQwYzFm
YWQ5OTE4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmY2NDQyZTY1Yjk5ZGQ3ZDQ1NWNiMDlhMGFmYzlkNDk1OGRmMDQxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
b3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgaWYgcmVx
dWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAgICAgIHJldHVybgor
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qu
d3Nfb3JpZ2luKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbWVzc2FnZSA9ICdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAl
ICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDM5MDk5NGQ3MTJkZmU4ZjFlNGRmZGQ5NGZmNTZhYmU2
NjczZDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpAQCAtMCwwICsxLDQy
IEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEoKS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVz
JyAlCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0Lndz
X3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmZGRiNzQ0OTVlZWYxZDFmMzUxZTMzNGFjNDg1MDQ3
M2VkMTY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCisi
IiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVz
c2FnZSA9ICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUg
KAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhZmNmYTk3YTk1NGEyYmU2OTZjMTQ4ZGQxZjU1MzYyOGYxMjFlYTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25f
Y2FsbGFibGVfd3NoLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTm9u
LWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisKK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
ID0gVHJ1ZQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQorCisjIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3BsYWluX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdkYjFlNWFjMzI2ZGY1MWM2OGUzZWQy
NjkwYmUyYTAzYzg3M2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMn
ICUgKHJlcXVlc3Qud3NfcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2NWRiZTMyYWFj
OTEyMjkxYTM2M2E4YzgzZWJlOGUwZmVkNjBlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCkBAIC0w
LDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9z
aWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
d3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViYjBkYTFhYjZiMGJkZDA3
N2I4MzMyODEzNzZjMWE4MTE1NTBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgorIiIiCisKKworZGVmIG5vX3dlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3dyb25nX2hhbmRz
aGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZDI3ZDZiY2ZlZWFmMDJhOTQyYThiMzBiN2QzMzQwZmIyMGQyMzMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJh
bnNmZXJfc2lnX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldy
b25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KKyIiIgorCisKK2RlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVm
IG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjMGY2NTcyYjEyZmMxYjE0
NjY2M2ZmZWFkNThjNDgyNWMyMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE5IEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0
X2J5X3VzZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzZiOGUxOTIwZGMzYmVjYTZlZTUwZGQzMjJi
ZDYwYTU4Y2M0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5ZWVhMTkxNGI5MWQ2ZjU1ZTU0NjdkYjkwODE1MWQ2ODdl
OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMCwwICsxLDMyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitO
b25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19f
aW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3J1bl9hbGwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9leHRl
bnNpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmZkYmMx
ZjYxODk5NDZkYWViYzhlZjBjNWRjNTI3NThmY2E5NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTElDRU5T
RQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvUkVB
RE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L0NIQU5HRVMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCmluZGV4IGIzOTk4ODI1NjFlYzI5NWQ4ZGVmY2Fk
YmUxYjliOTk1YjFlYjllMTEuLmZmYTcwMjYwMWI2NTA5YjI1ZmJkNjc4N2QxZTc2ODJlNWFjMzkz
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwpA
QCAtMyw2ICszLDI4IEBAIENoYW5nZWxvZyBmb3Igc2l4CiAKIFRoaXMgZmlsZSBsaXN0cyB0aGUg
Y2hhbmdlcyBpbiBlYWNoIHNpeCB2ZXJzaW9uLgogCisxLjEzLjAKKy0tLS0tLQorCistIElzc3Vl
ICMyOTgsIHB1bGwgcmVxdWVzdCAjMjk5OiBBZGQgYHNpeC5tb3Zlcy5kYm1fbmRibWAuCisKKy0g
SXNzdWUgIzE1NTogQWRkIGBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjYCwgd2hpY2ggYWxpYXNl
cyB0aGUgYGNvbGxlY3Rpb25zYAorICBtb2R1bGUgb24gUHl0aG9uIDItMy4yIGFuZCB0aGUgYGNv
bGxlY3Rpb25zLmFiY2Agb24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlci4KKworLSBQdWxsIHJlcXVl
c3QgIzMwNDogUmUtYWRkIGRpc3R1dGlscyBmYWxsYmFjayBpbiBgc2V0dXAucHlgLgorCistIFB1
bGwgcmVxdWVzdCAjMzA1OiBPbiBQeXRob24gMy43LCBgd2l0aF9tZXRhY2xhc3NgIHN1cHBvcnRz
IGNsYXNzZXMgdXNpbmcgUEVQCisgIDU2MCBmZWF0dXJlcy4KKworMS4xMi4wCistLS0tLS0KKwor
LSBJc3N1ZSAjMjU5LCBwdWxsIHJlcXVlc3QgIzI2MDogYHNpeC5hZGRfbWV0YWNsYXNzYCBub3cg
cHJlc2VydmVzCisgIGBfX3F1YWxuYW1lX19gIGZyb20gdGhlIG9yaWdpbmFsIGNsYXNzLgorCist
IFB1bGwgcmVxdWVzdCAjMjA0OiBBZGQgYHNpeC5lbnN1cmVfYmluYXJ5YCwgYHNpeC5lbnN1cmVf
dGV4dGAsIGFuZAorICBgc2l4LmVuc3VyZV9zdHJgLgorCiAxLjExLjAKIC0tLS0tLQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQppbmRleCBmMzA2OGJm
ZDllMGNkODZkZTZiMmNlNWY1ZmE3ZmFmMzhjNjhlNWNlLi40YjA1YTU0NTI2MWMwZjliMzFhYmUz
ZWRlYzcxMDU4NzU4N2E2NTlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1Db3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBC
ZW5qYW1pbiBQZXRlcnNvbgorQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJz
b24KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNkNWZmNGJiOGU0ZmEwYTFjYWY2ZDNkZjUyOGFiYzIwYjNkZjVh
ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1NZXRhZGF0YS1WZXJz
aW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5OiBQeXRob24gMiBh
bmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgotQXV0aG9yLWVtYWls
OiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0aW9uOiAuLiBpbWFn
ZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgICAgICAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAgICAKLSAgICAgICAg
Li4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNo
PW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jlbmph
bWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6dGFyZ2V0OiBodHRw
czovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCi0gICAgICAg
IAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnku
ICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Igc21vb3RoaW5nIG92
ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBn
b2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIG9u
IGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1bWVudGF0aW9uIGZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAgICAgIAotICAgICAg
ICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQgaXMgY29u
dGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
LSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAKLSAgICAgICAgT25s
aW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KLSAgICAgICAgCi0g
ICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1p
bnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQgdGhlcmUuCi0gICAg
ICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVy
YWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAgIGxpc3Q6IGh0dHBz
Oi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcKLSAgICAg
ICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCi1DbGFz
c2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xhc3NpZmll
cjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFzc2lmaWVy
OiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9SRUFETUUucnN0CmluZGV4IGMxN2Q4ZDczMmFmODU5ZGUyYzQ2YWJhZDAwNjQ0MzRh
ODRkYzE2MGEuLmE5OWU2ZjU1ODVhOTE4YjhhNjhjZWFiYWNlMmZiNmUzNGU5MjE4M2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdApAQCAt
MSwxMSArMSwxOCBAQAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3Np
eC5zdmcKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4CisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6YWx0OiBzaXggb24gUHlQSQogCiAu
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4LnN2Zz9icmFuY2g9
bWFzdGVyCi0gICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgK
KyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4CisgICA6YWx0
OiBzaXggb24gVHJhdmlzQ0kKIAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFk
Z2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mu
b3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBz
Oi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBS
ZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9s
aWNlbnNlLU1JVC1ncmVlbi5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5q
YW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdl
CiAKIFNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHBy
b3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCiBmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVu
Y2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCkBAIC0xNiw3
ICsyMyw3IEBAIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJ
dCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCiBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
IG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKIAotT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQg
aHR0cDovL3NpeC5ydGZkLm9yZy4KK09ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHBzOi8v
c2l4LnJlYWR0aGVkb2NzLmlvLy4KIAogQnVncyBjYW4gYmUgcmVwb3J0ZWQgdG8gaHR0cHM6Ly9n
aXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwogYmUgZm91bmQgdGhl
cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9kb2N1bWVudGF0aW9uL2NvbmYucHkKaW5kZXggYWQ5MjVjMWMxZDFlODM2MTQ5MzcwNzJiYmU5
NGU2YzMwNTZkMTg4ZC4uYjNkMTMyOGFkYzJhNDJhZmRlNzE5MTUxOTMwNjA0MzM1MDRjZTIwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMzMsNyArMzMsNyBAQCBtYXN0ZXJfZG9jID0gImlu
ZGV4IgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCiBwcm9qZWN0
ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNywgQmVuamFtaW4gUGV0ZXJzb24iCitj
b3B5cmlnaHQgPSB1IjIwMTAtMjAxOSwgQmVuamFtaW4gUGV0ZXJzb24iCiAKIHN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikpKQogZnJvbSBzaXgg
aW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9k
b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0
CmluZGV4IGRkMGRjNmUzYmRlOGM0NThkYzRmMTEzMzFlZjdiZTEyZWQ2N2FiYTguLmI3ZWMyNzU0
ZWNmODNkNWEyOTFjMTM5ODg3MzhmZWY2MjA0NWM5ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2Rv
Y3VtZW50YXRpb24vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgu
cnN0CkBAIC0xMyw3ICsxMyw3IEBAIFB5dGhvbiAzLiAgSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9y
dCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMKIHdpdGhvdXQgbW9k
aWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBmaWxlLCBzbyBpdCBp
cyBwYWlubGVzcwogdG8gY29weSBpbnRvIGEgcHJvamVjdC4KIAotU2l4IGNhbiBiZSBkb3dubG9h
ZGVkIG9uIGBQeVBpIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8+YF8uICBJdHMg
YnVnCitTaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJv
amVjdC9zaXgvPmBfLiAgSXRzIGJ1ZwogdHJhY2tlciBhbmQgY29kZSBob3N0aW5nIGlzIG9uIGBH
aXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4PmBfLgogCiBUaGUgbmFtZSwg
InNpeCIsIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCAyKjMgZXF1YWxzIDYuICBXaHkgbm90IGFk
ZGl0aW9uPwpAQCAtNTAsOCArNTAsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAKIC4uIGRhdGE6
OiBjbGFzc190eXBlcwogCi0gICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIEluIFB5dGhvbiAyLCB0
aGlzIGVuY29tcGFzc2VzIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlCi0gICBjbGFzc2VzLiAgSW4g
UHl0aG9uIDMsIHRoaXMgaXMganVzdCBuZXctc3R5bGVzLgorICAgUG9zc2libGUgY2xhc3MgdHlw
ZXMuICBJbiBQeXRob24gMiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUKKyAgIDpkYXRhOmBw
eTI6dHlwZXMuQ2xhc3NUeXBlYCBhbmQgbmV3LXN0eWxlIGBgdHlwZWBgIGNsYXNzZXMuICBJbiBQ
eXRob24gMywKKyAgIHRoaXMgaXMganVzdCBgYHR5cGVgYC4KIAogCiAuLiBkYXRhOjogaW50ZWdl
cl90eXBlcwpAQCAtNzUsNyArNzYsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAuLiBkYXRhOjog
YmluYXJ5X3R5cGUKIAogICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFyeSBkYXRhLiAgVGhp
cyBpcyA6ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOmJ5dGVz
YCBpbiBQeXRob24gMy4KKyAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhvbiAzLiAgUHl0aG9u
IDIuNiBhbmQgMi43IGluY2x1ZGUgYGBieXRlc2BgIGFzIGEKKyAgIGJ1aWx0aW4gYWxpYXMgb2Yg
YGBzdHJgYCwgc28gc2l44oCZcyB2ZXJzaW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBQeXRob24g
Mi41CisgICBjb21wYXRpYmlsaXR5LgogCiAKIC4uIGRhdGE6OiBNQVhTSVpFCkBAIC0zNzEsNyAr
Mzc0LDcgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4KIC4uIGZ1bmN0aW9u
OjogYihkYXRhKQogCiAgICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBh
bHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5j
OmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNv
ZGVkCisgICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYW4gOC1iaXQgc3RyaW5nLiAgSW4g
UHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5n
IHRvIGJ5dGVzLgogCiAKQEAgLTQzMyw2ICs0MzYsMjQgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5
dGhvbiB2ZXJzaW9ucy4KICAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgog
CiAKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJv
cnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YGJpbmFyeV90eXBlYC4gKmVu
Y29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNv
ZGVgCisKKworLi4gZnVuY3Rpb246OiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVy
cm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byBgYHN0cmBgLiAqZW5jb2RpbmcqLCAq
ZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCisu
LiBmdW5jdGlvbjo6IGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3Ry
aWN0JykKKworICAgQ29lcmNlICpzKiB0byA6ZGF0YTpgdGV4dF90eXBlYC4gKmVuY29kaW5nKiwg
KmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNvZGVgCisKKwog
Li4gZGF0YTo6IFN0cmluZ0lPCiAKICAgIFRoaXMgaXMgYSBmYWtlIGZpbGUgb2JqZWN0IGZvciB0
ZXh0dWFsIGRhdGEuICBJdCdzIGFuIGFsaWFzIGZvcgpAQCAtNTAzLDcgKzUyNCw3IEBAIFB5dGhv
biAyIG9yIDMsIHdyaXRlOjoKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCBodG1sX3BhcnNlcgog
CiBTaW1pbGFybHksIHRvIGdldCB0aGUgZnVuY3Rpb24gdG8gcmVsb2FkIG1vZHVsZXMsIHdoaWNo
IHdhcyBtb3ZlZCBmcm9tIHRoZQotYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wYGAgbW9kdWxl
LCB1c2U6OgorYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLCB1c2U6
OgogCiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmVsb2FkX21vZHVsZQogCkBAIC01NjMsNyAr
NTg0LDExIEBAIFN1cHBvcnRlZCByZW5hbWVzOgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBjU3RyaW5nSU9gYCAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6Y1N0cmluZ0lPLlN0cmluZ0lPYCAgICAgIHwgOmNsYXNzOmBweTM6aW8u
U3RyaW5nSU9gICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwg
OmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MzpkYm0uZ251
YCAgICAgICAgICAgICAgICAgIHwKK3wgYGBjb2xsZWN0aW9uc19hYmNgYCAgICAgICAgICB8IDpt
b2Q6YHB5Mjpjb2xsZWN0aW9uc2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvbGxlY3Rpb25z
LmFiY2AgKDMuMyspICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmdkYm1gICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJtLmdudWAgICAgICAg
ICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCit8IGBgZGJtX25kYm1gYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
ZGJtYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpkYm0ubmRibWAgICAgICAgICAg
ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKIHwgYGBfZHVtbXlfdGhyZWFkYGAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkdW1t
eV90aHJlYWRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOl9kdW1teV90aHJlYWRgICAgICAgICAg
ICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2Zn
CmluZGV4IGUxMjA2OGM1NzNjNmY2ZWZkM2E5Mzc5NmU2ZGNlZWFlMTg4YjM1Y2QuLjMxN2UwMTZj
OGNjMDRkMDk3YjNiNjk2Mzk3MTAzNTdkZWIxYzk3MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Nl
dHVwLmNmZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKQEAgLTUsMTcgKzUsMTYgQEAgdW5pdmVy
c2FsID0gMQogbWF4LWxpbmUtbGVuZ3RoID0gMTAwCiBpZ25vcmUgPSBGODIxCiAKLVt0b29sOnB5
dGVzdF0KLW1pbnZlcnNpb24gPSAyLjIuMAotcGVwOGlnbm9yZSA9IAotCWRvY3VtZW50YXRpb24v
Ki5weSBBTEwKLQl0ZXN0X3NpeC5weSBBTEwKLWZsYWtlcy1pZ25vcmUgPSAKLQlkb2N1bWVudGF0
aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi0Jc2l4LnB5IFVuZGVmaW5lZE5hbWUKK1tt
ZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKIAotW2VnZ19pbmZvXQotdGFnX2J1aWxk
ID0gCi10YWdfZGF0ZSA9IDAKK1t0b29sOnB5dGVzdF0KK21pbnZlcnNpb249Mi4yLjAKK3BlcDhp
Z25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0ZXN0X3NpeC5weSBBTEwK
IAorZmxha2VzLWlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8qLnB5IEFMTAorICAgIHRlc3Rf
c2l4LnB5IEFMTAorICAgIHNpeC5weSBVbmRlZmluZWROYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmluZGV4IGNhNDRlMTAwZTQyN2VjZjU0MjRi
YWNiODRkNWViNmY1YzcxMmYyMzEuLjk3YzY4NWI1YTUwYmQ5NzY5ODA0ODYxZjRhZDdhODM5NjIx
NWQyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQ
ZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwog
IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0zMSw2ICsz
MSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBzaXgKIAogc2l4X2NsYXNzaWZpZXJz
ID0gWworICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlIiwK
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIiLAogICAgICJQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCiAgICAgIkludGVuZGVkIEF1ZGllbmNlIDo6
IERldmVsb3BlcnMiLApAQCAtNDYsMTEgKzQ3LDEyIEBAIHNldHVwKG5hbWU9InNpeCIsCiAgICAg
ICB2ZXJzaW9uPXNpeC5fX3ZlcnNpb25fXywKICAgICAgIGF1dGhvcj0iQmVuamFtaW4gUGV0ZXJz
b24iLAogICAgICAgYXV0aG9yX2VtYWlsPSJiZW5qYW1pbkBweXRob24ub3JnIiwKLSAgICAgIHVy
bD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iLAorICAgICAgdXJsPSJodHRwczov
L2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeCIsCiAgICAgICB0ZXN0c19yZXF1aXJlPVsicHl0ZXN0
Il0sCiAgICAgICBweV9tb2R1bGVzPVsic2l4Il0sCiAgICAgICBkZXNjcmlwdGlvbj0iUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMiLAogICAgICAgbG9uZ19kZXNjcmlwdGlv
bj1zaXhfbG9uZ19kZXNjcmlwdGlvbiwKICAgICAgIGxpY2Vuc2U9Ik1JVCIsCi0gICAgICBjbGFz
c2lmaWVycz1zaXhfY2xhc3NpZmllcnMKKyAgICAgIGNsYXNzaWZpZXJzPXNpeF9jbGFzc2lmaWVy
cywKKyAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjYsICE9My4wLiosICE9My4xLioiLAogICAg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVS
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
YjU4OWUzOGEzMjA0MWU0OTMzMmU1ZTgxYzJkMzYzZGM0MThkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKQEAgLTAsMCArMSBAQAor
cGlwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjA1YTU0
NTI2MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpAQCAtMCwwICsxLDE4IEBACitDb3B5
cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgorCitQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5IG9mCit0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgordGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwordXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbCBjb3BpZXMgb2YKK3RoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKK3N1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKK2NvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SCitDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIKK0lOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCitDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGM4ZjUxZTFmMzY2
MTM4ZDM4MTZhYmUwZGRiM2VmZWU0MTc1YzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKQEAgLTAsMCArMSw1MiBAQAorTWV0YWRhdGEt
VmVyc2lvbjogMi4xCitOYW1lOiBzaXgKK1ZlcnNpb246IDEuMTMuMAorU3VtbWFyeTogUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRo
dWIuY29tL2JlbmphbWlucC9zaXgKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24KK0F1dGhvci1l
bWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZworTGljZW5zZTogTUlUCitQbGF0Zm9ybTogVU5LTk9X
TgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZQorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKK0NsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitDbGFzc2lmaWVyOiBJ
bnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9T
SSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMK
K1JlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4wLiosICE9My4xLioKKworLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFyZ2V0OiBodHRwczov
L3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkKKworLi4gaW1hZ2U6
OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNoPW1hc3Rlcgor
ICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgKKyAgIDphbHQ6
IHNpeCBvbiBUcmF2aXNDSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3By
b2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vc2l4
LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBSZWFkIHRo
ZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNl
LU1JVC1ncmVlbi5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAv
c2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdlCisKK1Np
eCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVz
IHV0aWxpdHkgZnVuY3Rpb25zCitmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCit3cml0aW5nIFB5dGhv
biBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0
aGUKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBpcyBwcm92aWRl
ZC4KKworU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlz
IGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KK2ZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkg
Y29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQorbm90
aWNlIG11c3QgYmUgcmV0YWluZWQuKQorCitPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
czovL3NpeC5yZWFkdGhlZG9jcy5pby8uCisKK0J1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KK2JlIGZvdW5k
IHRoZXJlLgorCitGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVyYWws
IGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCitsaXN0OiBodHRwczovL21haWwucHl0
aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JEIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vUkVDT1JECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NzY2NWM5OTY0MjU1ZDE3MDJmMDE2Yzhi
ZDExZGFlZGU1MTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRp
c3QtaW5mby9SRUNPUkQKQEAgLTAsMCArMSw4IEBACitzaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNU
QUxMRVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJBUDd6ZU51d3ZGUWcs
NA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2JqQWNYR25pb3cyd3ln
NUJWS09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL01F
VEFEQVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEzbWtfeGtuWjhSVjR3
LDE5NDANCitzaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KK3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BDR21FUEhjLWdwQ3E1
QlJnLDExMA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQsc2hhMjU2PV9pVkhf
aVlFdEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KK3NpeC5weSxzaGEyNTY9
bzlXSE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywzMzA1MQ0KK3NpeC5w
eWMsLA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwMTIzNTUz
MzNlMDY2NGZhYzMxMjM4YWEwNDIxNmZmNTM2MjIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCkBAIC0wLDAgKzEsNiBAQAorV2hlZWwtVmVy
c2lvbjogMS4wCitHZW5lcmF0b3I6IGJkaXN0X3doZWVsICgwLjMyLjEpCitSb290LUlzLVB1cmVs
aWI6IHRydWUKK1RhZzogcHkyLW5vbmUtYW55CitUYWc6IHB5My1ub25lLWFueQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmUyZmNl
NDk4OTU1YjYyODAxNDYxOGIyOGM2YmNmMTUyNDY2YTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApAQCAtMCwwICsxIEBACitz
aXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzVlMWQyMmNiODYzMGNjZDIwYzIwM2Q2Mzg5YTVhZTYyNTAwYWY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lO
U1RBTExFUgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL1JFQ09SRAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5CmluZGV4IDZiZjRmZDM4MTA0NjIwN2E0Nzk0
YWVlMTdiZTZkMjJkYjIzN2YzMGEuLmQwYWVjZTg5ZmE0YWFlOTQ4ZDc1ZThlZjIyNzdjZTI0OTUx
ZWJiMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVy
c29uCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTI5LDcgKzI5LDcg
QEAgaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAKIF9fYXV0aG9yX18gPSAiQmVuamFtaW4gUGV0
ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IgotX192ZXJzaW9uX18gPSAiMS4xMS4wIgorX192
ZXJzaW9uX18gPSAiMS4xMy4wIgogCiAKICMgVXNlZnVsIGZvciB2ZXJ5IGNvYXJzZSB2ZXJzaW9u
IGRpZmZlcmVudGlhdGlvbi4KQEAgLTI1NSw4ICsyNTUsMTAgQEAgX21vdmVkX2F0dHJpYnV0ZXMg
PSBbCiAgICAgTW92ZWRBdHRyaWJ1dGUoInppcF9sb25nZXN0IiwgIml0ZXJ0b29scyIsICJpdGVy
dG9vbHMiLCAiaXppcF9sb25nZXN0IiwgInppcF9sb25nZXN0IiksCiAgICAgTW92ZWRNb2R1bGUo
ImJ1aWx0aW5zIiwgIl9fYnVpbHRpbl9fIiksCiAgICAgTW92ZWRNb2R1bGUoImNvbmZpZ3BhcnNl
ciIsICJDb25maWdQYXJzZXIiKSwKKyAgICBNb3ZlZE1vZHVsZSgiY29sbGVjdGlvbnNfYWJjIiwg
ImNvbGxlY3Rpb25zIiwgImNvbGxlY3Rpb25zLmFiYyIgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMykgZWxzZSAiY29sbGVjdGlvbnMiKSwKICAgICBNb3ZlZE1vZHVsZSgiY29weXJlZyIsICJj
b3B5X3JlZyIpLAogICAgIE1vdmVkTW9kdWxlKCJkYm1fZ251IiwgImdkYm0iLCAiZGJtLmdudSIp
LAorICAgIE1vdmVkTW9kdWxlKCJkYm1fbmRibSIsICJkYm0iLCAiZGJtLm5kYm0iKSwKICAgICBN
b3ZlZE1vZHVsZSgiX2R1bW15X3RocmVhZCIsICJkdW1teV90aHJlYWQiLCAiX2R1bW15X3RocmVh
ZCIpLAogICAgIE1vdmVkTW9kdWxlKCJodHRwX2Nvb2tpZWphciIsICJjb29raWVsaWIiLCAiaHR0
cC5jb29raWVqYXIiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVzIiwgIkNvb2tpZSIs
ICJodHRwLmNvb2tpZXMiKSwKQEAgLTYzNyw2ICs2MzksNyBAQCBpZiBQWTM6CiAgICAgaW1wb3J0
IGlvCiAgICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwogICAgIEJ5dGVzSU8gPSBpby5CeXRlc0lP
CisgICAgZGVsIGlvCiAgICAgX2Fzc2VydENvdW50RXF1YWwgPSAiYXNzZXJ0Q291bnRFcXVhbCIK
ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzFdIDw9IDE6CiAgICAgICAgIF9hc3NlcnRSYWlzZXNS
ZWdleCA9ICJhc3NlcnRSYWlzZXNSZWdleHAiCkBAIC04MjQsNyArODI3LDE1IEBAIGRlZiB3aXRo
X21ldGFjbGFzcyhtZXRhLCAqYmFzZXMpOgogICAgIGNsYXNzIG1ldGFjbGFzcyh0eXBlKToKIAog
ICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQpOgotICAgICAgICAg
ICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvWzoyXSA+PSAoMywgNyk6CisgICAgICAgICAgICAgICAgIyBUaGlzIHZlcnNpb24gaW50
cm9kdWNlZCBQRVAgNTYwIHRoYXQgcmVxdWlyZXMgYSBiaXQKKyAgICAgICAgICAgICAgICAjIG9m
IGV4dHJhIGNhcmUgKHdlIG1pbWljIHdoYXQgaXMgZG9uZSBieSBfX2J1aWxkX2NsYXNzX18pLgor
ICAgICAgICAgICAgICAgIHJlc29sdmVkX2Jhc2VzID0gdHlwZXMucmVzb2x2ZV9iYXNlcyhiYXNl
cykKKyAgICAgICAgICAgICAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3QgYmFzZXM6CisgICAg
ICAgICAgICAgICAgICAgIGRbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcworICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IGJhc2VzCisgICAgICAgICAg
ICByZXR1cm4gbWV0YShuYW1lLCByZXNvbHZlZF9iYXNlcywgZCkKIAogICAgICAgICBAY2xhc3Nt
ZXRob2QKICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKGNscywgbmFtZSwgdGhpc19iYXNlcyk6CkBA
IC04NDQsMTMgKzg1NSw3NCBAQCBkZWYgYWRkX21ldGFjbGFzcyhtZXRhY2xhc3MpOgogICAgICAg
ICAgICAgICAgIG9yaWdfdmFycy5wb3Aoc2xvdHNfdmFyKQogICAgICAgICBvcmlnX3ZhcnMucG9w
KCdfX2RpY3RfXycsIE5vbmUpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19fd2Vha3JlZl9fJywg
Tm9uZSkKKyAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX3F1YWxuYW1lX18nKToKKyAgICAgICAg
ICAgIG9yaWdfdmFyc1snX19xdWFsbmFtZV9fJ10gPSBjbHMuX19xdWFsbmFtZV9fCiAgICAgICAg
IHJldHVybiBtZXRhY2xhc3MoY2xzLl9fbmFtZV9fLCBjbHMuX19iYXNlc19fLCBvcmlnX3ZhcnMp
CiAgICAgcmV0dXJuIHdyYXBwZXIKIAogCitkZWYgZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0n
dXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIiIkNvZXJjZSAqKnMqKiB0byBzaXguYmlu
YXJ5X3R5cGUuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmljb2RlYCAtPiBlbmNv
ZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisKKyAgICBGb3IgUHl0aG9uIDM6
CisgICAgICAtIGBzdHJgIC0+IGVuY29kZWQgdG8gYGJ5dGVzYAorICAgICAgLSBgYnl0ZXNgIC0+
IGBieXRlc2AKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAg
ICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVsaWYgaXNpbnN0YW5j
ZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToKKyAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorCisK
K2RlZiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Cisg
ICAgIiIiQ29lcmNlICpzKiB0byBgc3RyYC4KKworICAgIEZvciBQeXRob24gMjoKKyAgICAgIC0g
YHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKwor
ICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAgICAgIC0gYGJ5dGVz
YCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uocywg
KHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3Qg
ZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorICAgIGlmIFBZMiBhbmQgaXNpbnN0YW5j
ZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykK
KyAgICBlbGlmIFBZMyBhbmQgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHMg
PSBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIHJldHVybiBzCisKKworZGVmIGVuc3Vy
ZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgIiIiQ29l
cmNlICpzKiB0byBzaXgudGV4dF90eXBlLgorCisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBg
dW5pY29kZWAgLT4gYHVuaWNvZGVgCisgICAgICAtIGBzdHJgIC0+IGB1bmljb2RlYAorCisgICAg
Rm9yIFB5dGhvbiAzOgorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorICAgICAgLSBgYnl0ZXNgIC0+
IGRlY29kZWQgdG8gYHN0cmAKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90
eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCisgICAgZWxp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBl
KHMpKQorCisKKwogZGVmIHB5dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZShrbGFzcyk6CiAgICAg
IiIiCi0gICAgQSBkZWNvcmF0b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9f
IG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCisgICAgQSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBkZWZp
bmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCiAgICAg
VW5kZXIgUHl0aG9uIDMgaXQgZG9lcyBub3RoaW5nLgogCiAgICAgVG8gc3VwcG9ydCBQeXRob24g
MiBhbmQgMyB3aXRoIGEgc2luZ2xlIGNvZGUgYmFzZSwgZGVmaW5lIGEgX19zdHJfXyBtZXRob2QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkK
aW5kZXggNDNlNzQyNmRlYTEyNDFiYmQzNzFkMmYyNGY2M2Y1MTA0MjdhNTE5Zi4uM2VlZmNlMzdj
MzI4ZDdiMTViMjNlZTgzZGQ4OThjNGIzZTU3NjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVz
dF9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykg
MjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTIyLDggKzIyLDkgQEAgaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGFiYwogCi1p
bXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKIAogaW1wb3J0IHNpeAogCkBAIC04MCw3ICs4MSw3IEBA
IGRlZiB0ZXN0X01BWFNJWkUoKToKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAg
ICMgQmVmb3JlIFB5dGhvbiAyLjYuCiAgICAgICAgIHBhc3MKLSAgICBweS50ZXN0LnJhaXNlcygK
KyAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciks
CiAgICAgICAgIG9wZXJhdG9yLm11bCwgW05vbmVdLCBzaXguTUFYU0laRSArIDEpCiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICBoYXZlX2dkYm0gPSBGYWxzZQogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fbW92ZWRf
YXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5z
dXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0xMjIsMzYgKzEyMywz
NiBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgICAgICAgICBfX2ltcG9y
dF9fKCJzaXgubW92ZXMuIiArIGl0ZW1fbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAiemlwX2xvbmdlc3QiIGFuZCBzeXMudmVyc2lvbl9p
bmZvIDwgKDIsIDYpOgotICAgICAgICAgICAgcHkudGVzdC5za2lwKCJ6aXBfbG9uZ2VzdCBvbmx5
IGF2YWlsYWJsZSBvbiAyLjYrIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ6aXBfbG9uZ2Vz
dCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgIGlmIGl0ZW1fbmFtZSA9PSAid2lucmVnIiBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCJ3aW4iKToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVs
ZSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVsZSIpCiAgICAg
ICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJ0a2ludGVyIik6CiAgICAgICAgICAgICBpZiBu
b3QgaGF2ZV90a2ludGVyOgotICAgICAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgicmVxdWlyZXMg
dGtpbnRlciIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIHRraW50ZXIi
KQogICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ0a2ludGVyX3R0ayIgYW5kIHN5cy52ZXJz
aW9uX2luZm9bOjJdIDw9ICgyLCA2KToKLSAgICAgICAgICAgICAgICBweS50ZXN0LnNraXAoInR0
ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgi
dHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogICAgICAgICBpZiBpdGVtX25hbWUuc3RhcnRz
d2l0aCgiZGJtX2dudSIpIGFuZCBub3QgaGF2ZV9nZGJtOgotICAgICAgICAgICAgcHkudGVzdC5z
a2lwKCJyZXF1aXJlcyBnZGJtIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBn
ZGJtIikKICAgICAgICAgcmFpc2UKICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwg
Nik6CiAgICAgICAgIGFzc2VydCBpdGVtX25hbWUgaW4gZGlyKHNpeC5tb3ZlcykKIAogCi1AcHku
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZv
ciBpdGVtIGluIHNpeC5fdXJsbGliX3BhcnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3Rf
bW92ZV9pdGVtc191cmxsaWJfcGFyc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBl
dmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKICAgICBpZiBpdGVtX25hbWUgPT0gIlBhcnNl
UmVzdWx0IiBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgyLCA1KToKLSAgICAgICAgcHkudGVzdC5z
a2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZvdW5kIG9uIDIuNSsiKQorICAgICAgICBweXRlc3Qu
c2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKICAgICBpZiBpdGVtX25h
bWUgaW4gKCJwYXJzZV9xcyIsICJwYXJzZV9xc2wiKSBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgy
LCA2KToKLSAgICAgICAgcHkudGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBuZXcgaW4gMi42IikK
KyAgICAgICAgcHl0ZXN0LnNraXAoInBhcnNlX3FzW2xdIGlzIG5ldyBpbiAyLjYiKQogICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNzZXJ0IGl0ZW1fbmFt
ZSBpbiBkaXIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSkKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
dGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX2Vy
cm9yX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfZXJyb3Io
aXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3Rs
eS4iIiIKQEAgLTE2MCw3ICsxNjEsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9lcnJv
cihpdGVtX25hbWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5lcnJvciwgaXRlbV9u
YW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVxdWVzdF9tb3ZlZF9hdHRyaWJ1
dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JlcXVlc3QoaXRlbV9uYW1lKToKICAg
ICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE2OSw3
ICsxNzAsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0KGl0ZW1fbmFtZSk6
CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlcXVlc3QsIGl0ZW1fbmFtZSkKIAogCi1A
cHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1l
IGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3Jlc3BvbnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVm
IHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1
cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE3OCw3ICsxNzksNyBA
QCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNwb25zZShpdGVtX25hbWUpOgogICAgIGdl
dGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZSwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Iml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0
ZW0gaW4gc2l4Ll91cmxsaWJfcm9ib3RwYXJzZXJfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVz
dF9tb3ZlX2l0ZW1zX3VybGxpYl9yb2JvdHBhcnNlcihpdGVtX25hbWUpOgogICAgICIiIkVuc3Vy
ZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMjQzLDcgKzI0NCw3IEBA
IGRlZiB0ZXN0X3ppcCgpOgogICAgIGFzc2VydCBzaXguYWR2YW5jZV9pdGVyYXRvcih6aXAocmFu
Z2UoMiksIHJhbmdlKDIpKSkgPT0gKDAsIDApCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm8gPCAoMiwgNikiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KSIpCiBkZWYgdGVzdF96aXBfbG9uZ2VzdCgpOgogICAgIGZyb20gc2l4
Lm1vdmVzIGltcG9ydCB6aXBfbG9uZ2VzdAogICAgIGl0ID0gemlwX2xvbmdlc3QocmFuZ2UoMiks
IHJhbmdlKDEpKQpAQCAtMzIxLDcgKzMyMiw3IEBAIGNsYXNzIFRlc3RDdXN0b21pemVkTW92ZXM6
CiAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3JlbW92ZShzZWxmKToKLSAgICAgICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5yZW1vdmVfbW92ZSwgImVnZ3MiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUsICJlZ2dzIikKIAog
CiBkZWYgdGVzdF9nZXRfdW5ib3VuZF9mdW5jdGlvbigpOgpAQCAtMzM3LDcgKzMzOCw3IEBAIGRl
ZiB0ZXN0X2dldF9tZXRob2Rfc2VsZigpOgogICAgICAgICAgICAgcGFzcwogICAgIHggPSBYKCkK
ICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2Rfc2VsZih4Lm0pIGlzIHgKLSAgICBweS50ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCisgICAgcHl0ZXN0
LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCiAKIAogZGVm
IHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlZiB0ZXN0
X2dldF9tZXRob2RfZnVuY3Rpb24oKToKICAgICAgICAgICAgIHBhc3MKICAgICB4ID0gWCgpCiAg
ICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uKHgubSkgaXMgWC5fX2RpY3RfX1sibSJd
Ci0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX2Z1bmN0
aW9uLCBoYXNhdHRyKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRf
bWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9jbG9z
dXJlKCk6CkBAIC0zNjQsNyArMzY1LDcgQEAgZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2NvZGUoKToK
ICAgICAgICAgcGFzcwogICAgIGFzc2VydCBpc2luc3RhbmNlKHNpeC5nZXRfZnVuY3Rpb25fY29k
ZShmKSwgdHlwZXMuQ29kZVR5cGUpCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAicHlweV92ZXJz
aW9uX2luZm8iKToKLSAgICAgICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5n
ZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dl
dF9mdW5jdGlvbl9kZWZhdWx0cygpOgpAQCAtNDA0LDcgKzQwNSw3IEBAIGRlZiB0ZXN0X2RpY3Rp
b25hcnlfaXRlcmF0b3JzKG1vbmtleXBhdGNoKToKICAgICAgICAgaXQgPSBtZXRoKGQpCiAgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpdCwgbGlzdCkKICAgICAgICAgYXNzZXJ0IGxpc3Qo
aXQpID09IGxpc3QoZ2V0YXR0cihkLCBuYW1lKSgpKQotICAgICAgICBweS50ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXguYWR2YW5jZV9pdGVyYXRvciwgaXQpCisgICAgICAgIHB5dGVzdC5y
YWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0KQogICAgICAgICBy
ZWNvcmQgPSBbXQogICAgICAgICBkZWYgd2l0aF9rdygqYXJncywgKiprdyk6CiAgICAgICAgICAg
ICByZWNvcmQuYXBwZW5kKGt3WyJrdyJdKQpAQCAtNDE2LDE3ICs0MTcsOSBAQCBkZWYgdGVzdF9k
aWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnVu
ZG8oKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgy
LCA3KSIsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3
KSIsCiAgICAgICAgICAgICAgICAgcmVhc29uPSJ2aWV3IG1ldGhvZHMgb24gZGljdGlvbmFyaWVz
IG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogZGVmIHRlc3RfZGljdGlvbmFyeV92aWV3cygpOgot
ICAgIGRlZiBzdG9ja19tZXRob2RfbmFtZSh2aWV3d2hhdCk6Ci0gICAgICAgICIiIkdpdmVuIGEg
bWV0aG9kIHN1ZmZpeCBsaWtlICJrZXlzIiBvciAidmFsdWVzIiwgcmV0dXJuIHRoZSBuYW1lCi0g
ICAgICAgIG9mIHRoZSBkaWN0IG1ldGhvZCB0aGF0IGRlbGl2ZXJzIHRob3NlIG9uIHRoZSB2ZXJz
aW9uIG9mIFB5dGhvbgotICAgICAgICB3ZSdyZSBydW5uaW5nIGluLiIiIgotICAgICAgICBpZiBz
aXguUFkzOgotICAgICAgICAgICAgcmV0dXJuIHZpZXd3aGF0Ci0gICAgICAgIHJldHVybiAndmll
dycgKyB2aWV3d2hhdAotCiAgICAgZCA9IGRpY3QoemlwKHJhbmdlKDEwKSwgKHJhbmdlKDExLCAy
MCkpKSkKICAgICBmb3IgbmFtZSBpbiAia2V5cyIsICJ2YWx1ZXMiLCAiaXRlbXMiOgogICAgICAg
ICBtZXRoID0gZ2V0YXR0cihzaXgsICJ2aWV3IiArIG5hbWUpCkBAIC00NDAsOCArNDMzLDggQEAg
ZGVmIHRlc3RfYWR2YW5jZV9pdGVyYXRvcigpOgogICAgIGl0ID0gaXRlcihsKQogICAgIGFzc2Vy
dCBzaXgubmV4dChpdCkgPT0gMQogICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gMgotICAgIHB5
LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKLSAgICBweS50ZXN0LnJh
aXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9w
SXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9u
LCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfaXRlcmF0b3IoKToKQEAgLTQ4OSw3ICs0ODIs
NyBAQCBkZWYgdGVzdF9jcmVhdGVfdW5ib3VuZF9tZXRob2QoKToKICAgICBkZWYgZihzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYKICAgICB1ID0gc2l4LmNyZWF0ZV91bmJvdW5kX21ldGhvZChm
LCBYKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKKyAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgdSkKICAgICBpZiBzaXguUFkyOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh1LCB0eXBlcy5NZXRob2RUeXBlKQogICAgIHggPSBYKCkKQEAgLTUzNywxMyArNTMwLDEzIEBA
IGRlZiB0ZXN0X3VuaWNocigpOgogCiBkZWYgdGVzdF9pbnQyYnl0ZSgpOgogICAgIGFzc2VydCBz
aXguaW50MmJ5dGUoMykgPT0gc2l4LmIoIlx4MDMiKQotICAgIHB5LnRlc3QucmFpc2VzKEV4Y2Vw
dGlvbiwgc2l4LmludDJieXRlLCAyNTYpCisgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIHNp
eC5pbnQyYnl0ZSwgMjU2KQogCiAKIGRlZiB0ZXN0X2J5dGUyaW50KCk6CiAgICAgYXNzZXJ0IHNp
eC5ieXRlMmludChzaXguYigiXHgwMyIpKSA9PSAzCiAgICAgYXNzZXJ0IHNpeC5ieXRlMmludChz
aXguYigiXHgwM1x4MDQiKSkgPT0gMwotICAgIHB5LnRlc3QucmFpc2VzKEluZGV4RXJyb3IsIHNp
eC5ieXRlMmludCwgc2l4LmIoIiIpKQorICAgIHB5dGVzdC5yYWlzZXMoSW5kZXhFcnJvciwgc2l4
LmJ5dGUyaW50LCBzaXguYigiIikpCiAKIAogZGVmIHRlc3RfYnl0ZXNpbmRleCgpOgpAQCAtNTU0
LDcgKzU0Nyw3IEBAIGRlZiB0ZXN0X2J5dGVzaXRlcigpOgogICAgIGl0ID0gc2l4Lml0ZXJieXRl
cyhzaXguYigiaGkiKSkKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9yZCgiaCIpCiAgICAg
YXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImkiKQotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJ
dGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24s
IHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVzdF9TdHJpbmdJTygpOgpAQCAtNjg5LDcgKzY4Miw3
IEBAIGRlZiB0ZXN0X3ByaW50XygpOgogICAgIGFzc2VydCBvdXQuZmx1c2hlZAogCiAKLUBweS50
ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwgNikiKQorQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYpIikKIGRlZiB0ZXN0
X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICAjIEZvb2wgdGhlIHR5cGUgY2hlY2tp
bmcgaW4gcHJpbnRfLgogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2l4LCAiZmlsZSIsIHNpeC5C
eXRlc0lPLCByYWlzaW5nPUZhbHNlKQpAQCAtNzAxLDE2ICs2OTQsMTYgQEAgZGVmIHRlc3RfcHJp
bnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gpOgogICAgIG91dCA9IHNpeC5CeXRlc0lPKCkKICAgICBv
dXQuZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgb3V0LmVycm9ycyA9ICJzdHJpY3QiCi0gICAgcHku
dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgucHJpbnRfLCBzaXgudSgiXHUwNTNj
IiksIGZpbGU9b3V0KQorICAgIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgu
cHJpbnRfLCBzaXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQogICAgIG91dC5lcnJvcnMgPSAiYmFj
a3NsYXNocmVwbGFjZSIKICAgICBzaXgucHJpbnRfKHNpeC51KCJcdTA1M2MiKSwgZW5kPSIiLCBm
aWxlPW91dCkKICAgICBhc3NlcnQgb3V0LmdldHZhbHVlKCkgPT0gc2l4LmIoIlxcdTA1M2MiKQog
CiAKIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbnMoKToKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIHNpeC5wcmludF8sIHg9MykKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNp
eC5wcmludF8sIGVuZD0zKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50
Xywgc2VwPTQyKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCB4PTMp
CisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIGVuZD0zKQorICAgIHB5
dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCiAKIAogZGVmIHRlc3Rf
d2l0aF9tZXRhY2xhc3MoKToKQEAgLTc0NCw3ICs3MzcsNTQgQEAgZGVmIHRlc3Rfd2l0aF9tZXRh
Y2xhc3MoKToKICAgICBhc3NlcnQgWS5fX21yb19fID09IChZLCBYLCBvYmplY3QpCiAKIAotQHB5
LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDApIikKK0BweXRl
c3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK2RlZiB0ZXN0
X3dpdGhfbWV0YWNsYXNzX3R5cGluZygpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHR5cGlu
ZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNraXAoInR5cGluZyBt
b2R1bGUgcmVxdWlyZWQiKQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KToKKyAgICAgICAgIyBHZW5lcmljcyB3
aXRoIGN1c3RvbSBtZXRhY2xhc3NlcyB3ZXJlIGJyb2tlbiBvbiBvbGRlciB2ZXJzaW9ucy4KKyAg
ICAgICAgY2xhc3MgTWV0YShNZXRhLCB0eXBpbmcuR2VuZXJpY01ldGEpOgorICAgICAgICAgICAg
cGFzcworICAgIFQgPSB0eXBpbmcuVHlwZVZhcignVCcpCisgICAgY2xhc3MgRyhzaXgud2l0aF9t
ZXRhY2xhc3MoTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0pKToKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0p
KToKKyAgICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHW2ludF0gaXMgbm90
IEdbR1tpbnRdXQorICAgIGFzc2VydCBHQVtpbnRdIGlzIG5vdCBHQVtHQVtpbnRdXQorICAgIGFz
c2VydCBHLl9fYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWMsKQorICAgIGFzc2VydCBHLl9fb3Jp
Z19iYXNlc19fID09ICh0eXBpbmcuR2VuZXJpY1tUXSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBp
Zigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykiKQorZGVmIHRlc3Rfd2l0aF9tZXRhY2xh
c3NfcGVwXzU2MCgpOgorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAgICBj
bGFzcyBBOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgQjoKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEZha2U6CisgICAgICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwgYmFzZXMpOgorICAg
ICAgICAgICAgcmV0dXJuIChBLCBCKQorICAgIGZha2UgPSBGYWtlKCkKKyAgICBjbGFzcyBHKHNp
eC53aXRoX21ldGFjbGFzcyhNZXRhLCBmYWtlKSk6CisgICAgICAgIHBhc3MKKyAgICBjbGFzcyBH
QShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIGZha2UpKToKKyAgICAgICAgcGFzcwor
ICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoR0Es
IGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAoQSwgQikKKyAgICBhc3Nl
cnQgRy5fX29yaWdfYmFzZXNfXyA9PSAoZmFrZSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBpZigi
c3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMCkiKQogZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3Nf
cHJlcGFyZSgpOgogICAgICIiIlRlc3QgdGhhdCB3aXRoX21ldGFjbGFzcyBjYXVzZXMgTWV0YS5f
X3ByZXBhcmVfXyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMuIiIiCiAK
QEAgLTg1Nyw3ICs4OTcsNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0
IE15U2xvdHMuX19zbG90c19fID09IFsiYSIsICJiIl0KICAgICBpbnN0YW5jZSA9IE15U2xvdHMo
KQogICAgIGluc3RhbmNlLmEgPSAiZm9vIgotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0
dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKIAogICAgICMgVGVz
dCBhIGNsYXNzIHdpdGggc3RyaW5nIGZvciBzbG90cy4KICAgICBjbGFzcyBNeVN0cmluZ1Nsb3Rz
KG9iamVjdCk6CkBAIC04NjYsOCArOTA2LDggQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygpOgog
ICAgIGFzc2VydCBNeVN0cmluZ1Nsb3RzLl9fc2xvdHNfXyA9PSAiYWIiCiAgICAgaW5zdGFuY2Ug
PSBNeVN0cmluZ1Nsb3RzKCkKICAgICBpbnN0YW5jZS5hYiA9ICJmb28iCi0gICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIsICJiYXoiKQotICAg
IHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImIiLCAi
YmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5j
ZSwgImEiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRy
LCBpbnN0YW5jZSwgImIiLCAiYmF6IikKIAogICAgIGNsYXNzIE15U2xvdHNXZWFrcmVmKG9iamVj
dCk6CiAgICAgICAgIF9fc2xvdHNfXyA9ICJfX3dlYWtyZWZfXyIsCkBAIC04NzUsNyArOTE1LDI3
IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgdHlwZShNeVNsb3RzV2Vh
a3JlZikgaXMgTWV0YQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkp
IikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpIikK
K2RlZiB0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkKCk6CisgICAgIyBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2lzc3Vlcy8yNTkKKyAgICBjbGFz
cyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBBOgorICAgICAgICBjbGFz
cyBCOiBwYXNzCisKKyAgICBleHBlY3RlZCA9ICd0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkLjxs
b2NhbHM+LkEuQicKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09IGV4cGVjdGVkCisK
KyAgICBjbGFzcyBBOgorICAgICAgICBAc2l4LmFkZF9tZXRhY2xhc3MoTWV0YSkKKyAgICAgICAg
Y2xhc3MgQjogcGFzcworCisgICAgYXNzZXJ0IEEuQi5fX3F1YWxuYW1lX18gPT0gZXhwZWN0ZWQK
KworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSBv
ciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkpIikKIGRlZiB0ZXN0X2Fz
c2VydENvdW50RXF1YWwoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0Q291bnRFcXVhbCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtODg3LDcgKzk0Nyw3IEBA
IGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBUZXN0QXNzZXJ0Q291bnRFcXVhbCgn
dGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIGNsYXNzIFRlc3RBc3Nl
cnRSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAt
ODk5LDcgKzk1OSw3IEBAIGRlZiB0ZXN0X2Fzc2VydFJlZ2V4KCk6CiAgICAgVGVzdEFzc2VydFJl
Z2V4KCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9u
X2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2lu
Zm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2VydFJhaXNlc1JlZ2V4KCk6CiAgICAgY2xh
c3MgVGVzdEFzc2VydFJhaXNlc1JlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVm
IHRlc3Qoc2VsZik6CkBAIC05MzIsMyArOTkyLDYxIEBAIGRlZiB0ZXN0X3B5dGhvbl8yX3VuaWNv
ZGVfY29tcGF0aWJsZSgpOgogICAgICAgICBhc3NlcnQgc3RyKG15X3Rlc3QpID09IHNpeC51KCJo
ZWxsbyIpCiAKICAgICBhc3NlcnQgZ2V0YXR0cihzaXgubW92ZXMuYnVpbHRpbnMsICdieXRlcycs
IHN0cikobXlfdGVzdCkgPT0gc2l4LmIoImhlbGxvIikKKworCitjbGFzcyBFbnN1cmVUZXN0czoK
KworICAgICMgZ3Jpbm5pbmcgZmFjZSBlbW9qaQorICAgIFVOSUNPREVfRU1PSkkgPSBzaXgudSgi
XFUwMDAxRjYwMCIpCisgICAgQklOQVJZX0VNT0pJID0gYiJceGYwXHg5Zlx4OThceDgwIgorCisg
ICAgZGVmIHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVf
c3RyKDgpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfYW5kX2VuY29kaW5nKHNlbGYpOgorICAgICAg
ICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSdsYXRpbi0x
JywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVu
Y29kZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9F
TU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgICBkZWYgdGVz
dF9lbnN1cmVfYmluYXJ5X3JhaXNlKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9i
aW5hcnkoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0
JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0
cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VN
T0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAj
IFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0g
c2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBieXRlcworICAgICAgICAg
ICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFuZCBpc2lu
c3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBieXRlcykKKyAgICAgICAgICAgICMgUFkzOiBieXRl
cyAtPiBieXRlcworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgYnl0ZXMpCisKKyAg
ICBkZWYgdGVzdF9lbnN1cmVfc3RyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfc3RyKHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJy
b3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9zdHIo
c2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0JykKKyAg
ICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0cgorICAg
ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFu
ZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAjIFBZMjog
c3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2Vy
dCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2Uo
Y29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkzOiBieXRlcyAtPiBzdHIK
KyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYuVU5JQ09ERV9FTU9K
SSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorCisgICAgZGVmIHRlc3Rf
ZW5zdXJlX3RleHQoc2VsZik6CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3Vy
ZV90ZXh0KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJp
Y3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV90ZXh0KHNlbGYuQklO
QVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGlm
IHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiB1bmljb2RlCisgICAgICAg
ICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBp
c2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1bmljb2RlKQorICAgICAgICAgICAgIyBQWTI6
IHN0ciAtPiB1bmljb2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBz
ZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHVuaWNv
ZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzogc3RyIC0+IHN0cgorICAgICAg
ICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09ERV9FTU9KSSBhbmQg
aXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAgICAgIyBQWTM6IGJ5
dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5V
TklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9n
CmluZGV4IDcwOTRkZjgyMzQyMmVkNDgzMjAzZDU2N2EwN2I1YjhhNDIxMTkzMWQuLmYwZjIyY2Ey
ZDZjMzRjMzVhMzM4YWUxN2EyNzEyNDIxYTM1NWVjZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCkBAIC0xNyw3ICsxNyw2
IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVB
RE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Rv
eC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RveC5pbmkKaW5kZXggZTg2NzNkYjBhNjlhZTQ2OTVlN2IxZmExNTJjNTMzYWExYjBmOThkMS4u
YmJlYzFhZmJiNmRkMmZkNmMwNDIyZWQ4OTNlMDlhYTJmYzlmMzhjMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94
LmluaQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkz
NyxweXB5LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkzNixweTM3fS1teXB5
CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5MzUscHkzNixweTM3
LHB5Mzh9LWZsYWtlOCx7cHkzNSxweTM2LHB5MzcscHkzOH0tbXlweQogc2tpcHNkaXN0PVRydWUK
K3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQpA
QCAtMTQsNyArMTUsNyBAQCBkZXBzID0KICAganNvbi1lCiAgIGpzb25zY2hlbWEKIAotY29tbWFu
ZHMgPSBweXRlc3Qge3Bvc2FyZ3N9Citjb21tYW5kcyA9IHB5dGVzdCAtLWNvdj10b29scyAtLWNv
di1yZXBvcnQ9dGVybSB7cG9zYXJnc30KIAogcGFzc2VudiA9CiAgIEhZUE9USEVTSVNfUFJPRklM
RQpAQCAtMjcsMTUgKzI4LDE5IEBAIGNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17
dG94aW5pZGlyfS9weTI3LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzUtZmxh
a2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4
IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citj
b21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5p
bmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzYtZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5p
ZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVu
ZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52
OnB5MzctZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRz
ID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bv
c2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkz
LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CisKK1t0ZXN0ZW52OnB5MzgtZmxha2U4XQorZGVwcyA9IC1y
cmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZp
Zz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNS1t
eXB5XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC01NCwzICs1OSw5IEBAIGRl
cHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAogY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4K
IGNvbW1hbmRzID0KICAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0t
bm8taW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0
b29scy5naXRpZ25vcmUKKworW3Rlc3RlbnY6cHkzOC1teXB5XQorZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX215cHkudHh0CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29tbWFuZHMgPQorICBt
eXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAt
LXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKaW5kZXggYzRjMWJjMjVjOGZkNDg5MzQ2M2I0
ZTEzYmQ4YjU0N2U2N2ZjZWM2Ny4uYzY3MjI5NDA2YmFhMjczZTQ3YzhmOGU0ZWNiZTc0NDlhY2Q5
ZjljNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCkBAIC0yMCw3ICsyMCw3IEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTgu
aW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXRlc3QuaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRy
aXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQppbmRleCAw
YzViYmZmNTYyOTg2OGZkYzQ4YTFhNDFjZjg4MmZhYmU1NjE3YzFiLi42NThlZDBlMDBmOGEzNDQ5
NDE2NzNlZWQ2NzFiYTlkZTMxNzg1OGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKQEAgLTM3MywxMCArMzczLDggQEAgY2xh
c3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICBwb3J0LAogICAgICAgICAgICAg
ICAgICB1cmxfcHJlZml4PSIvIiwKICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPU5vbmUs
Ci0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVBy
b3RvY29sKAotICAgICAgICAgICAgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCwgdGltZW91dD10aW1l
b3V0KQorICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVByb3RvY29s
KGhvc3QsIHBvcnQsIHVybF9wcmVmaXgpCiAgICAgICAgIHNlbGYucmVxdWVzdGVkX2NhcGFiaWxp
dGllcyA9IGNhcGFiaWxpdGllcwogICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IE5vbmUKICAg
ICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNDQ2LDcgKzQ0NCw3IEBAIGNsYXNzIFNl
c3Npb24ob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2Vzc2lv
bl9pZCA9IE5vbmUKIAotICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmwsIGJv
ZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gdGhlIHJlbW90ZSBlbmQgYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgogCkBAIC00NjcsNyAr
NDY1LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYu
dHJhbnNwb3J0LnNlbmQoCiAgICAgICAgICAgICBtZXRob2QsIHVybCwgYm9keSwKICAgICAgICAg
ICAgIGVuY29kZXI9cHJvdG9jb2wuRW5jb2RlciwgZGVjb2Rlcj1wcm90b2NvbC5EZWNvZGVyLAot
ICAgICAgICAgICAgc2Vzc2lvbj1zZWxmKQorICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLCB0aW1l
b3V0PXRpbWVvdXQpCiAKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDoKICAgICAg
ICAgICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC00OTUsNyArNDkz
LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiB2YWx1ZQogCi0g
ICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJpLCBib2R5PU5vbmUp
OgorICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gYW4gZXN0YWJsaXNoZWQgc2Vzc2lvbiBhbmQgdmFsaWRhdGUgaXRzIHN1Y2Nlc3MuCiAKQEAg
LTUxMiw3ICs1MTAsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgICAgICBhbiBl
cnJvci4KICAgICAgICAgIiIiCiAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oInNlc3Np
b24vJXMvIiAlIHNlbGYuc2Vzc2lvbl9pZCwgdXJpKQotICAgICAgICByZXR1cm4gc2VsZi5zZW5k
X2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHkpCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29t
bWFuZChtZXRob2QsIHVybCwgYm9keSwgdGltZW91dCkKIAogICAgIEBwcm9wZXJ0eQogICAgIEBj
b21tYW5kCkBAIC03MzcsNiArNzM1LDEwIEBAIGNsYXNzIEVsZW1lbnQob2JqZWN0KToKICAgICBk
ZWYgc2VsZWN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21t
YW5kKCJHRVQiLCAic2VsZWN0ZWQiKQogCisgICAgQGNvbW1hbmQKKyAgICBkZWYgc2NyZWVuc2hv
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIs
ICJzY3JlZW5zaG90IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBu
YW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJh
dHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCAxOGEzZDUyYzhhM2I1MzdiYTc1ZDQ4
N2ZkN2Y2YzVjZGUyMDZlYzNlLi5jODExZjZmMjZkYjc5MDhjYWU1MjhkMDRkMjVkNjg4Mjc4NGU3
NGExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJp
dmVyL3Byb3RvY29sLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQganNvbgogCiBpbXBvcnQgd2Vi
ZHJpdmVyCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKKwogCiAiIiJXZWJEcml2ZXIgd2ly
ZSBwcm90b2NvbCBjb2RlY3MuIiIiCiAKQEAgLTM5LDUgKzQxLDUgQEAgY2xhc3MgRGVjb2Rlcihq
c29uLkpTT05EZWNvZGVyKToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3Qp
IGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoKICAgICAgICAgICAg
IHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24p
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAgICAgICAgIHJl
dHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBwYXlsb2FkLml0ZXJpdGVt
cygpfQorICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29rKHYpIGZvciBrLCB2
IGluIGl0ZXJpdGVtcyhwYXlsb2FkKX0KICAgICAgICAgcmV0dXJuIHBheWxvYWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5
CmluZGV4IDMyYmEzMWEyYWU5YTk5NmE1YzU3ZmQwNDA2MTI5M2YzMTdlNWJmMDQuLmY4MTdlYzgx
YTk2ZmI5M2NjNWM2MDE1NGYwNTdkNzJlOTgzNzU2OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSwxMiAr
MSwxMiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzZWxlY3QKKworZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZSwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5l
Y3Rpb24KIGZyb20gc2l4Lm1vdmVzLnVybGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudCBhcyBodHRwbGliCiAKIGZyb20gLiBpbXBv
cnQgZXJyb3IKIAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCiAiIiJJbXBsZW1lbnRzIEhU
VFAgdHJhbnNwb3J0IGZvciB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wuIiIiCiAKIApAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICMg
PT4gd2ViZHJpdmVyLkVsZW1lbnQKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0LCB1cmxfcHJlZml4PSIvIiwgdGltZW91dD1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIpOgogICAgICAgICAiIiIKICAgICAg
ICAgQ29uc3RydWN0IGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSByZW1vdGUg
c2VydmVyLgogCkBAIC04NSw5ICs4NSw4IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0
KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAg
ICAgICAgIHNlbGYudXJsX3ByZWZpeCA9IHVybF9wcmVmaXgKLQogICAgICAgICBzZWxmLl9jb25u
ID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dAorICAgICAgICBzZWxmLl9s
YXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToK
ICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMDIsMTEgKzEwMSwxMSBAQCBjbGFzcyBIVFRQV2ly
ZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICIiIkdldHMgdGhlIGN1cnJlbnQgSFRUUCBjb25u
ZWN0aW9uLCBvciBsYXppbHkgY3JlYXRlcyBvbmUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
b25uOgogICAgICAgICAgICAgY29ubl9rd2FyZ3MgPSB7fQotICAgICAgICAgICAgaWYgc2VsZi5f
dGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjb25uX2t3YXJnc1sidGltZW91
dCJdID0gc2VsZi5fdGltZW91dAotCi0gICAgICAgICAgICBzZWxmLl9jb25uID0gaHR0cGxpYi5I
VFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3Ry
aWN0PVRydWUsICoqY29ubl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBub3QgUFkzOgorICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJzdHJpY3QiXSA9IFRydWUKKyAgICAgICAgICAgICMgV2Ug
YXJlIG5vdCBzZXR0aW5nIGFuIEhUVFAgdGltZW91dCBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IHdo
ZW4gdGhlCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gaXRzIGNyZWF0ZWQuIFRoZSBzZW5kIG1l
dGhvZCBoYXMgYSB0aW1lb3V0IHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIHNlbGYuX2Nv
bm4gPSBIVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QsIHNlbGYucG9ydCwgKipjb25uX2t3YXJncykK
IAogICAgICAgICByZXR1cm4gc2VsZi5fY29ubgogCkBAIC0xMjQsNiArMTIzLDcgQEAgY2xhc3Mg
SFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgIGhlYWRlcnM9Tm9uZSwKICAg
ICAgICAgICAgICBlbmNvZGVyPWpzb24uSlNPTkVuY29kZXIsCiAgICAgICAgICAgICAgZGVjb2Rl
cj1qc29uLkpTT05EZWNvZGVyLAorICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAg
ICAgICAqKmNvZGVjX2t3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBTZW5kIGEgY29tbWFu
ZCB0byB0aGUgcmVtb3RlLgpAQCAtMTcyLDEwICsxNzIsMTggQEAgY2xhc3MgSFRUUFdpcmVQcm90
b2NvbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZhaWxlZCB0
byBlbmNvZGUgcmVxdWVzdCBib2R5IGFzIEpTT046XG4iCiAgICAgICAgICAgICAgICAgICAgICIl
cyIgJSBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKIAotICAgICAgICByZXNwb25zZSA9IHNl
bGYuX3JlcXVlc3QobWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnMpCisgICAgICAgICMgV2hl
biB0aGUgdGltZW91dCB0cmlnZ2VycywgdGhlIFRlc3RSdW5uZXJNYW5hZ2VyIHRocmVhZCB3aWxs
IHJldXNlCisgICAgICAgICMgdGhpcyBjb25uZWN0aW9uIHRvIGNoZWNrIGlmIHRoZSBXZWJEcml2
ZXIgaXRzIGFsaXZlIGFuZCB3ZSBtYXkgZW5kCisgICAgICAgICMgcmFpc2luZyBhbiBodHRwbGli
LkNhbm5vdFNlbmRSZXF1ZXN0IGV4Y2VwdGlvbiBpZiB0aGUgV2ViRHJpdmVyIGlzCisgICAgICAg
ICMgbm90IHJlc3BvbmRpbmcgYW5kIHRoaXMgaHR0cGxpYi5yZXF1ZXN0KCkgY2FsbCBpcyBibG9j
a2VkIG9uIHRoZQorICAgICAgICAjIHJ1bm5lciB0aHJlYWQuIFdlIHVzZSB0aGUgYm9vbGVhbiBi
ZWxvdyB0byBjaGVjayBmb3IgdGhhdCBhbmQgcmVzdGFydAorICAgICAgICAjIHRoZSBjb25uZWN0
aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQg
PSBUcnVlCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRob2QsIHVyaSwgcGF5
bG9hZCwgaGVhZGVycywgdGltZW91dD1Ob25lKQorICAgICAgICBzZWxmLl9sYXN0X3JlcXVlc3Rf
aXNfYmxvY2tlZCA9IEZhbHNlCiAgICAgICAgIHJldHVybiBSZXNwb25zZS5mcm9tX2h0dHAocmVz
cG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipjb2RlY19rd2FyZ3MpCiAKLSAgICBkZWYgX3JlcXVl
c3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIF9y
ZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUsIHRpbWVvdXQ9
Tm9uZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90eXBlKToKICAgICAg
ICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCkBAIC0xODUsMTAgKzE5
MywyMyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAKICAgICAgICAgdXJsID0g
c2VsZi51cmwodXJpKQogCi0gICAgICAgIGlmIHNlbGYuX2hhc191bnJlYWRfZGF0YSgpOgorICAg
ICAgICBpZiBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCBvciBzZWxmLl9oYXNfdW5yZWFk
X2RhdGEoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBwYXlsb2FkLCBoZWFkZXJzKQotICAgICAgICByZXR1
cm4gc2VsZi5jb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKKworICAgICAgICAjIHRpbWVvdXQgZm9y
IHJlcXVlc3QgaGFzIHRvIGJlIHNldCBqdXN0IGJlZm9yZSBjYWxsaW5nIGh0dHBsaWIuZ2V0cmVz
cG9uc2UoKQorICAgICAgICAjIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgcmVzdG9yZWQganVzdCBh
ZnRlciB0aGF0LCBldmVuIG9uIGV4Y2VwdGlvbiByYWlzZWQKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c190aW1lb3V0ID0gc2Vs
Zi5fY29ubi5nZXR0aW1lb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uLnNldHRpbWVv
dXQodGltZW91dCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5jb25uZWN0aW9uLmdldHJl
c3BvbnNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQ6CisgICAg
ICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0aW1lb3V0KHByZXZpb3VzX3RpbWVvdXQpCisKKyAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgX2hhc191bnJlYWRfZGF0YShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4gYW5kIHNlbGYuX2Nvbm4uc29jayBhbmQgc2VsZWN0
LnNlbGVjdChbc2VsZi5fY29ubi5zb2NrXSwgW10sIFtdLCAwKVswXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9p
ZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2FuZHJvaWQucHkKaW5kZXggNTFkZWI3MWUzMTY1MzgxNDhlMDZiMTQ2YmNhNzU1NWZiN2Iw
NDZkZi4uNzQ0ZTEzNGQzODI2ZWFmZmViYTYzODc3MTNhMmNiMTMyYWUxYTlkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
YW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CkBAIC04OSw4ICs4OSw4IEBAIGRlZiBpbnN0YWxsX2Fu
ZHJvaWRfcGFja2FnZXMobG9nZ2VyLCBzZGtfcGF0aCwgbm9fcHJvbXB0PUZhbHNlKToKIAogICAg
ICNUT0RPOiBOb3Qgc3VyZSB3aGF0J3MgcmVhbGx5IG5lZWRlZCBoZXJlCiAgICAgcGFja2FnZXMg
PSBbInBsYXRmb3JtLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAiYnVpbGQtdG9vbHM7MjguMC4z
IiwKLSAgICAgICAgICAgICAgICAicGxhdGZvcm1zO2FuZHJvaWQtMjgiLAorICAgICAgICAgICAg
ICAgICJidWlsZC10b29sczsyOS4wLjMiLAorICAgICAgICAgICAgICAgICJwbGF0Zm9ybXM7YW5k
cm9pZC0yOSIsCiAgICAgICAgICAgICAgICAgImVtdWxhdG9yIl0KIAogICAgICMgVE9ETzogbWFr
ZSB0aGlzIHdvcmsgbm9uLWludGVybmFjdGl2ZWx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nl
ci5weQppbmRleCAzZWU5OGQ5NTllYzViZWZjNThiODg0ZTBlYzUzODVkNTU0YmM4NzI1Li4zNjZk
Yzc4MWQ5MGVlMjFiODIwYjkzMzRjNjllZGUyYzQ1MWNiNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2Jyb3dzZXIucHkKQEAgLTYsMjAgKzYsMTkgQEAgaW1wb3J0IHN0YXQKIGltcG9ydCBlcnJu
bwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVybHBhcnNlCiBm
cm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5k
X2V4ZWN1dGFibGUKIAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxp
dAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gdXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIs
IHVuemlwCitmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwgdW56aXAKIAogdW5h
bWUgPSBwbGF0Zm9ybS51bmFtZSgpCiAKICMgdGhlIHJvb3RVcmwgZm9yIHRoZSBmaXJlZm94LWNp
IGRlcGxveW1lbnQgb2YgVGFza2NsdXN0ZXIKLSMgKGFmdGVyIE5vdmVtYmVyIDksIGh0dHBzOi8v
ZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5tb3ppbGxhLmNvbS8pCi1GSVJFRk9YX0NJX1JPT1RfVVJM
ID0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JworRklSRUZPWF9DSV9ST09UX1VSTCA9ICdodHRw
czovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20nCiAKIAogZGVmIF9nZXRfZmls
ZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CkBAIC00MSw2ICs0MCwyMyBAQCBkZWYgaGFu
ZGxlX3JlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBleGMpOgogICAgICAgICByYWlzZQogCiAK
K2RlZiBnZXRfZXh0KGZpbGVuYW1lKToKKyAgICAiIiJHZXQgdGhlIGV4dGVuc2lvbiBmcm9tIGEg
ZmlsZW5hbWUgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciAudGFyLmZvbyIiIgorICAgIG5hbWUs
IGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgaWYgbmFtZS5lbmRzd2l0aCgi
LnRhciIpOgorICAgICAgICBleHQgPSAiLnRhciVzIiAlIGV4dAorICAgIHJldHVybiBleHQKKwor
CitkZWYgZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KGluZGV4LCBwYXRoKToKKyAgICBUQ19JTkRF
WF9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL2luZGV4L3YxLyIKKworICAgIHJl
c3AgPSBnZXQoVENfSU5ERVhfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJSAoaW5kZXgs
IHBhdGgpKQorICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisKKyAgICByZXR1cm4gcmVzcAor
CisKIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQog
CkBAIC00OCw4ICs2NCwxMyBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
bG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZG93bmxvYWQo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgotICAgICAgICAiIiJEb3dubG9hZCBhIHBh
Y2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlciIiIgorICAgIGRlZiBkb3dubG9hZChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgorICAgICAgICAiIiJE
b3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlcgorICAgICAgICA6
cGFyYW0gZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHB1dCB0aGUgZG93bG9hZGVkIHBhY2th
Z2UKKyAgICAgICAgOnBhcmFtIGNoYW5uZWw6IEJyb3dzZXIgY2hhbm5lbCB0byBkb3dubG9hZAor
ICAgICAgICA6cGFyYW0gcmVuYW1lOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBw
YWNrYWdlOyB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGlz
IHByZXNlcnZlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAog
CiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0xMzMsNyArMTU0LDcgQEAgY2xhc3MgRmlyZWZveChC
cm93c2VyKToKIAogICAgICAgICByZXR1cm4gZGVzdAogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHByb2R1
Y3QgPSB7CiAgICAgICAgICAgICAibmlnaHRseSI6ICJmaXJlZm94LW5pZ2h0bHktbGF0ZXN0LXNz
bCIsCiAgICAgICAgICAgICAiYmV0YSI6ICJmaXJlZm94LWJldGEtbGF0ZXN0LXNzbCIsCkBAIC0x
NjEsNyArMTgyLDcgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0
dHBzOi8vZG93bmxvYWQubW96aWxsYS5vcmcvP3Byb2R1Y3Q9JXMmb3M9JXMmbGFuZz1lbi1VUyIg
JSAocHJvZHVjdFtjaGFubmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NfYnVpbGRzW29zX2tl
eV0pCiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIEZpcmVmb3ggZnJvbSAl
cyIgJSB1cmwpCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsKQorICAgICAgICByZXNw
ID0gZ2V0KHVybCkKIAogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKIApAQCAtMTcyLDExICsxOTMs
MTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lc1swXQogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZp
bGVuYW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlb
MV0KKyAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxl
bmFtZSA9ICJmaXJlZm94LnRhci5iejIiCiAKKyAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAg
ICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAocmVuYW1lLCBnZXRfZXh0KGZpbGVuYW1lKSkKKwogICAg
ICAgICBpbnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKIAogICAg
ICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CkBAIC0zNjMsMTQgKzM4
NywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICB0YWdzID0gY2FsbCgiZ2l0
IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAiLS1yZWZzIiwKICAgICAgICAgICAgICAgICAgICAg
Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyLmdpdCIpCiAgICAgICAgIHJl
bGVhc2VfcmUgPSByZS5jb21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4oXGQrKVwuKFxkKyki
KQotICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IDAKKyAgICAgICAgbGF0ZXN0X3JlbGVhc2UgPSAo
MCwwLDApCiAgICAgICAgIGZvciBpdGVtIGluIHRhZ3Muc3BsaXQoIlxuIik6CiAgICAgICAgICAg
ICBtID0gcmVsZWFzZV9yZS5tYXRjaChpdGVtKQogICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdyb3VwcygpXQorICAg
ICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gbS5ncm91
cHMoKSkKICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID4gbGF0ZXN0X3JlbGVhc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGxhdGVzdF9yZWxlYXNlID0gdmVyc2lvbgotICAgICAgICBhc3NlcnQg
bGF0ZXN0X3JlbGVhc2UgIT0gMAorICAgICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2UgIT0gKDAs
MCwwKQogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKICAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgpAQCAtMzk3LDMy
ICs0MjEsMzIgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgcmV0dXJuIGZpbmRf
ZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyIikpCiAKICAgICBkZWYg
aW5zdGFsbF9nZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgotICAgICAgICBpbXBvcnQg
dGFyZmlsZQotICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKICAgICAgICAgc2VsZi5sb2dnZXIu
aW5mbygiQXR0ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5pZ2h0bHkiKQorCisg
ICAgICAgIHBsYXRmb3JtX2JpdHMgPSAoIjY0IiBpZiB1bmFtZVs0XSA9PSAieDg2XzY0IiBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgKCIzMiIgaWYgc2VsZi5wbGF0Zm9ybSA9PSAid2lu
IiBlbHNlICIiKSkKKyAgICAgICAgdGNfcGxhdGZvcm0gPSAiJXMlcyIgJSAoc2VsZi5wbGF0Zm9y
bSwgcGxhdGZvcm1fYml0cykKKworICAgICAgICBhcmNoaXZlX2V4dCA9ICIuemlwIiBpZiB1bmFt
ZVswXSA9PSAiV2luZG93cyIgZWxzZSAiLnRhci5neiIKKyAgICAgICAgYXJjaGl2ZV9uYW1lID0g
InB1YmxpYy9nZWNrb2RyaXZlciVzIiAlIGFyY2hpdmVfZXh0CisKICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcyA9IG1vemRvd25sb2FkLkRhaWx5U2NyYXBlcihicmFuY2g9Im1vemlsbGEtY2Vu
dHJhbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bj0iY29tbW9uLnRlc3RzLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uPWRlc3QpCi0gICAgICAgICAgICBwYWNrYWdlX3BhdGggPSBz
LmRvd25sb2FkKCkKLSAgICAgICAgZXhjZXB0IG1vemRvd25sb2FkLmVycm9ycy5Ob3RGb3VuZEVy
cm9yOgorICAgICAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rlcl9hcnRpZmFjdCgKKyAgICAg
ICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5nZWNrb2RyaXZlci4l
cyIgJSB0Y19wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICBhcmNoaXZlX25hbWUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJHZWNrb2Ry
aXZlciBkb3dubG9hZCBmYWlsZWQiKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZXhlX3N1ZmZpeCA9ICIuZXhlIiBpZiB1bmFtZVswXSA9PSAiV2luZG93
cyIgZWxzZSAiIgotICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4ocGFja2FnZV9wYXRoLCAi
ciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtZW1i
ZXIgPSBmLmdldG1lbWJlcigiYmluJXNnZWNrb2RyaXZlciVzIiAlIChvcy5wYXRoLnNlcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlX3N1ZmZpeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAjIFJlbW92ZSBiaW4vIGZy
b20gdGhlIHBhdGguCi0gICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG1lbWJlci5uYW1lKQotICAgICAgICAgICAgICAgIGYuZXh0cmFjdGFsbChtZW1iZXJzPVtt
ZW1iZXJdLCBwYXRoPWRlc3QpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihk
ZXN0LCBtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkV4dHJhY3Rl
ZCBnZWNrb2RyaXZlciB0byAlcyIgJSBwYXRoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgb3MudW5saW5rKHBhY2thZ2VfcGF0aCkKKyAgICAgICAgaWYgYXJjaGl2ZV9leHQgPT0gIi56
aXAiOgorICAgICAgICAgICAgdW56aXAocmVzcC5yYXcsIGRlc3QpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB1bnRhcihyZXNwLnJhdywgZGVzdCkKKworICAgICAgICBleGVfZXh0ID0gIi5l
eGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyJXMiICUgZXhlX2V4dCkKKworICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJFeHRyYWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUgcGF0aCkKIAogICAg
ICAgICByZXR1cm4gcGF0aAogCkBAIC00NDEsMzAgKzQ2NSwxOSBAQCBjbGFzcyBGaXJlZm94QW5k
cm9pZChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImZpcmVmb3hfYW5kcm9pZCIKICAgICByZXF1
aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IgogCi0gICAgZGVmIGRvd25sb2Fk
KHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgaWYgZGVzdCBp
cyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAogCi0gICAgICAgIGlmIEZJUkVGT1hf
Q0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAgICAgICAgICAgICMg
Tk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgTm92ZW1iZXIgOSwgMjAx
OQotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJodHRwczovL3F1ZXVlLnRhc2tjbHVzdGVy
Lm5ldC92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gImh0dHBzOi8vaW5kZXgudGFz
a2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFRDX1FVRVVFX0JB
U0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvcXVldWUvdjEvIgotICAgICAgICAgICAg
VENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9pbmRleC92MS8iCi0K
LQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX0lOREVYX0JBU0UgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3Qu
bW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCi0gICAgICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1
cygpCi0gICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkKLSAgICAgICAgdGFza19pZCA9IGluZGV4
WyJ0YXNrSWQiXQogCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQoVENfUVVFVUVfQkFTRSAr
ICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKSkKLSAgICAg
ICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rl
cl9hcnRpZmFjdCgKKyAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxhLWNlbnRyYWwubGF0ZXN0
Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiLAorICAgICAgICAgICAgInB1YmxpYy9idWlsZC9n
ZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKIAotICAgICAgICBhcGtfcGF0aCA9IG9zLnBhdGgu
am9pbihkZXN0LCAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCisgICAgICAgIGZpbGVuYW1l
ID0gImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiCisgICAgICAgIGlmIHJlbmFtZToKKyAgICAg
ICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChmaWxlbmFtZSlbMV0p
CisgICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGZpbGVuYW1lKQogCiAgICAg
ICAgIHdpdGggb3BlbihhcGtfcGF0aCwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUo
cmVzcC5jb250ZW50KQpAQCAtNTAwLDcgKzUxMyw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICBwcm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRz
X2Nocm9tZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVs
PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwg
cmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC02NTgsNyArNjcx
LDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJhc2UoQnJvd3Nlcik6CiAgICAgICAgIHN1cGVyKENo
cm9tZUFuZHJvaWRCYXNlLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAgICAgIHNlbGYuZGV2
aWNlX3NlcmlhbCA9IE5vbmUKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTc2Niw3
ICs3NzksNyBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJjaHJv
bWVfaW9zIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hyb21lX2lvcy50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04MDIsNyArODE1LDcgQEAgY2xhc3Mg
T3BlcmEoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlVuYWJsZSB0byBm
aW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODc0LDcgKzg4Nyw3IEBAIGNsYXNzIEVkZ2VDaHJvbWl1
bShCcm93c2VyKToKICAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJpdmVyIgogICAgIHJl
cXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04ODgsMTEgKzkwMSwxMyBAQCBjbGFzcyBFZGdlQ2hyb21p
dW0oQnJvd3Nlcik6CiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAg
ICMgVXNlIHBhdGhzIGZyb20gZGlmZmVyZW50IEVkZ2UgY2hhbm5lbHMgc3RhcnRpbmcgd2l0aCBS
ZWxlYXNlXEJldGFcRGV2XENhbmFyeQogICAgICAgICAgICAgICAgIHdpbnBhdGhzID0gW29zLnBh
dGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZVxcQXBwbGlj
YXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMo
IiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNhdGlv
biIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZ
U1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxcQXBwbGljYXRp
b24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIERldlxcQXBwbGljYXRp
b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNh
dGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygi
JFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxc
QXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFu
ZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdl
IERldlxcQXBwbGljYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZSBTeFNcXEFwcGxp
Y2F0aW9uIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2Vy
KCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBwbGljYXRpb24iKV0K
ICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKGJpbmFyeW5hbWUsIG9zLnBh
dGhzZXAuam9pbih3aW5wYXRocykpCiAgICAgICAgIGlmIHNlbGYucGxhdGZvcm0gPT0gIm1hY29z
IjoKICAgICAgICAgICAgIGJpbmFyeW5hbWUgPSAiTWljcm9zb2Z0IEVkZ2UgQ2FuYXJ5IgpAQCAt
OTczLDcgKzk4OCw3IEBAIGNsYXNzIEVkZ2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJlZGdl
IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMDA3LDcgKzEwMjIsNyBAQCBjbGFzcyBJbnRlcm5ldEV4
cGxvcmVyKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiaWUiCiAgICAgcmVxdWlyZW1lbnRzID0g
InJlcXVpcmVtZW50c19pZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0x
MDM1LDcgKzEwNTAsNyBAQCBjbGFzcyBTYWZhcmkoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YWZhcmkiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYWZhcmkudHh0IgogCi0g
ICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTEwNSwxNCArMTEyMCwxNSBAQCBjbGFzcyBT
ZXJ2byhCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQuc2Vydm8ub3Jn
L25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRlbnNpb24pCiAgICAg
ICAgIHJldHVybiBnZXQodXJsKQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwg
Y2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRlc3QgaXMgTm9uZToK
ICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAogICAgICAgICByZXNwID0gc2VsZi5fZ2V0KGRl
c3QsIGNoYW5uZWwpCiAgICAgICAgIF8sIGV4dGVuc2lvbiwgXyA9IHNlbGYucGxhdGZvcm1fY29t
cG9uZW50cygpCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAic2Vydm8t
bGF0ZXN0JXMiICUgKGV4dGVuc2lvbiwpKSwgInciKSBhcyBmOgorICAgICAgICBmaWxlbmFtZSA9
IHJlbmFtZSBpZiByZW5hbWUgaXMgbm90IE5vbmUgZWxzZSAic2Vydm8tbGF0ZXN0IgorICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICIlcyVzIiAlIChmaWxlbmFtZSwgZXh0ZW5z
aW9uLCkpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHJlc3AuY29udGVudCkKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgpAQCAt
MTE1OSw3ICsxMTc1LDcgQEAgY2xhc3MgU2F1Y2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YXVjZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhdWNlLnR4dCIKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExODQsNyArMTIwMCw3IEBAIGNsYXNzIFdlYktp
dChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC0xMjUwLDcgKzEyNjYsNyBAQCBjbGFzcyBFcGlwaGFueShCcm93c2VyKToKICAgICBwcm9kdWN0
ID0gImVwaXBoYW55IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZXBpcGhhbnku
dHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1O
b25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNv
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L2NvbW1hbmRzLmpzb24KaW5kZXggNjBmZTE2MjFhZjBkZWNkMGZhYTQzNGYyNmRjYmE5OTUxNTQx
NzNlNy4uYTQ3YWI0MGQ3Mjg0N2Q1ZjUzNmUwYWMyZTAyZWIzZmUwZmVhMjMzYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
Y29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCkBAIC01Miw3ICs1Miw2IEBACiAgICAgInBh
cnNlciI6ICJnZXRfcGFyc2VyIiwKICAgICAiaGVscCI6ICJJbnN0YWxsIGJyb3dzZXIgY29tcG9u
ZW50cyIsCiAgICAgImluc3RhbGwiOiBbCi0gICAgICAibW96ZG93bmxvYWQiLAogICAgICAgIm1v
emluc3RhbGwiCiAgICAgXQogICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKaW5k
ZXggMjQ5MTVmMGM5OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4Yy4uNmViNTlmODE0YmYw
OGQxMzlkNTk3YTRiNGIyNmE3ZDdhYTkyMGZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0
YWxsLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYnJvd3Nlcgog
aW1wb3J0IHN5cwotCitmcm9tIC4gaW1wb3J0IGJyb3dzZXIKIAogbGF0ZXN0X2NoYW5uZWxzID0g
ewogICAgICdmaXJlZm94JzogJ25pZ2h0bHknLApAQCAtNDQsNiArNDMsOSBAQCBkZWYgZ2V0X3Bh
cnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93c2VyIHJlbGVhc2Ug
b24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRv
d25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQgZG9uJ3QgaW5zdGFs
bCBpdCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZW5hbWUnLCBhY3Rpb249InN0b3Jl
IiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRmlsZW5hbWUs
IGV4Y2x1ZGluZyBleHRlbnNpb24gZm9yIGRvd25sb2FkZWQgYXJjaGl2ZSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiKG9ubHkgd2l0aCAtLWRvd25sb2FkLW9ubHkpIikKICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctZCcsICctLWRlc3RpbmF0aW9uJywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2ZpbGVzeXN0ZW0gZGlyZWN0b3J5IHRvIHBsYWNlIHRoZSBjb21wb25lbnQnKQog
ICAgIHJldHVybiBwYXJzZXIKQEAgLTc2LDEwICs3OCwxMSBAQCBkZWYgcnVuKHZlbnYsICoqa3dh
cmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIC0tZGVz
dGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52aXJvbm1lbnQiKQog
CiAgICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBkZXN0aW5hdGlvbiwg
Y2hhbm5lbCwKLSAgICAgICAgICAgIGRvd25sb2FkX29ubHk9a3dhcmdzWyJkb3dubG9hZF9vbmx5
Il0pCisgICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxvYWRfb25seSJdLCBy
ZW5hbWU9a3dhcmdzWyJyZW5hbWUiXSkKIAogCi1kZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQs
IGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sb2FkX29u
bHk9RmFsc2UpOgorZGVmIGluc3RhbGwobmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbiwgY2hh
bm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9hZF9vbmx5PUZhbHNlLAorICAgICAg
ICAgICAgcmVuYW1lPU5vbmUpOgogICAgIGlmIGxvZ2dlciBpcyBOb25lOgogICAgICAgICBpbXBv
cnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaW5zdGFsbCIp
CkBAIC05MSw2ICs5NCw5IEBAIGRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRp
b24sIGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvCiAKICAgICBzdWJjbGFz
cyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5cy5zdGRvdXQud3JpdGUo
J05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBvbmVudCkpCi0gICAgcGF0
aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3RpbmF0aW9uLCBj
aGFubmVsPWNoYW5uZWwpCisgICAga3dhcmdzID0ge30KKyAgICBpZiBkb3dubG9hZF9vbmx5IGFu
ZCByZW5hbWU6CisgICAgICAgIGt3YXJnc1sicmVuYW1lIl0gPSByZW5hbWUKKyAgICBwYXRoID0g
Z2V0YXR0cihzdWJjbGFzcyhsb2dnZXIpLCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24sIGNoYW5u
ZWw9Y2hhbm5lbCwgKiprd2FyZ3MpCiAgICAgaWYgcGF0aDoKICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBkb3dubG9hZF9vbmx5
IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKaW5kZXggMzU4
NjdjNGNjYmZlOTVjNGU3MWE4ZDcxY2U5MGE3YjM3ODk1MWZkNS4uNmIwOWNjOGJkYWJlYzljNmEz
NmVlMjU3MjkzYmU5MDJjNzk4YjE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKQEAgLTIsNSAr
Miw2IEBAIHRvb2xzL2NpLwogdG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8KIHRvb2xzL21hbmlm
ZXN0LwordG9vbHMvcXVpYy8KIHRvb2xzL3NlcnZlLwogdG9vbHMvd3B0LwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVx
dWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKaW5kZXggNTY2MDgzY2I2YmU4OWEwM2U0OGNj
NWMxYTBhODhmYzVjZTUzYTg1My4uM2JhZWZhNTBlYTk4MTk3NGJlNjZiNmUyMjZlMDUwZTU5ZTAz
NGMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CkBAIC0x
ICsxLDIgQEAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3RzPT0yLjIzLjAKK21vemluZm89PTEu
Mi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEy
MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CmluZGV4IGM0Y2JjMjk0M2I3Y2UwMmVm
MmE1OGY2NWQzNGFiNzE3YmZiMGM5ODEuLjE4OTNmZGVmYTgzNDZlOGY5NjllNDE3ODlkZjZlM2Rk
ZDg1NDA2MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQpAQCAtMTA2LDExICsx
MDYsMTQgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWF4aW11bSBudW1iZXIgb2YgcmV2
aXNpb25zIHRvIGJlIHJldHVybmVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRoZSBjb21tYW5kIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBoZWxwPSJkZWJ1ZyBsb2dnaW5nIikKICAgICByZXR1cm4gcGFyc2Vy
CiAKIAogZGVmIHJ1bl9yZXZfbGlzdCgqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+
IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KCd2ZXJib3NlJyk6CisgICAgICAgIGxvZ2dlci5zZXRM
ZXZlbChsb2dnaW5nLkRFQlVHKQogICAgICMgImVwb2NoX3RocmVzaG9sZCIgaXMgYSBzYWZldHkg
bWFyZ2luLiBBZnRlciB0aGlzIHRpbWUgaXQgaXMgZmluZSB0bwogICAgICMgYXNzdW1lIHRoYXQg
YW55IHRhZ3MgYXJlIGNyZWF0ZWQgYW5kIHB1c2hlZC4KICAgICBlcG9jaF90aHJlc2hvbGQgPSA2
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCAwYzczMmU3YWU4YWVlN2Q0NDEwMTU2NDJi
YThmMmZjYmQ3ZTY2ZTBlLi5hOWZkZWFkYTFlYzc4MGE1MDA5M2YyMjE2NzNjZjQwNjg2NGUzNmMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0xODMsNiArMTgzLDE2IEBAIGNsYXNzIEJy
b3dzZXJTZXR1cChvYmplY3QpOgogICAgIGRlZiBzZXR1cChzZWxmLCBrd2FyZ3MpOgogICAgICAg
ICBzZWxmLnNldHVwX2t3YXJncyhrd2FyZ3MpCiAKK2RlZiBzYWZlX3Vuc2V0ZW52KGVudl92YXIp
OgorICAgICIiIlNhZmVseSByZW1vdmUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICBQ
eXRob24zIGRvZXMgbm90IHN1cHBvcnQgb3MudW5zZXRlbnYgaW4gV2luZG93cyBmb3IgcHl0aG9u
PDMuOSwgc28gd2UgYmV0dGVyCisgICAgcmVtb3ZlIHRoZSB2YXJpYWJsZSBkaXJlY3RseSBmcm9t
IG9zLmVudmlyb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBkZWwgb3MuZW52aXJvbltl
bnZfdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwogCiBjbGFzcyBGaXJl
Zm94KEJyb3dzZXJTZXR1cCk6CiAgICAgbmFtZSA9ICJmaXJlZm94IgpAQCAtMjQzLDkgKzI1Myw5
IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlhIHlvdXIgT1MgcGFja2FnZSBtYW5h
Z2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSdW5uaW5nIGlu
IGhlYWRsZXNzIG1vZGUsIHBhc3MgLS1uby1oZWFkbGVzcyB0byBkaXNhYmxlIikKIAogICAgICAg
ICAjIFR1cm4gb2ZmIEZpcmVmb3ggV2ViUlRDIElDRSBsb2dnaW5nIG9uIFdQVCAodHVybmVkIG9u
IGJ5IG1venJ1bm5lcikKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0xFVkVMJykKLSAgICAg
ICAgb3MudW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKLSAgICAgICAgb3MudW5zZXRlbnYo
J1JfTE9HX1ZFUkJPU0UnKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19MRVZFTCcpCisg
ICAgICAgIHNhZmVfdW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKKyAgICAgICAgc2FmZV91
bnNldGVudignUl9MT0dfVkVSQk9TRScpCiAKICAgICAgICAgIyBBbGxvdyBXZWJSVEMgdGVzdHMg
dG8gY2FsbCBnZXRVc2VyTWVkaWEuCiAgICAgICAgIGt3YXJnc1siZXh0cmFfcHJlZnMiXS5hcHBl
bmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCkBAIC03MDUsOCArNzE1LDkg
QEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0
ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVudiwgcHJvbXB0PVRy
dWUsIGluc3RhbGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgogICAgIGZyb20gd3B0cnVubmVy
IGltcG9ydCB3cHRjb21tYW5kbGluZQorICAgIGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAot
ICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhrd2FyZ3MuaXRlcml0ZW1zKCkpCisgICAga3dhcmdz
ID0gdXRpbHMuS3dhcmdzKGl0ZXJpdGVtcyhrd2FyZ3MpKQogCiAgICAgcHJvZHVjdF9wYXJ0cyA9
IGt3YXJnc1sicHJvZHVjdCJdLnNwbGl0KCI6IikKICAgICBrd2FyZ3NbInByb2R1Y3QiXSA9IHBy
b2R1Y3RfcGFydHNbMF0ucmVwbGFjZSgiLSIsICJfIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RmaWxlcy5weQppbmRleCBjZjEyYTU5YzhlNjhhNzBmNzgyNTYzYTgxYzE1MTEyNDI5NjJlZGYz
Li5mMjk2MGU4ZjUxZTQ0NWUzZjZmNTNiYThlN2MwMTQ1YWE1MDcyMDM4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdGZpbGVzLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAgZGVmIGFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtUZXh0XQogICAgIG5v
bnRlc3RzX2NoYW5nZWQgPSBzZXQoZmlsZXNfY2hhbmdlZCkKICAgICB3cHRfbWFuaWZlc3QgPSBs
b2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIG1hbmlmZXN0X3VwZGF0ZSkKIAotICAgIHRlc3Rf
dHlwZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0KKyAgICB0ZXN0X3R5
cGVzID0gWyJjcmFzaHRlc3QiLCAidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQog
ICAgIHN1cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQogICAgICAg
ICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0ZXJ0eXBlcygi
c3VwcG9ydCIpfQogICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9v
dCwgcGF0aCkKQEAgLTI3OCw4ICsyNzgsOCBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVz
X2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgICAgICAgICBmdWxsX3BhdGgg
PSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHJlcG9fcGF0aFsxOl0ucmVwbGFjZSgiLyIsIG9zLnBh
dGguc2VwKSkKICAgICAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzLmFkZCgoZnVsbF9wYXRoLCBy
ZXBvX3BhdGgpKQogCi0gICAgaW50ZXJmYWNlX25hbWUgPSBsYW1iZGEgeDogb3MucGF0aC5zcGxp
dGV4dChvcy5wYXRoLmJhc2VuYW1lKHgpKVswXQotICAgIGludGVyZmFjZXNfY2hhbmdlZF9uYW1l
cyA9IG1hcChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlc19jaGFuZ2VkKQorICAgIGludGVyZmFj
ZXNfY2hhbmdlZF9uYW1lcyA9IFtvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaW50
ZXJmYWNlKSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGludGVyZmFj
ZSBpbiBpbnRlcmZhY2VzX2NoYW5nZWRdCiAKICAgICBkZWYgYWZmZWN0ZWRfYnlfd2RzcGVjKHRl
c3QpOgogICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKQEAgLTMyNCw5ICszMjQsOSBAQCBk
ZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1Rl
eHRdCiAKICAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwgInJiIikgYXMgZmg6
CiAgICAgICAgICAgICAgICAgcmF3X2ZpbGVfY29udGVudHMgPSBmaC5yZWFkKCkgICMgdHlwZTog
Ynl0ZXMKLSAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJc
eGZlXHhmZiIpOgorICAgICAgICAgICAgICAgIGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZlXHhmZiIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikgICMgdHlwZTogVGV4
dAotICAgICAgICAgICAgICAgIGVsaWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhm
Zlx4ZmUiKToKKyAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZmXHhmZSIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVf
Y29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQpAQCAtMzk2LDcgKzM5Niw3IEBAIGRl
ZiBydW5fY2hhbmdlZF9maWxlcygqKmt3YXJncyk6CiAgICAgc2VwYXJhdG9yID0gIlwwIiBpZiBr
d2FyZ3NbIm51bGwiXSBlbHNlICJcbiIKIAogICAgIGZvciBpdGVtIGluIHNvcnRlZChjaGFuZ2Vk
KToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvcy5wYXRoLnJlbHBhdGgoaXRlbS5lbmNvZGUo
InV0ZjgiKSwgd3B0X3Jvb3QpICsgc2VwYXJhdG9yKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KG9zLnBhdGgucmVscGF0aChzaXguZW5zdXJlX3N0cihpdGVtKSwgd3B0X3Jvb3QpICsgc2VwYXJh
dG9yKQogCiAKIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4IDI1YjY2ZTdkOTIy
ZjU0ZWRmMTk3YmFhYWY0MmMyNmM5ZmNlMDQ2MjEuLmU3YzMyYTM2MjExODYwODYxMDJkNWI0NGFh
ZGUzYzdmMTc1ZjA3YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90
ZXN0X2Jyb3dzZXIucHkKQEAgLTE1LDExICsxNSwxMSBAQCBkZWYgdGVzdF9zYWZhcmlfdmVyc2lv
bihtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBzYWZhcmkgPSBicm93c2VyLlNhZmFyaShsb2dn
ZXIpCiAKICAgICAjIFNhZmFyaQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJworICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNhZmFyaSAxMi4xICgx
NDYwNy4xLjExKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0i
c2FmYXJpZHJpdmVyIikgPT0gJzEyLjEgKDE0NjA3LjEuMTEpJwogCiAgICAgIyBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3Ci0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
SW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYw
Ny4xLjkuMC4xKScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInSW5j
bHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYwNy4x
LjkuMC4xKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2Fm
YXJpZHJpdmVyIikgPT0gJ1RlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2MDcuMS45
LjAuMSknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBAIC0zMCwx
MSArMzAsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3ZlcnNpb25fZXJyb3JzKG1vY2tlZF9jaGVja19v
dXRwdXQpOgogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYHNh
ZmFyaWRyaXZlciAtLXZlcnNpb25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnJldHVybl92YWx1ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2VkX2NoZWNrX291dHB1
dC5yZXR1cm5fdmFsdWUgPSBiJ2dpYmJlcmlzaCcKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24o
d2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCiAgICAgIyBgc2FmYXJp
ZHJpdmVyIC0tdmVyc2lvbmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIFNhZmFyaSA8PTEyLjApCi0g
ICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZHVtbXknCisgICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15JwogICAgIG1vY2tlZF9jaGVja19v
dXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigxLCAnY21k
JykKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJp
dmVyIikgaXMgTm9uZQogCkBAIC00NCwxMSArNDQsMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21p
bmlicm93c2VyX3ZlcnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgd2Via2l0Z3RrX21p
bmlicm93c2VyID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3Nlcihsb2dnZXIpCiAKICAgICAj
IHN0YWJsZSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
V2ViS2l0R1RLIDIuMjYuMVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gYidXZWJLaXRHVEsgMi4yNi4xXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nl
ci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNi4xJwogCiAgICAgIyBuaWdo
dGx5IHZlcnNpb24KLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdXZWJL
aXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJu
X3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJwogICAgIGFzc2VydCB3ZWJr
aXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgPT0gJzIuMjcu
MSAocjI1MDgyMyknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBA
IC01OSwxMSArNTksMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmlicm93c2VyX3ZlcnNpb25f
ZXJyb3JzKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2VyIC0tdmVyc2lvbmAg
cmV0dXJuIGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0g
J2dpYmJlcmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInZ2li
YmVyaXNoJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9
J01pbmlCcm93c2VyJykgaXMgTm9uZQogCiAgICAgIyBgTWluaUJyb3dzZXIgLS12ZXJzaW9uYCBm
YWlscyAoYXMgaXQgZG9lcyBmb3IgTWluaUJyb3dzZXIgPD0gMi4yNi4wKQotICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1vY2tlZF9jaGVja19vdXRw
dXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnNpZGVf
ZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpCiAgICAgYXNz
ZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSBp
cyBOb25lCiAKQEAgLTkzLDExICs5MywxMSBAQCBkZWYgdGVzdF93ZWJraXRndGtfbWluaWJyb3dz
ZXJfZmluZF9iaW5hcnkobW9ja2VkX29zX3BhdGhfaXNmaWxlKToKICAgICAjIEZvdW5kIG9uIHRo
ZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBTUQ2NCAoZ2NjIGF2YWlsYWJsZSBidXQgZ2l2ZXMg
YW4gZXJyb3IpCiAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQgPSAnL3Vzci9saWIv
eDg2XzY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICBtb2NrZWRf
b3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgcGF0aDogcGF0aCBpbiBbZGViaWFu
X21pbmlicm93c2VyX3BhdGhfYW1kNjQsICcvdXNyL2Jpbi9nY2MnXQotICAgIHdpdGggbW9jay5w
YXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSAnZXJyb3InLCBz
aWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKSk6Cisg
ICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1
ZSA9IGInZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
KDEsICdjbWQnKSk6CiAgICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIuZmluZF9i
aW5hcnkoKSA9PSBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NAogCiAgICAgICAgICMgRm91
bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFSTTY0IChnY2MgYXZhaWxhYmxlKQog
ICAgICAgICBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCA9ICcvdXNyL2xpYi9hYXJjaDY0
LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICAgICAgbW9ja2VkX29z
X3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGggaW4gW2RlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICAgICAgd2l0aCBtb2Nr
LnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1ZSA9ICdhYXJjaDY0
LWxpbnV4LWdudScpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tf
b3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidhYXJjaDY0LWxpbnV4LWdudScpOgogICAgICAgICAg
ICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgpID09IGRlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9tYXJrZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5YWQ5YzQ4OTA2NzY2NjI0ZWM1OTRj
OTk0ZDUyZTcwYzk2ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQpA
QCAtMCwwICsxLDM1IEBACitmcm9tIHRvb2xzLndwdCBpbXBvcnQgbWFya2Rvd24KKworZGVmIHRl
c3RfZm9ybWF0X2NvbW1lbnRfdGl0bGUoKToKKyAgICBhc3NlcnQgJyMgQnJvd3NlciAjJyA9PSBt
YXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgiYnJvd3NlciIpCisgICAgYXNzZXJ0ICcjIEJy
b3dzZXIgKGNoYW5uZWwpICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50X3RpdGxlKCJicm93
c2VyOmNoYW5uZWwiKQorCitkZWYgdGVzdF9tYXJrZG93bl9hZGp1c3QoKToKKyAgICBhc3NlcnQg
dSdcXHQnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHQnKQorICAgIGFzc2VydCB1J1xc
cicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdccicpCisgICAgYXNzZXJ0IHUnXFxuJyA9
PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1xuJykKKyAgICBhc3NlcnQgdScnID09IG1hcmtk
b3duLm1hcmtkb3duX2FkanVzdCgnYCcpCisgICAgYXNzZXJ0IHUnXFx8JyA9PSBtYXJrZG93bi5t
YXJrZG93bl9hZGp1c3QoJ3wnKQorICAgIGFzc2VydCB1J1xcdFxcclxcblxcfCcgPT0gbWFya2Rv
d24ubWFya2Rvd25fYWRqdXN0KCdcdFxyXG5gfCcpCisKK3Jlc3VsdCA9ICcnCitkZWYgbG9nKHRl
eHQpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICByZXN1bHQgKz0gdGV4dAorCitkZWYgdGVzdF90
YWJsZSgpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICBoZWFkaW5ncyA9IFsnaDEnLCdoMiddCisg
ICAgZGF0YSA9IFtbJzAnLCAnMSddXQorICAgIG1hcmtkb3duLnRhYmxlKGhlYWRpbmdzLCBkYXRh
LCBsb2cpCisgICAgYXNzZXJ0ICgifCBoMSB8IGgyIHwiCisgICAgICAgICAgICAifC0tLS18LS0t
LXwiCisgICAgICAgICAgICAifCAwICB8IDEgIHwiKSA9PSByZXN1bHQKKworICAgIHJlc3VsdCA9
ICcnCisgICAgZGF0YS5hcHBlbmQoWydhYWEnLCAnYmInXSkKKyAgICBtYXJrZG93bi50YWJsZSho
ZWFkaW5ncywgZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgIGgxIHwgaDIgfCIKKyAgICAgICAg
ICAgICJ8LS0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICAgfCAxICB8IgorICAgICAgICAg
ICAgInwgYWFhIHwgYmIgfCIpID09IHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF9yZXZsaXN0LnB5CmluZGV4IGVjMmE2Yjg5OWQ1ZDFhOTI3ZGNhZDFmOWE3
NTgzZjk4N2EzYWQ5NDcuLjMwMjA4ZjRjZjY4ZDc5NTk2NmU3ODU4ZGFhMDczMGI2OGZhM2U5MGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkK
QEAgLTExLDEwICsxMSwxMyBAQCBkZWYgdGVzdF9jYWxjdWxhdGVfY3V0b2ZmX2RhdGUoKToKIAog
CiBkZWYgdGVzdF9wYXJzZV9lcG9jaCgpOgotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2No
KGIiMTBoIikgPT0gMzYwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaChiIjEwZCIp
ID09IDg2NDAwMAotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIiMTB3IikgPT0gNjA0
ODAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGgiKSA9PSAzNjAwMAorICAg
IGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGQiKSA9PSA4NjQwMDAKKyAgICBhc3NlcnQg
cmV2bGlzdC5wYXJzZV9lcG9jaCgiMTB3IikgPT0gNjA0ODAwMAogCitkZWYgY2hlY2tfcmV2aXNp
b25zKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6CisgICAgZm9yIHRhZ2dl
ZCwgZXhwZWN0ZWQgaW4gemlwKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6
CisgICAgICAgIGFzc2VydCB0YWdnZWQgPT0gZXhwZWN0ZWQKIAogQG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JykKIGRlZiB0ZXN0X2dldF9lcG9jaF9yZXZpc2lvbnMobW9ja2Vk
X2NoZWNrX291dHB1dCk6CkBAIC01MCwxNiArNTMsOSBAQCBtZXJnZV9wcl9DIEMgNDc1MjAwIF90
dWVfCiBtZXJnZV9wcl9CIEIgNDUzNjAwIF90dWVfCiBtZXJnZV9wcl9BIEEgMzg4ODAwIF9tb25f
CiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMo
ZXBvY2gsIHVudGlsLCA4KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdO
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdNJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdLJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdKJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4
dCgpID09ICdBJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5nZXRf
ZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgOCkKKyAgICBjaGVja19yZXZpc2lvbnModGFn
Z2VkX3JldmlzaW9ucywgWydOJywgJ00nLCAnSycsICdKJywgJ0cnLCAnRicsICdDJywgJ0EnXSkK
KyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9y
IGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBlbm91Z2ggY2FuZGlk
YXRlIGl0ZW1zIGluIHRoZSByZXZpc2lvbiBsaXN0CkBAIC04MiwxMyArNzgsOSBAQCBtZXJnZV9w
cl9EIEQgNjQ4MDAwIF90aHVfCiBtZXJnZV9wcl9DIEMgNTYxNjAwIF93ZWRfCiBtZXJnZV9wcl9C
IEIgNDc1MjAwIF90aHVfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9l
cG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNv
bnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdG
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdFJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdEJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdDJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAw
ICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVja19yZXZpc2lvbnMo
dGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnLCAnRScsICdEJywgJ0MnXSkKKyAgICBhc3NlcnQg
bGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAog
CiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBsZXNzIHJldHVybmVkIGNhbmRpZGF0ZXMg
aXRlbXMgdGhhbiB0aGUgbmVlZGVkCkBAIC0xMDcsMTAgKzk5LDkgQEAgbWVyZ2VfcHJfSCBIIDk5
MzYwMCBfbW9uXwogbWVyZ2VfcHJfRyBHIDkwNzIwMCBfc3VuXwogbWVyZ2VfcHJfRiBGIDgyMDgw
MCBfc2F0XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2
aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQo
KSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBh
c3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVz
dGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhl
cG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsn
RycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogaW5pdGlhbCB1bnRpbCB2YWx1
ZSBpcyBvbiBhbiBlcG9jaCBib3VuZGFyeQpAQCAtMTM0LDEwICsxMjUsOSBAQCBtZXJnZV9wcl9I
IEggMTI5NjAwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1MDQwMCBfbW9uXwogbWVyZ2VfcHJfRiBG
IDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBv
Y2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25z
Lm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicK
LSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3Ig
ZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3Jldmlz
aW9ucyhlcG9jaCwgdW50aWwsIDMpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lv
bnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9
PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogdW50aWwgYWxpZ25l
ZCB3aXRoIE1vbmRheSwgNSBKYW51YXJ5IDE5NzAgMDowMDowMCAoMzQ1NjAwKQpAQCAtMTU4LDYg
KzE0OCw2IEBAIG1lcmdlX3ByX0ggSCAxMTgwODAwIF93ZWRfCiBtZXJnZV9wcl9HIEcgOTUwNDAw
IF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNv
bnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAxKQotICAgIGFz
c2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0
YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRf
cmV2aXNpb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMSkK
KyAgICBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydGJ10pCisgICAgYXNzZXJ0
IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkK
aW5kZXggMzMxMzVkZmRjMmQ1YjVhZTBjNzIyZGNlMzRmMzViNTgxMjdiZjMzOS4uOWZkNmM2Zjli
ODUxNTM3ZGYwNDQyODYxMjNiYTY0YzliM2UxOWU4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKQEAgLTEsNSArMSw3IEBACitpbXBv
cnQgb3MucGF0aAogZnJvbSBtb2NrIGltcG9ydCBwYXRjaAogCitmcm9tIHRvb2xzLm1hbmlmZXN0
Lm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAogZnJvbSB0b29scy53cHQgaW1wb3J0IHRlc3RmaWxl
cwogCiAKQEAgLTExLDMgKzEzLDM0IEBAIGRlZiB0ZXN0X2dldHJldmlzaF9rd2FyZygpOgogZGVm
IHRlc3RfZ2V0cmV2aXNoX2ltcGxpY2l0KCk6CiAgICAgd2l0aCBwYXRjaCgidG9vbHMud3B0LnRl
c3RmaWxlcy5icmFuY2hfcG9pbnQiLCByZXR1cm5fdmFsdWU9dSJiYXNlIik6CiAgICAgICAgIGFz
c2VydCB0ZXN0ZmlsZXMuZ2V0X3JldmlzaCgpID09IGIiYmFzZS4uSEVBRCIKKworCitkZWYgdGVz
dF9hZmZlY3RlZF90ZXN0ZmlsZXMoKToKKyAgICBtYW5pZmVzdF9qc29uID0geworICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogeworICAgICAgICAgICAgICAgICJh
IjogeworICAgICAgICAgICAgICAgICAgICAiYiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJjIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28tY3Jhc2guaHRtbCI6IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjZGVmZ2gxMjM0NTYiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bGwiLCB7fV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAidXJsX2Jhc2UiOiAiLyIsCisgICAgICAgICJ2ZXJzaW9uIjogOCwKKyAgICB9CisgICAg
bWFuaWZlc3QgPSBNYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBtYW5pZmVzdF9qc29uKQorICAgIHdp
dGggcGF0Y2goInRvb2xzLndwdC50ZXN0ZmlsZXMubG9hZF9tYW5pZmVzdCIsIHJldHVybl92YWx1
ZT1tYW5pZmVzdCk6CisgICAgICAgICMgRGVwZW5kZW50IGFmZmVjdGVkIHRlc3RzIGFyZSBkZXRl
cm1pbmVkIGJ5IHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0sCisgICAgICAgICMgd2hpY2ggZG9lc24n
dCB3b3JrIGluIG91ciB0ZXN0IHNldHVwLiBXZSB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yCisgICAg
ICAgICMgdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyBvciBoYXZlIGEgbW9yZSBjb21wbGV4
IHRlc3Qgc2V0dXAgdG8KKyAgICAgICAgIyBzdXBwb3J0IHRlc3RpbmcgdGhvc2UuCisgICAgICAg
IGZ1bGxfdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgdGVzdGZpbGVzLndw
dF9yb290LCAiYSIsICJiIiwgImMiLCAiZm9vLWNyYXNoLmh0bWwiKQorICAgICAgICB0ZXN0c19j
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyhbZnVsbF90ZXN0X3BhdGhd
KQorICAgICAgICBhc3NlcnQgdGVzdHNfY2hhbmdlZCA9PSBzZXQoW2Z1bGxfdGVzdF9wYXRoXSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKaW5kZXggNjU2OTU4
MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4Ni4uZjg5N2I2ODhhZDZmNjgyYmU5ZDc2
OWRhOTg1NzljNzg4NTA1YzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF93cHQucHkKQEAgLTEsMTIgKzEsMTggQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCi1pbXBvcnQg
dXJsbGliMgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3Blbgor
ICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvcgorZXhjZXB0IEltcG9ydEVycm9y
OgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgVVJMRXJyb3IKIAogaW1wb3J0IHB5
dGVzdAogCkBAIC0zOCw2ICs0NCw5IEBAIGRlZiBnZXRfcGVyc2lzdGVudF9tYW5pZmVzdF9wYXRo
KCk6CiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQogZGVm
IGluaXRfbWFuaWZlc3QoKToKKyAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHlwYS92aXJ0
dWFsZW52L2lzc3Vlcy8xNzEwCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzIGFuZCBw
bGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgIHB5dGVzdC54ZmFpbChyZWFz
b249InZpcnR1YWxlbnYgYWN0aXZhdGlvbiBmYWlscyBpbiBXaW5kb3dzIGZvciBweXRob24zIikK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAg
d3B0Lm1haW4oYXJndj1bIm1hbmlmZXN0IiwgIi0tbm8tZG93bmxvYWQiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wYXRoIiwgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3RfcGF0aCgpXSkKQEAg
LTIzMyw5ICsyNDIsOSBAQCBkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxlKHRlbXBfdGVzdCk6
CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJp
dmVyKCk6CiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIGNocm9tZWRy
aXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52
IiwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVyLmV4ZSIpCisgICAgICAgIGNocm9tZWRyaXZlcl9w
YXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGly
KCksICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQogICAgIGVsc2U6Ci0gICAgICAgIGNo
cm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwg
Il92ZW52IiwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQorICAgICAgICBjaHJvbWVkcml2ZXJfcGF0
aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2Rpcigp
LCAiYmluIiwgImNocm9tZWRyaXZlciIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoY2hyb21lZHJp
dmVyX3BhdGgpOgogICAgICAgICBvcy51bmxpbmsoY2hyb21lZHJpdmVyX3BhdGgpCiAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CkBAIC0yNTEsOSArMjYwLDkg
QEAgZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICAgICAgICAgICAgICAgICBy
ZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8x
NzA3NCIpCiBkZWYgdGVzdF9pbnN0YWxsX2ZpcmVmb3goKToKICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImRhcndpbiI6Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0
aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJlZm94IE5p
Z2h0bHkuYXBwIikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRo
cy5yZXBvX3Jvb3QsIHdwdC52ZW52X2RpcigpLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJl
Zm94IE5pZ2h0bHkuYXBwIikKICAgICBlbHNlOgotICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5q
b2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwgIm5pZ2h0
bHkiLCAiZmlyZWZveCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAi
ZmlyZWZveCIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhfcGF0aCk6CiAgICAgICAgIHNodXRp
bC5ybXRyZWUoZnhfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMg
ZXhjaW5mbzoKQEAgLTM4OCw5ICszOTcsOSBAQCBkZWYgdGVzdF9zZXJ2ZSgpOgogICAgICAgICAg
ICAgaWYgdGltZS50aW1lKCkgLSBzdGFydCA+IDYwOgogICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgInNlcnZlciBkaWQgbm90IHN0YXJ0IHJlc3BvbmRpbmcgd2l0aGluIDYwcyIKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwID0gdXJsbGliMi51cmxvcGVuKCJodHRw
Oi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCisgICAgICAgICAgICAgICAgcmVzcCA9IHVybG9w
ZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKICAgICAgICAgICAgICAgICBwcmlu
dChyZXNwKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3I6CisgICAgICAgICAg
ICBleGNlcHQgVVJMRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIlVSTEVycm9yIikKICAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwppbmRleCA1YzQzZjNjYTZi
MjZhYTYwNTY2YWNmZmMzMGU4ZWM4ZWEyYjk2NGUzLi41YmYyNTk5OTIyYWFkNTYzMzRjYzFiYWRh
MTY5YmJjY2ZkODYxYjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpAQCAtMTYsNiArMTYsNyBAQCBOb25lCiBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9tYXJrZG93bi5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF90ZXN0ZmlsZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCmluZGV4IDZhMDQ0NDcz
YTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIuLjhlM2UyNmUxMzViNGQzNzZhNDkyYWVh
NWFkYmQyNDI3OTdiMDNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQpAQCAtMSw2ICsx
LDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNworZW52bGlzdCA9IHB5MjcscHkzNSxweTM2LHB5
MzcscHkzOAogc2tpcHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxz
ZQogCiBbdGVzdGVudl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQppbmRleCAy
ZDQyNzcxM2U0ZTgyNDg0NWI2ZDc4NzFiNjFjZDZmMTFlYzI1MWY2Li45YTZjMDY0NjcxMjA2NGUx
ODNmMzY2ZGZkNTYyOWExYjUyZTgxMTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQpA
QCAtNDYsNyArNDYsNyBAQCBkZWYgY2FsbCgqYXJncyk6CiAgICAgIiIiCiAgICAgbG9nZ2VyLmRl
YnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3Mu
Y2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChhcmdzKS5kZWNvZGUoJ3V0ZjgnKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvciBhcyBlOgogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiVzIGV4aXRlZCB3aXRoIHJl
dHVybiBjb2RlICVpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJu
Y29kZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQppbmRleCA0MDBkZWJj
ODhlNDY5MTBkMjY0MWU3MjhmYzRhZGI4NmE4ODU2OGUwLi4xOGVkY2MwNGZiNGQ1MjhlNjU2NmRh
MTA5MDJhOWFjOTY0YjQyYTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYu
cHkKQEAgLTMyLDcgKzMyLDkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3QpOgogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGV4aXN0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNk
aXIoc2VsZi5wYXRoKQorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgYWxzbyBmb3IgbGliX3Bh
dGggYmVjYXVzZSBkaWZmZXJlbnQgcHl0aG9uIHZlcnNpb25zCisgICAgICAgICMgY3JlYXRlIGRp
ZmZlcmVudCBsaWJyYXJ5IHBhdGhzLgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxm
LnBhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYubGliX3BhdGgpCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKaW5kZXgg
OTMzMDFkZDg2YjRmZmUyMDI5MDJhNDkyMjA0ZWJhNjUzN2ZiNTBkNS4uMzk1ZGIwMzk0ZGE2N2Nh
YThiZGMxYWQ5ZTY4OWU1ODMxNzUxOTJiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQpAQCAt
MzEsNiArMzEsNyBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAgICAgICAgICAgICAi
c2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAgICAicGFyc2VyIjog
cHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2tub3duIjog
cHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgInB5
M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFs
ZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAg
ICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNDAsMTMgKzQxLDE0IEBA
IGRlZiBsb2FkX2NvbW1hbmRzKCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVmIHBhcnNlX2FyZ3Mo
YXJndiwgY29tbWFuZHMpOgorZGVmIHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHM9bG9hZF9jb21t
YW5kcygpKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlBhdGggdG8g
YW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4gTXVzdCBzZXQgLS12
ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVidWciLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ugb2YgYW4gZXhjZXB0
aW9uIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXB5MyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9IlJ1biB3aXRoIHB5dGhvbjMiKQogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRk
X3N1YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIpCiAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGluIGl0
ZXJpdGVtcyhjb21tYW5kcyk6CiAgICAgICAgIHN1YnBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5k
LCBoZWxwPXByb3BzWyJoZWxwIl0sIGFkZF9oZWxwPUZhbHNlKQpAQCAtOTMsNyArOTUsOCBAQCBk
ZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigpOgogICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRz
OgogICAgICAgICBwcm9wcyA9IGNvbW1hbmRzW2NvbW1hbmRdCiAKLSAgICAgICAgaWYgcHJvcHNb
InZpcnR1YWxlbnYiXToKKyAgICAgICAgaWYgKHByb3BzWyJ2aXJ0dWFsZW52Il0gYW5kCisgICAg
ICAgICAgICAobm90IHByb3BzWyJweTNvbmx5Il0gb3Igc3lzLnZlcnNpb25faW5mby5tYWpvciA9
PSAzKSk6CiAgICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KE5vbmUsIEZhbHNlLCBwcm9wcykK
IAogICAgICAgICBzdWJwYXJzZXIgPSBpbXBvcnRfY29tbWFuZCgnd3B0JywgY29tbWFuZCwgcHJv
cHMpWzFdCkBAIC0xMDgsMTIgKzExMSwxNiBAQCBkZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigp
OgogICAgIHJldHVybiBwYXJzZXIKIAogCitkZWYgdmVudl9kaXIoKToKKyAgICByZXR1cm4gIl92
ZW52IiArIHN0cihzeXMudmVyc2lvbl9pbmZvWzBdKQorCisKIGRlZiBzZXR1cF92aXJ0dWFsZW52
KHBhdGgsIHNraXBfdmVudl9zZXR1cCwgcHJvcHMpOgogICAgIGlmIHNraXBfdmVudl9zZXR1cCBh
bmQgcGF0aCBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNdXN0IHNldCAtLXZl
bnYgd2hlbiAtLXNraXAtdmVudi1zZXR1cCBpcyB1c2VkIikKICAgICBzaG91bGRfc2tpcF9zZXR1
cCA9IHBhdGggaXMgbm90IE5vbmUgYW5kIHNraXBfdmVudl9zZXR1cAogICAgIGlmIHBhdGggaXMg
Tm9uZToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgIl92ZW52IikKKyAg
ICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgdmVudl9kaXIoKSkKICAgICB2ZW52
ID0gdmlydHVhbGVudi5WaXJ0dWFsZW52KHBhdGgsIHNob3VsZF9za2lwX3NldHVwKQogICAgIGlm
IG5vdCBzaG91bGRfc2tpcF9zZXR1cDoKICAgICAgICAgdmVudi5zdGFydCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCisrKyAvZGV2L251bGwK
QEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0KLWh0dHA6Ly93d3cu
dzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5zZS5odG1sCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9ucyBvZiB3b3JrcyBt
dXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwKLSAgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvcHlyaWdo
dAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSAgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgd29yayB3aXRo
b3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHMudHh0CmluZGV4IDNjZDAxNDQ2ZTI1YmNlYjRkYWRlZjQ4MjU5MTE3YmQwNTdlYTZmNDgu
LjUzMTA3MjFiYmI5MGZhOTRiOTBiNGMxMGQyMDJmYzVhMTNjMDRkNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApAQCAtMSw4ICsxLDkg
QEAKIGh0bWw1bGliPT0xLjAuMQotbW96aW5mbz09MS4xLjAKLW1vemxvZz09NS4wCi1tb3pkZWJ1
Zz09MC4xLjEKLXBpbGxvdz09Ni4yLjEKLXVybGxpYjNbc2VjdXJlXT09MS4yNS43Ci1yZXF1ZXN0
cz09Mi4yMi4wCi1zaXg9PTEuMTMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgorbW96bG9nPT02LjAKK21vemRl
YnVnPT0wLjIKKyMgUGlsbG93IDcgcmVxdWlyZXMgUHl0aG9uIDMKK3BpbGxvdz09Ni4yLjIgICMg
cHl1cDogPDcuMAordXJsbGliM1tzZWN1cmVdPT0xLjI1LjkKK3JlcXVlc3RzPT0yLjIzLjAKK3Np
eD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZmlyZWZveC50eHQKaW5kZXggNGNiYjdhNWVjMDI5M2VmZjFlZjE5OGEyMWVj
ZGM5MGZlY2Y0MTQxMS4uMTc2NzA1ZjNhZjUwOGFjYjMxMTdkNzNkNWFiNGYwYzMwNjAyNDY2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19maXJlZm94LnR4dApAQCAtMSwxMSArMSwxMCBAQAogbWFyaW9uZXR0ZV9kcml2ZXI9PTMu
MC4wCi1tb3pjcmFzaD09MS4xLjAKLW1vemRvd25sb2FkPT0xLjI2LjAKK21vemNyYXNoPT0yLjAu
MAogbW96aW5zdGFsbD09Mi4wLjAKIG1vemxlYWs9PTAuMgotbW96bmV0d29yaz09MC4yNworbW96
bmV0d29yaz09MS4xLjAKIG1venByb2Nlc3M9PTEuMC4wCi1tb3pwcm9maWxlPT0yLjQuMAotbW96
cnVubmVyPT03LjcuMAotbW96dmVyc2lvbj09Mi4yLjAKLXBzdXRpbD09NS42LjcKK21venByb2Zp
bGU9PTIuNS4wCittb3pydW5uZXI9PTcuOC4wCittb3p2ZXJzaW9uPT0yLjMuMAorcHN1dGlsPT01
LjcuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19zYXVjZS50eHQKaW5kZXggMzJiNWY2NGQxNGZkMDNkZjRlZWFjYjU3ODM5MjEwYTI2YTI4
M2ZhNy4uZTllOTc2NDc3OTZlN2Y5NDBmMmVlZjk4YzcyYjE5ODcxZDMyM2M3MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2Uu
dHh0CkBAIC0xLDMgKzEsMyBAQAogbW96cHJvY2Vzcz09MS4wLjAKIHNlbGVuaXVtPT0zLjE0MS4w
Ci1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKaW5kZXggOGYzMjNhMzM4NmM5OTdjYmNmYTAxM2U2
NTg1MDg2NDcxZGRmYTIwOC4uNDJlN2FiYmJhYjQ5MDkyMzcwNjVjYjAxMjVkYjcxMWExODYwNzg5
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpAQCAt
MSw1ICsxLDQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWltcG9y
dCBDb25maWdQYXJzZXIKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBA
IC03LDYgKzYsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxv
ZwogZnJvbSBtb3psb2cuaGFuZGxlcnMgaW1wb3J0IEJhc2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVy
CiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBNYWNoRm9ybWF0dGVyCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCitmcm9tIHNpeC5tb3Zlcy5jb25maWdwYXJzZXIgaW1wb3J0IENvbmZp
Z1BhcnNlcgogZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5lLCB3cHRydW5uZXIK
IAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQpAQCAt
NTgsNyArNTksNyBAQCBkZWYgdGVzdF9zZXR0aW5ncygpOgogICAgIH0KIAogZGVmIHJlYWRfY29u
ZmlnKCk6Ci0gICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgcGFy
c2VyID0gQ29uZmlnUGFyc2VyKCkKICAgICBwYXJzZXIucmVhZCgidGVzdC5jZmciKQogCiAgICAg
cnYgPSB7ImdlbmVyYWwiOnt9LApAQCAtODMsNyArODQsNyBAQCBkZWYgcnVuX3Rlc3RzKHByb2R1
Y3QsIGt3YXJncyk6CiAKIGRlZiBzZXR0aW5nc190b19hcmd2KHNldHRpbmdzKToKICAgICBydiA9
IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVtcygpOgorICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgogICAgICAgICBrZXkgPSAiLS0l
cyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFwcGVuZChr
ZXkpCkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0
dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZXJpdGVtcygpOgorICAgIGZvciBwcm9kdWN0
LCBwcm9kdWN0X3NldHRpbmdzIGluIGl0ZXJpdGVtcyhjb25maWdbInByb2R1Y3RzIl0pOgogICAg
ICAgICBpZiBhcmdzLnByb2R1Y3QgYW5kIHByb2R1Y3Qgbm90IGluIGFyZ3MucHJvZHVjdDoKICAg
ICAgICAgICAgIGNvbnRpbnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5p
CmluZGV4IGFkMzUwMmUwMmE5ZTgxMDE2OTQwYzhmMzlmNTY1NDBmNWFiMWYyNmQuLmM1NDRkYTdh
OTVkMmE5ODJjYWI4YjY4YWY1Mzc0NDBiNzFmYTA5NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdG94LmluaQpAQCAtMiw4ICsyLDggQEAKIHhmYWlsX3N0cmljdD10cnVlCiAKIFt0
b3hdCi1lbnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNh
ZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSxw
eTM2LWJhc2UKLXNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCitlbnZsaXN0ID0gcHky
Ny17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3
ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNSxweTM2LHB5MzcscHkz
OH0tYmFzZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAKIFt0ZXN0ZW52XQog
ZGVwcyA9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9n
CmluZGV4IDQwNmE1ZmFlMjU2NDI3MjI4NGFjNTcwMGNjMDQ2ZmIwYjY3YzFmNmEuLjU4ZTk3MGEw
ZWRmNmVkZmMxNjA3Yzc2NmE3NjNiZjk1MTUwZjYzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBv
cnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3ICsxNCw2IEBAIFByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5pbgogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURN
RS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lk
X3dlYmxheWVyLnB5CmluZGV4IDkzZjRkNmI2MzBkMjg4Yzc1Zjg4OGNiNzMwNGJiZjhhNDE5NWRi
NmMuLmY3NTU4N2Q4MzlmZmZjZjAzOTAxNzc5YTBiNjUxMjYxOTBiOWQ0ODEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xh
c3MgV2VibGF5ZXJTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRy
b2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5
CmluZGV4IGRjNjg3YjQ4ZWQ3YTlkZGU4MjczMzRhZThiNTkwOTZjYzU4ZDI0ZDcuLjg3OTA1Njc3
MDdlOTU3YTdiNjVkN2RjMTViYWFkNWUzMTkwYjhiYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2FuZHJvaWRfd2Vidmlldy5weQpAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNzIFN5c3RlbVdlYlZp
ZXdTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0
ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhp
bmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4K
LSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2Vs
Zi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggNjU1MzQ0NTgxOTczYzE1YjY1NzcyOWZl
YjczNmRkMjA3M2Q3OWEzMC4uYTAyN2NmMzI2MTBhNDllNjFmNDE0MWJmYjVmY2U1ZDA1MTM4NWIz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKQEAgLTMsNiArMyw3IEBAIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHNvY2tldAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBm
cm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZy
b20gLi53cHRjb21tYW5kbGluZSBpbXBvcnQgcmVxdWlyZV9hcmcgICMgbm9xYTogRjQwMQogCkBA
IC0xNDcsMTAgKzE0OCw2IEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICAgICAgIiIiQm9v
bGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyb3dzZXIgcHJvY2VzcyBpcyBzdGlsbCBydW5u
aW5nIiIiCiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR1cF9zc2woc2VsZiwgaG9zdHMpOgot
ICAgICAgICAiIiJSZXR1cm4gYSBjZXJ0aWZpY2F0ZSB0byB1c2UgZm9yIHRlc3RzIHJlcXVpcmlu
ZyBzc2wgdGhhdCB3aWxsIGJlIHRydXN0ZWQgYnkgdGhlIGJyb3dzZXIiIiIKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3NsIHRlc3Rpbmcgbm90IHN1cHBvcnRlZCIpCi0KICAg
ICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiQnJvd3Nlci1zcGVjaWZpYyBjbGVhbnVw
IHRoYXQgaXMgcnVuIGFmdGVyIHRoZSB0ZXN0cnVuIGlzIGZpbmlzaGVkIiIiCiAgICAgICAgIHBh
c3MKQEAgLTE5OSw1ICsxOTYsNSBAQCBjbGFzcyBFeGVjdXRvckJyb3dzZXIob2JqZWN0KToKICAg
ICB1cCB0aGUgYnJvd3NlciBmcm9tIHRoZSBydW5uZXIgcHJvY2Vzcy4KICAgICAiIiIKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3Mu
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhrd2FyZ3MpOgogICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXgg
NTEzZmQ1ZjQyNDkyZmNhNGY2MTE1NmU1NDU5NTc2ZDFjODQ2Njk4YS4uYmFjMWFmZmQzNjUwZTI0
YzRiOTZlZmM2NWU2YjQ2OTJjOWIyYjI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2Nocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CkBAIC0x
MjUsNyArMTI1LDcgQEAgY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBU
T0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAg
ICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vz
c2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlz
X2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYg
Y2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9j
aHJvbWVfYW5kcm9pZC5weQppbmRleCBiNGVkYzA1MGQwYzcwOWNmYTQ2N2E0M2I2ZTZhNDEyMDBh
YTA0YzczLi5jZDhjNDBmYWIxZmViMDYyOWE4MTRiMmJiYTY4ZWRlY2FhM2VlOGQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xh
c3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBU
aGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRv
ZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAg
ICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvY2hyb21lX2lvcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5Cmlu
ZGV4IGEwNDI5NjY1YzliYzU3ZTI3YzAyY2U4MWE3ZGViOTA5YjhmYTAwZjUuLjZkYjAxODhlNTVl
YmZmOGQzYTQwZjlhMTVkYzcxNDQxOWVkYWNiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9jaHJvbWVfaW9zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVf
aW9zLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIENocm9tZWlPU0Jyb3dzZXIoQnJvd3Nlcik6
CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMg
YWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIg
YSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBz
ZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUo
KQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlLnB5CmluZGV4IGQ5ZDBhZjExNWNjOWU5YzY0ZTkyN2IxNWNkZDI5MWYzMTRiMDdhZTUu
LjE4YTFlZDc4MTE4OWNjYTIzZGYyYTRlMWI1YjVkY2E4MzBiZDBlYTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAg
ICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIgaXMgYWxp
dmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBi
cm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQog
CiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2VkZ2VjaHJvbWl1bS5weQppbmRleCA2MzY4MGI2Nzc0YTI3NTkyNDkxZTY3MWY1M2Yx
NDBiNjVlMTcwNDJiLi41YzUxZjA2NmYwNDQxMzIxNjYwY2FiOTZmNmRlNTFhZjg2OGQzMTBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKQEAgLTEwNyw3ICsxMDcsNyBAQCBj
bGFzcyBFZGdlQ2hyb21pdW1Ccm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTog
VGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLA0KICAgICAgICAgIyBhbmQg
ZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbg0KICAg
ICAgICAgIyBpcyBhY3RpdmUuDQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUN
CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQogDQogICAgIGRlZiBjbGVh
bnVwKHNlbGYpOg0KICAgICAgICAgc2VsZi5zdG9wKCkNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnku
cHkKaW5kZXggOGEwZTVmNTc4YjJmZWI4NzFkZGQ1MGFiMDgxNjhjNmI5ZDQ1ZTRiMC4uZjZjNGM2
MDJhMzhjMDQzNjM3Y2Y5ZGJjOGJiYjUzNTBlYzk0NTI3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlw
aGFueS5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVs
dGlwbGllciwgbWF5YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9saXMKIGZyb20gLndl
YmtpdCBpbXBvcnQgV2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0
b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTog
RjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2Via2l0IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAx
CiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZXBpcGhhbnkiLApAQCAtMTEsNyArMTIs
OCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwKICAgICAgICAgICAg
ICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAg
ICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1
dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZl
clJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhl
Y3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9r
d2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2ZpcmVmb3gucHkKaW5kZXggMGY4MDc1MzM3ODEzNzgzYzc2ZTRiZTRkZWM5Y2M5MzFhNDI1MmM0
MS4uMmRlN2RmMzk2YmQyYTQ4Yjc4NjRhNjZhZWU0YjYyY2ZhMWZiMzY3NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2ZpcmVmb3gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNp
Z25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2Zyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBpbXBvcnQgbW96aW5mbwogaW1wb3J0IG1vemxlYWsKQEAg
LTI1LDYgKzI2LDcgQEAgZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcm1hcmlvbmV0dGUgaW1wb3J0
IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgICMg
bm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlV2RzcGVjRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAg
IyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKIAogCiBoZXJlID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQpAQCAtNjMsNiArNjUsOCBA
QCBkZWYgZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsICoq
a3dhcmdzKToKICAgICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Mzg3MjUKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0gIndpbiIgYW5kIHJ1
bl9pbmZvX2RhdGFbInByb2Nlc3NvciJdID09ICJhYXJjaDY0IjoKICAgICAgICAgcmV0dXJuIDQK
KyAgICBlbGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CisgICAgICAgIHJldHVybiAyCiAg
ICAgcmV0dXJuIDEKIAogCkBAIC04Miw2ICs4Niw3IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgImNh
X2NlcnRpZmljYXRlX3BhdGgiOiBjb25maWcuc3NsX2NvbmZpZ1siY2FfY2VydF9wYXRoIl0sCiAg
ICAgICAgICAgICAiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAogICAgICAgICAgICAgImVu
YWJsZV93ZWJyZW5kZXIiOiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSwKKyAgICAgICAgICAg
ICJlbmFibGVfZmlzc2lvbiI6IGt3YXJnc1siZW5hYmxlX2Zpc3Npb24iXSwKICAgICAgICAgICAg
ICJzdGFja2ZpeF9kaXIiOiBrd2FyZ3NbInN0YWNrZml4X2RpciJdLAogICAgICAgICAgICAgImJp
bmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJdLAogICAgICAgICAgICAgInRpbWVvdXRf
bXVsdGlwbGllciI6IGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBlLApAQCAtOTMsNyAr
OTgsOCBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25m
aWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdzIjoga3dhcmdzWyJj
aGFvc19tb2RlX2ZsYWdzIl0sCiAgICAgICAgICAgICAiY29uZmlnIjogY29uZmlnLAogICAgICAg
ICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0sCi0gICAg
ICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CisgICAgICAgICAgICAiaGVh
ZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAicHJlbG9hZF9icm93c2Vy
Ijoga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXX0KIAogCiBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKQEAg
LTE2OCwxNyArMTc0LDEzIEBAIGRlZiBydW5faW5mb19leHRyYXMoKiprd2FyZ3MpOgogICAgICAg
ICAgICJ3YXNtIjoga3dhcmdzLmdldCgid2FzbSIsIFRydWUpLAogICAgICAgICAgICJ2ZXJpZnki
OiBrd2FyZ3NbInZlcmlmeSJdLAogICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJncy5nZXQoImhl
YWRsZXNzIiwgRmFsc2UpIG9yICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmlyb24sCi0gICAgICAg
ICAgImZpc3Npb24iOiBnZXRfYm9vbF9wcmVmKCJmaXNzaW9uLmF1dG9zdGFydCIpfQorICAgICAg
ICAgICJzdy1lMTBzIjogVHJ1ZSwKKyAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVu
YWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KIAog
ICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0aGVyIHRoZSAicGFy
ZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBj
dXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLAogICAgICMgY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwcmVmIHdpdGggdGhlIGAtLXNldHByZWZgIENM
SQotICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLiBJZiBub3Qgc3VwcGxpZWQsIHRo
ZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgIyBgc3ctZTEwc2Agd2lsbCBiZSBmaWxsZWQgaW4gaW4g
YFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCi0gICAgIwotICAgICMgV2UgY2FuJ3QgY2FwdHVyZSB0
aGUgZGVmYXVsdCB2YWx1ZSByaWdodCBub3cgYmVjYXVzZSAoY3VycmVudGx5KSwgaXQKLSAgICAj
IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbmlnaHRseV9idWlsZGAsIHdoaWNoIGlzbid0IGtu
b3duIHVudGlsCi0gICAgIyBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KKyAgICAjIGZsYWcsIHdo
aWNoIGlzIGNoZWNrZWQgaGVyZS4KICAgICBzd19lMTBzX292ZXJyaWRlID0gZ2V0X2Jvb2xfcHJl
Zl9pZl9leGlzdHMoImRvbS5zZXJ2aWNlV29ya2Vycy5wYXJlbnRfaW50ZXJjZXB0IikKICAgICBp
ZiBzd19lMTBzX292ZXJyaWRlIGlzIG5vdCBOb25lOgogICAgICAgICBydlsic3ctZTEwcyJdID0g
c3dfZTEwc19vdmVycmlkZQpAQCAtMjAzLDc5ICsyMDUsNjAgQEAgZGVmIHVwZGF0ZV9wcm9wZXJ0
aWVzKCk6CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJp
dHMiXX0pCiAKIAotY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0gICAgaW5pdF90aW1l
b3V0ID0gNzAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKK2NsYXNzIEZpcmVmb3hJbnN0YW5j
ZU1hbmFnZXIob2JqZWN0KToKKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4
dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3ltYm9s
c19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUs
Ci0gICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwg
ZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGlyPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25lLCBsZWFrX2NoZWNr
PUZhbHNlLCBhc2FuPUZhbHNlLAotICAgICAgICAgICAgICAgICBzdHlsb190aHJlYWRzPTEsIGNo
YW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJyb3dzZXJfY2hhbm5lbD0ibmlnaHRs
eSIsIGhlYWRsZXNzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhz
ZWxmLCBsb2dnZXIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBiaW5h
cnlfYXJncywgcHJvZmlsZV9jcmVhdG9yLCBkZWJ1Z19pbmZvLAorICAgICAgICAgICAgICAgICBj
aGFvc19tb2RlX2ZsYWdzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwgc3R5bG9fdGhyZWFk
cywKKyAgICAgICAgICAgICAgICAgbGVha19jaGVjaywgc3RhY2tmaXhfZGlyLCBzeW1ib2xzX3Bh
dGgsIGFzYW4pOgorICAgICAgICAiIiJPYmplY3QgdGhhdCBtYW5hZ2VzIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBpbnN0YW5jZXMgb2YgRmlyZWZveC4iIiIKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKLSAgICAgICAgc2VsZi5wcmVmc19y
b290ID0gcHJlZnNfcm9vdAotICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQotICAg
ICAgICBzZWxmLmV4dHJhX3ByZWZzID0gZXh0cmFfcHJlZnMKLSAgICAgICAgc2VsZi5tYXJpb25l
dHRlX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAgICAgc2VsZi5iYXNlX3Byb2ZpbGUgPSBw
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdf
aW5mbwotICAgICAgICBzZWxmLnByb2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuc3ltYm9sc19w
YXRoID0gc3ltYm9sc19wYXRoCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFyeSA9IHN0YWNr
d2Fsa19iaW5hcnkKLSAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlm
aWNhdGVfcGF0aAotICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGlsX2JpbmFy
eQotICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuY2hhb3NfbW9kZV9mbGFn
cyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5oZWFkbGVzcyA9IGhlYWRsZXNzCiAg
ICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKLSAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0gICAgICAgIGlmIHN0YWNrZml4X2RpcjoKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4
ZXIgPSBnZXRfc3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bWJvbHNf
cGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25l
CisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2Vs
Zi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAg
ICAgICBzZWxmLmFzYW4gPSBhc2FuCiAKLSAgICAgICAgaWYgdGltZW91dF9tdWx0aXBsaWVyOgot
ICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGltZW91dCAqIHRpbWVv
dXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxm
LmN1cnJlbnQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5hc2FuID0gYXNhbgotICAgICAgICBzZWxm
LmxzYW5fYWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5sc2FuX21heF9zdGFja19kZXB0aCA9
IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0gTm9uZQotICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFr
X2NoZWNrCi0gICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5sc2FuX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxv
X3RocmVhZHMKLSAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFn
cwotICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAotICAgICAg
ICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYg
dGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2V0
dGluZ3Moc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5s
ZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAgICAibHNhbl9hbGxv
d2VkIjogdGVzdC5sc2FuX2FsbG93ZWQsCi0gICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNr
X2RlcHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKLSAgICAgICAgICAgICAgICAibW96
bGVha19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwK
LSAgICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFu
ZCB0ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBn
ZXQoc2VsZik6CisgICAgICAgICIiIkdldCBhIEJyb3dzZXJJbnN0YW5jZSBmb3IgYSBydW5uaW5n
IEZpcmVmb3guCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgotICAgICAgICAgICAg
Z3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
IHBlciBpbnN0YW5jZSwgYW5kIGJldHdlZW4gY2FsbHMgc3RvcF9jdXJyZW50KCkKKyAgICAgICAg
bXVzdCBiZSBjYWxsZWQuIiIiCisgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmdyb3VwX21l
dGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEKLSAgICAgICAgc2VsZi5sc2FuX2FsbG93ZWQgPSBrd2Fy
Z3MuZ2V0KCJsc2FuX2FsbG93ZWQiKQotICAgICAgICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRo
ID0ga3dhcmdzLmdldCgibHNhbl9tYXhfc3RhY2tfZGVwdGgiKQotICAgICAgICBzZWxmLm1vemxl
YWtfYWxsb3dlZCA9IGt3YXJncy5nZXQoIm1vemxlYWtfYWxsb3dlZCIpCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0ga3dhcmdzLmdldCgibW96bGVha190aHJlc2hvbGRzIikKKyAg
ICBkZWYgc3RvcF9jdXJyZW50KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgIiIiU2h1dGRv
d24gdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgRmlyZWZveC4KIAotICAgICAgICBpZiBzZWxmLm1h
cmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQg
PSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgVGhlIEJyb3dzZXJJbnN0YW5jZSByZW1haW5zIGF2
YWlsYWJsZSB0aHJvdWdoIHNlbGYucHJldmlvdXMsIHNpbmNlIHNvbWUKKyAgICAgICAgb3BlcmF0
aW9ucyBoYXBwZW4gYWZ0ZXIgc2h1dGRvd24uIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmN1cnJl
bnQ6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmFzYW46Ci0gICAgICAg
ICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsuTFNBTkxlYWtzKHNlbGYubG9nZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZT1n
cm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5fYWxsb3dlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVj
b3JkZWRGcmFtZXM9c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKKyAgICAgICAgc2VsZi5jdXJy
ZW50LnN0b3AoZm9yY2UpCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxmLmN1cnJlbnQKKyAg
ICAgICAgc2VsZi5jdXJyZW50ID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAg
ICAiIiJTdGFydCBhbiBpbnN0YW5jZSBvZiBGaXJlZm94LCByZXR1cm5pbmcgYSBCcm93c2VySW5z
dGFuY2UgaGFuZGxlIiIiCisgICAgICAgIHByb2ZpbGUgPSBzZWxmLmJhc2VfcHJvZmlsZS5jbG9u
ZShzZWxmLmJhc2VfcHJvZmlsZS5wcm9maWxlKQorCisgICAgICAgIG1hcmlvbmV0dGVfcG9ydCA9
IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Im1hcmlv
bmV0dGUucG9ydCI6IG1hcmlvbmV0dGVfcG9ydH0pCiAKICAgICAgICAgZW52ID0gdGVzdF9lbnZp
cm9ubWVudCh4cmVQYXRoPW9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9c2VsZi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25l
LApAQCAtMjkyLDQwICsyNzUsNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCiAKLSAg
ICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQotCi0gICAgICAgIHNlbGYucHJv
ZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAgICBz
ZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRlLnBv
cnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKLSAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2Nh
bERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCi0gICAgICAgICAg
ICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCi0gICAgICAgICAgICAjIFRPRE86IFJl
bW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcgOTA1NDA0KQot
ICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCi0gICAgICAgICAgICAicGxhY2Vz
Lmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6
IFRydWUsCi0gICAgICAgIH0pCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAgICAgICAgICAgIHNl
bGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFy
dCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKLSAg
ICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXlvdXQuaW50ZXJydXB0
aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKLQotICAgICAgICBpZiBzZWxmLmxlYWtfY2hl
Y2s6Ci0gICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ciICUgb3MuZ2V0cGlkKCkp
Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpOgot
ICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpCi0gICAgICAg
ICAgICBlbnZbIlhQQ09NX01FTV9CTE9BVF9MT0ciXSA9IHNlbGYubGVha19yZXBvcnRfZmlsZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQot
Ci0gICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEwcywgZGlzYWJsZSBod2FjY2VsCi0g
ICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpIGluICgiV2luZG93cyIs
ICJNaWNyb3NvZnQiKSBhbmQKLSAgICAgICAgICAgICc1LjEnIGluIHBsYXRmb3JtLnZlcnNpb24o
KSk6Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5ZXJzLmFj
Y2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYuY2FfY2VydGlm
aWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3NsKCkKLQog
ICAgICAgICBhcmdzID0gc2VsZi5iaW5hcnlfYXJnc1s6XSBpZiBzZWxmLmJpbmFyeV9hcmdzIGVs
c2UgW10KICAgICAgICAgYXJncyArPSBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJvdXQ6Ymxh
bmsiXQogCkBAIC0zMzMsNjAgKzI4MiwxMDEgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nl
cik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQog
Ci0gICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXNlbGYucHJvZmls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT1jbWRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJncz17InByb2Nlc3NPdXRw
dXRMaW5lIjogW3NlbGYub25fb3V0cHV0XX0pCisgICAgICAgIGlmIHNlbGYubGVha19jaGVjazoK
KyAgICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocHJvZmlsZS5wcm9m
aWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBpZCgpKQorICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMobGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICAgICAgICAgb3Mu
cmVtb3ZlKGxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgICAgICBlbnZbIlhQQ09NX01FTV9CTE9B
VF9MT0ciXSA9IGxlYWtfcmVwb3J0X2ZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxl
YWtfcmVwb3J0X2ZpbGUgPSBOb25lCisKKyAgICAgICAgb3V0cHV0X2hhbmRsZXIgPSBPdXRwdXRI
YW5kbGVyKHNlbGYubG9nZ2VyLCBzZWxmLnN0YWNrZml4X2Rpciwgc2VsZi5zeW1ib2xzX3BhdGgs
IHNlbGYuYXNhbikKKyAgICAgICAgcnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXByb2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PWNtZFswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0TGluZSI6IFtvdXRw
dXRfaGFuZGxlcl19KQorICAgICAgICBpbnN0YW5jZSA9IEJyb3dzZXJJbnN0YW5jZShzZWxmLmxv
Z2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9oYW5kbGVyLCBsZWFrX3JlcG9ydF9maWxlKQogCiAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBGaXJlZm94IikKLQotICAgICAgICBzZWxmLnJ1bm5l
ci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVyYWN0aXZlPXNlbGYuZGVidWdfaW5m
byBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQorICAgICAgICBydW5uZXIuc3RhcnQo
ZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVnX2luZm8gYW5kIHNl
bGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZp
cmVmb3ggU3RhcnRlZCIpCiAKLSAgICBkZWYgbG9hZF9wcmVmcyhzZWxmKToKLSAgICAgICAgcHJl
ZnMgPSBQcmVmZXJlbmNlcygpCi0KLSAgICAgICAgcHJlZl9wYXRocyA9IFtdCi0KLSAgICAgICAg
cHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJvZmlsZXMuanNvbicp
Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKLSAgICAgICAgICAgIHdpdGgg
b3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBq
c29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAgICAgICAgICAgICAgICAg
aWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19y
b290LCBuYW1lLCAndXNlci5qcycpKQotICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgIT0g
J3VuaXR0ZXN0LWZlYXR1cmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMu
YXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZpbGVzIHVzZWQgYmVm
b3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hlbiBubyBsb25nZXIg
c3VwcG9ydGVkKQotICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAoCi0gICAgICAgICAg
ICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZzX2dlbmVyYWwuanMnKSwg
ICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKLSAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMnKSwgICMgVXNlZCBpbiBG
aXJlZm94IDYxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBsZWdhY3lf
cHJlZl9wYXRoczoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkKLQotICAgICAgICBmb3Ig
cGF0aCBpbiBwcmVmX3BhdGhzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6
Ci0gICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJlYWRfcHJlZnMocGF0aCkp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBwYXRoKQotCi0gICAgICAg
ICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKLSAgICAgICAgcHJlZnMuYWRkKHNlbGYuZXh0
cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworY2xhc3Mg
U2luZ2xlSW5zdGFuY2VNYW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIpOgorICAgICIiIkZp
cmVmb3hJbnN0YW5jZU1hbmFnZXIgdGhhdCBtYW5hZ2VzIGEgc2luZ2xlIEZpcmVmb3ggaW5zdGFu
Y2UiIiIKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuY3VycmVu
dCwgKCJUcmllZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0aGF0IGhhcyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5nIGluc3RhbmNlIikK
KyAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMuY2xl
YW51cCgpCisgICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLmN1
cnJlbnQgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudAorCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9yIGluc3RhbmNlIGlu
IFtzZWxmLnByZXZpb3VzLCBzZWxmLmN1cnJlbnRdOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6
CisgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSkKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBQcmVsb2FkSW5zdGFuY2VNYW5hZ2VyKEZpcmVm
b3hJbnN0YW5jZU1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICAiIiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQga2VlcHMgb25jZSBG
aXJlZm94IGluc3RhbmNlIHByZWxvYWRlZAorICAgICAgICB0byBhbGxvdyByYXBpZCByZXN1bXB0
aW9uIGFmdGVyIGFuIGluc3RhbmNlIHNodXRzIGRvd24uIiIiCisgICAgICAgIHN1cGVyKFByZWxv
YWRJbnN0YW5jZU1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5wZW5kaW5nID0gTm9uZQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLmN1cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBvbiBJbnN0YW5jZU1h
bmFnZXIgdGhhdCBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBl
eGlzdGluZyBpbnN0YW5jZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6CisgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5v
bmUKKyAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZzoKKyAgICAgICAgICAgIHNlbGYucGVuZGlu
ZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBzZWxmLnBlbmRpbmcKKyAg
ICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1
cnJlbnQKKworICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGZv
ciBpbnN0YW5jZSwgc2tpcF9tYXJpb25ldHRlIGluIFsoc2VsZi5wcmV2aW91cywgRmFsc2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY3VycmVudCwg
RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
cGVuZGluZywgVHJ1ZSldOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6CisgICAgICAgICAgICAg
ICAgaW5zdGFuY2Uuc3RvcChmb3JjZSwgc2tpcF9tYXJpb25ldHRlPXNraXBfbWFyaW9uZXR0ZSkK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBCcm93c2VySW5z
dGFuY2Uob2JqZWN0KToKKyAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKIAotICAgICAgICByZXR1
cm4gcHJlZnMoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHJ1bm5lciwgbWFyaW9u
ZXR0ZV9wb3J0LCBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICIi
IkhhbmRsZSB0byBhIHJ1bm5pbmcgRmlyZWZveCBpbnN0YW5jZSIiIgorICAgICAgICBzZWxmLmxv
Z2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgorICAgICAgICBzZWxm
Lm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0dGVfcG9ydAorICAgICAgICBzZWxmLm91dHB1dF9o
YW5kbGVyID0gb3V0cHV0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0g
bGVha19yZXBvcnRfZmlsZQogCi0gICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAg
IGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlLCBza2lwX21hcmlvbmV0dGU9RmFsc2UpOgorICAg
ICAgICAiIiJTdG9wIEZpcmVmb3giIiIKICAgICAgICAgaWYgc2VsZi5ydW5uZXIgaXMgbm90IE5v
bmUgYW5kIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJTdG9wcGluZyBGaXJlZm94ICVzIiAlIHNlbGYucGlkKCkpCisgICAgICAgICAgICBz
aHV0ZG93bl9tZXRob2RzID0gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVyLndhaXQoc2VsZi5z
aHV0ZG93bl90aW1lb3V0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxz
ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdURVJNKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNp
Z25hbC5TSUdLSUxMKSldCisgICAgICAgICAgICBpZiBza2lwX21hcmlvbmV0dGU6CisgICAgICAg
ICAgICAgICAgc2h1dGRvd25fbWV0aG9kcyA9IHNodXRkb3duX21ldGhvZHNbMTpdCiAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBGb3IgRmlyZWZveCB3ZSBhc3N1bWUgdGhhdCBz
dG9wcGluZyB0aGUgcnVubmVyIHByb21wdHMgdGhlCiAgICAgICAgICAgICAgICAgIyBicm93c2Vy
IHRvIHNodXQgZG93bi4gVGhpcyBhbGxvd3MgdGhlIGxlYWsgbG9nIHRvIGJlIHdyaXR0ZW4KLSAg
ICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBbKFRydWUsIGxhbWJkYTogc2VsZi5y
dW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFs
LlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNl
LCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV06CisgICAgICAgICAg
ICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gc2h1dGRvd25fbWV0aG9kczoKICAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGZvcmNlIG9yIG5vdCBjbGVhbjoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldGNvZGUgPSBzdG9wX2YoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29k
ZSBpcyBub3QgTm9uZToKQEAgLTM5NSwyMyArMzg1LDggQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAj
IFRoaXMgY2FuIGhhcHBlbiBvbiBXaW5kb3dzIGlmIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgZGVh
ZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5wcm9jZXNzX2xlYWtzKCkKLSAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQotCi0gICAgZGVmIHByb2Nlc3NfbGVh
a3Moc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlBST0NFU1MgTEVBS1MgJXMiICUg
c2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAgICAgICBpZiBzZWxmLmxzYW5faGFuZGxlcjoKLSAg
ICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyLnByb2Nlc3MoKQotICAgICAgICBpZiBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtb3psZWFrLnByb2Nlc3Nf
bGVha19sb2coCi0gICAgICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlLAotICAgICAg
ICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKLSAgICAg
ICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0sCi0gICAgICAgICAg
ICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNrX2ZpeGVyPXNlbGYu
c3RhY2tfZml4ZXIsCi0gICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5ncm91cF9tZXRhZGF0YS5n
ZXQoInNjb3BlIiksCi0gICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLm1vemxlYWtfYWxsb3dl
ZAotICAgICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc2tpcF9tYXJpb25ldHRlOgorICAgICAg
ICAgICAgc2VsZi5vdXRwdXRfaGFuZGxlci5hZnRlcl9zdG9wKCkKIAogICAgIGRlZiBwaWQoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBpcyBOb25lOgpAQCAt
NDIyLDQ0ICszOTcsMjA4IEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIG9uX291dHB1dChzZWxmLCBsaW5lKToKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAg
ICAgIGlmIHNlbGYucnVubmVyOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1
bm5pbmcoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgor
ICAgICAgICAjIG1venByb2ZpbGUgaGFuZGxlcyBkZWxldGluZyB0aGUgcHJvZmlsZSB3aGVuIHRo
ZSByZWZjb3VudCByZWFjaGVzIDAKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKworY2xh
c3MgT3V0cHV0SGFuZGxlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHN0YWNrZml4X2Rpciwgc3ltYm9sc19wYXRoLCBhc2FuKToKKyAgICAgICAgIiIiRmlsdGVyIGZv
ciBoYW5kbGluZyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFRoaXMgcmVjZWl2
ZXMgRmlyZWZveCBwcm9jZXNzIG91dHB1dCBpbiB0aGUgX19jYWxsX18gZnVuY3Rpb24sIGRvZXMK
KyAgICAgICAgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aGF0J3MgcmVxdWlyZWQsIGFuZCBk
ZWNpZGVzIHdoZXRoZXIgdG8gbG9nCisgICAgICAgIHRoZSBvdXRwdXQuIEJlY2F1c2UgdGhlIEZp
cmVmb3ggcHJvY2VzcyBjYW4gYmUgc3RhcnRlZCBiZWZvcmUgd2Uga25vdworICAgICAgICB3aGlj
aCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgd2UgYnVmZmVyIGFsbCBvdXRwdXQg
dW50aWwKKyAgICAgICAgc2V0dXAoKSBpcyBjYWxsZWQuIFRoaXMgaXMgcmVzcG9uc2libGUgZm9y
IGRvaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uCisgICAgICAgIG9mIHRoZSBvdXRwdXQgaGFu
ZGxlcnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgICMgVGhlc2UgYXJlIGZpbGxlZCBpbiBhZnRlciBzZXR1cCgpIGlzIGNhbGxlZAorICAgICAg
ICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoID0gc3lt
Ym9sc19wYXRoCisgICAgICAgIGlmIHN0YWNrZml4X2RpcjoKKyAgICAgICAgICAgICMgV2UgaGlk
ZSBlcnJvcnMgYmVjYXVzZSB0aGV5IGNhdXNlIGRpc2NvbmNlcnRpbmcgYENSSVRJQ0FMYAorICAg
ICAgICAgICAgIyB3YXJuaW5ncyBpbiB3ZWIgcGxhdGZvcm0gdGVzdCBvdXRwdXQuCisgICAgICAg
ICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0aW9uKHN0YWNrZml4
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcnM9VHJ1ZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25lCisgICAgICAgIHNlbGYuYXNhbiA9
IGFzYW4KKworICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t
b3psZWFrX2FsbG93ZWQgPSBOb25lCisgICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0g
Tm9uZQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0ge30KKworICAgICAgICBzZWxmLmxp
bmVfYnVmZmVyID0gW10KKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBGYWxzZQorCisgICAgZGVm
IHNldHVwKHNlbGYsIGluc3RhbmNlPU5vbmUsIGdyb3VwX21ldGFkYXRhPU5vbmUsIGxzYW5fZGlz
YWJsZWQ9RmFsc2UsCisgICAgICAgICAgICAgIGxzYW5fYWxsb3dlZD1Ob25lLCBsc2FuX21heF9z
dGFja19kZXB0aD1Ob25lLCBtb3psZWFrX2FsbG93ZWQ9Tm9uZSwKKyAgICAgICAgICAgICAgbW96
bGVha190aHJlc2hvbGRzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ29uZmlndXJlIHRo
ZSBvdXRwdXQgaGFuZGxlciIiIgorICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKKwor
ICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbWV0
YWRhdGEgPSB7fQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEK
KworICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IG1vemxlYWtfYWxsb3dlZAorICAgICAg
ICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IG1vemxlYWtfdGhyZXNob2xkcworCisgICAgICAg
IGlmIHNlbGYuYXNhbjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gbW96bGVhay5M
U0FOTGVha3Moc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiLCAiLyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2Vk
PWxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9bHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93QWxsPWxz
YW5fZGlzYWJsZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxl
ciA9IE5vbmUKKworICAgICAgICBzZWxmLnNldHVwX3JhbiA9IFRydWUKKworICAgICAgICBmb3Ig
bGluZSBpbiBzZWxmLmxpbmVfYnVmZmVyOgorICAgICAgICAgICAgc2VsZi5fX2NhbGxfXyhsaW5l
KQorICAgICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKworICAgIGRlZiBhZnRlcl9zdG9wKHNl
bGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtTICVzIiAlIHNlbGYu
aW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSkKKyAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6
CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKKyAgICAgICAgaWYgc2Vs
Zi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBX
ZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5nIGxlYWtzIGluIHRoZSB0YWIgYmVjYXVzZSBpdCBjYW4g
aGFwcGVuIHRoYXQgdGhlCisgICAgICAgICAgICAjIGNvbnRlbnQgcHJvY2VzcyBjcmFzaGVkIGFu
ZCBpbiB0aGF0IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBmYWlsLgorICAgICAgICAg
ICAgIyBJZGVhbGx5IHdlIHdvdWxkIHJlY29yZCB3aGljaCBjb250ZW50IHByb2Nlc3MgY3Jhc2hl
ZCBhbmQganVzdCBza2lwIHRob3NlLgorICAgICAgICAgICAgbW96bGVhay5wcm9jZXNzX2xlYWtf
bG9nKAorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSwKKyAg
ICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3RocmVzaG9sZHMsCisg
ICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJ0YWIiLCAiZ21wbHVnaW4iXSwK
KyAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgc3RhY2tf
Zml4ZXI9c2VsZi5zdGFja19maXhlciwKKyAgICAgICAgICAgICAgICBzY29wZT1zZWxmLmdyb3Vw
X21ldGFkYXRhLmdldCgic2NvcGUiKSwKKyAgICAgICAgICAgICAgICBhbGxvd2VkPXNlbGYubW96
bGVha19hbGxvd2VkKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGxpbmUpOgogICAgICAgICAi
IiJXcml0ZSBhIGxpbmUgb2Ygb3V0cHV0IGZyb20gdGhlIGZpcmVmb3ggcHJvY2VzcyB0byB0aGUg
bG9nIiIiCi0gICAgICAgIGlmICJHTGliLUdPYmplY3QtQ1JJVElDQUwiIGluIGxpbmU6CisgICAg
ICAgIGlmIGIiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgogICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXR1cF9yYW46
CisgICAgICAgICAgICAgICAgc2VsZi5saW5lX2J1ZmZlci5hcHBlbmQobGluZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRhdGEgPSBsaW5lLmRlY29kZSgidXRmOCIsICJy
ZXBsYWNlIikKICAgICAgICAgICAgIGlmIHNlbGYuc3RhY2tfZml4ZXI6CiAgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYuc3RhY2tfZml4ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIHNlbGYubHNh
bl9oYW5kbGVyOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmxzYW5faGFuZGxlci5sb2co
ZGF0YSkKICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5waWQoKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLmluc3RhbmNlIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UucnVubmVyLnByb2Nl
c3NfaGFuZGxlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIucGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0iICIuam9pbihzZWxmLnJ1bm5lci5jb21t
YW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PSIgIi5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLmNvbW1hbmQpKQogCi0gICAgZGVmIGlzX2Fs
aXZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJ1bm5lci5pc19ydW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYg
Y2xlYW51cChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc3RvcChmb3JjZSkKK2Ns
YXNzIFByb2ZpbGVDcmVhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLCBlMTBzLAorICAg
ICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBiaW5hcnksIGNl
cnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jvb3QKKyAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKKyAgICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUK
KyAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCisgICAgICAgIHNlbGYuZTEw
cyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfZmlzc2lvbiA9IGVuYWJsZV9maXNzaW9uCisg
ICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNl
bGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKKyAgICAgICAgc2Vs
Zi5iaW5hcnkgPSBiaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRp
bF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlmaWNh
dGVfcGF0aAogCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIGFzc2Vy
dCBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBub3QgTm9uZQotICAgICAgICByZXR1cm4gRXhlY3V0
b3JCcm93c2VyLCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fQorICAg
IGRlZiBjcmVhdGUoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSBhIEZpcmVmb3ggcHJvZmlsZSBh
bmQgcmV0dXJuIHRoZSBtb3pwcm9maWxlIFByb2ZpbGUgb2JqZWN0IHBvaW50aW5nIGF0IHRoYXQK
KyAgICAgICAgcHJvZmlsZSIiIgorICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYuX2xvYWRfcHJl
ZnMoKQogCi0gICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgotICAgICAg
ICBkdW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgIm1pbmlkdW1w
cyIpCisgICAgICAgIHByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJl
bmNlcykKKyAgICAgICAgc2VsZi5fc2V0X3JlcXVpcmVkX3ByZWZzKHByb2ZpbGUpCisgICAgICAg
IGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX3NldHVwX3NzbChwcm9maWxlKQorCisgICAgICAgIHJldHVybiBwcm9maWxlCisKKyAgICBk
ZWYgX2xvYWRfcHJlZnMoc2VsZik6CisgICAgICAgIHByZWZzID0gUHJlZmVyZW5jZXMoKQorCisg
ICAgICAgIHByZWZfcGF0aHMgPSBbXQogCi0gICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxv
Z19jcmFzaGVzKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxrX2JpbmFy
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9j
ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3Qp
KQorICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdwcm9m
aWxlcy5qc29uJykKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocHJvZmlsZXMpOgorICAgICAg
ICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZv
ciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10ZXN0cyddOgorICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAoTm9uZSwgJ25pZ2h0bHknKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihz
ZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCisgICAgICAgICAgICAgICAgICAgIGVs
aWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgbmFtZSwgJ3Vz
ZXIuanMnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT2xkIHByZWZlcmVuY2UgZmls
ZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVzLmpzb24gKHJlbW92ZSB3aGVu
IG5vIGxvbmdlciBzdXBwb3J0ZWQpCisgICAgICAgICAgICBsZWdhY3lfcHJlZl9wYXRocyA9ICgK
KyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJlZnNfZ2Vu
ZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBiZWxvdworICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21tb24nLCAndXNlci5qcycpLCAg
IyBVc2VkIGluIEZpcmVmb3ggNjEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBwYXRo
IGluIGxlZ2FjeV9wcmVmX3BhdGhzOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChwYXRoKQorCisg
ICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBwcmVmcy5hZGQoUHJlZmVyZW5jZXMucmVhZF9w
cmVmcyhwYXRoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBmaWxlIGluICVzIiAlIHBhdGgp
CiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYpOgorICAgICAgICAjIEFkZCBhbnkgY3VzdG9tIHBy
ZWZlcmVuY2VzCisgICAgICAgIHByZWZzLmFkZChzZWxmLmV4dHJhX3ByZWZzLCBjYXN0PVRydWUp
CisKKyAgICAgICAgcmV0dXJuIHByZWZzKCkKKworICAgIGRlZiBfc2V0X3JlcXVpcmVkX3ByZWZz
KHNlbGYsIHByb2ZpbGUpOgorICAgICAgICAiIiJTZXQgcHJlZmVyZW5jZXMgcmVxdWlyZWQgZm9y
IHdwdHJ1bm5lciB0byBmdW5jdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0
IHNldCB0aGUgbWFyaW9uZXR0ZSBwb3J0LCBzaW5jZSB3ZSBkb24ndCBhbHdheXMKKyAgICAgICAg
a25vdyB0aGF0IGF0IHByb2ZpbGUgY3JlYXRpb24gdGltZS4gU28gdGhlIGNhbGxlciBpcyByZXNw
b25pc2JsZSBmb3IKKyAgICAgICAgc2V0dGluZyB0aGF0IG9uY2UgaXQncyBhdmFpbGFibGUuIiIi
CisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAgICAgICJuZXR3b3Jr
LmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCisg
ICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCisgICAgICAgICAgICAj
IFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcg
OTA1NDA0KQorICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCisgICAgICAgICAg
ICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAorICAgICAgICAgICAgIm5ldHdvcmsu
cHJlbG9hZCI6IFRydWUsCisgICAgICAgIH0pCisgICAgICAgIGlmIHNlbGYuZTEwczoKKyAgICAg
ICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRv
c3RhcnQiOiBUcnVlfSkKKworICAgICAgICBpZiBzZWxmLmVuYWJsZV9maXNzaW9uOgorICAgICAg
ICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJmaXNzaW9uLmF1dG9zdGFydCI6IFRydWV9
KQorCisgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAg
IHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVycnVwdGlibGUtcmVmbG93LmVu
YWJsZWQiOiBGYWxzZX0pCisKKyAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lueHAgKyBlMTBzLCBk
aXNhYmxlIGh3YWNjZWwKKyAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxhdGZvcm0uc3lzdGVt
KCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAorICAgICAgICAgICAgIjUuMSIgaW4g
cGxhdGZvcm0udmVyc2lvbigpKToKKyAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0pCisKKyAgICBkZWYg
X3NldHVwX3NzbChzZWxmLCBwcm9maWxlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgY2VydGlmaWNh
dGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMgaXMgY29uZmlndXJl
ZAogICAgICAgICB0byB0cnVzdCB0aGUgQ0EgQ2VydGlmaWNhdGUgdGhhdCBoYXMgc2lnbmVkIHRo
ZSB3ZWItcGxhdGZvcm0udGVzdCBzZXJ2ZXIKICAgICAgICAgY2VydGlmaWNhdGUuIiIiCkBAIC00
OTAsMTYgKzYyOSwxNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
ICAgIGNtZCA9IFtzZWxmLmNlcnR1dGlsX2JpbmFyeV0gKyBsaXN0KGFyZ3MpCiAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dCgiY2VydHV0aWwiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnBy
b2Nlc3MuU1RET1VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
Ii5qb2luKGNtZCkpCiAKLSAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnByb2Zp
bGUucHJvZmlsZSwgIi5jcnRkYnB3IikKKyAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihw
cm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCiAgICAgICAgIHdpdGggb3Blbihwd19wYXRoLCAi
dyIpIGFzIGY6CiAgICAgICAgICAgICAjIFVzZSBlbXB0eSBwYXNzd29yZCBmb3IgY2VydGlmaWNh
dGUgZGIKICAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgICAgICBjZXJ0X2RiX3BhdGgg
PSBzZWxmLnByb2ZpbGUucHJvZmlsZQorICAgICAgICBjZXJ0X2RiX3BhdGggPSBwcm9maWxlLnBy
b2ZpbGUKIAogICAgICAgICAjIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBkYgogICAgICAgICBj
ZXJ0dXRpbCgiLU4iLCAiLWQiLCBjZXJ0X2RiX3BhdGgsICItZiIsIHB3X3BhdGgpCkBAIC01MTAs
MyArNjQ5LDEwNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKIAogICAgICAgICAj
IExpc3QgYWxsIGNlcnRzIGluIHRoZSBkYXRhYmFzZQogICAgICAgICBjZXJ0dXRpbCgiLUwiLCAi
LWQiLCBjZXJ0X2RiX3BhdGgpCisKKworCitjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToK
KyAgICBpbml0X3RpbWVvdXQgPSA3MAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19i
aW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAgICAgICAgIGNhX2Nl
cnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwg
ZW5hYmxlX2Zpc3Npb249RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0YWNrZml4X2Rpcj1Ob25l
LCBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgYXNhbj1GYWxzZSwgc3R5bG9fdGhyZWFkcz0xLCBjaGFv
c19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLAorICAgICAgICAgICAgICAgICBicm93c2Vy
X2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFkbGVzcz1Ob25lLCBwcmVsb2FkX2Jyb3dzZXI9RmFsc2Us
ICoqa3dhcmdzKToKKyAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBpZiB0aW1lb3V0X211bHRpcGxp
ZXI6CisgICAgICAgICAgICBzZWxmLmluaXRfdGltZW91dCA9IHNlbGYuaW5pdF90aW1lb3V0ICog
dGltZW91dF9tdWx0aXBsaWVyCisKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKKworICAg
ICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJv
bHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBz
dGFja3dhbGtfYmluYXJ5CisKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgorICAgICAgICBzZWxm
LmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisKKyAgICAgICAgcHJvZmlsZV9jcmVhdG9yID0gUHJv
ZmlsZUNyZWF0b3IobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJl
ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQor
CisgICAgICAgIGlmIHByZWxvYWRfYnJvd3NlcjoKKyAgICAgICAgICAgIGluc3RhbmNlX21hbmFn
ZXJfY2xzID0gUHJlbG9hZEluc3RhbmNlTWFuYWdlcgorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBTaW5nbGVJbnN0YW5jZU1hbmFnZXIKKyAgICAgICAg
c2VsZi5pbnN0YW5jZV9tYW5hZ2VyID0gaW5zdGFuY2VfbWFuYWdlcl9jbHMobG9nZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
bmFyeV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlX2NyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxhZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRsZXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi
bGVfd2VicmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFrX2NoZWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNh
bikKKworCisgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgorICAgICAgICByZXR1cm4geyJj
aGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVha3MsCisgICAgICAg
ICAgICAgICAgImxzYW5fZGlzYWJsZWQiOiB0ZXN0LmxzYW5fZGlzYWJsZWQsCisgICAgICAgICAg
ICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAg
ICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5t
b3psZWFrX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNl
bGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKworICAgIGRlZiBzdGFy
dChzZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW5z
dGFuY2UgPSBzZWxmLmluc3RhbmNlX21hbmFnZXIuZ2V0KCkKKyAgICAgICAgc2VsZi5pbnN0YW5j
ZS5vdXRwdXRfaGFuZGxlci5zZXR1cChzZWxmLmluc3RhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCisgICAgZGVmIHN0b3Aoc2Vs
ZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIuc3RvcF9jdXJy
ZW50KGZvcmNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3RvcHBlZCIpCisKKyAgICBk
ZWYgcGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5waWQoKQorCisgICAg
ZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZSBhbmQgc2Vs
Zi5pbnN0YW5jZS5pc19hbGl2ZSgpCisKKyAgICBkZWYgY2xlYW51cChzZWxmLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlci50ZWFyZG93bihmb3JjZSkKKworICAg
IGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5pbnN0YW5j
ZSBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Im1hcmlvbmV0
dGVfcG9ydCI6IHNlbGYuaW5zdGFuY2UubWFyaW9uZXR0ZV9wb3J0fQorCisgICAgZGVmIGNoZWNr
X2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgorICAgICAgICBkdW1wX2RpciA9IG9zLnBhdGgu
am9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9maWxlLnByb2ZpbGUsICJtaW5pZHVtcHMiKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxvZ19jcmFz
aGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxr
X2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3M9cHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiTG9va2luZyBmb3IgY3Jhc2ggZHVtcCBmaWxlcyBmYWlsZWQiKQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5k
cm9pZC5weQppbmRleCAzM2I1ZDUxZTU0ZTgyYWRiNmNkYmU0NjEyMjYzYmMzMDg4M2RkMTA4Li5h
NmNiOGYwZGQzZTBmNjY5ZDQ3YjRhOWE0YTcyOGQ5OWZjNjQ4OTg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKQEAgLTEsMjYgKzEsMzAgQEAKIGltcG9ydCBvcwog
CiBpbXBvcnQgbW96bmV0d29yawotZnJvbSBtb3pwcm9maWxlIGltcG9ydCBGaXJlZm94UHJvZmls
ZQogZnJvbSBtb3pydW5uZXIgaW1wb3J0IEZlbm5lY0VtdWxhdG9yUnVubmVyCiAKIGZyb20gLmJh
c2UgaW1wb3J0IChnZXRfZnJlZV9wb3J0LAogICAgICAgICAgICAgICAgICAgIGNtZF9hcmcsCiAg
ICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jb21tYW5kKQogZnJvbSAuLmV4ZWN1dG9ycy5leGVj
dXRvcm1hcmlvbmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMg
bm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2Vz
cyBpbXBvcnQgY2FzdF9lbnYKK2Zyb20gLmJhc2UgaW1wb3J0IChCcm93c2VyLAorICAgICAgICAg
ICAgICAgICAgIEV4ZWN1dG9yQnJvd3NlcikKIGZyb20gLmZpcmVmb3ggaW1wb3J0IChnZXRfdGlt
ZW91dF9tdWx0aXBsaWVyLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAgcnVu
X2luZm9fZXh0cmFzIGFzIGZ4X3J1bl9pbmZvX2V4dHJhcywKICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfcHJvcGVydGllcywgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dG9yX2t3YXJncywgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgIEZp
cmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgUHJvZmls
ZUNyZWF0b3IgYXMgRmlyZWZveFByb2ZpbGVDcmVhdG9yKQogCiAKIF9fd3B0cnVubmVyX18gPSB7
InByb2R1Y3QiOiAiZmlyZWZveF9hbmRyb2lkIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2Fy
Z3MiOiAiY2hlY2tfYXJncyIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkZpcmVmb3hB
bmRyb2lkQnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5l
c3MiOiAiTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIk1h
cmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9r
d2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dh
cmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLApAQCAtNTEsNiArNTUsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJ0aW1l
b3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncyksCisgICAgICAgICAgICAiZTEwcyI6IHJ1bl9pbmZvX2RhdGFb
ImUxMHMiXSwKICAgICAgICAgICAgICMgZGVza3RvcCBvbmx5CiAgICAgICAgICAgICAibGVha19j
aGVjayI6IEZhbHNlLAogICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBrd2FyZ3NbInN0eWxv
X3RocmVhZHMiXSwKQEAgLTgwLDQwICs4NSwxNSBAQCBkZWYgZW52X29wdGlvbnMoKToKICAgICAg
ICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9CiAKIAotY2xhc3MgRmlyZWZveEFuZHJv
aWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQgPSAzMDAKLSAgICBz
aHV0ZG93bl90aW1lb3V0ID0gNjAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBy
ZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcu
dGVzdCIsCi0gICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCAq
Kmt3YXJncyk6Ci0gICAgICAgIEZpcmVmb3hCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
Tm9uZSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wYWNr
YWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gZGV2
aWNlX3NlcmlhbAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBrd2FyZ3NbInRlc3RzX3Jvb3Qi
XQotICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBrd2FyZ3NbImluc3RhbGxfZm9udHMiXQot
ICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBrd2FyZ3NbInN0YWNrd2Fsa19iaW5hcnki
XQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5tYXJp
b25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0g
Z2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgZW52ID0ge30KLSAgICAgICAgZW52WyJNT1pfQ1JB
U0hSRVBPUlRFUiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVJfU0hVVERP
V04iXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FMX0NPTk5FQ1RJT05T
Il0gPSAiMSIKLSAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIoc2VsZi5zdHlsb190
aHJlYWRzKQotICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNoYW9zX21vZGVfZmxh
Z3MpCi0gICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKLSAgICAgICAgICAgIGVudlsi
TU9aX1dFQlJFTkRFUiJdID0gIjEiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbnZbIk1P
Wl9XRUJSRU5ERVIiXSA9ICIwIgotCi0gICAgICAgIHByZWZlcmVuY2VzID0gc2VsZi5sb2FkX3By
ZWZzKCkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUs
IGV4dHJhX3ByZWZzLCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJv
d3Nlcl9jaGFubmVsLCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRlX3BhdGgpOgorICAg
ICAgICBzdXBlcihQcm9maWxlQ3JlYXRvciwgc2VsZikuX19pbml0X18obG9nZ2VyLCBwcmVmc19y
b290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLCBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9j
aGFubmVsLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCi0gICAgICAgIHNlbGYu
cHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAg
ICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRl
LnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKKyAgICBkZWYgX3NldF9yZXF1aXJlZF9wcmVm
cyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoewogICAg
ICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2luKHNlbGYuY29uZmln
LmRvbWFpbnNfc2V0KSwKICAgICAgICAgICAgICJkb20uZGlzYWJsZV9vcGVuX2R1cmluZ19sb2Fk
IjogRmFsc2UsCiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLApA
QCAtMTIxLDkgKzEwMSwxMiBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJy
b3dzZXIpOgogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUsCiAgICAgICAgIH0p
CiAKKyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9KQorCiAgICAgICAg
IGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmluZm8oIlNldHRpbmcgYW5kcm9pZCByZWZ0ZXN0IHByZWZlcmVuY2VzIikKLSAgICAgICAgICAg
IHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeworICAgICAgICAgICAgcHJvZmlsZS5zZXRf
cHJlZmVyZW5jZXMoewogICAgICAgICAgICAgICAgICJicm93c2VyLnZpZXdwb3J0LmRlc2t0b3BX
aWR0aCI6IDgwMCwKICAgICAgICAgICAgICAgICAjIERpc2FibGUgaGlnaCBEUEkKICAgICAgICAg
ICAgICAgICAibGF5b3V0LmNzcy5kZXZQaXhlbHNQZXJQeCI6ICIxLjAiLApAQCAtMTM1LDYgKzEx
OCw3MyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgogICAg
ICAgICAgICAgICAgICJsYXlvdXQudGVzdGluZy5vdmVybGF5LXNjcm9sbGJhcnMuYWx3YXlzLXZp
c2libGUiOiBUcnVlLAogICAgICAgICAgICAgfSkKIAorCisKK2NsYXNzIEZpcmVmb3hBbmRyb2lk
QnJvd3NlcihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSAzMDAKKyAgICBzaHV0ZG93bl90
aW1lb3V0ID0gNjAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3Qs
IHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcudGVzdCIsCisg
ICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCBleHRyYV9wcmVm
cz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1O
b25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1Ob25lLAorICAgICAg
ICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93
ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5h
cnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwg
YXNhbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2Rl
X2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLAorICAg
ICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5vbmUsICoqa3dh
cmdzKToKKworICAgICAgICBzdXBlcihGaXJlZm94QW5kcm9pZEJyb3dzZXIsIHNlbGYpLl9faW5p
dF9fKGxvZ2dlcikKKyAgICAgICAgc2VsZi5wcmVmc19yb290ID0gcHJlZnNfcm9vdAorICAgICAg
ICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9
IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFs
CisgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KKyAgICAgICAgc2VsZi5zeW1i
b2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5ID0g
c3RhY2t3YWxrX2JpbmFyeQorICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGls
X2JpbmFyeQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0
ZV9wYXRoCisgICAgICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfd2Vi
cmVuZGVyID0gZW5hYmxlX3dlYnJlbmRlcgorICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAg
ICAgc2VsZi50aW1lb3V0X211bHRpcGxpZXIgPSB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAg
c2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCisg
ICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2VsZi5j
aGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZworICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAor
ICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBpbnN0YWxsX2ZvbnRzCisgICAgICAgIHNlbGYu
dGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKworICAgICAgICBzZWxmLnByb2ZpbGVfY3JlYXRvciA9
IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgpCisKKyAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYucHJvZmlsZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKyAgICBkZWYgc2V0dGluZ3Moc2VsZiwgdGVz
dCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBu
b3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2Fu
X2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2RlcHRoIjogdGVzdC5s
c2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVha19hbGxvd2VkIjog
c2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAgICAgICAgICAgICAg
ICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtf
dGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaWYg
c2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0
ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgc2VsZi5wcm9maWxlID0gc2VsZi5w
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJl
bmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fSkKKwogICAgICAg
ICBpZiBzZWxmLmluc3RhbGxfZm9udHM6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
Q29weWluZyBBaGVtIGZvbnQgdG8gcHJvZmlsZSIpCiAgICAgICAgICAgICBmb250X2RpciA9IG9z
LnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgImZvbnRzIikKQEAgLTE0NiwxOCArMTk2
LDI3IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAKICAg
ICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogCi0gICAgICAgIGlmIHNlbGYuY2Ff
Y2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3Ns
KCkKLQogICAgICAgICBkZWJ1Z19hcmdzLCBjbWQgPSBicm93c2VyX2NvbW1hbmQoc2VsZi5wYWNr
YWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJv
dXQ6YmxhbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVidWdfaW5mbykKIAorICAgICAgICBlbnYgPSB7fQorICAgICAgICBlbnZbIk1PWl9DUkFT
SFJFUE9SVEVSIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9X
TiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMi
XSA9ICIxIgorICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3Ro
cmVhZHMpCisgICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFn
cykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAgICAgICAgZW52WyJN
T1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudlsiTU9a
X1dFQlJFTkRFUiJdID0gIjAiCisKICAgICAgICAgc2VsZi5ydW5uZXIgPSBGZW5uZWNFbXVsYXRv
clJ1bm5lcihhcHA9c2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZT1zZWxmLnByb2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9s
c19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlh
bD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKQEAgLTE5Niw2ICsy
NTUsMjYgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKICAg
ICAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
c3RvcHBlZCIpCiAKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJ1bm5lci5w
cm9jZXNzX2hhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlci5w
aWQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5uZXI6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBz
ZWxmLnN0b3AoZm9yY2UpCisKKyAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQiOiBzZWxmLm1hcmlv
bmV0dGVfcG9ydH0KKwogICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToK
ICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCJNSU5JRFVNUF9TVEFDS1dBTEsiLCAiIikg
YW5kIHNlbGYuc3RhY2t3YWxrX2JpbmFyeToKICAgICAgICAgICAgIG9zLmVudmlyb25bIk1JTklE
VU1QX1NUQUNLV0FMSyJdID0gc2VsZi5zdGFja3dhbGtfYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKaW5k
ZXggNjM1ZTgyN2MyOTViNWIxMTkyODIyZjUxZDkzYTRiMDllMzc2NDE5Mi4uNzhjMjJiOTA5YWNm
NDEwMDM4ZmYwNjc2OTM2NjY2MmFiMGM1ODlhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2llLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQpAQCAtNjQsNyAr
NjQsNyBAQCBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5w
eQppbmRleCA1NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2MmNlNDBkNzQ5ZGRhY2I2YTgzLi44MDVmZWRl
ZTYzNmNkMjIxNTVlZDE0M2NmMTE0OGYzYzJmNWQ5OGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvb3BlcmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5
CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJp
LnB5CmluZGV4IGY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5NTA2OTQ2Yjk1MzhiNjcuLmNiMmIx
NzVkNGRmYmMzMTY2ZTRhZDVhNmFmZTE3NGZmZGJjNmZmOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFy
aS5weQpAQCAtMyw3ICszLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFy
aURyaXZlclNlcnZlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFz
IGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVy
IGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2FmYXJpIGlt
cG9ydCBTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIApAQCAtMTIs
NyArMTMsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogInNhZmFyaSIsCiAgICAgICAg
ICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3Ii
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVm
VGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAi
U2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRv
ciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3Mi
LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIs
CiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLApAQCAtNzksNyAr
ODEsNyBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRv
KTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFu
ZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAg
ICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVw
KHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CmluZGV4IDMz
MDFjNzViMjEwMDRhNTU0ZjkxZDQ3NjdiODU2MGZjNDAyMTQ0MTIuLmZlODM2ODJmNWZjMTZmNGIy
ZGE2NjRiOGU2Y2E0ZGJjOGRkYzUwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKQEAgLTksMTAg
KzksMTEgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiBpbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aW1lCi1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8gYXMgQ1N0cmlu
Z0lPCiAKIGltcG9ydCByZXF1ZXN0cwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lP
IGFzIFN0cmluZ0lPCisKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nl
ciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIg
ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBh
cyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTI0LDcgKzEyNSw3IEBAIGRlZiBlbnZfb3B0aW9u
cygpOgogZGVmIGdldF90YXIodXJsLCBkZXN0KToKICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KHVy
bCwgc3RyZWFtPVRydWUpCiAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKLSAgICB3aXRoIHRh
cmZpbGUub3BlbihmaWxlb2JqPUNTdHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkpKSBhcyBmOgorICAg
IHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9U3RyaW5nSU8ocmVzcC5yYXcucmVhZCgpKSkgYXMg
ZjoKICAgICAgICAgZi5leHRyYWN0YWxsKHBhdGg9ZGVzdCkKIAogCkBAIC0xNzgsNyArMTc5LDcg
QEAgY2xhc3MgU2F1Y2VDb25uZWN0KCk6CiAKICAgICAgICAgdG90X3dhaXQgPSAwCiAgICAgICAg
IHdoaWxlIG5vdCBvcy5wYXRoLmV4aXN0cygnLi9zYXVjZV9pc19yZWFkeScpIGFuZCBzZWxmLnNj
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiB0b3Rfd2FpdCA+PSBzZWxm
LnNhdWNlX2luaXRfdGltZW91dDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNhdWNlX2luaXRf
dGltZW91dCBvciAodG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3RpbWVvdXQpOgogICAgICAg
ICAgICAgICAgIHNlbGYucXVpdCgpCiAKICAgICAgICAgICAgICAgICByYWlzZSBTYXVjZUV4Y2Vw
dGlvbigiU2F1Y2UgQ29ubmVjdCBQcm94eSB3YXMgbm90IHJlYWR5IGFmdGVyICVkIHNlY29uZHMi
ICUgdG90X3dhaXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2
ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKaW5kZXggMjk1M2Rl
MTgxNzRlZjc1ZDUwNWRiMGI4ZDUxOGZlMzMzOWY3MDY1ZS4uMDJiNzk2Yjc1NjAzODVjZDAwOTAy
YmJmYzFiMzYxYTU0MjI0OWY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nl
cnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQpA
QCAtMTEsNiArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVy
ICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3Mg
YXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZXJ2b2Ry
aXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTog
RjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vydm9X
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNzIGlt
cG9ydCBjYXN0X2VudgogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdKQogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlckJyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRlYnVnX2luZm8gb3Igbm90IHNlbGYu
ZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NI
YW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJv
Yy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vz
cy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBz
dWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVudikpCiAKICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZvIFN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtp
dC5weQppbmRleCBhYTI4NjIxMzk0NTBmNjgyZTYwNTFjNWY2MTdhYjhjYWYxOTYwNzg0Li5kYTkz
Y2YxNjQzOTk1ZDk1YjhkNmRlMWY3MGM3NzMxYjU1NTk3NjhiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJr
aXQucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9y
QnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRp
cGxpZXIsIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJu
ZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhl
Y3V0b3IgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFdlYktp
dERyaXZlclNlcnZlcgogCkBAIC0xMyw3ICsxNCw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0IiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dz
ZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6
ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9y
In0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRl
c3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4
ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52
X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjog
ImVudl9vcHRpb25zIiwKQEAgLTk5LDcgKzEwMSw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2
ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdo
ZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNf
YWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQppbmRleCBk
NzM1ZjNjMDc5MmE2MzU2YzYyNzAxNDMyMDVjNTViN2MwMmVlZjQ3Li5kOGI5NzQ0YmQ3NDNlMzlj
ZTE5ZjAwOGU3ZjQwY2JjODBlODAxMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0
IGdldF90aW1lb3V0X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0aWZpY2F0ZV9kb21h
aW5fbGlzCiBmcm9tIC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZyb20gLi5leGVjdXRv
cnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNz
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhl
Y3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogIndlYmtpdGd0
a19taW5pYnJvd3NlciIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJf
a3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjog
eyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRv
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAg
ICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAg
ICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAg
ImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
bnZpcm9ubWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQppbmRleCBlNzlhZTM3
NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4Li5mNzY4MzZlYTY2YjU5YmIxNmYyZDM3
OTI0NTFiY2YyOGVjYjJmYjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBv
cnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgZ2V0X2RlZmF1bHRfbG9n
Z2VyLCBoYW5kbGVycywgcHJveHkKIApAQCAtNTIsNyArNTMsOSBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnRFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAg
ICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdGVzdCBlbnZpcm9ubWVudCBpLmUu
IHRoZSBodHRwIGFuZAogICAgIHdlYnNvY2tldHMgc2VydmVycyIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciwgcGF1c2Vf
YWZ0ZXJfdGVzdCwgZGVidWdfaW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywgZW52X2V4dHJhcyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRf
bXVsdGlwbGVyLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZv
LCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBlbmFi
bGVfcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAg
ICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IE5vbmUK
QEAgLTY4LDYgKzcxLDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzX2Nt
cyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZpZworICAgICAgICBz
ZWxmLmVuYWJsZV9xdWljID0gZW5hYmxlX3F1aWMKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6
CiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IHNlbGYuYnVpbGRfY29uZmlnKCkKQEAgLTkxLDYg
Kzk1LDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5z
ZXJ2ZXJzID0gc2VydmUuc3RhcnQoc2VsZi5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3JvdXRlcygpKQorCiAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5nZXQoInN1cHBvcnRzX2RlYnVnZ2VyIikgYW5kIHNlbGYuZGVidWdfaW5mbyBhbmQgc2VsZi5k
ZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAgICAgICAgICAgc2VsZi5pZ25vcmVfaW50ZXJydXB0
cygpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC05OCw3ICsxMDMsNyBAQCBjbGFzcyBUZXN0RW52
aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192
YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRzKCkKIAotICAgICAg
ICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2ZXJzKToKICAgICAg
ICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAgICAgICAgICBzZXJ2
ZXIua2lsbCgpCiAgICAgICAgIGZvciBjbSBpbiBzZWxmLmVudl9leHRyYXNfY21zOgpAQCAtMTI2
LDcgKzEzMSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAg
ICJodHRwcyI6IFs4NDQzXSwKICAgICAgICAgICAgICJ3cyI6IFs4ODg4XSwKICAgICAgICAgICAg
ICJ3c3MiOiBbODg4OV0sCisgICAgICAgICAgICAiaDIiOiBbOTAwMF0sCiAgICAgICAgIH0KKyAg
ICAgICAgaWYgc2VsZi5lbmFibGVfcXVpYzoKKyAgICAgICAgICAgIGNvbmZpZy5wb3J0c1sicXVp
YyJdID0gWzEwMDAwXQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgp
OgogICAgICAgICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6CkBAIC0xOTEsMTAg
KzE5OSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIGRh
dGEgKz0gZnAucmVhZCgpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Rkcml2ZXItZXh0cmEuanMiKSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICBkYXRhICs9IGZw
LnJlYWQoKQotICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKGIiR0VUIiwgYiIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXIuanMiLAorICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVy
KCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFzY3JpcHQiKSkKIAot
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVyaXRlbXMo
KToKKyAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMoc2VsZi50ZXN0X3Bh
dGhzKToKICAgICAgICAgICAgIGlmIHVybF9iYXNlID09ICIvIjoKICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfbW91bnRfcG9pbnQodXJsX2Jh
c2UsIHBhdGhzWyJ0ZXN0c19wYXRoIl0pCkBAIC0yMTAsOCArMjE4LDEwIEBAIGNsYXNzIFRlc3RF
bnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBlYWNoX3NsZWVwX3NlY3MgPSAwLjUKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MKICAgICAgICAgd2hp
bGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKLSAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYudGVz
dF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CisgICAgICAgICAgICBmYWls
ZWQsIHBlbmRpbmcgPSBzZWxmLnRlc3Rfc2VydmVycygpCisgICAgICAgICAgICBpZiBmYWlsZWQ6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nOgogICAg
ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdGltZS5zbGVlcChlYWNoX3NsZWVwX3Nl
Y3MpCiAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXJyb3IoIlNlcnZlcnMgZmFpbGVkIHRvIHN0
YXJ0OiAlcyIgJQpAQCAtMjE5LDE5ICsyMjksMjMgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzKHNlbGYpOgogICAgICAgICBmYWlsZWQgPSBb
XQorICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2
ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0
ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxm
LnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBzZXJ2ZXJzOgotICAg
ICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBl
bmQoKHNjaGVtZSwgcG9ydCkpCisKKyAgICAgICAgaWYgbm90IGZhaWxlZCBhbmQgc2VsZi50ZXN0
X3NlcnZlcl9wb3J0OgorICAgICAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRl
bXMoc2VsZi5zZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNl
cnZlcnM6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMSkKICAgICAgICAgICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWxlZC5hcHBlbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGVu
ZGluZy5hcHBlbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQo
KHNjaGVtZSwgcG9ydCkpCi0gICAgICAgIHJldHVybiBmYWlsZWQKKyAgICAgICAgcmV0dXJuIGZh
aWxlZCwgcGVuZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25z
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDNk
ZDY2NWEyZjNiYzU1NzZjYjUzNWYyOWQ0OWFiYmM5NTkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKQEAgLTAsMCArMSwxODQgQEAKKworY2xh
c3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImNsaWNrIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJd
CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVj
dG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcgZWxlbWVu
dDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxlbWVudChl
bGVtZW50KQorCisKK2NsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJz
ZW5kX2tleXMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Cisg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90
b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBzZWxlY3Rv
ciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQor
ICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3Rv
cihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBl
bGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMu
c2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24o
b2JqZWN0KToKKyAgICBuYW1lID0gImFjdGlvbl9zZXF1ZW5jZSIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6CisgICAgICAgICMgVE9ETzogc29tZSBzb3J0IG9mIHNoYWxsb3cgZXJyb3Ig
Y2hlY2tpbmcKKyAgICAgICAgYWN0aW9ucyA9IHBheWxvYWRbImFjdGlvbnMiXQorICAgICAgICBm
b3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9uczoKKyAgICAgICAgICAgIGlmIGFjdGlvblNlcXVl
bmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgorICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4g
YWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlv
blsidHlwZSJdID09ICJwb2ludGVyTW92ZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBp
c2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0sIGRpY3QpKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxmLmdldF9lbGVtZW50KGFjdGlvblsib3JpZ2luIl1b
InNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUiXVsiZnJhbWUiXSkKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9hY3Rpb25zKHsiYWN0aW9ucyI6IGFjdGlvbnN9KQor
CisgICAgZGVmIGdldF9lbGVtZW50KHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKKyAg
ICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Io
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIHJldHVybiBlbGVtZW50CisKK2NsYXNz
IEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiZ2VuZXJhdGVf
dGVzdF9yZXBvcnQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBw
cm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBtZXNz
YWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5l
cmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzZWxmLnByb3RvY29s
LmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCisKK2Ns
YXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF9wZXJtaXNz
aW9uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgcGVybWlzc2lvbl9w
YXJhbXMgPSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCisgICAgICAgIGRlc2NyaXB0b3Ig
PSBwZXJtaXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCisgICAgICAgIG5hbWUgPSBkZXNjcmlw
dG9yWyJuYW1lIl0KKyAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFtc1sic3RhdGUiXQor
ICAgICAgICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9uZVJlYWxtIiwgRmFs
c2UpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1pc3Npb24gJXMgdG8g
JXMsIG9uZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNjcmlwdG9yLCBzdGF0
ZSwgb25lX3JlYWxtKQorCitjbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmpl
Y3QpOgorICAgIG5hbWUgPSAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgdmly
dHVhbCBhdXRoZW50aWNhdG9yIikKKyAgICAgICAgY29uZmlnID0gcGF5bG9hZFsiY29uZmlnIl0K
KyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50
aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMiICUgYXV0aGVudGlj
YXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKKworY2xhc3MgUmVtb3Zl
VmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInJlbW92ZV92
aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoYXV0aGVudGljYXRv
cl9pZCkKKworCitjbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9
ICJhZGRfY3JlZGVudGlhbCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3Rv
Y29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2Nv
bCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAg
IGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAg
Y3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQorICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50aWNhdG9yICVzICIgJSBh
dXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlhbCkK
KworY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImdldF9j
cmVkZW50aWFscyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToK
KyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhl
bnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0dWFsIGF1dGhlbnRpY2F0
b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29s
LnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkK
KworY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAicmVt
b3ZlX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIGNy
ZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KKyAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50aWNhdG9yICVzIiAl
IChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50aWFsKGF1dGhlbnRp
Y2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCisKK2NsYXNzIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfYWxsX2NyZWRlbnRpYWxzIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3Zp
bmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9y
X2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iu
cmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitjbGFzcyBTZXRVc2Vy
VmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF91c2VyX3ZlcmlmaWVkIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9
IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBheWxvYWRbInV2Il0K
KyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0dGluZyB1c2VyIHZl
cmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0aGVudGljYXRvcl9p
ZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52
aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVudGljYXRvcl9pZCwg
dXYpCisKKworYWN0aW9ucyA9IFtDbGlja0FjdGlvbiwKKyAgICAgICAgICAgU2VuZEtleXNBY3Rp
b24sCisgICAgICAgICAgIEFjdGlvblNlcXVlbmNlQWN0aW9uLAorICAgICAgICAgICBHZW5lcmF0
ZVRlc3RSZXBvcnRBY3Rpb24sCisgICAgICAgICAgIFNldFBlcm1pc3Npb25BY3Rpb24sCisgICAg
ICAgICAgIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAorICAgICAgICAgICBSZW1vdmVW
aXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgQWRkQ3JlZGVudGlhbEFjdGlv
biwKKyAgICAgICAgICAgR2V0Q3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUNy
ZWRlbnRpYWxBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0aW9uLAor
ICAgICAgICAgICBTZXRVc2VyVmVyaWZpZWRBY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKaW5k
ZXggM2Q4YWY0ZGU0ODY4ZTlkYTg2YjM4ZDFjOWQ3YjMyZWQwYmZkMjY1Yi4uYzc1YThlZjMyMGYy
ZDE0OTIwNmM5YWI4MmNlNTViYjc1NGRkYmI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQpAQCAt
MSw2ICsxLDUgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBoYXNobGliCi1mcm9tIHNpeC5tb3Zl
cy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KIGltcG9ydCBpbwogaW1wb3J0IGpz
b24KIGltcG9ydCBvcwpAQCAtOCwxMCArNywxMyBAQCBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiBmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUK
K2Zyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgorZnJvbSBz
aXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdCwgdXJsdW5zcGxp
dAogCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorZnJvbSAuYWN0aW9ucyBpbXBvcnQg
YWN0aW9ucwogZnJvbSAucHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNlUHJvdG9jb2xQYXJ0
CiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXQpAQCAtMTYyLDE0ICsxNjQsMTgg
QEAgY2xhc3MgVGltZWRSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3Vs
dCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgIiVzLnJ1bl9mdW5jIGRpZG4ndCBzZXQgYSBy
ZXN1bHQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMgbWF5IGluZGljYXRlIGEg
aGFuZylcbiIKLSAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBmb3IgdGhlIGN1cnJl
bnQgc3RhY2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtl
eGVjdXRvci5pZGVudF0pKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgi
RVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5wcm90
b2NvbC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkV4ZWN1dG9y
IGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0ZSBhIGhhbmcpXG4iCisgICAg
ICAgICAgICAgICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBv
ZiB0aGUgZXhlY3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiIu
am9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtleGVjdXRv
ci5pZGVudF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVY
VEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRpbmcsIHNl
dHRpbmcgc3RhdHVzIHRvIENSQVNIIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBGYWxzZSwgKCJDUkFTSCIsIE5vbmUpCiAgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRbMV0gaXMg
Tm9uZToKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCBhbnkgZGF0YSBiYWNrIGZyb20gdGhl
IHRlc3QsIHNvIGNoZWNrIGlmIHRoZQogICAgICAgICAgICAgIyBicm93c2VyIGlzIHN0aWxsIHJl
c3BvbnNpdmUKLSAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxpdmU6CisgICAgICAg
ICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIE5vbmUpCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRp
bmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKQEAgLTIxMCw4ICsyMTYsOSBAQCBjbGFzcyBU
ZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBleHRyYV90aW1lb3V0ID0gNSAgIyBzZWNvbmRzCiAK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgZGVi
dWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAg
ICAgICAgIHNlbGYucnVubmVyID0gTm9uZQogICAgICAgICBzZWxmLmJyb3dzZXIgPSBicm93c2Vy
CiAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZyA9IHNlcnZlcl9jb25maWcKQEAgLTIyMSwxMiAr
MjI4LDYgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicHJlZnMiOiB7fX0KICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE5vbmUg
ICMgVGhpcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzCiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbG9nZ2VyKHNlbGYpOgotICAgICAgICAiIiJTdHJ1Y3R1cmVkTG9nZ2VyIGZvciB0aGlzIGV4
ZWN1dG9yIiIiCi0gICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucnVubmVyLmxvZ2dlcgotCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5l
cik6CiAgICAgICAgICIiIlJ1biBzdGVwcyBuZWVkZWQgYmVmb3JlIHRlc3RzIGNhbiBiZSBzdGFy
dGVkIGUuZy4gY29ubmVjdGluZyB0bwogICAgICAgICBicm93c2VyIGluc3RhbmNlCkBAIC0yNTUs
OCArMjU2LDkgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZG9fdGVzdCh0ZXN0KQogICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1bHRfZnJvbV9leGNl
cHRpb24odGVzdCwgZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9zdHJpbmcgPSB0cmFjZWJhY2su
Zm9ybWF0X2V4YygpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKGV4Y2VwdGlvbl9z
dHJpbmcpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9tX2V4Y2VwdGlvbih0
ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKQogCiAgICAgICAgIGlmIHJlc3VsdCBpcyBTdG9wOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjcwLDcgKzI3Miw4IEBAIGNsYXNzIFRlc3RF
eGVjdXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bm5lci5zZW5kX21lc3NhZ2UoInRlc3Rf
ZW5kZWQiLCB0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2VydmVyX3VybChzZWxmLCBwcm90b2Nv
bCk6Ci0gICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAocHJvdG9jb2wsCisgICAgICAgIHNj
aGVtZSA9ICJodHRwcyIgaWYgcHJvdG9jb2wgPT0gImgyIiBlbHNlIHByb3RvY29sCisgICAgICAg
IHJldHVybiAiJXM6Ly8lczolcyIgJSAoc2NoZW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1siYnJvd3Nlcl9ob3N0Il0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJdW3Byb3RvY29sXVsw
XSkKIApAQCAtMjg4LDE1ICsyOTEsMTUgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAg
ICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNlbGYsIHRlc3QsIGUp
OgorICAgIGRlZiByZXN1bHRfZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwgZSwgZXhjZXB0aW9u
X3N0cmluZyk6CiAgICAgICAgIGlmIGhhc2F0dHIoZSwgInN0YXR1cyIpIGFuZCBlLnN0YXR1cyBp
biB0ZXN0LnJlc3VsdF9jbHMuc3RhdHVzZXM6CiAgICAgICAgICAgICBzdGF0dXMgPSBlLnN0YXR1
cwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RhdHVzID0gIklOVEVSTkFMLUVSUk9SIgot
ICAgICAgICBtZXNzYWdlID0gdW5pY29kZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQorICAg
ICAgICBtZXNzYWdlID0gdGV4dF90eXBlKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAg
ICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICBtZXNzYWdlICs9IGV4Y2Vw
dGlvbl9zdHJpbmcKICAgICAgICAgcmV0dXJuIHRlc3QucmVzdWx0X2NscyhzdGF0dXMsIG1lc3Nh
Z2UpLCBbXQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0zMTAsOSArMzEzLDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogY2xhc3MgUmVmVGVzdEV4ZWN1dG9y
KFRlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSByZWZ0ZXN0X3Jlc3VsdF9jb252
ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLCBzY3JlZW5zaG90X2NhY2hlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2lu
Zm89Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwg
YnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAKQEAgLTQ5Niwx
MSArNDk5LDExIEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgY29u
dmVydF9yZXN1bHQgPSBweXRlc3RfcmVzdWx0X2NvbnZlcnRlcgogICAgIHByb3RvY29sX2NscyA9
IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB3
ZWJkcml2ZXJfYmluYXJ5LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAg
ICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmRv
X2RlbGF5ZWRfaW1wb3J0cygpCi0gICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXJfYmluYXJ5ID0gd2ViZHJpdmVyX2JpbmFyeQpAQCAtNTEwLDcgKzUxMyw3IEBA
IGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBzZWxmLnByb3RvY29sX2NscyhzZWxmLCBicm93c2VyKQogCiAgICAgZGVmIGlzX2FsaXZl
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAgICBy
ZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRf
Y2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MKQEAgLTU3Myw3ICs1
NzYsNyBAQCBjbGFzcyBXZHNwZWNSdW4ob2JqZWN0KToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBn
ZXRhdHRyKGUsICJtZXNzYWdlIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBt
ZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5z
ZXQoKQpAQCAtNjM2LDEwICs2MzksOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2Nv
bCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2FsaXZlOgorICAgICAg
ICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToK
ICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCi0gICAgQHByb3BlcnR5CiAgICAgZGVm
IGlzX2FsaXZlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMg
c3RpbGwgYWxpdmUuCiAKQEAgLTY3NSwyMCArNjc3LDcgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAiY29tcGxldGUiOiBzZWxmLnByb2Nlc3NfY29tcGxldGUK
ICAgICAgICAgfQogCi0gICAgICAgIHNlbGYuYWN0aW9ucyA9IHsKLSAgICAgICAgICAgICJjbGlj
ayI6IENsaWNrQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAg
ICJzZW5kX2tleXMiOiBTZW5kS2V5c0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAiYWN0aW9uX3NlcXVlbmNlIjogQWN0aW9uU2VxdWVuY2VBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdlbmVyYXRlX3Rlc3RfcmVw
b3J0IjogR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29s
KSwKLSAgICAgICAgICAgICJzZXRfcGVybWlzc2lvbiI6IFNldFBlcm1pc3Npb25BY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF92aXJ0dWFsX2F1dGhl
bnRpY2F0b3IiOiBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2Vs
Zi5wcm90b2NvbCksCi0gICAgICAgICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6
IFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3Rv
Y29sKSwKLSAgICAgICAgICAgICJhZGRfY3JlZGVudGlhbCI6IEFkZENyZWRlbnRpYWxBY3Rpb24o
c2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdldF9jcmVkZW50aWFs
cyI6IEdldENyZWRlbnRpYWxzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAg
ICAgICAgICAgICJyZW1vdmVfY3JlZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV9hbGxfY3JlZGVu
dGlhbHMiOiBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgICAgICAic2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRVc2VyVmVyaWZpZWRB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICB9CisgICAgICAgIHNl
bGYuYWN0aW9ucyA9IHtjbHMubmFtZTogY2xzKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSBm
b3IgY2xzIGluIGFjdGlvbnN9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0KToKICAg
ICAgICAgdXJsLCBjb21tYW5kLCBwYXlsb2FkID0gcmVzdWx0CkBAIC03MjksMTUwICs3MTgsMyBA
QCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKIAogICAgIGRlZiBfc2VuZF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICBzZWxm
LnByb3RvY29sLnRlc3Rkcml2ZXIuc2VuZF9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBt
ZXNzYWdlPW1lc3NhZ2UpCi0KLQotY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9y
Il0KLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDbGlja2luZyBlbGVt
ZW50OiAlcyIgJSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50
KGVsZW1lbnQpCi0KLQotY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0K
LSAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQotICAgICAgICBlbGVtZW50ID0gc2VsZi5w
cm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikK
LSAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMp
Ci0KLQotY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2Vy
Ci0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYsIHBheWxvYWQpOgotICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVycm9y
IGNoZWNraW5nCi0gICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KLSAgICAgICAg
Zm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBpZiBhY3Rpb25TZXF1
ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKLSAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGlu
IGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rp
b25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAg
aXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdpbiJd
WyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCi0gICAgICAgIHNlbGYucHJv
dG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25zfSkK
LQotICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6Ci0g
ICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9y
KGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQotICAgICAgICByZXR1cm4gZWxlbWVudAotCi1jbGFz
cyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgotICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQot
ICAgICAgICBzZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3Rf
cmVwb3J0KG1lc3NhZ2UpCi0KLWNsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBwZXJtaXNzaW9uX3BhcmFtcyA9IHBh
eWxvYWRbInBlcm1pc3Npb25fcGFyYW1zIl0KLSAgICAgICAgZGVzY3JpcHRvciA9IHBlcm1pc3Np
b25fcGFyYW1zWyJkZXNjcmlwdG9yIl0KLSAgICAgICAgbmFtZSA9IGRlc2NyaXB0b3JbIm5hbWUi
XQotICAgICAgICBzdGF0ZSA9IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJdCi0gICAgICAgIG9u
ZV9yZWFsbSA9IHBlcm1pc3Npb25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0byAlcywgb25lUmVh
bG09JXMiICUgKG5hbWUsIHN0YXRlLCBvbmVfcmVhbG0pKQotICAgICAgICBzZWxmLnByb3RvY29s
LnNldF9wZXJtaXNzaW9uLnNldF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0YXRlLCBvbmVfcmVh
bG0pCi0KLWNsYXNzIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGlu
ZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQotICAgICAgICBjb25maWcgPSBwYXlsb2FkWyJjb25m
aWciXQotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcpCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRo
ZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9pZAotCi1jbGFzcyBS
ZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
LSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50
aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2Vs
Zi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGlj
YXRvcihhdXRoZW50aWNhdG9yX2lkKQotCi0KLWNsYXNzIEFkZENyZWRlbnRpYWxBY3Rpb24ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAg
IHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAot
Ci0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9y
X2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIGNyZWRlbnRpYWwgPSBw
YXlsb2FkWyJjcmVkZW50aWFsIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBj
cmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9p
ZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmFk
ZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCi0KLWNsYXNzIEdldENy
ZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
cHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAg
ICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBmcm9tIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50aWFscyhhdXRoZW50
aWNhdG9yX2lkKQotCi1jbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsi
Y3JlZGVudGlhbF9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVk
ZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVu
dGljYXRvcl9pZCkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVu
dGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lk
KQotCi1jbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJh
dXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGFs
bCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkK
LSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92
ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKLQotY2xhc3MgU2V0VXNlclZlcmlm
aWVkQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAg
YXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICB1
diA9IHBheWxvYWRbInV2Il0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAiU2V0dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIg
JSAoYXV0aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQotICAgICAgICByZXR1
cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQo
YXV0aGVudGljYXRvcl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9ybWFyaW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3Jt
YXJpb25ldHRlLnB5CmluZGV4IDU5ZjdlODY1YTViODcxMWZhNzFjOWM4OTU1ZWNhNzMxZTAwNDhj
M2YuLjJlYWYyNTgwMWRmNTAyNzZmMmIwMjQ0N2Q2OGEzZmM5OGM1YzM3N2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0zLDkgKzMsMTEgQEAg
aW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAogCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0
ZW1zLCBpdGVya2V5cworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
CisKIGVycm9ycyA9IE5vbmUKIG1hcmlvbmV0dGUgPSBOb25lCiBweXRlc3RydW5uZXIgPSBOb25l
CkBAIC0xMTMsOCArMTE1LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFz
ZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU29ja2V0IGNsb3NlZCIpCiAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC0x
MzIsMTcgKzEzNCwxNiBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQo
VGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgICAgICAjIENoZWNrIGlmIHdlIHByZXZpb3Vz
bHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBtYWtlIHN1cmUgaXQncyBj
bG9zZWQKICAgICAgICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi5f
Y2xvc2Vfd2luZG93cygpCi0gICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJl
bnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAgICAgICB1cmwgPSB1
cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwgIi90
ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2Fk
aW5nICVzIiAlIHVybCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kaXNtaXNzX2Fs
ZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmNyaXRpY2FsKAogICAgICAgICAgICAgICAgICJMb2FkaW5nIGluaXRpYWwg
cGFnZSAlcyBmYWlsZWQuIEVuc3VyZSB0aGF0IHRoZSAiCiAgICAgICAgICAgICAgICAgInRoZXJl
IGFyZSBubyBvdGhlciBwcm9ncmFtcyBib3VuZCB0byB0aGlzIHBvcnQgYW5kICIKICAgICAgICAg
ICAgICAgICAidGhhdCB5b3VyIGZpcmV3YWxsIHJ1bGVzIG9yIG5ldHdvcmsgc2V0dXAgZG9lcyBu
b3QgIgotICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIgJSAodXJsLCB0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkpCisgICAgICAgICAgICAgICAgciJwcmV2ZW50IGFjY2Vzcy5c
ZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQogICAgICAgICAgICAgcmFpc2UK
ICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi5tYXJpb25ldHRlLmN1cnJlbnRfd2lu
ZG93X2hhbmRsZQogICAgICAgICBmb3JtYXRfbWFwID0geyJ0aXRsZSI6IHRocmVhZGluZy5jdXJy
ZW50X3RocmVhZCgpLm5hbWUucmVwbGFjZSgiJyIsICciJyl9CkBAIC01OTIsNyArNTkzLDYgQEAg
Y2xhc3MgTWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgIGRlbCBzZWxm
Lm1hcmlvbmV0dGUKICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVByb3RvY29sLCBzZWxmKS50ZWFy
ZG93bigpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50X3dpbmRvd19oYW5kbGUK
QEAgLTYwMiwxNCArNjAyLDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6
CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVudCwg
bmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xkIHByZWZzCi0gICAg
ICAgIGZvciBuYW1lIGluIG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pLml0ZXJrZXlz
KCk6CisgICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9ubWVudC5nZXQoInBy
ZWZzIiwge30pKToKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5leGVjdXRvci5vcmlnaW5hbF9w
cmVmX3ZhbHVlc1tuYW1lXQogICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAg
ICAgICAgICBzZWxmLnByZWZzLmNsZWFyKG5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCi0gICAgICAgIGZvciBuYW1l
LCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVyaXRlbXMoKToK
KyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1lbnQuZ2V0
KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZf
dmFsdWVzW25hbWVdID0gc2VsZi5wcmVmcy5nZXQobmFtZSkKICAgICAgICAgICAgIHNlbGYucHJl
ZnMuc2V0KG5hbWUsIHZhbHVlKQogCkBAIC02NTksNyArNjU5LDcgQEAgY2xhc3MgRXhlY3V0ZUFz
eW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0
YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRy
YWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNl
LCAoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKQEAgLTY2OSwx
MSArNjY5LDExIEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiBj
bGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToK
ICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVs
dGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGRlYnVn
X2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnPUZh
bHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQg
ZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAg
VGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZl
cl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9t
dWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTY5OCw3ICs2OTgsNyBAQCBjbGFzcyBNYXJp
b25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAg
c2VsZi5wcm90b2NvbC50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmxhc3RfZW52aXJvbm1l
bnRbInByb3RvY29sIl0pCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlz
X2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmly
b25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
Zi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC03NjUsMTMgKzc2NSwxNCBA
QCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9y
KToKIAogCiBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNl
cnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3Jl
ZW5zaG90X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAg
ICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAgICAg
ICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9
RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBm
b3IgcmVmdGVzdHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
bnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTc5OCw3ICs3OTksNyBAQCBjbGFzcyBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBz
ZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fQogCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5lcik6Ci0gICAgICAgIHN1cGVyKHNlbGYuX19j
bGFzc19fLCBzZWxmKS5zZXR1cChydW5uZXIpCisgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IsIHNlbGYpLnNldHVwKHJ1bm5lcikKICAgICAgICAgc2VsZi5pbXBsZW1lbnRh
dGlvbi5zZXR1cCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAgICAgZGVmIHRlYXJk
b3duKHNlbGYpOgpAQCAtODA4LDE3ICs4MDksMTcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxm
LnByb3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBo
YW5kbGVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dp
dGNoX3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNz
X18sIHNlbGYpLnRlYXJkb3duKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2VsZikudGVhcmRvd24o
KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3Jz
IGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRXhjZXB0
aW9uIGR1cmluZyByZWZ0ZXN0IHRlYXJkb3duOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKICAgICBkZWYgcmVzZXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKipzZWxmLmltcGxlbWVudGF0
aW9uX2t3YXJncykKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1l
bnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLmxh
c3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTg5Myw4ICs4OTQsOSBAQCBjbGFz
cyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgog
ICAgIGRlZiBzZXR1cChzZWxmLCBzY3JlZW5zaG90PSJ1bmV4cGVjdGVkIik6CiAgICAgICAgIGRh
dGEgPSB7InNjcmVlbnNob3QiOiBzY3JlZW5zaG90fQogICAgICAgICBpZiBzZWxmLmV4ZWN1dG9y
Lmdyb3VwX21ldGFkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsidXJsQ291bnQi
XSA9IHt1cmxwYXJzZS51cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3VybChrZXlbMF0pLCBr
ZXlbMV0pOnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxfY291bnQiLCB7fSku
aXRlcml0ZW1zKCkKKyAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihzZWxm
LmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRh
LmdldCgidXJsX2NvdW50Iiwge30pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB2YWx1ZSA+IDF9CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5z
ZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJP
TUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5fc2VuZF9tZXNz
YWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKQEAgLTkzNCw5ICs5MzYsOSBAQCBjbGFzcyBJbnRl
cm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgogICAgICAg
ICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUud2lu
ZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBoYW5kbGVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyho
YW5kbGVzWzBdKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVyaW5nIHRlYXJkb3du
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4Yygp
KQogCiAKIGNsYXNzIEdlY2tvRHJpdmVyUHJvdG9jb2woV2ViRHJpdmVyUHJvdG9jb2wpOgpAQCAt
OTQ4LDExICs5NTAsMTEgQEAgY2xhc3MgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1dG9yKFdkc3BlY0V4
ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0
RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmln
LCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9RmFsc2UsCiAg
ICAgICAgICAgICAgICAgIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9u
ZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAg
Q3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywK
KyAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTk3Miw3ICs5NzQsNyBAQCBjbGFzcyBN
YXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgogICAgICAgICAg
ICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBu
ZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTk5MSwxNSAr
OTkzLDE2IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVj
dXRvcik6CiAgICAgICAgIGlmIG5vdCBzdWNjZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gZGF0
YVswXQogCisgICAgICAgIGV4dHJhID0gTm9uZQogICAgICAgICBpZiBzZWxmLmRlYnVnIGFuZCAo
c3VjY2VzcyBvciBzdGF0dXMgbm90IGluICgiQ1JBU0giLCAiSU5URVJOQUwtRVJST1IiKSk6CiAg
ICAgICAgICAgICBhc3NlcnRpb25fY291bnQgPSBzZWxmLnByb3RvY29sLmFzc2VydHMuZ2V0KCkK
ICAgICAgICAgICAgIGlmIGFzc2VydGlvbl9jb3VudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBkYXRhWyJleHRyYSJdID0geyJhc3NlcnRpb25fY291bnQiOiBhc3NlcnRpb25fY291bnR9
CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7ImFzc2VydGlvbl9jb3VudCI6IGFzc2VydGlvbl9j
b3VudH0KIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29u
dmVydF9yZXN1bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2Ns
cygqKmRhdGEpLCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoZXh0cmE9ZXh0
cmEsICpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYsIHByb3RvY29sLCB1
cmwsIHRpbWVvdXQpOgogICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVyYWdlLmlzX2VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKaW5kZXggY2Vj
YTgxMjExZTExNDA1NzdjYzNhNWYxNjNmZmUxN2M3M2RkNTZhMy4uOTYzMTJmM2Y5Zjk1NDJmZWRl
NjA5ZTZmOTllZjkzMTI3ZjEyMmQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcnNlbGVuaXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3JzZWxlbml1bS5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJs
cGFyc2UKIGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVy
bGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwKICAgICAgICAgICAg
ICAgICAgICBSZWZUZXN0RXhlY3V0b3IsCkBAIC03Miw4ICs3Myw4IEBAIGNsYXNzIFNlbGVuaXVt
QmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgICAgIGV4Y2VwdCAo
c29ja2V0LnRpbWVvdXQsIGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLkVycm9ySW5SZXNwb25zZUV4Y2VwdGlvbiwgSU9FcnJv
cik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0
X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgICAg
ICBicmVhawogCiAKQEAgLTg3LDggKzg4LDggQEAgY2xhc3MgU2VsZW5pdW1UZXN0aGFybmVzc1By
b3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVy
KHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAg
ICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3aXRjaF90b193aW5kb3coc2VsZi5ydW5uZXJfaGFu
ZGxlKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9y
LnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJsID0gdXJsam9pbihzZWxm
LnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCisgICAgICAgICAgICAg
ICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZ2V0KHVy
bCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi53ZWJkcml2ZXIuY3VycmVudF93
aW5kb3dfaGFuZGxlCkBAIC0yNjEsNyArMjYyLDcgQEAgY2xhc3MgU2VsZW5pdW1SdW4oVGltZWRS
dW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAg
c2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBAIC0yNzAsMTEg
KzI3MSwxMSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiBjbGFzcyBTZWxlbml1
bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNf
dGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAg
ICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19lYWdlcl9wYWdlbG9h
ZD1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlNlbGVuaXVtLWJhc2VkIGV4ZWN1dG9yIGZv
ciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10
aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3RvY29sID0gU2VsZW5pdW1Q
cm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMpCkBAIC0zNTUsMTEgKzM1NiwxMiBA
QCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikgewogCiAKIGNsYXNzIFNlbGVu
aXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNs
b3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBj
YXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxlbml1bSBXZWJEcml2
ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC0zNzEs
OCArMzczLDggQEAgY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKICAgICAgICAgc2VsZi5jbG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0ZXJfZG9uZQogICAg
ICAgICBzZWxmLmhhc193aW5kb3cgPSBGYWxzZQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fSkpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKKyAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIikpIGFzIGY6Cisg
ICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxl
bWVudGF0aW9uLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JzZXJ2by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weQpp
bmRleCA5Y2VmMWZiMmQ3Zjc4ZTg3MjllNTFmZjQwMGIzZGYyNDAyYTJlOTRlLi5mODNmMDExNWUw
MDY4MTE0YmI2MmE4MDRiMzA1NWNiNTEwODE0YjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9l
eGVjdXRvcnNlcnZvLnB5CkBAIC03LDYgKzcsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCitmcm9tIHNpeCBpbXBvcnQg
ZW5zdXJlX3N0ciwgaXRlcml0ZW1zCiAKIGZyb20gbW96cHJvY2VzcyBpbXBvcnQgUHJvY2Vzc0hh
bmRsZXIKIApAQCAtMjIsOCArMjMsMTAgQEAgZnJvbSAuYmFzZSBpbXBvcnQgKENvbm5lY3Rpb25s
ZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUHJvdG9jb2wpCiBmcm9t
IC5wcm9jZXNzIGltcG9ydCBQcm9jZXNzVGVzdEV4ZWN1dG9yCiBmcm9tIC4uYnJvd3NlcnMuYmFz
ZSBpbXBvcnQgYnJvd3Nlcl9jb21tYW5kCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYK
IGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBTZXJ2b0RyaXZlclNlcnZlcgogCisKIHB5
dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZlciA9IE5vbmUKIApAQCAtNDUsNyArNDgsNyBAQCBk
ZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3VybF9mdW5jLCBicm93c2VyLCBiaW5h
cnksIHBhdXNlX2FmdGVyX3Rlc3QsCiAgICAgICAgIGFyZ3MgKz0gWyItWiIsIGRlYnVnX29wdHNd
CiAgICAgZm9yIHN0eWxlc2hlZXQgaW4gYnJvd3Nlci51c2VyX3N0eWxlc2hlZXRzOgogICAgICAg
ICBhcmdzICs9IFsiLS11c2VyLXN0eWxlc2hlZXQiLCBzdHlsZXNoZWV0XQotICAgIGZvciBwcmVm
LCB2YWx1ZSBpbiB0ZXN0LmVudmlyb25tZW50LmdldCgncHJlZnMnLCB7fSkuaXRlcml0ZW1zKCk6
CisgICAgZm9yIHByZWYsIHZhbHVlIGluIGl0ZXJpdGVtcyh0ZXN0LmVudmlyb25tZW50LmdldCgn
cHJlZnMnLCB7fSkpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVzPSVzIiAlIChwcmVm
LCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoOgogICAgICAgICBh
cmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRo
XQpAQCAtNjIsOSArNjUsOSBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3Vy
bF9mdW5jLCBicm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiBjbGFzcyBTZXJ2b1Rl
c3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1
bHQgPSB0ZXN0aGFybmVzc19yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAg
ICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIFByb2Nl
c3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAg
ICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucGF1
c2VfYWZ0ZXJfdGVzdCA9IHBhdXNlX2FmdGVyX3Rlc3QKQEAgLTEwMCwxMSArMTAzLDExIEBAIGNs
YXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9u
X291dHB1dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlz
aD1zZWxmLm9uX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2Fz
dF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
T3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwg
ZW52PWVudikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5j
b21tYW5kLCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0
aW1lb3V0ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIKQEAgLTE3OSwx
MCArMTgyLDExIEBAIGNsYXNzIFRlbXBGaWxlbmFtZShvYmplY3QpOgogY2xhc3MgU2Vydm9SZWZU
ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBy
ZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5
PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90
X2NhY2hlPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0
aXBsaWVyLApAQCAtMjMxLDcgKzIzNSw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFBy
b2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6
CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoc2VsZi5jb21tYW5k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRw
dXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSkKIAogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAt
MjQzLDcgKzI0Nyw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhl
Y3V0b3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYo
ZW52KSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2ID0gc2Vs
Zi5wcm9jLndhaXQoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
QEAgLTI1NywxMCArMjYxLDEwIEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NU
ZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgcnYgIT0gMCBvciBub3Qgb3MucGF0aC5leGlz
dHMob3V0cHV0X3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgKCJDUkFTSCIs
IE5vbmUpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCkgYXMgZjoKKyAgICAg
ICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAg
ICAjIE1pZ2h0IG5lZWQgdG8gc3RyaXAgdmFyaWFibGUgaGVhZGVycyBvciBzb21ldGhpbmcgaGVy
ZQogICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlLCBiYXNlNjQuYjY0ZW5jb2RlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUsIGVuc3VyZV9zdHIoYmFzZTY0LmI2NGVuY29kZShkYXRhKSkKIAogICAgIGRlZiBkb190ZXN0
KHNlbGYsIHRlc3QpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmltcGxlbWVudGF0aW9uLnJ1bl90
ZXN0KHRlc3QpCkBAIC0zMDUsMTAgKzMwOSwxMSBAQCBjbGFzcyBTZXJ2b1RpbWVkUnVubmVyKFRp
bWVkUnVubmVyKToKIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVj
dXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBjcmFzaHRlc3RfcmVzdWx0X2NvbnZlcnRlcgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJpbmFyeT1O
b25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVy
PTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgZGVidWdfaW5mbz1O
b25lLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
CiAgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0zMjksNiArMzM0LDgg
QEAgY2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAg
ICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2Vydm9UaW1l
ZFJ1bm5lcihzZWxmLmxvZ2dlciwgc2VsZi5kb19jcmFzaHRlc3QsIHNlbGYucHJvdG9jb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsLCB0aW1lb3V0
LCBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCisgICAgICAgICMgRW5zdXJlIHRoYXQgbm8gcHJv
Y2Vzc2VzIGhhbmcgYXJvdW5kIGlmIHRoZXkgdGltZW91dC4KKyAgICAgICAgc2VsZi5wcm9jLmtp
bGwoKQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252
ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQpAQCAtMzUwLDExICszNTcsMTEgQEAgY2xhc3MgU2Vydm9D
cmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKIAogICAgICAgICBpZiBub3Qg
c2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVy
KGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVu
diksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1G
YWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9ZW52KQorICAg
ICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9Y2FzdF9l
bnYoZW52KSkKIAogICAgICAgICBzZWxmLnByb2Mud2FpdCgpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQppbmRleCAwMmVjYzc1NjY0NzY1NmU2YjIw
ZTA2MzcxZDI4NzY3ZmEwZWIwMGYxLi4wNjgwYzRlZDIyOTkwMzUxNDZjMmIxZTQ3OGY0YjNmYTFj
MzAxMTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9k
cml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVy
LnB5CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJQcm90b2NvbChQcm90
b2NvbCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQu
dGltZW91dCwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0
cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg
ICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
ICAgICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBTZXJ2
b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0
cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZv
cm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMo
KQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIGUp
CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBA
IC0xNTUsMTAgKzE1NSwxMCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6
CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVl
LCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAq
Kmt3YXJncyk6Ci0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgICAgIFRlc3Ro
YXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z19pbmZvPU5vbmUpCiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBTZXJ2b1dl
YkRyaXZlclByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1jYXBhYmlsaXRpZXMp
CiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3NlcnZv
ZHJpdmVyLmpzIikpIGFzIGY6CkBAIC0yMjEsMTEgKzIyMSwxMiBAQCBjbGFzcyBUaW1lb3V0RXJy
b3IoRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihS
ZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAg
ICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgICIiIlNl
bGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAgICAgICAg
UmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9j
YWNoZSwKQEAgLTIzNSw4ICsyMzYsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVj
dXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKQogICAgICAgICBzZWxmLmlt
cGxlbWVudGF0aW9uID0gUmVmVGVzdEltcGxlbWVudGF0aW9uKHNlbGYpCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IE5vbmUKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVm
dGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgotICAgICAgICAgICAgc2VsZi53YWl0X3Nj
cmlwdCA9IGYucmVhZCgpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Qtd2FpdC5qcyIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVh
ZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13YWl0In0KIAogICAgIGRlZiByZXNldChzZWxm
KToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICByZXR1cm4gdGVzdC5y
ZXN1bHRfY2xzKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpLCBbXQogCiAgICAgZGVmIHNjcmVl
bnNob3Qoc2VsZiwgdGVzdCwgdmlld3BvcnRfc2l6ZSwgZHBpKToKQEAgLTI3Nyw3ICsyNzgsNyBA
QCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
CiAgICAgICAgIHJldHVybiBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi50ZXN0X3VybCh0ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmV4dHJhX3RpbWVvdXQpLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yd2ViZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndl
YmRyaXZlci5weQppbmRleCA5YjVmMzk3NjQwMjVlYmQ5MTJmOWZkMDgwYWQwNWRkMGRlZWE4Mjdj
Li5jNWYyOTY1ZWMxODU4NjEzMWJjMjBkMzk0ZjU2Yjc4ODI3YzEwMmVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFj
a0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IsCkBAIC02Niwx
MyArNjcsMjAgQEAgY2xhc3MgV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQ
YXJ0KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCgiIikKLSAgICAgICAgICAg
IGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhj
ZXB0aW9uKToKKyAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICBjbGllbnQuSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uKToKKyAgICAgICAg
ICAgICAgICAjIEEgSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uIHdpbGwgaGFwcGVuIHdoZW4gd2Ug
bmF2aWdhdGU7CisgICAgICAgICAgICAgICAgIyBieSBpZ25vcmluZyBpdCBpdCdzIHBvc3NpYmxl
IHRvIHJlbG9hZCB0aGUgdGVzdCB3aGlsc3QgdGhlCisgICAgICAgICAgICAgICAgIyBoYXJuZXNz
IHJlbWFpbnMgcGF1c2VkCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZXhjZXB0
IChzb2NrZXQudGltZW91dCwgY2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgSU9FcnJvcik6CisgICAg
ICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBjbGll
bnQuTm9TdWNoV2luZG93RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKToKICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQor
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAK
IApAQCAtODYsOCArOTQsOCBAQCBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc1Byb3RvY29sUGFy
dChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVyKHNlbGYsIHVy
bF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAgICAgICAgICAg
IHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGUgPSBzZWxmLnJ1bm5lcl9oYW5kbGUKLSAgICAg
ICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJs
KHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFy
bmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2VsZi5wYXJlbnQuZXhl
Y3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAgICAgICAgICAgICAgICIv
dGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9h
ZGluZyAlcyIgJSB1cmwpCiAKICAgICAgICAgc2VsZi53ZWJkcml2ZXIudXJsID0gdXJsCkBAIC0y
ODgsMTUgKzI5NiwxOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2NvbCk6CiAgICAg
ICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZyhtZXNzYWdlKQogICAgICAgICBzZWxmLndlYmRyaXZlciA9IE5vbmUKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgYSBzaW1wbGUg
cHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIu
d2luZG93X2hhbmRsZQotICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgR2V0IGEgc2ltcGxlIHByb3BlcnR5
IG92ZXIgdGhlIGNvbm5lY3Rpb24sIHdpdGggMiBzZWNvbmRzIG9mIHRpbWVvdXQKKyAgICAgICAg
ICAgICMgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBjaGVjayBpZiB0aGUgV2Vi
RHJpdmVyIGl0cworICAgICAgICAgICAgIyBzdGlsbCBhbGl2ZSwgYW5kIGFsbG93cyB0byBjb21w
bGV0ZSB0aGUgY2hlY2sgd2l0aGluIHRoZSB0ZXN0cnVubmVyCisgICAgICAgICAgICAjIDUgc2Vj
b25kcyBvZiBleHRyYV90aW1lb3V0IHdlIGhhdmUgYXMgbWF4aW11bSB0byBlbmQgdGhlIHRlc3Qg
YmVmb3JlCisgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCB0aW1lb3V0IGZyb20gdGVzdHJ1bm5l
ciB0cmlnZ2Vycy4KKyAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnNlbmRfc2Vzc2lvbl9jb21t
YW5kKCJHRVQiLCAid2luZG93IiwgdGltZW91dD0yKQorICAgICAgICBleGNlcHQgKHNvY2tldC50
aW1lb3V0LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLCBjbGllbnQuSW52YWxpZFNlc3Np
b25JZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJu
IFRydWUKIApAQCAtMzI5LDcgKzM0MSw3IEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1bm5l
cik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1h
dF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9S
IiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcuc2V0KCkKQEAgLTMzOCwxMSArMzUwLDExIEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1
bm5lcik6CiBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhl
Y3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9VHJ1
ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAg
c3VwcG9ydHNfZWFnZXJfcGFnZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJXZWJE
cml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBXZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRp
ZXMpCkBAIC00MzcsMTEgKzQ0OSwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJs
YW5rIikgewogCiAKIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAg
ICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAg
ICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90
X2NhY2hlLApAQCAtNTA1LDExICs1MTgsMTIgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1
dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKIAogY2xhc3MgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0
b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwK
ICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25l
PVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5v
bmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciBy
ZWZ0ZXN0cyIiIgogICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTUzNSw3ICs1NDksNyBAQCBj
bGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6CiAgICAg
ICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0
ZXN0LCBkYXRhKQogCi0gICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKCoqZGF0YSksIFtd
KQorICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqZGF0YSksIFtdKQogCiAgICAgZGVm
IGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgcHJv
dG9jb2wuYmFzZS5sb2FkKHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
cHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CmluZGV4IDk1
ZmRlYzdjOTgxNjg4YWE5OWNhMTNlZWFmNGM3YjZjNDA1MmM5MTcuLjRlY2RkNTFhMGVmNWVjYTgx
NTNmZmI4NDhmMDI1M2VlYjZkN2Y3MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQpA
QCAtMzIsNyArMzIsNiBAQCBjbGFzcyBQcm90b2NvbChvYmplY3QpOgogICAgICAgICAiIiI6cmV0
dXJuczogQ3VycmVudCBsb2dnZXIiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IubG9n
Z2VyCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgICIi
IklzIHRoZSBicm93c2VyIGNvbm5lY3Rpb24gc3RpbGwgYWN0aXZlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQppbmRleCBjMTkzNmViOTY2Zjc4ODM0
ZDgzOWM3OTQwOTMyMmIwYTk2YWYxMjg0Li4zZDMyOTE3NjU5YjM5MDBmOWU0NjQ2NzBkMmNkYzM5
YjhmZjE4MGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5l
ci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBydW4ocGF0aCwgc2VydmVyX2NvbmZpZywgc2Vz
c2lvbl9jb25maWcsIHRpbWVvdXQ9MCk6CiAgICAgb3MuZW52aXJvblsiV0RfSE9TVCJdID0gc2Vz
c2lvbl9jb25maWdbImhvc3QiXQogICAgIG9zLmVudmlyb25bIldEX1BPUlQiXSA9IHN0cihzZXNz
aW9uX2NvbmZpZ1sicG9ydCJdKQogICAgIG9zLmVudmlyb25bIldEX0NBUEFCSUxJVElFUyJdID0g
anNvbi5kdW1wcyhzZXNzaW9uX2NvbmZpZ1siY2FwYWJpbGl0aWVzIl0pCi0gICAgb3MuZW52aXJv
blsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3Qo
KSkKKyAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29uLmR1bXBzKHNlcnZl
cl9jb25maWcuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAKICAgICBoYXJuZXNzID0g
SGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKICAgICBzdWJ0ZXN0cyA9IFN1YnRlc3RSZXN1bHRSZWNv
cmRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCmluZGV4IDhhN2VkYjc5ZDYyMjU2
ZWVmNjNjNzFlYWJkNDUwZDQyYmNlN2M0ZDIuLmFkMDhhZDdkNzZmYjAyOTlhYWRlZGI1NzIxOTNj
MzhjNTA1NWU2NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0
LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCkBAIC0zMiw3ICsz
Miw4IEBAIGZ1bmN0aW9uIHdhaXRfcGFpbnRzKCkgewogfQogCiBmdW5jdGlvbiBzY3JlZW5zaG90
X2lmX3JlYWR5KCkgewotICBpZiAocm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUoY2xhc3NuYW1l
KXMiKSAmJgorICBpZiAocm9vdCAmJgorICAgICAgcm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUo
Y2xhc3NuYW1lKXMiKSAmJgogICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsKICAgICBvYnNlcnZl
ciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKICAgICBvYnNlcnZlci5vYnNl
cnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1w
b3J0LmxvZwppbmRleCA1ZDliNjk4ZjNjYTM1YWJhN2ZkZTAyNTI1Yjg1ODU5OTU4ZDIzOGFhLi42
MTE2OGEyMDdiZmI0MDc2MzY4ZDZkNGQxOTE5MWJiZGNkNTZmNzczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvdzNjLWltcG9ydC5sb2cKQEAgLTE1LDYgKzE1LDcgQEAgTm9uZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvX19pbml0X18ucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2Jhc2UucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5CiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2UucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5Cmlu
ZGV4IDRkNTA1MDg2YmQ4ZDk5MWM5NTNjMzRkMzhkOGUxZmEwY2I5MjBmOTkuLjc1MjFmMjViMTM0
NGY1YzUwYjgxODJhMmI3YTY4Mjc4ODU4ZjliNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQpAQCAtMSw1
ICsxLDYgQEAKIGZyb20gbWF0aCBpbXBvcnQgbG9nCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcwogCiBjbGFz
cyBOb2RlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3AsIHZhbHVlKToKQEAg
LTMzLDcgKzM0LDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICByZXN1bHRfY291bnRz
ID0gZGVmYXVsdGRpY3QoaW50KQogICAgIHRvdGFsID0gZmxvYXQobGVuKHJlc3VsdHMpKQotICAg
IGZvciB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6CisgICAgZm9yIHZhbHVlcyBpbiBp
dGVydmFsdWVzKHJlc3VsdHMpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBv
c3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAgICAgICMgZGlzdGlu
Y3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKQEAgLTQxLDcgKzQyLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBl
bnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291bnRzLml0ZXJ2YWx1
ZXMoKToKKyAgICBmb3IgY291bnQgaW4gaXRlcnZhbHVlcyhyZXN1bHRfY291bnRzKToKICAgICAg
ICAgcHJvcCA9IGZsb2F0KGNvdW50KSAvIHRvdGFsCiAgICAgICAgIGVudHJvcHlfc3VtIC09IHBy
b3AgKiBsb2cocHJvcCwgMikKIApAQCAtNTIsNyArNTMsNyBAQCBkZWYgc3BsaXRfcmVzdWx0cyhw
cm9wLCByZXN1bHRzKToKICAgICAiIiJTcGxpdCBhIGRpY3Rpb25hcnkgb2YgcmVzdWx0cyBpbnRv
IGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMgd2hlcmUKICAgICBlYWNoIHN1Yi1kaWN0aW9u
YXJ5IGhhcyBhIHNwZWNpZmljIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSIiIgogICAgIGJ5
X3Byb3AgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgIGZvciBydW5faW5mbywgdmFsdWUgaW4gcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGluIGl0ZXJpdGVtcyhy
ZXN1bHRzKToKICAgICAgICAgYnlfcHJvcFtydW5faW5mb1twcm9wXV1bcnVuX2luZm9dID0gdmFs
dWUKIAogICAgIHJldHVybiBieV9wcm9wCkBAIC03NywxMyArNzgsMTMgQEAgZGVmIGJ1aWxkX3Ry
ZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUpOgogICAg
IHByb3BfaW5kZXggPSB7cHJvcDogaSBmb3IgaSwgcHJvcCBpbiBlbnVtZXJhdGUocHJvcGVydGll
cyl9CiAKICAgICBhbGxfcmVzdWx0cyA9IGRlZmF1bHRkaWN0KGludCkKLSAgICBmb3IgcmVzdWx0
X3ZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgZm9yIHJlc3VsdF92YWx1
ZSwgY291bnQgaW4gcmVzdWx0X3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcmVzdWx0X3Zh
bHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgorICAgICAgICBmb3IgcmVzdWx0X3ZhbHVlLCBj
b3VudCBpbiBpdGVyaXRlbXMocmVzdWx0X3ZhbHVlcyk6CiAgICAgICAgICAgICBhbGxfcmVzdWx0
c1tyZXN1bHRfdmFsdWVdICs9IGNvdW50CiAKICAgICAjIElmIHRoZXJlIGlzIG9ubHkgb25lIHJl
c3VsdCB3ZSBhcmUgZG9uZQogICAgIGlmIG5vdCBwcm9wZXJ0aWVzIG9yIGxlbihhbGxfcmVzdWx0
cykgPT0gMToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBhbGxfcmVzdWx0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMoYWxsX3Jlc3VsdHMp
OgogICAgICAgICAgICAgdHJlZS5yZXN1bHRfdmFsdWVzW3ZhbHVlXSArPSBjb3VudAogICAgICAg
ICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1bHRzLmtleXMoKSkKICAgICAgICAgcmV0dXJuIHRy
ZWUKQEAgLTk5LDcgKzEwMCw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVu
dF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgIG5ld19lbnRyb3B5ID0gMC4KICAgICAgICAgcmVzdWx0c19zZXRzX2VudHJvcHkgPSBbXQot
ICAgICAgICBmb3IgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCBpbiByZXN1bHRfc2V0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJl
c3VsdF9zZXRzKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50
cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBu
ZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiBy
ZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTA5LDcgKzExMCw3IEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
IAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3Bh
Y2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdmFsdWUsIGNvdW50
IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVlLnJlc3VsdF92YWx1
ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0gc2V0KHJlc3VsdHMu
a2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQppbmRleCA2NjQ3YTg1ODBiZTdhYjQwNTBiYmQz
NzU5M2IyZTY1OTViYzNhYzcyLi42MjI2ZmM2NmZlZGYyYWZjOTZiNTExMGYzNTI0YjAwZDE4NWNj
NTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9udC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBjdHlwZXMKLWltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHBsaXN0bGliCkBAIC0xMiw3ICsxMSw4
IEBAIFNZU1RFTSA9IHBsYXRmb3JtLnN5c3RlbSgpLmxvd2VyKCkKIAogCiBjbGFzcyBGb250SW5z
dGFsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAgICBzZWxmLmZvbnRf
ZGlyID0gZm9udF9kaXIKICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBGYWxzZQogICAg
ICAgICBzZWxmLmNyZWF0ZWRfZGlyID0gRmFsc2UKQEAgLTI2LDE0ICsyNiwxMyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250X3BhdGgu
c3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIGluc3RhbGwgPSBnZXRhdHRyKHNlbGYsICdpbnN0
YWxsXyVzX2ZvbnQnICUgU1lTVEVNLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IGluc3RhbGw6
Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IGluc3RhbGxhdGlvbiBub3Qg
c3VwcG9ydGVkIG9uICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTVEVN
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQgaW5zdGFsbGF0aW9u
IG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICAgICAgaWYgaW5zdGFsbChmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBUcnVlCi0gICAgICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCdJbnN0YWxsZWQgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdVbmFi
bGUgdG8gaW5zdGFsbCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycgJSBmb250X25hbWUp
CiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLmluc3RhbGxlZF9mb250czoKQEAgLTQzLDEyICs0MiwxMiBAQCBj
bGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250
X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIHJlbW92ZSA9IGdldGF0dHIoc2VsZiwg
J3JlbW92ZV8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCByZW1v
dmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IHJlbW92YWwgbm90IHN1
cHBvcnRlZCBvbiAlcycsIFNZU1RFTSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCdGb250IHJlbW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNURU0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiByZW1vdmUoZm9udF9uYW1lLCBm
b250X3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnUmVtb3ZlZCBmb250OiAl
cycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSZW1vdmVk
IGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCdVbmFibGUgdG8gcmVtb3ZlIGZvbnQ6ICVzJywgZm9udF9uYW1l
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byByZW1vdmUg
Zm9udDogJXMnICUgZm9udF9uYW1lKQogCiAgICAgZGVmIGluc3RhbGxfbGludXhfZm9udChzZWxm
LCBmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZvbnRfZGlyOgpA
QCAtNjIsNyArNjEsNyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICBmY19jYWNoZV9yZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0
dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJ
ZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxh
YmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAog
ICAgIGRlZiBpbnN0YWxsX2Rhcndpbl9mb250KHNlbGYsIGZvbnRfbmFtZSwgZm9udF9wYXRoKToK
QEAgLTc5LDcgKzc4LDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAgICAg
IyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXN1bHRzLWNvbGxl
Y3Rpb24vaXNzdWVzLzIxOAogICAgICAgICAjIGluc3RhbGxpbmcgQWhlbSBvbiBtYWNPUyBpcyBm
bGFreSwgc28gY2hlY2sgaWYgaXQgYWN0dWFsbHkgaW5zdGFsbGVkCiAgICAgICAgIGZvbnRzID0g
Y2hlY2tfb3V0cHV0KFsnL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlcicsICcteG1sJywgJ1NQRm9u
dHNEYXRhVHlwZSddKQotICAgICAgICBmb250cyA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJp
bmcoZm9udHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgcHkzCisgICAgICAgICAg
ICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tQnl0ZXMKKyAgICAg
ICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmVhZFBsaXN0RnJvbUJ5dGVz
ID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZworICAgICAgICBmb250cyA9IHJlYWRQbGlz
dEZyb21CeXRlcyhmb250cykKICAgICAgICAgYXNzZXJ0IGxlbihmb250cykgPT0gMQogICAgICAg
ICBmb3IgZm9udCBpbiBmb250c1swXVsnX2l0ZW1zJ106CiAgICAgICAgICAgICBpZiBmb250Wydw
YXRoJ10gPT0gaW5zdGFsbGVkX2ZvbnRfcGF0aDoKQEAgLTExMCw3ICsxMTQsNyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmY19jYWNoZV9yZXR1cm5jb2RlID0g
Y2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5j
b2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhp
c3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignZm9udGNvbmZpZyBu
b3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiByZW1vdmVfZGFyd2luX2Zv
bnQoc2VsZiwgZm9udF9uYW1lLCBfKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0
ZXJzL2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKaW5k
ZXggNTY0MzVlYWJmNGJiZWFkYmVlN2FmYTI5NGUzZTBiYjFlNzY4NWI5OS4uMDg2NTYwYjZhODcz
Y2RjOWZlZmQzYjhiOGI3YTUzYjAxNzNiMzg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
cm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21p
dW0ucHkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKICAgICAgICAgOnBhcmFtIHN0ciB0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgdGVz
dAogICAgICAgICA6cGFyYW0gc3RyIHN1YnRlc3Q6IHRoZSBuYW1lIG9mIHRoZSBzdWJ0ZXN0IHdp
dGggdGhlIG1lc3NhZ2UKICAgICAgICAgOnBhcmFtIHN0ciBzdGF0dXM6IHRoZSBzdWJ0ZXN0IHN0
YXR1cwotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiB0aGUgZXhwZWN0ZWQgc3VidGVzdCBz
dGF0dXMKKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVjdGVkIHN1YnRlc3Qg
c3RhdHVzZXMKICAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB0aGUgc3RyaW5nIHRvIGFwcGVu
ZCB0byB0aGUgbWVzc2FnZSBmb3IgdGhpcyB0ZXN0CiAKICAgICAgICAgSGVyZSdzIGFuIGV4YW1w
bGUgb2YgYSBtZXNzYWdlOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRl
cihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMgQWRk
IHRoZSBwcmVmaXgsIHdpdGggdGhlIHRlc3Qgc3RhdHVzIGFuZCBzdWJ0ZXN0IG5hbWUgKGlmIGF2
YWlsYWJsZSkKICAgICAgICAgcHJlZml4ID0gIlslcyIgJSBzdGF0dXMKLSAgICAgICAgaWYgZXhw
ZWN0ZWQgYW5kIGV4cGVjdGVkICE9IHN0YXR1czoKKyAgICAgICAgaWYgZXhwZWN0ZWQgYW5kIHN0
YXR1cyBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiBleHBlY3RlZCAl
c10gIiAlIGV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggKz0gIl0g
IgpAQCAtNTUsMTMgKzU1LDI4IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZv
cm1hdHRlcik6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiVzOiAiICUgc3VidGVzdAogICAgICAg
ICBzZWxmLm1lc3NhZ2VzW3Rlc3RdICs9IHByZWZpeCArIG1lc3NhZ2UgKyAiXG4iCiAKLSAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOgorICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRpZmFjdF9u
YW1lLCBhcnRpZmFjdF92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBBcHBlbmRzIGFydGlm
YWN0cyB0byB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkuCisgICAgICAgIDpwYXJhbSBkaWN0IGN1
cl9kaWN0OiB0aGUgdGVzdCBsZWFmIGRpY3Rpb25hcnkgdG8gYXBwZW5kIHRvCisgICAgICAgIDpw
YXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CisgICAgICAg
IDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmICJhcnRpZmFjdHMiIG5vdCBpbiBjdXJfZGljdC5rZXlzKCk6
CisgICAgICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7fQorICAgICAgICAjIEFydGlm
YWN0cyBhcmUgYWxsIGV4cGVjdGVkIHRvIGJlIGxpc3RzLCBzbyBldmVuIHRob3VnaCB3ZSBvbmx5
IGhhdmUgYQorICAgICAgICAjIHNpbmdsZSB8YXJ0aWZhY3RfdmFsdWV8IHdlIHN0aWxsIHB1dCBp
dCBpbiBhIGxpc3QuCisgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVthcnRpZmFjdF9uYW1l
XSA9IFthcnRpZmFjdF92YWx1ZV0KKworICAgIGRlZiBfc3RvcmVfdGVzdF9yZXN1bHQoc2VsZiwg
bmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgd3B0X2FjdHVhbCwgc3VidGVzdF9mYWls
dXJlKToKICAgICAgICAgIiIiCiAgICAgICAgIFN0b3JlcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xl
IHRlc3QgaW4gfHNlbGYudGVzdHN8CiAgICAgICAgIDpwYXJhbSBzdHIgbmFtZTogbmFtZSBvZiB0
aGUgdGVzdC4KICAgICAgICAgOnBhcmFtIHN0ciBhY3R1YWw6IGFjdHVhbCBzdGF0dXMgb2YgdGhl
IHRlc3QuCi0gICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVkIHN0YXR1cyBvZiB0
aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogZXhwZWN0ZWQgc3RhdHVzZXMg
b2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGVzdCBvdXRwdXQsIHN1
Y2ggYXMgc3RhdHVzLCBzdWJ0ZXN0LCBlcnJvcnMgZXRjLgorICAgICAgICA6cGFyYW0gc3RyIHdw
dF9hY3R1YWw6IGFjdHVhbCBzdGF0dXMgcmVwb3J0ZWQgYnkgd3B0LCBtYXkgZGlmZmVyIGZyb20g
fGFjdHVhbHwuCisgICAgICAgIDpwYXJhbSBib29sIHN1YnRlc3RfZmFpbHVyZTogd2hldGhlciB0
aGlzIHRlc3QgZmFpbGVkIGJlY2F1c2Ugb2Ygc3VidGVzdHMKICAgICAgICAgIiIiCiAgICAgICAg
ICMgVGhlIHRlc3QgbmFtZSBjYW4gY29udGFpbiBhIGxlYWRpbmcgLyB3aGljaCB3aWxsIHByb2R1
Y2UgYW4gZW1wdHkKICAgICAgICAgIyBzdHJpbmcgaW4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRo
ZSBsaXN0IHJldHVybmVkIGJ5IHNwbGl0LiBXZSB1c2UKQEAgLTcyLDEzICs4NywxNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgY3Vy
X2RpY3QgPSBjdXJfZGljdC5zZXRkZWZhdWx0KG5hbWVfcGFydCwge30pCiAgICAgICAgIGN1cl9k
aWN0WyJhY3R1YWwiXSA9IGFjdHVhbAogICAgICAgICBjdXJfZGljdFsiZXhwZWN0ZWQiXSA9IGV4
cGVjdGVkCisgICAgICAgIGlmIHN1YnRlc3RfZmFpbHVyZToKKyAgICAgICAgICAgIHNlbGYuX2Fw
cGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiLCAidHJ1ZSIpCisg
ICAgICAgIGlmIHdwdF9hY3R1YWwgIT0gYWN0dWFsOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9zdGF0dXMiLCB3cHRfYWN0dWFsKQogICAg
ICAgICBpZiBtZXNzYWdlICE9ICIiOgotICAgICAgICAgICAgY3VyX2RpY3RbImFydGlmYWN0cyJd
ID0geyJsb2ciOiBtZXNzYWdlfQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1
cl9kaWN0LCAibG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIEZpZ3VyZSBvdXQgaWYgdGhlcmUg
d2FzIGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIHN0YXR1cy4gVGhpcyBvbmx5CiAgICAgICAg
ICMgaGFwcGVucyBmb3IgdGVzdHMgdGhhdCB3ZXJlIHJ1bgogICAgICAgICBpZiBhY3R1YWwgIT0g
IlNLSVAiOgotICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAg
aWYgYWN0dWFsIG5vdCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgICAgICBjdXJfZGljdFsiaXNf
dW5leHBlY3RlZCJdID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGFjdHVhbCAhPSAiUEFTUyI6
CiAgICAgICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc19yZWdyZXNzaW9uIl0gPSBUcnVlCkBA
IC0xMDMsNyArMTIyLDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0
dGVyKToKICAgICAgICAgICAgIHJldHVybiAiU0tJUCIKICAgICAgICAgaWYgc3RhdHVzID09ICJF
WFRFUk5BTC1USU1FT1VUIjoKICAgICAgICAgICAgIHJldHVybiAiVElNRU9VVCIKLSAgICAgICAg
aWYgc3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giKToKKyAgICAgICAgaWYgc3RhdHVzIGluICgi
RVJST1IiLCAiQ1JBU0giLCAiUFJFQ09ORElUSU9OX0ZBSUxFRCIpOgogICAgICAgICAgICAgIyBD
UkFTSCBpbiBXUFQgbWVhbnMgYSBicm93c2VyIGNyYXNoLCB3aGljaCBDaHJvbWl1bSB0cmVhdHMg
YXMgYQogICAgICAgICAgICAgIyB0ZXN0IGZhaWx1cmUuCiAgICAgICAgICAgICByZXR1cm4gIkZB
SUwiCkBAIC0xMTYsNyArMTM1LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKIAogICAgIGRlZiBfZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoc2Vs
ZiwgYWN0dWFsX3N0YXR1cywgZGF0YSk6CiAgICAgICAgICIiIgotICAgICAgICBHZXRzIHRoZSBl
eHBlY3RlZCBzdGF0dXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgorICAgICAgICBHZXRzIHRo
ZSBleHBlY3RlZCBzdGF0dXNlcyBmcm9tIGEgfGRhdGF8IGRpY3Rpb25hcnkuCiAKICAgICAgICAg
SWYgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgc3RhdHVzIGluIGRhdGEsIHRoZSBhY3R1YWwgc3RhdHVz
IGlzIHJldHVybmVkLgogICAgICAgICBUaGlzIGlzIGJlY2F1c2UgbW96bG9nIHdpbGwgZGVsZXRl
ICJleHBlY3RlZCIgZnJvbSB8ZGF0YXwgaWYgaXQgaXMgdGhlCkBAIC0xMjUsNDcgKzE0NCw2MSBA
QCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICBp
cyBleHBlY3RlZC4gU28gd2UgdXNlIHRoZSAiZXhwZWN0ZWQiIHN0YXR1cyBpZiBpdCdzIHRoZXJl
IG9yIGZhbGwgYmFjawogICAgICAgICB0byB0aGUgYWN0dWFsIHN0YXR1cyBpZiBpdCdzIG5vdC4K
IAorICAgICAgICBJZiB0aGUgdGVzdCBoYXMgbXVsdGlwbGUgc3RhdHVzZXMsIGl0IHdpbGwgaGF2
ZSBvdGhlciBzdGF0dXNlcyBsaXN0ZWQgYXMKKyAgICAgICAgImtub3duX2ludGVybWl0dGVudCIg
aW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvCisgICAg
ICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vlbi4KKwogICAgICAg
ICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0
CiAgICAgICAgIDpwYXJhbSBkYXRhOiBhIGRhdGEgZGljdGlvbmFyeSB0byBleHRyYWN0IGV4cGVj
dGVkIHN0YXR1cyBmcm9tCi0gICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVz
CisgICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMgYXMgYSBzdHJpbmcK
ICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRhdGFb
ImV4cGVjdGVkIl0pCi0gICAgICAgICAgICAgICAgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2Ug
YWN0dWFsX3N0YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9tYXBfc3Rh
dHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2UgYWN0
dWFsX3N0YXR1cworICAgICAgICBpZiBkYXRhLmdldCgia25vd25faW50ZXJtaXR0ZW50Iik6Cisg
ICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyArPSAiICIgKyAiICIuam9pbigKKyAgICAgICAg
ICAgICAgICBbc2VsZi5fbWFwX3N0YXR1c19uYW1lKG90aGVyX3N0YXR1cykgZm9yIG90aGVyX3N0
YXR1cyBpbiBkYXRhWyJrbm93bl9pbnRlcm1pdHRlbnQiXV0pCisgICAgICAgIHJldHVybiBleHBl
Y3RlZF9zdGF0dXNlcwogCiAgICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRhdGEpOgotICAgICAg
ICBzZWxmLnN0YXJ0X3RpbWVzdGFtcF9zZWNvbmRzID0gKGRhdGFbInRpbWUiXSBpZiAidGltZSIg
aW4gZGF0YQorICAgICAgICAjIHxkYXRhfCBjb250YWlucyBhIHRpbWVzdGFtcCBpbiBtaWNyb3Nl
Y29uZHMsIHdoaWxlIHRpbWUudGltZSgpIGdpdmVzCisgICAgICAgICMgaXQgaW4gc2Vjb25kcy4K
KyAgICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChmbG9hdChkYXRhWyJ0aW1l
Il0pIC8gMTAwMCBpZiAidGltZSIgaW4gZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgdGltZS50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9zdGF0dXMoc2Vs
ZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFbInRlc3QiXQotICAgICAgICBpc191
bmV4cGVjdGVkID0gTm9uZQogICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxmLl9n
ZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQorICAgICAg
ICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAKLSAgICAgICAgaXNfdW5leHBlY3RlZCA9IGFjdHVhbF9z
dGF0dXMgIT0gZXhwZWN0ZWRfc3RhdHVzCisgICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBhY3R1YWxf
c3RhdHVzIG5vdCBpbiBleHBlY3RlZF9zdGF0dXNlcwogICAgICAgICBpZiBpc191bmV4cGVjdGVk
IGFuZCB0ZXN0X25hbWUgbm90IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgogICAg
ICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMuYWRkKHRlc3RfbmFtZSkKICAg
ICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9hcHBlbmRfdGVz
dF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3VidGVzdCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAg
ICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBkYXRhWyJzdWJ0ZXN0
Il0sIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJtZXNzYWdlIl0pCiAK
ICAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFb
InRlc3QiXQotICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRh
dGFbInN0YXR1cyJdKQotICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQQVNTIiBhbmQgdGVz
dF9uYW1lIGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgotICAgICAgICAgICAgIyBU
aGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0ZXN0cywgc28gd2UgZmxpcCB0
aGUgc3RhdHVzCi0gICAgICAgICAgICAjIHRvIEZBSUwuCi0gICAgICAgICAgICBhY3R1YWxfc3Rh
dHVzID0gIkZBSUwiCisgICAgICAgICMgU2F2ZSB0aGUgc3RhdHVzIHJlcG9ydGVkIGJ5IFdQVCBz
aW5jZSB3ZSBtaWdodCBjaGFuZ2UgaXQgd2hlbiByZXBvcnRpbmcKKyAgICAgICAgIyB0byBDaHJv
bWl1bS4KKyAgICAgICAgd3B0X2FjdHVhbF9zdGF0dXMgPSBkYXRhWyJzdGF0dXMiXQorICAgICAg
ICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKHdwdF9hY3R1YWxfc3RhdHVz
KQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNf
ZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9
IEZhbHNlCisgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9m
YWlsczoKKyAgICAgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9IFRydWUKICAgICAgICAgICAgICMg
Q2xlYW4gdXAgdGhlIHRlc3QgbGlzdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAg
ICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscy5yZW1vdmUodGVzdF9uYW1l
KQorICAgICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0
ZXN0cy4gU2luY2Ugd2UgY2FuIG9ubHkKKyAgICAgICAgICAgICMgcmVwb3J0IGEgc2luZ2xlIHN0
YXR1cyB0byBDaHJvbWl1bSwgd2UgY2hvb3NlIEZBSUwgdG8gaW5kaWNhdGUKKyAgICAgICAgICAg
ICMgdGhhdCBzb21ldGhpbmcgYWJvdXQgdGhpcyB0ZXN0IGRpZCBub3QgcnVuIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGF0dXMgPT0gIlBBU1MiOgorICAgICAgICAgICAgICAg
IGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKIAotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxm
Ll9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQogICAg
ICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0
X21lc3NhZ2UodGVzdF9uYW1lLCBOb25lLCBhY3R1YWxfc3RhdHVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMsIGRhdGFbIm1lc3NhZ2UiXSkK
LSAgICAgICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVz
LCBleHBlY3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
bWVzc2FnZXNbdGVzdF9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfc3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAgICAgc2VsZi5fc3Rv
cmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0X25h
bWVdLCB3cHRfYWN0dWFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VidGVzdF9mYWlsdXJlKQogCiAgICAgICAgICMgUmVtb3ZlIHRoZSB0ZXN0IGZyb20gbWVzc2Fn
ZXMgZGljdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAgICAgICAgIHNlbGYubWVz
c2FnZXMucG9wKHRlc3RfbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJz
L3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90
ZXN0X2Nocm9taXVtLnB5CmluZGV4IDgzYzEyOGFjNWNiNDZhNjUzNzNhMmZlYTAwOGM2YmE2MDM1
MGZkOGYuLjJhNWQzZTc5MjgwY2I1NTYzNzQ3YmVjZGRhNGFmZTE4OGQzYjYwZTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQpAQCAtMTU2LDEy
ICsxNTYsMTMgQEAgZGVmIHRlc3Rfc3VidGVzdF9tZXNzYWdlcyhjYXBmZCk6CiAgICAgb3V0cHV0
LnNlZWsoMCkKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKLSAgICB0MV9s
b2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXVsiYXJ0aWZhY3RzIl1bImxvZyJdCi0gICAg
YXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdl
XG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
Ci0KLSAgICB0Ml9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsiYXJ0aWZhY3RzIl1b
ImxvZyJdCi0gICAgYXNzZXJ0IHQyX2xvZyA9PSAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDJf
bWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJd
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iXQorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQorICAgIHQy
X2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXQorICAg
IGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10g
dDJfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiIG5vdCBpbiB0
Ml9hcnRpZmFjdHMua2V5cygpCiAKIAogZGVmIHRlc3Rfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToK
QEAgLTIwMiwxMyArMjAzLDE3IEBAIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAg
ICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCiAgICAgdGVzdF9vYmogPSBvdXRw
dXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9h
OiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0
MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUIGV4cGVjdGVk
IFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IHRlc3Rfb2Jq
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0MV9jOiB0
MV9jX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFp
bHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBv
dXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLAotICAgICMgZGVzcGl0
ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQuCisgICAgIyBkZXNw
aXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0IHRoZSB0ZXN0IHBhc3NlZC4gQnV0IHRoZSBo
YXJuZXNzIHN0YXR1cworICAgICMgaXMgbG9nZ2VkIGFzIGFuIGFydGlmYWN0LgorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNTIl0KICAgICBhc3Nl
cnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhw
ZWN0ZWQiXSA9PSAiUEFTUyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdHRlciBj
bGVhbmVkIHVwIGl0cyBpbnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEiIG5vdCBpbiBmb3Jt
YXR0ZXIudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTI1MywxMiArMjU4LDEzIEBAIGRl
ZiB0ZXN0X2V4cGVjdGVkX3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAKICAgICB0ZXN0X29iaiA9
IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfbG9nID0gdGVzdF9vYmpbImFydGlm
YWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0MV9iX21lc3Nh
Z2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3Nh
Z2VcbiIKKyAgICBhc3NlcnQgdDFfbG9nID09IFsiW0ZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiJdCiAg
ICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBwYXNzIGJlY2F1
c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVjdGVkLgogICAgIGFz
c2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJl
eHBlY3RlZCJdID09ICJQQVNTIgogCiAKIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVzdF9wYXNz
KGNhcGZkKToKQEAgLTI5NiwxMCArMzAyLDE0IEBAIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVz
dF9wYXNzKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKICAg
ICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0gdGVz
dF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltQQVNTIGV4
cGVjdGVkIEZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgotICAgICMgU2luY2UgdGhlIHN1YnRl
c3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuCisgICAgdDFfYXJ0aWZh
Y3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sibG9n
Il0gPT0gWyJbUEFTUyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiJdCisgICAg
YXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCisg
ICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwgd2UgZmFpbCB0aGUg
dGVzdC4gQnV0IHdlIHJlcG9ydAorICAgICMgd3B0X2FjdHVhbF9zdGF0dXMgYXMgYW4gYXJ0aWZh
Y3QKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUEFT
UyJdCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQg
dGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IHRo
ZSBmb3JtYXR0ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAgICBhc3NlcnQgInQx
IiBub3QgaW4gZm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwogCkBAIC0zNjcsNiAr
Mzc3LDE0NCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3Rlc3RfZmFpbChjYXBmZCk6CiAgICAgIyBP
Sy0+UEFTUwogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgotICAgICMgLi5hbmQgdGhpcyB0ZXN0
IHNob3VsZCBub3QgYmUgYSByZWdyZXNzaW9uIG5vciB1bmV4cGVjdGVkCisgICAgIyAuLmFuZCB0
aGlzIHRlc3Qgc2hvdWxkIGJlIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3RlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3RfZmxha3lfdGVzdF9leHBlY3Rl
ZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRoIG11bHRpcGxlIHBv
c3NpYmxlIHN0YXR1c2VzIGlzIHNlZW4gYXMKKyAgICAjIGV4cGVjdGVkIGlmIGl0cyBhY3R1YWwg
c3RhdHVzIGlzIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMgc2V0IHVwIHRoZSBo
YW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhh
bmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAg
ICMgUnVuIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAgbG9nZ2VyLnN1aXRl
X3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0
YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBl
Y3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJFUlJPUiIsICJUSU1FT1VUIl0pCisgICAg
bG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBz
dGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMg
ZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVk
LmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0
dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRw
dXQpCisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBU
aGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBh
bmQgT0stPlBBU1MKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAg
ICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGlu
dG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIEZB
SUwgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBvciB1bmV4cGVj
dGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCisgICAgIyBvZiB0aGUgZXhwZWN0
ZWQgb25lcworICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rfb2JqCisgICAg
YXNzZXJ0ICJpc191bmV4cGVjdGVkIiBub3QgaW4gdGVzdF9vYmoKKworCitkZWYgdGVzdF9mbGFr
eV90ZXN0X3VuZXhwZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBhIGZsYWt5IHRlc3Qg
d2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisgICAgIyB1bmV4cGVj
dGVkIGlmIGl0cyBhY3R1YWwgc3RhdHVzIGlzIE5PVCBvbmUgb2YgdGhlIHBvc3NpYmxlIG9uZXMu
CisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAg
IGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21p
dW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBm
bGFreQorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEy
MykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEi
LCBzdGF0dXM9IkVSUk9SIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJtaXR0ZW50PVsiVElN
RU9VVCJdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdv
dCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0
cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0g
Y2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFz
c2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQg
b2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBq
c29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsi
dDEiXQorICAgICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBlZCwgY2hhbmdpbmcg
RVJST1ItPkZBSUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9
PSAiRkFJTCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIGNvbmNhdGVuYXRl
ZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQi
XSA9PSAiUEFTUyBUSU1FT1VUIgorICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Npb24gYW5kIHVu
ZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKKyAgICAjIG9uZSBvZiB0
aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlz
IFRydWUKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKwor
ZGVmIHRlc3RfcHJlY29uZGl0aW9uX2ZhaWxlZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEg
ZmFpbGVkIHByZWNvbmRpdGlvbiBnZXRzIHByb3Blcmx5IGhhbmRsZWQuCisKKyAgICAjIHNldCB1
cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3Ry
dWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFu
ZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkp
CisKKyAgICAjIFJ1biBhIHRlc3Qgd2l0aCBhIHByZWNvbmRpdGlvbiBmYWlsdXJlCisgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dl
ci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iUFJF
Q09ORElUSU9OX0ZBSUxFRCIsIGV4cGVjdGVkPSJPSyIpCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgp
CisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAg
IyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRv
IHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQg
Y2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAg
IyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNl
ZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0X29i
aiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgcHJlY29uZGl0aW9uIGZh
aWx1cmUgc2hvdWxkIG1hcCB0byBGQUlMIHN0YXR1cywgYnV0IHdlIHNob3VsZCBhbHNvCisgICAg
IyBoYXZlIGFuIGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIFBSRUNPTkRJVElPTl9G
QUlMRUQgc3RhdHVzLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2FjdHVhbF9zdGF0dXMiXSA9PSBb
IlBSRUNPTkRJVElPTl9GQUlMRUQiXQorICAgICMgLi4udGhpcyBpcyBhbiB1bmV4cGVjdGVkIHJl
Z3Jlc3Npb24gYmVjYXVzZSB3ZSBleHBlY3RlZCBhIHBhc3MgYnV0IGZhaWxlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50
X2VtcHR5KGNhcGZkKToKKyAgICAjIElmIHRoZSBrbm93bl9pbnRlcm1pdHRlbnQgbGlzdCBpcyBl
bXB0eSwgd2Ugd2FudCB0byBlbnN1cmUgd2UgZG9uJ3QgYXBwZW5kCisgICAgIyBhbnkgZXh0cmFu
ZW91cyBjaGFyYWN0ZXJzIHRvIHRoZSBvdXRwdXQuCisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxl
ci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5T
dHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVy
cy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1
biBhIHRlc3QgYW5kIGluY2x1ZGUgYW4gZW1wdHkga25vd25faW50ZXJtaXR0ZW50IGxpc3QKKyAg
ICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGltZT0xMjMpCisgICAg
bG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQoInQxIiwgc3RhdHVz
PSJPSyIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1bXSkKKyAgICBsb2dnZXIu
c3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9z
dGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcg
aGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQor
ICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3NlcnQgY2FwdHVyZWQuZXJyID09
ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAg
ICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKwor
ICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICAjIEJvdGggYWN0
dWFsIGFuZCBleHBlY3RlZCBzdGF0dXNlcyBnZXQgbWFwcGVkIHRvIFBhc3MuIE5vIGV4dHJhIHdo
aXRlc3BhY2UKKyAgICAjIGFueXdoZXJlLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0g
PT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3Ry
dW1lbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODdjZjRmZGE3MjQyNmI4OTIxM2NjNDAzN2Y3NDVjZTUy
MzI5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKQEAg
LTAsMCArMSwxMTcgQEAKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHNpeC5t
b3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKKworIiIiSW5zdHJ1bWVudGF0aW9uIGZvciBtZWFzdXJp
bmcgaGlnaC1sZXZlbCB0aW1lIHNwZW50IG9uIHZhcmlvdXMgdGFza3MgaW5zaWRlIHRoZSBydW5u
ZXIuCisKK1RoaXMgaXMgbG93ZXIgZmlkZWxpdHkgdGhhbiBhbiBhY3R1YWwgcHJvZmlsZSwgYnV0
IGFsbG93cyBjdXN0b20gZGF0YSB0byBiZSBjb25zaWRlcmVkLAorc28gdGhhdCB3ZSBjYW4gc2Vl
IHRoZSB0aW1lIHNwZW50IGluIHNwZWNpZmljIHRlc3RzIGFuZCB0ZXN0IGRpcmVjdG9yaWVzLgor
CisKK0luc3RydW1lbnRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdl
cnMgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIF9fZW50ZXJfXworY29udGFpbmluZyB0aGUgdXNl
ci1mYWNpbmcgQVBJIGUuZy4KKword2l0aCBJbnN0cnVtZW50KCphcmdzKSBhcyByZWNvcmRpbmc6
CisgICAgcmVjb3JkaW5nLnNldChbImluaXQiXSkKKyAgICBkb19pbml0KCkKKyAgICByZWNvcmRp
bmcucGF1c2UoKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRzOgorICAgICAgIHRocmVh
ZC5zdGFydChyZWNvcmRpbmcsICphcmdzKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRz
OgorICAgICAgIHRocmVhZC5qb2luKCkKKyAgICByZWNvcmRpbmcuc2V0KFsidGVhcmRvd24iXSkg
ICAjIHVuLXBhdXNlcyB0aGUgSW5zdHJ1bWVudAorICAgIGRvX3RlYXJkb3duKCkKKyIiIgorCitj
bGFzcyBOdWxsSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBzZXQoc2VsZiwgc3RhY2spOgor
ICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgdGFzayB0byBzdGFjaworCisgICAgICAgIDpwYXJh
bSBzdGFjazogQSBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIGN1cnJlbnQgdGFzay4KKyAg
ICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgaW50ZXJwcmV0ZWQgbGlrZSBhIHN0YWNrIHRy
YWNlIHNvIHRoYXQgWyJmb28iXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJi
YXIiXSBib3RoIHNob3cgdXAgYXMgZGVzY2VuZGFudHMgb2YgImZvbyIKKyAgICAgICAgIiIiCisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAgIiIiU3RvcCByZWNv
cmRpbmcgYSB0YXNrIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhl
IHRocmVhZAorICAgICAgICBpcyBwdXJlbHkgd2FpdGluZyBvbiB0aGUgcmVzdWx0cyBvZiBvdGhl
ciB0aHJlYWRzIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgSW5zdHJ1bWVudFdyaXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6CisgICAgICAgIHNlbGYucXVldWUgPSBx
dWV1ZQorCisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgIHN0YWNrLmluc2VydCgw
LCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQorICAgICAgICBzdGFjayA9IHNlbGYu
X2NoZWNrX3N0YWNrKHN0YWNrKQorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInNldCIsIHRocmVh
ZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgc3RhY2spKQorCisgICAg
ZGVmIHBhdXNlKHNlbGYpOgorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInBhdXNlIiwgdGhyZWFk
aW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQsIHRpbWUudGltZSgpLCBOb25lKSkKKworICAgIGRl
ZiBfY2hlY2tfc3RhY2soc2VsZiwgc3RhY2spOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShz
dGFjaywgKHR1cGxlLCBsaXN0KSkKKyAgICAgICAgcmV0dXJuIFtpdGVtLnJlcGxhY2UoIiAiLCAi
XyIpIGZvciBpdGVtIGluIHN0YWNrXQorCisKK2NsYXNzIEluc3RydW1lbnQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiSW5zdHJ1bWVudCB0
aGF0IGNvbGxlY3RzIGRhdGEgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBzdW1zIHRoZSB0aW1l
IGluIGVhY2gKKyAgICAgICAgdGhyZWFkLiBUaGUgb3V0cHV0IGlzIGluIHRoZSBmb3JtYXQgcmVx
dWlyZWQgYnkgZmxhbWVncmFwaC5wbCB0byBlbmFibGUgdmlzdWFsaXNhdGlvbgorICAgICAgICBv
ZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHRhc2suCisKKyAgICAgICAgOnBhcmFtIGZpbGVfcGF0
aDogLSBUaGUgcGF0aCBvbiB3aGljaCB0byB3cml0ZSBpbnN0cnVtZW50IG91dHB1dC4gQW55IGV4
aXN0aW5nIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgcGF0aCB3aWxs
IGJlIG92ZXJ3cml0dGVuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBhdGggPSBmaWxlX3Bh
dGgKKyAgICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gTm9u
ZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYudGhyZWFkID0g
Tm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYudGhy
ZWFkIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucXVldWUgaXMgTm9uZQorICAgICAgICBz
ZWxmLnF1ZXVlID0gUXVldWUoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJl
YWQodGFyZ2V0PXNlbGYucnVuKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAg
IHJldHVybiBJbnN0cnVtZW50V3JpdGVyKHNlbGYucXVldWUpCisKKyAgICBkZWYgX19leGl0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJzdG9wIiwg
Tm9uZSwgdGltZS50aW1lKCksIE5vbmUpKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKyAg
ICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYucXVldWUgPSBOb25lCisKKyAg
ICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBrbm93bl9jb21tYW5kcyA9IHsic3RvcCIsICJwYXVz
ZSIsICJzZXQifQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAidyIpIGFzIGY6CisgICAg
ICAgICAgICB0aHJlYWRfZGF0YSA9IHt9CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgICAgIGNvbW1hbmQsIHRocmVhZCwgdGltZV9zdGFtcCwgc3RhY2sgPSBzZWxmLnF1ZXVl
LmdldCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaW4ga25vd25fY29tbWFuZHMK
KworICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIGRvbmUgcmVjb3JkaW5nLCBkdW1wIHRoZSBp
bmZvcm1hdGlvbiBmcm9tIGFsbCB0aHJlYWRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAg
IyBiZWZvcmUgZXhpdGluZy4gT3RoZXJ3aXNlIGZvciBlaXRoZXIgJ3NldCcgb3IgJ3BhdXNlJyB3
ZSBvbmx5IG5lZWQgdG8gZHVtcAorICAgICAgICAgICAgICAgICMgaW5mb3JtYXRpb24gZnJvbSB0
aGUgY3VycmVudCBzdGFjayAoaWYgYW55KSB0aGF0IHdhcyByZWNvcmRpbmcgb24gdGhlIHJlcG9y
dGluZworICAgICAgICAgICAgICAgICMgdGhyZWFkIChhcyB0aGF0IHN0YWNrIGlzIG5vIGxvbmdl
ciBhY3RpdmUpLgorICAgICAgICAgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgICAgICAgICBp
ZiBjb21tYW5kID09ICJzdG9wIjoKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aHJlYWRf
ZGF0YS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGVsaWYgdGhyZWFkIGluIHRocmVhZF9kYXRh
OgorICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQodGhyZWFkX2RhdGEucG9wKHRocmVh
ZCkpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9zdGFjaywgc3RhcnRfdGltZSBpbiBpdGVt
czoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJWRcbiIgJSAoIjsiLmpvaW4ob3V0
cHV0X3N0YWNrKSwgaW50KDEwMDAgKiAodGltZV9zdGFtcCAtIHN0YXJ0X3RpbWUpKSkpCisKKyAg
ICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICJzZXQiOgorICAgICAgICAgICAgICAgICAgICB0
aHJlYWRfZGF0YVt0aHJlYWRdID0gKHN0YWNrLCB0aW1lX3N0YW1wKQorICAgICAgICAgICAgICAg
IGVsaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9t
YW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IGVhZTg1YjFmNjY2MWE2N2RmZjU5ZWY3OGE5ZWQ2Mjdl
M2UzNjAzZDguLjMxYzU3ZTljYjczNGY3NDFlNDI3NWU3NGU4ZmNmN2NkMGFkNGVlMzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0xLDYgKzEsOCBAQAogaW1wb3J0IG9zCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5cGUKK2Zyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorCiAKIGZyb20gLndwdG1hbmlm
ZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmJh
c2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtMTUsNiArMTcsNyBAQCBFYWNoIFRlc3ROb2RlIGhh
cyB6ZXJvIG9yIG1vcmUgU3VidGVzdE5vZGUgY2hpbGRyZW4sIG9uZSBmb3IgZWFjaAoga25vd24g
c3VidGVzdCBvZiB0aGUgdGVzdC4KICIiIgogCisKIGRlZiBkYXRhX2Nsc19nZXR0ZXIob3V0cHV0
X25vZGUsIHZpc2l0ZWRfbm9kZSk6CiAgICAgIyB2aXNpdGVkX25vZGUgaXMgaW50ZW50aW9uYWxs
eSB1bnVzZWQKICAgICBpZiBvdXRwdXRfbm9kZSBpcyBOb25lOgpAQCAtMjksNyArMzIsNyBAQCBk
ZWYgZGF0YV9jbHNfZ2V0dGVyKG91dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUpOgogZGVmIGJvb2xf
cHJvcChuYW1lLCBub2RlKToKICAgICAiIiJCb29sZWFuIHByb3BlcnR5IiIiCiAgICAgdHJ5Ogot
ICAgICAgICByZXR1cm4gbm9kZS5nZXQobmFtZSkKKyAgICAgICAgcmV0dXJuIGJvb2wobm9kZS5n
ZXQobmFtZSkpCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1cm4gTm9uZQogCkBA
IC00NiwxOCArNDksMjggQEAgZGVmIGxpc3RfcHJvcChuYW1lLCBub2RlKToKICAgICAiIiJMaXN0
IHByb3BlcnR5IiIiCiAgICAgdHJ5OgogICAgICAgICBsaXN0X3Byb3AgPSBub2RlLmdldChuYW1l
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgYmFzZXN0cmluZyk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmV0
dXJuIFtsaXN0X3Byb3BdCiAgICAgICAgIHJldHVybiBsaXN0KGxpc3RfcHJvcCkKICAgICBleGNl
cHQgS2V5RXJyb3I6CiAgICAgICAgIHJldHVybiBbXQogCiAKK2RlZiBzdHJfcHJvcChuYW1lLCBu
b2RlKToKKyAgICB0cnk6CisgICAgICAgIHByb3AgPSBub2RlLmdldChuYW1lKQorICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShwcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgorICAgICAgICByZXR1cm4gcHJvcAorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCiBkZWYgdGFncyhub2RlKToKICAgICAiIiJTZXQgb2YgdGFn
cyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAgdHJ5OgogICAgICAg
ICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
KHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUp
OgogICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZX0KICAgICAgICAgcmV0dXJuIHNldCh2YWx1ZSkK
ICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC02Niw3ICs3OSw3IEBAIGRlZiB0YWdzKG5vZGUpOgog
CiBkZWYgcHJlZnMobm9kZSk6CiAgICAgZGVmIHZhbHVlKGluaV92YWx1ZSk6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoaW5pX3ZhbHVlLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBy
ZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUuc3BsaXQoJzonLCAx
KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgdGhpbmdzIGxp
a2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3QnCkBAIC03NCw3ICs4
Nyw3IEBAIGRlZiBwcmVmcyhub2RlKToKIAogICAgIHRyeToKICAgICAgICAgbm9kZV9wcmVmcyA9
IG5vZGUuZ2V0KCJwcmVmcyIpCi0gICAgICAgIGlmIHR5cGUobm9kZV9wcmVmcykgaW4gKHN0ciwg
dW5pY29kZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9wcmVmcywgdGV4dF90eXBlKToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShub2RlX3ByZWZzKSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShpdGVtKSBmb3IgaXRlbSBpbiBub2RlX3ByZWZz
KQpAQCAtODYsNyArOTksNyBAQCBkZWYgcHJlZnMobm9kZSk6CiBkZWYgc2V0X3Byb3AobmFtZSwg
bm9kZSk6CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5nZXQobmFtZSkKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAgICAgICAgICAgIHJ2ID0g
e25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9IHNldChub2RlX2l0
ZW1zKQpAQCAtOTksNyArMTEyLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAgIHJ2
ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10aHJl
c2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChzdHIsIHVuaWNvZGUp
KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0ZXh0X3R5cGUpOgogICAgICAg
ICAgICAgbm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQogICAgICAgICBmb3IgaXRlbSBpbiBub2Rl
X2l0ZW1zOgogICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJzcGxpdCgiOiIsIDEp
CkBAIC0xNTYsNyArMTY5LDcgQEAgZGVmIGZ1enp5X3Byb3Aobm9kZSk6CiAgICAgaWYgbm90IGlz
aW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICBmb3Ig
aXRlbSBpbiB2YWx1ZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5p
Y29kZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgogICAg
ICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBw
YXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTI3OSw2ICsyOTIsMTAgQEAgY2xhc3MgRXhw
ZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNh
YmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxlZCIsIHNl
bGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0zMDcsNiArMzI0LDEw
IEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYga25vd25f
aW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICByZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIs
IHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBsZW1lbnRhdGlvbi1zdGF0dXMi
LCBzZWxmKQorCiAKIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAg
QHByb3BlcnR5CkBAIC0zMzcsNiArMzU4LDEwIEBAIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1h
bmlmZXN0SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMo
c2VsZikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJv
cCgibHNhbi1hbGxvd2VkIiwgc2VsZikKQEAgLTM1Nyw2ICszODIsMTAgQEAgY2xhc3MgRGlyZWN0
b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgZnV6enkoc2VsZik6CiAgICAgICAg
IHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW1wbGVt
ZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3Byb3AoImltcGxlbWVu
dGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgpAQCAtNDE0LDYgKzQ0Mywx
MCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNh
bl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxl
ZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC00NDIsNiAr
NDc1LDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGtub3duX2lu
dGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgiZXhwZWN0ZWQiLCBz
ZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMo
c2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3RhdHVzIiwg
c2VsZikKKwogICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIkFkZCBhIHN1
YnRlc3QgdG8gdGhlIGN1cnJlbnQgdGVzdAogCkBAIC00NzgsNyArNTE1LDcgQEAgZGVmIGdldF9t
YW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mbyk6CiAg
ICAgIiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVkX3BhdGgobWV0YWRh
dGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0
X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIiKSBhcyBm
OgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YV9jbHNfZ2V0dGVyPWRhdGFfY2xzX2dldHRlciwKQEAgLTQ5Nyw3ICs1MzQsNyBA
QCBkZWYgZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLCBydW5faW5mbyk6CiAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMgc2hvdWxkIGJlIGNvbXB1dGVkLgogICAgICIiIgogICAgIHRyeToKLSAgICAg
ICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBh
cyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IERpcmVjdG9yeU1hbmlmZXN0KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggZDMwMjgzMWE1N2FiYmFhZGQ3NWZlNDllMDk0NDgy
ZGMxNDIyM2VhMy4uNzliNWIxOWIzYTNmNjE3ZTVkZDQwMTE4MDQyZGEwYjNlYThlNDExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDYgKzYsNyBAQCBiZSBpbmNsdWRlZCBvciBleGNs
dWRlZC4KICIiIgogaW1wb3J0IGdsb2IKIGltcG9ydCBvcworZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgdXJsc3Bs
aXQKIAogZnJvbSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUKQEAgLTk0LDcgKzk1
LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIGlmIHBh
dGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRo
czoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMu
aXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBkYXRhIGluIGl0ZXJp
dGVtcyh0ZXN0X21hbmlmZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UK
ICAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgZGF0
YVsidGVzdHNfcGF0aCJdKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1hbmlmZXN0
Lml0ZXJwYXRoIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGVsc2UgbWFuaWZlc3QuaXRlcmRpcgpA
QCAtMTUwLDUgKzE1MSw1IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
CiAKIGRlZiBnZXRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCk6Ci0gICAgd2l0aCBvcGVuKG1hbmlm
ZXN0X3BhdGgpIGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFzIGY6
CiAgICAgICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxlKGYsIGRhdGFfY2xzX2dldHRlcj1s
YW1iZGEgeCwgeTogSW5jbHVkZU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21h
bmlmZXN0dXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CmluZGV4IGFm
OWFmMThkOTA3MTVkNDNiYmNkMmFlNDdjZTc2Mjc1YmIwZTE1NzcuLjEyOTQ1N2IzZmQxMjcwZGM2
NjAyOWQzZWE4NzNkMzUzNzE0YWE2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVz
dHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKQEAgLTMsNyAr
Myw3IEBAIGltcG9ydCBvcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxq
b2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgZGVmYXVs
dGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4IGltcG9ydCBpdGVy
a2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgaW50ZWdlcl90eXBl
cywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcywgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5
cGUKIAogZnJvbSAud3B0bWFuaWZlc3QgaW1wb3J0IHNlcmlhbGl6ZQogZnJvbSAud3B0bWFuaWZl
c3Qubm9kZSBpbXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJpbmFyeUV4cHJlc3Np
b25Ob2RlLApAQCAtNDExLDcgKzQxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6
CiAgICAgICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICAgICAgIGlmIGRpc2FibGVfaW50ZXJt
aXR0ZW50OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5jaGlsZHJlblswXSBp
ZiBlLmNvbmQgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1p
dHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0ciwgdW5pY29kZSkp
IGVsc2UgInVuc3RhYmxlIgorICAgICAgICAgICAgICAgIG1zZyA9IGRpc2FibGVfaW50ZXJtaXR0
ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIHN0cmluZ190eXBlcysodGV4
dF90eXBlLCkpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQo
ImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5l
d19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC01MTMsNyArNTEzLDcgQEAg
Y2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgIHRvcF9sZXZlbF9wcm9w
cywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5ub2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcwog
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQogICAg
ICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgotICAgICAg
ICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChkZXBlbmRlbnRfcHJvcHMpCisgICAg
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAgICAgICAgICAgICBm
b3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAgICAgICAgICBpZiAo
KG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQK
ICAgICAgICAgICAgICAgICAgICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRpb25bY29uZGl0aW9u
XSkpOgpAQCAtNzc0LDcgKzc3NCw3IEBAIGNsYXNzIEFwcGVuZE9ubHlMaXN0VXBkYXRlKFByb3Bl
cnR5VXBkYXRlKToKICAgICAgICAgZm9yIGl0ZW0gaW4gbmV3OgogICAgICAgICAgICAgaWYgaXRl
bSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICAgICAgcnYuYWRkKGl0ZW0pCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAgLTg5NywxMCArODk3
LDEwIEBAIGRlZiBtYWtlX2V4cHIocHJvcF9zZXQsIHJocyk6CiAKIAogZGVmIG1ha2Vfbm9kZSh2
YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxvbmcpOgorICAgIGlm
IGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgogICAgICAgICBub2Rl
ID0gTnVtYmVyTm9kZSh2YWx1ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGluIChzdHIsIHVuaWNv
ZGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh1bmljb2RlKHZhbHVlKSkKKyAgICBlbGlm
IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBTdHJpbmdOb2Rl
KHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAiX19pdGVyX18iKToK
ICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6CkBA
IC05MDksMTAgKzkwOSwxMCBAQCBkZWYgbWFrZV9ub2RlKHZhbHVlKToKIAogCiBkZWYgbWFrZV92
YWx1ZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBpbiAoaW50LCBmbG9hdCwgbG9u
Zyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90eXBlcysoZmxvYXQsKSk6CiAg
ICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBlKHZhbHVlKSBpbiAo
c3RyLCB1bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh1bmljb2RlKHZhbHVlKSkK
KyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBW
YWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIodmFsdWUsICJfX2l0
ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAgICBmb3IgaXRlbSBpbiB2
YWx1ZToKQEAgLTkzMSw3ICs5MzEsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3Qs
IHRlc3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZQogICAgIDpw
YXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGluIHRoaXMgbWFu
aWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0ZWRfcGF0aChtZXRh
ZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4obWFuaWZl
c3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFz
IGY6CiAgICAgICAgICAgICBydiA9IGNvbXBpbGUoZiwgdGVzdF9wYXRoLCB1cmxfYmFzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGVfaW50ZXJt
aXR0ZW50LCByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgIGV4Y2VwdCBJT0Vycm9yOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5
CmluZGV4IGMzMjhkY2VmYTcyNTNkZGVhOTUyNTQ5YzcwMjcyM2U5OGI0Y2FkYzQuLmRmMzFhYzQw
ZGU4YjhlZTcwODEzYzNiMmUwM2QxODY1ZjY3MmUyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tZXRhZGF0YS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKQEAgLTEsMTAgKzEs
MTIgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBhcnJh
eQogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IGludGVybgorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9zdHIsIGVu
c3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0X3R5cGUKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCiAKIGZyb20gLiBpbXBvcnQgbWFuaWZl
c3R1cGRhdGUKIGZyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgpAQCAtNDMsMTEgKzQ1LDExIEBAIGNs
YXNzIFJ1bkluZm8ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuY2Fub25pY2FsX3JlcHIg
PT0gb3RoZXIuY2Fub25pY2FsX3JlcHIKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CiAgICAgICAgICAgICB5aWVsZCBr
ZXksIHZhbHVlCiAKICAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBsaXN0KHNl
bGYuaXRlcml0ZW1zKCkpCisgICAgICAgIHJldHVybiBsaXN0KGl0ZXJpdGVtcyhzZWxmKSkKIAog
CiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxvZ19maWxlX25h
bWVzLApAQCAtMTI3LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMobWFuaWZlc3Rz
LCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdlZCA9IHNldChm
aWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBmb3IgbWFuaWZl
c3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgbWFuaWZlc3QsIHBh
dGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgogICAgICAgICBpZiBwYXRoc1sidXJsX2Jhc2Ui
XSA9PSAiLyI6CiAgICAgICAgICAgICByb290X21hbmlmZXN0ID0gbWFuaWZlc3QKICAgICAgICAg
ICAgIGJyZWFrCkBAIC0xOTgsNyArMjAwLDcgQEAgY2xhc3MgSW50ZXJuZWREYXRhKG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAg
Zm9yIGkgaW4geHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CisgICAgICAgIGZvciBpIGlu
IHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CiAgICAgICAgICAgICB5aWVsZCBzZWxmLmdl
dChpKQogCiAKQEAgLTIzOCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6CiBkZWYg
dW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6CiAgICAg
ICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYgaXNpbnN0
YW5jZShkYXRhLCB1bmljb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHRleHRfdHlwZSk6
CiAgICAgICAgIHJldHVybiAoZGF0YSwgTm9uZSkKICAgICAjIFVucGFjayBtdWx0aXBsZSBzdGF0
dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNlZCBpbiB0aGUgUmVzdWx0cyBuYW1lZCB0dXBsZSBi
ZWxvdywKICAgICAjIHNlcGFyYXRpbmcgYHN0YXR1c2AgYW5kIGBrbm93bl9pbnRlcm1pdHRlbnRg
LgpAQCAtMjU3LDcgKzI1OSw3IEBAIGRlZiBsb2FkX3Rlc3RfZGF0YSh0ZXN0X3BhdGhzKToKICAg
ICBtYW5pZmVzdHMgPSBtYW5pZmVzdF9sb2FkZXIubG9hZCgpCiAKICAgICBpZF90ZXN0X21hcCA9
IHt9Ci0gICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6
CiAgICAgICAgIGlkX3Rlc3RfbWFwLnVwZGF0ZShjcmVhdGVfdGVzdF90cmVlKHBhdGhzWyJtZXRh
ZGF0YV9wYXRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfbWFuaWZlc3QpKQogICAgIHJldHVybiBpZF90ZXN0X21hcApAQCAtMjg1LDEwICsyODcs
MTAgQEAgZGVmIHVwZGF0ZV9yZXN1bHRzKGlkX3Rlc3RfbWFwLAogICAgICAgICAgICAgICAgICAg
IGRpc2FibGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pbnRlcm1p
dHRlbnQsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudCk6Ci0gICAgdGVz
dF9maWxlX2l0ZW1zID0gc2V0KGlkX3Rlc3RfbWFwLml0ZXJ2YWx1ZXMoKSkKKyAgICB0ZXN0X2Zp
bGVfaXRlbXMgPSBzZXQoaXRlcnZhbHVlcyhpZF90ZXN0X21hcCkpCiAKICAgICBkZWZhdWx0X2V4
cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfY2xzIGluIHdwdHRl
c3QubWFuaWZlc3RfdGVzdF9jbHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVz
dF9jbHMgaW4gaXRlcml0ZW1zKHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMpOgogICAgICAgICBp
ZiB0ZXN0X2Nscy5yZXN1bHRfY2xzOgogICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RlZF9ieV90
eXBlWyh0ZXN0X3R5cGUsIEZhbHNlKV0gPSB0ZXN0X2Nscy5yZXN1bHRfY2xzLmRlZmF1bHRfZXhw
ZWN0ZWQKICAgICAgICAgaWYgdGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xzOgpAQCAtMzI0LDgg
KzMyNiwxMSBAQCBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRhX3BhdGgsIGV4cGVjdGVk
KToKICAgICAgICAgdG1wX3BhdGggPSBwYXRoICsgIi50bXAiCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHdpdGggb3Blbih0bXBfcGF0aCwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBm
LndyaXRlKG1hbmlmZXN0X3N0cikKLSAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0
aCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0ci5lbmNvZGUoInV0ZjgiKSkK
KyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAg
ICAgIG9zLnJlcGxhY2UodG1wX3BhdGgsIHBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0aCkKICAgICAgICAgZXhjZXB0IChFeGNl
cHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBvcy51bmxpbmsodG1wX3BhdGgpCkBAIC00MjYsNyArNDMxLDcgQEAgY2xhc3MgRXhwZWN0
ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJsc2FuX2xlYWsiXShp
dGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3psZWFrIiwge30pCi0g
ICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBtb3psZWFrX2RhdGEuaXRlcml0ZW1zKCk6
CisgICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96bGVha19kYXRh
KToKICAgICAgICAgICAgIGZvciBrZXksIGFjdGlvbiBpbiBbKCJvYmplY3RzIiwgIm1vemxlYWtf
b2JqZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidG90YWwiLCAibW96
bGVha190b3RhbCIpXToKICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzY29wZV9kYXRhLmdl
dChrZXksIFtdKToKQEAgLTQzOCw3ICs0NDMsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVybi5zdG9yZShSdW5J
bmZvKGRhdGFbInJ1bl9pbmZvIl0pKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0YSk6
Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5pZF90ZXN0X21hcFt0ZXN0X2lkXQogICAgICAgICBl
eGNlcHQgS2V5RXJyb3I6CkBAIC00NDgsOCArNDUzLDggQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXSA9IHNldCgpCiAK
ICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRl
cm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQotICAgICAgICBzdWJ0ZXN0ID0gaW50ZXJu
KGRhdGFbInN1YnRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVy
bihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCisgICAgICAgIHN1YnRlc3QgPSBpbnRlcm4oZW5z
dXJlX3N0cihkYXRhWyJzdWJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rl
c3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToKICAgICAg
ICAgICAgIHJldHVybgpAQCAtNDY2LDcgKzQ3MSw3IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihv
YmplY3QpOgogICAgICAgICBpZiBkYXRhWyJzdGF0dXMiXSA9PSAiU0tJUCI6CiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUo
InV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3Qi
XSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQpCiAg
ICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00Nzks
NyArNDg0LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGRlbCBz
ZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0KIAogICAgIGRlZiBhc3NlcnRpb25fY291bnQoc2Vs
ZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgi
dXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJd
KSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5pZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAg
ICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTQ5MCwx
MiArNDk1LDE1IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RfZm9yX3Njb3BlKHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9IGRhdGEuZ2V0KCJz
Y29wZSIsICIvIikKLSAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGguam9pbihkaXJfcGF0
aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICBkaXJfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihvcy5wYXRoLmpvaW4oZGlyX3BhdGgs
ICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkpCiAgICAgICAgIGlmIGRpcl9p
ZC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfaWRbMTpdCiAgICAg
ICAgIHJldHVybiBkaXJfaWQsIHNlbGYuaWRfdGVzdF9tYXBbZGlyX2lkXQogCiAgICAgZGVmIGxz
YW5fbGVhayhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6Cisg
ICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIGxzYW4gYW5ub3RhdGlvbnMg
Zm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRpcl9pZCwgdGVz
dF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICB0ZXN0X2RhdGEuc2V0
KGRpcl9pZCwgTm9uZSwgImxzYW4iLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX2lu
Zm8sIChkYXRhWyJmcmFtZXMiXSwgZGF0YS5nZXQoImFsbG93ZWRfbWF0Y2giKSkpCkBAIC01MDMs
NiArNTExLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha19vYmplY3Qo
c2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8iOgorICAgICAgICAg
ICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90YXRpb25zIGZvciBy
b290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJfaWQsIHRlc3RfZGF0
YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRhLnNldChkaXJf
aWQsIE5vbmUsICJsZWFrLW9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5f
aW5mbywgKCIlczolcyIsIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbIm5hbWUiXSksCkBAIC01MTEs
NiArNTIyLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha190b3RhbChz
ZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6CisgICAgICAgICAg
ICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIG1vemxlYWsgYW5ub3RhdGlvbnMgZm9yIHJv
b3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRhdGFbImJ5dGVzIl06
CiAgICAgICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0
YSkKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAibGVhay10aHJlc2hv
bGQiLApAQCAtNTI5LDMxICs1NDMsMzAgQEAgZGVmIGNyZWF0ZV90ZXN0X3RyZWUobWV0YWRhdGFf
cGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgYXNzZXJ0IGFsbF90eXBlcyA+IGV4Y2x1ZGVfdHlw
ZXMKICAgICBpbmNsdWRlX3R5cGVzID0gYWxsX3R5cGVzIC0gZXhjbHVkZV90eXBlcwogICAgIGZv
ciBpdGVtX3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gdGVzdF9tYW5pZmVzdC5pdGVydHlwZXMo
KmluY2x1ZGVfdHlwZXMpOgotICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShp
bnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihpdGVtX3R5cGUuZW5jb2RlKCJ1dGY4
IikpLAorICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4oZW5zdXJl
X3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybihlbnN1cmVfc3RyKGl0ZW1fdHlwZSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzKQogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAg
ICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybih0ZXN0LmlkLmVuY29kZSgidXRmOCIpKV0gPSB0ZXN0
X2ZpbGVfZGF0YQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKGVuc3VyZV9zdHIodGVz
dC5pZCkpXSA9IHRlc3RfZmlsZV9kYXRhCiAKLSAgICAgICAgZGlyX3BhdGggPSBvcy5wYXRoLnNw
bGl0KHRlc3RfcGF0aClbMF0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgICAgICBkaXJf
cGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICBpZiBkaXJfcGF0aDoKLSAgICAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfcGF0
aCArICIvX19kaXJfXyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2lk
ID0gIl9fZGlyX18iCi0gICAgICAgICAgICBkaXJfaWQgPSBpbnRlcm4oKHRlc3RfbWFuaWZlc3Qu
dXJsX2Jhc2UgKyBkaXJfaWQpLmxzdHJpcCgiLyIpLmVuY29kZSgidXRmOCIpKQotICAgICAgICAg
ICAgaWYgZGlyX2lkIG5vdCBpbiBpZF90ZXN0X21hcDoKLSAgICAgICAgICAgICAgICB0ZXN0X2Zp
bGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNv
ZGUoInV0ZjgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSkKLSAgICAgICAgICAgICAgICBpZF90ZXN0X21hcFtkaXJfaWRdID0gdGVzdF9maWxlX2Rh
dGEKLSAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aCBvciBkaXJfcGF0aCBpbiBpZF90ZXN0X21h
cDoKKyAgICAgICAgICAgIGRpcl9tZXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsICJf
X2Rpcl9fIikKKyAgICAgICAgICAgIGRpcl9pZCA9ICh0ZXN0X21hbmlmZXN0LnVybF9iYXNlICsg
ZGlyX21ldGFfcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpKS5sc3RyaXAoIi8iKQorICAg
ICAgICAgICAgaWYgZGlyX2lkIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybihlbnN1
cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyX21ldGFfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGlyX2lkXSA9IHRlc3Rf
ZmlsZV9kYXRhCisgICAgICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShkaXJfcGF0
aCkKKyAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aDoKICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZGlyX3BhdGggPSBkaXJfcGF0aC5yc3BsaXQoIi8iLCAxKVswXSBpZiAiLyIg
aW4gZGlyX3BhdGggZWxzZSAiIgogCiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFwCiAKQEAgLTYxNCw3
ICs2MjcsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgc2VsZi5pdGVt
X3R5cGUgPSBpdGVtX3R5cGUKICAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKICAg
ICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFfcGF0aAotICAgICAgICBzZWxmLnRl
c3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIpKSBmb3IgaXRlbSBpbiB0ZXN0c30K
KyAgICAgICAgc2VsZi50ZXN0cyA9IHtpbnRlcm4oZW5zdXJlX3N0cihpdGVtLmlkKSkgZm9yIGl0
ZW0gaW4gdGVzdHN9CiAgICAgICAgIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZSA9IEZhbHNlCiAgICAg
ICAgIHNlbGYuZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QoUGFja2VkUmVz
dWx0TGlzdCkpCiAKQEAgLTY1NSwxMSArNjY4LDExIEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmpl
Y3QpOgogICAgICAgICAjIFJldHVybiBzdWJ0ZXN0IG5vZGVzIHByZXNlbnQgaW4gdGhlIGV4cGVj
dGVkIGZpbGUsIGJ1dCBtaXNzaW5nIGZyb20gdGhlIGRhdGEKICAgICAgICAgcnYgPSBbXQogCi0g
ICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6Ci0g
ICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZC5kZWNvZGUoInV0Zjgi
KSkKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEp
OgorICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KGVuc3VyZV90ZXh0KHRlc3Rf
aWQpKQogICAgICAgICAgICAgaWYgbm90IHRlc3Q6CiAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNvZGUoInV0ZjgiKSBmb3Ig
aXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90IE5vbmUpCisgICAgICAg
ICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGVuc3VyZV90ZXh0KGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJrZXlzKHN1YnRlc3RzKSBpZiBpdGVtIGlzIG5vdCBOb25lKQogICAgICAgICAgICAgbWlzc2lu
Z19zdWJ0ZXN0cyA9IHNldCh0ZXN0LnN1YnRlc3RzLmtleXMoKSkgLSBzZWVuX3N1YnRlc3RzCiAg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBtaXNzaW5nX3N1YnRlc3RzOgogICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3N1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KGl0ZW0pCkBAIC02NzMsNiArNjg2
LDI5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBydgog
CisgICAgZGVmIGZpbHRlcl91bmtub3duX3Byb3BzKHNlbGYsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBz
dWJ0ZXN0cyk6CisgICAgICAgICMgUmVtb3ZlIHN1YnRlc3RzIHdoaWNoIGhhdmUgc29tZSBjb25k
aXRpb25zIHRoYXQgYXJlbid0IGluIHVwZGF0ZV9wcm9wZXJ0aWVzCisgICAgICAgICMgc2luY2Ug
cmVtb3ZpbmcgdGhlc2UgbWF5IGJlIGluYXBwcm9wcmlhdGUKKyAgICAgICAgdG9wX2xldmVsX3By
b3BzLCBkZXBlbmRlbnRfcHJvcHMgPSB1cGRhdGVfcHJvcGVydGllcworICAgICAgICBhbGxfcHJv
cGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJ2
YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKKyAgICAgICAgICAgIGFsbF9wcm9wZXJ0aWVzIHw9IHNl
dChpdGVtKQorCisgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgZm9yIHN1YnRlc3QgaW4g
c3VidGVzdHM6CisgICAgICAgICAgICBpbmNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgZm9yIGtl
eSwgXyBpbiBzdWJ0ZXN0Lml0ZXJfcHJvcGVydGllcygpOgorICAgICAgICAgICAgICAgIGNvbmRp
dGlvbnMgPSBzdWJ0ZXN0LmdldF9jb25kaXRpb25zKGtleSkKKyAgICAgICAgICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25k
aXRpb24udmFyaWFibGVzLmlzc3Vic2V0KGFsbF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiBub3QgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIGluY2x1ZGU6CisgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCiAgICAgZGVmIHVwZGF0ZShz
ZWxmLCBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUsIHVwZGF0ZV9wcm9wZXJ0aWVzLAogICAgICAg
ICAgICAgICAgZnVsbF91cGRhdGU9RmFsc2UsIGRpc2FibGVfaW50ZXJtaXR0ZW50PU5vbmUsIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsCiAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0
ZW50PUZhbHNlKToKQEAgLTY4Nyw2ICs3MjMsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0
KToKIAogICAgICAgICBpZiBmdWxsX3VwZGF0ZToKICAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxm
Lm9ycGhhbl9zdWJ0ZXN0cyhleHBlY3RlZCkKKyAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxmLmZp
bHRlcl91bmtub3duX3Byb3BzKHVwZGF0ZV9wcm9wZXJ0aWVzLCBvcnBoYW5zKQogCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBvcnBoYW5zOgogICAgICAg
ICAgICAgICAgIHJldHVybgpAQCAtNzA0LDkgKzc0MSw5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkLmdldF90ZXN0KHRl
c3RfaWQpCiAgICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRdID0gdGVzdF9leHBl
Y3RlZAogCi0gICAgICAgIGZvciB0ZXN0X2lkLCB0ZXN0X2RhdGEgaW4gc2VsZi5kYXRhLml0ZXJp
dGVtcygpOgotICAgICAgICAgICAgdGVzdF9pZCA9IHRlc3RfaWQuZGVjb2RlKCJ1dGY4IikKLSAg
ICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gdGVzdF9kYXRhLml0ZXJp
dGVtcygpOgorICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIGl0ZXJpdGVtcyhzZWxm
LmRhdGEpOgorICAgICAgICAgICAgdGVzdF9pZCA9IGVuc3VyZV9zdHIodGVzdF9pZCkKKyAgICAg
ICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gaXRlcml0ZW1zKHRlc3RfZGF0
YSk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRz
X2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGRpcmVjdG9yeSBtZXRh
ZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5vbmUgYW5kIHRlc3Rf
aWQuZW5kc3dpdGgoIl9fZGlyX18iKToKQEAgLTcyMiw4ICs3NTksNyBAQCBjbGFzcyBUZXN0Rmls
ZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQK
ICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2Uoc3VidGVzdF9pZCwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5kZWNvZGUoInV0ZjgiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3VidGVzdF9pZCA9IGVuc3VyZV90ZXh0KHN1YnRlc3RfaWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpdGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZC5nZXRfc3VidGVzdChzdWJ0
ZXN0X2lkKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHByb3AgPT0gInN0YXR1cyI6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMmI4OTRjYjc0ZDRlYzA5MTkzMWJmNDE3YzkyZDViZWEwNzFjYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQpAQCAtMCwwICsxLDExIEBA
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBzaXgKKworCitkZWYgY2FzdF9lbnYoZW52KToKKyAgICAi
IiJFbmNvZGUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgYXMgdGhlIGFwcHJvcHJpYXRlIHR5
cGUgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24KKyAgICBUaGlzIGFzc3VtZXMgdGhhdCBhbGwgdGhl
IGRhdGEgaXMgb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIFVURjgiIiIKKworICAgIGVudl90eXBl
ID0gc2l4LmVuc3VyZV9iaW5hcnkgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgZWxzZSBzaXgu
ZW5zdXJlX3N0cgorICAgIHJldHVybiB7ZW52X3R5cGUoa2V5KTogZW52X3R5cGUodmFsdWUpIGZv
ciBrZXksIHZhbHVlIGluIHNpeC5pdGVyaXRlbXMoZW52KX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9wcm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQppbmRleCBlMzExNzA0
MjcwOWY5OWY0ZTA0NDNkYzBkZmFmNTYxYWQwYjU0OGIwLi5hYmQ4NDA5NGJiMzNkYmQxM2IzNTk0
YTdhY2JlODQ2NzUxMmE5OWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGlt
cG9ydGxpYgogaW1wb3J0IGltcAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5i
cm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJv
ZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRpcGxpZXIgPSBnZXRh
dHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAgICAgICAgc2VsZi5l
eGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xzX25hbWUgaW4g
ZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xz
X25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgogICAgICAgICAgICAgY2xzID0g
Z2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQogICAgICAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFz
c2VzW3Rlc3RfdHlwZV0gPSBjbHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggYzA2ZjdlNWU5ZDZiMTBiNGU2
MTljOTVhNjI0MTdlNTJhNTk2YmU1My4uM2Y4OTg5NzI5ZmRlMGVlNDVjZjc4M2JjNjk4MzA3ZTM4
Yzg0NGQ5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBvcnQgaW8KIGltcG9ydCBv
cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBm
cm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBK
U09ORm9ybWF0dGVyCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vzc19yZXN1bHRzKGxv
ZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRlci5o
YW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhhbmRs
ZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAg
ICAgaWYgaXNfaW5jb25zaXN0ZW50KHRlc3RbInN0YXR1cyJdLCBpdGVyYXRpb25zKToKICAgICAg
ICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgTm9uZSwgdGVzdFsic3RhdHVz
Il0sIFtdKSkKLSAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0
ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGlu
IGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKICAgICAgICAgICAgIGlmIGlzX2luY29uc2lz
dGVudChzdWJ0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAgICAgICAgICAgICAgICAgaW5j
b25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RbInN0YXR1
cyJdLCBzdWJ0ZXN0WyJtZXNzYWdlcyJdKSkKIApAQCAtMjA4LDcgKzIwOSw3IEBAIGRlZiB3cml0
ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVyPU5vbmUsIHVzZV9k
ZXRhaWxzPUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3RzIiBpZiBsZW4ocmVzdWx0cykgPiAxCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRlc3QiKSkKIAotICAgIGZvciB0
ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9uYW1l
LCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYmFzZXVybCA9ICJodHRwOi8v
dzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMiIGluIG9zLnBhdGgu
c3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAgICAgICAgIGJhc2V1
cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0yMzYsNyArMjM3LDcg
QEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVyYXRpb25zLCBwcl9udW1iZXI9
Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogCiAKIGRlZiBydW5fc3RlcChsb2dnZXIsIGl0ZXJh
dGlvbnMsIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFzLCAqKmt3YXJncyk6
Ci0gICAgaW1wb3J0IHdwdHJ1bm5lcgorICAgIGZyb20gLiBpbXBvcnQgd3B0cnVubmVyCiAgICAg
a3dhcmdzID0gY29weS5kZWVwY29weShrd2FyZ3MpCiAKICAgICBpZiByZXN0YXJ0X2FmdGVyX2l0
ZXJhdGlvbjoKQEAgLTI3OCw3ICsyNzksNyBAQCBkZWYgZ2V0X3N0ZXBzKGxvZ2dlciwgcmVwZWF0
X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBrd2FyZ3NfZXh0cmFzKToKICAgICBmb3Iga3dhcmdzX2V4
dHJhIGluIGt3YXJnc19leHRyYXM6CiAgICAgICAgIGlmIGt3YXJnc19leHRyYToKICAgICAgICAg
ICAgIGZsYWdzX3N0cmluZyA9ICIgd2l0aCBmbGFncyAlcyIgJSAiICIuam9pbigKLSAgICAgICAg
ICAgICAgICAiJXM9JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBrd2FyZ3NfZXh0cmEuaXRlcml0ZW1z
KCkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1z
KGt3YXJnc19leHRyYSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcg
PSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IGZhNTRjYTM2MTU3NjMxOGNiMzVlYzcxNmExYTE1OWJk
YjUzMmU2YzguLjNhMjZlZmM1NTQyMTFhNTI0OGE3OTA5MDlkOTk4OTNhZmU5ZmY2NzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
bG9hZGVyLnB5CkBAIC01LDYgKzUsOCBAQCBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJh
Y3RtZXRob2QKIGZyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQogZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBv
cnQgUXVldWUKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfYmluYXJ5LCBpdGVyaXRlbXMKK2Zyb20g
c2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQog
ZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCkBAIC0xNSw2ICsxNyw3IEBAIG1hbmlmZXN0
ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93bmxvYWRfZnJvbV9naXRodWIgPSBO
b25lCiAKKwogZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogICAgICMgVGhpcyByZWxpZXMgb24g
YW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIGhhdmluZyBzZXQgdGhlIHN5cy5wYXRoIGNvcnJlY3Rs
eSA6KAogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBkb3dubG9hZF9mcm9t
X2dpdGh1YgpAQCAtMjQsMTIgKzI3LDEzIEBAIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToKIAog
CiBjbGFzcyBUZXN0Q2h1bmtlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3Rh
bF9jaHVua3MsIGNodW5rX251bWJlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsX2No
dW5rcywgY2h1bmtfbnVtYmVyLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYudG90YWxfY2h1bmtz
ID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYuY2h1bmtfbnVtYmVyID0gY2h1bmtfbnVtYmVy
CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rX251bWJlciA8PSBzZWxmLnRvdGFsX2NodW5rcwog
ICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRfbG9nZ2VyKCkKICAg
ICAgICAgYXNzZXJ0IHNlbGYubG9nZ2VyCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFVuY2h1bmtlZChUZXN0Q2h1bmtl
cik6CiAgICAgICAgIFRlc3RDaHVua2VyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykK
ICAgICAgICAgYXNzZXJ0IHNlbGYudG90YWxfY2h1bmtzID09IDEKIAotICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBtYW5pZmVzdCk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0LCAqKmt3
YXJncyk6CiAgICAgICAgIGZvciBpdGVtIGluIG1hbmlmZXN0OgogICAgICAgICAgICAgeWllbGQg
aXRlbQogCkBAIC00OSw3ICs1Myw3IEBAIGNsYXNzIEhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9
IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQogICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgs
IHRlc3RzIGluIG1hbmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNSh0ZXN0
X3BhdGgpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
ZW5zdXJlX2JpbmFyeSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAgICAgICAgICAgICBp
ZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTYyLDggKzY2LDEzIEBAIGNs
YXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToKICAgICAiIiIKICAgICBkZWYg
X19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9IHNlbGYuY2h1
bmtfbnVtYmVyIC0gMQorICAgICAgICBkZXB0aCA9IHNlbGYua3dhcmdzLmdldCgiZGVwdGgiKQog
ICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0OgotICAg
ICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKSku
aGV4ZGlnZXN0KCksIDE2KQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAgICAgICAgICAgICAg
aGFzaF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKS5z
cGxpdChvcy5wYXRoLnNlcCwgZGVwdGgpWzpkZXB0aF0pCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCisgICAg
ICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1KGVuc3VyZV9iaW5hcnkoaGFzaF9wYXRoKSkuaGV4
ZGlnZXN0KCksIDE2KQogICAgICAgICAgICAgaWYgaCAlIHNlbGYudG90YWxfY2h1bmtzID09IGNo
dW5rX2luZGV4OgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0
ZXN0cwogCkBAIC0xMjQsNyArMTMzLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2FkZXIob2JqZWN0KToK
IAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZvciB1cmxf
YmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
dXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgogICAgICAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IHNlbGYubG9hZF9tYW5pZmVzdCh1cmxfYmFzZT11cmxfYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipwYXRocykK
ICAgICAgICAgICAgIHBhdGhfZGF0YSA9IHsidXJsX2Jhc2UiOiB1cmxfYmFzZX0KQEAgLTE1OSw3
ICsxNjgsMTAgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICB0
b3RhbF9jaHVua3M9MSwKICAgICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPTEsCiAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfaHR0cHM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgc2tpcF90aW1l
b3V0PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9xdWljPUZhbHNlLAorICAgICAg
ICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNraXBfaW1w
bGVtZW50YXRpb25fc3RhdHVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdz
PU5vbmUpOgogCiAgICAgICAgIHNlbGYudGVzdF90eXBlcyA9IHRlc3RfdHlwZXMKICAgICAgICAg
c2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvCkBAIC0xNzAsMTYgKzE4MiwyMSBAQCBjbGFzcyBUZXN0
TG9hZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYu
ZGlzYWJsZWRfdGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYuaW5jbHVkZV9odHRwcyA9IGluY2x1
ZGVfaHR0cHMKKyAgICAgICAgc2VsZi5pbmNsdWRlX3F1aWMgPSBpbmNsdWRlX3F1aWMKICAgICAg
ICAgc2VsZi5za2lwX3RpbWVvdXQgPSBza2lwX3RpbWVvdXQKKyAgICAgICAgc2VsZi5za2lwX2lt
cGxlbWVudGF0aW9uX3N0YXR1cyA9IHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzCiAKICAgICAg
ICAgc2VsZi5jaHVua190eXBlID0gY2h1bmtfdHlwZQogICAgICAgICBzZWxmLnRvdGFsX2NodW5r
cyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9IGNodW5rX251bWJl
cgogCisgICAgICAgIGlmIGNodW5rZXJfa3dhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBjaHVu
a2VyX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuY2h1bmtlciA9IHsibm9uZSI6IFVuY2h1bmtl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNoIjogSGFzaENodW5rZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGlyX2hhc2giOiBEaXJlY3RvcnlIYXNoQ2h1bmtlcn1bY2h1bmtf
dHlwZV0odG90YWxfY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaHVua19udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjaHVua2VyX2t3YXJncykKIAogICAg
ICAgICBzZWxmLl90ZXN0X2lkcyA9IE5vbmUKIApAQCAtMjA2LDcgKzIyMyw3IEBAIGNsYXNzIFRl
c3RMb2FkZXIob2JqZWN0KToKICAgICBkZWYgbG9hZF9kaXJfbWV0YWRhdGEoc2VsZiwgdGVzdF9t
YW5pZmVzdCwgbWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKToKICAgICAgICAgcnYgPSBbXQogICAg
ICAgICBwYXRoX3BhcnRzID0gb3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0aCkuc3BsaXQob3MucGF0
aC5zZXApCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocGF0aF9wYXJ0cykgKyAxKToKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6CiAgICAgICAgICAgICBw
YXRoID0gb3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIG9zLnBhdGguc2VwLmpvaW4ocGF0aF9w
YXJ0c1s6aV0pLCAiX19kaXJfXy5pbmkiKQogICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gc2Vs
Zi5kaXJlY3RvcnlfbWFuaWZlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuZGlyZWN0b3J5X21h
bmlmZXN0c1twYXRoXSA9IG1hbmlmZXN0ZXhwZWN0ZWQuZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLApA
QCAtMjM2LDcgKzI1Myw3IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgICAg
IG1hbmlmZXN0X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1zKQogCiAgICAgICAg
IGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3RfaXRlbXM6Ci0gICAg
ICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNlW2l0ZXIodGVzdHMp
Lm5leHQoKS51cmxfYmFzZV0KKyAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5pZmVzdHNf
YnlfdXJsX2Jhc2VbbmV4dChpdGVyKHRlc3RzKSkudXJsX2Jhc2VdCiAgICAgICAgICAgICBtZXRh
ZGF0YV9wYXRoID0gc2VsZi5tYW5pZmVzdHNbbWFuaWZlc3RfZmlsZV1bIm1ldGFkYXRhX3BhdGgi
XQogCiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhID0gc2VsZi5s
b2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFkYXRhX3BhdGgsIHRlc3RfcGF0aCkKQEAg
LTI1Miw4ICsyNjksMTIgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAg
ZW5hYmxlZCA9IG5vdCB0ZXN0LmRpc2FibGVkKCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlu
Y2x1ZGVfaHR0cHMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0gPT0gImh0dHBzIjoK
ICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmluY2x1ZGVfcXVpYyBhbmQgdGVzdC5lbnZpcm9ubWVudFsicXVpYyJdOgorICAgICAgICAgICAg
ICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5za2lwX3RpbWVvdXQgYW5k
IHRlc3QuZXhwZWN0ZWQoKSA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAgICAgZW5hYmxlZCA9
IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLnNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzIGFu
ZCB0ZXN0LmltcGxlbWVudGF0aW9uX3N0YXR1cygpIGluIHNlbGYuc2tpcF9pbXBsZW1lbnRhdGlv
bl9zdGF0dXM6CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgICAgICBr
ZXkgPSAiZW5hYmxlZCIgaWYgZW5hYmxlZCBlbHNlICJkaXNhYmxlZCIKICAgICAgICAgICAgIHRl
c3RzW2tleV1bdGVzdF90eXBlXS5hcHBlbmQodGVzdCkKIApAQCAtMjg0LDYgKzMwNSwxMCBAQCBj
bGFzcyBUZXN0U291cmNlKG9iamVjdCk6CiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywg
Kiprd2FyZ3MpOiAgIyBub3FhOiBOODA1CiAgICAgICAgIHBhc3MKIAorICAgIEBhYnN0cmFjdG1l
dGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5v
cWE6IE44MDUKKyAgICAgICAgcGFzcworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdyb3Vw
X21ldGFkYXRhKGNscywgc3RhdGUpOgogICAgICAgICByZXR1cm4geyJzY29wZSI6ICIvIn0KQEAg
LTMyMiwxNCArMzQ3LDI1IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNvdXJjZSk6CiAgICAg
ICAgICAgICB0ZXN0X3F1ZXVlLnB1dChpdGVtKQogICAgICAgICByZXR1cm4gdGVzdF9xdWV1ZQog
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3VwKGNscywgdGVzdHMsICoq
a3dhcmdzKToKKyAgICAgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgc3Rh
dGUgPSB7fQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0
czoKKyAgICAgICAgICAgIGlmIGNscy5uZXdfZ3JvdXAoc3RhdGUsIHRlc3QsICoqa3dhcmdzKToK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2xzLmdyb3VwX21ldGFkYXRhKHN0YXRlKVsnc2Nv
cGUnXQorICAgICAgICAgICAgZ3JvdXBzW2N1cnJlbnRdLmFwcGVuZCh0ZXN0LmlkKQorICAgICAg
ICByZXR1cm4gZ3JvdXBzCisKIAogY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShUZXN0U291cmNlKToK
ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJn
cyk6CiAgICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHByb2Nlc3NlcyA9IGt3
YXJnc1sicHJvY2Vzc2VzIl0KLSAgICAgICAgcXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiB4
cmFuZ2UocHJvY2Vzc2VzKV0KLSAgICAgICAgbWV0YWRhdGFzID0gW2Nscy5ncm91cF9tZXRhZGF0
YShOb25lKSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAgcXVldWVzID0gW2Rl
cXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQorICAgICAgICBtZXRhZGF0YXMgPSBb
Y2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nlc3NlcyldCiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgaWR4ID0gaGFzaCh0ZXN0LmlkKSAl
IHByb2Nlc3NlcwogICAgICAgICAgICAgZ3JvdXAgPSBxdWV1ZXNbaWR4XQpAQCAtMzQyLDYgKzM3
OCwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgogCiAgICAgICAgIHJl
dHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVzdHNfYnlfZ3Jv
dXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4ge2Nscy5ncm91cF9tZXRh
ZGF0YShOb25lKVsnc2NvcGUnXTogW3QuaWQgZm9yIHQgaW4gdGVzdHNdfQorCiAKIGNsYXNzIFBh
dGhHcm91cGVkU291cmNlKEdyb3VwZWRTb3VyY2UpOgogICAgIEBjbGFzc21ldGhvZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weQppbmRleCA3YjZiZjU3ZDE1OTkyOWNkY2E4N2U5Y2EzMjE2MTA0MDFiMzcxNjZhLi40OWEz
NTI1ZTg4M2QxNWEwNTkwMjJhNTQ5MTFlZWNmNTMxZDgzNmZmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQpAQCAt
MTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IucnVuX3Rlc3QodGVzdCkKICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJh
Y2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiB3YWl0KHNlbGYp
OgpAQCAtMTU4LDcgKzE1OCw3IEBAIGRlZiBzdGFydF9ydW5uZXIocnVubmVyX2NvbW1hbmRfcXVl
dWUsIHJ1bm5lcl9yZXN1bHRfcXVldWUsCiAgICAgd2l0aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dn
ZXIsIGNhcHR1cmVfc3RkaW8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBicm93c2VyID0g
ZXhlY3V0b3JfYnJvd3Nlcl9jbHMoKipleGVjdXRvcl9icm93c2VyX2t3YXJncykKLSAgICAgICAg
ICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGJyb3dzZXIsICoqZXhlY3V0b3Jfa3dhcmdzKQor
ICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMobG9nZ2VyLCBicm93c2VyLCAqKmV4
ZWN1dG9yX2t3YXJncykKICAgICAgICAgICAgIHdpdGggVGVzdFJ1bm5lcihsb2dnZXIsIHJ1bm5l
cl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRvcikgYXMgcnVubmVy
OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcnVubmVyLnJ1bigp
CkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHRlc3RfcXVldWUsIHRl
c3Rfc291cmNlX2NscywgYnJvd3Nlcl9jbHMsIGJyb3dzZXJfa3dhcmdzLAogICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9jbHMsIGV4ZWN1dG9yX2t3YXJncywgc3RvcF9mbGFnLCByZXJ1bj0xLCBw
YXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVj
dGVkPUZhbHNlLCByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLAot
ICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgorICAgICAgICAgICAgICAgICBj
YXB0dXJlX3N0ZGlvPVRydWUsIHJlY29yZGluZz1Ob25lKToKICAgICAgICAgIiIiVGhyZWFkIHRo
YXQgb3ducyBhIHNpbmdsZSBUZXN0UnVubmVyIHByb2Nlc3MgYW5kIGFueSBwcm9jZXNzZXMgcmVx
dWlyZWQKICAgICAgICAgYnkgdGhlIFRlc3RSdW5uZXIgKGUuZy4gdGhlIEZpcmVmb3ggYmluYXJ5
KS4KIApAQCAtMzE4LDYgKzMxOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCiAKICAgICAg
ICAgc2VsZi5tYW5hZ2VyX251bWJlciA9IG5leHRfbWFuYWdlcl9udW1iZXIoKQorICAgICAgICBh
c3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCiAKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQogICAgICAgICBz
ZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKQEAgLTM1MCw2ICszNTIsNyBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgbWF5IGFsc28gaGF2ZSBh
IHN0b3AgZmxhZyBzZXQgYnkgdGhlIG1haW4gdGhyZWFkIGluZGljYXRpbmcKICAgICAgICAgdGhh
dCB0aGUgbWFuYWdlciBzaG91bGQgc2h1dCBkb3duIHRoZSBuZXh0IHRpbWUgdGhlIGV2ZW50IGxv
b3AKICAgICAgICAgc3BpbnMuIiIiCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3Ry
dW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWRsb2cu
U3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5icm93
c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBhcyBicm93c2VyOgog
ICAgICAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nlck1hbmFnZXIoc2VsZi5sb2dnZXIsCkBA
IC0zOTAsOCArMzkzLDggQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBuZXdfc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIm5ldyBzdGF0ZTogJXMiICUgc2VsZi5zdGF0ZS5fX2NsYXNzX18uX19uYW1lX18p
Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3RSdW5uZXJNYW5hZ2Vy
IG1haW4gbG9vcCB0ZXJtaW5hdGluZywgc3RhcnRpbmcgY2xlYW51cCIpCkBAIC00NjcsNiArNDcw
LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKICAgICBk
ZWYgc3RhcnRfaW5pdChzZWxmKToKICAgICAgICAgdGVzdCwgdGVzdF9ncm91cCwgZ3JvdXBfbWV0
YWRhdGEgPSBzZWxmLmdldF9uZXh0X3Rlc3QoKQorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImluaXQiXSkKICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIFJ1bm5lck1hbmFnZXJTdGF0ZS5zdG9wKCkKICAgICAgICAgZWxzZToKQEAg
LTU1Niw2ICs1NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFk
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnN0YXRlLnRlc3RfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5zdGF0ZS5ncm91cF9tZXRhZGF0YSkKIAorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInRlc3QiXSArIHNlbGYuc3RhdGUudGVzdC5pZC5z
cGxpdCgiLyIpWzE6XSkKICAgICAgICAgc2VsZi5sb2dnZXIudGVzdF9zdGFydChzZWxmLnN0YXRl
LnRlc3QuaWQpCiAgICAgICAgIGlmIHNlbGYucmVydW4gPiAxOgogICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiUnVuICVkLyVkIiAlIChzZWxmLnJ1bl9jb3VudCwgc2VsZi5yZXJ1bikpCkBA
IC02NzIsNiArNjc3LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdWJ0ZXN0X3VuZXhwZWN0ZWQg
b3IgaXNfdW5leHBlY3RlZCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucmVzdGFydF9vbl91bmV4cGVjdGVkKSkKIAorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImFmdGVyLXRlc3QiXSkKICAgICAgICAgaWYgKG5vdCBmaWxlX3Jlc3Vs
dC5zdGF0dXMgPT0gIkNSQVNIIiBhbmQKICAgICAgICAgICAgIHNlbGYucGF1c2VfYWZ0ZXJfdGVz
dCBvcgogICAgICAgICAgICAgKHNlbGYucGF1c2Vfb25fdW5leHBlY3RlZCBhbmQgKHN1YnRlc3Rf
dW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSkpOgpAQCAtNzIwLDYgKzcyNiw3IEBAIGNsYXNz
IFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAgZGVmIHN0b3BfcnVu
bmVyKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIiIiU3RvcCB0aGUgVGVzdFJ1bm5lciBh
bmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIiIgorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0
ZXN0cnVubmVyIiwgInN0b3BfcnVubmVyIl0pCiAgICAgICAgIGlmIHNlbGYudGVzdF9ydW5uZXJf
cHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTczOCw2ICs3NDUsNyBAQCBj
bGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5y
ZW1vdGVfcXVldWUuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUgPSBOb25lCiAg
ICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gTm9uZQorICAgICAgICBzZWxmLnJlY29yZGluZy5w
YXVzZSgpCiAKICAgICBkZWYgZW5zdXJlX3J1bm5lcl9zdG9wcGVkKHNlbGYpOgogICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiZW5zdXJlX3J1bm5lcl9zdG9wcGVkIikKQEAgLTgyNSw3ICs4MzMs
OCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAgcGF1c2Vf
b25fdW5leHBlY3RlZD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcmVzdGFydF9vbl91bmV4cGVj
dGVkPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRp
bz1UcnVlLAorICAgICAgICAgICAgICAgICByZWNvcmRpbmc9Tm9uZSk6CiAgICAgICAgIHNlbGYu
c3VpdGVfbmFtZSA9IHN1aXRlX25hbWUKICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAg
ICBzZWxmLnRlc3Rfc291cmNlX2NscyA9IHRlc3Rfc291cmNlX2NscwpAQCAtODQwLDYgKzg0OSw4
IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3QpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8g
PSBkZWJ1Z19pbmZvCiAgICAgICAgIHNlbGYucmVydW4gPSByZXJ1bgogICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8gPSBjYXB0dXJlX3N0ZGlvCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUKIAogICAgICAgICBz
ZWxmLnBvb2wgPSBzZXQoKQogICAgICAgICAjIEV2ZW50IHRoYXQgaXMgcG9sbGVkIGJ5IHRocmVh
ZHMgc28gdGhhdCB0aGV5IGNhbiBncmFjZWZ1bGx5IGV4aXQgaW4gdGhlIGZhY2UKQEAgLTg3Nyw3
ICs4ODgsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVy
ZV9zdGRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
b3JkaW5nPXNlbGYucmVjb3JkaW5nKQogICAgICAgICAgICAgbWFuYWdlci5zdGFydCgpCiAgICAg
ICAgICAgICBzZWxmLnBvb2wuYWRkKG1hbmFnZXIpCiAgICAgICAgIHNlbGYud2FpdCgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVjZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5CmluZGV4IDA2YTU2NDFkNTBmYmJh
ZWQ0ZGU5ZGY1MTFjNTY3NzUzZWYxYTMyNmQuLmUxZTE4ZWM1ZTljZDIxZGFhODlmOTE3NjkwYWQx
Mjg1MmY5YTI4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0
X3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5
CkBAIC0xLDkgKzEsMTAgQEAKIGltcG9ydCBzeXMKLWZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwg
ZGlybmFtZQogCiBpbXBvcnQgbW9jawogaW1wb3J0IHB5dGVzdAogCitmcm9tIG9zLnBhdGggaW1w
b3J0IGpvaW4sIGRpcm5hbWUKKwogc3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2Zp
bGVfXyksICIuLiIsICIuLiIsICIuLiIpKQogCiBzYXVjZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAo
IndwdHJ1bm5lci5icm93c2Vycy5zYXVjZSIpCkBAIC05NSw3ICs5Niw2IEBAIGRlZiB0ZXN0X3Nh
dWNlY29ubmVjdF9jbGVhbnVwKCk6CiAKICAgICAgICAgc2xlZXAuYXNzZXJ0X2NhbGxlZCgpCiAK
LQogZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfbmV2ZXJfcmVhZHkoKToKICAgICB3aXRo
IG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLlNhdWNlQ29ubmVjdCwgInVwbG9hZF9wcmVydW5fZXhl
YyIpLFwKICAgICAgICAgICAgIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLnN1YnByb2Nlc3MsICJQ
b3BlbiIpIGFzIFBvcGVuLFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4
cGVjdGVkdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weQpp
bmRleCAyMzA4YmU5NTkwZTkwMDRmNDFhNDkyNjgyZDE4N2E3YjRmYzU3MjMxLi5kNzEyMzdhNDJk
YWQ1OGM2OWI2ODZlNjA0MGI2NWY0MDA2NGM5NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
ZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDcgKzEsMyBAQAotaW1wb3J0IHN5cwotCi1pbXBvcnQgcHl0
ZXN0Ci0KIGZyb20gLi4gaW1wb3J0IGV4cGVjdGVkdHJlZSwgbWV0YWRhdGEKIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTMyLDggKzI4LDYgQEAgZGVmIHJlc3VsdHNf
b2JqZWN0KHJlc3VsdHMpOgogICAgIHJldHVybiByZXN1bHRzX29iagogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMCgp
OgogICAgICMgUGFzcyBpZiBkZWJ1ZwogICAgIHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAi
dmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiRkFJTCIpLApAQCAtNTMsOCArNDcs
NiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzAoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUp
ID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgIyBQYXNzIGlmIGxpbnV4IG9yIHdp
bmRvd3MgMTAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAiMTgu
MDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTc3LDggKzY5LDYgQEAgZGVmIHRlc3Rf
YnVpbGRfdHJlZV8xKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X2J1aWxkX3RyZWVfMigpOgogICAgICMgRmFpbHMgaW4gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9u
CiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRl
YnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC0xMDQsOCArOTQsNiBAQCBkZWYgdGVzdF9idWlsZF90
cmVlXzIoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRf
dHJlZV8zKCk6CiAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAi
MTguMDQiLCAiZGVidWciOiBUcnVlLCAidW51c2VkIjogRmFsc2V9LCAiUEFTUyIpLApAQCAtMTE4
LDggKzEwNiw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMygpOgogICAgIGFzc2VydCBkdW1wX3Ry
ZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzQoKToKICAgICAjIENoZWNrIGNvdW50
cyBmb3IgbXVsdGlwbGUgc3RhdHVzZXMKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4Iiwg
InZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBGYWxzZX0sICJGQUlMIiksCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA3MmYzYTU5MWFkN2Y5MDUzMjY3MWNjYjg5N2Rm
Y2IxNjFiYzhmNDVkLi42MGIxYjBhNWE4NzhjZGE5YzUwMGVhYWUyNWYzZmU4OWVhZGY4MTljIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAgLTcsNiArNyw3IEBAIGltcG9y
dCBtb2NrCiBmcm9tIG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVyZWRsb2cKIAogZnJv
bSAuLmZvcm1hdHRlcnMgaW1wb3J0IHdwdHJlcG9ydAorZnJvbSAuLmZvcm1hdHRlcnMud3B0c2Ny
ZWVuc2hvdCBpbXBvcnQgV3B0c2NyZWVuc2hvdEZvcm1hdHRlcgogZnJvbSAuLmZvcm1hdHRlcnMu
d3B0cmVwb3J0IGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKIAogCkBAIC0xNjYsMyArMTY3LDI2
IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9rbm93bl9pbnRlcm1pdHRlbnQoY2FwZmQpOgogICAgIHN1
YnRlc3QgPSB0ZXN0WyJzdWJ0ZXN0cyJdWzBdCiAgICAgYXNzZXJ0IHN1YnRlc3RbImV4cGVjdGVk
Il0gPT0gdSJQQVNTIgogICAgIGFzc2VydCBzdWJ0ZXN0WyJrbm93bl9pbnRlcm1pdHRlbnQiXSA9
PSBbdSdGQUlMJ10KKworCitkZWYgdGVzdF93cHRzY3JlZW5zaG90X3Rlc3RfZW5kKGNhcGZkKToK
KyAgICBmb3JtYXR0ZXIgPSBXcHRzY3JlZW5zaG90Rm9ybWF0dGVyKCkKKworICAgICMgRW1wdHkK
KyAgICBkYXRhID0ge30KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5v
bmUKKworICAgICMgTm8gaXRlbXMKKyAgICBkYXRhWydleHRyYSddID0geyJyZWZ0ZXN0X3NjcmVl
bnNob3RzIjogW119CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKSBpcyBOb25l
CisKKyAgICAjIEludmFsaWQgaXRlbQorICAgIGRhdGFbJ2V4dHJhJ11bJ3JlZnRlc3Rfc2NyZWVu
c2hvdHMnXSA9IFsibm8gZGljdCBpdGVtIl0KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5k
KGRhdGEpIGlzIE5vbmUKKworICAgICMgUmFuZG9tIGhhc2gKKyAgICBkYXRhWydleHRyYSddWydy
ZWZ0ZXN0X3NjcmVlbnNob3RzJ10gPSBbeyJoYXNoIjogIkhBU0giLCAic2NyZWVuc2hvdCI6ICJE
QVRBIn1dCisgICAgYXNzZXJ0ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsREFUQVxuJyA9PSBmb3Jt
YXR0ZXIudGVzdF9lbmQoZGF0YSkKKworICAgICMgQWxyZWFkeSBjYWNoZWQgaGFzaAorICAgIGFz
c2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggNTI1OTE1ZDE4MzJhYzhhZjE5NTdhNzk5
NjE1OTY5ZTA1OGVlZmNhNS4uZjNlNGNlNzk2YTQ1YzQ3MmE4OGZlMDIyMjc3ZTAzNDdiNGU5ODk0
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0x
LDQgKzEsMyBAQAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQg
cHl0ZXN0CkBAIC02LDggKzUsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBtYW5p
ZmVzdGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5
MyIpCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3RlZCIsIFsKICAgICAo
YiJyZWYuaHRtbDoxOzIwMCIsIFsoInJlZi5odG1sIiwgKCgxLCAxKSwgKDIwMCwgMjAwKSkpXSks
CiAgICAgKGIicmVmLmh0bWw6MC0xOzEwMC0yMDAiLCBbKCJyZWYuaHRtbCIsICgoMCwgMSksICgx
MDAsIDIwMCkpKV0pLApAQCAtMjUsNyArMjIsNyBAQCBmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4
cGVjdGVkCiAgICAgICAoKHUidGVzdC5odG1sIiwgdSJyZWYxLmh0bWwiLCAiPT0iKSwgKCg1LDEw
KSwgKDEwMCwgMTAwKSkpXSksCiBdKQogZGVmIHRlc3RfZnV6enkoZnV6enksIGV4cGVjdGVkKToK
LSAgICBkYXRhID0gIiIiCisgICAgZGF0YSA9IGIiIiIKIFt0ZXN0Lmh0bWxdCiAgIGZ1enp5OiAl
cyIiIiAlIGZ1enp5CiAgICAgZiA9IEJ5dGVzSU8oZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0
YWJpbGl0eS5weQppbmRleCA0NzQwNTZkZGU2YzY3YmIwYWFkMjEwMDYxM2U2Y2EzMzE5NjIzOTYy
Li45YThmY2NmOTM1YTEzNmM2MDUwZTg1MmY5YTU3MDQxMzhiMGQzZjQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CkBAIC0xLDUgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgc3Rh
YmlsaXR5Ci0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGlj
dAogCiBkZWYgdGVzdF9pc19pbmNvbnNpc3RlbnQoKToKICAgICBhc3NlcnQgc3RhYmlsaXR5Lmlz
X2luY29uc2lzdGVudCh7IlBBU1MiOiAxMH0sIDEwKSBpcyBGYWxzZQpAQCAtMjksMyArMjksMTE0
IEBAIGRlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKICAgICAgICAgInRpbWVvdXQiOiAxMDB9
KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgc3RhYmlsaXR5LmZpbmRfc2xvd19zdGF0dXMoewogICAg
ICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiU0tJUCI6IDB9fSkgaXMgTm9uZQorCisKK2RlZiB0
ZXN0X2dldF9zdGVwcygpOgorICAgIGxvZ2dlciA9IE5vbmUKKworICAgIHN0ZXBzID0gc3RhYmls
aXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFtdKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09
IDAKKworICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFt7fV0p
CisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgcmVwZWF0X2xvb3AgPSAxCisgICAg
ZmxhZ19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICd5JworICAgIHN0ZXBzID0gc3Rh
YmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCAwLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkKKyAgICBhc3NlcnQg
bGVuKHN0ZXBzKSA9PSAxCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3Rz
IGluIGEgbG9vcCAlZCB0aW1lcyB3aXRoIGZsYWdzICVzPSVzIiAlICgKKyAgICAgICAgcmVwZWF0
X2xvb3AsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkKKworICAgIHJlcGVhdF9sb29wID0gMAorICAg
IHJlcGVhdF9yZXN0YXJ0ID0gMQorICAgIGZsYWdfbmFtZSA9ICdmbGFnJworICAgIGZsYWdfdmFs
dWUgPSAnbicKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRf
bG9vcCwgcmVwZWF0X3Jlc3RhcnQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2ZsYWdfbmFtZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDEKKyAg
ICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVz
dGFydHMgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAgIHJlcGVhdF9yZXN0
YXJ0LCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9vcCA9IDEwCisgICAg
cmVwZWF0X3Jlc3RhcnQgPSA1CisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dl
ciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbe31dKQorICAgIGFzc2VydCBsZW4oc3Rl
cHMpID09IDIKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBs
b29wICVkIHRpbWVzIiAlIHJlcGVhdF9sb29wCisgICAgYXNzZXJ0IHN0ZXBzWzFdWzBdID09ICgK
KyAgICAgICAgIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVzdGFydHMgJWQgdGltZXMi
ICUgcmVwZWF0X3Jlc3RhcnQpCisKKworZGVmIHRlc3RfbG9nX2hhbmRsZXIoKToKKyAgICBoYW5k
bGVyID0gc3RhYmlsaXR5LkxvZ0hhbmRsZXIoKQorICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCisg
ICAgZGF0YVsidGVzdCJdID0gInRlc3RfbmFtZSIKKyAgICB0ZXN0ID0gaGFuZGxlci5maW5kX29y
X2NyZWF0ZV90ZXN0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN1YnRlc3RzIl0gPT0gT3JkZXJl
ZERpY3QoKQorICAgIGFzc2VydCB0ZXN0WyJzdGF0dXMiXSA9PSBkZWZhdWx0ZGljdChpbnQpCisg
ICAgYXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXSA9PSBkZWZhdWx0ZGljdChmbG9hdCkK
KyAgICBhc3NlcnQgdGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKwor
ICAgIHN0YXJ0X3RpbWUgPSAxMDAKKyAgICBkYXRhWyJ0aW1lIl0gPSBzdGFydF90aW1lCisgICAg
aGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN0YXJ0X3RpbWUiXSA9
PSBzdGFydF90aW1lCisKKyAgICBkYXRhWyJzdWJ0ZXN0Il0gPSAic3VidGVzdF9uYW1lIgorICAg
IHN1YnRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkKKyAgICBhc3Nl
cnQgc3VidGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50KQorICAgIGFzc2VydCBzdWJ0
ZXN0WyJtZXNzYWdlcyJdID09IHNldCgpCisgICAgYXNzZXJ0IHN1YnRlc3QgPT0gaGFuZGxlci5m
aW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisKKyAgICBkYXRhWyJzdGF0dXMiXSA9IDAKKyAg
ICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDAKKyAgICBoYW5k
bGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFb
InN0YXR1cyJdXSA9PSAxCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2Vy
dCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMgorICAgIGRhdGFbInN0YXR1
cyJdID0gMQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0g
MAorICAgIG1lc3NhZ2UgPSAidGVzdCBtZXNzYWdlIgorICAgIGRhdGFbIm1lc3NhZ2UiXSA9IG1l
c3NhZ2UKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3Rb
InN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgYXNzZXJ0IGxlbihzdWJ0ZXN0WyJt
ZXNzYWdlcyJdKSA9PSAxCisgICAgYXNzZXJ0IG1lc3NhZ2UgaW4gc3VidGVzdFsibWVzc2FnZXMi
XQorCisgICAgdGVzdF9kdXJhdGlvbiA9IDEwCisgICAgZGF0YVsidGltZSJdID0gZGF0YVsidGlt
ZSJdICsgdGVzdF9kdXJhdGlvbgorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9PSB0ZXN0X2R1cmF0
aW9uCisgICAgYXNzZXJ0ICJ0aW1lb3V0IiBub3QgaW4gdGVzdAorCisgICAgZGF0YVsidGVzdDIi
XSA9ICJ0ZXN0X25hbWVfMiIKKyAgICB0aW1lb3V0ID0gNQorICAgIGRhdGFbImV4dHJhIl0gPSB7
fQorICAgIGRhdGFbImV4dHJhIl1bInRlc3RfdGltZW91dCJdID0gdGltZW91dAorICAgIGhhbmRs
ZXIudGVzdF9zdGFydChkYXRhKQorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsidGltZW91dCJdID09IHRpbWVvdXQgKiAxMDAwCisKKworZGVmIHRlc3RfZXJyX3N0
cmluZygpOgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnT0sn
OiAxLCB1J0ZBSUwnOiAxfSwgMSkgPT0gdSIqKkR1cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUqKiIKKyAg
ICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMiwgdSdGQUlM
JzogMX0sIDIpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioiCisgICAgYXNzZXJ0IHN0
YWJpbGl0eS5lcnJfc3RyaW5nKHt1J1NLSVAnOiAxfSwgMCkgPT0gdSJEdXBsaWNhdGUgc3VidGVz
dCBuYW1lIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnU0tJ
UCc6IDEsIHUnT0snOiAxfSwgMSkgPT0gdSJEdXBsaWNhdGUgc3VidGVzdCBuYW1lIgorCisgICAg
YXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlMJzogMX0sIDIpID09
IHUiKipGQUlMOiAxLzIsIE1JU1NJTkc6IDEvMioqIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJy
X3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnT0snOiAxfSwgMykgPT0gdSIqKkZBSUw6
IDEvMywgT0s6IDEvMywgTUlTU0lORzogMS8zKioiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVy
cl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMSwgdSdGQUlMJzogMX0sIDIpID09IHUiKipGQUlM
OiAxLzIsIE9LOiAxLzIqKiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxfSwgNCkgPT0gdSJGQUlMOiAx
LzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxLCB1J09LJzogMn0sIDQpID09IHUiRkFJ
TDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRl
ci5weQppbmRleCBlODU3Y2Q0M2RiNmQyODFmOTU0MTQyMzBmNTJjOTg0YWFkOTE1MTE4Li44MzYw
MDNkMTA2MDM4YWI0MzAzMDM1ZWVjY2EzMTc3NGM5YTI2Y2UxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3Rlc3Rsb2FkZXIucHkKQEAgLTIwLDggKzIwLDYgQEAgc2tpcDogdHJ1ZQogCiBAcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVkIG9uIFdpbjMyIikK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF9maWx0ZXJfdW5pY29kZSgpOgogICAgIHRlc3RzID0gbWFrZV9tb2NrX21hbmlmZXN0
KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRl
LnB5CmluZGV4IDVkOTAwYTNkNmM5Y2QyMzY5NmZlMGQyYjdjMjBkOGZmNTE0MmI5ZTUuLjZkYzA0
Y2VkZjM0YzdhOGZiNjY3M2YxYzVmNDc3ZDA1NjFlYjFmZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91
cGRhdGUucHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRs
b2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3Mu
cGFyZGlyLCBvcy5wYXJkaXIpKQotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0g
YXMgbWFuaWZlc3RfaXRlbQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0gYXMg
bWFuaWZlc3RfaXRlbSwgdXRpbHMKIAogCiBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3Bh
dGgpOgpAQCAtMjEsNyArMjEsOSBAQCBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3BhdGgp
OgogCiAKIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqYXJncyk6Ci0g
ICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQoIi8iKSkKKyAgICBwYXRoID0gdXRpbHMudG9fb3NfcGF0aChw
YXRoKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgcmVsX3BhdGhfcGFydHM9cGF0
aF9wYXJ0cywgaGFzaD1oYXNoKQogICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIs
IHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHBhdGgpLCAqYXJncykKICAgICBzLm1hbmlmZXN0X2l0ZW1z
ID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0ZW1fdHlwZSwgW3Rlc3RdKSkKICAgICBy
ZXR1cm4gcwpAQCAtMjksNyArMzEsNiBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhh
c2gsIGNscywgKmFyZ3MpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJuZXNzIjogbWFuaWZl
c3RfaXRlbS5UZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBtYW5p
ZmVzdF9pdGVtLlJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rfbm9kZSI6IG1hbmlm
ZXN0X2l0ZW0uUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAgIm1hbnVhbCI6IG1hbmlmZXN0
X2l0ZW0uTWFudWFsVGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjogbWFuaWZlc3RfaXRl
bS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAgICAgICAgICAiY29uZm9ybWFuY2VjaGVja2Vy
IjogbWFuaWZlc3RfaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LApAQCAtNjcsMTEgKzY4LDEy
IEBAIGRlZiB1cGRhdGUodGVzdHMsICpsb2dzLCAqKmt3YXJncyk6CiAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlX2Zyb21fbG9nKGxvZykKIAogICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gKFsiZGVidWci
LCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQorICAgICAgICAgICAg
ICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJdfSkK
IAogICAgIGV4cGVjdGVkX2RhdGEgPSB7fQogICAgIG1ldGFkYXRhLmxvYWRfZXhwZWN0ZWQgPSBs
YW1iZGEgXywgX18sIHRlc3RfcGF0aCwgKmFyZ3M6IGV4cGVjdGVkX2RhdGEuZ2V0KHRlc3RfcGF0
aCkKICAgICBmb3IgdGVzdF9wYXRoLCB0ZXN0X2lkcywgdGVzdF90eXBlLCBtYW5pZmVzdF9zdHIg
aW4gdGVzdHM6CisgICAgICAgIHRlc3RfcGF0aCA9IHV0aWxzLnRvX29zX3BhdGgodGVzdF9wYXRo
KQogICAgICAgICBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0gPSBtYW5pZmVzdHVwZGF0ZS5jb21w
aWxlKEJ5dGVzSU8obWFuaWZlc3Rfc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLApAQCAtMTA5LDcg
KzExMSw3IEBAIGRlZiBjcmVhdGVfbG9nKGVudHJpZXMpOgogICAgICAgICAgICAgZ2V0YXR0cihs
b2dnZXIsIGFjdGlvbikoKiprd2FyZ3MpCiAgICAgICAgIGxvZ2dlci5yZW1vdmVfaGFuZGxlciho
YW5kbGVyKQogICAgIGVsc2U6Ci0gICAgICAgIGpzb24uZHVtcChlbnRyaWVzLCBkYXRhKQorICAg
ICAgICBkYXRhLndyaXRlKGpzb24uZHVtcHMoZW50cmllcykuZW5jb2RlKCkpCiAgICAgZGF0YS5z
ZWVrKDApCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtMTMzLDExICsxMzUsOSBAQCBkZWYgY3JlYXRl
X3Rlc3RfbWFuaWZlc3QodGVzdHMsIHVybF9iYXNlPSIvIik6CiAgICAgcmV0dXJuIG0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC0x
NTUsMTEgKzE1NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgYXNzZXJ0IHVwZGF0ZWRb
MF1bMV0uaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTc4LDExICsxNzYsOSBAQCBkZWYgdGVzdF91cGRhdGVfMSgp
OgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0u
Z2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9rbm93
bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAg
ICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFBBU1Mi
IiIpXQogCkBAIC0yMTksMTEgKzIxNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1p
dHRlbnRfMSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBB
U1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgdGVzdHMg
PSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAg
ICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0
ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTI0NCwxMSArMjM4LDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgICAgICJleHBlY3RlZCIs
IGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93bl9pbnRl
cm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAg
ICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0i
IiIpXQogCkBAIC0yODcsMTEgKzI3OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93
bl9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykg
PT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlvdXNfaW50
ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxd
IiIiKV0KIApAQCAtMzM1LDggKzMyNSw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlv
dXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8p
ID09IFsiUEFTUyIsICJFUlJPUiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50
KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBOb25lKV0KIApAQCAtMzc0LDggKzM2Miw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9uZXdf
dGVzdF93aXRoX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1
bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2V4cGVjdGVkX3RpZV9yZXNvbHV0
aW9uKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCBOb25lKV0KIApAQCAtNDAzLDExICszODksOSBAQCBkZWYgdGVzdF91cGRhdGVf
ZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9y
dW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KIApAQCAt
NDQ2LDEwICs0MzAsOCBAQCBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZCgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFu
ZHJvaWQiOiBbUEFTUywgRkFJTF0KQEAgLTQ4OSwxMSArNDcxLDkgQEAgZGVmIHRlc3RfdXBkYXRl
X2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dp
dGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC01MTQsMTAgKzQ5NCw4IEBA
IGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9z
dGF0dXMoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkVSUk9S
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIi
IiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFT
UywgRkFJTF0iIiIpXQpAQCAtNTQ5LDEwICs1MjcsOCBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJt
aXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18x
KSA9PSBbIlBBU1MiLCAiVElNRU9VVCIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRl
cm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0K
ICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0iIiIpXQpA
QCAtNTg0LDExICs1NjAsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRlcm1pdHRl
bnRfd2l0aF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09
IFsiUEFTUyIsICJUSU1FT1VUIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGwoKToKICAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0g
ICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0K
ICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBU
SU1FT1VUXQpAQCAtNjI0LDExICs1OTgsOSBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50
X2Z1bGwoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVQsIFBBU1Nd
CkBAIC02NzUsMTEgKzY0Nyw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbF9y
ZW1vdmUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfZnVsbF91cGRhdGUoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAg
aWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNzE1LDExICs2ODUsOSBAQCBkZWYg
dGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZv
KSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMi
LAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5
MyIpCiBkZWYgdGVzdF9mdWxsX29ycGhhbigpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEZBSUwKICAgICBbc3Vic3ViIHRlc3RdCkBAIC03NDgsMTEgKzcxNiw5IEBAIGRlZiB0ZXN0
X2Z1bGxfb3JwaGFuKCk6CiAgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVz
dF9pZCkuY2hpbGRyZW4pID09IDEKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRp
dGlvbnMoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0g
Im1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtODA5LDExICs3NzUsOSBAQCBkZWYgdGVzdF91cGRh
dGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICAgICAgImV4cGVjdGVk
IiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3NraXBfMCgpOgogICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwK
LSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRt
XQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04MjksMTAgKzc5Myw4
IEBAIGRlZiB0ZXN0X3NraXBfMCgpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X25ld19zdWJ0
ZXN0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04NTQsMTAgKzgxNiw4IEBAIGRlZiB0ZXN0X25l
d19zdWJ0ZXN0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5j
aGlsZHJlblsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1d
CiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTg5MywxMCArODUzLDgg
QEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICAgICAgImV4cGVjdGVkIiwgeyJk
ZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRp
cGxlXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTkzNywxMCArODk1LDggQEAgZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMykgPT0g
IkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTk3Nywx
MCArOTMzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKICAgICAgICAgImV4cGVj
dGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzMoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3Rl
ZDoKICAgICAgIGlmIGRlYnVnOiBGQUlMCkBAIC0xMDE5LDEwICs5NzMsOCBAQCBkZWYgdGVzdF91
cGRhdGVfbXVsdGlwbGVfMygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAi
VElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAot
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBkZWJ1
ZzogVElNRU9VVApAQCAtMTA2MSw4ICsxMDEzLDYgQEAgZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9l
eGlzdGluZygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiTk9UUlVOIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9uZXdfdGVzdCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTEwODUsMTAgKzEwMzUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9f
MSkgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExMDcsMTAgKzEwNTUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfZHVwbGljYXRlKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZv
XzEpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTI5LDEw
ICsxMDc1LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0ZW50KCk6CiAgICAg
ICAgICJkaXNhYmxlZCIsIHJ1bl9pbmZvXzEpID09ICJTb21lIG1lc3NhZ2UiCiAKIAotQHB5dGVz
dC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICBy
ZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3N0
YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExNjUsMTAgKzExMDksOCBAQCBk
ZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmlsaXR5KCk6CiAgICAg
ICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6CiAgICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTIxNywxMCArMTE1OSw4IEBAIGRlZiB0
ZXN0X3VwZGF0ZV9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJF
UlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiByZWxlYXNlX29y
X2JldGE6IEVSUk9SCkBAIC0xMjYwLDExICsxMjAwLDI5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9mdWxs
X3Vua25vd24oKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkVSUk9SIgog
CiAKK2RlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd25fbWlzc2luZygpOgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KKyAgW3N1YnRlc3RfZGVsZXRlZF0KKyAgICBleHBlY3RlZDoKKyAgICAgIGlmIHJlbGVh
c2Vfb3JfYmV0YTogRVJST1IKKyAgICAgIEZBSUwKKyIiIildCisKKyAgICBsb2dfMCA9IHN1aXRl
X2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0sCisgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAicmVsZWFzZV9vcl9i
ZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGZ1bGxf
dXBkYXRlPVRydWUpCisgICAgYXNzZXJ0IGxlbih1cGRhdGVkKSA9PSAwCisKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1
bHQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAg
ICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBGQUlMCkBAIC0xMjk0LDEwICsxMjUy
LDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5o
dG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VUCkBAIC0xMzI2LDEw
ICsxMjgyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gIm1hYyI6IFRJ
TUVPVVQKQEAgLTEzNTgsMTAgKzEzMTIsOCBAQCBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6
CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xMzgyLDEwICsx
MzM0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6CiAgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czogMgogIiIiKV0KQEAg
LTE0MDYsMTAgKzEzNTYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEoKToK
ICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1h
c3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0
ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3Nl
cnRzOiAyCiAiIiIpXQpAQCAtMTQyNiwxMCArMTM3NCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3Nl
cnRpb25fY291bnRfMigpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRp
b25fY291bnRfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgbWF4
LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDYwLDEwICsxNDA2LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6CiAgICAgYXNzZXJ0IG5ld19t
YW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIiCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBk
YXRlX2Fzc2VydGlvbl9jb3VudF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dIiIiKV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAgICgiYXNzZXJ0aW9uX2Nv
dW50IiwgeyJ0ZXN0IjogdGVzdF9pZCwKQEAgLTE0OTEsMTEgKzE0MzUsOSBAQCBkZWYgdGVzdF91
cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90
ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNh
bl8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lk
XSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIs
IFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibHNhbl9s
ZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSkKQEAgLTE1MDgsMTEgKzE0NTAs
OSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
IGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2co
WygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNTI4LDEzICsxNDY4LDEx
IEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzIoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9fX2Rpcl9fIl0sIE5v
bmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9f
X2Rpcl9fIl0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpLAotICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICAgICAgICAg
ICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXSwK
QEAgLTE1NTAsMTEgKzE0ODgsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKICAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJf
aWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9f
IiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2Fu
X2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSldLApAQCAtMTU3MiwxMSArMTUw
OCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzMoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0
XzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIi
Ilt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtMTU5
NCwxMSArMTUyOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgogICAgIGFzc2Vy
dCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25l
LCBiIiIpXQogCiAgICAgbG9nID0geyJydW5faW5mbyI6IGRlZmF1bHRfcnVuX2luZm8uY29weSgp
LAogICAgICAgICAgICAicmVzdWx0cyI6IFtdLApAQCAtMTYxMSwxMSArMTU0Myw5IEBAIGRlZiB0
ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgogICAgIGFzc2VydCB1cGRhdGVkWzBdWzFdLmdldCgi
bHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzAoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIild
CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5v
bmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJz
Y29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicHJvY2VzcyI6ICJkZWZhdWx0IiwKQEAgLTE2MzAsMTEgKzE1NjAsOSBAQCBkZWYgdGVz
dF91cGRhdGVfbGVha190b3RhbF8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxl
YWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0OjUxMjAwJ10KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0
YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190
b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjQ2LDExICsxNTc0LDkg
QEAgZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgogICAgIGFzc2VydCBub3QgdXBkYXRl
ZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgv
dG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAg
KCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTEw
IiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3Bl
IjogInBhdGgvdG8vIiwKQEAgLTE2NjMsMTEgKzE1ODksOSBAQCBsZWFrLXRvdGFsOiAxMTAiIiIp
XQogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzMoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9u
ZSwgYiIiIgogbGVhay10b3RhbDogMTAwIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
Im1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2ODMsMTEgKzE2MDcs
OSBAQCBsZWFrLXRvdGFsOiAxMDAiIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJs
ZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxf
NCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0s
IE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAgICAgbG9nXzAgPSBz
dWl0ZV9sb2coWwpAQCAtMTcxNiw4ICsxNjM4LDYgQEAgY2xhc3MgVXBkYXRlUnVubmVyKFN0ZXBS
dW5uZXIpOgogICAgIHN0ZXBzID0gW1Rlc3RTdGVwXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ1cGRhdGUu
c3RhdGUgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcGlja2xlKCk6CiAg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJleHBlY3RlZF90ZXN0
IikKICAgICBhcmdzID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0
dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKaW5kZXggOWJiM2Ux
ZmQzNGUzN2M0NDMwZjc1MmI4N2U0YmI0ZTNiZmE3Zjk1OS4uZGJjY2Q5MGUzMzk1ODBhOGQ1ZmEx
MDA1YmUwNDM0MDk1YzQ2ODI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
d3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CkBAIC0x
LDM1ICsxLDM0IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBC
eXRlc0lPCiBmcm9tIG1vY2sgaW1wb3J0IE1vY2sKIAogZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFu
aWZlc3QgYXMgd3B0bWFuaWZlc3QKLWZyb20gbWFuaWZlc3QuaXRlbSBpbXBvcnQgVGVzdGhhcm5l
c3NUZXN0Citmcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNzVGVzdCwgUmVmVGVz
dAorZnJvbSBtYW5pZmVzdC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aAogZnJvbSAuLiBpbXBvcnQg
bWFuaWZlc3RleHBlY3RlZCwgd3B0dGVzdAogCi1kaXJfaW5pXzAgPSAiIiJcCitkaXJfaW5pXzAg
PSBiIiIiXAogcHJlZnM6IFthOmJdCiAiIiIKIAotZGlyX2luaV8xID0gIiIiXAorZGlyX2luaV8x
ID0gYiIiIlwKIHByZWZzOiBbQFJlc2V0LCBiOmNdCiBtYXgtYXNzZXJ0czogMgogbWluLWFzc2Vy
dHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKLWRpcl9pbmlfMiA9ICIiIlwKK2Rpcl9pbmlfMiA9
IGIiIiJcCiBsc2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0XzAgPSAiIiJcCit0
ZXN0XzAgPSBiIiIiXAogWzAuaHRtbF0KICAgcHJlZnM6IFtjOmRdCiAgIG1heC1hc3NlcnRzOiAz
CiAgIHRhZ3M6IFthLCBAUmVzZXRdCiAiIiIKIAotdGVzdF8xID0gIiIiXAordGVzdF8xID0gYiIi
IlwKIFsxLmh0bWxdCiAgIHByZWZzOgogICAgIGlmIG9zID09ICd3aW4nOiBbYTpiLCBjOmRdCkBA
IC0zNywxMiArMzYsMTIgQEAgdGVzdF8xID0gIiIiXAogICAgIGlmIG9zID09ICd3aW4nOiBGQUlM
CiAiIiIKIAotdGVzdF8yID0gIiIiXAordGVzdF8yID0gYiIiIlwKIFsyLmh0bWxdCiAgIGxzYW4t
bWF4LXN0YWNrLWRlcHRoOiA0MgogIiIiCiAKLXRlc3RfMyA9ICIiIlwKK3Rlc3RfMyA9IGIiIiJc
CiBbMy5odG1sXQogICBbc3VidGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXQpAQCAt
NTQsMzIgKzUzLDMyIEBAIHRlc3RfMyA9ICIiIlwKICAgICBleHBlY3RlZDogRkFJTAogIiIiCiAK
LXRlc3RfNCA9ICIiIlwKK3Rlc3RfNCA9IGIiIiJcCiBbNC5odG1sXQogICBleHBlY3RlZDogRkFJ
TAogIiIiCiAKLXRlc3RfNSA9ICIiIlwKK3Rlc3RfNSA9IGIiIiJcCiBbNS5odG1sXQogIiIiCiAK
LXRlc3RfNiA9ICIiIlwKK3Rlc3RfNiA9IGIiIiJcCiBbNi5odG1sXQogICBleHBlY3RlZDogW09L
LCBGQUlMXQogIiIiCiAKLXRlc3RfNyA9ICIiIlwKK3Rlc3RfNyA9IGIiIiJcCiBbNy5odG1sXQog
ICBibGlua19leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOiB5ZXAKICIiIgogCi10ZXN0X2Z1enp5
ID0gIiIiXAordGVzdF9mdXp6eSA9IGIiIiJcCiBbZnV6enkuaHRtbF0KICAgZnV6enk6IGZ1enp5
LXJlZi5odG1sOjE7MjAwCiAiIiIKIAogCi10ZXN0aGFybmVzc190ZXN0ID0gIiIiPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgordGVzdGhhcm5lc3NfdGVz
dCA9IGIiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
IiIiCiAKIApAQCAtMTE3LDggKzExNiw2IEBAIGRlZiBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfbmFt
ZSwKICAgICByZXR1cm4gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3RzLCB0ZXN0LCBpbmhlcml0
X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfaW5o
ZXJpdCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApLCAoInRlc3QiLCAiYyIsIDEwKV0KICAgICBpbmhlcml0X21ldGFkYXRhID0gWwpAQCAtMTM2
LDggKzEzMyw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKICAgICBhc3NlcnQgdGVz
dF9vYmoudGFncyA9PSB7ImEiLCAiZGlyOmEifQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0
IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfY29uZGl0aW9uYWwoKToKICAgICBpdGVtcyA9
IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAx
MCldCiAKQEAgLTE0Nyw4ICsxNDIsNiBAQCBkZWYgdGVzdF9jb25kaXRpb25hbCgpOgogICAgIGFz
c2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRl
cy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApXQogCkBAIC0xNzIsOCArMTY1LDYgQEAgZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5sc2FuX21heF9zdGFja19kZXB0aCA9PSA0Mgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
c3VidGVzdHMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF8zLCAiYS8z
Lmh0bWwiLCAzLCAoInRlc3QiLCAiYSIsIDQpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0ZWQoInN1YnRlc3QxIikgPT0gIlBBU1MiCkBAIC0xODQsNTcgKzE3NSw1MCBA
QCBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1p
dHRlbnQoInN1YnRlc3QzIikgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25m
dXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWwoKToKICAgICB0ZXN0X29iaiA9
IG1ha2VfdGVzdF9vYmplY3QodGVzdF80LCAiYS80Lmh0bWwiLCA0LCAoInRlc3QiLCAiYSIsIDUp
LCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiRkFJTCIK
ICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0gW10KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X25vX2V4cGVj
dGVkKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNSwgImEvNS5odG1s
IiwgNSwgKCJ0ZXN0IiwgImEiLCA2KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRl
bnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMi
KQogZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rl
c3Rfb2JqZWN0KHRlc3RfNiwgImEvNi5odG1sIiwgNiwgKCJ0ZXN0IiwgImEiLCA3KSwgTm9uZSwg
RmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2Vy
dCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbIkZBSUwiXQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfZXhwZWN0X2FueV9z
dWJ0ZXN0X3N0YXR1cygpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0Xzcs
ICJhLzcuaHRtbCIsIDcsICgidGVzdCIsICJhIiwgOCksIE5vbmUsIEZhbHNlKQogICAgIGFzc2Vy
dCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0
X2FueV9zdWJ0ZXN0X3N0YXR1cygpIGlzIFRydWUKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4
dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2Z1enp5KCk6Ci0gICAgbWFu
aWZlc3RfZGF0YSA9IHsKLSAgICAgICAgIml0ZW1zIjogeyJyZWZ0ZXN0IjogeyJhL2Z1enp5Lmh0
bWwiOiBbWyJhL2Z1enp5Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImZ1enp5IjogW1tbIi9hL2Z1
enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwg
MTVdXV1dfV1dfX0sCi0gICAgICAgICJwYXRocyI6IHsiYS9mdXp6eS5odG1sIjogWyIwIio0MCwg
InJlZnRlc3QiXX0sCi0gICAgICAgICJ2ZXJzaW9uIjogNywKLSAgICAgICAgInVybF9iYXNlIjog
Ii8ifQotICAgIG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QuZnJvbV9qc29uKCIuIiwg
bWFuaWZlc3RfZGF0YSkKKyAgICBpdGVtID0gUmVmVGVzdCgiLiIsICJhL2Z1enp5Lmh0bWwiLCAi
LyIsICJhL2Z1enp5Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9W1siL2Ev
ZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCisgICAgICAgICAgICAgICAgICAgZnV6enk9W1tbIi9h
L2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwgMTVdXV1dKQorICAgIHMgPSBNb2NrKHJlbF9wYXRo
PSJhL2Z1enp5Lmh0bWwiLCByZWxfcGF0aF9wYXJ0cz0oImEiLCAiZnV6enkuaHRtbCIpLCBoYXNo
PSIwIio0MCkKKyAgICBzLm1hbmlmZXN0X2l0ZW1zID0gTW9jayhyZXR1cm5fdmFsdWU9KGl0ZW0u
aXRlbV90eXBlLCBbaXRlbV0pKQorCisKKyAgICBtYW5pZmVzdCA9IHdwdG1hbmlmZXN0Lk1hbmlm
ZXN0KCkKKworICAgIGFzc2VydCBtYW5pZmVzdC51cGRhdGUoWyhzLCBUcnVlKV0pIGlzIFRydWUK
KwogICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxlKEJ5
dGVzSU8odGVzdF9mdXp6eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0ZXhwZWN0ZWQuZGF0YV9jbHNf
Z2V0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIpCiAKLSAgICB0ZXN0ID0gbWFu
aWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQorICAgIHRlc3QgPSBuZXh0KG1h
bmlmZXN0Lml0ZXJwYXRoKHRvX29zX3BhdGgoImEvZnV6enkuaHRtbCIpKSkKICAgICB0ZXN0X29i
aiA9IHdwdHRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdCwgdGVzdCwgW10sIHRlc3RfbWV0YWRh
dGEuZ2V0X3Rlc3QodGVzdC5pZCkpCiAKICAgICBhc3NlcnQgdGVzdF9vYmouZnV6enkgPT0geygn
L2EvZnV6enkuaHRtbCcsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PScpOiBbWzIsIDNdLCBbMTAs
IDE1XV19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCAyNjI2MTgzZmM4MGRiYzc1ZDNkMjg1
ZGU3OWE3ZDM4NmY1M2NlNmUzLi43OGNkYTljMmQ2NTVmNDJkNjgxMTNmNzkxMDdlMjRhZTQxN2Fm
ZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcgQEAgZGVmIHJlbW92
ZV9sb2dnaW5nX2FyZ3MoYXJncyk6CiAKICAgICA6cGFyYW0gYXJnczogRGljdGlvbmFyeSBvZiBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogICAgICIiIgotICAgIGZvciBuYW1lIGluIGFyZ3Mua2V5
cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlzKCkpOgogICAgICAgICBpZiBuYW1l
LnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFyZ3MucG9wKG5hbWUpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N0YXRlLnB5CmluZGV4IDY0ZGJmMTE4MDYwNGNkOGRmN2E0NjhlMDM2NDQ3Zjk1YjgwMzcxYjAu
LmY4YTgzNTI1Y2JkNDcwNmJkZmJjOTlhNTE4ZDJiYWMxMjNkMzRlOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0
ZS5weQpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBCYXNlU3RhdGUob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBydgogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gZXhpc3Rpbmcgc3RhdGUg
Zm91bmQiKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCBsb2dnZXIpCisgICAg
ICAgIHJldHVybiBzdXBlcihCYXNlU3RhdGUsIGNscykuX19uZXdfXyhjbHMpCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyKToKICAgICAgICAgIiIiT2JqZWN0IGNvbnRhaW5pbmcgc3Rh
dGUgdmFyaWFibGVzIGNyZWF0ZWQgd2hlbiBydW5uaW5nIFN0ZXBzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5Cmlu
ZGV4IDBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYuLjBhNDFmNzA2ZWJj
Mzc2MDcyOWQ5YmE1NTMwNzZmZTBkN2UwYjQwYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKQEAgLTEwLDM3
ICsxMCw2IEBAIGZyb20gLnRyZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0gb3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQogCi1ic2RfbGljZW5zZSA9ICIiIlczQyAz
LWNsYXVzZSBCU0QgTGljZW5zZQotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIGNvcHly
aWdodCBub3RpY2UsIHRoaXMKLSAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLUlTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi1J
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQotQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIiIgotCiAKIGRlZiBj
b3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1ZGVzPU5vbmUpOgog
ICAgICIiIkNvcHkgdGhlIHdvcmtpbmcgY29weSBvZiBhIFRyZWUgdG8gYSBkZXN0aW5hdGlvbiBk
aXJlY3RvcnkuCkBAIC04NCwxNiArNTMsNiBAQCBkZWYgY29weV93cHRfdHJlZSh0cmVlLCBkZXN0
LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25lKToKICAgICAgICAgZGVzdF9wYXRoID0gb3Mu
cGF0aC5qb2luKGRlc3QsIGRlc3RpbmF0aW9uLCBvcy5wYXRoLnNwbGl0KHNvdXJjZSlbMV0pCiAg
ICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQogCi0gICAgYWRkX2xp
Y2Vuc2UoZGVzdCkKLQotCi1kZWYgYWRkX2xpY2Vuc2UoZGVzdCk6Ci0gICAgIiIiV3JpdGUgdGhl
IGJzZCBsaWNlbnNlIHN0cmluZyB0byBhIExJQ0VOU0UgZmlsZS4KLQotICAgIDpwYXJhbSBkZXN0
OiBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIExJQ0VOU0UgZmlsZS4iIiIKLSAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICJMSUNFTlNFIiksICJ3IikgYXMgZjoKLSAgICAg
ICAgZi53cml0ZShic2RfbGljZW5zZSkKLQogCiBjbGFzcyBVcGRhdGVDaGVja291dChTdGVwKToK
ICAgICAiIiJQdWxsIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBpbnRvIHRoZSBsb2NhbCBzeW5jIHRy
ZWUuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3RyZWUucHkKaW5kZXggOTAwNmRmNjcxOTMzMmFlNTkyZWUzODYxNDg1ZDgy
YzIxMjQyM2I0OC4uZjM2Mjc3MGZmMTZkMzBlNDQ5ZGU4NTNmNjg3NDY3Mjk3YjBlZDA3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvdHJlZS5weQpAQCAtMyw2ICszLDggQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCiBmcm9t
IC4uIGltcG9ydCB2Y3MKIGZyb20gLi52Y3MgaW1wb3J0IGdpdCwgaGcKIApAQCAtMTYsNyArMTgs
NyBAQCBkZWYgZ2V0X3VuaXF1ZV9uYW1lKGV4aXN0aW5nLCBpbml0aWFsKToKICAgICA6cGFyYW0g
aW5pdGlhbDogTmFtZSwgb3IgbmFtZSBwcmVmaXgsIHRvIHVzZSIiIgogICAgIGlmIGluaXRpYWwg
bm90IGluIGV4aXN0aW5nOgogICAgICAgICByZXR1cm4gaW5pdGlhbAotICAgIGZvciBpIGluIHhy
YW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGV4aXN0aW5n
KSArIDEpOgogICAgICAgICB0ZXN0ID0gIiVzXyVzIiAlIChpbml0aWFsLCBpICsgMSkKICAgICAg
ICAgaWYgdGVzdCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICByZXR1cm4gdGVzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQppbmRleCA5NjMwMmVlMjY3ZTkwNWFhOGE0OGFmMTJiNjU5NzhlMDI1ZWJk
NDkyLi44MGU1MDlkZDM4M2IzOGVmNGEzMzdlZjEzMDc1ZjU4ODI2Y2Y4MTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3VwZGF0ZS5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCitmcm9t
IHNpeCBpbXBvcnQgaXRlcnZhbHVlcworCiBmcm9tIC5tZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFV
cGRhdGVSdW5uZXIKIGZyb20gLnN5bmMgaW1wb3J0IFN5bmNGcm9tVXBzdHJlYW1SdW5uZXIKIGZy
b20gLnRyZWUgaW1wb3J0IEdpdFRyZWUsIEhnVHJlZSwgTm9WQ1NUcmVlCkBAIC0xMDksNyArMTEx
LDcgQEAgY2xhc3MgUmVtb3ZlT2Jzb2xldGUoU3RlcCk6CiAgICAgICAgIHN0YXRlLnRlc3RzX3Bh
dGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KICAgICAgICAgc3RhdGUubWV0YWRh
dGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3BhdGgiXQogCi0gICAgICAgIGZv
ciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAgICAgICBmb3IgdXJsX3BhdGhz
IGluIGl0ZXJ2YWx1ZXMocGF0aHMpOgogICAgICAgICAgICAgdGVzdHNfcGF0aCA9IHVybF9wYXRo
c1sidGVzdHNfcGF0aCJdCiAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoID0gdXJsX3BhdGhzWyJt
ZXRhZGF0YV9wYXRoIl0KICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5h
bWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0aCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKaW5kZXggYWIwNmM0
MWFmOThmNWMyYzg4Y2I4OWVlNThiYjdhYTIzNGU5MDI0My4uZmFhZjg2ZmVkNmE2MzhkZGI1MTg0
NDY3YThlMDcwODIzN2E0NjllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMjAsMTAgKzIwLDEyIEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5CiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4cGVjdGVkdHJlZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2lu
c3RydW1lbnRzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvcHJvZHVjdHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3Rkcml2ZXItZXh0cmEuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
ZWJkcml2ZXJfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKaW5k
ZXggMTYyZmZhZTNmYzkzYWVlYjI5YTI1MzVlODI5YWY0NWI5ZTE1YzFmMy4uMThiZTY4MDYwNzRk
YTg2ODVjZDM5Mjg2MTk0NTVlZDI3NWJmZThlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dl
YmRyaXZlcl9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkK
QEAgLTgsNiArOCw4IEBAIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IG1venByb2Nlc3MKIAor
ZnJvbSAucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKKwogCiBfX2FsbF9fID0gWyJTZWxlbml1bVNl
cnZlciIsICJDaHJvbWVEcml2ZXJTZXJ2ZXIiLCAiQ1dUQ2hyb21lRHJpdmVyU2VydmVyIiwKICAg
ICAgICAgICAgIkVkZ2VDaHJvbWl1bURyaXZlclNlcnZlciIsICJPcGVyYURyaXZlclNlcnZlciIs
ICJHZWNrb0RyaXZlclNlcnZlciIsCkBAIC01NSw3ICs1Nyw3IEBAIGNsYXNzIFdlYkRyaXZlclNl
cnZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcm9jID0gbW96cHJvY2Vzcy5Qcm9jZXNzSGFu
ZGxlcigKICAgICAgICAgICAgIHNlbGYuX2NtZCwKICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRM
aW5lPXNlbGYub25fb3V0cHV0LAotICAgICAgICAgICAgZW52PXNlbGYuZW52LAorICAgICAgICAg
ICAgZW52PWNhc3RfZW52KHNlbGYuZW52KSwKICAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNl
KQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBXZWJEcml2ZXI6ICVzIiAl
ICcgJy5qb2luKHNlbGYuX2NtZCkpCkBAIC04MiwxNCArODQsMTMgQEAgY2xhc3MgV2ViRHJpdmVy
U2VydmVyKG9iamVjdCk6CiAKICAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBXZWJEcml2ZXIiKQotICAgICAgICBpZiBz
ZWxmLmlzX2FsaXZlOgorICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBr
aWxsX3Jlc3VsdCA9IHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgICBpZiBmb3JjZSBhbmQg
a2lsbF9yZXN1bHQgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvYy5raWxs
KDkpCiAgICAgICAgICAgICByZXR1cm4ga2lsbF9yZXN1bHQKLSAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2ZSgpCiAKLSAgICBA
cHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNhdHRy
KHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUKIApAQCAt
MTg0LDcgKzE4NSwxMSBAQCBjbGFzcyBHZWNrb0RyaXZlclNlcnZlcihXZWJEcml2ZXJTZXJ2ZXIp
OgogICAgICAgICAgICAgICAgICBob3N0PSIxMjcuMC4wLjEiLCBwb3J0PU5vbmUsIGFyZ3M9Tm9u
ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUlVTVF9C
QUNLVFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52LCBhcmdzPWFyZ3Mp
CisgICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0
dGVfcG9ydAogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxmKToKQEAgLTIwOSw3ICsyMTQsMTEg
QEAgY2xhc3MgU2Vydm9Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKICAgICAgICAgICAg
ICAgICAgcG9ydD1Ob25lLCBhcmdzPU5vbmUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNv
cHkoKQogICAgICAgICBlbnZbIlJVU1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAgICAgICAgV2ViRHJp
dmVyU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0PWhvc3QsIHBvcnQ9
cG9ydCwgZW52PWVudiwgYXJncz1hcmdzKQorICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBob3N0PWhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncykKICAgICAgICAgc2VsZi5i
aW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCiAKICAgICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgpA
QCAtMjY0LDcgKzI3Myw3IEBAIGRlZiB3YWl0X2Zvcl9zZXJ2aWNlKGFkZHIsIHRpbWVvdXQ9NjAp
OgogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGVbMF0gIT0gZXJy
bm8uRUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJF
RlVTRUQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggOTIzYmRhYTU1ODU3ZTc5M2U4
ZDZlOGM1ODcxNjczNjBhZWQ0YWU5NC4uOTYyMjdiYjQ2OTA1ZTE2OGQ2OTFlMzUwOTQ2ZGJmYmE2
ODA5ODI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MK
IGltcG9ydCBzeXMKQEAgLTE2LDkgKzE2LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogCiAKIGRl
ZiB1cmxfb3JfcGF0aChwYXRoKToKLSAgICBpbXBvcnQgdXJscGFyc2UKKyAgICBmcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAKLSAgICBwYXJzZWQgPSB1cmxwYXJz
ZS51cmxwYXJzZShwYXRoKQorICAgIHBhcnNlZCA9IHVybHBhcnNlKHBhdGgpCiAgICAgaWYgbGVu
KHBhcnNlZC5zY2hlbWUpID4gMjoKICAgICAgICAgcmV0dXJuIHBhdGgKICAgICBlbHNlOgpAQCAt
MzcsNyArMzcsNyBAQCBkZWYgcmVxdWlyZV9hcmcoa3dhcmdzLCBuYW1lLCB2YWx1ZV9mdW5jPU5v
bmUpOgogZGVmIGNyZWF0ZV9wYXJzZXIocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgIGZyb20g
bW96bG9nIGltcG9ydCBjb21tYW5kbGluZQogCi0gICAgaW1wb3J0IHByb2R1Y3RzCisgICAgZnJv
bSAuIGltcG9ydCBwcm9kdWN0cwogCiAgICAgaWYgcHJvZHVjdF9jaG9pY2VzIGlzIE5vbmU6CiAg
ICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnLmxvYWQoKQpAQCAtMTM3LDYgKzEzNywxNCBAQCBz
Y2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgbGlzdGluZyB0ZXN0cyB0byBpbmNsdWRlIikK
ICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2tpcC10aW1lb3V0Iiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byB0aW1lIG91dCIpCisgICAg
dGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtaW1wbGVtZW50YXRpb24t
c3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJh
cHBlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
bm90LWltcGxlbWVudGluZyIsICJiYWNrbG9nIiwgImltcGxlbWVudGluZyJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3RzIHRoYXQgaGF2ZSB0
aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24gc3RhdHVzIikKKyAgICAjIFRPRE86IFJlbW92ZSB0aGlz
IHdoZW4gUVVJQyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgdGVzdF9zZWxlY3Rpb25fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1xdWljIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RW5hYmxlIHRlc3RzIHRoYXQgcmVxdWlyZSBRVUlDIHNlcnZlciAoZGVmYXVsdDogZmFsc2UpIikK
KwogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10YWciLCBhY3Rpb249
ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRlIGluIHRoZSBydW4u
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGFiZWxzIHN0
YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVjdG9yaWVzLiIpCkBA
IC0yMTAsMTMgKzIxOCwxNyBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxlIikKICAgICBjb25m
aWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxsb3cgdGhlIHdwdHJ1bm5lciB0byBpbnN0
YWxsIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9Ikluc3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91ciBzeXN0ZW0iKQor
ICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8taW5zdGFsbC1mb250cyIsIGRlc3Q9
Imluc3RhbGxfZm9udHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBpbnN0YWxsIGFkZGl0aW9uYWwgc3lzdGVtIGZvbnRz
IG9uIHlvdXIgc3lzdGVtIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWZvbnQt
ZGlyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImZvbnRfZGlyIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbG9jYWwgZm9udCBpbnN0
YWxsYXRpb24gZGlyZWN0b3J5IiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZpZ19ncm91cC5hZGRf
YXJndW1lbnQoIi0taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZSIsIGRl
ZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWhlYWRsZXNz
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImhlYWRsZXNzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJ1biBicm93c2VyIGluIGhlYWRsZXNzIG1vZGUi
KQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5zdHJ1bWVudC10by1maWxlIiwg
YWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRo
IHRvIHdyaXRlIGluc3RydW1lbnRhdGlvbiBsb2dzIHRvIikKIAogICAgIGJ1aWxkX3R5cGUgPSBw
YXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgYnVpbGRfdHlwZS5hZGRf
YXJndW1lbnQoIi0tZGVidWctYnVpbGQiLCBkZXN0PSJkZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCkBAIC0yNTUsMTIgKzI2NywyMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAg
Z2Vja29fZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZWNrby1zcGVjaWZpYyIp
CiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXByZWZzLXJvb3QiLCBkZXN0PSJwcmVm
c19yb290IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGZvbGRlciBjb250YWluaW5nIGJyb3dzZXIg
cHJlZnMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVsb2FkLWJyb3dzZXIi
LCBkZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IlByZWxvYWQgYSBnZWNrbyBp
bnN0YW5jZSBmb3IgZmFzdGVyIHJlc3RhcnRzIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tbm8tcHJlbG9hZC1icm93c2VyIiwgZGVzdD0icHJlbG9hZF9icm93c2VyIiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0iRG9uJ3QgcHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBmYXN0ZXIgcmVzdGFy
dHMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWUxMHMiLCBkZXN0
PSJnZWNrb19lMTBzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGhvdXQgZWxlY3Ryb2x5
c2lzIHByZWZlcmVuY2VzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5hYmxl
LXdlYnJlbmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJs
ZSB0aGUgV2ViUmVuZGVyIGNvbXBvc2l0b3IgaW4gR2Vja28gKGRlZmF1bHRzIHRvIGRpc2FibGVk
KS4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFibGUtd2VicmVuZGVy
IiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBXZWJSZW5kZXIgY29tcG9z
aXRvciBpbiBHZWNrby4iKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUt
Zmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNzaW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgZmlz
c2lvbiBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAgZ2Vja29fZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5hYmxlX2Zpc3Npb24i
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRGlzYWJsZSBmaXNzaW9uIGluIEdlY2tvLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLXN0YWNrZml4LWRpciIsIGRlc3Q9InN0YWNrZml4X2RpciIsIGFjdGlvbj0ic3RvcmUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBj
b250YWluaW5nIGFzc2VydGlvbiBzdGFjayBmaXhpbmcgc2NyaXB0cyIpCiAgICAgZ2Vja29fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLXNldHByZWYiLCBkZXN0PSJleHRyYV9wcmVmcyIsIGFjdGlvbj0n
YXBwZW5kJywKQEAgLTUzNCw5ICs1NTQsNiBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAg
ICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJdID0gcGF0aAogCiAgICAgaWYga3dhcmdzWydl
eHRyYV9wcmVmcyddOgotICAgICAgICAjIElmIGEgc2luZ2xlIHByZWYgaXMgcGFzc2VkIGluIGFz
IGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAotICAgICAgICBpZiB0eXBlKGt3YXJnc1snZXh0cmFf
cHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICBrd2FyZ3NbJ2V4dHJhX3By
ZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcyddXQogICAgICAgICBtaXNzaW5nID0gYW55KCc9
JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBpbiBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10pCiAg
ICAgICAgIGlmIG1pc3Npbmc6CiAgICAgICAgICAgICBwcmludCgiUHJlZmVyZW5jZXMgdmlhIC0t
c2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5cy5zdGRlcnIpCkBA
IC01NTMsNiArNTcwLDEwIEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgaWYga3dhcmdz
WyJlbmFibGVfd2VicmVuZGVyIl0gaXMgTm9uZToKICAgICAgICAga3dhcmdzWyJlbmFibGVfd2Vi
cmVuZGVyIl0gPSBGYWxzZQogCisgICAgaWYga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXSBpcyBO
b25lOgorICAgICAgICAjIERlZmF1bHQgdG8gcHJlbG9hZGluZyBhIGdlY2tvIGluc3RhbmNlIGlm
IHdlJ3JlIG9ubHkgcnVubmluZyBhIHNpbmdsZSBwcm9jZXNzCisgICAgICAgIGt3YXJnc1sicHJl
bG9hZF9icm93c2VyIl0gPSBrd2FyZ3NbInByb2Nlc3NlcyJdID09IDEKKwogICAgIHJldHVybiBr
d2FyZ3MKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRsb2dnaW5nLnB5CmluZGV4IDY5Y2VlNzQ0ODc5ZWI2NzgwY2I5OWVjOTMxMjM5
MjJlMTY2ZDllMTYuLjQ0NGQxZDk2MmQyNTg3MzEwOTk3N2I5MzdkOTZjODZjYjI5M2NkOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRsb2dnaW5nLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBzZXR1cChhcmdzLCBkZWZhdWx0cywg
Zm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0ZXJfZGVmYXVsdHMpCiAgICAg
c2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKLSAgICBmb3IgbmFtZSBpbiBhcmdzLmtleXMoKToKKyAg
ICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3
aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CmluZGV4IDQ1ZTIxNDdmYzRjYTUwOWE5ZGUyOGZj
ZGNiYjcwN2Q4MjM0NTk3MTEuLmM1MzlkNDM2N2U5NGE1ZTUyNWM1ZDhkOGU5ZWRjMzExNmU4YWZm
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CkBAIC0xLDQg
KzEsNSBAQAogaW1wb3J0IGFiYworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMs
IGl0ZXJ2YWx1ZXMKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yCiBmcm9tIC4ucGFy
c2VyIGltcG9ydCBwYXJzZQpAQCAtMTg2LDIxICsxODcsMjEgQEAgY2xhc3MgTWFuaWZlc3RJdGVt
KG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9CiAgICAg
ICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9yIG5hbWUs
IHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgbmFtZSwg
dmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
bm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZhbHVlCiAgICAgICAg
IHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0g
aW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVy
aXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRl
ZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0
ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcnZhbHVlcyhzZWxmKToKLSAg
ICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWll
bGQgaXRlbQogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBjaGlsZCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKaW5kZXggYWFjZDc4NTcwNzJm
NDIwYTIwOWFlZWZmNTU5ZWMyYWUyOTQxNzBiYS4uM2IxMWU4MzAxMmFiNTBmZTBlYTI0MGFlMDU2
ZDAyYzg5NjhiNmE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5k
cy9jb25kaXRpb25hbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcGVyYXRvcgorZnJvbSBz
aXggaW1wb3J0IGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCB0ZXh0X3R5cGUKIAog
ZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2Rl
LCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2Rl
LCBWYXJpYWJsZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC00Miw5ICs0Myw3
IEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYu
Y29uZGl0aW9uX2Z1bmMocnVuX2luZm8pCiAKICAgICBkZWYgc2V0X3ZhbHVlKHNlbGYsIHZhbHVl
KToKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChzdHIsIHVuaWNvZGUpOgotICAgICAg
ICAgICAgdmFsdWUgPSB1bmljb2RlKHZhbHVlKQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUK
KyAgICAgICAgc2VsZi52YWx1ZSA9IGVuc3VyZV90ZXh0KHZhbHVlKQogCiAgICAgZGVmIHZhbHVl
X2FzKHNlbGYsIHR5cGVfZnVuYyk6CiAgICAgICAgICIiIkdldCB2YWx1ZSBhbmQgY29udmVydCB0
byBhIGdpdmVuIHR5cGUuCkBAIC0zMDEsOSArMzAwLDkgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9i
amVjdCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAg
dmFsdWVfbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgot
ICAgICAgICAgICAgICAgIHZhbHVlX25vZGUuYXBwZW5kKFZhbHVlTm9kZSh1bmljb2RlKGl0ZW0p
KSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodGV4dF90eXBl
KGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5v
ZGUodW5pY29kZSh2YWx1ZSkpCisgICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFsdWVOb2RlKHRl
eHRfdHlwZSh2YWx1ZSkpCiAgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgQ29uZGl0aW9uYWxOb2RlKToKICAg
ICAgICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxOb2RlKCkKQEAgLTM2
OSwxOSArMzY4LDIzIEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgogICAgIGRlZiBfZmxh
dHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3Igbm9kZSBpbiBbc2VsZiwg
c2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2Rl
Ll9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoKICAgICAgICAgICAg
ICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBp
dGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVy
aXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAg
ICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVya2V5cygpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWllbGQgaXRl
bQogCisgICAgZGVmIGl0ZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW0gaW4g
c2VsZi5fZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGl0ZW0sIHNlbGYuX2RhdGFbaXRlbV0KKwog
ICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIGtleSBu
b3QgaW4gc2VsZi5fZGF0YToKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQppbmRleCA3N2IxN2E1MDMyNWM3NzA2NzM5MWFiNjYzOWQwZTAyOWUzMzk1MDQ3Li4wZjgy
ZDcwMDZiNjllZDBlNDg1MjkwMzg3YjY1NzY4Yjg1OWE4NzAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
bm9kZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB4cmFuZ2UKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBjbGFzcyBOb2RlVmlzaXRvcihvYmplY3QpOgog
ICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRGF0YU5v
ZGUoTm9kZSk6CiAgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLmNoaWxkcmVuKQogICAgICAg
ICAgICAgd2hpbGUgaW5kZXggPiAwIGFuZCBpc2luc3RhbmNlKHNlbGYuY2hpbGRyZW5baW5kZXgg
LSAxXSwgRGF0YU5vZGUpOgogICAgICAgICAgICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgICAg
IGZvciBpIGluIHhyYW5nZShpbmRleCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpbmRl
eCk6CiAgICAgICAgICAgICAgICAgaWYgb3RoZXIuZGF0YSA9PSBzZWxmLmNoaWxkcmVuW2ldLmRh
dGE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkR1cGxpY2F0ZSBrZXkg
JXMiICUgc2VsZi5jaGlsZHJlbltpXS5kYXRhKQogICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5p
bnNlcnQoaW5kZXgsIG90aGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKaW5kZXggNjJj
NWY3ZDNhNDY3OWNhOWFlYTk2MWFmZWNjNjNmMjVlN2E1NDk2Mi4uOTExZWZhYzgwZjI3ZWU5MmRm
N2ZiZWE1NzdjNDE0NjkxODk5Nzc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBA
IC0xNCw4ICsxNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFs
cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0
ZXh0X3R5cGUsIEJ5dGVzSU8sIHVuaWNocgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAK
IGZyb20gLm5vZGUgaW1wb3J0IChOb2RlLCBBdG9tTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUs
IEJpbmFyeU9wZXJhdG9yTm9kZSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25hbE5vZGUs
IERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICBzZWxmLnN0YXRlID0gc2Vs
Zi5saW5lX3N0YXJ0X3N0YXRlCiAgICAgICAgIHNlbGYubmV4dF9zdGF0ZSA9IHNlbGYuZGF0YV9s
aW5lX3N0YXRlCiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSAwCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSAiIgogCiAgICAgZGVmIHRva2VuaXplKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgIHNl
bGYucmVzZXQoKQpAQCAtMTM2LDkgKzEzNywxMCBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5hcHBlbmQoc2VsZi5pbmRleCkKICAgICAg
ICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9zdGFydCwgTm9uZSkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9sZXZlbHNbLTFd
OgotICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQotICAgICAgICAgICAg
ICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCisgICAgICAgICAgICBpZiBz
ZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICB3aGls
ZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbmRlbnRfbGV2ZWxzLnBvcCgpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkICh0
b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRl
cnJpYmxlOyBpZiB3ZSB3ZXJlIHBhcnNpbmcgYW4gZXhwcmVzc2lvbgogICAgICAgICAgICAgICAg
ICMgdGhlbiB0aGUgbmV4dF9zdGF0ZSB3aWxsIGJlIGV4cHJfb3JfdmFsdWUgYnV0IHdoZW4gd2Ug
ZGVpbmRlbnQKICAgICAgICAgICAgICAgICAjIGl0IG11c3QgYWx3YXlzIGJlIGEgaGVhZGluZyBv
ciBrZXkgbmV4dCBzbyB3ZSBnbyBiYWNrIHRvIGRhdGFfbGluZV9zdGF0ZQpAQCAtMzAzLDcgKzMw
NSw4IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogCiAgICAgZGVmIHZhbHVlX3N0YXRlKHNl
bGYpOgogICAgICAgICBzZWxmLnNraXBfd2hpdGVzcGFjZSgpCi0gICAgICAgIGlmIHNlbGYuY2hh
cigpIGluICgiJyIsICciJyk6CisgICAgICAgIGMgPSBzZWxmLmNoYXIoKQorICAgICAgICBpZiBj
IGluICgiJyIsICciJyk6CiAgICAgICAgICAgICBxdW90ZV9jaGFyID0gc2VsZi5jaGFyKCkKICAg
ICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMu
c3RyaW5nLCBzZWxmLmNvbnN1bWVfc3RyaW5nKHF1b3RlX2NoYXIpKQpAQCAtMzExLDEwICszMTQs
MTIgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0
ZSA9IHNlbGYuY29tbWVudF9zdGF0ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBzZWxmLnN0YXRlID0gc2VsZi5saW5lX2VuZF9zdGF0ZQotICAgICAgICBlbGlmIHNlbGYuY2hh
cigpID09ICJAIjoKKyAgICAgICAgZWxpZiBjID09ICJAIjoKICAgICAgICAgICAgIHNlbGYuY29u
c3VtZSgpCiAgICAgICAgICAgICBmb3IgXywgdmFsdWUgaW4gc2VsZi52YWx1ZV9pbm5lcl9zdGF0
ZSgpOgogICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuX3R5cGVzLmF0b20sIHZhbHVlCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5saXN0X3N0
YXJ0X3N0YXRlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi52
YWx1ZV9pbm5lcl9zdGF0ZQogCkBAIC00OTQsNyArNDk5LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9i
amVjdCk6CiAKICAgICBkZWYgZGVjb2RlX2VzY2FwZShzZWxmLCBsZW5ndGgpOgogICAgICAgICB2
YWx1ZSA9IDAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbmd0aCk6CisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbmd0aCk6CiAgICAgICAgICAgICBjID0gc2VsZi5jaGFyKCkKICAgICAgICAg
ICAgIHZhbHVlICo9IDE2CiAgICAgICAgICAgICB2YWx1ZSArPSBzZWxmLmVzY2FwZV92YWx1ZShj
KQpAQCAtNTk2LDYgKzYwMSw5IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAg
c2VsZi5leHByZXNzaW9uX3ZhbHVlcygpCiAgICAgICAgICAgICBpZiBzZWxmLnRva2VuWzBdID09
IHRva2VuX3R5cGVzLnN0cmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlKCkKKyAgICAg
ICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5saXN0X3N0YXJ0OgorICAg
ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCisgICAgICAgICAgICAgICAgc2VsZi5saXN0X3Zh
bHVlKCkKICAgICAgICAgICAgIHNlbGYuZW9mX29yX2VuZF9ncm91cCgpCiAgICAgICAgIGVsaWYg
c2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5hdG9tOgogICAgICAgICAgICAgc2VsZi5hdG9t
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKaW5kZXggM2IyOWM5OWVkZTdj
YWM1OGVkZTVkNDgyMzc2OTZlMzBjOWQ4NTZjNy4uZWM4ZDgwZWQ2ZjcxNTFiMjkxM2Y5NzVkZjBm
YzM4N2ExMjdkZTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Nlcmlh
bGl6ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKQEAg
LTEsNyArMSwxMCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCitm
cm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQKKwogZnJvbSAubm9kZSBpbXBvcnQgTm9kZVZpc2l0
b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlCiBmcm9tIC5wYXJz
ZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMgPSB7djoiQCVzIiAlIGsg
Zm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CithdG9tX25hbWVzID0ge3Y6ICJAJXMiICUgayBm
b3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAogbmFtZWRfZXNjYXBlcyA9IHsiXGEiLCAiXGIi
LCAiXGYiLCAiXG4iLCAiXHIiLCAiXHQiLCAiXHYifQogCkBAIC0xMCw3ICsxMyw3IEBAIGRlZiBl
c2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgIHJ2ID0gIiIKICAgICBmb3IgYyBpbiBzdHJp
bmc6CiAgICAgICAgIGlmIGMgaW4gbmFtZWRfZXNjYXBlczoKLSAgICAgICAgICAgIHJ2ICs9IGMu
ZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICBydiArPSBjLmVuY29kZSgidW5p
Y29kZV9lc2NhcGUiKS5kZWNvZGUoKQogICAgICAgICBlbGlmIGMgPT0gIlxcIjoKICAgICAgICAg
ICAgIHJ2ICs9ICJcXFxcIgogICAgICAgICBlbGlmIGMgPCAnXHgyMCc6CkBAIC0xOSwxMCArMjIs
NyBAQCBkZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICAgICAgICAgIHJ2ICs9ICJc
XCIgKyBjCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiArPSBjCi0gICAgaWYgaXNpbnN0
YW5jZShydiwgdW5pY29kZSk6Ci0gICAgICAgIHJldHVybiBydi5lbmNvZGUoInV0ZjgiKQotICAg
IGVsc2U6Ci0gICAgICAgIHJldHVybiBydgorICAgIHJldHVybiBlbnN1cmVfdGV4dChydikKIAog
CiBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgpAQCAtNzQsMTAgKzc0LDcg
QEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJu
IFsiIi5qb2luKHJ2KV0KIAogICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2VsZiwgbm9kZSk6Ci0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUuZGF0YSwgKHN0ciwgdW5pY29kZSkpOgotICAg
ICAgICAgICAgZGF0YSA9IHVuaWNvZGUobm9kZS5kYXRhKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZGF0YSA9IG5vZGUuZGF0YQorICAgICAgICBkYXRhID0gZW5zdXJlX3RleHQobm9kZS5k
YXRhKQogICAgICAgICBpZiAoIiMiIGluIGRhdGEgb3IKICAgICAgICAgICAgIGRhdGEuc3RhcnRz
d2l0aCgiaWYgIikgb3IKICAgICAgICAgICAgIChpc2luc3RhbmNlKG5vZGUucGFyZW50LCBMaXN0
Tm9kZSkgYW5kCkBAIC0xMDMsNyArMTAwLDcgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5v
ZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdmlzaXRfTnVtYmVyTm9k
ZShzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAg
cmV0dXJuIFtlbnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZpc2l0X1ZhcmlhYmxl
Tm9kZShzZWxmLCBub2RlKToKICAgICAgICAgcnYgPSBlc2NhcGUobm9kZS5kYXRhKQpAQCAtMTM3
LDEwICsxMzQsMTAgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAg
ICAgICAgcmV0dXJuIFsiICIuam9pbihjaGlsZHJlbildCiAKICAgICBkZWYgdmlzaXRfVW5hcnlP
cGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5vZGUuZGF0YSld
CisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogICAgIGRlZiB2aXNp
dF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5v
ZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogCiBk
ZWYgc2VyaWFsaXplKHRyZWUsICphcmdzLCAqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CmluZGV4IGZiYzc1ZWM4Mzkw
ZmEzNGFiN2UzY2FhMzkxYzNlNmU3ODM3YTU1NGQuLmFmNGQ5OTYwMzIyYzdlOGRmY2NiMDc2YTJl
NDY2MTI1NDU3ZDE4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CkBAIC0xLDE5ICsxLDE1IEBACi1pbXBvcnQgcHl0ZXN0Ci1p
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLmJhY2tlbmRzIGltcG9ydCBjb25k
aXRpb25hbAogZnJvbSAuLm5vZGUgaW1wb3J0IEJpbmFyeUV4cHJlc3Npb25Ob2RlLCBCaW5hcnlP
cGVyYXRvck5vZGUsIFZhcmlhYmxlTm9kZSwgTnVtYmVyTm9kZQogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3
cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUZXN0Q29uZGl0
aW9uYWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNlbGYsIGlucHV0X3Rl
eHQpOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShpbnB1dF90ZXh0KQogCiAg
ICAgZGVmIHRlc3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0
YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI1LDE5ICsyMSwxOSBAQCBr
ZXk6IHZhbHVlCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCiAgICAg
ICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJl
bigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hpbGRyZW4pLCAxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAgICAgICAgIHNlY3Rpb24gPSBj
aGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLm5hbWUsICJIZWFk
aW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcg
MSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIs
IHsiYSI6IDF9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSksICJ2YWx1ZV8zIikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIpLCAidmFsdWUiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAx
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3Ro
ZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikKIAogICAgIGRlZiB0
ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIi
CiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MiwxMSArNDgsMTEgQEAga2V5OiB2YWx1
ZQogICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVy
Y2hpbGRyZW4oKSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6ICIxIn0pLCAidmFs
dWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXki
LCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMyIp
CiAKICAgICBkZWYgdGVzdF9nZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAg
ICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhWzFdID09ICJiIjogdmFsdWVfMQogICBpZiBhWzFd
ID09IDI6IHZhbHVlXzIKQEAgLTY1LDExICs2MSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5p
ZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYWIi
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtl
eSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVzdF9nZXRfMyhzZWxm
KToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBh
WzFdID09ICJhYiJbMV06IHZhbHVlXzEKICAgaWYgYVsxXSA9PSAyOiB2YWx1ZV8yCkBAIC03OCwx
MSArNzQsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEp
CiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAi
YWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0
KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0pLCAidmFsdWVfMSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZh
bHVlXzIiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIK
KyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6IHZhbHVlXzEKICAgaWYg
YSA9PSAiYiI6IHZhbHVlXzIKQEAgLTkyLDEwICs4OCwxMCBAQCBrZXk6CiAKICAgICAgICAgbWFu
aWZlc3Quc2V0KCJuZXdfa2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJuZXdfa2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVfbmV3IikKIAogICAg
IGRlZiB0ZXN0X3NldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEg
PSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2YWx1
ZV8yCkBAIC0xMDYsMTEgKzEwMiwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0KCJr
ZXkiLCAidmFsdWVfbmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5n
ZXQoImtleSIpLCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZl
c3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKIAog
ICAgIGRlZiB0ZXN0X3NldF8yKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRh
dGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2
YWx1ZV8yCkBAIC0xMjUsMTEgKzEyMSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0
KCJrZXkiLCAidmFsdWVfbmV3IiwgZXhwcikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
YW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwg
InZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBpXzAoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAx
LjU6IHZhbHVlXzEKICAgdmFsdWVfMgpAQCAtMTM4LDggKzEzNCw4IEBAIGtleV8xOiBvdGhlcl92
YWx1ZQogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNf
a2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5p
dGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggODA1ZTQ3YjM3MWY1YTcz
MDc2NWYzZTVkMWFjNWY2Yzk0ZGMzZTk5Ny4uMjNiZWIyYmVmMjA4YTIxMTA3YjEwODYyMGZkNTRm
MWVjNTY1NGQ4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3RfcGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Bh
cnNlci5weQpAQCAtMTgsOSArMTgsOSBAQCBjbGFzcyBUZXN0RXhwcmVzc2lvbih1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkKIAogICAgIGRl
ZiBtYXRjaChzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25h
bWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9kZVsxXSwgYWN0dWFs
X25vZGUuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGV4cGVjdGVkX25vZGVb
Ml0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxfbm9kZS5kYXRhKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9ub2RlWzJdKSwgbGVuKGFjdHVh
bF9ub2RlLmNoaWxkcmVuKSkKICAgICAgICAgZm9yIGV4cGVjdGVkX2NoaWxkLCBhY3R1YWxfY2hp
bGQgaW4gemlwKGV4cGVjdGVkX25vZGVbMl0sIGFjdHVhbF9ub2RlLmNoaWxkcmVuKToKICAgICAg
ICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGlsZCkKIApAQCAtMTA1
LDYgKzEwNSw0NSBAQCBrZXk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTogQHRydWUiKQogCisg
ICAgZGVmIHRlc3RfbGlzdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoCisgICAg
ICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTogW2FdCisgIFtiXSIiIiwKKyAgICAgICAg
ICAgIFsiRGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZhbHVlTm9kZSIsICJr
ZXkiLAorICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9uZSwKKyAgICAgICAg
ICAgICAgICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAg
ICAgIFtbIkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAgICAgICAgICAgICAg
ICAgWyJWYXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWyJO
dW1iZXJOb2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBbWyJW
YWx1ZU5vZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIs
ICJiIiwgW11dXV1dXV1dKQorCisgICAgZGVmIHRlc3RfbGlzdF9oZWFkaW5nKHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTog
W2FdCitbYl0iIiIsCisgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKKyAgICAgICAgICAg
ICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKKyAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFs
Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJlc3Npb25Ob2RlIiwg
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5vZGUiLCAiPT0iLCBb
XV0sCisgICAgICAgICAgICAgICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngiLCBbXV0sCisgICAg
ICAgICAgICAgICAgICAgICAgIFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisgICAgICAgICAgICAg
ICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwKKyAgICAgICAgICAg
ICAgICAgIF1dXV0sCisgICAgICAgICAgICAgIFsiRGF0YU5vZGUiLCAiYiIsIFtdXV1dKQorCiAg
ICAgZGVmIHRlc3RfaWZfMShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhw
YXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGIia2V5OiBpZiBmb28i
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFs
aXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIu
cHkKaW5kZXggN2ZlN2FjODVjYjhhMTRmMDUxMTNjYmZkNDgzYjhkMDQyYTA3Yjk4OS4uYjI0Nzg1
NTgwMWVhYzY1ODlhZWJkNDU1NWM2ZDllODY1M2UxMmU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC02LDggKzYsNiBAQCBp
bXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBwYXJzZXIsIHNlcmlhbGl6ZXIKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgog
ICAgICAgICBzZWxmLnNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyLk1hbmlmZXN0U2VyaWFsaXplcigp
CkBAIC0xOCwyNiArMTYsMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbnB1dF9zdHIsIGV4cGVjdGVkPU5vbmUpOgog
ICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnB1
dF9zdHIKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5lbmNvZGUoInV0ZjgiKQorICAgICAg
ICAgICAgZXhwZWN0ZWQgPSBpbnB1dF9zdHIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGFjdHVh
bCA9IHNlbGYuc2VyaWFsaXplKGlucHV0X3N0cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
YWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVj
dGVkKQogCiAgICAgZGVmIHRlc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtl
eTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAx
XQogICBvdGhlcl9rZXk6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9y
IGI6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
dmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9yIGI6IG90aGVyX3Zh
bHVlCkBAIC00NSw3ICs0Miw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJl
KCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVh
ZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAxOiBvdGhlcl92YWx1ZQpAQCAtNTMs
NyArNTAsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikK
IAogICAgIGRlZiB0ZXN0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZh
bHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAg
b3RoZXJfa2V5OgogICAgIGlmIGEgPT0gIjEiOiBvdGhlcl92YWx1ZQpAQCAtNjEsNyArNTgsNyBA
QCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRl
ZiB0ZXN0XzUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5
OgogICAgIGlmIGEgPT0gImFiYyJbMV06IG90aGVyX3ZhbHVlCkBAIC02OSw3ICs2Niw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAg
ICAgaWYgYSA9PSAiYWJjIltjXTogb3RoZXJfdmFsdWUKQEAgLTc3LDcgKzc0LDcgQEAgY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF83
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBp
ZiAoYSBvciBiKSBhbmQgYzogb3RoZXJfdmFsdWUKQEAgLTkxLDcgKzg4LDcgQEAgY2xhc3MgVG9r
ZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF84KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNv
bXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBh
IG9yIChiIGFuZCBjKTogb3RoZXJfdmFsdWUKQEAgLTk5LDcgKzk2LDcgQEAgY2xhc3MgVG9rZW5p
emVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF85KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBub3Qg
KGEgYW5kIGIpOiBvdGhlcl92YWx1ZQpAQCAtMTA3LDcgKzEwNCw3IEBAIGNsYXNzIFRva2VuaXpl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgc29tZV9rZXk6IHNvbWVfdmFsdWUKIApA
QCAtMTE2LDEyMSArMTEzLDEyNSBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzExKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUoIiIia2V5OgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleToKICAgaWYgbm90IGEgYW5k
IGIgYW5kIGMgYW5kIGQ6IHRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0XzEyKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIiW0hlYWRpbmcgMV0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIi
IiJbSGVhZGluZyAxXQogICBrZXk6IFthOjEsIGI6Ml0KICIiIikKIAogICAgIGRlZiB0ZXN0XzEz
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbYToxLCAiYjojIl0KKyAgICAg
ICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthOjEsICJiOiMiXQogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsiLCJdCisgICAgICAg
IHNlbGYuY29tcGFyZShiIiIia2V5OiBbIiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfMTUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6ICwKKyAgICAgICAgc2VsZi5jb21wYXJl
KGIiIiJrZXk6ICwKICIiIikKIAogICAgIGRlZiB0ZXN0XzE2KHNlbGYpOgotICAgICAgICBzZWxm
LmNvbXBhcmUoIiIia2V5OiBbIl0iLCBiXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
WyJdIiwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE3KHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUoIiIia2V5OiBdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBdCiAiIiIpCiAK
ICAgICBkZWYgdGVzdF8xOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFxd
CisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXF0KICAgICAgICAgIiIiLCAiIiJrZXk6
IF0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8wKHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUociIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCisgICAgICAgIHNlbGYuY29tcGFy
ZShiciIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCiAgICAgICAgICAgICAgICAgICAgICBy
IiIia1x0XDp5OiBceDA3XHgwOFx4MGNcblxyXHRceDBiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9l
c2NhcGVfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHgwMDogXHgxMkFceDQ1
IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHgwMDogXHgxMkFceDQ1IiIiLAogICAg
ICAgICAgICAgICAgICAgICAgciIiImtceDAwOiBceDEyQUUKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtcdTAwNDV5OiBcdTEy
MzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHUwMDQ1eTogXHUxMjM0
QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrRXk6IFx1MTIzNEFcdWFiYzYK
ICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8zKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUociIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUo
YnIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrRXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV80KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogJ1x1MTIzNEFcdUFCYzYnIiIiLAorICAg
ICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIiIiwKICAgICAgICAg
ICAgICAgICAgICAgIHUiIiJrZXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW1x1MTIzNEFc
dUFCYzZdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2
XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFtcdTEyMzRBXHVhYmM2XQogIiIi
KQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShy
IiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6
IFsiXHUxMjM0QVx1YWJjNiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzcoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBbXCxcXVwjXSIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBbXCxcXVwjXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHIi
IiJrZXk6IFsiLF0jIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV84KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXCMiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXCMiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia2V5OiAiIyIKICIiIikK
IAogICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMubWF4dW5pY29kZSA9PSAweEZGRkYsIHJlYXNv
bj0ibmFycm93IHVuaWNvZGUiKQogICAgIGRlZiB0ZXN0X2VzY2FwZV85KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogXFUxMEZGRkZhYmMiIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogXFUxMEZGRkZhYmMiIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIi
a2V5OiBcVTAwMTBGRkZGYWJjCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcdTEwRkZhYiIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBcdTEwRkZhYiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrZXk6IFx1MTBGRmFiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTEoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcXGFiCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXFxhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8xKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogQFRydWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBAVHJ1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUociIiImtleTogQEZhbHNlCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtl
eTogQEZhbHNlCiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzMoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBAUmVzZXQKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5
OiBAUmVzZXQKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fNChzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKHIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogW2EsIEBSZXNldCwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2NvbmRpdGlvbmFs
XzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286CisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQogCiAgICAgZGVmIHRlc3Rf
aWZfc3RyaW5nXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286ICJpZiBiYXIi
CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOiAiaWYgYmFyIgorIiIiKQorCisgICAgZGVm
IHRlc3Rfbm9uX2FzY2lpXzEoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiW1x4ZjBc
eDlmXHg5OVx4ODRdCiAiIiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVz
dF9zdGF0aWMucHkKaW5kZXggYWFmODQ2NTkxNTI0NmFhYzU4YTA2OGRjZmMwNjk3YjhjOWFmNDE4
MS4uZTgxMWEyYjQyYjQ1NTBjY2VjMWNkYTlmNmIxYTJiOWJiMjcwZmFjZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAtMSw1ICsxLDMgQEAK
LWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uYmFj
a2VuZHMgaW1wb3J0IHN0YXRpYwpAQCAtOCwxNCArNiwxMiBAQCBmcm9tIC4uYmFja2VuZHMgaW1w
b3J0IHN0YXRpYwogIyB1c2UgdGVzdF9zZXJpYWxpemVyIGZvciB0aGUgbWFqb3JpdHkgb2YgY2Fz
ZXMKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogY2xhc3MgVGVzdFN0YXRpYyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNvbXBp
bGUoc2VsZiwgaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSk6CiAgICAgICAgIHJldHVybiBzdGF0aWMu
Y29tcGlsZShpbnB1dF90ZXh0LCBpbnB1dF9kYXRhKQogCiAgICAgZGVmIHRlc3RfZ2V0XzAoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUK
IAogW0hlYWRpbmcgMV0KQEAgLTI3LDE3ICsyMywxNyBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAg
bWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMn0pCiAKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQogICAgICAgICBjaGlsZHJl
biA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRyZW4oKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9uID0gY2hpbGRyZW5bMF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFkaW5nIDEiKQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzIi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIpLCAidmFs
dWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoImtleSIpLCAidmFs
dWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTUwLDMyICs0
NiwzMiBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0
ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rpb24gPSBjaGlsZHJl
blswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5Iiks
ICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJf
a2V5IiksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYpOgotICAgICAgICBk
YXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYgYSA9PSAiMSI6IHZh
bHVlXzEKICAgaWYgYVswXSA9PSAiYWIiWzBdOiB2YWx1ZV8yCiAiIiIKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogIjEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgICAgICBtYW5pZmVz
dCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAiYWMifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAgIGRlZiB0ZXN0X2dl
dF80KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtl
eToKICAgaWYgbm90IGE6IHZhbHVlXzEKICAgdmFsdWVfMgogIiIiCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IFRydWV9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQogCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IEZhbHNlfSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X2Fw
aShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIiIiJrZXk6
CiAgIGlmIGEgPT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKIGtleV8xOiBvdGhlcl92YWx1ZQpA
QCAtODMsMTUgKzc5LDE1IEBAIGtleV8xOiBvdGhlcl92YWx1ZQogICAgICAgICBtYW5pZmVzdCA9
IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAxLjV9KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0
LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LnJvb3Qs
IG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3QuaGFzX2tleSgia2V5
XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMiIp
KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwg
eyJrZXkiLCAia2V5XzEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0
Lml0ZXJ2YWx1ZXMoKSksIHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcnZhbHVlcygpKSwgeyJ2
YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIn0pCiAKICAgICBkZWYgdGVzdF9pc19lbXB0eV8xKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBbU2VjdGlvbl0KICAg
W1N1YnNlY3Rpb25dCiAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CmluZGV4IGNhYzE3MmE1OTQwZWM2OTZlM2EzYjI3
OTE3MGY5NzEyYWFmNDY2OGQuLmQwY2MxOTQ4MWRiZGVkYzQ1ZWRmZWU5NjA4ZDgyZGViNGExOTY1
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdHJ1bm5lci5weQpAQCAtMywxOSArMywyMSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGZy
b20gd3B0c2VydmUgaW1wb3J0IHNzbHV0aWxzCiAKLWltcG9ydCBlbnZpcm9ubWVudCBhcyBlbnYK
LWltcG9ydCBwcm9kdWN0cwotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3cHRjb21tYW5kbGlu
ZQotaW1wb3J0IHdwdGxvZ2dpbmcKLWltcG9ydCB3cHR0ZXN0Citmcm9tIC4gaW1wb3J0IGVudmly
b25tZW50IGFzIGVudgorZnJvbSAuIGltcG9ydCBpbnN0cnVtZW50cworZnJvbSAuIGltcG9ydCBw
cm9kdWN0cworZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCitmcm9tIC4gaW1wb3J0IHdwdGNvbW1h
bmRsaW5lCitmcm9tIC4gaW1wb3J0IHdwdGxvZ2dpbmcKK2Zyb20gLiBpbXBvcnQgd3B0dGVzdAog
ZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCi1mcm9tIGZvbnQgaW1wb3J0IEZv
bnRJbnN0YWxsZXIKLWZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCi1mcm9tIGJy
b3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCitmcm9tIC5mb250IGltcG9ydCBGb250SW5z
dGFsbGVyCitmcm9tIC50ZXN0cnVubmVyIGltcG9ydCBNYW5hZ2VyR3JvdXAKK2Zyb20gLmJyb3dz
ZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmls
ZV9fKVswXQogCkBAIC00Myw3ICs0NSw3IEBAIGRlZiBzZXR1cF9sb2dnaW5nKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIGxvZ2dlcgogCiAKLWRlZiBnZXRfbG9hZGVyKHRlc3RfcGF0aHMs
IHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAqKmt3YXJncyk6Citk
ZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19l
eHRyYXM9Tm9uZSwgY2h1bmtlcl9rd2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgIGlmIHJ1bl9p
bmZvX2V4dHJhcyBpcyBOb25lOgogICAgICAgICBydW5faW5mb19leHRyYXMgPSB7fQogCkBAIC03
Niw3ICs3OCwxMCBAQCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1O
b25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz1rd2FyZ3NbInRvdGFsX2NodW5rcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcj1r
d2FyZ3NbInRoaXNfY2h1bmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlX2h0dHBzPXNzbF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGltZW91dCJdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcXVpYz1rd2FyZ3Nb
ImVuYWJsZV9xdWljIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2tpcF90aW1lb3V0PWt3YXJnc1sic2tpcF90aW1lb3V0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXM9a3dhcmdzWyJz
a2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzKQogICAgIHJldHVybiBy
dW5faW5mbywgdGVzdF9sb2FkZXIKIAogCkBAIC0xMDIsNyArMTA3LDcgQEAgZGVmIGxpc3RfZGlz
YWJsZWQodGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgIHJ1bl9pbmZvLCB0ZXN0
X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1ydW5faW5mb19leHRyYXMs
ICoqa3dhcmdzKQogCi0gICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlz
YWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gaXRl
cml0ZW1zKHRlc3RfbG9hZGVyLmRpc2FibGVkX3Rlc3RzKToKICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6
IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpA
QCAtMTI3LDcgKzEzMiw3IEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0ZXN0X2xvYWRlciwg
Kiprd2FyZ3MpOgogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgdGVzdHMgPSB0ZXN0X2xvYWRlci50ZXN0cwotICAgICAgICBp
c19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0cy5p
dGVydmFsdWVzKCkpID09IDEgYW5kCisgICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChz
dW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgidGVzdGhhcm5lc3Mi
LCBbXSkpID09IDEpCiAgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0gMSBhbmQga3dhcmdz
WyJyZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCkBAIC0xMzgsNyArMTQzLDEyIEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0
ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMs
IHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAiIiJTZXQgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQs
IGxvYWQgdGhlIGxpc3Qgb2YgdGVzdHMgdG8gYmUgZXhlY3V0ZWQsIGFuZAogICAgIGludm9rZSB0
aGUgcmVtYWluZGVyIG9mIHRoZSBjb2RlIHRvIGV4ZWN1dGUgdGVzdHMiIiIKLSAgICB3aXRoIGNh
cHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRpbyJdKToK
KyAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6CisgICAgICAgIHJl
Y29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQorICAgIGVsc2U6CisgICAgICAg
IHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImluc3RydW1lbnRfdG9f
ZmlsZSJdKQorICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJ
Tyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgICAgIHJlY29y
ZGluZy5zZXQoWyJzdGFydHVwIl0pCiAgICAgICAgIGVudi5kb19kZWxheWVkX2ltcG9ydHMobG9n
Z2VyLCB0ZXN0X3BhdGhzKQogCiAgICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0cy5sb2FkX3Byb2R1
Y3QoY29uZmlnLCBwcm9kdWN0LCBsb2FkX2Nscz1UcnVlKQpAQCAtMTQ5LDIyICsxNTksMjkgQEAg
ZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAog
ICAgICAgICBpZiBrd2FyZ3NbImluc3RhbGxfZm9udHMiXToKICAgICAgICAgICAgIGVudl9leHRy
YXMuYXBwZW5kKEZvbnRJbnN0YWxsZXIoCisgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAg
ICAgICAgICAgIGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKICAgICAgICAgICAgICAgICBh
aGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgiXSwgImZvbnRzL0Fo
ZW0udHRmIikKICAgICAgICAgICAgICkpCiAKLSAgICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVy
ID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKipr
d2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJsb2FkX3Rlc3RzIl0pCiAK
ICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBrd2FyZ3NbInByb2Nl
c3NlcyJdfQorICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAgIGlmIGt3YXJnc1si
cnVuX2J5X2RpciJdIGlzIEZhbHNlOgogICAgICAgICAgICAgdGVzdF9zb3VyY2VfY2xzID0gdGVz
dGxvYWRlci5TaW5nbGVUZXN0U291cmNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEg
dmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgaW5maW5pdGUgZGVwdGgKICAgICAgICAgICAgIHRlc3Rf
c291cmNlX2NscyA9IHRlc3Rsb2FkZXIuUGF0aEdyb3VwZWRTb3VyY2UKICAgICAgICAgICAgIHRl
c3Rfc291cmNlX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisgICAgICAg
ICAgICBjaHVua2VyX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisKKyAg
ICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9
cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCiAKICAg
ICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nICVpIGNsaWVudCBwcm9jZXNzZXMiICUga3dhcmdzWyJw
cm9jZXNzZXMiXSkKIApAQCAtMTg4LDE5ICsyMDUsMjQgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcs
IHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICB0ZXN0aGFybmVzc190
aW1lb3V0X211bHRpcGxlciA9IHByb2R1Y3QuZ2V0X3RpbWVvdXRfbXVsdGlwbGllcigidGVzdGhh
cm5lc3MiLCBydW5faW5mbywgKiprd2FyZ3MpCiAKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0
YXJ0dXAiLCAic3RhcnRfZW52aXJvbm1lbnQiXSkKICAgICAgICAgd2l0aCBlbnYuVGVzdEVudmly
b25tZW50KHRlc3RfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aGFybmVzc190aW1lb3V0X211bHRpcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9kdWN0LmVudl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3NsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9l
eHRyYXMpIGFzIHRlc3RfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdz
WyJlbmFibGVfcXVpYyJdKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgcmVjb3Jk
aW5nLnNldChbInN0YXJ0dXAiLCAiZW5zdXJlX2Vudmlyb25tZW50Il0pCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5lbnN1cmVfc3RhcnRlZCgpCiAg
ICAgICAgICAgICBleGNlcHQgZW52LlRlc3RFbnZpcm9ubWVudEVycm9yIGFzIGU6CiAgICAgICAg
ICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJFcnJvciBzdGFydGluZyB0ZXN0IGVudmlyb25tZW50
OiAlcyIgJSBlLm1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAg
cmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKKwogICAgICAgICAgICAgcmVwZWF0ID0ga3dhcmdz
WyJyZXBlYXQiXQogICAgICAgICAgICAgcmVwZWF0X2NvdW50ID0gMAogICAgICAgICAgICAgcmVw
ZWF0X3VudGlsX3VuZXhwZWN0ZWQgPSBrd2FyZ3NbInJlcGVhdF91bnRpbF91bmV4cGVjdGVkIl0K
QEAgLTIxNCw3ICsyMzYsMTIgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICAgICAgICAgIHRlc3RfY291bnQgPSAwCiAgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICBsb2dnZXIu
c3VpdGVfc3RhcnQodGVzdF9sb2FkZXIudGVzdF9pZHMsCisKKyAgICAgICAgICAgICAgICB0ZXN0
cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X2xvYWRlci50ZXN0
X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQodGVzdF9sb2FkZXIudGVz
dHNbdGVzdF90eXBlXSkKKworICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0
X3NvdXJjZV9jbHMudGVzdHNfYnlfZ3JvdXAodGVzdHMsICoqdGVzdF9zb3VyY2Vfa3dhcmdzKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nd2ViLXBsYXRmb3JtLXRl
c3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz1ydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9eyJydW5fYnlfZGly
Ijoga3dhcmdzWyJydW5fYnlfZGlyIl19KQpAQCAtMjY2LDYgKzI5Myw3IEBAIGRlZiBydW5fdGVz
dHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVzdHMgPSB0ZXN0X2xv
YWRlci50ZXN0cwogCisgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZy5wYXVzZSgpCiAgICAg
ICAgICAgICAgICAgICAgIHdpdGggTWFuYWdlckdyb3VwKCJ3ZWItcGxhdGZvcm0tdGVzdHMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInByb2Nlc3NlcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NvdXJjZV9jbHMs
CkBAIC0yNzksNyArMzA3LDggQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJwYXVzZV9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJnc1sicmVzdGFydF9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0
ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPXJlY29yZGluZykgYXMgbWFuYWdlcl9ncm91
cDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5hZ2VyX2dyb3VwLnJ1bih0ZXN0X3R5cGUsIHJ1bl90ZXN0cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKQEAgLTI4OCw3ICszMTcsNyBA
QCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudGVzdF9jb3VudCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudW5leHBlY3RlZF9j
b3VudCgpCi0KKyAgICAgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsiYWZ0ZXItZW5kIl0pCiAg
ICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBlY3RlZF9jb3VudCkK
QEAgLTMxNyw3ICszNDYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJv
ZHVjdCwgKiprd2FyZ3MpOgogCiAKIGRlZiBjaGVja19zdGFiaWxpdHkoKiprd2FyZ3MpOgotICAg
IGltcG9ydCBzdGFiaWxpdHkKKyAgICBmcm9tIC4gaW1wb3J0IHN0YWJpbGl0eQogICAgIGlmIGt3
YXJnc1sic3RhYmlsaXR5Il06CiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCItLXN0YWJpbGl0eSBp
cyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIC0tdmVyaWZ5IGluc3RlYWQhIikKICAgICAgICAga3dh
cmdzWyd2ZXJpZnlfbWF4X3RpbWUnXSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKaW5kZXggMWQxNGY0ZWZlZWFlMjc5
YzJjMzYwZmJhMTM4OGVhNWYzYTQzODc3Zi4uNmIwZmFiNmVlYmFmNTA1ZmZkMjA3MTBlMWEyY2E0
NmUzZDZmNTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgb3MKIGltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKIAogZnJvbSAud3B0bWFuaWZlc3QucGFyc2Vy
IGltcG9ydCBhdG9tcwogCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9tb3ppbmZvKG1ldGFkYXRhX3Jvb3QpCiAgICAgICAgIHNlbGYu
dXBkYXRlKG1vemluZm8uaW5mbykKIAotICAgICAgICBmcm9tIHVwZGF0ZS50cmVlIGltcG9ydCBH
aXRUcmVlCisgICAgICAgIGZyb20gLnVwZGF0ZS50cmVlIGltcG9ydCBHaXRUcmVlCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgICMgR2l0VHJlZS5fX2luaXRfXyB0aHJvd3MgaWYgd2UgYXJlIG5v
dCBpbiBhIGdpdCB0cmVlLgogICAgICAgICAgICAgcmV2ID0gR2l0VHJlZShsb2dfZXJyb3I9RmFs
c2UpLnJldgpAQCAtMTAxLDYgKzEwMyw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAg
IGlmIHJldjoKICAgICAgICAgICAgIHNlbGZbInJldmlzaW9uIl0gPSByZXYKIAorICAgICAgICBz
ZWxmWyJweXRob25fdmVyc2lvbiJdID0gc3lzLnZlcnNpb25faW5mby5tYWpvcgogICAgICAgICBz
ZWxmWyJwcm9kdWN0Il0gPSBwcm9kdWN0CiAgICAgICAgIGlmIGRlYnVnIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgc2VsZlsiZGVidWciXSA9IGRlYnVnCkBAIC0xMTgsMjIgKzEyMSw5IEBAIGNs
YXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIGlmIGV4dHJhcyBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHNlbGYudXBkYXRlKGV4dHJhcykKIAotICAgICAgICAjIFVudGlsIHRoZSB0ZXN0IGhh
cm5lc3MgY2FuIHVuZGVyc3RhbmQgZGVmYXVsdCBwcmVmIHZhbHVlcywKLSAgICAgICAgIyAoaHR0
cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzkxMikgdGhpcyB2
YWx1ZQotICAgICAgICAjIHNob3VsZCBieSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgZGVmYXVsdCBw
cmVmIHZhbHVlIGluZGljYXRlZCBpbgotICAgICAgICAjIFN0YXRpY1ByZWZMaXN0LnlhbWwuCi0g
ICAgICAgICMKLSAgICAgICAgIyBDdXJyZW50bHkgZm9yIGF1dG9tYXRpb24sIHRoZSBwcmVmIChh
bmQgYHN3LWUxMHNgKSBkZWZhdWx0cyB0byB0cnVlIGluCi0gICAgICAgICMgbmlnaHRseSBidWls
ZHMgYW5kIGZhbHNlIG90aGVyd2lzZSBidXQgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aAotICAgICAg
ICAjIGAtLXNldHByZWZgLiBJZiBvdmVycmlkZGVuLCB0aGUgdmFsdWUgd291bGQgYmUgaW5pdGlh
bGl6ZWQgaW4KLSAgICAgICAgIyBgcnVuX2luZm9fZXh0cmFzYCBhbmQgYmUgc3VwcGxpZWQgaW4g
dGhlIGBleHRyYXNgIHBhcmFtZXRlci4KLSAgICAgICAgaWYgInN3LWUxMHMiIG5vdCBpbiBzZWxm
OgotICAgICAgICAgICAgc2VsZlsic3ctZTEwcyJdID0gc2VsZi5nZXQoIm5pZ2h0bHlfYnVpbGQi
LCBGYWxzZSkKLQogICAgICAgICBzZWxmWyJoZWFkbGVzcyJdID0gZXh0cmFzLmdldCgiaGVhZGxl
c3MiLCBGYWxzZSkKICAgICAgICAgc2VsZlsid2VicmVuZGVyIl0gPSBlbmFibGVfd2VicmVuZGVy
CiAKLQogICAgIGRlZiBfdXBkYXRlX21vemluZm8oc2VsZiwgbWV0YWRhdGFfcm9vdCk6CiAgICAg
ICAgICIiIkFkZCBleHRyYSBidWlsZCBpbmZvcm1hdGlvbiBmcm9tIGEgbW96aW5mby5qc29uIGZp
bGUgaW4gYSBwYXJlbnQKICAgICAgICAgZGlyZWN0b3J5IiIiCkBAIC0xNTAsNiArMTQwLDE0IEBA
IGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIG1vemluZm8uZmluZF9hbmRfdXBkYXRlX2Zy
b21fanNvbigqZGlycykKIAogCitkZWYgc2VydmVyX3Byb3RvY29sKG1hbmlmZXN0X2l0ZW0pOgor
ICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImgyIikgYW5kIG1hbmlmZXN0X2l0ZW0uaDI6
CisgICAgICAgIHJldHVybiAiaDIiCisgICAgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAiaHR0
cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwczoKKyAgICAgICAgcmV0dXJuICJodHRwcyIKKyAg
ICByZXR1cm4gImh0dHAiCisKKwogY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgcmVzdWx0X2Ns
cyA9IE5vbmUKQEAgLTE2MCwxNCArMTU4LDE0IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICBs
b25nX3RpbWVvdXQgPSA2MCAgIyBzZWNvbmRzCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLAotICAgICAgICAg
ICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiKToKKyAgICAg
ICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgcXVp
Yz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKICAgICAgICAg
c2VsZi51cmwgPSB1cmwKICAgICAgICAgc2VsZi5faW5oZXJpdF9tZXRhZGF0YSA9IGluaGVyaXRf
bWV0YWRhdGEKICAgICAgICAgc2VsZi5fdGVzdF9tZXRhZGF0YSA9IHRlc3RfbWV0YWRhdGEKICAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGVsc2Ug
c2VsZi5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotICAgICAgICBz
ZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAicHJlZnMiOiBzZWxmLnBy
ZWZzfQorICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAi
cHJlZnMiOiBzZWxmLnByZWZzLCAicXVpYyI6IHF1aWN9CiAKICAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRlc3QpOgpAQCAtMTg2
LDE0ICsxODQsMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfaXRlbSwgaW5o
ZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9u
Z190aW1lb3V0IGlmIG1hbmlmZXN0X2l0ZW0udGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVm
YXVsdF90aW1lb3V0Ci0gICAgICAgIHByb3RvY29sID0gImh0dHBzIiBpZiBoYXNhdHRyKG1hbmlm
ZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVsc2UgImh0dHAiCiAg
ICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAg
ICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0
YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpv
aW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAotICAgICAg
ICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQorICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVtKSkKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpZChzZWxmKToKQEAgLTI2Miw2ICsyNTksMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudAogICAgICAgICByZXR1cm4gMAogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIGZvciBtZXRhIGlu
IHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGlmIG1ldGEubHNhbl9kaXNhYmxlZCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0YS5sc2FuX2Rpc2FibGVkCisgICAg
ICAgIHJldHVybiBGYWxzZQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChz
ZWxmKToKICAgICAgICAgbHNhbl9hbGxvd2VkID0gc2V0KCkKQEAgLTI5NSw3ICsyOTksNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG1ldGEgaW4g
c2VsZi5pdGVybWV0YShOb25lKToKICAgICAgICAgICAgIHRocmVzaG9sZCA9IG1ldGEubGVha190
aHJlc2hvbGQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHRocmVzaG9sZC5pdGVyaXRl
bXMoKToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyh0aHJlc2hvbGQp
OgogICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAgICAg
IHJ2W2tleV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKQEAgLTMzNyw3ICszNDEsNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0ZWQg
PSBtZXRhZGF0YS5nZXQoImV4cGVjdGVkIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhw
ZWN0ZWQsIChiYXNlc3RyaW5nKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVk
LCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZAogICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRbMF0KQEAgLTM0Niw2ICszNTAsMTYgQEAgY2xhc3MgVGVzdChvYmplY3Qp
OgogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAog
CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgaW1wbGVtZW50
YXRpb25fc3RhdHVzID0gTm9uZQorICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKCk6
CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBtZXRhLmltcGxlbWVudGF0aW9u
X3N0YXR1cworICAgICAgICAgICAgaWYgaW1wbGVtZW50YXRpb25fc3RhdHVzOgorICAgICAgICAg
ICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMKKworICAgICAgICAjIGFzc3VtaW5n
IG5vIHNwZWNpZmljIGNhc2UsIHdlIGFyZSBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgcmV0dXJu
ICJpbXBsZW1lbnRpbmciCisKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYsIHN1YnRl
c3Q9Tm9uZSk6CiAgICAgICAgIG1ldGFkYXRhID0gc2VsZi5fZ2V0X21ldGFkYXRhKHN1YnRlc3Qp
CiAgICAgICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6CkBAIC0zODEsOSArMzk1LDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NUZXN0KFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jv
b3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgdGVzdGRyaXZlcj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lKToKKyAg
ICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lLCBxdWljPUZhbHNlKToK
ICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMp
CiAKICAgICAgICAgc2VsZi50ZXN0ZHJpdmVyID0gdGVzdGRyaXZlcgogICAgICAgICBzZWxmLmpz
c2hlbGwgPSBqc3NoZWxsCkBAIC0zOTIsMjIgKzQwNiwyMyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rl
c3QoVGVzdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBt
YW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFk
YXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRl
bS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLSAgICAgICAgcHJv
dG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1h
bmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRyaXZlciA9IG1hbmlm
ZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJ0ZXN0ZHJpdmVy
IikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRlbS5qc3NoZWxsIGlm
IGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNlCisgICAgICAgIHF1
aWMgPSBtYW5pZmVzdF9pdGVtLnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAicXVpYyIp
IGVsc2UgRmFsc2UKICAgICAgICAgc2NyaXB0X21ldGFkYXRhID0gbWFuaWZlc3RfaXRlbS5zY3Jp
cHRfbWV0YWRhdGEgb3IgW10KLSAgICAgICAgc2NyaXB0cyA9IFt2IGZvciAoaywgdikgaW4gc2Ny
aXB0X21ldGFkYXRhIGlmIGsgPT0gYiJzY3JpcHQiXQorICAgICAgICBzY3JpcHRzID0gW3YgZm9y
IChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICBpZiBrID09ICJz
Y3JpcHQiXQogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAgICAgICAgICAgICBp
bmhlcml0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHBhdGg9
b3MucGF0aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZlc3RfaXRlbS5wYXRo
KSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCwKKyAgICAgICAgICAgICAg
ICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSksCiAgICAgICAgICAg
ICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAgICAgICAgICAgICAgICAgIGpzc2hl
bGw9anNzaGVsbCwKLSAgICAgICAgICAgICAgICAgICBzY3JpcHRzPXNjcmlwdHMKLSAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3JpcHRzLAorICAgICAg
ICAgICAgICAgICAgIHF1aWM9cXVpYykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChzZWxm
KToKQEAgLTQyMywxMyArNDM4LDI0IEBAIGNsYXNzIE1hbnVhbFRlc3QoVGVzdCk6CiAKIAogY2xh
c3MgUmVmdGVzdFRlc3QoVGVzdCk6CisgICAgIiIiQSByZWZ0ZXN0CisKKyAgICBBIHJlZnRlc3Qg
c2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gcGFzcyBpZiBvbmUgb2YgaXRzIHJlZmVyZW5jZXMgbWF0
Y2hlcyAoc2VlIGJlbG93KSAqYW5kKiB0aGUKKyAgICByZWZlcmVuY2UgcGFzc2VzIGlmIGl0IGhh
cyBhbnkgcmVmZXJlbmNlcyByZWN1cnNpdmVseS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICAg
IHJlZmVyZW5jZXMgKExpc3RbVHVwbGVbc3RyLCBzdHJdXSk6IGEgbGlzdCBvZiBhbHRlcm5hdGUg
cmVmZXJlbmNlcywgd2hlcmUgb25lIG11c3QgbWF0Y2ggZm9yIHRoZSB0ZXN0IHRvIHBhc3MKKyAg
ICAgICAgdmlld3BvcnRfc2l6ZSAoT3B0aW9uYWxbVHVwbGVbaW50LCBpbnRdXSk6IHNpemUgb2Yg
dGhlIHZpZXdwb3J0IGZvciB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0CisgICAgICAgIGRwaSAo
T3B0aW9uYWxbaW50XSk6IGRwaSB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhpcyB0ZXN0LCBpZiBu
b3QgZGVmYXVsdAorCisgICAgIiIiCiAgICAgcmVzdWx0X2NscyA9IFJlZnRlc3RSZXN1bHQKICAg
ICB0ZXN0X3R5cGUgPSAicmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19y
b290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCi0g
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5v
bmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAg
ICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6ZT1Ob25lLCBkcGk9Tm9u
ZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVz
dC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3Rf
bWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wp
CisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMpCiAKICAgICAgICAg
Zm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBpZiByZWZfdHlwZSBu
b3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNDQ1LDE2ICs0NzEsMTAgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAgICAgICAgICAgICAgIGluaGVy
aXRfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICBub2Rlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXNfc2Vlbj1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21ldGFkYXRhKToK
IAogICAgICAgICB0aW1lb3V0ID0gY2xzLmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF90ZXN0LnRp
bWVvdXQgPT0gImxvbmciIGVsc2UgY2xzLmRlZmF1bHRfdGltZW91dAotCi0gICAgICAgIGlmIG5v
ZGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlcyA9IHt9Ci0gICAgICAgIGlmIHJlZmVyZW5j
ZXNfc2VlbiBpcyBOb25lOgotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuID0gc2V0KCkKKyAg
ICAgICAgcXVpYyA9IG1hbmlmZXN0X3Rlc3QucXVpYyBpZiBoYXNhdHRyKG1hbmlmZXN0X3Rlc3Qs
ICJxdWljIikgZWxzZSBGYWxzZQogCiAgICAgICAgIHVybCA9IG1hbmlmZXN0X3Rlc3QudXJsCiAK
QEAgLTQ2Nyw0MSArNDg3LDYwIEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgIHBhdGg9bWFuaWZlc3RfdGVzdC5wYXRoLAogICAgICAgICAgICAgICAgICAgIHZp
ZXdwb3J0X3NpemU9bWFuaWZlc3RfdGVzdC52aWV3cG9ydF9zaXplLAogICAgICAgICAgICAgICAg
ICAgIGRwaT1tYW5pZmVzdF90ZXN0LmRwaSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD0i
aHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBzIikgYW5kIG1hbmlmZXN0X3Rl
c3QuaHR0cHMgZWxzZSAiaHR0cCIsCi0gICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3Rf
dGVzdC5mdXp6eSkKKyAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wo
bWFuaWZlc3RfdGVzdCksCisgICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3RfdGVzdC5m
dXp6eSwKKyAgICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKLSAgICAgICAgbm9kZXNbdXJs
XSA9IG5vZGUKKyAgICAgICAgcmVmc19ieV90eXBlID0gZGVmYXVsdGRpY3QobGlzdCkKIAogICAg
ICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gbWFuaWZlc3RfdGVzdC5yZWZlcmVuY2VzOgot
ICAgICAgICAgICAgY29tcGFyaXNvbl9rZXkgPSAocmVmX3R5cGUsKSArIHR1cGxlKHNvcnRlZChb
dXJsLCByZWZfdXJsXSkpCi0gICAgICAgICAgICBpZiByZWZfdXJsIGluIG5vZGVzOgotICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSByZWZfdXJsCi0gICAgICAgICAgICAgICAgaWYgY29t
cGFyaXNvbl9rZXkgaW4gcmVmZXJlbmNlc19zZWVuOgotICAgICAgICAgICAgICAgICAgICAjIFdl
IGhhdmUgcmVhY2hlZCBhIGN5Y2xlIHNvIHN0b3AgaGVyZQotICAgICAgICAgICAgICAgICAgICAj
IE5vdGUgdGhhdCBqdXN0IHNlZWluZyBhIG5vZGUgZm9yIHRoZSBzZWNvbmQgdGltZSBpcyBub3QK
LSAgICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IGEgY3ljbGUgYmVjYXVzZQot
ICAgICAgICAgICAgICAgICAgICAjIEEgIT0gQiAhPSBDICE9IEEgbXVzdCBpbmNsdWRlIEMgIT0g
QQotICAgICAgICAgICAgICAgICAgICAjIGJ1dCBBID09IEIgPT0gQSBzaG91bGQgbm90IGluY2x1
ZGUgdGhlIHJlZHVuZGFudCBCID09IEEuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0K
LSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2Vlbi5hZGQoY29tcGFyaXNvbl9rZXkpCi0KLSAgICAg
ICAgICAgIG1hbmlmZXN0X25vZGUgPSBtYW5pZmVzdF9maWxlLmdldF9yZWZlcmVuY2UocmVmX3Vy
bCkKLSAgICAgICAgICAgIGlmIG1hbmlmZXN0X25vZGU6Ci0gICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdF9maWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAg
ICAgICAgIHJlZnNfYnlfdHlwZVtyZWZfdHlwZV0uYXBwZW5kKHJlZl91cmwpCisKKyAgICAgICAg
IyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGFsbCB0aGUgbWlzbWF0Y2hlcywgd2hlcmUgd2UgZW5kIHVw
IHdpdGggbWlzbWF0Y2hfMSAhPSB1cmwgIT0KKyAgICAgICAgIyBtaXNtYXRjaF8yICE9IHVybCAh
PSBtaXNtYXRjaF8zIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9j
dW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1pc21hdGNoZXMgcHJv
dmlkZWQgbWF0Y2gsCisgICAgICAgIG1pc21hdGNoX3dhbGsgPSBOb25lCisgICAgICAgIGlmIHJl
ZnNfYnlfdHlwZVsiIT0iXToKKyAgICAgICAgICAgIG1pc21hdGNoX3dhbGsgPSBSZWZ0ZXN0VGVz
dChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmc19ieV90eXBlWyIhPSJdWzBdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
Ci0KLSAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZmVyZW5jZSwgcmVmX3R5
cGUpKQorICAgICAgICAgICAgY21wX3JlZiA9IG1pc21hdGNoX3dhbGsKKyAgICAgICAgICAgIGZv
ciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiIT0iXVsxOl06CisgICAgICAgICAgICAgICAgY21w
X3NlbGYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKKyAg
ICAgICAgICAgICAgICBjbXBfcmVmLnJlZmVyZW5jZXMuYXBwZW5kKChjbXBfc2VsZiwgIiE9Iikp
CisgICAgICAgICAgICAgICAgY21wX3JlZiA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0X2ZpbGUudGVz
dHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9zZWxmLnJlZmVyZW5jZXMuYXBw
ZW5kKChjbXBfcmVmLCAiIT0iKSkKKworICAgICAgICBpZiBtaXNtYXRjaF93YWxrIGlzIE5vbmU6
CisgICAgICAgICAgICBtaXNtYXRjaF9yZWZzID0gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG1pc21hdGNoX3JlZnMgPSBbKG1pc21hdGNoX3dhbGssICIhPSIpXQorCisgICAgICAgIGlm
IHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAgICAgICAgICMgRm9yIGVhY2ggPT0gcmVmLCBhZGQg
YSByZWZlcmVuY2UgdG8gdGhpcyBub2RlIHdob3NlIHRhaWwgaXMgdGhlIG1pc21hdGNoIGxpc3Qu
CisgICAgICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFu
cyBhbnkgb25lIG9mIHRoZSBtYXRjaGVzIG11c3QgcGFzcyBwbHVzIGFsbCB0aGUgbWlzbWF0Y2hl
cy4KKyAgICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAg
ICAgICAgICAgICByZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc21hdGNoX3JlZnMp
CisgICAgICAgICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmFwcGVuZCgocmVmLCAiPT0iKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBqdXN0IGFkZCB0aGUgbWlz
bWF0Y2hlcyBkaXJlY3RseSBhcyB3ZSBhcmUgaW1tZWRpYXRlbHkgaW50byB0aGUKKyAgICAgICAg
ICAgICMgbWlzbWF0Y2ggY2hhaW4gd2l0aCBubyBhbHRlcm5hdGVzLgorICAgICAgICAgICAgbm9k
ZS5yZWZlcmVuY2VzLmV4dGVuZChtaXNtYXRjaF9yZWZzKQogCiAgICAgICAgIHJldHVybiBub2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1c2UgQlNEIExpY2Vuc2UKLQot
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNlLmh0
bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSogUmVkaXN0cmlidXRpb25z
IG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLAotICB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0q
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgb3JpZ2lu
YWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAu
cHkKaW5kZXggYzljMzY0YjhiYWNjNzJhNmZmNzdmOWQwYzgxMWIyZDdkMTgxMGQxMy4uNzU5Y2I0
OGQxZjY1ZjUyZjY1MDBlZDJiODcxYzdlZjQzMDUxOGFiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSBzZXR1cHRvb2xzIGltcG9y
dCBzZXR1cAogCi1QQUNLQUdFX1ZFUlNJT04gPSAnMi4wJworUEFDS0FHRV9WRVJTSU9OID0gJzMu
MCcKIGRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCiAKIHNldHVwKG5hbWU9J3dwdHNl
cnZlJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDJlMmQwZDY3NzFiYTI2YTFm
YmU3ZThmYzhiYjJlMjU5OGJjMzQyMjMuLjY0ZWFiMmQ4MDZiNTJkZTkzM2IyOGQ1ODQxNmI2OWQz
NmJkY2IyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAtMTAsNyArMTAsNyBA
QCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYg
dGVzdF9uYW1lX3ZhbHVlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxl
cgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgICAgIHJlc3BvbnNl
LnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3Qi
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9uYW1lX3ZhbHVlIiwgaGFuZGxlcikK
QEAgLTIyLDggKzIyLDggQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1Nl
cnZlcik6CiAgICAgZGVmIHRlc3RfdW5zZXQoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5k
bGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICAg
ICAgcmVzcG9uc2UudW5zZXRfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLnNl
dF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCisgICAgICAgICAgICByZXNwb25zZS51bnNldF9j
b29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0
ZSA9ICgiR0VUIiwgIi90ZXN0L3Vuc2V0IiwgaGFuZGxlcikKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3Rf
ZGVsZXRlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAg
ICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXNwb25zZS5k
ZWxldGVfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLmRlbGV0ZV9jb29raWUo
YiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0ZSA9ICgi
R0VUIiwgIi90ZXN0L2RlbGV0ZSIsIGhhbmRsZXIpCkBAIC00NywxOCArNDcsMjAgQEAgY2xhc3Mg
VGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJ0c1sibmFtZSJdLCAiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJ0c1siUGF0aCJdLCAiLyIpCi0gICAgICAgICNTaG91bGQgYWxzbyBjaGVjayB0aGF0IGV4cGly
ZXMgaXMgaW4gdGhlIHBhc3QKKyAgICAgICAgIyBUT0RPOiBTaG91bGQgYWxzbyBjaGVjayB0aGF0
IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKwogCiBjbGFzcyBUZXN0UmVxdWVzdENvb2tpZXMoVGVz
dFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zZXRfY29va2llKHNlbGYpOgogICAgICAgICBA
d3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBy
ZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVzWyJuYW1lIl0udmFs
dWUKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvb2tpZXNbYiJuYW1lIl0udmFsdWUKIAog
ICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3NldF9jb29raWUiLCBoYW5kbGVyKQogICAg
ICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICByZXNwID0g
c2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBoZWFkZXJzPXsiQ29va2llIjogIm5hbWU9dmFsdWUifSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJ2YWx1ZSIpCiAKKwogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZDhkNjRkNTRjY2M3OGEzYzZkZWJhMjFiNzM0MjhlNzFh
ZWIxYmU2MC4uNmU5NDdlNDc4ZDllMTRlMzM2NzZjYmQ2MmJiYmFkYTJmMTE4ZWM3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBzeXMK
IGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeCBpbXBvcnQgY3JlYXRlX2JvdW5kX21l
dGhvZAorZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZMworZnJvbSBzaXgu
bW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdT
ZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMTY3LDcgKzE2Nyw2IEBAIGNs
YXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLnNlcnZlci5y
b3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICBzZWxmLnJlcXVlc3Qocm91dGVbMV0pCiAK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
InB5MyB1cmxsaWIgZG9lc24ndCBoYW5kbGUgaW52YWxpZCBIVFRQIHZlcnkgd2VsbCIpCiAgICAg
ZGVmIHRlc3Rfd3JpdGVfcmF3X2NvbnRlbnRzX2ludmFsaWRfaHR0cChzZWxmKToKICAgICAgICAg
cmVzcF9jb250ZW50ID0gYiJJTlZBTElEIEhUVFAiCiAKQEAgLTE3Nyw5ICsxNzYsMTQgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgcm91dGUgPSAoIkdF
VCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikKICAgICAgICAgc2Vs
Zi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKLSAgICAgICAgcmVzcCA9IHNlbGYucmVx
dWVzdChyb3V0ZVsxXSkKLSAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVu
dAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVb
MV0pCisgICAgICAgICAgICBhc3NlcnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9jb250ZW50CisgICAg
ICAgIGV4Y2VwdCBCYWRTdGF0dXNMaW5lIGFzIGU6CisgICAgICAgICAgICAjIEluIFB5dGhvbjMs
IGFuIGludmFsaWQgSFRUUCByZXF1ZXN0IHNob3VsZCB0aHJvdyBCYWRTdGF0dXNMaW5lLgorICAg
ICAgICAgICAgYXNzZXJ0IFBZMworICAgICAgICAgICAgYXNzZXJ0IHN0cihlKSA9PSByZXNwX2Nv
bnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gy
U2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19zdHJlYW0oc2VsZik6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDMwOWRkOWU1NzdhMDMzNWI3YTU2OTkyYzgy
YTQ4YjQzYTI1OWEyOGQuLjFjNGM5YWQ5MzNhMzc3NDY2MjNhMDE5NWY1NTNhZDhjZmU3MDY4OGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CkBAIC0xOCwxMCArMTgsMTAgQEAgY2xhc3MgVGVz
dFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIEB3cHRzZXJ2ZS5o
YW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToK
ICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KCJpZCIpLCByZXF1
ZXN0LlBPU1QuZmlyc3QoImRhdGEiKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNlcnZlci5z
dGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KGIiaWQiKSwgcmVxdWVzdC5QT1NULmZpcnN0KGIi
ZGF0YSIpKQogICAgICAgICAgICAgICAgIGRhdGEgPSAiT0siCiAgICAgICAgICAgICBlbGlmIHJl
cXVlc3QubWV0aG9kID09ICJHRVQiOgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNl
cnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KCJpZCIpKQorICAgICAgICAgICAgICAg
IGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KGIiaWQi
KSkKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiTk9UIEZPVU5EIgogICAgICAgICAgICAgcmV0dXJuIGRhdGEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY5ZDNkNDYwNDQwOTQxMTk4NGNiNDlmY2Q0MGViN2U5NzFiM2M1MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9y
dCBtb2NrCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKKworZnJvbSB3cHRzZXJ2ZS5yZXF1
ZXN0IGltcG9ydCBSZXF1ZXN0LCBSZXF1ZXN0SGVhZGVycworCisKK2NsYXNzIE1vY2tIVFRQTWVz
c2FnZShkaWN0KToKKyAgICAiIiJBIG1pbmltdW0gKGFuZCBub3QgY29tcGxldGVseSBjb3JyZWN0
bHkpIG1vY2sgb2YgSFRUUE1lc3NhZ2UgZm9yIHRlc3RpbmcuCisKKyAgICBDb25zdHJ1Y3Rpbmcg
SFRUUE1lc3NhZ2UgaXMgYW5ub3lpbmcgYW5kIGRpZmZlcmVudCBpbiBQeXRob24gMiBhbmQgMy4g
VGhpcworICAgIG9ubHkgaW1wbGVtZW50cyB0aGUgcGFydHMgdXNlZCBieSBSZXF1ZXN0SGVhZGVy
cy4KKworICAgIFJlcXVpcmVtZW50cyBmb3IgY29uc3RydWN0aW9uOgorICAgICogS2V5cyBhcmUg
aGVhZGVyIG5hbWVzIGFuZCBNVVNUIGJlIGxvd2VyLWNhc2UuCisgICAgKiBWYWx1ZXMgYXJlIGxp
c3RzIG9mIGhlYWRlciB2YWx1ZXMgKGV2ZW4gaWYgdGhlcmUncyBvbmx5IG9uZSkuCisgICAgKiBL
ZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzIHRvIG1hdGNoIHN0ZGxpYidz
IGJlaGF2aW91cnMuCisgICAgIiIiCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Cisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgc3RyKQorICAgICAgICB2YWx1ZXMgPSBkaWN0
Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh2YWx1ZXMsIGxpc3QpCisgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKworICAgIGRlZiBnZXQo
c2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0CisKKyAgICBkZWYgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKHNlbGYsIGtleSk6Cisg
ICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCisgICAg
ICAgIHJldHVybiBbInt9OiB7fVxuIi5mb3JtYXQoa2V5LCB2KSBmb3IgdiBpbiB2YWx1ZXNdCisK
KworZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2dldCgpOgorICAgIHJhd19oZWFkZXJzID0gTW9j
a0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwKKyAgICAgICAgJ3gtYmFy
JzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMgPSBSZXF1ZXN0SGVhZGVy
cyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaGVhZGVyc1sneC1mb28nXSA9PSBiJ2ZvbycKKyAg
ICBhc3NlcnQgaGVhZGVyc1snWC1CYXInXSA9PSBiJ2JhcjEsIGJhcjInCisgICAgYXNzZXJ0IGhl
YWRlcnMuZ2V0KCd4LWJhcicpID09IGInYmFyMSwgYmFyMicKKworCitkZWYgdGVzdF9yZXF1ZXN0
X2hlYWRlcnNfZW5jb2RpbmcoKToKKyAgICByYXdfaGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSh7
CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4LWJhcic6IFsnYmFyMScsICdi
YXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhlYWRlcnMocmF3X2hlYWRlcnMp
CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1mb28nXSwgYmluYXJ5X3R5cGUpCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1iYXInXSwgYmluYXJ5X3R5cGUpCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVycy5nZXRfbGlzdCgneC1iYXInKVswXSwgYmluYXJ5X3R5
cGUpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJvbV9zZXJ2ZXJfYWRkcmVzcygpOgorICAg
IHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZl
ci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9hZGRy
ZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVxdWVzdF9oYW5kbGVyLnBhdGggPSAn
L2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMgPSBNb2NrSFRUUE1lc3NhZ2UoKQor
CisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAgIGFzc2VydCByZXF1
ZXN0LnVybCA9PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RlbW8nCisgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocmVxdWVzdC51cmwsIHN0cikKKworCitkZWYgdGVzdF9yZXF1ZXN0X3VybF9mcm9tX2hv
c3RfaGVhZGVyKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2NrKCkKKyAgICByZXF1
ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVlc3RfaGFuZGxlci5z
ZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykKKyAgICByZXF1ZXN0
X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycyA9IE1v
Y2tIVFRQTWVzc2FnZSh7J2hvc3QnOiBbJ3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDEnXX0pCisKKyAg
ICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1ZXN0X2hhbmRsZXIpCisgICAgYXNzZXJ0IHJlcXVlc3Qu
dXJsID09ICdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMS9kZW1vJworICAgIGFzc2VydCBp
c2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rh
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMWVhOTljMDYwOWY1YmVkODU5NjUx
Mjg0ZWIzZGE4MGE0Y2RkZjczNy4uMzFhZjE1NThiMGNjNWMwNDY4NDNlMGU5NjU2OWRiNDJjNDY3
Y2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9zdGFzaC5weQpAQCAtNCw2ICs0LDcgQEAgaW1wb3J0IHRocmVhZGluZwogZnJvbSBtdWx0aXBy
b2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKK2Zy
b20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2
ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTU3LDcgKzU4LDggQEAgZGVmIHJ1bihwcm9jZXNzX3F1ZXVl
LCByZXF1ZXN0X2xvY2ssIHJlc3BvbnNlX2xvY2spOgogICAgIHByb2Nlc3NfcXVldWUucHV0KHRo
cmVhZF9xdWV1ZS5nZXQoKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IK
KyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0
aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBkZWYgdGVzdF9k
ZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRlbGF5cyBpbiBw
cm94aWVkIExvY2sgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0aApAQCAtOTYsNyArOTgs
OCBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBp
bnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3
aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRf
c3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBk
ZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRl
bGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVyZmVyZSB3aXRoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0Lmxv
ZwppbmRleCBlZjlkNmE4MGFhNmFjMTQyM2Y1NDg1YmIyNWJkMzM2OTc1ZDlhYjU3Li41ZjllYjZi
MzhiNjUxNDlmZGU3ZGFkMTliODA1NmYzY2M1YmYxMzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAgLTE2LDQgKzE2LDUg
QEAgTm9uZQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy90ZXN0X3JlcGxhY2VtZW50X3Rva2VuaXplci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93M2MtaW1wb3J0LmxvZwppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYxOWQ5MDZlNDVkOGQ3
OTAzM2MxLi5mYWFhZjY3ZTk4NThhMTA3ZGM4M2E5NTI4NWYyYjkzOTQ3ZmIwMTMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKQEAgLTE0LDcgKzE0
LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBOb25lCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9NQU5JRkVTVC5p
bgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvUkVBRE1FLm1kCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25m
aWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQppbmRleCBlMTFjYWUxMzdiOWM1MWQ4Njc3NDAw
MWVhZDcxOTM4ZmQ1NWMwNTU1Li43NzY2NTY1ZmU0ZmQxNzU1OThiOGI2Y2NlMGU0ZmY0YjQwZjEw
ZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2Nv
bmZpZy5weQpAQCAtNjksNiArNjksMzEgQEAgY2xhc3MgQ29uZmlnKE1hcHBpbmcpOgogICAgIGRl
ZiBhc19kaWN0KHNlbGYpOgogICAgICAgICByZXR1cm4ganNvbl90eXBlcyhzZWxmLl9fZGljdF9f
KQogCisgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGxpbWl0ZWQgaW4gc2l6ZSBzbyB3
ZSBuZWVkIHRvIHBydW5lIHRoZSBtb3N0IGVncmVnaW91cyBjb250cmlidXRvcnMKKyAgICAjIHRv
IHNpemUsIHRoZSBvcmlnaW4gcG9saWN5IHN1YmRvbWFpbnMuCisgICAgZGVmIGFzX2RpY3RfZm9y
X3dkX2Vudl92YXJpYWJsZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5hc19kaWN0KCkK
KworICAgICAgICBmb3Iga2V5IGluIFsKKyAgICAgICAgICAgICgic3ViZG9tYWlucyIsKSwKKyAg
ICAgICAgICAgICgiZG9tYWlucyIsICJhbHQiKSwKKyAgICAgICAgICAgICgiZG9tYWlucyIsICIi
KSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiYWx0IiksCisgICAgICAgICAgICAoImFs
bF9kb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJkb21haW5zX3NldCIsKSwKKyAgICAgICAg
ICAgICgiYWxsX2RvbWFpbnNfc2V0IiwpCisgICAgICAgIF06CisgICAgICAgICAgICB0YXJnZXQg
PSByZXN1bHQKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIGtleVs6LTFdOgorICAgICAgICAgICAg
ICAgIHRhcmdldCA9IHRhcmdldFtwYXJ0XQorICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXRba2V5
Wy0xXV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgorICAgICAgICAg
ICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIGl0ZXJpdGVtcyh2YWx1
ZSkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUgaWYgbm90IHguc3Rh
cnRzd2l0aCgib3AiKV0KKworICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogZGVmIGpzb25fdHlw
ZXMob2JqKToKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQppbmRleCBjYTUxMTgw
MDljZmM5YzQ3NjNmOTllMmE2Mjk2ZDc4NGE2NTM5MjE2Li5mZWExMjc3YjBkMWNiNWNhYzhjYTQ0
NWFiMDU5OTQ3NDEyNjY5YWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgY2dpCiBp
bXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0xNCw2ICsxMywxMSBAQCBmcm9t
IC5yZXF1ZXN0IGltcG9ydCBBdXRoZW50aWNhdGlvbgogZnJvbSAucmVzcG9uc2UgaW1wb3J0IE11
bHRpcGFydENvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKK3RyeToK
KyAgICBmcm9tIGh0bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZy
b20gY2dpIGltcG9ydCBlc2NhcGUKKwogX19hbGxfXyA9IFsiZmlsZV9oYW5kbGVyIiwgInB5dGhv
bl9zY3JpcHRfaGFuZGxlciIsCiAgICAgICAgICAgICJGdW5jdGlvbkhhbmRsZXIiLCAiaGFuZGxl
ciIsICJqc29uX2hhbmRsZXIiLAogICAgICAgICAgICAiYXNfaXNfaGFuZGxlciIsICJFcnJvckhh
bmRsZXIiLCAiQmFzaWNBdXRoSGFuZGxlciJdCkBAIC03Niw3ICs4MCw3IEBAIGNsYXNzIERpcmVj
dG9yeUhhbmRsZXIob2JqZWN0KToKIDx1bD4KICUoaXRlbXMpcwogPC91bD4KLSIiIiAlIHsicGF0
aCI6IGNnaS5lc2NhcGUodXJsX3BhdGgpLAorIiIiICUgeyJwYXRoIjogZXNjYXBlKHVybF9wYXRo
KSwKICAgICAgICAiaXRlbXMiOiAiXG4iLmpvaW4oc2VsZi5saXN0X2l0ZW1zKHVybF9wYXRoLCBw
YXRoKSl9ICAjIG5vcWE6IEUxMjIKIAogICAgIGRlZiBsaXN0X2l0ZW1zKHNlbGYsIGJhc2VfcGF0
aCwgcGF0aCk6CkBAIC05MiwxNSArOTYsMjkgQEAgY2xhc3MgRGlyZWN0b3J5SGFuZGxlcihvYmpl
Y3QpOgogICAgICAgICAgICAgbGluayA9IHVybGpvaW4oYmFzZV9wYXRoLCAiLi4iKQogICAgICAg
ICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iZGlyIj48YSBocmVmPSIlKGxpbmspcyI+JShuYW1l
KXM8L2E+PC9saT4iIiIgJQogICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1l
IjogIi4uIn0pCisgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgcHJldl9pdGVtID0gTm9uZQog
ICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSk6Ci0gICAgICAgICAg
ICBsaW5rID0gY2dpLmVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAgIGlmIHByZXZfaXRl
bSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgorICAgICAgICAgICAgICAgIGl0
ZW1zWy0xXVsxXSA9IGl0ZW0KKyAgICAgICAgICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChbaXRlbSwgTm9u
ZV0pCisgICAgICAgICAgICBwcmV2X2l0ZW0gPSBpdGVtCisgICAgICAgIGZvciBpdGVtLCBkb3Rf
aGVhZGVycyBpbiBpdGVtczoKKyAgICAgICAgICAgIGxpbmsgPSBlc2NhcGUocXVvdGUoaXRlbSkp
CisgICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAiIgorICAgICAgICAgICAgaWYgZG90
X2hlYWRlcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90X2hlYWRlcnNfbWFya3Vw
ID0gKCIiIiAoPGEgaHJlZj0iJShsaW5rKXMiPi5oZWFkZXJzPC9hPikiIiIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBlc2NhcGUocXVvdGUoZG90X2hl
YWRlcnMpKX0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRo
LCBpdGVtKSk6CiAgICAgICAgICAgICAgICAgbGluayArPSAiLyIKICAgICAgICAgICAgICAgICBj
bGFzc18gPSAiZGlyIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjbGFzc18g
PSAiZmlsZSIKLSAgICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9IiUoY2xhc3MpcyI+PGEg
aHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPjwvbGk+IiIiICUKLSAgICAgICAgICAgICAgICAg
ICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGNnaS5lc2NhcGUoaXRlbSksICJjbGFzcyI6IGNsYXNz
X30pCisgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNzKXMiPjxhIGhyZWY9
IiUobGluaylzIj4lKG5hbWUpczwvYT4lKGhlYWRlcnMpczwvbGk+IiIiICUKKyAgICAgICAgICAg
ICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGVzY2FwZShpdGVtKSwgImNsYXNzIjogY2xh
c3NfLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGRvdF9oZWFkZXJzX21hcmt1cH0p
CiAKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwgcmVzcG9uc2UpOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKaW5kZXggY2Vi
MzRjYzNmNGY5OTRlZDA0OTkxNWM3Nzg0ZjdjNjljNzEyYWJjYS4uYmJmMjVlNmZlMTExMmUxODFk
YTVhN2I2YTljNmVlMmI3NTYzYWJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBjZ2kgaW1wb3J0
IGVzY2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGltcG9ydCBiYXNlNjQKIGlt
cG9ydCBnemlwIGFzIGd6aXBfbW9kdWxlCkBAIC03LDEwICs2LDE1IEBAIGltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgdGltZQogaW1wb3J0IHV1aWQKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBT
dHJpbmdJTwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCiAKK3RyeToKKyAgICBmcm9tIGh0bWwgaW1wb3J0IGVz
Y2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKKwog
ZGVmIHJlc29sdmVfY29udGVudChyZXNwb25zZSk6CiAgICAgcmV0dXJuIGIiIi5qb2luKGl0ZW0g
Zm9yIGl0ZW0gaW4gcmVzcG9uc2UuaXRlcl9jb250ZW50KHJlYWRfZmlsZT1UcnVlKSkKIApAQCAt
MzE2LDYgKzMyMCw4IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUo
J2lzby04ODU5LTEnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1zLmZpcnN0KGtleSkK
ICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCkBAIC0zOTMs
OCArMzk5LDggQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAgICAgZGVmIHV1aWQocmVx
dWVzdCk6CiAgICAgICAgIHJldHVybiBzdHIodXVpZC51dWlkNCgpKQogCi0gICAgIyBNYWludGFp
biBhIHdoaXRlbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJpY3RlZCB0byB0aG9z
ZSB0aGF0Ci0gICAgIyBhcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgWzFdLiBUaGlzIGVu
c3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CisgICAgIyBNYWludGFpbiBhIGxpc3Qgb2Yg
c3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdGhhdCBhcmUKKyAgICAj
IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhpcyBlbnN1cmVzIHRoYXQgdGVzdCBh
dXRob3JzIGRvIG5vdAogICAgICMgdW5rbm93aW5nbHkgaW50cm9kdWNlIHBsYXRmb3JtLXNwZWNp
ZmljIHRlc3RzLgogICAgICMKICAgICAjIFsxXSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xp
YnJhcnkvaGFzaGxpYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3JlcXVlc3QucHkKaW5kZXggYTgwYmMwYzgzMDBhY2ZjZjc2NjUxMmI4OWVjZmVl
MzM4YmFjMjI5NS4uN2M0ZDAyZDZkZTZmMWEwYjBlY2NjMDVhYjAzMDRjZmZiYzEwZjk1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5w
eQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNnaQotZnJvbSBzaXgu
bW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNpeCBpbXBvcnQgQnl0
ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1zLCBQWTMKIGltcG9ydCB0ZW1w
ZmlsZQogCitmcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIGl0ZXJpdGVtcywg
UFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUKIGZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxzcGxpdAogCiBmcm9t
IC4gaW1wb3J0IHN0YXNoCi1mcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgorZnJvbSAu
dXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZW5jb2RlLCBpc29tb3JwaGlj
X2RlY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIApAQCAtMjE5LDIyICsyMTksMjMgQEAgY2xh
c3MgUmVxdWVzdChvYmplY3QpOgogICAgIE11bHRpRGljdCByZXByZXNlbnRpbmcgdGhlIHBhcmFt
ZXRlcnMgc3VwcGxpZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICBOb3RlIHRoYXQgdGhlc2UgbWF5
IGJlIHByZXNlbnQgb24gbm9uLUdFVCByZXF1ZXN0czsgdGhlIG5hbWUgaXMKICAgICBjaG9zZW4g
dG8gYmUgZmFtaWxpYXIgdG8gdXNlcnMgb2Ygb3RoZXIgc3lzdGVtcyBzdWNoIGFzIFBIUC4KKyAg
ICBCb3RoIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCiAKICAgICAuLiBhdHRy
aWJ1dGU6OiBQT1NUCiAKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0IGJv
ZHkgcGFyYW1ldGVycy4gTW9zdCBwYXJhbWV0ZXJzCiAgICAgYXJlIHByZXNlbnQgYXMgc3RyaW5n
IHZhbHVlcywgYnV0IGZpbGUgdXBsb2FkcyBoYXZlIGZpbGUtbGlrZQotICAgIHZhbHVlcy4KKyAg
ICB2YWx1ZXMuIEFsbCBzdHJpbmcgdmFsdWVzIChpbmNsdWRpbmcga2V5cykgaGF2ZSBiaW5hcnkg
dHlwZS4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IGNvb2tpZXMKIAotICAgIENvb2tpZXMgb2JqZWN0
IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVzdCB3aXRoIGEKKyAgICBB
IENvb2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVz
dCB3aXRoIGEKICAgICBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlLgogCiAgICAgLi4gYXR0cmli
dXRlOjogYXV0aAogCi0gICAgT2JqZWN0IHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHByb3Bl
cnRpZXMgcmVwcmVzZW50aW5nIGFueQotICAgIGNyZWRlbnRpYWxzIHN1cHBsaWVkIHVzaW5nIEhU
VFAgYXV0aGVudGljYXRpb24uCisgICAgQW4gaW5zdGFuY2Ugb2YgQXV0aGVudGljYXRpb24gd2l0
aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcworICAgIHJlcHJlc2VudGluZyBhbnkg
Y3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4KIAogICAgIC4u
IGF0dHJpYnV0ZTo6IHNlcnZlcgogCkBAIC0yNDgsOCArMjQ5LDEyIEBAIGNsYXNzIFJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID0gcmVxdWVzdF9oYW5kbGVy
LnByb3RvY29sX3ZlcnNpb24KICAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1ZXN0X2hhbmRsZXIu
Y29tbWFuZAogCisgICAgICAgICMgS2V5cyBhbmQgdmFsdWVzIGluIHJhdyBoZWFkZXJzIGFyZSBu
YXRpdmUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKICAgICAgICAgc2NoZW1l
ID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUKLSAgICAgICAgaG9zdCA9IHJlcXVlc3Rf
aGFuZGxlci5oZWFkZXJzLmdldCgiSG9zdCIpCisgICAgICAgIGhvc3QgPSBzZWxmLnJhd19oZWFk
ZXJzLmdldCgiSG9zdCIpCiAgICAgICAgIHBvcnQgPSByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNl
cnZlcl9hZGRyZXNzWzFdCiAKICAgICAgICAgaWYgaG9zdCBpcyBOb25lOgpAQCAtMjYyLDIyICsy
NjcsMTcgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLnVybF9iYXNlID0g
Ii8iCiAKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3BhdGguc3RhcnRzd2l0aChzY2hlbWUgKyAi
Oi8vIik6Ci0gICAgICAgICAgICBzZWxmLnVybCA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAg
ICAgICAgICBzZWxmLnVybCA9IHNlbGYucmVxdWVzdF9wYXRoCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnVybCA9ICIlczovLyVzOiVzJXMiICUgKHNjaGVtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXF1ZXN0X3BhdGgpCisgICAgICAgICAgICAjIFRPRE8oIzIzMzYyKTogU3RvcCB1
c2luZyBuYXRpdmUgc3RyaW5ncyBmb3IgVVJMcy4KKyAgICAgICAgICAgIHNlbGYudXJsID0gIiVz
Oi8vJXM6JXMlcyIgJSAoCisgICAgICAgICAgICAgICAgc2NoZW1lLCBob3N0LCBwb3J0LCBzZWxm
LnJlcXVlc3RfcGF0aCkKICAgICAgICAgc2VsZi51cmxfcGFydHMgPSB1cmxzcGxpdChzZWxmLnVy
bCkKIAotICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMK
LQogICAgICAgICBzZWxmLnJlcXVlc3RfbGluZSA9IHJlcXVlc3RfaGFuZGxlci5yYXdfcmVxdWVz
dGxpbmUKIAotICAgICAgICBzZWxmLl9oZWFkZXJzID0gTm9uZQotCiAgICAgICAgIHNlbGYucmF3
X2lucHV0ID0gSW5wdXRGaWxlKHJlcXVlc3RfaGFuZGxlci5yZmlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3Ro
IiwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5yYXdf
aGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiwgMCkpKQogCiAgICAgICAgIHNlbGYuX2JvZHkg
PSBOb25lCiAKQEAgLTI5NywxOSArMjk3LDI0IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAg
ICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5xdWVyeSwga2VlcF9i
bGFua192YWx1ZXM9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX0dFVCA9IE11bHRpRGljdCgpCiAg
ICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXM6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fR0VULmFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX0dFVC5hZGQoaXNv
bW9ycGhpY19lbmNvZGUoa2V5KSwgaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fR0VUCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgUE9TVChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fUE9TVCBpcyBOb25lOgotICAgICAgICAgICAgI1dvcmsgb3V0IHRoZSBw
b3N0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICMgV29yayBvdXQgdGhlIHBvc3QgcGFyYW1ldGVy
cwogICAgICAgICAgICAgcG9zID0gc2VsZi5yYXdfaW5wdXQudGVsbCgpCiAgICAgICAgICAgICBz
ZWxmLnJhd19pbnB1dC5zZWVrKDApCi0gICAgICAgICAgICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2Uo
ZnA9c2VsZi5yYXdfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdfaGVhZGVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQorICAgICAgICAgICAg
a3dhcmdzID0geworICAgICAgICAgICAgICAgICJmcCI6IHNlbGYucmF3X2lucHV0LAorICAgICAg
ICAgICAgICAgICJlbnZpcm9uIjogeyJSRVFVRVNUX01FVEhPRCI6IHNlbGYubWV0aG9kfSwKKyAg
ICAgICAgICAgICAgICAiaGVhZGVycyI6IHNlbGYucmF3X2hlYWRlcnMsCisgICAgICAgICAgICAg
ICAgImtlZXBfYmxhbmtfdmFsdWVzIjogVHJ1ZSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIFBZMzoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0gPSAiaXNvLTg4NTkt
MSIKKyAgICAgICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZSgqKmt3YXJncykKICAgICAgICAg
ICAgIHNlbGYuX1BPU1QgPSBNdWx0aURpY3QuZnJvbV9maWVsZF9zdG9yYWdlKGZzKQogICAgICAg
ICAgICAgc2VsZi5yYXdfaW5wdXQuc2Vlayhwb3MpCiAgICAgICAgIHJldHVybiBzZWxmLl9QT1NU
CkBAIC0zMTcsMTQgKzMyMiwxMiBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIGNvb2tpZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2Nvb2tpZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQorICAgICAgICAgICAgcGFy
c2VyID0gQmluYXJ5Q29va2llUGFyc2VyKCkKICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0g
c2VsZi5oZWFkZXJzLmdldCgiY29va2llIiwgYiIiKQotICAgICAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0gY29va2llX2hlYWRlcnMuZGVjb2RlKCJpc28t
ODg1OS0xIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAg
ICAgICAgY29va2llcyA9IENvb2tpZXMoKQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
aXRlcml0ZW1zKHBhcnNlcik6Ci0gICAgICAgICAgICAgICAgY29va2llc1trZXldID0gQ29va2ll
VmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgY29va2llc1tpc29tb3JwaGljX2VuY29kZShr
ZXkpXSA9IENvb2tpZVZhbHVlKHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IGNv
b2tpZXMKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvb2tpZXMKIApAQCAtMzU3LDI0ICszNjAsNiBA
QCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVzdCk6CiAgICAgICAgIHN1cGVyKEgyUmVxdWVzdCwgc2Vs
ZikuX19pbml0X18ocmVxdWVzdF9oYW5kbGVyKQogCiAKLWRlZiBfbWF5YmVfZW5jb2RlKHMpOgot
ICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcg
aXNvLTg4NTktMS4KLQotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2Ag
aW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50
IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShz
LCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzCi0KLSAgICAjIFB5dGhvbiAzIGFzc3Vt
ZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNpbmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4
dAotICAgICMgd2l0aCBub24gQVNDSUkgY2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUg
dGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5
dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0
dHAvY2xpZW50LnB5I0wyMTMKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Ci0gICAg
ICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCi0KLSAgICByYWlzZSBUeXBlRXJyb3Io
IlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVxdWVzdEhlYWRlcnM6ICVyIiAlIHMpCi0KLQogY2xhc3Mg
UmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiUmVhZC1vbmx5IGRpY3Rpb25hcnktbGlrZSBB
UEkgZm9yIGFjY2Vzc2luZyByZXF1ZXN0IGhlYWRlcnMuCiAKQEAgLTM4NCw3ICszNjksNyBAQCBj
bGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVhZGVyIGluIGl0ZW1zLmtleXMoKToKLSAgICAgICAg
ICAgIGtleSA9IF9tYXliZV9lbmNvZGUoaGVhZGVyKS5sb3dlcigpCisgICAgICAgICAgICBrZXkg
PSBpc29tb3JwaGljX2VuY29kZShoZWFkZXIpLmxvd2VyKCkKICAgICAgICAgICAgICMgZ2V0IGFs
bCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICAgICAgdmFsdWVzID0gaXRlbXMu
Z2V0YWxsbWF0Y2hpbmdoZWFkZXJzKGhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbih2YWx1ZXMp
ID4gMToKQEAgLTM5NCwyMiArMzc5LDIxIEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgog
ICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAg
ICMgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzIHJldHVybnMgcmF3IGhlYWRlciBsaW5lcywgc28KICAg
ICAgICAgICAgICAgICAgICAgIyBzcGxpdCB0byBnZXQgbmFtZSwgdmFsdWUKLSAgICAgICAgICAg
ICAgICAgICAgbXVsdGlwbGVzLmFwcGVuZChfbWF5YmVfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzon
LCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKGlz
b21vcnBoaWNfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzonLCAxKVsxXS5zdHJpcCgpKQogICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBtdWx0aXBsZXMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaGVhZGVycyA9IFtfbWF5YmVfZW5jb2RlKGl0ZW1zW2hlYWRlcl0pXQorICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBbaXNvbW9ycGhpY19lbmNvZGUoaXRlbXNbaGVhZGVyXSldCiAg
ICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgaGVhZGVycykKIAotCiAgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIkdldCBhbGwgaGVhZGVycyBv
ZiBhIGNlcnRhaW4gKGNhc2UtaW5zZW5zaXRpdmUpIG5hbWUuIElmIHRoZXJlIGlzCiAgICAgICAg
IG1vcmUgdGhhbiBvbmUsIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGNvbW1hIHNlcGFyYXRlZCIi
IgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0gaXNvbW9y
cGhpY19lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYs
IGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlc1swXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIsICIu
am9pbih2YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gYiIsICIuam9pbih2YWx1ZXMpCiAKICAg
ICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBFeGNl
cHRpb24KQEAgLTQzMCw3ICs0MTQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAg
ICBkZWYgZ2V0X2xpc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgogICAgICAgICAiIiJH
ZXQgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgZmllbGQgbmFtZSBhcwog
ICAgICAgICBhIGxpc3QiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAg
ICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0MCw3ICs0MjQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhk
aWN0KToKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxm
LCBrZXkpOgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0g
aXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICByZXR1cm4gZGljdC5fX2NvbnRhaW5zX18o
c2VsZiwga2V5Lmxvd2VyKCkpCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgpAQCAtNDUxLDYg
KzQzNSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAgICBmb3IgaXRlbSBp
biBzZWxmOgogICAgICAgICAgICAgeWllbGQgc2VsZltpdGVtXQogCisKIGNsYXNzIENvb2tpZVZh
bHVlKG9iamVjdCk6CiAgICAgIiIiUmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KIApAQCAtNTI0
LDkgKzUwOSw4IEBAIGNsYXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAKIAogY2xhc3MgTXVsdGlE
aWN0KGRpY3QpOgotICAgICIiIkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRzIG11bHRpcGxlIHZh
bHVlcyBmb3IgZWFjaAotICAgIGtleSIiIgotICAgICNUT0RPOiB0aGlzIHNob3VsZCBwZXJoYXBz
IGFsc28gb3JkZXIgdGhlIGtleXMKKyAgICAiIiJEaWN0aW9uYXJ5IHR5cGUgdGhhdCBob2xkcyBt
dWx0aXBsZSB2YWx1ZXMgZm9yIGVhY2gga2V5IiIiCisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBw
ZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAg
ICAgIHBhc3MKIApAQCAtNTQxLDcgKzUyNSw2IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAog
ICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgdGhlIGZpcnN0
IHZhbHVlIHdpdGggYSBnaXZlbiBrZXkiIiIKLSAgICAgICAgI1RPRE86IHNob3VsZCB0aGlzIGlu
c3RlYWQgYmUgdGhlIGxhc3QgdmFsdWU/CiAgICAgICAgIHJldHVybiBzZWxmLmZpcnN0KGtleSkK
IAogICAgIGRlZiBmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlzc2luZyk6CkBAIC01ODQsNiAr
NTY3LDEwIEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX2ZpZWxkX3N0b3JhZ2UoY2xzLCBmcyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBh
IE11bHRpRGljdCBmcm9tIGEgY2dpLkZpZWxkU3RvcmFnZQorCisgICAgICAgIE5vdGUgdGhhdCBh
bGwga2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5ncy4KKyAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYgPSBjbHMoKQogICAgICAgICBpZiBmcy5saXN0IGlzIE5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZgpAQCAtNTk0LDEzICs1ODEsNDYgQEAgY2xhc3MgTXVsdGlEaWN0KGRpY3Qp
OgogCiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAgIGlm
IG5vdCB2YWx1ZS5maWxlbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52
YWx1ZQotICAgICAgICAgICAgICAgIHNlbGYuYWRkKGtleSwgdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUudmFsdWUpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IGNnaS5GaWVsZFN0b3JhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hZGQoaXNvbW9ycGhpY19l
bmNvZGUoa2V5KSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBzZWxmCiAKIAorY2xhc3MgQmluYXJ5
Q29va2llUGFyc2VyKEJhc2VDb29raWUpOgorICAgICIiIkEgc3ViY2xhc3Mgb2YgQmFzZUNvb2tp
ZSB0aGF0IHJldHVybnMgdmFsdWVzIGluIGJpbmFyeSBzdHJpbmdzCisKKyAgICBUaGlzIGlzIG5v
dCBpbnRlbmRlZCB0byBzdG9yZSB0aGUgY29va2llczsgdXNlIENvb2tpZXMgaW5zdGVhZC4KKyAg
ICAiIiIKKyAgICBkZWYgdmFsdWVfZGVjb2RlKHNlbGYsIHZhbCk6CisgICAgICAgICIiIkRlY29k
ZSB2YWx1ZSBmcm9tIG5ldHdvcmsgdG8gKHJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlKS4KKworICAg
ICAgICBPdmVycmlkZSBCYXNlQ29va2llLnZhbHVlX2RlY29kZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZSh2YWwpLCB2YWwKKworICAgIGRlZiB2YWx1ZV9l
bmNvZGUoc2VsZiwgdmFsKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmlu
YXJ5Q29va2llUGFyc2VyIGlzIG5vdCBmb3Igc2V0dGluZyBjb29raWVzJykKKworICAgIGRlZiBs
b2FkKHNlbGYsIHJhd2RhdGEpOgorICAgICAgICAiIiJMb2FkIGNvb2tpZXMgZnJvbSBhIGJpbmFy
eSBzdHJpbmcuCisKKyAgICAgICAgVGhpcyBvdmVycmlkZXMgYW5kIGNhbGxzIEJhc2VDb29raWUu
bG9hZC4gVW5saWtlIEJhc2VDb29raWUubG9hZCwgaXQKKyAgICAgICAgZG9lcyBub3QgYWNjZXB0
IGRpY3Rpb25hcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJh
d2RhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBpZiBQWTM6CisgICAgICAgICAgICAjIEJhc2VD
b29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZywgd2hpY2ggaW4gUHl0aG9uIDMgaXMg
dGV4dC4KKyAgICAgICAgICAgIHJhd2RhdGEgPSBpc29tb3JwaGljX2RlY29kZShyYXdkYXRhKQor
ICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQocmF3ZGF0YSkKKwor
CiBjbGFzcyBDb29raWVzKE11bHRpRGljdCk6Ci0gICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2Vk
IGZvciBDb29raWUgdmFsdWVzIiIiCisgICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2VkIGZvciBD
b29raWUgdmFsdWVzCisKKyAgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFyeSBzdHJpbmdzLgor
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQppbmRl
eCAzYTYwYzJiYWJiMzlkOGQ3Nzk5OTAyMmE3ZmI0ZDE4NGNiMDE5YWE4Li5iNmYyNzQ0NzQ1MTk4
NDZkMjk4YTI5ZGEwYjNkYjM5NjE5OTliMjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3Bv
bnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRldGltZSwgdGltZWRlbHRhCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGpzb24KLWlt
cG9ydCB1dWlkCiBpbXBvcnQgc29ja2V0Ci1mcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNl
X2NvZGVzLCBoMl9oZWFkZXJzCi1mcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20g
aW8gaW1wb3J0IEJ5dGVzSU8KK2ltcG9ydCB1dWlkCiAKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKLWZyb20gaHlw
ZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlv
bkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKK2Zyb20gaHlwZXJm
cmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlvbkZy
YW1lCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBl
cywgaXRlcnZhbHVlcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorCitmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVz
LCBoMl9oZWFkZXJzCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKK2Zyb20gLnV0aWxz
IGltcG9ydCBpc29tb3JwaGljX2RlY29kZSwgaXNvbW9ycGhpY19lbmNvZGUKIAogbWlzc2luZyA9
IG9iamVjdCgpCiAKKwogY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAiIiJPYmplY3QgcmVw
cmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBhIEhUVFAgcmVxdWVzdAogCkBAIC03OSw3ICs4Miw2
IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVhZGVycyA9IFJlc3Bv
bnNlSGVhZGVycygpCiAgICAgICAgIHNlbGYuY29udGVudCA9IFtdCiAKLQogICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXMKQEAg
LTk5LDggKzEwMSw4IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgICIiIlNldCBh
IGNvb2tpZSB0byBiZSBzZW50IHdpdGggYSBTZXQtQ29va2llIGhlYWRlciBpbiB0aGUKICAgICAg
ICAgcmVzcG9uc2UKIAotICAgICAgICA6cGFyYW0gbmFtZTogU3RyaW5nIG5hbWUgb2YgdGhlIGNv
b2tpZQotICAgICAgICA6cGFyYW0gdmFsdWU6IFN0cmluZyB2YWx1ZSBvZiB0aGUgY29va2llCisg
ICAgICAgIDpwYXJhbSBuYW1lOiBuYW1lIG9mIHRoZSBjb29raWUgKGEgYmluYXJ5IHN0cmluZykK
KyAgICAgICAgOnBhcmFtIHZhbHVlOiB2YWx1ZSBvZiB0aGUgY29va2llIChhIGJpbmFyeSBzdHJp
bmcsIG9yIE5vbmUpCiAgICAgICAgIDpwYXJhbSBtYXhfYWdlOiBkYXRldGltZS50aW1lZGVsdGEg
aW50IHJlcHJlc2VudGluZyB0aGUgdGltZSAoaW4gc2Vjb25kcykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudGlsIHRoZSBjb29raWUgZXhwaXJlcwogICAgICAgICA6cGFyYW0gcGF0aDogU3Ry
aW5nIHBhdGggdG8gd2hpY2ggdGhlIGNvb2tpZSBhcHBsaWVzCkBAIC0xMTMsMTQgKzExNSwyMCBA
QCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBv
ciBpbnRlcnZhbCBmcm9tIG5vdyB3aGVuIHRoZSBjb29raWUgZXhwaXJlcwogCiAgICAgICAgICIi
IgorICAgICAgICAjIFRPRE8oUHl0aG9uIDMpOiBDb252ZXJ0IG90aGVyIHBhcmFtZXRlcnMgKGUu
Zy4gcGF0aCkgdG8gYnl0ZXMsIHRvby4KKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAg
ICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAgICBtYXhfYWdlID0gMAorICAgICAgICAgICAg
ZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQorCisgICAgICAgIGlmIFBZMzoKKyAgICAgICAg
ICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICAgICAgdmFsdWUgPSBp
c29tb3JwaGljX2RlY29kZSh2YWx1ZSkKKwogICAgICAgICBkYXlzID0ge2krMTogbmFtZSBmb3Ig
aSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIsICJtYXkiLCAianVu
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
anVsIiwgImF1ZyIsICJzZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJvY3QiLCAibm92IiwgImRlYyJdKX0KLSAgICAgICAgaWYgdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgIG1heF9hZ2UgPSAw
Ci0gICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAKICAgICAgICAgaWYg
aXNpbnN0YW5jZShleHBpcmVzLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgZXhwaXJlcyA9IGRh
dGV0aW1lLnV0Y25vdygpICsgZXhwaXJlcwpAQCAtMTU0LDExICsxNjIsMTQgQEAgY2xhc3MgUmVz
cG9uc2Uob2JqZWN0KToKIAogICAgIGRlZiB1bnNldF9jb29raWUoc2VsZiwgbmFtZSk6CiAgICAg
ICAgICIiIlJlbW92ZSBhIGNvb2tpZSBmcm9tIHRob3NlIHRoYXQgYXJlIGJlaW5nIHNlbnQgd2l0
aCB0aGUgcmVzcG9uc2UiIiIKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgbmFtZSA9IGlz
b21vcnBoaWNfZGVjb2RlKG5hbWUpCiAgICAgICAgIGNvb2tpZXMgPSBzZWxmLmhlYWRlcnMuZ2V0
KCJTZXQtQ29va2llIikKICAgICAgICAgcGFyc2VyID0gQmFzZUNvb2tpZSgpCiAgICAgICAgIGZv
ciBjb29raWUgaW4gY29va2llczoKICAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAg
ICBjb29raWUgPSBjb29raWUuZGVjb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgICAgICAj
IEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICAgICAgICAg
Y29va2llID0gaXNvbW9ycGhpY19kZWNvZGUoY29va2llKQogICAgICAgICAgICAgcGFyc2VyLmxv
YWQoY29va2llKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMoKToKQEAgLTIyMyw5
ICsyMzQsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi53cml0ZV9z
dGF0dXNfaGVhZGVycygpCiAgICAgICAgIHNlbGYud3JpdGVfY29udGVudCgpCiAKLSAgICBkZWYg
c2V0X2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9IiIpOgotICAgICAgICAiIiJTZXQgdGhlIHJl
c3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCBib2R5IHRvIGluZGljYXRlIGFuCi0gICAgICAgIGVy
cm9yIiIiCisgICAgZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPXUiIik6CisgICAg
ICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIHJldHVybiBhIEpTT04g
ZXJyb3Igb2JqZWN0OgorCisgICAgICAgIHsiZXJyb3IiOiB7ImNvZGUiOiBjb2RlLCAibWVzc2Fn
ZSI6IG1lc3NhZ2V9fQorICAgICAgICBjb2RlIGlzIGFuIGludCAoSFRUUCBzdGF0dXMgY29kZSks
IGFuZCBtZXNzYWdlIGlzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICIiIgogICAgICAgICBlcnIg
PSB7ImNvZGUiOiBjb2RlLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiBtZXNzYWdlfQogICAg
ICAgICBkYXRhID0ganNvbi5kdW1wcyh7ImVycm9yIjogZXJyfSkKQEAgLTI5NywyNCArMzExLDEw
IEBAIGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKIAogCiBkZWYgX21heWJlX2VuY29kZShz
KToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJpbmFyeSBkYXRhIHVz
aW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhvbiAyIGFuZCBgYnl0
ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAgIGlmIHRoZSBhcmd1
bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFu
Y2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAgIyBQeXRob24gMyBh
c3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNoIHdpbGwgZ2FyYmxl
IHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRyeSB0byBlbmNvZGUg
dGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFkMDMyZmI4L0xp
Yi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgot
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCisgICAgIiIiRW5jb2RlIGEg
c3RyaW5nIG9yIGFuIGludCBpbnRvIGJpbmFyeSBkYXRhIHVzaW5nIGlzb21vcnBoaWNfZW5jb2Rl
KCkuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShzLCBpbnRlZ2VyX3R5cGVzKToKICAgICAgICAgcmV0
dXJuIGIiJWkiICUgKHMsKQotCi0gICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVkIHZhbHVl
IGluIFJlc3BvbnNlSGVhZGVyczogJXIiICUgcykKKyAgICByZXR1cm4gaXNvbW9ycGhpY19lbmNv
ZGUocykKIAogCiBjbGFzcyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKaW5kZXggYzAzNzczMmE2
YmFlZjMxZDU4YjNkZmY5MjdiMDc0ZGZjZmFiYjRmZi4uYzI0OThjNGVlMWU4ZjQ1ZGU2MDRmNzEz
OTRjM2Q2ZmVlZjgyYWVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTY0LDEyICs2NCw2IEBAIGhhbmRsZXIgcmV0dXJucywg
b3IgZm9yIGRpcmVjdGx5IHdyaXRpbmcgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAiIiIKIAogCi1F
RElUX0hPU1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1
YmRvbWFpbnMgIgotICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8gYSBsb29wYmFjayBk
ZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCi0gICAg
ICAgICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQotCi0KIGNsYXNzIFJlcXVlc3RSZXdy
aXRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6CiAgICAgICAgICIi
Ik9iamVjdCBmb3IgcmV3cml0aW5nIHRoZSByZXF1ZXN0IHBhdGguCkBAIC02NzYsNyArNjcwLDgg
QEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAgIF9ob3N0LCBzZWxm
LnBvcnQgPSBzZWxmLmh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0
YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRfSE9TVFNfSEVMUCkpCisgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyIG9uIHBv
cnQgJXM7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBzb21ldGhpbmcg
YWxyZWFkeSB1c2luZyB0aGF0IHBvcnQ/IiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYsIGJsb2NrPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
c3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQppbmRl
eCBhZWExYzczODBiMTc5Y2VkMTM2NmI2NjE3MDU3NTc4YjM1ZDllMTRiLi42NGY2ZDVmYjJkYjI3
OTU4ZjMzZGQzNmI1N2I3YzE3NGRmMGJkN2U5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL29wZW5zc2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CkBAIC00
MDIsNiArNDAyLDggQEAgY2xhc3MgT3BlblNTTEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICBk
ZWYgX2dlbmVyYXRlX2hvc3RfY2VydChzZWxmLCBob3N0cyk6CiAgICAgICAgIGhvc3QgPSBob3N0
c1swXQorICAgICAgICBpZiBub3Qgc2VsZi5mb3JjZV9yZWdlbmVyYXRlOgorICAgICAgICAgICAg
c2VsZi5fbG9hZF9jYV9jZXJ0KCkKICAgICAgICAgaWYgc2VsZi5fY2Ffa2V5X3BhdGggaXMgTm9u
ZToKICAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKGhvc3RzKQogICAgICAgICBjYV9rZXlf
cGF0aCA9IHNlbGYuX2NhX2tleV9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQppbmRleCA4YjZmZDM0ZjAyYzBlOWI3MDczZDBjOTQwMTE3
MDdlYWE0ZTVhMWYxLi42YjM1MTg0NzQ5MWJmZWUxZjhlMTdhNDIxMjdjODhiZTk3YTYyOTIzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkK
QEAgLTQsNyArNCw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcK
IGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNl
TWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCitmcm9tIHNpeCBp
bXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQorCitmcm9tIC51dGlscyBpbXBvcnQgaXNvbW9y
cGhpY19lbmNvZGUKIAogCiBjbGFzcyBTZXJ2ZXJEaWN0TWFuYWdlcihCYXNlTWFuYWdlcik6CkBA
IC0xNDUsOSArMTQ3LDEyIEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgIGlmIHBhdGgg
aXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzZWxmLmRlZmF1bHRfcGF0aAogICAgICAgICAj
IFRoaXMga2V5IGZvcm1hdCBpcyByZXF1aXJlZCB0byBzdXBwb3J0IHVzaW5nIHRoZSBwYXRoLiBT
aW5jZSB0aGUgZGF0YQotICAgICAgICAjIHBhc3NlZCBpbnRvIHRoZSBzdGFzaCBjYW4gYmUgYSBE
aWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0IGNoYW5nZXMKLSAgICAgICAgIyB3aGVuIHdy
aXRpbmcgdG8gYSBzdWJkaWN0LgotICAgICAgICByZXR1cm4gKHN0cihwYXRoKSwgc3RyKHV1aWQu
VVVJRChrZXkpKSkKKyAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2ggY2FuIGJlIGEgRGlj
dFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdAorICAgICAgICAjIGNoYW5nZXMgd2hlbiB3cml0
aW5nIHRvIGEgc3ViZGljdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBl
KToKKyAgICAgICAgICAgICMgVVVJRHMgYXJlIHdpdGhpbiB0aGUgQVNDSUkgY2hhcnNldC4KKyAg
ICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgcmV0dXJuIChpc29t
b3JwaGljX2VuY29kZShwYXRoKSwgdXVpZC5VVUlEKGtleSkuYnl0ZXMpCiAKICAgICBkZWYgcHV0
KHNlbGYsIGtleSwgdmFsdWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIlBsYWNlIGEgdmFsdWUg
aW4gdGhlIHNoYXJlZCBzdGFzaC4KQEAgLTE2Miw3ICsxNjcsNyBAQCBjbGFzcyBTdGFzaChvYmpl
Y3QpOgogICAgICAgICBpZiBpbnRlcm5hbF9rZXkgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAg
cmFpc2UgU3Rhc2hFcnJvcigiVHJpZWQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIHNoYXJlZCBzdGFz
aCB2YWx1ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5ICVzIChvbGQg
dmFsdWUgd2FzICVzLCBuZXcgdmFsdWUgaXMgJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYuZGF0YVtzdHIoaW50ZXJuYWxfa2V5KV0sIHZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tleSwgc2VsZi5kYXRh
W2ludGVybmFsX2tleV0sIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
ZGF0YVtpbnRlcm5hbF9rZXldID0gdmFsdWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGls
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggNjRiMDhhMjdhYThiMzNkNGNlYTg2Nzdi
MzBkMzMwOTZjYWUyMTJkNS4uYjAwNWI0MTdkNzQzZjIwZjA2NWMxOTVlNzQzZDhhYmNmYjA0YWRm
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxz
LnB5CkBAIC0xLDYgKzEsNDUgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIAorZnJvbSBz
aXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKKworCitkZWYgaXNvbW9ycGhpY19kZWNv
ZGUocyk6CisgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBhIHRleHQgc3RyaW5n
IHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGB1bmljb2RlYCBpbiBQeXRob24gMiBh
bmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCisgICAgbm8tb3AgaWYgdGhl
IGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBi
ZWNhdXNlCisgICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29kZSBwb2ludHMgcmFu
Z2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCisgICAgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0
aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuCisgICAg
YmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3aXRob3V0IGFueSBl
cnJvcnMgb3IgZGF0YQorICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBpc28tODg1OS0xIChv
ciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJm
YjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMs
IHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJp
bmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCJpc28tODg1OS0xIikKKworICAg
IHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtl
KTogJXIiICUgcykKKworCitkZWYgaXNvbW9ycGhpY19lbmNvZGUocyk6CisgICAgIiIiRW5jb2Rl
cyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgor
CisgICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4g
VGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKKyAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMg
YSBiaW5hcnkgdHlwZS4gVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgb2YKKyAgICBpc29tb3JwaGlj
X2RlY29kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAg
ICAgICAgcmV0dXJuIHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAg
ICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKworICAgIHJhaXNlIFR5cGVFcnJvcigi
VW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtlKTogJXIiICUgcykKKworCiBk
ZWYgaW52ZXJ0X2RpY3QoZGljdCk6CiAgICAgcnYgPSB7fQogICAgIGZvciBrZXksIHZhbHVlcyBp
biBkaWN0Lml0ZW1zKCk6CkBAIC0yNSw2ICs2NCw3IEBAIGRlZiBfb3Blbl9zb2NrZXQoaG9zdCwg
cG9ydCk6CiAgICAgc29jay5saXN0ZW4oNSkKICAgICByZXR1cm4gc29jawogCisKIGRlZiBpc19i
YWRfcG9ydChwb3J0KToKICAgICAiIiIKICAgICBCYWQgcG9ydCBhcyBwZXIgaHR0cHM6Ly9mZXRj
aC5zcGVjLndoYXR3Zy5vcmcvI3BvcnQtYmxvY2tpbmcKQEAgLTk5LDYgKzEzOSw3IEBAIGRlZiBp
c19iYWRfcG9ydChwb3J0KToKICAgICAgICAgNjY5NywgICMgaXJjK3RscwogICAgIF0KIAorCiBk
ZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgaG9zdCA9IGhvc3Qgb3IgJzEyNy4wLjAuMScKICAg
ICBwb3J0ID0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBpbGUuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVj
dG9yL2NvbXBpbGUuYW55LmpzCmluZGV4IDZjNDEyMzk0M2U3NzVmNDZlODU0YjJjMDcyNThhN2Qw
OGM1Y2Y2OTIuLmU5NGNlMTE3MTczNjlmYjY1ZWYwNGM2ZWM2YTEzZGExOTI4OTMwNzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5h
bnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNzZXJ0X01vZHVs
ZShtb2R1bGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS1iYWQtaW1wb3J0
cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCmluZGV4
IDM3MDcyNDM0MjA4YTU4ODE5YTBhNDFmYWE2YTE5MTA3MDRjMTA4NDUuLjMwMjUyYmQ2ZWViM2Fi
OTcyODYzMzFhYTc2OTY4MjI1ZGFkNWE1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50
aWF0ZS1iYWQtaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1p
bXBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0
PS93YXNtL2pzYXBpL2JhZC1pbXBvcnRzLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0
YW50aWF0ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUuYW55LmpzCmluZGV4IDAyMThk
ZTJiNDUyOTJjMjNlOGZjYzcyMGRiZjhjMmM0YTVjOWI2OTMuLjgxNTJmM2E1NmYzZjQzOTk5NzY1
YzM0OWU0ODhkZGIzMTM0NDIxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUt
YnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL211bHRpLXZhbHVl
LmFueS5qcwppbmRleCAyYzUzZTM2MTFlMDQ0YzhiYTQ0YTVjMDQzNmQ0NDA5YmM5ZjFhZjQyLi40
YjA2ZDFkYTNjNDliOTM0MDZlOTllY2IzZTZhNzJjYTc2YzlkMWJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3Ry
dWN0b3IvbXVsdGktdmFsdWUuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5hbnku
anMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNt
L2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
Y29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCmluZGV4IGE1MjNhY2M3OTI1YzllZjc2NDZkMjk2
YTc4YmY5ODMxZWRhODZkNzEuLjhiNGY0NTgyYWIyOTg3NzMyZDQwNDk5NDg5OWU5YTc3NjYyZTJh
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9y
L3ZhbGlkYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlN
b2R1bGVCaW5hcnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwv
Y29uc3RydWN0b3IuYW55LmpzCmluZGV4IDI3MDE0OWVjMTQ0MzA0NWU0MTM0ZWViODA0MDM2NTFh
M2QwYTEyZmYuLmIwMDhlZjMwMTYwMWViNGU0YTI1NTU3ZWZhZjFlYzEzNWNlZTEwYjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2Fz
bS9qc2FwaS9hc3NlcnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9HbG9iYWwoYWN0dWFsLCBl
eHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3Ry
aW5nLmFueS5qcwppbmRleCA1ZjY0ZDcyZGU5ZDlkZjRhOTllNDgyY2RlZDVhMzBhYzFjOGEzNDNj
Li4zNTljNDI3M2I1YmQ3ODY3YWNkYTQ0ZmM0NmE2ZGRjMDBhY2M5NzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xv
YmFsL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCBhcmd1bWVudCA9
IHsgInZhbHVlIjogImkzMiIgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCmluZGV4IDY5ZjBlNDYzNzlmZmQyMGEzYjli
ZmIxOTA0ODczNzZkNjE2ZDkxNmUuLjQzZDg0NzRhMjVkMTgyZDc0MjI2NTRmNjE3NjliZjg3ZDNh
YmEyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92
YWx1ZS1nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3No
ZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRl
c3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1
ZU9mLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKaW5kZXggMGQ0ZGU5M2E2YmQyMjlmOGQ5
ZmFiNzk0MWIyNGExOTQ0ZGM2YWE3OC4uMDY5NWE1YTYxZmJjNmUyNDUwMTlhN2JmNDI4MTBjYjg0
YTBkZmEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1ZU9mLmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVl
T2YuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAidmFsdWUiOiAiaTMyIiB9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1i
YWQtaW1wb3J0cy5hbnkuanMKaW5kZXggZTg4ZDAyYjY0OTY4NGIwZDdjZWVjYjBkMGEzZDFlODc1
ZGQyMWM0OS4uZTRhNWFiYjhlYjIxNjlmYmNlMTdiNjBkYTI3MzEyYmE5NGEwYjlkMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2Uv
Y29uc3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTog
Z2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpz
c2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpz
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYmFkLWltcG9ydHMuanMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2luc3RhbmNlL2NvbnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9y
LWNhY2hpbmcuYW55LmpzCmluZGV4IDY5NWIwNzhhMGY5NDc4NjIwNzE1YjBmZWYyNTlmNzIwNzQz
N2YyOWQuLjFhYTQ3MzliNjI5NGQwMTM3ZWFkMzA5N2Q1ZGJjZWMzZTNhMWYyMjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1jYWNoaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3Ry
dWN0b3ItY2FjaGluZy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rp
b24gZ2V0RXhwb3J0cygpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
aW5zdGFuY2UvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IDA2YzZkN2E4OGMwOTIzNWFiZDQwYTcx
YTM3OWYwZDgwMDVhMzM2MTguLjI2MzkwZWJkMmNkYjJlNGM0OGRjMzBiZDUwZjZlNTc5NGU4MDc5
MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2Nv
bnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2Ny
aXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvZXhwb3J0cy5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvaW5zdGFuY2UvZXhwb3J0cy5hbnkuanMKaW5kZXggN2M4MWE0MTI5NWIwYTFmMmUyMGVlNzk3
MjI5MWUxMDk5ZjIzNzVmZS4uNmRjZmJjZWU5NTBkODcxY2Q2ZWUzZTVhZjk0YmVlMzlmZDhmNTFl
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRz
LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlNb2R1bGVCaW5h
cnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5n
LmFueS5qcwppbmRleCA3MDFlYzhmOWJhZDk5OGJjMjYzMTBlNzRhOGE3ZTIzZjJjYmY1YzRkLi41
NDdhOWNhODI5NWY1YjY4MTNhM2QxNzliYmZkM2NhOTA1NGU0OTcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFu
Y2UvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0cmluZy5hbnkuanMKQEAgLTEsNCAr
MSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20t
bW9kdWxlLWJ1aWxkZXIuanMKIAogdGVzdCgoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9pbnRlcmZhY2UuYW55LmpzCmluZGV4IDg4OTQwYmU1MWE3ZjU3MjdjMjdlMTY3ZDllMTBh
YmJhZWIwNGEwNmIuLjQ1NTFlNmU2ZTNkNDNlNTRlMGRiYjZhNjRmMDdmYjU3ZWY5OGFjNDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCkBAIC0xLDQgKzEs
NCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRp
b25zLmpzCiAKIGZ1bmN0aW9uIHRlc3Rfb3BlcmF0aW9ucyhvYmplY3QsIG9iamVjdF9uYW1lLCBv
cGVyYXRpb25zKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZl
ci5hbnkuanMKaW5kZXggYTgzNWU2NTExYTBhNmM1M2MzNmEwZmZkODE0M2Y0YTFhNzM4OGVjYS4u
ZmIxZDEyMDBiODkyYmUxZWI3YWVhNjZkYjM0M2RiNDkxZTkyMWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9idWZmZXIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYnVmZmVyLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS5qcwppbmRleCAwM2VlZDUyNzA4MzFiNTA0ZTZhYjIxYmNjOGVlMzZmZGZkMDUwMzA0Li5mNTA1
NzE5ZDJjNWU0MTFjYTlkZWJjMDA3NmEyYjQwZGVkMDIwZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0
aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfTWVtb3J5KG1lbW9yeSwgZXhwZWN0ZWQpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCmluZGV4IDBjZWE4
YjRiMWE2MzNmMWY2ZGE5MjMxMzMyZTM5NGI3ZmNkNzYxOTcuLmRiOWU3ODEzNjE3Yjk2NDcxYTkw
YzM1Yzk2Yjg1ZjA5MjY5OThkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIGZ1bmN0
aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihhY3R1YWwsIHsgc2l6ZT0wLCBzaGFyZWQ9ZmFsc2UsIGRl
dGFjaGVkPWZhbHNlIH0sIG1lc3NhZ2UpIHsKICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L3NwZWMvaXNzdWVzLzg0MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L3RvU3RyaW5nLmFueS5qcwppbmRleCBiYjkwODFkMTg2MTdlMWFmNzI0MjRlYTcwMGQz
MGU1Y2IwZWZkOThkLi5mNDA1OWY3NjU3NzIyNzU5Y2U0ZmM5NTBjNDg1MDkxNmQxMDJkZWRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5q
cwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25z
dCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVj
dG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IGFjNGNkZTJlMzE3ZTVl
Y2IxODdhOTY0ZjRmNTJmNmE3ZGM3NmRkOTguLjk5NzhmN2U2YWM4ZjJiMTFiY2FjYTgyM2I4Nzdl
YTgxN2RmZTdlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpz
c2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1
c3RvbVNlY3Rpb25zLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCmluZGV4IDhj
MjE1ZDE3YmQyNTgzNGFkMjk4M2U4ODE3MjM3MWM0ZWUxZjY1YzIuLjQwMjk4NzdlOTJjN2I4YjNi
ZDMyMTg0ODUzOTQ3NWMzYWY1MmVkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAot
Ly8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1i
dWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVk
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5q
cwppbmRleCAxMzI5YzZhNjAyMWYyZDU5MDJmNzU5ZTRkYTkyZDIwOTk3NGRhNzBlLi42MGIyYzA0
ZjQzNjk2OGFjMTE1NTc4NjAyNzVkNzViYzg5ZTQ5ZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9y
dHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBN
RVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxk
ZXIuanMKIAogbGV0IGVtcHR5TW9kdWxlQmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRz
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tb2R1bGUvaW1wb3J0cy5hbnkuanMKaW5kZXggOWE3ZDYxMTU5ODZlYTA2NmM1MDc1
ZDE0ZjYwZDNjYjAyNzdhNzhhMS4uZDY3NTRjOWVmYmRjNDRjZDk2MzcwOGY1Yjc1MWYxNTQ2ZGRm
Y2QxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0v
d2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9Nb2R1
bGVJbXBvcnREZXNjcmlwdG9yKGltcG9ydF8sIGV4cGVjdGVkKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxl
L3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCmluZGV4IDdkZDg1YTFjNGFj
NmU1MjVlMWU0YzBmOWJhY2MzMjk1ZTdlZGE3ZmMuLjFjMjBjZDYxMDhjODRlNTZlMjE5ZjBlNzM4
ZTA2NzJjZDdjMmQwNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hl
bGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1F
VEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIHRlc3QoKCkg
PT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rv
ci5hbnkuanMKaW5kZXggNWM5YTZmMTNkOTFlYmEwOThhYjU5ZTg5MzE0NTIyMjM3NWUxYjZjYy4u
ZTllNzdhMTMyYjc2YTQ3OWEyODk1YzE4YzY5YjQwMmJlNzFmZTNlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQg
KzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3Nl
cnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9UYWJsZShhY3R1YWwsIGV4cGVjdGVkKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKaW5kZXgg
NGUwYTVmOGMxMDQ4ZjRiNzcxYzM4ZmYwYWVmOTkxMGVkMzdiMjVjMi4uMmUxNjM0NmM2NDc5ZWM1
NWUxNmEzMzQ5ZjEyYjZjYTRiNmRhN2Q0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55Lmpz
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS9nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2Jh
bD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxs
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8g
TUVUQTogc2NyaXB0PWFzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVmdHlw
ZXMudGVudGF0aXZlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMK
aW5kZXggZWRmYjMzNDk5MWUwNGQyY2FiZmVlYjQ0MjZhZDA1Mzc5NmM2N2VjNS4uODVkY2JkMWQw
MDY0M2EwMjJkMDY2NTI2YjVjMDA4MWM5YzZlMGJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVm
dHlwZXMudGVudGF0aXZlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1yZWZ0eXBlcy50ZW50YXRpdmUu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD1h
c3NlcnRpb25zLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1jb25zdGFudHMu
anMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMKaW5kZXggZjU0M2Nj
NjIwYmNjNGNjYzBlNzA2ZDBkY2I4ZTY4YWY0MjEwYTI0ZS4uM2IyZWU1ZmE4ZWY2NmRkNmE3ZDAy
YzU5NzY5YTQxMzAzZTZhMWM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJs
ZS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9YXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBudWxscyhuKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFi
bGUvbGVuZ3RoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCmluZGV4IGY0ZTExNDg0Nzk3Mjkw
NjFhN2Y0MGU2ODMxMWFkZDQzZTBjNTFiMWMuLmE5ZWYwOTVkZWQ0NDU4MWQ0NGRlY2U1OTU3NzU3
N2ZhNmZlMjU0MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5n
dGguYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IHRoaXNWYWx1ZXMgPSBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L3RhYmxlL3RvU3RyaW5nLmFueS5qcwppbmRleCA3MDhjMTdiM2FjYWRmZGUyYzlhYmRhMzAwYzJk
NTdlNjFmNWE3MGNlLi44YTA5ZjI4MzJjMWQ2NDU5NDE4MmZhZTQ2NTFiYzliMDdhNTA4ZDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMK
QEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3Qg
YXJndW1lbnQgPSB7ICJlbGVtZW50IjogImFueWZ1bmMiLCAiaW5pdGlhbCI6IDAgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy9iYXNpYy1hdXRoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy9iYXNpYy1hdXRoLmFueS5qcwppbmRleCA0NWU0ZGFkYjNi
OWNlNWZiZWFkODhkYzg1ZDY4ODMyYjZkZDA0YjVhLi40NDdiY2RlZmJlNWZiNzg2ZGUzMWZhZmZj
OWM0NDYyOTQ4ZjRlMmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2Jhc2ljLWF1
dGguYW55LmpzCkBAIC0xLDUgKzEsNSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIK
IC8vIE1FVEE6IHNjcmlwdD13ZWJzb2NrZXQuc3ViLmpzCi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVk
d29ya2VyLHNlcnZpY2V3b3JrZXIKIAogYXN5bmNfdGVzdCh0ID0+IHsKICAgY29uc3QgaXNTZWN1
cmUgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpLnNjaGVtZSA9PT0gJ2h0dHBzJzsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1v
dW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKaW5kZXggODM5N2ZhZjNjNTc1NzNiNmVk
NzBjN2FiY2I3ZGI4NzBlMmY1ZmYxYy4uNTNjYTY3ZTI2OWJmZTZhZGFiMTZiYjJkNjdjNWI2Y2Q0
Zjc5OTg3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKQEAg
LTEsNSArMSw1IEBACiAvLyBNRVRBOiBzY3JpcHQ9d2Vic29ja2V0LnN1Yi5qcwotLy8gTUVUQTog
Z2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsc2hhcmVkd29ya2VyCiAKIGFzeW5jX3Rlc3QodCA9PiB7CiAgIGNvbnN0IHVybCA9ICd3c3M6
Ly8nICsgX19TRVJWRVJfX05BTUUgKyAnOicgKyBfX1NFQ1VSRV9fUE9SVCArICcvZWNobyc7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvb3BlbmluZy1oYW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhhbmRz
aGFrZS8wMDUtZXhwZWN0ZWQudHh0CmluZGV4IDM1ZGNjMjczODU3N2ZkMDAxYTE3M2ViOWYxMzg4
MjA4ZDAyN2ZkZjkuLjZlNzM1OTlhOGQwZDlhNGIwMTAzNjg1YTA0NjVmOGM5Y2FiYmZlOWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
c29ja2V0cy9vcGVuaW5nLWhhbmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhh
bmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAogCi1QQVNTIFdlYlNvY2tl
dHM6IHByb3BlciBmaXJzdCBsaW5lIAorSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCisKK1RJTUVPVVQgV2ViU29ja2V0czogcHJvcGVyIGZpcnN0IGxpbmUgVGVzdCB0aW1l
ZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwppbmRleCBkNDVlNTJlMjM0
MWI4Y2U0M2QzZTdlMTQ0YWZlNTE4ZWJhNzRjMTczLi5kODJhODI2MzU3NjZiMTlhYzlhOTU2ZDQw
MzI3YjRiMmI5YTI1MDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwpAQCAt
MSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2Jh
bD13aW5kb3csZGVkaWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogc2NyaXB0PS9y
ZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9pZGxo
YXJuZXNzLmpzCiAvLyBNRVRBOiB0aW1lb3V0PWxvbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5bmMtbm8tdGltZW91dC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zeW5j
LW5vLXRpbWVvdXQuYW55LmpzCmluZGV4IGQyM2ZiYjhjNjZkZWY0N2UzMWFkMDFhYTdhMzExMDY0
YmE4ZmRkYmQuLmFjNzNlMGJmMDVkMjMwODUzZDM0NjRlYjNjNzUzYTNlNDY5NGNkMjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5
bmMtbm8tdGltZW91dC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy94aHIvc3luYy1uby10aW1lb3V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogdGltZW91dD1sb25nCiAKIC8vIFRo
aXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vY3JidWcuY29tLzg0NDI2OCwgd2hl
biBhIHRpbWVvdXQgb2YgMTAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400598</attachid>
            <date>2020-05-29 10:28:46 -0700</date>
            <delta_ts>2020-05-29 13:06:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212498-20200529102845.patch</filename>
            <type>text/plain</type>
            <size>2341784</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjY1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA0YjgzNzdmMDI0ZjM5ZWE5ODFlMzI3YjIzNWU2OGExYjM0OTc3ZmY0Li5hZDM1Yjc1MDc3
OTc3ZmIxYTE2MDM0ZWZiMTFkMDliNWE0OGQ0Nzk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMgZnJv
bSB1cHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scyBmcm9tIHVwc3RyZWFtIDZhNzZhMTg1
ZjkxM2UzYzAyN2UzNjlhLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzLyo6
IFVwZGF0ZWQuCisKIDIwMjAtMDUtMjggIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIEZpeCByZWZlcmVuY2luZyBncmlkIGxpbmUgbmFtZXMg
d2l0aCBhdXRvIHJlcGVhdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9y
cy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVk
LWNyb3NzLWluLXNhbWUtbm9uZS1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggMTYwMGNhMjJhZDQ2
MjA3YzExMTQ5N2U1YTBkM2QxMzRjOWE5NDA2Zi4uM2E1MjcxNjNhOTA1M2IxZjE3OGY5ZTk5NzFh
MjBhMWVmZTE1ZTRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJh
bWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5vbmUtYmxvY2stZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQt
Y3Jvc3MtaW4tc2FtZS1ub25lLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUJs
b2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNl
c3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN25vbmUlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5
PSYjeDI3O25vbmUmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRpcmVj
dGl2ZSB3aXRoIGEgdmFsdWUgJ25vbmUnIHNob3VsZCBibG9jayByZW5kZXJpbmcgaW4gbmVzdGVk
IGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzogVGhlIElGcmFtZSBz
aG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0IHdhc24ndC4gUmVh
Y2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2Vz
dG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nv
bnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVz
dGVkLWNyb3NzLWluLXNhbWUtc2VsZi1ibG9jay1leHBlY3RlZC50eHQKaW5kZXggYmQ1YjMwODEz
NGJjNTY1NDY1NDAxNWFlYzhhZDQ0MTAxYjY4NDQ2Ny4uZGUzZjViMWFkNTgxZTQxNDU5OWY5OGRk
NTdjMGNiMmEwZDIzYWRlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMv
ZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0
ZWQtY3Jvc3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
LUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgw
MS9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1h
bmNlc3RvcnMuc3ViLmh0bWw/cG9saWN5PSUyN3NlbGYlMjcKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4
dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250ZW50LXNlY3VyaXR5LXBv
bGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3RvcnMuc3ViLmh0bWw/cG9s
aWN5PSYjeDI3O3NlbGYmI3gyNzsKIAogCiBGQUlMIEEgJ2ZyYW1lLWFuY2VzdG9ycycgQ1NQIGRp
cmVjdGl2ZSB3aXRoIGEgdmFsdWUgJ3NhbWUnIHNob3VsZCBibG9jayByZW5kZXIgaW4gc2FtZS1v
cmlnaW4gbmVzdGVkIGZyYW1lcy4gYXNzZXJ0X3VucmVhY2hlZDogSW5uZXIgSUZyYW1lIG1zZzog
VGhlIElGcmFtZSBzaG91bGQgaGF2ZSBiZWVuIGJsb2NrZWQgKG9yIGNyb3NzLW9yaWdpbikuIEl0
IHdhc24ndC4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLXNhbWUtaW4tc2FtZS1zZWxm
LWFsbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFu
Y2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CmluZGV4
IGNhMzUzYTg0NzAxN2FiYjY5YWE3ZTQ2OGM4NWVlNzk5YmYxM2IzMGYuLjE5ZWI5MWYzNzgyNWEy
NGM5NDcxNTJhNDAxYjY1NjM2NWU2MmZhMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUt
YW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1uZXN0ZWQtc2FtZS1pbi1zYW1lLXNlbGYtYWxsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAogCiAKLVBBU1MgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGgg
YSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQg
ZnJhbWVzLiAKK0ZBSUwgQSAnZnJhbWUtYW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2
YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2NrIHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJh
bWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJbm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGJsb2NrZWQuIEl0IHdhcy4gUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdhdGlvbi9qYXZhc2NyaXB0LXVybC1uYXZp
Z2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L25hdmlnYXRpb24v
amF2YXNjcmlwdC11cmwtbmF2aWdhdGlvbi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CmluZGV4
IGExYmMzYjY0NDJlNmY1ZjliNmFjYzU5ZWQ5NTIyZDQ3NTMwOTk2NGIuLjhiMTM3ODkxNzkxZmU5
NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvbmF2aWdh
dGlvbi9qYXZhc2NyaXB0LXVybC1uYXZpZ2F0aW9uLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50
LXNlY3VyaXR5LXBvbGljeS9uYXZpZ2F0aW9uL2phdmFzY3JpcHQtdXJsLW5hdmlnYXRpb24taW5o
ZXJpdHMtY3NwLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxIEBACiAKLUZBSUwgVmlvbGF0aW9uIHJl
cG9ydCBzdGF0dXMgT0suIGFzc2VydF90cnVlOiB2aW9sYXRlZC1kaXJlY3RpdmUgdmFsdWUgb2Yg
ICJkZWZhdWx0LXNyYyAnbm9uZSciIGRpZCBub3QgbWF0Y2ggZnJhbWUtc3JjLiBleHBlY3RlZCB0
cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9pbnRlZ3JpdHkuc3ViLmFueS5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L2ludGVncml0eS5zdWIuYW55LmpzCmluZGV4IGQ0ODdjMzczOGFjNDk4ZjRiOTM2ZTI2OWMwOTNj
YTJiYWQ1ODFjYjAuLjU2ZGJkNDkwOWY2YTQzZTQ4OWVlNWI2YzUwMDU0ZDJiNDRkMDcwOWUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL2ludGVncml0eS5zdWIu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPXNoYXJlZHdvcmtlcgorLy8g
TUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsc2hhcmVkd29ya2VyCiAvLyBNRVRB
OiBzY3JpcHQ9Li4vcmVzb3VyY2VzL3V0aWxzLmpzCiAKIGZ1bmN0aW9uIGludGVncml0eShkZXNj
LCB1cmwsIGludGVncml0eSwgaW5pdFJlcXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CkBAIC0yMCw3
ICsyMCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIGludGVncml0eSwgaW5pdFJl
cXVlc3RNb2RlLCBzaG91bGRQYXNzKSB7CiAgICAgfSwgZGVzYyk7CiAgIH0gZWxzZSB7CiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwsIGZldGNoUmVxdWVzdEluaXQpKTsK
KyAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCh1
cmwsIGZldGNoUmVxdWVzdEluaXQpKTsKICAgICB9LCBkZXNjKTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRpb24uYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc3RyZWFtLXNhZmUtY3JlYXRp
b24uYW55LmpzCmluZGV4IDE4MGQzMzg2NTkwMjFmZWQzZDI5ZTA4Y2NlYTQxNWNjNTg1MmZlZDIu
LjM3YzgyMWNlNzNmMjVjNWUyYzVkMDJhNjg3ZDZhODAwNmVmNTA2MGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9zdHJlYW0tc2FmZS1jcmVhdGlv
bi5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9d29ya2VyCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LHdvcmtlcgogCiAvLyBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBzdHJl
YW0gY3JlYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8KIC8vIE9iamVjdC5wcm90
b3R5cGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbAppbmRleCA3Y2MyMmEyOGMyMGMwMWYyYzYwMmI2Yjc5
ODE0ZmM2ODQ0MDU0MzA2Li4zZWI4OTNmNGU2NWMzYzBlNTU2NzY4OGJkMzA3MjViYzIxZWI0MGNi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL01FVEEueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKQEAgLTEsNCArMSw1IEBACiBzdWdnZXN0ZWRfcmV2aWV3
ZXJzOgogICAtIGpncmFoYW0KLSAgLSBnc25lZGRlcnMKLSAgLSBqdWdnbGlubWlrZQorICAtIEhl
eGNsZXMKKyAgLSBzdGVwaGVubWNncnVlcgorICAtIEx1a2VaaWVsaW5za2kKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMv
Y2FjZXJ0LmtleSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LmtleQppbmRleCAxYTEyMWRmYWM5NTJkZmU4ODg2YjFiNWU0MWU3
YzczMTFkNWYwYjMyLi40NDVhYWUxYjlmYjk3NjBlMzkwZTdlNGQwNDc2YTgwOGM0ZTNmODBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5rZXkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CkBAIC0xLDMwICsxLDMwIEBACi0t
LS0tLUJFR0lOIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tCi1NSUlGSHpCSkJna3Foa2lHOXcw
QkJRMHdQREFiQmdrcWhraUc5dzBCQlF3d0RnUUltaW5IVHprWGhyc0NBZ2dBCi1NQjBHQ1dDR1NB
RmxBd1FCS2dRUVhWd0pjcVd6ZTZBM1ZZdUFTMEJQZ3dTQ0JOQ1J0dnJvQjZxcm9RbEY1OEhFCi01
U0pIRi9qUVJKUnhmMDUxbHJxK2pmVXhNN2tadWNOTitteVYyemlMb2dhNk9RTTU3OUQ4dnk4dHFr
ckxwbnNUCi1jWGtnSHV3dEJKRjQ3dzFZQVBHR0FSZTNLc3YvMkM5c1VWY1B2bW5WcnpTTVg4NkVz
ZXJmZnFNM3pmd1oySDNTCi1qeFREU3lJdkpVVSs0WGZ4cldlZ1RpUVFQTnFEeUxmTzVkQmZhdFQy
enRYQ211M0JGaXB1aEdGcHd3Q0ppcktyCi0xeGI2WFBFdVQwUEN6VE5wZVNVUnBYRktITURNa2Nq
T2tOQVV5Z0lFdytMZzdldFZmTGNzZ0J1ekVBM1JXd2YzCi1PTVkxbVRCSmx2eDZ6WnhkWDdhMFFt
eGVyVURrRFM5WVlBRUdTRmErRng2Y0dXNVB5ZWVmOXh0bEh4WkhpK3BtCi1UeEN3Y3ZKeVhxZUQ0
Z1dtM3MxZ3dPamk1V21Ydm8yRWlyY3hmU0trOFRVd2FweGZDWVFiT2pRSVBhSG5FR29hCi1DUWhT
RWdEWDV1ZndzWEo5L3BTUDZralcreStmMGduaEhWdUtKS3NPQm1qZzZpcXducUVodyt1TkZXS0ts
L01vCi1URlQ3Q3JheUpUdm8rOVVkUVRKVjlNQkFzTVVRUzdkK0hIOWtOT0FuL2hmbUV6ekdVS1ZU
WjB6SWQwZktIMTNwCi1Ubm9ZZ01ZYm0yVXJuME5YQkZPOFJ2elkzS3BLeVJoTWNPTEt4a1BWVWpL
VUE1QnVBdjZyY3ZNZmxJNkhuNXdVCi1xUE0rdUVDU2dkT25OZUltaTFGZitjVzhkVEdHUmIraWhh
K0VuQUJvWDN3UjVPdnpnQ1lIZUVOSmIzMkZVb1ZzCi1JRDJUNU1adFFOQXJraXMveFdaN0p5UGJt
c1FvMnd5aUZMYXNYOFdnaCs4TWdGeG9scHZqbFgzL1FkVFRKcUVjCi1yb2ZWR09QT21mb0hvM2VZ
TkpPbExiYUpUREllOE9ySzQ5UElldTFnbTh6cUIyV1lxbUYvM0FZeTRJQUl3VVl1Ci1yYlB3VUM5
SHljZVJQU1llUE05V2YxeE0ycHJvSzNubXA2YXBkSENSTmpiZDQ2ODlFTG1COTBiMmF3Nk5GaWFt
Ci0zdGFLUG1GTGIvdnQyWXhncU90YWdQclRsYzFRTEhCS3JzbnBnL0JoY0JqdXBxUktHRm1YQ0p6
aVBJYURLdkFzCi1qdGc0S0RvOGpOSXhtd1FBd0VWNCthSDBoaE11bXhhOHlhWG9DLzNHNkp4RDJz
ZG9yYU9wK3ZyVHpqVU1rSW9jCi14THFXbDhHSFZMRjA5ZlpKNFN0SmZJV0lPbW1waWNTeFcxdkRJ
Q2FadVUraVB3bE5PekY3c2VQUmtpeGJhckhyCi1pcVRsTEcvLytIdXEvbjlJUnhoem1TT3VyNjNX
TVhGUnkwc0tXNVcrdVE5eHNuVjhTZGp3Um1BR0x0blpIcTRZCi1OT0NRLyt5T1JsNHl4a1B2VjAx
SHlrQWw0Q1J0UEJHUis0WkM1TktocHloSmJ1NldjcXdpWHlBZWhVL2NQZ0wrCi1oOE53RW95UCtP
SHJ2RVlkeTRvY0JuSnEvNDM2V3d6ZldpczhuSUc0YlNsRDNEU0VnSkYvUVVtcTRpL0VVcS9BCi1E
NlNmemJGcFBHdFRqM0taNkQ4RFByd1dHNjhPQ0ZzcVJXOVlFdlVJSzhKVDI2NUJOM016STVpMC8r
azRDZEFnCi1hU2FpQzk3cWc3cUphVk05YjlFSHNjVVhSL2ZlRnh2TzVRa2trWTVDVFUzQnhiMHMx
STRSdzJNWW9BZE1HdGJBCi02bWR6bVJWWW9SdjlOTWR6TDZ6T1RvUFU2b09nNm1iakhnWlFnTmQ3
dzhHdFRGVytzZnNsTE9YWEM4ZXJ6YkhsCi1CeVFKR2NGR3RLVEJVRCs3VkhaaHB3TTdiUE9idHp5
QTJyMFViUzFReDBJem52dWJkRlZjWHlFN2RJalc3Y0FnCi1JYkJ6S2VpRVJ3cHUzck1xMmJZVlcz
REEzM1ZsclRmcGpYdWpoSHYxaVgxNWk2cXNXZDdPdFp3Nng3VGNjSDFaCi1qZG1oOVhCOXhEeWRu
c3MzdTlEd0dSRU1ZQzlUZFBaWS9udWk2bGdDampPaGFUYXVuTXVpZ0ZCTVdVQmtEbEliCi11anUr
QXR2K1BTQlQ5RG1UeVRRR2hQWlJJdz09Ci0tLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVkt
LS0tLQorLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQ0KK01JSUZIREJPQmdr
cWhraUc5dzBCQlEwd1FUQXBCZ2txaGtpRzl3MEJCUXd3SEFRSUF3c3VaN3lKeExzQ0FnZ0ENCitN
QXdHQ0NxR1NJYjNEUUlKQlFBd0ZBWUlLb1pJaHZjTkF3Y0VDQ0tSc3dMWHNoOVBCSUlFeUtPdDQy
bUxlTDZoDQordVBCaDYzZG9Ib3FKeEI5NXB3cHRSNjNmcXAyUmZ2WlVVemZyV25JMmRubjB4UnRS
Y1BtZjUyQlI0c2xpSUpKeg0KK0sraDEwVk80YWlsRzRtTWVQKzJWUEhGdWZsUW41eGdTQzVWZDdq
ZWRWMFZleWNNcjBnZloxWGJjTXVWSXJyVzINCit3UVZNL0RiYjNBNk5IVDV5VUErWlR5YW0zU1lo
MFZyQkxwOEZRbi8yMnhpdm1qQzVqcVpiRnF2VWwrTm5CRjBIDQordTkrbWRDbmxZcWNxOXFUMWIy
aEMvVlZTZU95aUNaWFZFRThYbjd0ckxHbFNHSWpmZ05XbWRISllhZEw5SnVXWA0KKy81eEVVMy9N
WnRmajdEZmFyWXZKWU9OVjlwbkJFdXVjV1VqUkpnYlBnTXVxWjJzYjdJcC85L1haSHZnRmdWcnkN
CitMSUplc0xpRmxrOEVtZTdrREg4RVBueTRJNVJVdXVmdE9mWHo1c2VtQ09pUUtxc1Y1aktsQnlQ
eFlNZGgrQURWDQoramlvMHVFNTVMYjRNR2ZoeFd1emNXRC9Sb3Y2SXdJZzB1dVhXcEV6aktyMEp5
VmwvODR3Z25pNUhxMU85RWdlWQ0KKzA3VkJRT3VpRXptaGxtVkdsa3FpMS9rRkFaK1BrZE5VU043
SlBndm5WQS9WZ2ZpZ3RsY0lKOWFtcHNxYXUyeW0NCitLV2gzYlVLaVYwZUpWUEEzL3R2RWRCb29Y
bis4RFFidDQ0c3lEN1A1Mk1mbC9iUzJMYzV5Nm1QdHRWTy9tRHp1DQorWGc2Ym9ETnphWEIvSERV
RjJUZDhSYWNrdnFySFBLS1hYb0F6OXc4c3hZRkdlOEpWZXVPd2ZPNUhYNkpIeXNjZA0KK2NLcUVa
Tk1CTGp4ZWRwTDBFWk16cDcyYnNlMVhjdnZJdi9YQ2habmZLMllmaGZ4Y2wzUklpVFB4M3M2RmVl
SW8NCitUc3JOaVRGOGQvY09MSzExLzAyaEVVZG8ycjVqZzhQSG9abVhsMEE4bjZhYlhWY09uV2k1
TTF0RWpOZHV3S002DQorQVFVUlk3WjlBbFNzUVh3NnhqMno2MHppOCtJd3UzdGdENEhQN05xd1pS
c0Q5OWxhMDlIZGNJMGNTbWVhRU9URQ0KK0J5clZ5cW5PQnI4WkpWTUx1ZTR5TTcrQmRsR1VhYlRX
KzB1MHF5OVExQXh1ZVF6VW1FNFZGS3RmalJxSVVsQUENCis2SHJmRXNPZTdIUkxLeG5kY3RKN3VC
WEk1Z2h2M3pHZDB1Wm1SeWpYc0VqR3IySnFhWmExSGV4cmFCL0dIWEdEDQorOVBaVEpXUzFtTDhL
RTNvMWhTajF5VGdsaGZoSjdXZi9lcmZCR3pjdFVQS1FCa2twelZxWk1TNlkyQUlIVEI1Rw0KK2Iy
d294L2x3dkZBMmNsb2RvVDN0YmVEbWhOSHhJdUdsT25ZdGNQaElMRDdNUmVETnVsMVI5SEwvU3NX
N0FCNisNCitxNlI1NFBzU2NoTmdGaExTZHowcTZhelhVbGs2bWNGNUJnUk92Z3lvYSs3R3YwVWxi
U1FiVXVWdUxEMGszU01VDQorRG1wci93OU9tcVVzT2N6WWxuUFdvdmgrR2JWaHplK2VGVE5JR1Yv
d1ZOTkpRUkMxUlVOckMvZThhZjRjcC8vcg0KKzZqaVE1ZU5mOHJWQjhWTWVNWFJVSHhQd1JYdEZW
RUN1dVRkTWRQbjRVMlRISm8rNDVaMGJWRzl5dFo2Q1VQMG4NCis1NkRXSDYvZEtlSWl2RUZ6L2JZ
NG9DWm1zSWZrak5lbzU0NUdSZmhGTk5HUmdyZGpDZXZyMHBKdFk0aDVWakkyDQoraVBVTDg1UjB4
emU4b0NUMGEvR0hZNlh2cGJuUno1cXJ5MWMyRG9SM0llRFFrcTl5UWpBN1dhdXRUYnA4VXpDZA0K
KzFTN1JYSWtyelBDZzRYQklwUXU1aHN3S0M3Vy9VaUg3SDkycHR5bDJncmlDN0UwSk9mWi9Ndmd4
WnBGaTh1cGUNCit5WThqMUdESWd3cHRmOVFHTGttL2Vwdi9RTTZMMjV3R0VFOTE2elErM3JrVVhU
WFQyb1BJaThqYVFSc2xvWGNpDQorTkkzbDFGRkVRak40VjRpdDNHMnRWbmVnY0FRZFg5bnNaOTdw
QXErTk9LMjhPaU45a0ROOW9sVitBMExNZTc1aQ0KK0JJQi96UlVmSWVnL1RTYllpRlYyY1E9PQ0K
Ky0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQu
cGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy9jYWNlcnQucGVtCmluZGV4IGUxYjVhZGQ1NGU3OTdkYjFjNmMxZDNlZGE5NjFhZjNlNTRi
YzdhNzcuLmVlYmE1MjhkMjZkMzU3MzIwYmE0MmY1MTZmMTdlMzI0NDdhODNhZDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvY2FjZXJ0LnBlbQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KQEAgLTEsMTI1ICsxLDM0NCBAQAotLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlXNXpDQ0ZjK2dBd0lCQWdJREJiRkhNQTBHQ1NxR1NJ
YjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVG
dzB4T1RFd01UUXhNelE1TWpsYUZ3MHlPVEV3TVRFeE16UTVNamxhCi1NQjB4R3pBWkJnTlZCQU1N
RW5kbFlpMXdiR0YwWm05eWJTMTBaWE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCi1CUUFEZ2dF
UEFEQ0NBUW9DZ2dFQkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2ZqeDJOV2svV0ZFTG9j
Ci1EblV2MnpScDVFMjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09uNE9pL0tOSm5ERTJY
ZVNqUUgvYXdQCi1NaTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjErV1VTYWViSncrOHdI
TG9KVVdJYmVVN0tMVmdYc2NmCi1oTEdCUUI2cC91UWV3em1tYjFiVWJpekYzR25iRnhTYkZna0sz
VHRmOU5wSHFxUnRnVUFhWnRQOWVkYS9rUlA3Ci1qMGlJUW5jQ3lod1VNY0VnLzlZc0tlTE9TVUd6
TGpVU0NKcU9JdlVMblF3UkJZaklFd3VpMDBxZENocVY4Y2h6Ci1LYmszMmRqNnZMRnMzdDdQK3hv
ai9KalpYWmlXUUZUekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdHCi1BMVVkRXdRRk1B
TUJBZjh3SFFZRFZSME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpjYU1FY0dBMVVkCi1J
d1JBTUQ2QUZFRkovNHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1Sc3dHUVlEVlFRRERC
SjNaV0l0Ci1jR3hoZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVCQU1DQWdRd2dnb0ZC
Z05WSFI0RWdnbjhNSUlKCi0rS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElW
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wTUJlQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFZZ2haM2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOME1CaUNGbmQzZHpJdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVk
R1Z6ZERBYmdobDNkM2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzCi1kekl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5Ci1iUzUwWlhOME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlD
R25kM2R6SXVkM2QzCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVkM2QzTG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wCi1NQnlDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJT
NTBaWE4wTUIyQ0czZDNkekV1ZDNkM01TNTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNk
M2N4TG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCi1kM2QzTWk1M2QzY3lMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkREFmZ2gxM2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWdnaDUz
Ci1kM2N1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNUzUzZDNj
dWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXhoWkM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6Ci1kREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdJSUllZDNkM01pNTNkM2N1Ci1ibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNHQ0gzZDNkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdJWUlmZDNk
M01pNTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzCi1kM2N4TG5kM2R6
RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01pNXViM1F0Ci1k
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNH
eGhkR1p2Ci1jbTB1ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1NDCi1Jbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzUXdKWUlqZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdKWUlqZDNkM01pNTRiaTB0YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdKWUlqZDNkM01TNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzUXdK
WUlqZUc0dExXeDJaUzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3Ci1LSUlt
ZUc0dExXeDJaUzAyYkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tJSW1k
M2QzCi1Mbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUlu
ZUc0dExXeDJaUzAyCi1iR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNt
Q0ozZDNkekl1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QXBnaWQzZDNjeExuaHVMUzFzZG1VdE5teGhaQzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUw
WlhOME1DdUNLWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3Ci1iR0YwWm05
eWJTNTBaWE4wTUMyQ0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJz
Ci1ZWFJtYjNKdExuUmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R5NTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNRd01JSXVkM2Qz
TVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQXdnaTU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4Ci1MbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5Ci1P
R0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1Ci1kM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRiaTB0YkhabExUWnNZ
V1F1ZUc0dExXeDJaUzAyCi1iR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXpnakY0
YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvCi1kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wTURPQ01YZDNkeTU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0WVM1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0Ci1iamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05JSXllRzR0Ci1MVzQ0
YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1F3Ci1OSUl5ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0Ci1MblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25G
b2RqSTRZUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3T0lJMmVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExXeDJaUzAyCi1iR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTURpQ05uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0
WVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZV1F1Ci1lRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRHlD
Ci1Pbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNR
dGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd1I0SkZlRzR0TFc0NGFqWmtjelV6Ci1iSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCi1abTl5YlM1MFpYTjBNQk1HQTFV
ZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDCi1FWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzCi1a
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Qz
ZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpkM2QzCi1MbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNaTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlhZDNkM01p
NTNkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCi1MbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliCi1kM2Qz
TVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZ
WFJtCi1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUli
ZDNkM01pNTNkM2N4Ci1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NI
bmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Ci1kSUllZDNkM0xuZDNkekV1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0Ci1kMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
Ci1jM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpF
dWQzZDNNUzV1Ci1iM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0Ci1iaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOMGdp
TjNkM2N5TG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpkM2QzCi1N
UzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5t
eGhaQzUzCi1kM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lXUXVk
M2QzTG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXRObXho
WkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNj
eExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluCi1kM2QzTWk1NGJpMHRiSFpsTFRac1lX
UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1Ci1MUzFzZG1VdE5teGha
QzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCi1kM2N5
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5Ci1PR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0
YkhabExUWnNZV1F1Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExtNXZkQzEzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFq
WmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNk
M2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJs
YzNTQ0xuZDNkekV1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCi1MWEJzWVhS
bWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZp
Ci1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kM2R6SXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGha
QzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0
YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCi1MWGRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnakYzZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ci1ibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCi1N
amhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5Ci1PR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTW5odUxTMXVP
R28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdqSjNkM2N5TG5odUxTMXVPR28yCi1aSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWVH
NHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0Ci1iaTB0YkhabExUWnNZ
V1F1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0Ci1MblJs
YzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXVi
M1F0Ci1kMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gy
TWpoaExuaHVMUzFzCi1kbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVho
dUxTMXVPR28yWkhNMU0yeDNkMnR5Ci1jV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNX
aDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1na1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJj
bkZvZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0Ci1ZUzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlxMXZBCi14amM4aWoz
NGk0Yis4aW5WQlZ3VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6K2RiMzZVNll3SGFr
Ci1JM0hZaGlwUE1CMVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQL1I1azl2dDhBRW0w
Wm1FV2tOWXRMCi1vcGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4VnErZnEvT3p3K1lR
YlJiVTFLbEhDTmF5aXN2UWE0Ci1UTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFhNlJuSXdvOHp2Q3Fr
MFpSUEF4ZXVsZEFlL3UxUHp0ZVhSekVIVEFFCi1ETVZMTXdNNzUyYkxGdWZ2MUdSQ1pOSEVMWkt5
aFVvRnJQMzBBcUU3cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCi11NS90SGVmUEtEN2JtL1k9Ci0t
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0NCitN
SUpBR3pDQ1B3T2dBd0lCQWdJREMvT3VNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJB
TU1FbmRsDQorWWkxd2JHRjBabTl5YlMxMFpYTjBjekFlRncweU1EQXlNVGd5TURJNU5EZGFGdzB6
TURBeU1UVXlNREk1TkRkYQ0KK01CMHhHekFaQmdOVkJBTU1FbmRsWWkxd2JHRjBabTl5YlMxMFpY
TjBjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUINCitCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMOTlhV2sz
ZFJpWXhJak5IbHhMelpMTXFhZmEvd0FyRzVROVQyRUx4YjByDQorT2dEa1ZVTXBpVkJtQTRyV3BH
SXU4UmdlL3RIb2EzRk03NnZreHl1M0I2L3NJZlNQV3BuVTdZTi9QUTk0YmpCNA0KK1dUVUZRUjBM
Qm5LVUdiWTFYVnhlNUFPMWQxZlkzdEFtejNOSEE0NmlmV3piVnFSUFpTelhwdU5nNWV0Qm1mSjIN
CitmWjZyZVl0Z1M5VklxdVVvUFNBRk1LTXQzSjQ2YkQ2VlA4UVBjVkZ6WUlMMERyblJscWQxb29N
RkZCTWl6WHE2DQorOVpTbFkyU1hBK001N2E0bExtdlVUNTFmNVcvQnRCN3VjS2JhT254ZVpaTFlB
TDkrMCtycDkyMkVlMkRyb0l0Rg0KK01na0FRUWN2Y3VEb3RXUzg2VmdTRjdkUFRqUTEyRS83ZUgr
OW9QUUZTeHNDQXdFQUFhT0NQV0l3Z2oxZU1Bd0cNCitBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9C
QllFRlBhNTJoWUhCYnR2eVdNd3htZEF5d1BUSHBEc01FY0dBMVVkDQorSXdSQU1ENkFGUGE1MmhZ
SEJidHZ5V013eG1kQXl3UFRIcERzb1NHa0h6QWRNUnN3R1FZRFZRUUREQkozWldJdA0KK2NHeGhk
R1p2Y20wdGRHVnpkSE9DQXd2enJqQUxCZ05WSFE4RUJBTUNBZ1F3Z2g5akJnTlZIUjRFZ2g5YU1J
SWYNCitWcUNDSDFJd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYjNBeUxuZGxZaTF3
YkdGMFptOXliUzUwDQorWlhOME1CZUNGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWGdo
VnZjRGN1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1F3RjRJVmIzQXhMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQmVDRlc5d015NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVhnaFZ2Y0RZdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0Y0SVZibTkwTFhkbFlpMXdiR0YwDQorWm05eWJTNTBaWE4w
TUJlQ0ZXOXdOUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFYZ2hWdmNEUXVkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzUXdGNElWYjNBNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CZUNGWGQzZHk1
M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGczTG5kbFlpMXdiR0YwWm05eWJTNTBa
WE4wTUJpQ0ZtOXdPREF1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTVOQzUzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadg0KK2NERTJMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
QmlDRm05d05EQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBeE55NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RjeUxuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNG
bTl3TmpRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0F5TXk1M1pXSXRjR3hoZEdadg0K
K2NtMHVkR1Z6ZERBWWdoWnZjREk0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNVE11
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXpOaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFZZ2hadmNERXhMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d056a3VkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBMg0KK01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QVlnaFp2Y0RRNExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TVRrdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNRd0dJSVdiM0EwTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdo
WnZjRFEyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1F3R0lJV2IzQTVPQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNEWTJM
bmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQmlDRm5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzUXdHSUlXYjNBeU5pNTNaV0l0DQorY0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZM0xuZGxZ
aTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TnpNdQ0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNR
d0dJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnYNCitjRFl5TG5kbFlpMXdi
R0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3DQorR0lJ
V2IzQTFOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2hadmNESXlMbmRsWWkxd2JHRjBabTl5
YlM1MA0KK1pYTjBNQmlDRm05d01qUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXZDNkM01p
NTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemREQVlnaFp2Y0RFNExuZGxZaTF3YkdGMFptOXliUzUw
WlhOME1CaUNGbTl3TnpRdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TVM1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRE16TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4w
TUJpQ0ZtOXdOamt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXoNCitNQzUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkREFZZ2hadmNETTVMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDDQor
Rm05d05USXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME15NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWeg0KK2REQVlnaFp2Y0RnMUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TXpR
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNRd0dJSVdiM0F5TVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBWWdoWnZjRGN4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBaWE4wTUJpQ0ZtOXdOVEF1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTROQzUzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpk
REFZZ2hadmNETXhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05UUXUNCitkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzUXdHSUlXYjNBME9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2
DQorY0RRMExuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUNGbTl3TkRVdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRdw0KK0dJSVdiM0F6TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjRGMy
TG5kbFlpMXdiR0YwWm05eWJTNTANCitaWE4wTUJpQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1F3R0lJV2IzQTRNUzUzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkREFZZ2hadmNEZzRMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d01qQXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMz
UXdHSUlXYjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVeExuZGwNCitZaTF3
YkdGMFptOXliUzUwWlhOME1CaUNGbTl3T0RZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdi
M0ExDQorTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREkzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUJpQw0KK0ZtOXdNVEl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTNO
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnoNCitkREFZZ2hadmNEUTNMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBNQmlDRm05d09UWXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzUXdHSUlXYjNBNU15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RVM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhO
ME1CaUNGbTl3TmpNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0ExTXk1M1pXSXQNCitj
R3hoZEdadmNtMHVkR1Z6ZERBWWdoWnZjREk1TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0Zt
OXdNalV1DQorZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3R0lJV2IzQTRNeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFZZ2hadg0KK2NEazNMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05E
RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXcNCitHSUlXYjNBek1pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQVlnaFp2Y0Rjd0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOME1CaUNGbTl3TmpBdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNRd0dJSVdiM0E1TWk1M1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6
ZERBWWdoWnZjRGM0TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUJpQ0ZtOXdPRGt1ZDJWaUxYQnMN
CitZWFJtYjNKdExuUmxjM1F3R0lJV2IzQXhNQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
dmNEYzNMbmRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBNQmlDRm05d05Ua3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdHSUlXYjNBeA0KK05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQVlnaFp2Y0RZ
MUxuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CaUMNCitGbTl3TmpndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0dJSVdiM0E1TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZERBWWdoWnZjRGd5TG5k
bFlpMXdiR0YwWm05eWJTNTBaWE4wTUJ1Q0dXOXdOaTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRM
blJsYzNRd0c0SVpiM0E0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWJnaGx2Y0RrdWJt
OTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnVDR1c5d05DNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3DQorRzRJWmIzQTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYmdo
bDNkM2N1ZDNkM0xuZGxZaTF3YkdGMA0KK1ptOXliUzUwWlhOME1CdUNHVzl3TWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdHNElaYjNBeExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkREFiZ2hsM2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wDQorTUJ1Q0dXOXdOUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0c0SVpiM0F6TG01dmRDMTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemREQWNnaHB2Y0RJM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hw
dmNEUXcNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFExTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkREFjZ2hwdmNESTRMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RGd6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RNekxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVTJMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZERBY2docDNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RZeQ0K
K0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTRMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWNnaHB2Y0RRekxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZzVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWNnaHB2Y0RrMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFj
Z2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGt4DQorTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dQ0KK2RHVnpkREFjZ2hwdmNESTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZj
RFk1TG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNeUxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNETTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBY2docHZjRGs0TG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RF
NUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEYzINCitMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREV6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdW
emREQWNnaHB2Y0RjNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3lMbmQz
ZHk1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGcyTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
Z2hwdmNESTVMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjRFUxTG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RreQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2do
cHZjRFUwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RrMExtNXZkQzEzDQor
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNETTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZERBYw0KK2docHZjRE13TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNj
eExuZDNkeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNESTFMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFkwDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RJd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNEVXhM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFF4TG01dmRDMTMNCitaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFj
DQorZ2hwdmNERXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGN5TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQWNnaHB2Y0RJeUxtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkREFjZ2hwdmNEVXkNCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGMwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RZM0xtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEZ3dMbTV2ZEMxMw0KK1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRGcwTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2
Y0RNeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEVXpMbTV2ZEMxM1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZERBY2docHZjREl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emREQWNnaHB2Y0RNMQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNERTJM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHUNCitkR1Z6ZERBY2docHZjRFl6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RNNExtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwdmNEVTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRFl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFMExtNXZkQzEzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEa3dMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2do
cHZjRGN3DQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RFeExtNXZkQzEz
WldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkREFjZ2hwdmNERTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBY2docHZjRFkxTG01dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGczTG01dmRDMTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemREQWNnaHB2Y0RjNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwM2QzY3UN
CitkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRGd5TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1DQorZEdWemREQWNnaHB2Y0RrekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
REFjZ2hwM2QzY3VkM2QzTVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREl4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWMNCitnaHB2Y0RjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERB
Y2docHZjRGc0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RJMA0KK0xtNXZk
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEWTJMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHUNCitkR1Z6ZERBY2docHZjRFE1TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2
Y0RVNUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkREFjZ2hwdmNEUTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZERBYw0KK2docHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemREQWNnaHB2Y0RNNUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkREFjZ2hwdmNE
UTNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjREUzDQorTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHB2Y0RjMUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RH
VnpkREFjZ2hwdmNEZzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBY2docHZjRFUzTG01
dmRDMTMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWNnaHAzZDNjeUxtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkREFjDQorZ2hwdmNEZ3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERB
ZGdodDNkM2N5TG5kM2R6RXVkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdIWUliZDNkM01TNTNk
M2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWRnaHQzZDNjeExuZDNkekV1ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxj
M1F3SDRJZGQzZDNMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJSUllZDNkMw0K
K01pNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXho
WkM1M1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6ZERBZ2doNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3DQorSUlJZWQzZDNMbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQ0NDSG5kM2R5NTNkM2N5TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRE
QWhnaDkzZDNjeExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOME1DR0NIM2Qz
ZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0lZSWZkM2QzDQorTWk1M2Qz
Y3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBaGdoOTNkM2N5TG5kM2R6SXVibTkwTFhk
bA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wTUNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNRd0pJSWllRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemREQWtnaUozDQorZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNQ1dDSTNkM2R6RXVlRzR0TFd4Mg0KK1pTMDJiR0ZrTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wTUNXQ0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGwNCitZaTF3YkdGMFptOXli
UzUwWlhOME1DV0NJM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbmRsWWkxd2JHRjBabTl5DQorYlM1
MFpYTjBNQ1dDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4w
TUNpQw0KK0puZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNQ2lDSm5odUxTMXMNCitkbVV0Tm14aFpDNTNkM2N1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOME1DbUNKM2QzZHpFdWVHNHRMV3gyDQorWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZERBcGdpZDNkM2N5TG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1F3S1lJbmVHNHRMV3gyWlMwMmJHRmtMbmQzZHpFdWJtOTANCitMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBNQ21DSjNodUxTMXNkbVV0Tm14aFpDNTNkM2N5TG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemREQXJnaWw0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNa
V0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemREQXRnaXQ0YmkwdGJIWmxMVFpzWVdRdWVHNHRMV3gyWlMw
MmJHRmtMbmRsWWkxd2JHRjANCitabTl5YlM1MFpYTjBNQytDTFhodUxTMXVPR28yWkhNMU0yeDNk
MnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZERBdmdpMTRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzUXdM
NEl0ZDNkM0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXcNCitiR0YwWm05
eWJTNTBaWE4wTURDQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
DQorTFhCc1lYUm1iM0p0TG5SbGMzUXdNSUl1ZDNkM01TNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1Mw0KK1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBd2dpNTRiaTB0YmpocU5tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1M2QzY3gNCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRENDTG5odUxT
MXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzDQorZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd01ZSXZlRzR0TFd4MlpTMDJiR0ZrTG5odUxTMXNkbVV0Tm14aA0KK1pDNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1F3TTRJeGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXkNCitPR0V1
ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkREF6Z2pGM2QzY3VlRzR0TFc0NGFqWmtj
elV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDTW5k
M2R6RXVlRzR0TFc0NA0KK2FqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBNRFNDTW5odUxTMXUNCitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpF
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRFNDDQorTW5kM2R6SXVlRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0KK1pYTjBNRFNDTW5o
dUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjANCita
bTl5YlM1MFpYTjBNRGlDTm5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxc2Rt
VXRObXhoDQorWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBNGdqWjRiaTB0YkhabExUWnNZV1F1
ZUc0dExXNDRhalprY3pVeg0KK2JIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
UXdQSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHUNCitMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQThnanA0DQorYmkwdGJqaHFObVJ6TlROc2Qz
ZHJjbkZvZGpJNFlTNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMA0KK1ptOXliUzUw
WlhOME1FT0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTEN
CitNMngzZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUVlQ1JYaHVMUzF1T0dv
MlpITTFNMngzDQorZDJ0eWNXaDJNamhoTG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZERBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFj
REFUQ0NIVnNHQTFVZEVRU0NIVkl3Z2gxT2doRjMNCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZi
M0F5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNEa3VkMlZpDQorTFhCc1lYUm1iM0p0TG5S
bGMzU0NGVzl3Tnk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQXhMbmRsWWkxdw0KK2JHRjBa
bTl5YlM1MFpYTjBnaFZ2Y0RNdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdOaTUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlWYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnZjRFV1
ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1NDRlc5d05DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVZiM0E0TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGbTl3T0RjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPREF1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDRm05d09UUXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3
TVRZdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xu
UmxjM1NDRm05d01UY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpJdWQyVmlMWEJzWVhS
bWIzSnQNCitMblJsYzNTQ0ZtOXdOalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01qTXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TWpndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0ZtOXdNVE11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016WXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGbTl3TVRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOemt1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NG
bTl3TkRndWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVGt1ZDJWaUxYQnNZWFJtYjNKdA0K
K0xuUmxjM1NDRm05d05ESXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TkRZdWQyVmlMWEJz
WVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNemN1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09U
Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TmpZdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0ZuZDNkekV1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d01qWXVkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGbTl3TmpjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOek11
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016Z3VkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMz
U0NGbTl3TmpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVGd1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDRm05d05UWXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWpJdWQyVmlM
WEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNalF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TVRndWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0ZtOXdOelF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09URXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpNdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdO
amt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d016QXVkMlZpTFhCc1lYUm1iM0p0DQorTG5S
bGMzU0NGbTl3TXprdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOVEl1ZDJWaUxYQnNZWFJt
YjNKdA0KK0xuUmxjM1NDRm05d05ETXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3T0RVdWQy
VmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNelF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Rm05d01qRXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpFdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0ZtOXdOVEF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09EUXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TXpFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0Zt
OXdOVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05Ea3VkMlZpTFhCc1lYUm1iM0p0DQor
TG5SbGMzU0NGbTl3TkRRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdORFV1ZDJWaUxYQnNZ
WFJtYjNKdA0KK0xuUmxjM1NDRm05d016VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpZ
dWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdNVFF1ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDRm05d09ERXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3T0RndWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0ZtOXdNakF1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UVXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TlRFdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNT
Q0ZtOXdPRFl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d05UVXVkMlZpTFhCc1lYUm1iM0p0
DQorTG5SbGMzU0NGbTl3TWpjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdNVEl1ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d056VXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3
TkRjdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdPVFl1ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDRm05d09UTXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TlRjdWQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0ZtOXdOak11ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d05U
TXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TWprdWQyVmlMWEJzWVhSbWIzSnQNCitMblJs
YzNTQ0ZtOXdNalV1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d09ETXVkMlZpTFhCc1lYUm1i
M0p0DQorTG5SbGMzU0NGbTl3T1RjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOREV1ZDJW
aUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d016SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NG
bTl3TnpBdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0ZtOXdOakF1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRm05d09USXVkMlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NGbTl3TnpndWQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdPRGt1ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05
d01UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGbTl3TnpjdWQyVmlMWEJzWVhSbWIzSnQNCitM
blJsYzNTQ0ZtOXdOVGt1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRm05d01UVXVkMlZpTFhCc1lY
Um1iM0p0DQorTG5SbGMzU0NGbTl3TmpVdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZtOXdOamd1
ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDRm05d09UQXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NGbTl3T0RJdWQyVmlMWEJzWVhSbWIzSnQNCitMblJsYzNTQ0dXOXdOaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdPQzV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0dX
OXdPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdOQzV1YjNRdA0KK2QyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dXOXdOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDMN
CitkeTUzZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dXOXdNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsDQorYzNTQ0dXOXdNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dYZDNk
eTV1YjNRdGQyVmlMWEJzWVhSbQ0KK2IzSnRMblJsYzNTQ0dXOXdOUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dXOXdNeTV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
amN1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFF3DQorTG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0EwTlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NH
bTl3T1RZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJNExtNXZkQzEzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBNE15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
R205d016TXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTJMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2QzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdOakl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREU0TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT0M1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TkRNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNQ0KK0xt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk1DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmwNCitjM1NDR205d09UVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3pM
bTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIzQTVNUzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOREl1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
REkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWENCitiM0EyT1M1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpJdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBn
aHB2Y0RNM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU9DNXViM1F0ZDJWaQ0K
K0xYQnNZWFJtYjNKdExuUmxjM1NDR205d01Ua3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEYzINCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNeTV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsDQorYzNTQ0dtOXdOemt1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdocDNkM2N5TG5kM2R5NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0E0Tmk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpjdWJtOTANCitMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RJNUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMU5T
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d09USXVibTkwTFhkbFlpMXdiR0YwWm05
eQ0KK2JTNTBaWE4wZ2hwdmNEUTBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTFO
QzV1YjNRdGQyVmkNCitMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPVFF1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRE0wDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0F6TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NHbmQzZHpFdWQzZDNMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RJMUxtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlhYjNBMk5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01qQXVibTkwDQorTFhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVXhMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJYQ0KK2IzQTBNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVEl1Ym05MExY
ZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdocHZjREV3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSWFiM0EzTWk1dWIzUXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpJdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVeQ0KK0xtNXZkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBM05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d05q
Y3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3dMbTV2ZEMxM1pXSXRjR3hoDQor
ZEdadmNtMHVkR1Z6ZElJYWIzQTROQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdN
ekV1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFV6TG01dmRDMTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWENCitiM0F5TXk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TXpVdWJtOTBMWGRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RFMkxtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15NXViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxj
M1NDR205d016Z3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTQNCitMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTJNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0dtOXdNVFF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGt3TG01dmRD
MTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSWFiM0EzTUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3TVRFdWJtOTANCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFMUxt
NXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhDQorYjNBMk5TNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDR205d05UQXVibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2hwdmNE
WTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTROeTV1YjNRdGQyVmkNCitMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdOemd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocDNk
M2N1DQorZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0TWk1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbA0KK2MzU0NHbTl3T1RNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdWQzZDNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlhYjNBeU1TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDR205d056RXVibTkwDQorTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNEazNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYQ0KK2IzQTRPQzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNalF1Ym05MExYZGxZaTF3YkdGMFptOXkNCiti
UzUwWlhOMGdocHZjRFkyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EwT1M1dWIz
UXRkMlZpDQorTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRrdWJtOTBMWGRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RRMg0KK0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDR205d016a3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNEUTNMbTV2ZEMxM1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJYWIz
QXhOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOelV1Ym05MA0KK0xYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGcxTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWEN
CitiM0ExTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWJtOTBMWGRsWWkx
d2JHRjBabTl5DQorYlM1MFpYTjBnaHB2Y0RneExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01pNTNkM2N4TG5kbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2h0M2QzY3hMbmQzZHpJ
dWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0czZDMNCitkekl1ZDNkM01pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5DQorYlM1MFpYTjBnaDEzZDNj
dWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUzZDNjdQ0KK2JtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzWVhSbWIz
SnQNCitMblJsYzNTQ0huZDNkekV1ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUll
ZDNkM0xuZDNkekV1DQorYm05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdA0KK0xuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDMNCitNUzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtDQorYjNKdExuUmxjM1ND
SDNkM2R6SXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxcw0KK2Rt
VXRObXhoWkM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1
dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmQzZHk1NGJpMHRiSFpsTFRac1lXUXVk
MlZpTFhCc1lYUm1iM0p0DQorTG5SbGMzU0NJM2QzZHpFdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaU4zZDNjeQ0KK0xuaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlqZUc0dExXeDJaUzAyYkdGa0xuZDMNCitkekl1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNodUxTMXNkbVV0Tm14aFpDNTNkM2N4TG5kbFlpMXdiR0YwDQorWm05eWJTNTBa
WE4wZ2laM2QzY3VlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0K
K2RJSW1lRzR0TFd4MlpTMDJiR0ZrTG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SjNkM2R6RXUNCitlRzR0TFd4MlpTMDJiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SW5kM2QzTWk1NGJpMHRiSFpsDQorTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2lkNGJpMHRiSFpsTFRac1lXUXVkM2QzTVM1dQ0KK2IzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NKM2h1TFMxc2RtVXRObXhoWkM1M2QzY3lMbTV2ZEMxM1pXSXQNCitjR3hoZEdadmNtMHVkR1Z6
ZElJcGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtDQorYjNKdExu
UmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNK
dA0KK0xuUmxjM1NDTFhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHUNCitkR1Z6ZElJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNk
M0xuZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NMbmQzZHpJdWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDTG5kM2R6RXVl
RzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsDQorYzNT
Q0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0
TG5SbA0KK2MzU0NMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekl1ZDJWaUxY
QnNZWFJtYjNKdExuUmwNCitjM1NDTDNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdqRjRiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2pGM2QzY3VlRzR0
TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjANCitabTl5YlM1MFpY
TjBnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0DQor
Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNN
UzV1YjNRdA0KK2QyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekl1ZUc0dExXNDRhalprY3pV
emJIZDNhM0p4YUhZeU9HRXUNCitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pKNGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzDQorZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeQ0KK09HRXVlRzR0TFd4MlpTMDJi
R0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2paNGJpMHRiSFpsTFRac1lXUXUNCitlRzR0TFc0
NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ09uaHVMUzFz
DQorZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdA0KK0xuUmxjM1NDT25odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1
TFMxc2RtVXRObXhoWkM1dWIzUXQNCitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NRWGh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpITTFNMngzZDJ0eWNXaDJNamho
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Seg0KK05UTnNkM2RyY25Gb2Rq
STRZUzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0ZDJWaUxYQnMNCitZWFJt
YjNKdExuUmxjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUllVHUySXlUcEFQYlVZQ3hmUjNU
NkJxDQorZDVZbW8zVEc4cG5acnNZcXpIdENJdkdvTzgxSkVJSmRoUHlpdGJKZC91c2J0a0VUaExo
YWZlUWk5Um1pQ1pZdg0KK0NVZXgwSWRVeEhhVzM2Wng0a0l6TkxmMDJ6Y3h3Qkp0QUZwZi95QXNR
ZEtJSTBaRk5HUjFXa1JxbmF0Zno1dHkNCitTSy9TNTkzTVk5c083eGR4c1BjUW5KN1dQYVhLNjYw
eU8xR290Ymg0YlJ3cGRMOHVKdkZWcGU2K1VBT1M2NE1rDQorakt5Rkl5M1o5SGxiK0hQVjB3RkJT
ODlXcXFFZkFvTGticmYwS0Vqb0JydklsSVhmOC90TG9nVFRVU2JaZDY2Nw0KK3FmODhTWC8wdFlW
TUVZQzYvSVVpeWlnQXgvaE1pdVdDRENTMTBtV0x3WWZQczJKd0RRUmxTSW92ZU5CcCt3Zz0NCist
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5r
ZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQppbmRleCBiNjJhZjIwOGMzNGNiMzE2N2FlNjQwMzhj
ZGZmNjk2ZjA0Nzg5M2ViLi5jZmFjY2NlNDIzZWRlZGRiODkwZDRhODA2ODNjNzQ3NjkyZTIzZmUw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LmtleQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0
LmtleQpAQCAtMSwyOCArMSwyOCBAQAotLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlF
dmdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLZ3dnZ1NrQWdFQUFvSUJBUUNyWlhWWG1PUGxx
by8rCi0yeGoxNVBnY1pHSEdvL2JvZmlRUTNnbDZKTDFWWDFHcHRZSU5oVHEyc1VoZk44dENiK2NI
eXphcE85b1Vtd3F3Ci1wNVVwN3RKNElwN3VFMS93d1N4VmN2Q2F3RzUvUE41aUQ3SDJ3c21FcHBI
WE9jM0xsMDg1L2d6ZXMrMStObitxCi1BUm1wMWJGL3ZqcGxENlZkSDJyQlczc0ozREFvQmFvWGxB
TWZlUkFGRHBhcWErOWx4TXJNNVdrVUhuZFErdUVNCi02a1p5ZXZoeXAwMlhEUDB2THdOQ3RQTEdC
MGVtQUFmQzd4cHdSR1ZHU3RFc1VoZi9tYzl5Tk5hS2dxQktJMG5vCi1vVm51VTNSR2RLSFAxOHZj
anRCU1YwbFlnamZnOWEwN09CdTFoZ1FmZmhvZmkyQnlkZmFDcEJBTXpGaGx1MXV5Ci1zNmFoVmtK
cEFnTUJBQUVDZ2dFQWZtdnp4WTBNYkZjR3AyRk1ZL05qM3UxY0FYem5uazJNcExSaUlTb0FUWHhs
Ci1hOXhwOVRjVU83VkFRSnVTM1lwVXlyYmx0cVpqRVZmYTVycDFsOXlFZWdCdllnUUFmRURBUnJi
bEtnQk9nS09SCi1GSnVuRlBCUVcvdlJEd09mL0UrN0xIZHJYc2t3b0N2cXRxYmhHeGg0T0ZWRUZV
OFpGanNhTDAwZTBBTU5zalpsCi0wT3NFT05sSUg0bkNhN0U2RFRhc0h4YzFWa0hRcjN1dkJsNS80
SGZPYzA1dHIrWktsTVlYekFQV2tMMHNDMjE2Ci1EcXk0QXhKME0wYXg4QllFWnVvMGdxUW1NQW9u
SlRrRW5weW9ENHo4OVM4Nzd2RnA4dzFWUGJHWWtWNDh5alYvCi1JN2ZRNllqdDN5ZythcytzNGFy
R0VzVUIwbCtYQXBCWVlZL0orcWNZVVFLQmdRRGVkN0RPTUpVYzNrUFRGRWNOCi1wL0ViU2g5VFh4
Uy83NGNJeUdpZDlJRWlSRUpZeFl2OGt6MEtwbEd1Sm9sSVEzL0lrOVJhYzZCM1R1NFdrVzBnCi1U
UGJOdW5ZRXN5ZFpCQW5hUTRlQVZkT2Z2UlE2VjNlQloydkVyc0hKUkZhajVjT2Nlc1VYeEJaSTZt
MnRRRVN4Ci1kQldGRE5HOWt6dHIwSG1hTDZQdXo0elpJd0tCZ1FERk94ZlI3RmNwR2R3NjF6aVNz
Wm10dmtmNmVwa0czK291Ci11aFk1MEowVXJUYks3VHVpbWtvUncvWEhlQmU0ZGIrZWpPT3VMRDlR
RS95WHZtdEVXdXlVVFRZT1Z2WitIdU5qCi1ScDNrZGkxR3VXWG42Z1J2ZGxrZjlYd1c3akhtZ2tw
YkE1QSt1RFhzM0VZWWExOEx4UE5mTVN2aHlIZGtGblVHCi1hVHp5WU5wZEF3S0JnR3YvUU5hbjRR
dDFud2x1VTV2K2hsNlFHaXI0QW5PMnpSL25ZbG9qNHppR1dJc053NHBtCi0xQUJDZzI1K2lMQ0xE
QktNS1UrTHlEK0RFclBqLzB6cDcvb3BaYmVjWFNLcWdqbnlCR3E1djVWUlRldVFvSlF5Ci1aNi9B
Z3BTNVZ6SVRqV1YrZUFXMGpIanpUVEVJL1JBRVlab0lnaDE4eHlEc3dNdW9DdllZemJCdkFvR0JB
TU0yCi1JL053K3l3QkhvdFdyZlh6dHVuU3BpZHk1TGQ3Tkt5ZkhwU0d1SkxZaHB6L2hjRUErVUx3
TS9vRUVXWlBsU04yCi15M3QrN0FOMFpOUkVjcU1yWTNHOW9qMDdNYW5QSkwwRURnOHNNTkFKZktX
NGFEOXlZZkJSNTBwQzVEMEV4RmVsCi1CVVl1eWFEd3ZLZzZ6YzQyVjdQbVZVcWFRaUZjWU9QQmtj
Tk12WlRGQW9HQkFMQnRkdDBpSXZ0Qm9wcCtJUWFWCi16Wk1BNVpRSVE1bjV2MDcxTEthMXM3YXIz
K2hJb0RSc1piTTdYa1VJQTh6UWxyd0ZSaGJVNVlGTmNicG9vUVNtCi03ajQrZkl1ZGNweGo5dEFN
R0FiNXlnODlrMURqVHk3RlVXTDllbEdJZ3ZKTXFnRjZJUTUzK3ZSOHh3R0R5UUxCCi1zUDVtaXpG
MXdpNDdEWVBKUWNEUkN6VSsKLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4g
UFJJVkFURSBLRVktLS0tLQ0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dn
U2pBZ0VBQW9JQkFRQy9mdVlxYkpMWUtvVHcNCitGemF1blNKMzYybXBBN0JvV09JTWlURmtHSzF0
WkFncHoycnZ6QkQ1c3pOTUlySGFKRi9ETWZIeGUyQ1hzbmtEDQorWFdiYzBjdUQ3Tk1NNGRLYmZS
YmpudHhZM1d5SmQ1aWpETEo4YnRDL1BTd1pvY21Id2dwT3FCNDBxRy9hTFFwTg0KK3dMUnhCa2xo
NmhyQVpNSFRzSS9BTzRJQktNVG9NWXNIUzdYN1loZE1LZzNlcTg3Y2dHaS9xeDFGNHFTaUFXb0YN
CiszMEhtL2ZpVUx1S2ZwQUZWZmV2QlBUNWhVS0RxTnlyVnh4aE03UFVOT1cxVTB3UXhSdGdTb0Fx
Q1kyMkNwSTdXDQorZ2tOaG14MlVtckFkTlFMNHUxVi9qUGNoNG1VMlFxbUxXQkdRb0h3b1JkaWJp
SldhSnVuOVJ3ZURjSXFZR3d0Tw0KK2hJd0d0K0xqQWdNQkFBRUNnZ0VBY0Rlb0g3SlNkelNyaEpy
RjQ1dVhxRmlmS1hsTTlra241cHE3QStKbU54V0kNCitweCt5bGVXckNQalhsY1U3SGc5MHdzbFE4
K2NPR3JkdXJPY2VNVWNNRVRwR0QyV0NhclhxSk9kaVR2MHE3bi9VDQorUmJCYUpBczRidWtsSDd3
c2drN1doWE9GaCt3dzU5Uy9GZ05ZZW1kcHQyUmQydUx3cHVIdnk0SFQxR1FVeDgvQw0KKzlxaE51
dTkyQk5FdzVZWFpqV2xVWHNYNC9NT2hRczZpYUVmZUdwaG8yMHVoVVJSWmxHNWt2L3pDcTl5Q1gr
c2ENCitPNUM1MDR6a1pnWG9qQ3ZlYWhPWGVXTHJoTm5ScDFkdDNESFZwM2NGMmZ5UDBJUmIrK3l3
MFpZZHZjYnljODJzDQorQkhlbmpDM3ZCd25nN2FBOTVRZWh5ZUxRTzNQVlZqOFFQbmRWQjcyYVFR
S0JnUUQ3MXlZMnRCeVh6akhnRFJhRw0KK2RERFlRdGd5VmZ6NGNYK2tTK0JZV1d6dUNRbzkvVW9i
d3VjVVRtVXoxUmMwNC9xdVNrL3A2M2FnMXZicXh5b0cNCitwVnlWMlA2SVk1K0YzcEVrbFd0Zlht
eTdBbnVrOGpVZ1hqZ1MyKzc4Z3hQenk0OU53ZVROVFVjbExBWkpTRmtMDQorR0FCNm9YVzB0YWVW
UnNDWjlnZ3B2MFVTb1FLQmdRRENxSmgrTW10cDA0emNqUm0wZ1VabWY4RXJGWFlqNnVxcg0KK3JW
c0dRTG42d1JSY2M4SnJOQTRYYmxxN3JqZjdCNUQyRHM4SXBvUGVGb0I4R2ErUEdlNE1RSlpkRzBV
bXZRRmcNCitSWHBBaUI2TzduNCs4b2FYU09tRnBGTDVKZDAvQ2RHdXRXRzQ0Q3dKb3JiQ0JZcVY4
ZklGNVVhWUZHaWdKRVVUDQorV3JjUFEwUExBd0tCZ0hSWG5HdkJJVVJ3R1ZKc09XKzcxYVRTbkpZ
RWEyMUs0YkRBN005ajRKTEcwbGg0M3ZlYw0KK1BxeCsydm5yQTJHSHdKTXIrV2NUUkNaaHFJZ2xv
aUNYM0FITjBTaW8vVlVXME82WnFKVFNSbURPY05odW5HUnINCitvblB6N3AvdzNoTE9nMUZrdFpL
eWxKOXppeVBuckZzWHA0RC9maVVSbG0yNzFkWktkdEx5YmJLQkFvR0FTUkV2DQorN0c3UWt2Q3R0
enZmb2puRVMwVTVKUXJ4Ulpvd2JEQ3VNaktwbk01TTdrY2xlMGdXNGdTeVdqQ1RJczg4UXFCYw0K
K1prcmF4TXA5Z0JmRUpscjlWK3dHaFB4dmdKTUJxVGxySWozMStvRGJNcFdtbjdMbXRSdHhhY1Fr
d0R6WFVGVVYNCitVV2dVSDZuTUlCZ2taUlJrWElJcmRYcHpxMmp4NU1ud1hQSkt5REVDZ1lFQTA5
UDJad2VCSkU5YTlvb0tHV29pDQorMmlSVjRHQWVJWkdVWHkxc1QvRFdNNmVVc3B1RnNJRTFkYWsw
SjVWVktkSWNlN0NWM0lwREU4UFo1UDBpVWZpZQ0KK2dMMTcwS3hmSlJrT2ZJNnB4NHdCV0dlL1JN
MG5JbldKSUlSNW9HY2lmekJ4N3RWUXFLYnpOY2xMVWtNT2hoZzcNCitlcFpkUEpKdVpTZ3JpeGFQ
bzd5bXo0MD0NCistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93ZWItcGxh
dGZvcm0udGVzdC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQppbmRleCA1OTU5MzE2YmI1YjQ4
MjVlNjQwYmIxZjdjYWIwOGJjOWY0MDVhNjNhLi42OGE5Yjk2ZjNlZTlkOWNkYTU3ZGFlYjY3OTZi
NWI2NzRkNzVhYzQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1w
bGF0Zm9ybS50ZXN0LnBlbQpAQCAtMSwxMzMgKzEsMjM5IEBACi1DZXJ0aWZpY2F0ZToKLSAgICBE
YXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDM3
MzA2NCAoMHg1YjE0OCkKLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5j
cnlwdGlvbgotICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cwotICAgICAgICBW
YWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogT2N0IDE0IDEzOjQ5OjI5IDIwMTkgR01U
Ci0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBPY3QgMTEgMTM6NDk6MjkgMjAyOSBHTVQKLSAgICAg
ICAgU3ViamVjdDogQ049d2ViLXBsYXRmb3JtLnRlc3QKLSAgICAgICAgU3ViamVjdCBQdWJsaWMg
S2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlv
bgotICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKLSAgICAgICAgICAgICAg
ICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDphYjo2NTo3NTo1Nzo5ODplMzplNTph
YTo4ZjpmZTpkYjoxODpmNTplNDoKLSAgICAgICAgICAgICAgICAgICAgZjg6MWM6NjQ6NjE6YzY6
YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Ci0gICAgICAgICAgICAgICAgICAgIGJkOjU1
OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4OjVmOjM3OgotICAgICAgICAgICAgICAg
ICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpkYToxNDo5YjowYTpiMDphNzoKLSAgICAg
ICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6OWU6ZWU6MTM6NWY6ZjA6YzE6MmM6NTU6
NzI6Ci0gICAgICAgICAgICAgICAgICAgIGYwOjlhOmMwOjZlOjdmOjNjOmRlOjYyOjBmOmIxOmY2
OmMyOmM5Ojg0OmE2OgotICAgICAgICAgICAgICAgICAgICA5MTpkNzozOTpjZDpjYjo5Nzo0Zjoz
OTpmZTowYzpkZTpiMzplZDo3ZTozNjoKLSAgICAgICAgICAgICAgICAgICAgN2Y6YWE6MDE6MTk6
YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6Ci0gICAgICAgICAgICAgICAgICAgIDZh
OmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0OjAzOjFmOjc5OgotICAgICAgICAgICAg
ICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpjNDpjYTpjYzplNTo2OToxNDoxZToKLSAg
ICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6ZWE6NDY6NzI6N2E6Zjg6NzI6YTc6NGQ6
OTc6MGM6Ci0gICAgICAgICAgICAgICAgICAgIGZkOjJmOjJmOjAzOjQyOmI0OmYyOmM2OjA3OjQ3
OmE2OjAwOjA3OmMyOmVmOgotICAgICAgICAgICAgICAgICAgICAxYTo3MDo0NDo2NTo0Njo0YTpk
MToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKLSAgICAgICAgICAgICAgICAgICAgZDY6OGE6ODI6
YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6NzQ6Ci0gICAgICAgICAgICAgICAgICAg
IGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4OjgyOjM3OmUwOmY1OgotICAgICAgICAg
ICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDoxZjo3ZToxYToxZjo4Yjo2MDo3Mjo3NToK
LSAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6MGM6Y2M6NTg6NjU6YmI6NWI6YjI6YjM6
YTY6YTE6NTY6Ci0gICAgICAgICAgICAgICAgICAgIDQyOjY5Ci0gICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKLSAgICAg
ICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCi0gICAgICAgICAgICAgICAgQ0E6RkFM
U0UKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAg
ICAgICAgICAyQToxODowQjowOToyMjo2RToyODpEMjpEQjpGRDpDMjoyRDo0MDpBNjpGMzozODo2
Mjo2RTpDNzpDNQotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjog
Ci0gICAgICAgICAgICAgICAga2V5aWQ6NDE6NDk6RkY6OEM6NjY6NTA6NUY6ODc6QTE6MDY6QTg6
QkI6QUI6OEE6REQ6NzM6MEQ6MEU6Mzc6MUEKLQotICAgICAgICAgICAgWDUwOXYzIEtleSBVc2Fn
ZTogCi0gICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwg
S2V5IEVuY2lwaGVybWVudAotICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTog
Ci0gICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24KLSAgICAgICAg
ICAgIFg1MDl2MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IAotICAgICAgICAgICAgICAgIERO
Uzp3ZWItcGxhdGZvcm0udGVzdCwgRE5TOm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cyLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cyLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cxLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3
Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbHZlLTZsYWQud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1sdmUtNmxhZC54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1sdmUtNmxhZC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNs
d3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdAotICAgIFNpZ25h
dHVyZSBBbGdvcml0aG06IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICBhZjpjMjpl
YTpjYzo2YTo1ZTo0OTplMDpkYjo3MjoxNDowNTozYzoyMTphMDo4YjpmZjpiNjoKLSAgICAgICAg
IGE5OjcxOjgyOmY3OjYxOmNkOjIzOjJhOjAwOjY2OjkxOmFjOjAxOjk5OjYzOjM4OjExOjIxOgot
ICAgICAgICAgODU6YjI6NTc6OTI6MGI6M2Y6Nzk6Njg6ZjU6ZDg6NTk6OGI6YTc6NzQ6MTk6ZWI6
MGI6ZTc6Ci0gICAgICAgICAzZDo4Njo0ZTo2NjpkNDplNjoyZjpmZjplZDo2Yzo3ZDo5YTo1ZTox
Mjo0ZTpiZjozOTpmZjoKLSAgICAgICAgIGY3OmQwOmZiOjUyOjUzOmEwOmZiOmIxOjVjOjlhOjkx
OjkyOjM2OjAwOmQ4OmE0OjZmOmY5OgotICAgICAgICAgOWM6MzY6MjE6YjI6YzI6NWU6MTQ6MTE6
Y2E6NTU6ZTc6ODg6MzA6NjA6OGQ6ODY6ZGE6NjU6Ci0gICAgICAgICAyNjpmZjplMjo0NTozNjoy
YTowOTozZDphNDpiYjozODo2MTo0ZDo1NzplNDpjOTpiNjo1MDoKLSAgICAgICAgIDNjOjA2OjJm
OjZiOmJmOjA0OjM0OjQyOjU0OmRjOjUzOmI2OjYxOmM1OjRlOjQwOjAwOmQ2OgotICAgICAgICAg
NWU6MTk6MTc6M2E6NTQ6MmM6YzU6MTY6N2E6NmQ6NGE6NzA6NTY6NDU6Y2Q6OTk6NWE6MmE6Ci0g
ICAgICAgICBkMTphNzo0ZTozNTo5NzozZDpkODpjOTo5NTo4MDphYjoxNTo0Mjo4NjpmNjphMDph
NjpjMzoKLSAgICAgICAgIDIxOmMxOjlhOjA3OjM0OjQ5OmFkOjYxOjNjOmJjOjk0OmIyOjJkOjky
OmY3OjQ0OjgwOjAxOgotICAgICAgICAgNWY6Mjc6YmQ6ODM6ZjU6NTE6MjI6Mzk6Y2Q6OTg6YjE6
Mzk6MjM6Yjg6ZjQ6NWM6MDg6MjA6Ci0gICAgICAgICA5ZTpmZTpmMToyZDo5YTplOTo5YjpjNzo1
ZTpiODozMzo4YjoxNjo3Nzo1MjozZDpjOTo3YToKLSAgICAgICAgIDQzOjllOjI1OmQwOmM3OjVh
Ojk2OjA4OjUzOjFhOmRjOjc1OjUzOjc1OjQ0OjYyOjE4OjdjOgotICAgICAgICAgZWY6ZmI6NzM6
NTIKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJTXNqQ0NDNXFnQXdJQkFnSURCYkZJ
TUEwR0NTcUdTSWIzRFFFQkN3VUFNQjB4R3pBWkJnTlZCQU1NRW5kbAotWWkxd2JHRjBabTl5YlMx
MFpYTjBjekFlRncweE9URXdNVFF4TXpRNU1qbGFGdzB5T1RFd01URXhNelE1TWpsYQotTUJ3eEdq
QVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFF
RgotQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxMlYxVjVqajVhcVAvdHNZOWVUNEhHUmh4cVAyNkg0a0VO
NEplaVM5VlY5UgotcWJXQ0RZVTZ0ckZJWHpmTFFtL25COHMycVR2YUZKc0tzS2VWS2U3U2VDS2U3
aE5mOE1Fc1ZYTHdtc0J1Znp6ZQotWWcreDlzTEpoS2FSMXpuTnk1ZFBPZjRNM3JQdGZqWi9xZ0Va
cWRXeGY3NDZaUStsWFI5cXdWdDdDZHd3S0FXcQotRjVRREgza1FCUTZXcW12dlpjVEt6T1ZwRkI1
M1VQcmhET3BHY25yNGNxZE5sd3o5THk4RFFyVHl4Z2RIcGdBSAotd3U4YWNFUmxSa3JSTEZJWC81
blBjalRXaW9LZ1NpTko2S0ZaN2xOMFJuU2h6OWZMM0k3UVVsZEpXSUkzNFBXdAotT3pnYnRZWUVI
MzRhSDR0Z2NuWDJncVFRRE14WVpidGJzck9tb1ZaQ2FRSURBUUFCbzRJSitqQ0NDZll3Q1FZRAot
VlIwVEJBSXdBREFkQmdOVkhRNEVGZ1FVS2hnTENTSnVLTkxiL2NJdFFLYnpPR0p1eDhVd0h3WURW
UjBqQkJndwotRm9BVVFVbi9qR1pRWDRlaEJxaTdxNHJkY3cwT054b3dDd1lEVlIwUEJBUURBZ1hn
TUJNR0ExVWRKUVFNTUFvRwotQ0NzR0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDRVhk
bFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdQotYjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZY
ZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXZDNkMwotTVM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2QzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkMwotTG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG5kM2R5NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWegotZElJ
YWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekV1Ym05MExYZGxZaTF3
YkdGMAotWm05eWJTNTBaWE4wZ2hwM2QzY3VkM2QzTWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWQzZDNNaTUzZDNjdQotZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwMwotZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eQotYlM1MFpYTjBnaHQzZDNjeExuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTWk1MwotWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxMwotZDNjdWQz
ZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNMbmQzZHpJdWJtOTBMWGRsWWkx
dwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5odQotTFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNM
bmQzZHpFdWJtOTBMWGRsWWkxdwotYkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkMwotZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaQotTFhCc1lYUm1iM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSDNkM2R6RXVk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1Mwot
ZDNjdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luZDNkeTU0YmkwdGJIWmxMVFpzWVdRdWQyVmlM
WEJzWVhSbQotYjNKdExuUmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNodQotTFMxc2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU4zZDNjeUxuaHVMUzFzZG1VdAotTm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWpkM2QzTVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0kzaHVM
UzFzZG1VdE5teGhaQzUzZDNjeUxuZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2laNGJpMHRiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odQotTFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1MwotZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MAotTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCcwotWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQwotSzNodUxTMXNkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhodQotTFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dAotTFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTEzZDNjdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdQotZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5k
M2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdQotZUc0dExXNDRhalprY3pVemJI
ZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdQotT0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5kM2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxcwot
ZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akY0YmkwdAotYmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGMwotZDNjdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMAotZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQotZEdWemRJSXllRzR0TFc0NGFqWmtj
elV6YkhkM2EzSnhhSFl5T0dFdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExuUmxjM1ND
TW5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpFdWJtOTBMWGRsWWkxdwotYkdG
MFptOXliUzUwWlhOMGdqSjNkM2N5TG5odUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbTV2
ZEMxMwotWldJdGNHeGhkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MgotWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaawotY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxc2RtVXRObXhoWkM1NAotYmkwdGJqaHFObVJ6TlROc2QzZHJjbkZv
ZGpJNFlTNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odQotTFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbQotYjNKdExu
UmxjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
MwotZDJ0eWNXaDJNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25GbwotZGpJNFlTNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbAotYzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFLL0M2c3hx
WGtuZzIzSVVCVHdob0l2L3RxbHhndmRoelNNcQotQUdhUnJBR1pZemdSSVlXeVY1SUxQM2xvOWRo
Wmk2ZDBHZXNMNXoyR1RtYlU1aS8vN1d4OW1sNFNUcjg1Ly9mUQotKzFKVG9QdXhYSnFSa2pZQTJL
UnYrWncySWJMQ1hoUVJ5bFhuaURCZ2pZYmFaU2IvNGtVMktnazlwTHM0WVUxWAotNU1tMlVEd0dM
MnUvQkRSQ1ZOeFR0bUhGVGtBQTFsNFpGenBVTE1VV2VtMUtjRlpGelpsYUt0R25UaldYUGRqSgot
bFlDckZVS0c5cUNtd3lIQm1nYzBTYTFoUEx5VXNpMlM5MFNBQVY4bnZZUDFVU0k1elppeE9TTzQ5
RndJSUo3KwotOFMyYTZadkhYcmd6aXhaM1VqM0pla09lSmRESFdwWUlVeHJjZFZOMVJHSVlmTy83
YzFJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorQ2VydGlmaWNhdGU6DQorICAgIERhdGE6
DQorICAgICAgICBWZXJzaW9uOiAzICgweDIpDQorICAgICAgICBTZXJpYWwgTnVtYmVyOiA3ODMy
NzkgKDB4YmYzYWYpDQorICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNB
RW5jcnlwdGlvbg0KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVzdHMNCisgICAg
ICAgIFZhbGlkaXR5DQorICAgICAgICAgICAgTm90IEJlZm9yZTogRmViIDE4IDIwOjI5OjQ3IDIw
MjAgR01UDQorICAgICAgICAgICAgTm90IEFmdGVyIDogRmViIDE1IDIwOjI5OjQ3IDIwMzAgR01U
DQorICAgICAgICBTdWJqZWN0OiBDTj13ZWItcGxhdGZvcm0udGVzdA0KKyAgICAgICAgU3ViamVj
dCBQdWJsaWMgS2V5IEluZm86DQorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24NCisgICAgICAgICAgICAgICAgUlNBIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkN
CisgICAgICAgICAgICAgICAgTW9kdWx1czoNCisgICAgICAgICAgICAgICAgICAgIDAwOmJmOjdl
OmU2OjJhOjZjOjkyOmQ4OjJhOjg0OmYwOjE3OjM2OmFlOjlkOg0KKyAgICAgICAgICAgICAgICAg
ICAgMjI6Nzc6ZWI6Njk6YTk6MDM6YjA6Njg6NTg6ZTI6MGM6ODk6MzE6NjQ6MTg6DQorICAgICAg
ICAgICAgICAgICAgICBhZDo2ZDo2NDowODoyOTpjZjo2YTplZjpjYzoxMDpmOTpiMzozMzo0Yzoy
MjoNCisgICAgICAgICAgICAgICAgICAgIGIxOmRhOjI0OjVmOmMzOjMxOmYxOmYxOjdiOjYwOjk3
OmIyOjc5OjAzOjVkOg0KKyAgICAgICAgICAgICAgICAgICAgNjY6ZGM6ZDE6Y2I6ODM6ZWM6ZDM6
MGM6ZTE6ZDI6OWI6N2Q6MTY6ZTM6OWU6DQorICAgICAgICAgICAgICAgICAgICBkYzo1ODpkZDo2
Yzo4OTo3Nzo5ODphMzowYzpiMjo3Yzo2ZTpkMDpiZjozZDoNCisgICAgICAgICAgICAgICAgICAg
IDJjOjE5OmExOmM5Ojg3OmMyOjBhOjRlOmE4OjFlOjM0OmE4OjZmOmRhOjJkOg0KKyAgICAgICAg
ICAgICAgICAgICAgMGE6NGQ6YzA6YjQ6NzE6MDY6NDk6NjE6ZWE6MWE6YzA6NjQ6YzE6ZDM6YjA6
DQorICAgICAgICAgICAgICAgICAgICA4ZjpjMDozYjo4MjowMToyODpjNDplODozMTo4YjowNzo0
YjpiNTpmYjo2MjoNCisgICAgICAgICAgICAgICAgICAgIDE3OjRjOjJhOjBkOmRlOmFiOmNlOmRj
OjgwOjY4OmJmOmFiOjFkOjQ1OmUyOg0KKyAgICAgICAgICAgICAgICAgICAgYTQ6YTI6MDE6NmE6
MDU6ZGY6NDE6ZTY6ZmQ6Zjg6OTQ6MmU6ZTI6OWY6YTQ6DQorICAgICAgICAgICAgICAgICAgICAw
MTo1NTo3ZDplYjpjMTozZDozZTo2MTo1MDphMDplYTozNzoyYTpkNTpjNzoNCisgICAgICAgICAg
ICAgICAgICAgIDE4OjRjOmVjOmY1OjBkOjM5OjZkOjU0OmQzOjA0OjMxOjQ2OmQ4OjEyOmEwOg0K
KyAgICAgICAgICAgICAgICAgICAgMGE6ODI6NjM6NmQ6ODI6YTQ6OGU6ZDY6ODI6NDM6NjE6OWI6
MWQ6OTQ6OWE6DQorICAgICAgICAgICAgICAgICAgICBiMDoxZDozNTowMjpmODpiYjo1NTo3Zjo4
YzpmNzoyMTplMjo2NTozNjo0MjoNCisgICAgICAgICAgICAgICAgICAgIGE5OjhiOjU4OjExOjkw
OmEwOjdjOjI4OjQ1OmQ4OjliOjg4Ojk1OjlhOjI2Og0KKyAgICAgICAgICAgICAgICAgICAgZTk6
ZmQ6NDc6MDc6ODM6NzA6OGE6OTg6MWI6MGI6NGU6ODQ6OGM6MDY6Yjc6DQorICAgICAgICAgICAg
ICAgICAgICBlMjplMw0KKyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEp
DQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoNCisgICAgICAgICAgICBYNTA5djMgQmFzaWMg
Q29uc3RyYWludHM6IA0KKyAgICAgICAgICAgICAgICBDQTpGQUxTRQ0KKyAgICAgICAgICAgIFg1
MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAgICAgQUU6RDg6MkY6
OTk6QkE6QjE6RTg6MDM6RDI6QTU6QzU6MkM6MEQ6QkI6MTY6NUM6OUI6OUY6Rjc6MDgNCisgICAg
ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiANCisgICAgICAgICAgICAg
ICAga2V5aWQ6RjY6Qjk6REE6MTY6MDc6MDU6QkI6NkY6Qzk6NjM6MzA6QzY6Njc6NDA6Q0I6MDM6
RDM6MUU6OTA6RUMNCisNCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiANCisgICAgICAg
ICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIE5vbiBSZXB1ZGlhdGlvbiwgS2V5IEVuY2lwaGVy
bWVudA0KKyAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkgVXNhZ2U6IA0KKyAgICAgICAg
ICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbg0KKyAgICAgICAgICAgIFg1MDl2
MyBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWU6IA0KKyAgICAgICAgICAgICAgICBETlM6d2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzYu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDIud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY2LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3My53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDMud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODQud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDMxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNDkud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ0LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A0NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNC53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wODEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AyMC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDUxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ3
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2My53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcwLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc4LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDY1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OC53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wOTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDAubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A0NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMzLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wNTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTgubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQz
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A2MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjYubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDMyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A5OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE5Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Ni5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjkubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A1NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkyLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1NC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp3d3cxLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIwLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDIyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDM1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTYubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2My5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A2MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE0Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MC5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUw
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A4Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dy53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDkzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cx
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDcxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A4OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI0Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0OS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDU5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDYu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDcubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc1Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
ODEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dy5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3
d3cud3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzIubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIu
d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cyLnd3dzIubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp3d3cyLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbHZlLTZs
YWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbHZlLTZsYWQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1s
dmUtNmxhZC54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhq
NmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRz
NTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC54
bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxh
ZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0t
bjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QNCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24NCisgICAgICAgICA4OTphNDo0NDo0MzplZjowZjphNjoz
Njo3MjozMTo4Nzo0NDo3NTo4NjpiNjo1Yjo1ODoyYzoNCisgICAgICAgICBjYjoxYzowYToyZToz
NTozMjo4Mzo4MDo3MDo3MDoxYzpiNzo0YTpkMTo0NTo0NDo3ODpjNDoNCisgICAgICAgICAxNzpk
ODo3NzozNDo0ZTo0MjpkMjo3MjoyMjpmZTowZDowYTphZTpiODowNjo5NDpkMDo2ZDoNCisgICAg
ICAgICA3YToyMTpkODphNDo4MzozMzoxNzpkMzowNDphODo5Mzo2Zjo2NjpmMDozMzoxOTowNTow
NzoNCisgICAgICAgICBiNTozNTo4MzoyODphOTo4Zjo4NToxODoxYTo4NjpkZjplODpiZTo4ZDpj
Zjo2YToyNDpjMToNCisgICAgICAgICAwODoyNjpkZDowMjo5ODoxYzowMTpkODo4MTo0YTplNDoy
MDoxNDoxOTo3YzplZjo5MTpiNToNCisgICAgICAgICAzZTpkYTo1YTpmNjoxNDo0NToxODo3ZDo0
NTo0YjoyODo3NjozMzo1ODpjNTo4YzpjOToyZDoNCisgICAgICAgICBlZjo4OToxMTo3MDo3ZDpl
Yjo0Nzo5ZToxMjpiMDo4MToxOTpjODowNzpkOTpjYzo4NzpmMToNCisgICAgICAgICAxYjpmZTpm
MDo4ZjpiMjpjMzpmMTpkYTpmMDo1NTplNTo0YTo5YjpmZjowZDowMTo1Zjo2NToNCisgICAgICAg
ICA5NTowNzo5MjpjNjo3Yjo3Mzo5NTo1OTphYTo2YjpjNjo5YzowMTo0ZTphMjoyYjplYTo3NzoN
CisgICAgICAgICBkNDpmNDphYjpkNjplNTo5NDplYjo4MTozNzo1NTo5Yzo5MDozZjo3MzoyMzox
ZDo4NDpjMjoNCisgICAgICAgICA4Mjo0Mjo1Njo5YToxMzo2OTozMzo0ODpkNjowZDowZTo1ODo4
MjphYzo5MDplZjpiMzphMDoNCisgICAgICAgICA2YzpkZTo3OTpmNjoxNzpjNTpmMDoxZTpmMzoz
Nzo3NDowMTpmMDo0Nzo5Yzo3Nzo5YzphNzoNCisgICAgICAgICBhZjplMDo2MDpjYTpkNzowMjpk
ZDo1MDo0ODo2OTpiMToxYjo4Mzo4Nzo1YTo3Yzo3NDo0NDoNCisgICAgICAgICBkYTpjNTpkZTpi
OA0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KK01JSWdpRENDSDNDZ0F3SUJBZ0lEQy9P
dk1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwNCitZaTF3YkdGMFptOXli
UzEwWlhOMGN6QWVGdzB5TURBeU1UZ3lNREk1TkRkYUZ3MHpNREF5TVRVeU1ESTVORGRhDQorTUJ3
eEdqQVlCZ05WQkFNTUVYZGxZaTF3YkdGMFptOXliUzUwWlhOME1JSUJJakFOQmdrcWhraUc5dzBC
QVFFRg0KK0FBT0NBUThBTUlJQkNnS0NBUUVBdjM3bUtteVMyQ3FFOEJjMnJwMGlkK3RwcVFPd2FG
amlESWt4WkJpdGJXUUkNCitLYzlxNzh3UStiTXpUQ0t4MmlSZnd6SHg4WHRnbDdKNUExMW0zTkhM
Zyt6VERPSFNtMzBXNDU3Y1dOMXNpWGVZDQorb3d5eWZHN1F2ejBzR2FISmg4SUtUcWdlTktodjJp
MEtUY0MwY1FaSlllb2F3R1RCMDdDUHdEdUNBU2pFNkRHTA0KK0IwdTErMklYVENvTjNxdk8zSUJv
djZzZFJlS2tvZ0ZxQmQ5QjV2MzRsQzdpbjZRQlZYM3J3VDArWVZDZzZqY3ENCisxY2NZVE96MURU
bHRWTk1FTVViWUVxQUtnbU50Z3FTTzFvSkRZWnNkbEpxd0hUVUMrTHRWZjR6M0llSmxOa0twDQor
aTFnUmtLQjhLRVhZbTRpVm1pYnAvVWNIZzNDS21Cc0xUb1NNQnJmaTR3SURBUUFCbzRJZDBEQ0NI
Y3d3Q1FZRA0KK1ZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVXJ0Z3ZtYnF4NkFQU3BjVXNEYnNXWEp1
Zjl3Z3dId1lEVlIwakJCZ3cNCitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3WURW
UjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HDQorQ0NzR0FRVUZCd01CTUlJZFd3WURWUjBSQklJ
ZFVqQ0NIVTZDRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdg0KK2NESXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3T1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJVmIzQTMNCitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNeTUz
DQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlWYjNBMkxuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
VnViM1F0ZDJWaQ0KK0xYQnNZWFJtYjNKdExuUmxjM1NDRlc5d05TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVZiM0EwTG5kbFlpMXcNCitiR0YwWm05eWJTNTBaWE4wZ2hWdmNEZ3VkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROeTUz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJ
SVdiM0E1TkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXhOaTUzWldJdGNHeGgNCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tnk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNB
Mk5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJV2IzQXlPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXhN
UzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdW
emRJSVdiM0EyTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBPQzUzWldJdGNHeGgNCitk
R1p2Y20wdWRHVnpkSUlXYjNBeE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTWk1M1pX
SXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlX
YjNBek55NTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2IzQTJOaTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXZDNkM01TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aA0KK2RHWnZjbTB1
ZEdWemRJSVdiM0F6T0M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTJNaTUzWldJdGNHeGgN
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTmk1
M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQXlNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlXYjNBeU5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJV2IzQXhPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBM05DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TVM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJ
V2IzQXpNeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMk9TNTNaV0l0Y0d4aA0KK2RHWnZj
bTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXpPUzUzWldJdGNH
eGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
TXk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTROUzUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlXYjNBek5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F5TVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJV2IzQTNNUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMU1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TkM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6
ZElJV2IzQXpNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU5DNTNaV0l0Y0d4aA0KK2RH
WnZjbTB1ZEdWemRJSVdiM0EwT1M1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTBOQzUzWldJ
dGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F6TlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNOaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlXYjNBeE5DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJV2IzQTRPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNB
eU1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TlM1M1pXSXRjR3hoDQorZEdadmNtMHVk
R1Z6ZElJV2IzQTFNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBNE5pNTNaV0l0Y0d4aA0K
K2RHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQXlOeTUz
WldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTlM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTBOeTUzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlXYjNBNU5pNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTFOeTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlX
YjNBMk15NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTXk1M1pXSXRjR3hoDQorZEdadmNt
MHVkR1Z6ZElJV2IzQXlPUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBeU5TNTNaV0l0Y0d4
aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTVO
eTUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBME1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TWk1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTNNQzUzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0E1TWk1
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2IzQTNPQzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpk
SUlXYjNBNE9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TUM1M1pXSXRjR3hoDQorZEda
dmNtMHVkR1Z6ZElJV2IzQTNOeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0
Y0d4aA0KK2RHWnZjbTB1ZEdWemRJSVdiM0F4TlM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2Iz
QTJOUzUzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0E1TUM1M1pXSXRjR3hoDQorZEdadmNtMHVkR1Z6ZElJV2IzQTRNaTUzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMkxtNXZkQzEzWldJdA0KK2NHeGhkR1p2Y20wdWRHVnpkSUla
YjNBNExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBNUxtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlaYjNBMExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaDQor
YjNBM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhk
R1p2Y20wdQ0KK2RHVnpkSUlaYjNBeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
eExtNXZkQzEzWldJdGNHeGgNCitkR1p2Y20wdWRHVnpkSUlaZDNkM0xtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlaYjNBMUxtNXZkQzEzDQorWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
ekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeQ0KK055NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDR205d05EQXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hw
dmNEUTFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlMWEJz
DQorWVhSbWIzSnRMblJsYzNTQ0dtOXdNamd1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRGd6TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6TXk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3TlRZdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHAzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBMk1pNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d01UZ3VibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEUTRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTANCitNeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdPRGt1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwDQorWlhOMGdocHZjRFl3TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1TlM1
dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpNdWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RreExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
ME1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQorR205d01qWXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNEWTVMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJ
YWIzQXpNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNemN1Ym05MExYZGwNCitZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGs0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWFiM0F4DQorT1M1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TnpZdWJtOTBMWGRs
WWkxd2JHRjBabTl5YlM1MA0KK1pYTjBnaHB2Y0RFekxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlhYjNBM09TNXViM1F0ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR25kM2R6SXVkM2Qz
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZzJMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTNOeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNamt1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFUxTG01dmRDMTNaV0l0Y0d4aGRHWnYN
CitjbTB1ZEdWemRJSWFiM0E1TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TkRR
dWJtOTBMWGRsDQorWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVMExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBNQ0KK05DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205
d016UXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTANCitaWE4wZ2hwdmNETXdMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNUzUzZDNjdWQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNT
Q0dtOXdNalV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRFkwTG01dg0KK2RDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0MNCitHbTl3TlRFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RReExtNXZkQzEz
WldJdGNHeGhkR1p2DQorY20wdWRHVnpkSUlhYjNBeE1pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDR205d01UQXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXkNCitNaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRGMw
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRkMlZpTFhCcw0KK1lY
Um1iM0p0TG5SbGMzU0NHbTl3T0RBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0Rn
MExtNXYNCitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek1TNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDDQorR205d05UTXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNESXpMbTV2ZEMxM1pXSXRjR3hoZEdadg0KK2NtMHVkR1Z6ZElJYWIzQXpOUzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVFl1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFl6TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F6DQorT0M1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TlRndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MA0K
K1pYTjBnaHB2Y0RZeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0
ZDJWaUxYQnMNCitZWFJtYjNKdExuUmxjM1NDR205d09UQXVibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNEY3dMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhNUzV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQw0KK0dtOXdNVFV1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRFkxTG01dmRDMTNaV0l0Y0d4aGRHWnYNCitjbTB1ZEdWemRJSWFiM0Ex
TUM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TmpndWJtOTBMWGRsDQorWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RnM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mw0KK09DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R5NTNkM2N5TG5kbFlpMXdi
R0YwWm05eWJTNTANCitaWE4wZ2hwdmNEZ3lMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTVNeTV1YjNRdGQyVmlMWEJzDQorWVhSbWIzSnRMblJsYzNTQ0duZDNkeTUzZDNjeExuZGxZ
aTF3YkdGMFptOXliUzUwWlhOMGdocHZjREl4TG01dg0KK2RDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWFiM0EzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0MNCitHbTl3T1RjdWJtOTBM
WGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RnNExtNXZkQzEzWldJdGNHeGhkR1p2DQorY20w
dWRHVnpkSUlhYjNBeU5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR205d05qWXVibTkw
TFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEUTVMbTV2ZEMxM1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJYWIzQTENCitPUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdORFl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwDQorWlhOMGdocHZjRE0yTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0F6T1M1dWIzUXRkMlZpTFhCcw0KK1lYUm1iM0p0TG5SbGMzU0NHbTl3
TkRjdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RFM0xtNXYNCitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM05TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDDQor
R205d09EVXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTNMbTV2ZEMxM1pXSXRj
R3hoZEdadg0KK2NtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdPREV1Ym05MExYZGwNCitZaTF3YkdGMFptOXliUzUwWlhOMGdodDNkM2N5TG5kM2R6RXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzDQorZHpFdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUliZDNkM01pNTNkM2N5TG5kbFlpMXdiR0YwWm05eQ0KK2JTNTBaWE4wZ2h0M2QzY3hM
bmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0hYZDNkeTUzZDNjdWJtOTANCitMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDUzZDNjeUxuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
DQorYzNTQ0huaHVMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM01T
NTNkM2N1Ym05MA0KK0xYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmwNCitjM1NDSG5kM2R5NTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWZkM2QzTVM1M2QzY3lMbTV2DQorZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJZmQzZDNNUzUzZDNjeExtNXZkQzEzWldJdGNHeGhkR1p2Y20wdQ0KK2RHVnpkSUlmZDNkM01p
NTNkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWZkM2QzTWk1M2QzY3kNCitMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbmQzZHk1M1pXSXRj
R3hoDQorZEdadmNtMHVkR1Z6ZElJaWVHNHRMV3gyWlMwMmJHRmtMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJaQ0KK2QzZDNMbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVk
R1Z6ZElJamQzZDNNUzU0YmkwdGJIWmwNCitMVFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0kzZDNkekl1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3DQorYkdGMFptOXliUzUwWlhOMGdpTjRi
aTB0YkhabExUWnNZV1F1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWeg0KK2RJSWplRzR0TFd4
MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKbmQzZHk1NGJpMHQNCiti
SFpsTFRac1lXUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lX
UXVkM2QzDQorTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2QzTVM1NGJpMHRiSFps
TFRac1lXUXVibTkwTFhkbA0KK1lpMXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3lMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm0NCitiM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6DQorZElJbmVHNHRMV3gyWlMwMmJH
RmtMbmQzZHpJdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWw0YmkwdA0KK2JqaHFObVJ6
TlROc2QzZHJjbkZvZGpJNFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXJlRzR0TFd4MlpTMDIN
CitiR0ZrTG5odUxTMXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0
NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTE0YmkwdGJqaHFObVJ6TlROcw0KK2QzZHJjbkZvZGpJNFlTNTNkM2N1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDTFhkM2R5NTRiaTB0YmpocU5tUnoNCitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJdWQzZDNNaTU0YmkwdGJqaHFObVJ6DQorTlROc2QzZHJjbkZvZGpJ
NFlTNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXVkM2QzTVM1NGJpMHRiamhxTm1Seg0KK05UTnNk
M2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl1ZUc0dExXNDRhalprY3pVemJI
ZDMNCithM0p4YUhZeU9HRXVkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJdWVHNHRMVzQ0
YWpaa2N6VXpiSGQzDQorYTNKeGFIWXlPR0V1ZDNkM01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SXZlRzR0TFd4MlpTMDJiR0ZrTG5odQ0KK0xTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDTVhodUxTMXVPR28yWkhNMU0yeDMNCitkMnR5Y1doMk1qaGhMbmQzZHk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NNWGQzZHk1NGJpMHRiamhxDQorTm1Sek5UTnNkM2Ry
Y25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ01uZDNkekV1ZUc0dA0KK0xX
NDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2pK
NGJpMHQNCitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjeExtNXZkQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUl5DQorZDNkM01pNTRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbA0KK2MzU0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHlj
V2gyTWpoaExuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXkNCitiUzUwWlhOMGdqWjRiaTB0Ympo
cU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1NGJpMHRiSFpsTFRac1lXUXVkMlZpDQorTFhCc1lYUm1i
M0p0TG5SbGMzU0NObmh1TFMxc2RtVXRObXhoWkM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gbw0K
K2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUk2ZUc0dExXeDJaUzAyYkdGa0xuaHVMUzF1
T0dvMlpITTENCitNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
STZlRzR0TFc0NGFqWmtjelV6DQorYkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJHRmtMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElKQg0KK2VHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXUNCitkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NSWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1DQorT0dvMlpI
TTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQU5CZ2txaGtp
Rw0KKzl3MEJBUXNGQUFPQ0FRRUFpYVJFUSs4UHBqWnlNWWRFZFlhMlcxZ3N5eHdLTGpVeWc0Qndj
QnkzU3RGRlJIakUNCitGOWgzTkU1QzBuSWkvZzBLcnJnR2xOQnRlaUhZcElNekY5TUVxSk52WnZB
ekdRVUh0VFdES0ttUGhSZ2FodC9vDQordm8zUGFpVEJDQ2JkQXBnY0FkaUJTdVFnRkJsODc1RzFQ
dHBhOWhSRkdIMUZTeWgyTTFqRmpNa3Q3NGtSY0gzcg0KK1I1NFNzSUVaeUFmWnpJZnhHLzd3ajdM
RDhkcndWZVZLbS84TkFWOWxsUWVTeG50emxWbXFhOGFjQVU2aUsrcDMNCisxUFNyMXVXVTY0RTNW
WnlRUDNNakhZVENna0pXbWhOcE0waldEUTVZZ3F5UTc3T2diTjU1OWhmRjhCN3pOM1FCDQorOEVl
Y2Q1eW5yK0JneXRjQzNWQklhYkViZzRkYWZIUkUyc1hldUE9PQ0KKy0tLS0tRU5EIENFUlRJRklD
QVRFLS0tLS0NCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnltbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRf
dGVzdHMueW1sCmluZGV4IDc4MTFiYTk1OTE3YmIzY2M2YjVkMzJlY2JlOWU4OTUyOTc2MWFkYzMu
LjQ5NGZmMWVmYTE5Y2MwMjEzMzM3MDk0ODM4M2U1ZmIyMjE0NGQ0ZmYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
YWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCkBAIC0xNSw3ICsx
NSw3IEBAIHN0ZXBzOgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1sCiAtIHRlbXBsYXRl
OiB1cGRhdGVfaG9zdHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZlc3QueW1sCi0tIHNj
cmlwdDogbm9fcHJveHk9JyonIC4vd3B0IHJ1biAtLXllcyAtLW5vLXBhdXNlIC0tbm8tZmFpbC1v
bi11bmV4cGVjdGVkIC0tbm8tcmVzdGFydC1vbi11bmV4cGVjdGVkIC0tYWZmZWN0ZWQgJHt7IHBh
cmFtZXRlcnMuYWZmZWN0ZWRSYW5nZSB9fSAtLWxvZy13cHRyZXBvcnQgJChCdWlsZC5BcnRpZmFj
dFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9yZXBvcnQuanNvbiAtLWxvZy13cHRzY3JlZW5zaG90ICQo
QnVpbGQuQXJ0aWZhY3RTdGFnaW5nRGlyZWN0b3J5KS93cHRfc2NyZWVuc2hvdC50eHQgLS1jaGFu
bmVsIHByZXZpZXcgc2FmYXJpCistIHNjcmlwdDogLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1c2Ug
LS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1hZmZl
Y3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAkKEJ1
aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdwdHNj
cmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5zaG90
LnR4dCAtLWNoYW5uZWwgcHJldmlldyBzYWZhcmkKICAgZGlzcGxheU5hbWU6ICdSdW4gdGVzdHMn
CiAtIHRhc2s6IFB1Ymxpc2hCdWlsZEFydGlmYWN0c0AxCiAgIGRpc3BsYXlOYW1lOiAnUHVibGlz
aCByZXN1bHRzJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20uYXBwbGUuU2FmYXJpLnBsaXN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9jb20u
YXBwbGUuU2FmYXJpLnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjIwODA5
NzJjOWY2MzQxMDA2MmVlOGQzM2QwZWQwMjg2YWY4ZjExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY29tLmFwcGxlLlNhZmFyaS5wbGlzdAorKysgL2Rl
di9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9F
TiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBs
aXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkFsbG93UmVtb3RlQXV0b21hdGlvbjwv
a2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxf
Y2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDZiZDVjMjMzNGFkNGUzZTRk
NWQ2ZmFhZjgwMDVmNGUwYjQ0Y2YxZmUuLmZkNjUwZTgwYWFhZDMwOWM4ZTk4MzI3NGQyYjgyM2Ji
YTkxYjFmYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFs
bF9jaHJvbWUueW1sCkBAIC0xLDYgKzEsOSBAQAogc3RlcHM6Ci0jIFRoaXMgaXMgZXF1aXZhbGVu
dCB0byBgSG9tZWJyZXcvaG9tZWJyZXctY2Fzay12ZXJzaW9ucy9nb29nbGUtY2hyb21lLWRldmAs
Ci0jIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNoaW5nLgotLSBzY3JpcHQ6
IEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNrIGluc3RhbGwgaHR0cHM6Ly9yYXcu
Z2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFz
dGVyL0Nhc2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiCisjIFRoZSBjb25mbGljdGluZyBnb29nbGUt
Y2hyb21lIGFuZCBjaHJvbWVkcml2ZXIgY2Fza3MgYXJlIGZpcnN0IHVuaW5zdGFsbGVkLgorIyBU
aGUgcmF3IGdvb2dsZS1jaHJvbWUtZGV2IGNhc2sgVVJMIGlzIHVzZWQgdG8gYnlwYXNzIGNhY2hp
bmcuCistIHNjcmlwdDogfAorICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBjYXNr
IHVuaW5zdGFsbCBnb29nbGUtY2hyb21lIHx8IHRydWUKKyAgICBIT01FQlJFV19OT19BVVRPX1VQ
REFURT0xIGJyZXcgY2FzayB1bmluc3RhbGwgY2hyb21lZHJpdmVyIHx8IHRydWUKKyAgICBIT01F
QlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgY2FzayBpbnN0YWxsIGh0dHBzOi8vcmF3LmdpdGh1
YnVzZXJjb250ZW50LmNvbS9Ib21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL21hc3Rlci9D
YXNrcy9nb29nbGUtY2hyb21lLWRldi5yYgogICBkaXNwbGF5TmFtZTogJ0luc3RhbGwgQ2hyb21l
IERldicKICAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQu
T1MnXSwgJ0RhcndpbicpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2VkZ2UueW1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0
YWxsX2VkZ2UueW1sCmluZGV4IGU0YzQyNWFiN2EwZjAzMjE4ZDkyMmU3MzEwZWE5ZDhmZGUwZjUx
YWEuLjI5N2I2ZTYwYjI5ZjNhOWJiZDAwYjNlZTAwYjcwNTYzNTEzOGYyY2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvaW5zdGFsbF9lZGdlLnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZWRnZS55bWwKQEAgLTQsNiArNCwy
NiBAQCBwYXJhbWV0ZXJzOgogIyBTaG91bGQgbWF0Y2ggaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVz
dHMub3JnL3J1bm5pbmctdGVzdHMvY2hyb21lLmh0bWwKICMgSnVzdCByZXBsYWNlIGNocm9tZSB3
aXRoIGVkZ2VjaHJvbWl1bQogc3RlcHM6CistICR7eyBpZiBlcShwYXJhbWV0ZXJzLmNoYW5uZWws
ICdzdGFibGUnKSB9fToKKyAgLSBwb3dlcnNoZWxsOiB8CisgICAgICAkZWRnZUluc3RhbGxlck5h
bWUgPSAnTWljcm9zb2Z0RWRnZVNldHVwLmV4ZScKKyAgICAgICMgTGluayB0byBTdGFibGUgY2hh
bm5lbCBpbnN0YWxsZXIKKyAgICAgIFN0YXJ0LUJpdHNUcmFuc2ZlciAtU291cmNlICdodHRwczov
L2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjEwODgzNCZDaGFubmVsPVN0YWJsZSZs
YW5ndWFnZT1lbicgLURlc3RpbmF0aW9uIE1pY3Jvc29mdEVkZ2VTZXR1cC5leGUKKyAgICAgIGlm
ICgtbm90IChUZXN0LVBhdGggJGVkZ2VJbnN0YWxsZXJOYW1lKSkgeworICAgICAgICBUaHJvdyAi
RmFpbGVkIHRvIGRvd25sb2FkIEVkZ2UgaW5zdGFsbGVyIHRvICRlZGdlSW5zdGFsbGVyTmFtZS4i
CisgICAgICB9CisgICAgICBjbWQgL2MgU1RBUlQgL1dBSVQgJGVkZ2VJbnN0YWxsZXJOYW1lIC9z
aWxlbnQgL2luc3RhbGwKKyAgICAgICRlZGdlUGF0aCA9ICIkZW52OnN5c3RlbWRyaXZlXFByb2dy
YW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb24iCisgICAgICBpZiAoVGVz
dC1QYXRoICRlZGdlUGF0aCkgeworICAgICAgICBXcml0ZS1Ib3N0ICIjI3Zzb1t0YXNrLnByZXBl
bmRwYXRoXSRlZGdlUGF0aCIKKyAgICAgICAgV3JpdGUtSG9zdCAiRWRnZSBTdGFibGUgaW5zdGFs
bGVkIGF0ICRlZGdlUGF0aC4iCisgICAgICAgIChHZXQtSXRlbSAtUGF0aCAiJGVkZ2VQYXRoXG1z
ZWRnZS5leGUiKS5WZXJzaW9uSW5mbyB8IEZvcm1hdC1MaXN0CisgICAgICB9IGVsc2UgeworICAg
ICAgICBDb3B5LUl0ZW0gLVBhdGggIiRlbnY6dGVtcFwqZWRnZSoubG9nIiAtRGVzdGluYXRpb24g
JChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpICAtRm9yY2UKKyAgICAgICAgVGhyb3cg
IkZhaWxlZCB0byBpbnN0YWxsIEVkZ2UgYXQgJGVkZ2VQYXRoIgorICAgICAgfQorICAgIGRpc3Bs
YXlOYW1lOiAnSW5zdGFsbCBFZGdlIFN0YWJsZScKKwogLSAke3sgaWYgZXEocGFyYW1ldGVycy5j
aGFubmVsLCAnY2FuYXJ5JykgfX06CiAgIC0gcG93ZXJzaGVsbDogfAogICAgICAgJGVkZ2VJbnN0
YWxsZXJOYW1lID0gJ01pY3Jvc29mdEVkZ2VTZXR1cC5leGUnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3Rh
bGxfc2FmYXJpLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCmluZGV4IGE4NjQxNDY1YWM4ZWFl
NzAwODZiZDBjZWQ0YTgwZDNhMmRhMzUxMTMuLmQwNjYwZDE1MmJiZGZjODlmMzA4YmZjMDQ4Y2Qy
MjIxZTllYTc1MjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9zYWZhcmkueW1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9zYWZhcmkueW1sCkBAIC0zLDYgKzMsOSBAQCBwYXJhbWV0ZXJzOgogCiAjIFNob3VsZCBt
YXRjaCBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvcnVubmluZy10ZXN0cy9zYWZhcmku
aHRtbAogc3RlcHM6CistIHNjcmlwdDogZGVmYXVsdHMgd3JpdGUgY29tLmFwcGxlLldlYkRyaXZl
ciBEaWFnbm9zdGljc0VuYWJsZWQgMQorICBkaXNwbGF5TmFtZTogJ0VuYWJsZSBzYWZhcmlkcml2
ZXIgZGlhZ25vc3RpY3MnCisgIGNvbmRpdGlvbjogZXEodmFyaWFibGVzWydzYWZhcmlkcml2ZXJf
ZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5lbCwgJ3ByZXZp
ZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKICAgICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEg
YnJldyBjYXNrIGluc3RhbGwgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmll
dy5yYgpAQCAtMTIsOSArMTUsNiBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFtZTogJ0luc3RhbGwg
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMuY2hhbm5l
bCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgIyBXb3JrYXJvdW5kIGZvciBg
c3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmc6Ci0gICAgICAjIGh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xOTg0NQotICAgICAgbWtk
aXIgLXAgfi9MaWJyYXJ5L1dlYkRyaXZlci8KLSAgICAgIGNwIHRvb2xzL2NpL2F6dXJlL2NvbS5h
cHBsZS5TYWZhcmkucGxpc3Qgfi9MaWJyYXJ5L1dlYkRyaXZlci8KKyAgICAgIHN1ZG8gc2FmYXJp
ZHJpdmVyIC0tZW5hYmxlCiAgICAgICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdl
YktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlO
YW1lOiAnQ29uZmlndXJlIFNhZmFyaScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcGlwX2luc3RhbGwueW1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9waXBfaW5zdGFsbC55bWwKaW5kZXggYzg3OTUzNDVmNmJjZjRhOTQzZTA3YTQ1OTk0N2U3MThh
ZDZhMGFmYy4uMThkMTg3OWU5NzE2MTM1MzJmYWM1NjczZDlhODA0YWNjMWJjODY3MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9waXBfaW5zdGFsbC55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9waXBfaW5zdGFsbC55bWwKQEAgLTIsMTQg
KzIsNSBAQCBwYXJhbWV0ZXJzOgogICBwYWNrYWdlczogJycKIAogc3RlcHM6Ci0tIHNjcmlwdDog
fAotICAgICMgYHN1ZG8gcGlwIGluc3RhbGxgIGlzIG5vdCB1c2VkIGJlY2F1c2Ugc29tZSBwYWNr
YWdlcyAoZS5nLiB0b3gpIGRlcGVuZCBvbgotICAgICMgc3lzdGVtIHBhY2thZ2VzIChlLmcuIHNl
dHVwdG9vbHMpIHdoaWNoIGNhbm5vdCBiZSB1cGdyYWRlZCBkdWUgdG8gU3lzdGVtCi0gICAgIyBJ
bnRlZ3JpdHkgUHJvdGVjdGlvbiwgc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMzAw
NDkyMC4KLSAgICBwaXAgaW5zdGFsbCAtLXVzZXIgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0K
LSAgICBlY2hvICIjI3Zzb1t0YXNrLnByZXBlbmRwYXRoXSRIT01FL0xpYnJhcnkvUHl0aG9uLzIu
Ny9iaW4iCi0gIGRpc3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMgKG1hY09TKScK
LSAgY29uZGl0aW9uOiBhbmQoc3VjY2VlZGVkKCksIGVxKHZhcmlhYmxlc1snQWdlbnQuT1MnXSwg
J0RhcndpbicpKQogLSBzY3JpcHQ6IHBpcCAtLWRpc2FibGUtcGlwLXZlcnNpb24tY2hlY2sgaW5z
dGFsbCAtLXVwZ3JhZGUgJHt7IHBhcmFtZXRlcnMucGFja2FnZXMgfX0KLSAgZGlzcGxheU5hbWU6
ICdJbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyAoV2luZG93cyknCi0gIGNvbmRpdGlvbjogYW5kKHN1
Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9TJ10sICdXaW5kb3dzX05UJykpCisgIGRp
c3BsYXlOYW1lOiAnSW5zdGFsbCBQeXRob24gcGFja2FnZXMnCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3B1Ymxp
c2hfbG9ncy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2F6dXJlL3B1Ymxpc2hfbG9ncy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ5Mzk3YTkxYWQ3
Y2E0MjQ4NjRjNTMyNmI1ZmU3YjRhMzY4NWE0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlz
aF9sb2dzLnltbApAQCAtMCwwICsxLDcgQEAKK3N0ZXBzOgorLSB0YXNrOiBQdWJsaXNoQnVpbGRB
cnRpZmFjdHNAMQorICBkaXNwbGF5TmFtZTogJ1B1Ymxpc2ggc2FmYXJpZHJpdmVyIGxvZ3MnCisg
IGlucHV0czoKKyAgICBwYXRodG9QdWJsaXNoOiAvVXNlcnMvcnVubmVyL0xpYnJhcnkvTG9ncy9j
b20uYXBwbGUuV2ViRHJpdmVyLworICAgIGFydGlmYWN0TmFtZTogc2FmYXJpZHJpdmVyLWxvZ3MK
KyAgY29uZGl0aW9uOiBlcSh2YXJpYWJsZXNbJ3NhZmFyaWRyaXZlcl9kaWFnbm9zZSddLCB0cnVl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9henVyZS9zYWZhcmktdGVjaG5vbG9neS1wcmV2aWV3LnJiIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3LnJiCmluZGV4IGIzMjczOWJlNThhNzAyOGQ1ZmY0YTJkZTliNTZk
ZmI3ZWEwOTk4MmIuLmVhZTAzNDc0YTQ5ZmY3YmVjZTMyZGFmNDgyMzkwMDI1YzNjZTllMmEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3NhZmFyaS10
ZWNobm9sb2d5LXByZXZpZXcucmIKQEAgLTEsMTAgKzEsMTAgQEAKIGNhc2sgJ3NhZmFyaS10ZWNo
bm9sb2d5LXByZXZpZXcnIGRvCiAgIGlmIE1hY09TLnZlcnNpb24gPD0gOm1vamF2ZQotICAgIHZl
cnNpb24gJzk2LDA2MS00NDA1Ni0yMDE5MTEyMC1hYzdiYjE5Ni0yNzI0LTQ4NDAtYmNlOS02Yzgz
ZWNkYmZiMmMnCi0gICAgc2hhMjU2ICdlODBjZWFjZGZmN2U3NTIxODM2NTk5M2U1YWYxYzgxYzli
Y2M0Nzg1MjkxYWUwMGFiYmEzZDE0YWM1NjE0MzE3JworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU5
NjYtMjAyMDA1MTMtODY1NzFiZTYtODc4ZS00MTFiLWE1YjktNjVhOTcxNTczZmFlJworICAgIHNo
YTI1NiAnODUxOGM4OTE3YTkxNzJhZWI3NWRlZWI2MTA2MGQzNTMyMjk3NjBmZDU0ZGM4NWJkMzhh
MDg5N2NjMWQxMjEwNScKICAgZWxzZQotICAgIHZlcnNpb24gJzk2LDA2MS00NzcxOC0yMDE5MTEy
MC0wMmJjNzU2OS1lZTZiLTRjMjgtOWVjNC0wY2VlZGEzYzNjM2EnCi0gICAgc2hhMjU2ICdiYmZj
ZGMzNmJmOWI1NWFlYzU4MzhkNjZlMzRjNDFkZDNmNmE2NDA5MTQwNmJjMzhmNDVjODg4MzYwZjE5
MWZlJworICAgIHZlcnNpb24gJzEwNiwwMDEtMDU4OTAtMjAyMDA1MTMtMzIxYTY5YjQtZGU1OC00
NDBlLTgxODItOGFjMDNkNjVmNmNlJworICAgIHNoYTI1NiAnZjNjMDczZDliNjBmZjZkMTFmODJh
YmJjNmNjMTMxZTU5MTNlNmQwZjJhMTFmMDk2OGFlNzdkYjFiNTFlMWUzNScKICAgZW5kCiAKICAg
dXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRl
cl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hf
cHl0ZXN0LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKaW5kZXggYmM5MzA4MzZkM2Q3YjY2YmM2M2Fj
MjM5MmI1MDVmZDk5YWYzZTExZC4uMTJlZDY2YTlhMDIwNmY2ODY2ZmIxMjBlMjY0YmUzOWRjN2Uy
OTJlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1s
CkBAIC0xLDcgKzEsNyBAQAogcGFyYW1ldGVyczoKICAgZGlyZWN0b3J5OiAnJwogICB0b3hlbnY6
ICdBTEwnCi0KKyAgCiBzdGVwczoKIC0gdGVtcGxhdGU6IHBpcF9pbnN0YWxsLnltbAogICBwYXJh
bWV0ZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cK
aW5kZXggNDRmNTQzMTljMmI5ZjAyNGVhOTI1YTZjM2VjN2NlMjBlZTRkNTBkMi4uY2U3MDEyZjcz
Mzk5YTYyODZmNzdkNzMxNjIxNDAxNzRiMDljMzI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0
LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3czYy1pbXBvcnQubG9nCkBAIC0xOCw3ICsxOCw2IEBAIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS9hZmZlY3RlZF90ZXN0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY2xlYW51cF93
aW4xMC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL2NvbS5hcHBsZS5TYWZhcmkucGxpc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9ob29rLnltbAogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUv
aW5zdGFsbF9jZXJ0cy55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfY2hyb21lLnltbApAQCAtMjgsNiArMjcsNyBA
QCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCiAvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFy
aS55bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL3BpcF9pbnN0YWxsLnltbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJp
LXRlY2hub2xvZ3ktcHJldmlldy5yYgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0
LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9kaWZmLnNoCmluZGV4IDcwOWNj
MmFhN2U2ODY3ZjU0OGQ0ZWZkZDYyZDc0YWJjMTg1ZTY1N2IuLmY4YWUzZTYxYmY3NTZkOTdjNzhl
MmQ5NTg5MTIxYjdkNjAxMDY2ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlmZi5zaAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0
X2RpZmYuc2gKQEAgLTEyLDE0ICsxMiwxNCBAQCBtYWluKCkgewogCiAgICAgI8KgRXhjbHVkZSB0
ZXN0cyB0aGF0IHJlbHkgb24gZm9udCByZW5kZXJpbmcKICAgICBleGNsdWRlZD0oCi0gICAgICAg
ICcyZGNvbnRleHQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwu
YmFzaWMucG5nJwotICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFz
LzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmxhcmdlLnBuZycKLSAgICAgICAgJzJkY29udGV4
dC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5ydGwucG5nJwot
ICAgICAgICAnMmRjb250ZXh0L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJh
dy5zdHJva2UuYmFzaWMucG5nJwotICAgICAgICAnb2Zmc2NyZWVuLWNhbnZhcy90ZXh0LzJkLnRl
eHQuZHJhdy5maWxsLmJhc2ljLnBuZycKLSAgICAgICAgJ29mZnNjcmVlbi1jYW52YXMvdGV4dC8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCi0gICAgICAgICdvZmZzY3JlZW4t
Y2FudmFzL3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKLSAgICAgICAgJ29mZnNjcmVl
bi1jYW52YXMvdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKKyAgICAgICAgJ2h0
bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3
LmZpbGwuYmFzaWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLXRl
eHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5sYXJnZS5wbmcnCisg
ICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJk
LnRleHQuZHJhdy5maWxsLnJ0bC5wbmcnCisgICAgICAgICdodG1sL2NhbnZhcy9lbGVtZW50L2Ry
YXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwor
ICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3LmZpbGwuYmFz
aWMucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVuL3RleHQvMmQudGV4dC5kcmF3
LmZpbGwubWF4V2lkdGgubGFyZ2UucG5nJworICAgICAgICAnaHRtbC9jYW52YXMvb2Zmc2NyZWVu
L3RleHQvMmQudGV4dC5kcmF3LmZpbGwucnRsLnBuZycKKyAgICAgICAgJ2h0bWwvY2FudmFzL29m
ZnNjcmVlbi90ZXh0LzJkLnRleHQuZHJhdy5zdHJva2UuYmFzaWMucG5nJwogICAgICkKIAogICAg
IC4vdXBkYXRlLWJ1aWx0LXRlc3RzLnNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVj
dHVyZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCmluZGV4IDhkYjA4Nzk0YWRlMjZi
ZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIuLjg5MjY3YjUwY2I2NDMyYzQ5NWQ0MjhhMTgwYzU5
NjU5YjVjNWE2MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCkBAIC01LDMxICs1LDI1IEBAIFNDUklQVF9ESVI9
JChjZCAkKGRpcm5hbWUgIiQwIikgJiYgcHdkIC1QKQogV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4v
Li4KIGNkICRXUFRfUk9PVAogCi1hZGRfd3B0X2hvc3RzKCkgewotICAgIC4vd3B0IG1ha2UtaG9z
dHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMKLX0KLQogdGVzdF9pbmZyYXN0cnVjdHVy
ZSgpIHsKLSAgICBsb2NhbCBBUkdTPSIiOwotICAgIGlmIFsgJFBST0RVQ1QgPT0gImZpcmVmb3gi
IF07IHRoZW4KLSAgICAgICAgQVJHUz0iLS1pbnN0YWxsLWJyb3dzZXIiCi0gICAgZWxzZQotICAg
ICAgICBBUkdTPSQxCi0gICAgZmkKLSAgICBURVJNPWR1bWIgLi93cHQgcnVuIC0tbG9nLW1hY2gg
LSAtLXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFz
dHJ1Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0
cnVjdHVyZS8KKyAgICBQWTNfRkxBRz0iJDIiCisgICAgVEVSTT1kdW1iIC4vd3B0ICRQWTNfRkxB
RyBydW4gLS1sb2ctbWFjaCAtIC0teWVzIC0tbWFuaWZlc3Qgfi9tZXRhL01BTklGRVNULmpzb24g
LS1tZXRhZGF0YSBpbmZyYXN0cnVjdHVyZS9tZXRhZGF0YS8gLS1pbnN0YWxsLWZvbnRzICQxICRQ
Uk9EVUNUIGluZnJhc3RydWN0dXJlLwogfQogCiBtYWluKCkgewotICAgIFBST0RVQ1RTPSggImZp
cmVmb3giICJjaHJvbWUiICkKKyAgICBpZiBbWyAkIyAtZXEgMSAmJiAiJDEiID0gIi0tcHkzIiBd
XTsgdGhlbgorICAgICAgICBQUk9EVUNUUz0oICJjaHJvbWUiICkKKyAgICBlbHNlCisgICAgICAg
IFBST0RVQ1RTPSggImZpcmVmb3giICJjaHJvbWUiICkKKyAgICBmaQogICAgIC4vd3B0IG1hbmlm
ZXN0IC0tcmVidWlsZCAtcCB+L21ldGEvTUFOSUZFU1QuanNvbgogICAgIGZvciBQUk9EVUNUIGlu
ICIke1BST0RVQ1RTW0BdfSI7IGRvCiAgICAgICAgIGlmIFtbICIkUFJPRFVDVCIgPT0gImNocm9t
ZSIgXV07IHRoZW4KLSAgICAgICAgICAgIGFkZF93cHRfaG9zdHMKLSAgICAgICAgICAgIHRlc3Rf
aW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkg
LS1jaGFubmVsIGRldiIKKyAgICAgICAgICAgIHRlc3RfaW5mcmFzdHJ1Y3R1cmUgIi0tYmluYXJ5
PSQod2hpY2ggZ29vZ2xlLWNocm9tZS11bnN0YWJsZSkgLS1jaGFubmVsIGRldiIgIiQxIgogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0X2luZnJhc3RydWN0dXJlCisgICAgICAgICAgICB0
ZXN0X2luZnJhc3RydWN0dXJlICItLWJpbmFyeT1+L2J1aWxkL2ZpcmVmb3gvZmlyZWZveCIKICAg
ICAgICAgZmkKICAgICBkb25lCiB9CiAKLW1haW4KK21haW4gJDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9i
cy5weQppbmRleCAzZDgwOWVmYTM3Y2NmZjJjMjU4MzQzYjY0NzkxNzYyZmM1MDdhOTBmLi43NjI0
ZWIwZDUxNmZjMTZhNTcyNGE2NzE0ZDI3NjdiYzRlMTIzMjVmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9q
b2JzLnB5CkBAIC0zMywxNSArMzMsMTYgQEAgam9iX3BhdGhfbWFwID0gewogICAgICJ3cHRydW5u
ZXJfdW5pdHRlc3QiOiBbInRvb2xzLyJdLAogICAgICJidWlsZF9jc3MiOiBbImNzcy8iXSwKICAg
ICAidXBkYXRlX2J1aWx0IjogWyJ1cGRhdGUtYnVpbHQtdGVzdHNcXC5zaCIsCi0gICAgICAgICAg
ICAgICAgICAgICAiMmRjb250ZXh0LyIsCiAgICAgICAgICAgICAgICAgICAgICAiaW5mcmFzdHJ1
Y3R1cmUvIiwKICAgICAgICAgICAgICAgICAgICAgICJodG1sLyIsCi0gICAgICAgICAgICAgICAg
ICAgICAib2Zmc2NyZWVuLWNhbnZhcy8iLAogICAgICAgICAgICAgICAgICAgICAgIm1pbWVzbmlm
Zi8iLAogICAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdWkvIiwKICAgICAgICAgICAgICAg
ICAgICAgICJXZWJJREwiXSwKICAgICAid3B0X2ludGVncmF0aW9uIjogWyJ0b29scy8iXSwKLSAg
ICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZyYXN0cnVjdHVyZS8iLCAidG9vbHMv
IiwgInJlc291cmNlcy8iXSwKKyAgICAid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIjogWyJpbmZy
YXN0cnVjdHVyZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzLyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VzLyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZHJpdmVyL3Rlc3RzL3N1cHBvcnQiXSwKIH0K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYW5pZmVzdF9idWlsZC5weQppbmRleCAxZTM4
OGRmYTc0MTlhMjFiMjA1MDNiMzA3NWMzNmJjMTExMzZkZDdkLi4yMGY5NmQ5YTNlZWVjNjM5OTc0
Y2E0NjFkOWQ0NWY5MWM5NmMwMTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21hbmlmZXN0X2J1aWxkLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZl
c3RfYnVpbGQucHkKQEAgLTg0LDggKzg0LDcgQEAgZGVmIHJlcXVlc3QodXJsLCBkZXNjLCBtZXRo
b2Q9Tm9uZSwgZGF0YT1Ob25lLCBqc29uX2RhdGE9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWQKICAg
ICB0cnk6CiAgICAgICAgIHJldHVybiByZXNwLmpzb24oKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9y
OgotICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGZhaWxlZDogUmV0dXJuZWQgZGF0YSB3YXMgbm90
IEpTT04gUmVzcG9uc2U6IiAlCi0gICAgICAgICAgICAgICAgICAgICAoZGVzYywgcmVzcC5zdGF0
dXNfY29kZSkpCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgZmFpbGVkOiBSZXR1cm5lZCBkYXRh
IHdhcyBub3QgSlNPTiBSZXNwb25zZToiICUgZGVzYykKICAgICAgICAgbG9nZ2VyLmVycm9yKHJl
c3AudGV4dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3ByX3ByZXZpZXcucHkKaW5kZXggYmE3
Nzc0NDQ2ZTA4MzZlMzE5YzBkMDcxZDYyNjJlNTYyZmIxNDZlMS4uYmE1OTk3ZjY4YTYxNWY0OTMy
MmFjMDA5YTE1YWViZjBhNWEwNzFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9wcl9wcmV2aWV3LnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcHJfcHJldmll
dy5weQpAQCAtMTIzLDYgKzEyMywyNyBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAKICAgICAg
ICAgcmV0dXJuIGRhdGFbJ2l0ZW1zJ10KIAorICAgIEBndWFyZCgnY29yZScpCisgICAgZGVmIHB1
bGxfcmVxdWVzdF9pc19mcm9tX2Zvcmsoc2VsZiwgcHVsbF9yZXF1ZXN0KToKKyAgICAgICAgcHJf
bnVtYmVyID0gcHVsbF9yZXF1ZXN0WydudW1iZXInXQorICAgICAgICB1cmwgPSAne30vcmVwb3Mv
e30vcHVsbHMve30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuX2hvc3QsIHNlbGYuX2dpdGh1
Yl9wcm9qZWN0LCBwcl9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgIGxvZ2dlci5pbmZvKCdD
aGVja2luZyBpZiBwdWxsIHJlcXVlc3QgJXMgaXMgZnJvbSBhIGZvcmsnLCBwcl9udW1iZXIpCisK
KyAgICAgICAgZGF0YSA9IGdoX3JlcXVlc3QoJ0dFVCcsIHVybCkKKworICAgICAgICByZXBvX25h
bWUgPSBkYXRhWydoZWFkJ11bJ3JlcG8nXVsnZnVsbF9uYW1lJ10KKyAgICAgICAgaXNfZm9yayA9
IHJlcG9fbmFtZSAhPSBzZWxmLl9naXRodWJfcHJvamVjdAorCisgICAgICAgIGxvZ2dlci5pbmZv
KAorICAgICAgICAgICAgJ1B1bGwgcmVxdWVzdCAlcyBpcyBmcm9tIFwnJXNcJy4gSXMgYSBmb3Jr
OiAlcycsCisgICAgICAgICAgICBwcl9udW1iZXIsIHJlcG9fbmFtZSwgaXNfZm9yaworICAgICAg
ICApCisKKyAgICAgICAgcmV0dXJuIGlzX2ZvcmsKKwogICAgIEBndWFyZCgnY29yZScpCiAgICAg
ZGVmIGNyZWF0ZV9yZWYoc2VsZiwgcmVmc3BlYywgcmV2aXNpb24pOgogICAgICAgICB1cmwgPSAn
e30vcmVwb3Mve30vZ2l0L3JlZnMnLmZvcm1hdChzZWxmLl9ob3N0LCBzZWxmLl9naXRodWJfcHJv
amVjdCkKQEAgLTE4MCw5ICsyMDEsOCBAQCBjbGFzcyBQcm9qZWN0KG9iamVjdCk6CiAgICAgQGd1
YXJkKCdjb3JlJykKICAgICBkZWYgdXBkYXRlX2RlcGxveW1lbnQoc2VsZiwgdGFyZ2V0LCBkZXBs
b3ltZW50LCBzdGF0ZSwgZGVzY3JpcHRpb249JycpOgogICAgICAgICBpZiBzdGF0ZSBpbiAoJ3Bl
bmRpbmcnLCAnc3VjY2VzcycpOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3N1
Ym1pc3Npb25zL3t9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0LCBkZXBsb3ltZW50
WydlbnZpcm9ubWVudCddCi0gICAgICAgICAgICApCisgICAgICAgICAgICBwcl9udW1iZXIgPSBk
ZXBsb3ltZW50WydlbnZpcm9ubWVudCddW2xlbihERVBMT1lNRU5UX1BSRUZJWCk6XQorICAgICAg
ICAgICAgZW52aXJvbm1lbnRfdXJsID0gJ3t9L3t9Jy5mb3JtYXQodGFyZ2V0LCBwcl9udW1iZXIp
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF91cmwgPSBOb25lCiAgICAg
ICAgIHVybCA9ICd7fS9yZXBvcy97fS9kZXBsb3ltZW50cy97fS9zdGF0dXNlcycuZm9ybWF0KApA
QCAtMjQ2LDEzICsyNjYsMTYgQEAgZGVmIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1ZXN0
KToKIAogICAgIHJldHVybiBGYWxzZQogCi1kZWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVx
dWVzdCk6CitkZWYgc2hvdWxkX2JlX21pcnJvcmVkKHByb2plY3QsIHB1bGxfcmVxdWVzdCk6CiAg
ICAgcmV0dXJuICgKLSAgICAgICAgaXNfb3BlbihwdWxsX3JlcXVlc3QpIGFuZAotICAgICAgICBw
dWxsX3JlcXVlc3RbJ3VzZXInXVsnbG9naW4nXSBub3QgaW4gQVVUT01BVElPTl9HSVRIVUJfVVNF
UlMgYW5kICgKLSAgICAgICAgICAgIHB1bGxfcmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10g
aW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJT05TIG9yCi0gICAgICAgICAgICBoYXNfbWlycm9y
aW5nX2xhYmVsKHB1bGxfcmVxdWVzdCkKLSAgICAgICAgKQorICAgICAgICBpc19vcGVuKHB1bGxf
cmVxdWVzdCkgYW5kICgKKyAgICAgICAgICAgIGhhc19taXJyb3JpbmdfbGFiZWwocHVsbF9yZXF1
ZXN0KSBvciAoCisgICAgICAgICAgICAgICAgcHVsbF9yZXF1ZXN0Wyd1c2VyJ11bJ2xvZ2luJ10g
bm90IGluIEFVVE9NQVRJT05fR0lUSFVCX1VTRVJTIGFuZAorICAgICAgICAgICAgICAgIHB1bGxf
cmVxdWVzdFsnYXV0aG9yX2Fzc29jaWF0aW9uJ10gaW4gVFJVU1RFRF9BVVRIT1JfQVNTT0NJQVRJ
T05TCisgICAgICAgICAgICApCisgICAgICAgICkgYW5kCisgICAgICAgICMgUXVlcnkgdGhpcyBs
YXN0IGFzIGl0IHJlcXVpcmVzIGFub3RoZXIgQVBJIGNhbGwgdG8gdmVyaWZ5CisgICAgICAgIG5v
dCBwcm9qZWN0LnB1bGxfcmVxdWVzdF9pc19mcm9tX2ZvcmsocHVsbF9yZXF1ZXN0KQogICAgICkK
IAogZGVmIGlzX2RlcGxveWVkKGhvc3QsIGRlcGxveW1lbnQpOgpAQCAtMjkxLDcgKzMxNCw3IEBA
IGRlZiBzeW5jaHJvbml6ZShob3N0LCBnaXRodWJfcHJvamVjdCwgd2luZG93KToKICAgICAgICAg
cmV2aXNpb25fdHJ1c3RlZCA9IHJlbW90ZS5nZXRfcmV2aXNpb24ocmVmc3BlY190cnVzdGVkKQog
ICAgICAgICByZXZpc2lvbl9vcGVuID0gcmVtb3RlLmdldF9yZXZpc2lvbihyZWZzcGVjX29wZW4p
CiAKLSAgICAgICAgaWYgc2hvdWxkX2JlX21pcnJvcmVkKHB1bGxfcmVxdWVzdCk6CisgICAgICAg
IGlmIHNob3VsZF9iZV9taXJyb3JlZChwcm9qZWN0LCBwdWxsX3JlcXVlc3QpOgogICAgICAgICAg
ICAgbG9nZ2VyLmluZm8oJ1B1bGwgUmVxdWVzdCBzaG91bGQgYmUgbWlycm9yZWQnKQogCiAgICAg
ICAgICAgICBpZiByZXZpc2lvbl90cnVzdGVkIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVu
X3RjLnB5CmluZGV4IGY5MDg2YTMxYmQ5M2JhZjcyODE5ZmM0NTBmOTBhMjkwZDY1Njc0ZmQuLmE1
YThjYTdkYjI5YWI0ODRmZTM5NzQ3NWY5YjVjZmM0MTJkNjUxN2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcnVuX3RjLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvcnVuX3RjLnB5CkBAIC0zNiwxMSArMzYsMTUgQEAgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBH
aXRIdWIgZXZlbnQgcGF5bG9hZC4KICIiIgogCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBmbm1h
dGNoCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5
cworaW1wb3J0IHRhcmZpbGUKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCB6
aXBmaWxlCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgU29ja2V0RXJyb3IgICMgTk9RQTog
TjgxMgogaW1wb3J0IGVycm5vCiB0cnk6CkBAIC0xNDcsMTMgKzE1MSwxNCBAQCBkZWYgaW5zdGFs
bF9jaHJvbWUoY2hhbm5lbCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXpl
ZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKICAgICBkZXN0ID0gb3MucGF0aC5q
b2luKCIvdG1wIiwgZGViX2FyY2hpdmUpCi0gICAgcmVzcCA9IHVybG9wZW4oImh0dHBzOi8vZGwu
Z29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJXMiICUgZGViX2FyY2hpdmUpCisgICAgZGViX3VybCA9
ICJodHRwczovL2RsLmdvb2dsZS5jb20vbGludXgvZGlyZWN0LyVzIiAlIGRlYl9hcmNoaXZlCiAg
ICAgd2l0aCBvcGVuKGRlc3QsICJ3IikgYXMgZjoKLSAgICAgICAgZi53cml0ZShyZXNwLnJlYWQo
KSkKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgZGViX3VybCkKIAogICAg
IHJ1bihbInN1ZG8iLCAiYXB0LWdldCIsICItcXF5IiwgInVwZGF0ZSJdKQogICAgIHJ1bihbInN1
ZG8iLCAiZ2RlYmkiLCAiLXFuIiwgIi90bXAvJXMiICUgZGViX2FyY2hpdmVdKQogCisKIGRlZiBp
bnN0YWxsX3dlYmtpdGd0a19mcm9tX2FwdF9yZXBvc2l0b3J5KGNoYW5uZWwpOgogICAgICMgQ29u
ZmlndXJlIHdlYmtpdGd0ay5vcmcvZGViaWFuIHJlcG9zaXRvcnkgZm9yICRjaGFubmVsIGFuZCBw
aW4gaXQgd2l0aCBtYXhpbXVtIHByaW9yaXR5CiAgICAgcnVuKFsic3VkbyIsICJhcHQta2V5Iiwg
ImFkdiIsICItLWZldGNoLWtleXMiLCAiaHR0cHM6Ly93ZWJraXRndGsub3JnL2RlYmlhbi9hcHQu
a2V5Il0pCkBAIC0xNjksMTUgKzE3NCwxNiBAQCBkZWYgaW5zdGFsbF93ZWJraXRndGtfZnJvbV9h
cHRfcmVwb3NpdG9yeShjaGFubmVsKToKICAgICBydW4oWyJzdWRvIiwgImFwdC1nZXQiLCAiLXFx
eSIsICItdCIsICJiaW9uaWMtd3B0LXdlYmtpdC11cGRhdGVzIiwgImluc3RhbGwiLCAid2Via2l0
Mmd0ay1kcml2ZXIiXSkKIAogCi0jIERvd25sb2FkIGFuIFVSTCBpbiBjaHVua3MgYW5kIHNhdmVz
IGl0IHRvIGEgZmlsZSBkZXNjcmlwdG9yICh0cnVuY2F0aW5nIGl0KQotIyBJdCBkb2Vzbid0IGNs
b3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgotIyBJdCByZXRy
aWVzIHRoZSBkb3dubG9hZCBpbiBjYXNlIG9mIEVDT05OUkVTRVQgdXAgdG8gbWF4X3JldHJpZXMu
Ci1kZWYgZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZmQsIHVybCwgbWF4X3JldHJpZXM9Myk6
Ci0gICAgZG93bmxvYWRfc3VjY2VlZCA9IEZhbHNlCi0gICAgaWYgbWF4X3JldHJpZXMgPCAwOgot
ICAgICAgICBtYXhfcmV0cmllcyA9IDAKLSAgICBmb3IgY3VycmVudF9yZXRyeSBpbiByYW5nZSht
YXhfcmV0cmllcysxKToKK2RlZiBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBt
YXhfcmV0cmllcz01KToKKyAgICAiIiJEb3dubG9hZCBhbiBVUkwgaW4gY2h1bmtzIGFuZCBzYXZl
cyBpdCB0byBhIGZpbGUgZGVzY3JpcHRvciAodHJ1bmNhdGluZyBpdCkKKyAgICBJdCBkb2Vzbid0
IGNsb3NlIHRoZSBkZXNjcmlwdG9yLCBidXQgZmx1c2hlcyBpdCBvbiBzdWNjZXNzLgorICAgIEl0
IHJldHJpZXMgdGhlIGRvd25sb2FkIGluIGNhc2Ugb2YgRUNPTk5SRVNFVCB1cCB0byBtYXhfcmV0
cmllcy4iIiIKKyAgICBpZiBtYXhfcmV0cmllcyA8IDE6CisgICAgICAgIG1heF9yZXRyaWVzID0g
MQorICAgIHdhaXQgPSAyCisgICAgZm9yIGN1cnJlbnRfcmV0cnkgaW4gcmFuZ2UoMSwgbWF4X3Jl
dHJpZXMrMSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJJTkZPOiBEb3dubG9h
ZGluZyAlcyBUcnkgJWQvJWQiICUgKHVybCwgY3VycmVudF9yZXRyeSwgbWF4X3JldHJpZXMpKQog
ICAgICAgICAgICAgcmVzcCA9IHVybG9wZW4odXJsKQogICAgICAgICAgICAgIyBXZSBtYXkgY29t
ZSBoZXJlIGluIGEgcmV0cnksIGVuc3VyZSB0byB0cnVuY2F0ZSBmZCBiZWZvcmUgc3RhcnQgd3Jp
dGluZy4KICAgICAgICAgICAgIGZkLnNlZWsoMCkKQEAgLTE4OCwyMiArMTk0LDIzIEBAIGRlZiBk
b3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcihmZCwgdXJsLCBtYXhfcmV0cmllcz0zKToKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsgICMgRG93bmxvYWQgZmluaXNoZWQKICAgICAgICAgICAgICAg
ICBmZC53cml0ZShjaHVuaykKICAgICAgICAgICAgIGZkLmZsdXNoKCkKLSAgICAgICAgICAgIGRv
d25sb2FkX3N1Y2NlZWQgPSBUcnVlCi0gICAgICAgICAgICBicmVhayAgIyBTdWNlc3MKKyAgICAg
ICAgICAgICMgU3VjY2VzcworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGV4Y2VwdCBTb2Nr
ZXRFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFU0VU
OgotICAgICAgICAgICAgICAgIHJhaXNlICAjIFVua25vd24gZXJyb3IKLSAgICAgICAgICAgIGlm
IGN1cnJlbnRfcmV0cnkgPCBtYXhfcmV0cmllczoKLSAgICAgICAgICAgICAgICBwcmludCgiRVJS
T1I6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gUmV0cnlpbmcgLi4uIikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZSAgIyBSZXRyeQotICAgIHJldHVybiBkb3dubG9hZF9zdWNjZWVkCisgICAg
ICAgICAgICBpZiBjdXJyZW50X3JldHJ5IDwgbWF4X3JldHJpZXMgYW5kIGUuZXJybm8gPT0gZXJy
bm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAjIFJldHJ5CisgICAgICAgICAgICAgICAg
cHJpbnQoIkVSUk9SOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuIFJldHJ5aW5nIGFmdGVyICVk
cy4uLiIgJSB3YWl0KQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICAgICAg
ICAgICAgICB3YWl0ICo9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBN
YXhpbXVtIHJldHJpZXMgb3IgdW5rbm93biBlcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlCiAK
IAogZGVmIGluc3RhbGxfd2Via2l0Z3RrX2Zyb21fdGFyYmFsbF9idW5kbGUoY2hhbm5lbCk6CiAg
ICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4PSIudGFyLnh6IikgYXMg
dGVtcF90YXJiYWxsOgogICAgICAgICBkb3dubG9hZF91cmwgPSAiaHR0cHM6Ly93ZWJraXRndGsu
b3JnL2J1aWx0LXByb2R1Y3RzL25pZ2h0bHkvd2Via2l0Z3RrLW5pZ2h0bHktYnVpbGQtbGFzdC50
YXIueHoiCi0gICAgICAgIGlmIG5vdCBkb3dubG9hZF91cmxfdG9fZGVzY3JpcHRvcih0ZW1wX3Rh
cmJhbGwsIGRvd25sb2FkX3VybCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNh
bid0IGRvd25sb2FkICVzLiBBYm9ydGluZyIgJSBkb3dubG9hZF91cmwpCisgICAgICAgIGRvd25s
b2FkX3VybF90b19kZXNjcmlwdG9yKHRlbXBfdGFyYmFsbCwgZG93bmxvYWRfdXJsKQogICAgICAg
ICBydW4oWyJzdWRvIiwgInRhciIsICJ4ZmEiLCB0ZW1wX3RhcmJhbGwubmFtZSwgIi1DIiwgIi8i
XSkKICAgICAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAgICAgcnVuKFsic3VkbyIsICJhcHQtZ2V0
IiwgIi1xcXkiLCAidXBkYXRlIl0pCkBAIC0yMTgsNiArMjI1LDcgQEAgZGVmIGluc3RhbGxfd2Vi
a2l0Z3RrKGNoYW5uZWwpOgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVu
cmVjb2duaXplZCByZWxlYXNlIGNoYW5uZWw6ICVzIiAlIGNoYW5uZWwpCiAKKwogZGVmIHN0YXJ0
X3h2ZmIoKToKICAgICBzdGFydChbInN1ZG8iLCAiWHZmYiIsIG9zLmVudmlyb25bIkRJU1BMQVki
XSwgIi1zY3JlZW4iLCAiMCIsCiAgICAgICAgICAgICIlc3glc3glcyIgJSAob3MuZW52aXJvblsi
U0NSRUVOX1dJRFRIIl0sCkBAIC0yNDYsNyArMjU0LDY3IEBAIGRlZiBzZXRfdmFyaWFibGVzKGV2
ZW50KToKICAgICAgICAgb3MuZW52aXJvblsiR0lUSFVCX0JSQU5DSCJdID0gYnJhbmNoCiAKIAor
ZGVmIHRhc2tfdXJsKHRhc2tfaWQpOgorICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NM
VVNURVJfUk9PVF9VUkwnXQorICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVy
Lm5ldCc6CisgICAgICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5u
ZXQvdjEvdGFzayIKKyAgICBlbHNlOgorICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAi
L2FwaS9xdWV1ZS92MS90YXNrIgorCisgICAgcmV0dXJuICIlcy8lcyIgJSAocXVldWVfYmFzZSwg
dGFza19pZCkKKworCitkZWYgZG93bmxvYWRfYXJ0aWZhY3RzKGFydGlmYWN0cyk6CisgICAgYXJ0
aWZhY3RfbGlzdF9ieV90YXNrID0ge30KKyAgICBmb3IgYXJ0aWZhY3QgaW4gYXJ0aWZhY3RzOgor
ICAgICAgICBiYXNlX3VybCA9IHRhc2tfdXJsKGFydGlmYWN0WyJ0YXNrIl0pCisgICAgICAgIGlm
IGFydGlmYWN0WyJ0YXNrIl0gbm90IGluIGFydGlmYWN0X2xpc3RfYnlfdGFzazoKKyAgICAgICAg
ICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpIGFzIGY6CisgICAgICAgICAgICAgICAg
ZG93bmxvYWRfdXJsX3RvX2Rlc2NyaXB0b3IoZiwgYmFzZV91cmwgKyAiL2FydGlmYWN0cyIpCisg
ICAgICAgICAgICAgICAgZi5zZWVrKDApCisgICAgICAgICAgICAgICAgYXJ0aWZhY3RzX2RhdGEg
PSBqc29uLmxvYWQoZikKKyAgICAgICAgICAgIGFydGlmYWN0X2xpc3RfYnlfdGFza1thcnRpZmFj
dFsidGFzayJdXSA9IGFydGlmYWN0c19kYXRhCisKKyAgICAgICAgYXJ0aWZhY3RzX2RhdGEgPSBh
cnRpZmFjdF9saXN0X2J5X3Rhc2tbYXJ0aWZhY3RbInRhc2siXV0KKyAgICAgICAgcHJpbnQoIkRF
QlVHOiBHb3QgYXJ0aWZhY3RzICVzIiAlIGFydGlmYWN0c19kYXRhKQorICAgICAgICBmb3VuZCA9
IEZhbHNlCisgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gYXJ0aWZhY3RzX2RhdGFbImFydGlmYWN0
cyJdOgorICAgICAgICAgICAgcHJpbnQoIkRFQlVHOiBjYW5kaWRhdGU6ICVzIGdsb2I6ICVzIiAl
IChjYW5kaWRhdGVbIm5hbWUiXSwgYXJ0aWZhY3RbImdsb2IiXSkpCisgICAgICAgICAgICBpZiBm
bm1hdGNoLmZubWF0Y2goY2FuZGlkYXRlWyJuYW1lIl0sIGFydGlmYWN0WyJnbG9iIl0pOgorICAg
ICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIHByaW50KCJJTkZPOiBG
ZXRjaGluZyBhcml0ZmFjdCAlcyBmcm9tIHRhc2sgJXMiICUgKGNhbmRpZGF0ZVsibmFtZSJdLCBh
cnRpZmFjdFsidGFzayJdKSkKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBjYW5kaWRhdGVb
Im5hbWUiXS5yc3BsaXQoIi8iLCAxKVsxXQorICAgICAgICAgICAgICAgIHVybCA9IGJhc2VfdXJs
ICsgIi9hcnRpZmFjdHMvIiArIGNhbmRpZGF0ZVsibmFtZSJdCisgICAgICAgICAgICAgICAgZGVz
dF9wYXRoID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigifiIsIGFydGlmYWN0WyJk
ZXN0Il0sIGZpbGVfbmFtZSkpCisgICAgICAgICAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUoZGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhk
ZXN0X2Rpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAg
ICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0X3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkX3VybF90b19kZXNjcmlwdG9yKGYsIHVybCkKKworICAgICAgICAg
ICAgICAgIGlmIGFydGlmYWN0LmdldCgiZXh0cmFjdCIpOgorICAgICAgICAgICAgICAgICAgICB1
bnBhY2soZGVzdF9wYXRoKQorICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICBwcmlu
dCgiV0FSTklORzogTm8gYXJ0aWZhY3QgZm91bmQgbWF0Y2hpbmcgJXMgaW4gdGFzayAlcyIgJSAo
YXJ0aWZhY3RbImdsb2IiXSwgYXJ0aWZhY3RbInRhc2siXSkpCisKKworZGVmIHVucGFjayhwYXRo
KToKKyAgICBkZXN0ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCisgICAgaWYgdGFyZmlsZS5pc190
YXJmaWxlKHBhdGgpOgorICAgICAgICBydW4oWyJ0YXIiLCAiLXhmIiwgcGF0aF0sIGN3ZD1vcy5w
YXRoLmRpcm5hbWUocGF0aCkpCisgICAgZWxpZiB6aXBmaWxlLmlzX3ppcGZpbGUocGF0aCk6Cisg
ICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHBhdGgpIGFzIGFyY2hpdmU6CisgICAgICAgICAg
ICBhcmNoaXZlLmV4dHJhY3RhbGwoZGVzdCkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiRVJS
T1I6IERvbid0IGtub3cgaG93IHRvIGV4dHJhY3QgJXMiICUgcGF0aCkKKyAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uCisKKwogZGVmIHNldHVwX2Vudmlyb25tZW50KGFyZ3MpOgorICAgIGlmICJUQVNL
X0FSVElGQUNUUyIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJ0aWZhY3RzID0ganNvbi5sb2Fk
cyhvcy5lbnZpcm9uWyJUQVNLX0FSVElGQUNUUyJdKQorICAgICAgICBkb3dubG9hZF9hcnRpZmFj
dHMoYXJ0aWZhY3RzKQorCiAgICAgaWYgYXJncy5ob3N0c19maWxlOgogICAgICAgICBtYWtlX2hv
c3RzX2ZpbGUoKQogCkBAIC0zNjQsMTYgKzQzMiwxMCBAQCBkZWYgZmV0Y2hfZXZlbnRfZGF0YSgp
OgogICAgICAgICAjIEZvciBleGFtcGxlIHVuZGVyIGxvY2FsIHRlc3RpbmcKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIHJvb3RfdXJsID0gb3MuZW52aXJvblsnVEFTS0NMVVNURVJfUk9PVF9V
UkwnXQotICAgIGlmIHJvb3RfdXJsID09ICdodHRwczovL3Rhc2tjbHVzdGVyLm5ldCc6Ci0gICAg
ICAgIHF1ZXVlX2Jhc2UgPSAiaHR0cHM6Ly9xdWV1ZS50YXNrY2x1c3Rlci5uZXQvdjEvdGFzayIK
LSAgICBlbHNlOgotICAgICAgICBxdWV1ZV9iYXNlID0gcm9vdF91cmwgKyAiL2FwaS9xdWV1ZS92
MS90YXNrIgotCi0KLSAgICByZXNwID0gdXJsb3BlbigiJXMvJXMiICUgKHF1ZXVlX2Jhc2UsIHRh
c2tfaWQpKQotCi0gICAgdGFza19kYXRhID0ganNvbi5sb2FkKHJlc3ApCisgICAgd2l0aCB0ZW1w
ZmlsZS5UZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgZG93bmxvYWRfdXJsX3RvX2Rlc2Ny
aXB0b3IoZiwgdGFza191cmwodGFza19pZCkpCisgICAgICAgIGYuc2VlaygwKQorICAgICAgICB0
YXNrX2RhdGEgPSBqc29uLmxvYWQoZikKICAgICBldmVudF9kYXRhID0gdGFza19kYXRhLmdldCgi
ZXh0cmEiLCB7fSkuZ2V0KCJnaXRodWJfZXZlbnQiKQogICAgIGlmIGV2ZW50X2RhdGEgaXMgbm90
IE5vbmU6CiAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGV2ZW50X2RhdGEpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rh
c2tjbHVzdGVyLXJ1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CmluZGV4IGFjNWFiYzEyYjFmMTdkMmZj
OTNjNmFjNTYzNmJmZDZmZTdjYWZhMDQuLmQ4ZTQyY2NlYTIxMTI2OTRjNmQzYjhiMWFhNmNhNzAz
NGVhMjIyODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFza2NsdXN0ZXItcnVuLnB5
CkBAIC05LDEwICs5LDE4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKIGJyb3dz
ZXJfc3BlY2lmaWNfYXJncyA9IHsKLSAgICAiZmlyZWZveCI6IFsiLS1pbnN0YWxsLWJyb3dzZXIi
XSwKICAgICAic2Vydm8iOiBbIi0taW5zdGFsbC1icm93c2VyIiwgIi0tcHJvY2Vzc2VzPTEyIl0K
IH0KIAorZGVmIGdldF9icm93c2VyX2FyZ3MocHJvZHVjdCk6CisgICAgaWYgcHJvZHVjdCA9PSAi
ZmlyZWZveCI6CisgICAgICAgIGxvY2FsX2JpbmFyeSA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5w
YXRoLmpvaW4oIn4iLCAiYnVpbGQiLCAiZmlyZWZveCIsICJmaXJlZm94IikpCisgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGxvY2FsX2JpbmFyeSk6CisgICAgICAgICAgICByZXR1cm4gWyItLWJp
bmFyeT0lcyIgJSBsb2NhbF9iaW5hcnldCisgICAgICAgIHByaW50KCJXQVJOSU5HOiBMb2NhbCBm
aXJlZm94IGJpbmFyeSBub3QgZm91bmQiKQorICAgICAgICByZXR1cm4gWyItLWluc3RhbGwtYnJv
d3NlciJdCisgICAgcmV0dXJuIGJyb3dzZXJfc3BlY2lmaWNfYXJncy5nZXQocHJvZHVjdCwgW10p
CisKIAogZGVmIGZpbmRfd3B0cmVwb3J0KGFyZ3MpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFy
Z3VtZW50UGFyc2VyKCkKQEAgLTY2LDcgKzc0LDcgQEAgZGVmIG1haW4ocHJvZHVjdCwgY29tbWl0
X3JhbmdlLCB3cHRfYXJncyk6CiAgICAgICAgICItLW5vLWhlYWRsZXNzIiwKICAgICAgICAgIi0t
dmVyaWZ5LWxvZy1mdWxsIgogICAgIF0KLSAgICB3cHRfYXJncyArPSBicm93c2VyX3NwZWNpZmlj
X2FyZ3MuZ2V0KHByb2R1Y3QsIFtdKQorICAgIHdwdF9hcmdzICs9IGdldF9icm93c2VyX2FyZ3Mo
cHJvZHVjdCkKIAogICAgICMgSGFjayB0byBydW4gc2Vydm8gd2l0aCBvbmUgcHJvY2VzcyBvbmx5
IGZvciB3ZHNwZWMKICAgICBpZiBwcm9kdWN0ID09ICJzZXJ2byIgYW5kICItLXRlc3QtdHlwZT13
ZHNwZWMiIGluIHdwdF9hcmdzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAppbmRl
eCAxMWYzNjdmOTg2Zjk3ZmRiZmU0MGYwOWIyYWU0MTE0ZjI2MzkxNmY3Li43ODVjODJjY2EzOWNk
ZmIxODZmZGEyNDEwM2E1YTZmZDY0OWJlZTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JFQURNRS5tZAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL1JF
QURNRS5tZApAQCAtNDAsNiArNDAsMTQgQEAgdG9wLWxldmVsIHByb3BlcnRpZXM6CiAqIGBuYW1l
YDogT3B0aW9uYWwgU3RyaW5nLiBOYW1lIHRvIHVzZSBmb3IgdGhlIHRhc2sgb3ZlcnJpZGluZyB0
aGUKICAgcHJvcGVydHkgbmFtZS4gVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBz
dWJzdGl0dXRpb25zCiAgIGRlc2NyaWJlZCBiZWxvdy4KKyogYGRvd25sb2FkLWFydGlmYWN0c2A6
IE9wdGlvbmFsIE9iamVjdC4gQW4gYXJ0aWZhY3QgdG8gZG93bmxvYWQgZnJvbQorICBhIHRhc2sg
dGhhdCB0aGlzIHRhc2sgZGVwZW5kcyBvbi4gVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzOgorICAtIGB0YXNrYCAtIE5hbWUgb2YgdGhlIHRhc2sgcHJvZHVjaW5nIHRoZSBhcnRpZmFj
dAorICAtIGBnbG9iYCAtIEEgZ2xvYiBwYXR0ZXJuIGZvciB0aGUgZmlsZW5hbWUgb2YgdGhlIGFy
dGlmYWN0CisgIC0gYGRlc3RgIC0gQSBkaXJlY3RvcnkgcmVsdGl2ZSB0byB0aGUgaG9tZSBkaXJl
Y3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UKKyAgICAgICAgICAgICB0aGUgYXJ0aWZhY3QKKyAgLSBg
ZXh0cmFjdGAgLSBPcHRpb25hbC4gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhbiBhcmNo
aXZlIGFydGlmYWN0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dHJhY3RlZCBpbi1wbGFj
ZS4KIAogIyMgVGFzayBFeHBhbnNpb25zCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNpb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2RlY2lz
aW9uLnB5CmluZGV4IDBjOTM1YjkzZjhlZTg3ZjY2ZGFkZWZkZGQzYTExNjE2MGVkOWRkM2YuLmY4
ZjE4NmY3NDRkODA4Mjc5MGE4YzNiZWM4NjU0ZmExNWNhN2YzZTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVjaXNp
b24ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9kZWNpc2lvbi5weQpAQCAtMTk5LDYgKzE5OSw3IEBAIGRlZiBidWlsZF9mdWxs
X2NvbW1hbmQoZXZlbnQsIHRhc2spOgogfi9zdGFydC5zaCBcCiAgICUocmVwb191cmwpcyBcCiAg
ICUoZmV0Y2hfcmVmKXM7CitzdWRvIGFkZC1hcHQtcmVwb3NpdG9yeSBwcGE6ZGVhZHNuYWtlcy9w
cGEKICUoaW5zdGFsbF9zdHIpcwogY2Qgd2ViLXBsYXRmb3JtLXRlc3RzOwogLi90b29scy9jaS9y
dW5fdGMucHkgJShvcHRpb25zX3N0cilzIC0tICUodGFza19jbWQpczsKQEAgLTIxMyw3ICsyMTQs
NyBAQCBkZWYgZ2V0X293bmVyKGV2ZW50KToKICAgICByZXR1cm4gIndlYi1wbGF0Zm9ybS10ZXN0
c0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20iCiAKIAotZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50
LCB0YXNrLCB0YXNrZ3JvdXBfaWQsIGRlcGVuZHNfb25faWRzKToKK2RlZiBjcmVhdGVfdGNfdGFz
ayhldmVudCwgdGFzaywgdGFza2dyb3VwX2lkLCBkZXBlbmRzX29uX2lkcywgZW52X2V4dHJhPU5v
bmUpOgogICAgIGNvbW1hbmQgPSBidWlsZF9mdWxsX2NvbW1hbmQoZXZlbnQsIHRhc2spCiAgICAg
dGFza19pZCA9IHRhc2tjbHVzdGVyLnNsdWdJZCgpCiAgICAgdGFza19kYXRhID0gewpAQCAtMjQw
LDEyICsyNDEsMjQgQEAgZGVmIGNyZWF0ZV90Y190YXNrKGV2ZW50LCB0YXNrLCB0YXNrZ3JvdXBf
aWQsIGRlcGVuZHNfb25faWRzKToKICAgICAgICAgICAgICJnaXRodWJfZXZlbnQiOiBqc29uLmR1
bXBzKGV2ZW50KQogICAgICAgICB9CiAgICAgfQorICAgIGlmIGVudl9leHRyYToKKyAgICAgICAg
dGFza19kYXRhWyJwYXlsb2FkIl1bImVudiJdLnVwZGF0ZShlbnZfZXh0cmEpCiAgICAgaWYgZGVw
ZW5kc19vbl9pZHM6CiAgICAgICAgIHRhc2tfZGF0YVsiZGVwZW5kZW5jaWVzIl0gPSBkZXBlbmRz
X29uX2lkcwogICAgICAgICB0YXNrX2RhdGFbInJlcXVpcmVzIl0gPSAiYWxsLWNvbXBsZXRlZCIK
ICAgICByZXR1cm4gdGFza19pZCwgdGFza19kYXRhCiAKIAorZGVmIGdldF9hcnRpZmFjdF9kYXRh
KGFydGlmYWN0LCB0YXNrX2lkX21hcCk6CisgICAgdGFza19pZCwgZGF0YSA9IHRhc2tfaWRfbWFw
W2FydGlmYWN0WyJ0YXNrIl1dCisgICAgcmV0dXJuIHsKKyAgICAgICAgInRhc2siOiB0YXNrX2lk
LAorICAgICAgICAiZ2xvYiI6IGFydGlmYWN0WyJnbG9iIl0sCisgICAgICAgICJkZXN0IjogYXJ0
aWZhY3RbImRlc3QiXSwKKyAgICAgICAgImV4dHJhY3QiOiBhcnRpZmFjdC5nZXQoImV4dHJhY3Qi
LCBGYWxzZSkKKyAgICB9CisKKwogZGVmIGJ1aWxkX3Rhc2tfZ3JhcGgoZXZlbnQsIGFsbF90YXNr
cywgdGFza3MpOgogICAgIHRhc2tfaWRfbWFwID0gT3JkZXJlZERpY3QoKQogICAgIHRhc2tncm91
cF9pZCA9IG9zLmVudmlyb24uZ2V0KCJUQVNLX0lEIiwgdGFza2NsdXN0ZXIuc2x1Z0lkKCkpCkBA
IC0yNTgsNyArMjcxLDE0IEBAIGRlZiBidWlsZF90YXNrX2dyYXBoKGV2ZW50LCBhbGxfdGFza3Ms
IHRhc2tzKToKICAgICAgICAgICAgICAgICAgICAgYWRkX3Rhc2soZGVwZW5kc19uYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGFza3NbZGVwZW5kc19uYW1lXSkKICAgICAg
ICAgICAgICAgICBkZXBlbmRzX29uX2lkcy5hcHBlbmQodGFza19pZF9tYXBbZGVwZW5kc19uYW1l
XVswXSkKLSAgICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQs
IHRhc2ssIHRhc2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMpCisgICAgICAgIGVudl9leHRyYSA9
IHt9CisgICAgICAgIGlmICJkb3dubG9hZC1hcnRpZmFjdHMiIGluIHRhc2s6CisgICAgICAgICAg
ICBlbnZfZXh0cmFbIlRBU0tfQVJUSUZBQ1RTIl0gPSBqc29uLmR1bXBzKAorICAgICAgICAgICAg
ICAgIFtnZXRfYXJ0aWZhY3RfZGF0YShhcnRpZmFjdCwgdGFza19pZF9tYXApCisgICAgICAgICAg
ICAgICAgIGZvciBhcnRpZmFjdCBpbiB0YXNrWyJkb3dubG9hZC1hcnRpZmFjdHMiXV0pCisKKyAg
ICAgICAgdGFza19pZCwgdGFza19kYXRhID0gY3JlYXRlX3RjX3Rhc2soZXZlbnQsIHRhc2ssIHRh
c2tncm91cF9pZCwgZGVwZW5kc19vbl9pZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudl9leHRyYT1lbnZfZXh0cmEpCiAgICAgICAgIHRhc2tfaWRfbWFw
W3Rhc2tfbmFtZV0gPSAodGFza19pZCwgdGFza19kYXRhKQogCiAgICAgZm9yIHRhc2tfbmFtZSwg
dGFzayBpbiBpdGVyaXRlbXModGFza3MpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90ZXN0LnltbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFz
a3MvdGVzdC55bWwKaW5kZXggZTgwZTc5NDIwM2VkY2EzYzhkNWYxOWVhOTgzM2E0Zjc5ZTk3OWYw
OC4uMzE4NDM3YTgwZWMzMjQwNzIxYTE3Y2M2MjUzZjI0MTEwOTAzOGI2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
YXNrcy90ZXN0LnltbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCkBAIC00LDcgKzQsNyBAQCBjb21wb25l
bnRzOgogICAgIHdvcmtlclR5cGU6IGNpCiAgICAgc2NoZWR1bGVySWQ6IHRhc2tjbHVzdGVyLWdp
dGh1YgogICAgIGRlYWRsaW5lOiAiMjQgaG91cnMiCi0gICAgaW1hZ2U6IGhhcmpnYW0vd2ViLXBs
YXRmb3JtLXRlc3RzOjAuMzQKKyAgICBpbWFnZTogd2VicGxhdGZvcm10ZXN0cy93cHQ6MC4zNwog
ICAgIG1heFJ1blRpbWU6IDcyMDAKICAgICBhcnRpZmFjdHM6CiAgICAgICBwdWJsaWMvcmVzdWx0
czoKQEAgLTgyLDYgKzgyLDExIEBAIGNvbXBvbmVudHM6CiAgIGJyb3dzZXItZmlyZWZveDoKICAg
ICBkZXBlbmRzLW9uOgogICAgICAgLSBkb3dubG9hZC1maXJlZm94LSR7dmFycy5jaGFubmVsfQor
ICAgIGRvd25sb2FkLWFydGlmYWN0czoKKyAgICAgIC0gdGFzazogZG93bmxvYWQtZmlyZWZveC0k
e3ZhcnMuY2hhbm5lbH0KKyAgICAgICAgZ2xvYjogcHVibGljL3Jlc3VsdHMvZmlyZWZveC0ke3Zh
cnMuY2hhbm5lbH0uKgorICAgICAgICBkZXN0OiBidWlsZC8KKyAgICAgICAgZXh0cmFjdDogdHJ1
ZQogCiAgIGJyb3dzZXItd2Via2l0Z3RrX21pbmlicm93c2VyOiB7fQogCkBAIC05OCw4ICsxMDMs
MTUgQEAgY29tcG9uZW50czoKICAgICBlbnY6CiAgICAgICBUT1hFTlY6IHB5MzYKICAgICAgIFBZ
X0NPTE9SUzogMAorCisgIHRveC1weXRob24zODoKKyAgICBlbnY6CisgICAgICBUT1hFTlY6IHB5
MzgKKyAgICAgIFBZX0NPTE9SUzogMAogICAgIGluc3RhbGw6Ci0gICAgICAtIHB5dGhvbjMtcGlw
CisgICAgICAtIHB5dGhvbjMuOAorICAgICAgLSBweXRob24zLjgtZGlzdHV0aWxzCisgICAgICAt
IHB5dGhvbjMuOC1kZXYKIAogICB0ZXN0cy1hZmZlY3RlZDoKICAgICBvcHRpb25zOgpAQCAtMjE4
LDYgKzIzMCw3IEBAIHRhc2tzOgogICAgICAgICAgICAgICAtLQogICAgICAgICAgICAgICAtLWNo
YW5uZWw9JHt2YXJzLmNoYW5uZWx9CiAgICAgICAgICAgICAgIC0tdmVyaWZ5CisgICAgICAgICAg
ICAgIC0tdmVyaWZ5LW5vLWNoYW9zLW1vZGUKIAogICAgICAgICAtIHdwdC0ke3ZhcnMuYnJvd3Nl
cn0tJHt2YXJzLmNoYW5uZWx9LXJlc3VsdHM6CiAgICAgICAgICAgICB1c2U6CkBAIC0yNzIsNyAr
Mjg1LDcgQEAgdGFza3M6CiAgICAgICAgIGRvd25sb2FkLWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9
OgogICAgICAgICAgIHVzZToKICAgICAgICAgICAgIC0gd3B0LWJhc2UKLSAgICAgICAgICBjb21t
YW5kOiAiLi93cHQgaW5zdGFsbCAtLWRvd25sb2FkLW9ubHkgLS1kZXN0aW5hdGlvbiAvaG9tZS90
ZXN0L2FydGlmYWN0cy8gLS1jaGFubmVsPSR7dmFycy5jaGFubmVsfSBmaXJlZm94IGJyb3dzZXIi
CisgICAgICAgICAgY29tbWFuZDogIi4vd3B0IGluc3RhbGwgLS1kb3dubG9hZC1vbmx5IC0tZGVz
dGluYXRpb24gL2hvbWUvdGVzdC9hcnRpZmFjdHMvIC0tY2hhbm5lbD0ke3ZhcnMuY2hhbm5lbH0g
IC0tcmVuYW1lPWZpcmVmb3gtJHt2YXJzLmNoYW5uZWx9IGZpcmVmb3ggYnJvd3NlciIKIAogICAt
IGxpbnQ6CiAgICAgICB1c2U6CkBAIC0zMDYsOSArMzE5LDkgQEAgdGFza3M6CiAgICAgICAgIHJ1
bi1qb2I6CiAgICAgICAgICAgLSB0b29sc191bml0dGVzdAogCi0gIC0gdG9vbHMvIHVuaXR0ZXN0
cyAoUHl0aG9uIDMpOgorICAtIHRvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAzLjYpOgogICAgICAg
ZGVzY3JpcHRpb246ID4tCi0gICAgICAgIFVuaXQgdGVzdHMgZm9yIHRvb2xzIHJ1bm5pbmcgdW5k
ZXIgUHl0aG9uIDMsIGV4Y2x1ZGluZyB3cHRydW5uZXIKKyAgICAgICAgVW5pdCB0ZXN0cyBmb3Ig
dG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy42LCBleGNsdWRpbmcgd3B0cnVubmVyCiAgICAg
ICB1c2U6CiAgICAgICAgIC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCkBAIC0zMjAs
NyArMzMzLDIxIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAgICAgICAgIC0gdG9vbHNf
dW5pdHRlc3QKIAotICAtIHRvb2xzL3dwdC8gdGVzdHM6CisgIC0gdG9vbHMvIHVuaXR0ZXN0cyAo
UHl0aG9uIDMuOCk6CisgICAgICBkZXNjcmlwdGlvbjogPi0KKyAgICAgICAgVW5pdCB0ZXN0cyBm
b3IgdG9vbHMgcnVubmluZyB1bmRlciBQeXRob24gMy44LCBleGNsdWRpbmcgd3B0cnVubmVyCisg
ICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAg
ICAgIC0gdG94LXB5dGhvbjM4CisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3Rvb2xzX3Vu
aXR0ZXN0LnNoCisgICAgICBlbnY6CisgICAgICAgIEhZUE9USEVTSVNfUFJPRklMRTogY2kKKyAg
ICAgIHNjaGVkdWxlLWlmOgorICAgICAgICBydW4tam9iOgorICAgICAgICAgIC0gdG9vbHNfdW5p
dHRlc3QKKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAyKToKICAgICAgIGRlc2NyaXB0
aW9uOiA+LQogICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBmb3Igd3B0IGNvbW1hbmRzCiAgICAg
ICB1c2U6CkBAIC0zNDIsNiArMzY5LDUwIEBAIHRhc2tzOgogICAgICAgICBydW4tam9iOgogICAg
ICAgICAgIC0gd3B0X2ludGVncmF0aW9uCiAKKyAgLSB0b29scy93cHQvIHRlc3RzIChQeXRob24g
My42KToKKyAgICAgIGRlc2NyaXB0aW9uOiA+LQorICAgICAgICBJbnRlZ3JhdGlvbiB0ZXN0cyBm
b3Igd3B0IGNvbW1hbmRzCisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UKKyAgICAgICAg
LSB0cmlnZ2VyLXByCisgICAgICAgIC0gdG94LXB5dGhvbjMKKyAgICAgIGNvbW1hbmQ6IC4vdG9v
bHMvY2kvY2lfd3B0LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMK
KyAgICAgIG9wdGlvbnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3Nl
cjoKKyAgICAgICAgICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFu
bmVsOiBleHBlcmltZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1
ZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRf
aW50ZWdyYXRpb24KKworICAtIHRvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpOgorICAgICAg
ZGVzY3JpcHRpb246ID4tCisgICAgICAgIEludGVncmF0aW9uIHRlc3RzIGZvciB3cHQgY29tbWFu
ZHMKKyAgICAgIHVzZToKKyAgICAgICAgLSB3cHQtYmFzZQorICAgICAgICAtIHRyaWdnZXItcHIK
KyAgICAgICAgLSB0b3gtcHl0aG9uMzgKKyAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lfd3B0
LnNoCisgICAgICBpbnN0YWxsOgorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgIG9wdGlv
bnM6CisgICAgICAgIG9vbS1raWxsZXI6IHRydWUKKyAgICAgICAgYnJvd3NlcjoKKyAgICAgICAg
ICAtIGZpcmVmb3gKKyAgICAgICAgICAtIGNocm9tZQorICAgICAgICBjaGFubmVsOiBleHBlcmlt
ZW50YWwKKyAgICAgICAgeHZmYjogdHJ1ZQorICAgICAgICBob3N0czogdHJ1ZQorICAgICAgc2No
ZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6CisgICAgICAgICAgLSB3cHRfaW50ZWdyYXRpb24K
KwogICAtIHJlc291cmNlcy8gdGVzdHM6CiAgICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAg
VGVzdHMgZm9yIHRlc3RoYXJuZXNzLmpzIGFuZCBvdGhlciBmaWxlcyBpbiByZXNvdXJjZXMvCkBA
IC0zNjIsMTAgKzQzMywxMiBAQCB0YXNrczoKICAgLSBpbmZyYXN0cnVjdHVyZS8gdGVzdHM6CiAg
ICAgICBkZXNjcmlwdGlvbjogPi0KICAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisg
ICAgICB2YXJzOgorICAgICAgICBjaGFubmVsOiBuaWdodGx5CiAgICAgICB1c2U6CiAgICAgICAg
IC0gd3B0LWJhc2UKICAgICAgICAgLSB0cmlnZ2VyLXByCi0gICAgICAgIC0gdG94LXB5dGhvbjIK
KyAgICAgICAgLSBicm93c2VyLWZpcmVmb3gKICAgICAgIGNvbW1hbmQ6IC4vdG9vbHMvY2kvY2lf
d3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoCiAgICAgICBpbnN0YWxsOgogICAgICAgICAtIGxp
Ym5zczMtdG9vbHMKQEAgLTM4MiwzICs0NTUsMjggQEAgdGFza3M6CiAgICAgICBzY2hlZHVsZS1p
ZjoKICAgICAgICAgcnVuLWpvYjoKICAgICAgICAgICAtIHdwdHJ1bm5lcl9pbmZyYXN0cnVjdHVy
ZQorCisgIC0gaW5mcmFzdHJ1Y3R1cmUvIHRlc3RzIChQeXRob24gMyk6CisgICAgICBkZXNjcmlw
dGlvbjogPi0KKyAgICAgICAgU21va2V0ZXN0cyBmb3Igd3B0cnVubmVyCisgICAgICB2YXJzOgor
ICAgICAgICBjaGFubmVsOiBuaWdodGx5CisgICAgICB1c2U6CisgICAgICAgIC0gd3B0LWJhc2UK
KyAgICAgICAgLSB0cmlnZ2VyLXByCisgICAgICBjb21tYW5kOiAuL3Rvb2xzL2NpL2NpX3dwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZS5zaCAtLXB5MworICAgICAgaW5zdGFsbDoKKyAgICAgICAgLSBw
eXRob24zLXBpcAorICAgICAgICAtIGxpYm5zczMtdG9vbHMKKyAgICAgICAgLSBsaWJhcHBpbmRp
Y2F0b3IxCisgICAgICAgIC0gZm9udHMtbGliZXJhdGlvbgorICAgICAgb3B0aW9uczoKKyAgICAg
ICAgb29tLWtpbGxlcjogdHJ1ZQorICAgICAgICBicm93c2VyOgorICAgICAgICAgIC0gY2hyb21l
CisgICAgICAgIGNoYW5uZWw6IGV4cGVyaW1lbnRhbAorICAgICAgICB4dmZiOiB0cnVlCisgICAg
ICAgIGhvc3RzOiBmYWxzZQorICAgICAgc2NoZWR1bGUtaWY6CisgICAgICAgIHJ1bi1qb2I6Cisg
ICAgICAgICAgLSB3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvdGVz
dF92YWxpZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQppbmRleCBiMTcwOTI4YjI5MGEyN2Y3NWVh
ZGE2NjE2MmVhNDA0YTFkYmFlOWY5Li40N2NiYzJlODdiYjgwNTk3ZGQ5ODBlOWY5OGJjNDEzYjA0
MTZiNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3Zh
bGlkLnB5CkBAIC02LDcgKzYsNiBAQCBpbXBvcnQganNvbmUKIGltcG9ydCBtb2NrCiBpbXBvcnQg
cHl0ZXN0CiBpbXBvcnQgcmVxdWVzdHMKLWltcG9ydCBzeXMKIGltcG9ydCB5YW1sCiBmcm9tIGpz
b25zY2hlbWEgaW1wb3J0IHZhbGlkYXRlCiAKQEAgLTIwLDkgKzE5LDYgQEAgZGVmIGRhdGFfcGF0
aChmaWxlbmFtZSk6CiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihoZXJlLCAiLi4iLCAidGVzdGRh
dGEiLCBmaWxlbmFtZSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mby5t
YWpvciA9PSAyLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0idGFza2NsdXN0ZXIgbGlicmFy
eSBoYXMgYW4gZW5jb2RpbmcgYnVnICIKLSAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRo
dWIuY29tL3Rhc2tjbHVzdGVyL2pzb24tZS9pc3N1ZXMvMzM4IikKIGRlZiB0ZXN0X3ZlcmlmeV90
YXNrY2x1c3Rlcl95bWwoKToKICAgICAiIiJWZXJpZnkgdGhhdCB0aGUganNvbi1lIGluIHRoZSAu
dGFza2NsdXN0ZXIueW1sIGlzIHZhbGlkIiIiCiAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihy
b290LCAiLnRhc2tjbHVzdGVyLnltbCIpLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CkBAIC00Niwx
MSArNDIsMTcgQEAgZGVmIHRlc3RfdmVyaWZ5X3BheWxvYWQoKToKICAgICAiIiJWZXJpZnkgdGhh
dCB0aGUgZGVjaXNpb24gdGFzayBwcm9kdWNlcyB0YXNrcyB3aXRoIGEgdmFsaWQgcGF5bG9hZCIi
IgogICAgIGZyb20gdG9vbHMuY2kudGMuZGVjaXNpb24gaW1wb3J0IGRlY2lkZQogCi0gICAgY3Jl
YXRlX3Rhc2tfc2NoZW1hID0gcmVxdWVzdHMuZ2V0KAotICAgICAgICAiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tjbHVzdGVyL2Jsb2IvbWFzdGVyL3Nl
cnZpY2VzL3F1ZXVlL3NjaGVtYXMvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC55bWwiKQotICAgIGNy
ZWF0ZV90YXNrX3NjaGVtYSA9IHlhbWwuc2FmZV9sb2FkKGNyZWF0ZV90YXNrX3NjaGVtYS5jb250
ZW50KQorICAgIHIgPSByZXF1ZXN0cy5nZXQoImh0dHBzOi8vY29tbXVuaXR5LXRjLnNlcnZpY2Vz
Lm1vemlsbGEuY29tL3NjaGVtYXMvcXVldWUvdjEvY3JlYXRlLXRhc2stcmVxdWVzdC5qc29uIikK
KyAgICByLnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIGNyZWF0ZV90YXNrX3NjaGVtYSA9IHIuanNv
bigpCiAKLSAgICBwYXlsb2FkX3NjaGVtYSA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly9yYXcuZ2l0
aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL2RvY2tlci13b3JrZXIvbWFzdGVyL3NjaGVt
YXMvdjEvcGF5bG9hZC5qc29uIikuanNvbigpCisgICAgIyBUT0RPKEhleGNsZXMpOiBDaGFuZ2Ug
aXQgdG8gaHR0cHM6Ly9jb21tdW5pdHktdGMuc2VydmljZXMubW96aWxsYS5jb20vcmVmZXJlbmNl
cy9zY2hlbWFzL2RvY2tlci13b3JrZXIvdjEvcGF5bG9hZC5qc29uCisgICAgIyBhZnRlciB0aGUg
bmV4dCBDb21tdW5pdHktVEMgcmVsZWFzZSAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mzk3MzIpLi4KKyAgICByID0gcmVxdWVzdHMuZ2V0KAorICAg
ICAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhc2tjbHVzdGVyL3Rhc2tj
bHVzdGVyLyIKKyAgICAgICAgIjNlZDUxMWVmOTExOWRhNTRmYzA5M2U5NzZiN2I1OTU1ODc0Yzli
NTQvd29ya2Vycy9kb2NrZXItd29ya2VyL3NjaGVtYXMvdjEvcGF5bG9hZC5qc29uIikKKyAgICBy
LnJhaXNlX2Zvcl9zdGF0dXMoKQorICAgIHBheWxvYWRfc2NoZW1hID0gci5qc29uKCkKIAogICAg
IGpvYnMgPSBbImxpbnQiLAogICAgICAgICAgICAgIm1hbmlmZXN0X3VwbG9hZCIsCkBAIC0xMjcs
MTIgKzEyOSwxNyBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ3dwdC1jaHJv
bWUtZGV2LWNyYXNodGVzdC0xJywKICAgICAgICdsaW50J30pLAogICAgICgicHJfZXZlbnQuanNv
biIsIFRydWUsIHsiLnRhc2tjbHVzdGVyLnltbCIsIi50cmF2aXMueW1sIiwidG9vbHMvY2kvc3Rh
cnQuc2gifSwKLSAgICAgeydsaW50JywKKyAgICAgeydkb3dubG9hZC1maXJlZm94LW5pZ2h0bHkn
LAorICAgICAgJ2xpbnQnLAogICAgICAgJ3Rvb2xzLyB1bml0dGVzdHMgKFB5dGhvbiAyKScsCi0g
ICAgICAndG9vbHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMpJywKLSAgICAgICd0b29scy93cHQvIHRl
c3RzJywKKyAgICAgICd0b29scy8gdW5pdHRlc3RzIChQeXRob24gMy42KScsCisgICAgICAndG9v
bHMvIHVuaXR0ZXN0cyAoUHl0aG9uIDMuOCknLAorICAgICAgJ3Rvb2xzL3dwdC8gdGVzdHMgKFB5
dGhvbiAyKScsCisgICAgICAndG9vbHMvd3B0LyB0ZXN0cyAoUHl0aG9uIDMuNiknLAorICAgICAg
J3Rvb2xzL3dwdC8gdGVzdHMgKFB5dGhvbiAzLjgpJywKICAgICAgICdyZXNvdXJjZXMvIHRlc3Rz
JywKLSAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMnfSksCisgICAgICAnaW5mcmFzdHJ1Y3R1
cmUvIHRlc3RzJywKKyAgICAgICdpbmZyYXN0cnVjdHVyZS8gdGVzdHMgKFB5dGhvbiAzKSd9KSwK
ICAgICAjIE1vcmUgdGVzdHMgYXJlIGFmZmVjdGVkIGluIHRoZSBhY3R1YWwgUFIgYnV0IGl0IHNo
b3VsZG4ndCBhZmZlY3QgdGhlIHNjaGVkdWxlZCB0YXNrcwogICAgICgicHJfZXZlbnRfdGVzdHNf
YWZmZWN0ZWQuanNvbiIsIFRydWUsIHsibGF5b3V0LWluc3RhYmlsaXR5L2NsaXAtbmVnYXRpdmUt
Ym90dG9tLW1hcmdpbi5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImxheW91dC1pbnN0YWJpbGl0eS9jb21wb3NpdGVkLWVsZW1lbnQtbW92ZW1lbnQu
aHRtbCJ9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQppbmRl
eCA5NGY3OTk4NzcwY2Y1ZDhiYWQzNmQxODhkZDYzZTI1M2Y5ODE5OWE4Li5hYTEyNzM4MjA0ZjM2
NTJlMmRmOTY0NDQ0NjkzNjhlMGU2MjYxOTIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3Rlc3RzL3Rlc3Rfam9icy5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVmIHRlc3RfYnVpbGRf
Y3NzKCk6CiAKIAogZGVmIHRlc3RfdXBkYXRlX2J1aWx0KCk6Ci0gICAgYXNzZXJ0IGpvYnMuZ2V0
X2pvYnMoWyIyZGNvbnRleHQvZm9vLmh0bWwiXSwKKyAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
Imh0bWwvY2FudmFzL2VsZW1lbnQvZm9vLmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0ZV9idWlsdCJ9CiAgICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Zvby5odG1sIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVpbHQifQotICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsib2Zmc2NyZWVuLWNhbnZhcy9mb28uaHRtbCJdLAorICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9jYW52YXMvb2Zmc2NyZWVuL2Zvby5odG1sIl0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0g
eyJ1cGRhdGVfYnVpbHQifQogCiAKQEAgLTEzNCwzICsxMzQsNyBAQCBkZWYgdGVzdF93cHRfaW5m
cmFzdHJ1Y3R1cmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CiAg
ICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJpbmZyYXN0cnVjdHVyZS9hc3N1bXB0aW9ucy9haGVt
Lmh0bWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl9p
bmZyYXN0cnVjdHVyZSJdKSA9PSB7IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CisKK2RlZiB0
ZXN0X3dkc3BlY19zdXBwb3J0KCk6CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ3ZWJkcml2
ZXIvdGVzdHMvc3VwcG9ydC9fX2luaXRfXy5weSJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVubmVyX2lu
ZnJhc3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9wcl9wcmV2aWV3LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0
X3ByX3ByZXZpZXcucHkKaW5kZXggNjM0ODJmYjE4NGM3ZjE0ZGIwZWJkNDVjMTg3OTRlM2E5Nzcx
YzkwYi4uMmQ5OTY2ZmM4Y2Y0MTg3OTEzYWRjZTg2MDllZTc1MGFkZTFiOTc5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X3ByX3ByZXZpZXcucHkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBjbGFzcyBNb2NrU2VydmVyKEhUVFBTZXJ2ZXIsIG9iamVjdCk6CiBjbGFz
cyBSZXF1ZXN0cyhvYmplY3QpOgogICAgIGdldF9yYXRlID0gKCdHRVQnLCAnL3JhdGVfbGltaXQn
LCB7fSkKICAgICBzZWFyY2ggPSAoJ0dFVCcsICcvc2VhcmNoL2lzc3VlcycsIHt9KQorICAgIHBy
X2RldGFpbHMgPSAoJ0dFVCcsICcvcmVwb3MvdGVzdC1vcmcvdGVzdC1yZXBvL3B1bGxzLzIzJywg
e30pCiAgICAgcmVmX2NyZWF0ZV9vcGVuID0gKAogICAgICAgICAnUE9TVCcsICcvcmVwb3MvdGVz
dC1vcmcvdGVzdC1yZXBvL2dpdC9yZWZzJywgeydyZWYnOidyZWZzL3Bycy1vcGVuLzIzJ30KICAg
ICApCkBAIC0zNzYsNiArMzc3LDcgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY19jb2xsYWJv
cmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQp
LAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAg
ICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJl
cXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMu
c2VhcmNoLCAoCiAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICB7CkBAIC0zOTEsNiArMzkz
LDE1IEBAIGRlZiB0ZXN0X3N5bmNocm9uaXplX3N5bmNfY29sbGFib3JhdG9yKCk6CiAgICAgICAg
ICAgICAgICAgJ2luY29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAg
ICAgICkpLAorICAgICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8n
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3Qt
cmVwbycKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgy
MDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9
KSksCiAgICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwge30pKSwKQEAgLTQ1
Miw2ICs0NjMsNDEgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfaWdub3JlX3VudHJ1c3RlZF9jb250
cmlidXRvcigpOgogICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKICAgICBhc3NlcnQgc2FtZV9t
ZW1iZXJzKGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQogCitkZWYgdGVzdF9zeW5j
aHJvbml6ZV9pZ25vcmVfcHVsbF9yZXF1ZXN0X2Zyb21fZm9yaygpOgorICAgIGV4cGVjdGVkX3Ry
YWZmaWMgPSBbCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0
KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAg
ICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoCisgICAgICAgICAgICAyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2l0ZW1zJzogWworICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnbnVtYmVyJzogMjMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAnbGFiZWxzJzogW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkX2F0JzogTm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogeydsb2dpbic6ICdncmFjZSd9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9hc3NvY2lhdGlvbic6ICdDT0xMQUJPUkFU
T1InCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICdpbmNvbXBsZXRlX3Jlc3VsdHMnOiBGYWxzZQorICAgICAgICAgICAgfQorICAgICAg
ICApKSwKKyAgICAgICAgKFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzog
eworICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICdzb21lLW90aGVyLW9yZy90
ZXN0LXJlcG8nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICkpLAorICAgIF0KKworICAgIHJldHVybmNvZGUsIGFjdHVhbF90
cmFmZmljLCByZW1vdGVfcmVmcyA9IHN5bmNocm9uaXplKGV4cGVjdGVkX3RyYWZmaWMpCisKKyAg
ICBhc3NlcnQgcmV0dXJuY29kZSA9PSAwCisgICAgYXNzZXJ0IHNhbWVfbWVtYmVycyhleHBlY3Rl
ZF90cmFmZmljLCBhY3R1YWxfdHJhZmZpYykKKwogZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190
cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLApAQCAtNDU5LDEyICs1MDUs
MTUgQEAgZGVmIHRlc3Rfc3luY2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAg
ICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAg
KFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVz
dHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRf
cmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAog
ICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICdpdGVtcyc6
IFsKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJl
cic6IDIzLAorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBjb250cmli
dXRvciAodW50cnVzdGVkKSwgYnV0IHRoZSBpc3N1ZQorICAgICAgICAgICAgICAgICAgICAgICAg
IyBoYXMgYmVlbiBsYWJlbGxlZCBhcyBzYWZlLgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xh
YmVscyc6IFt7J25hbWUnOiAnc2FmZSBmb3IgcHJldmlldyd9XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICdjbG9zZWRfYXQnOiBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIn
OiB7J2xvZ2luJzogJ0hleGNsZXMnfSwKQEAgLTQ3NCw2ICs1MjMsNjAgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfc3luY190cnVzdGVkX2NvbnRyaWJ1dG9yKCk6CiAgICAgICAgICAgICAgICAgJ2lu
Y29tcGxldGVfcmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAg
ICAgICAoUmVxdWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAnaGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgKSksCisgICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX29wZW4sICgyMDAsIHt9KSksCisg
ICAgICAgIChSZXF1ZXN0cy5yZWZfY3JlYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCisgICAgICAg
IChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW10pKSwKKyAgICAgICAgKFJlcXVlc3Rz
LmRlcGxveW1lbnRfY3JlYXRlLCAoMjAwLCB7fSkpCisgICAgXQorCisgICAgcmV0dXJuY29kZSwg
YWN0dWFsX3RyYWZmaWMsIHJlbW90ZV9yZWZzID0gc3luY2hyb25pemUoZXhwZWN0ZWRfdHJhZmZp
YykKKworICAgIGFzc2VydCByZXR1cm5jb2RlID09IDAKKyAgICBhc3NlcnQgc2FtZV9tZW1iZXJz
KGV4cGVjdGVkX3RyYWZmaWMsIGFjdHVhbF90cmFmZmljKQorCitkZWYgdGVzdF9zeW5jaHJvbml6
ZV9zeW5jX2JvdF93aXRoX2xhYmVsKCk6CisgICAgZXhwZWN0ZWRfdHJhZmZpYyA9IFsKKyAgICAg
ICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVx
dWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5n
ZXRfcmF0ZSwgUmVzcG9uc2VzLm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRl
LCBSZXNwb25zZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3Bv
bnNlcy5ub19saW1pdCksCisgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2VzLm5v
X2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLnNlYXJjaCwgKAorICAgICAgICAgICAgMjAwLAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdpdGVtcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcic6IDIzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIyB1c2VyIGhlcmUgaXMgYSBib3Qgd2hpY2ggaXMgbm9ybWFsbHkgbm90
IG1pcnJvcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGlzc3VlIGhhcyBi
ZWVuIGxhYmVsbGVkIGFzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAgICAnbGFiZWxzJzog
W3snbmFtZSc6ICdzYWZlIGZvciBwcmV2aWV3J31dLAorICAgICAgICAgICAgICAgICAgICAgICAg
J2Nsb3NlZF9hdCc6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHsnbG9n
aW4nOiAnY2hyb21pdW0td3B0LWV4cG9ydC1ib3QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfYXNzb2NpYXRpb24nOiAnQ09MTEFCT1JBVE9SJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnaW5jb21wbGV0ZV9yZXN1
bHRzJzogRmFsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCisgICAgICAgIChSZXF1ZXN0
cy5wcl9kZXRhaWxzLCAoMjAwLAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICdoZWFk
JzogeworICAgICAgICAgICAgICAgICAgICAncmVwbyc6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdmdWxsX25hbWUnOiAndGVzdC1vcmcvdGVzdC1yZXBvJworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICApKSwKICAgICAg
ICAgKFJlcXVlc3RzLnJlZl9jcmVhdGVfb3BlbiwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVl
c3RzLnJlZl9jcmVhdGVfdHJ1c3RlZCwgKDIwMCwge30pKSwKICAgICAgICAgKFJlcXVlc3RzLmRl
cGxveW1lbnRfZ2V0LCAoMjAwLCBbXSkpLApAQCAtNDkyLDYgKzU5NSw3IEBAIGRlZiB0ZXN0X3N5
bmNocm9uaXplX3VwZGF0ZV9jb2xsYWJvcmF0b3IoKToKICAgICAgICAgKFJlcXVlc3RzLmdldF9y
YXRlLCBSZXNwb25zZXMubm9fbGltaXQpLAogICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJl
c3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwgUmVzcG9uc2Vz
Lm5vX2xpbWl0KSwKKyAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25zZXMubm9fbGlt
aXQpLAogICAgICAgICAoUmVxdWVzdHMuc2VhcmNoLCAoMjAwLAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICdpdGVtcyc6IFsKQEAgLTUwNiw2ICs2MTAsMTUgQEAgZGVmIHRlc3Rfc3lu
Y2hyb25pemVfdXBkYXRlX2NvbGxhYm9yYXRvcigpOgogICAgICAgICAgICAgICAgICdpbmNvbXBs
ZXRlX3Jlc3VsdHMnOiBGYWxzZQogICAgICAgICAgICAgfQogICAgICAgICApKSwKKyAgICAgICAg
KFJlcXVlc3RzLnByX2RldGFpbHMsICgyMDAsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgJ2hlYWQnOiB7CisgICAgICAgICAgICAgICAgICAgICdyZXBvJzogeworICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Z1bGxfbmFtZSc6ICd0ZXN0LW9yZy90ZXN0LXJlcG8nCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICkp
LAogICAgICAgICAoUmVxdWVzdHMuZGVwbG95bWVudF9nZXQsICgyMDAsIFtdKSksCiAgICAgICAg
IChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSksCiAgICAgICAgIChSZXF1ZXN0
cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSksCkBAIC01MjgsNiArNjQxLDcgQEAgZGVm
IHRlc3Rfc3luY2hyb25pemVfdXBkYXRlX21lbWJlcigpOgogICAgICAgICAoUmVxdWVzdHMuZ2V0
X3JhdGUsIFJlc3BvbnNlcy5ub19saW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5nZXRfcmF0ZSwg
UmVzcG9uc2VzLm5vX2xpbWl0KSwKICAgICAgICAgKFJlcXVlc3RzLmdldF9yYXRlLCBSZXNwb25z
ZXMubm9fbGltaXQpLAorICAgICAgICAoUmVxdWVzdHMuZ2V0X3JhdGUsIFJlc3BvbnNlcy5ub19s
aW1pdCksCiAgICAgICAgIChSZXF1ZXN0cy5zZWFyY2gsICgyMDAsCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgJ2l0ZW1zJzogWwpAQCAtNTQyLDYgKzY1NiwxNSBAQCBkZWYgdGVzdF9z
eW5jaHJvbml6ZV91cGRhdGVfbWVtYmVyKCk6CiAgICAgICAgICAgICAgICAgJ2luY29tcGxldGVf
cmVzdWx0cyc6IEZhbHNlCiAgICAgICAgICAgICB9CiAgICAgICAgICkpLAorICAgICAgICAoUmVx
dWVzdHMucHJfZGV0YWlscywgKDIwMCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAn
aGVhZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3JlcG8nOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAnZnVsbF9uYW1lJzogJ3Rlc3Qtb3JnL3Rlc3QtcmVwbycKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKSksCiAg
ICAgICAgIChSZXF1ZXN0cy5kZXBsb3ltZW50X2dldCwgKDIwMCwgW3snc29tZSc6ICdkZXBsb3lt
ZW50J31dKSksCiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX29wZW4sICgyMDAsIHt9KSks
CiAgICAgICAgIChSZXF1ZXN0cy5yZWZfdXBkYXRlX3RydXN0ZWQsICgyMDAsIHt9KSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
ZG9ja2VyL0RvY2tlcmZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCmluZGV4IDBhODQyZGUxYWI4NTdkMWY2NTVi
OTM2NWRmNjFmM2ZhOTc4ZTMxYmUuLmYzOTI3ZmQwZDcxY2NmMjkyZDk2OTlkNTk3YTQ3OTk0NWE4
ZTUxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQpAQCAtMjUsNiAr
MjUsOCBAQCBSVU4gYXB0LWdldCAtcXF5IHVwZGF0ZSBcCiAgICAgcHVsc2VhdWRpbyBcCiAgICAg
cHl0aG9uIFwKICAgICBweXRob24tcGlwIFwKKyAgICBweXRob24zIFwKKyAgICBweXRob24zLXBp
cCBcCiAgICAgcWVtdS1rdm0gXAogICAgIHR6ZGF0YSBcCiAgICAgc3VkbyBcCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9SRUFETUUubWQKaW5kZXggNDUwOTgxZjY4NmJmYWNlMmQ5MjQzZTU2Mjgw
NDBiYjZiMmY2YzRlMC4uOTM0MmFkZWQyOThiZGQwZTVkYWFjMTIyODljNzgxNjNkMWQ1YmVjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL1JFQURNRS5tZApAQCAtMSwxMCArMSwxOCBAQAog
VGhpcyBkb2NrZXIgaW1hZ2VzIGlzIHVzZWQgZm9yIHRlc3RpbmcgQ2hyb21lLCBGaXJlZm94LCBX
ZWJLaXRHVEsgYW5kIHJ1bm5pbmcKIG90aGVyIHRhc2tzIG9uIFRhc2tjbHVzdGVyLiBXaGVuIGFu
eSBvZiB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2hhbmdlLCB0aGUKLWltYWdlcyBtdXN0
IGJlIHVwZGF0ZWQgYXMgd2VsbC4gVG8gZG8gdGhpcywgYXNzdW1pbmcgeW91IGhhdmUgZG9ja2Vy
IGluc3RhbGxlZDoKK2ltYWdlcyBtdXN0IGJlIHVwZGF0ZWQgYXMgd2VsbC4gRG9pbmcgdGhpcyBy
ZXF1aXJlcyB5b3UgYmUgcGFydCBvZiB0aGUKKyd3ZWJwbGF0Zm9ybXRlc3RzJyBvcmdhbml6YXRp
b24gb24gRG9ja2VyIEh1YjsgcGluZyBASGV4Y2xlcyBvciBAc3RlcGhlbm1jZ3J1ZXIKK2lmIHlv
dSBhcmUgbm90IGEgbWVtYmVyLgorCitJbiB0aGlzIGRpcmVjdG9yeSwgcnVuIHRoZSBmb2xsb3dp
bmcsIHdoZXJlIGA8dGFnPmAgaXMgb2YgdGhlIGZvcm0KK2B3ZWJwbGF0Zm9ybXRlc3RzL3dwdDp7
Y3VycmVudC12ZXJzaW9uICsgMC4wMX1gOgogCi1JbiB0aGlzIGRpcmVjdG9yeSwgcnVuCiBgYGBz
aAotZG9ja2VyIGJ1aWxkIC10IDx0YWc+IC4KKyMgLS1wdWxsIGZvcmNlcyBEb2NrZXIgdG8gZ2V0
IHRoZSBuZXdlc3QgYmFzZSBpbWFnZS4KK2RvY2tlciBidWlsZCAtLXB1bGwgLXQgPHRhZz4gLgog
ZG9ja2VyIHB1c2ggPHRhZz4KIGBgYAogCitUaGVuIHVwZGF0ZSB0aGUgZm9sbG93aW5nIFRhc2tj
bHVzdGVyIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSB0aGUgbmV3IGltYWdlOgorKiBgLnRhc2tjbHVz
dGVyLnltbGAgKHRoZSBkZWNpc2lvbiB0YXNrKQorKiBgdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55
bWxgIChhbGwgdGhlIG90aGVyIHRhc2tzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQppbmRleCA5NzYxNTZjZjY1YTAwODIxYTExYTMzNTEzMDFiNDdjMTA3OGM4NDE2Li41
OWExY2ZmMmViZDBlZmRhMDZmYWRkMTQ0YTg0YjVkMzViMmQ4MWM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9u
dGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtOCw2ICs4LDcgQEAgd3B0X3Jvb3QgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIGRl
ZiBidWlsZCgqYXJncywgKiprd2FyZ3MpOgogICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbImRv
Y2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi0tcHVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS10
YWciLCAid3B0OmxvY2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVdKQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CmluZGV4IDYxMjZiNzgxYmZhZGQxNWU4MmI4
YTNhM2I5NDk0MDUwOTM5ZWFiNmMuLjVjOGU2ZDc5YzMwMzhkZGZmNDk2ODhkNGYxZmM3ZTdmMjk0
YWQwNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3JldHJ5LnB5CkBAIC0yMSwyMyArMjEs
MjggQEAgZGVmIGl0ZXJfcmFuZ2Uobik6CiAgICAgICAgIGkgKz0gMQogCiAKK2RlZiBsb2codmFs
dWUpOgorICAgIHByaW50KHZhbHVlKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKIGRlZiBt
YWluKCk6CiAgICAgYXJncyA9IGdldF9hcmdzKCkucGFyc2VfYXJncygpCiAKICAgICBpZiBub3Qg
YXJncy5jbWQ6Ci0gICAgICAgIHByaW50KCJObyBjb21tYW5kIHN1cHBsaWVkIikKKyAgICAgICAg
bG9nKCJObyBjb21tYW5kIHN1cHBsaWVkIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIHJl
dGNvZGUgPSBOb25lCiAKICAgICBmb3IgbiBpbiBpdGVyX3JhbmdlKGFyZ3MuY291bnQpOgogICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwcmludCgiUnVubmluZyAlcyBbdHJ5ICVkLyVkXSIgJSAo
IiAiLmpvaW4oYXJncy5jbWQpLCAobisxKSwgYXJncy5jb3VudCkpCisgICAgICAgICAgICBsb2co
IlJ1bm5pbmcgJXMgW3RyeSAlZC8lZF0iICUgKCIgIi5qb2luKGFyZ3MuY21kKSwgKG4rMSksIGFy
Z3MuY291bnQpKQogICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGFyZ3MuY21kKQog
ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAg
ICAgICAgIHJldGNvZGUgPSBlLnJldHVybmNvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHByaW50KCJDb21tYW5kIHN1Y2NlZWRlZCIpCisgICAgICAgICAgICBsb2coIkNvbW1hbmQgc3Vj
Y2VlZGVkIikKICAgICAgICAgICAgIHJldGNvZGUgPSAwCiAgICAgICAgICAgICBicmVhawogCkBA
IC00NiwxMCArNTEsMTAgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHdhaXRfdGltZSA9IGFyZ3MuZmFjdG9yKipuICogYXJncy5kZWxheQogICAgICAgICBpZiBuIDwg
YXJncy5jb3VudCAtIDE6Ci0gICAgICAgICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIHdhaXRp
bmcgJXMgc2Vjb25kcyB0byByZXRyeSIgJSB3YWl0X3RpbWUpCisgICAgICAgICAgICBsb2coIkNv
bW1hbmQgZmFpbGVkLCB3YWl0aW5nICVzIHNlY29uZHMgdG8gcmV0cnkiICUgd2FpdF90aW1lKQog
ICAgICAgICAgICAgdGltZS5zbGVlcCh3YWl0X3RpbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBwcmludCgiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKKyAgICAgICAgICAg
IGxvZygiQ29tbWFuZCBmYWlsZWQsIG91dCBvZiByZXRyaWVzIikKIAogICAgIHN5cy5leGl0KHJl
dGNvZGUpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpp
bmRleCBkNWVhNGE2YThmM2Q2NGQ0YWJhM2I4ZGNiZTVmZmU4NDliNzRlOTY5Li4wZjNkOTQ1MGQx
MjM0NDljMGRjYzNmZjNjMDRjYTg2YzgxYjI0YmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CkBAIC0yNjksNyArMjY5LDcgQEAgY2xhc3MgUGF0aEZp
bHRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hcHBlbmQo
aXRlbSkKIAogICAgICAgICAgICAgZGlybmFtZXNbOl0gPSBrZWVwX2RpcnMKLSAgICAgICAgICAg
IGFzc2VydCAiLmdpdCIgbm90IGluIGRpcm5hbWVzCisgICAgICAgICAgICBhc3NlcnQgbm90IGFu
eSgiLmdpdCIgPT0gbmFtZSBmb3IgbmFtZSwgXyBpbiBkaXJuYW1lcykKICAgICAgICAgICAgIHlp
ZWxkIG9yaWdfZGlycGF0aCwgZGlybmFtZXMsIGtlZXBfZmlsZXMKIAogICAgIGRlZiBfX2NhbGxf
XyhzZWxmLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQppbmRleCBhMDUwY2ZhOGE4ZTRlMjY5
OWRiNDRjZTllNTJmOGYyMzBhMzRhODY5Li5mYzFhODE2ZjhhYmY4NWVmY2UzMWEzYThlNjE0YmE1
OTFiNjAwOTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpAQCAtMjAsNyArMjAsNyBA
QCBmcm9tIC4uZ2l0aWdub3JlLmdpdGlnbm9yZSBpbXBvcnQgUGF0aEZpbHRlcgogZnJvbSAuLndw
dCBpbXBvcnQgdGVzdGZpbGVzCiBmcm9tIC4ubWFuaWZlc3QudmNzIGltcG9ydCB3YWxrCiAKLWZy
b20gLi5tYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBw
eXRob25fbWV0YV9yZSwgc3BhY2VfY2hhcnMsIGdldF9hbnlfdmFyaWFudHMsIGdldF9kZWZhdWx0
X2FueV92YXJpYW50cworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZp
bGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92YXJp
YW50cwogZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMsIGl0ZXJ2YWx1ZXMs
IHdpdGhfbWV0YWNsYXNzCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKIGZyb20gc2l4Lm1v
dmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KQEAgLTQxLDcgKzQxLDEy
IEBAIGlmIE1ZUFk6CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgVW5pb24KIAotICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQorICAgICMgVGhlIElnbm9yZWxpc3QgaXMgYSB0d28gbGV2ZWwg
ZGljdGlvbmFyeS4gVGhlIHRvcCBsZXZlbCBpcyBpbmRleGVkIGJ5CisgICAgIyBlcnJvciBuYW1l
cyAoZS5nLiAnVFJBSUxJTkcgV0hJVEVTUEFDRScpLiBFYWNoIG9mIHRob3NlIHRoZW4gaGFzIGEg
bWFwIG9mCisgICAgIyBmaWxlIHBhdHRlcm5zIChlLmcuICdmb28vKicpIHRvIGEgc2V0IG9mIHNw
ZWNpZmljIGxpbmUgbnVtYmVycyBmb3IgdGhlCisgICAgIyBleGNlcHRpb24uIFRoZSBsaW5lIG51
bWJlcnMgYXJlIG9wdGlvbmFsOyBpZiBtaXNzaW5nIHRoZSBlbnRpcmUgZmlsZQorICAgICMgaWdu
b3JlcyB0aGUgZXJyb3IuCisgICAgSWdub3JlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBT
ZXRbT3B0aW9uYWxbaW50XV1dXQogCiAKIGxvZ2dlciA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxb
bG9nZ2luZy5Mb2dnZXJdCkBAIC03NSwxMiArODAsMTIgQEAgRVJST1JfTVNHID0gIiIiWW91IG11
c3QgZml4IGFsbCBlcnJvcnM7IGZvciBkZXRhaWxzIG9uIGhvdyB0byBmaXggdGhlbSwgc2VlCiBo
dHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9saW50LXRvb2wuaHRt
bAogCiBIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIgZXJyb3IsIGl0J3Mg
c29tZXRpbWVzCi1PSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlIGlu
IHRoZSByb290IG9mIHRoZQorT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC5pZ25vcmUgZmls
ZSBpbiB0aGUgcm9vdCBvZiB0aGUKIHdlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFr
ZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KIAogRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxp
bnQgdG9vbCBpZ25vcmUgYWxsICclcycKIGVycm9ycyBpbiB0aGUgJXMgZmlsZSwKLXlvdSBjb3Vs
ZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgoreW91
IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQuaWdub3JlIGZpbGUuCiAK
ICVzOiAlcyIiIgogCkBAIC0zMTgsMTQgKzMyMyw1MiBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5
X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICByZXR1cm4gZXJyb3JzCiAKIAotZGVmIHBh
cnNlX3doaXRlbGlzdChmKToKLSAgICAjIHR5cGU6IChJT1tieXRlc10pIC0+IFR1cGxlW1doaXRl
bGlzdCwgU2V0W1RleHRdXQorZGVmIGNoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZXMo
cmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0cl0pIC0+IExpc3Rb
cnVsZXMuRXJyb3JdCisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgYWxsIHRlc3RoYXJuZXNzIGZp
bGVzIGhhdmUgdW5pcXVlIGJhc2VuYW1lIHBhdGhzLgorCisgICAgVGhlICdiYXNlbmFtZSBwYXRo
JyByZWZlcnMgdG8gdGhlIGVudGlyZSBwYXRoIGV4Y2x1ZGluZyB0aGUgZXh0ZW5zaW9uLiBGb3IK
KyAgICBleGFtcGxlLCAnZm9vL2Jhci9iYXouaHRtbCcgYW5kICdmb28vYmFyL2Jhei54aHRtbCcg
aGF2ZSB0aGUgc2FtZSBiYXNlbmFtZQorICAgIHBhdGgsIGJ1dCAnZm9vL2Jhci9iYXouaHRtbCcg
YW5kICdmb28vcXV4L2Jhei5odG1sJyBkbyBub3QuCisKKyAgICBUZXN0aGFybmVzcyBmaWxlcyB3
aXRoIGlkZW50aWNhbCBiYXNlbmFtZXMgaGF2ZSBjYXVzZWQgaXNzdWVzIGluIGRvd25zdHJlYW0K
KyAgICBpbmZyYXN0cnVjdHVyZSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0L2lzc3Vlcy83NTcwKSwKKyAgICBhbmQgbWF5IGNhdXNlIGNvbmZ1c2lvbiBpbiBn
ZW5lcmFsLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAg
IDpwYXJhbSBwYXRoczogbGlzdCBvZiBhbGwgcGF0aHMKKyAgICA6cmV0dXJuczogYSBsaXN0IG9m
IGVycm9ycyBmb3VuZCBpbiBgYHBhdGhzYGAKKyAgICAiIiIKKworICAgIGVycm9ycyA9IFtdCisg
ICAgZmlsZV9kaWN0ID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICBmb3IgcGF0aCBpbiBwYXRoczoK
KyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQor
ICAgICAgICBpZiBzb3VyY2VfZmlsZS50eXBlICE9ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBmaWxlX25hbWUsIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5z
cGxpdGV4dChwYXRoKQorICAgICAgICBmaWxlX2RpY3RbZmlsZV9uYW1lXS5hcHBlbmQoZmlsZV9l
eHRlbnNpb24pCisgICAgZm9yIGssIHYgaW4gZmlsZV9kaWN0Lml0ZW1zKCk6CisgICAgICAgIGlm
IGxlbih2KSA9PSAxOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY29udGV4dCA9ICgn
LCAnLmpvaW4odiksKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHY6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKHJ1bGVzLkR1cGxpY2F0ZUJhc2VuYW1lUGF0aC5lcnJvcihrICsgZXh0ZW5z
aW9uLCBjb250ZXh0KSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIHBhcnNlX2lnbm9yZWxp
c3QoZik6CisgICAgIyB0eXBlOiAoSU9bYnl0ZXNdKSAtPiBUdXBsZVtJZ25vcmVsaXN0LCBTZXRb
VGV4dF1dCiAgICAgIiIiCi0gICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxlIGdpdmVuIGJ5IGBm
YCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICBQYXJzZSB0aGUgaWdub3Jl
bGlzdCBmaWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4K
KworICAgIDpyZXR1cm5zOiBhIHR1cGxlIG9mIGFuIElnbm9yZWxpc3QgYW5kIGEgc2V0IG9mIGZp
bGVzIHRoYXQgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgc2tpcHBlZCBieSB0aGUgbGlu
dGVyIChpLmUuIGhhdmUgYSAnKicgZW50cnkpLgogICAgICIiIgogCi0gICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBXaGl0ZWxpc3QKLSAgICBp
Z25vcmVkX2ZpbGVzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTpkZWZhdWx0ZGljdChzZXQpKSAgIyB0eXBlOiBJZ25vcmVsaXN0CisgICAg
c2tpcHBlZF9maWxlcyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgZm9yIGxpbmUg
aW4gZjoKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQpAQCAtMzQ0LDM3ICszODcsMzcgQEAg
ZGVmIHBhcnNlX3doaXRlbGlzdChmKToKICAgICAgICAgZmlsZV9tYXRjaCA9IG9zLnBhdGgubm9y
bWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3JfdHlwZXM6Ci0gICAg
ICAgICAgICBpZ25vcmVkX2ZpbGVzLmFkZChmaWxlX21hdGNoKQorICAgICAgICAgICAgc2tpcHBl
ZF9maWxlcy5hZGQoZmlsZV9tYXRjaCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBl
cnJvcl90eXBlIGluIGVycm9yX3R5cGVzOgogICAgICAgICAgICAgICAgIGRhdGFbZXJyb3JfdHlw
ZV1bZmlsZV9tYXRjaF0uYWRkKGxpbmVfbnVtYmVyKQogCi0gICAgcmV0dXJuIGRhdGEsIGlnbm9y
ZWRfZmlsZXMKKyAgICByZXR1cm4gZGF0YSwgc2tpcHBlZF9maWxlcwogCiAKLWRlZiBmaWx0ZXJf
d2hpdGVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgotICAgICMgdHlwZTogKFdoaXRlbGlzdCwg
U2VxdWVuY2VbcnVsZXMuRXJyb3JdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorZGVmIGZpbHRlcl9p
Z25vcmVsaXN0X2Vycm9ycyhkYXRhLCBlcnJvcnMpOgorICAgICMgdHlwZTogKElnbm9yZWxpc3Qs
IFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KICAgICAiIiIKLSAg
ICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBpbiBgZGF0YWAu
CisgICAgRmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgaWdub3JlZCBpbiBgZGF0YWAu
CiAgICAgIiIiCiAKICAgICBpZiBub3QgZXJyb3JzOgogICAgICAgICByZXR1cm4gW10KIAotICAg
IHdoaXRlbGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KKyAg
ICBza2lwcGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KIAogICAg
IGZvciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVtZXJhdGUoZXJyb3Jz
KToKICAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgpCi0gICAgICAgICMg
QWxsb3cgd2hpdGVsaXN0aW5nIGFsbCBsaW50IGVycm9ycyBleGNlcHQgdGhlIElHTk9SRUQgUEFU
SCBsaW50LAotICAgICAgICAjIHdoaWNoIGV4cGxhaW5zIGhvdyB0byBmaXggaXQgY29ycmVjdGx5
IGFuZCBzaG91bGRuJ3QgYmUgaWdub3JlZC4KKyAgICAgICAgIyBBbGxvdyBza2lwcGluZyBhbGwg
bGludCBlcnJvcnMgZXhjZXB0IHRoZSBJR05PUkVEIFBBVEggbGludCwKKyAgICAgICAgIyB3aGlj
aCBleHBsYWlucyBob3cgdG8gZml4IGl0IGNvcnJlY3RseSBhbmQgc2hvdWxkbid0IGJlIHNraXBw
ZWQuCiAgICAgICAgIGlmIGVycm9yX3R5cGUgaW4gZGF0YSBhbmQgZXJyb3JfdHlwZSAhPSAiSUdO
T1JFRCBQQVRIIjoKICAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJvcl90eXBlXQogICAg
ICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRlcml0ZW1zKHdsX2Zp
bGVzKToKICAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGluZXMgb3IgbGluZSBp
biBhbGxvd2VkX2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hj
YXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRl
bGlzdGVkW2ldID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFtpXSA9IFRy
dWUKIAotICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoZXJyb3JzKSBp
ZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisgICAgcmV0dXJuIFtpdGVtIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShlcnJvcnMpIGlmIG5vdCBza2lwcGVkW2ldXQogCiAKIHJlZ2V4cHMgPSBbaXRlbSgp
IGZvciBpdGVtIGluICAjIHR5cGU6IGlnbm9yZQpAQCAtMzkwLDcgKzQzMywxMCBAQCByZWdleHBz
ID0gW2l0ZW0oKSBmb3IgaXRlbSBpbiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICAgICAgIHJ1bGVz
LlByaW50UmVnZXhwLAogICAgICAgICAgICAgcnVsZXMuTGF5b3V0VGVzdHNSZWdleHAsCiAgICAg
ICAgICAgICBydWxlcy5NaXNzaW5nRGVwc1JlZ2V4cCwKLSAgICAgICAgICAgIHJ1bGVzLlNwZWNp
YWxQb3dlcnNSZWdleHBdXQorICAgICAgICAgICAgcnVsZXMuU3BlY2lhbFBvd2Vyc1JlZ2V4cCwK
KyAgICAgICAgICAgIHJ1bGVzLkFzc2VydFRocm93c1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVz
LlByb21pc2VSZWplY3RzUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQXNzZXJ0UHJlY29uZGl0
aW9uUmVnZXhwXV0KIAogCiBkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19yb290LCBwYXRoLCBm
KToKQEAgLTQyMSw2ICs0NjcsNyBAQCBkZWYgY2hlY2tfcGFyc2VkKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CiAKICAgICAgICAgaWYgKHNvdXJjZV9maWxlLnR5cGUgIT0gInN1cHBvcnQiIGFuZAogICAg
ICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFuZAorICAgICAgICAg
ICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfdGVudGF0aXZlIGFuZAogICAgICAgICAgICAgbm90
IHNvdXJjZV9maWxlLnNwZWNfbGlua3MpOgogICAgICAgICAgICAgcmV0dXJuIFtydWxlcy5NaXNz
aW5nTGluay5lcnJvcihwYXRoKV0KIApAQCAtNTg0LDcgKzYzMSw4IEBAIGFzdF9jaGVja2VycyA9
IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYgY2hlY2tfcHl0aG9u
X2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICMgdHlwZTogKHN0ciwgc3RyLCBJT1tieXRl
c10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCi0gICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5weSIp
OgorICAgICMgKi5xdWljLnB5IGFyZSBQeXRob24gMyBvbmx5IGFuZCBjYW5ub3QgYmUgcGFyc2Vk
IGJ5IFB5dGhvbiAyLgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBwYXRoLmVu
ZHN3aXRoKCIucXVpYy5weSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAgIHRyeToKQEAgLTYw
NSwzMCArNjUzLDEyIEBAIGJyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxlKGJyIiNc
cypNRVRBOiIpCiAKIGRlZiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUpOgogICAgICMgdHlw
ZTogKHN0cikgLT4gSXRlcmFibGVbVHVwbGVbVHlwZVtydWxlcy5SdWxlXSwgVHVwbGVbQW55LCAu
Li5dXV0KLSAgICBnbG9iYWxfdmFsdWVzID0ge2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiB2YWx1
ZS5zcGxpdChiIiwiKSBpZiBpdGVtLnN0cmlwKCl9Ci0KLSAgICBpbmNsdWRlZF92YXJpYW50cyA9
IHNldC51bmlvbihnZXRfZGVmYXVsdF9hbnlfdmFyaWFudHMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKGdldF9hbnlfdmFyaWFudHModikgZm9yIHYgaW4gZ2xvYmFsX3Zh
bHVlcyBpZiBub3Qgdi5zdGFydHN3aXRoKGIiISIpKSkKKyAgICBnbG9iYWxfdmFsdWVzID0ge2l0
ZW0uc3RyaXAoKS5kZWNvZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiB2YWx1ZS5zcGxpdChiIiwiKSBp
ZiBpdGVtLnN0cmlwKCl9CiAKKyAgICAjIFRPRE86IHRoaXMgY291bGQgY2hlY2sgZm9yIGR1cGxp
Y2F0ZXMgYW5kIHN1Y2gKICAgICBmb3IgZ2xvYmFsX3ZhbHVlIGluIGdsb2JhbF92YWx1ZXM6Ci0g
ICAgICAgIGlmIGdsb2JhbF92YWx1ZS5zdGFydHN3aXRoKGIiISIpOgotICAgICAgICAgICAgZXhj
bHVkZWRfdmFsdWUgPSBnbG9iYWxfdmFsdWVbMTpdCi0gICAgICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhleGNsdWRlZF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVz
LlVua25vd25HbG9iYWxNZXRhZGF0YSwgKCkpCi0KLSAgICAgICAgICAgIGVsaWYgZXhjbHVkZWRf
dmFsdWUgaW4gZ2xvYmFsX3ZhbHVlczoKLSAgICAgICAgICAgICAgICB5aWVsZCAocnVsZXMuQnJv
a2VuR2xvYmFsTWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICgoIkNhbm5vdCBzcGVj
aWZ5IGJvdGggJXMgYW5kICVzIiAlIChnbG9iYWxfdmFsdWUsIGV4Y2x1ZGVkX3ZhbHVlKSksKSkK
LQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGNsdWRlZF92YXJpYW50cyA9
IGdldF9hbnlfdmFyaWFudHMoZXhjbHVkZWRfdmFsdWUpCi0gICAgICAgICAgICAgICAgaWYgbm90
IChleGNsdWRlZF92YXJpYW50cyAmIGluY2x1ZGVkX3ZhcmlhbnRzKToKLSAgICAgICAgICAgICAg
ICAgICAgeWllbGQgKHJ1bGVzLkJyb2tlbkdsb2JhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90IGluY2x1ZGVkIiAl
IChleGNsdWRlZF92YWx1ZSwpKSwpKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBu
b3QgZ2V0X2FueV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgotICAgICAgICAgICAgICAgIHlpZWxk
IChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQorICAgICAgICBpZiBub3QgZ2V0X2Fu
eV92YXJpYW50cyhnbG9iYWxfdmFsdWUpOgorICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25v
d25HbG9iYWxNZXRhZGF0YSwgKCkpCiAKIAogZGVmIGNoZWNrX3NjcmlwdF9tZXRhZGF0YShyZXBv
X3Jvb3QsIHBhdGgsIGYpOgpAQCAtNjU3LDEzICs2ODcsNyBAQCBkZWYgY2hlY2tfc2NyaXB0X21l
dGFkYXRhKHJlcG9fcm9vdCwgcGF0aCwgZik6CiAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0g
YiJsb25nIjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3du
VGltZW91dE1ldGFkYXRhLmVycm9yKHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25vPWlkeCArIDEp
KQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJ0aXRsZSI6Ci0gICAgICAgICAgICAgICAgcGFz
cwotICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJzY3JpcHQiOgotICAgICAgICAgICAgICAgIHBh
c3MKLSAgICAgICAgICAgIGVsaWYga2V5ID09IGIidmFyaWFudCI6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiAoYiJ0
aXRsZSIsIGIic2NyaXB0IiwgYiJ2YXJpYW50IiwgYiJxdWljIik6CiAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZChydWxlcy5Vbmtub3duTWV0YWRhdGEuZXJyb3IocGF0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25v
PWlkeCArIDEpKQogICAgICAgICBlbHNlOgpAQCAtODI1LDcgKzg0OSw3IEBAIGRlZiBsaW50X3Bh
dGhzKGt3YXJncywgd3B0X3Jvb3QpOgogICAgICAgICBmb3JjZV9hbGwgPSBGYWxzZQogICAgICAg
ICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhzOgogICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVw
bGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICAgICAgaWYgcGF0aCA9PSAibGludC53aGl0
ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgidG9vbHMvbGludC8iKToKKyAgICAgICAgICAgIGlm
IHBhdGggPT0gImxpbnQuaWdub3JlIiBvciBwYXRoLnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6
CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFr
CiAgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90IGZvcmNlX2FsbCAg
IyB0eXBlOiBpZ25vcmUKQEAgLTg0Myw3ICs4NjcsNyBAQCBkZWYgY3JlYXRlX3BhcnNlcigpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNP
TiBmb3JtYXQiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249
InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtk
b3duIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBX
UFQgZGlyZWN0b3J5LiBVc2UgdGhpcyIKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8t
cm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBVc2UgdGhpcyAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAib3B0aW9uIGlmIHRoZSBsaW50IHNjcmlwdCBleGlzdHMgb3V0c2lkZSB0aGUg
cmVwb3NpdG9yeSIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtZ2xvYiIsIGhl
bHA9IkFkZGl0aW9uYWwgZmlsZSBnbG9iIHRvIGlnbm9yZS4iKQogICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYgbm8gcGF0aHMgYXJl
IHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKQEAgLTg3OSwxMSArOTAzLDExIEBAIGRl
ZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigp
KToKICAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGludCkgICMgdHlwZTogRGljdFtUZXh0
LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVw
b19yb290LCAibGludC53aGl0ZWxpc3QiKSkgYXMgZjoKLSAgICAgICAgd2hpdGVsaXN0LCBpZ25v
cmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0KGYpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9p
bihyZXBvX3Jvb3QsICJsaW50Lmlnbm9yZSIpKSBhcyBmOgorICAgICAgICBpZ25vcmVsaXN0LCBz
a2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChmKQogCiAgICAgaWYgaWdub3JlX2dsb2I6
Ci0gICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGlnbm9yZV9nbG9iKQorICAgICAgICBza2lwcGVk
X2ZpbGVzLmFkZChpZ25vcmVfZ2xvYikKIAogICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24iOiBv
dXRwdXRfZXJyb3JzX2pzb24sCiAgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBvdXRw
dXRfZXJyb3JzX21hcmtkb3duLApAQCAtODk5LDcgKzkyMyw3IEBAIGRlZiBsaW50KHJlcG9fcm9v
dCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0cigpKToKICAgICAgICAgICAg
ICAgICAgIGEgdHVwbGUgb2YgdGhlIGVycm9yIHR5cGUgYW5kIHRoZSBwYXRoIG90aGVyd2lzZQog
ICAgICAgICAiIiIKIAotICAgICAgICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIGVycm9ycykKKyAgICAgICAgZXJyb3JzID0gZmlsdGVyX2lnbm9yZWxpc3RfZXJy
b3JzKGlnbm9yZWxpc3QsIGVycm9ycykKIAogICAgICAgICBpZiBub3QgZXJyb3JzOgogICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKQEAgLTkxNiw3ICs5NDAsNyBAQCBkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CiAgICAgICAgICAgICBw
YXRocy5yZW1vdmUocGF0aCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgYW55
KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21hdGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBpZ25v
cmVkX2ZpbGVzKToKKyAgICAgICAgaWYgYW55KGZubWF0Y2guZm5tYXRjaChwYXRoLCBmaWxlX21h
dGNoKSBmb3IgZmlsZV9tYXRjaCBpbiBza2lwcGVkX2ZpbGVzKToKICAgICAgICAgICAgIHBhdGhz
LnJlbW92ZShwYXRoKQogICAgICAgICAgICAgY29udGludWUKIApAQCAtOTQyLDcgKzk2Niw3IEBA
IGRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIGlnbm9yZV9nbG9iPXN0
cigpKToKIAogcGF0aF9saW50cyA9IFtjaGVja19maWxlX3R5cGUsIGNoZWNrX3BhdGhfbGVuZ3Ro
LCBjaGVja193b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHksCiAgICAgICAgICAgICAg
IGNoZWNrX2dpdGlnbm9yZV9maWxlXQotYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNrX2Nzc19nbG9i
YWxseV91bmlxdWVdCithbGxfcGF0aHNfbGludHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1
ZSwgY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lc10KIGZpbGVfbGludHMgPSBbY2hl
Y2tfcmVnZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2Ny
aXB0X21ldGFkYXRhLAogICAgICAgICAgICAgICBjaGVja19haGVtX3N5c3RlbV9mb250XQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvcnVsZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvcnVsZXMucHkKaW5kZXggZmFhMjg1ZmQ3Y2RiY2M0MDZmOGMwMmFi
MDNlZDZiZWIzNmViMGJlZi4uNjk1ZjZjZDRlNTMyOGNhZjJmMDg1YTExNWQzMWE5YzBiNGFlMjcx
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3J1bGVzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpAQCAtMzIyLDYgKzMyMiwxNSBAQCBj
bGFzcyBUZXN0aGFybmVzc0luT3RoZXJUeXBlKFJ1bGUpOgogICAgIGRlc2NyaXB0aW9uID0gInRl
c3RoYXJuZXNzLmpzIGluY2x1ZGVkIGluIGEgJXMgdGVzdCIKIAogCitjbGFzcyBEdXBsaWNhdGVC
YXNlbmFtZVBhdGgoUnVsZSk6CisgICAgbmFtZSA9ICJEVVBMSUNBVEUtQkFTRU5BTUUtUEFUSCIK
KyAgICBkZXNjcmlwdGlvbiA9IGNvbGxhcHNlKCIiIgorICAgICAgICAgICAgRmlsZSBoYXMgaWRl
bnRpY2FsIGJhc2VuYW1lIHBhdGggKHBhdGggZXhjbHVkaW5nIGV4dGVuc2lvbikgYXMKKyAgICAg
ICAgICAgIG90aGVyIGZpbGUocykgKGZvdW5kIGV4dGVuc2lvbnM6ICVzKQorICAgICIiIikKKyAg
ICB0b19maXggPSAicmVuYW1lIGZpbGVzIHNvIHRoZXkgaGF2ZSB1bmlxdWUgYmFzZW5hbWUgcGF0
aHMiCisKKwogY2xhc3MgUmVnZXhwKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkpOgog
ICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgIGRlZiBwYXR0ZXJuKHNlbGYpOgpAQCAtNDYy
LDMgKzQ3MSwyNyBAQCBjbGFzcyBUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAoUmVnZXhwKToKICAg
ICBkZXNjcmlwdGlvbiA9ICJXaGl0ZXNwYWNlIGF0IEVPTCIKICAgICBwYXR0ZXJuID0gYiJbIFx0
XGZcdl0kIgogICAgIHRvX2ZpeCA9ICIiIlJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20g
YWxsIGxpbmVzIGluIHRoZSBmaWxlLiIiIgorCisKK2NsYXNzIEFzc2VydFRocm93c1JlZ2V4cChS
ZWdleHApOgorICAgIHBhdHRlcm4gPSBiciJbXi5dYXNzZXJ0X3Rocm93c1woIgorICAgIG5hbWUg
PSAiQVNTRVJUX1RIUk9XUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlRl
c3QtZmlsZSBsaW5lIGhhcyBhbiBgYXNzZXJ0X3Rocm93cyguLi4pYCBjYWxsIgorICAgIHRvX2Zp
eCA9ICIiIlJlcGxhY2Ugd2l0aCBgYXNzZXJ0X3Rocm93c19kb21gIG9yIGBhc3NlcnRfdGhyb3dz
X2pzYCBvciBgYXNzZXJ0X3Rocm93c19leGFjdGx5YCIiIgorCisKK2NsYXNzIFByb21pc2VSZWpl
Y3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyInByb21pc2VfcmVqZWN0c1woIgor
ICAgIG5hbWUgPSAiUFJPTUlTRV9SRUpFQ1RTIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0
bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3Jp
cHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFzIGEgYHByb21pc2VfcmVqZWN0cyguLi4pYCBjYWxs
IgorICAgIHRvX2ZpeCA9ICIiIlJlcGxhY2Ugd2l0aCBwcm9taXNlX3JlamVjdHNfZG9tIG9yIHBy
b21pc2VfcmVqZWN0c19qcyBvciBgcHJvbWlzZV9yZWplY3RzX2V4YWN0bHlgIiIiCisKKworY2xh
c3MgQXNzZXJ0UHJlY29uZGl0aW9uUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGJyIlte
Ll1hc3NlcnRfcHJlY29uZGl0aW9uXCgiCisgICAgbmFtZSA9ICJBU1NFUlQtUFJFQ09ORElUSU9O
IgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIs
ICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiVGVzdC1maWxlIGxpbmUgaGFz
IGFuIGBhc3NlcnRfcHJlY29uZGl0aW9uKC4uLilgIGNhbGwiCisgICAgdG9fZml4ID0gIiIiUmVw
bGFjZSB3aXRoIGBhc3NlcnRfaW1wbGVtZW50c2Agb3IgYGFzc2VydF9pbXBsZW1lbnRzX29wdGlv
bmFsYCIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQuaWdub3JlIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xp
bnQuaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEw
ZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC5pZ25vcmUKQEAgLTAsMCAr
MSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53
aGl0ZWxpc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3NjNlNDQzMmU1YWZhMjEyMzAzNTM0NWUxMzBkMDE4NzEwZmZkZDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQu
d2hpdGVsaXN0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotKjpicm9rZW5faWdub3JlZC5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMS9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1ZTU4NTNk
ZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2Eu
aHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1NWRhYjZhNzdjYjI4MTAzY2MxNThmZjBmOWNjZGU5NmI1
MjU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EuanMKQEAgLTAs
MCArMSw2IEBACisvLyBUaGlzIGlzIGEgZHVtbXkgSmF2YVNjcmlwdCBmaWxlLCBtZWFudCB0byBp
bmRpY2F0ZSBhICdzdXBwb3J0JyBmaWxlIG9mCisvLyBzb3J0cyB0aGF0IG1heSBiZSBpbmNsdWRl
ZCBieSBzb21lIHRlc3QuCisKK2Z1bmN0aW9uIGhlbGxvV29ybGQoKSB7CisgIHJldHVybiAnSGVs
bG8sIHdvcmxkISc7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9hLnhodG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGI0Y2MyZTUyMjNh
ODYyNTVlZmI1MzFhNGQ1YTQ0MzBmOTUxYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjEvYS54aHRtbApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMjU5M2IwNDVlZjQ3NWUwYWY1
ZTU4NTNkZThmZjU4YmNkNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9k
aXIxL2IuaHRtbApAQCAtMCwwICsxLDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjI5OTFkOWJl
NmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3Rlc3RzL2RpcjEvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIxL2EueGh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL2EueGh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
dGVzdHMvZGlyMi9hLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4YjRjYzJlNTIyM2E4NjI1NWVmYjUzMWE0
ZDVhNDQzMGY5NTFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMi9h
LnhodG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNjY5ZTY1M2JmYzIzN2I2
Mzc4ZjNhZTllZTY2NzUwYzU1MGJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0
cy9kaXIyL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS90ZXN0cy9kaXIyL2EueGh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwppbmRleCA0NjA1NmU2NzEzZmQzMTNkZmUyNGIx
Yjg4MmMyODM4OWNiZWNmYzljLi5mMzRkMTY3MzBmNzAwNGY3NGQyMzRjOWNjYWRiMmMwZWNlZDJi
NTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3czYy1pbXBvcnQubG9nCkBAIC0xOCw1ICsxOCw1IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Jyb2tlbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvZGVwZW5kZW5jeS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2xpbnQuaWdub3JlCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
ZmlsZV9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKaW5kZXggMDhjMDliNmIwOTUw
YjJjZjU0OGMzYjVlNDE1MzAzNTk3ZGQ4YzY1NC4uN2RhY2ZhZDYzODBkYzhiNjY4YTIyZGM3YzRm
ZTJlNzRkMzc1NDY5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC02MzMsNiArNjMzLDggQEAgZGVmIHRlc3RfbGF0ZV90
aW1lb3V0KCk6CiAgICAgICAgICAgICBdCiAKIAorIyBOb3RlOiBUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBwcmludCAqc3RhdGVtZW50KiAod2hpY2ggZG9lc24ndCBleGlzdCBpbiBweXRob24gMykuCisj
ICAgICAgIFRoZSBwcmludCAqZnVuY3Rpb24qIGlzIGNoZWNrZWQgaW4gdGVzdF9wcmludF9mdW5j
dGlvbiBiZWxvdy4KIEBweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3Qg
cGFyc2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKIGRlZiB0ZXN0X3ByaW50X3N0
YXRlbWVudCgpOgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6
XG4gIHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQpAQCAtNzk0LDYgKzc5NiwyMCBAQCBk
ZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgogICAgIF0KIAogCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX3RlbnRhdGl2ZSgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisKKyAgICAjIFRoZSB0
ZW50YXRpdmUgZmxhZyBjb3ZlcnMgdGVzdHMgdGhhdCBtYWtlIGFzc2VydGlvbnMgJ25vdCB5ZXQg
cmVxdWlyZWQgYnkKKyAgICAjIGFueSBzcGVjaWZpY2F0aW9uJywgc28gdGhleSBuZWVkIG5vdCBo
YXZlIGEgc3BlY2lmaWNhdGlvbiBsaW5rLgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci50ZW50YXRpdmUuaHRtbCIsIHNpeC5CeXRlc0lPKGNvZGUpKQor
ICAgIGFzc2VydCBub3QgZXJyb3JzCisKKwogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmaWxl
bmFtZSIsIFsKICAgICAiZm9vLndvcmtlci5qcyIsCiAgICAgImZvby5hbnkuanMiLApAQCAtODQy
LDE3ICs4NTgsMTcgQEAgZGVmIHRlc3Rfc2NyaXB0X21ldGFkYXRhKGZpbGVuYW1lLCBpbnB1dCwg
ZXJyb3IpOgogCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImdsb2JhbHMsZXJyb3IiLCBbCiAg
ICAgKGIiIiwgTm9uZSksCi0gICAgKGIiZGVmYXVsdCIsIE5vbmUpLAotICAgIChiIiFkZWZhdWx0
IiwgTm9uZSksCisgICAgKGIiZGVmYXVsdCIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAor
ICAgIChiIiFkZWZhdWx0IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCiAgICAgKGIid2lu
ZG93IiwgTm9uZSksCi0gICAgKGIiIXdpbmRvdyIsIE5vbmUpLAotICAgIChiIiFkZWRpY2F0ZWR3
b3JrZXIiLCBOb25lKSwKLSAgICAoYiJ3aW5kb3csICF3aW5kb3ciLCAiQlJPS0VOLUdMT0JBTC1N
RVRBREFUQSIpLAotICAgIChiIiFzZXJ2aWNld29ya2VyIiwgIkJST0tFTi1HTE9CQUwtTUVUQURB
VEEiKSwKLSAgICAoYiJzZXJ2aWNld29ya2VyLCAhc2VydmljZXdvcmtlciIsICJCUk9LRU4tR0xP
QkFMLU1FVEFEQVRBIiksCi0gICAgKGIid29ya2VyLCAhZGVkaWNhdGVkd29ya2VyIiwgTm9uZSks
Ci0gICAgKGIid29ya2VyLCAhc2VydmljZXdvcmtlciIsIE5vbmUpLAotICAgIChiIiF3b3JrZXIi
LCBOb25lKSwKKyAgICAoYiIhd2luZG93IiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisg
ICAgKGIiIWRlZGljYXRlZHdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAg
IChiIndpbmRvdywgIXdpbmRvdyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAorICAgIChi
IiFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1FVEFEQVRBIiksCisgICAgKGIic2Vy
dmljZXdvcmtlciwgIXNlcnZpY2V3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwK
KyAgICAoYiJ3b3JrZXIsICFkZWRpY2F0ZWR3b3JrZXIiLCAiVU5LTk9XTi1HTE9CQUwtTUVUQURB
VEEiKSwKKyAgICAoYiJ3b3JrZXIsICFzZXJ2aWNld29ya2VyIiwgIlVOS05PV04tR0xPQkFMLU1F
VEFEQVRBIiksCisgICAgKGIiIXdvcmtlciIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAog
ICAgIChiImZvbyIsICJVTktOT1dOLUdMT0JBTC1NRVRBREFUQSIpLAogICAgIChiIiFmb28iLCAi
VU5LTk9XTi1HTE9CQUwtTUVUQURBVEEiKSwKIF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weQppbmRleCBhZjJiN2QzZDRhYTE5ZjBjMWQ3MmE1NTc1YjUw
MTNjNzg5N2UxZGM0Li4xMGQ5NzI4YjQwNTc1MWJkYjI4ZGI1ZTAxOTMxNjJlYzdmNmRmNDg2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTgs
NyArOCw3IEBAIGltcG9ydCBzaXgKIAogZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9ydCByZXBvX3Jv
b3QKIGZyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKLWZyb20gLi5saW50IGltcG9ydCBm
aWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBjcmVhdGVfcGFy
c2VyCitmcm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzLCBwYXJzZV9p
Z25vcmVsaXN0LCBsaW50LCBjcmVhdGVfcGFyc2VyCiAKIF9kdW1teV9yZXBvID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkdW1teSIpCiAKQEAgLTE3LDggKzE3LDgg
QEAgZGVmIF9tb2NrX2xpbnQobmFtZSwgKiprd2FyZ3MpOgogICAgIHJldHVybiBtb2NrLnBhdGNo
KGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9d3JhcHBlZCwgKiprd2FyZ3Mp
CiAKIAotZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoKToKLSAgICB3aGl0ZWxpc3Qg
PSB7CitkZWYgdGVzdF9maWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoKToKKyAgICBpZ25vcmVsaXN0
ID0gewogICAgICAgICAnQ09OU09MRSc6IHsKICAgICAgICAgICAgICdzdmcvKic6IHsxMn0KICAg
ICAgICAgfSwKQEAgLTI2LDM0ICsyNiwzNCBAQCBkZWYgdGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vy
cm9ycygpOgogICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFsaXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRj
aCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUgc2FtZQotICAgIHdoaXRlbGlzdCA9IHtlOiB7b3Mu
cGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1zKCl9Ci0gICAgICAgICAgICAg
ICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5pdGVtcygpfQotICAgICMgcGF0aHMgcGFzc2VkIGlu
dG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMgYXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgIyBw
YXJzZV9pZ25vcmVsaXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUgbWF0Y2ggc3Ry
aW5nIHNvIG5lZWQgdG8gZG8gdGhlIHNhbWUKKyAgICBpZ25vcmVsaXN0ID0ge2U6IHtvcy5wYXRo
Lm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAg
Zm9yIGUsIHAgaW4gaWdub3JlbGlzdC5pdGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQogICAgIGZpbHRl
cmVkZmlsZSA9ICdzdmcvdGVzdC5odG1sJwogICAgIHVuZmlsdGVyZWRmaWxlID0gJ2h0bWwvdGVz
dC5odG1sJwogICAgICMgVGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGZpbHRlcmVkID0g
ZmlsdGVyX2lnbm9yZWxpc3RfZXJyb3JzKGlnbm9yZWxpc3QsIFtdKQogICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVs
aXN0LCBbXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVs
aXN0LCBbXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KICAgICAjIFRlc3RzIGZvciBmaWx0
ZXJpbmcgb24gZmlsZSBhbmQgbGluZSBudW1iZXIKLSAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEy
XV0pCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwg
W1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVk
ID09IFtdCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3Qs
IFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgZmlsdGVyZWQgPSBm
aWx0ZXJfaWdub3JlbGlzdF9lcnJvcnMoaWdub3JlbGlzdCwgW1snQ09OU09MRScsICcnLCB1bmZp
bHRlcmVkZmlsZSwgMTJdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCB1bmZpbHRlcmVkZmlsZSwgMTJdXQotICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAg
ICBmaWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydDT05T
T0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKICAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1sn
Q09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0KICAgICAjIFRlc3RzIGZvciBmaWx0ZXJp
bmcgb24ganVzdCBmaWxlCi0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBm
aWx0ZXJlZCA9IGZpbHRlcl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQg
VEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtd
Ci0gICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lO
REVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBmaWx0ZXJlZCA9IGZpbHRl
cl9pZ25vcmVsaXN0X2Vycm9ycyhpZ25vcmVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0
ZXJlZGZpbGUsIDExXV0pCiAgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCi0gICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycs
IHVuZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGZpbHRlcmVkID0gZmlsdGVyX2lnbm9yZWxpc3Rf
ZXJyb3JzKGlnbm9yZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxlLCAx
MV1dKQogICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRl
cmVkZmlsZSwgMTFdXQogCiAKLWRlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgpOgorZGVmIHRlc3Rf
cGFyc2VfaWdub3JlbGlzdCgpOgogICAgIGlucHV0X2J1ZmZlciA9IHNpeC5TdHJpbmdJTygiIiIK
ICMgQ29tbWVudAogQ1IgQVQgRU9MOiBzdmcvaW1wb3J0LyoKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IENSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCiAgICAgfQogICAgIGV4
cGVjdGVkX2RhdGEgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5p
dGVtcygpfQogICAgICAgICAgICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5p
dGVtcygpfQotICAgIGV4cGVjdGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3Ig
eCBpbiB7IioucGRmIiwgInJlc291cmNlcy8qIiwgIioucG5nIn19Ci0gICAgZGF0YSwgaWdub3Jl
ZCA9IHBhcnNlX3doaXRlbGlzdChpbnB1dF9idWZmZXIpCisgICAgZXhwZWN0ZWRfc2tpcHBlZCA9
IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGluIHsiKi5wZGYiLCAicmVzb3VyY2VzLyoiLCAi
Ki5wbmcifX0KKyAgICBkYXRhLCBza2lwcGVkX2ZpbGVzID0gcGFyc2VfaWdub3JlbGlzdChpbnB1
dF9idWZmZXIpCiAgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQotICAgIGFzc2VydCBp
Z25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKyAgICBhc3NlcnQgc2tpcHBlZF9maWxlcyA9PSBl
eHBlY3RlZF9za2lwcGVkCiAKIAogZGVmIHRlc3RfbGludF9ub19maWxlcyhjYXBsb2cpOgpAQCAt
Mzk4LDYgKzM5OCw2NSBAQCBkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9y
ZWRfZGlyKGNhcGxvZyk6CiAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCiAKIAorZGVmIHRl
c3RfY2hlY2tfdW5pcXVlX3Rlc3RoYXJuZXNzX2Jhc2VuYW1lX3NhbWVfYmFzZW5hbWUoY2FwbG9n
KToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIHRlc3RoYXJuZXNzIGZpbGVzIHdpdGgg
Y29uZmxpY3RpbmcgYmFzZW5hbWUgcGF0aHMuCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYS5odG1sJykpCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS54aHRtbCcpKQorCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikg
YXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmls
ZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAg
cnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInRlc3RzL2RpcjEvYS5odG1sIiwgInRlc3RzL2RpcjEv
YS54aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBiZSBvbmUgZmFp
bHVyZSBmb3IgZWFjaCBmaWxlLgorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAg
ICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBh
c3NlcnQgIkRVUExJQ0FURS1CQVNFTkFNRS1QQVRIIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfbmFtZShjYXBs
b2cpOgorICAgICMgUHJlY29uZGl0aW9uOiBUaGVyZSBhcmUgdHdvIHRlc3RoYXJuZXNzIGZpbGVz
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3aXRoCisgICAgIyBkaWZmZXJlbnQgbmFtZXMuCisgICAg
YXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfZHVtbXlfcmVwbywgJ3Rlc3RzJywg
J2RpcjEnLCAnYS5odG1sJykpCisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihfZHVtbXlfcmVwbywgJ3Rlc3RzJywgJ2RpcjEnLCAnYi5odG1sJykpCisKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsidGVzdHMvZGly
MS9hLmh0bWwiLCAidGVzdHMvZGlyMS9iLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9kaWZmZXJlbnRfZGlyKGNhcGxv
Zyk6CisgICAgIyBQcmVjb25kaXRpb246IFRoZXJlIGFyZSB0d28gdGVzdGhhcm5lc3MgZmlsZXMg
aW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzCisgICAgIyB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lLgor
ICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0
cycsICdkaXIxJywgJ2EuaHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRo
LmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIyJywgJ2EueGh0bWwnKSkKKworICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tf
ZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0
cy9kaXIxL2EuaHRtbCIsICJ0ZXN0cy9kaXIyL2EueGh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAg
ICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRo
LmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisK
K2RlZiB0ZXN0X2NoZWNrX3VuaXF1ZV90ZXN0aGFybmVzc19iYXNlbmFtZV9ub3RfdGVzdGhhcm5l
c3MoY2FwbG9nKToKKyAgICAjIFByZWNvbmRpdGlvbjogVGhlcmUgYXJlIG5vbi10ZXN0aGFybmVz
cyBmaWxlcyB3aXRoIGNvbmZsaWN0aW5nIGJhc2VuYW1lIHBhdGhzLgorICAgIGFzc2VydCBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3JlcG8sICd0ZXN0cycsICdkaXIxJywgJ2Eu
aHRtbCcpKQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oX2R1bW15X3Jl
cG8sICd0ZXN0cycsICdkaXIxJywgJ2EuanMnKSkKKworICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJ0ZXN0cy9kaXIxL2EuaHRtbCIsICJ0
ZXN0cy9kaXIxL2EuanMiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKIGRlZiB0ZXN0X2lnbm9yZV9nbG9i
KGNhcGxvZyk6CiAgICAgIyBMaW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBkaXJlY3RvcnksIGFu
ZCBwYXNzIGluIGlnbm9yZV9nbG9iIHRvIG9taXQgb25lCiAgICAgIyBvZiB0aGVtLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
b2NhbHBhdGhzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9sb2NhbHBhdGhzLnB5CmluZGV4IGY2ZTI0YjQ4NmQ1OGI3ODhiOTQ0MTE3NWM1ZTFj
ODlmOTM4NzRmZWIuLmNlM2I0MWUzMDBjOWYxMTM4MGVhMDY1ZjViMjg4ZDVhZWY4MTI1ODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbG9jYWxwYXRocy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xvY2FscGF0aHMucHkKQEAgLTYsNyArNiw3IEBAIHJlcG9fcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyKSkKIAogc3lzLnBh
dGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlKSkKIHN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4oaGVyZSwgIndwdHNlcnZlIikpCi1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5q
b2luKGhlcmUsICJweXdlYnNvY2tldCIpKQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9p
bihoZXJlLCAidGhpcmRfcGFydHkiLCAicHl3ZWJzb2NrZXQzIikpCiBzeXMucGF0aC5pbnNlcnQo
MCwgb3MucGF0aC5qb2luKGhlcmUsICJ0aGlyZF9wYXJ0eSIsICJhdG9taWN3cml0ZXMiKSkKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oaGVyZSwgInRoaXJkX3BhcnR5IiwgImF0dHJz
IiwgInNyYyIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCAidGhpcmRf
cGFydHkiLCAiZnVuY3NpZ3MiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDQzMDdiMWMyYzQzMzJiMjk0OTk5YTVmYTMxM2E2YTI4
ZWVjNTdmZjYuLjgwNDIzNDgwYmM1OTc1NDI2OTEwMTBhNTBjYTJjMTZmOTQ1YTcwODQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3hodG1sLmR0ZApAQCAt
MSwyMTI1ICsxLDIxMjUgQEAKLTwhRU5USVRZIFRhYiAiJiN4OTsiPgotPCFFTlRJVFkgTmV3TGlu
ZSAiJiN4QTsiPgotPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KLTwhRU5USVRZIHF1b3QgIiYjeDIy
OyI+Ci08IUVOVElUWSBRVU9UICImI3gyMjsiPgotPCFFTlRJVFkgbnVtICImI3gyMzsiPgotPCFF
TlRJVFkgZG9sbGFyICImI3gyNDsiPgotPCFFTlRJVFkgcGVyY250ICImI3gyNTsiPgotPCFFTlRJ
VFkgYW1wICImI3gyNjsjeDI2OyI+Ci08IUVOVElUWSBBTVAgIiYjeDI2OyN4MjY7Ij4KLTwhRU5U
SVRZIGFwb3MgIiYjeDI3OyI+Ci08IUVOVElUWSBscGFyICImI3gyODsiPgotPCFFTlRJVFkgcnBh
ciAiJiN4Mjk7Ij4KLTwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KLTwhRU5USVRZIG1pZGFzdCAiJiN4
MkE7Ij4KLTwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Ci08IUVOVElUWSBjb21tYSAiJiN4MkM7Ij4K
LTwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KLTwhRU5USVRZIHNvbCAiJiN4MkY7Ij4KLTwhRU5U
SVRZIGNvbG9uICImI3gzQTsiPgotPCFFTlRJVFkgc2VtaSAiJiN4M0I7Ij4KLTwhRU5USVRZIGx0
ICImI3gyNjsjeDNDOyI+Ci08IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiPgotPCFFTlRJVFkgbnZs
dCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Ci08IUVOVElUWSBlcXVhbHMgIiYjeDNEOyI+Ci08IUVO
VElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KLTwhRU5USVRZIGd0ICImI3gzRTsiPgotPCFFTlRJ
VFkgR1QgIiYjeDNFOyI+Ci08IUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQyOyI+Ci08IUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ij4KLTwhRU5USVRZIGNvbW1hdCAiJiN4NDA7Ij4KLTwhRU5USVRZIGxz
cWIgIiYjeDVCOyI+Ci08IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Ci08IUVOVElUWSBic29sICIm
I3g1QzsiPgotPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KLTwhRU5USVRZIHJicmFjayAiJiN4NUQ7
Ij4KLTwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KLTwhRU5USVRZIGxvd2JhciAiJiN4NUY7Ij4KLTwh
RU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgotPCFFTlRJVFkgZ3JhdmUgIiYjeDYwOyI+Ci08IUVO
VElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgotPCFFTlRJVFkgZmpsaWcgIiYjeDY2OyYj
eDZBOyI+Ci08IUVOVElUWSBsY3ViICImI3g3QjsiPgotPCFFTlRJVFkgbGJyYWNlICImI3g3Qjsi
PgotPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgotPCFFTlRJVFkgdmVydCAiJiN4N0M7Ij4KLTwh
RU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KLTwhRU5USVRZIHJjdWIgIiYjeDdEOyI+Ci08
IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Ci08IUVOVElUWSBuYnNwICImI3hBMDsiPgotPCFFTlRJ
VFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KLTwhRU5USVRZIGlleGNsICImI3hBMTsiPgot
PCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KLTwhRU5USVRZIHBvdW5kICImI3hBMzsiPgotPCFFTlRJ
VFkgY3VycmVuICImI3hBNDsiPgotPCFFTlRJVFkgeWVuICImI3hBNTsiPgotPCFFTlRJVFkgYnJ2
YmFyICImI3hBNjsiPgotPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KLTwhRU5USVRZIERvdCAiJiN4
QTg7Ij4KLTwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KLTwhRU5USVRZIERvdWJsZURvdCAiJiN4QTg7
Ij4KLTwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KLTwhRU5USVRZIGNvcHkgIiYjeEE5OyI+Ci08IUVO
VElUWSBDT1BZICImI3hBOTsiPgotPCFFTlRJVFkgb3JkZiAiJiN4QUE7Ij4KLTwhRU5USVRZIGxh
cXVvICImI3hBQjsiPgotPCFFTlRJVFkgbm90ICImI3hBQzsiPgotPCFFTlRJVFkgc2h5ICImI3hB
RDsiPgotPCFFTlRJVFkgcmVnICImI3hBRTsiPgotPCFFTlRJVFkgY2lyY2xlZFIgIiYjeEFFOyI+
Ci08IUVOVElUWSBSRUcgIiYjeEFFOyI+Ci08IUVOVElUWSBtYWNyICImI3hBRjsiPgotPCFFTlRJ
VFkgc3RybnMgIiYjeEFGOyI+Ci08IUVOVElUWSBkZWcgIiYjeEIwOyI+Ci08IUVOVElUWSBwbHVz
bW4gIiYjeEIxOyI+Ci08IUVOVElUWSBwbSAiJiN4QjE7Ij4KLTwhRU5USVRZIFBsdXNNaW51cyAi
JiN4QjE7Ij4KLTwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Ci08IUVOVElUWSBzdXAzICImI3hCMzsi
PgotPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICIm
I3hCNDsiPgotPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Ci08IUVOVElUWSBwYXJhICImI3hCNjsi
PgotPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VudGVyZG90ICImI3hCNzsi
PgotPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgotPCFFTlRJVFkgY2VkaWwgIiYjeEI4OyI+
Ci08IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgotPCFFTlRJVFkgc3VwMSAiJiN4Qjk7Ij4KLTwh
RU5USVRZIG9yZG0gIiYjeEJBOyI+Ci08IUVOVElUWSByYXF1byAiJiN4QkI7Ij4KLTwhRU5USVRZ
IGZyYWMxNCAiJiN4QkM7Ij4KLTwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7Ij4KLTwhRU5USVRZIGhh
bGYgIiYjeEJEOyI+Ci08IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Ci08IUVOVElUWSBpcXVlc3Qg
IiYjeEJGOyI+Ci08IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Ci08IUVOVElUWSBBYWN1dGUgIiYj
eEMxOyI+Ci08IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KLTwhRU5USVRZIEF0aWxkZSAiJiN4QzM7
Ij4KLTwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Ci08IUVOVElUWSBBcmluZyAiJiN4QzU7Ij4KLTwh
RU5USVRZIGFuZ3N0ICImI3hDNTsiPgotPCFFTlRJVFkgQUVsaWcgIiYjeEM2OyI+Ci08IUVOVElU
WSBDY2VkaWwgIiYjeEM3OyI+Ci08IUVOVElUWSBFZ3JhdmUgIiYjeEM4OyI+Ci08IUVOVElUWSBF
YWN1dGUgIiYjeEM5OyI+Ci08IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4KLTwhRU5USVRZIEV1bWwg
IiYjeENCOyI+Ci08IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Ci08IUVOVElUWSBJYWN1dGUgIiYj
eENEOyI+Ci08IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KLTwhRU5USVRZIEl1bWwgIiYjeENGOyI+
Ci08IUVOVElUWSBFVEggIiYjeEQwOyI+Ci08IUVOVElUWSBOdGlsZGUgIiYjeEQxOyI+Ci08IUVO
VElUWSBPZ3JhdmUgIiYjeEQyOyI+Ci08IUVOVElUWSBPYWN1dGUgIiYjeEQzOyI+Ci08IUVOVElU
WSBPY2lyYyAiJiN4RDQ7Ij4KLTwhRU5USVRZIE90aWxkZSAiJiN4RDU7Ij4KLTwhRU5USVRZIE91
bWwgIiYjeEQ2OyI+Ci08IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KLTwhRU5USVRZIE9zbGFzaCAi
JiN4RDg7Ij4KLTwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KLTwhRU5USVRZIFVhY3V0ZSAiJiN4
REE7Ij4KLTwhRU5USVRZIFVjaXJjICImI3hEQjsiPgotPCFFTlRJVFkgVXVtbCAiJiN4REM7Ij4K
LTwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KLTwhRU5USVRZIFRIT1JOICImI3hERTsiPgotPCFF
TlRJVFkgc3psaWcgIiYjeERGOyI+Ci08IUVOVElUWSBhZ3JhdmUgIiYjeEUwOyI+Ci08IUVOVElU
WSBhYWN1dGUgIiYjeEUxOyI+Ci08IUVOVElUWSBhY2lyYyAiJiN4RTI7Ij4KLTwhRU5USVRZIGF0
aWxkZSAiJiN4RTM7Ij4KLTwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Ci08IUVOVElUWSBhcmluZyAi
JiN4RTU7Ij4KLTwhRU5USVRZIGFlbGlnICImI3hFNjsiPgotPCFFTlRJVFkgY2NlZGlsICImI3hF
NzsiPgotPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgotPCFFTlRJVFkgZWFjdXRlICImI3hFOTsi
PgotPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Ci08IUVOVElUWSBldW1sICImI3hFQjsiPgotPCFF
TlRJVFkgaWdyYXZlICImI3hFQzsiPgotPCFFTlRJVFkgaWFjdXRlICImI3hFRDsiPgotPCFFTlRJ
VFkgaWNpcmMgIiYjeEVFOyI+Ci08IUVOVElUWSBpdW1sICImI3hFRjsiPgotPCFFTlRJVFkgZXRo
ICImI3hGMDsiPgotPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgotPCFFTlRJVFkgb2dyYXZlICIm
I3hGMjsiPgotPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgotPCFFTlRJVFkgb2NpcmMgIiYjeEY0
OyI+Ci08IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Ci08IUVOVElUWSBvdW1sICImI3hGNjsiPgot
PCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgotPCFFTlRJVFkgZGl2ICImI3hGNzsiPgotPCFFTlRJ
VFkgb3NsYXNoICImI3hGODsiPgotPCFFTlRJVFkgdWdyYXZlICImI3hGOTsiPgotPCFFTlRJVFkg
dWFjdXRlICImI3hGQTsiPgotPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+Ci08IUVOVElUWSB1dW1s
ICImI3hGQzsiPgotPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgotPCFFTlRJVFkgdGhvcm4gIiYj
eEZFOyI+Ci08IUVOVElUWSB5dW1sICImI3hGRjsiPgotPCFFTlRJVFkgQW1hY3IgIiYjeDEwMDsi
PgotPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgotPCFFTlRJVFkgQWJyZXZlICImI3gxMDI7Ij4K
LTwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Ci08IUVOVElUWSBBb2dvbiAiJiN4MTA0OyI+Ci08
IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Ci08IUVOVElUWSBDYWN1dGUgIiYjeDEwNjsiPgotPCFF
TlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KLTwhRU5USVRZIENjaXJjICImI3gxMDg7Ij4KLTwhRU5U
SVRZIGNjaXJjICImI3gxMDk7Ij4KLTwhRU5USVRZIENkb3QgIiYjeDEwQTsiPgotPCFFTlRJVFkg
Y2RvdCAiJiN4MTBCOyI+Ci08IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsiPgotPCFFTlRJVFkgY2Nh
cm9uICImI3gxMEQ7Ij4KLTwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+Ci08IUVOVElUWSBkY2Fy
b24gIiYjeDEwRjsiPgotPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4KLTwhRU5USVRZIGRzdHJv
ayAiJiN4MTExOyI+Ci08IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Ci08IUVOVElUWSBlbWFjciAi
JiN4MTEzOyI+Ci08IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KLTwhRU5USVRZIGVkb3QgIiYjeDEx
NzsiPgotPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgotPCFFTlRJVFkgZW9nb24gIiYjeDExOTsi
PgotPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KLTwhRU5USVRZIGVjYXJvbiAiJiN4MTFCOyI+
Ci08IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Ci08IUVOVElUWSBnY2lyYyAiJiN4MTFEOyI+Ci08
IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgotPCFFTlRJVFkgZ2JyZXZlICImI3gxMUY7Ij4KLTwh
RU5USVRZIEdkb3QgIiYjeDEyMDsiPgotPCFFTlRJVFkgZ2RvdCAiJiN4MTIxOyI+Ci08IUVOVElU
WSBHY2VkaWwgIiYjeDEyMjsiPgotPCFFTlRJVFkgSGNpcmMgIiYjeDEyNDsiPgotPCFFTlRJVFkg
aGNpcmMgIiYjeDEyNTsiPgotPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7Ij4KLTwhRU5USVRZIGhz
dHJvayAiJiN4MTI3OyI+Ci08IUVOVElUWSBJdGlsZGUgIiYjeDEyODsiPgotPCFFTlRJVFkgaXRp
bGRlICImI3gxMjk7Ij4KLTwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4KLTwhRU5USVRZIGltYWNy
ICImI3gxMkI7Ij4KLTwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KLTwhRU5USVRZIGlvZ29uICIm
I3gxMkY7Ij4KLTwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgotPCFFTlRJVFkgaW1hdGggIiYjeDEz
MTsiPgotPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KLTwhRU5USVRZIElKbGlnICImI3gxMzI7
Ij4KLTwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KLTwhRU5USVRZIEpjaXJjICImI3gxMzQ7Ij4K
LTwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KLTwhRU5USVRZIEtjZWRpbCAiJiN4MTM2OyI+Ci08
IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgotPCFFTlRJVFkga2dyZWVuICImI3gxMzg7Ij4KLTwh
RU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Ci08IUVOVElUWSBsYWN1dGUgIiYjeDEzQTsiPgotPCFF
TlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KLTwhRU5USVRZIGxjZWRpbCAiJiN4MTNDOyI+Ci08IUVO
VElUWSBMY2Fyb24gIiYjeDEzRDsiPgotPCFFTlRJVFkgbGNhcm9uICImI3gxM0U7Ij4KLTwhRU5U
SVRZIExtaWRvdCAiJiN4MTNGOyI+Ci08IUVOVElUWSBsbWlkb3QgIiYjeDE0MDsiPgotPCFFTlRJ
VFkgTHN0cm9rICImI3gxNDE7Ij4KLTwhRU5USVRZIGxzdHJvayAiJiN4MTQyOyI+Ci08IUVOVElU
WSBOYWN1dGUgIiYjeDE0MzsiPgotPCFFTlRJVFkgbmFjdXRlICImI3gxNDQ7Ij4KLTwhRU5USVRZ
IE5jZWRpbCAiJiN4MTQ1OyI+Ci08IUVOVElUWSBuY2VkaWwgIiYjeDE0NjsiPgotPCFFTlRJVFkg
TmNhcm9uICImI3gxNDc7Ij4KLTwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyI+Ci08IUVOVElUWSBu
YXBvcyAiJiN4MTQ5OyI+Ci08IUVOVElUWSBFTkcgIiYjeDE0QTsiPgotPCFFTlRJVFkgZW5nICIm
I3gxNEI7Ij4KLTwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KLTwhRU5USVRZIG9tYWNyICImI3gx
NEQ7Ij4KLTwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Ci08IUVOVElUWSBvZGJsYWMgIiYjeDE1
MTsiPgotPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgotPCFFTlRJVFkgb2VsaWcgIiYjeDE1Mzsi
PgotPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KLTwhRU5USVRZIHJhY3V0ZSAiJiN4MTU1OyI+
Ci08IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgotPCFFTlRJVFkgcmNlZGlsICImI3gxNTc7Ij4K
LTwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Ci08IUVOVElUWSByY2Fyb24gIiYjeDE1OTsiPgot
PCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KLTwhRU5USVRZIHNhY3V0ZSAiJiN4MTVCOyI+Ci08
IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Ci08IUVOVElUWSBzY2lyYyAiJiN4MTVEOyI+Ci08IUVO
VElUWSBTY2VkaWwgIiYjeDE1RTsiPgotPCFFTlRJVFkgc2NlZGlsICImI3gxNUY7Ij4KLTwhRU5U
SVRZIFNjYXJvbiAiJiN4MTYwOyI+Ci08IUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiPgotPCFFTlRJ
VFkgVGNlZGlsICImI3gxNjI7Ij4KLTwhRU5USVRZIHRjZWRpbCAiJiN4MTYzOyI+Ci08IUVOVElU
WSBUY2Fyb24gIiYjeDE2NDsiPgotPCFFTlRJVFkgdGNhcm9uICImI3gxNjU7Ij4KLTwhRU5USVRZ
IFRzdHJvayAiJiN4MTY2OyI+Ci08IUVOVElUWSB0c3Ryb2sgIiYjeDE2NzsiPgotPCFFTlRJVFkg
VXRpbGRlICImI3gxNjg7Ij4KLTwhRU5USVRZIHV0aWxkZSAiJiN4MTY5OyI+Ci08IUVOVElUWSBV
bWFjciAiJiN4MTZBOyI+Ci08IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+Ci08IUVOVElUWSBVYnJl
dmUgIiYjeDE2QzsiPgotPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4KLTwhRU5USVRZIFVyaW5n
ICImI3gxNkU7Ij4KLTwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KLTwhRU5USVRZIFVkYmxhYyAi
JiN4MTcwOyI+Ci08IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgotPCFFTlRJVFkgVW9nb24gIiYj
eDE3MjsiPgotPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgotPCFFTlRJVFkgV2NpcmMgIiYjeDE3
NDsiPgotPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgotPCFFTlRJVFkgWWNpcmMgIiYjeDE3Njsi
PgotPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgotPCFFTlRJVFkgWXVtbCAiJiN4MTc4OyI+Ci08
IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgotPCFFTlRJVFkgemFjdXRlICImI3gxN0E7Ij4KLTwh
RU5USVRZIFpkb3QgIiYjeDE3QjsiPgotPCFFTlRJVFkgemRvdCAiJiN4MTdDOyI+Ci08IUVOVElU
WSBaY2Fyb24gIiYjeDE3RDsiPgotPCFFTlRJVFkgemNhcm9uICImI3gxN0U7Ij4KLTwhRU5USVRZ
IGZub2YgIiYjeDE5MjsiPgotPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsiPgotPCFFTlRJVFkgZ2Fj
dXRlICImI3gxRjU7Ij4KLTwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4KLTwhRU5USVRZIGNpcmMg
IiYjeDJDNjsiPgotPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgotPCFFTlRJVFkgSGFjZWsgIiYj
eDJDNzsiPgotPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgotPCFFTlRJVFkgQnJldmUgIiYjeDJE
ODsiPgotPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KLTwhRU5USVRZIERpYWNyaXRpY2FsRG90ICIm
I3gyRDk7Ij4KLTwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgotPCFFTlRJVFkgb2dvbiAiJiN4MkRC
OyI+Ci08IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Ci08IUVOVElUWSBEaWFjcml0aWNhbFRpbGRl
ICImI3gyREM7Ij4KLTwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KLTwhRU5USVRZIERpYWNyaXRp
Y2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgotPCFFTlRJVFkgRG93bkJyZXZlICImI3gzMTE7Ij4K
LTwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KLTwhRU5USVRZIEJldGEgIiYjeDM5MjsiPgotPCFF
TlRJVFkgR2FtbWEgIiYjeDM5MzsiPgotPCFFTlRJVFkgRGVsdGEgIiYjeDM5NDsiPgotPCFFTlRJ
VFkgRXBzaWxvbiAiJiN4Mzk1OyI+Ci08IUVOVElUWSBaZXRhICImI3gzOTY7Ij4KLTwhRU5USVRZ
IEV0YSAiJiN4Mzk3OyI+Ci08IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+Ci08IUVOVElUWSBJb3Rh
ICImI3gzOTk7Ij4KLTwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KLTwhRU5USVRZIExhbWJkYSAi
JiN4MzlCOyI+Ci08IUVOVElUWSBNdSAiJiN4MzlDOyI+Ci08IUVOVElUWSBOdSAiJiN4MzlEOyI+
Ci08IUVOVElUWSBYaSAiJiN4MzlFOyI+Ci08IUVOVElUWSBPbWljcm9uICImI3gzOUY7Ij4KLTwh
RU5USVRZIFBpICImI3gzQTA7Ij4KLTwhRU5USVRZIFJobyAiJiN4M0ExOyI+Ci08IUVOVElUWSBT
aWdtYSAiJiN4M0EzOyI+Ci08IUVOVElUWSBUYXUgIiYjeDNBNDsiPgotPCFFTlRJVFkgVXBzaWxv
biAiJiN4M0E1OyI+Ci08IUVOVElUWSBQaGkgIiYjeDNBNjsiPgotPCFFTlRJVFkgQ2hpICImI3gz
QTc7Ij4KLTwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Ci08IUVOVElUWSBPbWVnYSAiJiN4M0E5OyI+
Ci08IUVOVElUWSBvaG0gIiYjeDNBOTsiPgotPCFFTlRJVFkgYWxwaGEgIiYjeDNCMTsiPgotPCFF
TlRJVFkgYmV0YSAiJiN4M0IyOyI+Ci08IUVOVElUWSBnYW1tYSAiJiN4M0IzOyI+Ci08IUVOVElU
WSBkZWx0YSAiJiN4M0I0OyI+Ci08IUVOVElUWSBlcHNpICImI3gzQjU7Ij4KLTwhRU5USVRZIGVw
c2lsb24gIiYjeDNCNTsiPgotPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+Ci08IUVOVElUWSBldGEg
IiYjeDNCNzsiPgotPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgotPCFFTlRJVFkgaW90YSAiJiN4
M0I5OyI+Ci08IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Ci08IUVOVElUWSBsYW1iZGEgIiYjeDNC
QjsiPgotPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgotPCFFTlRJVFkgbnUgIiYjeDNCRDsiPgotPCFF
TlRJVFkgeGkgIiYjeDNCRTsiPgotPCFFTlRJVFkgb21pY3JvbiAiJiN4M0JGOyI+Ci08IUVOVElU
WSBwaSAiJiN4M0MwOyI+Ci08IUVOVElUWSByaG8gIiYjeDNDMTsiPgotPCFFTlRJVFkgc2lnbWF2
ICImI3gzQzI7Ij4KLTwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4KLTwhRU5USVRZIHNpZ21h
ZiAiJiN4M0MyOyI+Ci08IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Ci08IUVOVElUWSB0YXUgIiYj
eDNDNDsiPgotPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Ci08IUVOVElUWSB1cHNpbG9uICImI3gz
QzU7Ij4KLTwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Ci08IUVOVElUWSBjaGkgIiYjeDNDNzsiPgot
PCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KLTwhRU5USVRZIG9tZWdhICImI3gzQzk7Ij4KLTwhRU5U
SVRZIHRoZXRhdiAiJiN4M0QxOyI+Ci08IUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyI+Ci08IUVO
VElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Ci08IUVOVElUWSBVcHNpICImI3gzRDI7Ij4KLTwhRU5U
SVRZIHVwc2loICImI3gzRDI7Ij4KLTwhRU5USVRZIHN0cmFpZ2h0cGhpICImI3gzRDU7Ij4KLTwh
RU5USVRZIHBoaXYgIiYjeDNENTsiPgotPCFFTlRJVFkgdmFycGhpICImI3gzRDU7Ij4KLTwhRU5U
SVRZIHBpdiAiJiN4M0Q2OyI+Ci08IUVOVElUWSB2YXJwaSAiJiN4M0Q2OyI+Ci08IUVOVElUWSBH
YW1tYWQgIiYjeDNEQzsiPgotPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7Ij4KLTwhRU5USVRZIGRp
Z2FtbWEgIiYjeDNERDsiPgotPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7Ij4KLTwhRU5USVRZIHZh
cmthcHBhICImI3gzRjA7Ij4KLTwhRU5USVRZIHJob3YgIiYjeDNGMTsiPgotPCFFTlRJVFkgdmFy
cmhvICImI3gzRjE7Ij4KLTwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4KLTwhRU5USVRZIHN0cmFp
Z2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Ci08IUVOVElUWSB2YXJlcHNpbG9uICImI3gzRjU7Ij4KLTwh
RU5USVRZIGJlcHNpICImI3gzRjY7Ij4KLTwhRU5USVRZIGJhY2tlcHNpbG9uICImI3gzRjY7Ij4K
LTwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgotPCFFTlRJVFkgREpjeSAiJiN4NDAyOyI+Ci08IUVO
VElUWSBHSmN5ICImI3g0MDM7Ij4KLTwhRU5USVRZIEp1a2N5ICImI3g0MDQ7Ij4KLTwhRU5USVRZ
IERTY3kgIiYjeDQwNTsiPgotPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsiPgotPCFFTlRJVFkgWUlj
eSAiJiN4NDA3OyI+Ci08IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgotPCFFTlRJVFkgTEpjeSAi
JiN4NDA5OyI+Ci08IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KLTwhRU5USVRZIFRTSGN5ICImI3g0
MEI7Ij4KLTwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgotPCFFTlRJVFkgVWJyY3kgIiYjeDQwRTsi
PgotPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Ci08IUVOVElUWSBBY3kgIiYjeDQxMDsiPgotPCFF
TlRJVFkgQmN5ICImI3g0MTE7Ij4KLTwhRU5USVRZIFZjeSAiJiN4NDEyOyI+Ci08IUVOVElUWSBH
Y3kgIiYjeDQxMzsiPgotPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KLTwhRU5USVRZIElFY3kgIiYj
eDQxNTsiPgotPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Ci08IUVOVElUWSBaY3kgIiYjeDQxNzsi
PgotPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KLTwhRU5USVRZIEpjeSAiJiN4NDE5OyI+Ci08IUVO
VElUWSBLY3kgIiYjeDQxQTsiPgotPCFFTlRJVFkgTGN5ICImI3g0MUI7Ij4KLTwhRU5USVRZIE1j
eSAiJiN4NDFDOyI+Ci08IUVOVElUWSBOY3kgIiYjeDQxRDsiPgotPCFFTlRJVFkgT2N5ICImI3g0
MUU7Ij4KLTwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Ci08IUVOVElUWSBSY3kgIiYjeDQyMDsiPgot
PCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KLTwhRU5USVRZIFRjeSAiJiN4NDIyOyI+Ci08IUVOVElU
WSBVY3kgIiYjeDQyMzsiPgotPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4KLTwhRU5USVRZIEtIY3kg
IiYjeDQyNTsiPgotPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Ci08IUVOVElUWSBDSGN5ICImI3g0
Mjc7Ij4KLTwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgotPCFFTlRJVFkgU0hDSGN5ICImI3g0Mjk7
Ij4KLTwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Ci08IUVOVElUWSBZY3kgIiYjeDQyQjsiPgot
PCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KLTwhRU5USVRZIEVjeSAiJiN4NDJEOyI+Ci08IUVO
VElUWSBZVWN5ICImI3g0MkU7Ij4KLTwhRU5USVRZIFlBY3kgIiYjeDQyRjsiPgotPCFFTlRJVFkg
YWN5ICImI3g0MzA7Ij4KLTwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Ci08IUVOVElUWSB2Y3kgIiYj
eDQzMjsiPgotPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KLTwhRU5USVRZIGRjeSAiJiN4NDM0OyI+
Ci08IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KLTwhRU5USVRZIHpoY3kgIiYjeDQzNjsiPgotPCFF
TlRJVFkgemN5ICImI3g0Mzc7Ij4KLTwhRU5USVRZIGljeSAiJiN4NDM4OyI+Ci08IUVOVElUWSBq
Y3kgIiYjeDQzOTsiPgotPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KLTwhRU5USVRZIGxjeSAiJiN4
NDNCOyI+Ci08IUVOVElUWSBtY3kgIiYjeDQzQzsiPgotPCFFTlRJVFkgbmN5ICImI3g0M0Q7Ij4K
LTwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Ci08IUVOVElUWSBwY3kgIiYjeDQzRjsiPgotPCFFTlRJ
VFkgcmN5ICImI3g0NDA7Ij4KLTwhRU5USVRZIHNjeSAiJiN4NDQxOyI+Ci08IUVOVElUWSB0Y3kg
IiYjeDQ0MjsiPgotPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KLTwhRU5USVRZIGZjeSAiJiN4NDQ0
OyI+Ci08IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KLTwhRU5USVRZIHRzY3kgIiYjeDQ0NjsiPgot
PCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Ci08IUVOVElUWSBzaGN5ICImI3g0NDg7Ij4KLTwhRU5U
SVRZIHNoY2hjeSAiJiN4NDQ5OyI+Ci08IUVOVElUWSBoYXJkY3kgIiYjeDQ0QTsiPgotPCFFTlRJ
VFkgeWN5ICImI3g0NEI7Ij4KLTwhRU5USVRZIHNvZnRjeSAiJiN4NDRDOyI+Ci08IUVOVElUWSBl
Y3kgIiYjeDQ0RDsiPgotPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Ci08IUVOVElUWSB5YWN5ICIm
I3g0NEY7Ij4KLTwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgotPCFFTlRJVFkgZGpjeSAiJiN4NDUy
OyI+Ci08IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KLTwhRU5USVRZIGp1a2N5ICImI3g0NTQ7Ij4K
LTwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgotPCFFTlRJVFkgaXVrY3kgIiYjeDQ1NjsiPgotPCFF
TlRJVFkgeWljeSAiJiN4NDU3OyI+Ci08IUVOVElUWSBqc2VyY3kgIiYjeDQ1ODsiPgotPCFFTlRJ
VFkgbGpjeSAiJiN4NDU5OyI+Ci08IUVOVElUWSBuamN5ICImI3g0NUE7Ij4KLTwhRU5USVRZIHRz
aGN5ICImI3g0NUI7Ij4KLTwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgotPCFFTlRJVFkgdWJyY3kg
IiYjeDQ1RTsiPgotPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Ci08IUVOVElUWSBlbnNwICImI3gy
MDAyOyI+Ci08IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Ci08IUVOVElUWSBlbXNwMTMgIiYjeDIw
MDQ7Ij4KLTwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgotPCFFTlRJVFkgbnVtc3AgIiYjeDIw
MDc7Ij4KLTwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgotPCFFTlRJVFkgdGhpbnNwICImI3gy
MDA5OyI+Ci08IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KLTwhRU5USVRZIGhhaXJzcCAi
JiN4MjAwQTsiPgotPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsiPgotPCFFTlRJVFkg
WmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZlVmVyeVRoaW5TcGFj
ZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ij4KLTwh
RU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KLTwhRU5USVRZIE5lZ2F0aXZl
VGhpY2tTcGFjZSAiJiN4MjAwQjsiPgotPCFFTlRJVFkgenduaiAiJiN4MjAwQzsiPgotPCFFTlRJ
VFkgendqICImI3gyMDBEOyI+Ci08IUVOVElUWSBscm0gIiYjeDIwMEU7Ij4KLTwhRU5USVRZIHJs
bSAiJiN4MjAwRjsiPgotPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+Ci08IUVOVElUWSBkYXNo
ICImI3gyMDEwOyI+Ci08IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgotPCFFTlRJVFkgbWRhc2gg
IiYjeDIwMTQ7Ij4KLTwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgotPCFFTlRJVFkgVmVyYmFy
ICImI3gyMDE2OyI+Ci08IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Ci08IUVOVElUWSBsc3F1byAi
JiN4MjAxODsiPgotPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ij4KLTwhRU5USVRZ
IHJzcXVvICImI3gyMDE5OyI+Ci08IUVOVElUWSByc3F1b3IgIiYjeDIwMTk7Ij4KLTwhRU5USVRZ
IENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgotPCFFTlRJVFkgbHNxdW9yICImI3gyMDFBOyI+
Ci08IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgotPCFFTlRJVFkgbGRxdW8gIiYjeDIwMUM7Ij4K
LTwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+Ci08IUVOVElUWSByZHF1
byAiJiN4MjAxRDsiPgotPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+Ci08IUVOVElUWSBDbG9z
ZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KLTwhRU5USVRZIGxkcXVvciAiJiN4MjAxRTsi
PgotPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KLTwhRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsi
PgotPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Ci08IUVOVElUWSBkZGFnZ2VyICImI3gyMDIx
OyI+Ci08IUVOVElUWSBidWxsICImI3gyMDIyOyI+Ci08IUVOVElUWSBidWxsZXQgIiYjeDIwMjI7
Ij4KLTwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KLTwhRU5USVRZIGhlbGxpcCAiJiN4MjAyNjsi
PgotPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgotPCFFTlRJVFkgcGVybWlsICImI3gyMDMwOyI+
Ci08IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Ci08IUVOVElUWSBwcmltZSAiJiN4MjAzMjsi
PgotPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KLTwhRU5USVRZIHRwcmltZSAiJiN4MjAzNDsi
PgotPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Ci08IUVOVElUWSBiYWNrcHJpbWUgIiYjeDIw
MzU7Ij4KLTwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgotPCFFTlRJVFkgcnNhcXVvICImI3gy
MDNBOyI+Ci08IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgotPCFFTlRJVFkgT3ZlckJhciAiJiN4
MjAzRTsiPgotPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KLTwhRU5USVRZIGh5YnVsbCAiJiN4
MjA0MzsiPgotPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KLTwhRU5USVRZIGJzZW1pICImI3gy
MDRGOyI+Ci08IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KLTwhRU5USVRZIE1lZGl1bVNwYWNl
ICImI3gyMDVGOyI+Ci08IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVGOyYjeDIwMEE7Ij4KLTwh
RU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KLTwhRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIw
NjE7Ij4KLTwhRU5USVRZIGFmICImI3gyMDYxOyI+Ci08IUVOVElUWSBJbnZpc2libGVUaW1lcyAi
JiN4MjA2MjsiPgotPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KLTwhRU5USVRZIEludmlzaWJsZUNv
bW1hICImI3gyMDYzOyI+Ci08IUVOVElUWSBpYyAiJiN4MjA2MzsiPgotPCFFTlRJVFkgZXVybyAi
JiN4MjBBQzsiPgotPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgotPCFFTlRJVFkgVHJpcGxlRG90
ICImI3gyMERCOyI+Ci08IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4KLTwhRU5USVRZIENvcGYg
IiYjeDIxMDI7Ij4KLTwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsiPgotPCFFTlRJVFkgaW5j
YXJlICImI3gyMTA1OyI+Ci08IUVOVElUWSBnc2NyICImI3gyMTBBOyI+Ci08IUVOVElUWSBoYW1p
bHQgIiYjeDIxMEI7Ij4KLTwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiPgotPCFFTlRJ
VFkgSHNjciAiJiN4MjEwQjsiPgotPCFFTlRJVFkgSGZyICImI3gyMTBDOyI+Ci08IUVOVElUWSBQ
b2luY2FyZXBsYW5lICImI3gyMTBDOyI+Ci08IUVOVElUWSBxdWF0ZXJuaW9ucyAiJiN4MjEwRDsi
PgotPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgotPCFFTlRJVFkgcGxhbmNraCAiJiN4MjEwRTsi
PgotPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Ci08IUVOVElUWSBoYmFyICImI3gyMTBGOyI+
Ci08IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KLTwhRU5USVRZIGhzbGFzaCAiJiN4MjEwRjsi
PgotPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgotPCFFTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7
Ij4KLTwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Ci08IUVOVElUWSBJbSAiJiN4MjExMTsiPgot
PCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KLTwhRU5USVRZIElmciAiJiN4MjExMTsiPgot
PCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgotPCFFTlRJVFkgbGFncmFuICImI3gyMTEyOyI+Ci08
IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Ci08IUVOVElUWSBlbGwgIiYjeDIxMTM7Ij4K
LTwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KLTwhRU5USVRZIG5hdHVyYWxzICImI3gyMTE1OyI+
Ci08IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KLTwhRU5USVRZIGNvcHlzciAiJiN4MjExNzsi
PgotPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Ci08IUVOVElUWSB3cCAiJiN4MjExODsiPgot
PCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgotPCFFTlRJVFkgcHJpbWVzICImI3gyMTE5OyI+Ci08
IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KLTwhRU5USVRZIFFvcGYgIiYjeDIxMUE7Ij4K
LTwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KLTwhRU5USVRZIHJlYWxpbmUgIiYjeDIxMUI7Ij4K
LTwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KLTwhRU5USVRZIFJlICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscGFydCAiJiN4MjExQzsiPgotPCFFTlRJVFkgUmZyICImI3gyMTFDOyI+Ci08IUVO
VElUWSByZWFscyAiJiN4MjExRDsiPgotPCFFTlRJVFkgUm9wZiAiJiN4MjExRDsiPgotPCFFTlRJ
VFkgcnggIiYjeDIxMUU7Ij4KLTwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+Ci08IUVOVElUWSBU
UkFERSAiJiN4MjEyMjsiPgotPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZ
IFpvcGYgIiYjeDIxMjQ7Ij4KLTwhRU5USVRZIG1obyAiJiN4MjEyNzsiPgotPCFFTlRJVFkgWmZy
ICImI3gyMTI4OyI+Ci08IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4KLTwhRU5USVRZIGlpb3Rh
ICImI3gyMTI5OyI+Ci08IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJlcm5v
dWxsaXMgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIEJzY3IgIiYjeDIxMkM7Ij4KLTwhRU5USVRZIENm
ciAiJiN4MjEyRDsiPgotPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsiPgotPCFFTlRJVFkgZXNj
ciAiJiN4MjEyRjsiPgotPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgotPCFFTlRJVFkgZXhwZWN0
YXRpb24gIiYjeDIxMzA7Ij4KLTwhRU5USVRZIEZzY3IgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIEZv
dXJpZXJ0cmYgIiYjeDIxMzE7Ij4KLTwhRU5USVRZIHBobW1hdCAiJiN4MjEzMzsiPgotPCFFTlRJ
VFkgTWVsbGludHJmICImI3gyMTMzOyI+Ci08IUVOVElUWSBNc2NyICImI3gyMTMzOyI+Ci08IUVO
VElUWSBvcmRlciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgb3JkZXJvZiAiJiN4MjEzNDsiPgotPCFF
TlRJVFkgb3NjciAiJiN4MjEzNDsiPgotPCFFTlRJVFkgYWxlZnN5bSAiJiN4MjEzNTsiPgotPCFF
TlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KLTwhRU5USVRZIGJldGggIiYjeDIxMzY7Ij4KLTwhRU5U
SVRZIGdpbWVsICImI3gyMTM3OyI+Ci08IUVOVElUWSBkYWxldGggIiYjeDIxMzg7Ij4KLTwhRU5U
SVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Ci08IUVOVElUWSBERCAiJiN4MjE0
NTsiPgotPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgotPCFFTlRJVFkgZGQgIiYj
eDIxNDY7Ij4KLTwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0NzsiPgotPCFFTlRJVFkgZXhw
b25lbnRpYWxlICImI3gyMTQ3OyI+Ci08IUVOVElUWSBlZSAiJiN4MjE0NzsiPgotPCFFTlRJVFkg
SW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgotPCFFTlRJVFkgaWkgIiYjeDIxNDg7Ij4KLTwhRU5USVRZ
IGZyYWMxMyAiJiN4MjE1MzsiPgotPCFFTlRJVFkgZnJhYzIzICImI3gyMTU0OyI+Ci08IUVOVElU
WSBmcmFjMTUgIiYjeDIxNTU7Ij4KLTwhRU5USVRZIGZyYWMyNSAiJiN4MjE1NjsiPgotPCFFTlRJ
VFkgZnJhYzM1ICImI3gyMTU3OyI+Ci08IUVOVElUWSBmcmFjNDUgIiYjeDIxNTg7Ij4KLTwhRU5U
SVRZIGZyYWMxNiAiJiN4MjE1OTsiPgotPCFFTlRJVFkgZnJhYzU2ICImI3gyMTVBOyI+Ci08IUVO
VElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KLTwhRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiPgotPCFF
TlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Ci08IUVOVElUWSBmcmFjNzggIiYjeDIxNUU7Ij4KLTwh
RU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIGxlZnRhcnJvdyAiJiN4MjE5MDsiPgot
PCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Ci08IUVOVElUWSBzbGFyciAiJiN4MjE5MDsi
PgotPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KLTwhRU5USVRZIHVhcnIgIiYj
eDIxOTE7Ij4KLTwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KLTwhRU5USVRZIFVwQXJyb3cg
IiYjeDIxOTE7Ij4KLTwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsiPgotPCFFTlRJVFkg
cmFyciAiJiN4MjE5MjsiPgotPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJ
VFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ij4KLTwh
RU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgotPCFFTlRJVFkgZGFyciAiJiN4MjE5
MzsiPgotPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Ci08IUVOVElUWSBEb3duQXJyb3cg
IiYjeDIxOTM7Ij4KLTwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gyMTkzOyI+Ci08IUVOVElU
WSBoYXJyICImI3gyMTk0OyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRhcnJvdyAiJiN4MjE5NDsiPgot
PCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KLTwhRU5USVRZIHZhcnIgIiYjeDIx
OTU7Ij4KLTwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Ci08IUVOVElUWSBVcERvd25B
cnJvdyAiJiN4MjE5NTsiPgotPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7Ij4KLTwhRU5USVRZIFVw
cGVyTGVmdEFycm93ICImI3gyMTk2OyI+Ci08IUVOVElUWSBud2Fycm93ICImI3gyMTk2OyI+Ci08
IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgotPCFFTlRJVFkgVXBwZXJSaWdodEFycm93ICImI3gy
MTk3OyI+Ci08IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Ci08IUVOVElUWSBzZWFyciAiJiN4
MjE5ODsiPgotPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgotPCFFTlRJVFkgTG93ZXJSaWdo
dEFycm93ICImI3gyMTk4OyI+Ci08IUVOVElUWSBzd2FyciAiJiN4MjE5OTsiPgotPCFFTlRJVFkg
c3dhcnJvdyAiJiN4MjE5OTsiPgotPCFFTlRJVFkgTG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ij4K
LTwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Ci08IUVOVElUWSBubGVmdGFycm93ICImI3gyMTlB
OyI+Ci08IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgotPCFFTlRJVFkgbnJpZ2h0YXJyb3cgIiYj
eDIxOUI7Ij4KLTwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Ci08IUVOVElUWSByaWdodHNxdWln
YXJyb3cgIiYjeDIxOUQ7Ij4KLTwhRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ij4KLTwh
RU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KLTwhRU5USVRZIHR3b2hlYWRsZWZ0YXJyb3cgIiYjeDIx
OUU7Ij4KLTwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KLTwhRU5USVRZIFJhcnIgIiYjeDIxQTA7
Ij4KLTwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+Ci08IUVOVElUWSBEYXJy
ICImI3gyMUExOyI+Ci08IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIGxlZnRh
cnJvd3RhaWwgIiYjeDIxQTI7Ij4KLTwhRU5USVRZIHJhcnJ0bCAiJiN4MjFBMzsiPgotPCFFTlRJ
VFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KLTwhRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4
MjFBNDsiPgotPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgotPCFFTlRJVFkgVXBUZWVB
cnJvdyAiJiN4MjFBNTsiPgotPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ij4KLTwhRU5USVRZ
IG1hcCAiJiN4MjFBNjsiPgotPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAiJiN4MjFBNjsiPgotPCFF
TlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Ci08IUVOVElUWSBEb3duVGVlQXJyb3cgIiYjeDIxQTc7
Ij4KLTwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KLTwhRU5USVRZIGxhcnJoayAiJiN4
MjFBOTsiPgotPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsiPgotPCFFTlRJVFkgcmFy
cmhrICImI3gyMUFBOyI+Ci08IUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiPgotPCFF
TlRJVFkgbGFycmxwICImI3gyMUFCOyI+Ci08IUVOVElUWSBsb29wYXJyb3dsZWZ0ICImI3gyMUFC
OyI+Ci08IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KLTwhRU5USVRZIGxvb3BhcnJvd3JpZ2h0
ICImI3gyMUFDOyI+Ci08IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbGVmdHJp
Z2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgotPCFFTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ij4KLTwh
RU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgotPCFFTlRJVFkgbHNoICImI3gyMUIw
OyI+Ci08IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KLTwhRU5USVRZIHJzaCAiJiN4MjFCMTsiPgot
PCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Ci08IUVOVElUWSBsZHNoICImI3gyMUIyOyI+Ci08IUVO
VElUWSByZHNoICImI3gyMUIzOyI+Ci08IUVOVElUWSBjcmFyciAiJiN4MjFCNTsiPgotPCFFTlRJ
VFkgY3VsYXJyICImI3gyMUI2OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93bGVmdCAiJiN4MjFCNjsi
PgotPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Ci08IUVOVElUWSBjdXJ2ZWFycm93cmlnaHQg
IiYjeDIxQjc7Ij4KLTwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Ci08IUVOVElUWSBjaXJjbGVh
cnJvd2xlZnQgIiYjeDIxQkE7Ij4KLTwhRU5USVRZIG9yYXJyICImI3gyMUJCOyI+Ci08IUVOVElU
WSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Ci08IUVOVElUWSBsaGFydSAiJiN4MjFCQzsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGVmdGhhcnBvb251
cCAiJiN4MjFCQzsiPgotPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4KLTwhRU5USVRZIGxlZnRo
YXJwb29uZG93biAiJiN4MjFCRDsiPgotPCFFTlRJVFkgRG93bkxlZnRWZWN0b3IgIiYjeDIxQkQ7
Ij4KLTwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Ci08IUVOVElUWSB1cGhhcnBvb25yaWdodCAi
JiN4MjFCRTsiPgotPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFCRTsiPgotPCFFTlRJVFkg
dWhhcmwgIiYjeDIxQkY7Ij4KLTwhRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ij4KLTwh
RU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgotPCFFTlRJVFkgcmhhcnUgIiYjeDIxQzA7
Ij4KLTwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Ci08IUVOVElUWSByaWdodGhhcnBv
b251cCAiJiN4MjFDMDsiPgotPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7Ij4KLTwhRU5USVRZIHJp
Z2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvciAiJiN4
MjFDMTsiPgotPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blZl
Y3RvciAiJiN4MjFDMjsiPgotPCFFTlRJVFkgZG93bmhhcnBvb25yaWdodCAiJiN4MjFDMjsiPgot
PCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIExlZnREb3duVmVjdG9yICImI3gy
MUMzOyI+Ci08IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7Ij4KLTwhRU5USVRZIHJs
YXJyICImI3gyMUM0OyI+Ci08IUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KLTwhRU5USVRZIHVkYXJyICIm
I3gyMUM1OyI+Ci08IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyI+Ci08IUVOVElU
WSBscmFyciAiJiN4MjFDNjsiPgotPCFFTlRJVFkgbGVmdHJpZ2h0YXJyb3dzICImI3gyMUM2OyI+
Ci08IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+Ci08IUVOVElUWSBsbGFy
ciAiJiN4MjFDNzsiPgotPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ij4KLTwhRU5U
SVRZIHV1YXJyICImI3gyMUM4OyI+Ci08IUVOVElUWSB1cHVwYXJyb3dzICImI3gyMUM4OyI+Ci08
IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgotPCFFTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4
MjFDOTsiPgotPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KLTwhRU5USVRZIGRvd25kb3duYXJy
b3dzICImI3gyMUNBOyI+Ci08IUVOVElUWSBscmhhciAiJiN4MjFDQjsiPgotPCFFTlRJVFkgUmV2
ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Ci08IUVOVElUWSBsZWZ0cmlnaHRoYXJwb29ucyAi
JiN4MjFDQjsiPgotPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KLTwhRU5USVRZIHJpZ2h0bGVm
dGhhcnBvb25zICImI3gyMUNDOyI+Ci08IUVOVElUWSBFcXVpbGlicml1bSAiJiN4MjFDQzsiPgot
PCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KLTwhRU5USVRZIG5MZWZ0YXJyb3cgIiYjeDIxQ0Q7
Ij4KLTwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Ci08IUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cg
IiYjeDIxQ0U7Ij4KLTwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Ci08IUVOVElUWSBuUmlnaHRh
cnJvdyAiJiN4MjFDRjsiPgotPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsiPgotPCFFTlRJVFkgTGVm
dGFycm93ICImI3gyMUQwOyI+Ci08IUVOVElUWSBEb3VibGVMZWZ0QXJyb3cgIiYjeDIxRDA7Ij4K
LTwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIFVwYXJyb3cgIiYjeDIxRDE7Ij4K
LTwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KLTwhRU5USVRZIHJBcnIgIiYjeDIx
RDI7Ij4KLTwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5USVRZIEltcGxpZXMg
IiYjeDIxRDI7Ij4KLTwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYjeDIxRDI7Ij4KLTwhRU5U
SVRZIGRBcnIgIiYjeDIxRDM7Ij4KLTwhRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiPgotPCFF
TlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Ci08IUVOVElUWSBoQXJyICImI3gyMUQ0
OyI+Ci08IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgotPCFFTlRJVFkgRG91Ymxl
TGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KLTwhRU5USVRZIGlmZiAiJiN4MjFENDsiPgotPCFF
TlRJVFkgdkFyciAiJiN4MjFENTsiPgotPCFFTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIxRDU7Ij4K
LTwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Ci08IUVOVElUWSBud0FyciAi
JiN4MjFENjsiPgotPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KLTwhRU5USVRZIHNlQXJyICIm
I3gyMUQ4OyI+Ci08IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgotPCFFTlRJVFkgbEFhcnIgIiYj
eDIxREE7Ij4KLTwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4KLTwhRU5USVRZIHJBYXJy
ICImI3gyMURCOyI+Ci08IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiPgotPCFFTlRJVFkg
emlncmFyciAiJiN4MjFERDsiPgotPCFFTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ij4KLTwhRU5USVRZ
IExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgotPCFFTlRJVFkgcmFycmIgIiYjeDIxRTU7Ij4KLTwh
RU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KLTwhRU5USVRZIGR1YXJyICImI3gyMUY1
OyI+Ci08IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+Ci08IUVOVElUWSBsb2Fy
ciAiJiN4MjFGRDsiPgotPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4KLTwhRU5USVRZIGhvYXJy
ICImI3gyMUZGOyI+Ci08IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4KLTwhRU5USVRZIEZvckFs
bCAiJiN4MjIwMDsiPgotPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgY29tcGxl
bWVudCAiJiN4MjIwMTsiPgotPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsiPgotPCFFTlRJVFkgUGFy
dGlhbEQgIiYjeDIyMDI7Ij4KLTwhRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYjeDMzODsiPgotPCFF
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KLTwhRU5USVRZIEV4aXN0cyAiJiN4MjIwMzsiPgotPCFF
TlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Ci08IUVOVElUWSBOb3RFeGlzdHMgIiYjeDIyMDQ7Ij4K
LTwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KLTwhRU5USVRZIGVtcHR5ICImI3gyMjA1OyI+
Ci08IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgotPCFFTlRJVFkgZW1wdHl2ICImI3gyMjA1
OyI+Ci08IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Ci08IUVOVElUWSBuYWJsYSAiJiN4
MjIwNzsiPgotPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Ci08IUVOVElUWSBpc2luICImI3gyMjA4
OyI+Ci08IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgotPCFFTlRJVFkgRWxlbWVudCAiJiN4MjIw
ODsiPgotPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KLTwhRU5USVRZIG5vdGluICImI3gyMjA5OyI+
Ci08IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Ci08IUVOVElUWSBub3RpbnZhICImI3gy
MjA5OyI+Ci08IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KLTwhRU5USVRZIFJldmVyc2VFbGVtZW50
ICImI3gyMjBCOyI+Ci08IUVOVElUWSBuaSAiJiN4MjIwQjsiPgotPCFFTlRJVFkgU3VjaFRoYXQg
IiYjeDIyMEI7Ij4KLTwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Ci08IUVOVElUWSBub3RuaXZh
ICImI3gyMjBDOyI+Ci08IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiPgotPCFF
TlRJVFkgcHJvZCAiJiN4MjIwRjsiPgotPCFFTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsiPgotPCFF
TlRJVFkgY29wcm9kICImI3gyMjEwOyI+Ci08IUVOVElUWSBDb3Byb2R1Y3QgIiYjeDIyMTA7Ij4K
LTwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgotPCFFTlRJVFkgU3VtICImI3gyMjExOyI+Ci08IUVO
VElUWSBtaW51cyAiJiN4MjIxMjsiPgotPCFFTlRJVFkgbW5wbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBtcCAiJiN4MjIxMzsiPgotPCFFTlRJVFkgTWludXNQbHVzICImI3gyMjEzOyI+Ci08IUVO
VElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KLTwhRU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ij4KLTwh
RU5USVRZIHNldG1uICImI3gyMjE2OyI+Ci08IUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiPgot
PCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Ci08IUVOVElUWSBzc2V0bW4gIiYjeDIyMTY7
Ij4KLTwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KLTwhRU5USVRZIGxvd2FzdCAi
JiN4MjIxNzsiPgotPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Ci08IUVOVElUWSBTbWFsbENp
cmNsZSAiJiN4MjIxODsiPgotPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIFNx
cnQgIiYjeDIyMUE7Ij4KLTwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4KLTwhRU5USVRZIHByb3B0
byAiJiN4MjIxRDsiPgotPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gyMjFEOyI+Ci08IUVOVElU
WSB2cHJvcCAiJiN4MjIxRDsiPgotPCFFTlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyI+Ci08IUVO
VElUWSBpbmZpbiAiJiN4MjIxRTsiPgotPCFFTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ij4KLTwhRU5U
SVRZIGFuZyAiJiN4MjIyMDsiPgotPCFFTlRJVFkgYW5nbGUgIiYjeDIyMjA7Ij4KLTwhRU5USVRZ
IG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgotPCFFTlRJVFkgYW5nbXNkICImI3gyMjIxOyI+Ci08
IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Ci08IUVOVElUWSBhbmdzcGggIiYjeDIy
MjI7Ij4KLTwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgotPCFFTlRJVFkgVmVydGljYWxCYXIgIiYj
eDIyMjM7Ij4KLTwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KLTwhRU5USVRZIHNob3J0bWlkICIm
I3gyMjIzOyI+Ci08IUVOVElUWSBubWlkICImI3gyMjI0OyI+Ci08IUVOVElUWSBOb3RWZXJ0aWNh
bEJhciAiJiN4MjIyNDsiPgotPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ij4KLTwhRU5USVRZIG5z
aG9ydG1pZCAiJiN4MjIyNDsiPgotPCFFTlRJVFkgcGFyICImI3gyMjI1OyI+Ci08IUVOVElUWSBw
YXJhbGxlbCAiJiN4MjIyNTsiPgotPCFFTlRJVFkgRG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjU7
Ij4KLTwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KLTwhRU5USVRZIHNob3J0cGFyYWxsZWwgIiYj
eDIyMjU7Ij4KLTwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KLTwhRU5USVRZIG5wYXJhbGxlbCAi
JiN4MjIyNjsiPgotPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIgIiYjeDIyMjY7Ij4KLTwh
RU5USVRZIG5zcGFyICImI3gyMjI2OyI+Ci08IUVOVElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIy
NjsiPgotPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Ci08IUVOVElUWSB3ZWRnZSAiJiN4MjIyNzsi
PgotPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KLTwhRU5USVRZIHZlZSAiJiN4MjIyODsiPgotPCFF
TlRJVFkgY2FwICImI3gyMjI5OyI+Ci08IUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZFMDA7Ij4K
LTwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgotPCFFTlRJVFkgY3VwcyAiJiN4MjIyQTsmI3hGRTAw
OyI+Ci08IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KLTwhRU5USVRZIEludGVncmFsICImI3gyMjJC
OyI+Ci08IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KLTwhRU5USVRZIHRpbnQgIiYjeDIyMkQ7Ij4K
LTwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Ci08IUVOVElUWSBjb25pbnQgIiYjeDIyMkU7Ij4K
LTwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KLTwhRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4
MjIyRTsiPgotPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Ci08IUVOVElUWSBEb3VibGVDb250
b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KLTwhRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ij4KLTwh
RU5USVRZIGN3aW50ICImI3gyMjMxOyI+Ci08IUVOVElUWSBjd2NvbmludCAiJiN4MjIzMjsiPgot
PCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyI+Ci08IUVOVElUWSBh
d2NvbmludCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRl
Z3JhbCAiJiN4MjIzMzsiPgotPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0OyI+Ci08IUVOVElUWSB0
aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KLTwhRU5USVRZIFRoZXJlZm9yZSAiJiN4MjIzNDsiPgotPCFF
TlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Ci08IUVOVElUWSBiZWNhdXNlICImI3gyMjM1OyI+Ci08
IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Ci08IUVOVElUWSByYXRpbyAiJiN4MjIzNjsiPgot
PCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KLTwhRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7
Ij4KLTwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgotPCFFTlRJVFkgZG90bWludXMgIiYjeDIy
Mzg7Ij4KLTwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Ci08IUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ij4KLTwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgVGlsZGUgIiYjeDIyM0M7
Ij4KLTwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgotPCFFTlRJVFkgdGhpY2tzaW0gIiYjeDIy
M0M7Ij4KLTwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4KLTwhRU5USVRZIGJzaW0g
IiYjeDIyM0Q7Ij4KLTwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4KLTwhRU5USVRZIHJhY2Ug
IiYjeDIyM0Q7JiN4MzMxOyI+Ci08IUVOVElUWSBhYyAiJiN4MjIzRTsiPgotPCFFTlRJVFkgbXN0
cG9zICImI3gyMjNFOyI+Ci08IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyI+Ci08IUVOVElU
WSBhY2QgIiYjeDIyM0Y7Ij4KLTwhRU5USVRZIHdyZWF0aCAiJiN4MjI0MDsiPgotPCFFTlRJVFkg
VmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgotPCFFTlRJVFkgd3IgIiYjeDIyNDA7Ij4KLTwhRU5U
SVRZIG5zaW0gIiYjeDIyNDE7Ij4KLTwhRU5USVRZIE5vdFRpbGRlICImI3gyMjQxOyI+Ci08IUVO
VElUWSBlc2ltICImI3gyMjQyOyI+Ci08IUVOVElUWSBFcXVhbFRpbGRlICImI3gyMjQyOyI+Ci08
IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgotPCFFTlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0
MjsmI3gzMzg7Ij4KLTwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMzODsiPgotPCFFTlRJVFkg
c2ltZSAiJiN4MjI0MzsiPgotPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiPgotPCFFTlRJ
VFkgc2ltZXEgIiYjeDIyNDM7Ij4KLTwhRU5USVRZIG5zaW1lICImI3gyMjQ0OyI+Ci08IUVOVElU
WSBuc2ltZXEgIiYjeDIyNDQ7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRXF1YWwgIiYjeDIyNDQ7Ij4K
LTwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KLTwhRU5USVRZIFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ1OyI+Ci08IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgotPCFFTlRJVFkgbmNvbmcgIiYjeDIy
NDc7Ij4KLTwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3OyI+Ci08IUVOVElUWSBh
c3ltcCAiJiN4MjI0ODsiPgotPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIFRpbGRl
VGlsZGUgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIGFwcHJveCAiJiN4MjI0ODsiPgotPCFFTlRJVFkg
dGhrYXAgIiYjeDIyNDg7Ij4KLTwhRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyI+Ci08IUVO
VElUWSBuYXAgIiYjeDIyNDk7Ij4KLTwhRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYjeDIyNDk7Ij4K
LTwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KLTwhRU5USVRZIGFwZSAiJiN4MjI0QTsiPgot
PCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KLTwhRU5USVRZIGFwaWQgIiYjeDIyNEI7Ij4K
LTwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgotPCFFTlRJVFkgYmNvbmcgIiYjeDIy
NEM7Ij4KLTwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Ci08IUVOVElUWSBhc3ltcGVxICIm
I3gyMjREOyI+Ci08IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KLTwhRU5USVRZIG52YXAgIiYj
eDIyNEQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsiPgotPCFFTlRJVFkgSHVt
cERvd25IdW1wICImI3gyMjRFOyI+Ci08IUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ij4KLTwhRU5U
SVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5idW1wICIm
I3gyMjRFOyYjeDMzODsiPgotPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ij4KLTwhRU5USVRZIEh1
bXBFcXVhbCAiJiN4MjI0RjsiPgotPCFFTlRJVFkgYnVtcGVxICImI3gyMjRGOyI+Ci08IUVOVElU
WSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Ci08IUVOVElUWSBOb3RIdW1wRXF1YWwgIiYjeDIy
NEY7JiN4MzM4OyI+Ci08IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgotPCFFTlRJVFkgRG90RXF1
YWwgIiYjeDIyNTA7Ij4KLTwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+Ci08IUVOVElUWSBuZWRv
dCAiJiN4MjI1MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVEb3QgIiYjeDIyNTE7Ij4KLTwhRU5USVRZ
IGRvdGVxZG90ICImI3gyMjUxOyI+Ci08IUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiPgotPCFFTlRJ
VFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgotPCFFTlRJVFkgZXJEb3QgIiYjeDIyNTM7Ij4K
LTwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgotPCFFTlRJVFkgY29sb25lICImI3gy
MjU0OyI+Ci08IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Ci08IUVOVElUWSBBc3NpZ24gIiYj
eDIyNTQ7Ij4KLTwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgotPCFFTlRJVFkgZXFjb2xvbiAi
JiN4MjI1NTsiPgotPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgotPCFFTlRJVFkgZXFjaXJjICIm
I3gyMjU2OyI+Ci08IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Ci08IUVOVElUWSBjaXJjZXEgIiYj
eDIyNTc7Ij4KLTwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgotPCFFTlRJVFkgdmVlZXEgIiYj
eDIyNUE7Ij4KLTwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlcSAi
JiN4MjI1QzsiPgotPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Ci08IUVOVElUWSBxdWVzdGVx
ICImI3gyMjVGOyI+Ci08IUVOVElUWSBuZSAiJiN4MjI2MDsiPgotPCFFTlRJVFkgTm90RXF1YWwg
IiYjeDIyNjA7Ij4KLTwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Ci08IUVOVElUWSBDb25ncnVl
bnQgIiYjeDIyNjE7Ij4KLTwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7JiN4MjBFNTsiPgotPCFF
TlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Ci08IUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7
Ij4KLTwhRU5USVRZIGxlICImI3gyMjY0OyI+Ci08IUVOVElUWSBsZXEgIiYjeDIyNjQ7Ij4KLTwh
RU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgotPCFFTlRJVFkgZ2UgIiYjeDIyNjU7Ij4K
LTwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgotPCFFTlRJVFkgZ2VxICImI3gyMjY1
OyI+Ci08IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KLTwhRU5USVRZIGxFICImI3gy
MjY2OyI+Ci08IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+Ci08IUVOVElUWSBsZXFx
ICImI3gyMjY2OyI+Ci08IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4OyI+Ci08IUVOVElUWSBu
bGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdFICImI3gyMjY3OyI+Ci08IUVOVElU
WSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Ci08IUVOVElUWSBnZXFxICImI3gyMjY3OyI+
Ci08IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2VxcSAiJiN4MjI2
NzsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4
OyI+Ci08IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KLTwhRU5USVRZIGxuZXFxICImI3gyMjY4OyI+
Ci08IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KLTwhRU5USVRZIGx2ZXJ0bmVxcSAi
JiN4MjI2ODsmI3hGRTAwOyI+Ci08IUVOVElUWSBnbkUgIiYjeDIyNjk7Ij4KLTwhRU5USVRZIGdu
ZXFxICImI3gyMjY5OyI+Ci08IUVOVElUWSBndm5FICImI3gyMjY5OyYjeEZFMDA7Ij4KLTwhRU5U
SVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Ci08IUVOVElUWSBMdCAiJiN4MjI2QTsi
PgotPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KLTwhRU5USVRZIGxsICImI3gy
MjZBOyI+Ci08IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgotPCFFTlRJVFkgTm90TGVz
c0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Ci08IUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBEMjsi
PgotPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KLTwhRU5USVRZIE5lc3RlZEdyZWF0ZXJHcmVhdGVy
ICImI3gyMjZCOyI+Ci08IUVOVElUWSBnZyAiJiN4MjI2QjsiPgotPCFFTlRJVFkgbkd0diAiJiN4
MjI2QjsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyYjeDMz
ODsiPgotPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KLTwhRU5USVRZIHR3aXh0ICIm
I3gyMjZDOyI+Ci08IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Ci08IUVOVElUWSBOb3RDdXBD
YXAgIiYjeDIyNkQ7Ij4KLTwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgotPCFFTlRJVFkgTm90TGVz
cyAiJiN4MjI2RTsiPgotPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4KLTwhRU5USVRZIG5ndCAi
JiN4MjI2RjsiPgotPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmd0
ciAiJiN4MjI2RjsiPgotPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Ci08IUVOVElUWSBOb3RMZXNz
RXF1YWwgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5sZXEgIiYjeDIyNzA7Ij4KLTwhRU5USVRZIG5n
ZSAiJiN4MjI3MTsiPgotPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICImI3gyMjcxOyI+Ci08IUVO
VElUWSBuZ2VxICImI3gyMjcxOyI+Ci08IUVOVElUWSBsc2ltICImI3gyMjcyOyI+Ci08IUVOVElU
WSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KLTwhRU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ij4KLTwh
RU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KLTwhRU5USVRZIGd0cnNpbSAiJiN4MjI3MzsiPgotPCFF
TlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Ci08IUVOVElUWSBubHNpbSAiJiN4MjI3NDsi
PgotPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Ci08IUVOVElUWSBuZ3NpbSAiJiN4
MjI3NTsiPgotPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyI+Ci08IUVOVElUWSBs
ZyAiJiN4MjI3NjsiPgotPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3NjsiPgotPCFFTlRJVFkgTGVz
c0dyZWF0ZXIgIiYjeDIyNzY7Ij4KLTwhRU5USVRZIGdsICImI3gyMjc3OyI+Ci08IUVOVElUWSBn
dHJsZXNzICImI3gyMjc3OyI+Ci08IUVOVElUWSBHcmVhdGVyTGVzcyAiJiN4MjI3NzsiPgotPCFF
TlRJVFkgbnRsZyAiJiN4MjI3ODsiPgotPCFFTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7
Ij4KLTwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KLTwhRU5USVRZIE5vdEdyZWF0ZXJMZXNzICIm
I3gyMjc5OyI+Ci08IUVOVElUWSBwciAiJiN4MjI3QTsiPgotPCFFTlRJVFkgUHJlY2VkZXMgIiYj
eDIyN0E7Ij4KLTwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KLTwhRU5USVRZIHNjICImI3gyMjdC
OyI+Ci08IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgotPCFFTlRJVFkgc3VjYyAiJiN4MjI3
QjsiPgotPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KLTwhRU5USVRZIFByZWNlZGVzU2xhbnRF
cXVhbCAiJiN4MjI3QzsiPgotPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYjeDIyN0M7Ij4KLTwhRU5U
SVRZIHNjY3VlICImI3gyMjdEOyI+Ci08IUVOVElUWSBTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIy
N0Q7Ij4KLTwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Ci08IUVOVElUWSBwcnNpbSAi
JiN4MjI3RTsiPgotPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgUHJlY2Vk
ZXNUaWxkZSAiJiN4MjI3RTsiPgotPCFFTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZ
IHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KLTwhRU5USVRZIFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7Ij4K
LTwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4OyI+Ci08IUVOVElUWSBu
cHIgIiYjeDIyODA7Ij4KLTwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+Ci08IUVOVElUWSBOb3RQ
cmVjZWRlcyAiJiN4MjI4MDsiPgotPCFFTlRJVFkgbnNjICImI3gyMjgxOyI+Ci08IUVOVElUWSBu
c3VjYyAiJiN4MjI4MTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIyODE7Ij4KLTwhRU5U
SVRZIHN1YiAiJiN4MjI4MjsiPgotPCFFTlRJVFkgc3Vic2V0ICImI3gyMjgyOyI+Ci08IUVOVElU
WSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYj
eDIwRDI7Ij4KLTwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gyMEQyOyI+Ci08IUVOVElU
WSBzdXAgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiPgotPCFFTlRJVFkg
U3VwZXJzZXQgIiYjeDIyODM7Ij4KLTwhRU5USVRZIHZuc3VwICImI3gyMjgzOyYjeDIwRDI7Ij4K
LTwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgTm90U3VwZXJz
ZXQgIiYjeDIyODM7JiN4MjBEMjsiPgotPCFFTlRJVFkgbnN1YiAiJiN4MjI4NDsiPgotPCFFTlRJ
VFkgbnN1cCAiJiN4MjI4NTsiPgotPCFFTlRJVFkgc3ViZSAiJiN4MjI4NjsiPgotPCFFTlRJVFkg
U3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KLTwhRU5USVRZIHN1YnNldGVxICImI3gyMjg2OyI+Ci08
IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Ci08IUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiPgot
PCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgotPCFFTlRJVFkgbnN1YmUgIiYjeDIy
ODg7Ij4KLTwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgotPCFFTlRJVFkgTm90U3Vic2V0
RXF1YWwgIiYjeDIyODg7Ij4KLTwhRU5USVRZIG5zdXBlICImI3gyMjg5OyI+Ci08IUVOVElUWSBu
c3Vwc2V0ZXEgIiYjeDIyODk7Ij4KLTwhRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwgIiYjeDIyODk7
Ij4KLTwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Ci08IUVOVElUWSBzdWJzZXRuZXEgIiYjeDIy
OEE7Ij4KLTwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJz
dWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ij4K
LTwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgotPCFFTlRJVFkgdnN1cG5lICImI3gyMjhC
OyYjeEZFMDA7Ij4KLTwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyI+Ci08
IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KLTwhRU5USVRZIHVwbHVzICImI3gyMjhFOyI+Ci08
IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KLTwhRU5USVRZIHNxc3ViICImI3gyMjhGOyI+
Ci08IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KLTwhRU5USVRZIHNxc3Vic2V0ICIm
I3gyMjhGOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7JiN4MzM4OyI+Ci08
IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgotPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIy
OTA7Ij4KLTwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Ci08IUVOVElUWSBOb3RTcXVhcmVT
dXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KLTwhRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiPgot
PCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3Vic2V0
ZXEgIiYjeDIyOTE7Ij4KLTwhRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiPgotPCFFTlRJVFkgU3F1
YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgotPCFFTlRJVFkgc3FzdXBzZXRlcSAiJiN4MjI5
MjsiPgotPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KLTwhRU5USVRZIFNxdWFyZUludGVyc2Vj
dGlvbiAiJiN4MjI5MzsiPgotPCFFTlRJVFkgc3FjYXBzICImI3gyMjkzOyYjeEZFMDA7Ij4KLTwh
RU5USVRZIHNxY3VwICImI3gyMjk0OyI+Ci08IUVOVElUWSBTcXVhcmVVbmlvbiAiJiN4MjI5NDsi
PgotPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KLTwhRU5USVRZIG9wbHVzICIm
I3gyMjk1OyI+Ci08IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+Ci08IUVOVElUWSBvbWlu
dXMgIiYjeDIyOTY7Ij4KLTwhRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyI+Ci08IUVOVElU
WSBvdGltZXMgIiYjeDIyOTc7Ij4KLTwhRU5USVRZIENpcmNsZVRpbWVzICImI3gyMjk3OyI+Ci08
IUVOVElUWSBvc29sICImI3gyMjk4OyI+Ci08IUVOVElUWSBvZG90ICImI3gyMjk5OyI+Ci08IUVO
VElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KLTwhRU5USVRZIG9jaXIgIiYjeDIyOUE7Ij4KLTwh
RU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Ci08IUVOVElUWSBvYXN0ICImI3gyMjlCOyI+
Ci08IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Ci08IUVOVElUWSBvZGFzaCAiJiN4MjI5
RDsiPgotPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KLTwhRU5USVRZIHBsdXNiICIm
I3gyMjlFOyI+Ci08IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Ci08IUVOVElUWSBtaW51c2Ig
IiYjeDIyOUY7Ij4KLTwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+Ci08IUVOVElUWSB0aW1l
c2IgIiYjeDIyQTA7Ij4KLTwhRU5USVRZIGJveHRpbWVzICImI3gyMkEwOyI+Ci08IUVOVElUWSBz
ZG90YiAiJiN4MjJBMTsiPgotPCFFTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyI+Ci08IUVOVElU
WSB2ZGFzaCAiJiN4MjJBMjsiPgotPCFFTlRJVFkgUmlnaHRUZWUgIiYjeDIyQTI7Ij4KLTwhRU5U
SVRZIGRhc2h2ICImI3gyMkEzOyI+Ci08IUVOVElUWSBMZWZ0VGVlICImI3gyMkEzOyI+Ci08IUVO
VElUWSB0b3AgIiYjeDIyQTQ7Ij4KLTwhRU5USVRZIERvd25UZWUgIiYjeDIyQTQ7Ij4KLTwhRU5U
SVRZIGJvdHRvbSAiJiN4MjJBNTsiPgotPCFFTlRJVFkgYm90ICImI3gyMkE1OyI+Ci08IUVOVElU
WSBwZXJwICImI3gyMkE1OyI+Ci08IUVOVElUWSBVcFRlZSAiJiN4MjJBNTsiPgotPCFFTlRJVFkg
bW9kZWxzICImI3gyMkE3OyI+Ci08IUVOVElUWSB2RGFzaCAiJiN4MjJBODsiPgotPCFFTlRJVFkg
RG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KLTwhRU5USVRZIFZkYXNoICImI3gyMkE5OyI+Ci08
IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KLTwhRU5USVRZIFZEYXNoICImI3gyMkFCOyI+Ci08
IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KLTwhRU5USVRZIG52RGFzaCAiJiN4MjJBRDsiPgot
PCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Ci08IUVOVElUWSBuVkRhc2ggIiYjeDIyQUY7Ij4K
LTwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgotPCFFTlRJVFkgdmx0cmkgIiYjeDIyQjI7Ij4K
LTwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgotPCFFTlRJVFkgTGVmdFRyaWFu
Z2xlICImI3gyMkIyOyI+Ci08IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsiPgotPCFFTlRJVFkgdmFy
dHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgotPCFFTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJC
MzsiPgotPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KLTwhRU5USVRZIHRyaWFuZ2xlbGVmdGVx
ICImI3gyMkI0OyI+Ci08IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiPgotPCFF
TlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Ci08IUVOVElUWSBydHJpZSAiJiN4MjJC
NTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+Ci08IUVOVElUWSBSaWdo
dFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KLTwhRU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4
MjBEMjsiPgotPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Ci08IUVOVElUWSBpbW9mICImI3gy
MkI3OyI+Ci08IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgotPCFFTlRJVFkgbXVsdGltYXAgIiYj
eDIyQjg7Ij4KLTwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgotPCFFTlRJVFkgaW50Y2FsICIm
I3gyMkJBOyI+Ci08IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgotPCFFTlRJVFkgdmVlYmFy
ICImI3gyMkJCOyI+Ci08IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4KLTwhRU5USVRZIGFuZ3J0
dmIgIiYjeDIyQkU7Ij4KLTwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+Ci08IUVOVElUWSB4d2Vk
Z2UgIiYjeDIyQzA7Ij4KLTwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+Ci08IUVOVElUWSBiaWd3
ZWRnZSAiJiN4MjJDMDsiPgotPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsiPgotPCFFTlRJVFkgVmVl
ICImI3gyMkMxOyI+Ci08IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4KLTwhRU5USVRZIHhjYXAg
IiYjeDIyQzI7Ij4KLTwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiPgotPCFFTlRJVFkg
YmlnY2FwICImI3gyMkMyOyI+Ci08IUVOVElUWSB4Y3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBV
bmlvbiAiJiN4MjJDMzsiPgotPCFFTlRJVFkgYmlnY3VwICImI3gyMkMzOyI+Ci08IUVOVElUWSBk
aWFtICImI3gyMkM0OyI+Ci08IUVOVElUWSBkaWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBE
aWFtb25kICImI3gyMkM0OyI+Ci08IUVOVElUWSBzZG90ICImI3gyMkM1OyI+Ci08IUVOVElUWSBz
c3RhcmYgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIFN0YXIgIiYjeDIyQzY7Ij4KLTwhRU5USVRZIGRp
dm9ueCAiJiN4MjJDNzsiPgotPCFFTlRJVFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiPgotPCFF
TlRJVFkgYm93dGllICImI3gyMkM4OyI+Ci08IUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ij4KLTwh
RU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgotPCFFTlRJVFkgbHRocmVlICImI3gyMkNCOyI+Ci08
IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgotPCFFTlRJVFkgcnRocmVlICImI3gy
MkNDOyI+Ci08IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7Ij4KLTwhRU5USVRZIGJz
aW1lICImI3gyMkNEOyI+Ci08IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7Ij4KLTwhRU5USVRZ
IGN1dmVlICImI3gyMkNFOyI+Ci08IUVOVElUWSBjdXJseXZlZSAiJiN4MjJDRTsiPgotPCFFTlRJ
VFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KLTwhRU5USVRZIGN1cmx5d2VkZ2UgIiYjeDIyQ0Y7Ij4KLTwh
RU5USVRZIFN1YiAiJiN4MjJEMDsiPgotPCFFTlRJVFkgU3Vic2V0ICImI3gyMkQwOyI+Ci08IUVO
VElUWSBTdXAgIiYjeDIyRDE7Ij4KLTwhRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiPgotPCFFTlRJ
VFkgQ2FwICImI3gyMkQyOyI+Ci08IUVOVElUWSBDdXAgIiYjeDIyRDM7Ij4KLTwhRU5USVRZIGZv
cmsgIiYjeDIyRDQ7Ij4KLTwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiPgotPCFFTlRJVFkg
ZXBhciAiJiN4MjJENTsiPgotPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGxl
c3Nkb3QgIiYjeDIyRDY7Ij4KLTwhRU5USVRZIGd0ZG90ICImI3gyMkQ3OyI+Ci08IUVOVElUWSBn
dHJkb3QgIiYjeDIyRDc7Ij4KLTwhRU5USVRZIExsICImI3gyMkQ4OyI+Ci08IUVOVElUWSBuTGwg
IiYjeDIyRDg7JiN4MzM4OyI+Ci08IUVOVElUWSBHZyAiJiN4MjJEOTsiPgotPCFFTlRJVFkgZ2dn
ICImI3gyMkQ5OyI+Ci08IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4OyI+Ci08IUVOVElUWSBs
ZWcgIiYjeDIyREE7Ij4KLTwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ij4KLTwh
RU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgotPCFFTlRJVFkgbGVzZyAiJiN4MjJEQTsmI3hG
RTAwOyI+Ci08IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KLTwhRU5USVRZIGd0cmVxbGVzcyAiJiN4
MjJEQjsiPgotPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJEQjsiPgotPCFFTlRJVFkg
Z2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Ci08IUVOVElUWSBjdWVwciAiJiN4MjJERTsiPgotPCFF
TlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KLTwhRU5USVRZIGN1ZXNjICImI3gyMkRGOyI+
Ci08IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgotPCFFTlRJVFkgbnByY3VlICImI3gy
MkUwOyI+Ci08IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ij4KLTwhRU5U
SVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgotPCFFTlRJVFkgTm90U3VjY2VlZHNTbGFudEVxdWFsICIm
I3gyMkUxOyI+Ci08IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Ci08IUVOVElUWSBOb3RTcXVh
cmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgotPCFFTlRJVFkgbnNxc3VwZSAiJiN4MjJFMzsiPgot
PCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiPgotPCFFTlRJVFkgbG5z
aW0gIiYjeDIyRTY7Ij4KLTwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+Ci08IUVOVElUWSBwcm5z
aW0gIiYjeDIyRTg7Ij4KLTwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4OyI+Ci08IUVOVElUWSBz
Y25zaW0gIiYjeDIyRTk7Ij4KLTwhRU5USVRZIHN1Y2Nuc2ltICImI3gyMkU5OyI+Ci08IUVOVElU
WSBubHRyaSAiJiN4MjJFQTsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiPgot
PCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Ci08IUVOVElUWSBucnRyaSAiJiN4
MjJFQjsiPgotPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KLTwhRU5USVRZIG5sdHJpZSAiJiN4MjJFQzsiPgot
PCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Ci08IUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVFcXVhbCAiJiN4MjJFQzsiPgotPCFFTlRJVFkgbnJ0cmllICImI3gyMkVEOyI+Ci08IUVO
VElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Ci08IUVOVElUWSBOb3RSaWdodFRyaWFu
Z2xlRXF1YWwgIiYjeDIyRUQ7Ij4KLTwhRU5USVRZIHZlbGxpcCAiJiN4MjJFRTsiPgotPCFFTlRJ
VFkgY3Rkb3QgIiYjeDIyRUY7Ij4KLTwhRU5USVRZIHV0ZG90ICImI3gyMkYwOyI+Ci08IUVOVElU
WSBkdGRvdCAiJiN4MjJGMTsiPgotPCFFTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ij4KLTwhRU5USVRZ
IGlzaW5zdiAiJiN4MjJGMzsiPgotPCFFTlRJVFkgaXNpbnMgIiYjeDIyRjQ7Ij4KLTwhRU5USVRZ
IGlzaW5kb3QgIiYjeDIyRjU7Ij4KLTwhRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMzODsi
PgotPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgotPCFFTlRJVFkgbm90aW52YiAiJiN4MjJG
NzsiPgotPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KLTwhRU5USVRZIG5vdGluRSAiJiN4MjJG
OTsmI3gzMzg7Ij4KLTwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KLTwhRU5USVRZIHhuaXMgIiYj
eDIyRkI7Ij4KLTwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgotPCFFTlRJVFkgbm90bml2YyAiJiN4
MjJGRDsiPgotPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgotPCFFTlRJVFkgYmFyd2VkICIm
I3gyMzA1OyI+Ci08IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgotPCFFTlRJVFkgQmFyd2Vk
ICImI3gyMzA2OyI+Ci08IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4MjMwNjsiPgotPCFFTlRJ
VFkgbGNlaWwgIiYjeDIzMDg7Ij4KLTwhRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4OyI+Ci08
IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgotPCFFTlRJVFkgUmlnaHRDZWlsaW5nICImI3gyMzA5
OyI+Ci08IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KLTwhRU5USVRZIExlZnRGbG9vciAiJiN4
MjMwQTsiPgotPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Ci08IUVOVElUWSBSaWdodEZsb29y
ICImI3gyMzBCOyI+Ci08IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4KLTwhRU5USVRZIGRsY3Jv
cCAiJiN4MjMwRDsiPgotPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+Ci08IUVOVElUWSB1bGNy
b3AgIiYjeDIzMEY7Ij4KLTwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4KLTwhRU5USVRZIHByb2Zs
aW5lICImI3gyMzEyOyI+Ci08IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMxMzsiPgotPCFFTlRJVFkg
dGVscmVjICImI3gyMzE1OyI+Ci08IUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ij4KLTwhRU5USVRZ
IHVsY29ybiAiJiN4MjMxQzsiPgotPCFFTlRJVFkgdWxjb3JuZXIgIiYjeDIzMUM7Ij4KLTwhRU5U
SVRZIHVyY29ybiAiJiN4MjMxRDsiPgotPCFFTlRJVFkgdXJjb3JuZXIgIiYjeDIzMUQ7Ij4KLTwh
RU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgotPCFFTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ij4K
LTwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgotPCFFTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7
Ij4KLTwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Ci08IUVOVElUWSBzZnJvd24gIiYjeDIzMjI7
Ij4KLTwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Ci08IUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ij4KLTwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgotPCFFTlRJVFkgcHJvZmFsYXIgIiYjeDIz
MkU7Ij4KLTwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgotPCFFTlRJVFkgb3ZiYXIgIiYjeDIz
M0Q7Ij4KLTwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgotPCFFTlRJVFkgYW5nemFyciAiJiN4
MjM3QzsiPgotPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Ci08IUVOVElUWSBsbW91c3RhY2hl
ICImI3gyM0IwOyI+Ci08IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHJtb3Vz
dGFjaGUgIiYjeDIzQjE7Ij4KLTwhRU5USVRZIHRicmsgIiYjeDIzQjQ7Ij4KLTwhRU5USVRZIE92
ZXJCcmFja2V0ICImI3gyM0I0OyI+Ci08IUVOVElUWSBiYnJrICImI3gyM0I1OyI+Ci08IUVOVElU
WSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KLTwhRU5USVRZIGJicmt0YnJrICImI3gyM0I2OyI+
Ci08IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KLTwhRU5USVRZIFVuZGVyUGFy
ZW50aGVzaXMgIiYjeDIzREQ7Ij4KLTwhRU5USVRZIE92ZXJCcmFjZSAiJiN4MjNERTsiPgotPCFF
TlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgotPCFFTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7
Ij4KLTwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Ci08IUVOVElUWSBibGFuayAiJiN4MjQy
MzsiPgotPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KLTwhRU5USVRZIGNpcmNsZWRTICImI3gyNEM4
OyI+Ci08IUVOVElUWSBib3hoICImI3gyNTAwOyI+Ci08IUVOVElUWSBIb3Jpem9udGFsTGluZSAi
JiN4MjUwMDsiPgotPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgotPCFFTlRJVFkgYm94ZHIgIiYj
eDI1MEM7Ij4KLTwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Ci08IUVOVElUWSBib3h1ciAiJiN4
MjUxNDsiPgotPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KLTwhRU5USVRZIGJveHZyICImI3gy
NTFDOyI+Ci08IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgotPCFFTlRJVFkgYm94aGQgIiYjeDI1
MkM7Ij4KLTwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Ci08IUVOVElUWSBib3h2aCAiJiN4MjUz
QzsiPgotPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgotPCFFTlRJVFkgYm94ViAiJiN4MjU1MTsi
PgotPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KLTwhRU5USVRZIGJveERyICImI3gyNTUzOyI+
Ci08IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgotPCFFTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ij4K
LTwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Ci08IUVOVElUWSBib3hETCAiJiN4MjU1NzsiPgot
PCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KLTwhRU5USVRZIGJveFVyICImI3gyNTU5OyI+Ci08
IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgotPCFFTlRJVFkgYm94dUwgIiYjeDI1NUI7Ij4KLTwh
RU5USVRZIGJveFVsICImI3gyNTVDOyI+Ci08IUVOVElUWSBib3hVTCAiJiN4MjU1RDsiPgotPCFF
TlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KLTwhRU5USVRZIGJveFZyICImI3gyNTVGOyI+Ci08IUVO
VElUWSBib3hWUiAiJiN4MjU2MDsiPgotPCFFTlRJVFkgYm94dkwgIiYjeDI1NjE7Ij4KLTwhRU5U
SVRZIGJveFZsICImI3gyNTYyOyI+Ci08IUVOVElUWSBib3hWTCAiJiN4MjU2MzsiPgotPCFFTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ij4KLTwhRU5USVRZIGJveGhEICImI3gyNTY1OyI+Ci08IUVOVElU
WSBib3hIRCAiJiN4MjU2NjsiPgotPCFFTlRJVFkgYm94SHUgIiYjeDI1Njc7Ij4KLTwhRU5USVRZ
IGJveGhVICImI3gyNTY4OyI+Ci08IUVOVElUWSBib3hIVSAiJiN4MjU2OTsiPgotPCFFTlRJVFkg
Ym94dkggIiYjeDI1NkE7Ij4KLTwhRU5USVRZIGJveFZoICImI3gyNTZCOyI+Ci08IUVOVElUWSBi
b3hWSCAiJiN4MjU2QzsiPgotPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7Ij4KLTwhRU5USVRZIGxo
YmxrICImI3gyNTg0OyI+Ci08IUVOVElUWSBibG9jayAiJiN4MjU4ODsiPgotPCFFTlRJVFkgYmxr
MTQgIiYjeDI1OTE7Ij4KLTwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+Ci08IUVOVElUWSBibGsz
NCAiJiN4MjU5MzsiPgotPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Ci08IUVOVElUWSBzcXVhcmUg
IiYjeDI1QTE7Ij4KLTwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgotPCFFTlRJVFkgc3F1ZiAi
JiN4MjVBQTsiPgotPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Ci08IUVOVElUWSBibGFja3Nx
dWFyZSAiJiN4MjVBQTsiPgotPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFB
OyI+Ci08IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQjsiPgotPCFFTlRJVFkg
cmVjdCAiJiN4MjVBRDsiPgotPCFFTlRJVFkgbWFya2VyICImI3gyNUFFOyI+Ci08IUVOVElUWSBm
bHRucyAiJiN4MjVCMTsiPgotPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIGJp
Z3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KLTwhRU5USVRZIHV0cmlmICImI3gyNUI0OyI+Ci08IUVO
VElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Ci08IUVOVElUWSB1dHJpICImI3gyNUI1OyI+
Ci08IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgotPCFFTlRJVFkgcnRyaWYgIiYjeDI1Qjg7
Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsiPgotPCFFTlRJVFkgcnRy
aSAiJiN4MjVCOTsiPgotPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVCOTsiPgotPCFFTlRJ
VFkgeGR0cmkgIiYjeDI1QkQ7Ij4KLTwhRU5USVRZIGJpZ3RyaWFuZ2xlZG93biAiJiN4MjVCRDsi
PgotPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KLTwhRU5USVRZIGJsYWNrdHJpYW5nbGVkb3du
ICImI3gyNUJFOyI+Ci08IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Ci08IUVOVElUWSB0cmlhbmds
ZWRvd24gIiYjeDI1QkY7Ij4KLTwhRU5USVRZIGx0cmlmICImI3gyNUMyOyI+Ci08IUVOVElUWSBi
bGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgotPCFFTlRJVFkgbHRyaSAiJiN4MjVDMzsiPgot
PCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Ci08IUVOVElUWSBsb3ogIiYjeDI1Q0E7
Ij4KLTwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KLTwhRU5USVRZIGNpciAiJiN4MjVDQjsi
PgotPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Ci08IUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsi
PgotPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgotPCFFTlRJVFkgdWx0cmkgIiYjeDI1Rjg7
Ij4KLTwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Ci08IUVOVElUWSBsbHRyaSAiJiN4MjVGQTsi
PgotPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgotPCFFTlRJVFkgRmlsbGVk
U21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KLTwhRU5USVRZIHN0YXJmICImI3gyNjA1OyI+Ci08IUVO
VElUWSBiaWdzdGFyICImI3gyNjA1OyI+Ci08IUVOVElUWSBzdGFyICImI3gyNjA2OyI+Ci08IUVO
VElUWSBwaG9uZSAiJiN4MjYwRTsiPgotPCFFTlRJVFkgZmVtYWxlICImI3gyNjQwOyI+Ci08IUVO
VElUWSBtYWxlICImI3gyNjQyOyI+Ci08IUVOVElUWSBzcGFkZXMgIiYjeDI2NjA7Ij4KLTwhRU5U
SVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgotPCFFTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ij4KLTwh
RU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Ci08IUVOVElUWSBoZWFydHMgIiYjeDI2NjU7Ij4K
LTwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgotPCFFTlRJVFkgZGlhbXMgIiYjeDI2NjY7
Ij4KLTwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Ci08IUVOVElUWSBzdW5nICImI3gy
NjZBOyI+Ci08IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Ci08IUVOVElUWSBuYXR1ciAiJiN4MjY2
RTsiPgotPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgotPCFFTlRJVFkgc2hhcnAgIiYjeDI2
NkY7Ij4KLTwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Ci08IUVOVElUWSBjaGVja21hcmsgIiYj
eDI3MTM7Ij4KLTwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Ci08IUVOVElUWSBtYWx0ICImI3gy
NzIwOyI+Ci08IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Ci08IUVOVElUWSBzZXh0ICImI3gy
NzM2OyI+Ci08IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1ODsiPgotPCFFTlRJVFkg
bGJicmsgIiYjeDI3NzI7Ij4KLTwhRU5USVRZIHJiYnJrICImI3gyNzczOyI+Ci08IUVOVElUWSBi
c29saHN1YiAiJiN4MjdDODsiPgotPCFFTlRJVFkgc3VwaHNvbCAiJiN4MjdDOTsiPgotPCFFTlRJ
VFkgbG9icmsgIiYjeDI3RTY7Ij4KLTwhRU5USVRZIExlZnREb3VibGVCcmFja2V0ICImI3gyN0U2
OyI+Ci08IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgotPCFFTlRJVFkgUmlnaHREb3VibGVCcmFj
a2V0ICImI3gyN0U3OyI+Ci08IUVOVElUWSBsYW5nICImI3gyN0U4OyI+Ci08IUVOVElUWSBMZWZ0
QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Ci08IUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ij4KLTwh
RU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gy
N0U5OyI+Ci08IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KLTwhRU5USVRZIExhbmcgIiYjeDI3
RUE7Ij4KLTwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KLTwhRU5USVRZIGxvYW5nICImI3gyN0VD
OyI+Ci08IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgotPCFFTlRJVFkgeGxhcnIgIiYjeDI3RjU7
Ij4KLTwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIExvbmdMZWZ0
QXJyb3cgIiYjeDI3RjU7Ij4KLTwhRU5USVRZIHhyYXJyICImI3gyN0Y2OyI+Ci08IUVOVElUWSBs
b25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgotPCFFTlRJVFkgTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3
RjY7Ij4KLTwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Ci08IUVOVElUWSBsb25nbGVmdHJpZ2h0
YXJyb3cgIiYjeDI3Rjc7Ij4KLTwhRU5USVRZIExvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGNzsi
PgotPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KLTwhRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYj
eDI3Rjg7Ij4KLTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYjeDI3Rjg7Ij4KLTwhRU5U
SVRZIHhyQXJyICImI3gyN0Y5OyI+Ci08IUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
PgotPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7Ij4KLTwhRU5USVRZIHho
QXJyICImI3gyN0ZBOyI+Ci08IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3RkE7Ij4K
LTwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdGQTsiPgotPCFFTlRJVFkg
eG1hcCAiJiN4MjdGQzsiPgotPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4MjdGQzsiPgotPCFFTlRJ
VFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KLTwhRU5USVRZIG52bEFyciAiJiN4MjkwMjsiPgotPCFF
TlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Ci08IUVOVElUWSBudkhhcnIgIiYjeDI5MDQ7Ij4KLTwh
RU5USVRZIE1hcCAiJiN4MjkwNTsiPgotPCFFTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ij4KLTwhRU5U
SVRZIHJiYXJyICImI3gyOTBEOyI+Ci08IUVOVElUWSBia2Fyb3cgIiYjeDI5MEQ7Ij4KLTwhRU5U
SVRZIGxCYXJyICImI3gyOTBFOyI+Ci08IUVOVElUWSByQmFyciAiJiN4MjkwRjsiPgotPCFFTlRJ
VFkgZGJrYXJvdyAiJiN4MjkwRjsiPgotPCFFTlRJVFkgUkJhcnIgIiYjeDI5MTA7Ij4KLTwhRU5U
SVRZIGRyYmthcm93ICImI3gyOTEwOyI+Ci08IUVOVElUWSBERG90cmFoZCAiJiN4MjkxMTsiPgot
PCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgotPCFFTlRJVFkgRG93bkFycm93QmFyICIm
I3gyOTEzOyI+Ci08IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KLTwhRU5USVRZIGxhdGFpbCAi
JiN4MjkxOTsiPgotPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Ci08IUVOVElUWSBsQXRhaWwg
IiYjeDI5MUI7Ij4KLTwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgotPCFFTlRJVFkgbGFycmZz
ICImI3gyOTFEOyI+Ci08IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4KLTwhRU5USVRZIGxhcnJi
ZnMgIiYjeDI5MUY7Ij4KLTwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7Ij4KLTwhRU5USVRZIG53
YXJoayAiJiN4MjkyMzsiPgotPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0OyI+Ci08IUVOVElUWSBz
ZWFyaGsgIiYjeDI5MjU7Ij4KLTwhRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1OyI+Ci08IUVOVElU
WSBzd2FyaGsgIiYjeDI5MjY7Ij4KLTwhRU5USVRZIGhrc3dhcm93ICImI3gyOTI2OyI+Ci08IUVO
VElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KLTwhRU5USVRZIG5lc2VhciAiJiN4MjkyODsiPgotPCFF
TlRJVFkgdG9lYSAiJiN4MjkyODsiPgotPCFFTlRJVFkgc2Vzd2FyICImI3gyOTI5OyI+Ci08IUVO
VElUWSB0b3NhICImI3gyOTI5OyI+Ci08IUVOVElUWSBzd253YXIgIiYjeDI5MkE7Ij4KLTwhRU5U
SVRZIHJhcnJjICImI3gyOTMzOyI+Ci08IUVOVElUWSBucmFycmMgIiYjeDI5MzM7JiN4MzM4OyI+
Ci08IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Ci08IUVOVElUWSBsZGNhICImI3gyOTM2OyI+
Ci08IUVOVElUWSByZGNhICImI3gyOTM3OyI+Ci08IUVOVElUWSBjdWRhcnJsICImI3gyOTM4OyI+
Ci08IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KLTwhRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7
Ij4KLTwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KLTwhRU5USVRZIHJhcnJwbCAiJiN4Mjk0
NTsiPgotPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgotPCFFTlRJVFkgVWFycm9jaXIgIiYj
eDI5NDk7Ij4KLTwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Ci08IUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiPgotPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICImI3gyOTRFOyI+Ci08IUVO
VElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgotPCFFTlRJVFkgRG93bkxlZnRSaWdo
dFZlY3RvciAiJiN4Mjk1MDsiPgotPCFFTlRJVFkgTGVmdFVwRG93blZlY3RvciAiJiN4Mjk1MTsi
PgotPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgotPCFFTlRJVFkgUmlnaHRWZWN0
b3JCYXIgIiYjeDI5NTM7Ij4KLTwhRU5USVRZIFJpZ2h0VXBWZWN0b3JCYXIgIiYjeDI5NTQ7Ij4K
LTwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgotPCFFTlRJVFkgRG93bkxl
ZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KLTwhRU5USVRZIERvd25SaWdodFZlY3RvckJhciAiJiN4
Mjk1NzsiPgotPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyI+Ci08IUVOVElUWSBM
ZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgotPCFFTlRJVFkgTGVmdFRlZVZlY3RvciAiJiN4
Mjk1QTsiPgotPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7Ij4KLTwhRU5USVRZIFJp
Z2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KLTwhRU5USVRZIFJpZ2h0RG93blRlZVZlY3RvciAi
JiN4Mjk1RDsiPgotPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYjeDI5NUU7Ij4KLTwhRU5U
SVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgotPCFFTlRJVFkgTGVmdFVwVGVlVmVj
dG9yICImI3gyOTYwOyI+Ci08IUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiPgot
PCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgotPCFFTlRJVFkgdUhhciAiJiN4Mjk2MzsiPgotPCFF
TlRJVFkgckhhciAiJiN4Mjk2NDsiPgotPCFFTlRJVFkgZEhhciAiJiN4Mjk2NTsiPgotPCFFTlRJ
VFkgbHVydWhhciAiJiN4Mjk2NjsiPgotPCFFTlRJVFkgbGRyZGhhciAiJiN4Mjk2NzsiPgotPCFF
TlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgotPCFFTlRJVFkgcmRsZGhhciAiJiN4Mjk2OTsiPgot
PCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Ci08IUVOVElUWSBsbGhhcmQgIiYjeDI5NkI7Ij4K
LTwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgotPCFFTlRJVFkgbHJoYXJkICImI3gyOTZEOyI+
Ci08IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgotPCFFTlRJVFkgVXBFcXVpbGlicml1bSAiJiN4
Mjk2RTsiPgotPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KLTwhRU5USVRZIFJldmVyc2VVcEVx
dWlsaWJyaXVtICImI3gyOTZGOyI+Ci08IUVOVElUWSBSb3VuZEltcGxpZXMgIiYjeDI5NzA7Ij4K
LTwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Ci08IUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyI+
Ci08IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Ci08IUVOVElUWSByYXJyc2ltICImI3gyOTc0
OyI+Ci08IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KLTwhRU5USVRZIGx0bGFyciAiJiN4Mjk3
NjsiPgotPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Ci08IUVOVElUWSBzdWJyYXJyICImI3gy
OTc5OyI+Ci08IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Ci08IUVOVElUWSBsZmlzaHQgIiYj
eDI5N0M7Ij4KLTwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgotPCFFTlRJVFkgdWZpc2h0ICIm
I3gyOTdFOyI+Ci08IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KLTwhRU5USVRZIGxvcGFyICIm
I3gyOTg1OyI+Ci08IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgotPCFFTlRJVFkgbGJya2UgIiYj
eDI5OEI7Ij4KLTwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Ci08IUVOVElUWSBsYnJrc2x1ICIm
I3gyOThEOyI+Ci08IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Ci08IUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyI+Ci08IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+Ci08IUVOVElUWSBsYW5n
ZCAiJiN4Mjk5MTsiPgotPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4KLTwhRU5USVRZIGxwYXJs
dCAiJiN4Mjk5MzsiPgotPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+Ci08IUVOVElUWSBndGxQ
YXIgIiYjeDI5OTU7Ij4KLTwhRU5USVRZIGx0clBhciAiJiN4Mjk5NjsiPgotPCFFTlRJVFkgdnpp
Z3phZyAiJiN4Mjk5QTsiPgotPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlDOyI+Ci08IUVOVElUWSBh
bmdydHZiZCAiJiN4Mjk5RDsiPgotPCFFTlRJVFkgYW5nZSAiJiN4MjlBNDsiPgotPCFFTlRJVFkg
cmFuZ2UgIiYjeDI5QTU7Ij4KLTwhRU5USVRZIGR3YW5nbGUgIiYjeDI5QTY7Ij4KLTwhRU5USVRZ
IHV3YW5nbGUgIiYjeDI5QTc7Ij4KLTwhRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyI+Ci08IUVO
VElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgotPCFFTlRJVFkgYW5nbXNkYWMgIiYjeDI5QUE7Ij4K
LTwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Ci08IUVOVElUWSBhbmdtc2RhZSAiJiN4MjlB
QzsiPgotPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KLTwhRU5USVRZIGFuZ21zZGFnICIm
I3gyOUFFOyI+Ci08IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgotPCFFTlRJVFkgYmVtcHR5
diAiJiN4MjlCMDsiPgotPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiPgotPCFFTlRJVFkgY2Vt
cHR5diAiJiN4MjlCMjsiPgotPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ij4KLTwhRU5USVRZ
IGxhZW1wdHl2ICImI3gyOUI0OyI+Ci08IUVOVElUWSBvaGJhciAiJiN4MjlCNTsiPgotPCFFTlRJ
VFkgb21pZCAiJiN4MjlCNjsiPgotPCFFTlRJVFkgb3BhciAiJiN4MjlCNzsiPgotPCFFTlRJVFkg
b3BlcnAgIiYjeDI5Qjk7Ij4KLTwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5QkI7Ij4KLTwhRU5USVRZ
IG9kc29sZCAiJiN4MjlCQzsiPgotPCFFTlRJVFkgb2xjaXIgIiYjeDI5QkU7Ij4KLTwhRU5USVRZ
IG9mY2lyICImI3gyOUJGOyI+Ci08IUVOVElUWSBvbHQgIiYjeDI5QzA7Ij4KLTwhRU5USVRZIG9n
dCAiJiN4MjlDMTsiPgotPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiPgotPCFFTlRJVFkgY2ly
RSAiJiN4MjlDMzsiPgotPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgotPCFFTlRJVFkgYnNvbGIg
IiYjeDI5QzU7Ij4KLTwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgotPCFFTlRJVFkgdHJpc2Ig
IiYjeDI5Q0Q7Ij4KLTwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+Ci08IUVOVElUWSBMZWZ0
VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KLTwhRU5USVRZIE5vdExlZnRUcmlhbmdsZUJhciAiJiN4
MjlDRjsmI3gzMzg7Ij4KLTwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7Ij4KLTwh
RU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4OyI+Ci08IUVOVElUWSBp
aW5maW4gIiYjeDI5REM7Ij4KLTwhRU5USVRZIGluZmludGllICImI3gyOUREOyI+Ci08IUVOVElU
WSBudmluZmluICImI3gyOURFOyI+Ci08IUVOVElUWSBlcGFyc2wgIiYjeDI5RTM7Ij4KLTwhRU5U
SVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Ci08IUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiPgot
PCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgotPCFFTlRJVFkgYmxhY2tsb3plbmdlICImI3gyOUVC
OyI+Ci08IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgotPCFFTlRJVFkgZHNvbCAiJiN4
MjlGNjsiPgotPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KLTwhRU5USVRZIGJpZ29kb3QgIiYj
eDJBMDA7Ij4KLTwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgotPCFFTlRJVFkgYmlnb3BsdXMg
IiYjeDJBMDE7Ij4KLTwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgotPCFFTlRJVFkgYmlnb3Rp
bWVzICImI3gyQTAyOyI+Ci08IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ij4KLTwhRU5USVRZIGJp
Z3VwbHVzICImI3gyQTA0OyI+Ci08IUVOVElUWSB4c3FjdXAgIiYjeDJBMDY7Ij4KLTwhRU5USVRZ
IGJpZ3NxY3VwICImI3gyQTA2OyI+Ci08IUVOVElUWSBxaW50ICImI3gyQTBDOyI+Ci08IUVOVElU
WSBpaWlpbnQgIiYjeDJBMEM7Ij4KLTwhRU5USVRZIGZwYXJ0aW50ICImI3gyQTBEOyI+Ci08IUVO
VElUWSBjaXJmbmludCAiJiN4MkExMDsiPgotPCFFTlRJVFkgYXdpbnQgIiYjeDJBMTE7Ij4KLTwh
RU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Ci08IUVOVElUWSBzY3BvbGludCAiJiN4MkExMzsi
PgotPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgotPCFFTlRJVFkgcG9pbnRpbnQgIiYjeDJB
MTU7Ij4KLTwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KLTwhRU5USVRZIGludGxhcmhrICIm
I3gyQTE3OyI+Ci08IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Ci08IUVOVElUWSBwbHVzYWNp
ciAiJiN4MkEyMzsiPgotPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsiPgotPCFFTlRJVFkgcGx1
c2R1ICImI3gyQTI1OyI+Ci08IUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyI+Ci08IUVOVElUWSBw
bHVzdHdvICImI3gyQTI3OyI+Ci08IUVOVElUWSBtY29tbWEgIiYjeDJBMjk7Ij4KLTwhRU5USVRZ
IG1pbnVzZHUgIiYjeDJBMkE7Ij4KLTwhRU5USVRZIGxvcGx1cyAiJiN4MkEyRDsiPgotPCFFTlRJ
VFkgcm9wbHVzICImI3gyQTJFOyI+Ci08IUVOVElUWSBDcm9zcyAiJiN4MkEyRjsiPgotPCFFTlRJ
VFkgdGltZXNkICImI3gyQTMwOyI+Ci08IUVOVElUWSB0aW1lc2JhciAiJiN4MkEzMTsiPgotPCFF
TlRJVFkgc21hc2hwICImI3gyQTMzOyI+Ci08IUVOVElUWSBsb3RpbWVzICImI3gyQTM0OyI+Ci08
IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Ci08IUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsi
PgotPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Ci08IUVOVElUWSBvZGl2ICImI3gyQTM4OyI+
Ci08IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Ci08IUVOVElUWSB0cmltaW51cyAiJiN4MkEz
QTsiPgotPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgotPCFFTlRJVFkgaXByb2QgIiYjeDJB
M0M7Ij4KLTwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KLTwhRU5USVRZIGFtYWxnICImI3gy
QTNGOyI+Ci08IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KLTwhRU5USVRZIG5jdXAgIiYjeDJB
NDI7Ij4KLTwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KLTwhRU5USVRZIGNhcGFuZCAiJiN4MkE0
NDsiPgotPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KLTwhRU5USVRZIGN1cGNhcCAiJiN4MkE0
NjsiPgotPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Ci08IUVOVElUWSBjdXBicmNhcCAiJiN4
MkE0ODsiPgotPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KLTwhRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiPgotPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Ci08IUVOVElUWSBjY3VwcyAi
JiN4MkE0QzsiPgotPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KLTwhRU5USVRZIGNjdXBzc20g
IiYjeDJBNTA7Ij4KLTwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgotPCFFTlRJVFkgT3IgIiYjeDJB
NTQ7Ij4KLTwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgotPCFFTlRJVFkgb3JvciAiJiN4MkE1
NjsiPgotPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgotPCFFTlRJVFkgYW5kc2xvcGUgIiYj
eDJBNTg7Ij4KLTwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KLTwhRU5USVRZIG9ydiAiJiN4MkE1
QjsiPgotPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgotPCFFTlRJVFkgb3JkICImI3gyQTVEOyI+
Ci08IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KLTwhRU5USVRZIHNkb3RlICImI3gyQTY2OyI+
Ci08IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KLTwhRU5USVRZIGNvbmdkb3QgIiYjeDJBNkQ7
Ij4KLTwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgotPCFFTlRJVFkgZWFzdGVy
ICImI3gyQTZFOyI+Ci08IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4KLTwhRU5USVRZIGFwRSAi
JiN4MkE3MDsiPgotPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ij4KLTwhRU5USVRZIGVw
bHVzICImI3gyQTcxOyI+Ci08IUVOVElUWSBwbHVzZSAiJiN4MkE3MjsiPgotPCFFTlRJVFkgRXNp
bSAiJiN4MkE3MzsiPgotPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+Ci08IUVOVElUWSBFcXVh
bCAiJiN4MkE3NTsiPgotPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGRkb3Rz
ZXEgIiYjeDJBNzc7Ij4KLTwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7Ij4KLTwhRU5USVRZIGx0
Y2lyICImI3gyQTc5OyI+Ci08IUVOVElUWSBndGNpciAiJiN4MkE3QTsiPgotPCFFTlRJVFkgbHRx
dWVzdCAiJiN4MkE3QjsiPgotPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3QzsiPgotPCFFTlRJVFkg
bGVzICImI3gyQTdEOyI+Ci08IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsiPgotPCFF
TlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KLTwhRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4
OyI+Ci08IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5U
SVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KLTwhRU5USVRZIGdlcyAiJiN4MkE3RTsi
PgotPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4KLTwhRU5USVRZIGdlcXNs
YW50ICImI3gyQTdFOyI+Ci08IUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsiPgotPCFFTlRJ
VFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBuZ2Vx
c2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Ci08IUVOVElUWSBsZXNkb3QgIiYjeDJBN0Y7Ij4KLTwh
RU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgotPCFFTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiPgot
PCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgotPCFFTlRJVFkgbGVzZG90b3IgIiYjeDJBODM7
Ij4KLTwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Ci08IUVOVElUWSBsYXAgIiYjeDJBODU7
Ij4KLTwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KLTwhRU5USVRZIGdhcCAiJiN4MkE4
NjsiPgotPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Ci08IUVOVElUWSBsbmUgIiYjeDJB
ODc7Ij4KLTwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KLTwhRU5USVRZIGduZSAiJiN4MkE4ODsi
PgotPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgotPCFFTlRJVFkgbG5hcCAiJiN4MkE4OTsiPgot
PCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KLTwhRU5USVRZIGduYXAgIiYjeDJBOEE7Ij4K
LTwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Ci08IUVOVElUWSBsRWcgIiYjeDJBOEI7Ij4K
LTwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KLTwhRU5USVRZIGdFbCAiJiN4MkE4Qzsi
PgotPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgotPCFFTlRJVFkgbHNpbWUgIiYjeDJB
OEQ7Ij4KLTwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Ci08IUVOVElUWSBsc2ltZyAiJiN4MkE4
RjsiPgotPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KLTwhRU5USVRZIGxnRSAiJiN4MkE5MTsi
PgotPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Ci08IUVOVElUWSBsZXNnZXMgIiYjeDJBOTM7Ij4K
LTwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgotPCFFTlRJVFkgZWxzICImI3gyQTk1OyI+Ci08
IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgotPCFFTlRJVFkgZWdzICImI3gyQTk2OyI+
Ci08IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Ci08IUVOVElUWSBlbHNkb3QgIiYjeDJB
OTc7Ij4KLTwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgotPCFFTlRJVFkgZWwgIiYjeDJBOTk7
Ij4KLTwhRU5USVRZIGVnICImI3gyQTlBOyI+Ci08IUVOVElUWSBzaW1sICImI3gyQTlEOyI+Ci08
IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Ci08IUVOVElUWSBzaW1sRSAiJiN4MkE5RjsiPgotPCFF
TlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KLTwhRU5USVRZIExlc3NMZXNzICImI3gyQUExOyI+Ci08
IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7Ij4KLTwhRU5USVRZIEdy
ZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Ci08IUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRl
ciAiJiN4MkFBMjsmI3gzMzg7Ij4KLTwhRU5USVRZIGdsaiAiJiN4MkFBNDsiPgotPCFFTlRJVFkg
Z2xhICImI3gyQUE1OyI+Ci08IUVOVElUWSBsdGNjICImI3gyQUE2OyI+Ci08IUVOVElUWSBndGNj
ICImI3gyQUE3OyI+Ci08IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgotPCFFTlRJVFkgZ2VzY2Mg
IiYjeDJBQTk7Ij4KLTwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgotPCFFTlRJVFkgbGF0ICImI3gy
QUFCOyI+Ci08IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Ci08IUVOVElUWSBzbXRlcyAiJiN4MkFB
QzsmI3hGRTAwOyI+Ci08IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Ci08IUVOVElUWSBsYXRlcyAi
JiN4MkFBRDsmI3hGRTAwOyI+Ci08IUVOVElUWSBidW1wRSAiJiN4MkFBRTsiPgotPCFFTlRJVFkg
cHJlICImI3gyQUFGOyI+Ci08IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIFBy
ZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KLTwhRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyI+
Ci08IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgotPCFFTlRJVFkgTm90UHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KLTwhRU5USVRZIHNjZSAiJiN4MkFCMDsiPgotPCFF
TlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Ci08IUVOVElUWSBTdWNjZWVkc0VxdWFsICImI3gyQUIw
OyI+Ci08IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgotPCFFTlRJVFkgbnN1Y2NlcSAi
JiN4MkFCMDsmI3gzMzg7Ij4KLTwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1YWwgIiYjeDJBQjA7JiN4
MzM4OyI+Ci08IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KLTwhRU5USVRZIHNjRSAiJiN4MkFCNDsi
PgotPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgotPCFFTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7
Ij4KLTwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KLTwhRU5USVRZIHN1Y2NuZXFxICImI3gyQUI2
OyI+Ci08IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Ci08IUVOVElUWSBwcmVjYXBwcm94ICImI3gy
QUI3OyI+Ci08IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Ci08IUVOVElUWSBzdWNjYXBwcm94ICIm
I3gyQUI4OyI+Ci08IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgotPCFFTlRJVFkgcHJlY25hcHBy
b3ggIiYjeDJBQjk7Ij4KLTwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+Ci08IUVOVElUWSBzdWNj
bmFwcHJveCAiJiN4MkFCQTsiPgotPCFFTlRJVFkgUHIgIiYjeDJBQkI7Ij4KLTwhRU5USVRZIFNj
ICImI3gyQUJDOyI+Ci08IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4KLTwhRU5USVRZIHN1cGRv
dCAiJiN4MkFCRTsiPgotPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiPgotPCFFTlRJVFkgc3Vw
cGx1cyAiJiN4MkFDMDsiPgotPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFDMTsiPgotPCFFTlRJVFkg
c3VwbXVsdCAiJiN4MkFDMjsiPgotPCFFTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiPgotPCFFTlRJ
VFkgc3VwZWRvdCAiJiN4MkFDNDsiPgotPCFFTlRJVFkgc3ViRSAiJiN4MkFDNTsiPgotPCFFTlRJ
VFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Ci08IUVOVElUWSBuc3ViRSAiJiN4MkFDNTsmI3gzMzg7
Ij4KLTwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+Ci08IUVOVElUWSBzdXBF
ICImI3gyQUM2OyI+Ci08IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7Ij4KLTwhRU5USVRZIG5z
dXBFICImI3gyQUM2OyYjeDMzODsiPgotPCFFTlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gz
Mzg7Ij4KLTwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgotPCFFTlRJVFkgc3Vwc2ltICImI3gy
QUM4OyI+Ci08IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgotPCFFTlRJVFkgc3Vic2V0bmVxcSAi
JiN4MkFDQjsiPgotPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ij4KLTwhRU5USVRZ
IHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgotPCFFTlRJVFkgc3VwbkUgIiYjeDJB
Q0M7Ij4KLTwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KLTwhRU5USVRZIHZzdXBuRSAi
JiN4MkFDQzsmI3hGRTAwOyI+Ci08IUVOVElUWSB2YXJzdXBzZXRuZXFxICImI3gyQUNDOyYjeEZF
MDA7Ij4KLTwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KLTwhRU5USVRZIGNzdXAgIiYjeDJBRDA7
Ij4KLTwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Ci08IUVOVElUWSBjc3VwZSAiJiN4MkFEMjsi
PgotPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Ci08IUVOVElUWSBzdXBzdWIgIiYjeDJBRDQ7
Ij4KLTwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgotPCFFTlRJVFkgc3Vwc3VwICImI3gyQUQ2
OyI+Ci08IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Ci08IUVOVElUWSBzdXBkc3ViICImI3gy
QUQ4OyI+Ci08IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgotPCFFTlRJVFkgdG9wZm9yayAiJiN4
MkFEQTsiPgotPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgotPCFFTlRJVFkgRGFzaHYgIiYjeDJB
RTQ7Ij4KLTwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4KLTwhRU5USVRZIFZkYXNo
bCAiJiN4MkFFNjsiPgotPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgotPCFFTlRJVFkgdkJhciAi
JiN4MkFFODsiPgotPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KLTwhRU5USVRZIFZiYXIgIiYj
eDJBRUI7Ij4KLTwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgotPCFFTlRJVFkgYk5vdCAiJiN4MkFF
RDsiPgotPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KLTwhRU5USVRZIGNpcm1pZCAiJiN4MkFF
RjsiPgotPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Ci08IUVOVElUWSB0b3BjaXIgIiYjeDJB
RjE7Ij4KLTwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Ci08IUVOVElUWSBwYXJzaW0gIiYjeDJB
RjM7Ij4KLTwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Ci08IUVOVElUWSBucGFyc2wgIiYjeDJB
RkQ7JiN4MjBFNTsiPgotPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4KLTwhRU5USVRZIGZpbGln
ICImI3hGQjAxOyI+Ci08IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgotPCFFTlRJVFkgZmZpbGln
ICImI3hGQjAzOyI+Ci08IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4KLTwhRU5USVRZIEFzY3Ig
IiYjeDFENDlDOyI+Ci08IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgotPCFFTlRJVFkgRHNjciAi
JiN4MUQ0OUY7Ij4KLTwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Ci08IUVOVElUWSBKc2NyICIm
I3gxRDRBNTsiPgotPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KLTwhRU5USVRZIE5zY3IgIiYj
eDFENEE5OyI+Ci08IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgotPCFFTlRJVFkgUHNjciAiJiN4
MUQ0QUI7Ij4KLTwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Ci08IUVOVElUWSBTc2NyICImI3gx
RDRBRTsiPgotPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KLTwhRU5USVRZIFVzY3IgIiYjeDFE
NEIwOyI+Ci08IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgotPCFFTlRJVFkgV3NjciAiJiN4MUQ0
QjI7Ij4KLTwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Ci08IUVOVElUWSBZc2NyICImI3gxRDRC
NDsiPgotPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KLTwhRU5USVRZIGFzY3IgIiYjeDFENEI2
OyI+Ci08IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgotPCFFTlRJVFkgY3NjciAiJiN4MUQ0Qjg7
Ij4KLTwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Ci08IUVOVElUWSBmc2NyICImI3gxRDRCQjsi
PgotPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KLTwhRU5USVRZIGlzY3IgIiYjeDFENEJFOyI+
Ci08IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgotPCFFTlRJVFkga3NjciAiJiN4MUQ0QzA7Ij4K
LTwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Ci08IUVOVElUWSBtc2NyICImI3gxRDRDMjsiPgot
PCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KLTwhRU5USVRZIHBzY3IgIiYjeDFENEM1OyI+Ci08
IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgotPCFFTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ij4KLTwh
RU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Ci08IUVOVElUWSB0c2NyICImI3gxRDRDOTsiPgotPCFF
TlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KLTwhRU5USVRZIHZzY3IgIiYjeDFENENCOyI+Ci08IUVO
VElUWSB3c2NyICImI3gxRDRDQzsiPgotPCFFTlRJVFkgeHNjciAiJiN4MUQ0Q0Q7Ij4KLTwhRU5U
SVRZIHlzY3IgIiYjeDFENENFOyI+Ci08IUVOVElUWSB6c2NyICImI3gxRDRDRjsiPgotPCFFTlRJ
VFkgQWZyICImI3gxRDUwNDsiPgotPCFFTlRJVFkgQmZyICImI3gxRDUwNTsiPgotPCFFTlRJVFkg
RGZyICImI3gxRDUwNzsiPgotPCFFTlRJVFkgRWZyICImI3gxRDUwODsiPgotPCFFTlRJVFkgRmZy
ICImI3gxRDUwOTsiPgotPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgotPCFFTlRJVFkgSmZyICIm
I3gxRDUwRDsiPgotPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgotPCFFTlRJVFkgTGZyICImI3gx
RDUwRjsiPgotPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgotPCFFTlRJVFkgTmZyICImI3gxRDUx
MTsiPgotPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgotPCFFTlRJVFkgUGZyICImI3gxRDUxMzsi
PgotPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgotPCFFTlRJVFkgU2ZyICImI3gxRDUxNjsiPgot
PCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgotPCFFTlRJVFkgVWZyICImI3gxRDUxODsiPgotPCFF
TlRJVFkgVmZyICImI3gxRDUxOTsiPgotPCFFTlRJVFkgV2ZyICImI3gxRDUxQTsiPgotPCFFTlRJ
VFkgWGZyICImI3gxRDUxQjsiPgotPCFFTlRJVFkgWWZyICImI3gxRDUxQzsiPgotPCFFTlRJVFkg
YWZyICImI3gxRDUxRTsiPgotPCFFTlRJVFkgYmZyICImI3gxRDUxRjsiPgotPCFFTlRJVFkgY2Zy
ICImI3gxRDUyMDsiPgotPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgotPCFFTlRJVFkgZWZyICIm
I3gxRDUyMjsiPgotPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgotPCFFTlRJVFkgZ2ZyICImI3gx
RDUyNDsiPgotPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgotPCFFTlRJVFkgaWZyICImI3gxRDUy
NjsiPgotPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgotPCFFTlRJVFkga2ZyICImI3gxRDUyODsi
PgotPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgotPCFFTlRJVFkgbWZyICImI3gxRDUyQTsiPgot
PCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgotPCFFTlRJVFkgb2ZyICImI3gxRDUyQzsiPgotPCFF
TlRJVFkgcGZyICImI3gxRDUyRDsiPgotPCFFTlRJVFkgcWZyICImI3gxRDUyRTsiPgotPCFFTlRJ
VFkgcmZyICImI3gxRDUyRjsiPgotPCFFTlRJVFkgc2ZyICImI3gxRDUzMDsiPgotPCFFTlRJVFkg
dGZyICImI3gxRDUzMTsiPgotPCFFTlRJVFkgdWZyICImI3gxRDUzMjsiPgotPCFFTlRJVFkgdmZy
ICImI3gxRDUzMzsiPgotPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgotPCFFTlRJVFkgeGZyICIm
I3gxRDUzNTsiPgotPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgotPCFFTlRJVFkgemZyICImI3gx
RDUzNzsiPgotPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KLTwhRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyI+Ci08IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgotPCFFTlRJVFkgRW9wZiAiJiN4MUQ1
M0M7Ij4KLTwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Ci08IUVOVElUWSBHb3BmICImI3gxRDUz
RTsiPgotPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KLTwhRU5USVRZIEpvcGYgIiYjeDFENTQx
OyI+Ci08IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgotPCFFTlRJVFkgTG9wZiAiJiN4MUQ1NDM7
Ij4KLTwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Ci08IUVOVElUWSBPb3BmICImI3gxRDU0Njsi
PgotPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KLTwhRU5USVRZIFRvcGYgIiYjeDFENTRCOyI+
Ci08IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgotPCFFTlRJVFkgVm9wZiAiJiN4MUQ1NEQ7Ij4K
LTwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Ci08IUVOVElUWSBYb3BmICImI3gxRDU0RjsiPgot
PCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KLTwhRU5USVRZIGFvcGYgIiYjeDFENTUyOyI+Ci08
IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgotPCFFTlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ij4KLTwh
RU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Ci08IUVOVElUWSBlb3BmICImI3gxRDU1NjsiPgotPCFF
TlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KLTwhRU5USVRZIGdvcGYgIiYjeDFENTU4OyI+Ci08IUVO
VElUWSBob3BmICImI3gxRDU1OTsiPgotPCFFTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ij4KLTwhRU5U
SVRZIGpvcGYgIiYjeDFENTVCOyI+Ci08IUVOVElUWSBrb3BmICImI3gxRDU1QzsiPgotPCFFTlRJ
VFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KLTwhRU5USVRZIG1vcGYgIiYjeDFENTVFOyI+Ci08IUVOVElU
WSBub3BmICImI3gxRDU1RjsiPgotPCFFTlRJVFkgb29wZiAiJiN4MUQ1NjA7Ij4KLTwhRU5USVRZ
IHBvcGYgIiYjeDFENTYxOyI+Ci08IUVOVElUWSBxb3BmICImI3gxRDU2MjsiPgotPCFFTlRJVFkg
cm9wZiAiJiN4MUQ1NjM7Ij4KLTwhRU5USVRZIHNvcGYgIiYjeDFENTY0OyI+Ci08IUVOVElUWSB0
b3BmICImI3gxRDU2NTsiPgotPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ij4KLTwhRU5USVRZIHZv
cGYgIiYjeDFENTY3OyI+Ci08IUVOVElUWSB3b3BmICImI3gxRDU2ODsiPgotPCFFTlRJVFkgeG9w
ZiAiJiN4MUQ1Njk7Ij4KLTwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+Ci08IUVOVElUWSB6b3Bm
ICImI3gxRDU2QjsiPgorPCEtLUVOVElUWSBUYWIgIiYjeDk7Ii0tPgorPCEtLUVOVElUWSBOZXdM
aW5lICImI3hBOyItLT4KKzwhLS1FTlRJVFkgZXhjbCAiJiN4MjE7Ii0tPgorPCEtLUVOVElUWSBx
dW90ICImI3gyMjsiLS0+Cis8IS0tRU5USVRZIFFVT1QgIiYjeDIyOyItLT4KKzwhLS1FTlRJVFkg
bnVtICImI3gyMzsiLS0+Cis8IS0tRU5USVRZIGRvbGxhciAiJiN4MjQ7Ii0tPgorPCEtLUVOVElU
WSBwZXJjbnQgIiYjeDI1OyItLT4KKzwhLS1FTlRJVFkgYW1wICImI3gyNjsjeDI2OyItLT4KKzwh
LS1FTlRJVFkgQU1QICImI3gyNjsjeDI2OyItLT4KKzwhLS1FTlRJVFkgYXBvcyAiJiN4Mjc7Ii0t
PgorPCEtLUVOVElUWSBscGFyICImI3gyODsiLS0+Cis8IS0tRU5USVRZIHJwYXIgIiYjeDI5OyIt
LT4KKzwhLS1FTlRJVFkgYXN0ICImI3gyQTsiLS0+Cis8IS0tRU5USVRZIG1pZGFzdCAiJiN4MkE7
Ii0tPgorPCEtLUVOVElUWSBwbHVzICImI3gyQjsiLS0+Cis8IS0tRU5USVRZIGNvbW1hICImI3gy
QzsiLS0+Cis8IS0tRU5USVRZIHBlcmlvZCAiJiN4MkU7Ii0tPgorPCEtLUVOVElUWSBzb2wgIiYj
eDJGOyItLT4KKzwhLS1FTlRJVFkgY29sb24gIiYjeDNBOyItLT4KKzwhLS1FTlRJVFkgc2VtaSAi
JiN4M0I7Ii0tPgorPCEtLUVOVElUWSBsdCAiJiN4MjY7I3gzQzsiLS0+Cis8IS0tRU5USVRZIExU
ICImI3gyNjsjeDNDOyItLT4KKzwhLS1FTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyIt
LT4KKzwhLS1FTlRJVFkgZXF1YWxzICImI3gzRDsiLS0+Cis8IS0tRU5USVRZIGJuZSAiJiN4M0Q7
JiN4MjBFNTsiLS0+Cis8IS0tRU5USVRZIGd0ICImI3gzRTsiLS0+Cis8IS0tRU5USVRZIEdUICIm
I3gzRTsiLS0+Cis8IS0tRU5USVRZIG52Z3QgIiYjeDNFOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElU
WSBxdWVzdCAiJiN4M0Y7Ii0tPgorPCEtLUVOVElUWSBjb21tYXQgIiYjeDQwOyItLT4KKzwhLS1F
TlRJVFkgbHNxYiAiJiN4NUI7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2sgIiYjeDVCOyItLT4KKzwh
LS1FTlRJVFkgYnNvbCAiJiN4NUM7Ii0tPgorPCEtLUVOVElUWSByc3FiICImI3g1RDsiLS0+Cis8
IS0tRU5USVRZIHJicmFjayAiJiN4NUQ7Ii0tPgorPCEtLUVOVElUWSBIYXQgIiYjeDVFOyItLT4K
KzwhLS1FTlRJVFkgbG93YmFyICImI3g1RjsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQmFyICImI3g1
RjsiLS0+Cis8IS0tRU5USVRZIGdyYXZlICImI3g2MDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRp
Y2FsR3JhdmUgIiYjeDYwOyItLT4KKzwhLS1FTlRJVFkgZmpsaWcgIiYjeDY2OyYjeDZBOyItLT4K
KzwhLS1FTlRJVFkgbGN1YiAiJiN4N0I7Ii0tPgorPCEtLUVOVElUWSBsYnJhY2UgIiYjeDdCOyIt
LT4KKzwhLS1FTlRJVFkgdmVyYmFyICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHZlcnQgIiYjeDdD
OyItLT4KKzwhLS1FTlRJVFkgVmVydGljYWxMaW5lICImI3g3QzsiLS0+Cis8IS0tRU5USVRZIHJj
dWIgIiYjeDdEOyItLT4KKzwhLS1FTlRJVFkgcmJyYWNlICImI3g3RDsiLS0+Cis8IS0tRU5USVRZ
IG5ic3AgIiYjeEEwOyItLT4KKzwhLS1FTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ii0t
PgorPCEtLUVOVElUWSBpZXhjbCAiJiN4QTE7Ii0tPgorPCEtLUVOVElUWSBjZW50ICImI3hBMjsi
LS0+Cis8IS0tRU5USVRZIHBvdW5kICImI3hBMzsiLS0+Cis8IS0tRU5USVRZIGN1cnJlbiAiJiN4
QTQ7Ii0tPgorPCEtLUVOVElUWSB5ZW4gIiYjeEE1OyItLT4KKzwhLS1FTlRJVFkgYnJ2YmFyICIm
I3hBNjsiLS0+Cis8IS0tRU5USVRZIHNlY3QgIiYjeEE3OyItLT4KKzwhLS1FTlRJVFkgRG90ICIm
I3hBODsiLS0+Cis8IS0tRU5USVRZIGRpZSAiJiN4QTg7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVE
b3QgIiYjeEE4OyItLT4KKzwhLS1FTlRJVFkgdW1sICImI3hBODsiLS0+Cis8IS0tRU5USVRZIGNv
cHkgIiYjeEE5OyItLT4KKzwhLS1FTlRJVFkgQ09QWSAiJiN4QTk7Ii0tPgorPCEtLUVOVElUWSBv
cmRmICImI3hBQTsiLS0+Cis8IS0tRU5USVRZIGxhcXVvICImI3hBQjsiLS0+Cis8IS0tRU5USVRZ
IG5vdCAiJiN4QUM7Ii0tPgorPCEtLUVOVElUWSBzaHkgIiYjeEFEOyItLT4KKzwhLS1FTlRJVFkg
cmVnICImI3hBRTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRSICImI3hBRTsiLS0+Cis8IS0tRU5U
SVRZIFJFRyAiJiN4QUU7Ii0tPgorPCEtLUVOVElUWSBtYWNyICImI3hBRjsiLS0+Cis8IS0tRU5U
SVRZIHN0cm5zICImI3hBRjsiLS0+Cis8IS0tRU5USVRZIGRlZyAiJiN4QjA7Ii0tPgorPCEtLUVO
VElUWSBwbHVzbW4gIiYjeEIxOyItLT4KKzwhLS1FTlRJVFkgcG0gIiYjeEIxOyItLT4KKzwhLS1F
TlRJVFkgUGx1c01pbnVzICImI3hCMTsiLS0+Cis8IS0tRU5USVRZIHN1cDIgIiYjeEIyOyItLT4K
KzwhLS1FTlRJVFkgc3VwMyAiJiN4QjM7Ii0tPgorPCEtLUVOVElUWSBhY3V0ZSAiJiN4QjQ7Ii0t
PgorPCEtLUVOVElUWSBEaWFjcml0aWNhbEFjdXRlICImI3hCNDsiLS0+Cis8IS0tRU5USVRZIG1p
Y3JvICImI3hCNTsiLS0+Cis8IS0tRU5USVRZIHBhcmEgIiYjeEI2OyItLT4KKzwhLS1FTlRJVFkg
bWlkZG90ICImI3hCNzsiLS0+Cis8IS0tRU5USVRZIGNlbnRlcmRvdCAiJiN4Qjc7Ii0tPgorPCEt
LUVOVElUWSBDZW50ZXJEb3QgIiYjeEI3OyItLT4KKzwhLS1FTlRJVFkgY2VkaWwgIiYjeEI4OyIt
LT4KKzwhLS1FTlRJVFkgQ2VkaWxsYSAiJiN4Qjg7Ii0tPgorPCEtLUVOVElUWSBzdXAxICImI3hC
OTsiLS0+Cis8IS0tRU5USVRZIG9yZG0gIiYjeEJBOyItLT4KKzwhLS1FTlRJVFkgcmFxdW8gIiYj
eEJCOyItLT4KKzwhLS1FTlRJVFkgZnJhYzE0ICImI3hCQzsiLS0+Cis8IS0tRU5USVRZIGZyYWMx
MiAiJiN4QkQ7Ii0tPgorPCEtLUVOVElUWSBoYWxmICImI3hCRDsiLS0+Cis8IS0tRU5USVRZIGZy
YWMzNCAiJiN4QkU7Ii0tPgorPCEtLUVOVElUWSBpcXVlc3QgIiYjeEJGOyItLT4KKzwhLS1FTlRJ
VFkgQWdyYXZlICImI3hDMDsiLS0+Cis8IS0tRU5USVRZIEFhY3V0ZSAiJiN4QzE7Ii0tPgorPCEt
LUVOVElUWSBBY2lyYyAiJiN4QzI7Ii0tPgorPCEtLUVOVElUWSBBdGlsZGUgIiYjeEMzOyItLT4K
KzwhLS1FTlRJVFkgQXVtbCAiJiN4QzQ7Ii0tPgorPCEtLUVOVElUWSBBcmluZyAiJiN4QzU7Ii0t
PgorPCEtLUVOVElUWSBhbmdzdCAiJiN4QzU7Ii0tPgorPCEtLUVOVElUWSBBRWxpZyAiJiN4QzY7
Ii0tPgorPCEtLUVOVElUWSBDY2VkaWwgIiYjeEM3OyItLT4KKzwhLS1FTlRJVFkgRWdyYXZlICIm
I3hDODsiLS0+Cis8IS0tRU5USVRZIEVhY3V0ZSAiJiN4Qzk7Ii0tPgorPCEtLUVOVElUWSBFY2ly
YyAiJiN4Q0E7Ii0tPgorPCEtLUVOVElUWSBFdW1sICImI3hDQjsiLS0+Cis8IS0tRU5USVRZIEln
cmF2ZSAiJiN4Q0M7Ii0tPgorPCEtLUVOVElUWSBJYWN1dGUgIiYjeENEOyItLT4KKzwhLS1FTlRJ
VFkgSWNpcmMgIiYjeENFOyItLT4KKzwhLS1FTlRJVFkgSXVtbCAiJiN4Q0Y7Ii0tPgorPCEtLUVO
VElUWSBFVEggIiYjeEQwOyItLT4KKzwhLS1FTlRJVFkgTnRpbGRlICImI3hEMTsiLS0+Cis8IS0t
RU5USVRZIE9ncmF2ZSAiJiN4RDI7Ii0tPgorPCEtLUVOVElUWSBPYWN1dGUgIiYjeEQzOyItLT4K
KzwhLS1FTlRJVFkgT2NpcmMgIiYjeEQ0OyItLT4KKzwhLS1FTlRJVFkgT3RpbGRlICImI3hENTsi
LS0+Cis8IS0tRU5USVRZIE91bWwgIiYjeEQ2OyItLT4KKzwhLS1FTlRJVFkgdGltZXMgIiYjeEQ3
OyItLT4KKzwhLS1FTlRJVFkgT3NsYXNoICImI3hEODsiLS0+Cis8IS0tRU5USVRZIFVncmF2ZSAi
JiN4RDk7Ii0tPgorPCEtLUVOVElUWSBVYWN1dGUgIiYjeERBOyItLT4KKzwhLS1FTlRJVFkgVWNp
cmMgIiYjeERCOyItLT4KKzwhLS1FTlRJVFkgVXVtbCAiJiN4REM7Ii0tPgorPCEtLUVOVElUWSBZ
YWN1dGUgIiYjeEREOyItLT4KKzwhLS1FTlRJVFkgVEhPUk4gIiYjeERFOyItLT4KKzwhLS1FTlRJ
VFkgc3psaWcgIiYjeERGOyItLT4KKzwhLS1FTlRJVFkgYWdyYXZlICImI3hFMDsiLS0+Cis8IS0t
RU5USVRZIGFhY3V0ZSAiJiN4RTE7Ii0tPgorPCEtLUVOVElUWSBhY2lyYyAiJiN4RTI7Ii0tPgor
PCEtLUVOVElUWSBhdGlsZGUgIiYjeEUzOyItLT4KKzwhLS1FTlRJVFkgYXVtbCAiJiN4RTQ7Ii0t
PgorPCEtLUVOVElUWSBhcmluZyAiJiN4RTU7Ii0tPgorPCEtLUVOVElUWSBhZWxpZyAiJiN4RTY7
Ii0tPgorPCEtLUVOVElUWSBjY2VkaWwgIiYjeEU3OyItLT4KKzwhLS1FTlRJVFkgZWdyYXZlICIm
I3hFODsiLS0+Cis8IS0tRU5USVRZIGVhY3V0ZSAiJiN4RTk7Ii0tPgorPCEtLUVOVElUWSBlY2ly
YyAiJiN4RUE7Ii0tPgorPCEtLUVOVElUWSBldW1sICImI3hFQjsiLS0+Cis8IS0tRU5USVRZIGln
cmF2ZSAiJiN4RUM7Ii0tPgorPCEtLUVOVElUWSBpYWN1dGUgIiYjeEVEOyItLT4KKzwhLS1FTlRJ
VFkgaWNpcmMgIiYjeEVFOyItLT4KKzwhLS1FTlRJVFkgaXVtbCAiJiN4RUY7Ii0tPgorPCEtLUVO
VElUWSBldGggIiYjeEYwOyItLT4KKzwhLS1FTlRJVFkgbnRpbGRlICImI3hGMTsiLS0+Cis8IS0t
RU5USVRZIG9ncmF2ZSAiJiN4RjI7Ii0tPgorPCEtLUVOVElUWSBvYWN1dGUgIiYjeEYzOyItLT4K
KzwhLS1FTlRJVFkgb2NpcmMgIiYjeEY0OyItLT4KKzwhLS1FTlRJVFkgb3RpbGRlICImI3hGNTsi
LS0+Cis8IS0tRU5USVRZIG91bWwgIiYjeEY2OyItLT4KKzwhLS1FTlRJVFkgZGl2aWRlICImI3hG
NzsiLS0+Cis8IS0tRU5USVRZIGRpdiAiJiN4Rjc7Ii0tPgorPCEtLUVOVElUWSBvc2xhc2ggIiYj
eEY4OyItLT4KKzwhLS1FTlRJVFkgdWdyYXZlICImI3hGOTsiLS0+Cis8IS0tRU5USVRZIHVhY3V0
ZSAiJiN4RkE7Ii0tPgorPCEtLUVOVElUWSB1Y2lyYyAiJiN4RkI7Ii0tPgorPCEtLUVOVElUWSB1
dW1sICImI3hGQzsiLS0+Cis8IS0tRU5USVRZIHlhY3V0ZSAiJiN4RkQ7Ii0tPgorPCEtLUVOVElU
WSB0aG9ybiAiJiN4RkU7Ii0tPgorPCEtLUVOVElUWSB5dW1sICImI3hGRjsiLS0+Cis8IS0tRU5U
SVRZIEFtYWNyICImI3gxMDA7Ii0tPgorPCEtLUVOVElUWSBhbWFjciAiJiN4MTAxOyItLT4KKzwh
LS1FTlRJVFkgQWJyZXZlICImI3gxMDI7Ii0tPgorPCEtLUVOVElUWSBhYnJldmUgIiYjeDEwMzsi
LS0+Cis8IS0tRU5USVRZIEFvZ29uICImI3gxMDQ7Ii0tPgorPCEtLUVOVElUWSBhb2dvbiAiJiN4
MTA1OyItLT4KKzwhLS1FTlRJVFkgQ2FjdXRlICImI3gxMDY7Ii0tPgorPCEtLUVOVElUWSBjYWN1
dGUgIiYjeDEwNzsiLS0+Cis8IS0tRU5USVRZIENjaXJjICImI3gxMDg7Ii0tPgorPCEtLUVOVElU
WSBjY2lyYyAiJiN4MTA5OyItLT4KKzwhLS1FTlRJVFkgQ2RvdCAiJiN4MTBBOyItLT4KKzwhLS1F
TlRJVFkgY2RvdCAiJiN4MTBCOyItLT4KKzwhLS1FTlRJVFkgQ2Nhcm9uICImI3gxMEM7Ii0tPgor
PCEtLUVOVElUWSBjY2Fyb24gIiYjeDEwRDsiLS0+Cis8IS0tRU5USVRZIERjYXJvbiAiJiN4MTBF
OyItLT4KKzwhLS1FTlRJVFkgZGNhcm9uICImI3gxMEY7Ii0tPgorPCEtLUVOVElUWSBEc3Ryb2sg
IiYjeDExMDsiLS0+Cis8IS0tRU5USVRZIGRzdHJvayAiJiN4MTExOyItLT4KKzwhLS1FTlRJVFkg
RW1hY3IgIiYjeDExMjsiLS0+Cis8IS0tRU5USVRZIGVtYWNyICImI3gxMTM7Ii0tPgorPCEtLUVO
VElUWSBFZG90ICImI3gxMTY7Ii0tPgorPCEtLUVOVElUWSBlZG90ICImI3gxMTc7Ii0tPgorPCEt
LUVOVElUWSBFb2dvbiAiJiN4MTE4OyItLT4KKzwhLS1FTlRJVFkgZW9nb24gIiYjeDExOTsiLS0+
Cis8IS0tRU5USVRZIEVjYXJvbiAiJiN4MTFBOyItLT4KKzwhLS1FTlRJVFkgZWNhcm9uICImI3gx
MUI7Ii0tPgorPCEtLUVOVElUWSBHY2lyYyAiJiN4MTFDOyItLT4KKzwhLS1FTlRJVFkgZ2NpcmMg
IiYjeDExRDsiLS0+Cis8IS0tRU5USVRZIEdicmV2ZSAiJiN4MTFFOyItLT4KKzwhLS1FTlRJVFkg
Z2JyZXZlICImI3gxMUY7Ii0tPgorPCEtLUVOVElUWSBHZG90ICImI3gxMjA7Ii0tPgorPCEtLUVO
VElUWSBnZG90ICImI3gxMjE7Ii0tPgorPCEtLUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiLS0+Cis8
IS0tRU5USVRZIEhjaXJjICImI3gxMjQ7Ii0tPgorPCEtLUVOVElUWSBoY2lyYyAiJiN4MTI1OyIt
LT4KKzwhLS1FTlRJVFkgSHN0cm9rICImI3gxMjY7Ii0tPgorPCEtLUVOVElUWSBoc3Ryb2sgIiYj
eDEyNzsiLS0+Cis8IS0tRU5USVRZIEl0aWxkZSAiJiN4MTI4OyItLT4KKzwhLS1FTlRJVFkgaXRp
bGRlICImI3gxMjk7Ii0tPgorPCEtLUVOVElUWSBJbWFjciAiJiN4MTJBOyItLT4KKzwhLS1FTlRJ
VFkgaW1hY3IgIiYjeDEyQjsiLS0+Cis8IS0tRU5USVRZIElvZ29uICImI3gxMkU7Ii0tPgorPCEt
LUVOVElUWSBpb2dvbiAiJiN4MTJGOyItLT4KKzwhLS1FTlRJVFkgSWRvdCAiJiN4MTMwOyItLT4K
KzwhLS1FTlRJVFkgaW1hdGggIiYjeDEzMTsiLS0+Cis8IS0tRU5USVRZIGlub2RvdCAiJiN4MTMx
OyItLT4KKzwhLS1FTlRJVFkgSUpsaWcgIiYjeDEzMjsiLS0+Cis8IS0tRU5USVRZIGlqbGlnICIm
I3gxMzM7Ii0tPgorPCEtLUVOVElUWSBKY2lyYyAiJiN4MTM0OyItLT4KKzwhLS1FTlRJVFkgamNp
cmMgIiYjeDEzNTsiLS0+Cis8IS0tRU5USVRZIEtjZWRpbCAiJiN4MTM2OyItLT4KKzwhLS1FTlRJ
VFkga2NlZGlsICImI3gxMzc7Ii0tPgorPCEtLUVOVElUWSBrZ3JlZW4gIiYjeDEzODsiLS0+Cis8
IS0tRU5USVRZIExhY3V0ZSAiJiN4MTM5OyItLT4KKzwhLS1FTlRJVFkgbGFjdXRlICImI3gxM0E7
Ii0tPgorPCEtLUVOVElUWSBMY2VkaWwgIiYjeDEzQjsiLS0+Cis8IS0tRU5USVRZIGxjZWRpbCAi
JiN4MTNDOyItLT4KKzwhLS1FTlRJVFkgTGNhcm9uICImI3gxM0Q7Ii0tPgorPCEtLUVOVElUWSBs
Y2Fyb24gIiYjeDEzRTsiLS0+Cis8IS0tRU5USVRZIExtaWRvdCAiJiN4MTNGOyItLT4KKzwhLS1F
TlRJVFkgbG1pZG90ICImI3gxNDA7Ii0tPgorPCEtLUVOVElUWSBMc3Ryb2sgIiYjeDE0MTsiLS0+
Cis8IS0tRU5USVRZIGxzdHJvayAiJiN4MTQyOyItLT4KKzwhLS1FTlRJVFkgTmFjdXRlICImI3gx
NDM7Ii0tPgorPCEtLUVOVElUWSBuYWN1dGUgIiYjeDE0NDsiLS0+Cis8IS0tRU5USVRZIE5jZWRp
bCAiJiN4MTQ1OyItLT4KKzwhLS1FTlRJVFkgbmNlZGlsICImI3gxNDY7Ii0tPgorPCEtLUVOVElU
WSBOY2Fyb24gIiYjeDE0NzsiLS0+Cis8IS0tRU5USVRZIG5jYXJvbiAiJiN4MTQ4OyItLT4KKzwh
LS1FTlRJVFkgbmFwb3MgIiYjeDE0OTsiLS0+Cis8IS0tRU5USVRZIEVORyAiJiN4MTRBOyItLT4K
KzwhLS1FTlRJVFkgZW5nICImI3gxNEI7Ii0tPgorPCEtLUVOVElUWSBPbWFjciAiJiN4MTRDOyIt
LT4KKzwhLS1FTlRJVFkgb21hY3IgIiYjeDE0RDsiLS0+Cis8IS0tRU5USVRZIE9kYmxhYyAiJiN4
MTUwOyItLT4KKzwhLS1FTlRJVFkgb2RibGFjICImI3gxNTE7Ii0tPgorPCEtLUVOVElUWSBPRWxp
ZyAiJiN4MTUyOyItLT4KKzwhLS1FTlRJVFkgb2VsaWcgIiYjeDE1MzsiLS0+Cis8IS0tRU5USVRZ
IFJhY3V0ZSAiJiN4MTU0OyItLT4KKzwhLS1FTlRJVFkgcmFjdXRlICImI3gxNTU7Ii0tPgorPCEt
LUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiLS0+Cis8IS0tRU5USVRZIHJjZWRpbCAiJiN4MTU3OyIt
LT4KKzwhLS1FTlRJVFkgUmNhcm9uICImI3gxNTg7Ii0tPgorPCEtLUVOVElUWSByY2Fyb24gIiYj
eDE1OTsiLS0+Cis8IS0tRU5USVRZIFNhY3V0ZSAiJiN4MTVBOyItLT4KKzwhLS1FTlRJVFkgc2Fj
dXRlICImI3gxNUI7Ii0tPgorPCEtLUVOVElUWSBTY2lyYyAiJiN4MTVDOyItLT4KKzwhLS1FTlRJ
VFkgc2NpcmMgIiYjeDE1RDsiLS0+Cis8IS0tRU5USVRZIFNjZWRpbCAiJiN4MTVFOyItLT4KKzwh
LS1FTlRJVFkgc2NlZGlsICImI3gxNUY7Ii0tPgorPCEtLUVOVElUWSBTY2Fyb24gIiYjeDE2MDsi
LS0+Cis8IS0tRU5USVRZIHNjYXJvbiAiJiN4MTYxOyItLT4KKzwhLS1FTlRJVFkgVGNlZGlsICIm
I3gxNjI7Ii0tPgorPCEtLUVOVElUWSB0Y2VkaWwgIiYjeDE2MzsiLS0+Cis8IS0tRU5USVRZIFRj
YXJvbiAiJiN4MTY0OyItLT4KKzwhLS1FTlRJVFkgdGNhcm9uICImI3gxNjU7Ii0tPgorPCEtLUVO
VElUWSBUc3Ryb2sgIiYjeDE2NjsiLS0+Cis8IS0tRU5USVRZIHRzdHJvayAiJiN4MTY3OyItLT4K
KzwhLS1FTlRJVFkgVXRpbGRlICImI3gxNjg7Ii0tPgorPCEtLUVOVElUWSB1dGlsZGUgIiYjeDE2
OTsiLS0+Cis8IS0tRU5USVRZIFVtYWNyICImI3gxNkE7Ii0tPgorPCEtLUVOVElUWSB1bWFjciAi
JiN4MTZCOyItLT4KKzwhLS1FTlRJVFkgVWJyZXZlICImI3gxNkM7Ii0tPgorPCEtLUVOVElUWSB1
YnJldmUgIiYjeDE2RDsiLS0+Cis8IS0tRU5USVRZIFVyaW5nICImI3gxNkU7Ii0tPgorPCEtLUVO
VElUWSB1cmluZyAiJiN4MTZGOyItLT4KKzwhLS1FTlRJVFkgVWRibGFjICImI3gxNzA7Ii0tPgor
PCEtLUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiLS0+Cis8IS0tRU5USVRZIFVvZ29uICImI3gxNzI7
Ii0tPgorPCEtLUVOVElUWSB1b2dvbiAiJiN4MTczOyItLT4KKzwhLS1FTlRJVFkgV2NpcmMgIiYj
eDE3NDsiLS0+Cis8IS0tRU5USVRZIHdjaXJjICImI3gxNzU7Ii0tPgorPCEtLUVOVElUWSBZY2ly
YyAiJiN4MTc2OyItLT4KKzwhLS1FTlRJVFkgeWNpcmMgIiYjeDE3NzsiLS0+Cis8IS0tRU5USVRZ
IFl1bWwgIiYjeDE3ODsiLS0+Cis8IS0tRU5USVRZIFphY3V0ZSAiJiN4MTc5OyItLT4KKzwhLS1F
TlRJVFkgemFjdXRlICImI3gxN0E7Ii0tPgorPCEtLUVOVElUWSBaZG90ICImI3gxN0I7Ii0tPgor
PCEtLUVOVElUWSB6ZG90ICImI3gxN0M7Ii0tPgorPCEtLUVOVElUWSBaY2Fyb24gIiYjeDE3RDsi
LS0+Cis8IS0tRU5USVRZIHpjYXJvbiAiJiN4MTdFOyItLT4KKzwhLS1FTlRJVFkgZm5vZiAiJiN4
MTkyOyItLT4KKzwhLS1FTlRJVFkgaW1wZWQgIiYjeDFCNTsiLS0+Cis8IS0tRU5USVRZIGdhY3V0
ZSAiJiN4MUY1OyItLT4KKzwhLS1FTlRJVFkgam1hdGggIiYjeDIzNzsiLS0+Cis8IS0tRU5USVRZ
IGNpcmMgIiYjeDJDNjsiLS0+Cis8IS0tRU5USVRZIGNhcm9uICImI3gyQzc7Ii0tPgorPCEtLUVO
VElUWSBIYWNlayAiJiN4MkM3OyItLT4KKzwhLS1FTlRJVFkgYnJldmUgIiYjeDJEODsiLS0+Cis8
IS0tRU5USVRZIEJyZXZlICImI3gyRDg7Ii0tPgorPCEtLUVOVElUWSBkb3QgIiYjeDJEOTsiLS0+
Cis8IS0tRU5USVRZIERpYWNyaXRpY2FsRG90ICImI3gyRDk7Ii0tPgorPCEtLUVOVElUWSByaW5n
ICImI3gyREE7Ii0tPgorPCEtLUVOVElUWSBvZ29uICImI3gyREI7Ii0tPgorPCEtLUVOVElUWSB0
aWxkZSAiJiN4MkRDOyItLT4KKzwhLS1FTlRJVFkgRGlhY3JpdGljYWxUaWxkZSAiJiN4MkRDOyIt
LT4KKzwhLS1FTlRJVFkgZGJsYWMgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERpYWNyaXRpY2Fs
RG91YmxlQWN1dGUgIiYjeDJERDsiLS0+Cis8IS0tRU5USVRZIERvd25CcmV2ZSAiJiN4MzExOyIt
LT4KKzwhLS1FTlRJVFkgQWxwaGEgIiYjeDM5MTsiLS0+Cis8IS0tRU5USVRZIEJldGEgIiYjeDM5
MjsiLS0+Cis8IS0tRU5USVRZIEdhbW1hICImI3gzOTM7Ii0tPgorPCEtLUVOVElUWSBEZWx0YSAi
JiN4Mzk0OyItLT4KKzwhLS1FTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyItLT4KKzwhLS1FTlRJVFkg
WmV0YSAiJiN4Mzk2OyItLT4KKzwhLS1FTlRJVFkgRXRhICImI3gzOTc7Ii0tPgorPCEtLUVOVElU
WSBUaGV0YSAiJiN4Mzk4OyItLT4KKzwhLS1FTlRJVFkgSW90YSAiJiN4Mzk5OyItLT4KKzwhLS1F
TlRJVFkgS2FwcGEgIiYjeDM5QTsiLS0+Cis8IS0tRU5USVRZIExhbWJkYSAiJiN4MzlCOyItLT4K
KzwhLS1FTlRJVFkgTXUgIiYjeDM5QzsiLS0+Cis8IS0tRU5USVRZIE51ICImI3gzOUQ7Ii0tPgor
PCEtLUVOVElUWSBYaSAiJiN4MzlFOyItLT4KKzwhLS1FTlRJVFkgT21pY3JvbiAiJiN4MzlGOyIt
LT4KKzwhLS1FTlRJVFkgUGkgIiYjeDNBMDsiLS0+Cis8IS0tRU5USVRZIFJobyAiJiN4M0ExOyIt
LT4KKzwhLS1FTlRJVFkgU2lnbWEgIiYjeDNBMzsiLS0+Cis8IS0tRU5USVRZIFRhdSAiJiN4M0E0
OyItLT4KKzwhLS1FTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyItLT4KKzwhLS1FTlRJVFkgUGhpICIm
I3gzQTY7Ii0tPgorPCEtLUVOVElUWSBDaGkgIiYjeDNBNzsiLS0+Cis8IS0tRU5USVRZIFBzaSAi
JiN4M0E4OyItLT4KKzwhLS1FTlRJVFkgT21lZ2EgIiYjeDNBOTsiLS0+Cis8IS0tRU5USVRZIG9o
bSAiJiN4M0E5OyItLT4KKzwhLS1FTlRJVFkgYWxwaGEgIiYjeDNCMTsiLS0+Cis8IS0tRU5USVRZ
IGJldGEgIiYjeDNCMjsiLS0+Cis8IS0tRU5USVRZIGdhbW1hICImI3gzQjM7Ii0tPgorPCEtLUVO
VElUWSBkZWx0YSAiJiN4M0I0OyItLT4KKzwhLS1FTlRJVFkgZXBzaSAiJiN4M0I1OyItLT4KKzwh
LS1FTlRJVFkgZXBzaWxvbiAiJiN4M0I1OyItLT4KKzwhLS1FTlRJVFkgemV0YSAiJiN4M0I2OyIt
LT4KKzwhLS1FTlRJVFkgZXRhICImI3gzQjc7Ii0tPgorPCEtLUVOVElUWSB0aGV0YSAiJiN4M0I4
OyItLT4KKzwhLS1FTlRJVFkgaW90YSAiJiN4M0I5OyItLT4KKzwhLS1FTlRJVFkga2FwcGEgIiYj
eDNCQTsiLS0+Cis8IS0tRU5USVRZIGxhbWJkYSAiJiN4M0JCOyItLT4KKzwhLS1FTlRJVFkgbXUg
IiYjeDNCQzsiLS0+Cis8IS0tRU5USVRZIG51ICImI3gzQkQ7Ii0tPgorPCEtLUVOVElUWSB4aSAi
JiN4M0JFOyItLT4KKzwhLS1FTlRJVFkgb21pY3JvbiAiJiN4M0JGOyItLT4KKzwhLS1FTlRJVFkg
cGkgIiYjeDNDMDsiLS0+Cis8IS0tRU5USVRZIHJobyAiJiN4M0MxOyItLT4KKzwhLS1FTlRJVFkg
c2lnbWF2ICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSB2YXJzaWdtYSAiJiN4M0MyOyItLT4KKzwh
LS1FTlRJVFkgc2lnbWFmICImI3gzQzI7Ii0tPgorPCEtLUVOVElUWSBzaWdtYSAiJiN4M0MzOyIt
LT4KKzwhLS1FTlRJVFkgdGF1ICImI3gzQzQ7Ii0tPgorPCEtLUVOVElUWSB1cHNpICImI3gzQzU7
Ii0tPgorPCEtLUVOVElUWSB1cHNpbG9uICImI3gzQzU7Ii0tPgorPCEtLUVOVElUWSBwaGkgIiYj
eDNDNjsiLS0+Cis8IS0tRU5USVRZIGNoaSAiJiN4M0M3OyItLT4KKzwhLS1FTlRJVFkgcHNpICIm
I3gzQzg7Ii0tPgorPCEtLUVOVElUWSBvbWVnYSAiJiN4M0M5OyItLT4KKzwhLS1FTlRJVFkgdGhl
dGF2ICImI3gzRDE7Ii0tPgorPCEtLUVOVElUWSB2YXJ0aGV0YSAiJiN4M0QxOyItLT4KKzwhLS1F
TlRJVFkgdGhldGFzeW0gIiYjeDNEMTsiLS0+Cis8IS0tRU5USVRZIFVwc2kgIiYjeDNEMjsiLS0+
Cis8IS0tRU5USVRZIHVwc2loICImI3gzRDI7Ii0tPgorPCEtLUVOVElUWSBzdHJhaWdodHBoaSAi
JiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgcGhpdiAiJiN4M0Q1OyItLT4KKzwhLS1FTlRJVFkgdmFy
cGhpICImI3gzRDU7Ii0tPgorPCEtLUVOVElUWSBwaXYgIiYjeDNENjsiLS0+Cis8IS0tRU5USVRZ
IHZhcnBpICImI3gzRDY7Ii0tPgorPCEtLUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiLS0+Cis8IS0t
RU5USVRZIGdhbW1hZCAiJiN4M0REOyItLT4KKzwhLS1FTlRJVFkgZGlnYW1tYSAiJiN4M0REOyIt
LT4KKzwhLS1FTlRJVFkga2FwcGF2ICImI3gzRjA7Ii0tPgorPCEtLUVOVElUWSB2YXJrYXBwYSAi
JiN4M0YwOyItLT4KKzwhLS1FTlRJVFkgcmhvdiAiJiN4M0YxOyItLT4KKzwhLS1FTlRJVFkgdmFy
cmhvICImI3gzRjE7Ii0tPgorPCEtLUVOVElUWSBlcHNpdiAiJiN4M0Y1OyItLT4KKzwhLS1FTlRJ
VFkgc3RyYWlnaHRlcHNpbG9uICImI3gzRjU7Ii0tPgorPCEtLUVOVElUWSB2YXJlcHNpbG9uICIm
I3gzRjU7Ii0tPgorPCEtLUVOVElUWSBiZXBzaSAiJiN4M0Y2OyItLT4KKzwhLS1FTlRJVFkgYmFj
a2Vwc2lsb24gIiYjeDNGNjsiLS0+Cis8IS0tRU5USVRZIElPY3kgIiYjeDQwMTsiLS0+Cis8IS0t
RU5USVRZIERKY3kgIiYjeDQwMjsiLS0+Cis8IS0tRU5USVRZIEdKY3kgIiYjeDQwMzsiLS0+Cis8
IS0tRU5USVRZIEp1a2N5ICImI3g0MDQ7Ii0tPgorPCEtLUVOVElUWSBEU2N5ICImI3g0MDU7Ii0t
PgorPCEtLUVOVElUWSBJdWtjeSAiJiN4NDA2OyItLT4KKzwhLS1FTlRJVFkgWUljeSAiJiN4NDA3
OyItLT4KKzwhLS1FTlRJVFkgSnNlcmN5ICImI3g0MDg7Ii0tPgorPCEtLUVOVElUWSBMSmN5ICIm
I3g0MDk7Ii0tPgorPCEtLUVOVElUWSBOSmN5ICImI3g0MEE7Ii0tPgorPCEtLUVOVElUWSBUU0hj
eSAiJiN4NDBCOyItLT4KKzwhLS1FTlRJVFkgS0pjeSAiJiN4NDBDOyItLT4KKzwhLS1FTlRJVFkg
VWJyY3kgIiYjeDQwRTsiLS0+Cis8IS0tRU5USVRZIERaY3kgIiYjeDQwRjsiLS0+Cis8IS0tRU5U
SVRZIEFjeSAiJiN4NDEwOyItLT4KKzwhLS1FTlRJVFkgQmN5ICImI3g0MTE7Ii0tPgorPCEtLUVO
VElUWSBWY3kgIiYjeDQxMjsiLS0+Cis8IS0tRU5USVRZIEdjeSAiJiN4NDEzOyItLT4KKzwhLS1F
TlRJVFkgRGN5ICImI3g0MTQ7Ii0tPgorPCEtLUVOVElUWSBJRWN5ICImI3g0MTU7Ii0tPgorPCEt
LUVOVElUWSBaSGN5ICImI3g0MTY7Ii0tPgorPCEtLUVOVElUWSBaY3kgIiYjeDQxNzsiLS0+Cis8
IS0tRU5USVRZIEljeSAiJiN4NDE4OyItLT4KKzwhLS1FTlRJVFkgSmN5ICImI3g0MTk7Ii0tPgor
PCEtLUVOVElUWSBLY3kgIiYjeDQxQTsiLS0+Cis8IS0tRU5USVRZIExjeSAiJiN4NDFCOyItLT4K
KzwhLS1FTlRJVFkgTWN5ICImI3g0MUM7Ii0tPgorPCEtLUVOVElUWSBOY3kgIiYjeDQxRDsiLS0+
Cis8IS0tRU5USVRZIE9jeSAiJiN4NDFFOyItLT4KKzwhLS1FTlRJVFkgUGN5ICImI3g0MUY7Ii0t
PgorPCEtLUVOVElUWSBSY3kgIiYjeDQyMDsiLS0+Cis8IS0tRU5USVRZIFNjeSAiJiN4NDIxOyIt
LT4KKzwhLS1FTlRJVFkgVGN5ICImI3g0MjI7Ii0tPgorPCEtLUVOVElUWSBVY3kgIiYjeDQyMzsi
LS0+Cis8IS0tRU5USVRZIEZjeSAiJiN4NDI0OyItLT4KKzwhLS1FTlRJVFkgS0hjeSAiJiN4NDI1
OyItLT4KKzwhLS1FTlRJVFkgVFNjeSAiJiN4NDI2OyItLT4KKzwhLS1FTlRJVFkgQ0hjeSAiJiN4
NDI3OyItLT4KKzwhLS1FTlRJVFkgU0hjeSAiJiN4NDI4OyItLT4KKzwhLS1FTlRJVFkgU0hDSGN5
ICImI3g0Mjk7Ii0tPgorPCEtLUVOVElUWSBIQVJEY3kgIiYjeDQyQTsiLS0+Cis8IS0tRU5USVRZ
IFljeSAiJiN4NDJCOyItLT4KKzwhLS1FTlRJVFkgU09GVGN5ICImI3g0MkM7Ii0tPgorPCEtLUVO
VElUWSBFY3kgIiYjeDQyRDsiLS0+Cis8IS0tRU5USVRZIFlVY3kgIiYjeDQyRTsiLS0+Cis8IS0t
RU5USVRZIFlBY3kgIiYjeDQyRjsiLS0+Cis8IS0tRU5USVRZIGFjeSAiJiN4NDMwOyItLT4KKzwh
LS1FTlRJVFkgYmN5ICImI3g0MzE7Ii0tPgorPCEtLUVOVElUWSB2Y3kgIiYjeDQzMjsiLS0+Cis8
IS0tRU5USVRZIGdjeSAiJiN4NDMzOyItLT4KKzwhLS1FTlRJVFkgZGN5ICImI3g0MzQ7Ii0tPgor
PCEtLUVOVElUWSBpZWN5ICImI3g0MzU7Ii0tPgorPCEtLUVOVElUWSB6aGN5ICImI3g0MzY7Ii0t
PgorPCEtLUVOVElUWSB6Y3kgIiYjeDQzNzsiLS0+Cis8IS0tRU5USVRZIGljeSAiJiN4NDM4OyIt
LT4KKzwhLS1FTlRJVFkgamN5ICImI3g0Mzk7Ii0tPgorPCEtLUVOVElUWSBrY3kgIiYjeDQzQTsi
LS0+Cis8IS0tRU5USVRZIGxjeSAiJiN4NDNCOyItLT4KKzwhLS1FTlRJVFkgbWN5ICImI3g0M0M7
Ii0tPgorPCEtLUVOVElUWSBuY3kgIiYjeDQzRDsiLS0+Cis8IS0tRU5USVRZIG9jeSAiJiN4NDNF
OyItLT4KKzwhLS1FTlRJVFkgcGN5ICImI3g0M0Y7Ii0tPgorPCEtLUVOVElUWSByY3kgIiYjeDQ0
MDsiLS0+Cis8IS0tRU5USVRZIHNjeSAiJiN4NDQxOyItLT4KKzwhLS1FTlRJVFkgdGN5ICImI3g0
NDI7Ii0tPgorPCEtLUVOVElUWSB1Y3kgIiYjeDQ0MzsiLS0+Cis8IS0tRU5USVRZIGZjeSAiJiN4
NDQ0OyItLT4KKzwhLS1FTlRJVFkga2hjeSAiJiN4NDQ1OyItLT4KKzwhLS1FTlRJVFkgdHNjeSAi
JiN4NDQ2OyItLT4KKzwhLS1FTlRJVFkgY2hjeSAiJiN4NDQ3OyItLT4KKzwhLS1FTlRJVFkgc2hj
eSAiJiN4NDQ4OyItLT4KKzwhLS1FTlRJVFkgc2hjaGN5ICImI3g0NDk7Ii0tPgorPCEtLUVOVElU
WSBoYXJkY3kgIiYjeDQ0QTsiLS0+Cis8IS0tRU5USVRZIHljeSAiJiN4NDRCOyItLT4KKzwhLS1F
TlRJVFkgc29mdGN5ICImI3g0NEM7Ii0tPgorPCEtLUVOVElUWSBlY3kgIiYjeDQ0RDsiLS0+Cis8
IS0tRU5USVRZIHl1Y3kgIiYjeDQ0RTsiLS0+Cis8IS0tRU5USVRZIHlhY3kgIiYjeDQ0RjsiLS0+
Cis8IS0tRU5USVRZIGlvY3kgIiYjeDQ1MTsiLS0+Cis8IS0tRU5USVRZIGRqY3kgIiYjeDQ1Mjsi
LS0+Cis8IS0tRU5USVRZIGdqY3kgIiYjeDQ1MzsiLS0+Cis8IS0tRU5USVRZIGp1a2N5ICImI3g0
NTQ7Ii0tPgorPCEtLUVOVElUWSBkc2N5ICImI3g0NTU7Ii0tPgorPCEtLUVOVElUWSBpdWtjeSAi
JiN4NDU2OyItLT4KKzwhLS1FTlRJVFkgeWljeSAiJiN4NDU3OyItLT4KKzwhLS1FTlRJVFkganNl
cmN5ICImI3g0NTg7Ii0tPgorPCEtLUVOVElUWSBsamN5ICImI3g0NTk7Ii0tPgorPCEtLUVOVElU
WSBuamN5ICImI3g0NUE7Ii0tPgorPCEtLUVOVElUWSB0c2hjeSAiJiN4NDVCOyItLT4KKzwhLS1F
TlRJVFkga2pjeSAiJiN4NDVDOyItLT4KKzwhLS1FTlRJVFkgdWJyY3kgIiYjeDQ1RTsiLS0+Cis8
IS0tRU5USVRZIGR6Y3kgIiYjeDQ1RjsiLS0+Cis8IS0tRU5USVRZIGVuc3AgIiYjeDIwMDI7Ii0t
PgorPCEtLUVOVElUWSBlbXNwICImI3gyMDAzOyItLT4KKzwhLS1FTlRJVFkgZW1zcDEzICImI3gy
MDA0OyItLT4KKzwhLS1FTlRJVFkgZW1zcDE0ICImI3gyMDA1OyItLT4KKzwhLS1FTlRJVFkgbnVt
c3AgIiYjeDIwMDc7Ii0tPgorPCEtLUVOVElUWSBwdW5jc3AgIiYjeDIwMDg7Ii0tPgorPCEtLUVO
VElUWSB0aGluc3AgIiYjeDIwMDk7Ii0tPgorPCEtLUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7
Ii0tPgorPCEtLUVOVElUWSBoYWlyc3AgIiYjeDIwMEE7Ii0tPgorPCEtLUVOVElUWSBWZXJ5VGhp
blNwYWNlICImI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7
Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVZlcnlUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEt
LUVOVElUWSBOZWdhdGl2ZVRoaW5TcGFjZSAiJiN4MjAwQjsiLS0+Cis8IS0tRU5USVRZIE5lZ2F0
aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSBOZWdhdGl2ZVRoaWNrU3Bh
Y2UgIiYjeDIwMEI7Ii0tPgorPCEtLUVOVElUWSB6d25qICImI3gyMDBDOyItLT4KKzwhLS1FTlRJ
VFkgendqICImI3gyMDBEOyItLT4KKzwhLS1FTlRJVFkgbHJtICImI3gyMDBFOyItLT4KKzwhLS1F
TlRJVFkgcmxtICImI3gyMDBGOyItLT4KKzwhLS1FTlRJVFkgaHlwaGVuICImI3gyMDEwOyItLT4K
KzwhLS1FTlRJVFkgZGFzaCAiJiN4MjAxMDsiLS0+Cis8IS0tRU5USVRZIG5kYXNoICImI3gyMDEz
OyItLT4KKzwhLS1FTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ii0tPgorPCEtLUVOVElUWSBob3JiYXIg
IiYjeDIwMTU7Ii0tPgorPCEtLUVOVElUWSBWZXJiYXIgIiYjeDIwMTY7Ii0tPgorPCEtLUVOVElU
WSBWZXJ0ICImI3gyMDE2OyItLT4KKzwhLS1FTlRJVFkgbHNxdW8gIiYjeDIwMTg7Ii0tPgorPCEt
LUVOVElUWSBPcGVuQ3VybHlRdW90ZSAiJiN4MjAxODsiLS0+Cis8IS0tRU5USVRZIHJzcXVvICIm
I3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgcnNxdW9yICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkg
Q2xvc2VDdXJseVF1b3RlICImI3gyMDE5OyItLT4KKzwhLS1FTlRJVFkgbHNxdW9yICImI3gyMDFB
OyItLT4KKzwhLS1FTlRJVFkgc2JxdW8gIiYjeDIwMUE7Ii0tPgorPCEtLUVOVElUWSBsZHF1byAi
JiN4MjAxQzsiLS0+Cis8IS0tRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyIt
LT4KKzwhLS1FTlRJVFkgcmRxdW8gIiYjeDIwMUQ7Ii0tPgorPCEtLUVOVElUWSByZHF1b3IgIiYj
eDIwMUQ7Ii0tPgorPCEtLUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ii0t
PgorPCEtLUVOVElUWSBsZHF1b3IgIiYjeDIwMUU7Ii0tPgorPCEtLUVOVElUWSBiZHF1byAiJiN4
MjAxRTsiLS0+Cis8IS0tRU5USVRZIGRhZ2dlciAiJiN4MjAyMDsiLS0+Cis8IS0tRU5USVRZIERh
Z2dlciAiJiN4MjAyMTsiLS0+Cis8IS0tRU5USVRZIGRkYWdnZXIgIiYjeDIwMjE7Ii0tPgorPCEt
LUVOVElUWSBidWxsICImI3gyMDIyOyItLT4KKzwhLS1FTlRJVFkgYnVsbGV0ICImI3gyMDIyOyIt
LT4KKzwhLS1FTlRJVFkgbmxkciAiJiN4MjAyNTsiLS0+Cis8IS0tRU5USVRZIGhlbGxpcCAiJiN4
MjAyNjsiLS0+Cis8IS0tRU5USVRZIG1sZHIgIiYjeDIwMjY7Ii0tPgorPCEtLUVOVElUWSBwZXJt
aWwgIiYjeDIwMzA7Ii0tPgorPCEtLUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyItLT4KKzwhLS1F
TlRJVFkgcHJpbWUgIiYjeDIwMzI7Ii0tPgorPCEtLUVOVElUWSBQcmltZSAiJiN4MjAzMzsiLS0+
Cis8IS0tRU5USVRZIHRwcmltZSAiJiN4MjAzNDsiLS0+Cis8IS0tRU5USVRZIGJwcmltZSAiJiN4
MjAzNTsiLS0+Cis8IS0tRU5USVRZIGJhY2twcmltZSAiJiN4MjAzNTsiLS0+Cis8IS0tRU5USVRZ
IGxzYXF1byAiJiN4MjAzOTsiLS0+Cis8IS0tRU5USVRZIHJzYXF1byAiJiN4MjAzQTsiLS0+Cis8
IS0tRU5USVRZIG9saW5lICImI3gyMDNFOyItLT4KKzwhLS1FTlRJVFkgT3ZlckJhciAiJiN4MjAz
RTsiLS0+Cis8IS0tRU5USVRZIGNhcmV0ICImI3gyMDQxOyItLT4KKzwhLS1FTlRJVFkgaHlidWxs
ICImI3gyMDQzOyItLT4KKzwhLS1FTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ii0tPgorPCEtLUVOVElU
WSBic2VtaSAiJiN4MjA0RjsiLS0+Cis8IS0tRU5USVRZIHFwcmltZSAiJiN4MjA1NzsiLS0+Cis8
IS0tRU5USVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyItLT4KKzwhLS1FTlRJVFkgVGhpY2tTcGFj
ZSAiJiN4MjA1RjsmI3gyMDBBOyItLT4KKzwhLS1FTlRJVFkgTm9CcmVhayAiJiN4MjA2MDsiLS0+
Cis8IS0tRU5USVRZIEFwcGx5RnVuY3Rpb24gIiYjeDIwNjE7Ii0tPgorPCEtLUVOVElUWSBhZiAi
JiN4MjA2MTsiLS0+Cis8IS0tRU5USVRZIEludmlzaWJsZVRpbWVzICImI3gyMDYyOyItLT4KKzwh
LS1FTlRJVFkgaXQgIiYjeDIwNjI7Ii0tPgorPCEtLUVOVElUWSBJbnZpc2libGVDb21tYSAiJiN4
MjA2MzsiLS0+Cis8IS0tRU5USVRZIGljICImI3gyMDYzOyItLT4KKzwhLS1FTlRJVFkgZXVybyAi
JiN4MjBBQzsiLS0+Cis8IS0tRU5USVRZIHRkb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBU
cmlwbGVEb3QgIiYjeDIwREI7Ii0tPgorPCEtLUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ii0tPgor
PCEtLUVOVElUWSBDb3BmICImI3gyMTAyOyItLT4KKzwhLS1FTlRJVFkgY29tcGxleGVzICImI3gy
MTAyOyItLT4KKzwhLS1FTlRJVFkgaW5jYXJlICImI3gyMTA1OyItLT4KKzwhLS1FTlRJVFkgZ3Nj
ciAiJiN4MjEwQTsiLS0+Cis8IS0tRU5USVRZIGhhbWlsdCAiJiN4MjEwQjsiLS0+Cis8IS0tRU5U
SVRZIEhpbGJlcnRTcGFjZSAiJiN4MjEwQjsiLS0+Cis8IS0tRU5USVRZIEhzY3IgIiYjeDIxMEI7
Ii0tPgorPCEtLUVOVElUWSBIZnIgIiYjeDIxMEM7Ii0tPgorPCEtLUVOVElUWSBQb2luY2FyZXBs
YW5lICImI3gyMTBDOyItLT4KKzwhLS1FTlRJVFkgcXVhdGVybmlvbnMgIiYjeDIxMEQ7Ii0tPgor
PCEtLUVOVElUWSBIb3BmICImI3gyMTBEOyItLT4KKzwhLS1FTlRJVFkgcGxhbmNraCAiJiN4MjEw
RTsiLS0+Cis8IS0tRU5USVRZIHBsYW5jayAiJiN4MjEwRjsiLS0+Cis8IS0tRU5USVRZIGhiYXIg
IiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElU
WSBoc2xhc2ggIiYjeDIxMEY7Ii0tPgorPCEtLUVOVElUWSBJc2NyICImI3gyMTEwOyItLT4KKzwh
LS1FTlRJVFkgaW1hZ2xpbmUgIiYjeDIxMTA7Ii0tPgorPCEtLUVOVElUWSBpbWFnZSAiJiN4MjEx
MTsiLS0+Cis8IS0tRU5USVRZIEltICImI3gyMTExOyItLT4KKzwhLS1FTlRJVFkgaW1hZ3BhcnQg
IiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBJZnIgIiYjeDIxMTE7Ii0tPgorPCEtLUVOVElUWSBM
c2NyICImI3gyMTEyOyItLT4KKzwhLS1FTlRJVFkgbGFncmFuICImI3gyMTEyOyItLT4KKzwhLS1F
TlRJVFkgTGFwbGFjZXRyZiAiJiN4MjExMjsiLS0+Cis8IS0tRU5USVRZIGVsbCAiJiN4MjExMzsi
LS0+Cis8IS0tRU5USVRZIE5vcGYgIiYjeDIxMTU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFscyAi
JiN4MjExNTsiLS0+Cis8IS0tRU5USVRZIG51bWVybyAiJiN4MjExNjsiLS0+Cis8IS0tRU5USVRZ
IGNvcHlzciAiJiN4MjExNzsiLS0+Cis8IS0tRU5USVRZIHdlaWVycCAiJiN4MjExODsiLS0+Cis8
IS0tRU5USVRZIHdwICImI3gyMTE4OyItLT4KKzwhLS1FTlRJVFkgUG9wZiAiJiN4MjExOTsiLS0+
Cis8IS0tRU5USVRZIHByaW1lcyAiJiN4MjExOTsiLS0+Cis8IS0tRU5USVRZIHJhdGlvbmFscyAi
JiN4MjExQTsiLS0+Cis8IS0tRU5USVRZIFFvcGYgIiYjeDIxMUE7Ii0tPgorPCEtLUVOVElUWSBS
c2NyICImI3gyMTFCOyItLT4KKzwhLS1FTlRJVFkgcmVhbGluZSAiJiN4MjExQjsiLS0+Cis8IS0t
RU5USVRZIHJlYWwgIiYjeDIxMUM7Ii0tPgorPCEtLUVOVElUWSBSZSAiJiN4MjExQzsiLS0+Cis8
IS0tRU5USVRZIHJlYWxwYXJ0ICImI3gyMTFDOyItLT4KKzwhLS1FTlRJVFkgUmZyICImI3gyMTFD
OyItLT4KKzwhLS1FTlRJVFkgcmVhbHMgIiYjeDIxMUQ7Ii0tPgorPCEtLUVOVElUWSBSb3BmICIm
I3gyMTFEOyItLT4KKzwhLS1FTlRJVFkgcnggIiYjeDIxMUU7Ii0tPgorPCEtLUVOVElUWSB0cmFk
ZSAiJiN4MjEyMjsiLS0+Cis8IS0tRU5USVRZIFRSQURFICImI3gyMTIyOyItLT4KKzwhLS1FTlRJ
VFkgaW50ZWdlcnMgIiYjeDIxMjQ7Ii0tPgorPCEtLUVOVElUWSBab3BmICImI3gyMTI0OyItLT4K
KzwhLS1FTlRJVFkgbWhvICImI3gyMTI3OyItLT4KKzwhLS1FTlRJVFkgWmZyICImI3gyMTI4OyIt
LT4KKzwhLS1FTlRJVFkgemVldHJmICImI3gyMTI4OyItLT4KKzwhLS1FTlRJVFkgaWlvdGEgIiYj
eDIxMjk7Ii0tPgorPCEtLUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ii0tPgorPCEtLUVOVElUWSBC
ZXJub3VsbGlzICImI3gyMTJDOyItLT4KKzwhLS1FTlRJVFkgQnNjciAiJiN4MjEyQzsiLS0+Cis8
IS0tRU5USVRZIENmciAiJiN4MjEyRDsiLS0+Cis8IS0tRU5USVRZIENheWxleXMgIiYjeDIxMkQ7
Ii0tPgorPCEtLUVOVElUWSBlc2NyICImI3gyMTJGOyItLT4KKzwhLS1FTlRJVFkgRXNjciAiJiN4
MjEzMDsiLS0+Cis8IS0tRU5USVRZIGV4cGVjdGF0aW9uICImI3gyMTMwOyItLT4KKzwhLS1FTlRJ
VFkgRnNjciAiJiN4MjEzMTsiLS0+Cis8IS0tRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ii0t
PgorPCEtLUVOVElUWSBwaG1tYXQgIiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNZWxsaW50cmYg
IiYjeDIxMzM7Ii0tPgorPCEtLUVOVElUWSBNc2NyICImI3gyMTMzOyItLT4KKzwhLS1FTlRJVFkg
b3JkZXIgIiYjeDIxMzQ7Ii0tPgorPCEtLUVOVElUWSBvcmRlcm9mICImI3gyMTM0OyItLT4KKzwh
LS1FTlRJVFkgb3NjciAiJiN4MjEzNDsiLS0+Cis8IS0tRU5USVRZIGFsZWZzeW0gIiYjeDIxMzU7
Ii0tPgorPCEtLUVOVElUWSBhbGVwaCAiJiN4MjEzNTsiLS0+Cis8IS0tRU5USVRZIGJldGggIiYj
eDIxMzY7Ii0tPgorPCEtLUVOVElUWSBnaW1lbCAiJiN4MjEzNzsiLS0+Cis8IS0tRU5USVRZIGRh
bGV0aCAiJiN4MjEzODsiLS0+Cis8IS0tRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gy
MTQ1OyItLT4KKzwhLS1FTlRJVFkgREQgIiYjeDIxNDU7Ii0tPgorPCEtLUVOVElUWSBEaWZmZXJl
bnRpYWxEICImI3gyMTQ2OyItLT4KKzwhLS1FTlRJVFkgZGQgIiYjeDIxNDY7Ii0tPgorPCEtLUVO
VElUWSBFeHBvbmVudGlhbEUgIiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBleHBvbmVudGlhbGUg
IiYjeDIxNDc7Ii0tPgorPCEtLUVOVElUWSBlZSAiJiN4MjE0NzsiLS0+Cis8IS0tRU5USVRZIElt
YWdpbmFyeUkgIiYjeDIxNDg7Ii0tPgorPCEtLUVOVElUWSBpaSAiJiN4MjE0ODsiLS0+Cis8IS0t
RU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiLS0+Cis8IS0tRU5USVRZIGZyYWMyMyAiJiN4MjE1NDsi
LS0+Cis8IS0tRU5USVRZIGZyYWMxNSAiJiN4MjE1NTsiLS0+Cis8IS0tRU5USVRZIGZyYWMyNSAi
JiN4MjE1NjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzNSAiJiN4MjE1NzsiLS0+Cis8IS0tRU5USVRZ
IGZyYWM0NSAiJiN4MjE1ODsiLS0+Cis8IS0tRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiLS0+Cis8
IS0tRU5USVRZIGZyYWM1NiAiJiN4MjE1QTsiLS0+Cis8IS0tRU5USVRZIGZyYWMxOCAiJiN4MjE1
QjsiLS0+Cis8IS0tRU5USVRZIGZyYWMzOCAiJiN4MjE1QzsiLS0+Cis8IS0tRU5USVRZIGZyYWM1
OCAiJiN4MjE1RDsiLS0+Cis8IS0tRU5USVRZIGZyYWM3OCAiJiN4MjE1RTsiLS0+Cis8IS0tRU5U
SVRZIGxhcnIgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBsZWZ0YXJyb3cgIiYjeDIxOTA7Ii0t
PgorPCEtLUVOVElUWSBMZWZ0QXJyb3cgIiYjeDIxOTA7Ii0tPgorPCEtLUVOVElUWSBzbGFyciAi
JiN4MjE5MDsiLS0+Cis8IS0tRU5USVRZIFNob3J0TGVmdEFycm93ICImI3gyMTkwOyItLT4KKzwh
LS1FTlRJVFkgdWFyciAiJiN4MjE5MTsiLS0+Cis8IS0tRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7
Ii0tPgorPCEtLUVOVElUWSBVcEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgU2hvcnRV
cEFycm93ICImI3gyMTkxOyItLT4KKzwhLS1FTlRJVFkgcmFyciAiJiN4MjE5MjsiLS0+Cis8IS0t
RU5USVRZIHJpZ2h0YXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEFycm93ICIm
I3gyMTkyOyItLT4KKzwhLS1FTlRJVFkgc3JhcnIgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBT
aG9ydFJpZ2h0QXJyb3cgIiYjeDIxOTI7Ii0tPgorPCEtLUVOVElUWSBkYXJyICImI3gyMTkzOyIt
LT4KKzwhLS1FTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgRG93bkFy
cm93ICImI3gyMTkzOyItLT4KKzwhLS1FTlRJVFkgU2hvcnREb3duQXJyb3cgIiYjeDIxOTM7Ii0t
PgorPCEtLUVOVElUWSBoYXJyICImI3gyMTk0OyItLT4KKzwhLS1FTlRJVFkgbGVmdHJpZ2h0YXJy
b3cgIiYjeDIxOTQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0UmlnaHRBcnJvdyAiJiN4MjE5NDsiLS0+
Cis8IS0tRU5USVRZIHZhcnIgIiYjeDIxOTU7Ii0tPgorPCEtLUVOVElUWSB1cGRvd25hcnJvdyAi
JiN4MjE5NTsiLS0+Cis8IS0tRU5USVRZIFVwRG93bkFycm93ICImI3gyMTk1OyItLT4KKzwhLS1F
TlRJVFkgbndhcnIgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBVcHBlckxlZnRBcnJvdyAiJiN4
MjE5NjsiLS0+Cis8IS0tRU5USVRZIG53YXJyb3cgIiYjeDIxOTY7Ii0tPgorPCEtLUVOVElUWSBu
ZWFyciAiJiN4MjE5NzsiLS0+Cis8IS0tRU5USVRZIFVwcGVyUmlnaHRBcnJvdyAiJiN4MjE5Nzsi
LS0+Cis8IS0tRU5USVRZIG5lYXJyb3cgIiYjeDIxOTc7Ii0tPgorPCEtLUVOVElUWSBzZWFyciAi
JiN4MjE5ODsiLS0+Cis8IS0tRU5USVRZIHNlYXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElU
WSBMb3dlclJpZ2h0QXJyb3cgIiYjeDIxOTg7Ii0tPgorPCEtLUVOVElUWSBzd2FyciAiJiN4MjE5
OTsiLS0+Cis8IS0tRU5USVRZIHN3YXJyb3cgIiYjeDIxOTk7Ii0tPgorPCEtLUVOVElUWSBMb3dl
ckxlZnRBcnJvdyAiJiN4MjE5OTsiLS0+Cis8IS0tRU5USVRZIG5sYXJyICImI3gyMTlBOyItLT4K
KzwhLS1FTlRJVFkgbmxlZnRhcnJvdyAiJiN4MjE5QTsiLS0+Cis8IS0tRU5USVRZIG5yYXJyICIm
I3gyMTlCOyItLT4KKzwhLS1FTlRJVFkgbnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ii0tPgorPCEtLUVO
VElUWSByYXJydyAiJiN4MjE5RDsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0c3F1aWdhcnJvdyAiJiN4
MjE5RDsiLS0+Cis8IS0tRU5USVRZIG5yYXJydyAiJiN4MjE5RDsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBMYXJyICImI3gyMTlFOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZGxlZnRhcnJvdyAiJiN4
MjE5RTsiLS0+Cis8IS0tRU5USVRZIFVhcnIgIiYjeDIxOUY7Ii0tPgorPCEtLUVOVElUWSBSYXJy
ICImI3gyMUEwOyItLT4KKzwhLS1FTlRJVFkgdHdvaGVhZHJpZ2h0YXJyb3cgIiYjeDIxQTA7Ii0t
PgorPCEtLUVOVElUWSBEYXJyICImI3gyMUExOyItLT4KKzwhLS1FTlRJVFkgbGFycnRsICImI3gy
MUEyOyItLT4KKzwhLS1FTlRJVFkgbGVmdGFycm93dGFpbCAiJiN4MjFBMjsiLS0+Cis8IS0tRU5U
SVRZIHJhcnJ0bCAiJiN4MjFBMzsiLS0+Cis8IS0tRU5USVRZIHJpZ2h0YXJyb3d0YWlsICImI3gy
MUEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZUFycm93ICImI3gyMUE0OyItLT4KKzwhLS1FTlRJ
VFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiLS0+Cis8IS0tRU5USVRZIFVwVGVlQXJyb3cgIiYjeDIx
QTU7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG91cCAiJiN4MjFBNTsiLS0+Cis8IS0tRU5USVRZIG1h
cCAiJiN4MjFBNjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VGVlQXJyb3cgIiYjeDIxQTY7Ii0tPgor
PCEtLUVOVElUWSBtYXBzdG8gIiYjeDIxQTY7Ii0tPgorPCEtLUVOVElUWSBEb3duVGVlQXJyb3cg
IiYjeDIxQTc7Ii0tPgorPCEtLUVOVElUWSBtYXBzdG9kb3duICImI3gyMUE3OyItLT4KKzwhLS1F
TlRJVFkgbGFycmhrICImI3gyMUE5OyItLT4KKzwhLS1FTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4
MjFBOTsiLS0+Cis8IS0tRU5USVRZIHJhcnJoayAiJiN4MjFBQTsiLS0+Cis8IS0tRU5USVRZIGhv
b2tyaWdodGFycm93ICImI3gyMUFBOyItLT4KKzwhLS1FTlRJVFkgbGFycmxwICImI3gyMUFCOyIt
LT4KKzwhLS1FTlRJVFkgbG9vcGFycm93bGVmdCAiJiN4MjFBQjsiLS0+Cis8IS0tRU5USVRZIHJh
cnJscCAiJiN4MjFBQzsiLS0+Cis8IS0tRU5USVRZIGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyIt
LT4KKzwhLS1FTlRJVFkgaGFycncgIiYjeDIxQUQ7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRz
cXVpZ2Fycm93ICImI3gyMUFEOyItLT4KKzwhLS1FTlRJVFkgbmhhcnIgIiYjeDIxQUU7Ii0tPgor
PCEtLUVOVElUWSBubGVmdHJpZ2h0YXJyb3cgIiYjeDIxQUU7Ii0tPgorPCEtLUVOVElUWSBsc2gg
IiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBMc2ggIiYjeDIxQjA7Ii0tPgorPCEtLUVOVElUWSBy
c2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElUWSBSc2ggIiYjeDIxQjE7Ii0tPgorPCEtLUVOVElU
WSBsZHNoICImI3gyMUIyOyItLT4KKzwhLS1FTlRJVFkgcmRzaCAiJiN4MjFCMzsiLS0+Cis8IS0t
RU5USVRZIGNyYXJyICImI3gyMUI1OyItLT4KKzwhLS1FTlRJVFkgY3VsYXJyICImI3gyMUI2OyIt
LT4KKzwhLS1FTlRJVFkgY3VydmVhcnJvd2xlZnQgIiYjeDIxQjY7Ii0tPgorPCEtLUVOVElUWSBj
dXJhcnIgIiYjeDIxQjc7Ii0tPgorPCEtLUVOVElUWSBjdXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7
Ii0tPgorPCEtLUVOVElUWSBvbGFyciAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWFy
cm93bGVmdCAiJiN4MjFCQTsiLS0+Cis8IS0tRU5USVRZIG9yYXJyICImI3gyMUJCOyItLT4KKzwh
LS1FTlRJVFkgY2lyY2xlYXJyb3dyaWdodCAiJiN4MjFCQjsiLS0+Cis8IS0tRU5USVRZIGxoYXJ1
ICImI3gyMUJDOyItLT4KKzwhLS1FTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiLS0+Cis8IS0t
RU5USVRZIGxlZnRoYXJwb29udXAgIiYjeDIxQkM7Ii0tPgorPCEtLUVOVElUWSBsaGFyZCAiJiN4
MjFCRDsiLS0+Cis8IS0tRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiLS0+Cis8IS0t
RU5USVRZIERvd25MZWZ0VmVjdG9yICImI3gyMUJEOyItLT4KKzwhLS1FTlRJVFkgdWhhcnIgIiYj
eDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiLS0+Cis8IS0t
RU5USVRZIFJpZ2h0VXBWZWN0b3IgIiYjeDIxQkU7Ii0tPgorPCEtLUVOVElUWSB1aGFybCAiJiN4
MjFCRjsiLS0+Cis8IS0tRU5USVRZIHVwaGFycG9vbmxlZnQgIiYjeDIxQkY7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3IgIiYjeDIxQkY7Ii0tPgorPCEtLUVOVElUWSByaGFydSAiJiN4MjFD
MDsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyItLT4KKzwhLS1FTlRJVFkg
cmlnaHRoYXJwb29udXAgIiYjeDIxQzA7Ii0tPgorPCEtLUVOVElUWSByaGFyZCAiJiN4MjFDMTsi
LS0+Cis8IS0tRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElU
WSBEb3duUmlnaHRWZWN0b3IgIiYjeDIxQzE7Ii0tPgorPCEtLUVOVElUWSBkaGFyciAiJiN4MjFD
MjsiLS0+Cis8IS0tRU5USVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiLS0+Cis8IS0tRU5U
SVRZIGRvd25oYXJwb29ucmlnaHQgIiYjeDIxQzI7Ii0tPgorPCEtLUVOVElUWSBkaGFybCAiJiN4
MjFDMzsiLS0+Cis8IS0tRU5USVRZIExlZnREb3duVmVjdG9yICImI3gyMUMzOyItLT4KKzwhLS1F
TlRJVFkgZG93bmhhcnBvb25sZWZ0ICImI3gyMUMzOyItLT4KKzwhLS1FTlRJVFkgcmxhcnIgIiYj
eDIxQzQ7Ii0tPgorPCEtLUVOVElUWSByaWdodGxlZnRhcnJvd3MgIiYjeDIxQzQ7Ii0tPgorPCEt
LUVOVElUWSBSaWdodEFycm93TGVmdEFycm93ICImI3gyMUM0OyItLT4KKzwhLS1FTlRJVFkgdWRh
cnIgIiYjeDIxQzU7Ii0tPgorPCEtLUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gyMUM1OyIt
LT4KKzwhLS1FTlRJVFkgbHJhcnIgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBsZWZ0cmlnaHRh
cnJvd3MgIiYjeDIxQzY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gy
MUM2OyItLT4KKzwhLS1FTlRJVFkgbGxhcnIgIiYjeDIxQzc7Ii0tPgorPCEtLUVOVElUWSBsZWZ0
bGVmdGFycm93cyAiJiN4MjFDNzsiLS0+Cis8IS0tRU5USVRZIHV1YXJyICImI3gyMUM4OyItLT4K
KzwhLS1FTlRJVFkgdXB1cGFycm93cyAiJiN4MjFDODsiLS0+Cis8IS0tRU5USVRZIHJyYXJyICIm
I3gyMUM5OyItLT4KKzwhLS1FTlRJVFkgcmlnaHRyaWdodGFycm93cyAiJiN4MjFDOTsiLS0+Cis8
IS0tRU5USVRZIGRkYXJyICImI3gyMUNBOyItLT4KKzwhLS1FTlRJVFkgZG93bmRvd25hcnJvd3Mg
IiYjeDIxQ0E7Ii0tPgorPCEtLUVOVElUWSBscmhhciAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZ
IFJldmVyc2VFcXVpbGlicml1bSAiJiN4MjFDQjsiLS0+Cis8IS0tRU5USVRZIGxlZnRyaWdodGhh
cnBvb25zICImI3gyMUNCOyItLT4KKzwhLS1FTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ii0tPgorPCEt
LUVOVElUWSByaWdodGxlZnRoYXJwb29ucyAiJiN4MjFDQzsiLS0+Cis8IS0tRU5USVRZIEVxdWls
aWJyaXVtICImI3gyMUNDOyItLT4KKzwhLS1FTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ii0tPgorPCEt
LUVOVElUWSBuTGVmdGFycm93ICImI3gyMUNEOyItLT4KKzwhLS1FTlRJVFkgbmhBcnIgIiYjeDIx
Q0U7Ii0tPgorPCEtLUVOVElUWSBuTGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ii0tPgorPCEtLUVO
VElUWSBuckFyciAiJiN4MjFDRjsiLS0+Cis8IS0tRU5USVRZIG5SaWdodGFycm93ICImI3gyMUNG
OyItLT4KKzwhLS1FTlRJVFkgbEFyciAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIExlZnRhcnJv
dyAiJiN4MjFEMDsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUxlZnRBcnJvdyAiJiN4MjFEMDsiLS0+
Cis8IS0tRU5USVRZIHVBcnIgIiYjeDIxRDE7Ii0tPgorPCEtLUVOVElUWSBVcGFycm93ICImI3gy
MUQxOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlVXBBcnJvdyAiJiN4MjFEMTsiLS0+Cis8IS0tRU5U
SVRZIHJBcnIgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBSaWdodGFycm93ICImI3gyMUQyOyIt
LT4KKzwhLS1FTlRJVFkgSW1wbGllcyAiJiN4MjFEMjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0QXJyb3cgIiYjeDIxRDI7Ii0tPgorPCEtLUVOVElUWSBkQXJyICImI3gyMUQzOyItLT4KKzwh
LS1FTlRJVFkgRG93bmFycm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgRG91YmxlRG93bkFy
cm93ICImI3gyMUQzOyItLT4KKzwhLS1FTlRJVFkgaEFyciAiJiN4MjFENDsiLS0+Cis8IS0tRU5U
SVRZIExlZnRyaWdodGFycm93ICImI3gyMUQ0OyItLT4KKzwhLS1FTlRJVFkgRG91YmxlTGVmdFJp
Z2h0QXJyb3cgIiYjeDIxRDQ7Ii0tPgorPCEtLUVOVElUWSBpZmYgIiYjeDIxRDQ7Ii0tPgorPCEt
LUVOVElUWSB2QXJyICImI3gyMUQ1OyItLT4KKzwhLS1FTlRJVFkgVXBkb3duYXJyb3cgIiYjeDIx
RDU7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVVcERvd25BcnJvdyAiJiN4MjFENTsiLS0+Cis8IS0t
RU5USVRZIG53QXJyICImI3gyMUQ2OyItLT4KKzwhLS1FTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ii0t
PgorPCEtLUVOVElUWSBzZUFyciAiJiN4MjFEODsiLS0+Cis8IS0tRU5USVRZIHN3QXJyICImI3gy
MUQ5OyItLT4KKzwhLS1FTlRJVFkgbEFhcnIgIiYjeDIxREE7Ii0tPgorPCEtLUVOVElUWSBMbGVm
dGFycm93ICImI3gyMURBOyItLT4KKzwhLS1FTlRJVFkgckFhcnIgIiYjeDIxREI7Ii0tPgorPCEt
LUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFEQjsiLS0+Cis8IS0tRU5USVRZIHppZ3JhcnIgIiYj
eDIxREQ7Ii0tPgorPCEtLUVOVElUWSBsYXJyYiAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIExl
ZnRBcnJvd0JhciAiJiN4MjFFNDsiLS0+Cis8IS0tRU5USVRZIHJhcnJiICImI3gyMUU1OyItLT4K
KzwhLS1FTlRJVFkgUmlnaHRBcnJvd0JhciAiJiN4MjFFNTsiLS0+Cis8IS0tRU5USVRZIGR1YXJy
ICImI3gyMUY1OyItLT4KKzwhLS1FTlRJVFkgRG93bkFycm93VXBBcnJvdyAiJiN4MjFGNTsiLS0+
Cis8IS0tRU5USVRZIGxvYXJyICImI3gyMUZEOyItLT4KKzwhLS1FTlRJVFkgcm9hcnIgIiYjeDIx
RkU7Ii0tPgorPCEtLUVOVElUWSBob2FyciAiJiN4MjFGRjsiLS0+Cis8IS0tRU5USVRZIGZvcmFs
bCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiLS0+Cis8IS0tRU5U
SVRZIGNvbXAgIiYjeDIyMDE7Ii0tPgorPCEtLUVOVElUWSBjb21wbGVtZW50ICImI3gyMjAxOyIt
LT4KKzwhLS1FTlRJVFkgcGFydCAiJiN4MjIwMjsiLS0+Cis8IS0tRU5USVRZIFBhcnRpYWxEICIm
I3gyMjAyOyItLT4KKzwhLS1FTlRJVFkgbnBhcnQgIiYjeDIyMDI7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgZXhpc3QgIiYjeDIyMDM7Ii0tPgorPCEtLUVOVElUWSBFeGlzdHMgIiYjeDIyMDM7Ii0t
PgorPCEtLUVOVElUWSBuZXhpc3QgIiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RFeGlzdHMg
IiYjeDIyMDQ7Ii0tPgorPCEtLUVOVElUWSBuZXhpc3RzICImI3gyMjA0OyItLT4KKzwhLS1FTlRJ
VFkgZW1wdHkgIiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiLS0+
Cis8IS0tRU5USVRZIGVtcHR5diAiJiN4MjIwNTsiLS0+Cis8IS0tRU5USVRZIHZhcm5vdGhpbmcg
IiYjeDIyMDU7Ii0tPgorPCEtLUVOVElUWSBuYWJsYSAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZ
IERlbCAiJiN4MjIwNzsiLS0+Cis8IS0tRU5USVRZIGlzaW4gIiYjeDIyMDg7Ii0tPgorPCEtLUVO
VElUWSBpc2ludiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIEVsZW1lbnQgIiYjeDIyMDg7Ii0t
PgorPCEtLUVOVElUWSBpbiAiJiN4MjIwODsiLS0+Cis8IS0tRU5USVRZIG5vdGluICImI3gyMjA5
OyItLT4KKzwhLS1FTlRJVFkgTm90RWxlbWVudCAiJiN4MjIwOTsiLS0+Cis8IS0tRU5USVRZIG5v
dGludmEgIiYjeDIyMDk7Ii0tPgorPCEtLUVOVElUWSBuaXYgIiYjeDIyMEI7Ii0tPgorPCEtLUVO
VElUWSBSZXZlcnNlRWxlbWVudCAiJiN4MjIwQjsiLS0+Cis8IS0tRU5USVRZIG5pICImI3gyMjBC
OyItLT4KKzwhLS1FTlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ii0tPgorPCEtLUVOVElUWSBub3Ru
aSAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIG5vdG5pdmEgIiYjeDIyMEM7Ii0tPgorPCEtLUVO
VElUWSBOb3RSZXZlcnNlRWxlbWVudCAiJiN4MjIwQzsiLS0+Cis8IS0tRU5USVRZIHByb2QgIiYj
eDIyMEY7Ii0tPgorPCEtLUVOVElUWSBQcm9kdWN0ICImI3gyMjBGOyItLT4KKzwhLS1FTlRJVFkg
Y29wcm9kICImI3gyMjEwOyItLT4KKzwhLS1FTlRJVFkgQ29wcm9kdWN0ICImI3gyMjEwOyItLT4K
KzwhLS1FTlRJVFkgc3VtICImI3gyMjExOyItLT4KKzwhLS1FTlRJVFkgU3VtICImI3gyMjExOyIt
LT4KKzwhLS1FTlRJVFkgbWludXMgIiYjeDIyMTI7Ii0tPgorPCEtLUVOVElUWSBtbnBsdXMgIiYj
eDIyMTM7Ii0tPgorPCEtLUVOVElUWSBtcCAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIE1pbnVz
UGx1cyAiJiN4MjIxMzsiLS0+Cis8IS0tRU5USVRZIHBsdXNkbyAiJiN4MjIxNDsiLS0+Cis8IS0t
RU5USVRZIGRvdHBsdXMgIiYjeDIyMTQ7Ii0tPgorPCEtLUVOVElUWSBzZXRtbiAiJiN4MjIxNjsi
LS0+Cis8IS0tRU5USVRZIHNldG1pbnVzICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgQmFja3Ns
YXNoICImI3gyMjE2OyItLT4KKzwhLS1FTlRJVFkgc3NldG1uICImI3gyMjE2OyItLT4KKzwhLS1F
TlRJVFkgc21hbGxzZXRtaW51cyAiJiN4MjIxNjsiLS0+Cis8IS0tRU5USVRZIGxvd2FzdCAiJiN4
MjIxNzsiLS0+Cis8IS0tRU5USVRZIGNvbXBmbiAiJiN4MjIxODsiLS0+Cis8IS0tRU5USVRZIFNt
YWxsQ2lyY2xlICImI3gyMjE4OyItLT4KKzwhLS1FTlRJVFkgcmFkaWMgIiYjeDIyMUE7Ii0tPgor
PCEtLUVOVElUWSBTcXJ0ICImI3gyMjFBOyItLT4KKzwhLS1FTlRJVFkgcHJvcCAiJiN4MjIxRDsi
LS0+Cis8IS0tRU5USVRZIHByb3B0byAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIFByb3BvcnRp
b25hbCAiJiN4MjIxRDsiLS0+Cis8IS0tRU5USVRZIHZwcm9wICImI3gyMjFEOyItLT4KKzwhLS1F
TlRJVFkgdmFycHJvcHRvICImI3gyMjFEOyItLT4KKzwhLS1FTlRJVFkgaW5maW4gIiYjeDIyMUU7
Ii0tPgorPCEtLUVOVElUWSBhbmdydCAiJiN4MjIxRjsiLS0+Cis8IS0tRU5USVRZIGFuZyAiJiN4
MjIyMDsiLS0+Cis8IS0tRU5USVRZIGFuZ2xlICImI3gyMjIwOyItLT4KKzwhLS1FTlRJVFkgbmFu
ZyAiJiN4MjIyMDsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNkICImI3gyMjIxOyItLT4K
KzwhLS1FTlRJVFkgbWVhc3VyZWRhbmdsZSAiJiN4MjIyMTsiLS0+Cis8IS0tRU5USVRZIGFuZ3Nw
aCAiJiN4MjIyMjsiLS0+Cis8IS0tRU5USVRZIG1pZCAiJiN4MjIyMzsiLS0+Cis8IS0tRU5USVRZ
IFZlcnRpY2FsQmFyICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgc21pZCAiJiN4MjIyMzsiLS0+
Cis8IS0tRU5USVRZIHNob3J0bWlkICImI3gyMjIzOyItLT4KKzwhLS1FTlRJVFkgbm1pZCAiJiN4
MjIyNDsiLS0+Cis8IS0tRU5USVRZIE5vdFZlcnRpY2FsQmFyICImI3gyMjI0OyItLT4KKzwhLS1F
TlRJVFkgbnNtaWQgIiYjeDIyMjQ7Ii0tPgorPCEtLUVOVElUWSBuc2hvcnRtaWQgIiYjeDIyMjQ7
Ii0tPgorPCEtLUVOVElUWSBwYXIgIiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBwYXJhbGxlbCAi
JiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVZlcnRpY2FsQmFyICImI3gyMjI1OyItLT4K
KzwhLS1FTlRJVFkgc3BhciAiJiN4MjIyNTsiLS0+Cis8IS0tRU5USVRZIHNob3J0cGFyYWxsZWwg
IiYjeDIyMjU7Ii0tPgorPCEtLUVOVElUWSBucGFyICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkg
bnBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIg
IiYjeDIyMjY7Ii0tPgorPCEtLUVOVElUWSBuc3BhciAiJiN4MjIyNjsiLS0+Cis8IS0tRU5USVRZ
IG5zaG9ydHBhcmFsbGVsICImI3gyMjI2OyItLT4KKzwhLS1FTlRJVFkgYW5kICImI3gyMjI3OyIt
LT4KKzwhLS1FTlRJVFkgd2VkZ2UgIiYjeDIyMjc7Ii0tPgorPCEtLUVOVElUWSBvciAiJiN4MjIy
ODsiLS0+Cis8IS0tRU5USVRZIHZlZSAiJiN4MjIyODsiLS0+Cis8IS0tRU5USVRZIGNhcCAiJiN4
MjIyOTsiLS0+Cis8IS0tRU5USVRZIGNhcHMgIiYjeDIyMjk7JiN4RkUwMDsiLS0+Cis8IS0tRU5U
SVRZIGN1cCAiJiN4MjIyQTsiLS0+Cis8IS0tRU5USVRZIGN1cHMgIiYjeDIyMkE7JiN4RkUwMDsi
LS0+Cis8IS0tRU5USVRZIGludCAiJiN4MjIyQjsiLS0+Cis8IS0tRU5USVRZIEludGVncmFsICIm
I3gyMjJCOyItLT4KKzwhLS1FTlRJVFkgSW50ICImI3gyMjJDOyItLT4KKzwhLS1FTlRJVFkgdGlu
dCAiJiN4MjIyRDsiLS0+Cis8IS0tRU5USVRZIGlpaW50ICImI3gyMjJEOyItLT4KKzwhLS1FTlRJ
VFkgY29uaW50ICImI3gyMjJFOyItLT4KKzwhLS1FTlRJVFkgb2ludCAiJiN4MjIyRTsiLS0+Cis8
IS0tRU5USVRZIENvbnRvdXJJbnRlZ3JhbCAiJiN4MjIyRTsiLS0+Cis8IS0tRU5USVRZIENvbmlu
dCAiJiN4MjIyRjsiLS0+Cis8IS0tRU5USVRZIERvdWJsZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIy
RjsiLS0+Cis8IS0tRU5USVRZIENjb25pbnQgIiYjeDIyMzA7Ii0tPgorPCEtLUVOVElUWSBjd2lu
dCAiJiN4MjIzMTsiLS0+Cis8IS0tRU5USVRZIGN3Y29uaW50ICImI3gyMjMyOyItLT4KKzwhLS1F
TlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMyOyItLT4KKzwhLS1FTlRJVFkg
YXdjb25pbnQgIiYjeDIyMzM7Ii0tPgorPCEtLUVOVElUWSBDb3VudGVyQ2xvY2t3aXNlQ29udG91
ckludGVncmFsICImI3gyMjMzOyItLT4KKzwhLS1FTlRJVFkgdGhlcmU0ICImI3gyMjM0OyItLT4K
KzwhLS1FTlRJVFkgdGhlcmVmb3JlICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgVGhlcmVmb3Jl
ICImI3gyMjM0OyItLT4KKzwhLS1FTlRJVFkgYmVjYXVzICImI3gyMjM1OyItLT4KKzwhLS1FTlRJ
VFkgYmVjYXVzZSAiJiN4MjIzNTsiLS0+Cis8IS0tRU5USVRZIEJlY2F1c2UgIiYjeDIyMzU7Ii0t
PgorPCEtLUVOVElUWSByYXRpbyAiJiN4MjIzNjsiLS0+Cis8IS0tRU5USVRZIENvbG9uICImI3gy
MjM3OyItLT4KKzwhLS1FTlRJVFkgUHJvcG9ydGlvbiAiJiN4MjIzNzsiLS0+Cis8IS0tRU5USVRZ
IG1pbnVzZCAiJiN4MjIzODsiLS0+Cis8IS0tRU5USVRZIGRvdG1pbnVzICImI3gyMjM4OyItLT4K
KzwhLS1FTlRJVFkgbUREb3QgIiYjeDIyM0E7Ii0tPgorPCEtLUVOVElUWSBob210aHQgIiYjeDIy
M0I7Ii0tPgorPCEtLUVOVElUWSBzaW0gIiYjeDIyM0M7Ii0tPgorPCEtLUVOVElUWSBUaWxkZSAi
JiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiLS0+Cis8IS0tRU5USVRZ
IHRoaWNrc2ltICImI3gyMjNDOyItLT4KKzwhLS1FTlRJVFkgbnZzaW0gIiYjeDIyM0M7JiN4MjBE
MjsiLS0+Cis8IS0tRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2lt
ICImI3gyMjNEOyItLT4KKzwhLS1FTlRJVFkgcmFjZSAiJiN4MjIzRDsmI3gzMzE7Ii0tPgorPCEt
LUVOVElUWSBhYyAiJiN4MjIzRTsiLS0+Cis8IS0tRU5USVRZIG1zdHBvcyAiJiN4MjIzRTsiLS0+
Cis8IS0tRU5USVRZIGFjRSAiJiN4MjIzRTsmI3gzMzM7Ii0tPgorPCEtLUVOVElUWSBhY2QgIiYj
eDIyM0Y7Ii0tPgorPCEtLUVOVElUWSB3cmVhdGggIiYjeDIyNDA7Ii0tPgorPCEtLUVOVElUWSBW
ZXJ0aWNhbFRpbGRlICImI3gyMjQwOyItLT4KKzwhLS1FTlRJVFkgd3IgIiYjeDIyNDA7Ii0tPgor
PCEtLUVOVElUWSBuc2ltICImI3gyMjQxOyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGUgIiYjeDIy
NDE7Ii0tPgorPCEtLUVOVElUWSBlc2ltICImI3gyMjQyOyItLT4KKzwhLS1FTlRJVFkgRXF1YWxU
aWxkZSAiJiN4MjI0MjsiLS0+Cis8IS0tRU5USVRZIGVxc2ltICImI3gyMjQyOyItLT4KKzwhLS1F
TlRJVFkgTm90RXF1YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuZXNp
bSAiJiN4MjI0MjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzaW1lICImI3gyMjQzOyItLT4KKzwh
LS1FTlRJVFkgVGlsZGVFcXVhbCAiJiN4MjI0MzsiLS0+Cis8IS0tRU5USVRZIHNpbWVxICImI3gy
MjQzOyItLT4KKzwhLS1FTlRJVFkgbnNpbWUgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBuc2lt
ZXEgIiYjeDIyNDQ7Ii0tPgorPCEtLUVOVElUWSBOb3RUaWxkZUVxdWFsICImI3gyMjQ0OyItLT4K
KzwhLS1FTlRJVFkgY29uZyAiJiN4MjI0NTsiLS0+Cis8IS0tRU5USVRZIFRpbGRlRnVsbEVxdWFs
ICImI3gyMjQ1OyItLT4KKzwhLS1FTlRJVFkgc2ltbmUgIiYjeDIyNDY7Ii0tPgorPCEtLUVOVElU
WSBuY29uZyAiJiN4MjI0NzsiLS0+Cis8IS0tRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gy
MjQ3OyItLT4KKzwhLS1FTlRJVFkgYXN5bXAgIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSBhcCAi
JiN4MjI0ODsiLS0+Cis8IS0tRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ii0tPgorPCEtLUVO
VElUWSBhcHByb3ggIiYjeDIyNDg7Ii0tPgorPCEtLUVOVElUWSB0aGthcCAiJiN4MjI0ODsiLS0+
Cis8IS0tRU5USVRZIHRoaWNrYXBwcm94ICImI3gyMjQ4OyItLT4KKzwhLS1FTlRJVFkgbmFwICIm
I3gyMjQ5OyItLT4KKzwhLS1FTlRJVFkgTm90VGlsZGVUaWxkZSAiJiN4MjI0OTsiLS0+Cis8IS0t
RU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ii0tPgorPCEtLUVOVElUWSBhcGUgIiYjeDIyNEE7Ii0t
PgorPCEtLUVOVElUWSBhcHByb3hlcSAiJiN4MjI0QTsiLS0+Cis8IS0tRU5USVRZIGFwaWQgIiYj
eDIyNEI7Ii0tPgorPCEtLUVOVElUWSBuYXBpZCAiJiN4MjI0QjsmI3gzMzg7Ii0tPgorPCEtLUVO
VElUWSBiY29uZyAiJiN4MjI0QzsiLS0+Cis8IS0tRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyIt
LT4KKzwhLS1FTlRJVFkgYXN5bXBlcSAiJiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIEN1cENhcCAi
JiN4MjI0RDsiLS0+Cis8IS0tRU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIGJ1bXAgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBIdW1wRG93bkh1bXAgIiYjeDIy
NEU7Ii0tPgorPCEtLUVOVElUWSBCdW1wZXEgIiYjeDIyNEU7Ii0tPgorPCEtLUVOVElUWSBOb3RI
dW1wRG93bkh1bXAgIiYjeDIyNEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmJ1bXAgIiYjeDIy
NEU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgYnVtcGUgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElU
WSBIdW1wRXF1YWwgIiYjeDIyNEY7Ii0tPgorPCEtLUVOVElUWSBidW1wZXEgIiYjeDIyNEY7Ii0t
PgorPCEtLUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgTm90
SHVtcEVxdWFsICImI3gyMjRGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVzZG90ICImI3gyMjUw
OyItLT4KKzwhLS1FTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ii0tPgorPCEtLUVOVElUWSBkb3Rl
cSAiJiN4MjI1MDsiLS0+Cis8IS0tRU5USVRZIG5lZG90ICImI3gyMjUwOyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIGVEb3QgIiYjeDIyNTE7Ii0tPgorPCEtLUVOVElUWSBkb3RlcWRvdCAiJiN4MjI1
MTsiLS0+Cis8IS0tRU5USVRZIGVmRG90ICImI3gyMjUyOyItLT4KKzwhLS1FTlRJVFkgZmFsbGlu
Z2RvdHNlcSAiJiN4MjI1MjsiLS0+Cis8IS0tRU5USVRZIGVyRG90ICImI3gyMjUzOyItLT4KKzwh
LS1FTlRJVFkgcmlzaW5nZG90c2VxICImI3gyMjUzOyItLT4KKzwhLS1FTlRJVFkgY29sb25lICIm
I3gyMjU0OyItLT4KKzwhLS1FTlRJVFkgY29sb25lcSAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZ
IEFzc2lnbiAiJiN4MjI1NDsiLS0+Cis8IS0tRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiLS0+Cis8
IS0tRU5USVRZIGVxY29sb24gIiYjeDIyNTU7Ii0tPgorPCEtLUVOVElUWSBlY2lyICImI3gyMjU2
OyItLT4KKzwhLS1FTlRJVFkgZXFjaXJjICImI3gyMjU2OyItLT4KKzwhLS1FTlRJVFkgY2lyZSAi
JiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZIGNpcmNlcSAiJiN4MjI1NzsiLS0+Cis8IS0tRU5USVRZ
IHdlZGdlcSAiJiN4MjI1OTsiLS0+Cis8IS0tRU5USVRZIHZlZWVxICImI3gyMjVBOyItLT4KKzwh
LS1FTlRJVFkgdHJpZSAiJiN4MjI1QzsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlcSAiJiN4MjI1
QzsiLS0+Cis8IS0tRU5USVRZIGVxdWVzdCAiJiN4MjI1RjsiLS0+Cis8IS0tRU5USVRZIHF1ZXN0
ZXEgIiYjeDIyNUY7Ii0tPgorPCEtLUVOVElUWSBuZSAiJiN4MjI2MDsiLS0+Cis8IS0tRU5USVRZ
IE5vdEVxdWFsICImI3gyMjYwOyItLT4KKzwhLS1FTlRJVFkgZXF1aXYgIiYjeDIyNjE7Ii0tPgor
PCEtLUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ii0tPgorPCEtLUVOVElUWSBibmVxdWl2ICIm
I3gyMjYxOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBuZXF1aXYgIiYjeDIyNjI7Ii0tPgorPCEt
LUVOVElUWSBOb3RDb25ncnVlbnQgIiYjeDIyNjI7Ii0tPgorPCEtLUVOVElUWSBsZSAiJiN4MjI2
NDsiLS0+Cis8IS0tRU5USVRZIGxlcSAiJiN4MjI2NDsiLS0+Cis8IS0tRU5USVRZIG52bGUgIiYj
eDIyNjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIGdlICImI3gyMjY1OyItLT4KKzwhLS1FTlRJ
VFkgR3JlYXRlckVxdWFsICImI3gyMjY1OyItLT4KKzwhLS1FTlRJVFkgZ2VxICImI3gyMjY1OyIt
LT4KKzwhLS1FTlRJVFkgbnZnZSAiJiN4MjI2NTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgbEUg
IiYjeDIyNjY7Ii0tPgorPCEtLUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyItLT4KKzwh
LS1FTlRJVFkgbGVxcSAiJiN4MjI2NjsiLS0+Cis8IS0tRU5USVRZIG5sRSAiJiN4MjI2NjsmI3gz
Mzg7Ii0tPgorPCEtLUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBnRSAiJiN4MjI2NzsiLS0+Cis8IS0tRU5USVRZIEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7
Ii0tPgorPCEtLUVOVElUWSBnZXFxICImI3gyMjY3OyItLT4KKzwhLS1FTlRJVFkgbmdFICImI3gy
MjY3OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIG5nZXFxICImI3gyMjY3OyYjeDMzODsiLS0+Cis8
IS0tRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwgIiYjeDIyNjc7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbG5FICImI3gyMjY4OyItLT4KKzwhLS1FTlRJVFkgbG5lcXEgIiYjeDIyNjg7Ii0tPgor
PCEtLUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBsdmVydG5l
cXEgIiYjeDIyNjg7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGduRSAiJiN4MjI2OTsiLS0+Cis8
IS0tRU5USVRZIGduZXFxICImI3gyMjY5OyItLT4KKzwhLS1FTlRJVFkgZ3ZuRSAiJiN4MjI2OTsm
I3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgZ3ZlcnRuZXFxICImI3gyMjY5OyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBMdCAiJiN4MjI2QTsiLS0+Cis8IS0tRU5USVRZIE5lc3RlZExlc3NMZXNzICIm
I3gyMjZBOyItLT4KKzwhLS1FTlRJVFkgbGwgIiYjeDIyNkE7Ii0tPgorPCEtLUVOVElUWSBuTHR2
ICImI3gyMjZBOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3NMZXNzICImI3gyMjZBOyYj
eDMzODsiLS0+Cis8IS0tRU5USVRZIG5MdCAiJiN4MjI2QTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJ
VFkgR3QgIiYjeDIyNkI7Ii0tPgorPCEtLUVOVElUWSBOZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4
MjI2QjsiLS0+Cis8IS0tRU5USVRZIGdnICImI3gyMjZCOyItLT4KKzwhLS1FTlRJVFkgbkd0diAi
JiN4MjI2QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyR3JlYXRlciAiJiN4MjI2
QjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBuR3QgIiYjeDIyNkI7JiN4MjBEMjsiLS0+Cis8IS0t
RU5USVRZIHR3aXh0ICImI3gyMjZDOyItLT4KKzwhLS1FTlRJVFkgYmV0d2VlbiAiJiN4MjI2Qzsi
LS0+Cis8IS0tRU5USVRZIE5vdEN1cENhcCAiJiN4MjI2RDsiLS0+Cis8IS0tRU5USVRZIG5sdCAi
JiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIE5vdExlc3MgIiYjeDIyNkU7Ii0tPgorPCEtLUVOVElU
WSBubGVzcyAiJiN4MjI2RTsiLS0+Cis8IS0tRU5USVRZIG5ndCAiJiN4MjI2RjsiLS0+Cis8IS0t
RU5USVRZIE5vdEdyZWF0ZXIgIiYjeDIyNkY7Ii0tPgorPCEtLUVOVElUWSBuZ3RyICImI3gyMjZG
OyItLT4KKzwhLS1FTlRJVFkgbmxlICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgTm90TGVzc0Vx
dWFsICImI3gyMjcwOyItLT4KKzwhLS1FTlRJVFkgbmxlcSAiJiN4MjI3MDsiLS0+Cis8IS0tRU5U
SVRZIG5nZSAiJiN4MjI3MTsiLS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJFcXVhbCAiJiN4MjI3
MTsiLS0+Cis8IS0tRU5USVRZIG5nZXEgIiYjeDIyNzE7Ii0tPgorPCEtLUVOVElUWSBsc2ltICIm
I3gyMjcyOyItLT4KKzwhLS1FTlRJVFkgTGVzc1RpbGRlICImI3gyMjcyOyItLT4KKzwhLS1FTlRJ
VFkgbGVzc3NpbSAiJiN4MjI3MjsiLS0+Cis8IS0tRU5USVRZIGdzaW0gIiYjeDIyNzM7Ii0tPgor
PCEtLUVOVElUWSBndHJzaW0gIiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyVGlsZGUg
IiYjeDIyNzM7Ii0tPgorPCEtLUVOVElUWSBubHNpbSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZ
IE5vdExlc3NUaWxkZSAiJiN4MjI3NDsiLS0+Cis8IS0tRU5USVRZIG5nc2ltICImI3gyMjc1OyIt
LT4KKzwhLS1FTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1OyItLT4KKzwhLS1FTlRJVFkg
bGcgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBsZXNzZ3RyICImI3gyMjc2OyItLT4KKzwhLS1F
TlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ii0tPgorPCEtLUVOVElUWSBnbCAiJiN4MjI3Nzsi
LS0+Cis8IS0tRU5USVRZIGd0cmxlc3MgIiYjeDIyNzc7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVy
TGVzcyAiJiN4MjI3NzsiLS0+Cis8IS0tRU5USVRZIG50bGcgIiYjeDIyNzg7Ii0tPgorPCEtLUVO
VElUWSBOb3RMZXNzR3JlYXRlciAiJiN4MjI3ODsiLS0+Cis8IS0tRU5USVRZIG50Z2wgIiYjeDIy
Nzk7Ii0tPgorPCEtLUVOVElUWSBOb3RHcmVhdGVyTGVzcyAiJiN4MjI3OTsiLS0+Cis8IS0tRU5U
SVRZIHByICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgUHJlY2VkZXMgIiYjeDIyN0E7Ii0tPgor
PCEtLUVOVElUWSBwcmVjICImI3gyMjdBOyItLT4KKzwhLS1FTlRJVFkgc2MgIiYjeDIyN0I7Ii0t
PgorPCEtLUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiLS0+Cis8IS0tRU5USVRZIHN1Y2MgIiYj
eDIyN0I7Ii0tPgorPCEtLUVOVElUWSBwcmN1ZSAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIFBy
ZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiLS0+Cis8IS0tRU5USVRZIHByZWNjdXJseWVxICIm
I3gyMjdDOyItLT4KKzwhLS1FTlRJVFkgc2NjdWUgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBT
dWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyN0Q7Ii0tPgorPCEtLUVOVElUWSBzdWNjY3VybHllcSAi
JiN4MjI3RDsiLS0+Cis8IS0tRU5USVRZIHByc2ltICImI3gyMjdFOyItLT4KKzwhLS1FTlRJVFkg
cHJlY3NpbSAiJiN4MjI3RTsiLS0+Cis8IS0tRU5USVRZIFByZWNlZGVzVGlsZGUgIiYjeDIyN0U7
Ii0tPgorPCEtLUVOVElUWSBzY3NpbSAiJiN4MjI3RjsiLS0+Cis8IS0tRU5USVRZIHN1Y2NzaW0g
IiYjeDIyN0Y7Ii0tPgorPCEtLUVOVElUWSBTdWNjZWVkc1RpbGRlICImI3gyMjdGOyItLT4KKzwh
LS1FTlRJVFkgTm90U3VjY2VlZHNUaWxkZSAiJiN4MjI3RjsmI3gzMzg7Ii0tPgorPCEtLUVOVElU
WSBucHIgIiYjeDIyODA7Ii0tPgorPCEtLUVOVElUWSBucHJlYyAiJiN4MjI4MDsiLS0+Cis8IS0t
RU5USVRZIE5vdFByZWNlZGVzICImI3gyMjgwOyItLT4KKzwhLS1FTlRJVFkgbnNjICImI3gyMjgx
OyItLT4KKzwhLS1FTlRJVFkgbnN1Y2MgIiYjeDIyODE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNj
ZWVkcyAiJiN4MjI4MTsiLS0+Cis8IS0tRU5USVRZIHN1YiAiJiN4MjI4MjsiLS0+Cis8IS0tRU5U
SVRZIHN1YnNldCAiJiN4MjI4MjsiLS0+Cis8IS0tRU5USVRZIHZuc3ViICImI3gyMjgyOyYjeDIw
RDI7Ii0tPgorPCEtLUVOVElUWSBuc3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgorPCEtLUVO
VElUWSBOb3RTdWJzZXQgIiYjeDIyODI7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHN1cCAiJiN4
MjI4MzsiLS0+Cis8IS0tRU5USVRZIHN1cHNldCAiJiN4MjI4MzsiLS0+Cis8IS0tRU5USVRZIFN1
cGVyc2V0ICImI3gyMjgzOyItLT4KKzwhLS1FTlRJVFkgdm5zdXAgIiYjeDIyODM7JiN4MjBEMjsi
LS0+Cis8IS0tRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZ
IE5vdFN1cGVyc2V0ICImI3gyMjgzOyYjeDIwRDI7Ii0tPgorPCEtLUVOVElUWSBuc3ViICImI3gy
Mjg0OyItLT4KKzwhLS1FTlRJVFkgbnN1cCAiJiN4MjI4NTsiLS0+Cis8IS0tRU5USVRZIHN1YmUg
IiYjeDIyODY7Ii0tPgorPCEtLUVOVElUWSBTdWJzZXRFcXVhbCAiJiN4MjI4NjsiLS0+Cis8IS0t
RU5USVRZIHN1YnNldGVxICImI3gyMjg2OyItLT4KKzwhLS1FTlRJVFkgc3VwZSAiJiN4MjI4Nzsi
LS0+Cis8IS0tRU5USVRZIHN1cHNldGVxICImI3gyMjg3OyItLT4KKzwhLS1FTlRJVFkgU3VwZXJz
ZXRFcXVhbCAiJiN4MjI4NzsiLS0+Cis8IS0tRU5USVRZIG5zdWJlICImI3gyMjg4OyItLT4KKzwh
LS1FTlRJVFkgbnN1YnNldGVxICImI3gyMjg4OyItLT4KKzwhLS1FTlRJVFkgTm90U3Vic2V0RXF1
YWwgIiYjeDIyODg7Ii0tPgorPCEtLUVOVElUWSBuc3VwZSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5U
SVRZIG5zdXBzZXRlcSAiJiN4MjI4OTsiLS0+Cis8IS0tRU5USVRZIE5vdFN1cGVyc2V0RXF1YWwg
IiYjeDIyODk7Ii0tPgorPCEtLUVOVElUWSBzdWJuZSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZ
IHN1YnNldG5lcSAiJiN4MjI4QTsiLS0+Cis8IS0tRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hG
RTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vic2V0bmVxICImI3gyMjhBOyYjeEZFMDA7Ii0tPgor
PCEtLUVOVElUWSBzdXBuZSAiJiN4MjI4QjsiLS0+Cis8IS0tRU5USVRZIHN1cHNldG5lcSAiJiN4
MjI4QjsiLS0+Cis8IS0tRU5USVRZIHZzdXBuZSAiJiN4MjI4QjsmI3hGRTAwOyItLT4KKzwhLS1F
TlRJVFkgdmFyc3Vwc2V0bmVxICImI3gyMjhCOyYjeEZFMDA7Ii0tPgorPCEtLUVOVElUWSBjdXBk
b3QgIiYjeDIyOEQ7Ii0tPgorPCEtLUVOVElUWSB1cGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5U
SVRZIFVuaW9uUGx1cyAiJiN4MjI4RTsiLS0+Cis8IS0tRU5USVRZIHNxc3ViICImI3gyMjhGOyIt
LT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0ICImI3gyMjhGOyItLT4KKzwhLS1FTlRJVFkgc3Fz
dWJzZXQgIiYjeDIyOEY7Ii0tPgorPCEtLUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIyOEY7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc3FzdXAgIiYjeDIyOTA7Ii0tPgorPCEtLUVOVElUWSBT
cXVhcmVTdXBlcnNldCAiJiN4MjI5MDsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkw
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7JiN4MzM4OyItLT4K
KzwhLS1FTlRJVFkgc3FzdWJlICImI3gyMjkxOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3Vic2V0
RXF1YWwgIiYjeDIyOTE7Ii0tPgorPCEtLUVOVElUWSBzcXN1YnNldGVxICImI3gyMjkxOyItLT4K
KzwhLS1FTlRJVFkgc3FzdXBlICImI3gyMjkyOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlU3VwZXJz
ZXRFcXVhbCAiJiN4MjI5MjsiLS0+Cis8IS0tRU5USVRZIHNxc3Vwc2V0ZXEgIiYjeDIyOTI7Ii0t
PgorPCEtLUVOVElUWSBzcWNhcCAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIFNxdWFyZUludGVy
c2VjdGlvbiAiJiN4MjI5MzsiLS0+Cis8IS0tRU5USVRZIHNxY2FwcyAiJiN4MjI5MzsmI3hGRTAw
OyItLT4KKzwhLS1FTlRJVFkgc3FjdXAgIiYjeDIyOTQ7Ii0tPgorPCEtLUVOVElUWSBTcXVhcmVV
bmlvbiAiJiN4MjI5NDsiLS0+Cis8IS0tRU5USVRZIHNxY3VwcyAiJiN4MjI5NDsmI3hGRTAwOyIt
LT4KKzwhLS1FTlRJVFkgb3BsdXMgIiYjeDIyOTU7Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVQbHVz
ICImI3gyMjk1OyItLT4KKzwhLS1FTlRJVFkgb21pbnVzICImI3gyMjk2OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlTWludXMgIiYjeDIyOTY7Ii0tPgorPCEtLUVOVElUWSBvdGltZXMgIiYjeDIyOTc7
Ii0tPgorPCEtLUVOVElUWSBDaXJjbGVUaW1lcyAiJiN4MjI5NzsiLS0+Cis8IS0tRU5USVRZIG9z
b2wgIiYjeDIyOTg7Ii0tPgorPCEtLUVOVElUWSBvZG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJ
VFkgQ2lyY2xlRG90ICImI3gyMjk5OyItLT4KKzwhLS1FTlRJVFkgb2NpciAiJiN4MjI5QTsiLS0+
Cis8IS0tRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyItLT4KKzwhLS1FTlRJVFkgb2FzdCAi
JiN4MjI5QjsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRhc3QgIiYjeDIyOUI7Ii0tPgorPCEtLUVO
VElUWSBvZGFzaCAiJiN4MjI5RDsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRkYXNoICImI3gyMjlE
OyItLT4KKzwhLS1FTlRJVFkgcGx1c2IgIiYjeDIyOUU7Ii0tPgorPCEtLUVOVElUWSBib3hwbHVz
ICImI3gyMjlFOyItLT4KKzwhLS1FTlRJVFkgbWludXNiICImI3gyMjlGOyItLT4KKzwhLS1FTlRJ
VFkgYm94bWludXMgIiYjeDIyOUY7Ii0tPgorPCEtLUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ii0t
PgorPCEtLUVOVElUWSBib3h0aW1lcyAiJiN4MjJBMDsiLS0+Cis8IS0tRU5USVRZIHNkb3RiICIm
I3gyMkExOyItLT4KKzwhLS1FTlRJVFkgZG90c3F1YXJlICImI3gyMkExOyItLT4KKzwhLS1FTlRJ
VFkgdmRhc2ggIiYjeDIyQTI7Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZSAiJiN4MjJBMjsiLS0+
Cis8IS0tRU5USVRZIGRhc2h2ICImI3gyMkEzOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRlZSAiJiN4
MjJBMzsiLS0+Cis8IS0tRU5USVRZIHRvcCAiJiN4MjJBNDsiLS0+Cis8IS0tRU5USVRZIERvd25U
ZWUgIiYjeDIyQTQ7Ii0tPgorPCEtLUVOVElUWSBib3R0b20gIiYjeDIyQTU7Ii0tPgorPCEtLUVO
VElUWSBib3QgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBwZXJwICImI3gyMkE1OyItLT4KKzwh
LS1FTlRJVFkgVXBUZWUgIiYjeDIyQTU7Ii0tPgorPCEtLUVOVElUWSBtb2RlbHMgIiYjeDIyQTc7
Ii0tPgorPCEtLUVOVElUWSB2RGFzaCAiJiN4MjJBODsiLS0+Cis8IS0tRU5USVRZIERvdWJsZVJp
Z2h0VGVlICImI3gyMkE4OyItLT4KKzwhLS1FTlRJVFkgVmRhc2ggIiYjeDIyQTk7Ii0tPgorPCEt
LUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ii0tPgorPCEtLUVOVElUWSBWRGFzaCAiJiN4MjJBQjsi
LS0+Cis8IS0tRU5USVRZIG52ZGFzaCAiJiN4MjJBQzsiLS0+Cis8IS0tRU5USVRZIG52RGFzaCAi
JiN4MjJBRDsiLS0+Cis8IS0tRU5USVRZIG5WZGFzaCAiJiN4MjJBRTsiLS0+Cis8IS0tRU5USVRZ
IG5WRGFzaCAiJiN4MjJBRjsiLS0+Cis8IS0tRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiLS0+Cis8
IS0tRU5USVRZIHZsdHJpICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgdmFydHJpYW5nbGVsZWZ0
ICImI3gyMkIyOyItLT4KKzwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyItLT4KKzwh
LS1FTlRJVFkgdnJ0cmkgIiYjeDIyQjM7Ii0tPgorPCEtLUVOVElUWSB2YXJ0cmlhbmdsZXJpZ2h0
ICImI3gyMkIzOyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZSAiJiN4MjJCMzsiLS0+Cis8
IS0tRU5USVRZIGx0cmllICImI3gyMkI0OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ZXEg
IiYjeDIyQjQ7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJCNDsiLS0+
Cis8IS0tRU5USVRZIG52bHRyaWUgIiYjeDIyQjQ7JiN4MjBEMjsiLS0+Cis8IS0tRU5USVRZIHJ0
cmllICImI3gyMkI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkI1OyItLT4KKzwhLS1FTlRJ
VFkgbnZydHJpZSAiJiN4MjJCNTsmI3gyMEQyOyItLT4KKzwhLS1FTlRJVFkgb3JpZ29mICImI3gy
MkI2OyItLT4KKzwhLS1FTlRJVFkgaW1vZiAiJiN4MjJCNzsiLS0+Cis8IS0tRU5USVRZIG11bWFw
ICImI3gyMkI4OyItLT4KKzwhLS1FTlRJVFkgbXVsdGltYXAgIiYjeDIyQjg7Ii0tPgorPCEtLUVO
VElUWSBoZXJjb24gIiYjeDIyQjk7Ii0tPgorPCEtLUVOVElUWSBpbnRjYWwgIiYjeDIyQkE7Ii0t
PgorPCEtLUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiLS0+Cis8IS0tRU5USVRZIHZlZWJhciAi
JiN4MjJCQjsiLS0+Cis8IS0tRU5USVRZIGJhcnZlZSAiJiN4MjJCRDsiLS0+Cis8IS0tRU5USVRZ
IGFuZ3J0dmIgIiYjeDIyQkU7Ii0tPgorPCEtLUVOVElUWSBscnRyaSAiJiN4MjJCRjsiLS0+Cis8
IS0tRU5USVRZIHh3ZWRnZSAiJiN4MjJDMDsiLS0+Cis8IS0tRU5USVRZIFdlZGdlICImI3gyMkMw
OyItLT4KKzwhLS1FTlRJVFkgYmlnd2VkZ2UgIiYjeDIyQzA7Ii0tPgorPCEtLUVOVElUWSB4dmVl
ICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgVmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkg
YmlndmVlICImI3gyMkMxOyItLT4KKzwhLS1FTlRJVFkgeGNhcCAiJiN4MjJDMjsiLS0+Cis8IS0t
RU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJDMjsiLS0+Cis8IS0tRU5USVRZIGJpZ2NhcCAiJiN4
MjJDMjsiLS0+Cis8IS0tRU5USVRZIHhjdXAgIiYjeDIyQzM7Ii0tPgorPCEtLUVOVElUWSBVbmlv
biAiJiN4MjJDMzsiLS0+Cis8IS0tRU5USVRZIGJpZ2N1cCAiJiN4MjJDMzsiLS0+Cis8IS0tRU5U
SVRZIGRpYW0gIiYjeDIyQzQ7Ii0tPgorPCEtLUVOVElUWSBkaWFtb25kICImI3gyMkM0OyItLT4K
KzwhLS1FTlRJVFkgRGlhbW9uZCAiJiN4MjJDNDsiLS0+Cis8IS0tRU5USVRZIHNkb3QgIiYjeDIy
QzU7Ii0tPgorPCEtLUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ii0tPgorPCEtLUVOVElUWSBTdGFy
ICImI3gyMkM2OyItLT4KKzwhLS1FTlRJVFkgZGl2b254ICImI3gyMkM3OyItLT4KKzwhLS1FTlRJ
VFkgZGl2aWRlb250aW1lcyAiJiN4MjJDNzsiLS0+Cis8IS0tRU5USVRZIGJvd3RpZSAiJiN4MjJD
ODsiLS0+Cis8IS0tRU5USVRZIGx0aW1lcyAiJiN4MjJDOTsiLS0+Cis8IS0tRU5USVRZIHJ0aW1l
cyAiJiN4MjJDQTsiLS0+Cis8IS0tRU5USVRZIGx0aHJlZSAiJiN4MjJDQjsiLS0+Cis8IS0tRU5U
SVRZIGxlZnR0aHJlZXRpbWVzICImI3gyMkNCOyItLT4KKzwhLS1FTlRJVFkgcnRocmVlICImI3gy
MkNDOyItLT4KKzwhLS1FTlRJVFkgcmlnaHR0aHJlZXRpbWVzICImI3gyMkNDOyItLT4KKzwhLS1F
TlRJVFkgYnNpbWUgIiYjeDIyQ0Q7Ii0tPgorPCEtLUVOVElUWSBiYWNrc2ltZXEgIiYjeDIyQ0Q7
Ii0tPgorPCEtLUVOVElUWSBjdXZlZSAiJiN4MjJDRTsiLS0+Cis8IS0tRU5USVRZIGN1cmx5dmVl
ICImI3gyMkNFOyItLT4KKzwhLS1FTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ii0tPgorPCEtLUVOVElU
WSBjdXJseXdlZGdlICImI3gyMkNGOyItLT4KKzwhLS1FTlRJVFkgU3ViICImI3gyMkQwOyItLT4K
KzwhLS1FTlRJVFkgU3Vic2V0ICImI3gyMkQwOyItLT4KKzwhLS1FTlRJVFkgU3VwICImI3gyMkQx
OyItLT4KKzwhLS1FTlRJVFkgU3Vwc2V0ICImI3gyMkQxOyItLT4KKzwhLS1FTlRJVFkgQ2FwICIm
I3gyMkQyOyItLT4KKzwhLS1FTlRJVFkgQ3VwICImI3gyMkQzOyItLT4KKzwhLS1FTlRJVFkgZm9y
ayAiJiN4MjJENDsiLS0+Cis8IS0tRU5USVRZIHBpdGNoZm9yayAiJiN4MjJENDsiLS0+Cis8IS0t
RU5USVRZIGVwYXIgIiYjeDIyRDU7Ii0tPgorPCEtLUVOVElUWSBsdGRvdCAiJiN4MjJENjsiLS0+
Cis8IS0tRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ii0tPgorPCEtLUVOVElUWSBndGRvdCAiJiN4
MjJENzsiLS0+Cis8IS0tRU5USVRZIGd0cmRvdCAiJiN4MjJENzsiLS0+Cis8IS0tRU5USVRZIExs
ICImI3gyMkQ4OyItLT4KKzwhLS1FTlRJVFkgbkxsICImI3gyMkQ4OyYjeDMzODsiLS0+Cis8IS0t
RU5USVRZIEdnICImI3gyMkQ5OyItLT4KKzwhLS1FTlRJVFkgZ2dnICImI3gyMkQ5OyItLT4KKzwh
LS1FTlRJVFkgbkdnICImI3gyMkQ5OyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGxlZyAiJiN4MjJE
QTsiLS0+Cis8IS0tRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIgIiYjeDIyREE7Ii0tPgorPCEtLUVO
VElUWSBsZXNzZXFndHIgIiYjeDIyREE7Ii0tPgorPCEtLUVOVElUWSBsZXNnICImI3gyMkRBOyYj
eEZFMDA7Ii0tPgorPCEtLUVOVElUWSBnZWwgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBndHJl
cWxlc3MgIiYjeDIyREI7Ii0tPgorPCEtLUVOVElUWSBHcmVhdGVyRXF1YWxMZXNzICImI3gyMkRC
OyItLT4KKzwhLS1FTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkg
Y3VlcHIgIiYjeDIyREU7Ii0tPgorPCEtLUVOVElUWSBjdXJseWVxcHJlYyAiJiN4MjJERTsiLS0+
Cis8IS0tRU5USVRZIGN1ZXNjICImI3gyMkRGOyItLT4KKzwhLS1FTlRJVFkgY3VybHllcXN1Y2Mg
IiYjeDIyREY7Ii0tPgorPCEtLUVOVElUWSBucHJjdWUgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElU
WSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyRTA7Ii0tPgorPCEtLUVOVElUWSBuc2NjdWUg
IiYjeDIyRTE7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc1NsYW50RXF1YWwgIiYjeDIyRTE7
Ii0tPgorPCEtLUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyItLT4KKzwhLS1FTlRJVFkgTm90U3F1
YXJlU3Vic2V0RXF1YWwgIiYjeDIyRTI7Ii0tPgorPCEtLUVOVElUWSBuc3FzdXBlICImI3gyMkUz
OyItLT4KKzwhLS1FTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsiLS0+Cis8
IS0tRU5USVRZIGxuc2ltICImI3gyMkU2OyItLT4KKzwhLS1FTlRJVFkgZ25zaW0gIiYjeDIyRTc7
Ii0tPgorPCEtLUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ii0tPgorPCEtLUVOVElUWSBwcmVjbnNp
bSAiJiN4MjJFODsiLS0+Cis8IS0tRU5USVRZIHNjbnNpbSAiJiN4MjJFOTsiLS0+Cis8IS0tRU5U
SVRZIHN1Y2Nuc2ltICImI3gyMkU5OyItLT4KKzwhLS1FTlRJVFkgbmx0cmkgIiYjeDIyRUE7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgTm90
TGVmdFRyaWFuZ2xlICImI3gyMkVBOyItLT4KKzwhLS1FTlRJVFkgbnJ0cmkgIiYjeDIyRUI7Ii0t
PgorPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodCAiJiN4MjJFQjsiLS0+Cis8IS0tRU5USVRZIE5v
dFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ii0tPgorPCEtLUVOVElUWSBubHRyaWUgIiYjeDIyRUM7
Ii0tPgorPCEtLUVOVElUWSBudHJpYW5nbGVsZWZ0ZXEgIiYjeDIyRUM7Ii0tPgorPCEtLUVOVElU
WSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiLS0+Cis8IS0tRU5USVRZIG5ydHJpZSAi
JiN4MjJFRDsiLS0+Cis8IS0tRU5USVRZIG50cmlhbmdsZXJpZ2h0ZXEgIiYjeDIyRUQ7Ii0tPgor
PCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ii0tPgorPCEtLUVOVElU
WSB2ZWxsaXAgIiYjeDIyRUU7Ii0tPgorPCEtLUVOVElUWSBjdGRvdCAiJiN4MjJFRjsiLS0+Cis8
IS0tRU5USVRZIHV0ZG90ICImI3gyMkYwOyItLT4KKzwhLS1FTlRJVFkgZHRkb3QgIiYjeDIyRjE7
Ii0tPgorPCEtLUVOVElUWSBkaXNpbiAiJiN4MjJGMjsiLS0+Cis8IS0tRU5USVRZIGlzaW5zdiAi
JiN4MjJGMzsiLS0+Cis8IS0tRU5USVRZIGlzaW5zICImI3gyMkY0OyItLT4KKzwhLS1FTlRJVFkg
aXNpbmRvdCAiJiN4MjJGNTsiLS0+Cis8IS0tRU5USVRZIG5vdGluZG90ICImI3gyMkY1OyYjeDMz
ODsiLS0+Cis8IS0tRU5USVRZIG5vdGludmMgIiYjeDIyRjY7Ii0tPgorPCEtLUVOVElUWSBub3Rp
bnZiICImI3gyMkY3OyItLT4KKzwhLS1FTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ii0tPgorPCEtLUVO
VElUWSBub3RpbkUgIiYjeDIyRjk7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmlzZCAiJiN4MjJG
QTsiLS0+Cis8IS0tRU5USVRZIHhuaXMgIiYjeDIyRkI7Ii0tPgorPCEtLUVOVElUWSBuaXMgIiYj
eDIyRkM7Ii0tPgorPCEtLUVOVElUWSBub3RuaXZjICImI3gyMkZEOyItLT4KKzwhLS1FTlRJVFkg
bm90bml2YiAiJiN4MjJGRTsiLS0+Cis8IS0tRU5USVRZIGJhcndlZCAiJiN4MjMwNTsiLS0+Cis8
IS0tRU5USVRZIGJhcndlZGdlICImI3gyMzA1OyItLT4KKzwhLS1FTlRJVFkgQmFyd2VkICImI3gy
MzA2OyItLT4KKzwhLS1FTlRJVFkgZG91YmxlYmFyd2VkZ2UgIiYjeDIzMDY7Ii0tPgorPCEtLUVO
VElUWSBsY2VpbCAiJiN4MjMwODsiLS0+Cis8IS0tRU5USVRZIExlZnRDZWlsaW5nICImI3gyMzA4
OyItLT4KKzwhLS1FTlRJVFkgcmNlaWwgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBSaWdodENl
aWxpbmcgIiYjeDIzMDk7Ii0tPgorPCEtLUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEt
LUVOVElUWSBMZWZ0Rmxvb3IgIiYjeDIzMEE7Ii0tPgorPCEtLUVOVElUWSByZmxvb3IgIiYjeDIz
MEI7Ii0tPgorPCEtLUVOVElUWSBSaWdodEZsb29yICImI3gyMzBCOyItLT4KKzwhLS1FTlRJVFkg
ZHJjcm9wICImI3gyMzBDOyItLT4KKzwhLS1FTlRJVFkgZGxjcm9wICImI3gyMzBEOyItLT4KKzwh
LS1FTlRJVFkgdXJjcm9wICImI3gyMzBFOyItLT4KKzwhLS1FTlRJVFkgdWxjcm9wICImI3gyMzBG
OyItLT4KKzwhLS1FTlRJVFkgYm5vdCAiJiN4MjMxMDsiLS0+Cis8IS0tRU5USVRZIHByb2ZsaW5l
ICImI3gyMzEyOyItLT4KKzwhLS1FTlRJVFkgcHJvZnN1cmYgIiYjeDIzMTM7Ii0tPgorPCEtLUVO
VElUWSB0ZWxyZWMgIiYjeDIzMTU7Ii0tPgorPCEtLUVOVElUWSB0YXJnZXQgIiYjeDIzMTY7Ii0t
PgorPCEtLUVOVElUWSB1bGNvcm4gIiYjeDIzMUM7Ii0tPgorPCEtLUVOVElUWSB1bGNvcm5lciAi
JiN4MjMxQzsiLS0+Cis8IS0tRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiLS0+Cis8IS0tRU5USVRZ
IHVyY29ybmVyICImI3gyMzFEOyItLT4KKzwhLS1FTlRJVFkgZGxjb3JuICImI3gyMzFFOyItLT4K
KzwhLS1FTlRJVFkgbGxjb3JuZXIgIiYjeDIzMUU7Ii0tPgorPCEtLUVOVElUWSBkcmNvcm4gIiYj
eDIzMUY7Ii0tPgorPCEtLUVOVElUWSBscmNvcm5lciAiJiN4MjMxRjsiLS0+Cis8IS0tRU5USVRZ
IGZyb3duICImI3gyMzIyOyItLT4KKzwhLS1FTlRJVFkgc2Zyb3duICImI3gyMzIyOyItLT4KKzwh
LS1FTlRJVFkgc21pbGUgIiYjeDIzMjM7Ii0tPgorPCEtLUVOVElUWSBzc21pbGUgIiYjeDIzMjM7
Ii0tPgorPCEtLUVOVElUWSBjeWxjdHkgIiYjeDIzMkQ7Ii0tPgorPCEtLUVOVElUWSBwcm9mYWxh
ciAiJiN4MjMyRTsiLS0+Cis8IS0tRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiLS0+Cis8IS0tRU5U
SVRZIG92YmFyICImI3gyMzNEOyItLT4KKzwhLS1FTlRJVFkgc29sYmFyICImI3gyMzNGOyItLT4K
KzwhLS1FTlRJVFkgYW5nemFyciAiJiN4MjM3QzsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdCAiJiN4
MjNCMDsiLS0+Cis8IS0tRU5USVRZIGxtb3VzdGFjaGUgIiYjeDIzQjA7Ii0tPgorPCEtLUVOVElU
WSBybW91c3QgIiYjeDIzQjE7Ii0tPgorPCEtLUVOVElUWSBybW91c3RhY2hlICImI3gyM0IxOyIt
LT4KKzwhLS1FTlRJVFkgdGJyayAiJiN4MjNCNDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFja2V0
ICImI3gyM0I0OyItLT4KKzwhLS1FTlRJVFkgYmJyayAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZ
IFVuZGVyQnJhY2tldCAiJiN4MjNCNTsiLS0+Cis8IS0tRU5USVRZIGJicmt0YnJrICImI3gyM0I2
OyItLT4KKzwhLS1FTlRJVFkgT3ZlclBhcmVudGhlc2lzICImI3gyM0RDOyItLT4KKzwhLS1FTlRJ
VFkgVW5kZXJQYXJlbnRoZXNpcyAiJiN4MjNERDsiLS0+Cis8IS0tRU5USVRZIE92ZXJCcmFjZSAi
JiN4MjNERTsiLS0+Cis8IS0tRU5USVRZIFVuZGVyQnJhY2UgIiYjeDIzREY7Ii0tPgorPCEtLUVO
VElUWSB0cnBleml1bSAiJiN4MjNFMjsiLS0+Cis8IS0tRU5USVRZIGVsaW50ZXJzICImI3gyM0U3
OyItLT4KKzwhLS1FTlRJVFkgYmxhbmsgIiYjeDI0MjM7Ii0tPgorPCEtLUVOVElUWSBvUyAiJiN4
MjRDODsiLS0+Cis8IS0tRU5USVRZIGNpcmNsZWRTICImI3gyNEM4OyItLT4KKzwhLS1FTlRJVFkg
Ym94aCAiJiN4MjUwMDsiLS0+Cis8IS0tRU5USVRZIEhvcml6b250YWxMaW5lICImI3gyNTAwOyIt
LT4KKzwhLS1FTlRJVFkgYm94diAiJiN4MjUwMjsiLS0+Cis8IS0tRU5USVRZIGJveGRyICImI3gy
NTBDOyItLT4KKzwhLS1FTlRJVFkgYm94ZGwgIiYjeDI1MTA7Ii0tPgorPCEtLUVOVElUWSBib3h1
ciAiJiN4MjUxNDsiLS0+Cis8IS0tRU5USVRZIGJveHVsICImI3gyNTE4OyItLT4KKzwhLS1FTlRJ
VFkgYm94dnIgIiYjeDI1MUM7Ii0tPgorPCEtLUVOVElUWSBib3h2bCAiJiN4MjUyNDsiLS0+Cis8
IS0tRU5USVRZIGJveGhkICImI3gyNTJDOyItLT4KKzwhLS1FTlRJVFkgYm94aHUgIiYjeDI1MzQ7
Ii0tPgorPCEtLUVOVElUWSBib3h2aCAiJiN4MjUzQzsiLS0+Cis8IS0tRU5USVRZIGJveEggIiYj
eDI1NTA7Ii0tPgorPCEtLUVOVElUWSBib3hWICImI3gyNTUxOyItLT4KKzwhLS1FTlRJVFkgYm94
ZFIgIiYjeDI1NTI7Ii0tPgorPCEtLUVOVElUWSBib3hEciAiJiN4MjU1MzsiLS0+Cis8IS0tRU5U
SVRZIGJveERSICImI3gyNTU0OyItLT4KKzwhLS1FTlRJVFkgYm94ZEwgIiYjeDI1NTU7Ii0tPgor
PCEtLUVOVElUWSBib3hEbCAiJiN4MjU1NjsiLS0+Cis8IS0tRU5USVRZIGJveERMICImI3gyNTU3
OyItLT4KKzwhLS1FTlRJVFkgYm94dVIgIiYjeDI1NTg7Ii0tPgorPCEtLUVOVElUWSBib3hVciAi
JiN4MjU1OTsiLS0+Cis8IS0tRU5USVRZIGJveFVSICImI3gyNTVBOyItLT4KKzwhLS1FTlRJVFkg
Ym94dUwgIiYjeDI1NUI7Ii0tPgorPCEtLUVOVElUWSBib3hVbCAiJiN4MjU1QzsiLS0+Cis8IS0t
RU5USVRZIGJveFVMICImI3gyNTVEOyItLT4KKzwhLS1FTlRJVFkgYm94dlIgIiYjeDI1NUU7Ii0t
PgorPCEtLUVOVElUWSBib3hWciAiJiN4MjU1RjsiLS0+Cis8IS0tRU5USVRZIGJveFZSICImI3gy
NTYwOyItLT4KKzwhLS1FTlRJVFkgYm94dkwgIiYjeDI1NjE7Ii0tPgorPCEtLUVOVElUWSBib3hW
bCAiJiN4MjU2MjsiLS0+Cis8IS0tRU5USVRZIGJveFZMICImI3gyNTYzOyItLT4KKzwhLS1FTlRJ
VFkgYm94SGQgIiYjeDI1NjQ7Ii0tPgorPCEtLUVOVElUWSBib3hoRCAiJiN4MjU2NTsiLS0+Cis8
IS0tRU5USVRZIGJveEhEICImI3gyNTY2OyItLT4KKzwhLS1FTlRJVFkgYm94SHUgIiYjeDI1Njc7
Ii0tPgorPCEtLUVOVElUWSBib3hoVSAiJiN4MjU2ODsiLS0+Cis8IS0tRU5USVRZIGJveEhVICIm
I3gyNTY5OyItLT4KKzwhLS1FTlRJVFkgYm94dkggIiYjeDI1NkE7Ii0tPgorPCEtLUVOVElUWSBi
b3hWaCAiJiN4MjU2QjsiLS0+Cis8IS0tRU5USVRZIGJveFZIICImI3gyNTZDOyItLT4KKzwhLS1F
TlRJVFkgdWhibGsgIiYjeDI1ODA7Ii0tPgorPCEtLUVOVElUWSBsaGJsayAiJiN4MjU4NDsiLS0+
Cis8IS0tRU5USVRZIGJsb2NrICImI3gyNTg4OyItLT4KKzwhLS1FTlRJVFkgYmxrMTQgIiYjeDI1
OTE7Ii0tPgorPCEtLUVOVElUWSBibGsxMiAiJiN4MjU5MjsiLS0+Cis8IS0tRU5USVRZIGJsazM0
ICImI3gyNTkzOyItLT4KKzwhLS1FTlRJVFkgc3F1ICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkg
c3F1YXJlICImI3gyNUExOyItLT4KKzwhLS1FTlRJVFkgU3F1YXJlICImI3gyNUExOyItLT4KKzwh
LS1FTlRJVFkgc3F1ZiAiJiN4MjVBQTsiLS0+Cis8IS0tRU5USVRZIHNxdWFyZiAiJiN4MjVBQTsi
LS0+Cis8IS0tRU5USVRZIGJsYWNrc3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRmls
bGVkVmVyeVNtYWxsU3F1YXJlICImI3gyNUFBOyItLT4KKzwhLS1FTlRJVFkgRW1wdHlWZXJ5U21h
bGxTcXVhcmUgIiYjeDI1QUI7Ii0tPgorPCEtLUVOVElUWSByZWN0ICImI3gyNUFEOyItLT4KKzwh
LS1FTlRJVFkgbWFya2VyICImI3gyNUFFOyItLT4KKzwhLS1FTlRJVFkgZmx0bnMgIiYjeDI1QjE7
Ii0tPgorPCEtLUVOVElUWSB4dXRyaSAiJiN4MjVCMzsiLS0+Cis8IS0tRU5USVRZIGJpZ3RyaWFu
Z2xldXAgIiYjeDI1QjM7Ii0tPgorPCEtLUVOVElUWSB1dHJpZiAiJiN4MjVCNDsiLS0+Cis8IS0t
RU5USVRZIGJsYWNrdHJpYW5nbGUgIiYjeDI1QjQ7Ii0tPgorPCEtLUVOVElUWSB1dHJpICImI3gy
NUI1OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGUgIiYjeDI1QjU7Ii0tPgorPCEtLUVOVElUWSBy
dHJpZiAiJiN4MjVCODsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVC
ODsiLS0+Cis8IS0tRU5USVRZIHJ0cmkgIiYjeDI1Qjk7Ii0tPgorPCEtLUVOVElUWSB0cmlhbmds
ZXJpZ2h0ICImI3gyNUI5OyItLT4KKzwhLS1FTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ii0tPgorPCEt
LUVOVElUWSBiaWd0cmlhbmdsZWRvd24gIiYjeDI1QkQ7Ii0tPgorPCEtLUVOVElUWSBkdHJpZiAi
JiN4MjVCRTsiLS0+Cis8IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyItLT4K
KzwhLS1FTlRJVFkgZHRyaSAiJiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIHRyaWFuZ2xlZG93biAi
JiN4MjVCRjsiLS0+Cis8IS0tRU5USVRZIGx0cmlmICImI3gyNUMyOyItLT4KKzwhLS1FTlRJVFkg
YmxhY2t0cmlhbmdsZWxlZnQgIiYjeDI1QzI7Ii0tPgorPCEtLUVOVElUWSBsdHJpICImI3gyNUMz
OyItLT4KKzwhLS1FTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyItLT4KKzwhLS1FTlRJVFkg
bG96ICImI3gyNUNBOyItLT4KKzwhLS1FTlRJVFkgbG96ZW5nZSAiJiN4MjVDQTsiLS0+Cis8IS0t
RU5USVRZIGNpciAiJiN4MjVDQjsiLS0+Cis8IS0tRU5USVRZIHRyaWRvdCAiJiN4MjVFQzsiLS0+
Cis8IS0tRU5USVRZIHhjaXJjICImI3gyNUVGOyItLT4KKzwhLS1FTlRJVFkgYmlnY2lyYyAiJiN4
MjVFRjsiLS0+Cis8IS0tRU5USVRZIHVsdHJpICImI3gyNUY4OyItLT4KKzwhLS1FTlRJVFkgdXJ0
cmkgIiYjeDI1Rjk7Ii0tPgorPCEtLUVOVElUWSBsbHRyaSAiJiN4MjVGQTsiLS0+Cis8IS0tRU5U
SVRZIEVtcHR5U21hbGxTcXVhcmUgIiYjeDI1RkI7Ii0tPgorPCEtLUVOVElUWSBGaWxsZWRTbWFs
bFNxdWFyZSAiJiN4MjVGQzsiLS0+Cis8IS0tRU5USVRZIHN0YXJmICImI3gyNjA1OyItLT4KKzwh
LS1FTlRJVFkgYmlnc3RhciAiJiN4MjYwNTsiLS0+Cis8IS0tRU5USVRZIHN0YXIgIiYjeDI2MDY7
Ii0tPgorPCEtLUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiLS0+Cis8IS0tRU5USVRZIGZlbWFsZSAi
JiN4MjY0MDsiLS0+Cis8IS0tRU5USVRZIG1hbGUgIiYjeDI2NDI7Ii0tPgorPCEtLUVOVElUWSBz
cGFkZXMgIiYjeDI2NjA7Ii0tPgorPCEtLUVOVElUWSBzcGFkZXN1aXQgIiYjeDI2NjA7Ii0tPgor
PCEtLUVOVElUWSBjbHVicyAiJiN4MjY2MzsiLS0+Cis8IS0tRU5USVRZIGNsdWJzdWl0ICImI3gy
NjYzOyItLT4KKzwhLS1FTlRJVFkgaGVhcnRzICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgaGVh
cnRzdWl0ICImI3gyNjY1OyItLT4KKzwhLS1FTlRJVFkgZGlhbXMgIiYjeDI2NjY7Ii0tPgorPCEt
LUVOVElUWSBkaWFtb25kc3VpdCAiJiN4MjY2NjsiLS0+Cis8IS0tRU5USVRZIHN1bmcgIiYjeDI2
NkE7Ii0tPgorPCEtLUVOVElUWSBmbGF0ICImI3gyNjZEOyItLT4KKzwhLS1FTlRJVFkgbmF0dXIg
IiYjeDI2NkU7Ii0tPgorPCEtLUVOVElUWSBuYXR1cmFsICImI3gyNjZFOyItLT4KKzwhLS1FTlRJ
VFkgc2hhcnAgIiYjeDI2NkY7Ii0tPgorPCEtLUVOVElUWSBjaGVjayAiJiN4MjcxMzsiLS0+Cis8
IS0tRU5USVRZIGNoZWNrbWFyayAiJiN4MjcxMzsiLS0+Cis8IS0tRU5USVRZIGNyb3NzICImI3gy
NzE3OyItLT4KKzwhLS1FTlRJVFkgbWFsdCAiJiN4MjcyMDsiLS0+Cis8IS0tRU5USVRZIG1hbHRl
c2UgIiYjeDI3MjA7Ii0tPgorPCEtLUVOVElUWSBzZXh0ICImI3gyNzM2OyItLT4KKzwhLS1FTlRJ
VFkgVmVydGljYWxTZXBhcmF0b3IgIiYjeDI3NTg7Ii0tPgorPCEtLUVOVElUWSBsYmJyayAiJiN4
Mjc3MjsiLS0+Cis8IS0tRU5USVRZIHJiYnJrICImI3gyNzczOyItLT4KKzwhLS1FTlRJVFkgYnNv
bGhzdWIgIiYjeDI3Qzg7Ii0tPgorPCEtLUVOVElUWSBzdXBoc29sICImI3gyN0M5OyItLT4KKzwh
LS1FTlRJVFkgbG9icmsgIiYjeDI3RTY7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG91YmxlQnJhY2tl
dCAiJiN4MjdFNjsiLS0+Cis8IS0tRU5USVRZIHJvYnJrICImI3gyN0U3OyItLT4KKzwhLS1FTlRJ
VFkgUmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyItLT4KKzwhLS1FTlRJVFkgbGFuZyAiJiN4
MjdFODsiLS0+Cis8IS0tRU5USVRZIExlZnRBbmdsZUJyYWNrZXQgIiYjeDI3RTg7Ii0tPgorPCEt
LUVOVElUWSBsYW5nbGUgIiYjeDI3RTg7Ii0tPgorPCEtLUVOVElUWSByYW5nICImI3gyN0U5OyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRBbmdsZUJyYWNrZXQgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElU
WSByYW5nbGUgIiYjeDI3RTk7Ii0tPgorPCEtLUVOVElUWSBMYW5nICImI3gyN0VBOyItLT4KKzwh
LS1FTlRJVFkgUmFuZyAiJiN4MjdFQjsiLS0+Cis8IS0tRU5USVRZIGxvYW5nICImI3gyN0VDOyIt
LT4KKzwhLS1FTlRJVFkgcm9hbmcgIiYjeDI3RUQ7Ii0tPgorPCEtLUVOVElUWSB4bGFyciAiJiN4
MjdGNTsiLS0+Cis8IS0tRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ii0tPgorPCEtLUVO
VElUWSBMb25nTGVmdEFycm93ICImI3gyN0Y1OyItLT4KKzwhLS1FTlRJVFkgeHJhcnIgIiYjeDI3
RjY7Ii0tPgorPCEtLUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiLS0+Cis8IS0tRU5U
SVRZIExvbmdSaWdodEFycm93ICImI3gyN0Y2OyItLT4KKzwhLS1FTlRJVFkgeGhhcnIgIiYjeDI3
Rjc7Ii0tPgorPCEtLUVOVElUWSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEt
LUVOVElUWSBMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3Rjc7Ii0tPgorPCEtLUVOVElUWSB4bEFy
ciAiJiN4MjdGODsiLS0+Cis8IS0tRU5USVRZIExvbmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ii0tPgor
PCEtLUVOVElUWSBEb3VibGVMb25nTGVmdEFycm93ICImI3gyN0Y4OyItLT4KKzwhLS1FTlRJVFkg
eHJBcnIgIiYjeDI3Rjk7Ii0tPgorPCEtLUVOVElUWSBMb25ncmlnaHRhcnJvdyAiJiN4MjdGOTsi
LS0+Cis8IS0tRU5USVRZIERvdWJsZUxvbmdSaWdodEFycm93ICImI3gyN0Y5OyItLT4KKzwhLS1F
TlRJVFkgeGhBcnIgIiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBMb25nbGVmdHJpZ2h0YXJyb3cg
IiYjeDI3RkE7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3cgIiYjeDI3
RkE7Ii0tPgorPCEtLUVOVElUWSB4bWFwICImI3gyN0ZDOyItLT4KKzwhLS1FTlRJVFkgbG9uZ21h
cHN0byAiJiN4MjdGQzsiLS0+Cis8IS0tRU5USVRZIGR6aWdyYXJyICImI3gyN0ZGOyItLT4KKzwh
LS1FTlRJVFkgbnZsQXJyICImI3gyOTAyOyItLT4KKzwhLS1FTlRJVFkgbnZyQXJyICImI3gyOTAz
OyItLT4KKzwhLS1FTlRJVFkgbnZIYXJyICImI3gyOTA0OyItLT4KKzwhLS1FTlRJVFkgTWFwICIm
I3gyOTA1OyItLT4KKzwhLS1FTlRJVFkgbGJhcnIgIiYjeDI5MEM7Ii0tPgorPCEtLUVOVElUWSBy
YmFyciAiJiN4MjkwRDsiLS0+Cis8IS0tRU5USVRZIGJrYXJvdyAiJiN4MjkwRDsiLS0+Cis8IS0t
RU5USVRZIGxCYXJyICImI3gyOTBFOyItLT4KKzwhLS1FTlRJVFkgckJhcnIgIiYjeDI5MEY7Ii0t
PgorPCEtLUVOVElUWSBkYmthcm93ICImI3gyOTBGOyItLT4KKzwhLS1FTlRJVFkgUkJhcnIgIiYj
eDI5MTA7Ii0tPgorPCEtLUVOVElUWSBkcmJrYXJvdyAiJiN4MjkxMDsiLS0+Cis8IS0tRU5USVRZ
IEREb3RyYWhkICImI3gyOTExOyItLT4KKzwhLS1FTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsi
LS0+Cis8IS0tRU5USVRZIERvd25BcnJvd0JhciAiJiN4MjkxMzsiLS0+Cis8IS0tRU5USVRZIFJh
cnJ0bCAiJiN4MjkxNjsiLS0+Cis8IS0tRU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiLS0+Cis8IS0t
RU5USVRZIHJhdGFpbCAiJiN4MjkxQTsiLS0+Cis8IS0tRU5USVRZIGxBdGFpbCAiJiN4MjkxQjsi
LS0+Cis8IS0tRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiLS0+Cis8IS0tRU5USVRZIGxhcnJmcyAi
JiN4MjkxRDsiLS0+Cis8IS0tRU5USVRZIHJhcnJmcyAiJiN4MjkxRTsiLS0+Cis8IS0tRU5USVRZ
IGxhcnJiZnMgIiYjeDI5MUY7Ii0tPgorPCEtLUVOVElUWSByYXJyYmZzICImI3gyOTIwOyItLT4K
KzwhLS1FTlRJVFkgbndhcmhrICImI3gyOTIzOyItLT4KKzwhLS1FTlRJVFkgbmVhcmhrICImI3gy
OTI0OyItLT4KKzwhLS1FTlRJVFkgc2VhcmhrICImI3gyOTI1OyItLT4KKzwhLS1FTlRJVFkgaGtz
ZWFyb3cgIiYjeDI5MjU7Ii0tPgorPCEtLUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ii0tPgorPCEt
LUVOVElUWSBoa3N3YXJvdyAiJiN4MjkyNjsiLS0+Cis8IS0tRU5USVRZIG53bmVhciAiJiN4Mjky
NzsiLS0+Cis8IS0tRU5USVRZIG5lc2VhciAiJiN4MjkyODsiLS0+Cis8IS0tRU5USVRZIHRvZWEg
IiYjeDI5Mjg7Ii0tPgorPCEtLUVOVElUWSBzZXN3YXIgIiYjeDI5Mjk7Ii0tPgorPCEtLUVOVElU
WSB0b3NhICImI3gyOTI5OyItLT4KKzwhLS1FTlRJVFkgc3dud2FyICImI3gyOTJBOyItLT4KKzwh
LS1FTlRJVFkgcmFycmMgIiYjeDI5MzM7Ii0tPgorPCEtLUVOVElUWSBucmFycmMgIiYjeDI5MzM7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgY3VkYXJyciAiJiN4MjkzNTsiLS0+Cis8IS0tRU5USVRZ
IGxkY2EgIiYjeDI5MzY7Ii0tPgorPCEtLUVOVElUWSByZGNhICImI3gyOTM3OyItLT4KKzwhLS1F
TlRJVFkgY3VkYXJybCAiJiN4MjkzODsiLS0+Cis8IS0tRU5USVRZIGxhcnJwbCAiJiN4MjkzOTsi
LS0+Cis8IS0tRU5USVRZIGN1cmFycm0gIiYjeDI5M0M7Ii0tPgorPCEtLUVOVElUWSBjdWxhcnJw
ICImI3gyOTNEOyItLT4KKzwhLS1FTlRJVFkgcmFycnBsICImI3gyOTQ1OyItLT4KKzwhLS1FTlRJ
VFkgaGFycmNpciAiJiN4Mjk0ODsiLS0+Cis8IS0tRU5USVRZIFVhcnJvY2lyICImI3gyOTQ5OyIt
LT4KKzwhLS1FTlRJVFkgbHVyZHNoYXIgIiYjeDI5NEE7Ii0tPgorPCEtLUVOVElUWSBsZHJ1c2hh
ciAiJiN4Mjk0QjsiLS0+Cis8IS0tRU5USVRZIExlZnRSaWdodFZlY3RvciAiJiN4Mjk0RTsiLS0+
Cis8IS0tRU5USVRZIFJpZ2h0VXBEb3duVmVjdG9yICImI3gyOTRGOyItLT4KKzwhLS1FTlRJVFkg
RG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiLS0+Cis8IS0tRU5USVRZIExlZnRVcERvd25W
ZWN0b3IgIiYjeDI5NTE7Ii0tPgorPCEtLUVOVElUWSBMZWZ0VmVjdG9yQmFyICImI3gyOTUyOyIt
LT4KKzwhLS1FTlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ii0tPgorPCEtLUVOVElUWSBS
aWdodFVwVmVjdG9yQmFyICImI3gyOTU0OyItLT4KKzwhLS1FTlRJVFkgUmlnaHREb3duVmVjdG9y
QmFyICImI3gyOTU1OyItLT4KKzwhLS1FTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7
Ii0tPgorPCEtLUVOVElUWSBEb3duUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTc7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VXBWZWN0b3JCYXIgIiYjeDI5NTg7Ii0tPgorPCEtLUVOVElUWSBMZWZ0RG93blZl
Y3RvckJhciAiJiN4Mjk1OTsiLS0+Cis8IS0tRU5USVRZIExlZnRUZWVWZWN0b3IgIiYjeDI5NUE7
Ii0tPgorPCEtLUVOVElUWSBSaWdodFRlZVZlY3RvciAiJiN4Mjk1QjsiLS0+Cis8IS0tRU5USVRZ
IFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ii0tPgorPCEtLUVOVElUWSBSaWdodERvd25UZWVW
ZWN0b3IgIiYjeDI5NUQ7Ii0tPgorPCEtLUVOVElUWSBEb3duTGVmdFRlZVZlY3RvciAiJiN4Mjk1
RTsiLS0+Cis8IS0tRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiLS0+Cis8IS0t
RU5USVRZIExlZnRVcFRlZVZlY3RvciAiJiN4Mjk2MDsiLS0+Cis8IS0tRU5USVRZIExlZnREb3du
VGVlVmVjdG9yICImI3gyOTYxOyItLT4KKzwhLS1FTlRJVFkgbEhhciAiJiN4Mjk2MjsiLS0+Cis8
IS0tRU5USVRZIHVIYXIgIiYjeDI5NjM7Ii0tPgorPCEtLUVOVElUWSBySGFyICImI3gyOTY0OyIt
LT4KKzwhLS1FTlRJVFkgZEhhciAiJiN4Mjk2NTsiLS0+Cis8IS0tRU5USVRZIGx1cnVoYXIgIiYj
eDI5NjY7Ii0tPgorPCEtLUVOVElUWSBsZHJkaGFyICImI3gyOTY3OyItLT4KKzwhLS1FTlRJVFkg
cnVsdWhhciAiJiN4Mjk2ODsiLS0+Cis8IS0tRU5USVRZIHJkbGRoYXIgIiYjeDI5Njk7Ii0tPgor
PCEtLUVOVElUWSBsaGFydWwgIiYjeDI5NkE7Ii0tPgorPCEtLUVOVElUWSBsbGhhcmQgIiYjeDI5
NkI7Ii0tPgorPCEtLUVOVElUWSByaGFydWwgIiYjeDI5NkM7Ii0tPgorPCEtLUVOVElUWSBscmhh
cmQgIiYjeDI5NkQ7Ii0tPgorPCEtLUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiLS0+Cis8IS0tRU5U
SVRZIFVwRXF1aWxpYnJpdW0gIiYjeDI5NkU7Ii0tPgorPCEtLUVOVElUWSBkdWhhciAiJiN4Mjk2
RjsiLS0+Cis8IS0tRU5USVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyItLT4KKzwh
LS1FTlRJVFkgUm91bmRJbXBsaWVzICImI3gyOTcwOyItLT4KKzwhLS1FTlRJVFkgZXJhcnIgIiYj
eDI5NzE7Ii0tPgorPCEtLUVOVElUWSBzaW1yYXJyICImI3gyOTcyOyItLT4KKzwhLS1FTlRJVFkg
bGFycnNpbSAiJiN4Mjk3MzsiLS0+Cis8IS0tRU5USVRZIHJhcnJzaW0gIiYjeDI5NzQ7Ii0tPgor
PCEtLUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ii0tPgorPCEtLUVOVElUWSBsdGxhcnIgIiYjeDI5
NzY7Ii0tPgorPCEtLUVOVElUWSBndHJhcnIgIiYjeDI5Nzg7Ii0tPgorPCEtLUVOVElUWSBzdWJy
YXJyICImI3gyOTc5OyItLT4KKzwhLS1FTlRJVFkgc3VwbGFyciAiJiN4Mjk3QjsiLS0+Cis8IS0t
RU5USVRZIGxmaXNodCAiJiN4Mjk3QzsiLS0+Cis8IS0tRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsi
LS0+Cis8IS0tRU5USVRZIHVmaXNodCAiJiN4Mjk3RTsiLS0+Cis8IS0tRU5USVRZIGRmaXNodCAi
JiN4Mjk3RjsiLS0+Cis8IS0tRU5USVRZIGxvcGFyICImI3gyOTg1OyItLT4KKzwhLS1FTlRJVFkg
cm9wYXIgIiYjeDI5ODY7Ii0tPgorPCEtLUVOVElUWSBsYnJrZSAiJiN4Mjk4QjsiLS0+Cis8IS0t
RU5USVRZIHJicmtlICImI3gyOThDOyItLT4KKzwhLS1FTlRJVFkgbGJya3NsdSAiJiN4Mjk4RDsi
LS0+Cis8IS0tRU5USVRZIHJicmtzbGQgIiYjeDI5OEU7Ii0tPgorPCEtLUVOVElUWSBsYnJrc2xk
ICImI3gyOThGOyItLT4KKzwhLS1FTlRJVFkgcmJya3NsdSAiJiN4Mjk5MDsiLS0+Cis8IS0tRU5U
SVRZIGxhbmdkICImI3gyOTkxOyItLT4KKzwhLS1FTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ii0tPgor
PCEtLUVOVElUWSBscGFybHQgIiYjeDI5OTM7Ii0tPgorPCEtLUVOVElUWSBycGFyZ3QgIiYjeDI5
OTQ7Ii0tPgorPCEtLUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ii0tPgorPCEtLUVOVElUWSBsdHJQ
YXIgIiYjeDI5OTY7Ii0tPgorPCEtLUVOVElUWSB2emlnemFnICImI3gyOTlBOyItLT4KKzwhLS1F
TlRJVFkgdmFuZ3J0ICImI3gyOTlDOyItLT4KKzwhLS1FTlRJVFkgYW5ncnR2YmQgIiYjeDI5OUQ7
Ii0tPgorPCEtLUVOVElUWSBhbmdlICImI3gyOUE0OyItLT4KKzwhLS1FTlRJVFkgcmFuZ2UgIiYj
eDI5QTU7Ii0tPgorPCEtLUVOVElUWSBkd2FuZ2xlICImI3gyOUE2OyItLT4KKzwhLS1FTlRJVFkg
dXdhbmdsZSAiJiN4MjlBNzsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFhICImI3gyOUE4OyItLT4K
KzwhLS1FTlRJVFkgYW5nbXNkYWIgIiYjeDI5QTk7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhYyAi
JiN4MjlBQTsiLS0+Cis8IS0tRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyItLT4KKzwhLS1FTlRJ
VFkgYW5nbXNkYWUgIiYjeDI5QUM7Ii0tPgorPCEtLUVOVElUWSBhbmdtc2RhZiAiJiN4MjlBRDsi
LS0+Cis8IS0tRU5USVRZIGFuZ21zZGFnICImI3gyOUFFOyItLT4KKzwhLS1FTlRJVFkgYW5nbXNk
YWggIiYjeDI5QUY7Ii0tPgorPCEtLUVOVElUWSBiZW1wdHl2ICImI3gyOUIwOyItLT4KKzwhLS1F
TlRJVFkgZGVtcHR5diAiJiN4MjlCMTsiLS0+Cis8IS0tRU5USVRZIGNlbXB0eXYgIiYjeDI5QjI7
Ii0tPgorPCEtLUVOVElUWSByYWVtcHR5diAiJiN4MjlCMzsiLS0+Cis8IS0tRU5USVRZIGxhZW1w
dHl2ICImI3gyOUI0OyItLT4KKzwhLS1FTlRJVFkgb2hiYXIgIiYjeDI5QjU7Ii0tPgorPCEtLUVO
VElUWSBvbWlkICImI3gyOUI2OyItLT4KKzwhLS1FTlRJVFkgb3BhciAiJiN4MjlCNzsiLS0+Cis8
IS0tRU5USVRZIG9wZXJwICImI3gyOUI5OyItLT4KKzwhLS1FTlRJVFkgb2xjcm9zcyAiJiN4MjlC
QjsiLS0+Cis8IS0tRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiLS0+Cis8IS0tRU5USVRZIG9sY2ly
ICImI3gyOUJFOyItLT4KKzwhLS1FTlRJVFkgb2ZjaXIgIiYjeDI5QkY7Ii0tPgorPCEtLUVOVElU
WSBvbHQgIiYjeDI5QzA7Ii0tPgorPCEtLUVOVElUWSBvZ3QgIiYjeDI5QzE7Ii0tPgorPCEtLUVO
VElUWSBjaXJzY2lyICImI3gyOUMyOyItLT4KKzwhLS1FTlRJVFkgY2lyRSAiJiN4MjlDMzsiLS0+
Cis8IS0tRU5USVRZIHNvbGIgIiYjeDI5QzQ7Ii0tPgorPCEtLUVOVElUWSBic29sYiAiJiN4MjlD
NTsiLS0+Cis8IS0tRU5USVRZIGJveGJveCAiJiN4MjlDOTsiLS0+Cis8IS0tRU5USVRZIHRyaXNi
ICImI3gyOUNEOyItLT4KKzwhLS1FTlRJVFkgcnRyaWx0cmkgIiYjeDI5Q0U7Ii0tPgorPCEtLUVO
VElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ii0tPgorPCEtLUVOVElUWSBOb3RMZWZ0VHJp
YW5nbGVCYXIgIiYjeDI5Q0Y7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgUmlnaHRUcmlhbmdsZUJh
ciAiJiN4MjlEMDsiLS0+Cis8IS0tRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgaWluZmluICImI3gyOURDOyItLT4KKzwhLS1FTlRJVFkg
aW5maW50aWUgIiYjeDI5REQ7Ii0tPgorPCEtLUVOVElUWSBudmluZmluICImI3gyOURFOyItLT4K
KzwhLS1FTlRJVFkgZXBhcnNsICImI3gyOUUzOyItLT4KKzwhLS1FTlRJVFkgc21lcGFyc2wgIiYj
eDI5RTQ7Ii0tPgorPCEtLUVOVElUWSBlcXZwYXJzbCAiJiN4MjlFNTsiLS0+Cis8IS0tRU5USVRZ
IGxvemYgIiYjeDI5RUI7Ii0tPgorPCEtLUVOVElUWSBibGFja2xvemVuZ2UgIiYjeDI5RUI7Ii0t
PgorPCEtLUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiLS0+Cis8IS0tRU5USVRZIGRzb2wg
IiYjeDI5RjY7Ii0tPgorPCEtLUVOVElUWSB4b2RvdCAiJiN4MkEwMDsiLS0+Cis8IS0tRU5USVRZ
IGJpZ29kb3QgIiYjeDJBMDA7Ii0tPgorPCEtLUVOVElUWSB4b3BsdXMgIiYjeDJBMDE7Ii0tPgor
PCEtLUVOVElUWSBiaWdvcGx1cyAiJiN4MkEwMTsiLS0+Cis8IS0tRU5USVRZIHhvdGltZSAiJiN4
MkEwMjsiLS0+Cis8IS0tRU5USVRZIGJpZ290aW1lcyAiJiN4MkEwMjsiLS0+Cis8IS0tRU5USVRZ
IHh1cGx1cyAiJiN4MkEwNDsiLS0+Cis8IS0tRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyItLT4K
KzwhLS1FTlRJVFkgeHNxY3VwICImI3gyQTA2OyItLT4KKzwhLS1FTlRJVFkgYmlnc3FjdXAgIiYj
eDJBMDY7Ii0tPgorPCEtLUVOVElUWSBxaW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgaWlp
aW50ICImI3gyQTBDOyItLT4KKzwhLS1FTlRJVFkgZnBhcnRpbnQgIiYjeDJBMEQ7Ii0tPgorPCEt
LUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiLS0+Cis8IS0tRU5USVRZIGF3aW50ICImI3gyQTEx
OyItLT4KKzwhLS1FTlRJVFkgcnBwb2xpbnQgIiYjeDJBMTI7Ii0tPgorPCEtLUVOVElUWSBzY3Bv
bGludCAiJiN4MkExMzsiLS0+Cis8IS0tRU5USVRZIG5wb2xpbnQgIiYjeDJBMTQ7Ii0tPgorPCEt
LUVOVElUWSBwb2ludGludCAiJiN4MkExNTsiLS0+Cis8IS0tRU5USVRZIHF1YXRpbnQgIiYjeDJB
MTY7Ii0tPgorPCEtLUVOVElUWSBpbnRsYXJoayAiJiN4MkExNzsiLS0+Cis8IS0tRU5USVRZIHBs
dXNjaXIgIiYjeDJBMjI7Ii0tPgorPCEtLUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiLS0+Cis8
IS0tRU5USVRZIHNpbXBsdXMgIiYjeDJBMjQ7Ii0tPgorPCEtLUVOVElUWSBwbHVzZHUgIiYjeDJB
MjU7Ii0tPgorPCEtLUVOVElUWSBwbHVzc2ltICImI3gyQTI2OyItLT4KKzwhLS1FTlRJVFkgcGx1
c3R3byAiJiN4MkEyNzsiLS0+Cis8IS0tRU5USVRZIG1jb21tYSAiJiN4MkEyOTsiLS0+Cis8IS0t
RU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ii0tPgorPCEtLUVOVElUWSBsb3BsdXMgIiYjeDJBMkQ7
Ii0tPgorPCEtLUVOVElUWSByb3BsdXMgIiYjeDJBMkU7Ii0tPgorPCEtLUVOVElUWSBDcm9zcyAi
JiN4MkEyRjsiLS0+Cis8IS0tRU5USVRZIHRpbWVzZCAiJiN4MkEzMDsiLS0+Cis8IS0tRU5USVRZ
IHRpbWVzYmFyICImI3gyQTMxOyItLT4KKzwhLS1FTlRJVFkgc21hc2hwICImI3gyQTMzOyItLT4K
KzwhLS1FTlRJVFkgbG90aW1lcyAiJiN4MkEzNDsiLS0+Cis8IS0tRU5USVRZIHJvdGltZXMgIiYj
eDJBMzU7Ii0tPgorPCEtLUVOVElUWSBvdGltZXNhcyAiJiN4MkEzNjsiLS0+Cis8IS0tRU5USVRZ
IE90aW1lcyAiJiN4MkEzNzsiLS0+Cis8IS0tRU5USVRZIG9kaXYgIiYjeDJBMzg7Ii0tPgorPCEt
LUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyItLT4KKzwhLS1FTlRJVFkgdHJpbWludXMgIiYjeDJB
M0E7Ii0tPgorPCEtLUVOVElUWSB0cml0aW1lICImI3gyQTNCOyItLT4KKzwhLS1FTlRJVFkgaXBy
b2QgIiYjeDJBM0M7Ii0tPgorPCEtLUVOVElUWSBpbnRwcm9kICImI3gyQTNDOyItLT4KKzwhLS1F
TlRJVFkgYW1hbGcgIiYjeDJBM0Y7Ii0tPgorPCEtLUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ii0t
PgorPCEtLUVOVElUWSBuY3VwICImI3gyQTQyOyItLT4KKzwhLS1FTlRJVFkgbmNhcCAiJiN4MkE0
MzsiLS0+Cis8IS0tRU5USVRZIGNhcGFuZCAiJiN4MkE0NDsiLS0+Cis8IS0tRU5USVRZIGN1cG9y
ICImI3gyQTQ1OyItLT4KKzwhLS1FTlRJVFkgY3VwY2FwICImI3gyQTQ2OyItLT4KKzwhLS1FTlRJ
VFkgY2FwY3VwICImI3gyQTQ3OyItLT4KKzwhLS1FTlRJVFkgY3VwYnJjYXAgIiYjeDJBNDg7Ii0t
PgorPCEtLUVOVElUWSBjYXBicmN1cCAiJiN4MkE0OTsiLS0+Cis8IS0tRU5USVRZIGN1cGN1cCAi
JiN4MkE0QTsiLS0+Cis8IS0tRU5USVRZIGNhcGNhcCAiJiN4MkE0QjsiLS0+Cis8IS0tRU5USVRZ
IGNjdXBzICImI3gyQTRDOyItLT4KKzwhLS1FTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ii0tPgorPCEt
LUVOVElUWSBjY3Vwc3NtICImI3gyQTUwOyItLT4KKzwhLS1FTlRJVFkgQW5kICImI3gyQTUzOyIt
LT4KKzwhLS1FTlRJVFkgT3IgIiYjeDJBNTQ7Ii0tPgorPCEtLUVOVElUWSBhbmRhbmQgIiYjeDJB
NTU7Ii0tPgorPCEtLUVOVElUWSBvcm9yICImI3gyQTU2OyItLT4KKzwhLS1FTlRJVFkgb3JzbG9w
ZSAiJiN4MkE1NzsiLS0+Cis8IS0tRU5USVRZIGFuZHNsb3BlICImI3gyQTU4OyItLT4KKzwhLS1F
TlRJVFkgYW5kdiAiJiN4MkE1QTsiLS0+Cis8IS0tRU5USVRZIG9ydiAiJiN4MkE1QjsiLS0+Cis8
IS0tRU5USVRZIGFuZGQgIiYjeDJBNUM7Ii0tPgorPCEtLUVOVElUWSBvcmQgIiYjeDJBNUQ7Ii0t
PgorPCEtLUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ii0tPgorPCEtLUVOVElUWSBzZG90ZSAiJiN4
MkE2NjsiLS0+Cis8IS0tRU5USVRZIHNpbWRvdCAiJiN4MkE2QTsiLS0+Cis8IS0tRU5USVRZIGNv
bmdkb3QgIiYjeDJBNkQ7Ii0tPgorPCEtLUVOVElUWSBuY29uZ2RvdCAiJiN4MkE2RDsmI3gzMzg7
Ii0tPgorPCEtLUVOVElUWSBlYXN0ZXIgIiYjeDJBNkU7Ii0tPgorPCEtLUVOVElUWSBhcGFjaXIg
IiYjeDJBNkY7Ii0tPgorPCEtLUVOVElUWSBhcEUgIiYjeDJBNzA7Ii0tPgorPCEtLUVOVElUWSBu
YXBFICImI3gyQTcwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGVwbHVzICImI3gyQTcxOyItLT4K
KzwhLS1FTlRJVFkgcGx1c2UgIiYjeDJBNzI7Ii0tPgorPCEtLUVOVElUWSBFc2ltICImI3gyQTcz
OyItLT4KKzwhLS1FTlRJVFkgQ29sb25lICImI3gyQTc0OyItLT4KKzwhLS1FTlRJVFkgRXF1YWwg
IiYjeDJBNzU7Ii0tPgorPCEtLUVOVElUWSBlRERvdCAiJiN4MkE3NzsiLS0+Cis8IS0tRU5USVRZ
IGRkb3RzZXEgIiYjeDJBNzc7Ii0tPgorPCEtLUVOVElUWSBlcXVpdkREICImI3gyQTc4OyItLT4K
KzwhLS1FTlRJVFkgbHRjaXIgIiYjeDJBNzk7Ii0tPgorPCEtLUVOVElUWSBndGNpciAiJiN4MkE3
QTsiLS0+Cis8IS0tRU5USVRZIGx0cXVlc3QgIiYjeDJBN0I7Ii0tPgorPCEtLUVOVElUWSBndHF1
ZXN0ICImI3gyQTdDOyItLT4KKzwhLS1FTlRJVFkgbGVzICImI3gyQTdEOyItLT4KKzwhLS1FTlRJ
VFkgTGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7Ii0tPgorPCEtLUVOVElUWSBsZXFzbGFudCAiJiN4
MkE3RDsiLS0+Cis8IS0tRU5USVRZIG5sZXMgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgTm90TGVzc1NsYW50RXF1YWwgIiYjeDJBN0Q7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbmxl
cXNsYW50ICImI3gyQTdEOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIGdlcyAiJiN4MkE3RTsiLS0+
Cis8IS0tRU5USVRZIEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyItLT4KKzwhLS1FTlRJVFkg
Z2Vxc2xhbnQgIiYjeDJBN0U7Ii0tPgorPCEtLUVOVElUWSBuZ2VzICImI3gyQTdFOyYjeDMzODsi
LS0+Cis8IS0tRU5USVRZIE5vdEdyZWF0ZXJTbGFudEVxdWFsICImI3gyQTdFOyYjeDMzODsiLS0+
Cis8IS0tRU5USVRZIG5nZXFzbGFudCAiJiN4MkE3RTsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBs
ZXNkb3QgIiYjeDJBN0Y7Ii0tPgorPCEtLUVOVElUWSBnZXNkb3QgIiYjeDJBODA7Ii0tPgorPCEt
LUVOVElUWSBsZXNkb3RvICImI3gyQTgxOyItLT4KKzwhLS1FTlRJVFkgZ2VzZG90byAiJiN4MkE4
MjsiLS0+Cis8IS0tRU5USVRZIGxlc2RvdG9yICImI3gyQTgzOyItLT4KKzwhLS1FTlRJVFkgZ2Vz
ZG90b2wgIiYjeDJBODQ7Ii0tPgorPCEtLUVOVElUWSBsYXAgIiYjeDJBODU7Ii0tPgorPCEtLUVO
VElUWSBsZXNzYXBwcm94ICImI3gyQTg1OyItLT4KKzwhLS1FTlRJVFkgZ2FwICImI3gyQTg2OyIt
LT4KKzwhLS1FTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyItLT4KKzwhLS1FTlRJVFkgbG5lICIm
I3gyQTg3OyItLT4KKzwhLS1FTlRJVFkgbG5lcSAiJiN4MkE4NzsiLS0+Cis8IS0tRU5USVRZIGdu
ZSAiJiN4MkE4ODsiLS0+Cis8IS0tRU5USVRZIGduZXEgIiYjeDJBODg7Ii0tPgorPCEtLUVOVElU
WSBsbmFwICImI3gyQTg5OyItLT4KKzwhLS1FTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ii0tPgor
PCEtLUVOVElUWSBnbmFwICImI3gyQThBOyItLT4KKzwhLS1FTlRJVFkgZ25hcHByb3ggIiYjeDJB
OEE7Ii0tPgorPCEtLUVOVElUWSBsRWcgIiYjeDJBOEI7Ii0tPgorPCEtLUVOVElUWSBsZXNzZXFx
Z3RyICImI3gyQThCOyItLT4KKzwhLS1FTlRJVFkgZ0VsICImI3gyQThDOyItLT4KKzwhLS1FTlRJ
VFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiLS0+Cis8IS0tRU5USVRZIGxzaW1lICImI3gyQThEOyIt
LT4KKzwhLS1FTlRJVFkgZ3NpbWUgIiYjeDJBOEU7Ii0tPgorPCEtLUVOVElUWSBsc2ltZyAiJiN4
MkE4RjsiLS0+Cis8IS0tRU5USVRZIGdzaW1sICImI3gyQTkwOyItLT4KKzwhLS1FTlRJVFkgbGdF
ICImI3gyQTkxOyItLT4KKzwhLS1FTlRJVFkgZ2xFICImI3gyQTkyOyItLT4KKzwhLS1FTlRJVFkg
bGVzZ2VzICImI3gyQTkzOyItLT4KKzwhLS1FTlRJVFkgZ2VzbGVzICImI3gyQTk0OyItLT4KKzwh
LS1FTlRJVFkgZWxzICImI3gyQTk1OyItLT4KKzwhLS1FTlRJVFkgZXFzbGFudGxlc3MgIiYjeDJB
OTU7Ii0tPgorPCEtLUVOVElUWSBlZ3MgIiYjeDJBOTY7Ii0tPgorPCEtLUVOVElUWSBlcXNsYW50
Z3RyICImI3gyQTk2OyItLT4KKzwhLS1FTlRJVFkgZWxzZG90ICImI3gyQTk3OyItLT4KKzwhLS1F
TlRJVFkgZWdzZG90ICImI3gyQTk4OyItLT4KKzwhLS1FTlRJVFkgZWwgIiYjeDJBOTk7Ii0tPgor
PCEtLUVOVElUWSBlZyAiJiN4MkE5QTsiLS0+Cis8IS0tRU5USVRZIHNpbWwgIiYjeDJBOUQ7Ii0t
PgorPCEtLUVOVElUWSBzaW1nICImI3gyQTlFOyItLT4KKzwhLS1FTlRJVFkgc2ltbEUgIiYjeDJB
OUY7Ii0tPgorPCEtLUVOVElUWSBzaW1nRSAiJiN4MkFBMDsiLS0+Cis8IS0tRU5USVRZIExlc3NM
ZXNzICImI3gyQUExOyItLT4KKzwhLS1FTlRJVFkgTm90TmVzdGVkTGVzc0xlc3MgIiYjeDJBQTE7
JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7Ii0tPgorPCEt
LUVOVElUWSBOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ii0tPgorPCEt
LUVOVElUWSBnbGogIiYjeDJBQTQ7Ii0tPgorPCEtLUVOVElUWSBnbGEgIiYjeDJBQTU7Ii0tPgor
PCEtLUVOVElUWSBsdGNjICImI3gyQUE2OyItLT4KKzwhLS1FTlRJVFkgZ3RjYyAiJiN4MkFBNzsi
LS0+Cis8IS0tRU5USVRZIGxlc2NjICImI3gyQUE4OyItLT4KKzwhLS1FTlRJVFkgZ2VzY2MgIiYj
eDJBQTk7Ii0tPgorPCEtLUVOVElUWSBzbXQgIiYjeDJBQUE7Ii0tPgorPCEtLUVOVElUWSBsYXQg
IiYjeDJBQUI7Ii0tPgorPCEtLUVOVElUWSBzbXRlICImI3gyQUFDOyItLT4KKzwhLS1FTlRJVFkg
c210ZXMgIiYjeDJBQUM7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIGxhdGUgIiYjeDJBQUQ7Ii0t
PgorPCEtLUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgYnVt
cEUgIiYjeDJBQUU7Ii0tPgorPCEtLUVOVElUWSBwcmUgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElU
WSBwcmVjZXEgIiYjeDJBQUY7Ii0tPgorPCEtLUVOVElUWSBQcmVjZWRlc0VxdWFsICImI3gyQUFG
OyItLT4KKzwhLS1FTlRJVFkgbnByZSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBu
cHJlY2VxICImI3gyQUFGOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIE5vdFByZWNlZGVzRXF1YWwg
IiYjeDJBQUY7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgc2NlICImI3gyQUIwOyItLT4KKzwhLS1F
TlRJVFkgc3VjY2VxICImI3gyQUIwOyItLT4KKzwhLS1FTlRJVFkgU3VjY2VlZHNFcXVhbCAiJiN4
MkFCMDsiLS0+Cis8IS0tRU5USVRZIG5zY2UgIiYjeDJBQjA7JiN4MzM4OyItLT4KKzwhLS1FTlRJ
VFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBOb3RTdWNjZWVkc0Vx
dWFsICImI3gyQUIwOyYjeDMzODsiLS0+Cis8IS0tRU5USVRZIHByRSAiJiN4MkFCMzsiLS0+Cis8
IS0tRU5USVRZIHNjRSAiJiN4MkFCNDsiLS0+Cis8IS0tRU5USVRZIHBybkUgIiYjeDJBQjU7Ii0t
PgorPCEtLUVOVElUWSBwcmVjbmVxcSAiJiN4MkFCNTsiLS0+Cis8IS0tRU5USVRZIHNjbkUgIiYj
eDJBQjY7Ii0tPgorPCEtLUVOVElUWSBzdWNjbmVxcSAiJiN4MkFCNjsiLS0+Cis8IS0tRU5USVRZ
IHByYXAgIiYjeDJBQjc7Ii0tPgorPCEtLUVOVElUWSBwcmVjYXBwcm94ICImI3gyQUI3OyItLT4K
KzwhLS1FTlRJVFkgc2NhcCAiJiN4MkFCODsiLS0+Cis8IS0tRU5USVRZIHN1Y2NhcHByb3ggIiYj
eDJBQjg7Ii0tPgorPCEtLUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiLS0+Cis8IS0tRU5USVRZIHBy
ZWNuYXBwcm94ICImI3gyQUI5OyItLT4KKzwhLS1FTlRJVFkgc2NuYXAgIiYjeDJBQkE7Ii0tPgor
PCEtLUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiLS0+Cis8IS0tRU5USVRZIFByICImI3gy
QUJCOyItLT4KKzwhLS1FTlRJVFkgU2MgIiYjeDJBQkM7Ii0tPgorPCEtLUVOVElUWSBzdWJkb3Qg
IiYjeDJBQkQ7Ii0tPgorPCEtLUVOVElUWSBzdXBkb3QgIiYjeDJBQkU7Ii0tPgorPCEtLUVOVElU
WSBzdWJwbHVzICImI3gyQUJGOyItLT4KKzwhLS1FTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiLS0+
Cis8IS0tRU5USVRZIHN1Ym11bHQgIiYjeDJBQzE7Ii0tPgorPCEtLUVOVElUWSBzdXBtdWx0ICIm
I3gyQUMyOyItLT4KKzwhLS1FTlRJVFkgc3ViZWRvdCAiJiN4MkFDMzsiLS0+Cis8IS0tRU5USVRZ
IHN1cGVkb3QgIiYjeDJBQzQ7Ii0tPgorPCEtLUVOVElUWSBzdWJFICImI3gyQUM1OyItLT4KKzwh
LS1FTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyItLT4KKzwhLS1FTlRJVFkgbnN1YkUgIiYjeDJB
QzU7JiN4MzM4OyItLT4KKzwhLS1FTlRJVFkgbnN1YnNldGVxcSAiJiN4MkFDNTsmI3gzMzg7Ii0t
PgorPCEtLUVOVElUWSBzdXBFICImI3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0ZXFxICIm
I3gyQUM2OyItLT4KKzwhLS1FTlRJVFkgbnN1cEUgIiYjeDJBQzY7JiN4MzM4OyItLT4KKzwhLS1F
TlRJVFkgbnN1cHNldGVxcSAiJiN4MkFDNjsmI3gzMzg7Ii0tPgorPCEtLUVOVElUWSBzdWJzaW0g
IiYjeDJBQzc7Ii0tPgorPCEtLUVOVElUWSBzdXBzaW0gIiYjeDJBQzg7Ii0tPgorPCEtLUVOVElU
WSBzdWJuRSAiJiN4MkFDQjsiLS0+Cis8IS0tRU5USVRZIHN1YnNldG5lcXEgIiYjeDJBQ0I7Ii0t
PgorPCEtLUVOVElUWSB2c3VibkUgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHZh
cnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiLS0+Cis8IS0tRU5USVRZIHN1cG5FICImI3gy
QUNDOyItLT4KKzwhLS1FTlRJVFkgc3Vwc2V0bmVxcSAiJiN4MkFDQzsiLS0+Cis8IS0tRU5USVRZ
IHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgdmFyc3Vwc2V0bmVxcSAi
JiN4MkFDQzsmI3hGRTAwOyItLT4KKzwhLS1FTlRJVFkgY3N1YiAiJiN4MkFDRjsiLS0+Cis8IS0t
RU5USVRZIGNzdXAgIiYjeDJBRDA7Ii0tPgorPCEtLUVOVElUWSBjc3ViZSAiJiN4MkFEMTsiLS0+
Cis8IS0tRU5USVRZIGNzdXBlICImI3gyQUQyOyItLT4KKzwhLS1FTlRJVFkgc3Vic3VwICImI3gy
QUQzOyItLT4KKzwhLS1FTlRJVFkgc3Vwc3ViICImI3gyQUQ0OyItLT4KKzwhLS1FTlRJVFkgc3Vi
c3ViICImI3gyQUQ1OyItLT4KKzwhLS1FTlRJVFkgc3Vwc3VwICImI3gyQUQ2OyItLT4KKzwhLS1F
TlRJVFkgc3VwaHN1YiAiJiN4MkFENzsiLS0+Cis8IS0tRU5USVRZIHN1cGRzdWIgIiYjeDJBRDg7
Ii0tPgorPCEtLUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiLS0+Cis8IS0tRU5USVRZIHRvcGZvcmsg
IiYjeDJBREE7Ii0tPgorPCEtLUVOVElUWSBtbGNwICImI3gyQURCOyItLT4KKzwhLS1FTlRJVFkg
RGFzaHYgIiYjeDJBRTQ7Ii0tPgorPCEtLUVOVElUWSBEb3VibGVMZWZ0VGVlICImI3gyQUU0OyIt
LT4KKzwhLS1FTlRJVFkgVmRhc2hsICImI3gyQUU2OyItLT4KKzwhLS1FTlRJVFkgQmFydiAiJiN4
MkFFNzsiLS0+Cis8IS0tRU5USVRZIHZCYXIgIiYjeDJBRTg7Ii0tPgorPCEtLUVOVElUWSB2QmFy
diAiJiN4MkFFOTsiLS0+Cis8IS0tRU5USVRZIFZiYXIgIiYjeDJBRUI7Ii0tPgorPCEtLUVOVElU
WSBOb3QgIiYjeDJBRUM7Ii0tPgorPCEtLUVOVElUWSBiTm90ICImI3gyQUVEOyItLT4KKzwhLS1F
TlRJVFkgcm5taWQgIiYjeDJBRUU7Ii0tPgorPCEtLUVOVElUWSBjaXJtaWQgIiYjeDJBRUY7Ii0t
PgorPCEtLUVOVElUWSBtaWRjaXIgIiYjeDJBRjA7Ii0tPgorPCEtLUVOVElUWSB0b3BjaXIgIiYj
eDJBRjE7Ii0tPgorPCEtLUVOVElUWSBuaHBhciAiJiN4MkFGMjsiLS0+Cis8IS0tRU5USVRZIHBh
cnNpbSAiJiN4MkFGMzsiLS0+Cis8IS0tRU5USVRZIHBhcnNsICImI3gyQUZEOyItLT4KKzwhLS1F
TlRJVFkgbnBhcnNsICImI3gyQUZEOyYjeDIwRTU7Ii0tPgorPCEtLUVOVElUWSBmZmxpZyAiJiN4
RkIwMDsiLS0+Cis8IS0tRU5USVRZIGZpbGlnICImI3hGQjAxOyItLT4KKzwhLS1FTlRJVFkgZmxs
aWcgIiYjeEZCMDI7Ii0tPgorPCEtLUVOVElUWSBmZmlsaWcgIiYjeEZCMDM7Ii0tPgorPCEtLUVO
VElUWSBmZmxsaWcgIiYjeEZCMDQ7Ii0tPgorPCEtLUVOVElUWSBBc2NyICImI3gxRDQ5QzsiLS0+
Cis8IS0tRU5USVRZIENzY3IgIiYjeDFENDlFOyItLT4KKzwhLS1FTlRJVFkgRHNjciAiJiN4MUQ0
OUY7Ii0tPgorPCEtLUVOVElUWSBHc2NyICImI3gxRDRBMjsiLS0+Cis8IS0tRU5USVRZIEpzY3Ig
IiYjeDFENEE1OyItLT4KKzwhLS1FTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ii0tPgorPCEtLUVOVElU
WSBOc2NyICImI3gxRDRBOTsiLS0+Cis8IS0tRU5USVRZIE9zY3IgIiYjeDFENEFBOyItLT4KKzwh
LS1FTlRJVFkgUHNjciAiJiN4MUQ0QUI7Ii0tPgorPCEtLUVOVElUWSBRc2NyICImI3gxRDRBQzsi
LS0+Cis8IS0tRU5USVRZIFNzY3IgIiYjeDFENEFFOyItLT4KKzwhLS1FTlRJVFkgVHNjciAiJiN4
MUQ0QUY7Ii0tPgorPCEtLUVOVElUWSBVc2NyICImI3gxRDRCMDsiLS0+Cis8IS0tRU5USVRZIFZz
Y3IgIiYjeDFENEIxOyItLT4KKzwhLS1FTlRJVFkgV3NjciAiJiN4MUQ0QjI7Ii0tPgorPCEtLUVO
VElUWSBYc2NyICImI3gxRDRCMzsiLS0+Cis8IS0tRU5USVRZIFlzY3IgIiYjeDFENEI0OyItLT4K
KzwhLS1FTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ii0tPgorPCEtLUVOVElUWSBhc2NyICImI3gxRDRC
NjsiLS0+Cis8IS0tRU5USVRZIGJzY3IgIiYjeDFENEI3OyItLT4KKzwhLS1FTlRJVFkgY3NjciAi
JiN4MUQ0Qjg7Ii0tPgorPCEtLUVOVElUWSBkc2NyICImI3gxRDRCOTsiLS0+Cis8IS0tRU5USVRZ
IGZzY3IgIiYjeDFENEJCOyItLT4KKzwhLS1FTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ii0tPgorPCEt
LUVOVElUWSBpc2NyICImI3gxRDRCRTsiLS0+Cis8IS0tRU5USVRZIGpzY3IgIiYjeDFENEJGOyIt
LT4KKzwhLS1FTlRJVFkga3NjciAiJiN4MUQ0QzA7Ii0tPgorPCEtLUVOVElUWSBsc2NyICImI3gx
RDRDMTsiLS0+Cis8IS0tRU5USVRZIG1zY3IgIiYjeDFENEMyOyItLT4KKzwhLS1FTlRJVFkgbnNj
ciAiJiN4MUQ0QzM7Ii0tPgorPCEtLUVOVElUWSBwc2NyICImI3gxRDRDNTsiLS0+Cis8IS0tRU5U
SVRZIHFzY3IgIiYjeDFENEM2OyItLT4KKzwhLS1FTlRJVFkgcnNjciAiJiN4MUQ0Qzc7Ii0tPgor
PCEtLUVOVElUWSBzc2NyICImI3gxRDRDODsiLS0+Cis8IS0tRU5USVRZIHRzY3IgIiYjeDFENEM5
OyItLT4KKzwhLS1FTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ii0tPgorPCEtLUVOVElUWSB2c2NyICIm
I3gxRDRDQjsiLS0+Cis8IS0tRU5USVRZIHdzY3IgIiYjeDFENENDOyItLT4KKzwhLS1FTlRJVFkg
eHNjciAiJiN4MUQ0Q0Q7Ii0tPgorPCEtLUVOVElUWSB5c2NyICImI3gxRDRDRTsiLS0+Cis8IS0t
RU5USVRZIHpzY3IgIiYjeDFENENGOyItLT4KKzwhLS1FTlRJVFkgQWZyICImI3gxRDUwNDsiLS0+
Cis8IS0tRU5USVRZIEJmciAiJiN4MUQ1MDU7Ii0tPgorPCEtLUVOVElUWSBEZnIgIiYjeDFENTA3
OyItLT4KKzwhLS1FTlRJVFkgRWZyICImI3gxRDUwODsiLS0+Cis8IS0tRU5USVRZIEZmciAiJiN4
MUQ1MDk7Ii0tPgorPCEtLUVOVElUWSBHZnIgIiYjeDFENTBBOyItLT4KKzwhLS1FTlRJVFkgSmZy
ICImI3gxRDUwRDsiLS0+Cis8IS0tRU5USVRZIEtmciAiJiN4MUQ1MEU7Ii0tPgorPCEtLUVOVElU
WSBMZnIgIiYjeDFENTBGOyItLT4KKzwhLS1FTlRJVFkgTWZyICImI3gxRDUxMDsiLS0+Cis8IS0t
RU5USVRZIE5mciAiJiN4MUQ1MTE7Ii0tPgorPCEtLUVOVElUWSBPZnIgIiYjeDFENTEyOyItLT4K
KzwhLS1FTlRJVFkgUGZyICImI3gxRDUxMzsiLS0+Cis8IS0tRU5USVRZIFFmciAiJiN4MUQ1MTQ7
Ii0tPgorPCEtLUVOVElUWSBTZnIgIiYjeDFENTE2OyItLT4KKzwhLS1FTlRJVFkgVGZyICImI3gx
RDUxNzsiLS0+Cis8IS0tRU5USVRZIFVmciAiJiN4MUQ1MTg7Ii0tPgorPCEtLUVOVElUWSBWZnIg
IiYjeDFENTE5OyItLT4KKzwhLS1FTlRJVFkgV2ZyICImI3gxRDUxQTsiLS0+Cis8IS0tRU5USVRZ
IFhmciAiJiN4MUQ1MUI7Ii0tPgorPCEtLUVOVElUWSBZZnIgIiYjeDFENTFDOyItLT4KKzwhLS1F
TlRJVFkgYWZyICImI3gxRDUxRTsiLS0+Cis8IS0tRU5USVRZIGJmciAiJiN4MUQ1MUY7Ii0tPgor
PCEtLUVOVElUWSBjZnIgIiYjeDFENTIwOyItLT4KKzwhLS1FTlRJVFkgZGZyICImI3gxRDUyMTsi
LS0+Cis8IS0tRU5USVRZIGVmciAiJiN4MUQ1MjI7Ii0tPgorPCEtLUVOVElUWSBmZnIgIiYjeDFE
NTIzOyItLT4KKzwhLS1FTlRJVFkgZ2ZyICImI3gxRDUyNDsiLS0+Cis8IS0tRU5USVRZIGhmciAi
JiN4MUQ1MjU7Ii0tPgorPCEtLUVOVElUWSBpZnIgIiYjeDFENTI2OyItLT4KKzwhLS1FTlRJVFkg
amZyICImI3gxRDUyNzsiLS0+Cis8IS0tRU5USVRZIGtmciAiJiN4MUQ1Mjg7Ii0tPgorPCEtLUVO
VElUWSBsZnIgIiYjeDFENTI5OyItLT4KKzwhLS1FTlRJVFkgbWZyICImI3gxRDUyQTsiLS0+Cis8
IS0tRU5USVRZIG5mciAiJiN4MUQ1MkI7Ii0tPgorPCEtLUVOVElUWSBvZnIgIiYjeDFENTJDOyIt
LT4KKzwhLS1FTlRJVFkgcGZyICImI3gxRDUyRDsiLS0+Cis8IS0tRU5USVRZIHFmciAiJiN4MUQ1
MkU7Ii0tPgorPCEtLUVOVElUWSByZnIgIiYjeDFENTJGOyItLT4KKzwhLS1FTlRJVFkgc2ZyICIm
I3gxRDUzMDsiLS0+Cis8IS0tRU5USVRZIHRmciAiJiN4MUQ1MzE7Ii0tPgorPCEtLUVOVElUWSB1
ZnIgIiYjeDFENTMyOyItLT4KKzwhLS1FTlRJVFkgdmZyICImI3gxRDUzMzsiLS0+Cis8IS0tRU5U
SVRZIHdmciAiJiN4MUQ1MzQ7Ii0tPgorPCEtLUVOVElUWSB4ZnIgIiYjeDFENTM1OyItLT4KKzwh
LS1FTlRJVFkgeWZyICImI3gxRDUzNjsiLS0+Cis8IS0tRU5USVRZIHpmciAiJiN4MUQ1Mzc7Ii0t
PgorPCEtLUVOVElUWSBBb3BmICImI3gxRDUzODsiLS0+Cis8IS0tRU5USVRZIEJvcGYgIiYjeDFE
NTM5OyItLT4KKzwhLS1FTlRJVFkgRG9wZiAiJiN4MUQ1M0I7Ii0tPgorPCEtLUVOVElUWSBFb3Bm
ICImI3gxRDUzQzsiLS0+Cis8IS0tRU5USVRZIEZvcGYgIiYjeDFENTNEOyItLT4KKzwhLS1FTlRJ
VFkgR29wZiAiJiN4MUQ1M0U7Ii0tPgorPCEtLUVOVElUWSBJb3BmICImI3gxRDU0MDsiLS0+Cis8
IS0tRU5USVRZIEpvcGYgIiYjeDFENTQxOyItLT4KKzwhLS1FTlRJVFkgS29wZiAiJiN4MUQ1NDI7
Ii0tPgorPCEtLUVOVElUWSBMb3BmICImI3gxRDU0MzsiLS0+Cis8IS0tRU5USVRZIE1vcGYgIiYj
eDFENTQ0OyItLT4KKzwhLS1FTlRJVFkgT29wZiAiJiN4MUQ1NDY7Ii0tPgorPCEtLUVOVElUWSBT
b3BmICImI3gxRDU0QTsiLS0+Cis8IS0tRU5USVRZIFRvcGYgIiYjeDFENTRCOyItLT4KKzwhLS1F
TlRJVFkgVW9wZiAiJiN4MUQ1NEM7Ii0tPgorPCEtLUVOVElUWSBWb3BmICImI3gxRDU0RDsiLS0+
Cis8IS0tRU5USVRZIFdvcGYgIiYjeDFENTRFOyItLT4KKzwhLS1FTlRJVFkgWG9wZiAiJiN4MUQ1
NEY7Ii0tPgorPCEtLUVOVElUWSBZb3BmICImI3gxRDU1MDsiLS0+Cis8IS0tRU5USVRZIGFvcGYg
IiYjeDFENTUyOyItLT4KKzwhLS1FTlRJVFkgYm9wZiAiJiN4MUQ1NTM7Ii0tPgorPCEtLUVOVElU
WSBjb3BmICImI3gxRDU1NDsiLS0+Cis8IS0tRU5USVRZIGRvcGYgIiYjeDFENTU1OyItLT4KKzwh
LS1FTlRJVFkgZW9wZiAiJiN4MUQ1NTY7Ii0tPgorPCEtLUVOVElUWSBmb3BmICImI3gxRDU1Nzsi
LS0+Cis8IS0tRU5USVRZIGdvcGYgIiYjeDFENTU4OyItLT4KKzwhLS1FTlRJVFkgaG9wZiAiJiN4
MUQ1NTk7Ii0tPgorPCEtLUVOVElUWSBpb3BmICImI3gxRDU1QTsiLS0+Cis8IS0tRU5USVRZIGpv
cGYgIiYjeDFENTVCOyItLT4KKzwhLS1FTlRJVFkga29wZiAiJiN4MUQ1NUM7Ii0tPgorPCEtLUVO
VElUWSBsb3BmICImI3gxRDU1RDsiLS0+Cis8IS0tRU5USVRZIG1vcGYgIiYjeDFENTVFOyItLT4K
KzwhLS1FTlRJVFkgbm9wZiAiJiN4MUQ1NUY7Ii0tPgorPCEtLUVOVElUWSBvb3BmICImI3gxRDU2
MDsiLS0+Cis8IS0tRU5USVRZIHBvcGYgIiYjeDFENTYxOyItLT4KKzwhLS1FTlRJVFkgcW9wZiAi
JiN4MUQ1NjI7Ii0tPgorPCEtLUVOVElUWSByb3BmICImI3gxRDU2MzsiLS0+Cis8IS0tRU5USVRZ
IHNvcGYgIiYjeDFENTY0OyItLT4KKzwhLS1FTlRJVFkgdG9wZiAiJiN4MUQ1NjU7Ii0tPgorPCEt
LUVOVElUWSB1b3BmICImI3gxRDU2NjsiLS0+Cis8IS0tRU5USVRZIHZvcGYgIiYjeDFENTY3OyIt
LT4KKzwhLS1FTlRJVFkgd29wZiAiJiN4MUQ1Njg7Ii0tPgorPCEtLUVOVElUWSB4b3BmICImI3gx
RDU2OTsiLS0+Cis8IS0tRU5USVRZIHlvcGYgIiYjeDFENTZBOyItLT4KKzwhLS1FTlRJVFkgem9w
ZiAiJiN4MUQ1NkI7Ii0tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvZG93bmxvYWQu
cHkKaW5kZXggMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUzZGIzMC4uZjhiZTAz
ZWZiMjc1MGFkNzU0YzYwMzhmNzM0MWE5NzYxMjkxZGYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9h
ZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGlmIE1ZUFk6CiAgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QK
ICAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VGV4dAogCiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogCkBAIC01MCw5ICs1MSw5
IEBAIGRlZiBzaG91bGRfZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWlsZF90aW1lPXRpbWVk
ZWx0YShkYXlzPTUpKToKIAogCiBkZWYgbWVyZ2VfcHJfdGFncyhyZXBvX3Jvb3QsIG1heF9jb3Vu
dD01MCk6Ci0gICAgIyB0eXBlOiAoc3RyLCBpbnQpIC0+IExpc3Rbc3RyXQorICAgICMgdHlwZTog
KHN0ciwgaW50KSAtPiBMaXN0W1RleHRdCiAgICAgZ2l0ZnVuYyA9IGdpdChyZXBvX3Jvb3QpCi0g
ICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIHRhZ3MgPSBbXSAgIyB0eXBlOiBM
aXN0W1RleHRdCiAgICAgaWYgZ2l0ZnVuYyBpcyBOb25lOgogICAgICAgICByZXR1cm4gdGFncwog
ICAgIGZvciBsaW5lIGluIGdpdGZ1bmMoImxvZyIsICItLWZvcm1hdD0lRCIsICItLW1heC1jb3Vu
dD0lcyIgJSBtYXhfY291bnQpLnNwbGl0KCJcbiIpOgpAQCAtNzksNyArODAsNyBAQCBkZWYgc2Nv
cmVfbmFtZShuYW1lKToKIAogCiBkZWYgZ2l0aHViX3VybCh0YWdzKToKLSAgICAjIHR5cGU6IChM
aXN0W3N0cl0pIC0+IE9wdGlvbmFsW0xpc3Rbc3RyXV0KKyAgICAjIHR5cGU6IChMaXN0W1RleHRd
KSAtPiBPcHRpb25hbFtMaXN0W1RleHRdXQogICAgIGZvciB0YWcgaW4gdGFnczoKICAgICAgICAg
dXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dC9yZWxlYXNlcy90YWdzLyVzIiAlIHRhZwogICAgICAgICB0cnk6CkBAIC0xMTEsOCArMTEyLDgg
QEAgZGVmIGdpdGh1Yl91cmwodGFncyk6CiAKIGRlZiBkb3dubG9hZF9tYW5pZmVzdCgKICAgICAg
ICAgbWFuaWZlc3RfcGF0aCwgICMgdHlwZTogc3RyCi0gICAgICAgIHRhZ3NfZnVuYywgICMgdHlw
ZTogQ2FsbGFibGVbW10sIExpc3Rbc3RyXV0KLSAgICAgICAgdXJsX2Z1bmMsICAjIHR5cGU6IENh
bGxhYmxlW1tMaXN0W3N0cl1dLCBPcHRpb25hbFtMaXN0W3N0cl1dXQorICAgICAgICB0YWdzX2Z1
bmMsICAjIHR5cGU6IENhbGxhYmxlW1tdLCBMaXN0W1RleHRdXQorICAgICAgICB1cmxfZnVuYywg
ICMgdHlwZTogQ2FsbGFibGVbW0xpc3RbVGV4dF1dLCBPcHRpb25hbFtMaXN0W1RleHRdXV0KICAg
ICAgICAgZm9yY2U9RmFsc2UgICMgdHlwZTogYm9vbAogKToKICAgICAjIHR5cGU6ICguLi4pIC0+
IGJvb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCAxYzQwMzRhZDA1
Zjk5YTI2MzE1OTAxYTE4YzhmNDAyZDVmYTY0YzEwLi5lZTA3ZjBkMWQ3OTcxNzUzNzRiMTY5YTQ2
OGI0YzJjODUwNTc5NmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CkBA
IC0xLDQgKzEsNCBAQAotZnJvbSBjb3B5IGltcG9ydCBjb3B5CitpbXBvcnQgb3MucGF0aAogZnJv
bSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCB3
aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
LCB1cmxwYXJzZQpAQCAtNjEsNiArNjEsMTEgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKHdpdGhfbWV0
YWNsYXNzKE1hbmlmZXN0SXRlbU1ldGEpKToKICAgICAgICAgIiIiVGhlIGl0ZW0ncyB0eXBlIiIi
CiAgICAgICAgIHBhc3MKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXRoX3BhcnRzKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIC4uLl0KKyAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYucGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisKICAgICBkZWYga2V5KHNlbGYp
OgogICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIiIkEgdW5pcXVlIGlk
ZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCkBAIC0xMDQsMTQgKzEwOSwxNCBAQCBjbGFzcyBVUkxN
YW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwg
ICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAgICAg
ICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAgIHVy
bCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlvbmFs
W1RleHRdCiAgICAgICAgICAgICAgICAgICoqZXh0cmFzICAjIHR5cGU6IEFueQogICAgICAgICAg
ICAgICAgICApOgogICAgICAgICAjIHR5cGU6ICguLi4pIC0+IE5vbmUKICAgICAgICAgc3VwZXIo
VVJMTWFuaWZlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyh0ZXN0c19yb290LCBwYXRoKQogICAgICAg
ICBhc3NlcnQgdXJsX2Jhc2VbMF0gPT0gIi8iCiAgICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1cmxf
YmFzZQotICAgICAgICBhc3NlcnQgdXJsWzBdICE9ICIvIgorICAgICAgICBhc3NlcnQgdXJsIGlz
IE5vbmUgb3IgdXJsWzBdICE9ICIvIgogICAgICAgICBzZWxmLl91cmwgPSB1cmwKICAgICAgICAg
c2VsZi5fZXh0cmFzID0gZXh0cmFzCiAKQEAgLTEyMywyMCArMTI4LDI4IEBAIGNsYXNzIFVSTE1h
bmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiB1cmwoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAorICAgICAgICByZWxfdXJsID0gc2VsZi5f
dXJsIG9yIHNlbGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKQogICAgICAgICAjIHdl
IGNhbiBvdXRwZXJmb3JtIHVybGpvaW4sIGJlY2F1c2Ugd2Uga25vdyB3ZSBqdXN0IGhhdmUgcGF0
aCByZWxhdGl2ZSBVUkxzCiAgICAgICAgIGlmIHNlbGYudXJsX2Jhc2UgPT0gIi8iOgotICAgICAg
ICAgICAgcmV0dXJuICIvIiArIHNlbGYuX3VybAotICAgICAgICByZXR1cm4gdXJsam9pbihzZWxm
LnVybF9iYXNlLCBzZWxmLl91cmwpCisgICAgICAgICAgICByZXR1cm4gIi8iICsgcmVsX3VybAor
ICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLCByZWxfdXJsKQogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGh0dHBzKHNlbGYpOgogICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wK
ICAgICAgICAgZmxhZ3MgPSBzZXQodXJscGFyc2Uoc2VsZi51cmwpLnBhdGgucnNwbGl0KCIvIiwg
MSlbMV0uc3BsaXQoIi4iKVsxOi0xXSkKLSAgICAgICAgcmV0dXJuICgiaHR0cHMiIGluIGZsYWdz
IG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICAgICAgcmV0dXJuICJodHRwcyIgaW4g
ZmxhZ3Mgb3IgInNlcnZpY2V3b3JrZXIiIGluIGZsYWdzCisKKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgaDIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICBmbGFncyA9
IHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8iLCAxKVsxXS5zcGxpdCgiLiIp
WzE6LTFdKQorICAgICAgICByZXR1cm4gImgyIiBpbiBmbGFncwogCiAgICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1d
Ci0gICAgICAgIHJ2ID0gKHNlbGYuX3VybCwge30pICAjIHR5cGU6IFR1cGxlW1RleHQsIERpY3Rb
QW55LCBBbnldXQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW09wdGlvbmFsW1RleHRdLCBE
aWN0W0FueSwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5fdXJsID09IHNl
bGYucGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCB1Ii8iKSBlbHNlIHNlbGYuX3VybAorICAgICAg
ICBydiA9IChyZWxfdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3Rb
QW55LCBBbnldXQogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTc3
LDEzICsxOTAsMTggQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAg
ICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4dHJhcy5nZXQoImpzc2hlbGwiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHF1aWMoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbYm9vbF0KKyAgICAgICAgcmV0dXJu
IHNlbGYuX2V4dHJhcy5nZXQoInF1aWMiKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHNjcmlw
dF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQog
ICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgic2NyaXB0X21ldGFkYXRhIikKIAogICAg
IGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERp
Y3RbVGV4dCwgQW55XV0KKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0
XSwgRGljdFtUZXh0LCBBbnldXQogICAgICAgICBydiA9IHN1cGVyKFRlc3RoYXJuZXNzVGVzdCwg
c2VsZikudG9fanNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0xOTEsMjMgKzIw
OSwyNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAg
ICAgIHJ2Wy0xXVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAgICAgICAgIGlmIHNl
bGYuanNzaGVsbDoKICAgICAgICAgICAgIHJ2Wy0xXVsianNzaGVsbCJdID0gVHJ1ZQorICAgICAg
ICBpZiBzZWxmLnF1aWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBydlstMV1bInF1aWMiXSA9
IHNlbGYucXVpYwogICAgICAgICBpZiBzZWxmLnNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAg
IHJ2Wy0xXVsic2NyaXB0X21ldGFkYXRhIl0gPSBzZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAg
ICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IFsoaywgdikgZm9yIChrLHYpIGluIHNl
bGYuc2NyaXB0X21ldGFkYXRhXQogICAgICAgICByZXR1cm4gcnYKIAogCi1jbGFzcyBSZWZUZXN0
QmFzZShVUkxNYW5pZmVzdEl0ZW0pOgorY2xhc3MgUmVmVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgog
ICAgIF9fc2xvdHNfXyA9ICgicmVmZXJlbmNlcyIsKQogCisgICAgaXRlbV90eXBlID0gInJlZnRl
c3QiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICAgdGVzdHNfcm9v
dCwgICMgdHlwZTogVGV4dAogICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CiAg
ICAgICAgICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0Ci0gICAgICAgICAgICAgICAg
IHVybCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICB1cmwsICAjIHR5cGU6IE9wdGlv
bmFsW1RleHRdCiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9Tm9uZSwgICMgdHlwZTogT3B0
aW9uYWxbTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV1dCiAgICAgICAgICAgICAgICAgICoqZXh0cmFz
ICAjIHR5cGU6IEFueQogICAgICAgICAgICAgICAgICApOgotICAgICAgICBzdXBlcihSZWZUZXN0
QmFzZSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCwgdXJsX2Jhc2UsIHVybCwgKipl
eHRyYXMpCisgICAgICAgIHN1cGVyKFJlZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3Qs
IHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0cmFzKQogICAgICAgICBpZiByZWZlcmVuY2VzIGlz
IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlZmVyZW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1
cGxlW1RleHQsIFRleHRdXQogICAgICAgICBlbHNlOgpAQCAtMjQ3LDggKzI2OSw5IEBAIGNsYXNz
IFJlZlRlc3RCYXNlKFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIHJldHVybiBydgogCiAgICAg
ZGVmIHRvX2pzb24oc2VsZik6ICAjIHR5cGU6IGlnbm9yZQotICAgICAgICAjIHR5cGU6ICgpIC0+
IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCi0g
ICAgICAgIHJ2ID0gKHNlbGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVw
bGVbVGV4dCwgTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtUdXBsZVtUZXh0LCBU
ZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KKyAgICAgICAgcmVsX3VybCA9IE5vbmUgaWYgc2VsZi5f
dXJsID09IHNlbGYucGF0aCBlbHNlIHNlbGYuX3VybAorICAgICAgICBydiA9IChyZWxfdXJsLCBz
ZWxmLnJlZmVyZW5jZXMsIHt9KSAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtUZXh0XSwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgZXh0cmFzID0gcnZb
LTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4
dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0yNjYsNyArMjg5LDcgQEAgY2xhc3Mg
UmVmVGVzdEJhc2UoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgIHBhdGgsICAj
IHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgIG9iaiAgIyB0eXBlOiBUdXBsZVtUZXh0LCBM
aXN0W1R1cGxlW1RleHQsIFRleHRdXSwgRGljdFtBbnksIEFueV1dCiAgICAgICAgICAgICAgICAg
ICApOgotICAgICAgICAjIHR5cGU6ICguLi4pIC0+IFJlZlRlc3RCYXNlCisgICAgICAgICMgdHlw
ZTogKC4uLikgLT4gUmVmVGVzdAogICAgICAgICB0ZXN0c19yb290ID0gbWFuaWZlc3QudGVzdHNf
cm9vdAogICAgICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBwYXRo
ID0gdG9fb3NfcGF0aChwYXRoKQpAQCAtMjc4LDM4ICszMDEsNiBAQCBjbGFzcyBSZWZUZXN0QmFz
ZShVUkxNYW5pZmVzdEl0ZW0pOgogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsCiAgICAg
ICAgICAgICAgICAgICAgKipleHRyYXMpCiAKLSAgICBkZWYgdG9fUmVmVGVzdChzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Ci0gICAgICAgIGlmIHR5cGUoc2VsZikgPT0gUmVm
VGVzdDoKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRlc3QpCi0gICAg
ICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBydiA9IGNvcHkoc2VsZikKLSAgICAgICAgcnYu
X19jbGFzc19fID0gUmVmVGVzdAotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShydiwgUmVmVGVz
dCkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgdG9fUmVmVGVzdE5vZGUoc2VsZik6Ci0g
ICAgICAgICMgdHlwZTogKCkgLT4gUmVmVGVzdE5vZGUKLSAgICAgICAgaWYgdHlwZShzZWxmKSA9
PSBSZWZUZXN0Tm9kZToKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYsIFJlZlRl
c3ROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBjb3B5KHNlbGYp
Ci0gICAgICAgIHJ2Ll9fY2xhc3NfXyA9IFJlZlRlc3ROb2RlCi0gICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJ2LCBSZWZUZXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLQotY2xhc3MgUmVm
VGVzdE5vZGUoUmVmVGVzdEJhc2UpOgotICAgIF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5
cGUgPSAicmVmdGVzdF9ub2RlIgotCi0KLWNsYXNzIFJlZlRlc3QoUmVmVGVzdEJhc2UpOgotICAg
IF9fc2xvdHNfXyA9ICgpCi0KLSAgICBpdGVtX3R5cGUgPSAicmVmdGVzdCIKLQogCiBjbGFzcyBN
YW51YWxUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgX19zbG90c19fID0gKCkKQEAgLTM1MSw3
ICszNDIsNyBAQCBjbGFzcyBXZWJEcml2ZXJTcGVjVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAKICAgICBkZWYgdG9fanNv
bihzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBEaWN0W1RleHQsIEFu
eV1dCisgICAgICAgICMgdHlwZTogKCkgLT4gVHVwbGVbT3B0aW9uYWxbVGV4dF0sIERpY3RbVGV4
dCwgQW55XV0KICAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVzdCwgc2VsZikudG9f
anNvbigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IHJ2Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC9tYW5pZmVzdC5weQppbmRleCAyYWQ3ZmNjZjQ4Njc1YmRjYzdiNTQ0NzQ3ZTFkMTgy
NGE1OTg1NDJmLi4zNDVlZWI2ZDJiMGJlZWIzY2UzYzEzOTA5NDljYjllMmQxOWE0MzVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L21hbmlmZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKQEAgLTEsMTUgKzEsMjUg
QEAKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGpzb24KIGltcG9ydCBvcwot
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIGRlZmF1bHRkaWN0Ci1mcm9t
IHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywgaXRlcnZhbHVlcywgc3RyaW5nX3R5cGVz
LCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCitmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9t
IG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbCwgY3B1X2NvdW50Citmcm9tIHNpeCBpbXBvcnQg
KAorICAgIFBZMywKKyAgICBiaW5hcnlfdHlwZSwKKyAgICBlbnN1cmVfdGV4dCwKKyAgICBpdGVy
aXRlbXMsCisgICAgaXRlcnZhbHVlcywKKyAgICBzdHJpbmdfdHlwZXMsCisgICAgdGV4dF90eXBl
LAorKQogCiBmcm9tIC4gaW1wb3J0IHZjcwotZnJvbSAuaXRlbSBpbXBvcnQgKENvbmZvcm1hbmNl
Q2hlY2tlclRlc3QsIE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwgUmVmVGVzdCwgUmVmVGVzdE5v
ZGUsCi0gICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKK2Zyb20gLml0ZW0gaW1wb3J0
IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJlZlRl
c3QsIFN1cHBvcnRGaWxlLAorICAgICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzVGVzdCwgVmlz
dWFsVGVzdCwgV2ViRHJpdmVyU3BlY1Rlc3QsIENyYXNoVGVzdCkKIGZyb20gLmxvZyBpbXBvcnQg
Z2V0X2xvZ2dlcgogZnJvbSAuc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQotZnJvbSAudXRp
bHMgaW1wb3J0IGZyb21fb3NfcGF0aCwgdG9fb3NfcGF0aAorZnJvbSAudHlwZWRhdGEgaW1wb3J0
IFR5cGVEYXRhCiAKIE1ZUFkgPSBGYWxzZQogaWYgTVlQWToKQEAgLTE5LDE2ICsyOSwxNCBAQCBp
ZiBNWVBZOgogICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWluZXIKICAgICBmcm9tIHR5cGlu
ZyBpbXBvcnQgRGljdAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJTwotICAgIGZyb20gdHlwaW5n
IGltcG9ydCBJdGVyYWJsZQogICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgotICAgIGZy
b20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCiAg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNl
dAogICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCiAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKICAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KLSAgICBmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAogCiB0cnk6CiAgICAgaW1wb3J0IHVq
c29uCkBAIC0zNiw3ICs0NCw3IEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmYXN0
X2pzb24gPSBqc29uICAjIHR5cGU6IGlnbm9yZQogCi1DVVJSRU5UX1ZFUlNJT04gPSA3CitDVVJS
RU5UX1ZFUlNJT04gPSA4ICAjIHR5cGU6IGludAogCiAKIGNsYXNzIE1hbmlmZXN0RXJyb3IoRXhj
ZXB0aW9uKToKQEAgLTQ5LDcgKzU3LDYgQEAgY2xhc3MgTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2go
TWFuaWZlc3RFcnJvcik6CiAKIGl0ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBUZXN0aGFy
bmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBSZWZUZXN0LAotICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKICAgICAgICAgICAgICAgICAiY3Jh
c2h0ZXN0IjogQ3Jhc2hUZXN0LAogICAgICAgICAgICAgICAgICJtYW51YWwiOiBNYW51YWxUZXN0
LAogICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZWJEcml2ZXJTcGVjVGVzdCwKQEAgLTU4LDE1
NiArNjUsMTIgQEAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3RoYXJuZXNzVGVz
dCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IFN1cHBvcnRGaWxlfSAgIyB0eXBlOiBEaWN0
W3N0ciwgVHlwZVtNYW5pZmVzdEl0ZW1dXQogCiAKLWlmIE1ZUFk6Ci0gICAgVHlwZURhdGFUeXBl
ID0gTXV0YWJsZU1hcHBpbmdbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dCi1lbHNlOgotICAgIFR5
cGVEYXRhVHlwZSA9IE11dGFibGVNYXBwaW5nCi0KLWNsYXNzIFR5cGVEYXRhKFR5cGVEYXRhVHlw
ZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmlmZXN0LCB0eXBlX2Nscyk6Ci0gICAgICAg
ICMgdHlwZTogKE1hbmlmZXN0LCBUeXBlW01hbmlmZXN0SXRlbV0pIC0+IE5vbmUKLSAgICAgICAg
IiIiRGljdC1saWtlIG9iamVjdCBjb250YWluaW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVz
dCB0eXBlLgotCi0gICAgICAgIExvYWRpbmcgYW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2gg
dGVzdCBpcyB1bm5lY2Vzc2FyaWx5Ci0gICAgICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dz
IGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAotICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZl
c3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSByYXcganNvbgotICAgICAgICBjb3JyZXNwb25kaW5n
IHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5IGNyZWF0ZSBhbiBJdGVtCi0gICAgICAgIHN1YmNs
YXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNzZWQuIEluIG9yZGVyIHRvIHJlbWFpbgotICAgICAg
ICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFu
IEl0ZW0KLSAgICAgICAgZnJvbSBpdGVyYXRpb24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVt
cyB3aGVuIGl0ZXJhdGluZwotICAgICAgICBvdmVyIHRoZSBjbGFzcy4iIiIKLSAgICAgICAgc2Vs
Zi5tYW5pZmVzdCA9IG1hbmlmZXN0Ci0gICAgICAgIHNlbGYudHlwZV9jbHMgPSB0eXBlX2Nscwot
ICAgICAgICBzZWxmLmpzb25fZGF0YSA9IHt9ICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwg
TGlzdFtBbnldXV0KLSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gTm9uZSAgIyB0eXBlOiBPcHRp
b25hbFtzdHJdCi0gICAgICAgIHNlbGYuZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0
W01hbmlmZXN0SXRlbV1dCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAg
ICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W01hbmlmZXN0SXRlbV0KLSAgICAgICAgaWYga2V5IG5v
dCBpbiBzZWxmLmRhdGEgYW5kIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5sb2FkKGtleSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtrZXldCi0KLSAgICBk
ZWYgX19ub256ZXJvX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLmRhdGEpIG9yIGJvb2woc2VsZi5qc29uX2RhdGEpCi0KLSAgICBk
ZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKLSAgICAgICAgcnYg
PSBsZW4oc2VsZi5kYXRhKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJ2ICs9IGxlbihzZWxmLmpzb25fZGF0YSkKLSAgICAgICAgcmV0dXJuIHJ2
Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIyB0eXBlOiAoVGV4
dCkgLT4gTm9uZQotICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgZGVs
IHNlbGYuZGF0YVtrZXldCi0gICAgICAgIGVsaWYgc2VsZi5qc29uX2RhdGEgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFbZnJvbV9vc19wYXRoKGtleSldCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvcgotCi0gICAgZGVmIF9fc2V0aXRl
bV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICAjIHR5cGU6IChUZXh0LCBTZXRbTWFuaWZl
c3RJdGVtXSkgLT4gTm9uZQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQotICAgICAgICAgICAgaWYgcGF0
aCBpbiBzZWxmLmpzb25fZGF0YToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5qc29uX2RhdGFb
cGF0aF0KLSAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQotCi0gICAgZGVmIF9fY29udGFp
bnNfXyhzZWxmLCBrZXkpOgotICAgICAgICAjIHR5cGU6IChBbnkpIC0+IGJvb2wKLSAgICAgICAg
c2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5kYXRhCi0KLSAgICBk
ZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4gSXRlcmF0b3JbVGV4dF0K
LSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEuX19pdGVy
X18oKQotCi0gICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6Ci0gICAgICAgICMgdHlwZTogKCkgLT4g
SXRlcmF0b3JbU2V0W01hbmlmZXN0SXRlbV1dCi0gICAgICAgIHNlbGYubG9hZF9hbGwoKQotICAg
ICAgICByZXR1cm4gaXRlcnZhbHVlcyhzZWxmLmRhdGEpCi0KLSAgICBkZWYgaXRlcml0ZW1zKHNl
bGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1RleHQsIFNldFtNYW5p
ZmVzdEl0ZW1dXV0KLSAgICAgICAgc2VsZi5sb2FkX2FsbCgpCi0gICAgICAgIHJldHVybiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotCi0gICAgZGVmIHZhbHVlcyhzZWxmKToKLSAgICAgICAgIyB0eXBl
OiAoKSAtPiBMaXN0W1NldFtNYW5pZmVzdEl0ZW1dXQotICAgICAgICByZXR1cm4gbGlzdChzZWxm
Lml0ZXJ2YWx1ZXMoKSkKLQotICAgIGRlZiBpdGVtcyhzZWxmKToKLSAgICAgICAgIyB0eXBlOiAo
KSAtPiBMaXN0W1R1cGxlW1RleHQsIFNldFtNYW5pZmVzdEl0ZW1dXV0KLSAgICAgICAgcmV0dXJu
IGxpc3Qoc2VsZi5pdGVyaXRlbXMoKSkKLQotICAgIGRlZiBsb2FkKHNlbGYsIGtleSk6Ci0gICAg
ICAgICMgdHlwZTogKFRleHQpIC0+IE5vbmUKLSAgICAgICAgIiIiTG9hZCBhIHNwZWNpZmljIEl0
ZW0gZ2l2ZW4gYSBwYXRoIiIiCi0gICAgICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZGF0YSA9IHNldCgpCi0gICAgICAgICAgICBwYXRoID0gZnJvbV9vc19w
YXRoKGtleSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRo
LCBbXSk6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlwZV9jbHMuZnJv
bV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCi0gICAgICAgICAgICAgICAgZGF0YS5h
ZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwg
c2VsZi5qc29uX2RhdGFbcGF0aF0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IGRhdGEKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLQotICAgIGRlZiBsb2FkX2Fs
bChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25lCi0gICAgICAgICIiIkxvYWQgYWxs
IHRlc3QgaXRlbXMgaW4gdGhpcyBjbGFzcyIiIgotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBwYXRoLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2Vs
Zi5qc29uX2RhdGEpOgotICAgICAgICAgICAgICAgIGtleSA9IHRvX29zX3BhdGgocGF0aCkKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgICAgIGRhdGEgPSBzZXQoKQotICAgICAgICAgICAgICAgIGZv
ciB0ZXN0IGluIHNlbGYuanNvbl9kYXRhLmdldChwYXRoLCBbXSk6Ci0gICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLnR5cGVfY2xzLmZyb21fanNvbihzZWxmLm1hbmlmZXN0
LCBwYXRoLCB0ZXN0KQotICAgICAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVt
KQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YVtrZXldID0gZGF0YQotICAgICAgICAgICAgc2Vs
Zi5qc29uX2RhdGEgPSBOb25lCi0KLSAgICBkZWYgc2V0X2pzb24oc2VsZiwgdGVzdHNfcm9vdCwg
ZGF0YSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldKSAtPiBOb25lCi0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGRpY3QpOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigiR290IGEgJXMgZXhwZWN0ZWQgYSBkaWN0IiAlICh0eXBlKGRhdGEpKSkKLSAg
ICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdAotICAgICAgICBzZWxmLmpzb25fZGF0
YSA9IGRhdGEKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgQW55XQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgZnJvbV9vc19w
YXRoKHBhdGgpOgotICAgICAgICAgICAgW3QgZm9yIHQgaW4gc29ydGVkKHRlc3QudG9fanNvbigp
IGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAgICAgIGZvciBwYXRoLCB0ZXN0cyBpbiBpdGVy
aXRlbXMoc2VsZi5kYXRhKQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICAj
IGF2b2lkIGNvcHlpbmcgaWYgdGhlcmUncyBub3RoaW5nIGhlcmUgeWV0Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuanNvbl9kYXRhCi0gICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxmLmpz
b25fZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHBhdGhzKHNlbGYpOgot
ICAgICAgICAjIHR5cGU6ICgpIC0+IFNldFtUZXh0XQotICAgICAgICAiIiJHZXQgYSBsaXN0IG9m
IGFsbCBwYXRocyBjb250YWluaW5nIGl0ZW1zIG9mIHRoaXMgdHlwZSwKLSAgICAgICAgd2l0aG91
dCBhY3R1YWxseSBjb25zdHJ1Y3RpbmcgYWxsIHRoZSBpdGVtcyIiIgotICAgICAgICBydiA9IHNl
dChpdGVya2V5cyhzZWxmLmRhdGEpKQotICAgICAgICBpZiBzZWxmLmpzb25fZGF0YToKLSAgICAg
ICAgICAgIHJ2IHw9IHt0b19vc19wYXRoKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYu
anNvbl9kYXRhKX0KLSAgICAgICAgcmV0dXJuIHJ2Ci0KK2RlZiBjb21wdXRlX21hbmlmZXN0X2l0
ZW1zKHNvdXJjZV9maWxlKToKKyAgICAjIHR5cGU6IChTb3VyY2VGaWxlKSAtPiBUdXBsZVtUdXBs
ZVtUZXh0LCAuLi5dLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXSwgVGV4dF0KKyAgICByZWxfcGF0
aF9wYXJ0cyA9IHNvdXJjZV9maWxlLnJlbF9wYXRoX3BhcnRzCisgICAgbmV3X3R5cGUsIG1hbmlm
ZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMoKQorICAgIGZpbGVfaGFzaCA9
IHNvdXJjZV9maWxlLmhhc2gKKyAgICByZXR1cm4gcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBz
ZXQobWFuaWZlc3RfaXRlbXMpLCBmaWxlX2hhc2gKIAogaWYgTVlQWToKICAgICBNYW5pZmVzdERh
dGFUeXBlID0gRGljdFtBbnksIFR5cGVEYXRhXQpAQCAtMjM3LDE3ICsxMDAsMjUgQEAgY2xhc3Mg
TWFuaWZlc3REYXRhKE1hbmlmZXN0RGF0YVR5cGUpOgogICAgICAgICB3aXRob3V0IGFjdHVhbGx5
IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCiAgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlw
ZTogU2V0W1RleHRdCiAgICAgICAgIGZvciBpdGVtX2RhdGEgaW4gaXRlcnZhbHVlcyhzZWxmKToK
LSAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0aHMoKSkKKyAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1fZGF0YToKKyAgICAgICAgICAgICAgICBydi5hZGQob3MucGF0aC5zZXAu
am9pbihpdGVtKSkKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBkZWYgdHlwZV9ieV9wYXRoKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVHVwbGVbVGV4dCwgLi4uXSwgc3RyXQor
ICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBpdGVtX3R5cGUsIGl0ZW1fZGF0YSBpbiBpdGVy
aXRlbXMoc2VsZik6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtX2RhdGE6CisgICAgICAg
ICAgICAgICAgcnZbaXRlbV0gPSBpdGVtX3R5cGUKKyAgICAgICAgcmV0dXJuIHJ2CisKKwogCiBj
bGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290
PU5vbmUsIHVybF9iYXNlPSIvIik6CiAgICAgICAgICMgdHlwZTogKE9wdGlvbmFsW3N0cl0sIFRl
eHQpIC0+IE5vbmUKICAgICAgICAgYXNzZXJ0IHVybF9iYXNlIGlzIG5vdCBOb25lCi0gICAgICAg
IHNlbGYuX3BhdGhfaGFzaCA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwgVGV4
dF1dCiAgICAgICAgIHNlbGYuX2RhdGEgPSBNYW5pZmVzdERhdGEoc2VsZikgICMgdHlwZTogTWFu
aWZlc3REYXRhCi0gICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0gTm9uZSAgIyB0
eXBlOiBPcHRpb25hbFtEaWN0W1RleHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV1dCiAg
ICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UgICMgdHlwZTogVGV4dAogCkBAIC0y
NTgsNDcgKzEyOSwzNCBAQCBjbGFzcyBNYW5pZmVzdChvYmplY3QpOgogICAgIGRlZiBpdGVydHlw
ZXMoc2VsZiwgKnR5cGVzKToKICAgICAgICAgIyB0eXBlOiAoKnN0cikgLT4gSXRlcmF0b3JbVHVw
bGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCiAgICAgICAgIGZvciBpdGVtX3R5cGUg
aW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMoKSkpOgotICAgICAgICAgICAgZm9y
IHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBlXSk6CisgICAgICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLl9kYXRhW2l0ZW1fdHlwZV06CisgICAgICAgICAgICAgICAgc3RyX3BhdGgg
PSBvcy5zZXAuam9pbihwYXRoKQogICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZGF0YVtp
dGVtX3R5cGVdW3BhdGhdCi0gICAgICAgICAgICAgICAgeWllbGQgaXRlbV90eXBlLCBwYXRoLCB0
ZXN0cworICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fdHlwZSwgc3RyX3BhdGgsIHRlc3RzCiAK
ICAgICBkZWYgaXRlcnBhdGgoc2VsZiwgcGF0aCk6Ci0gICAgICAgICMgdHlwZTogKFRleHQpIC0+
IEl0ZXJhdG9yW01hbmlmZXN0SXRlbV0KKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFi
bGVbTWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0
aC5zZXApKQorCiAgICAgICAgIGZvciB0eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6
Ci0gICAgICAgICAgICBpID0gdHlwZV90ZXN0cy5nZXQocGF0aCwgc2V0KCkpCisgICAgICAgICAg
ICBpID0gdHlwZV90ZXN0cy5nZXQodHBhdGgsIHNldCgpKQogICAgICAgICAgICAgYXNzZXJ0IGkg
aXMgbm90IE5vbmUKICAgICAgICAgICAgIGZvciB0ZXN0IGluIGk6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdAogCiAgICAgZGVmIGl0ZXJkaXIoc2VsZiwgZGlyX25hbWUpOgotICAgICAgICAj
IHR5cGU6IChUZXh0KSAtPiBJdGVyYXRvcltNYW5pZmVzdEl0ZW1dCi0gICAgICAgIGlmIG5vdCBk
aXJfbmFtZS5lbmRzd2l0aChvcy5wYXRoLnNlcCk6Ci0gICAgICAgICAgICBkaXJfbmFtZSA9IGRp
cl9uYW1lICsgb3MucGF0aC5zZXAKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmFibGVb
TWFuaWZlc3RJdGVtXQorICAgICAgICB0cGF0aCA9IHR1cGxlKGRpcl9uYW1lLnNwbGl0KG9zLnBh
dGguc2VwKSkKKyAgICAgICAgdHBhdGhfbGVuID0gbGVuKHRwYXRoKQorCiAgICAgICAgIGZvciB0
eXBlX3Rlc3RzIGluIHNlbGYuX2RhdGEudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcGF0aCwg
dGVzdHMgaW4gdHlwZV90ZXN0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBwYXRo
LnN0YXJ0c3dpdGgoZGlyX25hbWUpOgorICAgICAgICAgICAgZm9yIHBhdGgsIHRlc3RzIGluIGl0
ZXJpdGVtcyh0eXBlX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoWzp0cGF0aF9sZW5d
ID09IHRwYXRoOgogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBy
ZWZ0ZXN0X25vZGVzX2J5X3VybChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1Rl
eHQsIFVuaW9uW1JlZlRlc3QsIFJlZlRlc3ROb2RlXV0KLSAgICAgICAgaWYgc2VsZi5fcmVmdGVz
dF9ub2Rlc19ieV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIGJ5X3VybCA9IHt9Ci0gICAgICAg
ICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9k
YXRhWyJyZWZ0ZXN0Il0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0pKToKLSAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKLSAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0gYnlfdXJsCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5
X3VybAotCi0gICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKLSAgICAgICAgIyB0eXBl
OiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQotICAgICAgICByZXR1cm4gc2VsZi5y
ZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVl
KToKLSAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNlRmlsZSwgYnl0
ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHRyZWUsIHBhcmFsbGVs
PVRydWUpOgorICAgICAgICAjIHR5cGU6IChJdGVyYWJsZVtUdXBsZVtVbmlvbltTb3VyY2VGaWxl
LCBieXRlc10sIGJvb2xdXSwgYm9vbCkgLT4gYm9vbAogICAgICAgICAiIiJVcGRhdGUgdGhlIG1h
bmlmZXN0IGdpdmVuIGFuIGl0ZXJhYmxlIG9mIGl0ZW1zIHRoYXQgbWFrZSB1cCB0aGUgdXBkYXRl
ZCBtYW5pZmVzdC4KIAogICAgICAgICBUaGUgaXRlcmFibGUgbXVzdCBlaXRoZXIgZ2VuZXJhdGUg
dHVwbGVzIG9mIHRoZSBmb3JtIChTb3VyY2VGaWxlLCBUcnVlKSBmb3IgcGF0aHMKQEAgLTMwNiwx
NzAgKzE2NCwxMjcgQEAgY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKICAgICAgICAgdW51c3VhbCBB
UEkgaXMgZGVzaWduZWQgYXMgYW4gb3B0aW1pc3RhaW9uIG1lYW5pbmcgdGhhdCBTb3VyY2VGaWxl
IGl0ZW1zIG5lZWQgbm90IGJlCiAgICAgICAgIGNvbnN0cnVjdGVkIGluIHRoZSBjYXNlIHdlIGFy
ZSBub3QgdXBkYXRpbmcgYSBwYXRoLCBidXQgdGhlIGFic2VuY2Ugb2YgYW4gaXRlbSBmcm9tCiAg
ICAgICAgIHRoZSBpdGVyYXRvciBtYXkgYmUgdXNlZCB0byByZW1vdmUgZGVmdW5jdCBlbnRyaWVz
IGZyb20gdGhlIG1hbmlmZXN0LiIiIgotICAgICAgICBhbGxfcmVmdGVzdF9ub2RlcyA9IFtdICAj
IHR5cGU6IExpc3RbVHVwbGVbTWFuaWZlc3RJdGVtLCBUZXh0XV0KLSAgICAgICAgc2Vlbl9maWxl
cyA9IHNldCgpICAjIHR5cGU6IFNldFtUZXh0XQogCiAgICAgICAgIGNoYW5nZWQgPSBGYWxzZQot
ICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBGYWxzZQogCiAgICAgICAgICMgQ3JlYXRlIGxvY2Fs
IHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gdGhlc2UgZGljdHMgc28gd2UgYXZvaWQgdGhlCiAgICAg
ICAgICMgYXR0cmlidXRlIGFjY2VzcyBpbiB0aGUgaG90IGxvb3AgYmVsb3cKLSAgICAgICAgcGF0
aF9oYXNoID0gc2VsZi5fcGF0aF9oYXNoICAjIHR5cGU6IERpY3RbVGV4dCwgVHVwbGVbVGV4dCwg
VGV4dF1dCiAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhCiAKLSAgICAgICAgcHJldl9maWxlcyA9
IGRhdGEucGF0aHMoKSAgIyB0eXBlOiBTZXRbVGV4dF0KKyAgICAgICAgdHlwZXMgPSBkYXRhLnR5
cGVfYnlfcGF0aCgpCisgICAgICAgIGRlbGV0ZWQgPSBzZXQodHlwZXMpCiAKLSAgICAgICAgcmVm
dGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorICAgICAgICB0b191cGRh
dGUgPSBbXQogCi0gICAgICAgIGZvciBzb3VyY2VfZmlsZSwgdXBkYXRlIGluIHRyZWU6CisgICAg
ICAgIGZvciBzb3VyY2VfZmlsZV9vcl9wYXRoLCB1cGRhdGUgaW4gdHJlZToKICAgICAgICAgICAg
IGlmIG5vdCB1cGRhdGU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNl
X2ZpbGUsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlICAjIHR5cGU6IFRleHQKLSAgICAgICAgICAgICAgICBzZWVuX2ZpbGVz
LmFkZChyZWxfcGF0aCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVsX3BhdGggaW4gcGF0aF9o
YXNoCi0gICAgICAgICAgICAgICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9w
YXRoXSAgIyB0eXBlOiBUdXBsZVtUZXh0LCBUZXh0XQotICAgICAgICAgICAgICAgIGlmIG9sZF90
eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW1z
ID0gZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdICAjIHR5cGU6IEl0ZXJhYmxlW01hbmlmZXN0SXRl
bV0KLSAgICAgICAgICAgICAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMuZXh0ZW5kKChpdGVtLCBv
bGRfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAgYXNz
ZXJ0IGlzaW5zdGFuY2Uoc291cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5
cGUpKQorICAgICAgICAgICAgICAgIHBhdGggPSBlbnN1cmVfdGV4dChzb3VyY2VfZmlsZV9vcl9w
YXRoKQorICAgICAgICAgICAgICAgIGRlbGV0ZWQucmVtb3ZlKHR1cGxlKHBhdGguc3BsaXQob3Mu
cGF0aC5zZXApKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5v
dCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCBieXRlcykKLSAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IHNvdXJjZV9maWxlLnJlbF9wYXRoCi0gICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQo
cmVsX3BhdGgpCi0KLSAgICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNo
ICAjIHR5cGU6IFRleHQKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc291
cmNlX2ZpbGVfb3JfcGF0aCwgKGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUpKQorICAgICAgICAgICAg
ICAgIHNvdXJjZV9maWxlID0gc291cmNlX2ZpbGVfb3JfcGF0aAorICAgICAgICAgICAgICAgIHJl
bF9wYXRoX3BhcnRzID0gc291cmNlX2ZpbGUucmVsX3BhdGhfcGFydHMKKyAgICAgICAgICAgICAg
ICBhc3NlcnQgaXNpbnN0YW5jZShyZWxfcGF0aF9wYXJ0cywgdHVwbGUpCiAKLSAgICAgICAgICAg
ICAgICBpc19uZXcgPSByZWxfcGF0aCBub3QgaW4gcGF0aF9oYXNoICAjIHR5cGU6IGJvb2wKKyAg
ICAgICAgICAgICAgICBpc19uZXcgPSByZWxfcGF0aF9wYXJ0cyBub3QgaW4gZGVsZXRlZCAgIyB0
eXBlOiBib29sCiAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gRmFsc2UgICMgdHlwZTog
Ym9vbAogCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAgICAgICAgICAgICAg
ICAgb2xkX2hhc2gsIG9sZF90eXBlID0gcGF0aF9oYXNoW3JlbF9wYXRoXQorICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkLnJlbW92ZShyZWxfcGF0aF9wYXJ0cykKKyAgICAgICAgICAgICAgICAg
ICAgb2xkX3R5cGUgPSB0eXBlc1tyZWxfcGF0aF9wYXJ0c10KKyAgICAgICAgICAgICAgICAgICAg
b2xkX2hhc2ggPSBkYXRhW29sZF90eXBlXS5oYXNoZXNbcmVsX3BhdGhfcGFydHNdCisgICAgICAg
ICAgICAgICAgICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2ggICMgdHlwZTogVGV4dAog
ICAgICAgICAgICAgICAgICAgICBpZiBvbGRfaGFzaCAhPSBmaWxlX2hhc2g6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5p
ZmVzdF9pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2NoYW5nZWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSAhPSBvbGRfdHlwZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWwgZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVzdF90eXBlczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQotICAg
ICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3R5cGUg
PSBvbGRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkX3R5cGUgaW4gcmVmdGVz
dF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtcyA9IGRh
dGFbb2xkX3R5cGVdW3JlbF9wYXRoXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld190eXBlLCBtYW5pZmVzdF9pdGVtcyA9IHNvdXJjZV9maWxlLm1hbmlmZXN0
X2l0ZW1zKCkKLQotICAgICAgICAgICAgICAgIGlmIG5ld190eXBlIGluIHJlZnRlc3RfdHlwZXM6
Ci0gICAgICAgICAgICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRlbSwgZmls
ZV9oYXNoKSBmb3IgaXRlbSBpbiBtYW5pZmVzdF9pdGVtcykKLSAgICAgICAgICAgICAgICAgICAg
aWYgaXNfbmV3IG9yIGhhc2hfY2hhbmdlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRl
c3RfY2hhbmdlcyA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzX25ldyBvciBoYXNoX2No
YW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbbmV3X3R5cGVdW3JlbF9wYXRoXSA9IHNl
dChtYW5pZmVzdF9pdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBkYXRhW29sZF90
eXBlXVtyZWxfcGF0aF9wYXJ0c10KIAogICAgICAgICAgICAgICAgIGlmIGlzX25ldyBvciBoYXNo
X2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfaGFzaFtyZWxfcGF0aF0gPSAoZmls
ZV9oYXNoLCBuZXdfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKKyAg
ICAgICAgICAgICAgICAgICAgdG9fdXBkYXRlLmFwcGVuZChzb3VyY2VfZmlsZSkKKworICAgICAg
ICBpZiB0b191cGRhdGU6CisgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQorCisgICAgICAgIGlm
IHBhcmFsbGVsIGFuZCBsZW4odG9fdXBkYXRlKSA+IDI1IGFuZCBjcHVfY291bnQoKSA+IDE6Cisg
ICAgICAgICAgICAjIDI1IGRlcml2ZWQgZXhwZXJpbWVudGFsbHkgKDIwMjAtMDEpIHRvIGJlIGFw
cHJveGltYXRlbHkKKyAgICAgICAgICAgICMgdGhlIHBvaW50IGF0IHdoaWNoIGl0IGlzIHF1aWNr
ZXIgdG8gY3JlYXRlIFBvb2wgYW5kCisgICAgICAgICAgICAjIHBhcmFsbGVsaXplIHRoaXMKKyAg
ICAgICAgICAgIHBvb2wgPSBQb29sKCkKKworICAgICAgICAgICAgIyBjaHVua3NpemUgc2V0ID4g
MSB3aGVuIG1vcmUgdGhhbiAxMDAwMCB0ZXN0cywgYmVjYXVzZQorICAgICAgICAgICAgIyBjaHVu
a2luZyBpcyBhIG5ldC1nYWluIG9uY2Ugd2UgZ2V0IHRvIHZlcnkgbGFyZ2UgbnVtYmVycworICAg
ICAgICAgICAgIyBvZiBpdGVtcyAoYWdhaW4sIGV4cGVyaW1lbnRhbGx5LCAyMDIwLTAxKQorICAg
ICAgICAgICAgcmVzdWx0cyA9IHBvb2wuaW1hcF91bm9yZGVyZWQoY29tcHV0ZV9tYW5pZmVzdF9p
dGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3VwZGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rc2l6ZT1t
YXgoMSwgbGVuKHRvX3VwZGF0ZSkgLy8gMTAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApICAjIHR5cGU6IEl0ZXJhdG9yW1R1cGxlW1R1cGxlW1RleHQsIC4u
Ll0sIFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dLCBUZXh0XV0KKyAgICAgICAgZWxpZiBQWTM6Cisg
ICAgICAgICAgICByZXN1bHRzID0gbWFwKGNvbXB1dGVfbWFuaWZlc3RfaXRlbXMsIHRvX3VwZGF0
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBpdGVydG9vbHMuaW1hcChj
b21wdXRlX21hbmlmZXN0X2l0ZW1zLCB0b191cGRhdGUpCisKKyAgICAgICAgZm9yIHJlc3VsdCBp
biByZXN1bHRzOgorICAgICAgICAgICAgcmVsX3BhdGhfcGFydHMsIG5ld190eXBlLCBtYW5pZmVz
dF9pdGVtcywgZmlsZV9oYXNoID0gcmVzdWx0CisgICAgICAgICAgICBkYXRhW25ld190eXBlXVty
ZWxfcGF0aF9wYXJ0c10gPSBtYW5pZmVzdF9pdGVtcworICAgICAgICAgICAgZGF0YVtuZXdfdHlw
ZV0uaGFzaGVzW3JlbF9wYXRoX3BhcnRzXSA9IGZpbGVfaGFzaAogCi0gICAgICAgIGRlbGV0ZWQg
PSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcwogICAgICAgICBpZiBkZWxldGVkOgogICAgICAgICAg
ICAgY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgIGZvciByZWxfcGF0aCBpbiBkZWxldGVkOgot
ICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKLSAgICAgICAgICAgICAg
ICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGRlbCBwYXRoX2hh
c2hbcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KLSAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gaXRlcnZh
bHVlcyhkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHRlc3Rf
ZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9wYXRo
XQotCi0gICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKLSAgICAgICAgICAgIHJlZnRlc3RzLCBy
ZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVfcmVmdGVzdHMoYWxs
X3JlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBkYXRhWyJyZWZ0ZXN0
Il0KLSAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3IgcGF0
aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZ
OgotICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBjYXN0KFNldFtNYW5p
ZmVzdEl0ZW1dLCBpdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcwotCi0gICAgICAgICAgICByZWZ0ZXN0X25v
ZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCi0gICAgICAgICAgICByZWZ0ZXN0X25vZGVf
ZGF0YS5jbGVhcigpCi0gICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2RlX2l0ZW1zIGluIGl0
ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKLSAgICAgICAgICAgICAgICBpZiBNWVBZOgotICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gY2FzdChTZXRbTWFu
aWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9kZV9pdGVtcwotCi0g
ICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVzKQorICAgICAgICAgICAg
Zm9yIHJlbF9wYXRoX3BhcnRzIGluIGRlbGV0ZWQ6CisgICAgICAgICAgICAgICAgZm9yIHRlc3Rf
ZGF0YSBpbiBpdGVydmFsdWVzKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0
aF9wYXJ0cyBpbiB0ZXN0X2RhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9k
YXRhW3JlbF9wYXRoX3BhcnRzXQogCiAgICAgICAgIHJldHVybiBjaGFuZ2VkCiAKLSAgICBkZWYg
X2NvbXB1dGVfcmVmdGVzdHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVz
dF9ub2RlcyAgIyB0eXBlOiBMaXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgdHlwZTogKC4uLikgLT4gVHVwbGVbRGlj
dFtUZXh0LCBTZXRbUmVmVGVzdF1dLCBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dLCBEaWN0
W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXV0KLSAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19i
eV91cmwgPSB7fQotICAgICAgICBoYXNfaW5ib3VuZCA9IHNldCgpCi0gICAgICAgIGZvciBpdGVt
LCBfIGluIHJlZnRlc3Rfbm9kZXM6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQotICAgICAgICAgICAgZm9yIHJlZl91cmwsIHJlZl90
eXBlIGluIGl0ZW0ucmVmZXJlbmNlczoKLSAgICAgICAgICAgICAgICBoYXNfaW5ib3VuZC5hZGQo
cmVmX3VybCkKLQotICAgICAgICByZWZ0ZXN0cyA9IGRlZmF1bHRkaWN0KHNldCkgICMgdHlwZTog
RGljdFtUZXh0LCBTZXRbUmVmVGVzdF1dCi0gICAgICAgIHJlZmVyZW5jZXMgPSBkZWZhdWx0ZGlj
dChzZXQpICAjIHR5cGU6IERpY3RbVGV4dCwgU2V0W1JlZlRlc3ROb2RlXV0KLSAgICAgICAgY2hh
bmdlZF9oYXNoZXMgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXQot
Ci0gICAgICAgIGZvciBpdGVtLCBmaWxlX2hhc2ggaW4gcmVmdGVzdF9ub2RlczoKLSAgICAgICAg
ICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIChSZWZUZXN0Tm9kZSwgUmVmVGVzdCkpCi0gICAg
ICAgICAgICBpZiBpdGVtLnVybCBpbiBoYXNfaW5ib3VuZDoKLSAgICAgICAgICAgICAgICAjIFRo
aXMgaXMgYSByZWZlcmVuY2UKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3QpOgotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS50b19SZWZUZXN0Tm9kZSgp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9o
YXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJl
ZlRlc3ROb2RlKQotICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5wYXRoXS5hZGQoaXRl
bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0Tm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRvX1JlZlRl
c3QoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZp
bGVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpdGVtLml0ZW1fdHlwZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVt
LCBSZWZUZXN0KQotICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0aF0uYWRkKGl0ZW0p
Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRl
c3QpKQotICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxbaXRlbS51cmxdID0g
aXRlbQotCi0gICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywgY2hhbmdlZF9oYXNo
ZXMKLQotICAgIGRlZiB0b19qc29uKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3Rb
VGV4dCwgQW55XQorICAgIGRlZiB0b19qc29uKHNlbGYsIGNhbGxlcl9vd25zX29iaj1UcnVlKToK
KyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgICIiIkR1
bXAgYSBtYW5pZmVzdCBpbnRvIGEgb2JqZWN0IHdoaWNoIGNhbiBiZSBzZXJpYWxpemVkIGFzIEpT
T04KKworICAgICAgICBJZiBjYWxsZXJfb3duc19vYmogaXMgRmFsc2UsIHRoZW4gdGhlIHJldHVy
biB2YWx1ZSByZW1haW5zCisgICAgICAgIG93bmVkIGJ5IHRoZSBtYW5pZmVzdDsgaXQgaXMgX3Zp
dGFsbHkgaW1wb3J0YW50XyB0aGF0IF9ub18KKyAgICAgICAgKGV2ZW4gcmVhZCkgb3BlcmF0aW9u
IGlzIGRvbmUgb24gdGhlIG1hbmlmZXN0LCBhcyBvdGhlcndpc2UKKyAgICAgICAgb2JqZWN0cyB3
aXRoaW4gdGhlIG9iamVjdCBncmFwaCByb290ZWQgYXQgdGhlIHJldHVybiB2YWx1ZSBjYW4KKyAg
ICAgICAgYmUgbXV0YXRlZC4gVGhpcyBlc3NlbnRpYWxseSBtYWtlcyB0aGlzIG1vZGUgdmVyeSBk
YW5nZXJvdXMKKyAgICAgICAgYW5kIG9ubHkgdG8gYmUgdXNlZCB1bmRlciBleHRyZW1lIGNhcmUu
CisKKyAgICAgICAgIiIiCiAgICAgICAgIG91dF9pdGVtcyA9IHsKICAgICAgICAgICAgIHRlc3Rf
dHlwZTogdHlwZV9wYXRocy50b19qc29uKCkKICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUsIHR5
cGVfcGF0aHMgaW4gaXRlcml0ZW1zKHNlbGYuX2RhdGEpIGlmIHR5cGVfcGF0aHMKICAgICAgICAg
fQorCisgICAgICAgIGlmIGNhbGxlcl9vd25zX29iajoKKyAgICAgICAgICAgIG91dF9pdGVtcyA9
IGRlZXBjb3B5KG91dF9pdGVtcykKKwogICAgICAgICBydiA9IHsidXJsX2Jhc2UiOiBzZWxmLnVy
bF9iYXNlLAotICAgICAgICAgICAgICAicGF0aHMiOiB7ZnJvbV9vc19wYXRoKGspOiB2IGZvciBr
LCB2IGluIGl0ZXJpdGVtcyhzZWxmLl9wYXRoX2hhc2gpfSwKICAgICAgICAgICAgICAgIml0ZW1z
Ijogb3V0X2l0ZW1zLAogICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJFTlRfVkVSU0lPTn0g
ICMgdHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9u
ZSk6Ci0gICAgICAgICMgdHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250
YWluZXJbVGV4dF1dKSAtPiBNYW5pZmVzdAorICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19y
b290LCBvYmosIHR5cGVzPU5vbmUsIGNhbGxlZV9vd25zX29iaj1GYWxzZSk6CisgICAgICAgICMg
dHlwZTogKHN0ciwgRGljdFtUZXh0LCBBbnldLCBPcHRpb25hbFtDb250YWluZXJbVGV4dF1dLCBi
b29sKSAtPiBNYW5pZmVzdAorICAgICAgICAiIiJMb2FkIGEgbWFuaWZlc3QgZnJvbSBhIEpTT04g
b2JqZWN0CisKKyAgICAgICAgVGhpcyBsb2FkcyBhIG1hbmlmZXN0IGZvciBhIGdpdmVuIGxvY2Fs
IHRlc3Rfcm9vdCBwYXRoIGZyb20gYW4KKyAgICAgICAgb2JqZWN0IG9iaiwgcG90ZW50aWFsbHkg
cGFydGlhbGx5IGxvYWRpbmcgaXQgdG8gb25seSBsb2FkIHRoZQorICAgICAgICB0eXBlcyBnaXZl
biBieSB0eXBlcy4KKworICAgICAgICBJZiBjYWxsZWVfb3duc19vYmogaXMgVHJ1ZSwgdGhlbiBv
d25lcnNoaXAgb2Ygb2JqIHRyYW5zZmVycworICAgICAgICB0byB0aGlzIGZ1bmN0aW9uIHdoZW4g
Y2FsbGVkLCBhbmQgdGhlIGNhbGxlciBtdXN0IG5ldmVyIG11dGF0ZQorICAgICAgICB0aGUgb2Jq
IG9yIGFueXRoaW5nIHJlZmVycmVkIHRvIGluIHRoZSBvYmplY3QgZ3JhcGggcm9vdGVkIGF0Cisg
ICAgICAgIG9iai4KKworICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9IG9iai5nZXQoInZl
cnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTjoKICAgICAgICAg
ICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKICAgICAgICAgc2VsZiA9IGNscyh0
ZXN0c19yb290LCB1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikpCi0gICAgICAgIGlm
IG5vdCBoYXNhdHRyKG9iaiwgIml0ZW1zIikgYW5kIGhhc2F0dHIob2JqLCAicGF0aHMiKToKKyAg
ICAgICAgaWYgbm90IGhhc2F0dHIob2JqLCAiaXRlbXMiKToKICAgICAgICAgICAgIHJhaXNlIE1h
bmlmZXN0RXJyb3IKIAotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7dG9fb3NfcGF0aChrKTog
diBmb3IgaywgdiBpbiBpdGVyaXRlbXMob2JqWyJwYXRocyJdKX0KLQogICAgICAgICBmb3IgdGVz
dF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0pOgogICAgICAgICAg
ICAgaWYgdGVzdF90eXBlIG5vdCBpbiBpdGVtX2NsYXNzZXM6CiAgICAgICAgICAgICAgICAgcmFp
c2UgTWFuaWZlc3RFcnJvcgpAQCAtNDc3LDcgKzI5MiwxMCBAQCBjbGFzcyBNYW5pZmVzdChvYmpl
Y3QpOgogICAgICAgICAgICAgaWYgdHlwZXMgYW5kIHRlc3RfdHlwZSBub3QgaW4gdHlwZXM6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2VsZi5fZGF0YVt0ZXN0X3R5
cGVdLnNldF9qc29uKHRlc3RzX3Jvb3QsIHR5cGVfcGF0aHMpCisgICAgICAgICAgICBpZiBub3Qg
Y2FsbGVlX293bnNfb2JqOgorICAgICAgICAgICAgICAgIHR5cGVfcGF0aHMgPSBkZWVwY29weSh0
eXBlX3BhdGhzKQorCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24o
dHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC01MTEsMTAgKzMyOSwxMSBA
QCBkZWYgX2xvYWQobG9nZ2VyLCAgIyB0eXBlOiBMb2dnZXIKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0ICVzIiAlIG1hbmlm
ZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyYiIp
IGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLm9wZW4obWFuaWZlc3QsICJyIiwgZW5jb2Rpbmc9
InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgICAgICBydiA9IE1hbmlmZXN0LmZyb21fanNvbih0
ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rf
anNvbi5sb2FkKGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVz
PXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZV9v
d25zX29iaj1UcnVlKQogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtNTIzLDcgKzM0Miw4IEBAIGRl
ZiBfbG9hZChsb2dnZXIsICAjIHR5cGU6IExvZ2dlcgogICAgIGVsc2U6CiAgICAgICAgIHJ2ID0g
TWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZXM9dHlwZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVzPXR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWVfb3duc19v
Ymo9VHJ1ZSkKIAogICAgIGlmIGFsbG93X2NhY2hlZDoKICAgICAgICAgX19sb2FkX2NhY2hlW21h
bmlmZXN0X3BhdGhdID0gcnYKQEAgLTU0MCw3ICszNjAsOCBAQCBkZWYgbG9hZF9hbmRfdXBkYXRl
KHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdf
Y29weT1UcnVlLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAgIHR5cGVzPU5vbmUs
ICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KICAgICAgICAgICAgICAgICAgICAg
d3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAotICAgICAgICAgICAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIGFsbG93
X2NhY2hlZD1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVs
PVRydWUgICMgdHlwZTogYm9vbAogICAgICAgICAgICAgICAgICAgICApOgogICAgICMgdHlwZTog
KC4uLikgLT4gTWFuaWZlc3QKICAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkKQEAgLTU2OCw3ICsz
ODksNyBAQCBkZWYgbG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IGJ5dGVzCiAg
ICAgaWYgcmVidWlsZCBvciB1cGRhdGU6CiAgICAgICAgIHRyZWUgPSB2Y3MuZ2V0X3RyZWUodGVz
dHNfcm9vdCwgbWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgsIGNhY2hlX3Jvb3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5LCByZWJ1aWxkKQotICAgICAgICBjaGFuZ2Vk
ID0gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgICAgIGNoYW5nZWQgPSBtYW5pZmVzdC51cGRh
dGUodHJlZSwgcGFyYWxsZWwpCiAgICAgICAgIGlmIHdyaXRlX21hbmlmZXN0IGFuZCBjaGFuZ2Vk
OgogICAgICAgICAgICAgd3JpdGUobWFuaWZlc3QsIG1hbmlmZXN0X3BhdGgpCiAgICAgICAgIHRy
ZWUuZHVtcF9jYWNoZXMoKQpAQCAtNTgxLDkgKzQwMiw5IEBAIGRlZiB3cml0ZShtYW5pZmVzdCwg
bWFuaWZlc3RfcGF0aCk6CiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUobWFuaWZlc3Rf
cGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgogICAgICAgICBvcy5t
YWtlZGlycyhkaXJfbmFtZSkKLSAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgIndiIikgYXMg
ZjoKKyAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwgInciKSBhcyBmOgogICAgICAgICAjIFVz
ZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50IHRy
YWlsaW5nCiAgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJh
cnkvanNvbi5odG1sI2pzb24uZHVtcAotICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNv
bigpLCBmLAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9fanNvbihjYWxsZXJfb3duc19v
Ymo9VHJ1ZSksIGYsCiAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTEs
IHNlcGFyYXRvcnM9KCcsJywgJzogJykpCiAgICAgICAgIGYud3JpdGUoIlxuIikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weQppbmRleCBiOWRjYzhmNTM2MzZk
M2RiODBlNDUxOGY3ZDgzODAyN2YwOThhOGQ3Li4yOTlhZDIxMmY3NjgwZTc1MTc1MDU2NjdjNmUw
OWJkNjBlZDBiN2M0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2Vm
aWxlLnB5CkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHJlCiBpbXBvcnQg
b3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIFBZMworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBlbnN1cmVfdGV4dCwgaXRl
cml0ZW1zLCB0ZXh0X3R5cGUKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJs
am9pbgogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTMzLDcgKzMzLDcgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogaW1wb3J0IGh0bWw1bGliCiAKIGZyb20gLiBpbXBvcnQgWE1MUGFy
c2VyCi1mcm9tIC5pdGVtIGltcG9ydCAoTWFuaWZlc3RJdGVtLCBNYW51YWxUZXN0LCBXZWJEcml2
ZXJTcGVjVGVzdCwgUmVmVGVzdE5vZGUsIFRlc3RoYXJuZXNzVGVzdCwKK2Zyb20gLml0ZW0gaW1w
b3J0IChNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0LCBSZWZUZXN0
LCBUZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUsIENyYXNo
VGVzdCwgQ29uZm9ybWFuY2VDaGVja2VyVGVzdCwgVmlzdWFsVGVzdCkKIGZyb20gLnV0aWxzIGlt
cG9ydCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hlZF9wcm9wZXJ0eQogCkBAIC01Niw5ICs1
Niw5IEBAIGRlZiByZXBsYWNlX2VuZChzLCBvbGQsIG5ldyk6CiAKIAogZGVmIHJlYWRfc2NyaXB0
X21ldGFkYXRhKGYsIHJlZ2V4cCk6Ci0gICAgIyB0eXBlOiAoQmluYXJ5SU8sIFBhdHRlcm5bYnl0
ZXNdKSAtPiBJdGVyYWJsZVtUdXBsZVtieXRlcywgYnl0ZXNdXQorICAgICMgdHlwZTogKEJpbmFy
eUlPLCBQYXR0ZXJuW2J5dGVzXSkgLT4gSXRlcmFibGVbVHVwbGVbVGV4dCwgVGV4dF1dCiAgICAg
IiIiCi0gICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0cmluZ3MpIGZyb20g
dGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAorICAgIFlpZWxkcyBhbnkgbWV0YWRhdGEgKHBhaXJz
IG9mIHN0cmluZ3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAogICAgIGFzIHNwZWNp
ZmllZCBhY2NvcmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCiAKICAgICBgcmVnZXhwYCAtIFJl
Z2V4cCBjb250YWluaW5nIHR3byBncm91cHMgY29udGFpbmluZyB0aGUgbWV0YWRhdGEgbmFtZSBh
bmQKQEAgLTcwLDI3ICs3MCwyNSBAQCBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhw
KToKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHlpZWxk
IChtLmdyb3VwcygpWzBdLCBtLmdyb3VwcygpWzFdKQorICAgICAgICB5aWVsZCAobS5ncm91cHMo
KVswXS5kZWNvZGUoInV0ZjgiKSwgbS5ncm91cHMoKVsxXS5kZWNvZGUoInV0ZjgiKSkKIAogCiBf
YW55X3ZhcmlhbnRzID0gewotICAgIGIiZGVmYXVsdCI6IHsibG9uZ2hhbmQiOiB7YiJ3aW5kb3ci
LCBiImRlZGljYXRlZHdvcmtlciJ9fSwKLSAgICBiIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnku
aHRtbCJ9LAotICAgIGIic2VydmljZXdvcmtlciI6IHsiZm9yY2VfaHR0cHMiOiBUcnVlfSwKLSAg
ICBiInNoYXJlZHdvcmtlciI6IHt9LAotICAgIGIiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgi
OiAiLmFueS53b3JrZXIuaHRtbCJ9LAotICAgIGIid29ya2VyIjogeyJsb25naGFuZCI6IHtiImRl
ZGljYXRlZHdvcmtlciIsIGIic2hhcmVkd29ya2VyIiwgYiJzZXJ2aWNld29ya2VyIn19LAotICAg
IGIianNzaGVsbCI6IHsic3VmZml4IjogIi5hbnkuanMifSwKLX0gICMgdHlwZTogRGljdFtieXRl
cywgRGljdFtzdHIsIEFueV1dCisgICAgIndpbmRvdyI6IHsic3VmZml4IjogIi5hbnkuaHRtbCJ9
LAorICAgICJzZXJ2aWNld29ya2VyIjogeyJmb3JjZV9odHRwcyI6IFRydWV9LAorICAgICJzaGFy
ZWR3b3JrZXIiOiB7fSwKKyAgICAiZGVkaWNhdGVkd29ya2VyIjogeyJzdWZmaXgiOiAiLmFueS53
b3JrZXIuaHRtbCJ9LAorICAgICJ3b3JrZXIiOiB7ImxvbmdoYW5kIjogeyJkZWRpY2F0ZWR3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIifX0sCisgICAgImpzc2hlbGwiOiB7
InN1ZmZpeCI6ICIuYW55LmpzIn0sCit9ICAjIHR5cGU6IERpY3RbVGV4dCwgRGljdFtUZXh0LCBB
bnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgotICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBlOiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIi
Ci0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkg
dGhlIGdpdmVuIGtleXdvcmQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5n
cykgZGVmaW5lZCBieSB0aGUgZ2l2ZW4ga2V5d29yZC4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNp
bnN0YW5jZShpdGVtLCBiaW5hcnlfdHlwZSksIGl0ZW0KLSAgICBhc3NlcnQgbm90IGl0ZW0uc3Rh
cnRzd2l0aChiIiEiKSwgaXRlbQorICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIHRleHRfdHlw
ZSksIGl0ZW0KIAogICAgIHZhcmlhbnQgPSBfYW55X3ZhcmlhbnRzLmdldChpdGVtLCBOb25lKQog
ICAgIGlmIHZhcmlhbnQgaXMgTm9uZToKQEAgLTEwMCw0OCArOTgsNDYgQEAgZGVmIGdldF9hbnlf
dmFyaWFudHMoaXRlbSk6CiAKIAogZGVmIGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpOgotICAg
ICMgdHlwZTogKCkgLT4gU2V0W2J5dGVzXQorICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCiAg
ICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIHRoYXQg
d2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCisgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAo
c3RyaW5ncykgdGhhdCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KICAgICAiIiIKLSAgICByZXR1
cm4gc2V0KF9hbnlfdmFyaWFudHNbYiJkZWZhdWx0Il1bImxvbmdoYW5kIl0pCisgICAgcmV0dXJu
IHNldCh7IndpbmRvdyIsICJkZWRpY2F0ZWR3b3JrZXIifSkKIAogCiBkZWYgcGFyc2VfdmFyaWFu
dHModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBTZXRbYnl0ZXNdCisgICAgIyB0eXBl
OiAoVGV4dCkgLT4gU2V0W1RleHRdCiAgICAgIiIiCi0gICAgUmV0dXJucyBhIHNldCBvZiB2YXJp
YW50cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgYSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUuCisg
ICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoc3RyaW5ncykgZGVmaW5lZCBieSBhIGNvbW1h
LXNlcGFyYXRlZCB2YWx1ZS4KICAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwg
YmluYXJ5X3R5cGUpLCB2YWx1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5
cGUpLCB2YWx1ZQogCi0gICAgZ2xvYmFscyA9IGdldF9kZWZhdWx0X2FueV92YXJpYW50cygpCisg
ICAgaWYgdmFsdWUgPT0gIiI6CisgICAgICAgIHJldHVybiBnZXRfZGVmYXVsdF9hbnlfdmFyaWFu
dHMoKQogCi0gICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIik6CisgICAgZ2xvYmFscyA9
IHNldCgpCisgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoIiwiKToKICAgICAgICAgaXRlbSA9
IGl0ZW0uc3RyaXAoKQotICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoYiIhIik6Ci0gICAgICAg
ICAgICBnbG9iYWxzIC09IGdldF9hbnlfdmFyaWFudHMoaXRlbVsxOl0pCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKLQorICAgICAg
ICBnbG9iYWxzIHw9IGdldF9hbnlfdmFyaWFudHMoaXRlbSkKICAgICByZXR1cm4gZ2xvYmFscwog
CiAKIGRlZiBnbG9iYWxfc3VmZml4ZXModmFsdWUpOgotICAgICMgdHlwZTogKGJ5dGVzKSAtPiBT
ZXRbVHVwbGVbYnl0ZXMsIGJvb2xdXQorICAgICMgdHlwZTogKFRleHQpIC0+IFNldFtUdXBsZVtU
ZXh0LCBib29sXV0KICAgICAiIiIKICAgICBZaWVsZHMgdHVwbGVzIG9mIHRoZSByZWxldmFudCBm
aWxlbmFtZSBzdWZmaXggKGEgc3RyaW5nKSBhbmQgd2hldGhlciB0aGUKICAgICB2YXJpYW50IGlz
IGludGVuZGVkIHRvIHJ1biBpbiBhIEpTIHNoZWxsLCBmb3IgdGhlIHZhcmlhbnRzIGRlZmluZWQg
YnkgdGhlCiAgICAgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlLgogICAgICIiIgotICAgIGFz
c2VydCBpc2luc3RhbmNlKHZhbHVlLCBiaW5hcnlfdHlwZSksIHZhbHVlCisgICAgYXNzZXJ0IGlz
aW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSksIHZhbHVlCiAKICAgICBydiA9IHNldCgpCiAKICAg
ICBnbG9iYWxfdHlwZXMgPSBwYXJzZV92YXJpYW50cyh2YWx1ZSkKICAgICBmb3IgZ2xvYmFsX3R5
cGUgaW4gZ2xvYmFsX3R5cGVzOgogICAgICAgICB2YXJpYW50ID0gX2FueV92YXJpYW50c1tnbG9i
YWxfdHlwZV0KLSAgICAgICAgc3VmZml4ID0gdmFyaWFudC5nZXQoInN1ZmZpeCIsICIuYW55LiVz
Lmh0bWwiICUgZ2xvYmFsX3R5cGUuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICBydi5hZGQoKHN1
ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gYiJqc3NoZWxsIikpCisgICAgICAgIHN1ZmZpeCA9IHZhcmlh
bnQuZ2V0KCJzdWZmaXgiLCAiLmFueS4lcy5odG1sIiAlIGdsb2JhbF90eXBlKQorICAgICAgICBy
di5hZGQoKHN1ZmZpeCwgZ2xvYmFsX3R5cGUgPT0gImpzc2hlbGwiKSkKIAogICAgIHJldHVybiBy
dgogCkBAIC0xNTYsNiArMTUyLDggQEAgZGVmIGdsb2JhbF92YXJpYW50X3VybCh1cmwsIHN1ZmZp
eCk6CiAgICAgIyB0aGUgZm9ybSAuaHR0cHMuYW55LmpzCiAgICAgaWYgIi5odHRwcy4iIGluIHVy
bCBhbmQgc3VmZml4LnN0YXJ0c3dpdGgoIi5odHRwcy4iKToKICAgICAgICAgdXJsID0gdXJsLnJl
cGxhY2UoIi5odHRwcy4iLCAiLiIpCisgICAgZWxpZiAiLmgyLiIgaW4gdXJsIGFuZCBzdWZmaXgu
c3RhcnRzd2l0aCgiLmgyLiIpOgorICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgiLmgyLiIsICIu
IikKICAgICByZXR1cm4gcmVwbGFjZV9lbmQodXJsLCAiLmpzIiwgc3VmZml4KQogCiAKQEAgLTE5
MiwyNCArMTkwLDIxIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMgdHlwZTogU2V0W1R1cGxlW2J5dGVzLCAuLi5d
XQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFz
ZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToKLSAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBB
bnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoX3N0ciwgdXJsX2Jhc2Us
IGhhc2g9Tm9uZSwgY29udGVudHM9Tm9uZSk6CisgICAgICAgICMgdHlwZTogKEFueVN0ciwgQW55
U3RyLCBUZXh0LCBPcHRpb25hbFtUZXh0XSwgT3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCiAgICAg
ICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291cmNlIHRyZWUuCiAKICAg
ICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0
cmVlCi0gICAgICAgIDpwYXJhbSByZWxfcGF0aDogRmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRlc3Rz
X3Jvb3QKKyAgICAgICAgOnBhcmFtIHJlbF9wYXRoX3N0cjogRmlsZSBwYXRoIHJlbGF0aXZlIHRv
IHRlc3RzX3Jvb3QKICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIFVSTCB1c2VkIHdoZW4g
Y29udmVydGluZyBmaWxlIHBhdGhzIHRvIHVybHMKICAgICAgICAgOnBhcmFtIGNvbnRlbnRzOiBC
eXRlIGFycmF5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBvciBgYE5vbmVgYC4KICAgICAg
ICAgIiIiCiAKKyAgICAgICAgcmVsX3BhdGggPSBlbnN1cmVfdGV4dChyZWxfcGF0aF9zdHIpCiAg
ICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5pc2FicyhyZWxfcGF0aCksIHJlbF9wYXRoCi0KICAg
ICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgIyBkbyBzbGFzaCBub3JtYWxp
emF0aW9uIG9uIFdpbmRvd3MKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVsX3BhdGgsIGJp
bmFyeV90eXBlKToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHJlbF9wYXRoLnJlcGxhY2Uo
YiIvIiwgYiJcXCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlbF9wYXRo
ID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKKyAgICAgICAgICAgIHJlbF9wYXRoID0g
cmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAogICAgICAgICBkaXJfcGF0aCwgZmlsZW5h
bWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQogICAgICAgICBuYW1lLCBleHQgPSBvcy5wYXRo
LnNwbGl0ZXh0KGZpbGVuYW1lKQpAQCAtMjIwLDEzICsyMTUsMTMgQEAgY2xhc3MgU291cmNlRmls
ZShvYmplY3QpOgogCiAgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0KCIuIilbMTpdCiAK
LSAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVzdHNfcm9vdCAgIyB0eXBlOiBVbmlvbltieXRl
cywgVGV4dF0KLSAgICAgICAgc2VsZi5yZWxfcGF0aCA9IHJlbF9wYXRoICAjIHR5cGU6IFVuaW9u
W2J5dGVzLCBUZXh0XQotICAgICAgICBzZWxmLmRpcl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTog
VW5pb25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0
eXBlOiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBl
OiBVbmlvbltieXRlcywgVGV4dF0KLSAgICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVW5p
b25bYnl0ZXMsIFRleHRdCi0gICAgICAgIHNlbGYudHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5
cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0XV0KKyAgICAgICAgc2VsZi50ZXN0c19yb290
ID0gZW5zdXJlX3RleHQodGVzdHNfcm9vdCkgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnJl
bF9wYXRoID0gcmVsX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmRpcl9wYXRoID0g
ZGlyX3BhdGggICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUg
ICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lICAjIHR5cGU6IFRleHQKKyAg
ICAgICAgc2VsZi5leHQgPSBleHQgICMgdHlwZTogVGV4dAorICAgICAgICBzZWxmLnR5cGVfZmxh
ZyA9IHR5cGVfZmxhZyAgIyB0eXBlOiBPcHRpb25hbFtUZXh0XQogICAgICAgICBzZWxmLm1ldGFf
ZmxhZ3MgPSBtZXRhX2ZsYWdzICAjIHR5cGU6IFVuaW9uW0xpc3RbYnl0ZXNdLCBMaXN0W1RleHRd
XQogICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKICAgICAgICAgc2VsZi5jb250ZW50
cyA9IGNvbnRlbnRzCkBAIC0yNDAsOSArMjM1LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3Qp
OgogCiAgICAgICAgIGlmICJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iIGluIHJ2OgogICAgICAgICAg
ICAgY2FjaGVkX3Byb3BlcnRpZXMgPSBydlsiX19jYWNoZWRfcHJvcGVydGllc19fIl0KLSAgICAg
ICAgICAgIGZvciBrZXkgaW4gcnYua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBj
YWNoZWRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICAgICAgZGVsIHJ2W2tleV0KKyAgICAg
ICAgICAgIHJ2ID0ge2tleTp2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMocnYpIGlm
IGtleSBub3QgaW4gY2FjaGVkX3Byb3BlcnRpZXN9CiAgICAgICAgICAgICBkZWwgcnZbIl9fY2Fj
aGVkX3Byb3BlcnRpZXNfXyJdCiAgICAgICAgIHJldHVybiBydgogCkBAIC0yNzksOSArMjcyLDE0
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgIGZpbGVfb2JqID0gb3Bl
bihzZWxmLnBhdGgsICdyYicpCiAgICAgICAgIHJldHVybiBmaWxlX29iagogCisgICAgQGNhY2hl
ZF9wcm9wZXJ0eQorICAgIGRlZiByZWxfcGF0aF9wYXJ0cyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBUdXBsZVtUZXh0LCAuLi5dCisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLnJlbF9w
YXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKwogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYg
cGF0aChzZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBVbmlvbltieXRlcywgVGV4dF0KKyAg
ICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2Vs
Zi50ZXN0c19yb290LCBzZWxmLnJlbF9wYXRoKQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQpAQCAt
Mjk3LDE3ICsyOTUsMTMgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hl
ZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgotICAgICAgICAjIHR5cGU6ICgpIC0+IGJ5
dGVzCisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBpZiBub3Qgc2VsZi5faGFz
aDoKICAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKCkgYXMgZjoKICAgICAgICAgICAgICAgICBj
b250ZW50ID0gZi5yZWFkKCkKIAogICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKChiImJsb2Ig
IiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKLSAgICAgICAgICAgIGhh
c2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5cGU6IHN0cgotICAg
ICAgICAgICAgaWYgUFkzOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoX3N0ci5l
bmNvZGUoImFzY2lpIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
aGFzaCA9IGhhc2hfc3RyCisgICAgICAgICAgICBzZWxmLl9oYXNoID0gdGV4dF90eXBlKGhhc2hs
aWIuc2hhMShkYXRhKS5oZXhkaWdlc3QoKSkKIAogICAgICAgICByZXR1cm4gc2VsZi5faGFzaAog
CkBAIC0zMTYsMTggKzMxMCwxNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
IGlmIHNlbGYuZGlyX3BhdGggPT0gIiI6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAg
ICAgIHBhcnRzID0gc2VsZi5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgcGFy
dHMgPSBzZWxmLnJlbF9wYXRoX3BhcnRzCiAKICAgICAgICAgaWYgKHBhcnRzWzBdIGluIHNlbGYu
cm9vdF9kaXJfbm9uX3Rlc3Qgb3IKICAgICAgICAgICAgIGFueShpdGVtIGluIHNlbGYuZGlyX25v
bl90ZXN0IGZvciBpdGVtIGluIHBhcnRzKSBvcgotICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4o
cGF0aCldID09IGxpc3QocGF0aCkgZm9yIHBhdGggaW4gc2VsZi5kaXJfcGF0aF9ub25fdGVzdCkp
OgorICAgICAgICAgICAgYW55KHBhcnRzWzpsZW4ocGF0aCldID09IHBhdGggZm9yIHBhdGggaW4g
c2VsZi5kaXJfcGF0aF9ub25fdGVzdCkpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaW5fY29uZm9ybWFuY2VfY2hlY2tlcl9kaXIoc2Vs
Zik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAotICAgICAgICByZXR1cm4gKHNlbGYuZGly
X3BhdGggPT0gImNvbmZvcm1hbmNlLWNoZWNrZXJzIiBvcgotICAgICAgICAgICAgICAgIHNlbGYu
ZGlyX3BhdGguc3RhcnRzd2l0aCgiY29uZm9ybWFuY2UtY2hlY2tlcnMiICsgb3MucGF0aC5zZXAp
KQorICAgICAgICByZXR1cm4gc2VsZi5yZWxfcGF0aF9wYXJ0c1swXSA9PSAiY29uZm9ybWFuY2Ut
Y2hlY2tlcnMiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19ub25fdGVzdChzZWxm
KToKQEAgLTMzOSw2ICszMzIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5maWxlbmFtZSA9PSAiTUVUQS55bWwiIG9yCiAgICAgICAgICAgICAgICAg
c2VsZi5maWxlbmFtZS5zdGFydHN3aXRoKCIuIikgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZp
bGVuYW1lLmVuZHN3aXRoKCIuaGVhZGVycyIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi5maWxl
bmFtZS5lbmRzd2l0aCgiLmluaSIpIG9yCiAgICAgICAgICAgICAgICAgc2VsZi5pbl9ub25fdGVz
dF9kaXIoKSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzk0LDEwICszODgsMTAgQEAgY2xhc3MgU291
cmNlRmlsZShvYmplY3QpOgogICAgICAgICBiZSBhIHdlYmRyaXZlciBzcGVjIHRlc3QgZmlsZSIi
IgogICAgICAgICAjIHdkc3BlYyB0ZXN0cyBhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YgL3dlYmRy
aXZlciBleGNsdWRpbmcgX19pbml0X18ucHkKICAgICAgICAgIyBmaWxlcy4KLSAgICAgICAgcmVs
X2Rpcl90cmVlID0gc2VsZi5yZWxfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKLSAgICAgICAgcmV0
dXJuICgoKHJlbF9kaXJfdHJlZVswXSA9PSAid2ViZHJpdmVyIiBhbmQgbGVuKHJlbF9kaXJfdHJl
ZSkgPiAxKSBvcgotICAgICAgICAgICAgICAgICAocmVsX2Rpcl90cmVlWzoyXSA9PSBbImluZnJh
c3RydWN0dXJlIiwgIndlYmRyaXZlciJdIGFuZAotICAgICAgICAgICAgICAgICAgbGVuKHJlbF9k
aXJfdHJlZSkgPiAyKSkgYW5kCisgICAgICAgIHJlbF9wYXRoX3BhcnRzID0gc2VsZi5yZWxfcGF0
aF9wYXJ0cworICAgICAgICByZXR1cm4gKCgocmVsX3BhdGhfcGFydHNbMF0gPT0gIndlYmRyaXZl
ciIgYW5kIGxlbihyZWxfcGF0aF9wYXJ0cykgPiAxKSBvcgorICAgICAgICAgICAgICAgICAocmVs
X3BhdGhfcGFydHNbOjJdID09ICgiaW5mcmFzdHJ1Y3R1cmUiLCAid2ViZHJpdmVyIikgYW5kCisg
ICAgICAgICAgICAgICAgICBsZW4ocmVsX3BhdGhfcGFydHMpID4gMikpIGFuZAogICAgICAgICAg
ICAgICAgIHNlbGYuZmlsZW5hbWUgbm90IGluICgiX19pbml0X18ucHkiLCAiY29uZnRlc3QucHki
KSBhbmQKICAgICAgICAgICAgICAgICBmbm1hdGNoKHNlbGYuZmlsZW5hbWUsIHdkX3BhdHRlcm4p
KQogCkBAIC00MTMsNiArNDA3LDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfZmxhZyA9PSAi
Y3Jhc2giIG9yICJjcmFzaHRlc3RzIiBpbiBzZWxmLmRpcl9wYXRoLnNwbGl0KG9zLnBhdGguc2Vw
KQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWVfaXNfdGVudGF0aXZlKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKKyAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0byBiZSBhCisgICAgICAgIHRl
bnRhdGl2ZSBmaWxlLgorCisgICAgICAgIFNlZSBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5v
cmcvd3JpdGluZy10ZXN0cy9maWxlLW5hbWVzLmh0bWwjdGVzdC1mZWF0dXJlcyIiIgorICAgICAg
ICByZXR1cm4gInRlbnRhdGl2ZSIgaW4gc2VsZi5tZXRhX2ZsYWdzCisKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgbWFya3VwX3R5cGUoc2VsZik6CiAgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9u
YWxbVGV4dF0KQEAgLTQ2NSw3ICs0NjgsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAK
ICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNjcmlwdF9tZXRhZGF0YShzZWxmKToKLSAg
ICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtMaXN0W1R1cGxlW2J5dGVzLCBieXRlc11dXQor
ICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQog
ICAgICAgICBpZiBzZWxmLm5hbWVfaXNfd29ya2VyIG9yIHNlbGYubmFtZV9pc19tdWx0aV9nbG9i
YWwgb3Igc2VsZi5uYW1lX2lzX3dpbmRvdzoKICAgICAgICAgICAgIHJlZ2V4cCA9IGpzX21ldGFf
cmUKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfd2ViZHJpdmVyOgpAQCAtNDgyLDcgKzQ4NSw3
IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgIiIiVGhlIHRpbWVvdXQgb2Yg
YSB0ZXN0IG9yIHJlZmVyZW5jZSBmaWxlLiAibG9uZyIgaWYgdGhlIGZpbGUgaGFzIGFuIGV4dGVu
ZGVkIHRpbWVvdXQKICAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UiIiIKICAgICAgICAgaWYgc2Vs
Zi5zY3JpcHRfbWV0YWRhdGE6Ci0gICAgICAgICAgICBpZiBhbnkobSA9PSAoYiJ0aW1lb3V0Iiwg
YiJsb25nIikgZm9yIG0gaW4gc2VsZi5zY3JpcHRfbWV0YWRhdGEpOgorICAgICAgICAgICAgaWYg
YW55KG0gPT0gKCJ0aW1lb3V0IiwgImxvbmciKSBmb3IgbSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0
YSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJsb25nIgogCiAgICAgICAgIGlmIHNlbGYucm9v
dCBpcyBOb25lOgpAQCAtNjQ0LDggKzY0Nyw4IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAg
ICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAgICAgICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ2YXJpYW50IjoKLSAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlLmRl
Y29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBpZiBrZXkgPT0gInZhcmlhbnQiOgorICAg
ICAgICAgICAgICAgICAgICBydi5hcHBlbmQodmFsdWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBmb3IgZWxlbWVudCBpbiBzZWxmLnZhcmlhbnRfbm9kZXM6CiAgICAgICAgICAgICAgICAg
aWYgImNvbnRlbnQiIGluIGVsZW1lbnQuYXR0cmliOgpAQCAtNjc3LDYgKzY4MCwzNiBAQCBjbGFz
cyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBy
ZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5
CisgICAgZGVmIHF1aWNfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtF
bGVtZW50VHJlZS5FbGVtZW50XQorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1l
bnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKKyAgICAgICAgc3BlY2lm
eSB3aGV0aGVyIGl0IG5lZWRzIFFVSUMgc2VydmVyLiIiIgorICAgICAgICBhc3NlcnQgc2VsZi5y
b290IGlzIG5vdCBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ncXVpYyddIikKKworICAgIEBj
YWNoZWRfcHJvcGVydHkKKyAgICBkZWYgcXVpYyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAt
PiBPcHRpb25hbFtib29sXQorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciBh
IHRlc3QgcmVxdWlyZXMgUVVJQyBzZXJ2ZXIKKworICAgICAgICBEZXRlcm1pbmVkIGJ5IDxtZXRh
PiBlbGVtZW50cyAoYHF1aWNfbm9kZXMoKWApIGFuZCAiLy8gTUVUQSIgY29tbWVudHMKKyAgICAg
ICAgKGBzY3JpcHRfbWV0YWRhdGEoKWApLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5z
Y3JpcHRfbWV0YWRhdGE6CisgICAgICAgICAgICBpZiBhbnkobSA9PSAoInF1aWMiLCAidHJ1ZSIp
IGZvciBtIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICBpZiBzZWxmLnF1aWNfbm9kZXM6CisgICAgICAgICAgICBxdWljX3N0
ciA9IHNlbGYucXVpY19ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgImZhbHNlIikgICMg
dHlwZTogVGV4dAorICAgICAgICAgICAgaWYgcXVpY19zdHIubG93ZXIoKSA9PSAidHJ1ZSI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1cm4gTm9uZQorCiAgICAg
QGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgogICAgICAgICAj
IHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KQEAgLTc4NCw2ICs4MTcsOCBA
QCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuaXRlbXNfY2FjaGU6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCisgICAgICAgIGRyb3BfY2Fj
aGVkID0gInJvb3QiIG5vdCBpbiBzZWxmLl9fZGljdF9fCisKICAgICAgICAgaWYgc2VsZi5uYW1l
X2lzX25vbl90ZXN0OgogICAgICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFsKICAgICAgICAgICAg
ICAgICBTdXBwb3J0RmlsZSgKQEAgLTgzNSwxMSArODcwLDExIEBAIGNsYXNzIFNvdXJjZUZpbGUo
b2JqZWN0KToKICAgICAgICAgICAgICAgICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lz
X211bHRpX2dsb2JhbDoKLSAgICAgICAgICAgIGdsb2JhbHMgPSBiIiIKKyAgICAgICAgICAgIGds
b2JhbHMgPSB1IiIKICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCiAg
ICAgICAgICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAi
Z2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCiAKQEAgLTg1MSw2ICs4ODYsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF92YXJpYW50X3VybChzZWxmLnJlbF91
cmwsIHN1ZmZpeCkgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYu
dGltZW91dCwKICAgICAgICAgICAgICAgICAgICAganNzaGVsbD1qc3NoZWxsLAorICAgICAgICAg
ICAgICAgICAgICBxdWljPXNlbGYucXVpYywKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21l
dGFkYXRhPXNlbGYuc2NyaXB0X21ldGFkYXRhCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgIGZvciAoc3VmZml4LCBqc3NoZWxsKSBpbiBzb3J0ZWQoZ2xvYmFsX3N1ZmZpeGVzKGds
b2JhbHMpKQpAQCAtODY3LDYgKzkwMyw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgdGVz
dF91cmwgKyB2YXJpYW50LAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91
dCwKKyAgICAgICAgICAgICAgICAgICAgcXVpYz1zZWxmLnF1aWMsCiAgICAgICAgICAgICAgICAg
ICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHMKQEAg
LTg4Miw2ICs5MTksNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsICsgdmFy
aWFudCwKICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAg
ICAgICAgICAgICAgIHF1aWM9c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICBzY3JpcHRf
bWV0YWRhdGE9c2VsZi5zY3JpcHRfbWV0YWRhdGEKICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCkBAIC05MTgsMTkgKzk1
NiwyMSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9c2VsZi5x
dWljLAogICAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPXRlc3Rkcml2ZXIsCiAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQogICAgICAg
ICAgICAgICAgICkpCiAKICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6Ci0g
ICAgICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWwotICAgICAgICAgICAgICAg
IFJlZlRlc3ROb2RlKAorICAgICAgICAgICAgcnYgPSBSZWZUZXN0Lml0ZW1fdHlwZSwgWworICAg
ICAgICAgICAgICAgIFJlZlRlc3QoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9v
dCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfdXJsLAogICAg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPXNlbGYucmVmZXJlbmNlcywKICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHF1aWM9
c2VsZi5xdWljLAogICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXplPXNlbGYudmlld3Bv
cnRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAogICAgICAgICAgICAg
ICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CkBAIC05NTYsNCArOTk2LDExIEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgICAgICBzZWxmLml0ZW1zX2NhY2hlID0gcnYKIAorICAgICAg
ICBpZiBkcm9wX2NhY2hlZCBhbmQgIl9fY2FjaGVkX3Byb3BlcnRpZXNfXyIgaW4gc2VsZi5fX2Rp
Y3RfXzoKKyAgICAgICAgICAgIGNhY2hlZF9wcm9wZXJ0aWVzID0gc2VsZi5fX2RpY3RfX1siX19j
YWNoZWRfcHJvcGVydGllc19fIl0KKyAgICAgICAgICAgIGZvciBwcm9wIGluIGNhY2hlZF9wcm9w
ZXJ0aWVzOgorICAgICAgICAgICAgICAgIGlmIHByb3AgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAg
ICAgICAgICAgICAgICAgZGVsIHNlbGYuX19kaWN0X19bcHJvcF0KKyAgICAgICAgICAgIGRlbCBz
ZWxmLl9fZGljdF9fWyJfX2NhY2hlZF9wcm9wZXJ0aWVzX18iXQorCiAgICAgICAgIHJldHVybiBy
dgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21h
bmlmZXN0LnB5CmluZGV4IDczM2NhZmRjYmU5ZGM5Y2UwN2NiM2U4NDNiZDk1NmQwMmM2ZmQyZmUu
LmI2MThkNzVlYzFlZDJlOTU1ZTI3Zjc2MzQ0NmMxYjBmYzM5ODdmMWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dGVzdHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKQEAg
LTUsNyArNSw3IEBAIGltcG9ydCBtb2NrCiBpbXBvcnQgaHlwb3RoZXNpcyBhcyBoCiBpbXBvcnQg
aHlwb3RoZXNpcy5zdHJhdGVnaWVzIGFzIGhzCiAKLWltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGlt
cG9ydCBpdGVyaXRlbXMKIAogZnJvbSAuLiBpbXBvcnQgbWFuaWZlc3QsIHNvdXJjZWZpbGUsIGl0
ZW0sIHV0aWxzCiAKQEAgLTE4LDcgKzE4LDEwIEBAIGlmIE1ZUFk6CiAKIGRlZiBTb3VyY2VGaWxl
V2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoc3RyLCBz
dHIsIFR5cGVbaXRlbS5NYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmlsZS5Tb3VyY2VG
aWxlCi0gICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcmVs
X3BhdGhfcGFydHMgPSB0dXBsZShwYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkKKyAgICBzID0gbW9j
ay5Nb2NrKHJlbF9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICByZWxfcGF0aF9wYXJ0cz1y
ZWxfcGF0aF9wYXJ0cywKKyAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCkKICAgICBpZiBjbHMg
PT0gaXRlbS5TdXBwb3J0RmlsZToKICAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgp
CiAgICAgZWxzZToKQEAgLTI5LDUxICszMiw4MyBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBh
dGgsIGhhc2gsIGNscywgKiprd2FyZ3MpOgogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0cyhwYXRo
LCBoYXNoLCBjbHMsIHZhcmlhbnRzKToKICAgICAjIHR5cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVt
LlVSTE1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2VmaWxlLlNvdXJjZUZpbGUKLSAgICBz
ID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFzaCkKKyAgICByZWxfcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQob3MucGF0aC5zZXApKQorICAgIHMgPSBtb2NrLk1vY2socmVs
X3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRoX3BhcnRzPXJlbF9wYXRoX3Bh
cnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogICAgIHRlc3RzID0gW2NscygiL2Zv
b2JhciIsIHBhdGgsICIvIiwgaXRlbVswXSwgKippdGVtWzFdKSBmb3IgaXRlbSBpbiB2YXJpYW50
c10KICAgICBzLm1hbmlmZXN0X2l0ZW1zID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0
ZW1fdHlwZSwgdGVzdHMpKQogICAgIHJldHVybiBzICAjIHR5cGU6IGlnbm9yZQogCiAKLUBocy5j
b21wb3NpdGUKLWRlZiByZWxfZGlyX2ZpbGVfcGF0aChkcmF3KToKLSAgICBsZW5ndGggPSBkcmF3
KGhzLmludGVnZXJzKG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MjApKQotICAgIGlmIGxlbmd0aCA9
PSAxOgotICAgICAgICByZXR1cm4gImEiCi0gICAgZWxzZToKLSAgICAgICAgcmVtYWluaW5nID0g
bGVuZ3RoIC0gMgotICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGguc2VwCi0gICAgICAg
IG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3NpemU9cmVtYWluaW5n
LCBtYXhfc2l6ZT1yZW1haW5pbmcpKQotICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtY2FzZSgi
YSIgKyBtaWQgKyAiYSIpCi0KLQogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJjZWZpbGVfc3RyYXRl
Z3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5lc3NUZXN0LCBpdGVt
LlJlZlRlc3ROb2RlLAorICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwg
aXRlbS5SZWZUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLk1hbnVhbFRlc3QsIGl0ZW0u
V2ViRHJpdmVyU3BlY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uQ29uZm9ybWFuY2VD
aGVja2VyVGVzdCwgaXRlbS5TdXBwb3J0RmlsZV0KICAgICBjbHMgPSBkcmF3KGhzLnNhbXBsZWRf
ZnJvbShpdGVtX2NsYXNzZXMpKQogCi0gICAgcGF0aCA9IGRyYXcocmVsX2Rpcl9maWxlX3BhdGgo
KSkKLSAgICBoYXNoID0gZHJhdyhocy50ZXh0KGFscGhhYmV0PSIwMTIzNDU2Nzg5YWJjZGVmIiwg
bWluX3NpemU9NDAsIG1heF9zaXplPTQwKSkKLSAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBh
dGgsIGhhc2g9aGFzaCkKKyAgICBwYXRoID0gdSJhIgorICAgIHJlbF9wYXRoX3BhcnRzID0gdHVw
bGUocGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpCisgICAgaGFzaCA9IGRyYXcoaHMudGV4dChhbHBo
YWJldD11IjAxMjM0NTY3ODlhYmNkZWYiLCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQorICAg
IHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwKKyAgICAgICAgICAgICAgICAgIHJlbF9wYXRo
X3BhcnRzPXJlbF9wYXRoX3BhcnRzLAorICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoKQogCi0g
ICAgaWYgY2xzIGlzIGl0ZW0uUmVmVGVzdE5vZGU6Ci0gICAgICAgIHJlZl9wYXRoID0gZHJhdyhy
ZWxfZGlyX2ZpbGVfcGF0aCgpKQotICAgICAgICBoLmFzc3VtZShwYXRoICE9IHJlZl9wYXRoKQor
ICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3Q6CisgICAgICAgIHJlZl9wYXRoID0gdSJiIgogICAg
ICAgICByZWZfZXEgPSBkcmF3KGhzLnNhbXBsZWRfZnJvbShbIj09IiwgIiE9Il0pKQogICAgICAg
ICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0
aCksIHJlZmVyZW5jZXM9Wyh1dGlscy5mcm9tX29zX3BhdGgocmVmX3BhdGgpLCByZWZfZXEpXSkK
ICAgICBlbGlmIGNscyBpcyBpdGVtLlN1cHBvcnRGaWxlOgogICAgICAgICB0ZXN0ID0gY2xzKCIv
Zm9vYmFyIiwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICB0ZXN0ID0gY2xzKCIvZm9vYmFyIiwg
cGF0aCwgIi8iLCB1dGlscy5mcm9tX29zX3BhdGgocGF0aCkpCisgICAgICAgIHRlc3QgPSBjbHMo
Ii9mb29iYXIiLCBwYXRoLCAiLyIsICJmb29iYXIiKQogCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9
IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkpCiAgICAgcmV0
dXJuIHMKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCi0gICAg
ICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCBtYXhfc2l6ZT0xMDAwLCB1bmlxdWVfYnk9bGFtYmRh
IHg6IHgucmVsX3BhdGgpKQorQGhzLmNvbXBvc2l0ZQorZGVmIG1hbmlmZXN0X3RyZWUoZHJhdyk6
CisgICAgbmFtZXMgPSBocy50ZXh0KGFscGhhYmV0PWhzLmNoYXJhY3RlcnMoYmxhY2tsaXN0X2No
YXJhY3RlcnM9dSJcMC9cXDoqXCI/PD58IiksIG1pbl9zaXplPTEpCisgICAgdHJlZSA9IGhzLnJl
Y3Vyc2l2ZShzb3VyY2VmaWxlX3N0cmF0ZWd5KCksCisgICAgICAgICAgICAgICAgICAgICAgICBs
YW1iZGEgY2hpbGRyZW46IGhzLmRpY3Rpb25hcmllcyhuYW1lcywgY2hpbGRyZW4sIG1pbl9zaXpl
PTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlYXZlcz0xMCkKKworICAgIGdlbmVy
YXRlZF9yb290ID0gZHJhdyh0cmVlKQorICAgIGguYXNzdW1lKGlzaW5zdGFuY2UoZ2VuZXJhdGVk
X3Jvb3QsIGRpY3QpKQorCisgICAgcmVmdGVzdF91cmxzID0gW10KKyAgICBvdXRwdXQgPSBbXQor
ICAgIHN0YWNrID0gWygoaywpLCB2KSBmb3IgaywgdiBpbiBpdGVyaXRlbXMoZ2VuZXJhdGVkX3Jv
b3QpXQorICAgIHdoaWxlIHN0YWNrOgorICAgICAgICBwYXRoLCBub2RlID0gc3RhY2sucG9wKCkK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBkaWN0KToKKyAgICAgICAgICAgIHN0YWNrLmV4
dGVuZCgocGF0aCArIChrLCksIHYpIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhub2RlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlbF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihwYXRoKQor
ICAgICAgICAgICAgbm9kZS5yZWxfcGF0aCA9IHJlbF9wYXRoCisgICAgICAgICAgICBub2RlLnJl
bF9wYXRoX3BhcnRzID0gdHVwbGUocGF0aCkKKyAgICAgICAgICAgIGZvciB0ZXN0X2l0ZW0gaW4g
bm9kZS5tYW5pZmVzdF9pdGVtcy5yZXR1cm5fdmFsdWVbMV06CisgICAgICAgICAgICAgICAgdGVz
dF9pdGVtLnBhdGggPSByZWxfcGF0aAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGVz
dF9pdGVtLCBpdGVtLlJlZlRlc3QpOgorICAgICAgICAgICAgICAgICAgICBpZiByZWZ0ZXN0X3Vy
bHM6CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV91cmxzID0gaHMuc2FtcGxlZF9m
cm9tKHJlZnRlc3RfdXJscykgfCBuYW1lcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfdXJscyA9IG5hbWVzCisgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZSA9IGhzLnR1cGxlcyhocy5zYW1wbGVkX2Zyb20oW3UiPT0iLCB1IiE9
Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVf
dXJscykKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyA9IGhzLmxpc3RzKHJlZmVyZW5j
ZSwgbWluX3NpemU9MSwgdW5pcXVlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRlc3RfaXRl
bS5yZWZlcmVuY2VzID0gZHJhdyhyZWZlcmVuY2VzKQorICAgICAgICAgICAgICAgICAgICByZWZ0
ZXN0X3VybHMuYXBwZW5kKHRlc3RfaXRlbS51cmwpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KG5vZGUpCisKKyAgICByZXR1cm4gb3V0cHV0CisKKworQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgp
KQorIyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hl
Y2s9KGguSGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRo
VGVzdCgiYSIsICIwIio0MCwgaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0KV0pCiBkZWYgdGVz
dF9tYW5pZmVzdF90b19qc29uKHMpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCkBAIC04
OCwxMCArMTIzLDExIEBAIGRlZiB0ZXN0X21hbmlmZXN0X3RvX2pzb24ocyk6CiAgICAgYXNzZXJ0
IGxvYWRlZC50b19qc29uKCkgPT0ganNvbl9zdHIKIAogCi1AaC5naXZlbihocy5saXN0cyhzb3Vy
Y2VmaWxlX3N0cmF0ZWd5KCksCi0gICAgICAgICAgICAgICAgICBtaW5fc2l6ZT0xLCB1bmlxdWVf
Ynk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQorQGguZ2l2ZW4obWFuaWZlc3RfdHJlZSgpKQorIyBG
SVhNRTogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvaXNzdWVzLzIyNzU4CitAaC5zZXR0aW5ncyhzdXBwcmVzc19oZWFsdGhfY2hlY2s9KGgu
SGVhbHRoQ2hlY2sudG9vX3Nsb3csKSkKIEBoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgi
YSIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpXSkKLUBoLmV4YW1wbGUoW1NvdXJjZUZp
bGVXaXRoVGVzdCgiYSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
YWEiLCAiPT0iKV0pXSkKK0BoLmV4YW1wbGUoW1NvdXJjZUZpbGVXaXRoVGVzdCgiYSIsICIwIio0
MCwgaXRlbS5SZWZUZXN0LCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQogZGVmIHRlc3Rf
bWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCkBA
IC0xMDcsMTkxICsxNDMsNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKIGRl
ZiB0ZXN0X21hbmlmZXN0X3RvX2pzb25fZm9yd2FyZHNsYXNoKCk6CiAgICAgbSA9IG1hbmlmZXN0
Lk1hbmlmZXN0KCkKIAotICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEvYiIsICIwIio0MCwg
aXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzLCBUcnVlKV0p
IGlzIFRydWUKLQotICAgIGFzc2VydCBtLnRvX2pzb24oKSA9PSB7Ci0gICAgICAgICdwYXRocyc6
IHsKLSAgICAgICAgICAgICdhL2InOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6
IDcsCi0gICAgICAgICd1cmxfYmFzZSc6ICcvJywKLSAgICAgICAgJ2l0ZW1zJzogewotICAgICAg
ICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICdhL2InOiBbKCdhL2InLCB7
fSldCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotQHB5dGVzdC5tYXJrLnNr
aXBpZihvcy5zZXAgIT0gIlxcIiwgcmVhc29uPSJiYWNrc2xhc2ggcGF0aCIpCi1kZWYgdGVzdF9t
YW5pZmVzdF90b19qc29uX2JhY2tzbGFzaCgpOgotICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgp
Ci0KLSAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhXFxiIiwgIjAiKjQwLCBpdGVtLlRlc3Ro
YXJuZXNzVGVzdCkKKyAgICBzID0gU291cmNlRmlsZVdpdGhUZXN0KCJhIiArIG9zLnBhdGguc2Vw
ICsgImIiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQogCiAgICAgYXNzZXJ0IG0udXBk
YXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBhc3NlcnQgbS50b19qc29uKCkgPT0gewot
ICAgICAgICAncGF0aHMnOiB7Ci0gICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgfSwKLSAg
ICAgICAgJ3ZlcnNpb24nOiA3LAotICAgICAgICAndXJsX2Jhc2UnOiAnLycsCi0gICAgICAgICdp
dGVtcyc6IHsKLSAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAn
YS9iJzogWygnYS9iJywge30pXQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0K
LWRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKLSAgICBqc29uX29iaiA9
IHsKLSAgICAgICAgJ3BhdGhzJzogewotICAgICAgICAgICAgJ2FcXGInOiAoJzAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCAndGVzdGhhcm5lc3MnKQotICAgICAgICB9
LAotICAgICAgICAndmVyc2lvbic6IDcsCisgICAgICAgICd2ZXJzaW9uJzogOCwKICAgICAgICAg
J3VybF9iYXNlJzogJy8nLAogICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAndGVzdGhh
cm5lc3MnOiB7Ci0gICAgICAgICAgICAgICAgJ2FcXGInOiBbWydhL2InLCB7fV1dCi0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAndGVzdGhhcm5lc3MnOiB7J2EnOiB7J2InOiBbCisgICAgICAg
ICAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLAorICAg
ICAgICAgICAgICAgIChOb25lLCB7fSkKKyAgICAgICAgICAgIF19fSwKICAgICAgICAgfQogICAg
IH0KIAotICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgbWFuaWZl
c3QuTWFuaWZlc3QuZnJvbV9qc29uKCIvIiwganNvbl9vYmopCiAKIAogZGVmIHRlc3RfcmVmdGVz
dF9jb21wdXRhdGlvbl9jaGFpbigpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIv
dGVzdDMiLCAiPT0iKV0pCisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAi
KjQwLCBpdGVtLlJlZlRlc3QsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQorICAgIHMy
ID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCByZWZl
cmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAogICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAo
czIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogICAg
IHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0gICAgYXNzZXJ0IGxpc3QobSkg
PT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0K
LQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9hZGQoKToKLSAg
ICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLQotICAgIGFz
c2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIGFzc2VydCBsaXN0KG0p
ID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgpfSldCi0KLSAg
ICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5v
ZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09IildKQotICAgIHRlc3QxID0gczEubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQg
aGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBub2RlCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygi
cmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9yZW1vdmUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MiIsICI9
PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0u
UmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QzIiwgIj09IildKQotCi0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgdGVzdDEg
PSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0gICAgdGVzdDIgPSBzMi5tYW5pZmVzdF9pdGVt
cygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0
aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRl
c3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQotCi0gICAgIyBzMidzIGhhc2ggaXMgdW5j
aGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIG5vZGUgdG8gYSB0ZXN0Ci0gICAgYXNzZXJ0
IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0g
WygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mi50b19SZWZUZXN0KCl9KV0KLQotCi1kZWYg
dGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV90ZXN0X3R5cGUoKToKLSAgICBt
ID0gbWFuaWZlc3QuTWFuaWZlc3QoKQotCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QtcmVmIiwg
Ij09IildKQotCi0gICAgYXNzZXJ0IG0udXBkYXRlKFsoczEsIFRydWUpXSkgaXMgVHJ1ZQotCi0g
ICAgdGVzdDEgPSBzMS5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdCht
KSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pXQotCi0g
ICAgIyB0ZXN0IGJlY29tZXMgYSB0ZXN0aGFybmVzcyB0ZXN0IChoYXNoIGNoYW5nZSBiZWNhdXNl
IHRoYXQgaXMgZGV0ZXJtaW5lZAotICAgICMgYmFzZWQgb24gdGhlIGZpbGUgY29udGVudHMpLiBU
aGUgdXBkYXRlZCBtYW5pZmVzdCBzaG91bGQgbm90IGluY2x1ZGVzIHRoZQotICAgICMgb2xkIHJl
ZnRlc3QuCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QiLCAiMSIqNDAsIGl0ZW0u
VGVzdGhhcm5lc3NUZXN0KQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRy
dWUKLQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KLQotCi1k
ZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9uX2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZSgpOgot
ICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCi0KLSAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3Qy
IiwgIj09IildKQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCi0KLSAgICBh
c3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0KLSAgICB0
ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0
X2l0ZW1zKClbMV1bMF0KLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0
MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCi0KLSAgICAjdGVzdDIgY2hhbmdl
cyB0byBzdXBwb3J0IHR5cGUKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAi
MSIqNDAsIGl0ZW0uU3VwcG9ydEZpbGUpCi0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1
ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCi0gICAgdGVzdDMgPSBzMi5tYW5pZmVzdF9pdGVtcygp
WzFdWzBdCi0KLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwg
e3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAotICAgICAgICAgICAgICAgICAgICAgICAoInN1cHBvcnQi
LCB0ZXN0My5wYXRoLCB7dGVzdDN9KV0KLQotCi1kZWYgdGVzdF9yZWZ0ZXN0X2NvbXB1dGF0aW9u
X2NoYWluX3VwZGF0ZV9ub2RlX2NoYW5nZV9wYXJ0aWFsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1h
bmlmZXN0KCkKLQotICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIg
PSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCBy
ZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKLQotICAgIGFzc2VydCBtLnVwZGF0ZShbKHMx
LCBUcnVlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKLQotICAgIHRlc3QxID0gczEubWFuaWZlc3Rf
aXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotCi0g
ICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19S
ZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0
Mi5wYXRoLCB7dGVzdDJ9KV0KLQotICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIs
ICIxIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0p
Ci0KLSAgICBhc3NlcnQgbS51cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpLCAoczIsIFRydWUp
XSkgaXMgVHJ1ZQotCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBh
dGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0
ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQgbGlzdChtKSA9PSBb
KCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICgicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAKIGRlZiB0ZXN0X2l0ZXJwYXRo
KCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHNvdXJjZXMgPSBbU291cmNl
RmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNl
cz1bKCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICBzb3VyY2VzID0gW1NvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgcmVmZXJlbmNlcz1bKCIvdGVzdDEt
cmVmIiwgIj09IildKSwKICAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdHMoInRlc3Qy
IiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5odG1sIiwge30pLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAgICAgICAgICAgICAg
IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0
KV0KQEAgLTMwMiwyNCArMTg5LDYgQEAgZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBhc3NlcnQg
c2V0KG0uaXRlcnBhdGgoIm1pc3NpbmciKSkgPT0gc2V0KCkKIAogCi1kZWYgdGVzdF9yZWZ0ZXN0
X25vZGVfYnlfdXJsKCk6Ci0gICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKLQotICAgIHMxID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVm
ZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCi0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3Qo
InRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIs
ICI9PSIpXSkKLQotICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkKLQotICAg
IHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyID0gczIubWFuaWZl
c3RfaXRlbXMoKVsxXVswXQotCi0gICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rlc19ieV91cmwgPT0g
eyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KLSAgICBtLl9yZWZ0ZXN0X25vZGVzX2J5X3Vy
bCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6
IHRlc3QxLnRvX1JlZlRlc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0MiI6IHRlc3QyfQotCi0KIGRlZiB0ZXN0X25vX3VwZGF0ZSgpOgogICAgIG0gPSBt
YW5pZmVzdC5NYW5pZmVzdCgpCiAKQEAgLTM1NCw5ICsyMjMsNyBAQCBkZWYgdGVzdF9ub191cGRh
dGVfZGVsZXRlKCk6CiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAot
ICAgIHMxXzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVtLk1hbnVh
bFRlc3QpCi0KLSAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNlKV0pCisgICAgbS51
cGRhdGUoWyhzMS5yZWxfcGF0aCwgRmFsc2UpXSkKIAogICAgIGFzc2VydCBsaXN0KG0pID09IFso
InRlc3RoYXJuZXNzIiwgdGVzdDEucGF0aCwge3Rlc3QxfSldCiAKQEAgLTM5NCw5ICsyNjEsMTAg
QEAgZGVmIHRlc3RfdXBkYXRlX2Zyb21fanNvbl9tb2RpZmllZCgpOgogICAgIG0udXBkYXRlKFso
czIsIFRydWUpXSkKICAgICBqc29uX3N0ciA9IG0udG9fanNvbigpCiAgICAgYXNzZXJ0IGpzb25f
c3RyID09IHsKLSAgICAgICAgJ2l0ZW1zJzogeyd0ZXN0aGFybmVzcyc6IHsndGVzdDEnOiBbKCd0
ZXN0MScsIHsidGltZW91dCI6ICJsb25nIn0pXX19LAotICAgICAgICAncGF0aHMnOiB7J3Rlc3Qx
JzogKCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MnKX0sCisgICAgICAgICdpdGVtcyc6IHsn
dGVzdGhhcm5lc3MnOiB7J3Rlc3QxJzogWworICAgICAgICAgICAgIjEiKjQwLAorICAgICAgICAg
ICAgKE5vbmUsIHsndGltZW91dCc6ICdsb25nJ30pCisgICAgICAgIF19fSwKICAgICAgICAgJ3Vy
bF9iYXNlJzogJy8nLAotICAgICAgICAndmVyc2lvbic6IDcKKyAgICAgICAgJ3ZlcnNpb24nOiA4
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc291cmNlZmlsZS5weQppbmRleCAwYTdhMWNhMGI0MWE5YzFiOTVmY2VhMzA5NTRjZWZm
NGJjYzc0YWQ4Li44YjBmYjk0NGVhNTY3NGE3ZDIxYjhkZGFhYzg5MDg1NjRkNDQ0MWJiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291
cmNlZmlsZS5weQpAQCAtNiw2ICs2LDcgQEAgZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8KIGZyb20g
Li4ubGludC5saW50IGltcG9ydCBjaGVja19nbG9iYWxfbWV0YWRhdGEKIGZyb20gLi5zb3VyY2Vm
aWxlIGltcG9ydCBTb3VyY2VGaWxlLCByZWFkX3NjcmlwdF9tZXRhZGF0YSwganNfbWV0YV9yZSwg
cHl0aG9uX21ldGFfcmUKIAorCiBkZWYgY3JlYXRlKGZpbGVuYW1lLCBjb250ZW50cz1iIiIpOgog
ICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRlbnRzLCBieXRlcykKICAgICByZXR1cm4gU291cmNl
RmlsZSgiLyIsIGZpbGVuYW1lLCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQpAQCAtMzYsNiArMzcs
NyBAQCBkZWYgaXRlbXMocyk6CiAgICAgImZvby9yZXNvdXJjZXMvdGVzdC5odG1sIiwKICAgICAi
Zm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKICAgICAiZm9vL2Zvby1tYW51YWwuaHRtbC5oZWFkZXJz
IiwKKyAgICAiY3Jhc2h0ZXN0cy9mb28uaHRtbC5pbmkiLAogICAgICJjc3MvY29tbW9uL3Rlc3Qu
aHRtbCIsCiAgICAgImNzcy9DU1MyL2FyY2hpdmUvdGVzdC5odG1sIiwKIF0pCkBAIC0xMDYsOCAr
MTA4LDggQEAgZGVmIHRlc3RfbmFtZV9pc192aXN1YWwocmVsX3BhdGgpOgogICAgICJjc3MyMS9m
bG9hdHMvZmxvYXRzLXBsYWNlbWVudC12ZXJ0aWNhbC0wMDQtcmVmMi54aHQiLAogICAgICJjc3My
MS9ib3gvcnRsLWxpbmVicmVhay1ub3RyZWYxLnhodCIsCiAgICAgImNzczIxL2JveC9ydGwtbGlu
ZWJyZWFrLW5vdHJlZjIueGh0IiwKLSAgICAiMmRjb250ZXh0L2RyYXdpbmctaW1hZ2VzLXRvLXRo
ZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYuaHRtbCIsCi0gICAgIjJkY29udGV4
dC9saW5lLXN0eWxlcy9saW5ldG9fcmVmLmh0bWwiLAorICAgICJodG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvZHJhd2ltYWdlX2h0bWxfaW1hZ2VfNV9yZWYu
aHRtbCIsCisgICAgImh0bWwvY2FudmFzL2VsZW1lbnQvbGluZS1zdHlsZXMvbGluZXRvX3JlZi5o
dG1sIiwKICAgICAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3RoZS1maWVs
ZHNldC1lbGVtZW50LTAvcmVmLmh0bWwiCiBdKQogZGVmIHRlc3RfbmFtZV9pc19yZWZlcmVuY2Uo
cmVsX3BhdGgpOgpAQCAtMTIwLDYgKzEyMiwxNCBAQCBkZWYgdGVzdF9uYW1lX2lzX3JlZmVyZW5j
ZShyZWxfcGF0aCk6CiAgICAgYXNzZXJ0IGl0ZW1zKHMpID09IFtdCiAKIAorZGVmIHRlc3RfbmFt
ZV9pc190ZW50YXRpdmUoKToKKyAgICBzID0gY3JlYXRlKCJjc3MvY3NzLXVpL2FwcGVhcmFuY2Ut
cmV2ZXJ0LTAwMS50ZW50YXRpdmUuaHRtbCIpCisgICAgYXNzZXJ0IHMubmFtZV9pc190ZW50YXRp
dmUKKworICAgIHMgPSBjcmVhdGUoImNzcy9jc3MtdWkvYXBwZWFyYW5jZS1yZXZlcnQtMDAxLmh0
bWwiKQorICAgIGFzc2VydCBub3Qgcy5uYW1lX2lzX3RlbnRhdGl2ZQorCisKIGRlZiB0ZXN0X3dv
cmtlcigpOgogICAgIHMgPSBjcmVhdGUoImh0bWwvdGVzdC53b3JrZXIuanMiKQogICAgIGFzc2Vy
dCBub3Qgcy5uYW1lX2lzX25vbl90ZXN0CkBAIC0xNDMsNiArMTUzLDggQEAgZGVmIHRlc3Rfd29y
a2VyKCk6CiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgog
ICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVv
dXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKKwogCiBkZWYgdGVz
dF93aW5kb3coKToKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud2luZG93LmpzIikKQEAgLTE2
Nyw2ICsxNzksNyBAQCBkZWYgdGVzdF93aW5kb3coKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHpp
cChpdGVtcywgZXhwZWN0ZWRfdXJscyk6CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwK
ICAgICAgICAgYXNzZXJ0IGl0ZW0udGltZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVt
LnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0ZXN0X3dvcmtlcl9sb25nX3RpbWVvdXQoKToKQEAgLTE3
NSw3ICsxODgsNyBAQCBpbXBvcnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykK
IHRlc3QoKSIiIgogCiAgICAgbWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5
dGVzSU8oY29udGVudHMpLCBqc19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhi
InRpbWVvdXQiLCBiImxvbmciKV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIs
ICJsb25nIildCiAKICAgICBzID0gY3JlYXRlKCJodG1sL3Rlc3Qud29ya2VyLmpzIiwgY29udGVu
dHM9Y29udGVudHMpCiAgICAgYXNzZXJ0IHMubmFtZV9pc193b3JrZXIKQEAgLTE5Miw3ICsyMDUs
NyBAQCBkZWYgdGVzdF93aW5kb3dfbG9uZ190aW1lb3V0KCk6CiB0ZXN0KCkiIiIKIAogICAgIG1l
dGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRlbnRzKSwganNf
bWV0YV9yZSkpCi0gICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoYiJ0aW1lb3V0IiwgYiJsb25nIild
CisgICAgYXNzZXJ0IG1ldGFkYXRhID09IFsoInRpbWVvdXQiLCAibG9uZyIpXQogCiAgICAgcyA9
IGNyZWF0ZSgiaHRtbC90ZXN0LndpbmRvdy5qcyIsIGNvbnRlbnRzPWNvbnRlbnRzKQogICAgIGFz
c2VydCBzLm5hbWVfaXNfd2luZG93CkBAIC0yMzIsNiArMjQ1LDcgQEAgdGVzdCgpIiIiCiAgICAg
Zm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3VybHMpOgogICAgICAgICBhc3Nl
cnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVtLnRpbWVvdXQgaXMgTm9uZQor
ICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBkZWYgdGVzdF93aW5kb3dfd2l0
aF92YXJpYW50cygpOgpAQCAtMjYyLDYgKzI3Niw3IEBAIHRlc3QoKSIiIgogICAgIGZvciBpdGVt
LCB1cmwgaW4gemlwKGl0ZW1zLCBleHBlY3RlZF91cmxzKToKICAgICAgICAgYXNzZXJ0IGl0ZW0u
dXJsID09IHVybAogICAgICAgICBhc3NlcnQgaXRlbS50aW1lb3V0IGlzIE5vbmUKKyAgICAgICAg
YXNzZXJ0IGl0ZW0ucXVpYyBpcyBOb25lCiAKIAogZGVmIHRlc3RfcHl0aG9uX2xvbmdfdGltZW91
dCgpOgpAQCAtMjcxLDcgKzI4Niw3IEBAIGRlZiB0ZXN0X3B5dGhvbl9sb25nX3RpbWVvdXQoKToK
IAogICAgIG1ldGFkYXRhID0gbGlzdChyZWFkX3NjcmlwdF9tZXRhZGF0YShCeXRlc0lPKGNvbnRl
bnRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21l
dGFfcmUpKQotICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKGIidGltZW91dCIsIGIibG9uZyIpXQor
ICAgIGFzc2VydCBtZXRhZGF0YSA9PSBbKCJ0aW1lb3V0IiwgImxvbmciKV0KIAogICAgIHMgPSBj
cmVhdGUoIndlYmRyaXZlci90ZXN0LnB5IiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNzZXJ0
IHMubmFtZV9pc193ZWJkcml2ZXIKQEAgLTMwNiw2ICszMjEsNyBAQCBkZWYgdGVzdF9tdWx0aV9n
bG9iYWwoKToKICAgICBmb3IgaXRlbSwgdXJsIGluIHppcChpdGVtcywgZXhwZWN0ZWRfdXJscyk6
CiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF9sb25nX3RpbWVvdXQoKToKQEAgLTMxNCw3ICszMzAsNyBAQCBpbXBv
cnRTY3JpcHRzKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJykKIHRlc3QoKSIiIgogCiAgICAg
bWV0YWRhdGEgPSBsaXN0KHJlYWRfc2NyaXB0X21ldGFkYXRhKEJ5dGVzSU8oY29udGVudHMpLCBq
c19tZXRhX3JlKSkKLSAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWyhiInRpbWVvdXQiLCBiImxvbmci
KV0KKyAgICBhc3NlcnQgbWV0YWRhdGEgPT0gWygidGltZW91dCIsICJsb25nIildCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCiAgICAgYXNz
ZXJ0IHMubmFtZV9pc19tdWx0aV9nbG9iYWwKQEAgLTMyNywyNSArMzQzLDEwIEBAIHRlc3QoKSIi
IgogCiAKIEBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXhwZWN0ZWQiLCBbCi0gICAg
KGIiIiwgeyJkZWRpY2F0ZWR3b3JrZXIiLCAid2luZG93In0pLAotICAgIChiImRlZmF1bHQiLCB7
ImRlZGljYXRlZHdvcmtlciIsICJ3aW5kb3cifSksCi0gICAgKGIiIWRlZmF1bHQiLCB7fSksCi0g
ICAgKGIiIWRlZmF1bHQsd2luZG93IiwgeyJ3aW5kb3cifSksCi0gICAgKGIid2luZG93LCFkZWZh
dWx0Iiwge30pLAotICAgIChiIiFkZWZhdWx0LGRlZGljYXRlZHdvcmtlciIsIHsiZGVkaWNhdGVk
d29ya2VyIn0pLAotICAgIChiImRlZGljYXRlZHdvcmtlciwhZGVmYXVsdCIsIHt9KSwKLSAgICAo
YiIhZGVmYXVsdCx3b3JrZXIiLCB7ImRlZGljYXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwg
InNoYXJlZHdvcmtlciJ9KSwKLSAgICAoYiJ3b3JrZXIsIWRlZmF1bHQiLCB7InNlcnZpY2V3b3Jr
ZXIiLCAic2hhcmVkd29ya2VyIn0pLAotICAgIChiIiFkZWRpY2F0ZWR3b3JrZXIiLCB7IndpbmRv
dyJ9KSwKLSAgICAoYiIhd29ya2VyIiwgeyJ3aW5kb3cifSksCi0gICAgKGIiIXdpbmRvdyIsIHsi
ZGVkaWNhdGVkd29ya2VyIn0pLAotICAgIChiIiF3aW5kb3csd29ya2VyIiwgeyJkZWRpY2F0ZWR3
b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIifSksCi0gICAgKGIid29ya2Vy
LCFkZWRpY2F0ZWR3b3JrZXIiLCB7InNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndp
bmRvdyJ9KSwKLSAgICAoYiIhZGVkaWNhdGVkd29ya2VyLHdvcmtlciIsIHsiZGVkaWNhdGVkd29y
a2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIiwgIndpbmRvdyJ9KSwKLSAgICAo
YiJ3b3JrZXIsIXNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNlcnZpY2V3b3Jr
ZXIiLCAid2luZG93In0pLAotICAgIChiIiFzaGFyZWR3b3JrZXIsd29ya2VyIiwgeyJkZWRpY2F0
ZWR3b3JrZXIiLCAic2VydmljZXdvcmtlciIsICJzaGFyZWR3b3JrZXIiLCAid2luZG93In0pLAot
ICAgIChiInNoYXJlZHdvcmtlciIsIHsiZGVkaWNhdGVkd29ya2VyIiwgInNoYXJlZHdvcmtlciIs
ICJ3aW5kb3cifSksCi0gICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7ImRlZGlj
YXRlZHdvcmtlciIsICJzZXJ2aWNld29ya2VyIiwgInNoYXJlZHdvcmtlciIsICJ3aW5kb3cifSks
CisgICAgKGIid2luZG93IiwgeyJ3aW5kb3cifSksCisgICAgKGIic2hhcmVkd29ya2VyIiwgeyJz
aGFyZWR3b3JrZXIifSksCisgICAgKGIic2hhcmVkd29ya2VyLHNlcnZpY2V3b3JrZXIiLCB7InNl
cnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAorICAgIChiIndvcmtlciIsIHsiZGVkaWNh
dGVkd29ya2VyIiwgInNlcnZpY2V3b3JrZXIiLCAic2hhcmVkd29ya2VyIn0pLAogXSkKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2N1c3RvbV9nbG9iYWxzKGlucHV0LCBleHBlY3RlZCk6CiAg
ICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTogZ2xvYmFsPSVzCkBAIC0zODAsMTAgKzM4MSwxMSBA
QCB0ZXN0KCkiIiIgJSBpbnB1dAogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAg
ICAgIGFzc2VydCBpdGVtLmpzc2hlbGwgaXMgRmFsc2UKICAgICAgICAgYXNzZXJ0IGl0ZW0udGlt
ZW91dCBpcyBOb25lCisgICAgICAgIGFzc2VydCBpdGVtLnF1aWMgaXMgTm9uZQogCiAKIGRlZiB0
ZXN0X211bHRpX2dsb2JhbF93aXRoX2pzc2hlbGxfZ2xvYmFscygpOgotICAgIGNvbnRlbnRzID0g
YiIiIi8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisgICAgY29udGVudHMgPSBiIiIiLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogdGVzdCgpIiIiCiAKICAgICBz
ID0gY3JlYXRlKCJodG1sL3Rlc3QuYW55LmpzIiwgY29udGVudHM9Y29udGVudHMpCkBAIC00MTAs
NiArNDEyLDcgQEAgdGVzdCgpIiIiCiAgICAgICAgIGFzc2VydCBpdGVtLnVybCA9PSB1cmwKICAg
ICAgICAgYXNzZXJ0IGl0ZW0uanNzaGVsbCA9PSBqc3NoZWxsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBk
ZWYgdGVzdF9tdWx0aV9nbG9iYWxfd2l0aF92YXJpYW50cygpOgpAQCAtNDQ4LDE3ICs0NTEsMTgg
QEAgdGVzdCgpIiIiCiAgICAgZm9yIGl0ZW0sIHVybCBpbiB6aXAoaXRlbXMsIGV4cGVjdGVkX3Vy
bHMpOgogICAgICAgICBhc3NlcnQgaXRlbS51cmwgPT0gdXJsCiAgICAgICAgIGFzc2VydCBpdGVt
LnRpbWVvdXQgaXMgTm9uZQorICAgICAgICBhc3NlcnQgaXRlbS5xdWljIGlzIE5vbmUKIAogCiBA
cHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGV4cGVjdGVkIiwgWwotICAgIChiIiIiLy9N
RVRBOiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyBNRVRB
OiBmb289YmFyXG4iIiIsIFsoYiJmb28iLCBiImJhciIpXSksCi0gICAgKGIiIiIvLyAgTUVUQTog
Zm9vPWJhclxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAorICAgIChiIiIiLy9NRVRBOiBmb289
YmFyXG4iIiIsIFsoImZvbyIsICJiYXIiKV0pLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxu
IiIiLCBbKCJmb28iLCAiYmFyIildKSwKKyAgICAoYiIiIi8vICBNRVRBOiBmb289YmFyXG4iIiIs
IFsoImZvbyIsICJiYXIiKV0pLAogICAgIChiIiIiXG4vLyBNRVRBOiBmb289YmFyXG4iIiIsIFtd
KSwKICAgICAoYiIiIiAvLyBNRVRBOiBmb289YmFyXG4iIiIsIFtdKSwKLSAgICAoYiIiIi8vIE1F
VEE6IGZvbz1iYXJcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFsoYiJmb28iLCBiImJhciIpLCAo
YiJiYXoiLCBiInF1dXgiKV0pLAotICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRB
OiBiYXo9cXV1eFxuIiIiLCBbKGIiZm9vIiwgYiJiYXIiKV0pLAotICAgIChiIiIiLy8gTUVUQTog
Zm9vPWJhclxuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IGJhej1xdXV4XG4iIiIsIFso
YiJmb28iLCBiImJhciIpXSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4vLyBNRVRBOiBi
YXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIiksICgiYmF6IiwgInF1dXgiKV0pLAorICAgIChi
IiIiLy8gTUVUQTogZm9vPWJhclxuXG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAi
YmFyIildKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbi8vIFN0YXJ0IG9mIHRoZSB0ZXN0
XG4vLyBNRVRBOiBiYXo9cXV1eFxuIiIiLCBbKCJmb28iLCAiYmFyIildKSwKICAgICAoYiIiIi8v
IE1FVEE6XG4iIiIsIFtdKSwKICAgICAoYiIiIi8vIE1FVEE6IGZvb2JhclxuIiIiLCBbXSksCiBd
KQpAQCAtNjU3LDcgKzY2MSwzNiBAQCBkZWYgdGVzdF9yZWxhdGl2ZV90ZXN0ZHJpdmVyKGV4dCk6
CiAKIAogQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0bSIsICJodG1sIl0pCi1k
ZWYgdGVzdF9yZWZ0ZXN0X25vZGUoZXh0KToKK2RlZiB0ZXN0X3F1aWNfaHRtbChleHQpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC4iICsgZXh0CisKKyAgICBjb250ZW50ID0gYic8bWV0YSBu
YW1lPSJxdWljIiBjb250ZW50PSJ0cnVlIj4nCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29u
dGVudCkKKyAgICBhc3NlcnQgcy5xdWljCisKKyAgICBjb250ZW50ID0gYic8bWV0YSBuYW1lPSJx
dWljIiBjb250ZW50PSJmYWxzZSI+JworICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQp
CisgICAgYXNzZXJ0IHMucXVpYyBpcyBOb25lCisKKworZGVmIHRlc3RfcXVpY19qcygpOgorICAg
IGZpbGVuYW1lID0gImh0bWwvdGVzdC5hbnkuanMiCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRB
OiBxdWljPXRydWUiCisgICAgcyA9IGNyZWF0ZShmaWxlbmFtZSwgY29udGVudCkKKyAgICBfLCBp
dGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAg
ICBhc3NlcnQgaXRlbS5xdWljCisKKyAgICBjb250ZW50ID0gYiIvLyBNRVRBOiBxdWljPWZhbHNl
IgorICAgIHMgPSBjcmVhdGUoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgXywgaXRlbXMgPSBzLm1h
bmlmZXN0X2l0ZW1zKCkKKyAgICBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAgICAgYXNzZXJ0IGl0
ZW0ucXVpYyBpcyBOb25lCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJleHQiLCBbImh0
bSIsICJodG1sIl0pCitkZWYgdGVzdF9yZWZ0ZXN0KGV4dCk6CiAgICAgY29udGVudCA9IGIiPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+IgogCiAgICAgZmlsZW5hbWUgPSAiZm9vL3Rlc3Qu
IiArIGV4dApAQCAtNjczLDcgKzcwNiw3IEBAIGRlZiB0ZXN0X3JlZnRlc3Rfbm9kZShleHQpOgog
CiAgICAgYXNzZXJ0IHMuY29udGVudF9pc19yZWZfbm9kZQogCi0gICAgYXNzZXJ0IGl0ZW1zKHMp
ID09IFsoInJlZnRlc3Rfbm9kZSIsICIvIiArIGZpbGVuYW1lKV0KKyAgICBhc3NlcnQgaXRlbXMo
cykgPT0gWygicmVmdGVzdCIsICIvIiArIGZpbGVuYW1lKV0KIAogCiBAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoImV4dCIsIFsieGh0IiwgImh0bWwiLCAieGh0bWwiLCAiaHRtIiwgInhtbCIsICJz
dmciXSkKQEAgLTgzMSw0ICs4NjQsNCBAQCBkZWYgdGVzdF9yZWZ0ZXN0X2Z1enp5X211bHRpKGZ1
enp5LCBleHBlY3RlZCk6CiAKIGRlZiB0ZXN0X2hhc2goKToKICAgICBzID0gU291cmNlRmlsZSgi
LyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIpCi0gICAgYXNzZXJ0IGIi
YjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIgPT0gcy5oYXNoCisgICAg
YXNzZXJ0ICJiNDVlZjZmZWM4OTUxOGQzMTRmNTQ2ZmQ2YzMwMjUzNjdiNzIxNjg0IiA9PSBzLmhh
c2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3R5cGVkYXRhLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzYTA0MWU1NGMzZTI0MGUyNmRiODNjMThhMWY1ODllMDVjZGM4NTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L3R5cGVkYXRhLnB5CkBAIC0wLDAgKzEsMzQyIEBACitmcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBNdXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcywgaXRlcml0
ZW1zCisKKworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1
ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAgICBm
cm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYXRvcgor
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlv
bmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBU
ZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0
IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKworICAgICMgYXZvaWQgYWN0dWFs
bHkgaW1wb3J0aW5nIHRoZXNlLCB0aGV5J3JlIG9ubHkgdXNlZCBieSB0eXBlIGNvbW1lbnRzCisg
ICAgZnJvbSAuIGltcG9ydCBpdGVtCisgICAgZnJvbSAuIGltcG9ydCBtYW5pZmVzdAorCisKK2lm
IE1ZUFk6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmdbVHVwbGVbVGV4dCwgLi4u
XSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXV0KKyAgICBQYXRoSGFzaFR5cGUgPSBNdXRhYmxlTWFw
cGluZ1tUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQorZWxzZToKKyAgICBUeXBlRGF0YVR5cGUgPSBN
dXRhYmxlTWFwcGluZworICAgIFBhdGhIYXNoVHlwZSA9IE11dGFibGVNYXBwaW5nCisKKworY2xh
c3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbSwgdHlw
ZV9jbHMpOgorICAgICAgICAjIHR5cGU6IChtYW5pZmVzdC5NYW5pZmVzdCwgVHlwZVtpdGVtLk1h
bmlmZXN0SXRlbV0pIC0+IE5vbmUKKyAgICAgICAgIiIiRGljdC1saWtlIG9iamVjdCBjb250YWlu
aW5nIHRoZSBUZXN0SXRlbXMgZm9yIGVhY2ggdGVzdCB0eXBlLgorCisgICAgICAgIExvYWRpbmcg
YW4gYWN0dWFsIEl0ZW0gY2xhc3MgZm9yIGVhY2ggdGVzdCBpcyB1bm5lY2Vzc2FyaWx5CisgICAg
ICAgIHNsb3csIHNvIHRoaXMgY2xhc3MgYWxsb3dzIGxhenktbG9hZGluZyBvZiB0aGUgdGVzdAor
ICAgICAgICBpdGVtcy4gV2hlbiB0aGUgbWFuaWZlc3QgaXMgbG9hZGVkIHdlIHN0b3JlIHRoZSBy
YXcganNvbgorICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0ZXN0IHR5cGUsIGFuZCBvbmx5
IGNyZWF0ZSBhbiBJdGVtCisgICAgICAgIHN1YmNsYXNzIHdoZW4gdGhlIHRlc3QgaXMgYWNjZXNz
ZWQuIEluIG9yZGVyIHRvIHJlbWFpbgorICAgICAgICBBUEktY29tcGF0aWJsZSB3aXRoIGNvbnN1
bWVycyB0aGF0IGRlcGVuZCBvbiBnZXR0aW5nIGFuIEl0ZW0KKyAgICAgICAgZnJvbSBpdGVyYXRp
b24sIHdlIGRvIGVnZXJseSBsb2FkIGFsbCBpdGVtcyB3aGVuIGl0ZXJhdGluZworICAgICAgICBv
dmVyIHRoZSBjbGFzcy4iIiIKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBtCisgICAgICAgIHNl
bGYuX3R5cGVfY2xzID0gdHlwZV9jbHMgICMgdHlwZTogVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0K
KyAgICAgICAgc2VsZi5fanNvbl9kYXRhID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBBbnldCisg
ICAgICAgIHNlbGYuX2RhdGEgPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIEFueV0KKyAgICAgICAg
c2VsZi5faGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUdXBsZVtUZXh0LCAuLi5dLCBUZXh0XQor
ICAgICAgICBzZWxmLmhhc2hlcyA9IFBhdGhIYXNoKHNlbGYpCisKKyAgICBkZWYgX2RlbGV0ZV9u
b2RlKHNlbGYsIGRhdGEsIGtleSk6CisgICAgICAgICMgdHlwZTogKERpY3RbVGV4dCwgQW55XSwg
VHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICAiIiJkZWxldGUgYSBwYXRoIGZyb20g
YSBEaWN0IGRhdGEgd2l0aCBhIGdpdmVuIGtleSIiIgorICAgICAgICBwYXRoID0gW10KKyAgICAg
ICAgbm9kZSA9IGRhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcgaW4ga2V5WzotMV06CisgICAgICAg
ICAgICBwYXRoLmFwcGVuZCgobm9kZSwgcGF0aHNlZykpCisgICAgICAgICAgICBub2RlID0gbm9k
ZVtwYXRoc2VnXQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGRlbCBub2RlW2tl
eVstMV1dCisgICAgICAgIHdoaWxlIHBhdGg6CisgICAgICAgICAgICBub2RlLCBwYXRoc2VnID0g
cGF0aC5wb3AoKQorICAgICAgICAgICAgaWYgbGVuKG5vZGVbcGF0aHNlZ10pID09IDA6CisgICAg
ICAgICAgICAgICAgZGVsIG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAg
ICAjIHR5cGU6IChUdXBsZVtUZXh0LCAuLi5dKSAtPiBTZXRbaXRlbS5NYW5pZmVzdEl0ZW1dCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhICAjIHR5cGU6IFVuaW9uW0RpY3RbVGV4dCwgQW55XSwg
U2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSwgTGlzdFtBbnldXQorICAgICAgICBmb3IgcGF0aHNlZyBp
biBrZXk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGRpY3QpIGFuZCBwYXRoc2Vn
IGluIG5vZGU6CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgc2V0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkp
CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2pzb25fZGF0YQorICAgICAgICBmb3VuZCA9IEZhbHNl
CisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
bm9kZSwgZGljdCkgYW5kIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90
IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKG5vZGUsIGxpc3QpOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5
KQorCisgICAgICAgIHNlbGYuX2hhc2hlc1trZXldID0gbm9kZVswXQorCisgICAgICAgIGRhdGEg
PSBzZXQoKQorICAgICAgICBwYXRoID0gIi8iLmpvaW4oa2V5KQorICAgICAgICBmb3IgdGVzdCBp
biBub2RlWzE6XToKKyAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0gPSBzZWxmLl90eXBlX2Nscy5m
cm9tX2pzb24oc2VsZi5fbWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAgICAgICBkYXRhLmFk
ZChtYW5pZmVzdF9pdGVtKQorCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleVs6
LTFdOgorICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2V0ZGVmYXVsdChwYXRoc2VnLCB7fSkKKyAg
ICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGRpY3QpCisgICAgICAgIGFzc2VydCBr
ZXlbLTFdIG5vdCBpbiBub2RlCisgICAgICAgIG5vZGVba2V5Wy0xXV0gPSBkYXRhCisKKyAgICAg
ICAgc2VsZi5fZGVsZXRlX25vZGUoc2VsZi5fanNvbl9kYXRhLCBrZXkpCisKKyAgICAgICAgcmV0
dXJuIGRhdGEKKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSwgU2V0W2l0ZW0uTWFuaWZlc3RJdGVtXSkgLT4g
Tm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9kZWxldGVfbm9kZShzZWxmLl9q
c29uX2RhdGEsIGtleSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFz
cworCisgICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhCisgICAgICAgIGZvciBpLCBwYXRoc2VnIGlu
IGVudW1lcmF0ZShrZXlbOi0xXSk6CisgICAgICAgICAgICBub2RlID0gbm9kZS5zZXRkZWZhdWx0
KHBhdGhzZWcsIHt9KQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgZGljdCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVyIGlzIGEgY2hpbGQgb2YgYSB0ZXN0
ICglcikiICUgKGtleSwga2V5WzppKzFdKSkKKyAgICAgICAgbm9kZVtrZXlbLTFdXSA9IHZhbHVl
CisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoVHVw
bGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9k
ZWxldGVfbm9kZShzZWxmLl9kYXRhLCBrZXkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgICAgIHNlbGYuX2RlbGV0ZV9ub2RlKHNlbGYuX2pzb25fZGF0YSwga2V5KQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9oYXNo
ZXNba2V5XQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBh
c3MKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVy
YXRvcltUdXBsZVtUZXh0LCAuLi5dXQorICAgICAgICAiIiJJdGVyYXRvciBvdmVyIGtleXMgaW4g
dGhlIFR5cGVEYXRhIGluIGNvZGVwb2ludCBvcmRlciIiIgorICAgICAgICBkYXRhX25vZGUgPSBz
ZWxmLl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55XV0KKyAgICAgICAganNv
bl9ub2RlID0gc2VsZi5fanNvbl9kYXRhICAjIHR5cGU6IE9wdGlvbmFsW0RpY3RbVGV4dCwgQW55
XV0KKyAgICAgICAgcGF0aCA9IHR1cGxlKCkgICMgdHlwZTogVHVwbGVbVGV4dCwgLi4uXQorICAg
ICAgICBzdGFjayA9IFsoZGF0YV9ub2RlLCBqc29uX25vZGUsIHBhdGgpXQorICAgICAgICB3aGls
ZSBzdGFjazoKKyAgICAgICAgICAgIGRhdGFfbm9kZSwganNvbl9ub2RlLCBwYXRoID0gc3RhY2su
cG9wKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YV9ub2RlLCBzZXQpIG9yIGlzaW5z
dGFuY2UoanNvbl9ub2RlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBhc3NlcnQgZGF0YV9ub2Rl
IGlzIE5vbmUgb3IganNvbl9ub2RlIGlzIE5vbmUKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRo
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhX25vZGUgaXMg
Tm9uZSBvciBpc2luc3RhbmNlKGRhdGFfbm9kZSwgZGljdCkKKyAgICAgICAgICAgICAgICBhc3Nl
cnQganNvbl9ub2RlIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShqc29uX25vZGUsIGRpY3QpCisKKyAg
ICAgICAgICAgICAgICBrZXlzID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgICAg
ICAgICAgaWYgZGF0YV9ub2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlz
IHw9IHNldChpdGVyKGRhdGFfbm9kZSkpCisgICAgICAgICAgICAgICAgaWYganNvbl9ub2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXlzIHw9IHNldChpdGVyKGpzb25fbm9k
ZSkpCisKKyAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChrZXlzLCByZXZlcnNlPVRy
dWUpOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQoKGRhdGFfbm9kZS5nZXQoa2V5
KSBpZiBkYXRhX25vZGUgaXMgbm90IE5vbmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzb25fbm9kZS5nZXQoa2V5KSBpZiBqc29uX25vZGUgaXMgbm90IE5v
bmUgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggKyAo
a2V5LCkpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
aW50CisgICAgICAgIGNvdW50ID0gMAorCisgICAgICAgIHN0YWNrID0gW3NlbGYuX2RhdGFdCisg
ICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHYsIHNldCk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFjay5leHRlbmQoaXRlcnZhbHVl
cyh2KSkKKworICAgICAgICBzdGFjayA9IFtzZWxmLl9qc29uX2RhdGFdCisgICAgICAgIHdoaWxl
IHN0YWNrOgorICAgICAgICAgICAgdiA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHYsIGxpc3QpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RhY2suZXh0ZW5kKGl0ZXJ2YWx1ZXModikpCisKKyAg
ICAgICAgcmV0dXJuIGNvdW50CisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gYm9vbAorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9kYXRhKSBvciBi
b29sKHNlbGYuX2pzb25fZGF0YSkKKworICAgIF9fYm9vbF9fID0gX19ub256ZXJvX18KKworICAg
IGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoQW55KSAtPiBi
b29sCisgICAgICAgICMgd2UgcHJvdmlkZSBvdXIgb3duIGltcGwgb2YgdGhpcyB0byBhdm9pZCBj
YWxsaW5nIF9fZ2V0aXRlbV9fIGFuZCBnZW5lcmF0aW5nIGl0ZW1zIGZvcgorICAgICAgICAjIHRo
b3NlIGluIHNlbGYuX2pzb25fZGF0YQorICAgICAgICBub2RlID0gc2VsZi5fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrZXk6CisgICAgICAgICAgICBpZiBwYXRoc2VnIGluIG5vZGU6Cisg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGVbcGF0aHNlZ10KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBi
b29sKGlzaW5zdGFuY2Uobm9kZSwgc2V0KSkKKworICAgICAgICBub2RlID0gc2VsZi5fanNvbl9k
YXRhCisgICAgICAgIGZvciBwYXRoc2VnIGluIGtleToKKyAgICAgICAgICAgIGlmIHBhdGhzZWcg
aW4gbm9kZToKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIGJvb2woaXNpbnN0YW5jZShub2RlLCBsaXN0KSkKKworICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBOb25l
CisgICAgICAgICMgbXVjaCwgbXVjaCBzaW1wbGVyL3F1aWNrZXIgdGhhbiB0aGF0IGRlZmluZWQg
aW4gTXV0YWJsZU1hcHBpbmcKKyAgICAgICAgc2VsZi5fanNvbl9kYXRhLmNsZWFyKCkKKyAgICAg
ICAgc2VsZi5fZGF0YS5jbGVhcigpCisgICAgICAgIHNlbGYuX2hhc2hlcy5jbGVhcigpCisKKyAg
ICBkZWYgc2V0X2pzb24oc2VsZiwganNvbl9kYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtU
ZXh0LCBBbnldKSAtPiBOb25lCisgICAgICAgICIiIlByb3ZpZGUgdGhlIG9iamVjdCB3aXRoIGEg
cmF3IEpTT04gYmxvYgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBncmFwaCBpcyBh
c3N1bWVkIHRvIGJlIG93bmVkIGJ5IHRoZSBUeXBlRGF0YQorICAgICAgICBvYmplY3QgYWZ0ZXIg
dGhlIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZQor
ICAgICAgICBncmFwaC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2pzb25fZGF0YToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldF9qc29uIGNhbGwgd2hlbiBKU09OIGRh
dGEgaXMgbm90IGVtcHR5IikKKworICAgICAgICBzZWxmLl9qc29uX2RhdGEgPSBqc29uX2RhdGEK
KworICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4
dCwgQW55XQorICAgICAgICAiIiJDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGEgdG8gSlNPTgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgb2JqZWN0IG1heSBjb250YWluIHJlZmVyZW5j
ZXMgdG8gdGhlIGludGVybmFsCisgICAgICAgIGRhdGEgc3RydWN0dXJlcywgYW5kIGlzIG9ubHkg
Z3VhcmFudGVlZCB0byBiZSB2YWxpZCB1bnRpbCB0aGUgbmV4dAorICAgICAgICBfX2dldGl0ZW1f
XywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fIGNhbGwsIHNvIHRoZSBjYWxsZXIgbXVzdCBub3QK
KyAgICAgICAgbXV0YXRlIGFueSBwYXJ0IG9mIHRoZSByZXR1cm5lZCBvYmplY3QgZ3JhcGguCisK
KyAgICAgICAgIiIiCisgICAgICAgIGpzb25fcnYgPSBzZWxmLl9qc29uX2RhdGEuY29weSgpCisK
KyAgICAgICAgZGVmIHNhZmVfc29ydGVyKGVsZW1lbnQpOgorICAgICAgICAgICAgIyB0eXBlOiAo
VHVwbGVbc3RyLHN0cl0pIC0+IFR1cGxlW3N0cixzdHJdCisgICAgICAgICAgICAiIiIga2V5IGZ1
bmN0aW9uIHRvIHNvcnQgbGlzdHMgd2l0aCBOb25lIHZhbHVlcy4KKworICAgICAgICAgICAgUHl0
aG9uMyBpcyBtb3JlIHN0cmljdCB0eXBld2lzZS4gQ29tcGFyaW5nIE5vbmUgYW5kIHN0ciBmb3Ig
ZXhhbXBsZSBpcyB2YWxpZAorICAgICAgICAgICAgaW4gcHl0aG9uMiBidXQgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBpbiBweXRob24zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBpZiBlbGVt
ZW50IGFuZCBub3QgZWxlbWVudFswXToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCIiLCBlbGVt
ZW50WzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dAorCisgICAgICAgIHN0YWNrID0gWyhzZWxmLl9kYXRhLCBqc29uX3J2LCB0dXBsZSgpKV0gICMg
dHlwZTogTGlzdFtUdXBsZVtEaWN0W1RleHQsIEFueV0sIERpY3RbVGV4dCwgQW55XSwgVHVwbGVb
VGV4dCwgLi4uXV1dCisgICAgICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgZGF0YV9ub2Rl
LCBqc29uX25vZGUsIHBhcl9mdWxsX2tleSA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBmb3Ig
aywgdiBpbiBpdGVyaXRlbXMoZGF0YV9ub2RlKToKKyAgICAgICAgICAgICAgICBmdWxsX2tleSA9
IHBhcl9mdWxsX2tleSArIChrLCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHNl
dCk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBrIG5vdCBpbiBqc29uX25vZGUKKyAgICAg
ICAgICAgICAgICAgICAganNvbl9ub2RlW2tdID0gW3NlbGYuX2hhc2hlcy5nZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBmdWxsX2tleSldICsgW3QgZm9yIHQgaW4gc29ydGVkKCh0ZXN0LnRv
X2pzb24oKSBmb3IgdGVzdCBpbiB2KSwga2V5PXNhZmVfc29ydGVyKV0KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBqc29uX25vZGVba10gPSBqc29uX25vZGUuZ2V0
KGssIHt9KS5jb3B5KCkKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKCh2LCBqc29u
X25vZGVba10sIGZ1bGxfa2V5KSkKKworICAgICAgICByZXR1cm4ganNvbl9ydgorCisKK2NsYXNz
IFBhdGhIYXNoKFBhdGhIYXNoVHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgor
ICAgICAgICAjIHR5cGU6IChUeXBlRGF0YSkgLT4gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0g
ZGF0YQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgICAgICAjIHR5cGU6IChU
dXBsZVtUZXh0LCAuLi5dKSAtPiBUZXh0CisgICAgICAgIGlmIGsgbm90IGluIHNlbGYuX2RhdGE6
CisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgorCisgICAgICAgIGlmIGsgaW4gc2VsZi5fZGF0
YS5faGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEuX2hhc2hlc1trXQorCisg
ICAgICAgIG5vZGUgPSBzZWxmLl9kYXRhLl9qc29uX2RhdGEKKyAgICAgICAgZm9yIHBhdGhzZWcg
aW4gazoKKyAgICAgICAgICAgIGlmIHBhdGhzZWcgaW4gbm9kZToKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZVtwYXRoc2VnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIG5vZGVbMF0gICMgdHlwZTog
aWdub3JlCisKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAidW5yZWFjaGFibGUiCisgICAgICAgIHJh
aXNlIEtleUVycm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgdik6CisgICAgICAg
ICMgdHlwZTogKFR1cGxlW1RleHQsIC4uLl0sIFRleHQpIC0+IE5vbmUKKyAgICAgICAgaWYgayBu
b3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCisKKyAgICAgICAg
aWYgayBpbiBzZWxmLl9kYXRhLl9oYXNoZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhLl9oYXNo
ZXNba10gPSB2CisKKyAgICAgICAgbm9kZSA9IHNlbGYuX2RhdGEuX2pzb25fZGF0YQorICAgICAg
ICBmb3IgcGF0aHNlZyBpbiBrOgorICAgICAgICAgICAgaWYgcGF0aHNlZyBpbiBub2RlOgorICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlW3BhdGhzZWddCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub2RlWzBdID0g
diAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2Rh
dGEuX2hhc2hlc1trXSA9IHYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrKToKKyAgICAg
ICAgIyB0eXBlOiAoVHVwbGVbVGV4dCwgLi4uXSkgLT4gTm9uZQorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJrZXlzIGhlcmUgbXVzdCBtYXRjaCB1bmRlcmx5aW5nIGRhdGEiKQorCisgICAgZGVm
IF9faXRlcl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW1R1cGxlW1Rl
eHQsIC4uLl1dCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19s
ZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGxl
bihzZWxmLl9kYXRhKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQppbmRl
eCBiZmJhYWY4OTcxMjZkOGVlY2E2OWRjZWY5NGJiMzEzMDg4OTdmZGUyLi4yOTY1MzNhNmJhYmYx
NzZlNDUxNGJjZjNmMjllMTYzZmRmOWE5ZmRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3VwZGF0ZS5weQpAQCAtMjYsNyArMjYsOCBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAj
IHR5cGU6IHN0cgogICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW3N0cl0KICAgICAgICAgICAgd29ya2luZ19jb3B5PVRydWUsICAjIHR5cGU6IGJvb2wKICAg
ICAgICAgICAgY2FjaGVfcm9vdD1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtzdHJdCi0gICAgICAg
ICAgIHJlYnVpbGQ9RmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICAgICByZWJ1aWxkPUZhbHNl
LCAgIyB0eXBlOiBib29sCisgICAgICAgICAgIHBhcmFsbGVsPVRydWUgICMgdHlwZTogYm9vbAog
ICAgICAgICAgICApOgogICAgICMgdHlwZTogKC4uLikgLT4gYm9vbAogICAgIGxvZ2dlci53YXJu
aW5nKCJEZXByZWNhdGVkOyB1c2UgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlIGluc3RlYWQiKQpA
QCAtMzQsNyArMzUsNyBAQCBkZWYgdXBkYXRlKHRlc3RzX3Jvb3QsICAjIHR5cGU6IHN0cgogCiAg
ICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0
aCwgY2FjaGVfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVi
dWlsZCkKLSAgICByZXR1cm4gbWFuaWZlc3QudXBkYXRlKHRyZWUpCisgICAgcmV0dXJuIG1hbmlm
ZXN0LnVwZGF0ZSh0cmVlLCBwYXJhbGxlbCkKIAogCiBkZWYgdXBkYXRlX2Zyb21fY2xpKCoqa3dh
cmdzKToKQEAgLTUxLDcgKzUyLDggQEAgZGVmIHVwZGF0ZV9mcm9tX2NsaSgqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sidXJsX2Jhc2UiXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXBkYXRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1aWxkIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJjYWNoZV9yb290Il0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsPWt3YXJnc1sicGFyYWxsZWwiXSkKIAogCiBkZWYg
YWJzX3BhdGgocGF0aCk6CkBAIC03OCw2ICs4MCw5IEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi0tY2FjaGUtcm9vdCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PW9zLnBhdGguam9pbih3cHRfcm9vdCwgIi53cHRjYWNoZSIpLAogICAg
ICAgICBoZWxwPSJQYXRoIGluIHdoaWNoIHRvIHN0b3JlIGFueSBjYWNoZXMgKGRlZmF1bHQgPHRl
c3RzX3Jvb3Q+Ly53cHRjYWNoZS8pIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLS1uby1wYXJhbGxlbCIsIGRlc3Q9InBhcmFsbGVsIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0iRG8gbm90IHBhcmFsbGVsaXplIGJ1aWxkaW5n
IHRoZSBtYW5pZmVzdCIpCiAgICAgcmV0dXJuIHBhcnNlcgogCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRp
bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IDJlZWQ3OWY0Mjc5ZDBlYzc4YzY5M2Y2MzJiOTZlMzZj
ZTNjOTZmYTkuLmFlZmMyYzk0ZjQwZTFhZTI5ZDM2NTdmZTQxMTRmNzlmOTc1NjhiYTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtNTUsMTYgKzU1LDE2IEBAIGRl
ZiB0b19vc19wYXRoKHBhdGgpOgogCiAKIGRlZiBnaXQocGF0aCk6Ci0gICAgIyB0eXBlOiAoYnl0
ZXMpIC0+IE9wdGlvbmFsW0NhbGxhYmxlWy4uLiwgYnl0ZXNdXQorICAgICMgdHlwZTogKGJ5dGVz
KSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIFRleHRdXQogICAgIGRlZiBnaXRmdW5jKGNtZCwg
KmFyZ3MpOgotICAgICAgICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBieXRlcworICAgICAg
ICAjIHR5cGU6IChieXRlcywgKmJ5dGVzKSAtPiBUZXh0CiAgICAgICAgIGZ1bGxfY21kID0gWyJn
aXQiLCBjbWRdICsgbGlzdChhcmdzKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJv
Y2Vzcy5TVERPVVQpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
ZnVsbF9jbWQsIGN3ZD1wYXRoLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgndXRm
OCcpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIHBsYXRm
b3JtLnVuYW1lKClbMF0gPT0gIldpbmRvd3MiIGFuZCBpc2luc3RhbmNlKGUsIFdpbmRvd3NFcnJv
cik6CiAgICAgICAgICAgICAgICAgZnVsbF9jbWRbMF0gPSAiZ2l0LmJhdCIKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1wYXRoLCBz
dGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnByb2Nl
c3MuY2hlY2tfb3V0cHV0KGZ1bGxfY21kLCBjd2Q9cGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RE
T1VUKS5kZWNvZGUoJ3V0ZjgnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBy
YWlzZQogCkBAIC0xMDMsNCArMTAzLDUgQEAgY2xhc3MgY2FjaGVkX3Byb3BlcnR5KEdlbmVyaWNb
VF0pOgogICAgICAgICAjIHdlIGNhbiB1bmNvbmRpdGlvbmFsbHkgYXNzaWduIGFzIG5leHQgdGlt
ZSB0aGlzIHdvbid0IGJlIGNhbGxlZAogICAgICAgICBhc3NlcnQgc2VsZi5uYW1lIG5vdCBpbiBv
YmouX19kaWN0X18KICAgICAgICAgcnYgPSBvYmouX19kaWN0X19bc2VsZi5uYW1lXSA9IHNlbGYu
ZnVuYyhvYmopCisgICAgICAgIG9iai5fX2RpY3RfXy5zZXRkZWZhdWx0KCJfX2NhY2hlZF9wcm9w
ZXJ0aWVzX18iLCBzZXQoKSkuYWRkKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Zjcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CmluZGV4IGQ0ZjQ3ZjZiZjBhYjM1YzlkYTUxNGVk
YjRjNGI3Nzk2NDRmZjkwZGQuLjdjMGZlZWI4MTY0Nzk5NzUyNzViMWExYzRkODRmMTIxNWZhYzE0
MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5CkBAIC0zMyw3ICszMyw3IEBA
IGRlZiBnZXRfdHJlZSh0ZXN0c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVf
cm9vdCwKICAgICAjIHR5cGU6IChieXRlcywgTWFuaWZlc3QsIE9wdGlvbmFsW2J5dGVzXSwgT3B0
aW9uYWxbYnl0ZXNdLCBib29sLCBib29sKSAtPiBGaWxlU3lzdGVtCiAgICAgdHJlZSA9IE5vbmUK
ICAgICBpZiBjYWNoZV9yb290IGlzIE5vbmU6Ci0gICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRo
LmpvaW4odGVzdHNfcm9vdCwgYiIud3B0Y2FjaGUiKQorICAgICAgICBjYWNoZV9yb290ID0gb3Mu
cGF0aC5qb2luKHRlc3RzX3Jvb3QsICIud3B0Y2FjaGUiKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhjYWNoZV9yb290KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWFrZWRpcnMo
Y2FjaGVfcm9vdCkKQEAgLTU4LDIxICs1OCwyMSBAQCBjbGFzcyBHaXRIYXNoZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkKIAogICAgIGRlZiBfbG9jYWxfY2hhbmdlcyhz
ZWxmKToKLSAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAgICAgICMgdHlwZTog
KCkgLT4gU2V0W1RleHRdCiAgICAgICAgICIiImdldCBhIHNldCBvZiBmaWxlcyB3aGljaCBoYXZl
IGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHkiIiIKICAgICAgICAgYXNzZXJ0
IHNlbGYuZ2l0IGlzIG5vdCBOb25lCiAgICAgICAgICMgbm90ZSB0aGF0IGdpdCBydW5zIHRoZSBj
b21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGljaCBtYXkKICAgICAgICAgIyBu
b3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3aXRoaW4gYSBicm93c2VyIHJl
cG8pCi0gICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0tcmVsYXRpdmUiLCBiIi0tbm8t
cmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFEIl0KKyAgICAgICAgY21kID0g
WyJkaWZmLWluZGV4IiwgIi0tcmVsYXRpdmUiLCAiLS1uby1yZW5hbWVzIiwgIi0tbmFtZS1vbmx5
IiwgIi16IiwgIkhFQUQiXQogICAgICAgICBkYXRhID0gc2VsZi5naXQoKmNtZCkKLSAgICAgICAg
cmV0dXJuIHNldChkYXRhLnNwbGl0KGIiXDAiKSkKKyAgICAgICAgcmV0dXJuIHNldChkYXRhLnNw
bGl0KCJcMCIpKQogCiAgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6Ci0gICAgICAgICMgdHlwZTog
KCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAjIHR5cGU6ICgpIC0+
IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAgICAgICAgICIiIgogICAgICAgICBBIGRpY3Qg
b2YgcmVsX3BhdGggLT4gY3VycmVudCBnaXQgb2JqZWN0IGlkIGlmIHRoZSB3b3JraW5nIHRyZWUg
bWF0Y2hlcyBIRUFEIGVsc2UgTm9uZQogICAgICAgICAiIiIKLSAgICAgICAgaGFzaF9jYWNoZSA9
IHt9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIE9wdGlvbmFsW2J5dGVzXV0KKyAgICAgICAgaGFzaF9j
YWNoZSA9IHt9ICAjIHR5cGU6IERpY3RbVGV4dCwgT3B0aW9uYWxbVGV4dF1dCiAKICAgICAgICAg
aWYgc2VsZi5naXQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBoYXNoX2NhY2hlCkBAIC04
MSw5ICs4MSw5IEBAIGNsYXNzIEdpdEhhc2hlcihvYmplY3QpOgogICAgICAgICAjIG5vdCBiZSB0
aGUgcm9vdCBvZiB0aGUgZ2l0IHJlcG8gKGUuZy4sIHdpdGhpbiBhIGJyb3dzZXIgcmVwbykKICAg
ICAgICAgY21kID0gWyJscy10cmVlIiwgIi1yIiwgIi16IiwgIkhFQUQiXQogICAgICAgICBsb2Nh
bF9jaGFuZ2VzID0gc2VsZi5fbG9jYWxfY2hhbmdlcygpCi0gICAgICAgIGZvciByZXN1bHQgaW4g
c2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6IGJ5dGVzCi0gICAgICAg
ICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIsIDEpCi0gICAgICAgICAg
ICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdl
cyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxm
LmdpdCgqY21kKS5zcGxpdCgiXDAiKVs6LTFdOiAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICBk
YXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoIlx0IiwgMSkKKyAgICAgICAgICAgIGhhc2hf
Y2FjaGVbcmVsX3BhdGhdID0gTm9uZSBpZiByZWxfcGF0aCBpbiBsb2NhbF9jaGFuZ2VzIGVsc2Ug
ZGF0YS5zcGxpdCgiICIsIDMpWzJdCiAKICAgICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKIApAQCAt
MTc0LDcgKzE3NCw3IEBAIGNsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgogCiAKIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToKLSAgICBmaWxlX25hbWUgPSBi
Im10aW1lLmpzb24iCisgICAgZmlsZV9uYW1lID0gIm10aW1lLmpzb24iCiAKICAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgbWFuaWZlc3RfcGF0aCwgcmVidWls
ZD1GYWxzZSk6CiAgICAgICAgICMgdHlwZTogKGJ5dGVzLCBieXRlcywgYnl0ZXMsIGJvb2wpIC0+
IE5vbmUKQEAgLTIyMiwxNiArMjIyLDE2IEBAIGNsYXNzIE10aW1lQ2FjaGUoQ2FjaGVGaWxlKToK
IAogCiBjbGFzcyBHaXRJZ25vcmVDYWNoZShDYWNoZUZpbGUsIE11dGFibGVNYXBwaW5nKTogICMg
dHlwZTogaWdub3JlCi0gICAgZmlsZV9uYW1lID0gYiJnaXRpZ25vcmUuanNvbiIKKyAgICBmaWxl
X25hbWUgPSAiZ2l0aWdub3JlLmpzb24iCiAKICAgICBkZWYgY2hlY2tfdmFsaWQoc2VsZiwgZGF0
YSk6CiAgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBBbnldKSAtPiBEaWN0W0FueSwgQW55XQot
ICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RzX3Jvb3QsIGIiLmdp
dGlnbm9yZSIpCisgICAgICAgIGlnbm9yZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdHNf
cm9vdCwgIi5naXRpZ25vcmUiKQogICAgICAgICBtdGltZSA9IG9zLnBhdGguZ2V0bXRpbWUoaWdu
b3JlX3BhdGgpCi0gICAgICAgIGlmIGRhdGEuZ2V0KGIiL2dpdGlnbm9yZV9maWxlIikgIT0gW2ln
bm9yZV9wYXRoLCBtdGltZV06CisgICAgICAgIGlmIGRhdGEuZ2V0KCIvZ2l0aWdub3JlX2ZpbGUi
KSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBU
cnVlCiAgICAgICAgICAgICBkYXRhID0ge30KLSAgICAgICAgICAgIGRhdGFbYiIvZ2l0aWdub3Jl
X2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgICAgICBkYXRhWyIvZ2l0aWdu
b3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCiAgICAgICAgIHJldHVybiBkYXRhCiAK
ICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CkBAIC0yODYsNyArMjg2LDcgQEAgZGVm
IHdhbGsocm9vdCk6CiAgICAgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAogCiAgICAgcm9vdCA9
IG9zLnBhdGguYWJzcGF0aChyb290KQotICAgIHN0YWNrID0gZGVxdWUoWyhyb290LCBiIiIpXSkK
KyAgICBzdGFjayA9IGRlcXVlKFsocm9vdCwgIiIpXSkKIAogICAgIHdoaWxlIHN0YWNrOgogICAg
ICAgICBkaXJfcGF0aCwgcmVsX3BhdGggPSBzdGFjay5wb3BsZWZ0KCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nCmluZGV4IGEwMTU0MjY4N2IxYTAxNmRm
YjQ3NTI1ZTBhZTJlZDRhYTJiMjE3ZjguLjM4OGZiYjExZWQ5ZDhkYTAxNDNmODJlZGMwMmQxMGM5
NzliZTM3MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMjMsNiArMjMsNyBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvbWFuaWZlc3QucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3NvdXJjZWZpbGUucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdHlwZWRhdGEucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0
ZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdXRpbHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbXlweS5pbmkKaW5kZXggYWM4
ZWRkMzdkM2FjMjkwNDEzM2ExMmVlOWU3NTUwZGQ1YTQ4NzIzOC4uYjk0M2I2ZDA4OWE0YjhmODFl
OWI2ZTIzYzc2ODgwZmI5M2NmNjY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL215cHkuaW5pCkBAIC0xLDEyICsx
LDEzIEBACiBbbXlweV0KICNjaGVja191bnR5cGVkX2RlZnMgPSBUcnVlCi1kaXNhbGxvd191bnR5
cGVkX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19hbnlfZ2VuZXJpY3MgPSBUcnVlCiBkaXNhbGxvd19p
bmNvbXBsZXRlX2RlZnMgPSBUcnVlCiBkaXNhbGxvd19zdWJjbGFzc2luZ19hbnkgPSBUcnVlCiBk
aXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQogZGlzYWxsb3dfdW50eXBlZF9kZWNvcmF0b3Jz
ID0gVHJ1ZQorZGlzYWxsb3dfdW50eXBlZF9kZWZzID0gVHJ1ZQogbm9faW1wbGljaXRfb3B0aW9u
YWwgPSBUcnVlCitzdHJpY3RfZXF1YWxpdHkgPSBUcnVlCiB3YXJuX3JlZHVuZGFudF9jYXN0cyA9
IFRydWUKIHdhcm5fcmV0dXJuX2FueSA9IFRydWUKIHdhcm5fdW51c2VkX2NvbmZpZ3MgPSBUcnVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5MjctZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCmluZGV4IDk5MzI0YjJhYWQxNGQ5MjFm
NDY5ZjUyOTM0ZjdmZjkzNzRhMWQ5ZWUuLmRkNmNlYjZmZWE0Yjk3M2MwMTI0ZGY0MzgyZjlmMWEz
YTlkNWEwZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCkBAIC0yMiw2ICsy
Miw3IEBAIGlnbm9yZSA9IEUxMjgsRTEyOSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIsRTMwMyxF
MzA1LEU0MDIsRTczMSxXNTA0LFc2MDEsVzYwNSxXCiBleGNsdWRlID0KICAgICAudG94LAogICAg
IHB5d2Vic29ja2V0LAorICAgIHF1aWMsCiAgICAgdGhpcmRfcGFydHksCiAgICAgd3B0c2VydmUv
ZG9jcy9jb25mLnB5LAogICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZh
bGlkLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5My1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4LmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGNjMWRj
NmY2YTdhZmI0MWYxMmM0MWZhODI5MzMzN2QxOWEwMjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTMtZmxha2U4
LmluaQpAQCAtMCwwICsxLDI3IEBACitbZmxha2U4XQorc2VsZWN0ID0gRSxXLEYsTgorIyBFMTI4
OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAorIyBF
MTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dp
Y2FsIGxpbmUKKyMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9w
ZXJhdG9yCisjIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZ
LCBvciDigJg64oCZCisjIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8g
cGFyYW1ldGVyIGVxdWFscworIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRo
IOKAmCMg4oCYCisjIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKKyMgRTMw
MzogdG9vIG1hbnkgYmxhbmsgbGluZXMgKDMpCisjIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGlu
ZXMgYWZ0ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCisjIEU0MDI6IG1vZHVsZSBsZXZlbCBp
bXBvcnQgbm90IGF0IHRvcCBvZiBmaWxlCisjIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEg
ZXhwcmVzc2lvbiwgdXNlIGEgZGVmCisjIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9w
ZXJhdG9yCisjIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisjIE44MDE6IGNsYXNzIG5h
bWVzIHNob3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgorIyBOODAyOiBmdW5jdGlvbiBuYW1l
IHNob3VsZCBiZSBsb3dlcmNhc2UKKyMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxk
IGJlIGxvd2VyY2FzZQoraWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMw
MixFMzAzLEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgorZXhjbHVkZSA9
CisgICAgLnRveCwKKyAgICBweXdlYnNvY2tldCwKKyAgICB0aGlyZF9wYXJ0eSwKKyAgICB3cHRy
dW5uZXIsCisgICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAorICAgIHdwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CittYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHkzNi1mbGFrZTguaW5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0Y2MxZGM2ZjZhN2FmYjQxZjEyYzQxZmE4MjkzMzM3ZDE5YTAyM2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi1bZmxha2U4XQotc2VsZWN0ID0gRSxXLEYsTgotIyBFMTI4OiBjb250
aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3IgdmlzdWFsIGluZGVudAotIyBFMTI5OiB2
aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRlbnQgYXMgbmV4dCBsb2dpY2FsIGxp
bmUKLSMgRTIyNjogbWlzc2luZyB3aGl0ZXNwYWNlIGFyb3VuZCBhcml0aG1ldGljIG9wZXJhdG9y
Ci0jIEUyMzE6IG1pc3Npbmcgd2hpdGVzcGFjZSBhZnRlciDigJgs4oCZLCDigJg74oCZLCBvciDi
gJg64oCZCi0jIEUyNTE6IHVuZXhwZWN0ZWQgc3BhY2VzIGFyb3VuZCBrZXl3b3JkIC8gcGFyYW1l
dGVyIGVxdWFscwotIyBFMjY1OiBibG9jayBjb21tZW50IHNob3VsZCBzdGFydCB3aXRoIOKAmCMg
4oCYCi0jIEUzMDI6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMsIGZvdW5kIDAKLSMgRTMwMzogdG9v
IG1hbnkgYmxhbmsgbGluZXMgKDMpCi0jIEUzMDU6IGV4cGVjdGVkIDIgYmxhbmsgbGluZXMgYWZ0
ZXIgZW5kIG9mIGZ1bmN0aW9uIG9yIGNsYXNzCi0jIEU0MDI6IG1vZHVsZSBsZXZlbCBpbXBvcnQg
bm90IGF0IHRvcCBvZiBmaWxlCi0jIEU3MzE6IGRvIG5vdCBhc3NpZ24gYSBsYW1iZGEgZXhwcmVz
c2lvbiwgdXNlIGEgZGVmCi0jIFc1MDQ6IGxpbmUgYnJlYWsgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9y
Ci0jIFc2MDU6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCi0jIE44MDE6IGNsYXNzIG5hbWVzIHNo
b3VsZCB1c2UgQ2FwV29yZHMgY29udmVudGlvbgotIyBOODAyOiBmdW5jdGlvbiBuYW1lIHNob3Vs
ZCBiZSBsb3dlcmNhc2UKLSMgTjgwNjogdmFyaWFibGUgaW4gZnVuY3Rpb24gc2hvdWxkIGJlIGxv
d2VyY2FzZQotaWdub3JlID0gRTEyOCxFMTI5LEUyMjYsRTIzMSxFMjUxLEUyNjUsRTMwMixFMzAz
LEUzMDUsRTQwMixFNzMxLFc1MDQsVzYwNSxOODAxLE44MDIsTjgwNgotZXhjbHVkZSA9Ci0gICAg
LnRveCwKLSAgICBweXdlYnNvY2tldCwKLSAgICB0aGlyZF9wYXJ0eSwKLSAgICB3cHRydW5uZXIs
Ci0gICAgd3B0c2VydmUvZG9jcy9jb25mLnB5LAotICAgIHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9pbnZhbGlkLnB5Ci1tYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9S
RUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNjRiNzAxY2ZiODU5MDBjMjE5NDYzNjI0
ZTZhZmEyOTlhMzgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMzAg
QEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCitbUVVJQ10oaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9vbHMuCisKKyMgUXVp
Y1RyYW5zcG9ydAorW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWljX3RyYW5zcG9ydF9z
ZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKK1tRdWljVHJhbnNwb3J0XShodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWljKSBzZXJ2ZXIKK2Zv
ciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fp
b3F1aWMvKSwgYW5kIHRlc3QKK2F1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0b20gaGFuZGxlcnMg
YnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgorW3dwdC93ZWJ0cmFuc3BvcnQvcXVpYy9oYW5k
bGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCisKKyMjIEN1c3RvbSBI
YW5kbGVycworVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rpb25zIGRlZmluZWQg
aW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KKworIC0gaGFuZGxlX2NsaWVudF9pbmRpY2F0aW9uIGlz
IGNhbGxlZCBkdXJpbmcgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MuCisgICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRocmVlIGFyZ3VtZW50czoKKyAgIAorICAgLSBjb25uZWN0
aW9uOiBhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorICAgLSBvcmlnaW46
IHN0ciBUaGUgb3JpZ2luIG9mIHRoZSBpbml0aWF0b3IuCisgICAtIHF1ZXJ5OiBEaWN0W3N0ciwg
c3RyXSBUaGUgZGljdGlvbmFyeSBvZiBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBVUkwgb2YgdGhl
CisgICAgICAgICAgICBjb25uZWN0aW9uLgorCisgICBBIGhhbmRsZXIgY2FuIGFib3J0IHRoZSBj
bGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzIGVpdGhlciBieSByYWlzaW5nIGFuCisgICBleGNlcHRp
b24gb3IgY2xvc2luZyB0aGUgY29ubmVjdGlvbi4KKwkgICAgCisgLSBoYW5kbGVfZXZlbnQgaXMg
Y2FsbGVkIHdoZW4gYSBRdWljRXZlbnQgYXJyaXZlcy4KKyAgIC0gY29ubmVjdGlvbjogYWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2wKKyAgIC0gZXZlbnQ6IGFpb3F1aWMucXVp
Yy5ldmVudHMuUXVpY0V2ZW50CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB1bnRp
bCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBmaW5pc2hlcworICAgc3VjY2Vzc2Z1bGx5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0
X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjE2Y2YxM2ZmZmMxYmJhODdkNjEwZTIyY2Y2MGUxMTA0M2Y1MzkxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKQEAgLTAsMCArMSwxMiBAQAorVG8gZ2VuZXJhdGUgY2Vy
dC5rZXkgYW5kIGNlcnQucGVtOgorCisgMS4gUmVtb3ZlIHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBh
bmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluIC4uLy4uL2NlcnRzLgorIDEuIEZyb20gdGhlIHJv
b3QsIHJ1bgorICAgIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29scy9xdWljL2NlcnRzL2NvbmZp
Zy5qc29uYCBhbmQgdGVybWluYXRlIGl0CisgICAgYWZ0ZXIgaXQgaGFzIHN0YXJ0ZWQgdXAuCisg
MS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5rZXkgdG8gdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LmtleS4KKyAxLiBNb3ZlIHRvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBl
bSB0byB0b29scy9xdWljL2NlcnRzL2NlcnQucGVtLgorIDEuIFJlY292ZXIgdGhlIG9yaWdpbmFs
IHdlYi1wbGF0Zm9ybS50ZXN0LmtleSBhbmQgd2ViLXBsYXRmb3JtLnRlc3QucGVtIGluCisgICAg
Li4vLi4vY2VydHMuCisKK1NlZSBhbHNvOiAuLi8uLi9jZXJ0cy9SRUFETUUubWQKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5rZXkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY2VydC5r
ZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTkzY2RmYTU0MzcyOGI2MzY5YjA1ZWVmZTIwODExY2Q2NjYyYjcxNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQpAQCAtMCwwICsxLDI4IEBACistLS0tLUJF
R0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV3QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktv
d2dnU21BZ0VBQW9JQkFRRGJ5UHVpQkdweGhhdkYKKzNqN3BJNmcrQTBnQzRCVExUcU1PYktTVGtR
V3NqcTFHT2QyTEExbHdUUExPYndydmhJVUZ6YndvSWJPd29QTWUKK01ranNzRkNIRzNGTWo1NmNL
aUFRMkRGSTZkSzVQakdVVk5TUnhrL0Y0SGgyWng5RFRFTmwvRWIvY1JUMnl1dSsKK1c5SEN1L0JX
ZmJXd2x3d041dnh5bmVDb2g1Y0JCL2pkMUtUT1JndVlwdWF0SGI4NUFENUJSaFlMWHdIRjd5VkgK
K05WeEhldUdsSzMxeXVZQ0hOS3ZCSERnWkY1VHA4RnFLWG5WVStQbEtYQ1NVNTYwMmMyVTV4SElG
dktUeWlabE0KK2NZWE5TVXAwbGNOdy9pVFNWdHNQRTRrMXN0dTZxa1dkVDdIL3VVK0dVQithTHFP
K3N2QS9zOUdHWDhIWmd0K3IKK3ZTRkU4bElKQWdNQkFBRUNnZ0VCQUpBOTZEOWRqSW95Z3hoYUVv
bXBtQ29TdHprRDNVSE11eUNsVnFGdVJQNEoKK3FWaDBjNXhmTjF5SGM3YmRrNXk4S1IwMDk2NlM1
NzRjODFHM0NMc2x2OFBiMDlDK1ZRY0Njb2I3aStUaGFDV2cKKzFxTVZ4V2hpY1VwWlZsWEd1ZkxO
NDFIVWJyZ0lmQXk0QWwydEh3NGhqOHNEdDdGTWdHSERYWnpQVm5qa2U4cjEKK085WWlKbDFReDRM
N3ZNV3J1R2E5UVdqRmdIbkcrdWhhS2pzTDJ2N0pRT0d5NXQ4YWJvVnliN2g4ckdnL21DK2UKK0hJ
WU91Y1YxYUVNZ1lWYUFuaEdzS01Ia3g1QTF4V3BYQlNydUcrR1JCeC9rWFdaK2tDTmNrTFh1VmRy
aHE0SEkKK0FkYnhJenFRVFBNWHBPM1JBdWp5cnhrSGFiRU5NUEEvRkdINHN6bWRMb0VDZ1lFQTl6
OHBlNy92U2xXZ2Zoc0YKK3o1UW53V0h5RmpydWhnRC8yc2E0TEIvY213VFFkR3c4RTVUTkhEYkNn
bVM0OTlEWlVYSVp1Qk9UZWtkRVZEUWEKK25nOFZ5TDNvN0Rtcys1aVBpNWNxc2NwMUtrakxFTXlQ
cHFzNEpUdWl4UnBqbU1meWNkeFZUcFhoY3VxbkpwVEwKK1FDOXBSNU4velpjQU1EbEJ2MEZ6YzhU
NzhYa0NnWUVBNDVEdWVXR0hWZjJ1NHVNWXlXeHlaaGFORGFnbDEzeXgKKy9vU1NVVHpvTHZTcEdR
eEtrditmeFNOcUwzbnU1SWE2dUQ0R3U1TnViUDRIci9WZVNLUmZta1QxbHV2RmNWZkMKK2tuOHI4
YnNzWnE4NTVBVkp4WGE1SzFhdVdqQ3VGSGowcFlmNTZzZmhrUHhwWTBSUUVna3Z1RTNpb3NRMTJn
RlgKK3Z3MTQ3RnRRVVJFQ2dZRUE4NVJwVlA0NVMzMWlPUHA4VmcxNndSeXllRTRrc1NZSTZrcitK
SkpiTHVtbVNCeGQKK2Ixa1lYU1JocWo1NnI4STBadlhHK3I5bWVuLzloQXMwOGVTZ3JIelVITzJS
U3VqNCtpZTZLeC92SC9KSkJFclQKK2R2cVZ2TENzNGd2bWRSeis4RWVHVDM1L2RreFEwa1NpbktC
WTB1Z3diNlhFekwyTDFWVXczYXdDSGRrQ2dZRUEKK3F0UUlnT3Y2dVUybmRFREFRYXg4TURDcmtG
M3lrbEhVR0ZrU3NaTkVSTU43RVFlT0Q4MSs5WEZCYkFSZmxnT2gKK3RWOHlsS3IzRVRDZE9yUzZJ
MVBwUkppUnQ4cWp2Qk1DU0JEWlB5eWdCekZ4QnNBRmdncytzODd0TVYwcndNaVAKKzlwY2R2K1p1
YVBWaWM1YzdlRjZYQ1FiR3BDTWd2ZGVXTkNCNzd3b1pQOUVDZ1lFQWxvYmtQR0RZQ3kvUmFWaVUK
K0ZicTVHbzZ3MHBNVm5MellibjRHaDFBSlBlUUtJU3FYdEpaN3RxcGRXK2k3cXprTHc3NEVMYVlD
QlIyWkVscmoKK0VWZTVhUk94NlRGTjlSbmprRm55djlMZXlZTCtZUGM4QUl3VlVDZVNQaWtTR0xG
cEpmYS9qd0RtV2gzdkhtbUEKK05SVVA0MHdidEJpNDJDMnVkclR4VVdzSHhxYz0KKy0tLS0tRU5E
IFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUzNjdjODlmZjI3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCkBAIC0wLDAgKzEsMjQwIEBACitDZXJ0aWZp
Y2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAzICgweDIpCisgICAgICAgIFNlcmlh
bCBOdW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKKyAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTog
c2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0t
dGVzdHMKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEFwciAyMCAx
MToyMDo1NiAyMDIwIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDE4IDExOjIwOjU2
IDIwMzAgR01UCisgICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CisgICAgICAg
IFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0
aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDgg
Yml0KQorICAgICAgICAgICAgICAgIE1vZHVsdXM6CisgICAgICAgICAgICAgICAgICAgIDAwOmRi
OmM4OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgorICAgICAgICAgICAgICAg
ICAgICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5Mzo5MToKKyAgICAg
ICAgICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6NzA6NGM6ZjI6Y2U6
NmY6CisgICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJjOjI4OjIxOmIzOmIw
OmEwOmYzOjFlOjMyOgorICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1MDo4NzoxYjo3MTo0
Yzo4Zjo5ZTo5YzoyYToyMDoxMDpkODoKKyAgICAgICAgICAgICAgICAgICAgMzE6NDg6ZTk6ZDI6
Yjk6M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6CisgICAgICAgICAgICAgICAgICAgIDc4
Ojc2OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgorICAgICAgICAgICAg
ICAgICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5NzowYzowZDplNjoKKyAg
ICAgICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6Zjg6ZGQ6ZDQ6YTQ6
Y2U6NDY6CisgICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFkOmJmOjM5OjAwOjNl
OjQxOjQ2OjE2OjBiOjVmOgorICAgICAgICAgICAgICAgICAgICAwMTpjNTplZjoyNTo0NzozNTo1
Yzo0Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKKyAgICAgICAgICAgICAgICAgICAgODA6ODc6MzQ6
YWI6YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6CisgICAgICAgICAgICAgICAgICAg
IDc1OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0OgorICAgICAgICAg
ICAgICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0OTo0YTo3NDo5NToK
KyAgICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6MTM6ODk6MzU6YjI6
ZGI6YmE6YWE6CisgICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZmOmI5OjRmOjg2OjUw
OjFmOjlhOjJlOmEzOmJlOmIyOgorICAgICAgICAgICAgICAgICAgICBmMDozZjpiMzpkMTo4Njo1
ZjpjMTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKKyAgICAgICAgICAgICAgICAgICAgNTI6MDkK
KyAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAg
ICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElk
ZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdDOjQxOjJCOjNCOjlG
OjFCOjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCisgICAgICAgICAgICBYNTA5djMgQXV0aG9y
aXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjow
NzowNTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQworCisgICAgICAg
ICAgICBYNTA5djMgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVy
ZSwgTm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAgICAgICBYNTA5djMg
RXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRo
ZW50aWNhdGlvbgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTog
CisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDg1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ay
NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTku
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A4MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQ5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
MzUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEz
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDk1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NDUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Az
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
Mjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3Ax
MC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53
d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53
d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3
dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4t
LWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5T
OnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYy
OGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZk
czUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50
ZXN0CisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KKyAg
ICAgICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1OmQ1OmRjOjk5Ojlm
OjNmOgorICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6NGU6Yzg6ZDQ6YWE6
MzQ6OTU6ZTQ6OWU6CisgICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMTozMTo2NzplNTphNjpk
YTo4NTo2YjowZjpkNzo2NDpiNzoKKyAgICAgICAgIGU3OmViOmZlOjA5OmI2Ojg4OmUxOjc0OjFk
OjBjOjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgorICAgICAgICAgN2M6YmE6ZTY6ZmI6NTI6MWQ6
NTg6Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6CisgICAgICAgICA0MTo3MTo5OTph
MzoxYTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoKKyAgICAgICAgIGE5
OmQ4OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAxOjk5OjdhOgorICAg
ICAgICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6ZWM6NzU6YjI6Nzc6
MTE6CisgICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpmZDphOTowYjphMjpl
ZDoyZDoxYzo2ZToKKyAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEwOmNhOmU4OmU2OmUw
OjdhOmE5OmY0OjI2Ojk0OjZiOgorICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6M2U6ZTA6ZWY6ZDI6
YmU6MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6CisgICAgICAgICAwYzoyNDo4Mzo3MjplMjplNDo2
ZjoyNTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKKyAgICAgICAgIGMzOmQ2OjA2OmFl
OjFkOmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgorICAgICAgICAgMTc6
ODc6MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6NGQ6MDQ6CisgICAg
ICAgICBmZjo2MDpmZTplMworLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlndkRDQ0g2
U2dBd0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCitZ
aTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3MHpNREEwTVRneE1U
SXdOVFphCitNQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUlJQklqQU5C
Z2txaGtpRzl3MEJBUUVGCitBQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1JxY1lXcnhkNCs2U09v
UGdOSUF1QVV5MDZqRG15a2s1RUZySTZ0CitSam5kaXdOWmNFenl6bThLNzRTRkJjMjhLQ0d6c0tE
ekhqSkk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4CitsRlRVa2NaUHhlQjRkbWNmUTB4RFpm
eEcvM0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0CiszZFNremtZTG1LYm1y
UjIvT1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdSZVU2ZkJhCitpbDUx
VlBqNVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGswbGJiRHhPSk5iTGJ1
cXBGCituVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpTQ1FJREFRQUJvNEll
QkRDQ0hnQXdDUVlECitWUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZOOFFTczdueHNOMXFt
NHQwL21ZVnd3SHdZRFZSMGpCQmd3CitGb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3
WURWUjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCitDQ3NHQVFVRkJ3TUJNSUlkandZRFZSMFJC
SUlkaGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2CitjRGd1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0E1CitMbmRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXNXZkQzEz
CitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hW
dmNETXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNHeGhkR1p2Y20wdWRH
VnpkSUlWYjNBeExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTVM1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1TVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F6T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeU9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4
T0M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0EzTnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk15NTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBNU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TkM1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F6TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk1TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXZDNk
M01pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E0Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4Tnk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlXYjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoCitkR1p2
Y20wdWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TUM1M1pXSXRj
R3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0Ew
T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlX
YjNBM05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3ho
CitkR1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1
M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F5TlM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNB
NE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRH
VnpkSUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoCitk
R1p2Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pX
SXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0E1Tmk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F4T1M1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlXYjNBME9D
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpk
SUlaYjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxtNXZkQzEzCitaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpi
M0ExCitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6CitkSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNB
M0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSVpiM0EwTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2CitkQzEzWldJdGNHeGhkR1p2
Y20wdWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TlRN
dWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2
CitjbTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpF
dWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRDMTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSWFiM0E0CitNeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNk
ekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205
d01qRXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2CitkQzEzWldJdGNH
eGhkR1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitH
bTl3TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xtNXZkQzEzWldJdGNH
eGhkR1p2CitjbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NH
bTl3TmpVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E0CitNQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNT
Q0dtOXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEWTRMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxj
M1NDR205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2CitkQzEz
WldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDCitHbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNUxtNXZkQzEz
WldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NHbTl3TnprdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd5TG01dmRD
MTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCitMbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNETTVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNK
dExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTRMbTV2
CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDCitHbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZeUxt
NXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1
TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitPQzV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4wZ2hwdmNE
STJMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNE
TTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDCitHbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2
Y0RVM0xtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0ExTkM1dWIzUXRkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdo
cHZjRFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1CitOeTV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCitaWE4w
Z2hwdmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlM
WEJzCitZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4w
Z2hwdmNEUXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3T1RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUw
WlhOMGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0ExCitOUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUw
CitaWE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOQzV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2hwdmNERXhMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXVi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFiM0F4TXk1
dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRsCitZaTF3YkdGMFpt
OXliUzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5CitO
eTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExYZGxZaTF3YkdGMFpt
OXliUzUwCitaWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhO
UzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2hwdmNERTRMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNB
Mk15NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitHbTl3TWpndWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2CitjbTB1ZEdWemRJSWFi
M0EyTmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsCitZaTF3
YkdGMFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFi
M0EzCitOQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJ
YWIzQTROeTV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUliZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaHQzZDNjeUxuZDNkekl1
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20w
dWRHVnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2Qz
CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkx
d2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDSG5kM2R5NTNkM2N5CitMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNN
aTUzZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCitNaTV1YjNRdGQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMz
U0NIM2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1Citk
M2QzTWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2Qz
Y3VkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsCitjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDSTNkM2R6SXVlRzR0CitMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SWplRzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0kzZDNk
ekV1ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0CitiSFps
TFRac1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNk
bVV0CitObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXho
WkM1M2QzY3hMbTV2CitkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0Ykha
bExUWnNZV1F1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2Rt
VXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGha
QzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCitlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzCitkbVV0Tm14
aFpDNTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0
CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0
dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaTE0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNXaDJNamhoTG5k
M2R6SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCitNMngzZDJ0eWNX
aDJNamhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0Cith
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2Rt
VXRObXhoCitaQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
akYzZDNjdWVHNHRMVzQ0CithalprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0Yw
Wm05eWJTNTBaWE4wZ2pGNGJpMHRiamhxCitObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05
MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2Rq
STRZUzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5CitkM2QzTVM1NGJpMHRi
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1ND
TW5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBa
bTl5CitiUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2
ZEMxM1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZ
eU9HRXVlRzR0TFd4MlpTMDJiR0ZrCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJI
WmxMVFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCithM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG5odUxTMXNkbVV0
Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0CitObXhoWkM1
NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
CitjM1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4
M2QydHljV2gyCitNamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5U
TnNkM2RyY25Gb2RqSTRZUzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCitLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBdUxWV3Ew
WmFncU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCitOSlhrbmt2a2RPVEU3QkV4WitX
bTJvVnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpOCithS05Wakp0WHU0
a3lFRUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRmZUhRR1plazl5CitS
Mm1jbUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1RUYxRENtWkFRUXl1
am00SHFwCis5Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1RzhscU83RkVvbloz
WStDRk1QV0JxNGR1M3M4CisvSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5Nk5DNkJtOU5CUDln
L3VNPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5q
c29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL2NvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYTZkMDUyOWZiOTQ0OWM0YmZiMGM5
MzU0NmE3OTYyYTVhYmQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvY29uZmlnLmpzb24KQEAg
LTAsMCArMSwxNyBAQAoreworICAgICJwb3J0cyI6IHsKKyAgICAgICAgImh0dHAiOiBbXSwKKyAg
ICAgICAgImh0dHBzIjogWyJhdXRvIl0sCisgICAgICAgICJ3cyI6IFtdLAorICAgICAgICAid3Nz
IjogW10KKyAgICB9LAorICAgICJjaGVja19zdWJkb21haW5zIjogZmFsc2UsCisgICAgInNzbCI6
IHsKKyAgICAgICAgInR5cGUiOiAib3BlbnNzbCIsCisgICAgICAgICJvcGVuc3NsIjogeworICAg
ICAgICAgICAgImR1cmF0aW9uIjogMzY1MCwKKyAgICAgICAgICAgICJmb3JjZV9yZWdlbmVyYXRl
IjogZmFsc2UsCisgICAgICAgICAgICAiYmFzZV9wYXRoIjogInRvb2xzL2NlcnRzIgorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL3czYy1p
bXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZmM1YTE5ZjNjYjlkNjQzM2FlNDM0MzUxM2U4NDQ1ZGU4
NDg4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwy
MCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
KwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAor
CitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xp
c3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LmtleQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jZXJ0LnBl
bQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9jZXJ0cy9jb25maWcuanNvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDQzMjJlZWQzYmFmNDY3YzZkODA5ZmMyNmFjOTU4NTk4OTQyMzExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAic2Vy
dmVxdWljIjogeworICAgICJwYXRoIjogInNlcnZlLnB5IiwKKyAgICAic2NyaXB0IjogInJ1biIs
CisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAicHkzb25seSI6IHRydWUsCisgICAg
ImhlbHAiOiAiU3RhcnQgdGhlIFFVSUMgc2VydmVyIiwKKyAgICAidmlydHVhbGVudiI6IHRydWUs
CisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICJyZXF1aXJlbWVudHMudHh0IgorICAgIF0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9y
dF9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNGFkMTdmMTk1YzZlNWQyMzNlODRhOWIyMzkwNGNj
Y2ZlY2NkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKQEAgLTAs
MCArMSwyNDYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IGFzeW5jaW8KK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3RydWN0CitpbXBvcnQgdXJsbGliLnBhcnNlCitmcm9tIHR5cGluZyBpbXBv
cnQgRGljdCwgT3B0aW9uYWwKKworZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wsIHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGlt
cG9ydCBRdWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuY29ubmVjdGlvbiBpbXBv
cnQgRU5EX1NUQVRFUworZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRh
UmVjZWl2ZWQsIFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tl
dAorCitTRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5zcG9ydCcKKworaGFuZGxlcnNfcGF0aCA9
IE5vbmUKKworCitjbGFzcyBFdmVudEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNv
bm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0OiBEaWN0KToKKyAg
ICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLmdsb2JhbF9k
aWN0ID0gZ2xvYmFsX2RpY3QKKworICAgIGRlZiBoYW5kbGVfY2xpZW50X2luZGljYXRpb24oCisg
ICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgb3JpZ2luOiBzdHIsCisgICAgICAgICAgICBx
dWVyeTogRGljdFtzdHIsIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIG5hbWUgPSAnaGFuZGxlX2Ns
aWVudF9pbmRpY2F0aW9uJworICAgICAgICBpZiBuYW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6Cisg
ICAgICAgICAgICBzZWxmLmdsb2JhbF9kaWN0W25hbWVdKHNlbGYuY29ubmVjdGlvbiwgb3JpZ2lu
LCBxdWVyeSkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkg
LT4gTm9uZToKKyAgICAgICAgbmFtZSA9ICdoYW5kbGVfZXZlbnQnCisgICAgICAgIGlmIG5hbWUg
aW4gc2VsZi5nbG9iYWxfZGljdDoKKyAgICAgICAgICAgIHNlbGYuZ2xvYmFsX2RpY3RbbmFtZV0o
c2VsZi5jb25uZWN0aW9uLCBldmVudCkKKworCitjbGFzcyBRdWljVHJhbnNwb3J0UHJvdG9jb2wo
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncykgLT4gTm9uZToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCisgICAgICAgIHNlbGYuc3RyZWFtcyA9IGRpY3QoKQorICAgICAgICBzZWxmLnBlbmRpbmdf
ZXZlbnRzID0gW10KKyAgICAgICAgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZGF0YSA9IGInJworICAgICAgICBz
ZWxmLmhhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBwcmVmaXggPSAnISEnCisgICAgICAg
IGxvZ2dpbmcubG9nKGxvZ2dpbmcuSU5GTywgJ1FVSUMgZXZlbnQ6ICVzJyAlIHR5cGUoZXZlbnQp
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuY2xpZW50X2luZGljYXRp
b25fZmluaXNoZWQgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZXZlbnQsIFN0
cmVhbURhdGFSZWNlaXZlZCkgYW5kCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0cmVhbV9p
ZCA9PSAyKToKKyAgICAgICAgICAgICAgICAjIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MKKyAg
ICAgICAgICAgICAgICBwcmVmaXggPSAnQ2xpZW50IGluZGljYXRpb24gZXJyb3I6ICcKKyAgICAg
ICAgICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEgKz0gZXZlbnQuZGF0YQorICAg
ICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEpID4gNjU1MzU6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndG9vIGxhcmdlIGRhdGEgZm9y
IGNsaWVudCBpbmRpY2F0aW9uJykKKyAgICAgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFt
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfY2xpZW50X2luZGljYXRpb24oKQor
ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0g
J0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIHNl
bGYucGVuZGluZ19ldmVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIu
aGFuZGxlX2V2ZW50KGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMu
Y2xlYXIoKQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5p
c2hlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkK
KyAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGluZyBFcnJvcjogJworICAgICAgICAgICAgICAgIHNl
bGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZlbnQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlciA9IE5vbmUKKyAgICAgICAgICAgIGxvZ2dp
bmcubG9nKGxvZ2dpbmcuV0FSTiwgcHJlZml4ICsgc3RyKGUpKQorICAgICAgICAgICAgc2VsZi5j
bG9zZSgpCisKKyAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2VsZiwgYnMpOgorICAg
ICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAga2V5X2IgPSBicy5yZWFkKDIpCisgICAgICAg
ICAgICBpZiBsZW4oa2V5X2IpID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
ICAgICBsZW5ndGhfYiA9IGJzLnJlYWQoMikKKyAgICAgICAgICAgIGlmIGxlbihrZXlfYikgIT0g
MjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBnZXQgIktleSIg
ZmllbGQnKQorICAgICAgICAgICAgaWYgbGVuKGxlbmd0aF9iKSAhPSAyOgorICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGdldCAiTGVuZ3RoIiBmaWVsZCcpCisgICAg
ICAgICAgICBrZXkgPSBzdHJ1Y3QudW5wYWNrKCchSCcsIGtleV9iKVswXQorICAgICAgICAgICAg
bGVuZ3RoID0gc3RydWN0LnVucGFjaygnIUgnLCBsZW5ndGhfYilbMF0KKyAgICAgICAgICAgIHZh
bHVlID0gYnMucmVhZChsZW5ndGgpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpICE9IGxlbmd0
aDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3RydW5jYXRlZCAiVmFsdWUiIGZp
ZWxkJykKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQorCisgICAgZGVmIHByb2Nlc3Nf
Y2xpZW50X2luZGljYXRpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgb3JpZ2luID0gTm9uZQor
ICAgICAgICBvcmlnaW5fc3RyaW5nID0gTm9uZQorICAgICAgICBwYXRoID0gTm9uZQorICAgICAg
ICBwYXRoX3N0cmluZyA9IE5vbmUKKyAgICAgICAgS0VZX09SSUdJTiA9IDAKKyAgICAgICAgS0VZ
X1BBVEggPSAxCisgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5wYXJzZV9jbGllbnRf
aW5kaWNhdGlvbigKKyAgICAgICAgICAgICAgICBpby5CeXRlc0lPKHNlbGYuY2xpZW50X2luZGlj
YXRpb25fZGF0YSkpOgorICAgICAgICAgICAgaWYga2V5ID09IEtFWV9PUklHSU46CisgICAgICAg
ICAgICAgICAgb3JpZ2luX3N0cmluZyA9IHZhbHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAg
b3JpZ2luID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKG9yaWdpbl9zdHJpbmcpCisgICAgICAgICAg
ICBlbGlmIGtleSA9PSBLRVlfUEFUSDoKKyAgICAgICAgICAgICAgICBwYXRoX3N0cmluZyA9IHZh
bHVlLmRlY29kZSgpCisgICAgICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51cmxwYXJz
ZShwYXRoX3N0cmluZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBt
dXN0IGlnbm9yZSB1bnJlY29nbml6ZWQgZmllbGRzLgorICAgICAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgbG9nZ2luZy5sb2cobG9nZ2luZy5JTkZPLAorICAgICAgICAgICAgICAgICAgICAnb3Jp
Z2luID0gJXMsIHBhdGggPSAlcycgJSAob3JpZ2luX3N0cmluZywgcGF0aF9zdHJpbmcpKQorICAg
ICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTm8g
b3JpZ2luIGlzIGdpdmVuJykKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdObyBwYXRoIGlzIGdpdmVuJykKKyAgICAgICAgaWYgb3JpZ2luLnNj
aGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1lICE9ICdodHRwJzoKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46ICVzJyAlIG9yaWdpbl9zdHJpbmcpCisg
ICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5fc3RyaW5nKQorCisgICAgICAgICMgVG8g
bWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2NlcHQgb25seSBzaW1wbGUgcGF0aCBzdHJp
bmdzLgorICAgICAgICBtID0gcmUuY29tcGlsZSgnXi8oW2EtekEtWjAtOVwuX1wtXSspJCcpLm1h
dGNoKHBhdGgucGF0aCkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICVzJyAlIHBhdGhfc3RyaW5nKQorCisgICAgICAgIGhh
bmRsZXJfbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgcXVlcnkgPSBkaWN0KHVybGxpYi5wYXJz
ZS5wYXJzZV9xc2wocGF0aC5xdWVyeSkpCisgICAgICAgIHNlbGYuaGFuZGxlciA9IHNlbGYuY3Jl
YXRlX2V2ZW50X2hhbmRsZXIoaGFuZGxlcl9uYW1lKQorICAgICAgICBzZWxmLmhhbmRsZXIuaGFu
ZGxlX2NsaWVudF9pbmRpY2F0aW9uKG9yaWdpbl9zdHJpbmcsIHF1ZXJ5KQorICAgICAgICBpZiBz
ZWxmLmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
c2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZCA9IFRydWUKKyAgICAgICAgbG9nZ2luZy5s
b2cobG9nZ2luZy5JTkZPLCAnQ2xpZW50IGluZGljYXRpb24gZmluaXNoZWQnKQorCisgICAgZGVm
IGNyZWF0ZV9ldmVudF9oYW5kbGVyKHNlbGYsIGhhbmRsZXJfbmFtZTogc3RyKSAtPiBOb25lOgor
ICAgICAgICBnbG9iYWxfZGljdCA9IHt9CisgICAgICAgIHdpdGggb3BlbihoYW5kbGVyc19wYXRo
ICsgJy8nICsgaGFuZGxlcl9uYW1lKSBhcyBmOgorICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwg
Z2xvYmFsX2RpY3QpCisgICAgICAgIHJldHVybiBFdmVudEhhbmRsZXIoc2VsZiwgZ2xvYmFsX2Rp
Y3QpCisKKyAgICBkZWYgaXNfY2xvc2luZ19vcl9jbG9zZWQoc2VsZikgLT4gYm9vbDoKKyAgICAg
ICAgaWYgc2VsZi5fcXVpYy5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGlmIHNlbGYuX3F1aWMuX3N0YXRlIGluIEVORF9TVEFURVM6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBTZXNzaW9uVGlj
a2V0U3RvcmU6CisgICAgJycnCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lv
biB0aWNrZXRzLgorICAgICcnJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisg
ICAgZGVmIGFkZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAg
IHNlbGYudGlja2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxm
LCBsYWJlbDogYnl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1
cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9u
PSdRVUlDIHNlcnZlcicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJy1jJywK
KyAgICAgICAgJy0tY2VydGlmaWNhdGUnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVx
dWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nbG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20g
dGhlIHNwZWNpZmllZCBmaWxlJywKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAg
ICAgICAgJy0taG9zdCcsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBkZWZhdWx0PSc6Oics
CisgICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgKGRlZmF1bHRz
IHRvIDo6KScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLXBv
cnQnLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD00NDMzLAorICAgICAgICBo
ZWxwPSdsaXN0ZW4gb24gdGhlIHNwZWNpZmllZCBwb3J0IChkZWZhdWx0cyB0byA0NDMzKScsCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctaycsCisgICAgICAgICct
LXByaXZhdGUta2V5JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkPVRydWUs
CisgICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZp
ZWQgZmlsZScsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWhh
bmRsZXJzLXBhdGgnLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNUcmFuc3BvcnQgZXZlbnQg
aGFuZGxlcnMnLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAnLXYn
LAorICAgICAgICAnLS12ZXJib3NlJywKKyAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCisgICAgKQorICAgIGFyZ3Mg
PSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAgICAg
ICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMn
LAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dp
bmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24o
CisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsnd3EtdnZ2LTAxJ10gKyBbJ3NpZHVjayddLAorICAg
ICAgICBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1
NTM2LAorICAgICkKKworICAgIGhhbmRsZXJzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5leHBhbmR1c2VyKGFyZ3MuaGFuZGxlcnNfcGF0aCkpCisgICAgbG9nZ2luZy5sb2cobG9nZ2lu
Zy5JTkZPLCAncG9ydCA9ICVzJyAlIGFyZ3MucG9ydCkKKyAgICBsb2dnaW5nLmxvZyhsb2dnaW5n
LklORk8sICdoYW5kbGVycyBwYXRoID0gJXMnICUgaGFuZGxlcnNfcGF0aCkKKworICAgICMgbG9h
ZCBTU0wgY2VydGlmaWNhdGUgYW5kIGtleQorICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2No
YWluKGFyZ3MuY2VydGlmaWNhdGUsIGFyZ3MucHJpdmF0ZV9rZXkpCisKKyAgICB0aWNrZXRfc3Rv
cmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50
X2xvb3AoKQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICBzZXJ2ZSgKKyAg
ICAgICAgICAgIGFyZ3MuaG9zdCwKKyAgICAgICAgICAgIGFyZ3MucG9ydCwKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1RdWljVHJhbnNwb3J0UHJvdG9jb2wsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXRpY2tldF9zdG9yZS5wb3AsCisgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVy
PXRpY2tldF9zdG9yZS5hZGQsCisgICAgICAgICkKKyAgICApCisgICAgdHJ5OgorICAgICAgICBs
b29wLnJ1bl9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAg
IHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcXVpYy9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY1MjYwYzc4ZjdhYzg1NzliZDkxMWJjZjljY2U2MzY0NWM4MGU0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy9yZXF1aXJlbWVudHMudHh0CkBAIC0wLDAgKzEgQEAKK2Fpb3F1aWM9PTAuOC43CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvc2VydmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5M2YyNWUyN2JkYjNhZmQ0
YmYzOTkyMWU5NmFiZGNjNDIzM2Y5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpAQCAtMCww
ICsxLDI4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBhcmdwYXJzZQoraW1w
b3J0IHN5cworCisKK2RlZiBnZXRfcGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJ0dXJuIG9uIHZlcmJvc2UgbG9nZ2luZyIpCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2Rl
ZiBydW4odmVudiwgKiprd2FyZ3MpOgorICAgICMgVE9ETyhIZXhjbGVzKTogUmVwbGFjZSB0aGlz
IHdpdGggYWN0dWFsIGltcGxlbWVudGF0aW9uLgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAg
IGFzc2VydCBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKKyAgICBpbXBvcnQgYWlvcXVpYwor
ICAgIHByaW50KCdhaW9xdWljOiAnICsgYWlvcXVpYy5fX3ZlcnNpb25fXykKKworCitkZWYgbWFp
bigpOgorICAgIGt3YXJncyA9IHZhcnMoZ2V0X3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkKKyAgICBy
ZXR1cm4gcnVuKE5vbmUsICoqa3dhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvdzNjLWltcG9ydC5sb2cKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzdkNTQ1OWUxNTFmMmU0MjkzOWRlOTk1N2I1MTUzM2FiYTZhMGRmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvUkVBRE1F
Lm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9xdWljL2NvbW1hbmRzLmpzb24KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcXVpY190cmFuc3BvcnRfc2VydmVyLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3Jl
cXVpcmVtZW50cy50eHQKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvc2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVt
ZW50c19mbGFrZTgudHh0CmluZGV4IDBhNDUyMjQwMTY0MTdjZGRiZjU5MjA5MTk2MzgwY2NlMGEw
ODllZGYuLmFlMTZiZTM5NTVmYmYzZDVmYTk2NDg5NjdjNmM4ZDM5NzUxOTAxM2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVx
dWlyZW1lbnRzX2ZsYWtlOC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dApAQCAtMSw0ICsxLDQg
QEAKLWZsYWtlOD09My43LjkKLXB5Y29kZXN0eWxlPT0yLjUuMAotcHlmbGFrZXM9PTIuMS4xCi1w
ZXA4LW5hbWluZz09MC45LjEKK2ZsYWtlOD09My44LjIKK3B5Y29kZXN0eWxlPT0yLjYuMAorcHlm
bGFrZXM9PTIuMi4wCitwZXA4LW5hbWluZz09MC4xMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19teXB5
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX215cHkudHh0CmluZGV4IDE5NGY0Mjg0YjI2OTAzYjFmYWY5NjliNmFiNWQz
MGY1YzQ4ZWI1NjIuLjk4OGZmZTg0ODE3NGY3MjE1Mjc4YzJjNDAxOWY5MjRiZWQzYTYxZjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX215cHkudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC0xLDMgKzEs
MyBAQAotbXlweT09MC43NTAKK215cHk9PTAuNzcwCiBteXB5LWV4dGVuc2lvbnM9PTAuNC4zCi10
eXBlZC1hc3Q9PTEuNC4wCit0eXBlZC1hc3Q9PTEuNC4xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5l
ci9yZXBvcnQucHkKaW5kZXggNWViOGQ2N2M3ZjZkYTljNWZkMDFkZThkZTQwZjVjYzkyYzExYmU5
MC4uZTk5ODZmZGIzOTgyNWNkNWU0OWY4ZDRhMTU4Yzc5NDhhZDUyODFlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIv
cmVwb3J0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQpAQCAtNSwxMCArNSwxMSBAQCBmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBqc29uCiBp
bXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKKwogZnJvbSBjZ2kgaW1wb3J0IGVzY2FwZQogZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKLQotaW1wb3J0IHR5cGVzCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCiAKIAogZGVmIGh0bWxfZXNjYXBlKGl0ZW0sIGVzY2FwZV9xdW90ZT1G
YWxzZSk6CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIE5vZGUob2JqZWN0KToKICAgICAgICAgICAg
IGF0dHJzX3VuaWNvZGUgPSAiICIgKyAiICIuam9pbigiJXM9XCIlc1wiIiAlIChodG1sX2VzY2Fw
ZShrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWxfZXNjYXBlKHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZV9xdW90ZT1U
cnVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5
LCB2YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmF0
dHJzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dHJzX3VuaWNvZGUgPSAiIgogICAg
ICAgICByZXR1cm4gIjwlcyVzPiVzPC8lcz5cbiIgJSAoc2VsZi5uYW1lLApAQCAtMTU3LDcgKzE1
OCw3IEBAIGRlZiB0ZXN0X2lkKGlkKToKIAogZGVmIGFsbF90ZXN0cyhkYXRhKToKICAgICB0ZXN0
cyA9IGRlZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRl
bXMoKToKKyAgICBmb3IgVUEsIHJlc3VsdHMgaW4gaXRlcml0ZW1zKGRhdGEpOgogICAgICAgICBm
b3IgcmVzdWx0IGluIHJlc3VsdHNbInJlc3VsdHMiXToKICAgICAgICAgICAgIGlkID0gdGVzdF9p
ZChyZXN1bHRbInRlc3QiXSkKICAgICAgICAgICAgIHRlc3RzW2lkXSB8PSB7c3VidGVzdFsibmFt
ZSJdIGZvciBzdWJ0ZXN0IGluIHJlc3VsdFsic3VidGVzdHMiXX0KQEAgLTE4NSw3ICsxODYsNyBA
QCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKIAogICAgIHJlc3VsdHNfYnlfdGVzdCA9IGRlZmF1
bHRkaWN0KHJlc3VsdCkKIAotICAgIGZvciBVQSwgcmVzdWx0cyBpbiBkYXRhLml0ZXJpdGVtcygp
OgorICAgIGZvciBVQSwgcmVzdWx0cyBpbiBpdGVyaXRlbXMoZGF0YSk6CiAgICAgICAgIGZvciB0
ZXN0X2RhdGEgaW4gcmVzdWx0c1sicmVzdWx0cyJdOgogICAgICAgICAgICAgaWQgPSB0ZXN0X2lk
KHRlc3RfZGF0YVsidGVzdCJdKQogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0c19ieV90ZXN0
W2lkXQpAQCAtMjMwLDEwICsyMzEsMTAgQEAgZGVmIHRlc3RfbGluayh0ZXN0X2lkLCBzdWJ0ZXN0
PU5vbmUpOgogZGVmIHN1bW1hcnkoVUFzLCByZXN1bHRzX2J5X3Rlc3QpOgogICAgICIiIlJlbmRl
ciB0aGUgaW1wbGVtZW50YXRpb24gcmVwb3J0IHN1bW1hcnkiIiIKICAgICBub3RfcGFzc2luZyA9
IFtdCi0gICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4gcmVzdWx0c19ieV90ZXN0Lml0ZXJpdGVtcygp
OgorICAgIGZvciB0ZXN0LCByZXN1bHRzIGluIGl0ZXJpdGVtcyhyZXN1bHRzX2J5X3Rlc3QpOgog
ICAgICAgICBpZiBub3QgYW55KGl0ZW1bMF0gaW4gKCJQQVNTIiwgIk9LIikgZm9yIGl0ZW0gaW4g
cmVzdWx0c1siaGFybmVzcyJdLnZhbHVlcygpKToKICAgICAgICAgICAgIG5vdF9wYXNzaW5nLmFw
cGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIGZvciBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RfcmVz
dWx0cyBpbiByZXN1bHRzWyJzdWJ0ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3Vi
dGVzdF9uYW1lLCBzdWJ0ZXN0X3Jlc3VsdHMgaW4gaXRlcml0ZW1zKHJlc3VsdHNbInN1YnRlc3Rz
Il0pOgogICAgICAgICAgICAgaWYgbm90IGFueShpdGVtWzBdID09ICJQQVNTIiBmb3IgaXRlbSBp
biBzdWJ0ZXN0X3Jlc3VsdHMudmFsdWVzKCkpOgogICAgICAgICAgICAgICAgIG5vdF9wYXNzaW5n
LmFwcGVuZCgodGVzdCwgc3VidGVzdF9uYW1lKSkKICAgICBpZiBub3RfcGFzc2luZzoKQEAgLTI2
MCw3ICsyNjEsNyBAQCBkZWYgcmVzdWx0X3Jvd3MoVUFzLCB0ZXN0LCByZXN1bHQpOgogICAgICAg
ICBjbGFzc189InRlc3QiCiAgICAgKQogCi0gICAgZm9yIG5hbWUsIHN1YnRlc3RfcmVzdWx0IGlu
IHNvcnRlZChyZXN1bHRbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCkpOgorICAgIGZvciBuYW1lLCBz
dWJ0ZXN0X3Jlc3VsdCBpbiBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdFsic3VidGVzdHMiXSkpOgog
ICAgICAgICB5aWVsZCBoLnRyKAogICAgICAgICAgICAgaC50ZChuYW1lKSwKICAgICAgICAgICAg
IFtzdGF0dXNfY2VsbChzdGF0dXMsIG1lc3NhZ2UpCkBAIC0yNzEsNyArMjcyLDcgQEAgZGVmIHJl
c3VsdF9yb3dzKFVBcywgdGVzdCwgcmVzdWx0KToKIAogZGVmIHJlc3VsdF9ib2RpZXMoVUFzLCBy
ZXN1bHRzX2J5X3Rlc3QpOgogICAgIHJldHVybiBbaC50Ym9keShyZXN1bHRfcm93cyhVQXMsIHRl
c3QsIHJlc3VsdCkpCi0gICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHNvcnRlZChyZXN1
bHRzX2J5X3Rlc3QuaXRlcml0ZW1zKCkpXQorICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBp
biBzb3J0ZWQoaXRlcml0ZW1zKHJlc3VsdHNfYnlfdGVzdCkpXQogCiAKIGRlZiBnZW5lcmF0ZV9o
dG1sKFVBcywgcmVzdWx0c19ieV90ZXN0KToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5l
ci5qcwppbmRleCBkYWFmOWQ0NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1MmQwMDM1Li4yNzk0
NmUxMzliOWFhM2I4MDZhMWFkMjQ1MTUzOTg4Y2Y3OGY3NDQyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvcnVubmVyLmpzCkBAIC0xNiwyMiArMTYsNiBAQCBNYW5pZmVzdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuZ2VuZXJhdGUobG9hZGVkX2NhbGxiYWNrKTsKICAgICB9LAogCi0g
ICAgZG9fbG9hZDogZnVuY3Rpb24obG9hZGVkX2NhbGxiYWNrKSB7Ci0gICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCEo
eGhyLnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCAiICsgdGhpcy5wYXRoICsgIiBmYWlsZWQgdG8g
bG9hZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kYXRhID0gSlNPTi5wYXJz
ZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIGxvYWRlZF9jYWxsYmFjaygpOwotICAg
ICAgICB9LmJpbmQodGhpcyk7Ci0gICAgICAgIHhoci5vcGVuKCJHRVQiLCB0aGlzLnBhdGgpOwot
ICAgICAgICB4aHIuc2VuZChudWxsKTsKLSAgICB9LAotCiAgICAgZ2VuZXJhdGU6IGZ1bmN0aW9u
KGxvYWRlZF9jYWxsYmFjaykgewogICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKQEAgLTQx
LDcgKzI1LDggQEAgTWFuaWZlc3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCEoeGhy
LnN0YXR1cyA9PT0gMjAwIHx8IHhoci5zdGF0dXMgPT09IDApKSB7CiAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJNYW5pZmVzdCBnZW5lcmF0aW9uIGZhaWxlZCIpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdGhpcy5kb19sb2FkKGxvYWRlZF9jYWxsYmFjayk7CisgICAgICAg
ICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAg
ICAgbG9hZGVkX2NhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKTsKICAgICAgICAgeGhy
Lm9wZW4oIlBPU1QiLCAidXBkYXRlX21hbmlmZXN0LnB5Iik7CiAgICAgICAgIHhoci5zZW5kKG51
bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdXBkYXRlX21hbmlmZXN0LnB5
CmluZGV4IDcxNGQyYjUzYjM5YTk4OWQ0ZjMzY2UxZDU4N2Q2MzRkMjBhNjFkNDQuLjFhMjRlMTQz
NDc4ZWFjYzBmNjI0MzBiNWJiY2IyMzNjYzY1MDI0YTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3VwZGF0ZV9tYW5p
ZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKQEAgLTcsMjEgKzcsMzAgQEAgbG9jYWxw
YXRocyA9IGltcC5sb2FkX3NvdXJjZSgibG9jYWxwYXRocyIsIG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4oaGVyZSwgb3MKIAogcm9vdCA9IGxvY2FscGF0aHMucmVwb19yb290CiAKLWZyb20g
bWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK2Zyb20gbWFuaWZlc3QgaW1wb3J0IG1h
bmlmZXN0CiAKIGRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICBwYXRoID0gb3MucGF0
aC5qb2luKHJvb3QsICJNQU5JRkVTVC5qc29uIikKIAotICAgIG1hbmlmZXN0X2ZpbGUgPSBOb25l
Ci0gICAgdHJ5OgotICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZChyb290LCBw
YXRoKQotICAgIGV4Y2VwdCBtYW5pZmVzdC5NYW5pZmVzdFZlcnNpb25NaXNtYXRjaDoKLSAgICAg
ICAgcGFzcwotICAgIGlmIG1hbmlmZXN0X2ZpbGUgaXMgTm9uZToKLSAgICAgICAgbWFuaWZlc3Rf
ZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCIvIikKLQotICAgIHVwZGF0ZS51cGRhdGUocm9vdCwg
bWFuaWZlc3RfZmlsZSkKLQotICAgIG1hbmlmZXN0LndyaXRlKG1hbmlmZXN0X2ZpbGUsIHBhdGgp
Ci0KLSAgICByZXR1cm4gWygiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2pzb24iKV0sIGpz
b24uZHVtcHMoeyJ1cmwiOiAiL01BTklGRVNULmpzb24ifSkKKyAgICAjIFRPRE8gbWFrZSB0aGlz
IGRvd25sb2FkIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHdoZW4gcG9zc2li
bGUKKyAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHJvb3QsIHBh
dGgsICIvIiwgcGFyYWxsZWw9RmFsc2UpCisKKyAgICBzdXBwb3J0ZWRfdHlwZXMgPSBbInRlc3Ro
YXJuZXNzIiwgInJlZnRlc3QiLCAibWFudWFsIl0KKyAgICBkYXRhID0geyJpdGVtcyI6IHt9LAor
ICAgICAgICAgICAgInVybF9iYXNlIjogIi8ifQorICAgIGZvciBpdGVtX3R5cGUgaW4gc3VwcG9y
dGVkX3R5cGVzOgorICAgICAgICBkYXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0gPSB7fQorICAgIGZv
ciBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzIGluIG1hbmlmZXN0X2ZpbGUuaXRlcnR5cGVzKCpzdXBw
b3J0ZWRfdHlwZXMpOgorICAgICAgICB0ZXN0c19kYXRhID0gW10KKyAgICAgICAgZm9yIGl0ZW0g
aW4gdGVzdHM6CisgICAgICAgICAgICB0ZXN0X2RhdGEgPSBbaXRlbS51cmxbMTpdXQorICAgICAg
ICAgICAgaWYgaXRlbV90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAgICAgICB0ZXN0X2Rh
dGEuYXBwZW5kKGl0ZW0ucmVmZXJlbmNlcykKKyAgICAgICAgICAgIHRlc3RfZGF0YS5hcHBlbmQo
e30pCisgICAgICAgICAgICBpZiBpdGVtX3R5cGUgIT0gIm1hbnVhbCI6CisgICAgICAgICAgICAg
ICAgdGVzdF9kYXRhWy0xXVsidGltZW91dCJdID0gaXRlbS50aW1lb3V0CisgICAgICAgICAgICB0
ZXN0c19kYXRhLmFwcGVuZCh0ZXN0X2RhdGEpCisgICAgICAgIGFzc2VydCBwYXRoIG5vdCBpbiBk
YXRhWyJpdGVtcyJdW2l0ZW1fdHlwZV0KKyAgICAgICAgZGF0YVsiaXRlbXMiXVtpdGVtX3R5cGVd
W3BhdGhdID0gdGVzdHNfZGF0YQorCisgICAgcmV0dXJuIFsoIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qc29uIildLCBqc29uLmR1bXBzKGRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9z
ZXJ2ZS5weQppbmRleCAxODY4YjFhMzZlNTFjMTg3NDkxZDczYWEyNzA4NDg0ZGE4ODIwNDJmLi40
M2ZmN2JkMGRmYmFjNWVhZTc0Y2JlNDMyMzVmMDE2YzRmZTE0ZDM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3NlcnZl
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2VydmUvc2VydmUucHkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHN0YW5kYWxvbmUgYXMgcHl3ZWJzb2NrZXQKIAogCiBFRElUX0hPU1RTX0hFTFAgPSAo
IlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1YmRvbWFpbnMgIgotICAgICAg
ICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJhY2sgZGV2aWNlIGluIC9ldGMvaG9z
dHMuICIKLSAgICAgICAgICAgICAgICAgICAiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0I3J1bm5pbmctdGhlLXRlc3RzICIKKyAgICAgICAgICAgICAgICAgICAi
YXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hvc3RzLlxuIgorICAgICAg
ICAgICAgICAgICAgICJTZWUgaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmct
dGVzdHMvZnJvbS1sb2NhbC1zeXN0ZW0uaHRtbCNzeXN0ZW0tc2V0dXAgIgogICAgICAgICAgICAg
ICAgICAgICJmb3IgaW5zdHJ1Y3Rpb25zLiIpCiAKIApAQCAtMTc4LDkgKzE3OCw5IEBAIGNsYXNz
IEh0bWxXcmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAKICAgICBkZWYgY2hlY2tfZXhw
b3N1cmUoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHNlbGYuZ2xvYmFsX3R5cGU6Ci0gICAg
ICAgICAgICBnbG9iYWxzID0gYiIiCisgICAgICAgICAgICBnbG9iYWxzID0gdSIiCiAgICAgICAg
ICAgICBmb3IgKGtleSwgdmFsdWUpIGluIHNlbGYuX2dldF9tZXRhZGF0YShyZXF1ZXN0KToKLSAg
ICAgICAgICAgICAgICBpZiBrZXkgPT0gYiJnbG9iYWwiOgorICAgICAgICAgICAgICAgIGlmIGtl
eSA9PSAiZ2xvYmFsIjoKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscyA9IHZhbHVlCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE4OSwyMyArMTg5LDIzIEBAIGNsYXNzIEh0bWxX
cmFwcGVySGFuZGxlcihXcmFwcGVySGFuZGxlcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmdsb2JhbF90eXBlKQogCiAgICAgZGVmIF9tZXRhX3JlcGxhY2VtZW50
KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJ0aW1lb3V0IjoKLSAgICAg
ICAgICAgIGlmIHZhbHVlID09IGIibG9uZyI6CisgICAgICAgIGlmIGtleSA9PSAidGltZW91dCI6
CisgICAgICAgICAgICBpZiB2YWx1ZSA9PSAibG9uZyI6CiAgICAgICAgICAgICAgICAgcmV0dXJu
ICc8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4nCi0gICAgICAgIGlmIGtleSA9
PSBiInRpdGxlIjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJl
cGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKQorICAgICAgICBpZiBrZXkg
PT0gInRpdGxlIjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiJiIsICImYW1w
OyIpLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgICAgICAgICByZXR1cm4gJzx0aXRsZT4lczwv
dGl0bGU+JyAlIHZhbHVlCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3NjcmlwdF9y
ZXBsYWNlbWVudChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYga2V5ID09IGIic2NyaXB0
IjoKLSAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLmRlY29kZSgndXRmLTgnKS5yZXBsYWNl
KCImIiwgIiZhbXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQorICAgICAgICBpZiBrZXkgPT0g
InNjcmlwdCI6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSB2YWx1ZS5yZXBsYWNlKCImIiwgIiZh
bXA7IikucmVwbGFjZSgnIicsICImcXVvdDsiKQogICAgICAgICAgICAgcmV0dXJuICc8c2NyaXB0
IHNyYz0iJXMiPjwvc2NyaXB0PicgJSBhdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
CiBjbGFzcyBXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJkZWRpY2F0ZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5cGUgPSAiZGVkaWNhdGVkd29y
a2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIs
ICIuYW55Lndvcmtlci5qcyIpLAogICAgICAgICAgICAgICAgICAgICAoIi53b3JrZXIuaHRtbCIs
ICIud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9jdHlwZSBodG1sPgpAQCAtMjM0
LDcgKzIzNCw3IEBAIGNsYXNzIFdpbmRvd0hhbmRsZXIoSHRtbFdyYXBwZXJIYW5kbGVyKToKIAog
CiBjbGFzcyBBbnlIdG1sSGFuZGxlcihIdG1sV3JhcHBlckhhbmRsZXIpOgotICAgIGdsb2JhbF90
eXBlID0gYiJ3aW5kb3ciCisgICAgZ2xvYmFsX3R5cGUgPSAid2luZG93IgogICAgIHBhdGhfcmVw
bGFjZSA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIildCiAgICAgd3JhcHBlciA9ICIiIjwhZG9j
dHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTI1NCw3ICsyNTQsNyBAQCBzZWxm
LkdMT0JBTCA9IHsKIAogCiBjbGFzcyBTaGFyZWRXb3JrZXJzSGFuZGxlcihIdG1sV3JhcHBlckhh
bmRsZXIpOgotICAgIGdsb2JhbF90eXBlID0gYiJzaGFyZWR3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2hhcmVkd29ya2VyIgogICAgIHBhdGhfcmVwbGFjZSA9IFsoIi5hbnkuc2hhcmVkd29y
a2VyLmh0bWwiLCAiLmFueS5qcyIsICIuYW55Lndvcmtlci5qcyIpXQogICAgIHdyYXBwZXIgPSAi
IiI8IWRvY3R5cGUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9dXRmLTg+CkBAIC0yNjksNyArMjY5LDcg
QEAgZmV0Y2hfdGVzdHNfZnJvbV93b3JrZXIobmV3IFNoYXJlZFdvcmtlcigiJShwYXRoKXMlKHF1
ZXJ5KXMiKSk7CiAKIAogY2xhc3MgU2VydmljZVdvcmtlcnNIYW5kbGVyKEh0bWxXcmFwcGVySGFu
ZGxlcik6Ci0gICAgZ2xvYmFsX3R5cGUgPSBiInNlcnZpY2V3b3JrZXIiCisgICAgZ2xvYmFsX3R5
cGUgPSAic2VydmljZXdvcmtlciIKICAgICBwYXRoX3JlcGxhY2UgPSBbKCIuYW55LnNlcnZpY2V3
b3JrZXIuaHRtbCIsICIuYW55LmpzIiwgIi5hbnkud29ya2VyLmpzIildCiAgICAgd3JhcHBlciA9
ICIiIjwhZG9jdHlwZSBodG1sPgogPG1ldGEgY2hhcnNldD11dGYtOD4KQEAgLTMwNywxMSArMzA3
LDExIEBAIGRvbmUoKTsKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfc2NyaXB0X3Jl
cGxhY2VtZW50KHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBpZiBrZXkgPT0gYiJzY3JpcHQi
OgotICAgICAgICAgICAgYXR0cmlidXRlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2Uo
IlxcIiwgIlxcXFwiKS5yZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAic2Ny
aXB0IjoKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHZhbHVlLnJlcGxhY2UoIlxcIiwgIlxcXFwi
KS5yZXBsYWNlKCciJywgJ1xcIicpCiAgICAgICAgICAgICByZXR1cm4gJ2ltcG9ydFNjcmlwdHMo
IiVzIiknICUgYXR0cmlidXRlCi0gICAgICAgIGlmIGtleSA9PSBiInRpdGxlIjoKLSAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpLnJlcGxhY2UoIlxcIiwgIlxcXFwiKS5y
ZXBsYWNlKCciJywgJ1xcIicpCisgICAgICAgIGlmIGtleSA9PSAidGl0bGUiOgorICAgICAgICAg
ICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgnIicsICdcXCIn
KQogICAgICAgICAgICAgcmV0dXJuICdzZWxmLk1FVEFfVElUTEUgPSAiJXMiOycgJSB2YWx1ZQog
ICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNTEsNyArMzUxLDcgQEAgY2xhc3MgUm91dGVzQnVp
bGRlcihvYmplY3QpOgogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBo
ZWFkZXJzID0ge30KICAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzLlN0YXRpY0hhbmRsZXIocGF0
aCwgZm9ybWF0X2FyZ3MsIGNvbnRlbnRfdHlwZSwgKipoZWFkZXJzKQotICAgICAgICBzZWxmLmFk
ZF9oYW5kbGVyKGIiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRf
aGFuZGxlcigiR0VUIiwgc3RyKHJvdXRlKSwgaGFuZGxlcikKIAogICAgIGRlZiBhZGRfbW91bnRf
cG9pbnQoc2VsZiwgdXJsX2Jhc2UsIHBhdGgpOgogICAgICAgICB1cmxfYmFzZSA9ICIvJXMvIiAl
IHVybF9iYXNlLnN0cmlwKCIvIikgaWYgdXJsX2Jhc2UgIT0gIi8iIGVsc2UgIi8iCkBAIC0zNjYs
NiArMzY2LDcgQEAgY2xhc3MgUm91dGVzQnVpbGRlcihvYmplY3QpOgogICAgICAgICAgICAgKCJH
RVQiLCAiKi5hbnkuc2VydmljZXdvcmtlci5odG1sIiwgU2VydmljZVdvcmtlcnNIYW5kbGVyKSwK
ICAgICAgICAgICAgICgiR0VUIiwgIiouYW55Lndvcmtlci5qcyIsIEFueVdvcmtlckhhbmRsZXIp
LAogICAgICAgICAgICAgKCJHRVQiLCAiKi5hc2lzIiwgaGFuZGxlcnMuQXNJc0hhbmRsZXIpLAor
ICAgICAgICAgICAgKCJHRVQiLCAiLy53ZWxsLWtub3duL29yaWdpbi1wb2xpY3kiLCBoYW5kbGVy
cy5QeXRob25TY3JpcHRIYW5kbGVyKSwKICAgICAgICAgICAgICgiKiIsICIqLnB5IiwgaGFuZGxl
cnMuUHl0aG9uU2NyaXB0SGFuZGxlciksCiAgICAgICAgICAgICAoIkdFVCIsICIqIiwgaGFuZGxl
cnMuRmlsZUhhbmRsZXIpCiAgICAgICAgIF0KQEAgLTQxOCwxMCArNDE5LDEwIEBAIGNsYXNzIFNl
cnZlclByb2Mob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kYWVtb24g
PSBpbml0X2Z1bmMoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25m
aWcsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAg
cHJpbnQoIlNvY2tldCBlcnJvciBvbiBwb3J0ICVzIiAlIHBvcnQsIGZpbGU9c3lzLnN0ZGVycikK
KyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiU29ja2V0IGVycm9yIG9uIHBvcnQgJXMiICUg
cG9ydCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGZp
bGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCh0cmFjZWJhY2suZm9y
bWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBpZiBzZWxmLmRhZW1vbjoK
QEAgLTUxNSw3ICs1MTYsNyBAQCBkZWYgc3RhcnRfc2VydmVycyhob3N0LCBwb3J0cywgcGF0aHMs
IHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgYXNzZXJ0
IGxlbihwb3J0cykgPT0geyJodHRwIjogMn0uZ2V0KHNjaGVtZSwgMSkKIAogICAgICAgICAjIElm
IHRyeWluZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBhdGliaWxpdHkKLSAg
ICAgICAgaWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21wYXRpYmxlKCk6Cisg
ICAgICAgIGlmIHNjaGVtZSA9PSAnaDInIGFuZCBub3QgaHR0cDJfY29tcGF0aWJsZSgpOgogICAg
ICAgICAgICAgbG9nZ2VyLmVycm9yKCdDYW5ub3Qgc3RhcnQgSFRUUC8yLjAgc2VydmVyIGFzIHRo
ZSBlbnZpcm9ubWVudCBpcyBub3QgY29tcGF0aWJsZS4gJyArCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1JlcXVpcmVzIFB5dGhvbiAyLjcuMTArICg8IDMuMCkgYW5kIE9wZW5TU0wgMS4wLjIr
JykKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MjUsNyArNTI2LDcgQEAgZGVmIHN0YXJ0X3Nl
cnZlcnMoaG9zdCwgcG9ydHMsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAq
Kmt3YXJncyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGluaXRfZnVu
YyA9IHsiaHR0cCI6IHN0YXJ0X2h0dHBfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICJodHRwcyI6IHN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cDIiOiBzdGFydF9odHRwMl9zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Ijogc3RhcnRfaHR0cDJfc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ3cyI6IHN0
YXJ0X3dzX3NlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAid3NzIjogc3RhcnRfd3Nz
X3NlcnZlcn1bc2NoZW1lXQogCkBAIC01MzcsNTAgKzUzOCw2OCBAQCBkZWYgc3RhcnRfc2VydmVy
cyhob3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dh
cmdzKToKICAgICByZXR1cm4gc2VydmVycwogCiAKK2RlZiBzdGFydHVwX2ZhaWxlZChsb2c9VHJ1
ZSk6CisgICAgIyBMb2c9RmFsc2UgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjI3MTkKKyAgICBpZiBsb2c6CisgICAg
ICAgIGxvZ2dlci5jcml0aWNhbChFRElUX0hPU1RTX0hFTFApCisgICAgZWxzZToKKyAgICAgICAg
cHJpbnQoIkNSSVRJQ0FMICVzIiAlIEVESVRfSE9TVFNfSEVMUCwgZmlsZT1zeXMuc3RkZXJyKQor
ICAgIHN5cy5leGl0KDEpCisKKwogZGVmIHN0YXJ0X2h0dHBfc2VydmVyKGhvc3QsIHBvcnQsIHBh
dGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJu
IHdwdHNlcnZlLldlYlRlc3RIdHRwZChob3N0PWhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwb3J0PXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2Nfcm9vdD1wYXRoc1siZG9jX3Jvb3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJvdXRlcz1yb3V0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdy
aXRlcz1yZXdyaXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRk
cmVzcz1iaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWc9Y29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPU5vbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IikpCisg
ICAgdHJ5OgorICAgICAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0dHBkKGhvc3Q9aG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlcz1yZXdyaXRlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FkZHJlc3M9YmluZF9hZGRy
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3NzbD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZmlsZT1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPU5vbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY19yb290PXBhdGhzWyJkb2Nf
cm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVzPXJvdXRlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzPWJpbmRfYWRkcmVzcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXlfZmlsZT1jb25maWcuc3NsX2NvbmZpZ1sia2V5X3BhdGgiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlPWNvbmZpZy5zc2xf
Y29uZmlnWyJjZXJ0X3BhdGgiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25u
ZWN0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRlbmN5PWt3YXJncy5n
ZXQoImxhdGVuY3kiKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3cHRzZXJ2ZS5XZWJUZXN0
SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1w
YXRoc1siZG9jX3Jvb3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
b3V0ZXM9cm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3Jp
dGVzPXJld3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRf
YWRkcmVzcz1iaW5kX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c2Vfc3NsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2Zp
bGU9Y29uZmlnLnNzbF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29u
bmVjdD1jb25maWcuc3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5
IikpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgc3RhcnR1cF9mYWlsZWQoKQogCiAK
IGRlZiBzdGFydF9odHRwMl9zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9h
ZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICByZXR1cm4gd3B0c2VydmUuV2ViVGVzdEh0
dHBkKGhvc3Q9aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9y
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfY2xzPXdwdHNlcnZl
Lkh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jX3Jvb3Q9cGF0aHNbImRvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb3V0ZXM9cm91dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV3cml0ZXM9cmV3cml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kX2FkZHJlc3M9YmluZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uZmlnPWNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9z
c2w9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9maWxlPWNvbmZp
Zy5zc2xfY29uZmlnWyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25uZWN0PWNvbmZpZy5zc2xf
Y29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiB3
cHRzZXJ2ZS5XZWJUZXN0SHR0cGQoaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVyX2Nscz13cHRzZXJ2ZS5IdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Nfcm9vdD1wYXRoc1siZG9jX3Jv
b3QiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM9cm91dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJld3JpdGVzPXJld3JpdGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcz1iaW5k
X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPWNv
bmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPVRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9Y29uZmlnLnNz
bF9jb25maWdbImtleV9wYXRoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydGlmaWNhdGU9Y29uZmlnLnNzbF9jb25maWdbImNlcnRfcGF0aCJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRfYWZ0ZXJfY29ubmVjdD1jb25maWcu
c3NsX2NvbmZpZ1siZW5jcnlwdF9hZnRlcl9jb25uZWN0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF0ZW5jeT1rd2FyZ3MuZ2V0KCJsYXRlbmN5IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKyAgICBleGNlcHQgRXhj
ZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZCgpCiAKIAogY2xhc3MgV2ViU29ja2V0RGFl
bW9uKG9iamVjdCk6CkBAIC01OTEsMjEgKzYxMCw5IEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAiLXciLCBoYW5kbGVyc19yb290XQogCiAgICAg
ICAgIGlmIHNzbF9jb25maWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgdXN1
YWxseSBkb25lIHRocm91Z2ggcHl3ZWJzb2NrZXQubWFpbiwgaG93ZXZlciB3ZSdyZQotICAgICAg
ICAgICAgIyB3b3JraW5nIGFyb3VuZCB0aGF0IHRvIGdldCB0aGUgc2VydmVyIGluc3RhbmNlIGFu
ZCBtYW51YWxseQotICAgICAgICAgICAgIyBzZXR1cCB0aGUgd3NzIHNlcnZlci4KLSAgICAgICAg
ICAgIGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxzX21v
ZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfU1RBTkRBUkRfTU9EVUxFCi0gICAgICAgICAgICBl
bGlmIHB5d2Vic29ja2V0Ll9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgdGxz
X21vZHVsZSA9IHB5d2Vic29ja2V0Ll9UTFNfQllfUFlPUEVOU1NMCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHByaW50KCJObyBTU0wgbW9kdWxlIGF2YWlsYWJsZSIpCi0gICAg
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAgICAgY21kX2FyZ3MgKz0gWyItLXRs
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcHJpdmF0ZS1rZXkiLCBzc2xfY29uZmln
WyJrZXlfcGF0aCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICItLWNlcnRpZmljYXRlIiwg
c3NsX2NvbmZpZ1siY2VydF9wYXRoIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi0tdGxz
LW1vZHVsZSIsIHRsc19tb2R1bGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY2VydGlm
aWNhdGUiLCBzc2xfY29uZmlnWyJjZXJ0X3BhdGgiXV0KIAogICAgICAgICBpZiAoYmluZF9hZGRy
ZXNzKToKICAgICAgICAgICAgIGNtZF9hcmdzID0gWyItSCIsIGhvc3RdICsgY21kX2FyZ3MKQEAg
LTYxNCw2ICs2MjEsMTIgQEAgY2xhc3MgV2ViU29ja2V0RGFlbW9uKG9iamVjdCk6CiAgICAgICAg
IG9wdHMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyID0g
cHl3ZWJzb2NrZXQuV2ViU29ja2V0U2VydmVyKG9wdHMpCiAgICAgICAgIHBvcnRzID0gW2l0ZW1b
MF0uZ2V0c29ja25hbWUoKVsxXSBmb3IgaXRlbSBpbiBzZWxmLnNlcnZlci5fc29ja2V0c10KKyAg
ICAgICAgaWYgbm90IHBvcnRzOgorICAgICAgICAgICAgIyBUT0RPOiBGaXggdGhlIGxvZ2dpbmcg
Y29uZmlndXJhdGlvbiBpbiBXZWJTb2NrZXRzIHByb2Nlc3NlcworICAgICAgICAgICAgIyBzZWUg
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIyNzE5Cisg
ICAgICAgICAgICBwcmludCgiRmFpbGVkIHRvIHN0YXJ0IHdlYnNvY2tldCBzZXJ2ZXIgb24gcG9y
dCAlcywgIgorICAgICAgICAgICAgICAgICAgImlzIHNvbWV0aGluZyBhbHJlYWR5IHVzaW5nIHRo
YXQgcG9ydD8iICUgcG9ydCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcmFpc2UgT1NF
cnJvcigpCiAgICAgICAgIGFzc2VydCBhbGwoaXRlbSA9PSBwb3J0c1swXSBmb3IgaXRlbSBpbiBw
b3J0cykKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydHNbMF0KICAgICAgICAgc2VsZi5zdGFydGVk
ID0gRmFsc2UKQEAgLTY2MiwxMiArNjc1LDE1IEBAIGRlZiBzdGFydF93c19zZXJ2ZXIoaG9zdCwg
cG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKICAg
ICAjIGluIHRoZSBsb2dnaW5nIG1vZHVsZSB1bmxvY2tlZAogICAgIHJlbG9hZF9tb2R1bGUobG9n
Z2luZykKICAgICByZWxlYXNlX21vemxvZ19sb2NrKCkKLSAgICByZXR1cm4gV2ViU29ja2V0RGFl
bW9uKGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBvX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcucGF0aHNbIndzX2RvY19yb290Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5kX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29uZmlnPU5v
bmUpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25maWcucGF0aHNbIndzX2RvY19yb290Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmluZF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25m
aWc9Tm9uZSkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBzdGFydHVwX2ZhaWxlZChs
b2c9RmFsc2UpCiAKIAogZGVmIHN0YXJ0X3dzc19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJv
dXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdzKToKQEAgLTY3NSwxMiArNjkxLDE1
IEBAIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRf
YWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgIyBpbiB0aGUgbG9nZ2luZyBtb2R1bGUg
dW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcpCiAgICAgcmVsZWFzZV9tb3psb2df
bG9jaygpCi0gICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbihob3N0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19y
b290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzWyJ3c19kb2Nfcm9v
dCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLnNzbF9jb25maWcpCisgICAgdHJ5OgorICAgICAgICBy
ZXR1cm4gV2ViU29ja2V0RGFlbW9uKGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyKHBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGF0aHNbIndzX2RvY19yb290
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zc2xfY29uZmlnKQorICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgICAgIHN0YXJ0dXBfZmFpbGVkKGxvZz1GYWxzZSkKIAogCiBkZWYgc3Rh
cnQoY29uZmlnLCByb3V0ZXMsICoqa3dhcmdzKToKQEAgLTcwNSw4ICs3MjQsMTEgQEAgZGVmIGl0
ZXJfcHJvY3Moc2VydmVycyk6CiBkZWYgYnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgIHJ2ID0gQ29uZmlnQnVpbGRlcigpCiAKLSAgICBpZiBrd2FyZ3MuZ2V0
KCJoMiIpOgotICAgICAgICBydi5fZGVmYXVsdFsicG9ydHMiXVsiaHR0cDIiXSA9IFs5MDAwXQor
ICAgIGVuYWJsZV9odHRwMiA9IGt3YXJncy5nZXQoImgyIikKKyAgICBpZiBlbmFibGVfaHR0cDIg
aXMgTm9uZToKKyAgICAgICAgZW5hYmxlX2h0dHAyID0gVHJ1ZQorICAgIGlmIGVuYWJsZV9odHRw
MjoKKyAgICAgICAgcnYuX2RlZmF1bHRbInBvcnRzIl1bImgyIl0gPSBbOTAwMF0KIAogICAgIGlm
IG92ZXJyaWRlX3BhdGggYW5kIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgpOgogICAgICAg
ICB3aXRoIG9wZW4ob3ZlcnJpZGVfcGF0aCkgYXMgZjoKQEAgLTczOSw2ICs3NjEsOSBAQCBkZWYg
YnVpbGRfY29uZmlnKG92ZXJyaWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogZGVmIF9tYWtlX3N1
YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKICAgICByZXR1cm4ge3UiLiIuam9pbih4KSBm
b3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGluIHJhbmdlKDEsIGRl
cHRoKzEpKSl9CiAKK2RlZiBfbWFrZV9vcmlnaW5fcG9saWN5X3N1YmRvbWFpbnMobGltaXQpOgor
ICAgIHJldHVybiB7dSJvcCVkIiAlIHggZm9yIHggaW4gcmFuZ2UoMSxsaW1pdCsxKX0KKwogCiBf
c3ViZG9tYWlucyA9IHt1Ind3dyIsCiAgICAgICAgICAgICAgICB1Ind3dzEiLApAQCAtNzUwLDYg
Kzc3NSwxMiBAQCBfbm90X3N1YmRvbWFpbnMgPSB7dSJub25leGlzdGVudCJ9CiAKIF9zdWJkb21h
aW5zID0gX21ha2Vfc3ViZG9tYWluc19wcm9kdWN0KF9zdWJkb21haW5zKQogCisjIE9yaWdpbiBw
b2xpY3kgc3ViZG9tYWlucyBuZWVkIHRvIG5vdCBiZSByZXVzZWQgYnkgYW55IG90aGVyIHRlc3Rz
LCBzaW5jZSBvcmlnaW4gcG9saWNpZXMgaGF2ZQorIyBvcmlnaW4td2lkZSBpbXBhY3RzIGxpa2Ug
aW5zdGFsbGluZyBhIENTUCBvciBGZWF0dXJlIFBvbGljeSB0aGF0IGNvdWxkIGludGVyZmVyZSB3
aXRoIGZlYXR1cmVzCisjIHVuZGVyIHRlc3QuCisjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3JmY3MvcHVsbC80NC4KK19zdWJkb21haW5zIHw9IF9tYWtlX29yaWdp
bl9wb2xpY3lfc3ViZG9tYWlucyg5OSkKKwogX25vdF9zdWJkb21haW5zID0gX21ha2Vfc3ViZG9t
YWluc19wcm9kdWN0KF9ub3Rfc3ViZG9tYWlucykKIAogCkBAIC04NDUsOSArODc2LDEwIEBAIGRl
ZiBnZXRfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIFdl
YlNvY2tldHMgZG9jdW1lbnQgcm9vdC4gT3ZlcnJpZGVzIGNvbmZpZy4iKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoIi0tYWxpYXNfZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJhbGlhc19m
aWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZpbGUgd2l0aCBlbnRyaWVzIGZv
ciBhbGlhc2VzL211bHRpcGxlIGRvYyByb290cy4gSW4gZm9ybSBvZiBgL0FMSUFTX05BTUUvLCBE
T0NfUk9PVFxcbmAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJGbGFn
IGZvciBlbmFibGluZyB0aGUgSFRUUC8yLjAgc2VydmVyIikKLSAgICBwYXJzZXIuc2V0X2RlZmF1
bHRzKGgyPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taDIiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1u
by1oMiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJoMiIsIGRlZmF1bHQ9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIEhUVFAvMi4wIHNlcnZlciIp
CiAgICAgcmV0dXJuIHBhcnNlcgogCiAKQEAgLTg5MCwxNiArOTIyLDIyIEBAIGRlZiBydW4oKipr
d2FyZ3MpOgogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgaGFuZGxl
X3NpZ25hbCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaGFuZGxl
X3NpZ25hbCkKIAotICAgICAgICAgICAgd2hpbGUgYWxsKGl0ZW0uaXNfYWxpdmUoKSBmb3IgaXRl
bSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpKSBhbmQgbm90IHJlY2VpdmVkX3NpZ25hbC5pc19zZXQo
KToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVyX3Byb2NzKHNlcnZlcnMpOgotICAg
ICAgICAgICAgICAgICAgICBpdGVtLmpvaW4oMSkKLSAgICAgICAgICAgIGV4aXRlZCA9IFtpdGVt
IGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykgaWYgbm90IGl0ZW0uaXNfYWxpdmUoKV0K
LSAgICAgICAgICAgIHN1YmplY3QgPSAic3VicHJvY2VzcyIgaWYgbGVuKGV4aXRlZCkgPT0gMSBl
bHNlICJzdWJwcm9jZXNzZXMiCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAlcyBleGl0
ZWQ6IiAlIChsZW4oZXhpdGVkKSwgc3ViamVjdCkpCi0KLSAgICAgICAgICAgIGZvciBpdGVtIGlu
IGl0ZXJfcHJvY3Moc2VydmVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXR1
cyBvZiAlczpcdCVzIiAlIChpdGVtLm5hbWUsICJydW5uaW5nIiBpZiBpdGVtLmlzX2FsaXZlKCkg
ZWxzZSAibm90IHJ1bm5pbmciKSkKKyAgICAgICAgICAgIHdoaWxlIChhbGwoc3VicHJvYy5pc19h
bGl2ZSgpIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFuZAorICAgICAgICAg
ICAgICAgICAgIG5vdCByZWNlaXZlZF9zaWduYWwuaXNfc2V0KCkpOgorICAgICAgICAgICAgICAg
IGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAgICAgICAg
IHN1YnByb2Muam9pbigxKQorCisgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyA9IDAKKyAgICAg
ICAgICAgIGZvciBzdWJwcm9jIGluIGl0ZXJfcHJvY3Moc2VydmVycyk6CisgICAgICAgICAgICAg
ICAgaWYgc3VicHJvYy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5m
bygnU3RhdHVzIG9mIHN1YnByb2Nlc3MgIiVzIjogcnVubmluZycgJSBzdWJwcm9jLm5hbWUpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VicHJvYy5leGl0
Y29kZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1N0YXR1cyBv
ZiBzdWJwcm9jZXNzICIlcyI6IGV4aXRlZCBjb3JyZWN0bHknICUgc3VicHJvYy5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndh
cm5pbmcoJ1N0YXR1cyBvZiBzdWJwcm9jZXNzICIlcyI6IGZhaWxlZC4gRXhpdCB3aXRoIG5vbi16
ZXJvIHN0YXR1czogJWQnICUgKHN1YnByb2MubmFtZSwgc3VicHJvYy5leGl0Y29kZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsZWRfc3VicHJvYyArPSAxCisgICAgICAgICAgICByZXR1
cm4gZmFpbGVkX3N1YnByb2MKIAogCiBkZWYgbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZl
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
ZXJ2ZS90ZXN0X3NlcnZlLnB5CmluZGV4IGQ2YzA4MmE5NzAzNTdmNDc3ZTgyY2QyNWExYzA5NTJl
ZTc0NGRiNTQuLmQ5MDI0NzkzY2FmZGExYmIzNjNiNWQzYTM5OWFhOTNhNGQ2OTExMGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c2VydmUvdGVzdF9zZXJ2ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkKQEAgLTgyLDcgKzgyLDcgQEAg
ZGVmIHRlc3RfY29uZmlnX2pzb25fbGVuZ3RoKCk6CiAgICAgIyB3ZSBzZXJpYWxpemUgdGhlIGNv
bmZpZyBhcyBKU09OIGZvciBweXRlc3RydW5uZXIgYW5kIHB1dCBpdCBpbiBhbiBlbnYKICAgICAj
IHZhcmlhYmxlLCB3aGljaCBvbiBXaW5kb3dzIG11c3QgaGF2ZSBhIGxlbmd0aCA8PSAweDdGRkYg
KGludDE2KQogICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6Ci0gICAgICAgIGRhdGEgPSBq
c29uLmR1bXBzKGMuYXNfZGljdCgpKQorICAgICAgICBkYXRhID0ganNvbi5kdW1wcyhjLmFzX2Rp
Y3RfZm9yX3dkX2Vudl92YXJpYWJsZSgpKQogICAgIGFzc2VydCBsZW4oZGF0YSkgPD0gMHg3RkZG
CiAKIGRlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X3Vuc3BlY2lmaWVkKCk6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTliMjFkNzQ1ODhlMGI1MTdk
NmU5N2U0N2M2YWVjNmZhZWYwNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljLy5n
aXRodWIvd29ya2Zsb3dzL3Rlc3RzLnltbApAQCAtMCwwICsxLDEyOCBAQAorbmFtZTogdGVzdHMK
Kworb246IFtwdXNoLCBwdWxsX3JlcXVlc3RdCisKK2pvYnM6CisKKyAgbGludDoKKyAgICBydW5z
LW9uOiB1YnVudHUtbGF0ZXN0CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAg
d2l0aDoKKyAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43CisgICAgICAtIG5hbWU6IEluc3Rh
bGwgcGFja2FnZXMKKyAgICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBmbGFrZTggaXNvcnQg
bXlweQorICAgICAgLSBuYW1lOiBSdW4gbGludGVycworICAgICAgICBydW46IHwKKyAgICAgICAg
ICBmbGFrZTggZXhhbXBsZXMgc3JjIHRlc3RzCisgICAgICAgICAgaXNvcnQgLWMgLWRmIC1yYyBl
eGFtcGxlcyBzcmMgdGVzdHMKKyAgICAgICAgICBibGFjayAtLWNoZWNrIC0tZGlmZiBleGFtcGxl
cyBzcmMgdGVzdHMKKyAgICAgICAgICBteXB5IGV4YW1wbGVzIHNyYworCisgIHRlc3Q6CisgICAg
cnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQorICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1mYXN0
OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29z
LWxhdGVzdCwgd2luZG93cy1sYXRlc3RdCisgICAgICAgIHB5dGhvbjogWzMuOCwgMy43LCAzLjZd
CisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKKyAgICAgIC0g
dXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICBw
eXRob24tdmVyc2lvbjogJHt7IG1hdHJpeC5weXRob24gfX0KKyAgICAgIC0gbmFtZTogRGlzYWJs
ZSBmaXJld2FsbCBhbmQgY29uZmlndXJlIGNvbXBpbGVyCisgICAgICAgIGlmOiBtYXRyaXgub3Mg
PT0gJ21hY29zLWxhdGVzdCcKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc3VkbyAvdXNyL2xp
YmV4ZWMvQXBwbGljYXRpb25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNldGdsb2JhbHN0YXRl
IG9mZgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNfU0tJUF9URVNUUzo6
Y2hhY2hhMjAiCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZMQUdTOjotSS91c3Iv
bG9jYWwvb3B0L29wZW5zc2wvaW5jbHVkZSIKKyAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFt
ZT1MREZMQUdTOjotTC91c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgorICAgICAgLSBuYW1lOiBJ
bnN0YWxsIE9wZW5TU0wKKyAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3Qn
CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNob2NvIGluc3RhbGwgb3BlbnNzbCAtLW5vLXBy
b2dyZXNzCisgICAgICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9JQzpcUHJvZ3JhfjFc
T3BlblNTTC1XaW42NFxpbmNsdWRlIgorICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxJ
Tks6Oi9MSUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorICAgICAgLSBuYW1l
OiBSdW4gdGVzdHMKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgcGlwIGluc3RhbGwgLVUgcGlw
IHNldHVwdG9vbHMgd2hlZWwKKyAgICAgICAgICBwaXAgaW5zdGFsbCBjb3ZlcmFnZQorICAgICAg
ICAgIHBpcCBpbnN0YWxsIC4KKyAgICAgICAgICBjb3ZlcmFnZSBydW4gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXYKKyAgICAgICAgICBjb3ZlcmFnZSB4bWwKKyAgICAgICAgc2hlbGw6IGJhc2gKKyAg
ICAgIC0gbmFtZTogVXBsb2FkIGNvdmVyYWdlIHJlcG9ydAorICAgICAgICB1c2VzOiBjb2RlY292
L2NvZGVjb3YtYWN0aW9uQHYxCisgICAgICAgIGlmOiBtYXRyaXgucHl0aG9uICE9ICdweXB5MycK
KyAgICAgICAgd2l0aDoKKyAgICAgICAgICB0b2tlbjogJHt7IHNlY3JldHMuQ09ERUNPVl9UT0tF
TiB9fQorCisgIHBhY2thZ2Utc291cmNlOgorICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKKyAg
ICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2MgorICAgICAgLSB1c2Vz
OiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAgICAgICB3aXRoOgorICAgICAgICAgIHB5dGhv
bi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTogQnVpbGQgc291cmNlIHBhY2thZ2UKKyAgICAg
ICAgcnVuOiBweXRob24gc2V0dXAucHkgc2Rpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHNvdXJj
ZSBwYWNrYWdlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHYxCisgICAg
ICAgIHdpdGg6CisgICAgICAgICAgbmFtZTogZGlzdAorICAgICAgICAgIHBhdGg6IGRpc3QvCisK
KyAgcGFja2FnZS13aGVlbDoKKyAgICBydW5zLW9uOiAke3sgbWF0cml4Lm9zIH19CisgICAgc3Ry
YXRlZ3k6CisgICAgICBtYXRyaXg6CisgICAgICAgIG9zOiBbdWJ1bnR1LWxhdGVzdCwgbWFjb3Mt
bGF0ZXN0LCB3aW5kb3dzLWxhdGVzdF0KKyAgICBzdGVwczoKKyAgICAgIC0gdXNlczogYWN0aW9u
cy9jaGVja291dEB2MgorICAgICAgLSB1c2VzOiBhY3Rpb25zL3NldHVwLXB5dGhvbkB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHB5dGhvbi12ZXJzaW9uOiAzLjcKKyAgICAgIC0gbmFtZTog
SW5zdGFsbCBuYXNtCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0Jwor
ICAgICAgICBydW46IGNob2NvIGluc3RhbGwgLXkgbmFzbQorICAgICAgLSBuYW1lOiBJbnN0YWxs
IG5tYWtlCisgICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ3dpbmRvd3MtbGF0ZXN0JworICAgICAg
ICBydW46IHwKKyAgICAgICAgICAmICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXEluc3RhbGxlclx2c19pbnN0YWxsZXIuZXhlIiBtb2RpZnkgYAorICAgICAg
ICAgICAtLWluc3RhbGxQYXRoICJDOlxQcm9ncmFtIEZpbGVzICh4ODYpXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXDIwMTlcRW50ZXJwcmlzZSIgYAorICAgICAgICAgICAtLWFkZCBNaWNyb3NvZnQu
VmlzdWFsU3R1ZGlvLkNvbXBvbmVudC5WQy5Ub29scy54ODYueDY0IC0tcGFzc2l2ZSAtLW5vcmVz
dGFydAorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgLSBuYW1lOiBCdWlsZCB3aGVl
bHMKKyAgICAgICAgZW52OgorICAgICAgICAgIENJQldfQkVGT1JFX0JVSUxEOiBzY3JpcHRzL2J1
aWxkLW9wZW5zc2wgL3RtcC92ZW5kb3IKKyAgICAgICAgICBDSUJXX0JFRk9SRV9CVUlMRF9XSU5E
T1dTOiBzY3JpcHRzXGJ1aWxkLW9wZW5zc2wuYmF0IEM6XGNpYndcdmVuZG9yCisgICAgICAgICAg
Q0lCV19FTlZJUk9OTUVOVDogQUlPUVVJQ19TS0lQX1RFU1RTPWlwdjYsbG9zcyBDRkxBR1M9LUkv
dG1wL3ZlbmRvci9pbmNsdWRlIExERkxBR1M9LUwvdG1wL3ZlbmRvci9saWIKKyAgICAgICAgICBD
SUJXX0VOVklST05NRU5UX1dJTkRPV1M6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxvc3MgQ0w9
Ii9JQzpcY2lid1x2ZW5kb3JcaW5jbHVkZSIgTElOSz0iL0xJQlBBVEg6QzpcY2lid1x2ZW5kb3Jc
bGliIgorICAgICAgICAgIENJQldfU0tJUDogY3AyNy0qIGNwMzMtKiBjcDM0LSogY3AzNS0qIHBw
MjctKgorICAgICAgICAgIENJQldfVEVTVF9DT01NQU5EOiBweXRob24gLW0gdW5pdHRlc3QgZGlz
Y292ZXIgLXQge3Byb2plY3R9IC1zIHtwcm9qZWN0fS90ZXN0cworICAgICAgICBydW46IHwKKyAg
ICAgICAgICBwaXAgaW5zdGFsbCBjaWJ1aWxkd2hlZWwKKyAgICAgICAgICBjaWJ1aWxkd2hlZWwg
LS1vdXRwdXQtZGlyIGRpc3QKKyAgICAgIC0gbmFtZTogVXBsb2FkIHdoZWVscworICAgICAgICB1
c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQorICAgICAgICB3aXRoOgorICAgICAgICAg
IG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0LworCisgIHB1Ymxpc2g6CisgICAgcnVu
cy1vbjogdWJ1bnR1LWxhdGVzdAorICAgIG5lZWRzOiBbbGludCwgdGVzdCwgcGFja2FnZS1zb3Vy
Y2UsIHBhY2thZ2Utd2hlZWxdCisgICAgc3RlcHM6CisgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKKyAgICAgIC0gdXNlczogYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2MQorICAg
ICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGRpc3QKKyAgICAgICAgICBwYXRoOiBkaXN0Lwor
ICAgICAgLSBuYW1lOiBQdWJsaXNoIHRvIFB5UEkKKyAgICAgICAgaWY6IGdpdGh1Yi5ldmVudF9u
YW1lID09ICdwdXNoJyAmJiBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5yZWYsICdyZWZzL3RhZ3Mv
JykKKyAgICAgICAgdXNlczogcHlwYS9naC1hY3Rpb24tcHlwaS1wdWJsaXNoQG1hc3RlcgorICAg
ICAgICB3aXRoOgorICAgICAgICAgIHVzZXI6IF9fdG9rZW5fXworICAgICAgICAgIHBhc3N3b3Jk
OiAke3sgc2VjcmV0cy5QWVBJX1RPS0VOIH19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdp
dGh1Yi93b3JrZmxvd3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3Jr
Zmxvd3MvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JjMGFlOTliMjBmNDg5ZWU3N2E4NTU5
ZTUyYWM3OTQ1MzRkYWUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHVi
L3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE3IEBACitUaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0Rv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVzdHMueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTkyNGE1
YWEwODM5ODZkMGJkNzA2OWVkYzZlZGRlYWI3Y2UwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvTElDRU5TRQpAQCAtMCwwICsxLDI1IEBACitDb3B5cmlnaHQgKGMpIDIwMTkgSmVy
ZW15IExhaW7DqS4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5CisgICAgICBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0CisgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFO
SUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVlMDkwM2Fm
OTk0ZTM0YzM1ZDhiMmVlZTIwYjRiYjNiNzY5ZGUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9NQU5JRkVTVC5pbgpAQCAtMCwwICsxLDQgQEAKK2luY2x1ZGUgTElDRU5TRQorcmVj
dXJzaXZlLWluY2x1ZGUgZG9jcyAqLnB5ICoucnN0IE1ha2VmaWxlCityZWN1cnNpdmUtaW5jbHVk
ZSBleGFtcGxlcyAqLmh0bWwgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdHMgKi5iaW4gKi5w
ZW0gKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzIyMDQyYzI0ZGQyNjZkZWExYjcyODQzNjRlOWE1
Y2NlYjY2YTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKQEAg
LTAsMCArMSwxNjQgQEAKK2Fpb3F1aWMKKz09PT09PT0KKworfHJ0ZHwgfHB5cGktdnwgfHB5cGkt
cHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwgfGJsYWNrfAorCisuLiB8cnRk
fCBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3Byb2plY3RzL2Fpb3F1aWMvYmFkZ2Uv
P3ZlcnNpb249bGF0ZXN0CisgICAgOnRhcmdldDogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2Nz
LmlvLworCisuLiB8cHlwaS12fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92
L2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9h
aW9xdWljCisKKy4uIHxweXBpLXB5dmVyc2lvbnN8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxk
cy5pby9weXBpL3B5dmVyc2lvbnMvYWlvcXVpYy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL3B5
cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5cGktbHwgaW1hZ2U6OiBodHRwczov
L2ltZy5zaGllbGRzLmlvL3B5cGkvbC9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8v
cHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYworCisuLiB8dGVzdHN8IGltYWdlOjogaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3dvcmtmbG93cy90ZXN0cy9iYWRnZS5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvYWN0aW9ucworCisu
LiB8Y29kZWNvdnwgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL2NvZGVjb3YvYy9naXRo
dWIvYWlvcnRjL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9jb2RlY292LmlvL2do
L2Fpb3J0Yy9haW9xdWljCisKKy4uIHxibGFja3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2NvZGUlMjBzdHlsZS1ibGFjay0wMDAwMDAuc3ZnCisgICAgOnRhcmdldDogaHR0
cHM6Ly9naXRodWIuY29tL3B5dGhvbi9ibGFjaworCitXaGF0IGlzIGBgYWlvcXVpY2BgPworLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJ
QyBuZXR3b3JrIHByb3RvY29sIGluIFB5dGhvbi4gSXQgZmVhdHVyZXMKK2EgbWluaW1hbCBUTFMg
MS4zIGltcGxlbWVudGF0aW9uLCBhIFFVSUMgc3RhY2sgYW5kIGFuIEhUVFAvMyBzdGFjay4KKwor
UVVJQyBzdGFuZGFyZGlzYXRpb24gaXMgbm90IGZpbmFsaXNlZCB5ZXQsIGJ1dCBgYGFpb3F1aWNg
YCBjbG9zZWx5IHRyYWNrcyB0aGUKK3NwZWNpZmljYXRpb24gZHJhZnRzIGFuZCBpcyByZWd1bGFy
bHkgdGVzdGVkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGFnYWluc3Qgb3RoZXIKK2BRVUlDIGltcGxl
bWVudGF0aW9uc2BfLgorCitUbyBsZWFybiBtb3JlIGFib3V0IGBgYWlvcXVpY2BgIHBsZWFzZSBg
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbmBfLgorCitXaHkgc2hvdWxkIEkgdXNlIGBgYWlvcXVpY2Bg
PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgaGFzIGJlZW4g
ZGVzaWduZWQgdG8gYmUgZW1iZWRkZWQgaW50byBQeXRob24gY2xpZW50IGFuZCBzZXJ2ZXIKK2xp
YnJhcmllcyB3aXNoaW5nIHRvIHN1cHBvcnQgUVVJQyBhbmQgLyBvciBIVFRQLzMuIFRoZSBnb2Fs
IGlzIHRvIHByb3ZpZGUgYQorY29tbW9uIGNvZGViYXNlIGZvciBQeXRob24gbGlicmFyaWVzIGlu
IHRoZSBob3BlIG9mIGF2b2lkaW5nIGR1cGxpY2F0ZWQgZWZmb3J0LgorCitCb3RoIHRoZSBRVUlD
IGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0
ZXJuLAorbGVhdmluZyBhY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlz
IGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRo
ZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCitkaWZmZXJlbnQg
Y29uY3VycmVuY3kgbW9kZWxzLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworLSBRVUlDIHN0YWNr
IGNvbmZvcm1pbmcgd2l0aCBkcmFmdC0yNworLSBIVFRQLzMgc3RhY2sgY29uZm9ybWluZyB3aXRo
IGRyYWZ0LTI3CistIG1pbmltYWwgVExTIDEuMyBpbXBsZW1lbnRhdGlvbgorLSBJUHY0IGFuZCBJ
UHY2IHN1cHBvcnQKKy0gY29ubmVjdGlvbiBtaWdyYXRpb24gYW5kIE5BVCByZWJpbmRpbmcKKy0g
bG9nZ2luZyBUTFMgdHJhZmZpYyBzZWNyZXRzCistIGxvZ2dpbmcgUVVJQyBldmVudHMgaW4gUUxP
RyBmb3JtYXQKKy0gSFRUUC8zIHNlcnZlciBwdXNoIHN1cHBvcnQKKworUmVxdWlyZW1lbnRzCist
LS0tLS0tLS0tLS0KKworYGBhaW9xdWljYGAgcmVxdWlyZXMgUHl0aG9uIDMuNiBvciBiZXR0ZXIs
IGFuZCB0aGUgT3BlblNTTCBkZXZlbG9wbWVudCBoZWFkZXJzLgorCitMaW51eAorLi4uLi4KKwor
T24gRGViaWFuL1VidW50dSBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQg
c3VkbyBhcHQgaW5zdGFsbCBsaWJzc2wtZGV2IHB5dGhvbjMtZGV2CisKK09uIEFscGluZSBMaW51
eCB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIGZvbGxvd2luZzoKKworLi4gY29kZS1ibG9jazo6IGNv
bnNvbGUKKworICAgJCBzdWRvIGFwdCBpbnN0YWxsIGJzZC1jb21wYXQtaGVhZGVycyBsaWJmZmkt
ZGV2CisKK09TIFgKKy4uLi4KKworT24gT1MgWCBydW46CisKKy4uIGNvZGUtYmxvY2s6OiBjb25z
b2xlCisKKyAgICQgYnJldyBpbnN0YWxsIG9wZW5zc2wKKworWW91IHdpbGwgbmVlZCB0byBzZXQg
c29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gbGluayBhZ2FpbnN0IE9wZW5TU0w6CisKKy4u
IGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgZXhwb3J0IENGTEFHUz0tSS91c3IvbG9jYWwv
b3B0L29wZW5zc2wvaW5jbHVkZQorICAgJCBleHBvcnQgTERGTEFHUz0tTC91c3IvbG9jYWwvb3B0
L29wZW5zc2wvbGliCisKK1dpbmRvd3MKKy4uLi4uLi4KKworT24gV2luZG93cyB0aGUgZWFzaWVz
dCB3YXkgdG8gaW5zdGFsbCBPcGVuU1NMIGlzIHRvIHVzZSBgQ2hvY29sYXRleWBfLgorCisuLiBj
b2RlLWJsb2NrOjogY29uc29sZQorCisgICA+IGNob2NvIGluc3RhbGwgb3BlbnNzbAorCitZb3Ug
d2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBsaW5rIGFnYWlu
c3QgT3BlblNTTDoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICA+ICRFbnY6Q0wgPSAi
L0lDOlxQcm9ncmF+MVxPcGVuU1NMLVdpbjY0XGluY2x1ZGUiCisgID4gJEVudjpMSU5LID0gIi9M
SUJQQVRIOkM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgorCitSdW5uaW5nIHRoZSBleGFt
cGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgY2hlY2tpbmcgb3V0IHRoZSBjb2Rl
IHVzaW5nIGdpdCB5b3UgY2FuIHJ1bjoKKworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAg
JCBwaXAgaW5zdGFsbCAtZSAuCisgICAkIHBpcCBpbnN0YWxsIGFpb2ZpbGVzIGFzZ2lyZWYgaHR0
cGJpbiBzdGFybGV0dGUgd3Nwcm90bworCitIVFRQLzMgc2VydmVyCisuLi4uLi4uLi4uLi4uCisK
K1lvdSBjYW4gcnVuIHRoZSBleGFtcGxlIHNlcnZlciwgd2hpY2ggaGFuZGxlcyBib3RoIEhUVFAv
MC45IGFuZCBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgICQgcHl0aG9u
IGV4YW1wbGVzL2h0dHAzX3NlcnZlci5weSAtLWNlcnRpZmljYXRlIHRlc3RzL3NzbF9jZXJ0LnBl
bSAtLXByaXZhdGUta2V5IHRlc3RzL3NzbF9rZXkucGVtCisKK0hUVFAvMyBjbGllbnQKKy4uLi4u
Li4uLi4uLi4KKworWW91IGNhbiBydW4gdGhlIGV4YW1wbGUgY2xpZW50IHRvIHBlcmZvcm0gYW4g
SFRUUC8zIHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRob24g
ZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVtIGh0
dHBzOi8vbG9jYWxob3N0OjQ0MzMvCisKK0FsdGVybmF0aXZlbHkgeW91IGNhbiBwZXJmb3JtIGFu
IEhUVFAvMC45IHJlcXVlc3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisKKyAgJCBweXRo
b24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHljYWNlcnQucGVt
IC0tbGVnYWN5LWh0dHAgaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMy8KKworWW91IGNhbiBhbHNvIG9w
ZW4gYSBXZWJTb2NrZXQgb3ZlciBIVFRQLzM6CisKKy4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCisK
KyAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IC0tY2EtY2VydHMgdGVzdHMvcHlj
YWNlcnQucGVtIHdzczovL2xvY2FsaG9zdDo0NDMzL3dzCisKK0xpY2Vuc2UKKy0tLS0tLS0KKwor
YGBhaW9xdWljYGAgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIGBCU0QgbGljZW5zZWBfLgorCisuLiBf
cmVhZCB0aGUgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlvL2Vu
L2xhdGVzdC8KKy4uIF9RVUlDIGltcGxlbWVudGF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL3F1
aWN3Zy9iYXNlLWRyYWZ0cy93aWtpL0ltcGxlbWVudGF0aW9ucworLi4gX2NyeXB0b2dyYXBoeTog
aHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vCisuLiBfQ2hvY29sYXRleTogaHR0cHM6Ly9jaG9jb2xh
dGV5Lm9yZy8KKy4uIF9CU0QgbGljZW5zZTogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2NzLmlv
L2VuL2xhdGVzdC9saWNlbnNlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01h
a2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiNzM4Yjk2
MTdmYjJkOWRkMDY2ODRiZDIyNGYwYWQwM2UwNmEwNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL01ha2VmaWxlCkBAIC0wLDAgKzEsMjAgQEAKKyMgTWluaW1hbCBtYWtlZmls
ZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KKyMKKworIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJp
YWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorU1BISU5YT1BUUyAgICA9CitTUEhJTlhCVUlM
RCAgID0gc3BoaW54LWJ1aWxkCitTUEhJTlhQUk9KICAgID0gYWlvcXVpYworU09VUkNFRElSICAg
ICA9IC4KK0JVSUxERElSICAgICAgPSBfYnVpbGQKKworIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAi
bWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBsaWtlICJtYWtlIGhlbHAiLgoraGVscDoKKwlAJChT
UEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VSQ0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5Y
T1BUUykgJChPKQorCisuUEhPTlk6IGhlbHAgTWFrZWZpbGUKKworIyBDYXRjaC1hbGwgdGFyZ2V0
OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRzIHRvIFNwaGlueCB1c2luZyB0aGUgbmV3CisjICJt
YWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMgbWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJ
TlhPUFRTKS4KKyU6IE1ha2VmaWxlCisJQCQoU1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJ
UikiICIkKEJVSUxERElSKSIgJChTUEhJTlhPUFRTKSAkKE8pClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWM1NjgwOTAxNDYwYjAzMjgz
YTRhYzZjZjY1NGU4YzJhYWM2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvYXN5bmNpby5yc3QKQEAgLTAsMCArMSwzMiBAQAorYXN5bmNpbyBBUEkKKz09PT09PT09PT09
CisKK1RoZSBhc3luY2lvIEFQSSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgUVVJQyBBUEkgYnVpbHQg
b24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLAorUHl0aG9uJ3Mgc3RhbmRhcmQgYXN5bmNocm9ub3Vz
IEkvTyBmcmFtZXdvcmsuCisKK2BgYWlvcXVpY2BgIGNvbWVzIHdpdGggYSBzZWxlY3Rpb24gb2Yg
ZXhhbXBsZXMsIGluY2x1ZGluZzoKKworLSBhbiBIVFRQLzMgY2xpZW50CistIGFuIEhUVFAvMyBz
ZXJ2ZXIKKworVGhlIGV4YW1wbGVzIGNhbiBiZSBicm93c2VkIG9uIEdpdEh1YjoKKworaHR0cHM6
Ly9naXRodWIuY29tL2Fpb3J0Yy9haW9xdWljL3RyZWUvbWFzdGVyL2V4YW1wbGVzCisKKy4uIGF1
dG9tb2R1bGU6OiBhaW9xdWljLmFzeW5jaW8KKworQ2xpZW50CistLS0tLS0KKworICAgIC4uIGF1
dG9mdW5jdGlvbjo6IGNvbm5lY3QKKworU2VydmVyCistLS0tLS0KKworICAgIC4uIGF1dG9mdW5j
dGlvbjo6IHNlcnZlCisKK0NvbW1vbgorLS0tLS0tCisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWlj
Q29ubmVjdGlvblByb3RvY29sCisgICAgICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjg5MDYyYWM5NzUzMjZhNDdmODhlZGFlNGQ4ZDM0M2NmZTc2MGMwYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIGFpb3F1aWMg
ZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKKyMgc3Bo
aW54LXF1aWNrc3RhcnQgb24gVGh1IEZlYiAgOCAxNzoyMjoxNCAyMDE4LgorIworIyBUaGlzIGZp
bGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cwor
IyBjb250YWluaW5nIGRpci4KKyMKKyMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29uZmln
dXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcworIyBhdXRvZ2VuZXJhdGVkIGZpbGUu
CisjCisjIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRo
YXQgYXJlIGNvbW1lbnRlZCBvdXQKKyMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KKworaW1w
b3J0IHN5cywgb3MKKworIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdp
dGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAorIyBhZGQgdGhlc2UgZGlyZWN0
b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0
aGUKKyMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQg
YWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KK3N5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFi
c3BhdGgoJy4uJykpCisKKworY2xhc3MgTW9ja0J1ZmZlcjoKKyAgICBCdWZmZXIgPSBOb25lCisg
ICAgQnVmZmVyUmVhZEVycm9yID0gTm9uZQorICAgIEJ1ZmZlcldyaXRlRXJyb3IgPSBOb25lCisK
KworY2xhc3MgTW9ja0NyeXB0bzoKKyAgICBBRUFEID0gTm9uZQorICAgIENyeXB0b0Vycm9yID0g
VmFsdWVFcnJvcgorICAgIEhlYWRlclByb3RlY3Rpb24gPSBOb25lCisKKworY2xhc3MgTW9ja1B5
bHNxcGFjazoKKyAgICBEZWNvZGVyID0gTm9uZQorICAgIEVuY29kZXIgPSBOb25lCisgICAgU3Ry
ZWFtQmxvY2tlZCA9IE5vbmUKKworCitzeXMubW9kdWxlcy51cGRhdGUoeworICAgICJhaW9xdWlj
Ll9idWZmZXIiOiBNb2NrQnVmZmVyKCksCisgICAgImFpb3F1aWMuX2NyeXB0byI6IE1vY2tDcnlw
dG8oKSwKKyAgICAicHlsc3FwYWNrIjogTW9ja1B5bHNxcGFjaygpLAorfSkKKworIyAtLSBHZW5l
cmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhp
bnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KKyMKKyMgbmVlZHNfc3BoaW54ID0gJzEuMCcKKwor
IyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3Mu
IFRoZXkgY2FuIGJlCisjIGV4dGVuc2lvbnMgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3Bo
aW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20KKyMgb25lcy4KK2V4dGVuc2lvbnMgPSBbCisgICAg
J3NwaGlueC5leHQuYXV0b2RvYycsCisgICAgJ3NwaGlueC5leHQuaW50ZXJzcGhpbngnLAorICAg
ICdzcGhpbnhfYXV0b2RvY190eXBlaGludHMnLAorICAgICdzcGhpbnhjb250cmliLmFzeW5jaW8n
LAorXQoraW50ZXJzcGhpbnhfbWFwcGluZyA9IHsKKyAgICAnY3J5cHRvZ3JhcGh5JzogKCdodHRw
czovL2NyeXB0b2dyYXBoeS5pby9lbi9sYXRlc3QnLCBOb25lKSwKKyAgICAncHl0aG9uJzogKCdo
dHRwczovL2RvY3MucHl0aG9uLm9yZy8zJywgTm9uZSksCit9CisKKyMgQWRkIGFueSBwYXRocyB0
aGF0IGNvbnRhaW4gdGVtcGxhdGVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5Lgor
dGVtcGxhdGVzX3BhdGggPSBbJ190ZW1wbGF0ZXMnXQorCisjIFRoZSBzdWZmaXgoZXMpIG9mIHNv
dXJjZSBmaWxlbmFtZXMuCisjIFlvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBzdWZmaXggYXMgYSBs
aXN0IG9mIHN0cmluZzoKKyMKKyMgc291cmNlX3N1ZmZpeCA9IFsnLnJzdCcsICcubWQnXQorc291
cmNlX3N1ZmZpeCA9ICcucnN0JworCisjIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1bWVudC4KK21h
c3Rlcl9kb2MgPSAnaW5kZXgnCisKKyMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJv
amVjdC4KK3Byb2plY3QgPSAnYWlvcXVpYycKK2NvcHlyaWdodCA9IHUnMjAxOSwgSmVyZW15IExh
aW7DqScKK2F1dGhvciA9IHUnSmVyZW15IExhaW7DqScKKworIyBUaGUgdmVyc2lvbiBpbmZvIGZv
ciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQgZm9y
CisjIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhlciBw
bGFjZXMgdGhyb3VnaG91dCB0aGUKKyMgYnVpbHQgZG9jdW1lbnRzLgorIworIyBUaGUgc2hvcnQg
WC5ZIHZlcnNpb24uCit2ZXJzaW9uID0gJycKKyMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5jbHVkaW5n
IGFscGhhL2JldGEvcmMgdGFncy4KK3JlbGVhc2UgPSAnJworCisjIFRoZSBsYW5ndWFnZSBmb3Ig
Y29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgor
IyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCisjCisjIFRoaXMgaXMgYWxzbyB1
c2VkIGlmIHlvdSBkbyBjb250ZW50IHRyYW5zbGF0aW9uIHZpYSBnZXR0ZXh0IGNhdGFsb2dzLgor
IyBVc3VhbGx5IHlvdSBzZXQgImxhbmd1YWdlIiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRo
ZXNlIGNhc2VzLgorbGFuZ3VhZ2UgPSBOb25lCisKKyMgTGlzdCBvZiBwYXR0ZXJucywgcmVsYXRp
dmUgdG8gc291cmNlIGRpcmVjdG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQKKyMgZGlyZWN0b3Jp
ZXMgdG8gaWdub3JlIHdoZW4gbG9va2luZyBmb3Igc291cmNlIGZpbGVzLgorIyBUaGlzIHBhdHRl
cm5zIGFsc28gZWZmZWN0IHRvIGh0bWxfc3RhdGljX3BhdGggYW5kIGh0bWxfZXh0cmFfcGF0aAor
ZXhjbHVkZV9wYXR0ZXJucyA9IFsnX2J1aWxkJywgJ1RodW1icy5kYicsICcuRFNfU3RvcmUnXQor
CisjIFRoZSBuYW1lIG9mIHRoZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdodGluZykgc3R5bGUg
dG8gdXNlLgorcHlnbWVudHNfc3R5bGUgPSAnc3BoaW54JworCisjIElmIHRydWUsIGB0b2RvYCBh
bmQgYHRvZG9MaXN0YCBwcm9kdWNlIG91dHB1dCwgZWxzZSB0aGV5IHByb2R1Y2Ugbm90aGluZy4K
K3RvZG9faW5jbHVkZV90b2RvcyA9IEZhbHNlCisKKworIyAtLSBPcHRpb25zIGZvciBIVE1MIG91
dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMg
VGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBk
b2N1bWVudGF0aW9uIGZvcgorIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCisjCitodG1sX3Ro
ZW1lID0gJ2FsYWJhc3RlcicKKworIyBUaGVtZSBvcHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBh
bmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIG9mIGEgdGhlbWUKKyMgZnVydGhlci4gIEZv
ciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgZm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKKyMg
ZG9jdW1lbnRhdGlvbi4KKyMKK2h0bWxfdGhlbWVfb3B0aW9ucyA9IHsKKyAgICAnZGVzY3JpcHRp
b24nOiAnQSBsaWJyYXJ5IGZvciBRVUlDIGluIFB5dGhvbi4nLAorICAgICdnaXRodWJfYnV0dG9u
JzogVHJ1ZSwKKyAgICAnZ2l0aHViX3VzZXInOiAnYWlvcnRjJywKKyAgICAnZ2l0aHViX3JlcG8n
OiAnYWlvcXVpYycsCit9CisKKyMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHN0
YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhlcmUsCisjIHJlbGF0aXZlIHRvIHRo
aXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIgdGhlIGJ1aWx0aW4gc3RhdGljIGZp
bGVzLAorIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3NzIiB3aWxsIG92ZXJ3cml0ZSB0aGUg
YnVpbHRpbiAiZGVmYXVsdC5jc3MiLgoraHRtbF9zdGF0aWNfcGF0aCA9IFsnX3N0YXRpYyddCisK
KyMgQ3VzdG9tIHNpZGViYXIgdGVtcGxhdGVzLCBtdXN0IGJlIGEgZGljdGlvbmFyeSB0aGF0IG1h
cHMgZG9jdW1lbnQgbmFtZXMKKyMgdG8gdGVtcGxhdGUgbmFtZXMuCisjCisjIFRoaXMgaXMgcmVx
dWlyZWQgZm9yIHRoZSBhbGFiYXN0ZXIgdGhlbWUKKyMgcmVmczogaHR0cDovL2FsYWJhc3Rlci5y
ZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW5zdGFsbGF0aW9uLmh0bWwjc2lkZWJhcnMKK2h0bWxf
c2lkZWJhcnMgPSB7CisgICAgJyoqJzogWworICAgICAgICAnYWJvdXQuaHRtbCcsCisgICAgICAg
ICduYXZpZ2F0aW9uLmh0bWwnLAorICAgICAgICAncmVsYXRpb25zLmh0bWwnLAorICAgICAgICAn
c2VhcmNoYm94Lmh0bWwnLAorICAgIF0KK30KKworCisjIC0tIE9wdGlvbnMgZm9yIEhUTUxIZWxw
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBP
dXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgoraHRtbGhlbHBfYmFz
ZW5hbWUgPSAnYWlvcXVpY2RvYycKKworCisjIC0tIE9wdGlvbnMgZm9yIExhVGVYIG91dHB1dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbGF0ZXhfZWxl
bWVudHMgPSB7CisgICAgIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBl
cicpLgorICAgICMKKyAgICAjICdwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAorCisgICAgIyBU
aGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgorICAgICMKKyAgICAjICdw
b2ludHNpemUnOiAnMTBwdCcsCisKKyAgICAjIEFkZGl0aW9uYWwgc3R1ZmYgZm9yIHRoZSBMYVRl
WCBwcmVhbWJsZS4KKyAgICAjCisgICAgIyAncHJlYW1ibGUnOiAnJywKKworICAgICMgTGF0ZXgg
ZmlndXJlIChmbG9hdCkgYWxpZ25tZW50CisgICAgIworICAgICMgJ2ZpZ3VyZV9hbGlnbic6ICdo
dGJwJywKK30KKworIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVz
LiBMaXN0IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRs
ZSwKKyMgIGF1dGhvciwgZG9jdW1lbnRjbGFzcyBbaG93dG8sIG1hbnVhbCwgb3Igb3duIGNsYXNz
XSkuCitsYXRleF9kb2N1bWVudHMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdhaW9xdWljLnRleCcs
ICdhaW9xdWljIERvY3VtZW50YXRpb24nLAorICAgICBhdXRob3IsICdtYW51YWwnKSwKK10KKwor
CisjIC0tIE9wdGlvbnMgZm9yIG1hbnVhbCBwYWdlIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBPbmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0
IG9mIHR1cGxlcworIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRo
b3JzLCBtYW51YWwgc2VjdGlvbikuCittYW5fcGFnZXMgPSBbCisgICAgKG1hc3Rlcl9kb2MsICdh
aW9xdWljJywgJ2Fpb3F1aWMgRG9jdW1lbnRhdGlvbicsCisgICAgIFthdXRob3JdLCAxKQorXQor
CisKKyMgLS0gT3B0aW9ucyBmb3IgVGV4aW5mbyBvdXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdyb3VwaW5nIHRoZSBkb2N1bWVudCB0cmVlIGlu
dG8gVGV4aW5mbyBmaWxlcy4gTGlzdCBvZiB0dXBsZXMKKyMgKHNvdXJjZSBzdGFydCBmaWxlLCB0
YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwKKyMgIGRpciBtZW51IGVudHJ5LCBkZXNjcmlwdGlv
biwgY2F0ZWdvcnkpCit0ZXhpbmZvX2RvY3VtZW50cyA9IFsKKyAgICAobWFzdGVyX2RvYywgJ2Fp
b3F1aWMnLCAnYWlvcXVpYyBEb2N1bWVudGF0aW9uJywKKyAgICAgYXV0aG9yLCAnYWlvcXVpYycs
ICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0LicsCisgICAgICdNaXNjZWxsYW5lb3Vz
JyksCitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvZGVzaWduLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NTI5ZTc2MmY1YTYzNGUyYTM1Nzkx
ZTQ2NWI5MDQ5YmE0YmU2MjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3Mv
ZGVzaWduLnJzdApAQCAtMCwwICsxLDM3IEBACitEZXNpZ24KKz09PT09PQorCitTYW5zLUlPIEFQ
SXMKKy4uLi4uLi4uLi4uLgorCitCb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9s
bG93IHRoZSBgc2FucyBJL09gXyBwYXR0ZXJuLCBsZWF2aW5nCithY3R1YWwgSS9PIG9wZXJhdGlv
bnMgdG8gdGhlIEFQSSB1c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgorYWR2YW50
YWdlcyBpbmNsdWRpbmcgbWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRl
Z3JhdGlvbiB3aXRoCitkaWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgorCitUTFMgYW5kIGVu
Y3J5cHRpb24KKy4uLi4uLi4uLi4uLi4uLi4uLgorCitUTFMgMS4zCisrKysrKysrCisKK2BgYWlv
cXVpY2BgIGZlYXR1cmVzIGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uIGJ1aWx0IHVw
b24gdGhlCitgY3J5cHRvZ3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNhdXNlIFFVSUMgcmVx
dWlyZXMgc29tZSBBUElzIHdoaWNoIGFyZQorY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIG1haW5z
dHJlYW0gVExTIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6CisKKy0gdGhlIGFiaWxp
dHkgdG8gZXh0cmFjdCB0cmFmZmljIHNlY3JldHMKKworLSB0aGUgYWJpbGl0eSB0byBvcGVyYXRl
IGRpcmVjdGx5IG9uIFRMUyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUgVExTCisgIHJlY29y
ZCBsYXllcgorCitIZWFkZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNyeXB0aW9uCisrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK1FVSUMgbWFrZXMgZXh0ZW5z
aXZlIHVzZSBvZiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVjdCBRVUlDIHBhY2tl
dAoraGVhZGVycyBhbmQgZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNlIG9wZXJhdGlvbnMg
b2NjdXIgZm9yIGV2ZXJ5IHNpbmdsZQorcGFja2V0IGFuZCBhcmUgYSBkZXRlcm1pbmluZyBmYWN0
b3IgZm9yIHBlcmZvcm1hbmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKK2FyZSBpbXBsZW1lbnRl
ZCBhcyBhIEMgZXh0ZW5zaW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgorCisuLiBfc2FucyBJL086
IGh0dHBzOi8vc2Fucy1pby5yZWFkdGhlZG9jcy5pby8KKy4uIF9jcnlwdG9ncmFwaHk6IGh0dHBz
Oi8vY3J5cHRvZ3JhcGh5LmlvLworLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3Jn
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvaDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZTIyMDFjNDNkNDZiMGNiYjJiYWMyOGRmY2Y1OTIwYTAx
MjkxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9oMy5yc3QKQEAgLTAs
MCArMSw0NCBAQAorSFRUUC8zIEFQSQorPT09PT09PT09PQorCitUaGUgSFRUUC8zIEFQSSBwZXJm
b3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmluZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1Ro
aXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgSFRUUC8zIGluIGFueSBQeXRob24gYXBwbGljYXRp
b24sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBjb25jdXJyZW5jeSBtb2RlbCB5b3UgYXJlIHVzaW5nLgor
CitDb25uZWN0aW9uCistLS0tLS0tLS0tCisKKy4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmNv
bm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6IEgzQ29ubmVjdGlvbgorICAgICAgICA6bWVt
YmVyczoKKworCitFdmVudHMKKy0tLS0tLQorCisuLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5l
dmVudHMKKworICAgIC4uIGF1dG9jbGFzczo6IEgzRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisK
KyAgICAuLiBhdXRvY2xhc3M6OiBEYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBIZWFkZXJzUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAg
ICAuLiBhdXRvY2xhc3M6OiBQdXNoUHJvbWlzZVJlY2VpdmVkCisgICAgICAgIDptZW1iZXJzOgor
CisKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMu
ZXhjZXB0aW9ucworCisgICAgLi4gYXV0b2NsYXNzOjogSDNFcnJvcgorICAgICAgICA6bWVtYmVy
czoKKworICAgIC4uIGF1dG9jbGFzczo6IE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKyAgICAgICAg
Om1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg0MTU2MWEyMjQwNDBiYzFhOGFj
ZTI2NmFkMDE1NjhmNjg0MTdhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2Nz
L2luZGV4LnJzdApAQCAtMCwwICsxLDM5IEBACithaW9xdWljCis9PT09PT09CisKK3xweXBpLXZ8
IHxweXBpLXB5dmVyc2lvbnN8IHxweXBpLWx8IHx0ZXN0c3wgfGNvZGVjb3Z8CisKKy4uIHxweXBp
LXZ8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKKyAg
ICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKKworLi4gfHB5
cGktcHl2ZXJzaW9uc3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJz
aW9ucy9haW9xdWljLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5
cGkvYWlvcXVpYworCisuLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v
cHlwaS9sL2Fpb3F1aWMuc3ZnCisgICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcv
cHlwaS9haW9xdWljCisKKy4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlv
cnRjL2Fpb3F1aWMvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZworICAgIDp0YXJnZXQ6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCisKKy4uIHxjb2RlY292fCBpbWFn
ZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVp
Yy5zdmcKKyAgICA6dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMK
KworYGBhaW9xdWljYGAgaXMgYSBsaWJyYXJ5IGZvciB0aGUgUVVJQyBuZXR3b3JrIHByb3RvY29s
IGluIFB5dGhvbi4gSXQgZmVhdHVyZXMgc2V2ZXJhbAorQVBJczoKKworLSBhIFFVSUMgQVBJIGZv
bGxvd2luZyB0aGUgImJyaW5nIHlvdXIgb3duIEkvTyIgcGF0dGVybiwgc3VpdGFibGUgZm9yCisg
IGVtYmVkZGluZyBpbiBhbnkgZnJhbWV3b3JrLAorCistIGFuIEhUVFAvMyBBUEkgd2hpY2ggYWxz
byBmb2xsb3dzIHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLAorCistIGEgUVVJQyBj
b252ZW5pZW5jZSBBUEkgYnVpbHQgb24gdG9wIG9mIDptb2Q6YGFzeW5jaW9gLCBQeXRob24ncyBz
dGFuZGFyZCBhc3luY2hyb25vdXMKKyAgSS9PIGZyYW1ld29yay4KKworLi4gdG9jdHJlZTo6Cisg
ICA6bWF4ZGVwdGg6IDIKKworICAgZGVzaWduCisgICBxdWljCisgICBoMworICAgYXN5bmNpbwor
ICAgbGljZW5zZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGljZW5zZS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkM2IwN2ZjOTNmNjQ3
ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2RvY3MvbGljZW5zZS5yc3QKQEAgLTAsMCArMSw0IEBACitMaWNlbnNlCistLS0tLS0tCisKKy4u
IGxpdGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvcXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVi
ZWZiNDlkNTE0YTQ1MTVjMjIzY2RjODQzNjljZDE2YTEyYjczCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKQEAgLTAsMCArMSw1MSBAQAorUVVJQyBBUEkKKz09
PT09PT09CisKK1RoZSBRVUlDIEFQSSBwZXJmb3JtcyBubyBJL08gb24gaXRzIG93biwgbGVhdmlu
ZyB0aGlzIHRvIHRoZSBBUEkgdXNlci4KK1RoaXMgYWxsb3dzIHlvdSB0byBpbnRlZ3JhdGUgUVVJ
QyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRsZXNzIG9mCit0aGUgY29uY3VycmVu
Y3kgbW9kZWwgeW91IGFyZSB1c2luZy4KKworQ29ubmVjdGlvbgorLS0tLS0tLS0tLQorCisuLiBh
dXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24KKworICAgIC4uIGF1dG9jbGFzczo6
IFF1aWNDb25uZWN0aW9uCisgICAgICAgIDptZW1iZXJzOgorCisKK0NvbmZpZ3VyYXRpb24KKy0t
LS0tLS0tLS0tLS0KKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9u
CisKKyAgICAuLiBhdXRvY2xhc3M6OiBRdWljQ29uZmlndXJhdGlvbgorICAgICAgICA6bWVtYmVy
czoKKworLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5sb2dnZXIKKworICAgIC4uIGF1dG9j
bGFzczo6IFF1aWNMb2dnZXIKKyAgICAgICAgOm1lbWJlcnM6CisKK0V2ZW50cworLS0tLS0tCisK
Ky4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuZXZlbnRzCisKKyAgICAuLiBhdXRvY2xhc3M6
OiBRdWljRXZlbnQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xhc3M6OiBDb25u
ZWN0aW9uVGVybWluYXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFzczo6
IEhhbmRzaGFrZUNvbXBsZXRlZAorICAgICAgICA6bWVtYmVyczoKKworICAgIC4uIGF1dG9jbGFz
czo6IFBpbmdBY2tub3dsZWRnZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRvY2xh
c3M6OiBTdHJlYW1EYXRhUmVjZWl2ZWQKKyAgICAgICAgOm1lbWJlcnM6CisKKyAgICAuLiBhdXRv
Y2xhc3M6OiBTdHJlYW1SZXNldAorICAgICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvdzNjLWltcG9y
dC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDgwZTc5OTkwNDNkMjk3NDFhMTM0OTE2Njc4ZDU0MDQ5OTJhOTc1
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjQgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL01ha2VmaWxlCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2RvY3MvYXN5bmNpby5yc3QKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvZGVzaWduLnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdAor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2Uu
cnN0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvcXVpYy5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9kZW1vLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5CkBAIC0wLDAgKzEsMTA5IEBA
CisjCisjIGRlbW8gYXBwbGljYXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQorIworCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBvcworZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQor
CitpbXBvcnQgaHR0cGJpbgorZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdzZ2lUb0FzZ2kKK2Zy
b20gc3RhcmxldHRlLmFwcGxpY2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCitmcm9tIHN0YXJsZXR0
ZS5yZXNwb25zZXMgaW1wb3J0IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25zZQorZnJvbSBzdGFy
bGV0dGUuc3RhdGljZmlsZXMgaW1wb3J0IFN0YXRpY0ZpbGVzCitmcm9tIHN0YXJsZXR0ZS50ZW1w
bGF0aW5nIGltcG9ydCBKaW5qYTJUZW1wbGF0ZXMKK2Zyb20gc3RhcmxldHRlLndlYnNvY2tldHMg
aW1wb3J0IFdlYlNvY2tldERpc2Nvbm5lY3QKKworUk9PVCA9IG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykKK1NUQVRJQ19ST09UID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19ST09UIiwgb3MucGF0
aC5qb2luKFJPT1QsICJodGRvY3MiKSkKK1NUQVRJQ19VUkwgPSAiLyIKK0xPR1NfUEFUSCA9IG9z
LnBhdGguam9pbihTVEFUSUNfUk9PVCwgImxvZ3MiKQorUVZJU19VUkwgPSAiaHR0cHM6Ly9xdmlz
LmVkbS51aGFzc2VsdC5iZS8iCisKK3RlbXBsYXRlcyA9IEppbmphMlRlbXBsYXRlcyhkaXJlY3Rv
cnk9b3MucGF0aC5qb2luKFJPT1QsICJ0ZW1wbGF0ZXMiKSkKK2FwcCA9IFN0YXJsZXR0ZSgpCisK
KworQGFwcC5yb3V0ZSgiLyIpCithc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVzdCk6CisgICAgIiIi
CisgICAgU2ltcGxlIGhvbWVwYWdlLgorICAgICIiIgorICAgIGF3YWl0IHJlcXVlc3Quc2VuZF9w
dXNoX3Byb21pc2UoIi9zdHlsZS5jc3MiKQorICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVS
ZXNwb25zZSgiaW5kZXguaHRtbCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQorCisKK0BhcHAucm91
dGUoIi9lY2hvIiwgbWV0aG9kcz1bIlBPU1QiXSkKK2FzeW5jIGRlZiBlY2hvKHJlcXVlc3QpOgor
ICAgICIiIgorICAgIEhUVFAgZWNobyBlbmRwb2ludC4KKyAgICAiIiIKKyAgICBjb250ZW50ID0g
YXdhaXQgcmVxdWVzdC5ib2R5KCkKKyAgICBtZWRpYV90eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdl
dCgiY29udGVudC10eXBlIikKKyAgICByZXR1cm4gUmVzcG9uc2UoY29udGVudCwgbWVkaWFfdHlw
ZT1tZWRpYV90eXBlKQorCisKK0BhcHAucm91dGUoIi9sb2dzLz8iKQorYXN5bmMgZGVmIGxvZ3Mo
cmVxdWVzdCk6CisgICAgIiIiCisgICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxPRyBmaWxlcy4KKyAg
ICAiIiIKKyAgICBsb2dzID0gW10KKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKExPR1NfUEFU
SCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5xbG9nIik6CisgICAgICAgICAgICBzID0g
b3Muc3RhdChvcy5wYXRoLmpvaW4oTE9HU19QQVRILCBuYW1lKSkKKyAgICAgICAgICAgIGZpbGVf
dXJsID0gImh0dHBzOi8vIiArIHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsgIi9sb2dzLyIgKyBu
YW1lCisgICAgICAgICAgICBsb2dzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJkYXRlIjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChz
LnN0X210aW1lKS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlWS0lbS0lZCAl
SDolTTolUyIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgImZp
bGVfdXJsIjogZmlsZV91cmwsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZVs6LTVd
LAorICAgICAgICAgICAgICAgICAgICAicXZpc191cmwiOiBRVklTX1VSTAorICAgICAgICAgICAg
ICAgICAgICArICI/IgorICAgICAgICAgICAgICAgICAgICArIHVybGVuY29kZSh7ImZpbGUiOiBm
aWxlX3VybH0pCisgICAgICAgICAgICAgICAgICAgICsgIiMvc2VxdWVuY2UiLAorICAgICAgICAg
ICAgICAgICAgICAic2l6ZSI6IHMuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApCisgICAgcmV0dXJuIHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKAorICAgICAgICAi
bG9ncy5odG1sIiwKKyAgICAgICAgeworICAgICAgICAgICAgImxvZ3MiOiBzb3J0ZWQobG9ncywg
a2V5PWxhbWJkYSB4OiB4WyJkYXRlIl0sIHJldmVyc2U9VHJ1ZSksCisgICAgICAgICAgICAicmVx
dWVzdCI6IHJlcXVlc3QsCisgICAgICAgIH0sCisgICAgKQorCisKK0BhcHAucm91dGUoIi97c2l6
ZTppbnR9IikKK2RlZiBwYWRkaW5nKHJlcXVlc3QpOgorICAgICIiIgorICAgIER5bmFtaWNhbGx5
IGdlbmVyYXRlZCBkYXRhLCBtYXhpbXVtIDUwTUIuCisgICAgIiIiCisgICAgc2l6ZSA9IG1pbig1
MDAwMDAwMCwgcmVxdWVzdC5wYXRoX3BhcmFtc1sic2l6ZSJdKQorICAgIHJldHVybiBQbGFpblRl
eHRSZXNwb25zZSgiWiIgKiBzaXplKQorCisKK0BhcHAud2Vic29ja2V0X3JvdXRlKCIvd3MiKQor
YXN5bmMgZGVmIHdzKHdlYnNvY2tldCk6CisgICAgIiIiCisgICAgV2ViU29ja2V0IGVjaG8gZW5k
cG9pbnQuCisgICAgIiIiCisgICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5zY29wZVsic3VicHJv
dG9jb2xzIl06CisgICAgICAgIHN1YnByb3RvY29sID0gImNoYXQiCisgICAgZWxzZToKKyAgICAg
ICAgc3VicHJvdG9jb2wgPSBOb25lCisgICAgYXdhaXQgd2Vic29ja2V0LmFjY2VwdChzdWJwcm90
b2NvbD1zdWJwcm90b2NvbCkKKworICAgIHRyeToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0KCkKKyAgICAgICAg
ICAgIGF3YWl0IHdlYnNvY2tldC5zZW5kX3RleHQobWVzc2FnZSkKKyAgICBleGNlcHQgV2ViU29j
a2V0RGlzY29ubmVjdDoKKyAgICAgICAgcGFzcworCisKK2FwcC5tb3VudCgiL2h0dHBiaW4iLCBX
c2dpVG9Bc2dpKGh0dHBiaW4uYXBwKSkKKworYXBwLm1vdW50KFNUQVRJQ19VUkwsIFN0YXRpY0Zp
bGVzKGRpcmVjdG9yeT1TVEFUSUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy9odGRvY3Mvcm9ib3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWFhMGJkZWFhY2U2MzcyYTdlYjEzMDEw
ZmQxNjY2YzY1NTQ2ODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVz
L2h0ZG9jcy9yb2JvdHMudHh0CkBAIC0wLDAgKzEsMiBAQAorVXNlci1hZ2VudDogKgorRGlzYWxs
b3c6IC9sb2dzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxl
LmNzcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxNTIzZGI4YWQ4ZDE2Zjc1MjYwYzU4MTdhYjQ4ZTg5ZTIxZWJiZDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcwpAQCAtMCwwICsxLDEw
IEBACitib2R5IHsKKyAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA0MGVtOworfQor
Cit0YWJsZS5sb2dzIHsKKyAgICB3aWR0aDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NjgyMGRmMGRmODA5YzdjOTg5
OTI3YThiOGIzMjhlMDQ5NTZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dAorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
aHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTg4OGEzNmVhN2ViYTI3ZjM2YTVkZDQwYjBjNzZhMDQyNDlkYzI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpAQCAt
MCwwICsxLDQ1NSBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGpz
b24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzc2wK
K2ltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcg
aW1wb3J0IENhbGxhYmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0
Citmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKKworaW1wb3J0IHdzcHJvdG8KK2lt
cG9ydCB3c3Byb3RvLmV2ZW50cworCitpbXBvcnQgYWlvcXVpYworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24g
aW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgKAorICAgIERhdGFSZWNlaXZlZCwKKyAgICBIM0V2ZW50LAorICAgIEhlYWRlcnNSZWNlaXZl
ZCwKKyAgICBQdXNoUHJvbWlzZVJlY2VpdmVkLAorKQorZnJvbSBhaW9xdWljLnF1aWMuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50
cyBpbXBvcnQgUXVpY0V2ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNM
b2dnZXIKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQorCitIdHRwQ29ubmVjdGlvbiA9
IFVuaW9uW0gwQ29ubmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitVU0VSX0FHRU5UID0gImFpb3F1
aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KKworCitjbGFzcyBVUkw6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHVybDogc3RyKSAtPiBOb25lOgorICAgICAgICBwYXJzZWQgPSB1cmxwYXJzZSh1
cmwpCisKKyAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHNl
bGYuZnVsbF9wYXRoID0gcGFyc2VkLnBhdGgKKyAgICAgICAgaWYgcGFyc2VkLnF1ZXJ5OgorICAg
ICAgICAgICAgc2VsZi5mdWxsX3BhdGggKz0gIj8iICsgcGFyc2VkLnF1ZXJ5CisgICAgICAgIHNl
bGYuc2NoZW1lID0gcGFyc2VkLnNjaGVtZQorCisKK2NsYXNzIEh0dHBSZXF1ZXN0OgorICAgIGRl
ZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwgbWV0aG9kOiBzdHIsIHVybDogVVJMLCBjb250ZW50
OiBieXRlcyA9IGIiIiwgaGVhZGVyczogRGljdCA9IHt9CisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CisgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMK
KyAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKwor
CitjbGFzcyBXZWJTb2NrZXQ6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBodHRw
OiBIdHRwQ29ubmVjdGlvbiwgc3RyZWFtX2lkOiBpbnQsIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwg
Tm9uZV0KKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaHR0cCA9IGh0dHAKKyAgICAgICAg
c2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtzdHJdID0gYXN5bmNpby5RdWV1ZSgpCisgICAgICAg
IHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAgIHNlbGYuc3VicHJvdG9jb2w6IE9w
dGlvbmFsW3N0cl0gPSBOb25lCisgICAgICAgIHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorICAg
ICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlvbih3c3Byb3RvLkNvbm5lY3Rp
b25UeXBlLkNMSUVOVCkKKworICAgIGFzeW5jIGRlZiBjbG9zZShzZWxmLCBjb2RlPTEwMDAsIHJl
YXNvbj0iIikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFBlcmZvcm0gdGhlIGNsb3Np
bmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0
LnNlbmQoCisgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29kZT1j
b2RlLCByZWFzb249cmVhc29uKQorICAgICAgICApCisgICAgICAgIHNlbGYuaHR0cC5zZW5kX2Rh
dGEoc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09VHJ1ZSkK
KyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBkZWYgcmVjdihzZWxmKSAtPiBz
dHI6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5nZXQoKQorCisgICAgYXN5
bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBhIG1lc3NhZ2UuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZShtZXNzYWdlLCBzdHIpCisKKyAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQo
d3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UoZGF0YT1tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5o
dHRwLnNlbmRfZGF0YShzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwgZW5kX3N0
cmVhbT1GYWxzZSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBkZWYgaHR0cF9ldmVu
dF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNp
bnN0YW5jZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIGZvciBoZWFkZXIs
IHZhbHVlIGluIGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIi
c2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VicHJv
dG9jb2wgPSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldC5yZWNlaXZlX2RhdGEoZXZl
bnQuZGF0YSkKKworICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJzb2NrZXQuZXZlbnRz
KCk6CisgICAgICAgICAgICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkK
KworICAgIGRlZiB3ZWJzb2NrZXRfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IHdzcHJvdG8u
ZXZlbnRzLkV2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCB3c3By
b3RvLmV2ZW50cy5UZXh0TWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dh
aXQoZXZlbnQuZGF0YSkKKworCitjbGFzcyBIdHRwQ2xpZW50KFF1aWNDb25uZWN0aW9uUHJvdG9j
b2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpIC0+IE5vbmU6Cisg
ICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYu
cHVzaGVzOiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5faHR0
cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0
X2V2ZW50czogRGljdFtpbnQsIERlcXVlW0gzRXZlbnRdXSA9IHt9CisgICAgICAgIHNlbGYuX3Jl
cXVlc3Rfd2FpdGVyOiBEaWN0W2ludCwgYXN5bmNpby5GdXR1cmVbRGVxdWVbSDNFdmVudF1dXSA9
IHt9CisgICAgICAgIHNlbGYuX3dlYnNvY2tldHM6IERpY3RbaW50LCBXZWJTb2NrZXRdID0ge30K
KworICAgICAgICBpZiBzZWxmLl9xdWljLmNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHNbMF0u
c3RhcnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9u
KHNlbGYuX3F1aWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9odHRwID0gSDND
b25uZWN0aW9uKHNlbGYuX3F1aWMpCisKKyAgICBhc3luYyBkZWYgZ2V0KHNlbGYsIHVybDogc3Ry
LCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgorICAgICAgICAiIiIKKyAg
ICAgICAgUGVyZm9ybSBhIEdFVCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu
IGF3YWl0IHNlbGYuX3JlcXVlc3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IkdF
VCIsIHVybD1VUkwodXJsKSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3lu
YyBkZWYgcG9zdChzZWxmLCB1cmw6IHN0ciwgZGF0YTogYnl0ZXMsIGhlYWRlcnM6IERpY3QgPSB7
fSkgLT4gRGVxdWVbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBQZXJmb3JtIGEgUE9T
VCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3JlcXVl
c3QoCisgICAgICAgICAgICBIdHRwUmVxdWVzdChtZXRob2Q9IlBPU1QiLCB1cmw9VVJMKHVybCks
IGNvbnRlbnQ9ZGF0YSwgaGVhZGVycz1oZWFkZXJzKQorICAgICAgICApCisKKyAgICBhc3luYyBk
ZWYgd2Vic29ja2V0KHNlbGYsIHVybDogc3RyLCBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtd
KSAtPiBXZWJTb2NrZXQ6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIGEgV2ViU29ja2V0Lgor
ICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IEh0dHBSZXF1ZXN0KG1ldGhvZD0iQ09OTkVD
VCIsIHVybD1VUkwodXJsKSkKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4
dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgd2Vic29ja2V0ID0gV2ViU29ja2V0KAor
ICAgICAgICAgICAgaHR0cD1zZWxmLl9odHRwLCBzdHJlYW1faWQ9c3RyZWFtX2lkLCB0cmFuc21p
dD1zZWxmLnRyYW5zbWl0CisgICAgICAgICkKKworICAgICAgICBzZWxmLl93ZWJzb2NrZXRzW3N0
cmVhbV9pZF0gPSB3ZWJzb2NrZXQKKworICAgICAgICBoZWFkZXJzID0gWworICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiQ09OTkVDVCIpLAorICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1ZXN0LnVybC5hdXRob3JpdHku
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGgu
ZW5jb2RlKCkpLAorICAgICAgICAgICAgKGIiOnByb3RvY29sIiwgYiJ3ZWJzb2NrZXQiKSwKKyAg
ICAgICAgICAgIChiInVzZXItYWdlbnQiLCBVU0VSX0FHRU5ULmVuY29kZSgpKSwKKyAgICAgICAg
ICAgIChiInNlYy13ZWJzb2NrZXQtdmVyc2lvbiIsIGIiMTMiKSwKKyAgICAgICAgXQorICAgICAg
ICBpZiBzdWJwcm90b2NvbHM6CisgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwgIiwgIi5qb2luKHN1YnByb3RvY29s
cykuZW5jb2RlKCkpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX2h0dHAuc2VuZF9oZWFk
ZXJzKHN0cmVhbV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAgICAgICBzZWxm
LnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4gd2Vic29ja2V0CisKKyAgICBkZWYgaHR0cF9l
dmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShldmVudCwgKEhlYWRlcnNSZWNlaXZlZCwgRGF0YVJlY2VpdmVkKSk6CisgICAg
ICAgICAgICBzdHJlYW1faWQgPSBldmVudC5zdHJlYW1faWQKKyAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCBpbiBzZWxmLl9yZXF1ZXN0X2V2ZW50czoKKyAgICAgICAgICAgICAgICAjIGh0dHAKKyAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tldmVudC5zdHJlYW1faWRdLmFwcGVu
ZChldmVudCkKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1fZW5kZWQ6CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyID0gc2VsZi5fcmVxdWVzdF93YWl0ZXIucG9wKHN0
cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF93YWl0ZXIuc2V0X3Jlc3VsdChz
ZWxmLl9yZXF1ZXN0X2V2ZW50cy5wb3Aoc3RyZWFtX2lkKSkKKworICAgICAgICAgICAgZWxpZiBz
dHJlYW1faWQgaW4gc2VsZi5fd2Vic29ja2V0czoKKyAgICAgICAgICAgICAgICAjIHdlYnNvY2tl
dAorICAgICAgICAgICAgICAgIHdlYnNvY2tldCA9IHNlbGYuX3dlYnNvY2tldHNbc3RyZWFtX2lk
XQorICAgICAgICAgICAgICAgIHdlYnNvY2tldC5odHRwX2V2ZW50X3JlY2VpdmVkKGV2ZW50KQor
CisgICAgICAgICAgICBlbGlmIGV2ZW50LnB1c2hfaWQgaW4gc2VsZi5wdXNoZXM6CisgICAgICAg
ICAgICAgICAgIyBwdXNoCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9p
ZF0uYXBwZW5kKGV2ZW50KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgUHVzaFBy
b21pc2VSZWNlaXZlZCk6CisgICAgICAgICAgICBzZWxmLnB1c2hlc1tldmVudC5wdXNoX2lkXSA9
IGRlcXVlKCkKKyAgICAgICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdLmFwcGVuZChl
dmVudCkKKworICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZl
bnQpIC0+IE5vbmU6CisgICAgICAgICMgwqBwYXNzIGV2ZW50IHRvIHRoZSBIVFRQIGxheWVyCisg
ICAgICAgIGlmIHNlbGYuX2h0dHAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaHR0cF9l
dmVudCBpbiBzZWxmLl9odHRwLmhhbmRsZV9ldmVudChldmVudCk6CisgICAgICAgICAgICAgICAg
c2VsZi5odHRwX2V2ZW50X3JlY2VpdmVkKGh0dHBfZXZlbnQpCisKKyAgICBhc3luYyBkZWYgX3Jl
cXVlc3Qoc2VsZiwgcmVxdWVzdDogSHR0cFJlcXVlc3QpOgorICAgICAgICBzdHJlYW1faWQgPSBz
ZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICBzZWxmLl9o
dHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAg
ICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5t
ZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVy
bC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCByZXF1
ZXN0LnVybC5hdXRob3JpdHkuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
cmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKKyAgICAgICAgICAgICAgICAoYiJ1c2Vy
LWFnZW50IiwgVVNFUl9BR0VOVC5lbmNvZGUoKSksCisgICAgICAgICAgICBdCisgICAgICAgICAg
ICArIFsoay5lbmNvZGUoKSwgdi5lbmNvZGUoKSkgZm9yIChrLCB2KSBpbiByZXF1ZXN0LmhlYWRl
cnMuaXRlbXMoKV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5zZW5kX2RhdGEoc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LmNvbnRlbnQsIGVuZF9zdHJlYW09VHJ1ZSkK
KworICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9y
ZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQo
KQorCisgICAgICAgIHJldHVybiBhd2FpdCBhc3luY2lvLnNoaWVsZCh3YWl0ZXIpCisKKworYXN5
bmMgZGVmIHBlcmZvcm1faHR0cF9yZXF1ZXN0KAorICAgIGNsaWVudDogSHR0cENsaWVudCwgdXJs
OiBzdHIsIGRhdGE6IHN0ciwgaW5jbHVkZTogYm9vbCwgb3V0cHV0X2RpcjogT3B0aW9uYWxbc3Ry
XSwKKykgLT4gTm9uZToKKyAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgIHN0YXJ0ID0gdGltZS50
aW1lKCkKKyAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBodHRwX2V2ZW50cyA9IGF3
YWl0IGNsaWVudC5wb3N0KAorICAgICAgICAgICAgdXJsLAorICAgICAgICAgICAgZGF0YT1kYXRh
LmVuY29kZSgpLAorICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAg
ICAgIGh0dHBfZXZlbnRzID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisgICAgZWxhcHNlZCA9IHRp
bWUudGltZSgpIC0gc3RhcnQKKworICAgICMgcHJpbnQgc3BlZWQKKyAgICBvY3RldHMgPSAwCisg
ICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9ldmVudHM6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aHR0cF9ldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAgICAgICAgIG9jdGV0cyArPSBsZW4oaHR0
cF9ldmVudC5kYXRhKQorICAgIGxvZ2dlci5pbmZvKAorICAgICAgICAiUmVjZWl2ZWQgJWQgYnl0
ZXMgaW4gJS4xZiBzICglLjNmIE1icHMpIgorICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9j
dGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkKKyAgICApCisKKyAgICAjIG91dHB1dCByZXNw
b25zZQorICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dF9wYXRo
ID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3V0cHV0X2Rpciwgb3MucGF0aC5iYXNlbmFt
ZSh1cmxwYXJzZSh1cmwpLnBhdGgpIG9yICJpbmRleC5odG1sIgorICAgICAgICApCisgICAgICAg
IHdpdGggb3BlbihvdXRwdXRfcGF0aCwgIndiIikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGluY2x1ZGU6CisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnMgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYg
aW4gaHR0cF9ldmVudC5oZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyAr
PSBrICsgYiI6ICIgKyB2ICsgYiJcclxuIgorICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXJz
OgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoaGVhZGVycyArIGIi
XHJcbiIpCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFS
ZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGh0dHBfZXZl
bnQuZGF0YSkKKworCitkZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQ6IFNlc3Npb25UaWNr
ZXQpIC0+IE5vbmU6CisgICAgIiIiCisgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0
aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNlc3Npb24gdGlja2V0CisgICAgaXMgcmVjZWl2ZWQu
CisgICAgIiIiCisgICAgbG9nZ2VyLmluZm8oIk5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIp
CisgICAgaWYgYXJncy5zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vz
c2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0
LCBmcCkKKworCithc3luYyBkZWYgcnVuKAorICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1
cmF0aW9uLAorICAgIHVybHM6IExpc3Rbc3RyXSwKKyAgICBkYXRhOiBzdHIsCisgICAgaW5jbHVk
ZTogYm9vbCwKKyAgICBvdXRwdXRfZGlyOiBPcHRpb25hbFtzdHJdLAorICAgIGxvY2FsX3BvcnQ6
IGludCwKKykgLT4gTm9uZToKKyAgICAjIHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNl
KHVybHNbMF0pCisgICAgYXNzZXJ0IHBhcnNlZC5zY2hlbWUgaW4gKAorICAgICAgICAiaHR0cHMi
LAorICAgICAgICAid3NzIiwKKyAgICApLCAiT25seSBodHRwczovLyBvciB3c3M6Ly8gVVJMcyBh
cmUgc3VwcG9ydGVkLiIKKyAgICBpZiAiOiIgaW4gcGFyc2VkLm5ldGxvYzoKKyAgICAgICAgaG9z
dCwgcG9ydF9zdHIgPSBwYXJzZWQubmV0bG9jLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGlu
dChwb3J0X3N0cikKKyAgICBlbHNlOgorICAgICAgICBob3N0ID0gcGFyc2VkLm5ldGxvYworICAg
ICAgICBwb3J0ID0gNDQzCisKKyAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgIGhvc3Qs
CisgICAgICAgIHBvcnQsCisgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAg
ICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBDbGllbnQsCisgICAgICAgIHNlc3Npb25fdGlja2V0
X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgbG9jYWxfcG9ydD1sb2NhbF9w
b3J0LAorICAgICkgYXMgY2xpZW50OgorICAgICAgICBjbGllbnQgPSBjYXN0KEh0dHBDbGllbnQs
IGNsaWVudCkKKworICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICJ3c3MiOgorICAgICAgICAg
ICAgd3MgPSBhd2FpdCBjbGllbnQud2Vic29ja2V0KHVybHNbMF0sIHN1YnByb3RvY29scz1bImNo
YXQiLCAic3VwZXJjaGF0Il0pCisKKyAgICAgICAgICAgICMgc2VuZCBzb21lIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGx5CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gIkhlbGxvIHt9LCBXZWJTb2NrZXQhIi5mb3JtYXQoaSkKKyAgICAg
ICAgICAgICAgICBwcmludCgiPiAiICsgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBhd2FpdCB3
cy5zZW5kKG1lc3NhZ2UpCisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgd3MucmVj
digpCisgICAgICAgICAgICAgICAgcHJpbnQoIjwgIiArIG1lc3NhZ2UpCisKKyAgICAgICAgICAg
IGF3YWl0IHdzLmNsb3NlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGVyZm9ybSBy
ZXF1ZXN0CisgICAgICAgICAgICBjb3JvcyA9IFsKKyAgICAgICAgICAgICAgICBwZXJmb3JtX2h0
dHBfcmVxdWVzdCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50PWNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlPWluY2x1ZGUsCisgICAgICAgICAgICAgICAgICAgIG91
dHB1dF9kaXI9b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
Zm9yIHVybCBpbiB1cmxzCisgICAgICAgICAgICBdCisgICAgICAgICAgICBhd2FpdCBhc3luY2lv
LmdhdGhlcigqY29yb3MpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBkZWZh
dWx0cyA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorCisgICAgcGFyc2VyID0g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkhUVFAvMyBjbGllbnQiKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ1cmwiLCB0eXBlPXN0ciwgbmFyZ3M9Iisi
LCBoZWxwPSJ0aGUgVVJMIHRvIHF1ZXJ5IChtdXN0IGJlIEhUVFBTKSIKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBlPXN0ciwgaGVscD0i
bG9hZCBDQSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiCisgICAgKQorICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItZCIsICItLWRhdGEiLCB0eXBlPXN0ciwg
aGVscD0ic2VuZCB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSBQT1NUIHJlcXVlc3QiCisgICAgKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItaSIsCisgICAgICAgICItLWluY2x1
ZGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJpbmNsdWRl
IHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgaW4gdGhlIG91dHB1dCIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW1heC1kYXRhIiwKKyAgICAgICAgdHlwZT1p
bnQsCisgICAgICAgIGhlbHA9ImNvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQgKGRl
ZmF1bHQ6ICVkKSIgJSBkZWZhdWx0cy5tYXhfZGF0YSwKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbWF4LXN0cmVhbS1kYXRhIiwKKyAgICAgICAgdHlwZT1pbnQs
CisgICAgICAgIGhlbHA9InBlci1zdHJlYW0gZmxvdyBjb250cm9sIGxpbWl0IChkZWZhdWx0OiAl
ZCkiICUgZGVmYXVsdHMubWF4X3N0cmVhbV9kYXRhLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLWsiLAorICAgICAgICAiLS1pbnNlY3VyZSIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9ImRvIG5vdCB2YWxpZGF0ZSBzZXJ2ZXIg
Y2VydGlmaWNhdGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxlZ2FjeS1o
dHRwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0idXNlIEhUVFAvMC45IikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgdHlwZT1zdHIsIGhlbHA9
IndyaXRlIGRvd25sb2FkZWQgZmlsZXMgdG8gdGhpcyBkaXJlY3RvcnkiLAorICAgICkKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3Ry
LCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNy
ZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0
byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLXMiLAorICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisg
ICAgICAgIHR5cGU9c3RyLAorICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRp
Y2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCisgICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgKKyAgICAgICAgIi0tbG9jYWwtcG9ydCIsIHR5cGU9aW50LCBkZWZhdWx0PTAsIGhl
bHA9ImxvY2FsIHBvcnQgdG8gYmluZCBmb3IgY29ubmVjdGlvbnMiLAorICAgICkKKworICAgIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAorICAg
ICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdl
KXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxv
Z2dpbmcuSU5GTywKKyAgICApCisKKyAgICBpZiBhcmdzLm91dHB1dF9kaXIgaXMgbm90IE5vbmUg
YW5kIG5vdCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0cHV0X2Rpcik6CisgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGFyZ3Mub3V0cHV0X2RpcikKKworICAg
ICMgcHJlcGFyZSBjb25maWd1cmF0aW9uCisgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgYWxwbl9wcm90b2NvbHM9SDBfQUxQTiBp
ZiBhcmdzLmxlZ2FjeV9odHRwIGVsc2UgSDNfQUxQTgorICAgICkKKyAgICBpZiBhcmdzLmNhX2Nl
cnRzOgorICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhhcmdzLmNh
X2NlcnRzKQorICAgIGlmIGFyZ3MuaW5zZWN1cmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24udmVy
aWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgaWYgYXJncy5tYXhfZGF0YToKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5tYXhfZGF0YSA9IGFyZ3MubWF4X2RhdGEKKyAgICBpZiBhcmdzLm1heF9z
dHJlYW1fZGF0YToKKyAgICAgICAgY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEgPSBhcmdz
Lm1heF9zdHJlYW1fZGF0YQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9n
OgorICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2Vj
cmV0c19sb2csICJhIikKKyAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgorICAgICAgICB0cnk6
CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgInJiIikgYXMgZnA6
CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9IHBpY2tsZS5s
b2FkKGZwKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxs
KCkKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgdHJ5OgorICAgICAg
ICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgdXJscz1h
cmdzLnVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWFyZ3MuZGF0YSwKKyAgICAgICAgICAgICAg
ICBpbmNsdWRlPWFyZ3MuaW5jbHVkZSwKKyAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPWFyZ3Mu
b3V0cHV0X2RpciwKKyAgICAgICAgICAgICAgICBsb2NhbF9wb3J0PWFyZ3MubG9jYWxfcG9ydCwK
KyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZp
Z3VyYXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4o
YXJncy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5k
dW1wKGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVu
dD00KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHAzX3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE1YjA0
YjAzYzE1NDNmMzYwZDA0Njg4Njk4MzUzNmNlMjVlYWE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkKQEAgLTAsMCArMSw0ODQgQEAKK2lt
cG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBq
c29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IGZvcm1hdGRhdGUKK2Zy
b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBV
bmlvbiwgY2FzdAorCitpbXBvcnQgd3Nwcm90bworaW1wb3J0IHdzcHJvdG8uZXZlbnRzCisKK2lt
cG9ydCBhaW9xdWljCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Q
cm90b2NvbCwgc2VydmUKK2Zyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBO
LCBIMENvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBO
LCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZl
ZCwgSDNFdmVudCwgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBp
bXBvcnQgTm9BdmFpbGFibGVQdXNoSURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBp
bXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBQcm90b2NvbE5lZ290aWF0ZWQsIFF1aWNFdmVu
dAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyLCBRdWljTG9nZ2Vy
VHJhY2UKK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0IFNlc3Npb25UaWNrZXQKKwordHJ5OgorICAg
IGltcG9ydCB1dmxvb3AKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB1dmxvb3AgPSBOb25lCisK
K0FzZ2lBcHBsaWNhdGlvbiA9IENhbGxhYmxlCitIdHRwQ29ubmVjdGlvbiA9IFVuaW9uW0gwQ29u
bmVjdGlvbiwgSDNDb25uZWN0aW9uXQorCitTRVJWRVJfTkFNRSA9ICJhaW9xdWljLyIgKyBhaW9x
dWljLl9fdmVyc2lvbl9fCisKKworY2xhc3MgSHR0cFJlcXVlc3RIYW5kbGVyOgorICAgIGRlZiBf
X2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgYXV0aG9yaXR5OiBi
eXRlcywKKyAgICAgICAgY29ubmVjdGlvbjogSHR0cENvbm5lY3Rpb24sCisgICAgICAgIHByb3Rv
Y29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLAorICAgICAgICBzY29wZTogRGljdCwKKyAgICAg
ICAgc3RyZWFtX2VuZGVkOiBib29sLAorICAgICAgICBzdHJlYW1faWQ6IGludCwKKyAgICAgICAg
dHJhbnNtaXQ6IENhbGxhYmxlW1tdLCBOb25lXSwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuYXV0aG9yaXR5ID0gYXV0aG9yaXR5CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5l
Y3Rpb24KKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisgICAgICAgIHNlbGYucXVl
dWU6IGFzeW5jaW8uUXVldWVbRGljdF0gPSBhc3luY2lvLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5z
Y29wZSA9IHNjb3BlCisgICAgICAgIHNlbGYuc3RyZWFtX2lkID0gc3RyZWFtX2lkCisgICAgICAg
IHNlbGYudHJhbnNtaXQgPSB0cmFuc21pdAorCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAg
ICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5cGUiOiAiaHR0cC5yZXF1ZXN0In0p
CisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4g
Tm9uZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImh0dHAucmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICJib2R5IjogZXZlbnQuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIm1vcmVfYm9keSI6IG5v
dCBldmVudC5zdHJlYW1fZW5kZWQsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50
LnN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCgKKyAgICAg
ICAgICAgICAgICB7InR5cGUiOiAiaHR0cC5yZXF1ZXN0IiwgImJvZHkiOiBiIiIsICJtb3JlX2Jv
ZHkiOiBGYWxzZX0KKyAgICAgICAgICAgICkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxm
LCBhcHA6IEFzZ2lBcHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgYXdhaXQgYXBwbGljYXRp
b24oc2VsZi5zY29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCisKKyAgICBhc3luYyBkZWYg
cmVjZWl2ZShzZWxmKSAtPiBEaWN0OgorICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5xdWV1ZS5n
ZXQoKQorCisgICAgYXN5bmMgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZTogRGljdCkgLT4gTm9uZToK
KyAgICAgICAgaWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnN0YXJ0IjoKKyAg
ICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgc3RyKG1lc3NhZ2VbInN0YXR1cyJdKS5lbmNv
ZGUoKSksCisgICAgICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9OQU1FLmVuY29k
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1l
KCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICsgWyhrLCB2KSBmb3IgaywgdiBpbiBtZXNzYWdlWyJoZWFkZXJzIl1dLAorICAgICAg
ICAgICAgKQorICAgICAgICBlbGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAiaHR0cC5yZXNwb25zZS5i
b2R5IjoKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPXNlbGYuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGRhdGE9bWVz
c2FnZS5nZXQoImJvZHkiLCBiIiIpLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09bm90IG1l
c3NhZ2UuZ2V0KCJtb3JlX2JvZHkiLCBGYWxzZSksCisgICAgICAgICAgICApCisgICAgICAgIGVs
aWYgbWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLnB1c2giIGFuZCBpc2luc3RhbmNl
KAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb24KKyAgICAgICAgKToK
KyAgICAgICAgICAgIHJlcXVlc3RfaGVhZGVycyA9IFsKKyAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAor
ICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzZWxmLmF1dGhvcml0eSksCisgICAgICAg
ICAgICAgICAgKGIiOnBhdGgiLCBtZXNzYWdlWyJwYXRoIl0uZW5jb2RlKCkpLAorICAgICAgICAg
ICAgXSArIFsoaywgdikgZm9yIGssIHYgaW4gbWVzc2FnZVsiaGVhZGVycyJdXQorCisgICAgICAg
ICAgICAjIHNlbmQgcHVzaCBwcm9taXNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgcHVzaF9zdHJlYW1faWQgPSBzZWxmLmNvbm5lY3Rpb24uc2VuZF9wdXNoX3Byb21pc2UoCisg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9pZCwgaGVhZGVycz1yZXF1
ZXN0X2hlYWRlcnMKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgTm9BdmFp
bGFibGVQdXNoSURFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAg
IyBmYWtlIHJlcXVlc3QKKyAgICAgICAgICAgIGNhc3QoSHR0cFNlcnZlclByb3RvY29sLCBzZWxm
LnByb3RvY29sKS5odHRwX2V2ZW50X3JlY2VpdmVkKAorICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1yZXF1ZXN0X2hlYWRlcnMsIHN0
cmVhbV9lbmRlZD1UcnVlLCBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK2NsYXNzIFdl
YlNvY2tldEhhbmRsZXI6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAg
ICAqLAorICAgICAgICBjb25uZWN0aW9uOiBIdHRwQ29ubmVjdGlvbiwKKyAgICAgICAgc2NvcGU6
IERpY3QsCisgICAgICAgIHN0cmVhbV9pZDogaW50LAorICAgICAgICB0cmFuc21pdDogQ2FsbGFi
bGVbW10sIE5vbmVdLAorICAgICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxz
ZQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAgIHNlbGYuaHR0
cF9ldmVudF9xdWV1ZTogRGVxdWVbRGF0YVJlY2VpdmVkXSA9IGRlcXVlKCkKKyAgICAgICAgc2Vs
Zi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0XSA9IGFzeW5jaW8uUXVldWUoKQorICAgICAgICBz
ZWxmLnNjb3BlID0gc2NvcGUKKyAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKKyAg
ICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5zbWl0CisgICAgICAgIHNlbGYud2Vic29ja2V0OiBP
cHRpb25hbFt3c3Byb3RvLkNvbm5lY3Rpb25dID0gTm9uZQorCisgICAgZGVmIGh0dHBfZXZlbnRf
cmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXZlbnQsIERhdGFSZWNlaXZlZCkgYW5kIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAg
ICAgIGlmIHNlbGYud2Vic29ja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYu
d2Vic29ja2V0LnJlY2VpdmVfZGF0YShldmVudC5kYXRhKQorCisgICAgICAgICAgICAgICAgZm9y
IHdzX2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLndlYnNvY2tldF9ldmVudF9yZWNlaXZlZCh3c19ldmVudCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBkZWxheSBldmVudCBwcm9jZXNzaW5nIHVudGlsIHdlIGdl
dCBgd2Vic29ja2V0LmFjY2VwdGAKKyAgICAgICAgICAgICAgICAjIGZyb20gdGhlIEFTR0kgYXBw
bGljYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcXVldWUuYXBwZW5kKGV2
ZW50KQorCisgICAgZGVmIHdlYnNvY2tldF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogd3Nw
cm90by5ldmVudHMuRXZlbnQpIC0+IE5vbmU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQs
IHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0
X25vd2FpdCh7InR5cGUiOiAid2Vic29ja2V0LnJlY2VpdmUiLCAidGV4dCI6IGV2ZW50LmRhdGF9
KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIHdzcHJvdG8uZXZlbnRzLk1lc3NhZ2Up
OgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJzb2NrZXQu
cmVjZWl2ZSIsICJieXRlcyI6IGV2ZW50LmRhdGF9KQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZXZlbnQsIHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgICAgICBzZWxm
LnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5kaXNjb25uZWN0IiwgImNvZGUi
OiBldmVudC5jb2RlfSkKKworICAgIGFzeW5jIGRlZiBydW5fYXNnaShzZWxmLCBhcHA6IEFzZ2lB
cHBsaWNhdGlvbikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlw
ZSI6ICJ3ZWJzb2NrZXQuY29ubmVjdCJ9KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF3
YWl0IGFwcGxpY2F0aW9uKHNlbGYuc2NvcGUsIHNlbGYucmVjZWl2ZSwgc2VsZi5zZW5kKQorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAg
ICAgICAgIGF3YWl0IHNlbGYuc2VuZCh7InR5cGUiOiAid2Vic29ja2V0LmNsb3NlIiwgImNvZGUi
OiAxMDAwfSkKKworICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6CisgICAgICAg
IHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCisKKyAgICBhc3luYyBkZWYgc2VuZChzZWxm
LCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgorICAgICAgICBkYXRhID0gYiIiCisgICAgICAgIGVu
ZF9zdHJlYW0gPSBGYWxzZQorICAgICAgICBpZiBtZXNzYWdlWyJ0eXBlIl0gPT0gIndlYnNvY2tl
dC5hY2NlcHQiOgorICAgICAgICAgICAgc3VicHJvdG9jb2wgPSBtZXNzYWdlLmdldCgic3VicHJv
dG9jb2wiKQorCisgICAgICAgICAgICBzZWxmLndlYnNvY2tldCA9IHdzcHJvdG8uQ29ubmVjdGlv
bih3c3Byb3RvLkNvbm5lY3Rpb25UeXBlLlNFUlZFUikKKworICAgICAgICAgICAgaGVhZGVycyA9
IFsKKyAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAoYiJzZXJ2ZXIiLCBTRVJWRVJfTkFNRS5lbmNvZGUoKSksCisgICAgICAgICAgICAgICAgKGIi
ZGF0ZSIsIGZvcm1hdGRhdGUodGltZS50aW1lKCksIHVzZWdtdD1UcnVlKS5lbmNvZGUoKSksCisg
ICAgICAgICAgICBdCisgICAgICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCgoYiJzZWMtd2Vic29ja2V0LXByb3RvY29sIiwg
c3VicHJvdG9jb2wuZW5jb2RlKCkpKQorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRf
aGVhZGVycyhzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9aGVhZGVycykKKworICAg
ICAgICAgICAgIyBjb25zdW1lIGJhY2tsb2cKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuaHR0cF9l
dmVudF9xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoc2Vs
Zi5odHRwX2V2ZW50X3F1ZXVlLnBvcGxlZnQoKSkKKworICAgICAgICBlbGlmIG1lc3NhZ2VbInR5
cGUiXSA9PSAid2Vic29ja2V0LmNsb3NlIjoKKyAgICAgICAgICAgIGlmIHNlbGYud2Vic29ja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5k
KAorICAgICAgICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5DbG9zZUNvbm5lY3Rpb24oY29k
ZT1tZXNzYWdlWyJjb2RlIl0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKAorICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGhlYWRlcnM9WyhiIjpzdGF0dXMi
LCBiIjQwMyIpXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVuZF9zdHJlYW0gPSBU
cnVlCisgICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuc2VuZCI6Cisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmdldCgidGV4dCIpIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAgICAgICAgICAgICAgICB3
c3Byb3RvLmV2ZW50cy5UZXh0TWVzc2FnZShkYXRhPW1lc3NhZ2VbInRleHQiXSkKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICBlbGlmIG1lc3NhZ2UuZ2V0KCJieXRlcyIpIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAorICAgICAg
ICAgICAgICAgICAgICB3c3Byb3RvLmV2ZW50cy5NZXNzYWdlKGRhdGE9bWVzc2FnZVsiYnl0ZXMi
XSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgIHNl
bGYuY29ubmVjdGlvbi5zZW5kX2RhdGEoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXNlbGYu
c3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbQorICAgICAgICAgICAg
KQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVl
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisKK0hhbmRsZXIgPSBVbmlvbltIdHRwUmVxdWVz
dEhhbmRsZXIsIFdlYlNvY2tldEhhbmRsZXJdCisKKworY2xhc3MgSHR0cFNlcnZlclByb3RvY29s
KFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpIC0+IE5vbmU6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dh
cmdzKQorICAgICAgICBzZWxmLl9oYW5kbGVyczogRGljdFtpbnQsIEhhbmRsZXJdID0ge30KKyAg
ICAgICAgc2VsZi5faHR0cDogT3B0aW9uYWxbSHR0cENvbm5lY3Rpb25dID0gTm9uZQorCisgICAg
ZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgzRXZlbnQpIC0+IE5vbmU6Cisg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCkgYW5kIGV2ZW50LnN0
cmVhbV9pZCBub3QgaW4gc2VsZi5faGFuZGxlcnM6CisgICAgICAgICAgICBhdXRob3JpdHkgPSBO
b25lCisgICAgICAgICAgICBoZWFkZXJzID0gW10KKyAgICAgICAgICAgIGh0dHBfdmVyc2lvbiA9
ICIwLjkiIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDBDb25uZWN0aW9uKSBlbHNlICIzIgor
ICAgICAgICAgICAgcmF3X3BhdGggPSBiIiIKKyAgICAgICAgICAgIG1ldGhvZCA9ICIiCisgICAg
ICAgICAgICBwcm90b2NvbCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBoZWFkZXIsIHZhbHVlIGlu
IGV2ZW50LmhlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOmF1dGhvcml0
eSI6CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IHZhbHVlCisgICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnMuYXBwZW5kKChiImhvc3QiLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAg
ZWxpZiBoZWFkZXIgPT0gYiI6bWV0aG9kIjoKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0g
dmFsdWUuZGVjb2RlKCkKKyAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjpwYXRoIjoK
KyAgICAgICAgICAgICAgICAgICAgcmF3X3BhdGggPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVs
aWYgaGVhZGVyID09IGIiOnByb3RvY29sIjoKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wg
PSB2YWx1ZS5kZWNvZGUoKQorICAgICAgICAgICAgICAgIGVsaWYgaGVhZGVyIGFuZCBub3QgaGVh
ZGVyLnN0YXJ0c3dpdGgoYiI6Iik6CisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5k
KChoZWFkZXIsIHZhbHVlKSkKKworICAgICAgICAgICAgaWYgYiI/IiBpbiByYXdfcGF0aDoKKyAg
ICAgICAgICAgICAgICBwYXRoX2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aC5zcGxpdChi
Ij8iLCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXRo
X2J5dGVzLCBxdWVyeV9zdHJpbmcgPSByYXdfcGF0aCwgYiIiCisgICAgICAgICAgICBwYXRoID0g
cGF0aF9ieXRlcy5kZWNvZGUoKQorCisgICAgICAgICAgICAjIEZJWE1FOiBhZGQgYSBwdWJsaWMg
QVBJIHRvIHJldHJpZXZlIHBlZXIgYWRkcmVzcworICAgICAgICAgICAgY2xpZW50X2FkZHIgPSBz
ZWxmLl9odHRwLl9xdWljLl9uZXR3b3JrX3BhdGhzWzBdLmFkZHIKKyAgICAgICAgICAgIGNsaWVu
dCA9IChjbGllbnRfYWRkclswXSwgY2xpZW50X2FkZHJbMV0pCisKKyAgICAgICAgICAgIGhhbmRs
ZXI6IEhhbmRsZXIKKyAgICAgICAgICAgIHNjb3BlOiBEaWN0CisgICAgICAgICAgICBpZiBtZXRo
b2QgPT0gIkNPTk5FQ1QiIGFuZCBwcm90b2NvbCA9PSAid2Vic29ja2V0IjoKKyAgICAgICAgICAg
ICAgICBzdWJwcm90b2NvbHM6IExpc3Rbc3RyXSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGhl
YWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVh
ZGVyID09IGIic2VjLXdlYnNvY2tldC1wcm90b2NvbCI6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJwcm90b2NvbHMgPSBbeC5zdHJpcCgpIGZvciB4IGluIHZhbHVlLmRlY29kZSgpLnNwbGl0
KCIsIildCisgICAgICAgICAgICAgICAgc2NvcGUgPSB7CisgICAgICAgICAgICAgICAgICAgICJj
bGllbnQiOiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgInBh
dGgiOiBwYXRoLAorICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3Ry
aW5nLAorICAgICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgInJvb3RfcGF0aCI6ICIiLAorICAgICAgICAgICAgICAgICAgICAic2NoZW1l
IjogIndzcyIsCisgICAgICAgICAgICAgICAgICAgICJzdWJwcm90b2NvbHMiOiBzdWJwcm90b2Nv
bHMsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIndlYnNvY2tldCIsCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBXZWJTb2NrZXRIYW5kbGVyKAorICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAgICAg
ICAgIHNjb3BlPXNjb3BlLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uczogRGljdFtzdHIsIERpY3RdID0ge30KKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHNlbGYuX2h0dHAsIEgzQ29ubmVjdGlvbik6CisgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnNbImh0dHAucmVzcG9uc2UucHVzaCJdID0ge30KKyAgICAgICAgICAgICAgICBzY29wZSA9IHsK
KyAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVuc2lvbnMiOiBleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVy
cyI6IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICJodHRwX3ZlcnNpb24iOiBodHRwX3Zl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICJtZXRob2QiOiBtZXRob2QsCisgICAgICAgICAg
ICAgICAgICAgICJwYXRoIjogcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5X3N0cmlu
ZyI6IHF1ZXJ5X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgInJhd19wYXRoIjogcmF3X3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICJyb290X3BhdGgiOiAiIiwKKyAgICAgICAgICAgICAg
ICAgICAgInNjaGVtZSI6ICJodHRwcyIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImh0
dHAiLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gSHR0cFJl
cXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHk9YXV0aG9yaXR5LAor
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPXNlbGYuX2h0dHAsCisgICAgICAgICAgICAg
ICAgICAgIHByb3RvY29sPXNlbGYsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlPXNjb3BlLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9ZXZlbnQuc3RyZWFtX2VuZGVkLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICB0cmFuc21pdD1zZWxmLnRyYW5zbWl0LAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVhbV9pZF0gPSBoYW5kbGVyCisgICAgICAg
ICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoaGFuZGxlci5ydW5fYXNnaShhcHBsaWNhdGlvbikp
CisgICAgICAgIGVsaWYgKAorICAgICAgICAgICAgaXNpbnN0YW5jZShldmVudCwgKERhdGFSZWNl
aXZlZCwgSGVhZGVyc1JlY2VpdmVkKSkKKyAgICAgICAgICAgIGFuZCBldmVudC5zdHJlYW1faWQg
aW4gc2VsZi5faGFuZGxlcnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxm
Ll9oYW5kbGVyc1tldmVudC5zdHJlYW1faWRdCisgICAgICAgICAgICBoYW5kbGVyLmh0dHBfZXZl
bnRfcmVjZWl2ZWQoZXZlbnQpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBQ
cm90b2NvbE5lZ290aWF0ZWQpOgorICAgICAgICAgICAgaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5z
dGFydHN3aXRoKCJoMy0iKToKKyAgICAgICAgICAgICAgICBzZWxmLl9odHRwID0gSDNDb25uZWN0
aW9uKHNlbGYuX3F1aWMpCisgICAgICAgICAgICBlbGlmIGV2ZW50LmFscG5fcHJvdG9jb2wuc3Rh
cnRzd2l0aCgiaHEtIik6CisgICAgICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVjdGlv
bihzZWxmLl9xdWljKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIERhdGFncmFtRnJh
bWVSZWNlaXZlZCk6CisgICAgICAgICAgICBpZiBldmVudC5kYXRhID09IGIicXVhY2siOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShiInF1YWNrLWFjayIp
CisKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKKyAgICAgICAgaWYg
c2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBodHRwX2V2ZW50IGluIHNl
bGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmh0dHBf
ZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6
CisgICAgIiIiCisgICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lvbiB0aWNrZXRz
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYudGlj
a2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAorCisgICAgZGVmIHBvcChzZWxmLCBsYWJlbDog
Ynl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitjbGFzcyBRdWljTG9nZ2VyQ3VzdG9tKFF1aWNM
b2dnZXIpOgorICAgICIiIgorICAgIEN1c3RvbSBRVUlDIGxvZ2dlciB3aGljaCB3cml0ZXMgb25l
IHRyYWNlIHBlciBmaWxlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg6
IHN0cikgLT4gTm9uZToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJRVUlDIGxvZyBvdXRwdXQgZGlyZWN0b3J5ICclcycg
ZG9lcyBub3QgZXhpc3QiICUgcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgIGRlZiBlbmRfdHJhY2Uoc2VsZiwgdHJhY2U6IFF1
aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKKyAgICAgICAgdHJhY2VfZGljdCA9IHRyYWNlLnRvX2Rp
Y3QoKQorICAgICAgICB0cmFjZV9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgc2Vs
Zi5wYXRoLCB0cmFjZV9kaWN0WyJjb21tb25fZmllbGRzIl1bIk9EQ0lEIl0gKyAiLnFsb2ciCisg
ICAgICAgICkKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX3BhdGgsICJ3IikgYXMgbG9nZ2VyX2Zw
OgorICAgICAgICAgICAganNvbi5kdW1wKHsicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwgInRy
YWNlcyI6IFt0cmFjZV9kaWN0XX0sIGxvZ2dlcl9mcCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLnJl
bW92ZSh0cmFjZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJRVUlDIHNlcnZlciIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgImFwcCIsCisgICAgICAgIHR5cGU9c3RyLAor
ICAgICAgICBuYXJncz0iPyIsCisgICAgICAgIGRlZmF1bHQ9ImRlbW86YXBwIiwKKyAgICAgICAg
aGVscD0idGhlIEFTR0kgYXBwbGljYXRpb24gYXMgPG1vZHVsZT46PGF0dHJpYnV0ZT4iLAorICAg
ICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLWMiLAorICAgICAgICAiLS1j
ZXJ0aWZpY2F0ZSIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZD1UcnVlLAor
ICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVk
IGZpbGUiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1ob3N0
IiwKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIGRlZmF1bHQ9Ijo6IiwKKyAgICAgICAgaGVs
cD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0tcG9ydCIsCisgICAgICAg
IHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTQ0MzMsCisgICAgICAgIGhlbHA9Imxpc3RlbiBv
biB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ0MzMpIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0tcHJpdmF0ZS1rZXki
LAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgaGVs
cD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1sIiwKKyAgICAgICAgIi0t
c2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgaGVscD0ibG9nIHNlY3Jl
dHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAgICApCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVs
cD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKKyAgICApCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAgICAgIi0tc3RhdGVsZXNz
LXJldHJ5IiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0ic2Vu
ZCBhIHN0YXRlbGVzcyByZXRyeSBmb3IgbmV3IGNvbm5lY3Rpb25zIiwKKyAgICApCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5IgorICAgICkKKyAgICBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAg
ICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2Fn
ZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBs
b2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBpbXBvcnQgQVNHSSBhcHBsaWNhdGlvbgorICAg
IG1vZHVsZV9zdHIsIGF0dHJfc3RyID0gYXJncy5hcHAuc3BsaXQoIjoiLCBtYXhzcGxpdD0xKQor
ICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9zdHIpCisgICAgYXBw
bGljYXRpb24gPSBnZXRhdHRyKG1vZHVsZSwgYXR0cl9zdHIpCisKKyAgICAjIGNyZWF0ZSBRVUlD
IGxvZ2dlcgorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIHF1aWNfbG9nZ2VyID0gUXVp
Y0xvZ2dlckN1c3RvbShhcmdzLnF1aWNfbG9nKQorICAgIGVsc2U6CisgICAgICAgIHF1aWNfbG9n
Z2VyID0gTm9uZQorCisgICAgIyBvcGVuIFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0
c19sb2c6CisgICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2cs
ICJhIikKKyAgICBlbHNlOgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBhbHBuX3Byb3RvY29s
cz1IM19BTFBOICsgSDBfQUxQTiArIFsic2lkdWNrIl0sCisgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCisgICAgICAgIHF1aWNf
bG9nZ2VyPXF1aWNfbG9nZ2VyLAorICAgICAgICBzZWNyZXRzX2xvZ19maWxlPXNlY3JldHNfbG9n
X2ZpbGUsCisgICAgKQorCisgICAgIyBsb2FkIFNTTCBjZXJ0aWZpY2F0ZSBhbmQga2V5CisgICAg
Y29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oYXJncy5jZXJ0aWZpY2F0ZSwgYXJncy5wcml2
YXRlX2tleSkKKworICAgIHRpY2tldF9zdG9yZSA9IFNlc3Npb25UaWNrZXRTdG9yZSgpCisKKyAg
ICBpZiB1dmxvb3AgaXMgbm90IE5vbmU6CisgICAgICAgIHV2bG9vcC5pbnN0YWxsKCkKKyAgICBs
b29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgbG9vcC5ydW5fdW50aWxfY29tcGxl
dGUoCisgICAgICAgIHNlcnZlKAorICAgICAgICAgICAgYXJncy5ob3N0LAorICAgICAgICAgICAg
YXJncy5wb3J0LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgY3JlYXRlX3Byb3RvY29sPUh0dHBTZXJ2ZXJQcm90b2NvbCwKKyAgICAgICAgICAg
IHNlc3Npb25fdGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKKyAgICAgICAgICAgIHNl
c3Npb25fdGlja2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKKyAgICAgICAgICAgIHN0YXRl
bGVzc19yZXRyeT1hcmdzLnN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgKQorICAgICkKKyAgICB0
cnk6CisgICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0
dHB4X2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMyOTk5ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRweF9jbGllbnQucHkKQEAgLTAs
MCArMSwyMTMgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29u
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUK
K2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUs
IERpY3QsIGNhc3QKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCitmcm9tIGh0
dHB4IGltcG9ydCBBc3luY0NsaWVudAorZnJvbSBodHRweC5jb25maWcgaW1wb3J0IFRpbWVvdXQK
K2Zyb20gaHR0cHguZGlzcGF0Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRjaGVyCitmcm9tIGh0
dHB4Lm1vZGVscyBpbXBvcnQgUmVxdWVzdCwgUmVzcG9uc2UKKworZnJvbSBhaW9xdWljLmFzeW5j
aW8uY2xpZW50IGltcG9ydCBjb25uZWN0Citmcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAorZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24g
aW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBv
cnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGlt
cG9ydCBRdWljTG9nZ2VyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQor
CisKK2NsYXNzIEgzRGlzcGF0Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29sLCBBc3luY0Rpc3Bh
dGNoZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9odHRw
ID0gSDNDb25uZWN0aW9uKHNlbGYuX3F1aWMpCisgICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRz
OiBEaWN0W2ludCwgRGVxdWVbSDNFdmVudF1dID0ge30KKyAgICAgICAgc2VsZi5fcmVxdWVzdF93
YWl0ZXI6IERpY3RbaW50LCBhc3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KKwor
ICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRpbWVvdXQ6IFRpbWVv
dXQgPSBOb25lKSAtPiBSZXNwb25zZToKKyAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKworICAgICAgICAjIHByZXBhcmUgcmVxdWVz
dAorICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgcmVxdWVzdC5tZXRob2QuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCByZXF1ZXN0LnVybC5zY2hlbWUuZW5jb2RlKCkpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBzdHIocmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNvZGUoKSksCisgICAg
ICAgICAgICAgICAgKGIiOnBhdGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2RlKCkpLAor
ICAgICAgICAgICAgXQorICAgICAgICAgICAgKyBbCisgICAgICAgICAgICAgICAgKGsuZW5jb2Rl
KCksIHYuZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiByZXF1ZXN0Lmhl
YWRlcnMuaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIGsgbm90IGluICgiY29ubmVjdGlvbiIs
ICJob3N0IikKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5faHR0cC5z
ZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJlYWQoKSwgZW5kX3N0
cmVhbT1UcnVlKQorCisgICAgICAgICMgdHJhbnNtaXQgcmVxdWVzdAorICAgICAgICB3YWl0ZXIg
PSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50
c1tzdHJlYW1faWRdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJl
YW1faWRdID0gd2FpdGVyCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgICAgICMgcHJv
Y2VzcyByZXNwb25zZQorICAgICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRdID0gYXdhaXQgYXN5
bmNpby5zaGllbGQod2FpdGVyKQorICAgICAgICBjb250ZW50ID0gYiIiCisgICAgICAgIGhlYWRl
cnMgPSBbXQorICAgICAgICBzdGF0dXNfY29kZSA9IE5vbmUKKyAgICAgICAgZm9yIGV2ZW50IGlu
IGV2ZW50czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoK
KyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXJbMDoxXSAhPSBiIjoiOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUuZGVjb2RlKCkpKQor
ICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgKz0gZXZlbnQuZGF0YQorCisgICAgICAgIHJldHVybiBSZXNwb25z
ZSgKKyAgICAgICAgICAgIHN0YXR1c19jb2RlPXN0YXR1c19jb2RlLAorICAgICAgICAgICAgaHR0
cF92ZXJzaW9uPSJIVFRQLzMiLAorICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAorICAgICAg
ICAgICAgY29udGVudD1jb250ZW50LAorICAgICAgICAgICAgcmVxdWVzdD1yZXF1ZXN0LAorICAg
ICAgICApCisKKyAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVu
dCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFS
ZWNlaXZlZCkpOgorICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCisgICAg
ICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6CisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQp
CisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RyZWFtX2VuZGVkOgorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0X3dhaXRlciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQp
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVx
dWVzdF9ldmVudHMucG9wKHN0cmVhbV9pZCkpCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZl
ZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKKyAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhl
IEhUVFAgbGF5ZXIKKyAgICAgICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGZvciBodHRwX2V2ZW50IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKKyAg
ICAgICAgICAgICAgICBzZWxmLmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKKworCitk
ZWYgc2F2ZV9zZXNzaW9uX3RpY2tldCh0aWNrZXQpOgorICAgICIiIgorICAgIENhbGxiYWNrIHdo
aWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tl
dAorICAgIGlzIHJlY2VpdmVkLgorICAgICIiIgorICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lv
biB0aWNrZXQgcmVjZWl2ZWQiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6CisgICAgICAg
IHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAg
IHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9u
OiBRdWljQ29uZmlndXJhdGlvbiwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4gTm9uZToKKyAgICAj
IHBhcnNlIFVSTAorICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKyAgICBhc3NlcnQgcGFyc2Vk
LnNjaGVtZSA9PSAiaHR0cHMiLCAiT25seSBodHRwczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgor
ICAgIGlmICI6IiBpbiBwYXJzZWQubmV0bG9jOgorICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBh
cnNlZC5uZXRsb2Muc3BsaXQoIjoiKQorICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQorICAg
IGVsc2U6CisgICAgICAgIGhvc3QgPSBwYXJzZWQubmV0bG9jCisgICAgICAgIHBvcnQgPSA0NDMK
KworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgaG9zdCwKKyAgICAgICAgcG9ydCwK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJv
dG9jb2w9SDNEaXNwYXRjaGVyLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVf
c2Vzc2lvbl90aWNrZXQsCisgICAgKSBhcyBkaXNwYXRjaDoKKyAgICAgICAgY2xpZW50ID0gQXN5
bmNDbGllbnQoZGlzcGF0Y2g9Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3BhdGNoKSkKKworICAg
ICAgICAjIHBlcmZvcm0gcmVxdWVzdAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNs
aWVudC5wb3N0KAorICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICBkYXRhPWRh
dGEuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCisK
KyAgICAgICAgZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICAjIHByaW50
IHNwZWVkCisgICAgICAgIG9jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50KQorICAgICAgICBs
b2dnZXIuaW5mbygKKyAgICAgICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUu
M2YgTWJwcykiCisgICAgICAgICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9jdGV0cyAqIDggLyBl
bGFwc2VkIC8gMTAwMDAwMCkKKyAgICAgICAgKQorCisgICAgICAgICMgcHJpbnQgcmVzcG9uc2UK
KyAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVycy5pdGVtcygpOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsgdmFsdWUgKyAiXHJc
biIpCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlxyXG4iKQorICAgICAgICBzeXMuc3Rkb3V0
LmJ1ZmZlci53cml0ZShyZXNwb25zZS5jb250ZW50KQorICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZl
ci5mbHVzaCgpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRoZSBVUkwgdG8gcXVl
cnkgKG11c3QgYmUgSFRUUFMpIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGlu
IGEgUE9TVCByZXF1ZXN0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAg
ICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8g
YSBmaWxlIGluIFFMT0cgZm9ybWF0IgorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAor
ICAgICAgICAiLWwiLAorICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCisgICAgICAgIHR5cGU9c3Ry
LAorICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJl
c2hhcmsiLAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXMiLAor
ICAgICAgICAiLS1zZXNzaW9uLXRpY2tldCIsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBo
ZWxwPSJyZWFkIGFuZCB3cml0ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmls
ZSIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICItLXZl
cmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJv
c2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgbG9n
Z2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFt
ZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBp
ZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBwcmVwYXJl
IGNvbmZpZ3VyYXRpb24KKyAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUsIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4pCisgICAgaWYgYXJncy5xdWljX2xv
ZzoKKyAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQorICAg
IGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2df
ZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQorICAgIGlmIGFyZ3Muc2Vzc2lvbl90
aWNrZXQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25f
dGlja2V0LCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Np
b25fdGlja2V0ID0gcGlja2xlLmxvYWQoZnApCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRF
cnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9s
b29wKCkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAg
ICAgICAgcnVuKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFyZ3MudXJsLCBkYXRh
PWFyZ3MuZGF0YSkKKyAgICAgICAgKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24ucXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aXRoIG9wZW4oYXJn
cy5xdWljX2xvZywgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAganNvbi5kdW1w
KGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmFkMjBiNjZiNGI3NTEzZWNl
YTZiYTMzZDM3NGE0OTVlNGU1MmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2ludGVyb3AucHkKQEAgLTAsMCArMSw1MzIgQEAKKyMKKyMgISEhIFdBUk5JTkcgISEh
CisjCisjIFRoaXMgZXhhbXBsZSB1c2VzIHNvbWUgcHJpdmF0ZSBBUElzLgorIworCitpbXBvcnQg
YXJncGFyc2UKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBzc2wKK2ltcG9ydCB0aW1lCitmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3Ms
IGZpZWxkCitmcm9tIGVudW0gaW1wb3J0IEZsYWcKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25h
bCwgY2FzdAorCitpbXBvcnQgcmVxdWVzdHMKK2ltcG9ydCB1cmxsaWIzCitmcm9tIGh0dHAzX2Ns
aWVudCBpbXBvcnQgSHR0cENsaWVudAorCitmcm9tIGFpb3F1aWMuYXN5bmNpbyBpbXBvcnQgY29u
bmVjdAorZnJvbSBhaW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4KK2Zyb20gYWlv
cXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rpb24KK2Zyb20gYWlv
cXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNo
UHJvbWlzZVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBR
dWljQ29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9n
Z2VyCisKKworY2xhc3MgUmVzdWx0KEZsYWcpOgorICAgIFYgPSAweDAwMDAwMQorICAgIEggPSAw
eDAwMDAwMgorICAgIEQgPSAweDAwMDAwNAorICAgIEMgPSAweDAwMDAwOAorICAgIFIgPSAweDAw
MDAxMAorICAgIFogPSAweDAwMDAyMAorICAgIFMgPSAweDAwMDA0MAorICAgIFEgPSAweDAwMDA4
MAorCisgICAgTSA9IDB4MDAwMTAwCisgICAgQiA9IDB4MDAwMjAwCisgICAgQSA9IDB4MDAwNDAw
CisgICAgVSA9IDB4MDAwODAwCisgICAgUCA9IDB4MDAxMDAwCisgICAgRSA9IDB4MDAyMDAwCisg
ICAgTCA9IDB4MDA0MDAwCisgICAgVCA9IDB4MDA4MDAwCisKKyAgICB0aHJlZSA9IDB4MDEwMDAw
CisgICAgZCA9IDB4MDIwMDAwCisgICAgcCA9IDB4MDQwMDAwCisKKyAgICBkZWYgX19zdHJfXyhz
ZWxmKToKKyAgICAgICAgZmxhZ3MgPSBzb3J0ZWQoCisgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgbGFtYmRhIHg6IGdldGF0dHIoUmVzdWx0LCB4KSwKKyAgICAgICAgICAgICAgICBm
aWx0ZXIobGFtYmRhIHg6IG5vdCB4LnN0YXJ0c3dpdGgoIl8iKSwgZGlyKFJlc3VsdCkpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogeC52YWx1ZSwKKyAgICAgICAg
KQorICAgICAgICByZXN1bHRfc3RyID0gIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6Cisg
ICAgICAgICAgICBpZiBzZWxmICYgZmxhZzoKKyAgICAgICAgICAgICAgICByZXN1bHRfc3RyICs9
IGZsYWcubmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHRfc3Ry
ICs9ICItIgorICAgICAgICByZXR1cm4gcmVzdWx0X3N0cgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFNlcnZlcjoKKyAgICBuYW1lOiBzdHIKKyAgICBob3N0OiBzdHIKKyAgICBwb3J0OiBpbnQgPSA0
NDMzCisgICAgaHR0cDM6IGJvb2wgPSBUcnVlCisgICAgcmV0cnlfcG9ydDogT3B0aW9uYWxbaW50
XSA9IDQ0MzQKKyAgICBwYXRoOiBzdHIgPSAiLyIKKyAgICBwdXNoX3BhdGg6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgcmVzdWx0OiBSZXN1bHQgPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGFt
YmRhOiBSZXN1bHQoMCkpCisgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgc3RydWN0dXJlZF9sb2dnaW5nOiBib29sID0gRmFsc2UKKyAgICB0aHJv
dWdocHV0X2ZpbGVfc3VmZml4OiBzdHIgPSAiIgorICAgIHZlcmlmeV9tb2RlOiBPcHRpb25hbFtp
bnRdID0gTm9uZQorCisKK1NFUlZFUlMgPSBbCisgICAgU2VydmVyKCJha2FtYWlxdWljIiwgImll
dGYuYWthcXVpYy5jb20iLCBwb3J0PTQ0MywgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCisg
ICAgU2VydmVyKAorICAgICAgICAiYWlvcXVpYyIsICJxdWljLmFpb3J0Yy5vcmciLCBwb3J0PTQ0
MywgcHVzaF9wYXRoPSIvIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKKyAgICApLAorICAgIFNl
cnZlcigiYXRzIiwgInF1aWMub2dyZS5jb20iKSwKKyAgICBTZXJ2ZXIoImY1IiwgImY1cXVpYy5j
b20iLCByZXRyeV9wb3J0PTQ0MzMpLAorICAgIFNlcnZlcigiaGFza2VsbCIsICJtZXcub3JnIiwg
cmV0cnlfcG9ydD00NDMzKSwKKyAgICBTZXJ2ZXIoImdxdWljIiwgInF1aWMucm9ja3MiLCByZXRy
eV9wb3J0PU5vbmUpLAorICAgIFNlcnZlcigibHNxdWljIiwgImh0dHAzLXRlc3QubGl0ZXNwZWVk
dGVjaC5jb20iLCBwdXNoX3BhdGg9Ii8yMDA/cHVzaD0vMTAwIiksCisgICAgU2VydmVyKAorICAg
ICAgICAibXNxdWljIiwKKyAgICAgICAgInF1aWMud2VzdHVzLmNsb3VkYXBwLmF6dXJlLmNvbSIs
CisgICAgICAgIHBvcnQ9NDQzMywKKyAgICAgICAgc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQ9NDQz
MywKKyAgICAgICAgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUsCisgICAgICAgIHRocm91Z2hwdXRf
ZmlsZV9zdWZmaXg9Ii50eHQiLAorICAgICAgICB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FLAor
ICAgICksCisgICAgU2VydmVyKAorICAgICAgICAibXZmc3QiLCAiZmIubXZmc3QubmV0IiwgcG9y
dD00NDMsIHB1c2hfcGF0aD0iL3B1c2giLCBzdHJ1Y3R1cmVkX2xvZ2dpbmc9VHJ1ZQorICAgICks
CisgICAgU2VydmVyKCJuZ3RjcDIiLCAibmdodHRwMi5vcmciLCBwdXNoX3BhdGg9Ii8/cHVzaD0v
MTAwIiksCisgICAgU2VydmVyKCJuZ3hfcXVpYyIsICJjbG91ZGZsYXJlLXF1aWMuY29tIiwgcG9y
dD00NDMsIHJldHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInBhbmRvcmEiLCAicGFuZG9yYS5j
bS5pbi50dW0uZGUiLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKSwKKyAgICBTZXJ2ZXIoInBp
Y29xdWljIiwgInRlc3QucHJpdmF0ZW9jdG9wdXMuY29tIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRy
dWUpLAorICAgIFNlcnZlcigicXVhbnQiLCAicXVhbnQuZWdnZXJ0Lm9yZyIsIGh0dHAzPUZhbHNl
KSwKKyAgICBTZXJ2ZXIoInF1aWMtZ28iLCAicXVpYy5zZWVtYW5uLmlvIiwgcG9ydD00NDMsIHJl
dHJ5X3BvcnQ9NDQzKSwKKyAgICBTZXJ2ZXIoInF1aWNoZSIsICJxdWljLnRlY2giLCBwb3J0PTg0
NDMsIHJldHJ5X3BvcnQ9ODQ0NCksCisgICAgU2VydmVyKCJxdWljbHkiLCAicXVpYy5leGFtcDFl
Lm5ldCIpLAorICAgIFNlcnZlcigicXVpbm4iLCAicmFsaXRoLmNvbSIpLAorXQorCisKK2FzeW5j
IGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRpb24oc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRp
b246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICAjIGZvcmNlIHZlcnNpb24gbmVnb3RpYXRpb24K
KyAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0
QSkKKworICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInZlcnNpb25f
bmVnb3RpYXRpb24iCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1
bHQgfD0gUmVzdWx0LlYKKworCithc3luYyBkZWYgdGVzdF9oYW5kc2hha2VfYW5kX2Nsb3NlKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgYXN5
bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0
IHByb3RvY29sLnBpbmcoKQorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ICisgICAg
c2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQworCisKK2FzeW5jIGRlZiB0ZXN0X3N0YXRlbGVzc19y
ZXRyeShzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgor
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5yZXRy
eV9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZworICAg
ICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBldmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1
aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAgICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1b
ImV2ZW50cyJdOgorICAgICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID09
ICJ0cmFuc3BvcnQiCisgICAgICAgICAgICAgICAgYW5kIGV2ZW50ID09ICJwYWNrZXRfcmVjZWl2
ZWQiCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbInBhY2tldF90eXBlIl0gPT0gInJldHJ5Igor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5T
CisKKworYXN5bmMgZGVmIHRlc3RfcXVhbnR1bV9yZWFkaW5lc3Moc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBjb25maWd1cmF0aW9uLnF1YW50
dW1fcmVhZGluZXNzX3Rlc3QgPSBUcnVlCisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAg
ICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQorICAgICAg
ICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5RCisKKworYXN5bmMgZGVmIHRlc3RfaHR0cF8wKHNl
cnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgaWYg
c2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBjb25maWd1cmF0aW9u
LmFscG5fcHJvdG9jb2xzID0gSDBfQUxQTgorICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAg
ICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAgICAgICBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAor
ICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBw
cm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0CisgICAgICAgIGV2ZW50
cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZv
cm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICApCisg
ICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZl
ZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5ECisKKworYXN5bmMgZGVm
IHRlc3RfaHR0cF8zKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJh
dGlvbik6CisgICAgaWYgc2VydmVyLnBhdGggaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDNfQUxQTgorICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgIHNlcnZlci5wb3J0LAorICAg
ICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIGNyZWF0ZV9wcm90b2Nv
bD1IdHRwQ2xpZW50LAorICAgICkgYXMgcHJvdG9jb2w6CisgICAgICAgIHByb3RvY29sID0gY2Fz
dChIdHRwQ2xpZW50LCBwcm90b2NvbCkKKworICAgICAgICAjIHBlcmZvcm0gSFRUUCByZXF1ZXN0
CisgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAgICAgICAgICJodHRw
czovL3t9Ont9e30iLmZvcm1hdChzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRo
KQorICAgICAgICApCisgICAgICAgIGlmIGV2ZW50cyBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0s
IEhlYWRlcnNSZWNlaXZlZCk6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5E
CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC50aHJlZQorCisgICAgICAgICMg
cGVyZm9ybSBtb3JlIEhUVFAgcmVxdWVzdHMgdG8gdXNlIFFQQUNLIGR5bmFtaWMgdGFibGVzCisg
ICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgZXZlbnRzID0gYXdhaXQgcHJv
dG9jb2wuZ2V0KAorICAgICAgICAgICAgICAgICJodHRwczovL3t9Ont9e30iLmZvcm1hdChzZXJ2
ZXIuaG9zdCwgc2VydmVyLnBvcnQsIHNlcnZlci5wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgor
ICAgICAgICAgICAgaHR0cCA9IGNhc3QoSDNDb25uZWN0aW9uLCBwcm90b2NvbC5faHR0cCkKKyAg
ICAgICAgICAgIHByb3RvY29sLl9xdWljLl9sb2dnZXIuaW5mbygKKyAgICAgICAgICAgICAgICAi
UVBBQ0sgZGVjb2RlciBieXRlcyBSWCAlZCBUWCAlZCIsCisgICAgICAgICAgICAgICAgaHR0cC5f
ZGVjb2Rlcl9ieXRlc19yZWNlaXZlZCwKKyAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5
dGVzX3NlbnQsCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5fcXVpYy5fbG9n
Z2VyLmluZm8oCisgICAgICAgICAgICAgICAgIlFQQUNLIGVuY29kZXIgYnl0ZXMgUlggJWQgVFgg
JWQiLAorICAgICAgICAgICAgICAgIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQsCisgICAg
ICAgICAgICAgICAgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50LAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNfcmVjZWl2
ZWQKKyAgICAgICAgICAgICAgICBhbmQgaHR0cC5fZGVjb2Rlcl9ieXRlc19zZW50CisgICAgICAg
ICAgICAgICAgYW5kIGh0dHAuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAg
ICBhbmQgaHR0cC5fZW5jb2Rlcl9ieXRlc19zZW50CisgICAgICAgICAgICApOgorICAgICAgICAg
ICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LmQKKworICAgICAgICAjIGNoZWNrIHB1c2gg
c3VwcG9ydAorICAgICAgICBpZiBzZXJ2ZXIucHVzaF9wYXRoIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgcHJvdG9jb2wucHVzaGVzLmNsZWFyKCkKKyAgICAgICAgICAgIGF3YWl0IHByb3RvY29s
LmdldCgKKyAgICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucHVzaF9wYXRoKQorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjUpCisgICAgICAgICAgICBmb3IgcHVzaF9pZCwg
ZXZlbnRzIGluIHByb3RvY29sLnB1c2hlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICAgICAgbGVuKGV2ZW50cykgPj0gMworICAgICAgICAgICAgICAgICAg
ICBhbmQgaXNpbnN0YW5jZShldmVudHNbMF0sIFB1c2hQcm9taXNlUmVjZWl2ZWQpCisgICAgICAg
ICAgICAgICAgICAgIGFuZCBpc2luc3RhbmNlKGV2ZW50c1sxXSwgSGVhZGVyc1JlY2VpdmVkKQor
ICAgICAgICAgICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShldmVudHNbMl0sIERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5fcXVp
Yy5fbG9nZ2VyLmluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICAiUHVzaCBwcm9taXNlICVk
IGZvciAlcyByZWNlaXZlZCAoc3RhdHVzICVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgZGljdChldmVudHNbMF0uaGVhZGVycylb
YiI6cGF0aCJdLmRlY29kZSgiYXNjaWkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludChk
aWN0KGV2ZW50c1sxXS5oZWFkZXJzKVtiIjpzdGF0dXMiXSksCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5wCisKKwor
YXN5bmMgZGVmIHRlc3Rfc2Vzc2lvbl9yZXN1bXB0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1
cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6CisgICAgcG9ydCA9IHNlcnZlci5zZXNzaW9uX3Jl
c3VtcHRpb25fcG9ydCBvciBzZXJ2ZXIucG9ydAorICAgIHNhdmVkX3RpY2tldCA9IE5vbmUKKwor
ICAgIGRlZiBzZXNzaW9uX3RpY2tldF9oYW5kbGVyKHRpY2tldCk6CisgICAgICAgIG5vbmxvY2Fs
IHNhdmVkX3RpY2tldAorICAgICAgICBzYXZlZF90aWNrZXQgPSB0aWNrZXQKKworICAgICMgY29u
bmVjdCBhIGZpcnN0IHRpbWUsIHJlY2VpdmUgYSB0aWNrZXQKKyAgICBhc3luYyB3aXRoIGNvbm5l
Y3QoCisgICAgICAgIHNlcnZlci5ob3N0LAorICAgICAgICBwb3J0LAorICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vz
c2lvbl90aWNrZXRfaGFuZGxlciwKKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICBhd2FpdCBw
cm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHNvbWUgc2VydmVycyBkb24ndCBzZW5kIHRoZSB0
aWNrZXQgaW1tZWRpYXRlbHkKKyAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorCisgICAg
IyBjb25uZWN0IGEgc2Vjb25kIHRpbWUsIHdpdGggdGhlIHRpY2tldAorICAgIGlmIHNhdmVkX3Rp
Y2tldCBpcyBub3QgTm9uZToKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9
IHNhdmVkX3RpY2tldAorICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qoc2VydmVyLmhvc3QsIHBv
cnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikgYXMgcHJvdG9jb2w6CisgICAgICAgICAg
ICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHdh
cyByZXN1bWVkCisgICAgICAgICAgICBpZiBwcm90b2NvbC5fcXVpYy50bHMuc2Vzc2lvbl9yZXN1
bWVkOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LlIKKworICAgICAg
ICAgICAgIyBjaGVjayBlYXJseSBkYXRhIHdhcyBhY2NlcHRlZAorICAgICAgICAgICAgaWYgcHJv
dG9jb2wuX3F1aWMudGxzLmVhcmx5X2RhdGFfYWNjZXB0ZWQ6CisgICAgICAgICAgICAgICAgc2Vy
dmVyLnJlc3VsdCB8PSBSZXN1bHQuWgorCisKK2FzeW5jIGRlZiB0ZXN0X2tleV91cGRhdGUoc2Vy
dmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgIyBjYXVz
ZSBzb21lIHRyYWZmaWMKKyAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCisKKyAgICAgICAg
IyByZXF1ZXN0IGtleSB1cGRhdGUKKyAgICAgICAgcHJvdG9jb2wucmVxdWVzdF9rZXlfdXBkYXRl
KCkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2Nv
bC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5VCisKKworYXN5bmMg
ZGVmIHRlc3RfbWlncmF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbik6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICBzZXJ2ZXIuaG9z
dCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICkgYXMgcHJv
dG9jb2w6CisgICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3Rv
Y29sLnBpbmcoKQorCisgICAgICAgICMgY2hhbmdlIGNvbm5lY3Rpb24gSUQgYW5kIHJlcGxhY2Ug
dHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgcHJvdG9jb2wuX3RyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgIGF3YWl0IGxvb3AuY3JlYXRl
X2RhdGFncmFtX2VuZHBvaW50KGxhbWJkYTogcHJvdG9jb2wsIGxvY2FsX2FkZHI9KCI6OiIsIDAp
KQorCisgICAgICAgICMgY2F1c2UgbW9yZSB0cmFmZmljCisgICAgICAgIGF3YWl0IHByb3RvY29s
LnBpbmcoKQorCisgICAgICAgICMgY2hlY2sgbG9nCisgICAgICAgIGRjaWRzID0gc2V0KCkKKyAg
ICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5x
dWljX2xvZ2dlci50b19kaWN0KClbCisgICAgICAgICAgICAidHJhY2VzIgorICAgICAgICBdWzBd
WyJldmVudHMiXToKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9
PSAidHJhbnNwb3J0IgorICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2Vp
dmVkIgorICAgICAgICAgICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICIxUlRUIgor
ICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBkY2lkcy5hZGQoZGF0YVsiaGVhZGVyIl1b
ImRjaWQiXSkKKyAgICAgICAgaWYgbGVuKGRjaWRzKSA9PSAyOgorICAgICAgICAgICAgc2VydmVy
LnJlc3VsdCB8PSBSZXN1bHQuTQorCisKK2FzeW5jIGRlZiB0ZXN0X3JlYmluZGluZyhzZXJ2ZXI6
IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGFzeW5jIHdp
dGggY29ubmVjdCgKKyAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24KKyAgICApIGFzIHByb3RvY29sOgorICAgICAgICAjIGNhdXNlIHNv
bWUgdHJhZmZpYworICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIHJl
cGxhY2UgdHJhbnNwb3J0CisgICAgICAgIHByb3RvY29sLl90cmFuc3BvcnQuY2xvc2UoKQorICAg
ICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChsYW1iZGE6IHByb3RvY29s
LCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKKworICAgICAgICAjIGNhdXNlIG1vcmUgdHJhZmZpYwor
ICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9
IFJlc3VsdC5CCisKKworYXN5bmMgZGVmIHRlc3Rfc3Bpbl9iaXQoc2VydmVyOiBTZXJ2ZXIsIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKKyAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
CisgICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uCisgICAgKSBhcyBwcm90b2NvbDoKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6Cisg
ICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKKworICAgICAgICAjIGNoZWNrIGxvZwor
ICAgICAgICBzcGluX2JpdHMgPSBzZXQoKQorICAgICAgICBmb3Igc3RhbXAsIGNhdGVnb3J5LCBl
dmVudCwgZGF0YSBpbiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKVsKKyAgICAg
ICAgICAgICJ0cmFjZXMiCisgICAgICAgIF1bMF1bImV2ZW50cyJdOgorICAgICAgICAgICAgaWYg
Y2F0ZWdvcnkgPT0gImNvbm5lY3Rpdml0eSIgYW5kIGV2ZW50ID09ICJzcGluX2JpdF91cGRhdGVk
IjoKKyAgICAgICAgICAgICAgICBzcGluX2JpdHMuYWRkKGRhdGFbInN0YXRlIl0pCisgICAgICAg
IGlmIGxlbihzcGluX2JpdHMpID09IDI6CisgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJl
c3VsdC5QCisKKworYXN5bmMgZGVmIHRlc3RfdGhyb3VnaHB1dChzZXJ2ZXI6IFNlcnZlciwgY29u
ZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgorICAgIGZhaWx1cmVzID0gMAorCisgICAg
Zm9yIHNpemUgaW4gWzUwMDAwMDAsIDEwMDAwMDAwXToKKyAgICAgICAgcHJpbnQoIlRlc3Rpbmcg
JWQgYnl0ZXMgZG93bmxvYWQiICUgc2l6ZSkKKyAgICAgICAgcGF0aCA9ICIvJWQlcyIgJSAoc2l6
ZSwgc2VydmVyLnRocm91Z2hwdXRfZmlsZV9zdWZmaXgpCisKKyAgICAgICAgIyBwZXJmb3JtIEhU
VFAgcmVxdWVzdCBvdmVyIFRDUAorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAg
IHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KCJodHRwczovLyIgKyBzZXJ2ZXIuaG9zdCArIHBhdGgs
IHZlcmlmeT1GYWxzZSkKKyAgICAgICAgdGNwX29jdGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50
KQorICAgICAgICB0Y3BfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgYXNz
ZXJ0IHRjcF9vY3RldHMgPT0gc2l6ZSwgIkhUVFAvVENQIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2gi
CisKKyAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdCBvdmVyIFFVSUMKKyAgICAgICAgaWYg
c2VydmVyLmh0dHAzOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29scyA9
IEgzX0FMUE4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9w
cm90b2NvbHMgPSBIMF9BTFBOCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgc2VydmVyLmhvc3QsCisgICAgICAgICAg
ICBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRwQ2xpZW50LAorICAgICAgICApIGFzIHBy
b3RvY29sOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBjYXN0KEh0dHBDbGllbnQsIHByb3RvY29s
KQorCisgICAgICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKKyAgICAg
ICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5w
b3J0LCBwYXRoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcXVpY19lbGFwc2VkID0gdGlt
ZS50aW1lKCkgLSBzdGFydAorICAgICAgICAgICAgcXVpY19vY3RldHMgPSAwCisgICAgICAgICAg
ICBmb3IgaHR0cF9ldmVudCBpbiBodHRwX2V2ZW50czoKKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICAgICAgICAgIHF1
aWNfb2N0ZXRzICs9IGxlbihodHRwX2V2ZW50LmRhdGEpCisgICAgICAgIGFzc2VydCBxdWljX29j
dGV0cyA9PSBzaXplLCAiSFRUUC9RVUlDIHJlc3BvbnNlIHNpemUgbWlzbWF0Y2giCisKKyAgICAg
ICAgcHJpbnQoIiAtIEhUVFAvVENQICBjb21wbGV0ZWQgaW4gJS4zZiBzIiAlIHRjcF9lbGFwc2Vk
KQorICAgICAgICBwcmludCgiIC0gSFRUUC9RVUlDIGNvbXBsZXRlZCBpbiAlLjNmIHMiICUgcXVp
Y19lbGFwc2VkKQorCisgICAgICAgIGlmIHF1aWNfZWxhcHNlZCA+IDEuMSAqIHRjcF9lbGFwc2Vk
OgorICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQorICAgICAgICAgICAgcHJpbnQoIiA9PiBGQUlM
IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCIgPT4gUEFTUyIpCisKKyAgICBp
ZiBmYWlsdXJlcyA9PSAwOgorICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5UCisKKwor
ZGVmIHByaW50X3Jlc3VsdChzZXJ2ZXI6IFNlcnZlcikgLT4gTm9uZToKKyAgICByZXN1bHQgPSBz
dHIoc2VydmVyLnJlc3VsdCkucmVwbGFjZSgidGhyZWUiLCAiMyIpCisgICAgcmVzdWx0ID0gcmVz
dWx0WzA6OF0gKyAiICIgKyByZXN1bHRbODoxNl0gKyAiICIgKyByZXN1bHRbMTY6XQorICAgIHBy
aW50KCIlcyVzJXMiICUgKHNlcnZlci5uYW1lLCAiICIgKiAoMjAgLSBsZW4oc2VydmVyLm5hbWUp
KSwgcmVzdWx0KSkKKworCithc3luYyBkZWYgcnVuKHNlcnZlcnMsIHRlc3RzLCBxdWljX2xvZz1G
YWxzZSwgc2VjcmV0c19sb2dfZmlsZT1Ob25lKSAtPiBOb25lOgorICAgIGZvciBzZXJ2ZXIgaW4g
c2VydmVyczoKKyAgICAgICAgaWYgc2VydmVyLnN0cnVjdHVyZWRfbG9nZ2luZzoKKyAgICAgICAg
ICAgIHNlcnZlci5yZXN1bHQgfD0gUmVzdWx0LkwKKyAgICAgICAgZm9yIHRlc3RfbmFtZSwgdGVz
dF9mdW5jIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQoIlxuPT09ICVzICVzID09PVxuIiAl
IChzZXJ2ZXIubmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBR
dWljQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1IM19BTFBO
ICsgSDBfQUxQTiwKKyAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksCisgICAgICAgICAgICAgICAgc2VjcmV0c19s
b2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlPXNl
cnZlci52ZXJpZnlfbW9kZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIHRlc3RfbmFt
ZSA9PSAidGVzdF90aHJvdWdocHV0IjoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gNjAKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDEwCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby53YWl0X2ZvcigKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdF9mdW5jKHNlcnZlciwgY29uZmlndXJhdGlvbiksIHRpbWVvdXQ9dGlt
ZW91dAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZXhjOgorICAgICAgICAgICAgICAgIHByaW50KGV4YykKKworICAgICAgICAgICAgaWYgcXVpY19s
b2c6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIlcy0lcy5xbG9nIiAlIChzZXJ2ZXIubmFt
ZSwgdGVzdF9uYW1lKSwgInciKSBhcyBsb2dnZXJfZnA6CisgICAgICAgICAgICAgICAgICAgIGpz
b24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBp
bmRlbnQ9NCkKKworICAgICAgICBwcmludCgiIikKKyAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZl
cikKKworICAgICMgcHJpbnQgc3VtbWFyeQorICAgIGlmIGxlbihzZXJ2ZXJzKSA+IDE6CisgICAg
ICAgIHByaW50KCJTVU1NQVJZIikKKyAgICAgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAg
ICAgICAgICAgcHJpbnRfcmVzdWx0KHNlcnZlcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWlu
X18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJR
VUlDIGludGVyb3AgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAi
LXEiLAorICAgICAgICAiLS1xdWljLWxvZyIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
CisgICAgICAgIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUgaW4gUUxPRyBmb3JtYXQi
LAorICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1zZXJ2ZXIiLCB0
eXBlPXN0ciwgaGVscD0ib25seSBydW4gYWdhaW5zdCB0aGUgc3BlY2lmaWVkIHNlcnZlci4iCisg
ICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdGVzdCIsIHR5cGU9c3RyLCBoZWxwPSJv
bmx5IHJ1biB0aGUgc3BlY2lmZWQgdGVzdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisg
ICAgICAgICItbCIsCisgICAgICAgICItLXNlY3JldHMtbG9nIiwKKyAgICAgICAgdHlwZT1zdHIs
CisgICAgICAgIGhlbHA9ImxvZyBzZWNyZXRzIHRvIGEgZmlsZSwgZm9yIHVzZSB3aXRoIFdpcmVz
aGFyayIsCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZl
cmJvc2l0eSIKKyAgICApCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVs
bmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJV
RyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCisgICAgKQorCisgICAgIyBvcGVu
IFNTTCBsb2cgZmlsZQorICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6CisgICAgICAgIHNlY3JldHNf
bG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19sb2csICJhIikKKyAgICBlbHNlOgorICAgICAg
ICBzZWNyZXRzX2xvZ19maWxlID0gTm9uZQorCisgICAgIyBkZXRlcm1pbmUgd2hhdCB0byBydW4K
KyAgICBzZXJ2ZXJzID0gU0VSVkVSUworICAgIHRlc3RzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6
IHhbMF0uc3RhcnRzd2l0aCgidGVzdF8iKSwgZ2xvYmFscygpLml0ZW1zKCkpKQorICAgIGlmIGFy
Z3Muc2VydmVyOgorICAgICAgICBzZXJ2ZXJzID0gbGlzdChmaWx0ZXIobGFtYmRhIHg6IHgubmFt
ZSA9PSBhcmdzLnNlcnZlciwgc2VydmVycykpCisgICAgaWYgYXJncy50ZXN0OgorICAgICAgICB0
ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdID09IGFyZ3MudGVzdCwgdGVzdHMpKQor
CisgICAgIyBkaXNhYmxlIHJlcXVlc3RzIFNTTCB3YXJuaW5ncworICAgIHVybGxpYjMuZGlzYWJs
ZV93YXJuaW5ncyh1cmxsaWIzLmV4Y2VwdGlvbnMuSW5zZWN1cmVSZXF1ZXN0V2FybmluZykKKwor
ICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICBsb29wLnJ1bl91bnRpbF9j
b21wbGV0ZSgKKyAgICAgICAgcnVuKAorICAgICAgICAgICAgc2VydmVycz1zZXJ2ZXJzLAorICAg
ICAgICAgICAgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBxdWljX2xvZz1hcmdzLnF1aWNfbG9n
LAorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZT1zZWNyZXRzX2xvZ19maWxlLAorICAgICAg
ICApCisgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGll
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvc2lkdWNrX2NsaWVudC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjZhNWI3NmUwZTcwMTgyODI2N2MzMzNmMzM4NDc2ZDViMGU3MjJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKQEAgLTAsMCArMSwx
MDAgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBqc29uCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHNzbAorZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsLCBjYXN0
CisKK2Zyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAorZnJvbSBhaW9x
dWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wKK2Zyb20g
YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9t
IGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IERhdGFncmFtRnJhbWVSZWNlaXZlZCwgUXVpY0V2
ZW50Citmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworbG9nZ2Vy
ID0gbG9nZ2luZy5nZXRMb2dnZXIoImNsaWVudCIpCisKKworY2xhc3MgU2lkdWNrQ2xpZW50KFF1
aWNDb25uZWN0aW9uUHJvdG9jb2wpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5fYWNrX3dhaXRlcjogT3B0aW9uYWxbYXN5bmNpby5GdXR1cmVbTm9uZV1dID0gTm9u
ZQorCisgICAgYXN5bmMgZGVmIHF1YWNrKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCBz
ZWxmLl9hY2tfd2FpdGVyIGlzIE5vbmUsICJPbmx5IG9uZSBxdWFjayBhdCBhIHRpbWUuIgorICAg
ICAgICBzZWxmLl9xdWljLnNlbmRfZGF0YWdyYW1fZnJhbWUoYiJxdWFjayIpCisKKyAgICAgICAg
d2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKKyAgICAgICAgc2VsZi5fYWNrX3dh
aXRlciA9IHdhaXRlcgorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAgICAgICByZXR1cm4g
YXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVyKQorCisgICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2
ZWQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fYWNr
X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIERh
dGFncmFtRnJhbWVSZWNlaXZlZCkgYW5kIGV2ZW50LmRhdGEgPT0gYiJxdWFjay1hY2siOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Fja193YWl0ZXIKKyAgICAgICAgICAgICAgICBz
ZWxmLl9hY2tfd2FpdGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0
KE5vbmUpCisKKworYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwgaG9zdDogc3RyLCBwb3J0OiBpbnQpIC0+IE5vbmU6CisgICAgYXN5bmMgd2l0aCBjb25uZWN0
KAorICAgICAgICBob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNyZWF0
ZV9wcm90b2NvbD1TaWR1Y2tDbGllbnQKKyAgICApIGFzIGNsaWVudDoKKyAgICAgICAgY2xpZW50
ID0gY2FzdChTaWR1Y2tDbGllbnQsIGNsaWVudCkKKyAgICAgICAgbG9nZ2VyLmluZm8oInNlbmRp
bmcgcXVhY2siKQorICAgICAgICBhd2FpdCBjbGllbnQucXVhY2soKQorICAgICAgICBsb2dnZXIu
aW5mbygicmVjZWl2ZWQgcXVhY2stYWNrIikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJTaURV
Q0sgY2xpZW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiaG9zdCIsIHR5
cGU9c3RyLCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBob3N0IG5hbWUgb3IgSVAgYWRkcmVzcyIK
KyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicG9ydCIsIHR5cGU9aW50LCBoZWxwPSJU
aGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
KyAgICAgICAgIi1rIiwKKyAgICAgICAgIi0taW5zZWN1cmUiLAorICAgICAgICBhY3Rpb249InN0
b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2VydmVyIGNlcnRpZmlj
YXRlIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1xIiwgIi0t
cXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBR
TE9HIGZvcm1hdCIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1s
IiwKKyAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAorICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAg
aGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKKyAg
ICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi12IiwgIi0tdmVyYm9zZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImluY3JlYXNlIGxvZ2dpbmcgdmVyYm9zaXR5Igor
ICAgICkKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBsb2dnaW5nLmJh
c2ljQ29uZmlnKAorICAgICAgICBmb3JtYXQ9IiUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShu
YW1lKXMgJShtZXNzYWdlKXMiLAorICAgICAgICBsZXZlbD1sb2dnaW5nLkRFQlVHIGlmIGFyZ3Mu
dmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKKyAgICApCisKKyAgICBjb25maWd1cmF0aW9uID0g
UXVpY0NvbmZpZ3VyYXRpb24oCisgICAgICAgIGFscG5fcHJvdG9jb2xzPVsic2lkdWNrIl0sIGlz
X2NsaWVudD1UcnVlLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02NTUzNgorICAgICkKKyAgICBp
ZiBhcmdzLmluc2VjdXJlOgorICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlID0gc3Ns
LkNFUlRfTk9ORQorICAgIGlmIGFyZ3MucXVpY19sb2c6CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
cXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgorICAg
ICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Muc2VjcmV0c19s
b2csICJhIikKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICB0cnk6
CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAorICAgICAgICAgICAgcnVuKGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgaG9zdD1hcmdzLmhvc3QsIHBvcnQ9YXJncy5wb3J0KQor
ICAgICAgICApCisgICAgZmluYWxseToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAi
dyIpIGFzIGxvZ2dlcl9mcDoKKyAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlv
bi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4NTQ4N2U4NDA4
MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCIvPgorICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+CisgICAgICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+CisgICAgICAgIDxwPgorICAg
ICAgICAgICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu
Y29tL2Fpb3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCisgICAgICAgICAgICBhIFFVSUMgYW5k
IEhUVFAvMyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KKyAgICAgICAgPC9wPgor
eyUgaWYgcmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9CisgICAgICAgIDxw
PgorICAgICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRoaXMgcGFnZSB1c2lu
ZyBIVFRQLzMhCisgICAgICAgIDwvcD4KK3slIGVuZGlmICV9CisgICAgICAgIDxoMj5BdmFpbGFi
bGUgZW5kcG9pbnRzPC9oMj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+
R0VUIC88L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgorICAgICAgICAgICAgPGxp
PjxzdHJvbmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5dGVzIG9mIHBsYWlu
IHRleHQ8L2xpPgorICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNobzwvc3Ryb25nPiBy
ZXR1cm5zIHRoZSByZXF1ZXN0IGRhdGE8L2xpPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAg
ICAgICAgIDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdlYlNvY2tldCBlY2hv
IHNlcnZpY2UuCisgICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8ZW0+OnByb3RvY29s
PC9lbT4gcHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4KKyAgICAgICAgICAg
IDwvbGk+CisgICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBocmVmPSIvaHR0cGJp
bi8iPmh0dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9s
b2dzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MDk5ZjY3ZGNhMjJjNTdmYmM5MWQ4ZDE5YTBkNmE4OGYzYzFiOWY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0bWwKQEAg
LTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KKyAgICAgICAgPHRpdGxlPmFpb3F1aWMgLSBsb2dz
PC90aXRsZT4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGUuY3Nz
Ii8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8aDE+UUxPRyBmaWxlczwvaDE+
CisgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9ncyI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAg
IDx0aD5uYW1lPC90aD4KKyAgICAgICAgICAgIDx0aD5kYXRlIChVVEMpPC90aD4KKyAgICAgICAg
ICAgIDx0aD5zaXplPC90aD4KKyAgICAgICAgPC90cj4KK3slIGZvciBsb2cgaW4gbG9ncyAlfQor
ICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgorICAgICAgICAgICAg
ICAgIDxhIGhyZWY9Int7IGxvZy5maWxlX3VybCB9fSI+e3sgbG9nLm5hbWUgfX08L2E+CisgICAg
ICAgICAgICAgICAgPGEgaHJlZj0ie3sgbG9nLnF2aXNfdXJsIH19Ij5bcXZpc108L2E+CisgICAg
ICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkIGNsYXNzPSJkYXRlIj57eyBsb2cuZGF0ZSB9
fTwvdGQ+CisgICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPnt7IGxvZy5zaXplIH19PC90ZD4K
KyAgICAgICAgPC90cj4KK3slIGVuZGZvciAlfQorICAgICAgICA8L3RhYmxlPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3czYy1pbXBv
cnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2YmI5ZDM2NGQ3Y2RjMDJmMjY0M2UzZDdiZGQ3NDgyMWJmNDQ2
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgor
Tm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFt
cGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy90ZW1wbGF0
ZXMvbG9ncy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjhmMjIwNGFkNDFlNDhmZjFkZjRiNWI0NzMxNjFkZGU2ZTgyN2ZjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDIyIEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9l
eGFtcGxlcy9odHRwM19jbGllbnQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfc2Vy
dmVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVja19j
bGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzMzYTM5Nzg3
NGM2NTNjOTFhMjBhMGI5MjU2NzNkNWM0OWM3Yjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CkBAIC0wLDAgKzEsMyBAQAorY3J5cHRvZ3JhcGh5
CitzcGhpbnhfYXV0b2RvY190eXBlaGludHMKK3NwaGlueGNvbnRyaWItYXN5bmNpbwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVlMjJlNzRiZDIx
YTk0NjdjZjE2NmQ5NDA0YzYyNjlhMDlkNWEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwxNyBAQAorVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6
CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3JlcXVpcmVtZW50cy9kb2MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQt
b3BlbnNzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NGRlZDcyYzE3MjRiYjAwNDMyMzI4YzVlMjI5YmE3Mzc2MmM1
ZTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNz
bApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2Rlc3RkaXI9JDEKK2Nh
Y2hlZGlyPSQxLiRQWVRIT05fQVJDSAorCitmb3IgZCBpbiBvcGVuc3NsICRkZXN0ZGlyOyBkbwor
ICAgIGlmIFsgLWUgJGQgXTsgdGhlbgorICAgICAgICBybSAtcmYgJGQKKyAgICBmaQorZG9uZQor
CitpZiBbICEgLWUgJGNhY2hlZGlyIF07IHRoZW4KKyAgICAjIGJ1aWxkIG9wZW5zc2wKKyAgICBt
a2RpciBvcGVuc3NsCisgICAgY3VybCAtTCBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uv
b3BlbnNzbC0xLjEuMWYudGFyLmd6IHwgdGFyIHh6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25l
bnRzIDEKKyAgICBjZCBvcGVuc3NsCisKKyAgICAuL2NvbmZpZyBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cworICAgIG1ha2UKKworICAgIG1rZGlyICRjYWNoZWRpcgorICAgIG1rZGlyICRjYWNo
ZWRpci9saWIKKyAgICBjcCAtUiBpbmNsdWRlICRjYWNoZWRpcgorICAgIGNwIGxpYmNyeXB0by5h
IGxpYnNzbC5hICRjYWNoZWRpci9saWIKK2ZpCisKK2NwIC1SICRjYWNoZWRpciAkZGVzdGRpcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy9idWlsZC1vcGVuc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTAwNzlkZGY4
MzIwZjc1NGJkOTQyMjE1N2U2NTQzOTQ2ZDYwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvYnVpbGQtb3BlbnNzbC5iYXQKQEAgLTAsMCArMSwzOSBAQAorc2V0IGRl
c3RkaXI9JTEKK3NldCBjYWNoZWRpcj0lMS4lUFlUSE9OX0FSQ0glCisKK2ZvciAlJWQgaW4gKG9w
ZW5zc2wgJWRlc3RkaXIlKSBkbyAoCisgICAgaWYgZXhpc3QgJSVkICgKKyAgICAgICAgcm1kaXIg
L3MgL3EgJSVkCisgICAgKQorKQorCitpZiAlUFlUSE9OX0FSQ0glID09IDY0ICgKKyAgIHNldCBP
UEVOU1NMX0NPTkZJRz1WQy1XSU42NEEKKyAgIHNldCBWQ19BUkNIPXg2NAorKSBlbHNlICgKKyAg
IHNldCBPUEVOU1NMX0NPTkZJRz1WQy1XSU4zMgorICAgc2V0IFZDX0FSQ0g9eDg2CispCisKK2Nh
bGwgIkM6XFByb2dyYW0gRmlsZXMgKHg4NilcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAxOVxF
bnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiAlVkNfQVJDSCUKK1NF
VCBQQVRIPSVQQVRIJTtDOlxQcm9ncmFtIEZpbGVzXE5BU00KKworaWYgbm90IGV4aXN0ICVjYWNo
ZWRpciUgKAorICAgIG1rZGlyIG9wZW5zc2wKKyAgICBjdXJsIC1MIGh0dHBzOi8vd3d3Lm9wZW5z
c2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMS4xZi50YXIuZ3ogLW8gb3BlbnNzbC50YXIuZ3oKKyAg
ICB0YXIgeHpmIG9wZW5zc2wudGFyLmd6IC1DIG9wZW5zc2wgLS1zdHJpcC1jb21wb25lbnRzIDEK
KyAgICBjZCBvcGVuc3NsCisKKyAgICBwZXJsIENvbmZpZ3VyZSBuby1jb21wIG5vLXNoYXJlZCBu
by10ZXN0cyAlT1BFTlNTTF9DT05GSUclCisgICAgbm1ha2UKKworICAgIG1rZGlyICVjYWNoZWRp
ciUKKyAgICBta2RpciAlY2FjaGVkaXIlXGluY2x1ZGUKKyAgICBta2RpciAlY2FjaGVkaXIlXGxp
YgorICAgIHhjb3B5IGluY2x1ZGUgJWNhY2hlZGlyJVxpbmNsdWRlXCAvRQorICAgIGNvcHkgbGli
Y3J5cHRvLmxpYiAlY2FjaGVkaXIlXGxpYlwKKyAgICBjb3B5IGxpYnNzbC5saWIgJWNhY2hlZGly
JVxsaWJcCispCisKK21rZGlyICVkZXN0ZGlyJQoreGNvcHkgJWNhY2hlZGlyJSAlZGVzdGRpciUg
L0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ3ZjkzOWQ0Mjhm
NzEwNjk0MzQ3NTMzN2FiZDgyODBkZjBmMTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgor
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zY3JpcHRzL2J1aWxkLW9wZW5zc2wKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9i
dWlsZC1vcGVuc3NsLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLmNmZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zZXR1cC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMDI1YWQwZjczM2IzOGJiOTRmOGJi
OGViMDQ3ODVkYTNiNGY0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5j
ZmcKQEAgLTAsMCArMSwyMSBAQAorW2NvdmVyYWdlOnJ1bl0KK3NvdXJjZSA9IGFpb3F1aWMKKwor
W2ZsYWtlOF0KK2lnbm9yZT1FMjAzLFc1MDMKK21heC1saW5lLWxlbmd0aD0xNTAKKworW2lzb3J0
XQorZGVmYXVsdF9zZWN0aW9uID0gVEhJUkRQQVJUWQoraW5jbHVkZV90cmFpbGluZ19jb21tYSA9
IFRydWUKK2tub3duX2ZpcnN0X3BhcnR5ID0gYWlvcXVpYworbGluZV9sZW5ndGggPSA4OAorbXVs
dGlfbGluZV9vdXRwdXQgPSAzCisKK1tteXB5XQorZGlzYWxsb3dfdW50eXBlZF9jYWxscyA9IFRy
dWUKK2Rpc2FsbG93X3VudHlwZWRfZGVjb3JhdG9ycyA9IFRydWUKK2lnbm9yZV9taXNzaW5nX2lt
cG9ydHMgPSBUcnVlCitzdHJpY3Rfb3B0aW9uYWwgPSBGYWxzZQord2Fybl9yZWR1bmRhbnRfY2Fz
dHMgPSBUcnVlCit3YXJuX3VudXNlZF9pZ25vcmVzID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YzVl
YTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc2V0dXAucHkKQEAgLTAsMCArMSw2OSBAQAoraW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKKworaW1wb3J0IHNldHVwdG9vbHMKKworcm9vdF9kaXIgPSBvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworYWJvdXQgPSB7fQorYWJvdXRfZmlsZSA9
IG9zLnBhdGguam9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFib3V0LnB5IikKK3dp
dGggb3BlbihhYm91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICBleGVjKGZw
LnJlYWQoKSwgYWJvdXQpCisKK3JlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAi
UkVBRE1FLnJzdCIpCit3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpIGFz
IGY6CisgICAgbG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCisKK2lmIHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiOgorICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCisgICAgbGlicmFyaWVzID0g
WyJsaWJjcnlwdG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIsICJ1c2VyMzIiLCAi
d3MyXzMyIl0KK2Vsc2U6CisgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyItc3RkPWM5OSJdCisg
ICAgbGlicmFyaWVzID0gWyJjcnlwdG8iXQorCitzZXR1cHRvb2xzLnNldHVwKAorICAgIG5hbWU9
YWJvdXRbIl9fdGl0bGVfXyJdLAorICAgIHZlcnNpb249YWJvdXRbIl9fdmVyc2lvbl9fIl0sCisg
ICAgZGVzY3JpcHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCisgICAgbG9uZ19kZXNjcmlwdGlv
bj1sb25nX2Rlc2NyaXB0aW9uLAorICAgIHVybD1hYm91dFsiX191cmlfXyJdLAorICAgIGF1dGhv
cj1hYm91dFsiX19hdXRob3JfXyJdLAorICAgIGF1dGhvcl9lbWFpbD1hYm91dFsiX19lbWFpbF9f
Il0sCisgICAgbGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKKyAgICBpbmNsdWRlX3BhY2th
Z2VfZGF0YT1UcnVlLAorICAgIGNsYXNzaWZpZXJzPVsKKyAgICAgICAgIkRldmVsb3BtZW50IFN0
YXR1cyA6OiA0IC0gQmV0YSIsCisgICAgICAgICJFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1l
bnQiLAorICAgICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCisgICAgICAg
ICJMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCisgICAgICAgICJPcGVy
YXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExh
bmd1YWdlIDo6IFB5dGhvbiIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRo
b24gOjogMyIsCisgICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42
IiwKKyAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAorICAg
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIsCisgICAgICAgICJU
b3BpYyA6OiBJbnRlcm5ldCA6OiBXV1cvSFRUUCIsCisgICAgXSwKKyAgICBleHRfbW9kdWxlcz1b
CisgICAgICAgIHNldHVwdG9vbHMuRXh0ZW5zaW9uKAorICAgICAgICAgICAgImFpb3F1aWMuX2J1
ZmZlciIsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdz
LAorICAgICAgICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIuYyJdLAorICAgICAg
ICApLAorICAgICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKKyAgICAgICAgICAgICJhaW9xdWlj
Ll9jcnlwdG8iLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVf
YXJncywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBzb3Vy
Y2VzPVsic3JjL2Fpb3F1aWMvX2NyeXB0by5jIl0sCisgICAgICAgICksCisgICAgXSwKKyAgICBw
YWNrYWdlX2Rpcj17IiI6ICJzcmMifSwKKyAgICBwYWNrYWdlX2RhdGE9eyJhaW9xdWljIjogWyJw
eS50eXBlZCIsICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKKyAgICBwYWNrYWdlcz1b
ImFpb3F1aWMiLCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAiYWlvcXVpYy5oMyIs
ICJhaW9xdWljLnF1aWMiXSwKKyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgImNlcnRp
ZmkiLAorICAgICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCisgICAgICAgICdkYXRhY2xhc3Nl
czsgcHl0aG9uX3ZlcnNpb24gPCAiMy43IicsCisgICAgICAgICJweWxzcXBhY2sgPj0gMC4zLjMs
IDwgMC40LjAiLAorICAgIF0sCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDRhY2ViZWVmODNlYTQxODliZmFlNGNhOWYwODBkMjNkODc3YThiNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fX2luaXRfXy5weQpAQCAtMCww
ICsxLDMgQEAKKyMgZmxha2U4OiBub3FhCisKK2Zyb20gLmFib3V0IGltcG9ydCBfX3ZlcnNpb25f
XwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzRkYjgxNzU5MGJl
OGQ3MzZiMzI2NDZkNGNmZjQxYzlmNjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKQEAgLTAsMCArMSw0NDAgQEAKKyNkZWZpbmUgUFlfU1NJ
WkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
KyNkZWZpbmUgTU9EVUxFX05BTUUgImFpb3F1aWMuX2J1ZmZlciIKKworc3RhdGljIFB5T2JqZWN0
ICpCdWZmZXJSZWFkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKkJ1ZmZlcldyaXRlRXJyb3I7CisK
K3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDhfdCAqYmFzZTsK
KyAgICB1aW50OF90ICplbmQ7CisgICAgdWludDhfdCAqcG9zOworfSBCdWZmZXJPYmplY3Q7CisK
KyNkZWZpbmUgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKSBcCisgICAgaWYgKGxlbiA8IDAg
fHwgc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3Ry
aW5nKEJ1ZmZlclJlYWRFcnJvciwgIlJlYWQgb3V0IG9mIGJvdW5kcyIpOyBcCisgICAgICAgIHJl
dHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCBs
ZW4pIFwKKyAgICBpZiAoc2VsZi0+cG9zICsgbGVuID4gc2VsZi0+ZW5kKSB7IFwKKyAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKEJ1ZmZlcldyaXRlRXJyb3IsICJXcml0ZSBvdXQgb2YgYm91bmRzIik7
IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9CisKK3N0YXRpYyBpbnQKK0J1ZmZlcl9p
bml0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqa3dsaXN0W10gPSB7ImNhcGFjaXR5IiwgImRhdGEiLCBOVUxM
fTsKKyAgICBpbnQgY2FwYWNpdHkgPSAwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEg
PSBOVUxMOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4gPSAwOworCisgICAgaWYgKCFQeUFyZ19Q
YXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGl5IyIsIChjaGFyKiopa3dsaXN0
LCAmY2FwYWNpdHksICZkYXRhLCAmZGF0YV9sZW4pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmJhc2UgPSBtYWxsb2MoZGF0YV9s
ZW4pOworICAgICAgICBzZWxmLT5lbmQgPSBzZWxmLT5iYXNlICsgZGF0YV9sZW47CisgICAgICAg
IG1lbWNweShzZWxmLT5iYXNlLCBkYXRhLCBkYXRhX2xlbik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhjYXBhY2l0eSk7CisgICAgICAgIHNlbGYtPmVuZCA9IHNl
bGYtPmJhc2UgKyBjYXBhY2l0eTsKKyAgICB9CisgICAgc2VsZi0+cG9zID0gc2VsZi0+YmFzZTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0J1ZmZlcl9kZWFsbG9jKEJ1ZmZlck9i
amVjdCAqc2VsZikKK3sKKyAgICBmcmVlKHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMgUHlPYmpl
Y3QgKgorQnVmZmVyX2RhdGFfc2xpY2UoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn
cykKK3sKKyAgICBpbnQgc3RhcnQsIHN0b3A7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFy
Z3MsICJpaSIsICZzdGFydCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChzdGFydCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0YXJ0ID4gc2VsZi0+ZW5kIHx8CisgICAgICAg
IHN0b3AgPCAwIHx8IHNlbGYtPmJhc2UgKyBzdG9wID4gc2VsZi0+ZW5kIHx8CisgICAgICAgIHN0
b3AgPCBzdGFydCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAi
UmVhZCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAg
IHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikoc2VsZi0+YmFz
ZSArIHN0YXJ0KSwgKHN0b3AgLSBzdGFydCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVm
ZmVyX2VvZihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChz
ZWxmLT5wb3MgPT0gc2VsZi0+ZW5kKQorICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBQeV9S
RVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVsbF9ieXRlcyhC
dWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmxlbikpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgbGVuKTsKKworICAgIFB5T2JqZWN0
ICpvID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+cG9zLCBs
ZW4pOworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgcmV0dXJuIG87Cit9CisKK3N0YXRpYyBQ
eU9iamVjdCAqCitCdWZmZXJfcHVsbF91aW50OChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIENIRUNLX1JFQURfQk9VTkRTKHNlbGYsIDEpCisKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21VbnNpZ25lZExvbmcoCisgICAgICAgICh1aW50OF90KSgqKHNlbGYtPnBvcysr
KSkKKyAgICApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDE2KEJ1
ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9CT1VO
RFMoc2VsZiwgMikKKworICAgIHVpbnQxNl90IHZhbHVlID0gKHVpbnQxNl90KSgqKHNlbGYtPnBv
cykpIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyAr
IDEpKTsKKyAgICBzZWxmLT5wb3MgKz0gMjsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25l
ZExvbmcodmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3B1bGxfdWludDMy
KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVBRF9C
T1VORFMoc2VsZiwgNCkKKworICAgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYt
PnBvcykpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5w
b3MgKyAxKSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDIpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxm
LT5wb3MgKyAzKSk7CisgICAgc2VsZi0+cG9zICs9IDQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9t
VW5zaWduZWRMb25nKHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdWxs
X3VpbnQ2NChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNL
X1JFQURfQk9VTkRTKHNlbGYsIDgpCisKKyAgICB1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdCko
KihzZWxmLT5wb3MpKSA8PCA1NiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCko
KihzZWxmLT5wb3MgKyAyKSkgPDwgNDAgfAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90
KSgqKHNlbGYtPnBvcyArIDMpKSA8PCAzMiB8CisgICAgICAgICAgICAgICAgICAgICAodWludDY0
X3QpKCooc2VsZi0+cG9zICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAgICAgICh1aW50
NjRfdCkoKihzZWxmLT5wb3MgKyA1KSkgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDYpKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICh1
aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7CisgICAgc2VsZi0+cG9zICs9IDg7CisgICAgcmV0
dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9i
amVjdCAqCitCdWZmZXJfcHVsbF91aW50X3ZhcihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0
ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAgIENIRUNLX1JFQURfQk9VTkRTKHNl
bGYsIDEpCisgICAgc3dpdGNoICgqKHNlbGYtPnBvcykgPj4gNikgeworICAgIGNhc2UgMDoKKyAg
ICAgICAgdmFsdWUgPSAqKHNlbGYtPnBvcysrKSAmIDB4M0Y7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMikKKyAgICAgICAgdmFs
dWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9zKSAmIDB4M0YpIDw8IDggfAorICAgICAgICAgICAg
ICAgICh1aW50MTZfdCkoKihzZWxmLT5wb3MgKyAxKSk7CisgICAgICAgIHNlbGYtPnBvcyArPSAy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIENIRUNLX1JFQURfQk9VTkRT
KHNlbGYsIDQpCisgICAgICAgIHZhbHVlID0gKHVpbnQzMl90KSgqKHNlbGYtPnBvcykgJiAweDNG
KSA8PCAyNCB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDEpKSA8
PCAxNiB8CisgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBvcyArIDIpKSA8PCA4
IHwKKyAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMykpOworICAgICAg
ICBzZWxmLT5wb3MgKz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Q0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgOCkKKyAgICAgICAgdmFsdWUgPSAodWludDY0X3QpKCoo
c2VsZi0+cG9zKSAmIDB4M0YpIDw8IDU2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCoo
c2VsZi0+cG9zICsgMSkpIDw8IDQ4IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2Vs
Zi0+cG9zICsgMikpIDw8IDQwIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+
cG9zICsgMykpIDw8IDMyIHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9z
ICsgNCkpIDw8IDI0IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsg
NSkpIDw8IDE2IHwKKyAgICAgICAgICAgICAgICAodWludDY0X3QpKCooc2VsZi0+cG9zICsgNikp
IDw8IDggfAorICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA3KSk7Cisg
ICAgICAgIHNlbGYtPnBvcyArPSA4OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVj
dCAqCitCdWZmZXJfcHVzaF9ieXRlcyhCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlfc3NpemVfdCBkYXRh
X2xlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjIiwgJmRhdGEsICZkYXRh
X2xlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNl
bGYsIGRhdGFfbGVuKQorCisgICAgbWVtY3B5KHNlbGYtPnBvcywgZGF0YSwgZGF0YV9sZW4pOwor
ICAgIHNlbGYtPnBvcyArPSBkYXRhX2xlbjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3Rh
dGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNoX3VpbnQ4KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlP
YmplY3QgKmFyZ3MpCit7CisgICAgdWludDhfdCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgIkIiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIENI
RUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAxKQorCisgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsK
KyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0J1ZmZlcl9wdXNo
X3VpbnQxNihCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQx
Nl90IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSCIsICZ2YWx1ZSkp
CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDIp
CisKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAqKHNlbGYtPnBvcysr
KSA9IHZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgor
QnVmZmVyX3B1c2hfdWludDMyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7
CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJ
IiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBDSEVDS19XUklURV9CT1VO
RFMoc2VsZiwgNCkKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAgKihz
ZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVl
ID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7
Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50NjQoQnVmZmVyT2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVM
TDsKKworICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA4KQorICAgICooc2VsZi0+cG9zKysp
ID0gKHZhbHVlID4+IDU2KTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0OCk7Cisg
ICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDMyKTsKKyAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAyNCk7CisgICAg
KihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDgpOworICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgUHlfUkVUVVJOX05P
TkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitCdWZmZXJfcHVzaF91aW50X3ZhcihCdWZmZXJP
YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVpbnQ2NF90IHZhbHVlOworICAg
IGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgaWYgKHZhbHVlIDw9IDB4M0YpIHsKKyAgICAgICAgQ0hFQ0tfV1JJVEVf
Qk9VTkRTKHNlbGYsIDEpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7CisgICAgICAg
IFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGKSB7CisgICAg
ICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCAyKQorICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiA4KSB8IDB4NDA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gdmFsdWU7Cisg
ICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gMHgzRkZGRkZG
RikgeworICAgICAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgNCkKKyAgICAgICAgKihzZWxm
LT5wb3MrKykgPSAodmFsdWUgPj4gMjQpIHwgMHg4MDsKKyAgICAgICAgKihzZWxmLT5wb3MrKykg
PSAodmFsdWUgPj4gMTYpOworICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsK
KyAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7
CisgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkYpIHsKKyAgICAgICAg
Q0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDU2KSB8IDB4QzA7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQ4
KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDApOworICAgICAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAzMik7CisgICAgICAgICooc2VsZi0+cG9zKyspID0gKHZh
bHVlID4+IDI0KTsKKyAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gMTYpOworICAg
ICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA4KTsKKyAgICAgICAgKihzZWxmLT5wb3Mr
KykgPSB2YWx1ZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnRlZ2VyIGlzIHRvbyBiaWcg
Zm9yIGEgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVyX3NlZWsoQnVmZmVyT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9zOworICAgIGlmICghUHlBcmdfUGFy
c2VUdXBsZShhcmdzLCAiaSIsICZwb3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlm
IChwb3MgPCAwIHx8IHNlbGYtPmJhc2UgKyBwb3MgPiBzZWxmLT5lbmQpIHsKKyAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKEJ1ZmZlclJlYWRFcnJvciwgIlNlZWsgb3V0IG9mIGJvdW5kcyIpOworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlICsg
cG9zOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorQnVmZmVy
X3RlbGwoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4g
UHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyAtIHNlbGYtPmJhc2UpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQnVmZmVyX21ldGhvZHNbXSA9IHsKKyAgICB7ImRhdGFfc2xpY2UiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX2RhdGFfc2xpY2UsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsiZW9m
IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9lb2YsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicHVs
bF9ieXRlcyIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF9ieXRlcywgTUVUSF9WQVJBUkdTLCAi
UHVsbCBieXRlcy4ifSwKKyAgICB7InB1bGxfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1
bGxfdWludDgsIE1FVEhfVkFSQVJHUywgIlB1bGwgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4i
fSwKKyAgICB7InB1bGxfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQxNiwg
TUVUSF9WQVJBUkdTLCAiUHVsbCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsi
cHVsbF91aW50MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDMyLCBNRVRIX1ZBUkFS
R1MsICJQdWxsIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdWxsX3VpbnQ2
NCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1bGwg
YSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1bGxfdWludF92YXIiLCAoUHlD
RnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1bGwgYSBRVUlD
IHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF9ieXRlcyIs
IChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF9ieXRlcywgTUVUSF9WQVJBUkdTLCAiUHVzaCBieXRl
cy4ifSwKKyAgICB7InB1c2hfdWludDgiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDgs
IE1FVEhfVkFSQVJHUywgIlB1c2ggYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7
InB1c2hfdWludDE2IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQxNiwgTUVUSF9WQVJB
UkdTLCAiUHVzaCBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsicHVzaF91aW50
MzIiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDMyLCBNRVRIX1ZBUkFSR1MsICJQdXNo
IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCisgICAgeyJwdXNoX3VpbnQ2NCIsIChQeUNG
dW5jdGlvbilCdWZmZXJfcHVzaF91aW50NjQsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSA2NC1iaXQg
dW5zaWduZWQgaW50ZWdlci4ifSwKKyAgICB7InB1c2hfdWludF92YXIiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3B1c2hfdWludF92YXIsIE1FVEhfVkFSQVJHUywgIlB1c2ggYSBRVUlDIHZhcmlhYmxl
LWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilC
dWZmZXJfc2VlaywgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9u
KUJ1ZmZlcl90ZWxsLCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRp
YyBQeU9iamVjdCoKK0J1ZmZlcl9jYXBhY2l0eV9nZXR0ZXIoQnVmZmVyT2JqZWN0KiBzZWxmLCB2
b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5lbmQg
LSBzZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQnVmZmVyX2RhdGFfZ2V0dGVy
KEJ1ZmZlck9iamVjdCogc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUJ5dGVz
X0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5iYXNlLCBzZWxmLT5wb3MgLSBz
ZWxmLT5iYXNlKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIEJ1ZmZlcl9nZXRzZXRbXSA9IHsK
KyAgICB7ImNhcGFjaXR5IiwgKGdldHRlcikgQnVmZmVyX2NhcGFjaXR5X2dldHRlciwgTlVMTCwg
IiIsIE5VTEwgfSwKKyAgICB7ImRhdGEiLCAoZ2V0dGVyKSBCdWZmZXJfZGF0YV9nZXR0ZXIsIE5V
TEwsICIiLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJ1
ZmZlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9E
VUxFX05BTUUgIi5CdWZmZXIiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVv
ZihCdWZmZXJPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAg
KGRlc3RydWN0b3IpQnVmZmVyX2RlYWxsb2MsICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8K
KyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5j
ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21h
cHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9o
YXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Nh
bGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIg
Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRy
byAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0
dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNf
YnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBf
ZmxhZ3MgKi8KKyAgICAiQnVmZmVyIG9iamVjdHMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9k
b2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2
ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Ns
ZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmlj
aGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJ1ZmZlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQnVmZmVyX2dldHNldCwgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJ1ZmZlcl9pbml0LCAg
ICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVE
ZWYgbW9kdWxlZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICBNT0RVTEVf
TkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICAiQSBmYXN0ZXIg
YnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5
SW5pdF9fYnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1
bGVfQ3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQnVmZmVyUmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQnVmZmVyUmVhZEVycm9yIiwgUHlFeGNfVmFsdWVFcnJvciwgTlVMTCk7CisgICAg
UHlfSU5DUkVGKEJ1ZmZlclJlYWRFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJC
dWZmZXJSZWFkRXJyb3IiLCBCdWZmZXJSZWFkRXJyb3IpOworCisgICAgQnVmZmVyV3JpdGVFcnJv
ciA9IFB5RXJyX05ld0V4Y2VwdGlvbihNT0RVTEVfTkFNRSAiLkJ1ZmZlcldyaXRlRXJyb3IiLCBQ
eUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKKyAgICBQeV9JTkNSRUYoQnVmZmVyV3JpdGVFcnJvcik7
CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCdWZmZXJXcml0ZUVycm9yIiwgQnVmZmVyV3Jp
dGVFcnJvcik7CisKKyAgICBCdWZmZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkJ1ZmZlclR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgUHlfSU5DUkVGKCZCdWZmZXJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3Qo
bSwgIkJ1ZmZlciIsIChQeU9iamVjdCAqKSZCdWZmZXJUeXBlKTsKKworICAgIHJldHVybiBtOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIucHlpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZTQzY2NhM2E1
MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKQEAgLTAsMCArMSwyNyBAQAorZnJvbSB0eXBp
bmcgaW1wb3J0IE9wdGlvbmFsCisKK2NsYXNzIEJ1ZmZlclJlYWRFcnJvcihWYWx1ZUVycm9yKTog
Li4uCitjbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4KKworY2xhc3MgQnVm
ZmVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9uYWxbaW50XSA9IDAs
IGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBk
ZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0
YShzZWxmKSAtPiBieXRlczogLi4uCisgICAgZGVmIGRhdGFfc2xpY2Uoc2VsZiwgc3RhcnQ6IGlu
dCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KKyAgICBkZWYgZW9mKHNlbGYpIC0+IGJvb2w6IC4u
LgorICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4KKyAgICBkZWYgdGVs
bChzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYsIGxlbmd0aDogaW50
KSAtPiBieXRlczogLi4uCisgICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4gaW50OiAuLi4KKyAg
ICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50MzIo
c2VsZikgLT4gaW50OiAuLi4KKyAgICBkZWYgcHVsbF91aW50NjQoc2VsZikgLT4gaW50OiAuLi4K
KyAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgorICAgIGRlZiBwdXNoX2J5
dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDgo
c2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCisgICAgZGVmIHB1c2hfdWludDE2KHNlbGYs
IHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQzMihzZWxmLCB2OiBp
bnQpIC0+IE5vbmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2OiBpbnQpIC0+IE5v
bmU6IC4uLgorICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6
IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUxNTU0ZDRiMjEz
Y2QwN2ZjZWRmOGEzOTMwNGNkNjIwMDQ0ZjE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKQEAgLTAsMCArMSw0NTUgQEAKKyNkZWZpbmUgUFlf
U1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9l
cnIuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FICJh
aW9xdWljLl9jcnlwdG8iCisKKyNkZWZpbmUgQUVBRF9LRVlfTEVOR1RIX01BWCAzMgorI2RlZmlu
ZSBBRUFEX05PTkNFX0xFTkdUSCAxMgorI2RlZmluZSBBRUFEX1RBR19MRU5HVEggMTYKKworI2Rl
ZmluZSBQQUNLRVRfTEVOR1RIX01BWCAxNTAwCisjZGVmaW5lIFBBQ0tFVF9OVU1CRVJfTEVOR1RI
X01BWCA0CisjZGVmaW5lIFNBTVBMRV9MRU5HVEggMTYKKworI2RlZmluZSBDSEVDS19SRVNVTFQo
ZXhwcikgXAorICAgIGlmICghKGV4cHIpKSB7IFwKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7
IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiT3BlblNTTCBjYWxsIGZh
aWxlZCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCisjZGVmaW5lIENIRUNL
X1JFU1VMVF9DVE9SKGV4cHIpIFwKKyAgICBpZiAoIShleHByKSkgeyBcCisgICAgICAgIEVSUl9j
bGVhcl9lcnJvcigpOyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9w
ZW5TU0wgY2FsbCBmYWlsZWQiKTsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKK3N0
YXRpYyBQeU9iamVjdCAqQ3J5cHRvRXJyb3I7CisKKy8qIEFFQUQgKi8KKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBFVlBfQ0lQSEVSX0NUWCAqZGVjcnlwdF9jdHg7
CisgICAgRVZQX0NJUEhFUl9DVFggKmVuY3J5cHRfY3R4OworICAgIHVuc2lnbmVkIGNoYXIgYnVm
ZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGtleVtBRUFEX0tFWV9M
RU5HVEhfTUFYXTsKKyAgICB1bnNpZ25lZCBjaGFyIGl2W0FFQURfTk9OQ0VfTEVOR1RIXTsKKyAg
ICB1bnNpZ25lZCBjaGFyIG5vbmNlW0FFQURfTk9OQ0VfTEVOR1RIXTsKK30gQUVBRE9iamVjdDsK
Kworc3RhdGljIEVWUF9DSVBIRVJfQ1RYICoKK2NyZWF0ZV9jdHgoY29uc3QgRVZQX0NJUEhFUiAq
Y2lwaGVyLCBpbnQga2V5X2xlbmd0aCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBFVlBfQ0lQSEVS
X0NUWCAqY3R4OworICAgIGludCByZXM7CisKKyAgICBjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXco
KTsKKyAgICBDSEVDS19SRVNVTFQoY3R4ICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlcklu
aXRfZXgoY3R4LCBjaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIG9wZXJhdGlvbik7CisgICAgQ0hF
Q0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlf
bGVuZ3RoKGN0eCwga2V5X2xlbmd0aCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9DQ01fU0VUX0lWTEVO
LCBBRUFEX05PTkNFX0xFTkdUSCwgTlVMTCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsK
KworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbnQKK0FFQURfaW5pdChBRUFET2JqZWN0
ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBjb25zdCBj
aGFyICpjaXBoZXJfbmFtZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksICppdjsKKyAg
ICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbiwgaXZfbGVuOworCisgICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjeSMiLCAmY2lwaGVyX25hbWUsICZjaXBoZXJf
bmFtZV9sZW4sICZrZXksICZrZXlfbGVuLCAmaXYsICZpdl9sZW4pKQorICAgICAgICByZXR1cm4g
LTE7CisKKyAgICBjb25zdCBFVlBfQ0lQSEVSICpldnBfY2lwaGVyID0gRVZQX2dldF9jaXBoZXJi
eW5hbWUoY2lwaGVyX25hbWUpOworICAgIGlmIChldnBfY2lwaGVyID09IDApIHsKKyAgICAgICAg
UHlFcnJfRm9ybWF0KENyeXB0b0Vycm9yLCAiSW52YWxpZCBjaXBoZXIgbmFtZTogJXMiLCBjaXBo
ZXJfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGtleV9sZW4gPiBB
RUFEX0tFWV9MRU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJv
ciwgIkludmFsaWQga2V5IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAg
IGlmIChpdl9sZW4gPiBBRUFEX05PTkNFX0xFTkdUSCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGl2IGxlbmd0aCIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisgICAgbWVtY3B5KHNlbGYtPmtleSwga2V5LCBrZXlfbGVuKTsKKyAgICBtZW1j
cHkoc2VsZi0+aXYsIGl2LCBpdl9sZW4pOworCisgICAgc2VsZi0+ZGVjcnlwdF9jdHggPSBjcmVh
dGVfY3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDApOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNl
bGYtPmRlY3J5cHRfY3R4ICE9IDApOworCisgICAgc2VsZi0+ZW5jcnlwdF9jdHggPSBjcmVhdGVf
Y3R4KGV2cF9jaXBoZXIsIGtleV9sZW4sIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHNlbGYt
PmVuY3J5cHRfY3R4ICE9IDApOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitB
RUFEX2RlYWxsb2MoQUVBRE9iamVjdCAqc2VsZikKK3sKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVl
KHNlbGYtPmRlY3J5cHRfY3R4KTsKKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKHNlbGYtPmVuY3J5
cHRfY3R4KTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorQUVBRF9kZWNyeXB0KEFFQURPYmplY3Qg
KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEs
ICphc3NvY2lhdGVkOworICAgIFB5X3NzaXplX3QgZGF0YV9sZW4sIGFzc29jaWF0ZWRfbGVuOwor
ICAgIGludCBvdXRsZW4sIG91dGxlbjIsIHJlczsKKyAgICB1aW50NjRfdCBwbjsKKworICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I0siLCAmZGF0YSwgJmRhdGFfbGVuLCAmYXNz
b2NpYXRlZCwgJmFzc29jaWF0ZWRfbGVuLCAmcG4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKwor
ICAgIGlmIChkYXRhX2xlbiA8IEFFQURfVEFHX0xFTkdUSCB8fCBkYXRhX2xlbiA+IFBBQ0tFVF9M
RU5HVEhfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIkludmFs
aWQgcGF5bG9hZCBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAg
bWVtY3B5KHNlbGYtPm5vbmNlLCBzZWxmLT5pdiwgQUVBRF9OT05DRV9MRU5HVEgpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIHNlbGYtPm5vbmNlW0FFQURfTk9O
Q0VfTEVOR1RIIC0gMSAtIGldIF49ICh1aW50OF90KShwbiA+PiA4ICogaSk7CisgICAgfQorCisg
ICAgcmVzID0gRVZQX0NJUEhFUl9DVFhfY3RybChzZWxmLT5kZWNyeXB0X2N0eCwgRVZQX0NUUkxf
Q0NNX1NFVF9UQUcsIEFFQURfVEFHX0xFTkdUSCwgKHZvaWQqKShkYXRhICsgKGRhdGFfbGVuIC0g
QUVBRF9UQUdfTEVOR1RIKSkpOworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICBy
ZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2Vs
Zi0+a2V5LCBzZWxmLT5ub25jZSwgMCk7CisgICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKwor
ICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRs
ZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0ZWRfbGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9
IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5kZWNyeXB0X2N0eCwgc2Vs
Zi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRhLCBkYXRhX2xlbiAtIEFFQURfVEFHX0xFTkdUSCk7Cisg
ICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DaXBoZXJGaW5hbF9l
eChzZWxmLT5kZWNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOworICAgIGlmIChyZXMgPT0gMCkg
eworICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3IsICJQYXlsb2FkIGRlY3J5cHRp
b24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQ
eUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5idWZmZXIsIG91dGxl
bik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK0FFQURfZW5jcnlwdChBRUFET2JqZWN0ICpzZWxm
LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCAqYXNz
b2NpYXRlZDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVkX2xlbjsKKyAgICBp
bnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7CisgICAgdWludDY0X3QgcG47CisKKyAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xlbiwgJmFzc29jaWF0
ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBp
ZiAoZGF0YV9sZW4gPiBQQUNLRVRfTEVOR1RIX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURf
Tk9OQ0VfTEVOR1RIKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAg
ICBzZWxmLT5ub25jZVtBRUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4g
Pj4gOCAqIGkpOworICAgIH0KKworICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmVu
Y3J5cHRfY3R4LCBOVUxMLCBOVUxMLCBzZWxmLT5rZXksIHNlbGYtPm5vbmNlLCAxKTsKKyAgICBD
SEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhlclVwZGF0ZShzZWxm
LT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbiwgYXNzb2NpYXRlZCwgYXNzb2NpYXRlZF9sZW4p
OworICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVyVXBk
YXRlKHNlbGYtPmVuY3J5cHRfY3R4LCBzZWxmLT5idWZmZXIsICZvdXRsZW4sIGRhdGEsIGRhdGFf
bGVuKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgcmVzID0gRVZQX0NpcGhl
ckZpbmFsX2V4KHNlbGYtPmVuY3J5cHRfY3R4LCBOVUxMLCAmb3V0bGVuMik7CisgICAgQ0hFQ0tf
UkVTVUxUKHJlcyAhPSAwICYmIG91dGxlbjIgPT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ0lQSEVS
X0NUWF9jdHJsKHNlbGYtPmVuY3J5cHRfY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgQUVBRF9U
QUdfTEVOR1RILCBzZWxmLT5idWZmZXIgKyBvdXRsZW4pOworICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hh
ciopc2VsZi0+YnVmZmVyLCBvdXRsZW4gKyBBRUFEX1RBR19MRU5HVEgpOworfQorCitzdGF0aWMg
UHlNZXRob2REZWYgQUVBRF9tZXRob2RzW10gPSB7CisgICAgeyJkZWNyeXB0IiwgKFB5Q0Z1bmN0
aW9uKUFFQURfZGVjcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJlbmNyeXB0IiwgKFB5
Q0Z1bmN0aW9uKUFFQURfZW5jcnlwdCwgTUVUSF9WQVJBUkdTLCAiIn0sCisKKyAgICB7TlVMTH0K
K307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQUVBRFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3Rf
SEVBRF9JTklUKE5VTEwsIDApCisgICAgTU9EVUxFX05BTUUgIi5BRUFEIiwgICAgICAgICAgICAg
ICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihBRUFET2JqZWN0KSwgICAgICAgICAgICAgICAg
IC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQUVBRF9kZWFsbG9jLCAgICAg
ICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZB
VUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQUVBRCBvYmplY3RzIiwg
ICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEFFQURf
bWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisg
ICAgKGluaXRwcm9jKUFFQURfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCit9Owor
CisvKiBIZWFkZXJQcm90ZWN0aW9uICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVj
dF9IRUFECisgICAgRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAgICBpbnQgaXNfY2hhY2hhMjA7Cisg
ICAgdW5zaWduZWQgY2hhciBidWZmZXJbUEFDS0VUX0xFTkdUSF9NQVhdOworICAgIHVuc2lnbmVk
IGNoYXIgbWFza1szMV07CisgICAgdW5zaWduZWQgY2hhciB6ZXJvWzVdOworfSBIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0OworCitzdGF0aWMgaW50CitIZWFkZXJQcm90ZWN0aW9uX2luaXQoSGVhZGVy
UHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3Mp
Cit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWU7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqa2V5OworICAgIFB5X3NzaXplX3QgY2lwaGVyX25hbWVfbGVuLCBrZXlfbGVuOworICAgIGlu
dCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMiLCAmY2lwaGVy
X25hbWUsICZjaXBoZXJfbmFtZV9sZW4sICZrZXksICZrZXlfbGVuKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRfY2lwaGVy
YnluYW1lKGNpcGhlcl9uYW1lKTsKKyAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7CisgICAgICAg
IFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVzIiwgY2lw
aGVyX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KHNlbGYt
Pm1hc2ssIDAsIHNpemVvZihzZWxmLT5tYXNrKSk7CisgICAgbWVtc2V0KHNlbGYtPnplcm8sIDAs
IHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgc2VsZi0+aXNfY2hhY2hhMjAgPSBjaXBoZXJfbmFt
ZV9sZW4gPT0gOCAmJiBtZW1jbXAoY2lwaGVyX25hbWUsICJjaGFjaGEyMCIsIDgpID09IDA7CisK
KyAgICBzZWxmLT5jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKyAgICBDSEVDS19SRVNVTFRf
Q1RPUihzZWxmLT5jdHggIT0gMCk7CisKKyAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChzZWxm
LT5jdHgsIGV2cF9jaXBoZXIsIE5VTEwsIE5VTEwsIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VM
VF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVu
Z3RoKHNlbGYtPmN0eCwga2V5X2xlbik7CisgICAgQ0hFQ0tfUkVTVUxUX0NUT1IocmVzICE9IDAp
OworCisgICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+Y3R4LCBOVUxMLCBOVUxMLCBr
ZXksIE5VTEwsIDEpOworICAgIENIRUNLX1JFU1VMVF9DVE9SKHJlcyAhPSAwKTsKKworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorSGVhZGVyUHJvdGVjdGlvbl9kZWFsbG9jKEhlYWRl
clByb3RlY3Rpb25PYmplY3QgKnNlbGYpCit7CisgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxm
LT5jdHgpOworfQorCitzdGF0aWMgaW50IEhlYWRlclByb3RlY3Rpb25fbWFzayhIZWFkZXJQcm90
ZWN0aW9uT2JqZWN0ICpzZWxmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzYW1wbGUpCit7CisgICAg
aW50IG91dGxlbjsKKyAgICBpZiAoc2VsZi0+aXNfY2hhY2hhMjApIHsKKyAgICAgICAgcmV0dXJu
IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwgTlVMTCwgTlVMTCwgc2FtcGxlLCAx
KSAmJgorICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShzZWxmLT5jdHgsIHNlbGYtPm1h
c2ssICZvdXRsZW4sIHNlbGYtPnplcm8sIHNpemVvZihzZWxmLT56ZXJvKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBzZWxmLT5tYXNr
LCAmb3V0bGVuLCBzYW1wbGUsIFNBTVBMRV9MRU5HVEgpOworICAgIH0KK30KKworc3RhdGljIFB5
T2JqZWN0KgorSGVhZGVyUHJvdGVjdGlvbl9hcHBseShIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpz
ZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkZXIs
ICpwYXlsb2FkOworICAgIFB5X3NzaXplX3QgaGVhZGVyX2xlbiwgcGF5bG9hZF9sZW47CisgICAg
aW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5IyIsICZoZWFk
ZXIsICZoZWFkZXJfbGVuLCAmcGF5bG9hZCwgJnBheWxvYWRfbGVuKSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBpbnQgcG5fbGVuZ3RoID0gKGhlYWRlclswXSAmIDB4MDMpICsgMTsKKyAg
ICBpbnQgcG5fb2Zmc2V0ID0gaGVhZGVyX2xlbiAtIHBuX2xlbmd0aDsKKworICAgIHJlcyA9IEhl
YWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYXlsb2FkICsgUEFDS0VUX05VTUJFUl9MRU5HVEhf
TUFYIC0gcG5fbGVuZ3RoKTsKKyAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOworCisgICAgbWVt
Y3B5KHNlbGYtPmJ1ZmZlciwgaGVhZGVyLCBoZWFkZXJfbGVuKTsKKyAgICBtZW1jcHkoc2VsZi0+
YnVmZmVyICsgaGVhZGVyX2xlbiwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOworCisgICAgaWYgKHNl
bGYtPmJ1ZmZlclswXSAmIDB4ODApIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYt
Pm1hc2tbMF0gJiAweDBGOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlclswXSBe
PSBzZWxmLT5tYXNrWzBdICYgMHgxRjsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHBuX2xlbmd0aDsgKytpKSB7CisgICAgICAgIHNlbGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSBe
PSBzZWxmLT5tYXNrWzEgKyBpXTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3Ry
aW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVyLCBoZWFkZXJfbGVuICsgcGF5bG9h
ZF9sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QqCitIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZShI
ZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CisgICAgUHlfc3NpemVfdCBwYWNrZXRfbGVuOworICAg
IGludCBwbl9vZmZzZXQsIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAi
eSNJIiwgJnBhY2tldCwgJnBhY2tldF9sZW4sICZwbl9vZmZzZXQpKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIHJlcyA9IEhlYWRlclByb3RlY3Rpb25fbWFzayhzZWxmLCBwYWNrZXQgKyBw
bl9vZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOworICAgIENIRUNLX1JFU1VMVChy
ZXMgIT0gMCk7CisKKyAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCBwYWNrZXQsIHBuX29mZnNldCAr
IFBBQ0tFVF9OVU1CRVJfTEVOR1RIX01BWCk7CisKKyAgICBpZiAoc2VsZi0+YnVmZmVyWzBdICYg
MHg4MCkgeworICAgICAgICBzZWxmLT5idWZmZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MEY7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0g
JiAweDFGOworICAgIH0KKworICAgIGludCBwbl9sZW5ndGggPSAoc2VsZi0+YnVmZmVyWzBdICYg
MHgwMykgKyAxOworICAgIHVpbnQzMl90IHBuX3RydW5jYXRlZCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgeworICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zm
c2V0ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07CisgICAgICAgIHBuX3RydW5jYXRlZCA9IHNl
bGYtPmJ1ZmZlcltwbl9vZmZzZXQgKyBpXSB8IChwbl90cnVuY2F0ZWQgPDwgOCk7CisgICAgfQor
CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInkjaSIsIHNlbGYtPmJ1ZmZlciwgcG5fb2Zmc2V0
ICsgcG5fbGVuZ3RoLCBwbl90cnVuY2F0ZWQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgSGVh
ZGVyUHJvdGVjdGlvbl9tZXRob2RzW10gPSB7CisgICAgeyJhcHBseSIsIChQeUNGdW5jdGlvbilI
ZWFkZXJQcm90ZWN0aW9uX2FwcGx5LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlbW92ZSIs
IChQeUNGdW5jdGlvbilIZWFkZXJQcm90ZWN0aW9uX3JlbW92ZSwgTUVUSF9WQVJBUkdTLCAiIn0s
CisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEhlYWRlclByb3RlY3Rpb25U
eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRFVMRV9O
QU1FICIuSGVhZGVyUHJvdGVjdGlvbiIsICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdCksICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0
cnVjdG9yKUhlYWRlclByb3RlY3Rpb25fZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwor
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLworICAgICJIZWFkZXJQcm90ZWN0aW9uIG9iamVjdHMiLCAgICAgICAgIC8qIHRwX2Rv
YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCisgICAgSGVhZGVyUHJvdGVjdGlvbl9tZXRob2RzLCAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpSGVhZGVyUHJvdGVjdGlv
bl9pbml0LCAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURl
ZiBtb2R1bGVkZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgIE1PRFVMRV9O
QU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgICJBIGZhc3RlciBi
dWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5p
dF9fY3J5cHRvKHZvaWQpCit7CisgICAgUHlPYmplY3QqIG07CisKKyAgICBtID0gUHlNb2R1bGVf
Q3JlYXRlKCZtb2R1bGVkZWYpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBO
VUxMOworCisgICAgQ3J5cHRvRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxFX05BTUUg
Ii5DcnlwdG9FcnJvciIsIFB5RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOworICAgIFB5X0lOQ1JFRihD
cnlwdG9FcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDcnlwdG9FcnJvciIsIENy
eXB0b0Vycm9yKTsKKworICAgIEFFQURUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owor
ICAgIGlmIChQeVR5cGVfUmVhZHkoJkFFQURUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxM
OworICAgIFB5X0lOQ1JFRigmQUVBRFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAi
QUVBRCIsIChQeU9iamVjdCAqKSZBRUFEVHlwZSk7CisKKyAgICBIZWFkZXJQcm90ZWN0aW9uVHlw
ZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZIZWFk
ZXJQcm90ZWN0aW9uVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNS
RUYoJkhlYWRlclByb3RlY3Rpb25UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhl
YWRlclByb3RlY3Rpb24iLCAoUHlPYmplY3QgKikmSGVhZGVyUHJvdGVjdGlvblR5cGUpOworCisg
ICAgLy8gZW5zdXJlIHJlcXVpcmVkIGNpcGhlcnMgYXJlIGluaXRpYWxpc2VkCisgICAgRVZQX2Fk
ZF9jaXBoZXIoRVZQX2Flc18xMjhfZWNiKCkpOworICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf
MTI4X2djbSgpKTsKKyAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2IoKSk7CisgICAg
RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworCisgICAgcmV0dXJuIG07Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjNTIzMGQ5OTJlN2Yy
MTljOTNiZWMzY2I0NTcyMTRjMjUxOGM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9fY3J5cHRvLnB5aQpAQCAtMCwwICsxLDE3IEBACitmcm9tIHR5cGluZyBp
bXBvcnQgVHVwbGUKKworY2xhc3MgQUVBRDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVy
X25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzLCBpdjogYnl0ZXMpOiAuLi4KKyAgICBkZWYgZGVjcnlw
dCgKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGFzc29jaWF0ZWRfZGF0YTogYnl0ZXMsIHBh
Y2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6IC4uLgorICAgIGRlZiBlbmNyeXB0KAor
ICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRhOiBieXRlcywgcGFja2V0
X251bWJlcjogaW50CisgICAgKSAtPiBieXRlczogLi4uCisKK2NsYXNzIENyeXB0b0Vycm9yKFZh
bHVlRXJyb3IpOiAuLi4KKworY2xhc3MgSGVhZGVyUHJvdGVjdGlvbjoKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgY2lwaGVyX25hbWU6IGJ5dGVzLCBrZXk6IGJ5dGVzKTogLi4uCisgICAgZGVmIGFw
cGx5KHNlbGYsIHBsYWluX2hlYWRlcjogYnl0ZXMsIHByb3RlY3RlZF9wYXlsb2FkOiBieXRlcykg
LT4gYnl0ZXM6IC4uLgorICAgIGRlZiByZW1vdmUoc2VsZiwgcGFja2V0OiBieXRlcywgZW5jcnlw
dGVkX29mZnNldDogaW50KSAtPiBUdXBsZVtieXRlcywgaW50XTogLi4uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvYWJvdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJjZDhmMzNkNjVkY2JmMjM5N2QxMmM4M2M2NTFjYzg5
OWU5MTU1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91
dC5weQpAQCAtMCwwICsxLDcgQEAKK19fYXV0aG9yX18gPSAiSmVyZW15IExhaW7DqSIKK19fZW1h
aWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKK19fbGljZW5zZV9fID0gIkJTRCIKK19fc3Vt
bWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhUVFAvMyIKK19fdGl0bGVf
XyA9ICJhaW9xdWljIgorX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1
aWMiCitfX3ZlcnNpb25fXyA9ICIwLjguNyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fz
eW5jaW8vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkYTY5ZDg5OTM0ZThmODdhMjFjNWI5OGU5
N2ExMTQ5MTJiZThjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9hc3luY2lvL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSAuY2xpZW50IGltcG9y
dCBjb25uZWN0ICAjIG5vcWEKK2Zyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblBy
b3RvY29sICAjIG5vcWEKK2Zyb20gLnNlcnZlciBpbXBvcnQgc2VydmUgICMgbm9xYQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOTM3ZTll
ODkyYmZlNzZjZDJjMmZjN2NiM2E2ZTRmZjczOTMzZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKQEAgLTAsMCArMSw5NCBAQAor
aW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBz
eXMKK2Zyb20gdHlwaW5nIGltcG9ydCBBc3luY0dlbmVyYXRvciwgQ2FsbGFibGUsIE9wdGlvbmFs
LCBjYXN0CisKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWljQ29ubmVjdGlvbgorZnJvbSAu
LnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldEhhbmRsZXIKK2Zyb20gLmNvbXBhdCBpbXBvcnQgYXN5
bmNjb250ZXh0bWFuYWdlcgorZnJvbSAucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wsIFF1aWNTdHJlYW1IYW5kbGVyCisKK19fYWxsX18gPSBbImNvbm5lY3QiXQorCisKK0Bh
c3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgY29ubmVjdCgKKyAgICBob3N0OiBzdHIsCisg
ICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJhdGlvbjogT3B0aW9uYWxbUXVpY0Nv
bmZpZ3VyYXRpb25dID0gTm9uZSwKKyAgICBjcmVhdGVfcHJvdG9jb2w6IE9wdGlvbmFsW0NhbGxh
YmxlXSA9IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKKyAgICBzdHJlYW1faGFu
ZGxlcjogT3B0aW9uYWxbUXVpY1N0cmVhbUhhbmRsZXJdID0gTm9uZSwKKyAgICB3YWl0X2Nvbm5l
Y3RlZDogYm9vbCA9IFRydWUsCisgICAgbG9jYWxfcG9ydDogaW50ID0gMCwKKykgLT4gQXN5bmNH
ZW5lcmF0b3JbUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgTm9uZV06CisgICAgIiIiCisgICAgQ29u
bmVjdCB0byBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZlbiBgaG9zdGAgYW5kIGBwb3J0YC4KKwor
ICAgIDptZXRoOmBjb25uZWN0KClgIHJldHVybnMgYW4gYXdhaXRhYmxlLiBBd2FpdGluZyBpdCB5
aWVsZHMgYQorICAgIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3Rv
Y29sYCB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBzdHJlYW1zLgorCisgICAgOmZ1
bmM6YGNvbm5lY3RgIGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50
czoKKworICAgICogYGBjb25maWd1cmF0aW9uYGAgaXMgYSA6Y2xhc3M6YH5haW9xdWljLnF1aWMu
Y29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKKyAgICAgIGNvbmZpZ3VyYXRpb24gb2Jq
ZWN0LgorICAgICogYGBjcmVhdGVfcHJvdG9jb2xgYCBhbGxvd3MgY3VzdG9taXppbmcgdGhlIDpj
bGFzczpgfmFzeW5jaW8uUHJvdG9jb2xgIHRoYXQKKyAgICAgIG1hbmFnZXMgdGhlIGNvbm5lY3Rp
b24uIEl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIG9yIGNsYXNzIGFjY2VwdGluZyB0aGUgc2FtZQor
ICAgICAgYXJndW1lbnRzIGFzIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlv
blByb3RvY29sYCBhbmQgcmV0dXJuaW5nCisgICAgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5h
aW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgb3IgYSBzdWJjbGFzcy4KKyAg
ICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52
b2tlZCBieSB0aGUgVExTCisgICAgICBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBp
cyByZWNlaXZlZC4KKyAgICAqIGBgc3RyZWFtX2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNo
IGlzIGludm9rZWQgd2hlbmV2ZXIgYSBzdHJlYW0gaXMKKyAgICAgIGNyZWF0ZWQuIEl0IG11c3Qg
YWNjZXB0IHR3byBhcmd1bWVudHM6IGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVJlYWRlcmAKKyAg
ICAgIGFuZCBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1Xcml0ZXJgLgorICAgICogYGBsb2NhbF9w
b3J0YGAgaXMgdGhlIFVEUCBwb3J0IG51bWJlciB0aGF0IHRoaXMgY2xpZW50IHdhbnRzIHRvIGJp
bmQuCisgICAgIiIiCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxv
Y2FsX2hvc3QgPSAiOjoiCisKKyAgICAjIGlmIGhvc3QgaXMgbm90IGFuIElQIGFkZHJlc3MsIHBh
c3MgaXQgdG8gZW5hYmxlIFNOSQorICAgIHRyeToKKyAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJl
c3MoaG9zdCkKKyAgICAgICAgc2VydmVyX25hbWUgPSBOb25lCisgICAgZXhjZXB0IFZhbHVlRXJy
b3I6CisgICAgICAgIHNlcnZlcl9uYW1lID0gaG9zdAorCisgICAgIyBsb29rdXAgcmVtb3RlIGFk
ZHJlc3MKKyAgICBpbmZvcyA9IGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgdHlw
ZT1zb2NrZXQuU09DS19ER1JBTSkKKyAgICBhZGRyID0gaW5mb3NbMF1bNF0KKyAgICBpZiBsZW4o
YWRkcikgPT0gMjoKKyAgICAgICAgIyBkZXRlcm1pbmUgYmVoYXZpb3VyIGZvciBJUHY0CisgICAg
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgIyBvbiBXaW5kb3dz
LCB3ZSBtdXN0IHVzZSBhbiBJUHY0IHNvY2tldCB0byByZWFjaCBhbiBJUHY0IGhvc3QKKyAgICAg
ICAgICAgIGxvY2FsX2hvc3QgPSAiMC4wLjAuMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgb3RoZXIgcGxhdGZvcm1zIHN1cHBvcnQgZHVhbC1zdGFjayBzb2NrZXRzCisgICAgICAgICAg
ICBhZGRyID0gKCI6OmZmZmY6IiArIGFkZHJbMF0sIGFkZHJbMV0sIDAsIDApCisKKyAgICAjIHBy
ZXBhcmUgUVVJQyBjb25uZWN0aW9uCisgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAg
ICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgaWYgc2VydmVyX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vy
dmVyX25hbWUgPSBzZXJ2ZXJfbmFtZQorICAgIGNvbm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigK
KyAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIKKyAgICApCisKKyAgICAjIGNvbm5lY3QKKyAgICBf
LCBwcm90b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAg
ICBsYW1iZGE6IGNyZWF0ZV9wcm90b2NvbChjb25uZWN0aW9uLCBzdHJlYW1faGFuZGxlcj1zdHJl
YW1faGFuZGxlciksCisgICAgICAgIGxvY2FsX2FkZHI9KGxvY2FsX2hvc3QsIGxvY2FsX3BvcnQp
LAorICAgICkKKyAgICBwcm90b2NvbCA9IGNhc3QoUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgcHJv
dG9jb2wpCisgICAgcHJvdG9jb2wuY29ubmVjdChhZGRyKQorICAgIGlmIHdhaXRfY29ubmVjdGVk
OgorICAgICAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nvbm5lY3RlZCgpCisgICAgdHJ5OgorICAg
ICAgICB5aWVsZCBwcm90b2NvbAorICAgIGZpbmFsbHk6CisgICAgICAgIHByb3RvY29sLmNsb3Nl
KCkKKyAgICBhd2FpdCBwcm90b2NvbC53YWl0X2Nsb3NlZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9jb21wYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxZTYyZjZkOTQyOTYxOTMzZmI2
ZmUwNzJhZTBmMjdlNjQzYjRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpAQCAtMCwwICsxLDMzIEBACitmcm9tIGNvbnRleHRs
aWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwor
Cit0cnk6CisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCitl
eGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYXN5bmNjb250ZXh0bWFuYWdlciA9IE5vbmUKKworCitj
bGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihDb250ZXh0RGVjb3JhdG9yKToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJncywga3dkcyk6CisgICAgICAgIHNlbGYuZ2Vu
ID0gZnVuYygqYXJncywgKiprd2RzKQorICAgICAgICBzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2Vs
Zi5rd2RzID0gZnVuYywgYXJncywga3dkcworICAgICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9f
ZG9jX18KKworICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
YXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKKworICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2Vs
ZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgaWYgdHlwIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRocm93KHR5cCwgdmFsdWUsIHRyYWNlYmFjaykK
KworCitkZWYgX2FzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CisgICAgQHdyYXBzKGZ1bmMpCisg
ICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIF9Bc3luY0dlbmVy
YXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCisKKyAgICByZXR1cm4gaGVscGVy
CisKKworaWYgYXN5bmNjb250ZXh0bWFuYWdlciBpcyBOb25lOgorICAgIGFzeW5jY29udGV4dG1h
bmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YXN5bmNpby9wcm90b2NvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTAwNDMzNWI4ZmZmZjlkNzAyNWQzNjVl
Y2FhOTMxZjc3NDcyMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2FzeW5jaW8vcHJvdG9jb2wucHkKQEAgLTAsMCArMSwyNDAgQEAKK2ltcG9ydCBhc3luY2lv
Citmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQs
IFR1cGxlLCBVbmlvbiwgY2FzdAorCitmcm9tIC4ucXVpYyBpbXBvcnQgZXZlbnRzCitmcm9tIC4u
cXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nvbm5lY3Rpb24KKwor
UXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBDYWxsYWJsZVtbYnl0ZXNdLCBOb25lXQorUXVpY1N0
cmVhbUhhbmRsZXIgPSBDYWxsYWJsZVtbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXSwgTm9uZV0KKworCitjbGFzcyBRdWljQ29ubmVjdGlvblByb3RvY29sKGFzeW5j
aW8uRGF0YWdyYW1Qcm90b2NvbCk6CisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLCBx
dWljOiBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI6IE9wdGlvbmFsW1F1aWNTdHJlYW1I
YW5kbGVyXSA9IE5vbmUKKyAgICApOgorICAgICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpCisKKyAgICAgICAgc2VsZi5fY2xvc2VkID0gYXN5bmNpby5FdmVudCgpCisgICAgICAg
IHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXI6
IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJlW05vbmVdXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9v
cCA9IGxvb3AKKyAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzOiBEaWN0W2ludCwgYXN5bmNpby5G
dXR1cmVbTm9uZV1dID0ge30KKyAgICAgICAgc2VsZi5fcXVpYyA9IHF1aWMKKyAgICAgICAgc2Vs
Zi5fc3RyZWFtX3JlYWRlcnM6IERpY3RbaW50LCBhc3luY2lvLlN0cmVhbVJlYWRlcl0gPSB7fQor
ICAgICAgICBzZWxmLl90aW1lcjogT3B0aW9uYWxbYXN5bmNpby5UaW1lckhhbmRsZV0gPSBOb25l
CisgICAgICAgIHNlbGYuX3RpbWVyX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuX3RyYW5zbWl0X3Rhc2s6IE9wdGlvbmFsW2FzeW5jaW8uSGFuZGxlXSA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fdHJhbnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0
XSA9IE5vbmUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxmLl9jb25uZWN0aW9u
X2lkX2lzc3VlZF9oYW5kbGVyOiBRdWljQ29ubmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBO
b25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyOiBRdWljQ29u
bmVjdGlvbklkSGFuZGxlciA9IGxhbWJkYSBjOiBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3Rp
b25fdGVybWluYXRlZF9oYW5kbGVyOiBDYWxsYWJsZVtbXSwgTm9uZV0gPSBsYW1iZGE6IE5vbmUK
KyAgICAgICAgaWYgc3RyZWFtX2hhbmRsZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IGxhbWJkYSByLCB3OiBOb25lCisKKyAgICBkZWYg
Y2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAg
IENoYW5nZSB0aGUgY29ubmVjdGlvbiBJRCB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBl
ZXIuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIGNvbm5lY3Rpb24gSUQgd2lsbCBiZSByZXRpcmVk
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jaGFuZ2VfY29ubmVjdGlvbl9pZCgp
CisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgIiIi
CisgICAgICAgIHNlbGYuX3F1aWMuY2xvc2UoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2UuCisKKyAgICAgICAg
VGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFuZCBhIHNpbmdsZSB0
aW1lLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5jb25uZWN0KGFkZHIsIG5vdz1z
ZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICBhc3luYyBk
ZWYgY3JlYXRlX3N0cmVhbSgKKyAgICAgICAgc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wg
PSBGYWxzZQorICAgICkgLT4gVHVwbGVbYXN5bmNpby5TdHJlYW1SZWFkZXIsIGFzeW5jaW8uU3Ry
ZWFtV3JpdGVyXToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIFFVSUMgc3RyZWFtIGFu
ZCByZXR1cm4gYSBwYWlyIG9mIChyZWFkZXIsIHdyaXRlcikgb2JqZWN0cy4KKworICAgICAgICBU
aGUgcmV0dXJuZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0cyBhcmUgaW5zdGFuY2VzIG9mIDpj
bGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCisgICAgICAgIGFuZCA6Y2xhc3M6YGFzeW5jaW8u
U3RyZWFtV3JpdGVyYCBjbGFzc2VzLgorICAgICAgICAiIiIKKyAgICAgICAgc3RyZWFtX2lkID0g
c2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKAorICAgICAgICAgICAgaXNf
dW5pZGlyZWN0aW9uYWw9aXNfdW5pZGlyZWN0aW9uYWwKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gc2VsZi5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQpCisKKyAgICBkZWYgcmVxdWVzdF9rZXlf
dXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSZXF1ZXN0IGFuIHVw
ZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
cXVpYy5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICBzZWxmLnRyYW5zbWl0KCkKKworICAg
IGFzeW5jIGRlZiBwaW5nKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBQaW5n
IHRoZSBwZWVyIGFuZCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAg
ICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQorICAgICAgICB1aWQgPSBpZCh3
YWl0ZXIpCisgICAgICAgIHNlbGYuX3Bpbmdfd2FpdGVyc1t1aWRdID0gd2FpdGVyCisgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9waW5nKHVpZCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisgICAg
ICAgIGF3YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKKworICAgIGRlZiB0cmFuc21pdChzZWxm
KSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBwZW5kaW5nIGRhdGFncmFtcyB0
byB0aGUgcGVlciBhbmQgYXJtIHRoZSB0aW1lciBpZiBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICBzZWxmLl90cmFuc21pdF90YXNrID0gTm9uZQorCisgICAgICAgICMgc2VuZCBkYXRhZ3Jh
bXMKKyAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gc2VsZi5fcXVpYy5kYXRhZ3JhbXNfdG9fc2Vu
ZChub3c9c2VsZi5fbG9vcC50aW1lKCkpOgorICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNl
bmR0byhkYXRhLCBhZGRyKQorCisgICAgICAgICMgcmUtYXJtIHRpbWVyCisgICAgICAgIHRpbWVy
X2F0ID0gc2VsZi5fcXVpYy5nZXRfdGltZXIoKQorICAgICAgICBpZiBzZWxmLl90aW1lciBpcyBu
b3QgTm9uZSBhbmQgc2VsZi5fdGltZXJfYXQgIT0gdGltZXJfYXQ6CisgICAgICAgICAgICBzZWxm
Ll90aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5fdGltZXIgPSBOb25lCisgICAgICAg
IGlmIHNlbGYuX3RpbWVyIGlzIE5vbmUgYW5kIHRpbWVyX2F0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgc2VsZi5fdGltZXIgPSBzZWxmLl9sb29wLmNhbGxfYXQodGltZXJfYXQsIHNlbGYuX2hh
bmRsZV90aW1lcikKKyAgICAgICAgc2VsZi5fdGltZXJfYXQgPSB0aW1lcl9hdAorCisgICAgYXN5
bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBX
YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQuCisgICAgICAgICIiIgorICAgICAg
ICBhd2FpdCBzZWxmLl9jbG9zZWQud2FpdCgpCisKKyAgICBhc3luYyBkZWYgd2FpdF9jb25uZWN0
ZWQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFdhaXQgZm9yIHRoZSBUTFMg
aGFuZHNoYWtlIHRvIGNvbXBsZXRlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYu
X2Nvbm5lY3RlZF93YWl0ZXIgaXMgTm9uZSwgImFscmVhZHkgYXdhaXRpbmcgY29ubmVjdGVkIgor
ICAgICAgICBpZiBub3Qgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAgc2VsZi5fY29ubmVj
dGVkX3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCisgICAgICAgICAgICBhd2Fp
dCBhc3luY2lvLnNoaWVsZChzZWxmLl9jb25uZWN0ZWRfd2FpdGVyKQorCisgICAgIyBhc3luY2lv
LlRyYW5zcG9ydAorCisgICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQ6IGFz
eW5jaW8uQmFzZVRyYW5zcG9ydCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0g
Y2FzdChhc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0LCB0cmFuc3BvcnQpCisKKyAgICBkZWYgZGF0
YWdyYW1fcmVjZWl2ZWQoc2VsZiwgZGF0YTogVW5pb25bYnl0ZXMsIFRleHRdLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5yZWNlaXZlX2RhdGFncmFt
KGNhc3QoYnl0ZXMsIGRhdGEpLCBhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1lKCkpCisgICAgICAg
IHNlbGYuX3Byb2Nlc3NfZXZlbnRzKCkKKyAgICAgICAgc2VsZi50cmFuc21pdCgpCisKKyAgICAj
IG92ZXJyaWRhYmxlCisKKyAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
ZXZlbnRzLlF1aWNFdmVudCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxlZCB3
aGVuIGEgUVVJQyBldmVudCBpcyByZWNlaXZlZC4KKworICAgICAgICBSZWltcGxlbWVudCB0aGlz
IGluIHlvdXIgc3ViY2xhc3MgdG8gaGFuZGxlIHRoZSBldmVudHMuCisgICAgICAgICIiIgorICAg
ICAgICAjIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBzdWJjbGFzcworICAgICAgICBpZiBpc2luc3Rh
bmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQpOgorICAgICAgICAgICAgZm9y
IHJlYWRlciBpbiBzZWxmLl9zdHJlYW1fcmVhZGVycy52YWx1ZXMoKToKKyAgICAgICAgICAgICAg
ICByZWFkZXIuZmVlZF9lb2YoKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50
cy5TdHJlYW1EYXRhUmVjZWl2ZWQpOgorICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5fc3RyZWFt
X3JlYWRlcnMuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIHJlYWRl
ciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gc2VsZi5fY3JlYXRl
X3N0cmVhbShldmVudC5zdHJlYW1faWQpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hh
bmRsZXIocmVhZGVyLCB3cml0ZXIpCisgICAgICAgICAgICByZWFkZXIuZmVlZF9kYXRhKGV2ZW50
LmRhdGEpCisgICAgICAgICAgICBpZiBldmVudC5lbmRfc3RyZWFtOgorICAgICAgICAgICAgICAg
IHJlYWRlci5mZWVkX2VvZigpCisKKyAgICAjIHByaXZhdGUKKworICAgIGRlZiBfY3JlYXRlX3N0
cmVhbSgKKyAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQKKyAgICApIC0+IFR1cGxlW2FzeW5j
aW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06CisgICAgICAgIGFkYXB0ZXIg
PSBRdWljU3RyZWFtQWRhcHRlcihzZWxmLCBzdHJlYW1faWQpCisgICAgICAgIHJlYWRlciA9IGFz
eW5jaW8uU3RyZWFtUmVhZGVyKCkKKyAgICAgICAgd3JpdGVyID0gYXN5bmNpby5TdHJlYW1Xcml0
ZXIoYWRhcHRlciwgTm9uZSwgcmVhZGVyLCBzZWxmLl9sb29wKQorICAgICAgICBzZWxmLl9zdHJl
YW1fcmVhZGVyc1tzdHJlYW1faWRdID0gcmVhZGVyCisgICAgICAgIHJldHVybiByZWFkZXIsIHdy
aXRlcgorCisgICAgZGVmIF9oYW5kbGVfdGltZXIoc2VsZikgLT4gTm9uZToKKyAgICAgICAgbm93
ID0gbWF4KHNlbGYuX3RpbWVyX2F0LCBzZWxmLl9sb29wLnRpbWUoKSkKKyAgICAgICAgc2VsZi5f
dGltZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3RpbWVyX2F0ID0gTm9uZQorICAgICAgICBzZWxm
Ll9xdWljLmhhbmRsZV90aW1lcihub3c9bm93KQorICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50
cygpCisgICAgICAgIHNlbGYudHJhbnNtaXQoKQorCisgICAgZGVmIF9wcm9jZXNzX2V2ZW50cyhz
ZWxmKSAtPiBOb25lOgorICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4dF9ldmVudCgpCisg
ICAgICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShldmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcihldmVudC5jb25uZWN0aW9uX2lkKQorICAg
ICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuQ29ubmVjdGlvbklkUmV0aXJl
ZCk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hhbmRsZXIo
ZXZlbnQuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcigpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IGNv
bm5lY3Rpb24gd2FpdGVyCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkX3dhaXRl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5fY29ubmVj
dGVkX3dhaXRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9u
RXJyb3IpCisKKyAgICAgICAgICAgICAgICAjIGFib3J0IHBpbmcgd2FpdGVycworICAgICAgICAg
ICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fcGluZ193YWl0ZXJzLnZhbHVlcygpOgorICAgICAg
ICAgICAgICAgICAgICB3YWl0ZXIuc2V0X2V4Y2VwdGlvbihDb25uZWN0aW9uRXJyb3IpCisgICAg
ICAgICAgICAgICAgc2VsZi5fcGluZ193YWl0ZXJzLmNsZWFyKCkKKworICAgICAgICAgICAgICAg
IHNlbGYuX2Nsb3NlZC5zZXQoKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBl
dmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jb25u
ZWN0ZWRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3YWl0ZXIgPSBz
ZWxmLl9jb25uZWN0ZWRfd2FpdGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IE5v
bmUKKyAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQpOgorICAg
ICAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuX3Bpbmdfd2FpdGVycy5wb3AoZXZlbnQudWlkLCBO
b25lKQorICAgICAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYucXVpY19l
dmVudF9yZWNlaXZlZChldmVudCkKKyAgICAgICAgICAgIGV2ZW50ID0gc2VsZi5fcXVpYy5uZXh0
X2V2ZW50KCkKKworICAgIGRlZiBfdHJhbnNtaXRfc29vbihzZWxmKSAtPiBOb25lOgorICAgICAg
ICBpZiBzZWxmLl90cmFuc21pdF90YXNrIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl90cmFu
c21pdF90YXNrID0gc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi50cmFuc21pdCkKKworCitjbGFz
cyBRdWljU3RyZWFtQWRhcHRlcihhc3luY2lvLlRyYW5zcG9ydCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzdHJlYW1faWQ6IGludCk6
CisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxmLnN0cmVhbV9p
ZCA9IHN0cmVhbV9pZAorCisgICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZikgLT4gYm9vbDoKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lOiBz
dHIsIGRlZmF1bHQ6IEFueSA9IE5vbmUpIC0+IEFueToKKyAgICAgICAgIiIiCisgICAgICAgIEdl
dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBRVUlDIHN0cmVhbS4KKyAgICAgICAg
IiIiCisgICAgICAgIGlmIG5hbWUgPT0gInN0cmVhbV9pZCI6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdHJlYW1faWQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHNlbGYuc3RyZWFtX2lkLCBkYXRhKQor
ICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKKworICAgIGRlZiB3cml0ZV9l
b2Yoc2VsZik6CisgICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLnN0cmVhbV9pZCwgYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYucHJvdG9j
b2wuX3RyYW5zbWl0X3Nvb24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2Vy
dmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI0MGVlNDYwYjZlZDY2ZTA5NDUzODVmMWY1NDg1OGNjMGVmOTE4
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9z
ZXJ2ZXIucHkKQEAgLTAsMCArMSwyMTAgQEAKK2ltcG9ydCBhc3luY2lvCitpbXBvcnQgb3MKK2Zy
b20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUs
IERpY3QsIE9wdGlvbmFsLCBUZXh0LCBVbmlvbiwgY2FzdAorCitmcm9tIC4uYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gLi5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0
aW9uCitmcm9tIC4ucXVpYy5jb25uZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcywgUXVpY0Nv
bm5lY3Rpb24KK2Zyb20gLi5xdWljLnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lO
SVRJQUwsCisgICAgZW5jb2RlX3F1aWNfcmV0cnksCisgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9u
ZWdvdGlhdGlvbiwKKyAgICBwdWxsX3F1aWNfaGVhZGVyLAorKQorZnJvbSAuLnF1aWMucmV0cnkg
aW1wb3J0IFF1aWNSZXRyeVRva2VuSGFuZGxlcgorZnJvbSAuLnRscyBpbXBvcnQgU2Vzc2lvblRp
Y2tldEZldGNoZXIsIFNlc3Npb25UaWNrZXRIYW5kbGVyCitmcm9tIC5wcm90b2NvbCBpbXBvcnQg
UXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKKworX19hbGxfXyA9IFsi
c2VydmUiXQorCisKK2NsYXNzIFF1aWNTZXJ2ZXIoYXN5bmNpby5EYXRhZ3JhbVByb3RvY29sKToK
KyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgICosCisgICAgICAgIGNv
bmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAorICAgICAgICBjcmVhdGVfcHJvdG9jb2w6
IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKKyAgICAgICAgc2Vzc2lvbl90aWNr
ZXRfZmV0Y2hlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjogT3B0aW9uYWxbU2Vzc2lvblRpY2tldEhhbmRsZXJd
ID0gTm9uZSwKKyAgICAgICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFsc2UsCisgICAgICAg
IHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0gPSBOb25lLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24K
KyAgICAgICAgc2VsZi5fY3JlYXRlX3Byb3RvY29sID0gY3JlYXRlX3Byb3RvY29sCisgICAgICAg
IHNlbGYuX2xvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAgICAgc2VsZi5fcHJv
dG9jb2xzOiBEaWN0W2J5dGVzLCBRdWljQ29ubmVjdGlvblByb3RvY29sXSA9IHt9CisgICAgICAg
IHNlbGYuX3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgPSBzZXNzaW9uX3RpY2tldF9mZXRjaGVyCisg
ICAgICAgIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgPSBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyCisgICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRy
YW5zcG9ydF0gPSBOb25lCisKKyAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1f
aGFuZGxlcgorCisgICAgICAgIGlmIHN0YXRlbGVzc19yZXRyeToKKyAgICAgICAgICAgIHNlbGYu
X3JldHJ5ID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX3JldHJ5ID0gTm9uZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBm
b3IgcHJvdG9jb2wgaW4gc2V0KHNlbGYuX3Byb3RvY29scy52YWx1ZXMoKSk6CisgICAgICAgICAg
ICBwcm90b2NvbC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3Byb3RvY29scy5jbGVhcigpCisgICAg
ICAgIHNlbGYuX3RyYW5zcG9ydC5jbG9zZSgpCisKKyAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNl
bGYsIHRyYW5zcG9ydDogYXN5bmNpby5CYXNlVHJhbnNwb3J0KSAtPiBOb25lOgorICAgICAgICBz
ZWxmLl90cmFuc3BvcnQgPSBjYXN0KGFzeW5jaW8uRGF0YWdyYW1UcmFuc3BvcnQsIHRyYW5zcG9y
dCkKKworICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhOiBVbmlvbltieXRlcywg
VGV4dF0sIGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBOb25lOgorICAgICAgICBkYXRhID0gY2Fz
dChieXRlcywgZGF0YSkKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAg
ICAgICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlv
bl9pZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAg
ICAgaWYgKAorICAgICAgICAgICAgaGVhZGVyLnZlcnNpb24gaXMgbm90IE5vbmUKKyAgICAgICAg
ICAgIGFuZCBoZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0
ZWRfdmVyc2lvbnMKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5zZW5k
dG8oCisgICAgICAgICAgICAgICAgZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAorICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLnNvdXJjZV9jaWQsCisgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwcm90b2Nv
bCA9IHNlbGYuX3Byb3RvY29scy5nZXQoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgTm9uZSkKKyAg
ICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAg
ICAgICBpZiAoCisgICAgICAgICAgICBwcm90b2NvbCBpcyBOb25lCisgICAgICAgICAgICBhbmQg
bGVuKGRhdGEpID49IDEyMDAKKyAgICAgICAgICAgIGFuZCBoZWFkZXIucGFja2V0X3R5cGUgPT0g
UEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICApOgorICAgICAgICAgICAgIyBzdGF0ZWxlc3Mg
cmV0cnkKKyAgICAgICAgICAgIGlmIHNlbGYuX3JldHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIGlmIG5vdCBoZWFkZXIudG9rZW46CisgICAgICAgICAgICAgICAgICAgICMgY3JlYXRl
IGEgcmV0cnkgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0
bygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9xdWljX3JldHJ5KAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb249aGVhZGVyLnZlcnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlX2NpZD1vcy51cmFuZG9tKDgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2NpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ9aGVhZGVyLmRlc3Rp
bmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeV90b2tlbj1zZWxm
Ll9yZXRyeS5jcmVhdGVfdG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZHIsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSByZXRy
eSB0b2tlbgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcmV0cnkudmFsaWRhdGVfdG9rZW4oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLnRva2VuCisgICAgICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY3JlYXRlIG5l
dyBjb25uZWN0aW9uCisgICAgICAgICAgICBjb25uZWN0aW9uID0gUXVpY0Nvbm5lY3Rpb24oCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAg
ICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgb3Ig
aGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0
aW9uX2lkPW9yaWdpbmFsX2Nvbm5lY3Rpb25faWQsCisgICAgICAgICAgICAgICAgc2Vzc2lvbl90
aWNrZXRfZmV0Y2hlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAgICAgICAg
ICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHByb3RvY29sID0gc2VsZi5fY3JlYXRlX3Byb3Rv
Y29sKAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHN0cmVhbV9oYW5kbGVyPXNlbGYuX3N0
cmVhbV9oYW5kbGVyCisgICAgICAgICAgICApCisgICAgICAgICAgICBwcm90b2NvbC5jb25uZWN0
aW9uX21hZGUoc2VsZi5fdHJhbnNwb3J0KQorCisgICAgICAgICAgICAjIHJlZ2lzdGVyIGNhbGxi
YWNrcworICAgICAgICAgICAgcHJvdG9jb2wuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkLCBw
cm90b2NvbD1wcm90b2NvbAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJvdG9jb2wuX2Nv
bm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyID0gcGFydGlhbCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9jb25uZWN0aW9uX2lkX3JldGlyZWQsIHByb3RvY29sPXByb3RvY29sCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIg
PSBwYXJ0aWFsKAorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fdGVybWluYXRlZCwg
cHJvdG9jb2w9cHJvdG9jb2wKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5fcHJv
dG9jb2xzW2hlYWRlci5kZXN0aW5hdGlvbl9jaWRdID0gcHJvdG9jb2wKKyAgICAgICAgICAgIHNl
bGYuX3Byb3RvY29sc1tjb25uZWN0aW9uLmhvc3RfY2lkXSA9IHByb3RvY29sCisKKyAgICAgICAg
aWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwcm90b2NvbC5kYXRhZ3JhbV9y
ZWNlaXZlZChkYXRhLCBhZGRyKQorCisgICAgZGVmIF9jb25uZWN0aW9uX2lkX2lzc3VlZChzZWxm
LCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6CisgICAgICAg
IHNlbGYuX3Byb3RvY29sc1tjaWRdID0gcHJvdG9jb2wKKworICAgIGRlZiBfY29ubmVjdGlvbl9p
ZF9yZXRpcmVkKAorICAgICAgICBzZWxmLCBjaWQ6IGJ5dGVzLCBwcm90b2NvbDogUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3Byb3Rv
Y29sc1tjaWRdID09IHByb3RvY29sCisgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQor
CisgICAgZGVmIF9jb25uZWN0aW9uX3Rlcm1pbmF0ZWQoc2VsZiwgcHJvdG9jb2w6IFF1aWNDb25u
ZWN0aW9uUHJvdG9jb2wpOgorICAgICAgICBmb3IgY2lkLCBwcm90byBpbiBsaXN0KHNlbGYuX3By
b3RvY29scy5pdGVtcygpKToKKyAgICAgICAgICAgIGlmIHByb3RvID09IHByb3RvY29sOgorICAg
ICAgICAgICAgICAgIGRlbCBzZWxmLl9wcm90b2NvbHNbY2lkXQorCisKK2FzeW5jIGRlZiBzZXJ2
ZSgKKyAgICBob3N0OiBzdHIsCisgICAgcG9ydDogaW50LAorICAgICosCisgICAgY29uZmlndXJh
dGlvbjogUXVpY0NvbmZpZ3VyYXRpb24sCisgICAgY3JlYXRlX3Byb3RvY29sOiBDYWxsYWJsZSA9
IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsCisgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcjogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAorICAgIHN0YXRl
bGVzc19yZXRyeTogYm9vbCA9IEZhbHNlLAorICAgIHN0cmVhbV9oYW5kbGVyOiBRdWljU3RyZWFt
SGFuZGxlciA9IE5vbmUsCispIC0+IFF1aWNTZXJ2ZXI6CisgICAgIiIiCisgICAgU3RhcnQgYSBR
VUlDIHNlcnZlciBhdCB0aGUgZ2l2ZW4gYGhvc3RgIGFuZCBgcG9ydGAuCisKKyAgICA6ZnVuYzpg
c2VydmVgIHJlcXVpcmVzIGEgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24uUXVp
Y0NvbmZpZ3VyYXRpb25gCisgICAgY29udGFpbmluZyBUTFMgY2VydGlmaWNhdGUgYW5kIHByaXZh
dGUga2V5IGFzIHRoZSBgYGNvbmZpZ3VyYXRpb25gYCBhcmd1bWVudC4KKworICAgIDpmdW5jOmBz
ZXJ2ZWAgYWxzbyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgorCisg
ICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFsbG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+
YXN5bmNpby5Qcm90b2NvbGAgdGhhdAorICAgICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQg
c2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xhc3MgYWNjZXB0aW5nIHRoZSBzYW1lCisgICAgICBh
cmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9j
b2xgIGFuZCByZXR1cm5pbmcKKyAgICAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMu
YXN5bmNpby5RdWljQ29ubmVjdGlvblByb3RvY29sYCBvciBhIHN1YmNsYXNzLgorICAgICogYGBz
ZXNzaW9uX3RpY2tldF9mZXRjaGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5
IHRoZSBUTFMKKyAgICAgIGVuZ2luZSB3aGVuIGEgc2Vzc2lvbiB0aWNrZXQgaXMgcHJlc2VudGVk
IGJ5IHRoZSBwZWVyLiBJdCBzaG91bGQgcmV0dXJuCisgICAgICB0aGUgc2Vzc2lvbiB0aWNrZXQg
d2l0aCB0aGUgc3BlY2lmaWVkIElEIG9yIGBOb25lYCBpZiBpdCBpcyBub3QgZm91bmQuCisgICAg
KiBgYHNlc3Npb25fdGlja2V0X2hhbmRsZXJgYCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUworICAgICAgZW5naW5lIHdoZW4gYSBuZXcgc2Vzc2lvbiB0aWNrZXQgaXMg
aXNzdWVkLiBJdCBzaG91bGQgc3RvcmUgdGhlIHNlc3Npb24KKyAgICAgIHRpY2tldCBmb3IgZnV0
dXJlIGxvb2t1cC4KKyAgICAqIGBgc3RhdGVsZXNzX3JldHJ5YGAgc3BlY2lmaWVzIHdoZXRoZXIg
YSBzdGF0ZWxlc3MgcmV0cnkgc2hvdWxkIGJlCisgICAgICBwZXJmb3JtZWQgcHJpb3IgdG8gaGFu
ZGxpbmcgbmV3IGNvbm5lY3Rpb25zLgorICAgICogYGBzdHJlYW1faGFuZGxlcmBgIGlzIGEgY2Fs
bGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcworICAgICAgY3JlYXRl
ZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFt
UmVhZGVyYAorICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdyaXRlcmAuCisgICAg
IiIiCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisKKyAgICBfLCBwcm90
b2NvbCA9IGF3YWl0IGxvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KAorICAgICAgICBsYW1i
ZGE6IFF1aWNTZXJ2ZXIoCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICBjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sLAorICAgICAgICAg
ICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcj1zZXNzaW9uX3RpY2tldF9mZXRjaGVyLAorICAgICAg
ICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAorICAg
ICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PXN0YXRlbGVzc19yZXRyeSwKKyAgICAgICAgICAgIHN0
cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyLAorICAgICAgICApLAorICAgICAgICBsb2NhbF9h
ZGRyPShob3N0LCBwb3J0KSwKKyAgICApCisgICAgcmV0dXJuIGNhc3QoUXVpY1NlcnZlciwgcHJv
dG9jb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4OGYxZWIxNTkyYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby93M2Mt
aW1wb3J0LmxvZwpAQCAtMCwwICsxLDIxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05v
bmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvYXN5bmNpby9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3lu
Y2lvL2NsaWVudC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1
ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E0Mjk4Zjk1NGMyMmU1Mzg5YTEyOWExZWU2NzVlOGVmZWQ4
N2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5w
eQpAQCAtMCwwICsxLDI5IEBACitmcm9tIC5fYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJl
YWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciAgIyBub3FhCisKK1VJTlRfVkFSX01BWCA9IDB4M0ZG
RkZGRkZGRkZGRkZGRgorCisKK2RlZiBlbmNvZGVfdWludF92YXIodmFsdWU6IGludCkgLT4gYnl0
ZXM6CisgICAgIiIiCisgICAgRW5jb2RlIGEgdmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVn
ZXIuCisgICAgIiIiCisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgYnVmLnB1c2hf
dWludF92YXIodmFsdWUpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIHNpemVfdWludF92
YXIodmFsdWU6IGludCkgLT4gaW50OgorICAgICIiIgorICAgIFJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHJlcXVpcmVkIHRvIGVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUKKyAgICBhcyBhIFFVSUMg
dmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuCisgICAgIiIiCisgICAgaWYgdmFsdWUg
PD0gMHgzRjoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRjoKKyAg
ICAgICAgcmV0dXJuIDIKKyAgICBlbGlmIHZhbHVlIDw9IDB4M0ZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA0CisgICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgIHJl
dHVybiA4CisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW50ZWdlciBpcyB0
b28gYmlnIGZvciBhIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9oMC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2gwL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlzIHJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5lY3Rp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIxZWU0ZTdkNmIxOGQ4
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0
aW9uLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2Zyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0CisK
K2Zyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVh
ZGVycywgSGVhZGVyc1JlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbgorZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZl
bnQsIFN0cmVhbURhdGFSZWNlaXZlZAorCitIMF9BTFBOID0gWyJocS0yNyIsICJocS0yNiIsICJo
cS0yNSJdCisKKworY2xhc3MgSDBDb25uZWN0aW9uOgorICAgICIiIgorICAgIEFuIEhUVFAvMC45
IGNvbm5lY3Rpb24gb2JqZWN0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
aWM6IFF1aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZDogRGlj
dFtpbnQsIGJvb2xdID0ge30KKyAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1
cmF0aW9uLmlzX2NsaWVudAorICAgICAgICBzZWxmLl9xdWljID0gcXVpYworCisgICAgZGVmIGhh
bmRsZV9ldmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gzRXZlbnRdOgorICAg
ICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0cmVhbV9pZCAlIDQp
ID09IDA6CisgICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgRmFsc2UpOgorICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgaHR0
cF9ldmVudHMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0cmVhbV9lbmRlZD1G
YWxzZSwgc3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAorICAgICAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxpdChiIiAiLCAxKQor
ICAgICAgICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1bKGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCldLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkW2V2ZW50LnN0cmVh
bV9pZF0gPSBUcnVlCisKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgc3Ry
ZWFtX2VuZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGh0dHBfZXZl
bnRzCisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRhOiBieXRl
cywgZW5kX3N0cmVhbTogYm9vbCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKKworICAgIGRlZiBzZW5kX2hl
YWRlcnMoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBl
bmRfc3RyZWFtOiBib29sID0gRmFsc2UKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGlmIHNlbGYu
X2lzX2NsaWVudDoKKyAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3QoaGVhZGVycykKKyAg
ICAgICAgICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBiIiAiICsgaGVhZGVy
c19kaWN0W2IiOnBhdGgiXSArIGIiXHJcbiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRh
dGEgPSBiIiIKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwg
ZGF0YSwgZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9o
MC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0
LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZjM2MWVhNDA1NTFiNjI4NmIzZTFlZTVmMjlhNzc3NGFlNjA3MGI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL3czYy1pbXBv
cnQubG9nCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
K05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9oMC9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC9jb25uZWN0aW9u
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisj
IFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZjhjNTQyODNjZDc3Yzdm
OWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvaDMvY29ubmVjdGlvbi5weQpAQCAtMCwwICsxLDc3NiBAQAoraW1wb3J0IGxv
Z2dpbmcKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKKworaW1wb3J0IHB5bHNxcGFjaworCitmcm9tIGFp
b3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgZW5jb2RlX3VpbnRf
dmFyCitmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCisgICAgRGF0YVJlY2VpdmVkLAor
ICAgIEgzRXZlbnQsCisgICAgSGVhZGVycywKKyAgICBIZWFkZXJzUmVjZWl2ZWQsCisgICAgUHVz
aFByb21pc2VSZWNlaXZlZCwKKykKK2Zyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBO
b0F2YWlsYWJsZVB1c2hJREVycm9yCitmcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9y
dCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCitmcm9tIGFpb3F1aWMu
cXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFp
b3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorCitsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcigiaHR0cDMiKQorCitIM19BTFBOID0gWyJoMy0yNyIsICJoMy0yNiIsICJo
My0yNSJdCisKKworY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgorICAgIEhUVFBfTk9fRVJST1Ig
PSAweDEwMAorICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4MTAxCisgICAgSFRU
UF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCisgICAgSFRUUF9TVFJFQU1fQ1JFQVRJT05fRVJST1Ig
PSAweDEwMworICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4MTA0CisgICAgSFRU
UF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKKyAgICBIVFRQX0ZSQU1FX0VSUk9SID0gMHgxMDYK
KyAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKKyAgICBIVFRQX0lEX0VSUk9SID0gMHgx
MDgKKyAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKKyAgICBIVFRQX01JU1NJTkdfU0VU
VElOR1MgPSAweDEwQQorICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4MTBCCisgICAgSFRU
UF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCisgICAgSFRUUF9SRVFVRVNUX0lOQ09NUExFVEUg
PSAweDEwRAorICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQorICAgIEhUVFBfQ09OTkVD
VF9FUlJPUiA9IDB4MTBGCisgICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0gMHgxMTAKKyAgICBI
VFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKKyAgICBIVFRQX1FQQUNLX0VO
Q09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKKyAgICBIVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFN
X0VSUk9SID0gMHgyMDIKKworCitjbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6CisgICAgREFUQSA9
IDB4MAorICAgIEhFQURFUlMgPSAweDEKKyAgICBQUklPUklUWSA9IDB4MgorICAgIENBTkNFTF9Q
VVNIID0gMHgzCisgICAgU0VUVElOR1MgPSAweDQKKyAgICBQVVNIX1BST01JU0UgPSAweDUKKyAg
ICBHT0FXQVkgPSAweDcKKyAgICBNQVhfUFVTSF9JRCA9IDB4RAorICAgIERVUExJQ0FURV9QVVNI
ID0gMHhFCisKKworY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgorICAgIElOSVRJQUwgPSAwCisg
ICAgQUZURVJfSEVBREVSUyA9IDEKKyAgICBBRlRFUl9UUkFJTEVSUyA9IDIKKworCitjbGFzcyBT
ZXR0aW5nKEludEVudW0pOgorICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lUWSA9IDEKKyAgICBT
RVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKKyAgICBRUEFDS19CTE9DS0VEX1NUUkVB
TVMgPSA3CisgICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKKworCitjbGFzcyBTdHJl
YW1UeXBlKEludEVudW0pOgorICAgIENPTlRST0wgPSAwCisgICAgUFVTSCA9IDEKKyAgICBRUEFD
S19FTkNPREVSID0gMgorICAgIFFQQUNLX0RFQ09ERVIgPSAzCisKKworY2xhc3MgUHJvdG9jb2xF
cnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGVy
cm9ycy4KKworICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIEFQSSB1c2Vy
LCB0aGV5IGFyZSBoYW5kbGVkCisgICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlvbi5oYW5kbGVfZXZl
bnRgLgorICAgICIiIgorCisgICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0dFTkVSQUxf
UFJPVE9DT0xfRVJST1IKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFzb25fcGhyYXNlOiBz
dHIgPSAiIik6CisgICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKKwor
CitjbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJvcik6CisgICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVECisKKwor
Y2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3Jf
Y29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xh
c3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6CisgICAgZXJyb3JfY29k
ZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SCisKKworY2xhc3Mg
U3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKKyAgICBlcnJvcl9jb2RlID0gRXJy
b3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCisKKworY2xhc3MgRnJhbWVVbmV4cGVj
dGVkKFByb3RvY29sRXJyb3IpOgorICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRUUF9GUkFN
RV9VTkVYUEVDVEVECisKKworZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBlOiBpbnQsIGZyYW1l
X2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKKyAgICBmcmFtZV9sZW5ndGggPSBsZW4oZnJhbWVfZGF0
YSkKKyAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsgMTYpCisgICAgYnVm
LnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKKyAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZV9s
ZW5ndGgpCisgICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKKyAgICByZXR1cm4gYnVmLmRh
dGEKKworCitkZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2ludCwgaW50XSkgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCisgICAgZm9yIHNldHRpbmcs
IHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNl
dHRpbmcpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQorICAgIHJldHVybiBidWYu
ZGF0YQorCisKK2RlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykgLT4gaW50OgorICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgbWF4X3B1c2hfaWQgPSBidWYucHVsbF91aW50
X3ZhcigpCisgICAgYXNzZXJ0IGJ1Zi5lb2YoKQorICAgIHJldHVybiBtYXhfcHVzaF9pZAorCisK
K2RlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQsIGludF06CisgICAg
YnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICBzZXR0aW5ncyA9IFtdCisgICAgd2hpbGUgbm90
IGJ1Zi5lb2YoKToKKyAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAg
ICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHNldHRpbmdzLmFwcGVuZCgo
c2V0dGluZywgdmFsdWUpKQorICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQorCisKK2RlZiBxbG9n
X2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBE
aWN0OgorICAgIHJldHVybiB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0
aCksCisgICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0sCisgICAgICAgICJz
dHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICB9CisKKworZGVmIHFsb2dfZW5jb2RlX2hl
YWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKKyAgICByZXR1cm4gWworICAg
ICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBoWzFdLmRlY29kZSgi
dXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCisgICAgXQorCisKK2RlZiBxbG9nX2VuY29kZV9oZWFk
ZXJzX2ZyYW1lKAorICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMsIHN0cmVh
bV9pZDogaW50CispIC0+IERpY3Q6CisgICAgcmV0dXJuIHsKKyAgICAgICAgImJ5dGVfbGVuZ3Ro
Ijogc3RyKGJ5dGVfbGVuZ3RoKSwKKyAgICAgICAgImZyYW1lIjogeyJmcmFtZV90eXBlIjogImhl
YWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyl9LAorICAgICAg
ICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgfQorCisKK2RlZiBxbG9nX2VuY29k
ZV9wdXNoX3Byb21pc2VfZnJhbWUoCisgICAgYnl0ZV9sZW5ndGg6IGludCwgaGVhZGVyczogSGVh
ZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAorKSAtPiBEaWN0OgorICAgIHJldHVy
biB7CisgICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCksCisgICAgICAgICJm
cmFtZSI6IHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJvbWlzZSIsCisgICAg
ICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyksCisgICAgICAg
ICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmVh
bV9pZCI6IHN0cihzdHJlYW1faWQpLAorICAgIH0KKworCitjbGFzcyBIM1N0cmVhbToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYu
YmxvY2tlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9zaXplOiBPcHRpb25h
bFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLmVu
ZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAg
IHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3RhdGUuSU5J
VElBTAorICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVyc1N0YXRlID0gSGVh
ZGVyc1N0YXRlLklOSVRJQUwKKyAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRpb25hbFtpbnRdID0g
Tm9uZQorICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAorICAgICAgICBzZWxmLnN0
cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisKK2NsYXNzIEgzQ29ubmVjdGlvbjoK
KyAgICAiIiIKKyAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBvYmplY3QuCisKKyAg
ICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b25gIGluc3RhbmNlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWM6IFF1
aWNDb25uZWN0aW9uKToKKyAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5ID0gNDA5Ngor
ICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgorCisgICAgICAgIHNlbGYuX2lzX2Ns
aWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKKyAgICAgICAgc2VsZi5faXNfZG9u
ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCisgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVpY19sb2dnZXIKKyAg
ICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAorICAgICAgICAgICAgc2Vs
Zi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAorICAgICAgICBzZWxmLl9k
ZWNvZGVyX2J5dGVzX3NlbnQgPSAwCisgICAgICAgIHNlbGYuX2VuY29kZXIgPSBweWxzcXBhY2su
RW5jb2RlcigpCisgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgPSAwCisgICAg
ICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKKyAgICAgICAgc2VsZi5fc3RyZWFtOiBE
aWN0W2ludCwgSDNTdHJlYW1dID0ge30KKworICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZDogT3B0
aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQorICAgICAgICBzZWxm
Ll9uZXh0X3B1c2hfaWQ6IGludCA9IDAKKworICAgICAgICBzZWxmLl9sb2NhbF9jb250cm9sX3N0
cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rl
cl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2FsX2Vu
Y29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorCisgICAgICAgIHNlbGYuX3Bl
ZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNlbGYu
X3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgICAgIHNl
bGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAg
ICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKKworICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwg
ZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgIiIiCisgICAgICAg
IEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRUUCBldmVudHMuCisK
KyAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5kbGUuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFu
ZCBub3Qgc2VsZi5faXNfZG9uZToKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50LnN0cmVh
bV9pZAorICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbV9pZCAl
IDQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2VpdmVfcmVxdWVz
dF9vcl9wdXNoX2RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2ZW50LmRh
dGEsIGV2ZW50LmVuZF9zdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVhbQorICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJvciBhcyBl
eGM6CisgICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljLmNsb3NlKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWV4Yy5l
cnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBzZW5kX3B1c2hfcHJvbWlzZShzZWxm
LCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50OgorICAgICAgICAiIiIK
KyAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgc3Ry
ZWFtLgorCisgICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGljaCBoZWFkZXJzIGFu
ZCBkYXRhIGNhbiBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRoZSBzdHJl
YW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KKyAgICAgICAgOnBhcmFtIGhlYWRlcnM6
IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgorICAgICAgICAiIiIKKyAg
ICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZlcnMgbWF5IHNlbmQg
YSBwdXNoIHByb21pc2UuIgorICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9pZCBpcyBOb25lIG9y
IHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKKyAgICAgICAgICAgIHJh
aXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKKworICAgICAgICAjIHNlbmQgcHVzaCBwcm9taXNl
CisgICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKKyAgICAgICAgc2VsZi5fbmV4
dF9wdXNoX2lkICs9IDEKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAg
ICAgICAgICAgc3RyZWFtX2lkLAorICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCisgICAgICAgICAgICAgICAgZW5jb2RlX3Vp
bnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJz
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIMKgY3JlYXRlIHB1c2gg
c3RyZWFtCisgICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9zdHJlYW0o
U3RyZWFtVHlwZS5QVVNIKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEocHVz
aF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKKworICAgICAgICByZXR1cm4g
cHVzaF9zdHJlYW1faWQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmll
dmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0
aGUgUVVJQworICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24u
UXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhl
IGRhdGEuCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5kLgorICAgICAgICA6
cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KKyAgICAgICAgIiIi
CisgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIHN0cmVhbSA9
IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKKyAgICAgICAgaWYgc3RyZWFt
LmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUzoKKyAgICAg
ICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBp
biB0aGlzIHN0YXRlIikKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxv
Z19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAg
ICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9cWxvZ19lbmNv
ZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9pZD1zdHJlYW1faWQp
LAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgK
KyAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5EQVRBLCBkYXRh
KSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgc2VuZF9oZWFkZXJzKAorICAgICAg
ICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5kX3N0cmVhbTogYm9v
bCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU2VuZCBoZWFk
ZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCisKKyAgICAgICAgVG8gcmV0cmlldmUgZGF0YWdyYW0g
d2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0aGUgUVVJQworICAg
ICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nvbm5lY3Rp
b24uZGF0YWdyYW1zX3RvX3NlbmRgCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICA6cGFyYW0g
c3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGhlYWRlcnMuCisg
ICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNlbmQuCisgICAgICAg
IDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFtLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKKyAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQorICAgICAgICBpZiBz
dHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUzoK
KyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBpcyBub3Qg
YWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICBmcmFtZV9kYXRhID0gc2VsZi5fZW5j
b2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJodHRw
IiwKKyAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCisgICAgICAgICAgICAg
ICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBi
eXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywgc3RyZWFtX2lkPXN0
cmVhbV9pZAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICApCisKKyAgICAgICAgIyB1
cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycworICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19z
ZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgorICAgICAgICAgICAgc3RyZWFtLmhl
YWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVyc1N0YXRl
LkFGVEVSX1RSQUlMRVJTCisgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YSgKKyAg
ICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBmcmFt
ZV9kYXRhKSwgZW5kX3N0cmVhbQorICAgICAgICApCisKKyAgICBkZWYgX2NyZWF0ZV91bmlfc3Ry
ZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAg
IENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVuIHR5cGUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcXVpYy5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV90eXBlKSkK
KyAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAorCisgICAgZGVmIF9kZWNvZGVfaGVhZGVycyhzZWxm
LCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdKSAtPiBIZWFkZXJz
OgorICAgICAgICAiIiIKKyAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBk
ZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgorCisgICAgICAgIFRoaXMgaXMg
Y2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVjb21lcyB1bmJsb2Nr
ZWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmcmFtZV9kYXRh
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNlbGYuX2RlY29k
ZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRfaGVhZGVyKHN0cmVh
bV9pZCwgZnJhbWVfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfc2VudCAr
PSBsZW4oZGVjb2RlcikKKyAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShz
ZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKKyAgICAgICAgZXhjZXB0IHB5
bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFFw
YWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCisKKyAgICAgICAgcmV0dXJuIGhlYWRl
cnMKKworICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lkOiBpbnQsIGhlYWRl
cnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAgICAgICAgRW5jb2RlIGEgSEVB
REVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVuY29kZXIgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9IHNlbGYuX2VuY29k
ZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fZW5jb2Rlcl9ieXRl
c19zZW50ICs9IGxlbihlbmNvZGVyKQorICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCisgICAgICAgIHJldHVy
biBmcmFtZV9kYXRhCisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVh
bV9pZDogaW50KSAtPiBIM1N0cmVhbToKKyAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBpbiBzZWxm
Ll9zdHJlYW06CisgICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXSA9IEgzU3RyZWFt
KHN0cmVhbV9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAg
ICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6IGludCwgZnJhbWVf
ZGF0YTogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFt
ZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6CisgICAgICAgICAgICBz
ZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbmNvZGVy
ID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICBtYXhfdGFi
bGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NBUEFDSVRZ
LCAwKSwKKyAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGluZ3MuZ2V0KFNldHRp
bmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9p
ZCwgZW5jb2RlcikKKyAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5NQVhfUFVT
SF9JRDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBNQVhfUFVTSF9JRCIp
CisgICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9wdXNoX2lkKGZyYW1l
X2RhdGEpCisgICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCisgICAgICAgICAgICBGcmFtZVR5
cGUuREFUQSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5EVVBMSUNBVEVfUFVT
SCwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSW52YWxp
ZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKKworICAgIGRlZiBfaGFuZGxlX3JlcXVl
c3Rfb3JfcHVzaF9mcmFtZSgKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZnJhbWVfdHlwZTogaW50
LAorICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCisgICAgICAgIHN0cmVhbTog
SDNTdHJlYW0sCisgICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKKyAgICApIC0+IExpc3RbSDNF
dmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBmcmFtZSByZWNlaXZlZCBvbiBh
IHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICBodHRwX2V2ZW50
czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5
cGUuREFUQToKKyAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCisgICAg
ICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRlcnNTdGF0ZS5BRlRF
Ul9IRUFERVJTOgorICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBm
cmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKKworICAgICAgICAgICAgaWYgc3Ry
ZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lk
PXN0cmVhbS5wdXNoX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0
cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6CisgICAgICAgICAgICAjIGNo
ZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAorICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRl
cnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2Vk
IGluIHRoaXMgc3RhdGUiKQorCisgICAgICAgICAgICAjIHRyeSB0byBkZWNvZGUgSEVBREVSUywg
bWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCisgICAgICAgICAgICBoZWFkZXJzID0g
c2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKKworICAg
ICAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
KyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAg
ICBldmVudD0iZnJhbWVfcGFyc2VkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1xbG9nX2Vu
Y29kZV9oZWFkZXJzX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9
c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZnJh
bWVfZGF0YSBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxlbihmcmFtZV9k
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB1cGRhdGUgc3Rh
dGUgYW5kIGVtaXQgaGVhZGVycworICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNfcmVjdl9z
dGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgICAgICBzdHJlYW0uaGVh
ZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9IEhlYWRl
cnNTdGF0ZS5BRlRFUl9UUkFJTEVSUworICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBwZW5kKAor
ICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVh
ZGVycz1oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0cmVhbS5wdXNoX2lk
LAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisgICAgICAgIGVsaWYgc3RyZWFtLmZyYW1lX3R5cGUgPT0gRnJh
bWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICAgICAgcmFpc2UgRnJhbWVV
bmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNFIikKKyAgICAgICAg
ICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCisgICAgICAgICAgICBwdXNo
X2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgaGVhZGVycyA9IHNl
bGYuX2RlY29kZV9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsIGZy
YW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW50
PSJmcmFtZV9wYXJzZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX3B1
c2hfcHJvbWlzZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVuZ3RoPWxl
bihmcmFtZV9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBlbWl0IGV2ZW50CisgICAg
ICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgUHVzaFByb21pc2VS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLCBwdXNoX2lkPXB1
c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKQorICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAorICAgICAgICAgICAgRnJh
bWVUeXBlLlBSSU9SSVRZLAorICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNFTF9QVVNILAorICAg
ICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgRnJhbWVUeXBlLlBVU0hf
UFJPTUlTRSwKKyAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCisgICAgICAgICAgICBGcmFt
ZVR5cGUuTUFYX1BVU0hfSUQsCisgICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRFX1BVU0gs
CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoCisgICAgICAg
ICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVhbSIKKyAgICAgICAg
ICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCisgICAgICAgICAgICAgICAgZWxzZSAi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAg
ICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgZGVmIF9pbml0X2Nvbm5lY3Rpb24oc2VsZikg
LT4gTm9uZToKKyAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncworICAgICAgICBzZWxmLl9sb2Nh
bF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKFN0cmVhbVR5cGUu
Q09OVFJPTCkKKyAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAg
ICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCisgICAgICAgICAgICBlbmNvZGVfZnJh
bWUoCisgICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAorICAgICAgICAgICAgICAg
IGVuY29kZV9zZXR0aW5ncygKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNlbGYuX21heF90YWJs
ZV9jYXBhY2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tfQkxPQ0tF
RF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBp
ZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAorICAgICAgICAgICAgICAgIHNl
bGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGVuY29kZV9mcmFt
ZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxmLl9tYXhfcHVzaF9p
ZCkpLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgY3JlYXRlIGVuY29kZXIgYW5kIGRlY29k
ZXIgc3RyZWFtcworICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9pZCA9IHNlbGYu
X2NyZWF0ZV91bmlfc3RyZWFtKAorICAgICAgICAgICAgU3RyZWFtVHlwZS5RUEFDS19FTkNPREVS
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQgPSBzZWxm
Ll9jcmVhdGVfdW5pX3N0cmVhbSgKKyAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tfREVDT0RF
UgorICAgICAgICApCisKKyAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoCisg
ICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1fZW5kZWQ6
IGJvb2wKKyAgICApIC0+IExpc3RbSDNFdmVudF06CisgICAgICAgICIiIgorICAgICAgICBIYW5k
bGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCisgICAgICAgICIi
IgorICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCisKKyAgICAgICAgc3Ry
ZWFtLmJ1ZmZlciArPSBkYXRhCisgICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKKyAgICAgICAgICAg
IHN0cmVhbS5lbmRlZCA9IFRydWUKKyAgICAgICAgaWYgc3RyZWFtLmJsb2NrZWQ6CisgICAgICAg
ICAgICByZXR1cm4gaHR0cF9ldmVudHMKKworICAgICAgICAjIHNob3J0Y3V0IGZvciBEQVRBIGZy
YW1lIGZyYWdtZW50cworICAgICAgICBpZiAoCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfdHlw
ZSA9PSBGcmFtZVR5cGUuREFUQQorICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV9zaXplIGlz
IG5vdCBOb25lCisgICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIpIDwgc3RyZWFtLmZy
YW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9c3Ry
ZWFtLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBsZW4oc3RyZWFtLmJ1
ZmZlcikKKyAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHJldHVy
biBodHRwX2V2ZW50cworCisgICAgICAgICMgaGFuZGxlIGxvbmUgRklOCisgICAgICAgIGlmIHN0
cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICBodHRwX2V2ZW50
cy5hcHBlbmQoCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
ICAgICBkYXRhPWIiIiwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVzaF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cworCisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCisgICAgICAgIGNvbnN1bWVkID0gMAorCisg
ICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6CisgICAgICAgICAgICAjIGZldGNoIG5leHQgZnJh
bWUgaGVhZGVyCisgICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3R5cGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9z
aXplID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJS
ZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgY29u
c3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV90eXBlID09IEZy
YW1lVHlwZS5EQVRBCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdv
cnk9Imh0dHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3BhcnNlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2RhdGFfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFtLmZyYW1lX3NpemUs
IHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgaG93IG11Y2ggZGF0
YSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc3RyZWFtLmZyYW1l
X3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQorICAgICAgICAgICAgaWYgc3RyZWFtLmZy
YW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBzdHJlYW0uZnJhbWVf
c2l6ZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIHJlYWQgYXZhaWxh
YmxlIGRhdGEKKyAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9ieXRlcyhjaHVua19z
aXplKQorICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisKKyAgICAgICAgICAgICMg
ZGV0ZWN0IGVuZCBvZiBmcmFtZQorICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUgLT0gY2h1
bmtfc2l6ZQorICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXplOgorICAgICAgICAg
ICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQorCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lX2RhdGE9ZnJhbWVfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVuZGVkIGFu
ZCBidWYuZW9mKCksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6CisgICAgICAgICAgICAg
ICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc3RyZWFtLmJsb2NrZWRf
ZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKKyAgICAgICAgc3RyZWFt
LmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgIHJldHVybiBodHRw
X2V2ZW50cworCisgICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKKyAgICAgICAgc2Vs
Ziwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9vbAorICAg
ICkgLT4gTGlzdFtIM0V2ZW50XToKKyAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNFdmVudF0g
PSBbXQorCisgICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQorICAgICAgICBpZiBzdHJlYW1f
ZW5kZWQ6CisgICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCisKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKKyAgICAgICAgY29uc3VtZWQgPSAwCisgICAgICAg
IHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCisKKyAgICAgICAgd2hpbGUgc3Ry
ZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVmLmVvZigpOgorICAg
ICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9uYWwgc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5cGUgPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJvcjoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9IGJ1Zi50
ZWxsKCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQorICAgICAgICAgICAgICAg
IGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9yKCJPbmx5IG9u
ZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVI6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9y
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNvZGVyIHN0
cmVhbSBpcyBhbGxvd2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFtLnN0cmVhbV9pZAor
ICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBB
Q0tfRU5DT0RFUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9lbmNvZGVyX3N0
cmVhbV9pZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0cmVh
bUNyZWF0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIFFQ
QUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQgPSBzdHJl
YW0uc3RyZWFtX2lkCisKKyAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJl
YW1UeXBlLkNPTlRST0w6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0IGZyYW1lCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlID0gYnVmLnB1
bGxfdWludF92YXIoKQorICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9i
eXRlcyhmcmFtZV9sZW5ndGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJv
cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb250cm9sX2ZyYW1l
KGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6CisgICAgICAgICAgICAgICAgIyBmZXRjaCBwdXNoIGlk
CisgICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2hfaWQgPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFk
RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKKworICAgICAgICAgICAgICAgICMgcmVtb3ZlIHByb2Nl
c3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgICAgICAgICAgc3RyZWFtLmJ1ZmZlciA9IHN0
cmVhbS5idWZmZXJbY29uc3VtZWQ6XQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
Y2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbV9lbmRlZCkKKyAg
ICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBBQ0tfREVD
T0RFUjoKKyAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBkZWNvZGVyCisg
ICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50
ZWxsKCkpCisgICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyLmZlZWRfZGVjb2Rl
cihkYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVjb2RlclN0cmVhbUVy
cm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvZGVyU3RyZWFt
RXJyb3IoKSBmcm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNfcmVj
ZWl2ZWQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9
PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6CisgICAgICAgICAgICAgICAgIyBmZWVkIHVuZnJh
bWVkIGRhdGEgdG8gZW5jb2RlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVsbF9ieXRl
cyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdW5i
bG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNvZGVyKGRhdGEpKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVhbUVycm9yIGFzIGV4
YzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoKSBm
cm9tIGV4YworICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgKz0g
bGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgdW5rbm93biBz
dHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCisgICAgICAgICAgICAgICAgYnVmLnNlZWsoYnVmLmNh
cGFjaXR5KQorICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQorCisgICAgICAg
ICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCisgICAgICAgIHN0cmVhbS5idWZm
ZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KKworICAgICAgICAjIHByb2Nlc3MgdW5ibG9j
a2VkIHN0cmVhbXMKKyAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2NrZWRfc3RyZWFtczoK
KyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCisKKyAgICAgICAg
ICAgICMgcmVzdW1lIGhlYWRlcnMKKyAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1zdHJl
YW0sCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQgYW5kIG5v
dCBzdHJlYW0uYnVmZmVyLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAg
ICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKKyAgICAgICAgICAgIHN0cmVhbS5ibG9ja2Vk
X2ZyYW1lX3NpemUgPSBOb25lCisKKyAgICAgICAgICAgICMgcmVzdW1lIHByb2Nlc3NpbmcKKyAg
ICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6CisgICAgICAgICAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3JlcXVlc3Rfb3JfcHVz
aF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QyMWM1YWJjNDI3MGMyZThmMWJlNThhMDA5YWU3NTI4MTJkMWExNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9ldmVudHMucHkK
QEAgLTAsMCArMSw2NiBAQAorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCisKK0hlYWRlcnMgPSBMaXN0W1R1
cGxlW2J5dGVzLCBieXRlc11dCisKKworY2xhc3MgSDNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBIVFRQLzMgZXZlbnRzLgorICAgICIiIgorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IERhdGFSZWNlaXZlZChIM0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQgb24gYSBzdHJlYW0gZnJvbQor
ICAgIHRoZSByZW1vdGUgcGVlci4KKyAgICAiIiIKKworICAgIGRhdGE6IGJ5dGVzCisgICAgIlRo
ZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJU
aGUgSUQgb2YgdGhlIHN0cmVhbSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworICAgIHN0
cmVhbV9lbmRlZDogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBG
SU4gYml0IHNldC4iCisKKyAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICJU
aGUgUHVzaCBJRCBvciBgTm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKKworCitAZGF0YWNs
YXNzCitjbGFzcyBIZWFkZXJzUmVjZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIEhl
YWRlcnNSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBoZWFkZXJzIGFyZSByZWNlaXZl
ZC4KKyAgICAiIiIKKworICAgIGhlYWRlcnM6IEhlYWRlcnMKKyAgICAiVGhlIGhlYWRlcnMuIgor
CisgICAgc3RyZWFtX2lkOiBpbnQKKyAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGhlYWRl
cnMgd2VyZSByZWNlaXZlZCBmb3IuIgorCisgICAgc3RyZWFtX2VuZGVkOiBib29sCisgICAgIldo
ZXRoZXIgdGhlIFNUUkVBTSBmcmFtZSBoYWQgdGhlIEZJTiBiaXQgc2V0LiIKKworICAgIHB1c2hf
aWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgIlRoZSBQdXNoIElEIG9yIGBOb25lYCBpZiB0
aGlzIGlzIG5vdCBhIHB1c2guIgorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFB1c2hQcm9taXNlUmVj
ZWl2ZWQoSDNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIFB1c2hlZFN0cmVhbVJlY2VpdmVkIGV2
ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcHVzaGVkIHN0cmVhbSBoYXMgYmVlbgorICAgIHJlY2Vp
dmVkIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICIiIgorCisgICAgaGVhZGVyczogSGVhZGVy
cworICAgICJUaGUgcmVxdWVzdCBoZWFkZXJzLiIKKworICAgIHB1c2hfaWQ6IGludAorICAgICJU
aGUgUHVzaCBJRCBvZiB0aGUgcHVzaCBwcm9taXNlLiIKKworICAgIHN0cmVhbV9pZDogaW50Cisg
ICAgIlRoZSBTdHJlYW0gSUQgb2YgdGhlIHN0cmVhbSB0aGF0IHRoZSBwdXNoIGlzIHJlbGF0ZWQg
dG8uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXhjZXB0aW9ucy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTIwMGMxZDYxZmE1YjNhMTE1YjQzNDY0ZDU2N2VhM2FhMjg1NzZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKQEAgLTAsMCAr
MSwxMCBAQAorY2xhc3MgSDNFcnJvcihFeGNlcHRpb24pOgorICAgICIiIgorICAgIEJhc2UgY2xh
c3MgZm9yIEhUVFAvMyBleGNlcHRpb25zLgorICAgICIiIgorCisKK2NsYXNzIE5vQXZhaWxhYmxl
UHVzaElERXJyb3IoSDNFcnJvcik6CisgICAgIiIiCisgICAgVGhlcmUgYXJlIG5vIGF2YWlsYWJs
ZSBwdXNoIElEcyBsZWZ0LgorICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2gzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL3cz
Yy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzYzZTliNjA4MGIwZWYzZThiZDY4YWE1MzMwMjQ5
ZGZmMTIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL2gzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvZXZlbnRzLnB5CisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9w
eS50eXBlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTY0MmY3OWYyMWQ4NzJmMDEwOTc5ZGNmNmYwYzRhNDE1YWNj
MTlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVk
CkBAIC0wLDAgKzEgQEAKK01hcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9fX2lu
aXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJj
MjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19p
bml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29u
ZmlndXJhdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZpZ3VyYXRp
b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3ZjNlYTYxZDBkYTA3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NvbmZp
Z3VyYXRpb24ucHkKQEAgLTAsMCArMSwxMjQgQEAKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRh
dGFjbGFzcywgZmllbGQKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCitmcm9tIHR5cGluZyBpbXBv
cnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4dElPLCBVbmlvbgorCitmcm9tIC4udGxzIGltcG9y
dCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9wcml2YXRlX2tleSwgbG9hZF9wZW1feDUwOV9jZXJ0
aWZpY2F0ZXMKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgorZnJvbSAucGFja2V0IGlt
cG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0NvbmZp
Z3VyYXRpb246CisgICAgIiIiCisgICAgQSBRVUlDIGNvbmZpZ3VyYXRpb24uCisgICAgIiIiCisK
KyAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICAiIiIK
KyAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFMUE4gcHJvdG9jb2xzLgorICAgICIiIgorCisgICAg
Y29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9IDgKKyAgICAiIiIKKyAgICBUaGUgbGVuZ3RoIGlu
IGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24gSURzLgorICAgICIiIgorCisgICAgaWRsZV90aW1l
b3V0OiBmbG9hdCA9IDYwLjAKKyAgICAiIiIKKyAgICBUaGUgaWRsZSB0aW1lb3V0IGluIHNlY29u
ZHMuCisKKyAgICBUaGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkIGlmIG5vdGhpbmcgaXMgcmVj
ZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KKyAgICAiIiIKKworICAgIGlzX2NsaWVudDog
Ym9vbCA9IFRydWUKKyAgICAiIiIKKyAgICBXaGV0aGVyIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRl
IG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCisgICAgIiIiCisKKyAgICBtYXhfZGF0YTogaW50ID0g
MTA0ODU3NgorICAgICIiIgorICAgIENvbm5lY3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQu
CisgICAgIiIiCisKKyAgICBtYXhfc3RyZWFtX2RhdGE6IGludCA9IDEwNDg1NzYKKyAgICAiIiIK
KyAgICBQZXItc3RyZWFtIGZsb3cgY29udHJvbCBsaW1pdC4KKyAgICAiIiIKKworICAgIHF1aWNf
bG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyXSA9IE5vbmUKKyAgICAiIiIKKyAgICBUaGUgOmNs
YXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5RdWljTG9nZ2VyYCBpbnN0YW5jZSB0byBsb2cgZXZl
bnRzIHRvLgorICAgICIiIgorCisgICAgc2VjcmV0c19sb2dfZmlsZTogVGV4dElPID0gTm9uZQor
ICAgICIiIgorICAgIEEgZmlsZS1saWtlIG9iamVjdCBpbiB3aGljaCB0byBsb2cgdHJhZmZpYyBz
ZWNyZXRzLgorCisgICAgVGhpcyBpcyB1c2VmdWwgdG8gYW5hbHl6ZSB0cmFmZmljIGNhcHR1cmVz
IHdpdGggV2lyZXNoYXJrLgorICAgICIiIgorCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lCisgICAgIiIiCisgICAgVGhlIHNlcnZlciBuYW1lIHRvIHNlbmQgZHVyaW5nIHRo
ZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgorCisgICAgLi4gbm90
ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNsaWVudHMuCisgICAgIiIiCisKKyAgICBzZXNzaW9u
X3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgIiIiCisgICAgVGhl
IFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3Igc2Vzc2lvbiByZXN1
bXB0aW9uLgorICAgICIiIgorCisgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZQorICAgIGNhcGF0aDogT3B0aW9uYWxbc3Ry
XSA9IE5vbmUKKyAgICBjZXJ0aWZpY2F0ZTogQW55ID0gTm9uZQorICAgIGNlcnRpZmljYXRlX2No
YWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKyAgICBtYXhfZGF0
YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBwcml2YXRlX2tleTog
QW55ID0gTm9uZQorICAgIHF1YW50dW1fcmVhZGluZXNzX3Rlc3Q6IGJvb2wgPSBGYWxzZQorICAg
IHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRf
ZmFjdG9yeT1sYW1iZGE6IFsKKyAgICAgICAgICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRf
MjcsCisgICAgICAgICAgICBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI2LAorICAgICAgICAg
ICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICAgICAgXQorICAgICkKKyAgICB2
ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBsb2FkX2NlcnRfY2hh
aW4oCisgICAgICAgIHNlbGYsCisgICAgICAgIGNlcnRmaWxlOiBQYXRoTGlrZSwKKyAgICAgICAg
a2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2VdID0gTm9uZSwKKyAgICAgICAgcGFzc3dvcmQ6IE9w
dGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBj
ZXJ0aWZpY2F0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3BlbihjZXJ0ZmlsZSwgInJi
IikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBsb2FkX3BlbV94NTA5X2NlcnRp
ZmljYXRlcyhmcC5yZWFkKCkpCisgICAgICAgIHNlbGYuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0
ZXNbMF0KKyAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbiA9IGNlcnRpZmljYXRlc1sxOl0K
KworICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVu
KGtleWZpbGUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNlbGYucHJpdmF0ZV9rZXkg
PSBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgZnAucmVhZCgpLAor
ICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZC5lbmNvZGUoInV0ZjgiKQorICAg
ICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhc3N3b3JkLCBzdHIpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGxv
YWRfdmVyaWZ5X2xvY2F0aW9ucygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgY2FmaWxlOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwK
KyAgICAgICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9y
aXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvCisgICAgICAgIHZhbGlkYXRlIG90aGVyIHBl
ZXJzJyBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNhZmlsZSA9IGNh
ZmlsZQorICAgICAgICBzZWxmLmNhcGF0aCA9IGNhcGF0aAorICAgICAgICBzZWxmLmNhZGF0YSA9
IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVj
dGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDYxZGY0ZmMxOTE2ZmRhM2VmYjQ2MWU2NjczNGVjMzU5YWUwYzMyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkK
QEAgLTAsMCArMSwyNjUyIEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3MKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGRhdGFjbGFzc2VzIGlt
cG9ydCBkYXRhY2xhc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorZnJvbSB0eXBpbmcgaW1wb3J0
IEFueSwgRGVxdWUsIERpY3QsIEZyb3plblNldCwgTGlzdCwgT3B0aW9uYWwsIFNlcXVlbmNlLCBU
dXBsZQorCitmcm9tIC4uIGltcG9ydCB0bHMKK2Zyb20gLi5idWZmZXIgaW1wb3J0IFVJTlRfVkFS
X01BWCwgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIHNpemVfdWludF92YXIKK2Zyb20gLiBpbXBv
cnQgZXZlbnRzCitmcm9tIC5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgor
ZnJvbSAuY3J5cHRvIGltcG9ydCBDcnlwdG9FcnJvciwgQ3J5cHRvUGFpciwgS2V5VW5hdmFpbGFi
bGVFcnJvcgorZnJvbSAubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyVHJhY2UKK2Zyb20gLnBhY2tl
dCBpbXBvcnQgKAorICAgIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tF
VF9UWVBFX0hBTkRTSEFLRSwKKyAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9U
WVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVfUkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVS
T19SVFQsCisgICAgUFJPQklOR19GUkFNRV9UWVBFUywKKyAgICBSRVRSWV9JTlRFR1JJVFlfVEFH
X1NJWkUsCisgICAgUXVpY0Vycm9yQ29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIFF1aWNQ
cm90b2NvbFZlcnNpb24sCisgICAgUXVpY1N0cmVhbUZyYW1lLAorICAgIFF1aWNUcmFuc3BvcnRQ
YXJhbWV0ZXJzLAorICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnLAorICAgIGdldF9zcGluX2Jp
dCwKKyAgICBpc19sb25nX2hlYWRlciwKKyAgICBwdWxsX2Fja19mcmFtZSwKKyAgICBwdWxsX3F1
aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKyAgICBwdXNo
X2Fja19mcmFtZSwKKyAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCispCitmcm9t
IC5wYWNrZXRfYnVpbGRlciBpbXBvcnQgKAorICAgIFBBQ0tFVF9NQVhfU0laRSwKKyAgICBRdWlj
RGVsaXZlcnlTdGF0ZSwKKyAgICBRdWljUGFja2V0QnVpbGRlciwKKyAgICBRdWljUGFja2V0QnVp
bGRlclN0b3AsCispCitmcm9tIC5yZWNvdmVyeSBpbXBvcnQgS19HUkFOVUxBUklUWSwgUXVpY1Bh
Y2tldFJlY292ZXJ5LCBRdWljUGFja2V0U3BhY2UKK2Zyb20gLnN0cmVhbSBpbXBvcnQgUXVpY1N0
cmVhbQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicXVpYyIpCisKK0VQT0NIX1NIT1JU
Q1VUUyA9IHsKKyAgICAiSSI6IHRscy5FcG9jaC5JTklUSUFMLAorICAgICJIIjogdGxzLkVwb2No
LkhBTkRTSEFLRSwKKyAgICAiMCI6IHRscy5FcG9jaC5aRVJPX1JUVCwKKyAgICAiMSI6IHRscy5F
cG9jaC5PTkVfUlRULAorfQorTUFYX0VBUkxZX0RBVEEgPSAweEZGRkZGRkZGCitTRUNSRVRTX0xB
QkVMUyA9IFsKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX0NMSUVOVF9FQVJM
WV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICJRVUlDX0NMSUVOVF9IQU5EU0hBS0VfVFJBRkZJ
Q19TRUNSRVQiLAorICAgICAgICAiUVVJQ19DTElFTlRfVFJBRkZJQ19TRUNSRVRfMCIsCisgICAg
XSwKKyAgICBbCisgICAgICAgIE5vbmUsCisgICAgICAgIE5vbmUsCisgICAgICAgICJRVUlDX1NF
UlZFUl9IQU5EU0hBS0VfVFJBRkZJQ19TRUNSRVQiLAorICAgICAgICAiUVVJQ19TRVJWRVJfVFJB
RkZJQ19TRUNSRVRfMCIsCisgICAgXSwKK10KK1NUUkVBTV9GTEFHUyA9IDB4MDcKKworTmV0d29y
a0FkZHJlc3MgPSBBbnkKKworIyBmcmFtZSBzaXplcworQUNLX0ZSQU1FX0NBUEFDSVRZID0gNjQg
ICMgRklYTUU6IHRoaXMgaXMgYXJiaXRyYXJ5IQorQVBQTElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQ
QUNJVFkgPSAxICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCitIQU5EU0hBS0VfRE9ORV9GUkFN
RV9DQVBBQ0lUWSA9IDEKK01BWF9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSArIDgKK01BWF9TVFJF
QU1fREFUQV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOAorTkVXX0NPTk5FQ1RJT05fSURfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOCArIDggKyAxICsgMjAgKyAxNgorUEFUSF9DSEFMTEVOR0VfRlJB
TUVfQ0FQQUNJVFkgPSAxICsgOAorUEFUSF9SRVNQT05TRV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4
CitQSU5HX0ZSQU1FX0NBUEFDSVRZID0gMQorUkVUSVJFX0NPTk5FQ1RJT05fSURfQ0FQQUNJVFkg
PSAxICsgOAorU1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZID0gMSArIDgKK1RSQU5TUE9SVF9DTE9T
RV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDggICMgKyByZWFzb24gbGVuZ3RoCisKKwor
ZGVmIEVQT0NIUyhzaG9ydGN1dDogc3RyKSAtPiBGcm96ZW5TZXRbdGxzLkVwb2NoXToKKyAgICBy
ZXR1cm4gZnJvemVuc2V0KEVQT0NIX1NIT1JUQ1VUU1tpXSBmb3IgaSBpbiBzaG9ydGN1dCkKKwor
CitkZWYgZHVtcF9jaWQoY2lkOiBieXRlcykgLT4gc3RyOgorICAgIHJldHVybiBiaW5hc2NpaS5o
ZXhsaWZ5KGNpZCkuZGVjb2RlKCJhc2NpaSIpCisKKworZGVmIGdldF9lcG9jaChwYWNrZXRfdHlw
ZTogaW50KSAtPiB0bHMuRXBvY2g6CisgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVf
SU5JVElBTDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9jaC5JTklUSUFMCisgICAgZWxpZiBwYWNr
ZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9aRVJPX1JUVDoKKyAgICAgICAgcmV0dXJuIHRscy5FcG9j
aC5aRVJPX1JUVAorICAgIGVsaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSEFORFNIQUtF
OgorICAgICAgICByZXR1cm4gdGxzLkVwb2NoLkhBTkRTSEFLRQorICAgIGVsc2U6CisgICAgICAg
IHJldHVybiB0bHMuRXBvY2guT05FX1JUVAorCisKK2RlZiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZChzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUg
aWYgdGhlIHN0cmVhbSBpcyBjbGllbnQgaW5pdGlhdGVkLgorICAgICIiIgorICAgIHJldHVybiBu
b3QgKHN0cmVhbV9pZCAmIDEpCisKKworZGVmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJl
YW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUgaWYgdGhlIHN0
cmVhbSBpcyB1bmlkaXJlY3Rpb25hbC4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbChzdHJlYW1f
aWQgJiAyKQorCisKK2NsYXNzIFF1aWNDb25uZWN0aW9uRXJyb3IoRXhjZXB0aW9uKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgZXJyb3JfY29kZTogaW50LCBmcmFtZV90eXBlOiBpbnQsIHJlYXNv
bl9waHJhc2U6IHN0cik6CisgICAgICAgIHNlbGYuZXJyb3JfY29kZSA9IGVycm9yX2NvZGUKKyAg
ICAgICAgc2VsZi5mcmFtZV90eXBlID0gZnJhbWVfdHlwZQorICAgICAgICBzZWxmLnJlYXNvbl9w
aHJhc2UgPSByZWFzb25fcGhyYXNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6Cisg
ICAgICAgIHMgPSAiRXJyb3I6ICVkLCByZWFzb246ICVzIiAlIChzZWxmLmVycm9yX2NvZGUsIHNl
bGYucmVhc29uX3BocmFzZSkKKyAgICAgICAgaWYgc2VsZi5mcmFtZV90eXBlIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcyArPSAiLCBmcmFtZV90eXBlOiAlcyIgJSBzZWxmLmZyYW1lX3R5cGUK
KyAgICAgICAgcmV0dXJuIHMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvbkFkYXB0ZXIobG9nZ2lu
Zy5Mb2dnZXJBZGFwdGVyKToKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBtc2c6IHN0ciwga3dhcmdz
OiBBbnkpIC0+IFR1cGxlW3N0ciwgQW55XToKKyAgICAgICAgcmV0dXJuICJbJXNdICVzIiAlIChz
ZWxmLmV4dHJhWyJpZCJdLCBtc2cpLCBrd2FyZ3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBRdWlj
Q29ubmVjdGlvbklkOgorICAgIGNpZDogYnl0ZXMKKyAgICBzZXF1ZW5jZV9udW1iZXI6IGludAor
ICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMgPSBiIiIKKyAgICB3YXNfc2VudDogYm9v
bCA9IEZhbHNlCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb25TdGF0ZShFbnVtKToKKyAgICBGSVJT
VEZMSUdIVCA9IDAKKyAgICBDT05ORUNURUQgPSAxCisgICAgQ0xPU0lORyA9IDIKKyAgICBEUkFJ
TklORyA9IDMKKyAgICBURVJNSU5BVEVEID0gNAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNO
ZXR3b3JrUGF0aDoKKyAgICBhZGRyOiBOZXR3b3JrQWRkcmVzcworICAgIGJ5dGVzX3JlY2VpdmVk
OiBpbnQgPSAwCisgICAgYnl0ZXNfc2VudDogaW50ID0gMAorICAgIGlzX3ZhbGlkYXRlZDogYm9v
bCA9IEZhbHNlCisgICAgbG9jYWxfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRlc10gPSBOb25lCisg
ICAgcmVtb3RlX2NoYWxsZW5nZTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisgICAgZGVmIGNh
bl9zZW5kKHNlbGYsIHNpemU6IGludCkgLT4gYm9vbDoKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNf
dmFsaWRhdGVkIG9yIChzZWxmLmJ5dGVzX3NlbnQgKyBzaXplKSA8PSAzICogc2VsZi5ieXRlc19y
ZWNlaXZlZAorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFF1aWNSZWNlaXZlQ29udGV4dDoKKyAgICBl
cG9jaDogdGxzLkVwb2NoCisgICAgaG9zdF9jaWQ6IGJ5dGVzCisgICAgbmV0d29ya19wYXRoOiBR
dWljTmV0d29ya1BhdGgKKyAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbQW55
XV0KKyAgICB0aW1lOiBmbG9hdAorCisKK0VORF9TVEFURVMgPSBmcm96ZW5zZXQoCisgICAgWwor
ICAgICAgICBRdWljQ29ubmVjdGlvblN0YXRlLkNMT1NJTkcsCisgICAgICAgIFF1aWNDb25uZWN0
aW9uU3RhdGUuRFJBSU5JTkcsCisgICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRF
RCwKKyAgICBdCispCisKKworY2xhc3MgUXVpY0Nvbm5lY3Rpb246CisgICAgIiIiCisgICAgQSBR
VUlDIGNvbm5lY3Rpb24uCisKKyAgICBUaGUgc3RhdGUgbWFjaGluZSBpcyBkcml2ZW4gYnkgdGhy
ZWUga2luZHMgb2Ygc291cmNlczoKKworICAgIC0gdGhlIEFQSSB1c2VyIHJlcXVlc3RpbmcgZGF0
YSB0byBiZSBzZW5kIG91dCAoc2VlIDptZXRoOmBjb25uZWN0YCwKKyAgICAgIDptZXRoOmBzZW5k
X3BpbmdgLCA6bWV0aDpgc2VuZF9kYXRhZ3JhbV9kYXRhYCBhbmQgOm1ldGg6YHNlbmRfc3RyZWFt
X2RhdGFgKQorICAgIC0gZGF0YSBiZWluZyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIChzZWUg
Om1ldGg6YHJlY2VpdmVfZGF0YWdyYW1gKQorICAgIC0gYSB0aW1lciBmaXJpbmcgKHNlZSA6bWV0
aDpgaGFuZGxlX3RpbWVyYCkKKworICAgIDpwYXJhbSBjb25maWd1cmF0aW9uOiBUaGUgUVVJQyBj
b25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAg
ICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3Vy
YXRpb24sCisgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBO
b25lLAorICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lv
blRpY2tldEZldGNoZXJdID0gTm9uZSwKKyAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcjog
T3B0aW9uYWxbdGxzLlNlc3Npb25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCisgICAgKSAtPiBOb25l
OgorICAgICAgICBpZiBjb25maWd1cmF0aW9uLmlzX2NsaWVudDoKKyAgICAgICAgICAgIGFzc2Vy
dCAoCisgICAgICAgICAgICAgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZCBpcyBOb25lCisgICAg
ICAgICAgICApLCAiQ2Fubm90IHNldCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGZvciBhIGNsaWVu
dCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAg
Y29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgKSwgIlNT
TCBjZXJ0aWZpY2F0ZSBpcyByZXF1aXJlZCBmb3IgYSBzZXJ2ZXIiCisgICAgICAgICAgICBhc3Nl
cnQgKAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkgaXMgbm90IE5v
bmUKKyAgICAgICAgICAgICksICJTU0wgcHJpdmF0ZSBrZXkgaXMgcmVxdWlyZWQgZm9yIGEgc2Vy
dmVyIgorCisgICAgICAgICMgY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9jb25maWd1cmF0
aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLl9pc19jbGllbnQgPSBjb25maWd1cmF0
aW9uLmlzX2NsaWVudAorCisgICAgICAgIHNlbGYuX2Fja19kZWxheSA9IEtfR1JBTlVMQVJJVFkK
KyAgICAgICAgc2VsZi5fY2xvc2VfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAg
c2VsZi5fY2xvc2VfZXZlbnQ6IE9wdGlvbmFsW2V2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZF0g
PSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5fY3J5cHRvczogRGljdFt0bHMuRXBvY2gsIENyeXB0b1BhaXJdID0ge30KKyAgICAgICAgc2Vs
Zi5fY3J5cHRvX2J1ZmZlcnM6IERpY3RbdGxzLkVwb2NoLCBCdWZmZXJdID0ge30KKyAgICAgICAg
c2VsZi5fY3J5cHRvX3N0cmVhbXM6IERpY3RbdGxzLkVwb2NoLCBRdWljU3RyZWFtXSA9IHt9Cisg
ICAgICAgIHNlbGYuX2V2ZW50czogRGVxdWVbZXZlbnRzLlF1aWNFdmVudF0gPSBkZXF1ZSgpCisg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuX2hh
bmRzaGFrZV9jb25maXJtZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9ob3N0X2NpZHMgPSBbCisg
ICAgICAgICAgICBRdWljQ29ubmVjdGlvbklkKAorICAgICAgICAgICAgICAgIGNpZD1vcy51cmFu
ZG9tKGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcj0wLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tl
bj1vcy51cmFuZG9tKDE2KSwKKyAgICAgICAgICAgICAgICB3YXNfc2VudD1UcnVlLAorICAgICAg
ICAgICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuaG9zdF9jaWQgPSBzZWxmLl9ob3N0X2Np
ZHNbMF0uY2lkCisgICAgICAgIHNlbGYuX2hvc3RfY2lkX3NlcSA9IDEKKyAgICAgICAgc2VsZi5f
bG9jYWxfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9sb2NhbF9hY3RpdmVf
Y29ubmVjdGlvbl9pZF9saW1pdCA9IDgKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGEgPSBj
b25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQg
PSBjb25maWd1cmF0aW9uLm1heF9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3Vz
ZWQgPSAwCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0g
Y29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0
cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gY29uZmlndXJhdGlvbi5tYXhfc3RyZWFtX2RhdGEKKyAg
ICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IGNvbmZpZ3VyYXRpb24ubWF4
X3N0cmVhbV9kYXRhCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGkgPSAxMjgK
KyAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pID0gMTI4CisgICAgICAgIHNlbGYu
X2xvc3NfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmV0d29ya19w
YXRoczogTGlzdFtRdWljTmV0d29ya1BhdGhdID0gW10KKyAgICAgICAgc2VsZi5fb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZCA9IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgc2VsZi5fcGFj
aW5nX2F0OiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9udW1i
ZXIgPSAwCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAg
ICBzZWxmLl9wZWVyX2NpZCA9IG9zLnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lk
X2xlbmd0aCkKKyAgICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxOiBPcHRpb25hbFtpbnRdID0gTm9u
ZQorICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGU6IExpc3RbUXVpY0Nvbm5lY3Rpb25J
ZF0gPSBbXQorICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gYiIiCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZQorICAgICAgICBzZWxm
Ll9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gMworICAgICAgICBzZWxmLl9yZW1vdGVfYWN0
aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9pZGxlX3Rp
bWVvdXQgPSAwLjAgICMgc2Vjb25kcworICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X2RhdGEgPSAw
CisgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkID0gMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCA9IDAKKyAgICAgICAg
c2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSA9IDAKKyAgICAgICAgc2Vs
Zi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV91bmkgPSAwCisgICAgICAgIHNlbGYuX3JlbW90ZV9t
YXhfc3RyZWFtc19iaWRpID0gMAorICAgICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5p
ID0gMAorICAgICAgICBzZWxmLl9zcGFjZXM6IERpY3RbdGxzLkVwb2NoLCBRdWljUGFja2V0U3Bh
Y2VdID0ge30KKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
cGluX2hpZ2hlc3RfcG4gPSAwCisgICAgICAgIHNlbGYuX3N0YXRlID0gUXVpY0Nvbm5lY3Rpb25T
dGF0ZS5GSVJTVEZMSUdIVAorICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgPSAw
CisgICAgICAgIHNlbGYuX3N0cmVhbXM6IERpY3RbaW50LCBRdWljU3RyZWFtXSA9IHt9CisgICAg
ICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOiBMaXN0W1F1aWNTdHJlYW1dID0gW10KKyAg
ICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaTogTGlzdFtRdWljU3RyZWFtXSA9IFtdCisg
ICAgICAgIHNlbGYuX3ZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCisKKyAgICAgICAgIyBs
b2dnaW5nCisgICAgICAgIGlmIGxvZ2dlcl9jb25uZWN0aW9uX2lkIGlzIE5vbmU6CisgICAgICAg
ICAgICBsb2dnZXJfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IFF1aWNDb25uZWN0aW9uQWRhcHRlcigKKyAgICAgICAgICAgIGxvZ2dlciwgeyJp
ZCI6IGR1bXBfY2lkKGxvZ2dlcl9jb25uZWN0aW9uX2lkKX0KKyAgICAgICAgKQorICAgICAgICBp
ZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIgPSBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnN0YXJ0X3RyYWNlKAorICAgICAgICAgICAg
ICAgIGlzX2NsaWVudD1jb25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9bG9nZ2VyX2Nvbm5l
Y3Rpb25faWQKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGxvc3MgcmVjb3ZlcnkKKyAgICAg
ICAgc2VsZi5fbG9zcyA9IFF1aWNQYWNrZXRSZWNvdmVyeSgKKyAgICAgICAgICAgIGlzX2NsaWVu
dF93aXRob3V0XzFydHQ9c2VsZi5faXNfY2xpZW50LAorICAgICAgICAgICAgcXVpY19sb2dnZXI9
c2VsZi5fcXVpY19sb2dnZXIsCisgICAgICAgICAgICBzZW5kX3Byb2JlPXNlbGYuX3NlbmRfcHJv
YmUsCisgICAgICAgICkKKworICAgICAgICAjIHRoaW5ncyB0byBzZW5kCisgICAgICAgIHNlbGYu
X2Nsb3NlX3BlbmRpbmcgPSBGYWxzZQorICAgICAgICBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzog
RGVxdWVbYnl0ZXNdID0gZGVxdWUoKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5k
aW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nOiBMaXN0W2ludF0gPSBbXQor
ICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmV0aXJl
X2Nvbm5lY3Rpb25faWRzOiBMaXN0W2ludF0gPSBbXQorICAgICAgICBzZWxmLl9zdHJlYW1zX2Js
b2NrZWRfcGVuZGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKKyAgICAg
ICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIK
KworICAgICAgICAjIGZyYW1lIGhhbmRsZXJzCisgICAgICAgIHNlbGYuX19mcmFtZV9oYW5kbGVy
cyA9IHsKKyAgICAgICAgICAgIDB4MDA6IChzZWxmLl9oYW5kbGVfcGFkZGluZ19mcmFtZSwgRVBP
Q0hTKCJJSDAxIikpLAorICAgICAgICAgICAgMHgwMTogKHNlbGYuX2hhbmRsZV9waW5nX2ZyYW1l
LCBFUE9DSFMoIklIMDEiKSksCisgICAgICAgICAgICAweDAyOiAoc2VsZi5faGFuZGxlX2Fja19m
cmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDAzOiAoc2VsZi5faGFuZGxlX2Fj
a19mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisgICAgICAgICAgICAweDA0OiAoc2VsZi5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MDU6IChz
ZWxmLl9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgwNjogKHNlbGYuX2hhbmRsZV9jcnlwdG9fZnJhbWUsIEVQT0NIUygiSUgxIikpLAorICAg
ICAgICAgICAgMHgwNzogKHNlbGYuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUsIEVQT0NIUygiMSIp
KSwKKyAgICAgICAgICAgIDB4MDg6IChzZWxmLl9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgwOTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQ
T0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBBOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEI6IChzZWxmLl9oYW5kbGVfc3RyZWFt
X2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwQzogKHNlbGYuX2hhbmRsZV9z
dHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDBEOiAoc2VsZi5faGFu
ZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MEU6IChzZWxm
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgwRjog
KHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAw
eDEwOiAoc2VsZi5faGFuZGxlX21heF9kYXRhX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAg
ICAgICAgMHgxMTogKHNlbGYuX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUsIEVQT0NIUygi
MDEiKSksCisgICAgICAgICAgICAweDEyOiAoc2VsZi5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDEzOiAoc2VsZi5faGFuZGxlX21h
eF9zdHJlYW1zX3VuaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTQ6IChz
ZWxmLl9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICAg
ICAgMHgxNTogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lLCBFUE9DSFMo
IjAxIikpLAorICAgICAgICAgICAgMHgxNjogKHNlbGYuX2hhbmRsZV9zdHJlYW1zX2Jsb2NrZWRf
ZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDE3OiAoc2VsZi5faGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MTg6IChz
ZWxmLl9oYW5kbGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAg
ICAgICAgICAweDE5OiAoc2VsZi5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lLCBF
UE9DSFMoIjAxIikpLAorICAgICAgICAgICAgMHgxQTogKHNlbGYuX2hhbmRsZV9wYXRoX2NoYWxs
ZW5nZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUI6IChzZWxmLl9oYW5k
bGVfcGF0aF9yZXNwb25zZV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKKyAgICAgICAgICAgIDB4MUM6
IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSwgRVBPQ0hTKCJJSDEiKSksCisg
ICAgICAgICAgICAweDFEOiAoc2VsZi5faGFuZGxlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUsIEVQ
T0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MUU6IChzZWxmLl9oYW5kbGVfaGFuZHNoYWtlX2Rv
bmVfZnJhbWUsIEVQT0NIUygiMSIpKSwKKyAgICAgICAgICAgIDB4MzA6IChzZWxmLl9oYW5kbGVf
ZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCisgICAgICAgICAgICAweDMxOiAoc2VsZi5f
aGFuZGxlX2RhdGFncmFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAorICAgICAgICB9CisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgY29uZmlndXJhdGlvbihzZWxmKSAtPiBRdWljQ29uZmlndXJhdGlv
bjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBjaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgU3dpdGNo
IHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBjb25uZWN0aW9uIElEIGFuZCByZXRpcmUKKyAgICAgICAg
dGhlIHByZXZpb3VzIG9uZS4KKworICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNh
bGwgOm1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCisgICAgICAgIHdo
aWNoIG5lZWRzIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wZWVy
X2NpZF9hdmFpbGFibGU6CisgICAgICAgICAgICAjIHJldGlyZSBwcmV2aW91cyBDSUQKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiUmV0aXJpbmcgQ0lE
ICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3BlZXJfY2lkX3NlcQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFw
cGVuZChzZWxmLl9wZWVyX2NpZF9zZXEpCisKKyAgICAgICAgICAgICMgYXNzaWduIG5ldyBDSUQK
KyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQgPSBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUucG9w
KDApCisgICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSBjb25uZWN0aW9uX2lkLnNlcXVl
bmNlX251bWJlcgorICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBjb25uZWN0aW9uX2lkLmNp
ZAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJTd2l0
Y2hpbmcgdG8gQ0lEICVzICglZCkiLCBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksIHNlbGYuX3Bl
ZXJfY2lkX3NlcQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsb3NlKAorICAgICAgICBzZWxm
LAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQgPSBRdWljRXJyb3JDb2RlLk5PX0VSUk9SLAorICAg
ICAgICBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgICAgcmVhc29uX3Bo
cmFzZTogc3RyID0gIiIsCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2xv
c2UgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgOnBhcmFtIGVycm9yX2NvZGU6IEFuIGVycm9y
IGNvZGUgaW5kaWNhdGluZyB3aHkgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJlaW5nIGNsb3NlZC4KKyAgICAgICAgOnBhcmFtIHJlYXNvbl9waHJhc2U6IEEg
aHVtYW4tcmVhZGFibGUgZXhwbGFuYXRpb24gb2Ygd2h5IHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisgICAgICAgICIiIgorICAg
ICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gRU5EX1NUQVRFUzoKKyAgICAgICAgICAgIHNlbGYu
X2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAg
ICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZy
YW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9IFRydWUKKwor
ICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBub3c6IGZsb2F0KSAt
PiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSW5pdGlhdGUgdGhlIFRMUyBoYW5kc2hha2Uu
CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZvciBjbGllbnRzIGFu
ZCBhIHNpbmdsZSB0aW1lLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2Fs
bCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hp
Y2ggbmVlZHMgdG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsg
YWRkcmVzcyBvZiB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJy
ZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgKAorICAgICAgICAgICAgc2Vs
Zi5faXNfY2xpZW50IGFuZCBub3Qgc2VsZi5fY29ubmVjdF9jYWxsZWQKKyAgICAgICAgKSwgImNv
bm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVudHMgYW5kIGEgc2luZ2xlIHRpbWUi
CisgICAgICAgIHNlbGYuX2Nvbm5lY3RfY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX25l
dHdvcmtfcGF0aHMgPSBbUXVpY05ldHdvcmtQYXRoKGFkZHIsIGlzX3ZhbGlkYXRlZD1UcnVlKV0K
KyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3Zl
cnNpb25zWzBdCisgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKKworICAgIGRlZiBkYXRh
Z3JhbXNfdG9fc2VuZChzZWxmLCBub3c6IGZsb2F0KSAtPiBMaXN0W1R1cGxlW2J5dGVzLCBOZXR3
b3JrQWRkcmVzc11dOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBgKGRh
dGEsIGFkZHIpYCB0dXBsZXMgb2YgZGF0YWdyYW1zIHdoaWNoIG5lZWQgdG8gYmUKKyAgICAgICAg
c2VudCwgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MgdG8gd2hpY2ggdGhleSBuZWVkIHRvIGJlIHNl
bnQuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRoOmBnZXRf
dGltZXJgIHRvIGtub3cgd2hlbiB0aGUgbmV4dAorICAgICAgICB0aW1lciBuZWVkcyB0byBiZSBz
ZXQuCisKKyAgICAgICAgOnBhcmFtIG5vdzogVGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgIiIi
CisgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX25ldHdvcmtfcGF0aHNbMF0KKworICAgICAg
ICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgcmV0dXJuIFtdCisK
KyAgICAgICAgIyBidWlsZCBkYXRhZ3JhbXMKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRC
dWlsZGVyKAorICAgICAgICAgICAgaG9zdF9jaWQ9c2VsZi5ob3N0X2NpZCwKKyAgICAgICAgICAg
IGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNl
bGYuX3BhY2tldF9udW1iZXIsCisgICAgICAgICAgICBwZWVyX2NpZD1zZWxmLl9wZWVyX2NpZCwK
KyAgICAgICAgICAgIHBlZXJfdG9rZW49c2VsZi5fcGVlcl90b2tlbiwKKyAgICAgICAgICAgIHF1
aWNfbG9nZ2VyPXNlbGYuX3F1aWNfbG9nZ2VyLAorICAgICAgICAgICAgc3Bpbl9iaXQ9c2VsZi5f
c3Bpbl9iaXQsCisgICAgICAgICAgICB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24sCisgICAgICAgICkK
KyAgICAgICAgaWYgc2VsZi5fY2xvc2VfcGVuZGluZzoKKyAgICAgICAgICAgIGZvciBlcG9jaCwg
cGFja2V0X3R5cGUgaW4gKAorICAgICAgICAgICAgICAgICh0bHMuRXBvY2guT05FX1JUVCwgUEFD
S0VUX1RZUEVfT05FX1JUVCksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5IQU5EU0hBS0Us
IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSksCisgICAgICAgICAgICAgICAgKHRscy5FcG9jaC5JTklU
SUFMLCBQQUNLRVRfVFlQRV9JTklUSUFMKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAg
ICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgICAgICBpZiBjcnlw
dG8uc2VuZC5pc192YWxpZCgpOgorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1zZWxmLl9jbG9z
ZV9ldmVudC5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1z
ZWxmLl9jbG9zZV9ldmVudC5mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT1zZWxmLl9jbG9zZV9ldmVudC5yZWFzb25fcGhyYXNlLAorICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BlbmRpbmcgPSBGYWxz
ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi5fY2xvc2VfYmVn
aW4oaXNfaW5pdGlhdG9yPVRydWUsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAjIGNvbmdlc3Rpb24gY29udHJvbAorICAgICAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5
dGVzID0gKAorICAgICAgICAgICAgICAgIHNlbGYuX2xvc3MuY29uZ2VzdGlvbl93aW5kb3cgLSBz
ZWxmLl9sb3NzLmJ5dGVzX2luX2ZsaWdodAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYg
c2VsZi5fcHJvYmVfcGVuZGluZyBhbmQgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVzIDwgUEFDS0VU
X01BWF9TSVpFOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IFBB
Q0tFVF9NQVhfU0laRQorCisgICAgICAgICAgICAjIGxpbWl0IGRhdGEgb24gdW4tdmFsaWRhdGVk
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgICAgIGlmIG5vdCBuZXR3b3JrX3BhdGguaXNfdmFsaWRh
dGVkOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gKAorICAgICAg
ICAgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKiAzIC0gbmV0d29ya19w
YXRoLmJ5dGVzX3NlbnQKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZDoKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIGVwb2NoIGluIFt0bHMuRXBvY2guSU5JVElBTCwgdGxzLkVwb2NoLkhB
TkRTSEFLRV06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9oYW5kc2hha2Uo
YnVpbGRlciwgZXBvY2gsIG5vdykKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9hcHBsaWNh
dGlvbihidWlsZGVyLCBuZXR3b3JrX3BhdGgsIG5vdykKKyAgICAgICAgICAgIGV4Y2VwdCBRdWlj
UGFja2V0QnVpbGRlclN0b3A6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRhdGFn
cmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorCisgICAgICAgIGlmIGRhdGFncmFtczoK
KyAgICAgICAgICAgIHNlbGYuX3BhY2tldF9udW1iZXIgPSBidWlsZGVyLnBhY2tldF9udW1iZXIK
KworICAgICAgICAgICAgIyByZWdpc3RlciBwYWNrZXRzCisgICAgICAgICAgICBzZW50X2hhbmRz
aGFrZSA9IEZhbHNlCisgICAgICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAg
ICAgICAgICAgcGFja2V0LnNlbnRfdGltZSA9IG5vdworICAgICAgICAgICAgICAgIHNlbGYuX2xv
c3Mub25fcGFja2V0X3NlbnQoCisgICAgICAgICAgICAgICAgICAgIHBhY2tldD1wYWNrZXQsIHNw
YWNlPXNlbGYuX3NwYWNlc1twYWNrZXQuZXBvY2hdCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGlmIHBhY2tldC5lcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAg
ICAgICAgICAgICAgICBzZW50X2hhbmRzaGFrZSA9IFRydWUKKworICAgICAgICAgICAgICAgICMg
bG9nIHBhY2tldAorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfc2VudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBzZWxm
Ll9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFja2V0LnBhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFja2V0X251bWJlciI6IHN0cihwYWNrZXQucGFja2V0X251bWJlciks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IHBhY2tldC5z
ZW50X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBf
Y2lkKHNlbGYuaG9zdF9jaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
X2xvbmdfaGVhZGVyKHBhY2tldC5wYWNrZXRfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQi
OiBkdW1wX2NpZChzZWxmLl9wZWVyX2NpZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogcGFja2V0LnF1aWNfbG9n
Z2VyX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICkKKworICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBjYW4gZGlzY2FyZCBpbml0aWFsIGtl
eXMKKyAgICAgICAgICAgIGlmIHNlbnRfaGFuZHNoYWtlIGFuZCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5JVElBTCkKKwor
ICAgICAgICAjIHJldHVybiBkYXRhZ3JhbXMgdG8gc2VuZCBhbmQgdGhlIGRlc3RpbmF0aW9uIG5l
dHdvcmsgYWRkcmVzcworICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgZGF0YWdyYW0gaW4g
ZGF0YWdyYW1zOgorICAgICAgICAgICAgYnl0ZV9sZW5ndGggPSBsZW4oZGF0YWdyYW0pCisgICAg
ICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfc2VudCArPSBieXRlX2xlbmd0aAorICAgICAgICAg
ICAgcmV0LmFwcGVuZCgoZGF0YWdyYW0sIG5ldHdvcmtfcGF0aC5hZGRyKSkKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0i
dHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImRhdGFncmFtc19zZW50IiwK
KyAgICAgICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVfbGVuZ3RoIjogYnl0ZV9sZW5ndGgsICJj
b3VudCI6IDF9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAg
ZGVmIGdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw9
RmFsc2UpIC0+IGludDoKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3RyZWFtIElE
IGZvciB0aGUgbmV4dCBzdHJlYW0gY3JlYXRlZCBieSB0aGlzIGVuZHBvaW50LgorICAgICAgICAi
IiIKKyAgICAgICAgc3RyZWFtX2lkID0gKGludChpc191bmlkaXJlY3Rpb25hbCkgPDwgMSkgfCBp
bnQobm90IHNlbGYuX2lzX2NsaWVudCkKKyAgICAgICAgd2hpbGUgc3RyZWFtX2lkIGluIHNlbGYu
X3N0cmVhbXM6CisgICAgICAgICAgICBzdHJlYW1faWQgKz0gNAorICAgICAgICByZXR1cm4gc3Ry
ZWFtX2lkCisKKyAgICBkZWYgZ2V0X3RpbWVyKHNlbGYpIC0+IE9wdGlvbmFsW2Zsb2F0XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgdGltZXIgc2hv
dWxkIGZpcmUgb3IgTm9uZSBpZiBubyB0aW1lciBpcyBuZWVkZWQuCisgICAgICAgICIiIgorICAg
ICAgICB0aW1lcl9hdCA9IHNlbGYuX2Nsb3NlX2F0CisgICAgICAgIGlmIHNlbGYuX3N0YXRlIG5v
dCBpbiBFTkRfU1RBVEVTOgorICAgICAgICAgICAgIyBhY2sgdGltZXIKKyAgICAgICAgICAgIGZv
ciBzcGFjZSBpbiBzZWxmLl9sb3NzLnNwYWNlczoKKyAgICAgICAgICAgICAgICBpZiBzcGFjZS5h
Y2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNlLmFja19hdCA8IHRpbWVyX2F0OgorICAgICAgICAg
ICAgICAgICAgICB0aW1lcl9hdCA9IHNwYWNlLmFja19hdAorCisgICAgICAgICAgICAjIGxvc3Mg
ZGV0ZWN0aW9uIHRpbWVyCisgICAgICAgICAgICBzZWxmLl9sb3NzX2F0ID0gc2VsZi5fbG9zcy5n
ZXRfbG9zc19kZXRlY3Rpb25fdGltZSgpCisgICAgICAgICAgICBpZiBzZWxmLl9sb3NzX2F0IGlz
IG5vdCBOb25lIGFuZCBzZWxmLl9sb3NzX2F0IDwgdGltZXJfYXQ6CisgICAgICAgICAgICAgICAg
dGltZXJfYXQgPSBzZWxmLl9sb3NzX2F0CisKKyAgICAgICAgICAgICMgcGFjaW5nIHRpbWVyCisg
ICAgICAgICAgICBpZiBzZWxmLl9wYWNpbmdfYXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3BhY2lu
Z19hdCA8IHRpbWVyX2F0OgorICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fcGFjaW5n
X2F0CisKKyAgICAgICAgcmV0dXJuIHRpbWVyX2F0CisKKyAgICBkZWYgaGFuZGxlX3RpbWVyKHNl
bGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgdGhl
IHRpbWVyLgorCisgICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgY2FsbCA6bWV0aDpg
ZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKKyAgICAgICAgd2hpY2ggbmVlZHMg
dG8gYmUgc2VudC4KKworICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVudCB0aW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgIyBlbmQgb2YgY2xvc2luZyBwZXJpb2Qgb3IgaWRsZSB0aW1lb3V0
CisgICAgICAgIGlmIG5vdyA+PSBzZWxmLl9jbG9zZV9hdDoKKyAgICAgICAgICAgIGlmIHNlbGYu
X2Nsb3NlX2V2ZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQg
PSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJZGxl
IHRpbWVvdXQiLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Vu
ZCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uIHRpbWVv
dXQKKyAgICAgICAgaWYgc2VsZi5fbG9zc19hdCBpcyBub3QgTm9uZSBhbmQgbm93ID49IHNlbGYu
X2xvc3NfYXQ6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIkxvc3MgZGV0ZWN0aW9u
IHRyaWdnZXJlZCIpCisgICAgICAgICAgICBzZWxmLl9sb3NzLm9uX2xvc3NfZGV0ZWN0aW9uX3Rp
bWVvdXQobm93PW5vdykKKworICAgIGRlZiBuZXh0X2V2ZW50KHNlbGYpIC0+IE9wdGlvbmFsW2V2
ZW50cy5RdWljRXZlbnRdOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0cmlldmUgdGhlIG5leHQg
ZXZlbnQgZnJvbSB0aGUgZXZlbnQgYnVmZmVyLgorCisgICAgICAgIFJldHVybnMgYE5vbmVgIGlm
IHRoZXJlIGFyZSBubyBidWZmZXJlZCBldmVudHMuCisgICAgICAgICIiIgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnRzLnBvcGxlZnQoKQorICAgICAgICBleGNl
cHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcmVjZWl2
ZV9kYXRhZ3JhbShzZWxmLCBkYXRhOiBieXRlcywgYWRkcjogTmV0d29ya0FkZHJlc3MsIG5vdzog
ZmxvYXQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYW4gaW5jb21pbmcg
ZGF0YWdyYW0uCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDptZXRo
OmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQorICAgICAgICB3aGljaCBuZWVk
cyB0byBiZSBzZW50LgorCisgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YWdyYW0gd2hpY2gg
d2FzIHJlY2VpdmVkLgorICAgICAgICA6cGFyYW0gYWRkcjogVGhlIG5ldHdvcmsgYWRkcmVzcyBm
cm9tIHdoaWNoIHRoZSBkYXRhZ3JhbSB3YXMgcmVjZWl2ZWQuCisgICAgICAgIDpwYXJhbSBub3c6
IFRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgICIiIgorICAgICAgICAjIHN0b3AgaGFuZGxpbmcg
cGFja2V0cyB3aGVuIGNsb3NpbmcKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gRU5EX1NUQVRF
UzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgIGV2ZW50
PSJkYXRhZ3JhbXNfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgIGRhdGE9eyJieXRlX2xlbmd0
aCI6IGxlbihkYXRhKSwgImNvdW50IjogMX0sCisgICAgICAgICAgICApCisKKyAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAg
ICAgICAgIHN0YXJ0X29mZiA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKAorICAgICAgICAgICAgICAgICAgICBi
dWYsIGhvc3RfY2lkX2xlbmd0aD1zZWxmLl9jb25maWd1cmF0aW9uLmNvbm5lY3Rpb25faWRfbGVu
Z3RoCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgY2hlY2sgZGVzdGluYXRpb24g
Q0lEIG1hdGNoZXMKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZF9zZXE6IE9wdGlvbmFsW2lu
dF0gPSBOb25lCisgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9pZCBpbiBzZWxmLl9ob3N0X2Np
ZHM6CisgICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCA9PSBjb25uZWN0
aW9uX2lkLmNpZDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSA9IGNv
bm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIGRlc3RpbmF0aW9uX2NpZF9zZXEgaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YT17InRyaWdnZXIiOiAidW5rbm93bl9jb25uZWN0aW9uX2lkIn0sCisgICAgICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBjaGVjayBw
cm90b2NvbCB2ZXJzaW9uCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgc2VsZi5f
aXNfY2xpZW50CisgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3N0YXRlID09IFF1aWNDb25uZWN0
aW9uU3RhdGUuRklSU1RGTElHSFQKKyAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLnZlcnNpb24g
PT0gUXVpY1Byb3RvY29sVmVyc2lvbi5ORUdPVElBVElPTgorICAgICAgICAgICAgKToKKyAgICAg
ICAgICAgICAgICAjIHZlcnNpb24gbmVnb3RpYXRpb24KKyAgICAgICAgICAgICAgICB2ZXJzaW9u
cyA9IFtdCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKGJ1Zi5wdWxsX3VpbnQzMigpKQorICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBj
YXRlZ29yeT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNr
ZXRfcmVjZWl2ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInZlcnNpb25fbmVnb3RpYXRpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0
aW5hdGlvbl9jaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbW1vbiA9IHNldChz
ZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucykuaW50ZXJzZWN0aW9uKAorICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9ucworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY29tbW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZXJy
b3IoIkNvdWxkIG5vdCBmaW5kIGEgY29tbW9uIHByb3RvY29sIHZlcnNpb24iKQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5JTlRF
Uk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkNvdWxkIG5vdCBmaW5kIGEgY29t
bW9uIHByb3RvY29sIHZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Nsb3NlX2VuZCgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBRdWljUHJvdG9jb2xWZXJzaW9uKG1heChj
b21tb24pKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJSZXRyeWluZyB3aXRo
ICVzIiwgc2VsZi5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1u
b3cpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmICgKKyAgICAgICAg
ICAgICAgICBoZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGFuZCBo
ZWFkZXIudmVyc2lvbiBub3QgaW4gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRfdmVyc2lv
bnMKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgIyB1bnN1cHBvcnRlZCB2ZXJzaW9u
CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnQ9InBhY2tldF9kcm9wcGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9
eyJ0cmlnZ2VyIjogInVuc3VwcG9ydGVkX3ZlcnNpb24ifSwKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBpZiBzZWxmLl9pc19jbGll
bnQgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9SRVRSWToKKyAgICAgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBzdGF0ZWxlc3MgcmV0cnkgaW50ZWdyaXR5IHRhZworICAgICAg
ICAgICAgICAgIGludGVncml0eV90YWcgPSBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uoc3RhcnRfb2ZmLCBidWYudGVsbCgpIC0gUkVU
UllfSU5URUdSSVRZX1RBR19TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgKAorICAgICAgICAg
ICAgICAgICAgICBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IHNlbGYuaG9zdF9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgYW5kIGhlYWRlci5pbnRlZ3JpdHlfdGFnID09IGludGVncml0eV90YWcK
KyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQK
KyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJh
bnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2Vp
dmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhY2tldF90eXBlIjogInJldHJ5IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVhZGVyLnNvdXJjZV9jaWQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGlu
YXRpb25fY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lcyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJjZV9jaWQKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGVlcl90b2tlbiA9IGhlYWRlci50b2tlbgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zdGF0ZWxlc3NfcmV0cnlfY291bnQgKz0gMQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygiUGVyZm9ybWluZyBzdGF0ZWxlc3MgcmV0cnkiKQor
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0KG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgICAgIG5ldHdvcmtfcGF0aCA9IHNlbGYuX2ZpbmRfbmV0d29y
a19wYXRoKGFkZHIpCisKKyAgICAgICAgICAgICMgc2VydmVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50IGFuZCBzZWxmLl9zdGF0ZSA9PSBRdWljQ29u
bmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAg
ICAgICAgICAgICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFM
CisgICAgICAgICAgICAgICAgKSwgImZpcnN0IHBhY2tldCBtdXN0IGJlIElOSVRJQUwiCisgICAg
ICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocyA9IFtuZXR3b3JrX3BhdGhdCisgICAgICAg
ICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24oaGVhZGVyLnZlcnNp
b24pCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZShoZWFkZXIuZGVzdGluYXRpb25f
Y2lkKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBjcnlwdG8gYW5kIHBhY2tldCBzcGFjZQor
ICAgICAgICAgICAgZXBvY2ggPSBnZXRfZXBvY2goaGVhZGVyLnBhY2tldF90eXBlKQorICAgICAg
ICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgICAgIGlmIGVwb2No
ID09IHRscy5FcG9jaC5aRVJPX1JUVDoKKyAgICAgICAgICAgICAgICBzcGFjZSA9IHNlbGYuX3Nw
YWNlc1t0bHMuRXBvY2guT05FX1JUVF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgc3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgICAgICMgZGVjcnlwdCBw
YWNrZXQKKyAgICAgICAgICAgIGVuY3J5cHRlZF9vZmYgPSBidWYudGVsbCgpIC0gc3RhcnRfb2Zm
CisgICAgICAgICAgICBlbmRfb2ZmID0gYnVmLnRlbGwoKSArIGhlYWRlci5yZXN0X2xlbmd0aAor
ICAgICAgICAgICAgYnVmLnNlZWsoZW5kX29mZikKKworICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IGNy
eXB0by5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtzdGFydF9vZmY6
ZW5kX29mZl0sIGVuY3J5cHRlZF9vZmYsIHNwYWNlLmV4cGVjdGVkX3BhY2tldF9udW1iZXIKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgS2V5VW5hdmFpbGFibGVFcnJvciBh
cyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKGV4YykKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudD0i
cGFja2V0X2Ryb3BwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InRyaWdnZXIi
OiAia2V5X3VuYXZhaWxhYmxlIn0sCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IENyeXB0b0Vycm9yIGFzIGV4YzoKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29y
eT0idHJhbnNwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJv
cHBlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJpZ2dlciI6ICJwYXlsb2Fk
X2RlY3J5cHRfZXJyb3IifSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgY2hlY2sgcmVzZXJ2ZWQgYml0cworICAgICAgICAg
ICAgaWYgaGVhZGVyLmlzX2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDBDCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc2VydmVkX21h
c2sgPSAweDE4CisgICAgICAgICAgICBpZiBwbGFpbl9oZWFkZXJbMF0gJiByZXNlcnZlZF9tYXNr
OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVycm9y
X2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
UmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHplcm8iLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyByYWlzZSBleHBlY3RlZCBwYWNrZXQgbnVt
YmVyCisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UuZXhwZWN0ZWRfcGFja2V0
X251bWJlcjoKKyAgICAgICAgICAgICAgICBzcGFjZS5leHBlY3RlZF9wYWNrZXRfbnVtYmVyID0g
cGFja2V0X251bWJlciArIDEKKworICAgICAgICAgICAgIyBsb2cgcGFja2V0CisgICAgICAgICAg
ICBxdWljX2xvZ2dlcl9mcmFtZXM6IE9wdGlvbmFsW0xpc3RbRGljdF1dID0gTm9uZQorICAgICAg
ICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cXVpY19sb2dnZXJfZnJhbWVzID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAor
ICAgICAgICAgICAgICAgICAgICBldmVudD0icGFja2V0X3JlY2VpdmVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiBz
ZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXIucGFja2V0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVhZGVyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldF9udW1iZXIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYWNrZXRfc2l6ZSI6IGVuZF9vZmYgLSBzdGFydF9vZmYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRjaWQiOiBkdW1wX2NpZChoZWFkZXIuZGVzdGluYXRpb25fY2lk
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NpZCI6IGR1bXBfY2lkKGhlYWRlci5z
b3VyY2VfY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAiZnJhbWVzIjogcXVpY19sb2dnZXJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBkaXNjYXJkIGluaXRpYWwg
a2V5cyBhbmQgcGFja2V0IHNwYWNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50
IGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgorICAgICAgICAgICAgICAgIHNlbGYu
X2Rpc2NhcmRfZXBvY2godGxzLkVwb2NoLklOSVRJQUwpCisKKyAgICAgICAgICAgICMgdXBkYXRl
IHN0YXRlCisgICAgICAgICAgICBpZiBzZWxmLl9wZWVyX2NpZF9zZXEgaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGhlYWRlci5zb3VyY2VfY2lkCisgICAgICAgICAg
ICAgICAgc2VsZi5fcGVlcl9jaWRfc2VxID0gMAorCisgICAgICAgICAgICBpZiBzZWxmLl9zdGF0
ZSA9PSBRdWljQ29ubmVjdGlvblN0YXRlLkZJUlNURkxJR0hUOgorICAgICAgICAgICAgICAgIHNl
bGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRlLkNPTk5FQ1RFRCkKKworICAgICAgICAg
ICAgIyB1cGRhdGUgc3BpbiBiaXQKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXIuaXNfbG9uZ19o
ZWFkZXIgYW5kIHBhY2tldF9udW1iZXIgPiBzZWxmLl9zcGluX2hpZ2hlc3RfcG46CisgICAgICAg
ICAgICAgICAgc3Bpbl9iaXQgPSBnZXRfc3Bpbl9iaXQocGxhaW5faGVhZGVyWzBdKQorICAgICAg
ICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c3Bpbl9iaXQgPSBub3Qgc3Bpbl9iaXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zcGluX2JpdCA9IHNwaW5fYml0CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc3Bpbl9oaWdoZXN0X3BuID0gcGFja2V0X251bWJlcgorCisgICAgICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJjb25uZWN0aXZpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InNwaW5fYml0
X3VwZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17InN0YXRlIjogc2VsZi5f
c3Bpbl9iaXR9LAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgaGFuZGxl
IHBheWxvYWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBRdWljUmVjZWl2ZUNvbnRleHQoCisgICAg
ICAgICAgICAgICAgZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICAgICAgaG9zdF9jaWQ9aGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCwKKyAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGg9bmV0d29ya19w
YXRoLAorICAgICAgICAgICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lcz1xdWljX2xvZ2dlcl9mcmFt
ZXMsCisgICAgICAgICAgICAgICAgdGltZT1ub3csCisgICAgICAgICAgICApCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZywgaXNfcHJvYmluZyA9IHNl
bGYuX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBsYWlu
X3BheWxvYWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBleGNlcHQgUXVpY0Nvbm5l
Y3Rpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
ZXhjKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoCisgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9ZXhjLmVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZXhjLmZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ZXhjLnJl
YXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fc3Rh
dGUgaW4gRU5EX1NUQVRFUyBvciBzZWxmLl9jbG9zZV9wZW5kaW5nOgorICAgICAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgICAgICAjIHVwZGF0ZSBpZGxlIHRpbWVvdXQKKyAgICAgICAgICAg
IHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgc2VsZi5fY29uZmlndXJhdGlvbi5pZGxlX3RpbWVvdXQK
KworICAgICAgICAgICAgIyBoYW5kbGUgbWlncmF0aW9uCisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgbm90IHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgICAgIGFuZCBjb250
ZXh0Lmhvc3RfY2lkICE9IHNlbGYuaG9zdF9jaWQKKyAgICAgICAgICAgICAgICBhbmQgZXBvY2gg
PT0gdGxzLkVwb2NoLk9ORV9SVFQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBzd2l0Y2hpbmcgdG8g
Q0lEICVzICglZCkiLAorICAgICAgICAgICAgICAgICAgICBkdW1wX2NpZChjb250ZXh0Lmhvc3Rf
Y2lkKSwKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcSwKKyAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NpZCA9IGNvbnRleHQuaG9zdF9j
aWQKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgbmV0d29yayBwYXRoCisgICAgICAgICAgICBpZiBub3QgbmV0d29ya19w
YXRoLmlzX3ZhbGlkYXRlZCBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhBTkRTSEFLRToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICJOZXR3
b3JrIHBhdGggJXMgdmFsaWRhdGVkIGJ5IGhhbmRzaGFrZSIsIG5ldHdvcmtfcGF0aC5hZGRyCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5pc192YWxpZGF0
ZWQgPSBUcnVlCisgICAgICAgICAgICBuZXR3b3JrX3BhdGguYnl0ZXNfcmVjZWl2ZWQgKz0gZW5k
X29mZiAtIHN0YXJ0X29mZgorICAgICAgICAgICAgaWYgbmV0d29ya19wYXRoIG5vdCBpbiBzZWxm
Ll9uZXR3b3JrX3BhdGhzOgorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuYXBw
ZW5kKG5ldHdvcmtfcGF0aCkKKyAgICAgICAgICAgIGlkeCA9IHNlbGYuX25ldHdvcmtfcGF0aHMu
aW5kZXgobmV0d29ya19wYXRoKQorICAgICAgICAgICAgaWYgaWR4IGFuZCBub3QgaXNfcHJvYmlu
ZyBhbmQgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0OgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTmV0d29yayBwYXRoICVzIHByb21vdGVk
IiwgbmV0d29ya19wYXRoLmFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRo
cy5wb3AoaWR4KQorICAgICAgICAgICAgICAgIHNlbGYuX25ldHdvcmtfcGF0aHMuaW5zZXJ0KDAs
IG5ldHdvcmtfcGF0aCkKKworICAgICAgICAgICAgIyByZWNvcmQgcGFja2V0IGFzIHJlY2VpdmVk
CisgICAgICAgICAgICBpZiBub3Qgc3BhY2UuZGlzY2FyZGVkOgorICAgICAgICAgICAgICAgIGlm
IHBhY2tldF9udW1iZXIgPiBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldDoKKyAgICAgICAg
ICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICAgICAgICAgIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfdGltZSA9IG5vdwor
ICAgICAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5hZGQocGFja2V0X251bWJlcikKKyAgICAg
ICAgICAgICAgICBpZiBpc19hY2tfZWxpY2l0aW5nIGFuZCBzcGFjZS5hY2tfYXQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgc3BhY2UuYWNrX2F0ID0gbm93ICsgc2VsZi5fYWNrX2RlbGF5
CisKKyAgICBkZWYgcmVxdWVzdF9rZXlfdXBkYXRlKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBSZXF1ZXN0IGFuIHVwZGF0ZSBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzLgorICAg
ICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSwgImNhbm5v
dCBjaGFuZ2Uga2V5IGJlZm9yZSBoYW5kc2hha2UgY29tcGxldGVzIgorICAgICAgICBzZWxmLl9j
cnlwdG9zW3Rscy5FcG9jaC5PTkVfUlRUXS51cGRhdGVfa2V5KCkKKworICAgIGRlZiBzZW5kX3Bp
bmcoc2VsZiwgdWlkOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTZW5kIGEg
UElORyBmcmFtZSB0byB0aGUgcGVlci4KKworICAgICAgICA6cGFyYW0gdWlkOiBBIHVuaXF1ZSBJ
RCBmb3IgdGhpcyBQSU5HLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5n
LmFwcGVuZCh1aWQpCisKKyAgICBkZWYgc2VuZF9kYXRhZ3JhbV9mcmFtZShzZWxmLCBkYXRhOiBi
eXRlcykgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNlbmQgYSBEQVRBR1JBTSBmcmFt
ZS4KKworICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5kaW5nLmFwcGVuZChkYXRhKQorCisgICAg
ZGVmIHNlbmRfc3RyZWFtX2RhdGEoCisgICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRh
OiBieXRlcywgZW5kX3N0cmVhbTogYm9vbCA9IEZhbHNlCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBzcGVjaWZpYyBzdHJlYW0uCisKKyAgICAg
ICAgOnBhcmFtIHN0cmVhbV9pZDogVGhlIHN0cmVhbSdzIElELgorICAgICAgICA6cGFyYW0gZGF0
YTogVGhlIGRhdGEgdG8gYmUgc2VudC4KKyAgICAgICAgOnBhcmFtIGVuZF9zdHJlYW06IElmIHNl
dCB0byBgVHJ1ZWAsIHRoZSBGSU4gYml0IHdpbGwgYmUgc2V0LgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3RyZWFtX2lkKSAhPSBzZWxmLl9pc19j
bGllbnQ6CisgICAgICAgICAgICBpZiBzdHJlYW1faWQgbm90IGluIHNlbGYuX3N0cmVhbXM6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQgZGF0YSBvbiB1bmtu
b3duIHBlZXItaW5pdGlhdGVkIHN0cmVhbSIpCisgICAgICAgICAgICBpZiBzdHJlYW1faXNfdW5p
ZGlyZWN0aW9uYWwoc3RyZWFtX2lkKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNlbmQgZGF0YSBvbiBwZWVyLWluaXRpYXRl
ZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW0iCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNbc3RyZWFtX2lkXQorICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVh
bV9pZD1zdHJlYW1faWQpCisgICAgICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVh
bV9pZF0KKyAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEsIGVuZF9zdHJlYW09ZW5kX3N0cmVhbSkK
KworICAgICMgUHJpdmF0ZQorCisgICAgZGVmIF9hbHBuX2hhbmRsZXIoc2VsZiwgYWxwbl9wcm90
b2NvbDogc3RyKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hpY2gg
aXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIEFMUE4gbmVnb3RpYXRpb24gY29tcGxl
dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuUHJv
dG9jb2xOZWdvdGlhdGVkKGFscG5fcHJvdG9jb2w9YWxwbl9wcm90b2NvbCkpCisKKyAgICBkZWYg
X2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJlYW1f
aWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVjaWZp
ZWQgc3RyZWFtIGNhbiByZWNlaXZlIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3JlY2VpdmUo
c3RyZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwK
KyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAg
cmVhc29uX3BocmFzZT0iU3RyZWFtIGlzIHNlbmQtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgZnJhbWVfdHlwZTogaW50LCBzdHJl
YW1faWQ6IGludCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoZSBzcGVj
aWZpZWQgc3RyZWFtIGNhbiBzZW5kIGRhdGEgb3IgcmFpc2VzIGEgUXVpY0Nvbm5lY3Rpb25FcnJv
ci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdHJlYW1fY2FuX3NlbmQoc3Ry
ZWFtX2lkKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKKyAg
ICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVh
c29uX3BocmFzZT0iU3RyZWFtIGlzIHJlY2VpdmUtb25seSIsCisgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2Nsb3NlX2JlZ2luKHNlbGYsIGlzX2luaXRpYXRvcjogYm9vbCwgbm93OiBmbG9hdCkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEJlZ2luIHRoZSBjbG9zZSBwcm9jZWR1cmUu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IG5vdyArIDMgKiBzZWxmLl9s
b3NzLmdldF9wcm9iZV90aW1lb3V0KCkKKyAgICAgICAgaWYgaXNfaW5pdGlhdG9yOgorICAgICAg
ICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xPU0lORykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShRdWljQ29ubmVjdGlvblN0YXRl
LkRSQUlOSU5HKQorCisgICAgZGVmIF9jbG9zZV9lbmQoc2VsZikgLT4gTm9uZToKKyAgICAgICAg
IiIiCisgICAgICAgIEVuZCB0aGUgY2xvc2UgcHJvY2VkdXJlLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fY2xvc2VfYXQgPSBOb25lCisgICAgICAgIGZvciBlcG9jaCBpbiBzZWxmLl9zcGFj
ZXMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaChlcG9jaCkKKyAgICAg
ICAgc2VsZi5fZXZlbnRzLmFwcGVuZChzZWxmLl9jbG9zZV9ldmVudCkKKyAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuVEVSTUlOQVRFRCkKKworICAgICAgICAjIHNp
Z25hbCBsb2cgZW5kCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5fY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci5lbmRfdHJhY2Uoc2Vs
Zi5fcXVpY19sb2dnZXIpCisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlciA9IE5vbmUKKwor
ICAgIGRlZiBfY29ubmVjdChzZWxmLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgU3RhcnQgdGhlIGNsaWVudCBoYW5kc2hha2UuCisgICAgICAgICIiIgorICAgICAg
ICBhc3NlcnQgc2VsZi5faXNfY2xpZW50CisKKyAgICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cg
KyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dAorICAgICAgICBzZWxmLl9pbml0aWFs
aXplKHNlbGYuX3BlZXJfY2lkKQorCisgICAgICAgIHNlbGYudGxzLmhhbmRsZV9tZXNzYWdlKGIi
Iiwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCisgICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEo
KQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBRdWlj
U3RyZWFtOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgUVVJQyBzdHJlYW0gaW4gb3Jk
ZXIgdG8gc2VuZCBkYXRhIHRvIHRoZSBwZWVyLgorICAgICAgICAiIiIKKyAgICAgICAgIyBkZXRl
cm1pbmUgbGltaXRzCisgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1f
aWQpOgorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gMAorICAgICAgICAgICAg
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5p
CisgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkK
KyAgICAgICAgICAgIHN0cmVhbXNfYmxvY2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYu
X2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsCisgICAgICAgICAgICBtYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQor
ICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQor
ICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGkK
KworICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KKyAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFt
c1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWw9bWF4X3N0cmVhbV9kYXRhX2xv
Y2FsLAorICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFf
cmVtb3RlLAorICAgICAgICApCisKKyAgICAgICAgIyBtYXJrIHN0cmVhbSBhcyBibG9ja2VkIGlm
IG5lZWRlZAorICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3RyZWFtczoKKyAgICAg
ICAgICAgIHN0cmVhbS5pc19ibG9ja2VkID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtc19ibG9j
a2VkLmFwcGVuZChzdHJlYW0pCisgICAgICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfcGVu
ZGluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2Rpc2NhcmRf
ZXBvY2goc2VsZiwgZXBvY2g6IHRscy5FcG9jaCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCJEaXNjYXJkaW5nIGVwb2NoICVzIiwgZXBvY2gpCisgICAgICAgIHNlbGYuX2Ny
eXB0b3NbZXBvY2hdLnRlYXJkb3duKCkKKyAgICAgICAgc2VsZi5fbG9zcy5kaXNjYXJkX3NwYWNl
KHNlbGYuX3NwYWNlc1tlcG9jaF0pCisgICAgICAgIHNlbGYuX3NwYWNlc1tlcG9jaF0uZGlzY2Fy
ZGVkID0gVHJ1ZQorCisgICAgZGVmIF9maW5kX25ldHdvcmtfcGF0aChzZWxmLCBhZGRyOiBOZXR3
b3JrQWRkcmVzcykgLT4gUXVpY05ldHdvcmtQYXRoOgorICAgICAgICAjIGNoZWNrIGV4aXN0aW5n
IG5ldHdvcmsgcGF0aHMKKyAgICAgICAgZm9yIGlkeCwgbmV0d29ya19wYXRoIGluIGVudW1lcmF0
ZShzZWxmLl9uZXR3b3JrX3BhdGhzKToKKyAgICAgICAgICAgIGlmIG5ldHdvcmtfcGF0aC5hZGRy
ID09IGFkZHI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtfcGF0aAorCisgICAgICAg
ICMgbmV3IG5ldHdvcmsgcGF0aAorICAgICAgICBuZXR3b3JrX3BhdGggPSBRdWljTmV0d29ya1Bh
dGgoYWRkcikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3JrIHBhdGggJXMgZGlz
Y292ZXJlZCIsIG5ldHdvcmtfcGF0aC5hZGRyKQorICAgICAgICByZXR1cm4gbmV0d29ya19wYXRo
CisKKyAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
c3RyZWFtX2lkOiBpbnQpIC0+IFF1aWNTdHJlYW06CisgICAgICAgICIiIgorICAgICAgICBHZXQg
b3IgY3JlYXRlIGEgc3RyZWFtIGluIHJlc3BvbnNlIHRvIGEgcmVjZWl2ZWQgZnJhbWUuCisgICAg
ICAgICIiIgorICAgICAgICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zLmdldChzdHJlYW1faWQsIE5v
bmUpCisgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgorICAgICAgICAgICAgIyBjaGVjayBpbml0
aWF0b3IKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKHN0cmVhbV9p
ZCkgPT0gc2VsZi5faXNfY2xpZW50OgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5T
VFJFQU1fU1RBVEVfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iV3Jvbmcgc3RyZWFtIGlu
aXRpYXRvciIsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIGRldGVybWluZSBs
aW1pdHMKKyAgICAgICAgICAgIGlmIHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQp
OgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21h
eF9zdHJlYW1fZGF0YV91bmkKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
ID0gMAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVh
bXNfdW5pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbCA9IHNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAg
ICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfbG9jYWwKKyAgICAgICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX2xv
Y2FsX21heF9zdHJlYW1zX2JpZGkKKworICAgICAgICAgICAgIyBjaGVjayBtYXggc3RyZWFtcwor
ICAgICAgICAgICAgaWYgc3RyZWFtX2lkIC8vIDQgPj0gbWF4X3N0cmVhbXM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgZXJy
b3JfY29kZT1RdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUiwKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25f
cGhyYXNlPSJUb28gbWFueSBzdHJlYW1zIG9wZW4iLAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBjcmVhdGUgc3RyZWFtCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
IlN0cmVhbSAlZCBjcmVhdGVkIGJ5IHBlZXIiICUgc3RyZWFtX2lkKQorICAgICAgICAgICAgc3Ry
ZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdID0gUXVpY1N0cmVhbSgKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9sb2NhbD1tYXhfc3RyZWFtX2RhdGFfbG9jYWwsCisgICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX3JlbW90ZT1tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgKQorICAg
ICAgICByZXR1cm4gc3RyZWFtCisKKyAgICBkZWYgX2hhbmRsZV9zZXNzaW9uX3RpY2tldChzZWxm
LCBzZXNzaW9uX3RpY2tldDogdGxzLlNlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgICAgIGlm
ICgKKyAgICAgICAgICAgIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgaXMgbm90
IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXpl
ICE9IE1BWF9FQVJMWV9EQVRBCisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBRdWljQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVU
eXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJJbnZhbGlkIG1heF9l
YXJseV9kYXRhIHZhbHVlICVzIgorICAgICAgICAgICAgICAgICUgc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcihzZXNzaW9uX3RpY2tldCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZShzZWxm
LCBwZWVyX2NpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgICMgVExTCisgICAgICAgIHNlbGYu
dGxzID0gdGxzLkNvbnRleHQoCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9jb25m
aWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgY2FkYXRhPXNlbGYuX2NvbmZp
Z3VyYXRpb24uY2FkYXRhLAorICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2NvbmZpZ3VyYXRpb24u
Y2FmaWxlLAorICAgICAgICAgICAgY2FwYXRoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY2FwYXRoLAor
ICAgICAgICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKKyAgICAgICAgICAgIGxvZ2dl
cj1zZWxmLl9sb2dnZXIsCisgICAgICAgICAgICBtYXhfZWFybHlfZGF0YT1Ob25lIGlmIHNlbGYu
X2lzX2NsaWVudCBlbHNlIE1BWF9FQVJMWV9EQVRBLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSwKKyAgICAgICAgICAgIHZlcmlmeV9tb2Rl
PXNlbGYuX2NvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUsCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi50bHMuY2VydGlmaWNhdGUgPSBzZWxmLl9jb25maWd1cmF0aW9uLmNlcnRpZmljYXRlCisgICAg
ICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX2NoYWluID0gc2VsZi5fY29uZmlndXJhdGlvbi5jZXJ0
aWZpY2F0ZV9jaGFpbgorICAgICAgICBzZWxmLnRscy5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSA9
IHNlbGYuX2NvbmZpZ3VyYXRpb24ucHJpdmF0ZV9rZXkKKyAgICAgICAgc2VsZi50bHMuaGFuZHNo
YWtlX2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4
dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZXJpYWxpemVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgXQorCisgICAgICAgICMgVExTIHNlc3Npb24gcmVzdW1wdGlvbgorICAgICAgICBzZXNz
aW9uX3RpY2tldCA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQKKyAgICAgICAg
aWYgKAorICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50CisgICAgICAgICAgICBhbmQgc2Vzc2lv
bl90aWNrZXQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192
YWxpZAorICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LnNlcnZlcl9uYW1lID09IHNlbGYu
X2NvbmZpZ3VyYXRpb24uc2VydmVyX25hbWUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYu
dGxzLnNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldAor
CisgICAgICAgICAgICAjIHBhcnNlIHNhdmVkIFFVSUMgdHJhbnNwb3J0IHBhcmFtZXRlcnMgLSBm
b3IgMC1SVFQKKyAgICAgICAgICAgIGlmIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3Np
emUgPT0gTUFYX0VBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZm9yIGV4dF90eXBlLCBleHRf
ZGF0YSBpbiBzZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAg
ICAgICBpZiBleHRfdHlwZSA9PSB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGEsIGZyb21fc2Vz
c2lvbl90aWNrZXQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIFRMUyBjYWxsYmFja3MKKyAgICAgICAgc2Vs
Zi50bHMuYWxwbl9jYiA9IHNlbGYuX2FscG5faGFuZGxlcgorICAgICAgICBpZiBzZWxmLl9zZXNz
aW9uX3RpY2tldF9mZXRjaGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi50bHMuZ2V0
X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5fc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgorICAgICAg
ICBpZiBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgc2VsZi50bHMubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gc2VsZi5faGFuZGxlX3Nlc3Npb25f
dGlja2V0CisgICAgICAgIHNlbGYudGxzLnVwZGF0ZV90cmFmZmljX2tleV9jYiA9IHNlbGYuX3Vw
ZGF0ZV90cmFmZmljX2tleQorCisgICAgICAgICMgcGFja2V0IHNwYWNlcworICAgICAgICBzZWxm
Ll9jcnlwdG9zID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IENyeXB0b1BhaXIo
KSwKKyAgICAgICAgICAgIHRscy5FcG9jaC5aRVJPX1JUVDogQ3J5cHRvUGFpcigpLAorICAgICAg
ICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogQ3J5cHRvUGFpcigpLAorICAgICAgICAgICAgdGxz
LkVwb2NoLk9ORV9SVFQ6IENyeXB0b1BhaXIoKSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLl9j
cnlwdG9fYnVmZmVycyA9IHsKKyAgICAgICAgICAgIHRscy5FcG9jaC5JTklUSUFMOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIo
Y2FwYWNpdHk9NDA5NiksCisgICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNh
cGFjaXR5PTQwOTYpLAorICAgICAgICB9CisgICAgICAgIHNlbGYuX2NyeXB0b19zdHJlYW1zID0g
eworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAg
ICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IFF1aWNTdHJlYW0oKSwKKyAgICAgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBRdWljU3RyZWFtKCksCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5fc3Bh
Y2VzID0geworICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IFF1aWNQYWNrZXRTcGFjZSgp
LAorICAgICAgICAgICAgdGxzLkVwb2NoLkhBTkRTSEFLRTogUXVpY1BhY2tldFNwYWNlKCksCisg
ICAgICAgICAgICB0bHMuRXBvY2guT05FX1JUVDogUXVpY1BhY2tldFNwYWNlKCksCisgICAgICAg
IH0KKworICAgICAgICBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5JTklUSUFMXS5zZXR1cF9pbml0
aWFsKAorICAgICAgICAgICAgY2lkPXBlZXJfY2lkLCBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50
LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvc3Mu
c3BhY2VzID0gbGlzdChzZWxmLl9zcGFjZXMudmFsdWVzKCkpCisgICAgICAgIHNlbGYuX3BhY2tl
dF9udW1iZXIgPSAwCisKKyAgICBkZWYgX2hhbmRsZV9hY2tfZnJhbWUoCisgICAgICAgIHNlbGYs
IGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZl
cgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhbiBBQ0sgZnJh
bWUuCisgICAgICAgICIiIgorICAgICAgICBhY2tfcmFuZ2VzZXQsIGFja19kZWxheV9lbmNvZGVk
ID0gcHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFt
ZVR5cGUuQUNLX0VDTjoKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
ICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
KyAgICAgICAgYWNrX2RlbGF5ID0gKGFja19kZWxheV9lbmNvZGVkIDw8IHNlbGYuX3JlbW90ZV9h
Y2tfZGVsYXlfZXhwb25lbnQpIC8gMTAwMDAwMAorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4
dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoYWNrX3Jhbmdlc2V0LCBhY2tfZGVsYXkpCisgICAgICAg
ICAgICApCisKKyAgICAgICAgc2VsZi5fbG9zcy5vbl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAg
ICBzcGFjZT1zZWxmLl9zcGFjZXNbY29udGV4dC5lcG9jaF0sCisgICAgICAgICAgICBhY2tfcmFu
Z2VzZXQ9YWNrX3Jhbmdlc2V0LAorICAgICAgICAgICAgYWNrX2RlbGF5PWFja19kZWxheSwKKyAg
ICAgICAgICAgIG5vdz1jb250ZXh0LnRpbWUsCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxl
X2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIENPTk5FQ1RJT05fQ0xPU0UgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBlcnJvcl9jb2RlID0gYnVmLnB1bGxfdWludF92YXIoKQorICAg
ICAgICBpZiBmcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuVFJBTlNQT1JUX0NMT1NFOgorICAg
ICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBOb25lCisgICAgICAgIHJlYXNvbl9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYXNvbl9waHJh
c2UgPSBidWYucHVsbF9ieXRlcyhyZWFzb25fbGVuZ3RoKS5kZWNvZGUoInV0ZjgiKQorICAgICAg
ICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9
ICIiCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rpb25f
Y2xvc2VfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
IkNvbm5lY3Rpb24gY2xvc2UgY29kZSAweCVYLCByZWFzb24gJXMiLCBlcnJvcl9jb2RlLCByZWFz
b25fcGhyYXNlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMu
Q29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUs
IGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5fY2xvc2VfYmVnaW4oaXNfaW5pdGlhdG9yPUZhbHNlLCBub3c9
Y29udGV4dC50aW1lKQorCisgICAgZGVmIF9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBDUllQ
VE8gZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBvZmZzZXQgPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgb2Zm
c2V0ICsgbGVuZ3RoID4gVUlOVF9WQVJfTUFYOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5l
Y3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRlJB
TUVfRU5DT0RJTkdfRVJST1IsCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBl
LAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Im9mZnNldCArIGxlbmd0aCBjYW5ub3Qg
ZXhjZWVkIDJeNjIgLSAxIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgZnJhbWUgPSBRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpKQorCisg
ICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9jcnlwdG9fZnJhbWUoZnJhbWUp
CisgICAgICAgICAgICApCisKKyAgICAgICAgc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0cmVhbXNb
Y29udGV4dC5lcG9jaF0KKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgcGFzcyBkYXRhIHRv
IFRMUyBsYXllcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGxzLmhh
bmRsZV9tZXNzYWdlKGV2ZW50LmRhdGEsIHNlbGYuX2NyeXB0b19idWZmZXJzKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3B1c2hfY3J5cHRvX2RhdGEoKQorICAgICAgICAgICAgZXhjZXB0IHRscy5B
bGVydCBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkNSWVBUT19FUlJP
UiArIGludChleGMuZGVzY3JpcHRpb24pLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBl
PWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9c3RyKGV4Yyks
CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHBhcnNlIHRyYW5zcG9ydCBwYXJh
bWV0ZXJzCisgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX3BhcmFt
ZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICBhbmQgc2VsZi50bHMucmVjZWl2ZWRfZXh0
ZW5zaW9ucyBpcyBub3QgTm9uZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBmb3Ig
ZXh0X3R5cGUsIGV4dF9kYXRhIGluIHNlbGYudGxzLnJlY2VpdmVkX2V4dGVuc2lvbnM6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90
cmFuc3BvcnRfcGFyYW1ldGVycyhleHRfZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BhcmFtZXRlcnNfcmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICAgIGFzc2VydCAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmFtZXRlcnNfcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICApLCAiTm8gUVVJQyB0cmFuc3Bv
cnQgcGFyYW1ldGVycyByZWNlaXZlZCIKKworICAgICAgICAgICAgIyB1cGRhdGUgY3VycmVudCBl
cG9jaAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb21wbGV0ZSBhbmQgc2Vs
Zi50bHMuc3RhdGUgaW4gWworICAgICAgICAgICAgICAgIHRscy5TdGF0ZS5DTElFTlRfUE9TVF9I
QU5EU0hBS0UsCisgICAgICAgICAgICAgICAgdGxzLlN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFL
RSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBs
ZXRlID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgIyBmb3Igc2VydmVycywgdGhlIGhhbmRzaGFr
ZSBpcyBub3cgY29uZmlybWVkCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVu
dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFO
RFNIQUtFKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nID0g
VHJ1ZQorCisgICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5pc19jbGllbnRfd2l0aG91dF8xcnR0
ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXBsZW5pc2hfY29ubmVjdGlvbl9pZHMo
KQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBh
bHBuX3Byb3RvY29sPXNlbGYudGxzLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVhcmx5X2RhdGFfYWNjZXB0ZWQ9c2VsZi50bHMuZWFybHlfZGF0YV9hY2NlcHRlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fcmVzdW1lZD1zZWxmLnRscy5zZXNzaW9u
X3Jlc3VtZWQsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNl
KQorICAgICAgICAgICAgICAgIHNlbGYuX3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAg
ICAgICAgICAiQUxQTiBuZWdvdGlhdGVkIHByb3RvY29sICVzIiwgc2VsZi50bHMuYWxwbl9uZWdv
dGlhdGVkCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9oYW5kbGVfZGF0YV9ibG9ja2Vk
X2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1l
X3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBIYW5kbGUgYSBEQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBs
aW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKGxpbWl0PWxpbWl0KQorICAgICAgICAgICAg
KQorCisgICAgZGVmIF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIERBVEFHUkFNIGZyYW1l
LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnQgPSBidWYudGVsbCgpCisgICAgICAgIGlmIGZy
YW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSDoKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIHN0YXJ0CisgICAgICAgIGRhdGEgPSBidWYucHVs
bF9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X2RhdGFncmFtX2ZyYW1lKGxlbmd0aD1sZW5ndGgpCisgICAgICAgICAgICApCisKKyAgICAgICAg
IyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHNlbGYu
X2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgaXMgTm9uZQorICAgICAgICAg
ICAgb3IgYnVmLnRlbGwoKSAtIHN0YXJ0ID49IHNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFn
cmFtX2ZyYW1lX3NpemUKKyAgICAgICAgKToKKyAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIs
CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVudHMuRGF0
YWdyYW1GcmFtZVJlY2VpdmVkKGRhdGE9ZGF0YSkpCisKKyAgICBkZWYgX2hhbmRsZV9oYW5kc2hh
a2VfZG9uZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAi
IiIKKyAgICAgICAgSGFuZGxlIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUuCisgICAgICAgICIiIgor
ICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJh
bWUoKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6Cisg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIGVy
cm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04sCisgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBIQU5EU0hBS0VfRE9ORSBmcmFtZXMiLAorICAgICAgICAg
ICAgKQorCisgICAgICAgICMgwqBmb3IgY2xpZW50cywgdGhlIGhhbmRzaGFrZSBpcyBub3cgY29u
ZmlybWVkCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkOgorICAgICAg
ICAgICAgc2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSEFORFNIQUtFKQorICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IFRydWUKKworICAgIGRlZiBfaGFuZGxlX21h
eF9kYXRhX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBNQVhfREFUQSBmcmFtZS4KKworICAgICAgICBUaGlzIGFkanVz
dHMgdGhlIHRvdGFsIGFtb3VudCBvZiB3ZSBjYW4gc2VuZCB0byB0aGUgcGVlci4KKyAgICAgICAg
IiIiCisgICAgICAgIG1heF9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMg
bG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShtYXhpbXVtPW1heF9k
YXRhKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG1heF9kYXRhID4gc2VsZi5fcmVtb3Rl
X21heF9kYXRhOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X2Rh
dGEgcmFpc2VkIHRvICVkIiwgbWF4X2RhdGEpCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVfbWF4
X2RhdGEgPSBtYXhfZGF0YQorCisgICAgZGVmIF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBI
YW5kbGUgYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUuCisKKyAgICAgICAgVGhpcyBhZGp1c3RzIHRo
ZSBhbW91bnQgb2YgZGF0YSB3ZSBjYW4gc2VuZCBvbiBhIHNwZWNpZmljIHN0cmVhbS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAg
bWF4X3N0cmVhbV9kYXRhID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgIG1heGltdW09bWF4X3N0cmVhbV9kYXRhLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFt
IGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1lX3R5
cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzdHJlYW0gPSBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0
cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisgICAgICAgIGlmIG1heF9zdHJlYW1fZGF0YSA+
IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgcmVtb3RlIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCwKKyAgICAgICAgICAg
ICAgICBtYXhfc3RyZWFtX2RhdGEsCisgICAgICAgICAgICApCisgICAgICAgICAgICBzdHJlYW0u
bWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IG1heF9zdHJlYW1fZGF0YQorCisgICAgZGVmIF9oYW5k
bGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfQklESSBmcmFtZS4K
KworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgYmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdl
IGNhbiBpbml0aWF0ZSB0byB0aGUgcGVlci4KKyAgICAgICAgIiIiCisgICAgICAgIG1heF9zdHJl
YW1zID0gYnVmLnB1bGxfdWludF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgaXNfdW5p
ZGlyZWN0aW9uYWw9RmFsc2UsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9yZW1vdGVf
bWF4X3N0cmVhbXNfYmlkaToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiUmVtb3Rl
IG1heF9zdHJlYW1zX2JpZGkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMpCisgICAgICAgICAg
ICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSA9IG1heF9zdHJlYW1zCisgICAgICAgICAg
ICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCisKKyAgICBk
ZWYgX2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6
IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIE1BWF9TVFJFQU1TX1VOSSBm
cmFtZS4KKworICAgICAgICBUaGlzIHJhaXNlcyBudW1iZXIgb2YgdW5pZGlyZWN0aW9uYWwgc3Ry
ZWFtcyB3ZSBjYW4gaW5pdGlhdGUgdG8gdGhlIHBlZXIuCisgICAgICAgICIiIgorICAgICAgICBt
YXhfc3RyZWFtcyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfbWF4X3N0cmVhbXNfZnJhbWUoCisgICAgICAgICAgICAgICAgICAg
IGlzX3VuaWRpcmVjdGlvbmFsPVRydWUsIG1heGltdW09bWF4X3N0cmVhbXMKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbWF4X3N0cmVhbXMgPiBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfdW5pOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJS
ZW1vdGUgbWF4X3N0cmVhbXNfdW5pIHJhaXNlZCB0byAlZCIsIG1heF9zdHJlYW1zKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX3VuaSA9IG1heF9zdHJlYW1zCisgICAgICAg
ICAgICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKworICAg
IGRlZiBfaGFuZGxlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250
ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAg
ICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBORVdfQ09OTkVDVElP
Tl9JRCBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvID0gYnVmLnB1bGxfdWludF92
YXIoKQorICAgICAgICBsZW5ndGggPSBidWYucHVsbF91aW50OCgpCisgICAgICAgIGNvbm5lY3Rp
b25faWQgPSBidWYucHVsbF9ieXRlcyhsZW5ndGgpCisgICAgICAgIHN0YXRlbGVzc19yZXNldF90
b2tlbiA9IGJ1Zi5wdWxsX2J5dGVzKDE2KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmVuY29kZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLAorICAgICAgICAgICAgICAgICAgICByZXRpcmVf
cHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXI9c2VxdWVuY2VfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVz
ZXRfdG9rZW49c3RhdGVsZXNzX3Jlc2V0X3Rva2VuLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKworICAgICAgICBzZWxmLl9wZWVyX2NpZF9hdmFpbGFibGUuYXBwZW5kKAorICAg
ICAgICAgICAgUXVpY0Nvbm5lY3Rpb25JZCgKKyAgICAgICAgICAgICAgICBjaWQ9Y29ubmVjdGlv
bl9pZCwKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyLAor
ICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1zdGF0ZWxlc3NfcmVzZXRfdG9r
ZW4sCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX25ld190b2tl
bl9mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFt
ZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAg
ICAgICAgSGFuZGxlIGEgTkVXX1RPS0VOIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgbGVu
Z3RoID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICB0b2tlbiA9IGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xv
Z2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVz
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfbmV3X3Rv
a2VuX2ZyYW1lKHRva2VuPXRva2VuKQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9pc19jbGllbnQ6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVz
IiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAg
ICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBi
dWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBh
IFBBRERJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICAjIGNvbnN1bWUgcGFkZGluZwor
ICAgICAgICBwb3MgPSBidWYudGVsbCgpCisgICAgICAgIGZvciBieXRlIGluIGJ1Zi5kYXRhX3Ns
aWNlKHBvcywgYnVmLmNhcGFjaXR5KToKKyAgICAgICAgICAgIGlmIGJ5dGU6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGJ1Zi5zZWVrKHBvcykK
KworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5k
bGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNl
aXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBBVEhfQ0hBTExFTkdFIGZyYW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKDgpCisKKyAgICAgICAgIyBs
b2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9ZGF0
YSkKKyAgICAgICAgICAgICkKKworICAgICAgICBjb250ZXh0Lm5ldHdvcmtfcGF0aC5yZW1vdGVf
Y2hhbGxlbmdlID0gZGF0YQorCisgICAgZGVmIF9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgK
KyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBp
bnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgSGFu
ZGxlIGEgUEFUSF9SRVNQT05TRSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBi
dWYucHVsbF9ieXRlcyg4KQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKGRhdGE9ZGF0YSkKKyAgICAgICAgICAgICkKKworICAgICAg
ICBpZiBkYXRhICE9IGNvbnRleHQubmV0d29ya19wYXRoLmxvY2FsX2NoYWxsZW5nZToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBm
cmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iUmVz
cG9uc2UgZG9lcyBub3QgbWF0Y2ggY2hhbGxlbmdlIiwKKyAgICAgICAgICAgICkKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgIk5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0
ZWQgYnkgY2hhbGxlbmdlIiwgY29udGV4dC5uZXR3b3JrX3BhdGguYWRkcgorICAgICAgICApCisg
ICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLmlzX3ZhbGlkYXRlZCA9IFRydWUKKworICAgIGRl
ZiBfaGFuZGxlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZl
Q29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFBJTkcgZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZChzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFtZSgpKQorCisgICAgZGVmIF9oYW5kbGVfcmVzZXRf
c3RyZWFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQs
IGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIi
IgorICAgICAgICBIYW5kbGUgYSBSRVNFVF9TVFJFQU0gZnJhbWUuCisgICAgICAgICIiIgorICAg
ICAgICBzdHJlYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVycm9yX2NvZGUg
PSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGZpbmFsX3NpemUgPSBidWYucHVsbF91aW50
X3ZhcigpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBm
aW5hbF9zaXplPWZpbmFsX3NpemUsIHN0cmVhbV9pZD1zdHJlYW1faWQKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKAorICAgICAgICAgICAgIlN0cmVhbSAl
ZCByZXNldCBieSBwZWVyIChlcnJvciBjb2RlICVkLCBmaW5hbCBzaXplICVkKSIsCisgICAgICAg
ICAgICBzdHJlYW1faWQsCisgICAgICAgICAgICBlcnJvcl9jb2RlLAorICAgICAgICAgICAgZmlu
YWxfc2l6ZSwKKyAgICAgICAgKQorICAgICAgICAjIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVh
dGVfc3RyZWFtKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKKyAgICAgICAgc2VsZi5fZXZlbnRzLmFw
cGVuZCgKKyAgICAgICAgICAgIGV2ZW50cy5TdHJlYW1SZXNldChlcnJvcl9jb2RlPWVycm9yX2Nv
ZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCisgICAgICAgICkKKworICAgIGRlZiBfaGFuZGxlX3Jl
dGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBSRVRJUkVfQ09OTkVDVElPTl9JRCBmcmFt
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlX251bWJlciA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nv
bm5lY3Rpb25faWRfZnJhbWUoc2VxdWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAg
ICAgICMgZmluZCB0aGUgY29ubmVjdGlvbiBJRCBieSBzZXF1ZW5jZSBudW1iZXIKKyAgICAgICAg
Zm9yIGluZGV4LCBjb25uZWN0aW9uX2lkIGluIGVudW1lcmF0ZShzZWxmLl9ob3N0X2NpZHMpOgor
ICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIgPT0gc2VxdWVuY2Vf
bnVtYmVyOgorICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25faWQuY2lkID09IGNvbnRleHQu
aG9zdF9jaWQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3Io
CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9D
T0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2Fubm90IHJldGly
ZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAgICAiUGVlciBy
ZXRpcmluZyBDSUQgJXMgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgIGR1bXBfY2lkKGNvbm5l
Y3Rpb25faWQuY2lkKSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZC5zZXF1ZW5j
ZV9udW1iZXIsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9o
b3N0X2NpZHNbaW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQoY29ubmVjdGlvbl9p
ZD1jb25uZWN0aW9uX2lkLmNpZCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICAjIGlzc3VlIGEgbmV3IGNvbm5lY3Rpb24gSUQKKyAgICAgICAgc2Vs
Zi5fcmVwbGVuaXNoX2Nvbm5lY3Rpb25faWRzKCkKKworICAgIGRlZiBfaGFuZGxlX3N0b3Bfc2Vu
ZGluZ19mcmFtZSgKKyAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIK
KyAgICAgICAgSGFuZGxlIGEgU1RPUF9TRU5ESU5HIGZyYW1lLgorICAgICAgICAiIiIKKyAgICAg
ICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlcnJvcl9jb2RlID0g
YnVmLnB1bGxfdWludF92YXIoKSAgIyBhcHBsaWNhdGlvbiBlcnJvciBjb2RlCisKKyAgICAgICAg
IyBsb2cgZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLCBzdHJlYW1faWQ9c3RyZWFtX2lk
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3Ry
ZWFtIGRpcmVjdGlvbgorICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9zZW5kKGZyYW1l
X3R5cGUsIHN0cmVhbV9pZCkKKworICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRlX3N0cmVhbShm
cmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICBkZWYgX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTSBmcmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IGJ1Zi5w
dWxsX3VpbnRfdmFyKCkKKyAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDQ6CisgICAgICAgICAgICBv
ZmZzZXQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBv
ZmZzZXQgPSAwCisgICAgICAgIGlmIGZyYW1lX3R5cGUgJiAyOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKQorICAgICAgICBpZiBvZmZzZXQgKyBsZW5ndGgg
PiBVSU5UX1ZBUl9NQVg6CisgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19F
UlJPUiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCisgICAgICAgICAg
ICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAt
IDEiLAorICAgICAgICAgICAgKQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAg
ICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGRhdGE9YnVmLnB1bGxfYnl0ZXMobGVuZ3RoKSwgZmlu
PWJvb2woZnJhbWVfdHlwZSAmIDEpCisgICAgICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQor
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtX2ZyYW1lKGZyYW1lLCBzdHJlYW1faWQ9c3RyZWFtX2lk
KQorICAgICAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgc3RyZWFtIGRpcmVjdGlvbgorICAg
ICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNlaXZlKGZyYW1lX3R5cGUsIHN0cmVhbV9p
ZCkKKworICAgICAgICAjIGNoZWNrIGZsb3ctY29udHJvbCBsaW1pdHMKKyAgICAgICAgc3RyZWFt
ID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorICAg
ICAgICBpZiBvZmZzZXQgKyBsZW5ndGggPiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsOgor
ICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBl
cnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05UUk9MX0VSUk9SLAorICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNl
PSJPdmVyIHN0cmVhbSBkYXRhIGxpbWl0IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgbmV3bHlf
cmVjZWl2ZWQgPSBtYXgoMCwgb2Zmc2V0ICsgbGVuZ3RoIC0gc3RyZWFtLl9yZWN2X2hpZ2hlc3Qp
CisgICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKyBuZXdseV9yZWNlaXZlZCA+
IHNlbGYuX2xvY2FsX21heF9kYXRhOgorICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25F
cnJvcigKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuRkxPV19DT05U
Uk9MX0VSUk9SLAorICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPSJPdmVyIGNvbm5lY3Rpb24gZGF0YSBsaW1pdCIsCisg
ICAgICAgICAgICApCisKKyAgICAgICAgZXZlbnQgPSBzdHJlYW0uYWRkX2ZyYW1lKGZyYW1lKQor
ICAgICAgICBpZiBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5h
cHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3VzZWQgKz0gbmV3bHlf
cmVjZWl2ZWQKKworICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoCisg
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgorICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEhhbmRs
ZSBhIFNUUkVBTV9EQVRBX0JMT0NLRUQgZnJhbWUuCisgICAgICAgICIiIgorICAgICAgICBzdHJl
YW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWlu
dF92YXIoKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwgc3Ry
ZWFtX2lkPXN0cmVhbV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0cmVh
bV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCisKKyAgICAgICAgc2VsZi5fZ2V0
X29yX2NyZWF0ZV9zdHJlYW0oZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQorCisgICAgZGVmIF9oYW5k
bGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVj
ZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgYSBTVFJFQU1TX0JMT0NLRUQgZnJhbWUuCisg
ICAgICAgICIiIgorICAgICAgICBsaW1pdCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAg
ICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAor
ICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNG
cmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9
bGltaXQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF9vbl9h
Y2tfZGVsaXZlcnkoCisgICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwg
c3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgaGlnaGVzdF9hY2tlZDogaW50CisgICAgKSAtPiBOb25l
OgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhbiBBQ0sgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSA9PSBR
dWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNwYWNlLmFja19xdWV1ZS5zdWJ0
cmFjdCgwLCBoaWdoZXN0X2Fja2VkICsgMSkKKworICAgIGRlZiBfb25faGFuZHNoYWtlX2RvbmVf
ZGVsaXZlcnkoc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlKSAtPiBOb25lOgorICAg
ICAgICAiIiIKKyAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIEhBTkRTSEFLRV9ET05FIGZyYW1lIGlz
IGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVsaXZlcnkg
IT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
ZG9uZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9vbl9tYXhfZGF0YV9kZWxpdmVyeShzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg
ICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX0RBVEEgZnJhbWUgaXMgYWNrbm93bGVkZ2VkIG9yIGxv
c3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVsaXZlcnlTdGF0
ZS5BQ0tFRDoKKyAgICAgICAgICAgIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgPSAwCisKKyAg
ICBkZWYgX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwgZGVsaXZl
cnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdHJlYW06IFF1aWNTdHJlYW0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTUFYX1NUUkVBTV9EQVRBIGZy
YW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGVs
aXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6CisgICAgICAgICAgICBzdHJlYW0ubWF4
X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSAwCisKKyAgICBkZWYgX29uX25ld19jb25uZWN0aW9u
X2lkX2RlbGl2ZXJ5KAorICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
ICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgTkVXX0NPTk5FQ1RJT05fSUQgZnJhbWUgaXMg
YWNrbm93bGVkZ2VkIG9yIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBpZiBkZWxpdmVyeSAh
PSBRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGNvbm5lY3Rpb25faWQud2Fz
X3NlbnQgPSBGYWxzZQorCisgICAgZGVmIF9vbl9waW5nX2RlbGl2ZXJ5KAorICAgICAgICBzZWxm
LCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUsIHVpZHM6IFNlcXVlbmNlW2ludF0KKyAgICAp
IC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3aGVuIGEgUElORyBmcmFt
ZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGRlbGl2
ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCJSZWNlaXZlZCBQSU5HJXMgcmVzcG9uc2UiLCAiIiBpZiB1aWRzIGVsc2UgIiAocHJv
YmUpIikKKyAgICAgICAgICAgIGZvciB1aWQgaW4gdWlkczoKKyAgICAgICAgICAgICAgICBzZWxm
Ll9ldmVudHMuYXBwZW5kKGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKHVpZD11aWQpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmV4dGVuZCh1aWRzKQorCisg
ICAgZGVmIF9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSgKKyAgICAgICAgc2VsZiwg
ZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzZXF1ZW5jZV9udW1iZXI6IGludAorICAgICkg
LT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoZW4gYSBSRVRJUkVfQ09O
TkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgorICAgICAgICAg
ICAgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzLmFwcGVuZChzZXF1ZW5jZV9udW1iZXIpCisK
KyAgICBkZWYgX3BheWxvYWRfcmVjZWl2ZWQoCisgICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNS
ZWNlaXZlQ29udGV4dCwgcGxhaW46IGJ5dGVzCisgICAgKSAtPiBUdXBsZVtib29sLCBib29sXToK
KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBhIFFVSUMgcGFja2V0IHBheWxvYWQuCisgICAg
ICAgICIiIgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1wbGFpbikKKworICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nID0gRmFsc2UKKyAgICAgICAgaXNfcHJvYmluZyA9IE5vbmUKKyAgICAgICAg
d2hpbGUgbm90IGJ1Zi5lb2YoKToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBidWYucHVsbF91
aW50X3ZhcigpCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgdHlwZSBpcyBrbm93bgorICAg
ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyYW1lX2hhbmRsZXIsIGZyYW1lX2Vwb2No
cyA9IHNlbGYuX19mcmFtZV9oYW5kbGVyc1tmcmFtZV90eXBlXQorICAgICAgICAgICAgZXhjZXB0
IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9M
QVRJT04sCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iVW5rbm93biBmcmFtZSB0eXBlIiwKKyAgICAg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2hlY2sgZnJhbWUgaXMgYWxsb3dlZCBmb3Ig
dGhlIGVwb2NoCisgICAgICAgICAgICBpZiBjb250ZXh0LmVwb2NoIG5vdCBpbiBmcmFtZV9lcG9j
aHM6CisgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAg
ICAgICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIGZyYW1lIHR5cGUiLAorICAgICAgICAg
ICAgICAgICkKKworICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGZyYW1lCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlcihjb250ZXh0LCBmcmFtZV90eXBlLCBi
dWYpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyUmVhZEVycm9yOgorICAgICAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUiwKKyAgICAgICAgICAgICAgICAg
ICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJGYWlsZWQgdG8gcGFyc2UgZnJhbWUiLAorICAgICAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyB1cGRhdGUgQUNLIG9ubHkgLyBwcm9iaW5nIGZsYWdzCisgICAgICAgICAgICBpZiBm
cmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAg
ICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBmcmFtZV90
eXBlIG5vdCBpbiBQUk9CSU5HX0ZSQU1FX1RZUEVTOgorICAgICAgICAgICAgICAgIGlzX3Byb2Jp
bmcgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBpc19wcm9iaW5nIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgaXNfcHJvYmluZyA9IFRydWUKKworICAgICAgICByZXR1cm4gaXNfYWNrX2VsaWNp
dGluZywgYm9vbChpc19wcm9iaW5nKQorCisgICAgZGVmIF9yZXBsZW5pc2hfY29ubmVjdGlvbl9p
ZHMoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIG5ldyBjb25u
ZWN0aW9uIElEcy4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9ob3N0X2Np
ZHMpIDwgbWluKDgsIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCk6Cisg
ICAgICAgICAgICBzZWxmLl9ob3N0X2NpZHMuYXBwZW5kKAorICAgICAgICAgICAgICAgIFF1aWND
b25uZWN0aW9uSWQoCisgICAgICAgICAgICAgICAgICAgIGNpZD1vcy51cmFuZG9tKHNlbGYuX2Nv
bmZpZ3VyYXRpb24uY29ubmVjdGlvbl9pZF9sZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXI9c2VsZi5faG9zdF9jaWRfc2VxLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZWxlc3NfcmVzZXRfdG9rZW49b3MudXJhbmRvbSgxNiksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5faG9zdF9jaWRfc2VxICs9IDEKKworICAg
IGRlZiBfcHVzaF9jcnlwdG9fZGF0YShzZWxmKSAtPiBOb25lOgorICAgICAgICBmb3IgZXBvY2gs
IGJ1ZiBpbiBzZWxmLl9jcnlwdG9fYnVmZmVycy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5f
Y3J5cHRvX3N0cmVhbXNbZXBvY2hdLndyaXRlKGJ1Zi5kYXRhKQorICAgICAgICAgICAgYnVmLnNl
ZWsoMCkKKworICAgIGRlZiBfc2VuZF9wcm9iZShzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gVHJ1ZQorCisgICAgZGVmIF9wYXJzZV90cmFuc3BvcnRfcGFyYW1l
dGVycygKKyAgICAgICAgc2VsZiwgZGF0YTogYnl0ZXMsIGZyb21fc2Vzc2lvbl90aWNrZXQ6IGJv
b2wgPSBGYWxzZQorICAgICkgLT4gTm9uZToKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1l
dGVycyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWRhdGEpLCBwcm90b2NvbF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQor
CisgICAgICAgICMgbG9nIGV2ZW50CisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lIGFuZCBub3QgZnJvbV9zZXNzaW9uX3RpY2tldDoKKyAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0
IiwKKyAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVyc19zZXQiLAorICAgICAgICAgICAg
ICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgICAgICBvd25lcj0icmVtb3RlIiwgcGFyYW1ldGVycz1xdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAjIHZhbGlkYXRlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAgIGlmICgKKyAgICAgICAg
ICAgIHNlbGYuX2lzX2NsaWVudAorICAgICAgICAgICAgYW5kIG5vdCBmcm9tX3Nlc3Npb25fdGlj
a2V0CisgICAgICAgICAgICBhbmQgKAorICAgICAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZAorICAgICAgICAgICAgICAgICE9IHNlbGYu
X29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKKyAgICAgICAgICAgICkKKyAgICAgICAgKToKKyAgICAg
ICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgZXJyb3Jf
Y29kZT1RdWljRXJyb3JDb2RlLlRSQU5TUE9SVF9QQVJBTUVURVJfRVJST1IsCisgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLkNSWVBUTywKKyAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGRvZXMgbm90IG1hdGNoIiwKKyAg
ICAgICAgICAgICkKKworICAgICAgICAjIHN0b3JlIHJlbW90ZSBwYXJhbWV0ZXJzCisgICAgICAg
IGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWNrX2RlbGF5X2V4cG9uZW50IGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9leHBvbmVudCA9IHNlbGYu
X3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQKKyAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIHNlbGYuX3JlbW90ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9ICgKKyAgICAgICAg
ICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0CisgICAgICAgICAgICApCisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMu
aWRsZV90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlX2lkbGVf
dGltZW91dCA9IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuaWRsZV90aW1lb3V0IC8gMTAwMC4w
CisgICAgICAgIGlmIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvc3MubWF4X2Fja19kZWxheSA9IHF1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMubWF4X2Fja19kZWxheSAvIDEwMDAuMAorICAgICAgICBzZWxmLl9y
ZW1vdGVfbWF4X2RhdGFncmFtX2ZyYW1lX3NpemUgPSAoCisgICAgICAgICAgICBxdWljX3RyYW5z
cG9ydF9wYXJhbWV0ZXJzLm1heF9kYXRhZ3JhbV9mcmFtZV9zaXplCisgICAgICAgICkKKyAgICAg
ICAgZm9yIHBhcmFtIGluIFsKKyAgICAgICAgICAgICJtYXhfZGF0YSIsCisgICAgICAgICAgICAi
bWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwiLAorICAgICAgICAgICAgIm1heF9zdHJlYW1fZGF0
YV9iaWRpX3JlbW90ZSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX3VuaSIsCisgICAg
ICAgICAgICAibWF4X3N0cmVhbXNfYmlkaSIsCisgICAgICAgICAgICAibWF4X3N0cmVhbXNfdW5p
IiwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihxdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzLCAiaW5pdGlhbF8iICsgcGFyYW0pCisgICAgICAgICAgICBpZiB2YWx1ZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJfcmVtb3RlXyIgKyBw
YXJhbSwgdmFsdWUpCisKKyAgICBkZWYgX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFyYW1ldGVycyhz
ZWxmKSAtPiBieXRlczoKKyAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycyA9IFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50PXNlbGYu
X2xvY2FsX2Fja19kZWxheV9leHBvbmVudCwKKyAgICAgICAgICAgIGFjdGl2ZV9jb25uZWN0aW9u
X2lkX2xpbWl0PXNlbGYuX2xvY2FsX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0LAorICAgICAg
ICAgICAgaWRsZV90aW1lb3V0PWludChzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGltZW91dCAq
IDEwMDApLAorICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT1zZWxmLl9sb2NhbF9tYXhfZGF0
YSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwsCisgICAgICAgICAgICBpbml0aWFsX21h
eF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9yZW1vdGUsCisgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9c2VsZi5f
bG9jYWxfbWF4X3N0cmVhbV9kYXRhX3VuaSwKKyAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVh
bXNfYmlkaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc19iaWRpLAorICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtc191bmk9c2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfdW5pLAorICAgICAgICAg
ICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PXNlbGYuX2NvbmZpZ3VyYXRpb24ubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUsCisgICAgICAgICAg
ICBxdWFudHVtX3JlYWRpbmVzcz1iIlEiICogMTIwMAorICAgICAgICAgICAgaWYgc2VsZi5fY29u
ZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190ZXN0CisgICAgICAgICAgICBlbHNlIE5vbmUs
CisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKKyAgICAgICAgICAg
IHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMub3JpZ2luYWxfY29ubmVjdGlvbl9pZCA9ICgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkCisgICAgICAgICAgICAp
CisKKyAgICAgICAgIyBsb2cgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCisgICAg
ICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgZXZlbnQ9
InBhcmFtZXRlcnNfc2V0IiwKKyAgICAgICAgICAgICAgICBkYXRhPXNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgICAgICAgICAgb3duZXI9
ImxvY2FsIiwgcGFyYW1ldGVycz1xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzCisgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9
MyAqIFBBQ0tFVF9NQVhfU0laRSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0
ZXJzKAorICAgICAgICAgICAgYnVmLCBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLCBwcm90b2Nv
bF92ZXJzaW9uPXNlbGYuX3ZlcnNpb24KKyAgICAgICAgKQorICAgICAgICByZXR1cm4gYnVmLmRh
dGEKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0YXRlOiBRdWljQ29ubmVjdGlvblN0YXRl
KSAtPiBOb25lOgorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIiVzIC0+ICVzIiwgc2VsZi5f
c3RhdGUsIHN0YXRlKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICBkZWYgX3N0
cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBzdHJlYW1faWQ6IGludCkgLT4gYm9vbDoKKyAgICAgICAg
cmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAorICAgICAgICAgICAgc3RyZWFtX2lk
CisgICAgICAgICkgIT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBzdHJlYW1faXNfdW5pZGlyZWN0
aW9uYWwoc3RyZWFtX2lkKQorCisgICAgZGVmIF9zdHJlYW1fY2FuX3NlbmQoc2VsZiwgc3RyZWFt
X2lkOiBpbnQpIC0+IGJvb2w6CisgICAgICAgIHJldHVybiBzdHJlYW1faXNfY2xpZW50X2luaXRp
YXRlZCgKKyAgICAgICAgICAgIHN0cmVhbV9pZAorICAgICAgICApID09IHNlbGYuX2lzX2NsaWVu
dCBvciBub3Qgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCkKKworICAgIGRlZiBf
dW5ibG9ja19zdHJlYW1zKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sKSAtPiBOb25lOgor
ICAgICAgICBpZiBpc191bmlkaXJlY3Rpb25hbDoKKyAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaQorICAgICAgICAgICAg
bWF4X3N0cmVhbXMgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pCisgICAgICAgICAgICBz
dHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9z
dHJlYW1fZGF0YV9iaWRpX3JlbW90ZQorICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9y
ZW1vdGVfbWF4X3N0cmVhbXNfYmlkaQorICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2Vs
Zi5fc3RyZWFtc19ibG9ja2VkX2JpZGkKKworICAgICAgICB3aGlsZSBzdHJlYW1zX2Jsb2NrZWQg
YW5kIHN0cmVhbXNfYmxvY2tlZFswXS5zdHJlYW1faWQgLy8gNCA8IG1heF9zdHJlYW1zOgorICAg
ICAgICAgICAgc3RyZWFtID0gc3RyZWFtc19ibG9ja2VkLnBvcCgwKQorICAgICAgICAgICAgc3Ry
ZWFtLmlzX2Jsb2NrZWQgPSBGYWxzZQorICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0
YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCisKKyAgICAgICAgaWYgbm90IHNlbGYu
X3N0cmVhbXNfYmxvY2tlZF9iaWRpIGFuZCBub3Qgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3VuaToK
KyAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKKworICAg
IGRlZiBfdXBkYXRlX3RyYWZmaWNfa2V5KAorICAgICAgICBzZWxmLAorICAgICAgICBkaXJlY3Rp
b246IHRscy5EaXJlY3Rpb24sCisgICAgICAgIGVwb2NoOiB0bHMuRXBvY2gsCisgICAgICAgIGNp
cGhlcl9zdWl0ZTogdGxzLkNpcGhlclN1aXRlLAorICAgICAgICBzZWNyZXQ6IGJ5dGVzLAorICAg
ICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9r
ZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBuZXcgdHJhZmZpYyBrZXlzIGFyZQorICAgICAgICBh
dmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gc2VsZi5f
Y29uZmlndXJhdGlvbi5zZWNyZXRzX2xvZ19maWxlCisgICAgICAgIGlmIHNlY3JldHNfbG9nX2Zp
bGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYWJlbF9yb3cgPSBzZWxmLl9pc19jbGllbnQg
PT0gKGRpcmVjdGlvbiA9PSB0bHMuRGlyZWN0aW9uLkRFQ1JZUFQpCisgICAgICAgICAgICBsYWJl
bCA9IFNFQ1JFVFNfTEFCRUxTW2xhYmVsX3Jvd11bZXBvY2gudmFsdWVdCisgICAgICAgICAgICBz
ZWNyZXRzX2xvZ19maWxlLndyaXRlKAorICAgICAgICAgICAgICAgICIlcyAlcyAlc1xuIiAlIChs
YWJlbCwgc2VsZi50bHMuY2xpZW50X3JhbmRvbS5oZXgoKSwgc2VjcmV0LmhleCgpKQorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VjcmV0c19sb2dfZmlsZS5mbHVzaCgpCisKKyAgICAgICAg
Y3J5cHRvID0gc2VsZi5fY3J5cHRvc1tlcG9jaF0KKyAgICAgICAgaWYgZGlyZWN0aW9uID09IHRs
cy5EaXJlY3Rpb24uRU5DUllQVDoKKyAgICAgICAgICAgIGNyeXB0by5zZW5kLnNldHVwKAorICAg
ICAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1jaXBoZXJfc3VpdGUsIHNlY3JldD1zZWNyZXQsIHZl
cnNpb249c2VsZi5fdmVyc2lvbgorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgY3J5cHRvLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICAgICAgY2lwaGVyX3N1aXRlPWNp
cGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxmLl92ZXJzaW9uCisgICAgICAg
ICAgICApCisKKyAgICBkZWYgX3dyaXRlX2FwcGxpY2F0aW9uKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgbmV0d29ya19wYXRoOiBRdWljTmV0d29ya1BhdGgsIG5v
dzogZmxvYXQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGNyeXB0b19zdHJlYW06IE9wdGlvbmFs
W1F1aWNTdHJlYW1dID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5P
TkVfUlRUXS5zZW5kLmlzX3ZhbGlkKCk6CisgICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlw
dG9zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgY3J5cHRvX3N0cmVhbSA9IHNlbGYu
X2NyeXB0b19zdHJlYW1zW3Rscy5FcG9jaC5PTkVfUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5
cGUgPSBQQUNLRVRfVFlQRV9PTkVfUlRUCisgICAgICAgIGVsaWYgc2VsZi5fY3J5cHRvc1t0bHMu
RXBvY2guWkVST19SVFRdLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIGNyeXB0byA9IHNl
bGYuX2NyeXB0b3NbdGxzLkVwb2NoLlpFUk9fUlRUXQorICAgICAgICAgICAgcGFja2V0X3R5cGUg
PSBQQUNLRVRfVFlQRV9aRVJPX1JUVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHNwYWNlID0gc2VsZi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQorCisgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIGFwcGx5IHBhY2luZywgZXhjZXB0IGlmIHdl
IGhhdmUgQUNLcyB0byBzZW5kCisgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgTm9uZSBv
ciBzcGFjZS5hY2tfYXQgPj0gbm93OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhY2luZ19hdCA9
IHNlbGYuX2xvc3MuX3BhY2VyLm5leHRfc2VuZF90aW1lKG5vdz1ub3cpCisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcGFjaW5nX2F0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0
bykKKworICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlOgorICAgICAgICAg
ICAgICAgICMgQUNLCisgICAgICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIG5vdCBOb25l
IGFuZCBzcGFjZS5hY2tfYXQgPD0gbm93OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0
ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKKworICAg
ICAgICAgICAgICAgICMgSEFORFNIQUtFX0RPTkUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9o
YW5kc2hha2VfZG9uZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9o
YW5kc2hha2VfZG9uZV9mcmFtZShidWlsZGVyPWJ1aWxkZXIpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAgICAg
IyBQQVRIIENIQUxMRU5HRQorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAg
ICAgbm90IG5ldHdvcmtfcGF0aC5pc192YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgYW5k
IG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2UgaXMgTm9uZQorICAgICAgICAgICAgICAgICk6
CisgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA9IG9zLnVyYW5kb20oOCkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIGNoYWxsZW5nZT1jaGFsbGVuZ2UKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBuZXR3b3JrX3BhdGgubG9jYWxf
Y2hhbGxlbmdlID0gY2hhbGxlbmdlCisKKyAgICAgICAgICAgICAgICAjIFBBVEggUkVTUE9OU0UK
KyAgICAgICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZSBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGF0aF9yZXNwb25zZV9mcmFt
ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgY2hhbGxlbmdlPW5l
dHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2UgPSBOb25lCisKKyAg
ICAgICAgICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lECisgICAgICAgICAgICAgICAgZm9yIGNv
bm5lY3Rpb25faWQgaW4gc2VsZi5faG9zdF9jaWRzOgorICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgY29ubmVjdGlvbl9pZC53YXNfc2VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwgY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAjIFJFVElSRV9DT05ORUNUSU9O
X0lECisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmV0aXJlX2Nvbm5lY3Rpb25faWRzOgor
ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXIgPSBzZWxmLl9yZXRpcmVfY29ubmVj
dGlvbl9pZHMucG9wKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JldGlyZV9j
b25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLCBzZXF1ZW5jZV9udW1iZXI9c2VxdWVuY2VfbnVtYmVyCisgICAgICAgICAgICAgICAgICAg
ICkKKworICAgICAgICAgICAgICAgICMgU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmc6CisgICAgICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9iaWRpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPVF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9DS0VEX0JJREksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksCisgICAgICAg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0cmVhbXNf
YmxvY2tlZF91bmk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJlYW1z
X2Jsb2NrZWRfZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWls
ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlw
ZS5TVFJFQU1TX0JMT0NLRURfVU5JLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
PXNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksCisgICAgICAgICAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tlZF9wZW5kaW5nID0gRmFs
c2UKKworICAgICAgICAgICAgICAgICMgTUFYX0RBVEEKKyAgICAgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb25uZWN0aW9uX2xpbWl0cyhidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlKQorCisg
ICAgICAgICAgICAjIHN0cmVhbS1sZXZlbCBsaW1pdHMKKyAgICAgICAgICAgIGZvciBzdHJlYW0g
aW4gc2VsZi5fc3RyZWFtcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9z
dHJlYW1fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1zdHJlYW0p
CisKKyAgICAgICAgICAgICMgUElORyAodXNlci1yZXF1ZXN0KQorICAgICAgICAgICAgaWYgc2Vs
Zi5fcGluZ19wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUo
YnVpbGRlciwgc2VsZi5fcGluZ19wZW5kaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdf
cGVuZGluZy5jbGVhcigpCisKKyAgICAgICAgICAgICMgUElORyAocHJvYmUpCisgICAgICAgICAg
ICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Bp
bmdfZnJhbWUoYnVpbGRlciwgY29tbWVudD0icHJvYmUiKQorICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2JlX3BlbmRpbmcgPSBGYWxzZQorCisgICAgICAgICAgICAjIENSWVBUTworICAgICAgICAg
ICAgaWYgY3J5cHRvX3N0cmVhbSBpcyBub3QgTm9uZSBhbmQgbm90IGNyeXB0b19zdHJlYW0uc2Vu
ZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY3J5cHRvX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBz
dHJlYW09Y3J5cHRvX3N0cmVhbQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBE
QVRBR1JBTQorICAgICAgICAgICAgd2hpbGUgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmc6CisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhZ3Jh
bV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fZGF0YWdyYW1zX3BlbmRpbmdbMF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lU
SF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1zX3BlbmRpbmcucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IFF1
aWNQYWNrZXRCdWlsZGVyU3RvcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAg
ICAgICAgIyBTVFJFQU0KKyAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gc2VsZi5fc3RyZWFtcy52
YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyZWFtLmlzX2Jsb2NrZWQgYW5kIG5v
dCBzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3JlbW90ZV9tYXhfZGF0YV91c2VkICs9IHNlbGYuX3dyaXRlX3N0cmVhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNwYWNlPXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9vZmZzZXQ9bWluKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbS5fc2VuZF9oaWdoZXN0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyBzZWxmLl9yZW1vdGVfbWF4X2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIHNlbGYuX3JlbW90ZV9tYXhfZGF0YV91c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBidWlsZGVyLnBh
Y2tldF9pc19lbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLl9sb3NzLl9wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9
bm93KQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2UoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6
IFF1aWNQYWNrZXRCdWlsZGVyLCBlcG9jaDogdGxzLkVwb2NoLCBub3c6IGZsb2F0CisgICAgKSAt
PiBOb25lOgorICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQorICAgICAgICBp
ZiBub3QgY3J5cHRvLnNlbmQuaXNfdmFsaWQoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAg
ICAgIGNyeXB0b19zdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tlcG9jaF0KKyAgICAgICAg
c3BhY2UgPSBzZWxmLl9zcGFjZXNbZXBvY2hdCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgICAgIGlmIGVwb2NoID09IHRscy5FcG9jaC5JTklUSUFMOgorICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlID0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRQorICAgICAgICAg
ICAgYnVpbGRlci5zdGFydF9wYWNrZXQocGFja2V0X3R5cGUsIGNyeXB0bykKKworICAgICAgICAg
ICAgIyBBQ0sKKyAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLl93cml0ZV9hY2tfZnJhbWUoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1z
cGFjZSwgbm93PW5vdykKKworICAgICAgICAgICAgIyBDUllQVE8KKyAgICAgICAgICAgIGlmIG5v
dCBjcnlwdG9fc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5OgorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3dyaXRlX2NyeXB0b19mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1i
dWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPWNyeXB0b19zdHJlYW0KKyAgICAgICAgICAgICAg
ICApOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKwor
ICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wcm9iZV9wZW5kaW5nCisgICAgICAgICAgICAgICAgYW5kIGVwb2NoID09IHRs
cy5FcG9jaC5IQU5EU0hBS0UKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX2hhbmRzaGFr
ZV9jb21wbGV0ZQorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9w
aW5nX2ZyYW1lKGJ1aWxkZXIsIGNvbW1lbnQ9InByb2JlIikKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wcm9iZV9wZW5kaW5nID0gRmFsc2UKKworICAgICAgICAgICAgaWYgYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBfd3JpdGVfYWNrX2Zy
YW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgIyBjYWxj
dWxhdGUgQUNLIGRlbGF5CisgICAgICAgIGFja19kZWxheSA9IG5vdyAtIHNwYWNlLmxhcmdlc3Rf
cmVjZWl2ZWRfdGltZQorICAgICAgICBhY2tfZGVsYXlfZW5jb2RlZCA9IGludChhY2tfZGVsYXkg
KiAxMDAwMDAwKSA+PiBzZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQKKworICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ss
CisgICAgICAgICAgICBjYXBhY2l0eT1BQ0tfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICBo
YW5kbGVyPXNlbGYuX29uX2Fja19kZWxpdmVyeSwKKyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0o
c3BhY2UsIHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0KSwKKyAgICAgICAgKQorICAgICAg
ICByYW5nZXMgPSBwdXNoX2Fja19mcmFtZShidWYsIHNwYWNlLmFja19xdWV1ZSwgYWNrX2RlbGF5
X2VuY29kZWQpCisgICAgICAgIHNwYWNlLmFja19hdCA9IE5vbmUKKworICAgICAgICAjIGxvZyBm
cmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfYWNrX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBy
YW5nZXM9c3BhY2UuYWNrX3F1ZXVlLCBkZWxheT1hY2tfZGVsYXkKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBpZiB3ZSBuZWVkIHRvIHRyaWdnZXIg
YW4gQUNLLW9mLUFDSworICAgICAgICBpZiByYW5nZXMgPiAxIGFuZCBidWlsZGVyLnBhY2tldF9u
dW1iZXIgJSA4ID09IDA6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9waW5nX2ZyYW1lKGJ1aWxk
ZXIsIGNvbW1lbnQ9IkFDSy1vZi1BQ0sgdHJpZ2dlciIpCisKKyAgICBkZWYgX3dyaXRlX2Nvbm5l
Y3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLAorICAgICAgICBlcnJvcl9jb2RlOiBpbnQsCisgICAgICAgIGZyYW1lX3R5
cGU6IE9wdGlvbmFsW2ludF0sCisgICAgICAgIHJlYXNvbl9waHJhc2U6IHN0ciwKKyAgICApIC0+
IE5vbmU6CisgICAgICAgIHJlYXNvbl9ieXRlcyA9IHJlYXNvbl9waHJhc2UuZW5jb2RlKCJ1dGY4
IikKKyAgICAgICAgcmVhc29uX2xlbmd0aCA9IGxlbihyZWFzb25fYnl0ZXMpCisKKyAgICAgICAg
aWYgZnJhbWVfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFQUExJQ0FUSU9OX0NMT1NFLAor
ICAgICAgICAgICAgICAgIGNhcGFjaXR5PUFQUExJQ0FUSU9OX0NMT1NFX0ZSQU1FX0NBUEFDSVRZ
ICsgcmVhc29uX2xlbmd0aCwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKGVycm9yX2NvZGUpCisgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZWFzb25f
bGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMocmVhc29uX2J5dGVzKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgICAgICAgICBj
YXBhY2l0eT1UUkFOU1BPUlRfQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25fbGVuZ3RoLAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJyb3JfY29kZSkK
KyAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lX3R5cGUpCisgICAgICAgICAgICBi
dWYucHVzaF91aW50X3ZhcihyZWFzb25fbGVuZ3RoKQorICAgICAgICAgICAgYnVmLnB1c2hfYnl0
ZXMocmVhc29uX2J5dGVzKQorCisgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2Rl
PWVycm9yX2NvZGUsCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1yZWFzb25fcGhyYXNlLAorICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9s
aW1pdHMoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTog
UXVpY1BhY2tldFNwYWNlCisgICAgKSAtPiBOb25lOgorICAgICAgICAiIiIKKyAgICAgICAgUmFp
c2UgTUFYX0RBVEEgaWYgbmVlZGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbG9j
YWxfbWF4X2RhdGFfdXNlZCAqIDIgPiBzZWxmLl9sb2NhbF9tYXhfZGF0YToKKyAgICAgICAgICAg
IHNlbGYuX2xvY2FsX21heF9kYXRhICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygiTG9jYWwgbWF4X2RhdGEgcmFpc2VkIHRvICVkIiwgc2VsZi5fbG9jYWxfbWF4X2RhdGEpCisg
ICAgICAgIGlmIHNlbGYuX2xvY2FsX21heF9kYXRhX3NlbnQgIT0gc2VsZi5fbG9jYWxfbWF4X2Rh
dGE6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuTUFYX0RBVEEsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9TUFY
X0RBVEFfRlJBTUVfQ0FQQUNJVFksCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9t
YXhfZGF0YV9kZWxpdmVyeSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHNlbGYuX2xvY2FsX21heF9kYXRhKQorICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4
X2RhdGFfc2VudCA9IHNlbGYuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgbG9nIGZy
YW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9tYXhfZGF0YV9mcmFtZShzZWxmLl9s
b2NhbF9tYXhfZGF0YSkKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX3dyaXRlX2NyeXB0
b19mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNl
OiBRdWljUGFja2V0U3BhY2UsIHN0cmVhbTogUXVpY1N0cmVhbQorICAgICkgLT4gYm9vbDoKKyAg
ICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAzICsgc2l6ZV91aW50X3ZhcihzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCkKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkKQorICAgICAgICBpZiBmcmFtZSBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5DUllQVE8sCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9
ZnJhbWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9k
ZWxpdmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJh
bWUub2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnRfdmFyKGZyYW1lLm9mZnNldCkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihsZW4oZnJhbWUuZGF0YSkgfCAweDQwMDApCisgICAgICAgICAgICBidWYucHVzaF9ieXRl
cyhmcmFtZS5kYXRhKQorCisgICAgICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnVpbGRlci5x
dWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfY3J5cHRvX2ZyYW1lKGZyYW1lKQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X3dyaXRlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0
QnVpbGRlciwgZGF0YTogYnl0ZXMsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUKKyAgICApIC0+
IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZSBhIERBVEFHUkFNIGZyYW1lLgorCisg
ICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnJhbWUgd2FzIHByb2Nlc3NlZCwgRmFsc2Ugb3Ro
ZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGZyYW1lX3R5cGUgPT0gUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSAorICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkK
KyAgICAgICAgZnJhbWVfc2l6ZSA9IDEgKyBzaXplX3VpbnRfdmFyKGxlbmd0aCkgKyBsZW5ndGgK
KworICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKGZyYW1lX3R5cGUsIGNhcGFjaXR5
PWZyYW1lX3NpemUpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbmd0aCkKKyAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZGF0YSkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19s
b2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5l
bmNvZGVfZGF0YWdyYW1fZnJhbWUobGVuZ3RoPWxlbmd0aCkKKyAgICAgICAgICAgICkKKworICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF93cml0ZV9oYW5kc2hha2VfZG9uZV9mcmFtZShz
ZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlcikgLT4gTm9uZToKKyAgICAgICAgYnVpbGRl
ci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUs
CisgICAgICAgICAgICBjYXBhY2l0eT1IQU5EU0hBS0VfRE9ORV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgIGhhbmRsZXI9c2VsZi5fb25faGFuZHNoYWtlX2RvbmVfZGVsaXZlcnksCisgICAg
ICAgICkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfaGFuZHNoYWtl
X2RvbmVfZnJhbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9uZXdfY29ubmVj
dGlvbl9pZF9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIs
IGNvbm5lY3Rpb25faWQ6IFF1aWNDb25uZWN0aW9uSWQKKyAgICApIC0+IE5vbmU6CisgICAgICAg
IHJldGlyZV9wcmlvcl90byA9IDAgICMgRklYTUUKKworICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5ORVdfQ09OTkVDVElPTl9JRCwK
KyAgICAgICAgICAgIGNhcGFjaXR5PU5FV19DT05ORUNUSU9OX0lEX0ZSQU1FX0NBUEFDSVRZLAor
ICAgICAgICAgICAgaGFuZGxlcj1zZWxmLl9vbl9uZXdfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwK
KyAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oY29ubmVjdGlvbl9pZCwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGNvbm5lY3Rpb25faWQuc2VxdWVuY2VfbnVtYmVyKQor
ICAgICAgICBidWYucHVzaF91aW50X3ZhcihyZXRpcmVfcHJpb3JfdG8pCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQ4KGxlbihjb25uZWN0aW9uX2lkLmNpZCkpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGNvbm5lY3Rpb25faWQuY2lkKQorICAgICAgICBidWYucHVzaF9ieXRlcyhjb25uZWN0aW9uX2lk
LnN0YXRlbGVzc19yZXNldF90b2tlbikKKworICAgICAgICBjb25uZWN0aW9uX2lkLndhc19zZW50
ID0gVHJ1ZQorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5Db25uZWN0aW9uSWRJ
c3N1ZWQoY29ubmVjdGlvbl9pZD1jb25uZWN0aW9uX2lkLmNpZCkpCisKKyAgICAgICAgIyBsb2cg
ZnJhbWUKKyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkLAorICAgICAgICAg
ICAgICAgICAgICByZXRpcmVfcHJpb3JfdG89cmV0aXJlX3ByaW9yX3RvLAorICAgICAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXI9Y29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1jb25uZWN0aW9uX2lkLnN0
YXRlbGVzc19yZXNldF90b2tlbiwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisK
KyAgICBkZWYgX3dyaXRlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKAorICAgICAgICBzZWxmLCBidWls
ZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBieXRlcworICAgICkgLT4gTm9uZToK
KyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuUEFUSF9DSEFMTEVOR0UsIGNhcGFjaXR5PVBBVEhfQ0hBTExFTkdFX0ZSQU1FX0NBUEFD
SVRZCisgICAgICAgICkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY2hhbGxlbmdlKQorCisgICAg
ICAgICMgbG9nIGZyYW1lCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAorICAgICAg
ICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYXRoX2NoYWxsZW5nZV9mcmFtZShk
YXRhPWNoYWxsZW5nZSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBfd3JpdGVfcGF0aF9yZXNw
b25zZV9mcmFtZSgKKyAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGNo
YWxsZW5nZTogYnl0ZXMKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsIGNhcGFj
aXR5PVBBVEhfUkVTUE9OU0VfRlJBTUVfQ0FQQUNJVFkKKyAgICAgICAgKQorICAgICAgICBidWYu
cHVzaF9ieXRlcyhjaGFsbGVuZ2UpCisKKyAgICAgICAgIyBsb2cgZnJhbWUKKyAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBidWlsZGVyLnF1aWNf
bG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoZGF0YT1jaGFsbGVuZ2UpCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3BpbmdfZnJhbWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1
aWNQYWNrZXRCdWlsZGVyLCB1aWRzOiBMaXN0W2ludF0gPSBbXSwgY29tbWVudD0iIgorICAgICk6
CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfZnJhbWUoCisgICAgICAgICAgICBRdWljRnJhbWVUeXBl
LlBJTkcsCisgICAgICAgICAgICBjYXBhY2l0eT1QSU5HX0ZSQU1FX0NBUEFDSVRZLAorICAgICAg
ICAgICAgaGFuZGxlcj1zZWxmLl9vbl9waW5nX2RlbGl2ZXJ5LAorICAgICAgICAgICAgaGFuZGxl
cl9hcmdzPSh0dXBsZSh1aWRzKSwpLAorICAgICAgICApCisgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICJTZW5kaW5nIFBJTkclcyBpbiBwYWNrZXQgJWQiLAorICAgICAg
ICAgICAgIiAoJXMpIiAlIGNvbW1lbnQgaWYgY29tbWVudCBlbHNlICIiLAorICAgICAgICAgICAg
YnVpbGRlci5wYWNrZXRfbnVtYmVyLAorICAgICAgICApCisKKyAgICAgICAgIyBsb2cgZnJhbWUK
KyAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBi
dWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X3BpbmdfZnJhbWUoKSkKKworICAgIGRlZiBfd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJh
bWUoCisgICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzZXF1ZW5jZV9u
dW1iZXI6IGludAorICAgICkgLT4gTm9uZToKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9m
cmFtZSgKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUkVUSVJFX0NPTk5FQ1RJT05fSUQsCisg
ICAgICAgICAgICBjYXBhY2l0eT1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBBQ0lUWSwKKyAgICAg
ICAgICAgIGhhbmRsZXI9c2VsZi5fb25fcmV0aXJlX2Nvbm5lY3Rpb25faWRfZGVsaXZlcnksCisg
ICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHNlcXVlbmNlX251bWJlciwpLAorICAgICAgICApCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHNlcXVlbmNlX251bWJlcikKKworICAgICAgICAjIGxv
ZyBmcmFtZQorICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoc2Vx
dWVuY2VfbnVtYmVyKQorICAgICAgICAgICAgKQorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fZnJh
bWUoCisgICAgICAgIHNlbGYsCisgICAgICAgIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBzdHJlYW06IFF1aWNTdHJl
YW0sCisgICAgICAgIG1heF9vZmZzZXQ6IGludCwKKyAgICApIC0+IGludDoKKyAgICAgICAgIyB0
aGUgZnJhbWUgZGF0YSBzaXplIGlzIGNvbnN0cmFpbmVkIGJ5IG91ciBwZWVyJ3MgTUFYX0RBVEEg
YW5kCisgICAgICAgICMgdGhlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwYWNrZXQK
KyAgICAgICAgZnJhbWVfb3ZlcmhlYWQgPSAoCisgICAgICAgICAgICAzCisgICAgICAgICAgICAr
IHNpemVfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAgICAgICsgKHNpemVfdWlu
dF92YXIoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQpIGlmIHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0
IGVsc2UgMCkKKyAgICAgICAgKQorICAgICAgICBwcmV2aW91c19zZW5kX2hpZ2hlc3QgPSBzdHJl
YW0uX3NlbmRfaGlnaGVzdAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoCisgICAg
ICAgICAgICBidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgLSBmcmFtZV9vdmVyaGVhZCwg
bWF4X29mZnNldAorICAgICAgICApCisKKyAgICAgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDIgICMg
bGVuZ3RoCisgICAgICAgICAgICBpZiBmcmFtZS5vZmZzZXQ6CisgICAgICAgICAgICAgICAgZnJh
bWVfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSB8PSAxCisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAor
ICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCisgICAgICAgICAgICAgICAgY2FwYWNpdHk9ZnJh
bWVfb3ZlcmhlYWQsCisgICAgICAgICAgICAgICAgaGFuZGxlcj1zdHJlYW0ub25fZGF0YV9kZWxp
dmVyeSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KGZyYW1lLm9mZnNldCwgZnJhbWUu
b2Zmc2V0ICsgbGVuKGZyYW1lLmRhdGEpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5zdHJlYW1faWQpCisgICAgICAgICAgICBpZiBmcmFtZS5v
ZmZzZXQ6CisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWUub2Zmc2V0KQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihmcmFtZS5kYXRhKSB8IDB4NDAwMCkKKyAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRhdGEpCisKKyAgICAgICAgICAgICMgbG9n
IGZyYW1lCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZSwgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQKKyAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmV0
dXJuIHN0cmVhbS5fc2VuZF9oaWdoZXN0IC0gcHJldmlvdXNfc2VuZF9oaWdoZXN0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF93cml0ZV9zdHJlYW1fbGlt
aXRzKAorICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1
aWNQYWNrZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCisgICAgKSAtPiBOb25lOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmFpc2UgTUFYX1NUUkVBTV9EQVRBIGlmIG5lZWRlZC4KKworICAgICAg
ICBUaGUgb25seSBjYXNlIHdoZXJlIGBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsYCBpcyB6
ZXJvIGlzIGZvcgorICAgICAgICBsb2NhbGx5IGNyZWF0ZWQgdW5pZGlyZWN0aW9uYWwgc3RyZWFt
cy4gV2Ugc2tpcCBzdWNoIHN0cmVhbXMgdG8gYXZvaWQKKyAgICAgICAgc3B1cmlvdXMgbG9nZ2lu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICgKKyAgICAgICAgICAgIHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwKKyAgICAgICAgICAgIGFuZCBzdHJlYW0uX3JlY3ZfaGlnaGVzdCAqIDIg
PiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsCisgICAgICAgICk6CisgICAgICAgICAgICBz
dHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsICo9IDIKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAiU3RyZWFtICVkIGxvY2FsIG1heF9zdHJlYW1fZGF0
YSByYWlzZWQgdG8gJWQiLAorICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1faWQsCisgICAg
ICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwKKyAgICAgICAgICAgICkK
KyAgICAgICAgaWYgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbF9zZW50ICE9IHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWw6CisgICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTV9EQVRBLAorICAg
ICAgICAgICAgICAgIGNhcGFjaXR5PU1BWF9TVFJFQU1fREFUQV9GUkFNRV9DQVBBQ0lUWSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVyeSwK
KyAgICAgICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHN0cmVhbSwpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKKyAgICAgICAg
ICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwpCisgICAg
ICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBzdHJlYW0ubWF4X3N0
cmVhbV9kYXRhX2xvY2FsCisKKyAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBidWlsZGVy
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmVuY29kZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhpbXVtPXN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIHN0cmVhbV9pZD1z
dHJlYW0uc3RyZWFtX2lkCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAp
CisKKyAgICBkZWYgX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgc2VsZiwg
YnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIGZyYW1lX3R5cGU6IFF1aWNGcmFtZVR5cGUsIGxp
bWl0OiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9U1RSRUFNU19CTE9DS0VEX0NBUEFDSVRZKQorICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihsaW1pdCkKKworICAgICAgICAjIGxvZyBmcmFtZQorICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJ1aWxkZXIu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5lbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBp
c191bmlkaXJlY3Rpb25hbD1mcmFtZV90eXBlID09IFF1aWNGcmFtZVR5cGUuU1RSRUFNU19CTE9D
S0VEX1VOSSwKKyAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNkMzU4NzM0YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkK
QEAgLTAsMCArMSwxOTYgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB0eXBpbmcgaW1wb3J0IE9w
dGlvbmFsLCBUdXBsZQorCitmcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwgQ3J5cHRvRXJyb3Is
IEhlYWRlclByb3RlY3Rpb24KK2Zyb20gLi50bHMgaW1wb3J0IENpcGhlclN1aXRlLCBjaXBoZXJf
c3VpdGVfaGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAorZnJvbSAucGFja2V0
IGltcG9ydCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIKKworQ0lQSEVSX1NV
SVRFUyA9IHsKKyAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6IChiImFlcy0xMjgt
ZWNiIiwgYiJhZXMtMTI4LWdjbSIpLAorICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4
NDogKGIiYWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCisgICAgQ2lwaGVyU3VpdGUuQ0hB
Q0hBMjBfUE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hhMjAtcG9seTEzMDUi
KSwKK30KK0lOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hB
MjU2CitJTklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVmNzEyYzcyZWJiNWEx
MWE3ZDI0MzJiYjQ2MzY1YmVmOWY1MDIiKQorU0FNUExFX1NJWkUgPSAxNgorCisKK2NsYXNzIEtl
eVVuYXZhaWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgorICAgIHBhc3MKKworCitkZWYgZGVyaXZl
X2tleV9pdl9ocCgKKyAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNyZXQ6IGJ5dGVz
CispIC0+IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgorICAgIGFsZ29yaXRobSA9IGNpcGhl
cl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKKyAgICBpZiBjaXBoZXJfc3VpdGUgaW4gWworICAg
ICAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgICAgIENpcGhlclN1aXRl
LkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICBdOgorICAgICAgICBrZXlfc2l6ZSA9IDMy
CisgICAgZWxzZToKKyAgICAgICAga2V5X3NpemUgPSAxNgorICAgIHJldHVybiAoCisgICAgICAg
IGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMga2V5IiwgYiIiLCBr
ZXlfc2l6ZSksCisgICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBi
InF1aWMgaXYiLCBiIiIsIDEyKSwKKyAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGht
LCBzZWNyZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAorICAgICkKKworCitjbGFzcyBD
cnlwdG9Db250ZXh0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhhc2U6IGludCA9IDAp
IC0+IE5vbmU6CisgICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0gPSBOb25lCisgICAg
ICAgIHNlbGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9uZQorICAgICAgICBz
ZWxmLmtleV9waGFzZSA9IGtleV9waGFzZQorICAgICAgICBzZWxmLnNlY3JldDogT3B0aW9uYWxb
Ynl0ZXNdID0gTm9uZQorICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25l
CisKKyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMs
IGVuY3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAg
KSAtPiBUdXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06CisgICAgICAgIGlmIHNlbGYuYWVh
ZCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVFcnJvcigiRGVjcnlw
dGlvbiBrZXkgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlv
bgorICAgICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxmLmhwLnJlbW92ZShw
YWNrZXQsIGVuY3J5cHRlZF9vZmZzZXQpCisgICAgICAgIGZpcnN0X2J5dGUgPSBwbGFpbl9oZWFk
ZXJbMF0KKworICAgICAgICAjIHBhY2tldCBudW1iZXIKKyAgICAgICAgcG5fbGVuZ3RoID0gKGZp
cnN0X2J5dGUgJiAweDAzKSArIDEKKyAgICAgICAgcGFja2V0X251bWJlciA9IGRlY29kZV9wYWNr
ZXRfbnVtYmVyKAorICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVuZ3RoICogOCwgZXhw
ZWN0ZWRfcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgIyBkZXRlY3Qga2V5IHBo
YXNlIGNoYW5nZQorICAgICAgICBjcnlwdG8gPSBzZWxmCisgICAgICAgIGlmIG5vdCBpc19sb25n
X2hlYWRlcihmaXJzdF9ieXRlKToKKyAgICAgICAgICAgIGtleV9waGFzZSA9IChmaXJzdF9ieXRl
ICYgNCkgPj4gMgorICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYua2V5X3BoYXNlOgor
ICAgICAgICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYpCisKKyAgICAgICAg
IyBwYXlsb2FkIHByb3RlY3Rpb24KKyAgICAgICAgcGF5bG9hZCA9IGNyeXB0by5hZWFkLmRlY3J5
cHQoCisgICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0sIHBsYWluX2hlYWRl
ciwgcGFja2V0X251bWJlcgorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRl
ciwgcGF5bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKKworICAgIGRlZiBlbmNy
eXB0X3BhY2tldCgKKyAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5
bG9hZDogYnl0ZXMsIHBhY2tldF9udW1iZXI6IGludAorICAgICkgLT4gYnl0ZXM6CisgICAgICAg
IGFzc2VydCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxl
IgorCisgICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCisgICAgICAgIHByb3RlY3RlZF9wYXls
b2FkID0gc2VsZi5hZWFkLmVuY3J5cHQoCisgICAgICAgICAgICBwbGFpbl9wYXlsb2FkLCBwbGFp
bl9oZWFkZXIsIHBhY2tldF9udW1iZXIKKyAgICAgICAgKQorCisgICAgICAgICMgaGVhZGVyIHBy
b3RlY3Rpb24KKyAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5faGVhZGVyLCBwcm90
ZWN0ZWRfcGF5bG9hZCkKKworICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBib29sOgorICAgICAg
ICByZXR1cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCisKKyAgICBkZWYgc2V0dXAoc2VsZiwgY2lw
aGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lvbjogaW50KSAtPiBO
b25lOgorICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFtZSA9IENJUEhFUl9T
VUlURVNbY2lwaGVyX3N1aXRlXQorCisgICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9p
dl9ocChjaXBoZXJfc3VpdGUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hZWFkID0gQUVBRChhZWFk
X2NpcGhlcl9uYW1lLCBrZXksIGl2KQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhl
cl9zdWl0ZQorICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbihocF9jaXBoZXJfbmFt
ZSwgaHApCisgICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0CisgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24KKworICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgorICAgICAgICBz
ZWxmLmFlYWQgPSBOb25lCisgICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gTm9uZQorICAgICAg
ICBzZWxmLmhwID0gTm9uZQorICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUKKworCitkZWYgYXBw
bHlfa2V5X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5cHRvQ29udGV4dCkg
LT4gTm9uZToKKyAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAorICAgIHNlbGYua2V5X3BoYXNl
ID0gY3J5cHRvLmtleV9waGFzZQorICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRvLnNlY3JldAorCisK
K2RlZiBuZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBDcnlwdG9Db250ZXh0
OgorICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lwaGVyX3N1aXRlKQor
CisgICAgY3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5vdCBzZWxmLmtleV9w
aGFzZSkpCisgICAgY3J5cHRvLnNldHVwKAorICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5jaXBo
ZXJfc3VpdGUsCisgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKKyAgICAgICAgICAg
IGFsZ29yaXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplCisgICAgICAgICksCisgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAorICAgICkK
KyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3MgQ3J5cHRvUGFpcjoKKyAgICBkZWYgX19pbml0
X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXplID0gMTYKKyAgICAg
ICAgc2VsZi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCisgICAgICAgIHNlbGYuc2VuZCA9IENyeXB0
b0NvbnRleHQoKQorICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCisK
KyAgICBkZWYgZGVjcnlwdF9wYWNrZXQoCisgICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVu
Y3J5cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50CisgICAgKSAt
PiBUdXBsZVtieXRlcywgYnl0ZXMsIGludF06CisgICAgICAgIHBsYWluX2hlYWRlciwgcGF5bG9h
ZCwgcGFja2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNyeXB0X3BhY2tldCgK
KyAgICAgICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0ZWRfcGFja2V0X251
bWJlcgorICAgICAgICApCisgICAgICAgIGlmIHVwZGF0ZV9rZXk6CisgICAgICAgICAgICBzZWxm
Ll91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFj
a2V0X251bWJlcgorCisgICAgZGVmIGVuY3J5cHRfcGFja2V0KAorICAgICAgICBzZWxmLCBwbGFp
bl9oZWFkZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjogaW50
CisgICAgKSAtPiBieXRlczoKKyAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQ6
CisgICAgICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vu
ZC5lbmNyeXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1i
ZXIpCisKKyAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVzLCBpc19jbGllbnQ6
IGJvb2wsIHZlcnNpb246IGludCkgLT4gTm9uZToKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAg
ICAgICAgICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGluIiwgYiJjbGllbnQg
aW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xhYmVsID0g
YiJjbGllbnQgaW4iLCBiInNlcnZlciBpbiIKKworICAgICAgICBhbGdvcml0aG0gPSBjaXBoZXJf
c3VpdGVfaGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKKyAgICAgICAgaW5pdGlhbF9zZWNyZXQg
PSBoa2RmX2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkKKyAgICAgICAgc2Vs
Zi5yZWN2LnNldHVwKAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NV
SVRFLAorICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAg
ICAgIGFsZ29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIiIiwgYWxnb3JpdGht
LmRpZ2VzdF9zaXplCisgICAgICAgICAgICApLAorICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9u
LAorICAgICAgICApCisgICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKKyAgICAgICAgICAgIGNpcGhl
cl9zdWl0ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKKyAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4
cGFuZF9sYWJlbCgKKyAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCBz
ZW5kX2xhYmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKKyAgICAgICAgKQorCisgICAgZGVmIHRlYXJkb3du
KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigpCisgICAgICAgIHNl
bGYuc2VuZC50ZWFyZG93bigpCisKKyAgICBkZWYgdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgor
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgorICAgICAgICBpZiBzZWxmLl91cGRh
dGVfa2V5X3JlcXVlc3RlZDoKKyAgICAgICAgICAgIHJldHVybiBpbnQobm90IHNlbGYucmVjdi5r
ZXlfcGhhc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWN2Lmtl
eV9waGFzZQorCisgICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6CisgICAgICAgIGFw
cGx5X2tleV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYucmVjdikpCisgICAg
ICAgIGFwcGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNlKHNlbGYuc2VuZCkp
CisgICAgICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDMwNjkzOTM2YzE4ODE2YWUx
MTgzMjZkMmEyMjUxMjk1MjQ1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvZXZlbnRzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitmcm9tIGRhdGFjbGFz
c2VzIGltcG9ydCBkYXRhY2xhc3MKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCisKK2Ns
YXNzIFF1aWNFdmVudDoKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBRVUlDIGV2ZW50cy4K
KyAgICAiIiIKKworICAgIHBhc3MKKworCitAZGF0YWNsYXNzCitjbGFzcyBDb25uZWN0aW9uSWRJ
c3N1ZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9uX2lkOiBieXRlcworCisKK0BkYXRhY2xh
c3MKK2NsYXNzIENvbm5lY3Rpb25JZFJldGlyZWQoUXVpY0V2ZW50KToKKyAgICBjb25uZWN0aW9u
X2lkOiBieXRlcworCisKK0BkYXRhY2xhc3MKK2NsYXNzIENvbm5lY3Rpb25UZXJtaW5hdGVkKFF1
aWNFdmVudCk6CisgICAgIiIiCisgICAgVGhlIENvbm5lY3Rpb25UZXJtaW5hdGVkIGV2ZW50IGlz
IGZpcmVkIHdoZW4gdGhlIFFVSUMgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkLgorICAgICIiIgor
CisgICAgZXJyb3JfY29kZTogaW50CisgICAgIlRoZSBlcnJvciBjb2RlIHdoaWNoIHdhcyBzcGVj
aWZpZWQgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLiIKKworICAgIGZyYW1lX3R5cGU6IE9w
dGlvbmFsW2ludF0KKyAgICAiVGhlIGZyYW1lIHR5cGUgd2hpY2ggY2F1c2VkIHRoZSBjb25uZWN0
aW9uIHRvIGJlIGNsb3NlZCwgb3IgYE5vbmVgLiIKKworICAgIHJlYXNvbl9waHJhc2U6IHN0cgor
ICAgICJUaGUgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB3aGljaCB0aGUgY29ubmVjdGlvbiB3
YXMgY2xvc2VkLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBEYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
UXVpY0V2ZW50KToKKyAgICAiIiIKKyAgICBUaGUgRGF0YWdyYW1GcmFtZVJlY2VpdmVkIGV2ZW50
IGlzIGZpcmVkIHdoZW4gYSBEQVRBR1JBTSBmcmFtZSBpcyByZWNlaXZlZC4KKyAgICAiIiIKKwor
ICAgIGRhdGE6IGJ5dGVzCisgICAgIlRoZSBkYXRhIHdoaWNoIHdhcyByZWNlaXZlZC4iCisKKwor
QGRhdGFjbGFzcworY2xhc3MgSGFuZHNoYWtlQ29tcGxldGVkKFF1aWNFdmVudCk6CisgICAgIiIi
CisgICAgVGhlIEhhbmRzaGFrZUNvbXBsZXRlZCBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBUTFMg
aGFuZHNoYWtlIGNvbXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlv
bmFsW3N0cl0KKyAgICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFM
UE4sIG9yIGBOb25lYC4iCisKKyAgICBlYXJseV9kYXRhX2FjY2VwdGVkOiBib29sCisgICAgIldo
ZXRoZXIgZWFybHkgKDAtUlRUKSBkYXRhIHdhcyBhY2NlcHRlZCBieSB0aGUgcmVtb3RlIHBlZXIu
IgorCisgICAgc2Vzc2lvbl9yZXN1bWVkOiBib29sCisgICAgIldoZXRoZXIgYSBUTFMgc2Vzc2lv
biB3YXMgcmVzdW1lZC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgUGluZ0Fja25vd2xlZGdlZChR
dWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQaW5nQWNrbm93bGVkZ2VkIGV2ZW50IGlzIGZp
cmVkIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25vd2xlZGdlZC4KKyAgICAiIiIKKworICAgIHVp
ZDogaW50CisgICAgIlRoZSB1bmlxdWUgSUQgb2YgdGhlIFBJTkcuIgorCisKK0BkYXRhY2xhc3MK
K2NsYXNzIFByb3RvY29sTmVnb3RpYXRlZChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBQ
cm90b2NvbE5lZ290aWF0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiBBTFBOIG5lZ290aWF0aW9uIGNv
bXBsZXRlcy4KKyAgICAiIiIKKworICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0KKyAg
ICAiVGhlIHByb3RvY29sIHdoaWNoIHdhcyBuZWdvdGlhdGVkIHVzaW5nIEFMUE4sIG9yIGBOb25l
YC4iCisKKworQGRhdGFjbGFzcworY2xhc3MgU3RyZWFtRGF0YVJlY2VpdmVkKFF1aWNFdmVudCk6
CisgICAgIiIiCisgICAgVGhlIFN0cmVhbURhdGFSZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVu
ZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEKKyAgICBzdHJlYW0uCisgICAgIiIiCisKKyAgICBk
YXRhOiBieXRlcworICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgorCisgICAgZW5k
X3N0cmVhbTogYm9vbAorICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4g
Yml0IHNldC4iCisKKyAgICBzdHJlYW1faWQ6IGludAorICAgICJUaGUgSUQgb2YgdGhlIHN0cmVh
bSB0aGUgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yLiIKKworCitAZGF0YWNsYXNzCitjbGFzcyBTdHJl
YW1SZXNldChRdWljRXZlbnQpOgorICAgICIiIgorICAgIFRoZSBTdHJlYW1SZXNldCBldmVudCBp
cyBmaXJlZCB3aGVuIHRoZSByZW1vdGUgcGVlciByZXNldHMgYSBzdHJlYW0uCisgICAgIiIiCisK
KyAgICBlcnJvcl9jb2RlOiBpbnQKKyAgICAiVGhlIGVycm9yIGNvZGUgdGhhdCB0cmlnZ2VyZWQg
dGhlIHJlc2V0LiIKKworICAgIHN0cmVhbV9pZDogaW50CisgICAgIlRoZSBJRCBvZiB0aGUgc3Ry
ZWFtIHRoYXQgd2FzIHJlc2V0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL2xvZ2dlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNDk3NWJkNTkyZTFjMDg3ODI1Y2Q5NWM2MDNjNjkwNmE3NDNkYjgxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5
CkBAIC0wLDAgKzEsMjY2IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCB0aW1lCitmcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGVxdWUsIERp
Y3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZQorCitmcm9tIC5wYWNrZXQgaW1wb3J0ICgKKyAgICBQ
QUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAgICBQQUNL
RVRfVFlQRV9NQVNLLAorICAgIFBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgUEFDS0VUX1RZUEVf
UkVUUlksCisgICAgUEFDS0VUX1RZUEVfWkVST19SVFQsCisgICAgUXVpY1N0cmVhbUZyYW1lLAor
ICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzLAorKQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJh
bmdlU2V0CisKK1BBQ0tFVF9UWVBFX05BTUVTID0geworICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUw6
ICJpbml0aWFsIiwKKyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6ICJoYW5kc2hha2UiLAorICAg
IFBBQ0tFVF9UWVBFX1pFUk9fUlRUOiAiMFJUVCIsCisgICAgUEFDS0VUX1RZUEVfT05FX1JUVDog
IjFSVFQiLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZOiAicmV0cnkiLAorfQorCisKK2RlZiBoZXhk
dW1wKGRhdGE6IGJ5dGVzKSAtPiBzdHI6CisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkoZGF0
YSkuZGVjb2RlKCJhc2NpaSIpCisKKworY2xhc3MgUXVpY0xvZ2dlclRyYWNlOgorICAgICIiIgor
ICAgIEEgUVVJQyBldmVudCB0cmFjZS4KKworICAgIEV2ZW50cyBhcmUgbG9nZ2VkIGluIHRoZSBm
b3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2VlOiBodHRwczovL3F1aWNs
b2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFsb2ctZXZlbnQtZGVmaW5p
dGlvbnMtcXVpYy1oMy5odG1sCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwg
aXNfY2xpZW50OiBib29sLCBvZGNpZDogYnl0ZXMpIC0+IE5vbmU6CisgICAgICAgIHNlbGYuX29k
Y2lkID0gb2RjaWQKKyAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtUdXBsZVtmbG9hdCwgc3Ry
LCBzdHIsIERpY3Rbc3RyLCBBbnldXV0gPSBkZXF1ZSgpCisgICAgICAgIHNlbGYuX3ZhbnRhZ2Vf
cG9pbnQgPSB7CisgICAgICAgICAgICAibmFtZSI6ICJhaW9xdWljIiwKKyAgICAgICAgICAgICJ0
eXBlIjogImNsaWVudCIgaWYgaXNfY2xpZW50IGVsc2UgInNlcnZlciIsCisgICAgICAgIH0KKwor
ICAgIGRlZiBlbmNvZGVfYWNrX2ZyYW1lKHNlbGYsIHJhbmdlczogUmFuZ2VTZXQsIGRlbGF5OiBm
bG9hdCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJhY2tfZGVsYXki
OiBzdHIoc2VsZi5lbmNvZGVfdGltZShkZWxheSkpLAorICAgICAgICAgICAgImFja2VkX3Jhbmdl
cyI6IFtbc3RyKHguc3RhcnQpLCBzdHIoeC5zdG9wIC0gMSldIGZvciB4IGluIHJhbmdlc10sCisg
ICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJhY2siLAorICAgICAgICB9CisKKyAgICBkZWYgZW5j
b2RlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGlu
dCwgZnJhbWVfdHlwZTogT3B0aW9uYWxbaW50XSwgcmVhc29uX3BocmFzZTogc3RyCisgICAgKSAt
PiBEaWN0OgorICAgICAgICBhdHRycyA9IHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJy
b3JfY29kZSwKKyAgICAgICAgICAgICJlcnJvcl9zcGFjZSI6ICJhcHBsaWNhdGlvbiIgaWYgZnJh
bWVfdHlwZSBpcyBOb25lIGVsc2UgInRyYW5zcG9ydCIsCisgICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJjb25uZWN0aW9uX2Nsb3NlIiwKKyAgICAgICAgICAgICJyYXdfZXJyb3JfY29kZSI6IGVy
cm9yX2NvZGUsCisgICAgICAgICAgICAicmVhc29uIjogcmVhc29uX3BocmFzZSwKKyAgICAgICAg
fQorICAgICAgICBpZiBmcmFtZV90eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXR0cnNb
InRyaWdnZXJfZnJhbWVfdHlwZSJdID0gZnJhbWVfdHlwZQorCisgICAgICAgIHJldHVybiBhdHRy
cworCisgICAgZGVmIGVuY29kZV9jcnlwdG9fZnJhbWUoc2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1G
cmFtZSkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBl
IjogImNyeXB0byIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKGZyYW1lLmRhdGEpLAorICAg
ICAgICAgICAgIm9mZnNldCI6IHN0cihmcmFtZS5vZmZzZXQpLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX2RhdGFfYmxvY2tlZF9mcmFtZShzZWxmLCBsaW1pdDogaW50KSAtPiBEaWN0Ogor
ICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFfYmxvY2tlZCIsICJsaW1pdCI6IHN0
cihsaW1pdCl9CisKKyAgICBkZWYgZW5jb2RlX2RhdGFncmFtX2ZyYW1lKHNlbGYsIGxlbmd0aDog
aW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImRhdGFncmFtIiwg
Imxlbmd0aCI6IGxlbmd0aH0KKworICAgIGRlZiBlbmNvZGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUo
c2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJoYW5kc2hha2Vf
ZG9uZSJ9CisKKyAgICBkZWYgZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYsIG1heGltdW06IGlu
dCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsiZnJhbWVfdHlwZSI6ICJtYXhfZGF0YSIsICJt
YXhpbXVtIjogc3RyKG1heGltdW0pfQorCisgICAgZGVmIGVuY29kZV9tYXhfc3RyZWFtX2RhdGFf
ZnJhbWUoc2VsZiwgbWF4aW11bTogaW50LCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjogIm1heF9zdHJlYW1fZGF0YSIs
CisgICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKKyAgICAgICAgICAgICJzdHJl
YW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9tYXhf
c3RyZWFtc19mcmFtZShzZWxmLCBpc191bmlkaXJlY3Rpb25hbDogYm9vbCwgbWF4aW11bTogaW50
KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAi
bWF4X3N0cmVhbXMiLAorICAgICAgICAgICAgIm1heGltdW0iOiBzdHIobWF4aW11bSksCisgICAg
ICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlmIGlzX3VuaWRpcmVjdGlv
bmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX25l
d19jb25uZWN0aW9uX2lkX2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBjb25uZWN0aW9u
X2lkOiBieXRlcywKKyAgICAgICAgcmV0aXJlX3ByaW9yX3RvOiBpbnQsCisgICAgICAgIHNlcXVl
bmNlX251bWJlcjogaW50LAorICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzLAor
ICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25uZWN0aW9u
X2lkIjogaGV4ZHVtcChjb25uZWN0aW9uX2lkKSwKKyAgICAgICAgICAgICJmcmFtZV90eXBlIjog
Im5ld19jb25uZWN0aW9uX2lkIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oY29ubmVjdGlv
bl9pZCksCisgICAgICAgICAgICAicmVzZXRfdG9rZW4iOiBoZXhkdW1wKHN0YXRlbGVzc19yZXNl
dF90b2tlbiksCisgICAgICAgICAgICAicmV0aXJlX3ByaW9yX3RvIjogc3RyKHJldGlyZV9wcmlv
cl90byksCisgICAgICAgICAgICAic2VxdWVuY2VfbnVtYmVyIjogc3RyKHNlcXVlbmNlX251bWJl
ciksCisgICAgICAgIH0KKworICAgIGRlZiBlbmNvZGVfbmV3X3Rva2VuX2ZyYW1lKHNlbGYsIHRv
a2VuOiBieXRlcykgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJmcmFt
ZV90eXBlIjogIm5ld190b2tlbiIsCisgICAgICAgICAgICAibGVuZ3RoIjogbGVuKHRva2VuKSwK
KyAgICAgICAgICAgICJ0b2tlbiI6IGhleGR1bXAodG9rZW4pLAorICAgICAgICB9CisKKyAgICBk
ZWYgZW5jb2RlX3BhZGRpbmdfZnJhbWUoc2VsZikgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsi
ZnJhbWVfdHlwZSI6ICJwYWRkaW5nIn0KKworICAgIGRlZiBlbmNvZGVfcGF0aF9jaGFsbGVuZ2Vf
ZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6CisgICAgICAgIHJldHVybiB7ImRhdGEi
OiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJwYXRoX2NoYWxsZW5nZSJ9CisKKyAgICBk
ZWYgZW5jb2RlX3BhdGhfcmVzcG9uc2VfZnJhbWUoc2VsZiwgZGF0YTogYnl0ZXMpIC0+IERpY3Q6
CisgICAgICAgIHJldHVybiB7ImRhdGEiOiBoZXhkdW1wKGRhdGEpLCAiZnJhbWVfdHlwZSI6ICJw
YXRoX3Jlc3BvbnNlIn0KKworICAgIGRlZiBlbmNvZGVfcGluZ19mcmFtZShzZWxmKSAtPiBEaWN0
OgorICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogInBpbmcifQorCisgICAgZGVmIGVuY29k
ZV9yZXNldF9zdHJlYW1fZnJhbWUoCisgICAgICAgIHNlbGYsIGVycm9yX2NvZGU6IGludCwgZmlu
YWxfc2l6ZTogaW50LCBzdHJlYW1faWQ6IGludAorICAgICkgLT4gRGljdDoKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAg
ICJmaW5hbF9zaXplIjogc3RyKGZpbmFsX3NpemUpLAorICAgICAgICAgICAgImZyYW1lX3R5cGUi
OiAicmVzZXRfc3RyZWFtIiwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lk
KSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFt
ZShzZWxmLCBzZXF1ZW5jZV9udW1iZXI6IGludCkgLT4gRGljdDoKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJmcmFtZV90eXBlIjogInJldGlyZV9jb25uZWN0aW9uX2lkIiwKKyAgICAg
ICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVtYmVyKSwKKyAgICAgICAg
fQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYsIGxpbWl0
OiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgImZyYW1lX3R5cGUiOiAic3RyZWFtX2RhdGFfYmxvY2tlZCIsCisgICAgICAgICAgICAi
bGltaXQiOiBzdHIobGltaXQpLAorICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1f
aWQpLAorICAgICAgICB9CisKKyAgICBkZWYgZW5jb2RlX3N0b3Bfc2VuZGluZ19mcmFtZShzZWxm
LCBlcnJvcl9jb2RlOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAic3RvcF9zZW5kaW5nIiwKKyAgICAgICAg
ICAgICJlcnJvcl9jb2RlIjogZXJyb3JfY29kZSwKKyAgICAgICAgICAgICJzdHJlYW1faWQiOiBz
dHIoc3RyZWFtX2lkKSwKKyAgICAgICAgfQorCisgICAgZGVmIGVuY29kZV9zdHJlYW1fZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiZmluIjogZnJhbWUuZmluLAorICAgICAgICAg
ICAgImZyYW1lX3R5cGUiOiAic3RyZWFtIiwKKyAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oZnJh
bWUuZGF0YSksCisgICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9mZnNldCksCisgICAg
ICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCisgICAgICAgIH0KKworICAgIGRl
ZiBlbmNvZGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBi
b29sLCBsaW1pdDogaW50KSAtPiBEaWN0OgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ImZyYW1lX3R5cGUiOiAic3RyZWFtc19ibG9ja2VkIiwKKyAgICAgICAgICAgICJsaW1pdCI6IHN0
cihsaW1pdCksCisgICAgICAgICAgICAic3RyZWFtX3R5cGUiOiAidW5pZGlyZWN0aW9uYWwiIGlm
IGlzX3VuaWRpcmVjdGlvbmFsIGVsc2UgImJpZGlyZWN0aW9uYWwiLAorICAgICAgICB9CisKKyAg
ICBkZWYgZW5jb2RlX3RpbWUoc2VsZiwgc2Vjb25kczogZmxvYXQpIC0+IGludDoKKyAgICAgICAg
IiIiCisgICAgICAgIENvbnZlcnQgYSB0aW1lIHRvIGludGVnZXIgbWljcm9zZWNvbmRzLgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWNvbmRzICogMTAwMDAwMCkKKworICAgIGRl
ZiBlbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgIHNlbGYsIG93bmVyOiBzdHIs
IHBhcmFtZXRlcnM6IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzCisgICAgKSAtPiBEaWN0W3N0ciwg
QW55XToKKyAgICAgICAgZGF0YTogRGljdFtzdHIsIEFueV0gPSB7Im93bmVyIjogb3duZXJ9Cisg
ICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBwYXJhbWV0ZXJzLl9fZGljdF9f
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBib29sKToK
KyAgICAgICAgICAgICAgICBkYXRhW3BhcmFtX25hbWVdID0gcGFyYW1fdmFsdWUKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShwYXJhbV92YWx1ZSwgYnl0ZXMpOgorICAgICAgICAgICAgICAg
IGRhdGFbcGFyYW1fbmFtZV0gPSBoZXhkdW1wKHBhcmFtX3ZhbHVlKQorICAgICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBpbnQpOgorICAgICAgICAgICAgICAgIGRhdGFbcGFy
YW1fbmFtZV0gPSBwYXJhbV92YWx1ZQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGxv
Z19ldmVudChzZWxmLCAqLCBjYXRlZ29yeTogc3RyLCBldmVudDogc3RyLCBkYXRhOiBEaWN0KSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCh0aW1lLnRpbWUoKSwgY2F0ZWdv
cnksIGV2ZW50LCBkYXRhKSkKKworICAgIGRlZiBwYWNrZXRfdHlwZShzZWxmLCBwYWNrZXRfdHlw
ZTogaW50KSAtPiBzdHI6CisgICAgICAgIHJldHVybiBQQUNLRVRfVFlQRV9OQU1FUy5nZXQocGFj
a2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLLCAiMVJUVCIpCisKKyAgICBkZWYgdG9fZGljdChz
ZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUg
dHJhY2UgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCisgICAg
ICAgICIiIgorICAgICAgICBpZiBzZWxmLl9ldmVudHM6CisgICAgICAgICAgICByZWZlcmVuY2Vf
dGltZSA9IHNlbGYuX2V2ZW50c1swXVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVm
ZXJlbmNlX3RpbWUgPSAwLjAKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICJjb25maWd1
cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAgICAiY29tbW9uX2ZpZWxk
cyI6IHsKKyAgICAgICAgICAgICAgICAiT0RDSUQiOiBoZXhkdW1wKHNlbGYuX29kY2lkKSwKKyAg
ICAgICAgICAgICAgICAicmVmZXJlbmNlX3RpbWUiOiBzdHIoc2VsZi5lbmNvZGVfdGltZShyZWZl
cmVuY2VfdGltZSkpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJldmVudF9maWVsZHMi
OiBbInJlbGF0aXZlX3RpbWUiLCAiY2F0ZWdvcnkiLCAiZXZlbnRfdHlwZSIsICJkYXRhIl0sCisg
ICAgICAgICAgICAiZXZlbnRzIjogbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoCisgICAgICAg
ICAgICAgICAgICAgIGxhbWJkYSBldmVudDogKAorICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
KHNlbGYuZW5jb2RlX3RpbWUoZXZlbnRbMF0gLSByZWZlcmVuY2VfdGltZSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudFsy
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50WzNdLAorICAgICAgICAgICAgICAgICAg
ICApLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMsCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICJ2YW50YWdlX3BvaW50Ijogc2VsZi5fdmFu
dGFnZV9wb2ludCwKKyAgICAgICAgfQorCisKK2NsYXNzIFF1aWNMb2dnZXI6CisgICAgIiIiCisg
ICAgQSBRVUlDIGV2ZW50IGxvZ2dlci4KKworICAgIFNlcnZlcyBhcyBhIGNvbnRhaW5lciBmb3Ig
dHJhY2VzIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBxbG9nIGRyYWZ0LTAxLgorCisgICAgU2Vl
OiBodHRwczovL3F1aWNsb2cuZ2l0aHViLmlvL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tYXJ4LXFs
b2ctbWFpbi1zY2hlbWEuaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuX3RyYWNlczogTGlzdFtRdWljTG9nZ2VyVHJhY2VdID0gW10K
KworICAgIGRlZiBzdGFydF90cmFjZShzZWxmLCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRl
cykgLT4gUXVpY0xvZ2dlclRyYWNlOgorICAgICAgICB0cmFjZSA9IFF1aWNMb2dnZXJUcmFjZShp
c19jbGllbnQ9aXNfY2xpZW50LCBvZGNpZD1vZGNpZCkKKyAgICAgICAgc2VsZi5fdHJhY2VzLmFw
cGVuZCh0cmFjZSkKKyAgICAgICAgcmV0dXJuIHRyYWNlCisKKyAgICBkZWYgZW5kX3RyYWNlKHNl
bGYsIHRyYWNlOiBRdWljTG9nZ2VyVHJhY2UpIC0+IE5vbmU6CisgICAgICAgIGFzc2VydCB0cmFj
ZSBpbiBzZWxmLl90cmFjZXMsICJRdWljTG9nZ2VyVHJhY2UgZG9lcyBub3QgYmVsb25nIHRvIFF1
aWNMb2dnZXIiCisKKyAgICBkZWYgdG9fZGljdChzZWxmKSAtPiBEaWN0W3N0ciwgQW55XToKKyAg
ICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgdHJhY2VzIGFzIGEgZGljdGlvbmFyeSB3aGlj
aCBjYW4gYmUgd3JpdHRlbiBhcyBKU09OLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLAorICAgICAgICAgICAgInRy
YWNlcyI6IFt0cmFjZS50b19kaWN0KCkgZm9yIHRyYWNlIGluIHNlbGYuX3RyYWNlc10sCisgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYwYmNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CkBAIC0wLDAgKzEsNTA4
IEBACitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCBvcworZnJvbSBk
YXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zy
b20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKKworZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNHQ00KKworZnJvbSAu
LmJ1ZmZlciBpbXBvcnQgQnVmZmVyCitmcm9tIC4udGxzIGltcG9ydCBwdWxsX2Jsb2NrLCBwdXNo
X2Jsb2NrCitmcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKKworUEFDS0VUX0xPTkdfSEVB
REVSID0gMHg4MAorUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKK1BBQ0tFVF9TUElOX0JJVCA9IDB4
MjAKKworUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBBQ0tFVF9G
SVhFRF9CSVQgfCAweDAwCitQQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tFVF9MT05HX0hFQURF
UiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCitQQUNLRVRfVFlQRV9IQU5EU0hBS0UgPSBQQUNL
RVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAorUEFDS0VUX1RZUEVfUkVU
UlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgzMAorUEFDS0VU
X1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKK1BBQ0tFVF9UWVBFX01BU0sgPSAweEYw
CisKK0NPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAorUEFDS0VUX05VTUJFUl9NQVhfU0laRSA9
IDQKK1JFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMyZWNkYjJhMjEzM2M4
NDFlNDA0M2RmMjdkNDQzMCIpCitSRVRSWV9BRUFEX05PTkNFID0gYmluYXNjaWkudW5oZXhsaWZ5
KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQorUkVUUllfSU5URUdSSVRZX1RBR19TSVpFID0g
MTYKKworCitjbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgorICAgIE5PX0VSUk9SID0gMHgw
CisgICAgSU5URVJOQUxfRVJST1IgPSAweDEKKyAgICBTRVJWRVJfQlVTWSA9IDB4MgorICAgIEZM
T1dfQ09OVFJPTF9FUlJPUiA9IDB4MworICAgIFNUUkVBTV9MSU1JVF9FUlJPUiA9IDB4NAorICAg
IFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQorICAgIEZJTkFMX1NJWkVfRVJST1IgPSAweDYKKyAg
ICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NworICAgIFRSQU5TUE9SVF9QQVJBTUVURVJfRVJS
T1IgPSAweDgKKyAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5CisgICAgUFJPVE9D
T0xfVklPTEFUSU9OID0gMHhBCisgICAgSU5WQUxJRF9UT0tFTiA9IDB4QgorICAgIENSWVBUT19C
VUZGRVJfRVhDRUVERUQgPSAweEQKKyAgICBDUllQVE9fRVJST1IgPSAweDEwMAorCisKK2NsYXNz
IFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6CisgICAgTkVHT1RJQVRJT04gPSAwCisgICAg
RFJBRlRfMjUgPSAweEZGMDAwMDE5CisgICAgRFJBRlRfMjYgPSAweEZGMDAwMDFBCisgICAgRFJB
RlRfMjcgPSAweEZGMDAwMDFCCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY0hlYWRlcjoKKyAg
ICBpc19sb25nX2hlYWRlcjogYm9vbAorICAgIHZlcnNpb246IE9wdGlvbmFsW2ludF0KKyAgICBw
YWNrZXRfdHlwZTogaW50CisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcworICAgIHNvdXJjZV9j
aWQ6IGJ5dGVzCisgICAgdG9rZW46IGJ5dGVzID0gYiIiCisgICAgaW50ZWdyaXR5X3RhZzogYnl0
ZXMgPSBiIiIKKyAgICByZXN0X2xlbmd0aDogaW50ID0gMAorCisKK2RlZiBkZWNvZGVfcGFja2V0
X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0ZWQ6IGludCkgLT4g
aW50OgorICAgICIiIgorICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZyb20gYSB0cnVuY2F0
ZWQgcGFja2V0IG51bWJlci4KKworICAgIFNlZTogQXBwZW5kaXggQSAtIFNhbXBsZSBQYWNrZXQg
TnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQorICAgICIiIgorICAgIHdpbmRvdyA9IDEgPDwgbnVt
X2JpdHMKKyAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCisgICAgY2FuZGlkYXRlID0gKGV4
cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKKyAgICBpZiBjYW5kaWRhdGUgPD0g
ZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwgNjIpIC0gd2luZG93
OgorICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93CisgICAgZWxpZiBjYW5kaWRhdGUg
PiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2luZG93OgorICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZQorCisKK2RlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICBwYWNrZXRfd2l0
aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzCispIC0+IGJ5
dGVzOgorICAgICIiIgorICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRhZyBmb3IgYSBSRVRS
WSBwYWNrZXQuCisgICAgIiIiCisgICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8gcGFja2V0CisgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSAr
IGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQpKQorICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdpbmFsX2Rlc3RpbmF0
aW9uX2NpZCkKKyAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90YWcpCisgICAgYXNz
ZXJ0IGJ1Zi5lb2YoKQorCisgICAgIyBydW4gQUVTLTEyOC1HQ00KKyAgICBhZWFkID0gQUVTR0NN
KFJFVFJZX0FFQURfS0VZKQorICAgIGludGVncml0eV90YWcgPSBhZWFkLmVuY3J5cHQoUkVUUllf
QUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKKyAgICBhc3NlcnQgbGVuKGludGVncml0eV90YWcp
ID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQorICAgIHJldHVybiBpbnRlZ3JpdHlfdGFnCisK
KworZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6CisgICAgcmV0dXJu
IGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKKworCitkZWYgaXNfbG9uZ19oZWFk
ZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgorICAgIHJldHVybiBib29sKGZpcnN0X2J5dGUg
JiBQQUNLRVRfTE9OR19IRUFERVIpCisKKworZGVmIHB1bGxfcXVpY19oZWFkZXIoYnVmOiBCdWZm
ZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IFF1aWNIZWFkZXI6
CisgICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKworICAgIGludGVncml0eV90YWcg
PSBiIiIKKyAgICB0b2tlbiA9IGIiIgorICAgIGlmIGlzX2xvbmdfaGVhZGVyKGZpcnN0X2J5dGUp
OgorICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAorICAgICAgICB2ZXJzaW9uID0gYnVmLnB1
bGxfdWludDMyKCkKKworICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID0gYnVmLnB1bGxf
dWludDgoKQorICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4gQ09OTkVDVElPTl9J
RF9NQVhfU0laRToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAg
ICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIGRlc3RpbmF0aW9u
X2NpZF9sZW5ndGgKKyAgICAgICAgICAgICkKKyAgICAgICAgZGVzdGluYXRpb25fY2lkID0gYnVm
LnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKKworICAgICAgICBzb3VyY2VfY2lk
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgaWYgc291cmNlX2NpZF9sZW5ndGgg
PiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
U291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9jaWRfbGVuZ3RoKQor
ICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2NpZF9sZW5ndGgpCisK
KyAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OOgor
ICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCisgICAgICAgICAgICBwYWNrZXRfdHlw
ZSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0gYnVmLnRl
bGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IChmaXJzdF9ieXRlICYgUEFD
S0VUX0ZJWEVEX0JJVCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0
IGZpeGVkIGJpdCBpcyB6ZXJvIikKKworICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBmaXJzdF9i
eXRlICYgUEFDS0VUX1RZUEVfTUFTSworICAgICAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFD
S0VUX1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCisgICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVsbF9ieXRlcyh0b2tl
bl9sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYucHVsbF91aW50X3Zh
cigpCisgICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JFVFJZOgor
ICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50ZWxsKCkg
LSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGJ1Zi5w
dWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBpbnRlZ3JpdHlfdGFnID0g
YnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQorICAgICAgICAgICAgICAg
IHJlc3RfbGVuZ3RoID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN0
X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKworICAgICAgICByZXR1cm4gUXVpY0hlYWRl
cigKKyAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCisgICAgICAgICAgICB2ZXJzaW9u
PXZlcnNpb24sCisgICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCisgICAgICAgICAgICBzb3VyY2Vf
Y2lkPXNvdXJjZV9jaWQsCisgICAgICAgICAgICB0b2tlbj10b2tlbiwKKyAgICAgICAgICAgIGlu
dGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKKyAgICAgICAgICAgIHJlc3RfbGVuZ3RoPXJlc3Rf
bGVuZ3RoLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgIyBzaG9ydCBoZWFkZXIgcGFj
a2V0CisgICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhFRF9CSVQpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKKwor
ICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNLCisgICAg
ICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lkX2xlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCisgICAgICAgICAgICBpc19sb25nX2hlYWRlcj1GYWxz
ZSwKKyAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPXBh
Y2tldF90eXBlLAorICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0aW9uX2NpZCwK
KyAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAorICAgICAgICAgICAgdG9rZW49YiIiLAorICAg
ICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSwKKyAgICAgICAg
KQorCisKK2RlZiBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICB2ZXJzaW9uOiBpbnQsCisgICAgc291
cmNlX2NpZDogYnl0ZXMsCisgICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywKKyAgICBvcmlnaW5h
bF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAorICAgIHJldHJ5X3Rva2VuOiBieXRlcywKKykgLT4g
Ynl0ZXM6CisgICAgYnVmID0gQnVmZmVyKAorICAgICAgICBjYXBhY2l0eT03CisgICAgICAgICsg
bGVuKGRlc3RpbmF0aW9uX2NpZCkKKyAgICAgICAgKyBsZW4oc291cmNlX2NpZCkKKyAgICAgICAg
KyBsZW4ocmV0cnlfdG9rZW4pCisgICAgICAgICsgUkVUUllfSU5URUdSSVRZX1RBR19TSVpFCisg
ICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQorICAgIGJ1Zi5wdXNo
X3VpbnQzMih2ZXJzaW9uKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0aW5hdGlvbl9jaWQp
KQorICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKKyAgICBidWYucHVzaF91aW50
OChsZW4oc291cmNlX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoc291cmNlX2NpZCkKKyAgICBi
dWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKKyAgICBidWYucHVzaF9ieXRlcyhnZXRfcmV0cnlf
aW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSkKKyAgICBh
c3NlcnQgYnVmLmVvZigpCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworZGVmIGVuY29kZV9xdWlj
X3ZlcnNpb25fbmVnb3RpYXRpb24oCisgICAgc291cmNlX2NpZDogYnl0ZXMsIGRlc3RpbmF0aW9u
X2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCispIC0+IGJ5dGVzOgor
ICAgIGJ1ZiA9IEJ1ZmZlcigKKyAgICAgICAgY2FwYWNpdHk9NworICAgICAgICArIGxlbihkZXN0
aW5hdGlvbl9jaWQpCisgICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCisgICAgICAgICsgNCAqIGxl
bihzdXBwb3J0ZWRfdmVyc2lvbnMpCisgICAgKQorICAgIGJ1Zi5wdXNoX3VpbnQ4KG9zLnVyYW5k
b20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCisgICAgYnVmLnB1c2hfdWludDMyKFF1aWNQ
cm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCisgICAgYnVmLnB1c2hfdWludDgobGVuKGRlc3Rp
bmF0aW9uX2NpZCkpCisgICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25fY2lkKQorICAgIGJ1
Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKKyAgICBidWYucHVzaF9ieXRlcyhzb3VyY2Vf
Y2lkKQorICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoKKyAgICAgICAgYnVm
LnB1c2hfdWludDMyKHZlcnNpb24pCisgICAgcmV0dXJuIGJ1Zi5kYXRhCisKKworIyBUTFMgRVhU
RU5TSU9OCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAg
aXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgaXB2Nl9hZGRyZXNz
OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCisgICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKKyAg
ICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgUXVp
Y1RyYW5zcG9ydFBhcmFtZXRlcnM6CisgICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxbaW50XSA9IE5vbmUK
KyAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKKyAgICBt
YXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfZGF0
YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRp
X2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBpbml0aWFsX21heF9zdHJlYW1z
X2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk6
IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgYWNrX2RlbGF5X2V4cG9uZW50OiBPcHRpb25hbFtp
bnRdID0gTm9uZQorICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAg
ZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZhbHNlCisgICAgcHJl
ZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNzXSA9IE5vbmUKKyAg
ICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBxdWFudHVt
X3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorCisKK1BBUkFNUyA9IHsKKyAgICAw
OiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCisgICAgMTogKCJpZGxlX3RpbWVv
dXQiLCBpbnQpLAorICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwgYnl0ZXMpLAorICAg
IDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKKyAgICA0OiAoImluaXRpYWxfbWF4X2RhdGEi
LCBpbnQpLAorICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbCIsIGlu
dCksCisgICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIsIGludCks
CisgICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQpLAorICAgIDg6ICgi
aW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKKyAgICA5OiAoImluaXRpYWxfbWF4X3N0
cmVhbXNfdW5pIiwgaW50KSwKKyAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25lbnQiLCBpbnQpLAor
ICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAorICAgIDEyOiAoImRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbiIsIGJvb2wpLAorICAgIDEzOiAoInByZWZlcnJlZF9hZGRyZXNzIiwgUXVpY1By
ZWZlcnJlZEFkZHJlc3MpLAorICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0Iiwg
aW50KSwKKyAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGludCksCisgICAgMzEy
NzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKK30KKworCitkZWYgcHVsbF9xdWljX3By
ZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVkQWRkcmVzczoKKyAg
ICBpcHY0X2FkZHJlc3MgPSBOb25lCisgICAgaXB2NF9ob3N0ID0gYnVmLnB1bGxfYnl0ZXMoNCkK
KyAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQorICAgIGlmIGlwdjRfaG9zdCAhPSBi
eXRlcyg0KToKKyAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2NEFkZHJl
c3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKKworICAgIGlwdjZfYWRkcmVzcyA9IE5vbmUKKyAg
ICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKKyAgICBpcHY2X3BvcnQgPSBidWYucHVs
bF91aW50MTYoKQorICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6CisgICAgICAgIGlwdjZf
YWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9zdCkpLCBpcHY2X3Bv
cnQpCisKKyAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICBj
b25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9sZW5ndGgpCisgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCisKKyAgICByZXR1cm4g
UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisgICAgICAgIGlwdjRfYWRkcmVzcz1pcHY0X2FkZHJlc3Ms
CisgICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCisgICAgICAgIGNvbm5lY3Rpb25f
aWQ9Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0YXRlbGVz
c19yZXNldF90b2tlbiwKKyAgICApCisKKworZGVmIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVz
cygKKyAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQcmVmZXJyZWRBZGRy
ZXNzCispIC0+IE5vbmU6CisgICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzIGlz
IG5vdCBOb25lOgorICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3Mo
cHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCisgICAgICAgIGJ1Zi5w
dXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0pCisgICAgZWxzZToK
KyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCisKKyAgICBpZiBwcmVmZXJyZWRfYWRk
cmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGlw
YWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3NbMF0pLnBh
Y2tlZCkKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNzLmlwdjZfYWRk
cmVzc1sxXSkKKyAgICBlbHNlOgorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygxOCkpCisK
KyAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkp
CisgICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9pZCkKKyAg
ICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3NfcmVzZXRfdG9rZW4p
CisKKworZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZl
ciwgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzOgor
ICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKKworICAgIGlmIHByb3RvY29s
X3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgorICAgICAgICB3aXRoIHB1
bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6CisgICAgICAgICAgICBlbmQgPSBidWYudGVsbCgp
ICsgbGVuZ3RoCisgICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgorICAgICAgICAg
ICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgICAgICBwYXJh
bV9sZW4gPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgICAgIHBhcmFtX3N0YXJ0ID0g
YnVmLnRlbGwoKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xl
bikpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJlZmVycmVk
QWRkcmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBwYXJhbV9u
YW1lLCBUcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMg
c2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICBidWYucHVsbF9ieXRl
cyhwYXJhbV9sZW4pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0gcGFyYW1f
c3RhcnQgKyBwYXJhbV9sZW4KKyAgICBlbHNlOgorICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigp
OgorICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAg
ICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgICAgICAgICBwYXJhbV9zdGFy
dCA9IGJ1Zi50ZWxsKCkKKyAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoKKyAgICAg
ICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIHBhcmFt
X25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCisgICAgICAgICAgICAgICAgaWYg
cGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQorICAgICAgICAgICAgICAgIGVsaWYgcGFy
YW1fdHlwZSA9PSBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBh
cmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCisgICAgICAgICAgICAgICAgZWxp
ZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAgICAgICAgICAgICAg
ICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNz
KGJ1ZikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0
cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGJ1Zi5wdWxs
X2J5dGVzKHBhcmFtX2xlbikKKyAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09IHBhcmFt
X3N0YXJ0ICsgcGFyYW1fbGVuCisKKyAgICByZXR1cm4gcGFyYW1zCisKKworZGVmIHB1c2hfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICBidWY6IEJ1ZmZlciwgcGFyYW1zOiBRdWljVHJh
bnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50CispIC0+IE5vbmU6CisgICAg
aWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjc6CisgICAg
ICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgZm9yIHBhcmFtX2lkLCAo
cGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkKKyAgICAgICAgICAg
ICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMgbm90IEZh
bHNlOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFyYW1faWQpCisgICAg
ICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlm
IHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFyYW1fdmFsdWUpCisg
ICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkg
aW4gUEFSQU1TLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lKQorICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmUg
YW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbV9idWYg
PSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9
PSBpbnQ6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3VpbnRfdmFyKHBhcmFt
X3ZhbHVlKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCisgICAgICAg
ICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgorICAgICAg
ICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFyYW1fYnVmLCBwYXJh
bV92YWx1ZSkKKyAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9pZCkKKyAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVsbCgpKQorICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQorCisKKyMgRlJBTUVTCisK
KworY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKKyAgICBQQURESU5HID0gMHgwMAorICAg
IFBJTkcgPSAweDAxCisgICAgQUNLID0gMHgwMgorICAgIEFDS19FQ04gPSAweDAzCisgICAgUkVT
RVRfU1RSRUFNID0gMHgwNAorICAgIFNUT1BfU0VORElORyA9IDB4MDUKKyAgICBDUllQVE8gPSAw
eDA2CisgICAgTkVXX1RPS0VOID0gMHgwNworICAgIFNUUkVBTV9CQVNFID0gMHgwOAorICAgIE1B
WF9EQVRBID0gMHgxMAorICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKKyAgICBNQVhfU1RSRUFN
U19CSURJID0gMHgxMgorICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKKyAgICBEQVRBX0JMT0NL
RUQgPSAweDE0CisgICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKKyAgICBTVFJFQU1TX0JM
T0NLRURfQklESSA9IDB4MTYKKyAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0gMHgxNworICAgIE5F
V19DT05ORUNUSU9OX0lEID0gMHgxOAorICAgIFJFVElSRV9DT05ORUNUSU9OX0lEID0gMHgxOQor
ICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQorICAgIFBBVEhfUkVTUE9OU0UgPSAweDFCCisgICAg
VFJBTlNQT1JUX0NMT1NFID0gMHgxQworICAgIEFQUExJQ0FUSU9OX0NMT1NFID0gMHgxRAorICAg
IEhBTkRTSEFLRV9ET05FID0gMHgxRQorICAgIERBVEFHUkFNID0gMHgzMAorICAgIERBVEFHUkFN
X1dJVEhfTEVOR1RIID0gMHgzMQorCisKK05PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTID0g
ZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAgIFF1
aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5HLAorICAg
ICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5BUFBMSUNBVElPTl9DTE9TRSwKKyAgICBdCispCitOT05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVT
ID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCisgICAgICAg
IFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRf
Q0xPU0UsCisgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgXQor
KQorCitQUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAorICAgIFsKKyAgICAgICAgUXVp
Y0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKKyAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRIX1JF
U1BPTlNFLAorICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCisgICAgICAgIFF1aWNGcmFt
ZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCisgICAgXQorKQorCisKK0BkYXRhY2xhc3MKK2NsYXNz
IFF1aWNTdHJlYW1GcmFtZToKKyAgICBkYXRhOiBieXRlcyA9IGIiIgorICAgIGZpbjogYm9vbCA9
IEZhbHNlCisgICAgb2Zmc2V0OiBpbnQgPSAwCisKKworZGVmIHB1bGxfYWNrX2ZyYW1lKGJ1Zjog
QnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKKyAgICByYW5nZXNldCA9IFJhbmdlU2V0
KCkKKyAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3QgYWNrbm93bGVkZ2Vk
CisgICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCisgICAgYWNrX3JhbmdlX2NvdW50ID0g
YnVmLnB1bGxfdWludF92YXIoKQorICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkg
ICMgZmlyc3QgYWNrIHJhbmdlCisgICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFja19jb3VudCwgZW5k
ICsgMSkKKyAgICBlbmQgLT0gYWNrX2NvdW50CisgICAgZm9yIF8gaW4gcmFuZ2UoYWNrX3Jhbmdl
X2NvdW50KToKKyAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgKyAyCisgICAgICAg
IGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKGVu
ZCAtIGFja19jb3VudCwgZW5kICsgMSkKKyAgICAgICAgZW5kIC09IGFja19jb3VudAorICAgIHJl
dHVybiByYW5nZXNldCwgZGVsYXkKKworCitkZWYgcHVzaF9hY2tfZnJhbWUoYnVmOiBCdWZmZXIs
IHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgorICAgIHJhbmdlcyA9IGxl
bihyYW5nZXNldCkKKyAgICBpbmRleCA9IHJhbmdlcyAtIDEKKyAgICByID0gcmFuZ2VzZXRbaW5k
ZXhdCisgICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKKyAgICBidWYucHVzaF91aW50
X3ZhcihkZWxheSkKKyAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKKyAgICBidWYucHVzaF91
aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKKyAgICBzdGFydCA9IHIuc3RhcnQKKyAgICB3
aGlsZSBpbmRleCA+IDA6CisgICAgICAgIGluZGV4IC09IDEKKyAgICAgICAgciA9IHJhbmdlc2V0
W2luZGV4XQorICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIuc3RvcCAtIDEpCisg
ICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAxKQorICAgICAgICBz
dGFydCA9IHIuc3RhcnQKKyAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODM3YzJjMzMwNDky
MDY0NDVmYzlmYjgxNDczYWNmY2JmNGI2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDM2NiBAQAor
ZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVtIGltcG9y
dCBFbnVtCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBDYWxsYWJsZSwgRGljdCwgTGlzdCwgT3B0
aW9uYWwsIFNlcXVlbmNlLCBUdXBsZQorCitmcm9tIC4uYnVmZmVyIGltcG9ydCBCdWZmZXIsIHNp
emVfdWludF92YXIKK2Zyb20gLi50bHMgaW1wb3J0IEVwb2NoCitmcm9tIC5jcnlwdG8gaW1wb3J0
IENyeXB0b1BhaXIKK2Zyb20gLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlclRyYWNlCitmcm9tIC5w
YWNrZXQgaW1wb3J0ICgKKyAgICBOT05fQUNLX0VMSUNJVElOR19GUkFNRV9UWVBFUywKKyAgICBO
T05fSU5fRkxJR0hUX0ZSQU1FX1RZUEVTLAorICAgIFBBQ0tFVF9OVU1CRVJfTUFYX1NJWkUsCisg
ICAgUEFDS0VUX1RZUEVfSEFORFNIQUtFLAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
UEFDS0VUX1RZUEVfTUFTSywKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGlzX2xvbmdfaGVhZGVy
LAorKQorCitQQUNLRVRfTUFYX1NJWkUgPSAxMjgwCitQQUNLRVRfTEVOR1RIX1NFTkRfU0laRSA9
IDIKK1BBQ0tFVF9OVU1CRVJfU0VORF9TSVpFID0gMgorCisKK1F1aWNEZWxpdmVyeUhhbmRsZXIg
PSBDYWxsYWJsZVsuLi4sIE5vbmVdCisKKworY2xhc3MgUXVpY0RlbGl2ZXJ5U3RhdGUoRW51bSk6
CisgICAgQUNLRUQgPSAwCisgICAgTE9TVCA9IDEKKyAgICBFWFBJUkVEID0gMgorCisKK0BkYXRh
Y2xhc3MKK2NsYXNzIFF1aWNTZW50UGFja2V0OgorICAgIGVwb2NoOiBFcG9jaAorICAgIGluX2Zs
aWdodDogYm9vbAorICAgIGlzX2Fja19lbGljaXRpbmc6IGJvb2wKKyAgICBpc19jcnlwdG9fcGFj
a2V0OiBib29sCisgICAgcGFja2V0X251bWJlcjogaW50CisgICAgcGFja2V0X3R5cGU6IGludAor
ICAgIHNlbnRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgIHNlbnRfYnl0ZXM6IGlu
dCA9IDAKKworICAgIGRlbGl2ZXJ5X2hhbmRsZXJzOiBMaXN0W1R1cGxlW1F1aWNEZWxpdmVyeUhh
bmRsZXIsIEFueV1dID0gZmllbGQoCisgICAgICAgIGRlZmF1bHRfZmFjdG9yeT1saXN0CisgICAg
KQorICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogTGlzdFtEaWN0XSA9IGZpZWxkKGRlZmF1bHRfZmFj
dG9yeT1saXN0KQorCisKK2NsYXNzIFF1aWNQYWNrZXRCdWlsZGVyU3RvcChFeGNlcHRpb24pOgor
ICAgIHBhc3MKKworCitjbGFzcyBRdWljUGFja2V0QnVpbGRlcjoKKyAgICAiIiIKKyAgICBIZWxw
ZXIgZm9yIGJ1aWxkaW5nIFFVSUMgcGFja2V0cy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRf
XygKKyAgICAgICAgc2VsZiwKKyAgICAgICAgKiwKKyAgICAgICAgaG9zdF9jaWQ6IGJ5dGVzLAor
ICAgICAgICBwZWVyX2NpZDogYnl0ZXMsCisgICAgICAgIHZlcnNpb246IGludCwKKyAgICAgICAg
aXNfY2xpZW50OiBib29sLAorICAgICAgICBwYWNrZXRfbnVtYmVyOiBpbnQgPSAwLAorICAgICAg
ICBwZWVyX3Rva2VuOiBieXRlcyA9IGIiIiwKKyAgICAgICAgcXVpY19sb2dnZXI6IE9wdGlvbmFs
W1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lLAorICAgICAgICBzcGluX2JpdDogYm9vbCA9IEZhbHNl
LAorICAgICk6CisgICAgICAgIHNlbGYubWF4X2ZsaWdodF9ieXRlczogT3B0aW9uYWxbaW50XSA9
IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdG90YWxfYnl0ZXM6IE9wdGlvbmFsW2ludF0gPSBOb25l
CisgICAgICAgIHNlbGYucXVpY19sb2dnZXJfZnJhbWVzOiBPcHRpb25hbFtMaXN0W0RpY3RdXSA9
IE5vbmUKKworICAgICAgICBzZWxmLl9ob3N0X2NpZCA9IGhvc3RfY2lkCisgICAgICAgIHNlbGYu
X2lzX2NsaWVudCA9IGlzX2NsaWVudAorICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IHBlZXJfY2lk
CisgICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBwZWVyX3Rva2VuCisgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc3Bpbl9iaXQgPSBzcGluX2Jp
dAorICAgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgorCisgICAgICAgICMgYXNzZW1ibGVk
IGRhdGFncmFtcyBhbmQgcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXM6IExpc3RbYnl0
ZXNdID0gW10KKyAgICAgICAgc2VsZi5fZGF0YWdyYW1fZmxpZ2h0X2J5dGVzID0gMAorICAgICAg
ICBzZWxmLl9kYXRhZ3JhbV9pbml0ID0gVHJ1ZQorICAgICAgICBzZWxmLl9wYWNrZXRzOiBMaXN0
W1F1aWNTZW50UGFja2V0XSA9IFtdCisgICAgICAgIHNlbGYuX2ZsaWdodF9ieXRlcyA9IDAKKyAg
ICAgICAgc2VsZi5fdG90YWxfYnl0ZXMgPSAwCisKKyAgICAgICAgIyBjdXJyZW50IHBhY2tldAor
ICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fcGFja2V0OiBPcHRp
b25hbFtRdWljU2VudFBhY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BhY2tldF9jcnlwdG86
IE9wdGlvbmFsW0NyeXB0b1BhaXJdID0gTm9uZQorICAgICAgICBzZWxmLl9wYWNrZXRfbG9uZ19o
ZWFkZXIgPSBGYWxzZQorICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyID0gcGFja2V0X251bWJl
cgorICAgICAgICBzZWxmLl9wYWNrZXRfc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX3BhY2tldF90
eXBlID0gMAorCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlcihQQUNLRVRfTUFYX1NJWkUp
CisgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBhY2l0eSA9IFBBQ0tFVF9NQVhfU0laRQorICAgICAg
ICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJWkUKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBwYWNrZXRfaXNfZW1wdHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisg
ICAgICAgIFJldHVybnMgYFRydWVgIGlmIHRoZSBjdXJyZW50IHBhY2tldCBpcyBlbXB0eS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGFzc2VydCBzZWxmLl9wYWNrZXQgaXMgbm90IE5vbmUKKyAgICAg
ICAgcGFja2V0X3NpemUgPSBzZWxmLl9idWZmZXIudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0
CisgICAgICAgIHJldHVybiBwYWNrZXRfc2l6ZSA8PSBzZWxmLl9oZWFkZXJfc2l6ZQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIHBhY2tldF9udW1iZXIoc2VsZikgLT4gaW50OgorICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGFja2V0IG51bWJlciBmb3IgdGhlIG5leHQgcGFja2V0
LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tldF9udW1iZXIKKworICAg
IEBwcm9wZXJ0eQorICAgIGRlZiByZW1haW5pbmdfYnVmZmVyX3NwYWNlKHNlbGYpIC0+IGludDoK
KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YgYnl0
ZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgcGFja2V0LgorICAg
ICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9jYXBh
Y2l0eQorICAgICAgICAgICAgLSBzZWxmLl9idWZmZXIudGVsbCgpCisgICAgICAgICAgICAtIHNl
bGYuX3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQorICAgICAgICApCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgcmVtYWluaW5nX2ZsaWdodF9zcGFjZShzZWxmKSAtPiBpbnQ6CisgICAgICAg
ICIiIgorICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIGJ5dGVzIHdoaWNo
IGNhbiBiZSB1c2VkIGluCisgICAgICAgIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIi
CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLl9mbGlnaHRfY2FwYWNpdHkKKyAg
ICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQorICAgICAgICAgICAgLSBzZWxmLl9wYWNr
ZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKKyAgICAgICAgKQorCisgICAgZGVmIGZsdXNoKHNlbGYp
IC0+IFR1cGxlW0xpc3RbYnl0ZXNdLCBMaXN0W1F1aWNTZW50UGFja2V0XV06CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIHRoZSBhc3NlbWJsZWQgZGF0YWdyYW1zLgorICAgICAgICAiIiIK
KyAgICAgICAgaWYgc2VsZi5fcGFja2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5f
ZW5kX3BhY2tldCgpCisgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQorCisg
ICAgICAgIGRhdGFncmFtcyA9IHNlbGYuX2RhdGFncmFtcworICAgICAgICBwYWNrZXRzID0gc2Vs
Zi5fcGFja2V0cworICAgICAgICBzZWxmLl9kYXRhZ3JhbXMgPSBbXQorICAgICAgICBzZWxmLl9w
YWNrZXRzID0gW10KKyAgICAgICAgcmV0dXJuIGRhdGFncmFtcywgcGFja2V0cworCisgICAgZGVm
IHN0YXJ0X2ZyYW1lKAorICAgICAgICBzZWxmLAorICAgICAgICBmcmFtZV90eXBlOiBpbnQsCisg
ICAgICAgIGNhcGFjaXR5OiBpbnQgPSAxLAorICAgICAgICBoYW5kbGVyOiBPcHRpb25hbFtRdWlj
RGVsaXZlcnlIYW5kbGVyXSA9IE5vbmUsCisgICAgICAgIGhhbmRsZXJfYXJnczogU2VxdWVuY2Vb
QW55XSA9IFtdLAorICAgICkgLT4gQnVmZmVyOgorICAgICAgICAiIiIKKyAgICAgICAgU3RhcnRz
IGEgbmV3IGZyYW1lLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfYnVm
ZmVyX3NwYWNlIDwgY2FwYWNpdHkgb3IgKAorICAgICAgICAgICAgZnJhbWVfdHlwZSBub3QgaW4g
Tk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUworICAgICAgICAgICAgYW5kIHNlbGYucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSA8IGNhcGFjaXR5CisgICAgICAgICk6CisgICAgICAgICAgICByYWlzZSBR
dWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAgICBzZWxmLl9idWZmZXIucHVzaF91aW50X3Zh
cihmcmFtZV90eXBlKQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fQUNLX0VMSUNJ
VElOR19GUkFNRV9UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pc19hY2tfZWxpY2l0
aW5nID0gVHJ1ZQorICAgICAgICBpZiBmcmFtZV90eXBlIG5vdCBpbiBOT05fSU5fRkxJR0hUX0ZS
QU1FX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKyAg
ICAgICAgaWYgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkNSWVBUTzoKKyAgICAgICAgICAg
IHNlbGYuX3BhY2tldC5pc19jcnlwdG9fcGFja2V0ID0gVHJ1ZQorICAgICAgICBpZiBoYW5kbGVy
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFja2V0LmRlbGl2ZXJ5X2hhbmRsZXJz
LmFwcGVuZCgoaGFuZGxlciwgaGFuZGxlcl9hcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
ZmZlcgorCisgICAgZGVmIHN0YXJ0X3BhY2tldChzZWxmLCBwYWNrZXRfdHlwZTogaW50LCBjcnlw
dG86IENyeXB0b1BhaXIpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBTdGFydHMgYSBu
ZXcgcGFja2V0LgorICAgICAgICAiIiIKKyAgICAgICAgYnVmID0gc2VsZi5fYnVmZmVyCisKKyAg
ICAgICAgIyBmaW5pc2ggcHJldmlvdXMgZGF0YWdyYW0KKyAgICAgICAgaWYgc2VsZi5fcGFja2V0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZW5kX3BhY2tldCgpCisKKyAgICAgICAg
IyBpZiB0aGVyZSBpcyB0b28gbGl0dGxlIHNwYWNlIHJlbWFpbmluZywgc3RhcnQgYSBuZXcgZGF0
YWdyYW0KKyAgICAgICAgIyBGSVhNRTogdGhlIGxpbWl0IGlzIGFyYml0cmFyeSEKKyAgICAgICAg
cGFja2V0X3N0YXJ0ID0gYnVmLnRlbGwoKQorICAgICAgICBpZiBzZWxmLl9idWZmZXJfY2FwYWNp
dHkgLSBwYWNrZXRfc3RhcnQgPCAxMjg6CisgICAgICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50
X2RhdGFncmFtKCkKKyAgICAgICAgICAgIHBhY2tldF9zdGFydCA9IDAKKworICAgICAgICAjIGlu
aXRpYWxpemUgZGF0YWdyYW0gaWYgbmVlZGVkCisgICAgICAgIGlmIHNlbGYuX2RhdGFncmFtX2lu
aXQ6CisgICAgICAgICAgICBpZiBzZWxmLm1heF90b3RhbF9ieXRlcyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmdfdG90YWxfYnl0ZXMgPSBzZWxmLm1heF90b3RhbF9ieXRl
cyAtIHNlbGYuX3RvdGFsX2J5dGVzCisgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nX3RvdGFs
X2J5dGVzIDwgc2VsZi5fYnVmZmVyX2NhcGFjaXR5OgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9idWZmZXJfY2FwYWNpdHkgPSByZW1haW5pbmdfdG90YWxfYnl0ZXMKKworICAgICAgICAgICAg
c2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gc2VsZi5fYnVmZmVyX2NhcGFjaXR5CisgICAgICAgICAg
ICBpZiBzZWxmLm1heF9mbGlnaHRfYnl0ZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nX2ZsaWdodF9ieXRlcyA9IHNlbGYubWF4X2ZsaWdodF9ieXRlcyAtIHNlbGYuX2Zs
aWdodF9ieXRlcworICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPCBz
ZWxmLl9mbGlnaHRfY2FwYWNpdHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsaWdodF9j
YXBhY2l0eSA9IHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFn
cmFtX2ZsaWdodF9ieXRlcyA9IDAKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2luaXQgPSBG
YWxzZQorCisgICAgICAgICMgY2FsY3VsYXRlIGhlYWRlciBzaXplCisgICAgICAgIHBhY2tldF9s
b25nX2hlYWRlciA9IGlzX2xvbmdfaGVhZGVyKHBhY2tldF90eXBlKQorICAgICAgICBpZiBwYWNr
ZXRfbG9uZ19oZWFkZXI6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDExICsgbGVuKHNlbGYu
X3BlZXJfY2lkKSArIGxlbihzZWxmLl9ob3N0X2NpZCkKKyAgICAgICAgICAgIGlmIChwYWNrZXRf
dHlwZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAg
ICAgICAgICAgdG9rZW5fbGVuZ3RoID0gbGVuKHNlbGYuX3BlZXJfdG9rZW4pCisgICAgICAgICAg
ICAgICAgaGVhZGVyX3NpemUgKz0gc2l6ZV91aW50X3Zhcih0b2tlbl9sZW5ndGgpICsgdG9rZW5f
bGVuZ3RoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDMgKyBsZW4o
c2VsZi5fcGVlcl9jaWQpCisKKyAgICAgICAgIyBjaGVjayB3ZSBoYXZlIGVub3VnaCBzcGFjZQor
ICAgICAgICBpZiBwYWNrZXRfc3RhcnQgKyBoZWFkZXJfc2l6ZSA+PSBzZWxmLl9idWZmZXJfY2Fw
YWNpdHk6CisgICAgICAgICAgICByYWlzZSBRdWljUGFja2V0QnVpbGRlclN0b3AKKworICAgICAg
ICAjIGRldGVybWluZSBhY2sgZXBvY2gKKyAgICAgICAgaWYgcGFja2V0X3R5cGUgPT0gUEFDS0VU
X1RZUEVfSU5JVElBTDoKKyAgICAgICAgICAgIGVwb2NoID0gRXBvY2guSU5JVElBTAorICAgICAg
ICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRToKKyAgICAgICAgICAg
IGVwb2NoID0gRXBvY2guSEFORFNIQUtFCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlcG9j
aCA9IEVwb2NoLk9ORV9SVFQKKworICAgICAgICBzZWxmLl9oZWFkZXJfc2l6ZSA9IGhlYWRlcl9z
aXplCisgICAgICAgIHNlbGYuX3BhY2tldCA9IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ZXBvY2g9ZXBvY2gsCisgICAgICAgICAgICBpbl9mbGlnaHQ9RmFsc2UsCisgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxz
ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9c2VsZi5fcGFja2V0X251bWJlciwKKyAgICAg
ICAgICAgIHBhY2tldF90eXBlPXBhY2tldF90eXBlLAorICAgICAgICApCisgICAgICAgIHNlbGYu
X3BhY2tldF9jcnlwdG8gPSBjcnlwdG8KKyAgICAgICAgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVy
ID0gcGFja2V0X2xvbmdfaGVhZGVyCisgICAgICAgIHNlbGYuX3BhY2tldF9zdGFydCA9IHBhY2tl
dF9zdGFydAorICAgICAgICBzZWxmLl9wYWNrZXRfdHlwZSA9IHBhY2tldF90eXBlCisgICAgICAg
IHNlbGYucXVpY19sb2dnZXJfZnJhbWVzID0gc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1l
cworCisgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHNlbGYuX2hlYWRlcl9z
aXplKQorCisgICAgZGVmIF9lbmRfcGFja2V0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgor
ICAgICAgICBFbmRzIHRoZSBjdXJyZW50IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1
ZiA9IHNlbGYuX2J1ZmZlcgorICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBzZWxm
Ll9wYWNrZXRfc3RhcnQKKyAgICAgICAgaWYgcGFja2V0X3NpemUgPiBzZWxmLl9oZWFkZXJfc2l6
ZToKKyAgICAgICAgICAgICMgcGFkIGluaXRpYWwgZGF0YWdyYW0KKyAgICAgICAgICAgIGlmICgK
KyAgICAgICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKKyAgICAgICAgICAgICAgICBhbmQgc2Vs
Zi5fcGFja2V0X3R5cGUgPT0gUEFDS0VUX1RZUEVfSU5JVElBTAorICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldAorICAgICAgICAgICAgKToKKyAgICAgICAg
ICAgICAgICBpZiBzZWxmLnJlbWFpbmluZ19mbGlnaHRfc3BhY2U6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKHNlbGYucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplID0gYnVmLnRlbGwoKSAtIHNlbGYuX3BhY2tl
dF9zdGFydAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0ID0gVHJ1
ZQorCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZyYW1lCisgICAgICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhZGRpbmdfZnJhbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHdyaXRlIGhlYWRlcgor
ICAgICAgICAgICAgaWYgc2VsZi5fcGFja2V0X2xvbmdfaGVhZGVyOgorICAgICAgICAgICAgICAg
IGxlbmd0aCA9ICgKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUKKyAgICAgICAgICAg
ICAgICAgICAgLSBzZWxmLl9oZWFkZXJfc2l6ZQorICAgICAgICAgICAgICAgICAgICArIFBBQ0tF
VF9OVU1CRVJfU0VORF9TSVpFCisgICAgICAgICAgICAgICAgICAgICsgc2VsZi5fcGFja2V0X2Ny
eXB0by5hZWFkX3RhZ19zaXplCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAg
YnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0YXJ0KQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQ4KHNlbGYuX3BhY2tldF90eXBlIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDMyKHNlbGYuX3ZlcnNpb24pCisgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX3BlZXJfY2lkKSkKKyAgICAgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhzZWxmLl9wZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBidWYucHVz
aF91aW50OChsZW4oc2VsZi5faG9zdF9jaWQpKQorICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKHNlbGYuX2hvc3RfY2lkKQorICAgICAgICAgICAgICAgIGlmIChzZWxmLl9wYWNrZXRfdHlw
ZSAmIFBBQ0tFVF9UWVBFX01BU0spID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6CisgICAgICAgICAg
ICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKGxlbihzZWxmLl9wZWVyX3Rva2VuKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl90b2tlbikKKyAgICAgICAg
ICAgICAgICBidWYucHVzaF91aW50MTYobGVuZ3RoIHwgMHg0MDAwKQorICAgICAgICAgICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihzZWxmLl9wYWNrZXRfbnVtYmVyICYgMHhGRkZGKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisg
ICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X3BhY2tldF90eXBlCisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3NwaW5fYml0IDw8IDUp
CisgICAgICAgICAgICAgICAgICAgIHwgKHNlbGYuX3BhY2tldF9jcnlwdG8ua2V5X3BoYXNlIDw8
IDIpCisgICAgICAgICAgICAgICAgICAgIHwgKFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFIC0gMSkK
KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5f
cGVlcl9jaWQpCisgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KHNlbGYuX3BhY2tldF9u
dW1iZXIgJiAweEZGRkYpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgd2UgbmVl
ZCBwYWRkaW5nCisgICAgICAgICAgICAgICAgcGFkZGluZ19zaXplID0gKAorICAgICAgICAgICAg
ICAgICAgICBQQUNLRVRfTlVNQkVSX01BWF9TSVpFCisgICAgICAgICAgICAgICAgICAgIC0gUEFD
S0VUX05VTUJFUl9TRU5EX1NJWkUKKyAgICAgICAgICAgICAgICAgICAgKyBzZWxmLl9oZWFkZXJf
c2l6ZQorICAgICAgICAgICAgICAgICAgICAtIHBhY2tldF9zaXplCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIHBhZGRpbmdfc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAg
ICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCArIHBhY2tldF9zaXplKQorICAgICAgICAg
ICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhwYWRkaW5nX3NpemUpKQorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfc2l6ZSArPSBwYWRkaW5nX3NpemUKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LmluX2ZsaWdodCA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICAj
IGxvZyBmcmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBlbmNyeXB0IGluIHBsYWNlCisgICAgICAgICAgICBwbGFpbiA9IGJ1
Zi5kYXRhX3NsaWNlKHNlbGYuX3BhY2tldF9zdGFydCwgc2VsZi5fcGFja2V0X3N0YXJ0ICsgcGFj
a2V0X3NpemUpCisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQpCisgICAg
ICAgICAgICBidWYucHVzaF9ieXRlcygKKyAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXRfY3J5
cHRvLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgICAgICAgICBwbGFpblswIDogc2VsZi5f
aGVhZGVyX3NpemVdLAorICAgICAgICAgICAgICAgICAgICBwbGFpbltzZWxmLl9oZWFkZXJfc2l6
ZSA6IHBhY2tldF9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJl
ciwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9w
YWNrZXQuc2VudF9ieXRlcyA9IGJ1Zi50ZWxsKCkgLSBzZWxmLl9wYWNrZXRfc3RhcnQKKyAgICAg
ICAgICAgIHNlbGYuX3BhY2tldHMuYXBwZW5kKHNlbGYuX3BhY2tldCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX3BhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZGF0YWdyYW1f
ZmxpZ2h0X2J5dGVzICs9IHNlbGYuX3BhY2tldC5zZW50X2J5dGVzCisKKyAgICAgICAgICAgICMg
c2hvcnQgaGVhZGVyIHBhY2tldHMgY2Fubm90IGJlIGNvYWxsZXNjZWQsIHdlIG5lZWQgYSBuZXcg
ZGF0YWdyYW0KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYWNrZXRfbG9uZ19oZWFkZXI6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fZmx1c2hfY3VycmVudF9kYXRhZ3JhbSgpCisKKyAgICAgICAg
ICAgIHNlbGYuX3BhY2tldF9udW1iZXIgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
IyAiY2FuY2VsIiB0aGUgcGFja2V0CisgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRf
c3RhcnQpCisKKyAgICAgICAgc2VsZi5fcGFja2V0ID0gTm9uZQorICAgICAgICBzZWxmLnF1aWNf
bG9nZ2VyX2ZyYW1lcyA9IE5vbmUKKworICAgIGRlZiBfZmx1c2hfY3VycmVudF9kYXRhZ3JhbShz
ZWxmKSAtPiBOb25lOgorICAgICAgICBkYXRhZ3JhbV9ieXRlcyA9IHNlbGYuX2J1ZmZlci50ZWxs
KCkKKyAgICAgICAgaWYgZGF0YWdyYW1fYnl0ZXM6CisgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXMuYXBwZW5kKHNlbGYuX2J1ZmZlci5kYXRhKQorICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2J5
dGVzICs9IHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcworICAgICAgICAgICAgc2VsZi5fdG90
YWxfYnl0ZXMgKz0gZGF0YWdyYW1fYnl0ZXMKKyAgICAgICAgICAgIHNlbGYuX2RhdGFncmFtX2lu
aXQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9idWZmZXIuc2VlaygwKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvcXVpYy9yYW5nZXNldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjA4NmM5Yzc0Zjc3NTYw
MzIwODY5MDA3NmJlZTk2MzgxNDYxMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKQEAgLTAsMCArMSw5OCBAQAorZnJvbSBjb2xs
ZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlCitmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBJdGVy
YWJsZSwgTGlzdCwgT3B0aW9uYWwKKworCitjbGFzcyBSYW5nZVNldChTZXF1ZW5jZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJhbmdlczogSXRlcmFibGVbcmFuZ2VdID0gW10pOgorICAgICAg
ICBzZWxmLl9fcmFuZ2VzOiBMaXN0W3JhbmdlXSA9IFtdCisgICAgICAgIGZvciByIGluIHJhbmdl
czoKKyAgICAgICAgICAgIGFzc2VydCByLnN0ZXAgPT0gMQorICAgICAgICAgICAgc2VsZi5hZGQo
ci5zdGFydCwgci5zdG9wKQorCisgICAgZGVmIGFkZChzZWxmLCBzdGFydDogaW50LCBzdG9wOiBP
cHRpb25hbFtpbnRdID0gTm9uZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc3RvcCBpcyBOb25lOgor
ICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMQorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0
CisKKyAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKHNlbGYuX19yYW5nZXMpOgorICAgICAg
ICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJlbHkgYmVmb3JlIGN1cnJlbnQgaXRlbSwg
aW5zZXJ0IGhlcmUKKyAgICAgICAgICAgIGlmIHN0b3AgPCByLnN0YXJ0OgorICAgICAgICAgICAg
ICAgIHNlbGYuX19yYW5nZXMuaW5zZXJ0KGksIHJhbmdlKHN0YXJ0LCBzdG9wKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgaXMgZW50aXJl
bHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAgICAgICAgICAgIGlmIHN0YXJ0
ID4gci5zdG9wOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGhl
IGFkZGVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbSwgbWVyZ2UgaXQKKyAgICAgICAg
ICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCByLnN0YXJ0KQorICAgICAgICAgICAgc3RvcCA9IG1heChz
dG9wLCByLnN0b3ApCisgICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5nZXMpIC0g
MSBhbmQgc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RhcnQgPD0gc3RvcDoKKyAgICAgICAgICAgICAg
ICBzdG9wID0gbWF4KHNlbGYuX19yYW5nZXNbaSArIDFdLnN0b3AsIHN0b3ApCisgICAgICAgICAg
ICAgICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSArIDEpCisgICAgICAgICAgICBzZWxmLl9fcmFuZ2Vz
W2ldID0gcmFuZ2Uoc3RhcnQsIHN0b3ApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAj
IHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBhbGwgZXhpc3RpbmcgaXRlbXMsIGFw
cGVuZCBpdAorICAgICAgICBzZWxmLl9fcmFuZ2VzLmFwcGVuZChyYW5nZShzdGFydCwgc3RvcCkp
CisKKyAgICBkZWYgYm91bmRzKHNlbGYpIC0+IHJhbmdlOgorICAgICAgICByZXR1cm4gcmFuZ2Uo
c2VsZi5fX3Jhbmdlc1swXS5zdGFydCwgc2VsZi5fX3Jhbmdlc1stMV0uc3RvcCkKKworICAgIGRl
ZiBzaGlmdChzZWxmKSAtPiByYW5nZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMucG9w
KDApCisKKyAgICBkZWYgc3VidHJhY3Qoc2VsZiwgc3RhcnQ6IGludCwgc3RvcDogaW50KSAtPiBO
b25lOgorICAgICAgICBhc3NlcnQgc3RvcCA+IHN0YXJ0CisKKyAgICAgICAgaSA9IDAKKyAgICAg
ICAgd2hpbGUgaSA8IGxlbihzZWxmLl9fcmFuZ2VzKToKKyAgICAgICAgICAgIHIgPSBzZWxmLl9f
cmFuZ2VzW2ldCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgaXMgZW50aXJlbHkg
YmVmb3JlIGN1cnJlbnQgaXRlbSwgc3RvcCBoZXJlCisgICAgICAgICAgICBpZiBzdG9wIDw9IHIu
c3RhcnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgdGhlIHJlbW92
ZWQgcmFuZ2UgaXMgZW50aXJlbHkgYWZ0ZXIgY3VycmVudCBpdGVtLCBrZWVwIGxvb2tpbmcKKyAg
ICAgICAgICAgIGlmIHN0YXJ0ID49IHIuc3RvcDoKKyAgICAgICAgICAgICAgICBpICs9IDEKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdl
IGNvbXBsZXRlbHkgY292ZXJzIHRoZSBjdXJyZW50IGl0ZW0sIHJlbW92ZSBpdAorICAgICAgICAg
ICAgaWYgc3RhcnQgPD0gci5zdGFydCBhbmQgc3RvcCA+PSByLnN0b3A6CisgICAgICAgICAgICAg
ICAgc2VsZi5fX3Jhbmdlcy5wb3AoaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAjIHRoZSByZW1vdmVkIHJhbmdlIHRvdWNoZXMgdGhlIGN1cnJlbnQgaXRlbQorICAg
ICAgICAgICAgaWYgc3RhcnQgPiByLnN0YXJ0OgorICAgICAgICAgICAgICAgIHNlbGYuX19yYW5n
ZXNbaV0gPSByYW5nZShyLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgICAgICAgICBpZiBzdG9wIDwg
ci5zdG9wOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLmluc2VydChpICsgMSwg
cmFuZ2Uoc3RvcCwgci5zdG9wKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
c2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHN0b3AsIHIuc3RvcCkKKworICAgICAgICAgICAgaSAr
PSAxCisKKyAgICBkZWYgX19ib29sX18oc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWw6IEFueSkg
LT4gYm9vbDoKKyAgICAgICAgZm9yIHIgaW4gc2VsZi5fX3JhbmdlczoKKyAgICAgICAgICAgIGlm
IHZhbCBpbiByOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgorICAg
ICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUmFuZ2VTZXQpOgorICAgICAgICAgICAgcmV0
dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXMgPT0gb3Ro
ZXIuX19yYW5nZXMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IEFueSkgLT4gcmFu
Z2U6CisgICAgICAgIHJldHVybiBzZWxmLl9fcmFuZ2VzW2tleV0KKworICAgIGRlZiBfX2xlbl9f
KHNlbGYpIC0+IGludDoKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9fcmFuZ2VzKQorCisgICAg
ZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICJSYW5nZVNldCh7fSki
LmZvcm1hdChyZXByKHNlbGYuX19yYW5nZXMpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVp
Yy9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJlYjFlY2Y1NjYxZjcxYzkzZTc3YmY3ZmE2MmE3
MTYyZjM4NzBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvcmVjb3ZlcnkucHkKQEAgLTAsMCArMSw0OTcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHR5cGlu
ZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAorCitmcm9t
IC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQorZnJvbSAucGFja2V0X2J1aWxkZXIgaW1w
b3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAorZnJvbSAucmFuZ2VzZXQgaW1w
b3J0IFJhbmdlU2V0CisKKyMgbG9zcyBkZXRlY3Rpb24KK0tfUEFDS0VUX1RIUkVTSE9MRCA9IDMK
K0tfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcworS19HUkFOVUxBUklUWSA9IDAuMDAxICAj
IHNlY29uZHMKK0tfVElNRV9USFJFU0hPTEQgPSA5IC8gOAorS19NSUNST19TRUNPTkQgPSAwLjAw
MDAwMQorS19TRUNPTkQgPSAxLjAKKworIyBjb25nZXN0aW9uIGNvbnRyb2wKK0tfTUFYX0RBVEFH
UkFNX1NJWkUgPSAxMjgwCitLX0lOSVRJQUxfV0lORE9XID0gMTAgKiBLX01BWF9EQVRBR1JBTV9T
SVpFCitLX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFHUkFNX1NJWkUKK0tfTE9TU19S
RURVQ1RJT05fRkFDVE9SID0gMC41CisKKworY2xhc3MgUXVpY1BhY2tldFNwYWNlOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgorICAgICAgICBzZWxmLmFja19hdDogT3B0aW9uYWxb
ZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLmFja19xdWV1ZSA9IFJhbmdlU2V0KCkKKyAgICAg
ICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmV4cGVjdGVkX3BhY2tldF9u
dW1iZXIgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQgPSAtMQorICAg
ICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQor
CisgICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCisgICAgICAgIHNlbGYuYWNrX2VsaWNp
dGluZ19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSAw
CisgICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9hdF0gPSBOb25lCisgICAgICAg
IHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQYWNrZXRdID0ge30KKworCitj
bGFzcyBRdWljUGFja2V0UGFjZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5idWNrZXRf
dGltZTogZmxvYXQgPSAwLjAKKyAgICAgICAgc2VsZi5ldmFsdWF0aW9uX3RpbWU6IGZsb2F0ID0g
MC4wCisgICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKwor
ICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0KSAtPiBmbG9hdDoKKyAgICAg
ICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudXBk
YXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8PSAw
OgorICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBhY2tldF90aW1lCisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX2FmdGVyX3NlbmQoc2VsZiwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQorICAgICAgICAgICAgaWYgc2Vs
Zi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6CisgICAgICAgICAgICAgICAgc2VsZi5i
dWNrZXRfdGltZSA9IDAuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
LmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKKworICAgIGRlZiB1cGRhdGVfYnVja2V0
KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIGlmIG5vdyA+IHNlbGYuZXZhbHVh
dGlvbl90aW1lOgorICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IG1pbigKKyAgICAgICAg
ICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYuZXZhbHVhdGlvbl90aW1lKSwg
c2VsZi5idWNrZXRfbWF4CisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmV2YWx1YXRp
b25fdGltZSA9IG5vdworCisgICAgZGVmIHVwZGF0ZV9yYXRlKHNlbGYsIGNvbmdlc3Rpb25fd2lu
ZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHBhY2luZ19y
YXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRfcnR0LCBLX01JQ1JPX1NFQ09O
RCkKKyAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKKyAgICAgICAgICAgIEtfTUlDUk9f
U0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2luZ19yYXRlLCBLX1NFQ09ORCkK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYnVja2V0X21heCA9ICgKKyAgICAgICAgICAgIG1h
eCgKKyAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1fU0laRSwKKyAgICAgICAgICAg
ICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBLX01BWF9EQVRBR1JBTV9TSVpF
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIC8gcGFjaW5nX3JhdGUKKyAgICAgICAgKQor
ICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNrZXRfbWF4OgorICAgICAgICAg
ICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAorCisKK2NsYXNzIFF1aWNDb25n
ZXN0aW9uQ29udHJvbDoKKyAgICAiIiIKKyAgICBOZXcgUmVubyBjb25nZXN0aW9uIGNvbnRyb2wu
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAgc2Vs
Zi5ieXRlc19pbl9mbGlnaHQgPSAwCisgICAgICAgIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgPSBL
X0lOSVRJQUxfV0lORE9XCisgICAgICAgIHNlbGYuX2Nvbmdlc3Rpb25fcmVjb3Zlcnlfc3RhcnRf
dGltZSA9IDAuMAorICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoID0gMAorICAgICAgICBz
ZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKyAgICAgICAgc2VsZi5zc3RocmVz
aDogT3B0aW9uYWxbaW50XSA9IE5vbmUKKworICAgIGRlZiBvbl9wYWNrZXRfYWNrZWQoc2VsZiwg
cGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5ieXRlc19pbl9m
bGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKworICAgICAgICAjIGRvbid0IGluY3JlYXNlIHdp
bmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5CisgICAgICAgIGlmIHBhY2tldC5zZW50X3RpbWUg
PD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lOgorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIG9yIHNlbGYuY29uZ2VzdGlv
bl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgorICAgICAgICAgICAgIyBzbG93IHN0YXJ0CisgICAg
ICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZvaWRhbmNlCisgICAgICAgICAg
ICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50X2J5dGVzCisgICAgICAgICAg
ICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2VsZi5jb25nZXN0aW9uX3dpbmRv
dworICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlv
bl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKyAgICAgICAgICAgICAg
ICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19NQVhfREFUQUdSQU1fU0laRQor
CisgICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDogUXVpY1NlbnRQYWNrZXQpIC0+
IE5vbmU6CisgICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9IHBhY2tldC5zZW50X2J5dGVz
CisKKyAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1
aWNTZW50UGFja2V0XSkgLT4gTm9uZToKKyAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgor
ICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKKwor
ICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czogSXRlcmFibGVbUXVpY1NlbnRQ
YWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgorICAgICAgICBsb3N0X2xhcmdlc3RfdGltZSA9
IDAuMAorICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6CisgICAgICAgICAgICBzZWxmLmJ5
dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcworICAgICAgICAgICAgbG9zdF9sYXJn
ZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCisKKyAgICAgICAgIyBzdGFydCBhIG5ldyBjb25n
ZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0aGUKKyAgICAgICAgIyBzdGFy
dCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBwZXJpb2QuCisgICAgICAgIGlm
IGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1l
OgorICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1lID0gbm93
CisgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0gbWF4KAorICAgICAgICAgICAg
ICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NTX1JFRFVDVElPTl9GQUNUT1Ip
LCBLX01JTklNVU1fV0lORE9XCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnNzdGhy
ZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdworCisgICAgICAgICMgVE9ETyA6IGNvbGxhcHNl
IGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2VzdGlvbgorCisgICAgZGVmIG9u
X3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9hdCwgbm93OiBmbG9hdCkgLT4g
Tm9uZToKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3VsZCBleGl0IHNsb3cgc3RhcnQK
KyAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBzZWxmLl9ydHRfbW9uaXRvci5p
c19ydHRfaW5jcmVhc2luZygKKyAgICAgICAgICAgIGxhdGVzdF9ydHQsIG5vdworICAgICAgICAp
OgorICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29uZ2VzdGlvbl93aW5kb3cKKwor
CitjbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6CisgICAgIiIiCisgICAgUGFja2V0IGxvc3MgYW5k
IGNvbmdlc3Rpb24gY29udHJvbGxlci4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAg
ICAgICAgc2VsZiwKKyAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRfMXJ0dDogYm9vbCwKKyAgICAg
ICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAorICAgICAgICBxdWljX2xvZ2dlcjog
T3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCisgICAgKSAtPiBOb25lOgorICAgICAg
ICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGllbnRfd2l0aG91dF8xcnR0Cisg
ICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1CisgICAgICAgIHNlbGYuc3BhY2VzOiBM
aXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQorCisgICAgICAgICMgY2FsbGJhY2tzCisgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKKyAgICAgICAgc2VsZi5fc2VuZF9wcm9i
ZSA9IHNlbmRfcHJvYmUKKworICAgICAgICAjIGxvc3MgZGV0ZWN0aW9uCisgICAgICAgIHNlbGYu
X3B0b19jb3VudCA9IDAKKyAgICAgICAgc2VsZi5fcnR0X2luaXRpYWxpemVkID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAorICAgICAgICBzZWxmLl9ydHRfbWluID0gbWF0
aC5pbmYKKyAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4wCisgICAgICAgIHNlbGYuX3J0
dF92YXJpYW5jZSA9IDAuMAorICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tfZWxp
Y2l0aW5nX3BhY2tldCA9IDAuMAorCisgICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCisgICAg
ICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkKKyAgICAgICAgc2VsZi5fcGFj
ZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJ5dGVzX2lu
X2ZsaWdodChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5ieXRlc19pbl9m
bGlnaHQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb25nZXN0aW9uX3dpbmRvdyhzZWxmKSAt
PiBpbnQ6CisgICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdworCisgICAg
ZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSkgLT4gTm9uZToK
KyAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCisKKyAgICAgICAgc2VsZi5fY2Mu
b25fcGFja2V0c19leHBpcmVkKAorICAgICAgICAgICAgZmlsdGVyKGxhbWJkYSB4OiB4LmluX2Zs
aWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQorICAgICAgICApCisgICAgICAgIHNw
YWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCisKKyAgICAgICAgc3BhY2UuYWNrX2F0ID0gTm9uZQor
ICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9IDAKKyAgICAgICAgc3BhY2Uu
bG9zc190aW1lID0gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgpCisKKyAgICBkZWYg
Z2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9uYWxbUXVpY1BhY2tldFNwYWNl
XToKKyAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKKyAgICAgICAgZm9yIHNwYWNlIGluIHNlbGYu
c3BhY2VzOgorICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1lIGlzIG5vdCBOb25lIGFuZCAo
CisgICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA8
IGxvc3Nfc3BhY2UubG9zc190aW1lCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIGxv
c3Nfc3BhY2UgPSBzcGFjZQorICAgICAgICByZXR1cm4gbG9zc19zcGFjZQorCisgICAgZGVmIGdl
dF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0OgorICAgICAgICAjIGxvc3MgdGlt
ZXIKKyAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2UoKQor
ICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxv
c3Nfc3BhY2UubG9zc190aW1lCisKKyAgICAgICAgIyBwYWNrZXQgdGltZXIKKyAgICAgICAgaWYg
KAorICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8xcnR0CisgICAgICAgICAgICBv
ciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9yIHNwYWNlIGluIHNlbGYuc3Bh
Y2VzKSA+IDAKKyAgICAgICAgKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBLX0lOSVRJQUxfUlRUICogKDIg
Kiogc2VsZi5fcHRvX2NvdW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0
aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIgKiogc2VsZi5fcHRvX2NvdW50
KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFzdF9zZW50X2Fja19lbGljaXRp
bmdfcGFja2V0ICsgdGltZW91dAorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0
X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6CisgICAgICAgIHJldHVybiAoCisgICAgICAg
ICAgICBzZWxmLl9ydHRfc21vb3RoZWQKKyAgICAgICAgICAgICsgbWF4KDQgKiBzZWxmLl9ydHRf
dmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCisgICAgICAgICAgICArIHNlbGYubWF4X2Fja19kZWxh
eQorICAgICAgICApCisKKyAgICBkZWYgb25fYWNrX3JlY2VpdmVkKAorICAgICAgICBzZWxmLAor
ICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAorICAgICAgICBhY2tfcmFuZ2VzZXQ6IFJh
bmdlU2V0LAorICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAorICAgICAgICBub3c6IGZsb2F0LAor
ICAgICkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSBtZXRyaWNzIGFzIHRo
ZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCisgICAgICAgIGxhcmdlc3RfYWNrZWQgPSBhY2tfcmFu
Z2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKKyAgICAgICAgbGFyZ2VzdF9uZXdseV9hY2tlZCA9IE5v
bmUKKyAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCisKKyAgICAgICAgaWYgbGFyZ2Vz
dF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0OgorICAgICAgICAgICAgc3BhY2Uu
bGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCisKKyAgICAgICAgZm9yIHBhY2tl
dF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5rZXlzKCkpOgorICAgICAgICAg
ICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6CisgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNrX3Jhbmdlc2V0OgorICAgICAg
ICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNvdW50ZXJzCisgICAgICAgICAg
ICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChwYWNrZXRfbnVtYmVyKQorICAg
ICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5nOgorICAgICAgICAgICAgICAg
ICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzcGFjZS5h
Y2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFja2V0Lmlu
X2ZsaWdodDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0X2Fja2VkKHBh
Y2tldCkKKyAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fja2VkID0gcGFja2V0X251bWJl
cgorICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0gcGFja2V0LnNlbnRfdGltZQor
CisgICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcworICAgICAgICAgICAgICAgIGZv
ciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5kbGVyczoKKyAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tFRCwgKmFyZ3MpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXdseSBhY2tlZCBwYWNrZXRzCisg
ICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2VzdF9uZXdseV9hY2tlZCBhbmQg
aXNfYWNrX2VsaWNpdGluZzoKKyAgICAgICAgICAgIGxhdGVzdF9ydHQgPSBub3cgLSBsYXJnZXN0
X3NlbnRfdGltZQorICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUKKworICAgICAgICAgICAgIyBs
aW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQorICAgICAgICAgICAgYWNrX2RlbGF5ID0g
bWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQorCisgICAgICAgICAgICAjIHVwZGF0
ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMKKyAgICAgICAgICAgIHNlbGYu
X3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCisgICAgICAgICAgICBpZiBzZWxm
Ll9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRf
bWluID0gc2VsZi5fcnR0X2xhdGVzdAorICAgICAgICAgICAgaWYgc2VsZi5fcnR0X2xhdGVzdCA+
IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6CisgICAgICAgICAgICAgICAgc2VsZi5fcnR0X2xh
dGVzdCAtPSBhY2tfZGVsYXkKKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX3J0dF9pbml0aWFs
aXplZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0X3J0dCAvIDIKKyAgICAgICAg
ICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0CisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDMgLyA0ICogc2VsZi5fcnR0
X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9t
aW4gLSBzZWxmLl9ydHRfbGF0ZXN0CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
IHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKKyAgICAgICAgICAgICAgICAgICAgNyAvIDggKiBzZWxm
Ll9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRlc3QKKyAgICAgICAgICAgICAg
ICApCisKKyAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24gY29udHJvbGxlcgorICAgICAg
ICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVzdF9ydHQsIG5vdz1ub3cpCisg
ICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25n
ZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAg
ICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAorICAgICAgICAgICAgKQorCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UKKworICAgICAgICBzZWxmLl9k
ZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKKworICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXRyaWNzX3VwZGF0ZWQobG9n
X3J0dD1sb2dfcnR0KQorCisgICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKKworICAgIGRlZiBv
bl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6CisgICAg
ICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3NzX3NwYWNlKCkKKyAgICAgICAg
aWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RldGVjdF9sb3Nz
KGxvc3Nfc3BhY2UsIG5vdz1ub3cpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9w
dG9fY291bnQgKz0gMQorCisgICAgICAgICAgICAjIHJlc2NoZWR1bGUgc29tZSBkYXRhCisgICAg
ICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6CisgICAgICAgICAgICAgICAgc2VsZi5f
b25fcGFja2V0c19sb3N0KAorICAgICAgICAgICAgICAgICAgICB0dXBsZSgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEg
aTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tldHMudmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICAgICAgc3BhY2U9c3BhY2UsCisgICAgICAgICAgICAgICAgICAgIG5vdz1ub3csCisgICAg
ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLl9zZW5kX3Byb2JlKCkKKworICAgIGRl
ZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50UGFja2V0LCBzcGFjZTogUXVp
Y1BhY2tldFNwYWNlKSAtPiBOb25lOgorICAgICAgICBzcGFjZS5zZW50X3BhY2tldHNbcGFja2V0
LnBhY2tldF9udW1iZXJdID0gcGFja2V0CisKKyAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGlj
aXRpbmc6CisgICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCArPSAxCisg
ICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6CisgICAgICAgICAgICBpZiBwYWNrZXQuaXNfYWNr
X2VsaWNpdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lX29mX2xhc3Rfc2VudF9hY2tf
ZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKKworICAgICAgICAgICAgIyBhZGQg
cGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAorICAgICAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0
X3NlbnQocGFja2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAg
IGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBmbG9h
dCkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHdoZXRoZXIgYW55IHBhY2tl
dHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCisgICAgICAgICIiIgorICAgICAgICBsb3NzX2Rl
bGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKKyAgICAgICAgICAgIG1heChzZWxmLl9ydHRfbGF0
ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCisgICAgICAgICAgICBpZiBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQKKyAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAorICAgICAgICApCisgICAgICAg
IHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2VkX3BhY2tldCAtIEtfUEFDS0VU
X1RIUkVTSE9MRAorICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5vdyAtIGxvc3NfZGVsYXkKKwor
ICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQorICAgICAgICBzcGFjZS5sb3NzX3RpbWUgPSBOb25l
CisgICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4gc3BhY2Uuc2VudF9wYWNrZXRz
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9h
Y2tlZF9wYWNrZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcGFj
a2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tldC5zZW50X3RpbWUgPD0gdGlt
ZV90aHJlc2hvbGQ6CisgICAgICAgICAgICAgICAgbG9zdF9wYWNrZXRzLmFwcGVuZChwYWNrZXQp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhY2tldF9sb3NzX3RpbWUgPSBw
YWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQorICAgICAgICAgICAgICAgIGlmIHNwYWNlLmxv
c3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBhY2tldF9sb3NzX3RpbWU6Cisg
ICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBhY2tldF9sb3NzX3RpbWUKKwor
ICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNrZXRzLCBzcGFjZT1zcGFjZSwg
bm93PW5vdykKKworICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRlZChzZWxmLCBsb2dfcnR0PUZh
bHNlKSAtPiBOb25lOgorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImJ5dGVzX2luX2Zs
aWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKKyAgICAgICAgICAgICJjd25kIjogc2Vs
Zi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCisgICAgICAgIH0KKyAgICAgICAgaWYgc2VsZi5fY2Mu
c3N0aHJlc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyJzc3RocmVzaCJdID0gc2Vs
Zi5fY2Muc3N0aHJlc2gKKworICAgICAgICBpZiBsb2dfcnR0OgorICAgICAgICAgICAgZGF0YS51
cGRhdGUoCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF0ZXN0X3J0
dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9sYXRlc3QpLAorICAg
ICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF9taW4pLAorICAgICAgICAgICAgICAgICAgICAic21vb3RoZWRfcnR0Ijogc2Vs
Zi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Ntb290aGVkKSwKKyAgICAgICAg
ICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1l
KHNlbGYuX3J0dF92YXJpYW5jZSksCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQor
CisgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKKyAgICAgICAgICAgIGNhdGVn
b3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQiLCBkYXRhPWRhdGEKKyAgICAg
ICAgKQorCisgICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCisgICAgICAgIHNlbGYsIHBhY2tldHM6
IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQYWNrZXRTcGFjZSwgbm93OiBm
bG9hdAorICAgICkgLT4gTm9uZToKKyAgICAgICAgbG9zdF9wYWNrZXRzX2NjID0gW10KKyAgICAg
ICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgorICAgICAgICAgICAgZGVsIHNwYWNlLnNlbnRfcGFj
a2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KKworICAgICAgICAgICAgaWYgcGFja2V0LmluX2Zs
aWdodDoKKyAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2MuYXBwZW5kKHBhY2tldCkKKwor
ICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6CisgICAgICAgICAgICAgICAg
c3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQorCisgICAgICAgICAgICBpZiBzZWxm
Ll9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlci5sb2dfZXZlbnQoCisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIs
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9zdCIsCisgICAgICAgICAgICAg
ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiBzZWxmLl9xdWlj
X2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBhY2tldF9udW1iZXIpLAorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKKworICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxi
YWNrcworICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4gcGFja2V0LmRlbGl2ZXJ5X2hh
bmRsZXJzOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
KmFyZ3MpCisKKyAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBjb250cm9sbGVyCisgICAgICAg
IGlmIGxvc3RfcGFja2V0c19jYzoKKyAgICAgICAgICAgIHNlbGYuX2NjLm9uX3BhY2tldHNfbG9z
dChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCisgICAgICAgICAgICBzZWxmLl9wYWNlci51cGRh
dGVfcmF0ZSgKKyAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25n
ZXN0aW9uX3dpbmRvdywKKyAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Nt
b290aGVkLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBkYXRlZCgp
CisKKworY2xhc3MgUXVpY1J0dE1vbml0b3I6CisgICAgIiIiCisgICAgUm91bmR0cmlwIHRpbWUg
bW9uaXRvciBmb3IgSHlTdGFydC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKSAt
PiBOb25lOgorICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHNlbGYuX2xhc3Rf
dGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQorICAgICAgICBzZWxmLl9z
aXplID0gNQorCisgICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjogT3B0aW9uYWxbZmxvYXRdID0g
Tm9uZQorCisgICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCisgICAgICAgIHNlbGYuX3NhbXBs
ZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2FtcGxlX21pbjog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQorICAgICAgICBzZWxmLl9zYW1wbGVfdGltZSA9IDAuMAor
ICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiByYW5nZShzZWxmLl9zaXplKV0K
KworICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+IE5vbmU6CisgICAgICAgIHNl
bGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKKyAgICAgICAgc2VsZi5fc2FtcGxl
X2lkeCArPSAxCisKKyAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lkeCA+PSBzZWxmLl9zaXplOgor
ICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3JlYWR5
ID0gVHJ1ZQorCisgICAgICAgIGlmIHNlbGYuX3JlYWR5OgorICAgICAgICAgICAgc2VsZi5fc2Ft
cGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KKyAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4g
PSBzZWxmLl9zYW1wbGVzWzBdCisgICAgICAgICAgICBmb3Igc2FtcGxlIGluIHNlbGYuX3NhbXBs
ZXNbMTpdOgorICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNlbGYuX3NhbXBsZV9taW46Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBzYW1wbGUKKyAgICAgICAgICAg
ICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKKworICAgIGRlZiBpc19ydHRfaW5jcmVhc2luZyhz
ZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgorICAgICAgICBpZiBub3cgPiBz
ZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6CisgICAgICAgICAgICBzZWxmLmFkZF9y
dHQocnR0KQorICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUgPSBub3cKKworICAgICAgICAg
ICAgaWYgc2VsZi5fcmVhZHk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsdGVyZWRfbWlu
IGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5fc2FtcGxlX21heDoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2VsZi5fc2FtcGxlX21heAorCisg
ICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWluIC0gc2VsZi5fZmlsdGVyZWRf
bWluCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNlbGYuX2ZpbHRlcmVkX21pbjoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVsdGEgPiAwOgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCisgICAgICAgIHJldHVybiBGYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDVjM2E1
YzU1YzlhMzk1ODkzOThjOTdjZWU5NjVjMmIzNzA2NjU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmV0cnkucHkKQEAgLTAsMCArMSwzOSBAQAoraW1w
b3J0IGlwYWRkcmVzcworCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0
IGRlZmF1bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1w
b3J0IGhhc2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJp
YyBpbXBvcnQgcGFkZGluZywgcnNhCisKK2Zyb20gLmNvbm5lY3Rpb24gaW1wb3J0IE5ldHdvcmtB
ZGRyZXNzCisKKworZGVmIGVuY29kZV9hZGRyZXNzKGFkZHI6IE5ldHdvcmtBZGRyZXNzKSAtPiBi
eXRlczoKKyAgICByZXR1cm4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoYWRkclswXSkucGFja2VkICsg
Ynl0ZXMoW2FkZHJbMV0gPj4gOCwgYWRkclsxXSAmIDB4RkZdKQorCisKK2NsYXNzIFF1aWNSZXRy
eVRva2VuSGFuZGxlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKKyAgICAgICAg
c2VsZi5fa2V5ID0gcnNhLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgcHVibGlj
X2V4cG9uZW50PTY1NTM3LCBrZXlfc2l6ZT0xMDI0LCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgp
CisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfdG9rZW4oc2VsZiwgYWRkcjogTmV0d29ya0Fk
ZHJlc3MsIGRlc3RpbmF0aW9uX2NpZDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9t
ZXNzYWdlID0gZW5jb2RlX2FkZHJlc3MoYWRkcikgKyBiInwiICsgZGVzdGluYXRpb25fY2lkCisg
ICAgICAgIHJldHVybiBzZWxmLl9rZXkucHVibGljX2tleSgpLmVuY3J5cHQoCisgICAgICAgICAg
ICByZXRyeV9tZXNzYWdlLAorICAgICAgICAgICAgcGFkZGluZy5PQUVQKAorICAgICAgICAgICAg
ICAgIG1nZj1wYWRkaW5nLk1HRjEoaGFzaGVzLlNIQTI1NigpKSwgYWxnb3JpdGhtPWhhc2hlcy5T
SEEyNTYoKSwgbGFiZWw9Tm9uZQorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVm
IHZhbGlkYXRlX3Rva2VuKHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCB0b2tlbjogYnl0ZXMp
IC0+IGJ5dGVzOgorICAgICAgICByZXRyeV9tZXNzYWdlID0gc2VsZi5fa2V5LmRlY3J5cHQoCisg
ICAgICAgICAgICB0b2tlbiwKKyAgICAgICAgICAgIHBhZGRpbmcuT0FFUCgKKyAgICAgICAgICAg
ICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYoKSksIGFsZ29yaXRobT1oYXNoZXMu
U0hBMjU2KCksIGxhYmVsPU5vbmUKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAg
ZW5jb2RlZF9hZGRyLCBvcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gcmV0cnlfbWVzc2FnZS5zcGxp
dChiInwiLCBtYXhzcGxpdD0xKQorICAgICAgICBpZiBlbmNvZGVkX2FkZHIgIT0gZW5jb2RlX2Fk
ZHJlc3MoYWRkcik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZW1vdGUgYWRkcmVz
cyBkb2VzIG5vdCBtYXRjaC4iKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxfY29ubmVjdGlvbl9p
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MjM2
ODZmNWQ2YmNkNmY5MGI0ZTUzZjM3MTRmM2JmOWI2ZjYxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKQEAgLTAsMCArMSwyMTQgQEAK
K2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworZnJv
bSAucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJhbWUKK2Zyb20gLnBhY2tldF9idWlsZGVyIGlt
cG9ydCBRdWljRGVsaXZlcnlTdGF0ZQorZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisK
KworY2xhc3MgUXVpY1N0cmVhbToKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIHN0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgICAgIG1heF9zdHJl
YW1fZGF0YV9sb2NhbDogaW50ID0gMCwKKyAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZTog
aW50ID0gMCwKKyAgICApIC0+IE5vbmU6CisgICAgICAgIHNlbGYuaXNfYmxvY2tlZCA9IEZhbHNl
CisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gbWF4X3N0cmVhbV9kYXRhX2xv
Y2FsCisgICAgICAgIHNlbGYubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgPSBtYXhfc3RyZWFt
X2RhdGFfbG9jYWwKKyAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gbWF4X3N0
cmVhbV9kYXRhX3JlbW90ZQorICAgICAgICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gVHJ1
ZQorCisgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2Vs
Zi5fcmVjdl9idWZmZXJfZmluOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIKKyAgICAgICAgc2VsZi5fcmVjdl9oaWdoZXN0ID0gMCAgIyB0aGUgaGlnaGVzdCBvZmZz
ZXQgZXZlciBzZWVuCisgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHNlbGYuX3NlbmRfYWNrZWQgPSBSYW5nZVNldCgpCisgICAgICAgIHNlbGYuX3NlbmRf
YnVmZmVyID0gYnl0ZWFycmF5KCkKKyAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfZmluOiBPcHRp
b25hbFtpbnRdID0gTm9uZQorICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCA9IDAgICMg
dGhlIG9mZnNldCBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKKyAgICAgICAgc2VsZi5fc2Vu
ZF9idWZmZXJfc3RvcCA9IDAgICMgdGhlIG9mZnNldCBmb3IgdGhlIHN0b3Agb2YgdGhlIGJ1ZmZl
cgorICAgICAgICBzZWxmLl9zZW5kX2hpZ2hlc3QgPSAwCisgICAgICAgIHNlbGYuX3NlbmRfcGVu
ZGluZyA9IFJhbmdlU2V0KCkKKyAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZhbHNl
CisKKyAgICAgICAgc2VsZi5fX3N0cmVhbV9pZCA9IHN0cmVhbV9pZAorCisgICAgQHByb3BlcnR5
CisgICAgZGVmIHN0cmVhbV9pZChzZWxmKSAtPiBPcHRpb25hbFtpbnRdOgorICAgICAgICByZXR1
cm4gc2VsZi5fX3N0cmVhbV9pZAorCisgICAgIyByZWFkZXIKKworICAgIGRlZiBhZGRfZnJhbWUo
c2VsZiwgZnJhbWU6IFF1aWNTdHJlYW1GcmFtZSkgLT4gT3B0aW9uYWxbZXZlbnRzLlN0cmVhbURh
dGFSZWNlaXZlZF06CisgICAgICAgICIiIgorICAgICAgICBBZGQgYSBmcmFtZSBvZiByZWNlaXZl
ZCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcG9zID0gZnJhbWUub2Zmc2V0IC0gc2VsZi5f
cmVjdl9idWZmZXJfc3RhcnQKKyAgICAgICAgY291bnQgPSBsZW4oZnJhbWUuZGF0YSkKKyAgICAg
ICAgZnJhbWVfZW5kID0gZnJhbWUub2Zmc2V0ICsgY291bnQKKworICAgICAgICAjIHdlIHNob3Vs
ZCByZWNlaXZlIG5vIG1vcmUgZGF0YSBiZXlvbmQgRklOIQorICAgICAgICBpZiBzZWxmLl9yZWN2
X2J1ZmZlcl9maW4gaXMgbm90IE5vbmUgYW5kIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfYnVmZmVy
X2ZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRGF0YSByZWNlaXZlZCBiZXlvbmQg
RklOIikKKyAgICAgICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgc2VsZi5fcmVjdl9idWZm
ZXJfZmluID0gZnJhbWVfZW5kCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IHNlbGYuX3JlY3ZfaGln
aGVzdDoKKyAgICAgICAgICAgIHNlbGYuX3JlY3ZfaGlnaGVzdCA9IGZyYW1lX2VuZAorCisgICAg
ICAgICMgZmFzdCBwYXRoOiBuZXcgaW4tb3JkZXIgY2h1bmsKKyAgICAgICAgaWYgcG9zID09IDAg
YW5kIGNvdW50IGFuZCBub3Qgc2VsZi5fcmVjdl9idWZmZXI6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlcl9zdGFydCArPSBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJl
YW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgZGF0YT1mcmFtZS5kYXRhLCBlbmRfc3Ry
ZWFtPWZyYW1lLmZpbiwgc3RyZWFtX2lkPXNlbGYuX19zdHJlYW1faWQKKyAgICAgICAgICAgICkK
KworICAgICAgICAjIGRpc2NhcmQgZHVwbGljYXRlIGRhdGEKKyAgICAgICAgaWYgcG9zIDwgMDoK
KyAgICAgICAgICAgIGZyYW1lLmRhdGEgPSBmcmFtZS5kYXRhWy1wb3M6XQorICAgICAgICAgICAg
ZnJhbWUub2Zmc2V0IC09IHBvcworICAgICAgICAgICAgcG9zID0gMAorCisgICAgICAgICMgbWFy
a2VkIHJlY2VpdmVkIHJhbmdlCisgICAgICAgIGlmIGZyYW1lX2VuZCA+IGZyYW1lLm9mZnNldDoK
KyAgICAgICAgICAgIHNlbGYuX3JlY3ZfcmFuZ2VzLmFkZChmcmFtZS5vZmZzZXQsIGZyYW1lX2Vu
ZCkKKworICAgICAgICAjIGFkZCBuZXcgZGF0YQorICAgICAgICBnYXAgPSBwb3MgLSBsZW4oc2Vs
Zi5fcmVjdl9idWZmZXIpCisgICAgICAgIGlmIGdhcCA+IDA6CisgICAgICAgICAgICBzZWxmLl9y
ZWN2X2J1ZmZlciArPSBieXRlYXJyYXkoZ2FwKQorICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcltw
b3MgOiBwb3MgKyBjb3VudF0gPSBmcmFtZS5kYXRhCisKKyAgICAgICAgIyByZXR1cm4gZGF0YSBm
cm9tIHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyCisgICAgICAgIGRhdGEgPSBzZWxmLl9wdWxsX2Rh
dGEoKQorICAgICAgICBlbmRfc3RyZWFtID0gc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPT0gc2Vs
Zi5fcmVjdl9idWZmZXJfZmluCisgICAgICAgIGlmIGRhdGEgb3IgZW5kX3N0cmVhbToKKyAgICAg
ICAgICAgIHJldHVybiBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAg
IGRhdGE9ZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c2VsZi5fX3N0cmVh
bV9pZAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBfcHVsbF9kYXRhKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICAiIiIKKyAg
ICAgICAgUmVtb3ZlIGRhdGEgZnJvbSB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAg
IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBzZWxmLl9y
ZWN2X3Jhbmdlc1swXS5zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAorICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGhhc19kYXRhX3RvX3JlYWQgPSBGYWxzZQor
ICAgICAgICBpZiBub3QgaGFzX2RhdGFfdG9fcmVhZDoKKyAgICAgICAgICAgIHJldHVybiBiIiIK
KworICAgICAgICByID0gc2VsZi5fcmVjdl9yYW5nZXMuc2hpZnQoKQorICAgICAgICBwb3MgPSBy
LnN0b3AgLSByLnN0YXJ0CisgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9yZWN2X2J1ZmZlcls6
cG9zXSkKKyAgICAgICAgZGVsIHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdCisgICAgICAgIHNlbGYu
X3JlY3ZfYnVmZmVyX3N0YXJ0ID0gci5zdG9wCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAj
IHdyaXRlcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5leHRfc2VuZF9vZmZzZXQoc2VsZikg
LT4gaW50OgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIG9mZnNldCBmb3IgdGhlIG5leHQgZnJh
bWUgdG8gc2VuZC4KKworICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzcGFj
ZSBuZWVkZWQgZm9yIHRoZSBmcmFtZSdzIGBvZmZzZXRgIGZpZWxkLgorICAgICAgICAiIiIKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfcGVuZGluZ1swXS5zdGFy
dAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9z
ZW5kX2J1ZmZlcl9zdG9wCisKKyAgICBkZWYgZ2V0X2ZyYW1lKAorICAgICAgICBzZWxmLCBtYXhf
c2l6ZTogaW50LCBtYXhfb2Zmc2V0OiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgICkgLT4gT3B0
aW9uYWxbUXVpY1N0cmVhbUZyYW1lXToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhIGZyYW1l
IG9mIGRhdGEgdG8gc2VuZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgZ2V0IHRoZSBmaXJzdCBw
ZW5kaW5nIGRhdGEgcmFuZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgciA9IHNlbGYuX3Nl
bmRfcGVuZGluZ1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIGlm
IHNlbGYuX3NlbmRfcGVuZGluZ19lb2Y6CisgICAgICAgICAgICAgICAgIyBGSU4gb25seQorICAg
ICAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBGYWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBRdWljU3RyZWFtRnJhbWUoZmluPVRydWUsIG9mZnNldD1zZWxmLl9zZW5kX2J1
ZmZlcl9maW4pCisKKyAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVl
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgYXBwbHkgZmxvdyBjb250cm9s
CisgICAgICAgIHN0YXJ0ID0gci5zdGFydAorICAgICAgICBzdG9wID0gbWluKHIuc3RvcCwgc3Rh
cnQgKyBtYXhfc2l6ZSkKKyAgICAgICAgaWYgbWF4X29mZnNldCBpcyBub3QgTm9uZSBhbmQgc3Rv
cCA+IG1heF9vZmZzZXQ6CisgICAgICAgICAgICBzdG9wID0gbWF4X29mZnNldAorICAgICAgICBp
ZiBzdG9wIDw9IHN0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNy
ZWF0ZSBmcmFtZQorICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZSgKKyAgICAgICAgICAg
IGRhdGE9Ynl0ZXMoCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJbCisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0IC0gc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgOiBzdG9wIC0gc2Vs
Zi5fc2VuZF9idWZmZXJfc3RhcnQKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgb2Zmc2V0PXN0YXJ0LAorICAgICAgICApCisgICAgICAgIHNlbGYuX3NlbmRf
cGVuZGluZy5zdWJ0cmFjdChzdGFydCwgc3RvcCkKKworICAgICAgICAjIHRyYWNrIHRoZSBoaWdo
ZXN0IG9mZnNldCBldmVyIHNlbnQKKyAgICAgICAgaWYgc3RvcCA+IHNlbGYuX3NlbmRfaGlnaGVz
dDoKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9IHN0b3AKKworICAgICAgICAjIGlm
IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIEVPRiB3YXMgd3JpdHRlbiwgc2V0IHRoZSBGSU4gYml0
CisgICAgICAgIGlmIHNlbGYuX3NlbmRfYnVmZmVyX2ZpbiA9PSBzdG9wOgorICAgICAgICAgICAg
ZnJhbWUuZmluID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZiA9IEZh
bHNlCisKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgb25fZGF0YV9kZWxpdmVyeSgK
KyAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzdGFydDogaW50LCBz
dG9wOiBpbnQKKyAgICApIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBDYWxsYmFjayB3
aGVuIHNlbnQgZGF0YSBpcyBBQ0snZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc2VuZF9i
dWZmZXJfaXNfZW1wdHkgPSBGYWxzZQorICAgICAgICBpZiBkZWxpdmVyeSA9PSBRdWljRGVsaXZl
cnlTdGF0ZS5BQ0tFRDoKKyAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2Fja2VkLmFkZChzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICBm
aXJzdF9yYW5nZSA9IHNlbGYuX3NlbmRfYWNrZWRbMF0KKyAgICAgICAgICAgICAgICBpZiBmaXJz
dF9yYW5nZS5zdGFydCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydDoKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA9IGZpcnN0X3JhbmdlLnN0b3AgLSBmaXJzdF9yYW5nZS5zdGFydAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Fja2VkLnNoaWZ0KCkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VuZF9idWZmZXJfc3RhcnQgKz0gc2l6ZQorICAgICAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5fc2VuZF9idWZmZXJbOnNpemVdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBp
ZiBzdG9wID4gc3RhcnQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLmFkZChz
dGFydCwgc3RvcCkKKyAgICAgICAgICAgIGlmIHN0b3AgPT0gc2VsZi5fc2VuZF9idWZmZXJfZmlu
OgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfZW1wdHkgPSBGYWxzZQorICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgZGF0YTogYnl0ZXMsIGVuZF9zdHJlYW06IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToKKyAg
ICAgICAgIiIiCisgICAgICAgIFdyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgUVVJQyBzdHJl
YW0uCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5fc2VuZF9idWZmZXJfZmluIGlz
IE5vbmUsICJjYW5ub3QgY2FsbCB3cml0ZSgpIGFmdGVyIEZJTiIKKyAgICAgICAgc2l6ZSA9IGxl
bihkYXRhKQorCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBzZWxmLnNlbmRfYnVmZmVy
X2lzX2VtcHR5ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfcGVuZGluZy5hZGQoCisg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXJfc3RvcCwgc2VsZi5fc2VuZF9idWZmZXJf
c3RvcCArIHNpemUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVy
ICs9IGRhdGEKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AgKz0gc2l6ZQorICAg
ICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0
eSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gPSBzZWxmLl9zZW5k
X2J1ZmZlcl9zdG9wCisgICAgICAgICAgICBzZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gVHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OGI4YzI2ZmE0YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvdzNjLWltcG9ydC5sb2cKQEAgLTAs
MCArMSwyOCBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0
X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL2V2ZW50cy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvcmFuZ2VzZXQucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNv
dmVyeS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3JldHJ5LnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3RyZWFtLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMGI2OWZmMmQzMjI3NDE2ZTcxNWRmZTE4YjgwMjY5ZTBiMWMyNTliCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpAQCAtMCwwICsx
LDE5MjggQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHNzbAoraW1wb3J0IHN0cnVjdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFu
YWdlcgorZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAorZnJvbSBlbnVt
IGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorZnJv
bSB0eXBpbmcgaW1wb3J0ICgKKyAgICBBbnksCisgICAgQ2FsbGFibGUsCisgICAgRGljdCwKKyAg
ICBHZW5lcmF0b3IsCisgICAgTGlzdCwKKyAgICBPcHRpb25hbCwKKyAgICBTZXF1ZW5jZSwKKyAg
ICBUdXBsZSwKKyAgICBUeXBlVmFyLAorICAgIFVuaW9uLAorKQorCitpbXBvcnQgY2VydGlmaQor
ZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKK2Zyb20gY3J5cHRvZ3JhcGh5LmV4Y2VwdGlv
bnMgaW1wb3J0IEludmFsaWRTaWduYXR1cmUKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5iYWNr
ZW5kcyBpbXBvcnQgZGVmYXVsdF9iYWNrZW5kCitmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmlu
ZGluZ3Mub3BlbnNzbC5iaW5kaW5nIGltcG9ydCBCaW5kaW5nCitmcm9tIGNyeXB0b2dyYXBoeS5o
YXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBobWFjLCBzZXJpYWxpemF0aW9uCitmcm9t
IGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9ydCAoCisgICAg
ZHNhLAorICAgIGVjLAorICAgIHBhZGRpbmcsCisgICAgcnNhLAorICAgIHg0NDgsCisgICAgeDI1
NTE5LAorKQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMua2RmLmhrZGYgaW1w
b3J0IEhLREZFeHBhbmQKK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLnNlcmlh
bGl6YXRpb24gaW1wb3J0IEVuY29kaW5nLCBQdWJsaWNGb3JtYXQKKworZnJvbSAuYnVmZmVyIGlt
cG9ydCBCdWZmZXIKKworYmluZGluZyA9IEJpbmRpbmcoKQorYmluZGluZy5pbml0X3N0YXRpY19s
b2NrcygpCitmZmkgPSBiaW5kaW5nLmZmaQorbGliID0gYmluZGluZy5saWIKKworVExTX1ZFUlNJ
T05fMV8yID0gMHgwMzAzCitUTFNfVkVSU0lPTl8xXzMgPSAweDAzMDQKK1RMU19WRVJTSU9OXzFf
M19EUkFGVF8yOCA9IDB4N0YxQworVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI3ID0gMHg3RjFCCitU
TFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYgPSAweDdGMUEKKworVCA9IFR5cGVWYXIoIlQiKQorCisj
IGZhY2lsaXRhdGUgbW9ja2luZyBmb3IgdGhlIHRlc3Qgc3VpdGUKK3V0Y25vdyA9IGRhdGV0aW1l
LmRhdGV0aW1lLnV0Y25vdworCisKK2NsYXNzIEFsZXJ0RGVzY3JpcHRpb24oSW50RW51bSk6Cisg
ICAgY2xvc2Vfbm90aWZ5ID0gMAorICAgIHVuZXhwZWN0ZWRfbWVzc2FnZSA9IDEwCisgICAgYmFk
X3JlY29yZF9tYWMgPSAyMAorICAgIHJlY29yZF9vdmVyZmxvdyA9IDIyCisgICAgaGFuZHNoYWtl
X2ZhaWx1cmUgPSA0MAorICAgIGJhZF9jZXJ0aWZpY2F0ZSA9IDQyCisgICAgdW5zdXBwb3J0ZWRf
Y2VydGlmaWNhdGUgPSA0MworICAgIGNlcnRpZmljYXRlX3Jldm9rZWQgPSA0NAorICAgIGNlcnRp
ZmljYXRlX2V4cGlyZWQgPSA0NQorICAgIGNlcnRpZmljYXRlX3Vua25vd24gPSA0NgorICAgIGls
bGVnYWxfcGFyYW1ldGVyID0gNDcKKyAgICB1bmtub3duX2NhID0gNDgKKyAgICBhY2Nlc3NfZGVu
aWVkID0gNDkKKyAgICBkZWNvZGVfZXJyb3IgPSA1MAorICAgIGRlY3J5cHRfZXJyb3IgPSA1MQor
ICAgIHByb3RvY29sX3ZlcnNpb24gPSA3MAorICAgIGluc3VmZmljaWVudF9zZWN1cml0eSA9IDcx
CisgICAgaW50ZXJuYWxfZXJyb3IgPSA4MAorICAgIGluYXBwcm9wcmlhdGVfZmFsbGJhY2sgPSA4
NgorICAgIHVzZXJfY2FuY2VsZWQgPSA5MAorICAgIG1pc3NpbmdfZXh0ZW5zaW9uID0gMTA5Cisg
ICAgdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uID0gMTEwCisgICAgdW5yZWNvZ25pemVkX25hbWUgPSAx
MTIKKyAgICBiYWRfY2VydGlmaWNhdGVfc3RhdHVzX3Jlc3BvbnNlID0gMTEzCisgICAgdW5rbm93
bl9wc2tfaWRlbnRpdHkgPSAxMTUKKyAgICBjZXJ0aWZpY2F0ZV9yZXF1aXJlZCA9IDExNgorICAg
IG5vX2FwcGxpY2F0aW9uX3Byb3RvY29sID0gMTIwCisKKworY2xhc3MgQWxlcnQoRXhjZXB0aW9u
KToKKyAgICBkZXNjcmlwdGlvbjogQWxlcnREZXNjcmlwdGlvbgorCisKK2NsYXNzIEFsZXJ0QmFk
Q2VydGlmaWNhdGUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5i
YWRfY2VydGlmaWNhdGUKKworCitjbGFzcyBBbGVydENlcnRpZmljYXRlRXhwaXJlZChBbGVydCk6
CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmNlcnRpZmljYXRlX2V4cGlyZWQK
KworCitjbGFzcyBBbGVydERlY3J5cHRFcnJvcihBbGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBB
bGVydERlc2NyaXB0aW9uLmRlY3J5cHRfZXJyb3IKKworCitjbGFzcyBBbGVydEhhbmRzaGFrZUZh
aWx1cmUoQWxlcnQpOgorICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5oYW5kc2hh
a2VfZmFpbHVyZQorCisKK2NsYXNzIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcihBbGVydCk6CisgICAg
ZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCisKKworY2xh
c3MgQWxlcnRJbnRlcm5hbEVycm9yKEFsZXJ0KToKKyAgICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVz
Y3JpcHRpb24uaW50ZXJuYWxfZXJyb3IKKworCitjbGFzcyBBbGVydFByb3RvY29sVmVyc2lvbihB
bGVydCk6CisgICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLnByb3RvY29sX3ZlcnNp
b24KKworCitjbGFzcyBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlKEFsZXJ0KToKKyAgICBkZXNjcmlw
dGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlCisKKworY2xhc3MgRGly
ZWN0aW9uKEVudW0pOgorICAgIERFQ1JZUFQgPSAwCisgICAgRU5DUllQVCA9IDEKKworCitjbGFz
cyBFcG9jaChFbnVtKToKKyAgICBJTklUSUFMID0gMAorICAgIFpFUk9fUlRUID0gMQorICAgIEhB
TkRTSEFLRSA9IDIKKyAgICBPTkVfUlRUID0gMworCisKK2NsYXNzIFN0YXRlKEVudW0pOgorICAg
IENMSUVOVF9IQU5EU0hBS0VfU1RBUlQgPSAwCisgICAgQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVM
TE8gPSAxCisgICAgQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUyA9IDIKKyAgICBD
TElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEUgPSAzCisgICAg
Q0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9DRVJUSUZJQ0FURSA9IDQKKyAgICBDTElFTlRfRVhQ
RUNUX0NFUlRJRklDQVRFX1ZFUklGWSA9IDUKKyAgICBDTElFTlRfRVhQRUNUX0ZJTklTSEVEID0g
NgorICAgIENMSUVOVF9QT1NUX0hBTkRTSEFLRSA9IDcKKworICAgIFNFUlZFUl9FWFBFQ1RfQ0xJ
RU5UX0hFTExPID0gOAorICAgIFNFUlZFUl9FWFBFQ1RfRklOSVNIRUQgPSA5CisgICAgU0VSVkVS
X1BPU1RfSEFORFNIQUtFID0gMTAKKworCitkZWYgaGtkZl9sYWJlbChsYWJlbDogYnl0ZXMsIGhh
c2hfdmFsdWU6IGJ5dGVzLCBsZW5ndGg6IGludCkgLT4gYnl0ZXM6CisgICAgZnVsbF9sYWJlbCA9
IGIidGxzMTMgIiArIGxhYmVsCisgICAgcmV0dXJuICgKKyAgICAgICAgc3RydWN0LnBhY2soIiFI
QiIsIGxlbmd0aCwgbGVuKGZ1bGxfbGFiZWwpKQorICAgICAgICArIGZ1bGxfbGFiZWwKKyAgICAg
ICAgKyBzdHJ1Y3QucGFjaygiIUIiLCBsZW4oaGFzaF92YWx1ZSkpCisgICAgICAgICsgaGFzaF92
YWx1ZQorICAgICkKKworCitkZWYgaGtkZl9leHBhbmRfbGFiZWwoCisgICAgYWxnb3JpdGhtOiBo
YXNoZXMuSGFzaEFsZ29yaXRobSwKKyAgICBzZWNyZXQ6IGJ5dGVzLAorICAgIGxhYmVsOiBieXRl
cywKKyAgICBoYXNoX3ZhbHVlOiBieXRlcywKKyAgICBsZW5ndGg6IGludCwKKykgLT4gYnl0ZXM6
CisgICAgcmV0dXJuIEhLREZFeHBhbmQoCisgICAgICAgIGFsZ29yaXRobT1hbGdvcml0aG0sCisg
ICAgICAgIGxlbmd0aD1sZW5ndGgsCisgICAgICAgIGluZm89aGtkZl9sYWJlbChsYWJlbCwgaGFz
aF92YWx1ZSwgbGVuZ3RoKSwKKyAgICAgICAgYmFja2VuZD1kZWZhdWx0X2JhY2tlbmQoKSwKKyAg
ICApLmRlcml2ZShzZWNyZXQpCisKKworZGVmIGhrZGZfZXh0cmFjdCgKKyAgICBhbGdvcml0aG06
IGhhc2hlcy5IYXNoQWxnb3JpdGhtLCBzYWx0OiBieXRlcywga2V5X21hdGVyaWFsOiBieXRlcwor
KSAtPiBieXRlczoKKyAgICBoID0gaG1hYy5ITUFDKHNhbHQsIGFsZ29yaXRobSwgYmFja2VuZD1k
ZWZhdWx0X2JhY2tlbmQoKSkKKyAgICBoLnVwZGF0ZShrZXlfbWF0ZXJpYWwpCisgICAgcmV0dXJu
IGguZmluYWxpemUoKQorCisKK2RlZiBsb2FkX3BlbV9wcml2YXRlX2tleSgKKyAgICBkYXRhOiBi
eXRlcywgcGFzc3dvcmQ6IE9wdGlvbmFsW2J5dGVzXQorKSAtPiBVbmlvbltkc2EuRFNBUHJpdmF0
ZUtleSwgZWMuRWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2YXRlS2V5XToKKyAg
ICAiIiIKKyAgICBMb2FkIGEgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkuCisgICAgIiIiCisgICAg
cmV0dXJuIHNlcmlhbGl6YXRpb24ubG9hZF9wZW1fcHJpdmF0ZV9rZXkoCisgICAgICAgIGRhdGEs
IHBhc3N3b3JkPXBhc3N3b3JkLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpCisgICAgKQorCisK
K2RlZiBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhkYXRhOiBieXRlcykgLT4gTGlzdFt4NTA5
LkNlcnRpZmljYXRlXToKKyAgICAiIiIKKyAgICBMb2FkIGEgY2hhaW4gb2YgUEVNLWVuY29kZWQg
WDUwOSBjZXJ0aWZpY2F0ZXMuCisgICAgIiIiCisgICAgYm91bmRhcnkgPSBiIi0tLS0tRU5EIENF
UlRJRklDQVRFLS0tLS1cbiIKKyAgICBjZXJ0aWZpY2F0ZXMgPSBbXQorICAgIGZvciBjaHVuayBp
biBkYXRhLnNwbGl0KGJvdW5kYXJ5KToKKyAgICAgICAgaWYgY2h1bms6CisgICAgICAgICAgICBj
ZXJ0aWZpY2F0ZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHg1MDkubG9hZF9wZW1feDUwOV9j
ZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgKyBib3VuZGFyeSwgYmFja2Vu
ZD1kZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAg
ICByZXR1cm4gY2VydGlmaWNhdGVzCisKKworZGVmIG9wZW5zc2xfYXNzZXJ0KG9rOiBib29sLCBm
dW5jOiBzdHIpIC0+IE5vbmU6CisgICAgaWYgbm90IG9rOgorICAgICAgICBsaWIuRVJSX2NsZWFy
X2Vycm9yKCkKKyAgICAgICAgcmFpc2UgQWxlcnRJbnRlcm5hbEVycm9yKCJPcGVuU1NMIGNhbGwg
dG8gJXMgZmFpbGVkIiAlIGZ1bmMpCisKKworZGVmIG9wZW5zc2xfZGVjb2RlX3N0cmluZyhjaGFy
cCkgLT4gc3RyOgorICAgIHJldHVybiBmZmkuc3RyaW5nKGNoYXJwKS5kZWNvZGUoInV0Zi04Iikg
aWYgY2hhcnAgZWxzZSAiIgorCisKK2RlZiBvcGVuc3NsX2VuY29kZV9wYXRoKHM6IE9wdGlvbmFs
W3N0cl0pIC0+IEFueToKKyAgICBpZiBzIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gb3Mu
ZnNlbmNvZGUocykKKyAgICByZXR1cm4gZmZpLk5VTEwKKworCitkZWYgY2VydF94NTA5X3B0cihj
ZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZpY2F0ZSkgLT4gQW55OgorICAgICIiIgorICAgIEFjY2Vz
c29yIGZvciBwcml2YXRlIGF0dHJpYnV0ZS4KKyAgICAiIiIKKyAgICByZXR1cm4gZ2V0YXR0cihj
ZXJ0aWZpY2F0ZSwgIl94NTA5IikKKworCitkZWYgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgIGNl
cnRpZmljYXRlOiB4NTA5LkNlcnRpZmljYXRlLAorICAgIGNoYWluOiBMaXN0W3g1MDkuQ2VydGlm
aWNhdGVdID0gW10sCisgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg
IGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKKyAgICBjYWZpbGU6IE9wdGlvbmFsW3N0
cl0gPSBOb25lLAorICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCispIC0+IE5vbmU6
CisgICAgIyB2ZXJpZnkgZGF0ZXMKKyAgICBub3cgPSB1dGNub3coKQorICAgIGlmIG5vdyA8IGNl
cnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmU6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKyAgICBpZiBub3cgPiBj
ZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXI6CisgICAgICAgIHJhaXNlIEFsZXJ0Q2VydGlmaWNh
dGVFeHBpcmVkKCJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIgdmFsaWQiKQorCisgICAgIyB2ZXJp
Znkgc3ViamVjdAorICAgIGlmIHNlcnZlcl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBzdWJq
ZWN0ID0gW10KKyAgICAgICAgc3ViamVjdEFsdE5hbWU6IExpc3RbVHVwbGVbc3RyLCBzdHJdXSA9
IFtdCisgICAgICAgIGZvciBhdHRyIGluIGNlcnRpZmljYXRlLnN1YmplY3Q6CisgICAgICAgICAg
ICBpZiBhdHRyLm9pZCA9PSB4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUU6CisgICAgICAgICAgICAg
ICAgc3ViamVjdC5hcHBlbmQoKCgiY29tbW9uTmFtZSIsIGF0dHIudmFsdWUpLCkpCisgICAgICAg
IGZvciBleHQgaW4gY2VydGlmaWNhdGUuZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoZXh0LnZhbHVlLCB4NTA5LlN1YmplY3RBbHRlcm5hdGl2ZU5hbWUpOgorICAgICAgICAg
ICAgICAgIGZvciBuYW1lIGluIGV4dC52YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZShuYW1lLCB4NTA5LkROU05hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
amVjdEFsdE5hbWUuYXBwZW5kKCgiRE5TIiwgbmFtZS52YWx1ZSkpCisKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc3NsLm1hdGNoX2hvc3RuYW1lKAorICAgICAgICAgICAgICAgIHsic3ViamVj
dCI6IHR1cGxlKHN1YmplY3QpLCAic3ViamVjdEFsdE5hbWUiOiB0dXBsZShzdWJqZWN0QWx0TmFt
ZSl9LAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorICAgICAg
ICBleGNlcHQgc3NsLkNlcnRpZmljYXRlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2Ug
QWxlcnRCYWRDZXJ0aWZpY2F0ZSgiXG4iLmpvaW4oZXhjLmFyZ3MpKSBmcm9tIGV4YworCisgICAg
IyB2ZXJpZnkgY2VydGlmaWNhdGUgY2hhaW4KKyAgICBzdG9yZSA9IGxpYi5YNTA5X1NUT1JFX25l
dygpCisgICAgb3BlbnNzbF9hc3NlcnQoc3RvcmUgIT0gZmZpLk5VTEwsICJYNTA5X3N0b3JlX25l
dyIpCisgICAgc3RvcmUgPSBmZmkuZ2Moc3RvcmUsIGxpYi5YNTA5X1NUT1JFX2ZyZWUpCisKKyAg
ICAjIGxvYWQgZGVmYXVsdCBDQXMKKyAgICBvcGVuc3NsX2Fzc2VydCgKKyAgICAgICAgbGliLlg1
MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMoc3RvcmUpLCAiWDUwOV9TVE9SRV9zZXRfZGVmYXVs
dF9wYXRocyIKKyAgICApCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgIGxpYi5YNTA5X1NU
T1JFX2xvYWRfbG9jYXRpb25zKAorICAgICAgICAgICAgc3RvcmUsIG9wZW5zc2xfZW5jb2RlX3Bh
dGgoY2VydGlmaS53aGVyZSgpKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChOb25lKSwKKyAgICAgICAg
KSwKKyAgICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAorICAgICkKKworICAgICMg
bG9hZCBleHRyYSBDQXMKKyAgICBpZiBjYWRhdGEgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBj
ZXJ0IGluIGxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGVzKGNhZGF0YSk6CisgICAgICAgICAgICBv
cGVuc3NsX2Fzc2VydCgKKyAgICAgICAgICAgICAgICBsaWIuWDUwOV9TVE9SRV9hZGRfY2VydChz
dG9yZSwgY2VydF94NTA5X3B0cihjZXJ0KSksCisgICAgICAgICAgICAgICAgIlg1MDlfU1RPUkVf
YWRkX2NlcnQiLAorICAgICAgICAgICAgKQorCisgICAgaWYgY2FmaWxlIGlzIG5vdCBOb25lIG9y
IGNhcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgb3BlbnNzbF9hc3NlcnQoCisgICAgICAgICAg
ICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKKyAgICAgICAgICAgICAgICBzdG9yZSwg
b3BlbnNzbF9lbmNvZGVfcGF0aChjYWZpbGUpLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNhcGF0aCkK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAiWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucyIs
CisgICAgICAgICkKKworICAgIGNoYWluX3N0YWNrID0gbGliLnNrX1g1MDlfbmV3X251bGwoKQor
ICAgIG9wZW5zc2xfYXNzZXJ0KGNoYWluX3N0YWNrICE9IGZmaS5OVUxMLCAic2tfWDUwOV9uZXdf
bnVsbCIpCisgICAgY2hhaW5fc3RhY2sgPSBmZmkuZ2MoY2hhaW5fc3RhY2ssIGxpYi5za19YNTA5
X2ZyZWUpCisgICAgZm9yIGNlcnQgaW4gY2hhaW46CisgICAgICAgIG9wZW5zc2xfYXNzZXJ0KAor
ICAgICAgICAgICAgbGliLnNrX1g1MDlfcHVzaChjaGFpbl9zdGFjaywgY2VydF94NTA5X3B0cihj
ZXJ0KSksICJza19YNTA5X3B1c2giCisgICAgICAgICkKKworICAgIHN0b3JlX2N0eCA9IGxpYi5Y
NTA5X1NUT1JFX0NUWF9uZXcoKQorICAgIG9wZW5zc2xfYXNzZXJ0KHN0b3JlX2N0eCAhPSBmZmku
TlVMTCwgIlg1MDlfU1RPUkVfQ1RYX25ldyIpCisgICAgc3RvcmVfY3R4ID0gZmZpLmdjKHN0b3Jl
X2N0eCwgbGliLlg1MDlfU1RPUkVfQ1RYX2ZyZWUpCisgICAgb3BlbnNzbF9hc3NlcnQoCisgICAg
ICAgIGxpYi5YNTA5X1NUT1JFX0NUWF9pbml0KAorICAgICAgICAgICAgc3RvcmVfY3R4LCBzdG9y
ZSwgY2VydF94NTA5X3B0cihjZXJ0aWZpY2F0ZSksIGNoYWluX3N0YWNrCisgICAgICAgICksCisg
ICAgICAgICJYNTA5X1NUT1JFX0NUWF9pbml0IiwKKyAgICApCisKKyAgICByZXMgPSBsaWIuWDUw
OV92ZXJpZnlfY2VydChzdG9yZV9jdHgpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgZXJyID0g
bGliLlg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihzdG9yZV9jdHgpCisgICAgICAgIGVycl9zdHIg
PSBvcGVuc3NsX2RlY29kZV9zdHJpbmcobGliLlg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5n
KGVycikpCisgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoZXJyX3N0cikKKworCitj
bGFzcyBDaXBoZXJTdWl0ZShJbnRFbnVtKToKKyAgICBBRVNfMTI4X0dDTV9TSEEyNTYgPSAweDEz
MDEKKyAgICBBRVNfMjU2X0dDTV9TSEEzODQgPSAweDEzMDIKKyAgICBDSEFDSEEyMF9QT0xZMTMw
NV9TSEEyNTYgPSAweDEzMDMKKyAgICBFTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViA9IDB4
MDBGRgorCisKK2NsYXNzIENvbXByZXNzaW9uTWV0aG9kKEludEVudW0pOgorICAgIE5VTEwgPSAw
CisKKworY2xhc3MgRXh0ZW5zaW9uVHlwZShJbnRFbnVtKToKKyAgICBTRVJWRVJfTkFNRSA9IDAK
KyAgICBTVEFUVVNfUkVRVUVTVCA9IDUKKyAgICBTVVBQT1JURURfR1JPVVBTID0gMTAKKyAgICBT
SUdOQVRVUkVfQUxHT1JJVEhNUyA9IDEzCisgICAgQUxQTiA9IDE2CisgICAgQ09NUFJFU1NfQ0VS
VElGSUNBVEUgPSAyNworICAgIFBSRV9TSEFSRURfS0VZID0gNDEKKyAgICBFQVJMWV9EQVRBID0g
NDIKKyAgICBTVVBQT1JURURfVkVSU0lPTlMgPSA0MworICAgIENPT0tJRSA9IDQ0CisgICAgUFNL
X0tFWV9FWENIQU5HRV9NT0RFUyA9IDQ1CisgICAgS0VZX1NIQVJFID0gNTEKKyAgICBRVUlDX1RS
QU5TUE9SVF9QQVJBTUVURVJTID0gNjU0NDUKKyAgICBFTkNSWVBURURfU0VSVkVSX05BTUUgPSA2
NTQ4NgorCisKK2NsYXNzIEdyb3VwKEludEVudW0pOgorICAgIFNFQ1AyNTZSMSA9IDB4MDAxNwor
ICAgIFNFQ1AzODRSMSA9IDB4MDAxOAorICAgIFNFQ1A1MjFSMSA9IDB4MDAxOQorICAgIFgyNTUx
OSA9IDB4MDAxRAorICAgIFg0NDggPSAweDAwMUUKKyAgICBHUkVBU0UgPSAweEFBQUEKKworCitj
bGFzcyBIYW5kc2hha2VUeXBlKEludEVudW0pOgorICAgIENMSUVOVF9IRUxMTyA9IDEKKyAgICBT
RVJWRVJfSEVMTE8gPSAyCisgICAgTkVXX1NFU1NJT05fVElDS0VUID0gNAorICAgIEVORF9PRl9F
QVJMWV9EQVRBID0gNQorICAgIEVOQ1JZUFRFRF9FWFRFTlNJT05TID0gOAorICAgIENFUlRJRklD
QVRFID0gMTEKKyAgICBDRVJUSUZJQ0FURV9SRVFVRVNUID0gMTMKKyAgICBDRVJUSUZJQ0FURV9W
RVJJRlkgPSAxNQorICAgIEZJTklTSEVEID0gMjAKKyAgICBLRVlfVVBEQVRFID0gMjQKKyAgICBD
T01QUkVTU0VEX0NFUlRJRklDQVRFID0gMjUKKyAgICBNRVNTQUdFX0hBU0ggPSAyNTQKKworCitj
bGFzcyBQc2tLZXlFeGNoYW5nZU1vZGUoSW50RW51bSk6CisgICAgUFNLX0tFID0gMAorICAgIFBT
S19ESEVfS0UgPSAxCisKKworY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtKEludEVudW0pOgorICAg
IEVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYgPSAweDA0MDMKKyAgICBFQ0RTQV9TRUNQMzg0UjFfU0hB
Mzg0ID0gMHgwNTAzCisgICAgRUNEU0FfU0VDUDUyMVIxX1NIQTUxMiA9IDB4MDYwMworICAgIEVE
MjU1MTkgPSAweDA4MDcKKyAgICBFRDQ0OCA9IDB4MDgwOAorICAgIFJTQV9QS0NTMV9TSEEyNTYg
PSAweDA0MDEKKyAgICBSU0FfUEtDUzFfU0hBMzg0ID0gMHgwNTAxCisgICAgUlNBX1BLQ1MxX1NI
QTUxMiA9IDB4MDYwMQorICAgIFJTQV9QU1NfUFNTX1NIQTI1NiA9IDB4MDgwOQorICAgIFJTQV9Q
U1NfUFNTX1NIQTM4NCA9IDB4MDgwQQorICAgIFJTQV9QU1NfUFNTX1NIQTUxMiA9IDB4MDgwQgor
ICAgIFJTQV9QU1NfUlNBRV9TSEEyNTYgPSAweDA4MDQKKyAgICBSU0FfUFNTX1JTQUVfU0hBMzg0
ID0gMHgwODA1CisgICAgUlNBX1BTU19SU0FFX1NIQTUxMiA9IDB4MDgwNgorCisgICAgIyBsZWdh
Y3kKKyAgICBSU0FfUEtDUzFfU0hBMSA9IDB4MDIwMQorICAgIFNIQTFfRFNBID0gMHgwMjAyCisg
ICAgRUNEU0FfU0hBMSA9IDB4MDIwMworCisKKyMgQkxPQ0tTCisKKworQGNvbnRleHRtYW5hZ2Vy
CitkZWYgcHVsbF9ibG9jayhidWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCkgLT4gR2VuZXJhdG9y
OgorICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgYiBpbiBidWYucHVsbF9ieXRlcyhjYXBhY2l0eSk6
CisgICAgICAgIGxlbmd0aCA9IChsZW5ndGggPDwgOCkgfCBiCisgICAgZW5kID0gYnVmLnRlbGwo
KSArIGxlbmd0aAorICAgIHlpZWxkIGxlbmd0aAorICAgIGFzc2VydCBidWYudGVsbCgpID09IGVu
ZAorCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHB1c2hfYmxvY2soYnVmOiBCdWZmZXIsIGNhcGFj
aXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKKyAgICAiIiIKKyAgICBDb250ZXh0IG1hbmFnZXIgdG8g
cHVzaCBhIHZhcmlhYmxlLWxlbmd0aCBibG9jaywgd2l0aCBgY2FwYWNpdHlgIGJ5dGVzCisgICAg
dG8gd3JpdGUgdGhlIGxlbmd0aC4KKyAgICAiIiIKKyAgICBzdGFydCA9IGJ1Zi50ZWxsKCkgKyBj
YXBhY2l0eQorICAgIGJ1Zi5zZWVrKHN0YXJ0KQorICAgIHlpZWxkCisgICAgZW5kID0gYnVmLnRl
bGwoKQorICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0CisgICAgd2hpbGUgY2FwYWNpdHk6CisgICAg
ICAgIGJ1Zi5zZWVrKHN0YXJ0IC0gY2FwYWNpdHkpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KChs
ZW5ndGggPj4gKDggKiAoY2FwYWNpdHkgLSAxKSkpICYgMHhGRikKKyAgICAgICAgY2FwYWNpdHkg
LT0gMQorICAgIGJ1Zi5zZWVrKGVuZCkKKworCisjIExJU1RTCisKKworZGVmIHB1bGxfbGlzdChi
dWY6IEJ1ZmZlciwgY2FwYWNpdHk6IGludCwgZnVuYzogQ2FsbGFibGVbW10sIFRdKSAtPiBMaXN0
W1RdOgorICAgICIiIgorICAgIFB1bGwgYSBsaXN0IG9mIGl0ZW1zLgorICAgICIiIgorICAgIGl0
ZW1zID0gW10KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCBjYXBhY2l0eSkgYXMgbGVuZ3RoOgor
ICAgICAgICBlbmQgPSBidWYudGVsbCgpICsgbGVuZ3RoCisgICAgICAgIHdoaWxlIGJ1Zi50ZWxs
KCkgPCBlbmQ6CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoZnVuYygpKQorICAgIHJldHVybiBp
dGVtcworCisKK2RlZiBwdXNoX2xpc3QoCisgICAgYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IGZ1bmM6IENhbGxhYmxlW1tUXSwgTm9uZV0sIHZhbHVlczogU2VxdWVuY2VbVF0KKykgLT4gTm9u
ZToKKyAgICAiIiIKKyAgICBQdXNoIGEgbGlzdCBvZiBpdGVtcy4KKyAgICAiIiIKKyAgICB3aXRo
IHB1c2hfYmxvY2soYnVmLCBjYXBhY2l0eSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6
CisgICAgICAgICAgICBmdW5jKHZhbHVlKQorCisKK2RlZiBwdWxsX29wYXF1ZShidWY6IEJ1ZmZl
ciwgY2FwYWNpdHk6IGludCkgLT4gYnl0ZXM6CisgICAgIiIiCisgICAgUHVsbCBhbiBvcGFxdWUg
dmFsdWUgcHJlZml4ZWQgYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdWxsX2Jsb2Nr
KGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKKyAgICAgICAgcmV0dXJuIGJ1Zi5wdWxsX2J5dGVz
KGxlbmd0aCkKKworCitkZWYgcHVzaF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQs
IHZhbHVlOiBieXRlcykgLT4gTm9uZToKKyAgICAiIiIKKyAgICBQdXNoIGFuIG9wYXF1ZSB2YWx1
ZSBwcmVmaXggYnkgYSBsZW5ndGguCisgICAgIiIiCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Y2FwYWNpdHkpOgorICAgICAgICBidWYucHVzaF9ieXRlcyh2YWx1ZSkKKworCitAY29udGV4dG1h
bmFnZXIKK2RlZiBwdXNoX2V4dGVuc2lvbihidWY6IEJ1ZmZlciwgZXh0ZW5zaW9uX3R5cGU6IGlu
dCkgLT4gR2VuZXJhdG9yOgorICAgIGJ1Zi5wdXNoX3VpbnQxNihleHRlbnNpb25fdHlwZSkKKyAg
ICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAgICAgICAgeWllbGQKKworCisjIEtleVNoYXJl
RW50cnkKKworCitLZXlTaGFyZUVudHJ5ID0gVHVwbGVbaW50LCBieXRlc10KKworCitkZWYgcHVs
bF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIpIC0+IEtleVNoYXJlRW50cnk6CisgICAgZ3JvdXAgPSBi
dWYucHVsbF91aW50MTYoKQorICAgIGRhdGEgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgcmV0
dXJuIChncm91cCwgZGF0YSkKKworCitkZWYgcHVzaF9rZXlfc2hhcmUoYnVmOiBCdWZmZXIsIHZh
bHVlOiBLZXlTaGFyZUVudHJ5KSAtPiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQxNih2YWx1ZVsw
XSkKKyAgICBwdXNoX29wYXF1ZShidWYsIDIsIHZhbHVlWzFdKQorCisKKyMgQUxQTgorCisKK2Rl
ZiBwdWxsX2FscG5fcHJvdG9jb2woYnVmOiBCdWZmZXIpIC0+IHN0cjoKKyAgICByZXR1cm4gcHVs
bF9vcGFxdWUoYnVmLCAxKS5kZWNvZGUoImFzY2lpIikKKworCitkZWYgcHVzaF9hbHBuX3Byb3Rv
Y29sKGJ1ZjogQnVmZmVyLCBwcm90b2NvbDogc3RyKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgcHJvdG9jb2wuZW5jb2RlKCJhc2NpaSIpKQorCisKKyMgUFJFIFNIQVJFRCBLRVkK
KworUHNrSWRlbnRpdHkgPSBUdXBsZVtieXRlcywgaW50XQorCisKK2RlZiBwdWxsX3Bza19pZGVu
dGl0eShidWY6IEJ1ZmZlcikgLT4gUHNrSWRlbnRpdHk6CisgICAgaWRlbnRpdHkgPSBwdWxsX29w
YXF1ZShidWYsIDIpCisgICAgb2JmdXNjYXRlZF90aWNrZXRfYWdlID0gYnVmLnB1bGxfdWludDMy
KCkKKyAgICByZXR1cm4gKGlkZW50aXR5LCBvYmZ1c2NhdGVkX3RpY2tldF9hZ2UpCisKKworZGVm
IHB1c2hfcHNrX2lkZW50aXR5KGJ1ZjogQnVmZmVyLCBlbnRyeTogUHNrSWRlbnRpdHkpIC0+IE5v
bmU6CisgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVswXSkKKyAgICBidWYucHVzaF91aW50
MzIoZW50cnlbMV0pCisKKworZGVmIHB1bGxfcHNrX2JpbmRlcihidWY6IEJ1ZmZlcikgLT4gYnl0
ZXM6CisgICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkKKworCitkZWYgcHVzaF9wc2tfYmlu
ZGVyKGJ1ZjogQnVmZmVyLCBiaW5kZXI6IGJ5dGVzKSAtPiBOb25lOgorICAgIHB1c2hfb3BhcXVl
KGJ1ZiwgMSwgYmluZGVyKQorCisKKyMgTUVTU0FHRVMKKworRXh0ZW5zaW9uID0gVHVwbGVbaW50
LCBieXRlc10KKworCitAZGF0YWNsYXNzCitjbGFzcyBPZmZlcmVkUHNrczoKKyAgICBpZGVudGl0
aWVzOiBMaXN0W1Bza0lkZW50aXR5XQorICAgIGJpbmRlcnM6IExpc3RbYnl0ZXNdCisKKworQGRh
dGFjbGFzcworY2xhc3MgQ2xpZW50SGVsbG86CisgICAgcmFuZG9tOiBieXRlcworICAgIHNlc3Np
b25faWQ6IGJ5dGVzCisgICAgY2lwaGVyX3N1aXRlczogTGlzdFtpbnRdCisgICAgY29tcHJlc3Np
b25fbWV0aG9kczogTGlzdFtpbnRdCisKKyAgICAjIGV4dGVuc2lvbnMKKyAgICBhbHBuX3Byb3Rv
Y29sczogT3B0aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKKyAgICBlYXJseV9kYXRhOiBib29sID0g
RmFsc2UKKyAgICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVFbnRyeV1dID0gTm9u
ZQorICAgIHByZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10gPSBOb25lCisgICAg
cHNrX2tleV9leGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBz
ZXJ2ZXJfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICBzaWduYXR1cmVfYWxnb3JpdGht
czogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKKyAgICBzdXBwb3J0ZWRfZ3JvdXBzOiBPcHRp
b25hbFtMaXN0W2ludF1dID0gTm9uZQorICAgIHN1cHBvcnRlZF92ZXJzaW9uczogT3B0aW9uYWxb
TGlzdFtpbnRdXSA9IE5vbmUKKworICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9u
XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2NsaWVudF9oZWxs
byhidWY6IEJ1ZmZlcikgLT4gQ2xpZW50SGVsbG86CisgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4
KCkgPT0gSGFuZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KKyAgICB3aXRoIHB1bGxfYmxvY2soYnVm
LCAzKToKKyAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFf
MgorICAgICAgICBjbGllbnRfcmFuZG9tID0gYnVmLnB1bGxfYnl0ZXMoMzIpCisKKyAgICAgICAg
aGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1jbGllbnRfcmFuZG9tLAor
ICAgICAgICAgICAgc2Vzc2lvbl9pZD1wdWxsX29wYXF1ZShidWYsIDEpLAorICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlcz1wdWxsX2xpc3QoYnVmLCAyLCBidWYucHVsbF91aW50MTYpLAorICAgICAg
ICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1wdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50
OCksCisgICAgICAgICkKKworICAgICAgICAjIGV4dGVuc2lvbnMKKyAgICAgICAgYWZ0ZXJfcHNr
ID0gRmFsc2UKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgorICAgICAg
ICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QKKyAgICAgICAgICAgIG5vbmxvY2Fs
IGFmdGVyX3BzaworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhZnRlcl9wc2sKKworICAgICAgICAg
ICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAgICAgICAgICAgZXh0ZW5z
aW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBpZiBleHRlbnNpb25f
dHlwZSA9PSBFeHRlbnNpb25UeXBlLktFWV9TSEFSRToKKyAgICAgICAgICAgICAgICBoZWxsby5r
ZXlfc2hhcmUgPSBwdWxsX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1bGxfa2V5X3NoYXJlLCBidWYp
KQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNVUFBP
UlRFRF9WRVJTSU9OUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMg
PSBwdWxsX2xpc3QoYnVmLCAxLCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0lHTkFUVVJFX0FMR09SSVRITVM6CisgICAg
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBwdWxsX2xpc3QoYnVmLCAy
LCBidWYucHVsbF91aW50MTYpCisgICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4
dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUzoKKyAgICAgICAgICAgICAgICBoZWxsby5zdXBw
b3J0ZWRfZ3JvdXBzID0gcHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxfdWludDE2KQorICAgICAg
ICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBTS19LRVlfRVhDSEFO
R0VfTU9ERVM6CisgICAgICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcyA9
IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KQorICAgICAgICAgICAgZWxpZiBleHRl
bnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlNFUlZFUl9OQU1FOgorICAgICAgICAgICAgICAg
IHdpdGggcHVsbF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYnVm
LnB1bGxfdWludDgoKSA9PSAwCisgICAgICAgICAgICAgICAgICAgIGhlbGxvLnNlcnZlcl9uYW1l
ID0gcHVsbF9vcGFxdWUoYnVmLCAyKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGVsaWYg
ZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5BTFBOOgorICAgICAgICAgICAgICAgIGhl
bGxvLmFscG5fcHJvdG9jb2xzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAgICAgICBidWYs
IDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RB
VEE6CisgICAgICAgICAgICAgICAgaGVsbG8uZWFybHlfZGF0YSA9IFRydWUKKyAgICAgICAgICAg
IGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5QUkVfU0hBUkVEX0tFWToKKyAg
ICAgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSA9IE9mZmVyZWRQc2tzKAorICAgICAg
ICAgICAgICAgICAgICBpZGVudGl0aWVzPXB1bGxfbGlzdChidWYsIDIsIHBhcnRpYWwocHVsbF9w
c2tfaWRlbnRpdHksIGJ1ZikpLAorICAgICAgICAgICAgICAgICAgICBiaW5kZXJzPXB1bGxfbGlz
dChidWYsIDIsIHBhcnRpYWwocHVsbF9wc2tfYmluZGVyLCBidWYpKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgYWZ0ZXJfcHNrID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBoZWxsby5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKKyAgICAgICAg
ICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVs
bF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gaGVsbG8KKworCitkZWYgcHVzaF9jbGllbnRfaGVs
bG8oYnVmOiBCdWZmZXIsIGhlbGxvOiBDbGllbnRIZWxsbykgLT4gTm9uZToKKyAgICBidWYucHVz
aF91aW50OChIYW5kc2hha2VUeXBlLkNMSUVOVF9IRUxMTykKKyAgICB3aXRoIHB1c2hfYmxvY2so
YnVmLCAzKToKKyAgICAgICAgYnVmLnB1c2hfdWludDE2KFRMU19WRVJTSU9OXzFfMikKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoaGVsbG8ucmFuZG9tKQorICAgICAgICBwdXNoX29wYXF1ZShidWYs
IDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAgICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNo
X3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRlcykKKyAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwg
YnVmLnB1c2hfdWludDgsIGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZHMpCisKKyAgICAgICAgIyBl
eHRlbnNpb25zCisgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgorICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuS0VZX1NIQVJFKToKKyAgICAg
ICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBwYXJ0aWFsKHB1c2hfa2V5X3NoYXJlLCBidWYp
LCBoZWxsby5rZXlfc2hhcmUpCisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBFeHRlbnNpb25UeXBlLlNVUFBPUlRFRF9WRVJTSU9OUyk6CisgICAgICAgICAgICAgICAgcHVz
aF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMp
CisKKyAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlNJ
R05BVFVSRV9BTEdPUklUSE1TKToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBi
dWYucHVzaF91aW50MTYsIGhlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zKQorCisgICAgICAgICAg
ICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBT
KToKKyAgICAgICAgICAgICAgICBwdXNoX2xpc3QoYnVmLCAyLCBidWYucHVzaF91aW50MTYsIGhl
bGxvLnN1cHBvcnRlZF9ncm91cHMpCisKKyAgICAgICAgICAgIGlmIGhlbGxvLnBza19rZXlfZXhj
aGFuZ2VfbW9kZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVu
c2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUyk6CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5wdXNoX3VpbnQ4LCBoZWxsby5wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzKQorCisgICAgICAgICAgICBpZiBoZWxsby5zZXJ2ZXJfbmFtZSBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0
ZW5zaW9uVHlwZS5TRVJWRVJfTkFNRSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9i
bG9jayhidWYsIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgaGVsbG8uc2VydmVy
X25hbWUuZW5jb2RlKCJhc2NpaSIpKQorCisgICAgICAgICAgICBpZiBoZWxsby5hbHBuX3Byb3Rv
Y29scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1
ZiwgRXh0ZW5zaW9uVHlwZS5BTFBOKToKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1c2hfYWxwbl9wcm90b2Nv
bCwgYnVmKSwgaGVsbG8uYWxwbl9wcm90b2NvbHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBoZWxsby5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0YToKKyAgICAg
ICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9E
QVRBKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAjIHByZV9zaGFy
ZWRfa2V5IE1VU1QgYmUgbGFzdAorICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4
dGVuc2lvblR5cGUuUFJFX1NIQVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoCisgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX3Bza19pZGVudGl0eSwg
YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50
aXRpZXMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9s
aXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfYmluZGVyLCBi
dWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVy
cywKKyAgICAgICAgICAgICAgICAgICAgKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIFNlcnZlckhl
bGxvOgorICAgIHJhbmRvbTogYnl0ZXMKKyAgICBzZXNzaW9uX2lkOiBieXRlcworICAgIGNpcGhl
cl9zdWl0ZTogaW50CisgICAgY29tcHJlc3Npb25fbWV0aG9kOiBpbnQKKworICAgICMgZXh0ZW5z
aW9ucworICAgIGtleV9zaGFyZTogT3B0aW9uYWxbS2V5U2hhcmVFbnRyeV0gPSBOb25lCisgICAg
cHJlX3NoYXJlZF9rZXk6IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgc3VwcG9ydGVkX3ZlcnNp
b246IE9wdGlvbmFsW2ludF0gPSBOb25lCisgICAgb3RoZXJfZXh0ZW5zaW9uczogTGlzdFtUdXBs
ZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKKworCitkZWYgcHVs
bF9zZXJ2ZXJfaGVsbG8oYnVmOiBCdWZmZXIpIC0+IFNlcnZlckhlbGxvOgorICAgIGFzc2VydCBi
dWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuU0VSVkVSX0hFTExPCisgICAgd2l0aCBw
dWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50MTYoKSA9PSBU
TFNfVkVSU0lPTl8xXzIKKyAgICAgICAgc2VydmVyX3JhbmRvbSA9IGJ1Zi5wdWxsX2J5dGVzKDMy
KQorCisgICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209c2Vy
dmVyX3JhbmRvbSwKKyAgICAgICAgICAgIHNlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAxKSwK
KyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwKKyAgICAgICAgICAg
IGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAorICAgICAgICApCisKKyAgICAg
ICAgIyBleHRlbnNpb25zCisgICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6Cisg
ICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4
dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgorICAgICAg
ICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxfdWludDE2KCkKKyAg
ICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkU6
CisgICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlfc2hhcmUoYnVmKQor
ICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLlBSRV9TSEFS
RURfS0VZOgorICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5ID0gYnVmLnB1bGxf
dWludDE2KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVsbG8ub3RoZXJf
ZXh0ZW5zaW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlwZSwg
YnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCisgICAgICAgICAgICAgICAgKQorCisg
ICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQorCisgICAgcmV0dXJuIGhl
bGxvCisKKworZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBoZWxsbzogU2VydmVy
SGVsbG8pIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtlVHlwZS5TRVJWRVJf
SEVMTE8pCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3Vp
bnQxNihUTFNfVkVSU0lPTl8xXzIpCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGhlbGxvLnJhbmRv
bSkKKworICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLnNlc3Npb25faWQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQxNihoZWxsby5jaXBoZXJfc3VpdGUpCisgICAgICAgIGJ1Zi5wdXNo
X3VpbnQ4KGhlbGxvLmNvbXByZXNzaW9uX21ldGhvZCkKKworICAgICAgICAjIGV4dGVuc2lvbnMK
KyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAgICAgICBpZiBoZWxsby5z
dXBwb3J0ZWRfdmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3aXRoIHB1c2hf
ZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfVkVSU0lPTlMpOgorICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24pCisK
KyAgICAgICAgICAgIGlmIGhlbGxvLmtleV9zaGFyZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5LRVlfU0hBUkUpOgor
ICAgICAgICAgICAgICAgICAgICBwdXNoX2tleV9zaGFyZShidWYsIGhlbGxvLmtleV9zaGFyZSkK
KworICAgICAgICAgICAgaWYgaGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuUFJFX1NI
QVJFRF9LRVkpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8ucHJl
X3NoYXJlZF9rZXkpCisKKyAgICAgICAgICAgIGZvciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9u
X3ZhbHVlIGluIGhlbGxvLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgd2l0aCBw
dXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0BkYXRhY2xhc3MKK2NsYXNzIE5l
d1Nlc3Npb25UaWNrZXQ6CisgICAgdGlja2V0X2xpZmV0aW1lOiBpbnQgPSAwCisgICAgdGlja2V0
X2FnZV9hZGQ6IGludCA9IDAKKyAgICB0aWNrZXRfbm9uY2U6IGJ5dGVzID0gYiIiCisgICAgdGlj
a2V0OiBieXRlcyA9IGIiIgorCisgICAgIyBleHRlbnNpb25zCisgICAgbWF4X2Vhcmx5X2RhdGFf
c2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1
cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBw
dWxsX25ld19zZXNzaW9uX3RpY2tldChidWY6IEJ1ZmZlcikgLT4gTmV3U2Vzc2lvblRpY2tldDoK
KyAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBOZXdTZXNzaW9uVGlja2V0KCkKKworICAgIGFzc2Vy
dCBidWYucHVsbF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUCisg
ICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6CisgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC50
aWNrZXRfbGlmZXRpbWUgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vzc2lvbl90
aWNrZXQudGlja2V0X2FnZV9hZGQgPSBidWYucHVsbF91aW50MzIoKQorICAgICAgICBuZXdfc2Vz
c2lvbl90aWNrZXQudGlja2V0X25vbmNlID0gcHVsbF9vcGFxdWUoYnVmLCAxKQorICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0ID0gcHVsbF9vcGFxdWUoYnVmLCAyKQorCisgICAgICAg
IGRlZiBwdWxsX2V4dGVuc2lvbigpIC0+IE5vbmU6CisgICAgICAgICAgICBleHRlbnNpb25fdHlw
ZSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVm
LnB1bGxfdWludDE2KCkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lv
blR5cGUuRUFSTFlfREFUQToKKyAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldC5vdGhlcl9leHRlbnNpb25zLmFwcGVu
ZCgKKyAgICAgICAgICAgICAgICAgICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhl
eHRlbnNpb25fbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgcHVsbF9saXN0
KGJ1ZiwgMiwgcHVsbF9leHRlbnNpb24pCisKKyAgICByZXR1cm4gbmV3X3Nlc3Npb25fdGlja2V0
CisKKworZGVmIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZjogQnVmZmVyLCBuZXdfc2Vzc2lv
bl90aWNrZXQ6IE5ld1Nlc3Npb25UaWNrZXQpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hfdWludDgo
SGFuZHNoYWtlVHlwZS5ORVdfU0VTU0lPTl9USUNLRVQpCisgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0
X2xpZmV0aW1lKQorICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nlc3Npb25fdGlja2V0LnRp
Y2tldF9hZ2VfYWRkKQorICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIG5ld19zZXNzaW9uX3Rp
Y2tldC50aWNrZXRfbm9uY2UpCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgbmV3X3Nlc3Np
b25fdGlja2V0LnRpY2tldCkKKworICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKKyAg
ICAgICAgICAgIGlmIG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNp
b25UeXBlLkVBUkxZX0RBVEEpOgorICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MzIo
bmV3X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUpCisKKyAgICAgICAgICAgIGZv
ciBleHRlbnNpb25fdHlwZSwgZXh0ZW5zaW9uX3ZhbHVlIGluIG5ld19zZXNzaW9uX3RpY2tldC5v
dGhlcl9leHRlbnNpb25zOgorICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVm
LCBleHRlbnNpb25fdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4
dGVuc2lvbl92YWx1ZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBFbmNyeXB0ZWRFeHRlbnNpb25z
OgorICAgIGFscG5fcHJvdG9jb2w6IE9wdGlvbmFsW3N0cl0gPSBOb25lCisgICAgZWFybHlfZGF0
YTogYm9vbCA9IEZhbHNlCisKKyAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwg
Ynl0ZXNdXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisKK2RlZiBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGJ1ZjogQnVmZmVyKSAtPiBFbmNyeXB0ZWRFeHRlbnNpb25zOgorICAg
IGV4dGVuc2lvbnMgPSBFbmNyeXB0ZWRFeHRlbnNpb25zKCkKKworICAgIGFzc2VydCBidWYucHVs
bF91aW50OCgpID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlMKKyAgICB3aXRo
IHB1bGxfYmxvY2soYnVmLCAzKToKKworICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBO
b25lOgorICAgICAgICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQorICAg
ICAgICAgICAgZXh0ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgICAg
ICBpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFMUE46CisgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sID0gcHVsbF9saXN0KAorICAgICAgICAgICAgICAg
ICAgICBidWYsIDIsIHBhcnRpYWwocHVsbF9hbHBuX3Byb3RvY29sLCBidWYpCisgICAgICAgICAg
ICAgICAgKVswXQorICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLkVBUkxZX0RBVEE6CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5lYXJseV9kYXRhID0g
VHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zLm90aGVy
X2V4dGVuc2lvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUs
IGJ1Zi5wdWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKKworICAgIHJldHVybiBl
eHRlbnNpb25zCisKKworZGVmIHB1c2hfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVmOiBCdWZmZXIs
IGV4dGVuc2lvbnM6IEVuY3J5cHRlZEV4dGVuc2lvbnMpIC0+IE5vbmU6CisgICAgYnVmLnB1c2hf
dWludDgoSGFuZHNoYWtlVHlwZS5FTkNSWVBURURfRVhURU5TSU9OUykKKyAgICB3aXRoIHB1c2hf
YmxvY2soYnVmLCAzKToKKyAgICAgICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMik6CisgICAgICAg
ICAgICBpZiBleHRlbnNpb25zLmFscG5fcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuQUxQTik6CisgICAg
ICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0
aWFsKHB1c2hfYWxwbl9wcm90b2NvbCwgYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtl
eHRlbnNpb25zLmFscG5fcHJvdG9jb2xdLAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbnMuZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHB1
c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKKyAgICAgICAgICAg
ICAgICAgICAgcGFzcworCisgICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lv
bl92YWx1ZSBpbiBleHRlbnNpb25zLm90aGVyX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAg
d2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIGV4dGVuc2lvbl90eXBlKToKKyAgICAgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoZXh0ZW5zaW9uX3ZhbHVlKQorCisKK0NlcnRpZmljYXRlRW50
cnkgPSBUdXBsZVtieXRlcywgYnl0ZXNdCisKKworQGRhdGFjbGFzcworY2xhc3MgQ2VydGlmaWNh
dGU6CisgICAgcmVxdWVzdF9jb250ZXh0OiBieXRlcyA9IGIiIgorICAgIGNlcnRpZmljYXRlczog
TGlzdFtDZXJ0aWZpY2F0ZUVudHJ5XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQorCisK
K2RlZiBwdWxsX2NlcnRpZmljYXRlKGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZToKKyAgICBj
ZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKCkKKworICAgIGFzc2VydCBidWYucHVsbF91aW50OCgp
ID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEUKKyAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAz
KToKKyAgICAgICAgY2VydGlmaWNhdGUucmVxdWVzdF9jb250ZXh0ID0gcHVsbF9vcGFxdWUoYnVm
LCAxKQorCisgICAgICAgIGRlZiBwdWxsX2NlcnRpZmljYXRlX2VudHJ5KGJ1ZjogQnVmZmVyKSAt
PiBDZXJ0aWZpY2F0ZUVudHJ5OgorICAgICAgICAgICAgZGF0YSA9IHB1bGxfb3BhcXVlKGJ1Ziwg
MykKKyAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX29wYXF1ZShidWYsIDIpCisgICAgICAg
ICAgICByZXR1cm4gKGRhdGEsIGV4dGVuc2lvbnMpCisKKyAgICAgICAgY2VydGlmaWNhdGUuY2Vy
dGlmaWNhdGVzID0gcHVsbF9saXN0KAorICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1bGxf
Y2VydGlmaWNhdGVfZW50cnksIGJ1ZikKKyAgICAgICAgKQorCisgICAgcmV0dXJuIGNlcnRpZmlj
YXRlCisKKworZGVmIHB1c2hfY2VydGlmaWNhdGUoYnVmOiBCdWZmZXIsIGNlcnRpZmljYXRlOiBD
ZXJ0aWZpY2F0ZSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNF
UlRJRklDQVRFKQorICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgorICAgICAgICBwdXNoX29w
YXF1ZShidWYsIDEsIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCkKKworICAgICAgICBkZWYg
cHVzaF9jZXJ0aWZpY2F0ZV9lbnRyeShidWY6IEJ1ZmZlciwgZW50cnk6IENlcnRpZmljYXRlRW50
cnkpIC0+IE5vbmU6CisgICAgICAgICAgICBwdXNoX29wYXF1ZShidWYsIDMsIGVudHJ5WzBdKQor
ICAgICAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAyLCBlbnRyeVsxXSkKKworICAgICAgICBwdXNo
X2xpc3QoCisgICAgICAgICAgICBidWYsIDMsIHBhcnRpYWwocHVzaF9jZXJ0aWZpY2F0ZV9lbnRy
eSwgYnVmKSwgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzCisgICAgICAgICkKKworCitAZGF0YWNs
YXNzCitjbGFzcyBDZXJ0aWZpY2F0ZVZlcmlmeToKKyAgICBhbGdvcml0aG06IGludAorICAgIHNp
Z25hdHVyZTogYnl0ZXMKKworCitkZWYgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZm
ZXIpIC0+IENlcnRpZmljYXRlVmVyaWZ5OgorICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09
IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZCisgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1
ZiwgMyk6CisgICAgICAgIGFsZ29yaXRobSA9IGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNp
Z25hdHVyZSA9IHB1bGxfb3BhcXVlKGJ1ZiwgMikKKworICAgIHJldHVybiBDZXJ0aWZpY2F0ZVZl
cmlmeShhbGdvcml0aG09YWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0dXJlKQorCisKK2RlZiBw
dXNoX2NlcnRpZmljYXRlX3ZlcmlmeShidWY6IEJ1ZmZlciwgdmVyaWZ5OiBDZXJ0aWZpY2F0ZVZl
cmlmeSkgLT4gTm9uZToKKyAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VUeXBlLkNFUlRJRklD
QVRFX1ZFUklGWSkKKyAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAzKToKKyAgICAgICAgYnVmLnB1
c2hfdWludDE2KHZlcmlmeS5hbGdvcml0aG0pCisgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwg
dmVyaWZ5LnNpZ25hdHVyZSkKKworCitAZGF0YWNsYXNzCitjbGFzcyBGaW5pc2hlZDoKKyAgICB2
ZXJpZnlfZGF0YTogYnl0ZXMgPSBiIiIKKworCitkZWYgcHVsbF9maW5pc2hlZChidWY6IEJ1ZmZl
cikgLT4gRmluaXNoZWQ6CisgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgpCisKKyAgICBhc3NlcnQg
YnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkZJTklTSEVECisgICAgZmluaXNoZWQu
dmVyaWZ5X2RhdGEgPSBwdWxsX29wYXF1ZShidWYsIDMpCisKKyAgICByZXR1cm4gZmluaXNoZWQK
KworCitkZWYgcHVzaF9maW5pc2hlZChidWY6IEJ1ZmZlciwgZmluaXNoZWQ6IEZpbmlzaGVkKSAt
PiBOb25lOgorICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRklOSVNIRUQpCisgICAg
cHVzaF9vcGFxdWUoYnVmLCAzLCBmaW5pc2hlZC52ZXJpZnlfZGF0YSkKKworCisjIENPTlRFWFQK
KworCitjbGFzcyBLZXlTY2hlZHVsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZSk6CisgICAgICAgIHNlbGYuYWxnb3JpdGhtID0gY2lwaGVyX3N1aXRl
X2hhc2goY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhlcl9z
dWl0ZQorICAgICAgICBzZWxmLmdlbmVyYXRpb24gPSAwCisgICAgICAgIHNlbGYuaGFzaCA9IGhh
c2hlcy5IYXNoKHNlbGYuYWxnb3JpdGhtLCBkZWZhdWx0X2JhY2tlbmQoKSkKKyAgICAgICAgc2Vs
Zi5oYXNoX2VtcHR5X3ZhbHVlID0gc2VsZi5oYXNoLmNvcHkoKS5maW5hbGl6ZSgpCisgICAgICAg
IHNlbGYuc2VjcmV0ID0gYnl0ZXMoc2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUpCisKKyAgICBk
ZWYgY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZiwgY29udGV4dF9zdHJpbmc6IGJ5dGVzKSAt
PiBieXRlczoKKyAgICAgICAgcmV0dXJuIGIiICIgKiA2NCArIGNvbnRleHRfc3RyaW5nICsgYiJc
eDAwIiArIHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKQorCisgICAgZGVmIGZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYsIHNlY3JldDogYnl0ZXMpIC0+IGJ5dGVzOgorICAgICAgICBobWFjX2tl
eSA9IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLAorICAgICAgICAgICAgc2VjcmV0PXNlY3JldCwKKyAgICAgICAgICAgIGxhYmVsPWIiZmlu
aXNoZWQiLAorICAgICAgICAgICAgaGFzaF92YWx1ZT1iIiIsCisgICAgICAgICAgICBsZW5ndGg9
c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCisgICAgICAgICkKKworICAgICAgICBoID0gaG1h
Yy5ITUFDKGhtYWNfa2V5LCBhbGdvcml0aG09c2VsZi5hbGdvcml0aG0sIGJhY2tlbmQ9ZGVmYXVs
dF9iYWNrZW5kKCkpCisgICAgICAgIGgudXBkYXRlKHNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGguZmluYWxpemUoKQorCisgICAgZGVmIGRlcml2ZV9zZWNyZXQo
c2VsZiwgbGFiZWw6IGJ5dGVzKSAtPiBieXRlczoKKyAgICAgICAgcmV0dXJuIGhrZGZfZXhwYW5k
X2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAgICAg
ICAgc2VjcmV0PXNlbGYuc2VjcmV0LAorICAgICAgICAgICAgbGFiZWw9bGFiZWwsCisgICAgICAg
ICAgICBoYXNoX3ZhbHVlPXNlbGYuaGFzaC5jb3B5KCkuZmluYWxpemUoKSwKKyAgICAgICAgICAg
IGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisgICAgZGVm
IGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAtPiBO
b25lOgorICAgICAgICBpZiBrZXlfbWF0ZXJpYWwgaXMgTm9uZToKKyAgICAgICAgICAgIGtleV9t
YXRlcmlhbCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplKQorCisgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuc2VjcmV0ID0gaGtkZl9leHBhbmRf
bGFiZWwoCisgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYuYWxnb3JpdGhtLAorICAgICAg
ICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKKyAgICAgICAgICAgICAgICBsYWJlbD1iImRl
cml2ZWQiLAorICAgICAgICAgICAgICAgIGhhc2hfdmFsdWU9c2VsZi5oYXNoX2VtcHR5X3ZhbHVl
LAorICAgICAgICAgICAgICAgIGxlbmd0aD1zZWxmLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAg
ICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdlbmVyYXRpb24gKz0gMQorICAgICAgICBzZWxm
LnNlY3JldCA9IGhrZGZfZXh0cmFjdCgKKyAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFsZ29y
aXRobSwgc2FsdD1zZWxmLnNlY3JldCwga2V5X21hdGVyaWFsPWtleV9tYXRlcmlhbAorICAgICAg
ICApCisKKyAgICBkZWYgdXBkYXRlX2hhc2goc2VsZiwgZGF0YTogYnl0ZXMpIC0+IE5vbmU6Cisg
ICAgICAgIHNlbGYuaGFzaC51cGRhdGUoZGF0YSkKKworCitjbGFzcyBLZXlTY2hlZHVsZVByb3h5
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfc3VpdGVzOiBMaXN0W0NpcGhlclN1aXRl
XSk6CisgICAgICAgIHNlbGYuX19zY2hlZHVsZXMgPSBkaWN0KG1hcChsYW1iZGEgYzogKGMsIEtl
eVNjaGVkdWxlKGMpKSwgY2lwaGVyX3N1aXRlcykpCisKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBr
ZXlfbWF0ZXJpYWw6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpIC0+IE5vbmU6CisgICAgICAgIGZv
ciBrIGluIHNlbGYuX19zY2hlZHVsZXMudmFsdWVzKCk6CisgICAgICAgICAgICBrLmV4dHJhY3Qo
a2V5X21hdGVyaWFsKQorCisgICAgZGVmIHNlbGVjdChzZWxmLCBjaXBoZXJfc3VpdGU6IENpcGhl
clN1aXRlKSAtPiBLZXlTY2hlZHVsZToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zY2hlZHVsZXNb
Y2lwaGVyX3N1aXRlXQorCisgICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6IGJ5dGVzKSAt
PiBOb25lOgorICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgorICAg
ICAgICAgICAgay51cGRhdGVfaGFzaChkYXRhKQorCisKK0NJUEhFUl9TVUlURVMgPSB7CisgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2OiBoYXNoZXMuU0hBMjU2LAorICAgIENpcGhl
clN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogaGFzaGVzLlNIQTM4NCwKKyAgICBDaXBoZXJTdWl0
ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTY6IGhhc2hlcy5TSEEyNTYsCit9CisKK1NJR05BVFVS
RV9BTEdPUklUSE1TOiBEaWN0ID0geworICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQ
MjU2UjFfU0hBMjU2OiAoTm9uZSwgaGFzaGVzLlNIQTI1NiksCisgICAgU2lnbmF0dXJlQWxnb3Jp
dGhtLkVDRFNBX1NFQ1AzODRSMV9TSEEzODQ6IChOb25lLCBoYXNoZXMuU0hBMzg0KSwKKyAgICBT
aWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDUyMVIxX1NIQTUxMjogKE5vbmUsIGhhc2hlcy5T
SEE1MTIpLAorICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMTogKHBhZGRpbmcu
UEtDUzF2MTUsIGhhc2hlcy5TSEExKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1Mx
X1NIQTI1NjogKHBhZGRpbmcuUEtDUzF2MTUsIGhhc2hlcy5TSEEyNTYpLAorICAgIFNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMzg0OiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNI
QTM4NCksCisgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTI6IChwYWRkaW5n
LlBLQ1MxdjE1LCBoYXNoZXMuU0hBNTEyKSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BT
U19SU0FFX1NIQTI1NjogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hBMjU2KSwKKyAgICBTaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTM4NDogKHBhZGRpbmcuUFNTLCBoYXNoZXMuU0hB
Mzg0KSwKKyAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTUxMjogKHBhZGRp
bmcuUFNTLCBoYXNoZXMuU0hBNTEyKSwKK30KKworR1JPVVBfVE9fQ1VSVkU6IERpY3QgPSB7Cisg
ICAgR3JvdXAuU0VDUDI1NlIxOiBlYy5TRUNQMjU2UjEsCisgICAgR3JvdXAuU0VDUDM4NFIxOiBl
Yy5TRUNQMzg0UjEsCisgICAgR3JvdXAuU0VDUDUyMVIxOiBlYy5TRUNQNTIxUjEsCit9CitDVVJW
RV9UT19HUk9VUCA9IGRpY3QoKHYsIGspIGZvciBrLCB2IGluIEdST1VQX1RPX0NVUlZFLml0ZW1z
KCkpCisKKworZGVmIGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUp
IC0+IGhhc2hlcy5IYXNoQWxnb3JpdGhtOgorICAgIHJldHVybiBDSVBIRVJfU1VJVEVTW2NpcGhl
cl9zdWl0ZV0oKQorCisKK2RlZiBkZWNvZGVfcHVibGljX2tleSgKKyAgICBrZXlfc2hhcmU6IEtl
eVNoYXJlRW50cnksCispIC0+IFVuaW9uW2VjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUx
OS5YMjU1MTlQdWJsaWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleSwgTm9uZV06CisgICAgaWYga2V5
X3NoYXJlWzBdID09IEdyb3VwLlgyNTUxOToKKyAgICAgICAgcmV0dXJuIHgyNTUxOS5YMjU1MTlQ
dWJsaWNLZXkuZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3No
YXJlWzBdID09IEdyb3VwLlg0NDg6CisgICAgICAgIHJldHVybiB4NDQ4Llg0NDhQdWJsaWNLZXku
ZnJvbV9wdWJsaWNfYnl0ZXMoa2V5X3NoYXJlWzFdKQorICAgIGVsaWYga2V5X3NoYXJlWzBdIGlu
IEdST1VQX1RPX0NVUlZFOgorICAgICAgICByZXR1cm4gZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tl
eS5mcm9tX2VuY29kZWRfcG9pbnQoCisgICAgICAgICAgICBHUk9VUF9UT19DVVJWRVtrZXlfc2hh
cmVbMF1dKCksIGtleV9zaGFyZVsxXQorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworCitkZWYgZW5jb2RlX3B1YmxpY19rZXkoCisgICAgcHVibGljX2tleTogVW5p
b25bCisgICAgICAgIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXksIHgyNTUxOS5YMjU1MTlQdWJs
aWNLZXksIHg0NDguWDQ0OFB1YmxpY0tleQorICAgIF0KKykgLT4gS2V5U2hhcmVFbnRyeToKKyAg
ICBpZiBpc2luc3RhbmNlKHB1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAg
ICAgICByZXR1cm4gKEdyb3VwLlgyNTUxOSwgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2Rp
bmcuUmF3LCBQdWJsaWNGb3JtYXQuUmF3KSkKKyAgICBlbGlmIGlzaW5zdGFuY2UocHVibGljX2tl
eSwgeDQ0OC5YNDQ4UHVibGljS2V5KToKKyAgICAgICAgcmV0dXJuIChHcm91cC5YNDQ4LCBwdWJs
aWNfa2V5LnB1YmxpY19ieXRlcyhFbmNvZGluZy5SYXcsIFB1YmxpY0Zvcm1hdC5SYXcpKQorICAg
IHJldHVybiAoCisgICAgICAgIENVUlZFX1RPX0dST1VQW3B1YmxpY19rZXkuY3VydmUuX19jbGFz
c19fXSwKKyAgICAgICAgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuWDk2MiwgUHVi
bGljRm9ybWF0LlVuY29tcHJlc3NlZFBvaW50KSwKKyAgICApCisKKworZGVmIG5lZ290aWF0ZSgK
KyAgICBzdXBwb3J0ZWQ6IExpc3RbVF0sIG9mZmVyZWQ6IE9wdGlvbmFsW0xpc3RbQW55XV0sIGV4
YzogT3B0aW9uYWxbQWxlcnRdID0gTm9uZQorKSAtPiBUOgorICAgIGlmIG9mZmVyZWQgaXMgbm90
IE5vbmU6CisgICAgICAgIGZvciBjIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIGlmIGMgaW4g
b2ZmZXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYworCisgICAgaWYgZXhjIGlzIG5vdCBO
b25lOgorICAgICAgICByYWlzZSBleGMKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBzaWduYXR1
cmVfYWxnb3JpdGhtX3BhcmFtcygKKyAgICBzaWduYXR1cmVfYWxnb3JpdGhtOiBpbnQsCispIC0+
IFVuaW9uW1R1cGxlW2VjLkVDRFNBXSwgVHVwbGVbcGFkZGluZy5Bc3ltbWV0cmljUGFkZGluZywg
aGFzaGVzLkhhc2hBbGdvcml0aG1dXToKKyAgICBwYWRkaW5nX2NscywgYWxnb3JpdGhtX2NscyA9
IFNJR05BVFVSRV9BTEdPUklUSE1TW3NpZ25hdHVyZV9hbGdvcml0aG1dCisgICAgYWxnb3JpdGht
ID0gYWxnb3JpdGhtX2NscygpCisgICAgaWYgcGFkZGluZ19jbHMgaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIChlYy5FQ0RTQShhbGdvcml0aG0pLCkKKyAgICBlbGlmIHBhZGRpbmdfY2xzID09IHBh
ZGRpbmcuUFNTOgorICAgICAgICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xzKAorICAgICAgICAg
ICAgbWdmPXBhZGRpbmcuTUdGMShhbGdvcml0aG0pLCBzYWx0X2xlbmd0aD1hbGdvcml0aG0uZGln
ZXN0X3NpemUKKyAgICAgICAgKQorICAgIGVsc2U6CisgICAgICAgIHBhZGRpbmdfb2JqID0gcGFk
ZGluZ19jbHMoKQorICAgIHJldHVybiBwYWRkaW5nX29iaiwgYWxnb3JpdGhtCisKKworQGNvbnRl
eHRtYW5hZ2VyCitkZWYgcHVzaF9tZXNzYWdlKAorICAgIGtleV9zY2hlZHVsZTogVW5pb25bS2V5
U2NoZWR1bGUsIEtleVNjaGVkdWxlUHJveHldLCBidWY6IEJ1ZmZlcgorKSAtPiBHZW5lcmF0b3I6
CisgICAgaGFzaF9zdGFydCA9IGJ1Zi50ZWxsKCkKKyAgICB5aWVsZAorICAgIGtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChidWYuZGF0YV9zbGljZShoYXNoX3N0YXJ0LCBidWYudGVsbCgpKSkKKwor
CisjIGNhbGxiYWNrIHR5cGVzCisKKworQGRhdGFjbGFzcworY2xhc3MgU2Vzc2lvblRpY2tldDoK
KyAgICAiIiIKKyAgICBBIFRMUyBzZXNzaW9uIHRpY2tldCBmb3Igc2Vzc2lvbiByZXN1bXB0aW9u
LgorICAgICIiIgorCisgICAgYWdlX2FkZDogaW50CisgICAgY2lwaGVyX3N1aXRlOiBDaXBoZXJT
dWl0ZQorICAgIG5vdF92YWxpZF9hZnRlcjogZGF0ZXRpbWUuZGF0ZXRpbWUKKyAgICBub3RfdmFs
aWRfYmVmb3JlOiBkYXRldGltZS5kYXRldGltZQorICAgIHJlc3VtcHRpb25fc2VjcmV0OiBieXRl
cworICAgIHNlcnZlcl9uYW1lOiBzdHIKKyAgICB0aWNrZXQ6IGJ5dGVzCisKKyAgICBtYXhfZWFy
bHlfZGF0YV9zaXplOiBPcHRpb25hbFtpbnRdID0gTm9uZQorICAgIG90aGVyX2V4dGVuc2lvbnM6
IExpc3RbVHVwbGVbaW50LCBieXRlc11dID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxpc3QpCisK
KyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdmFsaWQoc2VsZikgLT4gYm9vbDoKKyAgICAgICAg
bm93ID0gdXRjbm93KCkKKyAgICAgICAgcmV0dXJuIG5vdyA+PSBzZWxmLm5vdF92YWxpZF9iZWZv
cmUgYW5kIG5vdyA8PSBzZWxmLm5vdF92YWxpZF9hZnRlcgorCisgICAgQHByb3BlcnR5CisgICAg
ZGVmIG9iZnVzY2F0ZWRfYWdlKHNlbGYpIC0+IGludDoKKyAgICAgICAgYWdlID0gaW50KCh1dGNu
b3coKSAtIHNlbGYubm90X3ZhbGlkX2JlZm9yZSkudG90YWxfc2Vjb25kcygpKQorICAgICAgICBy
ZXR1cm4gKGFnZSArIHNlbGYuYWdlX2FkZCkgJSAoMSA8PCAzMikKKworCitBbHBuSGFuZGxlciA9
IENhbGxhYmxlW1tzdHJdLCBOb25lXQorU2Vzc2lvblRpY2tldEZldGNoZXIgPSBDYWxsYWJsZVtb
Ynl0ZXNdLCBPcHRpb25hbFtTZXNzaW9uVGlja2V0XV0KK1Nlc3Npb25UaWNrZXRIYW5kbGVyID0g
Q2FsbGFibGVbW1Nlc3Npb25UaWNrZXRdLCBOb25lXQorCisKK2NsYXNzIENvbnRleHQ6CisgICAg
ZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICBpc19jbGllbnQ6IGJvb2wsCisg
ICAgICAgIGFscG5fcHJvdG9jb2xzOiBPcHRpb25hbFtMaXN0W3N0cl1dID0gTm9uZSwKKyAgICAg
ICAgY2FkYXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lLAorICAgICAgICBjYWZpbGU6IE9wdGlv
bmFsW3N0cl0gPSBOb25lLAorICAgICAgICBjYXBhdGg6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICBsb2dnZXI6IE9wdGlvbmFsW1VuaW9uW2xvZ2dpbmcuTG9nZ2VyLCBsb2dnaW5nLkxv
Z2dlckFkYXB0ZXJdXSA9IE5vbmUsCisgICAgICAgIG1heF9lYXJseV9kYXRhOiBPcHRpb25hbFtp
bnRdID0gTm9uZSwKKyAgICAgICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAor
ICAgICAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisgICAgKToKKyAgICAg
ICAgIyBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2FscG5fcHJvdG9jb2xzID0gYWxwbl9w
cm90b2NvbHMKKyAgICAgICAgc2VsZi5fY2FkYXRhID0gY2FkYXRhCisgICAgICAgIHNlbGYuX2Nh
ZmlsZSA9IGNhZmlsZQorICAgICAgICBzZWxmLl9jYXBhdGggPSBjYXBhdGgKKyAgICAgICAgc2Vs
Zi5jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25lCisgICAgICAg
IHNlbGYuY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBbXQorICAg
ICAgICBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5OiBPcHRpb25hbFsKKyAgICAgICAgICAg
IFVuaW9uW2RzYS5EU0FQcml2YXRlS2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleSwgcnNh
LlJTQVByaXZhdGVLZXldCisgICAgICAgIF0gPSBOb25lCisgICAgICAgIHNlbGYuaGFuZHNoYWtl
X2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IFtdCisgICAgICAgIHNlbGYuX21heF9lYXJs
eV9kYXRhID0gbWF4X2Vhcmx5X2RhdGEKKyAgICAgICAgc2VsZi5zZXNzaW9uX3RpY2tldDogT3B0
aW9uYWxbU2Vzc2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0g
c2VydmVyX25hbWUKKyAgICAgICAgaWYgdmVyaWZ5X21vZGUgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHZlcmlmeV9tb2RlCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLl92ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVEIGlmIGlzX2NsaWVu
dCBlbHNlIHNzbC5DRVJUX05PTkUKKworICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICBzZWxm
LmFscG5fY2I6IE9wdGlvbmFsW0FscG5IYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5nZXRf
c2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRGZXRjaGVyXSA9IE5vbmUK
KyAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2I6IE9wdGlvbmFsW1Nlc3Npb25UaWNr
ZXRIYW5kbGVyXSA9IE5vbmUKKyAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2I6IENh
bGxhYmxlWworICAgICAgICAgICAgW0RpcmVjdGlvbiwgRXBvY2gsIENpcGhlclN1aXRlLCBieXRl
c10sIE5vbmUKKyAgICAgICAgXSA9IGxhbWJkYSBkLCBlLCBjLCBzOiBOb25lCisKKyAgICAgICAg
IyBzdXBwb3J0ZWQgcGFyYW1ldGVycworICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzID0gWwor
ICAgICAgICAgICAgQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAg
Q2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAgICAgQ2lwaGVyU3VpdGUu
Q0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICBdCisgICAgICAgIHNlbGYuX2NvbXBy
ZXNzaW9uX21ldGhvZHM6IExpc3RbaW50XSA9IFtDb21wcmVzc2lvbk1ldGhvZC5OVUxMXQorICAg
ICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzOiBMaXN0W2ludF0gPSBbUHNrS2V5RXhj
aGFuZ2VNb2RlLlBTS19ESEVfS0VdCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZV9hbGdvcml0aG1z
OiBMaXN0W2ludF0gPSBbCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19S
U0FFX1NIQTI1NiwKKyAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2
UjFfU0hBMjU2LAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTYsCisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAg
ICAgIF0KKyAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3VwcyA9IFtHcm91cC5TRUNQMjU2UjFd
CisgICAgICAgIGlmIGRlZmF1bHRfYmFja2VuZCgpLngyNTUxOV9zdXBwb3J0ZWQoKToKKyAgICAg
ICAgICAgIHNlbGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAg
ICAgaWYgZGVmYXVsdF9iYWNrZW5kKCkueDQ0OF9zdXBwb3J0ZWQoKToKKyAgICAgICAgICAgIHNl
bGYuX3N1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlg0NDgpCisgICAgICAgIHNlbGYuX3N1
cHBvcnRlZF92ZXJzaW9ucyA9IFtUTFNfVkVSU0lPTl8xXzNdCisKKyAgICAgICAgIyBzdGF0ZQor
ICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5rZXlfc2No
ZWR1bGU6IE9wdGlvbmFsW0tleVNjaGVkdWxlXSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNlaXZl
ZF9leHRlbnNpb25zOiBPcHRpb25hbFtMaXN0W0V4dGVuc2lvbl1dID0gTm9uZQorICAgICAgICBz
ZWxmLl9rZXlfc2NoZWR1bGVfcHNrOiBPcHRpb25hbFtLZXlTY2hlZHVsZV0gPSBOb25lCisgICAg
ICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eTogT3B0aW9uYWxbS2V5U2NoZWR1bGVQcm94eV0g
PSBOb25lCisgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbTmV3U2Vz
c2lvblRpY2tldF0gPSBOb25lCisgICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGU6IE9wdGlv
bmFsW3g1MDkuQ2VydGlmaWNhdGVdID0gTm9uZQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmlj
YXRlX2NoYWluOiBMaXN0W3g1MDkuQ2VydGlmaWNhdGVdID0gW10KKyAgICAgICAgc2VsZi5fcmVj
ZWl2ZV9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fZW5jX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBz
ZWxmLl9kZWNfa2V5OiBPcHRpb25hbFtieXRlc10gPSBOb25lCisgICAgICAgIHNlbGYuX19sb2dn
ZXIgPSBsb2dnZXIKKworICAgICAgICBzZWxmLl9lY19wcml2YXRlX2tleTogT3B0aW9uYWxbZWMu
RWxsaXB0aWNDdXJ2ZVByaXZhdGVLZXldID0gTm9uZQorICAgICAgICBzZWxmLl94MjU1MTlfcHJp
dmF0ZV9rZXk6IE9wdGlvbmFsW3gyNTUxOS5YMjU1MTlQcml2YXRlS2V5XSA9IE5vbmUKKyAgICAg
ICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleTogT3B0aW9uYWxbeDQ0OC5YNDQ4UHJpdmF0ZUtleV0g
PSBOb25lCisKKyAgICAgICAgaWYgaXNfY2xpZW50OgorICAgICAgICAgICAgc2VsZi5jbGllbnRf
cmFuZG9tID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IG9z
LnVyYW5kb20oMzIpCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuQ0xJRU5UX0hBTkRT
SEFLRV9TVEFSVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbGllbnRfcmFuZG9t
ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQorICAgICAgICAgICAg
c2VsZi5zdGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXN1bWVkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBzdWNjZXNz
ZnVsbHkgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zZXNzaW9uX3Jl
c3VtZWQKKworICAgIGRlZiBoYW5kbGVfbWVzc2FnZSgKKyAgICAgICAgc2VsZiwgaW5wdXRfZGF0
YTogYnl0ZXMsIG91dHB1dF9idWY6IERpY3RbRXBvY2gsIEJ1ZmZlcl0KKyAgICApIC0+IE5vbmU6
CisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0hBTkRTSEFLRV9TVEFSVDoK
KyAgICAgICAgICAgIHNlbGYuX2NsaWVudF9zZW5kX2hlbGxvKG91dHB1dF9idWZbRXBvY2guSU5J
VElBTF0pCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZl
ciArPSBpbnB1dF9kYXRhCisgICAgICAgIHdoaWxlIGxlbihzZWxmLl9yZWNlaXZlX2J1ZmZlcikg
Pj0gNDoKKyAgICAgICAgICAgICMgZGV0ZXJtaW5lIG1lc3NhZ2UgbGVuZ3RoCisgICAgICAgICAg
ICBtZXNzYWdlX3R5cGUgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclswXQorICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAwCisgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLl9yZWNlaXZlX2J1ZmZl
clsxOjRdOgorICAgICAgICAgICAgICAgIG1lc3NhZ2VfbGVuZ3RoID0gKG1lc3NhZ2VfbGVuZ3Ro
IDw8IDgpIHwgYgorICAgICAgICAgICAgbWVzc2FnZV9sZW5ndGggKz0gNAorCisgICAgICAgICAg
ICAjIGNoZWNrIG1lc3NhZ2UgaXMgY29tcGxldGUKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9y
ZWNlaXZlX2J1ZmZlcikgPCBtZXNzYWdlX2xlbmd0aDoKKyAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfYnVmZmVyWzptZXNzYWdlX2xlbmd0
aF0KKyAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyID0gc2VsZi5fcmVjZWl2ZV9idWZm
ZXJbbWVzc2FnZV9sZW5ndGg6XQorCisgICAgICAgICAgICBpbnB1dF9idWYgPSBCdWZmZXIoZGF0
YT1tZXNzYWdlKQorCisgICAgICAgICAgICAjIGNsaWVudCBzdGF0ZXMKKworICAgICAgICAgICAg
aWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTzoKKyAgICAg
ICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5TRVJWRVJfSEVMTE86
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfaGVsbG8oaW5wdXRfYnVm
LCBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKKyAgICAgICAgICAg
IGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJ
T05TOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLkVO
Q1JZUFRFRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGllbnRfaGFu
ZGxlX2VuY3J5cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAg
ICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlw
ZSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgY2VydGlmaWNhdGUgcmVx
dWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisg
ICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJ
Q0FURV9WRVJJRlk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFr
ZVR5cGUuQ0VSVElGSUNBVEVfVkVSSUZZOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGll
bnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1dF9idWYpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNI
RUQ6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRklO
SVNIRUQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZmluaXNoZWQo
aW5wdXRfYnVmLCBvdXRwdXRfYnVmW0Vwb2NoLkhBTkRTSEFLRV0pCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQor
ICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RToKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5ORVdf
U0VTU0lPTl9USUNLRVQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVf
bmV3X3Nlc3Npb25fdGlja2V0KGlucHV0X2J1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAg
ICAgICMgc2VydmVyIHN0YXRlcworCisgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3Rh
dGUuU0VSVkVSX0VYUEVDVF9DTElFTlRfSEVMTE86CisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExPOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZltFcG9jaC5JTklUSUFM
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guSEFORFNIQUtFXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9idWZbRXBvY2guT05FX1JUVF0sCisgICAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisgICAgICAgICAgICBlbGlmIHNlbGYu
c3RhdGUgPT0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hFRDoKKyAgICAgICAgICAgICAgICBp
ZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZb
RXBvY2guT05FX1JUVF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgQWxlcnRVbmV4cGVjdGVkTWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLnN0
YXRlID09IFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRToKKyAgICAgICAgICAgICAgICByYWlz
ZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCisKKyAgICAgICAgICAgIGFzc2VydCBpbnB1dF9idWYu
ZW9mKCkKKworICAgIGRlZiBfYnVpbGRfc2Vzc2lvbl90aWNrZXQoCisgICAgICAgIHNlbGYsIG5l
d19zZXNzaW9uX3RpY2tldDogTmV3U2Vzc2lvblRpY2tldAorICAgICkgLT4gU2Vzc2lvblRpY2tl
dDoKKyAgICAgICAgcmVzdW1wdGlvbl9tYXN0ZXJfc2VjcmV0ID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZGVyaXZlX3NlY3JldChiInJlcyBtYXN0ZXIiKQorICAgICAgICByZXN1bXB0aW9uX3NlY3JldCA9
IGhrZGZfZXhwYW5kX2xhYmVsKAorICAgICAgICAgICAgYWxnb3JpdGhtPXNlbGYua2V5X3NjaGVk
dWxlLmFsZ29yaXRobSwKKyAgICAgICAgICAgIHNlY3JldD1yZXN1bXB0aW9uX21hc3Rlcl9zZWNy
ZXQsCisgICAgICAgICAgICBsYWJlbD1iInJlc3VtcHRpb24iLAorICAgICAgICAgICAgaGFzaF92
YWx1ZT1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlLAorICAgICAgICAgICAgbGVuZ3Ro
PXNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZSwKKyAgICAgICAgKQorCisg
ICAgICAgIHRpbWVzdGFtcCA9IHV0Y25vdygpCisgICAgICAgIHJldHVybiBTZXNzaW9uVGlja2V0
KAorICAgICAgICAgICAgYWdlX2FkZD1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2FnZV9hZGQs
CisgICAgICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRl
LAorICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT1uZXdfc2Vzc2lvbl90aWNrZXQubWF4
X2Vhcmx5X2RhdGFfc2l6ZSwKKyAgICAgICAgICAgIG5vdF92YWxpZF9hZnRlcj10aW1lc3RhbXAK
KyAgICAgICAgICAgICsgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bmV3X3Nlc3Npb25fdGlj
a2V0LnRpY2tldF9saWZldGltZSksCisgICAgICAgICAgICBub3RfdmFsaWRfYmVmb3JlPXRpbWVz
dGFtcCwKKyAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5z
aW9ucywKKyAgICAgICAgICAgIHJlc3VtcHRpb25fc2VjcmV0PXJlc3VtcHRpb25fc2VjcmV0LAor
ICAgICAgICAgICAgc2VydmVyX25hbWU9c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICB0
aWNrZXQ9bmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCwKKyAgICAgICAgKQorCisgICAgZGVmIF9j
bGllbnRfc2VuZF9oZWxsbyhzZWxmLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6CisgICAg
ICAgIGtleV9zaGFyZTogTGlzdFtLZXlTaGFyZUVudHJ5XSA9IFtdCisgICAgICAgIHN1cHBvcnRl
ZF9ncm91cHM6IExpc3RbaW50XSA9IFtdCisKKyAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX3N1
cHBvcnRlZF9ncm91cHM6CisgICAgICAgICAgICBpZiBncm91cCA9PSBHcm91cC5TRUNQMjU2UjE6
CisgICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0ZV9rZXkgPSBlYy5nZW5lcmF0ZV9wcml2
YXRlX2tleSgKKyAgICAgICAgICAgICAgICAgICAgR1JPVVBfVE9fQ1VSVkVbR3JvdXAuU0VDUDI1
NlIxXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX2VjX3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBl
bmQoR3JvdXAuU0VDUDI1NlIxKQorICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YMjU1
MTk6CisgICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5ID0geDI1NTE5Llgy
NTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQorICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIGVuY29kZV9wdWJsaWNfa2V5KHNlbGYuX3gyNTUxOV9w
cml2YXRlX2tleS5wdWJsaWNfa2V5KCkpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgIHN1cHBvcnRlZF9ncm91cHMuYXBwZW5kKEdyb3VwLlgyNTUxOSkKKyAgICAgICAgICAgIGVs
aWYgZ3JvdXAgPT0gR3JvdXAuWDQ0ODoKKyAgICAgICAgICAgICAgICBzZWxmLl94NDQ4X3ByaXZh
dGVfa2V5ID0geDQ0OC5YNDQ4UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCisgICAgICAgICAgICAgICAg
a2V5X3NoYXJlLmFwcGVuZChlbmNvZGVfcHVibGljX2tleShzZWxmLl94NDQ4X3ByaXZhdGVfa2V5
LnB1YmxpY19rZXkoKSkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDQ0OCkKKyAgICAgICAgICAgIGVsaWYgZ3JvdXAgPT0gR3JvdXAuR1JFQVNFOgorICAg
ICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoKEdyb3VwLkdSRUFTRSwgYiJceDAwIikpCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3JvdXAuR1JFQVNFKQorCisg
ICAgICAgIGFzc2VydCBsZW4oa2V5X3NoYXJlKSwgIm5vIGtleSBzaGFyZSBlbnRyaWVzIgorCisg
ICAgICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCisgICAgICAgICAgICByYW5kb209c2VsZi5jbGll
bnRfcmFuZG9tLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1zZWxmLnNlc3Npb25faWQsCisgICAg
ICAgICAgICBjaXBoZXJfc3VpdGVzPVtpbnQoeCkgZm9yIHggaW4gc2VsZi5fY2lwaGVyX3N1aXRl
c10sCisgICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2RzPXNlbGYuX2NvbXByZXNzaW9uX21l
dGhvZHMsCisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBuX3Byb3RvY29scywK
KyAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCisgICAgICAgICAgICBwc2tfa2V5X2V4
Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAgICAgICAgICAgIGlm
IChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5v
dCBOb25lKQorICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fc2VydmVyX25hbWUsCisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcz1zZWxm
Ll9zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9c3Vw
cG9ydGVkX2dyb3VwcywKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9zdXBw
b3J0ZWRfdmVyc2lvbnMsCisgICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNo
YWtlX2V4dGVuc2lvbnMsCisgICAgICAgICkKKworICAgICAgICAjIFBTSworICAgICAgICBpZiBz
ZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0LmlzX3ZhbGlkOgorICAg
ICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxlKHNlbGYuc2Vzc2lv
bl90aWNrZXQuY2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisgICAgICAg
ICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJpdmVfc2VjcmV0KGIi
cmVzIGJpbmRlciIpCisgICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5fa2V5X3NjaGVk
dWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgIyB1cGRhdGUgaGVs
bG8KKyAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6
ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9kYXRhID0gVHJ1ZQor
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKKyAgICAgICAg
ICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2Vzc2lvbl90
aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRfYWdlKQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMoYmluZGVyX2xlbmd0
aCldLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHNlcmlhbGl6ZSBoZWxsbyB3aXRo
b3V0IGJpbmRlcgorICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQor
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8pCisKKyAgICAgICAg
ICAgICMgY2FsY3VsYXRlIGJpbmRlcgorICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSB0bXBfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCisg
ICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZpbmlzaGVkX3Zlcmlm
eV9kYXRhKGJpbmRlcl9rZXkpCisgICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5k
ZXJzWzBdID0gYmluZGVyCisgICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0
ZV9oYXNoKAorICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0
YToKKyAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmRl
cml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCisgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
dHJhZmZpY19rZXlfY2IoCisgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAor
ICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCisgICAgICAgICAgICAgICAgICAg
IGVhcmx5X2tleSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3VpdGVzKQorICAgICAg
ICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQorCisgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0X2J1Zik6CisgICAg
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykKKworICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCisKKyAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91dHB1dF9i
dWY6IEJ1ZmZlcikgLT4gTm9uZToKKyAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfc2VydmVyX2hl
bGxvKGlucHV0X2J1ZikKKworICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlhdGUoCisgICAg
ICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgW3BlZXJfaGVsbG8uY2lw
aGVyX3N1aXRlXSwKKyAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiVW5zdXBwb3J0
ZWQgY2lwaGVyIHN1aXRlIiksCisgICAgICAgICkKKyAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8u
Y29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMKKyAgICAgICAg
YXNzZXJ0IHBlZXJfaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaW4gc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAgIGlmIHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiAoCisgICAg
ICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayBpcyBOb25lCisgICAgICAgICAgICAg
ICAgb3IgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSAhPSAwCisgICAgICAgICAgICAgICAgb3Ig
Y2lwaGVyX3N1aXRlICE9IHNlbGYuX2tleV9zY2hlZHVsZV9wc2suY2lwaGVyX3N1aXRlCisgICAg
ICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0SWxsZWdhbFBhcmFtZXRlcgor
ICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrCisg
ICAgICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eS5z
ZWxlY3QoY2lwaGVyX3N1aXRlKQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrID0gTm9u
ZQorICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkgPSBOb25lCisKKyAgICAgICAgIyBw
ZXJmb3JtIGtleSBleGNoYW5nZQorICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVi
bGljX2tleShwZWVyX2hlbGxvLmtleV9zaGFyZSkKKyAgICAgICAgc2hhcmVkX2tleTogT3B0aW9u
YWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBpc2luc3RhbmNlKHBl
ZXJfcHVibGljX2tleSwgeDI1NTE5LlgyNTUxOVB1YmxpY0tleSkKKyAgICAgICAgICAgIGFuZCBz
ZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgKToKKyAgICAgICAg
ICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9w
dWJsaWNfa2V5KQorICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9w
dWJsaWNfa2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkpCisgICAgICAgICAgICBhbmQgc2VsZi5feDQ0
OF9wcml2YXRlX2tleSBpcyBub3QgTm9uZQorICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVk
X2tleSA9IHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQor
ICAgICAgICBlbGlmICgKKyAgICAgICAgICAgIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCBl
Yy5FbGxpcHRpY0N1cnZlUHVibGljS2V5KQorICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZh
dGVfa2V5IGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fZWNfcHJpdmF0ZV9rZXku
cHVibGljX2tleSgpLmN1cnZlLl9fY2xhc3NfXworICAgICAgICAgICAgPT0gcGVlcl9wdWJsaWNf
a2V5LmN1cnZlLl9fY2xhc3NfXworICAgICAgICApOgorICAgICAgICAgICAgc2hhcmVkX2tleSA9
IHNlbGYuX2VjX3ByaXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5
KQorICAgICAgICBhc3NlcnQgc2hhcmVkX2tleSBpcyBub3QgTm9uZQorCisgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorICAgICAgICBzZWxmLmtl
eV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCisKKyAgICAgICAgc2VsZi5fc2V0dXBfdHJh
ZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsIEVwb2NoLkhB
TkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCisgICAgICAgICkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9FTkNSWVBURURfRVhURU5TSU9OUykKKworICAgIGRl
ZiBfY2xpZW50X2hhbmRsZV9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmLCBpbnB1dF9idWY6IEJ1
ZmZlcikgLT4gTm9uZToKKyAgICAgICAgZW5jcnlwdGVkX2V4dGVuc2lvbnMgPSBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGlucHV0X2J1ZikKKworICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRl
ZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmFscG5fcHJvdG9jb2wKKyAgICAgICAgc2VsZi5lYXJs
eV9kYXRhX2FjY2VwdGVkID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMuZWFybHlfZGF0YQorICAgICAg
ICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5vdGhlcl9l
eHRlbnNpb25zCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAgIHNlbGYuYWxw
bl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmlj
X3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guSEFORFNI
QUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmtleV9zY2hlZHVs
ZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICAjIGlmIHRoZSBzZXJ2ZXIg
YWNjZXB0ZWQgb3VyIFBTSyB3ZSBhcmUgZG9uZSwgb3RoZXIgd2Ugd2FudCBpdHMgY2VydGlmaWNh
dGUKKyAgICAgICAgaWYgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkOgorICAgICAgICAgICAgc2VsZi5f
c2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNIRUQpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFKQorCisgICAgZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRp
ZmljYXRlKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgorICAgICAgICBjZXJ0aWZp
Y2F0ZSA9IHB1bGxfY2VydGlmaWNhdGUoaW5wdXRfYnVmKQorCisgICAgICAgIHNlbGYuX3BlZXJf
Y2VydGlmaWNhdGUgPSB4NTA5LmxvYWRfZGVyX3g1MDlfY2VydGlmaWNhdGUoCisgICAgICAgICAg
ICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbMF1bMF0sIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5k
KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluID0gWwor
ICAgICAgICAgICAgeDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlc1tpXVswXSwgYmFja2VuZD1kZWZhdWx0X2JhY2tl
bmQoKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGNl
cnRpZmljYXRlLmNlcnRpZmljYXRlcykpCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKKworICAgICAgICBzZWxmLl9zZXRf
c3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkpCisKKyAgICBkZWYg
X2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVy
KSAtPiBOb25lOgorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRlX3ZlcmlmeShpbnB1
dF9idWYpCisKKyAgICAgICAgYXNzZXJ0IHZlcmlmeS5hbGdvcml0aG0gaW4gc2VsZi5fc2lnbmF0
dXJlX2FsZ29yaXRobXMKKworICAgICAgICAjIGNoZWNrIHNpZ25hdHVyZQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9wZWVyX2NlcnRpZmljYXRlLnB1YmxpY19rZXkoKS52ZXJpZnko
CisgICAgICAgICAgICAgICAgdmVyaWZ5LnNpZ25hdHVyZSwKKyAgICAgICAgICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAgICAgICAgICAg
ICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXModmVyaWZ5LmFs
Z29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBJbnZhbGlkU2lnbmF0dXJl
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKworICAgICAgICAjIGNoZWNr
IGNlcnRpZmljYXRlCisgICAgICAgIGlmIHNlbGYuX3ZlcmlmeV9tb2RlICE9IHNzbC5DRVJUX05P
TkU6CisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAgICAgICAgICAgY2Fk
YXRhPXNlbGYuX2NhZGF0YSwKKyAgICAgICAgICAgICAgICBjYWZpbGU9c2VsZi5fY2FmaWxlLAor
ICAgICAgICAgICAgICAgIGNhcGF0aD1zZWxmLl9jYXBhdGgsCisgICAgICAgICAgICAgICAgY2Vy
dGlmaWNhdGU9c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBjaGFpbj1z
ZWxmLl9wZWVyX2NlcnRpZmljYXRlX2NoYWluLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1l
PXNlbGYuX3NlcnZlcl9uYW1lLAorICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQorCisgICAgICAgIHNlbGYuX3NldF9z
dGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9jbGllbnRfaGFu
ZGxlX2ZpbmlzaGVkKHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIp
IC0+IE5vbmU6CisgICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisK
KyAgICAgICAgIyBjaGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBleHBlY3RlZF92ZXJpZnlfZGF0
YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2RlY19rZXkp
CisgICAgICAgIGlmIGZpbmlzaGVkLnZlcmlmeV9kYXRhICE9IGV4cGVjdGVkX3ZlcmlmeV9kYXRh
OgorICAgICAgICAgICAgcmFpc2UgQWxlcnREZWNyeXB0RXJyb3IKKyAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCisKKyAgICAgICAgIyBwcmVwYXJl
IHRyYWZmaWMga2V5cworICAgICAgICBhc3NlcnQgc2VsZi5rZXlfc2NoZWR1bGUuZ2VuZXJhdGlv
biA9PSAyCisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKKyAgICAgICAg
c2VsZi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAorICAgICAgICAgICAgRGlyZWN0aW9uLkRF
Q1JZUFQsIEVwb2NoLk9ORV9SVFQsIGIicyBhcCB0cmFmZmljIgorICAgICAgICApCisgICAgICAg
IG5leHRfZW5jX2tleSA9IHNlbGYua2V5X3NjaGVkdWxlLmRlcml2ZV9zZWNyZXQoYiJjIGFwIHRy
YWZmaWMiKQorCisgICAgICAgICMgc2VuZCBmaW5pc2hlZAorICAgICAgICB3aXRoIHB1c2hfbWVz
c2FnZShzZWxmLmtleV9zY2hlZHVsZSwgb3V0cHV0X2J1Zik6CisgICAgICAgICAgICBwdXNoX2Zp
bmlzaGVkKAorICAgICAgICAgICAgICAgIG91dHB1dF9idWYsCisgICAgICAgICAgICAgICAgRmlu
aXNoZWQoCisgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxl
LmZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICkKKworICAgICAgICAjIGNvbW1pdCB0cmFmZmljIGtleQorICAgICAgICBz
ZWxmLl9lbmNfa2V5ID0gbmV4dF9lbmNfa2V5CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNf
a2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsCisgICAgICAgICAgICBFcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAor
ICAgICAgICAgICAgc2VsZi5fZW5jX2tleSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3Nl
dF9zdGF0ZShTdGF0ZS5DTElFTlRfUE9TVF9IQU5EU0hBS0UpCisKKyAgICBkZWYgX2NsaWVudF9o
YW5kbGVfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyKSAtPiBOb25l
OgorICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChp
bnB1dF9idWYpCisKKyAgICAgICAgIyBub3RpZnkgYXBwbGljYXRpb24KKyAgICAgICAgaWYgc2Vs
Zi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aWNrZXQg
PSBzZWxmLl9idWlsZF9zZXNzaW9uX3RpY2tldChuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAg
ICAgICBzZWxmLm5ld19zZXNzaW9uX3RpY2tldF9jYih0aWNrZXQpCisKKyAgICBkZWYgX3NlcnZl
cl9oYW5kbGVfaGVsbG8oCisgICAgICAgIHNlbGYsCisgICAgICAgIGlucHV0X2J1ZjogQnVmZmVy
LAorICAgICAgICBpbml0aWFsX2J1ZjogQnVmZmVyLAorICAgICAgICBoYW5kc2hha2VfYnVmOiBC
dWZmZXIsCisgICAgICAgIG9uZXJ0dF9idWY6IEJ1ZmZlciwKKyAgICApIC0+IE5vbmU6CisgICAg
ICAgIHBlZXJfaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhpbnB1dF9idWYpCisKKyAgICAgICAg
IyBkZXRlcm1pbmUgYXBwbGljYWJsZSBzaWduYXR1cmUgYWxnb3JpdGhtcworICAgICAgICBzaWdu
YXR1cmVfYWxnb3JpdGhtczogTGlzdFtTaWduYXR1cmVBbGdvcml0aG1dID0gW10KKyAgICAgICAg
aWYgaXNpbnN0YW5jZShzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LCByc2EuUlNBUHJpdmF0
ZUtleSk6CisgICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFsKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAg
ICAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAgICAgICBdCisgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgIHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0
ZV9rZXksIGVjLkVsbGlwdGljQ3VydmVQcml2YXRlS2V5CisgICAgICAgICkgYW5kIGlzaW5zdGFu
Y2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleS5jdXJ2ZSwgZWMuU0VDUDI1NlIxKToKKyAg
ICAgICAgICAgIHNpZ25hdHVyZV9hbGdvcml0aG1zID0gW1NpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2XQorCisgICAgICAgICMgbmVnb3RpYXRlIHBhcmFtZXRlcnMKKyAg
ICAgICAgY2lwaGVyX3N1aXRlID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fY2lwaGVy
X3N1aXRlcywKKyAgICAgICAgICAgIHBlZXJfaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAg
ICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpLAor
ICAgICAgICApCisgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZCA9IG5lZ290aWF0ZSgKKyAgICAg
ICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBwZWVyX2hlbGxv
LmNvbXByZXNzaW9uX21ldGhvZHMsCisgICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUo
Ik5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwKKyAgICAgICAgKQorICAgICAgICBw
c2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCisgICAgICAgICAgICBzZWxmLl9wc2tf
a2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMKKyAg
ICAgICAgKQorICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtID0gbmVnb3RpYXRlKAorICAgICAg
ICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBwZWVyX2hlbGxvLnNpZ25h
dHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJObyBz
dXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAorICAgICAgICApCisgICAgICAgIHN1cHBv
cnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAorICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3Zl
cnNpb25zLAorICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBwb3J0ZWRfdmVyc2lvbnMsCisgICAg
ICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZlcnNp
b24iKSwKKyAgICAgICAgKQorCisgICAgICAgICMgbmVnb3RpYXRlIEFMUE4KKyAgICAgICAgaWYg
c2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFscG5f
bmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9hbHBuX3Byb3Rv
Y29scywKKyAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFscG5fcHJvdG9jb2xzLAorICAgICAg
ICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8gY29tbW9uIEFMUE4gcHJvdG9jb2xz
IiksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuYWxwbl9jYjoKKyAgICAgICAgICAg
IHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkKKworICAgICAgICBzZWxmLmNsaWVu
dF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQorICAgICAgICBzZWxmLnNlcnZlcl9yYW5kb20g
PSBvcy51cmFuZG9tKDMyKQorICAgICAgICBzZWxmLnNlc3Npb25faWQgPSBwZWVyX2hlbGxvLnNl
c3Npb25faWQKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gcGVlcl9oZWxsby5v
dGhlcl9leHRlbnNpb25zCisKKyAgICAgICAgIyBzZWxlY3Qga2V5IHNjaGVkdWxlCisgICAgICAg
IHByZV9zaGFyZWRfa2V5ID0gTm9uZQorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLmdl
dF9zZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBza19rZXlf
ZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIHBlZXJfaGVsbG8ucHJl
X3NoYXJlZF9rZXkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5w
cmVfc2hhcmVkX2tleS5pZGVudGl0aWVzKSA9PSAxCisgICAgICAgICAgICBhbmQgbGVuKHBlZXJf
aGVsbG8ucHJlX3NoYXJlZF9rZXkuYmluZGVycykgPT0gMQorICAgICAgICApOgorICAgICAgICAg
ICAgIyBhc2sgYXBwbGljYXRpb24gdG8gZmluZCBzZXNzaW9uIHRpY2tldAorICAgICAgICAgICAg
aWRlbnRpdHkgPSBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRpZXNbMF0KKyAgICAg
ICAgICAgIHNlc3Npb25fdGlja2V0ID0gc2VsZi5nZXRfc2Vzc2lvbl90aWNrZXRfY2IoaWRlbnRp
dHlbMF0pCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgc2Vzc2lvbiB0aWNrZXQKKyAgICAgICAg
ICAgIGlmICgKKyAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQorICAg
ICAgICAgICAgICAgIGFuZCBzZXNzaW9uX3RpY2tldC5pc192YWxpZAorICAgICAgICAgICAgICAg
IGFuZCBzZXNzaW9uX3RpY2tldC5jaXBoZXJfc3VpdGUgPT0gY2lwaGVyX3N1aXRlCisgICAgICAg
ICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gS2V5U2NoZWR1bGUo
Y2lwaGVyX3N1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qo
c2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCisKKyAgICAgICAgICAgICAgICBiaW5k
ZXJfa2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChiInJlcyBiaW5kZXIiKQor
ICAgICAgICAgICAgICAgIGJpbmRlcl9sZW5ndGggPSBzZWxmLmtleV9zY2hlZHVsZS5hbGdvcml0
aG0uZGlnZXN0X3NpemUKKworICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ID0gaW5wdXRfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCisgICAgICAgICAgICAgICAgYmluZGVyID0gaW5w
dXRfYnVmLmRhdGFfc2xpY2UoCisgICAgICAgICAgICAgICAgICAgIGhhc2hfb2Zmc2V0ICsgMywg
aGFzaF9vZmZzZXQgKyAzICsgYmluZGVyX2xlbmd0aAorICAgICAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRh
X3NsaWNlKDAsIGhhc2hfb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9iaW5kZXIg
PSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShiaW5kZXJfa2V5KQorCisg
ICAgICAgICAgICAgICAgaWYgYmluZGVyICE9IGV4cGVjdGVkX2JpbmRlcjoKKyAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgQWxlcnRIYW5kc2hha2VGYWlsdXJlKCJQU0sgdmFsaWRhdGlvbiBmYWls
ZWQiKQorCisgICAgICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goCisg
ICAgICAgICAgICAgICAgICAgIGlucHV0X2J1Zi5kYXRhX3NsaWNlKGhhc2hfb2Zmc2V0LCBoYXNo
X29mZnNldCArIDMgKyBiaW5kZXJfbGVuZ3RoKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9zZXNzaW9uX3Jlc3VtZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQorICAgICAgICAgICAgICAgIGlmIHBlZXJfaGVsbG8u
ZWFybHlfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgZWFybHlfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgZSB0cmFmZmljIikKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxm
LnVwZGF0ZV90cmFmZmljX2tleV9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlv
bi5ERUNSWVBULAorICAgICAgICAgICAgICAgICAgICAgICAgRXBvY2guWkVST19SVFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBlYXJseV9rZXksCisgICAgICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgICAgIHByZV9zaGFyZWRfa2V5ID0gMAorCisgICAgICAgICMgaWYgUFNLIGlz
IG5vdCB1c2VkLCBpbml0aWFsaXplIGtleSBzY2hlZHVsZQorICAgICAgICBpZiBwcmVfc2hhcmVk
X2tleSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVs
ZShjaXBoZXJfc3VpdGUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5v
bmUpCisgICAgICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYu
ZGF0YSkKKworICAgICAgICAjIHBlcmZvcm0ga2V5IGV4Y2hhbmdlCisgICAgICAgIHB1YmxpY19r
ZXk6IFVuaW9uWworICAgICAgICAgICAgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSwgeDI1NTE5
LlgyNTUxOVB1YmxpY0tleSwgeDQ0OC5YNDQ4UHVibGljS2V5CisgICAgICAgIF0KKyAgICAgICAg
c2hhcmVkX2tleTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQorICAgICAgICBmb3Iga2V5X3NoYXJl
IGluIHBlZXJfaGVsbG8ua2V5X3NoYXJlOgorICAgICAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0g
ZGVjb2RlX3B1YmxpY19rZXkoa2V5X3NoYXJlKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShw
ZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAg
IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleSA9IHgyNTUxOS5YMjU1MTlQcml2YXRlS2V5LmdlbmVy
YXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVf
a2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94MjU1
MTlfcHJpdmF0ZV9rZXkuZXhjaGFuZ2UocGVlcl9wdWJsaWNfa2V5KQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocGVlcl9wdWJsaWNfa2V5LCB4NDQ4
Llg0NDhQdWJsaWNLZXkpOgorICAgICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkg
PSB4NDQ4Llg0NDhQcml2YXRlS2V5LmdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICBwdWJsaWNf
a2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5wdWJsaWNfa2V5KCkKKyAgICAgICAgICAgICAg
ICBzaGFyZWRfa2V5ID0gc2VsZi5feDQ0OF9wcml2YXRlX2tleS5leGNoYW5nZShwZWVyX3B1Ymxp
Y19rZXkpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShwZWVyX3B1YmxpY19rZXksIGVjLkVsbGlwdGljQ3VydmVQdWJsaWNLZXkpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2VjX3ByaXZhdGVfa2V5ID0gZWMuZ2VuZXJhdGVfcHJpdmF0ZV9rZXkoCisg
ICAgICAgICAgICAgICAgICAgIEdST1VQX1RPX0NVUlZFW2tleV9zaGFyZVswXV0oKSwgZGVmYXVs
dF9iYWNrZW5kKCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcHVibGljX2tl
eSA9IHNlbGYuX2VjX3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKQorICAgICAgICAgICAgICAgIHNo
YXJlZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJf
cHVibGljX2tleSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBhc3NlcnQgc2hhcmVk
X2tleSBpcyBub3QgTm9uZQorCisgICAgICAgICMgc2VuZCBoZWxsbworICAgICAgICBoZWxsbyA9
IFNlcnZlckhlbGxvKAorICAgICAgICAgICAgcmFuZG9tPXNlbGYuc2VydmVyX3JhbmRvbSwKKyAg
ICAgICAgICAgIHNlc3Npb25faWQ9c2VsZi5zZXNzaW9uX2lkLAorICAgICAgICAgICAgY2lwaGVy
X3N1aXRlPWNpcGhlcl9zdWl0ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1jb21w
cmVzc2lvbl9tZXRob2QsCisgICAgICAgICAgICBrZXlfc2hhcmU9ZW5jb2RlX3B1YmxpY19rZXko
cHVibGljX2tleSksCisgICAgICAgICAgICBwcmVfc2hhcmVkX2tleT1wcmVfc2hhcmVkX2tleSwK
KyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXN1cHBvcnRlZF92ZXJzaW9uLAorICAgICAg
ICApCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBpbml0aWFs
X2J1Zik6CisgICAgICAgICAgICBwdXNoX3NlcnZlcl9oZWxsbyhpbml0aWFsX2J1ZiwgaGVsbG8p
CisgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3Qoc2hhcmVkX2tleSkKKworICAgICAg
ICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rpb24u
RU5DUllQVCwgRXBvY2guSEFORFNIQUtFLCBiInMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCisgICAgICAgICAgICBEaXJlY3Rp
b24uREVDUllQVCwgRXBvY2guSEFORFNIQUtFLCBiImMgaHMgdHJhZmZpYyIKKyAgICAgICAgKQor
CisgICAgICAgICMgc2VuZCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucworICAgICAgICB3aXRoIHB1c2hf
bWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKAorICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9idWYs
CisgICAgICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICAg
ICAgYWxwbl9wcm90b2NvbD1zZWxmLmFscG5fbmVnb3RpYXRlZCwKKyAgICAgICAgICAgICAgICAg
ICAgZWFybHlfZGF0YT1zZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQsCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9c2VsZi5oYW5kc2hha2VfZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlz
IE5vbmU6CisgICAgICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUKKyAgICAgICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYua2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAg
ICAgICAgICBwdXNoX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2Vf
YnVmLAorICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfY29udGV4dD1iIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
aWZpY2F0ZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB1YmxpY19ieXRlcyhF
bmNvZGluZy5ERVIpLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g
W3NlbGYuY2VydGlmaWNhdGVdICsgc2VsZi5jZXJ0aWZpY2F0ZV9jaGFpbgorICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgc2VuZCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgICAgIHNp
Z25hdHVyZSA9IHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuc2lnbigKKyAgICAgICAgICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZS5jZXJ0aWZpY2F0ZV92ZXJpZnlfZGF0YSgKKyAgICAgICAg
ICAgICAgICAgICAgYiJUTFMgMS4zLCBzZXJ2ZXIgQ2VydGlmaWNhdGVWZXJpZnkiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAqc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXMo
c2lnbmF0dXJlX2FsZ29yaXRobSksCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHB1
c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6CisgICAgICAgICAg
ICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoCisgICAgICAgICAgICAgICAgICAgIGhhbmRz
aGFrZV9idWYsCisgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlVmVyaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtPXNpZ25hdHVyZV9hbGdvcml0aG0sIHNpZ25hdHVy
ZT1zaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisK
KyAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgIHdpdGggcHVzaF9tZXNzYWdlKHNlbGYu
a2V5X3NjaGVkdWxlLCBoYW5kc2hha2VfYnVmKToKKyAgICAgICAgICAgIHB1c2hfZmluaXNoZWQo
CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKKyAgICAgICAgICAgICAgICBGaW5pc2hl
ZCgKKyAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X2RhdGE9c2VsZi5rZXlfc2NoZWR1bGUuZmlu
aXNoZWRfdmVyaWZ5X2RhdGEoc2VsZi5fZW5jX2tleSkKKyAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgcHJlcGFyZSB0cmFmZmljIGtleXMKKyAgICAgICAgYXNz
ZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdlbmVyYXRpb24gPT0gMgorICAgICAgICBzZWxmLmtleV9z
Y2hlZHVsZS5leHRyYWN0KE5vbmUpCisgICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVj
dGlvbigKKyAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMg
YXAgdHJhZmZpYyIKKyAgICAgICAgKQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBzZWxm
LmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIiYyBhcCB0cmFmZmljIikKKworICAgICAgICAj
IGFudGljaXBhdGUgY2xpZW50J3MgRklOSVNIRUQgYXMgd2UgZG9uJ3QgdXNlIGNsaWVudCBhdXRo
CisgICAgICAgIHNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhID0gc2VsZi5rZXlfc2NoZWR1bGUu
ZmluaXNoZWRfdmVyaWZ5X2RhdGEoCisgICAgICAgICAgICBzZWxmLl9kZWNfa2V5CisgICAgICAg
ICkKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTY0KQorICAgICAgICBwdXNoX2Zpbmlz
aGVkKGJ1ZiwgRmluaXNoZWQodmVyaWZ5X2RhdGE9c2VsZi5fZXhwZWN0ZWRfdmVyaWZ5X2RhdGEp
KQorICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChidWYuZGF0YSkKKworICAg
ICAgICAjIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHRpY2tldAorICAgICAgICBpZiBzZWxmLm5ld19z
ZXNzaW9uX3RpY2tldF9jYiBpcyBub3QgTm9uZSBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vz
c2lvblRpY2tldCgKKyAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCisgICAg
ICAgICAgICAgICAgdGlja2V0X2FnZV9hZGQ9c3RydWN0LnVucGFjaygiSSIsIG9zLnVyYW5kb20o
NCkpWzBdLAorICAgICAgICAgICAgICAgIHRpY2tldF9ub25jZT1iIiIsCisgICAgICAgICAgICAg
ICAgdGlja2V0PW9zLnVyYW5kb20oNjQpLAorICAgICAgICAgICAgICAgIG1heF9lYXJseV9kYXRh
X3NpemU9c2VsZi5fbWF4X2Vhcmx5X2RhdGEsCisgICAgICAgICAgICApCisKKyAgICAgICAgICAg
ICMgc2VuZCBtZXNzc2FnZQorICAgICAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQob25l
cnR0X2J1Ziwgc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorCisgICAgICAgICAgICAjIG5vdGlm
eSBhcHBsaWNhdGlvbgorICAgICAgICAgICAgdGlja2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90
aWNrZXQoc2VsZi5fbmV3X3Nlc3Npb25fdGlja2V0KQorICAgICAgICAgICAgc2VsZi5uZXdfc2Vz
c2lvbl90aWNrZXRfY2IodGlja2V0KQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgZGVmIF9zZXJ2ZXJfaGFuZGxlX2ZpbmlzaGVk
KHNlbGYsIGlucHV0X2J1ZjogQnVmZmVyLCBvdXRwdXRfYnVmOiBCdWZmZXIpIC0+IE5vbmU6Cisg
ICAgICAgIGZpbmlzaGVkID0gcHVsbF9maW5pc2hlZChpbnB1dF9idWYpCisKKyAgICAgICAgIyBj
aGVjayB2ZXJpZnkgZGF0YQorICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBzZWxm
Ll9leHBlY3RlZF92ZXJpZnlfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVy
cm9yCisKKyAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKKyAgICAgICAgc2VsZi5fZGVjX2tl
eSA9IHNlbGYuX25leHRfZGVjX2tleQorICAgICAgICBzZWxmLl9uZXh0X2RlY19rZXkgPSBOb25l
CisgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2NiKAorICAgICAgICAgICAgRGlyZWN0
aW9uLkRFQ1JZUFQsCisgICAgICAgICAgICBFcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuY2lwaGVyX3N1aXRlLAorICAgICAgICAgICAgc2VsZi5fZGVjX2tleSwK
KyAgICAgICAgKQorCisgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5TRVJWRVJfUE9TVF9I
QU5EU0hBS0UpCisKKyAgICBkZWYgX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKKyAgICAgICAg
c2VsZiwgZGlyZWN0aW9uOiBEaXJlY3Rpb24sIGVwb2NoOiBFcG9jaCwgbGFiZWw6IGJ5dGVzCisg
ICAgKSAtPiBOb25lOgorICAgICAgICBrZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2Vj
cmV0KGxhYmVsKQorCisgICAgICAgIGlmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb24uRU5DUllQVDoK
KyAgICAgICAgICAgIHNlbGYuX2VuY19rZXkgPSBrZXkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2RlY19rZXkgPSBrZXkKKworICAgICAgICBzZWxmLnVwZGF0ZV90cmFmZmljX2tl
eV9jYigKKyAgICAgICAgICAgIGRpcmVjdGlvbiwgZXBvY2gsIHNlbGYua2V5X3NjaGVkdWxlLmNp
cGhlcl9zdWl0ZSwga2V5CisgICAgICAgICkKKworICAgIGRlZiBfc2V0X3N0YXRlKHNlbGYsIHN0
YXRlOiBTdGF0ZSkgLT4gTm9uZToKKyAgICAgICAgaWYgc2VsZi5fX2xvZ2dlcjoKKyAgICAgICAg
ICAgIHNlbGYuX19sb2dnZXIuZGVidWcoIlRMUyAlcyAtPiAlcyIsIHNlbGYuc3RhdGUsIHN0YXRl
KQorICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy93M2Mt
aW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDRiMGNlZTQ2NjEzNDJmZWU0ZWMwMzFjMDYyZjkzNTc0
NzBjNWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1p
bXBvcnQubG9nCkBAIC0wLDAgKzEsMjUgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9u
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9fX2luaXRfXy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKKy9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvX2NyeXB0by5jCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2Fib3V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZAorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy90bHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5p
dGlhbF9jbGllbnQuYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2I3MDU1Y2RhYWNhOTVlZmZiOTNlNTE5ZWNl
NWUzZWQ1M2NkNWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyODAKemNtVitiMV5AY1l7e1Iz
UDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5sO0toPTl1PWkla0IkRSUtRVliZ3djCnpvNm5Y
cC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1RT1FVzJTMGMyZWdPRVlOUXJIUiRHI01TJk5T
O1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+WnpJbyNmMVY9T3I9RHM2MldoQUJHUWFeQlpf
Ym5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYwUTxUOzZRenI4e24leilnLTA+QFd7PGRBJnAm
V3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8dUshfXYycF54fk14QHxUPzJnc3BkNnJeflpJ
Klo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdAKm4lfgp6WSZrWU8ycn1Ccyl8VXI8aTIjNk0m
cSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVKc1lNNykyMCZ1NHo3P1IKenM8JDtSdHYjTD1Y
fU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2hoUEp1VFRwbFQrKj9gdzY+c1pqc2V0c1M3Cnow
YnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRmb1NaYEh5VGkjO3FYVGErdFJAfENSJG1PYkFZ
Wnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1WkArI253eC1NNypmcHkjbyo3PG0rIWNsaj5I
WFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCReVk07N3h+dGY1ZiRfeCozTiR3WGFlQ0lxR1VU
flF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7SnxJXiV8PVZCT3FwbHJmd2ZWRDc4SWBtNzxl
XkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/I0FKJml6Tgp6clojU0U4QUFIIyVKdXApN3Rv
RmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7Vmo/NlhFQlptKVU1PEZTQUwKej1hbjJZJDBS
Q01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFpPD1iIXhTfksleGtZTGBzZlBNbG58OTh5PWNq
Cno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJGcl5MVlFQR1RecG80O1YmNDsjTWhDYFlROGhu
dzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdIdDUlNl9TKXRGOVVqN08jQTJTT0plR0VmY0I3
NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05XcUtHYEQ8Zi18anFGKCVRSU57NjElcjArSn5Y
JTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5eCnpWdkkqUF9LeGBZdmlUfHhRYEl3enArR0Fl
OFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRLckVVU3hoX31saAp6dUg/YndGViU2OXshe0ly
QkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9SKSNweiNJSy1WX0dDfCZeTn1nbkkKenRuSnMm
JnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFqZFIoS3M+e2t9P2EmfCZfMV47KEplQE0+XnV2
aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7SFkpVH4kc1NgZSRUXy1aQEp3KTF4fmkyclIk
bFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYqRi08eDFobklBNil9bWJJbGFCWG1pVHRPKGpI
KTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwlVHdsNU5TOWkmWXw5QD1HKW9NcCVsaitkUW1I
JCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhvNzwjCnp2N20kfXBRYWRnRntHKUMqKnJTbzdo
VktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6TX1Hbys/KDIqOW4xKwp6RUhwejl5YHt7ZFE8
P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZXVCEzSXwqQDRVST93JnQ/SEBjQ3N4NmUKcSl5
Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVDKjlSY1ZjTk95N0wjSTxBYjYzekh8b3cKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9pbml0
aWFsX3NlcnZlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5pdGlhbF9zZXJ2ZXIuYmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YmJiOWMwYWZmODk0NzRmZDcwMjFmNmUxYjQ0ZTA1YmExYTFjNDcKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDIwMgp6Y21WOyowNSQpP3t7UjNQMDA8ZGVYZiNlSilPaTN2eFZx
WVBxdDxHPWVzV0tQbnxBdVNWSz82eXdSNWUwVT11PDMKekZyI0VVOXV7bjxXQlAoT0U/ZXlObDcm
Rm5MQ1dhZlUwcGBHS29WTTtPV1RLc1l+IzJ9OWZDZnJEZXRGUDk8SEl8CnplYzREfmtjelJnJFV2
PWdZPX56UjliYE9VWD90X2hBeyVBZzxGVyZIKCE4ITYmP15fdXF3bElBeGZaN1Y2P0smegp6KVBK
SlI0dnxGPDdpVyp0Z0tyPTB1XkhTTlVPT0Yjdn1LUW9nJCglbkZFMXRYcn44JEl1b0UqNFF2dkcj
RmVHPmIKRWNlNzdsSk9CVXkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNl
cnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTUwYzk2MGYzNTgxNGRlZjJjMmJjNWZhZjdiZGZlYjhkYWIz
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcHljYWNlcnQucGVtCkBA
IC0wLDAgKzEsOTkgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246
IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIGNiOjJkOjgwOjk5
OjVhOjY5OjUyOjViCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9u
IENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3Qg
QmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6
IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAorICAgICAgICBTdWJqZWN0OiBDPVhZLCBPPVB5dGhv
biBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFN1Ympl
Y3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz
YUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3MiBiaXQpCisgICAg
ICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6OTc6ZWQ6NTU6NDE6
YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6CisgICAgICAgICAgICAgICAgICAgIGFjOjU4
OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgorICAgICAgICAgICAgICAg
ICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4ZTpkZjoKKyAgICAg
ICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6YzY6ZWM6NzA6YjA6
M2E6CisgICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2OjRjOmM0OmE3Ojgx
OmU3OmI2OjI0OjY4OgorICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZTozNTowNzoyZjphMDo1
YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKKyAgICAgICAgICAgICAgICAgICAgMTE6ZmU6Y2E6MWE6
M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6CisgICAgICAgICAgICAgICAgICAgIGUx
OmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgorICAgICAgICAgICAg
ICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1ZjozNjpmMjo3ODoKKyAg
ICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6MWI6OGQ6ZmE6MjU6
ZmU6ZDQ6CisgICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVmOmVhOjE3OmNiOjU0
OmM4OjI3Ojk5OjgwOmNiOgorICAgICAgICAgICAgICAgICAgICAzYzo0NTpmMToyYzo1MjoxYzpk
ZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKKyAgICAgICAgICAgICAgICAgICAgNTc6NzM6MWI6
NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6CisgICAgICAgICAgICAgICAgICAg
IDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4OgorICAgICAgICAg
ICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5ZTo5NTpjZTo0YzoK
KyAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6MzU6NTc6Y2U6MDI6
ZGM6ZWM6Y2E6CisgICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5OmNiOjE2OjIwOjE1
OjAzOjI0OjYxOjZjOmY0OjdhOgorICAgICAgICAgICAgICAgICAgICBmYzpiNjo0ODplNTo1OTox
MDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKKyAgICAgICAgICAgICAgICAgICAgZTk6Njg6
OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6CisgICAgICAgICAgICAgICAg
ICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBiOjY4OgorICAgICAg
ICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoyODo5NDo5Nzo3MTo1
NDoKKyAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6YzU6ZGM6MWI6OWU6
ODk6NmQ6MDk6YWM6CisgICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNiOjZkOmYxOjk3OjMx
OmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgorICAgICAgICAgICAgICAgICAgICBhMDplMDpkYzo2OTox
MTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKKyAgICAgICAgICAgICAgICAgICAgYTc6
MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6CisgICAgICAgICAgICAg
ICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCisgICAgICAgICAgICAgICAgRXhw
b25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAg
ICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBE
RDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoyODpGMjozNTpCNjo0
OAorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAg
ICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6MjE6Q0E6NkY6OUE6
MDg6Mjg6RjI6MzU6QjY6NDgKKworICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRz
OiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MjU2V2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIDMzOjZhOjU0OmQzOjZiOmMwOmQ3OjAxOjVm
OjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgorICAgICAgICAgYjc6MTg6ZTk6YjA6MWU6NGE6
YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6CisgICAgICAgICAxNToxMzplNDpk
ZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToKKyAgICAgICAgIDdk
OjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3OjgwOjlhOjYzOgorICAg
ICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6Yjc6NGQ6YTc6ODQ6
Y2E6CisgICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpkZjpkNzo5OTphYjox
YjplZTo4YjozMDoKKyAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFlOjk3OmJmOmU0Ojdi
OmZkOjBmOmE3OmI0Ojg1Ojc5OgorICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6YmY6MWY6Mjk6NDU6
MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6CisgICAgICAgICBlYzoyYjo0Mjo2YTplNTpiYjpj
ODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKKyAgICAgICAgIGI4OmJmOmQ1OmY3
OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3OgorICAgICAgICAgODc6
YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6NDM6ZDM6CisgICAg
ICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3NjpmNzo3NjoxZjpiMzpm
ZToKKyAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVlOjA4OmQ4OmY0OmZm
OjVhOmRjOjI1OgorICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6NTA6NzM6NzY6MjU6
MzU6ZmM6YjY6MjU6MjY6MTU6CisgICAgICAgICBjYjplYjpjNDoyYjo2MTowYzoxYzplNzplZToy
ZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKKyAgICAgICAgIGQyOmFmOmRlOmU0OjFiOjI0OjE0
OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgorICAgICAgICAgMGE6ZTA6OGQ6ZDc6
NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6CisgICAgICAgICBjNDo5
Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTowMTowNToKKyAgICAg
ICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3OmFjOmViOjRiOjdk
OgorICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6Yzc6Zjk6NmE6NDA6
ZTE6Yjg6NjQ6CisgICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3ZDo1ODo3ZDo2NDo3
OTplNTphNDowOTphYzoxZToKKyAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4CistLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KK01JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NT
cUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9i
MjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05o
TFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgKK05ESXpNVFphTUUw
eEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1Jt
OTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZ
SktvWkkKK2h2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJG
aHo0OGFXenlzZnVBajEKK25VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNj
TEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KKzRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2Fw
WDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKK3J5WDQrRUozTFcxZk52SjRIbjFLaDJo
amJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKKzNSOVJSU0JRSGw2clYz
TWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKK3JGT2Vs
YzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1
LzcKK2NWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRr
YzE0elNpVWwzRlUKKys4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0Rj
YVJIdEtyUmtFQkV3aXc2d3B4RFkKK2lzV3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFB
Qm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKK05MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZS
MGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKK0RBWURWUjBUQkFVd0F3RUIv
ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRndaTm0KK2tGRFF0eGpw
c0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMK
K1NZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNi
N29zd3pQZjgKKzU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0
Q2F1Vzd5UFFLU2dnS2pGelkKK2ZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdr
ZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKK0RFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEky
UFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKK0syRU1IT2Z1THhlYjdQRFVvWVRu
MHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkKK1Q0c0R4SmFmN1B0
SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKK2p1
VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCistLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvcmV0cnkuYmluIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjNiZDQ5ODFhNGE2NTk2
YjUwZWM2NWVkYmQ1MWIwYjRjYTNiZWU0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjUKemNt
Vi1AMER9TVV7e1IzUDI8ZyNBKndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtEQSUrTF4qbWopfGZk
dzZINXJHCnpHSU14WV5oVlJGLTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhSUT1fREVYKnJNUz1Q
Mnc5N2tGIWg+Y1dnKW5wKQpmbkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+bXFwTFphQ1g5fWha
PwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3Nob3J0X2hlYWRlci5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc2hvcnRfaGVhZGVyLmJpbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yODM2ODNkMmQ1YjU1NWQ5YjAyMzE5OTkwMmZjZWU1N2QxYjU5MzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4KQEAgLTAs
MCArMSBAQAorXfRap7WcDhrW5mj1MEzU/R+zeZMnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zc2xfY2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3MTI3YTRiMDI1YWEyMzMyMzE5
M2YwNmNmMTc3M2E1NjBlMzgxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9zc2xfY2VydC5wZW0KQEAgLTAsMCArMSwzNCBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0t
LS0tCitNSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxhYVZKY01BMEdDU3FHU0liM0RRRUJDd1VB
TUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21V
Z1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3
MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4CitOREl6TVRaYU1GOHhDekFKQmdOVkJBWVRB
bGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqCitNQ0VHQTFVRUNnd2FVSGww
YUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2CitZMkZzYUc5
emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUo4b0x6ZEI3Mzlr
CitZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1UN0RsamNaTEJMeTdPcW5rTHBCNXRuTTgy
NTZEd2RpaFBBCiszemxuZkV6VGZyOUREMHFGQlcySDVjTUNvejdYMTdrb2VSaHpHRGQzZGtqVWVC
alh2UjVxUm9zRzh3TTNsUXVnCitVN0FpelkrM0F6YWoxeU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4
NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCitwaS9UdGhacU81RFVSSllvK01kZ1pPY3krN2pF
ak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RIVFdBCitoWDhMSXF6ME9CbWg0d2VRcG00
K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083bjlmV3lTbWY5UVpDCitXWXhIQUZwQlFz
NnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BXK01Bb1N4Rm52L3JOekV6STZiNHpVCitO
c3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtxRVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUy
M1hkK2YzCitFTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldI
WXE1VFFJREFRQUJvNElCCit3RENDQWJ3d0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRH
QTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCitIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFV
SEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRFCitGZ1FVaitvZDR6TmNBQmF6aTI5cmI5
Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnViUk5MbzNkU0hLCitiNW9JS1BJMXRraWhV
YVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltCitkSGRo
Y21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNvSUpB
TXN0CitnSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIzTUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gw
ZEhBNkx5OTBaWE4wCitZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhK
MExtTmxjakExQmdnckJnRUZCUWN3CitBWVlwYUhSMGNEb3ZMM1JsYzNSallTNXdlWFJvYjI1MFpY
TjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECitWUjBmQkR3d09qQTRvRGFnTklZeWFIUjBj
RG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRDOTBaWE4wCitZMkV2Y21WMmIyTmhkR2x2
Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBQ2YxakZrUTlNYm5LQUMvCit1bzE3RXdQ
eEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2NoRENwVjdrQ09oWitmUjdzS0trMjJaSFNZ
CitvSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNKdmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJ
UEFEbVpacUNiCitpSk1YNGxvdGVUVmZsMWQ0eEsvMW1WNkdxOU1SclJxaURmcFNFTG4rdjUzT005
bUdzcHdXK05aMUNJcmJDdVcwCitLeFovdFBrcW44UFNkOWZOWlI3MGJCN3JXYm53cmwra0g4eEt4
TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCitJYURlbnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkz
bFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVpUkFyCisrVUZHVHp3QXR5ZlRaU1FvRnlN
bU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUxTklCMUsvQ1JJN2dJCitBWTY1Q2xUVSt6
UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFneWVnNGRXY1ZFclY0YWVUUEIxQVV2CitT
dFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dTUGlJNENJWThMd29tT29pdz09CistLS0t
LUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9j
aGFpbi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwYWQ0MTY4N2UyYWZkN2EwZjk0ZDE1NjFhYmRlYTFlNWRk
NDM2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRo
X2NoYWluLnBlbQpAQCAtMCwwICsxLDYwIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K
K01JSUY4VENDQkZtZ0F3SUJBZ0lKQU1zdGdKbGFhVkpjTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4
Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05
MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9E
QTRNamt4TkRJek1UWmFGdzB5T0RBM01EY3gKK05ESXpNVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpN
UmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1
SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERD
Q0FhSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSjhvTHpkQjczOWsKK1l4
WmlGdWtCRkdJcHlqcVlrajBJMDE1cC9zRHoxTVQ3RGxqY1pMQkx5N09xbmtMcEI1dG5NODI1NkR3
ZGloUEEKKzN6bG5mRXpUZnI5REQwcUZCVzJINWNNQ296N1gxN2tvZVJoekdEZDNka2pVZUJqWHZS
NXFSb3NHOHdNM2xRdWcKK1U3QWl6WSszQXphajF5TjNtWjlLNWEyMGpyNThLcWlueitYeHg2c2Iy
SmZZWWZmMm5lSmJCYWhObTVpZDBBRDIKK3BpL1R0aFpxTzVEVVJKWW8rTWRnWk9jeSs3akVqT0pz
TFdaZDNZenE3OGlNMDdxRGpicElvVnBFTlpDVEhUV0EKK2hYOExJcXowT0JtaDR3ZVFwbTQrcGxV
N0U0cjREODJ1YXVvY1d3OGl5dXpuQ1R0QUJXTzduOWZXeVNtZjlRWkMKK1dZeEhBRnBCUXM2elVW
cUFEN25oRmRUcXBROWJSaWFFbmpFNEhpQWNjUFcrTUFvU3hGbnYvck56RXpJNmI0elUKK05zcEZN
ZmcxYU5WYW1kanhkcFVaMUdHMU9rZjB5UEp5a3FFWDRQWmwzTGExQmUycTdZWjF3eWRSNTIzWGQr
ZjMKK0VPNC9nK2ltRVRTS244Z3lDZjZSdmliMTc1TDRyMldWMUNYUUg3Z0Z3WllDb2Q2V0hZcTVU
UUlEQVFBQm80SUIKK3dEQ0NBYnd3RkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BNEdBMVVk
RHdFQi93UUVBd0lGb0RBZEJnTlYKK0hTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJ
d0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEUKK0ZnUVVqK29kNHpOY0FCYXppMjlyYjlOTXk3
WExmRlV3ZlFZRFZSMGpCSFl3ZElBVTNiL0sydWJSTkxvM2RTSEsKK2I1b0lLUEkxdGtpaFVhUlBN
RTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW0KK2RIZGhjbVVn
Um05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY29JSkFNc3QK
K2dKbGFhVkpiTUlHREJnZ3JCZ0VGQlFjQkFRUjNNSFV3UEFZSUt3WUJCUVVITUFLR01HaDBkSEE2
THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNCNVkyRmpaWEowTG1O
bGNqQTFCZ2dyQmdFRkJRY3cKK0FZWXBhSFIwY0RvdkwzUmxjM1JqWVM1d2VYUm9iMjUwWlhOMExt
NWxkQzkwWlhOMFkyRXZiMk56Y0M4d1F3WUQKK1ZSMGZCRHd3T2pBNG9EYWdOSVl5YUhSMGNEb3ZM
M1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjAKK1kyRXZjbVYyYjJOaGRHbHZiaTVq
Y213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFDZjFqRmtROU1ibktBQy8KK3VvMTdFd1B4SEta
ZnN3WlZwQ0s1MjdMVlJyMzNETjFEYnJSNVpXY2hEQ3BWN2tDT2haK2ZSN3NLS2syMlpIU1kKK29I
K3UzUEV1MjBKM0dPQjFpeVkxYU1OQjdXdklkM0p2YXBwZFZXa0MvVnBVeUZmTHNHVURGdUlQQURt
WlpxQ2IKK2lKTVg0bG90ZVRWZmwxZDR4Sy8xbVY2R3E5TVJyUnFpRGZwU0VMbit2NTNPTTltR3Nw
d1crTloxQ0lyYkN1VzAKK0t4Wi90UGtxbjhQU2Q5Zk5aUjcwYkI3cldibndybCtrSDh4S3hMbDZx
ZGxyTW1nNzRXV3doTGVReEs3KzlEZFAKK0lhRGVuenF4NWN3V0JHWS9DMEhjUWowZ1B1eTNsU3Mx
Vi9xK2Y3WTZ1c3BQV1A1MVBnaUpMSXl3WFM3NWlSQXIKKytVRkdUendBdHlmVFpTUW9GeU1tTVVM
cWZrNlQ1SHRvVk1xZlJ2UHZLK21GRExXRXN0VTFOSUIxSy9DUkk3Z0kKK0FZNjVDbFRVK3pSUy90
bEY4SUE3dHNGdmd0RWY4anNJOWthbWxpZGhTMWd5ZWc0ZFdjVkVyVjRhZVRQQjFBVXYKK1N0UFlR
a0tOTStOanl0V0hsNXROdUJvRE5Mc2MwZ0kvV1NQaUk0Q0lZOEx3b21Pb2l3PT0KKy0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRWJUQ0NB
dFdnQXdJQkFnSUpBTXN0Z0psYWFWSmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FMHhDekFKQmdOVgor
QkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZi
aUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4T0RBNE1qa3hOREl6
TVRaYUZ3MHlPREE0TWpZeAorTkRJek1UWmFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FhSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dHUEFEQ0NB
WW9DZ2dHQkFKZnRWVUc2TmhlVjIzRWMwK0ZockZoejQ4YVd6eXNmdUFqMQorblV0THh6RDJ1QXV6
VW5LZ3U4bE5PNDdmSW80QlY0SEprblBNQU1ic2NMQTZGMERCMy9LTU5rekVwNEhudGlSbworNHFC
K05RY3ZvRnY1UlViM0h2QkdFZjdLR2p4UThTYXBYNXdpblBoQjRkOVBFcFVaTDF5UUFSZHVmajU5
eitrSgorcnlYNCtFSjNMVzFmTnZKNEhuMUtoMmhqYkFaeEc0MzZKZjdVMC9XbEY3SHY2aGZMVk1n
bm1ZRExQRVh4TEZJYworM1I5UlJTQlFIbDZyVjNNYlFYaVczb1NrZXQyUE1JVTJXSGwyb05KaHlC
dXBsSmxqeHU3NEZMKzBVbFl4bC9ycgorckZPZWxjNU14RnBLdDhvREoxczFWODRDM096S2FmaUtX
am5MRmlBVkF5UmhiUFI2L0xaSTVWa1FYRW5RSTUvNworY1Y0NjZXaWZOSEtBSjdZL1RMSFoyMk4v
WjJoS2JoSDQ2TUQwV2hZNVV3dG8zbmY2UmVmNGtjMTR6U2lVbDNGVQorKzgvd045N0pKc1hjRzU2
SmJRbXN5RVJ4eTIzeGx6SFZUQ0F6djNWS29PRGNhUkh0S3JSa0VCRXdpdzZ3cHhEWQoraXNXcUc4
Z21paVhuWnArbGFob3ZmRitEeG5oUEh3SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVUzYi9LMnVi
UgorTkxvM2RTSEtiNW9JS1BJMXRrZ3dId1lEVlIwakJCZ3dGb0FVM2IvSzJ1YlJOTG8zZFNIS2I1
b0lLUEkxdGtndworREFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FZRUFN
MnBVMDJ2QTF3RmZuZlFGd1pObQora0ZEUXR4anBzQjVLb0xiYWRwT3ZoTnV0RlZReEZSUGszbjVP
RE5VSkhEUTF0dVZNMW05bGZUSmY2L3lwYXdmMworU1lMbGdYNEhnSnBqK0N6RFFMeVAxQ3JhUHRI
dUNMZE5wNFRLOUQraG1FVytzUVZwNTkvWG1hc2I3b3N3elBmOAorNTlRTEY2Nlh2K1I3L1ErbnRJ
VjU0MW5pRm9lL0h5bEZMQ09UZHI3QWh4M2U3Q3RDYXVXN3lQUUtTZ2dLakZ6WQorZlUzUnVML1Y5
eW50a3RHVUJPZzFCbGQvTENPWGg2VTFqU2JUR2tmeUZ0Zlp4dFFmSTBQVEpwazV5aUQwY1NOdgor
REVwMmR2ZDJIN1ArdjBldy9DcFdnZUhTM2U0STJQVC9XdHdsWVlxUkFybUdIUEpRYzNZbE5meTJK
U1lWeSt2RQorSzJFTUhPZnVMeGViN1BEVW9ZVG4wcS9lNUJza0ZLY0JoK09yS1ZoR29ObkFDdUNO
MTFuVEcvaFVJRDU0cGFYSQorVDRzRHhKYWY3UHRIejNZdGpXVTBKNy82cmdFRml2T1NDdDJKYkpl
aHgrZGdVZWVzNjB0OUxMaGx5ZjVkYWtoVgoranVUSCtXcEE0YmhrUmVtMVdTbWxYODk5V0gxa2Vl
V2tDYXdlZG1VOWxNUm8KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfa2V5
LnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iOGZkZWMxMDFjOGQ2NzRjNTIwN2QxMDBmNzRiNmE3MjQyNGNiNTI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCkBAIC0w
LDAgKzEsNDAgQEAKKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorTUlJRy9RSUJBREFOQmdr
cWhraUc5dzBCQVFFRkFBU0NCdWN3Z2diakFnRUFBb0lCZ1FDZktDODNRZTkvWkdNVworWWhicEFS
UmlLY282bUpJOUNOTmVhZjdBODlURSt3NVkzR1N3Uzh1enFwNUM2UWViWnpQTnVlZzhIWW9Ud044
NQorWjN4TTAzNi9RdzlLaFFWdGgrWERBcU0rMTllNUtIa1ljeGczZDNaSTFIZ1kxNzBlYWthTEJ2
TURONVVMb0ZPdworSXMyUHR3TTJvOWNqZDVtZlN1V3R0STYrZkNxb3A4L2w4Y2VyRzlpWDJHSDM5
cDNpV3dXb1RadVluZEFBOXFZdgorMDdZV2FqdVExRVNXS1BqSFlHVG5NdnU0eEl6aWJDMW1YZDJN
NnUvSWpOTzZnNDI2U0tGYVJEV1FreDAxZ0lWLworQ3lLczlEZ1pvZU1Ia0tadVBxWlZPeE9LK0Ev
TnJtcnFIRnNQSXNyczV3azdRQVZqdTUvWDFza3BuL1VHUWxtTQorUndCYVFVTE9zMUZhZ0ErNTRS
WFU2cVVQVzBZbWhKNHhPQjRnSEhEMXZqQUtFc1JaNy82emN4TXlPbStNMURiSworUlRINE5XalZX
cG5ZOFhhVkdkUmh0VHBIOU1qeWNwS2hGK0QyWmR5MnRRWHRxdTJHZGNNblVlZHQxM2ZuOXhEdQor
UDRQb3BoRTBpcC9JTWduK2tiNG05ZStTK0s5bGxkUWwwQis0QmNHV0FxSGVsaDJLdVUwQ0F3RUFB
UUtDQVlFQQorbEtpV0lZam15UmpkTEtVR1BURVM5dldOdk5tUmpvelYwUlEwTGNvU2JNTUxEWmtl
TzBVd3lXcU9WSFVROCtpYgorakljZkVqZU5KeEk1N29ab3BlSE9PNXZKaHBObEZIK2c3bHRpVzJx
RVJxQTFLODhsU1htOTlCenc2Rk5xaENSRQorSzh1YjVOOWZ5ZkpBK1A0by94bTBXSzhFWGs1eUlV
VjE3cC85ekpKeHpnS2d2MmpzVlRpM1FHMk9aR3ZuNE91ZworQnlvbU1aRUdIa0JEemR4ejhjL2NQ
MVRsazFSRnV3U2dld3MxNzhrMnhxN0FZU00vczBZbUhpN2IvUlN2cHRYNgorMXY4UDhrWE5VZTRB
d1RhTnlybHZGMmx3SWFkWjhoMWhBN3RDRTJuNDRiN2E3S2ZoQWt3Y2JyMVQ1OWlvWWg2UAorenhz
eVBUNjc4dUQ1MWRidEQvRFhKQ2NvZWVGT2I4dXprUjJLTmNyblF6WnBDSm5ScTRHcDV5Ynh3c3h4
dXpwcgorZ3owZ2JObGh1V3RFN0VvU3ptSUs5dCtXVFM3SU0yQ3ZaeW1kNi9PQWgxRnV3NkFRaFNw
NjRYUnAzT2ZNTUFBQworSWUyRVB0S2o0aXNsV0dUOFZvVWp1UllHbWRSaDRkdUFIMWRraUFYT1dB
M1I3eTVhMS95L2lFOEtFOEJ0eG9jQgorQW9IQkFNOGFpVVJncHUxRnMwT3F6Nml6ZWM3S1NMTDNs
OGhtVytNS1VPZmsvWWJuZzZGclRGc0w1WXR6UitBcAord1c0d3dXbm5JS0VjMUpMaVo3ZzhhZ1JF
VEs4aHI1UHdGWFVuL0dTV0MwU01zYXpMSlRveVNRUzVMT1YwdEx6Swora0ozanROVTd0bmxER05r
Q0hUSFNvVkwyVC84dCtJa1pJL2g1WjZ3amxZUHZVMkl1MG5WSVh0aUcrYWx2NEE2TQorSHJoOWw1
b3I0bWpCNnJHblZYZVlvaExrQ202cy9XOTdhaFZ4TE1jRWRic0JvMXBybTJKcUduU29pUi90RUZD
LworUUhRbmJRS0J3UURFdTdrVzBZZzlzWjg5UXRZdFZRMVlwaXhGWk9SYVVlUklSTG5wRXMxdzdM
MW1DYk9aMkxqOQorSkh4c0gwNWNZQWM3SEpmUHd3eHYzKzNhR0FJQy9kZnU0VlN3RUZ0YXRBelVw
emxoektTNStIUUNXQjRKVU5OVQorTVEzK0Z3SzJ4UVg0UGg4dCtPenJGaVljSzJnMEFuNVV4V01h
MkhXSUFXVU9oblRPeWRBVnNvSDZ5UDMxY1ZtNAorMGh4b0FCQ3dmbGFOTE5HalJVeWZCcExUQWNO
dS9ZdGNFK0tSRXk3WUFBZ1hYcmhSU080WHBMc1NYd0xuTFQ3LworWU9rb0JXRGNUV0VDZ2NCUFdu
U1VEWkNJUTNlZml0aE1aSkJjaXFkMlkyWDE5RHBxOE8zMUhJbUQ0anRPWTBWNworY1VCL3dTa2VI
QUd3amQvZUN5QTJlMHg4QjJJRWRxbU1mdnIrODZKSnhla0MzZEpZWENGdkg1V0loc0g1M1lDYQor
M2JUMUtsV0NMUDlpYi9nKzU4VlFDMFIvQ2M5VDRzZkxlUE5IN0Q1WmtaZDF3bGJWMzBDUHIraThL
d0theTZNRAoreGh2dEx4K2prMDdHRStFOXdtamJDTW83VGNseXJMb1ZFT2xxWk1BcXNoZ0FwVCtw
OWV5Q1BldHdYdURId2EzbgorV3hoSGNsY1pDVjdSNHJVQ2djQWtkR1NueGN2cElyRFBPVU5Xd3h2
bUFXVFN0dzlaYlROUDhPeENOQ205Y3lEbAorZDRiQVMxaDhEL2ErVWs3QzcwaG51N1NsMnc3QzdF
dTJ6aHdSVWRoaGUzK2w0R0lOUEsvajk5aTZOcUdQbEdwcQoreE1sTUVKNFlTNzY4QnFlS0ZwZzBs
ODVQUm9FZ1RzcGhEZW9ST1NVUHNFUGRCWjlCeElCbFlLVGtiS0VTWkRHUgordHd6WUhsangxbjFO
Q0RZUGZsbXJiMUtwWG40RU9jT2JOZ2h3MktxcU5VVVdmT2VCUHdCQTFGeHpNNEJyQVN0cAorREJJ
TnBHUzREYzBtalZpVmVnRUNnY0EzaFR0bTgyWGR4UVhqOUxRbWIvRTNsS3gvN0g4N1hJT2VOTW12
all1WgoraVM5d0tya0YrdTQydnlvRHhjS01DbnhQNTA1NndwZFNUNHA1NnIrU0J3VlRIY2MzbEdC
U0djTVRJZndSWHJqMwordGhPQTJvdXIybjRvdU5Jc1l5VGxjc1FTemlmd21wUm1WTVJQeGw5ZllW
ZEVXVWdCODNGZ0hUMEQ5YXZ2Wm5GOQordDlPY2NuR0pYU2hBSVpJQkFEaFZqL0p3RzRGYmFYNDJO
aWpENVBOcFZMazFZMTdPVjBJNTc2VDlTZmFRb0JqSgorYUgxTS96QzRhVmFTMERZQi9HeHE3djg9
CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9hc3luY2lvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDllY2Q1Zjc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQpAQCAtMCww
ICsxLDM3NCBAQAoraW1wb3J0IGFzeW5jaW8KK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHJhbmRv
bQoraW1wb3J0IHNvY2tldAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgor
ZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCitmcm9tIGNyeXB0b2dyYXBoeS5oYXpt
YXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgorCitmcm9tIGFpb3F1aWMuYXN5bmNp
by5jbGllbnQgaW1wb3J0IGNvbm5lY3QKK2Zyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGlt
cG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sCitmcm9tIGFpb3F1aWMuYXN5bmNpby5zZXJ2ZXIg
aW1wb3J0IHNlcnZlCitmcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWlj
Q29uZmlndXJhdGlvbgorZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2Vy
CisKK2Zyb20gLnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VS
VkVSX0NFUlRGSUxFLAorICAgIFNFUlZFUl9LRVlGSUxFLAorICAgIFNLSVBfVEVTVFMsCisgICAg
Z2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgcnVuLAorKQorCityZWFsX3NlbmR0byA9IHNv
Y2tldC5zb2NrZXQuc2VuZHRvCisKKworZGVmIHNlbmR0b193aXRoX2xvc3Moc2VsZiwgZGF0YSwg
YWRkcj1Ob25lKToKKyAgICAiIiIKKyAgICBTaW11bGF0ZSAyNSUgcGFja2V0IGxvc3MuCisgICAg
IiIiCisgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC4yNToKKyAgICAgICAgcmVhbF9zZW5kdG8o
c2VsZiwgZGF0YSwgYWRkcikKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgaGFuZGxlX3N0cmVhbShyZWFkZXIsIHdy
aXRlcik6CisgICAgYXN5bmMgZGVmIHNlcnZlKCk6CisgICAgICAgIGRhdGEgPSBhd2FpdCByZWFk
ZXIucmVhZCgpCisgICAgICAgIHdyaXRlci53cml0ZShieXRlcyhyZXZlcnNlZChkYXRhKSkpCisg
ICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQorCisgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKHNl
cnZlKCkpCisKKworY2xhc3MgSGlnaExldmVsVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5zZXJ2ZXJf
aG9zdCA9ICJsb2NhbGhvc3QiCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSA0NDMzCisKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQorCisgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGhvc3Q9Tm9uZSwKKyAgICAgICAgcG9ydD1O
b25lLAorICAgICAgICBjYWRhdGE9Tm9uZSwKKyAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRG
SUxFLAorICAgICAgICBjb25maWd1cmF0aW9uPU5vbmUsCisgICAgICAgIHJlcXVlc3Q9YiJwaW5n
IiwKKyAgICAgICAgKiprd2FyZ3MKKyAgICApOgorICAgICAgICBpZiBob3N0IGlzIE5vbmU6Cisg
ICAgICAgICAgICBob3N0ID0gc2VsZi5zZXJ2ZXJfaG9zdAorICAgICAgICBpZiBwb3J0IGlzIE5v
bmU6CisgICAgICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXJfcG9ydAorICAgICAgICBpZiBjb25m
aWd1cmF0aW9uIGlzIE5vbmU6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZp
Z3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJp
ZnlfbG9jYXRpb25zKGNhZGF0YT1jYWRhdGEsIGNhZmlsZT1jYWZpbGUpCisgICAgICAgIGFzeW5j
IHdpdGggY29ubmVjdChob3N0LCBwb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sICoq
a3dhcmdzKSBhcyBjbGllbnQ6CisgICAgICAgICAgICAjIHdhaXRpbmcgZm9yIGNvbm5lY3RlZCB3
aGVuIGNvbm5lY3RlZCByZXR1cm5zIGltbWVkaWF0ZWx5CisgICAgICAgICAgICBhd2FpdCBjbGll
bnQud2FpdF9jb25uZWN0ZWQoKQorCisgICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0
IGNsaWVudC5jcmVhdGVfc3RyZWFtKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3Jp
dGVyLmNhbl93cml0ZV9lb2YoKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
d3JpdGVyLmdldF9leHRyYV9pbmZvKCJzdHJlYW1faWQiKSwgMCkKKworICAgICAgICAgICAgd3Jp
dGVyLndyaXRlKHJlcXVlc3QpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKKworICAg
ICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCByZWFkZXIucmVhZCgpCisKKyAgICAgICAgIyB3YWl0
aW5nIGZvciBjbG9zZWQgd2hlbiBjbG9zZWQgcmV0dXJucyBpbW1lZGlhdGVseQorICAgICAgICBh
d2FpdCBjbGllbnQud2FpdF9jbG9zZWQoKQorCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisg
ICAgYXN5bmMgZGVmIHJ1bl9zZXJ2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBob3N0PSI6
OiIsICoqa3dhcmdzKToKKyAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgorICAgICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkK
KyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklM
RSwgU0VSVkVSX0tFWUZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyID0gYXdhaXQgc2VydmUoCisg
ICAgICAgICAgICBob3N0PWhvc3QsCisgICAgICAgICAgICBwb3J0PXNlbGYuc2VydmVyX3BvcnQs
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBz
dHJlYW1faGFuZGxlcj1oYW5kbGVfc3RyZWFtLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAg
ICAgKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rf
YW5kX3NlcnZlKHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAg
IHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
aXB2NChzZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihob3N0PSIwLjAuMC4wIikp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0PSIxMjcuMC4wLjEi
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIEBz
a2lwSWYoImlwdjYiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBJUHY2IHRlc3RzIikKKyAgICBk
ZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV9pcHY2KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5y
dW5fc2VydmVyKGhvc3Q9Ijo6IikpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2Ns
aWVudChob3N0PSI6OjEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJn
bmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2NlcnRpZmljYXRlKHNl
bGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19jZXJ0
aWZpY2F0ZShjb21tb25fbmFtZT0ibG9jYWxob3N0IikKKworICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9zZXJ2ZXIoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNh
dGUsIHByaXZhdGVfa2V5PXByaXZhdGVfa2V5LCBpc19jbGllbnQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2UgPSBy
dW4oCisgICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY2FkYXRh
PWNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisg
ICAgICAgICAgICAgICAgY2FmaWxlPU5vbmUsCisgICAgICAgICAgICApCisgICAgICAgICkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVmIHRl
c3RfY29ubmVjdF9hbmRfc2VydmVfbGFyZ2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBU
cmFuc2ZlciBlbm91Z2ggZGF0YSB0byByZXF1aXJlIHJhaXNpbmcgTUFYX0RBVEEgYW5kIE1BWF9T
VFJFQU1fREFUQS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogMjA5NzE1Mgor
ICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNl
bGYucnVuX2NsaWVudChyZXF1ZXN0PWRhdGEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBkYXRhKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aG91dF9j
bGllbnRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRf
d2l0aG91dF9jb25maWcoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChzZWxmLnNl
cnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAg
YXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKKyAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAg
ICAgcnVuKHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xp
ZW50X3dyaXRlbGluZXMoKToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFz
eW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxm
LnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICkg
YXMgY2xpZW50OgorICAgICAgICAgICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50
LmNyZWF0ZV9zdHJlYW0oKQorICAgICAgICAgICAgICAgIGFzc2VydCB3cml0ZXIuY2FuX3dyaXRl
X2VvZigpIGlzIFRydWUKKworICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZWxpbmVzKFtiIjAx
MjM0NTY3IiwgYiI4OTAxMjM0NSJdKQorICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9lb2Yo
KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKCkKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAgICAgIHJlc3BvbnNlID0gcnVuKHJ1bl9jbGll
bnRfd3JpdGVsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiIjU0
MzIxMDk4NzY1NDMyMTAiKQorCisgICAgQHNraXBJZigibG9zcyIgaW4gU0tJUF9URVNUUywgIlNr
aXBwaW5nIGxvc3MgdGVzdHMiKQorICAgIEBwYXRjaCgic29ja2V0LnNvY2tldC5zZW5kdG8iLCBu
ZXdfY2FsbGFibGU9bGFtYmRhOiBzZW5kdG9fd2l0aF9sb3NzKQorICAgIGRlZiB0ZXN0X2Nvbm5l
Y3RfYW5kX3NlcnZlX3dpdGhfcGFja2V0X2xvc3Moc2VsZiwgbW9ja19zZW5kdG8pOgorICAgICAg
ICAiIiIKKyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1Y2Nlc3MgYW5kIHN0
cmVhbSBkYXRhIGlzIHN1Y2Nlc3NmdWxseSBzZW50CisgICAgICAgIGFuZCByZWNlaXZlZCBpbiB0
aGUgcHJlc2VuY2Ugb2YgcGFja2V0IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGluIGVhY2ggZGlyZWN0
aW9uKS4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBiIloiICogNjU1MzYKKworICAgICAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAg
aXNfY2xpZW50PUZhbHNlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCkKKyAgICAgICAgKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjb25maWd1cmF0
aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKSkKKworICAgICAgICByZXNwb25zZSA9IHJ1bigKKyAg
ICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PVF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwg
cXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0PWRhdGEsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXNwb25zZSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5k
X3NlcnZlX3dpdGhfc2Vzc2lvbl90aWNrZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VydmVy
CisgICAgICAgIGNsaWVudF90aWNrZXQgPSBOb25lCisgICAgICAgIHN0b3JlID0gU2Vzc2lvblRp
Y2tldFN0b3JlKCkKKworICAgICAgICBkZWYgc2F2ZV90aWNrZXQodCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdAorCisg
ICAgICAgIHJ1bigKKyAgICAgICAgICAgIHNlbGYucnVuX3NlcnZlcigKKyAgICAgICAgICAgICAg
ICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90aWNrZXRfaGFuZGxl
cj1zdG9yZS5hZGQKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgICMgZmlyc3Qg
cmVxdWVzdAorICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoc2Vzc2lvbl90
aWNrZXRfaGFuZGxlcj1zYXZlX3RpY2tldCksKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLCBiImduaXAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNsaWVudF90
aWNrZXQpCisKKyAgICAgICAgIyBzZWNvbmQgcmVxdWVzdAorICAgICAgICBydW4oCisgICAgICAg
ICAgICBzZWxmLnJ1bl9jbGllbnQoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsIHNlc3Np
b25fdGlja2V0PWNsaWVudF90aWNrZXQKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
KQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIp
CisKKyAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeShz
ZWxmKToKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICByZXNwb25zZSA9
IHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZSwgYiJnbmlwIikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3RhdGVs
ZXNzX3JldHJ5X2JhZF9vcmlnaW5hbF9jb25uZWN0aW9uX2lkKHNlbGYpOgorICAgICAgICAiIiIK
KyAgICAgICAgSWYgdGhlIHNlcnZlcidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZl
IHRoZSBjb3JyZWN0CisgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgdGhlIGNvbm5lY3Rp
b24gZmFpbC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9wcm90b2NvbCgqYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcHJvdG9jb2wgPSBRdWljQ29ubmVjdGlvblByb3Rv
Y29sKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9vcmlnaW5h
bF9jb25uZWN0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgcmV0dXJuIHByb3RvY29sCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29s
LCBzdGF0ZWxlc3NfcmV0cnk9VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Q29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKKwor
ICAgIEBwYXRjaCgiYWlvcXVpYy5xdWljLnJldHJ5LlF1aWNSZXRyeVRva2VuSGFuZGxlci52YWxp
ZGF0ZV90b2tlbiIpCisgICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxl
c3NfcmV0cnlfYmFkKHNlbGYsIG1vY2tfdmFsaWRhdGUpOgorICAgICAgICBtb2NrX3ZhbGlkYXRl
LnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcigiRGVjcnlwdGlvbiBmYWlsZWQuIikKKworICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKKyAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAor
ICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90aW1lb3V0
PTQuMCksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9hbmRfc2VydmVfd2l0aF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYpOgorICAgICAg
ICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisKKyAgICAgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290
aWF0aW9uCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGll
bnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dlcigpKQorICAgICAgICBjb25maWd1cmF0aW9u
LnN1cHBvcnRlZF92ZXJzaW9ucy5pbnNlcnQoMCwgMHgxQTJBM0E0QSkKKworICAgICAgICByZXNw
b25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKKworICAgIGRlZiB0
ZXN0X2Nvbm5lY3RfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhDb25uZWN0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNl
bGYucnVuX2NsaWVudCgKKyAgICAgICAgICAgICAgICAgICAgcG9ydD00NDAwLAorICAgICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVl
LCBpZGxlX3RpbWVvdXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisg
ICAgZGVmIHRlc3RfY29ubmVjdF90aW1lb3V0X25vX3dhaXRfY29ubmVjdGVkKHNlbGYpOgorICAg
ICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9ub193YWl0X2Nvbm5lY3RlZChjb25maWd1cmF0aW9u
KToKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgIDQ0MDAsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAorICAgICAgICAgICAg
ICAgIHdhaXRfY29ubmVjdGVkPUZhbHNlLAorICAgICAgICAgICAgKSBhcyBjbGllbnQ6CisgICAg
ICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKKyAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAg
ICAgICBydW5fY2xpZW50X25vX3dhaXRfY29ubmVjdGVkKAorICAgICAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVv
dXQ9NSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
Y29ubmVjdF9sb2NhbF9wb3J0KHNlbGYpOgorICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkp
CisgICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChsb2NhbF9wb3J0PTM0NTYp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQorCisgICAgZGVm
IHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBydW5f
Y2xpZW50X2NoYW5nZV9jb25uZWN0aW9uX2lkKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisg
ICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2
ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisg
ICAgICAgICAgICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGlu
ZygpCisgICAgICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKKyAgICAg
ICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpKQor
CisgICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9j
bGllbnRfa2V5X3VwZGF0ZSgpOgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2Fk
X3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorICAgICAgICAgICAg
YXN5bmMgd2l0aCBjb25uZWN0KAorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNl
bGYuc2VydmVyX3BvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgorICAgICAgICAgICAg
KSBhcyBjbGllbnQ6CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQorICAgICAg
ICAgICAgICAgIGNsaWVudC5yZXF1ZXN0X2tleV91cGRhdGUoKQorICAgICAgICAgICAgICAgIGF3
YWl0IGNsaWVudC5waW5nKCkKKworICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCisgICAg
ICAgIHJ1bihydW5fY2xpZW50X2tleV91cGRhdGUoKSkKKworICAgIGRlZiB0ZXN0X3Bpbmcoc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3BpbmcoKToKKyAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FD
RVJURklMRSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKKyAgICAgICAgICAgICAg
ICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICkgYXMgY2xpZW50OgorICAgICAgICAgICAgICAgIGF3YWl0
IGNsaWVudC5waW5nKCkKKyAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCisKKyAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVuX2NsaWVudF9waW5n
KCkpCisKKyAgICBkZWYgdGVzdF9waW5nX3BhcmFsbGVsKHNlbGYpOgorICAgICAgICBhc3luYyBk
ZWYgcnVuX2NsaWVudF9waW5nKCk6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisgICAgICAgICAg
ICBhc3luYyB3aXRoIGNvbm5lY3QoCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwg
c2VsZi5zZXJ2ZXJfcG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCisgICAgICAgICAg
ICApIGFzIGNsaWVudDoKKyAgICAgICAgICAgICAgICBjb3JvcyA9IFtjbGllbnQucGluZygpIGZv
ciB4IGluIHJhbmdlKDE2KV0KKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLmdhdGhlcigq
Y29yb3MpCisKKyAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBydW4ocnVu
X2NsaWVudF9waW5nKCkpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2ZXNfZ2FyYmFnZShz
ZWxmKToKKyAgICAgICAgc2VydmVyID0gcnVuKHNlbGYucnVuX3NlcnZlcigpKQorICAgICAgICBz
ZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJjMDAwMDAwMDAwODAi
KSwgKCIxLjIuMy40IiwgMTIzNCkpCisgICAgICAgIHNlcnZlci5jbG9zZSgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNmRiZjUxMTI0Y2Ri
NjMyYWRhMzBiNjZjM2YyZTQ0NmVmYmMyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQpAQCAtMCwwICsxLDM4IEBACitpbXBvcnQg
YXN5bmNpbworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLmFz
eW5jaW8uY29tcGF0IGltcG9ydCBfYXN5bmNjb250ZXh0bWFuYWdlcgorCitmcm9tIC51dGlscyBp
bXBvcnQgcnVuCisKKworQF9hc3luY2NvbnRleHRtYW5hZ2VyCithc3luYyBkZWYgc29tZV9jb250
ZXh0KCk6CisgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwKQorICAgIHlpZWxkCisgICAgYXdhaXQg
YXN5bmNpby5zbGVlcCgwKQorCisKK2NsYXNzIEFzeW5jaW9Db21wYXRUZXN0KFRlc3RDYXNlKToK
KyAgICBkZWYgdGVzdF9vayhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAg
ICAgICAgIGFzeW5jIHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcGFzcwor
CisgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2Vs
Zik6CisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIHNv
bWVfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29tZSBy
ZWFzb24iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToK
KyAgICAgICAgICAgIHJ1bih0ZXN0KCkpCisKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb25f
dHlwZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGFzeW5j
IHdpdGggc29tZV9jb250ZXh0KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAg
ICAgICAgcnVuKHRlc3QoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1
ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MWRiYzQ0ZDBkZDI2ZjFlZjY4NTY4MjRkNTViYjg4MDk5Mjg4NzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAgKzEsMjAxIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgQnVmZmVyV3JpdGVFcnJvciwgc2l6ZV91aW50X3Zh
cgorCisKK2NsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RhdGFfc2xp
Y2Uoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4
MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhX3NsaWNl
KDAsIDgpLCBiIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YV9zbGljZSgxLCAzKSwgYiJceDA3XHgwNiIpCisKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAg
YnVmLmRhdGFfc2xpY2UoLTEsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVm
ZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDkpCisgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1
Zi5kYXRhX3NsaWNlKDEsIDApCisKKyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzKHNlbGYpOgorICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAx
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF9ieXRlcygzKSwgYiJceDA4XHgw
N1x4MDYiKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc19uZWdhdGl2ZShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIp
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAg
ICAgICAgIGJ1Zi5wdWxsX2J5dGVzKC0xKQorCisgICAgZGVmIHRlc3RfcHVsbF9ieXRlc190cnVu
Y2F0ZWQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0wKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYu
cHVsbF9ieXRlcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCisK
KyAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3plcm8oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wdWxs
X3VpbnQ4KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4
MDVceDA0XHgwM1x4MDJceDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91
aW50OCgpLCAweDA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEpCisK
KyAgICBkZWYgdGVzdF9wdWxsX3VpbnQ4X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ4KCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50MTYoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAz
XHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQxNigpLCAw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMikKKworICAgIGRl
ZiB0ZXN0X3B1bGxfdWludDE2X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQxNigpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludDMyKHNlbGYpOgor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJc
eDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYucHVsbF91aW50MzIoKSwgMHgwODA3
MDYwNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgZGVm
IHRlc3RfcHVsbF91aW50MzJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9MykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJy
b3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludDMyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYudGVsbCgpLCAwKQorCisgICAgZGVmIHRlc3RfcHVsbF91aW50NjQoc2VsZik6Cisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4
MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ2NCgpLCAweDA4MDcw
NjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgOCkKKwor
ICAgIGRlZiB0ZXN0X3B1bGxfdWludDY0X3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVy
UmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnQ2NCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfYnl0ZXMoc2Vs
Zik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhiIlx4MDhceDA3XHgwNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGIiXHgwOFx4MDdceDA2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAz
KQorCisgICAgZGVmIHRlc3RfcHVzaF9ieXRlc190cnVuY2F0ZWQoc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlcldyaXRlRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiJceDA4XHgwN1x4
MDZceDA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAg
ZGVmIHRlc3RfcHVzaF9ieXRlc196ZXJvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9MykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYiIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludDgoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihjYXBhY2l0eT0xKQorICAgICAgICBidWYucHVzaF91aW50OCgweDA4KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBiIlx4MDgiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1Zi50ZWxsKCksIDEpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQxNihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTIpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNigw
eDA4MDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgwOFx4MDciKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIpCisKKyAgICBkZWYgdGVzdF9w
dXNoX3VpbnQzMihzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTQpCisgICAg
ICAgIGJ1Zi5wdXNoX3VpbnQzMigweDA4MDcwNjA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhLCBiIlx4MDhceDA3XHgwNlx4MDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDQpCisKKyAgICBkZWYgdGVzdF9wdXNoX3VpbnQ2NChzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIGJ1Zi5wdXNoX3VpbnQ2NCgweDA4
MDcwNjA1MDQwMzAyMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi50ZWxsKCksIDgpCisKKyAgICBkZWYgdGVzdF9zZWVrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1iIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWYu
ZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKKworICAgICAg
ICBidWYuc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA0KQorCisgICAgICAgIGJ1Zi5zZWVrKDgp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLnRlbGwoKSwgOCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2VlaygtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEJ1ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBidWYuc2Vlayg5KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDgpCisKKworY2xhc3MgVWludFZhclRlc3QoVGVzdENh
c2UpOgorICAgIGRlZiByb3VuZHRyaXAoc2VsZiwgZGF0YSwgdmFsdWUpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3Vp
bnRfdmFyKCksIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIGxl
bihkYXRhKSkKKworICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9OCkKKyAgICAgICAgYnVm
LnB1c2hfdWludF92YXIodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEs
IGRhdGEpCisKKyAgICBkZWYgdGVzdF91aW50X3ZhcihzZWxmKToKKyAgICAgICAgIyAxIGJ5dGUK
KyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDAwIiwgMCkKKyAgICAgICAgc2VsZi5yb3VuZHRy
aXAoYiJceDAxIiwgMSkKKyAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDI1IiwgMzcpCisgICAg
ICAgIHNlbGYucm91bmR0cmlwKGIiXHgzZiIsIDYzKQorCisgICAgICAgICMgMiBieXRlcworICAg
ICAgICBzZWxmLnJvdW5kdHJpcChiIlx4N2JceGJkIiwgMTUyOTMpCisgICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHg3Zlx4ZmYiLCAxNjM4MykKKworICAgICAgICAjIDQgYnl0ZXMKKyAgICAgICAg
c2VsZi5yb3VuZHRyaXAoYiJceDlkXHg3Zlx4M2VceDdkIiwgNDk0ODc4MzMzKQorICAgICAgICBz
ZWxmLnJvdW5kdHJpcChiIlx4YmZceGZmXHhmZlx4ZmYiLCAxMDczNzQxODIzKQorCisgICAgICAg
ICMgOCBieXRlcworICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4YzJceDE5XHg3Y1x4NWVceGZm
XHgxNFx4ZThceDhjIiwgMTUxMjg4ODA5OTQxOTUyNjUyKQorICAgICAgICBzZWxmLnJvdW5kdHJp
cChiIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwgNDYxMTY4NjAxODQyNzM4Nzkw
MykKKworICAgIGRlZiB0ZXN0X3B1bGxfdWludF92YXJfdHJ1bmNhdGVkKHNlbGYpOgorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyhCdWZmZXJSZWFkRXJyb3IpOgorICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQorCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHhmZiIpCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKKyAgICAgICAgICAgIGJ1Zi5wdWxsX3VpbnRfdmFy
KCkKKworICAgIGRlZiB0ZXN0X3B1c2hfdWludF92YXJfdG9vX2JpZyhzZWxmKToKKyAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBidWYucHVzaF91aW50X3Zhcig0NjExNjg2
MDE4NDI3Mzg3OTA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
KGNtLmV4Y2VwdGlvbiksICJJbnRlZ2VyIGlzIHRvbyBiaWcgZm9yIGEgdmFyaWFibGUtbGVuZ3Ro
IGludGVnZXIiCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NpemVfdWludF92YXIoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3Zhcig2MyksIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxNjM4MyksIDIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2l6ZV91aW50X3ZhcigxMDczNzQxODIzKSwgNCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDMpLCA4KQorCisgICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAg
ICBzaXplX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgIkludGVnZXIgaXMgdG9vIGJp
ZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2Nvbm5lY3Rpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYxYTVjZGM1OGY1OWM2ZTk5OGIwZDM5
NDlhYTc0Zjc3ZDIxNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxODAwIEBACitpbXBvcnQgYXN5bmNpbworaW1w
b3J0IGJpbmFzY2lpCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitpbXBvcnQgdGltZQor
ZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljIGltcG9ydCB0bHMK
K2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBlbmNvZGVf
dWludF92YXIKK2Zyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKK2Zyb20gYWlvcXVpYy5x
dWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCitmcm9tIGFpb3F1aWMu
cXVpYy5jb25uZWN0aW9uIGltcG9ydCAoCisgICAgUXVpY0Nvbm5lY3Rpb24sCisgICAgUXVpY0Nv
bm5lY3Rpb25FcnJvciwKKyAgICBRdWljTmV0d29ya1BhdGgsCisgICAgUXVpY1JlY2VpdmVDb250
ZXh0LAorKQorZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9t
IGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKK2Zyb20gYWlvcXVpYy5xdWlj
LnBhY2tldCBpbXBvcnQgKAorICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgUXVpY0Vycm9y
Q29kZSwKKyAgICBRdWljRnJhbWVUeXBlLAorICAgIGVuY29kZV9xdWljX3JldHJ5LAorICAgIGVu
Y29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24sCispCitmcm9tIGFpb3F1aWMucXVpYy5wYWNr
ZXRfYnVpbGRlciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNrZXRCdWlsZGVyCitm
cm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBhY2VyCisKK2Zyb20g
LnV0aWxzIGltcG9ydCAoCisgICAgU0VSVkVSX0NBQ0VSVEZJTEUsCisgICAgU0VSVkVSX0NFUlRG
SUxFLAorICAgIFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAorICAgIFNFUlZFUl9LRVlGSUxF
LAorKQorCitDTElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCisKK1NFUlZFUl9BRERSID0g
KCIyLjMuNC41IiwgNDQzMykKKworCitjbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQorCisgICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQpOgorICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0
aWNrZXQKKworICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgorICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKKworCitkZWYgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQsIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRUKToKKyAgICByZXR1cm4gUXVpY1JlY2VpdmVD
b250ZXh0KAorICAgICAgICBlcG9jaD1lcG9jaCwKKyAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Lmhv
c3RfY2lkLAorICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3JrX3BhdGhzWzBdLAor
ICAgICAgICBxdWljX2xvZ2dlcl9mcmFtZXM9W10sCisgICAgICAgIHRpbWU9YXN5bmNpby5nZXRf
ZXZlbnRfbG9vcCgpLnRpbWUoKSwKKyAgICApCisKKworZGVmIGNvbnN1bWVfZXZlbnRzKGNvbm5l
Y3Rpb24pOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV2ZW50ID0gY29ubmVjdGlvbi5uZXh0
X2V2ZW50KCkKKyAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisK
KworZGVmIGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVudF9vcHRpb25zKToK
KyAgICBjbGllbnQgPSBRdWljQ29ubmVjdGlvbigKKyAgICAgICAgY29uZmlndXJhdGlvbj1RdWlj
Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1R
dWljTG9nZ2VyKCksICoqY2xpZW50X29wdGlvbnMKKyAgICAgICAgKQorICAgICkKKyAgICBjbGll
bnQuX2Fja19kZWxheSA9IDAKKworICAgICMga2ljay1vZmYgaGFuZHNoYWtlCisgICAgY2xpZW50
LmNvbm5lY3QoU0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgIHJldHVybiBjbGllbnQKKworCitAY29udGV4dGxp
Yi5jb250ZXh0bWFuYWdlcgorZGVmIGNsaWVudF9hbmRfc2VydmVyKAorICAgIGNsaWVudF9rd2Fy
Z3M9e30sCisgICAgY2xpZW50X29wdGlvbnM9e30sCisgICAgY2xpZW50X3BhdGNoPWxhbWJkYSB4
OiBOb25lLAorICAgIGhhbmRzaGFrZT1UcnVlLAorICAgIHNlcnZlcl9rd2FyZ3M9e30sCisgICAg
c2VydmVyX2NlcnRmaWxlPVNFUlZFUl9DRVJURklMRSwKKyAgICBzZXJ2ZXJfa2V5ZmlsZT1TRVJW
RVJfS0VZRklMRSwKKyAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKKyAgICBzZXJ2ZXJfcGF0Y2g9bGFt
YmRhIHg6IE5vbmUsCispOgorICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oCisgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCks
ICoqY2xpZW50X29wdGlvbnMKKyAgICApCisgICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92
ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKKworICAgIGNsaWVudCA9
IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24sICoqY2xp
ZW50X2t3YXJncykKKyAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tl
dF9wYWNpbmcoY2xpZW50KQorICAgIGNsaWVudF9wYXRjaChjbGllbnQpCisKKyAgICBzZXJ2ZXJf
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAorICAgICAgICBpc19jbGllbnQ9RmFs
c2UsIHF1aWNfbG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9ucworICAgICkKKyAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVyX2NlcnRmaWxlLCBz
ZXJ2ZXJfa2V5ZmlsZSkKKworICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRp
b249c2VydmVyX2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKKyAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKyAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVyKQorICAgIHNlcnZl
cl9wYXRjaChzZXJ2ZXIpCisKKyAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCisgICAgaWYgaGFuZHNo
YWtlOgorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgp
KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlcikKKworICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCisKKyAgICAjIGNsb3NlCisg
ICAgY2xpZW50LmNsb3NlKCkKKyAgICBzZXJ2ZXIuY2xvc2UoKQorCisKK2RlZiBkaXNhYmxlX3Bh
Y2tldF9wYWNpbmcoY29ubmVjdGlvbik6CisgICAgY2xhc3MgRHVtbXlQYWNrZXRQYWNlcihRdWlj
UGFja2V0UGFjZXIpOgorICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93KToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBjb25uZWN0aW9uLl9sb3NzLl9wYWNlciA9IER1
bW15UGFja2V0UGFjZXIoKQorCisKK2RlZiBzZXF1ZW5jZV9udW1iZXJzKGNvbm5lY3Rpb25faWRz
KToKKyAgICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2VfbnVtYmVyLCBjb25u
ZWN0aW9uX2lkcykpCisKKworZGVmIGRyb3Aoc2VuZGVyKToKKyAgICAiIiIKKyAgICBEcm9wIGRh
dGFncmFtcyBmcm9tIGBzZW5kZXJgLgorICAgICIiIgorICAgIHJldHVybiBsZW4oc2VuZGVyLmRh
dGFncmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCisKKworZGVmIHJvdW5kdHJpcChzZW5k
ZXIsIHJlY2VpdmVyKToKKyAgICAiIiIKKyAgICBTZW5kIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJg
IHRvIGByZWNlaXZlcmAgYW5kIGJhY2suCisgICAgIiIiCisgICAgcmV0dXJuICh0cmFuc2Zlcihz
ZW5kZXIsIHJlY2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikpCisKKworZGVmIHRy
YW5zZmVyKHNlbmRlciwgcmVjZWl2ZXIpOgorICAgICIiIgorICAgIFNlbmQgZGF0YWdyYW1zIGZy
b20gYHNlbmRlcmAgdG8gYHJlY2VpdmVyYC4KKyAgICAiIiIKKyAgICBkYXRhZ3JhbXMgPSAwCisg
ICAgZnJvbV9hZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGllbnQgZWxzZSBTRVJW
RVJfQUREUgorICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9dGltZS50aW1lKCkpOgorICAgICAgICBkYXRhZ3JhbXMgKz0gMQorICAgICAgICByZWNlaXZl
ci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUudGltZSgpKQorICAg
IHJldHVybiBkYXRhZ3JhbXMKKworCitjbGFzcyBRdWljQ29ubmVjdGlvblRlc3QoVGVzdENhc2Up
OgorICAgIGRlZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIsIGFscG5fcHJv
dG9jb2w9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBoYW5kc2hha2UgY29tcGxl
dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290
aWF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxw
bl9wcm90b2NvbCkKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90
b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9kYXRhX2FjY2VwdGVk
LCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNzaW9uX3Jlc3VtZWQs
IEZhbHNlKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElz
c3VlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKKwor
ICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAg
ICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
eXBlKGV2ZW50KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQorICAgICAgICBmb3Ig
aSBpbiByYW5nZSg3KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIu
bmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Qo
c2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAg
ICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQorCisg
ICAgICAgICAgICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJsZSBjb25uZWN0aW9u
IElEcyBmb3IgdGhlIHBlZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsx
LCAyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNlcnZlci5fcGVlcl9j
aWRfYXZhaWxhYmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgY2xp
ZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50
LCBzZXJ2ZXIpLCAxKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9u
IHRoZSBjbGllbnQgc2lkZQorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihjbGllbnQu
Z2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbGll
bnQubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2Vz
IG9uIHRoZSBzZXJ2ZXIgc2lkZQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcihzZXJ2
ZXIuZ2V0X3RpbWVyKCkpCisgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3Jf
Y29kZSwgUXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZnJhbWVfdHlwZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQucmVhc29uX3BocmFzZSwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShz
ZXJ2ZXIubmV4dF9ldmVudCgpKQorCisgICAgICAgICAgICAjIGNoZWNrIGNsaWVudCBsb2cKKyAg
ICAgICAgICAgIGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50
b19kaWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2xpZW50X2xvZ1si
dHJhY2VzIl1bMF1bImV2ZW50cyJdKSwgMjApCisKKyAgICAgICAgICAgICMgY2hlY2sgc2VydmVy
IGxvZworICAgICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1cmF0aW9uLnF1aWNf
bG9nZ2VyLnRvX2RpY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzZXJ2
ZXJfbG9nWyJ0cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKKworICAgIGRlZiB0ZXN0X2Nvbm5l
Y3Rfd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAg
ICAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsiaDMtMjUiLCAiaHEt
MjUiXX0sCisgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogWyJo
cS0yNSJdfSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBj
aGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFr
ZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPSJocS0yNSIpCisK
KyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6CisgICAgICAgIGNs
aWVudF9sb2dfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VydmVyX2xvZ19maWxlID0g
aW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50X2xvZ19maWxlfSwK
KyAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IHNlcnZlcl9s
b2dfZmlsZX0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMg
Y2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hh
a2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNlcnZlcikKKworICAgICAgICAgICAgIyBjaGVjayBz
ZWNyZXRzIHdlcmUgbG9nZ2VkCisgICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50X2xvZ19m
aWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXJfbG9nX2ZpbGUu
Z2V0dmFsdWUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfbG9nLCBzZXJ2
ZXJfbG9nKQorICAgICAgICAgICAgbGFiZWxzID0gW10KKyAgICAgICAgICAgIGZvciBsaW5lIGlu
IGNsaWVudF9sb2cuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQo
bGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBsYWJlbHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAi
UVVJQ19TRVJWRVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCisgICAgICAgICAgICAg
ICAgICAgICJRVUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlFVSUNfQ0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2VydF9jaGFpbihzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2VydGZpbGU9U0VSVkVS
X0NFUlRGSUxFX1dJVEhfQ0hBSU4pIGFzICgKKyAgICAgICAgICAgIGNsaWVudCwKKyAgICAgICAg
ICAgIHNlcnZlciwKKyAgICAgICAgKToKKyAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNv
bXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwg
c2VydmVyPXNlcnZlcikKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzEoc2VsZik6
CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGV2
ZW4gaW4gdGhlIGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgZGVmIGRhdGFncmFtX3NpemVzKGl0ZW1zKToKKyAgICAgICAgICAgIHJldHVybiBbbGVuKHhb
MF0pIGZvciB4IGluIGl0ZW1zXQorCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVp
Y0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisgICAgICAgIGNsaWVudF9jb25maWd1cmF0
aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCisKKyAg
ICAgICAgY2xpZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmln
dXJhdGlvbikKKyAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCisKKyAgICAgICAgc2VydmVy
X2NvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCisgICAg
ICAgIHNlcnZlcl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUs
IFNFUlZFUl9LRVlGSUxFKQorCisgICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb249c2VydmVyX2NvbmZpZ3VyYXRpb24pCisgICAgICAgIHNlcnZlci5fYWNrX2RlbGF5
ID0gMAorCisgICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKKyAgICAgICAgbm93ID0gMC4w
CisgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQorCisgICAgICAgICMgSU5JVElBTCBp
cyBsb3N0CisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBjbGllbnQuaGFuZGxlX3RpbWVyKG5v
dz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAzLjApCisKKyAg
ICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFL
RQorICAgICAgICBub3cgPSAxLjEKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFn
cmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlcnZlci5nZXRfdGltZXIoKSwgMi4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihz
ZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMu
UHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4
dF9ldmVudCgpKQorCisgICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBub3JtYWxseQorICAg
ICAgICBub3cgPSAxLjIKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3Jh
bShpdGVtc1sxXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gY2xp
ZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMzc2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RF
cXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkhhbmRzaGFrZUNvbXBsZXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVu
dC5uZXh0X2V2ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQorCisgICAgICAgIG5v
dyA9IDEuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJ
RU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19z
ZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRl
bXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3Rp
bWVyKCksIDEuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Mu
c3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29t
cGxldGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQo
KSksIGV2ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAg
IyBpZGxlIHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzIoc2VsZik6
CisgICAgICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4g
W2xlbih4WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29u
ZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxF
KQorCisgICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50
X2NvbmZpZ3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAg
IHNlcnZlcl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNl
KQorICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NF
UlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fj
a19kZWxheSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5v
dyA9IDAuMAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNl
cnZlciByZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFIGJ1dCBzZWNv
bmQgZGF0YWdyYW0gaXMgbG9zdAorICAgICAgICBub3cgPSAwLjEKKyAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAg
ICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwNjJdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2Vu
dF9wYWNrZXRzKSwgMikKKworICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2VpdmVzIGZpcnN0IGRh
dGFncmFtIGFuZCBzZW5kcyBBQ0tTCisgICAgICAgIG5vdyA9IDAuMgorICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCisgICAg
ICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQorICAgICAgICBzZWxm
LmFzc2VydEFsbW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29s
TmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQo
KSkKKworICAgICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORworICAgICAgICBub3cg
PSBjbGllbnQuZ2V0X3RpbWVyKCkgICMgfjAuNjI1CisgICAgICAgIGNsaWVudC5oYW5kbGVfdGlt
ZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93
PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0
NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAx
Ljg3NSkKKworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNjYXJkcyBJTklUSUFM
IGFuZCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC43MjUKKyAgICAgICAgc2VydmVyLnJlY2Vp
dmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBp
dGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFj
a2V0cyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKKworICAgICAgICAjIEFDS3MgYXJlIGxvc3QsIHNlcnZl
ciByZXRyYW5zbWl0cyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gc2VydmVyLmdldF90aW1lcigp
CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAgICAgaXRlbXMgPSBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQorICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNr
ZXRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkK
KworICAgICAgICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKKyAgICAgICAgbm93ID0g
MS4yCisgICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJf
QUREUiwgbm93PW5vdykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1b
MF0sIFNFUlZFUl9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3Np
emVzKGl0ZW1zKSwgWzMyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50
LmdldF90aW1lcigpLCAyLjQ1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50
Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25J
ZElzc3VlZCkKKworICAgICAgICBub3cgPSAxLjMKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2
ZW50cy5Db25uZWN0aW9uSWRJc3N1ZWQpCisKKyAgICAgICAgbm93ID0gMS40CisgICAgICAgIGNs
aWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykK
KyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxl
IHRpbWVvdXQKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMoc2VsZik6CisgICAg
ICAgIGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6CisgICAgICAgICAgICByZXR1cm4gW2xlbih4
WzBdKSBmb3IgeCBpbiBpdGVtc10KKworICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1
aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjbGllbnRfY29uZmlndXJh
dGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQorCisg
ICAgICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZp
Z3VyYXRpb24pCisgICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAorCisgICAgICAgIHNlcnZl
cl9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAg
ICAgICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxF
LCBTRVJWRVJfS0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQorICAgICAgICBzZXJ2ZXIuX2Fja19kZWxh
eSA9IDAKKworICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCisgICAgICAgIG5vdyA9IDAu
MAorICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKKyAgICAgICAg
aXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKKworICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCisgICAgICAgIG5vdyA9
IDAuMQorICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5U
X0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5k
KG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMp
LCBbMTI4MCwgMTA2Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1l
cigpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFj
ZXNbMF0uc2VudF9wYWNrZXRzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2Vy
dmVyLl9sb3NzLnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQorCisgICAgICAgICMgY2xpZW50
IHJlY2VpdmVzIElOSVRJQUwgKyBIQU5EU0hBS0UKKyAgICAgICAgbm93ID0gMC4yCisgICAgICAg
IGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5v
dykKKyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9B
RERSLCBub3c9bm93KQorICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChu
b3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwg
WzM3Nl0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigp
LCAwLjgyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50
KCkpLCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHR5cGUoY2xpZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRz
LkNvbm5lY3Rpb25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBjb21wbGV0ZXMgaGFuZHNo
YWtlCisgICAgICAgIG5vdyA9IDAuMworICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShp
dGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCisgICAgICAgIGl0ZW1zID0gc2VydmVy
LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0
YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVh
bChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDAuODI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVu
dHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2Vy
dmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rp
b25JZElzc3VlZCkKKworICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQSU5HCisgICAgICAg
IG5vdyA9IDAuODI1CisgICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKKyAgICAg
ICAgaXRlbXMgPSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0QWxtb3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkKKworICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKKyAgICAgICAgbm93ID0gMC45CisgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKKyAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkK
KworICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRzIEhBTkRTSEFLRV9E
T05FCisgICAgICAgIG5vdyA9IDEuMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5f
aGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0o
aXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VydmVyLl9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQorICAgICAgICBpdGVtcyA9IHNlcnZl
ci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
cnZlci5faGFuZHNoYWtlX2RvbmVfcGVuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
YXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyMjRdKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRo
X3F1YW50dW1fcmVhZGluZXNzKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KGNsaWVudF9vcHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRydWV9LCkgYXMgKAor
ICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgc2VydmVyLAorICAgICAgICApOgorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxv
IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQorICAgICAgICAgICAg
d2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkK
KyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVudC5kYXRhCisgICAg
ICAgICAgICAgICAgZWxpZiBldmVudCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVh
aworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBiImhlbGxvIikKKwor
ICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgorICAgICAgICBjbGllbnRfdGlj
a2V0ID0gTm9uZQorICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQor
CisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0
CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNsaWVudF9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCisg
ICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tl
dF9zdG9yZS5hZGR9LAorICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBwYXNzCisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAgIGNs
aWVudF9vcHRpb25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0fSwKKyAgICAgICAg
ICAgIHNlcnZlcl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjogdGlja2V0X3N0b3Jl
LnBvcH0sCisgICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCisgICAgICAgICkgYXMgKGNsaWVu
dCwgc2VydmVyKToKKyAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9
dGltZS50aW1lKCkpCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZh
aWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShz
dHJlYW1faWQsIGIiaGVsbG8iKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgyLCAxKSkKKworICAgICAgICAgICAgZXZlbnQgPSBzZXJ2
ZXIubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQp
LCBldmVudHMuUHJvdG9jb2xOZWdvdGlhdGVkKQorCisgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCks
IGV2ZW50cy5TdHJlYW1EYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmRhdGEsIGIiaGVsbG8iKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBydHRf
YmFkX21heF9lYXJseV9kYXRhKHNlbGYpOgorICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQor
ICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQorCisgICAgICAgIGRl
ZiBwYXRjaChzZXJ2ZXIpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBQYXRjaCBzZXJ2
ZXIncyBUTFMgaW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKKyAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhIHZhbHVlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICByZWFsX2lu
aXRpYWxpemUgPSBzZXJ2ZXIuX2luaXRpYWxpemUKKworICAgICAgICAgICAgZGVmIHBhdGNoZWRf
aW5pdGlhbGl6ZShwZWVyX2NpZDogYnl0ZXMpOgorICAgICAgICAgICAgICAgIHJlYWxfaW5pdGlh
bGl6ZShwZWVyX2NpZCkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9tYXhfZWFybHlfZGF0
YSA9IDEyMzQ1CisKKyAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5p
dGlhbGl6ZQorCisgICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6CisgICAg
ICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0CisgICAgICAgICAgICBjbGllbnRfdGlja2V0
ID0gdGlja2V0CisKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKKyAgICAgICAgICAg
IGNsaWVudF9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3Rp
Y2tldH0sCisgICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxl
ciI6IHRpY2tldF9zdG9yZS5hZGR9LAorICAgICAgICAgICAgc2VydmVyX3BhdGNoPXBhdGNoLAor
ICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNoZWNrIGhhbmRz
aGFrZSBmYWlsZWQKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2Vf
Y29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBb
MSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUg
Y2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9j
b25uZWN0aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xp
ZW50LCBzZXJ2ZXIpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIs
IDMsIDQsIDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZl
ciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lk
X2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAg
ZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdfY29ubmVjdGlvbl9p
ZChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwg
NSwgNiwgN10KKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5n
ZXMgY29ubmVjdGlvbiBJRAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lk
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIp
LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYs
IDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBh
IG5ldyBjb25uZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJf
Y2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQorICAgICAgICAgICAgKQorCisgICAg
ICAgICAgICAjIE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQKKyAgICAgICAgICAg
IHNlcnZlci5fb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCisgICAgICAgICAgICAgICAg
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFdCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50
KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2Vx
dWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2
LCA3LCA4XQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25f
aWRfcmV0cmFuc21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9w
ZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRCwgUkVUSVJF
X0NPTk5FQ1RJT05fSUQgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0
aW9uX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9u
dW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCisg
ICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgcmV0
cmFuc21pdHRlZAorICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9k
ZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgICMgdGhl
IHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3Bl
ZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmKToKKyAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAg
ICAgICAjIGNsaWVudAorICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1f
aWQsIDApCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIi
aGVsbG8iKQorCisgICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwg
NCkKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxs
byIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbV9pZCwgMikKKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRh
KHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5n
ZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKKyAgICAgICAgICAgIGNsaWVu
dC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCisKKyAgICAgICAgICAgICMg
c2VydmVyCisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMSkK
KyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIp
CisKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3Ry
ZWFtX2lkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA1KQorICAg
ICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKwor
ICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1f
aWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtX2lkLCAzKQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFt
X2lkLCBiImhlbGxvIikKKworICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0
X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQorICAgICAgICAgICAgc2VydmVyLnNlbmRf
c3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKKworICAgIGRlZiB0ZXN0X2RhdGFncmFt
X2ZyYW1lKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAorICAgICAgICAg
ICAgY2xpZW50X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKKyAg
ICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUz
Nn0sCisgICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY2hlY2sg
aGFuZHNoYWtlIGNvbXBsZXRlZAorICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xp
ZW50PWNsaWVudCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKQorCisgICAgICAg
ICAgICAjIHNlbmQgZGF0YWdyYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFtX2Zy
YW1lKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGll
bnQsIHNlcnZlciksIDEpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQo
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkRhdGFn
cmFtRnJhbWVSZWNlaXZlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0
YSwgYiJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8yKHNlbGYpOgorICAg
ICAgICAjIHBheWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUgcGFja2V0CisgICAg
ICAgIHBheWxvYWQgPSBiIloiICogMTI1MAorCisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoCisgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
IjogNjU1MzZ9LAorICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJh
bWVfc2l6ZSI6IDY1NTM2fSwKKyAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCisgICAgICAgICAgICBzZWxmLmNoZWNr
X2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPU5v
bmUpCisKKyAgICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCisgICAgICAgICAgICBmb3Ig
aSBpbiByYW5nZSgyMCk6CisgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJh
bWUocGF5bG9hZCkKKworICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkgMTEgZGF0YWdyYW1z
IGFyZSBzZW50IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKKyAgICAgICAgICAgIGZvciBp
IGluIHJhbmdlKDExKToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50
KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMu
RGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgQUNLCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkK
KworICAgICAgICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFncmFtcworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDkpCisgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZSg5KToKKyAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZl
ci5uZXh0X2V2ZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQorICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRp
b25fZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlwdGlvbiBrZXkKKyAg
ICAgICAgICAgIHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0uc2VuZC5zZXR1cCgK
KyAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NN
X1NIQTI1NiwKKyAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAorICAgICAgICAgICAg
ICAgIHZlcnNpb249c2VydmVyLl92ZXJzaW9uLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICAjIHNlcnZlciBzZW5kcyBjbG9zZQorICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2Nv
ZGU9UXVpY0Vycm9yQ29kZS5OT19FUlJPUikKKyAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGlu
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgorICAgICAgICAgICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6CisgICAgICAgIGRlZiBwYXRj
aChjbGllbnQpOgorICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xpZW50Ll9pbml0aWFs
aXplCisKKyAgICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVz
KToKKyAgICAgICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQpCisgICAgICAgICAg
ICAgICAgY2xpZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5UTFNfVkVSU0lPTl8x
XzNfRFJBRlRfMjhdCisKKyAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6ZSA9IHBhdGNoZWRf
aW5pdGlhbGl6ZQorCisgICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKKyAgICAgICAgICAgIHNl
cnZlci5oYW5kbGVfdGltZXIodGltZXJfYXQpCisKKyAgICAgICAgICAgIGV2ZW50ID0gc2VydmVy
Lm5leHRfZXZlbnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwg
ZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5lcnJvcl9jb2RlLCAzMjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2
ZW50LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZl
cnNpb24iKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJiYWdlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAg
ICBkYXRhZ3JhbSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgwIikKKyAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50
aW1lKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2VydmVkX2JpdHNfbm9u
X3plcm8oc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChz
ZWxmKQorCisgICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKKyAgICAgICAgICAg
IGhvc3RfY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICBpc19jbGllbnQ9RmFsc2Us
CisgICAgICAgICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICB2ZXJz
aW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNf
Y2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAgY3J5cHRvLmVu
Y3J5cHRfcGFja2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKKworICAgICAgICBkZWYg
ZW5jcnlwdF9wYWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
KToKKyAgICAgICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKKyAgICAgICAgICAgIHBs
YWluX2hlYWRlciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkgKyBwbGFpbl9oZWFk
ZXJbMTpdCisgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwoCisg
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
CisgICAgICAgICAgICApCisKKyAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0ID0gZW5jcnlw
dF9wYWNrZXQKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklU
SUFMLCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5QQURESU5HKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UpKQorCisgICAgICAgIGZvciBkYXRhZ3JhbSBpbiBidWlsZGVyLmZs
dXNoKClbMF06CisgICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhZ3JhbSwg
U0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
cm9wKGNsaWVudCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
bGllbnQuX2Nsb3NlX2V2ZW50LAorICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkKAorICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9W
SU9MQVRJT04sCisgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAorICAgICAgICAgICAg
ICAgIHJlYXNvbl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fd3Jvbmdf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVyKAorICAgICAgICAg
ICAgaG9zdF9jaWQ9Y2xpZW50Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgIGlzX2NsaWVudD1GYWxz
ZSwKKyAgICAgICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKKyAgICAgICAgICAgIHZl
cnNpb249MHhGRjAwMDAxMSwgICMgRFJBRlRfMTYKKyAgICAgICAgKQorICAgICAgICBjcnlwdG8g
PSBDcnlwdG9QYWlyKCkKKyAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVy
X2NpZCwgaXNfY2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAg
ICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFERElORykKKyAgICAg
ICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkK
KworICAgICAgICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBdOgorICAgICAgICAg
ICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGlt
ZS50aW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgY2xpZW50LnJlY2Vp
dmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKKyAgICAgICAgICAg
ICAgICB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbiwKKyAgICAgICAgICAgICAgICBzb3VyY2VfY2lk
PWJpbmFzY2lpLnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAorICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisgICAgICAgICAgICAgICAgb3JpZ2lu
YWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCisgICAgICAgICAgICAgICAgcmV0
cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9B
RERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9k
YXRhZ3JhbV9yZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5yZWNl
aXZlX2RhdGFncmFtKAorICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCisgICAgICAgICAg
ICAgICAgdmVyc2lvbj1jbGllbnQuX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgc291cmNlX2Np
ZD1iaW5hc2NpaS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKKyAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNmZThmNWYwZmY0Iiks
CisgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9j
aWQsCisgICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRpbWUudGltZSgp
LAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6CisgICAgICAgIGNsaWVu
dCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2Fja19mcmFtZSgKKyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKKyAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAorICAgICAgICApCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICBzZXJ2ZXIuY2xvc2UoCisgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTiwKKyAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFt
ZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZy
YW1lIiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisgICAgICAgICAgICAg
ICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAorICAgICAgICAgICAgICAgICAgICBy
ZWFzb25fcGhyYXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCisgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1l
X2FwcChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLk5PX0VSUk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZl
bnQsCisgICAgICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAorICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lX3R5cGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iZ29vZGJ5ZSIsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKwor
ICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcF9ub3RfdXRmOChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCisK
KyAgICAgICAgY2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKKyAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCisgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCisg
ICAgICAgICAgICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCisgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBlPU5vbmUsIHJlYXNv
bl9waHJhc2U9IiIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfY3J5cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAg
IyBjbGllbnQgcmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKKyAgICAgICAgICAg
IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAg
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAorICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAg
IFF1aWNGcmFtZVR5cGUuQ1JZUFRPLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1l
bmNvZGVfdWludF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElO
R19FUlJPUgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhy
YXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUKKyAgICAgICAgICAg
IGNsaWVudC5faGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBX0JMT0NLRUQsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRf
dmFyKDEyMzQ1KSksCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdy
YW1fZnJhbWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVu
dChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQorCisgICAgICAgIGNsaWVudC5faGFu
ZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAg
IEJ1ZmZlcihkYXRhPWIiaGVsbG8iKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1G
cmFtZVJlY2VpdmVkKGRhdGE9YiJoZWxsbyIpCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hh
bmRsZV9kYXRhZ3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKKyAgICAgICAgY2xpZW50ID0g
Y3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPU5v
bmUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9y
KSBhcyBjbToKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAg
ICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAg
ICAgICBRdWljRnJhbWVUeXBlLkRBVEFHUkFNLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRh
PWIiaGVsbG8iKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFt
ZVR5cGUuREFUQUdSQU0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJl
YXNvbl9waHJhc2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9kYXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT01
KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikg
YXMgY206CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKKyAgICAg
ICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1i
ImhlbGxvIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVU
eXBlLkRBVEFHUkFNKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT03
KQorCisgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAorICAgICAgICAgICAg
Y2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgUXVpY0ZyYW1lVHlw
ZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwKKyAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhl
bGxvanVuayIpLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGNsaWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQo
ZGF0YT1iImhlbGxvIikKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFt
X2ZyYW1lX3dpdGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBj
cmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9u
ZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3Ip
IGFzIGNtOgorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9YiJceDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJP
VE9DT0xfVklPTEFUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5m
cmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBE
QVRBR1JBTSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0
aF9sZW5ndGhfdG9vX2xhcmdlKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRh
bG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKKworICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDA1aGVsbG9qdW5rIiksCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9O
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIp
CisKKyAgICBkZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2FsbG93ZWQoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUgZnJhbWUKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206
CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2VydmVyKSwKKyAgICAg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YiIiKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2Rl
LlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhj
ZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFz
b25fcGhyYXNlLAorICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNI
QUtFX0RPTkUgZnJhbWVzIiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9t
YXhfZGF0YV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFz
IChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5f
cmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBNQVhfREFUQSByYWlzaW5nIGxpbWl0CisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhf
ZGF0YV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwKKyAgICAgICAgICAg
ICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfZGF0YSwg
MTA0ODU3NykKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoc2Vs
Zik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgorICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisg
ICAgICAgICAgICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3Rl
LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNX0RB
VEEgcmFpc2luZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9k
YXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKKyAgICAg
ICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1Nzcp
KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIE1BWF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAorICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9y
ZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1B
WF9TVFJFQU1fREFUQSwKKyAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5j
b2RlX3VpbnRfdmFyKDEwNDg1NzUpKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCisKKyAg
ICBkZWYgdGVzdF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2VpdmVfb25seShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAzCisg
ICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MywgZGF0YT1iImhl
bGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBOiAz
LCAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJy
b3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0
YV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwK
KyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIpLAorICAgICAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9y
X2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5NQVhf
U1RSRUFNX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5y
ZWFzb25fcGhyYXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfbWF4X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkKKworICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5nIGxpbWl0CisgICAg
ICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjkpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgbG93ZXJpbmcgbGlt
aXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKKyAgICAgICAgICAgICAgICBC
dWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTI3KSksCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEy
OSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmks
IDEyOCkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJh
aXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9m
cmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisg
ICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAgICAg
ICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191
bmksIDEyOSkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5J
IHJhaXNpbmcgbGltaXQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3Vu
aV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCks
CisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCisgICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFt
c191bmksIDEyOSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoc2VsZik6
CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCisgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RP
S0VOLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgw
MTAyMDMwNDA1MDYwNzA4IikpLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxl
X25ld190b2tlbl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIHNlcnZlciBy
ZWNlaXZlcyBORVdfVE9LRU4KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVp
Y0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVf
bmV3X3Rva2VuX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VO
LAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjA4
MDEwMjAzMDQwNTA2MDcwOCIpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IkNsaWVudHMgbXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgorICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNlbGYpOgorICAgICAg
ICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAg
ICAgICMgY2xpZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBkYXRhCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikKKyAgICAgICAgICAg
IGZvciBkYXRhLCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1l
KCkpOgorICAgICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4y
LjMuNCIsIDIzNDUpLCBub3c9dGltZS50aW1lKCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgcGF0
aHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbmV0d29ya19wYXRo
cyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRo
c1swXS5hZGRyLCAoIjEuMi4zLjQiLCAyMzQ1KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIs
IDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRo
c1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIFBBVEhfQ0hB
TExFTkdFIGFuZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCisgICAgICAgICAgICBmb3IgZGF0YSwg
YWRkciBpbiBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKKyAgICAg
ICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93
PXRpbWUudGltZSgpKQorICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRhdGFn
cmFtc190b19zZW5kKG5vdz10aW1lLnRpbWUoKSk6CisgICAgICAgICAgICAgICAgc2VydmVyLnJl
Y2VpdmVfZGF0YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUoKSkK
KworICAgICAgICAgICAgIyBjaGVjayBwYXRocworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXJ2ZXIuX25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlk
YXRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhz
WzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIg
cmVjZWl2ZXMgdW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgc2VydmVyLl9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKKyAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlBBVEhfUkVTUE9OU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiXHgxMVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQ
T05TRSkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNlbGYpOgorICAgICAg
ICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKKworICAgICAgICAjIG5v
IG1vcmUgcGFkZGluZworICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIpCisgICAgICAgIGNs
aWVudC5faGFuZGxlX3BhZGRpbmdfZnJhbWUoCisgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9j
b250ZXh0KGNsaWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQorCisgICAgICAgICMgcGFkZGlu
ZyB1bnRpbCBlbmQKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApKQorICAgICAg
ICBjbGllbnQuX2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAorICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCisKKyAgICAgICAgIyBw
YWRkaW5nIHRoZW4gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0
ZXMoMTApICsgYiJceDAxIikKKyAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgK
KyAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlw
ZS5QQURESU5HLCBidWYKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50
ZWxsKCksIDEwKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAg
ICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVs
bG8iKQorICAgICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBSRVNFVF9TVFJFQU0KKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0s
CisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMDAxMDAi
KSksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZl
bnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0
cmVhbVJlc2V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5zdHJlYW1faWQsIDApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVzZXRfc3Ry
ZWFtX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAgICAgICAgIyBjbGllbnQgcmVj
ZWl2ZXMgUkVTRVRfU1RSRUFNCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1
aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxl
X3Jlc2V0X3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVf
Y29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFU0VU
X1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhs
aWZ5KCIwMjExMDAiKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RB
VEVfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFt
ZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5
IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZWxm
KToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNl
X251bWJlcnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAg
ICAgICAgICAgICkKKworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5F
Q1RJT05fSUQKKyAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lk
X2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwK
KyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lELAorICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJz
KGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhdCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWVfY3Vy
cmVudF9jaWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
ICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQs
IDUsIDYsIDddCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IFJFVElSRV9DT05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKKyAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAg
ICAgICAgICAgY2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCisgICAg
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlJFVElSRV9DT05ORUNUSU9OX0lECisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAi
Q2Fubm90IHJldGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJl
cnMoY2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KKyAgICAgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoc2VsZik6Cisg
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAg
ICAgICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikK
KworICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5HCisgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5
cGUuU1RPUF9TRU5ESU5HLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MTEi
KSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJh
bWVfcmVjZWl2ZV9vbmx5KHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkg
YXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5pZGly
ZWN0aW9uYWwgc3RyZWFtIDMKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0
cmVhbV9pZD0zLCBkYXRhPWIiaGVsbG8iKQorCisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZl
cyBTVE9QX1NFTkRJTkcKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nv
bm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Rv
cF9zZW5kaW5nX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250
ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5E
SU5HLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNceDExIiksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LlNUT1BfU0VORElORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKKworICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxmKToKKyAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAg
ICAjIGNsaWVudCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0gMQorICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2CisgICAgICAgICAg
ICBzdHJlYW1faWQgPSAxCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0
cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAorICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAg
ICAgICBCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3Zh
cihzdHJlYW1faWQpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcihV
SU5UX1ZBUl9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3Zhcigx
KQorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2Nv
ZGUsIFF1aWNFcnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1l
X3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQg
Ml42MiAtIDEiCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2Zy
YW1lX292ZXJfbWF4X2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2Ug
cmVjZWl2ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRh
X3VzZWQgPSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisKKyAgICAgICAgICAgICMgY2xpZW50IHJl
Y2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5
cGUuU1RSRUFNX0JBU0UgfCA0CisgICAgICAgICAgICBzdHJlYW1faWQgPSAxCisgICAgICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAg
ICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgICAg
ICBmcmFtZV90eXBlLAorICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoc3RyZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwg
UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgY29ubmVj
dGlvbiBkYXRhIGxpbWl0IikKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zl
cl9tYXhfc3RyZWFtX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RS
RUFNIGZyYW1lCisgICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1f
QkFTRSB8IDQKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAg
ICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGE9ZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsgZW5jb2RlX3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlICsgMSkKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLkZMT1dfQ09OVFJPTF9FUlJPUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBzdHJlYW0gZGF0YSBs
aW1pdCIpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X3N0cmVh
bXMoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBz
ZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNt
OgorICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKKyAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAorICAgICAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAorICAgICAgICAgICAgICAgICAgICBC
dWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihjbGll
bnQuX2xvY2FsX21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKKyAgICAgICAgICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1
aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBvcGVuIikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgorICAgICAgICB3
aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAg
ICMgY2xpZW50IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKKyAgICAgICAgICAgIGNs
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8iKQorCisgICAg
ICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKKyAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206CisgICAgICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICBj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuU1RSRUFNX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMiIpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9S
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKKworICAg
IGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9yKHNlbGYpOgorICAg
ICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAg
ICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5TVFJFQU1fQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJc
eDAwIiksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0aWF0b3IiKQorCisg
ICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6CisgICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAg
ICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKKwor
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAg
ICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKKyAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAgICAgICAgICAg
UXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAorICAgICAgICAgICAgICAgIEJ1ZmZl
cihkYXRhPWIiXHgwMFx4MDEiKSwKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToKKyAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAj
IGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCisgICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKKworICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAorICAgICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAorICAg
ICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCisgICAgICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKKyAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9C
TE9DS0VEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29u
X3BocmFzZSwgIlN0cmVhbSBpcyBzZW5kLW9ubHkiKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0
cmVhbXNfYmxvY2tlZF91bmlfZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2
ZXMgU1RSRUFNU19CTE9DS0VEX1VOSTogMAorICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3Ry
ZWFtc19ibG9ja2VkX2ZyYW1lKAorICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRl
eHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tF
RF9VTkksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCisgICAgICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdfb25seShzZWxmKToK
KyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Cisg
ICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKKyAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MDAiICog
MTIwMAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hY2tf
ZWxpY2l0aW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Byb2JpbmcpCisKKyAg
ICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2VsZik6CisgICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQorICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAg
ICBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQp
LCBiIlx4MWYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJy
b3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFGKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVua25vd24g
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3VuZXhwZWN0ZWRf
ZnJhbWUoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50
LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZUFRPIGZyYW1lIGlu
IDAtUlRUCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgK
KyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVwb2No
PXRscy5FcG9jaC5aRVJPX1JUVCksIGIiXHgwNiIKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JD
b2RlLlBST1RPQ09MX1ZJT0xBVElPTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20u
ZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQg
ZnJhbWUgdHlwZSIpCisKKyAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX21hbGZvcm1lZF9m
cmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxmb3JtZWQgVFJBTlNQ
T1JUX0NMT1NFIGZyYW1lCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWND
b25uZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9y
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLCBiIlx4MWNceDAwXHgwMSIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBR
dWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFDKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkZh
aWxlZCB0byBwYXJzZSBmcmFtZSIpCisKKyAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX2Jsb2Nr
ZWRfYnlfY2Moc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9uIGNvbnRyb2wKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVzX2luX2ZsaWdodCwg
MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmNvbmdlc3Rpb25f
d2luZG93LCAxNDMwMykKKworICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2
ZWQgZGF0YSBjb3VudGVyCisgICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQg
PSBjbGllbnQuX2xvY2FsX21heF9kYXRhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
cnZlci5fcmVtb3RlX21heF9kYXRhLCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIGFydGlmaWNp
YWxseSByYWlzZSBieXRlcyBpbiBmbGlnaHQKKyAgICAgICAgICAgIGNsaWVudC5fbG9zcy5fY2Mu
Ynl0ZXNfaW5fZmxpZ2h0ID0gMTQzMDMKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBub3Qg
c2VudCBkdWUgdG8gY29uZ2VzdGlvbiBjb250cm9sCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRyb3AoY2xpZW50KSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfcmV0cmFu
c21pdChzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6CisgICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRh
IGNvdW50ZXIKKyAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVu
dC5fbG9jYWxfbWF4X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9y
ZW1vdGVfbWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgc2Vu
dCBhbmQgbG9zdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2Vu
dCwgMjA5NzE1MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVf
bWF4X2RhdGEsIDEwNDg1NzYpCisKKyAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21p
dHRlZCBhbmQgYWNrZWQKKyAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xp
ZW50Ll9sb2NhbF9tYXhfZGF0YV9zZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tYXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKKyAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICAjIGNs
aWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKKyAgICAgICAgICAgIHN0cmVhbSA9
IGNsaWVudC5fY3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciks
ICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwganVzdCBiZWZvcmUg
cmFpc2luZyBNQVhfU1RSRUFNX0RBVEEKKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9k
YXRhKDAsIGIiWiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgorICAgICAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2Nh
bCwgMTA0ODU3NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJl
YW1fZGF0YV9sb2NhbF9zZW50LCAxMDQ4NTc2KQorCisgICAgICAgICAgICAjIHNlcnZlciBzZW5k
cyBvbmUgbW9yZSBieXRlCisgICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgwLCBi
IloiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVu
dCksIDEpCisKKyAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNlbnQgYW5kIGxvc3QK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUy
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xv
Y2FsX3NlbnQsIDIwOTcxNTIpCisgICAgICAgICAgICBjbGllbnQuX29uX21heF9zdHJlYW1fZGF0
YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxf
c2VudCwgMCkKKworICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBh
Y2tlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3Ry
ZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKKworICAgIGRlZiB0ZXN0
X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6CisgICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCisKKyAg
ICAgICAgICAgICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0CisgICAgICAgICAg
ICBjbGllbnQuc2VuZF9waW5nKHVpZD0xMjM0NSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAgICAjIGNo
ZWNrIGV2ZW50CisgICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVk
Z2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6CisgICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgY29uc3Vt
ZV9ldmVudHMoY2xpZW50KQorCisgICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBhbm90aGVyIHBp
bmcsIFBJTkcgaXMgbG9zdAorICAgICAgICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKKworICAgICAg
ICAgICAgIyBQSU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCisgICAgICAgICAgICBjbGll
bnQuX29uX3BpbmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgKDEyMzQ1LCkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgx
LCAxKSkKKworICAgICAgICAgICAgIyBjaGVjayBldmVudAorICAgICAgICAgICAgZXZlbnQgPSBj
bGllbnQubmV4dF9ldmVudCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZl
bnQpLCBldmVudHMuUGluZ0Fja25vd2xlZGdlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQudWlkLCAxMjM0NSkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zl
cl9tYXhfc3RyZWFtc19iaWRpKHNlbGYpOgorICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVy
KCkgYXMgKGNsaWVudCwgc2VydmVyKToKKyAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKKyAg
ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCk6CisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
ID0gaSAqIDQKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQsIGIiIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFt
c1tzdHJlYW1faWRdLmlzX2Jsb2NrZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihjbGllbnQuX3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKKwor
ICAgICAgICAgICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAorICAg
ICAgICAgICAgc3RyZWFtX2lkID0gMTI4ICogNAorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xp
ZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAxKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwg
KDEsIDEpKQorCisgICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAg
ICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAorICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKKyAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLk1BWF9TVFJFQU1TX0JJREksCisgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9
ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQorCisgICAg
ZGVmIHRlc3Rfc2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3VuaShzZWxmKToKKyAg
ICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6CisgICAg
ICAgICAgICAjIGNyZWF0ZSBzdHJlYW1zCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgp
OgorICAgICAgICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgorICAgICAgICAgICAgICAg
IGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2Vk
X2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJl
YW1zX2Jsb2NrZWRfdW5pKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKGNsaWVudCwgc2VydmVyKSwgKDAsIDApKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBvbmUg
dG9vIG1hbnkgLT4gU1RSRUFNU19CTE9DS0VECisgICAgICAgICAgICBzdHJlYW1faWQgPSAxMjgg
KiA0ICsgMgorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBi
IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9p
ZF0uaXNfYmxvY2tlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5f
c3RyZWFtc19ibG9ja2VkX2JpZGkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQorCisgICAgICAgICAg
ICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCisgICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9t
YXhfc3RyZWFtc191bmlfZnJhbWUoCisgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29u
dGV4dChjbGllbnQpLAorICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNf
VU5JLAorICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKKworICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2Rh
dGFfcGVlcl9pbml0aWF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIo
KSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgorICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMSwg
YiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIs
IGNsaWVudCksICgxLCAxKSkKKworICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJl
Y3Rpb25hbCBzdHJlYW0KKyAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDMsIGIi
aGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBj
bGllbnQpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rp
b25hbCBzdHJlYW0KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVs
bG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2
ZXIpLCAoMSwgMSkpCisKKyAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRhdGEgb24gc2VydmVy
LWluaXRpYXRlZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRf
c3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJv
dW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQg
Y3JlYXRlIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgY2xpZW50LnNlbmRfc3Ry
ZWFtX2RhdGEoMiwgYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5k
dHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKKworICAgICAgICAgICAgIyBjbGllbnQgdHJp
ZXMgdG8gc2VuZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQor
ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhlbGxvIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlv
biksCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0aWF0ZWQg
dW5pZGlyZWN0aW9uYWwgc3RyZWFtIiwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBj
bGllbnQgdHJpZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWluaXRpYXRlZCBiaWRp
cmVjdGlvbmFsIHN0cmVhbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1
ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSg1
LCBiImhlbGxvIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1p
bml0aWF0ZWQgc3RyZWFtIgorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtX2Rp
cmVjdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGll
bnQsIHNlcnZlcik6CisgICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4XToKKyAgICAgICAg
ICAgICAgICAjIENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmKSkK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2Vp
dmUob2ZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1f
Y2FuX3NlbmQob2ZmKSkKKworICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgQmlk
aXJlY3Rpb25hbAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fcmVjZWl2ZShvZmYgKyAxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
Y2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQorICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAxKSkK
KworICAgICAgICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZl
KG9mZiArIDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVh
bV9jYW5fc2VuZChvZmYgKyAyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKKworICAgICAgICAg
ICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChv
ZmYgKyAzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFt
X2Nhbl9yZWNlaXZlKG9mZiArIDMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
ZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25f
bmVnb3RpYXRpb25fZmFpbChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxv
bmVfY2xpZW50KHNlbGYpCisKKyAgICAgICAgIyBubyBjb21tb24gdmVyc2lvbiwgbm8gcmV0cnkK
KyAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCisgICAgICAgICAgICBlbmNvZGVfcXVp
Y192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50
Ll9wZWVyX2NpZCwKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3Rf
Y2lkLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhGRjAwMDAxMV0sICAj
IERSQUZUXzE2CisgICAgICAgICAgICApLAorICAgICAgICAgICAgU0VSVkVSX0FERFIsCisgICAg
ICAgICAgICBub3c9dGltZS50aW1lKCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkcm9wKGNsaWVudCksIDApCisKKyAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVu
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0
aW9uVGVybWluYXRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2Rl
LCBRdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV2ZW50LmZyYW1lX3R5cGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBldmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJv
dG9jb2wgdmVyc2lvbiIKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlh
dGlvbl9vayhzZWxmKToKKyAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCisKKyAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCByZXRyeQorICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbSgKKyAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNp
b25fbmVnb3RpYXRpb24oCisgICAgICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJf
Y2lkLAorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCisg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3ZlcnNpb25dLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIFNFUlZFUl9BRERSLAorICAgICAgICAgICAgbm93PXRp
bWUudGltZSgpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGll
bnQpLCAxKQorCisKK2NsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2Nhbl9zZW5kKHNlbGYpOgorICAgICAgICBwYXRoID0gUXVpY05ldHdvcmtQYXRoKCgi
MS4yLjMuNCIsIDEyMzQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguaXNfdmFsaWRh
dGVkKQorCisgICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkgZGF0YQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwYXRoLmNhbl9zZW5kKDEpKQorCisgICAgICAgICMgcmVjZWl2ZSBzb21lIGRhdGEKKyAg
ICAgICAgcGF0aC5ieXRlc19yZWNlaXZlZCArPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXRoLmNhbl9zZW5kKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgx
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBhdGguY2FuX3NlbmQoNCkpCisKKyAgICAgICAgIyBzZW5kIHNvbWUgZGF0YQorICAgICAgICBw
YXRoLmJ5dGVzX3NlbnQgKz0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2Vu
ZCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3RfY3J5cHRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNGU0ZGNmNWUxOGU0NzAyNDUwZDFiZWJm
NDlkZmZjMjEzZTYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9jcnlwdG8ucHkKQEAgLTAsMCArMSwzMTkgQEAKK2ltcG9ydCBiaW5hc2NpaQorZnJvbSB1bml0
dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgorCitmcm9tIGFpb3F1aWMuYnVmZmVyIGltcG9y
dCBCdWZmZXIKK2Zyb20gYWlvcXVpYy5xdWljLmNyeXB0byBpbXBvcnQgKAorICAgIElOSVRJQUxf
Q0lQSEVSX1NVSVRFLAorICAgIENyeXB0b0Vycm9yLAorICAgIENyeXB0b1BhaXIsCisgICAgZGVy
aXZlX2tleV9pdl9ocCwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldCBpbXBvcnQgUEFDS0VU
X0ZJWEVEX0JJVCwgUXVpY1Byb3RvY29sVmVyc2lvbgorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQg
Q2lwaGVyU3VpdGUKKworZnJvbSAudXRpbHMgaW1wb3J0IFNLSVBfVEVTVFMKKworUFJPVE9DT0xf
VkVSU0lPTiA9IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKKworQ0hBQ0hBMjBfQ0xJRU5U
X1BBQ0tFVF9OVU1CRVIgPSAyCitDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICJlMWZmMDAwMDE2MDg4MGI1N2M3YjcwZDg1MjRiMDg1MGZjMmEy
OGUyNDBmZDc2NDAxNzAwMDIiCispCitDSEFDSEEyMF9DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJp
bmFzY2lpLnVuaGV4bGlmeSgiMDIwMTAwMDAwMCIpCitDSEFDSEEyMF9DTElFTlRfRU5DUllQVEVE
X1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiZThmZjAwMDAxNjA4ODBiNTdjN2I3
MGQ4NTI0YjA4NTBmYzJhMjhlMjQwZmQ3NjQwMTc4MzEzYjA0YmU5ODQ0OSIKKyAgICAiZWIxMDU2
N2UyNWNlOTMwMzgxZjJhNWI3ZGEyZGI4ZGIiCispCisKK0xPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1C
RVIgPSAyCitMT05HX0NMSUVOVF9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCisg
ICAgImMzZmYwMDAwMTcwODgzOTRjOGYwM2U1MTU3MDgwMDAwNDQ5ZTAwMDAwMDAyIgorKQorTE9O
R19DTElFTlRfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYwMDQw
YzQwMTAwMDBjMDAzMDM2NjYwMjYxZmY5NDdjZWE0OWNjZTZjZmFkNjg3ZjQ1N2NmMWIxNDUzMWJh
MSIKKyAgICAiNDEzMWEwZThmMzA5YTFkMGI5YzQwMDAwMDYxMzAxMTMwMzEzMDIwMTAwMDA5MTAw
MDAwMDBiMDAwOTAwMDAwNiIKKyAgICAiNzM2NTcyNzY2NTcyZmYwMTAwMDEwMDAwMGEwMDE0MDAx
MjAwMWQwMDE3MDAxODAwMTkwMTAwMDEwMTAxMDIwMSIKKyAgICAiMDMwMTA0MDAyMzAwMDAwMDMz
MDAyNjAwMjQwMDFkMDAyMDRjZmRmY2QxNzhiNzg0YmYzMjhjYWU3OTNiMTM2ZiIKKyAgICAiMmFl
ZGNlMDA1ZmYxODNkN2JiMTQ5NTIwNzIzNjY0NzAzNzAwMmIwMDAzMDIwMzA0MDAwZDAwMjAwMDFl
MDQwMyIKKyAgICAiMDUwMzA2MDMwMjAzMDgwNDA4MDUwODA2MDQwMTA1MDEwNjAxMDIwMTA0MDIw
NTAyMDYwMjAyMDIwMDJkMDAwMiIKKyAgICAiMDEwMTAwMWMwMDAyNDAwMSIKKykgKyBieXRlcyg5
NjIpCitMT05HX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICJjMGZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUzYjM0M2FhODUzNTA2NGE0
MjY4YTBkOWQ3YjFjIgorICAgICI5ZDI1MGFlMzU1MTYyMjc2ZTliMWUzMDExZWY2YmJjMGFiNDhh
ZDViY2MyNjgxZTk1Mzg1N2NhNjJiZWNkNzUyIgorICAgICI0ZGFhYzQ3M2U2OGQ3NDA1ZmJiYTRl
OWVlNjE2Yzg3MDM4YmRiZTkwOGMwNmQ5NjA1ZDlhYzQ5MDMwMzU5ZWVjIgorICAgICJiMWQwNWEx
NGUxMTdkYjhjZWRlMmJiMDlkMGRiYmZlZTI3MWNiMzc0ZDhmMTBhYmVjODJkMGY1OWExZGVlMjlm
IgorICAgICJlOTU2MzhlZDhkZDQxZGEwNzQ4NzQ2ODc5MWI3MTljNTVjNDY5NjhlYjNiNTQ2ODAw
MzcxMDJhMjhlNTNkYzFkIgorICAgICIxMjkwM2RiMGFmNTgyMTc5NGI0MWM0YTkzMzU3ZmE1OWNl
NjljZmU3ZjZiZGZhNjI5ZWVmNzg2MTY0NDdlMWQ2IgorICAgICIxMWM0YmFmNzFiZjMzZmViY2Iw
MzEzN2MyYzc1ZDI1MzE3ZDNlMTNiNjg0MzcwZjY2ODQxMWMwZjAwMzA0YjUwIgorICAgICIxYzhm
ZDQyMmJkOWI5YWQ4MWQ2NDNiMjBkYTg5Y2EwNTI1ZDI0ZDJiMTQyMDQxY2FlMGFmMjA1MDkyZTQz
MDA4IgorICAgICIwY2Q4NTU5ZWE0YzVjNmU0ZmEzZjY2MDgyYjdkMzAzZTUyY2UwMTYyYmFhOTU4
NTMyYjBiYmMyYmM3ODU2ODFmIgorICAgICJjZjM3NDg1ZGZmNjU5NWUwMWU3MzljOGFjOWVmYmEz
MWI5ODVkNWY2NTZjYzA5MjQzMmQ3ODFkYjk1MjIxNzI0IgorICAgICI4NzY0MWM0ZDNhYjhlY2Uw
MWUzOWJjODViMTU0MzY2MTQ3NzVhOThiYThmYTEyZDQ2ZjliMzVlMmE1NWViNzJkIgorICAgICI3
Zjg1MTgxYTM2NjY2MzM4N2RkYzIwNTUxODA3ZTAwNzY3M2JkN2UyNmJmOWIyOWI1YWIxMGExY2E4
N2NiYjdhIgorICAgICJkOTdlOTllYjY2OTU5YzJhOWJjM2NiZGU0NzA3ZmY3NzIwYjExMGZhOTUz
NTQ2NzRlMzk1ODEyZTQ3YTBhZTUzIgorICAgICJiNDY0ZGNiMmQxZjM0NWRmMzYwZGMyMjcyNzBj
NzUwNjc2ZjY3MjRlYjQ3OWYwZDJmYmI2MTI0NDI5OTkwNDU3IgorICAgICJhYzZjOTE2N2Y0MGFh
YjczOTk5OGYzOGI5ZWNjYjI0ZmQ0N2M4NDEwMTMxYmY2NWE1MmFmODQxMjc1ZDViM2QxIgorICAg
ICI4ODBiMTk3ZGYyYjVkZWEzZTZkZTU2ZWJjZTNmZmI2ZTkyNzdhODIwODJmOGQ5Njc3YTY3Njcw
ODliNjcxZWJkIgorICAgICIyNDRjMjE0ZjBiZGU5NWMyYmViMDJjZDExNzJkNThiZGYzOWRjZTU2
ZmY2OGViMzVhYjM5YjQ5YjRlYWM3YzgxIgorICAgICI1ZWE2MDQ1MWQ2ZTZhYjgyMTE5MTE4ZGYw
MmE1ODY4NDRhOWZmZTE2MmJhMDA2ZDA2NjllZjU3NjY4Y2FiMzhiIgorICAgICI2MmY3MWEyNTIz
YTA4NDg1MmNkMWQwNzliMzY1OGRjMmYzZTg3OTQ5YjU1MGJhYjNlMTc3Y2ZjNDllZDE5MGRmIgor
ICAgICJmMDYzMGU0MzA3N2MzMGRlOGY2YWUwODE1MzdmMWU4M2RhNTM3ZGE5ODBhZmE2NjhlN2I3
ZmIyNTMwMWNmNzQxIgorICAgICI1MjRiZTNjNDk4ODRiNDI4MjFmMTc1NTJmYmQxOTMxYTgxMzAx
N2I2YjY1OTBhNDFlYTE4YjZiYTQ5Y2Q0OGE0IgorICAgICI0MGJkOWEzMzQ2YTc2MjNmYjRiYTM0
YTNlZTU3MWUzYzczMWYzNWE3YTNjZjI1YjU1MWE2ODBmYTY4NzYzNTA3IgorICAgICJiN2ZkZTNh
YWYwMjNjNTBiOWQyMmRhNjg3NmJhMzM3ZWI1ZTlkZDllYzNkYWY5NzAyNDJiNmM1YWFiM2FhNGIy
IgorICAgICI5NmFkOGI5ZjY4MzJmNjg2ZWY3MGZhOTM4YjMxYjRlNWRkZDczNjQ0NDJkM2VhNzJl
NzNkNjY4ZmIwOTM3Nzk2IgorICAgICJmNDYyOTIzYTgxYTQ3ZTFjZWU3NDI2ZmY2ZDkyMjEyNjli
NWE2MmVjMDNkNmVjOTRkMTI2MDZjYjQ4NTU2MGJhIgorICAgICJiNTc0ODE2MDA5ZTk2NTA0MjQ5
Mzg1YmI2MWE4MTliZTA0ZjYyYzIwNjYyMTRkODM2MGEyMDIyYmViMzE2MjQwIgorICAgICJiNmM3
ZDc4YmJlNTZjMTMwODJlMGNhMjcyNjYxMjEwYWJmMDIwYmYzYjU3ODNmMTQyNjQzNmNmOWZmNDE4
NDA1IgorICAgICI5M2E1ZDA2MzhkMzJmYzUxYzVjNjVmZjI5MWEzYTdhNTJmZDY3NzVlNjIzYTQ0
MzljYzA4ZGQyNTU4MmZlYmM5IgorICAgICI0NGVmOTJkOGRiZDMyOWM5MWRlM2U5Yzk1ODJlNDFm
MTdmM2QxODZmMTA0YWQzZjkwOTk1MTE2YzY4MmEyYTE0IgorICAgICJhM2I0YjFmNTQ3YzMzNWYw
YmU3MTBmYzlmYzAzZTBlNTg3YjhjZGEzMWNlNjViOTY5ODc4YTRhZDQyODNlNmQ1IgorICAgICJi
MDM3M2Y0M2RhODZlOWUwZmZlMWFlMGZkZGQzNTE2MjU1YmQ3NDU2NmYzNmEzODcwM2Q1ZjM0MjQ5
ZGVkMWY2IgorICAgICI2YjNkOWI0NWI5YWYyY2NmZWZlOTg0ZTEzMzc2YjFiMmM2NDA0YWE0OGM4
MDI2MTMyMzQzZGEzZjNhMzM2NTllIgorICAgICJjMWIzZTk1MDgwNTQwYjI4YjdmM2ZjZDM1ZmE1
ZDg0M2I1NzlhODRjMDg5MTIxYTYwZDhjMTc1NDkxNWMzNDRlIgorICAgICJlYWY0NWE5YmYyN2Rj
MGMxZTc4NDE2MTY5MTIyMDkxMzEzZWIwZTg3NTU1YWJkNzA2NjI2ZTU1N2ZjMzZhMDRmIgorICAg
ICJjZDE5MWE1ODgyOTEwNGQ2MDc1YzU1OTRmNjI3Y2E1MDZiZjE4MWRhZWM5NDBmNGE0ZjNhZjAw
NzRlZWU4OWRhIgorICAgICJhY2RlNjc1ODMxMjYyMmQ0ZmE2NzViMzlmNzI4ZTA2MmQyYmVlNjgw
ZDhmNDFhNTk3YzI2MjY0OGJiMThiY2ZjIgorICAgICIxM2M4YjNkOTdiMWE3N2IyYWMzYWY3NDVk
NjFhMzRjYzQ3MDk4NjViYWM4MjRhOTRiYjE5MDU4MDE1ZTRlNDJkIgorICAgICJjOWJlNmM3ODAz
NTY3MzIxODI5ZGQ4NTg1MzM5NjI2OSIKKykKKworTE9OR19TRVJWRVJfUEFDS0VUX05VTUJFUiA9
IDEKK0xPTkdfU0VSVkVSX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAi
YzFmZjAwMDAxNzAwMDhmMDY3YTU1MDJhNDI2MmI1MDA0MDc0MDAwMSIKKykKK0xPTkdfU0VSVkVS
X1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgIjBkMDAwMDAwMDAxODQx
MGEwMjAwMDA1NjAzMDNlZWZjZTdmN2IzN2JhMWQxNjMyZTk2Njc3ODI1ZGRmNzM5ODgiCisgICAg
ImNmYzc5ODI1ZGY1NjZkYzU0MzBiOWEwNDVhMTIwMDEzMDEwMDAwMmUwMDMzMDAyNDAwMWQwMDIw
OWQzYzk0MGQiCisgICAgIjg5NjkwYjg0ZDA4YTYwOTkzYzE0NGVjYTY4NGQxMDgxMjg3YzgzNGQ1
MzExYmNmMzJiYjlkYTFhMDAyYjAwMDIiCisgICAgIjAzMDQiCispCitMT05HX1NFUlZFUl9FTkNS
WVBURURfUEFDS0VUID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICJjOWZmMDAwMDE3MDAwOGYw
NjdhNTUwMmE0MjYyYjUwMDQwNzQxNjhiZjIyYjcwMDI1OTZmOTlhZTY3YWJmNjVhIgorICAgICI1
ODUyZjU0ZjU4YzM3YzgwODY4MmUyZTQwNDkyZDhhMzg5OWZiMDRmYzBhZmU5YWFiYzg3NjdiMThh
MGFhNDkzIgorICAgICI1Mzc0MjYzNzNiNDhkNTAyMjE0ZGQ4NTZkNjNiNzhjZWUzN2JjNjY0YjNm
ZTg2ZDQ4N2FjN2E3N2M1MzAzOGEzIgorICAgICJjZDMyZjBiNTAwNGQ5ZjU3NTRjNGY3ZjJkMWYz
NWNmM2Y3MTE2MzUxYzkyYjljZjliYjZkMDkxZGRmYzhiMzJkIgorICAgICI0MzIzNDhhMmM0MTMi
CispCisKK1NIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSID0gMworU0hPUlRfU0VSVkVSX1BMQUlO
X0hFQURFUiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiNDFiMDFmZDI0YTU4NmE5Y2YzMDAwMyIpCitT
SE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAiMDYw
MDM5MDQwMDAwMzUwMDAxNTE4MDVhNGJlYmY1MDAwMDIwYjA5OGM4ZGM0MTgzZTRjMTgyNTcyZTEw
YWMzZSIKKyAgICAiMmI4ODg5N2UwNTI0Yzg0NjE4NDc1NDhiZDJkZmZhMmMwYWU2MDAwODAwMmEw
MDA0ZmZmZmZmZmYiCispCitTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAiNWRiMDFmZDI0YTU4NmE5Y2YzM2RlYzA5NGFhZWM2ZDZiNGI3YTVl
MTVmNWEzZjA1ZDA2Y2YxYWQwMzU1YzE5ZCIKKyAgICAiY2NlMDgwN2VlY2Y3YmYxYzg0NGE2NmUx
ZWNkMWY3NGIyYTJkNjliZmQyNWQyMTc4MzNlZGQ5NzMyNDY1OTdiZCIKKyAgICAiNTEwN2VhMTVj
YjFlMjEwMDQ1Mzk2YWZhNjAyZmUyMzQzMmY0YWIyNGNlMjUxYiIKKykKKworCitjbGFzcyBDcnlw
dG9UZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHZlY3RvcnMgZnJvbToKKworICAg
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXF1aWMtdGxzLTE4I2FwcGVu
ZGl4LUEKKyAgICAiIiIKKworICAgIGRlZiBjcmVhdGVfY3J5cHRvKHNlbGYsIGlzX2NsaWVudCk6
CisgICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKKyAgICAgICAgcGFpci5zZXR1cF9pbml0aWFs
KAorICAgICAgICAgICAgY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIp
LAorICAgICAgICAgICAgaXNfY2xpZW50PWlzX2NsaWVudCwKKyAgICAgICAgICAgIHZlcnNpb249
UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gcGFpcgorCisgICAg
ZGVmIHRlc3RfZGVyaXZlX2tleV9pdl9ocChzZWxmKToKKyAgICAgICAgIyBjbGllbnQKKyAgICAg
ICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhhMzUxNWExNGFl
M2MzMWI5YzJkNmQ1YmM1ODUzOGNhNWNkMmJhYTExOTA4NzE0M2U2MDg4NzQyOGRjYjUyZjYiCisg
ICAgICAgICkKKyAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hwKElOSVRJQUxf
Q0lQSEVSX1NVSVRFLCBzZWNyZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5LCBiaW5h
c2NpaS51bmhleGxpZnkoIjk4YjBkN2U1ZTdhNDAyYzY3YzMzZjM1MGZhNjVlYTU0IikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgiMTllOTQzODc4MDVl
YjBiNDZjMDNhNzg4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAsIGJpbmFzY2lpLnVu
aGV4bGlmeSgiMGVkZDk4MmE2YWM1MjdmMmVkZGNiYjczNDhkZWE1ZDciKSkKKworICAgICAgICAj
IHNlcnZlcgorICAgICAgICBzZWNyZXQgPSBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAg
ICAiNDdiMmVhZWE2YzI2NmUzMmMwNjk3YTllMmE4OThiZGY1YzRmYjNlNWFjMzRmMGU1NDliZjJj
NTg1ODFhMzgxMSIKKyAgICAgICAgKQorICAgICAgICBrZXksIGl2LCBocCA9IGRlcml2ZV9rZXlf
aXZfaHAoSU5JVElBTF9DSVBIRVJfU1VJVEUsIHNlY3JldCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChrZXksIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWE4YmU5MDJhOWJkZDkxZDE2MDY0Y2ExMTgw
NDVmYjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdiwgYmluYXNjaWkudW5oZXhsaWZ5
KCIwYTgyMDg2ZDMyMjA1YmEyMjI0MWQ4ZGMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
cCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5NGI5NDUyZDJiM2M3YzdmNmRhN2ZkZDg1OTM1MzdmZCIp
KQorCisgICAgQHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFj
aGEyMCB0ZXN0cyIpCisgICAgZGVmIHRlc3RfZGVjcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAor
ICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
YjQyNzcyZGYzM2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2Iy
ODlhZThjMCIKKyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZF
UlNJT04sCisgICAgICAgICkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQs
IHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgQ0hBQ0hB
MjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNLRVQsIDI1LCAwCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwgQ0hBQ0hBMjBfQ0xJRU5U
X1BMQUlOX1BBWUxPQUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwg
Q0hBQ0hBMjBfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVzdF9kZWNyeXB0X2xv
bmdfY2xpZW50KHNlbGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2Ns
aWVudD1GYWxzZSkKKworICAgICAgICBwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tl
dF9udW1iZXIgPSBwYWlyLmRlY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9OR19DTElFTlRf
RU5DUllQVEVEX1BBQ0tFVCwgMTgsIDAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBsYWluX2hlYWRlciwgTE9OR19DTElFTlRfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIExPTkdfQ0xJRU5UX1BMQUlOX1BBWUxPQUQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0X251bWJlciwgTE9OR19DTElFTlRfUEFDS0VU
X05VTUJFUikKKworICAgIGRlZiB0ZXN0X2RlY3J5cHRfbG9uZ19zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCisKKyAgICAgICAg
cGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0
X3BhY2tldCgKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAw
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9oZWFkZXIsIExPTkdf
U0VSVkVSX1BMQUlOX0hFQURFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXls
b2FkLCBMT05HX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhY2tldF9udW1iZXIsIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIpCisKKyAgICBkZWYgdGVz
dF9kZWNyeXB0X25vX2tleShzZWxmKToKKyAgICAgICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENyeXB0b0Vycm9yKToKKyAgICAgICAgICAgIHBh
aXIuZGVjcnlwdF9wYWNrZXQoTE9OR19TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwgMTgsIDApCisK
KyAgICBkZWYgdGVzdF9kZWNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnJlY3Yuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNyZXQ9YmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMxYzEyMTJkNzg0
YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAgKQorCisgICAg
ICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVj
cnlwdF9wYWNrZXQoCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfRU5DUllQVEVEX1BBQ0tFVCwg
OSwgMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWlu
X3BheWxvYWQsIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlMT0FEKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldF9udW1iZXIsIFNIT1JUX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQorCisgICAg
QHNraXBJZigiY2hhY2hhMjAiIGluIFNLSVBfVEVTVFMsICJTa2lwcGluZyBjaGFjaGEyMCB0ZXN0
cyIpCisgICAgZGVmIHRlc3RfZW5jcnlwdF9jaGFjaGEyMChzZWxmKToKKyAgICAgICAgcGFpciA9
IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAgICAgICBjaXBo
ZXJfc3VpdGU9Q2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgc2VjcmV0PWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYjQyNzcyZGYz
M2M5NzE5YTMyODIwZDMwMmFhNjY0ZDA4MGQ3ZjVlYTdhNzFhMzMwZjg3ODY0Y2IyODlhZThjMCIK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCisg
ICAgICAgICkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAg
ICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiwKKyAgICAgICAgICAgIENIQUNIQTIw
X0NMSUVOVF9QTEFJTl9QQVlMT0FELAorICAgICAgICAgICAgQ0hBQ0hBMjBfQ0xJRU5UX1BBQ0tF
VF9OVU1CRVIsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIENI
QUNIQTIwX0NMSUVOVF9FTkNSWVBURURfUEFDS0VUKQorCisgICAgZGVmIHRlc3RfZW5jcnlwdF9s
b25nX2NsaWVudChzZWxmKToKKyAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19j
bGllbnQ9VHJ1ZSkKKworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAg
ICAgICAgICAgTE9OR19DTElFTlRfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19DTElF
TlRfUExBSU5fUEFZTE9BRCwKKyAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1CRVIs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfQ0xJRU5U
X0VOQ1JZUFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X2xvbmdfc2VydmVyKHNl
bGYpOgorICAgICAgICBwYWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkK
KworICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAorICAgICAgICAgICAgTE9O
R19TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgTE9OR19TRVJWRVJfUExBSU5fUEFZ
TE9BRCwKKyAgICAgICAgICAgIExPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCisgICAgICAgICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9Q
QUNLRVQpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0X3Nob3J0X3NlcnZlcihzZWxmKToKKyAgICAg
ICAgcGFpciA9IENyeXB0b1BhaXIoKQorICAgICAgICBwYWlyLnNlbmQuc2V0dXAoCisgICAgICAg
ICAgICBjaXBoZXJfc3VpdGU9SU5JVElBTF9DSVBIRVJfU1VJVEUsCisgICAgICAgICAgICBzZWNy
ZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIzMTAyODE5NzdjYjhjMWMx
YzEyMTJkNzg0YjJkMjllNWE2NDg5ZTIzZGU4NDhkMzcwYTVhMmY5NTM3ZjNhMTAwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIHZlcnNpb249UFJPVE9DT0xfVkVSU0lPTiwKKyAgICAgICAg
KQorCisgICAgICAgIHBhY2tldCA9IHBhaXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICBT
SE9SVF9TRVJWRVJfUExBSU5fSEVBREVSLAorICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BMQUlO
X1BBWUxPQUQsCisgICAgICAgICAgICBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldCwgU0hPUlRfU0VSVkVSX0VOQ1JZ
UFRFRF9QQUNLRVQpCisKKyAgICBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlbGYpOgorICAgICAgICBw
YWlyMSA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgcGFpcjIg
PSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PUZhbHNlKQorCisgICAgICAgIGRlZiBjcmVh
dGVfcGFja2V0KGtleV9waGFzZSwgcGFja2V0X251bWJlcik6CisgICAgICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9MTAwKQorICAgICAgICAgICAgYnVmLnB1c2hfdWludDgoUEFDS0VUX0ZJ
WEVEX0JJVCB8IGtleV9waGFzZSA8PCAyIHwgMSkKKyAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJpbmFzY2lpLnVuaGV4bGlmeSgiODM5NGM4ZjAzZTUxNTcwOCIpKQorICAgICAgICAgICAgYnVm
LnB1c2hfdWludDE2KHBhY2tldF9udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gYnVmLmRhdGEs
IGIiXHgwMFx4MDFceDAyXHgwMyIKKworICAgICAgICBkZWYgc2VuZChzZW5kZXIsIHJlY2VpdmVy
LCBwYWNrZXRfbnVtYmVyPTApOgorICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXls
b2FkID0gY3JlYXRlX3BhY2tldCgKKyAgICAgICAgICAgICAgICBrZXlfcGhhc2U9c2VuZGVyLmtl
eV9waGFzZSwgcGFja2V0X251bWJlcj1wYWNrZXRfbnVtYmVyCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBlbmNyeXB0ZWQgPSBzZW5kZXIuZW5jcnlwdF9wYWNrZXQoCisgICAgICAgICAgICAg
ICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyCisgICAgICAgICAg
ICApCisgICAgICAgICAgICByZWNvdl9oZWFkZXIsIHJlY292X3BheWxvYWQsIHJlY292X3BhY2tl
dF9udW1iZXIgPSByZWNlaXZlci5kZWNyeXB0X3BhY2tldCgKKyAgICAgICAgICAgICAgICBlbmNy
eXB0ZWQsIGxlbihwbGFpbl9oZWFkZXIpIC0gMiwgMAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvdl9oZWFkZXIsIHBsYWluX2hlYWRlcikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGF5bG9hZCwgcGxhaW5fcGF5bG9hZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3ZfcGFja2V0X251bWJlciwgcGFja2V0X251bWJl
cikKKworICAgICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMCkK
KyAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFpcjEua2V5X3BoYXNlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9w
aGFzZSwgMCkKKworICAgICAgICAjIHBhaXIgMSBrZXkgdXBkYXRlCisgICAgICAgIHBhaXIxLnVw
ZGF0ZV9rZXkoKQorCisgICAgICAgICMgcm91bmR0cmlwCisgICAgICAgIHNlbmQocGFpcjEsIHBh
aXIyLCAxKQorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFp
cjIua2V5X3BoYXNlLCAxKQorCisgICAgICAgICMgcGFpciAyIGtleSB1cGRhdGUKKyAgICAgICAg
cGFpcjIudXBkYXRlX2tleSgpCisKKyAgICAgICAgIyByb3VuZHRyaXAKKyAgICAgICAgc2VuZChw
YWlyMiwgcGFpcjEsIDIpCisgICAgICAgIHNlbmQocGFpcjEsIHBhaXIyLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFzZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwYWlyMi5rZXlfcGhhc2UsIDApCisKKyAgICAgICAgIyBwYWlyIDEga2V5IC0gdXBkYXRl
LCBidXQgbm90IG5leHQgdG8gc2VuZAorICAgICAgICBwYWlyMS51cGRhdGVfa2V5KCkKKworICAg
ICAgICAjIHJvdW5kdHJpcAorICAgICAgICBzZW5kKHBhaXIyLCBwYWlyMSwgMykKKyAgICAgICAg
c2VuZChwYWlyMSwgcGFpcjIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFpcjEua2V5
X3BoYXNlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtleV9waGFzZSwgMSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfaDAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjY2Y2NWUxMTc0OThjZmRkNWIwN2JlZGUx
ZjA3NjNkMWNhMjBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2gwLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQor
Citmcm9tIGFpb3F1aWMuaDAuY29ubmVjdGlvbiBpbXBvcnQgSDBfQUxQTiwgSDBDb25uZWN0aW9u
Citmcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNl
aXZlZAorCitmcm9tIC50ZXN0X2Nvbm5lY3Rpb24gaW1wb3J0IGNsaWVudF9hbmRfc2VydmVyLCB0
cmFuc2ZlcgorCisKK2RlZiBoMF9jbGllbnRfYW5kX3NlcnZlcigpOgorICAgIHJldHVybiBjbGll
bnRfYW5kX3NlcnZlcigKKyAgICAgICAgY2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6
IEgwX0FMUE59LAorICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogSDBf
QUxQTn0sCisgICAgKQorCisKK2RlZiBoMF90cmFuc2ZlcihxdWljX3NlbmRlciwgaDBfcmVjZWl2
ZXIpOgorICAgIHF1aWNfcmVjZWl2ZXIgPSBoMF9yZWNlaXZlci5fcXVpYworICAgIHRyYW5zZmVy
KHF1aWNfc2VuZGVyLCBxdWljX3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRz
CisgICAgaHR0cF9ldmVudHMgPSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2
ZW50KCkKKyAgICB3aGlsZSBldmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMu
ZXh0ZW5kKGgwX3JlY2VpdmVyLmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0g
cXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitj
bGFzcyBIMENvbm5lY3Rpb25UZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb25uZWN0KHNl
bGYpOgorICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50
LCBxdWljX3NlcnZlcik6CisgICAgICAgICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24ocXVp
Y19jbGllbnQpCisgICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19zZXJ2
ZXIpCisKKyAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0CisgICAgICAgICAgICBzdHJlYW1faWQg
PSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgICAg
IGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgKGIi
Om1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBoMF9jbGllbnQuc2VuZF9kYXRhKHN0cmVh
bV9pZD1zdHJlYW1faWQsIGRhdGE9YiIiLCBlbmRfc3RyZWFtPVRydWUpCisKKyAgICAgICAgICAg
ICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRob2QiLCBiIkdFVCIpLCAo
YiI6cGF0aCIsIGIiLyIpXQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFSZWNlaXZlZCkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBiIiIpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKwor
ICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoMF9zZXJ2ZXIuc2VuZF9o
ZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAorICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAg
ICAgICBoMF9zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxvPC9ib2R5Pjwv
aHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiPGh0bWw+PGJvZHk+
aGVsbG88L2JvZHk+PC9odG1sPiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1sxXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXZlbnRzWzFdLnN0cmVhbV9lbmRlZCwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcnNfb25s
eShzZWxmKToKKyAgICAgICAgd2l0aCBoMF9jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2Ns
aWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDBfY2xpZW50ID0gSDBDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQorICAgICAgICAgICAgaDBfc2VydmVyID0gSDBDb25uZWN0aW9uKHF1aWNf
c2VydmVyKQorCisgICAgICAgICAgICAjIHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFt
X2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAg
ICAgICBoMF9jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
MF90cmFuc2ZlcihxdWljX2NsaWVudCwgaDBfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXZlbnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHNbMF0uaGVhZGVycywgWyhiIjptZXRo
b2QiLCBiIkhFQUQiKSwgKGIiOnBhdGgiLCBiIi8iKV0KKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRh
UmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwg
YiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBz
dHJlYW1faWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1f
ZW5kZWQsIFRydWUpCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAg
aDBfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwg
YiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
IyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoMF90cmFuc2ZlcihxdWlj
X3NlcnZlciwgaDBfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXZl
bnRzKSwgMikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRz
WzBdLCBIZWFkZXJzUmVjZWl2ZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uaGVhZGVycywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sw
XS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZl
bnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMwOTRmZTk4OThjNTQzMTc1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfaDMucHkKQEAgLTAsMCAr
MSwxMjkyIEBACitpbXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNl
CisKK2Zyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3ZhcgorZnJvbSBhaW9x
dWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKKyAgICBIM19BTFBOLAorICAgIEVycm9yQ29kZSwK
KyAgICBGcmFtZVR5cGUsCisgICAgRnJhbWVVbmV4cGVjdGVkLAorICAgIEgzQ29ubmVjdGlvbiwK
KyAgICBTdHJlYW1UeXBlLAorICAgIGVuY29kZV9mcmFtZSwKKykKK2Zyb20gYWlvcXVpYy5oMy5l
dmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNoUHJvbWlzZVJl
Y2VpdmVkCitmcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQdXNo
SURFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZp
Z3VyYXRpb24KK2Zyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2Vp
dmVkCitmcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworZnJvbSAu
dGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJhbnNmZXIKKworCitk
ZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKKyAgICByZXR1cm4gY2xpZW50X2FuZF9zZXJ2ZXIo
CisgICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwKKyAg
ICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAorICAgICkK
KworCitkZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVyKToKKyAgICBxdWlj
X3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKKyAgICBpZiBoYXNhdHRyKHF1aWNfc2VuZGVy
LCAic3RyZWFtX3F1ZXVlIik6CisgICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2ZW50cy5leHRlbmQo
cXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQorICAgICAgICBxdWljX3NlbmRlci5zdHJlYW1fcXVl
dWUuY2xlYXIoKQorICAgIGVsc2U6CisgICAgICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBxdWlj
X3JlY2VpdmVyKQorCisgICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCisgICAgaHR0cF9ldmVudHMg
PSBbXQorICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKKyAgICB3aGlsZSBl
dmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKGgzX3JlY2VpdmVy
LmhhbmRsZV9ldmVudChldmVudCkpCisgICAgICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0
X2V2ZW50KCkKKyAgICByZXR1cm4gaHR0cF9ldmVudHMKKworCitjbGFzcyBGYWtlUXVpY0Nvbm5l
Y3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICBz
ZWxmLmNsb3NlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJh
dGlvbgorICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2V2ZW50
cyA9IFtdCisgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlmIGNvbmZpZ3VyYXRp
b24uaXNfY2xpZW50IGVsc2UgMQorICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgPSAyIGlm
IGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMworICAgICAgICBzZWxmLl9xdWljX2xvZ2dl
ciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKKyAgICAgICAgICAgIGlzX2NsaWVudD1jb25m
aWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCisgICAgICAgICkKKworICAgIGRlZiBjbG9z
ZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKKyAgICAgICAgc2VsZi5jbG9zZWQg
PSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKKworICAgIGRlZiBnZXRfbmV4dF9hdmFpbGFi
bGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToKKyAgICAgICAgaWYg
aXNfdW5pZGlyZWN0aW9uYWw6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0
cmVhbV91bmkKKyAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSArPSA0CisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpCisg
ICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKKyAgICAgICAgcmV0dXJuIHN0
cmVhbV9pZAorCisgICAgZGVmIG5leHRfZXZlbnQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCisgICAgICAgIGV4Y2VwdCBJbmRleEVy
cm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZW5kX3N0cmVhbV9kYXRh
KHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6CisgICAgICAgICMgY2hv
cCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcworICAgICAgICBmb3IgYyBpbiBkYXRhOgor
ICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1ieXRlcyhbY10pLCBl
bmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICBpZiBlbmRfc3RyZWFtOgorICAgICAgICAgICAgc2VsZi5z
dHJlYW1fcXVldWUuYXBwZW5kKAorICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQorICAg
ICAgICAgICAgKQorCisKK2NsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgorICAgIG1h
eERpZmYgPSBOb25lCisKKyAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBoM19jbGllbnQsIGgz
X3NlcnZlcik6CisgICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9xdWljCisgICAgICAg
IHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCisKKyAgICAgICAgIyBzZW5kIHJlcXVlc3QK
KyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJl
YW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngtZm9v
IiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNfY2xp
ZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVhbT1U
cnVlKQorCisgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgIGV2ZW50cyA9IGgzX3Ry
YW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJjbGllbnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIiLCBz
dHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5PmhlbGxv
PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAp
CisKKyAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCisgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5z
ZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgSGVhZGVy
c1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
KGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisgICAg
ICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPWIiPGh0
bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNvbnRyb2wgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpCisgICAgICAg
ICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksCisgICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlkIGZy
YW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3Rf
aGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUgTUFYX1BVU0hfSUQg
b24gdGhlIGNvbnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuQ09OVFJPTCkKKyAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUuTUFY
X1BVU0hfSUQsIGIiIiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAg
ICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1F
X1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hfSUQiKSwKKyAgICAg
ICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIGNv
bnRyb2wgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgY29udHJvbCBz
dHJlYW0KKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxzZQorICAgICAgICAg
ICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGNvbnRyb2wgc3Ry
ZWFtCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRhdGE9ZW5jb2RlX3Vp
bnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVp
Y19zZXJ2ZXIuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29k
ZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAiT25seSBvbmUg
Y29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBTRVRUSU5HUyBvbiBh
IHB1c2ggc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAg
ICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0x
NSwKKyAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlBVU0gp
CisgICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVzaCBJRAorICAgICAg
ICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAg
ICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQs
CisgICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQg
ZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9o
YW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVyIHN0cmVhbS4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAg
ICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkK
KyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisKKyAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0KKyAgICAgICAgaDNf
Y2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVf
dWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKKyAgICAgICAgICAgICAgICBlbmRf
c3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgIyByZWNl
aXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZl
bnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPTE1LAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVhbVR5
cGUuUVBBQ0tfREVDT0RFUiksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAg
IEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKKyAgICAgICAgICAgICAgICAi
T25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9zdHJlYW1f
ZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBvbiB0
aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9uLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAg
ICApCisgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAg
ICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2Vp
dmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAgICAgICAgICAgICBkYXRh
PWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsgYiJceDAwIiwKKyAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCisgICAg
ICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1cGxpY2F0ZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xlIFFQ
QUNLIGVuY29kZXIgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBG
YWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9IEgz
Q29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICAjIHJlY2VpdmUgYSBmaXJzdCBlbmNv
ZGVyIHN0cmVhbQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAg
U3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKKyAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVIp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICkKKworICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBzdHJlYW0KKyAgICAg
ICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCisgICAgICAgICAgICAgICAgZGF0YT1l
bmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKKyAgICAgICAgICAgICAg
ICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCisgICAgICAg
ICAgICAoCisgICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VS
Uk9SLAorICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBpcyBh
bGxvd2VkIiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2hhbmRs
ZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSB0cmlnZ2VycyBh
biBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWlj
Q29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24o
aXNfY2xpZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0
aW9uKHF1aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAg
ICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTcs
CisgICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19F
TkNPREVSKSArIGIiXHgwMCIsCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5DT0RFUl9T
VFJFQU1fRVJST1IsICIiKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVz
dF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3Vs
ZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVkLgorICAgICAgICAi
IiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJh
bWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAg
ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2
ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlMRUQsICIi
KQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9kYXRhX2Jl
Zm9yZV9oZWFkZXJzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBy
ZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgorICAgICAgICAiIiIKKyAgICAg
ICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1
cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAgICAgKQorICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgaDNf
c2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkRB
VEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2VkLAor
ICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQ
RUNURUQsCisgICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4gdGhp
cyBzdGF0ZSIsCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9oYW5k
bGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0ZXIgcmVjZWl2aW5n
IHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nv
bm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlz
X2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1aWND
b25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihp
c19jbGllbnQ9RmFsc2UpCisgICAgICAgICkKKworICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5l
Y3Rpb24ocXVpY19jbGllbnQpCisgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAoYiI6c2No
ZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICBd
LAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiZm9v
IildLCBlbmRfc3RyZWFtPVRydWUKKyAgICAgICAgKQorICAgICAgICBoM190cmFuc2ZlcihxdWlj
X2NsaWVudCwgaDNfc2VydmVyKQorCisgICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCisg
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3RyZWFt
PUZhbHNlCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKKyAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAorICAgICAgICAgICAg
ICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJhbWVf
cHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBz
ZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJlcXVlc3Qgc3RyZWFt
LgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24o
CisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgKQorICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCisKKyAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAg
ICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLCBiIiIpLAor
ICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHF1aWNfc2VydmVyLmNs
b3NlZCwKKyAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAiQ2xp
ZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAorICAgICAgICApCisKKyAgICBkZWYg
dGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisgICAg
ICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICBoM19z
ZXJ2ZXIuaGFuZGxlX2V2ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX2Zy
YW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFt
PUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCisgICAgICAgICAgICAoRXJyb3JD
b2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0
IHN0cmVhbSIpLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgorICAg
ICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3Nl
cnZlcik6CisgICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQp
CisgICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAg
ICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLl9tYWtlX3Jl
cXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisKKyAgICAgICAgICAgICMgbWFrZSBzZWNvbmQg
cmVxdWVzdAorICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNfc2Vy
dmVyKQorCisgICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBkeW5hbWljIHRhYmxl
CisgICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCisK
KyAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKKyAgICAgICAgd2l0aCBo
M19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAg
ICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICAg
ICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAj
IHNlbmQgcmVxdWVzdAorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25l
eHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFk
ZXJzKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwK
KyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAg
ICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJj
bGllbnQiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09
VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAg
ICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGV2ZW50cywKKyAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQorICAgICAgICAg
ICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAo
YiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBl
IiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIi
eC1mb28iLCBiInNlcnZlciIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIHJlY2VpdmUg
cmVzcG9uc2UKKyAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVyLCBo
M19jbGllbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAg
IGV2ZW50cywKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2VsZik6CisgICAgICAg
IHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29uZmlndXJh
dGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQorICAgICAg
ICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQorICAgICAgICApCisKKyAg
ICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQorICAgICAgICBoM19z
ZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgIyBzZW5kIHJlcXVl
c3QKKyAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgaGVhZGVycz1bCisgICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKKyAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwK
KyAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgIChiIngt
Zm9vIiwgYiJjbGllbnQiKSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgaDNf
Y2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBlbmRf
c3RyZWFtPVRydWUpCisKKyAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKKyAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV2ZW50cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6cGF0aCIsIGIiLyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBi
ImNsaWVudCIpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9MCwg
c3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
ImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICBE
YXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwK
KyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9VHJ1ZSksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBz
ZW5kIHB1c2ggcHJvbWlzZQorICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgzX3NlcnZlci5zZW5k
X3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAg
ICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvYXBwLnR4dCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKKworICAgICAgICAjIHNlbmQgcmVzcG9uc2UK
KyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6c3Rh
dHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICkKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShzdHJl
YW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAg
ICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKKyAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVy
cygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKKyAgICAgICAgICAgIGhl
YWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxh
aW4iKV0sCisgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICApCisgICAgICAg
IGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkLCBkYXRhPWIidGV4
dCIsIGVuZF9zdHJlYW09VHJ1ZSkKKworICAgICAgICAjIHJlY2VpdmUgcHVzaCBwcm9taXNlIC8g
cmVwb25zZQorICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZlciwgaDNfY2xp
ZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXZlbnRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhv
ZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRw
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC50eHQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAorICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICks
CisgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiKSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
aCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAor
ICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVhbV9pZD0wLCBzdHJl
YW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibCIs
IHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgIERhdGFS
ZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKKyAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxhaW4iKV0s
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKKyAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBz
dHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1G
YWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIngi
LCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRl
ZD1GYWxzZSwgcHVzaF9pZD0wKSwKKyAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
IiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9MCksCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1
c2goc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19j
bGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlv
bihxdWljX2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWlj
X3NlcnZlcikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVh
bV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAg
ICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBo
M190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9z
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIHB1c2hfc3Ry
ZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAg
KGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvYXBw
LmNzcyIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCisKKyAgICAgICAgICAgIHB1
c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAorICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgaGVhZGVycz1bCisg
ICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAg
ICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAoYiI6YXV0
aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBi
Ii9hcHAuanMiKSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXNwb25zZQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAg
ICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
KSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2Us
CisgICAgICAgICAgICApCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgZGF0YT1iIjxo
dG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyDCoGZ1bGZpbGwgcHVzaCBw
cm9taXNlcworICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKKyAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAgICAgIGhlYWRl
cnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvY3NzIild
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1w
dXNoX3N0cmVhbV9pZF9jc3MsCisgICAgICAgICAgICAgICAgZGF0YT1iImJvZHkgeyBjb2xvcjog
cGluayB9IiwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICAp
CisKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCisgICAgICAgICAgICAgICAg
c3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAg
ICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKKyAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7Iiwg
ZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgcmVjZWl2ZSBw
dXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKKworICAgICAgICAgICAg
ZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hl
bWUiLCBiImh0dHBzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0
eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi9hcHAuY3NzIiksCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAg
UHVzaFByb21pc2VSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAorICAgICAgICAgICAgICAg
ICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50
LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQtdHlwZSIsIGIidGV4
dC9jc3MiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICApLAor
ICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAorICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaF9pZD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFt
X2lkX2NzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hfaWQ9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0
cmVhbV9pZF9qcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
CisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4X3B1c2hfaWQoc2Vs
Zik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQs
IHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWlj
X2NsaWVudCkKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZl
cikKKworICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
CisgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCisgICAgICAgICAgICApCisKKyAg
ICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0CisgICAgICAgICAgICBldmVudHMgPSBoM190cmFu
c2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAg
ICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFk
ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDAsIDgpOgorICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKKyAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1hdChpKS5lbmNvZGUo
ImFzY2lpIikpLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICkKKwor
ICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQorICAgICAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKKyAgICAgICAgICAgICAgICBoM19z
ZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
dHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIs
IGIiLzguY3NzIiksCisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgKQor
CisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJhaWxlcnMuCisgICAg
ICAgICIiIgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUpCisg
ICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQor
CisgICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJl
YW1faWQoKQorICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAorICAgICAgICAgICAgc3Ry
ZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAorICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0
dHBzIiksCisgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICkKKyAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVuZF9z
dHJlYW09RmFsc2UKKyAgICAgICAgKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZy
YW1lVW5leHBlY3RlZCk6CisgICAgICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVhbV9p
ZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCisKKyAgICBkZWYg
dGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KKyAgICAgICAgIiIiCisg
ICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgKQor
ICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisKKyAgICAgICAg
c3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKKyAgICAgICAg
ICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhlbGxv
IiwgZW5kX3N0cmVhbT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NlbmRfaGVhZGVyc19hZnRlcl90
cmFpbGVycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIHNob3VsZCBub3Qgc2VuZCBI
RUFERVJTIGFmdGVyIHRyYWlsZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBzdHJlYW1faWQgPSBxdWljX2Ns
aWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKKyAgICAgICAgaDNfY2xpZW50LnNl
bmRfaGVhZGVycygKKyAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAg
ICBoZWFkZXJzPVsKKyAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKKyAgICAg
ICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAorICAgICAgICAgICAgICAgIChiIjph
dXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAorICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
IiksCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudC5zZW5kX2hl
YWRlcnMoCisgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNv
bWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICkKKyAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgorICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJhaWxlciIsIGIiZm9v
IildLAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisK
KyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKKyAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCisgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQorICAgICAgICApCisgICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKKworICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2
ZW50KAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD0zLAorICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJjYzAw
MDAwMDBmYWNlYjAwYyIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09RmFsc2UsCisgICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9
NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQorICAgICAgICApCisgICAgICAgIGgz
X2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoc3Ry
ZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCisgICAgICAgICAgICApCisgICAg
ICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAg
ICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjAwNDA4
ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJjMjA3MjY1NjE2MzY4
MjAiCisgICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcwNmY2
OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgorICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2OTYx
NjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCisgICAgICAgICAgICAgICAg
ICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50Lmhh
bmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD03LAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJpbmFz
Y2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIzZmUxMDFjNjk2ZDA3YWJl
OTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAg
ICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICksCisg
ICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0
aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNo
byByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIK
KyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAs
CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAorICAgICAgICAgICAgICAg
ICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9ibG9ja2VkX3N0
cmVhbV90cmFpbGVyKHNlbGYpOgorICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVj
dGlvbigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xp
ZW50PVRydWUpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1
aWNfY2xpZW50KQorCisgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCisgICAg
ICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAg
ICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBjIgor
ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAor
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgwMiIs
IGVuZF9zdHJlYW09RmFsc2UpCisgICAgICAgICkKKyAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9l
dmVudCgKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRhdGE9
YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAorICAgICAgICAg
ICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAg
ICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgwMTdk
NDAzOTcxOTY2ZTMyY2E5OGI0NmYiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCisg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OnN0YXR1cyIsIGIiMjAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAoYiJkYXRlIiwgYiJN
b24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2VuZGVkPUZhbHNlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKKyAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCisgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwMDQwOGQ3OTZmNzUy
MDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYxNjM2ODIwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5NmU3
NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCisgICAgICAgICAgICAgICAgICAgICAgICAi
NjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0NzA2
ZjY5NmU3NCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2MTcy
Njk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgorICAgICAgICAgICAg
ICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTczIgorICAgICAgICAg
ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBkYXRhPSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0aGUgL2VjaG8g
ZW5kcG9pbnQgZm9yIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNobyByZXNwb25z
ZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIKKyAgICAgICAg
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCisgICAgICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2Np
aS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICApCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQo
CisgICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAorICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9NywKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKKyAgICAgICAgICAg
ICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKKyAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtX2lkPTAsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRl
ZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdW5pX3N0cmVh
bV9ncmVhc2Uoc2VsZik6CisgICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAo
cXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKKyAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29u
bmVjdGlvbihxdWljX3NlcnZlcikKKworICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9zdHJl
YW1fZGF0YSgKKyAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
CisgICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICB3aXRo
IGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6Cisg
ICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCisgICAgICAg
ICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKKyAgICAgICAgICAgIHN0cmVhbV9pZCA9IHF1
aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQorICAgICAgICAgICAgaDNf
Y2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WworICAgICAgICAgICAgICAgICAgICAoYiI6bWV0
aG9kIiwgYiJHRVQiKSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCisg
ICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKKyAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwg
YiJmb28iKV0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAorICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAorICAgICAgICAgICAgZXZlbnRzID0g
aDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZXZlbnRzLAorICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIi
R0VUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJmb28iKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgICAg
ICAgICAgIyBzZW5kIHJlc3BvbnNlCisgICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFkZXJz
KAorICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAg
aGVhZGVycz1bCisgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAorICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1G
YWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCisg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICBkYXRh
PWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCisgICAgICAgICAgICAgICAgZW5k
X3N0cmVhbT1GYWxzZSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGgzX3NlcnZlci5zZW5k
X2hlYWRlcnMoCisgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKKyAgICAgICAg
ICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIildLAorICAgICAgICAg
ICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBy
ZWNlaXZlIHJlc3BvbnNlCisgICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3Nl
cnZlciwgaDNfY2xpZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgICAgICBldmVudHMsCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBI
ZWFkZXJzUmVjZWl2ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1f
ZW5kZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAg
IERhdGFSZWNlaXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9k
eT5oZWxsbzwvYm9keT48L2h0bWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNl
aXZlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJiYXIiKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCisgICAgICAgICAg
ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKworICAgIGRl
ZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBoM19jbGllbnRfYW5k
X3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgorICAgICAgICAgICAgaDNf
c2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQorCisgICAgICAgICAgICAjIHVua25v
d24gc3RyZWFtIHR5cGUgOQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCisgICAgICAgICAgICBxdWljX2Ns
aWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtdKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtleXMo
KSksIFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1b
Ml0uYnVmZmVyLCBiIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5f
c3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQorCisgICAgICAgICAgICAjIHVua25vd24gc3RyZWFt
IHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQorICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVp
Y19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1U
cnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCisKKyAgICAg
ICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAiKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNf
c2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2VydmVy
Ll9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
M19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwgYiJceDQwIikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uc3RyZWFtX3R5
cGUsIE5vbmUpCisKKyAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3Ry
ZWFtX2lkLCBiIlx4NDAiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2Zl
cihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUs
IDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1
ZmZlciwgYiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVh
bVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmI3YzUyMDkzOGUyY2YyNGFlYjc2YjkxOWQ5NjdhZmJjNmM2ZWVlMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2xvZ2dlci5weQpAQCAtMCwwICsxLDM3IEBA
Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5sb2dn
ZXIgaW1wb3J0IFF1aWNMb2dnZXIKKworCitjbGFzcyBRdWljTG9nZ2VyVGVzdChUZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIGxvZ2dlciA9IFF1aWNMb2dnZXIo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci50b19kaWN0KCksIHsicWxvZ192ZXJz
aW9uIjogImRyYWZ0LTAxIiwgInRyYWNlcyI6IFtdfSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3Ry
YWNlKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBRdWljTG9nZ2VyKCkKKyAgICAgICAgdHJhY2Ug
PSBsb2dnZXIuc3RhcnRfdHJhY2UoaXNfY2xpZW50PVRydWUsIG9kY2lkPWJ5dGVzKDgpKQorICAg
ICAgICBsb2dnZXIuZW5kX3RyYWNlKHRyYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgbG9nZ2VyLnRvX2RpY3QoKSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAicWxvZ192ZXJzaW9uIjogImRyYWZ0LTAxIiwKKyAgICAgICAgICAgICAgICAidHJhY2Vz
IjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY29t
bW9uX2ZpZWxkcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0RDSUQiOiAiMDAw
MDAwMDAwMDAwMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZV90
aW1lIjogIjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJjb25maWd1cmF0aW9uIjogeyJ0aW1lX3VuaXRzIjogInVzIn0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAiZXZlbnRfZmllbGRzIjogWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZWxhdGl2ZV90aW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdv
cnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudF90eXBlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgImV2ZW50cyI6IFtdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbnRhZ2VfcG9pbnQiOiB7Im5hbWUiOiAiYWlvcXVpYyIsICJ0eXBlIjogImNsaWVu
dCJ9LAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Bh
Y2tldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NjliN2FhOWE2MTk3NjdhN2Y1YzAzNWY3NzMwZmYzNzFkN2Q1Zjc5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CkBAIC0wLDAgKzEsNTEzIEBACitp
bXBvcnQgYmluYXNjaWkKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlv
cXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVhZEVycm9yCitmcm9tIGFpb3F1aWMu
cXVpYyBpbXBvcnQgcGFja2V0Citmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgKKyAg
ICBQQUNLRVRfVFlQRV9JTklUSUFMLAorICAgIFBBQ0tFVF9UWVBFX1JFVFJZLAorICAgIFF1aWNQ
cmVmZXJyZWRBZGRyZXNzLAorICAgIFF1aWNQcm90b2NvbFZlcnNpb24sCisgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMsCisgICAgZGVjb2RlX3BhY2tldF9udW1iZXIsCisgICAgZW5jb2RlX3F1
aWNfdmVyc2lvbl9uZWdvdGlhdGlvbiwKKyAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZywKKyAg
ICBwdWxsX3F1aWNfaGVhZGVyLAorICAgIHB1bGxfcXVpY19wcmVmZXJyZWRfYWRkcmVzcywKKyAg
ICBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCisgICAgcHVzaF9xdWljX3ByZWZlcnJl
ZF9hZGRyZXNzLAorICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKKykKKworZnJv
bSAudXRpbHMgaW1wb3J0IGxvYWQKKworCitjbGFzcyBQYWNrZXRUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9kZWNvZGVfcGFja2V0X251bWJlcihzZWxmKToKKyAgICAgICAgIyBleHBlY3Rl
ZCA9IDAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MCksIGkpCisK
KyAgICAgICAgIyBleHBlY3RlZCA9IDEyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29k
ZV9wYWNrZXRfbnVtYmVyKDAsIDgsIGV4cGVjdGVkPTEyOCksIDI1NikKKyAgICAgICAgZm9yIGkg
aW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3Bh
Y2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI4KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVk
ID0gMTI5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwg
OCwgZXhwZWN0ZWQ9MTI5KSwgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9w
YWNrZXRfbnVtYmVyKDEsIDgsIGV4cGVjdGVkPTEyOSksIDI1NykKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UoMiwgMjU2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tl
dF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MTI5KSwgaSkKKworICAgICAgICAjIGV4cGVjdGVkID0g
MjU2CisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDEyOCk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlY29kZV9wYWNrZXRfbnVtYmVyKGksIDgsIGV4cGVjdGVkPTI1NiksIDI1NiAr
IGkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOSwgMjU2KToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9MjU2KSwgaSkK
KworICAgIGRlZiB0ZXN0X3B1bGxfZW1wdHkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3Ip
OgorICAgICAgICAgICAgcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQor
CisgICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX2NsaWVudChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9jbGllbnQuYmluIikpCisgICAgICAgIGhlYWRlciA9
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX0lOSVRJQUwp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYmluYXNj
aWkudW5oZXhsaWZ5KCI4NThiMzkzNjhiOGUzYzZlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIudG9rZW4sIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5
X3RhZywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwg
MTI2MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRl
ZiB0ZXN0X3B1bGxfaW5pdGlhbF9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihk
YXRhPWxvYWQoImluaXRpYWxfc2VydmVyLmJpbiIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1
aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVy
LnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCBQQUNLRVRfVFlQRV9JTklUSUFMKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCIx
OTVjNjgzNDRlMjhkNDc5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2Vu
LCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDE4NCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAxOCkKKworICAgIGRlZiB0ZXN0X3B1
bGxfcmV0cnkoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInJldHJ5LmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBl
LCBQQUNLRVRfVFlQRV9SRVRSWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVz
dGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImU5ZDE0NmQ4ZDE0Y2IyOGUiKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlYWRlci5zb3VyY2VfY2lkLAor
ICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KCIwYjBhMjA1YTY0OGZjZjgyZDg1ZjEyOGI2
N2JiZTA4MDUzZTYiKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgaGVhZGVyLnRva2VuLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICI0NDM5N2EzNWQ2OTgzOTNjMTM0YjA4YTkzMjczNzg1OWY0NDZkM2Fh
ZGQwMGVkODE1NDBjOGQ4ZGUxNzIiCisgICAgICAgICAgICAgICAgIjkwNmQzZTdhMTExYjUwM2Y5
NzI5Yjg5MjhlNzUyOGY5YTg2YTQ1ODFmOWViYjRjYjNiNTNjMjgzNjYxZSIKKyAgICAgICAgICAg
ICAgICAiODUzMDc0MWE5OTE5MmVlNTY5MTRjNTYyNjk5OGVjMGYiCisgICAgICAgICAgICApLAor
ICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWFkZXIu
aW50ZWdyaXR5X3RhZywgYmluYXNjaWkudW5oZXhsaWZ5KCJlMWEzYzgwYzc5N2VhNDAxYzA4ZmM5
YzM0MmEyZDkwZCIpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIu
cmVzdF9sZW5ndGgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTI1
KQorCisgICAgICAgICMgY2hlY2sgaW50ZWdyaXR5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKKyAgICAgICAgICAgICAgICBi
dWYuZGF0YV9zbGljZSgwLCAxMDkpLCBiaW5hc2NpaS51bmhleGxpZnkoImZiYmQyMTliNzM2M2I2
NGIiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBoZWFkZXIuaW50ZWdyaXR5X3RhZywK
KyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcHVsbF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYp
OgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ2ZXJzaW9uX25lZ290aWF0aW9uLmJp
biIpKQorICAgICAgICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVu
Z3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIFF1aWNQcm90b2NvbFZlcnNp
b24uTkVHT1RJQVRJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90
eXBlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9j
aWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY5MmY0
MzM2ZmE5NTFiYTEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudG9rZW4sIGIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdyaXR5X3RhZywgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyMykKKworICAgIGRlZiB0ZXN0X3B1bGxfbG9u
Z19oZWFkZXJfZGNpZF90b29fbG9uZyhzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVyKAorICAg
ICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImM2ZmYw
MDAwMTYxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Igor
ICAgICAgICAgICAgICAgICIwMWM1MTRmOTllYzRiYmYxZjdhMzBmOWIwYzk0ZmVmNzE3ZjFjMWQw
N2ZlYzI0Yzk5YTg2NGRhN2VkZSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcHVs
bF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiRGVzdGluYXRpb24gQ0lEIGlzIHRvbyBsb25nICgy
MSBieXRlcykiKQorCisgICAgZGVmIHRlc3RfcHVsbF9sb25nX2hlYWRlcl9zY2lkX3Rvb19sb25n
KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoCisgICAgICAgICAgICBkYXRhPWJpbmFzY2lp
LnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiYzJmZjAwMDAxNjAwMTUwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQiCisgICAgICAgICAgICAgICAgIjAxY2Zj
ZWU5OWVjNGJiZjFmN2EzMGY5YjBjOTQxN2I4YzI2M2NkZDhjYzk3MmE0NDM5ZDY4YTQ2MzIwIgor
ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9z
dF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlv
biksICJTb3VyY2UgQ0lEIGlzIHRvbyBsb25nICgyMSBieXRlcykiKQorCisgICAgZGVmIHRlc3Rf
cHVsbF9sb25nX2hlYWRlcl9ub19maXhlZF9iaXQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZl
cihkYXRhPWIiXHg4MFx4ZmZceDAwXHgwMFx4MTFceDAwXHgwMCIpCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBwdWxsX3F1aWNf
aGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0IGlzIHplcm8iKQorCisgICAgZGVm
IHRlc3RfcHVsbF9sb25nX2hlYWRlcl90b29fc2hvcnQoc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWIiXHhjMFx4MDAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1
ZmZlclJlYWRFcnJvcik6CisgICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9j
aWRfbGVuZ3RoPTgpCisKKyAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hlYWRlcihzZWxmKToKKyAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgic2hvcnRfaGVhZGVyLmJpbiIpKQorICAgICAg
ICBoZWFkZXIgPSBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgMHg1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIuZGVzdGluYXRpb25fY2lkLCBiaW5hc2NpaS51bmhleGxpZnkoImY0NWFhN2I1OWMwZTFh
ZDYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCAxMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWYudGVsbCgpLCA5KQorCisgICAgZGVmIHRlc3RfcHVsbF9zaG9ydF9oZWFkZXJfbm9fZml4
ZWRfYml0KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIlx4MDAiKQorICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAg
cHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikK
KworICAgIGRlZiB0ZXN0X2VuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAorICAgICAgICAg
ICAgZGVzdGluYXRpb25fY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgiOWFhYzVhNDliYTg3YTg0OSIp
LAorICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2NpaS51bmhleGxpZnkoImY5MmY0MzM2ZmE5
NTFiYTEiKSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHg0NTQ3NDcxNiwgUXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNV0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhWzE6XSwgbG9hZCgidmVyc2lvbl9uZWdvdGlhdGlvbi5iaW4iKVsxOl0pCisK
KworY2xhc3MgUGFyYW1zVGVzdChUZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAg
IGRlZiB0ZXN0X3BhcmFtcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlm
eSgKKyAgICAgICAgICAgICIwMTAyNjcxMDAyMTBjYzJmZDZlN2Q5N2E1M2FiNWJlODViMjhkNzVj
ODAwODAzMDI0N2U0MDQwNDgwMDVmZmYiCisgICAgICAgICAgICAiYTA1MDQ4MDAwZmZmZjA2MDQ4
MDAwZmZmZjA4MDEwNjBhMDEwMzBiMDExOSIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UK
KyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5z
cG9ydFBhcmFtZXRlcnMoCisgICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTEwMDAwLAorICAg
ICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhkNlx4ZTdceGQ5elNc
eGFiW1x4ZThbKFx4ZDdcXFx4ODBceDA4IiwKKyAgICAgICAgICAgICAgICBtYXhfcGFja2V0X3Np
emU9MjAyMCwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5MzIxMCwKKyAgICAg
ICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY1NTM1LAorICAg
ICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY1NTM1LAor
ICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1Ob25lLAorICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAorICAgICAgICAgICAgICAgIGlu
aXRpYWxfbWF4X3N0cmVhbXNfdW5pPU5vbmUsCisgICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4
cG9uZW50PTMsCisgICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJv
dG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oYnVmLmRhdGEpLCBsZW4oZGF0YSkpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfbGVnYWN5
KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
IjAwNDcwMDAyMDAxMGNjMmZkNmU3ZDk3YTUzYWI1YmU4NWIyOGQ3NWM4MDA4MDAwODAwMDEwNjAw
MDEwMDAyNiIKKyAgICAgICAgICAgICI3MTAwMDA2MDAwNDgwMDBmZmZmMDAwNTAwMDQ4MDAwZmZm
ZjAwMDQwMDA0ODAwNWZmZmEwMDBhMDAwMTAzMDAiCisgICAgICAgICAgICAiMGIwMDAxMTkwMDAz
MDAwMjQ3ZTQiCisgICAgICAgICkKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKAor
ICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD0xMDAwMCwKKyAgICAgICAgICAgICAgICBzdGF0
ZWxlc3NfcmVzZXRfdG9rZW49YiJceGNjL1x4ZDZceGU3XHhkOXpTXHhhYltceGU4WyhceGQ3XFxc
eDgwXHgwOCIsCisgICAgICAgICAgICAgICAgbWF4X3BhY2tldF9zaXplPTIwMjAsCisgICAgICAg
ICAgICAgICAgaW5pdGlhbF9tYXhfZGF0YT0zOTMyMTAsCisgICAgICAgICAgICAgICAgaW5pdGlh
bF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD02NTUzNSwKKyAgICAgICAgICAgICAgICBpbml0
aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZT02NTUzNSwKKyAgICAgICAgICAgICAgICBp
bml0aWFsX21heF9zdHJlYW1fZGF0YV91bmk9Tm9uZSwKKyAgICAgICAgICAgICAgICBpbml0aWFs
X21heF9zdHJlYW1zX2JpZGk9NiwKKyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1z
X3VuaT1Ob25lLAorICAgICAgICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAg
ICAgICAgICAgIG1heF9hY2tfZGVsYXk9MjUsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAg
ICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGRhdGEpKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2Rpc2FibGVfYWN0aXZlX21pZ3JhdGlv
bihzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiMGMwMCIpCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBw
YXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYs
IHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cyhkaXNhYmxlX2FjdGl2ZV9taWdyYXRpb249VHJ1ZSkpCisKKyAgICAgICAgIyBzZXJpYWxpemUK
KyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3Rv
Y29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJh
bXNfZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uX2xlZ2FjeShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgiMDAwNDAwMGMwMDAwIikKKworICAgICAgICAjIHBhcnNlCisg
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1bGxfcXVp
Y190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lv
bj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZl
X21pZ3JhdGlvbj1UcnVlKSkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3Bh
cmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWlj
UHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1CisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19wcmVmZXJyZWRfYWRk
cmVzcyhzZWxmKToKKyAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICIwZDNiOGJhMjdiODYxMTUzMjQwMDg5MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUz
MTI2MmM0NTE4ZDYiCisgICAgICAgICAgICAiMzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZi
MmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCisgICAgICAgICkKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHBhcmFtcyA9IHB1
bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAgICAgICAgICAgIGJ1ZiwgcHJvdG9jb2xf
dmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3CisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhcmFtcywKKyAgICAgICAgICAgIFF1aWNU
cmFuc3BvcnRQYXJhbWV0ZXJzKAorICAgICAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzPVF1
aWNQcmVmZXJyZWRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpcHY0X2FkZHJlc3M9KCIx
MzkuMTYyLjEyMy4xMzQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNz
PSgiMjQwMDo4OTAyOjpmMDNjOjkxZmY6ZmU2OTphNDU0IiwgNDQzNSksCisgICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4
OTBceDk1YDciLAorICAgICAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJG
XHhiMlx4ZTAtRUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwMCkKKyAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9y
dF9wYXJhbWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249
UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcHJlZmVycmVk
X2FkZHJlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5
KAorICAgICAgICAgICAgIjAwM2YwMDBkMDAzYjhiYTI3Yjg2MTE1MzI0MDA4OTAyMDAwMDAwMDBm
MDNjOTFmZmZlNjlhNDU0MTE1MzEyNiIKKyAgICAgICAgICAgICIyYzQ1MThkNjMwMTNmMGMyODdl
ZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2ZTdkNDgiCisgICAgICAgICAg
ICAiZWNiNCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJh
bWV0ZXJzKAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZl
cnNpb24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisg
ICAgICAgICAgICAgICAgcHJlZmVycmVkX2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCisg
ICAgICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFm
ZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1i
ImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZhXHg5MFx4OTVgNyIsCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5c
XG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1sZW4oZGF0YSkpCisgICAgICAgIHB1c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKKyAg
ICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNp
b24uRFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBkYXRhKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX3Vua25vd24oc2VsZik6CisgICAgICAgIGRh
dGEgPSBiaW5hc2NpaS51bmhleGxpZnkoIjgwMDBmZjAwMDEwMCIpCisKKyAgICAgICAgIyBwYXJz
ZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwYXJhbXMgPSBwdWxs
X3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCisgICAgICAgICAgICBidWYsIHByb3RvY29sX3Zl
cnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNworICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFyYW1zLCBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygpKQorCisgICAg
ZGVmIHRlc3RfcGFyYW1zX3Vua25vd25fbGVnYWN5KHNlbGYpOgorICAgICAgICAjIGZiLm12ZnN0
Lm5ldCBzZW5kcyBhIHByb3ByaWV0YXJ5IHBhcmFtZXRlciA2NTI4MAorICAgICAgICBkYXRhID0g
YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjAwNjQwMDA1MDAwNDgwMDEwNDAwMDAw
NjAwMDQ4MDAxMDQwMDAwMDcwMDA0ODAwMTA0MDAwMDA0MDAwNDgwMSIKKyAgICAgICAgICAgICIw
MDAwMDAwMDgwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDkwMDA4YzAwMDAwMDBmZmZmZmZmZjAwMDEw
MDA0ODAiCisgICAgICAgICAgICAiMDBlYTYwMDAwYTAwMDEwMzAwMDMwMDAyNTAwMDAwMDIwMDEw
NjE2MTYxNjE2MjYyNjI2MjYzNjM2MzYzNjQ2IgorICAgICAgICAgICAgIjQ2NDY0ZmYwMDAwMDEw
MCIKKyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9ZGF0YSkKKyAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
KAorICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24u
RFJBRlRfMjUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgcGFyYW1zLAorICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCisgICAgICAg
ICAgICAgICAgaWRsZV90aW1lb3V0PTYwMDAwLAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19y
ZXNldF90b2tlbj1iImFhYWFiYmJiY2NjY2RkZGQiLAorICAgICAgICAgICAgICAgIG1heF9wYWNr
ZXRfc2l6ZT00MDk2LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9MTA0ODU3NiwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY2NTYw
LAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY2
NTYwLAorICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT02NjU2MCwK
KyAgICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX2JpZGk9NDI5NDk2NzI5NSwKKyAg
ICAgICAgICAgICAgICBpbml0aWFsX21heF9zdHJlYW1zX3VuaT00Mjk0OTY3Mjk1LAorICAgICAg
ICAgICAgICAgIGFja19kZWxheV9leHBvbmVudD0zLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
KQorCisgICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2NF9vbmx5KHNlbGYpOgorICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgIjhiYTI3Yjg2MTE1
MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyNjJjNDUxOGQ2MzAxMyIKKyAg
ICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2
ZTdkNDhlY2I0IgorICAgICAgICApCisKKyAgICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9IHB1bGxfcXVpY19w
cmVmZXJyZWRfYWRkcmVzcyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBwcmVmZXJyZWRfYWRkcmVzcywKKyAgICAgICAgICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNz
KAorICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUp
LAorICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz1Ob25lLAorICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+XHhmYVx4OTBceDk1YDci
LAorICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIkZceGIyXHhlMC1FSFx4
MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEp
KQorICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmLCBwcmVmZXJyZWRfYWRk
cmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKworICAgIGRl
ZiB0ZXN0X3ByZWZlcnJlZF9hZGRyZXNzX2lwdjZfb25seShzZWxmKToKKyAgICAgICAgZGF0YSA9
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICIwMDAwMDAwMDAwMDAyNDAwODkwMjAw
MDAwMDAwZjAzYzkxZmZmZTY5YTQ1NDExNTMxMjYyYzQ1MThkNjMwMTMiCisgICAgICAgICAgICAi
ZjBjMjg3ZWQzNTczZWZhOTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNiNCIK
KyAgICAgICAgKQorCisgICAgICAgICMgcGFyc2UKKyAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9
ZGF0YSkKKyAgICAgICAgcHJlZmVycmVkX2FkZHJlc3MgPSBwdWxsX3F1aWNfcHJlZmVycmVkX2Fk
ZHJlc3MoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcHJlZmVy
cmVkX2FkZHJlc3MsCisgICAgICAgICAgICBRdWljUHJlZmVycmVkQWRkcmVzcygKKyAgICAgICAg
ICAgICAgICBpcHY0X2FkZHJlc3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBpcHY2X2FkZHJlc3M9
KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5
NWA3IiwKKyAgICAgICAgICAgICAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW49YiJGXHhiMlx4ZTAt
RUhceDBiXHhhNmQ+XFxufUhceGVjXHhiNCIsCisgICAgICAgICAgICApLAorICAgICAgICApCisK
KyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihk
YXRhKSkKKyAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcHJlZmVycmVk
X2FkZHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKwor
Y2xhc3MgRnJhbWVUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWUoc2VsZik6
CisgICAgICAgIGRhdGEgPSBiIlx4MDBceDAyXHgwMFx4MDAiCisKKyAgICAgICAgIyBwYXJzZQor
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICByYW5nZXNldCwgZGVsYXkg
PSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRl
bGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBh
Y2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdl
c2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKKwor
ICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZShzZWxmKToKKyAgICAgICAgZGF0
YSA9IGIiXHgwMlx4MDJceDAxXHgwMFx4MDBceDAwIgorCisgICAgICAgICMgcGFyc2UKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKKyAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFj
a2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGVsYXksIDIpCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKKyAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1lKGJ1
ZiwgcmFuZ2VzZXQsIGRlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBk
YXRhKQorCisgICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlXzIoc2VsZik6Cisg
ICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAwXHgwMyIKKworICAgICAgICAjIHBh
cnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBk
ZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KSwgcmFuZ2UoNSwgNildKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCisgICAgICAgIHBhY2tldC5wdXNoX2Fj
a19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYuZGF0YSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X2Fja19mcmFtZV93aXRoX29uZV9yYW5nZV8z
KHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA1XHgwMlx4MDFceDAwXHgwMVx4MDIiCisKKyAg
ICAgICAgIyBwYXJzZQorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBy
YW5nZXNldCwgZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMyksIHJhbmdlKDUsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6
ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNr
ZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF90
d29fcmFuZ2VzKHNlbGYpOgorICAgICAgICBkYXRhID0gYiJceDA0XHgwMlx4MDJceDAwXHgwMFx4
MDBceDAwXHgwMCIKKworICAgICAgICAjIHBhcnNlCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCisgICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShi
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KSwgcmFuZ2UoMiwgMyksIHJhbmdlKDQsIDUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWxheSwgMikKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQorICAgICAgICBwYWNrZXQucHVzaF9hY2tfZnJhbWUoYnVmLCByYW5n
ZXNldCwgZGVsYXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGRhdGEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWlsZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZTIz
MTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVjNmY3Y2FkODkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXRfYnVpbGRlci5weQpAQCAtMCwwICsxLDU2OSBA
QAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKKworZnJvbSBhaW9xdWljLnF1aWMuY3J5
cHRvIGltcG9ydCBDcnlwdG9QYWlyCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0ICgK
KyAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKKyAg
ICBQQUNLRVRfVFlQRV9PTkVfUlRULAorICAgIFF1aWNGcmFtZVR5cGUsCisgICAgUXVpY1Byb3Rv
Y29sVmVyc2lvbiwKKykKK2Zyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCAo
CisgICAgUXVpY1BhY2tldEJ1aWxkZXIsCisgICAgUXVpY1BhY2tldEJ1aWxkZXJTdG9wLAorICAg
IFF1aWNTZW50UGFja2V0LAorKQorZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgRXBvY2gKKworCitk
ZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKKyAgICByZXR1cm4gUXVpY1BhY2tl
dEJ1aWxkZXIoCisgICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAorICAgICAgICBpc19jbGllbnQ9
aXNfY2xpZW50LAorICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgIHBlZXJfY2lkPWJ5
dGVzKDgpLAorICAgICAgICBwZWVyX3Rva2VuPWIiIiwKKyAgICAgICAgc3Bpbl9iaXQ9RmFsc2Us
CisgICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSwKKyAgICApCisK
KworZGVmIGNyZWF0ZV9jcnlwdG8oKToKKyAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKKyAgICBj
cnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRydWUsIHZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKKyAgICByZXR1cm4gY3J5cHRvCisKKworY2xhc3Mg
UXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9sb25nX2hlYWRl
cl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAg
ICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNr
ZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhY2tldHMsIFtdKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkKKworICAgIGRlZiB0ZXN0
X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVp
bGRlcihpc19jbGllbnQ9VHJ1ZSkKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisK
KyAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKKyAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKKyAgICAgICAgYnVmID0g
YnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBh
Y2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJQUwsIGVtcHR5CisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5J
VElBTCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAxKQorCisgICAgZGVmIHRl
c3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKKyAgICAgICAgYnVpbGRlciA9
IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVf
Y3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAg
ICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAg
ICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisKKyAg
ICAgICAgIyBJTklUSUFMCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBF
X0lOSVRJQUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJh
bWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDEw
MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCisK
KyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQ
QUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWls
ZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAg
ICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdy
YW1zWzFdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBh
Y2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisg
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5n
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5
dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBRdWljU2VudFBh
Y2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElBTCwKKyAgICAgICAg
ICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19l
bGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVl
LAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVy
X2luaXRpYWxfc2VydmVyKHNlbGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIo
KQorICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwK
KyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRv
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFj
ZSwgMTIzNikKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBl
LkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIElOSVRJ
QUwsIGVtcHR5CisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJ
QUwsIGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFj
a2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAx
NDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwYWNrZXRzLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAg
ICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAg
ICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIHBhY2tldF9udW1iZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFD
S0VUX1RZUEVfSU5JVElBTCwKKyAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz0xNDUsCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fc2hvcnRfaGVhZGVyKHNl
bGYpOgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQorICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3RoCisgICAg
ICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEy
MzYpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQ
VE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1w
dHkpCisKKyAgICAgICAgIyBJTklUSUFMLCBlbXB0eQorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGZ1bGwgbGVu
Z3RoCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSkKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5y
ZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVy
LnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIE9ORV9SVFQsIGVtcHR5CisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hl
Y2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2go
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5JVElB
TCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAg
ICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRv
X3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAg
ICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAg
ICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAg
ICAgICAgICAgIFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9j
aC5PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19jcnlwdG9fcGFja2V0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVy
PTEsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQs
CisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICAp
LAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKKworICAg
IGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2VsZik6CisgICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQorCisgICAgICAgICMgSU5JVElBTAorICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNL
RVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRl
ci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQorICAgICAgICBidWYgPSBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhi
eXRlcygxOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5KQorCisgICAgICAgICMgSEFORFNIQUtFCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0
KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQorICAgICAgICBidWYgPSBidWls
ZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9i
eXRlcyhieXRlcygyOTkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0
X2lzX2VtcHR5KQorCisgICAgICAgICMgT05FX1JUVAorICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCisgICAgICAgIGJ1ZiA9IGJ1
aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGJ5dGVzKDI5OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCisKKyAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMKKyAgICAgICAgZGF0YWdy
YW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGRhdGFncmFtcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFt
c1swXSksIDkxNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tl
dHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAg
ICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICAgICAgICAg
IGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
dHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVz
PTI0NCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hBS0UsCisgICAgICAgICAg
ICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxp
Y2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCisgICAgICAgICAgICAgICAgICAg
IHNlbnRfYnl0ZXM9MzQzLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0yLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTMyNywKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9lbXB0eShzZWxmKToKKyAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkK
KyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgICMgY2hlY2sg
ZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRl
c3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgICMg
T05FX1JUVCwgZnVsbCBsZW5ndGgKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VU
X1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIu
cmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKKyAgICAgICAgYnVmID0gYnVpbGRlci5zdGFy
dF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0
ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFt
cworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisg
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
XSwKKyAgICAgICAgKQorCisgICAgICAgICMgY2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0
X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgYnVp
bGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVz
ID0gMTAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8oKQorCisgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDk3MykKKyAg
ICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKKyAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNl
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMDAw
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAgICAg
ICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTAwMCwKKyAg
ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgICAgICMg
Y2hlY2sgYnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMSkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3pl
cm8oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBtYXhfZmxpZ2h0X2J5dGVzID0gMCBvbmx5
IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgorCisgICAgICAgIENoZWNrIENSWVBU
TyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVf
YnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAg
ICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6CisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3Bh
Y2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgICAgICBidWlsZGVyLnN0
YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdy
YW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQorCisgICAgICAgICMgY2hlY2sg
YnVpbGRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwg
MCkKKworICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzX3plcm9fYWNr
KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyA9IDAgb25seSBh
bGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KKworICAgICAgICBDaGVjayBBQ0sgaXMg
YWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigp
CisgICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKKworICAgICAgICBjcnlwdG8g
PSBjcmVhdGVfY3J5cHRvKCkKKworICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRf
VFlQRV9PTkVfUlRULCBjcnlwdG8pCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
UXVpY0ZyYW1lVHlwZS5BQ0spCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDY0KSkKKwor
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Cisg
ICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlw
dG8pCisgICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRP
KQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCisgICAgICAgIGRhdGFncmFtcywgcGFja2V0
cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3Jh
bXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCA5MikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHBhY2tldHMsCisgICAgICAg
ICAgICBbCisgICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCisgICAgICAgICAgICAgICAg
ICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgcGFja2V0X251bWJlcj0wLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNL
RVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTkyLAorICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBj
aGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVt
YmVyLCAxKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18xKHNl
bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGRvZXNuJ3QgYWxsb3cg
YW55IHBhY2tldHMuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxk
ZXIoKQorICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDExCisKKyAgICAgICAgY3J5
cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhR
dWljUGFja2V0QnVpbGRlclN0b3ApOgorICAgICAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQo
UEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorCisgICAgICAgICMgY2hlY2sgZGF0YWdyYW1z
CisgICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFja2V0cywgW10pCisKKyAgICAgICAgIyBjaGVjayBidWlsZGVyCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQorCisgICAgZGVmIHRlc3Rfc2hvcnRf
aGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgbWF4
X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KKyAgICAgICAgIiIiCisgICAgICAg
IGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5
dGVzID0gODAwCisKKyAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCisKKyAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNzczKQor
ICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQor
ICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQor
CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToK
KyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFncmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBh
Y2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0
YWdyYW1zKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwg
ODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcGFja2V0cywKKyAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAgICAgICAgICAgICAgICAgaW5fZmxp
Z2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBB
Q0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9ODAwLAor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICAj
IGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9u
dW1iZXIsIDEpCisKKyAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4X3RvdGFsX2J5dGVzXzMo
c2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxk
ZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAorCisgICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlw
dG8oKQorCisgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQs
IGNyeXB0bykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UsIDEyNTMpCisgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0Zy
YW1lVHlwZS5DUllQVE8pCisgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5w
YWNrZXRfaXNfZW1wdHkpCisKKyAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZ
UEVfT05FX1JUVCwgY3J5cHRvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVt
YWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQorICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2Zy
YW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQorICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhi
dWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz
ZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKKyAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKKworICAgICAgICAjIGNoZWNrIGRhdGFn
cmFtcworICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgcGFja2V0cywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBRdWljU2Vu
dFBhY2tldCgKKyAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKKyAgICAg
ICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIGlzX2Fj
a19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1U
cnVlLAorICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisgICAgICAgICAgICAg
ICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAgICAgICAgICAg
ICAgIHNlbnRfYnl0ZXM9MTI4MCwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAorICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5PTkVfUlRU
LAorICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAorICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9f
cGFja2V0PVRydWUsCisgICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MSwKKyAgICAg
ICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05FX1JUVCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIF0sCisgICAgICAgICkKKworICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Jhbmdlc2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNDA4YzhhYzZjNTIzNmQxMzYzNDhhZDI0YWJmOWZh
NmQ4NTkzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5n
ZXNldC5weQpAQCAtMCwwICsxLDIzNyBAQAorZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UK
KworZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0CisKKworY2xhc3Mg
UmFuZ2VTZXRUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hZGRfc2luZ2xlX2R1cGxpY2F0
ZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5n
ZSgwLCAxKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCisKKyAgICBkZWYgdGVzdF9hZGRf
c2luZ2xlX29yZGVyZWQoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisg
ICAgICAgIHJhbmdlc2V0LmFkZCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAg
ICAgIHJhbmdlc2V0LmFkZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2Vz
ZXQpLCBbcmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9tZXJnZShzZWxm
KToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRk
KDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAx
KV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKSwgcmFuZ2UoMiwgMyldKQorCisgICAgICAgIHJh
bmdlc2V0LmFkZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBb
cmFuZ2UoMCwgMyldKQorCisgICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDMpXSkK
KworICAgICAgICByYW5nZXNldC5hZGQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDMpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKKwor
ICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vcmRlcmVkKHNlbGYpOgorICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKKworICAgICAgICByYW5n
ZXNldC5hZGQoMiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDAsIDQpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoNCwgNikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV9tZXJnZShzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDMs
IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KSwgcmFuZ2UoMywgNSldKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCAzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgNSldKQorCisgICAgZGVm
IHRlc3RfYWRkX3JhbmdlX292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQorCisgICAgICAgIHJhbmdlc2V0LmFk
ZCgzLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMiksIHJhbmdlKDMsIDUpXSkKKworICAgICAgICByYW5nZXNldC5hZGQoMSwgNSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDUpXSkKKworICAg
IGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwXzIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0g
UmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgyLCA0KQorICAgICAgICByYW5nZXNl
dC5hZGQoNiwgOCkKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEwLCAxMikKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDE2LCAxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgNCksIHJhbmdlKDYsIDgpLCByYW5nZSgxMCwgMTIpLCBy
YW5nZSgxNiwgMTgpXQorICAgICAgICApCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDEsIDE1KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMSwgMTUpLCBy
YW5nZSgxNiwgMTgpXSkKKworICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9yZXZlcnNlKHNlbGYpOgor
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKKworICAgICAgICByYW5nZXNldC5hZGQoNiwg
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDYsIDgp
XSkKKworICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDUpLCByYW5nZSg2LCA4KV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYsIDgpXSkKKworICAgIGRlZiB0
ZXN0X2FkZF9yYW5nZV91bm9yZGVyZWRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgcmFuZ2Vz
ZXQgPSBSYW5nZVNldCgpCisKKyAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuYWRkKDQsIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNCwgNildKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgy
LCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwg
NildKQorCisgICAgZGVmIHRlc3RfYWRkX3JhbmdlX3Vub3JkZXJlZF9zcGFyc2Uoc2VsZik6Cisg
ICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorCisgICAgICAgIHJhbmdlc2V0LmFkZCgwLCAy
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMild
KQorCisgICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDYsIDgpXSkKKworICAgICAgICBy
YW5nZXNldC5hZGQoMywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KSwgcmFuZ2UoNiwgOCldKQorCisgICAgZGVmIHRl
c3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAg
ICByYW5nZXNldC5hZGQoMCwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyMCwgMzApCisKKyAg
ICAgICAgcmFuZ2VzZXQuc3VidHJhY3QoMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDEwKSwgcmFuZ2UoMjAsIDMwKV0pCisKKyAgICBkZWYg
dGVzdF9zdWJ0cmFjdF9ub19jaGFuZ2Uoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VT
ZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoNSwgMTApCisgICAgICAgIHJhbmdlc2V0LmFkZCgx
NSwgMjApCisgICAgICAgIHJhbmdlc2V0LmFkZCgyNSwgMzApCisKKyAgICAgICAgcmFuZ2VzZXQu
c3VidHJhY3QoMCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIwKSwgcmFuZ2UoMjUsIDMwKV0pCisKKyAgICAgICAg
cmFuZ2VzZXQuc3VidHJhY3QoMTAsIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qo
cmFuZ2VzZXQpLCBbcmFuZ2UoNSwgMTApLCByYW5nZSgxNSwgMjApLCByYW5nZSgyNSwgMzApXSkK
KworICAgIGRlZiB0ZXN0X3N1YnRyYWN0X292ZXJsYXAoc2VsZik6CisgICAgICAgIHJhbmdlc2V0
ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQoMSwgNCkKKyAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDYsIDgpCisgICAgICAgIHJhbmdlc2V0LmFkZCgxMCwgMjApCisgICAgICAgIHJhbmdl
c2V0LmFkZCgzMCwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBs
aXN0KHJhbmdlc2V0KSwgW3JhbmdlKDEsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwg
cmFuZ2UoMzAsIDQwKV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAs
IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4KSwgcmFuZ2UoMTAsIDIwKSwgcmFuZ2UoMzAsIDQw
KV0KKyAgICAgICAgKQorCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDMsIDExKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMiwgMyksIHJhbmdlKDEx
LCAyMCksIHJhbmdlKDMwLCA0MCldKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Rfc3BsaXQoc2Vs
Zik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQorICAgICAgICByYW5nZXNldC5hZGQo
MCwgMTApCisgICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDIsIDUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoNSwgMTApXSkKKwor
ICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
Tm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBib29sKFJhbmdlU2V0KCkpCisKKyAg
ICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiByYW5nZXNldCkKKworICAgICAgICByYW5n
ZXNldCA9IFJhbmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgw
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCisK
KyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSksIHJhbmdlKDMsIDYpXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoMSBpbiByYW5nZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgyIGluIHJh
bmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiByYW5nZXNldCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKDQgaW4gcmFuZ2VzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1
IGluIHJhbmdlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gcmFuZ2VzZXQpCisK
KyAgICBkZWYgdGVzdF9lcShzZWxmKToKKyAgICAgICAgcjAgPSBSYW5nZVNldChbcmFuZ2UoMCwg
MSldKQorICAgICAgICByMSA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQor
ICAgICAgICByMiA9IFJhbmdlU2V0KFtyYW5nZSgzLCA0KSwgcmFuZ2UoMSwgMildKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMCA9PSByMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
MCA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMCA9PSAwKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyMSA9PSByMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMSA9PSBy
MCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIxID09IHIyKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHIxID09IDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIyKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocjIgPT0gcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cjIgPT0gcjApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjIgPT0gMCkKKworICAgIGRlZiB0
ZXN0X2xlbihzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdlc2V0KSwgMCkKKworICAgICAgICByYW5nZXNldCA9IFJh
bmdlU2V0KFtyYW5nZSgwLCAxKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJhbmdl
c2V0KSwgMSkKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgcmFuZ2VzZXQgPSBS
YW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkKKyAgICAgICAgciA9IHJhbmdlc2V0
LnNoaWZ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCByYW5nZSgxLCAyKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDMsIDQpXSkKKworICAg
IGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3Jhbmdl
KDEsIDIpLCByYW5nZSgzLCA0KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyYW5n
ZXNldCksICJSYW5nZVNldChbcmFuZ2UoMSwgMiksIHJhbmdlKDMsIDQpXSkiKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yZWNvdmVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzEzZjhmYzhhNGM0MGZiNjQzMTE0NGI4
YzBmYmJkYjdhODBiYTUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcmVjb3ZlcnkucHkKQEAgLTAsMCArMSwyMjcgQEAKK2ltcG9ydCBtYXRoCitmcm9tIHVuaXR0
ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMgaW1wb3J0IHRscworZnJvbSBhaW9x
dWljLnF1aWMucGFja2V0IGltcG9ydCBQQUNLRVRfVFlQRV9JTklUSUFMLCBQQUNLRVRfVFlQRV9P
TkVfUlRUCitmcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRlciBpbXBvcnQgUXVpY1NlbnRQ
YWNrZXQKK2Zyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBSYW5nZVNldAorZnJvbSBh
aW9xdWljLnF1aWMucmVjb3ZlcnkgaW1wb3J0ICgKKyAgICBRdWljUGFja2V0UGFjZXIsCisgICAg
UXVpY1BhY2tldFJlY292ZXJ5LAorICAgIFF1aWNQYWNrZXRTcGFjZSwKKyAgICBRdWljUnR0TW9u
aXRvciwKKykKKworCitkZWYgc2VuZF9wcm9iZSgpOgorICAgIHBhc3MKKworCitjbGFzcyBRdWlj
UGFja2V0UGFjZXJUZXN0KFRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHNlbGYucGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQorCisgICAgZGVmIHRlc3Rfbm9fbWVhc3Vy
ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTAuMCkpCisgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTAuMCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2Vu
ZF90aW1lKG5vdz0wLjApKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5v
dz0wLjApCisKKyAgICBkZWYgdGVzdF93aXRoX21lYXN1cmVtZW50KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0wLjApKQorICAg
ICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0wLjApCisKKyAgICAgICAgc2Vs
Zi5wYWNlci51cGRhdGVfcmF0ZShjb25nZXN0aW9uX3dpbmRvdz0xMjgwMDAwLCBzbW9vdGhlZF9y
dHQ9MC4wNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF9tYXgs
IDAuMDAwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhY2VyLmJ1Y2tldF90aW1l
LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYWNlci5wYWNrZXRfdGltZSwg
MC4wMDAwNSkKKworICAgICAgICAjIDE2IHBhY2tldHMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRf
dGltZShub3c9MS4wKSkKKyAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRf
c2VuZF90aW1lKG5vdz0xLjApLCAxLjAwMDA1KQorCisgICAgICAgICMgMiBwYWNrZXRzCisgICAg
ICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2Vs
Zi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAwNSkpCisgICAgICAgICAgICBzZWxmLnBh
Y2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDA1KQorICAgICAgICBzZWxmLmFzc2VydEFs
bW9zdEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMDUpLCAxLjAwMDEp
CisKKyAgICAgICAgIyAxIHBhY2tldAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBh
Y2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDEpKQorICAgICAgICBzZWxmLnBhY2VyLnVwZGF0
ZV9hZnRlcl9zZW5kKG5vdz0xLjAwMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwo
c2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MS4wMDAxKSwgMS4wMDAxNSkKKworICAgICAg
ICAjIDIgcGFja2V0cworICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpKQor
ICAgICAgICAgICAgc2VsZi5wYWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wMDAxNSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5v
dz0xLjAwMDE1KSwgMS4wMDAyKQorCisKK2NsYXNzIFF1aWNQYWNrZXRSZWNvdmVyeVRlc3QoVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNF
ID0gUXVpY1BhY2tldFNwYWNlKCkKKyAgICAgICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UgPSBRdWlj
UGFja2V0U3BhY2UoKQorICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0UgPSBRdWljUGFja2V0U3Bh
Y2UoKQorCisgICAgICAgIHNlbGYucmVjb3ZlcnkgPSBRdWljUGFja2V0UmVjb3ZlcnkoCisgICAg
ICAgICAgICBpc19jbGllbnRfd2l0aG91dF8xcnR0PUZhbHNlLCBzZW5kX3Byb2JlPXNlbmRfcHJv
YmUKKyAgICAgICAgKQorICAgICAgICBzZWxmLnJlY292ZXJ5LnNwYWNlcyA9IFsKKyAgICAgICAg
ICAgIHNlbGYuSU5JVElBTF9TUEFDRSwKKyAgICAgICAgICAgIHNlbGYuSEFORFNIQUtFX1NQQUNF
LAorICAgICAgICAgICAgc2VsZi5PTkVfUlRUX1NQQUNFLAorICAgICAgICBdCisKKyAgICBkZWYg
dGVzdF9kaXNjYXJkX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLnJlY292ZXJ5LmRpc2NhcmRf
c3BhY2Uoc2VsZi5JTklUSUFMX1NQQUNFKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X2Fja19lbGljaXRpbmcoc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAor
ICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9ORV9SVFQsCisgICAgICAgICAgICBpbl9mbGln
aHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9RmFsc2UsCisgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCisg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAorICAgICAgICAgICAg
c2VudF9ieXRlcz0xMjgwLAorICAgICAgICAgICAgc2VudF90aW1lPTAuMCwKKyAgICAgICAgKQor
ICAgICAgICBzcGFjZSA9IHNlbGYuT05FX1JUVF9TUEFDRQorCisgICAgICAgICMgwqBwYWNrZXQg
c2VudAorICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwgc3BhY2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQs
IDEyODApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDEpCisKKyAgICAgICAgIyBwYWNrZXQgYWNrJ2QKKyAgICAgICAgc2VsZi5yZWNvdmVyeS5v
bl9hY2tfcmVjZWl2ZWQoCisgICAgICAgICAgICBzcGFjZSwgYWNrX3Jhbmdlc2V0PVJhbmdlU2V0
KFtyYW5nZSgwLCAxKV0pLCBhY2tfZGVsYXk9MC4wLCBub3c9MTAuMAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQsIDApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQsIDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0cyksIDApCisK
KyAgICAgICAgIyBjaGVjayBSVFQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucmVjb3Zl
cnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292
ZXJ5Ll9ydHRfbGF0ZXN0LCAxMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVj
b3ZlcnkuX3J0dF9taW4sIDEwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNv
dmVyeS5fcnR0X3Ntb290aGVkLCAxMC4wKQorCisgICAgZGVmIHRlc3Rfb25fYWNrX3JlY2VpdmVk
X25vbl9hY2tfZWxpY2l0aW5nKHNlbGYpOgorICAgICAgICBwYWNrZXQgPSBRdWljU2VudFBhY2tl
dCgKKyAgICAgICAgICAgIGVwb2NoPXRscy5FcG9jaC5PTkVfUlRULAorICAgICAgICAgICAgaW5f
ZmxpZ2h0PVRydWUsCisgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPUZhbHNlLAorICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9
MCwKKyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCisgICAgICAg
ICAgICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MTIzLjQ1LAorICAg
ICAgICApCisgICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNFCisKKyAgICAgICAgIyDC
oHBhY2tldCBzZW50CisgICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFja2V0X3NlbnQocGFja2V0
LCBzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2lu
X2ZsaWdodCwgMTI4MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0
aW5nX2luX2ZsaWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2Vu
dF9wYWNrZXRzKSwgMSkKKworICAgICAgICAjIHBhY2tldCBhY2snZAorICAgICAgICBzZWxmLnJl
Y292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKKyAgICAgICAgICAgIHNwYWNlLCBhY2tfcmFuZ2VzZXQ9
UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5vdz0xMC4wCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5LmJ5dGVzX2luX2ZsaWdo
dCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2Zs
aWdodCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3BhY2Uuc2VudF9wYWNrZXRz
KSwgMCkKKworICAgICAgICAjIGNoZWNrIFJUVAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYucmVjb3ZlcnkuX3J0dF9pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnJlY292ZXJ5Ll9ydHRfbGF0ZXN0LCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5yZWNvdmVyeS5fcnR0X3Ntb290aGVkLCAwLjApCisKKyAgICBkZWYgdGVzdF9vbl9w
YWNrZXRfbG9zdF9jcnlwdG8oc2VsZik6CisgICAgICAgIHBhY2tldCA9IFF1aWNTZW50UGFja2V0
KAorICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLklOSVRJQUwsCisgICAgICAgICAgICBpbl9m
bGlnaHQ9VHJ1ZSwKKyAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKKyAgICAgICAg
ICAgIGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKKyAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwK
KyAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCisgICAgICAgICAg
ICBzZW50X2J5dGVzPTEyODAsCisgICAgICAgICAgICBzZW50X3RpbWU9MC4wLAorICAgICAgICAp
CisgICAgICAgIHNwYWNlID0gc2VsZi5JTklUSUFMX1NQQUNFCisKKyAgICAgICAgc2VsZi5yZWNv
dmVyeS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAxKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQorCisgICAgICAgIHNlbGYu
cmVjb3ZlcnkuX2RldGVjdF9sb3NzKHNwYWNlLCBub3c9MS4wKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQorCisKK2NsYXNzIFF1aWNS
dHRNb25pdG9yVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbW9uaXRvcihzZWxmKToKKyAg
ICAgICAgbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwLCBub3c9MTAwMCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAw
LjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAg
ICMgbm90IHRha2VuIGludG8gYWNjb3VudAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0
b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTExLCBub3c9MTAwMCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAwLjAsIDAuMCwgMC4wLCAwLjBdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5vdz0xMDAxKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAwLjAsIDAu
MCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9yZWFkeSkKKworICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEyLCBu
b3c9MTAwMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEw
LCAxMSwgMTIsIDAuMCwgMC4wXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLl9y
ZWFkeSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTEzLCBub3c9MTAwMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
c2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAwLjBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuX3JlYWR5KQorCisgICAgICAgICMgd2Ugbm93IGhhdmUgZW5vdWdoIHNhbXBsZXMK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD0x
NCwgbm93PTEwMDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3NhbXBsZXMs
IFsxMCwgMTEsIDEyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9uaXRvci5f
cmVhZHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFz
aW5nKHJ0dD0yMCwgbm93PTEwMDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3Iu
X2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0
X2luY3JlYXNpbmcocnR0PTMwLCBub3c9MTAwNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bW9uaXRvci5faW5jcmVhc2VzLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRv
ci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NDAsIG5vdz0xMDA3KSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD01MCwgbm93PTEwMDgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKKworICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTYwLCBub3c9MTAwOSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAxKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9NzAsIG5vdz0x
MDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDIpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD04
MCwgbm93PTEwMTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNl
cywgMykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNp
bmcocnR0PTkwLCBub3c9MTAxMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5f
aW5jcmVhc2VzLCA0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb25pdG9yLmlzX3J0dF9p
bmNyZWFzaW5nKHJ0dD0xMDAsIG5vdz0xMDEzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
b25pdG9yLl9pbmNyZWFzZXMsIDUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9yZXRyeS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3NmYwMjNiZjkzZGE0YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yZXRyeS5weQpAQCAtMCwwICsxLDMwIEBACitm
cm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorCitmcm9tIGFpb3F1aWMucXVpYy5yZXRyeSBp
bXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCisKKworY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5k
bGVyVGVzdChUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmV0cnlfdG9rZW4oc2VsZik6CisgICAg
ICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQpCisgICAgICAgIGNpZCA9IGIiXHgwOFx4MDdc
eDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKKworICAgICAgICBoYW5kbGVyID0gUXVpY1JldHJ5VG9r
ZW5IYW5kbGVyKCkKKworICAgICAgICAjIGNyZWF0ZSB0b2tlbgorICAgICAgICB0b2tlbiA9IGhh
bmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5v
bmUodG9rZW4pCisKKyAgICAgICAgIyB2YWxpZGF0ZSB0b2tlbiAtIG9rCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90b2tlbihhZGRyLCB0b2tlbiksIGNpZCkKKwor
ICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1wdHkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGhhbmRsZXIudmFsaWRhdGVf
dG9rZW4oYWRkciwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0IGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIGtl
eSBzaXplLiIKKyAgICAgICAgKQorCisgICAgICAgICMgdmFsaWRhdGUgdG9rZW4gLSB3cm9uZyBh
ZGRyZXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206
CisgICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRlX3Rva2VuKCgiMS4yLjMuNCIsIDEyMzQ1KSwg
dG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJSZW1v
dGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM1MzdhZTJlZDEyYjZmNmMwNDJkMDk5MDRlY2ZiNGYwYzJkZjU3ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKQEAgLTAsMCAr
MSw0NDYgQEAKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCisKK2Zyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJlY2VpdmVkCitmcm9tIGFpb3F1aWMucXVpYy5w
YWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFtZQorZnJvbSBhaW9xdWljLnF1aWMucGFja2V0X2J1
aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCitmcm9tIGFpb3F1aWMucXVpYy5zdHJlYW0g
aW1wb3J0IFF1aWNTdHJlYW0KKworCitjbGFzcyBRdWljU3RyZWFtVGVzdChUZXN0Q2FzZSk6Cisg
ICAgZGVmIHRlc3RfcmVjdl9lbXB0eShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIikp
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZm
ZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFu
Z2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9z
dGFydCwgMCkKKworICAgIGRlZiB0ZXN0X3JlY3Zfb3JkZXJlZChzZWxmKToKKyAgICAgICAgc3Ry
ZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IHN0
YXJ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFs
c2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5
dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBtb3JlIGRhdGEK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD04LCBkYXRhPWIiODkwMTIzNDUiKSksCisgICAgICAgICAg
ICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwg
c3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMo
c3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKKworICAgICAgICAjIGFkZCBkYXRhIGFuZCBmaW4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUo
UXVpY1N0cmVhbUZyYW1lKG9mZnNldD0xNiwgZGF0YT1iIjY3ODkwMTIzIiwgZmluPVRydWUpKSwK
KyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiNjc4OTAxMjMiLCBlbmRfc3Ry
ZWFtPVRydWUsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMjQpCisKKyAgICBkZWYgdGVzdF9yZWN2
X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9
MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIlx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwODkwMTIzNDUiCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbcmFuZ2UoOCwg
MTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0
LCAwKQorCisgICAgICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDAKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9m
ZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2
ZWQoZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9
MCksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3Jl
Y3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9y
ZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9i
dWZmZXJfc3RhcnQsIDE2KQorCisgICAgZGVmIHRlc3RfcmVjdl9vZmZzZXRfb25seShzZWxmKToK
KyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFk
ZCBkYXRhIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIiKSksIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQorCisgICAg
ICAgICMgYWRkIGRhdGEgYXQgb2Zmc2V0IDgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIiIpKSwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGJ5dGVzKHN0cmVhbS5fcmVj
dl9idWZmZXIpLCBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkK
KworICAgIGRlZiB0ZXN0X3JlY3ZfYWxyZWFkeV9mdWxseV9jb25zdW1lZChzZWxmKToKKyAgICAg
ICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRh
IGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgOCkKKworICAgICAgICAjIGFkZCBk
YXRhIGFnYWluIGF0IG9mZnNldCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAx
MjM0NTY3IikpLCBOb25lCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRl
cyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDgpCisKKyAgICBkZWYgdGVzdF9yZWN2X2FscmVhZHlf
cGFydGlhbGx5X2NvbnN1bWVkKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0
cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9z
dHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3ODkwMTIzNDUiKSksCisgICAgICAgICAgICBTdHJlYW1E
YXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lk
PTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9y
ZWN2X2J1ZmZlciksIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5f
cmVjdl9yYW5nZXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3Zf
YnVmZmVyX3N0YXJ0LCAxNikKKworICAgIGRlZiB0ZXN0X3JlY3ZfZmluKHNlbGYpOgorICAgICAg
ICBzdHJlYW0gPSBRdWljU3RyZWFtKHN0cmVhbV9pZD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZz
ZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVk
KGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmFkZF9m
cmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVl
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Jl
Y3ZfZmluX291dF9vZl9vcmRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShz
dHJlYW1faWQ9MCkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4IHdpdGggRklOCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1
aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAg
ICAgICAgICAgIE5vbmUsCisgICAgICAgICkKKworICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNl
dCAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2Zy
YW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAorICAgICAg
ICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlY3Zf
ZmluX3RoZW5fZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1f
aWQ9MCkKKyAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAs
IGRhdGE9YiIiLCBmaW49VHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhj
ZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZy
YW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1NjciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdHIoY20uZXhjZXB0aW9uKSwgIkRhdGEgcmVjZWl2ZWQgYmV5b25kIEZJTiIpCisKKyAgICBk
ZWYgdGVzdF9yZWN2X2Zpbl90d2ljZShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVh
bShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0
cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiMDEyMzQ1Njci
KSksCisgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjAxMjM0NTY3IiwgZW5k
X3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9OCwgZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVh
bURhdGFSZWNlaXZlZChkYXRhPWIiODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUsIHN0cmVhbV9p
ZD0wKSwKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwgZGF0YT1iIjg5MDEy
MzQ1IiwgZmluPVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIi
IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0
ZXN0X3JlY3ZfZmluX3dpdGhvdXRfZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbShzdHJlYW1faWQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIiwgZmlu
PVRydWUpKSwKKyAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiIiwgZW5kX3N0
cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3NlbmRf
ZGF0YShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBub3Ro
aW5nIHRvIHNlbmQgeWV0CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAg
ICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIGRhdGEKKyAg
ICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3Nl
bmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQorCisgICAgICAgICMgc2VuZCBhbm90aGVyIGNodW5r
CisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGZyYW1lLmRhdGEsIGIiODkwMTIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5vZmZzZXQsIDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdl
dF9mcmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMg
Zmlyc3QgY2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVs
aXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDAsIDgpCisKKyAgICAgICAgIyBzZWNvbmQg
Y2h1bmsgZ2V0cyBhY2tub3dsZWRnZWQKKyAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnko
UXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQsIDgsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRh
X2FuZF9maW4oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQorCisgICAgICAg
ICMgbm90aGluZyB0byBzZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisKKyAgICAgICAgIyB3cml0ZSBk
YXRhIGFuZCBFT0YKKyAgICAgICAgc3RyZWFtLndyaXRlKGIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVu
ZF9zdHJlYW09VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2Vu
ZF9wZW5kaW5nKSwgW3JhbmdlKDAsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDApCisKKyAgICAgICAgIyBzZW5kIGEgY2h1bmsKKyAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIwMTIzNDU2NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAj
IHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEyMzQ1IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGZyYW1lLmZpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5vZmZzZXQsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDE2KQorCisgICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
NikKKworICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0KHNlbGYpOgorICAgICAgICBzdHJlYW0g
PSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0
ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNildKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAg
ICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3Iiwg
ZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkKKworICAgICAgICAjIHNl
bmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZp
bj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8g
c2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAg
ICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAgICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVy
eShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgOCldKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2Vu
ZCBjaHVuayBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3Ry
ZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1G
YWxzZSwgb2Zmc2V0PTApCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQorCisgICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2xvc3Rf
ZmluKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBRdWljU3RyZWFtKCkKKworICAgICAgICAjIG5v
dGhpbmcgdG8gc2VuZCB5ZXQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgICAgICMgd3JpdGUgZGF0YSBh
bmQgRU9GCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3Ry
ZWFtPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtyYW5nZSgwLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgc2VuZCBhIGNodW5rCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3Ry
ZWFtRnJhbWUoZGF0YT1iIjAxMjM0NTY3IiwgZmluPUZhbHNlLCBvZmZzZXQ9MCkKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBb
cmFuZ2UoOCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5k
X29mZnNldCwgOCkKKworICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuaworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVh
bUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlLCBvZmZzZXQ9OCkKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCisK
KyAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8gc2VuZAorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzdHJlYW0uZ2V0X2ZyYW1lKDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
bmV4dF9zZW5kX29mZnNldCwgMTYpCisKKyAgICAgICAgIyBhIGNodW5rIGdldHMgbG9zdAorICAg
ICAgICBzdHJlYW0ub25fZGF0YV9kZWxpdmVyeShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCA4LCAx
NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W3JhbmdlKDgsIDE2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2Vu
ZF9vZmZzZXQsIDgpCisKKyAgICAgICAgIyBzZW5kIGNodW5rIGFnYWluCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHJlYW0uZ2V0X2ZyYW1lKDgpLCBRdWljU3RyZWFt
RnJhbWUoZGF0YT1iIjg5MDEyMzQ1IiwgZmluPVRydWUsIG9mZnNldD04KQorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKKwor
ICAgIGRlZiB0ZXN0X3NlbmRfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0
cmVhbSgpCisgICAgICAgIG1heF9vZmZzZXQgPSAxMgorCisgICAgICAgICMgbm90aGluZyB0byBz
ZW5kIHlldAorICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29mZnNldCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQorCisgICAgICAgICMgd3JpdGUgZGF0YSwg
c2VuZCBhIGNodW5rCisgICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiKQor
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShm
cmFtZS5maW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2Uo
OCwgMTYpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgOCkKKworICAgICAgICAjIHNlbmQgaXMgbGltaXRlZCBieSBwZWVyCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZyYW1lLmRhdGEsIGIiODkwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgOCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDEyLCAx
NildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAx
MikKKworICAgICAgICAjIHVuYWJsZSB0byBzZW5kLCBibG9ja2VkCisgICAgICAgIGZyYW1lID0g
c3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5k
aW5nKSwgW3JhbmdlKDEyLCAxNildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5u
ZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHdyaXRlIG1vcmUgZGF0YSwgc3RpbGwg
YmxvY2tlZAorICAgICAgICBzdHJlYW0ud3JpdGUoYiJhYmNkZWZnaCIpCisgICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShmcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9w
ZW5kaW5nKSwgW3JhbmdlKDEyLCAyNCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5uZXh0X3NlbmRfb2Zmc2V0LCAxMikKKworICAgICAgICAjIHBlZXIgcmFpc2VzIGxpbWl0LCBz
ZW5kIHNvbWUgZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBz
dHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiIyMzQ1YWJjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUu
ZmluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMTIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgyMCwg
MjQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwg
MjApCisKKyAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCBhZ2Fpbiwgc2VuZCByZW1haW5pbmcg
ZGF0YQorICAgICAgICBtYXhfb2Zmc2V0ICs9IDgKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgsIG1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0
YSwgYiJlZmdoIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDI0KQorCisgICAgICAgICMgbm90aGluZyBt
b3JlIHRvIHNlbmQKKyAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZz
ZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZyYW1lKQorCisgICAgZGVmIHRlc3Rfc2Vu
ZF9maW5fb25seShzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisKKyAgICAg
ICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0u
c2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdyaXRlIEVP
RgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAgICBmcmFt
ZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5k
YXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGluZyBtb3Jl
IHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZmZXJfaXNf
ZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2Zpbl9vbmx5
X2Rlc3BpdGVfYmxvY2tlZChzZWxmKToKKyAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCisK
KyAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShz
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCisgICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9m
cmFtZSg4KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKKworICAgICAgICAjIHdy
aXRlIEVPRgorICAgICAgICBzdHJlYW0ud3JpdGUoYiIiLCBlbmRfc3RyZWFtPVRydWUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQorICAgICAg
ICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5kYXRhLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5maW4pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQorCisgICAgICAgICMgbm90aGlu
ZyBtb3JlIHRvIHNlbmQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdHJlYW0uc2VuZF9idWZm
ZXJfaXNfZW1wdHkpICAjIEZJWE1FPworICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUo
OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShzdHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGVzdF90bHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF90bHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzJkZDU2ZGViOGJhZWFjOTZmY2QxYTNmZTBiYjVmOTQzNWQ3YzBjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQpAQCAtMCwwICsxLDE0
MDAgQEAKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3NsCitmcm9t
IHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRj
aAorCitmcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBVbnN1cHBvcnRlZEFsZ29y
aXRobQorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IHNlcmlhbGl6
YXRpb24KK2Zyb20gY3J5cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1w
b3J0IGVjCisKK2Zyb20gYWlvcXVpYyBpbXBvcnQgdGxzCitmcm9tIGFpb3F1aWMuYnVmZmVyIGlt
cG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvcgorZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJh
dGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KK2Zyb20gYWlvcXVpYy50bHMgaW1wb3J0ICgK
KyAgICBDZXJ0aWZpY2F0ZSwKKyAgICBDZXJ0aWZpY2F0ZVZlcmlmeSwKKyAgICBDbGllbnRIZWxs
bywKKyAgICBDb250ZXh0LAorICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMsCisgICAgRmluaXNoZWQs
CisgICAgTmV3U2Vzc2lvblRpY2tldCwKKyAgICBTZXJ2ZXJIZWxsbywKKyAgICBTdGF0ZSwKKyAg
ICBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcywKKyAgICBwdWxsX2Jsb2NrLAorICAgIHB1bGxf
Y2VydGlmaWNhdGUsCisgICAgcHVsbF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisgICAgcHVsbF9jbGll
bnRfaGVsbG8sCisgICAgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAgICBwdWxsX2Zpbmlz
aGVkLAorICAgIHB1bGxfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1bGxfc2VydmVyX2hlbGxv
LAorICAgIHB1c2hfY2VydGlmaWNhdGUsCisgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnksCisg
ICAgcHVzaF9jbGllbnRfaGVsbG8sCisgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucywKKyAg
ICBwdXNoX2ZpbmlzaGVkLAorICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0LAorICAgIHB1c2hf
c2VydmVyX2hlbGxvLAorICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSwKKykKKworZnJvbSAudXRpbHMg
aW1wb3J0ICgKKyAgICBTRVJWRVJfQ0FDRVJURklMRSwKKyAgICBTRVJWRVJfQ0VSVEZJTEUsCisg
ICAgU0VSVkVSX0tFWUZJTEUsCisgICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUsCisgICAgbG9h
ZCwKKykKKworQ0VSVElGSUNBVEVfREFUQSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKVsx
MTotMl0KK0NFUlRJRklDQVRFX1ZFUklGWV9TSUdOQVRVUkUgPSBsb2FkKCJ0bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiIpWy0zODQ6XQorCitDTElFTlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDExMDAzMTAwMDUwMDA0ODAxMDAw
MDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4MDEwMDAwMDAwMCIKKyAgICBiIjQwMDA0ODEwMDAw
MDAwMDAxMDAwMjQyNTgwMDA4MDAwMjQwNjQwMDBhMDAwMTBhIgorKQorCitTRVJWRVJfUVVJQ19U
UkFOU1BPUlRfUEFSQU1FVEVSUyA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICBiImZmMDAwMDEx
MDRmZjAwMDAxMTAwNDUwMDA1MDAwNDgwMTAwMDAwMDAwNjAwMDQ4MDEwMDAwMDAwMDcwMDA0OCIK
KyAgICBiIjAxMDAwMDAwMDA0MDAwNDgxMDAwMDAwMDAwMTAwMDI0MjU4MDAwMjAwMTAwMDAwMDAw
MDAwMDAwMDAwMDAwMCIKKyAgICBiIjAwMDAwMDAwMDAwMDAwMDgwMDAyNDA2NDAwMGEwMDAxMGEi
CispCisKK1NFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCisgICAgYiIwMDU3MDAwNjAwMDQ4MDAwZmZmZjAwMDUwMDA0ODAwMGZmZmYwMDAyMDAx
MGM1YWM0MTBmYmRkNGZlNmUyYzEiCisgICAgYiI0MjI3OWYyMzFlOGUwMDAwYTAwMDEwMzAwMDQw
MDA0ODAwNWZmZmEwMDBiMDAwMTE5MDAwMTAwMDI2NzEwZmYiCisgICAgYiI0MjAwMGM1YzA2N2Yy
N2UzOTMyMWM2M2UyOGU3YzkwMDAzMDAwMjQ3ZTQwMDA4MDAwMTA2IgorKQorCitTRVJWRVJfUVVJ
Q19UUkFOU1BPUlRfUEFSQU1FVEVSU18zID0gYmluYXNjaWkudW5oZXhsaWZ5KAorICAgIGIiMDA1
NDAwMDIwMDEwMGRjYjUwYTQ0MjUxMzI5NWI0Njc5YmFmMDRjYjVlZmZmZjhhMDAwOWM4YWZlNzJh
NjM5NyIKKyAgICBiIjI1NTQwNzAwMDYwMDA0ODAwMGZmZmYwMDA4MDAwMTA2MDAwNDAwMDQ4MDA1
ZmZmYTAwMDUwMDA0ODAwMGZmZmYiCisgICAgYiIwMDAzMDAwMjQ3ZTQwMDBhMDAwMTAzMDAwMTAw
MDI2NzEwMDAwYjAwMDExOSIKKykKKworCitjbGFzcyBCdWZmZXJUZXN0KFRlc3RDYXNlKToKKyAg
ICBkZWYgdGVzdF9wdWxsX2Jsb2NrX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVh
ZEVycm9yKToKKyAgICAgICAgICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDEpOgorICAgICAgICAg
ICAgICAgIHBhc3MKKworCitkZWYgY3JlYXRlX2J1ZmZlcnMoKToKKyAgICByZXR1cm4geworICAg
ICAgICB0bHMuRXBvY2guSU5JVElBTDogQnVmZmVyKGNhcGFjaXR5PTQwOTYpLAorICAgICAgICB0
bHMuRXBvY2guSEFORFNIQUtFOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgICAgIHRscy5F
cG9jaC5PTkVfUlRUOiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCisgICAgfQorCisKK2RlZiBtZXJn
ZV9idWZmZXJzKGJ1ZmZlcnMpOgorICAgIHJldHVybiBiIiIuam9pbih4LmRhdGEgZm9yIHggaW4g
YnVmZmVycy52YWx1ZXMoKSkKKworCitkZWYgcmVzZXRfYnVmZmVycyhidWZmZXJzKToKKyAgICBm
b3IgayBpbiBidWZmZXJzLmtleXMoKToKKyAgICAgICAgYnVmZmVyc1trXS5zZWVrKDApCisKKwor
Y2xhc3MgQ29udGV4dFRlc3QoVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfY2xpZW50KAorICAg
ICAgICBzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lLCBjYWRhdGE9Tm9uZSwgY2FmaWxlPVNFUlZF
Ul9DQUNFUlRGSUxFLCAqKmt3YXJncworICAgICk6CisgICAgICAgIGNsaWVudCA9IENvbnRleHQo
CisgICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29scywKKyAgICAgICAgICAg
IGNhZGF0YT1jYWRhdGEsCisgICAgICAgICAgICBjYWZpbGU9Y2FmaWxlLAorICAgICAgICAgICAg
aXNfY2xpZW50PVRydWUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApCisgICAgICAg
IGNsaWVudC5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKKyAgICAgICAgICAgICgKKyAgICAgICAg
ICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAg
ICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAg
ICAgKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUKQorICAgICAgICByZXR1cm4gY2xpZW50CisKKyAg
ICBkZWYgY3JlYXRlX3NlcnZlcihzZWxmLCBhbHBuX3Byb3RvY29scz1Ob25lKToKKyAgICAgICAg
Y29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJf
S0VZRklMRSkKKworICAgICAgICBzZXJ2ZXIgPSBDb250ZXh0KAorICAgICAgICAgICAgYWxwbl9w
cm90b2NvbHM9YWxwbl9wcm90b2NvbHMsIGlzX2NsaWVudD1GYWxzZSwgbWF4X2Vhcmx5X2RhdGE9
MHhGRkZGRkZGRgorICAgICAgICApCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSA9IGNvbmZp
Z3VyYXRpb24uY2VydGlmaWNhdGUKKyAgICAgICAgc2VydmVyLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5ID0gY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQorICAgICAgICBzZXJ2ZXIuaGFuZHNoYWtl
X2V4dGVuc2lvbnMgPSBbCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgdGxzLkV4dGVu
c2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICBTRVJW
RVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICkKKyAgICAgICAgXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVD
VF9DTElFTlRfSEVMTE8pCisgICAgICAgIHJldHVybiBzZXJ2ZXIKKworICAgIGRlZiB0ZXN0X2Ns
aWVudF91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3Jl
YXRlX2NsaWVudCgpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVD
VF9TRVJWRVJfSEVMTE8KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJc
eDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3Rh
dGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0VOQ1JZUFRFRF9FWFRFTlNJT05TCisgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAg
ICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9i
dWZmZXJzKCkpCisKKyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9D
RVJUSUZJQ0FURV9SRVFVRVNUX09SX0NFUlRJRklDQVRFCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisK
KyAgICAgICAgY2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9W
RVJJRlkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVk
TWVzc2FnZSk6CisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4
MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKKworICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0
ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVECisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
dGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAgY2xpZW50LmhhbmRsZV9t
ZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkpCisKKyAgICAgICAg
Y2xpZW50LnN0YXRlID0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAg
ICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZm
ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2NlcnRpZmljYXRlX3ZlcmlmeV9kYXRh
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBz
ZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVs
bG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0
X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAg
ICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmlj
YXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBj
cmVhdGVfYnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5w
dXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikK
KworICAgICAgICAjIG1lc3Mgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZnkKKyAgICAgICAgY2xpZW50
X2lucHV0ID0gY2xpZW50X2lucHV0WzotNTZdICsgYnl0ZXMoNCkgKyBjbGllbnRfaW5wdXRbLTUy
Ol0KKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25z
LCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydERlY3J5cHRFcnJvcik6CisgICAgICAgICAgICBj
bGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorCisgICAgZGVm
IHRlc3RfY2xpZW50X2JhZF9maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmKToKKyAgICAgICAgY2xp
ZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVf
c2VydmVyKCkKKworICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvCisgICAgICAgIGNsaWVudF9i
dWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIs
IGNsaWVudF9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnN0YXRlLCBTdGF0
ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTykKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVy
Z2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYp
CisKKyAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCisgICAgICAgICMgc2VuZCBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZAorICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAg
ICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zdGF0ZSwgU3RhdGUuU0VSVkVSX0VYUEVDVF9G
SU5JU0hFRCkKKyAgICAgICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVm
KQorICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYpCisKKyAgICAgICAgIyBtZXNzIHdp
dGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgY2xpZW50X2lucHV0ID0gY2xpZW50X2lu
cHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5j
cnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlz
aGVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9y
KToKKyAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVu
dF9idWYpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfdW5leHBlY3RlZF9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlcnZlci5z
dGF0ZSA9IFN0YXRlLlNFUlZFUl9FWFBFQ1RfQ0xJRU5UX0hFTExPCisgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgorICAgICAgICAgICAg
c2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJz
KCkpCisKKyAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VYUEVDVF9GSU5JU0hF
RAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNz
YWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4
MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgICAgIHNlcnZlci5zdGF0ZSA9IFN0YXRlLlNF
UlZFUl9QT1NUX0hBTkRTSEFLRQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKKyAgICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2Fn
ZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVycygpKQorCisgICAgZGVmIF9zZXJ2
ZXJfZmFpbF9oZWxsbyhzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMgc2VuZCBjbGll
bnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAg
Y2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQor
ICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAg
IHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVs
bG8KKyAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgc2VydmVy
LmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKworICAgIGRlZiB0ZXN0
X3NlcnZlcl91bnN1cHBvcnRlZF9jaXBoZXJfc3VpdGUoc2VsZik6CisgICAgICAgIGNsaWVudCA9
IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVudC5fY2lwaGVyX3N1aXRlcyA9IFt0
bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2XQorCisgICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcigpCisgICAgICAgIHNlcnZlci5fY2lwaGVyX3N1aXRlcyA9IFt0bHMu
Q2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0XQorCisgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAgICAgICAgICBz
ZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3VpdGUiKQor
CisgICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG0oc2Vs
Zik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisgICAgICAgIGNsaWVu
dC5fc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FRDQ0OF0K
KworICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0SGFuZHNoYWtlRmFpbHVyZSkgYXMgY206CisgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxsbyhjbGllbnQsIHNlcnZlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIk5vIHN1cHBvcnRlZCBzaWduYXR1
cmUgYWxnb3JpdGhtIikKKworICAgIGRlZiB0ZXN0X3NlcnZlcl91bnN1cHBvcnRlZF92ZXJzaW9u
KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBj
bGllbnQuX3N1cHBvcnRlZF92ZXJzaW9ucyA9IFt0bHMuVExTX1ZFUlNJT05fMV8yXQorCisgICAg
ICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyh0bHMuQWxlcnRQcm90b2NvbFZlcnNpb24pIGFzIGNtOgorICAgICAgICAgICAg
c2VsZi5fc2VydmVyX2ZhaWxfaGVsbG8oY2xpZW50LCBzZXJ2ZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJObyBzdXBwb3J0ZWQgcHJvdG9jb2wgdmVyc2lv
biIpCisKKyAgICBkZWYgdGVzdF9zZXJ2ZXJfYmFkX2ZpbmlzaGVkX3ZlcmlmeV9kYXRhKHNlbGYp
OgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8KKyAg
ICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKKyAgICAgICAgY2xpZW50LmhhbmRs
ZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICBzZXJ2
ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZl
cnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGllbnQgaGVsbG8KKyAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBj
ZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVf
YnVmZmVycygpCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNl
cnZlcl9idWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5T
RVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZm
ZXJzKHNlcnZlcl9idWYpCisgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAg
ICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZp
Y2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5LCBmaW5pc2hlZAorICAgICAgICAjIHNlbmQgZmluaXNo
ZWQKKyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1
ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9Q
T1NUX0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgIyBt
ZXNzIHdpdGggZmluaXNoZWQgdmVyaWZ5IGRhdGEKKyAgICAgICAgc2VydmVyX2lucHV0ID0gc2Vy
dmVyX2lucHV0WzotNF0gKyBieXRlcyg0KQorCisgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCisg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0RGVjcnlwdEVycm9yKToKKyAg
ICAgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYp
CisKKyAgICBkZWYgX2hhbmRzaGFrZShzZWxmLCBjbGllbnQsIHNlcnZlcik6CisgICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8KKyAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPKQorICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYp
CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAyMTMp
CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCAzNTgpCisg
ICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKKworICAgICAgICAjIGhhbmRsZSBjbGll
bnQgaGVsbG8KKyAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lvbiB0
aWNrZXQpCisgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgIHNl
cnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVE
KQorICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAg
ICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCA2MDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAyMzE2KQorCisgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKKworICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIg
aGVsbG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVy
aWZ5LCBmaW5pc2hlZCwgKHNlc3Npb24gdGlja2V0KQorICAgICAgICAjIHNlbmQgZmluaXNoZWQK
KyAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NU
X0hBTkRTSEFLRSkKKyAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRf
YnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA1MikKKyAg
ICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICMgaGFuZGxlIGZpbmlz
aGVkCisgICAgICAgIHNlcnZlci5oYW5kbGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9i
dWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJf
UE9TVF9IQU5EU0hBS0UpCisgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2Vy
dmVyX2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMCkK
KworICAgICAgICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5jX2tleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuX2VuY19rZXksIHNlcnZlci5fZGVjX2tleSkKKworICAgICAgICAjIGNoZWNrIGNp
cGhlciBzdWl0ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2xpZW50
LmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9T
SEEzODQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
c2VydmVyLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2
X0dDTV9TSEEzODQKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNl
cnZlcikKKworICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2hhbmRz
aGFrZV9lY2RzYV9zZWNwMjU2cjEoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRl
X3NlcnZlcigpCisgICAgICAgIHNlcnZlci5jZXJ0aWZpY2F0ZSwgc2VydmVyLmNlcnRpZmljYXRl
X3ByaXZhdGVfa2V5ID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorCisg
ICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgKKyAgICAgICAgICAgIGNhZGF0YT1z
ZXJ2ZXIuY2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVN
KSwKKyAgICAgICAgICAgIGNhZmlsZT1Ob25lLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5f
aGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgICAgICMgY2hlY2sgQUxQTiBtYXRjaGVz
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVnb3RpYXRlZCwgTm9uZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQor
CisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfYWxwbihzZWxmKToKKyAgICAgICAgY2xpZW50
ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiXSkKKyAgICAgICAg
c2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsiaHEtMjAiLCAiaDMt
MjAiXSkKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAg
ICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQu
YWxwbl9uZWdvdGlhdGVkLCAiaHEtMjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZl
ci5hbHBuX25lZ290aWF0ZWQsICJocS0yMCIpCisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0
aF9hbHBuX2ZhaWwoc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudChh
bHBuX3Byb3RvY29scz1bImhxLTIwIl0pCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcihhbHBuX3Byb3RvY29scz1bImgzLTIwIl0pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoY20uZXhjZXB0aW9uKSwgIk5vIGNvbW1vbiBBTFBOIHByb3RvY29scyIpCisKKyAgICBkZWYg
dGVzdF9oYW5kc2hha2Vfd2l0aF9yc2FfcGtjczFfc2hhMjU2X3NpZ25hdHVyZShzZWxmKToKKyAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xpZW50Ll9zaWdu
YXR1cmVfYWxnb3JpdGhtcyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEy
NTZdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisKKyAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dp
dGhfY2VydGlmaWNhdGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRl
X2NsaWVudChjYWZpbGU9Tm9uZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVy
KCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmlj
YXRlKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVuYWJsZSB0byBn
ZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93
aXRoX2NlcnRpZmljYXRlX25vX3ZlcmlmeShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lLCB2ZXJpZnlfbW9kZT1zc2wuQ0VSVF9OT05FKQorICAg
ICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2dyZWFz
ZV9ncm91cChzZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAg
ICAgICAgY2xpZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5HUkVBU0UsIHRscy5H
cm91cC5TRUNQMjU2UjFdCisgICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCisK
KyAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQorCisgICAgZGVmIHRlc3Rf
aGFuZHNoYWtlX3dpdGhfeDI1NTE5KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0
ZV9jbGllbnQoKQorICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMgPSBbdGxzLkdyb3Vw
LlgyNTUxOV0KKyAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisgICAg
ICAgIGV4Y2VwdCBVbnN1cHBvcnRlZEFsZ29yaXRobSBhcyBleGM6CisgICAgICAgICAgICBzZWxm
LnNraXBUZXN0KHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfeDQ0OChz
ZWxmKToKKyAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKKyAgICAgICAgY2xp
ZW50Ll9zdXBwb3J0ZWRfZ3JvdXBzID0gW3Rscy5Hcm91cC5YNDQ4XQorICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYu
X2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKKyAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkQWxn
b3JpdGhtIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCisKKyAg
ICBkZWYgdGVzdF9zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgY2xpZW50X3RpY2tldHMg
PSBbXQorICAgICAgICBzZXJ2ZXJfdGlja2V0cyA9IFtdCisKKyAgICAgICAgZGVmIGNsaWVudF9u
ZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAgICAgICBjbGllbnRfdGlja2V0cy5hcHBlbmQodGlj
a2V0KQorCisgICAgICAgIGRlZiBzZXJ2ZXJfZ2V0X3RpY2tldChsYWJlbCk6CisgICAgICAgICAg
ICBmb3IgdCBpbiBzZXJ2ZXJfdGlja2V0czoKKyAgICAgICAgICAgICAgICBpZiB0LnRpY2tldCA9
PSBsYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgZGVmIHNlcnZlcl9uZXdfdGlja2V0KHRpY2tldCk6CisgICAgICAg
ICAgICBzZXJ2ZXJfdGlja2V0cy5hcHBlbmQodGlja2V0KQorCisgICAgICAgIGRlZiBmaXJzdF9o
YW5kc2hha2UoKToKKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCisg
ICAgICAgICAgICBjbGllbnQubmV3X3Nlc3Npb25fdGlja2V0X2NiID0gY2xpZW50X25ld190aWNr
ZXQKKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAg
ICAgIHNlcnZlci5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfbmV3X3RpY2tldAorCisg
ICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2ZXIpCisKKyAgICAgICAgICAg
ICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdhcyBub3QgdXNlZAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShjbGllbnQuc2Vzc2lvbl9yZXN1bWVkKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQorCisgICAgICAgICAgICAjIGNoZWNr
IHRpY2tldHMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF90
aWNrZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl90aWNr
ZXRzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3RpY2tldHNbMF0u
dGlja2V0LCBzZXJ2ZXJfdGlja2V0c1swXS50aWNrZXQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgICAgIGNsaWVudF90aWNrZXRzWzBdLnJlc3VtcHRpb25fc2Vj
cmV0LCBzZXJ2ZXJfdGlja2V0c1swXS5yZXN1bXB0aW9uX3NlY3JldAorICAgICAgICAgICAgKQor
CisgICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlKCk6CisgICAgICAgICAgICBjbGllbnQgPSBz
ZWxmLmNyZWF0ZV9jbGllbnQoKQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0g
Y2xpZW50X3RpY2tldHNbMF0KKworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2Vy
dmVyKCkKKyAgICAgICAgICAgIHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJf
Z2V0X3RpY2tldAorCisgICAgICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3No
YXJlZF9rZXkKKyAgICAgICAgICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAg
ICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VS
VkVSX0hFTExPKQorICAgICAgICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGll
bnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9p
bnB1dCksIDM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJf
aW5wdXQpLCA0ODMpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAg
ICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZl
ciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2
ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNz
YWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorICAgICAgICAg
ICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X2lucHV0KSwgMzA3KQorICAgICAgICAgICAgcmVz
ZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRsZSBzZXJ2ZXIgaGVs
bG8sIGVuY3J5cHRlZCBleHRlbnNpb25zLCBjZXJ0aWZpY2F0ZSwgY2VydGlmaWNhdGUgdmVyaWZ5
LCBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIGZpbmlzaGVkCisgICAgICAgICAgICBjbGll
bnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFL
RSkKKyAgICAgICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQorICAg
ICAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQorCisgICAgICAgICAgICAjIGhhbmRs
ZSBmaW5pc2hlZAorICAgICAgICAgICAgIyBzZW5kIG5ld19zZXNzaW9uX3RpY2tldAorICAgICAg
ICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfUE9T
VF9IQU5EU0hBS0UpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNl
cnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnRfaW5wdXQp
LCAwKQorICAgICAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQorCisgICAgICAgICAg
ICAjIGNoZWNrIGtleXMgbWF0Y2gKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50
Ll9kZWNfa2V5LCBzZXJ2ZXIuX2VuY19rZXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5fZW5jX2tleSwgc2VydmVyLl9kZWNfa2V5KQorCisgICAgICAgICAgICAjIGNoZWNr
IHNlc3Npb24gcmVzdW1wdGlvbiB3YXMgdXNlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNsaWVudC5zZXNzaW9uX3Jlc3VtZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vy
dmVyLnNlc3Npb25fcmVzdW1lZCkKKworICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRf
YmluZGVyKCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQorICAg
ICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0KKworICAg
ICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAgIHNlcnZl
ci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAgICAgICAg
ICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAgICAgIGNs
aWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGll
bnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAgICAgICAg
c2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAgICAgICAg
ICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgdGFtcGVyIHdpdGgg
YmluZGVyCisgICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5
dGVzKDQpCisKKyAgICAgICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbworICAgICAgICAgICAg
IyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAg
ICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQorICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKKyAgICAg
ICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVm
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBTSyB2
YWxpZGF0aW9uIGZhaWxlZCIpCisKKyAgICAgICAgZGVmIHNlY29uZF9oYW5kc2hha2VfYmFkX3By
ZV9zaGFyZWRfa2V5KCk6CisgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
KQorICAgICAgICAgICAgY2xpZW50LnNlc3Npb25fdGlja2V0ID0gY2xpZW50X3RpY2tldHNbMF0K
KworICAgICAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKKyAgICAgICAgICAg
IHNlcnZlci5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZXJ2ZXJfZ2V0X3RpY2tldAorCisgICAg
ICAgICAgICAjIHNlbmQgY2xpZW50IGhlbGxvIHdpdGggcHJlX3NoYXJlZF9rZXkKKyAgICAgICAg
ICAgIGNsaWVudF9idWYgPSBjcmVhdGVfYnVmZmVycygpCisgICAgICAgICAgICBjbGllbnQuaGFu
ZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPKQorICAgICAg
ICAgICAgc2VydmVyX2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM4MykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihzZXJ2ZXJfaW5wdXQpLCA0ODMpCisgICAg
ICAgICAgICByZXNldF9idWZmZXJzKGNsaWVudF9idWYpCisKKyAgICAgICAgICAgICMgaGFuZGxl
IGNsaWVudCBoZWxsbworICAgICAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVk
IGV4dGVuc2lvbnMsIGZpbmlzaGVkCisgICAgICAgICAgICBzZXJ2ZXJfYnVmID0gY3JlYXRlX2J1
ZmZlcnMoKQorICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwg
c2VydmVyX2J1ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnN0YXRlLCBT
dGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQorCisgICAgICAgICAgICAjIHRhbXBlciB3aXRo
IHByZV9zaGFyZV9rZXkgaW5kZXgKKyAgICAgICAgICAgIGJ1ZiA9IHNlcnZlcl9idWZbdGxzLkVw
b2NoLklOSVRJQUxdCisgICAgICAgICAgICBidWYuc2VlayhidWYudGVsbCgpIC0gMSkKKyAgICAg
ICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDEpCisgICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAzMDcpCisgICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYp
CisKKyAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbyBhbmQgYm9tYgorICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRJbGxlZ2FsUGFyYW1ldGVyKToKKyAg
ICAgICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRf
YnVmKQorCisgICAgICAgIGZpcnN0X2hhbmRzaGFrZSgpCisgICAgICAgIHNlY29uZF9oYW5kc2hh
a2UoKQorICAgICAgICBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKQorICAgICAgICBzZWNv
bmRfaGFuZHNoYWtlX2JhZF9wcmVfc2hhcmVkX2tleSgpCisKKworY2xhc3MgVGxzVGVzdChUZXN0
Q2FzZSk6CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG8oc2VsZik6CisgICAgICAgIGJ1
ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG8uYmluIikpCisgICAgICAgIGhl
bGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVm
LmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5y
YW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1
YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlk
Y2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgorICAgICAgICAgICAgKSwK
KyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8u
Y2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuQ2lwaGVy
U3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0
ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNI
QUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXBy
ZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdyb3VwLlNFQ1AyNTZS
MSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjA0N2JmZWEzNDQ0Njc1MzUwNTQyNjNiNzVkZWY2MGNmZmE4MjQwNWEyMTFi
NjhkMWViOGQxZDk0NGU2N2FlZjgiCisgICAgICAgICAgICAgICAgICAgICAgICAiOTNjNzY2NWE1
NDczZDAzMmNmYWYyMmE3M2RhMjhlYjRhYWNhZTAwMTdlZDEyNTU3YjU3OTFmOThhMWU4NGYxNSIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJiMCIKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBb
dGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3JpdGhtcywKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1Nf
UlNBRV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RT
QV9TRUNQMjU2UjFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BLQ1MxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEExLAorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBvcnRlZF9ncm91cHMsIFt0bHMuR3JvdXAuU0VDUDI1
NlIxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLnN1cHBv
cnRlZF92ZXJzaW9ucywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zLAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjgs
CisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2LAorICAgICAgICAgICAgXSwKKyAg
ICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5v
dGhlcl9leHRlbnNpb25zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAg
ICAgICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVS
UywKKyAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXSwKKyAgICAgICAgKQorCisgICAgZGVm
IHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9hbHBuKHNlbGYpOgorICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4iKSkKKyAgICAg
ICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnJhbmRvbSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAg
ICAgICAiZWQ1NzVjNmZiZDU5OWM0ZGZhYWJkMDAzZGNhNmU4NjBjY2RiMGUxNzgyYzFhZjAyZTU3
YmYyN2NiNjQ3OWI3NiIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChoZWxsby5zZXNzaW9uX2lkLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBoZWxsby5jaXBoZXJfc3VpdGVzLAorICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAgICAgICAg
ICAgICB0bHMuQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5FTVBUWV9SRU5FR09USUFUSU9OX0lORk9fU0NTViwKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5j
b21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAg
ICAgICMgZXh0ZW5zaW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJv
dG9jb2xzLCBbImgzLTE5Il0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uZWFybHlf
ZGF0YSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxs
by5rZXlfc2hhcmUsCisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAg
ICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgICAgICBiaW5h
c2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgICAgICAgICAiMDQ4ODQyMzE1YzQzN2Ji
MGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGViYjBkNCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5MTU1ODY2ZTI2NGM5
ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgorICAgICAgICAgICAgICAgICAgICAgICAgIjIy
IgorICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
IF0sCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhl
bGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2ZXJf
bmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCisgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2UjFfU0hB
MjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDM4
NFIxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNB
X1NFQ1A1MjFSMV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRo
bS5FRDI1NTE5LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUQ0NDgs
CisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19TSEEy
NTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BTU19T
SEEzODQsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BT
U19TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNB
X1BTU19SU0FFX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEE1MTIsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCisgICAgICAgICAgICBdLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBz
LAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisg
ICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKKyAgICAgICAgICAgICAgICB0bHMuR3Jv
dXAuU0VDUDM4NFIxLAorICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQNTIxUjEsCisgICAg
ICAgICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3Vw
cG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hl
bGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5kYXRhKSwg
bGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAgICAgICBo
ZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKKyAgICAgICAgICAgIHRscy5PZmZlcmVkUHNr
cygKKyAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgKAor
ICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBlNjAxNTkxYTc1MGI4
MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj
NDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBhNGJmZTQwMmQ2YTA2
YTAwNTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUyMDg1MjMzYjY5ZDBk
ZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFiIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJmNGE5OTRmY2E3NGVl
N2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCisgICAgICAgICAgICAgICAgICAgICAgICApLAorICAg
ICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKKyAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgYmluZGVycz1bCisgICAgICAgICAg
ICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIx
Nzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3ZGEzMjgxMWI1YmFl
NGU3OCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5YjcxMzg3MmYyYmIyODgx
OGNhMWE2YjAxIgorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDAwKQor
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQor
CisgICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2VsZik6CisgICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9zbmkuYmluIikp
CisgICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBoZWxsby5yYW5kb20sCisgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCisgICAg
ICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5ZjdmNjE5NjNkN2I2NDA0
ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5zZXNzaW9uX2lkLAorICAgICAg
ICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICIyNmIxOWJkZDMwZGJm
NzUxMDE1YTNhMTZlMTNiZDU5MDAyZGZlNDIwYjc5OWQyYTVjZDVlMTFiOGZhN2JjYjY2IgorICAg
ICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgICAgIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLkNp
cGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKKyAgICAgICAgICAgIF0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2Rz
LCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQorCisgICAgICAgICMgZXh0ZW5zaW9ucwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFscG5fcHJvdG9jb2xzLCBOb25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAorICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0YjYyZDcwZjkwN2M4MTRjZDY1ZDBmNzNiOGI5OTFm
MDZiNzBjNzcxNTNmNTQ4NDEwYTE5MWQyYjE5NzY0YTIiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiZWNjMDYwNjVhNDgwZWZhOWUxZjEwYzhkYTZlNzM3ZDViZmMwNGJlM2Y3NzNlMjBhMGM5OTdm
NTFiNTYyMTI4MCIKKyAgICAgICAgICAgICAgICAgICAgICAgICI0MCIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBdLAorICAgICAgICApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoZWxsby5wc2tfa2V5X2V4Y2hh
bmdlX21vZGVzLCBbdGxzLlBza0tleUV4Y2hhbmdlTW9kZS5QU0tfREhFX0tFXQorICAgICAgICAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc2VydmVyX25hbWUsICJjbG91ZGZsYXJl
LXF1aWMuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxv
LnNpZ25hdHVyZV9hbGdvcml0aG1zLAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIHRs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKKyAgICAgICAgICAgICAg
ICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCisgICAgICAg
ICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAorICAgICAg
ICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uc3VwcG9y
dGVkX2dyb3VwcywgW3Rscy5Hcm91cC5TRUNQMjU2UjFdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zLAorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yOCwKKyAgICAgICAgICAgICAgICB0bHMuVExTX1ZF
UlNJT05fMV8zX0RSQUZUXzI3LAorICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNf
RFJBRlRfMjYsCisgICAgICAgICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVuc2lvbnMsCisgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9u
VHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICBDTElF
TlRfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKKyAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICBdLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0g
QnVmZmVyKDEwMDApCisgICAgICAgIHB1c2hfY2xpZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0
aF9zbmkuYmluIikpCisKKyAgICBkZWYgdGVzdF9wdXNoX2NsaWVudF9oZWxsbyhzZWxmKToKKyAg
ICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygKKyAgICAgICAgICAgIHJhbmRvbT1iaW5hc2NpaS51
bmhleGxpZnkoCisgICAgICAgICAgICAgICAgIjE4YjJiMjNiZjNlNDRiNWQ1MmNjZmU3YWVjYmM1
ZmYxNGVhZGMzZDM0OWZhYmY4MDRkNzFmMTY1YWU3NmU3ZDUiCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAg
IjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMx
MzJhMjMyMzUiCisgICAgICAgICAgICApLAorICAgICAgICAgICAgY2lwaGVyX3N1aXRlcz1bCisg
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAorICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kcz1bdGxzLkNvbXByZXNzaW9u
TWV0aG9kLk5VTExdLAorICAgICAgICAgICAga2V5X3NoYXJlPVsKKyAgICAgICAgICAgICAgICAo
CisgICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCisgICAgICAgICAgICAg
ICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICIwNDdi
ZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFlYjhkMWQ5NDRlNjdh
ZWY4IgorICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2QwMzJjZmFmMjJhNzNk
YTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCisgICAgICAgICAgICAgICAg
ICAgICAgICAiYjAiCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHBza19rZXlfZXhjaGFuZ2VfbW9kZXM9W3Rscy5Q
c2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0sCisgICAgICAgICAgICBzaWduYXR1cmVfYWxn
b3JpdGhtcz1bCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1JTQUVfU0hBMjU2LAorICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNE
U0FfU0VDUDI1NlIxX1NIQTI1NiwKKyAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QS0NTMV9TSEEyNTYsCisgICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBzdXBwb3J0
ZWRfZ3JvdXBzPVt0bHMuR3JvdXAuU0VDUDI1NlIxXSwKKyAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9ucz1bCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFfMywKKyAgICAgICAg
ICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAorICAgICAgICAgICAgICAgIHRs
cy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCisgICAgICAgICAgICAgICAgdGxzLlRMU19WRVJT
SU9OXzFfM19EUkFGVF8yNiwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBvdGhlcl9leHRl
bnNpb25zPVsKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIHRscy5FeHRl
bnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAg
IENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIF0sCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAg
ICAgICAgcHVzaF9jbGllbnRfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2NsaWVudF9oZWxsby5iaW4iKSkKKworICAgIGRlZiB0
ZXN0X3B1bGxfc2VydmVyX2hlbGxvKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1s
b2FkKCJ0bHNfc2VydmVyX2hlbGxvLmJpbiIpKQorICAgICAgICBoZWxsbyA9IHB1bGxfc2VydmVy
X2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8ucmFuZG9tLAorICAgICAgICAg
ICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2
MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYzYjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAg
ICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAg
ICAgICAgICAgICAgICAiOWFlZTgyYTJkMTg2YzFjYjMyYTMyOWQ5ZGNmZTAwNGExYTQzOGFkMDQ4
NWE1M2M2YmZjZjU1YzEzMmEyMzIzNSIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5B
RVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJl
c3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKKyAgICAgICAgICAgICgK
KyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0
YjdmY2MwMmE5YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAg
ICAgICAgICAgICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNh
MTk1OGQ3ZjM4NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9OXzFfMykKKworICAg
IGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfcHNrKHNlbGYpOgorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfc2VydmVyX2hlbGxvX3dpdGhfcHNrLmJpbiIpKQorICAg
ICAgICBoZWxsbyA9IHB1bGxfc2VydmVyX2hlbGxvKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
aGVsbG8ucmFuZG9tLAorICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAg
ICAgICAgICJjY2JhYWYwNGZjMWJkNTE0M2IyY2M2Yjk3NTIwY2YzN2Q5MTQ3MGRiZmM4MTI3MTMx
YTdiZjBmOTQxZTNhMTM3IgorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGVsbG8uc2Vzc2lvbl9pZCwKKyAgICAgICAgICAg
IGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAiOTQ4M2U3ZTg5NWQwZjRjZWMx
NzA4NmIwODQ5NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFiMCIKKyAgICAgICAg
ICAgICksCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJf
c3VpdGUsIHRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRo
b2QuTlVMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLmtl
eV9zaGFyZSwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1
NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAg
ICAgICAgIjA0ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQwNTZiMTY0YTI3Zjc3
MDJjYTMxOGMxNmU0ODgiCisgICAgICAgICAgICAgICAgICAgICIxOGI2NDA5NTkzYjE1YzY2NDlk
NmY0NTkzODdhNTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYyIgorICAgICAgICAg
ICAgICAgICAgICAiNzYiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRM
U19WRVJTSU9OXzFfMykKKworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZm
ZXIoMTAwMCkKKyAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bz
ay5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2
ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAgICAgaGVsbG8gPSBw
dWxsX3NlcnZlcl9oZWxsbyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhlbGxvLAorICAgICAg
ICAgICAgU2VydmVySGVsbG8oCisgICAgICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4
bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUz
ZmRmNmYxZTI2ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCisgICAgICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAg
ICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVh
NTNjNmJmY2Y1NWMxMzJhMjMyMzUiCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg
ICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKKyAgICAg
ICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEws
CisgICAgICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAgICAgICAgICAgICAgdGxzLkdy
b3VwLlNFQ1AyNTZSMSwKKyAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5YzRmMTNl
Y2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAgICAgICAg
ICAiNWNjYTFjNTAzYmYwMzc4YWM2OTM3YzM1NDkxMjExNmZmMzI1MTAyNmJjYTE5NThkN2YzODcz
MTZjODNhZTZjZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJiMiIKKyAgICAgICAgICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIHN1cHBvcnRlZF92
ZXJzaW9uPXRscy5UTFNfVkVSU0lPTl8xXzMsCisgICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5z
aW9ucz1bKDEyMzQ1LCBiImZvbyIpXSwKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAg
ICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKKyAgICAgICAgcHVz
aF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
ZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIp
KQorCisgICAgZGVmIHRlc3RfcHVzaF9zZXJ2ZXJfaGVsbG8oc2VsZik6CisgICAgICAgIGhlbGxv
ID0gU2VydmVySGVsbG8oCisgICAgICAgICAgICByYW5kb209YmluYXNjaWkudW5oZXhsaWZ5KAor
ICAgICAgICAgICAgICAgICJhZGE4NTI3MWQxOTY4MGM2MTVlYTczMzY1MTllM2ZkZjZmMWUyNmYz
YjEwNzVlZTFkZTk2ZmZhODg4NGU4MjgwIgorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNl
c3Npb25faWQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAgICAgICI5YWVlODJhMmQx
ODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1Igor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT10bHMuQ2lwaGVyU3VpdGUu
QUVTXzI1Nl9HQ01fU0hBMzg0LAorICAgICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5D
b21wcmVzc2lvbk1ldGhvZC5OVUxMLAorICAgICAgICAgICAga2V5X3NoYXJlPSgKKyAgICAgICAg
ICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAorICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVu
aGV4bGlmeSgKKyAgICAgICAgICAgICAgICAgICAgIjA0OGIyN2QwMjgyMjQyZDg0YjdmY2MwMmE5
YzRmMTNlY2EwMzI5ZTNjNzAyOWFhMzRhMzM3OTRlNmU3YmExODkiCisgICAgICAgICAgICAgICAg
ICAgICI1Y2NhMWM1MDNiZjAzNzhhYzY5MzdjMzU0OTEyMTE2ZmYzMjUxMDI2YmNhMTk1OGQ3ZjM4
NzMxNmM4M2FlNmNmIgorICAgICAgICAgICAgICAgICAgICAiYjIiCisgICAgICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbj10bHMuVExT
X1ZFUlNJT05fMV8zLAorICAgICAgICApCisKKyAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCisg
ICAgICAgIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG8uYmluIikpCisKKyAgICBkZWYg
dGVzdF9wdWxsX25ld19zZXNzaW9uX3RpY2tldChzZWxmKToKKyAgICAgICAgYnVmID0gQnVmZmVy
KGRhdGE9bG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4iKSkKKyAgICAgICAgbmV3X3Nl
c3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAgICAgICBzZWxm
LmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNrZXQoCisgICAg
ICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAgICAgIHRpY2tl
dF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25vbmNlPWIiIiwK
KyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAgICAgICAgICAg
ICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkwNjE4NzA0NzA5
NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIG1h
eF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICksCisgICAgICAgICkK
KworICAgICAgICAjIHNlcmlhbGl6ZQorICAgICAgICBidWYgPSBCdWZmZXIoMTAwKQorICAgICAg
ICBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWYsIG5ld19zZXNzaW9uX3RpY2tldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX25ld19zZXNzaW9uX3RpY2tl
dC5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0X3dpdGhfdW5r
bm93bl9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKKyAgICAg
ICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmKQorICAg
ICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShuZXdfc2Vzc2lvbl90aWNrZXQpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgIG5ld19zZXNzaW9uX3RpY2tldCwKKyAgICAgICAgICAgIE5ld1Nlc3Npb25UaWNr
ZXQoCisgICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAorICAgICAgICAgICAg
ICAgIHRpY2tldF9hZ2VfYWRkPTMzMDM0NTI0MjUsCisgICAgICAgICAgICAgICAgdGlja2V0X25v
bmNlPWIiIiwKKyAgICAgICAgICAgICAgICB0aWNrZXQ9YmluYXNjaWkudW5oZXhsaWZ5KAorICAg
ICAgICAgICAgICAgICAgICAiZGJlNmYxYTc3YTc4YzA0MjZiZmE2MDdjZDBkMDJiMzUwMjQ3ZDkw
NjE4NzA0NzA5NTk2YmVkYTdlOTYyY2M4MSIKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAg
ICAgICAgIG1heF9lYXJseV9kYXRhX3NpemU9MHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICBv
dGhlcl9leHRlbnNpb25zPVsoMTIzNDUsIGIiZm9vIildLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgKQorCisgICAgICAgICMgc2VyaWFsaXplCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCisg
ICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYnVmLmRhdGEsIGxvYWQoInRs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKQorICAgICAg
ICApCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAg
ZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0ZWRfZXh0ZW5zaW9ucy5iaW4iKQorICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQorICAgICAgICBleHRlbnNpb25zID0gcHVsbF9lbmNyeXB0ZWRf
ZXh0ZW5zaW9ucyhidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICBFbmNyeXB0ZWRF
eHRlbnNpb25zKAorICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lvbnM9WworICAgICAgICAg
ICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5R
VUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS
X1FVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJp
YWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMCkKKyAgICAgICAgcHVzaF9l
bmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnVmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9lbmNyeXB0ZWRfZXh0ZW5zaW9u
c193aXRoX2FscG4oc2VsZik6CisgICAgICAgIGRhdGEgPSBsb2FkKCJ0bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiIpCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
CisgICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZikKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5zaW9ucykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGJ1Zi5lb2YoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCisgICAgICAg
ICAgICAgICAgYWxwbl9wcm90b2NvbD0iaHEtMjAiLAorICAgICAgICAgICAgICAgIG90aGVyX2V4
dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VSVkVS
X05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18yLAorICAg
ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICApLAor
ICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVyKDEx
NSkKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxsX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YShzZWxmKToKKyAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhf
YWxwbl9hbmRfZWFybHlfZGF0YS5iaW4iKSkKKyAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5j
cnlwdGVkX2V4dGVuc2lvbnMoYnVmKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRl
bnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICAgRW5j
cnlwdGVkRXh0ZW5zaW9ucygKKyAgICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0yMCIs
CisgICAgICAgICAgICAgICAgZWFybHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgIG90aGVy
X2V4dGVuc2lvbnM9WworICAgICAgICAgICAgICAgICAgICAodGxzLkV4dGVuc2lvblR5cGUuU0VS
VkVSX05BTUUsIGIiIiksCisgICAgICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICBTRVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSU18zLAor
ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAp
LAorICAgICAgICApCisKKyAgICAgICAgIyBzZXJpYWxpemUKKyAgICAgICAgYnVmID0gQnVmZmVy
KDExNikKKyAgICAgICAgcHVzaF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYsIGV4dGVuc2lvbnMp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICBkZWYgdGVzdF9wdWxs
X2NlcnRpZmljYXRlKHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNf
Y2VydGlmaWNhdGUuYmluIikpCisgICAgICAgIGNlcnRpZmljYXRlID0gcHVsbF9jZXJ0aWZpY2F0
ZShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRleHQsIGIiIikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMsIFsoQ0VSVElGSUNBVEVf
REFUQSwgYiIiKV0pCisKKyAgICBkZWYgdGVzdF9wdXNoX2NlcnRpZmljYXRlKHNlbGYpOgorICAg
ICAgICBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlKAorICAgICAgICAgICAgcmVxdWVzdF9jb250
ZXh0PWIiIiwgY2VydGlmaWNhdGVzPVsoQ0VSVElGSUNBVEVfREFUQSwgYiIiKV0KKyAgICAgICAg
KQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcigxNjAwKQorICAgICAgICBwdXNoX2NlcnRpZmljYXRl
KGJ1ZiwgY2VydGlmaWNhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxv
YWQoInRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKKworICAgIGRlZiB0ZXN0X3B1bGxfY2VydGlmaWNh
dGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2Vy
dGlmaWNhdGVfdmVyaWZ5LmJpbiIpKQorICAgICAgICB2ZXJpZnkgPSBwdWxsX2NlcnRpZmljYXRl
X3ZlcmlmeShidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJpZnkuYWxnb3JpdGhtLCB0bHMuU2lnbmF0dXJlQWxnb3Jp
dGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyaWZ5
LnNpZ25hdHVyZSwgQ0VSVElGSUNBVEVfVkVSSUZZX1NJR05BVFVSRSkKKworICAgIGRlZiB0ZXN0
X3B1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KHNlbGYpOgorICAgICAgICB2ZXJpZnkgPSBDZXJ0aWZp
Y2F0ZVZlcmlmeSgKKyAgICAgICAgICAgIGFsZ29yaXRobT10bHMuU2lnbmF0dXJlQWxnb3JpdGht
LlJTQV9QU1NfUlNBRV9TSEEyNTYsCisgICAgICAgICAgICBzaWduYXR1cmU9Q0VSVElGSUNBVEVf
VkVSSUZZX1NJR05BVFVSRSwKKyAgICAgICAgKQorCisgICAgICAgIGJ1ZiA9IEJ1ZmZlcig0MDAp
CisgICAgICAgIHB1c2hfY2VydGlmaWNhdGVfdmVyaWZ5KGJ1ZiwgdmVyaWZ5KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJp
biIpKQorCisgICAgZGVmIHRlc3RfcHVsbF9maW5pc2hlZChzZWxmKToKKyAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9bG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQorICAgICAgICBmaW5pc2hlZCA9
IHB1bGxfZmluaXNoZWQoYnVmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBmaW5pc2hlZC52ZXJpZnlf
ZGF0YSwKKyAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKKyAgICAgICAgICAgICAgICAi
ZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhm
NDA4ZWM2OCIKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3B1c2hf
ZmluaXNoZWQoc2VsZik6CisgICAgICAgIGZpbmlzaGVkID0gRmluaXNoZWQoCisgICAgICAgICAg
ICB2ZXJpZnlfZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCisgICAgICAgICAgICAgICAgImYxNTc5
MjMyMzRmZjlhNDkyMWFhZGIyZTBlYzdiMWEzMGZjZTczZmI5ZWMwYzQyNzZmOWFmMjY4ZjQwOGVj
NjgiCisgICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBidWYgPSBCdWZmZXIoMTI4
KQorICAgICAgICBwdXNoX2ZpbmlzaGVkKGJ1ZiwgZmluaXNoZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19maW5pc2hlZC5iaW4iKSkKKworCitjbGFzcyBW
ZXJpZnlDZXJ0aWZpY2F0ZVRlc3QoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0
aWZpY2F0ZV9jaGFpbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFNFUlZFUl9DRVJURklMRSwg
InJiIikgYXMgZnA6CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZSA9IGxvYWRfcGVtX3g1MDlfY2Vy
dGlmaWNhdGVzKGZwLnJlYWQoKSlbMF0KKworICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRs
cy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKKyAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVy
bl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKKworICAgICAgICAgICAgIyBm
YWlsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRp
ZmljYXRlKSBhcyBjbToKKyAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoY2VydGlm
aWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgInVu
YWJsZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlIgorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICAjIG9rCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAorICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NlcnRpZmljYXRlX2No
YWluX3NlbGZfc2lnbmVkKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1
cnZlPWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVp
Yy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5y
ZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAg
ICMgZmFpbAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRD
ZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJzZWxmIHNpZ25lZCBjZXJ0
aWZpY2F0ZSIpCisKKyAgICAgICAgICAgICMgb2sKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZp
Y2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVzKHNl
cmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1j
ZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICkKKworICAgIEBwYXRjaCgiYWlvcXVpYy50bHMubGliLlg1MDlfU1RPUkVfbmV3
IikKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5faW50ZXJuYWxfZXJyb3Io
c2VsZiwgbW9ja19zdG9yZV9uZXcpOgorICAgICAgICBtb2NrX3N0b3JlX25ldy5yZXR1cm5fdmFs
dWUgPSB0bHMuZmZpLk5VTEwKKworICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRlX2Vj
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImxvY2FsaG9zdCIsIGN1cnZl
PWVjLlNFQ1AyNTZSMQorICAgICAgICApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRJbnRlcm5hbEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2VydGlmaWNhdGUucHVibGljX2J5dGVz
KHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0
ZT1jZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfbmFtZT0ibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9u
KSwgIk9wZW5TU0wgY2FsbCB0byBYNTA5X3N0b3JlX25ldyBmYWlsZWQiKQorCisgICAgZGVmIHRl
c3RfdmVyaWZ5X2RhdGVzKHNlbGYpOgorICAgICAgICBjZXJ0aWZpY2F0ZSwgXyA9IGdlbmVyYXRl
X2VjX2NlcnRpZmljYXRlKAorICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwg
Y3VydmU9ZWMuU0VDUDI1NlIxCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNh
dGUucHVibGljX2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgICMg
wqB0b28gZWFybHkKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSAoCisg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZSAtIGRhdGV0aW1lLnRp
bWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJlZCkgYXMgY206CisgICAgICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9
Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNt
LmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBub3QgdmFsaWQgeWV0IikKKworICAgICAgICAj
IHZhbGlkCisgICAgICAgIHdpdGggcGF0Y2goImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tf
dXRjbm93OgorICAgICAgICAgICAgbW9ja191dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNh
dGUubm90X3ZhbGlkX2JlZm9yZQorICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisKKyAgICAgICAgd2l0aCBwYXRj
aCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2Nr
X3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIKKyAgICAg
ICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRh
LCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAg
ICAgICAgICAgKQorCisgICAgICAgICMgdG9vIGxhdGUKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlv
cXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25v
dy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYWZ0ZXIgKyBkYXRldGltZS50
aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgc2Vjb25kcz0xCisgICAgICAgICAgICApCisgICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydENlcnRpZmljYXRlRXhwaXJl
ZCkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAg
ICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVy
X25hbWU9ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJDZXJ0aWZpY2F0ZSBpcyBubyBsb25nZXIg
dmFsaWQiKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Qoc2VsZik6CisgICAgICAgIGNl
cnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBjb21t
b25fbmFtZT0iZXhhbXBsZS5jb20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKKyAgICAgICAgKQorICAg
ICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNv
ZGluZy5QRU0pCisKKyAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6CisgICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0
aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCisKKyAgICAgICAgICAgICMgdmFsaWQKKyAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImV4YW1wbGUuY29tIgorICAgICAg
ICAgICAgKQorCisgICAgICAgICAgICAjIGludmFsaWQKKyAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgorICAgICAgICAgICAg
ICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCisgICAgICAg
ICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJ0ZXN0LmV4YW1wbGUuY29tIiwKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0
cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAndGVzdC5leGFtcGxl
LmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIiwKKyAgICAgICAgICAgICkKKworICAg
ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkg
YXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAorICAgICAgICAgICAg
ICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25h
bWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJob3N0bmFtZSAnYWNt
ZS5jb20nIGRvZXNuJ3QgbWF0Y2ggJ2V4YW1wbGUuY29tJyIKKyAgICAgICAgICAgICkKKworICAg
IGRlZiB0ZXN0X3ZlcmlmeV9zdWJqZWN0X3dpdGhfc3ViamFsdG5hbWUoc2VsZik6CisgICAgICAg
IGNlcnRpZmljYXRlLCBfID0gZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoCisgICAgICAgICAgICBh
bHRlcm5hdGl2ZV9uYW1lcz1bIiouZXhhbXBsZS5jb20iLCAiZXhhbXBsZS5jb20iXSwKKyAgICAg
ICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsCisgICAgICAgICAgICBjdXJ2ZT1lYy5T
RUNQMjU2UjEsCisgICAgICAgICkKKyAgICAgICAgY2FkYXRhID0gY2VydGlmaWNhdGUucHVibGlj
X2J5dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKQorCisgICAgICAgIHdpdGggcGF0Y2go
ImFpb3F1aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgorICAgICAgICAgICAgbW9ja191
dGNub3cucmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQorCisgICAg
ICAgICAgICAjIHZhbGlkCisgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCisgICAgICAg
ICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9u
YW1lPSJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZlcmlmeV9jZXJ0
aWZpY2F0ZSgKKyAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0
aWZpY2F0ZSwgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iCisgICAgICAgICAgICApCisK
KyAgICAgICAgICAgICMgaW52YWxpZAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl
cyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206CisgICAgICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAorICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZp
Y2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImFjbWUuY29tIgorICAgICAgICAgICAgICAg
ICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc3RyKGNt
LmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImhvc3RuYW1lICdhY21lLmNvbScgZG9lc24n
dCBtYXRjaCBlaXRoZXIgb2YgJyouZXhhbXBsZS5jb20nLCAnZXhhbXBsZS5jb20nIiwKKyAgICAg
ICAgICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGUu
YmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3NmFjZDdjOQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTUzOAp6Y21kO1BWRXhDeSExe31VXntZVj4+cW1ub21kRkxuT3BIdVNvRDhSUjgp
aW1qMkVgY2d2VDxzKWQ5OzEhV258PUwKeldpYXFIPFRsYEJWLTk2dTZLMEJ0RyptTkMwZGNyXldD
SlFvR1Y9MmpnN2VjIyRgZ3hINzJOVm1eSExIXkdKI153CnpqKXIwZUF8UTNsSmlQZyhNWV9wfXky
WXRRV3ZOOTVhXmsjKDc2dWtabVdDIXEjKWY4NTs9RCF7MklkQ2xQXzk4ZAp6cyYoUTlxOTl8fmRI
OT9ZaSVXNys2JiYrUUdLdnhfNDMhTk9BP31kRT9HOGdCMHxBSTVJQ0p1bzZMVHsxaSVTZmUKejcj
QVVYayYlXnd4cndvIzBWditaKVdxMXhGa2VJOC0wXipWTzBybXoqaEB4e0IrWE0rR2JZKGBUI24y
OWNpezd0CnpCZnQzfj94YncrS0R+TD5KZzFsSnYodF53P3RFYiorYS1NOXpHWnJpJippJVAmaXIx
anRod3peND5LKmN5TUJHQQp6TXh7aXRnbjQ8SCRDVjArPndEJDArYDhGNUduLUg0VUokJU4+MV9Y
WVgweWZEbUNJKyZfajxaXk9XKGQ0dHJnNDkKekttQi1vd2UqZVlIeGo+cG9CSnI1YiVwUWo4Rk1j
JWR8UmV9ZDdEXzReQEotZig9PmhAUGVeJWdebjFzVm88fSpsCnpYfFo+RVVjRW9qYjlxO0Q/PUZ2
cFE3KXp2Q2QtO093QU9QZ3RAJmFoeCRyVWpna15ibCVSO1MleU1GTVdVNj1Kcgp6Q1lvUkEpU0tz
PSkoKSk2eVhSbE9jMmFaeFMybX19OShSVClOMmhhfTFFVSlGY1JtIW9AQGdyNnczfU1YSlZPZ1AK
ejEofH1jYHdYfipqenFyeXg0QnJAJFNTfCppckZidyF5bCNAU0VGWCRfKmdib0A9REBYRUI3eGFK
ezMoYERFe0RFCno+WVome1M+TFhEK2c1czVKQDkkJV80NFE2MT5WXj16Z1EreyhsITV0NSRDXiZg
XyNVXnBZJnNXPmVNVCQ3dnkpYQp6OS1QTHNAWkwxcHVBUlAyJSF+fC1pPD1rXjBBcGtpSTEkTVR2
aFcma0h6Q0MjQTIzI0JgNTc3aXYjPkJUdWBWIT4KejFAVG9gS3h2TGNufmpsYG03U1JwJlNFbSkw
Wjl2a2xydEdIS29zK19oX1EoRHptazF5OUsjXkN4alIyUXxGWH5OCnp0KjJ7MzRRZkcobTA4TFJO
KllBJj9tdTx3KityOUc9QjB8S0BASHtxZEB8a1V1YHFDbktiMTJANkZtMXQ4I0ZlPAp6OUx+dGRR
Zl5SY1U8MmJERnRyKEVsI349JD5GYnhJN01DT14+SkAtPEFjJil2bXMkYzkpaTA8X1BFMVpNRCR4
VEgKejJCdlZgakJUMzQ9Kn58ckYzPmt7MV9ncFZpO2FQbWZ5RHh8MXR4N3EjT04oYkVkeXBWUHpq
KXlUJEY+SCVZWCQ1CnpGcWJ0bHNESkg9NiE+IU54ZHl9alVBQCk5JXBZWnojY3lUe1U4MXp9X05K
P0RkJXlHQ2I8VyNUblZQUTFxWlJ0agp6cHw1clJlRH5kNFRFNSMtTkBnc21Vdzd4RC1mZ0ZIaTNn
P0tZTmk+NzlwN2YzQ0A7Iy1uaVUoRyRARGlXPFY1KUMKejRYTW14a042b1pYUW5OZi03IzdHUUl1
fF9ZNWVyP2lYLWQ0Jld2a1llT1lqPSlGUiRySz58RGY/Vm8kal8tNU90CnpJYnVKcW0yITA1PTZi
cUNUZGFQfFBwJGNmRk9eP0VuPTFEdU5BN2p4JkpYTTJtJmwqLUk8bThCPDtgclA0Q3t4Zgp6OChP
d2NJSWB+RjdqdThiMV40RCNaRzN1MGozdiNVK3dxUSp0JUJXfj9OaFopISstNm8tKTZQemx6K3Mo
UWFnQEwKem90X1BgZE90ZV93MH1DZmBQKHBUU0hHTzlxOUx4Vlg2Vz4pJlRzT1E+V3ErNl5XOHFi
Kk04WmB2JGJXQFJhMjlPCnpRdGJ+RG0zTUczX1UrXmZ4JEBnMj0tKkEoNC1NQWE0KDJ5cWw+Y1BT
QHklYDdIMSRPOTIlez1LKn5wX1ZZdlpJVQp6alNwVTcpJVV1NSFeeEBGXztLPjd0TEBXZ2B8Z2xw
SHJYdzZpT0RgdmBIXnglTkFqVCRpO2BEI0djVylFVUxyfTQKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZjA4Mzk1MGI1MzhjMTIzZWI5ZWRjOGZjYmVkOTJlMTkzMjk1NzM1CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAzOTIKemNtVjszMGVBaW4wMEQjdTFPYjQ4ck91PTljT2QwQXZ2MyU5
QzI9bSU3PXIqIyE8YiZhPld7JUclfFdDT0BgclZhCnpsOzhHemVsQDVzJlZpWDc2eDs7flJXJjde
eiVBenUpZil6bEdDK0k2Tz9wY3MhfTxtKDNBWG0qYmhucVgoIS1HWgp6byE0fkJYUmAkWXpHUD1U
ZSZofD5UP2UjVDxJZFdobzVeMEBoZlh3RFU3OUJweUFSM0peP2FAQngzIUB+QkprTTUKekgxPUFE
JjEhRGZ4MnJ4Yz1mJl9qZCpmJTRsLVZsbUUyNkV4dkUqYWImcE5ONzE+bHlDP1hsO2xOTDx1V0Q2
fGUzCnpgRj5FNHZ1MkE5NUA3YSpkKkp8V0BtJkI3c0xublFyen5zKHQ7TGlQPDI9PTEkfX0yZExN
PTE4P28mM2IrPmI/dgp6MV5fRn4jbXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQqUGFKNzdUeFhkYXww
QmRsMzY+ajFDQzBhVE9iOzg4cVpDNSgKemFiSTNZS21FalpxSHxTMVZGWmJJQVl+S0heeyVZZW5g
VT9TJlgob1dtNUR8UU0jc2JIR0Z3XyRveTh7UTNfX0JYCm07e2A+ejg+UFNHOGpXVGAwISV5bjgm
SFd+dEhDJihaKCRFdHlVTVFBUTJ8QDhYVEFGWAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNDBhZWNmYzY5
ZmI4NGQ1YmVkNmIxYWFjOTE2MmVjMTNhMDQ2ODYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1
OAp6Y21aUSVWRUQoKEVVe15tXzIoenZ1fGE0NFJsVjYwfEl1Jmw7bWUtQ19CWiR6ZW9TM2dfV1l7
Q3Rhblh8RjE4JiEKelpNMGJQPUFDfkdVUSo2bzdkKWJaa0xeRG5kZUNUKmt0cVk0RnExSCZGZiRf
cSErSGl8MjZxTm0yNXw7UW1nO3x0CnpVRUU0ZFMpRyElJEclVEV8RXRMJU4+TXVGO19GYDdEU3Fr
ZWVvUWB8NzhPIV8hUlkqWXJSQkRaYG5JZShePzxTTgp6cUg2Zm9POEZUSlUtKmt8Vjk7alo8WH5w
MG0jTFNvbXR4PiQ7OX10NVV9MGZxVlBzK2l2Uk4zSWZWU3V8RmZsVXoKeVUmPihxcE1nUDshSHxL
S2Z1JXUhZnF7VnlPMHo/MDc2ejZecGZDZD8xQ3Z0KDB8eF8+TGtpRmdNbEp4JEkjR0g2CgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Ns
aWVudF9oZWxsb193aXRoX2FscG4uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEzYTNlNzVlMTRkNmQ5MjkwZjVkYTQy
OWEzMjUwMmQ3YzRjMjZjCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDYKemNtWlElVkFOd35l
ajZUPnpjK0dAQDJ9TXRuQ35vbWsjT2NWcExvOzNeLU5FektoPG49cEl5ZWx6IyteaSVwfWFyCnpA
U2wtXjtxVSpZNDVrZG00NkY8KzRKLUB7M35XJUU5Wkl0UlgjdD0oMkxtR2AxMUFITUxrYV5VUD43
K18wNE9OSQp6QWpaSFRvU2MoaW52I34yU2ReKztTZWx1dm16PHg9enxGd0klKXJSUnp5KlhINEJg
eTNLKCYkIyUwTjg9S3QzQzUKemhPd0BwQn1nfD1qKTglZkw1QEwmZ18pSV5qaFRhO2dNKSpVZ051
V2tnTjF7WWdOPW9lbTY0NStMN1JiQGlKNjUjCnptd15mQjN9WGcmMjNNZClOMHRzSiF4LW80NGQq
bTlQbCl8e14zdiV8JShtTkUqfFdiWFdpV1FVLWYoNEcoNmI0fgppLV5KUWlGYGhtP0Z8O2pEJjFi
JnhtI0JyPXl1U24lRExyMTZzUlJJKyhNTV9rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3Bzay5iaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Y2OTVjM2E3YjM3YzI3MDE5YWZhNTFhNjA1MjVjYmJjMTA5NjZiOApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIjR21yQXV6Y3NxTkdF
aXtCe29KK1I2Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+OWx4WGAmWSQ7I3p4
R2VkOFV7OURDU2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlXS2R7VzlgUy1QfV9X
M1YqWTkwJTBzKExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5eDNBCnopJShsLVVI
T3xHKW1YTmNMN1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/XjZnK00+KEEjS18z
Tgp6eiN6alEjbFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERUNjd7VTkxYyY0Rlcq
NVkqM21WTzB6SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9AXkhlRWV2KFBIczdo
T3syYUhgWnF8SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEzZUcpdEA1NXtrb1ZP
anBNZE1xaT1QRWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+QDNIbz50Kl4+UUNn
P1NIJVktVms/dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3RWhuJXp0V3JSR2F6
RVZsWHJpP154Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYkYT4jTnFNClN1R311
JXVDS2tSTCprVEZIWHtJQ0FGQGdTCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjU2OGE4NjE2N2ZmMTYxODMxZjNlOTc5ZTc0NTAyYzMwM2UxNmE1ZQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjg2CnpjbVpRJVYzY0JKbz5BTHJCRXJxKGJTQmk1VUVZM3ZlZDA5Uj5KKm1PPXt+
KnQwP2stVnZLNz1lJmMxN0tgK0ZjYAp6bCRGPis+I0d4KD9tdG8zS0ooSmp2dkdudWVwUjFOVl8q
fHo1QHItO1dAS1BFJjB4Jm4mZnYtKiZmdihoT31GNEQKemB3NVk9c1RhT21jaDhoKCtzOyFpWTlH
PWZ1eUVwfmpuaCpXeSpaR094fUBSIyU3LTYkZFkzJm56cTxjYF92NyF5CnprR09iZCkoMzcpNV44
V0AmfVFKfFV9bVk4c2g2Jm9WJkctcVYmTEZsVlBSJXJXTVR4ZVNzMGpydyYqZjJGI0BlKwp6a1lF
c0ZVPVU4dSR1Q1Z3JVNrTHMpaCNUfE94OD16Jjs3clkhVGRpMWdDSyg7MTFrZWRnOCkhMTg8Yns7
KGt1KXQKWGpYK0ByTWd9SVEybkclWUNXalFEYEhXbHUxfENyVAoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5z
aW9ucy5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3Mzk3NTUzZWE2CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5MAp6Y21kO0pVPGhMZmBNO0RROzZEUntBUGIwS2FBamEr
VX0rRndVfD9XXygoRiowZ0BMNkpEOXBnZnp+bUljentDSmoKUWc5PG5wbT5nMFZ4RUw2QDA0fVR1
KiNIMGwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuLmJpbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZDg0MzZhN2IzMzgzMDc3ZjRhMzlhZDMxOGE1OGIyOGUzYmQzNTcyCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwxLTg2cHxOOFEyKEQ4
V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUzKjErNCNuRj5vXzVO
LXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5dlFWMVFSCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Vu
Y3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlfZGF0YS5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zX3dpdGhfYWxwbl9hbmRfZWFybHlf
ZGF0YS5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U5MDY5ZjZiZTNkMmU0NTdlNjNjOTQyZmM5ZjA1NGNkYmFj
NGE5MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTE2CnpjbWQ7SlU/XmI3ViptakcxYFktYCl7
SGAzQkxmQzQyOFJEajhOd0pzNz8+Q1ljdXhsYGFTQWs9eCtRKH5kWTAzMQp6fE5uT31hR3FISVRx
fTlIWTZ2PzY4dnshTiF+ZyQ0JjVTQE1raStgXzdYdkYpa2VQd1d7UnNtWDEweXA3QkxoPnEKSzAw
VER6cWEqLW9fOFo2bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2Zp
bmlzaGVkLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0YWI3OTRmMzllZjc3
NmZkNWZhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNgp1Y21WKzwwTmVpKjAwMUVJU0NUUmB8
QyZpNXNAcENPJEZaWGkmVTU+b3p7RHFTbih9RCQyPCZKYU5ELVI9CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3Rp
Y2tldC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjQzOWI0NzMxZTA0YjNiNmQ2ZDNhNjE1ZmMzM2RlNWRmNzQ2Y2Y1YgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkmfENmZ1RuMStBRDM1RTlC
fDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZFR1JPMER3anFKXiVtIQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rs
c19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4gYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Mzc5Mjg5MGFjZTc1MTNjZmI1YWExOGEzNzNhOTQ5ZjQxZGI4Y2Nm
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2NAp6Y21aUSFWNmI2ZTN+Vl5eWSZ8Q2ZnVG4xK0FE
MzVFOUJ8NzFsfjhseGcwP0E+YCVOfjkwKFp7SD82PUViQ1lAPHkKVDtBaFpjVkVHUk8yOV54V1k1
RG04RjtmfSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy90ZXN0cy90bHNfc2VydmVyX2hlbGxvLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvLmJpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGE2YzUxZmU1NjAyOTUxM2I4MzhjNmQyNDMxOWNl
NWM4ZmZkYmY0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNTUKemNtVjtNMEEmOUgwMDVUKjFG
ZmkxYW5ZODUjdWUmd0hjXzVHLSl8bCFeUldrQjtvZ0Ayc0VBSTJmRlBSZ2Z9K3VlCnohT0pxRURj
UmlxMDdARHxpcUo/fVFedm9+Umx6YyVHQnB6ZDAwMihfRCp5cm0xT1BKdE1GMUI3Sz9JOEAmP3E4
OAp6KmhfIVIwOyRDREtGUnxyPEhySjtxZT9TKlBIdWFsaUNvR1lQJkBFOWlwRzxDSEF4Wj9afVRN
KENjTDRRamVqX0UKSjdSV20wJiQxTipLe0B+YwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlY2NkZjU5YWI5NWU4OWU0MDRjZTIzNGRiM2Y4MWQxOGRlMWUwZWIKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3QjAwNWw+MUkpVXcxcEZKLTZndz0meHBnNFZI
YHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQKel52PU8+aE9tVHwwbDtHPlYkRjY9ZnshbldG
SEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdLP0hAQCZkY2xrCnpSRkI0Mnpmcmo4K0pxYFZS
PFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NTdlkhQTV7bmk9YyYqNGw3bi1kQgpQKGBATm9W
cy0jMjAwSUMyNkkoO2sKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGJlNWI3MDczZmRiZTNjYjdiZmZiNzE4YjE0NmRlMjUxMDgz
YmVkNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTYyCnpjbVY7VDBBMnFBMDA1bz8xRmZpMWFu
WTg1I3VlJndIY181Ry0pfGwhXlJXa0I7b2dAMnNFQUkyZkZQUmdmfSt1ZQp6IU9KcUVEY1JpcTA3
QER8aXFKP31RXnZvflJsemMlR0JwemQwMDM0MUQqeXJtMU9QSnRNRjFCN0s/SThAJj9xODgKeipo
XyFSMDskQ0RLRlJ8cjxIcko7cWU/UypQSHVhbGlDb0dZUCZARTlpcEc8Q0hBeFo/Wn1UTShDY0w0
UWplal9FClE3UldtMCYkMkslMDBVLWtafFJkbF95N09eCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiYWIyYjY4YTI0OGZiYzUzNDBmMjNlMmE3OTc2
NzA1MGE1ZjVhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5w
eQpAQCAtMCwwICsxLDcxIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gY3J5cHRvZ3JhcGh5IGlt
cG9ydCB4NTA5Citmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0IGRlZmF1
bHRfYmFja2VuZAorZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0IGhh
c2hlcworZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBv
cnQgZWMKKworCitkZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9uX25hbWUsIGN1cnZl
PWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgorICAgIGtleSA9IGVjLmdlbmVy
YXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1cnZlPWN1cnZlKQor
CisgICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKKyAgICAgICAgW3g1MDkuTmFtZUF0
dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1lKV0KKyAgICApCisK
KyAgICBidWlsZGVyID0gKAorICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVpbGRlcigpCisgICAg
ICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKKyAgICAgICAgLmlzc3Vlcl9uYW1lKGlzc3VlcikK
KyAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKKyAgICAgICAgLnNlcmlhbF9u
dW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQorICAgICAgICAubm90X3ZhbGlkX2Jl
Zm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKKyAgICAgICAgLm5vdF92YWxpZF9hZnRl
cihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVkZWx0YShkYXlzPTEw
KSkKKyAgICApCisgICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6CisgICAgICAgIGJ1aWxkZXIgPSBi
dWlsZGVyLmFkZF9leHRlbnNpb24oCisgICAgICAgICAgICB4NTA5LlN1YmplY3RBbHRlcm5hdGl2
ZU5hbWUoCisgICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBmb3IgbmFtZSBpbiBh
bHRlcm5hdGl2ZV9uYW1lc10KKyAgICAgICAgICAgICksCisgICAgICAgICAgICBjcml0aWNhbD1G
YWxzZSwKKyAgICAgICAgKQorICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5LCBoYXNoZXMuU0hB
MjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQorICAgIHJldHVybiBjZXJ0LCBrZXkKKworCitkZWYg
bG9hZChuYW1lKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksIG5hbWUpCisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICBy
ZXR1cm4gZnAucmVhZCgpCisKKworZGVmIHJ1bihjb3JvKToKKyAgICByZXR1cm4gYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQorCisKK1NFUlZFUl9DQUNF
UlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJweWNhY2Vy
dC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQorU0VSVkVSX0NFUlRGSUxFX1dJVEhfQ0hBSU4gPSBv
cy5wYXRoLmpvaW4oCisgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtIgorKQorU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKK1NLSVBfVEVTVFMgPSBmcm96ZW5zZXQo
b3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxpdCgiLCIpKQorCitp
ZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgorICAgIGxvZ2dpbmcuYmFzaWNDb25m
aWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKKworaWYgKAorICAgIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiCisgICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMworICAgIGFuZCBzeXMudmVy
c2lvbl9pbmZvLm1pbm9yID09IDgKKyk6CisgICAgIyBQeXRob24gMy44IHVzZXMgUHJvYWN0b3JF
dmVudExvb3AgYnkgZGVmYXVsdCwKKyAgICAjIHdoaWNoIGJyZWFrcyBVRFAgLyBJUHY2IHN1cHBv
cnQsIHNlZToKKyAgICAjCisgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM5MTQ4
CisKKyAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lvLldpbmRvd3NTZWxl
Y3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3ZlcnNpb25fbmVnb3Rp
YXRpb24uYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NTA5YzkwOTljZWE4YWVlMjhkZWZmYjU1MDYyZDM5M2Qx
YzNiYTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMxCmxjbWFGRzAwYlBmKTxrKmtZRzJ7V0Bs
KVR+P0FLSzNnfDY9SVYqZVEhQm11SUozaitXRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MGYxM2UxYjJjMzc1M2UyODY5M2Zh
ZTIzODI1MmFmNjdhNzg4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSw1NyBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL19faW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfY2xpZW50LmJpbgor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy9pbml0aWFsX3NlcnZlci5iaW4KKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvcHljYWNlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0
LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy9zc2xfY2VydF93aXRoX2NoYWluLnBlbQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9zc2xfa2V5LnBlbQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5j
aW8ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvX2NvbXBhdC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90ZXN0X2J1ZmZlci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2Nv
bm5lY3Rpb24ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jcnlwdG8ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9oMC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcGFja2V0LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X3JlY292ZXJ5LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF90bHMucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlLmJpbgorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5LmJpbgorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50
X2hlbGxvX3dpdGhfYWxwbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
b193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRo
X3NuaS5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJp
bgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBu
LmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9h
bHBuX2FuZF9lYXJseV9kYXRhLmJpbgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQu
YmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXQuYmluCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVu
c2lvbi5iaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsby5iaW4KKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4KKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy91dGlscy5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy92ZXJzaW9uX25l
Z290aWF0aW9uLmJpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNGVjOTVjOWExNjE2N2Nj
M2VjMGMzMTczNTMyYzU0MDBjMTE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL0xJ
Q0VOU0UKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4KKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJz
dAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0NPTlRSSUJVVElORyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L0NPTlRSSUJVVElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc1YmUxMjZmYjQ1ODljODY1OTk0YzU5ZDYxM2Uz
ZDQxYTdhOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVU
SU5HCkBAIC0wLDAgKzEsMzAgQEAKKyMgSG93IHRvIENvbnRyaWJ1dGUKKworV2UnZCBsb3ZlIHRv
IGFjY2VwdCB5b3VyIHBhdGNoZXMgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBwcm9qZWN0LiBU
aGVyZSBhcmUKK2p1c3QgYSBmZXcgc21hbGwgZ3VpZGVsaW5lcyB5b3UgbmVlZCB0byBmb2xsb3cu
CisKKyMjIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50CisKK0NvbnRyaWJ1dGlvbnMgdG8g
dGhpcyBwcm9qZWN0IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBDb250cmlidXRvciBMaWNlbnNl
CitBZ3JlZW1lbnQuIFlvdSAob3IgeW91ciBlbXBsb3llcikgcmV0YWluIHRoZSBjb3B5cmlnaHQg
dG8geW91ciBjb250cmlidXRpb247Cit0aGlzIHNpbXBseSBnaXZlcyB1cyBwZXJtaXNzaW9uIHRv
IHVzZSBhbmQgcmVkaXN0cmlidXRlIHlvdXIgY29udHJpYnV0aW9ucyBhcworcGFydCBvZiB0aGUg
cHJvamVjdC4gSGVhZCBvdmVyIHRvIDxodHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5jb20v
PiB0byBzZWUKK3lvdXIgY3VycmVudCBhZ3JlZW1lbnRzIG9uIGZpbGUgb3IgdG8gc2lnbiBhIG5l
dyBvbmUuCisKK1lvdSBnZW5lcmFsbHkgb25seSBuZWVkIHRvIHN1Ym1pdCBhIENMQSBvbmNlLCBz
byBpZiB5b3UndmUgYWxyZWFkeSBzdWJtaXR0ZWQgb25lCisoZXZlbiBpZiBpdCB3YXMgZm9yIGEg
ZGlmZmVyZW50IHByb2plY3QpLCB5b3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBkbyBpdAorYWdh
aW4uCisKKyMjIENvZGUgcmV2aWV3cworCitBbGwgc3VibWlzc2lvbnMsIGluY2x1ZGluZyBzdWJt
aXNzaW9ucyBieSBwcm9qZWN0IG1lbWJlcnMsIHJlcXVpcmUgcmV2aWV3LiBXZQordXNlIEdpdEh1
YiBwdWxsIHJlcXVlc3RzIGZvciB0aGlzIHB1cnBvc2UuIENvbnN1bHQKK1tHaXRIdWIgSGVscF0o
aHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vYXJ0aWNsZXMvYWJvdXQtcHVsbC1yZXF1ZXN0cy8pIGZv
ciBtb3JlCitpbmZvcm1hdGlvbiBvbiB1c2luZyBwdWxsIHJlcXVlc3RzLgorRm9yIGluc3RydWN0
aW9ucyBmb3IgY29udHJpYnV0aW5nIGNvZGUsIHBsZWFzZSByZWFkOgoraHR0cHM6Ly9naXRodWIu
Y29tL2dvb2dsZS9weXdlYnNvY2tldC93aWtpL0NvZGVSZXZpZXdJbnN0cnVjdGlvbgorCisjIyBD
b21tdW5pdHkgR3VpZGVsaW5lcworCitUaGlzIHByb2plY3QgZm9sbG93cworW0dvb2dsZSdzIE9w
ZW4gU291cmNlIENvbW11bml0eSBHdWlkZWxpbmVzXShodHRwczovL29wZW5zb3VyY2UuZ29vZ2xl
L2NvbmR1Y3QvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL0xJQ0VOU0UgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWJlYTkwMjU0Mjg3NzllMTY0NDU5
YzJhMTIwZTFhMDdhYTg1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9M
SUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK0NvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitkaXN0cmlidXRpb24u
CisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCitEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTUFOSUZF
U1QuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5NzllNjNlNGEw
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCkBAIC0w
LDAgKzEsNiBAQAoraW5jbHVkZSBDT1BZSU5HCitpbmNsdWRlIE1BTklGRVNULmluCitpbmNsdWRl
IFJFQURNRQorcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZSAqLnB5CityZWN1cnNpdmUtaW5jbHVk
ZSBtb2RfcHl3ZWJzb2NrZXQgKi5weQorcmVjdXJzaXZlLWluY2x1ZGUgdGVzdCAqLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9S
RUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3Y2JlNTUwYzA2NTc4MmIwZTMxNWRlMDQ2NTFjOWUwNjhj
YjNhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL1JFQURNRS5tZApAQCAt
MCwwICsxLDM2IEBACisKKyMgcHl3ZWJzb2NrZXQzICMKKworVGhlIHB5d2Vic29ja2V0IHByb2pl
Y3QgYWltcyB0byBwcm92aWRlIGEgW1dlYlNvY2tldF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY0NTUpIHN0YW5kYWxvbmUgc2VydmVyLgorCitweXdlYnNvY2tldCBpcyBpbnRlbmRl
ZCBmb3IgKip0ZXN0aW5nKiogb3IgKipleHBlcmltZW50YWwqKiBwdXJwb3Nlcy4KKworUnVuIHRo
aXMgdG8gcmVhZCB0aGUgZ2VuZXJhbCBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJz
b2NrZXQKK2BgYAorCitQbGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBmb3IgbW9yZSBkZXRh
aWxzLgorCisjIElOU1RBTEwgIworCitUbyBpbnN0YWxsIHRoaXMgcGFja2FnZSB0byB0aGUgc3lz
dGVtLCBydW4gdGhpczoKK2BgYAorJCBweXRob24gc2V0dXAucHkgYnVpbGQKKyQgc3VkbyBweXRo
b24gc2V0dXAucHkgaW5zdGFsbAorYGBgCisKK1RvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEg
bm9ybWFsIHVzZXIsIHJ1biB0aGlzIGluc3RlYWQ6CisKK2BgYAorJCBweXRob24gc2V0dXAucHkg
YnVpbGQKKyQgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyCitgYGAKKyMgTEFVTkNIICMK
KworVG8gdXNlIHB5d2Vic29ja2V0IGFzIHN0YW5kYWxvbmUgc2VydmVyLCBydW4gdGhpcyB0byBy
ZWFkIHRoZSBkb2N1bWVudDoKK2BgYAorJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3RhbmRhbG9u
ZQorYGBgCisjIERpc2NsYWltZXIgIworVGhpcyBpcyBub3QgYW4gb2ZmaWNpYWxseSBzdXBwb3J0
ZWQgR29vZ2xlIHByb2R1Y3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
YWJvcnRfaGFuZHNoYWtlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYWJvcnRf
aGFuZHNoYWtlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjcxOWNhODk3MzcxMDU3MTljNzFjMmE0MmVh
ZmYwZDQ2NDQ3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIw
MTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbigKKyAgICAgICAgIkFib3J0ZWQgaW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ui
KQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwor
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Fib3J0X3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNGMyNDBiZjJjMWNiMGJkNTM4ZWMzN2JmNTUxYzExMjU2Mzk2YjhjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkK
QEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtl
CisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBh
c3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAorICAgICAgICAiQWJvcnRlZCBpbiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEiKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODY5Y2Q3ZTFlZTY1M2Q1OWYwNGI4MDJmZjM0YzhkMDgxMzE3Y2E4OQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVu
Y2htYXJrLmh0bWwKQEAgLTAsMCArMSwxMzQgQEAKKzwhLS0KK0NvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CittZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Citub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCitjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCitpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCitk
aXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQordGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKK0xJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKK09XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCitEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
Ky0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkFycmF5QnVmZmVyIGJlbmNobWFyazwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIFBSSU5U
X1NJWkUgPSB0cnVlOworCisvLyBJbml0aWFsIHNpemUgb2YgYXJyYXlzLgordmFyIFNUQVJUX1NJ
WkUgPSAxMCAqIDEwMjQ7CisvLyBTdG9wcyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBhbiBh
cnJheSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgordmFyIFNUT1BfVEhSRVNIT0xEID0gMTAwMDAw
ICogMTAyNDsKKy8vIElmIHRoZSBzaXplIG9mIGVhY2ggYXJyYXkgaXMgc21hbGwsIHdyaXRlL3Jl
YWQgdGhlIGFycmF5IG11bHRpcGxlIHRpbWVzCisvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJl
YWNoZXMgdGhpcyB0aHJlc2hvbGQuCit2YXIgTUlOX1RPVEFMID0gMTAwMDAwICogMTAyNDsKK3Zh
ciBNVUxUSVBMSUVSUyA9IFs1LCAyXTsKKworLy8gUmVwZWF0IGJlbmNobWFyayBmb3Igc2V2ZXJh
bCB0aW1lcyB0byBtZWFzdXJlIHBlcmZvcm1hbmNlIG9mIG9wdGltaXplZAorLy8gKHN1Y2ggYXMg
SklUKSBydW4uCit2YXIgUkVQRUFUX0ZPUl9XQVJNVVAgPSAzOworCitmdW5jdGlvbiB3cml0ZUJl
bmNobWFyayhzaXplLCBtaW5Ub3RhbCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUg
KHRvdGFsU2l6ZSA8IG1pblRvdGFsKSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKHNpemUpOworCisgICAgLy8gV3JpdGUgJ2Ency4KKyAgICBmaWxsQXJyYXlCdWZmZXIo
YXJyYXlCdWZmZXIsIDB4NjEpOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0
dXJuIHRvdGFsU2l6ZTsKK30KKworZnVuY3Rpb24gcmVhZEJlbmNobWFyayhzaXplLCBtaW5Ub3Rh
bCkgeworICB2YXIgdG90YWxTaXplID0gMDsKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IG1pblRvdGFs
KSB7CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpOworCisgICAg
aWYgKCF2ZXJpZnlBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlciwgMHgwMCkpIHsKKyAgICAgIHF1ZXVl
TG9nKCdWZXJpZmljYXRpb24gZmFpbGVkJyk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg
ICAgdG90YWxTaXplICs9IHNpemU7CisgIH0KKyAgcmV0dXJuIHRvdGFsU2l6ZTsKK30KKworZnVu
Y3Rpb24gcnVuQmVuY2htYXJrKGJlbmNobWFya0Z1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgc3RvcFRocmVzaG9sZCwKKyAgICAgICAg
ICAgICAgICAgICAgICBtaW5Ub3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVy
cywKKyAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVySW5kZXgpIHsKKyAgd2hpbGUgKHNp
emUgPD0gc3RvcFRocmVzaG9sZCkgeworICAgIHZhciBtYXhTcGVlZCA9IDA7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IFJFUEVBVF9GT1JfV0FSTVVQOyArK2kpIHsKKyAgICAgIHZhciBzdGFy
dFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7CisKKyAgICAgIHZhciB0b3RhbFNpemUgPSBiZW5j
aG1hcmtGdW5jdGlvbihzaXplLCBtaW5Ub3RhbCk7CisKKyAgICAgIG1heFNwZWVkID0gTWF0aC5t
YXgobWF4U3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVNwZWVkSW5L
Qih0b3RhbFNpemUsIHN0YXJ0VGltZUluTXMpKTsKKyAgICB9CisgICAgcXVldWVMb2coZm9ybWF0
UmVzdWx0SW5LaUIoc2l6ZSwgbWF4U3BlZWQsIFBSSU5UX1NJWkUpKTsKKworICAgIHNpemUgKj0g
bXVsdGlwbGllcnNbbXVsdGlwbGllckluZGV4XTsKKyAgICBtdWx0aXBsaWVySW5kZXggPSAobXVs
dGlwbGllckluZGV4ICsgMSkgJSBtdWx0aXBsaWVycy5sZW5ndGg7CisgIH0KK30KKworZnVuY3Rp
b24gcnVuQmVuY2htYXJrcygpIHsKKyAgcXVldWVMb2coJ01lc3NhZ2Ugc2l6ZSBpbiBLaUIsIFNw
ZWVkIGluIGtCL3MnKTsKKworICBxdWV1ZUxvZygnV3JpdGUgYmVuY2htYXJrJyk7CisgIHJ1bkJl
bmNobWFyaygKKyAgICAgIHdyaXRlQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9M
RCwgTUlOX1RPVEFMLCBNVUxUSVBMSUVSUywgMCk7CisgIHF1ZXVlTG9nKCdGaW5pc2hlZCcpOwor
CisgIHF1ZXVlTG9nKCdSZWFkIGJlbmNobWFyaycpOworICBydW5CZW5jaG1hcmsoCisgICAgICBy
ZWFkQmVuY2htYXJrLCBTVEFSVF9TSVpFLCBTVE9QX1RIUkVTSE9MRCwgTUlOX1RPVEFMLCBNVUxU
SVBMSUVSUywgMCk7CisgIGFkZFRvTG9nKCdGaW5pc2hlZCcpOworfQorCitmdW5jdGlvbiBpbml0
KCkgeworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisKKyAgcXVl
dWVMb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisKKyAgYWRk
VG9Mb2coJ1N0YXJ0ZWQuLi4nKTsKKworICBzZXRUaW1lb3V0KHJ1bkJlbmNobWFya3MsIDApOwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzx0ZXh0YXJl
YQorICAgIGlkPSJsb2ciIHJvd3M9IjUwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5Pjwv
dGV4dGFyZWE+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2hf
d3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJkZjUwZTc3ZGIyNzZjY2ExZGU0NzIwNTlhMDc0MDcxYjgxYTkz
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNoX3dz
aC5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkEgc2ltcGxlIGxvYWQg
dGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KKworQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBh
IG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCit0aGlz
IGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNv
Y2tldCBtZXNzYWdlcworY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMu
IDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAordmFsdWUuIDxjb3VudD4gbXVzdCBiZSBh
biBpbnRlZ2VyIHZhbHVlLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVf
aW1wb3J0CitpbXBvcnQgdGltZQorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3
YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgIHBhcnRz
ID0gbGluZS5zcGxpdCgnICcpCisgICAgaWYgbGVuKHBhcnRzKSAhPSAzOgorICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdCYWQgcGFyYW1ldGVyIGZvcm1hdCcpCisgICAgd2FpdCA9IGZsb2F0KHBh
cnRzWzBdKQorICAgIGNvdW50ID0gaW50KHBhcnRzWzFdKQorICAgIG1lc3NhZ2UgPSBwYXJ0c1sy
XQorICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKKyAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHRpbWUuc2xlZXAod2FpdCkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVu
Y2htYXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxZTVjOTdiM2E3MWJjZjllYmRlN2M0ZmNhZjE1Mzc1Mzg5YjFjNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5odG1sCkBA
IC0wLDAgKzEsMTc1IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgor
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0Eg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgYmVuY2htYXJrPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGFk
ZHJlc3NCb3ggPSBudWxsOworCitmdW5jdGlvbiBnZXRDb25maWcoKSB7CisgIHJldHVybiB7Cisg
ICAgcHJlZml4VXJsOiBhZGRyZXNzQm94LnZhbHVlLAorICAgIHByaW50U2l6ZTogZ2V0Qm9vbEZy
b21DaGVja0JveCgncHJpbnRzaXplJyksCisgICAgbnVtU29ja2V0czogZ2V0SW50RnJvbUlucHV0
KCdudW1zb2NrZXRzJyksCisgICAgLy8gSW5pdGlhbCBzaXplIG9mIG1lc3NhZ2VzLgorICAgIG51
bUl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtaXRlcmF0aW9ucycpLAorICAgIG51bVdh
cm1VcEl0ZXJhdGlvbnM6IGdldEludEZyb21JbnB1dCgnbnVtd2FybXVwaXRlcmF0aW9ucycpLAor
ICAgIHN0YXJ0U2l6ZTogZ2V0SW50RnJvbUlucHV0KCdzdGFydHNpemUnKSwKKyAgICAvLyBTdG9w
cyBiZW5jaG1hcmsgd2hlbiB0aGUgc2l6ZSBvZiBtZXNzYWdlIGV4Y2VlZHMgdGhpcyB0aHJlc2hv
bGQuCisgICAgc3RvcFRocmVzaG9sZDogZ2V0SW50RnJvbUlucHV0KCdzdG9wdGhyZXNob2xkJyks
CisgICAgLy8gSWYgdGhlIHNpemUgb2YgZWFjaCBtZXNzYWdlIGlzIHNtYWxsLCBzZW5kL3JlY2Vp
dmUgbXVsdGlwbGUgbWVzc2FnZXMKKyAgICAvLyB1bnRpbCB0aGUgc3VtIG9mIHNpemVzIHJlYWNo
ZXMgdGhpcyB0aHJlc2hvbGQuCisgICAgbWluVG90YWw6IGdldEludEZyb21JbnB1dCgnbWludG90
YWwnKSwKKyAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGll
cnMnKSwKKyAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyks
CisgICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogYWRkVG9TdW1tYXJ5
LAorICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAorICAgIG5vdGlmeUFib3J0OiBub3Rp
ZnlBYm9ydAorICB9OworfQorCitmdW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7CisgIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ3NlbmRCZW5jaG1hcmsnKTsKK30KKworZnVuY3Rpb24gb25SZWNlaXZl
QmVuY2htYXJrKCkgeworICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7CisgIGRvQWN0aW9uKGNv
bmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdyZWNlaXZlQmVuY2htYXJrJyk7
Cit9CisKK2Z1bmN0aW9uIG9uQmF0Y2hCZW5jaG1hcmsoKSB7CisgIHZhciBjb25maWcgPSBnZXRD
b25maWcoKTsKKyAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXIn
KSwgJ2JhdGNoQmVuY2htYXJrJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3RvcCgpIHsKKyAgdmFyIGNv
bmZpZyA9IGdldENvbmZpZygpOworICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tC
b3goJ3dvcmtlcicpLCAnc3RvcCcpOworfQorCitmdW5jdGlvbiBpbml0KCkgeworICBhZGRyZXNz
Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgbG9nQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCisgIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOworCisgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRp
b24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZh
dWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtf
aGVscGVyJzsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVmYXVsdEFkZHJlc3M7CisKKyAgYWRk
VG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7CisgIGFkZFRv
U3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKKworICBp
ZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7CisgICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBp
cyBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBpbml0V29ya2VyKCcnKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorCis8ZGl2IGlkPSJiZW5jaG1hcmtf
ZGl2Ij4KKyAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgor
ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2ht
YXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0i
b25SZWNlaXZlQmVuY2htYXJrKCkiPgorICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0
Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+CisKKyAgPGJyLz4KKworICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9InBy
aW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+CisgIDxpbnB1
dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+CisgIDxsYWJlbCBmb3I9
InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KKyAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0id29ya2VyIj4KKyAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJl
bD4KKworICA8YnIvPgorCisgIFBhcmFtZXRlcnM6CisKKyAgPGJyLz4KKworICA8dGFibGU+Cisg
ICAgPHRyPgorICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KKyAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwvdHI+CisgICAg
PHRyPgorICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KKyAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgorICAgIDwv
dHI+CisgICAgPHRyPgorICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+CisgICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgorICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8
L2Rpdj4KKworPGRpdiBpZD0ibG9nX2RpdiI+CisgIDx0ZXh0YXJlYQorICAgICAgaWQ9ImxvZyIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKzwvZGl2
PgorPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgorICBTdW1tYXJ5CisgIDx0ZXh0YXJlYQorICAgICAg
aWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4
dGFyZWE+Cis8L2Rpdj4KKworTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWluYXRlZC4K
KworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9iZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFyay5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzAxNDcyYTRmYWFjNDQ2YjFjOGJkMjQ1NmYyNzFlOTM0ZGI1NzFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKQEAg
LTAsMCArMSwyMzggQEAKKy8vIENvcHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCitpZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7CisgIC8v
IFJ1bm5pbmcgb24gYSB3b3JrZXIKKyAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dv
cmtlci5qcycpOworfQorCisvLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KK3ZhciBi
ZW5jaG1hcmsgPSB7c3RhcnRUaW1lSW5NczogMH07CisKK3ZhciBzb2NrZXRzID0gW107Cit2YXIg
bnVtRXN0YWJsaXNoZWRTb2NrZXRzID0gMDsKKwordmFyIHRpbWVySUQgPSBudWxsOworCitmdW5j
dGlvbiBkZXN0cm95U29ja2V0KHNvY2tldCkgeworICBzb2NrZXQub25vcGVuID0gbnVsbDsKKyAg
c29ja2V0Lm9ubWVzc2FnZSA9IG51bGw7CisgIHNvY2tldC5vbmVycm9yID0gbnVsbDsKKyAgc29j
a2V0Lm9uY2xvc2UgPSBudWxsOworICBzb2NrZXQuY2xvc2UoKTsKK30KKworZnVuY3Rpb24gZGVz
dHJveUFsbFNvY2tldHMoKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7
ICsraSkgeworICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7CisgIH0KKyAgc29ja2V0cyA9
IFtdOworfQorCitmdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2Fy
bVVwKSB7CisgIHRpbWVySUQgPSBudWxsOworCisgIHZhciB0b3RhbFNpemUgPSAwOworICB2YXIg
dG90YWxSZXBsaWVkID0gMDsKKworICB2YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgaWYgKCF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBldmVudC5kYXRh
LCBzaXplKSkgeworICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKKyAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRvdGFsUmVwbGllZCArPSBz
aXplOworCisgICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgeworICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJlbmNo
bWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCisgICAgICAgIGlzV2FybVVwKTsKKworICAg
IHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2Nr
ZXRzLmxlbmd0aDsgKytpKSB7CisgICAgdmFyIHNvY2tldCA9IHNvY2tldHNbaV07CisgICAgc29j
a2V0Lm9ubWVzc2FnZSA9IG9uTWVzc2FnZUhhbmRsZXI7CisgIH0KKworICB2YXIgZGF0YUFycmF5
ID0gW107CisKKyAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgeworICAgIHZh
ciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7CisKKyAgICBmaWxsQXJyYXlCdWZmZXIo
YnVmZmVyLCAweDYxKTsKKworICAgIGRhdGFBcnJheS5wdXNoKGJ1ZmZlcik7CisgICAgdG90YWxT
aXplICs9IHNpemU7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHRvdGFsU2l6ZSA9IDA7CisKKyAgdmFyIHNvY2tldEluZGV4ID0gMDsKKyAg
dmFyIGRhdGFJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBjb25maWcubWluVG90YWwp
IHsKKyAgICB2YXIgY29tbWFuZCA9IFsnc2VuZCddOworICAgIGNvbW1hbmQucHVzaChjb25maWcu
dmVyaWZ5RGF0YSA/ICcxJyA6ICcwJyk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChj
b21tYW5kLmpvaW4oJyAnKSk7CisgICAgc29ja2V0c1tzb2NrZXRJbmRleF0uc2VuZChkYXRhQXJy
YXlbZGF0YUluZGV4XSk7CisgICAgc29ja2V0SW5kZXggPSAoc29ja2V0SW5kZXggKyAxKSAlIHNv
Y2tldHMubGVuZ3RoOworCisgICAgdG90YWxTaXplICs9IHNpemU7CisgICAgKytkYXRhSW5kZXg7
CisgIH0KK30KKworZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBp
c1dhcm1VcCkgeworICB0aW1lcklEID0gbnVsbDsKKworICB2YXIgdG90YWxTaXplID0gMDsKKyAg
dmFyIHRvdGFsUmVwbGllZCA9IDA7CisKKyAgdmFyIG9uTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBieXRlc1JlY2VpdmVkID0gZXZlbnQuZGF0YS5ieXRlTGVuZ3Ro
OworICAgIGlmIChieXRlc1JlY2VpdmVkICE9IHNpemUpIHsKKyAgICAgIGNvbmZpZy5hZGRUb0xv
ZygnRXhwZWN0ZWQgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgJyArCisgICAgICAgICAgYnl0
ZXNSZWNlaXZlZCArICdCJyk7CisgICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29u
ZmlnLm5vdGlmeUFib3J0KCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbmZp
Zy52ZXJpZnlEYXRhICYmICF2ZXJpZnlBcnJheUJ1ZmZlcihldmVudC5kYXRhLCAweDYxKSkgewor
ICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2ZXJpZmljYXRpb24gZmFpbGVkJyk7Cisg
ICAgICBkZXN0cm95QWxsU29ja2V0cygpOworICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Cisg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7
CisKKyAgICBpZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJr
LnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKKyAgICAgICAgaXNXYXJtVXApOworCisgICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKKyAgfTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMu
bGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKKyAgICBzb2NrZXQu
YmluYXJ5VHlwZSA9ICdhcnJheWJ1ZmZlcic7CisgICAgc29ja2V0Lm9ubWVzc2FnZSA9IG9uTWVz
c2FnZUhhbmRsZXI7CisgIH0KKworICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVT
dGFtcCgpOworCisgIHZhciBzb2NrZXRJbmRleCA9IDA7CisgIHdoaWxlICh0b3RhbFNpemUgPCBj
b25maWcubWluVG90YWwpIHsKKyAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKCdyZWNlaXZl
ICcgKyBzaXplKTsKKyAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0
cy5sZW5ndGg7CisKKyAgICB0b3RhbFNpemUgKz0gc2l6ZTsKKyAgfQorfQorCitmdW5jdGlvbiBj
cmVhdGVTb2NrZXQoY29uZmlnKSB7CisgIC8vIFRPRE8odHlvc2hpbm8pOiBBZGQgVENQIHdhcm0g
dXAuCisgIHZhciB1cmwgPSBjb25maWcucHJlZml4VXJsOworCisgIGNvbmZpZy5hZGRUb0xvZygn
Q29ubmVjdCAnICsgdXJsKTsKKworICB2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwor
ICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBjb25maWcuYWRkVG9M
b2coJ1VuZXhwZWN0ZWQgbWVzc2FnZSByZWNlaXZlZC4gQWJvcnRpbmcuJyk7CisgIH07CisgIHNv
Y2tldC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKCdFcnJvcicp
OworICB9OworICBzb2NrZXQub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgY29uZmln
LmFkZFRvTG9nKCdDbG9zZWQnKTsKKyAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgfTsKKyAg
cmV0dXJuIHNvY2tldDsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7Cisg
IGNsZWFyVGltZW91dCh0aW1lcklEKTsKKyAgZGVzdHJveUFsbFNvY2tldHMoKTsKKworICBudW1F
c3RhYmxpc2hlZFNvY2tldHMgPSAwOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLm51
bVNvY2tldHM7ICsraSkgeworICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQoY29uZmlnKTsK
KyAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICBjb25maWcuYWRkVG9Mb2co
J09wZW5lZCcpOworCisgICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKKworICAgICAgaWYg
KG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgeworICAgICAgICBydW5O
ZXh0VGFzayhjb25maWcpOworICAgICAgfQorICAgIH07CisgICAgc29ja2V0cy5wdXNoKHNvY2tl
dCk7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgeworICByZXR1
cm4gJyhXZWJTb2NrZXQnICsKKyAgICAnLCAnICsgKHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAi
dW5kZWZpbmVkIiA/ICdXb3JrZXInIDogJ01haW4nKSArCisgICAgJywgbnVtU29ja2V0cz0nICsg
Y29uZmlnLm51bVNvY2tldHMgKworICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1J
dGVyYXRpb25zICsKKyAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCisg
ICAgJywgbWluVG90YWw9JyArIGNvbmZpZy5taW5Ub3RhbCArCisgICAgJywgbnVtV2FybVVwSXRl
cmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKworICAgICcpJzsKK30KKwor
ZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnQmF0
Y2ggYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIGFk
ZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRp
bmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcgKworICAgICAgZ2V0Q29uZmlnU3Ry
aW5nKGNvbmZpZykpOworICBzdGFydEJlbmNobWFyayhjb25maWcpOworfQorCitmdW5jdGlvbiBj
bGVhbnVwKCkgeworICBkZXN0cm95QWxsU29ja2V0cygpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxNzUz
MzMzNTRjYzljODg1NjJjZjZmYzgxZWYzMjYwOTM3Mjk4NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKQEAgLTAsMCAr
MSw4NCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJIYW5kbGVyIGZvciBiZW5jaG1hcmsuaHRtbC4i
IiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4CisK
KworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgICMgVHVy
biBvZmYgY29tcHJlc3Npb24uCisgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9
IFtdCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBkYXRh
ID0gYicnCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjb21tYW5kID0gcmVxdWVzdC53c19z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgY29tbWFuZCBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWFuZCwgc2l4
LnRleHRfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1h
bmQgZGF0YTonICsgY29tbWFuZCkKKyAgICAgICAgY29tbWFuZHMgPSBjb21tYW5kLnNwbGl0KCcg
JykKKyAgICAgICAgaWYgbGVuKGNvbW1hbmRzKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBjb21tYW5kIGRhdGE6ICcgKyBjb21tYW5kKQorCisgICAgICAgIGlm
IGNvbW1hbmRzWzBdID09ICdyZWNlaXZlJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5kIGNvbW1hbmQnICsgY29t
bWFuZCkKKyAgICAgICAgICAgIHNpemUgPSBpbnQoY29tbWFuZHNbMV0pCisKKyAgICAgICAgICAg
ICMgUmV1c2UgZGF0YSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSBz
aXplOgorICAgICAgICAgICAgICAgIGRhdGEgPSBiJ2EnICogc2l6ZQorICAgICAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQorICAgICAgICBl
bGlmIGNvbW1hbmRzWzBdID09ICdzZW5kJzoKKyAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykg
IT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWNlaXZlIGNvbW1hbmQnICsK
KyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCkKKyAgICAgICAgICAgIHZlcmlmeV9kYXRhID0g
Y29tbWFuZHNbMV0gPT0gJzEnCisKKyAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LndzX3N0cmVh
bS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgbm90IHJlY2VpdmVkJykKKyAgICAg
ICAgICAgIHNpemUgPSBsZW4oZGF0YSkKKworICAgICAgICAgICAgaWYgdmVyaWZ5X2RhdGE6Cisg
ICAgICAgICAgICAgICAgaWYgZGF0YSAhPSBiJ2EnICogc2l6ZToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCB2ZXJpZmljYXRpb24gZmFpbGVkJykKKworICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKHN0cihzaXplKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY29tbWFuZDog
JyArIGNvbW1hbmRzWzBdKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9l
eGFtcGxlL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjAwMDVmZmVhOTkwNWQ2YzE5N2MwZjRk
ZDU5M2MwNmZmNDM3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw3MCBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc3RydWN0CisKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBzdHJlYW0KKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBjb2RlLCByZWFzb24gPSBsaW5lLnNwbGl0KCcgJywgMSkKKyAgICAgICAgaWYg
Y29kZSBpcyBOb25lIG9yIHJlYXNvbiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oaW50KGNvZGUpLCByZWFzb24p
CisgICAgICAgICMgY2xvc2VfY29ubmVjdGlvbigpIGluaXRpYXRlcyBjbG9zaW5nIGhhbmRzaGFr
ZS4gSXQgdmFsaWRhdGVzIGNvZGUKKyAgICAgICAgIyBhbmQgcmVhc29uLiBJZiB5b3Ugd2FudCB0
byBzZW5kIGEgYnJva2VuIGNsb3NlIGZyYW1lIGZvciBhIHRlc3QsCisgICAgICAgICMgZm9sbG93
aW5nIGNvZGUgd2lsbCBiZSB1c2VmdWwuCisgICAgICAgICMgPiBkYXRhID0gc3RydWN0LnBhY2so
JyFIJywgaW50KGNvZGUpKSArIHJlYXNvbi5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgIyA+IHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZShzdHJlYW0uY3JlYXRlX2Nsb3NlX2ZyYW1lKGRhdGEpKQor
ICAgICAgICAjID4gIyBTdXBwcmVzcyB0byByZS1yZXNwb25kIGNsaWVudCByZXNwb25kaW5nIGNs
b3NlIGZyYW1lLgorICAgICAgICAjID4gcmFpc2UgRXhjZXB0aW9uKCJjdXN0b21pemVkIHNlcnZl
ciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UiKQorCisKK2RlZiB3ZWJfc29ja2V0X3Bhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBTaW1wbHkgZWNobyBhIGNsb3Nl
IHN0YXR1cyBjb2RlCisgICAgY29kZSwgcmVhc29uID0gcmVxdWVzdC53c19jbG9zZV9jb2RlLCBy
ZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisgICAgIyBweXdlYnNvY2tldCBzZXRzIHBzZXVkbyBj
b2RlIGZvciByZWNlaXZpbmcgYW4gZW1wdHkgYm9keSBjbG9zZSBmcmFtZS4KKyAgICBpZiBjb2Rl
ID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEOgorICAgICAgICBjb2RlID0gTm9u
ZQorICAgICAgICByZWFzb24gPSAnJworICAgIHJldHVybiBjb2RlLCByZWFzb24KKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29u
c29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb25zb2xlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4MzQxMWRkZDBiMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29uc29sZS5odG1sCkBAIC0wLDAg
KzEsMzE3IEBACis8IS0tCitDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMg
cmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCitPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCEtLQorQSBzaW1w
bGUgY29uc29sZSBmb3IgdGVzdGluZyBXZWJTb2NrZXQgc2VydmVyLgorCitUeXBlIGFuIGFkZHJl
c3MgaW50byB0aGUgdG9wIHRleHQgaW5wdXQgYW5kIGNsaWNrIGNvbm5lY3QgdG8gZXN0YWJsaXNo
CitXZWJTb2NrZXQuIFRoZW4sIHR5cGUgc29tZSBtZXNzYWdlIGludG8gdGhlIGJvdHRvbSB0ZXh0
IGlucHV0IGFuZCBjbGljayBzZW5kCit0byBzZW5kIHRoZSBtZXNzYWdlLiBSZWNlaXZlZC9zZW50
IG1lc3NhZ2VzIGFuZCBjb25uZWN0aW9uIHN0YXRlIHdpbGwgYmUgc2hvd24KK29uIHRoZSBtaWRk
bGUgdGV4dGFyZWEuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJTb2NrZXQgY29u
c29sZTwvdGl0bGU+Cis8c2NyaXB0PgordmFyIHNvY2tldCA9IG51bGw7CisKK3ZhciBzaG93VGlt
ZVN0YW1wID0gZmFsc2U7CisKK3ZhciBhZGRyZXNzQm94ID0gbnVsbDsKK3ZhciBwcm90b2NvbHNC
b3ggPSBudWxsOwordmFyIGxvZ0JveCA9IG51bGw7Cit2YXIgbWVzc2FnZUJveCA9IG51bGw7Cit2
YXIgZmlsZUJveCA9IG51bGw7Cit2YXIgY29kZUJveCA9IG51bGw7Cit2YXIgcmVhc29uQm94ID0g
bnVsbDsKKworZnVuY3Rpb24gZ2V0VGltZVN0YW1wKCkgeworICByZXR1cm4gbmV3IERhdGUoKS5n
ZXRUaW1lKCk7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBpZiAoc2hvd1RpbWVT
dGFtcCkgeworICAgIGxvZ0JveC52YWx1ZSArPSAnWycgKyBnZXRUaW1lU3RhbXAoKSArICddICc7
CisgIH0KKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdcbicKKyAgLy8gTGFyZ2UgZW5vdWdoIHRv
IGtlZXAgc2hvd2luZyB0aGUgbGF0ZXN0IG1lc3NhZ2UuCisgIGxvZ0JveC5zY3JvbGxUb3AgPSAx
MDAwMDAwOworfQorCitmdW5jdGlvbiBzZXRiaW5hcnl0eXBlKGJpbmFyeVR5cGUpIHsKKyAgaWYg
KCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsK
KyAgfQorCisgIHNvY2tldC5iaW5hcnlUeXBlID0gYmluYXJ5VHlwZTsKKyAgYWRkVG9Mb2coJ1Nl
dCBiaW5hcnlUeXBlIHRvICcgKyBiaW5hcnlUeXBlKTsKK30KKworZnVuY3Rpb24gc2VuZCgpIHsK
KyAgaWYgKCFzb2NrZXQpIHsKKyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJl
dHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKG1lc3NhZ2VCb3gudmFsdWUpOworICBhZGRUb0xv
ZygnPiAnICsgbWVzc2FnZUJveC52YWx1ZSk7CisgIG1lc3NhZ2VCb3gudmFsdWUgPSAnJzsKK30K
KworZnVuY3Rpb24gc2VuZGZpbGUoKSB7CisgIGlmICghc29ja2V0KSB7CisgICAgYWRkVG9Mb2co
J05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKworICB2YXIgZmlsZXMgPSBmaWxl
Qm94LmZpbGVzOworCisgIGlmIChmaWxlcy5sZW5ndGggPT0gMCkgeworICAgIGFkZFRvTG9nKCdG
aWxlIG5vdCBzZWxlY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIHNvY2tldC5zZW5kKGZp
bGVzWzBdKTsKKyAgYWRkVG9Mb2coJz4gU2VuZCAnICsgZmlsZXNbMF0ubmFtZSk7Cit9CisKK2Z1
bmN0aW9uIHBhcnNlUHJvdG9jb2xzKHByb3RvY29sc1RleHQpIHsKKyAgdmFyIHByb3RvY29scyA9
IHByb3RvY29sc1RleHQuc3BsaXQoJywnKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b2Nv
bHMubGVuZ3RoOyArK2kpIHsKKyAgICBwcm90b2NvbHNbaV0gPSBwcm90b2NvbHNbaV0udHJpbSgp
OworICB9CisKKyAgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMCkgeworICAgIC8vIERvbid0IHBh
c3MuCisgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgfSBlbHNlIGlmIChwcm90b2NvbHMubGVuZ3Ro
ID09IDEpIHsKKyAgICBpZiAocHJvdG9jb2xzWzBdLmxlbmd0aCA9PSAwKSB7CisgICAgICAvLyBE
b24ndCBwYXNzLgorICAgICAgcHJvdG9jb2xzID0gbnVsbDsKKyAgICB9IGVsc2UgeworICAgICAg
Ly8gUGFzcyBhcyBhIHN0cmluZy4KKyAgICAgIHByb3RvY29scyA9IHByb3RvY29sc1swXTsKKyAg
ICB9CisgIH0KKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitmdW5jdGlvbiBjb25uZWN0KCkg
eworICB2YXIgdXJsID0gYWRkcmVzc0JveC52YWx1ZTsKKyAgdmFyIHByb3RvY29scyA9IHBhcnNl
UHJvdG9jb2xzKHByb3RvY29sc0JveC52YWx1ZSk7CisKKyAgaWYgKCdXZWJTb2NrZXQnIGluIHdp
bmRvdykgeworICAgIGlmIChwcm90b2NvbHMpIHsKKyAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2Nr
ZXQodXJsLCBwcm90b2NvbHMpOworICAgIH0gZWxzZSB7CisgICAgICBzb2NrZXQgPSBuZXcgV2Vi
U29ja2V0KHVybCk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldHVybjsKKyAgfQorCisgIHNv
Y2tldC5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIGV4dHJhSW5mbyA9IFtdOworICAg
IGlmICgoJ3Byb3RvY29sJyBpbiBzb2NrZXQpICYmIHNvY2tldC5wcm90b2NvbCkgeworICAgICAg
ZXh0cmFJbmZvLnB1c2goJ3Byb3RvY29sID0gJyArIHNvY2tldC5wcm90b2NvbCk7CisgICAgfQor
ICAgIGlmICgoJ2V4dGVuc2lvbnMnIGluIHNvY2tldCkgJiYgc29ja2V0LmV4dGVuc2lvbnMpIHsK
KyAgICAgIGV4dHJhSW5mby5wdXNoKCdleHRlbnNpb25zID0gJyArIHNvY2tldC5leHRlbnNpb25z
KTsKKyAgICB9CisKKyAgICB2YXIgbG9nTWVzc2FnZSA9ICdPcGVuZWQnOworICAgIGlmIChleHRy
YUluZm8ubGVuZ3RoID4gMCkgeworICAgICAgbG9nTWVzc2FnZSArPSAnICgnICsgZXh0cmFJbmZv
LmpvaW4oJywgJykgKyAnKSc7CisgICAgfQorICAgIGFkZFRvTG9nKGxvZ01lc3NhZ2UpOworICB9
OworICBzb2NrZXQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgaWYgKCgnQXJy
YXlCdWZmZXInIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl
cikpIHsKKyAgICAgIGFkZFRvTG9nKCc8IFJlY2VpdmVkIGFuIEFycmF5QnVmZmVyIG9mICcgKyBl
dmVudC5kYXRhLmJ5dGVMZW5ndGggKworICAgICAgICAgICAgICAgJyBieXRlcycpCisgICAgfSBl
bHNlIGlmICgoJ0Jsb2InIGluIHdpbmRvdykgJiYgKGV2ZW50LmRhdGEgaW5zdGFuY2VvZiBCbG9i
KSkgeworICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYSBCbG9iIG9mICcgKyBldmVudC5kYXRh
LnNpemUgKyAnIGJ5dGVzJykKKyAgICB9IGVsc2UgeworICAgICAgYWRkVG9Mb2coJzwgJyArIGV2
ZW50LmRhdGEpOworICAgIH0KKyAgfTsKKyAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
CisgICAgYWRkVG9Mb2coJ0Vycm9yJyk7CisgIH07CisgIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgdmFyIGxvZ01lc3NhZ2UgPSAnQ2xvc2VkICgnOworICAgIGlmICgo
YXJndW1lbnRzLmxlbmd0aCA9PSAxKSAmJiAoJ0Nsb3NlRXZlbnQnIGluIHdpbmRvdykgJiYKKyAg
ICAgICAgKGV2ZW50IGluc3RhbmNlb2YgQ2xvc2VFdmVudCkpIHsKKyAgICAgIGxvZ01lc3NhZ2Ug
Kz0gJ3dhc0NsZWFuID0gJyArIGV2ZW50Lndhc0NsZWFuOworICAgICAgLy8gY29kZSBhbmQgcmVh
c29uIGFyZSBwcmVzZW50IG9ubHkgZm9yCisgICAgICAvLyBkcmFmdC1pZXRmLWh5YmktdGhld2Vi
c29ja2V0cHJvdG9jb2wtMDYgYW5kIGxhdGVyCisgICAgICBpZiAoJ2NvZGUnIGluIGV2ZW50KSB7
CisgICAgICAgIGxvZ01lc3NhZ2UgKz0gJywgY29kZSA9ICcgKyBldmVudC5jb2RlOworICAgICAg
fQorICAgICAgaWYgKCdyZWFzb24nIGluIGV2ZW50KSB7CisgICAgICAgIGxvZ01lc3NhZ2UgKz0g
JywgcmVhc29uID0gJyArIGV2ZW50LnJlYXNvbjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgbG9nTWVzc2FnZSArPSAnQ2xvc2VFdmVudCBpcyBub3QgYXZhaWxhYmxlJzsKKyAgICB9Cisg
ICAgYWRkVG9Mb2cobG9nTWVzc2FnZSArICcpJyk7CisgIH07CisKKyAgaWYgKHByb3RvY29scykg
eworICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwgKyAnIChwcm90b2NvbHMgPSAnICsgcHJv
dG9jb2xzICsgJyknKTsKKyAgfSBlbHNlIHsKKyAgICBhZGRUb0xvZygnQ29ubmVjdCAnICsgdXJs
KTsKKyAgfQorfQorCitmdW5jdGlvbiBjbG9zZVNvY2tldCgpIHsKKyAgaWYgKCFzb2NrZXQpIHsK
KyAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOworICAgIHJldHVybjsKKyAgfQorCisgIGlm
IChjb2RlQm94LnZhbHVlIHx8IHJlYXNvbkJveC52YWx1ZSkgeworICAgIHNvY2tldC5jbG9zZShj
b2RlQm94LnZhbHVlLCByZWFzb25Cb3gudmFsdWUpOworICB9IGVsc2UgeworICAgIHNvY2tldC5j
bG9zZSgpOworICB9Cit9CisKK2Z1bmN0aW9uIHByaW50U3RhdGUoKSB7CisgIGlmICghc29ja2V0
KSB7CisgICAgYWRkVG9Mb2coJ05vdCBjb25uZWN0ZWQnKTsKKyAgICByZXR1cm47CisgIH0KKwor
ICBhZGRUb0xvZygKKyAgICAgICd1cmwgPSAnICsgc29ja2V0LnVybCArCisgICAgICAnLCByZWFk
eVN0YXRlID0gJyArIHNvY2tldC5yZWFkeVN0YXRlICsKKyAgICAgICcsIGJ1ZmZlcmVkQW1vdW50
ID0gJyArIHNvY2tldC5idWZmZXJlZEFtb3VudCk7Cit9CisKK2Z1bmN0aW9uIGluaXQoKSB7Cisg
IHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3Nz
Oi8vJyA6ICd3czovLyc7CisgIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5s
b2NhdGlvbi5ob3N0ICsgJy9lY2hvJzsKKworICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FkZHJlc3MnKTsKKyAgcHJvdG9jb2xzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Byb3RvY29scycpOworICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bG9nJyk7CisgIG1lc3NhZ2VCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScp
OworICBmaWxlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUnKTsKKyAgY29kZUJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJyk7CisgIHJlYXNvbkJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZWFzb24nKTsKKworICBhZGRyZXNzQm94LnZhbHVlID0gZGVm
YXVsdEFkZHJlc3M7CisKKyAgaWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgeworICAgIGFk
ZFRvTG9nKCdXZWJTb2NrZXQgaXMgbm90IGF2YWlsYWJsZScpOworICB9Cit9Cis8L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Citmb3JtIHsKKyAgbWFyZ2luOiAwcHg7Cit9CisKKyNj
b25uZWN0X2RpdiwgI2xvZ19kaXYsICNzZW5kX2RpdiwgI3NlbmRmaWxlX2RpdiwgI2Nsb3NlX2Rp
diwgI3ByaW50c3RhdGVfZGl2IHsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDVweDsKKyAg
Ym9yZGVyLXdpZHRoOiAwcHggMHB4IDBweCAxMHB4OworICBib3JkZXItc3R5bGU6IHNvbGlkOwor
ICBib3JkZXItY29sb3I6IHNpbHZlcjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImluaXQoKSI+CisKKzxkaXY+CisKKzxkaXYgaWQ9ImNvbm5lY3RfZGl2Ij4KKyAgPGZvcm0g
YWN0aW9uPSIjIiBvbnN1Ym1pdD0iY29ubmVjdCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICB1cmwg
PGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNzIiBzaXplPSI0MCI+CisgICAgPGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9ImNvbm5lY3QiPgorICAgIDxici8+CisgICAgcHJvdG9jb2xzIDxp
bnB1dCB0eXBlPSJ0ZXh0IiBpZD0icHJvdG9jb2xzIiBzaXplPSIyMCI+CisgIDwvZm9ybT4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJsb2dfZGl2Ij4KKyAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEw
IiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAgPGJyLz4KKyAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IgorICAgICAgICAgbmFtZT0ic2hvd3RpbWVzdGFtcCIKKyAgICAgICAgIHZhbHVl
PSJzaG93dGltZXN0YW1wIgorICAgICAgICAgb25jbGljaz0ic2hvd1RpbWVTdGFtcCA9IHRoaXMu
Y2hlY2tlZCI+U2hvdyB0aW1lIHN0YW1wCis8L2Rpdj4KKworPGRpdiBpZD0ic2VuZF9kaXYiPgor
ICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kKCk7IHJldHVybiBmYWxzZTsiPgorICAg
IGRhdGEgPGlucHV0IHR5cGU9InRleHQiIGlkPSJtZXNzYWdlIiBzaXplPSI0MCI+CisgICAgPGlu
cHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQiPgorICA8L2Zvcm0+Cis8L2Rpdj4KKworPGRp
diBpZD0ic2VuZGZpbGVfZGl2Ij4KKyAgPGZvcm0gYWN0aW9uPSIjIiBvbnN1Ym1pdD0ic2VuZGZp
bGUoKTsgcmV0dXJuIGZhbHNlOyI+CisgICAgPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBz
aXplPSI0MCI+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InNlbmQgZmlsZSI+Cisg
IDwvZm9ybT4KKworICBTZXQgYmluYXJ5VHlwZQorICA8aW5wdXQgdHlwZT0icmFkaW8iCisgICAg
ICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImJsb2IiCisgICAgICAgICBv
bmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdibG9iJykiIGNoZWNrZWQ+YmxvYgorICA8aW5wdXQgdHlw
ZT0icmFkaW8iCisgICAgICAgICBuYW1lPSJiaW5hcnl0eXBlIgorICAgICAgICAgdmFsdWU9ImFy
cmF5YnVmZmVyIgorICAgICAgICAgb25jbGljaz0ic2V0YmluYXJ5dHlwZSgnYXJyYXlidWZmZXIn
KSI+YXJyYXlidWZmZXIKKzwvZGl2PgorCis8ZGl2IGlkPSJjbG9zZV9kaXYiPgorICA8Zm9ybSBh
Y3Rpb249IiMiIG9uc3VibWl0PSJjbG9zZVNvY2tldCgpOyByZXR1cm4gZmFsc2U7Ij4KKyAgICBj
b2RlIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29kZSIgc2l6ZT0iMTAiPgorICAgIHJlYXNvbiA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlYXNvbiIgc2l6ZT0iMjAiPgorICAgIDxpbnB1dCB0eXBl
PSJzdWJtaXQiIHZhbHVlPSJjbG9zZSI+CisgIDwvZm9ybT4KKzwvZGl2PgorCis8ZGl2IGlkPSJw
cmludHN0YXRlX2RpdiI+CisgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJwcmludCBzdGF0
ZSIgb25jbGljaz0icHJpbnRTdGF0ZSgpOyI+Cis8L2Rpdj4KKworPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTUyMDk2OTRlM2ZmMjMyMGY1NjgzZWUwNTk2YWUzNDQyOGIxNWViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9jb29raWVfd3NoLnB5CkBAIC0wLDAgKzEs
NTQgQEAKKyMgQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1w
b3J0Citmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCisKKworZGVmIF9hZGRfc2V0X2Nvb2tp
ZShyZXF1ZXN0LCB2YWx1ZSk6CisgICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgoJ1Nl
dC1Db29raWUnLCB2YWx1ZSkpCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIGNvbXBvbmVudHMgPSB1cmxsaWIucGFyc2UudXJscGFyc2UocmVxdWVz
dC51cmkpCisgICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KKworICAgIE9ORV9EQVlfTElGRSA9
ICdNYXgtQWdlPTg2NDAwJworCisgICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKKyAgICAgICAgX2Fk
ZF9zZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVd
KSkKKyAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6CisgICAgICAgIF9hZGRfc2V0
X2Nvb2tpZSgKKyAgICAgICAgICAgIHJlcXVlc3QsICc7ICcuam9pbihbJ2h0dHBPbmx5Rm9vPWJh
cicsIE9ORV9EQVlfTElGRSwgJ2h0dHBPbmx5J10pKQorICAgIGVsaWYgY29tbWFuZCA9PSAnY2xl
YXInOgorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2Zvbz0wOyBNYXgtQWdlPTAn
KQorICAgICAgICBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgJ2h0dHBPbmx5Rm9vPTA7IE1heC1B
Z2U9MCcpCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBw
YXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fY2xpZW50LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDQ1OWExOWJjNjhjNzg3OWExNzRmNTcyMTIyMzgyOTE0ZTZmN2RkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpAQCAtMCwwICsxLDY5
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlNpbXBs
ZSBXZWJTb2NrZXQgY2xpZW50IG5hbWVkIGVjaG9fY2xpZW50IGp1c3QgYmVjYXVzZSBvZiBoaXN0
b3JpY2FsIHJlYXNvbi4KKworbW9kX3B5d2Vic29ja2V0IGRpcmVjdG9yeSBtdXN0IGJlIGluIFBZ
VEhPTlBBVEguCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2VydmVyIHNldHVwCisgJSBjZCAkcHl3
ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3ZC9zcmMvZXhhbXBsZQorCisjIHJ1
biBjbGllbnQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0aG9uIC4vc3JjL2V4YW1wbGUvZWNo
b19jbGllbnQucHkgLXAgODg4MCBcCisgICAgIC1zIGxvY2FsaG9zdCBcCisgICAgIC1vIGh0dHA6
Ly9sb2NhbGhvc3QgLXIgL2VjaG8gLW0gdGVzdAorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
CitpbXBvcnQgYmFzZTY0CitpbXBvcnQgY29kZWNzCitmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEK
K2ltcG9ydCBsb2dnaW5nCitmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9y
dCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc2l4CitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5leHRlbnNpb25zIGltcG9ydCBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIKK2Zyb20gbW9k
X3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IF9wYXJzZV93aW5kb3dfYml0cworZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KK2Zyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKKworX1RJTUVPVVRfU0VDID0gMTAKK19VTkRFRklORURfUE9SVCA9IC0xCisKK19VUEdS
QURFX0hFQURFUiA9ICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJworX0NPTk5FQ1RJT05fSEVBREVS
ID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworCisjIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRl
bGxzIHRoZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQorX0dPT0RCWUVf
TUVTU0FHRSA9ICdHb29kYnllJworCitfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEz
JworCisKK2NsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcwor
CisKK2RlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIs
IG9yaWdpbik6CisgICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3Jp
Z2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKKyAgICAjIGFuZCB0aGUgL29yaWdpbi8g
dmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgorICAgIHJl
dHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKKworCitkZWYgX2Zv
cm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgorICAgICMgNC4xIDkuIExldCAv
aG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAv
aG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCisgICAgIyAvaG9z
dHBvcnQvCisgICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKKyAgICAjIDQuMSAxMS4gSWYgL3Nl
Y3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLworICAg
ICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBD
T0xPTiBjaGFyYWN0ZXIKKyAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQv
LCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAorICAgICMgdG8gL2hvc3Rwb3J0Lwor
ICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VU
X1BPUlQpCisgICAgICAgICAgICBvciAoc2VjdXJlIGFuZCBwb3J0ICE9IGNvbW1vbi5ERUZBVUxU
X1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQpKToKKyAgICAgICAgaG9zdHBvcnQgKz0gJzonICsgc3Ry
KHBvcnQpCisgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoi
LCBhIFUrMDAyMCBTUEFDRQorICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0LywgdG8gL2Zp
ZWxkcy8uCisgICAgcmV0dXJuICclczogJXNcclxuJyAlIChjb21tb24uSE9TVF9IRUFERVIsIGhv
c3Rwb3J0KQorCisKK2RlZiBfcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVj
dl9ieXRlcyA9IFtdCisgICAgcmVtYWluaW5nID0gbGVuZ3RoCisgICAgd2hpbGUgcmVtYWluaW5n
ID4gMDoKKyAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCisg
ICAgICAgIGlmIG5vdCByZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3Io
CisgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVx
dWVzdGVkIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0
IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCisgICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVu
Z3RoIC0gcmVtYWluaW5nKSkKKyAgICAgICAgcmVjdl9ieXRlcy5hcHBlbmQocmVjZWl2ZWRfYnl0
ZXMpCisgICAgICAgIHJlbWFpbmluZyAtPSBsZW4ocmVjZWl2ZWRfYnl0ZXMpCisgICAgcmV0dXJu
IGInJy5qb2luKHJlY3ZfYnl0ZXMpCisKKworZGVmIF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVs
ZHMsIG5hbWUpOgorICAgICIiIkdldHMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgc3BlY2lmaWVk
IGJ5IG5hbWUgZnJvbSBmaWVsZHMuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdGhhdCB0
aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZQorICAgIGluIGZp
ZWxkcy4gT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJyb3IuCisgICAgIiIi
CisKKyAgICB2YWx1ZXMgPSBmaWVsZHMuZ2V0KG5hbWUubG93ZXIoKSkKKyAgICBpZiB2YWx1ZXMg
aXMgTm9uZSBvciBsZW4odmFsdWVzKSA9PSAwOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcignJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCisgICAg
aWYgbGVuKHZhbHVlcykgPiAxOgorICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcign
TXVsdGlwbGUgJXMgaGVhZGVycyBmb3VuZDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKG5hbWUsIHZhbHVlcykpCisgICAgcmV0dXJuIHZhbHVlc1swXQorCisKK2Rl
ZiBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX3NlbnNpdGl2ZT1G
YWxzZSk6CisgICAgIiIiR2V0cyBhbmQgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVy
IHNwZWNpZmllZCBieSBuYW1lIGZyb20KKyAgICBmaWVsZHMuCisKKyAgICBJZiBleHBlY3RlZF92
YWx1ZSBpcyBzcGVjaWZpZWQsIGNvbXBhcmVzIGV4cGVjdGVkIHZhbHVlIGFuZCBhY3R1YWwgdmFs
dWUKKyAgICBhbmQgcmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yIG9uIGZhaWx1cmUuIFlv
dSBjYW4gc3BlY2lmeSBjYXNlCisgICAgc2Vuc2l0aXZlbmVzcyBpbiB0aGlzIGNvbXBhcmlzb24g
YnkgY2FzZV9zZW5zaXRpdmUgcGFyYW1ldGVyLiBUaGlzIGZ1bmN0aW9uCisgICAgZXhwZWN0cyB0
aGF0IHRoZXJlJ3Mgb25seSBvbmUgaGVhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGZp
ZWxkcy4KKyAgICBPdGhlcndpc2UsIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvci4KKyAg
ICAiIiIKKworICAgIHZhbHVlID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSkK
KworICAgIGlmICgoY2FzZV9zZW5zaXRpdmUgYW5kIHZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlKSBv
cgorICAgICAgICAobm90IGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZS5sb3dlcigpICE9IGV4cGVj
dGVkX3ZhbHVlLmxvd2VyKCkpKToKKyAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3Io
CisgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAobmFtZSwgZXhwZWN0ZWRfdmFsdWUsIHZh
bHVlKSkKKworCitjbGFzcyBfVExTU29ja2V0KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3Ig
YSBUTFMgY29ubmVjdGlvbi4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6
CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisg
ICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCkKKwor
ICAgICAgICAjIFByaW50IGNpcGhlciBpbiB1c2UuIEhhbmRzaGFrZSBpcyBkb25lIG9uIHdyYXBf
c29ja2V0IGNhbGwuCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJDaXBoZXI6ICVzIiwgc2Vs
Zi5fdGxzX3NvY2tldC5jaXBoZXIoKSkKKworICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC53cml0ZShkYXRhKQorCisgICAgZGVmIHNlbmRh
bGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBzZWxmLl90bHNfc29ja2V0LnNlbmRhbGwo
ZGF0YSkKKworICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdGxzX3NvY2tldC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl90bHNfc29ja2V0LmNsb3NlKCkKKworICAgIGRlZiBnZXRwZWVybmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisK
K2NsYXNzIENsaWVudEhhbmRzaGFrZUJhc2Uob2JqZWN0KToKKyAgICAiIiJBIGJhc2UgY2xhc3Mg
Zm9yIFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBlYWNoCisgICAg
cHJvdG9jb2wgdmVyc2lvbi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgZGVm
IF9yZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBh
IGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgICAgICBmaWVs
ZHMgPSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAgICAgICAgICAjIDQu
MSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICAgICAgbmFtZSA9IGInJworICAgICAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgICAgICMg
NC4xIDM0LiByZWFkIC9uYW1lLworICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3JlYWRfbmFtZSgp
CisgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgICMgNC4xIDM1LiByZWFkIHNwYWNlcworICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogU2tpcCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCisgICAg
ICAgICAgICBjaCA9IHNlbGYuX3NraXBfc3BhY2VzKCkKKyAgICAgICAgICAgICMgNC4xIDM2LiBy
ZWFkIC92YWx1ZS8KKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fcmVhZF92YWx1ZShjaCkKKyAg
ICAgICAgICAgICMgNC4xIDM3LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAg
ICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYg
Y2ggIT0gYidcbic6ICAjIDB4MEEKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3
aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCisgICAgICAgICAgICAgICAgICAgICdoZWFkZXIg
JXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCisgICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5k
IGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCisgICAgICAg
ICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAv
bmFtZS8gYnl0ZQorICAgICAgICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhl
IHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKKyAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50
ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCisgICAgICAg
ICAgICAjIHN0cmVhbS4KKyAgICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUuZGVjb2Rl
KCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLmFwcGVuZCh2YWx1
ZS5kZWNvZGUoJ1VURi04JykpCisgICAgICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAi
RmllbGQiIHN0ZXAgYWJvdmUKKyAgICAgICAgcmV0dXJuIGZpZWxkcworCisgICAgZGVmIF9yZWFk
X25hbWUoc2VsZik6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUg
YXJyYXlzCisgICAgICAgIG5hbWUgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAg
ICAgICMgNC4xIDM0LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNo
ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQorICAgICAgICAgICAgaWYgY2ggPT0g
Yidccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAg
ZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhh
bmRzaGFrZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJl
YWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gYic6
JzogICMgMHgzQQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxvd2VyKCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSArPSBjaAorCisgICAgZGVmIF9za2lwX3Nw
YWNlcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZl
cgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDEpCisgICAgICAgICAgICBpZiBjaCA9PSBiJyAnOiAgIyAweDIwCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybiBjaAorCisgICAgZGVmIF9y
ZWFkX3ZhbHVlKHNlbGYsIGNoKToKKyAgICAgICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVt
cHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICMgNC4xIDM2LiBy
ZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisg
ICAgICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICAgICAgcmFp
c2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFsdWUgJXInICUgdmFsdWUpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgICAgICBjaCA9IF9yZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKworCitkZWYgX2dldF9wZXJtZXNzYWdlX2RlZmxh
dGVfZnJhbWVyKGV4dGVuc2lvbl9yZXNwb25zZSk6CisgICAgIiIiVmFsaWRhdGUgdGhlIHJlc3Bv
bnNlIGFuZCByZXR1cm4gYSBmcmFtZXIgb2JqZWN0IHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGluCisg
ICAgdGhlIHJlc3BvbnNlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCB0aGUgc2VydmVyXy4q
IHBhcmFtZXRlcnMuCisgICAgIiIiCisKKyAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzID0gTm9u
ZQorICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gTm9uZQorCisgICAgY2xpZW50X21h
eF93aW5kb3dfYml0c19uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3Nvci5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3Zlcl9uYW1lID0gKAorICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3Nvci5fQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCisKKyAgICAj
IFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgorICAgICMgSGFuZGxlIHRo
b3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCisKKyAg
ICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCk6CisgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3df
Yml0c19uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignTXVsdGlw
bGUgJXMgZm91bmQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCisKKyAgICAgICAgICAgIHBhcnNlZF92YWx1
ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGlmIHBhcnNl
ZF92YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAnQmFkICVzOiAlcicgJSAoY2xpZW50X21heF93aW5k
b3dfYml0c19uYW1lLCBwYXJhbV92YWx1ZSkpCisgICAgICAgICAgICBjbGllbnRfbWF4X3dpbmRv
d19iaXRzID0gcGFyc2VkX3ZhbHVlCisgICAgICAgIGVsaWYgcGFyYW1fbmFtZSA9PSBjbGllbnRf
bm9fY29udGV4dF90YWtlb3Zlcl9uYW1lOgorICAgICAgICAgICAgaWYgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoJ011bHRpcGxlICVzIGZvdW5kJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSkKKwor
ICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6
IEhhcyB2YWx1ZSAlcicgJQorICAgICAgICAgICAgICAgICAgICAoY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXJfbmFtZSwgcGFyYW1fdmFsdWUpKQorICAgICAgICAgICAgY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXIgPSBUcnVlCisKKyAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBp
cyBOb25lOgorICAgICAgICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciA9IEZhbHNlCisKKyAg
ICByZXR1cm4gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyKGNsaWVudF9tYXhfd2luZG93X2JpdHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlcikKKworCitjbGFzcyBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoQ2xpZW50SGFuZHNo
YWtlQmFzZSk6CisgICAgIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvcgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgorICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKKworICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcg
aGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAg
ICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAg
ICAiIiIKKworICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mg
b3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2xpbmUpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVl
c3RfbGluZS5lbmNvZGUoJ1VURi04JykpCisKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAg
ZmllbGRzLmFwcGVuZCgKKyAgICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy51c2VfdGxzKSkKKyAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFE
RVIpCisgICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQorICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm9yaWdpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoCisgICAgICAgICAgICAgICAgX29yaWdpbl9oZWFkZXIoY29tbW9uLk9SSUdJTl9IRUFE
RVIsIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKKworICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51
cmFuZG9tKDE2KQorICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFs
X2tleSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXIgKCVzKScsIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9rZXksIHV0aWwuaGV4aWZ5KG9yaWdpbmFsX2tleSkpCisgICAgICAgIGZpZWxkcy5hcHBlbmQo
CisgICAgICAgICAgICAnJXM6ICVzXHJcbicgJQorICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleS5kZWNvZGUoJ1VURi04JykpKQorCisgICAgICAg
IGZpZWxkcy5hcHBlbmQoCisgICAgICAgICAgICAnJXM6ICVkXHJcbicgJQorICAgICAgICAgICAg
KGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVSLCBjb21tb24uVkVSU0lPTl9IWUJJ
X0xBVEVTVCkpCisKKyAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0ID0gW10KKworICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGU6CisgICAgICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICAgICAgIyBBY2NlcHQg
dGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZhdWx0
LgorICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAg
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IuCisgICAgICAgICAgICAgICAgX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0sIE5vbmUpCisgICAgICAgICAgICBleHRlbnNpb25z
X3RvX3JlcXVlc3QuYXBwZW5kKGV4dGVuc2lvbikKKworICAgICAgICBpZiBsZW4oZXh0ZW5zaW9u
c190b19yZXF1ZXN0KSAhPSAwOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJc
bicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhU
RU5TSU9OU19IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc190b19yZXF1ZXN0KSkpCisKKyAgICAgICAgZm9yIGZpZWxk
IGluIGZpZWxkczoKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkLmVuY29k
ZSgnVVRGLTgnKSkKKworICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChiJ1xyXG4nKQorCisg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQorCisg
ICAgICAgIHN0YXR1c19saW5lID0gYicnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgICAgIHN0YXR1
c19saW5lICs9IGNoCisgICAgICAgICAgICBpZiBjaCA9PSBiJ1xuJzoKKyAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgIG0gPSByZS5tYXRjaChiJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxk
XFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1h
dDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19s
aW5lKQorICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgc3RhdHVz
X2NvZGUgIT0gYicxMDEnOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIHN0YXR1cyBjb2RlICVzIHdpdGggZm9sbG93aW5nIGhlYWRl
cnM6ICVyJywKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgc2VsZi5fcmVhZF9maWVsZHMo
KSkKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAorICAgICAgICAgICAg
ICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXInICUgc3RhdHVz
X2NvZGUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCB2YWxpZCBTdGF0
dXMtTGluZScpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU3RhcnQgcmVhZGluZyBoZWFk
ZXJzIHVudGlsIHdlIHNlZSBhbiBlbXB0eSBsaW5lJykKKworICAgICAgICBmaWVsZHMgPSBzZWxm
Ll9yZWFkX2ZpZWxkcygpCisKKyAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0
IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCisgICAgICAgICAg
ICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLCBmaWVsZHMp
CisKKyAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBjb21tb24uVVBH
UkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5X
RUJTT0NLRVRfVVBHUkFERV9UWVBFLCBGYWxzZSkKKworICAgICAgICBfdmFsaWRhdGVfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLCBG
YWxzZSkKKworICAgICAgICBhY2NlcHQgPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICAjIFZhbGlkYXRlCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiwgYWNjZXB0KSkK
KworICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6CisgICAgICAgICAgICByYWlz
ZSBDbGllbnRIYW5kc2hha2VFcnJvcigKKyAgICAgICAgICAgICAgICAnRGVjb2RlZCB2YWx1ZSBv
ZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCisgICAgICAgICAgICAgICAgY29tbW9uLlNFQ19X
RUJTT0NLRVRfQUNDRVBUX0hFQURFUikKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jl
c3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywgYWNjZXB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCisKKyAgICAgICAgYmluYXJ5
X2V4cGVjdGVkX2FjY2VwdCA9IHNoYTEoc2VsZi5fa2V5ICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkK
KyAgICAgICAgZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0
ZWRfYWNjZXB0KQorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgcmVzcG9u
c2UgZm9yIGNoYWxsZW5nZTogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9hY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShi
aW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKKworICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRf
YWNjZXB0LmRlY29kZSgnVVRGLTgnKToKKyAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAorICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVk
OiAlcyknICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hF
QURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIHBlcm1lc3NhZ2VfZGVm
bGF0ZV9hY2NlcHRlZCA9IEZhbHNlCisKKyAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVs
ZHMuZ2V0KAorICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFE
RVIubG93ZXIoKSkKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCisgICAgICAgIGlm
IGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFkZXIp
ICE9IDA6CisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4
dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCisKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBp
biBhY2NlcHRlZF9leHRlbnNpb25zOgorICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWUgPSBleHRl
bnNpb24ubmFtZSgpCisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUgPT0gY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04KKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYu
X29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6CisgICAgICAgICAgICAgICAgcGVybWVz
c2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgZnJhbWVyID0g
X2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKKyAgICAgICAgICAgICAg
ICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lKQorCisgICAgICAgIGlmIChzZWxmLl9vcHRp
b25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUKKyAgICAgICAgICAgICAgICBhbmQgbm90IHBlcm1l
c3NhZ2VfZGVmbGF0ZV9hY2NlcHRlZCk6CisgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkICVzLCBidXQgdGhlIHNlcnZlciBy
ZWplY3RlZCBpdCcgJQorICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVf
RVhURU5TSU9OKQorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29j
a2V0LVByb3RvY29sCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0
Yy4KKworCitjbGFzcyBDbGllbnRDb25uZWN0aW9uKG9iamVjdCk6CisgICAgIiIiQSB3cmFwcGVy
IGZvciBzb2NrZXQgb2JqZWN0IHRvIHByb3ZpZGUgdGhlIG1wX2Nvbm4gaW50ZXJmYWNlLgorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgorICAgICAgICBzZWxmLl9zb2Nr
ZXQgPSBzb2NrZXQKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoZGF0YSkKKworICAgIGRlZiByZWFkKHNlbGYsIG4pOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKKworICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUoKQorCisgICAgcmVt
b3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisKKworY2xhc3MgQ2xpZW50UmVx
dWVzdChvYmplY3QpOgorICAgICIiIkEgd3JhcHBlciBjbGFzcyBqdXN0IHRvIG1ha2UgaXQgYWJs
ZSB0byBwYXNzIGEgc29ja2V0IG9iamVjdCB0bworICAgIGZ1bmN0aW9ucyB0aGF0IGV4cGVjdCBh
IG1wX3JlcXVlc3Qgb2JqZWN0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2Nr
ZXQpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
KworICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCisgICAgICAgIHNlbGYud3NfdmVyc2lvbiA9IGNv
bW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisKKworY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgor
ICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYu
X3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICIiIlJ1biB0aGUgY2xp
ZW50LgorCisgICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3Nh
Z2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0
KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHNlbGYuX3NvY2tldC5jb25uZWN0KAorICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LCBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKKyAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudXNlX3RsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQgPSBfVExT
U29ja2V0KHNlbGYuX3NvY2tldCkKKworICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gQ2xp
ZW50SGFuZHNoYWtlUHJvY2Vzc29yKHNlbGYuX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zKQorCisgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKKworICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQorCisgICAgICAgICAgICByZXF1
ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgICAgIHN0cmVhbV9v
cHRpb24gPSBTdHJlYW1PcHRpb25zKCkKKyAgICAgICAgICAgIHN0cmVhbV9vcHRpb24ubWFza19z
ZW5kID0gVHJ1ZQorICAgICAgICAgICAgc3RyZWFtX29wdGlvbi51bm1hc2tfcmVjZWl2ZSA9IEZh
bHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZSBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlCisgICAgICAgICAgICAgICAgZnJhbWVyLnNldHVwX3N0cmVh
bV9vcHRpb25zKHN0cmVhbV9vcHRpb24pCisKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0
cmVhbShyZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQorCisgICAgICAgICAgICBmb3IgbGluZSBpbiBz
ZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDogJXMnICUgbGluZSkK
KyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gc2Vs
Zi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlY3Y6
ICVzJyAlIHJlY2VpdmVkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgICAgICAg
ICByYWlzZQorCisgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVm
IF9kb19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5n
IGhhbmRzaGFrZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNsb3NpbmcgZnJhbWUuIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJylbLTFdID09IF9HT09EQllFX01F
U1NBR0U6CisgICAgICAgICAgICAjIHJlcXVlc3RlZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3Npbmcg
aGFuZHNoYWtlLCBzbworICAgICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2Ug
bWVzc2FnZSBmcm9tIHNlcnZlci4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdXYWl0
IGZvciBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBzZWxmLl9zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIG1l
c3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmVjdiBjbG9zZScpCisgICAg
ICAgICAgICAgICAgcHJpbnQoJ1NlbmQgYWNrJykKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5kIHNlbnQgYWNrJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcHJpbnQoJ1NlbmQgY2xvc2UnKQorICAgICAgICBz
ZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCisgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKKyAgICAgICAgcHJpbnQoJ1JlY3YgYWNrJykKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCisKKworZGVmIG1haW4oKToK
KyAgICBpZiBzaXguUFkyOgorICAgICAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcign
dXRmLTgnKShzeXMuc3Rkb3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKKyAgICAj
IFdlIGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBz
YW1lIGFzIEdvb2dsZQorICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1h
bmQtbGluZS1mbGFnIHN0eWxlIGZsYWdzLgorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsCisg
ICAgICAgICAgICAgICAgICAgICAgJy0tc2VydmVyLWhvc3QnLAorICAgICAgICAgICAgICAgICAg
ICAgICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJf
aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J3NlcnZlciBob3N0JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX3BvcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2Vy
dmVyIHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsCisgICAgICAgICAgICAgICAg
ICAgICAgJy0tb3JpZ2luJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdvcmlnaW4nLAor
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J29yaWdpbicpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1yZXNv
dXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVzb3VyY2UnLAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0nL2VjaG8nLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jlc291cmNlIHBhdGgnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsCisgICAgICAgICAgICAgICAgICAgICAgJy0tbWVz
c2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWVzc2FnZScsCisgICAgICAgICAg
ICAgICAgICAgICAgdHlwZT0nc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
Y29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4n
ICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLXEnLAorICAgICAgICAgICAgICAgICAgICAgICctLXF1aWV0JywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywKKyAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQor
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdGxz
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfdGxzJywKKyAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIFRMUyAod3NzOi8vKS4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
c29ja2V0LXRpbWVvdXQnLAorICAgICAgICAgICAgICAgICAgICAgICctLXNvY2tldF90aW1lb3V0
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PV9USU1FT1VUX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUaW1lb3V0KHNlYykg
Zm9yIHNvY2tldHMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXVzZS1wZXJtZXNzYWdlLWRl
ZmxhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUn
LAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2Ug
dGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uJykKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisg
ICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4n
LAorICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4n
LCAnZXJyb3InLCAnY3JpdGljYWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cg
bGV2ZWwuJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJn
cygpCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1l
KG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQorCisgICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVy
IGRlcGVuZHMgb24gd2hldGhlciBUTFMgaXMgdXNlZC4KKyAgICBpZiBvcHRpb25zLnNlcnZlcl9w
b3J0ID09IF9VTkRFRklORURfUE9SVDoKKyAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgorICAg
ICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
U0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3Bv
cnQgPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworICAgICMgb3B0cGFyc2UgZG9l
c24ndCBzZWVtIHRvIGhhbmRsZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMuCisgICAgIyBTZXQg
ZGVmYXVsdCBtZXNzYWdlIGhlcmUuCisgICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKKyAgICAg
ICAgb3B0aW9ucy5tZXNzYWdlID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAjICJKYXBhbiIgaW4g
SmFwYW5lc2UKKworICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYTUw
MzIyMThkMjY5OTU4YmY3NTFiZjYwOGJiYjUyNTU2YzZmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CkBAIC0wLDAgKzEsNjIg
QEAKKyMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc2l4CisKK19HT09EQllFX01FU1NBR0UgPSB1
J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
OgorICAgICIiIlJlY2VpdmVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgdmFsdWUg
aXMgcGFyc2VkIGludG8KKyAgICByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zLiBweXdl
YnNvY2tldCBjcmVhdGVzIGV4dGVuc2lvbgorICAgIHByb2Nlc3NvcnMgdXNpbmcgaXQgYmVmb3Jl
IGRvX2V4dHJhX2hhbmRzaGFrZSBjYWxsIGFuZCBuZXZlciBsb29rcyBhdCBpdAorICAgIGFmdGVy
IHRoZSBjYWxsLgorCisgICAgVG8gcmVqZWN0IHJlcXVlc3RlZCBleHRlbnNpb25zLCBjbGVhciB0
aGUgcHJvY2Vzc29yIGxpc3QuCisgICAgIiIiCisKKyAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9w
cm9jZXNzb3JzID0gW10KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgICIiIkVjaG8uIFNhbWUgYXMgZWNob193c2gucHkuIiIiCisKKyAgICB3aGlsZSBUcnVl
OgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAg
ICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlz
aW5zdGFuY2UobGluZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGlu
ZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJp
bmFyeT1UcnVlKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvZXhhbXBsZS9lY2hvX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUv
ZWNob193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2M2YzUzMTFiYmI5OWYzMzRmMzM1N2Q4MDFhMmY0
MjA1NjAwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNo
b193c2gucHkKQEAgLTAsMCArMSw1NSBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzaXgK
KworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgIyBUaGlzIGV4YW1wbGUgaGFuZGxlciBhY2Nl
cHRzIGFueSByZXF1ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3IgaG93CisgICAgIyB0
byByZWplY3QgYWNjZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQgb24gb3JpZ2luIHZh
bHVlLgorCisgICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJl
cXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHNpeC50
ZXh0X3R5cGUpOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxp
bmUsIGJpbmFyeT1GYWxzZSkKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FH
RToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCisjIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFu
ZGxlcl9tYXAudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1OTkwNTg2Nzg0MmFlYjg2NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0
CkBAIC0wLDAgKzEsMTEgQEAKKyMgd2Vic29ja2V0IGhhbmRsZXIgbWFwIGZpbGUsIHVzZWQgYnkg
c3RhbmRhbG9uZS5weSAtbSBvcHRpb24uCisjIEEgbGluZSBzdGFydGluZyB3aXRoICcjJyBpcyBh
IGNvbW1lbnQgbGluZS4KKyMgRWFjaCBsaW5lIGNvbnNpc3RzIG9mICdhbGlhc19yZXNvdXJjZV9w
YXRoJyBhbmQgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnCisjIHNlcGFyYXRlZCBieSBzcGFjZXMu
CisjIEFsaWFzaW5nIGlzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3AgdG8gdGhlIGJvdHRvbSBvZiB0
aGUgbGluZSwgYW5kCisjICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJyBtdXN0IGV4aXN0IGJlZm9y
ZSBpdCBpcyBhbGlhc2VkLgorIyBGb3IgZXhhbXBsZSwKKyMgIC8gL2VjaG8KKyMgbWVhbnMgdGhh
dCBhIHJlcXVlc3QgdG8gJy8nIHdpbGwgYmUgaGFuZGxlZCBieSBoYW5kbGVycyBmb3IgJy9lY2hv
Jy4KKy8gL2VjaG8KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3Rz
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaHN0c193c2gucHkKQEAgLTAsMCArMSw0
MCBAQAorIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoCisgICAgICAg
ICgnU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eScsICdtYXgtYWdlPTg2NDAwJykpCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UoJ0hlbGxvJywgYmluYXJ5PUZhbHNlKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNGFhNjg0MjgzYTYwM2Y1YjMzZGRhNTI2MzAxOTk5YjQ0NzkyZGRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9pbnRlcm5hbF9lcnJv
cl93c2gucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gX19mdXR1
cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
bXNndXRpbAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
KyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAg
ICByYWlzZSBtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbignSW50ZW50aW9uYWwnKQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9vcmlnaW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9vcmlnaW5f
Y2hlY2tfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTc2N2FiOTMyZmI1ODI4MjRhYWYxYTU3ZDkyNDlj
MzA0YmQ1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL29y
aWdpbl9jaGVja193c2gucHkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
VGhpcyBleGFtcGxlIGlzIGRlcml2ZWQgZnJvbSB0ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdp
bl9jaGVja193c2gucHkuCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgorICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20n
OgorICAgICAgICByZXR1cm4KKyAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3Jp
Z2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2No
ZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxl
L3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4YjJjMDhmNmEyMjU0
YTFmOWQ3NjUwNzkwMmMxYTZiNWFlZTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IS0tCitDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KK3RoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKK1NQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwZXJm
b3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4
YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDQwOWFhNmViNWZk
MWExMWFlMmQ1YmExNTZiYjhhYWMyZmNhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCkBAIC0wLDAgKzEsODYg
QEAKKy8vIENvcHlyaWdodCAyMDIwLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnVuY3Rp
b24gcGVyZlRlc3RBZGRUb0xvZyh0ZXh0KSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1h
bmQnOiAnbG9nJywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0
QWRkVG9TdW1tYXJ5KHRleHQpIHsKK30KKworZnVuY3Rpb24gcGVyZlRlc3RNZWFzdXJlVmFsdWUo
dmFsdWUpIHsKKyAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdtZWFzdXJlVmFsdWUn
LCAndmFsdWUnOiB2YWx1ZX0sICcqJyk7Cit9CisKK2Z1bmN0aW9uIHBlcmZUZXN0Tm90aWZ5QWJv
cnQoKSB7CisgIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90aWZ5QWJvcnQnfSwg
JyonKTsKK30KKworZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGFUeXBl
LCBhc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlEYXRh
LCBudW1JdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVdhcm1VcEl0ZXJhdGlvbnMpIHsKKworICByZXR1cm4geworICAgIHByZWZpeFVybDogJ3dzOi8v
JyArIGxvY2F0aW9uLmhvc3QgKyAnL2JlbmNobWFya19oZWxwZXInLAorICAgIHByaW50U2l6ZTog
dHJ1ZSwKKyAgICBudW1Tb2NrZXRzOiAxLAorICAgIC8vICsgMSBpcyBmb3IgYSB3YXJtdXAgaXRl
cmF0aW9uIGJ5IHRoZSBUZWxlbWV0cnkgZnJhbWV3b3JrLgorICAgIG51bUl0ZXJhdGlvbnM6IG51
bUl0ZXJhdGlvbnMgKyBudW1XYXJtVXBJdGVyYXRpb25zICsgMSwKKyAgICBudW1XYXJtVXBJdGVy
YXRpb25zOiBudW1XYXJtVXBJdGVyYXRpb25zLAorICAgIG1pblRvdGFsOiAxMDI0MDAwMCwKKyAg
ICBzdGFydFNpemU6IDEwMjQwMDAwLAorICAgIHN0b3BUaHJlc2hvbGQ6IDEwMjQwMDAwLAorICAg
IG11bHRpcGxpZXJzOiBbMl0sCisgICAgdmVyaWZ5RGF0YTogdmVyaWZ5RGF0YSwKKyAgICBkYXRh
VHlwZTogZGF0YVR5cGUsCisgICAgYXN5bmM6IGFzeW5jLAorICAgIGFkZFRvTG9nOiBwZXJmVGVz
dEFkZFRvTG9nLAorICAgIGFkZFRvU3VtbWFyeTogcGVyZlRlc3RBZGRUb1N1bW1hcnksCisgICAg
bWVhc3VyZVZhbHVlOiBwZXJmVGVzdE1lYXN1cmVWYWx1ZSwKKyAgICBub3RpZnlBYm9ydDogcGVy
ZlRlc3ROb3RpZnlBYm9ydAorICB9OworfQorCit2YXIgZGF0YTsKK29ubWVzc2FnZSA9IGZ1bmN0
aW9uKG1lc3NhZ2UpIHsKKyAgdmFyIGFjdGlvbjsKKyAgaWYgKG1lc3NhZ2UuZGF0YS5jb21tYW5k
ID09PSAnc3RhcnQnKSB7CisgICAgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKKyAgICBpbml0V29ya2Vy
KCdodHRwOi8vJyArIGxvY2F0aW9uLmhvc3QpOworICAgIGFjdGlvbiA9IGRhdGEuYmVuY2htYXJr
TmFtZTsKKyAgfSBlbHNlIHsKKyAgICBhY3Rpb24gPSAnc3RvcCc7CisgIH0KKworICB2YXIgY29u
ZmlnID0gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGRhdGEuZGF0YVR5cGUsIGRhdGEuYXN5
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52ZXJp
ZnlEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
bnVtSXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICBkb0FjdGlvbihjb25maWcsIGRhdGEuaXNX
b3JrZXIsIGFjdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBs
ZS9zcGVjaWFsX2hlYWRlcnMuY2dpIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9zcGVjaWFs
X2hlYWRlcnMuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwM2NiNzQwMWI3ODdhYzZlMTFjNjc0NmM2ODQyZTU3
ZDM4MDk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL3Nw
ZWNpYWxfaGVhZGVycy5jZ2kKQEAgLTAsMCArMSwyNiBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
IyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQorIyBsaWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKKyMgaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCisiIiJDR0kg
c2NyaXB0IHNhbXBsZSBmb3IgdGVzdGluZyBlZmZlY3Qgb2YgSFRUUCBoZWFkZXJzIG9uIHRoZSBv
cmlnaW4gcGFnZS4KKworTm90ZSB0aGF0IENHSSBzY3JpcHRzIGRvbid0IHdvcmsgb24gdGhlIHN0
YW5kYWxvbmUgcHl3ZWJzb2NrZXQgcnVubmluZyBpbiBUTFMKK21vZGUuCisiIiIKKworcHJpbnQg
IiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKK0NvbnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25u
ZWN0LXNyYyBzZWxmCisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK3ZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1w
bGUuY29tIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1w
bGUvdXRpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTAxNjBjYjQwYzRjNzgwMGNkOWU3NjMwMDE0MGI5YmZl
OWYxNGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGls
LmpzCkBAIC0wLDAgKzEsMzIzIEBACisvLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KKy8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9y
IGJvdGggbWFpbiBhbmQgd29ya2VyIHRocmVhZCkuCisKK3ZhciByZXN1bHRzID0ge307CisKK2Z1
bmN0aW9uIGdldFRpbWVTdGFtcCgpIHsKKyAgcmV0dXJuIERhdGUubm93KCk7Cit9CisKK2Z1bmN0
aW9uIGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLAorICAgIHNwZWVkLCBwcmludFNpemUpIHsKKyAgaWYgKHByaW50U2l6
ZSkgeworICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpICsKKyAgICAgICAgJ1x0JyArIHRpbWVQZXJN
ZXNzYWdlSW5Ncy50b0ZpeGVkKDMpICsKKyAgICAgICAgKHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5N
cyA9PSAtMSA/CisgICAgICAgICAgICAnJyA6CisgICAgICAgICAgICAnXHQnICsgc3RkZGV2VGlt
ZVBlck1lc3NhZ2VJbk1zLnRvRml4ZWQoMykpICsKKyAgICAgICAgJ1x0JyArIHNwZWVkLnRvRml4
ZWQoMyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHNwZWVkLnRvU3RyaW5nKCk7CisgIH0KK30K
KworZnVuY3Rpb24gY2xlYXJBdmVyYWdlRGF0YSgpIHsKKyAgcmVzdWx0cyA9IHt9OworfQorCitm
dW5jdGlvbiByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpIHsKKyAgY29uZmlnLmFkZFRvU3VtbWFy
eSgKKyAgICAgICdTaXplW0tpQl1cdEF2ZXJhZ2UgdGltZVttc11cdFN0ZGRldiB0aW1lW21zXVx0
U3BlZWRbS0Ivc10nKTsKKyAgZm9yICh2YXIgc2l6ZSBpbiByZXN1bHRzKSB7CisgICAgdmFyIGF2
ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgPSByZXN1bHRzW3NpemVdLnN1bV90IC8gcmVzdWx0c1tz
aXplXS5uOworICAgIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQihzaXplLCBhdmVyYWdl
VGltZVBlck1lc3NhZ2VJbk1zKTsKKyAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHN0YW5kYXJkIGRl
dmlhdGlvbgorICAgIHZhciBzdGRkZXZUaW1lUGVyTWVzc2FnZUluTXMgPSBNYXRoLnNxcnQoCisg
ICAgICAgIChyZXN1bHRzW3NpemVdLnN1bV90MiAvIHJlc3VsdHNbc2l6ZV0ubiAtCisgICAgICAg
ICAgICBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zICogYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5N
cykgKgorICAgICAgICByZXN1bHRzW3NpemVdLm4gLworICAgICAgICAocmVzdWx0c1tzaXplXS5u
IC0gMSkpOworICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkoZm9ybWF0UmVzdWx0SW5LaUIoCisgICAg
ICAgIHNpemUsIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRldlRpbWVQZXJNZXNzYWdl
SW5Ncywgc3BlZWQsCisgICAgICAgIHRydWUpKTsKKyAgfQorfQorCitmdW5jdGlvbiBjYWxjdWxh
dGVTcGVlZEluS0Ioc2l6ZSwgdGltZVNwZW50SW5NcykgeworICByZXR1cm4gTWF0aC5yb3VuZChz
aXplIC8gdGltZVNwZW50SW5NcyAqIDEwMDApIC8gMTAwMDsKK30KKworZnVuY3Rpb24gY2FsY3Vs
YXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAor
ICAgIGlzV2FybVVwKSB7CisgIHZhciB0aW1lU3BlbnRJbk1zID0gZ2V0VGltZVN0YW1wKCkgLSBz
dGFydFRpbWVJbk1zOworICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXpl
LCB0aW1lU3BlbnRJbk1zKTsKKyAgdmFyIHRpbWVQZXJNZXNzYWdlSW5NcyA9IHRpbWVTcGVudElu
TXMgLyAodG90YWxTaXplIC8gc2l6ZSk7CisgIGlmICghaXNXYXJtVXApIHsKKyAgICBjb25maWcu
bWVhc3VyZVZhbHVlKHRpbWVQZXJNZXNzYWdlSW5Ncyk7CisgICAgaWYgKCFyZXN1bHRzW3NpemVd
KSB7CisgICAgICByZXN1bHRzW3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9Owor
ICAgIH0KKyAgICByZXN1bHRzW3NpemVdLm4gKys7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdCAr
PSB0aW1lUGVyTWVzc2FnZUluTXM7CisgICAgcmVzdWx0c1tzaXplXS5zdW1fdDIgKz0gdGltZVBl
ck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOworICB9CisgIGNvbmZpZy5hZGRUb0xv
Zyhmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIC0xLCBzcGVlZCwK
KyAgICAgIGNvbmZpZy5wcmludFNpemUpKTsKK30KKworZnVuY3Rpb24gcmVwZWF0U3RyaW5nKHN0
ciwgY291bnQpIHsKKyAgdmFyIGRhdGEgPSAnJzsKKyAgdmFyIGV4cENodW5rID0gc3RyOworICB2
YXIgcmVtYWluID0gY291bnQ7CisgIHdoaWxlICh0cnVlKSB7CisgICAgaWYgKHJlbWFpbiAlIDIp
IHsKKyAgICAgIGRhdGEgKz0gZXhwQ2h1bms7CisgICAgICByZW1haW4gPSAocmVtYWluIC0gMSkg
LyAyOworICAgIH0gZWxzZSB7CisgICAgICByZW1haW4gLz0gMjsKKyAgICB9CisKKyAgICBpZiAo
cmVtYWluID09IDApCisgICAgICBicmVhazsKKworICAgIGV4cENodW5rID0gZXhwQ2h1bmsgKyBl
eHBDaHVuazsKKyAgfQorICByZXR1cm4gZGF0YTsKK30KKworZnVuY3Rpb24gZmlsbEFycmF5QnVm
ZmVyKGJ1ZmZlciwgYykgeworICB2YXIgaTsKKworICB2YXIgdTMyQ29udGVudCA9IGMgKiAweDAx
MDEwMTAxOworCisgIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRlTGVuZ3Ro
IC8gNCk7CisgIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwgdTMyQmxv
Y2tzKTsKKyAgLy8gbGVuZ3RoIGF0dHJpYnV0ZSBpcyBzbG93IG9uIENocm9tZS4gRG9uJ3QgdXNl
IGl0IGZvciBsb29wIGNvbmRpdGlvbi4KKyAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytp
KSB7CisgICAgdTMyVmlld1tpXSA9IHUzMkNvbnRlbnQ7CisgIH0KKworICAvLyBGcmFjdGlvbgor
ICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJsb2NrcyAqIDQ7CisgIHZh
ciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2NrcyAqIDQsIHU4QmxvY2tz
KTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAgICB1OFZpZXdbaV0gPSBj
OworICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUFycmF5QnVmZmVyKGJ1ZmZlciwgZXhwZWN0ZWRD
aGFyKSB7CisgIHZhciBpOworCisgIHZhciBleHBlY3RlZFUzMlZhbHVlID0gZXhwZWN0ZWRDaGFy
ICogMHgwMTAxMDEwMTsKKworICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0
ZUxlbmd0aCAvIDQpOworICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAs
IHUzMkJsb2Nrcyk7CisgIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7ICsraSkgeworICAgIGlm
ICh1MzJWaWV3W2ldICE9IGV4cGVjdGVkVTMyVmFsdWUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICB2YXIgdThCbG9ja3MgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHUzMkJs
b2NrcyAqIDQ7CisgIHZhciB1OFZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIsIHUzMkJsb2Nr
cyAqIDQsIHU4QmxvY2tzKTsKKyAgZm9yIChpID0gMDsgaSA8IHU4QmxvY2tzOyArK2kpIHsKKyAg
ICBpZiAodThWaWV3W2ldICE9IGV4cGVjdGVkQ2hhcikgeworICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB2ZXJpZnlCbG9iKGNv
bmZpZywgYmxvYiwgZXhwZWN0ZWRDaGFyLCBkb25lQ2FsbGJhY2spIHsKKyAgdmFyIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKGJsb2IpOworICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgewor
ICAgIGNvbmZpZy5hZGRUb0xvZygnRmlsZVJlYWRlciBFcnJvcjogJyArIHJlYWRlci5lcnJvci5t
ZXNzYWdlKTsKKyAgICBkb25lQ2FsbGJhY2soYmxvYi5zaXplLCBmYWxzZSk7CisgIH0KKyAgcmVh
ZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQgPSB2ZXJpZnlBcnJh
eUJ1ZmZlcihyZWFkZXIucmVzdWx0LCBleHBlY3RlZENoYXIpOworICAgIGRvbmVDYWxsYmFjayhi
bG9iLnNpemUsIHJlc3VsdCk7CisgIH0KKyAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2Ip
OworfQorCitmdW5jdGlvbiB2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCBtZXNzYWdlLCBz
aXplKSB7CisgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgeworICAgIGNvbmZpZy5h
ZGRUb0xvZygnSW52YWxpZCBhY2sgdHlwZTogJyArIHR5cGVvZiBtZXNzYWdlKTsKKyAgICByZXR1
cm4gZmFsc2U7CisgIH0KKyAgdmFyIHBhcnNlZEFjayA9IHBhcnNlSW50KG1lc3NhZ2UpOworICBp
ZiAoaXNOYU4ocGFyc2VkQWNrKSkgeworICAgIGNvbmZpZy5hZGRUb0xvZygnSW52YWxpZCBhY2sg
dmFsdWU6ICcgKyBtZXNzYWdlKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKHBhcnNl
ZEFjayAhPSBzaXplKSB7CisgICAgY29uZmlnLmFkZFRvTG9nKAorICAgICAgICAnRXhwZWN0ZWQg
YWNrIGZvciAnICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCBvbmUgZm9yICcgKyBwYXJzZWRBY2sg
KworICAgICAgICAnQicpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBjbG9uZUNvbmZpZyhvYmopIHsKKyAgdmFyIG5ld09iaiA9IHt9Owor
ICBmb3IgKGtleSBpbiBvYmopIHsKKyAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldOworICB9Cisg
IHJldHVybiBuZXdPYmo7Cit9CisKK3ZhciB0YXNrcyA9IFtdOworCitmdW5jdGlvbiBydW5OZXh0
VGFzayhjb25maWcpIHsKKyAgdmFyIHRhc2sgPSB0YXNrcy5zaGlmdCgpOworICBpZiAodGFzayA9
PSB1bmRlZmluZWQpIHsKKyAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbmlzaGVkJyk7CisgICAgY2xl
YW51cCgpOworICAgIHJldHVybjsKKyAgfQorICB0aW1lcklEID0gc2V0VGltZW91dCh0YXNrLCAw
KTsKK30KKworZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSB7CisgIHZhciBsZWdl
bmQgPSAnJworICBpZiAoY29uZmlnLnByaW50U2l6ZSkKKyAgICBsZWdlbmQgPSAnTWVzc2FnZSBz
aXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOworICBsZWdlbmQgKz0gJ1NwZWVkIGlu
IGtCL3MnOworICByZXR1cm4gbGVnZW5kOworfQorCitmdW5jdGlvbiBhZGRUYXNrcyhjb25maWcs
IHN0ZXBGdW5jKSB7CisgIGZvciAodmFyIGkgPSAwOworICAgICAgaSA8IGNvbmZpZy5udW1XYXJt
VXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkgeworICAgIHZhciBtdWx0
aXBsaWVySW5kZXggPSAwOworICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRTaXplOwor
ICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKKyAgICAgICAgICsrbXVsdGlw
bGllckluZGV4KSB7CisgICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCisgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICBzaXplLAorICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICBpIDwg
Y29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMpOworICAgICAgdGFza3MucHVzaCh0YXNrKTsKKyAg
ICAgIHZhciBtdWx0aXBsaWVyID0gY29uZmlnLm11bHRpcGxpZXJzWworICAgICAgICBtdWx0aXBs
aWVySW5kZXggJSBjb25maWcubXVsdGlwbGllcnMubGVuZ3RoXTsKKyAgICAgIGlmIChtdWx0aXBs
aWVyIDw9IDEpIHsKKyAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIG11bHRpcGxpZXIg
JyArIG11bHRpcGxpZXIpOworICAgICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG11bHRpcGxlcicpOworICAgICAgfQorICAgICAgc2l6
ZSA9IE1hdGguY2VpbChzaXplICogbXVsdGlwbGllcik7CisgICAgfQorICB9Cit9CisKK2Z1bmN0
aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRsZSkgeworICB0YXNrcy5wdXNo
KGZ1bmN0aW9uKCl7CisgICAgICB0aW1lcklEID0gbnVsbDsKKyAgICAgIGNvbmZpZy5hZGRUb1N1
bW1hcnkodGl0bGUpOworICAgICAgcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKTsKKyAgICAgIGNs
ZWFyQXZlcmFnZURhdGEoKTsKKyAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7CisgIH0pOworfQor
CitmdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNvbmZpZykgeworICBjb25maWcuYWRkVG9Mb2coJ1Nl
bmQgYmVuY2htYXJrJyk7CisgIGNvbmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25m
aWcpKTsKKworICB0YXNrcyA9IFtdOworICBjbGVhckF2ZXJhZ2VEYXRhKCk7CisgIGFkZFRhc2tz
KGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOworICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNv
bmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0
YXJ0QmVuY2htYXJrKGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29u
ZmlnKSB7CisgIGNvbmZpZy5hZGRUb0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKKyAgY29uZmln
LmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOworCisgIHRhc2tzID0gW107Cisg
IGNsZWFyQXZlcmFnZURhdGEoKTsKKyAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJr
U3RlcCk7CisgIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLAorICAgICAgJ1JlY2VpdmUg
QmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7CisgIHN0YXJ0QmVuY2htYXJr
KGNvbmZpZyk7Cit9CisKK2Z1bmN0aW9uIHN0b3AoY29uZmlnKSB7CisgIGNsZWFyVGltZW91dCh0
aW1lcklEKTsKKyAgdGltZXJJRCA9IG51bGw7CisgIHRhc2tzID0gW107CisgIGNvbmZpZy5hZGRU
b0xvZygnU3RvcHBlZCcpOworICBjbGVhbnVwKCk7Cit9CisKK3ZhciB3b3JrZXI7CisKK2Z1bmN0
aW9uIGluaXRXb3JrZXIob3JpZ2luKSB7CisgIHdvcmtlciA9IG5ldyBXb3JrZXIob3JpZ2luICsg
Jy9iZW5jaG1hcmsuanMnKTsKK30KKworZnVuY3Rpb24gZG9BY3Rpb24oY29uZmlnLCBpc1dpbmRv
d1RvV29ya2VyLCBhY3Rpb24pIHsKKyAgaWYgKGlzV2luZG93VG9Xb3JrZXIpIHsKKyAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9Mb2csIGFkZFRvU3VtbWFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZVZhbHVlLCBub3RpZnlBYm9ydCwgbWVzc2Fn
ZSkgeworICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAnYWRkVG9Mb2cnKQorICAgICAg
ICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRh
dGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCisgICAgICAgIGFkZFRvU3VtbWFyeShtZXNzYWdl
LmRhdGEuZGF0YSk7CisgICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ21lYXN1
cmVWYWx1ZScpCisgICAgICAgIG1lYXN1cmVWYWx1ZShtZXNzYWdlLmRhdGEuZGF0YSk7CisgICAg
ICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ25vdGlmeUFib3J0JykKKyAgICAgICAg
bm90aWZ5QWJvcnQoKTsKKyAgICB9LmJpbmQodW5kZWZpbmVkLCBjb25maWcuYWRkVG9Mb2csIGNv
bmZpZy5hZGRUb1N1bW1hcnksCisgICAgICAgICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUsIGNvbmZp
Zy5ub3RpZnlBYm9ydCk7CisgICAgY29uZmlnLmFkZFRvTG9nID0gdW5kZWZpbmVkOworICAgIGNv
bmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7CisgICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9
IHVuZGVmaW5lZDsKKyAgICBjb25maWcubm90aWZ5QWJvcnQgPSB1bmRlZmluZWQ7CisgICAgd29y
a2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24sIGNvbmZpZzogY29uZmlnfSk7CisgIH0gZWxz
ZSB7CisgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRCZW5jaG1hcmsnKQorICAgICAgc2VuZEJlbmNo
bWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3JlY2VpdmVCZW5jaG1hcmsn
KQorICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9
PT0gJ2JhdGNoQmVuY2htYXJrJykKKyAgICAgIGJhdGNoQmVuY2htYXJrKGNvbmZpZyk7CisgICAg
ZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCisgICAgICBzdG9wKGNvbmZpZyk7CisgIH0KK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhhZGQ0ODcz
MWY4OGZlODVlZWVhNDBlNmUwMTljZjE3Y2NjZTNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCkBAIC0wLDAgKzEsODkgQEAKKy8vIENv
cHlyaWdodCAyMDE0LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisvLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgorCit2
YXIgbG9nQm94ID0gbnVsbDsKK3ZhciBxdWV1ZWRMb2cgPSAnJzsKKwordmFyIHN1bW1hcnlCb3gg
PSBudWxsOworCitmdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKKyAgcXVldWVkTG9nICs9IGxvZyAr
ICdcbic7Cit9CisKK2Z1bmN0aW9uIGFkZFRvTG9nKGxvZykgeworICBsb2dCb3gudmFsdWUgKz0g
cXVldWVkTG9nOworICBxdWV1ZWRMb2cgPSAnJzsKKyAgbG9nQm94LnZhbHVlICs9IGxvZyArICdc
bic7CisgIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCitmdW5jdGlvbiBhZGRUb1N1
bW1hcnkobG9nKSB7CisgIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKKyAgc3VtbWFy
eUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOworfQorCisvLyB2YWx1ZTogZXhlY3V0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgorLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0byBi
ZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgorLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1Q
ZXJmb3JtYW5jZVRlc3QuCitmdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKK30KKworLy8g
Y29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1hcmsgZmFpbGVkIGFu
ZCBhYm9ydGVkLCBhbmQKKy8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVz
dHMuCisvLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KK2Z1bmN0aW9u
IG5vdGlmeUFib3J0KCkgeworfQorCitmdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKKyAg
cmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Cit9CisK
K2Z1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7CisgIHZhciBsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKKyAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNr
ZWQpCisgICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOworICByZXR1cm4gdW5kZWZpbmVk
OworfQorZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgeworICByZXR1cm4gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Cit9CisKK2Z1bmN0aW9uIGdldEludEFycmF5
RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0
cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOworfQorCitmdW5jdGlvbiBnZXRGbG9h
dEFycmF5RnJvbUlucHV0KGlkKSB7CisgIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOworICByZXR1cm4gc3RyQXJyYXkubWFwKHBhcnNl
RmxvYXQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS91dGlsX3dv
cmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGQ5MDQ0OWE5MGE3ZDc4MmI5NzAyM2U4ZDlkNWE3YWFlZTk0YTMyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF93b3JrZXIuanMKQEAgLTAs
MCArMSw0NCBAQAorLy8gQ29weXJpZ2h0IDIwMTQsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0Ogor
Ly8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKy8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2Vy
IHRocmVhZHMgb25seSkuCisKK29ubWVzc2FnZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CisgIHZh
ciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29uZmlnOworICBjb25maWcuYWRkVG9Mb2cgPSBmdW5j
dGlvbih0ZXh0KSB7CisgICAgICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTog
dGV4dH0pOyB9OworICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gZnVuY3Rpb24odGV4dCkgeworICAg
ICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRUb1N1bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Cisg
IGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgcG9zdE1lc3Nh
Z2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBkYXRhOiB2YWx1ZX0pOyB9OworICBjb25maWcubm90
aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9
KTsgfTsKKworICBkb0FjdGlvbihjb25maWcsIGZhbHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Cit9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
M2QzOGUyYWI2MmZhNzYxZTU0MWMzZTQ3YjUxNTY0ZDkxMzFhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwzOSBA
QAorVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KK0luc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitE
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qg
b2YgZmlsZXM6CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3No
LnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9hYm9ydF93c2gucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvZXhhbXBsZS9iZW5jaF93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2Jl
bmNobWFyay5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9iZW5jaG1hcmsuanMKKy9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvZXhhbXBsZS9jbG9zZV93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9leGFt
cGxlL2NvbnNvbGUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvY29va2llX3dzaC5w
eQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvZWNob19jbGllbnQucHkKKy9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhh
bXBsZS9lY2hvX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9oc3RzX3dzaC5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS9vcmlnaW5fY2hlY2tfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvZXhhbXBsZS9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbC5qcworL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL2V4YW1wbGUvdXRpbF9tYWluLmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
ZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZDVmNTk1MGYzNDc1MzFiOTI2MmMzMWI3N2Qw
YzI5ZDQyNmU1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3
ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMgQ29weXJpZ2h0IDIwMTEs
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
IiIiIEEgU3RhbmRhbG9uZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzCisK
K21vZF9weXdlYnNvY2tldCBpcyBhbiBBUEkgdGhhdCBwcm92aWRlcyBXZWJTb2NrZXQgZnVuY3Rp
b25hbGl0aWVzIHdpdGgKK2Egc3RhbmRhbG9uZSBXZWJTb2NrZXQgc2VydmVyLiBJdCBpcyBpbnRl
bmRlZCBmb3IgdGVzdGluZyBvcgorZXhwZXJpbWVudGFsIHB1cnBvc2VzLgorCitJbnN0YWxsYXRp
b24KKz09PT09PT09PT09PQorMS4gRm9sbG93IHN0YW5kYWxvbmUgc2VydmVyIGRvY3VtZW50YXRp
b24gdG8gc3RhcnQgcnVubmluZyB0aGUKK3N0YW5kYWxvbmUgc2VydmVyLiBJdCBjYW4gYmUgcmVh
ZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICQgcHlkb2MgbW9kX3B5
d2Vic29ja2V0LnN0YW5kYWxvbmUKKworMi4gT25jZSB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgaXMg
bGF1bmNoZWQgdmVyaWZ5IGl0IGJ5IGFjY2Vzc2luZworaHR0cDovL2xvY2FsaG9zdFs6cG9ydF0v
Y29uc29sZS5odG1sLiBJbmNsdWRlIHRoZSBwb3J0IG51bWJlciB3aGVuCitzcGVjaWZpZWQgb24g
bGF1bmNoLiBJZiBldmVyeXRoaW5nIGlzIHdvcmtpbmcgY29ycmVjdGx5LCB5b3UKK3dpbGwgc2Vl
IGEgc2ltcGxlIGVjaG8gY29uc29sZS4KKworCitXcml0aW5nIFdlYlNvY2tldCBoYW5kbGVycwor
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBhIFdlYlNvY2tldCByZXF1ZXN0IGNv
bWVzIGluLCB0aGUgcmVzb3VyY2UgbmFtZQorc3BlY2lmaWVkIGluIHRoZSBoYW5kc2hha2UgaXMg
Y29uc2lkZXJlZCBhcyBpZiBpdCBpcyBhIGZpbGUgcGF0aCB1bmRlcgorPHdlYnNvY2tfaGFuZGxl
cnM+IGFuZCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCis8d2Vic29ja19oYW5kbGVycz4vPHJlc291
cmNlX25hbWU+X3dzaC5weSBpcyBpbnZva2VkLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIHJlc291
cmNlIG5hbWUgaXMgL2V4YW1wbGUvY2hhdCwgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNv
Y2tfaGFuZGxlcnM+L2V4YW1wbGUvY2hhdF93c2gucHkgaXMgaW52b2tlZC4KKworQSBXZWJTb2Nr
ZXQgaGFuZGxlciBpcyBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9uczoK
KworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCisgICAgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmlu
ZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZCBhbmQgV2ViU29ja2V0IHByb3BlcnRpZXMgKHdzX29yaWdpbiwKK2FuZCB3c19yZXNvdXJjZSkg
YXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBi
eSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQorZXh0cmEgaGFuZHNo
YWtlICh3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CistIHdzX3Jlc291cmNlCistIHdz
X29yaWdpbgorLSB3c192ZXJzaW9uCistIHdzX2V4dGVuc2lvbnMKKy0gd3NfZGVmbGF0ZQorLSB3
c19wcm90b2NvbAorLSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzCisKK1RoZSBsYXN0IHR3byBhcmUg
YSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlvbi4KKworCitTdWJwcm90b2NvbCBO
ZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKword3NfcHJvdG9jb2wgaXMgYWx3
YXlzIHNldCB0byBOb25lIHdoZW4KK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNh
bGxlZC4gSWYgd3NfcmVxdWVzdGVkX3Byb3RvY29scyBpcyBub3QKK05vbmUsIHlvdSBtdXN0IGNo
b29zZSBvbmUgc3VicHJvdG9jb2wgZnJvbSB0aGlzIGxpc3QgYW5kIHNldCBpdCB0bword3NfcHJv
dG9jb2wuCisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKword2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAorc3VjY2Vz
c2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBj
bGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92
aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRyYW5zZmVyLgorCitZb3UgY2FuIHJlY2VpdmUgYSBt
ZXNzYWdlIGJ5IHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgbWVzc2FnZSA9IHJlcXVl
c3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisKK1RoaXMgY2FsbCBibG9ja3MgdW50aWwg
YW55IGNvbXBsZXRlIHRleHQgZnJhbWUgYXJyaXZlcywgYW5kIHRoZSBwYXlsb2FkIGRhdGEKK29m
IHRoZSBpbmNvbWluZyBmcmFtZSB3aWxsIGJlIHN0b3JlZCBpbnRvIG1lc3NhZ2UuIFdoZW4geW91
J3JlIHVzaW5nIElFVEYKK0h5QmkgMDAgb3IgbGF0ZXIgcHJvdG9jb2wsIHJlY2VpdmVfbWVzc2Fn
ZSgpIHdpbGwgcmV0dXJuIE5vbmUgb24gcmVjZWl2aW5nCitjbGllbnQtaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlLiBXaGVuIGFueSBlcnJvciBvY2N1cnMsIHJlY2VpdmVfbWVzc2FnZSgpCit3
aWxsIHJhaXNlIHNvbWUgZXhjZXB0aW9uLgorCitZb3UgY2FuIHNlbmQgYSBtZXNzYWdlIGJ5IHRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50LgorCisgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKG1lc3NhZ2UpCisKKworQ2xvc2luZyBDb25uZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0K
KworRXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IG9yIGp1c3QgcmV0dXJuLWluZyBm
cm9tCit3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgY2F1c2UgY29ubmVjdGlvbiBjbG9zZS4KKwor
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQorCitjbG9zZV9jb25uZWN0
aW9uIHdpbGwgd2FpdAorZm9yIGNsb3NpbmcgaGFuZHNoYWtlIGFja25vd2xlZGdlbWVudCBjb21p
bmcgZnJvbSB0aGUgY2xpZW50LiBXaGVuIGl0Citjb3VsZG4ndCByZWNlaXZlIGEgdmFsaWQgYWNr
bm93bGVkZ2VtZW50LCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCit3ZWJfc29ja2V0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2UgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZXJ2ZXIgcmVjZWl2ZXMKK2lu
Y29taW5nIGNsb3NpbmcgZnJhbWUgZnJvbSB0aGUgY2xpZW50IHBlZXIgaW1tZWRpYXRlbHkuIFlv
dSBjYW4gc3BlY2lmeQorY29kZSBhbmQgcmVhc29uIGJ5IHJldHVybiB2YWx1ZXMuIFRoZXkgYXJl
IHNlbnQgYXMgYSBvdXRnb2luZyBjbG9zaW5nIGZyYW1lCitmcm9tIHRoZSBzZXJ2ZXIuIEEgcmVx
dWVzdCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGF0IHlvdSBjYW4KK3Vz
ZSBpbiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UuCistIHdzX2Nsb3NlX2Nv
ZGUKKy0gd3NfY2xvc2VfcmVhc29uCisKKworVGhyZWFkaW5nCistLS0tLS0tLS0KKworQSBXZWJT
b2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlLiBUaGUgc3RhbmRhbG9uZQorc2VydmVy
IHVzZXMgdGhyZWFkcyBieSBkZWZhdWx0LgorCisKK0NvbmZpZ3VyaW5nIFdlYlNvY2tldCBFeHRl
bnNpb24gUHJvY2Vzc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1NlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29ja2V0IGV4dGVuc2lv
bnMuIE5vdGUgdGhhdCB0aGV5IGFyZQordW5zdGFibGUgYW5kIHRoZWlyIEFQSXMgYXJlIHN1Ympl
Y3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCisKK0EgcmVxdWVzdCBvYmplY3QgaGFzIHRoZXNl
IGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KKworLSB3c19yZXF1ZXN0
ZWRfZXh0ZW5zaW9uczoKKworICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBp
bnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgorICBwYXJhbWV0ZXJzIHJlY2VpdmVkIGZy
b20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBz
aG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgorCistIHdzX2V4dGVuc2lvbnM6CisKKyAgQSBs
aXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2VudGluZyBl
eHRlbnNpb24KKyAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNsaWVudCBpbiB0aGUg
c2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCisgIFlvdSBzaG91bGRuJ3QgdG91Y2ggaXQgZGly
ZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KKyAgcHJvY2Vzc29ycy4K
KworLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKKworICBBIGxpc3Qgb2YgbG9hZGVkIGV4dGVu
c2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQorICBleHRlbnNpb24g
eW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBtZXRob2RzLgorIiIi
CisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3
ODc4YmM0YTM3OWI1YWQ4YzQyM2E4ZTM4ZGY0MDVhOTZjY2JmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2V4Y2VwdGlvbnMucHkK
QEAgLTAsMCArMSw4MiBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdHJlYW0gRXhjZXB0aW9ucy4K
KyIiIgorCisjIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGlu
IHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhh
dCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgorIyBoYW5kbGVycy4gVW5m
b3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKKyMgcmVx
dWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93
IGRpcmVjdCByYXcgYnl0ZXMKKyMgd3JpdGluZy9yZWFkaW5nLgorCisKKyMgRXhjZXB0aW9ucwor
Y2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJU
aGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5h
dGVkCisgICAgdW5leHBlY3RlZGx5LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6CisgICAg
IiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZh
bGlkIGZyYW1lIHdlCisgICAgY2Fubm90IHBhcnNlLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhj
ZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCisg
ICAgc2VydmVyLXRlcm1pbmF0ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBj
YWxsZWQgb24KKyAgICBjbGllbnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgorICAgICIiIgorCisg
ICAgcGFzcworCisKK2NsYXNzIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToK
KyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBm
cmFtZSB3aXRoIGZsYWcsIG9wY29kZQorICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNh
biBqdXN0IGNhdGNoIGFuZCBpZ25vcmUgdGhpcyBleGNlcHRpb24gYW5kCisgICAgY2FsbCByZWNl
aXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1l
LgorICAgICIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSBy
ZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGljaAorICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3Ry
aW5ncy4KKyAgICAiIiIKKworICAgIHBhc3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYjEx
ZjE1Y2IyZjU4MmU2YzI5ZTY5OGVlNWZmZjJhZmRlOGE3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CkBAIC0wLDAgKzEsMjcz
IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRoaXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55
IG1vZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgorIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citmcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgaHR0cF9oZWFkZXJfdXRpbAorCisjIEFkZGl0aW9uYWwgbG9nIGxldmVsIGRlZmluaXRp
b25zLgorTE9HTEVWRUxfRklORSA9IDkKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgdmVyc2lvbi4KK1ZFUlNJT05fSFlCSTEzID0gMTMKK1ZFUlNJT05fSFlCSTE0
ID0gMTMKK1ZFUlNJT05fSFlCSTE1ID0gMTMKK1ZFUlNJT05fSFlCSTE2ID0gMTMKK1ZFUlNJT05f
SFlCSTE3ID0gMTMKKworIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJTb2NrZXQgcHJvdG9jb2wg
bGF0ZXN0IHZlcnNpb24uCitWRVJTSU9OX0hZQklfTEFURVNUID0gVkVSU0lPTl9IWUJJMTMKKwor
IyBQb3J0IG51bWJlcnMKK0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKK0RFRkFVTFRfV0VC
X1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MworCisjIFNjaGVtZXMKK1dFQl9TT0NLRVRfU0NIRU1F
ID0gJ3dzJworV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycKKworIyBGcmFtZSBvcGNv
ZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENP
REVfVEVYVCA9IDB4MQorT1BDT0RFX0JJTkFSWSA9IDB4MgorT1BDT0RFX0NMT1NFID0gMHg4CitP
UENPREVfUElORyA9IDB4OQorT1BDT0RFX1BPTkcgPSAweGEKKworIyBVVUlEIGZvciB0aGUgb3Bl
bmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tpbmcuCitXRUJTT0NLRVRfQUNDRVBUX1VVSUQg
PSBiJzI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMScKKworIyBPcGVuaW5nIGhh
bmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5kIGV4cGVjdGVkIHZhbHVlcy4KK1VQR1JBREVfSEVBREVS
ID0gJ1VwZ3JhZGUnCitXRUJTT0NLRVRfVVBHUkFERV9UWVBFID0gJ3dlYnNvY2tldCcKK0NPTk5F
Q1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCitVUEdSQURFX0NPTk5FQ1RJT05fVFlQRSA9ICdV
cGdyYWRlJworSE9TVF9IRUFERVIgPSAnSG9zdCcKK09SSUdJTl9IRUFERVIgPSAnT3JpZ2luJwor
U0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5JworU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0JworU0VDX1dFQlNPQ0tF
VF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCitTRUNfV0VCU09DS0VU
X1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJworU0VDX1dFQlNPQ0tF
VF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnCisKKyMgRXh0
ZW5zaW9ucworUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdlLWRlZmxh
dGUnCisKKyMgU3RhdHVzIGNvZGVzCisjIENvZGUgU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCwg
U1RBVFVTX0FCTk9STUFMX0NMT1NVUkUsIGFuZAorIyBTVEFUVVNfVExTX0hBTkRTSEFLRSBhcmUg
cHNldWRvIGNvZGVzIHRvIGluZGljYXRlIHNwZWNpZmljIGVycm9yIGNhc2VzLgorIyBDb3VsZCBu
b3QgYmUgdXNlZCBmb3IgY29kZXMgaW4gYWN0dWFsIGNsb3NpbmcgZnJhbWVzLgorIyBBcHBsaWNh
dGlvbiBsZXZlbCBlcnJvcnMgbXVzdCB1c2UgY29kZXMgaW4gdGhlIHJhbmdlCisjIFNUQVRVU19V
U0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9QUklWQVRFX01BWC4gVGhlIGNvZGVz
IGluIHRoZQorIyByYW5nZSBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VT
RVJfUkVHSVNURVJFRF9NQVggYXJlIG1hbmFnZWQKKyMgYnkgSUFOQS4gVXN1YWxseSBhcHBsaWNh
dGlvbiBtdXN0IGRlZmluZSB1c2VyIHByb3RvY29sIGxldmVsIGVycm9ycyBpbiB0aGUKKyMgcmFu
Z2UgU1RBVFVTX1VTRVJfUFJJVkFURV9CQVNFIHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLgor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VO
RFBPSU5UX0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CitTVEFUVVNf
VVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCitTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCA9
IDM5OTkKK1NUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSA9IDQwMDAKK1NUQVRVU19VU0VSX1BSSVZB
VEVfTUFYID0gNDk5OQorIyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGFsaWFzZXMgdG8ga2Vl
cCBjb21wYXRpYmlsaXR5LiBBcHBsaWNhdGlvbnMgbXVzdAorIyBub3QgdXNlIHRoZXNlIG9ic29s
ZXRlZCBkZWZpbml0aW9ucyBhbnltb3JlLgorU1RBVFVTX05PUk1BTCA9IFNUQVRVU19OT1JNQUxf
Q0xPU1VSRQorU1RBVFVTX1VOU1VQUE9SVEVEID0gU1RBVFVTX1VOU1VQUE9SVEVEX0RBVEEKK1NU
QVRVU19DT0RFX05PVF9BVkFJTEFCTEUgPSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVECitTVEFU
VVNfQUJOT1JNQUxfQ0xPU0UgPSBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRQorU1RBVFVTX0lOVkFM
SURfRlJBTUVfUEFZTE9BRCA9IFNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQQorU1RB
VFVTX01BTkRBVE9SWV9FWFQgPSBTVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTgorCisjIEhUVFAg
c3RhdHVzIGNvZGVzCitIVFRQX1NUQVRVU19CQURfUkVRVUVTVCA9IDQwMAorSFRUUF9TVEFUVVNf
Rk9SQklEREVOID0gNDAzCitIVFRQX1NUQVRVU19OT1RfRk9VTkQgPSA0MDQKKworCitkZWYgaXNf
Y29udHJvbF9vcGNvZGUob3Bjb2RlKToKKyAgICByZXR1cm4gKG9wY29kZSA+PiAzKSA9PSAxCisK
KworY2xhc3MgRXh0ZW5zaW9uUGFyYW1ldGVyKG9iamVjdCk6CisgICAgIiIiVGhpcyBpcyBleGNo
YW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGluIG9wZW5pbmcgaGFuZHNoYWtlLiIiIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUK
KyAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogQ2hhbmdlIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBt
b3JlIGVmZmljaWVudCBvbmUgc3VjaAorICAgICAgICAjIGFzIGRpY3Qgd2hlbiB0aGUgc3BlYyBj
aGFuZ2VzIHRvIHNheSBsaWtlCisgICAgICAgICMgLSBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSB1
bmlxdWUKKyAgICAgICAgIyAtIFRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIG5vdCBzaWduaWZp
Y2FudAorICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gW10KKworICAgIGRlZiBuYW1lKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dGVuc2lvbiBuYW1lLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIGFkZF9wYXJhbWV0ZXIoc2VsZiwgbmFtZSwgdmFsdWUp
OgorICAgICAgICAiIiJBZGQgYSBwYXJhbWV0ZXIuIiIiCisgICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgZ2V0X3BhcmFtZXRlcnMoc2VsZik6
CisgICAgICAgICIiIlJldHVybiB0aGUgcGFyYW1ldGVycy4iIiIKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcmFtZXRlcnMKKworICAgIGRlZiBnZXRfcGFyYW1ldGVyX25hbWVzKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzLiIiIgorICAgICAgICBy
ZXR1cm4gW25hbWUgZm9yIG5hbWUsIHVudXNlZF92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzXQor
CisgICAgZGVmIGhhc19wYXJhbWV0ZXIoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlRlc3QgaWYg
YSBwYXJhbWV0ZXIgZXhpc3RzLiIiIgorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFs
dWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFt
ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQg
dGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgcGFyYW1ldGVyLiIiIgorICAgICAgICBmb3IgcGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIHBh
cmFtX25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKKwor
CitjbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiRXhj
ZXB0aW9uIHRvIGhhbmRsZSBlcnJvcnMgaW4gZXh0ZW5zaW9uIHBhcnNpbmcuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhj
ZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQorCisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uX3Bh
cmFtKHN0YXRlLCBkZWZpbml0aW9uKToKKyAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3Rva2VuKHN0YXRlKQorCisgICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgorICAg
ICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIg
bmFtZSBmb3VuZCcpCisKKyAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0n
KToKKyAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCisg
ICAgICAgIHJldHVybgorCisgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRl
KQorCisgICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJz
ZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KKyAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0
aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQorICAgIGlmIHBhcmFtX3Zh
bHVlIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCisg
ICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1o
YW5kIHNpZGUgb2YgJworICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQor
CisgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQor
CisKK2RlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKKyAgICBleHRlbnNpb25fdG9rZW4gPSBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCisgICAgaWYgZXh0ZW5zaW9uX3Rv
a2VuIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBleHRlbnNpb24gPSBFeHRl
bnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQorCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIG5v
dCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgorICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0
ZSwgZXh0ZW5zaW9uKQorICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJSAoZXh0
ZW5zaW9uX3Rva2VuLCBlKSkKKworICAgIHJldHVybiBleHRlbnNpb24KKworCitkZWYgcGFyc2Vf
ZXh0ZW5zaW9ucyhkYXRhKToKKyAgICAiIiJQYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIHZhbHVlLgorCisgICAgUmV0dXJucyBhIGxpc3Qgb2YgRXh0ZW5zaW9uUGFyYW1ldGVy
IG9iamVjdHMuCisgICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQuCisgICAgIiIiCisg
ICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAgZXh0
ZW5zaW9uX2xpc3QgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGV4dGVuc2lvbiA9IF9w
YXJzZV9leHRlbnNpb24oc3RhdGUpCisgICAgICAgIGlmIGV4dGVuc2lvbiBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGV4dGVuc2lvbl9saXN0LmFwcGVuZChleHRlbnNpb24pCisKKyAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQorCisgICAgICAgIGlmIGh0dHBf
aGVhZGVyX3V0aWwucGVlayhzdGF0ZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgaWYgbm90IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV9zdHJpbmcoc3RhdGUsICcsJyk6
CisgICAgICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gcGFyc2UgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlcjog
JworICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhIGNvbW1hIGJ1dCBmb3VuZCAlcicgJSBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbihleHRlbnNpb25fbGlzdCkgPT0gMDoKKyAg
ICAgICAgcmFpc2UgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbignTm8gdmFsaWQgZXh0ZW5zaW9u
IGVudHJ5IGZvdW5kJykKKworICAgIHJldHVybiBleHRlbnNpb25fbGlzdAorCisKK2RlZiBmb3Jt
YXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6CisgICAgIiIiRm9ybWF0IGFuIEV4dGVuc2lvblBhcmFt
ZXRlciBvYmplY3QuIiIiCisgICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgp
XQorICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFt
ZXRlcnMoKToKKyAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIGZv
cm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShw
YXJhbV92YWx1ZSkKKyAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycg
JSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKKyAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1h
dHRlZF9wYXJhbXMpCisKKworZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToK
KyAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLiIiIgor
ICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCisgICAgZm9yIGV4dGVuc2lvbiBpbiBl
eHRlbnNpb25fbGlzdDoKKyAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChm
b3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCisgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0
ZWRfZXh0ZW5zaW9uX2xpc3QpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlOTQzYTVi
ODBhZmRjMGJkYTk1M2FhMmE3MzE5OGI5OWE0NTliMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpAQCAtMCwwICsxLDM4NSBA
QAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisiIiJEaXNwYXRjaCBXZWJTb2NrZXQgcmVxdWVzdC4KKyIiIgor
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgc3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorCitf
U09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dzaFwucHkkJykKK19TT1VS
Q0VfU1VGRklYID0gJ193c2gucHknCitfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9
ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKK19UUkFOU0ZFUl9EQVRBX0hBTkRMRVJf
TkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCitfUEFTU0lWRV9DTE9TSU5HX0hBTkRT
SEFLRV9IQU5ETEVSX05BTUUgPSAoCisgICAgJ3dlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZScpCisKKworY2xhc3MgRGlzcGF0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAi
IiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViU29ja2V0IHJlcXVlc3QuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfTk9UX0ZPVU5E
KToKKyAgICAgICAgc3VwZXIoRGlzcGF0Y2hFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUp
CisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworZGVmIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KToKKyAgICAiIiJEZWZhdWx0IHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSBoYW5kbGVyLiIiIgorCisgICAgcmV0dXJu
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICcnCisKKworZGVmIF9ub3JtYWxpemVfcGF0
aChwYXRoKToKKyAgICAiIiJOb3JtYWxpemUgcGF0aC4KKworICAgIEFyZ3M6CisgICAgICAgIHBh
dGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KKworICAgIFBhdGggaXMgY29udmVydGVkIHRvIHRo
ZSBhYnNvbHV0ZSBwYXRoLgorICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVyICdcXCcg
b3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCisgICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBhbHdheXMg
dXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCisgICAgIiIiCisKKyAgICBwYXRo
ID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQorICAgIHBhdGggPSBvcy5wYXRoLnJl
YWxwYXRoKHBhdGgpCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCisgICAgcmV0
dXJuIHBhdGgKKworCitkZWYgX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihiYXNl
X2Rpcik6CisgICAgIiIiUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgdGhlIHBhdGgg
b2YgYSBXZWJTb2NrZXQgaGFuZGxlciBzb3VyY2UKKyAgICBmaWxlIHRvIGEgcmVzb3VyY2Ugc3Ry
aW5nIGJ5IHJlbW92aW5nIHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBmcm9tCisgICAg
aXRzIGhlYWQsIHJlbW92aW5nIF9TT1VSQ0VfU1VGRklYIGZyb20gaXRzIHRhaWwsIGFuZCByZXBs
YWNpbmcgcGF0aAorICAgIHNlcGFyYXRvcnMgaW4gaXQgd2l0aCAnLycuCisKKyAgICBBcmdzOgor
ICAgICAgICBiYXNlX2RpcjogdGhlIHBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5LgorICAgICIi
IgorCisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXplX3BhdGgoYmFzZV9kaXIpCisKKyAgICBiYXNl
X2xlbiA9IGxlbihiYXNlX2RpcikKKyAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklY
KQorCisgICAgZGVmIGNvbnZlcnRlcihwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguZW5kc3dp
dGgoX1NPVVJDRV9TVUZGSVgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBf
bm9ybWFsaXplX3BhdGggbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIHJlc29sdmluZyBzeW1saW5r
IGJyZWFrcworICAgICAgICAjIGZvbGxvd2luZyBwYXRoIGNoZWNrLgorICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChi
YXNlX2Rpcik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gcGF0aFti
YXNlX2xlbjotc3VmZml4X2xlbl0KKworICAgIHJldHVybiBjb252ZXJ0ZXIKKworCitkZWYgX2Vu
dW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAiIiJSZXR1cm5zIGEg
Z2VuZXJhdG9yIHRoYXQgZW51bWVyYXRlcyBXZWJTb2NrZXQgSGFuZGxlciBzb3VyY2UgZmlsZSBu
YW1lcworICAgIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCisgICAgIiIiCisKKyAgICBmb3Igcm9v
dCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAgICAgZm9y
IGJhc2UgaW4gZmlsZXM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGJh
c2UpCisgICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFyY2gocGF0aCk6Cisg
ICAgICAgICAgICAgICAgeWllbGQgcGF0aAorCisKK2NsYXNzIF9IYW5kbGVyU3VpdGUob2JqZWN0
KToKKyAgICAiIiJBIGhhbmRsZXIgc3VpdGUgaG9sZGVyIGNsYXNzLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGEsCisgICAgICAgICAg
ICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgorICAgICAgICBzZWxmLmRvX2V4dHJh
X2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQorICAgICAgICBzZWxmLnRyYW5zZmVyX2Rh
dGEgPSB0cmFuc2Zlcl9kYXRhCisgICAgICAgIHNlbGYucGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKKworCitkZWYgX3NvdXJjZV9oYW5kbGVyX2Zp
bGUoaGFuZGxlcl9kZWZpbml0aW9uKToKKyAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRp
b24gc3RyaW5nLgorCisgICAgQXJnczoKKyAgICAgICAgaGFuZGxlcl9kZWZpbml0aW9uOiBhIHN0
cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVmaW5lCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCisgICAgIiIiCisKKyAgICBnbG9i
YWxfZGljID0ge30KKyAgICB0cnk6CisgICAgICAgICMgVGhpcyBzdGF0ZW1lbnQgaXMgZ3JhbWF0
aWNhbGx5IGRpZmZlcmVudCBpbiBweXRob24gMiBhbmQgMy4KKyAgICAgICAgIyBIZW5jZSwgeWFw
ZiB3aWxsIGNvbXBsYWluIGFib3V0IHRoaXMuIFRvIG92ZXJjb21lIHRoaXMsIHdlIGRpc2FibGUK
KyAgICAgICAgIyB5YXBmIGZvciB0aGlzIGxpbmUuCisgICAgICAgIGV4ZWMoaGFuZGxlcl9kZWZp
bml0aW9uLCBnbG9iYWxfZGljKSAjIHlhcGY6IGRpc2FibGUKKyAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFu
ZGxlcjonICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKKyAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCisg
ICAgdHJ5OgorICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0
cmFjdF9oYW5kbGVyKAorICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19I
QU5EU0hBS0VfSEFORExFUl9OQU1FKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHBh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKKyAgICAgICAgICAgIF9kZWZhdWx0
X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKKyAgICByZXR1cm4gX0hhbmRsZXJT
dWl0ZSgKKyAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFO
RFNIQUtFX0hBTkRMRVJfTkFNRSksCisgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKKyAgICAgICAgcGFzc2l2ZV9jbG9zaW5n
X2hhbmRzaGFrZV9oYW5kbGVyKQorCisKK2RlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6
CisgICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9t
IHRoZSBnaXZlbiBkaWN0aW9uYXJ5CisgICAgZGljLgorICAgICIiIgorCisgICAgaWYgbmFtZSBu
b3QgaW4gZGljOgorICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRl
ZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRpY1tuYW1lXQorICAgIGlmIG5vdCBjYWxs
YWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5v
dCBjYWxsYWJsZS4nICUgbmFtZSkKKyAgICByZXR1cm4gaGFuZGxlcgorCisKK2NsYXNzIERpc3Bh
dGNoZXIob2JqZWN0KToKKyAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KKwor
ICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5k
bGVycy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAg
cm9vdF9kaXIsCisgICAgICAgICAgICAgICAgIHNjYW5fZGlyPU5vbmUsCisgICAgICAgICAgICAg
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6CisgICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcm9vdF9k
aXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVzIGFyZQorICAg
ICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5fZGlyOiBUaGUgZGly
ZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAgICAgICAgICAgICAg
ICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciByb290
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9kaXIgaXRzZWxmLiAg
SWYgc2Nhbl9kaXIgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICByb290X2RpciBpcyB1
c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCisgICAgICAgICAgICAgICAg
ICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRhaW5zIG1hbnkKKyAg
ICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIGFsbG93X2hh
bmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmlsZXMgZXZlbiBpZiB0aGVp
cgorICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciByb290
X2Rpci4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5faGFuZGxlcl9zdWl0ZV9tYXAgPSB7fQor
ICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQorICAgICAgICBpZiBzY2FuX2RpciBp
cyBOb25lOgorICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2RpcgorICAgICAgICBpZiBub3Qg
b3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICBv
cy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4
Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMuJyAlIChzY2FuX2Rpciwg
cm9vdF9kaXIpKQorICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIocm9v
dF9kaXIsIHNjYW5fZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKKworICAgIGRlZiBhZGRfcmVzb3Vy
Y2VfcGF0aF9hbGlhcyhzZWxmLCBhbGlhc19yZXNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKKyAgICAgICAgIiIiQWRk
IHJlc291cmNlIHBhdGggYWxpYXMuCisKKyAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0byBh
bGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgaGFuZGxlciBy
ZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCisgICAg
ICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRoCisg
ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2Vs
Zi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KKyAgICAgICAgICAg
IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhdID0gaGFuZGxlcl9z
dWl0ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBEaXNwYXRj
aEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAgZGVmIHNvdXJjZV93
YXJuaW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5nIGhh
bmRsZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKKworICAg
IGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkRvIGV4
dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCisKKyAgICAgICAgU2VsZWN0IGEg
aGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKKyAgICAgICAgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAg
ICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKworICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQK
KyAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFi
b3J0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBvcGVu
aW5nIGhhbmRzaGFrZSBmYWlsZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgaGFuZGxlcl9zdWl0
ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAg
aWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQorICAgICAg
ICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRyYV9oYW5kc2hha2UK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0KQor
ICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24g
dG8gZmluaXNoIHRoaXMKKyAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcg
YW55IGVycm9yLgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24o
CisgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAnICUKKyAgICAg
ICAgICAgICAgICAoX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3Nf
cmVzb3VyY2UpLCBlKQorICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2Vw
dGlvbihlLCBjb21tb24uSFRUUF9TVEFUVVNfRk9SQklEREVOKQorCisgICAgZGVmIHRyYW5zZmVy
X2RhdGEoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkxldCBhIGhhbmRsZXIgdHJhbnNmZXJf
ZGF0YSB3aXRoIGEgV2ViU29ja2V0IGNsaWVudC4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVy
IGJhc2VkIG9uIHJlcXVlc3Qud3NfcmVzb3VyY2UgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSBmdW5jdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIERpc3BhdGNoRXhjZXB0aW9uOiB3aGVuIGhhbmRsZXIgd2FzIG5vdCBmb3VuZAorICAg
ICAgICAgICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbjogd2hlbiB1c2VyIGhhbmRsZXIgYWJvcnQg
Y29ubmVjdGlvbgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBUZXJt
aW5hdGUgdW5kZXJseWluZyBUQ1AgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4KKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVx
dWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6
ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSkKKyAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0ZS50
cmFuc2Zlcl9kYXRhCisgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyhyZXF1ZXN0KQorCisgICAg
ICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKyAgICAgICAgIyBDYXRjaCBu
b24tY3JpdGljYWwgZXhjZXB0aW9ucyB0aGUgaGFuZGxlciBkaWRuJ3QgaGFuZGxlLgorICAgICAg
ICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKKyAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIEludmFs
aWRGcmFtZUV4Y2VwdGlvbiBtdXN0IGJlIGNhdWdodCBiZWZvcmUKKyAgICAgICAgICAgICMgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gdGhhdCBjYXRjaGVzIEludmFsaWRGcmFtZUV4Y2Vw
dGlvbi4KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1BST1RP
Q09MX0VSUk9SKQorICAgICAgICBleGNlcHQgbXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19V
TlNVUFBPUlRFRF9EQVRBKQorICAgICAgICBleGNlcHQgc3RyZWFtLkludmFsaWRVVEY4RXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAg
ICAgY29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKKyAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAjIEFueSBvdGhlciBleGNlcHRpb25zIGFyZSBmb3J3YXJkZWQg
dG8gdGhlIGNhbGxlciBvZiB0aGlzCisgICAgICAgICAgICAjIGZ1bmN0aW9uLgorICAgICAgICAg
ICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICcl
cyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlCisgICAgICAgICAgICAgICAgKF9UUkFOU0ZF
Ul9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53c19yZXNvdXJjZSksIGUpCisgICAgICAgICAg
ICByYWlzZQorCisgICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciByZXNwb25kaW5nIGNs
aWVudCBpbml0aWF0ZWQgY2xvc2luZworICAgICAgICBoYW5kc2hha2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qu
d3NfcmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9jbG9zaW5nX2hhbmRz
aGFrZShyZXF1ZXN0KQorCisgICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNlbGYsIHJlc291cmNl
KToKKyAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZvciBleHRyYSBoYW5k
c2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQorICAgICAgICBmb3IgZGF0YSB0cmFuc2ZlcikgZm9y
IHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgZnJhZ21lbnQgPSBOb25lCisgICAgICAgIGlmICcjJyBpbiByZXNvdXJjZToK
KyAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNwbGl0KCcjJywgMSkK
KyAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgorICAgICAgICAgICAgcmVzb3VyY2UgPSByZXNv
dXJjZS5zcGxpdCgnPycsIDEpWzBdCisgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLl9oYW5k
bGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCisgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgYW5k
IGZyYWdtZW50OgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gV2ViU29j
a2V0IFVSSXMnLAorICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKKworICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKToK
KyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMgaW4gdGhlIHNj
YW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBpcyBkZXRlcm1p
bmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIGJ1
aWxkIGEgbWFwIGZyb20gcmVzb3VyY2UgdG8gaGFuZGxlciBjb2RlIGFzc3VtaW5nIHRoYXQgdGhl
cmUncworICAgICAgICAjIG9ubHkgb25lIHBhdGggZnJvbSByb290X2RpciB0byBzY2FuX2RpciBh
bmQgaXQgY2FuIGJlIG9idGFpbmVkIGJ5CisgICAgICAgICMgY29tcGFyaW5nIHJlYWxwYXRoIG9m
IHRoZW0uCisKKyAgICAgICAgIyBIZXJlIHdlIGNhbm5vdCB1c2UgYWJzcGF0aC4gU2VlCisgICAg
ICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjAzCisKKyAg
ICAgICAgY29udmVydCA9IF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocm9vdF9k
aXIpCisgICAgICAgIHNjYW5fcmVhbHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKQor
ICAgICAgICByb290X3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChyb290X2RpcikKKyAgICAg
ICAgZm9yIHBhdGggaW4gX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoc2Nhbl9yZWFscGF0
aCk6CisgICAgICAgICAgICBpZiAobm90IGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIg
YW5kCisgICAgICAgICAgICAgICAgKG5vdCBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpLnN0YXJ0c3dp
dGgocm9vdF9yZWFscGF0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
CisgICAgICAgICAgICAgICAgICAgICdDYW5vbmljYWwgcGF0aCBvZiAlcyBpcyBub3QgdW5kZXIg
cm9vdCBkaXJlY3RvcnknICUgcGF0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBoYW5kbGVyX2Zp
bGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfc3VpdGUgPSBfc291cmNlX2hhbmRsZXJf
ZmlsZShoYW5kbGVyX2ZpbGUucmVhZCgpKQorICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzLmFwcGVu
ZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcmVzb3VyY2UgPSBjb252ZXJ0KHBhdGgpCisgICAgICAgICAgICBpZiByZXNvdXJjZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUGF0aCB0byByZXNv
dXJjZSBjb252ZXJzaW9uIG9uICVzIGZhaWxlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJfc3VpdGUKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L2V4dGVuc2lvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0NTM5ZjZmY2UxNGJlZTY1ZDdmYTdhNTgzYWNi
YjY1ZjAyM2FmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9leHRlbnNpb25zLnB5CkBAIC0wLDAgKzEsNDczIEBACisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldC5odHRwX2hlYWRlcl91dGlsIGltcG9ydCBxdW90ZV9pZl9uZWNl
c3NhcnkKKworIyBUaGUgbGlzdCBvZiBhdmFpbGFibGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHBy
b2Nlc3NvciBjbGFzc2VzLgorX2F2YWlsYWJsZV9wcm9jZXNzb3JzID0ge30KKworCitjbGFzcyBF
eHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYu
X2FjdGl2ZSA9IFRydWUKKworICAgIGRlZiByZXF1ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5fcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBOb25l
CisKKyAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhlcl9wcm9jZXNzb3JzKHNlbGYs
IHByb2Nlc3NvcnMpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0X2FjdGl2ZShzZWxmLCBh
Y3RpdmUpOgorICAgICAgICBzZWxmLl9hY3RpdmUgPSBhY3RpdmUKKworICAgIGRlZiBpc19hY3Rp
dmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgIGRlZiBfZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgIGRlZiBnZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHRlbnNpb24gJXMg
aXMgZGVhY3RpdmF0ZWQnLCBzZWxmLm5hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFs
KCkKKyAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2
ZSA9IEZhbHNlCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIF9zZXR1cF9zdHJl
YW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBzZXR1cF9zdHJlYW1fb3B0aW9ucyhzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Cisg
ICAgICAgIGlmIHNlbGYuX2FjdGl2ZToKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX3N0cmVhbV9v
cHRpb25zX2ludGVybmFsKHN0cmVhbV9vcHRpb25zKQorCisKK2RlZiBfbG9nX291dGdvaW5nX2Nv
bXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6CisgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxv
YXQoJ2luZicpCisgICAgaWYgb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8gPSBm
bG9hdChmaWx0ZXJlZF9ieXRlcykgLyBvcmlnaW5hbF9ieXRlcworCisgICAgbG9nZ2VyLmRlYnVn
KCdPdXRnb2luZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAg
ICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfbG9nX2luY29taW5n
X2NvbXByZXNzaW9uX3JhdGlvKGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZV9yYXRpbyk6Cisg
ICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0g
ZmxvYXQoJ2luZicpCisgICAgaWYgZmlsdGVyZWRfYnl0ZXMgIT0gMDoKKyAgICAgICAgcmF0aW8g
PSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBmaWx0ZXJlZF9ieXRlcworCisgICAgbG9nZ2VyLmRl
YnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAg
ICAgICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQorCisKK2RlZiBfcGFyc2Vfd2lu
ZG93X2JpdHMoYml0cyk6CisgICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVlIGlmZiB0
aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQorICAgIGdyYW1tYXIgb2YgdGhlIHdpbmRv
dyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgorICAgICIiIgorCisgICAgaWYgYml0cyBpcyBO
b25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcpCisKKyAg
ICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJyb3Igd2ls
bCBiZSByYWlzZWQuCisgICAgaW50X2JpdHMgPSBpbnQoYml0cykKKworICAgICMgRmlyc3QgY29u
ZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgorICAgIGlmIGJp
dHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAxNToKKyAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykKKworICAg
IHJldHVybiBpbnRfYml0cworCisKK2NsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKG9iamVj
dCk6CisgICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1bHQgZGF0
YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQorICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJhdGlvLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdG90YWxfb3Jp
Z2luYWxfYnl0ZXMgPSAwCisgICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKKwor
ICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQorCisgICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMo
c2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUK
KworICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fdG90
YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5f
dG90YWxfcmVzdWx0X2J5dGVzKSAvCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29y
aWdpbmFsX2J5dGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdp
bmYnKQorCisKK2NsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVu
c2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIicGVybWVzc2FnZS1kZWZsYXRlIGV4dGVu
c2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAgIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHliaS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTA4Cisg
ICAgIiIiCisKKyAgICBfU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSA9ICdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJworICAgIF9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSA9ICdjbGllbnRfbWF4X3dpbmRvd19iaXRzJworICAgIF9DTElFTlRfTk9fQ09OVEVYVF9U
QUtFT1ZFUl9QQVJBTSA9ICdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLiIiIgorCisgICAgICAgIEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICMg
VGhpcyBtZXRob2QgcmV0dXJucyAiZGVmbGF0ZSIgKG5vdCAicGVybWVzc2FnZS1kZWZsYXRlIikg
Zm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgcmV0dXJuICdkZWZsYXRlJwor
CisgICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgorICAgICAg
ICBmb3IgbmFtZSBpbiBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKToKKyAgICAg
ICAgICAgIGlmIG5hbWUgbm90IGluIFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X01BWF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVS
X05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX0NM
SUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0KKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFtZXRlcjogJXInLCBuYW1lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0
cyA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1NF
UlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgorICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAg
ICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93
X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCisgICAg
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCisgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkKKyAgICAgICAgaWYgKHNlcnZlcl9ub19j
b250ZXh0X3Rha2VvdmVyIGFuZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisg
ICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlz
IG5vdCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJvbSBh
IGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgorICAgICAgICAjIGFjY2Vw
dCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgorICAgICAgICBj
bGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRl
cigKKyAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCisgICAg
ICAgIGlmIChjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cworICAgICAgICAgICAgICAgIGFu
ZCBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pIGlzIG5vdCBOb25lKToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnJXMgcGFyYW1ldGVy
IG11c3Qgbm90IGhhdmUgYSB2YWx1ZSBpbiBhICcKKyAgICAgICAgICAgICAgICAnY2xpZW50XCdz
IG9wZW5pbmcgaGFuZHNoYWtlOiAlcicsCisgICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01B
WF9XSU5ET1dfQklUU19QQVJBTSwKKyAgICAgICAgICAgICAgICBjbGllbnRfY2xpZW50X21heF93
aW5kb3dfYml0cykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5fcmZj
MTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIHNlcnZl
cl9tYXhfd2luZG93X2JpdHMsIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQorCisgICAgICAg
ICMgTm90ZSB0aGF0IHdlIHByZXBhcmUgZm9yIGluY29taW5nIG1lc3NhZ2VzIGNvbXByZXNzZWQg
d2l0aCB3aW5kb3cKKyAgICAgICAgIyBiaXRzIHVwdG8gMTUgcmVnYXJkbGVzcyBvZiB0aGUgY2xp
ZW50X21heF93aW5kb3dfYml0cyB2YWx1ZSB0byBiZQorICAgICAgICAjIHNlbnQgdG8gdGhlIGNs
aWVudC4KKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fZnJhbWVyID0gX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVy
KHNlcnZlcl9tYXhfd2luZG93X2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKKyAgICAgICAgc2Vs
Zi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29t
cHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQorCisgICAgICAgIHJlc3BvbnNlID0gY29tbW9u
LkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKworICAgICAgICBpZiBz
ZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2Uu
YWRkX3BhcmFtZXRlcihzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX21heF93aW5kb3dfYml0cykp
CisKKyAgICAgICAgaWYgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI6CisgICAgICAgICAgICBy
ZXNwb25zZS5hZGRfcGFyYW1ldGVyKHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BB
UkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisgICAgICAg
IGlmIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgaWYgbm90IGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRzOgorICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgJ1Byb2Nl
c3NvciBpcyBjb25maWd1cmVkIHRvIHVzZSAlcyBidXQgJworICAgICAgICAgICAgICAgICAgICAn
dGhlIGNsaWVudCBjYW5ub3QgYWNjZXB0IGl0JywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Q0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTUFYX1dJ
TkRPV19CSVRTX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQorCisgICAgICAgIGlmIHNl
bGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgorICAgICAgICAgICAgcmVzcG9uc2UuYWRk
X3BhcmFtZXRlcihzZWxmLl9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKworICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZXF1ZXN0OiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPSVzOyAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXNwb25zZTogY2xpZW50X21heF93aW5kb3dfYml0cz0lczsg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
PSVyKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgp
LCBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKSkKKworICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UKKworICAgIGRlZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwo
c2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBzZWxmLl9mcmFtZXIuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgc2V0X2NsaWVudF9tYXhfd2luZG93
X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZp
ZWQsIHRoaXMgY2xhc3MgYWRkcyB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5kb3dfYml0cyBl
eHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBoYW5kc2hha2UgcmVzcG9uc2UsCisgICAgICAgIGJ1
dCBkb2Vzbid0IHJlZHVjZSB0aGUgTFo3NyBzbGlkaW5nIHdpbmRvdyBzaXplIG9mIGl0cyBpbmZs
YXRlci4KKyAgICAgICAgSS5lLiwgeW91IGNhbiB1c2UgdGhpcyBmb3IgdGVzdGluZyBjbGllbnQg
aW1wbGVtZW50YXRpb24gYnV0IGNhbm5vdAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9m
IHRoaXMgY2xhc3MuCisKKyAgICAgICAgSWYgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIHdp
dGggVHJ1ZSBhbmQgYW4gb2ZmZXIgd2l0aG91dCB0aGUKKyAgICAgICAgY2xpZW50X21heF93aW5k
b3dfYml0cyBleHRlbnNpb24gcGFyYW1ldGVyIGlzIHJlY2VpdmVkLAorICAgICAgICAtIChXaGVu
IHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24pIHRoaXMgcHJvY2Vz
c29yCisgICAgICAgICAgZGVjbGluZXMgdGhlIHJlcXVlc3QuCisgICAgICAgIC0gKFdoZW4gcHJv
Y2Vzc2luZyB0aGUgcGVybWVzc2FnZS1jb21wcmVzcyBleHRlbnNpb24pIHRoaXMgcHJvY2Vzc29y
CisgICAgICAgICAgYWNjZXB0cyB0aGUgcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSB2YWx1ZQorCisgICAgZGVm
IHNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6CisgICAgICAgICIi
IklmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjbGFzcyBhZGRzIHRoZQorICAgICAg
ICBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBleHRlbnNpb24gcGFyYW1ldGVyIHRvIHRoZSBo
YW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2UsIGJ1dCBkb2Vzbid0IHJlc2V0IGluZmxhdGVyIGZv
ciBlYWNoIG1lc3NhZ2UuIEkuZS4sIHlvdSBjYW4KKyAgICAgICAgdXNlIHRoaXMgZm9yIHRlc3Rp
bmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QgcmVkdWNlIG1lbW9yeQorICAgICAg
ICB1c2FnZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9jbGll
bnRfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBkZWYgc2V0X2JmaW5hbChzZWxm
LCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfYmZpbmFsKHZhbHVlKQorCisgICAg
ZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJh
bWVyLnNldF9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkKFRydWUpCisKKyAgICBkZWYgZGlzYWJs
ZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkKEZhbHNlKQorCisKK2NsYXNzIF9QZXJNZXNzYWdlRGVm
bGF0ZUZyYW1lcihvYmplY3QpOgorICAgICIiIkEgZnJhbWVyIGZvciBleHRlbnNpb25zIHdpdGgg
cGVyLW1lc3NhZ2UgREVGTEFURSBmZWF0dXJlLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
ZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAg
ICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAg
ICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92
ZXIpCisKKyAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZs
YXRlcigpCisKKyAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFsc2UKKworICAgICAgICBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKKworICAgICAgICAjIFRydWUgaWYgYSBt
ZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9uIGlzIG9uZ29pbmcuCisgICAgICAg
IHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQorCisgICAgICAgICMgQ2FsY3VsYXRlcwor
ICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0
ZXIpIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0
ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCisgICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2Vf
cmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkKKworICAgICAgICAj
IENhbGN1bGF0ZXMKKyAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhl
IG5ldHdvcmspIC8KKyAgICAgICAgIyAgICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVk
IGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCisKKyAgICBk
ZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVl
CisKKyAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgor
ICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gdmFsdWUKKworICAgIGRl
ZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgor
ICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKKyAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCisK
KyAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCisgICAgICAgIHNl
bGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAor
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9yZmMxOTc5X2luZmxhdGVyLmZpbHRlcihtZXNzYWdlKQorCisgICAgICAgIGZpbHRlcmVk
X3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVy
YWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAorICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplKQorCisgICAgICAgIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25f
cmF0aW8oCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCisKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2UKKworICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIGVuZCwgYmluYXJ5KToKKyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgIG1l
c3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9j
b21wcmVzc19vdXRnb2luZ19lbmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKwor
ICAgICAgICBvcmlnaW5hbF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2Vs
Zi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygK
KyAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcmZjMTk3OV9kZWZsYXRlci5maWx0ZXIobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD1lbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmluYWw9c2VsZi5fYmZpbmFsKQorCisg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdlKQorICAgICAgICBzZWxm
Ll9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKKyAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSkKKworICAgICAgICBfbG9nX291dGdvaW5n
X2NvbXByZXNzaW9uX3JhdGlvKAorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLCBvcmlnaW5hbF9w
YXlsb2FkX3NpemUsIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5nZXRfYXZlcmFnZV9yYXRpbygpKQorCisg
ICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vbmdvaW5nOgorICAgICAgICAgICAgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQoKQorICAgICAgICBzZWxm
Ll9jb21wcmVzc19vbmdvaW5nID0gbm90IGVuZAorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisg
ICAgZGVmIF9wcm9jZXNzX2luY29taW5nX2ZyYW1lKHNlbGYsIGZyYW1lKToKKyAgICAgICAgaWYg
ZnJhbWUucnN2MSA9PSAxIGFuZCBub3QgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9w
Y29kZSk6CisgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19tZXNzYWdlX2ZpbHRlci5kZWNvbXBy
ZXNzX25leHRfbWVzc2FnZSgpCisgICAgICAgICAgICBmcmFtZS5yc3YxID0gMAorCisgICAgZGVm
IF9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKHNlbGYsIGZyYW1lLCBjb21wcmVzc2lvbl9iaXQpOgor
ICAgICAgICBpZiAobm90IGNvbXByZXNzaW9uX2JpdCBvciBjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmcmFtZS5y
c3YxID0gMQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRp
b25zKToKKyAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0
cmVhbU9wdGlvbnMuIiIiCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIob2Jq
ZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNl
bGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2FnZSgKKyAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSwgZW5kLCBiaW5hcnkpCisKKyAgICAgICAgY2xhc3MgX0luY29taW5n
TWVzc2FnZUZpbHRlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Cisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0ID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIHNldF9jb21wcmVzc2lvbl9iaXQoc2Vs
Zik6CisgICAgICAgICAgICAgICAgc2VsZi5fc2V0X2NvbXByZXNzaW9uX2JpdCA9IFRydWUKKwor
ICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKGZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Np
b25fYml0KQorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxz
ZQorCisgICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Cisg
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKGZyYW1l
KQorCisgICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IF9PdXRnb2luZ0ZyYW1l
RmlsdGVyKHNlbGYpCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IF9JbmNv
bWluZ0ZyYW1lRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyKQorICAgICAgICBzdHJlYW1fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzLmFwcGVu
ZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlcikKKworICAgICAgICBz
dHJlYW1fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBGYWxzZQorCisKK19h
dmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTl0g
PSAoCisgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCisKKworZGVmIGdl
dF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToKKyAgICAiIiJHaXZlbiBh
biBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVuc2lvbiBvZmZlciByZWNl
aXZlZAorICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBleHRlbnNpb24gcHJvY2Vzc29yIGNsYXNzLgor
ICAgICIiIgorCisgICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJsZV9wcm9jZXNzb3JzLmdl
dChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCisgICAgaWYgcHJvY2Vzc29yX2NsYXNzIGlzIE5v
bmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHByb2Nlc3Nvcl9jbGFzcyhleHRl
bnNpb25fcmVxdWVzdCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL21vZF9weXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGFhZDI3
ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCkBAIC0wLDAgKzEs
OTggQEAKKy8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisl
bW9kdWxlIGZhc3RfbWFza2luZworCislaW5jbHVkZSAiY3N0cmluZy5pIgorCisleworI2luY2x1
ZGUgPGNzdHJpbmc+CisKKyNpZmRlZiBfX1NTRTJfXworI2luY2x1ZGUgPGVtbWludHJpbi5oPgor
I2VuZGlmCislfQorCislYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgeworICAgIChj
b25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAorICAgIChjb25zdCBjaGFy
KiBtYXNraW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKKyVjc3RyaW5nX291dHB1
dF9hbGxvY2F0ZV9zaXplKAorICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwg
ZGVsZXRlIFtdICokMSk7CisKKyVpbmxpbmUgJXsKKwordm9pZCBtYXNrKAorICAgIGNvbnN0IGNo
YXIqIHBheWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKKyAgICBjb25zdCBjaGFyKiBtYXNraW5n
X2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKKyAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgs
CisgICAgY2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7CisgICpyZXN1bHQgPSBu
ZXcgY2hhcltwYXlsb2FkX2xlbmd0aF07CisgICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5n
dGg7CisgIG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7CisKKyAgY2hh
ciogY3Vyc29yID0gKnJlc3VsdDsKKyAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVz
dWx0X2xlbmd0aDsKKworI2lmZGVmIF9fU1NFMl9fCisgIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29y
X2VuZCkgJiYKKyAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4
ZikpIHsKKyAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKKyAg
ICArK2N1cnNvcjsKKyAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCAr
IDEpICUgbWFza2luZ19rZXlfbGVuZ3RoOworICB9CisgIGlmIChjdXJzb3IgPT0gY3Vyc29yX2Vu
ZCkgeworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Cisg
IF9fbTEyOGkgbWFza2luZ19rZXlfYmxvY2s7CisgIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2Nr
U2l6ZTsgKytpKSB7CisgICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlf
YmxvY2spICsgaSkgPQorICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Cisg
ICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdf
a2V5X2xlbmd0aDsKKyAgfQorCisgIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNv
cl9lbmQpIHsKKyAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQorICAgICAgICBfbW1fbG9hZF9z
aTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKKyAgICBfbW1fc3RyZWFt
X3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCisgICAgICAgICAgICAg
ICAgICAgICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7
CisgICAgY3Vyc29yICs9IGtCbG9ja1NpemU7CisgIH0KKyNlbmRpZgorCisgIHdoaWxlIChjdXJz
b3IgPCBjdXJzb3JfZW5kKSB7CisgICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tl
eV9pbmRleF07CisgICAgKytjdXJzb3I7CisgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2lu
Z19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKKyAgfQorfQorCislfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiZTVhZTlmZGZkNDZkMTg5NzBiZjk5MmNjMWFkZWEyNWFj
YzVmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMgQ29weXJpZ2h0IDIw
MTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorIiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4gVGhpcyBjbGFzcyB0
cnkgdG8gYXBwbHkgYXZhaWxhYmxlCitvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBl
YWNoIHByb3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCitzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
K2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaQorIyBFeHBvcnQgQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbiwgSGFuZHNoYWtlRXhjZXB0aW9uLCBhbmQgVmVyc2lvbkV4Y2Vw
dGlvbgorIyBzeW1ib2wgZnJvbSB0aGlzIG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgor
CitfTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworZGVmIGRvX2hhbmRz
aGFrZShyZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAiIiJQZXJmb3JtcyBXZWJTb2NrZXQgaGFu
ZHNoYWtlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0
LgorICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4K
KworICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNl
IGluIHBlcmZvcm1pbmcKKyAgICBoYW5kc2hha2UuCisgICAgIiIiCisKKyAgICBfTE9HR0VSLmRl
YnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgcmVzb3VyY2U6ICVyJywgcmVxdWVzdC51
cmkpCisgICAgIyBUbyBwcmludCBtaW1ldG9vbHMuTWVzc2FnZSBhcyBlc2NhcGVkIG9uZS1saW5l
IHN0cmluZywgd2UgY29udmVydHMKKyAgICAjIGhlYWRlcnNfaW4gdG8gZGljdCBvYmplY3QuIFdp
dGhvdXQgY29udmVyc2lvbiwgaWYgd2UgdXNlICVyLCBpdCBqdXN0CisgICAgIyBwcmludHMgdGhl
IHR5cGUgYW5kIGFkZHJlc3MsIGFuZCBpZiB3ZSB1c2UgJXMsIGl0IHByaW50cyB0aGUgb3JpZ2lu
YWwKKyAgICAjIGhlYWRlciBzdHJpbmcgYXMgbXVsdGlwbGUgbGluZXMuCisgICAgIworICAgICMg
Qm90aCBtaW1ldG9vbHMuTWVzc2FnZSBhbmQgTXBUYWJsZV9UeXBlIG9mIG1vZF9weXRob24gY2Fu
IGJlCisgICAgIyBjb252ZXJ0ZWQgdG8gZGljdC4KKyAgICAjCisgICAgIyBtaW1ldG9vbHMuTWVz
c2FnZS5fX3N0cl9fIHJldHVybnMgdGhlIG9yaWdpbmFsIGhlYWRlciBzdHJpbmcuCisgICAgIyBk
aWN0KG1pbWV0b29scy5NZXNzYWdlIG9iamVjdCkgcmV0dXJucyB0aGUgbWFwIGZyb20gaGVhZGVy
IG5hbWVzIHRvCisgICAgIyBoZWFkZXIgdmFsdWVzLiBXaGlsZSBNcFRhYmxlX1R5cGUgZG9lc24n
dCBoYXZlIHN1Y2ggX19zdHJfXyBidXQganVzdAorICAgICMgX19yZXByX18gd2hpY2ggZm9ybWF0
cyBpdHNlbGYgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgICBfTE9HR0VSLmRlYnVn
KCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAorICAgICAgICAgICAg
ICAgICAgZGljdChyZXF1ZXN0LmhlYWRlcnNfaW4pKQorCisgICAgaGFuZHNoYWtlcnMgPSBbXQor
ICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgoJ1JGQyA2NDU1JywgaHliaS5IYW5kc2hha2VyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpKSkKKworICAgIGZvciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFr
ZXJzOgorICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycs
IG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKKyAgICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVzIHByb3RvY29sKScs
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2Vw
dGlvbiBhcyBlOgorICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKKyAgICAgICAgICAgICAgICAn
RmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcics
CisgICAgICAgICAgICAgICAgbmFtZSwgZSkKKyAgICAgICAgICAgIGlmIGUuc3RhdHVzOgorICAg
ICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0
aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZQorCisgICAgIyBUT0RPKHRveW9zaGltKTogQWRk
IGEgdGVzdCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFpbC4KKyAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3Blbmlu
ZyBoYW5kc2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKKyAgICAgICAgc3RhdHVz
PWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKKworCisjIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19i
YXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1OGRkOGQ0OTdkOWQ4OWRkOWMxMDQzMmJjZGJhM2U5MDNlMWI2
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CkBAIC0wLDAgKzEsMTc5IEBACisjIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIi
IkNvbW1vbiBmdW5jdGlvbnMgYW5kIGV4Y2VwdGlvbnMgdXNlZCBieSBXZWJTb2NrZXQgb3Blbmlu
ZyBoYW5kc2hha2UKK3Byb2Nlc3NvcnMuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCisKKworY2xhc3MgQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRp
bmcgYSBjb25uZWN0aW9uIGludGVudGlvbmFsbHkuCisKKyAgICBJZiB0aGlzIGV4Y2VwdGlvbiBp
cyByYWlzZWQgaW4gZG9fZXh0cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCisg
ICAgd2lsbCBiZSBhYmFuZG9uZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRs
ZXIgd2lsbCBiZSBpbnZva2VkLgorCisgICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlu
IHRyYW5zZmVyX2RhdGFfaGFuZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAorICAgIGJlIGNsb3Nl
ZCB3aXRob3V0IGNsb3NpbmcgaGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChT
KSBoYW5kbGVyCisgICAgd2lsbCBiZSBpbnZva2VkLgorICAgICIiIgorCisgICAgcGFzcworCisK
K2NsYXNzIEhhbmRzaGFrZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMgZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2lu
ZworICAgIFdlYlNvY2tldCBpbml0aWFsIGhhbmRzaGFrZS4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgc3RhdHVzPU5vbmUpOgorICAgICAgICBzdXBlcihIYW5kc2hha2VF
eGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3Rh
dHVzCisKKworY2xhc3MgVmVyc2lvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlRoaXMg
ZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSB2ZXJzaW9uIG9mIGNsaWVudCByZXF1ZXN0
IGRvZXMgbm90CisgICAgbWF0Y2ggd2l0aCB2ZXJzaW9uIHRoZSBzZXJ2ZXIgc3VwcG9ydHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0n
Jyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgor
ICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEgc3RyIG9iamVjdCB0byBzaG93IHN1cHBv
cnRlZCBoeWJpIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcu
ICcxMycpCisgICAgICAgICIiIgorICAgICAgICBzdXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxm
KS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBv
cnRlZF92ZXJzaW9ucworCisKK2RlZiBnZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6CisgICAg
aWYgaXNfc2VjdXJlOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9T
RUNVUkVfUE9SVAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQKKworCitkZWYgdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgor
ICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmll
bGQuCisKKyAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMg
NjQ1NS4KKyAgICAiIiIKKworICAgIGlmIG5vdCBzdWJwcm90b2NvbDoKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29sIG5hbWU6IGVtcHR5JykKKwor
ICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNvZGVkIEhUVFAgdG9rZW4uCisgICAgc3RhdGUg
PSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShzdWJwcm90b2NvbCkKKyAgICB0b2tlbiA9
IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICByZXN0ID0gaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQorICAgICMgSWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3Vi
cHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3IgaW52YWxpZC4gSWYKKyAgICAjIHxyZXN0fCBp
cyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlz
CisgICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5v
bmUuCisgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJpbmcgaW4gc3VicHJvdG9jb2wgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU6ICVyJyAlIHJlc3QpCisKKworZGVmIHBh
cnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgorICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19p
bltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6JywgMSkKKyAgICBpZiBsZW4oZmllbGRzKSA9
PSAxOgorICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3Qu
aXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVs
ZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUgZSkKKworCitk
ZWYgZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSk6CisgICAgcmV0dXJuIHUnJXM6ICVzXHJcbicg
JSAobmFtZSwgdmFsdWUpCisKKworZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSk6CisgICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKKyAgICBpZiB2YWx1
ZSBpcyBOb25lOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBp
cyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIHZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0
dXM9Tm9uZSk6CisgICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkp
CisKKyAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6CisgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICdFeHBlY3RlZCAlciBm
b3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKKyAgICAgICAg
ICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSksCisgICAgICAgICAgICBzdGF0dXM9ZmFp
bF9zdGF0dXMpCisKKworZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KToKKyAgICAjIDUu
MSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4KKyAgICAjIDUuMSAy
LiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRlKS4KKyAg
ICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSB1J0dFVCc6CisgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisgICAg
aWYgcmVxdWVzdC5wcm90b2NvbCAhPSB1J0hUVFAvMS4xJzoKKyAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCisKKworZGVmIHBhcnNlX3Rv
a2VuX2xpc3QoZGF0YSk6CisgICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxv
d3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKKyAgICBhcyBhIGxpc3Qgb2Yg
c3RyaW5ncy4KKworICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgorICAgICIiIgor
CisgICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQorCisgICAg
dG9rZW5fbGlzdCA9IFtdCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0b2tlbiA9IGh0dHBf
aGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90
IE5vbmU6CisgICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKKworICAgICAgICBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCisKKyAgICAgICAgaWYgaHR0cF9o
ZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKworICAg
ICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRXhwZWN0ZWQgYSBjb21tYSBi
dXQgZm91bmQgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRw
X2hlYWRlcl91dGlsLnBlZWsoc3RhdGUpKQorCisgICAgICAgIGh0dHBfaGVhZGVyX3V0aWwuY29u
c3VtZV9sd3NlcyhzdGF0ZSkKKworICAgIGlmIGxlbih0b2tlbl9saXN0KSA9PSAwOgorICAgICAg
ICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ05vIHZhbGlkIHRva2VuIGZvdW5kJykKKworICAg
IHJldHVybiB0b2tlbl9saXN0CisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZkNjNlYjYzZWRkMWY0YWNmODg3ZGYzNWQ0YmRjM2I2ZTEzOTkxNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5w
eQpAQCAtMCwwICsxLDM5NSBAQAorIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUaGlzIGZpbGUgcHJvdmlk
ZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAorcHJv
dG9jb2wgKFJGQyA2NDU1KS4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzY0NTUKKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydAoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJl
Citmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVu
c2lvbl9wcm9jZXNzb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBv
cnQgY2hlY2tfcmVxdWVzdF9saW5lCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5f
YmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKK2Zyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHBhcnNlX3Rva2VuX2xpc3QKK2Zyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRl
cgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9z
dWJwcm90b2NvbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBW
ZXJzaW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAor
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCisKKyMgVXNlZCB0byB2YWxpZGF0ZSB0aGUgdmFs
dWUgaW4gdGhlIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlciBzdHJpY3RseS4gUkZDIDQ2NDgKKyMg
ZGlzYWxsb3dzIG5vbi16ZXJvIHBhZGRpbmcsIHNvIHRoZSBjaGFyYWN0ZXIgcmlnaHQgYmVmb3Jl
ID09IG11c3QgYmUgYW55IG9mCisjIEEsIFEsIGcgYW5kIHcuCitfU0VDX1dFQlNPQ0tFVF9LRVlf
UkVHRVggPSByZS5jb21waWxlKCdeWysvMC05QS1aYS16XXsyMX1bQVFnd109PSQnKQorCisjIERl
ZmluaW5nIGFsaWFzZXMgZm9yIHZhbHVlcyB1c2VkIGZyZXF1ZW50bHkuCitfVkVSU0lPTl9MQVRF
U1QgPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAorX1ZFUlNJT05fTEFURVNUX1NUUklORyA9
IHN0cihfVkVSU0lPTl9MQVRFU1QpCitfU1VQUE9SVEVEX1ZFUlNJT05TID0gWworICAgIF9WRVJT
SU9OX0xBVEVTVCwKK10KKworCitkZWYgY29tcHV0ZV9hY2NlcHQoa2V5KToKKyAgICAiIiJDb21w
dXRlcyB2YWx1ZSBmb3IgdGhlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBmcm9tIHZhbHVl
IG9mIHRoZQorICAgIFNlYy1XZWJTb2NrZXQtS2V5IGhlYWRlci4KKyAgICAiIiIKKworICAgIGFj
Y2VwdF9iaW5hcnkgPSBzaGExKGtleSArIGNvbW1vbi5XRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRp
Z2VzdCgpCisgICAgYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShhY2NlcHRfYmluYXJ5KQorCisg
ICAgcmV0dXJuIGFjY2VwdAorCisKK2RlZiBjb21wdXRlX2FjY2VwdF9mcm9tX3VuaWNvZGUodW5p
Y29kZV9rZXkpOgorICAgICIiIkEgd3JhcHBlciBmdW5jdGlvbiBmb3IgY29tcHV0ZV9hY2NlcHQg
d2hpY2ggdGFrZXMgYSB1bmljb2RlIHN0cmluZyBhcyBhbgorICAgIGFyZ3VtZW50LCBhbmQgZW5j
b2RlcyBpdCB0byBieXRlIHN0cmluZy4gSXQgdGhlbiBwYXNzZXMgaXQgb24gdG8KKyAgICBjb21w
dXRlX2FjY2VwdC4KKyAgICAiIiIKKworICAgIGtleSA9IHVuaWNvZGVfa2V5LmVuY29kZSgnVVRG
LTgnKQorICAgIHJldHVybiBjb21wdXRlX2FjY2VwdChrZXkpCisKKworY2xhc3MgSGFuZHNoYWtl
cihvYmplY3QpOgorICAgICIiIk9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdl
YlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCBkaXNwYXRjaGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qu
CisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVy
KS4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19y
ZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl9s
b2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgorCisg
ICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgY29ubmVj
dGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uQ09OTkVDVElPTl9IRUFERVIpCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29ubmVjdGlvbl90b2tlbnMgPSBwYXJzZV90b2tl
bl9saXN0KGNvbm5lY3Rpb24pCisgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignRmFpbGVkIHRvIHBhcnNl
ICVzOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tb24u
Q09OTkVDVElPTl9IRUFERVIsIGUpKQorCisgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBG
YWxzZQorICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6CisgICAgICAgICAg
ICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRS5sb3dl
cigpOgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBUcnVlCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNfdmFsaWQ6CisgICAg
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJyVzIGhl
YWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKKyAgICAgICAgICAgICAgICAoY29tbW9uLkNP
Tk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQorCisgICAg
ZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9j
b2RlID0gTm9uZQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IE5vbmUK
KworICAgICAgICAjIFBhcnNpbmcuCisKKyAgICAgICAgY2hlY2tfcmVxdWVzdF9saW5lKHNlbGYu
X3JlcXVlc3QpCisKKyAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1
ZXN0LCBjb21tb24uVVBHUkFERV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEUpCisKKyAgICAgICAgc2VsZi5fdmFs
aWRhdGVfY29ubmVjdGlvbl9oZWFkZXIoKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVz
b3VyY2UgPSBzZWxmLl9yZXF1ZXN0LnVyaQorCisgICAgICAgIHVudXNlZF9ob3N0ID0gZ2V0X21h
bmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwgY29tbW9uLkhPU1RfSEVBREVSKQorCisgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiA9IHNlbGYuX2NoZWNrX3ZlcnNpb24oKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2dldF9vcmlnaW4oKQorICAgICAgICAgICAg
c2VsZi5fc2V0X3Byb3RvY29sKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX2V4dGVuc2lvbnMo
KQorCisgICAgICAgICAgICAjIEtleSB2YWxpZGF0aW9uLCByZXNwb25zZSBnZW5lcmF0aW9uLgor
CisgICAgICAgICAgICBrZXkgPSBzZWxmLl9nZXRfa2V5KCkKKyAgICAgICAgICAgIGFjY2VwdCA9
IGNvbXB1dGVfYWNjZXB0KGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6
ICVyICglcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1dGlsLmhleGlmeShiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkpKQorCisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQorCisg
ICAgICAgICAgICAjIFNldHVwIGV4dGVuc2lvbiBwcm9jZXNzb3JzLgorCisgICAgICAgICAgICBw
cm9jZXNzb3JzID0gW10KKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVk
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9y
ZXF1ZXN0IGluIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6CisgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NvciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lv
bl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVl
c3RzIGFyZSBqdXN0IGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHBy
b2Nlc3NvcikKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMgPSBwcm9jZXNzb3JzCisKKyAgICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBU
aGUgZXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IGFkZCBoZWFkZXIKKyAgICAgICAgICAgICMg
ZGF0YSBhcyBuYW1lL3ZhbHVlIHBhaXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBw
ZW5kcworICAgICAgICAgICAgIyB0aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgorICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5leHRyYV9oZWFkZXJzID0gW10KKworICAgICAgICAgICAg
IyBFeHRyYSBoYW5kc2hha2UgaGFuZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgor
ICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVx
dWVzdCkKKyAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBbCisgICAgICAgICAgICAgICAgcHJvY2Vz
c29yCisgICAgICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiBzZWxmLl9yZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzCisgICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yIGlzIG5vdCBO
b25lCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgICMgQXNrIGVhY2ggcHJvY2Vzc29yIGlm
IHRoZXJlIGFyZSBleHRlbnNpb25zIG9uIHRoZSByZXF1ZXN0IHdoaWNoCisgICAgICAgICAgICAj
IGNhbm5vdCBjby1leGlzdC4gV2hlbiBwcm9jZXNzb3IgZGVjaWRlZCBvdGhlciBwcm9jZXNzb3Jz
IGNhbm5vdAorICAgICAgICAgICAgIyBjby1leGlzdCB3aXRoIGl0LCB0aGUgcHJvY2Vzc29yIG1h
cmtzIHRoZW0gKG9yIGl0c2VsZikgYXMKKyAgICAgICAgICAgICMgImluYWN0aXZlIi4gVGhlIGZp
cnN0IGV4dGVuc2lvbiBwcm9jZXNzb3IgaGFzIHRoZSByaWdodCB0bworICAgICAgICAgICAgIyBt
YWtlIHRoZSBmaW5hbCBjYWxsLgorICAgICAgICAgICAgZm9yIHByb2Nlc3NvciBpbiByZXZlcnNl
ZChwcm9jZXNzb3JzKToKKyAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6
CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5jaGVja19jb25zaXN0ZW5jeV93aXRoX290
aGVyX3Byb2Nlc3NvcnMoCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQorICAg
ICAgICAgICAgcHJvY2Vzc29ycyA9IFsKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3IgZm9yIHBy
b2Nlc3NvciBpbiBwcm9jZXNzb3JzIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKQorICAgICAgICAg
ICAgXQorCisgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KKworICAgICAgICAg
ICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKworICAgICAgICAgICAgZm9yIGlu
ZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAg
IGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3Bv
bnNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgUmVqZWN0ZWQuCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25z
LmFwcGVuZChleHRlbnNpb25fcmVzcG9uc2UpCisKKyAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCisKKyAgICAgICAgICAgICAgICAj
IEluYWN0aXZhdGUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcHJlc3Npb24gZXh0ZW5zaW9ucy4K
KyAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpbmRleCArIDEsIGxlbihwcm9jZXNzb3Jz
KSk6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkK
KworICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25z
CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICAg
ICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAorICAgICAgICAgICAgICAgICAgICBsaXN0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zKSkpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9ucyA9IE5vbmUKKworICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxm
Ll9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQorCisgICAgICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBOb25lOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAn
ZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQg
dG8gd3NfcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xp
ZW50IGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnBy
b3RvY29sJykKKworICAgICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQorICAg
ICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBub3Qg
ZS5zdGF0dXM6CisgICAgICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAgYmFkIHJlcXVlc3Qg
YnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVAorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgZGVmIF9nZXRfb3JpZ2lu
KHNlbGYpOgorICAgICAgICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJTl9IRUFERVIKKyAg
ICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChvcmlnaW5faGVhZGVy
KQorICAgICAgICBpZiBvcmlnaW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQ2xpZW50IHJlcXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVhZGVyJykKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBvcmlnaW4KKworICAgIGRlZiBfY2hlY2tfdmVy
c2lvbihzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYu
X3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUikKKyAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVS
U0lPTl9MQVRFU1RfU1RSSU5HOgorICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAor
CisgICAgICAgIGlmIHZlcnNpb24uZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICgl
cikgYXJlIG5vdCBhbGxvd2VkIGZvciBoZWFkZXIgJXMnICUKKyAgICAgICAgICAgICAgICAodmVy
c2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAorICAgICAgICAgICAg
ICAgIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisgICAgICAgIHJhaXNl
IFZlcnNpb25FeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIHZlcnNpb24gJXIgZm9yIGhlYWRlciAlcycg
JQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwKHN0ciwgX1NVUFBPUlRFRF9WRVJTSU9OUykpKQorCisgICAgZGVmIF9zZXRf
cHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
CisKKyAgICAgICAgcHJvdG9jb2xfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgKKyAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUikKKwor
ICAgICAgICBpZiBwcm90b2NvbF9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IE5vbmUKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3RvY29scyA9IHBhcnNlX3Rv
a2VuX2xpc3QoCisgICAgICAgICAgICBwcm90b2NvbF9oZWFkZXIpCisgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU3VicHJvdG9jb2xzIHJlcXVlc3RlZDogJXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzKQorCisgICAg
ZGVmIF9wYXJzZV9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBleHRlbnNpb25zX2hlYWRlciA9
IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCisgICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUikKKyAgICAgICAgaWYgbm90IGV4dGVuc2lvbnNfaGVh
ZGVyOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucyA9
IE5vbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5z
aW9ucygKKyAgICAgICAgICAgICAgICBleHRlbnNpb25zX2hlYWRlcikKKyAgICAgICAgZXhjZXB0
IGNvbW1vbi5FeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlz
ZSBIYW5kc2hha2VFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBT
ZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAlcicgJSBlKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdFeHRlbnNpb25zIHJlcXVlc3RlZDogJXInLAor
ICAgICAgICAgICAgbGlzdCgKKyAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zKSkpCisKKyAgICBkZWYgX3ZhbGlkYXRlX2tleShzZWxmLCBrZXkpOgor
ICAgICAgICBpZiBrZXkuZmluZCgnLCcpID49IDA6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ1JlcXVlc3QgaGFzIG11bHRpcGxlICVzIGhlYWRlciBsaW5lcyBvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGlsbGVnYWwgY2hh
cmFjdGVyIFwnLFwnOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQorCisgICAgICAgICMgVmFs
aWRhdGUKKyAgICAgICAga2V5X2lzX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBWYWxpZGF0ZSBrZXkgYnkgcXVpY2sgcmVnZXggbWF0Y2ggYmVmb3JlIHBhcnNpbmcg
YnkgYmFzZTY0CisgICAgICAgICAgICAjIG1vZHVsZS4gQmVjYXVzZSBiYXNlNjQgbW9kdWxlIHNr
aXBzIGludmFsaWQgY2hhcmFjdGVycywgd2UgaGF2ZQorICAgICAgICAgICAgIyB0byBkbyB0aGlz
IGluIGFkdmFuY2UgdG8gbWFrZSB0aGlzIHNlcnZlciBzdHJpY3RseSByZWplY3QgaWxsZWdhbAor
ICAgICAgICAgICAgIyBrZXlzLgorICAgICAgICAgICAgaWYgX1NFQ19XRUJTT0NLRVRfS0VZX1JF
R0VYLm1hdGNoKGtleSk6CisgICAgICAgICAgICAgICAgZGVjb2RlZF9rZXkgPSBiYXNlNjQuYjY0
ZGVjb2RlKGtleSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGVjb2RlZF9rZXkpID09IDE2Ogor
ICAgICAgICAgICAgICAgICAgICBrZXlfaXNfdmFsaWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBU
eXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBub3Qga2V5X2lz
X3ZhbGlkOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbGxlZ2FsIHZh
bHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIGtleSkpCisKKyAgICAgICAg
cmV0dXJuIGRlY29kZWRfa2V5CisKKyAgICBkZWYgX2dldF9rZXkoc2VsZik6CisgICAgICAgIGtl
eSA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCisKKyAg
ICAgICAgZGVjb2RlZF9rZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQorCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyICglcyknLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlf
SEVBREVSLCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShkZWNv
ZGVkX2tleSkpCisKKyAgICAgICAgcmV0dXJuIGtleS5lbmNvZGUoJ1VURi04JykKKworICAgIGRl
ZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6CisgICAgICAgIHJldHVybiBT
dHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisKKyAgICBkZWYgX2NyZWF0ZV9o
YW5kc2hha2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKKyAgICAgICAgcmVzcG9uc2UgPSBbXQor
CisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh1J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9j
b2xzXHJcbicpCisKKyAgICAgICAgIyBXZWJTb2NrZXQgaGVhZGVycworICAgICAgICByZXNwb25z
ZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNvbW1vbi5VUEdSQURFX0hFQURF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZ
UEUpKQorICAgICAgICByZXNwb25zZS5hcHBlbmQoCisgICAgICAgICAgICBmb3JtYXRfaGVhZGVy
KGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKAor
ICAgICAgICAgICAgZm9ybWF0X2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVB
REVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQuZGVjb2RlKCdVVEYtOCcpKSkK
KyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBmb3JtYXRfaGVhZGVyKGNv
bW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpKQorICAgICAgICBpZiAoc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgYW5kIGxl
bihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKAorICAgICAgICAgICAgICAgIGZvcm1hdF9oZWFkZXIoCisgICAgICAgICAgICAg
ICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLAorICAgICAgICAg
ICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zKSkpCisKKyAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2ViU29ja2V0
CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hlYWRlcnM6
CisgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2YWx1ZSkp
CisKKyAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHUnXHJcbicpCisKKyAgICAgICAgcmV0dXJuIHUn
Jy5qb2luKHJlc3BvbnNlKQorCisgICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQp
OgorICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
KGFjY2VwdCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHJhd19yZXNw
b25zZS5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBz
ZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhd19yZXNwb25zZSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1OThmNTcwZjJkYzFlZTAxNjJkOTk2ZDY4ODVjYTBiZDZhYjdmMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFu
ZHNoYWtlL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTkgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CisvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdl
YnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRlZDkwYjI0N2I4ZGVkOWYyNTRkYWJhNzA5MDljYmM4ZmYzYzgyZDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJf
dXRpbC5weQpAQCAtMCwwICsxLDI1NCBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJVdGlsaXRpZXMg
Zm9yIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVhZGVycyB0aGF0IGZvbGxvdyB0aGUgZ3JhbW1h
ciBkZWZpbmVkCitpbiBIVFRQIFJGQyBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjE2LnR4
dC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UKKworX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/
PXt9IFx0JworCisKK2RlZiBfaXNfY2hhcihjKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMg
aXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQgaW4gSFRUUCBSRkMuIiIiCisKKyAgICByZXR1cm4gb3Jk
KGMpIDw9IDEyNworCisKK2RlZiBfaXNfY3RsKGMpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZmYg
YyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgorCisgICAgcmV0dXJuIG9y
ZChjKSA8PSAzMSBvciBvcmQoYykgPT0gMTI3CisKKworY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGEgPSBk
YXRhCisgICAgICAgIHNlbGYuaGVhZCA9IDAKKworCitkZWYgcGVlayhzdGF0ZSwgcG9zPTApOgor
ICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20gdGhlIGhlYWQgb2YgZGF0YS4i
IiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0YXRlLmRhdGEpOgorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgcmV0dXJuIHN0YXRlLmRhdGFbc3RhdGUuaGVhZCArIHBvc10K
KworCitkZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgorICAgICIiIkNvbnN1bWVzIHNwZWNp
ZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQgcmV0dXJucyB0aGUKKyAgICBj
b25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5dGVzIHRvIGNvbnN1bWUsIHJl
dHVybnMgTm9uZS4KKyAgICAiIiIKKworICAgIGlmIHN0YXRlLmhlYWQgKyBhbW91bnQgPiBsZW4o
c3RhdGUuZGF0YSk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICByZXN1bHQgPSBzdGF0ZS5k
YXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KKyAgICBzdGF0ZS5oZWFkID0gc3Rh
dGUuaGVhZCArIGFtb3VudAorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgY29uc3VtZV9zdHJp
bmcoc3RhdGUsIGV4cGVjdGVkKToKKyAgICAiIiJHaXZlbiBhIHBhcnNpbmcgc3RhdGUgYW5kIGEg
ZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZyb20KKyAgICB0aGUgaGVhZC4g
UmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4gT3RoZXJ3aXNlLCByZXR1cm5z
CisgICAgRmFsc2UuCisgICAgIiIiCisKKyAgICBwb3MgPSAwCisKKyAgICBmb3IgYyBpbiBleHBl
Y3RlZDoKKyAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3MpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHBvcyArPSAxCisKKyAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3Moc3RhdGUpOgorICAgICIiIkNvbnN1
bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBpZiBhbnkgTFdTIGlzIGNvbnN1
bWVkLgorICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KKworICAgIExXUyA9IFtDUkxGXSAx
KiggU1AgfCBIVCApCisgICAgIiIiCisKKyAgICBvcmlnaW5hbF9oZWFkID0gc3RhdGUuaGVhZAor
CisgICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKKworICAgIHBvcyA9IDAKKworICAg
IHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlmIGMg
PT0gJyAnIG9yIGMgPT0gJ1x0JzoKKyAgICAgICAgICAgIHBvcyArPSAxCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBpZiBwb3MgPT0gMDoKKyAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkID0g
b3JpZ2luYWxfaGVhZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBwb3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKworCitkZWYgY29uc3VtZV9sd3NlcyhzdGF0ZSk6CisgICAgIiIiQ29u
c3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgorCisgICAgd2hpbGUgY29uc3VtZV9sd3Moc3Rh
dGUpOgorICAgICAgICBwYXNzCisKKworZGVmIGNvbnN1bWVfdG9rZW4oc3RhdGUpOgorICAgICIi
IkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJucyB0aGUgdG9rZW4gb3IgTm9u
ZSBpZiBubyB0b2tlbgorICAgIHdhcyBmb3VuZC4KKyAgICAiIiIKKworICAgIHBvcyA9IDAKKwor
ICAgIHdoaWxlIFRydWU6CisgICAgICAgIGMgPSBwZWVrKHN0YXRlLCBwb3MpCisgICAgICAgIGlm
IGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19j
aGFyKGMpOgorICAgICAgICAgICAgaWYgcG9zID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3RhdGUsIHBvcykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHBvcyArPSAxCisKKworZGVmIGNvbnN1bWVfdG9rZW5fb3JfcXVv
dGVkX3N0cmluZyhzdGF0ZSk6CisgICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBvciBhIHF1b3RlZC1z
dHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3RlZAorICAgIHN0cmluZy4gSWYg
bm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJldHVybnMgTm9uZS4KKyAgICAi
IiIKKworICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCisKKyAgICBpZiBub3QgY29uc3Vt
ZV9zdHJpbmcoc3RhdGUsICciJyk6CisgICAgICAgIHJldHVybiBjb25zdW1lX3Rva2VuKHN0YXRl
KQorCisgICAgcmVzdWx0ID0gW10KKworICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCisK
KyAgICB3aGlsZSBUcnVlOgorICAgICAgICBpZiBub3QgZXhwZWN0X3F1b3RlZF9wYWlyIGFuZCBj
b25zdW1lX2x3cyhzdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJykKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYyA9IGNvbnN1bWUoc3RhdGUpCisgICAgICAgIGlm
IGMgaXMgTm9uZToKKyAgICAgICAgICAgICMgcXVvdGVkLXN0cmluZyBpcyBub3QgZW5jbG9zZWQg
d2l0aCBkb3VibGUgcXVvdGF0aW9uCisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxf
aGVhZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBleHBlY3RfcXVvdGVk
X3BhaXI6CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBGYWxzZQorICAgICAgICAg
ICAgaWYgX2lzX2NoYXIoYyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vbiBDSEFSIGNoYXJhY3RlciBmb3Vu
ZCBpbiBxdW90ZWQtcGFpcgorICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9o
ZWFkCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBjID09ICdcXCc6
CisgICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVlCisgICAgICAgIGVsaWYgYyA9
PSAnIic6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisgICAgICAgIGVsaWYg
X2lzX2N0bChjKToKKyAgICAgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXIgJXIgZm91bmQgaW4g
cWR0ZXh0CisgICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YykKKworCitkZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgorICAgICIiIlF1b3RlcyBhcmJpdHJh
cnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKKworICAgIHF1b3RlID0gRmFsc2UKKyAg
ICBpZiBzID09ICcnOgorICAgICAgICByZXR1cm4gJyIiJworCisgICAgcmVzdWx0ID0gW10KKyAg
ICBmb3IgYyBpbiBzOgorICAgICAgICBpZiBjID09ICciJyBvciBjIGluIF9TRVBBUkFUT1JTIG9y
IF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVl
CisKKyAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ1xcJyArIGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGMpCisKKyAgICBpZiBxdW90ZToKKyAgICAgICAgcmV0dXJuICciJyArICcnLmpvaW4ocmVz
dWx0KSArICciJworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgcGFyc2VfdXJpKHVyaSk6CisgICAgIiIiUGFyc2UgYWJzb2x1dGUgVVJJIHRoZW4gcmV0
dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgorCisgICAgcGFyc2VkID0gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmkpCisgICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3Nz
JyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgorICAgICAgICAjIHx1cml8IG11c3QgYmUgYSBy
ZWxhdGl2ZSBVUkkuCisgICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8
dXJpfC4KKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVyaQorCisgICAgaWYgcGFyc2VkLmhv
c3RuYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAgICBw
b3J0ID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgcG9ydCA9IHBhcnNlZC5wb3J0CisgICAgZXhj
ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICMgVGhlIHBvcnQgcHJvcGVydHkgY2F1c2UgVmFsdWVF
cnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbnMKKyAgICAgICAgIyBsaWtlICd3
czovL2hvc3Q6SU5WQUxJRF9QT1JUL3BhdGgnLCB3aGVyZSB0aGUgYXNzaWduZWQgcG9ydCBpcyBu
b3QKKyAgICAgICAgIyAqRElHSVQuIEZvciBweXRob24gMy42IGFuZCBsYXRlciwgVmFsdWVFcnJv
ciBhbHNvIHJhaXNlcyB3aGVuCisgICAgICAgICMgYXNzaWduaW5nIGludmFsaWQgcG9ydCBudW1i
ZXJzIHN1Y2ggYXMgJ3dzOi8vaG9zdDotMS9wYXRoJy4gRWFybGllcgorICAgICAgICAjIHZlcnNp
b25zIHNpbXBseSByZXR1cm4gTm9uZSBhbmQgaWdub3JlIGludmFsaWQgcG9ydCBhdHRyaWJ1dGVz
LgorICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgaWYgcG9ydCBpcyBOb25l
OgorICAgICAgICBpZiBwYXJzZWQuc2NoZW1lID09ICd3cyc6CisgICAgICAgICAgICBwb3J0ID0g
ODAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvcnQgPSA0NDMKKworICAgIHBhdGggPSBw
YXJzZWQucGF0aAorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoICs9ICcvJworICAgIGlm
IHBhcnNlZC5xdWVyeToKKyAgICAgICAgcGF0aCArPSAnPycgKyBwYXJzZWQucXVlcnkKKyAgICBp
ZiBwYXJzZWQuZnJhZ21lbnQ6CisgICAgICAgIHBhdGggKz0gJyMnICsgcGFyc2VkLmZyYWdtZW50
CisKKyAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lLCBwb3J0LCBwYXRoCisKKworIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVt
b3JpemluZ2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1Mzk2NzYxODQ3YTY4NDA0NjQ4NDBiMGU3MmVi
YzdiYTE1MGU0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTWVtb3JpemluZyBmaWxlLgorCitBIG1l
bW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJl
YWRsaW5lLgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Citp
bXBvcnQgc3lzCisKKworY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKKyAgICAiIiJNZW1v
cml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRs
aW5lLgorCisgICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3Qg
bWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCisgICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXpp
bmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBiZWZvcmUKKyAgICB0aGUgY29udHJvbCBy
ZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlXywgbWF4X21lbW9yaXplZF9saW5lcz1zeXMubWF4c2l6ZSk6CisgICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg
ZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAgbWF4X21lbW9yaXpl
ZF9saW5lczogdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgorICAgICAg
ICAgICAgICAgIE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXpl
ZC4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LgorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCisgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9
IFtdCisgICAgICAgIHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xp
bmVzCisgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fYnVmZmVy
ZWRfbGluZSA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgor
ICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgCisgICAgICAgIFJl
dHVybnMgdGhlIHZhbHVlIG92ZXJyaWRkZW4gYnkgdGhpcyBjbGFzcyBmb3Igc29tZSBhdHRyaWJ1
dGVzLAorICAgICAgICBhbmQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gX2ZpbGUgZm9yIHRoZSBvdGhl
ciBhdHRyaWJ1dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbmFtZSBpbiAoJ19maWxlJywg
J19tZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAorICAgICAgICAgICAg
ICAgICAgICAnX2J1ZmZlcmVkJywgJ19idWZmZXJlZF9saW5lJywgJ3JlYWRsaW5lJywKKyAgICAg
ICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAgICAgICAgICAgIHJldHVy
biBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwg
c2l6ZT0tMSk6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUgYW5kIG1lbW9yaXpl
IHRoZSBsaW5lIHJlYWQuCisKKyAgICAgICAgTm90ZSB0aGF0IGV2ZW4gaWYgc2l6ZSBpcyBzcGVj
aWZpZWQgYW5kIHNtYWxsZXIgdGhhbiBhY3R1YWwgc2l6ZSwKKyAgICAgICAgdGhlIHdob2xlIGxp
bmUgd2lsbCBiZSByZWFkIG91dCBmcm9tIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgYnkKKyAgICAg
ICAgc3Vic2VxdWVudCByZWFkbGluZSBjYWxscy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuX2J1ZmZlcmVkOgorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcmVkX2xpbmUKKyAg
ICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIGxpbmUgYW5k
IGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21lbW9yaXplZF9saW5lczoK
KyAgICAgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMuYXBwZW5kKGxpbmUpCisgICAg
ICAgIGlmIHNpemUgPj0gMCBhbmQgc2l6ZSA8IGxlbihsaW5lKToKKyAgICAgICAgICAgIHNlbGYu
X2J1ZmZlcmVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IGxpbmVb
c2l6ZTpdCisgICAgICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIGxp
bmUKKworICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQg
bGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21lbW9yaXpl
ZF9saW5lcworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2Rf
cHl3ZWJzb2NrZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThjYTc4ZTE0YWQyNWU3YTQ0ZDFh
YjI2MmU3YmQzNWNlYWVhNWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KKworTm90ZTogcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCitt
b2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4g
Y29ubmVjdGlvbgoraGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0
aW9ucy4gRm9yIGV4YW1wbGUsCityZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBi
ZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdworYnl0ZXMgd3JpdGluZy9yZWFkaW5n
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
c2l4Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCisKKyMgRXhwb3J0IEV4Y2VwdGlvbiBz
eW1ib2xzIGZyb20gbXNndXRpbCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9y
dCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhj
ZXB0aW9ucyBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KKwor
CisjIEFuIEFQSSBmb3IgaGFuZGxlciB0byBzZW5kL3JlY2VpdmUgV2ViU29ja2V0IG1lc3NhZ2Vz
LgorZGVmIGNsb3NlX2Nvbm5lY3Rpb24ocmVxdWVzdCk6CisgICAgIiIiQ2xvc2UgY29ubmVjdGlv
bi4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAg
ICAiIiIKKyAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKCkKKworCitkZWYg
c2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWRfZGF0YSwgZW5kPVRydWUsIGJpbmFyeT1GYWxz
ZSk6CisgICAgIiIiU2VuZCBhIG1lc3NhZ2UgKG9yIHBhcnQgb2YgYSBtZXNzYWdlKS4KKworICAg
IEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAgICAgICAgcGF5
bG9hZF9kYXRhOiB1bmljb2RlIHRleHQgb3Igc3RyIGJpbmFyeSB0byBzZW5kLgorICAgICAgICBl
bmQ6IFRydWUgdG8gdGVybWluYXRlIGEgbWVzc2FnZS4KKyAgICAgICAgICAgICBGYWxzZSB0byBz
ZW5kIHBheWxvYWRfZGF0YSBhcyBwYXJ0IG9mIGEgbWVzc2FnZSB0aGF0IGlzIHRvIGJlCisgICAg
ICAgICAgICAgdGVybWluYXRlZCBieSBuZXh0IG9yIGxhdGVyIHNlbmRfbWVzc2FnZSBjYWxsIHdp
dGggZW5kPVRydWUuCisgICAgICAgIGJpbmFyeTogc2VuZCBwYXlsb2FkX2RhdGEgYXMgYmluYXJ5
IGZyYW1lKHMpLgorICAgIFJhaXNlczoKKyAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3
aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCisgICAgIiIiCisgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpCisKKworZGVmIHJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKKyAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1l
IGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisgICAgdW5pY29kZSBvciBhIGJp
bmFyeSBpbiBzdHIuCisKKyAgICBBcmdzOgorICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJl
cXVlc3QuCisgICAgUmFpc2VzOgorICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246ICAgICB3
aGVuIGNsaWVudCBzZW5kIGludmFsaWQgZnJhbWUuCisgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVF
eGNlcHRpb246IHdoZW4gY2xpZW50IHNlbmQgdW5zdXBwb3J0ZWQgZnJhbWUgZS5nLiBzb21lCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlc2VydmVkIGJpdCBpcyBzZXQg
YnV0IG5vIGV4dGVuc2lvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjb2duaXplIGl0LgorICAgICAgICBJbnZhbGlkVVRGOEV4Y2VwdGlvbjogICAgICB3aGVuIGNs
aWVudCBzZW5kIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGFueQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnZhbGlkIFVURi04IHN0cmluZy4KKyAgICAgICAgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRseS4KKyAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiAgICAgd2hlbiBjbGllbnQgYWxyZWFkeSB0ZXJtaW5hdGVkLgor
ICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQor
CisKK2RlZiBzZW5kX3BpbmcocmVxdWVzdCwgYm9keSk6CisgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9waW5nKGJvZHkpCisKKworY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRocmVhZGluZy5UaHJl
YWQpOgorICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50
LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJlY2VpdmUgbWVzc2Fn
ZXM6IGJsb2NraW5nLAorICAgIG5vbi1ibG9ja2luZywgYW5kIHZpYSBjYWxsYmFjay4gQ2FsbGJh
Y2sgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNo
b3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAg
YmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9y
IGlmIHRoZSBzb2NrZXQKKyAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisg
ICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAg
ICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBvbm1lc3Nh
Z2U6IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgor
ICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5j
dGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQu
IEluIHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKKyAgICAgICAgICAgICAgICAg
ICAgICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcworICAg
ICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1l
c3NhZ2VzLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9f
KHNlbGYpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuX3F1
ZXVlID0gc2l4Lm1vdmVzLnF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5fb25tZXNzYWdlID0g
b25tZXNzYWdlCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKKyAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgc2VsZi5zdGFydCgpCisKKyAgICBkZWYgcnVu
KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9y
ZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxm
Ll9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCisK
KyAgICBkZWYgcmVjZWl2ZShzZWxmKToKKyAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZy
b20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg
ICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgICIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fcXVldWUuZ2V0KCkKKworICAgIGRlZiByZWNlaXZlX25vd2FpdChzZWxmKToKKyAg
ICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2lu
Zy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUg
c3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCisgICAgICAgICIiIgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCisg
ICAgICAgIGV4Y2VwdCBzaXgubW92ZXMucXVldWUuRW1wdHk6CisgICAgICAgICAgICBtZXNzYWdl
ID0gTm9uZQorICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIHN0b3Aoc2VsZik6Cisg
ICAgICAgICIiIlJlcXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgorCisgICAgICAgIFRoZSBp
bnN0YW5jZSB3aWxsIGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2Uu
CisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBp
cyBubyBjbGVhbiB3YXkKKyAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1
bm5pbmcgdGhyZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQg
PSBUcnVlCisKKworY2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAi
IiJUaGlzIGNsYXNzIHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisKKyAgICBUaGlzIGNs
YXNzIHByb3ZpZGVzIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNl
bmQKKyAgICBtZXNzYWdlcy4KKworICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1
c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKKyAgICBiZWNhdXNlIHB5T3Bl
blNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tl
dAorICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhz
ZWxmKQorICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLl9xdWV1
ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUp
CisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdl
dCgpCisgICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBzZW5kX21l
c3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5ub3Rp
ZnkoKQorICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmQoc2Vs
ZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKKwor
ICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgY29uZGl0
aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlv
bikpCisgICAgICAgIGNvbmRpdGlvbi53YWl0KCkKKworICAgIGRlZiBzZW5kX25vd2FpdChzZWxm
LCBtZXNzYWdlKToKKyAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIK
KworICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24o
KSkpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvcmVxdWVzdF9oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
bW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDM4ZDlmNDNh
Y2QzN2JmNWExYjEwYTBjZTU1ODViZDUxZWQ2MDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3JlcXVlc3RfaGFuZGxlci5weQpAQCAtMCwwICsx
LDMxOSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSZXF1ZXN0IEhhbmRsZXIgYW5kIFJlcXVlc3Qv
Q29ubmVjdGlvbiBjbGFzc2VzIGZvciBzdGFuZGFsb25lIHNlcnZlci4KKyIiIgorCitpbXBvcnQg
b3MKKworZnJvbSBzaXgubW92ZXMgaW1wb3J0IENHSUhUVFBTZXJ2ZXIKK2Zyb20gc2l4Lm1vdmVz
IGltcG9ydCBodHRwX2NsaWVudAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9u
Citmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRwX2hl
YWRlcl91dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKyMgMTAyNCBpcyBwcmFjdGljYWxseSBs
YXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgorX01BWF9N
RU1PUklaRURfTElORVMgPSAxMDI0CisKKworY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0aW9uKG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
c2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisKKyAgICBkZWYgZ2V0X2xv
Y2FsX2FkZHIoc2VsZik6CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLmxvY2Fs
X2FkZHIuIiIiCisKKyAgICAgICAgcmV0dXJuIChzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVy
LnNlcnZlcl9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2
ZXIuc2VydmVyX3BvcnQpCisKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2Fk
ZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIg
dG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KKworICAgICAgICBTZXR0aW5nIHRoZSBwcm9w
ZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKKyAgICAgICAg
aGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgorCisgICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKKworICAgIHJlbW90ZV9hZGRy
ID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEp
OgorICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCisKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQorCisgICAgZGVmIHJlYWQo
c2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMgbXBfY29ubi5yZWFkKCkuIiIiCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5yZWFkKGxlbmd0aCkKKwor
ICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICAiIiJHZXQgbWVtb3Jp
emVkIGxpbmVzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZp
bGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisKKworY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9i
amVjdCk6CisgICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIiIgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgorICAgICAgICAiIiJDb25zdHJ1
Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFu
ZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCisgICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRsZXIpCisg
ICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCisgICAgICAgIHNlbGYuaGVhZGVyc19pbiA9
IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKKyAgICBkZWYgZ2V0X3VyaShzZWxmKToKKyAgICAg
ICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgorCisgICAgICAgIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRoZQorICAg
ICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1ZXN0IG9i
amVjdCBvZiBtb2RfcHl0aG9uCisgICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlvbiBhZnRl
ciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcworICAgICAgICBrZXB0IGZv
ciBjb21wYXRpYmlsaXR5LgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5fcmVx
dWVzdF9oYW5kbGVyLnBhdGgKKworICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCisKKyAgICBk
ZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJl
cXVlc3QudW5wYXJzZWRfdXJpLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hh
bmRsZXIucGF0aAorCisgICAgdW5wYXJzZWRfdXJpID0gcHJvcGVydHkoZ2V0X3VucGFyc2VkX3Vy
aSkKKworICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWlt
aWMgcmVxdWVzdC5tZXRob2QuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFu
ZGxlci5jb21tYW5kCisKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9kKQorCisgICAg
ZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVl
c3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZXF1ZXN0X3ZlcnNpb24KKworICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0X3Byb3RvY29sKQor
CisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pYyByZXF1ZXN0LmlzX2h0
dHBzKCkuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKKworCitjbGFzcyBXZWJT
b2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6
CisgICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQu
IiIiCisKKyAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xz
Lk1lc3NhZ2UuCisgICAgTWVzc2FnZUNsYXNzID0gaHR0cF9jbGllbnQuSFRUUE1lc3NhZ2UKKwor
ICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0
cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAgcmZpbGUKKyAgICAgICAgd2l0aCBNZW1v
cml6aW5nRmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNl
UmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICBiZWZvcmUgY2FsbGluZyBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KKyAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxl
ci5oYW5kbGUgd2lsbCBjYWxsCisgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxl
X29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKKyAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIucGFyc2VfcmVxdWVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBDYWxsIHN1cGVy
Y2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3ZmlsZSwgZXRjLiBTZWUgc2V0dXAKKyAg
ICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNsYXNzIFNvY2tldFNlcnZlci5TdHJlYW1S
ZXF1ZXN0SGFuZGxlciB0bworICAgICAgICAjIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuCisg
ICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnNldHVwKHNlbGYpCisK
KyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAorICAg
ICAgICAgICAgc2VsZi5yZmlsZSwgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9SSVpFRF9M
SU5FUykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywg
c2VydmVyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNl
bGYpCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29w
dGlvbnMKKworICAgICAgICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhhbmRsZXIu
Y2dpX2RpcmVjdG9yaWVzLgorICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNlbGYuX29w
dGlvbnMuY2dpX2RpcmVjdG9yaWVzCisgICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVxdWVzdEhh
bmRsZXIuaXNfZXhlY3V0YWJsZSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaXNf
ZXhlY3V0YWJsZV9tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmlzX2V4ZWN1
dGFibGUgPSBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCisKKyAgICAgICAgIyBU
aGlzIGFjdHVhbGx5IGNhbGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KKyAgICAgICAg
Q0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgcmVxdWVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X2FkZHJlc3MsIHNlcnZlcikKKworICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVy
LnBhcnNlX3JlcXVlc3QuCisKKyAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJvY2Vz
c2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgICAgIFNlZSBCYXNlSFRU
UFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMKKyAg
ICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorCisgICAgICAgICMgV2UgaG9vayBwYXJzZV9yZXF1
ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBDR0lIVFRQ
UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxzZSwK
KyAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNvbnRp
bnVlcyBwcm9jZXNzaW5nIGFuZAorICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQgYnkg
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCisgICAgICAgICMKKyAgICAgICAg
IyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdlYlNv
Y2tldCByZXF1ZXN0CisgICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21tYW5k
LCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCisgICAgICAgICMgaG93IF9TdGFuZGFs
b25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCisgICAgICAg
ICMgYXR0cmlidXRlcykuCisgICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKKyAgICAgICAgICAg
IGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKKyAgICAgICAg
ICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6CisgICAg
ICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMSkKKyAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdCYXNpYyByZWFsbT0iUHl3ZWJzb2NrZXQiJykKKyAgICAgICAgICAgICAgICBz
ZWxmLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVx
dWVzdCBiYXNpYyBhdXRoZW50aWNhdGlvbicpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNl
X3VyaShzZWxmLnBhdGgpCisgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBVUkk6ICVyJywgc2VsZi5wYXRoKQorICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxl
cicpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZXJ2ZXJfb3B0aW9ucyA9IHNl
bGYuc2VydmVyLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucworICAgICAgICBpZiBob3N0IGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgdmFsaWRhdGlvbl9ob3N0ID0gc2VydmVyX29wdGlvbnMudmFs
aWRhdGlvbl9ob3N0CisgICAgICAgICAgICBpZiB2YWxpZGF0aW9uX2hvc3QgaXMgbm90IE5vbmUg
YW5kIGhvc3QgIT0gdmFsaWRhdGlvbl9ob3N0OgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdJbnZhbGlkIGhvc3Q6ICVyIChleHBlY3RlZDogJXIpJywgaG9zdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX2hvc3QpCisgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRp
b25fcG9ydAorICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBw
b3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScsIHBvcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl9wb3J0KQorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHNlbGYucGF0aCA9IHJlc291cmNlCisK
KyAgICAgICAgcmVxdWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdChzZWxmLCBzZWxmLl9vcHRpb25z
LnVzZV90bHMpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBkZWZh
dWx0IGh0dHAgaGFuZGxlciBmb3IgcmVxdWVzdCBwYXRocyBmb3Igd2hpY2gKKyAgICAgICAgICAg
ICMgd2UgZG9uJ3QgaGF2ZSByZXF1ZXN0IGhhbmRsZXJzLgorICAgICAgICAgICAgaWYgbm90IHNl
bGYuX29wdGlvbnMuZGlzcGF0Y2hlci5nZXRfaGFuZGxlcl9zdWl0ZShzZWxmLnBhdGgpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdObyBoYW5kbGVyIGZvciByZXNvdXJjZTog
JXInLCBzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxi
YWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMn
LCBlKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKGUuc3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBJZiBhbnkgRXhjZXB0aW9ucyB3aXRob3V0IGV4Y2Vw
dCBjbGF1c2Ugc2V0dXAgKGluY2x1ZGluZworICAgICAgICAjIERpc3BhdGNoRXhjZXB0aW9uKSBp
cyByYWlzZWQgYmVsb3cgdGhpcyBwb2ludCwgaXQgd2lsbCBiZSBjYXVnaHQKKyAgICAgICAgIyBh
bmQgbG9nZ2VkIGJ5IFdlYlNvY2tldFNlcnZlci4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZShyZXF1ZXN0LCBz
ZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIpCisgICAgICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZl
cnNpb25FeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAg
ICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisg
ICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3VwcG9ydGVk
X3ZlcnNpb25zKQorICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mocykg
ZmFpbGVkLgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdIYW5kc2hha2UgZmFp
bGVkIGZvciBlcnJvcjogJXMnLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihl
LnN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmVx
dWVzdC5fZGlzcGF0Y2hlciA9IHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlcgorICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnQWJvcnRlZDogJXMnLCBlKQorICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgorICAg
ICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfcmVxdWVzdC4iIiIKKworICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnIiVzIiAlcyAlcycsIHNlbGYucmVxdWVzdGxpbmUsIHN0cihj
b2RlKSwgc3RyKHNpemUpKQorCisgICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6CisgICAg
ICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKKworICAgICAgICAj
IERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBl
cnJvcnMuCisgICAgICAgICMgRm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2Vk
IGJ5IHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnJXMgLSAlcycs
IHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
c1swXSAlIGFyZ3NbMTpdKQorCisgICAgZGVmIGlzX2NnaShzZWxmKToKKyAgICAgICAgIiIiVGVz
dCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCisKKyAgICAg
ICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29udGFpbnMgLi4KKyAg
ICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBvciBub3Qu
CisgICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBpcyBoYW5kbGVkIGFz
IHN0YXRpYyBmaWxlIG9yIGRpcgorICAgICAgICByYXRoZXIgdGhhbiBhIENHSSBzY3JpcHQuCisg
ICAgICAgICIiIgorCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5k
bGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2VsZi5wYXRoOgorICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJpcCBxdWVyeSBwYXJh
bWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNlX25hbWUgPSBzZWxm
LnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0IHJlc291cmNlX25h
bWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAgICAgICAgc2NyaXB0
ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAgICAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zZXJ2ZXJfdXRpbC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZjllMjczZTk3NzA4NDRiN2NiNDQ2MTZlYmY5ODI1ODg2YmY0NGU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3NlcnZlcl91dGlsLnB5CkBAIC0w
LDAgKzEsODcgQEAKKyMgQ29weXJpZ2h0IDIwMjAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiU2VydmVyIHJlbGF0ZWQgdXRpbGl0aWVz
LiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisKKworZGVmIF9nZXRfbG9nZ2Vy
X2Zyb21fY2xhc3MoYyk6CisgICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCclcy4lcycgJSAo
Yy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKKworCitkZWYgY29uZmlndXJlX2xvZ2dpbmcob3B0
aW9ucyk6CisgICAgbG9nZ2luZy5hZGRMZXZlbE5hbWUoY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdG
SU5FJykKKworICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSkpCisg
ICAgaWYgb3B0aW9ucy5sb2dfZmlsZToKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuaGFuZGxl
cnMuUm90YXRpbmdGaWxlSGFuZGxlcihvcHRpb25zLmxvZ19maWxlLCAnYScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2df
bWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIgPSBsb2dn
aW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAor
ICAgICAgICAnWyUoYXNjdGltZSlzXSBbJShsZXZlbG5hbWUpc10gJShuYW1lKXM6ICUobWVzc2Fn
ZSlzJykKKyAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoaGFuZGxlcikKKworICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUgPSBsb2dnaW5n
LmdldExldmVsTmFtZSgKKyAgICAgICAgb3B0aW9ucy5kZWZsYXRlX2xvZ19sZXZlbC51cHBlcigp
KQorICAgIF9nZXRfbG9nZ2VyX2Zyb21fY2xhc3ModXRpbC5fRGVmbGF0ZXIpLnNldExldmVsKGRl
ZmxhdGVfbG9nX2xldmVsX25hbWUpCisgICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9J
bmZsYXRlcikuc2V0TGV2ZWwoZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKKworCitjbGFzcyBUaHJl
YWRNb25pdG9yKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRhZW1vbiA9IFRydWUKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpbnRlcnZhbF9pbl9zZWMpOgorICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9J1RocmVhZE1vbml0b3InKQorCisgICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX2lu
dGVydmFsX2luX3NlYyA9IGludGVydmFsX2luX3NlYworCisgICAgZGVmIHJ1bihzZWxmKToKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QgPSBbXQorICAg
ICAgICAgICAgZm9yIHRocmVhZCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCk6CisgICAgICAgICAg
ICAgICAgdGhyZWFkX25hbWVfbGlzdC5hcHBlbmQodGhyZWFkLm5hbWUpCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygiJWQgYWN0aXZlIHRocmVhZHM6ICVzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkKKyAgICAgICAgICAg
IHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQorCisKKyMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDQyYzQ5NmM1OGEyM2I2Y2U0YzIzZWVlMGJhNDYyMDk1NDUyNjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkKQEAgLTAsMCArMSw0NzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisiIiJTdGFuZGFsb25lIFdlYlNvY2tldCBzZXJ2ZXIuCisKK1VzZSB0aGlzIGZp
bGUgdG8gbGF1bmNoIHB5d2Vic29ja2V0IGFzIGEgc3RhbmRhbG9uZSBzZXJ2ZXIuCisKKworQkFT
SUMgVVNBR0UKKz09PT09PT09PT09CisKK0dvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4K
KworICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+
XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tf
aGFuZGxlcnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQg
PGRvY3VtZW50X3Jvb3Q+XQorCis8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBm
b3Igd3M6Ly8gY29ubmVjdGlvbi4KKworPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRo
ZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgorCis8d2Vic29ja19oYW5kbGVycz4gaXMg
dGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KK0lm
IG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRf
Xy5weSAob3IKK3J1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBX
ZWJTb2NrZXQgaGFuZGxlcnMuCisKK0ZvciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywg
cnVuCisKKyAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCisK
K29yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCisKK0ZvciB0cm91Ymxl
IHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KKwor
CitUUlkgREVNTworPT09PT09PT0KKworR28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBz
dGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKK2RvY3VtZW50IHJvb3QgdG8g
dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2Ug
dGhpczoKKworICAkIGNkIHNyYworICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQorCit0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0
aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3BlbgoraHR0cDovL2xv
Y2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21l
dGhpbmcgaW50bwordGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGlj
ayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKK2lzIHdvcmtpbmcsIHlvdSdsbCBzZWUg
dGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgorCisKK1VTSU5HIFRM
UworPT09PT09PT09CisKK1RvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3Vw
cG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKK29wdGlvbnMuIFdoZW4gVExTIGlzIGVu
YWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24u
CisKK05vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxv
Y2F0aW9uIGlzIGluY29ycmVjdCwKK1RMUyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxl
IHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgorCitFeGFtcGxlOgorCisgICQgUFlUSE9OUEFU
SD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCisgICAgICAgIC1kIGV4
YW1wbGUgXAorICAgICAgICAtcCAxMDQ0MyBcCisgICAgICAgIC10IFwKKyAgICAgICAgLWMgLi4v
dGVzdC9jZXJ0L2NlcnQucGVtIFwKKyAgICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAor
CitOb3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0
aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCit1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3Rv
cnkgYXMgdGhlIGJhc2UuCisKKworVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRo
IFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKKy0tdGxzLWNs
aWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVz
IHJlcXVpcmVkIGZvcgorVExTIHN1cHBvcnQuCisKK0V4YW1wbGU6CisKKyAgJCBQWVRIT05QQVRI
PS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0
NDMgLXQgXAorICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0
L2tleS5wZW0gXAorICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCisgICAgICAgIC0tdGxzLWNs
aWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorCitOb3RlIHRoYXQgd2hlbiBwYXNzaW5n
IGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCity
ZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCisK
KworQ09ORklHVVJBVElPTiBGSUxFCis9PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiBhbHNv
IHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUg
cGF0aCB0bwordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFz
ZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQorZm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAorZW50cnkg
bXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBs
ZXZlbCB0byBkZWJ1ZywKK2FkZCB0aGUgZm9sbG93aW5nIGxpbmU6CisKK2xvZ19sZXZlbD1kZWJ1
ZworCitGb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29t
ZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgorLS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBs
aW5lOgorCit0bHM9VHJ1ZQorCitOb3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlm
IHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKK2Zha2UuCisKK1doZW4g
Ym90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50
cnkgYXJlIHNldCBmb3IKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQg
bGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4K
KworCitUSFJFQURJTkcKKz09PT09PT09PQorCitUaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20g
U29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBpcwordXNlZCBmb3Ig
ZWFjaCByZXF1ZXN0LgorCisKK1NFQ1VSSVRZIFdBUk5JTkcKKz09PT09PT09PT09PT09PT0KKwor
VGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4K
K0l0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFt
cy4gSXQgc2hvdWxkIG5vdCBiZQordXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwuCisiIiIKKworZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gc2l4Lm1vdmVzIGltcG9y
dCBjb25maWdwYXJzZXIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0
cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHNlcnZlcl91dGlsCitmcm9tIG1vZF9w
eXdlYnNvY2tldC53ZWJzb2NrZXRfc2VydmVyIGltcG9ydCBXZWJTb2NrZXRTZXJ2ZXIKKworX0RF
RkFVTFRfTE9HX01BWF9CWVRFUyA9IDEwMjQgKiAyNTYKK19ERUZBVUxUX0xPR19CQUNLVVBfQ09V
TlQgPSA1CisKK19ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAorCisKK2RlZiBfYnVp
bGRfb3B0aW9uX3BhcnNlcigpOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigp
CisKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1jb25maWcnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2NvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJp
bmcnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNlZSB0aGUgZmlsZSBj
b21tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlIHRvcCBvZiB0aGlz
IGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZmlsZSBmb3JtYXQnKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLUgnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXNlcnZlci1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1z
ZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCisgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1WJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uLWhvc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXZhbGlkYXRpb25faG9zdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0ndmFsaWRhdGlvbl9ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRv
IHZhbGlkYXRlIGluIGFic29sdXRlIHBhdGguJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAn
LAorICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3BvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1jb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0ncG9ydCB0byBsaXN0ZW4gdG8nKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctUCcsCisgICAgICAgICAgICAgICAgICAgICAgJy0tdmFsaWRhdGlvbi1w
b3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS12YWxpZGF0aW9uX3BvcnQnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25fcG9ydCcsCisgICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIHBvcnQgdG8gdmFsaWRhdGUgaW4gYWJz
b2x1dGUgcGF0aC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdycsCisgICAgICAgICAgICAg
ICAgICAgICAgJy0td2Vic29jay1oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgJy0t
d2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vic29ja19o
YW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nLicsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBXZWJTb2NrZXQgaGFuZGxl
ciBmaWxlcy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGUgcGF0aCBpcyBy
ZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcyB0aGUgYmFzZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLAorICAg
ICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
V2ViU29ja2V0IGhhbmRsZXJzIG1hcCBmaWxlLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0VhY2ggbGluZSBjb25zaXN0cyBvZiBhbGlhc19yZXNvdXJjZV9wYXRoIGFuZCAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFyYXRl
ZCBieSBzcGFjZXMuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1zY2FuLWRpcicsCisgICAgICAgICAgICAgICAgICAgICAgJy0tc2Nhbl9k
aXInLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NjYW5fZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ011
c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLiAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5kZXIgdGhpcyBkaXJlY3RvcnkgYXJl
IHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgcmVnaXN0ZXJlZCB0
byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBmb3Ig
c2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90cyBvZiBmaWxlcyB0aGF0IGFyZSAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBoYW5kbGVyIGZpbGUgb3IgYXJlIGhh
bmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rvblwn
dCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcicsCisgICAgICAgICAgICAgICAgICAg
ICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcicsCisgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdTY2FucyBXZWJTb2Nr
ZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCisgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1kJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVu
dC1yb290JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1kb2N1bWVudF9yb290JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdEb2N1bWVudCBy
b290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcsCisgICAgICAgICAg
ICAgICAgICAgICAgJy0tY2dpLXBhdGhzJywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1jZ2lf
cGF0aHMnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NnaV9wYXRocycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdDR0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9odGJpbikgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVudF9yb290L2NnaV9w
YXRoIGFyZSBoYW5kbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgQ0dJIHBy
b2dyYW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS10bHMnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3VzZV90bHMnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbign
LWsnLAorICAgICAgICAgICAgICAgICAgICAgICctLXByaXZhdGUta2V5JywKKyAgICAgICAgICAg
ICAgICAgICAgICAnLS1wcml2YXRlX2tleScsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
cHJpdmF0ZV9rZXknLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLWMnLAorICAgICAgICAgICAgICAgICAgICAgICctLWNlcnRpZmljYXRlJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjZXJ0aWZpY2F0ZScsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUTFMgY2Vy
dGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtYXV0
aCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9hdXRoJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVxdWVzdHMg
VExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAorICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCisgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQgY2VydGlmaWNhdGUg
b3B0aW9uYWwgZXZlbiB0aG91Z2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUTFMg
Y2xpZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMt
Y2xpZW50LWNhJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0bHNfY2xpZW50X2NhJywK
KyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMg
d2hpY2ggYXJlIHVzZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0
ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWJhc2ljLWF1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9iYXNp
Y19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUmVxdWlyZXMgQmFzaWMgYXV0aGVudGljYXRpb24uJykKKyAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1iYXNpYy1hdXRoLWNyZWRlbnRpYWwnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J2Jhc2ljX2F1dGhfY3JlZGVudGlhbCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD0ndGVzdDp0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhl
IGNyZWRlbnRpYWwgb2YgYmFzaWMgYXV0aGVudGljYXRpb24gJworICAgICAgICAgICAgICAgICAg
ICAgICdieSB1c2VybmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKKyAgICBw
YXJzZXIuYWRkX29wdGlvbignLWwnLAorICAgICAgICAgICAgICAgICAgICAgICctLWxvZy1maWxl
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfZmlsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nbG9nX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jycs
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGZpbGUuJykKKyAgICAjIEN1c3RvbSBs
b2cgbGV2ZWw6CisgICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMgb2YgZWFjaCBmcmFtZSBwcm9j
ZXNzaW5nIHN0ZXAKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLAorICAgICAg
ICAgICAgICAgICAgICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0nY2hvaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLAorICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAgICAgICAg
IGNob2ljZXM9WworICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZScsICdkZWJ1ZycsICdp
bmZvJywgJ3dhcm5pbmcnLCAnd2FybicsICdlcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdjcml0aWNhbCcKKyAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0xvZyBsZXZlbC4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAg
ICAnLS1kZWZsYXRlLWxvZy1sZXZlbCcsCisgICAgICAgICctLWRlZmxhdGVfbG9nX2xldmVsJywK
KyAgICAgICAgdHlwZT0nY2hvaWNlJywKKyAgICAgICAgZGVzdD0nZGVmbGF0ZV9sb2dfbGV2ZWwn
LAorICAgICAgICBkZWZhdWx0PSd3YXJuJywKKyAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2lu
Zm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCisgICAgICAgIGhl
bHA9J0xvZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMnLAorICAgICAgICAg
ICAgICAgICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKKyAg
ICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9LTEsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ0lmIHBvc2l0aXZlIGludGVn
ZXIgaXMgc3BlY2lmaWVkLCBydW4gYSB0aHJlYWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhyZWFkcyAnCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZGljYWxseSBpbiB0aGUgc3BlY2lmaWVkIGlu
dGV2YWwgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWNvbmQuIElmIG5vbi1w
b3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdkaXNhYmxlIHRoZSB0aHJlYWQgbW9uaXRvci4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1sb2ctbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1sb2dfbWF4JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbWF4JywKKyAgICAgICAgICAgICAgICAgICAgICB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX01B
WF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRlcycp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICAnLS1sb2dfY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19jb3Vu
dCcsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywKKyAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1x
JywKKyAgICAgICAgICAgICAgICAgICAgICAnLS1xdWV1ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXplJywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBl
PSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9R
VUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6
ZScpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIF9wYXJzZV9hcmdzX2FuZF9jb25maWco
YXJncyk6CisgICAgcGFyc2VyID0gX2J1aWxkX29wdGlvbl9wYXJzZXIoKQorCisgICAgIyBGaXJz
dCwgcGFyc2Ugb3B0aW9ucyB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICB0ZW1wb3Jh
cnlfb3B0aW9ucywgdGVtcG9yYXJ5X2FyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3Mp
CisgICAgaWYgdGVtcG9yYXJ5X2FyZ3M6CisgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VucmVj
b2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJXInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBvcmFyeV9hcmdzKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgdGVtcG9y
YXJ5X29wdGlvbnMuY29uZmlnX2ZpbGU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZp
Z19mcCA9IG9wZW4odGVtcG9yYXJ5X29wdGlvbnMuY29uZmlnX2ZpbGUsICdyJykKKyAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ0ZhaWxl
ZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgZSkKKyAgICAgICAgICAg
IHN5cy5leGl0KDEpCisKKyAgICAgICAgY29uZmlnX3BhcnNlciA9IGNvbmZpZ3BhcnNlci5TYWZl
Q29uZmlnUGFyc2VyKCkKKyAgICAgICAgY29uZmlnX3BhcnNlci5yZWFkZnAoY29uZmlnX2ZwKQor
ICAgICAgICBjb25maWdfZnAuY2xvc2UoKQorCisgICAgICAgIGFyZ3NfZnJvbV9jb25maWcgPSBb
XQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29uZmlnX3BhcnNlci5pdGVtcygncHl3ZWJz
b2NrZXQnKToKKyAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKCctLScgKyBuYW1l
KQorICAgICAgICAgICAgYXJnc19mcm9tX2NvbmZpZy5hcHBlbmQodmFsdWUpCisgICAgICAgIGlm
IGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzX2Zyb21fY29uZmlnCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZpZyArIGFyZ3MKKyAg
ICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICBlbHNlOgorICAg
ICAgICByZXR1cm4gdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzCisKKworZGVmIF9t
YWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSB5
b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRoaXMgZnVuY3Rpb24g
aGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIgcHJvZ3JhbS4gRm9y
CisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBpbiB0aGlzIG1ldGhv
ZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4KKyAgICAiIiIKKwor
ICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFyZ3M9YXJncykKKwor
ICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIHNlcnZlcl91dGlsLmNv
bmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCisKKyAgICAjIFRPRE8odHlvc2hpbm8pOiBDbGVhbiB1
cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1ZXMuIE1vdmUgc29tZQorICAgICMg
b2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGNsYXNzIGlmIGl0J3MgYmV0
dGVyLgorICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gW10KKyAgICBvcHRpb25zLmlzX2V4
ZWN1dGFibGVfbWV0aG9kID0gTm9uZQorICAgIGlmIG9wdGlvbnMuY2dpX3BhdGhzOgorICAgICAg
ICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykK
KyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAg
ICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKKyAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwg
aXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAorICAgICAgICAgICAgIyBpcyBzZXQgdG8g
YSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgorICAgICAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCisg
ICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgorICAgICAg
ICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN5
Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQorICAgICAgICAgICAgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQorCisgICAgICAgICAgICBkZWYgX19jaGVj
a19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0X3Nj
cmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisKKyAgICAgICAgICAgIG9wdGlv
bnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3NjcmlwdAorCisgICAgaWYgb3B0aW9u
cy51c2VfdGxzOgorICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKKwor
ICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZp
Y2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAgICAgICAgICAgICAgJ1Rv
IHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRlLicpCisgICAgICAg
ICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIChvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbCBhbmQgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKKyAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8g
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2NlcnRf
b3B0aW9uYWwnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBp
ZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9v
cHRpb25hbDoKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJs
ZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkK
KworICAgIGlmIG5vdCBvcHRpb25zLnNjYW5fZGlyOgorICAgICAgICBvcHRpb25zLnNjYW5fZGly
ID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJzCisKKyAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19h
dXRoOgorICAgICAgICBvcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsg
YmFzZTY0LmI2NGVuY29kZSgKKyAgICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50
aWFsLmVuY29kZSgnVVRGLTgnKSkuZGVjb2RlKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgb3B0
aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMgPiAwOgorICAgICAgICAgICAgIyBS
dW4gYSB0aHJlYWQgbW9uaXRvciB0byBzaG93IHRoZSBzdGF0dXMgb2Ygc2VydmVyIHRocmVhZHMg
Zm9yCisgICAgICAgICAgICAjIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNlcnZlcl91dGlsLlRo
cmVhZE1vbml0b3IoCisgICAgICAgICAgICAgICAgb3B0aW9ucy50aHJlYWRfbW9uaXRvcl9pbnRl
cnZhbF9pbl9zZWMpLnN0YXJ0KCkKKworICAgICAgICBzZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIo
b3B0aW9ucykKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSBlKQorICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbihzeXMuYXJndlsxOl0pCisKKyMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0
L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmMzOTlmMmE4NWI5ZmU2YzUyZWM1NjkwZjU4MGQwNmIyMjJlNDc0OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKQEAgLTAsMCArMSw5NTAgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiVGhpcyBmaWxlIHByb3Zp
ZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJh
bWVzCitvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCisKK1NwZWNpZmljYXRp
b246CitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1CisiIiIKKworZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBz
dHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc2l4CisKK2Zyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1
dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2V4Y2VwdGlvbnMgaW1wb3J0IEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9leGNlcHRpb25z
IGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KK2Zyb20g
bW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFVURjhFeGNl
cHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fZXhjZXB0aW9ucyBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgorCitfTk9PUF9NQVNLRVIgPSB1dGlsLk5vb3BNYXNrZXIo
KQorCisKK2NsYXNzIEZyYW1lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsCisgICAg
ICAgICAgICAgICAgIGZpbj0xLAorICAgICAgICAgICAgICAgICByc3YxPTAsCisgICAgICAgICAg
ICAgICAgIHJzdjI9MCwKKyAgICAgICAgICAgICAgICAgcnN2Mz0wLAorICAgICAgICAgICAgICAg
ICBvcGNvZGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgcGF5bG9hZD1iJycpOgorICAgICAgICBz
ZWxmLmZpbiA9IGZpbgorICAgICAgICBzZWxmLnJzdjEgPSByc3YxCisgICAgICAgIHNlbGYucnN2
MiA9IHJzdjIKKyAgICAgICAgc2VsZi5yc3YzID0gcnN2MworICAgICAgICBzZWxmLm9wY29kZSA9
IG9wY29kZQorICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCisKKworIyBIZWxwZXIgZnVu
Y3Rpb25zIG1hZGUgcHVibGljIHRvIGJlIHVzZWQgZm9yIHdyaXRpbmcgdW5pdHRlc3RzIGZvciBX
ZWJTb2NrZXQKKyMgY2xpZW50cy4KKworCitkZWYgY3JlYXRlX2xlbmd0aF9oZWFkZXIobGVuZ3Ro
LCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgbGVuZ3RoIGhlYWRlci4KKworICAgIEFyZ3M6Cisg
ICAgICAgIGxlbmd0aDogRnJhbWUgbGVuZ3RoLiBNdXN0IGJlIGxlc3MgdGhhbiAyXjYzLgorICAg
ICAgICBtYXNrOiBNYXNrIGJpdC4gTXVzdCBiZSBib29sZWFuLgorCisgICAgUmFpc2VzOgorICAg
ICAgICBWYWx1ZUVycm9yOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVuLgorICAgICIiIgorCisgICAg
aWYgbWFzazoKKyAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICBlbHNlOgorICAgICAgICBt
YXNrX2JpdCA9IDAKKworICAgIGlmIGxlbmd0aCA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ2xlbmd0aCBtdXN0IGJlIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyJykKKyAgICBlbGlmIGxlbmd0
aCA8PSAxMjU6CisgICAgICAgIHJldHVybiB1dGlsLnBhY2tfYnl0ZShtYXNrX2JpdCB8IGxlbmd0
aCkKKyAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFj
a19ieXRlKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIGxlbmd0aCkKKyAgICBl
bGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKKyAgICAgICAgcmV0dXJuIHV0aWwucGFja19ieXRlKG1h
c2tfYml0IHwgMTI3KSArIHN0cnVjdC5wYWNrKCchUScsIGxlbmd0aCkKKyAgICBlbHNlOgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdQYXlsb2FkIGlzIHRvbyBiaWcgZm9yIG9uZSBmcmFtZScp
CisKKworZGVmIGNyZWF0ZV9oZWFkZXIob3Bjb2RlLCBwYXlsb2FkX2xlbmd0aCwgZmluLCByc3Yx
LCByc3YyLCByc3YzLCBtYXNrKToKKyAgICAiIiJDcmVhdGVzIGEgZnJhbWUgaGVhZGVyLgorCisg
ICAgUmFpc2VzOgorICAgICAgICBFeGNlcHRpb246IHdoZW4gYmFkIGRhdGEgaXMgZ2l2ZW4uCisg
ICAgIiIiCisKKyAgICBpZiBvcGNvZGUgPCAwIG9yIDB4ZiA8IG9wY29kZToKKyAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignT3Bjb2RlIG91dCBvZiByYW5nZScpCisKKyAgICBpZiBwYXlsb2FkX2xl
bmd0aCA8IDAgb3IgKDEgPDwgNjMpIDw9IHBheWxvYWRfbGVuZ3RoOgorICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdwYXlsb2FkX2xlbmd0aCBvdXQgb2YgcmFuZ2UnKQorCisgICAgaWYgKGZpbiB8
IHJzdjEgfCByc3YyIHwgcnN2MykgJiB+MToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRklO
IGJpdCBhbmQgUmVzZXJ2ZWQgYml0IHBhcmFtZXRlciBtdXN0IGJlIDAgb3IgMScpCisKKyAgICBo
ZWFkZXIgPSBiJycKKworICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQorICAgICAgICAgICAg
ICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkKKyAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgIGhlYWRlciArPSB1dGlsLnBhY2tfYnl0ZShmaXJzdF9i
eXRlKQorICAgIGhlYWRlciArPSBjcmVhdGVfbGVuZ3RoX2hlYWRlcihwYXlsb2FkX2xlbmd0aCwg
bWFzaykKKworICAgIHJldHVybiBoZWFkZXIKKworCitkZWYgX2J1aWxkX2ZyYW1lKGhlYWRlciwg
Ym9keSwgbWFzayk6CisgICAgaWYgbm90IG1hc2s6CisgICAgICAgIHJldHVybiBoZWFkZXIgKyBi
b2R5CisKKyAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQorICAgIG1hc2tlciA9IHV0
aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25jZSkKKworICAgIHJldHVybiBoZWFkZXIg
KyBtYXNraW5nX25vbmNlICsgbWFza2VyLm1hc2soYm9keSkKKworCitkZWYgX2ZpbHRlcl9hbmRf
Zm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZm9y
IGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgorICAgICAgICBmcmFtZV9maWx0ZXIuZmls
dGVyKGZyYW1lKQorCisgICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcihmcmFtZS5vcGNvZGUsIGxl
bihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKKyAgICByZXR1cm4gX2J1
aWxkX2ZyYW1lKGhlYWRlciwgZnJhbWUucGF5bG9hZCwgbWFzaykKKworCitkZWYgY3JlYXRlX2Jp
bmFyeV9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQklOQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVfZmlsdGVycz1bXSk6CisgICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGZyYW1lID0gRnJhbWUoZmlu
PWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQorICAgIHJldHVybiBfZmlsdGVy
X2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisK
K2RlZiBjcmVhdGVfdGV4dF9mcmFtZShtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisg
ICAgICAgICAgICAgICAgICAgICAgbWFzaz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBm
cmFtZV9maWx0ZXJzPVtdKToKKyAgICAiIiJDcmVhdGVzIGEgc2ltcGxlIHRleHQgZnJhbWUgd2l0
aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKKworICAgIGVuY29kZWRfbWVzc2FnZSA9
IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
ZW5jb2RlZF9tZXNzYWdlLCBvcGNvZGUsIGZpbiwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBwYXJzZV9mcmFtZShyZWNlaXZlX2J5
dGVzLAorICAgICAgICAgICAgICAgIGxvZ2dlcj1Ob25lLAorICAgICAgICAgICAgICAgIHdzX3Zl
cnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCisgICAgICAgICAgICAgICAgdW5tYXNr
X3JlY2VpdmU9VHJ1ZSk6CisgICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0dXBsZSBj
b250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAorICAgIHBheWxvYWQuCisKKyAgICBBcmdz
OgorICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJhbWUgZGF0
YSBmcm9tIGEgc3RyZWFtIG9yCisgICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4gVGhlIGZ1
bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKKyAgICAgICAgICAgIHJlYWQu
IFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGlm
CisgICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4KKyAgICAg
ICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgorICAgICAgICB3c192ZXJzaW9uOiB0aGUgdmVy
c2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCisgICAgICAgIHVubWFza19yZWNlaXZlOiB1bm1h
c2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCisgICAgICAgICAgICBm
cmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KKworICAgIFJhaXNlczoKKyAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRlcyByYWlz
ZXMgaXQuCisgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29u
dGFpbnMgaW52YWxpZCBkYXRhLgorICAgICIiIgorCisgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisgICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJhbWUnKQor
CisgICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlX2J5dGVzKDEpKQorICAgIGZpbiA9IChmaXJz
dF9ieXRlID4+IDcpICYgMQorICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKKyAgICBy
c3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAxCisgICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQp
ICYgMQorICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKKworICAgIHNlY29uZF9ieXRlID0g
b3JkKHJlY2VpdmVfYnl0ZXMoMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEK
KyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgbG9nZ2VyLmxv
ZygKKyAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9
JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAgICAgICAnTWFzaz0lcywgUGF5bG9hZF9sZW5n
dGg9JXMnLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywKKyAgICAgICAgcGF5
bG9hZF9sZW5ndGgpCisKKyAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKKyAg
ICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgJ01hc2sgYml0
IG9uIHRoZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJworICAgICAgICAg
ICAgJ2NvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCisKKyAgICAjIFRoZSBIeUJp
IGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgor
ICAgICMgaW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3Ig
MHgwLTB4RkQgaW4KKyAgICAjIDItb2N0ZXQgZmllbGQpLgorICAgIHZhbGlkX2xlbmd0aF9lbmNv
ZGluZyA9IFRydWUKKyAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCisgICAgaWYgcGF5bG9h
ZF9sZW5ndGggPT0gMTI3OgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAorICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBs
ZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRl
cyg4KQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFRJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisgICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZG
RkZGRkZGRkZGRkZGOgorICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKCdF
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKKyAgICAgICAgaWYgd3NfdmVyc2lvbiA+
PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAweDEwMDAwOgorICAgICAgICAgICAgdmFsaWRfbGVu
Z3RoX2VuY29kaW5nID0gRmFsc2UKKyAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9
IDgKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnRGVjb2RlZF9w
YXlsb2FkX2xlbmd0aD0lcycsCisgICAgICAgICAgICAgICAgICAgcGF5bG9hZF9sZW5ndGgpCisg
ICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjY6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1vY3RldCBleHRl
bmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgg
PSByZWNlaXZlX2J5dGVzKDIpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFj
aygnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgd3NfdmVyc2lv
biA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6CisgICAgICAgICAgICB2YWxpZF9sZW5n
dGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0g
MgorCisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEZWNvZGVkX3Bh
eWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6CisgICAgICAgIGxvZ2dlci53YXJuaW5n
KAorICAgICAgICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBt
aW5pbWFsIG51bWJlciBvZiAnCisgICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNp
bmcgJWQgYnl0ZXMpJywgcGF5bG9hZF9sZW5ndGgsCisgICAgICAgICAgICBsZW5ndGhfZW5jb2Rp
bmdfYnl0ZXMpCisKKyAgICBpZiBtYXNrID09IDE6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIG1hc2snKQorCisgICAgICAgIG1hc2tpbmdfbm9uY2Ug
PSByZWNlaXZlX2J5dGVzKDQpCisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNr
ZXIobWFza2luZ19ub25jZSkKKworICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9G
SU5FLCAnTWFzaz0lcicsIG1hc2tpbmdfbm9uY2UpCisgICAgZWxzZToKKyAgICAgICAgbWFza2Vy
ID0gX05PT1BfTUFTS0VSCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAn
UmVjZWl2ZSBwYXlsb2FkIGRhdGEnKQorICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9u
LkxPR0xFVkVMX0ZJTkUpOgorICAgICAgICByZWNlaXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKKwor
ICAgIHJhd19wYXlsb2FkX2J5dGVzID0gcmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIGxvZ2dlci5pc0VuYWJsZWRGb3IoY29tbW9uLkxPR0xFVkVMX0ZJTkUpOgorICAgICAg
ICBsb2dnZXIubG9nKAorICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdEb25lIHJl
Y2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCisgICAgICAgICAgICBwYXlsb2FkX2xl
bmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEwMDApCisgICAg
bG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2FkIGRhdGEnKQor
CisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAg
ICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICB1bm1hc2tlZF9ieXRlcyA9IG1h
c2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQorCisgICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZv
cihjb21tb24uTE9HTEVWRUxfRklORSk6CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0
YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1l
LnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKKworICAgIHJldHVybiBvcGNv
ZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKKworCitjbGFzcyBGcmFn
bWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6CisgICAgIiIiQSBzdGF0ZWZ1bCBjbGFzcyB0byBz
ZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
c2ssIGZyYW1lX2ZpbHRlcnM9W10sIGVuY29kZV91dGY4PVRydWUpOgorICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLiIiIgorCisgICAgICAgIHNlbGYuX21hc2sgPSBtYXNrCisgICAg
ICAgIHNlbGYuX2ZyYW1lX2ZpbHRlcnMgPSBmcmFtZV9maWx0ZXJzCisgICAgICAgICMgVGhpcyBp
cyBmb3Igc2tpcHBpbmcgVVRGLTggZW5jb2Rpbmcgd2hlbiBidWlsZGluZyB0ZXh0IHR5cGUgZnJh
bWVzCisgICAgICAgICMgZnJvbSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIHNlbGYuX2VuY29k
ZV91dGY4ID0gZW5jb2RlX3V0ZjgKKworICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFsc2UKKwor
ICAgICAgICAjIEhvbGQgb3Bjb2RlIG9mIHRoZSBmaXJzdCBmcmFtZSBpbiBtZXNzYWdlcyB0byB2
ZXJpZnkgdHlwZXMgb2Ygb3RoZXIKKyAgICAgICAgIyBmcmFtZXMgaW4gdGhlIG1lc3NhZ2UgYXJl
IGFsbCB0aGUgc2FtZS4KKyAgICAgICAgc2VsZi5fb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhU
CisKKyAgICBkZWYgYnVpbGQoc2VsZiwgcGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSk6CisgICAg
ICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgIGZyYW1lX3R5cGUgPSBjb21tb24uT1BDT0RFX0JJ
TkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENP
REVfVEVYVAorICAgICAgICBpZiBzZWxmLl9zdGFydGVkOgorICAgICAgICAgICAgaWYgc2VsZi5f
b3Bjb2RlICE9IGZyYW1lX3R5cGU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
TWVzc2FnZSB0eXBlcyBhcmUgZGlmZmVyZW50IGluIGZyYW1lcyBmb3IgJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG1lc3NhZ2UnKQorICAgICAgICAgICAgb3Bj
b2RlID0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG9wY29kZSA9IGZyYW1lX3R5cGUKKyAgICAgICAgICAgIHNlbGYuX29wY29kZSA9IGZyYW1l
X3R5cGUKKworICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gRmFs
c2UKKyAgICAgICAgICAgIGZpbiA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
X3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBmaW4gPSAwCisKKyAgICAgICAgaWYgYmluYXJ5
IG9yIG5vdCBzZWxmLl9lbmNvZGVfdXRmODoKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVfYmlu
YXJ5X2ZyYW1lKHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKHBheWxvYWRf
ZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycykKKworCitkZWYgX2NyZWF0ZV9jb250cm9s
X2ZyYW1lKG9wY29kZSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycyk6CisgICAgZnJhbWUgPSBG
cmFtZShvcGNvZGU9b3Bjb2RlLCBwYXlsb2FkPWJvZHkpCisKKyAgICBmb3IgZnJhbWVfZmlsdGVy
IGluIGZyYW1lX2ZpbHRlcnM6CisgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisK
KyAgICBpZiBsZW4oZnJhbWUucGF5bG9hZCkgPiAxMjU6CisgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9s
IGZyYW1lcyBtdXN0IGJlIDEyNSBieXRlcyBvciBsZXNzJykKKworICAgIGhlYWRlciA9IGNyZWF0
ZV9oZWFkZXIoZnJhbWUub3Bjb2RlLCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJz
djMsIG1hc2spCisgICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIsIGZyYW1lLnBheWxvYWQs
IG1hc2spCisKKworZGVmIGNyZWF0ZV9waW5nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1l
X2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9Q
Q09ERV9QSU5HLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQorCisKK2RlZiBjcmVhdGVfcG9u
Z19mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKKyAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgbWFzaywgZnJh
bWVfZmlsdGVycykKKworCitkZWYgY3JlYXRlX2Nsb3NlX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2Us
IGZyYW1lX2ZpbHRlcnM9W10pOgorICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29t
bW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lX2ZpbHRlcnMpCisKKworZGVmIGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9i
b2R5KGNvZGUsIHJlYXNvbik6CisgICAgYm9keSA9IGInJworICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6CisgICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYCisg
ICAgICAgICAgICAgICAgb3IgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBv
dXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRAorICAgICAgICAgICAgICAgIG9yIGNvZGUgPT0gY29tbW9uLlNUQVRVU19BQk5P
Uk1BTF9DTE9TVVJFCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24uU1RBVFVTX1RM
U19IQU5EU0hBS0UpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdT
dGF0dXMgY29kZSBpcyByZXNlcnZlZCBwc2V1ZG8gJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjb2RlJykKKyAgICAgICAgZW5jb2RlZF9yZWFzb24gPSByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSAr
IGVuY29kZWRfcmVhc29uCisgICAgcmV0dXJuIGJvZHkKKworCitjbGFzcyBTdHJlYW1PcHRpb25z
KG9iamVjdCk6CisgICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVlcyB0byBjb25maWd1cmUgU3RyZWFt
IG9iamVjdHMuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJDb25zdHJ1
Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gZnJh
bWVzLgorICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorICAgICAgICBz
ZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQorCisgICAgICAgICMgRmlsdGVycyBhcHBs
aWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZW0u
CisgICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKyAgICAgICAgc2Vs
Zi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQorCisgICAgICAgIHNlbGYuZW5jb2RlX3Rl
eHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQorICAgICAgICBzZWxmLm1hc2tfc2VuZCA9IEZhbHNl
CisgICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCisKKworY2xhc3MgU3RyZWFtKG9i
amVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldCBwcm90b2NvbAorICAgIChSRkMgNjQ1NSkuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisKKyAgICAgICAgc2VsZi5fcmVxdWVz
dC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVy
X3Rlcm1pbmF0ZWQgPSBGYWxzZQorCisgICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBm
cmFnbWVudHMuCisgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCisgICAgICAg
ICMgSG9sZHMgdGhlIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCisgICAgICAgIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9IE5vbmUKKworICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVu
dGVkRnJhbWVCdWlsZGVyKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNl
bGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycywKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4KQorCisgICAgICAgIHNlbGYuX3Bpbmdf
cXVldWUgPSBkZXF1ZSgpCisKKyAgICBkZWYgX3JlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBh
bnkgZXhjZXB0aW9uLAorICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhj
ZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWluLgorCisgICAgICAgIFJhaXNlczoKKyAgICAg
ICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBl
bXB0eSBzdHJpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJl
YWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCisgICAgICAg
ICAgICBpZiBub3QgcmVhZF9ieXRlczoKKyAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9u
VGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBi
eXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBjb25uZWN0aW9uJyAlCisgICAgICAgICAgICAg
ICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsICkp
KQorICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKKyAgICAgICAgZXhjZXB0IElPRXJyb3Ig
YXMgZToKKyAgICAgICAgICAgICMgQWxzbyBjYXRjaCBhbiBJT0Vycm9yIGJlY2F1c2UgbW9kX3B5
dGhvbiB0aHJvd3MgaXQuCisgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2aW5nICVkIGJ5dGUgZmFpbGVkLiBJT0Vy
cm9yICglcykgb2NjdXJyZWQnICUKKyAgICAgICAgICAgICAgICAobGVuZ3RoLCBlKSkKKworICAg
IGRlZiBfd3JpdGUoc2VsZiwgYnl0ZXNfdG9fd3JpdGUpOgorICAgICAgICAiIiJXcml0ZXMgZ2l2
ZW4gYnl0ZXMgdG8gY29ubmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAor
ICAgICAgICBwcmVwZW5kcyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ug
YW5kIHJhaXNlIGFnYWluLgorICAgICAgICAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXNfdG9fd3JpdGUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdl
X3RvX2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0
byAlcjogJyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1v
dGVfYWRkciwgKSwgZSkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgcmVjZWl2ZV9ieXRl
cyhzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWNlaXZlcyBtdWx0aXBsZSBieXRlcy4gUmV0
cmllcyByZWFkIHdoZW4gd2UgY291bGRuJ3QgcmVjZWl2ZSB0aGUKKyAgICAgICAgc3BlY2lmaWVk
IGFtb3VudC4gVGhpcyBtZXRob2QgcmV0dXJucyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVhZF9ieXRl
cyA9IFtdCisgICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6CisgICAgICAgICAgICBuZXdfcmVhZF9i
eXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQorICAgICAgICAgICAgcmVhZF9ieXRlcy5hcHBlbmQo
bmV3X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICBsZW5ndGggLT0gbGVuKG5ld19yZWFkX2J5dGVz
KQorICAgICAgICByZXR1cm4gYicnLmpvaW4ocmVhZF9ieXRlcykKKworICAgIGRlZiBfcmVhZF91
bnRpbChzZWxmLCBkZWxpbV9jaGFyKToKKyAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2Ug
ZW5jb3VudGVyIGRlbGltX2NoYXIuIFRoZSByZXN1bHQgd2lsbCBub3QKKyAgICAgICAgY29udGFp
biBkZWxpbV9jaGFyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCisgICAg
ICAgICIiIgorCisgICAgICAgIHJlYWRfYnl0ZXMgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgY2ggPSBzZWxmLl9yZWFkKDEpCisgICAgICAgICAgICBpZiBjaCA9PSBkZWxp
bV9jaGFyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZWFkX2J5dGVzLmFw
cGVuZChjaCkKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlYWRfYnl0ZXMpCisKKyAgICBkZWYg
X3JlY2VpdmVfZnJhbWUoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIHJl
dHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcKKyAgICAgICAgZWFj
aCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KKworICAgICAgICBSYWlzZXM6
CisgICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJl
dHVybnMgZW1wdHkKKyAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICBJbnZhbGlk
RnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4KKyAg
ICAgICAgIiIiCisgICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCisKKyAgICAgICAgcmV0dXJuIHBh
cnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQor
CisgICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKKyAgICAgICAg
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZSgpCisKKyAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sCisgICAgICAgICAg
ICAgICAgICAgICByc3YxPXJzdjEsCisgICAgICAgICAgICAgICAgICAgICByc3YyPXJzdjIsCisg
ICAgICAgICAgICAgICAgICAgICByc3YzPXJzdjMsCisgICAgICAgICAgICAgICAgICAgICBvcGNv
ZGU9b3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZD11bm1hc2tlZF9ieXRlcykK
KworICAgIGRlZiByZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNl
aXZlcyBhIGZyYW1lIGFuZCBhcHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVy
cy4KKyAgICAgICAgVGhlIGZyYW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAgICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCisg
ICAgICAgIC0gVGhlIG9wY29kZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCisKKyAg
ICAgICAgRE8gTk9UIFVTRSB0aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2Zy
YW1lX29iamVjdCgpCisgICAgICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFt
ZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9m
aWx0ZXJlZF9mcmFtZSgpJykKKyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BD
T0RFX1RFWFQKKyAgICAgICAgICAgICAgICBhbmQgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENP
REVfQklOQVJZKToKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcK
KyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKKworICAgICAgICBm
b3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoK
KyAgICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCisgICAgICAgIGZvciBtZXNz
YWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKKyAg
ICAgICAgICAgIGZyYW1lLnBheWxvYWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgcmV0dXJuIGZyYW1lCisKKyAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICAiIiJTZW5kIG1lc3Nh
Z2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29k
ZSBvciBiaW5hcnkgaW4gc3RyIHRvIHNlbmQuCisgICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVz
c2FnZSBhcyBiaW5hcnkgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVz
c2FnZSB0eXBlIG9yCisgICAgICAgICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVx
dWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtl
JykKKworICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgc2l4LnRleHRf
dHlwZSk6CisgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IG5vdCBiZSBpbnN0YW5jZSBv
ZiBVbmljb2RlJykKKworICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9u
cy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2Fn
ZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgU2V0IHRoaXMgdG8gYW55IHBvc2l0aXZlIGludGVnZXIgdG8gbGltaXQgbWF4
aW11bSBzaXplIG9mIGRhdGEgaW4KKyAgICAgICAgICAgICMgcGF5bG9hZCBkYXRhIG9mIGVhY2gg
ZnJhbWUuCisgICAgICAgICAgICBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPSAtMQorCisgICAgICAg
ICAgICBpZiBNQVhfUEFZTE9BRF9EQVRBX1NJWkUgPD0gMDoKKyAgICAgICAgICAgICAgICBzZWxm
Ll93cml0ZShzZWxmLl93cml0ZXIuYnVpbGQobWVzc2FnZSwgZW5kLCBiaW5hcnkpKQorICAgICAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBieXRlc193cml0dGVuID0gMAorICAgICAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBlbmRfZm9yX3RoaXNfZnJhbWUgPSBl
bmQKKyAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA9IGxlbihtZXNzYWdlKSAtIGJ5dGVz
X3dyaXR0ZW4KKyAgICAgICAgICAgICAgICBpZiAoTUFYX1BBWUxPQURfREFUQV9TSVpFID4gMAor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5dGVzX3RvX3dyaXRlID4gTUFYX1BBWUxPQURf
REFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFs
c2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRB
X1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fd3JpdGVyLmJ1aWxkKAorICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5
dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lLCBi
aW5hcnkpCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICAgICAgICAg
ICAgICBieXRlc193cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAgICAgICAgICAgICAj
IFRoaXMgaWYgbXVzdCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28g
dGhhdAorICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCisgICAg
ICAgICAgICAgICAgaWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAg
ICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oZSkKKworICAgIGRlZiBfZ2V0X21lc3Nh
Z2VfZnJvbV9mcmFtZShzZWxmLCBmcmFtZSk6CisgICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZy
b20gZnJhbWUuIElmIHRoZSBtZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKKyAgICAg
ICAgZnJhbWVzIGFuZCB0aGUgZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUs
IHRoaXMgbWV0aG9kCisgICAgICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2ls
bCBiZSByZXR1cm5lZCB3aGVuIHRoZSBsYXN0CisgICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMg
cGFzc2VkIHRvIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdt
ZW50YXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMg
aW52YWxpZCBkYXRhLgorICAgICAgICAiIiIKKworICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0g
Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVj
ZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ1JlY2VpdmVkIGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24g
JworICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFydGVkJykKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1l
IGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRl
ZCcpCisKKyAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAgICAgICAgICAgICAjIEVuZCBv
ZiBmcmFnbWVudGF0aW9uIGZyYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJh
Z21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBi
Jycuam9pbihzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAgICAgICAgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBmcmFtZQor
ICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5
bG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZy
YW1lLmZpbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFt
ZSB3aXRob3V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBleGlzdGlu
ZyBmcmFnbWVudGF0aW9uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAnTmV3IGZyYWdtZW50YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0aW5nICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKworICAgICAgICAg
ICAgaWYgZnJhbWUuZmluOgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVudGVkIGZyYW1lCisK
KyAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKworICAgICAgICAg
ICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgorICAgICAg
ICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZCcpCisKKyAg
ICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcHJvY2Vzc19jbG9zZV9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgY2xvc2UgbWVzc2Fn
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbWVzc2FnZTogY2xvc2UgbWVzc2FnZS4K
KworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gdGhlIG1lc3NhZ2UgaXMgaW52YWxpZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICAjIFN0YXR1cyBjb2Rl
IGlzIG9wdGlvbmFsLiBXZSBjYW4gaGF2ZSBzdGF0dXMgcmVhc29uIG9ubHkgaWYgd2UKKyAgICAg
ICAgIyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBlbXB0eSBzdHJpbmcu
IFNvLAorICAgICAgICAjIGFsbG93ZWQgY2FzZXMgYXJlCisgICAgICAgICMgLSBubyBhcHBsaWNh
dGlvbiBkYXRhOiBubyBjb2RlIG5vIHJlYXNvbgorICAgICAgICAjIC0gMiBvY3RldCBvZiBhcHBs
aWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29uCisgICAgICAgICMgLSAzIG9yIG1v
cmUgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogYm90aCBjb2RlIGFuZCByZWFzb24KKyAgICAg
ICAgaWYgbGVuKG1lc3NhZ2UpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1JlY2VpdmVkIGNsb3NlIGZyYW1lIChlbXB0eSBib2R5KScpCisgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRAor
ICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgorICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBz
dGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2Rl
IG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6CisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKCchSCcs
IG1lc3NhZ2VbMDoyXSlbMF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVh
c29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBs
YWNlJykKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJh
bWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKKworICAgICAgICAjIEFzIHdlJ3Zl
IHJlY2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUK
KyAgICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0
aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAjIFJTVCBzZW5kaW5nLgorCisgICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCisgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFCisg
ICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19k
aXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fcmVxdWVzdC5fZGlz
cGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBpZiBjb2RlIGlzIE5v
bmUgYW5kIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAnSGFuZGxl
ciBzcGVjaWZpZWQgcmVhc29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKKyAgICAgICAgICAg
ICAgICByZWFzb24gPSAnJworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6CisgICAgICAg
ICAgICAgICAgcmVhc29uID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFr
ZShjb2RlLCByZWFzb24pCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAg
ICdBY2tub3dsZWRnZWQgY2xvc2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcK
KyAgICAgICAgICAgICcoY29kZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKKworICAg
IGRlZiBfcHJvY2Vzc19waW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIlBy
b2Nlc3NlcyBwaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3Nh
Z2U6IHBpbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCisgICAgICAgICAgICBp
ZiBoYW5kbGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9zZW5kX3BvbmcobWVzc2FnZSkKKwor
ICAgIGRlZiBfcHJvY2Vzc19wb25nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIi
IlByb2Nlc3NlcyBwb25nIG1lc3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1l
c3NhZ2U6IHBvbmcgbWVzc2FnZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogQWRkIHBpbmcgdGltZW91dCBoYW5kbGluZy4KKworICAgICAgICBpbmZsaWdodF9waW5n
cyA9IGRlcXVlKCkKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHkgPSBzZWxmLl9waW5nX3F1ZXVlLnBvcGxlZnQoKQor
ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBpbmZsaWdodF9waW5ncyBjb250YWlucyBwaW5ncyBpZ25vcmVkIGJ5IHRoZQor
ICAgICAgICAgICAgICAgICAgICAjIG90aGVyIHBlZXIuIEp1c3QgZm9yZ2V0IHRoZW0uCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdQaW5nICVyIGlzIGFja2VkICglZCBwaW5ncyB3ZXJlIGlnbm9yZWQpJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JvZHksIGxlbihpbmZsaWdodF9waW5ncykpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgaW5mbGlnaHRfcGluZ3MuYXBwZW5kKGV4cGVjdGVkX2JvZHkpCisgICAgICAgICAg
ICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSByZWNlaXZlZCBwb25n
IHdhcyB1bnNvbGljaXRlZCBwb25nLiBLZWVwIHRoZQorICAgICAgICAgICAgICAgICMgcGluZyBx
dWV1ZSBhcyBpcy4KKyAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRf
cGluZ3MKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgdW5z
b2xpY2l0ZWQgcG9uZycpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIKKyAgICAg
ICAgICAgIGlmIGhhbmRsZXI6CisgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0
LCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBw
YXNzCisKKyAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZl
IGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCisg
ICAgICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgorCisgICAgICAgIFJldHVybnM6Cisg
ICAgICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCisgICAgICAgICAgICAtIGFzIHVu
aWNvZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQorICAgICAgICAgICAgLSBhcyBz
dHIgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCisgICAgICAgICAgICBvciBOb25l
IGlmZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICAgICAgUmFpc2VzOgorICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJt
aW5hdGVkCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQorICAgICAgICAg
ICAgICAgIHN0cmluZy4KKyAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0
aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZAorICAgICAgICAgICAgICAgIGRhdGEuCisgICAgICAg
ICAgICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBo
YXMKKyAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBj
YW4gaWdub3JlIHRoaXMKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJl
Y2VpdmluZyB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBh
ZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKKyAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykK
KworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBi
bG9jayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgICAgICBmcmFtZSA9IHNl
bGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKKworICAgICAgICAgICAgIyBDaGVj
ayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9sIGZyYW1lcwor
ICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJhbWUuCisgICAg
ICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUjc2Vj
dGlvbi01LjUKKyAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUu
b3Bjb2RlKQorICAgICAgICAgICAgICAgICAgICBhbmQgbGVuKGZyYW1lLnBheWxvYWQpID4gMTI1
KToKKyAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgICAgICdQYXlsb2FkIGRhdGEgc2l6ZSBvZiBjb250cm9sIGZyYW1lcyBtdXN0IGJl
IDEyNSBieXRlcyBvciAnCisgICAgICAgICAgICAgICAgICAgICdsZXNzJykKKworICAgICAgICAg
ICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnM6CisgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKKworICAgICAg
ICAgICAgaWYgZnJhbWUucnN2MSBvciBmcmFtZS5yc3YyIG9yIGZyYW1lLnJzdjM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMgc2V0IChyc3YgPSAlZCVkJWQpJyAlCisgICAgICAg
ICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzKSkKKworICAg
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUoZnJhbWUpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21p
bmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlX2Zp
bHRlci5maWx0ZXIobWVzc2FnZSkKKworICAgICAgICAgICAgaWYgc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlID09IGNvbW1vbi5PUENPREVfVEVYVDoKKyAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2Nr
ZXQgcHJvdG9jb2wgc2VjdGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAorICAgICAgICAg
ICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VN
RU5UCisgICAgICAgICAgICAgICAgIyBDSEFSQUNURVIuCisgICAgICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5kZWNvZGUoJ3V0Zi04JykKKyAgICAg
ICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEludmFsaWRVVEY4RXhjZXB0aW9uKGUpCisgICAgICAgICAgICBlbGlmIHNl
bGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9DTE9TRToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNz
X2Nsb3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9QSU5H
OgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfcGluZ19tZXNzYWdlKG1lc3NhZ2UpCisg
ICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BP
Tkc6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3NhZ2UobWVzc2FnZSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRGcmFt
ZUV4Y2VwdGlvbignT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29kZSkK
KworICAgIGRlZiBfc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgor
ICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29u
KQorICAgICAgICBmcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZSgKKyAgICAgICAgICAgIGJvZHks
CisgICAgICAgICAgICBtYXNrPXNlbGYuX29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAg
ZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisKKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKKworICAgICAgICBz
ZWxmLl93cml0ZShmcmFtZSkKKworICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgorICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQg
Y29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGJsb2NrcyB1bnRpbAorICAgICAgICBp
dCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8gdGhlIGNsb3NpbmcgaGFuZHNoYWtlLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJh
bWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQorICAgICAgICAgICAgICAgIGZyYW1lIHdpdGgg
ZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCisgICAgICAgICAgICByZWFzb246IHN0cmluZyByZXBy
ZXNlbnRpbmcgY2xvc2UgcmVhc29uLgorICAgICAgICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3
aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJlc3BvbnNlLgorICAgICAgICBSYWlzZXM6Cisg
ICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmll
ZCB3aXRoIGNvZGUgTm9uZQorICAgICAgICAgICAgb3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5j
ZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNl
cnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBmcmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9z
ZV9tZXNzYWdlKCkuCisgICAgICAgICMgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0
ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90ZXJtaW5hdGVkIHRvCisgICAgICAgICMgVHJ1
ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNs
b3NlCisgICAgICAgICMgZnJhbWUuIFdlJ3JlIGluaXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFr
ZS4KKworICAgICAgICBpZiBjb2RlIGlzIE5vbmU6CisgICAgICAgICAgICBpZiByZWFzb24gaXMg
bm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBCYWRP
cGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdjbG9zZSByZWFzb24gbXVz
dCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMgTm9uZScpCisgICAgICAgICAgICByZWFzb24g
PSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29u
LCBieXRlcykgYW5kIG5vdCBpc2luc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICByZWFzb24s
IHNpeC50ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIGJ5dGVzIG9yIHVuaWNvZGUnKQorCisgICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19o
YW5kc2hha2UoY29kZSwgcmVhc29uKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0luaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlLCByZWFzb24pCisKKyAgICAgICAgaWYgKGNvZGUgPT0gY29t
bW9uLlNUQVRVU19HT0lOR19BV0FZCisgICAgICAgICAgICAgICAgb3IgY29kZSA9PSBjb21tb24u
U1RBVFVTX1BST1RPQ09MX0VSUk9SKSBvciBub3Qgd2FpdF9yZXNwb25zZToKKyAgICAgICAgICAg
ICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUgaWYgdGhl
IHJlYXNvbiBpcworICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvciBvciB0aGF0IHRoZSBzZXJ2
ZXIgaXMgZ29pbmcgYXdheS4gRm9yIHNvbWUgb2YKKyAgICAgICAgICAgICMgb3RoZXIgcmVhc29u
cywgaXQgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSwKKyAg
ICAgICAgICAgICMgYnV0IGl0J3Mgbm90IGNsZWFyLCB5ZXQuCisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWlu
YXRlZC8gZmxhZyBoYXMgYmVlbiBzZXQsCisgICAgICAgICMgb3IgdW50aWwgYSBzZXJ2ZXItZGVm
aW5lZCB0aW1lb3V0IGV4cGlyZXMuCisgICAgICAgICMKKyAgICAgICAgIyBGb3Igbm93LCB3ZSBl
eHBlY3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVyIHNlbmRpbmcKKyAg
ICAgICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJl
Y2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2luZyBoYW5kc2hha2UnKQorICAg
ICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKyAgICAgICAg
IyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4pIGRvZXNuJ3QgaGF2ZSBjbG9z
ZSBtZXRob2QuCisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHksIGJpbmFyeT1GYWxzZSk6
CisgICAgICAgIGlmIG5vdCBiaW5hcnkgYW5kIGlzaW5zdGFuY2UoYm9keSwgc2l4LnRleHRfdHlw
ZSk6CisgICAgICAgICAgICBib2R5ID0gYm9keS5lbmNvZGUoJ1VURi04JykKKyAgICAgICAgZnJh
bWUgPSBjcmVhdGVfcGluZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQorCisgICAgICAgIHNlbGYu
X3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5
KToKKyAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZShib2R5LCBzZWxmLl9vcHRpb25z
Lm1hc2tfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQor
CisgICAgZGVmIGdldF9sYXN0X3JlY2VpdmVkX29wY29kZShzZWxmKToKKyAgICAgICAgIiIiUmV0
dXJucyB0aGUgb3Bjb2RlIG9mIHRoZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGljaCB0aGUgbGFzdCBy
ZWNlaXZlZAorICAgICAgICBmcmFtZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHZh
bGlkIGlmZiBpbW1lZGlhdGVseSBhZnRlcgorICAgICAgICByZWNlaXZlX21lc3NhZ2UgY2FsbC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQorCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRp
bC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMTY0ZTZiOGU0NjgyNDY3MTg3ZmMzODk0YjFjYTc5ZWM4MmE0MTNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L3V0
aWwucHkKQEAgLTAsMCArMSw0MDUgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV2ViU29ja2V0IHV0
aWxpdGllcy4iIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2lt
cG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzaXgKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBtYXAKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHps
aWIKKwordHJ5OgorICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcK
K2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKKworZGVmIHByZXBlbmRfbWVzc2FnZV90
b19leGNlcHRpb24obWVzc2FnZSwgZXhjKToKKyAgICAiIiJQcmVwZW5kIG1lc3NhZ2UgdG8gdGhl
IGV4Y2VwdGlvbi4iIiIKKyAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3RyKGV4YyksICkKKyAg
ICByZXR1cm4KKworCitkZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgp
OgorICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24g
dG8gcnVuIGN5Z3dpbiBwcm9ncmFtCisgICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9l
c24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKKyAgICB3aGljaCBpcyB0eXBp
Y2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCisgICAgRm9y
IFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFy
aWVzLgorCisgICAgQXJnczoKKyAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQorICAg
ICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUK
KyAgICBSZXR1cm5zOgorICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgorICAg
ICIiIgorICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKKyAgICAgICAgcmV0dXJuIGludGVycAorICAg
IG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCisgICAgaWYgbToK
KyAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQorICAg
ICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQorICAgIHJldHVybiBpbnRlcnAKKworCitkZWYg
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgorICAgIHIi
IiJHZXQgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KKworICAg
IEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQs
IGUuZy4gaW4gV2ViS2l0LAorICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVs
bG8ucGwiLgorICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0s
IGl0IGNvdWxkbid0LiAgU28sIGZpeAorICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9w
YXRoPlxwZXJsLmV4ZSIuCisKKyAgICBBcmdzOgorICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1l
IG9mIHRoZSBzY3JpcHQKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3
aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgorICAgICIiIgorICAg
IGZwID0gb3BlbihzY3JpcHRfcGF0aCkKKyAgICBsaW5lID0gZnAucmVhZGxpbmUoKQorICAgIGZw
LmNsb3NlKCkKKyAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQorICAgIGlmIG06Cisg
ICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgp
CisgICAgcmV0dXJuIE5vbmUKKworCitkZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0
aCk6CisgICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4K
KworICAgIEFyZ3M6CisgICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkg
aWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KKyAgICAiIiIKKyAgICBf
X29yaWdfcG9wZW4zID0gb3MucG9wZW4zCisKKyAgICBkZWYgX193cmFwX3BvcGVuMyhjbWQsIG1v
ZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAgICAgY21kbGluZSA9IGNtZC5zcGxpdCgnICcpCisg
ICAgICAgIGludGVycCA9IGdldF9zY3JpcHRfaW50ZXJwKGNtZGxpbmVbMF0sIGN5Z3dpbl9wYXRo
KQorICAgICAgICBpZiBpbnRlcnA6CisgICAgICAgICAgICBjbWQgPSBpbnRlcnAgKyAnICcgKyBj
bWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19wb3BlbjMoY21kLCBtb2RlLCBidWZzaXplKQorCisg
ICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMworCisKK2RlZiBoZXhpZnkocyk6CisgICAgcmV0
dXJuICcgJy5qb2luKFsnJTAyeCcgJSB4IGZvciB4IGluIHNpeC5pdGVyYnl0ZXMocyldKQorCisK
K2RlZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgorICAgICIiIlJldHVybiB0aGUgbG9nZ2luZyBjbGFz
cyBpbmZvcm1hdGlvbi4iIiIKKyAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIoJyVzLiVzJyAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBv
Ll9fY2xhc3NfXy5fX25hbWVfXykpCisKKworZGVmIHBhY2tfYnl0ZShiKToKKyAgICAiIiJQYWNr
IGFuIGludGVnZXIgdG8gbmV0d29yay1vcmRlcmVkIGJ5dGUiIiIKKyAgICByZXR1cm4gc3RydWN0
LnBhY2soJyFCJywgYikKKworCitjbGFzcyBOb29wTWFza2VyKG9iamVjdCk6CisgICAgIiIiQSBO
b09wIG1hc2tpbmcgb2JqZWN0LgorCisgICAgVGhpcyBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFz
IFJlcGVhdGVkWG9yTWFza2VyIGJ1dCBqdXN0IHJldHVybnMKKyAgICB0aGUgc3RyaW5nIHBhc3Nl
ZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgIiIiTm9PcC4iIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIG1h
c2soc2VsZiwgcyk6CisgICAgICAgICIiIk5vT3AuIiIiCisgICAgICAgIHJldHVybiBzCisKKwor
Y2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0KToKKyAgICAiIiJBIG1hc2tpbmcgb2JqZWN0
IHRoYXQgYXBwbGllcyBYT1Igb24gdGhlIHN0cmluZy4KKworICAgIEFwcGxpZXMgWE9SIG9uIHRo
ZSBieXRlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhvZCB3aXRoIHRoZSBtYXNraW5nIGJ5dGVz
CisgICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJlcGVhdGVkbHkuIFRoaXMgb2JqZWN0IHJl
bWVtYmVycyB0aGUgcG9zaXRpb24KKyAgICBpbiB0aGUgbWFza2luZyBieXRlcyB0aGUgbGFzdCBt
YXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVzIGZyb20KKyAgICB0aGF0IHBvaW50IG9u
IHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1hc2tpbmdfa2V5KToKKyAgICAgICAgc2VsZi5fbWFza2luZ19rZXkgPSBtYXNraW5nX2tl
eQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9IDAKKworICAgIGRlZiBfbWFza191
c2luZ19zd2lnKHNlbGYsIHMpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBtYXNrIHZpYSBTV0lH
LiIiIgorICAgICAgICBtYXNrZWRfZGF0YSA9IGZhc3RfbWFza2luZy5tYXNrKHMsIHNlbGYuX21h
c2tpbmdfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X21hc2tpbmdfa2V5X2luZGV4KQorICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9ICgo
c2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKKyAgICAgICAgcmV0dXJuIG1h
c2tlZF9kYXRhCisKKyAgICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwgcyk6CisgICAgICAg
ICIiIlBlcmZvcm0gdGhlIG1hc2sgdmlhIHB5dGhvbi4iIiIKKyAgICAgICAgaWYgaXNpbnN0YW5j
ZShzLCBzaXgudGV4dF90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAnTWFza2luZyBPcGVyYXRpb24gc2hvdWxkIG5vdCBwcm9jZXNzIHVuaWNvZGUg
c3RyaW5ncycpCisKKyAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KHMpCisKKyAgICAgICAgIyBV
c2UgdGVtcG9yYXJ5IGxvY2FsIHZhcmlhYmxlcyB0byBlbGltaW5hdGUgdGhlIGNvc3QgdG8gYWNj
ZXNzCisgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICBtYXNraW5nX2tleSA9IFtjIGZvciBj
IGluIHNpeC5pdGVyYnl0ZXMoc2VsZi5fbWFza2luZ19rZXkpXQorICAgICAgICBtYXNraW5nX2tl
eV9zaXplID0gbGVuKG1hc2tpbmdfa2V5KQorICAgICAgICBtYXNraW5nX2tleV9pbmRleCA9IHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJlc3Vs
dCkpOgorICAgICAgICAgICAgcmVzdWx0W2ldIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2lu
ZGV4XQorICAgICAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXgg
KyAxKSAlIG1hc2tpbmdfa2V5X3NpemUKKworICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRl
eCA9IG1hc2tpbmdfa2V5X2luZGV4CisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKwor
ICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKKyAgICAgICAgbWFzayA9IF9tYXNr
X3VzaW5nX3N3aWcKKyAgICBlbHNlOgorICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkK
KworCisjIEJ5IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBD
TUYvRkxHICgyIG9jdGV0KSBhbmQKKyMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIg
c28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKKyMgZGVmbGF0ZSBsaWJyYXJ5
LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5
LgorIyBMWjc3IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9u
IGFuZCBkZWNvbXByZXNzaW9uLgorIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNl
IDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKKyMgY29tcHJlc3Npb24sIHdlIHVz
ZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KKyMKKyMgQ29tcHJlc3Npb24gbGV2ZWwg
aXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCisj
IHRvIGRlY29kZS4KKyMKKyMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2Yg
emxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCisjIFB5dGhvbi4gU2VlIGFsc28gUkZD
MTk1MCAoWkxJQiAzLjMpLgorCisKK2NsYXNzIF9EZWZsYXRlcihvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9j
bGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICAjIFVzaW5nIHRoZSBzbWFsbGVzdCB3aW5kb3cg
Yml0cyBvZiA5IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KKyAgICAgICAgIyBPbiBXZWJT
b2NrZXQgc3BlYywgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXQgaXMgOC4gSG93ZXZlciwgemxpYiBk
b2VzCisgICAgICAgICMgbm90IGFjY2VwdCB3aW5kb3dfYml0ID0gOC4KKyAgICAgICAgIworICAg
ICAgICAjIEJlY2F1c2Ugb2YgYSB6bGliIGRlZmxhdGUgcXVpcmssIGJhY2stcmVmZXJlbmNlcyB3
aWxsIG5vdCB1c2UgdGhlCisgICAgICAgICMgZW50aXJlIHJhbmdlIG9mIDEgPDwgd2luZG93X2Jp
dHMsIGJ1dCB3aWxsIGluc3RlYWQgdXNlIGEgcmVzdHJpY3RlZAorICAgICAgICAjIHJhbmdlIG9m
ICgxIDw8IHdpbmRvd19iaXRzKSAtIDI2Mi4gV2l0aCBhbiBpbmNyZWFzZWQgd2luZG93X2JpdHMg
PSA5LAorICAgICAgICAjIGJhY2stcmVmZXJlbmNlcyB3aWxsIGJlIHdpdGhpbiBhIHJhbmdlIG9m
IDI1MC4gVGhlc2UgY2FuIHN0aWxsIGJlCisgICAgICAgICMgZGVjb21wcmVzc2VkIHdpdGggd2lu
ZG93X2JpdHMgPSA4IGFuZCB0aGUgMjU2LWJ5dGUgd2luZG93IHVzZWQgdGhlcmUuCisgICAgICAg
ICMKKyAgICAgICAgIyBTaW1pbGFyIGRpc3NjdXNzaW9ucyBjYW4gYmUgZm91bmQgaW4gaHR0cHM6
Ly9jcmJ1Zy5jb20vNjkxMDc0CisgICAgICAgIHdpbmRvd19iaXRzID0gbWF4KHdpbmRvd19iaXRz
LCA5KQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHpsaWIuREVGTEFURUQsIC13aW5kb3dfYml0cykKKworICAgIGRlZiBjb21wcmVzcyhz
ZWxmLCBieXRlcyk6CisgICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5j
b21wcmVzcyhieXRlcykKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1
dCAlcicsIGJ5dGVzKQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3Vs
dCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVz
CisKKyAgICBkZWYgY29tcHJlc3NfYW5kX2ZsdXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29t
cHJlc3NlZF9ieXRlcyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBj
b21wcmVzc2VkX2J5dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNI
KQorICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMp
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJl
c3NlZF9ieXRlcykKKyAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKKworICAgIGRlZiBj
b21wcmVzc19hbmRfZmluaXNoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgY29tcHJlc3NlZF9ieXRl
cyA9IHNlbGYuX2NvbXByZXNzLmNvbXByZXNzKGJ5dGVzKQorICAgICAgICBjb21wcmVzc2VkX2J5
dGVzICs9IHNlbGYuX2NvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQorICAg
ICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcworCisKK2NsYXNzIF9JbmZsYXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6CisgICAgICAgIHNlbGYuX2xv
Z2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAgICAgICAgc2VsZi5fd2luZG93X2JpdHMg
PSB3aW5kb3dfYml0cworCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKworICAgICAg
ICBzZWxmLnJlc2V0KCkKKworICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIHNpemUpOgorICAgICAg
ICBpZiBub3QgKHNpemUgPT0gLTEgb3Igc2l6ZSA+IDApOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdzaXplIG11c3QgYmUgLTEgb3IgcG9zaXRpdmUnKQorCisgICAgICAgIGRhdGEgPSBi
JycKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9kZWNv
bXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzaXplIC0gbGVuKGRhdGEpKSkKKyAg
ICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRf
dGFpbAorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRfZGF0YToKKyAgICAg
ICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGgg
QkZJTkFMID0gMSkgYW5kCisgICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVu
dXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICMgemxp
Yi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldworICAg
ICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9u
ZS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdu
b3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKKyAgICAgICAgICAgICAg
ICAjIGVtcHR5LgorICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNv
bXByZXNzLnVudXNlZF9kYXRhCisgICAgICAgICAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAg
ICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToKKyAgICAgICAgICAg
ICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgor
ICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8g
ZGVjb21wcmVzcyBhbGwKKyAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVm
b3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCisgICAgICAgICAgICAgICAgICAg
ICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVz
ZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMKKyAgICAgICAgICAg
ICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBp
biBkYXRhLiBXZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhl
cmUuCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBkYXRhOgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRhKQorICAgICAgICBy
ZXR1cm4gZGF0YQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCisgICAgICAgIHNlbGYuX3VuY29uc3Vt
ZWQgKz0gZGF0YQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1Jlc2V0JykKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVz
c29iaigtc2VsZi5fd2luZG93X2JpdHMpCisKKworIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBn
aXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCisKKwor
Y2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgorICAgICIiIkEgY29tcHJlc3NvciBjbGFz
cyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNlIGFuZAorICAgIGZs
dXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlv
biAyLjEuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRzLCBub19j
b250ZXh0X3Rha2VvdmVyKToKKyAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAg
IGlmIHdpbmRvd19iaXRzIGlzIE5vbmU6CisgICAgICAgICAgICB3aW5kb3dfYml0cyA9IHpsaWIu
TUFYX1dCSVRTCisgICAgICAgIHNlbGYuX3dpbmRvd19iaXRzID0gd2luZG93X2JpdHMKKyAgICAg
ICAgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciA9IG5vX2NvbnRleHRfdGFrZW92ZXIKKworICAg
IGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGVuZD1UcnVlLCBiZmluYWw9RmFsc2UpOgorICAgICAg
ICBpZiBzZWxmLl9kZWZsYXRlciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIg
PSBfRGVmbGF0ZXIoc2VsZi5fd2luZG93X2JpdHMpCisKKyAgICAgICAgaWYgYmZpbmFsOgorICAg
ICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZpbmlzaChieXRl
cykKKyAgICAgICAgICAgICMgQWRkIGEgcGFkZGluZyBibG9jayB3aXRoIEJGSU5BTCA9IDAgYW5k
IEJUWVBFID0gMC4KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHBhY2tfYnl0ZSgwKQor
ICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0CisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNo
KGJ5dGVzKQorICAgICAgICBpZiBlbmQ6CisgICAgICAgICAgICAjIFN0cmlwIGxhc3QgNCBvY3Rl
dHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAgICAgICAgICMgbm9uLWNv
bXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdFs6LTRdCisKKyAgICAgICAgaWYgc2VsZi5fbm9fY29udGV4dF90YWtlb3ZlciBh
bmQgZW5kOgorICAgICAgICAgICAgc2VsZi5fZGVmbGF0ZXIgPSBOb25lCisKKyAgICAgICAgcmV0
dXJuIHJlc3VsdAorCisKK2NsYXNzIF9SRkMxOTc5SW5mbGF0ZXIob2JqZWN0KToKKyAgICAiIiJB
IGRlY29tcHJlc3NvciBjbGFzcyBhIGxhIFJGQzE5NzkuCisKKyAgICBBIGRlY29tcHJlc3NvciBj
bGFzcyBmb3IgYnl0ZSBzZXF1ZW5jZSBjb21wcmVzc2VkIGFuZCBmbHVzaGVkIGZvbGxvd2luZwor
ICAgIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIHRoZSBSRkMxOTc5IHNlY3Rpb24gMi4xLgor
ICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cz16bGliLk1BWF9XQklU
Uyk6CisgICAgICAgIHNlbGYuX2luZmxhdGVyID0gX0luZmxhdGVyKHdpbmRvd19iaXRzKQorCisg
ICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcyk6CisgICAgICAgICMgUmVzdG9yZSBzdHJpcHBlZCBM
RU4gYW5kIE5MRU4gZmllbGQgb2YgYSBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZAorICAgICAg
ICAjIGZvciBaX1NZTkNfRkxVU0guCisgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChieXRl
cyArIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5k
ZWNvbXByZXNzKC0xKQorCisKK2NsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKKyAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJl
Y3YgdG8gcGVyZm9ybQorICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24g
dHJhbnNwYXJlbnRseS4KKyAgICAiIiIKKworICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3Nl
ZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgorICAgIF9SRUNWX1NJWkUgPSA0
MDk2CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKKyAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0CisKKyAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQorCisgICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRT
KQorICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKKwor
ICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgorICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20g
dGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAorICAgICAgICB0byB0
aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0
IGV2ZW4KKyAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgor
ICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGgg
c2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55CisgICAgICAgICMgZGVjb21wcmVzc2Vk
IGRhdGEgaXMgYXZhaWxhYmxlLgorICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCisgICAgICAgIHdoaWxl
IFRydWU6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXpl
KQorICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRhdGEKKworICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0
ZVNvY2tldC5fUkVDVl9TSVpFKQorICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQo
cmVhZF9kYXRhKQorCisgICAgZGVmIHNlbmRhbGwoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxm
LnNlbmQoYnl0ZXMpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzX2FuZF9mbHVzaChieXRlcykp
CisgICAgICAgIHJldHVybiBsZW4oYnl0ZXMpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDYxNDI1ZTExNGQxNGQ4NmY4MWJjZDE0MWY2MmY3N2Q2NjRiOWNjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0Lmxv
ZwpAQCAtMCwwICsxLDMxIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25l
CitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvX19pbml0X18ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9leGNlcHRpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Nv
bW1vbi5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQor
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCisvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNv
Y2tldDMvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdl
YnNvY2tldC9yZXF1ZXN0X2hhbmRsZXIucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJz
b2NrZXQvc2VydmVyX3V0aWwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC9zdHJlYW0u
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0X3NlcnZlci5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL21vZF9weXdlYnNvY2tldC93ZWJzb2NrZXRfc2VydmVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRmOGNkMzkzYzdlZTgwNjk2NzU3MTM2NjVkODViZTdkOTc2NTdiNzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My9tb2RfcHl3ZWJzb2NrZXQvd2Vic29ja2V0
X3NlcnZlci5weQpAQCAtMCwwICsxLDI4NSBAQAorIyBDb3B5cmlnaHQgMjAyMCwgR29vZ2xlIElu
Yy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJTdGFuZGFs
b25lIFdlYnNvY2tldFNlcnZlcgorCitUaGlzIGZpbGUgZGVhbHMgd2l0aCB0aGUgbWFpbiBtb2R1
bGUgb2Ygc3RhbmRhbG9uZSBzZXJ2ZXIuIEFsdGhvdWdoIGl0IGlzIGZpbmUKK3RvIGltcG9ydCB0
aGlzIGZpbGUgZGlyZWN0bHkgdG8gdXNlIFdlYlNvY2tldFNlcnZlciwgaXQgaXMgc3Ryb25nbHkg
cmVjb21tZW5kZWQKK3RvIHVzZSBzdGFuZGFsb25lLnB5LCBzaW5jZSBpdCBpcyBpbnRlbmRlZCB0
byBhY3QgYXMgYSBza2VsZXRvbiBvZiB0aGlzIG1vZHVsZS4KKyIiIgorCitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQ
U2VydmVyCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgc29ja2V0c2VydmVyCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IHJlCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitp
bXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBkaXNwYXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKK2Zyb20g
bW9kX3B5d2Vic29ja2V0LnJlcXVlc3RfaGFuZGxlciBpbXBvcnQgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIKKworCitkZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxl
cnNfbWFwX2ZpbGUpOgorICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3ZWJzb2NrX2hh
bmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KKworICAgIEFyZ3M6CisgICAgICAgIGRpc3Bh
dGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKKyAgICAgICAgd2Vic29ja19oYW5k
bGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQorICAgICIiIgorCisgICAgd2l0aCBvcGVuKHdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6Cisg
ICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUysp
JCcsIGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ1dyb25nIGZvcm1hdCBpbiBtYXAgZmlsZTonICsgbGluZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpc3BhdGNo
ZXIuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMobS5ncm91cCgxKSwgbS5ncm91cCgyKSkKKyAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQorCisKK2NsYXNzIFdlYlNvY2tldFNlcnZlcihz
b2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgor
ICAgICIiIkhUVFBTZXJ2ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYlNvY2tldC4iIiIKKworICAgICMg
T3ZlcnJpZGVzIFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbi5kYWVtb25fdGhyZWFkcworICAg
IGRhZW1vbl90aHJlYWRzID0gVHJ1ZQorICAgICMgT3ZlcnJpZGVzIEJhc2VIVFRQU2VydmVyLkhU
VFBTZXJ2ZXIuYWxsb3dfcmV1c2VfYWRkcmVzcworICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBU
cnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18gdG8gc2V0IFNTTCBlbmFibGVkCisg
ICAgICAgIHNvY2tldCBvYmplY3QgdG8gc2VsZi5zb2NrZXQgYmVmb3JlIHNlcnZlcl9iaW5kIGFu
ZCBzZXJ2ZXJfYWN0aXZhdGUsCisgICAgICAgIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIiIiCisK
KyAgICAgICAgIyBTaGFyZSBhIERpc3BhdGNoZXIgYW1vbmcgcmVxdWVzdCBoYW5kbGVycyB0byBz
YXZlIHRpbWUgZm9yCisgICAgICAgICMgaW5zdGFudGlhdGlvbi4gIERpc3BhdGNoZXIgY2FuIGJl
IHNoYXJlZCBiZWNhdXNlIGl0IGlzIHRocmVhZC1zYWZlLgorICAgICAgICBvcHRpb25zLmRpc3Bh
dGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKAorICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzLCBvcHRpb25zLnNjYW5fZGlyLAorICAgICAgICAgICAgb3B0aW9ucy5hbGxvd19o
YW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQorICAgICAgICBpZiBvcHRpb25zLndlYnNvY2tfaGFu
ZGxlcnNfbWFwX2ZpbGU6CisgICAgICAgICAgICBfYWxpYXNfaGFuZGxlcnMob3B0aW9ucy5kaXNw
YXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5k
bGVyc19tYXBfZmlsZSkKKyAgICAgICAgd2FybmluZ3MgPSBvcHRpb25zLmRpc3BhdGNoZXIuc291
cmNlX3dhcm5pbmdzKCkKKyAgICAgICAgaWYgd2FybmluZ3M6CisgICAgICAgICAgICBmb3Igd2Fy
bmluZyBpbiB3YXJuaW5nczoKKyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5p
bmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCisKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAgc2VsZi5yZXF1ZXN0
X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAgICAgICBzZWxmLl9f
d3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5fX3dzX3Nl
cnZpbmcgPSBGYWxzZQorCisgICAgICAgIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLl9faW5pdF9f
KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25z
LnNlcnZlcl9ob3N0LCBvcHRpb25zLnBvcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcikKKworICAgICAgICAjIEV4cG9z
ZSB0aGUgb3B0aW9ucyBvYmplY3QgdG8gYWxsb3cgaGFuZGxlciBvYmplY3RzIGFjY2VzcyBpdC4g
V2UgbmFtZQorICAgICAgICAjIGl0IHdpdGggd2Vic29ja2V0XyBwcmVmaXggdG8gYXZvaWQgY29u
ZmxpY3QuCisgICAgICAgIHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgICAgIHNlbGYuX2NyZWF0ZV9zb2NrZXRzKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYmlu
ZCgpCisgICAgICAgIHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRlZiBfY3JlYXRlX3Nv
Y2tldHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX25hbWUsIHNlbGYuc2VydmVyX3BvcnQg
PSBzZWxmLnNlcnZlcl9hZGRyZXNzCisgICAgICAgIHNlbGYuX3NvY2tldHMgPSBbXQorICAgICAg
ICBpZiBub3Qgc2VsZi5zZXJ2ZXJfbmFtZToKKyAgICAgICAgICAgICMgT24gcGxhdGZvcm1zIHRo
YXQgZG9lc24ndCBzdXBwb3J0IElQdjYsIHRoZSBmaXJzdCBiaW5kIGZhaWxzLgorICAgICAgICAg
ICAgIyBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJUHY2CisgICAgICAgICAgICAjIC0gSWYg
aXQgYmluZHMgYm90aCBJUHY0IGFuZCBJUHY2IG9uIGNhbGwgd2l0aCBBRl9JTkVUNiwgdGhlCisg
ICAgICAgICAgICAjICAgZmlyc3QgYmluZCBzdWNjZWVkcyBhbmQgdGhlIHNlY29uZCBmYWlscyAo
d2UnbGwgc2VlICdBZGRyZXNzCisgICAgICAgICAgICAjICAgYWxyZWFkeSBpbiB1c2UnIGVycm9y
KS4KKyAgICAgICAgICAgICMgLSBJZiBpdCBiaW5kcyBvbmx5IElQdjYgb24gY2FsbCB3aXRoIEFG
X0lORVQ2LCBib3RoIGNhbGwgYXJlCisgICAgICAgICAgICAjICAgZXhwZWN0ZWQgdG8gc3VjY2Vl
ZCB0byBsaXN0ZW4gYm90aCBwcm90b2NvbC4KKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0g
Wyhzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAnJywgJycsICcnKV0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5ID0gc29ja2V0LmdldGFkZHJpbmZv
KHNlbGYuc2VydmVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BFQywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RP
X1RDUCkKKyAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJpbmZvX2FycmF5OgorICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQgb246ICVyJywgYWRkcmluZm8pCisg
ICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9
IGFkZHJpbmZvCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNv
Y2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWls
dXJlOiAlcicsIGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcnZl
cl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKKyAgICAgICAgICAgIGlm
IHNlcnZlcl9vcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlv
bnMudGxzX2NsaWVudF9hdXRoOgorICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9u
cy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9PUFRJT05BTAorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0gc3NsLkNFUlRfUkVRVUlSRUQK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8g
PSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICAgICAgc29ja2V0XyA9IHNzbC53cmFwX3NvY2tl
dCgKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0XywKKyAgICAgICAgICAgICAgICAgICAga2V5
ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSwKKyAgICAgICAgICAgICAgICAgICAgY2Vy
dGZpbGU9c2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgIGNh
X2NlcnRzPXNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCisgICAgICAgICAgICAgICAgICAg
IGNlcnRfcmVxcz1jbGllbnRfY2VydF8pCisgICAgICAgICAgICBzZWxmLl9zb2NrZXRzLmFwcGVu
ZCgoc29ja2V0XywgYWRkcmluZm8pKQorCisgICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgorICAg
ICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kIHRvIGVu
YWJsZSBtdWx0aXBsZQorICAgICAgICBzb2NrZXRzIGJpbmQuCisgICAgICAgICIiIgorCisgICAg
ICAgIGZhaWxlZF9zb2NrZXRzID0gW10KKworICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBzZWxm
Ll9zb2NrZXRzOgorICAgICAgICAgICAgc29ja2V0XywgYWRkcmluZm8gPSBzb2NrZXRpbmZvCisg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQmluZCBvbjogJXInLCBhZGRyaW5mbykKKyAg
ICAgICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBz
b2NrZXRfLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIs
IDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29ja2V0Xy5iaW5kKHNlbGYu
c2VydmVyX2FkZHJlc3MpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQor
ICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9z
b2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQorICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfYWRk
cmVzc1sxXSA9PSAwOgorICAgICAgICAgICAgICAgICMgVGhlIG9wZXJhdGluZyBzeXN0ZW0gYXNz
aWducyB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyIGZvciBwb3J0CisgICAgICAgICAgICAgICAgIyBu
dW1iZXIgMC4gVGhpcyBjYXNlLCB0aGUgc2Vjb25kIGFuZCBsYXRlciBzb2NrZXRzIHNob3VsZCB1
c2UKKyAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHBvcnQgbnVtYmVyLiBBbHNvIHNlbGYuc2Vy
dmVyX3BvcnQgaXMgcmV3cml0dGVuCisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGl0IGlzIGV4
cG9ydGVkLCBhbmQgd2lsbCBiZSB1c2VkIGJ5IGV4dGVybmFsIGNvZGUuCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IChzZWxmLnNlcnZlcl9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Xy5nZXRzb2NrbmFtZSgpWzFdKQorICAg
ICAgICAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZWxmLnNlcnZlcl9hZGRyZXNzWzFdCisg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1BvcnQgJXIgaXMgYXNzaWduZWQnLCBz
ZWxmLnNlcnZlcl9wb3J0KQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2Nr
ZXRzOgorICAgICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAg
IGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNl
cnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlIHRvIGVuYWJsZSBtdWx0aXBsZQorICAgICAg
ICBzb2NrZXRzIGxpc3Rlbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmFpbGVkX3NvY2tldHMg
PSBbXQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAg
ICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdMaXN0ZW4gb246ICVyJywgYWRkcmluZm8pCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgc29ja2V0Xy5saXN0ZW4oc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUpCisg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQorICAgICAgICAgICAgICAgIHNv
Y2tldF8uY2xvc2UoKQorICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2Nr
ZXRpbmZvKQorCisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgorICAg
ICAgICAgICAgc2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKKworICAgICAgICBpZiBs
ZW4oc2VsZi5fc29ja2V0cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNh
bCgKKyAgICAgICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBs
ZXZlbCB0byBzZWUgdGhlIHJlYXNvbi4nKQorCisgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToK
KyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2Ug
dG8gZW5hYmxlIG11bHRpcGxlCisgICAgICAgIHNvY2tldHMgY2xvc2UuCisgICAgICAgICIiIgor
CisgICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6CisgICAgICAgICAgICBz
b2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdDbG9zZSBvbjogJXInLCBhZGRyaW5mbykKKyAgICAgICAgICAgIHNvY2tldF8uY2xvc2Uo
KQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2Vy
dmVyLlRDUFNlcnZlci5maWxlbm8uIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2Fs
KCdOb3Qgc3VwcG9ydGVkOiBmaWxlbm8nKQorICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1sw
XVswXS5maWxlbm8oKQorCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGll
bnRfYWRkcmVzcyk6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJy
b3IuIiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKCdFeGNlcHRpb24gaW4gcHJvY2Vz
c2luZyByZXF1ZXN0IGZyb206ICVyXG4lcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGllbnRfYWRkcmVzcywgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgIyBOb3RlOiBj
bGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgorCisgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgor
ICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QuIiIiCisKKyAgICAgICAg
YWNjZXB0ZWRfc29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisK
KyAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwor
ICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgorICAgICAgICAgICAgIyBQcmludCBj
aXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiBhY2NlcHQuCisgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NpcGhlcjogJXMnLCBhY2NlcHRlZF9zb2NrZXQuY2lwaGVyKCkp
CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0OiAlcicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkp
CisKKyAgICAgICAgcmV0dXJuIGFjY2VwdGVkX3NvY2tldCwgY2xpZW50X2FkZHJlc3MKKworICAg
IGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWw9MC41KToKKyAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlci4iIiIKKworICAg
ICAgICBzZWxmLl9fd3Nfc2VydmluZyA9IFRydWUKKyAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRf
ZG93bi5jbGVhcigpCisgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5oYW5kbGVfcmVxdWVz
dAorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaGFuZGxlX3JlcXVlc3Rfbm9ibG9jaycpOgor
ICAgICAgICAgICAgaGFuZGxlX3JlcXVlc3QgPSBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2Nr
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygnRmFsbGJh
Y2sgdG8gYmxvY2tpbmcgcmVxdWVzdCBoYW5kbGVyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgd2hpbGUgc2VsZi5fX3dzX3NlcnZpbmc6CisgICAgICAgICAgICAgICAgciwgdywgZSA9IHNl
bGVjdC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIFtzb2NrZXRfWzBdIGZvciBzb2NrZXRf
IGluIHNlbGYuX3NvY2tldHNdLCBbXSwgW10sCisgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50
ZXJ2YWwpCisgICAgICAgICAgICAgICAgZm9yIHNvY2tldF8gaW4gcjoKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXRfCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9y
ZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IE5vbmUKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uc2V0KCkKKworICAgIGRl
ZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLkJhc2VT
ZXJ2ZXIuc2h1dGRvd24uIiIiCisKKyAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQor
ICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLndhaXQoKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U5NDI4ZDY5MWQ3NTZjZjNkNjg3ZTc1NmI3
MzgxNGNjZDNiZTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAu
cHkKQEAgLTAsMCArMSw3NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdlYnNvY2tldC4KKyIiIgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBwcmludF9mdW5jdGlvbgorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9u
CitpbXBvcnQgc3lzCisKK19QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29ja2V0JworCisjIEJ1
aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBmYXN0ZXIgbWFza2luZy4gU1dJRyBpcyBy
ZXF1aXJlZC4KK19VU0VfRkFTVF9NQVNLSU5HID0gRmFsc2UKKworIyBUaGlzIGlzIHVzZWQgc2lu
Y2UgcHl0aG9uX3JlcXVpcmVzIGZpZWxkIGlzIG5vdCByZWNvZ25pemVkIHdpdGgKKyMgcGlwIHZl
cnNpb24gOS4wLjAgYW5kIGVhcmxpZXIKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNyc6CisgICAgcHJp
bnQoJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjcgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUsIGZp
bGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitpZiBfVVNFX0ZBU1RfTUFTS0lORzoK
KyAgICBzZXR1cChleHRfbW9kdWxlcz1bCisgICAgICAgIEV4dGVuc2lvbignbW9kX3B5d2Vic29j
a2V0L19mYXN0X21hc2tpbmcnLAorICAgICAgICAgICAgICAgICAgWydtb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmknXSwKKyAgICAgICAgICAgICAgICAgIHN3aWdfb3B0cz1bJy1jKysnXSkK
KyAgICBdKQorCitzZXR1cCgKKyAgICBhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKKyAgICBhdXRo
b3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3JnJywKKyAgICBkZXNjcmlwdGlvbj0nU3RhbmRhbG9u
ZSBXZWJTb2NrZXQgU2VydmVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLicsCisgICAgbG9uZ19kZXNj
cmlwdGlvbj0oJ21vZF9weXdlYnNvY2tldCBpcyBhIHN0YW5kYWxvbmUgc2VydmVyIGZvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgJ3RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgKFJGQyA2NDU1KS4g
JworICAgICAgICAgICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
IGZvciBtb3JlIGRldGFpbC4nKSwKKyAgICBsaWNlbnNlPSdTZWUgTElDRU5TRScsCisgICAgbmFt
ZT1fUEFDS0FHRV9OQU1FLAorICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9O
QU1FICsgJy5oYW5kc2hha2UnXSwKKyAgICBweXRob25fcmVxdWlyZXM9Jz49Mi43JywKKyAgICBp
bnN0YWxsX3JlcXVpcmVzPVsnc2l4J10sCisgICAgI1RPRE8oc3V6dWtpa2VpdGEpOiBVcGRhdGUg
dGhpcyB0byBuZXcgR2l0aHViIFVSTAorICAgIHVybD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3B5d2Vic29ja2V0LycsCisgICAgdmVyc2lvbj0nMy4wLjAnLAorKQorCisjIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgVGhpcyBmaWxlIGlz
IHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVz
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2Nh
Y2VydC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1
NTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNl
cnQucGVtCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJ
Q3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNEUUVCQlFVQU1Fa3hDekFK
QmdOVgorQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwzWldK
emIyTnJaWFF4RkRBUworQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0WERURXlNRFl3TmpBM01q
UXpNMW9YRFRNNU1UQXlNekEzTWpRegorTTFvd1NURUxNQWtHQTFVRUJoTUNTbEF4RGpBTUJnTlZC
QWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAorWW5OdlkydGxkREVVTUJJR0ExVUVBeE1M
Y0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAorZ1kwQU1JR0pBb0dCQUtv
U0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWprQ1lpYWhYVwordTJDYlRU
aGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0VU5xdFFPaFFhcXFLK0Na
OQorTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytxVWYyTWpoNC8rU3p4QkRO
UDdBZ01CQUFHagorZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMr
K2J6TUhrR0ExVWRJd1J5TUhDQQorRk9zV2R4Q1N1eWh3YVplYWI2Qm9UaG8zKytiem9VMmtTekJK
TVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQorQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNC
NWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgorWTJ0bGRJSUpBS3FWZ2hrR0Yx
clNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQQorZ3NNSTFXRVlx
TncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJrUThiQ3I2eFkrS3c3cwor
WnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJMbytldDk4c2VsWnlkcEhl
bUYzREpKMworZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2RjZWNGpVMDdoUT0KKy0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jZXJ0LnBlbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNTM3OWE3MmIwZGFjNWY0MTk3OWM4MDJjNjYzZGY4Yjg4ZGVhODI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCkBAIC0w
LDAgKzEsNjEgQEAKK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246IDMg
KDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQorICAgICAgICBTaWduYXR1cmUg
QWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPUpQLCBT
VD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKKyAgICAgICAgVmFsaWRpdHkK
KyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEyIEdNVAorICAgICAg
ICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCisgICAgICAgIFN1Ympl
Y3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNvY2tldAorICAgICAg
ICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKyAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3Jp
dGhtOiByc2FFbmNyeXB0aW9uCisgICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0
KQorICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKyAgICAgICAgICAgICAgICAg
ICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6MWE6CisgICAgICAg
ICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2Ojg5OjAzOmEyOjIx
OgorICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjozNToyNzozYTphMjo5
Mjo4ZToxMjo2MjoKKyAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6Nzg6ZGY6YjY6OTQ6
Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6CisgICAgICAgICAgICAgICAgICAgIDVjOjA4OmYwOjA5OjNl
OmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgorICAgICAgICAgICAgICAgICAgICBlNTpm
YjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKKyAgICAgICAgICAgICAg
ICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6MDc6OWE6CisgICAg
ICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5OjgyOjgzOmRiOjY4OmJm
OmI4OgorICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1NDo3Mzo3YgorICAg
ICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4
dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorICAgICAg
ICAgICAgICAgIENBOkZBTFNFCisgICAgICAgICAgICBOZXRzY2FwZSBDZXJ0IFR5cGU6IAorICAg
ICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKKyAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAor
ICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCisgICAgICAgICAg
ICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAgODI6QTE6
NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6RTk6MDY6MDAKKyAg
ICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAg
ICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZGOkEwOjY4OjRFOjFB
OjM3OkZCOkU2OkYzCisKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5
cHRpb24KKyAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6ZDc6N2Y6YTA6MWU6
MGQ6MWE6ZWI6MmY6CisgICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1OjhjOjFiOmYwOjUxOmQ2
OjUyOmU3OjhkOjg0OjNiOjlmOgorICAgICAgICBkODplZDoyMjo5YzphYTpiZDplZTo5Yjo5MDox
ZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKKyAgICAgICAgYmE6Zjc6MTU6Y2U6ZGE6NWY6ZGI6
OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6CisgICAgICAgIGQzOmYxOmJlOjUyOjRm
OmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgorICAgICAgICBmOTowNTo1
MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpkNToKKyAgICAgICAg
OTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6MzQ6NjA6YjE6Cisg
ICAgICAgIGNiOmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNtRENDQWdHZ0F3
SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdKS1VERU8KK01Bd0dB
MVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3
dHcKK2VYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpPVEV3TWpNd056STFN
RGhhTUVreEN6QUoKK0JnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVF
Q2hNTGNIbDNaV0p6YjJOclpYUXgKK0ZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNSUdmTUEw
R0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKK2dRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0Fl
WXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKK0gvUjQzN2FVeXlmV3k5WTMx
MXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEyZHYKK0JJWWQ3Mklj
VmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJvNEdQTUlHTU1Ba0cK
K0ExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NHU0FHRytFSUJEUVFm
RmgxUGNHVnUKK1UxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdR
VWdxRnppeFlNZk9UVFJwVVQKK2xSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0ZvQVU2eFozRUpLN0tI
QnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKK2h2Y05BUUVGQlFBRGdZRUFhN05HS1FMZnNNaU94
TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKKzJPMGluS3E5N3B1UUhZU2pUQXZM
NjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoKK1l6dFI3YWVCK1FW
UmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4eTY0PQorLS0tLS1F
TkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9j
ZXJ0L2NsaWVudF9jZXJ0LnAxMiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlMTM5OTI3OTgyZmE5ODIzYTU3MjMxYWYxMTM0OTlkNmE1
YThiMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjU4Mgp6Y21ZK0ZYSCpqaTdLTWAjMHRCZzJx
ekZpdFAhZjxQSEEtKk5Mb0BWX2djZjB0OFdCKCNJP3slWVJGeCp1YCUpeUoKejFuRyFLMzVicWhY
clg3QWI5USVqZjg2dWx4JVp2LT4lSF5BYVpwd2VrUDQyWW59ZzZ2I091WUE4R3RtdlZqU0lqCnpG
cGg1VSgoWiVmQVN3U3VrWVhHcD1GKkEpMFJmaTxgJWVPZF5GcEJpLWYjczdmaXI/PjJjVyRUIzsy
KkdBUF9BZQp6MV8jbHJuMkUoZUtPTUo2TjI2WUpuZV9AaHB9U0tQWFVCN0ZNZXJffjV8MXFnQ3tU
cW5uQnV2MSRrcHA1T0J6JUAKejxteVN3Kz9ZPl5qQVo0I1hBLX0qIVFzYnVPaFcoc084MzY2KCQ7
KDFBPm1vKE8tJXgoaG4oPXlaO3l+TkcjUVgxCnpnSGtTaV5eOGN2NFRUU0w5dm41cVIoPl9EM2Ym
b2MqandQZ0kjS0BRI0FzTClEO0JEJldiMmQrSTFeSjduPn1ZWgp6YkNYbzlmT0BnIUBkV1lhMlYl
fTspIXs8ekRjfChwdkpJYXhXN05kTyVPNmY+ciZhT3JwSGt7b19SOW1RNDd1b2IKej9sPjl8bnxY
M2BhZ3BeRztMd1hSNTwobHIrUjxjTDVqVFEoP15EPGtSbyFIX1QjcD95M2R9XnRDWVYhOFJeTj99
CnpDKiVYbTlMZWY+ajdobHItP2pIbHB8d2ZBJl5uLXM7PCF6JHFEMXhQcSE4S1ExfX5kdXB3fkJN
MWdzfkBBbztDcQp6d1JnVXwyXmR9Ti1nVjtAYVlrdThJJX18PGw2UU0/PWR+RllwYkdGSDkmdk5n
S1oqU3ljSVN8bWN1T1I/bCZDT3cKenN7emQ1em1lbHhxTjFEUXl7fVBnQj11I2Z6SU5Qa0Iwb04q
Y2szdmArMXshWVhQfntFVkk3VnFoKn51YVdfflVDCnpsUjMzUlowNUhoa0MtMWVJcCktQFleeXZj
LXxSJSEqOWR3N25mVyl5amNISVlmNnI9YUN0KFVoaS1GSm0ybntfKQp6JXt1bEJVWFJgMjw+bHh9
ZUdtU21SSj41b3RrQCgrcGpzUHE7NGhaNkZJS2wje254UCFBTCEyOF9fQVlmbGBWZ3sKemxSUmFB
UnxWbXkxX2BeYmJqWnJ6QXtRJGxZZWpJWWReQSRaPlcmanluTT1LYFRsNHdWKTN3QGQxSmNgLTUt
Q0dKCnp4cV5AOF8oITxaRjJxbGhfWn19bnI/UyY1KnorRkApdihaMUVJcztIbX0hMX5NVEwhajFA
YyRaSExSfVYoPTtebwp6ZFVwZnk/bz55em9sX3NpPDxVRUI9dChlZUJ6Z0peV1l3c0hDRzkzNHMk
ZClAcXFId2deeVpNe2BeakohOTt0cjYKemVvVWF5JiQrQnlHfE5eX3pvQUhedFlJZz5oYVl3fEB8
YzMxXncoblVkN2soWW1FSjc2Vlk3OSsoQyhfJDsxTXNVCnpoaU5pK0I1Z1NyRGp8OT48QD82UiY4
emJtOGJyP0MtTm4xY2soKzxOSyU3KTZ2LXdXcTQ9TV9UYnQxOTR6VSp5Rgp6aDxvdDxIQldub3hC
JTFrOShNMG88TmcpUmdIUygjP2VkRVFCIV58RmstXyhhYGJVQkxBSypofmF6fiFfeHU9VDQKejZH
NUstYVhKb3RIUWxFQzhDVTV8UnlNUnVRa1hFKT9edjYoaT1NdSk9JF5vJTAheXM1R1ZSYVhaMlMy
SDRJODNMCnpxKWJgfFB4eyg4OVczMnpxNHNxekgrQkFLUDl1YURFcEQ4SUlBOUQtSDQ1QyVWVD9K
SiNNYStCQGk5TVBkRi0jIwp6TnhGNVR1fWl6X2h6JFNLWjBfXyYhWXAxeWFkVnpvY0BFeStCZWZK
Q3RDU1ZkNShKeSg8QzZJY0NXfURtSHdDOFQKelJ7a3F2UkA/M3J6TEcyJFpkY3gtNXZGUkBkJFEj
REQrfntkaEBtZF9lYEJCNipVWTZSKzReI1UlejRsdHg5QiU7CnpOVjh6KntHY0dNO2dxMlJ0eWRq
e0gwUzBwI3o8NiU3bTMhJXs/TVF1YTxgQGU1Yk90YmQhRWM/R151eGY0Z3hjSQp6LUY3U1RZaX52
RGJtdkNaM05EY2ZIajg+QzlGVjZqZDF9KHBTd3JnR2sqUVo5UnI0KTYhc1NrVFVxYnhiYWVhMnUK
endTYCR5b3NRKWViJW9fdkpPKiFBYGRSO1k0az4mcVl6dWEtWk5FPDNGRT1JK2VTVTt4IXB0XkEz
NT5vSW9QYEpxCnpabH4pckM2MEwra1N4QWdvUEV8ckdqVkA/MkF5KlhiPSRjYGNfTDM9RXpoakJV
RD1oMV80JWVCQ2ZsaiZFSFptTwp6c3sxYnxOdXg2KztLI0tCPVRrX3xpa3x7KjAxZGskOUthNmBj
UlU9TWNZaU4hay1hKTJQRDMxaDxjVHMla1Bob1oKek8pMndfVDktOHcyTk0mJnEycGw0XktxfUNQ
ZT1sOWhxJFc0IXQ7SkQlfFVKKDI4dkRiTSpMPlZGN2JXX1h7YjE0CnpHTncodz5FX1M5YDw7eFFs
UGBAc2Q+Nm0zbjIpTCkwcCFYUnJEIzI1aUlrUkRzKTF1ak4lU3N5dyM2MnZkdiZBbAp6Y2RqLVls
IzYrQGEwV3NjVTwzYGd2VyQydy0oXkhmRVJ5eHNOc3E2bUswZDg7PzBMU2VOaCVORWUwQllKNElM
KGEKeiRXWG5kKVBCVzxBVGt7eSUyUzlHUGEycXlKVyReSkpfY29fWFAxbTlFfWopUT9ebCQjKk1E
eFA1fG1ZMXpjcTN5CnpiPUB6eUNYdWd3ZHtOang/aTI3ait6WE80KlY+fVplLXpCUXgpSHlud0xg
TmooITl0KTU0ZE87elRWfi1PIztVOwp6TXdwMFBVLXVVTD8jIzhMLSkmdm1ibkFtbiNAJmE+dj1j
UH1FVVFKVndhRHc5VjwtSXdZdGlUOXcoVE1lYTIlRHkKenxBNDAkTjV1b2lRRV5fe1MxLWlgcTVs
dHRwZz5TRDRwYWZoZmxCfDZQRT4hPnNoV2tvRW1aaGcrfjBIcDwzS1RACno5amskcU1DPTAmQmJr
XmZSbzRmMzhKfmlXQ3x4R1AwYHdaM0YjazhnKklkTlkkR0YtQXg4XjxEckJeajI4WGI2cwp6Unw7
VnZhciU8fFRaS34+MzBrRDMpVyRBRCModHRgI0B4N1E4T1lhcFRfSnlNMXZUP2xieC0rX0YoSkYl
eVMwTyQKenBTI2x9dyowaj5ifU0zZTs0ST57cE1NPnMlYD9mU0FFX1FiYEFuPl9WIWtpfSQ5d01O
OShmVTF1SkdtME1pN2hLCnpBNWwwZTF3VmNeJHFsPzVnbT44RXZCcFNhV2Y1VElnM1pTYnVKaHA7
YSUoWitrY3tjZHYxUHVYJGUyR0FOP0pmOAp6V0tOZ1M8KE0yRk5VYFJ4ZEJHfWY9UzFyblEqZVIx
MnFGX0MmJnBuQGB5JUN+TDleUV9aOWxoJkc9WHZHQyE0MTAKenluKTVvPSl4MmlKWSteP15FTGpu
dEhIYH1LKXphP0k9fHYhJGhMMG4mR3p5cHphTHdOZGVNPU9qV3wtLT1tUl9qCnp5dD9+VnhfXzlC
RXZjaEw/OWh1VW9iLTVuK3IxPzx4QGNnfTVhfFZ8RmNGUU8qZUlwd1pFbn5WR0xlcXZTQFdrMgp6
KSErRDMtO3s0QE9PKWIrYlFPIz0tRStCZU9AZiEzPGlUMG1iMnBiMzg4e0dJUmFyamRuVGklQD80
cXd5I3E2MFkKenFpQXx7dDZvNDlFTTE4SiZ3OERBI3dRRERzRndOJEhHKk1UTDIxQlFqKVlSYFc1
TDtaZk1NPCpyTD1GSWd8MGJKCnpUOXI3RmxCTExeclYlMVVPITN8R0RFYU0hakhQTHI/NVFCdUND
IVcpPmRyZl5SQ2BgN1lSWVooSz5pZTA+cEpkXgp6SldfSHslKV5jITY+bHw5UDg/Yz1qKEI1N1lK
ejg/WHlRekU5dUdhfWRWMFBUcDMhO3AhU0YpfXQtaT5DPEVkSCsKek1LQVNuViMhJlNXZmR9MGRs
alhzeVFmenNANmkwK2RxU0hKTH5GN35vdHwkSHdmK0YqMGpDSyp3NVdvRkBROWhOCnpobGslU3to
NkM1N0NJMl81Ujk7ZjM7cC0xPkRVbipVXmVvR2pocW87KlIqJGtWRTAxSj5USlFSc3Y5b3omayEz
egp6a1dUOyowUWUwTTNVQ0x3MEQ9SitmR2ZjRnZKVXxgVWRzS18zNHRUdkh7ZiYtWThXRkdoP15Q
IVg1O3k9Rlp1RHMKZmZyV2swJU0oT0duVE1OPGgmcUB5TGREVV8mTWNBZj98MWtNZWpVTm8KCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
Y2VydC9rZXkucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2tleS5wZW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFlODU4MzE4ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9rZXkucGVtCkBAIC0wLDAgKzEs
MTUgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNYZ0lCQUFLQmdRRGVF
TTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczEKK0p6cWlrbzRT
WWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0IK
K2lONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6
ZXdJREFRQUIKK0FvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4VGxkYWZhNlh2YXdF
WVVUUDBTNzd2LzFsbGcxWXYKK1VJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMvWjNlMWZzb3Q1dERZ
c3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKK1FTbzdZRkNhanVIdEUrVy9nekYrVUhiZHp6WElE
alFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKKzNVUjhmOG9la0VSd3NtRU1mOURI
NVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EKK29nQU0rNE5YNFFK
QkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0YmxNSlE1T3EKK1Fk
T0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQeWxHM3VyY0MybWZR
eEJra1cKK1pDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0OVVObXFjME4wZnBl
MmZBZWhqM1VFQ1FRQ20KK0ZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6M2Nia0I0QjNGY2hE
bGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKK1FEazF0VUtvcnR4dlFaSmFBRDRCQWtFQWhHT0hRcVBk
NmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKK0NsUmlNbjJnOFNBTGlJTDNCRGdHWEtj
S0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OTA0NDE5MGY1OGJlNzc0NTYxNTIzYjNhN2ViOWNkZGFiYTgyMzg0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEs
MjAgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
KworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM
aXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9jYWNlcnQucGVtCisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jZXJ0L2NlcnQucGVtCisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC9jZXJ0L2NsaWVudF9jZXJ0LnAxMgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2VydC9r
ZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVz
dGluZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ1MGE2YWNkNTM3NjIyM2M2MDNhYmUyNjRiOTY3Nzk2ODMyZmI1NzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5w
eQpAQCAtMCwwICsxLDcxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGluZy4KKworVGhpcyBt
b2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgaGFuZHNoYWtlLCBm
cmFtZQorc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50LgorCitUaGlzIGlz
IGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMgY29kZSBpbmRlcGVu
ZGVudCBmcm9tCittb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcuIFN0cmVhbSBjbGFz
cyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKK3Rlc3RpbmcuIFVzaW5nIHV0aWwuaGV4aWZ5LCBl
dGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3NpbmcKK2lzIGFsbG93
ZWQuCisKK05vdGU6CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcuLCB3ZSBjdXQg
Y29ybmVycyBpbiBoYW5kc2hha2UuCisiIiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBv
cnQgc3RydWN0CitpbXBvcnQgdGltZQorZnJvbSBoYXNobGliIGltcG9ydCBzaGExCitmcm9tIHNp
eCBpbXBvcnQgaXRlcmJ5dGVzCitmcm9tIHNpeCBpbXBvcnQgaW5kZXhieXRlcworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KKworREVGQVVMVF9QT1JUID0gODAKK0RFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKKwor
IyBPcGNvZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcg
Zm9ybWF0CitPUENPREVfQ09OVElOVUFUSU9OID0gMHgwCitPUENPREVfQ0xPU0UgPSAweDgKK09Q
Q09ERV9QSU5HID0gMHg5CitPUENPREVfUE9ORyA9IDB4YQorT1BDT0RFX1RFWFQgPSAweDEKK09Q
Q09ERV9CSU5BUlkgPSAweDIKKworIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQorX1VQR1JB
REVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCitfQ09OTkVDVElPTl9IRUFERVIg
PSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKK1dFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9IGIn
MjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJworCisjIFN0YXR1cyBjb2Rlcwor
U1RBVFVTX05PUk1BTF9DTE9TVVJFID0gMTAwMAorU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCitT
VEFUVVNfUFJPVE9DT0xfRVJST1IgPSAxMDAyCitTVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEw
MDMKK1NUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1CitTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSA9IDEwMDYKK1NUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKK1NU
QVRVU19QT0xJQ1lfVklPTEFUSU9OID0gMTAwOAorU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEw
MDkKK1NUQVRVU19NQU5EQVRPUllfRVhUID0gMTAxMAorU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5U
X0VSUk9SID0gMTAxMQorU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1CisKKyMgRXh0ZW5zaW9u
IHRva2VucworX1BFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1kZWZs
YXRlJworCisKK2RlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgorICAgIHJldHVybiAnR0VUICVz
IEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQorCisKK2RlZiBfc2VjX29yaWdpbl9oZWFkZXIob3Jp
Z2luKToKKyAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2lu
Lmxvd2VyKCkKKworCitkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKKyAgICAjIDQuMSAxMy4g
Y29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0UgY2hh
cmFjdGVyLAorICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCisgICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBv
cmlnaW4ubG93ZXIoKQorCisKK2RlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQsIHNl
Y3VyZSk6CisgICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5nLgor
ICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJ
IGxvd2VyY2FzZSwgdG8KKyAgICAjIC9ob3N0cG9ydC8KKyAgICBob3N0cG9ydCA9IGhvc3QubG93
ZXIoKQorICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBpcyBu
b3QgODAsIG9yIGlmIC9zZWN1cmUvCisgICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5vdCA0
NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgorICAgICMgKDopIGZvbGxv
d2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVn
ZXIsCisgICAgIyB0byAvaG9zdHBvcnQvCisgICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0ICE9
IERFRkFVTFRfUE9SVCkKKyAgICAgICAgICAgIG9yIChzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVM
VF9TRUNVUkVfUE9SVCkpOgorICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKKyAg
ICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIw
IFNQQUNFCisgICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KKyAg
ICByZXR1cm4gJ0hvc3Q6ICVzXHJcbicgJSBob3N0cG9ydAorCisKKyMgVE9ETyh0eW9zaGlubyk6
IERlZmluZSBhIGJhc2UgY2xhc3MgYW5kIG1vdmUgdGhlc2Ugc2hhcmVkIG1ldGhvZHMgdG8gdGhh
dC4KKworCitkZWYgcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIGxlbmd0aCk6CisgICAgcmVjZWl2ZWRf
Ynl0ZXMgPSBbXQorICAgIHJlbWFpbmluZyA9IGxlbmd0aAorICAgIHdoaWxlIHJlbWFpbmluZyA+
IDA6CisgICAgICAgIG5ld19yZWNlaXZlZF9ieXRlcyA9IHNvY2tldC5yZWN2KHJlbWFpbmluZykK
KyAgICAgICAgaWYgbm90IG5ld19yZWNlaXZlZF9ieXRlczoKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQgYmVmb3JlIHJlY2Vp
dmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAnKHJlcXVlc3RlZCAlZCBi
eXRlcyBidXQgcmVjZWl2ZWQgb25seSAlZCBieXRlcyknICUKKyAgICAgICAgICAgICAgICAobGVu
Z3RoLCBsZW5ndGggLSByZW1haW5pbmcpKQorICAgICAgICByZWNlaXZlZF9ieXRlcy5hcHBlbmQo
bmV3X3JlY2VpdmVkX2J5dGVzKQorICAgICAgICByZW1haW5pbmcgLT0gbGVuKG5ld19yZWNlaXZl
ZF9ieXRlcykKKyAgICByZXR1cm4gYicnLmpvaW4ocmVjZWl2ZWRfYnl0ZXMpCisKKworIyBUT0RP
KHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xhc3MgZGl2ZXJ0cyB0aGVz
ZSBtZXRob2RzLiBXZQorIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNlciBhcyBzcGVjaWZpZWQg
aW4gUkZDIDY0NTUuCisKKworZGVmIF9yZWFkX2ZpZWxkcyhzb2NrZXQpOgorICAgICMgNC4xIDMy
LiBsZXQgL2ZpZWxkcy8gYmUgYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMsIGluaXRpYWxseSBl
bXB0eS4KKyAgICBmaWVsZHMgPSB7fQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgNC4xIDMz
LiBsZXQgL25hbWUvIGFuZCAvdmFsdWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisgICAgICAgIG5h
bWUgPSBiJycKKyAgICAgICAgdmFsdWUgPSBiJycKKyAgICAgICAgIyA0LjEgMzQuIHJlYWQgL25h
bWUvCisgICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKKyAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyA0LjEgMzUuIHJlYWQgc3BhY2Vz
CisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBzcGVjLgorICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2NrZXQpCisgICAg
ICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KKyAgICAgICAgdmFsdWUgPSBfcmVhZF92YWx1ZShz
b2NrZXQsIGNoKQorICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVy
CisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9
IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAg
ICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZv
ciBoZWFkZXIgJworICAgICAgICAgICAgICAgICclcicgJSAoY2gsIG5hbWUsIHZhbHVlKSkKKyAg
ICAgICAgIyA0LjEgMzguIGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0
IGhhcyB0aGUgbmFtZQorICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQgYnkg
aW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQorICAgICAgICAjIGFycmF5IGFzIGEgVVRGLTgg
c3RyZWFtIGFuZCB0aGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN0cmluZworICAgICAgICAjIG9idGFp
bmVkIGJ5IGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0
ZQorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgZmllbGRzLnNldGRlZmF1bHQobmFtZS5kZWNv
ZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKS5hcHBlbmQodmFsdWUu
ZGVjb2RlKCdVVEYtOCcpKQorICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQi
IHN0ZXAgYWJvdmUKKyAgICByZXR1cm4gZmllbGRzCisKKworZGVmIF9yZWFkX25hbWUoc29ja2V0
KToKKyAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIG5h
bWUgPSBiJycKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICAjIDQuMSAzNC4gcmVhZCBhIGJ5dGUg
ZnJvbSB0aGUgc2VydmVyCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCisg
ICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICBlbGlmIGNoID09IGInXG4nOiAgIyAweDBBCisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUp
CisgICAgICAgIGVsaWYgY2ggPT0gYic6JzogICMgMHgzQQorICAgICAgICAgICAgcmV0dXJuIG5h
bWUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSArPSBjaAorCisKK2Rl
ZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKKyAgICAjIDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0
aGUgc2VydmVyCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKKyAgICAgICAgaWYgY2ggPT0gYicgJzogICMgMHgyMAorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgcmV0dXJuIGNoCisKKworZGVmIF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gp
OgorICAgICMgNC4xIDMzLiBsZXQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgIHZh
bHVlID0gYicnCisgICAgIyA0LjEgMzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgorICAgIHdo
aWxlIFRydWU6CisgICAgICAgIGlmIGNoID09IGInXHInOiAgIyAweDBECisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUKKyAgICAgICAgZWxpZiBjaCA9PSBiJ1xuJzogICMgMHgwQQorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIExGIHdoZW4gcmVhZGluZyBoZWFkZXIgdmFs
dWUgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHZhbHVlICs9IGNoCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDEpCisKKworZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6CisKKyAgICBmaXJz
dF9ieXRlID0gb3JkKHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKSkKKyAgICBmaW4gPSAoZmlyc3Rf
Ynl0ZSA+PiA3KSAmIDEKKyAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCisgICAgcnN2
MiA9IChmaXJzdF9ieXRlID4+IDUpICYgMQorICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAm
IDEKKyAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCisKKyAgICBzZWNvbmRfYnl0ZSA9IG9y
ZChyZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkpCisgICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3
KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYgMHg3ZgorCisgICAgaWYg
bWFzayAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ01hc2sgYml0IG11c3QgYmUgMCBm
b3IgZnJhbWVzIGNvbWluZyBmcm9tIHNlcnZlcicpCisKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9
PSAxMjc6CisgICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyhz
b2NrZXQsIDgpCisgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygnIVEnLCBl
eHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KKyAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPiAw
eDdGRkZGRkZGRkZGRkZGRkY6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0V4dGVuZGVk
IHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2
OgorICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0
LCAyKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soJyFIJywgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGgpWzBdCisKKyAgICByZXR1cm4gZmluLCByc3YxLCByc3YyLCByc3Yz
LCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCisKKworY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgor
ICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJhd19zb2NrZXQpOgorICAgICAgICBzZWxmLl9zc2wgPSBzb2NrZXQuc3NsKHJhd19z
b2NrZXQpCisKKyAgICBkZWYgc2VuZChzZWxmLCBieXRlcyk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9zc2wud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0xKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3NzbC5yZWFkKHNpemUpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6Cisg
ICAgICAgICMgTm90aGluZyB0byBkby4KKyAgICAgICAgcGFzcworCisKK2NsYXNzIEh0dHBTdGF0
dXNFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIHVuZXhwZWN0ZWQgaHR0cCBzdGF0dXMgY29kZSB3YXMKKyAgICByZWNlaXZlZCBh
cyBhIHJlc3VsdCBvZiBoYW5kc2hha2UuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHN0YXR1cyk6CisgICAgICAgIHN1cGVyKEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYp
Ll9faW5pdF9fKG5hbWUpCisgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCisKKworY2xhc3Mg
V2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6CisgICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuIiIiCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKKworICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwor
CisgICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgorICAgICAgICAiIiJIYW5kc2hha2Ug
V2ViU29ja2V0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFu
ZHNoYWtlIGZhaWxlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0CisKKyAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lLmVuY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMgPSBb
XQorICAgICAgICBmaWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUikKKyAgICAgICAgZmllbGRz
LmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCisKKyAgICAgICAgZmllbGRzLmFwcGVuZCgKKyAg
ICAgICAgICAgIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxz
KSkKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gaXMgODoKKyAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIo
c2VsZi5fb3B0aW9ucy5vcmlnaW4pKQorCisgICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5k
b20oMTYpCisgICAgICAgIGtleSA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQorICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfa2V5KSkK
KyAgICAgICAgZmllbGRzLmFwcGVuZCh1J1NlYy1XZWJTb2NrZXQtS2V5OiAlc1xyXG4nICUga2V5
LmRlY29kZSgnVVRGLTgnKSkKKworICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tl
dC1WZXJzaW9uOiAlZFxyXG4nICUgc2VsZi5fb3B0aW9ucy52ZXJzaW9uKQorCisgICAgICAgICMg
U2V0dGluZyB1cCBleHRlbnNpb25zLgorICAgICAgICBpZiBsZW4oc2VsZi5fb3B0aW9ucy5leHRl
bnNpb25zKSA+IDA6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKHUnU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zOiAlc1xyXG4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2lu
KHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQorCisgICAg
ICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFs
bChmaWVsZC5lbmNvZGUoJ1VURi04JykpCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGIn
XHJcbicpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3BlbmluZyBoYW5kc2hh
a2UgcmVxdWVzdCcpCisKKyAgICAgICAgZmllbGQgPSBiJycKKyAgICAgICAgd2hpbGUgVHJ1ZToK
KyAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCisgICAgICAg
ICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gYidcbic6CisgICAgICAgICAg
ICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNo
YWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGEg
VW5pY29kZURlY29kZUVycm9yIHdoZW4gdGhlIGRlY29kZSBmYWlscworICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoYidcclxuJyk6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcycgJSBmaWVsZC5kZWNvZGUoJ0xh
dGluLTEnKSkKKyAgICAgICAgbSA9IHJlLm1hdGNoKGInW14gXSogKFteIF0qKSAuKicsIGZpZWxk
KQorICAgICAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05v
IEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVzJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmllbGQuZGVjb2RlKCdMYXRpbi0xJykpCisgICAgICAgIGNvZGUg
PSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCByZS5tYXRjaChiJ1swLTldWzAtOV1bMC05XSQn
LCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
SFRUUCBzdGF0dXMgY29kZSAlcyBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVz
JyAlCisgICAgICAgICAgICAgICAgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29k
ZSgnTGF0aW4tMScpKSkKKyAgICAgICAgaWYgY29kZSAhPSBiJzEwMSc6CisgICAgICAgICAgICBy
YWlzZSBIdHRwU3RhdHVzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQ
IHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXMgaW4gc3RhdHVzIGxpbmU6ICcKKyAgICAgICAg
ICAgICAgICAnJXInICUgKGNvZGUuZGVjb2RlKCdMYXRpbi0xJyksIGZpZWxkLmRlY29kZSgnTGF0
aW4tMScpKSwKKyAgICAgICAgICAgICAgICBpbnQoY29kZSkpCisgICAgICAgIGZpZWxkcyA9IF9y
ZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCisgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCisgICAgICAgIGlmIGNoICE9IGInXG4nOiAgIyAweDBBCisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCisKKyAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFk
ZXJzOiAlcicsIGZpZWxkcykKKworICAgICAgICAjIENoZWNrIC9maWVsZHMvCisgICAgICAgIGlm
IGxlbihmaWVsZHNbJ3VwZ3JhZGUnXSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1sndXBncmFkZSddKQorICAgICAgICBpZiBsZW4oZmllbGRzWydj
b25uZWN0aW9uJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011bHRpcGxl
IENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKKyAgICAgICAgaWYgZmllbGRzWyd1cGdyYWRlJ11b
MF0gIT0gJ3dlYnNvY2tldCc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0
ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmllbGRzWyd1cGdyYWRlJ11bMF0pCisgICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbidd
WzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdV
bmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQorCisgICAgICAgIGlmIGxlbihm
aWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVz
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWydzZWMtd2Vic29ja2V0LWFj
Y2VwdCddKQorCisgICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XVswXQorCisgICAgICAgICMgVmFsaWRhdGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVj
b2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKKyAgICAgICAgZXhjZXB0IFR5
cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKAorICAg
ICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgU2VjLVdlYlNvY2tldC1BY2Nl
cHQ6ICcgKyBhY2NlcHQpCisKKyAgICAgICAgaWYgbGVuKGRlY29kZWRfYWNjZXB0KSAhPSAyMDoK
KyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAn
RGVjb2RlZCB2YWx1ZSBvZiBTZWMtV2ViU29ja2V0LUFjY2VwdCBpcyBub3QgMjAtYnl0ZSBsb25n
JykKKworICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0FjdHVhbCBTZWMtV2ViU29ja2V0LUFj
Y2VwdDogJXIgKCVzKScsIGFjY2VwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGRlY29kZWRfYWNjZXB0KSkKKworICAgICAgICBvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQgPSBzaGExKGtleSArIFdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKKyAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShvcmlnaW5hbF9leHBlY3RlZF9hY2Nl
cHQpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdFeHBlY3RlZCBTZWMtV2ViU29ja2V0
LUFjY2VwdDogJXIgKCVzKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9h
Y2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9l
eHBlY3RlZF9hY2NlcHQpKQorCisgICAgICAgIGlmIGFjY2VwdCAhPSBleHBlY3RlZF9hY2NlcHQu
ZGVjb2RlKCdVVEYtOCcpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVk
KSAhPSAlciAnCisgICAgICAgICAgICAgICAgJyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVk
X2FjY2VwdCkpCisKKyAgICAgICAgc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdl
dCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKKyAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9u
cyA9IFtdCisgICAgICAgIGlmIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9u
cygKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc2VydmVyX2V4dGVuc2lvbnNfaGVhZGVyKSkK
KworICAgICAgICAjIFNjYW4gYWNjZXB0ZWQgZXh0ZW5zaW9uIGxpc3QgdG8gY2hlY2sgaWYgdGhl
cmUgaXMgYW55IHVucmVjb2duaXplZAorICAgICAgICAjIGV4dGVuc2lvbnMgb3IgZXh0ZW5zaW9u
cyB3ZSBkaWRuJ3QgcmVxdWVzdCBpbiBpdC4gVGhlbiwgZm9yCisgICAgICAgICMgZXh0ZW5zaW9u
cyB3ZSByZXF1ZXN0LCBwYXJzZSB0aGVtIGFuZCBzdG9yZSBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwg
YmUKKyAgICAgICAgIyB1c2VkIGxhdGVyIGJ5IGVhY2ggZXh0ZW5zaW9uLgorICAgICAgICBmb3Ig
ZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBleHRlbnNp
b24ubmFtZSgpID09IF9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OOgorICAgICAgICAgICAg
ICAgIGNoZWNrZXIgPSBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZQorICAg
ICAgICAgICAgICAgIGlmIGNoZWNrZXI6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZXIoZXh0
ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1JlY2VpdmVkIHVucmVjb2duaXplZCBleHRlbnNpb246ICVzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKKworCitjbGFzcyBXZWJT
b2NrZXRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJT
b2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29j
a2V0LCBoYW5kc2hha2UpOgorICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKKyAg
ICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisKKyAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQg
dG8gYXBwbGljYXRpb24gZGF0YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgorICAgICAgICBzZWxmLl9v
dXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1l
X2ZpbHRlciA9IE5vbmUKKworICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gRmFsc2UKKworICAg
IGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgorICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBvcy51
cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxsLiBJZgorICAgICAgICAj
IHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUgbGlicmFyeSBjYWxsIHRo
YXQgZ2VuZXJhdGVzCisgICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkbyBy
YW5kb20gbnVtYmVyIHNlcXVlbmNlLgorICAgICAgICBtYXNraW5nX25vbmNlID0gb3MudXJhbmRv
bSg0KQorICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KKyAgICAgICAgY291bnQgPSAw
CisgICAgICAgIGZvciBjIGluIGl0ZXJieXRlcyhzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQodXRpbC5wYWNrX2J5dGUoYyBeIGluZGV4Ynl0ZXMobWFza2luZ19ub25jZSwgY291bnQpKSkK
KyAgICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKKyAg
ICAgICAgcmV0dXJuIGInJy5qb2luKHJlc3VsdCkKKworICAgIGRlZiBzZW5kX2ZyYW1lX29mX2Fy
Yml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAgICAgICBzZWxmLl9zb2NrZXQu
c2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCisKKyAgICBkZWYgc2VuZF9k
YXRhKHNlbGYsCisgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAg
ZnJhbWVfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgbWFzaz1UcnVlLAorICAgICAgICAgICAgICAgICAgcnN2MT0wLAorICAgICAgICAgICAgICAg
ICAgcnN2Mj0wLAorICAgICAgICAgICAgICAgICAgcnN2Mz0wKToKKyAgICAgICAgaWYgc2VsZi5f
b3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGF5bG9hZCA9
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkKKworICAgICAgICBp
ZiBzZWxmLl9mcmFnbWVudGVkOgorICAgICAgICAgICAgb3Bjb2RlID0gT1BDT0RFX0NPTlRJTlVB
VElPTgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQorCisg
ICAgICAgIGlmIGVuZDoKKyAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBGYWxzZQorICAg
ICAgICAgICAgZmluID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZnJhZ21l
bnRlZCA9IFRydWUKKyAgICAgICAgICAgIGZpbiA9IDAKKworICAgICAgICBpZiBtYXNrOgorICAg
ICAgICAgICAgbWFza19iaXQgPSAxIDw8IDcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1h
c2tfYml0ID0gMAorCisgICAgICAgIGhlYWRlciA9IHV0aWwucGFja19ieXRlKGZpbiA8PCA3IHwg
cnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgb3Bjb2RlKQorICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2Fk
KQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6CisgICAgICAgICAgICBoZWFkZXIg
Kz0gdXRpbC5wYWNrX2J5dGUobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgZWxp
ZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6CisgICAgICAgICAgICBoZWFkZXIgKz0gdXRpbC5w
YWNrX2J5dGUobWFza19iaXQgfCAxMjYpICsgc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAg
JyFIJywgcGF5bG9hZF9sZW5ndGgpCisgICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8
IDYzOgorICAgICAgICAgICAgaGVhZGVyICs9IHV0aWwucGFja19ieXRlKG1hc2tfYml0IHwgMTI3
KSArIHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICchUScsIHBheWxvYWRfbGVuZ3RoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUb28gbG9uZyBwYXls
b2FkICglZCBieXRlKScgJSBwYXlsb2FkX2xlbmd0aCkKKyAgICAgICAgaWYgbWFzazoKKyAgICAg
ICAgICAgIHBheWxvYWQgPSBzZWxmLl9tYXNrX2h5YmkocGF5bG9hZCkKKyAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoaGVhZGVyICsgcGF5bG9hZCkKKworICAgIGRlZiBzZW5kX2JpbmFyeShz
ZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5kX2Rh
dGEocGF5bG9hZCwgT1BDT0RFX0JJTkFSWSwgZW5kLCBtYXNrKQorCisgICAgZGVmIHNlbmRfdGV4
dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwgbWFzaz1UcnVlKToKKyAgICAgICAgc2VsZi5zZW5k
X2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0Zi04JyksIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisK
KyAgICBkZWYgX2Fzc2VydF9yZWNlaXZlX2RhdGEoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlLCBmaW4s
IHJzdjEsIHJzdjIsIHJzdjMpOgorICAgICAgICAoYWN0dWFsX2ZpbiwgYWN0dWFsX3JzdjEsIGFj
dHVhbF9yc3YyLCBhY3R1YWxfcnN2MywgYWN0dWFsX29wY29kZSwKKyAgICAgICAgIHBheWxvYWRf
bGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVhZGVyKHNlbGYuX3NvY2tldCkKKworICAgICAgICBpZiBh
Y3R1YWxfb3Bjb2RlICE9IG9wY29kZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5l
eHBlY3RlZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkKKworICAgICAgICBp
ZiBhY3R1YWxfZmluICE9IGZpbjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmluLCBhY3R1YWxfZmluKSkKKworICAgICAgICBpZiByc3YxIGlzIE5v
bmU6CisgICAgICAgICAgICByc3YxID0gMAorCisgICAgICAgIGlmIHJzdjIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJzdjIgPSAwCisKKyAgICAgICAgaWYgcnN2MyBpcyBOb25lOgorICAgICAgICAg
ICAgcnN2MyA9IDAKKworICAgICAgICBpZiBhY3R1YWxfcnN2MSAhPSByc3YxOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIHJzdjE6ICVyIChleHBlY3RlZCkgdnMgJXIg
KGFjdHVhbCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnN2MSwgYWN0dWFsX3Jz
djEpKQorCisgICAgICAgIGlmIGFjdHVhbF9yc3YyICE9IHJzdjI6CisgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcnN2MjogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFs
KScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyc3YyLCBhY3R1YWxfcnN2MikpCisK
KyAgICAgICAgaWYgYWN0dWFsX3JzdjMgIT0gcnN2MzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignVW5leHBlY3RlZCByc3YzOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJzdjMsIGFjdHVhbF9yc3YzKSkKKworICAgICAg
ICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkK
KworICAgICAgICBpZiBzZWxmLl9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIo
cmVjZWl2ZWQpCisKKyAgICAgICAgaWYgbGVuKHJlY2VpdmVkKSAhPSBsZW4ocGF5bG9hZCk6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQg
cGF5bG9hZCBsZW5ndGg6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKKyAgICAgICAg
ICAgICAgICAobGVuKHBheWxvYWQpLCBsZW4ocmVjZWl2ZWQpKSkKKworICAgICAgICBpZiBwYXls
b2FkICE9IHJlY2VpdmVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCkn
ICUKKyAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWQpKQorCisgICAgZGVmIGFzc2Vy
dF9yZWNlaXZlX2JpbmFyeShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5
bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1PUENPREVfQklOQVJZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YyPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YzPU5vbmUpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29kZSwgZmluLCByc3Yx
LCByc3YyLCByc3YzKQorCisgICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPU5vbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2Mj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz
djM9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZlX2RhdGEocGF5bG9hZC5lbmNv
ZGUoJ3V0Zi04JyksIG9wY29kZSwgZmluLCByc3YxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJzdjIsIHJzdjMpCisKKyAgICBkZWYgX2J1aWxkX2Nsb3NlX2ZyYW1lKHNlbGYs
IGNvZGUsIHJlYXNvbiwgbWFzayk6CisgICAgICAgIGZyYW1lID0gdXRpbC5wYWNrX2J5dGUoMSA8
PCA3IHwgT1BDT0RFX0NMT1NFKQorCisgICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24uZW5jb2RlKCd1
dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBib2R5ID0gYicnCisgICAgICAgIGlm
IG1hc2s6CisgICAgICAgICAgICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZSgxIDw8IDcgfCBsZW4o
Ym9keSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBmcmFtZSArPSB1dGlsLnBhY2tfYnl0ZShsZW4oYm9keSkpICsgYm9keQorICAgICAgICByZXR1
cm4gZnJhbWUKKworICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6CisgICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJl
YXNvbiwgVHJ1ZSkpCisKKyAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZSwg
cmVhc29uKToKKyAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIEZhbHNlKQorICAgICAgICBhY3R1YWxfZnJhbWUgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKKyAgICAgICAgaWYgYWN0dWFs
X2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAor
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCisgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2ZyYW1lLCBhY3R1YWxf
ZnJhbWUpKQorCisKK2NsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKKyAgICAiIiJIb2xkcyBv
cHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4iIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmVyc2lvbiA9IDEzCisgICAgICAgIHNlbGYu
c2VydmVyX2hvc3QgPSAnJworICAgICAgICBzZWxmLm9yaWdpbiA9ICcnCisgICAgICAgIHNlbGYu
cmVzb3VyY2UgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gLTEKKyAgICAgICAgc2Vs
Zi5zb2NrZXRfdGltZW91dCA9IDEwMDAKKyAgICAgICAgc2VsZi51c2VfdGxzID0gRmFsc2UKKyAg
ICAgICAgc2VsZi5leHRlbnNpb25zID0gW10KKworCitkZWYgY29ubmVjdF9zb2NrZXRfd2l0aF9y
ZXRyeShob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VfdGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk9MTAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGVlcF9zZWM9MC4xKToKKyAgICByZXRyeV9j
b3VudCA9IDAKKyAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQo
dGltZW91dCkKKyAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCisgICAgICAgICAg
ICBpZiB1c2VfdGxzOgorICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29ja2V0KHMpCisgICAg
ICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAg
ICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OUkVGVVNFRDoKKyAgICAgICAgICAgICAg
ICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXRyeV9jb3VudCA9
IHJldHJ5X2NvdW50ICsgMQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoc2xlZXBfc2VjKQor
CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBDbGllbnQob2JqZWN0KToKKyAgICAiIiJXZWJT
b2NrZXQgY2xpZW50LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hh
a2UsIHN0cmVhbV9jbGFzcyk6CisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQorCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAg
IHNlbGYuX3NvY2tldCA9IE5vbmUKKworICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hh
a2UKKyAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNzCisKKyAgICBkZWYg
Y29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0
aF9yZXRyeShzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zb2NrZXRfdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCisKKyAgICAgICAgc2VsZi5faGFu
ZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCisKKyAgICAgICAgc2VsZi5fc3RyZWFtID0g
c2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQorCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKKworICAgIGRl
ZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgorICAg
ICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBi
b2R5KQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgIGVuZD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICAgYmluYXJ5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgcmF3PUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKToKKyAgICAgICAgaWYgYmluYXJ5OgorICAgICAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KG1lc3NhZ2UsIGVuZCwgbWFzaykKKyAgICAg
ICAgZWxpZiByYXc6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9kYXRhKG1lc3NhZ2Us
IE9QQ09ERV9URVhULCBlbmQsIG1hc2spCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
Ll9zdHJlYW0uc2VuZF90ZXh0KG1lc3NhZ2UsIGVuZCwgbWFzaykKKworICAgIGRlZiBhc3NlcnRf
cmVjZWl2ZShzZWxmLCBwYXlsb2FkLCBiaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBiaW5hcnk6
CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHBheWxvYWQp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVf
dGV4dChwYXlsb2FkKQorCisgICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZT1TVEFUVVNfTk9S
TUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6CisgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3Nl
KGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2Rl
PVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKKyAgICAgICAgc2VsZi5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGRlZiBjbG9zZV9zb2Nr
ZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0
X2Nvbm5lY3Rpb25fY2xvc2VkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFk
X2RhdGEgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCisgICAgICAgICAgICAg
ICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5n
dGggJworICAgICAgICAgICAgKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKKyAg
ICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5S
RVNFVCddOgorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX251bWJlciA9PSBnZXRhdHRy
KGVycm5vLCBlcnJvcl9uYW1lKSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICBy
YWlzZSBlCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25uZWN0aW9uIGlzIG5vdCBjbG9z
ZWQgKFJlYWQ6ICVyKScgJSByZWFkX2RhdGEpCisKKworZGVmIGNyZWF0ZV9jbGllbnQob3B0aW9u
cyk6CisgICAgcmV0dXJuIENsaWVudChvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9u
cyksIFdlYlNvY2tldFN0cmVhbSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWFlZjUyZWNmMDE5N2Y3ZTU3ZjM0NmE3MTU0ODI1MmEzODYx
ZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9tb2NrLnB5CkBA
IC0wLDAgKzEsMjI3IEBACisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIk1vY2tzIGZvciB0ZXN0aW5nLgor
IiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgc2l4
Lm1vdmVzLnF1ZXVlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2l4
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVh
bQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCitmcm9t
IHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKworCitjbGFzcyBfTW9ja0Nvbm5CYXNlKG9iamVjdCk6
CisgICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi4KKworICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8g
YSAobW9jaykgbXBfY29ubi4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEgPSBbXQorICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gYidm
YWtlX2FkZHJlc3MnCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk92
ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuCisKKyAgICAgICAgZGF0YSBz
aG91bGQgYmUgYnl0ZXMgd2hlbiB0b3VjaGluZyB0aGlzIG1ldGhvZCBtYW51YWxseS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKKworICAgIGRl
ZiB3cml0dGVuX2RhdGEoc2VsZik6CisgICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRo
aXMgbW9jay4iIiIKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5fd3JpdGVfZGF0YSkK
KworCitjbGFzcyBNb2NrQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJNb2NrIGZvciBtb2Rf
cHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNp
Znkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxs
IGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVhZF9kYXRhKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5j
ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNo
b3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCisgICAgICAgICAgICBjYWxs
ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikK
KyAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCisgICAgICAgIHNlbGYuX3JlYWRf
cG9zID0gMAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZSBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgorCisgICAgICAgIGlmIHNlbGYu
X3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAgcmV0dXJuIGIn
JworICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZChiJ1xuJywgc2VsZi5f
cmVhZF9wb3MpICsgMQorICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAgICAgICAgICAgZW5k
X2luZGV4ID0gbGVuKHNlbGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRf
dXBfdG8oZW5kX2luZGV4KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAg
IiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAg
IGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAg
cmV0dXJuIGInJworICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSks
IHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90
byhlbmRfaW5kZXgpCisKKyAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToKKyAg
ICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCisg
ICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4CisgICAgICAgIHJldHVybiBsaW5lCisK
KworY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJCbG9ja2lu
ZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgorCisgICAgVGhpcyBlbmFibGVz
IHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nv
bm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICBD
YWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBh
dmFpbGFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBfTW9j
a0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3F1ZXVlID0gc2l4Lm1vdmVz
LnF1ZXVlLlF1ZXVlKCkKKworICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3Zl
cnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKKyAgICAgICAgbGlu
ZSA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2Vs
Zi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpCisgICAgICAgICAgICBp
ZiBjID09IG9yZChiJ1xuJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKGxpbmUpCisK
KyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0
aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9IGJ5dGVhcnJheSgp
CisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgIGRhdGEu
YXBwZW5kKHNlbGYuX3F1ZXVlLmdldCgpKQorCisgICAgICAgIHJldHVybiBieXRlcyhkYXRhKQor
CisgICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIiIlB1dCBieXRlcyB0
byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBi
eXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIGJ5dGUg
aW4gc2l4Lml0ZXJieXRlcyhieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoYnl0
ZSkKKworCitjbGFzcyBNb2NrVGFibGUoZGljdCk6CisgICAgIiIiTW9jayB0YWJsZS4KKworICAg
IFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBvbmx5IHRoZSBtZXRo
b2RzIHVzZWQgYnkKKyAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KKyAgICAiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5
X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29weV9mcm9tID0gbGlzdChjb3B5X2Zyb20uaXRl
bXMoKSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29weV9mcm9tOgorICAgICAgICAgICAg
c2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYs
IGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fZ2V0aXRlbV9f
KGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgor
ICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0aXRlbV9fKGtleS5sb3dlcigpLCB2
YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZfdmFsdWU9Tm9uZSk6CisgICAgICAg
IHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChrZXkubG93ZXIoKSwgZGVmX3ZhbHVl
KQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CisgICAgIiIiTW9jayByZXF1ZXN0Lgor
CisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICB1cmk9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgaGVhZGVyc19pbj17fSwKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1Ob25lLAorICAg
ICAgICAgICAgICAgICBtZXRob2Q9J0dFVCcsCisgICAgICAgICAgICAgICAgIHByb3RvY29sPSdI
VFRQLzEuMScsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToKKyAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAg
IHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVz
dCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0
aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCisgICAgICAg
ICAgICBpc19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCisKKyAgICAg
ICAgU2VlIHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCisg
ICAgICAgICIiIgorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLnVucGFyc2Vk
X3VyaSA9IHVyaQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCisgICAgICAg
IHNlbGYubWV0aG9kID0gbWV0aG9kCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAor
ICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKKyAgICAgICAg
IyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBh
dm9pZCBuYW1lCisgICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlz
IG5hbWVkIGFzIHN1Y2guCisgICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKKyAgICAg
ICAgc2VsZi53c19zdHJlYW0gPSBTdHJlYW0oc2VsZiwgU3RyZWFtT3B0aW9ucygpKQorICAgICAg
ICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25lCisgICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29u
ID0gTm9uZQorICAgICAgICBzZWxmLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xB
VEVTVAorICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBGYWxzZQorCisgICAgZGVmIGlzX2h0dHBz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBT
U0wuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmlzX2h0dHBzXworCisKK2NsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6CisgICAgIiIiTW9jayBmb3IgZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtl
X2NhbGxlZCA9IEZhbHNlCisKKyAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5f
Y29udGV4dCk6CisgICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUK
KworICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHBh
c3MKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvcnVuX2FsbC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjIyMDE1NTM5ZTQ3ZmRmNTE4ODc1MTU4ZjZiZDZmMzY5OTRmYWJhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9ydW5fYWxsLnB5CkBAIC0wLDAgKzEs
ODcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJSdW4g
YWxsIHRlc3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworVGhpcyBzdWl0ZSBpcyBleHBlY3Rl
ZCB0byBiZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5LCBpLmUuIHRoZQor
ZGlyZWN0b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBldGMuCisKK1RvIGNo
YW5nZSBsb2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVsIG9wdGlvbi4KKyAg
ICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZworCitUbyBwYXNzIGFu
eSBvcHRpb24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBvcHRpb25zIGFmdGVy
ICctLScuIEZvcgorZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUgdGVzdCBydW5uZXIg
dmVyYm9zZS4KKyAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZyAt
LSAtdgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0
IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK19URVNUX01PRFVMRV9QQVRURVJOID0gcmUuY29tcGls
ZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9kdWxlcyhkaXJlY3Rv
cnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3Rk
aXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVfUEFUVEVSTi5zZWFy
Y2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgbW9kdWxlX25hbWVz
LmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25hbWVzCisKKworZGVm
IF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgIHJldHVy
biBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMo
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLicpKSkKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cigpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWxvZy1sZXZlbCcsCisgICAg
ICAgICctLWxvZ19sZXZlbCcsCisgICAgICAgIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGRlc3Q9
J2xvZ19sZXZlbCcsCisgICAgICAgIGRlZmF1bHQ9J3dhcm5pbmcnLAorICAgICAgICBjaG9pY2Vz
PVsnZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwn
XSkKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGxvZ2dpbmcu
YmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwu
dXBwZXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKXMg
JShhc2N0aW1lKXMgJworICAgICAgICAgICAgICAgICAgICAgICAgJyUoZmlsZW5hbWUpczolKGxp
bmVubylkXSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnJShtZXNzYWdlKXMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0ZWZtdD0nJUg6JU06JVMnKQorICAgIHVuaXR0ZXN0Lm1haW4o
ZGVmYXVsdFRlc3Q9J19zdWl0ZScsIGFyZ3Y9W3N5cy5hcmd2WzBdXSArIGFyZ3MpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lz
X3BhdGgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZmNlN2IzNGI2NzUxZDYzNWRjZGE2ZTBkNGE1NzExOTUxYTBhMzNiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9zZXRfc3lzX3BhdGgucHkKQEAgLTAsMCAr
MSw0MSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJDb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nLgor
CitUZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBtb2R1bGUgYmVmb3JlIG1vZF9weXdlYnNv
Y2tldC4KKyIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAoraW1w
b3J0IG9zCitpbXBvcnQgc3lzCisKKyMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5w
YXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgorc3lzLnBhdGguaW5zZXJ0
KDAsIG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlNjM5ODBmMjU4MWY5ZjYxMzZlODVkYzE2YmI2NGNjYmUzNzNkYzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKQEAg
LTAsMCArMSwyOTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisiIiJUZXN0cyBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgorCitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGFic29sdXRlX2ltcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0
IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tl
dCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAorZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSB0ZXN0IGltcG9ydCBtb2NrCitm
cm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlwCisKK19URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGgu
am9pbigKKyAgICBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJywgJ2hhbmRs
ZXJzJykKKworX1RFU1RfSEFORExFUlNfU1VCX0RJUiA9IG9zLnBhdGguam9pbihfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInKQorCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBkaXNwYXRjaCBtb2R1bGUuIiIiCisgICAgZGVm
IHRlc3Rfbm9ybWFsaXplX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9hL2InKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxh
Y2UoJ1xcJywgJy8nKSwKKyAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxh
XFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBvcy5wYXRoLmFi
c3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCisgICAgICAgICAgICBkaXNwYXRjaC5f
bm9ybWFsaXplX3BhdGgoJy9hL2MvLi4vYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdcXCcsICcvJyksCisg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ2FiYycpKQorCisgICAgZGVmIHRl
c3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRl
X3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAgICAgICAgIyBQeXRob24gYnVp
bHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCku
CisgICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNp
bmcgcmVhbHBhdGgoKSBhbmQgdXNlcworICAgICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRy
aXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCisgICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRo
LnJlYWxwYXRoKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIo
b3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Mv
aCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQorCisg
ICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252
ZXJ0ZXIoJ2EvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhL2IvaF93
c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3Rv
X3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1h
bGl6ZV9wYXRoKCcvYS9iLy4uL2IvaF93c2gucHknKSkpCisKKyAgICAgICAgY29udmVydGVyID0g
ZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigKKyAgICAgICAgICAg
ICcvYS8uLi9hL2IvLi4vYi8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRp
c3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidcYVxiJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYVxiXGhfd3No
LnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3Qg
KyByJ2EvYi9oX3dzaC5weScpKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX2hhbmRsZXJfZmls
ZV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBsaXN0KAorICAgICAgICAgICAgZGlzcGF0
Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExFUlNfRElSKSkKKyAg
ICAgICAgcGF0aHMuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHBhdGhz
KSkKKyAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRfYnlfdXNlcl93c2gucHknKSwKKyAgICAgICAgICAg
IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSwKKyAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3No
LnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5w
eScpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1Yics
ICdub25fY2FsbGFibGVfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAorICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCisgICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
d3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICBdCisgICAgICAgIGZvciBleHBl
Y3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywgcGF0aHMpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc291cmNl
X2hhbmRsZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2gu
RGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9z
b3VyY2VfaGFuZGxlcl9maWxlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0
Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNo
Ll9zb3VyY2VfaGFuZGxlcl9maWxlLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9zb3VyY2VfaGFuZGxlcl9maWxlLCAnMS8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKAorICAgICAgICAgICAgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUoCisgICAgICAg
ICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KTpwYXNz
XG4nCisgICAgICAgICAgICAgICAgJ2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6cGFzc1xuJykpCisKKyAgICBkZWYgdGVzdF9zb3VyY2Vfd2FybmluZ3Moc2VsZik6CisgICAg
ICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwg
Tm9uZSkKKyAgICAgICAgd2FybmluZ3MgPSBkaXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpCisg
ICAgICAgIHdhcm5pbmdzLnNvcnQoKQorICAgICAgICBleHBlY3RlZF93YXJuaW5ncyA9IFsKKyAg
ICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdibGFua193c2gucHknKSkKKyAgICAgICAgICAgICArICc6IHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgKG9zLnBhdGgucmVh
bHBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwg
J3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpCisgICAgICAgICAgICAgKyAnOiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisgICAgICAgICAgICAo
b3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5JykpICsKKyAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4
dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKKyAgICAgICAgICAgIChvcy5wYXRoLnJl
YWxwYXRoKAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2ln
X3dzaC5weScpKSArCisgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlz
IG5vdCBkZWZpbmVkLicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwg
bGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVj
dGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAg
ICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qu
d3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNvbScKKyAgICAgICAgZGlzcGF0Y2hlci5kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgorCisg
ICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNl
cHRpb24gd2l0aCA0MDMgc3RhdHVzJykKKyAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hh
a2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDAzLCBlLnN0
YXR1cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5m
YWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUgZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0
X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdCgpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5
X3VzZXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJh
X2hhbmRzaGFrZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6
CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJworICAgICAgICByZXF1
ZXN0LndzX3Byb3RvY29sID0gJ3AxJworICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGInb3JpZ2lu
X2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAxJworICAgICAgICAg
ICAgYidceDg4XHgwMlx4MDNceGU4JywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KAorICAgICAgICAgICAgY29u
bmVjdGlvbj1tb2NrLk1vY2tDb25uKGInXHg4OFx4MDJceDAzXHhlOCcpKQorICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYidzdWIvcGxhaW5fd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL3N1Yi9wbGFpbiwgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAz
XHhlOCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJ1x4ODhceDAyXHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9
ICcvc3ViL3BsYWluPycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluPywgTm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdCgKKyAgICAgICAgICAgIGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihiJ1x4ODhceDAy
XHgwM1x4ZTgnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluP3E9
dicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICBiJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluP3E9diwg
Tm9uZScKKyAgICAgICAgICAgIGInXHg4OFx4MDJceDAzXHhlOCcsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxl
cihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gWworICAgICAgICAg
ICAgICAgICcvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLCAnL3N1Yi9ub193c2hfYXRfdGhl
X2VuZCcsCisgICAgICAgICAgICAgICAgJy9kb2VzL25vdC9leGlzdCcKKyAgICAgICAgXToKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubihiJycpKQorICAgICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9IHJlc291cmNlCisg
ICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AyJworICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0
Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyKGUp
LmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2Rh
dGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKGInJykpCisgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWls
KCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKAorICAgICAgICAgICAgICAgIHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0x
LAorICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkKKworICAg
IGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6CisgICAgICAgIGRpc3BhdGNoZXIg
PSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKKyAgICAgICAg
cmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNl
ID0gJy9hYm9ydF9ieV91c2VyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2Uu
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2Vs
Zik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcl9z
dWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9vcmlnaW5fY2hlY2snIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAg
ICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVf
bWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgorICAgICAg
ICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hB
TkRMRVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnL29yaWdpbl9jaGVj
aycgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3N1Yi9wbGFpbicgaW4gZGlz
cC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXJfYXNfcm9v
dChzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExF
UlNfU1VCX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFO
RExFUlNfU1VCX0RJUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFu
ZGxlcl9zdWl0ZV9tYXApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCcvb3JpZ2luX2NoZWNr
JyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgK
KyAgICAgICAgICAgICcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJy9zdWIvcGxhaW4nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJy9leGNlcHRp
b25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCisKKyAgICBk
ZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6CisgICAgICAgIGRpc3BhdGNo
LkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCisgICAgICAgIGRpc3BhdGNoLkRpc3Bh
dGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhk
aXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guRGlzcGF0Y2hlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2EvYi9jJywgJ2EvYicpCisKKyAgICBkZWYgdGVzdF9yZXNvdXJj
ZV9wYXRoX2FsaWFzKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihf
VEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcv
b3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKAorICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBk
aXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvc3ViL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25vdC1leGlzdCcpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQ1ZDI5YzY3ZGRmMDdiM2YxMjMyNDU5NzdmOTVjZmUwMTQ4YzgzYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9lbmR0b2VuZC5weQpAQCAt
MCwwICsxLDYzMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5
LgorIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitp
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3RpbmcKKwor
IyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIgdG8gc3RhcnQgY2xv
c2luZyBoYW5kc2hha2UKK19HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKKworX1NFUlZFUl9X
QVJNVVBfSU5fU0VDID0gMC4yCisKKworIyBUZXN0IGJvZHkgZnVuY3Rpb25zCitkZWYgX2VjaG9f
Y2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xp
ZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0
JykKKyAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKKyAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQorCisgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCisKKyAgICBjbGllbnQuYXNzZXJ0X2Nvbm5l
Y3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfYmluYXJ5
KGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2Fn
ZShiJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZShiJ2Jp
bmFyeScsIGJpbmFyeT1UcnVlKQorICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoYidceDAwXHg4MFx4
ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUo
YidceDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKKworICAgIGNsaWVudC5z
ZW5kX2Nsb3NlKCkKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2dvb2RieWUoY2xpZW50KToKKyAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKKyAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rl
c3QnKQorCisgICAgY2xpZW50LnNlbmRfbWVzc2FnZShfR09PREJZRV9NRVNTQUdFKQorICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZShfR09PREJZRV9NRVNTQUdFKQorCisgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKyAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisKKyAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKKworCitkZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfY29kZV9hbmRfcmVhc29uKGNsaWVudCwgY29kZSwgcmVhc29uKToKKyAgICBjbGllbnQu
Y29ubmVjdCgpCisKKyAgICBjbGllbnQuc2VuZF9jbG9zZShjb2RlLCByZWFzb24pCisgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKGNvZGUsIHJlYXNvbikKKworICAgIGNsaWVudC5hc3Nl
cnRfY29ubmVjdGlvbl9jbG9zZWQoKQorCisKK2RlZiBfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJv
Y2VkdXJlKGNsaWVudCk6CisgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgY2xpZW50LnNlbmRf
bWVzc2FnZSgndGVzdCcsIG1hc2s9RmFsc2UpCisgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfUFJPVE9DT0xfRVJST1IsICcnKQorCisgICAg
Y2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCisKKworY2xhc3MgRW5kVG9FbmRUZXN0
QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZW5kLXRvLWVu
ZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCisgICAgc2VydmVyIGFz
IGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xpZW50X2Zvcl90
ZXN0aW5nCisgICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhhdmVzIGNvcnJl
Y3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKKyAgICBoYW5kc2hha2UgYW5kIGZyYW1lcyBvdmVy
IGEgVENQIGNvbm5lY3Rpb24uCisgICAgIiIiCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RpciA9IG9zLnBh
dGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykKKyAgICAgICAgb3MucHV0
ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpvaW4oc3lzLnBhdGgpKQorICAgICAg
ICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdt
b2RfcHl3ZWJzb2NrZXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc3RhbmRhbG9uZS5weScpCisgICAgICAgIHNlbGYuZG9jdW1lbnRfcm9vdCA9IG9z
LnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFtcGxlJykKKyAgICAgICAgcyA9IHNvY2tldC5z
b2NrZXQoKQorICAgICAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgKF8sIHNl
bGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgICAgICBzLmNsb3NlKCkKKworICAg
ICAgICBzZWxmLl9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQor
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKKyAgICAgICAg
c2VsZi5fb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKKyAgICAgICAgc2VsZi5f
b3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKKworICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9wb3J0ID0gc2VsZi50ZXN0X3BvcnQKKworICAgICMgVE9ETyh0eW9zaGlubyk6IFVzZSB0ZWFy
RG93biB0byBraWxsIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX3J1bl9weXRob25fY29tbWFuZChz
ZWxmLCBjb21tYW5kbGluZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgcmV0
dXJuIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9VHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKKworICAgIGRlZiBfcnVuX3NlcnZlcihzZWxmKToK
KyAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kLCAn
LUgnLCAnbG9jYWxob3N0JywgJy1WJywgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAnLXAnLAor
ICAgICAgICAgICAgc3RyKHNlbGYudGVzdF9wb3J0KSwgJy1QJywKKyAgICAgICAgICAgIHN0cihz
ZWxmLnRlc3RfcG9ydCksICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdAorICAgICAgICBdCisKKyAg
ICAgICAgIyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9nZ2VyIGJ5IHRlc3Qg
cnVubmVyLgorICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAg
ICAgbG9nX2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICBp
ZiBsb2dfbGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1sb2ctbGV2ZWwnKQorICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2luZy5nZXRMZXZlbE5h
bWUobG9nX2xldmVsKS5sb3dlcigpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3RkZXJyPXNlbGYuc2VydmVyX3N0ZGVycikKKworICAgIGRlZiBfY2xv
c2Vfc2VydmVyKHNlbGYsIHNlcnZlcik6CisgICAgICAgICIiIgorCisgICAgICAgIFRoaXMgbWV0
aG9kIG1pbWljcyBQb3Blbi5fX2V4aXRfXyB0byBncmFjZWZ1bGx5IGtpbGwgdGhlIHNlcnZlciBw
cm9jZXNzLgorICAgICAgICBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIG1haW50YWluIGNvbXB0YWli
aWxpdHkgYmV0d2VlbiBweXRob24gMiBhbmQgMywKKyAgICAgICAgc2luY2UgUG9wZW4gaW4gcHl0
aG9uIDIgZG9lcyBub3QgaGF2ZSBfX2V4aXRfXyBhdHRyaWJ1dGUuCisKKyAgICAgICAgIiIiCisg
ICAgICAgIHNlcnZlci5raWxsKCkKKworICAgICAgICBpZiBzZXJ2ZXIuc3Rkb3V0OgorICAgICAg
ICAgICAgc2VydmVyLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIGlmIHNlcnZlci5zdGRlcnI6Cisg
ICAgICAgICAgICBzZXJ2ZXIuc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VydmVyLnN0ZGlu
OgorICAgICAgICAgICAgc2VydmVyLnN0ZGluLmNsb3NlKCkKKworICAgICAgICBzZXJ2ZXIud2Fp
dCgpCisKKworY2xhc3MgRW5kVG9FbmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKKwor
ICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1bmN0aW9u
LCBvcHRpb25zKToKKyAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2ljIHRvIHBv
bGwgdGhlIHNlcnZlciB1bnRpbCBpdAorICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAg
Y2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKyAgICAg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQor
CisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgc2VsZi5f
cnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25z
KQorCisgICAgZGVmIF9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qoc2VsZiwgb2ZmZXIsIHJl
c3BvbnNlX2NoZWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9mdW5jdGlvbik6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKwor
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRlbnNpb25zICs9IG9mZmVyCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLmNoZWNrX3Blcm1lc3NhZ2VfZGVmbGF0ZSA9IHJlc3BvbnNlX2NoZWNr
ZXIKKyAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50
KHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjbGll
bnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0X2Z1bmN0aW9uIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKKworICAgICAg
ICAgICAgICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQorICAgICAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NlcnZlcihzZXJ2ZXIpCisKKyAgICBk
ZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rp
b24sIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWFzb24pOgorICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9TRUMpCisKKyAgICAg
ICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVzdGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29w
dGlvbnMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihj
bGllbnQsIGNvZGUsIHJlYXNvbikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisgICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190
ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6CisgICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNy
ZWF0ZV9jbGllbnQob3B0aW9ucykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBj
bGllbnQuY29ubmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0
Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCisgICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90
ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2Vw
dGlvbicpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsaWVudC5jbG9z
ZV9zb2NrZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc2Vy
dmVyKHNlcnZlcikKKworICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAgICAgIHNlbGYuX3J1
bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKKworICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5
KHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0
aF9iaW5hcnkpCisKKyAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKKyAgICAg
ICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZSkKKwor
ICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLl9ydW5fdGVz
dChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQorCisgICAgZGVmIHRlc3RfZWNob19w
ZXJtZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcK
KyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEp
CisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKwor
ICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2Vy
dF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0
ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFt
ZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2Rl
ZmxhdGVfdGVzdChbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFtZXMoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9k
YXRhKGInXHhmMlx4NDhceGNkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4XHhjZFx4
YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAgICAgICAgICBj
bGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xv
c2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFt
ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVyLmdldF9wYXJh
bWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsn
cGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAgZGVmIHRlc3Rf
ZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJc
eDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5z
ZW5kX2RhdGEoYidceGYyXHgwMFx4MTFceDAwXHgwMCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKKyAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBiJ1x4ZjJceDQ4
XHhjZFx4YzlceGM5XHgwN1x4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorICAgICAgICAg
ICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAorICAgICAgICAgICAgICAg
IGInXHhmMlx4MDBceDExXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgcnN2MT0xKQorCisgICAg
ICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJh
bWV0ZXIubmFtZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgcGFyYW1ldGVy
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0
ZV90ZXN0KFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Cisg
ICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAg
Y2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5n
Lk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9
MSkKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShiJ1x4ZjJceDAwXHgxMVx4
MDBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnN2MT0xKQorICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmlu
YXJ5KAorICAgICAgICAgICAgICAgIGInXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCisg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAg
ICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRf
cmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgYidceGYyXHg0OFx4Y2RceGM5XHhjOVx4
MDdceDAwJywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFy
YW1ldGVycygpKQorCisgICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgK
KyAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlciddLAorICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwgdGVzdF9mdW5jdGlvbikKKwor
ICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3ByZWZlcmVuY2Uoc2VsZik6Cisg
ICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhl
IGV4YW1wbGVzIGluIHRoZSBzcGVjLgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGIn
XHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LnNlbmRfZGF0YShjb21wcmVzc2VkX2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxs
bywKKyAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAorICAgICAgICAgICAgICAgIHJzdjE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygpKQorCisg
ICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUnXSwgcmVzcG9uc2VfY2hlY2tlciwK
KyAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uKGNsaWVudCk6CisgICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVj
LgorICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGInXHhmMlx4NDhceGNkXHhjOVx4Yzlc
eDA3XHgwMCcKKyAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YShjb21wcmVzc2Vk
X2hlbGxvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc3YxPTEpCisgICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5h
cnkoCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywKKyAgICAgICAgICAgICAgICBv
cGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAorICAgICAgICAgICAgICAgIHJz
djE9MSkKKworICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tl
cihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Wygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KFsKKyAgICAgICAgICAgICdwZXJt
ZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcKKyAgICAgICAgICAg
ICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICAgICAgXSwgcmVzcG9uc2VfY2hlY2tl
ciwgdGVzdF9mdW5jdGlvbikKKworICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRl
X3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCisgICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQorCisgICAgICAgIGRlZiByZXNw
b25zZV9jaGVja2VyKHBhcmFtZXRlcik6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQorCisgICAgICAgIHNl
bGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKKyAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKKyAgICAgICAgICAg
IHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9lY2hvX3Bl
cm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYpOgor
ICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAgY2xpZW50LnNl
bmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKKwor
ICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZsYXRl
JykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCisgICAgICAg
ICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz0zMDAwMDAw
J10sCisgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKQorCisgICAg
ZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF91bmRlZmluZWRfcGFyYW1ldGVy
KHNlbGYpOgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAgICAgICAgICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQorICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKCkKKworICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2Fn
ZS1kZWZsYXRlJykKKworICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3Qo
WydwZXJtZXNzYWdlLWRlZmxhdGU7IGZvbz1iYXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pCisKKyAg
ICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9jbG9zZScKKyAgICAgICAgc2VsZi5fcnVuX2Ns
b3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3QoCisgICAgICAgICAgICBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24sIDMzMzMsICdzdW5zdW5zdW5zdW4nKQorCisg
ICAgZGVmIHRlc3RfZWNob19jbG9zZV93aXRoX2VtcHR5X2JvZHkoc2VsZik6CisgICAgICAgIHNl
bGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3NlJworICAgICAgICBzZWxmLl9ydW5fY2xvc2Vf
d2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKKyAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgTm9uZSwgJycpCisKKyAgICBkZWYgdGVzdF9jbG9z
ZV9vbl9wcm90b2NvbF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2Vy
dmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBwcm90b2NvbCBlcnJvciBzdGF0dXMKKyAgICAg
ICAgY29kZSB3aGVuIHRoZSBjbGllbnQgc2VuZHMgZGF0YSB3aXRoIHNvbWUgcHJvdG9jb2wgZXJy
b3IuCisgICAgICAgICIiIgorICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgorICAg
ICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQorCisgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBm
cmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRhdGlvbgorICAgICAg
ICAgICAgIyBmcmFtZS4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1lX29mX2FyYml0cmFy
eV9ieXRlcyhiJ1x4ODBceDgwJywgJycpCisgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKKworICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQorCisg
ICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6CisgICAgICAgICIi
IlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0
ZWQgb3BlcmF0aW9uCisgICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBk
YXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCisgICAgICAgIG5vdCBzdXBwb3J0ZWQg
YnkgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAgICAgICAgICMgVGV4
dCBmcmFtZSB3aXRoIFJTVjMgYml0IHJhaXNlZC4KKyAgICAgICAgICAgIGNsaWVudC5zZW5kX2Zy
YW1lX29mX2FyYml0cmFyeV9ieXRlcyhiJ1x4OTFceDgwJywgJycpCisgICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCisgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0
aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRl
c3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlkX2ZyYW1lKHNlbGYp
OgorICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3
aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAorICAgICAgICBkYXRhIHN0YXR1cyBjb2RlIHdoZW4g
dGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFpbmluZworICAgICAg
ICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6CisgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCisKKyAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgorICAgICAgICAg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZShiJ1x4ODAnLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgKKyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBKQorCisgICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnRlcm5h
bF9lbmRwb2ludF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVy
IHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0aCBpbnRlcm5hbCBlbmRwb2ludAorICAgICAgICBlcnJv
ciBzdGF0dXMgY29kZSB3aGVuIHRoZSBoYW5kbGVyIGRvZXMgYmFkIG9wZXJhdGlvbi4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvaW50ZXJuYWxfZXJy
b3InCisKKyAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKKyAgICAgICAgICAgIGNs
aWVudC5jb25uZWN0KCkKKyAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgK
KyAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX0lOVEVSTkFMX0VORFBP
SU5UX0VSUk9SKQorCisgICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCisKKyAg
ICAjIFRPRE8odG95b3NoaW0pOiBBZGQgdGVzdHMgdG8gdmVyaWZ5IGludmFsaWQgYWJzb2x1dGUg
dXJpIGhhbmRsaW5nIGxpa2UKKyAgICAjIGhvc3QgdW5tYXRjaCwgcG9ydCB1bm1hdGNoIGFuZCBp
bnZhbGlkIHBvcnQgZGVzY3JpcHRpb24gKCc6JyB3aXRob3V0IHBvcnQKKyAgICAjIG51bWJlciku
CisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV91cmkoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGFi
c29sdXRlIHVyaSByZXF1ZXN0LiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25z
CisgICAgICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnd3M6Ly9sb2NhbGhvc3Q6JWQvZWNobycgJSBv
cHRpb25zLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xpZW50X29w
dGlvbnMoX2VjaG9fY2hlY2tfcHJvY2VkdXJlLCBvcHRpb25zKQorCisgICAgZGVmIHRlc3Rfb3Jp
Z2luX2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIG9yaWdp
biBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAg
ICAgIG9wdGlvbnMucmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKKyAgICAgICAgIyBTZXJ2ZXIg
c2hvd3Mgd2FybmluZyBtZXNzYWdlIGZvciBodHRwIDQwMyBmYWxsYmFjay4gVGhpcyB3YXJuaW5n
CisgICAgICAgICMgbWVzc2FnZSBpcyBjb25mdXNpbmcuIEZvbGxvd2luZyBwaXBlIGRpc3Bvc2Vz
IHdhcm5pbmcgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IHN1YnByb2Nl
c3MuUElQRQorICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQw
MykKKworICAgIGRlZiB0ZXN0X3ZlcnNpb25fY2hlY2soc2VsZik6CisgICAgICAgICIiIlRlc3Rz
IGh0dHAgZmFsbGJhY2sgb24gdmVyc2lvbiBjaGVjayBmYWlsLiIiIgorCisgICAgICAgIG9wdGlv
bnMgPSBzZWxmLl9vcHRpb25zCisgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9IDk5CisgICAgICAg
IHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAwKQorCisKK2NsYXNzIEVu
ZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgorICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQorCisgICAgZGVm
IF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdChzZWxmLCBleHBlY3RlZCwgc3Rkb3V0
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmRh
dGEpOgorICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRhLmRlY29kZSgidXRmLTgiKQorICAgICAg
ICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1Vu
ZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBjbGllbnQ6ICcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAgICAgaWYgc3RkZXJy
ZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3Rl
ZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkKKworICAgIGRlZiB0ZXN0X2V4YW1wbGVf
ZWNob19jbGllbnQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50
LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2VydmVyLiIiIgorCisgICAgICAgIHNlcnZl
ciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLnNs
ZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKKworICAgICAgICAgICAgY2xpZW50X2NvbW1hbmQg
PSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZWNob19jbGllbnQucHknKQorCisgICAgICAgICAg
ICAjIEV4cGVjdGVkIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgbWVzc2FnZXMuCisgICAgICAgICAg
ICBkZWZhdWx0X2V4cGVjdGF0aW9uID0gKHUnU2VuZDogSGVsbG9cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdSZWN2OiBIZWxsb1xuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1J1NlbmQ6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1J1JlY3Y6IFx1NjVlNVx1NjcyY1xuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1J1NlbmQgY2xvc2VcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSdSZWN2IGFja1xuJykKKworICAgICAgICAgICAgYXJncyA9IFtj
bGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpXQorICAg
ICAgICAgICAgY2xpZW50ID0gc2VsZi5fcnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1z
dWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xp
ZW50LmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19j
bGllbnRfcmVzdWx0KGRlZmF1bHRfZXhwZWN0YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQorCisg
ICAgICAgICAgICAjIFByb2Nlc3MgYSBiaWcgbWVzc2FnZSBmb3Igd2hpY2ggZXh0ZW5kZWQgcGF5
bG9hZCBsZW5ndGggaXMgdXNlZC4KKyAgICAgICAgICAgICMgVG8gaGFuZGxlIGV4dGVuZGVkIHBh
eWxvYWQgbGVuZ3RoLCB3c192ZXJzaW9uIGF0dHJpYnV0ZSB3aWxsIGJlCisgICAgICAgICAgICAj
IGFjY2Vzc2VkLiBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd3NfdmVyc2lvbiBpcyBjb3JyZWN0bHkg
c2V0LgorICAgICAgICAgICAgYmlnX21lc3NhZ2UgPSAnYScgKiAxMDI0CisgICAgICAgICAgICBh
cmdzID0gWworICAgICAgICAgICAgICAgIGNsaWVudF9jb21tYW5kLCAnLXAnLAorICAgICAgICAg
ICAgICAgIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwgJy1tJywgYmlnX21lc3NhZ2UK
KyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29t
bWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgc3Rkb3V0ZGF0
YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleHBlY3Rl
ZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5SZWN2IGFja1xuJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19tZXNzYWdlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KGV4cGVjdGVkLCBzdGRv
dXRkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkZXJyZGF0YSkKKworICAgICAgICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxh
dGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICBjbGll
bnRfY29tbWFuZCwgJy1wJywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCksICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGll
bnQuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2Ns
aWVudF9yZXN1bHQoZGVmYXVsdF9leHBlY3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9zZXJ2ZXIoc2VydmVyKQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4
dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWExMTE4ODhiZTkwMDViZDdiNjg0MzY2YWViZmQxZDkxNGY0YTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkK
QEAgLTAsMCArMSwxOTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
MjAxMiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiJUZXN0cyBmb3IgZXh0ZW5zaW9ucyBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6bGliCisK
K2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZXh0ZW5zaW9ucworCisKK2NsYXNzIEV4dGVuc2lv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBub24tY2xh
c3MgbWV0aG9kcyBpbiBleHRlbnNpb25zLnB5IiIiCisgICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93
X2JpdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVu
c2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnIDggJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKKworICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzkuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
LTgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
MTYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMDAwMDAwJykK
KworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvclBhcnNpbmdUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBjaGVja2luZyB0aGF0
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yIHBhcnNlcworICAgIGdpdmVuIGV4
dGVuc2lvbiBwYXJhbWV0ZXIgY29ycmVjdGx5LgorICAgICIiIgorICAgIGRlZiB0ZXN0X3JlZ2lz
dHJ5KHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25f
cHJvY2Vzc29yKAorICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVz
c2FnZS1kZWZsYXRlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxm
KToKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvcigKKyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScpKQorCisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdl
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoemxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9y
ZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
cm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCisKKyAgICBk
ZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKKyAgICAgICAgcGFyYW1l
dGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAg
ICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAn
MTAnKQorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nv
ci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVy
bWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwLCBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQorCisg
ICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9vdXRfb2ZfcmFuZ2VfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX21h
eF93aW5kb3dfYml0cycsICcwJykKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6
CisgICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3Nh
Z2UtZGVmbGF0ZScpCisgICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4
X3dpbmRvd19iaXRzJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKKworICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAg
cGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRl
JykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCisKKyAgICAgICAgcmVzcG9uc2Ug
PSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRl
eHRfdGFrZW92ZXIpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92
ZXJfd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKKyAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgJ2Zvb2JhcicpCisgICAgICAg
IHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKyAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25f
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQorICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignZm9vJywgJ2JhcicpCisgICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCisKKworY2xh
c3MgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3JCdWlsZGluZ1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVz
c2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgYnVpbGRzCisgICAgYSByZXNwb25zZSBiYXNl
ZCBvbiBzcGVjaWZpZWQgb3B0aW9ucyBjb3JyZWN0bHkuCisgICAgIiIiCisgICAgZGVmIHRlc3Rf
cmVzcG9uc2Vfd2l0aF9tYXhfd2luZG93X2JpdHMoc2VsZik6CisgICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCisgICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgTm9uZSkK
KyAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X21heF93
aW5kb3dfYml0cygxMCkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZs
YXRlJywgcmVzcG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVu
dF9tYXhfd2luZG93X2JpdHMnLCAnMTAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkKKworICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4
X3dpbmRvd19iaXRzX3dpdGhvdXRfY2xpZW50X3Blcm1pc3Npb24oc2VsZik6CisgICAgICAgIHBy
b2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3Io
CisgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxh
dGUnKSkKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDEwKQor
CisgICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQor
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X3Jlc3Bv
bnNlX3dpdGhfdHJ1ZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKKyAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcigK
KyAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpKQorCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIo
VHJ1ZSkKKworICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVz
cG9uc2UubmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ2NsaWVudF9ub19jb250
ZXh0X3Rha2VvdmVyJywgTm9uZSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpCisKKyAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX2ZhbHNlX2Zv
cl9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgorICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAorICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCisKKyAgICAgICAg
cHJvY2Vzc29yLnNldF9jbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcihGYWxzZSkKKworICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXNwb25zZS5nZXRfcGFyYW1ldGVycygp
KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQor
CisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdF9oYW5kc2hha2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwZTIyNzhkZmU2NTAxOWQ3NjU5NDg5YjUzOGZjYzg1YWQ1N2Q0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfaGFuZHNoYWtl
LnB5CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorIiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5fYmFzZSBtb2R1bGUuIiIiCisKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5z
aW9uUGFyYW1ldGVyCitmcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9y
bWF0X2V4dGVuc2lvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2Vf
ZXh0ZW5zaW9ucworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKKworCitjbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29s
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVf
c3VicHJvdG9jb2wgbWV0aG9kLiIiIgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3N1YnByb3RvY29s
KHNlbGYpOgorICAgICAgICAjIFNob3VsZCBzdWNjZWVkLgorICAgICAgICB2YWxpZGF0ZV9zdWJw
cm90b2NvbCgnc2FtcGxlJykKKyAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScp
CisgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKQorCisg
ICAgICAgICMgU2hvdWxkIGZhaWwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2wsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3RvY29sLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgwOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2NvbCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwgdmFsaWRhdGVfc3VicHJvdG9jb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDIwcHJvdG9jb2wnKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHg3ZnByb3RvY29sJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb24s
CisgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKKyAgICAgICAgICAgICMgIkphcGFu
IiBpbiBKYXBhbmVzZQorICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQorCisKK19URVNUX1RP
S0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCisgICAg
KCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFy
PWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCisgICAgKCdmb287IGJhcj1iYXo7
IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6Jyld
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjYXInLCBbKCdjZHInLCBOb25l
KV0pXSksCisgICAgKCdhLCBiLCBjLCBkJywgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBb
XSksICgnZCcsIFtdKV0pLAorXQorCitfVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisg
ICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCisgICAgKCdmb287
IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAorICAgICgnZm9v
OyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKKyAgICAoJ2Zv
bzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwK
KyAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSks
CisgICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicp
XSldKSwKK10KKworX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWworICAg
ICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAorICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2Zv
bycsIFsoJ2JhcicsIE5vbmUpXSldKSwKKyAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBb
KCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAorICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygn
Zm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKKyAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2Zvbycs
IFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCitdCisKK19URVNUX1JFRFVOREFOVF9R
VU9URURfRVhURU5TSU9OX0RBVEEgPSBbCisgICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiIn
LCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCitdCisKKworY2xhc3MgRXh0ZW5zaW9u
c1BhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAgIiIiVmVy
aWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZl
IHRoZQorICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4
cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgorICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0
ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQorICAgICAgICBwYXJhbWV0
ZXIgZGljdGlvbmFyeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCisgICAgICAgIGZvciBleHBlY3Rl
ZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6CisgICAgICAgICAg
ICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYp
OgorICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tF
Tl9FWFRFTlNJT05fREFUQToKKyAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlz
dChkZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cnNlX2V4dGVuc2lvbnMoZm9ybWF0dGVkX3N0cmluZykpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9x
dW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIGZvcm1hdHRlZF9zdHJpbmcsIGRlZmluaXRp
b24gaW4gX1RFU1RfUVVPVEVEX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVy
aWZ5X2V4dGVuc2lvbl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9kYXRhKHNlbGYpOgorICAgICAgICBmb3IgKGZvcm1h
dHRlZF9zdHJpbmcsCisgICAgICAgICAgICAgZGVmaW5pdGlvbikgaW4gX1RFU1RfUkVEVU5EQU5U
X1RPS0VOX0VYVEVOU0lPTl9EQVRBOgorICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2V4dGVuc2lv
bl9saXN0KGRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKKworICAgIGRlZiB0ZXN0X3Bh
cnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKKyAgICAgICAgZm9yIChmb3JtYXR0ZWRf
c3RyaW5nLAorICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9U
RURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xp
c3QoZGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQorCisgICAgZGVmIHRlc3RfcGFyc2Vf
YmFkX2RhdGEoc2VsZik6CisgICAgICAgIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQSA9IFsKKyAg
ICAgICAgICAgICgnZm9vOyA7ICcpLAorICAgICAgICAgICAgKCdmb287IGEgYScpLAorICAgICAg
ICAgICAgKCdmb28gZm9vJyksCisgICAgICAgICAgICAoJywsLCcpLAorICAgICAgICAgICAgKCdm
b287IGJhcj0nKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9ImhvZ2UnKSwKKyAgICAgICAgICAg
ICgnZm9vOyBiYXI9ImFcciInKSwKKyAgICAgICAgICAgICgnZm9vOyBiYXI9IlxcXHhmZiInKSwK
KyAgICAgICAgICAgICgnZm9vOyBiYXI9XHJhJyksCisgICAgICAgIF0KKworICAgICAgICBmb3Ig
Zm9ybWF0dGVkX3N0cmluZyBpbiBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEE6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBwYXJzZV9leHRl
bnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX3N0cmluZykK
KworCitjbGFzcyBGb3JtYXRFeHRlbnNpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6CisgICAgICAgIGZvciBmb3JtYXR0ZWRf
c3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKKyAgICAg
ICAgICAgIGV4dGVuc2lvbnMgPSBbXQorICAgICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVm
aW5pdGlvbnM6CisgICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlv
bgorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQor
ICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAg
ICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lv
bnMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigp
CisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hh
bmRzaGFrZV9oeWJpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ODQxZjFmNzlmYTg5ZjAzZjBlMDIxOWUwNmIy
MTNjMzRmNWYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkucHkKQEAgLTAsMCArMSw0MjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4i
IiIKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCB1bml0
dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgVmVyc2lvbkV4Y2VwdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Lmh5YmkgaW1wb3J0IEhhbmRzaGFrZXIKKworZnJvbSB0ZXN0IGltcG9ydCBtb2NrCisKKworY2xh
c3MgUmVxdWVzdERlZmluaXRpb24ob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBob2xkaW5n
IGRhdGEgZm9yIGNvbnN0cnVjdGluZyBvcGVuaW5nIGhhbmRzaGFrZSBzdHJpbmdzIGZvcgorICAg
IHRlc3RpbmcgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4KKyAgICAiIiIKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgorICAgICAgICBzZWxmLm1l
dGhvZCA9IG1ldGhvZAorICAgICAgICBzZWxmLnVyaSA9IHVyaQorICAgICAgICBzZWxmLmhlYWRl
cnMgPSBoZWFkZXJzCisKKworZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgorICAgIHJl
dHVybiBSZXF1ZXN0RGVmaW5pdGlvbigKKyAgICAgICAgJ0dFVCcsICcvZGVtbycsIHsKKyAgICAg
ICAgICAgICdIb3N0JzogJ3NlcnZlci5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnVXBncmFk
ZSc6ICd3ZWJzb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCisg
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXknOiAnZEdobElITmhiWEJzWlNCdWIyNWpaUT09
JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAorICAgICAgICAg
ICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAgIH0pCisKKworZGVmIF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oYicn
KQorICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmLnVyaSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVmLmhlYWRlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3Jl
YXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6CisgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgIHJldHVybiBoYW5kc2hha2VyCisKKwor
Y2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRp
c3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnBy
b3RvY29sCisgICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBn
aXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKKyAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMg
bmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJvdG9jb2wuCisgICAg
IiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlPU5vbmUpOgor
ICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0g
ZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2Nv
bnRleHQpOgorICAgICAgICBpZiBzZWxmLmluZGV4ID49IDA6CisgICAgICAgICAgICBjb25uX2Nv
bnRleHQud3NfcHJvdG9jb2wgPSBjb25uX2NvbnRleHQud3NfcmVxdWVzdGVkX3Byb3RvY29sc1sK
KyAgICAgICAgICAgICAgICBzZWxmLmluZGV4XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
Y29ubl9jb250ZXh0LndzX3Byb3RvY29sID0gc2VsZi5kZWZhdWx0X3ZhbHVlCisKKyAgICBkZWYg
dHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworY2xh
c3MgSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitj
bGFzcyBBYm9ydGluZ0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJBIGRpc3BhdGNoZXIgZm9y
IHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciByYWlzZXMgYW4gZXhjZXB0aW9uIGluCisgICAgZG9f
ZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBkZWYg
ZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6CisgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUFib3J0ZWRFeGNlcHRpb24oJ0FuIGV4Y2VwdGlvbiB0byByZWplY3QgdGhlIHJlcXVl
c3QnKQorCisgICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgY29ubl9jb250ZXh0KToKKyAgICAg
ICAgcGFzcworCisKK2NsYXNzIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKG9iamVjdCk6CisgICAg
IiIiQSBkaXNwYXRjaGVyIGZvciB0ZXN0aW5nLiBUaGlzIGRpc3BhdGNoZXIgcmFpc2VzIGFuCisg
ICAgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBpbiBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0
IHRoZSByZXF1ZXN0LgorICAgICIiIgorICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwg
Y29ubl9jb250ZXh0KToKKyAgICAgICAgcmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4g
QWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShz
ZWxmLCBjb25uX2NvbnRleHQpOgorICAgICAgICBwYXNzCisKKworX0VYUEVDVEVEX1JFU1BPTlNF
ID0gKAorICAgIGInSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIGIn
VXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBiJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwor
ICAgIGInU2VjLVdlYlNvY2tldC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1c
clxuXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgICIiIkEgdW5pdHRlc3QgZm9yIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2Nv
bC0wNiBhbmQgbGF0ZXIKKyAgICBoYW5kc2hha2UgcHJvY2Vzc29yLgorICAgICIiIgorICAgIGRl
ZiB0ZXN0X2RvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSkKKyAgICAgICAgZGlzcGF0Y2hlciA9IG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKQorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxl
ZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
ZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCisKKyAgICBk
ZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgICMgQWRkIGhl
YWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScKKyAgICAgICAgcmVx
dWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXknXSA9ICcnCisKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVf
aGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9j
YXBpdGFsaXplZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWyd1cGdyYWRlJ10g
PSAnV0VCU09DS0VUJworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ1VQR1JBREUnCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVEX1JFU1BP
TlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9k
b19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKKyAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAn
CisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0VYUEVDVEVE
X1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYg
dGVzdF9hYm9ydGluZ19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKF9jcmVhdGVfcmVxdWVzdChfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0aW5nRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gZXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0
J3Mgbm90IGNhdWdodCBieQorICAgICAgICAjIGRvX2hhbmRzaGFrZS4KKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoSGFuZHNoYWtlQWJvcnRlZEV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wcm90b2NvbChzZWxmKToK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hhdCwg
c3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIFN1YnByb3RvY29s
Q2hvb3NpbmdEaXNwYXRjaGVyKDApKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgp
CisKKyAgICAgICAgRVhQRUNURURfUkVTUE9OU0UgPSAoCisgICAgICAgICAgICBiJ0hUVFAvMS4x
IDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKKyAgICAgICAgICAgIGInVXBncmFkZTogd2Vi
c29ja2V0XHJcbicKKyAgICAgICAgICAgIGInQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisgICAg
ICAgICAgICBiJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4
T289XHJcbicKKyAgICAgICAgICAgIGInU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5c
clxuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfZG9faGFuZHNoYWtl
X3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25zZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm90
b2NvbENob29zaW5nRGlzcGF0Y2hlcigtMSwgJ2Zvb2JhcicpKQorICAgICAgICAjIE5vIHJlcXVl
c3QgaGFzIGJlZW4gbWFkZSBidXQgd3NfcHJvdG9jb2wgaXMgc2V0LiBIYW5kc2hha2VFeGNlcHRp
b24KKyAgICAgICAgIyBtdXN0IGJlIHJhaXNlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sX25vX3Byb3RvY29sX3NlbGVjdGlvbihzZWxm
KToKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAg
ICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10gPSAnY2hh
dCwgc3VwZXJjaGF0JworCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkK
KyAgICAgICAgIyB3c19wcm90b2NvbCBpcyBub3Qgc2V0LiBIYW5kc2hha2VFeGNlcHRpb24gbXVz
dCBiZSByYWlzZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlv
biwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2Vy
dmVyX25vX2NvbnRleHRfdGFrZW92ZXInKQorCisgICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0g
KAorICAgICAgICAgICAgYidIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCisg
ICAgICAgICAgICBiJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisgICAgICAgICAgICBiJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJworICAgICAgICAgICAgYidTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCisgICAgICAgICAgICBiJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9uczogJworICAgICAgICAgICAgYidwZXJtZXNzYWdlLWRlZmxhdGU7IHNl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKKyAgICAgICAgICAgIGInXHJcbicpCisKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAgICAgaGFu
ZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQorICAgICAgICBoYW5kc2hha2Vy
LmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTUE9O
U0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAgICAgICAgZXh0ZW5zaW9u
ID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04sIGV4dGVuc2lvbi5uYW1lKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBleHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl92YWx1ZSgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLCByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X3F1b3RlZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAorICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtZGVmbGF0ZSwg
LCAnCisgICAgICAgICAgICAndW5rbm93bjsgZSAgID0gICAgIm1jXjIiOyBtYT0iXHJcbiAgICAg
IFxcXHJmICAiOyBwdj1ucnQnKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
cmVxdWVzdF9kZWYpCisgICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVx
dWVzdCkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGxlbihyZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zKSkKKyAgICAg
ICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uc1swXQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQorICAgICAgICBzZWNvbmRfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9uc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd1bmtub3duJywg
c2Vjb25kX2V4dGVuc2lvbi5uYW1lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydlJywg
J21hJywgJ3B2J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kX2V4dGVuc2lvbi5n
ZXRfcGFyYW1ldGVyX25hbWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21jXjInLCBz
ZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ2UnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnIFxyZiAnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J21hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ25ydCcsIHNlY29uZF9leHRlbnNpb24u
Z2V0X3BhcmFtZXRlcl92YWx1ZSgncHYnKSkKKworICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlW
YWx1ZSddID0gJycKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQUtleSddID0gJ0FWYWx1
ZScKKworICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQorICAg
ICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCisgICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVl
JywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JycsIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQorCisgICAgZGVmIHRlc3RfYWJv
cnRfZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hlcigpKQorICAgICAg
ICAjIGRvX2V4dHJhX2hhbmRzaGFrZSByYWlzZXMgYW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbi4g
Q2hlY2sgdGhhdCBpdCdzCisgICAgICAgICMgbm90IGNhdWdodCBieSBkb19oYW5kc2hha2UuCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNlbGYpOgorICAg
ICAgICBiYWRfY2FzZXMgPSBbCisgICAgICAgICAgICAoJ0hUVFAgcmVxdWVzdCcsCisgICAgICAg
ICAgICAgUmVxdWVzdERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgICdHRVQnLCAnL2RlbW8n
LCB7CisgICAgICAgICAgICAgICAgICAgICAnSG9zdCc6CisgICAgICAgICAgICAgICAgICAgICAn
d3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgorICAg
ICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBP
UyBYIDEwLjU7JworICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vj
a28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKKyAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBH
VEJBJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOgorICAgICAgICAgICAgICAgICAg
ICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45
LCcKKyAgICAgICAgICAgICAgICAgICAgICcqLyo7cT0wLjgnLAorICAgICAgICAgICAgICAgICAg
ICAgJ0FjY2VwdC1MYW5ndWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAnZW4tdXMsZW47cT0w
LjUnLAorICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6CisgICAgICAgICAg
ICAgICAgICAgICAnZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQt
Q2hhcnNldCc6CisgICAgICAgICAgICAgICAgICAgICAnSVNPLTg4NTktMSx1dGYtODtxPTAuNywq
O3E9MC43JywKKyAgICAgICAgICAgICAgICAgICAgICdLZWVwLUFsaXZlJzoKKyAgICAgICAgICAg
ICAgICAgICAgICczMDAnLAorICAgICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOgorICAg
ICAgICAgICAgICAgICAgICAgJ2tlZXAtYWxpdmUnCisgICAgICAgICAgICAgICAgIH0pLCBOb25l
LCBUcnVlKQorICAgICAgICBdCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2Rf
cmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2QgPSAnUE9TVCcKKyAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
CisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10KKyAgICAgICAgYmFkX2Nh
c2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKwor
ICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAg
IGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KKyAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKKworICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIHJl
cXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2NrZXQnCisgICAgICAgIGJh
ZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRydWUp
KQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAg
ICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXQorICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVzdF9kZWYsIE5vbmUsIFRy
dWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
KyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbiddID0gJ0Rvd25ncmFkZScK
KyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rpb24nLCByZXF1ZXN0X2Rl
ZiwgTm9uZSwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQorICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tl
dC1LZXknXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0
LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQorCisgICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKKyAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1LZXknXSA9ICgKKyAgICAgICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1
alpRPT1nYXJiYWdlJykKKyAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBvZiAnYScKKyAgICAgICAg
YmFkX2Nhc2VzLmFwcGVuZCgKKyAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkg
KGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciByaWdodCBiZWZv
cmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KKyAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0n
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJT
b2NrZXQtS2V5IChwYWRkaW5nIGJpdHMgYXJlIG5vdCB6ZXJvKScsCisgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCisKKyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQorICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LUtleSddID0gKAorICAgICAgICAgICAgJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PSxkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT0nKQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3Jvbmcg
U2VjLVdlYlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCisgICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFk
ZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQorICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKAor
ICAgICAgICAgICAgKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVy
c2lvbiddID0gJzMnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAoJ1dy
b25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBGYWxzZSkpCisK
KyAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQorICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICcxMywgMTMn
CisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24g
KG11bHRpcGxlIHZhbHVlcyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2Rl
ZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICdpbGxlZ2FsXHgwOXByb3RvY29sJworICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAorICAgICAgICAgICAgKCdJbGxlZ2FsIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0
X2RlZiwgNDAwLCBUcnVlKSkKKworICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCisgICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnXSA9ICcnCisgICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoCisgICAgICAgICAgICAo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkK
KworICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywK
KyAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgor
ICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKKyAgICAg
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3du
IGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUpCisgICAgICAgICAgICBleGNlcHQgSGFuZHNo
YWtlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVj
dF9oYW5kc2hha2VfZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRfc3RhdHVzLCBlLnN0YXR1cykKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhj
ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RfaGFu
ZHNoYWtlX2V4Y2VwdGlvbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMDFlZjI4Mzkx
M2UzZmM4Nzc1YjNiMjczMTFmNjE5NWM1N2JlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CkBAIC0wLDAgKzEsOTMgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiJUZXN0cyBmb3Ig
aHR0cF9oZWFkZXJfdXRpbCBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKKworCitjbGFzcyBVbml0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSB1bml0dGVzdCBmb3IgaHR0cF9oZWFkZXJfdXRpbCBt
b2R1bGUuIiIiCisgICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNlbGYpOgorICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCcvd3Mv
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1dGVfdXJpKHNlbGYp
OgorICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAorICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwMDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3MvdGVzdCcs
IHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCisgICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbS93cy90ZXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQorCisgICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzczovL2V4YW1wbGUuY29tLycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0NDMsIHBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKKwor
ICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJp
KAorICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4
MDgwLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCisKKyAg
ICBkZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKKyAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKKworICAgICAgICBob3N0LCBwb3J0LCBy
ZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAorICAgICAgICAgICAgJ3dzOi8v
bG9jYWxob3N0OklOVkFMSURfUE9SVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
cmVzb3VyY2UpCisKKyAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91
dGlsLnBhcnNlX3VyaSgKKyAgICAgICAgICAgICd3czovL2xvY2FsaG9zdDotMS93cycpCisgICAg
ICAgIGlmIHN5cy52ZXJzaW9uID49ICczLjYnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCByZXNvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2xvY2FsaG9zdCcsIGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgw
LCBwb3J0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzJywgcmVzb3VyY2UpCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKKworIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyODhjNTEwYjg5YmIyODkzMWRmZjlhNzc5MTgzYTQ5OTE3
NTZlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQpAQCAtMCwwICsxLDEwMCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIi
CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRl
c3QKK2ltcG9ydCBzaXgKKworaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGgg
dG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCisKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCisg
ICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xp
c3QpOgorICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKKyAgICAgICAgICAg
IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3Jp
emluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKKyAgICAgICAgZm9yIGV4cGVj
dGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiBjaGVja193
aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3Qp
OgorICAgICAgICByZWFkX2xpc3QgPSBbXQorICAgICAgICByZWFkX2xpbmUgPSAnJworICAgICAg
ICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGlu
ZShyZWFkX3NpemUpCisgICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKKyAgICAgICAg
ICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6CisgICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9
ICcnOgorICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKKyAgICAg
ICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgorICAgICAgICAgICAgICAg
IHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQorICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9
ICcnCisgICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRf
bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVu
KGFjdHVhbF9saXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlz
dCksIGxlbihyZWFkX2xpc3QpKQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBp
biB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZCwgYWN0dWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgcmVhZCkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Cisg
ICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAor
ICAgICAgICAgICAgc2l4LlN0cmluZ0lPKCdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkKKyAgICAg
ICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJywg
J1dlbGNvbWUnXSkKKworICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGltaXRfbWVt
b3JpemVkX2xpbmVzKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5n
ZmlsZS5NZW1vcml6aW5nRmlsZSgKKyAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldv
cmxkXG5XZWxjb21lJyksIDIpCisgICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAz
LCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9s
aW5lc19lbXB0eV9maWxlKHNlbGYpOgorICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6
aW5nZmlsZS5NZW1vcml6aW5nRmlsZShzaXguU3RyaW5nSU8oJycpKQorICAgICAgICBzZWxmLmNo
ZWNrKG1lbW9yaXppbmdfZmlsZSwgMTAsIFtdKQorCisgICAgZGVmIHRlc3RfZ2V0X21lbW9yaXpl
ZF9saW5lc193aXRoX3NpemUoc2VsZik6CisgICAgICAgIGZvciBzaXplIGluIHJhbmdlKDEsIDEw
KToKKyAgICAgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXpp
bmdGaWxlKAorICAgICAgICAgICAgICAgIHNpeC5TdHJpbmdJTygnSGVsbG9cbldvcmxkXG5XZWxj
b21lJykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1vcml6aW5nX2ZpbGUs
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hlbGxvXG4nLCAnV29y
bGRcbicsICdXZWxjb21lJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9jay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3Mzg3M2RkZTk3ZGYwM2YyMGRmNWFjOTcyMmY2YWQ2NWRk
MDJlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbW9j
ay5weQpAQCAtMCwwICsxLDEzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2ltcG9ydCBzaXgubW92ZXMucXVldWUKK2ltcG9ydCB0
aHJlYWRpbmcKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0
ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KKworZnJvbSB0ZXN0
IGltcG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKGInQUJDXHJcbkRFRkdc
clxuXHJcbkhJSksnKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInSElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKKwor
ICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNc
clxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VG
R1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYidKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YicnLCBzZWxmLl9jb25uLnJlYWQoMTApKQorCisgICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxp
bmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidBQkNcclxuRCcsIHNlbGYuX2Nv
bm4ucmVhZCg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ0VGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidcclxuSElKSycsIHNl
bGYuX2Nvbm4ucmVhZCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHNlbGYuX2Nv
bm4ucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9jb25uLndyaXRlKGInSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29ubi53cml0ZShiJ1dv
cmxkXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidIZWxsb1xyXG5Xb3JsZFxyXG4n
LCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQorCisKK2NsYXNzIE1vY2tCbG9ja2luZ0Nvbm5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrQmxvY2tp
bmdDb25uIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgICIiIlRl
c3RzIHRoYXQgZGF0YSBwdXQgdG8gTW9ja0Jsb2NraW5nQ29ubiBieSBwdXRfYnl0ZXMgbWV0aG9k
IGNhbiBiZQorICAgICAgICByZWFkIGZyb20gaXQuCisgICAgICAgICIiIgorICAgICAgICBjbGFz
cyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAgIiIiQSB0ZXN0IGNs
YXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJlYWRsaW5lIG9uIHRoZQorICAgICAg
ICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQgcHV0cyB0aGUgcmVhZCBkYXRhIHRv
IHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgIHF1ZXVlLgorICAgICAgICAgICAgIiIiCisgICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgorICAgICAgICAgICAgICAg
IHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9x
dWV1ZSA9IHF1ZXVlCisgICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNvbm4KKyAgICAgICAg
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnQo
KQorCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEpCisKKyAgICAgICAgY29ubiA9
IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCisgICAgICAgIHF1ZXVlID0gc2l4Lm1vdmVzLnF1ZXVl
LlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHF1ZXVlLmVtcHR5KCkpCisgICAgICAgIGNvbm4ucHV0X2J5dGVz
KGInRm9vIGJhclxyXG4nKQorICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiJ0ZvbyBiYXJcclxuJywgcmVhZCkKKworCitjbGFzcyBNb2NrVGFibGVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBNb2NrVGFibGUg
Y2xhc3MuIiIiCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAg
dGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6ICdWYWx1ZSd9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21f
bGlzdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdLZXknLCAnVmFs
dWUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVkn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisKKyAg
ICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2Nr
Lk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwgKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdW
YWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X3NldF9hbmRfZ2V0KHNlbGYpOgor
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQorICAgICAgICB0YWJsZVsnS2V5J10gPSAnVmFsdWUn
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLZXknKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tleScpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
VmFsdWUnLCB0YWJsZVsnS0VZJ10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rl
c3QvdGVzdF9tc2d1dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2YyMWI4ZDI5NzY2ODc3MGNiOTFjNTAx
YzJiMmZjODI1OGI5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDkxNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKKwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KK2lt
cG9ydCBhcnJheQoraW1wb3J0IHNpeC5tb3Zlcy5xdWV1ZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0
IHN0cnVjdAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemxpYgorCitpbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
KworZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgorZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IEludmFsaWRVVEY4RXhjZXB0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tl
dC5zdHJlYW0gaW1wb3J0IFN0cmVhbQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1PcHRpb25zCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSB0
ZXN0IGltcG9ydCBtb2NrCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgbWFwCitmcm9tIHNpeC5tb3Zl
cyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4IGltcG9ydCBpdGVyYnl0ZXMKKworIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCitfTUFTS0lOR19OT05DRSA9IGInQUJDRCcKKworCitkZWYgX21hc2tfaHliaShm
cmFtZSk6CisgICAgaWYgaXNpbnN0YW5jZShmcmFtZSwgc2l4LnRleHRfdHlwZSk6CisgICAgICAg
IEV4Y2VwdGlvbignbWFza2luZyBkb2VzIG5vdCBhY2NlcHQgVGV4dHMnKQorCisgICAgZnJhbWVf
a2V5ID0gbGlzdChpdGVyYnl0ZXMoX01BU0tJTkdfTk9OQ0UpKQorICAgIGZyYW1lX2tleV9sZW4g
PSBsZW4oZnJhbWVfa2V5KQorICAgIHJlc3VsdCA9IGJ5dGVhcnJheShmcmFtZSkKKyAgICBjb3Vu
dCA9IDAKKworICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXN1bHQpKToKKyAgICAgICAgcmVzdWx0
W2ldIF49IGZyYW1lX2tleVtjb3VudF0KKyAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZy
YW1lX2tleV9sZW4KKworICAgIHJldHVybiBfTUFTS0lOR19OT05DRSArIGJ5dGVzKHJlc3VsdCkK
KworCitkZWYgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3IsIHJlcXVlc3Qs
IHN0cmVhbV9vcHRpb25zKToKKyAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKKyAgICBpZiByZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgcHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQorICAgICAgICByZXF1ZXN0
LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCisKKworZGVmIF9jcmVh
dGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1Ob25lKToKKyAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5N
b2NrQ29ubihyZWFkX2RhdGEpKQorICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05f
SFlCSV9MQVRFU1QKKyAgICByZXEud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQorCisgICAg
cHJvY2Vzc29yID0gTm9uZQorICAgIGlmIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0IGlzIG5v
dCBOb25lOgorICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigKKyAgICAgICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQorCisgICAg
c3RyZWFtX29wdGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICBpZiBwcm9jZXNzb3IgaXMgbm90
IE5vbmU6CisgICAgICAgIF9pbnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCBy
ZXEsIHN0cmVhbV9vcHRpb25zKQorICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJl
YW1fb3B0aW9ucykKKworICAgIHJldHVybiByZXEKKworCitkZWYgX2NyZWF0ZV9yZXF1ZXN0KCpm
cmFtZXMpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBm
cmFtZXMuCisKKyAgICBmcmFtZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3Qu
Y29ubmVjdGlvbi5yZWFkKCkgd2hlcmUgcmVxdWVzdAorICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVy
bmVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICAgIiIiCisKKyAgICByZWFkX2RhdGEgPSBbXQorICAg
IGZvciAoaGVhZGVyLCBib2R5KSBpbiBmcmFtZXM6CisgICAgICAgIHJlYWRfZGF0YS5hcHBlbmQo
aGVhZGVyICsgX21hc2tfaHliaShib2R5KSkKKworICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKGInJy5qb2luKHJlYWRfZGF0YSkpCisKKworZGVmIF9jcmVhdGVfYmxvY2tp
bmdfcmVxdWVzdCgpOgorICAgICIiIkNyZWF0ZXMgTW9ja1JlcXVlc3QuCisKKyAgICBEYXRhIHdy
aXR0ZW4gdG8gYSBNb2NrUmVxdWVzdCBjYW4gYmUgcmVhZCBvdXQgYnkgY2FsbGluZworICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKS4KKyAgICAiIiIKKworICAgIHJlcSA9IG1v
Y2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKKyAgICBy
ZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCisgICAgc3RyZWFtX29w
dGlvbnMgPSBTdHJlYW1PcHRpb25zKCkKKyAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtKHJlcSwg
c3RyZWFtX29wdGlvbnMpCisgICAgcmV0dXJuIHJlcQorCisKK2NsYXNzIEJhc2ljTWVzc2FnZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2ljIHRlc3RzIGZvciBTdHJlYW0uIiIi
CisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hl
bGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEy
NQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4ODFceDdkJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0
X3NlbmRfbWVkaXVtX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAxMjYK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAg
ICBwYXlsb2FkID0gJ2EnICogKCgxIDw8IDE2KSAtIDEpCisgICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXls
b2FkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4N2VceGZmXHhmZicgKyBwYXls
b2FkLmVuY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2xhcmdlX21lc3Nh
Z2Uoc2VsZik6CisgICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsIHBheWxvYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBi
J1x4ODFceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnICsKKyAgICAgICAgICAg
IHBheWxvYWQuZW5jb2RlKCdVVEYtOCcpLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxmKToKKyAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsIHUnXHU2NWU1JykKKyAgICAgICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5
NyxhNSBpbiBVVEYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDNceGU2XHg5
N1x4YTUnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdl
KHJlcXVlc3QsICchJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDA1
SGVsbG9ceDAwXHgwMSBceDAwXHgwNVdvcmxkXHg4MFx4MDEhJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVz
dF9zZW5kX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJtaW5hdGlvbihzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdIZWxsbyBXb3JsZCEnLCBGYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidc
eDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4
MVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIn
XHg4MVx4ODYnLCBiJ1dvcmxkIScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqIDEyNQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4ODFceGZkJywgcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZC5kZWNvZGUoJ1VURi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lZGl1bV9tZXNz
YWdlKHNlbGYpOgorICAgICAgICBwYXlsb2FkID0gYidhJyAqIDEyNgorICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHgwMFx4N2UnLCBwYXlsb2FkKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAg
ICBwYXlsb2FkID0gYidhJyAqICgoMSA8PCAxNikgLSAxKQorICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KChiJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGF5bG9hZCA9IGInYScgKiAo
MSA8PCAxNikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAg
IChiJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLmRlY29kZSgnVVRGLTgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKwor
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5nX21pbmltYWxfbnVt
YmVyX29mX2J5dGVzKHNlbGYpOgorICAgICAgICAjIExvZyB3YXJuaW5nIG9uIHJlY2VpdmluZyBi
YWQgcGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQorICAgICAgICAjIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgorCisgICAgICAgIHBh
eWxvYWQgPSBiJ2EnCisgICAgICAgICMgMSBieXRlIGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0
IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0KAorICAgICAgICAgICAgKGInXHg4MVx4ZmZceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMScsIHBheWxvYWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQu
ZGVjb2RlKCdVVEYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNv
ZGUoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHg4MVx4ODMn
LCBiJ1x4ZTZceDljXHhhYycpKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDlj
LGFjIGluIFVURi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV9lcnJvbmVvdXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBp
bnZhbGlkIGFzIFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4
ODFceDgyJywgYidceDgwXHg4MScpKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyBzaG91
bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
SW52YWxpZFVURjhFeGNlcHRpb24sIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVu
dHMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGInXHgwMVx4ODUn
LCBiJ0hlbGxvJyksIChiJ1x4MDBceDgxJywgYicgJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGInXHgwMFx4ODUnLCBiJ1dvcmxkJyksIChiJ1x4ODBceDgxJywgYichJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1zZ3V0aWwucmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfdW5p
Y29kZShzZWxmKToKKyAgICAgICAgIyBVVEYtOCBlbmNvZGVzIFUrNmYyMiBpbnRvIGU2YmNhMiBh
bmQgVSs1YjU3IGludG8gZTVhZDk3LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KChiJ1x4MDFceDgyJywgYidceGU2XHhiYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiJ1x4MDBceDgyJywgYidceGEyXHhlNScpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiJ1x4ODBceDgyJywgYidceGFkXHg5NycpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHUnXHU2ZjIyXHU1YjU3JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19pbW1lZGlhdGVfemVyb190ZXJt
aW5hdGlvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAx
XHg4YycsIGInSGVsbG8gV29ybGQhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGInXHg4MFx4ODAnLCBiJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBX
b3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2R1cGxpY2F0ZV9zdGFydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAxXHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoYidceDAxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisg
ICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRlX2J1dF9ub3Rfc3RhcnRl
ZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDAwXHg4NScs
IGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJh
bWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfZW5kX2J1
dF9ub3Rfc3RhcnRlZChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgo
YidceDgwXHg4NScsIGInSGVsbG8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNz
YWdlX2Rpc2NhcmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCisg
ICAgICAgICAgICAoYidceDhmXHg4NicsIGInSUdOT1JFJyksIChiJ1x4ODFceDg1JywgYidIZWxs
bycpLAorICAgICAgICAgICAgKGInXHg4Zlx4ODknLCBiJ0RJU1JFR0FSRCcpLCAoYidceDgxXHg4
NicsIGInV29ybGQhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBw
b3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQorCisgICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceDhhJywgc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyBiJ0dvb2QgYnllJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQorCisgICAgZGVmIHRlc3Rf
c2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZWFzb24gPSAnYScgKiAxMjMKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKKyAgICAgICAgICAgIChiJ1x4ODhceGZk
Jywgc3RydWN0LnBhY2soJyFIJywgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSkgKworICAg
ICAgICAgICAgIHJlYXNvbi5lbmNvZGUoJ1VURi04JykpKQorICAgICAgICByZXF1ZXN0LndzX3N0
cmVhbS5jbG9zZV9jb25uZWN0aW9uKGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX3Jl
YXNvbiwgcmVhc29uKQorCisgICAgZGVmIHRlc3Rfc2VuZF9jbG9zZV90b29fbG9uZyhzZWxmKToK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwgcmVxdWVzdC53c19zdHJlYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsICdhJyAq
IDEyNCkKKworICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfaW5jb25zaXN0ZW50X2NvZGVfYW5kX3Jl
YXNvbihzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCisgICAgICAg
ICMgcmVhc29uIHBhcmFtZXRlciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBjb2RlIGlzIE5v
bmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9uRXhjZXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbiwg
cmVxdWVzdC53c19zdHJlYW0sIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhJykK
KworICAgIGRlZiB0ZXN0X3NlbmRfcGluZyhzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbyBX
b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MGNIZWxsbyBXb3JsZCEn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYpOgorICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKKyAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ2EnICogMTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4N2QnICsg
YidhJyAqIDEyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX3BpbmdfdG9vX2xvbmcoc2VsZik6
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwgbXNndXRpbC5zZW5kX3Bpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsICdhJyAqIDEyNikKKworICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfcGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEg
cGluZyBjb250cm9sIGZyYW1lLiIiIgorICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNz
YWdlKToKKyAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgICMgU3Ry
ZWFtIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3aXRob3V0IGFueSBh
Y3Rpb24KKyAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KKyAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4OGFceDA1SGVsbG8nLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCisKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoYidceDg5XHg4NScsIGInSGVsbG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYidceDgxXHg4NScsIGInV29ybGQnKSkKKyAgICAgICAgcmVxdWVzdC5vbl9waW5nX2hh
bmRsZXIgPSBoYW5kbGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXF1
ZXN0LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4ODlceGZkJywgYidhJyAqIDEy
NSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHg4MVx4ODUnLCBiJ1dv
cmxkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDhhXHg3ZCcg
KyBiJ2EnICogMTI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhz
ZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDBc
eDdlJywgYidhJyAqIDEyNikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxm
KToKKyAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5nIGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgor
ICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKKyAgICAgICAgICAgIHJlcXVl
c3QuY2FsbGVkID0gVHJ1ZQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKGIn
XHg4YVx4ODUnLCBiJ0hlbGxvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGInXHg4MVx4ODUnLCBiJ1dvcmxkJykpCisgICAgICAgIHJlcXVlc3Qub25fcG9uZ19oYW5kbGVy
ID0gaGFuZGxlcgorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8nKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVkLCBi
dXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAg
ICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVzc2Fn
ZSBjYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4OVx4MDVIZWxsbycsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29saWNpdGVkX3Bvbmco
c2VsZik6CisgICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2VkIGZyb20gSHlCaSAw
Ny4KKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDhhXHg4NScsIGInSGVs
bG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDgxXHg4NScsIGIn
V29ybGQnKSkKKyAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKKworICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4OGFceDg1JywgYidIZWxsbycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4ODFceDg1JywgYidXb3JsZCcp
KQorICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSnVtYm8nKQorICAgICAgICAj
IEJvZHkgbWlzbWF0Y2guCisgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX2Nhbm5vdF9iZV9mcmFnbWVudGVkKHNlbGYpOgorICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KChiJ1x4MDlceDg1JywgYidIZWxsbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3Qp
CisKKyAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKKyAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoYidceDg5XHhmZVx4MDFceDAwJywgYidhJyAq
IDI1NikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhj
ZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwgcmVxdWVzdCkKKworCitjbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLiIi
IgorICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVS
TUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSkKKyAgICAgICAgcHJvY2Vzc29y
ID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQorICAgICAg
ICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25l
LCByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
cicpKQorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisg
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAg
ZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQor
ICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvcihl
eHRlbnNpb24pCisKKyAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
KDgpCisgICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1
ZSkKKyAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnOCcsIHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ2NsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCBy
ZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcicp
KQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4YzElYycgJSBs
ZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxs
bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCisKKyAgICBkZWYgdGVzdF9zZW5kX2VtcHR5X21lc3NhZ2Uoc2VsZik6
CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBlbXB0eSBtZXNzYWdlIGlzIGNvbXByZXNzZWQgY29y
cmVjdGx5LiIiIgorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAg
ICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKworICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJykKKworICAgICAgICAjIFBheWxvYWQgaW4g
YmluYXJ5OiAwYjAwMDAwMDAwCisgICAgICAgICMgRnJvbSBMU0IsCisgICAgICAgICMgLSAxIGJp
dCBvZiBCRklOQUwgKDApCisgICAgICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNz
aW9uKQorICAgICAgICAjIC0gNSBiaXRzIG9mIHBhZGRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChiJ1x4YzFceDAxXHgwMCcsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV93aXRoX251bGxfY2hhcmFjdGVyKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0IHRoYXQgYSBzaW1wbGUgcGF5bG9hZCAob25lIG51bGwpIGlzIGZyYW1l
ZCBjb3JyZWN0bHkuIiIiCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
KQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAg
ICAgICAgIGInJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorCisgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKKworICAgICAgICAjIFBh
eWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAwMAorICAgICAg
ICAjIEZyb20gTFNCLAorICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQorICAgICAgICAj
IC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCisgICAgICAg
ICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMgdGhlIGNvZGUg
Zm9yIHRoZSBsaXRlcmFsCisgICAgICAgICMgICBhbHBoYWJldCAweDAwKQorICAgICAgICAjIC0g
NyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0
aGUKKyAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKKyAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5B
TCAoMCkKKyAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Npb24pCisgICAg
ICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhj
MVx4MDNceDYyXHgwMFx4MDAnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdHdvX21lc3NhZ2Vz
KHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAor
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicn
LCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCisKKyAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTKQorCisgICAgICAgIGV4
cGVjdGVkID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVz
c2VkX2hlbGxvKQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCisKKyAgICAg
ICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKGInV29ybGQnKQorICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQor
ICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCisgICAgICAg
IGV4cGVjdGVkICs9IGInXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAgICBl
eHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVmIHRl
c3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4
dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywg
ZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnR29vZGJ5
ZScsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dv
cmxkJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzcy5jb21wcmVzcyhiJ0hlbGxvJykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ1x4
NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJl
c3NlZF9oZWxsbworICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgPSBjb21wcmVzcy5jb21wcmVz
cyhiJ0dvb2RieWUnKQorICAgICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4cGVjdGVkICs9IGInXHgwMCVjJyAlIGxl
bihjb21wcmVzc2VkX2dvb2RieWUpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZ29v
ZGJ5ZQorICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoYidXb3Js
ZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzot
NF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQp
CisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisg
ICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2Vs
Zik6CisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAg
ICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBiJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJycsIGVuZD1GYWxzZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGV4
cGVjdGVkID0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVj
dGVkICs9IGNvbXByZXNzZWRfaGVsbG8KKyAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXBy
ZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0g
Y29tcHJlc3NlZF9lbXB0eVs6LTRdCisgICAgICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxl
bihjb21wcmVzc2VkX2VtcHR5KQorICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5
CisgICAgICAgIHByaW50KCclcicgJSBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKKyAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGInJywgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICcnKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBleHBl
Y3RlZCA9IGInXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQorICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
cy5jb21wcmVzcyhiJycpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVz
c2VkX2VtcHR5WzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKGNvbXBy
ZXNzZWRfZW1wdHkpCisgICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhz
ZWxmKToKKyAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXon
CisgICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21t
b25fcGFydAorCisgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
CisgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcp
CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAg
ICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKKworICAgICAgICBl
eHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgPSAyCisgICAgICAgIGV4cGVjdGVkX3dlYnNv
Y2tldF9wYXlsb2FkX3NpemUgPSA5MQorCisgICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplICsgZXhwZWN0ZWRfd2Vic29j
a2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgIGxlbihhY3R1YWxfZnJhbWUpKQorICAgICAg
ICBhY3R1YWxfaGVhZGVyID0gYWN0dWFsX2ZyYW1lWzA6ZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRl
cl9zaXplXQorICAgICAgICBhY3R1YWxfcGF5bG9hZCA9IGFjdHVhbF9mcmFtZVtleHBlY3RlZF93
ZWJzb2NrZXRfaGVhZGVyX3NpemU6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGMx
JWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3R1YWxfaGVhZGVyKQorICAgICAgICBkZWNvbXByZXNzID0gemxpYi5kZWNvbXBy
ZXNzb2JqKC04KQorICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSA9IGRlY29tcHJlc3MuZGVj
b21wcmVzcyhhY3R1YWxfcGF5bG9hZCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGInXHgwMFx4MDBceGZmXHhmZicpCisgICAgICAgIGRlY29t
cHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3NhZ2UuZGVjb2RlKCdVVEYtOCcp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNzLnVudXNlZF9kYXRh
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZGVjb21wcmVzcy51bmNvbnN1bWVk
X3RhaWwpKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX25vX2NvbnRleHRfdGFrZW92ZXJf
cGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
CisgICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcicsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPVRydWUpCisKKyAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFY
X1dCSVRTKQorCisgICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxs
bycpCisgICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZM
VVNIKQorICAgICAgICBleHBlY3RlZCA9IGInXHg0MSVjJyAlIGxlbihmaXJzdF9oZWxsbykKKyAg
ICAgICAgZXhwZWN0ZWQgKz0gZmlyc3RfaGVsbG8KKyAgICAgICAgc2Vjb25kX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoYidIZWxsbycpCisgICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25k
X2hlbGxvWzotNF0KKyAgICAgICAgZXhwZWN0ZWQgKz0gYidceDgwJWMnICUgbGVuKHNlY29uZF9o
ZWxsbykKKyAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNlbGYpOgorICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAorICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAorICAgICAgICAgICAgYicnLCBwZXJtZXNzYWdlX2RlZmxhdGVf
cmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQorICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdLnNldF9iZmluYWwoVHJ1ZSkKKyAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQorICAgICAgICBtc2d1dGlsLnNlbmRf
bWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBlbmQ9VHJ1ZSkKKworICAgICAgICBleHBlY3RlZCA9
IGInJworCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKGInSGVsbG8nKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBj
b21wcmVzc2VkX2hlbGxvICsgc3RydWN0LnBhY2soJyFCJywgMCkKKyAgICAgICAgZXhwZWN0ZWQg
Kz0gYidceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCisgICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfaGVsbG8KKworICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCisgICAgICAgIGNvbXByZXNz
ZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcyhiJ1dvcmxkJykKKyAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQorICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIHN0cnVjdC5wYWNrKCchQicsIDApCisgICAg
ICAgIGV4cGVjdGVkICs9IGInXHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQorICAgICAg
ICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAgZGVm
IHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2RlZmxhdGUoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0g
emxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykK
KworICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoYidIZWxsbycp
CisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
KyAgICAgICAgZGF0YSA9IGInXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgw
KQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKKworICAgICAg
ICAjIENsb3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1
ZXN0X2Zyb21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRo
YXQgYSBjb21wcmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlz
CisgICAgICAgIGNvcnJlY3RseSByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFu
ZG9tLnNlZWQoYT0wKQorICAgICAgICBwYXlsb2FkID0gYicnLmpvaW4oCisgICAgICAgICAgICBb
c3RydWN0LnBhY2soJyFCJywgcmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4gcmFuZ2Uo
MTAwMCldKQorCisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVG
QVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3MuY29tcHJlc3MocGF5bG9hZCkKKyAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2Vk
X3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorCisgICAgICAgICMgRnJhZ21lbnQg
dGhlIGNvbXByZXNzZWQgcGF5bG9hZCBpbnRvIGxvdHMgb2YgZnJhbWVzLgorICAgICAgICBieXRl
c19jaHVua2VkID0gMAorICAgICAgICBkYXRhID0gYicnCisgICAgICAgIGZyYW1lX2NvdW50ID0g
MAorCisgICAgICAgIGNodW5rX3NpemVzID0gW10KKworICAgICAgICB3aGlsZSBieXRlc19jaHVu
a2VkIDwgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCk6CisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0
aGF0CisgICAgICAgICAgICAjIC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxl
c3MgdGhhbiAxMjUgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBs
ZW5ndGggaGVhZGVyIGZvcm1hdCBmb3IgYWxsIGZyYW1lcy4KKyAgICAgICAgICAgICMgLSBhdCBs
ZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCisgICAgICAgICAgICBjaHVua19zaXplID0gcmFu
ZG9tLnJhbmRpbnQoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICBtaW4oMTI1
LAorICAgICAgICAgICAgICAgICAgICBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSAvLyAxMCwKKyAg
ICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgICAgIGNodW5rX3NpemVzLmFwcGVuZChjaHVua19zaXplKQorICAgICAgICAg
ICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2Vk
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemVdCisg
ICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKKworICAgICAgICAgICAgZmly
c3Rfb2N0ZXQgPSAweDAwCisgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg0MgorICAgICAgICAgICAgaWYg
Ynl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKToKKyAgICAgICAgICAgICAg
ICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwgMHg4MAorCisgICAgICAgICAgICBkYXRhICs9
IGInJWMlYycgJSAoZmlyc3Rfb2N0ZXQsIGNodW5rX3NpemUgfCAweDgwKQorICAgICAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNodW5rKQorCisgICAgICAgICAgICBmcmFtZV9jb3VudCArPSAx
CisKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKKworICAgICAgICAjIENs
b3NlIGZyYW1lCisgICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVj
dC5wYWNrKCchSCcsIDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zy
b21fcmF3ZGF0YSgKKyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisgICAgZGVmIHRlc3RfcmVjZWl2
ZV90d29fbWVzc2FnZXMoc2VsZik6CisgICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUykKKworICAgICAgICBkYXRh
ID0gYicnCisKKyAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKGIn
SGVsbG9XZWJTb2NrZXQnKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCisgICAgICAgIHNwbGl0X3Bvc2l0aW9uID0gbGVuKGNvbXByZXNzZWRf
aGVsbG8pIC8vIDIKKyAgICAgICAgZGF0YSArPSBiJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24g
fCAweDgwKQorICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3Bs
aXRfcG9zaXRpb25dKQorCisgICAgICAgIGRhdGEgKz0gYidceDgwJWMnICUgKChsZW4oY29tcHJl
c3NlZF9oZWxsbykgLSBzcGxpdF9wb3NpdGlvbikgfCAweDgwKQorICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1tzcGxpdF9wb3NpdGlvbjpdKQorCisgICAgICAgIGNv
bXByZXNzID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1B
WF9XQklUUykKKworICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3Mo
YidXb3JsZCcpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dv
cmxkWzotNF0KKyAgICAgICAgZGF0YSArPSBiJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29y
bGQpIHwgMHg4MCkKKyAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQp
CisKKyAgICAgICAgIyBDbG9zZSBmcmFtZQorICAgICAgICBkYXRhICs9IGInXHg4OFx4OGEnICsg
X21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArIGInR29vZCBieWUnKQorCisgICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCisgICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCisgICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdl
X2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9taXhlZF9idHlw
ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgbWVzc2FnZSBjb21wcmVzc2VkIHVzaW5n
IGxvdHMgb2YgREVGTEFURSBibG9ja3Mgd2l0aAorICAgICAgICB2YXJpb3VzIGZsdXNoIG1vZGUg
aXMgY29ycmVjdGx5IHJlY2VpdmVkLgorICAgICAgICAiIiIKKworICAgICAgICByYW5kb20uc2Vl
ZChhPTApCisgICAgICAgIHBheWxvYWQgPSBiJycuam9pbigKKyAgICAgICAgICAgIFtzdHJ1Y3Qu
cGFjaygnIUInLCByYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiByYW5nZSgxMDAwKV0p
CisKKyAgICAgICAgY29tcHJlc3MgPSBOb25lCisKKyAgICAgICAgIyBGcmFnbWVudCB0aGUgY29t
cHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCisgICAgICAgIGJ5dGVzX2NodW5r
ZWQgPSAwCisgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGInJworCisgICAgICAgIGNodW5r
X3NpemVzID0gW10KKyAgICAgICAgbWV0aG9kcyA9IFtdCisgICAgICAgIHN5bmNfdXNlZCA9IEZh
bHNlCisgICAgICAgIGZpbmlzaF91c2VkID0gRmFsc2UKKworICAgICAgICB3aGlsZSBieXRlc19j
aHVua2VkIDwgbGVuKHBheWxvYWQpOgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYXQgbGVhc3Qg
MTAgY2h1bmtzIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5y
YW5kaW50KDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKDEw
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHBheWxv
YWQpIC0gYnl0ZXNfY2h1bmtlZCkpCisgICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1
bmtfc2l6ZSkKKyAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5dGVz
X2NodW5rZWQgKyBjaHVua19zaXplXQorCisgICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNo
dW5rX3NpemUKKworICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVG
TEFURUQsIC16bGliLk1BWF9XQklUUykKKworICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9
PSBsZW4ocGF5bG9hZCk6CisgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9h
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgPSBjb21wcmVzc2VkX3BheWxvYWRbOi00XQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBtZXRob2QgPSByYW5kb20ucmFuZGludCgwLCAxKQorICAg
ICAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKG1ldGhvZCkKKyAgICAgICAgICAgICAgICBpZiBt
ZXRob2QgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNv
bXByZXNzLmNvbXByZXNzKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgICAgICAg
ICAgICAgIHN5bmNfdXNlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuY29tcHJlc3MoY2h1bmsp
CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfRklOSVNIKQorICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyA9IE5vbmUKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoX3VzZWQgPSBUcnVlCisKKyAgICAgICAgcHJpbnQoIkNo
dW5rIHNpemVzOiAlciIgJSBjaHVua19zaXplcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxl
bihjaHVua19zaXplcykgPiAxMCkKKyAgICAgICAgcHJpbnQoIk1ldGhvZHM6ICVyIiAlIG1ldGhv
ZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeW5jX3VzZWQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShmaW5pc2hfdXNlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoMTI1IDwgbGVu
KGNvbXByZXNzZWRfcGF5bG9hZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY29tcHJl
c3NlZF9wYXlsb2FkKSA8IDY1NTM2KQorICAgICAgICBkYXRhID0gYidceGMyXHhmZScgKyBzdHJ1
Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKKyAgICAgICAgZGF0YSArPSBf
bWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKKworICAgICAgICAjIENsb3NlIGZyYW1lCisg
ICAgICAgIGRhdGEgKz0gYidceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcs
IDEwMDApICsgYidHb29kIGJ5ZScpCisKKyAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcigKKyAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
KyAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVz
c2FnZVJlY2VpdmVyLiIiIgorICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgorICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgcmVjZWl2ZXIgPSBtc2d1
dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQoKSkKKworICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGInXHg4MVx4ODYnICsgX21hc2tfaHliaShiJ0hlbGxvIScpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCisKKyAg
ICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IHNp
eC5tb3Zlcy5xdWV1ZS5RdWV1ZSgpCisKKyAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1l
c3NhZ2UpOgorICAgICAgICAgICAgb25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQorCisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICByZWNlaXZl
ciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQor
CisgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYidceDgxXHg4NicgKyBfbWFz
a19oeWJpKGInSGVsbG8hJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9u
bWVzc2FnZV9xdWV1ZS5nZXQoKSkKKworCitjbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdl
U2VuZGVyLiIiIgorICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3Nh
Z2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5kZXIuc2VuZCgnV29ybGQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93YWl0KHNlbGYpOgorICAgICAg
ICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0dGVuIGJ5IE1lc3NhZ2VTZW5k
ZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpIGNhbm5vdCBi
ZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VTZW5kZXIgcnVucyBpbiBhIHNl
cGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IHNpeC5tb3Zlcy5xdWV1ZS5RdWV1
ZSgpCisKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAgIHNlbmRfcXVldWUu
cHV0KGJ5dGVzKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3Qo
KQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQorCisgICAgICAgIHNl
bmRlciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQorCisgICAgICAgIHNlbmRlci5z
ZW5kX25vd2FpdCgnSGVsbG8nKQorICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ODFceDA1SGVsbG8nLCBzZW5kX3F1ZXVlLmdl
dCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHg4MVx4MDVXb3JsZCcsIHNlbmRfcXVl
dWUuZ2V0KCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVh
bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNTM4OTlkMjA1MzNlYjRjZjBhOTgxNmM4YjNiMmJjOGM1MDU0OGJm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X3N0cmVhbS5w
eQpAQCAtMCwwICsxLDcwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0CitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHNldF9zeXNf
cGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUu
CisKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KK2Zyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBzdHJlYW0KKworCitjbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICAiIiJBIHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0
X2NyZWF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgICMgbW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFy
ZSBhbGwgdHJ1ZQorICAgICAgICBoZWFkZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24u
T1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YidceGYxXHg4MScsIGhlYWRlcikKKworICAgICAgICAjIE1heGltdW0gcGF5bG9hZCBzaXplCisg
ICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwg
KDEgPDwgNjMpIC0gMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDFceDdmXHg3Zlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCisKKyAgICAgICAgIyBJbnZhbGlkIG9w
Y29kZSAweDEwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5j
cmVhdGVfaGVhZGVyLCAweDEwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwKQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFy
YW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVh
dGVfaGVhZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDB4ZiwgMCwgMCwgMCwgMCkKKworICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3Ro
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHN0cmVhbS5jcmVhdGVfaGVh
ZGVyLCBjb21tb24uT1BDT0RFX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwg
NjMsIDAsIDAsIDAsIDAsIDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1
bml0dGVzdC5tYWluKCkKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQ3OTQxMDUxNDU1ZWJlZTU4ODIzYjRiMGJlOTM3NjI5
MTJiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfdXRp
bC5weQpAQCAtMCwwICsxLDE5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKKworZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0CitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5w
YXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgorCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCitmcm9tIHNpeCBp
bXBvcnQgUFkzCitmcm9tIHNpeCBpbXBvcnQgaW50MmJ5dGUKKworX1RFU1RfREFUQV9ESVIgPSBv
cy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScpCisKKwor
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9y
IHV0aWwgbW9kdWxlLiIiIgorICAgIGRlZiB0ZXN0X3ByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oc2VsZik6CisgICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29ybGQnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQorICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2dldF9zY3JpcHRfaW50
ZXJwKHNlbGYpOgorICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxcY3lnd2luXFxiaW4nCisgICAg
ICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCAncGVybCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSRUFETUUnKSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgdXRpbC5nZXRf
c2NyaXB0X2ludGVycChvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJy91c3IvYmluL3BlcmwgLXdUJywKKyAgICAg
ICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAob3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElS
LCAnaGVsbG8ucGwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
eWd3aW5fcGVybCArICcgLXdUJywKKyAgICAgICAgICAgIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAo
b3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3lnd2luX3BhdGgpKQorCisgICAgZGVmIHRlc3RfaGV4aWZ5
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAw
OSAwZCAwYSAwMCBmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoYidh
ekFaMDkgXHRcclxuXHgwMFx4ZmYnKSkKKworCitjbGFzcyBSZXBlYXRlZFhvck1hc2tlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3QgZm9yIFJlcGVhdGVkWG9yTWFz
a2VyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X21hc2soc2VsZik6CisgICAgICAgICMgU2FtcGxl
IGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYtOAorICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKGInXHhmZlx4ZmZceGZmXHhmZicpCisgICAgICAgIHJlc3VsdCA9
IG1hc2tlci5tYXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
J1x4MTlceDY4XHg1YScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVk
WG9yTWFza2VyKGInXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKGInXHhlNlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4ZTZceDk3
XHhhNScsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2Vy
KGInXHhlNlx4OTdceGE1XHgyMCcpCisgICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKGInXHhl
Nlx4OTdceGE1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBceDAwXHgwMCcsIHJl
c3VsdCkKKworICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6CisgICAgICAgIG1hc2tlciA9
IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoYidceDAwXHg3Zlx4ZmZceDIwJykKKyAgICAgICAgIyBt
YXNrWzBdLCBtYXNrWzFdLCAuLi4gd2lsbCBiZSB1c2VkLgorICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhiJ1x4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChiJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQorICAgICAgICAjIG1hc2tbMl0sIG1h
c2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCisgICAgICAgIHJlc3Vs
dCA9IG1hc2tlci5tYXNrKGInXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGInXHg3Zlx4ZmZceDIwXHgwMFx4N2YnLCByZXN1bHQpCisKKyAgICBkZWYgdGVz
dF9tYXNrX2xhcmdlX2RhdGEoc2VsZik6CisgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRY
b3JNYXNrZXIoYidtQVNrJykKKyAgICAgICAgb3JpZ2luYWwgPSBiJycuam9pbihbdXRpbC5wYWNr
X2J5dGUoaSAlIDI1NikgZm9yIGkgaW4gcmFuZ2UoMTAwMCldKQorICAgICAgICByZXN1bHQgPSBt
YXNrZXIubWFzayhvcmlnaW5hbCkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJycuam9pbihbCisgICAg
ICAgICAgICB1dGlsLnBhY2tfYnl0ZSgoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kgJSA0XSkpIGZv
ciBpIGluIHJhbmdlKDEwMDApCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlc3VsdCkKKworICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFz
a2VyKGInTWFTaycpCisgICAgICAgIGZpcnN0X3BhcnQgPSBiJ1RoZSBXZWJTb2NrZXQgUHJvdG9j
b2wgZW5hYmxlcyB0d28td2F5IGNvbW11bmljYXRpb24uJworICAgICAgICByZXN1bHQgPSBtYXNr
ZXIubWFzayhmaXJzdF9wYXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgYidceDE5XHQ2S1x4MWFceDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJceDE1PFx4MDgiXHJz
XHgwZSMnCisgICAgICAgICAgICBiJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgwZX5ceDFjLFx4MThz
XHgwOCJceDBjPlx4MWUjXHgwODBcbjknCisgICAgICAgICAgICBiJ1x4MDg8XHgwNWMnLCByZXN1
bHQpCisgICAgICAgIHNlY29uZF9wYXJ0ID0gYidJdCBoYXMgdHdvIHBhcnRzOiBhIGhhbmRzaGFr
ZSBhbmQgdGhlIGRhdGEgdHJhbnNmZXIuJworICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhz
ZWNvbmRfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGIiKCdL
JVx4MDAgSzlceDE2PEs9XHgwMCFceDFmPltzXG5tXHQyXHgwNSlceDEyO1xuJlx4MDRzXG4jIgor
ICAgICAgICAgICAgYiJceDA1c1x4MWYlXHgwNHNceDBmLFx4MTUySzlceDEzMlx4MDU+XHgwNzZc
eDE5YyIsIHJlc3VsdCkKKworCitkZWYgZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgbWluX251
bV9jaHVua3MpOgorICAgIGNodW5rcyA9IFtdCisgICAgYnl0ZXNfY2h1bmtlZCA9IDAKKworICAg
IHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291cmNlKToKKyAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAorICAgICAgICAgICAgMSwgbWluKGxlbihzb3VyY2UpIC8gbWluX251
bV9jaHVua3MsCisgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2Vk
KSkKKyAgICAgICAgY2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsg
Y2h1bmtfc2l6ZV0KKyAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKKyAgICAgICAgYnl0ZXNf
Y2h1bmtlZCArPSBjaHVua19zaXplCisKKyAgICByZXR1cm4gY2h1bmtzCisKKworY2xhc3MgSW5m
bGF0ZXJEZWZsYXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIF9JbmZsYXRlciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgorICAgIGRlZiB0ZXN0X2luZmxh
dGVfZGVmbGF0ZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBpbnB1dCA9IGInaGVsbG8nICsgYict
JyAqIDMwMDAwICsgYidoZWxsbycKKyAgICAgICAgaW5mbGF0ZXIxNSA9IHV0aWwuX0luZmxhdGVy
KDE1KQorICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVmbGF0ZXIoMTUpCisgICAgICAgIGlu
ZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCisgICAgICAgIGRlZmxhdGVyOCA9IHV0aWwuX0Rl
ZmxhdGVyKDgpCisKKyAgICAgICAgY29tcHJlc3NlZDE1ID0gZGVmbGF0ZXIxNS5jb21wcmVzc19h
bmRfZmluaXNoKGlucHV0KQorICAgICAgICBjb21wcmVzc2VkOCA9IGRlZmxhdGVyOC5jb21wcmVz
c19hbmRfZmluaXNoKGlucHV0KQorCisgICAgICAgIGluZmxhdGVyMTUuYXBwZW5kKGNvbXByZXNz
ZWQxNSkKKyAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21wcmVzc2VkOCkKKworICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29tcHJlc3NlZDgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVjb21wcmVzcygtMSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5kZWNvbXByZXNzKC0xKSkKKworICAg
IGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgorICAgICAgICByYW5kb20uc2VlZChhPTAp
CisgICAgICAgIHNvdXJjZSA9IGInJy5qb2luKAorICAgICAgICAgICAgW2ludDJieXRlKHJhbmRv
bS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHJhbmdlKDEwMCAqIDEwMjQpXSkKKworICAgICAg
ICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCisgICAgICAg
IHByaW50KCJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBjaHVua2Vk
X2lucHV0XSkKKworICAgICAgICBkZWZsYXRlciA9IHV0aWwuX0RlZmxhdGVyKDE1KQorICAgICAg
ICBjb21wcmVzc2VkID0gW10KKyAgICAgICAgZm9yIGNodW5rIGluIGNodW5rZWRfaW5wdXQ6Cisg
ICAgICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVzcyhjaHVuaykpCisg
ICAgICAgIGNvbXByZXNzZWQuYXBwZW5kKGRlZmxhdGVyLmNvbXByZXNzX2FuZF9maW5pc2goYicn
KSkKKworICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNv
dXJjZSwgMTApCisgICAgICAgIHByaW50KCJFeHBlY3RhdGlvbiBjaHVuayBzaXplczogJXIiICUK
KyAgICAgICAgICAgICAgW2xlbihjKSBmb3IgYyBpbiBjaHVua2VkX2V4cGVjdGF0aW9uXSkKKwor
ICAgICAgICBpbmZsYXRlciA9IHV0aWwuX0luZmxhdGVyKDE1KQorICAgICAgICBpbmZsYXRlci5h
cHBlbmQoYicnLmpvaW4oY29tcHJlc3NlZCkpCisgICAgICAgIGZvciBjaHVuayBpbiBjaHVua2Vk
X2V4cGVjdGF0aW9uOgorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gaW5mbGF0ZXIuZGVjb21w
cmVzcyhsZW4oY2h1bmspKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHVuaywgZGVj
b21wcmVzc2VkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBpbmZsYXRlci5kZWNv
bXByZXNzKC0xKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0
Lm1haW4oKQorCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2
M2VmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
UkVBRE1FCkBAIC0wLDAgKzEgQEAKK1Rlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3Vz
ZXJfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzY2I1NDFiYjdlYzQwNDQ3NDU3OThhYjk3YWU3Y2NiYTU3
ZTA0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCisKKworZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJhaXNlIGhhbmRz
aGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCisKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByYWlzZSBoYW5kc2hha2UuQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzk4ZTk2Nzc4ZDhmNzVjOGQ3NDI0YzI3YjQwYzFm
YWQ5OTE4ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vi
c29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmY2NDQyZTY1Yjk5ZGQ3ZDQ1NWNiMDlhMGFmYzlkNDk1OGRmMDQxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
b3JpZ2luX2NoZWNrX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgaWYgcmVx
dWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6CisgICAgICAgIHJldHVybgor
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qu
d3Nfb3JpZ2luKQorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Cisg
ICAgbWVzc2FnZSA9ICdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAl
ICgKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5z
ZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDM5MDk5NGQ3MTJkZmU4ZjFlNGRmZGQ5NGZmNTZhYmU2
NjczZDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpAQCAtMCwwICsxLDQy
IEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEoKS4KKyIiIgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlvbiBmb3IgJXMsICVz
JyAlCisgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0Lndz
X3Byb3RvY29sKSkKKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0
X3RoZV9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmZGRiNzQ0OTVlZWYxZDFmMzUxZTMzNGFjNDg1MDQ3
M2VkMTY0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUuCisi
IiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAg
cGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgbWVz
c2FnZSA9ICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUg
KAorICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKQorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisj
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhhZmNmYTk3YTk1NGEyYmU2OTZjMTQ4ZGQxZjU1MzYyOGYxMjFlYTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25f
Y2FsbGFibGVfd3NoLnB5CkBAIC0wLDAgKzEsMzUgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiTm9u
LWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisKK3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
ID0gVHJ1ZQord2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhID0gMQorCisjIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3BsYWluX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdkYjFlNWFjMzI2ZGY1MWM2OGUzZWQy
NjkwYmUyYTAzYzg3M2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICBtZXNzYWdlID0gJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMn
ICUgKHJlcXVlc3Qud3NfcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sKQorICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZShtZXNzYWdlLmVuY29kZSgnVVRGLTgnKSkKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2NWRiZTMyYWFj
OTEyMjkxYTM2M2E4YzgzZWJlOGUwZmVkNjBlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCkBAIC0w
LDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0
My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gu
cHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9z
aWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
d3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ViYjBkYTFhYjZiMGJkZDA3
N2I4MzMyODEzNzZjMWE4MTE1NTBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2Nr
ZXQzL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
CkBAIC0wLDAgKzEsNDMgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiV3Jvbmcgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgorIiIiCisKKworZGVmIG5vX3dlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIG1lc3NhZ2UgPSAnc3ViL3dyb25nX2hhbmRz
aGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZDI3ZDZiY2ZlZWFmMDJhOTQyYThiMzBiN2QzMzQwZmIyMGQyMzMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJh
bnNmZXJfc2lnX3dzaC5weQpAQCAtMCwwICsxLDQzIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIldy
b25nIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpIHNpZ25hdHVyZS4KKyIiIgorCisKK2RlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNzCisKKworZGVm
IG5vX3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBtZXNzYWdlID0gJ3N1
Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlICgKKyAg
ICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobWVzc2FnZS5lbmNvZGUoJ1VURi04JykpCisKKworIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhjMGY2NTcyYjEyZmMxYjE0
NjY2M2ZmZWFkNThjNDgyNWMyMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tl
dDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZwpAQCAtMCwwICsxLDE5IEBA
CitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgorCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0CisKK1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0CisKK0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitOb25lCitQcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGlzdCBv
ZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0
X2J5X3VzZXJfd3NoLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9ibGFua193c2gucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L29yaWdpbl9jaGVja193c2gucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3Qv
dGVzdGRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RkYXRh
L3czYy1pbXBvcnQubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNzZiOGUxOTIwZGMzYmVjYTZlZTUwZGQzMjJi
ZDYwYTU4Y2M0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rl
c3RkYXRhL3czYy1pbXBvcnQubG9nCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKKworVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKK05vbmUKK1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgorTm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3
ZWJzb2NrZXQzL3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29j
a2V0My90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1w
b3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5ZWVhMTkxNGI5MWQ2ZjU1ZTU0NjdkYjkwODE1MWQ2ODdl
OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC93M2MtaW1wb3J0
LmxvZwpAQCAtMCwwICsxLDMyIEBACitUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KK0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgorSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgorCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0CisKK1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0CisKK0RvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KKwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCitQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CitO
b25lCitQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTGlzdCBvZiBmaWxlczoKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L19f
aW5pdF9fLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3J1bl9hbGwucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3NldF9zeXNfcGF0aC5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQz
L3Rlc3QvdGVzdF9lbmR0b2VuZC5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9leHRl
bnNpb25zLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQorL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaS5weQorL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl3ZWJz
b2NrZXQzL3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMv
dGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdGVzdC90ZXN0
X21vY2sucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0L3Rlc3RfbXNndXRpbC5weQorL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl3ZWJzb2NrZXQzL3Rlc3QvdGVzdF9zdHJlYW0ucHkKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5d2Vic29ja2V0My90ZXN0
L3Rlc3RfdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5d2Vic29ja2V0My93M2MtaW1wb3J0LmxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmZkYmMx
ZjYxODk5NDZkYWViYzhlZjBjNWRjNTI3NThmY2E5NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXdlYnNvY2tldDMvdzNjLWltcG9ydC5sb2cKQEAgLTAsMCArMSwyMSBAQAorVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
CitEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KK0luc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKKwlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAorCitUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAorCitEbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6CitOb25lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpc3Qgb2YgZmlsZXM6Cisv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXdlYnNvY2tldDMvQ09OVFJJQlVUSU5HCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvTElDRU5T
RQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl3ZWJzb2NrZXQzL01BTklGRVNULmluCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvUkVB
RE1FLm1kCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXdlYnNvY2tldDMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L0NIQU5HRVMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3NpeC9DSEFOR0VTCmluZGV4IGIzOTk4ODI1NjFlYzI5NWQ4ZGVmY2Fk
YmUxYjliOTk1YjFlYjllMTEuLmZmYTcwMjYwMWI2NTA5YjI1ZmJkNjc4N2QxZTc2ODJlNWFjMzkz
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0NIQU5HRVMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwpA
QCAtMyw2ICszLDI4IEBAIENoYW5nZWxvZyBmb3Igc2l4CiAKIFRoaXMgZmlsZSBsaXN0cyB0aGUg
Y2hhbmdlcyBpbiBlYWNoIHNpeCB2ZXJzaW9uLgogCisxLjEzLjAKKy0tLS0tLQorCistIElzc3Vl
ICMyOTgsIHB1bGwgcmVxdWVzdCAjMjk5OiBBZGQgYHNpeC5tb3Zlcy5kYm1fbmRibWAuCisKKy0g
SXNzdWUgIzE1NTogQWRkIGBzaXgubW92ZXMuY29sbGVjdGlvbnNfYWJjYCwgd2hpY2ggYWxpYXNl
cyB0aGUgYGNvbGxlY3Rpb25zYAorICBtb2R1bGUgb24gUHl0aG9uIDItMy4yIGFuZCB0aGUgYGNv
bGxlY3Rpb25zLmFiY2Agb24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlci4KKworLSBQdWxsIHJlcXVl
c3QgIzMwNDogUmUtYWRkIGRpc3R1dGlscyBmYWxsYmFjayBpbiBgc2V0dXAucHlgLgorCistIFB1
bGwgcmVxdWVzdCAjMzA1OiBPbiBQeXRob24gMy43LCBgd2l0aF9tZXRhY2xhc3NgIHN1cHBvcnRz
IGNsYXNzZXMgdXNpbmcgUEVQCisgIDU2MCBmZWF0dXJlcy4KKworMS4xMi4wCistLS0tLS0KKwor
LSBJc3N1ZSAjMjU5LCBwdWxsIHJlcXVlc3QgIzI2MDogYHNpeC5hZGRfbWV0YWNsYXNzYCBub3cg
cHJlc2VydmVzCisgIGBfX3F1YWxuYW1lX19gIGZyb20gdGhlIG9yaWdpbmFsIGNsYXNzLgorCist
IFB1bGwgcmVxdWVzdCAjMjA0OiBBZGQgYHNpeC5lbnN1cmVfYmluYXJ5YCwgYHNpeC5lbnN1cmVf
dGV4dGAsIGFuZAorICBgc2l4LmVuc3VyZV9zdHJgLgorCiAxLjExLjAKIC0tLS0tLQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvTElDRU5TRQppbmRleCBmMzA2OGJm
ZDllMGNkODZkZTZiMmNlNWY1ZmE3ZmFmMzhjNjhlNWNlLi40YjA1YTU0NTI2MWMwZjliMzFhYmUz
ZWRlYzcxMDU4NzU4N2E2NTlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9MSUNFTlNFCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1Db3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBC
ZW5qYW1pbiBQZXRlcnNvbgorQ29weXJpZ2h0IChjKSAyMDEwLTIwMTkgQmVuamFtaW4gUGV0ZXJz
b24KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUEtHLUlORk8KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNkNWZmNGJiOGU0ZmEwYTFjYWY2ZDNkZjUyOGFiYzIwYjNkZjVh
ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvUEtHLUlORk8KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1NZXRhZGF0YS1WZXJz
aW9uOiAxLjEKLU5hbWU6IHNpeAotVmVyc2lvbjogMS4xMS4wCi1TdW1tYXJ5OiBQeXRob24gMiBh
bmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcwotSG9tZS1wYWdlOiBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvc2l4LwotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbgotQXV0aG9yLWVtYWls
OiBiZW5qYW1pbkBweXRob24ub3JnCi1MaWNlbnNlOiBNSVQKLURlc2NyaXB0aW9uOiAuLiBpbWFn
ZTo6IGh0dHA6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3Yvc2l4LnN2ZwotICAgICAgICAgICA6dGFy
Z2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeAotICAgICAgICAKLSAgICAgICAg
Li4gaW1hZ2U6OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNo
PW1hc3RlcgotICAgICAgICAgICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2Jlbmph
bWlucC9zaXgKLSAgICAgICAgCi0gICAgICAgIC4uIGltYWdlOjogaHR0cDovL2ltZy5zaGllbGRz
LmlvL2JhZGdlL2xpY2Vuc2UtTUlULWdyZWVuLnN2ZwotICAgICAgICAgICA6dGFyZ2V0OiBodHRw
czovL2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeC9ibG9iL21hc3Rlci9MSUNFTlNFCi0gICAgICAg
IAotICAgICAgICBTaXggaXMgYSBQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IGxpYnJhcnku
ICBJdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucwotICAgICAgICBmb3Igc21vb3RoaW5nIG92
ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBn
b2FsIG9mCi0gICAgICAgIHdyaXRpbmcgUHl0aG9uIGNvZGUgdGhhdCBpcyBjb21wYXRpYmxlIG9u
IGJvdGggUHl0aG9uIHZlcnNpb25zLiAgU2VlIHRoZQotICAgICAgICBkb2N1bWVudGF0aW9uIGZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMgcHJvdmlkZWQuCi0gICAgICAgIAotICAgICAg
ICBTaXggc3VwcG9ydHMgZXZlcnkgUHl0aG9uIHZlcnNpb24gc2luY2UgMi42LiAgSXQgaXMgY29u
dGFpbmVkIGluIG9ubHkgb25lIFB5dGhvbgotICAgICAgICBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
LSAgICAgICAgbm90aWNlIG11c3QgYmUgcmV0YWluZWQuKQotICAgICAgICAKLSAgICAgICAgT25s
aW5lIGRvY3VtZW50YXRpb24gaXMgYXQgaHR0cDovL3NpeC5ydGZkLm9yZy4KLSAgICAgICAgCi0g
ICAgICAgIEJ1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1p
bnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KLSAgICAgICAgYmUgZm91bmQgdGhlcmUuCi0gICAg
ICAgIAotICAgICAgICBGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVy
YWwsIGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCi0gICAgICAgIGxpc3Q6IGh0dHBz
Oi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcKLSAgICAg
ICAgCi1QbGF0Zm9ybTogVU5LTk9XTgotQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
OjogUHl0aG9uIDo6IDIKLUNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhv
biA6OiAzCi1DbGFzc2lmaWVyOiBJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCi1DbGFz
c2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQotQ2xhc3NpZmll
cjogVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCi1DbGFzc2lmaWVy
OiBUb3BpYyA6OiBVdGlsaXRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3NpeC9SRUFETUUucnN0CmluZGV4IGMxN2Q4ZDczMmFmODU5ZGUyYzQ2YWJhZDAwNjQ0MzRh
ODRkYzE2MGEuLmE5OWU2ZjU1ODVhOTE4YjhhNjhjZWFiYWNlMmZiNmUzNGU5MjE4M2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L1JFQURNRS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdApAQCAt
MSwxMSArMSwxOCBAQAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3Np
eC5zdmcKLSAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4CisuLiBp
bWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L3NpeC5zdmcKKyAgIDp0YXJnZXQ6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgvCisgICA6YWx0OiBzaXggb24gUHlQSQogCiAu
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4LnN2Zz9icmFuY2g9
bWFzdGVyCi0gICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgK
KyAgIDp0YXJnZXQ6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9iZW5qYW1pbnAvc2l4CisgICA6YWx0
OiBzaXggb24gVHJhdmlzQ0kKIAotLi4gaW1hZ2U6OiBodHRwOi8vaW1nLnNoaWVsZHMuaW8vYmFk
Z2UvbGljZW5zZS1NSVQtZ3JlZW4uc3ZnCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mu
b3JnL3Byb2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBz
Oi8vc2l4LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBS
ZWFkIHRoZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9s
aWNlbnNlLU1JVC1ncmVlbi5zdmcKICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5q
YW1pbnAvc2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdl
CiAKIFNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHBy
b3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zCiBmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVu
Y2VzIGJldHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCkBAIC0xNiw3
ICsyMyw3IEBAIFNpeCBzdXBwb3J0cyBldmVyeSBQeXRob24gdmVyc2lvbiBzaW5jZSAyLjYuICBJ
dCBpcyBjb250YWluZWQgaW4gb25seSBvbmUgUHl0aG9uCiBmaWxlLCBzbyBpdCBjYW4gYmUgZWFz
aWx5IGNvcGllZCBpbnRvIHlvdXIgcHJvamVjdC4gKFRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UK
IG5vdGljZSBtdXN0IGJlIHJldGFpbmVkLikKIAotT25saW5lIGRvY3VtZW50YXRpb24gaXMgYXQg
aHR0cDovL3NpeC5ydGZkLm9yZy4KK09ubGluZSBkb2N1bWVudGF0aW9uIGlzIGF0IGh0dHBzOi8v
c2l4LnJlYWR0aGVkb2NzLmlvLy4KIAogQnVncyBjYW4gYmUgcmVwb3J0ZWQgdG8gaHR0cHM6Ly9n
aXRodWIuY29tL2JlbmphbWlucC9zaXguICBUaGUgY29kZSBjYW4gYWxzbwogYmUgZm91bmQgdGhl
cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9kb2N1bWVudGF0aW9uL2NvbmYucHkKaW5kZXggYWQ5MjVjMWMxZDFlODM2MTQ5MzcwNzJiYmU5
NGU2YzMwNTZkMTg4ZC4uYjNkMTMyOGFkYzJhNDJhZmRlNzE5MTUxOTMwNjA0MzM1MDRjZTIwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4
L2RvY3VtZW50YXRpb24vY29uZi5weQpAQCAtMzMsNyArMzMsNyBAQCBtYXN0ZXJfZG9jID0gImlu
ZGV4IgogCiAjIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCiBwcm9qZWN0
ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAtMjAxNywgQmVuamFtaW4gUGV0ZXJzb24iCitj
b3B5cmlnaHQgPSB1IjIwMTAtMjAxOSwgQmVuamFtaW4gUGV0ZXJzb24iCiAKIHN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikpKQogZnJvbSBzaXgg
aW1wb3J0IF9fdmVyc2lvbl9fIGFzIHNpeF92ZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9k
b2N1bWVudGF0aW9uL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0
CmluZGV4IGRkMGRjNmUzYmRlOGM0NThkYzRmMTEzMzFlZjdiZTEyZWQ2N2FiYTguLmI3ZWMyNzU0
ZWNmODNkNWEyOTFjMTM5ODg3MzhmZWY2MjA0NWM5ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2Rv
Y3VtZW50YXRpb24vaW5kZXgucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgu
cnN0CkBAIC0xMyw3ICsxMyw3IEBAIFB5dGhvbiAzLiAgSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9y
dCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMKIHdpdGhvdXQgbW9k
aWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBmaWxlLCBzbyBpdCBp
cyBwYWlubGVzcwogdG8gY29weSBpbnRvIGEgcHJvamVjdC4KIAotU2l4IGNhbiBiZSBkb3dubG9h
ZGVkIG9uIGBQeVBpIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8+YF8uICBJdHMg
YnVnCitTaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UEkgPGh0dHBzOi8vcHlwaS5vcmcvcHJv
amVjdC9zaXgvPmBfLiAgSXRzIGJ1ZwogdHJhY2tlciBhbmQgY29kZSBob3N0aW5nIGlzIG9uIGBH
aXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4PmBfLgogCiBUaGUgbmFtZSwg
InNpeCIsIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCAyKjMgZXF1YWxzIDYuICBXaHkgbm90IGFk
ZGl0aW9uPwpAQCAtNTAsOCArNTAsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAKIC4uIGRhdGE6
OiBjbGFzc190eXBlcwogCi0gICBQb3NzaWJsZSBjbGFzcyB0eXBlcy4gIEluIFB5dGhvbiAyLCB0
aGlzIGVuY29tcGFzc2VzIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlCi0gICBjbGFzc2VzLiAgSW4g
UHl0aG9uIDMsIHRoaXMgaXMganVzdCBuZXctc3R5bGVzLgorICAgUG9zc2libGUgY2xhc3MgdHlw
ZXMuICBJbiBQeXRob24gMiwgdGhpcyBlbmNvbXBhc3NlcyBvbGQtc3R5bGUKKyAgIDpkYXRhOmBw
eTI6dHlwZXMuQ2xhc3NUeXBlYCBhbmQgbmV3LXN0eWxlIGBgdHlwZWBgIGNsYXNzZXMuICBJbiBQ
eXRob24gMywKKyAgIHRoaXMgaXMganVzdCBgYHR5cGVgYC4KIAogCiAuLiBkYXRhOjogaW50ZWdl
cl90eXBlcwpAQCAtNzUsNyArNzYsOSBAQCBTaXggcHJvdmlkZXMgY29uc3RhbnRzIHRoYXQgbWF5
IGRpZmZlciBiZXR3ZWVuIFB5dGhvbiB2ZXJzaW9ucy4gIE9uZXMgZW5kaW5nCiAuLiBkYXRhOjog
YmluYXJ5X3R5cGUKIAogICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFyeSBkYXRhLiAgVGhp
cyBpcyA6ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOmJ5dGVz
YCBpbiBQeXRob24gMy4KKyAgIDpmdW5jOmBweTM6Ynl0ZXNgIGluIFB5dGhvbiAzLiAgUHl0aG9u
IDIuNiBhbmQgMi43IGluY2x1ZGUgYGBieXRlc2BgIGFzIGEKKyAgIGJ1aWx0aW4gYWxpYXMgb2Yg
YGBzdHJgYCwgc28gc2l44oCZcyB2ZXJzaW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBQeXRob24g
Mi41CisgICBjb21wYXRpYmlsaXR5LgogCiAKIC4uIGRhdGE6OiBNQVhTSVpFCkBAIC0zNzEsNyAr
Mzc0LDcgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5dGhvbiB2ZXJzaW9ucy4KIC4uIGZ1bmN0aW9u
OjogYihkYXRhKQogCiAgICBBICJmYWtlIiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBh
bHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5j
OmBiYCByZXR1cm5zIGEgOC1iaXQgc3RyaW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNv
ZGVkCisgICBQeXRob24gMiwgOmZ1bmM6YGJgIHJldHVybnMgYW4gOC1iaXQgc3RyaW5nLiAgSW4g
UHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBsYXRpbi0xIGVuY29kaW5n
IHRvIGJ5dGVzLgogCiAKQEAgLTQzMyw2ICs0MzYsMjQgQEAgc3RyaW5nIGRhdGEgaW4gYWxsIFB5
dGhvbiB2ZXJzaW9ucy4KICAgIGEgYnl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgog
CiAKKy4uIGZ1bmN0aW9uOjogZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJv
cnM9J3N0cmljdCcpCisKKyAgIENvZXJjZSAqcyogdG8gOmRhdGE6YGJpbmFyeV90eXBlYC4gKmVu
Y29kaW5nKiwgKmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNv
ZGVgCisKKworLi4gZnVuY3Rpb246OiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVy
cm9ycz0nc3RyaWN0JykKKworICAgQ29lcmNlICpzKiB0byBgYHN0cmBgLiAqZW5jb2RpbmcqLCAq
ZXJyb3JzKiBhcmUgdGhlIHNhbWUgYXMKKyAgIDptZXRoOmBweTM6c3RyLmVuY29kZWAKKworCisu
LiBmdW5jdGlvbjo6IGVuc3VyZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3Ry
aWN0JykKKworICAgQ29lcmNlICpzKiB0byA6ZGF0YTpgdGV4dF90eXBlYC4gKmVuY29kaW5nKiwg
KmVycm9ycyogYXJlIHRoZSBzYW1lIGFzCisgICA6bWV0aDpgcHkzOnN0ci5lbmNvZGVgCisKKwog
Li4gZGF0YTo6IFN0cmluZ0lPCiAKICAgIFRoaXMgaXMgYSBmYWtlIGZpbGUgb2JqZWN0IGZvciB0
ZXh0dWFsIGRhdGEuICBJdCdzIGFuIGFsaWFzIGZvcgpAQCAtNTAzLDcgKzUyNCw3IEBAIFB5dGhv
biAyIG9yIDMsIHdyaXRlOjoKICAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCBodG1sX3BhcnNlcgog
CiBTaW1pbGFybHksIHRvIGdldCB0aGUgZnVuY3Rpb24gdG8gcmVsb2FkIG1vZHVsZXMsIHdoaWNo
IHdhcyBtb3ZlZCBmcm9tIHRoZQotYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wYGAgbW9kdWxl
LCB1c2U6OgorYnVpbHRpbiBtb2R1bGUgdG8gdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLCB1c2U6
OgogCiAgICBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmVsb2FkX21vZHVsZQogCkBAIC01NjMsNyAr
NTg0LDExIEBAIFN1cHBvcnRlZCByZW5hbWVzOgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBjU3RyaW5nSU9gYCAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6Y1N0cmluZ0lPLlN0cmluZ0lPYCAgICAgIHwgOmNsYXNzOmBweTM6aW8u
U3RyaW5nSU9gICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwg
OmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MzpkYm0uZ251
YCAgICAgICAgICAgICAgICAgIHwKK3wgYGBjb2xsZWN0aW9uc19hYmNgYCAgICAgICAgICB8IDpt
b2Q6YHB5Mjpjb2xsZWN0aW9uc2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmNvbGxlY3Rpb25z
LmFiY2AgKDMuMyspICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworfCBgYGRibV9nbnVgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmdkYm1gICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6ZGJtLmdudWAgICAgICAg
ICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCit8IGBgZGJtX25kYm1gYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
ZGJtYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpkYm0ubmRibWAgICAgICAgICAg
ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKIHwgYGBfZHVtbXlfdGhyZWFkYGAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkdW1t
eV90aHJlYWRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOl9kdW1teV90aHJlYWRgICAgICAgICAg
ICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2ZnIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2V0dXAuY2Zn
CmluZGV4IGUxMjA2OGM1NzNjNmY2ZWZkM2E5Mzc5NmU2ZGNlZWFlMTg4YjM1Y2QuLjMxN2UwMTZj
OGNjMDRkMDk3YjNiNjk2Mzk3MTAzNTdkZWIxYzk3MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3Nl
dHVwLmNmZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zZXR1cC5jZmcKQEAgLTUsMTcgKzUsMTYgQEAgdW5pdmVy
c2FsID0gMQogbWF4LWxpbmUtbGVuZ3RoID0gMTAwCiBpZ25vcmUgPSBGODIxCiAKLVt0b29sOnB5
dGVzdF0KLW1pbnZlcnNpb24gPSAyLjIuMAotcGVwOGlnbm9yZSA9IAotCWRvY3VtZW50YXRpb24v
Ki5weSBBTEwKLQl0ZXN0X3NpeC5weSBBTEwKLWZsYWtlcy1pZ25vcmUgPSAKLQlkb2N1bWVudGF0
aW9uLyoucHkgQUxMCi0JdGVzdF9zaXgucHkgQUxMCi0Jc2l4LnB5IFVuZGVmaW5lZE5hbWUKK1tt
ZXRhZGF0YV0KK2xpY2Vuc2VfZmlsZSA9IExJQ0VOU0UKIAotW2VnZ19pbmZvXQotdGFnX2J1aWxk
ID0gCi10YWdfZGF0ZSA9IDAKK1t0b29sOnB5dGVzdF0KK21pbnZlcnNpb249Mi4yLjAKK3BlcDhp
Z25vcmUgPQorICAgIGRvY3VtZW50YXRpb24vKi5weSBBTEwKKyAgICB0ZXN0X3NpeC5weSBBTEwK
IAorZmxha2VzLWlnbm9yZSA9CisgICAgZG9jdW1lbnRhdGlvbi8qLnB5IEFMTAorICAgIHRlc3Rf
c2l4LnB5IEFMTAorICAgIHNpeC5weSBVbmRlZmluZWROYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmluZGV4IGNhNDRlMTAwZTQyN2VjZjU0MjRi
YWNiODRkNWViNmY1YzcxMmYyMzEuLjk3YzY4NWI1YTUwYmQ5NzY5ODA0ODYxZjRhZDdhODM5NjIx
NWQyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNyBCZW5qYW1pbiBQ
ZXRlcnNvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgogIwog
IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCkBAIC0zMSw2ICsz
MSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKIGltcG9ydCBzaXgKIAogc2l4X2NsYXNzaWZpZXJz
ID0gWworICAgICJEZXZlbG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlIiwK
ICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIiLAogICAgICJQcm9ncmFt
bWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIsCiAgICAgIkludGVuZGVkIEF1ZGllbmNlIDo6
IERldmVsb3BlcnMiLApAQCAtNDYsMTEgKzQ3LDEyIEBAIHNldHVwKG5hbWU9InNpeCIsCiAgICAg
ICB2ZXJzaW9uPXNpeC5fX3ZlcnNpb25fXywKICAgICAgIGF1dGhvcj0iQmVuamFtaW4gUGV0ZXJz
b24iLAogICAgICAgYXV0aG9yX2VtYWlsPSJiZW5qYW1pbkBweXRob24ub3JnIiwKLSAgICAgIHVy
bD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iLAorICAgICAgdXJsPSJodHRwczov
L2dpdGh1Yi5jb20vYmVuamFtaW5wL3NpeCIsCiAgICAgICB0ZXN0c19yZXF1aXJlPVsicHl0ZXN0
Il0sCiAgICAgICBweV9tb2R1bGVzPVsic2l4Il0sCiAgICAgICBkZXNjcmlwdGlvbj0iUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMiLAogICAgICAgbG9uZ19kZXNjcmlwdGlv
bj1zaXhfbG9uZ19kZXNjcmlwdGlvbiwKICAgICAgIGxpY2Vuc2U9Ik1JVCIsCi0gICAgICBjbGFz
c2lmaWVycz1zaXhfY2xhc3NpZmllcnMKKyAgICAgIGNsYXNzaWZpZXJzPXNpeF9jbGFzc2lmaWVy
cywKKyAgICAgIHB5dGhvbl9yZXF1aXJlcz0iPj0yLjYsICE9My4wLiosICE9My4xLioiLAogICAg
ICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVS
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vSU5TVEFMTEVSCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
YjU4OWUzOGEzMjA0MWU0OTMzMmU1ZTgxYzJkMzYzZGM0MThkNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNUQUxMRVIKQEAgLTAsMCArMSBAQAor
cGlwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby9MSUNFTlNFIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjA1YTU0
NTI2MWMwZjliMzFhYmUzZWRlYzcxMDU4NzU4N2E2NTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTElDRU5TRQpAQCAtMCwwICsxLDE4IEBACitDb3B5
cmlnaHQgKGMpIDIwMTAtMjAxOSBCZW5qYW1pbiBQZXRlcnNvbgorCitQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5IG9mCit0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgordGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwordXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbCBjb3BpZXMgb2YKK3RoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKK3N1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKK2NvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUworRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SCitDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksIFdIRVRIRVIKK0lOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCitDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGM4ZjUxZTFmMzY2
MTM4ZDM4MTZhYmUwZGRiM2VmZWU0MTc1YzNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LTEuMTMuMC5kaXN0LWluZm8vTUVUQURBVEEKQEAgLTAsMCArMSw1MiBAQAorTWV0YWRhdGEt
VmVyc2lvbjogMi4xCitOYW1lOiBzaXgKK1ZlcnNpb246IDEuMTMuMAorU3VtbWFyeTogUHl0aG9u
IDIgYW5kIDMgY29tcGF0aWJpbGl0eSB1dGlsaXRpZXMKK0hvbWUtcGFnZTogaHR0cHM6Ly9naXRo
dWIuY29tL2JlbmphbWlucC9zaXgKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24KK0F1dGhvci1l
bWFpbDogYmVuamFtaW5AcHl0aG9uLm9yZworTGljZW5zZTogTUlUCitQbGF0Zm9ybTogVU5LTk9X
TgorQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDUgLSBQcm9kdWN0aW9uL1N0YWJs
ZQorQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIKK0NsYXNz
aWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzCitDbGFzc2lmaWVyOiBJ
bnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzCitDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9T
SSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZQorQ2xhc3NpZmllcjogVG9waWMgOjogU29mdHdhcmUg
RGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzCitDbGFzc2lmaWVyOiBUb3BpYyA6OiBVdGlsaXRpZXMK
K1JlcXVpcmVzLVB5dGhvbjogPj0yLjYsICE9My4wLiosICE9My4xLioKKworLi4gaW1hZ2U6OiBo
dHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9zaXguc3ZnCisgICA6dGFyZ2V0OiBodHRwczov
L3B5cGkub3JnL3Byb2plY3Qvc2l4LworICAgOmFsdDogc2l4IG9uIFB5UEkKKworLi4gaW1hZ2U6
OiBodHRwczovL3RyYXZpcy1jaS5vcmcvYmVuamFtaW5wL3NpeC5zdmc/YnJhbmNoPW1hc3Rlcgor
ICAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2JlbmphbWlucC9zaXgKKyAgIDphbHQ6
IHNpeCBvbiBUcmF2aXNDSQorCisuLiBpbWFnZTo6IGh0dHBzOi8vcmVhZHRoZWRvY3Mub3JnL3By
b2plY3RzL3NpeC9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vc2l4
LnJlYWR0aGVkb2NzLmlvLworICAgOmFsdDogc2l4J3MgZG9jdW1lbnRhdGlvbiBvbiBSZWFkIHRo
ZSBEb2NzCisKKy4uIGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9saWNlbnNl
LU1JVC1ncmVlbi5zdmcKKyAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAv
c2l4L2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAgIDphbHQ6IE1JVCBMaWNlbnNlIGJhZGdlCisKK1Np
eCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeS4gIEl0IHByb3ZpZGVz
IHV0aWxpdHkgZnVuY3Rpb25zCitmb3Igc21vb3RoaW5nIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIFB5dGhvbiB2ZXJzaW9ucyB3aXRoIHRoZSBnb2FsIG9mCit3cml0aW5nIFB5dGhv
biBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSBvbiBib3RoIFB5dGhvbiB2ZXJzaW9ucy4gIFNlZSB0
aGUKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBpcyBwcm92aWRl
ZC4KKworU2l4IHN1cHBvcnRzIGV2ZXJ5IFB5dGhvbiB2ZXJzaW9uIHNpbmNlIDIuNi4gIEl0IGlz
IGNvbnRhaW5lZCBpbiBvbmx5IG9uZSBQeXRob24KK2ZpbGUsIHNvIGl0IGNhbiBiZSBlYXNpbHkg
Y29waWVkIGludG8geW91ciBwcm9qZWN0LiAoVGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZQorbm90
aWNlIG11c3QgYmUgcmV0YWluZWQuKQorCitPbmxpbmUgZG9jdW1lbnRhdGlvbiBpcyBhdCBodHRw
czovL3NpeC5yZWFkdGhlZG9jcy5pby8uCisKK0J1Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGh0dHBz
Oi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4LiAgVGhlIGNvZGUgY2FuIGFsc28KK2JlIGZvdW5k
IHRoZXJlLgorCitGb3IgcXVlc3Rpb25zIGFib3V0IHNpeCBvciBwb3J0aW5nIGluIGdlbmVyYWws
IGVtYWlsIHRoZSBweXRob24tcG9ydGluZyBtYWlsaW5nCitsaXN0OiBodHRwczovL21haWwucHl0
aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1wb3J0aW5nCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vUkVDT1JEIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMu
MC5kaXN0LWluZm8vUkVDT1JECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1NzY2NWM5OTY0MjU1ZDE3MDJmMDE2Yzhi
ZDExZGFlZGU1MTY2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRp
c3QtaW5mby9SRUNPUkQKQEAgLTAsMCArMSw4IEBACitzaXgtMS4xMy4wLmRpc3QtaW5mby9JTlNU
QUxMRVIsc2hhMjU2PXp1dXVlNGtub3lKLVV3UFBYZzhmZXpTN1ZDclhKUXJBUDd6ZU51d3ZGUWcs
NA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0Usc2hhMjU2PXQxS2JqQWNYR25pb3cyd3ln
NUJWS09TQktVWFpkOUVsNjVKdWpNdnlSYlksMTA2Ng0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL01F
VEFEQVRBLHNoYTI1Nj1oeFM0clNQUmZPOGV3YmNMUzMwYW5vRmk2TEZnVVEzbWtfeGtuWjhSVjR3
LDE5NDANCitzaXgtMS4xMy4wLmRpc3QtaW5mby9SRUNPUkQsLA0KK3NpeC0xLjEzLjAuZGlzdC1p
bmZvL1dIRUVMLHNoYTI1Nj04VDhmeGVmcl9yLUE3OXFiT0o5ZF9BYUVna3BDR21FUEhjLWdwQ3E1
QlJnLDExMA0KK3NpeC0xLjEzLjAuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQsc2hhMjU2PV9pVkhf
aVlFdEVYbkQ4bllHUVlwWUZVdmtVVzlzRU8xR1lia2VLU0FhaXMsNA0KK3NpeC5weSxzaGEyNTY9
bzlXSE84dXRXR2F5TmhOcURtTnFQZFFzUWFpcjVSYVJXakxfOElZZjFxdywzMzA1MQ0KK3NpeC5w
eWMsLA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vV0hFRUwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAwMTIzNTUz
MzNlMDY2NGZhYzMxMjM4YWEwNDIxNmZmNTM2MjIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
c2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCkBAIC0wLDAgKzEsNiBAQAorV2hlZWwtVmVy
c2lvbjogMS4wCitHZW5lcmF0b3I6IGJkaXN0X3doZWVsICgwLjMyLjEpCitSb290LUlzLVB1cmVs
aWI6IHRydWUKK1RhZzogcHkyLW5vbmUtYW55CitUYWc6IHB5My1ub25lLWFueQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3NpeC9zaXgtMS4xMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9z
aXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmUyZmNl
NDk4OTU1YjYyODAxNDYxOGIyOGM2YmNmMTUyNDY2YTRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApAQCAtMCwwICsxIEBACitz
aXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzVlMWQyMmNiODYzMGNjZDIwYzIwM2Q2Mzg5YTVhZTYyNTAwYWY5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCkBA
IC0wLDAgKzEsMjIgQEAKK1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgorRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCitJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6CisJaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKKwor
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKKworRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgorCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK1Byb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKK05vbmUKK1By
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgorTm9uZQorLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitMaXN0IG9mIGZpbGVzOgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0lO
U1RBTExFUgorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL0xJQ0VOU0UKKy9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Np
eC9zaXgtMS4xMy4wLmRpc3QtaW5mby9NRVRBREFUQQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlz
dC1pbmZvL1JFQ09SRAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC0xLjEzLjAuZGlzdC1pbmZvL1dIRUVMCisvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LTEuMTMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5CmluZGV4IDZiZjRmZDM4MTA0NjIwN2E0Nzk0
YWVlMTdiZTZkMjJkYjIzN2YzMGEuLmQwYWVjZTg5ZmE0YWFlOTQ4ZDc1ZThlZjIyNzdjZTI0OTUx
ZWJiMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9zaXgucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVy
c29uCisjIENvcHlyaWdodCAoYykgMjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKICMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTI5LDcgKzI5LDcg
QEAgaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAKIF9fYXV0aG9yX18gPSAiQmVuamFtaW4gUGV0
ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IgotX192ZXJzaW9uX18gPSAiMS4xMS4wIgorX192
ZXJzaW9uX18gPSAiMS4xMy4wIgogCiAKICMgVXNlZnVsIGZvciB2ZXJ5IGNvYXJzZSB2ZXJzaW9u
IGRpZmZlcmVudGlhdGlvbi4KQEAgLTI1NSw4ICsyNTUsMTAgQEAgX21vdmVkX2F0dHJpYnV0ZXMg
PSBbCiAgICAgTW92ZWRBdHRyaWJ1dGUoInppcF9sb25nZXN0IiwgIml0ZXJ0b29scyIsICJpdGVy
dG9vbHMiLCAiaXppcF9sb25nZXN0IiwgInppcF9sb25nZXN0IiksCiAgICAgTW92ZWRNb2R1bGUo
ImJ1aWx0aW5zIiwgIl9fYnVpbHRpbl9fIiksCiAgICAgTW92ZWRNb2R1bGUoImNvbmZpZ3BhcnNl
ciIsICJDb25maWdQYXJzZXIiKSwKKyAgICBNb3ZlZE1vZHVsZSgiY29sbGVjdGlvbnNfYWJjIiwg
ImNvbGxlY3Rpb25zIiwgImNvbGxlY3Rpb25zLmFiYyIgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAo
MywgMykgZWxzZSAiY29sbGVjdGlvbnMiKSwKICAgICBNb3ZlZE1vZHVsZSgiY29weXJlZyIsICJj
b3B5X3JlZyIpLAogICAgIE1vdmVkTW9kdWxlKCJkYm1fZ251IiwgImdkYm0iLCAiZGJtLmdudSIp
LAorICAgIE1vdmVkTW9kdWxlKCJkYm1fbmRibSIsICJkYm0iLCAiZGJtLm5kYm0iKSwKICAgICBN
b3ZlZE1vZHVsZSgiX2R1bW15X3RocmVhZCIsICJkdW1teV90aHJlYWQiLCAiX2R1bW15X3RocmVh
ZCIpLAogICAgIE1vdmVkTW9kdWxlKCJodHRwX2Nvb2tpZWphciIsICJjb29raWVsaWIiLCAiaHR0
cC5jb29raWVqYXIiKSwKICAgICBNb3ZlZE1vZHVsZSgiaHR0cF9jb29raWVzIiwgIkNvb2tpZSIs
ICJodHRwLmNvb2tpZXMiKSwKQEAgLTYzNyw2ICs2MzksNyBAQCBpZiBQWTM6CiAgICAgaW1wb3J0
IGlvCiAgICAgU3RyaW5nSU8gPSBpby5TdHJpbmdJTwogICAgIEJ5dGVzSU8gPSBpby5CeXRlc0lP
CisgICAgZGVsIGlvCiAgICAgX2Fzc2VydENvdW50RXF1YWwgPSAiYXNzZXJ0Q291bnRFcXVhbCIK
ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzFdIDw9IDE6CiAgICAgICAgIF9hc3NlcnRSYWlzZXNS
ZWdleCA9ICJhc3NlcnRSYWlzZXNSZWdleHAiCkBAIC04MjQsNyArODI3LDE1IEBAIGRlZiB3aXRo
X21ldGFjbGFzcyhtZXRhLCAqYmFzZXMpOgogICAgIGNsYXNzIG1ldGFjbGFzcyh0eXBlKToKIAog
ICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHRoaXNfYmFzZXMsIGQpOgotICAgICAgICAg
ICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIGQpCisgICAgICAgICAgICBpZiBzeXMudmVyc2lv
bl9pbmZvWzoyXSA+PSAoMywgNyk6CisgICAgICAgICAgICAgICAgIyBUaGlzIHZlcnNpb24gaW50
cm9kdWNlZCBQRVAgNTYwIHRoYXQgcmVxdWlyZXMgYSBiaXQKKyAgICAgICAgICAgICAgICAjIG9m
IGV4dHJhIGNhcmUgKHdlIG1pbWljIHdoYXQgaXMgZG9uZSBieSBfX2J1aWxkX2NsYXNzX18pLgor
ICAgICAgICAgICAgICAgIHJlc29sdmVkX2Jhc2VzID0gdHlwZXMucmVzb2x2ZV9iYXNlcyhiYXNl
cykKKyAgICAgICAgICAgICAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3QgYmFzZXM6CisgICAg
ICAgICAgICAgICAgICAgIGRbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcworICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9iYXNlcyA9IGJhc2VzCisgICAgICAgICAg
ICByZXR1cm4gbWV0YShuYW1lLCByZXNvbHZlZF9iYXNlcywgZCkKIAogICAgICAgICBAY2xhc3Nt
ZXRob2QKICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKGNscywgbmFtZSwgdGhpc19iYXNlcyk6CkBA
IC04NDQsMTMgKzg1NSw3NCBAQCBkZWYgYWRkX21ldGFjbGFzcyhtZXRhY2xhc3MpOgogICAgICAg
ICAgICAgICAgIG9yaWdfdmFycy5wb3Aoc2xvdHNfdmFyKQogICAgICAgICBvcmlnX3ZhcnMucG9w
KCdfX2RpY3RfXycsIE5vbmUpCiAgICAgICAgIG9yaWdfdmFycy5wb3AoJ19fd2Vha3JlZl9fJywg
Tm9uZSkKKyAgICAgICAgaWYgaGFzYXR0cihjbHMsICdfX3F1YWxuYW1lX18nKToKKyAgICAgICAg
ICAgIG9yaWdfdmFyc1snX19xdWFsbmFtZV9fJ10gPSBjbHMuX19xdWFsbmFtZV9fCiAgICAgICAg
IHJldHVybiBtZXRhY2xhc3MoY2xzLl9fbmFtZV9fLCBjbHMuX19iYXNlc19fLCBvcmlnX3ZhcnMp
CiAgICAgcmV0dXJuIHdyYXBwZXIKIAogCitkZWYgZW5zdXJlX2JpbmFyeShzLCBlbmNvZGluZz0n
dXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgorICAgICIiIkNvZXJjZSAqKnMqKiB0byBzaXguYmlu
YXJ5X3R5cGUuCisKKyAgICBGb3IgUHl0aG9uIDI6CisgICAgICAtIGB1bmljb2RlYCAtPiBlbmNv
ZGVkIHRvIGBzdHJgCisgICAgICAtIGBzdHJgIC0+IGBzdHJgCisKKyAgICBGb3IgUHl0aG9uIDM6
CisgICAgICAtIGBzdHJgIC0+IGVuY29kZWQgdG8gYGJ5dGVzYAorICAgICAgLSBgYnl0ZXNgIC0+
IGBieXRlc2AKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAg
ICAgIHJldHVybiBzLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIGVsaWYgaXNpbnN0YW5j
ZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToKKyAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorCisK
K2RlZiBlbnN1cmVfc3RyKHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6Cisg
ICAgIiIiQ29lcmNlICpzKiB0byBgc3RyYC4KKworICAgIEZvciBQeXRob24gMjoKKyAgICAgIC0g
YHVuaWNvZGVgIC0+IGVuY29kZWQgdG8gYHN0cmAKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKwor
ICAgIEZvciBQeXRob24gMzoKKyAgICAgIC0gYHN0cmAgLT4gYHN0cmAKKyAgICAgIC0gYGJ5dGVz
YCAtPiBkZWNvZGVkIHRvIGBzdHJgCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uocywg
KHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3Qg
ZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBlKHMpKQorICAgIGlmIFBZMiBhbmQgaXNpbnN0YW5j
ZShzLCB0ZXh0X3R5cGUpOgorICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykK
KyAgICBlbGlmIFBZMyBhbmQgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAgIHMg
PSBzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQorICAgIHJldHVybiBzCisKKworZGVmIGVuc3Vy
ZV90ZXh0KHMsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgIiIiQ29l
cmNlICpzKiB0byBzaXgudGV4dF90eXBlLgorCisgICAgRm9yIFB5dGhvbiAyOgorICAgICAgLSBg
dW5pY29kZWAgLT4gYHVuaWNvZGVgCisgICAgICAtIGBzdHJgIC0+IGB1bmljb2RlYAorCisgICAg
Rm9yIFB5dGhvbiAzOgorICAgICAgLSBgc3RyYCAtPiBgc3RyYAorICAgICAgLSBgYnl0ZXNgIC0+
IGRlY29kZWQgdG8gYHN0cmAKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90
eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCisgICAgZWxp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToK
KyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgZXhwZWN0aW5nIHR5cGUgJyVzJyIgJSB0eXBl
KHMpKQorCisKKwogZGVmIHB5dGhvbl8yX3VuaWNvZGVfY29tcGF0aWJsZShrbGFzcyk6CiAgICAg
IiIiCi0gICAgQSBkZWNvcmF0b3IgdGhhdCBkZWZpbmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9f
IG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCisgICAgQSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBkZWZp
bmVzIF9fdW5pY29kZV9fIGFuZCBfX3N0cl9fIG1ldGhvZHMgdW5kZXIgUHl0aG9uIDIuCiAgICAg
VW5kZXIgUHl0aG9uIDMgaXQgZG9lcyBub3RoaW5nLgogCiAgICAgVG8gc3VwcG9ydCBQeXRob24g
MiBhbmQgMyB3aXRoIGEgc2luZ2xlIGNvZGUgYmFzZSwgZGVmaW5lIGEgX19zdHJfXyBtZXRob2QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkK
aW5kZXggNDNlNzQyNmRlYTEyNDFiYmQzNzFkMmYyNGY2M2Y1MTA0MjdhNTE5Zi4uM2VlZmNlMzdj
MzI4ZDdiMTViMjNlZTgzZGQ4OThjNGIzZTU3NjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVz
dF9zaXgucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9zaXgvdGVzdF9zaXgucHkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoYykgMjAxMC0yMDE3IEJlbmphbWluIFBldGVyc29uCisjIENvcHlyaWdodCAoYykg
MjAxMC0yMDE5IEJlbmphbWluIFBldGVyc29uCiAjCiAjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICMg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwKQEAgLTIyLDggKzIyLDkgQEAgaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGFiYwogCi1p
bXBvcnQgcHkKK2ltcG9ydCBweXRlc3QKIAogaW1wb3J0IHNpeAogCkBAIC04MCw3ICs4MSw3IEBA
IGRlZiB0ZXN0X01BWFNJWkUoKToKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAg
ICMgQmVmb3JlIFB5dGhvbiAyLjYuCiAgICAgICAgIHBhc3MKLSAgICBweS50ZXN0LnJhaXNlcygK
KyAgICBweXRlc3QucmFpc2VzKAogICAgICAgICAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciks
CiAgICAgICAgIG9wZXJhdG9yLm11bCwgW05vbmVdLCBzaXguTUFYU0laRSArIDEpCiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgICAgICBoYXZlX2dkYm0gPSBGYWxzZQogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fbW92ZWRf
YXR0cmlidXRlc10pCiBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgIiIiRW5z
dXJlIHRoYXQgZXZlcnl0aGluZyBsb2FkcyBjb3JyZWN0bHkuIiIiCkBAIC0xMjIsMzYgKzEyMywz
NiBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zKGl0ZW1fbmFtZSk6CiAgICAgICAgICAgICBfX2ltcG9y
dF9fKCJzaXgubW92ZXMuIiArIGl0ZW1fbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
CiAgICAgICAgIGlmIGl0ZW1fbmFtZSA9PSAiemlwX2xvbmdlc3QiIGFuZCBzeXMudmVyc2lvbl9p
bmZvIDwgKDIsIDYpOgotICAgICAgICAgICAgcHkudGVzdC5za2lwKCJ6aXBfbG9uZ2VzdCBvbmx5
IGF2YWlsYWJsZSBvbiAyLjYrIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJ6aXBfbG9uZ2Vz
dCBvbmx5IGF2YWlsYWJsZSBvbiAyLjYrIikKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAg
ICAgIGlmIGl0ZW1fbmFtZSA9PSAid2lucmVnIiBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCJ3aW4iKToKLSAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVs
ZSIpCisgICAgICAgICAgICBweXRlc3Quc2tpcCgiV2luZG93cyBvbmx5IG1vZHVsZSIpCiAgICAg
ICAgIGlmIGl0ZW1fbmFtZS5zdGFydHN3aXRoKCJ0a2ludGVyIik6CiAgICAgICAgICAgICBpZiBu
b3QgaGF2ZV90a2ludGVyOgotICAgICAgICAgICAgICAgIHB5LnRlc3Quc2tpcCgicmVxdWlyZXMg
dGtpbnRlciIpCisgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoInJlcXVpcmVzIHRraW50ZXIi
KQogICAgICAgICAgICAgaWYgaXRlbV9uYW1lID09ICJ0a2ludGVyX3R0ayIgYW5kIHN5cy52ZXJz
aW9uX2luZm9bOjJdIDw9ICgyLCA2KToKLSAgICAgICAgICAgICAgICBweS50ZXN0LnNraXAoInR0
ayBvbmx5IGF2YWlsYWJsZSBvbiAyLjcrIikKKyAgICAgICAgICAgICAgICBweXRlc3Quc2tpcCgi
dHRrIG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogICAgICAgICBpZiBpdGVtX25hbWUuc3RhcnRz
d2l0aCgiZGJtX2dudSIpIGFuZCBub3QgaGF2ZV9nZGJtOgotICAgICAgICAgICAgcHkudGVzdC5z
a2lwKCJyZXF1aXJlcyBnZGJtIikKKyAgICAgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBn
ZGJtIikKICAgICAgICAgcmFpc2UKICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwg
Nik6CiAgICAgICAgIGFzc2VydCBpdGVtX25hbWUgaW4gZGlyKHNpeC5tb3ZlcykKIAogCi1AcHku
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZv
ciBpdGVtIGluIHNpeC5fdXJsbGliX3BhcnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3Rf
bW92ZV9pdGVtc191cmxsaWJfcGFyc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBl
dmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKICAgICBpZiBpdGVtX25hbWUgPT0gIlBhcnNl
UmVzdWx0IiBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgyLCA1KToKLSAgICAgICAgcHkudGVzdC5z
a2lwKCJQYXJzZVJlc3VsdCBpcyBvbmx5IGZvdW5kIG9uIDIuNSsiKQorICAgICAgICBweXRlc3Qu
c2tpcCgiUGFyc2VSZXN1bHQgaXMgb25seSBmb3VuZCBvbiAyLjUrIikKICAgICBpZiBpdGVtX25h
bWUgaW4gKCJwYXJzZV9xcyIsICJwYXJzZV9xc2wiKSBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgy
LCA2KToKLSAgICAgICAgcHkudGVzdC5za2lwKCJwYXJzZV9xc1tsXSBpcyBuZXcgaW4gMi42IikK
KyAgICAgICAgcHl0ZXN0LnNraXAoInBhcnNlX3FzW2xdIGlzIG5ldyBpbiAyLjYiKQogICAgIGlm
IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgyLCA2KToKICAgICAgICAgYXNzZXJ0IGl0ZW1fbmFt
ZSBpbiBkaXIoc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSkKICAgICBnZXRhdHRyKHNpeC5tb3Zlcy51
cmxsaWIucGFyc2UsIGl0ZW1fbmFtZSkKIAogCi1AcHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJp
dGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1lIGZvciBpdGVtIGluIHNpeC5fdXJsbGliX2Vy
cm9yX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVmIHRlc3RfbW92ZV9pdGVtc191cmxsaWJfZXJyb3Io
aXRlbV9uYW1lKToKICAgICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3Rs
eS4iIiIKQEAgLTE2MCw3ICsxNjEsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9lcnJv
cihpdGVtX25hbWUpOgogICAgIGdldGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5lcnJvciwgaXRlbV9u
YW1lKQogCiAKLUBweS50ZXN0Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtpdGVtLm5hbWUgZm9yIGl0ZW0gaW4gc2l4Ll91cmxsaWJfcmVxdWVzdF9tb3ZlZF9hdHRyaWJ1
dGVzXSkKIGRlZiB0ZXN0X21vdmVfaXRlbXNfdXJsbGliX3JlcXVlc3QoaXRlbV9uYW1lKToKICAg
ICAiIiJFbnN1cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE2OSw3
ICsxNzAsNyBAQCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXF1ZXN0KGl0ZW1fbmFtZSk6
CiAgICAgZ2V0YXR0cihzaXgubW92ZXMudXJsbGliLnJlcXVlc3QsIGl0ZW1fbmFtZSkKIAogCi1A
cHkudGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpdGVtX25hbWUiLAorQHB5dGVzdC5tYXJrLnBhcmFt
ZXRyaXplKCJpdGVtX25hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbS5uYW1l
IGZvciBpdGVtIGluIHNpeC5fdXJsbGliX3Jlc3BvbnNlX21vdmVkX2F0dHJpYnV0ZXNdKQogZGVm
IHRlc3RfbW92ZV9pdGVtc191cmxsaWJfcmVzcG9uc2UoaXRlbV9uYW1lKToKICAgICAiIiJFbnN1
cmUgdGhhdCBldmVyeXRoaW5nIGxvYWRzIGNvcnJlY3RseS4iIiIKQEAgLTE3OCw3ICsxNzksNyBA
QCBkZWYgdGVzdF9tb3ZlX2l0ZW1zX3VybGxpYl9yZXNwb25zZShpdGVtX25hbWUpOgogICAgIGdl
dGF0dHIoc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZSwgaXRlbV9uYW1lKQogCiAKLUBweS50ZXN0
Lm1hcmsucGFyYW1ldHJpemUoIml0ZW1fbmFtZSIsCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
Iml0ZW1fbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtLm5hbWUgZm9yIGl0
ZW0gaW4gc2l4Ll91cmxsaWJfcm9ib3RwYXJzZXJfbW92ZWRfYXR0cmlidXRlc10pCiBkZWYgdGVz
dF9tb3ZlX2l0ZW1zX3VybGxpYl9yb2JvdHBhcnNlcihpdGVtX25hbWUpOgogICAgICIiIkVuc3Vy
ZSB0aGF0IGV2ZXJ5dGhpbmcgbG9hZHMgY29ycmVjdGx5LiIiIgpAQCAtMjQzLDcgKzI0NCw3IEBA
IGRlZiB0ZXN0X3ppcCgpOgogICAgIGFzc2VydCBzaXguYWR2YW5jZV9pdGVyYXRvcih6aXAocmFu
Z2UoMiksIHJhbmdlKDIpKSkgPT0gKDAsIDApCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5
cy52ZXJzaW9uX2luZm8gPCAoMiwgNikiKQorQHB5dGVzdC5tYXJrLnNraXBpZigic3lzLnZlcnNp
b25faW5mbyA8ICgyLCA2KSIpCiBkZWYgdGVzdF96aXBfbG9uZ2VzdCgpOgogICAgIGZyb20gc2l4
Lm1vdmVzIGltcG9ydCB6aXBfbG9uZ2VzdAogICAgIGl0ID0gemlwX2xvbmdlc3QocmFuZ2UoMiks
IHJhbmdlKDEpKQpAQCAtMzIxLDcgKzMyMiw3IEBAIGNsYXNzIFRlc3RDdXN0b21pemVkTW92ZXM6
CiAKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3JlbW92ZShzZWxmKToKLSAgICAgICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5yZW1vdmVfbW92ZSwgImVnZ3MiKQorICAgICAgICBw
eXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzaXgucmVtb3ZlX21vdmUsICJlZ2dzIikKIAog
CiBkZWYgdGVzdF9nZXRfdW5ib3VuZF9mdW5jdGlvbigpOgpAQCAtMzM3LDcgKzMzOCw3IEBAIGRl
ZiB0ZXN0X2dldF9tZXRob2Rfc2VsZigpOgogICAgICAgICAgICAgcGFzcwogICAgIHggPSBYKCkK
ICAgICBhc3NlcnQgc2l4LmdldF9tZXRob2Rfc2VsZih4Lm0pIGlzIHgKLSAgICBweS50ZXN0LnJh
aXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCisgICAgcHl0ZXN0
LnJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2l4LmdldF9tZXRob2Rfc2VsZiwgNDIpCiAKIAogZGVm
IHRlc3RfZ2V0X21ldGhvZF9mdW5jdGlvbigpOgpAQCAtMzQ2LDcgKzM0Nyw3IEBAIGRlZiB0ZXN0
X2dldF9tZXRob2RfZnVuY3Rpb24oKToKICAgICAgICAgICAgIHBhc3MKICAgICB4ID0gWCgpCiAg
ICAgYXNzZXJ0IHNpeC5nZXRfbWV0aG9kX2Z1bmN0aW9uKHgubSkgaXMgWC5fX2RpY3RfX1sibSJd
Ci0gICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRfbWV0aG9kX2Z1bmN0
aW9uLCBoYXNhdHRyKQorICAgIHB5dGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5nZXRf
bWV0aG9kX2Z1bmN0aW9uLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dldF9mdW5jdGlvbl9jbG9z
dXJlKCk6CkBAIC0zNjQsNyArMzY1LDcgQEAgZGVmIHRlc3RfZ2V0X2Z1bmN0aW9uX2NvZGUoKToK
ICAgICAgICAgcGFzcwogICAgIGFzc2VydCBpc2luc3RhbmNlKHNpeC5nZXRfZnVuY3Rpb25fY29k
ZShmKSwgdHlwZXMuQ29kZVR5cGUpCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAicHlweV92ZXJz
aW9uX2luZm8iKToKLSAgICAgICAgcHkudGVzdC5yYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNpeC5n
ZXRfZnVuY3Rpb25fY29kZSwgaGFzYXR0cikKKyAgICAgICAgcHl0ZXN0LnJhaXNlcyhBdHRyaWJ1
dGVFcnJvciwgc2l4LmdldF9mdW5jdGlvbl9jb2RlLCBoYXNhdHRyKQogCiAKIGRlZiB0ZXN0X2dl
dF9mdW5jdGlvbl9kZWZhdWx0cygpOgpAQCAtNDA0LDcgKzQwNSw3IEBAIGRlZiB0ZXN0X2RpY3Rp
b25hcnlfaXRlcmF0b3JzKG1vbmtleXBhdGNoKToKICAgICAgICAgaXQgPSBtZXRoKGQpCiAgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpdCwgbGlzdCkKICAgICAgICAgYXNzZXJ0IGxpc3Qo
aXQpID09IGxpc3QoZ2V0YXR0cihkLCBuYW1lKSgpKQotICAgICAgICBweS50ZXN0LnJhaXNlcyhT
dG9wSXRlcmF0aW9uLCBzaXguYWR2YW5jZV9pdGVyYXRvciwgaXQpCisgICAgICAgIHB5dGVzdC5y
YWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2l4LmFkdmFuY2VfaXRlcmF0b3IsIGl0KQogICAgICAgICBy
ZWNvcmQgPSBbXQogICAgICAgICBkZWYgd2l0aF9rdygqYXJncywgKiprdyk6CiAgICAgICAgICAg
ICByZWNvcmQuYXBwZW5kKGt3WyJrdyJdKQpAQCAtNDE2LDE3ICs0MTcsOSBAQCBkZWYgdGVzdF9k
aWN0aW9uYXJ5X2l0ZXJhdG9ycyhtb25rZXlwYXRjaCk6CiAgICAgICAgIG1vbmtleXBhdGNoLnVu
ZG8oKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgy
LCA3KSIsCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3
KSIsCiAgICAgICAgICAgICAgICAgcmVhc29uPSJ2aWV3IG1ldGhvZHMgb24gZGljdGlvbmFyaWVz
IG9ubHkgYXZhaWxhYmxlIG9uIDIuNysiKQogZGVmIHRlc3RfZGljdGlvbmFyeV92aWV3cygpOgot
ICAgIGRlZiBzdG9ja19tZXRob2RfbmFtZSh2aWV3d2hhdCk6Ci0gICAgICAgICIiIkdpdmVuIGEg
bWV0aG9kIHN1ZmZpeCBsaWtlICJrZXlzIiBvciAidmFsdWVzIiwgcmV0dXJuIHRoZSBuYW1lCi0g
ICAgICAgIG9mIHRoZSBkaWN0IG1ldGhvZCB0aGF0IGRlbGl2ZXJzIHRob3NlIG9uIHRoZSB2ZXJz
aW9uIG9mIFB5dGhvbgotICAgICAgICB3ZSdyZSBydW5uaW5nIGluLiIiIgotICAgICAgICBpZiBz
aXguUFkzOgotICAgICAgICAgICAgcmV0dXJuIHZpZXd3aGF0Ci0gICAgICAgIHJldHVybiAndmll
dycgKyB2aWV3d2hhdAotCiAgICAgZCA9IGRpY3QoemlwKHJhbmdlKDEwKSwgKHJhbmdlKDExLCAy
MCkpKSkKICAgICBmb3IgbmFtZSBpbiAia2V5cyIsICJ2YWx1ZXMiLCAiaXRlbXMiOgogICAgICAg
ICBtZXRoID0gZ2V0YXR0cihzaXgsICJ2aWV3IiArIG5hbWUpCkBAIC00NDAsOCArNDMzLDggQEAg
ZGVmIHRlc3RfYWR2YW5jZV9pdGVyYXRvcigpOgogICAgIGl0ID0gaXRlcihsKQogICAgIGFzc2Vy
dCBzaXgubmV4dChpdCkgPT0gMQogICAgIGFzc2VydCBzaXgubmV4dChpdCkgPT0gMgotICAgIHB5
LnRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKLSAgICBweS50ZXN0LnJh
aXNlcyhTdG9wSXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9w
SXRlcmF0aW9uLCBzaXgubmV4dCwgaXQpCisgICAgcHl0ZXN0LnJhaXNlcyhTdG9wSXRlcmF0aW9u
LCBzaXgubmV4dCwgaXQpCiAKIAogZGVmIHRlc3RfaXRlcmF0b3IoKToKQEAgLTQ4OSw3ICs0ODIs
NyBAQCBkZWYgdGVzdF9jcmVhdGVfdW5ib3VuZF9tZXRob2QoKToKICAgICBkZWYgZihzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYKICAgICB1ID0gc2l4LmNyZWF0ZV91bmJvdW5kX21ldGhvZChm
LCBYKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgdSkKKyAgICBweXRlc3QucmFpc2Vz
KFR5cGVFcnJvciwgdSkKICAgICBpZiBzaXguUFkyOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh1LCB0eXBlcy5NZXRob2RUeXBlKQogICAgIHggPSBYKCkKQEAgLTUzNywxMyArNTMwLDEzIEBA
IGRlZiB0ZXN0X3VuaWNocigpOgogCiBkZWYgdGVzdF9pbnQyYnl0ZSgpOgogICAgIGFzc2VydCBz
aXguaW50MmJ5dGUoMykgPT0gc2l4LmIoIlx4MDMiKQotICAgIHB5LnRlc3QucmFpc2VzKEV4Y2Vw
dGlvbiwgc2l4LmludDJieXRlLCAyNTYpCisgICAgcHl0ZXN0LnJhaXNlcyhFeGNlcHRpb24sIHNp
eC5pbnQyYnl0ZSwgMjU2KQogCiAKIGRlZiB0ZXN0X2J5dGUyaW50KCk6CiAgICAgYXNzZXJ0IHNp
eC5ieXRlMmludChzaXguYigiXHgwMyIpKSA9PSAzCiAgICAgYXNzZXJ0IHNpeC5ieXRlMmludChz
aXguYigiXHgwM1x4MDQiKSkgPT0gMwotICAgIHB5LnRlc3QucmFpc2VzKEluZGV4RXJyb3IsIHNp
eC5ieXRlMmludCwgc2l4LmIoIiIpKQorICAgIHB5dGVzdC5yYWlzZXMoSW5kZXhFcnJvciwgc2l4
LmJ5dGUyaW50LCBzaXguYigiIikpCiAKIAogZGVmIHRlc3RfYnl0ZXNpbmRleCgpOgpAQCAtNTU0
LDcgKzU0Nyw3IEBAIGRlZiB0ZXN0X2J5dGVzaXRlcigpOgogICAgIGl0ID0gc2l4Lml0ZXJieXRl
cyhzaXguYigiaGkiKSkKICAgICBhc3NlcnQgc2l4Lm5leHQoaXQpID09IG9yZCgiaCIpCiAgICAg
YXNzZXJ0IHNpeC5uZXh0KGl0KSA9PSBvcmQoImkiKQotICAgIHB5LnRlc3QucmFpc2VzKFN0b3BJ
dGVyYXRpb24sIHNpeC5uZXh0LCBpdCkKKyAgICBweXRlc3QucmFpc2VzKFN0b3BJdGVyYXRpb24s
IHNpeC5uZXh0LCBpdCkKIAogCiBkZWYgdGVzdF9TdHJpbmdJTygpOgpAQCAtNjg5LDcgKzY4Miw3
IEBAIGRlZiB0ZXN0X3ByaW50XygpOgogICAgIGFzc2VydCBvdXQuZmx1c2hlZAogCiAKLUBweS50
ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMiwgNikiKQorQHB5dGVz
dC5tYXJrLnNraXBpZigic3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDIsIDYpIikKIGRlZiB0ZXN0
X3ByaW50X2VuY29kaW5nKG1vbmtleXBhdGNoKToKICAgICAjIEZvb2wgdGhlIHR5cGUgY2hlY2tp
bmcgaW4gcHJpbnRfLgogICAgIG1vbmtleXBhdGNoLnNldGF0dHIoc2l4LCAiZmlsZSIsIHNpeC5C
eXRlc0lPLCByYWlzaW5nPUZhbHNlKQpAQCAtNzAxLDE2ICs2OTQsMTYgQEAgZGVmIHRlc3RfcHJp
bnRfZW5jb2RpbmcobW9ua2V5cGF0Y2gpOgogICAgIG91dCA9IHNpeC5CeXRlc0lPKCkKICAgICBv
dXQuZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgb3V0LmVycm9ycyA9ICJzdHJpY3QiCi0gICAgcHku
dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgucHJpbnRfLCBzaXgudSgiXHUwNTNj
IiksIGZpbGU9b3V0KQorICAgIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzaXgu
cHJpbnRfLCBzaXgudSgiXHUwNTNjIiksIGZpbGU9b3V0KQogICAgIG91dC5lcnJvcnMgPSAiYmFj
a3NsYXNocmVwbGFjZSIKICAgICBzaXgucHJpbnRfKHNpeC51KCJcdTA1M2MiKSwgZW5kPSIiLCBm
aWxlPW91dCkKICAgICBhc3NlcnQgb3V0LmdldHZhbHVlKCkgPT0gc2l4LmIoIlxcdTA1M2MiKQog
CiAKIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbnMoKToKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBl
RXJyb3IsIHNpeC5wcmludF8sIHg9MykKLSAgICBweS50ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNp
eC5wcmludF8sIGVuZD0zKQotICAgIHB5LnRlc3QucmFpc2VzKFR5cGVFcnJvciwgc2l4LnByaW50
Xywgc2VwPTQyKQorICAgIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCB4PTMp
CisgICAgcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IsIHNpeC5wcmludF8sIGVuZD0zKQorICAgIHB5
dGVzdC5yYWlzZXMoVHlwZUVycm9yLCBzaXgucHJpbnRfLCBzZXA9NDIpCiAKIAogZGVmIHRlc3Rf
d2l0aF9tZXRhY2xhc3MoKToKQEAgLTc0NCw3ICs3MzcsNTQgQEAgZGVmIHRlc3Rfd2l0aF9tZXRh
Y2xhc3MoKToKICAgICBhc3NlcnQgWS5fX21yb19fID09IChZLCBYLCBvYmplY3QpCiAKIAotQHB5
LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDApIikKK0BweXRl
c3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDIsIDcpIikKK2RlZiB0ZXN0
X3dpdGhfbWV0YWNsYXNzX3R5cGluZygpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHR5cGlu
ZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNraXAoInR5cGluZyBt
b2R1bGUgcmVxdWlyZWQiKQorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KToKKyAgICAgICAgIyBHZW5lcmljcyB3
aXRoIGN1c3RvbSBtZXRhY2xhc3NlcyB3ZXJlIGJyb2tlbiBvbiBvbGRlciB2ZXJzaW9ucy4KKyAg
ICAgICAgY2xhc3MgTWV0YShNZXRhLCB0eXBpbmcuR2VuZXJpY01ldGEpOgorICAgICAgICAgICAg
cGFzcworICAgIFQgPSB0eXBpbmcuVHlwZVZhcignVCcpCisgICAgY2xhc3MgRyhzaXgud2l0aF9t
ZXRhY2xhc3MoTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0pKToKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEdBKHNpeC53aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSwgdHlwaW5nLkdlbmVyaWNbVF0p
KToKKyAgICAgICAgcGFzcworICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNz
ZXJ0IGlzaW5zdGFuY2UoR0EsIGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHW2ludF0gaXMgbm90
IEdbR1tpbnRdXQorICAgIGFzc2VydCBHQVtpbnRdIGlzIG5vdCBHQVtHQVtpbnRdXQorICAgIGFz
c2VydCBHLl9fYmFzZXNfXyA9PSAodHlwaW5nLkdlbmVyaWMsKQorICAgIGFzc2VydCBHLl9fb3Jp
Z19iYXNlc19fID09ICh0eXBpbmcuR2VuZXJpY1tUXSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBp
Zigic3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykiKQorZGVmIHRlc3Rfd2l0aF9tZXRhY2xh
c3NfcGVwXzU2MCgpOgorICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIHBhc3MKKyAgICBj
bGFzcyBBOgorICAgICAgICBwYXNzCisgICAgY2xhc3MgQjoKKyAgICAgICAgcGFzcworICAgIGNs
YXNzIEZha2U6CisgICAgICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwgYmFzZXMpOgorICAg
ICAgICAgICAgcmV0dXJuIChBLCBCKQorICAgIGZha2UgPSBGYWtlKCkKKyAgICBjbGFzcyBHKHNp
eC53aXRoX21ldGFjbGFzcyhNZXRhLCBmYWtlKSk6CisgICAgICAgIHBhc3MKKyAgICBjbGFzcyBH
QShzaXgud2l0aF9tZXRhY2xhc3MoYWJjLkFCQ01ldGEsIGZha2UpKToKKyAgICAgICAgcGFzcwor
ICAgIGFzc2VydCBpc2luc3RhbmNlKEcsIE1ldGEpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoR0Es
IGFiYy5BQkNNZXRhKQorICAgIGFzc2VydCBHLl9fYmFzZXNfXyA9PSAoQSwgQikKKyAgICBhc3Nl
cnQgRy5fX29yaWdfYmFzZXNfXyA9PSAoZmFrZSwpCisKKworQHB5dGVzdC5tYXJrLnNraXBpZigi
c3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMCkiKQogZGVmIHRlc3Rfd2l0aF9tZXRhY2xhc3Nf
cHJlcGFyZSgpOgogICAgICIiIlRlc3QgdGhhdCB3aXRoX21ldGFjbGFzcyBjYXVzZXMgTWV0YS5f
X3ByZXBhcmVfXyB0byBiZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMuIiIiCiAK
QEAgLTg1Nyw3ICs4OTcsNyBAQCBkZWYgdGVzdF9hZGRfbWV0YWNsYXNzKCk6CiAgICAgYXNzZXJ0
IE15U2xvdHMuX19zbG90c19fID09IFsiYSIsICJiIl0KICAgICBpbnN0YW5jZSA9IE15U2xvdHMo
KQogICAgIGluc3RhbmNlLmEgPSAiZm9vIgotICAgIHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVy
cm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0
dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImMiLCAiYmF6IikKIAogICAgICMgVGVz
dCBhIGNsYXNzIHdpdGggc3RyaW5nIGZvciBzbG90cy4KICAgICBjbGFzcyBNeVN0cmluZ1Nsb3Rz
KG9iamVjdCk6CkBAIC04NjYsOCArOTA2LDggQEAgZGVmIHRlc3RfYWRkX21ldGFjbGFzcygpOgog
ICAgIGFzc2VydCBNeVN0cmluZ1Nsb3RzLl9fc2xvdHNfXyA9PSAiYWIiCiAgICAgaW5zdGFuY2Ug
PSBNeVN0cmluZ1Nsb3RzKCkKICAgICBpbnN0YW5jZS5hYiA9ICJmb28iCi0gICAgcHkudGVzdC5y
YWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGluc3RhbmNlLCAiYSIsICJiYXoiKQotICAg
IHB5LnRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5jZSwgImIiLCAi
YmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBpbnN0YW5j
ZSwgImEiLCAiYmF6IikKKyAgICBweXRlc3QucmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRy
LCBpbnN0YW5jZSwgImIiLCAiYmF6IikKIAogICAgIGNsYXNzIE15U2xvdHNXZWFrcmVmKG9iamVj
dCk6CiAgICAgICAgIF9fc2xvdHNfXyA9ICJfX3dlYWtyZWZfXyIsCkBAIC04NzUsNyArOTE1LDI3
IEBAIGRlZiB0ZXN0X2FkZF9tZXRhY2xhc3MoKToKICAgICBhc3NlcnQgdHlwZShNeVNsb3RzV2Vh
a3JlZikgaXMgTWV0YQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSBvciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkp
IikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpIikK
K2RlZiB0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkKCk6CisgICAgIyBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4L2lzc3Vlcy8yNTkKKyAgICBjbGFz
cyBNZXRhKHR5cGUpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBBOgorICAgICAgICBjbGFz
cyBCOiBwYXNzCisKKyAgICBleHBlY3RlZCA9ICd0ZXN0X2FkZF9tZXRhY2xhc3NfbmVzdGVkLjxs
b2NhbHM+LkEuQicKKworICAgIGFzc2VydCBBLkIuX19xdWFsbmFtZV9fID09IGV4cGVjdGVkCisK
KyAgICBjbGFzcyBBOgorICAgICAgICBAc2l4LmFkZF9tZXRhY2xhc3MoTWV0YSkKKyAgICAgICAg
Y2xhc3MgQjogcGFzcworCisgICAgYXNzZXJ0IEEuQi5fX3F1YWxuYW1lX18gPT0gZXhwZWN0ZWQK
KworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgyLCA3KSBv
ciBzeXMudmVyc2lvbl9pbmZvWzoyXSBpbiAoKDMsIDApLCAoMywgMSkpIikKIGRlZiB0ZXN0X2Fz
c2VydENvdW50RXF1YWwoKToKICAgICBjbGFzcyBUZXN0QXNzZXJ0Q291bnRFcXVhbCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtODg3LDcgKzk0Nyw3IEBA
IGRlZiB0ZXN0X2Fzc2VydENvdW50RXF1YWwoKToKICAgICBUZXN0QXNzZXJ0Q291bnRFcXVhbCgn
dGVzdCcpLnRlc3QoKQogCiAKLUBweS50ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZv
WzoyXSA8ICgyLCA3KSIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKCJzeXMudmVyc2lvbl9pbmZvWzoy
XSA8ICgyLCA3KSIpCiBkZWYgdGVzdF9hc3NlcnRSZWdleCgpOgogICAgIGNsYXNzIFRlc3RBc3Nl
cnRSZWdleCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAt
ODk5LDcgKzk1OSw3IEBAIGRlZiB0ZXN0X2Fzc2VydFJlZ2V4KCk6CiAgICAgVGVzdEFzc2VydFJl
Z2V4KCd0ZXN0JykudGVzdCgpCiAKIAotQHB5LnRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9u
X2luZm9bOjJdIDwgKDIsIDcpIikKK0BweXRlc3QubWFyay5za2lwaWYoInN5cy52ZXJzaW9uX2lu
Zm9bOjJdIDwgKDIsIDcpIikKIGRlZiB0ZXN0X2Fzc2VydFJhaXNlc1JlZ2V4KCk6CiAgICAgY2xh
c3MgVGVzdEFzc2VydFJhaXNlc1JlZ2V4KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVm
IHRlc3Qoc2VsZik6CkBAIC05MzIsMyArOTkyLDYxIEBAIGRlZiB0ZXN0X3B5dGhvbl8yX3VuaWNv
ZGVfY29tcGF0aWJsZSgpOgogICAgICAgICBhc3NlcnQgc3RyKG15X3Rlc3QpID09IHNpeC51KCJo
ZWxsbyIpCiAKICAgICBhc3NlcnQgZ2V0YXR0cihzaXgubW92ZXMuYnVpbHRpbnMsICdieXRlcycs
IHN0cikobXlfdGVzdCkgPT0gc2l4LmIoImhlbGxvIikKKworCitjbGFzcyBFbnN1cmVUZXN0czoK
KworICAgICMgZ3Jpbm5pbmcgZmFjZSBlbW9qaQorICAgIFVOSUNPREVfRU1PSkkgPSBzaXgudSgi
XFUwMDAxRjYwMCIpCisgICAgQklOQVJZX0VNT0pJID0gYiJceGYwXHg5Zlx4OThceDgwIgorCisg
ICAgZGVmIHRlc3RfZW5zdXJlX2JpbmFyeV9yYWlzZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAg
ICB3aXRoIHB5dGVzdC5yYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVf
c3RyKDgpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfYW5kX2VuY29kaW5nKHNlbGYpOgorICAgICAg
ICBzaXguZW5zdXJlX2JpbmFyeShzZWxmLlVOSUNPREVfRU1PSkksIGVuY29kaW5nPSdsYXRpbi0x
JywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVW5pY29kZUVu
Y29kZUVycm9yKToKKyAgICAgICAgICAgIHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9F
TU9KSSwgZW5jb2Rpbmc9J2xhdGluLTEnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgICBkZWYgdGVz
dF9lbnN1cmVfYmluYXJ5X3JhaXNlKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfYmluYXJ5KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04Jywg
ZXJyb3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9i
aW5hcnkoc2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0
JykKKyAgICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0
cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VN
T0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAj
IFBZMjogc3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0g
c2VsZi5CSU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBieXRlcworICAgICAgICAg
ICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFuZCBpc2lu
c3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBieXRlcykKKyAgICAgICAgICAgICMgUFkzOiBieXRl
cyAtPiBieXRlcworICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgYnl0ZXMpCisKKyAg
ICBkZWYgdGVzdF9lbnN1cmVfc3RyKHNlbGYpOgorICAgICAgICBjb252ZXJ0ZWRfdW5pY29kZSA9
IHNpeC5lbnN1cmVfc3RyKHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJy
b3JzPSdzdHJpY3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV9zdHIo
c2VsZi5CSU5BUllfRU1PSkksIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0nc3RyaWN0JykKKyAg
ICAgICAgaWYgc2l4LlBZMjoKKyAgICAgICAgICAgICMgUFkyOiB1bmljb2RlIC0+IHN0cgorICAg
ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuQklOQVJZX0VNT0pJIGFu
ZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCisgICAgICAgICAgICAjIFBZMjog
c3RyIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5C
SU5BUllfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX2JpbmFyeSwgc3RyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBQWTM6IHN0ciAtPiBzdHIKKyAgICAgICAgICAgIGFzc2Vy
dCBjb252ZXJ0ZWRfdW5pY29kZSA9PSBzZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2Uo
Y29udmVydGVkX3VuaWNvZGUsIHN0cikKKyAgICAgICAgICAgICMgUFkzOiBieXRlcyAtPiBzdHIK
KyAgICAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfYmluYXJ5ID09IHNlbGYuVU5JQ09ERV9FTU9K
SSBhbmQgaXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorCisgICAgZGVmIHRlc3Rf
ZW5zdXJlX3RleHQoc2VsZik6CisgICAgICAgIGNvbnZlcnRlZF91bmljb2RlID0gc2l4LmVuc3Vy
ZV90ZXh0KHNlbGYuVU5JQ09ERV9FTU9KSSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJp
Y3QnKQorICAgICAgICBjb252ZXJ0ZWRfYmluYXJ5ID0gc2l4LmVuc3VyZV90ZXh0KHNlbGYuQklO
QVJZX0VNT0pJLCBlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9J3N0cmljdCcpCisgICAgICAgIGlm
IHNpeC5QWTI6CisgICAgICAgICAgICAjIFBZMjogdW5pY29kZSAtPiB1bmljb2RlCisgICAgICAg
ICAgICBhc3NlcnQgY29udmVydGVkX3VuaWNvZGUgPT0gc2VsZi5VTklDT0RFX0VNT0pJIGFuZCBp
c2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCB1bmljb2RlKQorICAgICAgICAgICAgIyBQWTI6
IHN0ciAtPiB1bmljb2RlCisgICAgICAgICAgICBhc3NlcnQgY29udmVydGVkX2JpbmFyeSA9PSBz
ZWxmLlVOSUNPREVfRU1PSkkgYW5kIGlzaW5zdGFuY2UoY29udmVydGVkX3VuaWNvZGUsIHVuaWNv
ZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFBZMzogc3RyIC0+IHN0cgorICAgICAg
ICAgICAgYXNzZXJ0IGNvbnZlcnRlZF91bmljb2RlID09IHNlbGYuVU5JQ09ERV9FTU9KSSBhbmQg
aXNpbnN0YW5jZShjb252ZXJ0ZWRfdW5pY29kZSwgc3RyKQorICAgICAgICAgICAgIyBQWTM6IGJ5
dGVzIC0+IHN0cgorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9iaW5hcnkgPT0gc2VsZi5V
TklDT0RFX0VNT0pJIGFuZCBpc2luc3RhbmNlKGNvbnZlcnRlZF91bmljb2RlLCBzdHIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3NpeC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9n
CmluZGV4IDcwOTRkZjgyMzQyMmVkNDgzMjAzZDU2N2EwN2I1YjhhNDIxMTkzMWQuLmYwZjIyY2Ey
ZDZjMzRjMzVhMzM4YWUxN2EyNzEyNDIxYTM1NWVjZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCkBAIC0xNyw3ICsxNyw2
IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvQ0hBTkdFUwogL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3NpeC9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L1BLRy1JTkZPCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVB
RE1FLnJzdAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLmNmZwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVwLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Rv
eC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RveC5pbmkKaW5kZXggZTg2NzNkYjBhNjlhZTQ2OTVlN2IxZmExNTJjNTMzYWExYjBmOThkMS4u
YmJlYzFhZmJiNmRkMmZkNmMwNDIyZWQ4OTNlMDlhYTJmYzlmMzhjMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94
LmluaQpAQCAtMSw2ICsxLDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkz
NyxweXB5LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkzNixweTM3fS1teXB5
CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweTM4LHtweTI3LHB5MzUscHkzNixweTM3
LHB5Mzh9LWZsYWtlOCx7cHkzNSxweTM2LHB5MzcscHkzOH0tbXlweQogc2tpcHNkaXN0PVRydWUK
K3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxzZQogCiBbdGVzdGVudl0KIGRlcHMgPQpA
QCAtMTQsNyArMTUsNyBAQCBkZXBzID0KICAganNvbi1lCiAgIGpzb25zY2hlbWEKIAotY29tbWFu
ZHMgPSBweXRlc3Qge3Bvc2FyZ3N9Citjb21tYW5kcyA9IHB5dGVzdCAtLWNvdj10b29scyAtLWNv
di1yZXBvcnQ9dGVybSB7cG9zYXJnc30KIAogcGFzc2VudiA9CiAgIEhZUE9USEVTSVNfUFJPRklM
RQpAQCAtMjcsMTUgKzI4LDE5IEBAIGNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17
dG94aW5pZGlyfS9weTI3LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzUtZmxh
a2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4
IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citj
b21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5p
bmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52OnB5MzYtZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5p
ZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bvc2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVu
ZC1jb25maWc9e3RveGluaWRpcn0vcHkzLWZsYWtlOC5pbmkge3Bvc2FyZ3N9CiAKIFt0ZXN0ZW52
OnB5MzctZmxha2U4XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKLWNvbW1hbmRz
ID0gZmxha2U4IC0tYXBwZW5kLWNvbmZpZz17dG94aW5pZGlyfS9weTM2LWZsYWtlOC5pbmkge3Bv
c2FyZ3N9Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkz
LWZsYWtlOC5pbmkge3Bvc2FyZ3N9CisKK1t0ZXN0ZW52OnB5MzgtZmxha2U4XQorZGVwcyA9IC1y
cmVxdWlyZW1lbnRzX2ZsYWtlOC50eHQKK2NvbW1hbmRzID0gZmxha2U4IC0tYXBwZW5kLWNvbmZp
Zz17dG94aW5pZGlyfS9weTMtZmxha2U4LmluaSB7cG9zYXJnc30KIAogW3Rlc3RlbnY6cHkzNS1t
eXB5XQogZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0CkBAIC01NCwzICs1OSw5IEBAIGRl
cHMgPSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAogY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4K
IGNvbW1hbmRzID0KICAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0t
bm8taW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0
b29scy5naXRpZ25vcmUKKworW3Rlc3RlbnY6cHkzOC1teXB5XQorZGVwcyA9IC1ycmVxdWlyZW1l
bnRzX215cHkudHh0CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29tbWFuZHMgPQorICBt
eXB5IC0tY29uZmlnLWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAt
LXB5MiAtcCB0b29scy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cKaW5kZXggYzRjMWJjMjVjOGZkNDg5MzQ2M2I0
ZTEzYmQ4YjU0N2U2N2ZjZWM2Ny4uYzY3MjI5NDA2YmFhMjczZTQ3YzhmOGU0ZWNiZTc0NDlhY2Q5
ZjljNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCkBAIC0yMCw3ICsyMCw3IEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9teXB5LmluaQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHkyNy1mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weTM2LWZsYWtlOC5pbmkKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5My1mbGFrZTgu
aW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXRlc3QuaW5pCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9yZXF1aXJlbWVudHNfZmxha2U4LnR4dAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX215cHkudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRy
aXZlci93ZWJkcml2ZXIvY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5weQppbmRleCAw
YzViYmZmNTYyOTg2OGZkYzQ4YTFhNDFjZjg4MmZhYmU1NjE3YzFiLi42NThlZDBlMDBmOGEzNDQ5
NDE2NzNlZWQ2NzFiYTlkZTMxNzg1OGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKQEAgLTM3MywxMCArMzczLDggQEAgY2xh
c3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICAgICAgICAgICBwb3J0LAogICAgICAgICAgICAg
ICAgICB1cmxfcHJlZml4PSIvIiwKICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzPU5vbmUs
Ci0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVBy
b3RvY29sKAotICAgICAgICAgICAgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeCwgdGltZW91dD10aW1l
b3V0KQorICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5IVFRQV2lyZVByb3RvY29s
KGhvc3QsIHBvcnQsIHVybF9wcmVmaXgpCiAgICAgICAgIHNlbGYucmVxdWVzdGVkX2NhcGFiaWxp
dGllcyA9IGNhcGFiaWxpdGllcwogICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IE5vbmUKICAg
ICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQpAQCAtNDQ2LDcgKzQ0NCw3IEBAIGNsYXNzIFNl
c3Npb24ob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2Vzc2lv
bl9pZCA9IE5vbmUKIAotICAgIGRlZiBzZW5kX2NvbW1hbmQoc2VsZiwgbWV0aG9kLCB1cmwsIGJv
ZHk9Tm9uZSk6CisgICAgZGVmIHNlbmRfY29tbWFuZChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gdGhlIHJlbW90ZSBlbmQgYW5kIHZhbGlkYXRlIGl0cyBzdWNjZXNzLgogCkBAIC00NjcsNyAr
NDY1LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYu
dHJhbnNwb3J0LnNlbmQoCiAgICAgICAgICAgICBtZXRob2QsIHVybCwgYm9keSwKICAgICAgICAg
ICAgIGVuY29kZXI9cHJvdG9jb2wuRW5jb2RlciwgZGVjb2Rlcj1wcm90b2NvbC5EZWNvZGVyLAot
ICAgICAgICAgICAgc2Vzc2lvbj1zZWxmKQorICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLCB0aW1l
b3V0PXRpbWVvdXQpCiAKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDoKICAgICAg
ICAgICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC00OTUsNyArNDkz
LDcgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiB2YWx1ZQogCi0g
ICAgZGVmIHNlbmRfc2Vzc2lvbl9jb21tYW5kKHNlbGYsIG1ldGhvZCwgdXJpLCBib2R5PU5vbmUp
OgorICAgIGRlZiBzZW5kX3Nlc3Npb25fY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1O
b25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgU2VuZCBhIGNvbW1hbmQg
dG8gYW4gZXN0YWJsaXNoZWQgc2Vzc2lvbiBhbmQgdmFsaWRhdGUgaXRzIHN1Y2Nlc3MuCiAKQEAg
LTUxMiw3ICs1MTAsNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAgICAgICAgICBhbiBl
cnJvci4KICAgICAgICAgIiIiCiAgICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oInNlc3Np
b24vJXMvIiAlIHNlbGYuc2Vzc2lvbl9pZCwgdXJpKQotICAgICAgICByZXR1cm4gc2VsZi5zZW5k
X2NvbW1hbmQobWV0aG9kLCB1cmwsIGJvZHkpCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29t
bWFuZChtZXRob2QsIHVybCwgYm9keSwgdGltZW91dCkKIAogICAgIEBwcm9wZXJ0eQogICAgIEBj
b21tYW5kCkBAIC03MzcsNiArNzM1LDEwIEBAIGNsYXNzIEVsZW1lbnQob2JqZWN0KToKICAgICBk
ZWYgc2VsZWN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfZWxlbWVudF9jb21t
YW5kKCJHRVQiLCAic2VsZWN0ZWQiKQogCisgICAgQGNvbW1hbmQKKyAgICBkZWYgc2NyZWVuc2hv
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIs
ICJzY3JlZW5zaG90IikKKwogICAgIEBjb21tYW5kCiAgICAgZGVmIGF0dHJpYnV0ZShzZWxmLCBu
YW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9lbGVtZW50X2NvbW1hbmQoIkdFVCIsICJh
dHRyaWJ1dGUvJXMiICUgbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci9wcm90b2NvbC5weQppbmRleCAxOGEzZDUyYzhhM2I1MzdiYTc1ZDQ4
N2ZkN2Y2YzVjZGUyMDZlYzNlLi5jODExZjZmMjZkYjc5MDhjYWU1MjhkMDRkMjVkNjg4Mjc4NGU3
NGExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJp
dmVyL3Byb3RvY29sLnB5CkBAIC0yLDYgKzIsOCBAQCBpbXBvcnQganNvbgogCiBpbXBvcnQgd2Vi
ZHJpdmVyCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKKwogCiAiIiJXZWJEcml2ZXIgd2ly
ZSBwcm90b2NvbCBjb2RlY3MuIiIiCiAKQEAgLTM5LDUgKzQxLDUgQEAgY2xhc3MgRGVjb2Rlcihq
c29uLkpTT05EZWNvZGVyKToKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBheWxvYWQsIGRpY3Qp
IGFuZCB3ZWJkcml2ZXIuV2luZG93LmlkZW50aWZpZXIgaW4gcGF5bG9hZDoKICAgICAgICAgICAg
IHJldHVybiB3ZWJkcml2ZXIuV2luZG93LmZyb21fanNvbihwYXlsb2FkLCBzZWxmLnNlc3Npb24p
CiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBkaWN0KToKLSAgICAgICAgICAgIHJl
dHVybiB7azogc2VsZi5vYmplY3RfaG9vayh2KSBmb3IgaywgdiBpbiBwYXlsb2FkLml0ZXJpdGVt
cygpfQorICAgICAgICAgICAgcmV0dXJuIHtrOiBzZWxmLm9iamVjdF9ob29rKHYpIGZvciBrLCB2
IGluIGl0ZXJpdGVtcyhwYXlsb2FkKX0KICAgICAgICAgcmV0dXJuIHBheWxvYWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2Vi
ZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5
CmluZGV4IDMyYmEzMWEyYWU5YTk5NmE1YzU3ZmQwNDA2MTI5M2YzMTdlNWJmMDQuLmY4MTdlYzgx
YTk2ZmI5M2NjNWM2MDE1NGYwNTdkNzJlOTgzNzU2OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZl
ci90cmFuc3BvcnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSwxMiAr
MSwxMiBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBzZWxlY3QKKworZnJvbSBzaXggaW1wb3J0IHRl
eHRfdHlwZSwgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5l
Y3Rpb24KIGZyb20gc2l4Lm1vdmVzLnVybGxpYiBpbXBvcnQgcGFyc2UgYXMgdXJscGFyc2UKLWZy
b20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudCBhcyBodHRwbGliCiAKIGZyb20gLiBpbXBv
cnQgZXJyb3IKIAotZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQotCiAiIiJJbXBsZW1lbnRzIEhU
VFAgdHJhbnNwb3J0IGZvciB0aGUgV2ViRHJpdmVyIHdpcmUgcHJvdG9jb2wuIiIiCiAKIApAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICMg
PT4gd2ViZHJpdmVyLkVsZW1lbnQKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0LCB1cmxfcHJlZml4PSIvIiwgdGltZW91dD1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgcG9ydCwgdXJsX3ByZWZpeD0iLyIpOgogICAgICAgICAiIiIKICAgICAg
ICAgQ29uc3RydWN0IGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSByZW1vdGUg
c2VydmVyLgogCkBAIC04NSw5ICs4NSw4IEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0
KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAg
ICAgICAgIHNlbGYudXJsX3ByZWZpeCA9IHVybF9wcmVmaXgKLQogICAgICAgICBzZWxmLl9jb25u
ID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dAorICAgICAgICBzZWxmLl9s
YXN0X3JlcXVlc3RfaXNfYmxvY2tlZCA9IEZhbHNlCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToK
ICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMDIsMTEgKzEwMSwxMSBAQCBjbGFzcyBIVFRQV2ly
ZVByb3RvY29sKG9iamVjdCk6CiAgICAgICAgICIiIkdldHMgdGhlIGN1cnJlbnQgSFRUUCBjb25u
ZWN0aW9uLCBvciBsYXppbHkgY3JlYXRlcyBvbmUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
b25uOgogICAgICAgICAgICAgY29ubl9rd2FyZ3MgPSB7fQotICAgICAgICAgICAgaWYgc2VsZi5f
dGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBjb25uX2t3YXJnc1sidGltZW91
dCJdID0gc2VsZi5fdGltZW91dAotCi0gICAgICAgICAgICBzZWxmLl9jb25uID0gaHR0cGxpYi5I
VFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3Ry
aWN0PVRydWUsICoqY29ubl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBub3QgUFkzOgorICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJzdHJpY3QiXSA9IFRydWUKKyAgICAgICAgICAgICMgV2Ug
YXJlIG5vdCBzZXR0aW5nIGFuIEhUVFAgdGltZW91dCBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IHdo
ZW4gdGhlCisgICAgICAgICAgICAjIGNvbm5lY3Rpb24gaXRzIGNyZWF0ZWQuIFRoZSBzZW5kIG1l
dGhvZCBoYXMgYSB0aW1lb3V0IHZhbHVlIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIHNlbGYuX2Nv
bm4gPSBIVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QsIHNlbGYucG9ydCwgKipjb25uX2t3YXJncykK
IAogICAgICAgICByZXR1cm4gc2VsZi5fY29ubgogCkBAIC0xMjQsNiArMTIzLDcgQEAgY2xhc3Mg
SFRUUFdpcmVQcm90b2NvbChvYmplY3QpOgogICAgICAgICAgICAgIGhlYWRlcnM9Tm9uZSwKICAg
ICAgICAgICAgICBlbmNvZGVyPWpzb24uSlNPTkVuY29kZXIsCiAgICAgICAgICAgICAgZGVjb2Rl
cj1qc29uLkpTT05EZWNvZGVyLAorICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKICAgICAgICAg
ICAgICAqKmNvZGVjX2t3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBTZW5kIGEgY29tbWFu
ZCB0byB0aGUgcmVtb3RlLgpAQCAtMTcyLDEwICsxNzIsMTggQEAgY2xhc3MgSFRUUFdpcmVQcm90
b2NvbChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZhaWxlZCB0
byBlbmNvZGUgcmVxdWVzdCBib2R5IGFzIEpTT046XG4iCiAgICAgICAgICAgICAgICAgICAgICIl
cyIgJSBqc29uLmR1bXBzKGJvZHksIGluZGVudD0yKSkKIAotICAgICAgICByZXNwb25zZSA9IHNl
bGYuX3JlcXVlc3QobWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnMpCisgICAgICAgICMgV2hl
biB0aGUgdGltZW91dCB0cmlnZ2VycywgdGhlIFRlc3RSdW5uZXJNYW5hZ2VyIHRocmVhZCB3aWxs
IHJldXNlCisgICAgICAgICMgdGhpcyBjb25uZWN0aW9uIHRvIGNoZWNrIGlmIHRoZSBXZWJEcml2
ZXIgaXRzIGFsaXZlIGFuZCB3ZSBtYXkgZW5kCisgICAgICAgICMgcmFpc2luZyBhbiBodHRwbGli
LkNhbm5vdFNlbmRSZXF1ZXN0IGV4Y2VwdGlvbiBpZiB0aGUgV2ViRHJpdmVyIGlzCisgICAgICAg
ICMgbm90IHJlc3BvbmRpbmcgYW5kIHRoaXMgaHR0cGxpYi5yZXF1ZXN0KCkgY2FsbCBpcyBibG9j
a2VkIG9uIHRoZQorICAgICAgICAjIHJ1bm5lciB0aHJlYWQuIFdlIHVzZSB0aGUgYm9vbGVhbiBi
ZWxvdyB0byBjaGVjayBmb3IgdGhhdCBhbmQgcmVzdGFydAorICAgICAgICAjIHRoZSBjb25uZWN0
aW9uIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5fbGFzdF9yZXF1ZXN0X2lzX2Jsb2NrZWQg
PSBUcnVlCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fcmVxdWVzdChtZXRob2QsIHVyaSwgcGF5
bG9hZCwgaGVhZGVycywgdGltZW91dD1Ob25lKQorICAgICAgICBzZWxmLl9sYXN0X3JlcXVlc3Rf
aXNfYmxvY2tlZCA9IEZhbHNlCiAgICAgICAgIHJldHVybiBSZXNwb25zZS5mcm9tX2h0dHAocmVz
cG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipjb2RlY19rd2FyZ3MpCiAKLSAgICBkZWYgX3JlcXVl
c3Qoc2VsZiwgbWV0aG9kLCB1cmksIHBheWxvYWQsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIF9y
ZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUsIHRpbWVvdXQ9
Tm9uZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90eXBlKToKICAgICAg
ICAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgidXRmLTgiKQogCkBAIC0xODUsMTAgKzE5
MywyMyBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6CiAKICAgICAgICAgdXJsID0g
c2VsZi51cmwodXJpKQogCi0gICAgICAgIGlmIHNlbGYuX2hhc191bnJlYWRfZGF0YSgpOgorICAg
ICAgICBpZiBzZWxmLl9sYXN0X3JlcXVlc3RfaXNfYmxvY2tlZCBvciBzZWxmLl9oYXNfdW5yZWFk
X2RhdGEoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgICAgIHNlbGYuY29ubmVj
dGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBwYXlsb2FkLCBoZWFkZXJzKQotICAgICAgICByZXR1
cm4gc2VsZi5jb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKKworICAgICAgICAjIHRpbWVvdXQgZm9y
IHJlcXVlc3QgaGFzIHRvIGJlIHNldCBqdXN0IGJlZm9yZSBjYWxsaW5nIGh0dHBsaWIuZ2V0cmVz
cG9uc2UoKQorICAgICAgICAjIGFuZCB0aGUgcHJldmlvdXMgdmFsdWUgcmVzdG9yZWQganVzdCBh
ZnRlciB0aGF0LCBldmVuIG9uIGV4Y2VwdGlvbiByYWlzZWQKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgaWYgdGltZW91dDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c190aW1lb3V0ID0gc2Vs
Zi5fY29ubi5nZXR0aW1lb3V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25uLnNldHRpbWVv
dXQodGltZW91dCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5jb25uZWN0aW9uLmdldHJl
c3BvbnNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQ6CisgICAg
ICAgICAgICAgICAgc2VsZi5fY29ubi5zZXR0aW1lb3V0KHByZXZpb3VzX3RpbWVvdXQpCisKKyAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgX2hhc191bnJlYWRfZGF0YShzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm4gYW5kIHNlbGYuX2Nvbm4uc29jayBhbmQgc2VsZWN0
LnNlbGVjdChbc2VsZi5fY29ubi5zb2NrXSwgW10sIFtdLCAwKVswXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYW5kcm9p
ZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2FuZHJvaWQucHkKaW5kZXggNTFkZWI3MWUzMTY1MzgxNDhlMDZiMTQ2YmNhNzU1NWZiN2Iw
NDZkZi4uNzQ0ZTEzNGQzODI2ZWFmZmViYTYzODc3MTNhMmNiMTMyYWUxYTlkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
YW5kcm9pZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdC9hbmRyb2lkLnB5CkBAIC04OSw4ICs4OSw4IEBAIGRlZiBpbnN0YWxsX2Fu
ZHJvaWRfcGFja2FnZXMobG9nZ2VyLCBzZGtfcGF0aCwgbm9fcHJvbXB0PUZhbHNlKToKIAogICAg
ICNUT0RPOiBOb3Qgc3VyZSB3aGF0J3MgcmVhbGx5IG5lZWRlZCBoZXJlCiAgICAgcGFja2FnZXMg
PSBbInBsYXRmb3JtLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAiYnVpbGQtdG9vbHM7MjguMC4z
IiwKLSAgICAgICAgICAgICAgICAicGxhdGZvcm1zO2FuZHJvaWQtMjgiLAorICAgICAgICAgICAg
ICAgICJidWlsZC10b29sczsyOS4wLjMiLAorICAgICAgICAgICAgICAgICJwbGF0Zm9ybXM7YW5k
cm9pZC0yOSIsCiAgICAgICAgICAgICAgICAgImVtdWxhdG9yIl0KIAogICAgICMgVE9ETzogbWFr
ZSB0aGlzIHdvcmsgbm9uLWludGVybmFjdGl2ZWx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nl
ci5weQppbmRleCAzZWU5OGQ5NTllYzViZWZjNThiODg0ZTBlYzUzODVkNTU0YmM4NzI1Li4zNjZk
Yzc4MWQ5MGVlMjFiODIwYjkzMzRjNjllZGUyYzQ1MWNiNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0L2Jyb3dzZXIucHkKQEAgLTYsMjAgKzYsMTkgQEAgaW1wb3J0IHN0YXQKIGltcG9ydCBlcnJu
bwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVybHBhcnNlCiBm
cm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5k
X2V4ZWN1dGFibGUKIAorZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxp
dAogaW1wb3J0IHJlcXVlc3RzCiAKLWZyb20gdXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIs
IHVuemlwCitmcm9tIC51dGlscyBpbXBvcnQgY2FsbCwgZ2V0LCB1bnRhciwgdW56aXAKIAogdW5h
bWUgPSBwbGF0Zm9ybS51bmFtZSgpCiAKICMgdGhlIHJvb3RVcmwgZm9yIHRoZSBmaXJlZm94LWNp
IGRlcGxveW1lbnQgb2YgVGFza2NsdXN0ZXIKLSMgKGFmdGVyIE5vdmVtYmVyIDksIGh0dHBzOi8v
ZmlyZWZveC1jaS10Yy5zZXJ2aWNlcy5tb3ppbGxhLmNvbS8pCi1GSVJFRk9YX0NJX1JPT1RfVVJM
ID0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JworRklSRUZPWF9DSV9ST09UX1VSTCA9ICdodHRw
czovL2ZpcmVmb3gtY2ktdGMuc2VydmljZXMubW96aWxsYS5jb20nCiAKIAogZGVmIF9nZXRfZmls
ZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CkBAIC00MSw2ICs0MCwyMyBAQCBkZWYgaGFu
ZGxlX3JlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBleGMpOgogICAgICAgICByYWlzZQogCiAK
K2RlZiBnZXRfZXh0KGZpbGVuYW1lKToKKyAgICAiIiJHZXQgdGhlIGV4dGVuc2lvbiBmcm9tIGEg
ZmlsZW5hbWUgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciAudGFyLmZvbyIiIgorICAgIG5hbWUs
IGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgaWYgbmFtZS5lbmRzd2l0aCgi
LnRhciIpOgorICAgICAgICBleHQgPSAiLnRhciVzIiAlIGV4dAorICAgIHJldHVybiBleHQKKwor
CitkZWYgZ2V0X3Rhc2tjbHVzdGVyX2FydGlmYWN0KGluZGV4LCBwYXRoKToKKyAgICBUQ19JTkRF
WF9CQVNFID0gRklSRUZPWF9DSV9ST09UX1VSTCArICIvYXBpL2luZGV4L3YxLyIKKworICAgIHJl
c3AgPSBnZXQoVENfSU5ERVhfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJSAoaW5kZXgs
IHBhdGgpKQorICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisKKyAgICByZXR1cm4gcmVzcAor
CisKIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQog
CkBAIC00OCw4ICs2NCwxMyBAQCBjbGFzcyBCcm93c2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
bG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZG93bmxvYWQo
c2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgotICAgICAgICAiIiJEb3dubG9hZCBhIHBh
Y2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlciIiIgorICAgIGRlZiBkb3dubG9hZChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgorICAgICAgICAiIiJE
b3dubG9hZCBhIHBhY2thZ2Ugb3IgaW5zdGFsbGVyIGZvciB0aGUgYnJvd3NlcgorICAgICAgICA6
cGFyYW0gZGVzdDogRGlyZWN0b3J5IGluIHdoaWNoIHRvIHB1dCB0aGUgZG93bG9hZGVkIHBhY2th
Z2UKKyAgICAgICAgOnBhcmFtIGNoYW5uZWw6IEJyb3dzZXIgY2hhbm5lbCB0byBkb3dubG9hZAor
ICAgICAgICA6cGFyYW0gcmVuYW1lOiBPcHRpb25hbCBuYW1lIGZvciB0aGUgZG93bmxvYWRlZCBw
YWNrYWdlOyB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGlz
IHByZXNlcnZlZC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAog
CiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0xMzMsNyArMTU0LDcgQEAgY2xhc3MgRmlyZWZveChC
cm93c2VyKToKIAogICAgICAgICByZXR1cm4gZGVzdAogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYs
IGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHByb2R1
Y3QgPSB7CiAgICAgICAgICAgICAibmlnaHRseSI6ICJmaXJlZm94LW5pZ2h0bHktbGF0ZXN0LXNz
bCIsCiAgICAgICAgICAgICAiYmV0YSI6ICJmaXJlZm94LWJldGEtbGF0ZXN0LXNzbCIsCkBAIC0x
NjEsNyArMTgyLDcgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0
dHBzOi8vZG93bmxvYWQubW96aWxsYS5vcmcvP3Byb2R1Y3Q9JXMmb3M9JXMmbGFuZz1lbi1VUyIg
JSAocHJvZHVjdFtjaGFubmVsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NfYnVpbGRzW29zX2tl
eV0pCiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIEZpcmVmb3ggZnJvbSAl
cyIgJSB1cmwpCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQodXJsKQorICAgICAgICByZXNw
ID0gZ2V0KHVybCkKIAogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKIApAQCAtMTcyLDExICsxOTMs
MTQgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lc1swXQogCiAgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZp
bGVuYW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlb
MV0KKyAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMV0KIAogICAgICAgICBpZiBub3QgZmlsZW5hbWU6CiAgICAgICAgICAgICBmaWxl
bmFtZSA9ICJmaXJlZm94LnRhci5iejIiCiAKKyAgICAgICAgaWYgcmVuYW1lOgorICAgICAgICAg
ICAgZmlsZW5hbWUgPSAiJXMlcyIgJSAocmVuYW1lLCBnZXRfZXh0KGZpbGVuYW1lKSkKKwogICAg
ICAgICBpbnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKIAogICAg
ICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CkBAIC0zNjMsMTQgKzM4
NywxNCBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICB0YWdzID0gY2FsbCgiZ2l0
IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAiLS1yZWZzIiwKICAgICAgICAgICAgICAgICAgICAg
Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvZHJpdmVyLmdpdCIpCiAgICAgICAgIHJl
bGVhc2VfcmUgPSByZS5jb21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4oXGQrKVwuKFxkKyki
KQotICAgICAgICBsYXRlc3RfcmVsZWFzZSA9IDAKKyAgICAgICAgbGF0ZXN0X3JlbGVhc2UgPSAo
MCwwLDApCiAgICAgICAgIGZvciBpdGVtIGluIHRhZ3Muc3BsaXQoIlxuIik6CiAgICAgICAgICAg
ICBtID0gcmVsZWFzZV9yZS5tYXRjaChpdGVtKQogICAgICAgICAgICAgaWYgbToKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gW2ludChpdGVtKSBmb3IgaXRlbSBpbiBtLmdyb3VwcygpXQorICAg
ICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShpbnQoaXRlbSkgZm9yIGl0ZW0gaW4gbS5ncm91
cHMoKSkKICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uID4gbGF0ZXN0X3JlbGVhc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGxhdGVzdF9yZWxlYXNlID0gdmVyc2lvbgotICAgICAgICBhc3NlcnQg
bGF0ZXN0X3JlbGVhc2UgIT0gMAorICAgICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2UgIT0gKDAs
MCwwKQogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKICAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgpAQCAtMzk3LDMy
ICs0MjEsMzIgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgcmV0dXJuIGZpbmRf
ZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyIikpCiAKICAgICBkZWYg
aW5zdGFsbF9nZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgotICAgICAgICBpbXBvcnQg
dGFyZmlsZQotICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKICAgICAgICAgc2VsZi5sb2dnZXIu
aW5mbygiQXR0ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5pZ2h0bHkiKQorCisg
ICAgICAgIHBsYXRmb3JtX2JpdHMgPSAoIjY0IiBpZiB1bmFtZVs0XSA9PSAieDg2XzY0IiBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgKCIzMiIgaWYgc2VsZi5wbGF0Zm9ybSA9PSAid2lu
IiBlbHNlICIiKSkKKyAgICAgICAgdGNfcGxhdGZvcm0gPSAiJXMlcyIgJSAoc2VsZi5wbGF0Zm9y
bSwgcGxhdGZvcm1fYml0cykKKworICAgICAgICBhcmNoaXZlX2V4dCA9ICIuemlwIiBpZiB1bmFt
ZVswXSA9PSAiV2luZG93cyIgZWxzZSAiLnRhci5neiIKKyAgICAgICAgYXJjaGl2ZV9uYW1lID0g
InB1YmxpYy9nZWNrb2RyaXZlciVzIiAlIGFyY2hpdmVfZXh0CisKICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcyA9IG1vemRvd25sb2FkLkRhaWx5U2NyYXBlcihicmFuY2g9Im1vemlsbGEtY2Vu
dHJhbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bj0iY29tbW9uLnRlc3RzLnRhci5neiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uPWRlc3QpCi0gICAgICAgICAgICBwYWNrYWdlX3BhdGggPSBz
LmRvd25sb2FkKCkKLSAgICAgICAgZXhjZXB0IG1vemRvd25sb2FkLmVycm9ycy5Ob3RGb3VuZEVy
cm9yOgorICAgICAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rlcl9hcnRpZmFjdCgKKyAgICAg
ICAgICAgICAgICAiZ2Vja28udjIubW96aWxsYS1jZW50cmFsLmxhdGVzdC5nZWNrb2RyaXZlci4l
cyIgJSB0Y19wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICBhcmNoaXZlX25hbWUpCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJHZWNrb2Ry
aXZlciBkb3dubG9hZCBmYWlsZWQiKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZXhlX3N1ZmZpeCA9ICIuZXhlIiBpZiB1bmFtZVswXSA9PSAiV2luZG93
cyIgZWxzZSAiIgotICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4ocGFja2FnZV9wYXRoLCAi
ciIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtZW1i
ZXIgPSBmLmdldG1lbWJlcigiYmluJXNnZWNrb2RyaXZlciVzIiAlIChvcy5wYXRoLnNlcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlX3N1ZmZpeCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAjIFJlbW92ZSBiaW4vIGZy
b20gdGhlIHBhdGguCi0gICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKG1lbWJlci5uYW1lKQotICAgICAgICAgICAgICAgIGYuZXh0cmFjdGFsbChtZW1iZXJzPVtt
ZW1iZXJdLCBwYXRoPWRlc3QpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihk
ZXN0LCBtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkV4dHJhY3Rl
ZCBnZWNrb2RyaXZlciB0byAlcyIgJSBwYXRoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgb3MudW5saW5rKHBhY2thZ2VfcGF0aCkKKyAgICAgICAgaWYgYXJjaGl2ZV9leHQgPT0gIi56
aXAiOgorICAgICAgICAgICAgdW56aXAocmVzcC5yYXcsIGRlc3QpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICB1bnRhcihyZXNwLnJhdywgZGVzdCkKKworICAgICAgICBleGVfZXh0ID0gIi5l
eGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4oZGVzdCwgImdlY2tvZHJpdmVyJXMiICUgZXhlX2V4dCkKKworICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJFeHRyYWN0ZWQgZ2Vja29kcml2ZXIgdG8gJXMiICUgcGF0aCkKIAogICAg
ICAgICByZXR1cm4gcGF0aAogCkBAIC00NDEsMzAgKzQ2NSwxOSBAQCBjbGFzcyBGaXJlZm94QW5k
cm9pZChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImZpcmVmb3hfYW5kcm9pZCIKICAgICByZXF1
aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0IgogCi0gICAgZGVmIGRvd25sb2Fk
KHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAgaWYgZGVzdCBp
cyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9zLnB3ZAogCi0gICAgICAgIGlmIEZJUkVGT1hf
Q0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0ZXIubmV0JzoKLSAgICAgICAgICAgICMg
Tk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgTm92ZW1iZXIgOSwgMjAx
OQotICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJodHRwczovL3F1ZXVlLnRhc2tjbHVzdGVy
Lm5ldC92MS8iCi0gICAgICAgICAgICBUQ19JTkRFWF9CQVNFID0gImh0dHBzOi8vaW5kZXgudGFz
a2NsdXN0ZXIubmV0L3YxLyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFRDX1FVRVVFX0JB
U0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkvcXVldWUvdjEvIgotICAgICAgICAgICAg
VENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9VUkwgKyAiL2FwaS9pbmRleC92MS8iCi0K
LQotICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRDX0lOREVYX0JBU0UgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYyLm1vemlsbGEtY2VudHJhbC5sYXRlc3Qu
bW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCi0gICAgICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1
cygpCi0gICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkKLSAgICAgICAgdGFza19pZCA9IGluZGV4
WyJ0YXNrSWQiXQogCi0gICAgICAgIHJlc3AgPSByZXF1ZXN0cy5nZXQoVENfUVVFVUVfQkFTRSAr
ICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiKSkKLSAgICAg
ICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKKyAgICAgICAgcmVzcCA9IGdldF90YXNrY2x1c3Rl
cl9hcnRpZmFjdCgKKyAgICAgICAgICAgICJnZWNrby52Mi5tb3ppbGxhLWNlbnRyYWwubGF0ZXN0
Lm1vYmlsZS5hbmRyb2lkLXg4Nl82NC1vcHQiLAorICAgICAgICAgICAgInB1YmxpYy9idWlsZC9n
ZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKIAotICAgICAgICBhcGtfcGF0aCA9IG9zLnBhdGgu
am9pbihkZXN0LCAiZ2Vja292aWV3LWFuZHJvaWRUZXN0LmFwayIpCisgICAgICAgIGZpbGVuYW1l
ID0gImdlY2tvdmlldy1hbmRyb2lkVGVzdC5hcGsiCisgICAgICAgIGlmIHJlbmFtZToKKyAgICAg
ICAgICAgIGZpbGVuYW1lID0gIiVzJXMiICUgKHJlbmFtZSwgZ2V0X2V4dChmaWxlbmFtZSlbMV0p
CisgICAgICAgIGFwa19wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIGZpbGVuYW1lKQogCiAgICAg
ICAgIHdpdGggb3BlbihhcGtfcGF0aCwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUo
cmVzcC5jb250ZW50KQpAQCAtNTAwLDcgKzUxMyw3IEBAIGNsYXNzIENocm9tZShCcm93c2VyKToK
ICAgICBwcm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRz
X2Nocm9tZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVs
PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwg
cmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC02NTgsNyArNjcx
LDcgQEAgY2xhc3MgQ2hyb21lQW5kcm9pZEJhc2UoQnJvd3Nlcik6CiAgICAgICAgIHN1cGVyKENo
cm9tZUFuZHJvaWRCYXNlLCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAgICAgIHNlbGYuZGV2
aWNlX3NlcmlhbCA9IE5vbmUKIAotICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTc2Niw3
ICs3NzksNyBAQCBjbGFzcyBDaHJvbWVpT1MoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJjaHJv
bWVfaW9zIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfY2hyb21lX2lvcy50eHQi
CiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04MDIsNyArODE1LDcgQEAgY2xhc3Mg
T3BlcmEoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlVuYWJsZSB0byBm
aW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVm
IGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYgZG93bmxv
YWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgpAQCAtODc0LDcgKzg4Nyw3IEBAIGNsYXNzIEVkZ2VDaHJvbWl1
bShCcm93c2VyKToKICAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJpdmVyIgogICAgIHJl
cXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC04ODgsMTEgKzkwMSwxMyBAQCBjbGFzcyBFZGdlQ2hyb21p
dW0oQnJvd3Nlcik6CiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAg
ICMgVXNlIHBhdGhzIGZyb20gZGlmZmVyZW50IEVkZ2UgY2hhbm5lbHMgc3RhcnRpbmcgd2l0aCBS
ZWxlYXNlXEJldGFcRGV2XENhbmFyeQogICAgICAgICAgICAgICAgIHdpbnBhdGhzID0gW29zLnBh
dGguZXhwYW5kdXNlcigiflxcQXBwRGF0YVxcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZVxcQXBwbGlj
YXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMo
IiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNhdGlv
biIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygiJFNZ
U1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxcQXBwbGljYXRp
b24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdlIERldlxcQXBwbGljYXRp
b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHZhcnMoIiRT
WVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdlXFxBcHBsaWNh
dGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhwYW5kdmFycygi
JFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnRcXEVkZ2UgQmV0YVxc
QXBwbGljYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFu
ZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0XFxFZGdl
IERldlxcQXBwbGljYXRpb24iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHVzZXIoIn5cXEFwcERhdGFcTG9jYWxcXE1pY3Jvc29mdFxcRWRnZSBTeFNcXEFwcGxp
Y2F0aW9uIildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2Vy
KCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxFZGdlIFN4U1xcQXBwbGljYXRpb24iKV0K
ICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKGJpbmFyeW5hbWUsIG9zLnBh
dGhzZXAuam9pbih3aW5wYXRocykpCiAgICAgICAgIGlmIHNlbGYucGxhdGZvcm0gPT0gIm1hY29z
IjoKICAgICAgICAgICAgIGJpbmFyeW5hbWUgPSAiTWljcm9zb2Z0IEVkZ2UgQ2FuYXJ5IgpAQCAt
OTczLDcgKzk4OCw3IEBAIGNsYXNzIEVkZ2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJlZGdl
IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZS50eHQiCiAKLSAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9h
ZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0xMDA3LDcgKzEwMjIsNyBAQCBjbGFzcyBJbnRlcm5ldEV4
cGxvcmVyKEJyb3dzZXIpOgogICAgIHByb2R1Y3QgPSAiaWUiCiAgICAgcmVxdWlyZW1lbnRzID0g
InJlcXVpcmVtZW50c19pZS50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25l
LCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBAIC0x
MDM1LDcgKzEwNTAsNyBAQCBjbGFzcyBTYWZhcmkoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YWZhcmkiCiAgICAgcmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19zYWZhcmkudHh0IgogCi0g
ICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1Ob25lKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwg
ZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpAQCAtMTEwNSwxNCArMTEyMCwxNSBAQCBjbGFzcyBT
ZXJ2byhCcm93c2VyKToKICAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQuc2Vydm8ub3Jn
L25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRlbnNpb24pCiAgICAg
ICAgIHJldHVybiBnZXQodXJsKQogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwg
Y2hhbm5lbD0ibmlnaHRseSIpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Im5pZ2h0bHkiLCByZW5hbWU9Tm9uZSk6CiAgICAgICAgIGlmIGRlc3QgaXMgTm9uZToK
ICAgICAgICAgICAgIGRlc3QgPSBvcy5wd2QKIAogICAgICAgICByZXNwID0gc2VsZi5fZ2V0KGRl
c3QsIGNoYW5uZWwpCiAgICAgICAgIF8sIGV4dGVuc2lvbiwgXyA9IHNlbGYucGxhdGZvcm1fY29t
cG9uZW50cygpCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZXN0LCAic2Vydm8t
bGF0ZXN0JXMiICUgKGV4dGVuc2lvbiwpKSwgInciKSBhcyBmOgorICAgICAgICBmaWxlbmFtZSA9
IHJlbmFtZSBpZiByZW5hbWUgaXMgbm90IE5vbmUgZWxzZSAic2Vydm8tbGF0ZXN0IgorICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICIlcyVzIiAlIChmaWxlbmFtZSwgZXh0ZW5z
aW9uLCkpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHJlc3AuY29udGVudCkKIAog
ICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgpAQCAt
MTE1OSw3ICsxMTc1LDcgQEAgY2xhc3MgU2F1Y2UoQnJvd3Nlcik6CiAgICAgcHJvZHVjdCA9ICJz
YXVjZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhdWNlLnR4dCIKIAotICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgZGVmIGRv
d25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCByZW5hbWU9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKQEAgLTExODQsNyArMTIwMCw3IEBAIGNsYXNzIFdlYktp
dChCcm93c2VyKToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1aXJlbWVudHMgPSAi
cmVxdWlyZW1lbnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSwgcmVuYW1lPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCiAKICAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CkBA
IC0xMjUwLDcgKzEyNjYsNyBAQCBjbGFzcyBFcGlwaGFueShCcm93c2VyKToKICAgICBwcm9kdWN0
ID0gImVwaXBoYW55IgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZXBpcGhhbnku
dHh0IgogCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIHJlbmFtZT1O
b25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvY29tbWFuZHMuanNv
biBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L2NvbW1hbmRzLmpzb24KaW5kZXggNjBmZTE2MjFhZjBkZWNkMGZhYTQzNGYyNmRjYmE5OTUxNTQx
NzNlNy4uYTQ3YWI0MGQ3Mjg0N2Q1ZjUzNmUwYWMyZTAyZWIzZmUwZmVhMjMzYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
Y29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5kcy5qc29uCkBAIC01Miw3ICs1Miw2IEBACiAgICAgInBh
cnNlciI6ICJnZXRfcGFyc2VyIiwKICAgICAiaGVscCI6ICJJbnN0YWxsIGJyb3dzZXIgY29tcG9u
ZW50cyIsCiAgICAgImluc3RhbGwiOiBbCi0gICAgICAibW96ZG93bmxvYWQiLAogICAgICAgIm1v
emluc3RhbGwiCiAgICAgXQogICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkKaW5k
ZXggMjQ5MTVmMGM5OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4Yy4uNmViNTlmODE0YmYw
OGQxMzlkNTk3YTRiNGIyNmE3ZDdhYTkyMGZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0
YWxsLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYnJvd3Nlcgog
aW1wb3J0IHN5cwotCitmcm9tIC4gaW1wb3J0IGJyb3dzZXIKIAogbGF0ZXN0X2NoYW5uZWxzID0g
ewogICAgICdmaXJlZm94JzogJ25pZ2h0bHknLApAQCAtNDQsNiArNDMsOSBAQCBkZWYgZ2V0X3Bh
cnNlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93c2VyIHJlbGVhc2Ug
b24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRv
d25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQgZG9uJ3QgaW5zdGFs
bCBpdCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZW5hbWUnLCBhY3Rpb249InN0b3Jl
IiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRmlsZW5hbWUs
IGV4Y2x1ZGluZyBleHRlbnNpb24gZm9yIGRvd25sb2FkZWQgYXJjaGl2ZSAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiKG9ubHkgd2l0aCAtLWRvd25sb2FkLW9ubHkpIikKICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctZCcsICctLWRlc3RpbmF0aW9uJywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2ZpbGVzeXN0ZW0gZGlyZWN0b3J5IHRvIHBsYWNlIHRoZSBjb21wb25lbnQnKQog
ICAgIHJldHVybiBwYXJzZXIKQEAgLTc2LDEwICs3OCwxMSBAQCBkZWYgcnVuKHZlbnYsICoqa3dh
cmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIC0tZGVz
dGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52aXJvbm1lbnQiKQog
CiAgICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBkZXN0aW5hdGlvbiwg
Y2hhbm5lbCwKLSAgICAgICAgICAgIGRvd25sb2FkX29ubHk9a3dhcmdzWyJkb3dubG9hZF9vbmx5
Il0pCisgICAgICAgICAgICBkb3dubG9hZF9vbmx5PWt3YXJnc1siZG93bmxvYWRfb25seSJdLCBy
ZW5hbWU9a3dhcmdzWyJyZW5hbWUiXSkKIAogCi1kZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQs
IGRlc3RpbmF0aW9uLCBjaGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sb2FkX29u
bHk9RmFsc2UpOgorZGVmIGluc3RhbGwobmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbiwgY2hh
bm5lbD0ibmlnaHRseSIsIGxvZ2dlcj1Ob25lLCBkb3dubG9hZF9vbmx5PUZhbHNlLAorICAgICAg
ICAgICAgcmVuYW1lPU5vbmUpOgogICAgIGlmIGxvZ2dlciBpcyBOb25lOgogICAgICAgICBpbXBv
cnQgbG9nZ2luZwogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaW5zdGFsbCIp
CkBAIC05MSw2ICs5NCw5IEBAIGRlZiBpbnN0YWxsKG5hbWUsIGNvbXBvbmVudCwgZGVzdGluYXRp
b24sIGNoYW5uZWw9Im5pZ2h0bHkiLCBsb2dnZXI9Tm9uZSwgZG93bmxvCiAKICAgICBzdWJjbGFz
cyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5cy5zdGRvdXQud3JpdGUo
J05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBvbmVudCkpCi0gICAgcGF0
aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3RpbmF0aW9uLCBj
aGFubmVsPWNoYW5uZWwpCisgICAga3dhcmdzID0ge30KKyAgICBpZiBkb3dubG9hZF9vbmx5IGFu
ZCByZW5hbWU6CisgICAgICAgIGt3YXJnc1sicmVuYW1lIl0gPSByZW5hbWUKKyAgICBwYXRoID0g
Z2V0YXR0cihzdWJjbGFzcyhsb2dnZXIpLCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24sIGNoYW5u
ZWw9Y2hhbm5lbCwgKiprd2FyZ3MpCiAgICAgaWYgcGF0aDoKICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBkb3dubG9hZF9vbmx5
IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3BhdGhzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKaW5kZXggMzU4
NjdjNGNjYmZlOTVjNGU3MWE4ZDcxY2U5MGE3YjM3ODk1MWZkNS4uNmIwOWNjOGJkYWJlYzljNmEz
NmVlMjU3MjkzYmU5MDJjNzk4YjE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMKQEAgLTIsNSAr
Miw2IEBAIHRvb2xzL2NpLwogdG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8KIHRvb2xzL21hbmlm
ZXN0LwordG9vbHMvcXVpYy8KIHRvb2xzL3NlcnZlLwogdG9vbHMvd3B0LwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVx
dWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKaW5kZXggNTY2MDgzY2I2YmU4OWEwM2U0OGNj
NWMxYTBhODhmYzVjZTUzYTg1My4uM2JhZWZhNTBlYTk4MTk3NGJlNjZiNmUyMjZlMDUwZTU5ZTAz
NGMyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHQvcmVxdWlyZW1lbnRzLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0CkBAIC0x
ICsxLDIgQEAKLXJlcXVlc3RzPT0yLjIyLjAKK3JlcXVlc3RzPT0yLjIzLjAKK21vemluZm89PTEu
Mi4xICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjEy
MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Jldmxpc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXZsaXN0LnB5CmluZGV4IGM0Y2JjMjk0M2I3Y2UwMmVm
MmE1OGY2NWQzNGFiNzE3YmZiMGM5ODEuLjE4OTNmZGVmYTgzNDZlOGY5NjllNDE3ODlkZjZlM2Rk
ZDg1NDA2MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Jldmxpc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmV2bGlzdC5weQpAQCAtMTA2LDExICsx
MDYsMTQgQEAgZGVmIGdldF9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ibWF4aW11bSBudW1iZXIgb2YgcmV2
aXNpb25zIHRvIGJlIHJldHVybmVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRoZSBjb21tYW5kIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBoZWxwPSJkZWJ1ZyBsb2dnaW5nIikKICAgICByZXR1cm4gcGFyc2Vy
CiAKIAogZGVmIHJ1bl9yZXZfbGlzdCgqKmt3YXJncyk6CiAgICAgIyB0eXBlOiAoKipBbnkpIC0+
IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KCd2ZXJib3NlJyk6CisgICAgICAgIGxvZ2dlci5zZXRM
ZXZlbChsb2dnaW5nLkRFQlVHKQogICAgICMgImVwb2NoX3RocmVzaG9sZCIgaXMgYSBzYWZldHkg
bWFyZ2luLiBBZnRlciB0aGlzIHRpbWUgaXQgaXMgZmluZSB0bwogICAgICMgYXNzdW1lIHRoYXQg
YW55IHRhZ3MgYXJlIGNyZWF0ZWQgYW5kIHB1c2hlZC4KICAgICBlcG9jaF90aHJlc2hvbGQgPSA2
MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCAwYzczMmU3YWU4YWVlN2Q0NDEwMTU2NDJi
YThmMmZjYmQ3ZTY2ZTBlLi5hOWZkZWFkYTFlYzc4MGE1MDA5M2YyMjE2NzNjZjQwNjg2NGUzNmMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0xODMsNiArMTgzLDE2IEBAIGNsYXNzIEJy
b3dzZXJTZXR1cChvYmplY3QpOgogICAgIGRlZiBzZXR1cChzZWxmLCBrd2FyZ3MpOgogICAgICAg
ICBzZWxmLnNldHVwX2t3YXJncyhrd2FyZ3MpCiAKK2RlZiBzYWZlX3Vuc2V0ZW52KGVudl92YXIp
OgorICAgICIiIlNhZmVseSByZW1vdmUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICBQ
eXRob24zIGRvZXMgbm90IHN1cHBvcnQgb3MudW5zZXRlbnYgaW4gV2luZG93cyBmb3IgcHl0aG9u
PDMuOSwgc28gd2UgYmV0dGVyCisgICAgcmVtb3ZlIHRoZSB2YXJpYWJsZSBkaXJlY3RseSBmcm9t
IG9zLmVudmlyb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBkZWwgb3MuZW52aXJvbltl
bnZfdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwogCiBjbGFzcyBGaXJl
Zm94KEJyb3dzZXJTZXR1cCk6CiAgICAgbmFtZSA9ICJmaXJlZm94IgpAQCAtMjQzLDkgKzI1Myw5
IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlhIHlvdXIgT1MgcGFja2FnZSBtYW5h
Z2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSdW5uaW5nIGlu
IGhlYWRsZXNzIG1vZGUsIHBhc3MgLS1uby1oZWFkbGVzcyB0byBkaXNhYmxlIikKIAogICAgICAg
ICAjIFR1cm4gb2ZmIEZpcmVmb3ggV2ViUlRDIElDRSBsb2dnaW5nIG9uIFdQVCAodHVybmVkIG9u
IGJ5IG1venJ1bm5lcikKLSAgICAgICAgb3MudW5zZXRlbnYoJ1JfTE9HX0xFVkVMJykKLSAgICAg
ICAgb3MudW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKLSAgICAgICAgb3MudW5zZXRlbnYo
J1JfTE9HX1ZFUkJPU0UnKQorICAgICAgICBzYWZlX3Vuc2V0ZW52KCdSX0xPR19MRVZFTCcpCisg
ICAgICAgIHNhZmVfdW5zZXRlbnYoJ1JfTE9HX0RFU1RJTkFUSU9OJykKKyAgICAgICAgc2FmZV91
bnNldGVudignUl9MT0dfVkVSQk9TRScpCiAKICAgICAgICAgIyBBbGxvdyBXZWJSVEMgdGVzdHMg
dG8gY2FsbCBnZXRVc2VyTWVkaWEuCiAgICAgICAgIGt3YXJnc1siZXh0cmFfcHJlZnMiXS5hcHBl
bmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCkBAIC03MDUsOCArNzE1LDkg
QEAgZGVmIHNldHVwX2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZz1Ob25lLCBmb3JtYXR0
ZXJfZGVmYXVsdHM9Tm9uZSk6CiAKIGRlZiBzZXR1cF93cHRydW5uZXIodmVudiwgcHJvbXB0PVRy
dWUsIGluc3RhbGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgogICAgIGZyb20gd3B0cnVubmVy
IGltcG9ydCB3cHRjb21tYW5kbGluZQorICAgIGZyb20gc2l4IGltcG9ydCBpdGVyaXRlbXMKIAot
ICAgIGt3YXJncyA9IHV0aWxzLkt3YXJncyhrd2FyZ3MuaXRlcml0ZW1zKCkpCisgICAga3dhcmdz
ID0gdXRpbHMuS3dhcmdzKGl0ZXJpdGVtcyhrd2FyZ3MpKQogCiAgICAgcHJvZHVjdF9wYXJ0cyA9
IGt3YXJnc1sicHJvZHVjdCJdLnNwbGl0KCI6IikKICAgICBrd2FyZ3NbInByb2R1Y3QiXSA9IHBy
b2R1Y3RfcGFydHNbMF0ucmVwbGFjZSgiLSIsICJfIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rl
c3RmaWxlcy5weQppbmRleCBjZjEyYTU5YzhlNjhhNzBmNzgyNTYzYTgxYzE1MTEyNDI5NjJlZGYz
Li5mMjk2MGU4ZjUxZTQ0NWUzZjZmNTNiYThlN2MwMTQ1YWE1MDcyMDM4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdGZpbGVzLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAgZGVmIGFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCAgIyB0eXBlOiBJdGVyYWJsZVtUZXh0XQogICAgIG5v
bnRlc3RzX2NoYW5nZWQgPSBzZXQoZmlsZXNfY2hhbmdlZCkKICAgICB3cHRfbWFuaWZlc3QgPSBs
b2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIG1hbmlmZXN0X3VwZGF0ZSkKIAotICAgIHRlc3Rf
dHlwZXMgPSBbInRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIl0KKyAgICB0ZXN0X3R5
cGVzID0gWyJjcmFzaHRlc3QiLCAidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQog
ICAgIHN1cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQogICAgICAg
ICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0ZXJ0eXBlcygi
c3VwcG9ydCIpfQogICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9v
dCwgcGF0aCkKQEAgLTI3OCw4ICsyNzgsOCBAQCBkZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVz
X2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1RleHRdCiAgICAgICAgICAgICBmdWxsX3BhdGgg
PSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIHJlcG9fcGF0aFsxOl0ucmVwbGFjZSgiLyIsIG9zLnBh
dGguc2VwKSkKICAgICAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzLmFkZCgoZnVsbF9wYXRoLCBy
ZXBvX3BhdGgpKQogCi0gICAgaW50ZXJmYWNlX25hbWUgPSBsYW1iZGEgeDogb3MucGF0aC5zcGxp
dGV4dChvcy5wYXRoLmJhc2VuYW1lKHgpKVswXQotICAgIGludGVyZmFjZXNfY2hhbmdlZF9uYW1l
cyA9IG1hcChpbnRlcmZhY2VfbmFtZSwgaW50ZXJmYWNlc19jaGFuZ2VkKQorICAgIGludGVyZmFj
ZXNfY2hhbmdlZF9uYW1lcyA9IFtvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaW50
ZXJmYWNlKSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGludGVyZmFj
ZSBpbiBpbnRlcmZhY2VzX2NoYW5nZWRdCiAKICAgICBkZWYgYWZmZWN0ZWRfYnlfd2RzcGVjKHRl
c3QpOgogICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKQEAgLTMyNCw5ICszMjQsOSBAQCBk
ZWYgYWZmZWN0ZWRfdGVzdGZpbGVzKGZpbGVzX2NoYW5nZWQsICAjIHR5cGU6IEl0ZXJhYmxlW1Rl
eHRdCiAKICAgICAgICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwgInJiIikgYXMgZmg6
CiAgICAgICAgICAgICAgICAgcmF3X2ZpbGVfY29udGVudHMgPSBmaC5yZWFkKCkgICMgdHlwZTog
Ynl0ZXMKLSAgICAgICAgICAgICAgICBpZiByYXdfZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJc
eGZlXHhmZiIpOgorICAgICAgICAgICAgICAgIGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZlXHhmZiIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikgICMgdHlwZTogVGV4
dAotICAgICAgICAgICAgICAgIGVsaWYgcmF3X2ZpbGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhm
Zlx4ZmUiKToKKyAgICAgICAgICAgICAgICBlbGlmIHJhd19maWxlX2NvbnRlbnRzLnN0YXJ0c3dp
dGgoYiJceGZmXHhmZSIpOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3
X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVf
Y29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQpAQCAtMzk2LDcgKzM5Niw3IEBAIGRl
ZiBydW5fY2hhbmdlZF9maWxlcygqKmt3YXJncyk6CiAgICAgc2VwYXJhdG9yID0gIlwwIiBpZiBr
d2FyZ3NbIm51bGwiXSBlbHNlICJcbiIKIAogICAgIGZvciBpdGVtIGluIHNvcnRlZChjaGFuZ2Vk
KToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvcy5wYXRoLnJlbHBhdGgoaXRlbS5lbmNvZGUo
InV0ZjgiKSwgd3B0X3Jvb3QpICsgc2VwYXJhdG9yKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KG9zLnBhdGgucmVscGF0aChzaXguZW5zdXJlX3N0cihpdGVtKSwgd3B0X3Jvb3QpICsgc2VwYXJh
dG9yKQogCiAKIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9icm93c2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CmluZGV4IDI1YjY2ZTdkOTIy
ZjU0ZWRmMTk3YmFhYWY0MmMyNmM5ZmNlMDQ2MjEuLmU3YzMyYTM2MjExODYwODYxMDJkNWI0NGFh
ZGUzYzdmMTc1ZjA3YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfYnJvd3Nlci5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90
ZXN0X2Jyb3dzZXIucHkKQEAgLTE1LDExICsxNSwxMSBAQCBkZWYgdGVzdF9zYWZhcmlfdmVyc2lv
bihtb2NrZWRfY2hlY2tfb3V0cHV0KToKICAgICBzYWZhcmkgPSBicm93c2VyLlNhZmFyaShsb2dn
ZXIpCiAKICAgICAjIFNhZmFyaQotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gJ0luY2x1ZGVkIHdpdGggU2FmYXJpIDEyLjEgKDE0NjA3LjEuMTEpJworICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gYidJbmNsdWRlZCB3aXRoIFNhZmFyaSAxMi4xICgx
NDYwNy4xLjExKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0i
c2FmYXJpZHJpdmVyIikgPT0gJzEyLjEgKDE0NjA3LjEuMTEpJwogCiAgICAgIyBTYWZhcmkgVGVj
aG5vbG9neSBQcmV2aWV3Ci0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
SW5jbHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYw
Ny4xLjkuMC4xKScKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInSW5j
bHVkZWQgd2l0aCBTYWZhcmkgVGVjaG5vbG9neSBQcmV2aWV3IChSZWxlYXNlIDY3LCAxMzYwNy4x
LjkuMC4xKScKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2Fm
YXJpZHJpdmVyIikgPT0gJ1RlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2MDcuMS45
LjAuMSknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBAIC0zMCwx
MSArMzAsMTEgQEAgZGVmIHRlc3Rfc2FmYXJpX3ZlcnNpb25fZXJyb3JzKG1vY2tlZF9jaGVja19v
dXRwdXQpOgogICAgIGFzc2VydCBzYWZhcmkudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYHNh
ZmFyaWRyaXZlciAtLXZlcnNpb25gIHJldHVybiBnaWJiZXJpc2gKLSAgICBtb2NrZWRfY2hlY2tf
b3V0cHV0LnJldHVybl92YWx1ZSA9ICdnaWJiZXJpc2gnCisgICAgbW9ja2VkX2NoZWNrX291dHB1
dC5yZXR1cm5fdmFsdWUgPSBiJ2dpYmJlcmlzaCcKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24o
d2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJpdmVyIikgaXMgTm9uZQogCiAgICAgIyBgc2FmYXJp
ZHJpdmVyIC0tdmVyc2lvbmAgZmFpbHMgKGFzIGl0IGRvZXMgZm9yIFNhZmFyaSA8PTEyLjApCi0g
ICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAnZHVtbXknCisgICAgbW9ja2Vk
X2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSBiJ2R1bW15JwogICAgIG1vY2tlZF9jaGVja19v
dXRwdXQuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigxLCAnY21k
JykKICAgICBhc3NlcnQgc2FmYXJpLnZlcnNpb24od2ViZHJpdmVyX2JpbmFyeT0ic2FmYXJpZHJp
dmVyIikgaXMgTm9uZQogCkBAIC00NCwxMSArNDQsMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21p
bmlicm93c2VyX3ZlcnNpb24obW9ja2VkX2NoZWNrX291dHB1dCk6CiAgICAgd2Via2l0Z3RrX21p
bmlicm93c2VyID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3Nlcihsb2dnZXIpCiAKICAgICAj
IHN0YWJsZSB2ZXJzaW9uCi0gICAgbW9ja2VkX2NoZWNrX291dHB1dC5yZXR1cm5fdmFsdWUgPSAn
V2ViS2l0R1RLIDIuMjYuMVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVl
ID0gYidXZWJLaXRHVEsgMi4yNi4xXG4nCiAgICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nl
ci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSA9PSAnMi4yNi4xJwogCiAgICAgIyBuaWdo
dGx5IHZlcnNpb24KLSAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9ICdXZWJL
aXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJworICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJu
X3ZhbHVlID0gYidXZWJLaXRHVEsgMi4yNy4xIChyMjUwODIzKVxuJwogICAgIGFzc2VydCB3ZWJr
aXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9J01pbmlCcm93c2VyJykgPT0gJzIuMjcu
MSAocjI1MDgyMyknCiAKIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcpCkBA
IC01OSwxMSArNTksMTEgQEAgZGVmIHRlc3Rfd2Via2l0Z3RrX21pbmlicm93c2VyX3ZlcnNpb25f
ZXJyb3JzKG1vY2tlZF9jaGVja19vdXRwdXQpOgogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJy
b3dzZXIudmVyc2lvbigpIGlzIE5vbmUKIAogICAgICMgYE1pbmlCcm93c2VyIC0tdmVyc2lvbmAg
cmV0dXJuIGdpYmJlcmlzaAotICAgIG1vY2tlZF9jaGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0g
J2dpYmJlcmlzaCcKKyAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnJldHVybl92YWx1ZSA9IGInZ2li
YmVyaXNoJwogICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIudmVyc2lvbihiaW5hcnk9
J01pbmlCcm93c2VyJykgaXMgTm9uZQogCiAgICAgIyBgTWluaUJyb3dzZXIgLS12ZXJzaW9uYCBm
YWlscyAoYXMgaXQgZG9lcyBmb3IgTWluaUJyb3dzZXIgPD0gMi4yNi4wKQotICAgIG1vY2tlZF9j
aGVja19vdXRwdXQucmV0dXJuX3ZhbHVlID0gJ2R1bW15JworICAgIG1vY2tlZF9jaGVja19vdXRw
dXQucmV0dXJuX3ZhbHVlID0gYidkdW1teScKICAgICBtb2NrZWRfY2hlY2tfb3V0cHV0LnNpZGVf
ZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMSwgJ2NtZCcpCiAgICAgYXNz
ZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci52ZXJzaW9uKGJpbmFyeT0nTWluaUJyb3dzZXInKSBp
cyBOb25lCiAKQEAgLTkzLDExICs5MywxMSBAQCBkZWYgdGVzdF93ZWJraXRndGtfbWluaWJyb3dz
ZXJfZmluZF9iaW5hcnkobW9ja2VkX29zX3BhdGhfaXNmaWxlKToKICAgICAjIEZvdW5kIG9uIHRo
ZSBkZWZhdWx0IERlYmlhbiBwYXRoIGZvciBBTUQ2NCAoZ2NjIGF2YWlsYWJsZSBidXQgZ2l2ZXMg
YW4gZXJyb3IpCiAgICAgZGViaWFuX21pbmlicm93c2VyX3BhdGhfYW1kNjQgPSAnL3Vzci9saWIv
eDg2XzY0LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICBtb2NrZWRf
b3NfcGF0aF9pc2ZpbGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgcGF0aDogcGF0aCBpbiBbZGViaWFu
X21pbmlicm93c2VyX3BhdGhfYW1kNjQsICcvdXNyL2Jpbi9nY2MnXQotICAgIHdpdGggbW9jay5w
YXRjaCgnc3VicHJvY2Vzcy5jaGVja19vdXRwdXQnLCByZXR1cm5fdmFsdWUgPSAnZXJyb3InLCBz
aWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDEsICdjbWQnKSk6Cisg
ICAgd2l0aCBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1
ZSA9IGInZXJyb3InLCBzaWRlX2VmZmVjdCA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y
KDEsICdjbWQnKSk6CiAgICAgICAgIGFzc2VydCB3ZWJraXRndGtfbWluaWJyb3dzZXIuZmluZF9i
aW5hcnkoKSA9PSBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hbWQ2NAogCiAgICAgICAgICMgRm91
bmQgb24gdGhlIGRlZmF1bHQgRGViaWFuIHBhdGggZm9yIEFSTTY0IChnY2MgYXZhaWxhYmxlKQog
ICAgICAgICBkZWJpYW5fbWluaWJyb3dzZXJfcGF0aF9hcm02NCA9ICcvdXNyL2xpYi9hYXJjaDY0
LWxpbnV4LWdudS93ZWJraXQyZ3RrLTQuMC9NaW5pQnJvd3NlcicKICAgICAgICAgbW9ja2VkX29z
X3BhdGhfaXNmaWxlLnNpZGVfZWZmZWN0ID0gbGFtYmRhIHBhdGg6IHBhdGggaW4gW2RlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0LCAnL3Vzci9iaW4vZ2NjJ10KLSAgICAgICAgd2l0aCBtb2Nr
LnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX291dHB1dCcsIHJldHVybl92YWx1ZSA9ICdhYXJjaDY0
LWxpbnV4LWdudScpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tf
b3V0cHV0JywgcmV0dXJuX3ZhbHVlID0gYidhYXJjaDY0LWxpbnV4LWdudScpOgogICAgICAgICAg
ICAgYXNzZXJ0IHdlYmtpdGd0a19taW5pYnJvd3Nlci5maW5kX2JpbmFyeSgpID09IGRlYmlhbl9t
aW5pYnJvd3Nlcl9wYXRoX2FybTY0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X21hcmtkb3duLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdGVzdF9tYXJrZG93bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5YWQ5YzQ4OTA2NzY2NjI0ZWM1OTRj
OTk0ZDUyZTcwYzk2ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9tYXJrZG93bi5weQpA
QCAtMCwwICsxLDM1IEBACitmcm9tIHRvb2xzLndwdCBpbXBvcnQgbWFya2Rvd24KKworZGVmIHRl
c3RfZm9ybWF0X2NvbW1lbnRfdGl0bGUoKToKKyAgICBhc3NlcnQgJyMgQnJvd3NlciAjJyA9PSBt
YXJrZG93bi5mb3JtYXRfY29tbWVudF90aXRsZSgiYnJvd3NlciIpCisgICAgYXNzZXJ0ICcjIEJy
b3dzZXIgKGNoYW5uZWwpICMnID09IG1hcmtkb3duLmZvcm1hdF9jb21tZW50X3RpdGxlKCJicm93
c2VyOmNoYW5uZWwiKQorCitkZWYgdGVzdF9tYXJrZG93bl9hZGp1c3QoKToKKyAgICBhc3NlcnQg
dSdcXHQnID09IG1hcmtkb3duLm1hcmtkb3duX2FkanVzdCgnXHQnKQorICAgIGFzc2VydCB1J1xc
cicgPT0gbWFya2Rvd24ubWFya2Rvd25fYWRqdXN0KCdccicpCisgICAgYXNzZXJ0IHUnXFxuJyA9
PSBtYXJrZG93bi5tYXJrZG93bl9hZGp1c3QoJ1xuJykKKyAgICBhc3NlcnQgdScnID09IG1hcmtk
b3duLm1hcmtkb3duX2FkanVzdCgnYCcpCisgICAgYXNzZXJ0IHUnXFx8JyA9PSBtYXJrZG93bi5t
YXJrZG93bl9hZGp1c3QoJ3wnKQorICAgIGFzc2VydCB1J1xcdFxcclxcblxcfCcgPT0gbWFya2Rv
d24ubWFya2Rvd25fYWRqdXN0KCdcdFxyXG5gfCcpCisKK3Jlc3VsdCA9ICcnCitkZWYgbG9nKHRl
eHQpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICByZXN1bHQgKz0gdGV4dAorCitkZWYgdGVzdF90
YWJsZSgpOgorICAgIGdsb2JhbCByZXN1bHQKKyAgICBoZWFkaW5ncyA9IFsnaDEnLCdoMiddCisg
ICAgZGF0YSA9IFtbJzAnLCAnMSddXQorICAgIG1hcmtkb3duLnRhYmxlKGhlYWRpbmdzLCBkYXRh
LCBsb2cpCisgICAgYXNzZXJ0ICgifCBoMSB8IGgyIHwiCisgICAgICAgICAgICAifC0tLS18LS0t
LXwiCisgICAgICAgICAgICAifCAwICB8IDEgIHwiKSA9PSByZXN1bHQKKworICAgIHJlc3VsdCA9
ICcnCisgICAgZGF0YS5hcHBlbmQoWydhYWEnLCAnYmInXSkKKyAgICBtYXJrZG93bi50YWJsZSho
ZWFkaW5ncywgZGF0YSwgbG9nKQorICAgIGFzc2VydCAoInwgIGgxIHwgaDIgfCIKKyAgICAgICAg
ICAgICJ8LS0tLS18LS0tLXwiCisgICAgICAgICAgICAifCAwICAgfCAxICB8IgorICAgICAgICAg
ICAgInwgYWFhIHwgYmIgfCIpID09IHJlc3VsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9yZXZsaXN0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF9yZXZsaXN0LnB5CmluZGV4IGVjMmE2Yjg5OWQ1ZDFhOTI3ZGNhZDFmOWE3
NTgzZjk4N2EzYWQ5NDcuLjMwMjA4ZjRjZjY4ZDc5NTk2NmU3ODU4ZGFhMDczMGI2OGZhM2U5MGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy90ZXN0X3Jldmxpc3QucHkK
QEAgLTExLDEwICsxMSwxMyBAQCBkZWYgdGVzdF9jYWxjdWxhdGVfY3V0b2ZmX2RhdGUoKToKIAog
CiBkZWYgdGVzdF9wYXJzZV9lcG9jaCgpOgotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2No
KGIiMTBoIikgPT0gMzYwMDAKLSAgICBhc3NlcnQgcmV2bGlzdC5wYXJzZV9lcG9jaChiIjEwZCIp
ID09IDg2NDAwMAotICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKGIiMTB3IikgPT0gNjA0
ODAwMAorICAgIGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGgiKSA9PSAzNjAwMAorICAg
IGFzc2VydCByZXZsaXN0LnBhcnNlX2Vwb2NoKCIxMGQiKSA9PSA4NjQwMDAKKyAgICBhc3NlcnQg
cmV2bGlzdC5wYXJzZV9lcG9jaCgiMTB3IikgPT0gNjA0ODAwMAogCitkZWYgY2hlY2tfcmV2aXNp
b25zKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6CisgICAgZm9yIHRhZ2dl
ZCwgZXhwZWN0ZWQgaW4gemlwKHRhZ2dlZF9yZXZpc2lvbnMsIGV4cGVjdGVkX3JldmlzaW9ucyk6
CisgICAgICAgIGFzc2VydCB0YWdnZWQgPT0gZXhwZWN0ZWQKIAogQG1vY2sucGF0Y2goJ3N1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0JykKIGRlZiB0ZXN0X2dldF9lcG9jaF9yZXZpc2lvbnMobW9ja2Vk
X2NoZWNrX291dHB1dCk6CkBAIC01MCwxNiArNTMsOSBAQCBtZXJnZV9wcl9DIEMgNDc1MjAwIF90
dWVfCiBtZXJnZV9wcl9CIEIgNDUzNjAwIF90dWVfCiBtZXJnZV9wcl9BIEEgMzg4ODAwIF9tb25f
CiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMo
ZXBvY2gsIHVudGlsLCA4KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdO
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdNJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdLJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdKJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdHJwot
ICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCB0YWdn
ZWRfcmV2aXNvbnMubmV4dCgpID09ICdDJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4
dCgpID09ICdBJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5nZXRf
ZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgOCkKKyAgICBjaGVja19yZXZpc2lvbnModGFn
Z2VkX3JldmlzaW9ucywgWydOJywgJ00nLCAnSycsICdKJywgJ0cnLCAnRicsICdDJywgJ0EnXSkK
KyAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9y
IGV4aGF1c3RlZAogCiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBlbm91Z2ggY2FuZGlk
YXRlIGl0ZW1zIGluIHRoZSByZXZpc2lvbiBsaXN0CkBAIC04MiwxMyArNzgsOSBAQCBtZXJnZV9w
cl9EIEQgNjQ4MDAwIF90aHVfCiBtZXJnZV9wcl9DIEMgNTYxNjAwIF93ZWRfCiBtZXJnZV9wcl9C
IEIgNDc1MjAwIF90aHVfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNvbnMgPSByZXZsaXN0LmdldF9l
cG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCA1KQotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNv
bnMubmV4dCgpID09ICdHJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdG
JwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdFJwotICAgIGFzc2VydCB0
YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdEJwotICAgIGFzc2VydCB0YWdnZWRfcmV2aXNvbnMu
bmV4dCgpID09ICdDJwotICAgIGFzc2VydCBsZW4obGlzdCh0YWdnZWRfcmV2aXNvbnMpKSA9PSAw
ICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRfcmV2aXNpb25zID0gcmV2bGlzdC5n
ZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKKyAgICBjaGVja19yZXZpc2lvbnMo
dGFnZ2VkX3JldmlzaW9ucywgWydHJywgJ0YnLCAnRScsICdEJywgJ0MnXSkKKyAgICBhc3NlcnQg
bGVuKGxpc3QodGFnZ2VkX3JldmlzaW9ucykpID09IDAgICMgZ2VuZXJhdG9yIGV4aGF1c3RlZAog
CiAKICAgICAjIGNoZWNrOiBtYXhfY291bnQgd2l0aCBsZXNzIHJldHVybmVkIGNhbmRpZGF0ZXMg
aXRlbXMgdGhhbiB0aGUgbmVlZGVkCkBAIC0xMDcsMTAgKzk5LDkgQEAgbWVyZ2VfcHJfSCBIIDk5
MzYwMCBfbW9uXwogbWVyZ2VfcHJfRyBHIDkwNzIwMCBfc3VuXwogbWVyZ2VfcHJfRiBGIDgyMDgw
MCBfc2F0XwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2
aXNpb25zKGVwb2NoLCB1bnRpbCwgNSkKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQo
KSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicKLSAgICBh
c3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3IgZXhoYXVz
dGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3JldmlzaW9ucyhl
cG9jaCwgdW50aWwsIDUpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lvbnMsIFsn
RycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAj
IGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogaW5pdGlhbCB1bnRpbCB2YWx1
ZSBpcyBvbiBhbiBlcG9jaCBib3VuZGFyeQpAQCAtMTM0LDEwICsxMjUsOSBAQCBtZXJnZV9wcl9I
IEggMTI5NjAwMCBfd2VkXwogbWVyZ2VfcHJfRyBHIDk1MDQwMCBfbW9uXwogbWVyZ2VfcHJfRiBG
IDkyMTYwMCBfc3VkXwogJycnCi0gICAgdGFnZ2VkX3Jldmlzb25zID0gcmV2bGlzdC5nZXRfZXBv
Y2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMykKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25z
Lm5leHQoKSA9PSAnRycKLSAgICBhc3NlcnQgdGFnZ2VkX3Jldmlzb25zLm5leHQoKSA9PSAnRicK
LSAgICBhc3NlcnQgbGVuKGxpc3QodGFnZ2VkX3Jldmlzb25zKSkgPT0gMCAgIyBnZW5lcmF0b3Ig
ZXhoYXVzdGVkCisgICAgdGFnZ2VkX3JldmlzaW9ucyA9IHJldmxpc3QuZ2V0X2Vwb2NoX3Jldmlz
aW9ucyhlcG9jaCwgdW50aWwsIDMpCisgICAgY2hlY2tfcmV2aXNpb25zKHRhZ2dlZF9yZXZpc2lv
bnMsIFsnRycsICdGJ10pCisgICAgYXNzZXJ0IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9
PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKIAogCiAgICAgIyBjaGVjazogdW50aWwgYWxpZ25l
ZCB3aXRoIE1vbmRheSwgNSBKYW51YXJ5IDE5NzAgMDowMDowMCAoMzQ1NjAwKQpAQCAtMTU4LDYg
KzE0OCw2IEBAIG1lcmdlX3ByX0ggSCAxMTgwODAwIF93ZWRfCiBtZXJnZV9wcl9HIEcgOTUwNDAw
IF9tb25fCiBtZXJnZV9wcl9GIEYgOTIxNjAwIF9zdWRfCiAnJycKLSAgICB0YWdnZWRfcmV2aXNv
bnMgPSByZXZsaXN0LmdldF9lcG9jaF9yZXZpc2lvbnMoZXBvY2gsIHVudGlsLCAxKQotICAgIGFz
c2VydCB0YWdnZWRfcmV2aXNvbnMubmV4dCgpID09ICdGJwotICAgIGFzc2VydCBsZW4obGlzdCh0
YWdnZWRfcmV2aXNvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQKKyAgICB0YWdnZWRf
cmV2aXNpb25zID0gcmV2bGlzdC5nZXRfZXBvY2hfcmV2aXNpb25zKGVwb2NoLCB1bnRpbCwgMSkK
KyAgICBjaGVja19yZXZpc2lvbnModGFnZ2VkX3JldmlzaW9ucywgWydGJ10pCisgICAgYXNzZXJ0
IGxlbihsaXN0KHRhZ2dlZF9yZXZpc2lvbnMpKSA9PSAwICAjIGdlbmVyYXRvciBleGhhdXN0ZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3RfdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkK
aW5kZXggMzMxMzVkZmRjMmQ1YjVhZTBjNzIyZGNlMzRmMzViNTgxMjdiZjMzOS4uOWZkNmM2Zjli
ODUxNTM3ZGYwNDQyODYxMjNiYTY0YzliM2UxOWU4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0
ZmlsZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdGVzdHMvdGVzdF90ZXN0ZmlsZXMucHkKQEAgLTEsNSArMSw3IEBACitpbXBv
cnQgb3MucGF0aAogZnJvbSBtb2NrIGltcG9ydCBwYXRjaAogCitmcm9tIHRvb2xzLm1hbmlmZXN0
Lm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAogZnJvbSB0b29scy53cHQgaW1wb3J0IHRlc3RmaWxl
cwogCiAKQEAgLTExLDMgKzEzLDM0IEBAIGRlZiB0ZXN0X2dldHJldmlzaF9rd2FyZygpOgogZGVm
IHRlc3RfZ2V0cmV2aXNoX2ltcGxpY2l0KCk6CiAgICAgd2l0aCBwYXRjaCgidG9vbHMud3B0LnRl
c3RmaWxlcy5icmFuY2hfcG9pbnQiLCByZXR1cm5fdmFsdWU9dSJiYXNlIik6CiAgICAgICAgIGFz
c2VydCB0ZXN0ZmlsZXMuZ2V0X3JldmlzaCgpID09IGIiYmFzZS4uSEVBRCIKKworCitkZWYgdGVz
dF9hZmZlY3RlZF90ZXN0ZmlsZXMoKToKKyAgICBtYW5pZmVzdF9qc29uID0geworICAgICAgICAi
aXRlbXMiOiB7CisgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogeworICAgICAgICAgICAgICAgICJh
IjogeworICAgICAgICAgICAgICAgICAgICAiYiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJjIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb28tY3Jhc2guaHRtbCI6IFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjZGVmZ2gxMjM0NTYiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bGwiLCB7fV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAidXJsX2Jhc2UiOiAiLyIsCisgICAgICAgICJ2ZXJzaW9uIjogOCwKKyAgICB9CisgICAg
bWFuaWZlc3QgPSBNYW5pZmVzdC5mcm9tX2pzb24oIi8iLCBtYW5pZmVzdF9qc29uKQorICAgIHdp
dGggcGF0Y2goInRvb2xzLndwdC50ZXN0ZmlsZXMubG9hZF9tYW5pZmVzdCIsIHJldHVybl92YWx1
ZT1tYW5pZmVzdCk6CisgICAgICAgICMgRGVwZW5kZW50IGFmZmVjdGVkIHRlc3RzIGFyZSBkZXRl
cm1pbmVkIGJ5IHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0sCisgICAgICAgICMgd2hpY2ggZG9lc24n
dCB3b3JrIGluIG91ciB0ZXN0IHNldHVwLiBXZSB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yCisgICAg
ICAgICMgdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyBvciBoYXZlIGEgbW9yZSBjb21wbGV4
IHRlc3Qgc2V0dXAgdG8KKyAgICAgICAgIyBzdXBwb3J0IHRlc3RpbmcgdGhvc2UuCisgICAgICAg
IGZ1bGxfdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgdGVzdGZpbGVzLndw
dF9yb290LCAiYSIsICJiIiwgImMiLCAiZm9vLWNyYXNoLmh0bWwiKQorICAgICAgICB0ZXN0c19j
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmFmZmVjdGVkX3Rlc3RmaWxlcyhbZnVsbF90ZXN0X3BhdGhd
KQorICAgICAgICBhc3NlcnQgdGVzdHNfY2hhbmdlZCA9PSBzZXQoW2Z1bGxfdGVzdF9wYXRoXSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKaW5kZXggNjU2OTU4
MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4Ni4uZjg5N2I2ODhhZDZmNjgyYmU5ZDc2
OWRhOTg1NzljNzg4NTA1YzA5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF93cHQucHkKQEAgLTEsMTIgKzEsMTggQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCitp
bXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdWJw
cm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCi1pbXBvcnQg
dXJsbGliMgorCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3Blbgor
ICAgIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvcgorZXhjZXB0IEltcG9ydEVycm9y
OgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgVVJMRXJyb3IKIAogaW1wb3J0IHB5
dGVzdAogCkBAIC0zOCw2ICs0NCw5IEBAIGRlZiBnZXRfcGVyc2lzdGVudF9tYW5pZmVzdF9wYXRo
KCk6CiAKIEBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQogZGVm
IGluaXRfbWFuaWZlc3QoKToKKyAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHlwYS92aXJ0
dWFsZW52L2lzc3Vlcy8xNzEwCisgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzIGFuZCBw
bGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAgIHB5dGVzdC54ZmFpbChyZWFz
b249InZpcnR1YWxlbnYgYWN0aXZhdGlvbiBmYWlscyBpbiBXaW5kb3dzIGZvciBweXRob24zIikK
ICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAg
d3B0Lm1haW4oYXJndj1bIm1hbmlmZXN0IiwgIi0tbm8tZG93bmxvYWQiLAogICAgICAgICAgICAg
ICAgICAgICAgICAiLS1wYXRoIiwgZ2V0X3BlcnNpc3RlbnRfbWFuaWZlc3RfcGF0aCgpXSkKQEAg
LTIzMyw5ICsyNDIsOSBAQCBkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxlKHRlbXBfdGVzdCk6
CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJp
dmVyKCk6CiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIGNocm9tZWRy
aXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52
IiwgIlNjcmlwdHMiLCAiY2hyb21lZHJpdmVyLmV4ZSIpCisgICAgICAgIGNocm9tZWRyaXZlcl9w
YXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgd3B0LnZlbnZfZGly
KCksICJTY3JpcHRzIiwgImNocm9tZWRyaXZlci5leGUiKQogICAgIGVsc2U6Ci0gICAgICAgIGNo
cm9tZWRyaXZlcl9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwg
Il92ZW52IiwgImJpbiIsICJjaHJvbWVkcml2ZXIiKQorICAgICAgICBjaHJvbWVkcml2ZXJfcGF0
aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsIHdwdC52ZW52X2Rpcigp
LCAiYmluIiwgImNocm9tZWRyaXZlciIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoY2hyb21lZHJp
dmVyX3BhdGgpOgogICAgICAgICBvcy51bmxpbmsoY2hyb21lZHJpdmVyX3BhdGgpCiAgICAgd2l0
aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CkBAIC0yNTEsOSArMjYwLDkg
QEAgZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKICAgICAgICAgICAgICAgICAgICBy
ZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8x
NzA3NCIpCiBkZWYgdGVzdF9pbnN0YWxsX2ZpcmVmb3goKToKICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImRhcndpbiI6Ci0gICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0
aHMucmVwb19yb290LCAiX3ZlbnYiLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJlZm94IE5p
Z2h0bHkuYXBwIikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRo
cy5yZXBvX3Jvb3QsIHdwdC52ZW52X2RpcigpLCAiYnJvd3NlcnMiLCAibmlnaHRseSIsICJGaXJl
Zm94IE5pZ2h0bHkuYXBwIikKICAgICBlbHNlOgotICAgICAgICBmeF9wYXRoID0gb3MucGF0aC5q
b2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwgIm5pZ2h0
bHkiLCAiZmlyZWZveCIpCisgICAgICAgIGZ4X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2Fs
cGF0aHMucmVwb19yb290LCB3cHQudmVudl9kaXIoKSwgImJyb3dzZXJzIiwgIm5pZ2h0bHkiLCAi
ZmlyZWZveCIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhfcGF0aCk6CiAgICAgICAgIHNodXRp
bC5ybXRyZWUoZnhfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMg
ZXhjaW5mbzoKQEAgLTM4OCw5ICszOTcsOSBAQCBkZWYgdGVzdF9zZXJ2ZSgpOgogICAgICAgICAg
ICAgaWYgdGltZS50aW1lKCkgLSBzdGFydCA+IDYwOgogICAgICAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgInNlcnZlciBkaWQgbm90IHN0YXJ0IHJlc3BvbmRpbmcgd2l0aGluIDYwcyIKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwID0gdXJsbGliMi51cmxvcGVuKCJodHRw
Oi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMCIpCisgICAgICAgICAgICAgICAgcmVzcCA9IHVybG9w
ZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKICAgICAgICAgICAgICAgICBwcmlu
dChyZXNwKQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3I6CisgICAgICAgICAg
ICBleGNlcHQgVVJMRXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIlVSTEVycm9yIikKICAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwppbmRleCA1YzQzZjNjYTZi
MjZhYTYwNTY2YWNmZmMzMGU4ZWM4ZWEyYjk2NGUzLi41YmYyNTk5OTIyYWFkNTYzMzRjYzFiYWRh
MTY5YmJjY2ZkODYxYjhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpAQCAtMTYsNiArMTYsNyBAQCBOb25lCiBMaXN0IG9mIGZpbGVzOgogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3Rz
L2xhdGVzdF9tb3ppbGxhX2NlbnRyYWwudHh0CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF9icm93c2VyLnB5CisvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVz
dF9tYXJrZG93bi5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcmV2bGlzdC5weQogL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3RfcnVuLnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMv
dGVzdF90ZXN0ZmlsZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3guaW5pCmluZGV4IDZhMDQ0NDcz
YTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIuLjhlM2UyNmUxMzViNGQzNzZhNDkyYWVh
NWFkYmQyNDI3OTdiMDNmZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQpAQCAtMSw2ICsx
LDcgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNworZW52bGlzdCA9IHB5MjcscHkzNSxweTM2LHB5
MzcscHkzOAogc2tpcHNkaXN0PVRydWUKK3NraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSBGYWxz
ZQogCiBbdGVzdGVudl0KIGRlcHMgPQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQppbmRleCAy
ZDQyNzcxM2U0ZTgyNDg0NWI2ZDc4NzFiNjFjZDZmMTFlYzI1MWY2Li45YTZjMDY0NjcxMjA2NGUx
ODNmMzY2ZGZkNTYyOWExYjUyZTgxMTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC91dGlscy5weQpA
QCAtNDYsNyArNDYsNyBAQCBkZWYgY2FsbCgqYXJncyk6CiAgICAgIiIiCiAgICAgbG9nZ2VyLmRl
YnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3Mu
Y2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChhcmdzKS5kZWNvZGUoJ3V0ZjgnKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvciBhcyBlOgogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiVzIGV4aXRlZCB3aXRoIHJl
dHVybiBjb2RlICVpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJu
Y29kZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQppbmRleCA0MDBkZWJj
ODhlNDY5MTBkMjY0MWU3MjhmYzRhZGI4NmE4ODU2OGUwLi4xOGVkY2MwNGZiNGQ1MjhlNjU2NmRh
MTA5MDJhOWFjOTY0YjQyYTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYu
cHkKQEAgLTMyLDcgKzMyLDkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3QpOgogCiAgICAgQHBy
b3BlcnR5CiAgICAgZGVmIGV4aXN0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNk
aXIoc2VsZi5wYXRoKQorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgYWxzbyBmb3IgbGliX3Bh
dGggYmVjYXVzZSBkaWZmZXJlbnQgcHl0aG9uIHZlcnNpb25zCisgICAgICAgICMgY3JlYXRlIGRp
ZmZlcmVudCBsaWJyYXJ5IHBhdGhzLgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxm
LnBhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKHNlbGYubGliX3BhdGgpCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKaW5kZXgg
OTMzMDFkZDg2YjRmZmUyMDI5MDJhNDkyMjA0ZWJhNjUzN2ZiNTBkNS4uMzk1ZGIwMzk0ZGE2N2Nh
YThiZGMxYWQ5ZTY4OWU1ODMxNzUxOTJiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3dwdC5weQpAQCAt
MzEsNiArMzEsNyBAQCBkZWYgbG9hZF9jb21tYW5kcygpOgogICAgICAgICAgICAgICAgICAgICAi
c2NyaXB0IjogcHJvcHNbInNjcmlwdCJdLAogICAgICAgICAgICAgICAgICAgICAicGFyc2VyIjog
cHJvcHMuZ2V0KCJwYXJzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2tub3duIjog
cHJvcHMuZ2V0KCJwYXJzZV9rbm93biIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgInB5
M29ubHkiOiBwcm9wcy5nZXQoInB5M29ubHkiLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICJoZWxwIjogcHJvcHMuZ2V0KCJoZWxwIiksCiAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFs
ZW52IjogcHJvcHMuZ2V0KCJ2aXJ0dWFsZW52IiwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAg
ICJpbnN0YWxsIjogcHJvcHMuZ2V0KCJpbnN0YWxsIiwgW10pLApAQCAtNDAsMTMgKzQxLDE0IEBA
IGRlZiBsb2FkX2NvbW1hbmRzKCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVmIHBhcnNlX2FyZ3Mo
YXJndiwgY29tbWFuZHMpOgorZGVmIHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHM9bG9hZF9jb21t
YW5kcygpKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlBhdGggdG8g
YW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4gTXVzdCBzZXQgLS12
ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVidWciLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ugb2YgYW4gZXhjZXB0
aW9uIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXB5MyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGhlbHA9IlJ1biB3aXRoIHB5dGhvbjMiKQogICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRk
X3N1YnBhcnNlcnMoZGVzdD0iY29tbWFuZCIpCiAgICAgZm9yIGNvbW1hbmQsIHByb3BzIGluIGl0
ZXJpdGVtcyhjb21tYW5kcyk6CiAgICAgICAgIHN1YnBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5k
LCBoZWxwPXByb3BzWyJoZWxwIl0sIGFkZF9oZWxwPUZhbHNlKQpAQCAtOTMsNyArOTUsOCBAQCBk
ZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigpOgogICAgIGZvciBjb21tYW5kIGluIGNvbW1hbmRz
OgogICAgICAgICBwcm9wcyA9IGNvbW1hbmRzW2NvbW1hbmRdCiAKLSAgICAgICAgaWYgcHJvcHNb
InZpcnR1YWxlbnYiXToKKyAgICAgICAgaWYgKHByb3BzWyJ2aXJ0dWFsZW52Il0gYW5kCisgICAg
ICAgICAgICAobm90IHByb3BzWyJweTNvbmx5Il0gb3Igc3lzLnZlcnNpb25faW5mby5tYWpvciA9
PSAzKSk6CiAgICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KE5vbmUsIEZhbHNlLCBwcm9wcykK
IAogICAgICAgICBzdWJwYXJzZXIgPSBpbXBvcnRfY29tbWFuZCgnd3B0JywgY29tbWFuZCwgcHJv
cHMpWzFdCkBAIC0xMDgsMTIgKzExMSwxNiBAQCBkZWYgY3JlYXRlX2NvbXBsZXRlX3BhcnNlcigp
OgogICAgIHJldHVybiBwYXJzZXIKIAogCitkZWYgdmVudl9kaXIoKToKKyAgICByZXR1cm4gIl92
ZW52IiArIHN0cihzeXMudmVyc2lvbl9pbmZvWzBdKQorCisKIGRlZiBzZXR1cF92aXJ0dWFsZW52
KHBhdGgsIHNraXBfdmVudl9zZXR1cCwgcHJvcHMpOgogICAgIGlmIHNraXBfdmVudl9zZXR1cCBh
bmQgcGF0aCBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNdXN0IHNldCAtLXZl
bnYgd2hlbiAtLXNraXAtdmVudi1zZXR1cCBpcyB1c2VkIikKICAgICBzaG91bGRfc2tpcF9zZXR1
cCA9IHBhdGggaXMgbm90IE5vbmUgYW5kIHNraXBfdmVudl9zZXR1cAogICAgIGlmIHBhdGggaXMg
Tm9uZToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgIl92ZW52IikKKyAg
ICAgICAgcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgdmVudl9kaXIoKSkKICAgICB2ZW52
ID0gdmlydHVhbGVudi5WaXJ0dWFsZW52KHBhdGgsIHNob3VsZF9za2lwX3NldHVwKQogICAgIGlm
IG5vdCBzaG91bGRfc2tpcF9zZXR1cDoKICAgICAgICAgdmVudi5zdGFydCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCisrKyAvZGV2L251bGwK
QEAgLTEsMzAgKzAsMCBAQAotVzNDIDMtY2xhdXNlIEJTRCBMaWNlbnNlCi0KLWh0dHA6Ly93d3cu
dzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGljZW5zZS5odG1sCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0qIFJlZGlzdHJpYnV0aW9ucyBvZiB3b3JrcyBt
dXN0IHJldGFpbiB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSwKLSAgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIGNvcHlyaWdo
dAotICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLSogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgVzNDIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSAgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgd29yayB3aXRo
b3V0Ci0gIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHMudHh0CmluZGV4IDNjZDAxNDQ2ZTI1YmNlYjRkYWRlZjQ4MjU5MTE3YmQwNTdlYTZmNDgu
LjUzMTA3MjFiYmI5MGZhOTRiOTBiNGMxMGQyMDJmYzVhMTNjMDRkNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50cy50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dApAQCAtMSw4ICsxLDkg
QEAKIGh0bWw1bGliPT0xLjAuMQotbW96aW5mbz09MS4xLjAKLW1vemxvZz09NS4wCi1tb3pkZWJ1
Zz09MC4xLjEKLXBpbGxvdz09Ni4yLjEKLXVybGxpYjNbc2VjdXJlXT09MS4yNS43Ci1yZXF1ZXN0
cz09Mi4yMi4wCi1zaXg9PTEuMTMuMAorbW96aW5mbz09MS4yLjEgICMgaHR0cHM6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIyNgorbW96bG9nPT02LjAKK21vemRl
YnVnPT0wLjIKKyMgUGlsbG93IDcgcmVxdWlyZXMgUHl0aG9uIDMKK3BpbGxvdz09Ni4yLjIgICMg
cHl1cDogPDcuMAordXJsbGliM1tzZWN1cmVdPT0xLjI1LjkKK3JlcXVlc3RzPT0yLjIzLjAKK3Np
eD09MS4xNS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZmlyZWZveC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZmlyZWZveC50eHQKaW5kZXggNGNiYjdhNWVjMDI5M2VmZjFlZjE5OGEyMWVj
ZGM5MGZlY2Y0MTQxMS4uMTc2NzA1ZjNhZjUwOGFjYjMxMTdkNzNkNWFiNGYwYzMwNjAyNDY2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19maXJlZm94LnR4dApAQCAtMSwxMSArMSwxMCBAQAogbWFyaW9uZXR0ZV9kcml2ZXI9PTMu
MC4wCi1tb3pjcmFzaD09MS4xLjAKLW1vemRvd25sb2FkPT0xLjI2LjAKK21vemNyYXNoPT0yLjAu
MAogbW96aW5zdGFsbD09Mi4wLjAKIG1vemxlYWs9PTAuMgotbW96bmV0d29yaz09MC4yNworbW96
bmV0d29yaz09MS4xLjAKIG1venByb2Nlc3M9PTEuMC4wCi1tb3pwcm9maWxlPT0yLjQuMAotbW96
cnVubmVyPT03LjcuMAotbW96dmVyc2lvbj09Mi4yLjAKLXBzdXRpbD09NS42LjcKK21venByb2Zp
bGU9PTIuNS4wCittb3pydW5uZXI9PTcuOC4wCittb3p2ZXJzaW9uPT0yLjMuMAorcHN1dGlsPT01
LjcuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVt
ZW50c19zYXVjZS50eHQKaW5kZXggMzJiNWY2NGQxNGZkMDNkZjRlZWFjYjU3ODM5MjEwYTI2YTI4
M2ZhNy4uZTllOTc2NDc3OTZlN2Y5NDBmMmVlZjk4YzcyYjE5ODcxZDMyM2M3MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2Uu
dHh0CkBAIC0xLDMgKzEsMyBAQAogbW96cHJvY2Vzcz09MS4wLjAKIHNlbGVuaXVtPT0zLjE0MS4w
Ci1yZXF1ZXN0cz09Mi4yMi4wCityZXF1ZXN0cz09Mi4yMy4wCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3QucHkKaW5kZXggOGYzMjNhMzM4NmM5OTdjYmNmYTAxM2U2
NTg1MDg2NDcxZGRmYTIwOC4uNDJlN2FiYmJhYjQ5MDkyMzcwNjVjYjAxMjVkYjcxMWExODYwNzg5
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpAQCAt
MSw1ICsxLDQgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWltcG9y
dCBDb25maWdQYXJzZXIKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBA
IC03LDYgKzYsOCBAQCBpbXBvcnQgc3lzCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxv
ZwogZnJvbSBtb3psb2cuaGFuZGxlcnMgaW1wb3J0IEJhc2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVy
CiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBNYWNoRm9ybWF0dGVyCitmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zCitmcm9tIHNpeC5tb3Zlcy5jb25maWdwYXJzZXIgaW1wb3J0IENvbmZp
Z1BhcnNlcgogZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdGNvbW1hbmRsaW5lLCB3cHRydW5uZXIK
IAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQpAQCAt
NTgsNyArNTksNyBAQCBkZWYgdGVzdF9zZXR0aW5ncygpOgogICAgIH0KIAogZGVmIHJlYWRfY29u
ZmlnKCk6Ci0gICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgcGFy
c2VyID0gQ29uZmlnUGFyc2VyKCkKICAgICBwYXJzZXIucmVhZCgidGVzdC5jZmciKQogCiAgICAg
cnYgPSB7ImdlbmVyYWwiOnt9LApAQCAtODMsNyArODQsNyBAQCBkZWYgcnVuX3Rlc3RzKHByb2R1
Y3QsIGt3YXJncyk6CiAKIGRlZiBzZXR0aW5nc190b19hcmd2KHNldHRpbmdzKToKICAgICBydiA9
IFtdCi0gICAgZm9yIG5hbWUsIHZhbHVlIGluIHNldHRpbmdzLml0ZXJpdGVtcygpOgorICAgIGZv
ciBuYW1lLCB2YWx1ZSBpbiBpdGVyaXRlbXMoc2V0dGluZ3MpOgogICAgICAgICBrZXkgPSAiLS0l
cyIgJSBuYW1lCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJ2LmFwcGVuZChr
ZXkpCkBAIC0xMDksNyArMTEwLDcgQEAgZGVmIHJ1bihjb25maWcsIGFyZ3MpOgogCiAgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KHRlc3RzPVtdKQogCi0gICAgZm9yIHByb2R1Y3QsIHByb2R1Y3Rfc2V0
dGluZ3MgaW4gY29uZmlnWyJwcm9kdWN0cyJdLml0ZXJpdGVtcygpOgorICAgIGZvciBwcm9kdWN0
LCBwcm9kdWN0X3NldHRpbmdzIGluIGl0ZXJpdGVtcyhjb25maWdbInByb2R1Y3RzIl0pOgogICAg
ICAgICBpZiBhcmdzLnByb2R1Y3QgYW5kIHByb2R1Y3Qgbm90IGluIGFyZ3MucHJvZHVjdDoKICAg
ICAgICAgICAgIGNvbnRpbnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5p
CmluZGV4IGFkMzUwMmUwMmE5ZTgxMDE2OTQwYzhmMzlmNTY1NDBmNWFiMWYyNmQuLmM1NDRkYTdh
OTVkMmE5ODJjYWI4YjY4YWY1Mzc0NDBiNzFmYTA5NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3RveC5pbmkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdG94LmluaQpAQCAtMiw4ICsyLDggQEAKIHhmYWlsX3N0cmljdD10cnVlCiAKIFt0
b3hdCi1lbnZsaXN0ID0gcHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNh
ZmFyaSxzYXVjZSxzZXJ2byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSxw
eTM2LWJhc2UKLXNraXBfbWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCitlbnZsaXN0ID0gcHky
Ny17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2byx3
ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSx7cHkzNSxweTM2LHB5MzcscHkz
OH0tYmFzZQorc2tpcF9taXNzaW5nX2ludGVycHJldGVycyA9IEZhbHNlCiAKIFt0ZXN0ZW52XQog
ZGVwcyA9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9n
CmluZGV4IDQwNmE1ZmFlMjU2NDI3MjI4NGFjNTcwMGNjMDQ2ZmIwYjY3YzFmNmEuLjU4ZTk3MGEw
ZWRmNmVkZmMxNjA3Yzc2NmE3NjNiZjk1MTUwZjYzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3czYy1pbXBv
cnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCkBAIC0xNCw3ICsxNCw2IEBAIFByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgogTm9uZQogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBMaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL0xJQ0VOU0UKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9NQU5JRkVTVC5pbgogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURN
RS5yc3QKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvYW5kcm9pZF93ZWJsYXllci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lk
X3dlYmxheWVyLnB5CmluZGV4IDkzZjRkNmI2MzBkMjg4Yzc1Zjg4OGNiNzMwNGJiZjhhNDE5NWRi
NmMuLmY3NTU4N2Q4MzlmZmZjZjAzOTAxNzc5YTBiNjUxMjYxOTBiOWQ0ODEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9hbmRyb2lkX3dlYmxheWVyLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xh
c3MgV2VibGF5ZXJTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9hbmRy
b2lkX3dlYnZpZXcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYW5kcm9pZF93ZWJ2aWV3LnB5
CmluZGV4IGRjNjg3YjQ4ZWQ3YTlkZGU4MjczMzRhZThiNTkwOTZjYzU4ZDI0ZDcuLjg3OTA1Njc3
MDdlOTU3YTdiNjVkN2RjMTViYWFkNWUzMTkwYjhiYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9hbmRyb2lkX3dlYnZpZXcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2FuZHJvaWRfd2Vidmlldy5weQpAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNzIFN5c3RlbVdlYlZp
ZXdTaGVsbChCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0
ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhp
bmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4K
LSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2Vs
Zi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKaW5kZXggNjU1MzQ0NTgxOTczYzE1YjY1NzcyOWZl
YjczNmRkMjA3M2Q3OWEzMC4uYTAyN2NmMzI2MTBhNDllNjFmNDE0MWJmYjVmY2U1ZDA1MTM4NWIz
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Jhc2UucHkKQEAgLTMsNiArMyw3IEBAIGltcG9ydCBwbGF0Zm9ybQog
aW1wb3J0IHNvY2tldAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBm
cm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiAKIGZy
b20gLi53cHRjb21tYW5kbGluZSBpbXBvcnQgcmVxdWlyZV9hcmcgICMgbm9xYTogRjQwMQogCkBA
IC0xNDcsMTAgKzE0OCw2IEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICAgICAgIiIiQm9v
bGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJyb3dzZXIgcHJvY2VzcyBpcyBzdGlsbCBydW5u
aW5nIiIiCiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzZXR1cF9zc2woc2VsZiwgaG9zdHMpOgot
ICAgICAgICAiIiJSZXR1cm4gYSBjZXJ0aWZpY2F0ZSB0byB1c2UgZm9yIHRlc3RzIHJlcXVpcmlu
ZyBzc2wgdGhhdCB3aWxsIGJlIHRydXN0ZWQgYnkgdGhlIGJyb3dzZXIiIiIKLSAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3NsIHRlc3Rpbmcgbm90IHN1cHBvcnRlZCIpCi0KICAg
ICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiQnJvd3Nlci1zcGVjaWZpYyBjbGVhbnVw
IHRoYXQgaXMgcnVuIGFmdGVyIHRoZSB0ZXN0cnVuIGlzIGZpbmlzaGVkIiIiCiAgICAgICAgIHBh
c3MKQEAgLTE5OSw1ICsxOTYsNSBAQCBjbGFzcyBFeGVjdXRvckJyb3dzZXIob2JqZWN0KToKICAg
ICB1cCB0aGUgYnJvd3NlciBmcm9tIHRoZSBydW5uZXIgcHJvY2Vzcy4KICAgICAiIiIKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3Mu
aXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhrd2FyZ3MpOgogICAg
ICAgICAgICAgc2V0YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXgg
NTEzZmQ1ZjQyNDkyZmNhNGY2MTE1NmU1NDU5NTc2ZDFjODQ2Njk4YS4uYmFjMWFmZmQzNjUwZTI0
YzRiOTZlZmM2NWU2YjQ2OTJjOWIyYjI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2Nocm9tZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CkBAIC0x
MjUsNyArMTI1LDcgQEAgY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBU
T0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAg
ICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vz
c2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlz
X2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBkZWYg
Y2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9j
aHJvbWVfYW5kcm9pZC5weQppbmRleCBiNGVkYzA1MGQwYzcwOWNmYTQ2N2E0M2I2ZTZhNDEyMDBh
YTA0YzczLi5jZDhjNDBmYWIxZmViMDYyOWE4MTRiMmJiYTY4ZWRlY2FhM2VlOGQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xh
c3MgQ2hyb21lQW5kcm9pZEJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBU
aGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRv
ZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAg
ICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvY2hyb21lX2lvcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVfaW9zLnB5Cmlu
ZGV4IGEwNDI5NjY1YzliYzU3ZTI3YzAyY2U4MWE3ZGViOTA5YjhmYTAwZjUuLjZkYjAxODhlNTVl
YmZmOGQzYTQwZjlhMTVkYzcxNDQxOWVkYWNiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9jaHJvbWVfaW9zLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWVf
aW9zLnB5CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIENocm9tZWlPU0Jyb3dzZXIoQnJvd3Nlcik6
CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMg
YWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIg
YSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBz
ZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUo
KQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlLnB5CmluZGV4IGQ5ZDBhZjExNWNjOWU5YzY0ZTkyN2IxNWNkZDI5MWYzMTRiMDdhZTUu
LjE4YTFlZDc4MTE4OWNjYTIzZGYyYTRlMWI1YjVkY2E4MzBiZDBlYTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9l
ZGdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAg
ICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIgaXMgYWxp
dmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBi
cm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxm
LnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQog
CiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2VkZ2VjaHJvbWl1bS5weQppbmRleCA2MzY4MGI2Nzc0YTI3NTkyNDkxZTY3MWY1M2Yx
NDBiNjVlMTcwNDJiLi41YzUxZjA2NmYwNDQxMzIxNjYwY2FiOTZmNmRlNTFhZjg2OGQzMTBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZWNocm9taXVtLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9lZGdlY2hyb21pdW0ucHkKQEAgLTEwNyw3ICsxMDcsNyBAQCBj
bGFzcyBFZGdlQ2hyb21pdW1Ccm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTog
VGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLA0KICAgICAgICAgIyBhbmQg
ZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbg0KICAg
ICAgICAgIyBpcyBhY3RpdmUuDQotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUN
CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpDQogDQogICAgIGRlZiBjbGVh
bnVwKHNlbGYpOg0KICAgICAgICAgc2VsZi5zdG9wKCkNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZXBpcGhhbnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZXBpcGhhbnku
cHkKaW5kZXggOGEwZTVmNTc4YjJmZWI4NzFkZGQ1MGFiMDgxNjhjNmI5ZDQ1ZTRiMC4uZjZjNGM2
MDJhMzhjMDQzNjM3Y2Y5ZGJjOGJiYjUzNTBlYzk0NTI3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Jyb3dzZXJzL2VwaXBoYW55LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9lcGlw
aGFueS5weQpAQCAtMiw3ICsyLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVs
dGlwbGllciwgbWF5YmVfYWRkX2FyZ3MsIGNlcnRpZmljYXRlX2RvbWFpbl9saXMKIGZyb20gLndl
YmtpdCBpbXBvcnQgV2ViS2l0QnJvd3NlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0
b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRy
aXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTog
RjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZl
ckNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1
dG9yd2Via2l0IGltcG9ydCBXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAx
CiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAiZXBpcGhhbnkiLApAQCAtMTEsNyArMTIs
OCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogImVwaXBoYW55IiwKICAgICAgICAgICAg
ICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAg
ICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1
dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZl
clJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhl
Y3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9r
d2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAg
ICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJlZm94LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJz
L2ZpcmVmb3gucHkKaW5kZXggMGY4MDc1MzM3ODEzNzgzYzc2ZTRiZTRkZWM5Y2M5MzFhNDI1MmM0
MS4uMmRlN2RmMzk2YmQyYTQ4Yjc4NjRhNjZhZWU0YjYyY2ZhMWZiMzY3NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dz
ZXJzL2ZpcmVmb3gucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNp
Z25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2Zyb20gYWJjIGltcG9ydCBBQkNN
ZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBpbXBvcnQgbW96aW5mbwogaW1wb3J0IG1vemxlYWsKQEAg
LTI1LDYgKzI2LDcgQEAgZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcm1hcmlvbmV0dGUgaW1wb3J0
IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgICMg
bm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlV2RzcGVjRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAg
IyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKIAogCiBoZXJlID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQpAQCAtNjMsNiArNjUsOCBA
QCBkZWYgZ2V0X3RpbWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsICoq
a3dhcmdzKToKICAgICAjIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Mzg3MjUKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0gIndpbiIgYW5kIHJ1
bl9pbmZvX2RhdGFbInByb2Nlc3NvciJdID09ICJhYXJjaDY0IjoKICAgICAgICAgcmV0dXJuIDQK
KyAgICBlbGlmIHJ1bl9pbmZvX2RhdGEuZ2V0KCJjY292Iik6CisgICAgICAgIHJldHVybiAyCiAg
ICAgcmV0dXJuIDEKIAogCkBAIC04Miw2ICs4Niw3IEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogICAgICAgICAgICAgImNh
X2NlcnRpZmljYXRlX3BhdGgiOiBjb25maWcuc3NsX2NvbmZpZ1siY2FfY2VydF9wYXRoIl0sCiAg
ICAgICAgICAgICAiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAogICAgICAgICAgICAgImVu
YWJsZV93ZWJyZW5kZXIiOiBrd2FyZ3NbImVuYWJsZV93ZWJyZW5kZXIiXSwKKyAgICAgICAgICAg
ICJlbmFibGVfZmlzc2lvbiI6IGt3YXJnc1siZW5hYmxlX2Zpc3Npb24iXSwKICAgICAgICAgICAg
ICJzdGFja2ZpeF9kaXIiOiBrd2FyZ3NbInN0YWNrZml4X2RpciJdLAogICAgICAgICAgICAgImJp
bmFyeV9hcmdzIjoga3dhcmdzWyJiaW5hcnlfYXJncyJdLAogICAgICAgICAgICAgInRpbWVvdXRf
bXVsdGlwbGllciI6IGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90eXBlLApAQCAtOTMsNyAr
OTgsOCBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25m
aWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdzIjoga3dhcmdzWyJj
aGFvc19tb2RlX2ZsYWdzIl0sCiAgICAgICAgICAgICAiY29uZmlnIjogY29uZmlnLAogICAgICAg
ICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0sCi0gICAg
ICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CisgICAgICAgICAgICAiaGVh
ZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl0sCisgICAgICAgICAgICAicHJlbG9hZF9icm93c2Vy
Ijoga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXX0KIAogCiBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRl
c3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKQEAg
LTE2OCwxNyArMTc0LDEzIEBAIGRlZiBydW5faW5mb19leHRyYXMoKiprd2FyZ3MpOgogICAgICAg
ICAgICJ3YXNtIjoga3dhcmdzLmdldCgid2FzbSIsIFRydWUpLAogICAgICAgICAgICJ2ZXJpZnki
OiBrd2FyZ3NbInZlcmlmeSJdLAogICAgICAgICAgICJoZWFkbGVzcyI6IGt3YXJncy5nZXQoImhl
YWRsZXNzIiwgRmFsc2UpIG9yICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmlyb24sCi0gICAgICAg
ICAgImZpc3Npb24iOiBnZXRfYm9vbF9wcmVmKCJmaXNzaW9uLmF1dG9zdGFydCIpfQorICAgICAg
ICAgICJzdy1lMTBzIjogVHJ1ZSwKKyAgICAgICAgICAiZmlzc2lvbiI6IGt3YXJncy5nZXQoImVu
YWJsZV9maXNzaW9uIikgb3IgZ2V0X2Jvb2xfcHJlZigiZmlzc2lvbi5hdXRvc3RhcnQiKX0KIAog
ICAgICMgVGhlIHZhbHVlIG9mIGBzdy1lMTBzYCBkZWZhdWx0cyB0byB3aGV0aGVyIHRoZSAicGFy
ZW50X2ludGVyY2VwdCIKICAgICAjIGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBj
dXJyZW50IGJ1aWxkLiBUaGlzIHZhbHVlLCBob3dldmVyLAogICAgICMgY2FuIGJlIG92ZXJyaWRk
ZW4gYnkgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwcmVmIHdpdGggdGhlIGAtLXNldHByZWZgIENM
SQotICAgICMgZmxhZywgd2hpY2ggaXMgY2hlY2tlZCBoZXJlLiBJZiBub3Qgc3VwcGxpZWQsIHRo
ZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgIyBgc3ctZTEwc2Agd2lsbCBiZSBmaWxsZWQgaW4gaW4g
YFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCi0gICAgIwotICAgICMgV2UgY2FuJ3QgY2FwdHVyZSB0
aGUgZGVmYXVsdCB2YWx1ZSByaWdodCBub3cgYmVjYXVzZSAoY3VycmVudGx5KSwgaXQKLSAgICAj
IGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgbmlnaHRseV9idWlsZGAsIHdoaWNoIGlzbid0IGtu
b3duIHVudGlsCi0gICAgIyBgUnVuSW5mb2AncyBjb25zdHJ1Y3Rvci4KKyAgICAjIGZsYWcsIHdo
aWNoIGlzIGNoZWNrZWQgaGVyZS4KICAgICBzd19lMTBzX292ZXJyaWRlID0gZ2V0X2Jvb2xfcHJl
Zl9pZl9leGlzdHMoImRvbS5zZXJ2aWNlV29ya2Vycy5wYXJlbnRfaW50ZXJjZXB0IikKICAgICBp
ZiBzd19lMTBzX292ZXJyaWRlIGlzIG5vdCBOb25lOgogICAgICAgICBydlsic3ctZTEwcyJdID0g
c3dfZTEwc19vdmVycmlkZQpAQCAtMjAzLDc5ICsyMDUsNjAgQEAgZGVmIHVwZGF0ZV9wcm9wZXJ0
aWVzKCk6CiAgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBbImJp
dHMiXX0pCiAKIAotY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0gICAgaW5pdF90aW1l
b3V0ID0gNzAKLSAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKK2NsYXNzIEZpcmVmb3hJbnN0YW5j
ZU1hbmFnZXIob2JqZWN0KToKKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4
dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3ltYm9s
c19wYXRoPU5vbmUsIHN0YWNrd2Fsa19iaW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUs
Ci0gICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwg
ZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwgc3RhY2tmaXhfZGlyPU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGJpbmFyeV9hcmdzPU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj1Ob25lLCBsZWFrX2NoZWNr
PUZhbHNlLCBhc2FuPUZhbHNlLAotICAgICAgICAgICAgICAgICBzdHlsb190aHJlYWRzPTEsIGNo
YW9zX21vZGVfZmxhZ3M9Tm9uZSwgY29uZmlnPU5vbmUsIGJyb3dzZXJfY2hhbm5lbD0ibmlnaHRs
eSIsIGhlYWRsZXNzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhz
ZWxmLCBsb2dnZXIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBiaW5h
cnlfYXJncywgcHJvZmlsZV9jcmVhdG9yLCBkZWJ1Z19pbmZvLAorICAgICAgICAgICAgICAgICBj
aGFvc19tb2RlX2ZsYWdzLCBoZWFkbGVzcywgZW5hYmxlX3dlYnJlbmRlciwgc3R5bG9fdGhyZWFk
cywKKyAgICAgICAgICAgICAgICAgbGVha19jaGVjaywgc3RhY2tmaXhfZGlyLCBzeW1ib2xzX3Bh
dGgsIGFzYW4pOgorICAgICAgICAiIiJPYmplY3QgdGhhdCBtYW5hZ2VzIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBpbnN0YW5jZXMgb2YgRmlyZWZveC4iIiIKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKICAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5hcnkKLSAgICAgICAgc2VsZi5wcmVmc19y
b290ID0gcHJlZnNfcm9vdAotICAgICAgICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQotICAg
ICAgICBzZWxmLmV4dHJhX3ByZWZzID0gZXh0cmFfcHJlZnMKLSAgICAgICAgc2VsZi5tYXJpb25l
dHRlX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYucnVubmVyID0gTm9uZQorICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAgICAgc2VsZi5iYXNlX3Byb2ZpbGUgPSBw
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvID0gZGVidWdf
aW5mbwotICAgICAgICBzZWxmLnByb2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuc3ltYm9sc19w
YXRoID0gc3ltYm9sc19wYXRoCi0gICAgICAgIHNlbGYuc3RhY2t3YWxrX2JpbmFyeSA9IHN0YWNr
d2Fsa19iaW5hcnkKLSAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlm
aWNhdGVfcGF0aAotICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGlsX2JpbmFy
eQotICAgICAgICBzZWxmLmUxMHMgPSBlMTBzCisgICAgICAgIHNlbGYuY2hhb3NfbW9kZV9mbGFn
cyA9IGNoYW9zX21vZGVfZmxhZ3MKKyAgICAgICAgc2VsZi5oZWFkbGVzcyA9IGhlYWRsZXNzCiAg
ICAgICAgIHNlbGYuZW5hYmxlX3dlYnJlbmRlciA9IGVuYWJsZV93ZWJyZW5kZXIKLSAgICAgICAg
c2VsZi5iaW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0gICAgICAgIGlmIHN0YWNrZml4X2RpcjoKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4
ZXIgPSBnZXRfc3RhY2tfZml4ZXJfZnVuY3Rpb24oc3RhY2tmaXhfZGlyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN5bWJvbHNf
cGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25l
CisgICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2Vs
Zi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJvbHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAg
ICAgICBzZWxmLmFzYW4gPSBhc2FuCiAKLSAgICAgICAgaWYgdGltZW91dF9tdWx0aXBsaWVyOgot
ICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVvdXQgPSBzZWxmLmluaXRfdGltZW91dCAqIHRpbWVv
dXRfbXVsdGlwbGllcgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxm
LmN1cnJlbnQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5hc2FuID0gYXNhbgotICAgICAgICBzZWxm
LmxzYW5fYWxsb3dlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5sc2FuX21heF9zdGFja19kZXB0aCA9
IE5vbmUKLSAgICAgICAgc2VsZi5tb3psZWFrX2FsbG93ZWQgPSBOb25lCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0gTm9uZQotICAgICAgICBzZWxmLmxlYWtfY2hlY2sgPSBsZWFr
X2NoZWNrCi0gICAgICAgIHNlbGYubGVha19yZXBvcnRfZmlsZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5sc2FuX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxv
X3RocmVhZHMKLSAgICAgICAgc2VsZi5jaGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFn
cwotICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAotICAgICAg
ICBzZWxmLmhlYWRsZXNzID0gaGVhZGxlc3MKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYg
dGVhcmRvd24oc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2V0
dGluZ3Moc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5s
ZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAgICAibHNhbl9hbGxv
d2VkIjogdGVzdC5sc2FuX2FsbG93ZWQsCi0gICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNr
X2RlcHRoIjogdGVzdC5sc2FuX21heF9zdGFja19kZXB0aCwKLSAgICAgICAgICAgICAgICAibW96
bGVha19hbGxvd2VkIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwK
LSAgICAgICAgICAgICAgICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFu
ZCB0ZXN0Lm1vemxlYWtfdGhyZXNob2xkfQorICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBn
ZXQoc2VsZik6CisgICAgICAgICIiIkdldCBhIEJyb3dzZXJJbnN0YW5jZSBmb3IgYSBydW5uaW5n
IEZpcmVmb3guCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgZ3JvdXBfbWV0YWRhdGE9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgotICAgICAgICAgICAg
Z3JvdXBfbWV0YWRhdGEgPSB7fQorICAgICAgICBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNl
IHBlciBpbnN0YW5jZSwgYW5kIGJldHdlZW4gY2FsbHMgc3RvcF9jdXJyZW50KCkKKyAgICAgICAg
bXVzdCBiZSBjYWxsZWQuIiIiCisgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmdyb3VwX21l
dGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEKLSAgICAgICAgc2VsZi5sc2FuX2FsbG93ZWQgPSBrd2Fy
Z3MuZ2V0KCJsc2FuX2FsbG93ZWQiKQotICAgICAgICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRo
ID0ga3dhcmdzLmdldCgibHNhbl9tYXhfc3RhY2tfZGVwdGgiKQotICAgICAgICBzZWxmLm1vemxl
YWtfYWxsb3dlZCA9IGt3YXJncy5nZXQoIm1vemxlYWtfYWxsb3dlZCIpCi0gICAgICAgIHNlbGYu
bW96bGVha190aHJlc2hvbGRzID0ga3dhcmdzLmdldCgibW96bGVha190aHJlc2hvbGRzIikKKyAg
ICBkZWYgc3RvcF9jdXJyZW50KHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgIiIiU2h1dGRv
d24gdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgRmlyZWZveC4KIAotICAgICAgICBpZiBzZWxmLm1h
cmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5tYXJpb25ldHRlX3BvcnQg
PSBnZXRfZnJlZV9wb3J0KCkKKyAgICAgICAgVGhlIEJyb3dzZXJJbnN0YW5jZSByZW1haW5zIGF2
YWlsYWJsZSB0aHJvdWdoIHNlbGYucHJldmlvdXMsIHNpbmNlIHNvbWUKKyAgICAgICAgb3BlcmF0
aW9ucyBoYXBwZW4gYWZ0ZXIgc2h1dGRvd24uIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmN1cnJl
bnQ6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmFzYW46Ci0gICAgICAg
ICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsuTFNBTkxlYWtzKHNlbGYubG9nZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZT1n
cm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5fYWxsb3dlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVj
b3JkZWRGcmFtZXM9c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKKyAgICAgICAgc2VsZi5jdXJy
ZW50LnN0b3AoZm9yY2UpCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxmLmN1cnJlbnQKKyAg
ICAgICAgc2VsZi5jdXJyZW50ID0gTm9uZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAg
ICAiIiJTdGFydCBhbiBpbnN0YW5jZSBvZiBGaXJlZm94LCByZXR1cm5pbmcgYSBCcm93c2VySW5z
dGFuY2UgaGFuZGxlIiIiCisgICAgICAgIHByb2ZpbGUgPSBzZWxmLmJhc2VfcHJvZmlsZS5jbG9u
ZShzZWxmLmJhc2VfcHJvZmlsZS5wcm9maWxlKQorCisgICAgICAgIG1hcmlvbmV0dGVfcG9ydCA9
IGdldF9mcmVlX3BvcnQoKQorICAgICAgICBwcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Im1hcmlv
bmV0dGUucG9ydCI6IG1hcmlvbmV0dGVfcG9ydH0pCiAKICAgICAgICAgZW52ID0gdGVzdF9lbnZp
cm9ubWVudCh4cmVQYXRoPW9zLnBhdGguZGlybmFtZShzZWxmLmJpbmFyeSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI9c2VsZi5kZWJ1Z19pbmZvIGlzIG5vdCBOb25l
LApAQCAtMjkyLDQwICsyNzUsNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0gIjAiCiAKLSAg
ICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQotCi0gICAgICAgIHNlbGYucHJv
ZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAgICBz
ZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRlLnBv
cnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKLSAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2Nh
bERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCi0gICAgICAgICAg
ICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCi0gICAgICAgICAgICAjIFRPRE86IFJl
bW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcgOTA1NDA0KQot
ICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCi0gICAgICAgICAgICAicGxhY2Vz
Lmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6
IFRydWUsCi0gICAgICAgIH0pCi0gICAgICAgIGlmIHNlbGYuZTEwczoKLSAgICAgICAgICAgIHNl
bGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFy
dCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKLSAg
ICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJsYXlvdXQuaW50ZXJydXB0
aWJsZS1yZWZsb3cuZW5hYmxlZCI6IEZhbHNlfSkKLQotICAgICAgICBpZiBzZWxmLmxlYWtfY2hl
Y2s6Ci0gICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wcm9maWxlLnByb2ZpbGUsICJydW50ZXN0c19sZWFrc18lcy5sb2ciICUgb3MuZ2V0cGlkKCkp
Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpOgot
ICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLmxlYWtfcmVwb3J0X2ZpbGUpCi0gICAgICAg
ICAgICBlbnZbIlhQQ09NX01FTV9CTE9BVF9MT0ciXSA9IHNlbGYubGVha19yZXBvcnRfZmlsZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQot
Ci0gICAgICAgICMgQnVnIDEyNjI5NTQ6IHdpbnhwICsgZTEwcywgZGlzYWJsZSBod2FjY2VsCi0g
ICAgICAgIGlmIChzZWxmLmUxMHMgYW5kIHBsYXRmb3JtLnN5c3RlbSgpIGluICgiV2luZG93cyIs
ICJNaWNyb3NvZnQiKSBhbmQKLSAgICAgICAgICAgICc1LjEnIGluIHBsYXRmb3JtLnZlcnNpb24o
KSk6Ci0gICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5ZXJzLmFj
Y2VsZXJhdGlvbi5kaXNhYmxlZCI6IFRydWV9KQotCi0gICAgICAgIGlmIHNlbGYuY2FfY2VydGlm
aWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3NsKCkKLQog
ICAgICAgICBhcmdzID0gc2VsZi5iaW5hcnlfYXJnc1s6XSBpZiBzZWxmLmJpbmFyeV9hcmdzIGVs
c2UgW10KICAgICAgICAgYXJncyArPSBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJvdXQ6Ymxh
bmsiXQogCkBAIC0zMzMsNjAgKzI4MiwxMDEgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nl
cik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQog
Ci0gICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXNlbGYucHJvZmls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeT1jbWRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfYXJncz17InByb2Nlc3NPdXRw
dXRMaW5lIjogW3NlbGYub25fb3V0cHV0XX0pCisgICAgICAgIGlmIHNlbGYubGVha19jaGVjazoK
KyAgICAgICAgICAgIGxlYWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocHJvZmlsZS5wcm9m
aWxlLCAicnVudGVzdHNfbGVha3NfJXMubG9nIiAlIG9zLmdldHBpZCgpKQorICAgICAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMobGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICAgICAgICAgb3Mu
cmVtb3ZlKGxlYWtfcmVwb3J0X2ZpbGUpCisgICAgICAgICAgICBlbnZbIlhQQ09NX01FTV9CTE9B
VF9MT0ciXSA9IGxlYWtfcmVwb3J0X2ZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxl
YWtfcmVwb3J0X2ZpbGUgPSBOb25lCisKKyAgICAgICAgb3V0cHV0X2hhbmRsZXIgPSBPdXRwdXRI
YW5kbGVyKHNlbGYubG9nZ2VyLCBzZWxmLnN0YWNrZml4X2Rpciwgc2VsZi5zeW1ib2xzX3BhdGgs
IHNlbGYuYXNhbikKKyAgICAgICAgcnVubmVyID0gRmlyZWZveFJ1bm5lcihwcm9maWxlPXByb2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5PWNtZFswXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRhcmdzPWNtZFsxOl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0TGluZSI6IFtvdXRw
dXRfaGFuZGxlcl19KQorICAgICAgICBpbnN0YW5jZSA9IEJyb3dzZXJJbnN0YW5jZShzZWxmLmxv
Z2dlciwgcnVubmVyLCBtYXJpb25ldHRlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dF9oYW5kbGVyLCBsZWFrX3JlcG9ydF9maWxlKQogCiAgICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBGaXJlZm94IikKLQotICAgICAgICBzZWxmLnJ1bm5l
ci5zdGFydChkZWJ1Z19hcmdzPWRlYnVnX2FyZ3MsIGludGVyYWN0aXZlPXNlbGYuZGVidWdfaW5m
byBhbmQgc2VsZi5kZWJ1Z19pbmZvLmludGVyYWN0aXZlKQorICAgICAgICBydW5uZXIuc3RhcnQo
ZGVidWdfYXJncz1kZWJ1Z19hcmdzLCBpbnRlcmFjdGl2ZT1zZWxmLmRlYnVnX2luZm8gYW5kIHNl
bGYuZGVidWdfaW5mby5pbnRlcmFjdGl2ZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkZp
cmVmb3ggU3RhcnRlZCIpCiAKLSAgICBkZWYgbG9hZF9wcmVmcyhzZWxmKToKLSAgICAgICAgcHJl
ZnMgPSBQcmVmZXJlbmNlcygpCi0KLSAgICAgICAgcHJlZl9wYXRocyA9IFtdCi0KLSAgICAgICAg
cHJvZmlsZXMgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJvZmlsZXMuanNvbicp
Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKLSAgICAgICAgICAgIHdpdGgg
b3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBq
c29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAgICAgICAgICAgICAgICAg
aWYgc2VsZi5icm93c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19y
b290LCBuYW1lLCAndXNlci5qcycpKQotICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgIT0g
J3VuaXR0ZXN0LWZlYXR1cmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMu
YXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZpbGVzIHVzZWQgYmVm
b3JlIHRoZSBjcmVhdGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hlbiBubyBsb25nZXIg
c3VwcG9ydGVkKQotICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAoCi0gICAgICAgICAg
ICAgICAgb3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgJ3ByZWZzX2dlbmVyYWwuanMnKSwg
ICAjIFVzZWQgaW4gRmlyZWZveCA2MCBhbmQgYmVsb3cKLSAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4oc2VsZi5wcmVmc19yb290LCAnY29tbW9uJywgJ3VzZXIuanMnKSwgICMgVXNlZCBpbiBG
aXJlZm94IDYxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBsZWdhY3lf
cHJlZl9wYXRoczoKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAg
ICAgICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQocGF0aCkKLQotICAgICAgICBmb3Ig
cGF0aCBpbiBwcmVmX3BhdGhzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6
Ci0gICAgICAgICAgICAgICAgcHJlZnMuYWRkKFByZWZlcmVuY2VzLnJlYWRfcHJlZnMocGF0aCkp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IkZhaWxlZCB0byBmaW5kIGJhc2UgcHJlZnMgZmlsZSBpbiAlcyIgJSBwYXRoKQotCi0gICAgICAg
ICMgQWRkIGFueSBjdXN0b20gcHJlZmVyZW5jZXMKLSAgICAgICAgcHJlZnMuYWRkKHNlbGYuZXh0
cmFfcHJlZnMsIGNhc3Q9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworY2xhc3Mg
U2luZ2xlSW5zdGFuY2VNYW5hZ2VyKEZpcmVmb3hJbnN0YW5jZU1hbmFnZXIpOgorICAgICIiIkZp
cmVmb3hJbnN0YW5jZU1hbmFnZXIgdGhhdCBtYW5hZ2VzIGEgc2luZ2xlIEZpcmVmb3ggaW5zdGFu
Y2UiIiIKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuY3VycmVu
dCwgKCJUcmllZCB0byBjYWxsIGdldCgpIG9uIEluc3RhbmNlTWFuYWdlciB0aGF0IGhhcyAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGV4aXN0aW5nIGluc3RhbmNlIikK
KyAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKKyAgICAgICAgICAgIHNlbGYucHJldmlvdXMuY2xl
YW51cCgpCisgICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLmN1
cnJlbnQgPSBzZWxmLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudAorCisgICAg
ZGVmIHRlYXJkb3duKHNlbGYsIGZvcmNlPUZhbHNlKToKKyAgICAgICAgZm9yIGluc3RhbmNlIGlu
IFtzZWxmLnByZXZpb3VzLCBzZWxmLmN1cnJlbnRdOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6
CisgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RvcChmb3JjZSkKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBQcmVsb2FkSW5zdGFuY2VNYW5hZ2VyKEZpcmVm
b3hJbnN0YW5jZU1hbmFnZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICAiIiJGaXJlZm94SW5zdGFuY2VNYW5hZ2VyIHRoYXQga2VlcHMgb25jZSBG
aXJlZm94IGluc3RhbmNlIHByZWxvYWRlZAorICAgICAgICB0byBhbGxvdyByYXBpZCByZXN1bXB0
aW9uIGFmdGVyIGFuIGluc3RhbmNlIHNodXRzIGRvd24uIiIiCisgICAgICAgIHN1cGVyKFByZWxv
YWRJbnN0YW5jZU1hbmFnZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAg
ICAgc2VsZi5wZW5kaW5nID0gTm9uZQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLmN1cnJlbnQsICgiVHJpZWQgdG8gY2FsbCBnZXQoKSBvbiBJbnN0YW5jZU1h
bmFnZXIgdGhhdCBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBl
eGlzdGluZyBpbnN0YW5jZSIpCisgICAgICAgIGlmIHNlbGYucHJldmlvdXM6CisgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5v
bmUKKyAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZzoKKyAgICAgICAgICAgIHNlbGYucGVuZGlu
ZyA9IHNlbGYuc3RhcnQoKQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBzZWxmLnBlbmRpbmcKKyAg
ICAgICAgc2VsZi5wZW5kaW5nID0gc2VsZi5zdGFydCgpCisgICAgICAgIHJldHVybiBzZWxmLmN1
cnJlbnQKKworICAgIGRlZiB0ZWFyZG93bihzZWxmLCBmb3JjZT1GYWxzZSk6CisgICAgICAgIGZv
ciBpbnN0YW5jZSwgc2tpcF9tYXJpb25ldHRlIGluIFsoc2VsZi5wcmV2aW91cywgRmFsc2UpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY3VycmVudCwg
RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYu
cGVuZGluZywgVHJ1ZSldOgorICAgICAgICAgICAgaWYgaW5zdGFuY2U6CisgICAgICAgICAgICAg
ICAgaW5zdGFuY2Uuc3RvcChmb3JjZSwgc2tpcF9tYXJpb25ldHRlPXNraXBfbWFyaW9uZXR0ZSkK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS5jbGVhbnVwKCkKKworCitjbGFzcyBCcm93c2VySW5z
dGFuY2Uob2JqZWN0KToKKyAgICBzaHV0ZG93bl90aW1lb3V0ID0gNzAKIAotICAgICAgICByZXR1
cm4gcHJlZnMoKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHJ1bm5lciwgbWFyaW9u
ZXR0ZV9wb3J0LCBvdXRwdXRfaGFuZGxlciwgbGVha19yZXBvcnRfZmlsZSk6CisgICAgICAgICIi
IkhhbmRsZSB0byBhIHJ1bm5pbmcgRmlyZWZveCBpbnN0YW5jZSIiIgorICAgICAgICBzZWxmLmxv
Z2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnJ1bm5lciA9IHJ1bm5lcgorICAgICAgICBzZWxm
Lm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0dGVfcG9ydAorICAgICAgICBzZWxmLm91dHB1dF9o
YW5kbGVyID0gb3V0cHV0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0g
bGVha19yZXBvcnRfZmlsZQogCi0gICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAg
IGRlZiBzdG9wKHNlbGYsIGZvcmNlPUZhbHNlLCBza2lwX21hcmlvbmV0dGU9RmFsc2UpOgorICAg
ICAgICAiIiJTdG9wIEZpcmVmb3giIiIKICAgICAgICAgaWYgc2VsZi5ydW5uZXIgaXMgbm90IE5v
bmUgYW5kIHNlbGYucnVubmVyLmlzX3J1bm5pbmcoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJTdG9wcGluZyBGaXJlZm94ICVzIiAlIHNlbGYucGlkKCkpCisgICAgICAgICAgICBz
aHV0ZG93bl9tZXRob2RzID0gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVyLndhaXQoc2VsZi5z
aHV0ZG93bl90aW1lb3V0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxz
ZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNpZ25hbC5TSUdURVJNKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgbGFtYmRhOiBzZWxmLnJ1bm5lci5zdG9wKHNp
Z25hbC5TSUdLSUxMKSldCisgICAgICAgICAgICBpZiBza2lwX21hcmlvbmV0dGU6CisgICAgICAg
ICAgICAgICAgc2h1dGRvd25fbWV0aG9kcyA9IHNodXRkb3duX21ldGhvZHNbMTpdCiAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBGb3IgRmlyZWZveCB3ZSBhc3N1bWUgdGhhdCBz
dG9wcGluZyB0aGUgcnVubmVyIHByb21wdHMgdGhlCiAgICAgICAgICAgICAgICAgIyBicm93c2Vy
IHRvIHNodXQgZG93bi4gVGhpcyBhbGxvd3MgdGhlIGxlYWsgbG9nIHRvIGJlIHdyaXR0ZW4KLSAg
ICAgICAgICAgICAgICBmb3IgY2xlYW4sIHN0b3BfZiBpbiBbKFRydWUsIGxhbWJkYTogc2VsZi5y
dW5uZXIud2FpdChzZWxmLnNodXRkb3duX3RpbWVvdXQpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFs
LlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNl
LCBsYW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR0tJTEwpKV06CisgICAgICAgICAg
ICAgICAgZm9yIGNsZWFuLCBzdG9wX2YgaW4gc2h1dGRvd25fbWV0aG9kczoKICAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGZvcmNlIG9yIG5vdCBjbGVhbjoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldGNvZGUgPSBzdG9wX2YoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29k
ZSBpcyBub3QgTm9uZToKQEAgLTM5NSwyMyArMzg1LDggQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAj
IFRoaXMgY2FuIGhhcHBlbiBvbiBXaW5kb3dzIGlmIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgZGVh
ZAogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5wcm9jZXNzX2xlYWtzKCkKLSAg
ICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInN0b3BwZWQiKQotCi0gICAgZGVmIHByb2Nlc3NfbGVh
a3Moc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlBST0NFU1MgTEVBS1MgJXMiICUg
c2VsZi5sZWFrX3JlcG9ydF9maWxlKQotICAgICAgICBpZiBzZWxmLmxzYW5faGFuZGxlcjoKLSAg
ICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyLnByb2Nlc3MoKQotICAgICAgICBpZiBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtb3psZWFrLnByb2Nlc3Nf
bGVha19sb2coCi0gICAgICAgICAgICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlLAotICAgICAg
ICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKLSAgICAg
ICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0sCi0gICAgICAgICAg
ICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNrX2ZpeGVyPXNlbGYu
c3RhY2tfZml4ZXIsCi0gICAgICAgICAgICAgICAgc2NvcGU9c2VsZi5ncm91cF9tZXRhZGF0YS5n
ZXQoInNjb3BlIiksCi0gICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLm1vemxlYWtfYWxsb3dl
ZAotICAgICAgICAgICAgKQorICAgICAgICBpZiBub3Qgc2tpcF9tYXJpb25ldHRlOgorICAgICAg
ICAgICAgc2VsZi5vdXRwdXRfaGFuZGxlci5hZnRlcl9zdG9wKCkKIAogICAgIGRlZiBwaWQoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlciBpcyBOb25lOgpAQCAt
NDIyLDQ0ICszOTcsMjA4IEBAIGNsYXNzIEZpcmVmb3hCcm93c2VyKEJyb3dzZXIpOgogICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIG9uX291dHB1dChzZWxmLCBsaW5lKToKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAg
ICAgIGlmIHNlbGYucnVubmVyOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLmlzX3J1
bm5pbmcoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgor
ICAgICAgICAjIG1venByb2ZpbGUgaGFuZGxlcyBkZWxldGluZyB0aGUgcHJvZmlsZSB3aGVuIHRo
ZSByZWZjb3VudCByZWFjaGVzIDAKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKworY2xh
c3MgT3V0cHV0SGFuZGxlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIs
IHN0YWNrZml4X2Rpciwgc3ltYm9sc19wYXRoLCBhc2FuKToKKyAgICAgICAgIiIiRmlsdGVyIGZv
ciBoYW5kbGluZyBGaXJlZm94IHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFRoaXMgcmVjZWl2
ZXMgRmlyZWZveCBwcm9jZXNzIG91dHB1dCBpbiB0aGUgX19jYWxsX18gZnVuY3Rpb24sIGRvZXMK
KyAgICAgICAgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aGF0J3MgcmVxdWlyZWQsIGFuZCBk
ZWNpZGVzIHdoZXRoZXIgdG8gbG9nCisgICAgICAgIHRoZSBvdXRwdXQuIEJlY2F1c2UgdGhlIEZp
cmVmb3ggcHJvY2VzcyBjYW4gYmUgc3RhcnRlZCBiZWZvcmUgd2Uga25vdworICAgICAgICB3aGlj
aCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgd2UgYnVmZmVyIGFsbCBvdXRwdXQg
dW50aWwKKyAgICAgICAgc2V0dXAoKSBpcyBjYWxsZWQuIFRoaXMgaXMgcmVzcG9uc2libGUgZm9y
IGRvaW5nIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uCisgICAgICAgIG9mIHRoZSBvdXRwdXQgaGFu
ZGxlcnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAg
ICAgICMgVGhlc2UgYXJlIGZpbGxlZCBpbiBhZnRlciBzZXR1cCgpIGlzIGNhbGxlZAorICAgICAg
ICBzZWxmLmluc3RhbmNlID0gTm9uZQorCisgICAgICAgIHNlbGYuc3ltYm9sc19wYXRoID0gc3lt
Ym9sc19wYXRoCisgICAgICAgIGlmIHN0YWNrZml4X2RpcjoKKyAgICAgICAgICAgICMgV2UgaGlk
ZSBlcnJvcnMgYmVjYXVzZSB0aGV5IGNhdXNlIGRpc2NvbmNlcnRpbmcgYENSSVRJQ0FMYAorICAg
ICAgICAgICAgIyB3YXJuaW5ncyBpbiB3ZWIgcGxhdGZvcm0gdGVzdCBvdXRwdXQuCisgICAgICAg
ICAgICBzZWxmLnN0YWNrX2ZpeGVyID0gZ2V0X3N0YWNrX2ZpeGVyX2Z1bmN0aW9uKHN0YWNrZml4
X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcnM9VHJ1ZSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHNlbGYuc3RhY2tfZml4ZXIgPSBOb25lCisgICAgICAgIHNlbGYuYXNhbiA9
IGFzYW4KKworICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t
b3psZWFrX2FsbG93ZWQgPSBOb25lCisgICAgICAgIHNlbGYubW96bGVha190aHJlc2hvbGRzID0g
Tm9uZQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0ge30KKworICAgICAgICBzZWxmLmxp
bmVfYnVmZmVyID0gW10KKyAgICAgICAgc2VsZi5zZXR1cF9yYW4gPSBGYWxzZQorCisgICAgZGVm
IHNldHVwKHNlbGYsIGluc3RhbmNlPU5vbmUsIGdyb3VwX21ldGFkYXRhPU5vbmUsIGxzYW5fZGlz
YWJsZWQ9RmFsc2UsCisgICAgICAgICAgICAgIGxzYW5fYWxsb3dlZD1Ob25lLCBsc2FuX21heF9z
dGFja19kZXB0aD1Ob25lLCBtb3psZWFrX2FsbG93ZWQ9Tm9uZSwKKyAgICAgICAgICAgICAgbW96
bGVha190aHJlc2hvbGRzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ29uZmlndXJlIHRo
ZSBvdXRwdXQgaGFuZGxlciIiIgorICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKKwor
ICAgICAgICBpZiBncm91cF9tZXRhZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbWV0
YWRhdGEgPSB7fQorICAgICAgICBzZWxmLmdyb3VwX21ldGFkYXRhID0gZ3JvdXBfbWV0YWRhdGEK
KworICAgICAgICBzZWxmLm1vemxlYWtfYWxsb3dlZCA9IG1vemxlYWtfYWxsb3dlZAorICAgICAg
ICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IG1vemxlYWtfdGhyZXNob2xkcworCisgICAgICAg
IGlmIHNlbGYuYXNhbjoKKyAgICAgICAgICAgIHNlbGYubHNhbl9oYW5kbGVyID0gbW96bGVhay5M
U0FOTGVha3Moc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjb3BlPWdyb3VwX21ldGFkYXRhLmdldCgic2NvcGUiLCAiLyIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2Vk
PWxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9bHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93QWxsPWxz
YW5fZGlzYWJsZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxl
ciA9IE5vbmUKKworICAgICAgICBzZWxmLnNldHVwX3JhbiA9IFRydWUKKworICAgICAgICBmb3Ig
bGluZSBpbiBzZWxmLmxpbmVfYnVmZmVyOgorICAgICAgICAgICAgc2VsZi5fX2NhbGxfXyhsaW5l
KQorICAgICAgICBzZWxmLmxpbmVfYnVmZmVyID0gW10KKworICAgIGRlZiBhZnRlcl9zdG9wKHNl
bGYpOgorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJQUk9DRVNTIExFQUtTICVzIiAlIHNlbGYu
aW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSkKKyAgICAgICAgaWYgc2VsZi5sc2FuX2hhbmRsZXI6
CisgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlci5wcm9jZXNzKCkKKyAgICAgICAgaWYgc2Vs
Zi5pbnN0YW5jZS5sZWFrX3JlcG9ydF9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBX
ZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5nIGxlYWtzIGluIHRoZSB0YWIgYmVjYXVzZSBpdCBjYW4g
aGFwcGVuIHRoYXQgdGhlCisgICAgICAgICAgICAjIGNvbnRlbnQgcHJvY2VzcyBjcmFzaGVkIGFu
ZCBpbiB0aGF0IGNhc2Ugd2UgZG9uJ3Qgd2FudCB0aGUgdGVzdCB0byBmYWlsLgorICAgICAgICAg
ICAgIyBJZGVhbGx5IHdlIHdvdWxkIHJlY29yZCB3aGljaCBjb250ZW50IHByb2Nlc3MgY3Jhc2hl
ZCBhbmQganVzdCBza2lwIHRob3NlLgorICAgICAgICAgICAgbW96bGVhay5wcm9jZXNzX2xlYWtf
bG9nKAorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UubGVha19yZXBvcnRfZmlsZSwKKyAg
ICAgICAgICAgICAgICBsZWFrX3RocmVzaG9sZHM9c2VsZi5tb3psZWFrX3RocmVzaG9sZHMsCisg
ICAgICAgICAgICAgICAgaWdub3JlX21pc3NpbmdfbGVha3M9WyJ0YWIiLCAiZ21wbHVnaW4iXSwK
KyAgICAgICAgICAgICAgICBsb2c9c2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgc3RhY2tf
Zml4ZXI9c2VsZi5zdGFja19maXhlciwKKyAgICAgICAgICAgICAgICBzY29wZT1zZWxmLmdyb3Vw
X21ldGFkYXRhLmdldCgic2NvcGUiKSwKKyAgICAgICAgICAgICAgICBhbGxvd2VkPXNlbGYubW96
bGVha19hbGxvd2VkKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGxpbmUpOgogICAgICAgICAi
IiJXcml0ZSBhIGxpbmUgb2Ygb3V0cHV0IGZyb20gdGhlIGZpcmVmb3ggcHJvY2VzcyB0byB0aGUg
bG9nIiIiCi0gICAgICAgIGlmICJHTGliLUdPYmplY3QtQ1JJVElDQUwiIGluIGxpbmU6CisgICAg
ICAgIGlmIGIiR0xpYi1HT2JqZWN0LUNSSVRJQ0FMIiBpbiBsaW5lOgogICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXR1cF9yYW46
CisgICAgICAgICAgICAgICAgc2VsZi5saW5lX2J1ZmZlci5hcHBlbmQobGluZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRhdGEgPSBsaW5lLmRlY29kZSgidXRmOCIsICJy
ZXBsYWNlIikKICAgICAgICAgICAgIGlmIHNlbGYuc3RhY2tfZml4ZXI6CiAgICAgICAgICAgICAg
ICAgZGF0YSA9IHNlbGYuc3RhY2tfZml4ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIHNlbGYubHNh
bl9oYW5kbGVyOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmxzYW5faGFuZGxlci5sb2co
ZGF0YSkKICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIucHJvY2Vzc19vdXRwdXQoc2VsZi5waWQoKSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLmluc3RhbmNlIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UucnVubmVyLnByb2Nl
c3NfaGFuZGxlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9jZXNzX2hhbmRsZXIucGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD0iICIuam9pbihzZWxmLnJ1bm5lci5jb21t
YW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PSIgIi5qb2luKHNlbGYuaW5zdGFuY2UucnVubmVyLmNvbW1hbmQpKQogCi0gICAgZGVmIGlzX2Fs
aXZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAgICAgIHJldHVybiBz
ZWxmLnJ1bm5lci5pc19ydW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYg
Y2xlYW51cChzZWxmLCBmb3JjZT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuc3RvcChmb3JjZSkKK2Ns
YXNzIFByb2ZpbGVDcmVhdG9yKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzLCBlMTBzLAorICAg
ICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9jaGFubmVsLCBiaW5hcnksIGNl
cnR1dGlsX2JpbmFyeSwgY2FfY2VydGlmaWNhdGVfcGF0aCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJlZnNfcm9vdCA9IHByZWZzX3Jvb3QKKyAgICAgICAg
c2VsZi5jb25maWcgPSBjb25maWcKKyAgICAgICAgc2VsZi50ZXN0X3R5cGUgPSB0ZXN0X3R5cGUK
KyAgICAgICAgc2VsZi5leHRyYV9wcmVmcyA9IGV4dHJhX3ByZWZzCisgICAgICAgIHNlbGYuZTEw
cyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfZmlzc2lvbiA9IGVuYWJsZV9maXNzaW9uCisg
ICAgICAgIHNlbGYuYnJvd3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNl
bGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmljYXRlX3BhdGgKKyAgICAgICAgc2Vs
Zi5iaW5hcnkgPSBiaW5hcnkKKyAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRp
bF9iaW5hcnkKKyAgICAgICAgc2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoID0gY2FfY2VydGlmaWNh
dGVfcGF0aAogCi0gICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6Ci0gICAgICAgIGFzc2Vy
dCBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBub3QgTm9uZQotICAgICAgICByZXR1cm4gRXhlY3V0
b3JCcm93c2VyLCB7Im1hcmlvbmV0dGVfcG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fQorICAg
IGRlZiBjcmVhdGUoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSBhIEZpcmVmb3ggcHJvZmlsZSBh
bmQgcmV0dXJuIHRoZSBtb3pwcm9maWxlIFByb2ZpbGUgb2JqZWN0IHBvaW50aW5nIGF0IHRoYXQK
KyAgICAgICAgcHJvZmlsZSIiIgorICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYuX2xvYWRfcHJl
ZnMoKQogCi0gICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgotICAgICAg
ICBkdW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgIm1pbmlkdW1w
cyIpCisgICAgICAgIHByb2ZpbGUgPSBGaXJlZm94UHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJl
bmNlcykKKyAgICAgICAgc2VsZi5fc2V0X3JlcXVpcmVkX3ByZWZzKHByb2ZpbGUpCisgICAgICAg
IGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNl
bGYuX3NldHVwX3NzbChwcm9maWxlKQorCisgICAgICAgIHJldHVybiBwcm9maWxlCisKKyAgICBk
ZWYgX2xvYWRfcHJlZnMoc2VsZik6CisgICAgICAgIHByZWZzID0gUHJlZmVyZW5jZXMoKQorCisg
ICAgICAgIHByZWZfcGF0aHMgPSBbXQogCi0gICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxv
Z19jcmFzaGVzKHNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxrX2JpbmFy
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9j
ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3Qp
KQorICAgICAgICBwcm9maWxlcyA9IG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdwcm9m
aWxlcy5qc29uJykKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocHJvZmlsZXMpOgorICAgICAg
ICAgICAgd2l0aCBvcGVuKHByb2ZpbGVzLCAncicpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZv
ciBuYW1lIGluIGpzb24ubG9hZChmaClbJ3dlYi1wbGF0Zm9ybS10ZXN0cyddOgorICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLmJyb3dzZXJfY2hhbm5lbCBpbiAoTm9uZSwgJ25pZ2h0bHknKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihz
ZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCisgICAgICAgICAgICAgICAgICAgIGVs
aWYgbmFtZSAhPSAndW5pdHRlc3QtZmVhdHVyZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAg
cHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNfcm9vdCwgbmFtZSwgJ3Vz
ZXIuanMnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT2xkIHByZWZlcmVuY2UgZmls
ZXMgdXNlZCBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHByb2ZpbGVzLmpzb24gKHJlbW92ZSB3aGVu
IG5vIGxvbmdlciBzdXBwb3J0ZWQpCisgICAgICAgICAgICBsZWdhY3lfcHJlZl9wYXRocyA9ICgK
KyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCAncHJlZnNfZ2Vu
ZXJhbC5qcycpLCAgICMgVXNlZCBpbiBGaXJlZm94IDYwIGFuZCBiZWxvdworICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihzZWxmLnByZWZzX3Jvb3QsICdjb21tb24nLCAndXNlci5qcycpLCAg
IyBVc2VkIGluIEZpcmVmb3ggNjEKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBwYXRo
IGluIGxlZ2FjeV9wcmVmX3BhdGhzOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBwcmVmX3BhdGhzLmFwcGVuZChwYXRoKQorCisg
ICAgICAgIGZvciBwYXRoIGluIHByZWZfcGF0aHM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBwcmVmcy5hZGQoUHJlZmVyZW5jZXMucmVhZF9w
cmVmcyhwYXRoKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIud2FybmluZygiRmFpbGVkIHRvIGZpbmQgYmFzZSBwcmVmcyBmaWxlIGluICVzIiAlIHBhdGgp
CiAKLSAgICBkZWYgc2V0dXBfc3NsKHNlbGYpOgorICAgICAgICAjIEFkZCBhbnkgY3VzdG9tIHBy
ZWZlcmVuY2VzCisgICAgICAgIHByZWZzLmFkZChzZWxmLmV4dHJhX3ByZWZzLCBjYXN0PVRydWUp
CisKKyAgICAgICAgcmV0dXJuIHByZWZzKCkKKworICAgIGRlZiBfc2V0X3JlcXVpcmVkX3ByZWZz
KHNlbGYsIHByb2ZpbGUpOgorICAgICAgICAiIiJTZXQgcHJlZmVyZW5jZXMgcmVxdWlyZWQgZm9y
IHdwdHJ1bm5lciB0byBmdW5jdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0
IHNldCB0aGUgbWFyaW9uZXR0ZSBwb3J0LCBzaW5jZSB3ZSBkb24ndCBhbHdheXMKKyAgICAgICAg
a25vdyB0aGF0IGF0IHByb2ZpbGUgY3JlYXRpb24gdGltZS4gU28gdGhlIGNhbGxlciBpcyByZXNw
b25pc2JsZSBmb3IKKyAgICAgICAgc2V0dGluZyB0aGF0IG9uY2UgaXQncyBhdmFpbGFibGUuIiIi
CisgICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKKyAgICAgICAgICAgICJuZXR3b3Jr
LmRucy5sb2NhbERvbWFpbnMiOiAiLCIuam9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCisg
ICAgICAgICAgICAiZG9tLmZpbGUuY3JlYXRlSW5DaGlsZCI6IFRydWUsCisgICAgICAgICAgICAj
IFRPRE86IFJlbW92ZSBwcmVmZXJlbmNlcyBvbmNlIEZpcmVmb3ggNjQgaXMgc3RhYmxlIChCdWcg
OTA1NDA0KQorICAgICAgICAgICAgIm5ldHdvcmsucHJveHkudHlwZSI6IDAsCisgICAgICAgICAg
ICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAorICAgICAgICAgICAgIm5ldHdvcmsu
cHJlbG9hZCI6IFRydWUsCisgICAgICAgIH0pCisgICAgICAgIGlmIHNlbGYuZTEwczoKKyAgICAg
ICAgICAgIHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRv
c3RhcnQiOiBUcnVlfSkKKworICAgICAgICBpZiBzZWxmLmVuYWJsZV9maXNzaW9uOgorICAgICAg
ICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeyJmaXNzaW9uLmF1dG9zdGFydCI6IFRydWV9
KQorCisgICAgICAgIGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKKyAgICAgICAgICAg
IHByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibGF5b3V0LmludGVycnVwdGlibGUtcmVmbG93LmVu
YWJsZWQiOiBGYWxzZX0pCisKKyAgICAgICAgIyBCdWcgMTI2Mjk1NDogd2lueHAgKyBlMTBzLCBk
aXNhYmxlIGh3YWNjZWwKKyAgICAgICAgaWYgKHNlbGYuZTEwcyBhbmQgcGxhdGZvcm0uc3lzdGVt
KCkgaW4gKCJXaW5kb3dzIiwgIk1pY3Jvc29mdCIpIGFuZAorICAgICAgICAgICAgIjUuMSIgaW4g
cGxhdGZvcm0udmVyc2lvbigpKToKKyAgICAgICAgICAgIHNlbGYucHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJsYXllcnMuYWNjZWxlcmF0aW9uLmRpc2FibGVkIjogVHJ1ZX0pCisKKyAgICBkZWYg
X3NldHVwX3NzbChzZWxmLCBwcm9maWxlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgY2VydGlmaWNh
dGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMgaXMgY29uZmlndXJl
ZAogICAgICAgICB0byB0cnVzdCB0aGUgQ0EgQ2VydGlmaWNhdGUgdGhhdCBoYXMgc2lnbmVkIHRo
ZSB3ZWItcGxhdGZvcm0udGVzdCBzZXJ2ZXIKICAgICAgICAgY2VydGlmaWNhdGUuIiIiCkBAIC00
OTAsMTYgKzYyOSwxNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
ICAgIGNtZCA9IFtzZWxmLmNlcnR1dGlsX2JpbmFyeV0gKyBsaXN0KGFyZ3MpCiAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dCgiY2VydHV0aWwiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnBy
b2Nlc3MuU1RET1VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
Ii5qb2luKGNtZCkpCiAKLSAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnByb2Zp
bGUucHJvZmlsZSwgIi5jcnRkYnB3IikKKyAgICAgICAgcHdfcGF0aCA9IG9zLnBhdGguam9pbihw
cm9maWxlLnByb2ZpbGUsICIuY3J0ZGJwdyIpCiAgICAgICAgIHdpdGggb3Blbihwd19wYXRoLCAi
dyIpIGFzIGY6CiAgICAgICAgICAgICAjIFVzZSBlbXB0eSBwYXNzd29yZCBmb3IgY2VydGlmaWNh
dGUgZGIKICAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgICAgICBjZXJ0X2RiX3BhdGgg
PSBzZWxmLnByb2ZpbGUucHJvZmlsZQorICAgICAgICBjZXJ0X2RiX3BhdGggPSBwcm9maWxlLnBy
b2ZpbGUKIAogICAgICAgICAjIENyZWF0ZSBhIG5ldyBjZXJ0aWZpY2F0ZSBkYgogICAgICAgICBj
ZXJ0dXRpbCgiLU4iLCAiLWQiLCBjZXJ0X2RiX3BhdGgsICItZiIsIHB3X3BhdGgpCkBAIC01MTAs
MyArNjQ5LDEwNiBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKIAogICAgICAgICAj
IExpc3QgYWxsIGNlcnRzIGluIHRoZSBkYXRhYmFzZQogICAgICAgICBjZXJ0dXRpbCgiLUwiLCAi
LWQiLCBjZXJ0X2RiX3BhdGgpCisKKworCitjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToK
KyAgICBpbml0X3RpbWVvdXQgPSA3MAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
YmluYXJ5LCBwcmVmc19yb290LCB0ZXN0X3R5cGUsIGV4dHJhX3ByZWZzPU5vbmUsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPU5vbmUsIHN0YWNrd2Fsa19i
aW5hcnk9Tm9uZSwgY2VydHV0aWxfYmluYXJ5PU5vbmUsCisgICAgICAgICAgICAgICAgIGNhX2Nl
cnRpZmljYXRlX3BhdGg9Tm9uZSwgZTEwcz1GYWxzZSwgZW5hYmxlX3dlYnJlbmRlcj1GYWxzZSwg
ZW5hYmxlX2Zpc3Npb249RmFsc2UsCisgICAgICAgICAgICAgICAgIHN0YWNrZml4X2Rpcj1Ob25l
LCBiaW5hcnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgYXNhbj1GYWxzZSwgc3R5bG9fdGhyZWFkcz0xLCBjaGFv
c19tb2RlX2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLAorICAgICAgICAgICAgICAgICBicm93c2Vy
X2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFkbGVzcz1Ob25lLCBwcmVsb2FkX2Jyb3dzZXI9RmFsc2Us
ICoqa3dhcmdzKToKKyAgICAgICAgQnJvd3Nlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCisKKyAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgICAgICBpZiB0aW1lb3V0X211bHRpcGxp
ZXI6CisgICAgICAgICAgICBzZWxmLmluaXRfdGltZW91dCA9IHNlbGYuaW5pdF90aW1lb3V0ICog
dGltZW91dF9tdWx0aXBsaWVyCisKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKKworICAg
ICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0YWNrZml4X2RpcgorICAgICAgICBzZWxmLnN5bWJv
bHNfcGF0aCA9IHN5bWJvbHNfcGF0aAorICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBz
dGFja3dhbGtfYmluYXJ5CisKKyAgICAgICAgc2VsZi5hc2FuID0gYXNhbgorICAgICAgICBzZWxm
LmxlYWtfY2hlY2sgPSBsZWFrX2NoZWNrCisKKyAgICAgICAgcHJvZmlsZV9jcmVhdG9yID0gUHJv
ZmlsZUNyZWF0b3IobG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJl
ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUxMHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9maXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQor
CisgICAgICAgIGlmIHByZWxvYWRfYnJvd3NlcjoKKyAgICAgICAgICAgIGluc3RhbmNlX21hbmFn
ZXJfY2xzID0gUHJlbG9hZEluc3RhbmNlTWFuYWdlcgorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgaW5zdGFuY2VfbWFuYWdlcl9jbHMgPSBTaW5nbGVJbnN0YW5jZU1hbmFnZXIKKyAgICAgICAg
c2VsZi5pbnN0YW5jZV9tYW5hZ2VyID0gaW5zdGFuY2VfbWFuYWdlcl9jbHMobG9nZ2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
bmFyeV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlX2NyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW9zX21vZGVfZmxhZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRsZXNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi
bGVfd2VicmVuZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsb190aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFrX2NoZWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2ZpeF9kaXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNh
bikKKworCisgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgorICAgICAgICByZXR1cm4geyJj
aGVja19sZWFrcyI6IHNlbGYubGVha19jaGVjayBhbmQgbm90IHRlc3QubGVha3MsCisgICAgICAg
ICAgICAgICAgImxzYW5fZGlzYWJsZWQiOiB0ZXN0LmxzYW5fZGlzYWJsZWQsCisgICAgICAgICAg
ICAgICAgImxzYW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAg
ICJsc2FuX21heF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAg
ICAgICAgICAgICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5t
b3psZWFrX2FsbG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNl
bGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KKworICAgIGRlZiBzdGFy
dChzZWxmLCBncm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW5z
dGFuY2UgPSBzZWxmLmluc3RhbmNlX21hbmFnZXIuZ2V0KCkKKyAgICAgICAgc2VsZi5pbnN0YW5j
ZS5vdXRwdXRfaGFuZGxlci5zZXR1cChzZWxmLmluc3RhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCisgICAgZGVmIHN0b3Aoc2Vs
ZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBzZWxmLmluc3RhbmNlX21hbmFnZXIuc3RvcF9jdXJy
ZW50KGZvcmNlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygic3RvcHBlZCIpCisKKyAgICBk
ZWYgcGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5waWQoKQorCisgICAg
ZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZSBhbmQgc2Vs
Zi5pbnN0YW5jZS5pc19hbGl2ZSgpCisKKyAgICBkZWYgY2xlYW51cChzZWxmLCBmb3JjZT1GYWxz
ZSk6CisgICAgICAgIHNlbGYuaW5zdGFuY2VfbWFuYWdlci50ZWFyZG93bihmb3JjZSkKKworICAg
IGRlZiBleGVjdXRvcl9icm93c2VyKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5pbnN0YW5j
ZSBpcyBub3QgTm9uZQorICAgICAgICByZXR1cm4gRXhlY3V0b3JCcm93c2VyLCB7Im1hcmlvbmV0
dGVfcG9ydCI6IHNlbGYuaW5zdGFuY2UubWFyaW9uZXR0ZV9wb3J0fQorCisgICAgZGVmIGNoZWNr
X2NyYXNoKHNlbGYsIHByb2Nlc3MsIHRlc3QpOgorICAgICAgICBkdW1wX2RpciA9IG9zLnBhdGgu
am9pbihzZWxmLmluc3RhbmNlLnJ1bm5lci5wcm9maWxlLnByb2ZpbGUsICJtaW5pZHVtcHMiKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBib29sKG1vemNyYXNoLmxvZ19jcmFz
aGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeW1ib2xzX3BhdGg9c2VsZi5zeW1ib2xzX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxr
X2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3M9cHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Q9dGVzdCkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIud2FybmluZygiTG9va2luZyBmb3IgY3Jhc2ggZHVtcCBmaWxlcyBmYWlsZWQiKQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvZmlyZWZveF9hbmRyb2lkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3hfYW5k
cm9pZC5weQppbmRleCAzM2I1ZDUxZTU0ZTgyYWRiNmNkYmU0NjEyMjYzYmMzMDg4M2RkMTA4Li5h
NmNiOGYwZGQzZTBmNjY5ZDQ3YjRhOWE0YTcyOGQ5OWZjNjQ4OTg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvZmlyZWZveF9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9maXJlZm94X2FuZHJvaWQucHkKQEAgLTEsMjYgKzEsMzAgQEAKIGltcG9ydCBvcwog
CiBpbXBvcnQgbW96bmV0d29yawotZnJvbSBtb3pwcm9maWxlIGltcG9ydCBGaXJlZm94UHJvZmls
ZQogZnJvbSBtb3pydW5uZXIgaW1wb3J0IEZlbm5lY0VtdWxhdG9yUnVubmVyCiAKIGZyb20gLmJh
c2UgaW1wb3J0IChnZXRfZnJlZV9wb3J0LAogICAgICAgICAgICAgICAgICAgIGNtZF9hcmcsCiAg
ICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9jb21tYW5kKQogZnJvbSAuLmV4ZWN1dG9ycy5leGVj
dXRvcm1hcmlvbmV0dGUgaW1wb3J0IChNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgICMg
bm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IsICAj
IG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWFyaW9uZXR0ZUNyYXNodGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAxCitmcm9tIC4ucHJvY2Vz
cyBpbXBvcnQgY2FzdF9lbnYKK2Zyb20gLmJhc2UgaW1wb3J0IChCcm93c2VyLAorICAgICAgICAg
ICAgICAgICAgIEV4ZWN1dG9yQnJvd3NlcikKIGZyb20gLmZpcmVmb3ggaW1wb3J0IChnZXRfdGlt
ZW91dF9tdWx0aXBsaWVyLCAgIyBub3FhOiBGNDAxCiAgICAgICAgICAgICAgICAgICAgICAgcnVu
X2luZm9fZXh0cmFzIGFzIGZ4X3J1bl9pbmZvX2V4dHJhcywKICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfcHJvcGVydGllcywgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dG9yX2t3YXJncywgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgIEZp
cmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgUHJvZmls
ZUNyZWF0b3IgYXMgRmlyZWZveFByb2ZpbGVDcmVhdG9yKQogCiAKIF9fd3B0cnVubmVyX18gPSB7
InByb2R1Y3QiOiAiZmlyZWZveF9hbmRyb2lkIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2Fy
Z3MiOiAiY2hlY2tfYXJncyIsCiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkZpcmVmb3hB
bmRyb2lkQnJvd3NlciIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5l
c3MiOiAiTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciJ9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h0ZXN0IjogIk1h
cmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9r
d2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dh
cmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLApAQCAtNTEsNiArNTUsNyBAQCBkZWYgYnJvd3Nlcl9rd2FyZ3ModGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKICAgICAgICAgICAgICJ0aW1l
b3V0X211bHRpcGxpZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncyksCisgICAgICAgICAgICAiZTEwcyI6IHJ1bl9pbmZvX2RhdGFb
ImUxMHMiXSwKICAgICAgICAgICAgICMgZGVza3RvcCBvbmx5CiAgICAgICAgICAgICAibGVha19j
aGVjayI6IEZhbHNlLAogICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBrd2FyZ3NbInN0eWxv
X3RocmVhZHMiXSwKQEAgLTgwLDQwICs4NSwxNSBAQCBkZWYgZW52X29wdGlvbnMoKToKICAgICAg
ICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9CiAKIAotY2xhc3MgRmlyZWZveEFuZHJv
aWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKLSAgICBpbml0X3RpbWVvdXQgPSAzMDAKLSAgICBz
aHV0ZG93bl90aW1lb3V0ID0gNjAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBy
ZWZzX3Jvb3QsIHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcu
dGVzdCIsCi0gICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCAq
Kmt3YXJncyk6Ci0gICAgICAgIEZpcmVmb3hCcm93c2VyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
Tm9uZSwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wYWNr
YWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFsID0gZGV2
aWNlX3NlcmlhbAotICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSBrd2FyZ3NbInRlc3RzX3Jvb3Qi
XQotICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBrd2FyZ3NbImluc3RhbGxfZm9udHMiXQot
ICAgICAgICBzZWxmLnN0YWNrd2Fsa19iaW5hcnkgPSBrd2FyZ3NbInN0YWNrd2Fsa19iaW5hcnki
XQotCi0gICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5tYXJp
b25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0g
Z2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgZW52ID0ge30KLSAgICAgICAgZW52WyJNT1pfQ1JB
U0hSRVBPUlRFUiJdID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0NSQVNIUkVQT1JURVJfU0hVVERP
V04iXSA9ICIxIgotICAgICAgICBlbnZbIk1PWl9ESVNBQkxFX05PTkxPQ0FMX0NPTk5FQ1RJT05T
Il0gPSAiMSIKLSAgICAgICAgZW52WyJTVFlMT19USFJFQURTIl0gPSBzdHIoc2VsZi5zdHlsb190
aHJlYWRzKQotICAgICAgICBpZiBzZWxmLmNoYW9zX21vZGVfZmxhZ3MgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBlbnZbIk1PWl9DSEFPU01PREUiXSA9IHN0cihzZWxmLmNoYW9zX21vZGVfZmxh
Z3MpCi0gICAgICAgIGlmIHNlbGYuZW5hYmxlX3dlYnJlbmRlcjoKLSAgICAgICAgICAgIGVudlsi
TU9aX1dFQlJFTkRFUiJdID0gIjEiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbnZbIk1P
Wl9XRUJSRU5ERVIiXSA9ICIwIgotCi0gICAgICAgIHByZWZlcmVuY2VzID0gc2VsZi5sb2FkX3By
ZWZzKCkKK2NsYXNzIFByb2ZpbGVDcmVhdG9yKEZpcmVmb3hQcm9maWxlQ3JlYXRvcik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgY29uZmlnLCB0ZXN0X3R5cGUs
IGV4dHJhX3ByZWZzLCBlMTBzLAorICAgICAgICAgICAgICAgICBlbmFibGVfZmlzc2lvbiwgYnJv
d3Nlcl9jaGFubmVsLCBjZXJ0dXRpbF9iaW5hcnksIGNhX2NlcnRpZmljYXRlX3BhdGgpOgorICAg
ICAgICBzdXBlcihQcm9maWxlQ3JlYXRvciwgc2VsZikuX19pbml0X18obG9nZ2VyLCBwcmVmc19y
b290LCBjb25maWcsIHRlc3RfdHlwZSwgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlMTBzLCBlbmFibGVfZmlzc2lvbiwgYnJvd3Nlcl9j
aGFubmVsLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydHV0aWxfYmluYXJ5LCBjYV9jZXJ0aWZpY2F0ZV9wYXRoKQogCi0gICAgICAgIHNlbGYu
cHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQotICAgICAg
ICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsKLSAgICAgICAgICAgICJtYXJpb25ldHRl
LnBvcnQiOiBzZWxmLm1hcmlvbmV0dGVfcG9ydCwKKyAgICBkZWYgX3NldF9yZXF1aXJlZF9wcmVm
cyhzZWxmLCBwcm9maWxlKToKKyAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoewogICAg
ICAgICAgICAgIm5ldHdvcmsuZG5zLmxvY2FsRG9tYWlucyI6ICIsIi5qb2luKHNlbGYuY29uZmln
LmRvbWFpbnNfc2V0KSwKICAgICAgICAgICAgICJkb20uZGlzYWJsZV9vcGVuX2R1cmluZ19sb2Fk
IjogRmFsc2UsCiAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLApA
QCAtMTIxLDkgKzEwMSwxMiBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJy
b3dzZXIpOgogICAgICAgICAgICAgIm5ldHdvcmsucHJlbG9hZCI6IFRydWUsCiAgICAgICAgIH0p
CiAKKyAgICAgICAgaWYgc2VsZi5lMTBzOgorICAgICAgICAgICAgcHJvZmlsZS5zZXRfcHJlZmVy
ZW5jZXMoeyJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IFRydWV9KQorCiAgICAgICAg
IGlmIHNlbGYudGVzdF90eXBlID09ICJyZWZ0ZXN0IjoKICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
LmluZm8oIlNldHRpbmcgYW5kcm9pZCByZWZ0ZXN0IHByZWZlcmVuY2VzIikKLSAgICAgICAgICAg
IHNlbGYucHJvZmlsZS5zZXRfcHJlZmVyZW5jZXMoeworICAgICAgICAgICAgcHJvZmlsZS5zZXRf
cHJlZmVyZW5jZXMoewogICAgICAgICAgICAgICAgICJicm93c2VyLnZpZXdwb3J0LmRlc2t0b3BX
aWR0aCI6IDgwMCwKICAgICAgICAgICAgICAgICAjIERpc2FibGUgaGlnaCBEUEkKICAgICAgICAg
ICAgICAgICAibGF5b3V0LmNzcy5kZXZQaXhlbHNQZXJQeCI6ICIxLjAiLApAQCAtMTM1LDYgKzEx
OCw3MyBAQCBjbGFzcyBGaXJlZm94QW5kcm9pZEJyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgogICAg
ICAgICAgICAgICAgICJsYXlvdXQudGVzdGluZy5vdmVybGF5LXNjcm9sbGJhcnMuYWx3YXlzLXZp
c2libGUiOiBUcnVlLAogICAgICAgICAgICAgfSkKIAorCisKK2NsYXNzIEZpcmVmb3hBbmRyb2lk
QnJvd3NlcihCcm93c2VyKToKKyAgICBpbml0X3RpbWVvdXQgPSAzMDAKKyAgICBzaHV0ZG93bl90
aW1lb3V0ID0gNjAKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByZWZzX3Jvb3Qs
IHRlc3RfdHlwZSwgcGFja2FnZV9uYW1lPSJvcmcubW96aWxsYS5nZWNrb3ZpZXcudGVzdCIsCisg
ICAgICAgICAgICAgICAgIGRldmljZV9zZXJpYWw9ImVtdWxhdG9yLTU0NDQiLCBleHRyYV9wcmVm
cz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCisgICAgICAgICAgICAgICAgIHN5bWJvbHNfcGF0aD1O
b25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1dGlsX2JpbmFyeT1Ob25lLAorICAgICAg
ICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93
ZWJyZW5kZXI9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5h
cnlfYXJncz1Ob25lLCB0aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwg
YXNhbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2Rl
X2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLAorICAg
ICAgICAgICAgICAgICBpbnN0YWxsX2ZvbnRzPUZhbHNlLCB0ZXN0c19yb290PU5vbmUsICoqa3dh
cmdzKToKKworICAgICAgICBzdXBlcihGaXJlZm94QW5kcm9pZEJyb3dzZXIsIHNlbGYpLl9faW5p
dF9fKGxvZ2dlcikKKyAgICAgICAgc2VsZi5wcmVmc19yb290ID0gcHJlZnNfcm9vdAorICAgICAg
ICBzZWxmLnRlc3RfdHlwZSA9IHRlc3RfdHlwZQorICAgICAgICBzZWxmLnBhY2thZ2VfbmFtZSA9
IHBhY2thZ2VfbmFtZQorICAgICAgICBzZWxmLmRldmljZV9zZXJpYWwgPSBkZXZpY2Vfc2VyaWFs
CisgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KKyAgICAgICAgc2VsZi5zeW1i
b2xzX3BhdGggPSBzeW1ib2xzX3BhdGgKKyAgICAgICAgc2VsZi5zdGFja3dhbGtfYmluYXJ5ID0g
c3RhY2t3YWxrX2JpbmFyeQorICAgICAgICBzZWxmLmNlcnR1dGlsX2JpbmFyeSA9IGNlcnR1dGls
X2JpbmFyeQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggPSBjYV9jZXJ0aWZpY2F0
ZV9wYXRoCisgICAgICAgIHNlbGYuZTEwcyA9IGUxMHMKKyAgICAgICAgc2VsZi5lbmFibGVfd2Vi
cmVuZGVyID0gZW5hYmxlX3dlYnJlbmRlcgorICAgICAgICBzZWxmLnN0YWNrZml4X2RpciA9IHN0
YWNrZml4X2RpcgorICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0gYmluYXJ5X2FyZ3MKKyAgICAg
ICAgc2VsZi50aW1lb3V0X211bHRpcGxpZXIgPSB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAg
c2VsZi5sZWFrX2NoZWNrID0gbGVha19jaGVjaworICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCisg
ICAgICAgIHNlbGYuc3R5bG9fdGhyZWFkcyA9IHN0eWxvX3RocmVhZHMKKyAgICAgICAgc2VsZi5j
aGFvc19tb2RlX2ZsYWdzID0gY2hhb3NfbW9kZV9mbGFncworICAgICAgICBzZWxmLmNvbmZpZyA9
IGNvbmZpZworICAgICAgICBzZWxmLmJyb3dzZXJfY2hhbm5lbCA9IGJyb3dzZXJfY2hhbm5lbAor
ICAgICAgICBzZWxmLmluc3RhbGxfZm9udHMgPSBpbnN0YWxsX2ZvbnRzCisgICAgICAgIHNlbGYu
dGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKworICAgICAgICBzZWxmLnByb2ZpbGVfY3JlYXRvciA9
IFByb2ZpbGVDcmVhdG9yKGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmc19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFfcHJlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZTEwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicm93c2VyX2NoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2VydHV0aWxfYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRpZmljYXRlX3BhdGgpCisKKyAgICAgICAg
c2VsZi5tYXJpb25ldHRlX3BvcnQgPSBOb25lCisgICAgICAgIHNlbGYucHJvZmlsZSA9IE5vbmUK
KyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisKKyAgICBkZWYgc2V0dGluZ3Moc2VsZiwgdGVz
dCk6CisgICAgICAgIHJldHVybiB7ImNoZWNrX2xlYWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBu
b3QgdGVzdC5sZWFrcywKKyAgICAgICAgICAgICAgICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2Fu
X2FsbG93ZWQsCisgICAgICAgICAgICAgICAgImxzYW5fbWF4X3N0YWNrX2RlcHRoIjogdGVzdC5s
c2FuX21heF9zdGFja19kZXB0aCwKKyAgICAgICAgICAgICAgICAibW96bGVha19hbGxvd2VkIjog
c2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtfYWxsb3dlZCwKKyAgICAgICAgICAgICAg
ICAibW96bGVha190aHJlc2hvbGRzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCB0ZXN0Lm1vemxlYWtf
dGhyZXNob2xkfQorCisgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaWYg
c2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0
ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCisKKyAgICAgICAgc2VsZi5wcm9maWxlID0gc2VsZi5w
cm9maWxlX2NyZWF0b3IuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJl
bmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYubWFyaW9uZXR0ZV9wb3J0fSkKKwogICAgICAg
ICBpZiBzZWxmLmluc3RhbGxfZm9udHM6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
Q29weWluZyBBaGVtIGZvbnQgdG8gcHJvZmlsZSIpCiAgICAgICAgICAgICBmb250X2RpciA9IG9z
LnBhdGguam9pbihzZWxmLnByb2ZpbGUucHJvZmlsZSwgImZvbnRzIikKQEAgLTE0NiwxOCArMTk2
LDI3IEBAIGNsYXNzIEZpcmVmb3hBbmRyb2lkQnJvd3NlcihGaXJlZm94QnJvd3Nlcik6CiAKICAg
ICAgICAgc2VsZi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogCi0gICAgICAgIGlmIHNlbGYuY2Ff
Y2VydGlmaWNhdGVfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0dXBfc3Ns
KCkKLQogICAgICAgICBkZWJ1Z19hcmdzLCBjbWQgPSBicm93c2VyX2NvbW1hbmQoc2VsZi5wYWNr
YWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmJpbmFyeV9hcmdzIGlmIHNlbGYuYmluYXJ5X2FyZ3MgZWxzZSBbXSArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY21kX2FyZygibWFyaW9uZXR0ZSIpLCAiYWJv
dXQ6YmxhbmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVidWdfaW5mbykKIAorICAgICAgICBlbnYgPSB7fQorICAgICAgICBlbnZbIk1PWl9DUkFT
SFJFUE9SVEVSIl0gPSAiMSIKKyAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9X
TiJdID0gIjEiCisgICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMi
XSA9ICIxIgorICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3Ro
cmVhZHMpCisgICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFn
cykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAgICAgICAgZW52WyJN
T1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudlsiTU9a
X1dFQlJFTkRFUiJdID0gIjAiCisKICAgICAgICAgc2VsZi5ydW5uZXIgPSBGZW5uZWNFbXVsYXRv
clJ1bm5lcihhcHA9c2VsZi5wYWNrYWdlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZT1zZWxmLnByb2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kYXJncz1jbWRbMTpdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9s
c19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlh
bD1zZWxmLmRldmljZV9zZXJpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJvcHJpYXRlIGxvZyBkaXIKQEAgLTE5Niw2ICsy
NTUsMjYgQEAgY2xhc3MgRmlyZWZveEFuZHJvaWRCcm93c2VyKEZpcmVmb3hCcm93c2VyKToKICAg
ICAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
c3RvcHBlZCIpCiAKKyAgICBkZWYgcGlkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJ1bm5lci5w
cm9jZXNzX2hhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVubmVyLnByb2Nlc3NfaGFuZGxlci5w
aWQKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ydW5uZXI6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIuaXNfcnVubmluZygpCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIGNsZWFudXAoc2VsZiwgZm9yY2U9RmFsc2UpOgorICAgICAgICBz
ZWxmLnN0b3AoZm9yY2UpCisKKyAgICBkZWYgZXhlY3V0b3JfYnJvd3NlcihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIEV4ZWN1dG9yQnJvd3NlciwgeyJtYXJpb25ldHRlX3BvcnQiOiBzZWxmLm1hcmlv
bmV0dGVfcG9ydH0KKwogICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToK
ICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCJNSU5JRFVNUF9TVEFDS1dBTEsiLCAiIikg
YW5kIHNlbGYuc3RhY2t3YWxrX2JpbmFyeToKICAgICAgICAgICAgIG9zLmVudmlyb25bIk1JTklE
VU1QX1NUQUNLV0FMSyJdID0gc2VsZi5zdGFja3dhbGtfYmluYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvaWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvaWUucHkKaW5k
ZXggNjM1ZTgyN2MyOTViNWIxMTkyODIyZjUxZDkzYTRiMDllMzc2NDE5Mi4uNzhjMjJiOTA5YWNm
NDEwMDM4ZmYwNjc2OTM2NjY2MmFiMGM1ODlhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2llLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQpAQCAtNjQsNyAr
NjQsNyBAQCBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5w
eQppbmRleCA1NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2MmNlNDBkNzQ5ZGRhY2I2YTgzLi44MDVmZWRl
ZTYzNmNkMjIxNTVlZDE0M2NmMTE0OGYzYzJmNWQ5OGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvb3BlcmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5
CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAgICAg
IyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAg
ICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIg
c2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVy
LmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCiAKICAgICBk
ZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9zYWZhcmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJp
LnB5CmluZGV4IGY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5NTA2OTQ2Yjk1MzhiNjcuLmNiMmIx
NzVkNGRmYmMzMTY2ZTRhZDVhNmFmZTE3NGZmZGJjNmZmOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9zYWZhcmkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFy
aS5weQpAQCAtMyw3ICszLDggQEAgZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciAgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFy
aURyaXZlclNlcnZlcgogZnJvbSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFz
IGJhc2VfZXhlY3V0b3Jfa3dhcmdzCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVy
IGltcG9ydCAoV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RF
eGVjdXRvcikgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlckNyYXNodGVzdEV4
ZWN1dG9yKSAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2FmYXJpIGlt
cG9ydCBTYWZhcmlEcml2ZXJXZHNwZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIApAQCAtMTIs
NyArMTMsOCBAQCBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogInNhZmFyaSIsCiAgICAgICAg
ICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAogICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIldlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3Ii
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiAiV2ViRHJpdmVyUmVm
VGVzdEV4ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiAi
U2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiAiU2FmYXJpRHJpdmVyV2RzcGVjRXhlY3V0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNyYXNodGVzdCI6ICJXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRv
ciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3Mi
LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJncyIs
CiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLApAQCAtNzksNyAr
ODEsNyBAQCBjbGFzcyBTYWZhcmlCcm93c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRv
KTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFu
ZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAg
ICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKIAogICAgIGRlZiBjbGVhbnVw
KHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlLnB5CmluZGV4IDMz
MDFjNzViMjEwMDRhNTU0ZjkxZDQ3NjdiODU2MGZjNDAyMTQ0MTIuLmZlODM2ODJmNWZjMTZmNGIy
ZGE2NjRiOGU2Y2E0ZGJjOGRkYzUwOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9zYXVjZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKQEAgLTksMTAg
KzksMTEgQEAgaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0YXJmaWxlCiBpbXBvcnQgdGVtcGZp
bGUKIGltcG9ydCB0aW1lCi1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8gYXMgQ1N0cmlu
Z0lPCiAKIGltcG9ydCByZXF1ZXN0cwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lP
IGFzIFN0cmluZ0lPCisKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nl
ciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIg
ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBh
cyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTI0LDcgKzEyNSw3IEBAIGRlZiBlbnZfb3B0aW9u
cygpOgogZGVmIGdldF90YXIodXJsLCBkZXN0KToKICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KHVy
bCwgc3RyZWFtPVRydWUpCiAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKLSAgICB3aXRoIHRh
cmZpbGUub3BlbihmaWxlb2JqPUNTdHJpbmdJTyhyZXNwLnJhdy5yZWFkKCkpKSBhcyBmOgorICAg
IHdpdGggdGFyZmlsZS5vcGVuKGZpbGVvYmo9U3RyaW5nSU8ocmVzcC5yYXcucmVhZCgpKSkgYXMg
ZjoKICAgICAgICAgZi5leHRyYWN0YWxsKHBhdGg9ZGVzdCkKIAogCkBAIC0xNzgsNyArMTc5LDcg
QEAgY2xhc3MgU2F1Y2VDb25uZWN0KCk6CiAKICAgICAgICAgdG90X3dhaXQgPSAwCiAgICAgICAg
IHdoaWxlIG5vdCBvcy5wYXRoLmV4aXN0cygnLi9zYXVjZV9pc19yZWFkeScpIGFuZCBzZWxmLnNj
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiB0b3Rfd2FpdCA+PSBzZWxm
LnNhdWNlX2luaXRfdGltZW91dDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNhdWNlX2luaXRf
dGltZW91dCBvciAodG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3RpbWVvdXQpOgogICAgICAg
ICAgICAgICAgIHNlbGYucXVpdCgpCiAKICAgICAgICAgICAgICAgICByYWlzZSBTYXVjZUV4Y2Vw
dGlvbigiU2F1Y2UgQ29ubmVjdCBQcm94eSB3YXMgbm90IHJlYWR5IGFmdGVyICVkIHNlY29uZHMi
ICUgdG90X3dhaXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2
ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2Vydm9kcml2ZXIucHkKaW5kZXggMjk1M2Rl
MTgxNzRlZjc1ZDUwNWRiMGI4ZDUxOGZlMzMzOWY3MDY1ZS4uMDJiNzk2Yjc1NjAzODVjZDAwOTAy
YmJmYzFiMzYxYTU0MjI0OWY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3Nl
cnZvZHJpdmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQpA
QCAtMTEsNiArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVy
ICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3Mg
YXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZXJ2b2Ry
aXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTog
RjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vydm9X
ZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKK2Zyb20gLi5wcm9jZXNzIGlt
cG9ydCBjYXN0X2VudgogCiBoZXJlID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdKQogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlckJyb3dz
ZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRlYnVnX2luZm8gb3Igbm90IHNlbGYu
ZGVidWdfaW5mby5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NI
YW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVudiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYucHJv
Yy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vz
cy5Qb3BlbihzZWxmLmNvbW1hbmQsIGVudj1lbnYpCisgICAgICAgICAgICBzZWxmLnByb2MgPSBz
dWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwgZW52PWNhc3RfZW52KGVudikpCiAKICAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZvIFN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtp
dC5weQppbmRleCBhYTI4NjIxMzk0NTBmNjgyZTYwNTFjNWY2MTdhYjhjYWYxOTYwNzg0Li5kYTkz
Y2YxNjQzOTk1ZDk1YjhkNmRlMWY3MGM3NzMxYjU1NTk3NjhiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93ZWJr
aXQucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9y
QnJvd3NlciwgcmVxdWlyZV9hcmcKIGZyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRp
cGxpZXIsIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJu
ZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJv
bSAuLmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhl
Y3V0b3IgICMgbm9xYTogRjQwMQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFdlYktp
dERyaXZlclNlcnZlcgogCkBAIC0xMyw3ICsxNCw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0IiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dz
ZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6
ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9y
In0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmFzaHRl
c3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAgICAgICAgICAgICAgImV4
ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52
X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjog
ImVudl9vcHRpb25zIiwKQEAgLTk5LDcgKzEwMSw3IEBAIGNsYXNzIFdlYktpdEJyb3dzZXIoQnJv
d3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkgaW5kaWNhdGVzIHRoZSBkcml2
ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdo
ZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBhY3RpdmUuCi0gICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNf
YWxpdmUoKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3RvcCgpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdGd0a19taW5pYnJvd3Nlci5weQppbmRleCBk
NzM1ZjNjMDc5MmE2MzU2YzYyNzAxNDMyMDVjNTViN2MwMmVlZjQ3Li5kOGI5NzQ0YmQ3NDNlMzlj
ZTE5ZjAwOGU3ZjQwY2JjODBlODAxMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3Nl
cnMvd2Via2l0Z3RrX21pbmlicm93c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy93
ZWJraXRndGtfbWluaWJyb3dzZXIucHkKQEAgLTIsNyArMiw4IEBAIGZyb20gLmJhc2UgaW1wb3J0
IGdldF90aW1lb3V0X211bHRpcGxpZXIsIG1heWJlX2FkZF9hcmdzLCBjZXJ0aWZpY2F0ZV9kb21h
aW5fbGlzCiBmcm9tIC53ZWJraXQgaW1wb3J0IFdlYktpdEJyb3dzZXIKIGZyb20gLi5leGVjdXRv
cnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNz
RXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJSZWZUZXN0RXhl
Y3V0b3IsICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQogZnJvbSAu
LmV4ZWN1dG9ycy5leGVjdXRvcndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyV2RzcGVjRXhlY3V0
b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9kdWN0IjogIndlYmtpdGd0
a19taW5pYnJvd3NlciIsCkBAIC0xMSw3ICsxMiw4IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1
Y3QiOiAid2Via2l0Z3RrX21pbmlicm93c2VyIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJf
a3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjog
eyJ0ZXN0aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRv
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIldlYktpdERyaXZl
cldkc3BlY0V4ZWN1dG9yIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVj
IjogIldlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjcmFzaHRlc3QiOiAiV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0b3IifSwKICAgICAg
ICAgICAgICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAg
ICAgICAgICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKICAgICAgICAgICAgICAgICAg
ImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
bnZpcm9ubWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQppbmRleCBlNzlhZTM3
NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4Li5mNzY4MzZlYTY2YjU5YmIxNmYyZDM3
OTI0NTFiY2YyOGVjYjJmYjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Vudmlyb25tZW50LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBv
cnQgc2lnbmFsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBz
aXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIG1vemxvZyBpbXBvcnQgZ2V0X2RlZmF1bHRfbG9n
Z2VyLCBoYW5kbGVycywgcHJveHkKIApAQCAtNTIsNyArNTMsOSBAQCBjbGFzcyBUZXN0RW52aXJv
bm1lbnRFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAg
ICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdGVzdCBlbnZpcm9ubWVudCBpLmUu
IHRoZSBodHRwIGFuZAogICAgIHdlYnNvY2tldHMgc2VydmVycyIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X3BhdGhzLCB0ZXN0aGFybmVzc190aW1lb3V0X211bHRpcGxlciwgcGF1c2Vf
YWZ0ZXJfdGVzdCwgZGVidWdfaW5mbywgb3B0aW9ucywgc3NsX2NvbmZpZywgZW52X2V4dHJhcyk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIHRlc3RoYXJuZXNzX3RpbWVvdXRf
bXVsdGlwbGVyLAorICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0LCBkZWJ1Z19pbmZv
LCBvcHRpb25zLCBzc2xfY29uZmlnLCBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICBlbmFi
bGVfcXVpYz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAg
ICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IE5vbmUK
QEAgLTY4LDYgKzcxLDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuZW52X2V4dHJhcyA9IGVudl9leHRyYXMKICAgICAgICAgc2VsZi5lbnZfZXh0cmFzX2Nt
cyA9IE5vbmUKICAgICAgICAgc2VsZi5zc2xfY29uZmlnID0gc3NsX2NvbmZpZworICAgICAgICBz
ZWxmLmVuYWJsZV9xdWljID0gZW5hYmxlX3F1aWMKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6
CiAgICAgICAgIHNlbGYuY29uZmlnX2N0eCA9IHNlbGYuYnVpbGRfY29uZmlnKCkKQEAgLTkxLDYg
Kzk1LDcgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5z
ZXJ2ZXJzID0gc2VydmUuc3RhcnQoc2VsZi5jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3JvdXRlcygpKQorCiAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5nZXQoInN1cHBvcnRzX2RlYnVnZ2VyIikgYW5kIHNlbGYuZGVidWdfaW5mbyBhbmQgc2VsZi5k
ZWJ1Z19pbmZvLmludGVyYWN0aXZlOgogICAgICAgICAgICAgc2VsZi5pZ25vcmVfaW50ZXJydXB0
cygpCiAgICAgICAgIHJldHVybiBzZWxmCkBAIC05OCw3ICsxMDMsNyBAQCBjbGFzcyBUZXN0RW52
aXJvbm1lbnQob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192
YWwsIGV4Y190Yik6CiAgICAgICAgIHNlbGYucHJvY2Vzc19pbnRlcnJ1cHRzKCkKIAotICAgICAg
ICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIHNlbGYuc2VydmVycy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRlbXMoc2VsZi5zZXJ2ZXJzKToKICAgICAg
ICAgICAgIGZvciBwb3J0LCBzZXJ2ZXIgaW4gc2VydmVyczoKICAgICAgICAgICAgICAgICBzZXJ2
ZXIua2lsbCgpCiAgICAgICAgIGZvciBjbSBpbiBzZWxmLmVudl9leHRyYXNfY21zOgpAQCAtMTI2
LDcgKzEzMSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAg
ICJodHRwcyI6IFs4NDQzXSwKICAgICAgICAgICAgICJ3cyI6IFs4ODg4XSwKICAgICAgICAgICAg
ICJ3c3MiOiBbODg4OV0sCisgICAgICAgICAgICAiaDIiOiBbOTAwMF0sCiAgICAgICAgIH0KKyAg
ICAgICAgaWYgc2VsZi5lbmFibGVfcXVpYzoKKyAgICAgICAgICAgIGNvbmZpZy5wb3J0c1sicXVp
YyJdID0gWzEwMDAwXQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlX3BhdGgp
OgogICAgICAgICAgICAgd2l0aCBvcGVuKG92ZXJyaWRlX3BhdGgpIGFzIGY6CkBAIC0xOTEsMTAg
KzE5OSwxMCBAQCBjbGFzcyBUZXN0RW52aXJvbm1lbnQob2JqZWN0KToKICAgICAgICAgICAgIGRh
dGEgKz0gZnAucmVhZCgpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Rkcml2ZXItZXh0cmEuanMiKSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICBkYXRhICs9IGZw
LnJlYWQoKQotICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVyKGIiR0VUIiwgYiIvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXIuanMiLAorICAgICAgICByb3V0ZV9idWlsZGVyLmFkZF9oYW5kbGVy
KCJHRVQiLCAiL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdIYW5kbGVyKGRhdGEsICJ0ZXh0L2phdmFzY3JpcHQiKSkKIAot
ICAgICAgICBmb3IgdXJsX2Jhc2UsIHBhdGhzIGluIHNlbGYudGVzdF9wYXRocy5pdGVyaXRlbXMo
KToKKyAgICAgICAgZm9yIHVybF9iYXNlLCBwYXRocyBpbiBpdGVyaXRlbXMoc2VsZi50ZXN0X3Bh
dGhzKToKICAgICAgICAgICAgIGlmIHVybF9iYXNlID09ICIvIjoKICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgcm91dGVfYnVpbGRlci5hZGRfbW91bnRfcG9pbnQodXJsX2Jh
c2UsIHBhdGhzWyJ0ZXN0c19wYXRoIl0pCkBAIC0yMTAsOCArMjE4LDEwIEBAIGNsYXNzIFRlc3RF
bnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICBlYWNoX3NsZWVwX3NlY3MgPSAwLjUKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MKICAgICAgICAgd2hp
bGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKLSAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYudGVz
dF9zZXJ2ZXJzKCkKLSAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CisgICAgICAgICAgICBmYWls
ZWQsIHBlbmRpbmcgPSBzZWxmLnRlc3Rfc2VydmVycygpCisgICAgICAgICAgICBpZiBmYWlsZWQ6
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nOgogICAg
ICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdGltZS5zbGVlcChlYWNoX3NsZWVwX3Nl
Y3MpCiAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXJyb3IoIlNlcnZlcnMgZmFpbGVkIHRvIHN0
YXJ0OiAlcyIgJQpAQCAtMjE5LDE5ICsyMjksMjMgQEAgY2xhc3MgVGVzdEVudmlyb25tZW50KG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzKHNlbGYpOgogICAgICAgICBmYWlsZWQgPSBb
XQorICAgICAgICBwZW5kaW5nID0gW10KICAgICAgICAgaG9zdCA9IHNlbGYuY29uZmlnWyJzZXJ2
ZXJfaG9zdCJdCi0gICAgICAgIGZvciBzY2hlbWUsIHNlcnZlcnMgaW4gc2VsZi5zZXJ2ZXJzLml0
ZXJpdGVtcygpOgorICAgICAgICBmb3Igc2NoZW1lLCBzZXJ2ZXJzIGluIGl0ZXJpdGVtcyhzZWxm
LnNlcnZlcnMpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNlcnZlciBpbiBzZXJ2ZXJzOgotICAg
ICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9ydDoKKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2VydmVyLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBl
bmQoKHNjaGVtZSwgcG9ydCkpCisKKyAgICAgICAgaWYgbm90IGZhaWxlZCBhbmQgc2VsZi50ZXN0
X3NlcnZlcl9wb3J0OgorICAgICAgICAgICAgZm9yIHNjaGVtZSwgc2VydmVycyBpbiBpdGVyaXRl
bXMoc2VsZi5zZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCwgc2VydmVyIGluIHNl
cnZlcnM6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAg
ICAgICAgICAgICAgcy5zZXR0aW1lb3V0KDAuMSkKICAgICAgICAgICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWxlZC5hcHBlbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGVu
ZGluZy5hcHBlbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLSAgICAgICAgICAgICAgICBpZiBu
b3Qgc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQo
KHNjaGVtZSwgcG9ydCkpCi0gICAgICAgIHJldHVybiBmYWlsZWQKKyAgICAgICAgcmV0dXJuIGZh
aWxlZCwgcGVuZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25z
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9hY3Rpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNDNk
ZDY2NWEyZjNiYzU1NzZjYjUzNWYyOWQ0OWFiYmM5NTkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKQEAgLTAsMCArMSwxODQgQEAKKworY2xh
c3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImNsaWNrIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxv
Z2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJd
CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVj
dG9yKHNlbGVjdG9yKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcgZWxlbWVu
dDogJXMiICUgc2VsZWN0b3IpCisgICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxlbWVudChl
bGVtZW50KQorCisKK2NsYXNzIFNlbmRLZXlzQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJz
ZW5kX2tleXMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Cisg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90
b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBzZWxlY3Rv
ciA9IHBheWxvYWRbInNlbGVjdG9yIl0KKyAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQor
ICAgICAgICBlbGVtZW50ID0gc2VsZi5wcm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3Rv
cihzZWxlY3RvcikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBl
bGVtZW50OiAlcyIgJSBzZWxlY3RvcikKKyAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMu
c2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24o
b2JqZWN0KToKKyAgICBuYW1lID0gImFjdGlvbl9zZXF1ZW5jZSIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
KyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6CisgICAgICAgICMgVE9ETzogc29tZSBzb3J0IG9mIHNoYWxsb3cgZXJyb3Ig
Y2hlY2tpbmcKKyAgICAgICAgYWN0aW9ucyA9IHBheWxvYWRbImFjdGlvbnMiXQorICAgICAgICBm
b3IgYWN0aW9uU2VxdWVuY2UgaW4gYWN0aW9uczoKKyAgICAgICAgICAgIGlmIGFjdGlvblNlcXVl
bmNlWyJ0eXBlIl0gPT0gInBvaW50ZXIiOgorICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4g
YWN0aW9uU2VxdWVuY2VbImFjdGlvbnMiXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlv
blsidHlwZSJdID09ICJwb2ludGVyTW92ZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBp
c2luc3RhbmNlKGFjdGlvblsib3JpZ2luIl0sIGRpY3QpKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvblsib3JpZ2luIl0gPSBzZWxmLmdldF9lbGVtZW50KGFjdGlvblsib3JpZ2luIl1b
InNlbGVjdG9yIl0sIGFjdGlvblsiZnJhbWUiXVsiZnJhbWUiXSkKKyAgICAgICAgc2VsZi5wcm90
b2NvbC5hY3Rpb25fc2VxdWVuY2Uuc2VuZF9hY3Rpb25zKHsiYWN0aW9ucyI6IGFjdGlvbnN9KQor
CisgICAgZGVmIGdldF9lbGVtZW50KHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKKyAg
ICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2VsZWN0b3Io
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIHJldHVybiBlbGVtZW50CisKK2NsYXNz
IEdlbmVyYXRlVGVzdFJlcG9ydEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAiZ2VuZXJhdGVf
dGVzdF9yZXBvcnQiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBw
cm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBtZXNz
YWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5l
cmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzZWxmLnByb3RvY29s
LmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCisKK2Ns
YXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF9wZXJtaXNz
aW9uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgcGVybWlzc2lvbl9w
YXJhbXMgPSBwYXlsb2FkWyJwZXJtaXNzaW9uX3BhcmFtcyJdCisgICAgICAgIGRlc2NyaXB0b3Ig
PSBwZXJtaXNzaW9uX3BhcmFtc1siZGVzY3JpcHRvciJdCisgICAgICAgIG5hbWUgPSBkZXNjcmlw
dG9yWyJuYW1lIl0KKyAgICAgICAgc3RhdGUgPSBwZXJtaXNzaW9uX3BhcmFtc1sic3RhdGUiXQor
ICAgICAgICBvbmVfcmVhbG0gPSBwZXJtaXNzaW9uX3BhcmFtcy5nZXQoIm9uZVJlYWxtIiwgRmFs
c2UpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHBlcm1pc3Npb24gJXMgdG8g
JXMsIG9uZVJlYWxtPSVzIiAlIChuYW1lLCBzdGF0ZSwgb25lX3JlYWxtKSkKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbC5zZXRfcGVybWlzc2lvbi5zZXRfcGVybWlzc2lvbihkZXNjcmlwdG9yLCBzdGF0
ZSwgb25lX3JlYWxtKQorCitjbGFzcyBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmpl
Y3QpOgorICAgIG5hbWUgPSAiYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvciIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgdmly
dHVhbCBhdXRoZW50aWNhdG9yIikKKyAgICAgICAgY29uZmlnID0gcGF5bG9hZFsiY29uZmlnIl0K
KyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50
aWNhdG9yLmFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoY29uZmlnKQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiQXV0aGVudGljYXRvciBjcmVhdGVkIHdpdGggSUQgJXMiICUgYXV0aGVudGlj
YXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0b3JfaWQKKworY2xhc3MgUmVtb3Zl
VmlydHVhbEF1dGhlbnRpY2F0b3JBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInJlbW92ZV92
aXJ0dWFsX2F1dGhlbnRpY2F0b3IiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBw
cm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAg
ICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IgJXMi
ICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVh
bF9hdXRoZW50aWNhdG9yLnJlbW92ZV92aXJ0dWFsX2F1dGhlbnRpY2F0b3IoYXV0aGVudGljYXRv
cl9pZCkKKworCitjbGFzcyBBZGRDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6CisgICAgbmFtZSA9
ICJhZGRfY3JlZGVudGlhbCIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3Rv
Y29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2Nv
bCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAg
IGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAg
Y3JlZGVudGlhbCA9IHBheWxvYWRbImNyZWRlbnRpYWwiXQorICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZygiQWRkaW5nIGNyZWRlbnRpYWwgdG8gdmlydHVhbCBhdXRoZW50aWNhdG9yICVzICIgJSBh
dXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX2NyZWRlbnRpYWwoYXV0aGVudGljYXRvcl9pZCwgY3JlZGVudGlhbCkK
KworY2xhc3MgR2V0Q3JlZGVudGlhbHNBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gImdldF9j
cmVkZW50aWFscyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToK
KyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHBy
b3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6CisgICAgICAgIGF1dGhl
bnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0KKyAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoIkdldHRpbmcgY3JlZGVudGlhbHMgZnJvbSB2aXJ0dWFsIGF1dGhlbnRpY2F0
b3IgJXMgIiAlIGF1dGhlbnRpY2F0b3JfaWQpCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29s
LnZpcnR1YWxfYXV0aGVudGljYXRvci5nZXRfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkK
KworY2xhc3MgUmVtb3ZlQ3JlZGVudGlhbEFjdGlvbihvYmplY3QpOgorICAgIG5hbWUgPSAicmVt
b3ZlX2NyZWRlbnRpYWwiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBh
dXRoZW50aWNhdG9yX2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIGNy
ZWRlbnRpYWxfaWQgPSBwYXlsb2FkWyJjcmVkZW50aWFsX2lkIl0KKyAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIlJlbW92aW5nIGNyZWRlbnRpYWwgJXMgZnJvbSBhdXRoZW50aWNhdG9yICVzIiAl
IChjcmVkZW50aWFsX2lkLCBhdXRoZW50aWNhdG9yX2lkKSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9jcmVkZW50aWFsKGF1dGhlbnRp
Y2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQpCisKK2NsYXNzIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0
aW9uKG9iamVjdCk6CisgICAgbmFtZSA9ICJyZW1vdmVfYWxsX2NyZWRlbnRpYWxzIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3Zp
bmcgYWxsIGNyZWRlbnRpYWxzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9y
X2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iu
cmVtb3ZlX2FsbF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQorCitjbGFzcyBTZXRVc2Vy
VmVyaWZpZWRBY3Rpb24ob2JqZWN0KToKKyAgICBuYW1lID0gInNldF91c2VyX3ZlcmlmaWVkIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxm
LmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9
IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBheWxvYWRbInV2Il0K
KyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0dGluZyB1c2VyIHZl
cmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0aGVudGljYXRvcl9p
ZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52
aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVudGljYXRvcl9pZCwg
dXYpCisKKworYWN0aW9ucyA9IFtDbGlja0FjdGlvbiwKKyAgICAgICAgICAgU2VuZEtleXNBY3Rp
b24sCisgICAgICAgICAgIEFjdGlvblNlcXVlbmNlQWN0aW9uLAorICAgICAgICAgICBHZW5lcmF0
ZVRlc3RSZXBvcnRBY3Rpb24sCisgICAgICAgICAgIFNldFBlcm1pc3Npb25BY3Rpb24sCisgICAg
ICAgICAgIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uLAorICAgICAgICAgICBSZW1vdmVW
aXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbiwKKyAgICAgICAgICAgQWRkQ3JlZGVudGlhbEFjdGlv
biwKKyAgICAgICAgICAgR2V0Q3JlZGVudGlhbHNBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUNy
ZWRlbnRpYWxBY3Rpb24sCisgICAgICAgICAgIFJlbW92ZUFsbENyZWRlbnRpYWxzQWN0aW9uLAor
ICAgICAgICAgICBTZXRVc2VyVmVyaWZpZWRBY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKaW5k
ZXggM2Q4YWY0ZGU0ODY4ZTlkYTg2YjM4ZDFjOWQ3YjMyZWQwYmZkMjY1Yi4uYzc1YThlZjMyMGYy
ZDE0OTIwNmM5YWI4MmNlNTViYjc1NGRkYmI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQpAQCAt
MSw2ICsxLDUgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBoYXNobGliCi1mcm9tIHNpeC5tb3Zl
cy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KIGltcG9ydCBpbwogaW1wb3J0IGpz
b24KIGltcG9ydCBvcwpAQCAtOCwxMCArNywxMyBAQCBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCi1mcm9tIHNpeC5tb3Zlcy51cmxs
aWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNwbGl0CiBmcm9tIGFiYyBp
bXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gc2l4IGltcG9ydCB0ZXh0X3R5cGUK
K2Zyb20gc2l4Lm1vdmVzLmh0dHBfY2xpZW50IGltcG9ydCBIVFRQQ29ubmVjdGlvbgorZnJvbSBz
aXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxzcGxpdCwgdXJsdW5zcGxp
dAogCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3RvcAorZnJvbSAuYWN0aW9ucyBpbXBvcnQg
YWN0aW9ucwogZnJvbSAucHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNlUHJvdG9jb2xQYXJ0
CiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXQpAQCAtMTYyLDE0ICsxNjQsMTgg
QEAgY2xhc3MgVGltZWRSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3Vs
dCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgIiVzLnJ1bl9mdW5jIGRpZG4ndCBzZXQgYSBy
ZXN1bHQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2Ns
YXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiRXhlY3V0b3IgaGl0IGV4dGVybmFsIHRpbWVvdXQgKHRoaXMgbWF5IGluZGljYXRlIGEg
aGFuZylcbiIKLSAgICAgICAgICAgICAgICAjIGdldCBhIHRyYWNlYmFjayBmb3IgdGhlIGN1cnJl
bnQgc3RhY2sgb2YgdGhlIGV4ZWN1dG9yIHRocmVhZAotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtl
eGVjdXRvci5pZGVudF0pKQotICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgi
RVhURVJOQUwtVElNRU9VVCIsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5wcm90
b2NvbC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIkV4ZWN1dG9y
IGhpdCBleHRlcm5hbCB0aW1lb3V0ICh0aGlzIG1heSBpbmRpY2F0ZSBhIGhhbmcpXG4iCisgICAg
ICAgICAgICAgICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBv
ZiB0aGUgZXhlY3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiIu
am9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKHN5cy5fY3VycmVudF9mcmFtZXMoKVtleGVjdXRv
ci5pZGVudF0pKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVY
VEVSTkFMLVRJTUVPVVQiLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRpbmcsIHNl
dHRpbmcgc3RhdHVzIHRvIENSQVNIIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBGYWxzZSwgKCJDUkFTSCIsIE5vbmUpCiAgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRbMV0gaXMg
Tm9uZToKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCBhbnkgZGF0YSBiYWNrIGZyb20gdGhl
IHRlc3QsIHNvIGNoZWNrIGlmIHRoZQogICAgICAgICAgICAgIyBicm93c2VyIGlzIHN0aWxsIHJl
c3BvbnNpdmUKLSAgICAgICAgICAgIGlmIHNlbGYucHJvdG9jb2wuaXNfYWxpdmU6CisgICAgICAg
ICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5y
ZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIE5vbmUpCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgbm90IHJlc3BvbmRp
bmcsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKQEAgLTIxMCw4ICsyMTYsOSBAQCBjbGFzcyBU
ZXN0RXhlY3V0b3Iob2JqZWN0KToKICAgICBleHRyYV90aW1lb3V0ID0gNSAgIyBzZWNvbmRzCiAK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0
X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgZGVi
dWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAg
ICAgICAgIHNlbGYucnVubmVyID0gTm9uZQogICAgICAgICBzZWxmLmJyb3dzZXIgPSBicm93c2Vy
CiAgICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZyA9IHNlcnZlcl9jb25maWcKQEAgLTIyMSwxMiAr
MjI4LDYgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicHJlZnMiOiB7fX0KICAgICAgICAgc2VsZi5wcm90b2NvbCA9IE5vbmUg
ICMgVGhpcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzCiAKLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbG9nZ2VyKHNlbGYpOgotICAgICAgICAiIiJTdHJ1Y3R1cmVkTG9nZ2VyIGZvciB0aGlzIGV4
ZWN1dG9yIiIiCi0gICAgICAgIGlmIHNlbGYucnVubmVyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucnVubmVyLmxvZ2dlcgotCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5l
cik6CiAgICAgICAgICIiIlJ1biBzdGVwcyBuZWVkZWQgYmVmb3JlIHRlc3RzIGNhbiBiZSBzdGFy
dGVkIGUuZy4gY29ubmVjdGluZyB0bwogICAgICAgICBicm93c2VyIGluc3RhbmNlCkBAIC0yNTUs
OCArMjU2LDkgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZG9fdGVzdCh0ZXN0KQogICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5yZXN1bHRfZnJvbV9leGNl
cHRpb24odGVzdCwgZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9zdHJpbmcgPSB0cmFjZWJhY2su
Zm9ybWF0X2V4YygpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKGV4Y2VwdGlvbl9z
dHJpbmcpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlc3VsdF9mcm9tX2V4Y2VwdGlvbih0
ZXN0LCBlLCBleGNlcHRpb25fc3RyaW5nKQogCiAgICAgICAgIGlmIHJlc3VsdCBpcyBTdG9wOgog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjcwLDcgKzI3Miw4IEBAIGNsYXNzIFRlc3RF
eGVjdXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bm5lci5zZW5kX21lc3NhZ2UoInRlc3Rf
ZW5kZWQiLCB0ZXN0LCByZXN1bHQpCiAKICAgICBkZWYgc2VydmVyX3VybChzZWxmLCBwcm90b2Nv
bCk6Ci0gICAgICAgIHJldHVybiAiJXM6Ly8lczolcyIgJSAocHJvdG9jb2wsCisgICAgICAgIHNj
aGVtZSA9ICJodHRwcyIgaWYgcHJvdG9jb2wgPT0gImgyIiBlbHNlIHByb3RvY29sCisgICAgICAg
IHJldHVybiAiJXM6Ly8lczolcyIgJSAoc2NoZW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc2VydmVyX2NvbmZpZ1siYnJvd3Nlcl9ob3N0Il0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJdW3Byb3RvY29sXVsw
XSkKIApAQCAtMjg4LDE1ICsyOTEsMTUgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAg
ICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1lbnQpOgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgcmVzdWx0X2Zyb21fZXhjZXB0aW9uKHNlbGYsIHRlc3QsIGUp
OgorICAgIGRlZiByZXN1bHRfZnJvbV9leGNlcHRpb24oc2VsZiwgdGVzdCwgZSwgZXhjZXB0aW9u
X3N0cmluZyk6CiAgICAgICAgIGlmIGhhc2F0dHIoZSwgInN0YXR1cyIpIGFuZCBlLnN0YXR1cyBp
biB0ZXN0LnJlc3VsdF9jbHMuc3RhdHVzZXM6CiAgICAgICAgICAgICBzdGF0dXMgPSBlLnN0YXR1
cwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RhdHVzID0gIklOVEVSTkFMLUVSUk9SIgot
ICAgICAgICBtZXNzYWdlID0gdW5pY29kZShnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQorICAg
ICAgICBtZXNzYWdlID0gdGV4dF90eXBlKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAg
ICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICBtZXNzYWdlICs9IGV4Y2Vw
dGlvbl9zdHJpbmcKICAgICAgICAgcmV0dXJuIHRlc3QucmVzdWx0X2NscyhzdGF0dXMsIG1lc3Nh
Z2UpLCBbXQogCiAgICAgZGVmIHdhaXQoc2VsZik6CkBAIC0zMTAsOSArMzEzLDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0RXhlY3V0b3IpOgogY2xhc3MgUmVmVGVzdEV4ZWN1dG9y
KFRlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSByZWZ0ZXN0X3Jlc3VsdF9jb252
ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0
aW1lb3V0X211bHRpcGxpZXI9MSwgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLAorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlw
bGllcj0xLCBzY3JlZW5zaG90X2NhY2hlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2lu
Zm89Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwg
YnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAgVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNl
bGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAKQEAgLTQ5Niwx
MSArNDk5LDExIEBAIGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgY29u
dmVydF9yZXN1bHQgPSBweXRlc3RfcmVzdWx0X2NvbnZlcnRlcgogICAgIHByb3RvY29sX2NscyA9
IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB3
ZWJkcml2ZXJfYmluYXJ5LAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsIHdlYmRyaXZlcl9iaW5hcnksCiAgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9hcmdzLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAg
ICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLmRv
X2RlbGF5ZWRfaW1wb3J0cygpCi0gICAgICAgIFRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLAorICAgICAgICBUZXN0RXhlY3V0b3IuX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKICAgICAgICAgc2Vs
Zi53ZWJkcml2ZXJfYmluYXJ5ID0gd2ViZHJpdmVyX2JpbmFyeQpAQCAtNTEwLDcgKzUxMyw3IEBA
IGNsYXNzIFdkc3BlY0V4ZWN1dG9yKFRlc3RFeGVjdXRvcik6CiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBzZWxmLnByb3RvY29sX2NscyhzZWxmLCBicm93c2VyKQogCiAgICAgZGVmIGlzX2FsaXZl
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZQorICAgICAgICBy
ZXR1cm4gc2VsZi5wcm90b2NvbC5pc19hbGl2ZSgpCiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRf
Y2hhbmdlKHNlbGYsIG5ld19lbnZpcm9ubWVudCk6CiAgICAgICAgIHBhc3MKQEAgLTU3Myw3ICs1
NzYsNyBAQCBjbGFzcyBXZHNwZWNSdW4ob2JqZWN0KToKICAgICAgICAgICAgIG1lc3NhZ2UgPSBn
ZXRhdHRyKGUsICJtZXNzYWdlIikKICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAiXG4iCi0gICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKGUpCisgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBt
ZXNzYWdlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5z
ZXQoKQpAQCAtNjM2LDEwICs2MzksOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2Nv
bCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgaWYg
c2VsZi5zZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuc2VydmVyLmlzX2FsaXZlOgorICAgICAg
ICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZSBhbmQgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToK
ICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCi0gICAgQHByb3BlcnR5CiAgICAgZGVm
IGlzX2FsaXZlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMg
c3RpbGwgYWxpdmUuCiAKQEAgLTY3NSwyMCArNjc3LDcgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAiY29tcGxldGUiOiBzZWxmLnByb2Nlc3NfY29tcGxldGUK
ICAgICAgICAgfQogCi0gICAgICAgIHNlbGYuYWN0aW9ucyA9IHsKLSAgICAgICAgICAgICJjbGlj
ayI6IENsaWNrQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAgICAgICAgICAg
ICJzZW5kX2tleXMiOiBTZW5kS2V5c0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCks
Ci0gICAgICAgICAgICAiYWN0aW9uX3NlcXVlbmNlIjogQWN0aW9uU2VxdWVuY2VBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdlbmVyYXRlX3Rlc3RfcmVw
b3J0IjogR2VuZXJhdGVUZXN0UmVwb3J0QWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29s
KSwKLSAgICAgICAgICAgICJzZXRfcGVybWlzc2lvbiI6IFNldFBlcm1pc3Npb25BY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImFkZF92aXJ0dWFsX2F1dGhl
bnRpY2F0b3IiOiBBZGRWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2Vs
Zi5wcm90b2NvbCksCi0gICAgICAgICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6
IFJlbW92ZVZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3Rv
Y29sKSwKLSAgICAgICAgICAgICJhZGRfY3JlZGVudGlhbCI6IEFkZENyZWRlbnRpYWxBY3Rpb24o
c2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgImdldF9jcmVkZW50aWFs
cyI6IEdldENyZWRlbnRpYWxzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKLSAg
ICAgICAgICAgICJyZW1vdmVfY3JlZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24oc2Vs
Zi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInJlbW92ZV9hbGxfY3JlZGVu
dGlhbHMiOiBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90
b2NvbCksCi0gICAgICAgICAgICAic2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRVc2VyVmVyaWZpZWRB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICB9CisgICAgICAgIHNl
bGYuYWN0aW9ucyA9IHtjbHMubmFtZTogY2xzKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSBm
b3IgY2xzIGluIGFjdGlvbnN9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0KToKICAg
ICAgICAgdXJsLCBjb21tYW5kLCBwYXlsb2FkID0gcmVzdWx0CkBAIC03MjksMTUwICs3MTgsMyBA
QCBjbGFzcyBDYWxsYmFja0hhbmRsZXIob2JqZWN0KToKIAogICAgIGRlZiBfc2VuZF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICBzZWxm
LnByb3RvY29sLnRlc3Rkcml2ZXIuc2VuZF9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgc3RhdHVzLCBt
ZXNzYWdlPW1lc3NhZ2UpCi0KLQotY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0g
bG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2Fs
bF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9y
Il0KLSAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDbGlja2luZyBlbGVt
ZW50OiAlcyIgJSBzZWxlY3RvcikKLSAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50
KGVsZW1lbnQpCi0KLQotY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9n
Z2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9f
KHNlbGYsIHBheWxvYWQpOgotICAgICAgICBzZWxlY3RvciA9IHBheWxvYWRbInNlbGVjdG9yIl0K
LSAgICAgICAga2V5cyA9IHBheWxvYWRbImtleXMiXQotICAgICAgICBlbGVtZW50ID0gc2VsZi5w
cm90b2NvbC5zZWxlY3QuZWxlbWVudF9ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIlNlbmRpbmcga2V5cyB0byBlbGVtZW50OiAlcyIgJSBzZWxlY3RvcikK
LSAgICAgICAgc2VsZi5wcm90b2NvbC5zZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMp
Ci0KLQotY2xhc3MgQWN0aW9uU2VxdWVuY2VBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2Vy
Ci0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYsIHBheWxvYWQpOgotICAgICAgICAjIFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVycm9y
IGNoZWNraW5nCi0gICAgICAgIGFjdGlvbnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KLSAgICAgICAg
Zm9yIGFjdGlvblNlcXVlbmNlIGluIGFjdGlvbnM6Ci0gICAgICAgICAgICBpZiBhY3Rpb25TZXF1
ZW5jZVsidHlwZSJdID09ICJwb2ludGVyIjoKLSAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGlu
IGFjdGlvblNlcXVlbmNlWyJhY3Rpb25zIl06Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rp
b25bInR5cGUiXSA9PSAicG9pbnRlck1vdmUiIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAg
aXNpbnN0YW5jZShhY3Rpb25bIm9yaWdpbiJdLCBkaWN0KSk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25bIm9yaWdpbiJdID0gc2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdpbiJd
WyJzZWxlY3RvciJdLCBhY3Rpb25bImZyYW1lIl1bImZyYW1lIl0pCi0gICAgICAgIHNlbGYucHJv
dG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNlbmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25zfSkK
LQotICAgIGRlZiBnZXRfZWxlbWVudChzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6Ci0g
ICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9y
KGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKQotICAgICAgICByZXR1cm4gZWxlbWVudAotCi1jbGFz
cyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAg
ICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBh
eWxvYWQpOgotICAgICAgICBtZXNzYWdlID0gcGF5bG9hZFsibWVzc2FnZSJdCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQot
ICAgICAgICBzZWxmLnByb3RvY29sLmdlbmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3Rf
cmVwb3J0KG1lc3NhZ2UpCi0KLWNsYXNzIFNldFBlcm1pc3Npb25BY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAgIHNlbGYubG9n
Z2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBwZXJtaXNzaW9uX3BhcmFtcyA9IHBh
eWxvYWRbInBlcm1pc3Npb25fcGFyYW1zIl0KLSAgICAgICAgZGVzY3JpcHRvciA9IHBlcm1pc3Np
b25fcGFyYW1zWyJkZXNjcmlwdG9yIl0KLSAgICAgICAgbmFtZSA9IGRlc2NyaXB0b3JbIm5hbWUi
XQotICAgICAgICBzdGF0ZSA9IHBlcm1pc3Npb25fcGFyYW1zWyJzdGF0ZSJdCi0gICAgICAgIG9u
ZV9yZWFsbSA9IHBlcm1pc3Npb25fcGFyYW1zLmdldCgib25lUmVhbG0iLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgcGVybWlzc2lvbiAlcyB0byAlcywgb25lUmVh
bG09JXMiICUgKG5hbWUsIHN0YXRlLCBvbmVfcmVhbG0pKQotICAgICAgICBzZWxmLnByb3RvY29s
LnNldF9wZXJtaXNzaW9uLnNldF9wZXJtaXNzaW9uKGRlc2NyaXB0b3IsIHN0YXRlLCBvbmVfcmVh
bG0pCi0KLWNsYXNzIEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGlu
ZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3IiKQotICAgICAgICBjb25maWcgPSBwYXlsb2FkWyJjb25m
aWciXQotICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1
dGhlbnRpY2F0b3IuYWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcpCi0gICAgICAgIHNl
bGYubG9nZ2VyLmRlYnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRo
ZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9pZAotCi1jbGFzcyBS
ZW1vdmVWaXJ0dWFsQXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIK
LSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxsX18oc2Vs
ZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50
aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQotICAgICAgICByZXR1cm4gc2Vs
Zi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGlj
YXRvcihhdXRoZW50aWNhdG9yX2lkKQotCi0KLWNsYXNzIEFkZENyZWRlbnRpYWxBY3Rpb24ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Ci0gICAgICAg
IHNlbGYubG9nZ2VyID0gbG9nZ2VyCi0gICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAot
Ci0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgotICAgICAgICBhdXRoZW50aWNhdG9y
X2lkID0gcGF5bG9hZFsiYXV0aGVudGljYXRvcl9pZCJdCi0gICAgICAgIGNyZWRlbnRpYWwgPSBw
YXlsb2FkWyJjcmVkZW50aWFsIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBj
cmVkZW50aWFsIHRvIHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9p
ZCkKLSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmFk
ZF9jcmVkZW50aWFsKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCi0KLWNsYXNzIEdldENy
ZWRlbnRpYWxzQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwg
cHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAg
ICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBmcm9tIHZpcnR1YWwg
YXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50aWFscyhhdXRoZW50
aWNhdG9yX2lkKQotCi1jbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgotICAgICAgICBzZWxmLmxvZ2dl
ciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxv
YWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsi
Y3JlZGVudGlhbF9pZCJdCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVk
ZW50aWFsICVzIGZyb20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVu
dGljYXRvcl9pZCkpCi0gICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVu
dGljYXRvci5yZW1vdmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lk
KQotCi1jbGFzcyBSZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIHByb3RvY29sKToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBs
b2dnZXIKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgcGF5bG9hZCk6Ci0gICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJh
dXRoZW50aWNhdG9yX2lkIl0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGFs
bCBjcmVkZW50aWFscyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkK
LSAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92
ZV9hbGxfY3JlZGVudGlhbHMoYXV0aGVudGljYXRvcl9pZCkKLQotY2xhc3MgU2V0VXNlclZlcmlm
aWVkQWN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9j
b2wpOgotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgotICAgICAgICBzZWxmLnByb3RvY29s
ID0gcHJvdG9jb2wKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAg
YXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQotICAgICAgICB1
diA9IHBheWxvYWRbInV2Il0KLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAiU2V0dGluZyB1c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIg
JSAoYXV0aGVudGljYXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQotICAgICAgICByZXR1
cm4gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQo
YXV0aGVudGljYXRvcl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9ybWFyaW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3Jt
YXJpb25ldHRlLnB5CmluZGV4IDU5ZjdlODY1YTViODcxMWZhNzFjOWM4OTU1ZWNhNzMxZTAwNDhj
M2YuLjJlYWYyNTgwMWRmNTAyNzZmMmIwMjQ0N2Q2OGEzZmM5OGM1YzM3N2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0zLDkgKzMsMTEgQEAg
aW1wb3J0IG9zCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAogCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0
ZW1zLCBpdGVya2V5cworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2lu
CisKIGVycm9ycyA9IE5vbmUKIG1hcmlvbmV0dGUgPSBOb25lCiBweXRlc3RydW5uZXIgPSBOb25l
CkBAIC0xMTMsOCArMTE1LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFz
ZVByb3RvY29sUGFydCk6CiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAg
ICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU29ja2V0IGNsb3NlZCIpCiAgICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQorICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogCkBAIC0x
MzIsMTcgKzEzNCwxNiBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQo
VGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgICAgICAjIENoZWNrIGlmIHdlIHByZXZpb3Vz
bHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBtYWtlIHN1cmUgaXQncyBj
bG9zZWQKICAgICAgICAgaWYgc2VsZi5ydW5uZXJfaGFuZGxlOgogICAgICAgICAgICAgc2VsZi5f
Y2xvc2Vfd2luZG93cygpCi0gICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJl
bnQuZXhlY3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQorICAgICAgICB1cmwgPSB1
cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9yLnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwgIi90
ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2Fk
aW5nICVzIiAlIHVybCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5kaXNtaXNzX2Fs
ZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmNyaXRpY2FsKAogICAgICAgICAgICAgICAgICJMb2FkaW5nIGluaXRpYWwg
cGFnZSAlcyBmYWlsZWQuIEVuc3VyZSB0aGF0IHRoZSAiCiAgICAgICAgICAgICAgICAgInRoZXJl
IGFyZSBubyBvdGhlciBwcm9ncmFtcyBib3VuZCB0byB0aGlzIHBvcnQgYW5kICIKICAgICAgICAg
ICAgICAgICAidGhhdCB5b3VyIGZpcmV3YWxsIHJ1bGVzIG9yIG5ldHdvcmsgc2V0dXAgZG9lcyBu
b3QgIgotICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIgJSAodXJsLCB0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkpCisgICAgICAgICAgICAgICAgciJwcmV2ZW50IGFjY2Vzcy5c
ZSVzIiAlICh1cmwsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQogICAgICAgICAgICAgcmFpc2UK
ICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi5tYXJpb25ldHRlLmN1cnJlbnRfd2lu
ZG93X2hhbmRsZQogICAgICAgICBmb3JtYXRfbWFwID0geyJ0aXRsZSI6IHRocmVhZGluZy5jdXJy
ZW50X3RocmVhZCgpLm5hbWUucmVwbGFjZSgiJyIsICciJyl9CkBAIC01OTIsNyArNTkzLDYgQEAg
Y2xhc3MgTWFyaW9uZXR0ZVByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgIGRlbCBzZWxm
Lm1hcmlvbmV0dGUKICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVByb3RvY29sLCBzZWxmKS50ZWFy
ZG93bigpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYubWFyaW9uZXR0ZS5jdXJyZW50X3dpbmRvd19oYW5kbGUK
QEAgLTYwMiwxNCArNjAyLDE0IEBAIGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6
CiAKICAgICBkZWYgb25fZW52aXJvbm1lbnRfY2hhbmdlKHNlbGYsIG9sZF9lbnZpcm9ubWVudCwg
bmV3X2Vudmlyb25tZW50KToKICAgICAgICAgI1Vuc2V0IGFsbCB0aGUgb2xkIHByZWZzCi0gICAg
ICAgIGZvciBuYW1lIGluIG9sZF9lbnZpcm9ubWVudC5nZXQoInByZWZzIiwge30pLml0ZXJrZXlz
KCk6CisgICAgICAgIGZvciBuYW1lIGluIGl0ZXJrZXlzKG9sZF9lbnZpcm9ubWVudC5nZXQoInBy
ZWZzIiwge30pKToKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5leGVjdXRvci5vcmlnaW5hbF9w
cmVmX3ZhbHVlc1tuYW1lXQogICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAg
ICAgICAgICBzZWxmLnByZWZzLmNsZWFyKG5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYucHJlZnMuc2V0KG5hbWUsIHZhbHVlKQogCi0gICAgICAgIGZvciBuYW1l
LCB2YWx1ZSBpbiBuZXdfZW52aXJvbm1lbnQuZ2V0KCJwcmVmcyIsIHt9KS5pdGVyaXRlbXMoKToK
KyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhuZXdfZW52aXJvbm1lbnQuZ2V0
KCJwcmVmcyIsIHt9KSk6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLm9yaWdpbmFsX3ByZWZf
dmFsdWVzW25hbWVdID0gc2VsZi5wcmVmcy5nZXQobmFtZSkKICAgICAgICAgICAgIHNlbGYucHJl
ZnMuc2V0KG5hbWUsIHZhbHVlKQogCkBAIC02NTksNyArNjU5LDcgQEAgY2xhc3MgRXhlY3V0ZUFz
eW5jU2NyaXB0UnVuKFRpbWVkUnVubmVyKToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0
YXR0cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRy
YWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNl
LCAoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKQEAgLTY2OSwx
MSArNjY5LDExIEBAIGNsYXNzIEV4ZWN1dGVBc3luY1NjcmlwdFJ1bihUaW1lZFJ1bm5lcik6CiBj
bGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToK
ICAgICBzdXBwb3J0c190ZXN0ZHJpdmVyID0gVHJ1ZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVs
dGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBjbG9zZV9hZnRlcl9kb25lPVRydWUsIGRlYnVn
X2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlYnVnPUZh
bHNlLCBjY292PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk1hcmlvbmV0dGUtYmFzZWQg
ZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAgICAgICAg
VGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZl
cl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9t
dWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTY5OCw3ICs2OTgsNyBAQCBjbGFzcyBNYXJp
b25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAg
c2VsZi5wcm90b2NvbC50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmxhc3RfZW52aXJvbm1l
bnRbInByb3RvY29sIl0pCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnByb3RvY29sLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlz
X2FsaXZlKCkKIAogICAgIGRlZiBvbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2VsZiwgbmV3X2Vudmly
b25tZW50KToKICAgICAgICAgc2VsZi5wcm90b2NvbC5vbl9lbnZpcm9ubWVudF9jaGFuZ2Uoc2Vs
Zi5sYXN0X2Vudmlyb25tZW50LCBuZXdfZW52aXJvbm1lbnQpCkBAIC03NjUsMTMgKzc2NSwxNCBA
QCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9y
KToKIAogCiBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNl
cnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3Jl
ZW5zaG90X2NhY2hlPU5vbmUsIGNsb3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAg
ICAgZGVidWdfaW5mbz1Ob25lLCByZWZ0ZXN0X2ludGVybmFsPUZhbHNlLAogICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X3NjcmVlbnNob3Q9InVuZXhwZWN0ZWQiLCBjY292PUZhbHNlLAogICAgICAg
ICAgICAgICAgICBncm91cF9tZXRhZGF0YT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9
RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9uZXR0ZS1iYXNlZCBleGVjdXRvciBm
b3IgcmVmdGVzdHMiIiIKICAgICAgICAgUmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicm93c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
bnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTc5OCw3ICs3OTksNyBAQCBjbGFzcyBN
YXJpb25ldHRlUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICBz
ZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fQogCiAgICAgZGVmIHNldHVwKHNlbGYsIHJ1bm5lcik6Ci0gICAgICAgIHN1cGVyKHNlbGYuX19j
bGFzc19fLCBzZWxmKS5zZXR1cChydW5uZXIpCisgICAgICAgIHN1cGVyKE1hcmlvbmV0dGVSZWZU
ZXN0RXhlY3V0b3IsIHNlbGYpLnNldHVwKHJ1bm5lcikKICAgICAgICAgc2VsZi5pbXBsZW1lbnRh
dGlvbi5zZXR1cCgqKnNlbGYuaW1wbGVtZW50YXRpb25fa3dhcmdzKQogCiAgICAgZGVmIHRlYXJk
b3duKHNlbGYpOgpAQCAtODA4LDE3ICs4MDksMTcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RF
eGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxm
LnByb3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBo
YW5kbGVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dp
dGNoX3RvX3dpbmRvdyhoYW5kbGVzWzBdKQotICAgICAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNz
X18sIHNlbGYpLnRlYXJkb3duKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICAgICAgc3VwZXIoTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvciwgc2VsZikudGVhcmRvd24o
KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3Jz
IGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRXhjZXB0
aW9uIGR1cmluZyByZWZ0ZXN0IHRlYXJkb3duOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKICAgICBkZWYgcmVzZXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24ucmVzZXQoKipzZWxmLmltcGxlbWVudGF0
aW9uX2t3YXJncykKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxp
dmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBuZXdfZW52aXJvbm1l
bnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLmxh
c3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTg5Myw4ICs4OTQsOSBAQCBjbGFz
cyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgog
ICAgIGRlZiBzZXR1cChzZWxmLCBzY3JlZW5zaG90PSJ1bmV4cGVjdGVkIik6CiAgICAgICAgIGRh
dGEgPSB7InNjcmVlbnNob3QiOiBzY3JlZW5zaG90fQogICAgICAgICBpZiBzZWxmLmV4ZWN1dG9y
Lmdyb3VwX21ldGFkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsidXJsQ291bnQi
XSA9IHt1cmxwYXJzZS51cmxqb2luKHNlbGYuZXhlY3V0b3Iuc2VydmVyX3VybChrZXlbMF0pLCBr
ZXlbMV0pOnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYuZXhlY3V0b3IuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJ1cmxfY291bnQiLCB7fSku
aXRlcml0ZW1zKCkKKyAgICAgICAgICAgIGRhdGFbInVybENvdW50Il0gPSB7dXJsam9pbihzZWxm
LmV4ZWN1dG9yLnNlcnZlcl91cmwoa2V5WzBdKSwga2V5WzFdKTp2YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dG9yLmdyb3VwX21ldGFkYXRh
LmdldCgidXJsX2NvdW50Iiwge30pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB2YWx1ZSA+IDF9CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5z
ZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJP
TUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5fc2VuZF9tZXNz
YWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKQEAgLTkzNCw5ICs5MzYsOSBAQCBjbGFzcyBJbnRl
cm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihSZWZUZXN0SW1wbGVtZW50YXRpb24pOgogICAgICAg
ICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUud2lu
ZG93X2hhbmRsZXMKICAgICAgICAgICAgICAgICBpZiBoYW5kbGVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyho
YW5kbGVzWzBdKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIElnbm9yZSBlcnJvcnMgZHVyaW5nIHRlYXJkb3du
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4Yygp
KQogCiAKIGNsYXNzIEdlY2tvRHJpdmVyUHJvdG9jb2woV2ViRHJpdmVyUHJvdG9jb2wpOgpAQCAt
OTQ4LDExICs5NTAsMTEgQEAgY2xhc3MgTWFyaW9uZXR0ZVdkc3BlY0V4ZWN1dG9yKFdkc3BlY0V4
ZWN1dG9yKToKIAogCiBjbGFzcyBNYXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0
RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmln
LCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWc9RmFsc2UsCiAg
ICAgICAgICAgICAgICAgIGNjb3Y9RmFsc2UsICoqa3dhcmdzKToKICAgICAgICAgIiIiTWFyaW9u
ZXR0ZS1iYXNlZCBleGVjdXRvciBmb3IgdGVzdGhhcm5lc3MuanMgdGVzdHMiIiIKLSAgICAgICAg
Q3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywK
KyAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9j
b2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKQEAgLTk3Miw3ICs5NzQsNyBAQCBjbGFzcyBN
YXJpb25ldHRlQ3Jhc2h0ZXN0RXhlY3V0b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgogICAgICAgICAg
ICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKKyAgICAgICAgcmV0dXJuIHNlbGYucHJv
dG9jb2wuaXNfYWxpdmUoKQogCiAgICAgZGVmIG9uX2Vudmlyb25tZW50X2NoYW5nZShzZWxmLCBu
ZXdfZW52aXJvbm1lbnQpOgogICAgICAgICBzZWxmLnByb3RvY29sLm9uX2Vudmlyb25tZW50X2No
YW5nZShzZWxmLmxhc3RfZW52aXJvbm1lbnQsIG5ld19lbnZpcm9ubWVudCkKQEAgLTk5MSwxNSAr
OTkzLDE2IEBAIGNsYXNzIE1hcmlvbmV0dGVDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVj
dXRvcik6CiAgICAgICAgIGlmIG5vdCBzdWNjZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gZGF0
YVswXQogCisgICAgICAgIGV4dHJhID0gTm9uZQogICAgICAgICBpZiBzZWxmLmRlYnVnIGFuZCAo
c3VjY2VzcyBvciBzdGF0dXMgbm90IGluICgiQ1JBU0giLCAiSU5URVJOQUwtRVJST1IiKSk6CiAg
ICAgICAgICAgICBhc3NlcnRpb25fY291bnQgPSBzZWxmLnByb3RvY29sLmFzc2VydHMuZ2V0KCkK
ICAgICAgICAgICAgIGlmIGFzc2VydGlvbl9jb3VudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBkYXRhWyJleHRyYSJdID0geyJhc3NlcnRpb25fY291bnQiOiBhc3NlcnRpb25fY291bnR9
CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7ImFzc2VydGlvbl9jb3VudCI6IGFzc2VydGlvbl9j
b3VudH0KIAogICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29u
dmVydF9yZXN1bHQodGVzdCwgZGF0YSkKIAotICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2Ns
cygqKmRhdGEpLCBbXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoZXh0cmE9ZXh0
cmEsICpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fY3Jhc2h0ZXN0KHNlbGYsIHByb3RvY29sLCB1
cmwsIHRpbWVvdXQpOgogICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVyYWdlLmlzX2VuYWJs
ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKaW5kZXggY2Vj
YTgxMjExZTExNDA1NzdjYzNhNWYxNjNmZmUxN2M3M2RkNTZhMy4uOTYzMTJmM2Y5Zjk1NDJmZWRl
NjA5ZTZmOTllZjkzMTI3ZjEyMmQxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcnNlbGVuaXVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0
b3JzZWxlbml1bS5weQpAQCAtMSwxMSArMSwxMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzb2NrZXQKIGlt
cG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdXJs
cGFyc2UKIGltcG9ydCB1dWlkCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVy
bGpvaW4KIAogZnJvbSAuYmFzZSBpbXBvcnQgKENhbGxiYWNrSGFuZGxlciwKICAgICAgICAgICAg
ICAgICAgICBSZWZUZXN0RXhlY3V0b3IsCkBAIC03Miw4ICs3Myw4IEBAIGNsYXNzIFNlbGVuaXVt
QmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgICAgIGV4Y2VwdCAo
c29ja2V0LnRpbWVvdXQsIGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLkVycm9ySW5SZXNwb25zZUV4Y2VwdGlvbiwgSU9FcnJv
cik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0
X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAg
c2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgICAg
ICBicmVhawogCiAKQEAgLTg3LDggKzg4LDggQEAgY2xhc3MgU2VsZW5pdW1UZXN0aGFybmVzc1By
b3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVy
KHNlbGYsIHVybF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAg
ICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3aXRjaF90b193aW5kb3coc2VsZi5ydW5uZXJfaGFu
ZGxlKQotICAgICAgICB1cmwgPSB1cmxwYXJzZS51cmxqb2luKHNlbGYucGFyZW50LmV4ZWN1dG9y
LnNlcnZlcl91cmwodXJsX3Byb3RvY29sKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sIikKKyAgICAgICAgdXJsID0gdXJsam9pbihzZWxm
LnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCisgICAgICAgICAgICAg
ICAgICAgICAgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJMb2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZ2V0KHVy
bCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gc2VsZi53ZWJkcml2ZXIuY3VycmVudF93
aW5kb3dfaGFuZGxlCkBAIC0yNjEsNyArMjYyLDcgQEAgY2xhc3MgU2VsZW5pdW1SdW4oVGltZWRS
dW5uZXIpOgogICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKKyAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQogICAgICAgICAgICAg
c2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBAIC0yNzAsMTEg
KzI3MSwxMSBAQCBjbGFzcyBTZWxlbml1bVJ1bihUaW1lZFJ1bm5lcik6CiBjbGFzcyBTZWxlbml1
bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgc3VwcG9ydHNf
dGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2
ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAg
ICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwb3J0c19lYWdlcl9wYWdlbG9h
ZD1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIlNlbGVuaXVtLWJhc2VkIGV4ZWN1dG9yIGZv
ciB0ZXN0aGFybmVzcy5qcyB0ZXN0cyIiIgotICAgICAgICBUZXN0aGFybmVzc0V4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsCisgICAgICAgIFRlc3RoYXJuZXNz
RXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcj10
aW1lb3V0X211bHRpcGxpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWdfaW5mbz1kZWJ1Z19pbmZvKQogICAgICAgICBzZWxmLnByb3RvY29sID0gU2VsZW5pdW1Q
cm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMpCkBAIC0zNTUsMTEgKzM1NiwxMiBA
QCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJsYW5rIikgewogCiAKIGNsYXNzIFNlbGVu
aXVtUmVmVGVzdEV4ZWN1dG9yKFJlZlRlc3RFeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIHRpbWVvdXRf
bXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPU5vbmUsIGNs
b3NlX2FmdGVyX2RvbmU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lLCBj
YXBhYmlsaXRpZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJTZWxlbml1bSBXZWJEcml2
ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHJlZnRlc3RzIiIiCiAgICAgICAgIFJlZlRlc3RFeGVjdXRv
ci5fX2luaXRfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JlZW5zaG90X2NhY2hlPXNjcmVlbnNob3RfY2FjaGUsCkBAIC0zNzEs
OCArMzczLDggQEAgY2xhc3MgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9y
KToKICAgICAgICAgc2VsZi5jbG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0ZXJfZG9uZQogICAg
ICAgICBzZWxmLmhhc193aW5kb3cgPSBGYWxzZQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4oaGVyZSwgInRlc3Qtd2FpdC5qcyIgJSB7ImNsYXNzbmFtZSI6ICJyZWZ0ZXN0LXdhaXQi
fSkpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKKyAgICAg
ICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdC13YWl0LmpzIikpIGFzIGY6Cisg
ICAgICAgICAgICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkgJSB7ImNsYXNzbmFtZSI6ICJy
ZWZ0ZXN0LXdhaXQifQogCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLmltcGxl
bWVudGF0aW9uLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhl
Y3V0b3JzZXJ2by5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2by5weQpp
bmRleCA5Y2VmMWZiMmQ3Zjc4ZTg3MjllNTFmZjQwMGIzZGYyNDAyYTJlOTRlLi5mODNmMDExNWUw
MDY4MTE0YmI2MmE4MDRiMzA1NWNiNTEwODE0YjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9l
eGVjdXRvcnNlcnZvLnB5CkBAIC03LDYgKzcsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0
aHJlYWRpbmcKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1dWlkCitmcm9tIHNpeCBpbXBvcnQg
ZW5zdXJlX3N0ciwgaXRlcml0ZW1zCiAKIGZyb20gbW96cHJvY2VzcyBpbXBvcnQgUHJvY2Vzc0hh
bmRsZXIKIApAQCAtMjIsOCArMjMsMTAgQEAgZnJvbSAuYmFzZSBpbXBvcnQgKENvbm5lY3Rpb25s
ZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUHJvdG9jb2wpCiBmcm9t
IC5wcm9jZXNzIGltcG9ydCBQcm9jZXNzVGVzdEV4ZWN1dG9yCiBmcm9tIC4uYnJvd3NlcnMuYmFz
ZSBpbXBvcnQgYnJvd3Nlcl9jb21tYW5kCitmcm9tIC4ucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYK
IGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBTZXJ2b0RyaXZlclNlcnZlcgogCisKIHB5
dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZlciA9IE5vbmUKIApAQCAtNDUsNyArNDgsNyBAQCBk
ZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3VybF9mdW5jLCBicm93c2VyLCBiaW5h
cnksIHBhdXNlX2FmdGVyX3Rlc3QsCiAgICAgICAgIGFyZ3MgKz0gWyItWiIsIGRlYnVnX29wdHNd
CiAgICAgZm9yIHN0eWxlc2hlZXQgaW4gYnJvd3Nlci51c2VyX3N0eWxlc2hlZXRzOgogICAgICAg
ICBhcmdzICs9IFsiLS11c2VyLXN0eWxlc2hlZXQiLCBzdHlsZXNoZWV0XQotICAgIGZvciBwcmVm
LCB2YWx1ZSBpbiB0ZXN0LmVudmlyb25tZW50LmdldCgncHJlZnMnLCB7fSkuaXRlcml0ZW1zKCk6
CisgICAgZm9yIHByZWYsIHZhbHVlIGluIGl0ZXJpdGVtcyh0ZXN0LmVudmlyb25tZW50LmdldCgn
cHJlZnMnLCB7fSkpOgogICAgICAgICBhcmdzICs9IFsiLS1wcmVmIiwgIiVzPSVzIiAlIChwcmVm
LCB2YWx1ZSldCiAgICAgaWYgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRoOgogICAgICAgICBh
cmdzICs9IFsiLS1jZXJ0aWZpY2F0ZS1wYXRoIiwgYnJvd3Nlci5jYV9jZXJ0aWZpY2F0ZV9wYXRo
XQpAQCAtNjIsOSArNjUsOSBAQCBkZWYgYnVpbGRfc2Vydm9fY29tbWFuZCh0ZXN0LCB0ZXN0X3Vy
bF9mdW5jLCBicm93c2VyLCBiaW5hcnksIHBhdXNlX2FmdGVyX3Rlc3QsCiBjbGFzcyBTZXJ2b1Rl
c3RoYXJuZXNzRXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1
bHQgPSB0ZXN0aGFybmVzc19yZXN1bHRfY29udmVydGVyCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsIGRlYnVnX2lu
Zm89Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAg
ICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIFByb2Nl
c3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywKKyAg
ICAgICAgUHJvY2Vzc1Rlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJyb3dzZXIs
IHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucGF1
c2VfYWZ0ZXJfdGVzdCA9IHBhdXNlX2FmdGVyX3Rlc3QKQEAgLTEwMCwxMSArMTAzLDExIEBAIGNs
YXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVyKHNlbGYuY29tbWFuZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRMaW5lPVtzZWxmLm9u
X291dHB1dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlz
aD1zZWxmLm9uX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2Fz
dF9lbnYoZW52KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
T3V0cHV0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5wcm9jLnJ1bigpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwg
ZW52PWVudikKKyAgICAgICAgICAgIHNlbGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5j
b21tYW5kLCBlbnY9Y2FzdF9lbnYoZW52KSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0
aW1lb3V0ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIKQEAgLTE3OSwx
MCArMTgyLDExIEBAIGNsYXNzIFRlbXBGaWxlbmFtZShvYmplY3QpOgogY2xhc3MgU2Vydm9SZWZU
ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBy
ZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgYmluYXJ5
PU5vbmUsIHRpbWVvdXRfbXVsdGlwbGllcj0xLAogICAgICAgICAgICAgICAgICBzY3JlZW5zaG90
X2NhY2hlPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwgcGF1c2VfYWZ0ZXJfdGVzdD1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBQcm9jZXNzVGVzdEV4ZWN1dG9yLl9f
aW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXI9dGltZW91dF9tdWx0
aXBsaWVyLApAQCAtMjMxLDcgKzIzNSw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFBy
b2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaW50ZXJhY3RpdmU6
CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jID0gUHJvY2Vzc0hhbmRsZXIoc2VsZi5jb21tYW5k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NPdXRw
dXRMaW5lPVtzZWxmLm9uX291dHB1dF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSkKIAogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAt
MjQzLDcgKzI0Nyw3IEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NUZXN0RXhl
Y3V0b3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYo
ZW52KSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2ID0gc2Vs
Zi5wcm9jLndhaXQoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoK
QEAgLTI1NywxMCArMjYxLDEwIEBAIGNsYXNzIFNlcnZvUmVmVGVzdEV4ZWN1dG9yKFByb2Nlc3NU
ZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgaWYgcnYgIT0gMCBvciBub3Qgb3MucGF0aC5leGlz
dHMob3V0cHV0X3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgKCJDUkFTSCIs
IE5vbmUpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCkgYXMgZjoKKyAgICAg
ICAgICAgIHdpdGggb3BlbihvdXRwdXRfcGF0aCwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAg
ICAjIE1pZ2h0IG5lZWQgdG8gc3RyaXAgdmFyaWFibGUgaGVhZGVycyBvciBzb21ldGhpbmcgaGVy
ZQogICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlLCBiYXNlNjQuYjY0ZW5jb2RlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRy
dWUsIGVuc3VyZV9zdHIoYmFzZTY0LmI2NGVuY29kZShkYXRhKSkKIAogICAgIGRlZiBkb190ZXN0
KHNlbGYsIHRlc3QpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmltcGxlbWVudGF0aW9uLnJ1bl90
ZXN0KHRlc3QpCkBAIC0zMDUsMTAgKzMwOSwxMSBAQCBjbGFzcyBTZXJ2b1RpbWVkUnVubmVyKFRp
bWVkUnVubmVyKToKIGNsYXNzIFNlcnZvQ3Jhc2h0ZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVj
dXRvcik6CiAgICAgY29udmVydF9yZXN1bHQgPSBjcmFzaHRlc3RfcmVzdWx0X2NvbnZlcnRlcgog
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb3dzZXIsIHNlcnZlcl9jb25maWcsIGJpbmFyeT1O
b25lLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2Vy
LCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCBiaW5hcnk9Tm9uZSwgdGltZW91dF9tdWx0aXBsaWVy
PTEsCiAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9Tm9uZSwgZGVidWdfaW5mbz1O
b25lLCBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6
CiAgICAgICAgIFByb2Nlc3NUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXJ2ZXJfY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXRfbXVsdGlwbGllcj10aW1lb3V0X211bHRpcGxpZXIsCkBAIC0zMjksNiArMzM0LDgg
QEAgY2xhc3MgU2Vydm9DcmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKICAg
ICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2Vydm9UaW1l
ZFJ1bm5lcihzZWxmLmxvZ2dlciwgc2VsZi5kb19jcmFzaHRlc3QsIHNlbGYucHJvdG9jb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsLCB0aW1lb3V0
LCBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCisgICAgICAgICMgRW5zdXJlIHRoYXQgbm8gcHJv
Y2Vzc2VzIGhhbmcgYXJvdW5kIGlmIHRoZXkgdGltZW91dC4KKyAgICAgICAgc2VsZi5wcm9jLmtp
bGwoKQogCiAgICAgICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252
ZXJ0X3Jlc3VsdCh0ZXN0LCBkYXRhKQpAQCAtMzUwLDExICszNTcsMTEgQEAgY2xhc3MgU2Vydm9D
cmFzaHRlc3RFeGVjdXRvcihQcm9jZXNzVGVzdEV4ZWN1dG9yKToKIAogICAgICAgICBpZiBub3Qg
c2VsZi5pbnRlcmFjdGl2ZToKICAgICAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3NIYW5kbGVy
KGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWNhc3RfZW52KGVu
diksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZU91dHB1dD1G
YWxzZSkKICAgICAgICAgICAgIHNlbGYucHJvYy5ydW4oKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9ZW52KQorICAg
ICAgICAgICAgc2VsZi5wcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLCBlbnY9Y2FzdF9l
bnYoZW52KSkKIAogICAgICAgICBzZWxmLnByb2Mud2FpdCgpCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZlci5weQppbmRleCAwMmVjYzc1NjY0NzY1NmU2YjIw
ZTA2MzcxZDI4NzY3ZmEwZWIwMGYxLi4wNjgwYzRlZDIyOTkwMzUxNDZjMmIxZTQ3OGY0YjNmYTFj
MzAxMTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9k
cml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVy
LnB5CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJQcm90b2NvbChQcm90
b2NvbCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQu
dGltZW91dCwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0
cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Cisg
ICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkK
ICAgICAgICAgICAgICAgICBicmVhawogCiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBTZXJ2
b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6CiAgICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0
cihlLCAibWVzc2FnZSIsICIiKQogICAgICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICJcbiIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZv
cm1hdF9leGMoZSkKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMo
KQogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIGUp
CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCkBA
IC0xNTUsMTAgKzE1NSwxMCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJ1bihUaW1lZFJ1bm5lcik6
CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKIAotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVl
LCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAq
Kmt3YXJncyk6Ci0gICAgICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJv
d3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisgICAgICAgIFRlc3Ro
YXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29u
ZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z19pbmZvPU5vbmUpCiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBTZXJ2b1dl
YkRyaXZlclByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcz1jYXBhYmlsaXRpZXMp
CiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3NlcnZv
ZHJpdmVyLmpzIikpIGFzIGY6CkBAIC0yMjEsMTEgKzIyMSwxMiBAQCBjbGFzcyBUaW1lb3V0RXJy
b3IoRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihS
ZWZUZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJf
Y29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAg
ICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjYXBhYmlsaXRpZXM9Tm9uZSwgZGVi
dWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgICIiIlNl
bGVuaXVtIFdlYkRyaXZlci1iYXNlZCBleGVjdXRvciBmb3IgcmVmdGVzdHMiIiIKICAgICAgICAg
UmVmVGVzdEV4ZWN1dG9yLl9faW5pdF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9j
YWNoZSwKQEAgLTIzNSw4ICsyMzYsOCBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVj
dXRvcihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM9Y2FwYWJpbGl0aWVzKQogICAgICAgICBzZWxmLmlt
cGxlbWVudGF0aW9uID0gUmVmVGVzdEltcGxlbWVudGF0aW9uKHNlbGYpCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IE5vbmUKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVm
dGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgotICAgICAgICAgICAgc2VsZi53YWl0X3Nj
cmlwdCA9IGYucmVhZCgpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3Qtd2FpdC5qcyIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi53YWl0X3NjcmlwdCA9IGYucmVh
ZCgpICUgeyJjbGFzc25hbWUiOiAicmVmdGVzdC13YWl0In0KIAogICAgIGRlZiByZXNldChzZWxm
KToKICAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCkBAIC0yNTYsNyArMjU3LDcg
QEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToK
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICByZXR1cm4gdGVzdC5y
ZXN1bHRfY2xzKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpLCBbXQogCiAgICAgZGVmIHNjcmVl
bnNob3Qoc2VsZiwgdGVzdCwgdmlld3BvcnRfc2l6ZSwgZHBpKToKQEAgLTI3Nyw3ICsyNzgsNyBA
QCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
CiAgICAgICAgIHJldHVybiBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLmxvZ2dlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi50ZXN0X3VybCh0ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmV4dHJhX3RpbWVvdXQpLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3Jz
L2V4ZWN1dG9yd2ViZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcndl
YmRyaXZlci5weQppbmRleCA5YjVmMzk3NjQwMjVlYmQ5MTJmOWZkMDgwYWQwNWRkMGRlZWE4Mjdj
Li5jNWYyOTY1ZWMxODU4NjEzMWJjMjBkMzk0ZjU2Yjc4ODI3YzEwMmVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yd2ViZHJpdmVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3J3ZWJkcml2ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKK2Zy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0
IHRyYWNlYmFjawotaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZAorZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiAKIGZyb20gLmJhc2UgaW1wb3J0IChDYWxsYmFj
a0hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgQ3Jhc2h0ZXN0RXhlY3V0b3IsCkBAIC02Niwx
MyArNjcsMjAgQEAgY2xhc3MgV2ViRHJpdmVyQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQ
YXJ0KToKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCgiIikKLSAgICAgICAgICAg
IGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhj
ZXB0aW9uKToKKyAgICAgICAgICAgIGV4Y2VwdCAoY2xpZW50LlRpbWVvdXRFeGNlcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC5TY3JpcHRUaW1lb3V0RXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICBjbGllbnQuSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uKToKKyAgICAgICAg
ICAgICAgICAjIEEgSmF2YXNjcmlwdEVycm9yRXhjZXB0aW9uIHdpbGwgaGFwcGVuIHdoZW4gd2Ug
bmF2aWdhdGU7CisgICAgICAgICAgICAgICAgIyBieSBpZ25vcmluZyBpdCBpdCdzIHBvc3NpYmxl
IHRvIHJlbG9hZCB0aGUgdGVzdCB3aGlsc3QgdGhlCisgICAgICAgICAgICAgICAgIyBoYXJuZXNz
IHJlbWFpbnMgcGF1c2VkCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZXhjZXB0
IChzb2NrZXQudGltZW91dCwgY2xpZW50Lk5vU3VjaFdpbmRvd0V4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgY2xpZW50LlVua25vd25FcnJvckV4Y2VwdGlvbiwgSU9FcnJvcik6CisgICAg
ICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBjbGll
bnQuTm9TdWNoV2luZG93RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKToKICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKGUpKQor
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgIGJyZWFrCiAK
IApAQCAtODYsOCArOTQsOCBAQCBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc1Byb3RvY29sUGFy
dChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgZGVmIGxvYWRfcnVubmVyKHNlbGYsIHVy
bF9wcm90b2NvbCk6CiAgICAgICAgIGlmIHNlbGYucnVubmVyX2hhbmRsZToKICAgICAgICAgICAg
IHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGUgPSBzZWxmLnJ1bm5lcl9oYW5kbGUKLSAgICAg
ICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5zZXJ2ZXJfdXJs
KHVybF9wcm90b2NvbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi90ZXN0aGFy
bmVzc19ydW5uZXIuaHRtbCIpCisgICAgICAgIHVybCA9IHVybGpvaW4oc2VsZi5wYXJlbnQuZXhl
Y3V0b3Iuc2VydmVyX3VybCh1cmxfcHJvdG9jb2wpLAorICAgICAgICAgICAgICAgICAgICAgICIv
dGVzdGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9h
ZGluZyAlcyIgJSB1cmwpCiAKICAgICAgICAgc2VsZi53ZWJkcml2ZXIudXJsID0gdXJsCkBAIC0y
ODgsMTUgKzI5NiwxOSBAQCBjbGFzcyBXZWJEcml2ZXJQcm90b2NvbChQcm90b2NvbCk6CiAgICAg
ICAgICAgICBtZXNzYWdlID0gc3RyKGdldGF0dHIoZSwgIm1lc3NhZ2UiLCAiIikpCiAgICAgICAg
ICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIgotICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgbWVz
c2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5k
ZWJ1ZyhtZXNzYWdlKQogICAgICAgICBzZWxmLndlYmRyaXZlciA9IE5vbmUKIAogICAgIGRlZiBp
c19hbGl2ZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBHZXQgYSBzaW1wbGUg
cHJvcGVydHkgb3ZlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIu
d2luZG93X2hhbmRsZQotICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBjbGllbnQuVW5r
bm93bkVycm9yRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgR2V0IGEgc2ltcGxlIHByb3BlcnR5
IG92ZXIgdGhlIGNvbm5lY3Rpb24sIHdpdGggMiBzZWNvbmRzIG9mIHRpbWVvdXQKKyAgICAgICAg
ICAgICMgdGhhdCBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBjaGVjayBpZiB0aGUgV2Vi
RHJpdmVyIGl0cworICAgICAgICAgICAgIyBzdGlsbCBhbGl2ZSwgYW5kIGFsbG93cyB0byBjb21w
bGV0ZSB0aGUgY2hlY2sgd2l0aGluIHRoZSB0ZXN0cnVubmVyCisgICAgICAgICAgICAjIDUgc2Vj
b25kcyBvZiBleHRyYV90aW1lb3V0IHdlIGhhdmUgYXMgbWF4aW11bSB0byBlbmQgdGhlIHRlc3Qg
YmVmb3JlCisgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCB0aW1lb3V0IGZyb20gdGVzdHJ1bm5l
ciB0cmlnZ2Vycy4KKyAgICAgICAgICAgIHNlbGYud2ViZHJpdmVyLnNlbmRfc2Vzc2lvbl9jb21t
YW5kKCJHRVQiLCAid2luZG93IiwgdGltZW91dD0yKQorICAgICAgICBleGNlcHQgKHNvY2tldC50
aW1lb3V0LCBjbGllbnQuVW5rbm93bkVycm9yRXhjZXB0aW9uLCBjbGllbnQuSW52YWxpZFNlc3Np
b25JZEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJu
IFRydWUKIApAQCAtMzI5LDcgKzM0MSw3IEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1bm5l
cik6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwg
IiIpKQogICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gIlxuIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1h
dF9leGMoZSkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IHRyYWNlYmFjay5mb3JtYXRfZXhj
KCkKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9S
IiwgbWVzc2FnZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2Zs
YWcuc2V0KCkKQEAgLTMzOCwxMSArMzUwLDExIEBAIGNsYXNzIFdlYkRyaXZlclJ1bihUaW1lZFJ1
bm5lcik6CiBjbGFzcyBXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhl
Y3V0b3IpOgogICAgIHN1cHBvcnRzX3Rlc3Rkcml2ZXIgPSBUcnVlCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGltZW91dF9tdWx0aXBsaWVyPTEsCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYnJvd3Nlciwgc2VydmVyX2NvbmZpZywgdGlt
ZW91dF9tdWx0aXBsaWVyPTEsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2FmdGVyX2RvbmU9VHJ1
ZSwgY2FwYWJpbGl0aWVzPU5vbmUsIGRlYnVnX2luZm89Tm9uZSwKICAgICAgICAgICAgICAgICAg
c3VwcG9ydHNfZWFnZXJfcGFnZWxvYWQ9VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiJXZWJE
cml2ZXItYmFzZWQgZXhlY3V0b3IgZm9yIHRlc3RoYXJuZXNzLmpzIHRlc3RzIiIiCi0gICAgICAg
IFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2NvbmZp
ZywKKyAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJy
b3dzZXIsIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dF9tdWx0aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNl
bGYucHJvdG9jb2wgPSBXZWJEcml2ZXJQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRp
ZXMpCkBAIC00MzcsMTEgKzQ0OSwxMiBAQCBpZiAobG9jYXRpb24uaHJlZiA9PT0gImFib3V0OmJs
YW5rIikgewogCiAKIGNsYXNzIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1l
b3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBicm93c2Vy
LCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAgICAgICAg
c2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25lPVRydWUsCiAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5vbmUsICoqa3dhcmdzKToKICAg
ICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciByZWZ0ZXN0cyIiIgogICAgICAg
ICBSZWZUZXN0RXhlY3V0b3IuX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29uZmlnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1zY3JlZW5zaG90
X2NhY2hlLApAQCAtNTA1LDExICs1MTgsMTIgQEAgY2xhc3MgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1
dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAKIAogY2xhc3MgV2ViRHJpdmVyQ3Jhc2h0ZXN0RXhlY3V0
b3IoQ3Jhc2h0ZXN0RXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm93c2VyLCBz
ZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbG9nZ2VyLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwK
ICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdF9jYWNoZT1Ob25lLCBjbG9zZV9hZnRlcl9kb25l
PVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwgY2FwYWJpbGl0aWVzPU5v
bmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiV2ViRHJpdmVyLWJhc2VkIGV4ZWN1dG9yIGZvciBy
ZWZ0ZXN0cyIiIgogICAgICAgICBDcmFzaHRlc3RFeGVjdXRvci5fX2luaXRfXyhzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcnZlcl9jb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcmVlbnNob3RfY2FjaGU9c2NyZWVuc2hvdF9jYWNoZSwKQEAgLTUzNSw3ICs1NDksNyBAQCBj
bGFzcyBXZWJEcml2ZXJDcmFzaHRlc3RFeGVjdXRvcihDcmFzaHRlc3RFeGVjdXRvcik6CiAgICAg
ICAgIGlmIHN1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0
ZXN0LCBkYXRhKQogCi0gICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xzKCoqZGF0YSksIFtd
KQorICAgICAgICByZXR1cm4gKHRlc3QucmVzdWx0X2NscygqZGF0YSksIFtdKQogCiAgICAgZGVm
IGRvX2NyYXNodGVzdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgcHJv
dG9jb2wuYmFzZS5sb2FkKHVybCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
cHJvdG9jb2wucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Byb3RvY29sLnB5CmluZGV4IDk1
ZmRlYzdjOTgxNjg4YWE5OWNhMTNlZWFmNGM3YjZjNDA1MmM5MTcuLjRlY2RkNTFhMGVmNWVjYTgx
NTNmZmI4NDhmMDI1M2VlYjZkN2Y3MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRv
cnMvcHJvdG9jb2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQpA
QCAtMzIsNyArMzIsNiBAQCBjbGFzcyBQcm90b2NvbChvYmplY3QpOgogICAgICAgICAiIiI6cmV0
dXJuczogQ3VycmVudCBsb2dnZXIiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IubG9n
Z2VyCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgICIi
IklzIHRoZSBicm93c2VyIGNvbm5lY3Rpb24gc3RpbGwgYWN0aXZlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3J1bm5lci5weQppbmRleCBjMTkzNmViOTY2Zjc4ODM0
ZDgzOWM3OTQwOTMyMmIwYTk2YWYxMjg0Li4zZDMyOTE3NjU5YjM5MDBmOWU0NjQ2NzBkMmNkYzM5
YjhmZjE4MGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3B5dGVzdHJ1bm5l
ci9ydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvcnVu
bmVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBydW4ocGF0aCwgc2VydmVyX2NvbmZpZywgc2Vz
c2lvbl9jb25maWcsIHRpbWVvdXQ9MCk6CiAgICAgb3MuZW52aXJvblsiV0RfSE9TVCJdID0gc2Vz
c2lvbl9jb25maWdbImhvc3QiXQogICAgIG9zLmVudmlyb25bIldEX1BPUlQiXSA9IHN0cihzZXNz
aW9uX2NvbmZpZ1sicG9ydCJdKQogICAgIG9zLmVudmlyb25bIldEX0NBUEFCSUxJVElFUyJdID0g
anNvbi5kdW1wcyhzZXNzaW9uX2NvbmZpZ1siY2FwYWJpbGl0aWVzIl0pCi0gICAgb3MuZW52aXJv
blsiV0RfU0VSVkVSX0NPTkZJRyJdID0ganNvbi5kdW1wcyhzZXJ2ZXJfY29uZmlnLmFzX2RpY3Qo
KSkKKyAgICBvcy5lbnZpcm9uWyJXRF9TRVJWRVJfQ09ORklHIl0gPSBqc29uLmR1bXBzKHNlcnZl
cl9jb25maWcuYXNfZGljdF9mb3Jfd2RfZW52X3ZhcmlhYmxlKCkpCiAKICAgICBoYXJuZXNzID0g
SGFybmVzc1Jlc3VsdFJlY29yZGVyKCkKICAgICBzdWJ0ZXN0cyA9IFN1YnRlc3RSZXN1bHRSZWNv
cmRlcigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3Qtd2FpdC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCmluZGV4IDhhN2VkYjc5ZDYyMjU2
ZWVmNjNjNzFlYWJkNDUwZDQyYmNlN2M0ZDIuLmFkMDhhZDdkNzZmYjAyOTlhYWRlZGI1NzIxOTNj
MzhjNTA1NWU2NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0
LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdC13YWl0LmpzCkBAIC0zMiw3ICsz
Miw4IEBAIGZ1bmN0aW9uIHdhaXRfcGFpbnRzKCkgewogfQogCiBmdW5jdGlvbiBzY3JlZW5zaG90
X2lmX3JlYWR5KCkgewotICBpZiAocm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUoY2xhc3NuYW1l
KXMiKSAmJgorICBpZiAocm9vdCAmJgorICAgICAgcm9vdC5jbGFzc0xpc3QuY29udGFpbnMoIiUo
Y2xhc3NuYW1lKXMiKSAmJgogICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsKICAgICBvYnNlcnZl
ciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKICAgICBvYnNlcnZlci5vYnNl
cnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy93M2MtaW1w
b3J0LmxvZwppbmRleCA1ZDliNjk4ZjNjYTM1YWJhN2ZkZTAyNTI1Yjg1ODU5OTU4ZDIzOGFhLi42
MTE2OGEyMDdiZmI0MDc2MzY4ZDZkNGQxOTE5MWJiZGNkNTZmNzczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvdzNjLWltcG9ydC5sb2cKQEAgLTE1LDYgKzE1LDcgQEAgTm9uZQogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvX19pbml0X18ucHkK
Ky9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2FjdGlvbnMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL2Jhc2UucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yY2hyb21lLnB5CiAv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmVkZ2UucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9leHBlY3RlZHRyZWUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWR0cmVlLnB5Cmlu
ZGV4IDRkNTA1MDg2YmQ4ZDk5MWM5NTNjMzRkMzhkOGUxZmEwY2I5MjBmOTkuLjc1MjFmMjViMTM0
NGY1YzUwYjgxODJhMmI3YTY4Mjc4ODU4ZjliNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkdHJlZS5weQpAQCAtMSw1
ICsxLDYgQEAKIGZyb20gbWF0aCBpbXBvcnQgbG9nCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZWZhdWx0ZGljdAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcwogCiBjbGFz
cyBOb2RlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3AsIHZhbHVlKToKQEAg
LTMzLDcgKzM0LDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICByZXN1bHRfY291bnRz
ID0gZGVmYXVsdGRpY3QoaW50KQogICAgIHRvdGFsID0gZmxvYXQobGVuKHJlc3VsdHMpKQotICAg
IGZvciB2YWx1ZXMgaW4gcmVzdWx0cy5pdGVydmFsdWVzKCk6CisgICAgZm9yIHZhbHVlcyBpbiBp
dGVydmFsdWVzKHJlc3VsdHMpOgogICAgICAgICAjIE5vdCBzdXJlIHRoaXMgaXMgcmlnaHQsIHBv
c3NpYmx5IHdhbnQgdG8gdHJlYXQgbXVsdGlwbGUgdmFsdWVzIGFzCiAgICAgICAgICMgZGlzdGlu
Y3QgZnJvbSBtdWx0aXBsZSBvZiB0aGUgc2FtZSB2YWx1ZT8KICAgICAgICAgZm9yIHZhbHVlIGlu
IHZhbHVlczoKQEAgLTQxLDcgKzQyLDcgQEAgZGVmIGVudHJvcHkocmVzdWx0cyk6CiAKICAgICBl
bnRyb3B5X3N1bSA9IDAKIAotICAgIGZvciBjb3VudCBpbiByZXN1bHRfY291bnRzLml0ZXJ2YWx1
ZXMoKToKKyAgICBmb3IgY291bnQgaW4gaXRlcnZhbHVlcyhyZXN1bHRfY291bnRzKToKICAgICAg
ICAgcHJvcCA9IGZsb2F0KGNvdW50KSAvIHRvdGFsCiAgICAgICAgIGVudHJvcHlfc3VtIC09IHBy
b3AgKiBsb2cocHJvcCwgMikKIApAQCAtNTIsNyArNTMsNyBAQCBkZWYgc3BsaXRfcmVzdWx0cyhw
cm9wLCByZXN1bHRzKToKICAgICAiIiJTcGxpdCBhIGRpY3Rpb25hcnkgb2YgcmVzdWx0cyBpbnRv
IGEgZGljdGlvbmFyeSBvZiBkaWN0aW9uYXJpZXMgd2hlcmUKICAgICBlYWNoIHN1Yi1kaWN0aW9u
YXJ5IGhhcyBhIHNwZWNpZmljIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSIiIgogICAgIGJ5
X3Byb3AgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgIGZvciBydW5faW5mbywgdmFsdWUgaW4gcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGluIGl0ZXJpdGVtcyhy
ZXN1bHRzKToKICAgICAgICAgYnlfcHJvcFtydW5faW5mb1twcm9wXV1bcnVuX2luZm9dID0gdmFs
dWUKIAogICAgIHJldHVybiBieV9wcm9wCkBAIC03NywxMyArNzgsMTMgQEAgZGVmIGJ1aWxkX3Ry
ZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzLCB0cmVlPU5vbmUpOgogICAg
IHByb3BfaW5kZXggPSB7cHJvcDogaSBmb3IgaSwgcHJvcCBpbiBlbnVtZXJhdGUocHJvcGVydGll
cyl9CiAKICAgICBhbGxfcmVzdWx0cyA9IGRlZmF1bHRkaWN0KGludCkKLSAgICBmb3IgcmVzdWx0
X3ZhbHVlcyBpbiByZXN1bHRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgZm9yIHJlc3VsdF92YWx1
ZSwgY291bnQgaW4gcmVzdWx0X3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICBmb3IgcmVzdWx0X3Zh
bHVlcyBpbiBpdGVydmFsdWVzKHJlc3VsdHMpOgorICAgICAgICBmb3IgcmVzdWx0X3ZhbHVlLCBj
b3VudCBpbiBpdGVyaXRlbXMocmVzdWx0X3ZhbHVlcyk6CiAgICAgICAgICAgICBhbGxfcmVzdWx0
c1tyZXN1bHRfdmFsdWVdICs9IGNvdW50CiAKICAgICAjIElmIHRoZXJlIGlzIG9ubHkgb25lIHJl
c3VsdCB3ZSBhcmUgZG9uZQogICAgIGlmIG5vdCBwcm9wZXJ0aWVzIG9yIGxlbihhbGxfcmVzdWx0
cykgPT0gMToKLSAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBhbGxfcmVzdWx0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHZhbHVlLCBjb3VudCBpbiBpdGVyaXRlbXMoYWxsX3Jlc3VsdHMp
OgogICAgICAgICAgICAgdHJlZS5yZXN1bHRfdmFsdWVzW3ZhbHVlXSArPSBjb3VudAogICAgICAg
ICB0cmVlLnJ1bl9pbmZvIHw9IHNldChyZXN1bHRzLmtleXMoKSkKICAgICAgICAgcmV0dXJuIHRy
ZWUKQEAgLTk5LDcgKzEwMCw3IEBAIGRlZiBidWlsZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVu
dF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgIG5ld19lbnRyb3B5ID0gMC4KICAgICAgICAgcmVzdWx0c19zZXRzX2VudHJvcHkgPSBbXQot
ICAgICAgICBmb3IgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCBpbiByZXN1bHRfc2V0cy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIHByb3BfdmFsdWUsIHJlc3VsdF9zZXQgaW4gaXRlcml0ZW1zKHJl
c3VsdF9zZXRzKToKICAgICAgICAgICAgIHJlc3VsdHNfc2V0c19lbnRyb3B5LmFwcGVuZCgoZW50
cm9weShyZXN1bHRfc2V0KSwgcHJvcF92YWx1ZSwgcmVzdWx0X3NldCkpCiAgICAgICAgICAgICBu
ZXdfZW50cm9weSArPSAoZmxvYXQobGVuKHJlc3VsdF9zZXQpKSAvIGxlbihyZXN1bHRzKSkgKiBy
ZXN1bHRzX3NldHNfZW50cm9weVstMV1bMF0KIApAQCAtMTA5LDcgKzExMCw3IEBAIGRlZiBidWls
ZF90cmVlKHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9wcywgcmVzdWx0cywgdHJlZT1Ob25lKToK
IAogICAgICMgSW4gdGhlIGNhc2UgdGhhdCBubyBwcm9wZXJ0aWVzIHBhcnRpdGlvbiB0aGUgc3Bh
Y2UKICAgICBpZiBub3QgcmVzdWx0c19wYXJ0aXRpb25zOgotICAgICAgICBmb3IgdmFsdWUsIGNv
dW50IGluIGFsbF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdmFsdWUsIGNvdW50
IGluIGl0ZXJpdGVtcyhhbGxfcmVzdWx0cyk6CiAgICAgICAgICAgICB0cmVlLnJlc3VsdF92YWx1
ZXNbdmFsdWVdICs9IGNvdW50CiAgICAgICAgIHRyZWUucnVuX2luZm8gfD0gc2V0KHJlc3VsdHMu
a2V5cygpKQogICAgICAgICByZXR1cm4gdHJlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
bnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQppbmRleCA2NjQ3YTg1ODBiZTdhYjQwNTBiYmQz
NzU5M2IyZTY1OTViYzNhYzcyLi42MjI2ZmM2NmZlZGYyYWZjOTZiNTExMGYzNTI0YjAwZDE4NWNj
NTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9udC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9udC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBjdHlwZXMKLWltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHBsaXN0bGliCkBAIC0xMiw3ICsxMSw4
IEBAIFNZU1RFTSA9IHBsYXRmb3JtLnN5c3RlbSgpLmxvd2VyKCkKIAogCiBjbGFzcyBGb250SW5z
dGFsbGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGZvbnRfZGlyPU5vbmUsICoq
Zm9udHMpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogICAgICAgICBzZWxmLmZvbnRf
ZGlyID0gZm9udF9kaXIKICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBGYWxzZQogICAg
ICAgICBzZWxmLmNyZWF0ZWRfZGlyID0gRmFsc2UKQEAgLTI2LDE0ICsyNiwxMyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250X3BhdGgu
c3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIGluc3RhbGwgPSBnZXRhdHRyKHNlbGYsICdpbnN0
YWxsXyVzX2ZvbnQnICUgU1lTVEVNLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IGluc3RhbGw6
Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IGluc3RhbGxhdGlvbiBub3Qg
c3VwcG9ydGVkIG9uICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTVEVN
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ0ZvbnQgaW5zdGFsbGF0aW9u
IG5vdCBzdXBwb3J0ZWQgb24gJXMnICUgU1lTVEVNKQogICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICAgICAgaWYgaW5zdGFsbChmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5pbnN0YWxsZWRfZm9udHMgPSBUcnVlCi0gICAgICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCdJbnN0YWxsZWQgZm9udDogJXMnLCBmb250X25hbWUpCisgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIuaW5mbygnSW5zdGFsbGVkIGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdVbmFi
bGUgdG8gaW5zdGFsbCBmb250OiAlcycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gaW5zdGFsbCBmb250OiAlcycgJSBmb250X25hbWUp
CiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLmluc3RhbGxlZF9mb250czoKQEAgLTQzLDEyICs0MiwxMiBAQCBj
bGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmb250X25hbWUgPSBmb250
X3BhdGguc3BsaXQoJy8nKVstMV0KICAgICAgICAgICAgIHJlbW92ZSA9IGdldGF0dHIoc2VsZiwg
J3JlbW92ZV8lc19mb250JyAlIFNZU1RFTSwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCByZW1v
dmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdGb250IHJlbW92YWwgbm90IHN1
cHBvcnRlZCBvbiAlcycsIFNZU1RFTSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCdGb250IHJlbW92YWwgbm90IHN1cHBvcnRlZCBvbiAlcycgJSBTWVNURU0pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiByZW1vdmUoZm9udF9uYW1lLCBm
b250X3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnUmVtb3ZlZCBmb250OiAl
cycsIGZvbnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSZW1vdmVk
IGZvbnQ6ICVzJyAlIGZvbnRfbmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgbG9nZ2luZy53YXJuaW5nKCdVbmFibGUgdG8gcmVtb3ZlIGZvbnQ6ICVzJywgZm9udF9uYW1l
KQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byByZW1vdmUg
Zm9udDogJXMnICUgZm9udF9uYW1lKQogCiAgICAgZGVmIGluc3RhbGxfbGludXhfZm9udChzZWxm
LCBmb250X25hbWUsIGZvbnRfcGF0aCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZvbnRfZGlyOgpA
QCAtNjIsNyArNjEsNyBAQCBjbGFzcyBGb250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICBmY19jYWNoZV9yZXR1cm5jb2RlID0gY2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0
dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5jb2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJ
ZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxh
YmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAog
ICAgIGRlZiBpbnN0YWxsX2Rhcndpbl9mb250KHNlbGYsIGZvbnRfbmFtZSwgZm9udF9wYXRoKToK
QEAgLTc5LDcgKzc4LDEyIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKICAgICAgICAg
IyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXN1bHRzLWNvbGxl
Y3Rpb24vaXNzdWVzLzIxOAogICAgICAgICAjIGluc3RhbGxpbmcgQWhlbSBvbiBtYWNPUyBpcyBm
bGFreSwgc28gY2hlY2sgaWYgaXQgYWN0dWFsbHkgaW5zdGFsbGVkCiAgICAgICAgIGZvbnRzID0g
Y2hlY2tfb3V0cHV0KFsnL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlcicsICcteG1sJywgJ1NQRm9u
dHNEYXRhVHlwZSddKQotICAgICAgICBmb250cyA9IHBsaXN0bGliLnJlYWRQbGlzdEZyb21TdHJp
bmcoZm9udHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgcHkzCisgICAgICAgICAg
ICByZWFkUGxpc3RGcm9tQnl0ZXMgPSBwbGlzdGxpYi5yZWFkUGxpc3RGcm9tQnl0ZXMKKyAgICAg
ICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmVhZFBsaXN0RnJvbUJ5dGVz
ID0gcGxpc3RsaWIucmVhZFBsaXN0RnJvbVN0cmluZworICAgICAgICBmb250cyA9IHJlYWRQbGlz
dEZyb21CeXRlcyhmb250cykKICAgICAgICAgYXNzZXJ0IGxlbihmb250cykgPT0gMQogICAgICAg
ICBmb3IgZm9udCBpbiBmb250c1swXVsnX2l0ZW1zJ106CiAgICAgICAgICAgICBpZiBmb250Wydw
YXRoJ10gPT0gaW5zdGFsbGVkX2ZvbnRfcGF0aDoKQEAgLTExMCw3ICsxMTQsNyBAQCBjbGFzcyBG
b250SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmY19jYWNoZV9yZXR1cm5jb2RlID0g
Y2FsbCgnZmMtY2FjaGUnKQogICAgICAgICAgICAgcmV0dXJuIG5vdCBmY19jYWNoZV9yZXR1cm5j
b2RlCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBJZiBmb250Y29uZmlnIGRvZXNuJ3QgZXhp
c3QsIHJldHVybiBGYWxzZQotICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignZm9udGNvbmZpZyBu
b3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVtLicpCisgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcignZm9udGNvbmZpZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgTGludXggc3lzdGVt
LicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiByZW1vdmVfZGFyd2luX2Zv
bnQoc2VsZiwgZm9udF9uYW1lLCBfKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0
ZXJzL2Nocm9taXVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21pdW0ucHkKaW5k
ZXggNTY0MzVlYWJmNGJiZWFkYmVlN2FmYTI5NGUzZTBiYjFlNzY4NWI5OS4uMDg2NTYwYjZhODcz
Y2RjOWZlZmQzYjhiOGI3YTUzYjAxNzNiMzg3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
cm1hdHRlcnMvY2hyb21pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvY2hyb21p
dW0ucHkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKICAgICAgICAgOnBhcmFtIHN0ciB0ZXN0OiB0aGUgbmFtZSBvZiB0aGUgdGVz
dAogICAgICAgICA6cGFyYW0gc3RyIHN1YnRlc3Q6IHRoZSBuYW1lIG9mIHRoZSBzdWJ0ZXN0IHdp
dGggdGhlIG1lc3NhZ2UKICAgICAgICAgOnBhcmFtIHN0ciBzdGF0dXM6IHRoZSBzdWJ0ZXN0IHN0
YXR1cwotICAgICAgICA6cGFyYW0gc3RyIGV4cGVjdGVkOiB0aGUgZXhwZWN0ZWQgc3VidGVzdCBz
dGF0dXMKKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogdGhlIGV4cGVjdGVkIHN1YnRlc3Qg
c3RhdHVzZXMKICAgICAgICAgOnBhcmFtIHN0ciBtZXNzYWdlOiB0aGUgc3RyaW5nIHRvIGFwcGVu
ZCB0byB0aGUgbWVzc2FnZSBmb3IgdGhpcyB0ZXN0CiAKICAgICAgICAgSGVyZSdzIGFuIGV4YW1w
bGUgb2YgYSBtZXNzYWdlOgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRl
cihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMgQWRk
IHRoZSBwcmVmaXgsIHdpdGggdGhlIHRlc3Qgc3RhdHVzIGFuZCBzdWJ0ZXN0IG5hbWUgKGlmIGF2
YWlsYWJsZSkKICAgICAgICAgcHJlZml4ID0gIlslcyIgJSBzdGF0dXMKLSAgICAgICAgaWYgZXhw
ZWN0ZWQgYW5kIGV4cGVjdGVkICE9IHN0YXR1czoKKyAgICAgICAgaWYgZXhwZWN0ZWQgYW5kIHN0
YXR1cyBub3QgaW4gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiBleHBlY3RlZCAl
c10gIiAlIGV4cGVjdGVkCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggKz0gIl0g
IgpAQCAtNTUsMTMgKzU1LDI4IEBAIGNsYXNzIENocm9taXVtRm9ybWF0dGVyKGJhc2UuQmFzZUZv
cm1hdHRlcik6CiAgICAgICAgICAgICBwcmVmaXggKz0gIiVzOiAiICUgc3VidGVzdAogICAgICAg
ICBzZWxmLm1lc3NhZ2VzW3Rlc3RdICs9IHByZWZpeCArIG1lc3NhZ2UgKyAiXG4iCiAKLSAgICBk
ZWYgX3N0b3JlX3Rlc3RfcmVzdWx0KHNlbGYsIG5hbWUsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOgorICAgIGRlZiBfYXBwZW5kX2FydGlmYWN0KHNlbGYsIGN1cl9kaWN0LCBhcnRpZmFjdF9u
YW1lLCBhcnRpZmFjdF92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBBcHBlbmRzIGFydGlm
YWN0cyB0byB0aGUgc3BlY2lmaWVkIGRpY3Rpb25hcnkuCisgICAgICAgIDpwYXJhbSBkaWN0IGN1
cl9kaWN0OiB0aGUgdGVzdCBsZWFmIGRpY3Rpb25hcnkgdG8gYXBwZW5kIHRvCisgICAgICAgIDpw
YXJhbSBzdHIgYXJ0aWZhY3RfbmFtZTogdGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0CisgICAgICAg
IDpwYXJhbSBzdHIgYXJ0aWZhY3RfdmFsdWU6IHRoZSB2YWx1ZSBvZiB0aGUgYXJ0aWZhY3QKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmICJhcnRpZmFjdHMiIG5vdCBpbiBjdXJfZGljdC5rZXlzKCk6
CisgICAgICAgICAgICBjdXJfZGljdFsiYXJ0aWZhY3RzIl0gPSB7fQorICAgICAgICAjIEFydGlm
YWN0cyBhcmUgYWxsIGV4cGVjdGVkIHRvIGJlIGxpc3RzLCBzbyBldmVuIHRob3VnaCB3ZSBvbmx5
IGhhdmUgYQorICAgICAgICAjIHNpbmdsZSB8YXJ0aWZhY3RfdmFsdWV8IHdlIHN0aWxsIHB1dCBp
dCBpbiBhIGxpc3QuCisgICAgICAgIGN1cl9kaWN0WyJhcnRpZmFjdHMiXVthcnRpZmFjdF9uYW1l
XSA9IFthcnRpZmFjdF92YWx1ZV0KKworICAgIGRlZiBfc3RvcmVfdGVzdF9yZXN1bHQoc2VsZiwg
bmFtZSwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgd3B0X2FjdHVhbCwgc3VidGVzdF9mYWls
dXJlKToKICAgICAgICAgIiIiCiAgICAgICAgIFN0b3JlcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xl
IHRlc3QgaW4gfHNlbGYudGVzdHN8CiAgICAgICAgIDpwYXJhbSBzdHIgbmFtZTogbmFtZSBvZiB0
aGUgdGVzdC4KICAgICAgICAgOnBhcmFtIHN0ciBhY3R1YWw6IGFjdHVhbCBzdGF0dXMgb2YgdGhl
IHRlc3QuCi0gICAgICAgIDpwYXJhbSBzdHIgZXhwZWN0ZWQ6IGV4cGVjdGVkIHN0YXR1cyBvZiB0
aGUgdGVzdC4KKyAgICAgICAgOnBhcmFtIHN0ciBleHBlY3RlZDogZXhwZWN0ZWQgc3RhdHVzZXMg
b2YgdGhlIHRlc3QuCiAgICAgICAgIDpwYXJhbSBzdHIgbWVzc2FnZTogdGVzdCBvdXRwdXQsIHN1
Y2ggYXMgc3RhdHVzLCBzdWJ0ZXN0LCBlcnJvcnMgZXRjLgorICAgICAgICA6cGFyYW0gc3RyIHdw
dF9hY3R1YWw6IGFjdHVhbCBzdGF0dXMgcmVwb3J0ZWQgYnkgd3B0LCBtYXkgZGlmZmVyIGZyb20g
fGFjdHVhbHwuCisgICAgICAgIDpwYXJhbSBib29sIHN1YnRlc3RfZmFpbHVyZTogd2hldGhlciB0
aGlzIHRlc3QgZmFpbGVkIGJlY2F1c2Ugb2Ygc3VidGVzdHMKICAgICAgICAgIiIiCiAgICAgICAg
ICMgVGhlIHRlc3QgbmFtZSBjYW4gY29udGFpbiBhIGxlYWRpbmcgLyB3aGljaCB3aWxsIHByb2R1
Y2UgYW4gZW1wdHkKICAgICAgICAgIyBzdHJpbmcgaW4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRo
ZSBsaXN0IHJldHVybmVkIGJ5IHNwbGl0LiBXZSB1c2UKQEAgLTcyLDEzICs4NywxNyBAQCBjbGFz
cyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICAgICAgY3Vy
X2RpY3QgPSBjdXJfZGljdC5zZXRkZWZhdWx0KG5hbWVfcGFydCwge30pCiAgICAgICAgIGN1cl9k
aWN0WyJhY3R1YWwiXSA9IGFjdHVhbAogICAgICAgICBjdXJfZGljdFsiZXhwZWN0ZWQiXSA9IGV4
cGVjdGVkCisgICAgICAgIGlmIHN1YnRlc3RfZmFpbHVyZToKKyAgICAgICAgICAgIHNlbGYuX2Fw
cGVuZF9hcnRpZmFjdChjdXJfZGljdCwgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiLCAidHJ1ZSIpCisg
ICAgICAgIGlmIHdwdF9hY3R1YWwgIT0gYWN0dWFsOgorICAgICAgICAgICAgc2VsZi5fYXBwZW5k
X2FydGlmYWN0KGN1cl9kaWN0LCAid3B0X2FjdHVhbF9zdGF0dXMiLCB3cHRfYWN0dWFsKQogICAg
ICAgICBpZiBtZXNzYWdlICE9ICIiOgotICAgICAgICAgICAgY3VyX2RpY3RbImFydGlmYWN0cyJd
ID0geyJsb2ciOiBtZXNzYWdlfQorICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2FydGlmYWN0KGN1
cl9kaWN0LCAibG9nIiwgbWVzc2FnZSkKIAogICAgICAgICAjIEZpZ3VyZSBvdXQgaWYgdGhlcmUg
d2FzIGEgcmVncmVzc2lvbiBvciB1bmV4cGVjdGVkIHN0YXR1cy4gVGhpcyBvbmx5CiAgICAgICAg
ICMgaGFwcGVucyBmb3IgdGVzdHMgdGhhdCB3ZXJlIHJ1bgogICAgICAgICBpZiBhY3R1YWwgIT0g
IlNLSVAiOgotICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAg
aWYgYWN0dWFsIG5vdCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgICAgICBjdXJfZGljdFsiaXNf
dW5leHBlY3RlZCJdID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGFjdHVhbCAhPSAiUEFTUyI6
CiAgICAgICAgICAgICAgICAgICAgIGN1cl9kaWN0WyJpc19yZWdyZXNzaW9uIl0gPSBUcnVlCkBA
IC0xMDMsNyArMTIyLDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNlRm9ybWF0
dGVyKToKICAgICAgICAgICAgIHJldHVybiAiU0tJUCIKICAgICAgICAgaWYgc3RhdHVzID09ICJF
WFRFUk5BTC1USU1FT1VUIjoKICAgICAgICAgICAgIHJldHVybiAiVElNRU9VVCIKLSAgICAgICAg
aWYgc3RhdHVzIGluICgiRVJST1IiLCAiQ1JBU0giKToKKyAgICAgICAgaWYgc3RhdHVzIGluICgi
RVJST1IiLCAiQ1JBU0giLCAiUFJFQ09ORElUSU9OX0ZBSUxFRCIpOgogICAgICAgICAgICAgIyBD
UkFTSCBpbiBXUFQgbWVhbnMgYSBicm93c2VyIGNyYXNoLCB3aGljaCBDaHJvbWl1bSB0cmVhdHMg
YXMgYQogICAgICAgICAgICAgIyB0ZXN0IGZhaWx1cmUuCiAgICAgICAgICAgICByZXR1cm4gIkZB
SUwiCkBAIC0xMTYsNyArMTM1LDcgQEAgY2xhc3MgQ2hyb21pdW1Gb3JtYXR0ZXIoYmFzZS5CYXNl
Rm9ybWF0dGVyKToKIAogICAgIGRlZiBfZ2V0X2V4cGVjdGVkX3N0YXR1c19mcm9tX2RhdGEoc2Vs
ZiwgYWN0dWFsX3N0YXR1cywgZGF0YSk6CiAgICAgICAgICIiIgotICAgICAgICBHZXRzIHRoZSBl
eHBlY3RlZCBzdGF0dXMgZnJvbSBhIHxkYXRhfCBkaWN0aW9uYXJ5LgorICAgICAgICBHZXRzIHRo
ZSBleHBlY3RlZCBzdGF0dXNlcyBmcm9tIGEgfGRhdGF8IGRpY3Rpb25hcnkuCiAKICAgICAgICAg
SWYgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgc3RhdHVzIGluIGRhdGEsIHRoZSBhY3R1YWwgc3RhdHVz
IGlzIHJldHVybmVkLgogICAgICAgICBUaGlzIGlzIGJlY2F1c2UgbW96bG9nIHdpbGwgZGVsZXRl
ICJleHBlY3RlZCIgZnJvbSB8ZGF0YXwgaWYgaXQgaXMgdGhlCkBAIC0xMjUsNDcgKzE0NCw2MSBA
QCBjbGFzcyBDaHJvbWl1bUZvcm1hdHRlcihiYXNlLkJhc2VGb3JtYXR0ZXIpOgogICAgICAgICBp
cyBleHBlY3RlZC4gU28gd2UgdXNlIHRoZSAiZXhwZWN0ZWQiIHN0YXR1cyBpZiBpdCdzIHRoZXJl
IG9yIGZhbGwgYmFjawogICAgICAgICB0byB0aGUgYWN0dWFsIHN0YXR1cyBpZiBpdCdzIG5vdC4K
IAorICAgICAgICBJZiB0aGUgdGVzdCBoYXMgbXVsdGlwbGUgc3RhdHVzZXMsIGl0IHdpbGwgaGF2
ZSBvdGhlciBzdGF0dXNlcyBsaXN0ZWQgYXMKKyAgICAgICAgImtub3duX2ludGVybWl0dGVudCIg
aW4gfGRhdGF8LiBJZiB0aGVzZSBleGlzdCwgdGhleSB3aWxsIGJlIGFwcGVuZGVkIHRvCisgICAg
ICAgIHRoZSByZXR1cm5lZCBzdGF0dXMgd2l0aCBzcGFjZWQgaW4gYmV0d2Vlbi4KKwogICAgICAg
ICA6cGFyYW0gc3RyIGFjdHVhbF9zdGF0dXM6IHRoZSBhY3R1YWwgc3RhdHVzIG9mIHRoZSB0ZXN0
CiAgICAgICAgIDpwYXJhbSBkYXRhOiBhIGRhdGEgZGljdGlvbmFyeSB0byBleHRyYWN0IGV4cGVj
dGVkIHN0YXR1cyBmcm9tCi0gICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVz
CisgICAgICAgIDpyZXR1cm4gc3RyOiB0aGUgZXhwZWN0ZWQgc3RhdHVzZXMgYXMgYSBzdHJpbmcK
ICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRhdGFb
ImV4cGVjdGVkIl0pCi0gICAgICAgICAgICAgICAgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2Ug
YWN0dWFsX3N0YXR1cykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzZXMgPSBzZWxmLl9tYXBfc3Rh
dHVzX25hbWUoZGF0YVsiZXhwZWN0ZWQiXSkgaWYgImV4cGVjdGVkIiBpbiBkYXRhIGVsc2UgYWN0
dWFsX3N0YXR1cworICAgICAgICBpZiBkYXRhLmdldCgia25vd25faW50ZXJtaXR0ZW50Iik6Cisg
ICAgICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyArPSAiICIgKyAiICIuam9pbigKKyAgICAgICAg
ICAgICAgICBbc2VsZi5fbWFwX3N0YXR1c19uYW1lKG90aGVyX3N0YXR1cykgZm9yIG90aGVyX3N0
YXR1cyBpbiBkYXRhWyJrbm93bl9pbnRlcm1pdHRlbnQiXV0pCisgICAgICAgIHJldHVybiBleHBl
Y3RlZF9zdGF0dXNlcwogCiAgICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRhdGEpOgotICAgICAg
ICBzZWxmLnN0YXJ0X3RpbWVzdGFtcF9zZWNvbmRzID0gKGRhdGFbInRpbWUiXSBpZiAidGltZSIg
aW4gZGF0YQorICAgICAgICAjIHxkYXRhfCBjb250YWlucyBhIHRpbWVzdGFtcCBpbiBtaWNyb3Nl
Y29uZHMsIHdoaWxlIHRpbWUudGltZSgpIGdpdmVzCisgICAgICAgICMgaXQgaW4gc2Vjb25kcy4K
KyAgICAgICAgc2VsZi5zdGFydF90aW1lc3RhbXBfc2Vjb25kcyA9IChmbG9hdChkYXRhWyJ0aW1l
Il0pIC8gMTAwMCBpZiAidGltZSIgaW4gZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgdGltZS50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9zdGF0dXMoc2Vs
ZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFbInRlc3QiXQotICAgICAgICBpc191
bmV4cGVjdGVkID0gTm9uZQogICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1
c19uYW1lKGRhdGFbInN0YXR1cyJdKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxmLl9n
ZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQorICAgICAg
ICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNfZnJvbV9kYXRh
KGFjdHVhbF9zdGF0dXMsIGRhdGEpCiAKLSAgICAgICAgaXNfdW5leHBlY3RlZCA9IGFjdHVhbF9z
dGF0dXMgIT0gZXhwZWN0ZWRfc3RhdHVzCisgICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBhY3R1YWxf
c3RhdHVzIG5vdCBpbiBleHBlY3RlZF9zdGF0dXNlcwogICAgICAgICBpZiBpc191bmV4cGVjdGVk
IGFuZCB0ZXN0X25hbWUgbm90IGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgogICAg
ICAgICAgICAgc2VsZi50ZXN0c193aXRoX3N1YnRlc3RfZmFpbHMuYWRkKHRlc3RfbmFtZSkKICAg
ICAgICAgaWYgIm1lc3NhZ2UiIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLl9hcHBlbmRfdGVz
dF9tZXNzYWdlKHRlc3RfbmFtZSwgZGF0YVsic3VidGVzdCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAg
ICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0X21lc3NhZ2UodGVzdF9uYW1lLCBkYXRhWyJzdWJ0ZXN0
Il0sIGFjdHVhbF9zdGF0dXMsIGV4cGVjdGVkX3N0YXR1c2VzLCBkYXRhWyJtZXNzYWdlIl0pCiAK
ICAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRlc3RfbmFtZSA9IGRhdGFb
InRlc3QiXQotICAgICAgICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKGRh
dGFbInN0YXR1cyJdKQotICAgICAgICBpZiBhY3R1YWxfc3RhdHVzID09ICJQQVNTIiBhbmQgdGVz
dF9uYW1lIGluIHNlbGYudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzOgotICAgICAgICAgICAgIyBU
aGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0ZXN0cywgc28gd2UgZmxpcCB0
aGUgc3RhdHVzCi0gICAgICAgICAgICAjIHRvIEZBSUwuCi0gICAgICAgICAgICBhY3R1YWxfc3Rh
dHVzID0gIkZBSUwiCisgICAgICAgICMgU2F2ZSB0aGUgc3RhdHVzIHJlcG9ydGVkIGJ5IFdQVCBz
aW5jZSB3ZSBtaWdodCBjaGFuZ2UgaXQgd2hlbiByZXBvcnRpbmcKKyAgICAgICAgIyB0byBDaHJv
bWl1bS4KKyAgICAgICAgd3B0X2FjdHVhbF9zdGF0dXMgPSBkYXRhWyJzdGF0dXMiXQorICAgICAg
ICBhY3R1YWxfc3RhdHVzID0gc2VsZi5fbWFwX3N0YXR1c19uYW1lKHdwdF9hY3R1YWxfc3RhdHVz
KQorICAgICAgICBleHBlY3RlZF9zdGF0dXNlcyA9IHNlbGYuX2dldF9leHBlY3RlZF9zdGF0dXNf
ZnJvbV9kYXRhKGFjdHVhbF9zdGF0dXMsIGRhdGEpCisgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9
IEZhbHNlCisgICAgICAgIGlmIHRlc3RfbmFtZSBpbiBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9m
YWlsczoKKyAgICAgICAgICAgIHN1YnRlc3RfZmFpbHVyZSA9IFRydWUKICAgICAgICAgICAgICMg
Q2xlYW4gdXAgdGhlIHRlc3QgbGlzdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAg
ICAgICAgICAgICBzZWxmLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscy5yZW1vdmUodGVzdF9uYW1l
KQorICAgICAgICAgICAgIyBUaGlzIHRlc3QgcGFzc2VkIGJ1dCBpdCBoYXMgZmFpbGluZyBzdWJ0
ZXN0cy4gU2luY2Ugd2UgY2FuIG9ubHkKKyAgICAgICAgICAgICMgcmVwb3J0IGEgc2luZ2xlIHN0
YXR1cyB0byBDaHJvbWl1bSwgd2UgY2hvb3NlIEZBSUwgdG8gaW5kaWNhdGUKKyAgICAgICAgICAg
ICMgdGhhdCBzb21ldGhpbmcgYWJvdXQgdGhpcyB0ZXN0IGRpZCBub3QgcnVuIGNvcnJlY3RseS4K
KyAgICAgICAgICAgIGlmIGFjdHVhbF9zdGF0dXMgPT0gIlBBU1MiOgorICAgICAgICAgICAgICAg
IGFjdHVhbF9zdGF0dXMgPSAiRkFJTCIKIAotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBzZWxm
Ll9nZXRfZXhwZWN0ZWRfc3RhdHVzX2Zyb21fZGF0YShhY3R1YWxfc3RhdHVzLCBkYXRhKQogICAg
ICAgICBpZiAibWVzc2FnZSIgaW4gZGF0YToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF90ZXN0
X21lc3NhZ2UodGVzdF9uYW1lLCBOb25lLCBhY3R1YWxfc3RhdHVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMsIGRhdGFbIm1lc3NhZ2UiXSkK
LSAgICAgICAgc2VsZi5fc3RvcmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVz
LCBleHBlY3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
bWVzc2FnZXNbdGVzdF9uYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfc3RhdHVzZXMsIGRhdGFbIm1lc3NhZ2UiXSkKKyAgICAgICAgc2VsZi5fc3Rv
cmVfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCBhY3R1YWxfc3RhdHVzLCBleHBlY3RlZF9zdGF0dXNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlc1t0ZXN0X25h
bWVdLCB3cHRfYWN0dWFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VidGVzdF9mYWlsdXJlKQogCiAgICAgICAgICMgUmVtb3ZlIHRoZSB0ZXN0IGZyb20gbWVzc2Fn
ZXMgZGljdCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdG9vIG1hbnkuCiAgICAgICAgIHNlbGYubWVz
c2FnZXMucG9wKHRlc3RfbmFtZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJz
L3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy90ZXN0cy90
ZXN0X2Nocm9taXVtLnB5CmluZGV4IDgzYzEyOGFjNWNiNDZhNjUzNzNhMmZlYTAwOGM2YmE2MDM1
MGZkOGYuLjJhNWQzZTc5MjgwY2I1NTYzNzQ3YmVjZGRhNGFmZTE4OGQzYjYwZTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzL3Rlc3RzL3Rlc3RfY2hyb21pdW0ucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMvdGVzdHMvdGVzdF9jaHJvbWl1bS5weQpAQCAtMTU2LDEy
ICsxNTYsMTMgQEAgZGVmIHRlc3Rfc3VidGVzdF9tZXNzYWdlcyhjYXBmZCk6CiAgICAgb3V0cHV0
LnNlZWsoMCkKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKLSAgICB0MV9s
b2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDEiXVsiYXJ0aWZhY3RzIl1bImxvZyJdCi0gICAg
YXNzZXJ0IHQxX2xvZyA9PSAiW0ZBSUwgZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdl
XG4iIFwKLSAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4i
Ci0KLSAgICB0Ml9sb2cgPSBvdXRwdXRfanNvblsidGVzdHMiXVsidDIiXVsiYXJ0aWZhY3RzIl1b
ImxvZyJdCi0gICAgYXNzZXJ0IHQyX2xvZyA9PSAiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10gdDJf
bWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJd
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iXQorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiXSA9PSBbInRydWUiXQorICAgIHQy
X2FydGlmYWN0cyA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MiJdWyJhcnRpZmFjdHMiXQorICAg
IGFzc2VydCB0Ml9hcnRpZmFjdHNbImxvZyJdID09IFsiW1RJTUVPVVQgZXhwZWN0ZWQgUEFTU10g
dDJfbWVzc2FnZVxuIl0KKyAgICBhc3NlcnQgIndwdF9zdWJ0ZXN0X2ZhaWx1cmUiIG5vdCBpbiB0
Ml9hcnRpZmFjdHMua2V5cygpCiAKIAogZGVmIHRlc3Rfc3VidGVzdF9mYWlsdXJlKGNhcGZkKToK
QEAgLTIwMiwxMyArMjAzLDE3IEBAIGRlZiB0ZXN0X3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAg
ICAgb3V0cHV0X2pzb24gPSBqc29uLmxvYWQob3V0cHV0KQogCiAgICAgdGVzdF9vYmogPSBvdXRw
dXRfanNvblsidGVzdHMiXVsidDEiXQotICAgIHQxX2xvZyA9IHRlc3Rfb2JqWyJhcnRpZmFjdHMi
XVsibG9nIl0KLSAgICBhc3NlcnQgdDFfbG9nID09ICJbRkFJTCBleHBlY3RlZCBQQVNTXSB0MV9h
OiB0MV9hX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0
MV9iX21lc3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUIGV4cGVjdGVk
IFBBU1NdIHQxX2M6IHQxX2NfbWVzc2FnZVxuIgorICAgIHQxX2FydGlmYWN0cyA9IHRlc3Rfb2Jq
WyJhcnRpZmFjdHMiXQorICAgIGFzc2VydCB0MV9hcnRpZmFjdHNbImxvZyJdID09IFsiW0ZBSUwg
ZXhwZWN0ZWQgUEFTU10gdDFfYTogdDFfYV9tZXNzYWdlXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJbVElNRU9VVCBleHBlY3RlZCBQQVNTXSB0MV9jOiB0
MV9jX21lc3NhZ2VcbiJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFp
bHVyZSJdID09IFsidHJ1ZSJdCiAgICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBv
dXRwdXQgaXMgYSBmYWlsdXJlIGJlY2F1c2Ugc3VidGVzdHMgZmFpbGVkLAotICAgICMgZGVzcGl0
ZSB0aGUgaGFybmVzcyByZXBvcnRpbmcgdGhhdCB0aGUgdGVzdCBwYXNzZWQuCisgICAgIyBkZXNw
aXRlIHRoZSBoYXJuZXNzIHJlcG9ydGluZyB0aGF0IHRoZSB0ZXN0IHBhc3NlZC4gQnV0IHRoZSBo
YXJuZXNzIHN0YXR1cworICAgICMgaXMgbG9nZ2VkIGFzIGFuIGFydGlmYWN0LgorICAgIGFzc2Vy
dCB0MV9hcnRpZmFjdHNbIndwdF9hY3R1YWxfc3RhdHVzIl0gPT0gWyJQQVNTIl0KICAgICBhc3Nl
cnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhw
ZWN0ZWQiXSA9PSAiUEFTUyIKICAgICAjIEFsc28gZW5zdXJlIHRoYXQgdGhlIGZvcm1hdHRlciBj
bGVhbmVkIHVwIGl0cyBpbnRlcm5hbCBzdGF0ZQogICAgIGFzc2VydCAidDEiIG5vdCBpbiBmb3Jt
YXR0ZXIudGVzdHNfd2l0aF9zdWJ0ZXN0X2ZhaWxzCiAKQEAgLTI1MywxMiArMjU4LDEzIEBAIGRl
ZiB0ZXN0X2V4cGVjdGVkX3N1YnRlc3RfZmFpbHVyZShjYXBmZCk6CiAKICAgICB0ZXN0X29iaiA9
IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCiAgICAgdDFfbG9nID0gdGVzdF9vYmpbImFydGlm
YWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltGQUlMXSB0MV9hOiB0MV9hX21l
c3NhZ2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltQQVNTXSB0MV9iOiB0MV9iX21lc3Nh
Z2VcbiIgXAotICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3Nh
Z2VcbiIKKyAgICBhc3NlcnQgdDFfbG9nID09IFsiW0ZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxu
IgorICAgICAgICAgICAgICAgICAgICAgICJbUEFTU10gdDFfYjogdDFfYl9tZXNzYWdlXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIltUSU1FT1VUXSB0MV9jOiB0MV9jX21lc3NhZ2VcbiJdCiAg
ICAgIyBUaGUgc3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoZSBvdXRwdXQgaXMgYSBwYXNzIGJlY2F1
c2UgdGhlIHN1YnRlc3QKICAgICAjIGZhaWx1cmVzIHdlcmUgYWxsIGV4cGVjdGVkLgogICAgIGFz
c2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJl
eHBlY3RlZCJdID09ICJQQVNTIgogCiAKIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVzdF9wYXNz
KGNhcGZkKToKQEAgLTI5NiwxMCArMzAyLDE0IEBAIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VidGVz
dF9wYXNzKGNhcGZkKToKICAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCiAKICAg
ICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCi0gICAgdDFfbG9nID0gdGVz
dF9vYmpbImFydGlmYWN0cyJdWyJsb2ciXQotICAgIGFzc2VydCB0MV9sb2cgPT0gIltQQVNTIGV4
cGVjdGVkIEZBSUxdIHQxX2E6IHQxX2FfbWVzc2FnZVxuIgotICAgICMgU2luY2UgdGhlIHN1YnRl
c3Qgc3RhdHVzIGlzIHVuZXhwZWN0ZWQsIHdlIGZhaWwgdGhlIHRlc3QuCisgICAgdDFfYXJ0aWZh
Y3RzID0gdGVzdF9vYmpbImFydGlmYWN0cyJdCisgICAgYXNzZXJ0IHQxX2FydGlmYWN0c1sibG9n
Il0gPT0gWyJbUEFTUyBleHBlY3RlZCBGQUlMXSB0MV9hOiB0MV9hX21lc3NhZ2VcbiJdCisgICAg
YXNzZXJ0IHQxX2FydGlmYWN0c1sid3B0X3N1YnRlc3RfZmFpbHVyZSJdID09IFsidHJ1ZSJdCisg
ICAgIyBTaW5jZSB0aGUgc3VidGVzdCBzdGF0dXMgaXMgdW5leHBlY3RlZCwgd2UgZmFpbCB0aGUg
dGVzdC4gQnV0IHdlIHJlcG9ydAorICAgICMgd3B0X2FjdHVhbF9zdGF0dXMgYXMgYW4gYXJ0aWZh
Y3QKKyAgICBhc3NlcnQgdDFfYXJ0aWZhY3RzWyJ3cHRfYWN0dWFsX3N0YXR1cyJdID09IFsiUEFT
UyJdCiAgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9PSAiRkFJTCIKKyAgICBhc3NlcnQg
dGVzdF9vYmpbImV4cGVjdGVkIl0gPT0gIlBBU1MiCiAgICAgIyBBbHNvIGVuc3VyZSB0aGF0IHRo
ZSBmb3JtYXR0ZXIgY2xlYW5lZCB1cCBpdHMgaW50ZXJuYWwgc3RhdGUKICAgICBhc3NlcnQgInQx
IiBub3QgaW4gZm9ybWF0dGVyLnRlc3RzX3dpdGhfc3VidGVzdF9mYWlscwogCkBAIC0zNjcsNiAr
Mzc3LDE0NCBAQCBkZWYgdGVzdF91bmV4cGVjdGVkX3Rlc3RfZmFpbChjYXBmZCk6CiAgICAgIyBP
Sy0+UEFTUwogICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgotICAgICMgLi5hbmQgdGhpcyB0ZXN0
IHNob3VsZCBub3QgYmUgYSByZWdyZXNzaW9uIG5vciB1bmV4cGVjdGVkCisgICAgIyAuLmFuZCB0
aGlzIHRlc3Qgc2hvdWxkIGJlIGEgcmVncmVzc2lvbiBhbmQgdW5leHBlY3RlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3RfZmxha3lfdGVzdF9leHBlY3Rl
ZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEgZmxha3kgdGVzdCB3aXRoIG11bHRpcGxlIHBv
c3NpYmxlIHN0YXR1c2VzIGlzIHNlZW4gYXMKKyAgICAjIGV4cGVjdGVkIGlmIGl0cyBhY3R1YWwg
c3RhdHVzIGlzIG9uZSBvZiB0aGUgcG9zc2libGUgb25lcy4KKworICAgICMgc2V0IHVwIHRoZSBo
YW5kbGVyLgorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVk
bG9nLlN0cnVjdHVyZWRMb2dnZXIoInRlc3RfYSIpCisgICAgbG9nZ2VyLmFkZF9oYW5kbGVyKGhh
bmRsZXJzLlN0cmVhbUhhbmRsZXIob3V0cHV0LCBDaHJvbWl1bUZvcm1hdHRlcigpKSkKKworICAg
ICMgUnVuIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGZsYWt5CisgICAgbG9nZ2VyLnN1aXRl
X3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dlci50ZXN0X3N0
YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iRVJST1IiLCBleHBl
Y3RlZD0iT0siLCBrbm93bl9pbnRlcm1pdHRlbnQ9WyJFUlJPUiIsICJUSU1FT1VUIl0pCisgICAg
bG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBz
dGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMg
ZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVk
LmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0
dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRw
dXQpCisKKyAgICB0ZXN0X29iaiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBU
aGUgdGVzdCdzIHN0YXR1c2VzIGFyZSBhbGwgbWFwcGVkLCBjaGFuZ2luZyBFUlJPUi0+RkFJTCBh
bmQgT0stPlBBU1MKKyAgICBhc3NlcnQgdGVzdF9vYmpbImFjdHVhbCJdID09ICJGQUlMIgorICAg
ICMgQWxsIHRoZSBwb3NzaWJsZSBzdGF0dXNlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGlu
dG8gZXhwZWN0ZWQuCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIEZB
SUwgVElNRU9VVCIKKyAgICAjIC4uLnRoaXMgaXMgbm90IGEgcmVncmVzc2lvbiBvciB1bmV4cGVj
dGVkIGJlY2F1c2UgdGhlIGFjdHVhbCBzdGF0dXMgaXMgb25lCisgICAgIyBvZiB0aGUgZXhwZWN0
ZWQgb25lcworICAgIGFzc2VydCAiaXNfcmVncmVzc2lvbiIgbm90IGluIHRlc3Rfb2JqCisgICAg
YXNzZXJ0ICJpc191bmV4cGVjdGVkIiBub3QgaW4gdGVzdF9vYmoKKworCitkZWYgdGVzdF9mbGFr
eV90ZXN0X3VuZXhwZWN0ZWQoY2FwZmQpOgorICAgICMgQ2hlY2sgdGhhdCBhIGZsYWt5IHRlc3Qg
d2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzdGF0dXNlcyBpcyBzZWVuIGFzCisgICAgIyB1bmV4cGVj
dGVkIGlmIGl0cyBhY3R1YWwgc3RhdHVzIGlzIE5PVCBvbmUgb2YgdGhlIHBvc3NpYmxlIG9uZXMu
CisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAg
IGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21p
dW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1biBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBm
bGFreQorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInQxIl0sIHJ1bl9pbmZvPXt9LCB0aW1lPTEy
MykKKyAgICBsb2dnZXIudGVzdF9zdGFydCgidDEiKQorICAgIGxvZ2dlci50ZXN0X2VuZCgidDEi
LCBzdGF0dXM9IkVSUk9SIiwgZXhwZWN0ZWQ9Ik9LIiwga25vd25faW50ZXJtaXR0ZW50PVsiVElN
RU9VVCJdKQorICAgIGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdv
dCBvdXRwdXQgdG8gc3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0
cyBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0g
Y2FwZmQucmVhZG91dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFz
c2VydCBjYXB0dXJlZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQg
b2YgdGhlIGZvcm1hdHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X2pzb24gPSBq
c29uLmxvYWQob3V0cHV0KQorCisgICAgdGVzdF9vYmogPSBvdXRwdXRfanNvblsidGVzdHMiXVsi
dDEiXQorICAgICMgVGhlIHRlc3QncyBzdGF0dXNlcyBhcmUgYWxsIG1hcHBlZCwgY2hhbmdpbmcg
RVJST1ItPkZBSUwgYW5kIE9LLT5QQVNTCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJhY3R1YWwiXSA9
PSAiRkFJTCIKKyAgICAjIEFsbCB0aGUgcG9zc2libGUgc3RhdHVzZXMgYXJlIGNvbmNhdGVuYXRl
ZCB0b2dldGhlciBpbnRvIGV4cGVjdGVkLgorICAgIGFzc2VydCB0ZXN0X29ialsiZXhwZWN0ZWQi
XSA9PSAiUEFTUyBUSU1FT1VUIgorICAgICMgLi4udGhpcyBpcyBhIHJlZ3Jlc3Npb24gYW5kIHVu
ZXhwZWN0ZWQgYmVjYXVzZSB0aGUgYWN0dWFsIHN0YXR1cyBpcyBub3QKKyAgICAjIG9uZSBvZiB0
aGUgZXhwZWN0ZWQgb25lcwogICAgIGFzc2VydCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlz
IFRydWUKICAgICBhc3NlcnQgdGVzdF9vYmpbImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKwor
ZGVmIHRlc3RfcHJlY29uZGl0aW9uX2ZhaWxlZChjYXBmZCk6CisgICAgIyBDaGVjayB0aGF0IGEg
ZmFpbGVkIHByZWNvbmRpdGlvbiBnZXRzIHByb3Blcmx5IGhhbmRsZWQuCisKKyAgICAjIHNldCB1
cCB0aGUgaGFuZGxlci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3Ry
dWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFu
ZGxlcihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkp
CisKKyAgICAjIFJ1biBhIHRlc3Qgd2l0aCBhIHByZWNvbmRpdGlvbiBmYWlsdXJlCisgICAgbG9n
Z2VyLnN1aXRlX3N0YXJ0KFsidDEiXSwgcnVuX2luZm89e30sIHRpbWU9MTIzKQorICAgIGxvZ2dl
ci50ZXN0X3N0YXJ0KCJ0MSIpCisgICAgbG9nZ2VyLnRlc3RfZW5kKCJ0MSIsIHN0YXR1cz0iUFJF
Q09ORElUSU9OX0ZBSUxFRCIsIGV4cGVjdGVkPSJPSyIpCisgICAgbG9nZ2VyLnN1aXRlX2VuZCgp
CisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAg
IyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRv
IHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQg
Y2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAg
IyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNl
ZWsoMCkKKyAgICBvdXRwdXRfanNvbiA9IGpzb24ubG9hZChvdXRwdXQpCisKKyAgICB0ZXN0X29i
aiA9IG91dHB1dF9qc29uWyJ0ZXN0cyJdWyJ0MSJdCisgICAgIyBUaGUgcHJlY29uZGl0aW9uIGZh
aWx1cmUgc2hvdWxkIG1hcCB0byBGQUlMIHN0YXR1cywgYnV0IHdlIHNob3VsZCBhbHNvCisgICAg
IyBoYXZlIGFuIGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIFBSRUNPTkRJVElPTl9G
QUlMRUQgc3RhdHVzLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0gPT0gIkZBSUwiCisg
ICAgYXNzZXJ0IHRlc3Rfb2JqWyJhcnRpZmFjdHMiXVsid3B0X2FjdHVhbF9zdGF0dXMiXSA9PSBb
IlBSRUNPTkRJVElPTl9GQUlMRUQiXQorICAgICMgLi4udGhpcyBpcyBhbiB1bmV4cGVjdGVkIHJl
Z3Jlc3Npb24gYmVjYXVzZSB3ZSBleHBlY3RlZCBhIHBhc3MgYnV0IGZhaWxlZAorICAgIGFzc2Vy
dCB0ZXN0X29ialsiaXNfcmVncmVzc2lvbiJdIGlzIFRydWUKKyAgICBhc3NlcnQgdGVzdF9vYmpb
ImlzX3VuZXhwZWN0ZWQiXSBpcyBUcnVlCisKKworZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50
X2VtcHR5KGNhcGZkKToKKyAgICAjIElmIHRoZSBrbm93bl9pbnRlcm1pdHRlbnQgbGlzdCBpcyBl
bXB0eSwgd2Ugd2FudCB0byBlbnN1cmUgd2UgZG9uJ3QgYXBwZW5kCisgICAgIyBhbnkgZXh0cmFu
ZW91cyBjaGFyYWN0ZXJzIHRvIHRoZSBvdXRwdXQuCisKKyAgICAjIHNldCB1cCB0aGUgaGFuZGxl
ci4KKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5T
dHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVy
cy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgQ2hyb21pdW1Gb3JtYXR0ZXIoKSkpCisKKyAgICAjIFJ1
biBhIHRlc3QgYW5kIGluY2x1ZGUgYW4gZW1wdHkga25vd25faW50ZXJtaXR0ZW50IGxpc3QKKyAg
ICBsb2dnZXIuc3VpdGVfc3RhcnQoWyJ0MSJdLCBydW5faW5mbz17fSwgdGltZT0xMjMpCisgICAg
bG9nZ2VyLnRlc3Rfc3RhcnQoInQxIikKKyAgICBsb2dnZXIudGVzdF9lbmQoInQxIiwgc3RhdHVz
PSJPSyIsIGV4cGVjdGVkPSJPSyIsIGtub3duX2ludGVybWl0dGVudD1bXSkKKyAgICBsb2dnZXIu
c3VpdGVfZW5kKCkKKworICAgICMgY2hlY2sgbm90aGluZyBnb3Qgb3V0cHV0IHRvIHN0ZG91dC9z
dGRlcnIKKyAgICAjIChub3RlIHRoYXQgbW96bG9nIG91dHB1dHMgZXhjZXB0aW9ucyBkdXJpbmcg
aGFuZGxpbmcgdG8gc3RkZXJyISkKKyAgICBjYXB0dXJlZCA9IGNhcGZkLnJlYWRvdXRlcnIoKQor
ICAgIGFzc2VydCBjYXB0dXJlZC5vdXQgPT0gIiIKKyAgICBhc3NlcnQgY2FwdHVyZWQuZXJyID09
ICIiCisKKyAgICAjIGNoZWNrIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBmb3JtYXR0ZXIKKyAg
ICBvdXRwdXQuc2VlaygwKQorICAgIG91dHB1dF9qc29uID0ganNvbi5sb2FkKG91dHB1dCkKKwor
ICAgIHRlc3Rfb2JqID0gb3V0cHV0X2pzb25bInRlc3RzIl1bInQxIl0KKyAgICAjIEJvdGggYWN0
dWFsIGFuZCBleHBlY3RlZCBzdGF0dXNlcyBnZXQgbWFwcGVkIHRvIFBhc3MuIE5vIGV4dHJhIHdo
aXRlc3BhY2UKKyAgICAjIGFueXdoZXJlLgorICAgIGFzc2VydCB0ZXN0X29ialsiYWN0dWFsIl0g
PT0gIlBBU1MiCisgICAgYXNzZXJ0IHRlc3Rfb2JqWyJleHBlY3RlZCJdID09ICJQQVNTIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2luc3RydW1lbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2luc3Ry
dW1lbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ODdjZjRmZGE3MjQyNmI4OTIxM2NjNDAzN2Y3NDVjZTUy
MzI5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvaW5zdHJ1bWVudHMucHkKQEAg
LTAsMCArMSwxMTcgQEAKK2ltcG9ydCB0aW1lCitpbXBvcnQgdGhyZWFkaW5nCitmcm9tIHNpeC5t
b3Zlcy5xdWV1ZSBpbXBvcnQgUXVldWUKKworIiIiSW5zdHJ1bWVudGF0aW9uIGZvciBtZWFzdXJp
bmcgaGlnaC1sZXZlbCB0aW1lIHNwZW50IG9uIHZhcmlvdXMgdGFza3MgaW5zaWRlIHRoZSBydW5u
ZXIuCisKK1RoaXMgaXMgbG93ZXIgZmlkZWxpdHkgdGhhbiBhbiBhY3R1YWwgcHJvZmlsZSwgYnV0
IGFsbG93cyBjdXN0b20gZGF0YSB0byBiZSBjb25zaWRlcmVkLAorc28gdGhhdCB3ZSBjYW4gc2Vl
IHRoZSB0aW1lIHNwZW50IGluIHNwZWNpZmljIHRlc3RzIGFuZCB0ZXN0IGRpcmVjdG9yaWVzLgor
CisKK0luc3RydW1lbnRzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdl
cnMgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIF9fZW50ZXJfXworY29udGFpbmluZyB0aGUgdXNl
ci1mYWNpbmcgQVBJIGUuZy4KKword2l0aCBJbnN0cnVtZW50KCphcmdzKSBhcyByZWNvcmRpbmc6
CisgICAgcmVjb3JkaW5nLnNldChbImluaXQiXSkKKyAgICBkb19pbml0KCkKKyAgICByZWNvcmRp
bmcucGF1c2UoKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRzOgorICAgICAgIHRocmVh
ZC5zdGFydChyZWNvcmRpbmcsICphcmdzKQorICAgIGZvciB0aHJlYWQgaW4gdGVzdF90aHJlYWRz
OgorICAgICAgIHRocmVhZC5qb2luKCkKKyAgICByZWNvcmRpbmcuc2V0KFsidGVhcmRvd24iXSkg
ICAjIHVuLXBhdXNlcyB0aGUgSW5zdHJ1bWVudAorICAgIGRvX3RlYXJkb3duKCkKKyIiIgorCitj
bGFzcyBOdWxsSW5zdHJ1bWVudChvYmplY3QpOgorICAgIGRlZiBzZXQoc2VsZiwgc3RhY2spOgor
ICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgdGFzayB0byBzdGFjaworCisgICAgICAgIDpwYXJh
bSBzdGFjazogQSBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIGN1cnJlbnQgdGFzay4KKyAg
ICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgaW50ZXJwcmV0ZWQgbGlrZSBhIHN0YWNrIHRy
YWNlIHNvIHRoYXQgWyJmb28iXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJi
YXIiXSBib3RoIHNob3cgdXAgYXMgZGVzY2VuZGFudHMgb2YgImZvbyIKKyAgICAgICAgIiIiCisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBwYXVzZShzZWxmKToKKyAgICAgICAgIiIiU3RvcCByZWNv
cmRpbmcgYSB0YXNrIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhl
IHRocmVhZAorICAgICAgICBpcyBwdXJlbHkgd2FpdGluZyBvbiB0aGUgcmVzdWx0cyBvZiBvdGhl
ciB0aHJlYWRzIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgSW5zdHJ1bWVudFdyaXRlcihvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSk6CisgICAgICAgIHNlbGYucXVldWUgPSBx
dWV1ZQorCisgICAgZGVmIHNldChzZWxmLCBzdGFjayk6CisgICAgICAgIHN0YWNrLmluc2VydCgw
LCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQorICAgICAgICBzdGFjayA9IHNlbGYu
X2NoZWNrX3N0YWNrKHN0YWNrKQorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInNldCIsIHRocmVh
ZGluZy5jdXJyZW50X3RocmVhZCgpLmlkZW50LCB0aW1lLnRpbWUoKSwgc3RhY2spKQorCisgICAg
ZGVmIHBhdXNlKHNlbGYpOgorICAgICAgICBzZWxmLnF1ZXVlLnB1dCgoInBhdXNlIiwgdGhyZWFk
aW5nLmN1cnJlbnRfdGhyZWFkKCkuaWRlbnQsIHRpbWUudGltZSgpLCBOb25lKSkKKworICAgIGRl
ZiBfY2hlY2tfc3RhY2soc2VsZiwgc3RhY2spOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShz
dGFjaywgKHR1cGxlLCBsaXN0KSkKKyAgICAgICAgcmV0dXJuIFtpdGVtLnJlcGxhY2UoIiAiLCAi
XyIpIGZvciBpdGVtIGluIHN0YWNrXQorCisKK2NsYXNzIEluc3RydW1lbnQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiSW5zdHJ1bWVudCB0
aGF0IGNvbGxlY3RzIGRhdGEgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBzdW1zIHRoZSB0aW1l
IGluIGVhY2gKKyAgICAgICAgdGhyZWFkLiBUaGUgb3V0cHV0IGlzIGluIHRoZSBmb3JtYXQgcmVx
dWlyZWQgYnkgZmxhbWVncmFwaC5wbCB0byBlbmFibGUgdmlzdWFsaXNhdGlvbgorICAgICAgICBv
ZiB0aGUgdGltZSBzcGVudCBpbiBlYWNoIHRhc2suCisKKyAgICAgICAgOnBhcmFtIGZpbGVfcGF0
aDogLSBUaGUgcGF0aCBvbiB3aGljaCB0byB3cml0ZSBpbnN0cnVtZW50IG91dHB1dC4gQW55IGV4
aXN0aW5nIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgcGF0aCB3aWxs
IGJlIG92ZXJ3cml0dGVuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnBhdGggPSBmaWxlX3Bh
dGgKKyAgICAgICAgc2VsZi5xdWV1ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJyZW50ID0gTm9u
ZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisgICAgICAgIHNlbGYudGhyZWFkID0g
Tm9uZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYudGhy
ZWFkIGlzIE5vbmUKKyAgICAgICAgYXNzZXJ0IHNlbGYucXVldWUgaXMgTm9uZQorICAgICAgICBz
ZWxmLnF1ZXVlID0gUXVldWUoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJl
YWQodGFyZ2V0PXNlbGYucnVuKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAg
IHJldHVybiBJbnN0cnVtZW50V3JpdGVyKHNlbGYucXVldWUpCisKKyAgICBkZWYgX19leGl0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5xdWV1ZS5wdXQoKCJzdG9wIiwg
Tm9uZSwgdGltZS50aW1lKCksIE5vbmUpKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKyAg
ICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYucXVldWUgPSBOb25lCisKKyAg
ICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBrbm93bl9jb21tYW5kcyA9IHsic3RvcCIsICJwYXVz
ZSIsICJzZXQifQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wYXRoLCAidyIpIGFzIGY6CisgICAg
ICAgICAgICB0aHJlYWRfZGF0YSA9IHt9CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgICAgIGNvbW1hbmQsIHRocmVhZCwgdGltZV9zdGFtcCwgc3RhY2sgPSBzZWxmLnF1ZXVl
LmdldCgpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvbW1hbmQgaW4ga25vd25fY29tbWFuZHMK
KworICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIGRvbmUgcmVjb3JkaW5nLCBkdW1wIHRoZSBp
bmZvcm1hdGlvbiBmcm9tIGFsbCB0aHJlYWRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAg
IyBiZWZvcmUgZXhpdGluZy4gT3RoZXJ3aXNlIGZvciBlaXRoZXIgJ3NldCcgb3IgJ3BhdXNlJyB3
ZSBvbmx5IG5lZWQgdG8gZHVtcAorICAgICAgICAgICAgICAgICMgaW5mb3JtYXRpb24gZnJvbSB0
aGUgY3VycmVudCBzdGFjayAoaWYgYW55KSB0aGF0IHdhcyByZWNvcmRpbmcgb24gdGhlIHJlcG9y
dGluZworICAgICAgICAgICAgICAgICMgdGhyZWFkIChhcyB0aGF0IHN0YWNrIGlzIG5vIGxvbmdl
ciBhY3RpdmUpLgorICAgICAgICAgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgICAgICAgICBp
ZiBjb21tYW5kID09ICJzdG9wIjoKKyAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aHJlYWRf
ZGF0YS52YWx1ZXMoKQorICAgICAgICAgICAgICAgIGVsaWYgdGhyZWFkIGluIHRocmVhZF9kYXRh
OgorICAgICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQodGhyZWFkX2RhdGEucG9wKHRocmVh
ZCkpCisgICAgICAgICAgICAgICAgZm9yIG91dHB1dF9zdGFjaywgc3RhcnRfdGltZSBpbiBpdGVt
czoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJWRcbiIgJSAoIjsiLmpvaW4ob3V0
cHV0X3N0YWNrKSwgaW50KDEwMDAgKiAodGltZV9zdGFtcCAtIHN0YXJ0X3RpbWUpKSkpCisKKyAg
ICAgICAgICAgICAgICBpZiBjb21tYW5kID09ICJzZXQiOgorICAgICAgICAgICAgICAgICAgICB0
aHJlYWRfZGF0YVt0aHJlYWRdID0gKHN0YWNrLCB0aW1lX3N0YW1wKQorICAgICAgICAgICAgICAg
IGVsaWYgY29tbWFuZCA9PSAic3RvcCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9t
YW5pZmVzdGV4cGVjdGVkLnB5CmluZGV4IGVhZTg1YjFmNjY2MWE2N2RmZjU5ZWY3OGE5ZWQ2Mjdl
M2UzNjAzZDguLjMxYzU3ZTljYjczNGY3NDFlNDI3NWU3NGU4ZmNmN2NkMGFkNGVlMzEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVjdGVkLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0xLDYgKzEsOCBAQAogaW1wb3J0IG9zCi1mcm9tIHNp
eC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5cGUKK2Zyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbgorCiAKIGZyb20gLndwdG1hbmlm
ZXN0LmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKIGZyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmJh
c2UgaW1wb3J0IE1hbmlmZXN0SXRlbQpAQCAtMTUsNiArMTcsNyBAQCBFYWNoIFRlc3ROb2RlIGhh
cyB6ZXJvIG9yIG1vcmUgU3VidGVzdE5vZGUgY2hpbGRyZW4sIG9uZSBmb3IgZWFjaAoga25vd24g
c3VidGVzdCBvZiB0aGUgdGVzdC4KICIiIgogCisKIGRlZiBkYXRhX2Nsc19nZXR0ZXIob3V0cHV0
X25vZGUsIHZpc2l0ZWRfbm9kZSk6CiAgICAgIyB2aXNpdGVkX25vZGUgaXMgaW50ZW50aW9uYWxs
eSB1bnVzZWQKICAgICBpZiBvdXRwdXRfbm9kZSBpcyBOb25lOgpAQCAtMjksNyArMzIsNyBAQCBk
ZWYgZGF0YV9jbHNfZ2V0dGVyKG91dHB1dF9ub2RlLCB2aXNpdGVkX25vZGUpOgogZGVmIGJvb2xf
cHJvcChuYW1lLCBub2RlKToKICAgICAiIiJCb29sZWFuIHByb3BlcnR5IiIiCiAgICAgdHJ5Ogot
ICAgICAgICByZXR1cm4gbm9kZS5nZXQobmFtZSkKKyAgICAgICAgcmV0dXJuIGJvb2wobm9kZS5n
ZXQobmFtZSkpCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICByZXR1cm4gTm9uZQogCkBA
IC00NiwxOCArNDksMjggQEAgZGVmIGxpc3RfcHJvcChuYW1lLCBub2RlKToKICAgICAiIiJMaXN0
IHByb3BlcnR5IiIiCiAgICAgdHJ5OgogICAgICAgICBsaXN0X3Byb3AgPSBub2RlLmdldChuYW1l
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3RfcHJvcCwgYmFzZXN0cmluZyk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2UobGlzdF9wcm9wLCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmV0
dXJuIFtsaXN0X3Byb3BdCiAgICAgICAgIHJldHVybiBsaXN0KGxpc3RfcHJvcCkKICAgICBleGNl
cHQgS2V5RXJyb3I6CiAgICAgICAgIHJldHVybiBbXQogCiAKK2RlZiBzdHJfcHJvcChuYW1lLCBu
b2RlKToKKyAgICB0cnk6CisgICAgICAgIHByb3AgPSBub2RlLmdldChuYW1lKQorICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZShwcm9wLCBzdHJpbmdfdHlwZXMpOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgorICAgICAgICByZXR1cm4gcHJvcAorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworCiBkZWYgdGFncyhub2RlKToKICAgICAiIiJTZXQgb2YgdGFn
cyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoZSB0ZXN0IiIiCiAgICAgdHJ5OgogICAgICAg
ICB2YWx1ZSA9IG5vZGUuZ2V0KCJ0YWdzIikKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
KHN0ciwgdW5pY29kZSkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0ZXh0X3R5cGUp
OgogICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZX0KICAgICAgICAgcmV0dXJuIHNldCh2YWx1ZSkK
ICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC02Niw3ICs3OSw3IEBAIGRlZiB0YWdzKG5vZGUpOgog
CiBkZWYgcHJlZnMobm9kZSk6CiAgICAgZGVmIHZhbHVlKGluaV92YWx1ZSk6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2UoaW5pX3ZhbHVlLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAgIGlmIGlzaW5z
dGFuY2UoaW5pX3ZhbHVlLCB0ZXh0X3R5cGUpOgogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBy
ZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUuc3BsaXQoJzonLCAx
KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgdGhpbmdzIGxp
a2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3QnCkBAIC03NCw3ICs4
Nyw3IEBAIGRlZiBwcmVmcyhub2RlKToKIAogICAgIHRyeToKICAgICAgICAgbm9kZV9wcmVmcyA9
IG5vZGUuZ2V0KCJwcmVmcyIpCi0gICAgICAgIGlmIHR5cGUobm9kZV9wcmVmcykgaW4gKHN0ciwg
dW5pY29kZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9wcmVmcywgdGV4dF90eXBlKToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShub2RlX3ByZWZzKSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJ2ID0gZGljdCh2YWx1ZShpdGVtKSBmb3IgaXRlbSBpbiBub2RlX3ByZWZz
KQpAQCAtODYsNyArOTksNyBAQCBkZWYgcHJlZnMobm9kZSk6CiBkZWYgc2V0X3Byb3AobmFtZSwg
bm9kZSk6CiAgICAgdHJ5OgogICAgICAgICBub2RlX2l0ZW1zID0gbm9kZS5nZXQobmFtZSkKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCAoc3RyLCB1bmljb2RlKSk6CisgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgdGV4dF90eXBlKToKICAgICAgICAgICAgIHJ2ID0g
e25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiA9IHNldChub2RlX2l0
ZW1zKQpAQCAtOTksNyArMTEyLDcgQEAgZGVmIGxlYWtfdGhyZXNob2xkKG5vZGUpOgogICAgIHJ2
ID0ge30KICAgICB0cnk6CiAgICAgICAgIG5vZGVfaXRlbXMgPSBub2RlLmdldCgibGVhay10aHJl
c2hvbGQiKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChzdHIsIHVuaWNvZGUp
KToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlX2l0ZW1zLCB0ZXh0X3R5cGUpOgogICAgICAg
ICAgICAgbm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQogICAgICAgICBmb3IgaXRlbSBpbiBub2Rl
X2l0ZW1zOgogICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJzcGxpdCgiOiIsIDEp
CkBAIC0xNTYsNyArMTY5LDcgQEAgZGVmIGZ1enp5X3Byb3Aobm9kZSk6CiAgICAgaWYgbm90IGlz
aW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICBmb3Ig
aXRlbSBpbiB2YWx1ZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5p
Y29kZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0ZXh0X3R5cGUpOgogICAg
ICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBw
YXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKQEAgLTI3OSw2ICsyOTIsMTAgQEAgY2xhc3MgRXhw
ZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9kaXNh
YmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxlZCIsIHNl
bGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC0zMDcsNiArMzI0LDEw
IEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYga25vd25f
aW50ZXJtaXR0ZW50KHNlbGYpOgogICAgICAgICByZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIs
IHNlbGYpWzE6XQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cl9wcm9wKCJpbXBsZW1lbnRhdGlvbi1zdGF0dXMi
LCBzZWxmKQorCiAKIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAg
QHByb3BlcnR5CkBAIC0zMzcsNiArMzU4LDEwIEBAIGNsYXNzIERpcmVjdG9yeU1hbmlmZXN0KE1h
bmlmZXN0SXRlbSk6CiAgICAgZGVmIHByZWZzKHNlbGYpOgogICAgICAgICByZXR1cm4gcHJlZnMo
c2VsZikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX2Rpc2FibGVkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gYm9vbF9wcm9wKCJsc2FuLWRpc2FibGVkIiwgc2VsZikKKwogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZXRfcHJv
cCgibHNhbi1hbGxvd2VkIiwgc2VsZikKQEAgLTM1Nyw2ICszODIsMTAgQEAgY2xhc3MgRGlyZWN0
b3J5TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICBkZWYgZnV6enkoc2VsZik6CiAgICAgICAg
IHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW1wbGVt
ZW50YXRpb25fc3RhdHVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyX3Byb3AoImltcGxlbWVu
dGF0aW9uLXN0YXR1cyIsIHNlbGYpCisKIAogY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgpAQCAtNDE0LDYgKzQ0Mywx
MCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIGRlZiBwcmVmcyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHByZWZzKHNlbGYpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNh
bl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2xfcHJvcCgibHNhbi1kaXNhYmxl
ZCIsIHNlbGYpCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCkBAIC00NDIsNiAr
NDc1LDEwIEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAgICAgZGVmIGtub3duX2lu
dGVybWl0dGVudChzZWxmKToKICAgICAgICAgcmV0dXJuIGxpc3RfcHJvcCgiZXhwZWN0ZWQiLCBz
ZWxmKVsxOl0KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMo
c2VsZik6CisgICAgICAgIHJldHVybiBzdHJfcHJvcCgiaW1wbGVtZW50YXRpb24tc3RhdHVzIiwg
c2VsZikKKwogICAgIGRlZiBhcHBlbmQoc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIkFkZCBhIHN1
YnRlc3QgdG8gdGhlIGN1cnJlbnQgdGVzdAogCkBAIC00NzgsNyArNTE1LDcgQEAgZGVmIGdldF9t
YW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mbyk6CiAg
ICAgIiIiCiAgICAgbWFuaWZlc3RfcGF0aCA9IGV4cGVjdGVkLmV4cGVjdGVkX3BhdGgobWV0YWRh
dGFfcm9vdCwgdGVzdF9wYXRoKQogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0
X3BhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAicmIiKSBhcyBm
OgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YV9jbHNfZ2V0dGVyPWRhdGFfY2xzX2dldHRlciwKQEAgLTQ5Nyw3ICs1MzQsNyBA
QCBkZWYgZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLCBydW5faW5mbyk6CiAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMgc2hvdWxkIGJlIGNvbXB1dGVkLgogICAgICIiIgogICAgIHRyeToKLSAgICAg
ICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBh
cyBmOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpYy5jb21waWxlKGYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IERpcmVjdG9yeU1hbmlmZXN0KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggZDMwMjgzMWE1N2FiYmFhZGQ3NWZlNDllMDk0NDgy
ZGMxNDIyM2VhMy4uNzliNWIxOWIzYTNmNjE3ZTVkZDQwMTE4MDQyZGEwYjNlYThlNDExNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDYgKzYsNyBAQCBiZSBpbmNsdWRlZCBvciBleGNs
dWRlZC4KICIiIgogaW1wb3J0IGdsb2IKIGltcG9ydCBvcworZnJvbSBzaXggaW1wb3J0IGl0ZXJp
dGVtcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgdXJsc3Bs
aXQKIAogZnJvbSAud3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUKQEAgLTk0LDcgKzk1
LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAgICAgICAgIGlmIHBh
dGhzOgogICAgICAgICAgICAgdXJscyA9IFtdCiAgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRo
czoKLSAgICAgICAgICAgICAgICBmb3IgbWFuaWZlc3QsIGRhdGEgaW4gdGVzdF9tYW5pZmVzdHMu
aXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIG1hbmlmZXN0LCBkYXRhIGluIGl0ZXJp
dGVtcyh0ZXN0X21hbmlmZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UK
ICAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgZGF0
YVsidGVzdHNfcGF0aCJdKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1hbmlmZXN0
Lml0ZXJwYXRoIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGVsc2UgbWFuaWZlc3QuaXRlcmRpcgpA
QCAtMTUwLDUgKzE1MSw1IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgog
CiAKIGRlZiBnZXRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aCk6Ci0gICAgd2l0aCBvcGVuKG1hbmlm
ZXN0X3BhdGgpIGFzIGY6CisgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFzIGY6
CiAgICAgICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxlKGYsIGRhdGFfY2xzX2dldHRlcj1s
YW1iZGEgeCwgeTogSW5jbHVkZU1hbmlmZXN0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21h
bmlmZXN0dXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5CmluZGV4IGFm
OWFmMThkOTA3MTVkNDNiYmNkMmFlNDdjZTc2Mjc1YmIwZTE1NzcuLjEyOTQ1N2IzZmQxMjcwZGM2
NjAyOWQzZWE4NzNkMzUzNzE0YWE2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVz
dHVwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKQEAgLTMsNyAr
Myw3IEBAIGltcG9ydCBvcwogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxq
b2luLCB1cmxzcGxpdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgZGVmYXVs
dGRpY3QsIGRlcXVlCiBmcm9tIG1hdGggaW1wb3J0IGNlaWwKLWZyb20gc2l4IGltcG9ydCBpdGVy
a2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIHNpeCBpbXBvcnQgaW50ZWdlcl90eXBl
cywgaXRlcmtleXMsIGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcywgc3RyaW5nX3R5cGVzLCB0ZXh0X3R5
cGUKIAogZnJvbSAud3B0bWFuaWZlc3QgaW1wb3J0IHNlcmlhbGl6ZQogZnJvbSAud3B0bWFuaWZl
c3Qubm9kZSBpbXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJpbmFyeUV4cHJlc3Np
b25Ob2RlLApAQCAtNDExLDcgKzQxMSw3IEBAIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6
CiAgICAgICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICAgICAgIGlmIGRpc2FibGVfaW50ZXJt
aXR0ZW50OgogICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5jaGlsZHJlblswXSBp
ZiBlLmNvbmQgZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1p
dHRlbnQgaWYgaXNpbnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0ciwgdW5pY29kZSkp
IGVsc2UgInVuc3RhYmxlIgorICAgICAgICAgICAgICAgIG1zZyA9IGRpc2FibGVfaW50ZXJtaXR0
ZW50IGlmIGlzaW5zdGFuY2UoZGlzYWJsZV9pbnRlcm1pdHRlbnQsIHN0cmluZ190eXBlcysodGV4
dF90eXBlLCkpIGVsc2UgInVuc3RhYmxlIgogICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQo
ImRpc2FibGVkIiwgbXNnLCBjb25kaXRpb24pCiAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5l
d19kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsc2U6CkBAIC01MTMsNyArNTEzLDcgQEAg
Y2xhc3MgUHJvcGVydHlVcGRhdGUob2JqZWN0KToKICAgICAgICAgICAgIHRvcF9sZXZlbF9wcm9w
cywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5ub2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcwog
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQogICAg
ICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhkZXBlbmRlbnRfcHJvcHMpOgotICAgICAg
ICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzIHw9IHNldChkZXBlbmRlbnRfcHJvcHMpCisgICAg
ICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMgfD0gc2V0KGl0ZW0pCiAgICAgICAgICAgICBm
b3IgY29uZGl0aW9uIGluIGN1cnJlbnRfY29uZGl0aW9uczoKICAgICAgICAgICAgICAgICBpZiAo
KG5vdCBjb25kaXRpb24udmFyaWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQK
ICAgICAgICAgICAgICAgICAgICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRpb25bY29uZGl0aW9u
XSkpOgpAQCAtNzc0LDcgKzc3NCw3IEBAIGNsYXNzIEFwcGVuZE9ubHlMaXN0VXBkYXRlKFByb3Bl
cnR5VXBkYXRlKToKICAgICAgICAgZm9yIGl0ZW0gaW4gbmV3OgogICAgICAgICAgICAgaWYgaXRl
bSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGl0ZW0sIHRleHRfdHlwZSk6CiAgICAgICAgICAgICAgICAgcnYuYWRkKGl0ZW0pCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJ2IHw9IGl0ZW0KQEAgLTg5NywxMCArODk3
LDEwIEBAIGRlZiBtYWtlX2V4cHIocHJvcF9zZXQsIHJocyk6CiAKIAogZGVmIG1ha2Vfbm9kZSh2
YWx1ZSk6Ci0gICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxvbmcpOgorICAgIGlm
IGlzaW5zdGFuY2UodmFsdWUsIGludGVnZXJfdHlwZXMrKGZsb2F0LCkpOgogICAgICAgICBub2Rl
ID0gTnVtYmVyTm9kZSh2YWx1ZSkKLSAgICBlbGlmIHR5cGUodmFsdWUpIGluIChzdHIsIHVuaWNv
ZGUpOgotICAgICAgICBub2RlID0gU3RyaW5nTm9kZSh1bmljb2RlKHZhbHVlKSkKKyAgICBlbGlm
IGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBTdHJpbmdOb2Rl
KHRleHRfdHlwZSh2YWx1ZSkpCiAgICAgZWxpZiBoYXNhdHRyKHZhbHVlLCAiX19pdGVyX18iKToK
ICAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWU6CkBA
IC05MDksMTAgKzkwOSwxMCBAQCBkZWYgbWFrZV9ub2RlKHZhbHVlKToKIAogCiBkZWYgbWFrZV92
YWx1ZV9ub2RlKHZhbHVlKToKLSAgICBpZiB0eXBlKHZhbHVlKSBpbiAoaW50LCBmbG9hdCwgbG9u
Zyk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50ZWdlcl90eXBlcysoZmxvYXQsKSk6CiAg
ICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodmFsdWUpCi0gICAgZWxpZiB0eXBlKHZhbHVlKSBpbiAo
c3RyLCB1bmljb2RlKToKLSAgICAgICAgbm9kZSA9IFZhbHVlTm9kZSh1bmljb2RlKHZhbHVlKSkK
KyAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHRleHRfdHlwZSk6CisgICAgICAgIG5vZGUgPSBW
YWx1ZU5vZGUodGV4dF90eXBlKHZhbHVlKSkKICAgICBlbGlmIGhhc2F0dHIodmFsdWUsICJfX2l0
ZXJfXyIpOgogICAgICAgICBub2RlID0gTGlzdE5vZGUoKQogICAgICAgICBmb3IgaXRlbSBpbiB2
YWx1ZToKQEAgLTkzMSw3ICs5MzEsNyBAQCBkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3Qs
IHRlc3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZQogICAgIDpw
YXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGluIHRoaXMgbWFu
aWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0ZWRfcGF0aChtZXRh
ZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4obWFuaWZl
c3RfcGF0aCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgsICJyYiIpIGFz
IGY6CiAgICAgICAgICAgICBydiA9IGNvbXBpbGUoZiwgdGVzdF9wYXRoLCB1cmxfYmFzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGVfaW50ZXJt
aXR0ZW50LCByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgIGV4Y2VwdCBJT0Vycm9yOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5
CmluZGV4IGMzMjhkY2VmYTcyNTNkZGVhOTUyNTQ5YzcwMjcyM2U5OGI0Y2FkYzQuLmRmMzFhYzQw
ZGU4YjhlZTcwODEzYzNiMmUwM2QxODY1ZjY3MmUyOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9tZXRhZGF0YS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKQEAgLTEsMTAgKzEs
MTIgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGltcG9ydCBhcnJh
eQogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0
ZGljdCwgbmFtZWR0dXBsZQogCiBmcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZGxvZwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IGludGVybgorZnJvbSBzaXggaW1wb3J0IGVuc3VyZV9zdHIsIGVu
c3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCBpdGVydmFsdWVzLCB0ZXh0X3R5cGUKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4sIHJhbmdlCiAKIGZyb20gLiBpbXBvcnQgbWFuaWZl
c3R1cGRhdGUKIGZyb20gLiBpbXBvcnQgdGVzdGxvYWRlcgpAQCAtNDMsMTEgKzQ1LDExIEBAIGNs
YXNzIFJ1bkluZm8ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuY2Fub25pY2FsX3JlcHIg
PT0gb3RoZXIuY2Fub25pY2FsX3JlcHIKIAogICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gaXRlcml0ZW1zKHNlbGYuZGF0YSk6CiAgICAgICAgICAgICB5aWVsZCBr
ZXksIHZhbHVlCiAKICAgICBkZWYgaXRlbXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBsaXN0KHNl
bGYuaXRlcml0ZW1zKCkpCisgICAgICAgIHJldHVybiBsaXN0KGl0ZXJpdGVtcyhzZWxmKSkKIAog
CiBkZWYgdXBkYXRlX2V4cGVjdGVkKHRlc3RfcGF0aHMsIHNlcnZlX3Jvb3QsIGxvZ19maWxlX25h
bWVzLApAQCAtMTI3LDcgKzEyOSw3IEBAIGRlZiB1bmV4cGVjdGVkX2NoYW5nZXMobWFuaWZlc3Rz
LCBjaGFuZ2VfZGF0YSwgZmlsZXNfY2hhbmdlZCk6CiAgICAgZmlsZXNfY2hhbmdlZCA9IHNldChm
aWxlc19jaGFuZ2VkKQogCiAgICAgcm9vdF9tYW5pZmVzdCA9IE5vbmUKLSAgICBmb3IgbWFuaWZl
c3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgbWFuaWZlc3QsIHBh
dGhzIGluIGl0ZXJpdGVtcyhtYW5pZmVzdHMpOgogICAgICAgICBpZiBwYXRoc1sidXJsX2Jhc2Ui
XSA9PSAiLyI6CiAgICAgICAgICAgICByb290X21hbmlmZXN0ID0gbWFuaWZlc3QKICAgICAgICAg
ICAgIGJyZWFrCkBAIC0xOTgsNyArMjAwLDcgQEAgY2xhc3MgSW50ZXJuZWREYXRhKG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAg
Zm9yIGkgaW4geHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CisgICAgICAgIGZvciBpIGlu
IHJhbmdlKDEsIGxlbihzZWxmLl9kYXRhWzBdKSk6CiAgICAgICAgICAgICB5aWVsZCBzZWxmLmdl
dChpKQogCiAKQEAgLTIzOCw3ICsyNDAsNyBAQCBkZWYgcGFja19yZXN1bHQoZGF0YSk6CiBkZWYg
dW5wYWNrX3Jlc3VsdChkYXRhKToKICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGludCk6CiAgICAg
ICAgIHJldHVybiAoc3RhdHVzX2ludGVybi5nZXQoZGF0YSksIE5vbmUpCi0gICAgaWYgaXNpbnN0
YW5jZShkYXRhLCB1bmljb2RlKToKKyAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHRleHRfdHlwZSk6
CiAgICAgICAgIHJldHVybiAoZGF0YSwgTm9uZSkKICAgICAjIFVucGFjayBtdWx0aXBsZSBzdGF0
dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNlZCBpbiB0aGUgUmVzdWx0cyBuYW1lZCB0dXBsZSBi
ZWxvdywKICAgICAjIHNlcGFyYXRpbmcgYHN0YXR1c2AgYW5kIGBrbm93bl9pbnRlcm1pdHRlbnRg
LgpAQCAtMjU3LDcgKzI1OSw3IEBAIGRlZiBsb2FkX3Rlc3RfZGF0YSh0ZXN0X3BhdGhzKToKICAg
ICBtYW5pZmVzdHMgPSBtYW5pZmVzdF9sb2FkZXIubG9hZCgpCiAKICAgICBpZF90ZXN0X21hcCA9
IHt9Ci0gICAgZm9yIHRlc3RfbWFuaWZlc3QsIHBhdGhzIGluIG1hbmlmZXN0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9tYW5pZmVzdCwgcGF0aHMgaW4gaXRlcml0ZW1zKG1hbmlmZXN0cyk6
CiAgICAgICAgIGlkX3Rlc3RfbWFwLnVwZGF0ZShjcmVhdGVfdGVzdF90cmVlKHBhdGhzWyJtZXRh
ZGF0YV9wYXRoIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfbWFuaWZlc3QpKQogICAgIHJldHVybiBpZF90ZXN0X21hcApAQCAtMjg1LDEwICsyODcs
MTAgQEAgZGVmIHVwZGF0ZV9yZXN1bHRzKGlkX3Rlc3RfbWFwLAogICAgICAgICAgICAgICAgICAg
IGRpc2FibGVfaW50ZXJtaXR0ZW50LAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pbnRlcm1p
dHRlbnQsCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudCk6Ci0gICAgdGVz
dF9maWxlX2l0ZW1zID0gc2V0KGlkX3Rlc3RfbWFwLml0ZXJ2YWx1ZXMoKSkKKyAgICB0ZXN0X2Zp
bGVfaXRlbXMgPSBzZXQoaXRlcnZhbHVlcyhpZF90ZXN0X21hcCkpCiAKICAgICBkZWZhdWx0X2V4
cGVjdGVkX2J5X3R5cGUgPSB7fQotICAgIGZvciB0ZXN0X3R5cGUsIHRlc3RfY2xzIGluIHdwdHRl
c3QubWFuaWZlc3RfdGVzdF9jbHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVz
dF9jbHMgaW4gaXRlcml0ZW1zKHdwdHRlc3QubWFuaWZlc3RfdGVzdF9jbHMpOgogICAgICAgICBp
ZiB0ZXN0X2Nscy5yZXN1bHRfY2xzOgogICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RlZF9ieV90
eXBlWyh0ZXN0X3R5cGUsIEZhbHNlKV0gPSB0ZXN0X2Nscy5yZXN1bHRfY2xzLmRlZmF1bHRfZXhw
ZWN0ZWQKICAgICAgICAgaWYgdGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xzOgpAQCAtMzI0LDgg
KzMyNiwxMSBAQCBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRhX3BhdGgsIGV4cGVjdGVk
KToKICAgICAgICAgdG1wX3BhdGggPSBwYXRoICsgIi50bXAiCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIHdpdGggb3Blbih0bXBfcGF0aCwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBm
LndyaXRlKG1hbmlmZXN0X3N0cikKLSAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0
aCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKG1hbmlmZXN0X3N0ci5lbmNvZGUoInV0ZjgiKSkK
KyAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDMpOgorICAgICAgICAgICAg
ICAgIG9zLnJlcGxhY2UodG1wX3BhdGgsIHBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG9zLnJlbmFtZSh0bXBfcGF0aCwgcGF0aCkKICAgICAgICAgZXhjZXB0IChFeGNl
cHRpb24sIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBvcy51bmxpbmsodG1wX3BhdGgpCkBAIC00MjYsNyArNDMxLDcgQEAgY2xhc3MgRXhwZWN0
ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBhY3Rpb25fbWFwWyJsc2FuX2xlYWsiXShp
dGVtKQogCiAgICAgICAgIG1vemxlYWtfZGF0YSA9IGRhdGEuZ2V0KCJtb3psZWFrIiwge30pCi0g
ICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBtb3psZWFrX2RhdGEuaXRlcml0ZW1zKCk6
CisgICAgICAgIGZvciBzY29wZSwgc2NvcGVfZGF0YSBpbiBpdGVyaXRlbXMobW96bGVha19kYXRh
KToKICAgICAgICAgICAgIGZvciBrZXksIGFjdGlvbiBpbiBbKCJvYmplY3RzIiwgIm1vemxlYWtf
b2JqZWN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidG90YWwiLCAibW96
bGVha190b3RhbCIpXToKICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzY29wZV9kYXRhLmdl
dChrZXksIFtdKToKQEAgLTQzOCw3ICs0NDMsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVybi5zdG9yZShSdW5J
bmZvKGRhdGFbInJ1bl9pbmZvIl0pKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0YSk6
Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJdKSkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5pZF90ZXN0X21hcFt0ZXN0X2lkXQogICAgICAgICBl
eGNlcHQgS2V5RXJyb3I6CkBAIC00NDgsOCArNDUzLDggQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXSA9IHNldCgpCiAK
ICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRl
cm4oZGF0YVsidGVzdCJdLmVuY29kZSgidXRmOCIpKQotICAgICAgICBzdWJ0ZXN0ID0gaW50ZXJu
KGRhdGFbInN1YnRlc3QiXS5lbmNvZGUoInV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVy
bihlbnN1cmVfc3RyKGRhdGFbInRlc3QiXSkpCisgICAgICAgIHN1YnRlc3QgPSBpbnRlcm4oZW5z
dXJlX3N0cihkYXRhWyJzdWJ0ZXN0Il0pKQogICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rl
c3RfbWFwLmdldCh0ZXN0X2lkKQogICAgICAgICBpZiB0ZXN0X2RhdGEgaXMgTm9uZToKICAgICAg
ICAgICAgIHJldHVybgpAQCAtNDY2LDcgKzQ3MSw3IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihv
YmplY3QpOgogICAgICAgICBpZiBkYXRhWyJzdGF0dXMiXSA9PSAiU0tJUCI6CiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGRhdGFbInRlc3QiXS5lbmNvZGUo
InV0ZjgiKSkKKyAgICAgICAgdGVzdF9pZCA9IGludGVybihlbnN1cmVfc3RyKGRhdGFbInRlc3Qi
XSkpCiAgICAgICAgIHRlc3RfZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXAuZ2V0KHRlc3RfaWQpCiAg
ICAgICAgIGlmIHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCkBAIC00Nzks
NyArNDg0LDcgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGRlbCBz
ZWxmLnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0KIAogICAgIGRlZiBhc3NlcnRpb25fY291bnQoc2Vs
ZiwgZGF0YSk6Ci0gICAgICAgIHRlc3RfaWQgPSBpbnRlcm4oZGF0YVsidGVzdCJdLmVuY29kZSgi
dXRmOCIpKQorICAgICAgICB0ZXN0X2lkID0gaW50ZXJuKGVuc3VyZV9zdHIoZGF0YVsidGVzdCJd
KSkKICAgICAgICAgdGVzdF9kYXRhID0gc2VsZi5pZF90ZXN0X21hcC5nZXQodGVzdF9pZCkKICAg
ICAgICAgaWYgdGVzdF9kYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTQ5MCwx
MiArNDk1LDE1IEBAIGNsYXNzIEV4cGVjdGVkVXBkYXRlcihvYmplY3QpOgogCiAgICAgZGVmIHRl
c3RfZm9yX3Njb3BlKHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9IGRhdGEuZ2V0KCJz
Y29wZSIsICIvIikKLSAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGguam9pbihkaXJfcGF0
aCwgIl9fZGlyX18iKS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29kZSgidXRmOCIpKQor
ICAgICAgICBkaXJfaWQgPSBpbnRlcm4oZW5zdXJlX3N0cihvcy5wYXRoLmpvaW4oZGlyX3BhdGgs
ICJfX2Rpcl9fIikucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKSkpCiAgICAgICAgIGlmIGRpcl9p
ZC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfaWRbMTpdCiAgICAg
ICAgIHJldHVybiBkaXJfaWQsIHNlbGYuaWRfdGVzdF9tYXBbZGlyX2lkXQogCiAgICAgZGVmIGxz
YW5fbGVhayhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6Cisg
ICAgICAgICAgICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIGxzYW4gYW5ub3RhdGlvbnMg
Zm9yIHJvb3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRpcl9pZCwgdGVz
dF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQogICAgICAgICB0ZXN0X2RhdGEuc2V0
KGRpcl9pZCwgTm9uZSwgImxzYW4iLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX2lu
Zm8sIChkYXRhWyJmcmFtZXMiXSwgZGF0YS5nZXQoImFsbG93ZWRfbWF0Y2giKSkpCkBAIC01MDMs
NiArNTExLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha19vYmplY3Qo
c2VsZiwgZGF0YSk6CisgICAgICAgIGlmIGRhdGFbInNjb3BlIl0gPT0gIi8iOgorICAgICAgICAg
ICAgbG9nZ2VyLndhcm5pbmcoIk5vdCB1cGRhdGluZyBtb3psZWFrIGFubm90YXRpb25zIGZvciBy
b290IHNjb3BlIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXJfaWQsIHRlc3RfZGF0
YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRhLnNldChkaXJf
aWQsIE5vbmUsICJsZWFrLW9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5f
aW5mbywgKCIlczolcyIsIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbIm5hbWUiXSksCkBAIC01MTEs
NiArNTIyLDkgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgICAgICB0
ZXN0X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCiAKICAgICBkZWYgbW96bGVha190b3RhbChz
ZWxmLCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsic2NvcGUiXSA9PSAiLyI6CisgICAgICAgICAg
ICBsb2dnZXIud2FybmluZygiTm90IHVwZGF0aW5nIG1vemxlYWsgYW5ub3RhdGlvbnMgZm9yIHJv
b3Qgc2NvcGUiKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIGRhdGFbImJ5dGVzIl06
CiAgICAgICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jfc2NvcGUoZGF0
YSkKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXQoZGlyX2lkLCBOb25lLCAibGVhay10aHJlc2hv
bGQiLApAQCAtNTI5LDMxICs1NDMsMzAgQEAgZGVmIGNyZWF0ZV90ZXN0X3RyZWUobWV0YWRhdGFf
cGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgYXNzZXJ0IGFsbF90eXBlcyA+IGV4Y2x1ZGVfdHlw
ZXMKICAgICBpbmNsdWRlX3R5cGVzID0gYWxsX3R5cGVzIC0gZXhjbHVkZV90eXBlcwogICAgIGZv
ciBpdGVtX3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gdGVzdF9tYW5pZmVzdC5pdGVydHlwZXMo
KmluY2x1ZGVfdHlwZXMpOgotICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShp
bnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNvZGUoInV0ZjgiKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybihpdGVtX3R5cGUuZW5jb2RlKCJ1dGY4
IikpLAorICAgICAgICB0ZXN0X2ZpbGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4oZW5zdXJl
X3N0cih0ZXN0X21hbmlmZXN0LnVybF9iYXNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybihlbnN1cmVfc3RyKGl0ZW1fdHlwZSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzKQogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAg
ICAgICAgIGlkX3Rlc3RfbWFwW2ludGVybih0ZXN0LmlkLmVuY29kZSgidXRmOCIpKV0gPSB0ZXN0
X2ZpbGVfZGF0YQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbaW50ZXJuKGVuc3VyZV9zdHIodGVz
dC5pZCkpXSA9IHRlc3RfZmlsZV9kYXRhCiAKLSAgICAgICAgZGlyX3BhdGggPSBvcy5wYXRoLnNw
bGl0KHRlc3RfcGF0aClbMF0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgICAgICBkaXJf
cGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICBpZiBkaXJfcGF0aDoKLSAgICAgICAgICAgICAgICBkaXJfaWQgPSBkaXJfcGF0
aCArICIvX19kaXJfXyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2lk
ID0gIl9fZGlyX18iCi0gICAgICAgICAgICBkaXJfaWQgPSBpbnRlcm4oKHRlc3RfbWFuaWZlc3Qu
dXJsX2Jhc2UgKyBkaXJfaWQpLmxzdHJpcCgiLyIpLmVuY29kZSgidXRmOCIpKQotICAgICAgICAg
ICAgaWYgZGlyX2lkIG5vdCBpbiBpZF90ZXN0X21hcDoKLSAgICAgICAgICAgICAgICB0ZXN0X2Zp
bGVfZGF0YSA9IFRlc3RGaWxlRGF0YShpbnRlcm4odGVzdF9tYW5pZmVzdC51cmxfYmFzZS5lbmNv
ZGUoInV0ZjgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXSkKLSAgICAgICAgICAgICAgICBpZF90ZXN0X21hcFtkaXJfaWRdID0gdGVzdF9maWxlX2Rh
dGEKLSAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aCBvciBkaXJfcGF0aCBpbiBpZF90ZXN0X21h
cDoKKyAgICAgICAgICAgIGRpcl9tZXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsICJf
X2Rpcl9fIikKKyAgICAgICAgICAgIGRpcl9pZCA9ICh0ZXN0X21hbmlmZXN0LnVybF9iYXNlICsg
ZGlyX21ldGFfcGF0aC5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpKS5sc3RyaXAoIi8iKQorICAg
ICAgICAgICAgaWYgZGlyX2lkIGluIGlkX3Rlc3RfbWFwOgorICAgICAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybihlbnN1
cmVfc3RyKHRlc3RfbWFuaWZlc3QudXJsX2Jhc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyX21ldGFfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgaWRfdGVzdF9tYXBbZGlyX2lkXSA9IHRlc3Rf
ZmlsZV9kYXRhCisgICAgICAgICAgICBkaXJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShkaXJfcGF0
aCkKKyAgICAgICAgICAgIGlmIG5vdCBkaXJfcGF0aDoKICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZGlyX3BhdGggPSBkaXJfcGF0aC5yc3BsaXQoIi8iLCAxKVswXSBpZiAiLyIg
aW4gZGlyX3BhdGggZWxzZSAiIgogCiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFwCiAKQEAgLTYxNCw3
ICs2MjcsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgc2VsZi5pdGVt
X3R5cGUgPSBpdGVtX3R5cGUKICAgICAgICAgc2VsZi50ZXN0X3BhdGggPSB0ZXN0X3BhdGgKICAg
ICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFfcGF0aAotICAgICAgICBzZWxmLnRl
c3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIpKSBmb3IgaXRlbSBpbiB0ZXN0c30K
KyAgICAgICAgc2VsZi50ZXN0cyA9IHtpbnRlcm4oZW5zdXJlX3N0cihpdGVtLmlkKSkgZm9yIGl0
ZW0gaW4gdGVzdHN9CiAgICAgICAgIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZSA9IEZhbHNlCiAgICAg
ICAgIHNlbGYuZGF0YSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QoUGFja2VkUmVz
dWx0TGlzdCkpCiAKQEAgLTY1NSwxMSArNjY4LDExIEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmpl
Y3QpOgogICAgICAgICAjIFJldHVybiBzdWJ0ZXN0IG5vZGVzIHByZXNlbnQgaW4gdGhlIGV4cGVj
dGVkIGZpbGUsIGJ1dCBtaXNzaW5nIGZyb20gdGhlIGRhdGEKICAgICAgICAgcnYgPSBbXQogCi0g
ICAgICAgIGZvciB0ZXN0X2lkLCBzdWJ0ZXN0cyBpbiBzZWxmLmRhdGEuaXRlcml0ZW1zKCk6Ci0g
ICAgICAgICAgICB0ZXN0ID0gZXhwZWN0ZWQuZ2V0X3Rlc3QodGVzdF9pZC5kZWNvZGUoInV0Zjgi
KSkKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEp
OgorICAgICAgICAgICAgdGVzdCA9IGV4cGVjdGVkLmdldF90ZXN0KGVuc3VyZV90ZXh0KHRlc3Rf
aWQpKQogICAgICAgICAgICAgaWYgbm90IHRlc3Q6CiAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNvZGUoInV0ZjgiKSBmb3Ig
aXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90IE5vbmUpCisgICAgICAg
ICAgICBzZWVuX3N1YnRlc3RzID0gc2V0KGVuc3VyZV90ZXh0KGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJrZXlzKHN1YnRlc3RzKSBpZiBpdGVtIGlzIG5vdCBOb25lKQogICAgICAgICAgICAgbWlzc2lu
Z19zdWJ0ZXN0cyA9IHNldCh0ZXN0LnN1YnRlc3RzLmtleXMoKSkgLSBzZWVuX3N1YnRlc3RzCiAg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBtaXNzaW5nX3N1YnRlc3RzOgogICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3N1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KGl0ZW0pCkBAIC02NzMsNiArNjg2
LDI5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBydgog
CisgICAgZGVmIGZpbHRlcl91bmtub3duX3Byb3BzKHNlbGYsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBz
dWJ0ZXN0cyk6CisgICAgICAgICMgUmVtb3ZlIHN1YnRlc3RzIHdoaWNoIGhhdmUgc29tZSBjb25k
aXRpb25zIHRoYXQgYXJlbid0IGluIHVwZGF0ZV9wcm9wZXJ0aWVzCisgICAgICAgICMgc2luY2Ug
cmVtb3ZpbmcgdGhlc2UgbWF5IGJlIGluYXBwcm9wcmlhdGUKKyAgICAgICAgdG9wX2xldmVsX3By
b3BzLCBkZXBlbmRlbnRfcHJvcHMgPSB1cGRhdGVfcHJvcGVydGllcworICAgICAgICBhbGxfcHJv
cGVydGllcyA9IHNldCh0b3BfbGV2ZWxfcHJvcHMpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJ2
YWx1ZXMoZGVwZW5kZW50X3Byb3BzKToKKyAgICAgICAgICAgIGFsbF9wcm9wZXJ0aWVzIHw9IHNl
dChpdGVtKQorCisgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgZm9yIHN1YnRlc3QgaW4g
c3VidGVzdHM6CisgICAgICAgICAgICBpbmNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgZm9yIGtl
eSwgXyBpbiBzdWJ0ZXN0Lml0ZXJfcHJvcGVydGllcygpOgorICAgICAgICAgICAgICAgIGNvbmRp
dGlvbnMgPSBzdWJ0ZXN0LmdldF9jb25kaXRpb25zKGtleSkKKyAgICAgICAgICAgICAgICBmb3Ig
Y29uZGl0aW9uIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25k
aXRpb24udmFyaWFibGVzLmlzc3Vic2V0KGFsbF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiBub3QgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGlmIGluY2x1ZGU6CisgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCiAgICAgZGVmIHVwZGF0ZShz
ZWxmLCBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGUsIHVwZGF0ZV9wcm9wZXJ0aWVzLAogICAgICAg
ICAgICAgICAgZnVsbF91cGRhdGU9RmFsc2UsIGRpc2FibGVfaW50ZXJtaXR0ZW50PU5vbmUsIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsCiAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0
ZW50PUZhbHNlKToKQEAgLTY4Nyw2ICs3MjMsNyBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0
KToKIAogICAgICAgICBpZiBmdWxsX3VwZGF0ZToKICAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxm
Lm9ycGhhbl9zdWJ0ZXN0cyhleHBlY3RlZCkKKyAgICAgICAgICAgIG9ycGhhbnMgPSBzZWxmLmZp
bHRlcl91bmtub3duX3Byb3BzKHVwZGF0ZV9wcm9wZXJ0aWVzLCBvcnBoYW5zKQogCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBvcnBoYW5zOgogICAgICAg
ICAgICAgICAgIHJldHVybgpAQCAtNzA0LDkgKzc0MSw5IEBAIGNsYXNzIFRlc3RGaWxlRGF0YShv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkLmdldF90ZXN0KHRl
c3RfaWQpCiAgICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRdID0gdGVzdF9leHBl
Y3RlZAogCi0gICAgICAgIGZvciB0ZXN0X2lkLCB0ZXN0X2RhdGEgaW4gc2VsZi5kYXRhLml0ZXJp
dGVtcygpOgotICAgICAgICAgICAgdGVzdF9pZCA9IHRlc3RfaWQuZGVjb2RlKCJ1dGY4IikKLSAg
ICAgICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gdGVzdF9kYXRhLml0ZXJp
dGVtcygpOgorICAgICAgICBmb3IgdGVzdF9pZCwgdGVzdF9kYXRhIGluIGl0ZXJpdGVtcyhzZWxm
LmRhdGEpOgorICAgICAgICAgICAgdGVzdF9pZCA9IGVuc3VyZV9zdHIodGVzdF9pZCkKKyAgICAg
ICAgICAgIGZvciBzdWJ0ZXN0X2lkLCByZXN1bHRzX2xpc3QgaW4gaXRlcml0ZW1zKHRlc3RfZGF0
YSk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZvLCB2YWx1ZSBpbiByZXN1bHRz
X2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGRpcmVjdG9yeSBtZXRh
ZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lkIGlzIE5vbmUgYW5kIHRlc3Rf
aWQuZW5kc3dpdGgoIl9fZGlyX18iKToKQEAgLTcyMiw4ICs3NTksNyBAQCBjbGFzcyBUZXN0Rmls
ZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQK
ICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2Uoc3VidGVzdF9pZCwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5kZWNvZGUoInV0ZjgiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3VidGVzdF9pZCA9IGVuc3VyZV90ZXh0KHN1YnRlc3RfaWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpdGVtX2V4cGVjdGVkID0gdGVzdF9leHBlY3RlZC5nZXRfc3VidGVzdChzdWJ0
ZXN0X2lkKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHByb3AgPT0gInN0YXR1cyI6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9jZXNzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhhMmI4OTRjYjc0ZDRlYzA5MTkzMWJmNDE3YzkyZDViZWEwNzFjYWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvY2Vzcy5weQpAQCAtMCwwICsxLDExIEBA
CitpbXBvcnQgc3lzCisKK2ltcG9ydCBzaXgKKworCitkZWYgY2FzdF9lbnYoZW52KToKKyAgICAi
IiJFbmNvZGUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YWx1ZXMgYXMgdGhlIGFwcHJvcHJpYXRlIHR5
cGUgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24KKyAgICBUaGlzIGFzc3VtZXMgdGhhdCBhbGwgdGhl
IGRhdGEgaXMgb3IgY2FuIGJlIHJlcHJlc2VudGVkIGFzIFVURjgiIiIKKworICAgIGVudl90eXBl
ID0gc2l4LmVuc3VyZV9iaW5hcnkgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgZWxzZSBzaXgu
ZW5zdXJlX3N0cgorICAgIHJldHVybiB7ZW52X3R5cGUoa2V5KTogZW52X3R5cGUodmFsdWUpIGZv
ciBrZXksIHZhbHVlIGluIHNpeC5pdGVyaXRlbXMoZW52KX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9wcm9kdWN0cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9wcm9kdWN0cy5weQppbmRleCBlMzExNzA0
MjcwOWY5OWY0ZTA0NDNkYzBkZmFmNTYxYWQwYjU0OGIwLi5hYmQ4NDA5NGJiMzNkYmQxM2IzNTk0
YTdhY2JlODQ2NzUxMmE5OWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGlt
cG9ydGxpYgogaW1wb3J0IGltcAorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBmcm9tIC5i
cm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgUHJv
ZHVjdChvYmplY3QpOgogICAgICAgICBzZWxmLmdldF90aW1lb3V0X211bHRpcGxpZXIgPSBnZXRh
dHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0pCiAKICAgICAgICAgc2VsZi5l
eGVjdXRvcl9jbGFzc2VzID0ge30KLSAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xzX25hbWUgaW4g
ZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIHRlc3RfdHlwZSwgY2xz
X25hbWUgaW4gaXRlcml0ZW1zKGRhdGFbImV4ZWN1dG9yIl0pOgogICAgICAgICAgICAgY2xzID0g
Z2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQogICAgICAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFz
c2VzW3Rlc3RfdHlwZV0gPSBjbHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggYzA2ZjdlNWU5ZDZiMTBiNGU2
MTljOTVhNjI0MTdlNTJhNTk2YmU1My4uM2Y4OTg5NzI5ZmRlMGVlNDVjZjc4M2JjNjk4MzA3ZTM4
Yzg0NGQ5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC01LDYgKzUsNyBAQCBpbXBvcnQgaW8KIGltcG9ydCBv
cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCiBm
cm9tIG1vemxvZyBpbXBvcnQgcmVhZGVyCiBmcm9tIG1vemxvZy5mb3JtYXR0ZXJzIGltcG9ydCBK
U09ORm9ybWF0dGVyCkBAIC0xNDAsMTAgKzE0MSwxMCBAQCBkZWYgcHJvY2Vzc19yZXN1bHRzKGxv
ZywgaXRlcmF0aW9ucyk6CiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRlci5o
YW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhhbmRs
ZXIucmVzdWx0cwotICAgIGZvciB0ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMo
KToKKyAgICBmb3IgdGVzdF9uYW1lLCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAg
ICAgaWYgaXNfaW5jb25zaXN0ZW50KHRlc3RbInN0YXR1cyJdLCBpdGVyYXRpb25zKToKICAgICAg
ICAgICAgIGluY29uc2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgTm9uZSwgdGVzdFsic3RhdHVz
Il0sIFtdKSkKLSAgICAgICAgZm9yIHN1YnRlc3RfbmFtZSwgc3VidGVzdCBpbiB0ZXN0WyJzdWJ0
ZXN0cyJdLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGlu
IGl0ZXJpdGVtcyh0ZXN0WyJzdWJ0ZXN0cyJdKToKICAgICAgICAgICAgIGlmIGlzX2luY29uc2lz
dGVudChzdWJ0ZXN0WyJzdGF0dXMiXSwgaXRlcmF0aW9ucyk6CiAgICAgICAgICAgICAgICAgaW5j
b25zaXN0ZW50LmFwcGVuZCgodGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHN1YnRlc3RbInN0YXR1
cyJdLCBzdWJ0ZXN0WyJtZXNzYWdlcyJdKSkKIApAQCAtMjA4LDcgKzIwOSw3IEBAIGRlZiB3cml0
ZV9yZXN1bHRzKGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVyPU5vbmUsIHVzZV9k
ZXRhaWxzPUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3RzIiBpZiBsZW4ocmVzdWx0cykgPiAxCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRlc3QiKSkKIAotICAgIGZvciB0
ZXN0X25hbWUsIHRlc3QgaW4gcmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICBmb3IgdGVzdF9uYW1l
LCB0ZXN0IGluIGl0ZXJpdGVtcyhyZXN1bHRzKToKICAgICAgICAgYmFzZXVybCA9ICJodHRwOi8v
dzNjLXRlc3Qub3JnL3N1Ym1pc3Npb25zIgogICAgICAgICBpZiAiaHR0cHMiIGluIG9zLnBhdGgu
c3BsaXRleHQodGVzdF9uYW1lKVswXS5zcGxpdCgiLiIpWzE6XToKICAgICAgICAgICAgIGJhc2V1
cmwgPSAiaHR0cHM6Ly93M2MtdGVzdC5vcmcvc3VibWlzc2lvbnMiCkBAIC0yMzYsNyArMjM3LDcg
QEAgZGVmIHdyaXRlX3Jlc3VsdHMobG9nLCByZXN1bHRzLCBpdGVyYXRpb25zLCBwcl9udW1iZXI9
Tm9uZSwgdXNlX2RldGFpbHM9RmFsc2UpOgogCiAKIGRlZiBydW5fc3RlcChsb2dnZXIsIGl0ZXJh
dGlvbnMsIHJlc3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFzLCAqKmt3YXJncyk6
Ci0gICAgaW1wb3J0IHdwdHJ1bm5lcgorICAgIGZyb20gLiBpbXBvcnQgd3B0cnVubmVyCiAgICAg
a3dhcmdzID0gY29weS5kZWVwY29weShrd2FyZ3MpCiAKICAgICBpZiByZXN0YXJ0X2FmdGVyX2l0
ZXJhdGlvbjoKQEAgLTI3OCw3ICsyNzksNyBAQCBkZWYgZ2V0X3N0ZXBzKGxvZ2dlciwgcmVwZWF0
X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBrd2FyZ3NfZXh0cmFzKToKICAgICBmb3Iga3dhcmdzX2V4
dHJhIGluIGt3YXJnc19leHRyYXM6CiAgICAgICAgIGlmIGt3YXJnc19leHRyYToKICAgICAgICAg
ICAgIGZsYWdzX3N0cmluZyA9ICIgd2l0aCBmbGFncyAlcyIgJSAiICIuam9pbigKLSAgICAgICAg
ICAgICAgICAiJXM9JXMiICUgaXRlbSBmb3IgaXRlbSBpbiBrd2FyZ3NfZXh0cmEuaXRlcml0ZW1z
KCkpCisgICAgICAgICAgICAgICAgIiVzPSVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gaXRlcml0ZW1z
KGt3YXJnc19leHRyYSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmbGFnc19zdHJpbmcg
PSAiIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGxvYWRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5CmluZGV4IGZhNTRjYTM2MTU3NjMxOGNiMzVlYzcxNmExYTE1OWJk
YjUzMmU2YzguLjNhMjZlZmM1NTQyMTFhNTI0OGE3OTA5MDlkOTk4OTNhZmU5ZmY2NzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
bG9hZGVyLnB5CkBAIC01LDYgKzUsOCBAQCBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJh
Y3RtZXRob2QKIGZyb20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQogZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBv
cnQgUXVldWUKK2Zyb20gc2l4IGltcG9ydCBlbnN1cmVfYmluYXJ5LCBpdGVyaXRlbXMKK2Zyb20g
c2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQog
ZnJvbSAuIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkCkBAIC0xNSw2ICsxNyw3IEBAIG1hbmlmZXN0
ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93bmxvYWRfZnJvbV9naXRodWIgPSBO
b25lCiAKKwogZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cygpOgogICAgICMgVGhpcyByZWxpZXMgb24g
YW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIGhhdmluZyBzZXQgdGhlIHN5cy5wYXRoIGNvcnJlY3Rs
eSA6KAogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBkb3dubG9hZF9mcm9t
X2dpdGh1YgpAQCAtMjQsMTIgKzI3LDEzIEBAIGRlZiBkb19kZWxheWVkX2ltcG9ydHMoKToKIAog
CiBjbGFzcyBUZXN0Q2h1bmtlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3Rh
bF9jaHVua3MsIGNodW5rX251bWJlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsX2No
dW5rcywgY2h1bmtfbnVtYmVyLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYudG90YWxfY2h1bmtz
ID0gdG90YWxfY2h1bmtzCiAgICAgICAgIHNlbGYuY2h1bmtfbnVtYmVyID0gY2h1bmtfbnVtYmVy
CiAgICAgICAgIGFzc2VydCBzZWxmLmNodW5rX251bWJlciA8PSBzZWxmLnRvdGFsX2NodW5rcwog
ICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRfbG9nZ2VyKCkKICAg
ICAgICAgYXNzZXJ0IHNlbGYubG9nZ2VyCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCkBAIC00MCw3ICs0NCw3IEBAIGNsYXNzIFVuY2h1bmtlZChUZXN0Q2h1bmtl
cik6CiAgICAgICAgIFRlc3RDaHVua2VyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykK
ICAgICAgICAgYXNzZXJ0IHNlbGYudG90YWxfY2h1bmtzID09IDEKIAotICAgIGRlZiBfX2NhbGxf
XyhzZWxmLCBtYW5pZmVzdCk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG1hbmlmZXN0LCAqKmt3
YXJncyk6CiAgICAgICAgIGZvciBpdGVtIGluIG1hbmlmZXN0OgogICAgICAgICAgICAgeWllbGQg
aXRlbQogCkBAIC00OSw3ICs1Myw3IEBAIGNsYXNzIEhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToK
ICAgICBkZWYgX19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9
IHNlbGYuY2h1bmtfbnVtYmVyIC0gMQogICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgs
IHRlc3RzIGluIG1hbmlmZXN0OgotICAgICAgICAgICAgaCA9IGludChoYXNobGliLm1kNSh0ZXN0
X3BhdGgpLmhleGRpZ2VzdCgpLCAxNikKKyAgICAgICAgICAgIGggPSBpbnQoaGFzaGxpYi5tZDUo
ZW5zdXJlX2JpbmFyeSh0ZXN0X3BhdGgpKS5oZXhkaWdlc3QoKSwgMTYpCiAgICAgICAgICAgICBp
ZiBoICUgc2VsZi50b3RhbF9jaHVua3MgPT0gY2h1bmtfaW5kZXg6CiAgICAgICAgICAgICAgICAg
eWllbGQgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzCiAKQEAgLTYyLDggKzY2LDEzIEBAIGNs
YXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVua2VyKToKICAgICAiIiIKICAgICBkZWYg
X19jYWxsX18oc2VsZiwgbWFuaWZlc3QpOgogICAgICAgICBjaHVua19pbmRleCA9IHNlbGYuY2h1
bmtfbnVtYmVyIC0gMQorICAgICAgICBkZXB0aCA9IHNlbGYua3dhcmdzLmdldCgiZGVwdGgiKQog
ICAgICAgICBmb3IgdGVzdF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzIGluIG1hbmlmZXN0OgotICAg
ICAgICAgICAgaCA9IGludChoYXNobGliLm1kNShvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKSku
aGV4ZGlnZXN0KCksIDE2KQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAgICAgICAgICAgICAg
aGFzaF9wYXRoID0gb3MucGF0aC5zZXAuam9pbihvcy5wYXRoLmRpcm5hbWUodGVzdF9wYXRoKS5z
cGxpdChvcy5wYXRoLnNlcCwgZGVwdGgpWzpkZXB0aF0pCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGhhc2hfcGF0aCA9IG9zLnBhdGguZGlybmFtZSh0ZXN0X3BhdGgpCisgICAg
ICAgICAgICBoID0gaW50KGhhc2hsaWIubWQ1KGVuc3VyZV9iaW5hcnkoaGFzaF9wYXRoKSkuaGV4
ZGlnZXN0KCksIDE2KQogICAgICAgICAgICAgaWYgaCAlIHNlbGYudG90YWxfY2h1bmtzID09IGNo
dW5rX2luZGV4OgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0
ZXN0cwogCkBAIC0xMjQsNyArMTMzLDcgQEAgY2xhc3MgTWFuaWZlc3RMb2FkZXIob2JqZWN0KToK
IAogICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICBydiA9IHt9Ci0gICAgICAgIGZvciB1cmxf
YmFzZSwgcGF0aHMgaW4gc2VsZi50ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Ig
dXJsX2Jhc2UsIHBhdGhzIGluIGl0ZXJpdGVtcyhzZWxmLnRlc3RfcGF0aHMpOgogICAgICAgICAg
ICAgbWFuaWZlc3RfZmlsZSA9IHNlbGYubG9hZF9tYW5pZmVzdCh1cmxfYmFzZT11cmxfYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipwYXRocykK
ICAgICAgICAgICAgIHBhdGhfZGF0YSA9IHsidXJsX2Jhc2UiOiB1cmxfYmFzZX0KQEAgLTE1OSw3
ICsxNjgsMTAgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICB0
b3RhbF9jaHVua3M9MSwKICAgICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPTEsCiAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfaHR0cHM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgc2tpcF90aW1l
b3V0PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9xdWljPUZhbHNlLAorICAgICAg
ICAgICAgICAgICBza2lwX3RpbWVvdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNraXBfaW1w
bGVtZW50YXRpb25fc3RhdHVzPU5vbmUsCisgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdz
PU5vbmUpOgogCiAgICAgICAgIHNlbGYudGVzdF90eXBlcyA9IHRlc3RfdHlwZXMKICAgICAgICAg
c2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZvCkBAIC0xNzAsMTYgKzE4MiwyMSBAQCBjbGFzcyBUZXN0
TG9hZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYudGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYu
ZGlzYWJsZWRfdGVzdHMgPSBOb25lCiAgICAgICAgIHNlbGYuaW5jbHVkZV9odHRwcyA9IGluY2x1
ZGVfaHR0cHMKKyAgICAgICAgc2VsZi5pbmNsdWRlX3F1aWMgPSBpbmNsdWRlX3F1aWMKICAgICAg
ICAgc2VsZi5za2lwX3RpbWVvdXQgPSBza2lwX3RpbWVvdXQKKyAgICAgICAgc2VsZi5za2lwX2lt
cGxlbWVudGF0aW9uX3N0YXR1cyA9IHNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzCiAKICAgICAg
ICAgc2VsZi5jaHVua190eXBlID0gY2h1bmtfdHlwZQogICAgICAgICBzZWxmLnRvdGFsX2NodW5r
cyA9IHRvdGFsX2NodW5rcwogICAgICAgICBzZWxmLmNodW5rX251bWJlciA9IGNodW5rX251bWJl
cgogCisgICAgICAgIGlmIGNodW5rZXJfa3dhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBjaHVu
a2VyX2t3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuY2h1bmtlciA9IHsibm9uZSI6IFVuY2h1bmtl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNoIjogSGFzaENodW5rZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGlyX2hhc2giOiBEaXJlY3RvcnlIYXNoQ2h1bmtlcn1bY2h1bmtf
dHlwZV0odG90YWxfY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaHVua19udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipjaHVua2VyX2t3YXJncykKIAogICAg
ICAgICBzZWxmLl90ZXN0X2lkcyA9IE5vbmUKIApAQCAtMjA2LDcgKzIyMyw3IEBAIGNsYXNzIFRl
c3RMb2FkZXIob2JqZWN0KToKICAgICBkZWYgbG9hZF9kaXJfbWV0YWRhdGEoc2VsZiwgdGVzdF9t
YW5pZmVzdCwgbWV0YWRhdGFfcGF0aCwgdGVzdF9wYXRoKToKICAgICAgICAgcnYgPSBbXQogICAg
ICAgICBwYXRoX3BhcnRzID0gb3MucGF0aC5kaXJuYW1lKHRlc3RfcGF0aCkuc3BsaXQob3MucGF0
aC5zZXApCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocGF0aF9wYXJ0cykgKyAxKToKKyAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHBhdGhfcGFydHMpICsgMSk6CiAgICAgICAgICAgICBw
YXRoID0gb3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIG9zLnBhdGguc2VwLmpvaW4ocGF0aF9w
YXJ0c1s6aV0pLCAiX19kaXJfXy5pbmkiKQogICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gc2Vs
Zi5kaXJlY3RvcnlfbWFuaWZlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuZGlyZWN0b3J5X21h
bmlmZXN0c1twYXRoXSA9IG1hbmlmZXN0ZXhwZWN0ZWQuZ2V0X2Rpcl9tYW5pZmVzdChwYXRoLApA
QCAtMjM2LDcgKzI1Myw3IEBAIGNsYXNzIFRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgICAg
IG1hbmlmZXN0X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1zKQogCiAgICAgICAg
IGZvciB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3RfaXRlbXM6Ci0gICAg
ICAgICAgICBtYW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNlW2l0ZXIodGVzdHMp
Lm5leHQoKS51cmxfYmFzZV0KKyAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5pZmVzdHNf
YnlfdXJsX2Jhc2VbbmV4dChpdGVyKHRlc3RzKSkudXJsX2Jhc2VdCiAgICAgICAgICAgICBtZXRh
ZGF0YV9wYXRoID0gc2VsZi5tYW5pZmVzdHNbbWFuaWZlc3RfZmlsZV1bIm1ldGFkYXRhX3BhdGgi
XQogCiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhID0gc2VsZi5s
b2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFkYXRhX3BhdGgsIHRlc3RfcGF0aCkKQEAg
LTI1Miw4ICsyNjksMTIgQEAgY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgICAgICAgICAg
ZW5hYmxlZCA9IG5vdCB0ZXN0LmRpc2FibGVkKCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlu
Y2x1ZGVfaHR0cHMgYW5kIHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0gPT0gImh0dHBzIjoK
ICAgICAgICAgICAgICAgICBlbmFibGVkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
LmluY2x1ZGVfcXVpYyBhbmQgdGVzdC5lbnZpcm9ubWVudFsicXVpYyJdOgorICAgICAgICAgICAg
ICAgIGVuYWJsZWQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5za2lwX3RpbWVvdXQgYW5k
IHRlc3QuZXhwZWN0ZWQoKSA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAgICAgZW5hYmxlZCA9
IEZhbHNlCisgICAgICAgICAgICBpZiBzZWxmLnNraXBfaW1wbGVtZW50YXRpb25fc3RhdHVzIGFu
ZCB0ZXN0LmltcGxlbWVudGF0aW9uX3N0YXR1cygpIGluIHNlbGYuc2tpcF9pbXBsZW1lbnRhdGlv
bl9zdGF0dXM6CisgICAgICAgICAgICAgICAgZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgICAgICBr
ZXkgPSAiZW5hYmxlZCIgaWYgZW5hYmxlZCBlbHNlICJkaXNhYmxlZCIKICAgICAgICAgICAgIHRl
c3RzW2tleV1bdGVzdF90eXBlXS5hcHBlbmQodGVzdCkKIApAQCAtMjg0LDYgKzMwNSwxMCBAQCBj
bGFzcyBUZXN0U291cmNlKG9iamVjdCk6CiAgICAgZGVmIG1ha2VfcXVldWUoY2xzLCB0ZXN0cywg
Kiprd2FyZ3MpOiAgIyBub3FhOiBOODA1CiAgICAgICAgIHBhc3MKIAorICAgIEBhYnN0cmFjdG1l
dGhvZAorICAgIGRlZiB0ZXN0c19ieV9ncm91cChjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5v
cWE6IE44MDUKKyAgICAgICAgcGFzcworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdyb3Vw
X21ldGFkYXRhKGNscywgc3RhdGUpOgogICAgICAgICByZXR1cm4geyJzY29wZSI6ICIvIn0KQEAg
LTMyMiwxNCArMzQ3LDI1IEBAIGNsYXNzIEdyb3VwZWRTb3VyY2UoVGVzdFNvdXJjZSk6CiAgICAg
ICAgICAgICB0ZXN0X3F1ZXVlLnB1dChpdGVtKQogICAgICAgICByZXR1cm4gdGVzdF9xdWV1ZQog
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlc3RzX2J5X2dyb3VwKGNscywgdGVzdHMsICoq
a3dhcmdzKToKKyAgICAgICAgZ3JvdXBzID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICAgICAgc3Rh
dGUgPSB7fQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0
czoKKyAgICAgICAgICAgIGlmIGNscy5uZXdfZ3JvdXAoc3RhdGUsIHRlc3QsICoqa3dhcmdzKToK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2xzLmdyb3VwX21ldGFkYXRhKHN0YXRlKVsnc2Nv
cGUnXQorICAgICAgICAgICAgZ3JvdXBzW2N1cnJlbnRdLmFwcGVuZCh0ZXN0LmlkKQorICAgICAg
ICByZXR1cm4gZ3JvdXBzCisKIAogY2xhc3MgU2luZ2xlVGVzdFNvdXJjZShUZXN0U291cmNlKToK
ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbWFrZV9xdWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJn
cyk6CiAgICAgICAgIHRlc3RfcXVldWUgPSBRdWV1ZSgpCiAgICAgICAgIHByb2Nlc3NlcyA9IGt3
YXJnc1sicHJvY2Vzc2VzIl0KLSAgICAgICAgcXVldWVzID0gW2RlcXVlKFtdKSBmb3IgXyBpbiB4
cmFuZ2UocHJvY2Vzc2VzKV0KLSAgICAgICAgbWV0YWRhdGFzID0gW2Nscy5ncm91cF9tZXRhZGF0
YShOb25lKSBmb3IgXyBpbiB4cmFuZ2UocHJvY2Vzc2VzKV0KKyAgICAgICAgcXVldWVzID0gW2Rl
cXVlKFtdKSBmb3IgXyBpbiByYW5nZShwcm9jZXNzZXMpXQorICAgICAgICBtZXRhZGF0YXMgPSBb
Y2xzLmdyb3VwX21ldGFkYXRhKE5vbmUpIGZvciBfIGluIHJhbmdlKHByb2Nlc3NlcyldCiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgaWR4ID0gaGFzaCh0ZXN0LmlkKSAl
IHByb2Nlc3NlcwogICAgICAgICAgICAgZ3JvdXAgPSBxdWV1ZXNbaWR4XQpAQCAtMzQyLDYgKzM3
OCwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0U291cmNlKFRlc3RTb3VyY2UpOgogCiAgICAgICAgIHJl
dHVybiB0ZXN0X3F1ZXVlCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVzdHNfYnlfZ3Jv
dXAoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4ge2Nscy5ncm91cF9tZXRh
ZGF0YShOb25lKVsnc2NvcGUnXTogW3QuaWQgZm9yIHQgaW4gdGVzdHNdfQorCiAKIGNsYXNzIFBh
dGhHcm91cGVkU291cmNlKEdyb3VwZWRTb3VyY2UpOgogICAgIEBjbGFzc21ldGhvZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weQppbmRleCA3YjZiZjU3ZDE1OTkyOWNkY2E4N2U5Y2EzMjE2MTA0MDFiMzcxNjZhLi40OWEz
NTI1ZTg4M2QxNWEwNTkwMjJhNTQ5MTFlZWNmNTMxZDgzNmZmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHJ1bm5lci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQpAQCAt
MTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhlY3V0b3IucnVuX3Rlc3QodGVzdCkKICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmNyaXRpY2FsKHRyYWNl
YmFjay5mb3JtYXRfZXhjKCkpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJh
Y2suZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiB3YWl0KHNlbGYp
OgpAQCAtMTU4LDcgKzE1OCw3IEBAIGRlZiBzdGFydF9ydW5uZXIocnVubmVyX2NvbW1hbmRfcXVl
dWUsIHJ1bm5lcl9yZXN1bHRfcXVldWUsCiAgICAgd2l0aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dn
ZXIsIGNhcHR1cmVfc3RkaW8pOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBicm93c2VyID0g
ZXhlY3V0b3JfYnJvd3Nlcl9jbHMoKipleGVjdXRvcl9icm93c2VyX2t3YXJncykKLSAgICAgICAg
ICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfY2xzKGJyb3dzZXIsICoqZXhlY3V0b3Jfa3dhcmdzKQor
ICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9jbHMobG9nZ2VyLCBicm93c2VyLCAqKmV4
ZWN1dG9yX2t3YXJncykKICAgICAgICAgICAgIHdpdGggVGVzdFJ1bm5lcihsb2dnZXIsIHJ1bm5l
cl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRvcikgYXMgcnVubmVy
OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcnVubmVyLnJ1bigp
CkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHRlc3RfcXVldWUsIHRl
c3Rfc291cmNlX2NscywgYnJvd3Nlcl9jbHMsIGJyb3dzZXJfa3dhcmdzLAogICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9jbHMsIGV4ZWN1dG9yX2t3YXJncywgc3RvcF9mbGFnLCByZXJ1bj0xLCBw
YXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVj
dGVkPUZhbHNlLCByZXN0YXJ0X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLAot
ICAgICAgICAgICAgICAgICBjYXB0dXJlX3N0ZGlvPVRydWUpOgorICAgICAgICAgICAgICAgICBj
YXB0dXJlX3N0ZGlvPVRydWUsIHJlY29yZGluZz1Ob25lKToKICAgICAgICAgIiIiVGhyZWFkIHRo
YXQgb3ducyBhIHNpbmdsZSBUZXN0UnVubmVyIHByb2Nlc3MgYW5kIGFueSBwcm9jZXNzZXMgcmVx
dWlyZWQKICAgICAgICAgYnkgdGhlIFRlc3RSdW5uZXIgKGUuZy4gdGhlIEZpcmVmb3ggYmluYXJ5
KS4KIApAQCAtMzE4LDYgKzMxOCw4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8gPSBkZWJ1Z19pbmZvCiAKICAgICAg
ICAgc2VsZi5tYW5hZ2VyX251bWJlciA9IG5leHRfbWFuYWdlcl9udW1iZXIoKQorICAgICAgICBh
c3NlcnQgcmVjb3JkaW5nIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCiAKICAgICAgICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQogICAgICAgICBz
ZWxmLnJlbW90ZV9xdWV1ZSA9IFF1ZXVlKCkKQEAgLTM1MCw2ICszNTIsNyBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgbWF5IGFsc28gaGF2ZSBh
IHN0b3AgZmxhZyBzZXQgYnkgdGhlIG1haW4gdGhyZWFkIGluZGljYXRpbmcKICAgICAgICAgdGhh
dCB0aGUgbWFuYWdlciBzaG91bGQgc2h1dCBkb3duIHRoZSBuZXh0IHRpbWUgdGhlIGV2ZW50IGxv
b3AKICAgICAgICAgc3BpbnMuIiIiCisgICAgICAgIHNlbGYucmVjb3JkaW5nLnNldChbInRlc3Ry
dW5uZXIiLCAic3RhcnR1cCJdKQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWRsb2cu
U3RydWN0dXJlZExvZ2dlcihzZWxmLnN1aXRlX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5icm93
c2VyX2NscyhzZWxmLmxvZ2dlciwgKipzZWxmLmJyb3dzZXJfa3dhcmdzKSBhcyBicm93c2VyOgog
ICAgICAgICAgICAgc2VsZi5icm93c2VyID0gQnJvd3Nlck1hbmFnZXIoc2VsZi5sb2dnZXIsCkBA
IC0zOTAsOCArMzkzLDggQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3RhdGUgPSBuZXdfc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIm5ldyBzdGF0ZTogJXMiICUgc2VsZi5zdGF0ZS5fX2NsYXNzX18uX19uYW1lX18p
Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlc3RSdW5uZXJNYW5hZ2Vy
IG1haW4gbG9vcCB0ZXJtaW5hdGluZywgc3RhcnRpbmcgY2xlYW51cCIpCkBAIC00NjcsNiArNDcw
LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKICAgICBk
ZWYgc3RhcnRfaW5pdChzZWxmKToKICAgICAgICAgdGVzdCwgdGVzdF9ncm91cCwgZ3JvdXBfbWV0
YWRhdGEgPSBzZWxmLmdldF9uZXh0X3Rlc3QoKQorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImluaXQiXSkKICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIFJ1bm5lck1hbmFnZXJTdGF0ZS5zdG9wKCkKICAgICAgICAgZWxzZToKQEAg
LTU1Niw2ICs1NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFk
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnN0YXRlLnRlc3RfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5zdGF0ZS5ncm91cF9tZXRhZGF0YSkKIAorICAgICAgICBzZWxmLnJl
Y29yZGluZy5zZXQoWyJ0ZXN0cnVubmVyIiwgInRlc3QiXSArIHNlbGYuc3RhdGUudGVzdC5pZC5z
cGxpdCgiLyIpWzE6XSkKICAgICAgICAgc2VsZi5sb2dnZXIudGVzdF9zdGFydChzZWxmLnN0YXRl
LnRlc3QuaWQpCiAgICAgICAgIGlmIHNlbGYucmVydW4gPiAxOgogICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiUnVuICVkLyVkIiAlIChzZWxmLnJ1bl9jb3VudCwgc2VsZi5yZXJ1bikpCkBA
IC02NzIsNiArNjc3LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdWJ0ZXN0X3VuZXhwZWN0ZWQg
b3IgaXNfdW5leHBlY3RlZCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucmVzdGFydF9vbl91bmV4cGVjdGVkKSkKIAorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQo
WyJ0ZXN0cnVubmVyIiwgImFmdGVyLXRlc3QiXSkKICAgICAgICAgaWYgKG5vdCBmaWxlX3Jlc3Vs
dC5zdGF0dXMgPT0gIkNSQVNIIiBhbmQKICAgICAgICAgICAgIHNlbGYucGF1c2VfYWZ0ZXJfdGVz
dCBvcgogICAgICAgICAgICAgKHNlbGYucGF1c2Vfb25fdW5leHBlY3RlZCBhbmQgKHN1YnRlc3Rf
dW5leHBlY3RlZCBvciBpc191bmV4cGVjdGVkKSkpOgpAQCAtNzIwLDYgKzcyNiw3IEBAIGNsYXNz
IFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAgZGVmIHN0b3BfcnVu
bmVyKHNlbGYsIGZvcmNlPUZhbHNlKToKICAgICAgICAgIiIiU3RvcCB0aGUgVGVzdFJ1bm5lciBh
bmQgdGhlIGJyb3dzZXIgYmluYXJ5LiIiIgorICAgICAgICBzZWxmLnJlY29yZGluZy5zZXQoWyJ0
ZXN0cnVubmVyIiwgInN0b3BfcnVubmVyIl0pCiAgICAgICAgIGlmIHNlbGYudGVzdF9ydW5uZXJf
cHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTczOCw2ICs3NDUsNyBAQCBj
bGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5y
ZW1vdGVfcXVldWUuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUgPSBOb25lCiAg
ICAgICAgIHNlbGYucmVtb3RlX3F1ZXVlID0gTm9uZQorICAgICAgICBzZWxmLnJlY29yZGluZy5w
YXVzZSgpCiAKICAgICBkZWYgZW5zdXJlX3J1bm5lcl9zdG9wcGVkKHNlbGYpOgogICAgICAgICBz
ZWxmLmxvZ2dlci5kZWJ1ZygiZW5zdXJlX3J1bm5lcl9zdG9wcGVkIikKQEAgLTgyNSw3ICs4MzMs
OCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAgcGF1c2Vf
b25fdW5leHBlY3RlZD1GYWxzZSwKICAgICAgICAgICAgICAgICAgcmVzdGFydF9vbl91bmV4cGVj
dGVkPVRydWUsCiAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRp
bz1UcnVlLAorICAgICAgICAgICAgICAgICByZWNvcmRpbmc9Tm9uZSk6CiAgICAgICAgIHNlbGYu
c3VpdGVfbmFtZSA9IHN1aXRlX25hbWUKICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAg
ICBzZWxmLnRlc3Rfc291cmNlX2NscyA9IHRlc3Rfc291cmNlX2NscwpAQCAtODQwLDYgKzg0OSw4
IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3QpOgogICAgICAgICBzZWxmLmRlYnVnX2luZm8g
PSBkZWJ1Z19pbmZvCiAgICAgICAgIHNlbGYucmVydW4gPSByZXJ1bgogICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8gPSBjYXB0dXJlX3N0ZGlvCisgICAgICAgIHNlbGYucmVjb3JkaW5nID0gcmVj
b3JkaW5nCisgICAgICAgIGFzc2VydCByZWNvcmRpbmcgaXMgbm90IE5vbmUKIAogICAgICAgICBz
ZWxmLnBvb2wgPSBzZXQoKQogICAgICAgICAjIEV2ZW50IHRoYXQgaXMgcG9sbGVkIGJ5IHRocmVh
ZHMgc28gdGhhdCB0aGV5IGNhbiBncmFjZWZ1bGx5IGV4aXQgaW4gdGhlIGZhY2UKQEAgLTg3Nyw3
ICs4ODgsOCBAQCBjbGFzcyBNYW5hZ2VyR3JvdXAob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19p
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwdHVy
ZV9zdGRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNh
cHR1cmVfc3RkaW8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
b3JkaW5nPXNlbGYucmVjb3JkaW5nKQogICAgICAgICAgICAgbWFuYWdlci5zdGFydCgpCiAgICAg
ICAgICAgICBzZWxmLnBvb2wuYWRkKG1hbmFnZXIpCiAgICAgICAgIHNlbGYud2FpdCgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdGVzdF9zYXVjZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5CmluZGV4IDA2YTU2NDFkNTBmYmJh
ZWQ0ZGU5ZGY1MTFjNTY3NzUzZWYxYTMyNmQuLmUxZTE4ZWM1ZTljZDIxZGFhODlmOTE3NjkwYWQx
Mjg1MmY5YTI4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0
X3NhdWNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5
CkBAIC0xLDkgKzEsMTAgQEAKIGltcG9ydCBzeXMKLWZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwg
ZGlybmFtZQogCiBpbXBvcnQgbW9jawogaW1wb3J0IHB5dGVzdAogCitmcm9tIG9zLnBhdGggaW1w
b3J0IGpvaW4sIGRpcm5hbWUKKwogc3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2Zp
bGVfXyksICIuLiIsICIuLiIsICIuLiIpKQogCiBzYXVjZSA9IHB5dGVzdC5pbXBvcnRvcnNraXAo
IndwdHJ1bm5lci5icm93c2Vycy5zYXVjZSIpCkBAIC05NSw3ICs5Niw2IEBAIGRlZiB0ZXN0X3Nh
dWNlY29ubmVjdF9jbGVhbnVwKCk6CiAKICAgICAgICAgc2xlZXAuYXNzZXJ0X2NhbGxlZCgpCiAK
LQogZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfbmV2ZXJfcmVhZHkoKToKICAgICB3aXRo
IG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLlNhdWNlQ29ubmVjdCwgInVwbG9hZF9wcmVydW5fZXhl
YyIpLFwKICAgICAgICAgICAgIG1vY2sucGF0Y2gub2JqZWN0KHNhdWNlLnN1YnByb2Nlc3MsICJQ
b3BlbiIpIGFzIFBvcGVuLFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4
cGVjdGVkdHJlZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2V4cGVjdGVkdHJlZS5weQpp
bmRleCAyMzA4YmU5NTkwZTkwMDRmNDFhNDkyNjgyZDE4N2E3YjRmYzU3MjMxLi5kNzEyMzdhNDJk
YWQ1OGM2OWI2ODZlNjA0MGI2NWY0MDA2NGM5NDM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF9leHBlY3RlZHRyZWUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
ZXhwZWN0ZWR0cmVlLnB5CkBAIC0xLDcgKzEsMyBAQAotaW1wb3J0IHN5cwotCi1pbXBvcnQgcHl0
ZXN0Ci0KIGZyb20gLi4gaW1wb3J0IGV4cGVjdGVkdHJlZSwgbWV0YWRhdGEKIGZyb20gY29sbGVj
dGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKQEAgLTMyLDggKzI4LDYgQEAgZGVmIHJlc3VsdHNf
b2JqZWN0KHJlc3VsdHMpOgogICAgIHJldHVybiByZXN1bHRzX29iagogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMCgp
OgogICAgICMgUGFzcyBpZiBkZWJ1ZwogICAgIHJlc3VsdHMgPSBbKHsib3MiOiAibGludXgiLCAi
dmVyc2lvbiI6ICIxOC4wNCIsICJkZWJ1ZyI6IFRydWV9LCAiRkFJTCIpLApAQCAtNTMsOCArNDcs
NiBAQCBkZWYgdGVzdF9idWlsZF90cmVlXzAoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUp
ID09IGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfYnVpbGRfdHJlZV8xKCk6CiAgICAgIyBQYXNzIGlmIGxpbnV4IG9yIHdp
bmRvd3MgMTAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAiMTgu
MDQiLCAiZGVidWciOiBUcnVlfSwgIlBBU1MiKSwKQEAgLTc3LDggKzY5LDYgQEAgZGVmIHRlc3Rf
YnVpbGRfdHJlZV8xKCk6CiAgICAgYXNzZXJ0IGR1bXBfdHJlZSh0cmVlKSA9PSBleHBlY3RlZAog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X2J1aWxkX3RyZWVfMigpOgogICAgICMgRmFpbHMgaW4gYSBzcGVjaWZpYyBjb25maWd1cmF0aW9u
CiAgICAgcmVzdWx0cyA9IFsoeyJvcyI6ICJsaW51eCIsICJ2ZXJzaW9uIjogIjE4LjA0IiwgImRl
YnVnIjogVHJ1ZX0sICJQQVNTIiksCkBAIC0xMDQsOCArOTQsNiBAQCBkZWYgdGVzdF9idWlsZF90
cmVlXzIoKToKICAgICBhc3NlcnQgZHVtcF90cmVlKHRyZWUpID09IGV4cGVjdGVkCiAKIAotQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfYnVpbGRf
dHJlZV8zKCk6CiAKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4IiwgInZlcnNpb24iOiAi
MTguMDQiLCAiZGVidWciOiBUcnVlLCAidW51c2VkIjogRmFsc2V9LCAiUEFTUyIpLApAQCAtMTE4
LDggKzEwNiw2IEBAIGRlZiB0ZXN0X2J1aWxkX3RyZWVfMygpOgogICAgIGFzc2VydCBkdW1wX3Ry
ZWUodHJlZSkgPT0gZXhwZWN0ZWQKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF9idWlsZF90cmVlXzQoKToKICAgICAjIENoZWNrIGNvdW50
cyBmb3IgbXVsdGlwbGUgc3RhdHVzZXMKICAgICByZXN1bHRzID0gWyh7Im9zIjogImxpbnV4Iiwg
InZlcnNpb24iOiAiMTguMDQiLCAiZGVidWciOiBGYWxzZX0sICJGQUlMIiksCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCA3MmYzYTU5MWFkN2Y5MDUzMjY3MWNjYjg5N2Rm
Y2IxNjFiYzhmNDVkLi42MGIxYjBhNWE4NzhjZGE5YzUwMGVhYWUyNWYzZmU4OWVhZGY4MTljIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAgLTcsNiArNyw3IEBAIGltcG9y
dCBtb2NrCiBmcm9tIG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVyZWRsb2cKIAogZnJv
bSAuLmZvcm1hdHRlcnMgaW1wb3J0IHdwdHJlcG9ydAorZnJvbSAuLmZvcm1hdHRlcnMud3B0c2Ny
ZWVuc2hvdCBpbXBvcnQgV3B0c2NyZWVuc2hvdEZvcm1hdHRlcgogZnJvbSAuLmZvcm1hdHRlcnMu
d3B0cmVwb3J0IGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKIAogCkBAIC0xNjYsMyArMTY3LDI2
IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9rbm93bl9pbnRlcm1pdHRlbnQoY2FwZmQpOgogICAgIHN1
YnRlc3QgPSB0ZXN0WyJzdWJ0ZXN0cyJdWzBdCiAgICAgYXNzZXJ0IHN1YnRlc3RbImV4cGVjdGVk
Il0gPT0gdSJQQVNTIgogICAgIGFzc2VydCBzdWJ0ZXN0WyJrbm93bl9pbnRlcm1pdHRlbnQiXSA9
PSBbdSdGQUlMJ10KKworCitkZWYgdGVzdF93cHRzY3JlZW5zaG90X3Rlc3RfZW5kKGNhcGZkKToK
KyAgICBmb3JtYXR0ZXIgPSBXcHRzY3JlZW5zaG90Rm9ybWF0dGVyKCkKKworICAgICMgRW1wdHkK
KyAgICBkYXRhID0ge30KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5kKGRhdGEpIGlzIE5v
bmUKKworICAgICMgTm8gaXRlbXMKKyAgICBkYXRhWydleHRyYSddID0geyJyZWZ0ZXN0X3NjcmVl
bnNob3RzIjogW119CisgICAgYXNzZXJ0IGZvcm1hdHRlci50ZXN0X2VuZChkYXRhKSBpcyBOb25l
CisKKyAgICAjIEludmFsaWQgaXRlbQorICAgIGRhdGFbJ2V4dHJhJ11bJ3JlZnRlc3Rfc2NyZWVu
c2hvdHMnXSA9IFsibm8gZGljdCBpdGVtIl0KKyAgICBhc3NlcnQgZm9ybWF0dGVyLnRlc3RfZW5k
KGRhdGEpIGlzIE5vbmUKKworICAgICMgUmFuZG9tIGhhc2gKKyAgICBkYXRhWydleHRyYSddWydy
ZWZ0ZXN0X3NjcmVlbnNob3RzJ10gPSBbeyJoYXNoIjogIkhBU0giLCAic2NyZWVuc2hvdCI6ICJE
QVRBIn1dCisgICAgYXNzZXJ0ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsREFUQVxuJyA9PSBmb3Jt
YXR0ZXIudGVzdF9lbmQoZGF0YSkKKworICAgICMgQWxyZWFkeSBjYWNoZWQgaGFzaAorICAgIGFz
c2VydCBmb3JtYXR0ZXIudGVzdF9lbmQoZGF0YSkgaXMgTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggNTI1OTE1ZDE4MzJhYzhhZjE5NTdhNzk5
NjE1OTY5ZTA1OGVlZmNhNS4uZjNlNGNlNzk2YTQ1YzQ3MmE4OGZlMDIyMjc3ZTAzNDdiNGU5ODk0
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfbWFuaWZlc3RleHBlY3RlZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9tYW5pZmVzdGV4cGVjdGVkLnB5CkBAIC0x
LDQgKzEsMyBAQAotaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQg
cHl0ZXN0CkBAIC02LDggKzUsNiBAQCBpbXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBtYW5p
ZmVzdGV4cGVjdGVkCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5
MyIpCiBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3RlZCIsIFsKICAgICAo
YiJyZWYuaHRtbDoxOzIwMCIsIFsoInJlZi5odG1sIiwgKCgxLCAxKSwgKDIwMCwgMjAwKSkpXSks
CiAgICAgKGIicmVmLmh0bWw6MC0xOzEwMC0yMDAiLCBbKCJyZWYuaHRtbCIsICgoMCwgMSksICgx
MDAsIDIwMCkpKV0pLApAQCAtMjUsNyArMjIsNyBAQCBmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4
cGVjdGVkCiAgICAgICAoKHUidGVzdC5odG1sIiwgdSJyZWYxLmh0bWwiLCAiPT0iKSwgKCg1LDEw
KSwgKDEwMCwgMTAwKSkpXSksCiBdKQogZGVmIHRlc3RfZnV6enkoZnV6enksIGV4cGVjdGVkKToK
LSAgICBkYXRhID0gIiIiCisgICAgZGF0YSA9IGIiIiIKIFt0ZXN0Lmh0bWxdCiAgIGZ1enp5OiAl
cyIiIiAlIGZ1enp5CiAgICAgZiA9IEJ5dGVzSU8oZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3N0
YWJpbGl0eS5weQppbmRleCA0NzQwNTZkZGU2YzY3YmIwYWFkMjEwMDYxM2U2Y2EzMzE5NjIzOTYy
Li45YThmY2NmOTM1YTEzNmM2MDUwZTg1MmY5YTU3MDQxMzhiMGQzZjQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CkBAIC0xLDUgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgc3Rh
YmlsaXR5Ci0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGlj
dAogCiBkZWYgdGVzdF9pc19pbmNvbnNpc3RlbnQoKToKICAgICBhc3NlcnQgc3RhYmlsaXR5Lmlz
X2luY29uc2lzdGVudCh7IlBBU1MiOiAxMH0sIDEwKSBpcyBGYWxzZQpAQCAtMjksMyArMjksMTE0
IEBAIGRlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKICAgICAgICAgInRpbWVvdXQiOiAxMDB9
KSA9PSAiRkFJTCIKICAgICBhc3NlcnQgc3RhYmlsaXR5LmZpbmRfc2xvd19zdGF0dXMoewogICAg
ICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiU0tJUCI6IDB9fSkgaXMgTm9uZQorCisKK2RlZiB0
ZXN0X2dldF9zdGVwcygpOgorICAgIGxvZ2dlciA9IE5vbmUKKworICAgIHN0ZXBzID0gc3RhYmls
aXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFtdKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09
IDAKKworICAgIHN0ZXBzID0gc3RhYmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIDAsIDAsIFt7fV0p
CisgICAgYXNzZXJ0IGxlbihzdGVwcykgPT0gMAorCisgICAgcmVwZWF0X2xvb3AgPSAxCisgICAg
ZmxhZ19uYW1lID0gJ2ZsYWcnCisgICAgZmxhZ192YWx1ZSA9ICd5JworICAgIHN0ZXBzID0gc3Rh
YmlsaXR5LmdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCAwLCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmbGFnX25hbWU6IGZsYWdfdmFsdWV9XSkKKyAgICBhc3NlcnQg
bGVuKHN0ZXBzKSA9PSAxCisgICAgYXNzZXJ0IHN0ZXBzWzBdWzBdID09ICJSdW5uaW5nIHRlc3Rz
IGluIGEgbG9vcCAlZCB0aW1lcyB3aXRoIGZsYWdzICVzPSVzIiAlICgKKyAgICAgICAgcmVwZWF0
X2xvb3AsIGZsYWdfbmFtZSwgZmxhZ192YWx1ZSkKKworICAgIHJlcGVhdF9sb29wID0gMAorICAg
IHJlcGVhdF9yZXN0YXJ0ID0gMQorICAgIGZsYWdfbmFtZSA9ICdmbGFnJworICAgIGZsYWdfdmFs
dWUgPSAnbicKKyAgICBzdGVwcyA9IHN0YWJpbGl0eS5nZXRfc3RlcHMobG9nZ2VyLCByZXBlYXRf
bG9vcCwgcmVwZWF0X3Jlc3RhcnQsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2ZsYWdfbmFtZTogZmxhZ192YWx1ZX1dKQorICAgIGFzc2VydCBsZW4oc3RlcHMpID09IDEKKyAg
ICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVz
dGFydHMgJWQgdGltZXMgd2l0aCBmbGFncyAlcz0lcyIgJSAoCisgICAgICAgIHJlcGVhdF9yZXN0
YXJ0LCBmbGFnX25hbWUsIGZsYWdfdmFsdWUpCisKKyAgICByZXBlYXRfbG9vcCA9IDEwCisgICAg
cmVwZWF0X3Jlc3RhcnQgPSA1CisgICAgc3RlcHMgPSBzdGFiaWxpdHkuZ2V0X3N0ZXBzKGxvZ2dl
ciwgcmVwZWF0X2xvb3AsIHJlcGVhdF9yZXN0YXJ0LCBbe31dKQorICAgIGFzc2VydCBsZW4oc3Rl
cHMpID09IDIKKyAgICBhc3NlcnQgc3RlcHNbMF1bMF0gPT0gIlJ1bm5pbmcgdGVzdHMgaW4gYSBs
b29wICVkIHRpbWVzIiAlIHJlcGVhdF9sb29wCisgICAgYXNzZXJ0IHN0ZXBzWzFdWzBdID09ICgK
KyAgICAgICAgIlJ1bm5pbmcgdGVzdHMgaW4gYSBsb29wIHdpdGggcmVzdGFydHMgJWQgdGltZXMi
ICUgcmVwZWF0X3Jlc3RhcnQpCisKKworZGVmIHRlc3RfbG9nX2hhbmRsZXIoKToKKyAgICBoYW5k
bGVyID0gc3RhYmlsaXR5LkxvZ0hhbmRsZXIoKQorICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCisg
ICAgZGF0YVsidGVzdCJdID0gInRlc3RfbmFtZSIKKyAgICB0ZXN0ID0gaGFuZGxlci5maW5kX29y
X2NyZWF0ZV90ZXN0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN1YnRlc3RzIl0gPT0gT3JkZXJl
ZERpY3QoKQorICAgIGFzc2VydCB0ZXN0WyJzdGF0dXMiXSA9PSBkZWZhdWx0ZGljdChpbnQpCisg
ICAgYXNzZXJ0IHRlc3RbImxvbmdlc3RfZHVyYXRpb24iXSA9PSBkZWZhdWx0ZGljdChmbG9hdCkK
KyAgICBhc3NlcnQgdGVzdCA9PSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKwor
ICAgIHN0YXJ0X3RpbWUgPSAxMDAKKyAgICBkYXRhWyJ0aW1lIl0gPSBzdGFydF90aW1lCisgICAg
aGFuZGxlci50ZXN0X3N0YXJ0KGRhdGEpCisgICAgYXNzZXJ0IHRlc3RbInN0YXJ0X3RpbWUiXSA9
PSBzdGFydF90aW1lCisKKyAgICBkYXRhWyJzdWJ0ZXN0Il0gPSAic3VidGVzdF9uYW1lIgorICAg
IHN1YnRlc3QgPSBoYW5kbGVyLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkKKyAgICBhc3Nl
cnQgc3VidGVzdFsic3RhdHVzIl0gPT0gZGVmYXVsdGRpY3QoaW50KQorICAgIGFzc2VydCBzdWJ0
ZXN0WyJtZXNzYWdlcyJdID09IHNldCgpCisgICAgYXNzZXJ0IHN1YnRlc3QgPT0gaGFuZGxlci5m
aW5kX29yX2NyZWF0ZV9zdWJ0ZXN0KGRhdGEpCisKKyAgICBkYXRhWyJzdGF0dXMiXSA9IDAKKyAg
ICBhc3NlcnQgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dID09IDAKKyAgICBoYW5k
bGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3RbInN0YXR1cyJdW2RhdGFb
InN0YXR1cyJdXSA9PSAxCisgICAgaGFuZGxlci50ZXN0X3N0YXR1cyhkYXRhKQorICAgIGFzc2Vy
dCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0gMgorICAgIGRhdGFbInN0YXR1
cyJdID0gMQorICAgIGFzc2VydCBzdWJ0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gPT0g
MAorICAgIG1lc3NhZ2UgPSAidGVzdCBtZXNzYWdlIgorICAgIGRhdGFbIm1lc3NhZ2UiXSA9IG1l
c3NhZ2UKKyAgICBoYW5kbGVyLnRlc3Rfc3RhdHVzKGRhdGEpCisgICAgYXNzZXJ0IHN1YnRlc3Rb
InN0YXR1cyJdW2RhdGFbInN0YXR1cyJdXSA9PSAxCisgICAgYXNzZXJ0IGxlbihzdWJ0ZXN0WyJt
ZXNzYWdlcyJdKSA9PSAxCisgICAgYXNzZXJ0IG1lc3NhZ2UgaW4gc3VidGVzdFsibWVzc2FnZXMi
XQorCisgICAgdGVzdF9kdXJhdGlvbiA9IDEwCisgICAgZGF0YVsidGltZSJdID0gZGF0YVsidGlt
ZSJdICsgdGVzdF9kdXJhdGlvbgorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9PSB0ZXN0X2R1cmF0
aW9uCisgICAgYXNzZXJ0ICJ0aW1lb3V0IiBub3QgaW4gdGVzdAorCisgICAgZGF0YVsidGVzdDIi
XSA9ICJ0ZXN0X25hbWVfMiIKKyAgICB0aW1lb3V0ID0gNQorICAgIGRhdGFbImV4dHJhIl0gPSB7
fQorICAgIGRhdGFbImV4dHJhIl1bInRlc3RfdGltZW91dCJdID0gdGltZW91dAorICAgIGhhbmRs
ZXIudGVzdF9zdGFydChkYXRhKQorICAgIGhhbmRsZXIudGVzdF9lbmQoZGF0YSkKKyAgICBhc3Nl
cnQgdGVzdFsidGltZW91dCJdID09IHRpbWVvdXQgKiAxMDAwCisKKworZGVmIHRlc3RfZXJyX3N0
cmluZygpOgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnT0sn
OiAxLCB1J0ZBSUwnOiAxfSwgMSkgPT0gdSIqKkR1cGxpY2F0ZSBzdWJ0ZXN0IG5hbWUqKiIKKyAg
ICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMiwgdSdGQUlM
JzogMX0sIDIpID09IHUiKipEdXBsaWNhdGUgc3VidGVzdCBuYW1lKioiCisgICAgYXNzZXJ0IHN0
YWJpbGl0eS5lcnJfc3RyaW5nKHt1J1NLSVAnOiAxfSwgMCkgPT0gdSJEdXBsaWNhdGUgc3VidGVz
dCBuYW1lIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAgICAgICAge3UnU0tJ
UCc6IDEsIHUnT0snOiAxfSwgMSkgPT0gdSJEdXBsaWNhdGUgc3VidGVzdCBuYW1lIgorCisgICAg
YXNzZXJ0IHN0YWJpbGl0eS5lcnJfc3RyaW5nKAorICAgICAgICB7dSdGQUlMJzogMX0sIDIpID09
IHUiKipGQUlMOiAxLzIsIE1JU1NJTkc6IDEvMioqIgorICAgIGFzc2VydCBzdGFiaWxpdHkuZXJy
X3N0cmluZygKKyAgICAgICAge3UnRkFJTCc6IDEsIHUnT0snOiAxfSwgMykgPT0gdSIqKkZBSUw6
IDEvMywgT0s6IDEvMywgTUlTU0lORzogMS8zKioiCisKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVy
cl9zdHJpbmcoCisgICAgICAgIHt1J09LJzogMSwgdSdGQUlMJzogMX0sIDIpID09IHUiKipGQUlM
OiAxLzIsIE9LOiAxLzIqKiIKKworICAgIGFzc2VydCBzdGFiaWxpdHkuZXJyX3N0cmluZygKKyAg
ICAgICAge3UnT0snOiAyLCB1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxfSwgNCkgPT0gdSJGQUlMOiAx
LzQsIE9LOiAyLzQsIFNLSVA6IDEvNCIKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmVycl9zdHJpbmco
CisgICAgICAgIHt1J0ZBSUwnOiAxLCB1J1NLSVAnOiAxLCB1J09LJzogMn0sIDQpID09IHUiRkFJ
TDogMS80LCBPSzogMi80LCBTS0lQOiAxLzQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRl
ci5weQppbmRleCBlODU3Y2Q0M2RiNmQyODFmOTU0MTQyMzBmNTJjOTg0YWFkOTE1MTE4Li44MzYw
MDNkMTA2MDM4YWI0MzAzMDM1ZWVjY2EzMTc3NGM5YTI2Y2UxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90
ZXN0X3Rlc3Rsb2FkZXIucHkKQEAgLTIwLDggKzIwLDYgQEAgc2tpcDogdHJ1ZQogCiBAcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCiAgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJOYW1lZFRlbXBvcmFyeUZpbGUgY2Fubm90IGJlIHJlb3BlbmVkIG9uIFdpbjMyIikK
LUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF9maWx0ZXJfdW5pY29kZSgpOgogICAgIHRlc3RzID0gbWFrZV9tb2NrX21hbmlmZXN0
KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRl
LnB5CmluZGV4IDVkOTAwYTNkNmM5Y2QyMzY5NmZlMGQyYjdjMjBkOGZmNTE0MmI5ZTUuLjZkYzA0
Y2VkZjM0YzdhOGZiNjY3M2YxYzVmNDc3ZDA1NjFlYjFmZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91
cGRhdGUucHkKQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRs
b2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3Mu
cGFyZGlyLCBvcy5wYXJkaXIpKQotZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0g
YXMgbWFuaWZlc3RfaXRlbQorZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0gYXMg
bWFuaWZlc3RfaXRlbSwgdXRpbHMKIAogCiBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3Bh
dGgpOgpAQCAtMjEsNyArMjEsOSBAQCBkZWYgcmVsX3BhdGhfdG9fdGVzdF91cmwocmVsX3BhdGgp
OgogCiAKIGRlZiBTb3VyY2VGaWxlV2l0aFRlc3QocGF0aCwgaGFzaCwgY2xzLCAqYXJncyk6Ci0g
ICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gpCisgICAgcGF0aF9wYXJ0
cyA9IHR1cGxlKHBhdGguc3BsaXQoIi8iKSkKKyAgICBwYXRoID0gdXRpbHMudG9fb3NfcGF0aChw
YXRoKQorICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgcmVsX3BhdGhfcGFydHM9cGF0
aF9wYXJ0cywgaGFzaD1oYXNoKQogICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIs
IHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHBhdGgpLCAqYXJncykKICAgICBzLm1hbmlmZXN0X2l0ZW1z
ID0gbW9jay5Nb2NrKHJldHVybl92YWx1ZT0oY2xzLml0ZW1fdHlwZSwgW3Rlc3RdKSkKICAgICBy
ZXR1cm4gcwpAQCAtMjksNyArMzEsNiBAQCBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhh
c2gsIGNscywgKmFyZ3MpOgogCiBpdGVtX2NsYXNzZXMgPSB7InRlc3RoYXJuZXNzIjogbWFuaWZl
c3RfaXRlbS5UZXN0aGFybmVzc1Rlc3QsCiAgICAgICAgICAgICAgICAgInJlZnRlc3QiOiBtYW5p
ZmVzdF9pdGVtLlJlZlRlc3QsCi0gICAgICAgICAgICAgICAgInJlZnRlc3Rfbm9kZSI6IG1hbmlm
ZXN0X2l0ZW0uUmVmVGVzdE5vZGUsCiAgICAgICAgICAgICAgICAgIm1hbnVhbCI6IG1hbmlmZXN0
X2l0ZW0uTWFudWFsVGVzdCwKICAgICAgICAgICAgICAgICAid2RzcGVjIjogbWFuaWZlc3RfaXRl
bS5XZWJEcml2ZXJTcGVjVGVzdCwKICAgICAgICAgICAgICAgICAiY29uZm9ybWFuY2VjaGVja2Vy
IjogbWFuaWZlc3RfaXRlbS5Db25mb3JtYW5jZUNoZWNrZXJUZXN0LApAQCAtNjcsMTEgKzY4LDEy
IEBAIGRlZiB1cGRhdGUodGVzdHMsICpsb2dzLCAqKmt3YXJncyk6CiAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlX2Zyb21fbG9nKGxvZykKIAogICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gKFsiZGVidWci
LCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQorICAgICAgICAgICAg
ICAgICAgICAgICAgIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJdfSkK
IAogICAgIGV4cGVjdGVkX2RhdGEgPSB7fQogICAgIG1ldGFkYXRhLmxvYWRfZXhwZWN0ZWQgPSBs
YW1iZGEgXywgX18sIHRlc3RfcGF0aCwgKmFyZ3M6IGV4cGVjdGVkX2RhdGEuZ2V0KHRlc3RfcGF0
aCkKICAgICBmb3IgdGVzdF9wYXRoLCB0ZXN0X2lkcywgdGVzdF90eXBlLCBtYW5pZmVzdF9zdHIg
aW4gdGVzdHM6CisgICAgICAgIHRlc3RfcGF0aCA9IHV0aWxzLnRvX29zX3BhdGgodGVzdF9wYXRo
KQogICAgICAgICBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0gPSBtYW5pZmVzdHVwZGF0ZS5jb21w
aWxlKEJ5dGVzSU8obWFuaWZlc3Rfc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLApAQCAtMTA5LDcg
KzExMSw3IEBAIGRlZiBjcmVhdGVfbG9nKGVudHJpZXMpOgogICAgICAgICAgICAgZ2V0YXR0cihs
b2dnZXIsIGFjdGlvbikoKiprd2FyZ3MpCiAgICAgICAgIGxvZ2dlci5yZW1vdmVfaGFuZGxlciho
YW5kbGVyKQogICAgIGVsc2U6Ci0gICAgICAgIGpzb24uZHVtcChlbnRyaWVzLCBkYXRhKQorICAg
ICAgICBkYXRhLndyaXRlKGpzb24uZHVtcHMoZW50cmllcykuZW5jb2RlKCkpCiAgICAgZGF0YS5z
ZWVrKDApCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtMTMzLDExICsxMzUsOSBAQCBkZWYgY3JlYXRl
X3Rlc3RfbWFuaWZlc3QodGVzdHMsIHVybF9iYXNlPSIvIik6CiAgICAgcmV0dXJuIG0KIAogCi1A
cHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAg
ICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRh
dGVfMCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBi
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC0x
NTUsMTEgKzE1NSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV8wKCk6CiAgICAgYXNzZXJ0IHVwZGF0ZWRb
MF1bMV0uaXNfZW1wdHkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEVSUk9SIiIiKV0KIApAQCAtMTc4LDExICsxNzYsOSBAQCBkZWYgdGVzdF91cGRhdGVfMSgp
OgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0u
Z2V0KCJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9rbm93
bl9pbnRlcm1pdHRlbnRfMSgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAg
ICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFBBU1Mi
IiIpXQogCkBAIC0yMTksMTEgKzIxNSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9rbm93bl9pbnRlcm1p
dHRlbnRfMSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIlBB
U1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgdGVzdHMg
PSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAotICAgICAg
ICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0
ZXN0MV0KICAgICBleHBlY3RlZDogUEFTUyIiIildCiAKQEAgLTI0NCwxMSArMjM4LDkgQEAgZGVm
IHRlc3RfdXBkYXRlX2tub3duX2ludGVybWl0dGVudF8yKCk6CiAgICAgICAgICJleHBlY3RlZCIs
IGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93bl9pbnRl
cm1pdHRlbnQoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0s
ICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAg
ICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0i
IiIpXQogCkBAIC0yODcsMTEgKzI3OSw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9leGlzdGluZ19rbm93
bl9pbnRlcm1pdHRlbnQoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykg
PT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlvdXNfaW50
ZXJtaXR0ZW50KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAg
ICAgIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxd
IiIiKV0KIApAQCAtMzM1LDggKzMyNSw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9yZW1vdmVfcHJldmlv
dXNfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8p
ID09IFsiUEFTUyIsICJFUlJPUiJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50
KCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCBOb25lKV0KIApAQCAtMzc0LDggKzM2Miw2IEBAIGRlZiB0ZXN0X3VwZGF0ZV9uZXdf
dGVzdF93aXRoX2ludGVybWl0dGVudCgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1
bl9pbmZvKSA9PSBbIlBBU1MiLCAiRkFJTCJdCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRv
ZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2V4cGVjdGVkX3RpZV9yZXNvbHV0
aW9uKCk6CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCBOb25lKV0KIApAQCAtNDAzLDExICszODksOSBAQCBkZWYgdGVzdF91cGRhdGVf
ZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24oKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9y
dW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBk
b2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6
CiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLAotICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgICAgICAgICAgICAgIGIiIiJbdGVz
dC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KIApAQCAt
NDQ2LDEwICs0MzAsOCBAQCBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZCgpOgogICAg
ICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFu
ZHJvaWQiOiBbUEFTUywgRkFJTF0KQEAgLTQ4OSwxMSArNDcxLDkgQEAgZGVmIHRlc3RfdXBkYXRl
X2FuZF9wcmVzZXJ2ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6CiAgICAgICAg
ICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dp
dGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKICAgICB0ZXN0cyA9IFso
InBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAg
ICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3Qx
XQogICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQogCkBAIC01MTQsMTAgKzQ5NCw4IEBA
IGRlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJtaXR0ZW50X3RvX29uZV9leHBlY3RlZF9z
dGF0dXMoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkVSUk9S
IgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIi
IiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFT
UywgRkFJTF0iIiIpXQpAQCAtNTQ5LDEwICs1MjcsOCBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJt
aXR0ZW50X3dpdGhfY29uZGl0aW9ucygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18x
KSA9PSBbIlBBU1MiLCAiVElNRU9VVCIsICJGQUlMIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwo
c3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRh
dGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRl
cm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3Qu
aHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgv
dG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiIKIFt0ZXN0Lmh0bV0K
ICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0iIiIpXQpA
QCAtNTg0LDExICs1NjAsOSBAQCBkZWYgdGVzdF91cGRhdGVfYW5kX3JlbW92ZV9pbnRlcm1pdHRl
bnRfd2l0aF9jb25kaXRpb25zKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09
IFsiUEFTUyIsICJUSU1FT1VUIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGwoKToKICAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0g
ICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0K
ICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBU
SU1FT1VUXQpAQCAtNjI0LDExICs1OTgsOSBAQCBkZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50
X2Z1bGwoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2ludGVybWl0dGVudF9mdWxsX3JlbW92ZSgpOgogICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBvcyA9PSAibWFjIjogW0ZBSUwsIFRJTUVPVVQsIFBBU1Nd
CkBAIC02NzUsMTEgKzY0Nyw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbF9y
ZW1vdmUoKToKICAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfZnVsbF91cGRhdGUoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAg
ICAgICAgICAgYiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAg
aWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtNzE1LDExICs2ODUsOSBAQCBkZWYg
dGVzdF9mdWxsX3VwZGF0ZSgpOgogICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZv
KSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMi
LAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5
MyIpCiBkZWYgdGVzdF9mdWxsX29ycGhhbigpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0
Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKLSAgICAgICAgICAgICAgIiIiW3Rlc3Qu
aHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6IEZBSUwKICAgICBbc3Vic3ViIHRlc3RdCkBAIC03NDgsMTEgKzcxNiw5IEBAIGRlZiB0ZXN0
X2Z1bGxfb3JwaGFuKCk6CiAgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVz
dF9pZCkuY2hpbGRyZW4pID09IDEKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRp
dGlvbnMoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAg
YiIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgogICAgICAgaWYgb3MgPT0g
Im1hYyI6IFtGQUlMLCBUSU1FT1VUXQpAQCAtODA5LDExICs3NzUsOSBAQCBkZWYgdGVzdF91cGRh
dGVfcmVvcmRlcl9leHBlY3RlZF9mdWxsX2NvbmRpdGlvbnMoKToKICAgICAgICAgImV4cGVjdGVk
IiwgZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkZBSUwiXQogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3NraXBfMCgpOgogICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwK
LSAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQorICAgICAgICAgICAgICBiIiIiW3Rlc3QuaHRt
XQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04MjksMTAgKzc5Myw4
IEBAIGRlZiB0ZXN0X3NraXBfMCgpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X25ld19zdWJ0
ZXN0KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAg
ICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQogCkBAIC04NTQsMTAgKzgxNiw4IEBAIGRlZiB0ZXN0X25l
d19zdWJ0ZXN0KCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5j
aGlsZHJlblsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCiAK
IAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzAoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBb
dGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1d
CiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTg5MywxMCArODUzLDgg
QEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICAgICAgImV4cGVjdGVkIiwgeyJk
ZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRp
cGxlXzEoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0K
ICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTkzNywxMCArODk1LDggQEAgZGVmIHRlc3Rf
dXBkYXRlX211bHRpcGxlXzEoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMykgPT0g
IkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQog
ZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCiAKQEAgLTk3Nywx
MCArOTMzLDggQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzIoKToKICAgICAgICAgImV4cGVj
dGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzMoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9p
ZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3Rl
ZDoKICAgICAgIGlmIGRlYnVnOiBGQUlMCkBAIC0xMDE5LDEwICs5NzMsOCBAQCBkZWYgdGVzdF91
cGRhdGVfbXVsdGlwbGVfMygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAi
VElNRU9VVCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAot
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfaWdub3JlX2V4aXN0aW5nKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiBkZWJ1
ZzogVElNRU9VVApAQCAtMTA2MSw4ICsxMDEzLDYgQEAgZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9l
eGlzdGluZygpOgogICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiTk9UUlVOIgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0
X3VwZGF0ZV9uZXdfdGVzdCgpOgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgTm9uZSldCiAKQEAgLTEwODUsMTAgKzEwMzUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfbmV3X3Rlc3QoKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9f
MSkgPT0gIkZBSUwiCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExMDcsMTAgKzEwNTUsOCBAQCBk
ZWYgdGVzdF91cGRhdGVfZHVwbGljYXRlKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZv
XzEpID09ICJFUlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0g
IjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiIgogW3Rlc3QuaHRtXQogICBleHBlY3RlZDogRVJST1IiIiIpXQogCkBAIC0xMTI5LDEw
ICsxMDc1LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Rpc2FibGVfaW50ZXJtaXR0ZW50KCk6CiAgICAg
ICAgICJkaXNhYmxlZCIsIHJ1bl9pbmZvXzEpID09ICJTb21lIG1lc3NhZ2UiCiAKIAotQHB5dGVz
dC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICBy
ZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3N0
YWJpbGl0eV9jb25kaXRpb25hbF9pbnN0YWJpbGl0eSgpOgotICAgIHRlc3RzID0gWygicGF0aC90
by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVz
dC5odG1dCiAgIGV4cGVjdGVkOiBFUlJPUiIiIildCiAKQEAgLTExNjUsMTAgKzExMDksOCBAQCBk
ZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2luc3RhYmlsaXR5KCk6CiAgICAg
ICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJt
ZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9mdWxsKCk6Ci0g
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCAiIiJbdGVzdC5odG1dCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0
ZWQ6CiAgICAgICBpZiBkZWJ1ZzogVElNRU9VVApAQCAtMTIxNywxMCArMTE1OSw4IEBAIGRlZiB0
ZXN0X3VwZGF0ZV9mdWxsKCk6CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJF
UlJPUiIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBk
ZWYgdGVzdF91cGRhdGVfZnVsbF91bmtub3duKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6CiAgICAgICBpZiByZWxlYXNlX29y
X2JldGE6IEVSUk9SCkBAIC0xMjYwLDExICsxMjAwLDI5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9mdWxs
X3Vua25vd24oKToKICAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkVSUk9SIgog
CiAKK2RlZiB0ZXN0X3VwZGF0ZV9mdWxsX3Vua25vd25fbWlzc2luZygpOgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0
Lmh0bV0KKyAgW3N1YnRlc3RfZGVsZXRlZF0KKyAgICBleHBlY3RlZDoKKyAgICAgIGlmIHJlbGVh
c2Vfb3JfYmV0YTogRVJST1IKKyAgICAgIEZBSUwKKyIiIildCisKKyAgICBsb2dfMCA9IHN1aXRl
X2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0sCisgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAicmVsZWFzZV9vcl9i
ZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGZ1bGxf
dXBkYXRlPVRydWUpCisgICAgYXNzZXJ0IGxlbih1cGRhdGVkKSA9PSAwCisKIAotQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1
bHQoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0i
LCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAg
ICBleHBlY3RlZDoKICAgICAgIGlmIG9zID09ICJtYWMiOiBGQUlMCkBAIC0xMjk0LDEwICsxMjUy
LDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwK
LSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMi
KQogZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCisgICAgdGVzdHMgPSBbKCJw
YXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIiCiBbdGVzdC5o
dG1dCiAgIGV4cGVjdGVkOgogICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VUCkBAIC0xMzI2LDEw
ICsxMjgyLDggQEAgZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgogICAgICAgICAiZXhwZWN0
ZWQiLCBydW5faW5mb18yKSA9PSAiRkFJTCIKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9l
c24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiIKIFt0ZXN0Lmh0bV0KICAgZXhwZWN0ZWQ6CiAgICAgaWYgb3MgPT0gIm1hYyI6IFRJ
TUVPVVQKQEAgLTEzNTgsMTAgKzEzMTIsOCBAQCBkZWYgdGVzdF91cGRhdGVfZGVmYXVsdF8yKCk6
CiAgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xMzgyLDEwICsx
MzM0LDggQEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6CiAgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIi
CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8xKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dCisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBiIiIi
W3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czogMgogIiIiKV0KQEAg
LTE0MDYsMTAgKzEzNTYsOCBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEoKToK
ICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1h
c3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIoKToKLSAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0
ZXN0Lmh0bV0KKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsIGIiIiJbdGVzdC5odG1dCiAgIG1heC1hc3NlcnRzOiA0CiAgIG1pbi1hc3Nl
cnRzOiAyCiAiIiIpXQpAQCAtMTQyNiwxMCArMTM3NCw4IEBAIGRlZiB0ZXN0X3VwZGF0ZV9hc3Nl
cnRpb25fY291bnRfMigpOgogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29u
PSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9hc3NlcnRp
b25fY291bnRfMygpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgYiIiIlt0ZXN0Lmh0bV0KICAgbWF4
LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKICIiIildCkBAIC0xNDYwLDEwICsxNDA2LDgg
QEAgZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8zKCk6CiAgICAgYXNzZXJ0IG5ld19t
YW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIiCiAKIAot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAg
ICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBk
YXRlX2Fzc2VydGlvbl9jb3VudF80KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5odG1dIiIiKV0KKyAgICB0ZXN0
cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiJb
dGVzdC5odG1dIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAgICgiYXNzZXJ0aW9uX2Nv
dW50IiwgeyJ0ZXN0IjogdGVzdF9pZCwKQEAgLTE0OTEsMTEgKzE0MzUsOSBAQCBkZWYgdGVzdF91
cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90
ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCi1AcHl0ZXN0
Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNh
bl8wKCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVz
dGhhcm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lk
XSwgTm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lk
XSwgInRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIs
IFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibHNhbl9s
ZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXX0pXSkKQEAgLTE1MDgsMTEgKzE0NTAs
OSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEg
ZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCisg
ICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3Mi
LCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
IGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2co
WygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCkBAIC0xNTI4LDEzICsxNDY4LDEx
IEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRh
ZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzIoKToKLSAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9fX2Rpcl9fIl0sIE5v
bmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvX19kaXJfXyIsIFsicGF0aC9f
X2Rpcl9fIl0sIE5vbmUsIGIiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpLAotICAgICAgICAg
ICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0KKyAgICAgICAgICAg
ICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygibHNhbl9sZWFrIiwgeyJzY29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBbImZvbyIsICJiYXIiXSwK
QEAgLTE1NTAsMTEgKzE0ODgsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKICAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzMoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0
ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJf
aWRdLCBOb25lLCAiIildCisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9f
IiwgW2Rpcl9pZF0sIE5vbmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJsc2Fu
X2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSldLApAQCAtMTU3MiwxMSArMTUw
OCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV9sc2FuXzMoKToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiLCAiZm9vIl0KIAogCi1AcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0
XzAoKToKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCi0gICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgICAgICAgICAgICAgYiIi
Ilt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KIApAQCAtMTU5
NCwxMSArMTUyOCw5IEBAIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgogICAgIGFzc2Vy
dCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6Ci0gICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiks
Ci0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25l
LCBiIiIpXQogCiAgICAgbG9nID0geyJydW5faW5mbyI6IGRlZmF1bHRfcnVuX2luZm8uY29weSgp
LAogICAgICAgICAgICAicmVzdWx0cyI6IFtdLApAQCAtMTYxMSwxMSArMTU0Myw5IEBAIGRlZiB0
ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgogICAgIGFzc2VydCB1cGRhdGVkWzBdWzFdLmdldCgi
bHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzAoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIild
CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5l
c3MiLCBiIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5v
bmUsIGIiIildCiAKICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJtb3psZWFrX3RvdGFsIiwgeyJz
Y29wZSI6ICJwYXRoL3RvLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicHJvY2VzcyI6ICJkZWZhdWx0IiwKQEAgLTE2MzAsMTEgKzE1NjAsOSBAQCBkZWYgdGVz
dF91cGRhdGVfbGVha190b3RhbF8wKCk6CiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxl
YWstdGhyZXNob2xkIikgPT0gWydkZWZhdWx0OjUxMjAwJ10KIAogCi1AcHl0ZXN0Lm1hcmsueGZh
aWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0
YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8x
KCk6Ci0gICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiksCi0gICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwg
Tm9uZSwgIiIpXQorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIpXQogCiAgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190
b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInByb2Nlc3MiOiAiZGVmYXVsdCIsCkBAIC0xNjQ2LDExICsxNTc0LDkg
QEAgZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgogICAgIGFzc2VydCBub3QgdXBkYXRl
ZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAg
ICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0
ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzIoKToKLSAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiKSwKLSAgICAgICAgICAgICAoInBhdGgv
dG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsIGIiIiksCisgICAgICAgICAgICAg
KCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgYiIiIgogbGVhay10b3RhbDogMTEw
IiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3Bl
IjogInBhdGgvdG8vIiwKQEAgLTE2NjMsMTEgKzE1ODksOSBAQCBsZWFrLXRvdGFsOiAxMTAiIiIp
XQogICAgIGFzc2VydCBub3QgdXBkYXRlZAogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVy
c2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vz
bid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sZWFrX3RvdGFsXzMoKToKLSAgICB0
ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIi
KSwKLSAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtkaXJfaWRdLCBOb25lLCAiIiIK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsIGIiIiksCisgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9u
ZSwgYiIiIgogbGVhay10b3RhbDogMTAwIiIiKV0KIAogICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
Im1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKQEAgLTE2ODMsMTEgKzE2MDcs
OSBAQCBsZWFrLXRvdGFsOiAxMDAiIiIpXQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJs
ZWFrLXRocmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCiAKIAotQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxf
NCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3Ro
YXJuZXNzIiwgIiIpLAotICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0s
IE5vbmUsICIiIgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwg
InRlc3RoYXJuZXNzIiwgYiIiKSwKKyAgICAgICAgICAgICAoInBhdGgvdG8vX19kaXJfXyIsIFtk
aXJfaWRdLCBOb25lLCBiIiIiCiBsZWFrLXRvdGFsOiAxMTAiIiIpXQogCiAgICAgbG9nXzAgPSBz
dWl0ZV9sb2coWwpAQCAtMTcxNiw4ICsxNjM4LDYgQEAgY2xhc3MgVXBkYXRlUnVubmVyKFN0ZXBS
dW5uZXIpOgogICAgIHN0ZXBzID0gW1Rlc3RTdGVwXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ1cGRhdGUu
c3RhdGUgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfcGlja2xlKCk6CiAg
ICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJleHBlY3RlZF90ZXN0
IikKICAgICBhcmdzID0gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0
dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkKaW5kZXggOWJiM2Ux
ZmQzNGUzN2M0NDMwZjc1MmI4N2U0YmI0ZTNiZmE3Zjk1OS4uZGJjY2Q5MGUzMzk1ODBhOGQ1ZmEx
MDA1YmUwNDM0MDk1YzQ2ODI2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rf
d3B0dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF93cHR0ZXN0LnB5CkBAIC0x
LDM1ICsxLDM0IEBACi1pbXBvcnQgcHl0ZXN0Ci1pbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBC
eXRlc0lPCiBmcm9tIG1vY2sgaW1wb3J0IE1vY2sKIAogZnJvbSBtYW5pZmVzdCBpbXBvcnQgbWFu
aWZlc3QgYXMgd3B0bWFuaWZlc3QKLWZyb20gbWFuaWZlc3QuaXRlbSBpbXBvcnQgVGVzdGhhcm5l
c3NUZXN0Citmcm9tIG1hbmlmZXN0Lml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNzVGVzdCwgUmVmVGVz
dAorZnJvbSBtYW5pZmVzdC51dGlscyBpbXBvcnQgdG9fb3NfcGF0aAogZnJvbSAuLiBpbXBvcnQg
bWFuaWZlc3RleHBlY3RlZCwgd3B0dGVzdAogCi1kaXJfaW5pXzAgPSAiIiJcCitkaXJfaW5pXzAg
PSBiIiIiXAogcHJlZnM6IFthOmJdCiAiIiIKIAotZGlyX2luaV8xID0gIiIiXAorZGlyX2luaV8x
ID0gYiIiIlwKIHByZWZzOiBbQFJlc2V0LCBiOmNdCiBtYXgtYXNzZXJ0czogMgogbWluLWFzc2Vy
dHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKLWRpcl9pbmlfMiA9ICIiIlwKK2Rpcl9pbmlfMiA9
IGIiIiJcCiBsc2FuLW1heC1zdGFjay1kZXB0aDogNDIKICIiIgogCi10ZXN0XzAgPSAiIiJcCit0
ZXN0XzAgPSBiIiIiXAogWzAuaHRtbF0KICAgcHJlZnM6IFtjOmRdCiAgIG1heC1hc3NlcnRzOiAz
CiAgIHRhZ3M6IFthLCBAUmVzZXRdCiAiIiIKIAotdGVzdF8xID0gIiIiXAordGVzdF8xID0gYiIi
IlwKIFsxLmh0bWxdCiAgIHByZWZzOgogICAgIGlmIG9zID09ICd3aW4nOiBbYTpiLCBjOmRdCkBA
IC0zNywxMiArMzYsMTIgQEAgdGVzdF8xID0gIiIiXAogICAgIGlmIG9zID09ICd3aW4nOiBGQUlM
CiAiIiIKIAotdGVzdF8yID0gIiIiXAordGVzdF8yID0gYiIiIlwKIFsyLmh0bWxdCiAgIGxzYW4t
bWF4LXN0YWNrLWRlcHRoOiA0MgogIiIiCiAKLXRlc3RfMyA9ICIiIlwKK3Rlc3RfMyA9IGIiIiJc
CiBbMy5odG1sXQogICBbc3VidGVzdDFdCiAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXQpAQCAt
NTQsMzIgKzUzLDMyIEBAIHRlc3RfMyA9ICIiIlwKICAgICBleHBlY3RlZDogRkFJTAogIiIiCiAK
LXRlc3RfNCA9ICIiIlwKK3Rlc3RfNCA9IGIiIiJcCiBbNC5odG1sXQogICBleHBlY3RlZDogRkFJ
TAogIiIiCiAKLXRlc3RfNSA9ICIiIlwKK3Rlc3RfNSA9IGIiIiJcCiBbNS5odG1sXQogIiIiCiAK
LXRlc3RfNiA9ICIiIlwKK3Rlc3RfNiA9IGIiIiJcCiBbNi5odG1sXQogICBleHBlY3RlZDogW09L
LCBGQUlMXQogIiIiCiAKLXRlc3RfNyA9ICIiIlwKK3Rlc3RfNyA9IGIiIiJcCiBbNy5odG1sXQog
ICBibGlua19leHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOiB5ZXAKICIiIgogCi10ZXN0X2Z1enp5
ID0gIiIiXAordGVzdF9mdXp6eSA9IGIiIiJcCiBbZnV6enkuaHRtbF0KICAgZnV6enk6IGZ1enp5
LXJlZi5odG1sOjE7MjAwCiAiIiIKIAogCi10ZXN0aGFybmVzc190ZXN0ID0gIiIiPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgordGVzdGhhcm5lc3NfdGVz
dCA9IGIiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
IiIiCiAKIApAQCAtMTE3LDggKzExNiw2IEBAIGRlZiBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfbmFt
ZSwKICAgICByZXR1cm4gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3RzLCB0ZXN0LCBpbmhlcml0
X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLmdldF90ZXN0KHRlc3QuaWQpKQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfaW5o
ZXJpdCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApLCAoInRlc3QiLCAiYyIsIDEwKV0KICAgICBpbmhlcml0X21ldGFkYXRhID0gWwpAQCAtMTM2
LDggKzEzMyw2IEBAIGRlZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKICAgICBhc3NlcnQgdGVz
dF9vYmoudGFncyA9PSB7ImEiLCAiZGlyOmEifQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0
IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfY29uZGl0aW9uYWwoKToKICAgICBpdGVtcyA9
IFsoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAx
MCldCiAKQEAgLTE0Nyw4ICsxNDIsNiBAQCBkZWYgdGVzdF9jb25kaXRpb25hbCgpOgogICAgIGFz
c2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJGQUlMIgogCiAKLUBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRl
cy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGl0ZW1zID0gWygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwg
MTApXQogCkBAIC0xNzIsOCArMTY1LDYgQEAgZGVmIHRlc3RfbWV0YWRhdGFfbHNhbl9zdGFja19k
ZXB0aCgpOgogICAgIGFzc2VydCB0ZXN0X29iai5sc2FuX21heF9zdGFja19kZXB0aCA9PSA0Mgog
CiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAg
ICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3Rf
c3VidGVzdHMoKToKICAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF8zLCAiYS8z
Lmh0bWwiLCAzLCAoInRlc3QiLCAiYSIsIDQpLCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0ZWQoInN1YnRlc3QxIikgPT0gIlBBU1MiCkBAIC0xODQsNTcgKzE3NSw1MCBA
QCBkZWYgdGVzdF9zdWJ0ZXN0cygpOgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1p
dHRlbnQoInN1YnRlc3QzIikgPT0gW10KIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25m
dXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWwoKToKICAgICB0ZXN0X29iaiA9
IG1ha2VfdGVzdF9vYmplY3QodGVzdF80LCAiYS80Lmh0bWwiLCA0LCAoInRlc3QiLCAiYSIsIDUp
LCBOb25lLCBGYWxzZSkKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiRkFJTCIK
ICAgICBhc3NlcnQgdGVzdF9vYmoua25vd25faW50ZXJtaXR0ZW50KCkgPT0gW10KIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X25vX2V4cGVj
dGVkKCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRlc3RfNSwgImEvNS5odG1s
IiwgNSwgKCJ0ZXN0IiwgImEiLCA2KSwgTm9uZSwgRmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRl
bnQoKSA9PSBbXQogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIs
Ci0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMi
KQogZGVmIHRlc3Rfa25vd25faW50ZXJtaXR0ZW50KCk6CiAgICAgdGVzdF9vYmogPSBtYWtlX3Rl
c3Rfb2JqZWN0KHRlc3RfNiwgImEvNi5odG1sIiwgNiwgKCJ0ZXN0IiwgImEiLCA3KSwgTm9uZSwg
RmFsc2UpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgogICAgIGFzc2Vy
dCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbIkZBSUwiXQogCiAKLUBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVh
c29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQogZGVmIHRlc3RfZXhwZWN0X2FueV9z
dWJ0ZXN0X3N0YXR1cygpOgogICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0Xzcs
ICJhLzcuaHRtbCIsIDcsICgidGVzdCIsICJhIiwgOCksIE5vbmUsIEZhbHNlKQogICAgIGFzc2Vy
dCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJPSyIKICAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0
X2FueV9zdWJ0ZXN0X3N0YXR1cygpIGlzIFRydWUKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lz
LnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4
dCBjb25mdXNpb24gaW4gcHkzIikKIGRlZiB0ZXN0X21ldGFkYXRhX2Z1enp5KCk6Ci0gICAgbWFu
aWZlc3RfZGF0YSA9IHsKLSAgICAgICAgIml0ZW1zIjogeyJyZWZ0ZXN0IjogeyJhL2Z1enp5Lmh0
bWwiOiBbWyJhL2Z1enp5Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1siL2EvZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImZ1enp5IjogW1tbIi9hL2Z1
enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwg
MTVdXV1dfV1dfX0sCi0gICAgICAgICJwYXRocyI6IHsiYS9mdXp6eS5odG1sIjogWyIwIio0MCwg
InJlZnRlc3QiXX0sCi0gICAgICAgICJ2ZXJzaW9uIjogNywKLSAgICAgICAgInVybF9iYXNlIjog
Ii8ifQotICAgIG1hbmlmZXN0ID0gd3B0bWFuaWZlc3QuTWFuaWZlc3QuZnJvbV9qc29uKCIuIiwg
bWFuaWZlc3RfZGF0YSkKKyAgICBpdGVtID0gUmVmVGVzdCgiLiIsICJhL2Z1enp5Lmh0bWwiLCAi
LyIsICJhL2Z1enp5Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM9W1siL2Ev
ZnV6enktcmVmLmh0bWwiLCAiPT0iXV0sCisgICAgICAgICAgICAgICAgICAgZnV6enk9W1tbIi9h
L2Z1enp5Lmh0bWwiLCAnL2EvZnV6enktcmVmLmh0bWwnLCAnPT0nXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtbMiwgM10sIFsxMCwgMTVdXV1dKQorICAgIHMgPSBNb2NrKHJlbF9wYXRo
PSJhL2Z1enp5Lmh0bWwiLCByZWxfcGF0aF9wYXJ0cz0oImEiLCAiZnV6enkuaHRtbCIpLCBoYXNo
PSIwIio0MCkKKyAgICBzLm1hbmlmZXN0X2l0ZW1zID0gTW9jayhyZXR1cm5fdmFsdWU9KGl0ZW0u
aXRlbV90eXBlLCBbaXRlbV0pKQorCisKKyAgICBtYW5pZmVzdCA9IHdwdG1hbmlmZXN0Lk1hbmlm
ZXN0KCkKKworICAgIGFzc2VydCBtYW5pZmVzdC51cGRhdGUoWyhzLCBUcnVlKV0pIGlzIFRydWUK
KwogICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxlKEJ5
dGVzSU8odGVzdF9mdXp6eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0ZXhwZWN0ZWQuZGF0YV9jbHNf
Z2V0dGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIpCiAKLSAgICB0ZXN0ID0gbWFu
aWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQorICAgIHRlc3QgPSBuZXh0KG1h
bmlmZXN0Lml0ZXJwYXRoKHRvX29zX3BhdGgoImEvZnV6enkuaHRtbCIpKSkKICAgICB0ZXN0X29i
aiA9IHdwdHRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdCwgdGVzdCwgW10sIHRlc3RfbWV0YWRh
dGEuZ2V0X3Rlc3QodGVzdC5pZCkpCiAKICAgICBhc3NlcnQgdGVzdF9vYmouZnV6enkgPT0geygn
L2EvZnV6enkuaHRtbCcsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PScpOiBbWzIsIDNdLCBbMTAs
IDE1XV19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCAyNjI2MTgzZmM4MGRiYzc1ZDNkMjg1
ZGU3OWE3ZDM4NmY1M2NlNmUzLi43OGNkYTljMmQ2NTVmNDJkNjgxMTNmNzkxMDdlMjRhZTQxN2Fm
ZjNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcgQEAgZGVmIHJlbW92
ZV9sb2dnaW5nX2FyZ3MoYXJncyk6CiAKICAgICA6cGFyYW0gYXJnczogRGljdGlvbmFyeSBvZiBj
b21tYW5kIGxpbmUgYXJndW1lbnRzLgogICAgICIiIgotICAgIGZvciBuYW1lIGluIGFyZ3Mua2V5
cygpOgorICAgIGZvciBuYW1lIGluIGxpc3QoYXJncy5rZXlzKCkpOgogICAgICAgICBpZiBuYW1l
LnN0YXJ0c3dpdGgoImxvZ18iKToKICAgICAgICAgICAgIGFyZ3MucG9wKG5hbWUpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N0YXRlLnB5CmluZGV4IDY0ZGJmMTE4MDYwNGNkOGRmN2E0NjhlMDM2NDQ3Zjk1YjgwMzcxYjAu
LmY4YTgzNTI1Y2JkNDcwNmJkZmJjOTlhNTE4ZDJiYWMxMjNkMzRlOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0
ZS5weQpAQCAtMTEsNyArMTEsNyBAQCBjbGFzcyBCYXNlU3RhdGUob2JqZWN0KToKICAgICAgICAg
ICAgIHJldHVybiBydgogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gZXhpc3Rpbmcgc3RhdGUg
Zm91bmQiKQotICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCBsb2dnZXIpCisgICAg
ICAgIHJldHVybiBzdXBlcihCYXNlU3RhdGUsIGNscykuX19uZXdfXyhjbHMpCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyKToKICAgICAgICAgIiIiT2JqZWN0IGNvbnRhaW5pbmcgc3Rh
dGUgdmFyaWFibGVzIGNyZWF0ZWQgd2hlbiBydW5uaW5nIFN0ZXBzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5Cmlu
ZGV4IDBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYuLjBhNDFmNzA2ZWJj
Mzc2MDcyOWQ5YmE1NTMwNzZmZTBkN2UwYjQwYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3N5bmMucHkKQEAgLTEwLDM3
ICsxMCw2IEBAIGZyb20gLnRyZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0gb3MucGF0aC5hYnNw
YXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQogCi1ic2RfbGljZW5zZSA9ICIiIlczQyAz
LWNsYXVzZSBCU0QgTGljZW5zZQotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQot
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygd29ya3MgbXVzdCByZXRhaW4gdGhlIG9yaWdpbmFsIGNvcHly
aWdodCBub3RpY2UsIHRoaXMKLSAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0KLSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQKLSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotCi0qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFczQyBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlCi0gIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHdvcmsgd2l0aG91dAotICBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKLUlTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi1J
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQotQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIiIgotCiAKIGRlZiBj
b3B5X3dwdF90cmVlKHRyZWUsIGRlc3QsIGV4Y2x1ZGVzPU5vbmUsIGluY2x1ZGVzPU5vbmUpOgog
ICAgICIiIkNvcHkgdGhlIHdvcmtpbmcgY29weSBvZiBhIFRyZWUgdG8gYSBkZXN0aW5hdGlvbiBk
aXJlY3RvcnkuCkBAIC04NCwxNiArNTMsNiBAQCBkZWYgY29weV93cHRfdHJlZSh0cmVlLCBkZXN0
LCBleGNsdWRlcz1Ob25lLCBpbmNsdWRlcz1Ob25lKToKICAgICAgICAgZGVzdF9wYXRoID0gb3Mu
cGF0aC5qb2luKGRlc3QsIGRlc3RpbmF0aW9uLCBvcy5wYXRoLnNwbGl0KHNvdXJjZSlbMV0pCiAg
ICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfcGF0aCwgZGVzdF9wYXRoKQogCi0gICAgYWRkX2xp
Y2Vuc2UoZGVzdCkKLQotCi1kZWYgYWRkX2xpY2Vuc2UoZGVzdCk6Ci0gICAgIiIiV3JpdGUgdGhl
IGJzZCBsaWNlbnNlIHN0cmluZyB0byBhIExJQ0VOU0UgZmlsZS4KLQotICAgIDpwYXJhbSBkZXN0
OiBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIExJQ0VOU0UgZmlsZS4iIiIKLSAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlc3QsICJMSUNFTlNFIiksICJ3IikgYXMgZjoKLSAgICAg
ICAgZi53cml0ZShic2RfbGljZW5zZSkKLQogCiBjbGFzcyBVcGRhdGVDaGVja291dChTdGVwKToK
ICAgICAiIiJQdWxsIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBpbnRvIHRoZSBsb2NhbCBzeW5jIHRy
ZWUuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3RyZWUucHkKaW5kZXggOTAwNmRmNjcxOTMzMmFlNTkyZWUzODYxNDg1ZDgy
YzIxMjQyM2I0OC4uZjM2Mjc3MGZmMTZkMzBlNDQ5ZGU4NTNmNjg3NDY3Mjk3YjBlZDA3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS90cmVlLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91
cGRhdGUvdHJlZS5weQpAQCAtMyw2ICszLDggQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHRlbXBmaWxlCiAKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorCiBmcm9t
IC4uIGltcG9ydCB2Y3MKIGZyb20gLi52Y3MgaW1wb3J0IGdpdCwgaGcKIApAQCAtMTYsNyArMTgs
NyBAQCBkZWYgZ2V0X3VuaXF1ZV9uYW1lKGV4aXN0aW5nLCBpbml0aWFsKToKICAgICA6cGFyYW0g
aW5pdGlhbDogTmFtZSwgb3IgbmFtZSBwcmVmaXgsIHRvIHVzZSIiIgogICAgIGlmIGluaXRpYWwg
bm90IGluIGV4aXN0aW5nOgogICAgICAgICByZXR1cm4gaW5pdGlhbAotICAgIGZvciBpIGluIHhy
YW5nZShsZW4oZXhpc3RpbmcpICsgMSk6CisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGV4aXN0aW5n
KSArIDEpOgogICAgICAgICB0ZXN0ID0gIiVzXyVzIiAlIChpbml0aWFsLCBpICsgMSkKICAgICAg
ICAgaWYgdGVzdCBub3QgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICByZXR1cm4gdGVzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS91cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQppbmRleCA5NjMwMmVlMjY3ZTkwNWFhOGE0OGFmMTJiNjU5NzhlMDI1ZWJk
NDkyLi44MGU1MDlkZDM4M2IzOGVmNGEzMzdlZjEzMDc1ZjU4ODI2Y2Y4MTg1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3VwZGF0ZS5weQpAQCAtMSw2ICsxLDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCitmcm9t
IHNpeCBpbXBvcnQgaXRlcnZhbHVlcworCiBmcm9tIC5tZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFV
cGRhdGVSdW5uZXIKIGZyb20gLnN5bmMgaW1wb3J0IFN5bmNGcm9tVXBzdHJlYW1SdW5uZXIKIGZy
b20gLnRyZWUgaW1wb3J0IEdpdFRyZWUsIEhnVHJlZSwgTm9WQ1NUcmVlCkBAIC0xMDksNyArMTEx
LDcgQEAgY2xhc3MgUmVtb3ZlT2Jzb2xldGUoU3RlcCk6CiAgICAgICAgIHN0YXRlLnRlc3RzX3Bh
dGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KICAgICAgICAgc3RhdGUubWV0YWRh
dGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3BhdGgiXQogCi0gICAgICAgIGZv
ciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAgICAgICBmb3IgdXJsX3BhdGhz
IGluIGl0ZXJ2YWx1ZXMocGF0aHMpOgogICAgICAgICAgICAgdGVzdHNfcGF0aCA9IHVybF9wYXRo
c1sidGVzdHNfcGF0aCJdCiAgICAgICAgICAgICBtZXRhZGF0YV9wYXRoID0gdXJsX3BhdGhzWyJt
ZXRhZGF0YV9wYXRoIl0KICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5h
bWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0aCk6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKaW5kZXggYWIwNmM0
MWFmOThmNWMyYzg4Y2I4OWVlNThiYjdhYTIzNGU5MDI0My4uZmFhZjg2ZmVkNmE2MzhkZGI1MTg0
NDY3YThlMDcwODIzN2E0NjllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQu
bG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0LmxvZwpAQCAtMjAsMTAgKzIwLDEyIEBA
IExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4cGVjdGVkLnB5CiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4cGVjdGVkdHJlZS5weQogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5CisvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2lu
c3RydW1lbnRzLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0dXBkYXRlLnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2Nlc3MucHkKIC9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvcHJvZHVjdHMucHkKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3Rkcml2ZXItZXh0cmEuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
ZWJkcml2ZXJfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkKaW5k
ZXggMTYyZmZhZTNmYzkzYWVlYjI5YTI1MzVlODI5YWY0NWI5ZTE1YzFmMy4uMThiZTY4MDYwNzRk
YTg2ODVjZDM5Mjg2MTk0NTVlZDI3NWJmZThlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dl
YmRyaXZlcl9zZXJ2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dlYmRyaXZlcl9zZXJ2ZXIucHkK
QEAgLTgsNiArOCw4IEBAIGltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IG1venByb2Nlc3MKIAor
ZnJvbSAucHJvY2VzcyBpbXBvcnQgY2FzdF9lbnYKKwogCiBfX2FsbF9fID0gWyJTZWxlbml1bVNl
cnZlciIsICJDaHJvbWVEcml2ZXJTZXJ2ZXIiLCAiQ1dUQ2hyb21lRHJpdmVyU2VydmVyIiwKICAg
ICAgICAgICAgIkVkZ2VDaHJvbWl1bURyaXZlclNlcnZlciIsICJPcGVyYURyaXZlclNlcnZlciIs
ICJHZWNrb0RyaXZlclNlcnZlciIsCkBAIC01NSw3ICs1Nyw3IEBAIGNsYXNzIFdlYkRyaXZlclNl
cnZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcm9jID0gbW96cHJvY2Vzcy5Qcm9jZXNzSGFu
ZGxlcigKICAgICAgICAgICAgIHNlbGYuX2NtZCwKICAgICAgICAgICAgIHByb2Nlc3NPdXRwdXRM
aW5lPXNlbGYub25fb3V0cHV0LAotICAgICAgICAgICAgZW52PXNlbGYuZW52LAorICAgICAgICAg
ICAgZW52PWNhc3RfZW52KHNlbGYuZW52KSwKICAgICAgICAgICAgIHN0b3JlT3V0cHV0PUZhbHNl
KQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBXZWJEcml2ZXI6ICVzIiAl
ICcgJy5qb2luKHNlbGYuX2NtZCkpCkBAIC04MiwxNCArODQsMTMgQEAgY2xhc3MgV2ViRHJpdmVy
U2VydmVyKG9iamVjdCk6CiAKICAgICBkZWYgc3RvcChzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAg
ICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBXZWJEcml2ZXIiKQotICAgICAgICBpZiBz
ZWxmLmlzX2FsaXZlOgorICAgICAgICBpZiBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBr
aWxsX3Jlc3VsdCA9IHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgICBpZiBmb3JjZSBhbmQg
a2lsbF9yZXN1bHQgIT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvYy5raWxs
KDkpCiAgICAgICAgICAgICByZXR1cm4ga2lsbF9yZXN1bHQKLSAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLmlzX2FsaXZlCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2ZSgpCiAKLSAgICBA
cHJvcGVydHkKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNhdHRy
KHNlbGYuX3Byb2MsICJwcm9jIikgYW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUKIApAQCAt
MTg0LDcgKzE4NSwxMSBAQCBjbGFzcyBHZWNrb0RyaXZlclNlcnZlcihXZWJEcml2ZXJTZXJ2ZXIp
OgogICAgICAgICAgICAgICAgICBob3N0PSIxMjcuMC4wLjEiLCBwb3J0PU5vbmUsIGFyZ3M9Tm9u
ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUlVTVF9C
QUNLVFJBQ0UiXSA9ICIxIgotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIGhvc3Q9aG9zdCwgcG9ydD1wb3J0LCBlbnY9ZW52LCBhcmdzPWFyZ3Mp
CisgICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1jYXN0X2VudihlbnYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1hcmdzKQogICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IG1hcmlvbmV0
dGVfcG9ydAogCiAgICAgZGVmIG1ha2VfY29tbWFuZChzZWxmKToKQEAgLTIwOSw3ICsyMTQsMTEg
QEAgY2xhc3MgU2Vydm9Ecml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKICAgICAgICAgICAg
ICAgICAgcG9ydD1Ob25lLCBhcmdzPU5vbmUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNv
cHkoKQogICAgICAgICBlbnZbIlJVU1RfQkFDS1RSQUNFIl0gPSAiMSIKLSAgICAgICAgV2ViRHJp
dmVyU2VydmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBob3N0PWhvc3QsIHBvcnQ9
cG9ydCwgZW52PWVudiwgYXJncz1hcmdzKQorICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX19pbml0
X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBob3N0PWhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PXBvcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9Y2FzdF9lbnYoZW52KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncykKICAgICAgICAgc2VsZi5i
aW5hcnlfYXJncyA9IGJpbmFyeV9hcmdzCiAKICAgICBkZWYgbWFrZV9jb21tYW5kKHNlbGYpOgpA
QCAtMjY0LDcgKzI3Myw3IEBAIGRlZiB3YWl0X2Zvcl9zZXJ2aWNlKGFkZHIsIHRpbWVvdXQ9NjAp
OgogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICBwYXNzCiAgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGVbMF0gIT0gZXJy
bm8uRUNPTk5SRUZVU0VEOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJF
RlVTRUQ6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggOTIzYmRhYTU1ODU3ZTc5M2U4
ZDZlOGM1ODcxNjczNjBhZWQ0YWU5NC4uOTYyMjdiYjQ2OTA1ZTE2OGQ2OTFlMzUwOTQ2ZGJmYmE2
ODA5ODI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MK
IGltcG9ydCBzeXMKQEAgLTE2LDkgKzE2LDkgQEAgZGVmIGFic19wYXRoKHBhdGgpOgogCiAKIGRl
ZiB1cmxfb3JfcGF0aChwYXRoKToKLSAgICBpbXBvcnQgdXJscGFyc2UKKyAgICBmcm9tIHNpeC5t
b3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAKLSAgICBwYXJzZWQgPSB1cmxwYXJz
ZS51cmxwYXJzZShwYXRoKQorICAgIHBhcnNlZCA9IHVybHBhcnNlKHBhdGgpCiAgICAgaWYgbGVu
KHBhcnNlZC5zY2hlbWUpID4gMjoKICAgICAgICAgcmV0dXJuIHBhdGgKICAgICBlbHNlOgpAQCAt
MzcsNyArMzcsNyBAQCBkZWYgcmVxdWlyZV9hcmcoa3dhcmdzLCBuYW1lLCB2YWx1ZV9mdW5jPU5v
bmUpOgogZGVmIGNyZWF0ZV9wYXJzZXIocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgIGZyb20g
bW96bG9nIGltcG9ydCBjb21tYW5kbGluZQogCi0gICAgaW1wb3J0IHByb2R1Y3RzCisgICAgZnJv
bSAuIGltcG9ydCBwcm9kdWN0cwogCiAgICAgaWYgcHJvZHVjdF9jaG9pY2VzIGlzIE5vbmU6CiAg
ICAgICAgIGNvbmZpZ19kYXRhID0gY29uZmlnLmxvYWQoKQpAQCAtMTM3LDYgKzEzNywxNCBAQCBz
Y2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgbGlzdGluZyB0ZXN0cyB0byBpbmNsdWRlIikK
ICAgICB0ZXN0X3NlbGVjdGlvbl9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2tpcC10aW1lb3V0Iiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iU2tpcCB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byB0aW1lIG91dCIpCisgICAg
dGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNraXAtaW1wbGVtZW50YXRpb24t
c3RhdHVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJh
cHBlbmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
bm90LWltcGxlbWVudGluZyIsICJiYWNrbG9nIiwgImltcGxlbWVudGluZyJdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTa2lwIHRlc3RzIHRoYXQgaGF2ZSB0
aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24gc3RhdHVzIikKKyAgICAjIFRPRE86IFJlbW92ZSB0aGlz
IHdoZW4gUVVJQyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgdGVzdF9zZWxlY3Rpb25fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLWVuYWJsZS1xdWljIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0i
RW5hYmxlIHRlc3RzIHRoYXQgcmVxdWlyZSBRVUlDIHNlcnZlciAoZGVmYXVsdDogZmFsc2UpIikK
KwogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10YWciLCBhY3Rpb249
ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRlIGluIHRoZSBydW4u
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGFiZWxzIHN0
YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVjdG9yaWVzLiIpCkBA
IC0yMTAsMTMgKzIxOCwxNyBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxlIikKICAgICBjb25m
aWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQWxsb3cgdGhlIHdwdHJ1bm5lciB0byBpbnN0
YWxsIGZvbnRzIG9uIHlvdXIgc3lzdGVtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9Ikluc3RhbGwgYWRkaXRpb25hbCBzeXN0ZW0gZm9udHMgb24geW91ciBzeXN0ZW0iKQor
ICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8taW5zdGFsbC1mb250cyIsIGRlc3Q9
Imluc3RhbGxfZm9udHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkRvIG5vdCBpbnN0YWxsIGFkZGl0aW9uYWwgc3lzdGVtIGZvbnRz
IG9uIHlvdXIgc3lzdGVtIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWZvbnQt
ZGlyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImZvbnRfZGlyIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gbG9jYWwgZm9udCBpbnN0
YWxsYXRpb24gZGlyZWN0b3J5IiwgZGVmYXVsdD1Ob25lKQogICAgIGNvbmZpZ19ncm91cC5hZGRf
YXJndW1lbnQoIi0taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZSIsIGRl
ZmF1bHQ9Tm9uZSkKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWhlYWRsZXNz
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImhlYWRsZXNzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJ1biBicm93c2VyIGluIGhlYWRsZXNzIG1vZGUi
KQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0taW5zdHJ1bWVudC10by1maWxlIiwg
YWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRo
IHRvIHdyaXRlIGluc3RydW1lbnRhdGlvbiBsb2dzIHRvIikKIAogICAgIGJ1aWxkX3R5cGUgPSBw
YXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgYnVpbGRfdHlwZS5hZGRf
YXJndW1lbnQoIi0tZGVidWctYnVpbGQiLCBkZXN0PSJkZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCkBAIC0yNTUsMTIgKzI2NywyMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAg
Z2Vja29fZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJHZWNrby1zcGVjaWZpYyIp
CiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXByZWZzLXJvb3QiLCBkZXN0PSJwcmVm
c19yb290IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGZvbGRlciBjb250YWluaW5nIGJyb3dzZXIg
cHJlZnMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcmVsb2FkLWJyb3dzZXIi
LCBkZXN0PSJwcmVsb2FkX2Jyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IlByZWxvYWQgYSBnZWNrbyBp
bnN0YW5jZSBmb3IgZmFzdGVyIHJlc3RhcnRzIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tbm8tcHJlbG9hZC1icm93c2VyIiwgZGVzdD0icHJlbG9hZF9icm93c2VyIiwgYWN0aW9u
PSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0iRG9uJ3QgcHJlbG9hZCBhIGdlY2tvIGluc3RhbmNlIGZvciBmYXN0ZXIgcmVzdGFy
dHMiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWUxMHMiLCBkZXN0
PSJnZWNrb19lMTBzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVuIHRlc3RzIHdpdGhvdXQgZWxlY3Ryb2x5
c2lzIHByZWZlcmVuY2VzIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tZW5hYmxl
LXdlYnJlbmRlciIsIGRlc3Q9ImVuYWJsZV93ZWJyZW5kZXIiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJs
ZSB0aGUgV2ViUmVuZGVyIGNvbXBvc2l0b3IgaW4gR2Vja28gKGRlZmF1bHRzIHRvIGRpc2FibGVk
KS4iKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1uby1lbmFibGUtd2VicmVuZGVy
IiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHRoZSBXZWJSZW5kZXIgY29tcG9z
aXRvciBpbiBHZWNrby4iKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUt
Zmlzc2lvbiIsIGRlc3Q9ImVuYWJsZV9maXNzaW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgZmlz
c2lvbiBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAgZ2Vja29fZ3JvdXAu
YWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS1maXNzaW9uIiwgZGVzdD0iZW5hYmxlX2Zpc3Npb24i
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iRGlzYWJsZSBmaXNzaW9uIGluIEdlY2tvLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLXN0YWNrZml4LWRpciIsIGRlc3Q9InN0YWNrZml4X2RpciIsIGFjdGlvbj0ic3RvcmUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBj
b250YWluaW5nIGFzc2VydGlvbiBzdGFjayBmaXhpbmcgc2NyaXB0cyIpCiAgICAgZ2Vja29fZ3Jv
dXAuYWRkX2FyZ3VtZW50KCItLXNldHByZWYiLCBkZXN0PSJleHRyYV9wcmVmcyIsIGFjdGlvbj0n
YXBwZW5kJywKQEAgLTUzNCw5ICs1NTQsNiBAQCBkZWYgY2hlY2tfYXJncyhrd2FyZ3MpOgogICAg
ICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJdID0gcGF0aAogCiAgICAgaWYga3dhcmdzWydl
eHRyYV9wcmVmcyddOgotICAgICAgICAjIElmIGEgc2luZ2xlIHByZWYgaXMgcGFzc2VkIGluIGFz
IGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAotICAgICAgICBpZiB0eXBlKGt3YXJnc1snZXh0cmFf
cHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Ci0gICAgICAgICAgICBrd2FyZ3NbJ2V4dHJhX3By
ZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcyddXQogICAgICAgICBtaXNzaW5nID0gYW55KCc9
JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBpbiBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10pCiAg
ICAgICAgIGlmIG1pc3Npbmc6CiAgICAgICAgICAgICBwcmludCgiUHJlZmVyZW5jZXMgdmlhIC0t
c2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5cy5zdGRlcnIpCkBA
IC01NTMsNiArNTcwLDEwIEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgaWYga3dhcmdz
WyJlbmFibGVfd2VicmVuZGVyIl0gaXMgTm9uZToKICAgICAgICAga3dhcmdzWyJlbmFibGVfd2Vi
cmVuZGVyIl0gPSBGYWxzZQogCisgICAgaWYga3dhcmdzWyJwcmVsb2FkX2Jyb3dzZXIiXSBpcyBO
b25lOgorICAgICAgICAjIERlZmF1bHQgdG8gcHJlbG9hZGluZyBhIGdlY2tvIGluc3RhbmNlIGlm
IHdlJ3JlIG9ubHkgcnVubmluZyBhIHNpbmdsZSBwcm9jZXNzCisgICAgICAgIGt3YXJnc1sicHJl
bG9hZF9icm93c2VyIl0gPSBrd2FyZ3NbInByb2Nlc3NlcyJdID09IDEKKwogICAgIHJldHVybiBr
d2FyZ3MKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bG9nZ2luZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRsb2dnaW5nLnB5CmluZGV4IDY5Y2VlNzQ0ODc5ZWI2NzgwY2I5OWVjOTMxMjM5
MjJlMTY2ZDllMTYuLjQ0NGQxZDk2MmQyNTg3MzEwOTk3N2I5MzdkOTZjODZjYjI5M2NkOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRsb2dnaW5nLnB5CkBAIC0xNCw3ICsxNCw3IEBAIGRlZiBzZXR1cChhcmdzLCBkZWZhdWx0cywg
Zm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0ZXJfZGVmYXVsdHMpCiAgICAg
c2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKLSAgICBmb3IgbmFtZSBpbiBhcmdzLmtleXMoKToKKyAg
ICBmb3IgbmFtZSBpbiBsaXN0KGFyZ3Mua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3
aXRoKCJsb2dfIik6CiAgICAgICAgICAgICBhcmdzLnBvcChuYW1lKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CmluZGV4IDQ1ZTIxNDdmYzRjYTUwOWE5ZGUyOGZj
ZGNiYjcwN2Q4MjM0NTk3MTEuLmM1MzlkNDM2N2U5NGE1ZTUyNWM1ZDhkOGU5ZWRjMzExNmU4YWZm
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9iYXNlLnB5CkBAIC0xLDQg
KzEsNSBAQAogaW1wb3J0IGFiYworZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcmtleXMs
IGl0ZXJ2YWx1ZXMKIAogZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yCiBmcm9tIC4ucGFy
c2VyIGltcG9ydCBwYXJzZQpAQCAtMTg2LDIxICsxODcsMjEgQEAgY2xhc3MgTWFuaWZlc3RJdGVt
KG9iamVjdCk6CiAgICAgZGVmIF9mbGF0dGVuKHNlbGYpOgogICAgICAgICBydiA9IHt9CiAgICAg
ICAgIGZvciBub2RlIGluIFtzZWxmLCBzZWxmLnJvb3RdOgotICAgICAgICAgICAgZm9yIG5hbWUs
IHZhbHVlIGluIG5vZGUuX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgbmFtZSwg
dmFsdWUgaW4gaXRlcml0ZW1zKG5vZGUuX2RhdGEpOgogICAgICAgICAgICAgICAgIGlmIG5hbWUg
bm90IGluIHJ2OgogICAgICAgICAgICAgICAgICAgICBydltuYW1lXSA9IHZhbHVlCiAgICAgICAg
IHJldHVybiBydgogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0g
aW4gc2VsZi5fZmxhdHRlbigpLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgaXRlbSBpbiBpdGVy
aXRlbXMoc2VsZi5fZmxhdHRlbigpKToKICAgICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRl
ZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0
ZXJrZXlzKCk6CisgICAgICAgIGZvciBpdGVtIGluIGl0ZXJrZXlzKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcnZhbHVlcyhzZWxmKToKLSAg
ICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRlbigpLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gaXRlcnZhbHVlcyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWll
bGQgaXRlbQogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBjaGlsZCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKaW5kZXggYWFjZDc4NTcwNzJm
NDIwYTIwOWFlZWZmNTU5ZWMyYWUyOTQxNzBiYS4uM2IxMWU4MzAxMmFiNTBmZTBlYTI0MGFlMDU2
ZDAyYzg5NjhiNmE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tl
bmRzL2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5k
cy9jb25kaXRpb25hbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcGVyYXRvcgorZnJvbSBz
aXggaW1wb3J0IGVuc3VyZV90ZXh0LCBpdGVyaXRlbXMsIGl0ZXJrZXlzLCB0ZXh0X3R5cGUKIAog
ZnJvbSAuLm5vZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2Rl
LCBLZXlWYWx1ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2Rl
LCBWYXJpYWJsZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCkBAIC00Miw5ICs0Myw3
IEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYu
Y29uZGl0aW9uX2Z1bmMocnVuX2luZm8pCiAKICAgICBkZWYgc2V0X3ZhbHVlKHNlbGYsIHZhbHVl
KToKLSAgICAgICAgaWYgdHlwZSh2YWx1ZSkgbm90IGluIChzdHIsIHVuaWNvZGUpOgotICAgICAg
ICAgICAgdmFsdWUgPSB1bmljb2RlKHZhbHVlKQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUK
KyAgICAgICAgc2VsZi52YWx1ZSA9IGVuc3VyZV90ZXh0KHZhbHVlKQogCiAgICAgZGVmIHZhbHVl
X2FzKHNlbGYsIHR5cGVfZnVuYyk6CiAgICAgICAgICIiIkdldCB2YWx1ZSBhbmQgY29udmVydCB0
byBhIGdpdmVuIHR5cGUuCkBAIC0zMDEsOSArMzAwLDkgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9i
amVjdCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAg
dmFsdWVfbm9kZSA9IExpc3ROb2RlKCkKICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgot
ICAgICAgICAgICAgICAgIHZhbHVlX25vZGUuYXBwZW5kKFZhbHVlTm9kZSh1bmljb2RlKGl0ZW0p
KSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9ub2RlLmFwcGVuZChWYWx1ZU5vZGUodGV4dF90eXBl
KGl0ZW0pKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlX25vZGUgPSBWYWx1ZU5v
ZGUodW5pY29kZSh2YWx1ZSkpCisgICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFsdWVOb2RlKHRl
eHRfdHlwZSh2YWx1ZSkpCiAgICAgICAgIGlmIGNvbmRpdGlvbiBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbmRpdGlvbiwgQ29uZGl0aW9uYWxOb2RlKToKICAg
ICAgICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxOb2RlKCkKQEAgLTM2
OSwxOSArMzY4LDIzIEBAIGNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgogICAgIGRlZiBfZmxh
dHRlbihzZWxmKToKICAgICAgICAgcnYgPSB7fQogICAgICAgICBmb3Igbm9kZSBpbiBbc2VsZiwg
c2VsZi5yb290XToKLSAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBub2RlLl9kYXRhLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGl0ZXJpdGVtcyhub2Rl
Ll9kYXRhKToKICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBydjoKICAgICAgICAgICAg
ICAgICAgICAgcnZbbmFtZV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBp
dGVyaXRlbXMoc2VsZik6Ci0gICAgICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVy
aXRlbXMoKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcml0ZW1zKHNlbGYuX2ZsYXR0ZW4oKSk6
CiAgICAgICAgICAgICB5aWVsZCBpdGVtCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6Ci0gICAg
ICAgIGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVya2V5cygpOgorICAgICAgICBmb3Ig
aXRlbSBpbiBpdGVya2V5cyhzZWxmLl9mbGF0dGVuKCkpOgogICAgICAgICAgICAgeWllbGQgaXRl
bQogCisgICAgZGVmIGl0ZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgZm9yIGl0ZW0gaW4g
c2VsZi5fZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGl0ZW0sIHNlbGYuX2RhdGFbaXRlbV0KKwog
ICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIGtleSBu
b3QgaW4gc2VsZi5fZGF0YToKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQppbmRleCA3N2IxN2E1MDMyNWM3NzA2NzM5MWFiNjYzOWQwZTAyOWUzMzk1MDQ3Li4wZjgy
ZDcwMDZiNjllZDBlNDg1MjkwMzg3YjY1NzY4Yjg1OWE4NzAwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
bm9kZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCB4cmFuZ2UKK2Zy
b20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQogCiBjbGFzcyBOb2RlVmlzaXRvcihvYmplY3QpOgog
ICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRGF0YU5v
ZGUoTm9kZSk6CiAgICAgICAgICAgICBpbmRleCA9IGxlbihzZWxmLmNoaWxkcmVuKQogICAgICAg
ICAgICAgd2hpbGUgaW5kZXggPiAwIGFuZCBpc2luc3RhbmNlKHNlbGYuY2hpbGRyZW5baW5kZXgg
LSAxXSwgRGF0YU5vZGUpOgogICAgICAgICAgICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgICAg
IGZvciBpIGluIHhyYW5nZShpbmRleCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpbmRl
eCk6CiAgICAgICAgICAgICAgICAgaWYgb3RoZXIuZGF0YSA9PSBzZWxmLmNoaWxkcmVuW2ldLmRh
dGE6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkR1cGxpY2F0ZSBrZXkg
JXMiICUgc2VsZi5jaGlsZHJlbltpXS5kYXRhKQogICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5p
bnNlcnQoaW5kZXgsIG90aGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L3BhcnNlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKaW5kZXggNjJj
NWY3ZDNhNDY3OWNhOWFlYTk2MWFmZWNjNjNmMjVlN2E1NDk2Mi4uOTExZWZhYzgwZjI3ZWU5MmRm
N2ZiZWE1NzdjNDE0NjkxODk5Nzc1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlm
ZXN0L3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBA
IC0xNCw4ICsxNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFs
cwogCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgQnl0ZXNJTwotZnJv
bSBzaXgubW92ZXMgaW1wb3J0IHhyYW5nZQorZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0
ZXh0X3R5cGUsIEJ5dGVzSU8sIHVuaWNocgorZnJvbSBzaXgubW92ZXMgaW1wb3J0IHJhbmdlCiAK
IGZyb20gLm5vZGUgaW1wb3J0IChOb2RlLCBBdG9tTm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUs
IEJpbmFyeU9wZXJhdG9yTm9kZSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25hbE5vZGUs
IERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsCkBAIC03NSw2ICs3
NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICBzZWxmLnN0YXRlID0gc2Vs
Zi5saW5lX3N0YXJ0X3N0YXRlCiAgICAgICAgIHNlbGYubmV4dF9zdGF0ZSA9IHNlbGYuZGF0YV9s
aW5lX3N0YXRlCiAgICAgICAgIHNlbGYubGluZV9udW1iZXIgPSAwCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSAiIgogCiAgICAgZGVmIHRva2VuaXplKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgIHNl
bGYucmVzZXQoKQpAQCAtMTM2LDkgKzEzNywxMCBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToK
ICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5hcHBlbmQoc2VsZi5pbmRleCkKICAgICAg
ICAgICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9zdGFydCwgTm9uZSkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuaW5kZXggPCBzZWxmLmluZGVudF9sZXZlbHNbLTFd
OgotICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVscy5wb3AoKQotICAgICAgICAgICAg
ICAgIHlpZWxkICh0b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCisgICAgICAgICAgICBpZiBz
ZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICB3aGls
ZSBzZWxmLmluZGV4IDwgc2VsZi5pbmRlbnRfbGV2ZWxzWy0xXToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbmRlbnRfbGV2ZWxzLnBvcCgpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkICh0
b2tlbl90eXBlcy5ncm91cF9lbmQsIE5vbmUpCiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRl
cnJpYmxlOyBpZiB3ZSB3ZXJlIHBhcnNpbmcgYW4gZXhwcmVzc2lvbgogICAgICAgICAgICAgICAg
ICMgdGhlbiB0aGUgbmV4dF9zdGF0ZSB3aWxsIGJlIGV4cHJfb3JfdmFsdWUgYnV0IHdoZW4gd2Ug
ZGVpbmRlbnQKICAgICAgICAgICAgICAgICAjIGl0IG11c3QgYWx3YXlzIGJlIGEgaGVhZGluZyBv
ciBrZXkgbmV4dCBzbyB3ZSBnbyBiYWNrIHRvIGRhdGFfbGluZV9zdGF0ZQpAQCAtMzAzLDcgKzMw
NSw4IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogCiAgICAgZGVmIHZhbHVlX3N0YXRlKHNl
bGYpOgogICAgICAgICBzZWxmLnNraXBfd2hpdGVzcGFjZSgpCi0gICAgICAgIGlmIHNlbGYuY2hh
cigpIGluICgiJyIsICciJyk6CisgICAgICAgIGMgPSBzZWxmLmNoYXIoKQorICAgICAgICBpZiBj
IGluICgiJyIsICciJyk6CiAgICAgICAgICAgICBxdW90ZV9jaGFyID0gc2VsZi5jaGFyKCkKICAg
ICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICB5aWVsZCAodG9rZW5fdHlwZXMu
c3RyaW5nLCBzZWxmLmNvbnN1bWVfc3RyaW5nKHF1b3RlX2NoYXIpKQpAQCAtMzExLDEwICszMTQs
MTIgQEAgY2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0
ZSA9IHNlbGYuY29tbWVudF9zdGF0ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBzZWxmLnN0YXRlID0gc2VsZi5saW5lX2VuZF9zdGF0ZQotICAgICAgICBlbGlmIHNlbGYuY2hh
cigpID09ICJAIjoKKyAgICAgICAgZWxpZiBjID09ICJAIjoKICAgICAgICAgICAgIHNlbGYuY29u
c3VtZSgpCiAgICAgICAgICAgICBmb3IgXywgdmFsdWUgaW4gc2VsZi52YWx1ZV9pbm5lcl9zdGF0
ZSgpOgogICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuX3R5cGVzLmF0b20sIHZhbHVlCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5saXN0X3N0
YXJ0X3N0YXRlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi52
YWx1ZV9pbm5lcl9zdGF0ZQogCkBAIC00OTQsNyArNDk5LDcgQEAgY2xhc3MgVG9rZW5pemVyKG9i
amVjdCk6CiAKICAgICBkZWYgZGVjb2RlX2VzY2FwZShzZWxmLCBsZW5ndGgpOgogICAgICAgICB2
YWx1ZSA9IDAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxlbmd0aCk6CisgICAgICAgIGZvciBp
IGluIHJhbmdlKGxlbmd0aCk6CiAgICAgICAgICAgICBjID0gc2VsZi5jaGFyKCkKICAgICAgICAg
ICAgIHZhbHVlICo9IDE2CiAgICAgICAgICAgICB2YWx1ZSArPSBzZWxmLmVzY2FwZV92YWx1ZShj
KQpAQCAtNTk2LDYgKzYwMSw5IEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAg
c2VsZi5leHByZXNzaW9uX3ZhbHVlcygpCiAgICAgICAgICAgICBpZiBzZWxmLnRva2VuWzBdID09
IHRva2VuX3R5cGVzLnN0cmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlKCkKKyAgICAg
ICAgICAgIGVsaWYgc2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5saXN0X3N0YXJ0OgorICAg
ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCisgICAgICAgICAgICAgICAgc2VsZi5saXN0X3Zh
bHVlKCkKICAgICAgICAgICAgIHNlbGYuZW9mX29yX2VuZF9ncm91cCgpCiAgICAgICAgIGVsaWYg
c2VsZi50b2tlblswXSA9PSB0b2tlbl90eXBlcy5hdG9tOgogICAgICAgICAgICAgc2VsZi5hdG9t
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKaW5kZXggM2IyOWM5OWVkZTdj
YWM1OGVkZTVkNDgyMzc2OTZlMzBjOWQ4NTZjNy4uZWM4ZDgwZWQ2ZjcxNTFiMjkxM2Y5NzVkZjBm
YzM4N2ExMjdkZTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Nlcmlh
bGl6ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkKQEAg
LTEsNyArMSwxMCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCitm
cm9tIHNpeCBpbXBvcnQgZW5zdXJlX3RleHQKKwogZnJvbSAubm9kZSBpbXBvcnQgTm9kZVZpc2l0
b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlCiBmcm9tIC5wYXJz
ZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMgPSB7djoiQCVzIiAlIGsg
Zm9yIChrLHYpIGluIGF0b21zLml0ZW1zKCl9CithdG9tX25hbWVzID0ge3Y6ICJAJXMiICUgayBm
b3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAogbmFtZWRfZXNjYXBlcyA9IHsiXGEiLCAiXGIi
LCAiXGYiLCAiXG4iLCAiXHIiLCAiXHQiLCAiXHYifQogCkBAIC0xMCw3ICsxMyw3IEBAIGRlZiBl
c2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgIHJ2ID0gIiIKICAgICBmb3IgYyBpbiBzdHJp
bmc6CiAgICAgICAgIGlmIGMgaW4gbmFtZWRfZXNjYXBlczoKLSAgICAgICAgICAgIHJ2ICs9IGMu
ZW5jb2RlKCJ1bmljb2RlX2VzY2FwZSIpCisgICAgICAgICAgICBydiArPSBjLmVuY29kZSgidW5p
Y29kZV9lc2NhcGUiKS5kZWNvZGUoKQogICAgICAgICBlbGlmIGMgPT0gIlxcIjoKICAgICAgICAg
ICAgIHJ2ICs9ICJcXFxcIgogICAgICAgICBlbGlmIGMgPCAnXHgyMCc6CkBAIC0xOSwxMCArMjIs
NyBAQCBkZWYgZXNjYXBlKHN0cmluZywgZXh0cmFzPSIiKToKICAgICAgICAgICAgIHJ2ICs9ICJc
XCIgKyBjCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBydiArPSBjCi0gICAgaWYgaXNpbnN0
YW5jZShydiwgdW5pY29kZSk6Ci0gICAgICAgIHJldHVybiBydi5lbmNvZGUoInV0ZjgiKQotICAg
IGVsc2U6Ci0gICAgICAgIHJldHVybiBydgorICAgIHJldHVybiBlbnN1cmVfdGV4dChydikKIAog
CiBjbGFzcyBNYW5pZmVzdFNlcmlhbGl6ZXIoTm9kZVZpc2l0b3IpOgpAQCAtNzQsMTAgKzc0LDcg
QEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJu
IFsiIi5qb2luKHJ2KV0KIAogICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2VsZiwgbm9kZSk6Ci0g
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUuZGF0YSwgKHN0ciwgdW5pY29kZSkpOgotICAg
ICAgICAgICAgZGF0YSA9IHVuaWNvZGUobm9kZS5kYXRhKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZGF0YSA9IG5vZGUuZGF0YQorICAgICAgICBkYXRhID0gZW5zdXJlX3RleHQobm9kZS5k
YXRhKQogICAgICAgICBpZiAoIiMiIGluIGRhdGEgb3IKICAgICAgICAgICAgIGRhdGEuc3RhcnRz
d2l0aCgiaWYgIikgb3IKICAgICAgICAgICAgIChpc2luc3RhbmNlKG5vZGUucGFyZW50LCBMaXN0
Tm9kZSkgYW5kCkBAIC0xMDMsNyArMTAwLDcgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5v
ZGVWaXNpdG9yKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWYgdmlzaXRfTnVtYmVyTm9k
ZShzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIFtzdHIobm9kZS5kYXRhKV0KKyAgICAgICAg
cmV0dXJuIFtlbnN1cmVfdGV4dChub2RlLmRhdGEpXQogCiAgICAgZGVmIHZpc2l0X1ZhcmlhYmxl
Tm9kZShzZWxmLCBub2RlKToKICAgICAgICAgcnYgPSBlc2NhcGUobm9kZS5kYXRhKQpAQCAtMTM3
LDEwICsxMzQsMTAgQEAgY2xhc3MgTWFuaWZlc3RTZXJpYWxpemVyKE5vZGVWaXNpdG9yKToKICAg
ICAgICAgcmV0dXJuIFsiICIuam9pbihjaGlsZHJlbildCiAKICAgICBkZWYgdmlzaXRfVW5hcnlP
cGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5vZGUuZGF0YSld
CisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogICAgIGRlZiB2aXNp
dF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJldHVybiBbc3RyKG5v
ZGUuZGF0YSldCisgICAgICAgIHJldHVybiBbZW5zdXJlX3RleHQobm9kZS5kYXRhKV0KIAogCiBk
ZWYgc2VyaWFsaXplKHRyZWUsICphcmdzLCAqKmt3YXJncyk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9jb25kaXRpb25hbC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5CmluZGV4IGZiYzc1ZWM4Mzkw
ZmEzNGFiN2UzY2FhMzkxYzNlNmU3ODM3YTU1NGQuLmFmNGQ5OTYwMzIyYzdlOGRmY2NiMDc2YTJl
NDY2MTI1NDU3ZDE4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0
cy90ZXN0X2NvbmRpdGlvbmFsLnB5CkBAIC0xLDE5ICsxLDE1IEBACi1pbXBvcnQgcHl0ZXN0Ci1p
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLmJhY2tlbmRzIGltcG9ydCBjb25k
aXRpb25hbAogZnJvbSAuLm5vZGUgaW1wb3J0IEJpbmFyeUV4cHJlc3Npb25Ob2RlLCBCaW5hcnlP
cGVyYXRvck5vZGUsIFZhcmlhYmxlTm9kZSwgTnVtYmVyTm9kZQogCiAKLUBweXRlc3QubWFyay54
ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCi0gICAgICAgICAgICAgICAgICAgcmVhc29uPSJ3
cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBjbGFzcyBUZXN0Q29uZGl0
aW9uYWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNlbGYsIGlucHV0X3Rl
eHQpOgogICAgICAgICByZXR1cm4gY29uZGl0aW9uYWwuY29tcGlsZShpbnB1dF90ZXh0KQogCiAg
ICAgZGVmIHRlc3RfZ2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0
YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTI1LDE5ICsyMSwxOSBAQCBr
ZXk6IHZhbHVlCiAKICAgICAgICAgbWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZSIpCiAgICAg
ICAgIGNoaWxkcmVuID0gbGlzdChpdGVtIGZvciBpdGVtIGluIG1hbmlmZXN0Lml0ZXJjaGlsZHJl
bigpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY2hpbGRyZW4pLCAxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCiAgICAgICAgIHNlY3Rpb24gPSBj
aGlsZHJlblswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLm5hbWUsICJIZWFk
aW5nIDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24ubmFtZSwgIkhlYWRpbmcg
MSIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIs
IHsiYSI6IDF9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiA3fSksICJ2YWx1ZV8zIikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoImtleSIpLCAidmFsdWUiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiLCB7ImEiOiAx
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3Ro
ZXJfa2V5IiwgeyJhIjogMn0pLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6IDd9KSwgInZhbHVlXzMiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlY3Rpb24uZ2V0KCJrZXkiKSwgInZhbHVlIikKIAogICAgIGRlZiB0
ZXN0X2dldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIi
CiBrZXk6IHZhbHVlCiAKIFtIZWFkaW5nIDFdCkBAIC01MiwxMSArNDgsMTEgQEAga2V5OiB2YWx1
ZQogICAgICAgICBjaGlsZHJlbiA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVy
Y2hpbGRyZW4oKSkKICAgICAgICAgc2VjdGlvbiA9IGNoaWxkcmVuWzBdCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIsIHsiYSI6ICIxIn0pLCAidmFs
dWVfMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXki
LCB7ImEiOiAxfSksICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9u
LmdldCgib3RoZXJfa2V5IiwgeyJhIjogIjEifSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJfa2V5IiwgeyJhIjogMX0pLCAidmFsdWVfMyIp
CiAKICAgICBkZWYgdGVzdF9nZXRfMihzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAg
ICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBhWzFdID09ICJiIjogdmFsdWVfMQogICBpZiBhWzFd
ID09IDI6IHZhbHVlXzIKQEAgLTY1LDExICs2MSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5p
ZmVzdC5nZXQoImtleSIsIHsiYSI6ICJhYiJ9KSwgInZhbHVlXzEiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAiYWIi
fSksICJ2YWx1ZV8xIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtl
eSIsIHsiYSI6IFsxLCAyXX0pLCAidmFsdWVfMiIpCiAKICAgICBkZWYgdGVzdF9nZXRfMyhzZWxm
KToKLSAgICAgICAgZGF0YSA9ICIiIgorICAgICAgICBkYXRhID0gYiIiIgoga2V5OgogICBpZiBh
WzFdID09ICJhYiJbMV06IHZhbHVlXzEKICAgaWYgYVsxXSA9PSAyOiB2YWx1ZV8yCkBAIC03OCwx
MSArNzQsMTEgQEAga2V5OgogCiAgICAgICAgIG1hbmlmZXN0ID0gc2VsZi5jb21waWxlKGRhdGEp
CiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiAi
YWIifSksICJ2YWx1ZV8xIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0
KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImFiIn0pLCAidmFsdWVfMSIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiLCB7ImEiOiBbMSwgMl19KSwgInZh
bHVlXzIiKQogCiAgICAgZGVmIHRlc3Rfc2V0XzAoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIK
KyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAiYSI6IHZhbHVlXzEKICAgaWYg
YSA9PSAiYiI6IHZhbHVlXzIKQEAgLTkyLDEwICs4OCwxMCBAQCBrZXk6CiAKICAgICAgICAgbWFu
aWZlc3Quc2V0KCJuZXdfa2V5IiwgInZhbHVlX25ldyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJuZXdfa2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG1hbmlmZXN0LmdldCgibmV3X2tleSIpLCAidmFsdWVfbmV3IikKIAogICAg
IGRlZiB0ZXN0X3NldF8xKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEg
PSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2YWx1
ZV8yCkBAIC0xMDYsMTEgKzEwMiwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0KCJr
ZXkiLCAidmFsdWVfbmV3IikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtYW5pZmVzdC5n
ZXQoImtleSIpLCAidmFsdWVfbmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuaWZl
c3QuZ2V0KCJrZXkiLCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV9uZXciKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikKIAog
ICAgIGRlZiB0ZXN0X3NldF8yKHNlbGYpOgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRh
dGEgPSBiIiIiCiBrZXk6CiAgIGlmIGEgPT0gImEiOiB2YWx1ZV8xCiAgIGlmIGEgPT0gImIiOiB2
YWx1ZV8yCkBAIC0xMjUsMTEgKzEyMSwxMSBAQCBrZXk6CiAKICAgICAgICAgbWFuaWZlc3Quc2V0
KCJrZXkiLCAidmFsdWVfbmV3IiwgZXhwcikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyht
YW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwgInZhbHVlX25ldyIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG1hbmlmZXN0LmdldCgia2V5IiwgeyJhIjogImEifSksICJ2YWx1ZV8xIikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIsIHsiYSI6IDF9KSwg
InZhbHVlX25ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXki
LCB7ImEiOiAiYSJ9KSwgInZhbHVlXzEiKQogCiAgICAgZGVmIHRlc3RfYXBpXzAoc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleToKICAgaWYgYSA9PSAx
LjU6IHZhbHVlXzEKICAgdmFsdWVfMgpAQCAtMTM4LDggKzEzNCw4IEBAIGtleV8xOiBvdGhlcl92
YWx1ZQogICAgICAgICBtYW5pZmVzdCA9IHNlbGYuY29tcGlsZShkYXRhKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG1hbmlmZXN0LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1h
bmlmZXN0LnJvb3QsIG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3Qu
aGFzX2tleSgia2V5XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNf
a2V5KCJrZXlfMiIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5p
dGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggODA1ZTQ3YjM3MWY1YTcz
MDc2NWYzZTVkMWFjNWY2Yzk0ZGMzZTk5Ny4uMjNiZWIyYmVmMjA4YTIxMTA3YjEwODYyMGZkNTRm
MWVjNTY1NGQ4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3RfcGFyc2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3Bh
cnNlci5weQpAQCAtMTgsOSArMTgsOSBAQCBjbGFzcyBUZXN0RXhwcmVzc2lvbih1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkKIAogICAgIGRl
ZiBtYXRjaChzZWxmLCBleHBlY3RlZF9ub2RlLCBhY3R1YWxfbm9kZSk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25h
bWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbm9kZVsxXSwgYWN0dWFs
X25vZGUuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGV4cGVjdGVkX25vZGVb
Ml0pLCBsZW4oYWN0dWFsX25vZGUuY2hpbGRyZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX25vZGVbMF0sIGFjdHVhbF9ub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ub2RlWzFdLCBhY3R1YWxfbm9kZS5kYXRhKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9ub2RlWzJdKSwgbGVuKGFjdHVh
bF9ub2RlLmNoaWxkcmVuKSkKICAgICAgICAgZm9yIGV4cGVjdGVkX2NoaWxkLCBhY3R1YWxfY2hp
bGQgaW4gemlwKGV4cGVjdGVkX25vZGVbMl0sIGFjdHVhbF9ub2RlLmNoaWxkcmVuKToKICAgICAg
ICAgICAgIHNlbGYubWF0Y2goZXhwZWN0ZWRfY2hpbGQsIGFjdHVhbF9jaGlsZCkKIApAQCAtMTA1
LDYgKzEwNSw0NSBAQCBrZXk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5wYXJzZShiImtleTogQHRydWUiKQogCisg
ICAgZGVmIHRlc3RfbGlzdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBhcmUoCisgICAg
ICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTogW2FdCisgIFtiXSIiIiwKKyAgICAgICAg
ICAgIFsiRGF0YU5vZGUiLCBOb25lLAorICAgICAgICAgICAgIFtbIktleVZhbHVlTm9kZSIsICJr
ZXkiLAorICAgICAgICAgICAgICAgW1siQ29uZGl0aW9uYWxOb2RlIiwgTm9uZSwKKyAgICAgICAg
ICAgICAgICAgW1siQmluYXJ5RXhwcmVzc2lvbk5vZGUiLCBOb25lLAorICAgICAgICAgICAgICAg
ICAgIFtbIkJpbmFyeU9wZXJhdG9yTm9kZSIsICI9PSIsIFtdXSwKKyAgICAgICAgICAgICAgICAg
ICAgWyJWYXJpYWJsZU5vZGUiLCAieCIsIFtdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgWyJO
dW1iZXJOb2RlIiwgIjEiLCBbXV0KKyAgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgICAgICBbIkxpc3ROb2RlIiwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBbWyJW
YWx1ZU5vZGUiLCAiYSIsIFtdXV1dLAorICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAg
ICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIlZhbHVlTm9kZSIs
ICJiIiwgW11dXV1dXV1dKQorCisgICAgZGVmIHRlc3RfbGlzdF9oZWFkaW5nKHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbXBhcmUoCisgICAgICAgICAgICBiIiIiCitrZXk6CisgIGlmIHggPT0gMTog
W2FdCitbYl0iIiIsCisgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKKyAgICAgICAgICAg
ICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKKyAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFs
Tm9kZSIsIE5vbmUsCisgICAgICAgICAgICAgICAgIFtbIkJpbmFyeUV4cHJlc3Npb25Ob2RlIiwg
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBbWyJCaW5hcnlPcGVyYXRvck5vZGUiLCAiPT0iLCBb
XV0sCisgICAgICAgICAgICAgICAgICAgIFsiVmFyaWFibGVOb2RlIiwgIngiLCBbXV0sCisgICAg
ICAgICAgICAgICAgICAgICAgIFsiTnVtYmVyTm9kZSIsICIxIiwgW11dCisgICAgICAgICAgICAg
ICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgICAgWyJMaXN0Tm9kZSIsIE5vbmUsCisgICAg
ICAgICAgICAgICAgICAgICAgW1siVmFsdWVOb2RlIiwgImEiLCBbXV1dXSwKKyAgICAgICAgICAg
ICAgICAgIF1dXV0sCisgICAgICAgICAgICAgIFsiRGF0YU5vZGUiLCAiYiIsIFtdXV1dKQorCiAg
ICAgZGVmIHRlc3RfaWZfMShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhw
YXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGIia2V5OiBpZiBmb28i
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFs
aXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIu
cHkKaW5kZXggN2ZlN2FjODVjYjhhMTRmMDUxMTNjYmZkNDgzYjhkMDQyYTA3Yjk4OS4uYjI0Nzg1
NTgwMWVhYzY1ODlhZWJkNDU1NWM2ZDllODY1M2UxMmU0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CkBAIC02LDggKzYsNiBAQCBp
bXBvcnQgcHl0ZXN0CiBmcm9tIC4uIGltcG9ydCBwYXJzZXIsIHNlcmlhbGl6ZXIKIAogCi1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgog
ICAgICAgICBzZWxmLnNlcmlhbGl6ZXIgPSBzZXJpYWxpemVyLk1hbmlmZXN0U2VyaWFsaXplcigp
CkBAIC0xOCwyNiArMTYsMjUgQEAgY2xhc3MgVG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbnB1dF9zdHIsIGV4cGVjdGVkPU5vbmUpOgog
ICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnB1
dF9zdHIKLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5lbmNvZGUoInV0ZjgiKQorICAgICAg
ICAgICAgZXhwZWN0ZWQgPSBpbnB1dF9zdHIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGFjdHVh
bCA9IHNlbGYuc2VyaWFsaXplKGlucHV0X3N0cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
YWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVj
dGVkKQogCiAgICAgZGVmIHRlc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtl
eTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAx
XQogICBvdGhlcl9rZXk6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8xKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9y
IGI6IG90aGVyX3ZhbHVlCiAiIiIpCiAKICAgICBkZWYgdGVzdF8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
dmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBhIG9yIGI6IG90aGVyX3Zh
bHVlCkBAIC00NSw3ICs0Miw3IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJl
KCIiImtleTogdmFsdWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVh
ZGluZyAxXQogICBvdGhlcl9rZXk6CiAgICAgaWYgYSA9PSAxOiBvdGhlcl92YWx1ZQpAQCAtNTMs
NyArNTAsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikK
IAogICAgIGRlZiB0ZXN0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZh
bHVlCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAg
b3RoZXJfa2V5OgogICAgIGlmIGEgPT0gIjEiOiBvdGhlcl92YWx1ZQpAQCAtNjEsNyArNTgsNyBA
QCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRl
ZiB0ZXN0XzUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAg
ICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgb3RoZXJfa2V5
OgogICAgIGlmIGEgPT0gImFiYyJbMV06IG90aGVyX3ZhbHVlCkBAIC02OSw3ICs2Niw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRl
c3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogdmFsdWUKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXk6IHZhbHVlCiBbSGVhZGluZyAxXQogICBvdGhlcl9rZXk6CiAg
ICAgaWYgYSA9PSAiYWJjIltjXTogb3RoZXJfdmFsdWUKQEAgLTc3LDcgKzc0LDcgQEAgY2xhc3Mg
VG9rZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF83
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBp
ZiAoYSBvciBiKSBhbmQgYzogb3RoZXJfdmFsdWUKQEAgLTkxLDcgKzg4LDcgQEAgY2xhc3MgVG9r
ZW5pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF84KHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNv
bXBhcmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBh
IG9yIChiIGFuZCBjKTogb3RoZXJfdmFsdWUKQEAgLTk5LDcgKzk2LDcgQEAgY2xhc3MgVG9rZW5p
emVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAiIiIpCiAKICAgICBkZWYgdGVzdF85KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZQorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUKIFtIZWFkaW5nIDFdCiAgIG90aGVyX2tleToKICAgICBpZiBub3Qg
KGEgYW5kIGIpOiBvdGhlcl92YWx1ZQpAQCAtMTA3LDcgKzEwNCw3IEBAIGNsYXNzIFRva2VuaXpl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogIiIiKQogCiAgICAgZGVmIHRlc3RfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IHZhbHVlCisgICAgICAgIHNlbGYuY29tcGFy
ZShiIiIia2V5OiB2YWx1ZQogW0hlYWRpbmcgMV0KICAgc29tZV9rZXk6IHNvbWVfdmFsdWUKIApA
QCAtMTE2LDEyMSArMTEzLDEyNSBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzExKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUoIiIia2V5OgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleToKICAgaWYgbm90IGEgYW5k
IGIgYW5kIGMgYW5kIGQ6IHRydWUKICIiIikKIAogICAgIGRlZiB0ZXN0XzEyKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIiW0hlYWRpbmcgMV0KKyAgICAgICAgc2VsZi5jb21wYXJlKGIi
IiJbSGVhZGluZyAxXQogICBrZXk6IFthOjEsIGI6Ml0KICIiIikKIAogICAgIGRlZiB0ZXN0XzEz
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5OiBbYToxLCAiYjojIl0KKyAgICAg
ICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthOjEsICJiOiMiXQogIiIiKQogCiAgICAgZGVmIHRl
c3RfMTQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6IFsiLCJdCisgICAgICAg
IHNlbGYuY29tcGFyZShiIiIia2V5OiBbIiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfMTUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6ICwKKyAgICAgICAgc2VsZi5jb21wYXJl
KGIiIiJrZXk6ICwKICIiIikKIAogICAgIGRlZiB0ZXN0XzE2KHNlbGYpOgotICAgICAgICBzZWxm
LmNvbXBhcmUoIiIia2V5OiBbIl0iLCBiXQorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTog
WyJdIiwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0XzE3KHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUoIiIia2V5OiBdCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OiBdCiAiIiIpCiAK
ICAgICBkZWYgdGVzdF8xOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrZXk6IFxd
CisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXF0KICAgICAgICAgIiIiLCAiIiJrZXk6
IF0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8wKHNlbGYpOgotICAgICAgICBzZWxmLmNv
bXBhcmUociIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCisgICAgICAgIHNlbGYuY29tcGFy
ZShiciIiImtcdFw6eTogXGFcYlxmXG5cclx0XHYiIiIsCiAgICAgICAgICAgICAgICAgICAgICBy
IiIia1x0XDp5OiBceDA3XHgwOFx4MGNcblxyXHRceDBiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9l
c2NhcGVfMShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJrXHgwMDogXHgxMkFceDQ1
IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHgwMDogXHgxMkFceDQ1IiIiLAogICAg
ICAgICAgICAgICAgICAgICAgciIiImtceDAwOiBceDEyQUUKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtcdTAwNDV5OiBcdTEy
MzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrXHUwMDQ1eTogXHUxMjM0
QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrRXk6IFx1MTIzNEFcdWFiYzYK
ICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV8zKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUociIiImtcdTAwNDV5OiBcdTEyMzRBXHVBQmM2IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUo
YnIiIiJrXHUwMDQ1eTogXHUxMjM0QVx1QUJjNiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrRXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV80KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogJ1x1MTIzNEFcdUFCYzYnIiIiLAorICAg
ICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6ICdcdTEyMzRBXHVBQmM2JyIiIiwKICAgICAgICAg
ICAgICAgICAgICAgIHUiIiJrZXk6IFx1MTIzNEFcdWFiYzYKICIiIikKIAogICAgIGRlZiB0ZXN0
X2VzY2FwZV81KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTogW1x1MTIzNEFc
dUFCYzZdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJrZXk6IFtcdTEyMzRBXHVBQmM2
XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6IFtcdTEyMzRBXHVhYmM2XQogIiIi
KQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzYoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZShy
IiIia2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBbXHUxMjM0QVx1QUJjNlwsXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUiIiJrZXk6
IFsiXHUxMjM0QVx1YWJjNiwiXQogIiIiKQogCiAgICAgZGVmIHRlc3RfZXNjYXBlXzcoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBbXCxcXVwjXSIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBbXCxcXVwjXSIiIiwKICAgICAgICAgICAgICAgICAgICAgIHIi
IiJrZXk6IFsiLF0jIl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV84KHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUociIiImtleTogXCMiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXCMiIiIsCiAgICAgICAgICAgICAgICAgICAgICByIiIia2V5OiAiIyIKICIiIikK
IAogICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMubWF4dW5pY29kZSA9PSAweEZGRkYsIHJlYXNv
bj0ibmFycm93IHVuaWNvZGUiKQogICAgIGRlZiB0ZXN0X2VzY2FwZV85KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogXFUxMEZGRkZhYmMiIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiciIiImtleTogXFUxMEZGRkZhYmMiIiIsCiAgICAgICAgICAgICAgICAgICAgICB1IiIi
a2V5OiBcVTAwMTBGRkZGYWJjCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTAoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcdTEwRkZhYiIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIia2V5OiBcdTEwRkZhYiIiIiwKICAgICAgICAgICAgICAgICAgICAgIHUi
IiJrZXk6IFx1MTBGRmFiCiAiIiIpCiAKICAgICBkZWYgdGVzdF9lc2NhcGVfMTEoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZShyIiIia2V5OiBcXGFiCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogXFxhYgogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8xKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUociIiImtleTogQFRydWUKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIi
a2V5OiBAVHJ1ZQogIiIiKQogCiAgICAgZGVmIHRlc3RfYXRvbV8yKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUociIiImtleTogQEZhbHNlCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtl
eTogQEZhbHNlCiAiIiIpCiAKICAgICBkZWYgdGVzdF9hdG9tXzMoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29tcGFyZShyIiIia2V5OiBAUmVzZXQKKyAgICAgICAgc2VsZi5jb21wYXJlKGJyIiIia2V5
OiBAUmVzZXQKICIiIikKIAogICAgIGRlZiB0ZXN0X2F0b21fNChzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb21wYXJlKHIiIiJrZXk6IFthLCBAUmVzZXQsIGJdCisgICAgICAgIHNlbGYuY29tcGFyZShi
ciIiImtleTogW2EsIEBSZXNldCwgYl0KICIiIikKIAogICAgIGRlZiB0ZXN0X2NvbmRpdGlvbmFs
XzEoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286CisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQogCiAgICAgZGVmIHRlc3Rf
aWZfc3RyaW5nXzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286ICJpZiBiYXIi
CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiZm9vOiAiaWYgYmFyIgorIiIiKQorCisgICAgZGVm
IHRlc3Rfbm9uX2FzY2lpXzEoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiW1x4ZjBc
eDlmXHg5OVx4ODRdCiAiIiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVz
dF9zdGF0aWMucHkKaW5kZXggYWFmODQ2NTkxNTI0NmFhYzU4YTA2OGRjZmMwNjk3YjhjOWFmNDE4
MS4uZTgxMWEyYjQyYjQ1NTBjY2VjMWNkYTlmNmIxYTJiOWJiMjcwZmFjZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAtMSw1ICsxLDMgQEAK
LWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uYmFj
a2VuZHMgaW1wb3J0IHN0YXRpYwpAQCAtOCwxNCArNiwxMiBAQCBmcm9tIC4uYmFja2VuZHMgaW1w
b3J0IHN0YXRpYwogIyB1c2UgdGVzdF9zZXJpYWxpemVyIGZvciB0aGUgbWFqb3JpdHkgb2YgY2Fz
ZXMKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAotICAgICAg
ICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQogY2xhc3MgVGVzdFN0YXRpYyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNvbXBp
bGUoc2VsZiwgaW5wdXRfdGV4dCwgaW5wdXRfZGF0YSk6CiAgICAgICAgIHJldHVybiBzdGF0aWMu
Y29tcGlsZShpbnB1dF90ZXh0LCBpbnB1dF9kYXRhKQogCiAgICAgZGVmIHRlc3RfZ2V0XzAoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAgICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUK
IAogW0hlYWRpbmcgMV0KQEAgLTI3LDE3ICsyMywxNyBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAg
bWFuaWZlc3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogMn0pCiAKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWUiKQogICAgICAgICBjaGlsZHJl
biA9IGxpc3QoaXRlbSBmb3IgaXRlbSBpbiBtYW5pZmVzdC5pdGVyY2hpbGRyZW4oKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQogICAgICAgICBzZWN0aW9uID0gY2hpbGRyZW5bMF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VjdGlvbi5uYW1lLCAiSGVhZGluZyAxIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLm5hbWUsICJIZWFkaW5nIDEiKQogCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlY3Rpb24uZ2V0KCJvdGhlcl9rZXkiKSwgInZhbHVlXzIi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgia2V5IiksICJ2YWx1ZSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoIm90aGVyX2tleSIpLCAidmFs
dWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VjdGlvbi5nZXQoImtleSIpLCAidmFs
dWUiKQogCiAgICAgZGVmIHRlc3RfZ2V0XzEoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAiIiIKKyAg
ICAgICAgZGF0YSA9IGIiIiIKIGtleTogdmFsdWUKIAogW0hlYWRpbmcgMV0KQEAgLTUwLDMyICs0
NiwzMiBAQCBrZXk6IHZhbHVlCiAKICAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGl0ZW0gZm9yIGl0
ZW0gaW4gbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCkpCiAgICAgICAgIHNlY3Rpb24gPSBjaGlsZHJl
blswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWN0aW9uLmdldCgib3RoZXJfa2V5Iiks
ICJ2YWx1ZV8zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWN0aW9uLmdldCgib3RoZXJf
a2V5IiksICJ2YWx1ZV8zIikKIAogICAgIGRlZiB0ZXN0X2dldF8zKHNlbGYpOgotICAgICAgICBk
YXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtleToKICAgaWYgYSA9PSAiMSI6IHZh
bHVlXzEKICAgaWYgYVswXSA9PSAiYWIiWzBdOiB2YWx1ZV8yCiAiIiIKICAgICAgICAgbWFuaWZl
c3QgPSBzZWxmLmNvbXBpbGUoZGF0YSwgeyJhIjogIjEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgICAgICBtYW5pZmVz
dCA9IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAiYWMifSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8yIikKIAogICAgIGRlZiB0ZXN0X2dl
dF80KHNlbGYpOgotICAgICAgICBkYXRhID0gIiIia2V5OgorICAgICAgICBkYXRhID0gYiIiImtl
eToKICAgaWYgbm90IGE6IHZhbHVlXzEKICAgdmFsdWVfMgogIiIiCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IFRydWV9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhtYW5pZmVzdC5nZXQoImtleSIpLCAidmFsdWVfMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzIiKQogCiAgICAgICAgIG1hbmlmZXN0
ID0gc2VsZi5jb21waWxlKGRhdGEsIHsiYSI6IEZhbHNlfSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobWFuaWZlc3QuZ2V0KCJrZXkiKSwgInZhbHVlXzEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1hbmlmZXN0LmdldCgia2V5IiksICJ2YWx1ZV8xIikKIAogICAgIGRlZiB0ZXN0X2Fw
aShzZWxmKToKLSAgICAgICAgZGF0YSA9ICIiImtleToKKyAgICAgICAgZGF0YSA9IGIiIiJrZXk6
CiAgIGlmIGEgPT0gMS41OiB2YWx1ZV8xCiAgIHZhbHVlXzIKIGtleV8xOiBvdGhlcl92YWx1ZQpA
QCAtODMsMTUgKzc5LDE1IEBAIGtleV8xOiBvdGhlcl92YWx1ZQogICAgICAgICBtYW5pZmVzdCA9
IHNlbGYuY29tcGlsZShkYXRhLCB7ImEiOiAxLjV9KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobWFuaWZlc3QuaXNfZW1wdHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1hbmlmZXN0
LnJvb3QsIG1hbmlmZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmlmZXN0LnJvb3Qs
IG1hbmlmZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuaWZlc3QuaGFzX2tleSgia2V5
XzEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMiIp
KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwg
eyJrZXkiLCAia2V5XzEifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0
Lml0ZXJ2YWx1ZXMoKSksIHsidmFsdWVfMSIsICJvdGhlcl92YWx1ZSJ9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNldChtYW5pZmVzdC5pdGVya2V5cygpKSwgeyJrZXkiLCAia2V5XzEifSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobWFuaWZlc3QuaXRlcnZhbHVlcygpKSwgeyJ2
YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIn0pCiAKICAgICBkZWYgdGVzdF9pc19lbXB0eV8xKHNlbGYp
OgotICAgICAgICBkYXRhID0gIiIiCisgICAgICAgIGRhdGEgPSBiIiIiCiBbU2VjdGlvbl0KICAg
W1N1YnNlY3Rpb25dCiAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0cnVubmVyLnB5CmluZGV4IGNhYzE3MmE1OTQwZWM2OTZlM2EzYjI3
OTE3MGY5NzEyYWFmNDY2OGQuLmQwY2MxOTQ4MWRiZGVkYzQ1ZWRmZWU5NjA4ZDgyZGViNGExOTY1
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdHJ1bm5lci5weQpAQCAtMywxOSArMywyMSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCiBpbXBvcnQganNvbgogaW1wb3J0IG9z
CiBpbXBvcnQgc3lzCitmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVydmFsdWVzCiAKIGZy
b20gd3B0c2VydmUgaW1wb3J0IHNzbHV0aWxzCiAKLWltcG9ydCBlbnZpcm9ubWVudCBhcyBlbnYK
LWltcG9ydCBwcm9kdWN0cwotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3cHRjb21tYW5kbGlu
ZQotaW1wb3J0IHdwdGxvZ2dpbmcKLWltcG9ydCB3cHR0ZXN0Citmcm9tIC4gaW1wb3J0IGVudmly
b25tZW50IGFzIGVudgorZnJvbSAuIGltcG9ydCBpbnN0cnVtZW50cworZnJvbSAuIGltcG9ydCBw
cm9kdWN0cworZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVyCitmcm9tIC4gaW1wb3J0IHdwdGNvbW1h
bmRsaW5lCitmcm9tIC4gaW1wb3J0IHdwdGxvZ2dpbmcKK2Zyb20gLiBpbXBvcnQgd3B0dGVzdAog
ZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCi1mcm9tIGZvbnQgaW1wb3J0IEZv
bnRJbnN0YWxsZXIKLWZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCi1mcm9tIGJy
b3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCitmcm9tIC5mb250IGltcG9ydCBGb250SW5z
dGFsbGVyCitmcm9tIC50ZXN0cnVubmVyIGltcG9ydCBNYW5hZ2VyR3JvdXAKK2Zyb20gLmJyb3dz
ZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCiAKIGhlcmUgPSBvcy5wYXRoLnNwbGl0KF9fZmls
ZV9fKVswXQogCkBAIC00Myw3ICs0NSw3IEBAIGRlZiBzZXR1cF9sb2dnaW5nKCphcmdzLCAqKmt3
YXJncyk6CiAgICAgcmV0dXJuIGxvZ2dlcgogCiAKLWRlZiBnZXRfbG9hZGVyKHRlc3RfcGF0aHMs
IHByb2R1Y3QsIGRlYnVnPU5vbmUsIHJ1bl9pbmZvX2V4dHJhcz1Ob25lLCAqKmt3YXJncyk6Citk
ZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5mb19l
eHRyYXM9Tm9uZSwgY2h1bmtlcl9rd2FyZ3M9Tm9uZSwgKiprd2FyZ3MpOgogICAgIGlmIHJ1bl9p
bmZvX2V4dHJhcyBpcyBOb25lOgogICAgICAgICBydW5faW5mb19leHRyYXMgPSB7fQogCkBAIC03
Niw3ICs3OCwxMCBAQCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1O
b25lLCBydW5faW5mb19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2NodW5rcz1rd2FyZ3NbInRvdGFsX2NodW5rcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX251bWJlcj1r
d2FyZ3NbInRoaXNfY2h1bmsiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlX2h0dHBzPXNzbF9lbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNraXBfdGltZW91dD1rd2FyZ3NbInNraXBfdGltZW91dCJdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcXVpYz1rd2FyZ3Nb
ImVuYWJsZV9xdWljIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2tpcF90aW1lb3V0PWt3YXJnc1sic2tpcF90aW1lb3V0Il0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2tpcF9pbXBsZW1lbnRhdGlvbl9zdGF0dXM9a3dhcmdzWyJz
a2lwX2ltcGxlbWVudGF0aW9uX3N0YXR1cyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzKQogICAgIHJldHVybiBy
dW5faW5mbywgdGVzdF9sb2FkZXIKIAogCkBAIC0xMDIsNyArMTA3LDcgQEAgZGVmIGxpc3RfZGlz
YWJsZWQodGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgogICAgIHJ1bl9pbmZvLCB0ZXN0
X2xvYWRlciA9IGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2V4dHJhcz1ydW5faW5mb19leHRyYXMs
ICoqa3dhcmdzKQogCi0gICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlz
YWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRlc3RfdHlwZSwgdGVzdHMgaW4gaXRl
cml0ZW1zKHRlc3RfbG9hZGVyLmRpc2FibGVkX3Rlc3RzKToKICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6CiAgICAgICAgICAgICBydi5hcHBlbmQoeyJ0ZXN0IjogdGVzdC5pZCwgInJlYXNvbiI6
IHRlc3QuZGlzYWJsZWQoKX0pCiAgICAgcHJpbnQoanNvbi5kdW1wcyhydiwgaW5kZW50PTIpKQpA
QCAtMTI3LDcgKzEzMiw3IEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0ZXN0X2xvYWRlciwg
Kiprd2FyZ3MpOgogICAgICAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl06CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgdGVzdHMgPSB0ZXN0X2xvYWRlci50ZXN0cwotICAgICAgICBp
c19zaW5nbGVfdGVzdGhhcm5lc3MgPSAoc3VtKGxlbihpdGVtKSBmb3IgaXRlbSBpbiB0ZXN0cy5p
dGVydmFsdWVzKCkpID09IDEgYW5kCisgICAgICAgIGlzX3NpbmdsZV90ZXN0aGFybmVzcyA9IChz
dW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXModGVzdHMpKSA9PSAxIGFuZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgidGVzdGhhcm5lc3Mi
LCBbXSkpID09IDEpCiAgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0gMSBhbmQga3dhcmdz
WyJyZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCkBAIC0xMzgsNyArMTQzLDEyIEBAIGRlZiBnZXRfcGF1c2VfYWZ0ZXJfdGVzdCh0
ZXN0X2xvYWRlciwgKiprd2FyZ3MpOgogZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMs
IHByb2R1Y3QsICoqa3dhcmdzKToKICAgICAiIiJTZXQgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQs
IGxvYWQgdGhlIGxpc3Qgb2YgdGVzdHMgdG8gYmUgZXhlY3V0ZWQsIGFuZAogICAgIGludm9rZSB0
aGUgcmVtYWluZGVyIG9mIHRoZSBjb2RlIHRvIGV4ZWN1dGUgdGVzdHMiIiIKLSAgICB3aXRoIGNh
cHR1cmUuQ2FwdHVyZUlPKGxvZ2dlciwgbm90IGt3YXJnc1sibm9fY2FwdHVyZV9zdGRpbyJdKToK
KyAgICBpZiBrd2FyZ3NbImluc3RydW1lbnRfdG9fZmlsZSJdIGlzIE5vbmU6CisgICAgICAgIHJl
Y29yZGVyID0gaW5zdHJ1bWVudHMuTnVsbEluc3RydW1lbnQoKQorICAgIGVsc2U6CisgICAgICAg
IHJlY29yZGVyID0gaW5zdHJ1bWVudHMuSW5zdHJ1bWVudChrd2FyZ3NbImluc3RydW1lbnRfdG9f
ZmlsZSJdKQorICAgIHdpdGggcmVjb3JkZXIgYXMgcmVjb3JkaW5nLCBjYXB0dXJlLkNhcHR1cmVJ
Tyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgICAgIHJlY29y
ZGluZy5zZXQoWyJzdGFydHVwIl0pCiAgICAgICAgIGVudi5kb19kZWxheWVkX2ltcG9ydHMobG9n
Z2VyLCB0ZXN0X3BhdGhzKQogCiAgICAgICAgIHByb2R1Y3QgPSBwcm9kdWN0cy5sb2FkX3Byb2R1
Y3QoY29uZmlnLCBwcm9kdWN0LCBsb2FkX2Nscz1UcnVlKQpAQCAtMTQ5LDIyICsxNTksMjkgQEAg
ZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAog
ICAgICAgICBpZiBrd2FyZ3NbImluc3RhbGxfZm9udHMiXToKICAgICAgICAgICAgIGVudl9leHRy
YXMuYXBwZW5kKEZvbnRJbnN0YWxsZXIoCisgICAgICAgICAgICAgICAgbG9nZ2VyLAogICAgICAg
ICAgICAgICAgIGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKICAgICAgICAgICAgICAgICBh
aGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgiXSwgImZvbnRzL0Fo
ZW0udHRmIikKICAgICAgICAgICAgICkpCiAKLSAgICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVy
ID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKipr
d2FyZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dh
cmdzKQorICAgICAgICByZWNvcmRpbmcuc2V0KFsic3RhcnR1cCIsICJsb2FkX3Rlc3RzIl0pCiAK
ICAgICAgICAgdGVzdF9zb3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBrd2FyZ3NbInByb2Nl
c3NlcyJdfQorICAgICAgICBjaHVua2VyX2t3YXJncyA9IHt9CiAgICAgICAgIGlmIGt3YXJnc1si
cnVuX2J5X2RpciJdIGlzIEZhbHNlOgogICAgICAgICAgICAgdGVzdF9zb3VyY2VfY2xzID0gdGVz
dGxvYWRlci5TaW5nbGVUZXN0U291cmNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEg
dmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgaW5maW5pdGUgZGVwdGgKICAgICAgICAgICAgIHRlc3Rf
c291cmNlX2NscyA9IHRlc3Rsb2FkZXIuUGF0aEdyb3VwZWRTb3VyY2UKICAgICAgICAgICAgIHRl
c3Rfc291cmNlX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisgICAgICAg
ICAgICBjaHVua2VyX2t3YXJnc1siZGVwdGgiXSA9IGt3YXJnc1sicnVuX2J5X2RpciJdCisKKyAg
ICAgICAgcnVuX2luZm8sIHRlc3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QubmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9
cHJvZHVjdC5ydW5faW5mb19leHRyYXMoKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNodW5rZXJfa3dhcmdzPWNodW5rZXJfa3dhcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorCiAKICAg
ICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nICVpIGNsaWVudCBwcm9jZXNzZXMiICUga3dhcmdzWyJw
cm9jZXNzZXMiXSkKIApAQCAtMTg4LDE5ICsyMDUsMjQgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcs
IHRlc3RfcGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICB0ZXN0aGFybmVzc190
aW1lb3V0X211bHRpcGxlciA9IHByb2R1Y3QuZ2V0X3RpbWVvdXRfbXVsdGlwbGllcigidGVzdGhh
cm5lc3MiLCBydW5faW5mbywgKiprd2FyZ3MpCiAKKyAgICAgICAgcmVjb3JkaW5nLnNldChbInN0
YXJ0dXAiLCAic3RhcnRfZW52aXJvbm1lbnQiXSkKICAgICAgICAgd2l0aCBlbnYuVGVzdEVudmly
b25tZW50KHRlc3RfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aGFybmVzc190aW1lb3V0X211bHRpcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJfdGVzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9kdWN0LmVudl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3NsX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9l
eHRyYXMpIGFzIHRlc3RfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnZfZXh0cmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdz
WyJlbmFibGVfcXVpYyJdKSBhcyB0ZXN0X2Vudmlyb25tZW50OgorICAgICAgICAgICAgcmVjb3Jk
aW5nLnNldChbInN0YXJ0dXAiLCAiZW5zdXJlX2Vudmlyb25tZW50Il0pCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5lbnN1cmVfc3RhcnRlZCgpCiAg
ICAgICAgICAgICBleGNlcHQgZW52LlRlc3RFbnZpcm9ubWVudEVycm9yIGFzIGU6CiAgICAgICAg
ICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJFcnJvciBzdGFydGluZyB0ZXN0IGVudmlyb25tZW50
OiAlcyIgJSBlLm1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAg
cmVjb3JkaW5nLnNldChbInN0YXJ0dXAiXSkKKwogICAgICAgICAgICAgcmVwZWF0ID0ga3dhcmdz
WyJyZXBlYXQiXQogICAgICAgICAgICAgcmVwZWF0X2NvdW50ID0gMAogICAgICAgICAgICAgcmVw
ZWF0X3VudGlsX3VuZXhwZWN0ZWQgPSBrd2FyZ3NbInJlcGVhdF91bnRpbF91bmV4cGVjdGVkIl0K
QEAgLTIxNCw3ICsyMzYsMTIgQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKIAogICAgICAgICAgICAgICAgIHRlc3RfY291bnQgPSAwCiAgICAg
ICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCA9IDAKLSAgICAgICAgICAgICAgICBsb2dnZXIu
c3VpdGVfc3RhcnQodGVzdF9sb2FkZXIudGVzdF9pZHMsCisKKyAgICAgICAgICAgICAgICB0ZXN0
cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBpbiB0ZXN0X2xvYWRlci50ZXN0
X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQodGVzdF9sb2FkZXIudGVz
dHNbdGVzdF90eXBlXSkKKworICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0ZV9zdGFydCh0ZXN0
X3NvdXJjZV9jbHMudGVzdHNfYnlfZ3JvdXAodGVzdHMsICoqdGVzdF9zb3VyY2Vfa3dhcmdzKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nd2ViLXBsYXRmb3JtLXRl
c3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz1ydW5faW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9eyJydW5fYnlfZGly
Ijoga3dhcmdzWyJydW5fYnlfZGlyIl19KQpAQCAtMjY2LDYgKzI5Myw3IEBAIGRlZiBydW5fdGVz
dHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVzdHMgPSB0ZXN0X2xv
YWRlci50ZXN0cwogCisgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZy5wYXVzZSgpCiAgICAg
ICAgICAgICAgICAgICAgIHdpdGggTWFuYWdlckdyb3VwKCJ3ZWItcGxhdGZvcm0tdGVzdHMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInByb2Nlc3NlcyJd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NvdXJjZV9jbHMs
CkBAIC0yNzksNyArMzA3LDggQEAgZGVmIHJ1bl90ZXN0cyhjb25maWcsIHRlc3RfcGF0aHMsIHBy
b2R1Y3QsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a3dhcmdzWyJwYXVzZV9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJnc1sicmVzdGFydF9vbl91bmV4cGVjdGVkIl0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5mbyJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJub19jYXB0dXJlX3N0
ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nPXJlY29yZGluZykgYXMgbWFuYWdlcl9ncm91
cDoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5hZ2VyX2dyb3VwLnJ1bih0ZXN0X3R5cGUsIHJ1bl90ZXN0cykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKQEAgLTI4OCw3ICszMTcsNyBA
QCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwgKiprd2FyZ3MpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudGVzdF9jb3VudCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmV4cGVjdGVkX2NvdW50ICs9IG1hbmFnZXJfZ3JvdXAudW5leHBlY3RlZF9j
b3VudCgpCi0KKyAgICAgICAgICAgICAgICByZWNvcmRpbmcuc2V0KFsiYWZ0ZXItZW5kIl0pCiAg
ICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBlY3RlZF9jb3VudCkK
QEAgLTMxNyw3ICszNDYsNyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJv
ZHVjdCwgKiprd2FyZ3MpOgogCiAKIGRlZiBjaGVja19zdGFiaWxpdHkoKiprd2FyZ3MpOgotICAg
IGltcG9ydCBzdGFiaWxpdHkKKyAgICBmcm9tIC4gaW1wb3J0IHN0YWJpbGl0eQogICAgIGlmIGt3
YXJnc1sic3RhYmlsaXR5Il06CiAgICAgICAgIGxvZ2dlci53YXJuaW5nKCItLXN0YWJpbGl0eSBp
cyBkZXByZWNhdGVkOyBwbGVhc2UgdXNlIC0tdmVyaWZ5IGluc3RlYWQhIikKICAgICAgICAga3dh
cmdzWyd2ZXJpZnlfbWF4X3RpbWUnXSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93
cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKaW5kZXggMWQxNGY0ZWZlZWFlMjc5
YzJjMzYwZmJhMTM4OGVhNWYzYTQzODc3Zi4uNmIwZmFiNmVlYmFmNTA1ZmZkMjA3MTBlMWEyY2E0
NmUzZDZmNTlkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdHRlc3QucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgb3MKIGltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0
IHVybGpvaW4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHNpeCBp
bXBvcnQgaXRlcml0ZW1zLCBzdHJpbmdfdHlwZXMKIAogZnJvbSAud3B0bWFuaWZlc3QucGFyc2Vy
IGltcG9ydCBhdG9tcwogCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9tb3ppbmZvKG1ldGFkYXRhX3Jvb3QpCiAgICAgICAgIHNlbGYu
dXBkYXRlKG1vemluZm8uaW5mbykKIAotICAgICAgICBmcm9tIHVwZGF0ZS50cmVlIGltcG9ydCBH
aXRUcmVlCisgICAgICAgIGZyb20gLnVwZGF0ZS50cmVlIGltcG9ydCBHaXRUcmVlCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgICMgR2l0VHJlZS5fX2luaXRfXyB0aHJvd3MgaWYgd2UgYXJlIG5v
dCBpbiBhIGdpdCB0cmVlLgogICAgICAgICAgICAgcmV2ID0gR2l0VHJlZShsb2dfZXJyb3I9RmFs
c2UpLnJldgpAQCAtMTAxLDYgKzEwMyw3IEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAg
IGlmIHJldjoKICAgICAgICAgICAgIHNlbGZbInJldmlzaW9uIl0gPSByZXYKIAorICAgICAgICBz
ZWxmWyJweXRob25fdmVyc2lvbiJdID0gc3lzLnZlcnNpb25faW5mby5tYWpvcgogICAgICAgICBz
ZWxmWyJwcm9kdWN0Il0gPSBwcm9kdWN0CiAgICAgICAgIGlmIGRlYnVnIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgc2VsZlsiZGVidWciXSA9IGRlYnVnCkBAIC0xMTgsMjIgKzEyMSw5IEBAIGNs
YXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIGlmIGV4dHJhcyBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHNlbGYudXBkYXRlKGV4dHJhcykKIAotICAgICAgICAjIFVudGlsIHRoZSB0ZXN0IGhh
cm5lc3MgY2FuIHVuZGVyc3RhbmQgZGVmYXVsdCBwcmVmIHZhbHVlcywKLSAgICAgICAgIyAoaHR0
cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzkxMikgdGhpcyB2
YWx1ZQotICAgICAgICAjIHNob3VsZCBieSBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgZGVmYXVsdCBw
cmVmIHZhbHVlIGluZGljYXRlZCBpbgotICAgICAgICAjIFN0YXRpY1ByZWZMaXN0LnlhbWwuCi0g
ICAgICAgICMKLSAgICAgICAgIyBDdXJyZW50bHkgZm9yIGF1dG9tYXRpb24sIHRoZSBwcmVmIChh
bmQgYHN3LWUxMHNgKSBkZWZhdWx0cyB0byB0cnVlIGluCi0gICAgICAgICMgbmlnaHRseSBidWls
ZHMgYW5kIGZhbHNlIG90aGVyd2lzZSBidXQgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aAotICAgICAg
ICAjIGAtLXNldHByZWZgLiBJZiBvdmVycmlkZGVuLCB0aGUgdmFsdWUgd291bGQgYmUgaW5pdGlh
bGl6ZWQgaW4KLSAgICAgICAgIyBgcnVuX2luZm9fZXh0cmFzYCBhbmQgYmUgc3VwcGxpZWQgaW4g
dGhlIGBleHRyYXNgIHBhcmFtZXRlci4KLSAgICAgICAgaWYgInN3LWUxMHMiIG5vdCBpbiBzZWxm
OgotICAgICAgICAgICAgc2VsZlsic3ctZTEwcyJdID0gc2VsZi5nZXQoIm5pZ2h0bHlfYnVpbGQi
LCBGYWxzZSkKLQogICAgICAgICBzZWxmWyJoZWFkbGVzcyJdID0gZXh0cmFzLmdldCgiaGVhZGxl
c3MiLCBGYWxzZSkKICAgICAgICAgc2VsZlsid2VicmVuZGVyIl0gPSBlbmFibGVfd2VicmVuZGVy
CiAKLQogICAgIGRlZiBfdXBkYXRlX21vemluZm8oc2VsZiwgbWV0YWRhdGFfcm9vdCk6CiAgICAg
ICAgICIiIkFkZCBleHRyYSBidWlsZCBpbmZvcm1hdGlvbiBmcm9tIGEgbW96aW5mby5qc29uIGZp
bGUgaW4gYSBwYXJlbnQKICAgICAgICAgZGlyZWN0b3J5IiIiCkBAIC0xNTAsNiArMTQwLDE0IEBA
IGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgIG1vemluZm8uZmluZF9hbmRfdXBkYXRlX2Zy
b21fanNvbigqZGlycykKIAogCitkZWYgc2VydmVyX3Byb3RvY29sKG1hbmlmZXN0X2l0ZW0pOgor
ICAgIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImgyIikgYW5kIG1hbmlmZXN0X2l0ZW0uaDI6
CisgICAgICAgIHJldHVybiAiaDIiCisgICAgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAiaHR0
cHMiKSBhbmQgbWFuaWZlc3RfaXRlbS5odHRwczoKKyAgICAgICAgcmV0dXJuICJodHRwcyIKKyAg
ICByZXR1cm4gImh0dHAiCisKKwogY2xhc3MgVGVzdChvYmplY3QpOgogCiAgICAgcmVzdWx0X2Ns
cyA9IE5vbmUKQEAgLTE2MCwxNCArMTU4LDE0IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICBs
b25nX3RpbWVvdXQgPSA2MCAgIyBzZWNvbmRzCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVz
dHNfcm9vdCwgdXJsLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhLAotICAgICAgICAg
ICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiKToKKyAgICAg
ICAgICAgICAgICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgcXVp
Yz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKICAgICAgICAg
c2VsZi51cmwgPSB1cmwKICAgICAgICAgc2VsZi5faW5oZXJpdF9tZXRhZGF0YSA9IGluaGVyaXRf
bWV0YWRhdGEKICAgICAgICAgc2VsZi5fdGVzdF9tZXRhZGF0YSA9IHRlc3RfbWV0YWRhdGEKICAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGVsc2Ug
c2VsZi5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotICAgICAgICBz
ZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAicHJlZnMiOiBzZWxmLnBy
ZWZzfQorICAgICAgICBzZWxmLmVudmlyb25tZW50ID0geyJwcm90b2NvbCI6IHByb3RvY29sLCAi
cHJlZnMiOiBzZWxmLnByZWZzLCAicXVpYyI6IHF1aWN9CiAKICAgICBkZWYgX19lcV9fKHNlbGYs
IG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRlc3QpOgpAQCAtMTg2
LDE0ICsxODQsMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfaXRlbSwgaW5o
ZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIHRpbWVvdXQgPSBjbHMubG9u
Z190aW1lb3V0IGlmIG1hbmlmZXN0X2l0ZW0udGltZW91dCA9PSAibG9uZyIgZWxzZSBjbHMuZGVm
YXVsdF90aW1lb3V0Ci0gICAgICAgIHByb3RvY29sID0gImh0dHBzIiBpZiBoYXNhdHRyKG1hbmlm
ZXN0X2l0ZW0sICJodHRwcyIpIGFuZCBtYW5pZmVzdF9pdGVtLmh0dHBzIGVsc2UgImh0dHAiCiAg
ICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAg
ICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0
YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpv
aW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAotICAgICAg
ICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQorICAgICAgICAgICAgICAgICAgIHByb3Rv
Y29sPXNlcnZlcl9wcm90b2NvbChtYW5pZmVzdF9pdGVtKSkKIAogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBpZChzZWxmKToKQEAgLTI2Miw2ICsyNTksMTMgQEAgY2xhc3MgVGVzdChvYmplY3QpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBjb3VudAogICAgICAgICByZXR1cm4gMAogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGxzYW5fZGlzYWJsZWQoc2VsZik6CisgICAgICAgIGZvciBtZXRhIGlu
IHNlbGYuaXRlcm1ldGEoKToKKyAgICAgICAgICAgIGlmIG1ldGEubHNhbl9kaXNhYmxlZCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWV0YS5sc2FuX2Rpc2FibGVkCisgICAg
ICAgIHJldHVybiBGYWxzZQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5fYWxsb3dlZChz
ZWxmKToKICAgICAgICAgbHNhbl9hbGxvd2VkID0gc2V0KCkKQEAgLTI5NSw3ICsyOTksNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgIHJ2ID0ge30KICAgICAgICAgZm9yIG1ldGEgaW4g
c2VsZi5pdGVybWV0YShOb25lKToKICAgICAgICAgICAgIHRocmVzaG9sZCA9IG1ldGEubGVha190
aHJlc2hvbGQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHRocmVzaG9sZC5pdGVyaXRl
bXMoKToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZXJpdGVtcyh0aHJlc2hvbGQp
OgogICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcnY6CiAgICAgICAgICAgICAgICAgICAg
IHJ2W2tleV0gPSB2YWx1ZQogICAgICAgICByZXR1cm4gcnYKQEAgLTMzNyw3ICszNDEsNyBAQCBj
bGFzcyBUZXN0KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0ZWQg
PSBtZXRhZGF0YS5nZXQoImV4cGVjdGVkIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhw
ZWN0ZWQsIChiYXNlc3RyaW5nKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVk
LCBzdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZAogICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRbMF0KQEAgLTM0Niw2ICszNTAsMTYgQEAgY2xhc3MgVGVzdChvYmplY3Qp
OgogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAog
CisgICAgZGVmIGltcGxlbWVudGF0aW9uX3N0YXR1cyhzZWxmKToKKyAgICAgICAgaW1wbGVtZW50
YXRpb25fc3RhdHVzID0gTm9uZQorICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRhKCk6
CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9zdGF0dXMgPSBtZXRhLmltcGxlbWVudGF0aW9u
X3N0YXR1cworICAgICAgICAgICAgaWYgaW1wbGVtZW50YXRpb25fc3RhdHVzOgorICAgICAgICAg
ICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbl9zdGF0dXMKKworICAgICAgICAjIGFzc3VtaW5n
IG5vIHNwZWNpZmljIGNhc2UsIHdlIGFyZSBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgcmV0dXJu
ICJpbXBsZW1lbnRpbmciCisKICAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYsIHN1YnRl
c3Q9Tm9uZSk6CiAgICAgICAgIG1ldGFkYXRhID0gc2VsZi5fZ2V0X21ldGFkYXRhKHN1YnRlc3Qp
CiAgICAgICAgIGlmIG1ldGFkYXRhIGlzIE5vbmU6CkBAIC0zODEsOSArMzk1LDkgQEAgY2xhc3Mg
VGVzdGhhcm5lc3NUZXN0KFRlc3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jv
b3QsIHVybCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAg
ICAgdGltZW91dD1Ob25lLCBwYXRoPU5vbmUsIHByb3RvY29sPSJodHRwIiwgdGVzdGRyaXZlcj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lKToKKyAg
ICAgICAgICAgICAgICAganNzaGVsbD1GYWxzZSwgc2NyaXB0cz1Ob25lLCBxdWljPUZhbHNlKToK
ICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0
YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aCwgcHJvdG9jb2wpCisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMp
CiAKICAgICAgICAgc2VsZi50ZXN0ZHJpdmVyID0gdGVzdGRyaXZlcgogICAgICAgICBzZWxmLmpz
c2hlbGwgPSBqc3NoZWxsCkBAIC0zOTIsMjIgKzQwNiwyMyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rl
c3QoVGVzdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBt
YW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFk
YXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRl
bS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKLSAgICAgICAgcHJv
dG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1h
bmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRyaXZlciA9IG1hbmlm
ZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJ0ZXN0ZHJpdmVy
IikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRlbS5qc3NoZWxsIGlm
IGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNlCisgICAgICAgIHF1
aWMgPSBtYW5pZmVzdF9pdGVtLnF1aWMgaWYgaGFzYXR0cihtYW5pZmVzdF9pdGVtLCAicXVpYyIp
IGVsc2UgRmFsc2UKICAgICAgICAgc2NyaXB0X21ldGFkYXRhID0gbWFuaWZlc3RfaXRlbS5zY3Jp
cHRfbWV0YWRhdGEgb3IgW10KLSAgICAgICAgc2NyaXB0cyA9IFt2IGZvciAoaywgdikgaW4gc2Ny
aXB0X21ldGFkYXRhIGlmIGsgPT0gYiJzY3JpcHQiXQorICAgICAgICBzY3JpcHRzID0gW3YgZm9y
IChrLCB2KSBpbiBzY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICBpZiBrID09ICJz
Y3JpcHQiXQogICAgICAgICByZXR1cm4gY2xzKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtLnVybCwKICAgICAgICAgICAgICAgICAgICBp
bmhlcml0X21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCiAgICAg
ICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHBhdGg9
b3MucGF0aC5qb2luKG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwgbWFuaWZlc3RfaXRlbS5wYXRo
KSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1wcm90b2NvbCwKKyAgICAgICAgICAgICAg
ICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wobWFuaWZlc3RfaXRlbSksCiAgICAgICAgICAg
ICAgICAgICAgdGVzdGRyaXZlcj10ZXN0ZHJpdmVyLAogICAgICAgICAgICAgICAgICAgIGpzc2hl
bGw9anNzaGVsbCwKLSAgICAgICAgICAgICAgICAgICBzY3JpcHRzPXNjcmlwdHMKLSAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgc2NyaXB0cz1zY3JpcHRzLAorICAgICAg
ICAgICAgICAgICAgIHF1aWM9cXVpYykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChzZWxm
KToKQEAgLTQyMywxMyArNDM4LDI0IEBAIGNsYXNzIE1hbnVhbFRlc3QoVGVzdCk6CiAKIAogY2xh
c3MgUmVmdGVzdFRlc3QoVGVzdCk6CisgICAgIiIiQSByZWZ0ZXN0CisKKyAgICBBIHJlZnRlc3Qg
c2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gcGFzcyBpZiBvbmUgb2YgaXRzIHJlZmVyZW5jZXMgbWF0
Y2hlcyAoc2VlIGJlbG93KSAqYW5kKiB0aGUKKyAgICByZWZlcmVuY2UgcGFzc2VzIGlmIGl0IGhh
cyBhbnkgcmVmZXJlbmNlcyByZWN1cnNpdmVseS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICAg
IHJlZmVyZW5jZXMgKExpc3RbVHVwbGVbc3RyLCBzdHJdXSk6IGEgbGlzdCBvZiBhbHRlcm5hdGUg
cmVmZXJlbmNlcywgd2hlcmUgb25lIG11c3QgbWF0Y2ggZm9yIHRoZSB0ZXN0IHRvIHBhc3MKKyAg
ICAgICAgdmlld3BvcnRfc2l6ZSAoT3B0aW9uYWxbVHVwbGVbaW50LCBpbnRdXSk6IHNpemUgb2Yg
dGhlIHZpZXdwb3J0IGZvciB0aGlzIHRlc3QsIGlmIG5vdCBkZWZhdWx0CisgICAgICAgIGRwaSAo
T3B0aW9uYWxbaW50XSk6IGRwaSB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhpcyB0ZXN0LCBpZiBu
b3QgZGVmYXVsdAorCisgICAgIiIiCiAgICAgcmVzdWx0X2NscyA9IFJlZnRlc3RSZXN1bHQKICAg
ICB0ZXN0X3R5cGUgPSAicmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19y
b290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCi0g
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5v
bmUsIGRwaT1Ob25lLCBmdXp6eT1Ob25lLCBwcm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAg
ICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9uZSwgdmlld3BvcnRfc2l6ZT1Ob25lLCBkcGk9Tm9u
ZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0dHAiLCBxdWljPUZhbHNlKToKICAgICAgICAgVGVz
dC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3Rf
bWV0YWRhdGEsIHRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wp
CisgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgcHJvdG9jb2wsIHF1aWMpCiAKICAgICAgICAg
Zm9yIF8sIHJlZl90eXBlIGluIHJlZmVyZW5jZXM6CiAgICAgICAgICAgICBpZiByZWZfdHlwZSBu
b3QgaW4gKCI9PSIsICIhPSIpOgpAQCAtNDQ1LDE2ICs0NzEsMTAgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAgICAgICAgICAgICAgIGluaGVy
aXRfbWV0YWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKLSAgICAg
ICAgICAgICAgICAgICAgICBub2Rlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZXNfc2Vlbj1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21ldGFkYXRhKToK
IAogICAgICAgICB0aW1lb3V0ID0gY2xzLmxvbmdfdGltZW91dCBpZiBtYW5pZmVzdF90ZXN0LnRp
bWVvdXQgPT0gImxvbmciIGVsc2UgY2xzLmRlZmF1bHRfdGltZW91dAotCi0gICAgICAgIGlmIG5v
ZGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlcyA9IHt9Ci0gICAgICAgIGlmIHJlZmVyZW5j
ZXNfc2VlbiBpcyBOb25lOgotICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuID0gc2V0KCkKKyAg
ICAgICAgcXVpYyA9IG1hbmlmZXN0X3Rlc3QucXVpYyBpZiBoYXNhdHRyKG1hbmlmZXN0X3Rlc3Qs
ICJxdWljIikgZWxzZSBGYWxzZQogCiAgICAgICAgIHVybCA9IG1hbmlmZXN0X3Rlc3QudXJsCiAK
QEAgLTQ2Nyw0MSArNDg3LDYwIEBAIGNsYXNzIFJlZnRlc3RUZXN0KFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgIHBhdGg9bWFuaWZlc3RfdGVzdC5wYXRoLAogICAgICAgICAgICAgICAgICAgIHZp
ZXdwb3J0X3NpemU9bWFuaWZlc3RfdGVzdC52aWV3cG9ydF9zaXplLAogICAgICAgICAgICAgICAg
ICAgIGRwaT1tYW5pZmVzdF90ZXN0LmRwaSwKLSAgICAgICAgICAgICAgICAgICBwcm90b2NvbD0i
aHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBzIikgYW5kIG1hbmlmZXN0X3Rl
c3QuaHR0cHMgZWxzZSAiaHR0cCIsCi0gICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3Rf
dGVzdC5mdXp6eSkKKyAgICAgICAgICAgICAgICAgICBwcm90b2NvbD1zZXJ2ZXJfcHJvdG9jb2wo
bWFuaWZlc3RfdGVzdCksCisgICAgICAgICAgICAgICAgICAgZnV6enk9bWFuaWZlc3RfdGVzdC5m
dXp6eSwKKyAgICAgICAgICAgICAgICAgICBxdWljPXF1aWMpCiAKLSAgICAgICAgbm9kZXNbdXJs
XSA9IG5vZGUKKyAgICAgICAgcmVmc19ieV90eXBlID0gZGVmYXVsdGRpY3QobGlzdCkKIAogICAg
ICAgICBmb3IgcmVmX3VybCwgcmVmX3R5cGUgaW4gbWFuaWZlc3RfdGVzdC5yZWZlcmVuY2VzOgot
ICAgICAgICAgICAgY29tcGFyaXNvbl9rZXkgPSAocmVmX3R5cGUsKSArIHR1cGxlKHNvcnRlZChb
dXJsLCByZWZfdXJsXSkpCi0gICAgICAgICAgICBpZiByZWZfdXJsIGluIG5vZGVzOgotICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X25vZGUgPSByZWZfdXJsCi0gICAgICAgICAgICAgICAgaWYgY29t
cGFyaXNvbl9rZXkgaW4gcmVmZXJlbmNlc19zZWVuOgotICAgICAgICAgICAgICAgICAgICAjIFdl
IGhhdmUgcmVhY2hlZCBhIGN5Y2xlIHNvIHN0b3AgaGVyZQotICAgICAgICAgICAgICAgICAgICAj
IE5vdGUgdGhhdCBqdXN0IHNlZWluZyBhIG5vZGUgZm9yIHRoZSBzZWNvbmQgdGltZSBpcyBub3QK
LSAgICAgICAgICAgICAgICAgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IGEgY3ljbGUgYmVjYXVzZQot
ICAgICAgICAgICAgICAgICAgICAjIEEgIT0gQiAhPSBDICE9IEEgbXVzdCBpbmNsdWRlIEMgIT0g
QQotICAgICAgICAgICAgICAgICAgICAjIGJ1dCBBID09IEIgPT0gQSBzaG91bGQgbm90IGluY2x1
ZGUgdGhlIHJlZHVuZGFudCBCID09IEEuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0K
LSAgICAgICAgICAgIHJlZmVyZW5jZXNfc2Vlbi5hZGQoY29tcGFyaXNvbl9rZXkpCi0KLSAgICAg
ICAgICAgIG1hbmlmZXN0X25vZGUgPSBtYW5pZmVzdF9maWxlLmdldF9yZWZlcmVuY2UocmVmX3Vy
bCkKLSAgICAgICAgICAgIGlmIG1hbmlmZXN0X25vZGU6Ci0gICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVzdChtYW5pZmVzdF9maWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAg
ICAgICAgIHJlZnNfYnlfdHlwZVtyZWZfdHlwZV0uYXBwZW5kKHJlZl91cmwpCisKKyAgICAgICAg
IyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGFsbCB0aGUgbWlzbWF0Y2hlcywgd2hlcmUgd2UgZW5kIHVw
IHdpdGggbWlzbWF0Y2hfMSAhPSB1cmwgIT0KKyAgICAgICAgIyBtaXNtYXRjaF8yICE9IHVybCAh
PSBtaXNtYXRjaF8zIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9j
dW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFucyB0aGF0IG5vbmUgb2YgdGhlIG1pc21hdGNoZXMgcHJv
dmlkZWQgbWF0Y2gsCisgICAgICAgIG1pc21hdGNoX3dhbGsgPSBOb25lCisgICAgICAgIGlmIHJl
ZnNfYnlfdHlwZVsiIT0iXToKKyAgICAgICAgICAgIG1pc21hdGNoX3dhbGsgPSBSZWZ0ZXN0VGVz
dChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmc19ieV90eXBlWyIhPSJdWzBdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10p
Ci0KLSAgICAgICAgICAgIG5vZGUucmVmZXJlbmNlcy5hcHBlbmQoKHJlZmVyZW5jZSwgcmVmX3R5
cGUpKQorICAgICAgICAgICAgY21wX3JlZiA9IG1pc21hdGNoX3dhbGsKKyAgICAgICAgICAgIGZv
ciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiIT0iXVsxOl06CisgICAgICAgICAgICAgICAgY21w
X3NlbGYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKKyAg
ICAgICAgICAgICAgICBjbXBfcmVmLnJlZmVyZW5jZXMuYXBwZW5kKChjbXBfc2VsZiwgIiE9Iikp
CisgICAgICAgICAgICAgICAgY21wX3JlZiA9IFJlZnRlc3RUZXN0KG1hbmlmZXN0X2ZpbGUudGVz
dHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtdKQorICAgICAgICAgICAgICAgIGNtcF9zZWxmLnJlZmVyZW5jZXMuYXBw
ZW5kKChjbXBfcmVmLCAiIT0iKSkKKworICAgICAgICBpZiBtaXNtYXRjaF93YWxrIGlzIE5vbmU6
CisgICAgICAgICAgICBtaXNtYXRjaF9yZWZzID0gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG1pc21hdGNoX3JlZnMgPSBbKG1pc21hdGNoX3dhbGssICIhPSIpXQorCisgICAgICAgIGlm
IHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAgICAgICAgICMgRm9yIGVhY2ggPT0gcmVmLCBhZGQg
YSByZWZlcmVuY2UgdG8gdGhpcyBub2RlIHdob3NlIHRhaWwgaXMgdGhlIG1pc21hdGNoIGxpc3Qu
CisgICAgICAgICAgICAjIFBlciB0aGUgbG9naWMgZG9jdW1lbnRlZCBhYm92ZSwgdGhpcyBtZWFu
cyBhbnkgb25lIG9mIHRoZSBtYXRjaGVzIG11c3QgcGFzcyBwbHVzIGFsbCB0aGUgbWlzbWF0Y2hl
cy4KKyAgICAgICAgICAgIGZvciByZWZfdXJsIGluIHJlZnNfYnlfdHlwZVsiPT0iXToKKyAgICAg
ICAgICAgICAgICByZWYgPSBSZWZ0ZXN0VGVzdChtYW5pZmVzdF9maWxlLnRlc3RzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3VybCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc21hdGNoX3JlZnMp
CisgICAgICAgICAgICAgICAgbm9kZS5yZWZlcmVuY2VzLmFwcGVuZCgocmVmLCAiPT0iKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBqdXN0IGFkZCB0aGUgbWlz
bWF0Y2hlcyBkaXJlY3RseSBhcyB3ZSBhcmUgaW1tZWRpYXRlbHkgaW50byB0aGUKKyAgICAgICAg
ICAgICMgbWlzbWF0Y2ggY2hhaW4gd2l0aCBubyBhbHRlcm5hdGVzLgorICAgICAgICAgICAgbm9k
ZS5yZWZlcmVuY2VzLmV4dGVuZChtaXNtYXRjaF9yZWZzKQogCiAgICAgICAgIHJldHVybiBub2Rl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDU4OTZlNmJlMmJkNTFmNGI3OGU5NzAzY2FlZmI5YjY3MmUxMGE1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1XM0MgMy1jbGF1c2UgQlNEIExpY2Vuc2UKLQot
aHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNlLmh0
bWwKLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSogUmVkaXN0cmlidXRpb25z
IG9mIHdvcmtzIG11c3QgcmV0YWluIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLAotICB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0q
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgb3JpZ2lu
YWwgY29weXJpZ2h0Ci0gIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBXM0Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZQotICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyB3b3JrIHdpdGhvdXQKLSAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvc2V0dXAu
cHkKaW5kZXggYzljMzY0YjhiYWNjNzJhNmZmNzdmOWQwYzgxMWIyZDdkMTgxMGQxMy4uNzU5Y2I0
OGQxZjY1ZjUyZjY1MDBlZDJiODcxYzdlZjQzMDUxOGFiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3NldHVwLnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSBzZXR1cHRvb2xzIGltcG9y
dCBzZXR1cAogCi1QQUNLQUdFX1ZFUlNJT04gPSAnMi4wJworUEFDS0FHRV9WRVJTSU9OID0gJzMu
MCcKIGRlcHMgPSBbInNpeD49MS44IiwgImgyPT0zLjAuMSJdCiAKIHNldHVwKG5hbWU9J3dwdHNl
cnZlJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDJlMmQwZDY3NzFiYTI2YTFm
YmU3ZThmYzhiYjJlMjU5OGJjMzQyMjMuLjY0ZWFiMmQ4MDZiNTJkZTkzM2IyOGQ1ODQxNmI2OWQz
NmJkY2IyNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAtMTAsNyArMTAsNyBA
QCBjbGFzcyBUZXN0UmVzcG9uc2VTZXRDb29raWUoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYg
dGVzdF9uYW1lX3ZhbHVlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxl
cgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICBy
ZXNwb25zZS5zZXRfY29va2llKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgICAgIHJlc3BvbnNl
LnNldF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCiAgICAgICAgICAgICByZXR1cm4gIlRlc3Qi
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9uYW1lX3ZhbHVlIiwgaGFuZGxlcikK
QEAgLTIyLDggKzIyLDggQEAgY2xhc3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1Nl
cnZlcik6CiAgICAgZGVmIHRlc3RfdW5zZXQoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5k
bGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKLSAg
ICAgICAgICAgIHJlc3BvbnNlLnNldF9jb29raWUoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICAg
ICAgcmVzcG9uc2UudW5zZXRfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLnNl
dF9jb29raWUoYiJuYW1lIiwgYiJ2YWx1ZSIpCisgICAgICAgICAgICByZXNwb25zZS51bnNldF9j
b29raWUoYiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0
ZSA9ICgiR0VUIiwgIi90ZXN0L3Vuc2V0IiwgaGFuZGxlcikKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgZGVmIHRlc3Rf
ZGVsZXRlKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAg
ICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXNwb25zZS5k
ZWxldGVfY29va2llKCJuYW1lIikKKyAgICAgICAgICAgIHJlc3BvbnNlLmRlbGV0ZV9jb29raWUo
YiJuYW1lIikKICAgICAgICAgICAgIHJldHVybiAiVGVzdCIKIAogICAgICAgICByb3V0ZSA9ICgi
R0VUIiwgIi90ZXN0L2RlbGV0ZSIsIGhhbmRsZXIpCkBAIC00NywxOCArNDcsMjAgQEAgY2xhc3Mg
VGVzdFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYXJ0c1sibmFtZSJdLCAiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
YXJ0c1siUGF0aCJdLCAiLyIpCi0gICAgICAgICNTaG91bGQgYWxzbyBjaGVjayB0aGF0IGV4cGly
ZXMgaXMgaW4gdGhlIHBhc3QKKyAgICAgICAgIyBUT0RPOiBTaG91bGQgYWxzbyBjaGVjayB0aGF0
IGV4cGlyZXMgaXMgaW4gdGhlIHBhc3QKKwogCiBjbGFzcyBUZXN0UmVxdWVzdENvb2tpZXMoVGVz
dFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zZXRfY29va2llKHNlbGYpOgogICAgICAgICBA
d3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBy
ZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5jb29raWVzWyJuYW1lIl0udmFs
dWUKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmNvb2tpZXNbYiJuYW1lIl0udmFsdWUKIAog
ICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3NldF9jb29raWUiLCBoYW5kbGVyKQogICAg
ICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICByZXNwID0g
c2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBoZWFkZXJzPXsiQ29va2llIjogIm5hbWU9dmFsdWUifSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJ2YWx1ZSIpCiAKKwogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZDhkNjRkNTRjY2M3OGEzYzZkZWJhMjFiNzM0MjhlNzFh
ZWIxYmU2MC4uNmU5NDdlNDc4ZDllMTRlMzM2NzZjYmQ2MmJiYmFkYTJmMTE4ZWM3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBzeXMK
IGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQganNvbgogZnJvbSBpbyBpbXBvcnQg
Qnl0ZXNJTwogCiBpbXBvcnQgcHl0ZXN0Ci1mcm9tIHNpeCBpbXBvcnQgY3JlYXRlX2JvdW5kX21l
dGhvZAorZnJvbSBzaXggaW1wb3J0IGNyZWF0ZV9ib3VuZF9tZXRob2QsIFBZMworZnJvbSBzaXgu
bW92ZXMuaHR0cF9jbGllbnQgaW1wb3J0IEJhZFN0YXR1c0xpbmUKIAogd3B0c2VydmUgPSBweXRl
c3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBmcm9tIC5iYXNlIGltcG9ydCBUZXN0VXNpbmdT
ZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyLCBkb2Nfcm9vdApAQCAtMTY3LDcgKzE2Nyw2IEBAIGNs
YXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLnNlcnZlci5y
b3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICBzZWxmLnJlcXVlc3Qocm91dGVbMV0pCiAK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
InB5MyB1cmxsaWIgZG9lc24ndCBoYW5kbGUgaW52YWxpZCBIVFRQIHZlcnkgd2VsbCIpCiAgICAg
ZGVmIHRlc3Rfd3JpdGVfcmF3X2NvbnRlbnRzX2ludmFsaWRfaHR0cChzZWxmKToKICAgICAgICAg
cmVzcF9jb250ZW50ID0gYiJJTlZBTElEIEhUVFAiCiAKQEAgLTE3Nyw5ICsxNzYsMTQgQEAgY2xh
c3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAKICAgICAgICAgcm91dGUgPSAoIkdF
VCIsICIvdGVzdC90ZXN0X3dyaXRlX3Jhd19jb250ZW50IiwgaGFuZGxlcikKICAgICAgICAgc2Vs
Zi5zZXJ2ZXIucm91dGVyLnJlZ2lzdGVyKCpyb3V0ZSkKLSAgICAgICAgcmVzcCA9IHNlbGYucmVx
dWVzdChyb3V0ZVsxXSkKLSAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpID09IHJlc3BfY29udGVu
dAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVb
MV0pCisgICAgICAgICAgICBhc3NlcnQgcmVzcC5yZWFkKCkgPT0gcmVzcF9jb250ZW50CisgICAg
ICAgIGV4Y2VwdCBCYWRTdGF0dXNMaW5lIGFzIGU6CisgICAgICAgICAgICAjIEluIFB5dGhvbjMs
IGFuIGludmFsaWQgSFRUUCByZXF1ZXN0IHNob3VsZCB0aHJvdyBCYWRTdGF0dXNMaW5lLgorICAg
ICAgICAgICAgYXNzZXJ0IFBZMworICAgICAgICAgICAgYXNzZXJ0IHN0cihlKSA9PSByZXNwX2Nv
bnRlbnQuZGVjb2RlKCd1dGYtOCcpCiAKIGNsYXNzIFRlc3RIMlJlc3BvbnNlKFRlc3RVc2luZ0gy
U2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV93aXRob3V0X2VuZGluZ19zdHJlYW0oc2VsZik6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zdGFzaC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmluZGV4IDMwOWRkOWU1NzdhMDMzNWI3YTU2OTkyYzgy
YTQ4YjQzYTI1OWEyOGQuLjFjNGM5YWQ5MzNhMzc3NDY2MjNhMDE5NWY1NTNhZDhjZmU3MDY4OGYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVz
dHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CkBAIC0xOCwxMCArMTgsMTAgQEAgY2xhc3MgVGVz
dFJlc3BvbnNlU2V0Q29va2llKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIEB3cHRzZXJ2ZS5o
YW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToK
ICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJQT1NUIjoKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KCJpZCIpLCByZXF1
ZXN0LlBPU1QuZmlyc3QoImRhdGEiKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNlcnZlci5z
dGFzaC5wdXQocmVxdWVzdC5QT1NULmZpcnN0KGIiaWQiKSwgcmVxdWVzdC5QT1NULmZpcnN0KGIi
ZGF0YSIpKQogICAgICAgICAgICAgICAgIGRhdGEgPSAiT0siCiAgICAgICAgICAgICBlbGlmIHJl
cXVlc3QubWV0aG9kID09ICJHRVQiOgotICAgICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LnNl
cnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KCJpZCIpKQorICAgICAgICAgICAgICAg
IGRhdGEgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHJlcXVlc3QuR0VULmZpcnN0KGIiaWQi
KSkKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiTk9UIEZPVU5EIgogICAgICAgICAgICAgcmV0dXJuIGRhdGEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3JlcXVlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY5ZDNkNDYwNDQwOTQxMTk4NGNiNDlmY2Q0MGViN2U5NzFiM2M1MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9y
dCBtb2NrCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKKworZnJvbSB3cHRzZXJ2ZS5yZXF1
ZXN0IGltcG9ydCBSZXF1ZXN0LCBSZXF1ZXN0SGVhZGVycworCisKK2NsYXNzIE1vY2tIVFRQTWVz
c2FnZShkaWN0KToKKyAgICAiIiJBIG1pbmltdW0gKGFuZCBub3QgY29tcGxldGVseSBjb3JyZWN0
bHkpIG1vY2sgb2YgSFRUUE1lc3NhZ2UgZm9yIHRlc3RpbmcuCisKKyAgICBDb25zdHJ1Y3Rpbmcg
SFRUUE1lc3NhZ2UgaXMgYW5ub3lpbmcgYW5kIGRpZmZlcmVudCBpbiBQeXRob24gMiBhbmQgMy4g
VGhpcworICAgIG9ubHkgaW1wbGVtZW50cyB0aGUgcGFydHMgdXNlZCBieSBSZXF1ZXN0SGVhZGVy
cy4KKworICAgIFJlcXVpcmVtZW50cyBmb3IgY29uc3RydWN0aW9uOgorICAgICogS2V5cyBhcmUg
aGVhZGVyIG5hbWVzIGFuZCBNVVNUIGJlIGxvd2VyLWNhc2UuCisgICAgKiBWYWx1ZXMgYXJlIGxp
c3RzIG9mIGhlYWRlciB2YWx1ZXMgKGV2ZW4gaWYgdGhlcmUncyBvbmx5IG9uZSkuCisgICAgKiBL
ZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIGJlIG5hdGl2ZSBzdHJpbmdzIHRvIG1hdGNoIHN0ZGxpYidz
IGJlaGF2aW91cnMuCisgICAgIiIiCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Cisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgc3RyKQorICAgICAgICB2YWx1ZXMgPSBkaWN0
Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleS5sb3dlcigpKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZSh2YWx1ZXMsIGxpc3QpCisgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKworICAgIGRlZiBnZXQo
c2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZltrZXldCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0CisKKyAgICBkZWYgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzKHNlbGYsIGtleSk6Cisg
ICAgICAgIHZhbHVlcyA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCisgICAg
ICAgIHJldHVybiBbInt9OiB7fVxuIi5mb3JtYXQoa2V5LCB2KSBmb3IgdiBpbiB2YWx1ZXNdCisK
KworZGVmIHRlc3RfcmVxdWVzdF9oZWFkZXJzX2dldCgpOgorICAgIHJhd19oZWFkZXJzID0gTW9j
a0hUVFBNZXNzYWdlKHsKKyAgICAgICAgJ3gtZm9vJzogWydmb28nXSwKKyAgICAgICAgJ3gtYmFy
JzogWydiYXIxJywgJ2JhcjInXSwKKyAgICB9KQorICAgIGhlYWRlcnMgPSBSZXF1ZXN0SGVhZGVy
cyhyYXdfaGVhZGVycykKKyAgICBhc3NlcnQgaGVhZGVyc1sneC1mb28nXSA9PSBiJ2ZvbycKKyAg
ICBhc3NlcnQgaGVhZGVyc1snWC1CYXInXSA9PSBiJ2JhcjEsIGJhcjInCisgICAgYXNzZXJ0IGhl
YWRlcnMuZ2V0KCd4LWJhcicpID09IGInYmFyMSwgYmFyMicKKworCitkZWYgdGVzdF9yZXF1ZXN0
X2hlYWRlcnNfZW5jb2RpbmcoKToKKyAgICByYXdfaGVhZGVycyA9IE1vY2tIVFRQTWVzc2FnZSh7
CisgICAgICAgICd4LWZvbyc6IFsnZm9vJ10sCisgICAgICAgICd4LWJhcic6IFsnYmFyMScsICdi
YXIyJ10sCisgICAgfSkKKyAgICBoZWFkZXJzID0gUmVxdWVzdEhlYWRlcnMocmF3X2hlYWRlcnMp
CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1mb28nXSwgYmluYXJ5X3R5cGUpCisg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyc1sneC1iYXInXSwgYmluYXJ5X3R5cGUpCisgICAg
YXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVycy5nZXRfbGlzdCgneC1iYXInKVswXSwgYmluYXJ5X3R5
cGUpCisKKworZGVmIHRlc3RfcmVxdWVzdF91cmxfZnJvbV9zZXJ2ZXJfYWRkcmVzcygpOgorICAg
IHJlcXVlc3RfaGFuZGxlciA9IG1vY2suTW9jaygpCisgICAgcmVxdWVzdF9oYW5kbGVyLnNlcnZl
ci5zY2hlbWUgPSAnaHR0cCcKKyAgICByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9hZGRy
ZXNzID0gKCdsb2NhbGhvc3QnLCAnODAwMCcpCisgICAgcmVxdWVzdF9oYW5kbGVyLnBhdGggPSAn
L2RlbW8nCisgICAgcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMgPSBNb2NrSFRUUE1lc3NhZ2UoKQor
CisgICAgcmVxdWVzdCA9IFJlcXVlc3QocmVxdWVzdF9oYW5kbGVyKQorICAgIGFzc2VydCByZXF1
ZXN0LnVybCA9PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2RlbW8nCisgICAgYXNzZXJ0IGlzaW5z
dGFuY2UocmVxdWVzdC51cmwsIHN0cikKKworCitkZWYgdGVzdF9yZXF1ZXN0X3VybF9mcm9tX2hv
c3RfaGVhZGVyKCk6CisgICAgcmVxdWVzdF9oYW5kbGVyID0gbW9jay5Nb2NrKCkKKyAgICByZXF1
ZXN0X2hhbmRsZXIuc2VydmVyLnNjaGVtZSA9ICdodHRwJworICAgIHJlcXVlc3RfaGFuZGxlci5z
ZXJ2ZXIuc2VydmVyX2FkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsICc4MDAwJykKKyAgICByZXF1ZXN0
X2hhbmRsZXIucGF0aCA9ICcvZGVtbycKKyAgICByZXF1ZXN0X2hhbmRsZXIuaGVhZGVycyA9IE1v
Y2tIVFRQTWVzc2FnZSh7J2hvc3QnOiBbJ3dlYi1wbGF0Zm9ybS50ZXN0OjgwMDEnXX0pCisKKyAg
ICByZXF1ZXN0ID0gUmVxdWVzdChyZXF1ZXN0X2hhbmRsZXIpCisgICAgYXNzZXJ0IHJlcXVlc3Qu
dXJsID09ICdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3Q6ODAwMS9kZW1vJworICAgIGFzc2VydCBp
c2luc3RhbmNlKHJlcXVlc3QudXJsLCBzdHIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rh
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL3Rlc3Rfc3Rhc2gucHkKaW5kZXggMWVhOTljMDYwOWY1YmVkODU5NjUx
Mjg0ZWIzZGE4MGE0Y2RkZjczNy4uMzFhZjE1NThiMGNjNWMwNDY4NDNlMGU5NjU2OWRiNDJjNDY3
Y2YyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVz
dF9zdGFzaC5weQpAQCAtNCw2ICs0LDcgQEAgaW1wb3J0IHRocmVhZGluZwogZnJvbSBtdWx0aXBy
b2Nlc3NpbmcubWFuYWdlcnMgaW1wb3J0IEJhc2VNYW5hZ2VyCiAKIGltcG9ydCBweXRlc3QKK2Zy
b20gc2l4IGltcG9ydCBQWTMKIAogU3Rhc2ggPSBweXRlc3QuaW1wb3J0b3Jza2lwKCJ3cHRzZXJ2
ZS5zdGFzaCIpLlN0YXNoCiAKQEAgLTU3LDcgKzU4LDggQEAgZGVmIHJ1bihwcm9jZXNzX3F1ZXVl
LCByZXF1ZXN0X2xvY2ssIHJlc3BvbnNlX2xvY2spOgogICAgIHByb2Nlc3NfcXVldWUucHV0KHRo
cmVhZF9xdWV1ZS5nZXQoKSkKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09
ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IK
KyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0
aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBkZWYgdGVzdF9k
ZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRlbGF5cyBpbiBw
cm94aWVkIExvY2sgcmV0cmlldmFsIGRvIG5vdCBpbnRlcmZlcmUgd2l0aApAQCAtOTYsNyArOTgs
OCBAQCBkZWYgdGVzdF9kZWxheWVkX2xvY2soYWRkX2NsZWFudXApOgogICAgICAgICAiYm90aCBp
bnN0YW5jZXMgaGFkIHZhbGlkIGxvY2tzIikKIAogCi1AcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBs
YXRmb3JtID09ICJ3aW4zMiIsCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3
aW4zMiIgb3IKKyAgICAgICAgICAgICAgICAgICBQWTMgYW5kIG11bHRpcHJvY2Vzc2luZy5nZXRf
c3RhcnRfbWV0aG9kKCkgPT0gInNwYXduIiwKICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjkzOCIpCiBk
ZWYgdGVzdF9kZWxheWVkX2RpY3QoYWRkX2NsZWFudXApOgogICAgICIiIkVuc3VyZSB0aGF0IGRl
bGF5cyBpbiBwcm94aWVkIGBkaWN0YCByZXRyaWV2YWwgZG8gbm90IGludGVyZmVyZSB3aXRoCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0Lmxv
ZwppbmRleCBlZjlkNmE4MGFhNmFjMTQyM2Y1NDg1YmIyNWJkMzM2OTc1ZDlhYjU3Li41ZjllYjZi
MzhiNjUxNDlmZGU3ZGFkMTliODA1NmYzY2M1YmYxMzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdzNjLWltcG9ydC5sb2cKQEAgLTE2LDQgKzE2LDUg
QEAgTm9uZQogTGlzdCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy90ZXN0X3JlcGxhY2VtZW50X3Rva2VuaXplci5weQorL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXF1ZXN0LnB5
CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93M2MtaW1wb3J0LmxvZwppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYxOWQ5MDZlNDVkOGQ3
OTAzM2MxLi5mYWFhZjY3ZTk4NThhMTA3ZGM4M2E5NTI4NWYyYjkzOTQ3ZmIwMTMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKQEAgLTE0LDcgKzE0
LDYgQEAgUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6CiBOb25lCiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9MSUNFTlNFCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9NQU5JRkVTVC5p
bgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvUkVBRE1FLm1kCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25m
aWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQppbmRleCBlMTFjYWUxMzdiOWM1MWQ4Njc3NDAw
MWVhZDcxOTM4ZmQ1NWMwNTU1Li43NzY2NTY1ZmU0ZmQxNzU1OThiOGI2Y2NlMGU0ZmY0YjQwZjEw
ZDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2Nv
bmZpZy5weQpAQCAtNjksNiArNjksMzEgQEAgY2xhc3MgQ29uZmlnKE1hcHBpbmcpOgogICAgIGRl
ZiBhc19kaWN0KHNlbGYpOgogICAgICAgICByZXR1cm4ganNvbl90eXBlcyhzZWxmLl9fZGljdF9f
KQogCisgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGxpbWl0ZWQgaW4gc2l6ZSBzbyB3
ZSBuZWVkIHRvIHBydW5lIHRoZSBtb3N0IGVncmVnaW91cyBjb250cmlidXRvcnMKKyAgICAjIHRv
IHNpemUsIHRoZSBvcmlnaW4gcG9saWN5IHN1YmRvbWFpbnMuCisgICAgZGVmIGFzX2RpY3RfZm9y
X3dkX2Vudl92YXJpYWJsZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5hc19kaWN0KCkK
KworICAgICAgICBmb3Iga2V5IGluIFsKKyAgICAgICAgICAgICgic3ViZG9tYWlucyIsKSwKKyAg
ICAgICAgICAgICgiZG9tYWlucyIsICJhbHQiKSwKKyAgICAgICAgICAgICgiZG9tYWlucyIsICIi
KSwKKyAgICAgICAgICAgICgiYWxsX2RvbWFpbnMiLCAiYWx0IiksCisgICAgICAgICAgICAoImFs
bF9kb21haW5zIiwgIiIpLAorICAgICAgICAgICAgKCJkb21haW5zX3NldCIsKSwKKyAgICAgICAg
ICAgICgiYWxsX2RvbWFpbnNfc2V0IiwpCisgICAgICAgIF06CisgICAgICAgICAgICB0YXJnZXQg
PSByZXN1bHQKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIGtleVs6LTFdOgorICAgICAgICAgICAg
ICAgIHRhcmdldCA9IHRhcmdldFtwYXJ0XQorICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXRba2V5
Wy0xXV0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgorICAgICAgICAg
ICAgICAgIHRhcmdldFtrZXlbLTFdXSA9IHtrOnYgZm9yIChrLHYpIGluIGl0ZXJpdGVtcyh2YWx1
ZSkgaWYgbm90IGsuc3RhcnRzd2l0aCgib3AiKX0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgdGFyZ2V0W2tleVstMV1dID0gW3ggZm9yIHggaW4gdmFsdWUgaWYgbm90IHguc3Rh
cnRzd2l0aCgib3AiKV0KKworICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogZGVmIGpzb25fdHlw
ZXMob2JqKToKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dw
dHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQppbmRleCBjYTUxMTgw
MDljZmM5YzQ3NjNmOTllMmE2Mjk2ZDc4NGE2NTM5MjE2Li5mZWExMjc3YjBkMWNiNWNhYzhjYTQ0
NWFiMDU5OTQ3NDEyNjY5YWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgY2dpCiBp
bXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0xNCw2ICsxMywxMSBAQCBmcm9t
IC5yZXF1ZXN0IGltcG9ydCBBdXRoZW50aWNhdGlvbgogZnJvbSAucmVzcG9uc2UgaW1wb3J0IE11
bHRpcGFydENvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKK3RyeToK
KyAgICBmcm9tIGh0bWwgaW1wb3J0IGVzY2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZy
b20gY2dpIGltcG9ydCBlc2NhcGUKKwogX19hbGxfXyA9IFsiZmlsZV9oYW5kbGVyIiwgInB5dGhv
bl9zY3JpcHRfaGFuZGxlciIsCiAgICAgICAgICAgICJGdW5jdGlvbkhhbmRsZXIiLCAiaGFuZGxl
ciIsICJqc29uX2hhbmRsZXIiLAogICAgICAgICAgICAiYXNfaXNfaGFuZGxlciIsICJFcnJvckhh
bmRsZXIiLCAiQmFzaWNBdXRoSGFuZGxlciJdCkBAIC03Niw3ICs4MCw3IEBAIGNsYXNzIERpcmVj
dG9yeUhhbmRsZXIob2JqZWN0KToKIDx1bD4KICUoaXRlbXMpcwogPC91bD4KLSIiIiAlIHsicGF0
aCI6IGNnaS5lc2NhcGUodXJsX3BhdGgpLAorIiIiICUgeyJwYXRoIjogZXNjYXBlKHVybF9wYXRo
KSwKICAgICAgICAiaXRlbXMiOiAiXG4iLmpvaW4oc2VsZi5saXN0X2l0ZW1zKHVybF9wYXRoLCBw
YXRoKSl9ICAjIG5vcWE6IEUxMjIKIAogICAgIGRlZiBsaXN0X2l0ZW1zKHNlbGYsIGJhc2VfcGF0
aCwgcGF0aCk6CkBAIC05MiwxNSArOTYsMjkgQEAgY2xhc3MgRGlyZWN0b3J5SGFuZGxlcihvYmpl
Y3QpOgogICAgICAgICAgICAgbGluayA9IHVybGpvaW4oYmFzZV9wYXRoLCAiLi4iKQogICAgICAg
ICAgICAgeWllbGQgKCIiIjxsaSBjbGFzcz0iZGlyIj48YSBocmVmPSIlKGxpbmspcyI+JShuYW1l
KXM8L2E+PC9saT4iIiIgJQogICAgICAgICAgICAgICAgICAgIHsibGluayI6IGxpbmssICJuYW1l
IjogIi4uIn0pCisgICAgICAgIGl0ZW1zID0gW10KKyAgICAgICAgcHJldl9pdGVtID0gTm9uZQog
ICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSk6Ci0gICAgICAgICAg
ICBsaW5rID0gY2dpLmVzY2FwZShxdW90ZShpdGVtKSkKKyAgICAgICAgICAgIGlmIHByZXZfaXRl
bSBhbmQgcHJldl9pdGVtICsgIi5oZWFkZXJzIiA9PSBpdGVtOgorICAgICAgICAgICAgICAgIGl0
ZW1zWy0xXVsxXSA9IGl0ZW0KKyAgICAgICAgICAgICAgICBwcmV2X2l0ZW0gPSBOb25lCisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChbaXRlbSwgTm9u
ZV0pCisgICAgICAgICAgICBwcmV2X2l0ZW0gPSBpdGVtCisgICAgICAgIGZvciBpdGVtLCBkb3Rf
aGVhZGVycyBpbiBpdGVtczoKKyAgICAgICAgICAgIGxpbmsgPSBlc2NhcGUocXVvdGUoaXRlbSkp
CisgICAgICAgICAgICBkb3RfaGVhZGVyc19tYXJrdXAgPSAiIgorICAgICAgICAgICAgaWYgZG90
X2hlYWRlcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG90X2hlYWRlcnNfbWFya3Vw
ID0gKCIiIiAoPGEgaHJlZj0iJShsaW5rKXMiPi5oZWFkZXJzPC9hPikiIiIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImxpbmsiOiBlc2NhcGUocXVvdGUoZG90X2hl
YWRlcnMpKX0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRo
LCBpdGVtKSk6CiAgICAgICAgICAgICAgICAgbGluayArPSAiLyIKICAgICAgICAgICAgICAgICBj
bGFzc18gPSAiZGlyIgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjbGFzc18g
PSAiZmlsZSIKLSAgICAgICAgICAgIHlpZWxkICgiIiI8bGkgY2xhc3M9IiUoY2xhc3MpcyI+PGEg
aHJlZj0iJShsaW5rKXMiPiUobmFtZSlzPC9hPjwvbGk+IiIiICUKLSAgICAgICAgICAgICAgICAg
ICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGNnaS5lc2NhcGUoaXRlbSksICJjbGFzcyI6IGNsYXNz
X30pCisgICAgICAgICAgICB5aWVsZCAoIiIiPGxpIGNsYXNzPSIlKGNsYXNzKXMiPjxhIGhyZWY9
IiUobGluaylzIj4lKG5hbWUpczwvYT4lKGhlYWRlcnMpczwvbGk+IiIiICUKKyAgICAgICAgICAg
ICAgICAgICB7ImxpbmsiOiBsaW5rLCAibmFtZSI6IGVzY2FwZShpdGVtKSwgImNsYXNzIjogY2xh
c3NfLAorICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyI6IGRvdF9oZWFkZXJzX21hcmt1cH0p
CiAKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwgcmVzcG9uc2UpOgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKaW5kZXggY2Vi
MzRjYzNmNGY5OTRlZDA0OTkxNWM3Nzg0ZjdjNjljNzEyYWJjYS4uYmJmMjVlNmZlMTExMmUxODFk
YTVhN2I2YTljNmVlMmI3NTYzYWJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBjZ2kgaW1wb3J0
IGVzY2FwZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGltcG9ydCBiYXNlNjQKIGlt
cG9ydCBnemlwIGFzIGd6aXBfbW9kdWxlCkBAIC03LDEwICs2LDE1IEBAIGltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgdGltZQogaW1wb3J0IHV1aWQKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBT
dHJpbmdJTwogCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gc2l4IGltcG9y
dCB0ZXh0X3R5cGUsIGJpbmFyeV90eXBlCiAKK3RyeToKKyAgICBmcm9tIGh0bWwgaW1wb3J0IGVz
Y2FwZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY2dpIGltcG9ydCBlc2NhcGUKKwog
ZGVmIHJlc29sdmVfY29udGVudChyZXNwb25zZSk6CiAgICAgcmV0dXJuIGIiIi5qb2luKGl0ZW0g
Zm9yIGl0ZW0gaW4gcmVzcG9uc2UuaXRlcl9jb250ZW50KHJlYWRfZmlsZT1UcnVlKSkKIApAQCAt
MzE2LDYgKzMyMCw4IEBAIGNsYXNzIEZpcnN0V3JhcHBlcihvYmplY3QpOgogCiAgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2Uoa2V5LCB0ZXh0X3R5cGUpOgorICAgICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUo
J2lzby04ODU5LTEnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyYW1zLmZpcnN0KGtleSkK
ICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCkBAIC0zOTMs
OCArMzk5LDggQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAgICAgZGVmIHV1aWQocmVx
dWVzdCk6CiAgICAgICAgIHJldHVybiBzdHIodXVpZC51dWlkNCgpKQogCi0gICAgIyBNYWludGFp
biBhIHdoaXRlbGlzdCBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcywgcmVzdHJpY3RlZCB0byB0aG9z
ZSB0aGF0Ci0gICAgIyBhcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgWzFdLiBUaGlzIGVu
c3VyZXMgdGhhdCB0ZXN0IGF1dGhvcnMgZG8gbm90CisgICAgIyBNYWludGFpbiBhIGxpc3Qgb2Yg
c3VwcG9ydGVkIGFsZ29yaXRobXMsIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdGhhdCBhcmUKKyAgICAj
IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIFsxXS4gVGhpcyBlbnN1cmVzIHRoYXQgdGVzdCBh
dXRob3JzIGRvIG5vdAogICAgICMgdW5rbm93aW5nbHkgaW50cm9kdWNlIHBsYXRmb3JtLXNwZWNp
ZmljIHRlc3RzLgogICAgICMKICAgICAjIFsxXSBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xp
YnJhcnkvaGFzaGxpYi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3dwdHNlcnZlL3JlcXVlc3QucHkKaW5kZXggYTgwYmMwYzgzMDBhY2ZjZjc2NjUxMmI4OWVjZmVl
MzM4YmFjMjI5NS4uN2M0ZDAyZDZkZTZmMWEwYjBlY2NjMDVhYjAzMDRjZmZiYzEwZjk1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVxdWVzdC5w
eQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGNnaQotZnJvbSBzaXgu
bW92ZXMuaHR0cF9jb29raWVzIGltcG9ydCBCYXNlQ29va2llCi1mcm9tIHNpeCBpbXBvcnQgQnl0
ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1zLCBQWTMKIGltcG9ydCB0ZW1w
ZmlsZQogCitmcm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIGl0ZXJpdGVtcywg
UFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUKIGZyb20g
c2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXNsLCB1cmxzcGxpdAogCiBmcm9t
IC4gaW1wb3J0IHN0YXNoCi1mcm9tIC51dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgorZnJvbSAu
dXRpbHMgaW1wb3J0IEhUVFBFeGNlcHRpb24sIGlzb21vcnBoaWNfZW5jb2RlLCBpc29tb3JwaGlj
X2RlY29kZQogCiBtaXNzaW5nID0gb2JqZWN0KCkKIApAQCAtMjE5LDIyICsyMTksMjMgQEAgY2xh
c3MgUmVxdWVzdChvYmplY3QpOgogICAgIE11bHRpRGljdCByZXByZXNlbnRpbmcgdGhlIHBhcmFt
ZXRlcnMgc3VwcGxpZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICBOb3RlIHRoYXQgdGhlc2UgbWF5
IGJlIHByZXNlbnQgb24gbm9uLUdFVCByZXF1ZXN0czsgdGhlIG5hbWUgaXMKICAgICBjaG9zZW4g
dG8gYmUgZmFtaWxpYXIgdG8gdXNlcnMgb2Ygb3RoZXIgc3lzdGVtcyBzdWNoIGFzIFBIUC4KKyAg
ICBCb3RoIGtleXMgYW5kIHZhbHVlcyBhcmUgYmluYXJ5IHN0cmluZ3MuCiAKICAgICAuLiBhdHRy
aWJ1dGU6OiBQT1NUCiAKICAgICBNdWx0aURpY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0IGJv
ZHkgcGFyYW1ldGVycy4gTW9zdCBwYXJhbWV0ZXJzCiAgICAgYXJlIHByZXNlbnQgYXMgc3RyaW5n
IHZhbHVlcywgYnV0IGZpbGUgdXBsb2FkcyBoYXZlIGZpbGUtbGlrZQotICAgIHZhbHVlcy4KKyAg
ICB2YWx1ZXMuIEFsbCBzdHJpbmcgdmFsdWVzIChpbmNsdWRpbmcga2V5cykgaGF2ZSBiaW5hcnkg
dHlwZS4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IGNvb2tpZXMKIAotICAgIENvb2tpZXMgb2JqZWN0
IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVzdCB3aXRoIGEKKyAgICBB
IENvb2tpZXMgb2JqZWN0IHJlcHJlc2VudGluZyBjb29raWVzIHNlbnQgd2l0aCB0aGUgcmVxdWVz
dCB3aXRoIGEKICAgICBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlLgogCiAgICAgLi4gYXR0cmli
dXRlOjogYXV0aAogCi0gICAgT2JqZWN0IHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHByb3Bl
cnRpZXMgcmVwcmVzZW50aW5nIGFueQotICAgIGNyZWRlbnRpYWxzIHN1cHBsaWVkIHVzaW5nIEhU
VFAgYXV0aGVudGljYXRpb24uCisgICAgQW4gaW5zdGFuY2Ugb2YgQXV0aGVudGljYXRpb24gd2l0
aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcHJvcGVydGllcworICAgIHJlcHJlc2VudGluZyBhbnkg
Y3JlZGVudGlhbHMgc3VwcGxpZWQgdXNpbmcgSFRUUCBhdXRoZW50aWNhdGlvbi4KIAogICAgIC4u
IGF0dHJpYnV0ZTo6IHNlcnZlcgogCkBAIC0yNDgsOCArMjQ5LDEyIEBAIGNsYXNzIFJlcXVlc3Qo
b2JqZWN0KToKICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID0gcmVxdWVzdF9oYW5kbGVy
LnByb3RvY29sX3ZlcnNpb24KICAgICAgICAgc2VsZi5tZXRob2QgPSByZXF1ZXN0X2hhbmRsZXIu
Y29tbWFuZAogCisgICAgICAgICMgS2V5cyBhbmQgdmFsdWVzIGluIHJhdyBoZWFkZXJzIGFyZSBu
YXRpdmUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5faGVhZGVycyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5yYXdfaGVhZGVycyA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCisKICAgICAgICAgc2NoZW1l
ID0gcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zY2hlbWUKLSAgICAgICAgaG9zdCA9IHJlcXVlc3Rf
aGFuZGxlci5oZWFkZXJzLmdldCgiSG9zdCIpCisgICAgICAgIGhvc3QgPSBzZWxmLnJhd19oZWFk
ZXJzLmdldCgiSG9zdCIpCiAgICAgICAgIHBvcnQgPSByZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNl
cnZlcl9hZGRyZXNzWzFdCiAKICAgICAgICAgaWYgaG9zdCBpcyBOb25lOgpAQCAtMjYyLDIyICsy
NjcsMTcgQEAgY2xhc3MgUmVxdWVzdChvYmplY3QpOgogICAgICAgICBzZWxmLnVybF9iYXNlID0g
Ii8iCiAKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3BhdGguc3RhcnRzd2l0aChzY2hlbWUgKyAi
Oi8vIik6Ci0gICAgICAgICAgICBzZWxmLnVybCA9IHJlcXVlc3RfaGFuZGxlci5wYXRoCisgICAg
ICAgICAgICBzZWxmLnVybCA9IHNlbGYucmVxdWVzdF9wYXRoCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnVybCA9ICIlczovLyVzOiVzJXMiICUgKHNjaGVtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5yZXF1ZXN0X3BhdGgpCisgICAgICAgICAgICAjIFRPRE8oIzIzMzYyKTogU3RvcCB1
c2luZyBuYXRpdmUgc3RyaW5ncyBmb3IgVVJMcy4KKyAgICAgICAgICAgIHNlbGYudXJsID0gIiVz
Oi8vJXM6JXMlcyIgJSAoCisgICAgICAgICAgICAgICAgc2NoZW1lLCBob3N0LCBwb3J0LCBzZWxm
LnJlcXVlc3RfcGF0aCkKICAgICAgICAgc2VsZi51cmxfcGFydHMgPSB1cmxzcGxpdChzZWxmLnVy
bCkKIAotICAgICAgICBzZWxmLnJhd19oZWFkZXJzID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMK
LQogICAgICAgICBzZWxmLnJlcXVlc3RfbGluZSA9IHJlcXVlc3RfaGFuZGxlci5yYXdfcmVxdWVz
dGxpbmUKIAotICAgICAgICBzZWxmLl9oZWFkZXJzID0gTm9uZQotCiAgICAgICAgIHNlbGYucmF3
X2lucHV0ID0gSW5wdXRGaWxlKHJlcXVlc3RfaGFuZGxlci5yZmlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3Ro
IiwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5yYXdf
aGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiwgMCkpKQogCiAgICAgICAgIHNlbGYuX2JvZHkg
PSBOb25lCiAKQEAgLTI5NywxOSArMjk3LDI0IEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAg
ICAgICAgICAgIHBhcmFtcyA9IHBhcnNlX3FzbChzZWxmLnVybF9wYXJ0cy5xdWVyeSwga2VlcF9i
bGFua192YWx1ZXM9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX0dFVCA9IE11bHRpRGljdCgpCiAg
ICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXM6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fR0VULmFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX0dFVC5hZGQoaXNv
bW9ycGhpY19lbmNvZGUoa2V5KSwgaXNvbW9ycGhpY19lbmNvZGUodmFsdWUpKQogICAgICAgICBy
ZXR1cm4gc2VsZi5fR0VUCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgUE9TVChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fUE9TVCBpcyBOb25lOgotICAgICAgICAgICAgI1dvcmsgb3V0IHRoZSBw
b3N0IHBhcmFtZXRlcnMKKyAgICAgICAgICAgICMgV29yayBvdXQgdGhlIHBvc3QgcGFyYW1ldGVy
cwogICAgICAgICAgICAgcG9zID0gc2VsZi5yYXdfaW5wdXQudGVsbCgpCiAgICAgICAgICAgICBz
ZWxmLnJhd19pbnB1dC5zZWVrKDApCi0gICAgICAgICAgICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2Uo
ZnA9c2VsZi5yYXdfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52
aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRob2R9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdfaGVhZGVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlcz1UcnVlKQorICAgICAgICAgICAg
a3dhcmdzID0geworICAgICAgICAgICAgICAgICJmcCI6IHNlbGYucmF3X2lucHV0LAorICAgICAg
ICAgICAgICAgICJlbnZpcm9uIjogeyJSRVFVRVNUX01FVEhPRCI6IHNlbGYubWV0aG9kfSwKKyAg
ICAgICAgICAgICAgICAiaGVhZGVycyI6IHNlbGYucmF3X2hlYWRlcnMsCisgICAgICAgICAgICAg
ICAgImtlZXBfYmxhbmtfdmFsdWVzIjogVHJ1ZSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIFBZMzoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImVuY29kaW5nIl0gPSAiaXNvLTg4NTkt
MSIKKyAgICAgICAgICAgIGZzID0gY2dpLkZpZWxkU3RvcmFnZSgqKmt3YXJncykKICAgICAgICAg
ICAgIHNlbGYuX1BPU1QgPSBNdWx0aURpY3QuZnJvbV9maWVsZF9zdG9yYWdlKGZzKQogICAgICAg
ICAgICAgc2VsZi5yYXdfaW5wdXQuc2Vlayhwb3MpCiAgICAgICAgIHJldHVybiBzZWxmLl9QT1NU
CkBAIC0zMTcsMTQgKzMyMiwxMiBAQCBjbGFzcyBSZXF1ZXN0KG9iamVjdCk6CiAgICAgQHByb3Bl
cnR5CiAgICAgZGVmIGNvb2tpZXMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2Nvb2tpZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQorICAgICAgICAgICAgcGFy
c2VyID0gQmluYXJ5Q29va2llUGFyc2VyKCkKICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0g
c2VsZi5oZWFkZXJzLmdldCgiY29va2llIiwgYiIiKQotICAgICAgICAgICAgaWYgUFkzOgotICAg
ICAgICAgICAgICAgIGNvb2tpZV9oZWFkZXJzID0gY29va2llX2hlYWRlcnMuZGVjb2RlKCJpc28t
ODg1OS0xIikKICAgICAgICAgICAgIHBhcnNlci5sb2FkKGNvb2tpZV9oZWFkZXJzKQogICAgICAg
ICAgICAgY29va2llcyA9IENvb2tpZXMoKQogICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4g
aXRlcml0ZW1zKHBhcnNlcik6Ci0gICAgICAgICAgICAgICAgY29va2llc1trZXldID0gQ29va2ll
VmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgY29va2llc1tpc29tb3JwaGljX2VuY29kZShr
ZXkpXSA9IENvb2tpZVZhbHVlKHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IGNv
b2tpZXMKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvb2tpZXMKIApAQCAtMzU3LDI0ICszNjAsNiBA
QCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVzdCk6CiAgICAgICAgIHN1cGVyKEgyUmVxdWVzdCwgc2Vs
ZikuX19pbml0X18ocmVxdWVzdF9oYW5kbGVyKQogCiAKLWRlZiBfbWF5YmVfZW5jb2RlKHMpOgot
ICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcg
aXNvLTg4NTktMS4KLQotICAgIFJldHVybnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2Ag
aW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhIG5vLW9wCi0gICAgaWYgdGhlIGFyZ3VtZW50
IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5cGUuCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShz
LCBiaW5hcnlfdHlwZSk6Ci0gICAgICAgIHJldHVybiBzCi0KLSAgICAjIFB5dGhvbiAzIGFzc3Vt
ZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNpbmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4
dAotICAgICMgd2l0aCBub24gQVNDSUkgY2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUg
dGV4dCBiYWNrIHRvIGJpbmFyeS4KLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5
dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0
dHAvY2xpZW50LnB5I0wyMTMKLSAgICBpZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6Ci0gICAg
ICAgIHJldHVybiBzLmVuY29kZSgiaXNvLTg4NTktMSIpCi0KLSAgICByYWlzZSBUeXBlRXJyb3Io
IlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVxdWVzdEhlYWRlcnM6ICVyIiAlIHMpCi0KLQogY2xhc3Mg
UmVxdWVzdEhlYWRlcnMoZGljdCk6CiAgICAgIiIiUmVhZC1vbmx5IGRpY3Rpb25hcnktbGlrZSBB
UEkgZm9yIGFjY2Vzc2luZyByZXF1ZXN0IGhlYWRlcnMuCiAKQEAgLTM4NCw3ICszNjksNyBAQCBj
bGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVhZGVyIGluIGl0ZW1zLmtleXMoKToKLSAgICAgICAg
ICAgIGtleSA9IF9tYXliZV9lbmNvZGUoaGVhZGVyKS5sb3dlcigpCisgICAgICAgICAgICBrZXkg
PSBpc29tb3JwaGljX2VuY29kZShoZWFkZXIpLmxvd2VyKCkKICAgICAgICAgICAgICMgZ2V0IGFs
bCBoZWFkZXJzIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICAgICAgdmFsdWVzID0gaXRlbXMu
Z2V0YWxsbWF0Y2hpbmdoZWFkZXJzKGhlYWRlcikKICAgICAgICAgICAgIGlmIGxlbih2YWx1ZXMp
ID4gMToKQEAgLTM5NCwyMiArMzc5LDIxIEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgog
ICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAg
ICMgZ2V0YWxsbWF0Y2hpbmdoZWFkZXJzIHJldHVybnMgcmF3IGhlYWRlciBsaW5lcywgc28KICAg
ICAgICAgICAgICAgICAgICAgIyBzcGxpdCB0byBnZXQgbmFtZSwgdmFsdWUKLSAgICAgICAgICAg
ICAgICAgICAgbXVsdGlwbGVzLmFwcGVuZChfbWF5YmVfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzon
LCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKGlz
b21vcnBoaWNfZW5jb2RlKHZhbHVlKS5zcGxpdChiJzonLCAxKVsxXS5zdHJpcCgpKQogICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBtdWx0aXBsZXMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaGVhZGVycyA9IFtfbWF5YmVfZW5jb2RlKGl0ZW1zW2hlYWRlcl0pXQorICAgICAg
ICAgICAgICAgIGhlYWRlcnMgPSBbaXNvbW9ycGhpY19lbmNvZGUoaXRlbXNbaGVhZGVyXSldCiAg
ICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgaGVhZGVycykKIAotCiAgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIkdldCBhbGwgaGVhZGVycyBv
ZiBhIGNlcnRhaW4gKGNhc2UtaW5zZW5zaXRpdmUpIG5hbWUuIElmIHRoZXJlIGlzCiAgICAgICAg
IG1vcmUgdGhhbiBvbmUsIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGNvbW1hIHNlcGFyYXRlZCIi
IgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0gaXNvbW9y
cGhpY19lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYs
IGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlc1swXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIsICIu
am9pbih2YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gYiIsICIuam9pbih2YWx1ZXMpCiAKICAg
ICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICByYWlzZSBFeGNl
cHRpb24KQEAgLTQzMCw3ICs0MTQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAg
ICBkZWYgZ2V0X2xpc3Qoc2VsZiwga2V5LCBkZWZhdWx0PW1pc3NpbmcpOgogICAgICAgICAiIiJH
ZXQgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgZmllbGQgbmFtZSBhcwog
ICAgICAgICBhIGxpc3QiIiIKLSAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAg
ICAgIGtleSA9IGlzb21vcnBoaWNfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGV4
Y2VwdCBLZXlFcnJvcjoKQEAgLTQ0MCw3ICs0MjQsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhk
aWN0KToKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxm
LCBrZXkpOgotICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKKyAgICAgICAga2V5ID0g
aXNvbW9ycGhpY19lbmNvZGUoa2V5KQogICAgICAgICByZXR1cm4gZGljdC5fX2NvbnRhaW5zX18o
c2VsZiwga2V5Lmxvd2VyKCkpCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgpAQCAtNDUxLDYg
KzQzNSw3IEBAIGNsYXNzIFJlcXVlc3RIZWFkZXJzKGRpY3QpOgogICAgICAgICBmb3IgaXRlbSBp
biBzZWxmOgogICAgICAgICAgICAgeWllbGQgc2VsZltpdGVtXQogCisKIGNsYXNzIENvb2tpZVZh
bHVlKG9iamVjdCk6CiAgICAgIiIiUmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KIApAQCAtNTI0
LDkgKzUwOSw4IEBAIGNsYXNzIENvb2tpZVZhbHVlKG9iamVjdCk6CiAKIAogY2xhc3MgTXVsdGlE
aWN0KGRpY3QpOgotICAgICIiIkRpY3Rpb25hcnkgdHlwZSB0aGF0IGhvbGRzIG11bHRpcGxlIHZh
bHVlcyBmb3IgZWFjaAotICAgIGtleSIiIgotICAgICNUT0RPOiB0aGlzIHNob3VsZCBwZXJoYXBz
IGFsc28gb3JkZXIgdGhlIGtleXMKKyAgICAiIiJEaWN0aW9uYXJ5IHR5cGUgdGhhdCBob2xkcyBt
dWx0aXBsZSB2YWx1ZXMgZm9yIGVhY2gga2V5IiIiCisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBw
ZXJoYXBzIGFsc28gb3JkZXIgdGhlIGtleXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAg
ICAgIHBhc3MKIApAQCAtNTQxLDcgKzUyNSw2IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAog
ICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgdGhlIGZpcnN0
IHZhbHVlIHdpdGggYSBnaXZlbiBrZXkiIiIKLSAgICAgICAgI1RPRE86IHNob3VsZCB0aGlzIGlu
c3RlYWQgYmUgdGhlIGxhc3QgdmFsdWU/CiAgICAgICAgIHJldHVybiBzZWxmLmZpcnN0KGtleSkK
IAogICAgIGRlZiBmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlzc2luZyk6CkBAIC01ODQsNiAr
NTY3LDEwIEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBmcm9tX2ZpZWxkX3N0b3JhZ2UoY2xzLCBmcyk6CisgICAgICAgICIiIkNvbnN0cnVjdCBh
IE11bHRpRGljdCBmcm9tIGEgY2dpLkZpZWxkU3RvcmFnZQorCisgICAgICAgIE5vdGUgdGhhdCBh
bGwga2V5cyBhbmQgdmFsdWVzIGFyZSBiaW5hcnkgc3RyaW5ncy4KKyAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYgPSBjbHMoKQogICAgICAgICBpZiBmcy5saXN0IGlzIE5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZgpAQCAtNTk0LDEzICs1ODEsNDYgQEAgY2xhc3MgTXVsdGlEaWN0KGRpY3Qp
OgogCiAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgogICAgICAgICAgICAgICAgIGlm
IG5vdCB2YWx1ZS5maWxlbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52
YWx1ZQotICAgICAgICAgICAgICAgIHNlbGYuYWRkKGtleSwgdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gaXNvbW9ycGhpY19lbmNvZGUodmFsdWUudmFsdWUpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUs
IGNnaS5GaWVsZFN0b3JhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hZGQoaXNvbW9ycGhpY19l
bmNvZGUoa2V5KSwgdmFsdWUpCiAgICAgICAgIHJldHVybiBzZWxmCiAKIAorY2xhc3MgQmluYXJ5
Q29va2llUGFyc2VyKEJhc2VDb29raWUpOgorICAgICIiIkEgc3ViY2xhc3Mgb2YgQmFzZUNvb2tp
ZSB0aGF0IHJldHVybnMgdmFsdWVzIGluIGJpbmFyeSBzdHJpbmdzCisKKyAgICBUaGlzIGlzIG5v
dCBpbnRlbmRlZCB0byBzdG9yZSB0aGUgY29va2llczsgdXNlIENvb2tpZXMgaW5zdGVhZC4KKyAg
ICAiIiIKKyAgICBkZWYgdmFsdWVfZGVjb2RlKHNlbGYsIHZhbCk6CisgICAgICAgICIiIkRlY29k
ZSB2YWx1ZSBmcm9tIG5ldHdvcmsgdG8gKHJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlKS4KKworICAg
ICAgICBPdmVycmlkZSBCYXNlQ29va2llLnZhbHVlX2RlY29kZS4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBpc29tb3JwaGljX2VuY29kZSh2YWwpLCB2YWwKKworICAgIGRlZiB2YWx1ZV9l
bmNvZGUoc2VsZiwgdmFsKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignQmlu
YXJ5Q29va2llUGFyc2VyIGlzIG5vdCBmb3Igc2V0dGluZyBjb29raWVzJykKKworICAgIGRlZiBs
b2FkKHNlbGYsIHJhd2RhdGEpOgorICAgICAgICAiIiJMb2FkIGNvb2tpZXMgZnJvbSBhIGJpbmFy
eSBzdHJpbmcuCisKKyAgICAgICAgVGhpcyBvdmVycmlkZXMgYW5kIGNhbGxzIEJhc2VDb29raWUu
bG9hZC4gVW5saWtlIEJhc2VDb29raWUubG9hZCwgaXQKKyAgICAgICAgZG9lcyBub3QgYWNjZXB0
IGRpY3Rpb25hcmllcy4KKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJh
d2RhdGEsIGJpbmFyeV90eXBlKQorICAgICAgICBpZiBQWTM6CisgICAgICAgICAgICAjIEJhc2VD
b29raWUubG9hZCBleHBlY3RzIGEgbmF0aXZlIHN0cmluZywgd2hpY2ggaW4gUHl0aG9uIDMgaXMg
dGV4dC4KKyAgICAgICAgICAgIHJhd2RhdGEgPSBpc29tb3JwaGljX2RlY29kZShyYXdkYXRhKQor
ICAgICAgICBzdXBlcihCaW5hcnlDb29raWVQYXJzZXIsIHNlbGYpLmxvYWQocmF3ZGF0YSkKKwor
CiBjbGFzcyBDb29raWVzKE11bHRpRGljdCk6Ci0gICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2Vk
IGZvciBDb29raWUgdmFsdWVzIiIiCisgICAgIiIiTXVsdGlEaWN0IHNwZWNpYWxpc2VkIGZvciBD
b29raWUgdmFsdWVzCisKKyAgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGJpbmFyeSBzdHJpbmdzLgor
ICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5weQppbmRl
eCAzYTYwYzJiYWJiMzlkOGQ3Nzk5OTAyMmE3ZmI0ZDE4NGNiMDE5YWE4Li5iNmYyNzQ0NzQ1MTk4
NDZkMjk4YTI5ZGEwYjNkYjM5NjE5OTliMjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3Bv
bnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKQEAgLTEsMTkgKzEsMjIgQEAKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRldGltZSwgdGltZWRlbHRhCi1mcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGpzb24KLWlt
cG9ydCB1dWlkCiBpbXBvcnQgc29ja2V0Ci1mcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNl
X2NvZGVzLCBoMl9oZWFkZXJzCi1mcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKLWZyb20g
aW8gaW1wb3J0IEJ5dGVzSU8KK2ltcG9ydCB1dWlkCiAKLWZyb20gc2l4IGltcG9ydCBiaW5hcnlf
dHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKLWZyb20gaHlw
ZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlv
bkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKK2Zyb20gaHlwZXJm
cmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVhdGlvbkZy
YW1lCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaW50ZWdlcl90eXBl
cywgaXRlcnZhbHVlcywgUFkzCitmcm9tIHNpeC5tb3Zlcy5odHRwX2Nvb2tpZXMgaW1wb3J0IEJh
c2VDb29raWUsIE1vcnNlbAorCitmcm9tIC5jb25zdGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVz
LCBoMl9oZWFkZXJzCitmcm9tIC5sb2dnZXIgaW1wb3J0IGdldF9sb2dnZXIKK2Zyb20gLnV0aWxz
IGltcG9ydCBpc29tb3JwaGljX2RlY29kZSwgaXNvbW9ycGhpY19lbmNvZGUKIAogbWlzc2luZyA9
IG9iamVjdCgpCiAKKwogY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAiIiJPYmplY3QgcmVw
cmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBhIEhUVFAgcmVxdWVzdAogCkBAIC03OSw3ICs4Miw2
IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaGVhZGVycyA9IFJlc3Bv
bnNlSGVhZGVycygpCiAgICAgICAgIHNlbGYuY29udGVudCA9IFtdCiAKLQogICAgIEBwcm9wZXJ0
eQogICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0dXMKQEAg
LTk5LDggKzEwMSw4IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAgICAgICAgICIiIlNldCBh
IGNvb2tpZSB0byBiZSBzZW50IHdpdGggYSBTZXQtQ29va2llIGhlYWRlciBpbiB0aGUKICAgICAg
ICAgcmVzcG9uc2UKIAotICAgICAgICA6cGFyYW0gbmFtZTogU3RyaW5nIG5hbWUgb2YgdGhlIGNv
b2tpZQotICAgICAgICA6cGFyYW0gdmFsdWU6IFN0cmluZyB2YWx1ZSBvZiB0aGUgY29va2llCisg
ICAgICAgIDpwYXJhbSBuYW1lOiBuYW1lIG9mIHRoZSBjb29raWUgKGEgYmluYXJ5IHN0cmluZykK
KyAgICAgICAgOnBhcmFtIHZhbHVlOiB2YWx1ZSBvZiB0aGUgY29va2llIChhIGJpbmFyeSBzdHJp
bmcsIG9yIE5vbmUpCiAgICAgICAgIDpwYXJhbSBtYXhfYWdlOiBkYXRldGltZS50aW1lZGVsdGEg
aW50IHJlcHJlc2VudGluZyB0aGUgdGltZSAoaW4gc2Vjb25kcykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHVudGlsIHRoZSBjb29raWUgZXhwaXJlcwogICAgICAgICA6cGFyYW0gcGF0aDogU3Ry
aW5nIHBhdGggdG8gd2hpY2ggdGhlIGNvb2tpZSBhcHBsaWVzCkBAIC0xMTMsMTQgKzExNSwyMCBA
QCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBv
ciBpbnRlcnZhbCBmcm9tIG5vdyB3aGVuIHRoZSBjb29raWUgZXhwaXJlcwogCiAgICAgICAgICIi
IgorICAgICAgICAjIFRPRE8oUHl0aG9uIDMpOiBDb252ZXJ0IG90aGVyIHBhcmFtZXRlcnMgKGUu
Zy4gcGF0aCkgdG8gYnl0ZXMsIHRvby4KKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAg
ICAgICAgIHZhbHVlID0gYicnCisgICAgICAgICAgICBtYXhfYWdlID0gMAorICAgICAgICAgICAg
ZXhwaXJlcyA9IHRpbWVkZWx0YShkYXlzPS0xKQorCisgICAgICAgIGlmIFBZMzoKKyAgICAgICAg
ICAgIG5hbWUgPSBpc29tb3JwaGljX2RlY29kZShuYW1lKQorICAgICAgICAgICAgdmFsdWUgPSBp
c29tb3JwaGljX2RlY29kZSh2YWx1ZSkKKwogICAgICAgICBkYXlzID0ge2krMTogbmFtZSBmb3Ig
aSwgbmFtZSBpbiBlbnVtZXJhdGUoWyJqYW4iLCAiZmViIiwgIm1hciIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwciIsICJtYXkiLCAianVu
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
anVsIiwgImF1ZyIsICJzZXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJvY3QiLCAibm92IiwgImRlYyJdKX0KLSAgICAgICAgaWYgdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgIG1heF9hZ2UgPSAw
Ci0gICAgICAgICAgICBleHBpcmVzID0gdGltZWRlbHRhKGRheXM9LTEpCiAKICAgICAgICAgaWYg
aXNpbnN0YW5jZShleHBpcmVzLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgZXhwaXJlcyA9IGRh
dGV0aW1lLnV0Y25vdygpICsgZXhwaXJlcwpAQCAtMTU0LDExICsxNjIsMTQgQEAgY2xhc3MgUmVz
cG9uc2Uob2JqZWN0KToKIAogICAgIGRlZiB1bnNldF9jb29raWUoc2VsZiwgbmFtZSk6CiAgICAg
ICAgICIiIlJlbW92ZSBhIGNvb2tpZSBmcm9tIHRob3NlIHRoYXQgYXJlIGJlaW5nIHNlbnQgd2l0
aCB0aGUgcmVzcG9uc2UiIiIKKyAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgbmFtZSA9IGlz
b21vcnBoaWNfZGVjb2RlKG5hbWUpCiAgICAgICAgIGNvb2tpZXMgPSBzZWxmLmhlYWRlcnMuZ2V0
KCJTZXQtQ29va2llIikKICAgICAgICAgcGFyc2VyID0gQmFzZUNvb2tpZSgpCiAgICAgICAgIGZv
ciBjb29raWUgaW4gY29va2llczoKICAgICAgICAgICAgIGlmIFBZMzoKLSAgICAgICAgICAgICAg
ICBjb29raWUgPSBjb29raWUuZGVjb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgICAgICAj
IEJhc2VDb29raWUubG9hZCBleHBlY3RzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICAgICAgICAg
Y29va2llID0gaXNvbW9ycGhpY19kZWNvZGUoY29va2llKQogICAgICAgICAgICAgcGFyc2VyLmxv
YWQoY29va2llKQogCiAgICAgICAgIGlmIG5hbWUgaW4gcGFyc2VyLmtleXMoKToKQEAgLTIyMyw5
ICsyMzQsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi53cml0ZV9z
dGF0dXNfaGVhZGVycygpCiAgICAgICAgIHNlbGYud3JpdGVfY29udGVudCgpCiAKLSAgICBkZWYg
c2V0X2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9IiIpOgotICAgICAgICAiIiJTZXQgdGhlIHJl
c3BvbnNlIHN0YXR1cyBoZWFkZXJzIGFuZCBib2R5IHRvIGluZGljYXRlIGFuCi0gICAgICAgIGVy
cm9yIiIiCisgICAgZGVmIHNldF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPXUiIik6CisgICAg
ICAgICIiIlNldCB0aGUgcmVzcG9uc2Ugc3RhdHVzIGhlYWRlcnMgYW5kIHJldHVybiBhIEpTT04g
ZXJyb3Igb2JqZWN0OgorCisgICAgICAgIHsiZXJyb3IiOiB7ImNvZGUiOiBjb2RlLCAibWVzc2Fn
ZSI6IG1lc3NhZ2V9fQorICAgICAgICBjb2RlIGlzIGFuIGludCAoSFRUUCBzdGF0dXMgY29kZSks
IGFuZCBtZXNzYWdlIGlzIGEgdGV4dCBzdHJpbmcuCisgICAgICAgICIiIgogICAgICAgICBlcnIg
PSB7ImNvZGUiOiBjb2RlLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiOiBtZXNzYWdlfQogICAg
ICAgICBkYXRhID0ganNvbi5kdW1wcyh7ImVycm9yIjogZXJyfSkKQEAgLTI5NywyNCArMzExLDEw
IEBAIGNsYXNzIE11bHRpcGFydFBhcnQob2JqZWN0KToKIAogCiBkZWYgX21heWJlX2VuY29kZShz
KToKLSAgICAiIiJFbmNvZGVzIGEgdGV4dC10eXBlIHN0cmluZyBpbnRvIGJpbmFyeSBkYXRhIHVz
aW5nIGlzby04ODU5LTEuCi0KLSAgICBSZXR1cm5zIGBzdHJgIGluIFB5dGhvbiAyIGFuZCBgYnl0
ZXNgIGluIFB5dGhvbiAzLiBUaGUgZnVuY3Rpb24gaXMgYSBuby1vcAotICAgIGlmIHRoZSBhcmd1
bWVudCBhbHJlYWR5IGhhcyBhIGJpbmFyeSB0eXBlLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFu
Y2UocywgYmluYXJ5X3R5cGUpOgotICAgICAgICByZXR1cm4gcwotCi0gICAgIyBQeXRob24gMyBh
c3N1bWVzIGlzby04ODU5LTEgd2hlbiBwYXJzaW5nIGhlYWRlcnMsIHdoaWNoIHdpbGwgZ2FyYmxl
IHRleHQKLSAgICAjIHdpdGggbm9uIEFTQ0lJIGNoYXJhY3RlcnMuIFdlIHRyeSB0byBlbmNvZGUg
dGhlIHRleHQgYmFjayB0byBiaW5hcnkuCi0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9u
L2NweXRob24vYmxvYi8yNzNmYzIyMGIyNTkzM2U0NDNjODJhZjY4ODhlYjE4NzFkMDMyZmI4L0xp
Yi9odHRwL2NsaWVudC5weSNMMjEzCi0gICAgaWYgaXNpbnN0YW5jZShzLCB0ZXh0X3R5cGUpOgot
ICAgICAgICByZXR1cm4gcy5lbmNvZGUoImlzby04ODU5LTEiKQotCisgICAgIiIiRW5jb2RlIGEg
c3RyaW5nIG9yIGFuIGludCBpbnRvIGJpbmFyeSBkYXRhIHVzaW5nIGlzb21vcnBoaWNfZW5jb2Rl
KCkuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShzLCBpbnRlZ2VyX3R5cGVzKToKICAgICAgICAgcmV0
dXJuIGIiJWkiICUgKHMsKQotCi0gICAgcmFpc2UgVHlwZUVycm9yKCJVbmV4cGVjdGVkIHZhbHVl
IGluIFJlc3BvbnNlSGVhZGVyczogJXIiICUgcykKKyAgICByZXR1cm4gaXNvbW9ycGhpY19lbmNv
ZGUocykKIAogCiBjbGFzcyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKaW5kZXggYzAzNzczMmE2
YmFlZjMxZDU4YjNkZmY5MjdiMDc0ZGZjZmFiYjRmZi4uYzI0OThjNGVlMWU4ZjQ1ZGU2MDRmNzEz
OTRjM2Q2ZmVlZjgyYWVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkKQEAgLTY0LDEyICs2NCw2IEBAIGhhbmRsZXIgcmV0dXJucywg
b3IgZm9yIGRpcmVjdGx5IHdyaXRpbmcgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAiIiIKIAogCi1F
RElUX0hPU1RTX0hFTFAgPSAoIlBsZWFzZSBlbnN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgV1BUIHN1
YmRvbWFpbnMgIgotICAgICAgICAgICAgICAgICAgImFyZSBtYXBwZWQgdG8gYSBsb29wYmFjayBk
ZXZpY2UgaW4gL2V0Yy9ob3N0cy4gIgotICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCi0gICAg
ICAgICAgICAgICAgICAiZm9yIGluc3RydWN0aW9ucy4iKQotCi0KIGNsYXNzIFJlcXVlc3RSZXdy
aXRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6CiAgICAgICAgICIi
Ik9iamVjdCBmb3IgcmV3cml0aW5nIHRoZSByZXF1ZXN0IHBhdGguCkBAIC02NzYsNyArNjcwLDgg
QEAgY2xhc3MgV2ViVGVzdEh0dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAgIF9ob3N0LCBzZWxm
LnBvcnQgPSBzZWxmLmh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0
YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRfSE9TVFNfSEVMUCkpCisgICAgICAgICAg
ICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyIG9uIHBv
cnQgJXM7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBzb21ldGhpbmcg
YWxyZWFkeSB1c2luZyB0aGF0IHBvcnQ/IiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQogCiAg
ICAgZGVmIHN0YXJ0KHNlbGYsIGJsb2NrPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
c3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5weQppbmRl
eCBhZWExYzczODBiMTc5Y2VkMTM2NmI2NjE3MDU3NTc4YjM1ZDllMTRiLi42NGY2ZDVmYjJkYjI3
OTU4ZjMzZGQzNmI1N2I3YzE3NGRmMGJkN2U5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL29wZW5zc2wucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CkBAIC00
MDIsNiArNDAyLDggQEAgY2xhc3MgT3BlblNTTEVudmlyb25tZW50KG9iamVjdCk6CiAKICAgICBk
ZWYgX2dlbmVyYXRlX2hvc3RfY2VydChzZWxmLCBob3N0cyk6CiAgICAgICAgIGhvc3QgPSBob3N0
c1swXQorICAgICAgICBpZiBub3Qgc2VsZi5mb3JjZV9yZWdlbmVyYXRlOgorICAgICAgICAgICAg
c2VsZi5fbG9hZF9jYV9jZXJ0KCkKICAgICAgICAgaWYgc2VsZi5fY2Ffa2V5X3BhdGggaXMgTm9u
ZToKICAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKGhvc3RzKQogICAgICAgICBjYV9rZXlf
cGF0aCA9IHNlbGYuX2NhX2tleV9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQppbmRleCA4YjZmZDM0ZjAyYzBlOWI3MDczZDBjOTQwMTE3
MDdlYWE0ZTVhMWYxLi42YjM1MTg0NzQ5MWJmZWUxZjhlMTdhNDIxMjdjODhiZTk3YTYyOTIzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkK
QEAgLTQsNyArNCw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHV1aWQKIGltcG9ydCB0aHJlYWRpbmcK
IGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNl
TWFuYWdlciwgRGljdFByb3h5Ci1mcm9tIHNpeCBpbXBvcnQgdGV4dF90eXBlCitmcm9tIHNpeCBp
bXBvcnQgdGV4dF90eXBlLCBiaW5hcnlfdHlwZQorCitmcm9tIC51dGlscyBpbXBvcnQgaXNvbW9y
cGhpY19lbmNvZGUKIAogCiBjbGFzcyBTZXJ2ZXJEaWN0TWFuYWdlcihCYXNlTWFuYWdlcik6CkBA
IC0xNDUsOSArMTQ3LDEyIEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgIGlmIHBhdGgg
aXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzZWxmLmRlZmF1bHRfcGF0aAogICAgICAgICAj
IFRoaXMga2V5IGZvcm1hdCBpcyByZXF1aXJlZCB0byBzdXBwb3J0IHVzaW5nIHRoZSBwYXRoLiBT
aW5jZSB0aGUgZGF0YQotICAgICAgICAjIHBhc3NlZCBpbnRvIHRoZSBzdGFzaCBjYW4gYmUgYSBE
aWN0UHJveHkgd2hpY2ggd291bGRuJ3QgZGV0ZWN0IGNoYW5nZXMKLSAgICAgICAgIyB3aGVuIHdy
aXRpbmcgdG8gYSBzdWJkaWN0LgotICAgICAgICByZXR1cm4gKHN0cihwYXRoKSwgc3RyKHV1aWQu
VVVJRChrZXkpKSkKKyAgICAgICAgIyBwYXNzZWQgaW50byB0aGUgc3Rhc2ggY2FuIGJlIGEgRGlj
dFByb3h5IHdoaWNoIHdvdWxkbid0IGRldGVjdAorICAgICAgICAjIGNoYW5nZXMgd2hlbiB3cml0
aW5nIHRvIGEgc3ViZGljdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIGJpbmFyeV90eXBl
KToKKyAgICAgICAgICAgICMgVVVJRHMgYXJlIHdpdGhpbiB0aGUgQVNDSUkgY2hhcnNldC4KKyAg
ICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgcmV0dXJuIChpc29t
b3JwaGljX2VuY29kZShwYXRoKSwgdXVpZC5VVUlEKGtleSkuYnl0ZXMpCiAKICAgICBkZWYgcHV0
KHNlbGYsIGtleSwgdmFsdWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIlBsYWNlIGEgdmFsdWUg
aW4gdGhlIHNoYXJlZCBzdGFzaC4KQEAgLTE2Miw3ICsxNjcsNyBAQCBjbGFzcyBTdGFzaChvYmpl
Y3QpOgogICAgICAgICBpZiBpbnRlcm5hbF9rZXkgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAg
cmFpc2UgU3Rhc2hFcnJvcigiVHJpZWQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIHNoYXJlZCBzdGFz
aCB2YWx1ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5ICVzIChvbGQg
dmFsdWUgd2FzICVzLCBuZXcgdmFsdWUgaXMgJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpbnRlcm5hbF9rZXksIHNlbGYuZGF0YVtzdHIoaW50ZXJuYWxfa2V5KV0sIHZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybmFsX2tleSwgc2VsZi5kYXRh
W2ludGVybmFsX2tleV0sIHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
ZGF0YVtpbnRlcm5hbF9rZXldID0gdmFsdWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGls
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKaW5kZXggNjRiMDhhMjdhYThiMzNkNGNlYTg2Nzdi
MzBkMzMwOTZjYWUyMTJkNS4uYjAwNWI0MTdkNzQzZjIwZjA2NWMxOTVlNzQzZDhhYmNmYjA0YWRm
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxz
LnB5CkBAIC0xLDYgKzEsNDUgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIAorZnJvbSBz
aXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUKKworCitkZWYgaXNvbW9ycGhpY19kZWNv
ZGUocyk6CisgICAgIiIiRGVjb2RlcyBhIGJpbmFyeSBzdHJpbmcgaW50byBhIHRleHQgc3RyaW5n
IHVzaW5nIGlzby04ODU5LTEuCisKKyAgICBSZXR1cm5zIGB1bmljb2RlYCBpbiBQeXRob24gMiBh
bmQgYHN0cmAgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlvbiBpcyBhCisgICAgbm8tb3AgaWYgdGhl
IGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgdGV4dCB0eXBlLiBpc28tODg1OS0xIGlzIGNob3NlbiBi
ZWNhdXNlCisgICAgaXQgaXMgYW4gOC1iaXQgZW5jb2Rpbmcgd2hvc2UgY29kZSBwb2ludHMgcmFu
Z2UgZnJvbSAweDAgdG8gMHhGRiBhbmQgdGhlCisgICAgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0
aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgc28gYW55IGJpbmFyeSBzdHJpbmcgY2FuCisgICAg
YmUgZGVjb2RlZCBpbnRvIGFuZCBlbmNvZGVkIGZyb20gaXNvLTg4NTktMSB3aXRob3V0IGFueSBl
cnJvcnMgb3IgZGF0YQorICAgIGxvc3MuIFB5dGhvbiAzIGFsc28gdXNlcyBpc28tODg1OS0xIChv
ciBsYXRpbi0xKSBleHRlbnNpdmVseSBpbiBodHRwOgorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9w
eXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMzZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJm
YjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMs
IHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzCisKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJp
bmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCJpc28tODg1OS0xIikKKworICAg
IHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtl
KTogJXIiICUgcykKKworCitkZWYgaXNvbW9ycGhpY19lbmNvZGUocyk6CisgICAgIiIiRW5jb2Rl
cyBhIHRleHQtdHlwZSBzdHJpbmcgaW50byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgor
CisgICAgUmV0dXJucyBgc3RyYCBpbiBQeXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4g
VGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AKKyAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMg
YSBiaW5hcnkgdHlwZS4gVGhpcyBpcyB0aGUgY291bnRlcnBhcnQgb2YKKyAgICBpc29tb3JwaGlj
X2RlY29kZS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAg
ICAgICAgcmV0dXJuIHMKKworICAgIGlmIGlzaW5zdGFuY2UocywgdGV4dF90eXBlKToKKyAgICAg
ICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKworICAgIHJhaXNlIFR5cGVFcnJvcigi
VW5leHBlY3RlZCB2YWx1ZSAoZXhwZWN0aW5nIHN0cmluZy1saWtlKTogJXIiICUgcykKKworCiBk
ZWYgaW52ZXJ0X2RpY3QoZGljdCk6CiAgICAgcnYgPSB7fQogICAgIGZvciBrZXksIHZhbHVlcyBp
biBkaWN0Lml0ZW1zKCk6CkBAIC0yNSw2ICs2NCw3IEBAIGRlZiBfb3Blbl9zb2NrZXQoaG9zdCwg
cG9ydCk6CiAgICAgc29jay5saXN0ZW4oNSkKICAgICByZXR1cm4gc29jawogCisKIGRlZiBpc19i
YWRfcG9ydChwb3J0KToKICAgICAiIiIKICAgICBCYWQgcG9ydCBhcyBwZXIgaHR0cHM6Ly9mZXRj
aC5zcGVjLndoYXR3Zy5vcmcvI3BvcnQtYmxvY2tpbmcKQEAgLTk5LDYgKzEzOSw3IEBAIGRlZiBp
c19iYWRfcG9ydChwb3J0KToKICAgICAgICAgNjY5NywgICMgaXJjK3RscwogICAgIF0KIAorCiBk
ZWYgZ2V0X3BvcnQoaG9zdD0nJyk6CiAgICAgaG9zdCA9IGhvc3Qgb3IgJzEyNy4wLjAuMScKICAg
ICBwb3J0ID0gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2NvbXBpbGUuYW55LmpzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVj
dG9yL2NvbXBpbGUuYW55LmpzCmluZGV4IDZjNDEyMzk0M2U3NzVmNDZlODU0YjJjMDcyNThhN2Qw
OGM1Y2Y2OTIuLmU5NGNlMTE3MTczNjlmYjY1ZWYwNGM2ZWM2YTEzZGExOTI4OTMwNzcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9jb25zdHJ1Y3Rvci9jb21waWxlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvY29tcGlsZS5h
bnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTog
Z2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93
YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rpb24gYXNzZXJ0X01vZHVs
ZShtb2R1bGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS1iYWQtaW1wb3J0
cy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55LmpzCmluZGV4
IDM3MDcyNDM0MjA4YTU4ODE5YTBhNDFmYWE2YTE5MTA3MDRjMTA4NDUuLjMwMjUyYmQ2ZWViM2Fi
OTcyODYzMzFhYTc2OTY4MjI1ZGFkNWE1MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50
aWF0ZS1iYWQtaW1wb3J0cy5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1p
bXBvcnRzLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0
PS93YXNtL2pzYXBpL2JhZC1pbXBvcnRzLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0
YW50aWF0ZS5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUuYW55LmpzCmluZGV4IDAyMThk
ZTJiNDUyOTJjMjNlOGZjYzcyMGRiZjhjMmM0YTVjOWI2OTMuLjgxNTJmM2E1NmYzZjQzOTk5NzY1
YzM0OWU0ODhkZGIzMTM0NDIxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9pbnN0YW50aWF0ZS5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUt
YnVpbGRlci5qcwogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvY29uc3RydWN0b3IvbXVsdGktdmFsdWUuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL211bHRpLXZhbHVl
LmFueS5qcwppbmRleCAyYzUzZTM2MTFlMDQ0YzhiYTQ0YTVjMDQzNmQ0NDA5YmM5ZjFhZjQyLi40
YjA2ZDFkYTNjNDliOTM0MDZlOTllY2IzZTZhNzJjYTc2YzlkMWJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3Ry
dWN0b3IvbXVsdGktdmFsdWUuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci9tdWx0aS12YWx1ZS5hbnku
anMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xv
YmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNt
L2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9hc3NlcnRpb25zLmpzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
Y29uc3RydWN0b3IvdmFsaWRhdGUuYW55LmpzCmluZGV4IGE1MjNhY2M3OTI1YzllZjc2NDZkMjk2
YTc4YmY5ODMxZWRhODZkNzEuLjhiNGY0NTgyYWIyOTg3NzMyZDQwNDk5NDg5OWU5YTc3NjYyZTJh
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9jb25zdHJ1Y3Rvci92YWxpZGF0ZS5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9y
L3ZhbGlkYXRlLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlN
b2R1bGVCaW5hcnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwv
Y29uc3RydWN0b3IuYW55LmpzCmluZGV4IDI3MDE0OWVjMTQ0MzA0NWU0MTM0ZWViODA0MDM2NTFh
M2QwYTEyZmYuLmIwMDhlZjMwMTYwMWViNGU0YTI1NTU3ZWZhZjFlYzEzNWNlZTEwYjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55
LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGds
b2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2Fz
bS9qc2FwaS9hc3NlcnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9HbG9iYWwoYWN0dWFsLCBl
eHBlY3RlZCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0cmluZy5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3Ry
aW5nLmFueS5qcwppbmRleCA1ZjY0ZDcyZGU5ZDlkZjRhOTllNDgyY2RlZDVhMzBhYzFjOGEzNDNj
Li4zNTljNDI3M2I1YmQ3ODY3YWNkYTQ0ZmM0NmE2ZGRjMDBhY2M5NzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xv
YmFsL3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3RvU3RyaW5nLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCBhcmd1bWVudCA9
IHsgInZhbHVlIjogImkzMiIgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvZ2xvYmFsL3ZhbHVlLWdldC1zZXQuYW55LmpzCmluZGV4IDY5ZjBlNDYzNzlmZmQyMGEzYjli
ZmIxOTA0ODczNzZkNjE2ZDkxNmUuLjQzZDg0NzRhMjVkMTgyZDc0MjI2NTRmNjE3NjliZjg3ZDNh
YmEyOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvdmFsdWUtZ2V0LXNldC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92
YWx1ZS1nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3No
ZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRl
c3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1
ZU9mLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9nbG9iYWwvdmFsdWVPZi5hbnkuanMKaW5kZXggMGQ0ZGU5M2E2YmQyMjlmOGQ5
ZmFiNzk0MWIyNGExOTQ0ZGM2YWE3OC4uMDY5NWE1YTYxZmJjNmUyNDUwMTlhN2JmNDI4MTBjYjg0
YTBkZmEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC92YWx1ZU9mLmFueS5qcworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvZ2xvYmFsL3ZhbHVl
T2YuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IGFyZ3VtZW50ID0geyAidmFsdWUiOiAiaTMyIiB9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3Rh
bmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1i
YWQtaW1wb3J0cy5hbnkuanMKaW5kZXggZTg4ZDAyYjY0OTY4NGIwZDdjZWVjYjBkMGEzZDFlODc1
ZGQyMWM0OS4uZTRhNWFiYjhlYjIxNjlmYmNlMTdiNjBkYTI3MzEyYmE5NGEwYjlkMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2Uv
Y29uc3RydWN0b3ItYmFkLWltcG9ydHMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTog
Z2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpz
c2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpz
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYmFkLWltcG9ydHMuanMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L2luc3RhbmNlL2NvbnN0cnVjdG9yLWNhY2hpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9y
LWNhY2hpbmcuYW55LmpzCmluZGV4IDY5NWIwNzhhMGY5NDc4NjIwNzE1YjBmZWYyNTlmNzIwNzQz
N2YyOWQuLjFhYTQ3MzliNjI5NGQwMTM3ZWFkMzA5N2Q1ZGJjZWMzZTNhMWYyMjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci1jYWNoaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvY29uc3Ry
dWN0b3ItY2FjaGluZy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNz
aGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8g
TUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMKIAogZnVuY3Rp
b24gZ2V0RXhwb3J0cygpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
aW5zdGFuY2UvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IDA2YzZkN2E4OGMwOTIzNWFiZDQwYTcx
YTM3OWYwZDgwMDVhMzM2MTguLjI2MzkwZWJkMmNkYjJlNGM0OGRjMzBiZDUwZjZlNTc5NGU4MDc5
MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9jb25zdHJ1Y3Rvci5hbnkuanMKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL2Nv
bnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8gTUVUQTogc2Ny
aXB0PS93YXNtL2pzYXBpL2Fzc2VydGlvbnMuanMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2Fw
aS9pbnN0YW5jZVRlc3RGYWN0b3J5LmpzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFuY2UvZXhwb3J0cy5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNh
cGkvaW5zdGFuY2UvZXhwb3J0cy5hbnkuanMKaW5kZXggN2M4MWE0MTI5NWIwYTFmMmUyMGVlNzk3
MjI5MWUxMDk5ZjIzNzVmZS4uNmRjZmJjZWU5NTBkODcxY2Q2ZWUzZTVhZjk0YmVlMzlmZDhmNTFl
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2luc3RhbmNlL2V4cG9ydHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS9leHBvcnRz
LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRB
OiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9
L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogCiBsZXQgZW1wdHlNb2R1bGVCaW5h
cnk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvaW5zdGFuY2UvdG9TdHJpbmcuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2luc3RhbmNlL3RvU3RyaW5n
LmFueS5qcwppbmRleCA3MDFlYzhmOWJhZDk5OGJjMjYzMTBlNzRhOGE3ZTIzZjJjYmY1YzRkLi41
NDdhOWNhODI5NWY1YjY4MTNhM2QxNzliYmZkM2NhOTA1NGU0OTcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW5zdGFu
Y2UvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnN0YW5jZS90b1N0cmluZy5hbnkuanMKQEAgLTEsNCAr
MSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxk
ZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20t
bW9kdWxlLWJ1aWxkZXIuanMKIAogdGVzdCgoKSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFu
eS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS9pbnRlcmZhY2UuYW55LmpzCmluZGV4IDg4OTQwYmU1MWE3ZjU3MjdjMjdlMTY3ZDllMTBh
YmJhZWIwNGEwNmIuLjQ1NTFlNmU2ZTNkNDNlNTRlMGRiYjZhNjRmMDdmYjU3ZWY5OGFjNDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55LmpzCkBAIC0xLDQgKzEs
NCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3NlcnRp
b25zLmpzCiAKIGZ1bmN0aW9uIHRlc3Rfb3BlcmF0aW9ucyhvYmplY3QsIG9iamVjdF9uYW1lLCBv
cGVyYXRpb25zKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZlci5hbnkuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2J1ZmZl
ci5hbnkuanMKaW5kZXggYTgzNWU2NTExYTBhNmM1M2MzNmEwZmZkODE0M2Y0YTFhNzM4OGVjYS4u
ZmIxZDEyMDBiODkyYmUxZWI3YWVhNjZkYjM0M2RiNDkxZTkyMWE4ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9y
eS9idWZmZXIuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvYnVmZmVyLmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRl
ZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25zdCB0aGlzVmFsdWVzID0gWwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL2pzYXBpL21lbW9yeS9jb25zdHJ1Y3Rvci5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFu
eS5qcwppbmRleCAwM2VlZDUyNzA4MzFiNTA0ZTZhYjIxYmNjOGVlMzZmZGZkMDUwMzA0Li5mNTA1
NzE5ZDJjNWU0MTFjYTlkZWJjMDA3NmEyYjQwZGVkMDIwZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2Nv
bnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2NvbnN0cnVjdG9yLmFueS5qcwpAQCAtMSw0ICsx
LDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRl
ZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0
aW9ucy5qcwogCiBmdW5jdGlvbiBhc3NlcnRfTWVtb3J5KG1lbW9yeSwgZXhwZWN0ZWQpIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L2dyb3cuYW55LmpzCmluZGV4IDBjZWE4
YjRiMWE2MzNmMWY2ZGE5MjMxMzMyZTM5NGI3ZmNkNzYxOTcuLmRiOWU3ODEzNjE3Yjk2NDcxYTkw
YzM1Yzk2Yjg1ZjA5MjY5OThkYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tZW1vcnkvZ3Jvdy5hbnkuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21l
bW9yeS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxs
CisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIGZ1bmN0
aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihhY3R1YWwsIHsgc2l6ZT0wLCBzaGFyZWQ9ZmFsc2UsIGRl
dGFjaGVkPWZhbHNlIH0sIG1lc3NhZ2UpIHsKICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L3NwZWMvaXNzdWVzLzg0MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21lbW9yeS90b1N0cmluZy5hbnkuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkv
bWVtb3J5L3RvU3RyaW5nLmFueS5qcwppbmRleCBiYjkwODFkMTg2MTdlMWFmNzI0MjRlYTcwMGQz
MGU1Y2IwZWZkOThkLi5mNDA1OWY3NjU3NzIyNzU5Y2U0ZmM5NTBjNDg1MDkxNmQxMDJkZWRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbWVtb3J5L3RvU3RyaW5nLmFueS5q
cwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisvLyBNRVRBOiBnbG9i
YWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAKIHRlc3QoKCkgPT4gewogICBjb25z
dCBhcmd1bWVudCA9IHsgImluaXRpYWwiOiAwIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2NvbnN0cnVj
dG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCmluZGV4IGFjNGNkZTJlMzE3ZTVl
Y2IxODdhOTY0ZjRmNTJmNmE3ZGM3NmRkOTguLjk5NzhmN2U2YWM4ZjJiMTFiY2FjYTgyM2I4Nzdl
YTgxN2RmZTdlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY29uc3RydWN0b3IuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpz
c2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8v
IE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAvLyBNRVRB
OiBzY3JpcHQ9L3dhc20vanNhcGkvYXNzZXJ0aW9ucy5qcwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2N1
c3RvbVNlY3Rpb25zLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCmluZGV4IDhj
MjE1ZDE3YmQyNTgzNGFkMjk4M2U4ODE3MjM3MWM0ZWUxZjY1YzIuLjQwMjk4NzdlOTJjN2I4YjNi
ZDMyMTg0ODUzOTQ3NWMzYWY1MmVkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9qc2FwaS9tb2R1bGUvY3VzdG9tU2VjdGlvbnMuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAot
Ly8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVk
d29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1i
dWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9BcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVjdGVk
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9ydHMuYW55LmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9leHBvcnRzLmFueS5q
cwppbmRleCAxMzI5YzZhNjAyMWYyZDU5MDJmNzU5ZTRkYTkyZDIwOTk3NGRhNzBlLi42MGIyYzA0
ZjQzNjk2OGFjMTE1NTc4NjAyNzVkNzViYzg5ZTQ5ZTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2V4cG9y
dHMuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2FzbS9qc2FwaS9tb2R1bGUvZXhwb3J0cy5hbnkuanMKQEAgLTEsNCArMSw0IEBACi0vLyBN
RVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsanNzaGVsbAogLy8gTUVUQTogc2NyaXB0PS93YXNtL2pzYXBpL3dhc20tbW9kdWxlLWJ1aWxk
ZXIuanMKIAogbGV0IGVtcHR5TW9kdWxlQmluYXJ5OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRz
LmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Fz
bS9qc2FwaS9tb2R1bGUvaW1wb3J0cy5hbnkuanMKaW5kZXggOWE3ZDYxMTU5ODZlYTA2NmM1MDc1
ZDE0ZjYwZDNjYjAyNzdhNzhhMS4uZDY3NTRjOWVmYmRjNDRjZDk2MzcwOGY1Yjc1MWYxNTQ2ZGRm
Y2QxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL21vZHVsZS9pbXBvcnRzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxlL2ltcG9ydHMu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0v
d2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9Nb2R1
bGVJbXBvcnREZXNjcmlwdG9yKGltcG9ydF8sIGV4cGVjdGVkKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvbW9kdWxl
L3RvU3RyaW5nLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCmluZGV4IDdkZDg1YTFjNGFj
NmU1MjVlMWU0YzBmOWJhY2MzMjk1ZTdlZGE3ZmMuLjFjMjBjZDYxMDhjODRlNTZlMjE5ZjBlNzM4
ZTA2NzJjZDdjMmQwNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1bGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9tb2R1
bGUvdG9TdHJpbmcuYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hl
bGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1F
VEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiAKIHRlc3QoKCkg
PT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2NvbnN0cnVjdG9yLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9jb25zdHJ1Y3Rv
ci5hbnkuanMKaW5kZXggNWM5YTZmMTNkOTFlYmEwOThhYjU5ZTg5MzE0NTIyMjM3NWUxYjZjYy4u
ZTllNzdhMTMyYjc2YTQ3OWEyODk1YzE4YzY5YjQwMmJlNzFmZTNlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxl
L2NvbnN0cnVjdG9yLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvY29uc3RydWN0b3IuYW55LmpzCkBAIC0xLDQg
KzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3cs
ZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS9hc3Nl
cnRpb25zLmpzCiAKIGZ1bmN0aW9uIGFzc2VydF9UYWJsZShhY3R1YWwsIGV4cGVjdGVkKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ2V0LXNldC5hbnkuanMKaW5kZXgg
NGUwYTVmOGMxMDQ4ZjRiNzcxYzM4ZmYwYWVmOTkxMGVkMzdiMjVjMi4uMmUxNjM0NmM2NDc5ZWM1
NWUxNmEzMzQ5ZjEyYjZjYTRiNmRhN2Q0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dldC1zZXQuYW55Lmpz
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9q
c2FwaS90YWJsZS9nZXQtc2V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2Jh
bD1qc3NoZWxsCisvLyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxs
CiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwogLy8g
TUVUQTogc2NyaXB0PWFzc2VydGlvbnMuanMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVmdHlw
ZXMudGVudGF0aXZlLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9ncm93LXJlZnR5cGVzLnRlbnRhdGl2ZS5hbnkuanMK
aW5kZXggZWRmYjMzNDk5MWUwNGQyY2FiZmVlYjQ0MjZhZDA1Mzc5NmM2N2VjNS4uODVkY2JkMWQw
MDY0M2EwMjJkMDY2NTI2YjVjMDA4MWM5YzZlMGJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3ctcmVm
dHlwZXMudGVudGF0aXZlLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy1yZWZ0eXBlcy50ZW50YXRpdmUu
YW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1FVEE6
IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIC8vIE1FVEE6IHNjcmlwdD1h
c3NlcnRpb25zLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3dhc20vanNhcGkvd2FzbS1jb25zdGFudHMu
anMKIC8vIE1FVEE6IHNjcmlwdD0vd2FzbS9qc2FwaS93YXNtLW1vZHVsZS1idWlsZGVyLmpzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvZ3Jvdy5hbnkuanMKaW5kZXggZjU0M2Nj
NjIwYmNjNGNjYzBlNzA2ZDBkY2I4ZTY4YWY0MjEwYTI0ZS4uM2IyZWU1ZmE4ZWY2NmRkNmE3ZDAy
YzU5NzY5YTQxMzAzZTZhMWM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL3RhYmxlL2dyb3cuYW55LmpzCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJs
ZS9ncm93LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1qc3NoZWxsCisv
LyBNRVRBOiBnbG9iYWw9d2luZG93LGRlZGljYXRlZHdvcmtlcixqc3NoZWxsCiAvLyBNRVRBOiBz
Y3JpcHQ9YXNzZXJ0aW9ucy5qcwogCiBmdW5jdGlvbiBudWxscyhuKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFi
bGUvbGVuZ3RoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCmluZGV4IGY0ZTExNDg0Nzk3Mjkw
NjFhN2Y0MGU2ODMxMWFkZDQzZTBjNTFiMWMuLmE5ZWYwOTVkZWQ0NDU4MWQ0NGRlY2U1OTU3NzU3
N2ZhNmZlMjU0MWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5ndGguYW55LmpzCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS9sZW5n
dGguYW55LmpzCkBAIC0xLDQgKzEsNCBAQAotLy8gTUVUQTogZ2xvYmFsPWpzc2hlbGwKKy8vIE1F
VEE6IGdsb2JhbD13aW5kb3csZGVkaWNhdGVkd29ya2VyLGpzc2hlbGwKIAogdGVzdCgoKSA9PiB7
CiAgIGNvbnN0IHRoaXNWYWx1ZXMgPSBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55Lmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBp
L3RhYmxlL3RvU3RyaW5nLmFueS5qcwppbmRleCA3MDhjMTdiM2FjYWRmZGUyYzlhYmRhMzAwYzJk
NTdlNjFmNWE3MGNlLi44YTA5ZjI4MzJjMWQ2NDU5NDE4MmZhZTQ2NTFiYzliMDdhNTA4ZDRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dh
c20vanNhcGkvdGFibGUvdG9TdHJpbmcuYW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS90YWJsZS90b1N0cmluZy5hbnkuanMK
QEAgLTEsNCArMSw0IEBACi0vLyBNRVRBOiBnbG9iYWw9anNzaGVsbAorLy8gTUVUQTogZ2xvYmFs
PXdpbmRvdyxkZWRpY2F0ZWR3b3JrZXIsanNzaGVsbAogCiB0ZXN0KCgpID0+IHsKICAgY29uc3Qg
YXJndW1lbnQgPSB7ICJlbGVtZW50IjogImFueWZ1bmMiLCAiaW5pdGlhbCI6IDAgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy9iYXNpYy1hdXRoLmFueS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy9iYXNpYy1hdXRoLmFueS5qcwppbmRleCA0NWU0ZGFkYjNi
OWNlNWZiZWFkODhkYzg1ZDY4ODMyYjZkZDA0YjVhLi40NDdiY2RlZmJlNWZiNzg2ZGUzMWZhZmZj
OWM0NDYyOTQ4ZjRlMmJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvYmFzaWMtYXV0aC5hbnkuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2Jhc2ljLWF1
dGguYW55LmpzCkBAIC0xLDUgKzEsNSBAQAorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyx3b3JrZXIK
IC8vIE1FVEE6IHNjcmlwdD13ZWJzb2NrZXQuc3ViLmpzCi0vLyBNRVRBOiBnbG9iYWw9c2hhcmVk
d29ya2VyLHNlcnZpY2V3b3JrZXIKIAogYXN5bmNfdGVzdCh0ID0+IHsKICAgY29uc3QgaXNTZWN1
cmUgPSBuZXcgVVJMKGxvY2F0aW9uLmhyZWYpLnNjaGVtZSA9PT0gJ2h0dHBzJzsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy9idWZmZXJlZEFtb3VudC11bmNoYW5nZWQtYnktc3luYy14aHIuYW55LmpzIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1v
dW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKaW5kZXggODM5N2ZhZjNjNTc1NzNiNmVk
NzBjN2FiY2I3ZGI4NzBlMmY1ZmYxYy4uNTNjYTY3ZTI2OWJmZTZhZGFiMTZiYjJkNjdjNWI2Y2Q0
Zjc5OTg3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzb2NrZXRzL2J1ZmZlcmVkQW1vdW50LXVuY2hhbmdlZC1ieS1zeW5jLXhoci5hbnkuanMKQEAg
LTEsNSArMSw1IEBACiAvLyBNRVRBOiBzY3JpcHQ9d2Vic29ja2V0LnN1Yi5qcwotLy8gTUVUQTog
Z2xvYmFsPXNoYXJlZHdvcmtlcgorLy8gTUVUQTogZ2xvYmFsPXdpbmRvdyxkZWRpY2F0ZWR3b3Jr
ZXIsc2hhcmVkd29ya2VyCiAKIGFzeW5jX3Rlc3QodCA9PiB7CiAgIGNvbnN0IHVybCA9ICd3c3M6
Ly8nICsgX19TRVJWRVJfX05BTUUgKyAnOicgKyBfX1NFQ1VSRV9fUE9SVCArICcvZWNobyc7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvb3BlbmluZy1oYW5kc2hha2UvMDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhhbmRz
aGFrZS8wMDUtZXhwZWN0ZWQudHh0CmluZGV4IDM1ZGNjMjczODU3N2ZkMDAxYTE3M2ViOWYxMzg4
MjA4ZDAyN2ZkZjkuLjZlNzM1OTlhOGQwZDlhNGIwMTAzNjg1YTA0NjVmOGM5Y2FiYmZlOWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
c29ja2V0cy9vcGVuaW5nLWhhbmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy9vcGVuaW5nLWhh
bmRzaGFrZS8wMDUtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAogCi1QQVNTIFdlYlNvY2tl
dHM6IHByb3BlciBmaXJzdCBsaW5lIAorSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2Ug
PSBudWxsCisKK1RJTUVPVVQgV2ViU29ja2V0czogcHJvcGVyIGZpcnN0IGxpbmUgVGVzdCB0aW1l
ZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvaWRsaGFybmVzcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwppbmRleCBkNDVlNTJlMjM0
MWI4Y2U0M2QzZTdlMTQ0YWZlNTE4ZWJhNzRjMTczLi5kODJhODI2MzU3NjZiMTlhYzlhOTU2ZDQw
MzI3YjRiMmI5YTI1MDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9pZGxoYXJuZXNzLmFueS5qcwpAQCAt
MSw0ICsxLDQgQEAKLS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2Jh
bD13aW5kb3csZGVkaWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogc2NyaXB0PS9y
ZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzCiAvLyBNRVRBOiBzY3JpcHQ9L3Jlc291cmNlcy9pZGxo
YXJuZXNzLmpzCiAvLyBNRVRBOiB0aW1lb3V0PWxvbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5bmMtbm8tdGltZW91dC5hbnku
anMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9zeW5j
LW5vLXRpbWVvdXQuYW55LmpzCmluZGV4IGQyM2ZiYjhjNjZkZWY0N2UzMWFkMDFhYTdhMzExMDY0
YmE4ZmRkYmQuLmFjNzNlMGJmMDVkMjMwODUzZDM0NjRlYjNjNzUzYTNlNDY5NGNkMjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL3N5
bmMtbm8tdGltZW91dC5hbnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy94aHIvc3luYy1uby10aW1lb3V0LmFueS5qcwpAQCAtMSw0ICsxLDQgQEAK
LS8vIE1FVEE6IGdsb2JhbD1zaGFyZWR3b3JrZXIKKy8vIE1FVEE6IGdsb2JhbD13aW5kb3csZGVk
aWNhdGVkd29ya2VyLHNoYXJlZHdvcmtlcgogLy8gTUVUQTogdGltZW91dD1sb25nCiAKIC8vIFRo
aXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vY3JidWcuY29tLzg0NDI2OCwgd2hl
biBhIHRpbWVvdXQgb2YgMTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5v
bmUtYmxvY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2ZyYW1l
LWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtbmVzdGVkLWNyb3NzLWluLXNhbWUtbm9uZS1ibG9j
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMwMzQxZDAzOTM5MzY1NmNlNzcwMGQ4N2RkYTNi
ODVhNGZhMTk5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1zYW1lLW5v
bmUtYmxvY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQmxvY2tlZCBhY2Nlc3MgdG8g
ZXh0ZXJuYWwgVVJMIGh0dHA6Ly93d3cxLmxvY2FsaG9zdDo4ODAxL2NvbnRlbnQtc2VjdXJpdHkt
cG9saWN5L2ZyYW1lLWFuY2VzdG9ycy9zdXBwb3J0L2ZyYW1lLWFuY2VzdG9ycy5zdWIuaHRtbD9w
b2xpY3k9JiN4Mjc7bm9uZSYlMjN4Mjc7CisKKworRkFJTCBBICdmcmFtZS1hbmNlc3RvcnMnIENT
UCBkaXJlY3RpdmUgd2l0aCBhIHZhbHVlICdub25lJyBzaG91bGQgYmxvY2sgcmVuZGVyaW5nIGlu
IG5lc3RlZCBmcmFtZXMuIGFzc2VydF91bnJlYWNoZWQ6IElubmVyIElGcmFtZSBtc2c6IFRoZSBJ
RnJhbWUgc2hvdWxkIGhhdmUgYmVlbiBibG9ja2VkIChvciBjcm9zcy1vcmlnaW4pLiBJdCB3YXNu
J3QuIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jv
c3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5
LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW5lc3RlZC1jcm9zcy1pbi1z
YW1lLXNlbGYtYmxvY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViN2Q1OTIwYzUxNTg3ZWIz
NzdlYzE2MTZmNTI3MTE2NmM4ZTFjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1z
ZWN1cml0eS1wb2xpY3kvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1uZXN0ZWQtY3Jv
c3MtaW4tc2FtZS1zZWxmLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK0Jsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwOi8vd3d3MS5sb2NhbGhvc3Q6ODgwMS9jb250
ZW50LXNlY3VyaXR5LXBvbGljeS9mcmFtZS1hbmNlc3RvcnMvc3VwcG9ydC9mcmFtZS1hbmNlc3Rv
cnMuc3ViLmh0bWw/cG9saWN5PSYjeDI3O3NlbGYmJTIzeDI3OworCisKK0ZBSUwgQSAnZnJhbWUt
YW5jZXN0b3JzJyBDU1AgZGlyZWN0aXZlIHdpdGggYSB2YWx1ZSAnc2FtZScgc2hvdWxkIGJsb2Nr
IHJlbmRlciBpbiBzYW1lLW9yaWdpbiBuZXN0ZWQgZnJhbWVzLiBhc3NlcnRfdW5yZWFjaGVkOiBJ
bm5lciBJRnJhbWUgbXNnOiBUaGUgSUZyYW1lIHNob3VsZCBoYXZlIGJlZW4gYmxvY2tlZCAob3Ig
Y3Jvc3Mtb3JpZ2luKS4gSXQgd2Fzbid0LiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>